From 0abdf2aa36d94abfaba030ba9c59736c441441d0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 8 Aug 2011 09:21:20 +0000 Subject: [PATCH 001/256] Initial checkin of experimental bignum type. [SVN r73607] --- .gitattributes | 96 ++ include/boost/math/big_number.hpp | 1165 +++++++++++++++++ include/boost/math/big_number/gmp.hpp | 691 ++++++++++ .../math/concepts/big_number_architypes.hpp | 309 +++++ math/test/big_number_concept_check.cpp | 38 + math/test/test_arithmetic.cpp | 443 +++++++ 6 files changed, 2742 insertions(+) create mode 100644 .gitattributes create mode 100644 include/boost/math/big_number.hpp create mode 100644 include/boost/math/big_number/gmp.hpp create mode 100644 include/boost/math/concepts/big_number_architypes.hpp create mode 100644 math/test/big_number_concept_check.cpp create mode 100644 math/test/test_arithmetic.cpp diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..3e84d7c7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,96 @@ +* text=auto !eol svneol=native#text/plain +*.gitattributes text svneol=native#text/plain + +# Scriptish formats +*.bat text svneol=native#text/plain +*.bsh text svneol=native#text/x-beanshell +*.cgi text svneol=native#text/plain +*.cmd text svneol=native#text/plain +*.js text svneol=native#text/javascript +*.php text svneol=native#text/x-php +*.pl text svneol=native#text/x-perl +*.pm text svneol=native#text/x-perl +*.py text svneol=native#text/x-python +*.sh eol=lf svneol=LF#text/x-sh +configure eol=lf svneol=LF#text/x-sh + +# Image formats +*.bmp binary svneol=unset#image/bmp +*.gif binary svneol=unset#image/gif +*.ico binary svneol=unset#image/ico +*.jpeg binary svneol=unset#image/jpeg +*.jpg binary svneol=unset#image/jpeg +*.png binary svneol=unset#image/png +*.tif binary svneol=unset#image/tiff +*.tiff binary svneol=unset#image/tiff +*.svg text svneol=native#image/svg%2Bxml + +# Data formats +*.pdf binary svneol=unset#application/pdf +*.avi binary svneol=unset#video/avi +*.doc binary svneol=unset#application/msword +*.dsp text svneol=crlf#text/plain +*.dsw text svneol=crlf#text/plain +*.eps binary svneol=unset#application/postscript +*.gz binary svneol=unset#application/gzip +*.mov binary svneol=unset#video/quicktime +*.mp3 binary svneol=unset#audio/mpeg +*.ppt binary svneol=unset#application/vnd.ms-powerpoint +*.ps binary svneol=unset#application/postscript +*.psd binary svneol=unset#application/photoshop +*.rdf binary svneol=unset#text/rdf +*.rss text svneol=unset#text/xml +*.rtf binary svneol=unset#text/rtf +*.sln text svneol=native#text/plain +*.swf binary svneol=unset#application/x-shockwave-flash +*.tgz binary svneol=unset#application/gzip +*.vcproj text svneol=native#text/xml +*.vcxproj text svneol=native#text/xml +*.vsprops text svneol=native#text/xml +*.wav binary svneol=unset#audio/wav +*.xls binary svneol=unset#application/vnd.ms-excel +*.zip binary svneol=unset#application/zip + +# Text formats +.htaccess text svneol=native#text/plain +*.bbk text svneol=native#text/xml +*.cmake text svneol=native#text/plain +*.css text svneol=native#text/css +*.dtd text svneol=native#text/xml +*.htm text svneol=native#text/html +*.html text svneol=native#text/html +*.ini text svneol=native#text/plain +*.log text svneol=native#text/plain +*.mak text svneol=native#text/plain +*.qbk text svneol=native#text/plain +*.rst text svneol=native#text/plain +*.sql text svneol=native#text/x-sql +*.txt text svneol=native#text/plain +*.xhtml text svneol=native#text/xhtml%2Bxml +*.xml text svneol=native#text/xml +*.xsd text svneol=native#text/xml +*.xsl text svneol=native#text/xml +*.xslt text svneol=native#text/xml +*.xul text svneol=native#text/xul +*.yml text svneol=native#text/plain +boost-no-inspect text svneol=native#text/plain +CHANGES text svneol=native#text/plain +COPYING text svneol=native#text/plain +INSTALL text svneol=native#text/plain +Jamfile text svneol=native#text/plain +Jamroot text svneol=native#text/plain +Jamfile.v2 text svneol=native#text/plain +Jamrules text svneol=native#text/plain +Makefile* text svneol=native#text/plain +README text svneol=native#text/plain +TODO text svneol=native#text/plain + +# Code formats +*.c text svneol=native#text/plain +*.cpp text svneol=native#text/plain +*.h text svneol=native#text/plain +*.hpp text svneol=native#text/plain +*.ipp text svneol=native#text/plain +*.tpp text svneol=native#text/plain +*.jam text svneol=native#text/plain +*.java text svneol=native#text/plain diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp new file mode 100644 index 00000000..632c7b72 --- /dev/null +++ b/include/boost/math/big_number.hpp @@ -0,0 +1,1165 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_EXTENDED_REAL_HPP +#define BOOST_MATH_EXTENDED_REAL_HPP + +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace math{ + +template +class big_number; + +namespace detail{ + +// Forward-declare an expression wrapper +template +struct big_number_exp; +// +// Declare our grammars: +// +struct big_number_grammar + : proto::or_< + proto::terminal< proto::_ > + , proto::plus< big_number_grammar, big_number_grammar > + , proto::multiplies< big_number_grammar, big_number_grammar > + , proto::minus< big_number_grammar, big_number_grammar > + , proto::divides< big_number_grammar, big_number_grammar > + , proto::unary_plus< big_number_grammar > + , proto::negate< big_number_grammar > + , proto::modulus + > +{}; + +// Define a calculator domain. Expression within +// the calculator domain will be wrapped in the +// calculator<> expression wrapper. +struct big_number_domain + : proto::domain< proto::generator, big_number_grammar> +{}; + +template +struct big_number_exp + : proto::extends, big_number_domain> +{ + typedef + proto::extends, big_number_domain> base_type; + + big_number_exp(Expr const &expr = Expr()) + : base_type(expr) + {} + template + big_number_exp(const Other& o) + : base_type(o) + {} +}; + +struct CalcDepth + : proto::or_< + proto::when< proto::terminal, + mpl::int_<0>() + > + , proto::when< proto::unary_expr, + CalcDepth(proto::_child) + > + , proto::when< proto::binary_expr, + mpl::plus, mpl::int_<1> >() + > + > +{}; + +template +struct has_enough_bits +{ + template + struct type : public mpl::bool_::digits >= b>{}; +}; + +template +struct canonical_imp +{ + typedef Val type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::signed_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::unsigned_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::real_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef const char* type; +}; + +template +struct canonical +{ + typedef typename mpl::if_< + is_signed, + mpl::int_<0>, + typename mpl::if_< + is_unsigned, + mpl::int_<1>, + typename mpl::if_< + is_floating_point, + mpl::int_<2>, + typename mpl::if_< + mpl::or_< + is_convertible, + is_same + >, + mpl::int_<3>, + mpl::int_<4> + >::type + >::type + >::type + >::type tag_type; + + typedef typename canonical_imp::type type; +}; + +} // namespace detail + +// +// Traits class, lets us know whether a backend is an integer type, otherwise assumed to be a real number type: +// +template +struct is_extended_integer : public mpl::false_ {}; +template +struct is_extended_integer > : public is_extended_integer{}; + +template +class big_number : public detail::big_number_exp*>::type > +{ + typedef detail::big_number_exp*>::type > base_type; + typedef big_number self_type; +public: + big_number() + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + } + big_number(const big_number& e) : m_backend(e.m_backend) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + } + template + big_number(V v, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + m_backend = canonical_value(v); + } + /* + big_number(unsigned digits10, typename enable_if_c::type* dummy = 0) + : base_type(digits10) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + }*/ + big_number(const big_number& e, unsigned digits10) : m_backend(e.m_backend, digits10) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + } + template + big_number(V v, unsigned digits10, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + : base_type(digits10) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + m_backend = canonical_value(v); + } + + template + big_number& operator=(const detail::big_number_exp& e) + { + do_assign(e, typename proto::tag_of::type()); + return *this; + } + + big_number& operator=(const big_number& e) + { + m_backend = e.m_backend; + return *this; + } + + template + typename enable_if, is_same, is_convertible >, big_number& >::type + operator=(const V& v) + { + m_backend = canonical_value(v); + return *this; + } + + template + big_number(const detail::big_number_exp& e) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + do_assign(e, typename proto::tag_of::type()); + } + + template + big_number& operator+=(const detail::big_number_exp& e) + { + // Create a copy if e contains this, but not if we're just doing a + // x *= x + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_add(temp, typename proto::tag_of::type()); + } + else + { + do_add(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator+=(const V& v) + { + do_add_value(canonical_value(v), mpl::false_()); + return *this; + } + + template + big_number& operator-=(const detail::big_number_exp& e) + { + // Create a copy if e contains this, but not if we're just doing a + if(contains_self(e)) + { + self_type temp(e); + do_subtract(temp, typename proto::tag_of::type()); + } + else + { + do_subtract(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator-=(const V& v) + { + do_subtract_value(canonical_value(v), mpl::false_()); + return *this; + } + + template + big_number& operator*=(const detail::big_number_exp& e) + { + // Create a temporary if the RHS references *this, but not + // if we're just doing an x += x; + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_multiplies(temp, typename proto::tag_of::type()); + } + else + { + do_multiplies(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator*=(const V& v) + { + do_multiplies_value(canonical_value(v), mpl::false_()); + return *this; + } + + template + big_number& operator%=(const detail::big_number_exp& e) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + // Create a temporary if the RHS references *this: + if(contains_self(e)) + { + self_type temp(e); + do_modulus(temp, typename proto::tag_of::type()); + } + else + { + do_modulus(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator%=(const V& v) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + do_modulus_value(canonical_value(v), mpl::false_()); + return *this; + } + + template + big_number& operator/=(const detail::big_number_exp& e) + { + // Create a temporary if the RHS references *this: + if(contains_self(e)) + { + self_type temp(e); + do_divide(temp, typename proto::tag_of::type()); + } + else + { + do_divide(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator/=(const V& v) + { + do_divide_value(canonical_value(v), mpl::false_()); + return *this; + } + + // + // String conversion functions: + // + std::string str()const + { + return m_backend.str(); + } + // + // Default precision: + // + static unsigned default_precision() + { + return Backend::default_precision(); + } + static void default_precision(unsigned digits10) + { + Backend::default_precision(digits10); + } + unsigned precision()const + { + return m_backend.precision(); + } + void precision(unsigned digits10) + { + m_backend.precision(digits10); + } + // + // Comparison: + // + int compare(const big_number& o)const + { + return m_backend.compare(o.m_backend); + } + template + typename enable_if, int>::type compare(const V& o)const + { + return m_backend.compare(canonical_value(o)); + } +private: + template + void do_assign(const Exp& e, const proto::tag::unary_plus&) + { + typedef typename proto::result_of::left::type left_type; + do_assign(proto::left(e), typename proto::tag_of::type()); + } + + template + void do_assign(const Exp& e, const proto::tag::negate&) + { + typedef typename proto::result_of::left::type left_type; + do_assign(proto::left(e), typename proto::tag_of::type()); + m_backend.negate(); + } + + template + void do_assign(const Exp& e, const proto::tag::plus&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just add the right: + do_add(proto::right(e), typename proto::tag_of::type()); + } + else if(br && is_self(proto::right(e))) + { + // Ignore the right node, it's *this, just add the left: + do_add(proto::left(e), typename proto::tag_of::type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else if(left_depth >= right_depth) + { + do_assign(proto::left(e), typename proto::tag_of::type()); + do_add(proto::right(e), typename proto::tag_of::type()); + } + else + { + do_assign(proto::right(e), typename proto::tag_of::type()); + do_add(proto::left(e), typename proto::tag_of::type()); + } + } + template + void do_assign(const Exp& e, const proto::tag::minus&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just subtract the right: + do_subtract(proto::right(e), typename proto::tag_of::type()); + } + else if(br && is_self(proto::right(e))) + { + // Ignore the right node, it's *this, just subtract the left and negate the result: + do_subtract(proto::left(e), typename proto::tag_of::type()); + m_backend.negate(); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else if(left_depth >= right_depth) + { + do_assign(proto::left(e), typename proto::tag_of::type()); + do_subtract(proto::right(e), typename proto::tag_of::type()); + } + else + { + do_assign(proto::right(e), typename proto::tag_of::type()); + do_subtract(proto::left(e), typename proto::tag_of::type()); + m_backend.negate(); + } + } + template + void do_assign(const Exp& e, const proto::tag::multiplies&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just add the right: + do_multiplies(proto::right(e), typename proto::tag_of::type()); + } + else if(br && is_self(proto::right(e))) + { + // Ignore the right node, it's *this, just add the left: + do_multiplies(proto::left(e), typename proto::tag_of::type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else if(left_depth >= right_depth) + { + do_assign(proto::left(e), typename proto::tag_of::type()); + do_multiplies(proto::right(e), typename proto::tag_of::type()); + } + else + { + do_assign(proto::right(e), typename proto::tag_of::type()); + do_multiplies(proto::left(e), typename proto::tag_of::type()); + } + } + template + void do_assign(const Exp& e, const proto::tag::divides&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just add the right: + do_divide(proto::right(e), typename proto::tag_of::type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else + { + do_assign(proto::left(e), typename proto::tag_of::type()); + do_divide(proto::right(e), typename proto::tag_of::type()); + } + } + template + void do_assign(const Exp& e, const proto::tag::modulus&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just add the right: + do_modulus(proto::right(e), typename proto::tag_of::type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else + { + do_assign(proto::left(e), typename proto::tag_of::type()); + do_modulus(proto::right(e), typename proto::tag_of::type()); + } + } + template + void do_assign(const Exp& e, const proto::tag::terminal&) + { + if(!is_self(e)) + { + m_backend = canonical_value(proto::value(e)); + } + } + + template + void do_add(const Exp& e, const proto::tag::terminal&) + { + typedef typename proto::result_of::value::type t1; + typedef typename remove_reference::type t2; + typedef typename remove_cv::type t3; + typedef typename detail::canonical::type t4; + typedef typename is_convertible::type tag; + do_add_value(canonical_value(proto::value(e)), tag()); + } + + template + void do_add_value(const V& v, const mpl::false_&) + { + m_backend += v; + } + template + void do_add_value(const V& v, const mpl::true_&) + { + self_type temp(v); + m_backend += temp.m_backend; + } + + template + void do_add(const Exp& e, const proto::tag::unary_plus&) + { + typedef typename proto::result_of::left::type left_type; + do_add(proto::left(e), typename proto::tag_of::type()); + } + + template + void do_add(const Exp& e, const proto::tag::negate&) + { + typedef typename proto::result_of::left::type left_type; + do_subtract(proto::left(e), typename proto::tag_of::type()); + } + + template + void do_add(const Exp& e, const proto::tag::plus&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_add(proto::left(e), typename proto::tag_of::type()); + do_add(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_add(const Exp& e, const proto::tag::minus&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_add(proto::left(e), typename proto::tag_of::type()); + do_subtract(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_add(const Exp& e, const unknown&) + { + self_type temp(e); + do_add(temp, proto::tag::terminal()); + } + + template + void do_subtract(const Exp& e, const proto::tag::terminal&) + { + typedef typename proto::result_of::value::type t1; + typedef typename remove_reference::type t2; + typedef typename remove_cv::type t3; + typedef typename detail::canonical::type t4; + typedef typename is_convertible::type tag; + do_subtract_value(canonical_value(proto::value(e)), tag()); + } + + template + void do_subtract_value(const V& v, const mpl::false_&) + { + m_backend -= v; + } + template + void do_subtract_value(const V& v, const mpl::true_&) + { + self_type temp(v); + m_backend -= temp.m_backend; + } + + template + void do_subtract(const Exp& e, const proto::tag::unary_plus&) + { + typedef typename proto::result_of::left::type left_type; + do_subtract(proto::left(e), typename proto::tag_of::type()); + } + + template + void do_subtract(const Exp& e, const proto::tag::negate&) + { + typedef typename proto::result_of::left::type left_type; + do_add(proto::left(e), typename proto::tag_of::type()); + } + + template + void do_subtract(const Exp& e, const proto::tag::plus&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_subtract(proto::left(e), typename proto::tag_of::type()); + do_subtract(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_subtract(const Exp& e, const proto::tag::minus&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_subtract(proto::left(e), typename proto::tag_of::type()); + do_add(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_subtract(const Exp& e, const unknown&) + { + self_type temp(e); + do_subtract(temp, proto::tag::terminal()); + } + + template + void do_multiplies(const Exp& e, const proto::tag::terminal&) + { + typedef typename proto::result_of::value::type t1; + typedef typename remove_reference::type t2; + typedef typename remove_cv::type t3; + typedef typename detail::canonical::type t4; + typedef typename is_convertible::type tag; + do_multiplies_value(canonical_value(proto::value(e)), tag()); + } + + template + void do_multiplies_value(const Val& v, const mpl::false_&) + { + m_backend *= v; + } + + template + void do_multiplies_value(const Val& e, const mpl::true_&) + { + self_type temp(e); + m_backend *= temp.m_backend; + } + + template + void do_multiplies(const Exp& e, const proto::tag::unary_plus&) + { + typedef typename proto::result_of::left::type left_type; + do_multiplies(proto::left(e), typename proto::tag_of::type()); + } + + template + void do_multiplies(const Exp& e, const proto::tag::negate&) + { + typedef typename proto::result_of::left::type left_type; + do_multiplies(proto::left(e), typename proto::tag_of::type()); + m_backend.negate(); + } + + template + void do_multiplies(const Exp& e, const proto::tag::multiplies&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_multiplies(proto::left(e), typename proto::tag_of::type()); + do_multiplies(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_multiplies(const Exp& e, const proto::tag::divides&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_multiplies(proto::left(e), typename proto::tag_of::type()); + do_divide(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_multiplies(const Exp& e, const unknown&) + { + self_type temp(e); + m_backend *= temp.m_backend; + } + + template + void do_divide(const Exp& e, const proto::tag::terminal&) + { + typedef typename proto::result_of::value::type t1; + typedef typename remove_reference::type t2; + typedef typename remove_cv::type t3; + typedef typename detail::canonical::type t4; + typedef typename is_convertible::type tag; + do_divide_value(canonical_value(proto::value(e)), tag()); + } + + template + void do_divide_value(const Val& v, const mpl::false_&) + { + m_backend /= v; + } + + template + void do_divide_value(const Val& e, const mpl::true_&) + { + self_type temp(e); + m_backend /= temp.m_backend; + } + + template + void do_divide(const Exp& e, const proto::tag::unary_plus&) + { + typedef typename proto::result_of::left::type left_type; + do_divide(proto::left(e), typename proto::tag_of::type()); + } + + template + void do_divide(const Exp& e, const proto::tag::negate&) + { + typedef typename proto::result_of::left::type left_type; + do_divide(proto::left(e), typename proto::tag_of::type()); + m_backend.negate(); + } + + template + void do_divide(const Exp& e, const proto::tag::multiplies&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_divide(proto::left(e), typename proto::tag_of::type()); + do_divide(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_divide(const Exp& e, const proto::tag::divides&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_divide(proto::left(e), typename proto::tag_of::type()); + do_multiplies(proto::right(e), typename proto::tag_of::type()); + } + + template + void do_divide(const Exp& e, const unknown&) + { + self_type temp(e); + m_backend /= temp.m_backend; + } + + template + void do_modulus(const Exp& e, const proto::tag::terminal&) + { + typedef typename proto::result_of::value::type t1; + typedef typename remove_reference::type t2; + typedef typename remove_cv::type t3; + typedef typename detail::canonical::type t4; + typedef typename is_convertible::type tag; + do_modulus_value(canonical_value(proto::value(e)), tag()); + } + + template + void do_modulus_value(const Val& v, const mpl::false_&) + { + m_backend %= v; + } + + template + void do_modulus_value(const Val& e, const mpl::true_&) + { + self_type temp(e); + m_backend %= temp.m_backend; + } + + template + void do_modulus(const Exp& e, const Unknown&) + { + self_type temp(e); + do_modulus_value(canonical_value(proto::value(temp)), mpl::false_()); + } + + // Tests if the expression contains a reference to *this: + template + bool contains_self(const Exp& e)const + { + return contains_self(e, mpl::int_::value>()); + } + template + bool contains_self(const Exp& e, mpl::int_<0> const&)const + { + return is_really_self(proto::value(e)); + } + template + bool contains_self(const Exp& e, mpl::int_<1> const&)const + { + typedef typename proto::result_of::child_c::type child_type; + return contains_self(proto::child_c<0>(e), mpl::int_::value>()); + } + template + bool contains_self(const Exp& e, mpl::int_<2> const&)const + { + typedef typename proto::result_of::child_c::type child0_type; + typedef typename proto::result_of::child_c::type child1_type; + return contains_self(proto::child_c<0>(e), mpl::int_::value>()) || contains_self(proto::child_c<1>(e), mpl::int_::value>()); + } + + // Test if the expression is a reference to *this: + template + bool is_self(const Exp& e)const + { + return is_self(e, mpl::int_::value>()); + } + template + bool is_self(const Exp& e, mpl::int_<0> const&)const + { + return is_really_self(proto::value(e)); + } + template + bool is_self(const Exp& e, mpl::int_ const&)const + { + return false; + } + + template + bool is_really_self(const Val&)const { return false; } + bool is_really_self(const self_type* v)const + { + return v == this; + } + bool is_really_self(self_type* v)const + { + return v == this; + } + + static const Backend& canonical_value(const self_type& v){ return v.m_backend; } + static const Backend& canonical_value(const self_type* v){ return v->m_backend; } + static const Backend& canonical_value(self_type* v){ return v->m_backend; } + template + static typename detail::canonical::type canonical_value(const V& v){ return v; } + static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } + + Backend m_backend; +}; + +namespace detail +{ + +template +struct combine_expression_type +{ + typedef void type; +}; + +template +struct combine_expression_type, boost::math::big_number > +{ + typedef boost::math::big_number type; +}; + +template +struct combine_expression_type, Exp> +{ + typedef boost::math::big_number type; +}; + +template +struct combine_expression_type > +{ + typedef boost::math::big_number type; +}; + +template +struct is_big_number : public mpl::false_{}; +template +struct is_big_number > : public mpl::true_{}; +template +struct is_big_number_exp : public mpl::false_{}; +template +struct is_big_number_exp > : public mpl::true_{}; + + +template +struct expression_type_imp; + +template +struct expression_type_imp +{ + typedef typename remove_pointer::type>::type type; +}; + +template +struct expression_type_imp +{ + typedef typename proto::result_of::left::type nested_type; + typedef typename expression_type_imp::value>::type type; +}; + +template +struct expression_type_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename expression_type_imp::value>::type left_result; + typedef typename expression_type_imp::value>::type right_result; + typedef typename combine_expression_type::type type; +}; + +template +struct expression_type +{ + typedef typename expression_type_imp::value>::type type; +}; + +template +inline int big_number_compare(const big_number& a, const big_number& b) +{ + return a.compare(b); +} + +template +inline int big_number_compare(const big_number& a, const big_number_exp& b) +{ + return a.compare(big_number(b)); +} + +template +inline int big_number_compare(const big_number_exp& a, const big_number& b) +{ + return -b.compare(big_number(a)); +} + +template +inline int big_number_compare(const big_number& a, const Val b) +{ + return a.compare(b); +} + +template +inline int big_number_compare(const Val a, const big_number& b) +{ + return -b.compare(a); +} + +template +inline int big_number_compare(const big_number_exp& a, const big_number_exp& b) +{ + typedef typename expression_type::type real1; + typedef typename expression_type::type real2; + return real1(a).compare(real2(b)); +} + +template +inline typename enable_if, int>::type big_number_compare(const big_number_exp& a, const Val b) +{ + typedef typename expression_type::type real; + real t(a); + return t.compare(b); +} + +template +inline typename enable_if, int>::type big_number_compare(const Val a, const big_number_exp& b) +{ + typedef typename expression_type::type real; + return -real(b).compare(a); +} + +template +struct is_valid_comparison_imp +{ + typedef typename mpl::or_< + is_big_number, + is_big_number_exp + >::type is1; + typedef typename mpl::or_< + is_big_number, + is_big_number_exp + >::type is2; + typedef typename mpl::or_< + mpl::and_< + is1, + mpl::or_< + is2, + is_arithmetic + > + >, + mpl::and_< + is2, + mpl::or_< + is1, + is_arithmetic + > + > + >::type type; +}; + +template +struct is_valid_comparison : public boost::math::detail::is_valid_comparison_imp::type {}; + +} + + +template +inline typename boost::enable_if, bool>::type + operator == (const Exp1& a, const Exp2& b) +{ + return 0 == detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator != (const Exp1& a, const Exp2& b) +{ + return 0 != detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator <= (const Exp1& a, const Exp2& b) +{ + return 0 >= detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator < (const Exp1& a, const Exp2& b) +{ + return 0 > detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator >= (const Exp1& a, const Exp2& b) +{ + return 0 <= detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator > (const Exp1& a, const Exp2& b) +{ + return 0 < detail::big_number_compare(a, b); +} + +template +std::ostream& operator << (std::ostream& os, const big_number& r) +{ + return os << r.str(); +} + +template +std::istream& operator >> (std::istream& is, big_number& r) +{ + std::string s; + is >> s; + r = s; + return is; +} + +}} // namespaces + +#endif diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp new file mode 100644 index 00000000..a82674e5 --- /dev/null +++ b/include/boost/math/big_number/gmp.hpp @@ -0,0 +1,691 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_ER_GMP_BACKEND_HPP +#define BOOST_MATH_ER_GMP_BACKEND_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace math{ + +template +struct gmp_real; + +namespace detail{ + +template +struct gmp_real_imp +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + gmp_real_imp(){} + + gmp_real_imp(const gmp_real_imp& o) + { + mpf_init_set(m_data, o.m_data); + } + gmp_real_imp& operator = (const gmp_real_imp& o) + { + mpf_set(m_data, o.m_data); + return *this; + } + gmp_real_imp& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpf_t t; + mpf_init2(m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(t, ((digits10 + 1) * 1000L) / 301L); + while(i) + { + mpf_set_ui(t, static_cast(i & mask)); + if(shift) + mpf_mul_2exp(t, t, shift); + mpf_add(m_data, m_data, t); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpf_clear(t); + return *this; + } + gmp_real_imp& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpf_neg(m_data, m_data); + return *this; + } + gmp_real_imp& operator = (unsigned long i) + { + mpf_set_ui(m_data, i); + return *this; + } + gmp_real_imp& operator = (long i) + { + mpf_set_si(m_data, i); + return *this; + } + gmp_real_imp& operator = (double d) + { + mpf_set_d(m_data, d); + return *this; + } + gmp_real_imp& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + mpf_set_si(m_data, 0); + return *this; + } + + if (a == 1) { + mpf_set_si(m_data, 1); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpf_init_set_ui(m_data, 0u); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpf_mul_2exp(m_data, m_data, shift); + if(term > 0) + mpf_add_ui(m_data, m_data, static_cast(term)); + else + mpf_sub_ui(m_data, m_data, static_cast(-term)); + f -= term; + } + if(e > 0) + mpf_mul_2exp(m_data, m_data, e); + else if(e < 0) + mpf_div_2exp(m_data, m_data, -e); + return *this; + } + gmp_real_imp& operator = (const char* s) + { + mpf_set_str(m_data, s, 10); + return *this; + } + gmp_real_imp& operator += (const gmp_real& o) + { + mpf_add(m_data, m_data, o.m_data); + return *this; + } + template + gmp_real_imp& operator += (V v) + { + gmp_real d; + d = v; + return *this += d; + } + gmp_real_imp& operator -= (const gmp_real& o) + { + mpf_sub(m_data, m_data, o.m_data); + return *this; + } + template + gmp_real_imp& operator -= (V v) + { + gmp_real d; + d = v; + return *this -= d; + } + gmp_real_imp& operator *= (const gmp_real& o) + { + mpf_mul(m_data, m_data, o.m_data); + return *this; + } + template + gmp_real_imp& operator *= (V v) + { + gmp_real d; + d = v; + return *this *= d; + } + gmp_real_imp& operator /= (const gmp_real& o) + { + mpf_div(m_data, m_data, o.m_data); + return *this; + } + template + gmp_real_imp& operator /= (V v) + { + gmp_real d; + d = v; + return *this /= d; + } + gmp_real_imp& operator += (unsigned long i) + { + mpf_add_ui(m_data, m_data, i); + return *this; + } + gmp_real_imp& operator -= (unsigned long i) + { + mpf_sub_ui(m_data, m_data, i); + return *this; + } + gmp_real_imp& operator *= (unsigned long i) + { + mpf_mul_ui(m_data, m_data, i); + return *this; + } + gmp_real_imp& operator /= (unsigned long i) + { + mpf_div_ui(m_data, m_data, i); + return *this; + } + gmp_real_imp& operator += (long i) + { + if(i > 0) + mpf_add_ui(m_data, m_data, i); + else + mpf_sub_ui(m_data, m_data, std::abs(i)); + return *this; + } + gmp_real_imp& operator -= (long i) + { + if(i > 0) + mpf_sub_ui(m_data, m_data, i); + else + mpf_add_ui(m_data, m_data, std::abs(i)); + return *this; + } + gmp_real_imp& operator *= (long i) + { + mpf_mul_ui(m_data, m_data, std::abs(i)); + if(i < 0) + mpf_neg(m_data, m_data); + return *this; + } + gmp_real_imp& operator /= (long i) + { + mpf_div_ui(m_data, m_data, std::abs(i)); + if(i < 0) + mpf_neg(m_data, m_data); + return *this; + } + void swap(gmp_real_imp& o) + { + mpf_swap(m_data, o.m_data); + } + std::string str()const + { + mp_exp_t e; + void *(*alloc_func_ptr) (size_t); + void *(*realloc_func_ptr) (void *, size_t, size_t); + void (*free_func_ptr) (void *, size_t); + const char* ps = mpf_get_str (0, &e, 10, 0, m_data); + std::string s("0."); + if(ps[0] == '-') + { + s.insert(0, ps, 1); + s += ps + 1; + } + else + { + s += ps; + } + s += "e"; + s += boost::lexical_cast(e); + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + return s; + } + ~gmp_real_imp() + { + mpf_clear(m_data); + } + void negate() + { + mpf_neg(m_data, m_data); + } + int compare(const gmp_real& o)const + { + return mpf_cmp(m_data, o.m_data); + } + int compare(long i)const + { + return mpf_cmp_si(m_data, i); + } + int compare(unsigned long i)const + { + return mpf_cmp_ui(m_data, i); + } + template + int compare(V v)const + { + gmp_real d; + d = v; + return compare(d); + } +protected: + mpf_t m_data; +}; + +} // namespace detail + +template +struct gmp_real : public detail::gmp_real_imp +{ + gmp_real() + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + gmp_real(const gmp_real& o) : gmp_real_imp(o) {} + + gmp_real& operator=(const gmp_real& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } + + template + gmp_real& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } +}; + +template <> +struct gmp_real<0> : public detail::gmp_real_imp<0> +{ + gmp_real() + { + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + } + gmp_real(unsigned digits10) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + gmp_real(const gmp_real& o) : gmp_real_imp(o) {} + gmp_real(const gmp_real& o, unsigned digits10) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + *this = o; + } + + gmp_real& operator=(const gmp_real& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } + + template + gmp_real& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } + static unsigned default_precision() + { + return get_default_precision(); + } + static void default_precision(unsigned v) + { + get_default_precision() = v; + } + unsigned precision()const + { + return mpf_get_prec(this->m_data) * 301L / 1000 - 1; + } + void precision(unsigned digits10) + { + mpf_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); + } +private: + static unsigned& get_default_precision() + { + static unsigned val = 50; + return val; + } +}; + +struct gmp_int +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + gmp_int() + { + mpz_init(this->m_data); + } + gmp_int(const gmp_int& o) + { + mpz_init_set(m_data, o.m_data); + } + gmp_int& operator = (const gmp_int& o) + { + mpz_set(m_data, o.m_data); + return *this; + } + gmp_int& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpz_t t; + mpz_init(m_data); + mpz_init(t); + while(i) + { + mpz_set_ui(t, static_cast(i & mask)); + if(shift) + mpz_mul_2exp(t, t, shift); + mpz_add(m_data, m_data, t); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpz_clear(t); + return *this; + } + gmp_int& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpz_neg(m_data, m_data); + return *this; + } + gmp_int& operator = (unsigned long i) + { + mpz_set_ui(m_data, i); + return *this; + } + gmp_int& operator = (long i) + { + mpz_set_si(m_data, i); + return *this; + } + gmp_int& operator = (double d) + { + mpz_set_d(m_data, d); + return *this; + } + gmp_int& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + mpz_set_si(m_data, 0); + return *this; + } + + if (a == 1) { + mpz_set_si(m_data, 1); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpz_init_set_ui(m_data, 0u); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpz_mul_2exp(m_data, m_data, shift); + if(term > 0) + mpz_add_ui(m_data, m_data, static_cast(term)); + else + mpz_sub_ui(m_data, m_data, static_cast(-term)); + f -= term; + } + if(e > 0) + mpz_mul_2exp(m_data, m_data, e); + else if(e < 0) + mpz_div_2exp(m_data, m_data, -e); + return *this; + } + gmp_int& operator = (const char* s) + { + mpz_set_str(m_data, s, 10); + return *this; + } + gmp_int& operator += (const gmp_int& o) + { + mpz_add(m_data, m_data, o.m_data); + return *this; + } + template + gmp_int& operator += (V v) + { + gmp_int d; + d = v; + return *this += d; + } + gmp_int& operator -= (const gmp_int& o) + { + mpz_sub(m_data, m_data, o.m_data); + return *this; + } + template + gmp_int& operator -= (V v) + { + gmp_int d; + d = v; + return *this -= d; + } + gmp_int& operator *= (const gmp_int& o) + { + mpz_mul(m_data, m_data, o.m_data); + return *this; + } + template + gmp_int& operator *= (V v) + { + gmp_int d; + d = v; + return *this *= d; + } + gmp_int& operator /= (const gmp_int& o) + { + mpz_div(m_data, m_data, o.m_data); + return *this; + } + template + gmp_int& operator /= (V v) + { + gmp_int d; + d = v; + return *this /= d; + } + gmp_int& operator %= (const gmp_int& o) + { + bool neg = mpz_sgn(m_data) < 0; + bool neg2 = mpz_sgn(o.m_data) < 0; + mpz_mod(m_data, m_data, o.m_data); + if(neg) + { + if(!neg2) + negate(); + mpz_add(m_data, m_data, o.m_data); + if(!neg2) + negate(); + } + return *this; + } + template + gmp_int& operator %= (V v) + { + gmp_int d; + d = v; + return *this %= d; + } + gmp_int& operator += (unsigned long i) + { + mpz_add_ui(m_data, m_data, i); + return *this; + } + gmp_int& operator -= (unsigned long i) + { + mpz_sub_ui(m_data, m_data, i); + return *this; + } + gmp_int& operator *= (unsigned long i) + { + mpz_mul_ui(m_data, m_data, i); + return *this; + } + gmp_int& operator %= (unsigned long i) + { + bool neg = mpz_sgn(m_data) < 0; + mpz_mod_ui(m_data, m_data, i); + if(neg) + { + negate(); + mpz_add_ui(m_data, m_data, i); + negate(); + } + return *this; + } + gmp_int& operator /= (unsigned long i) + { + mpz_div_ui(m_data, m_data, i); + return *this; + } + gmp_int& operator += (long i) + { + if(i > 0) + mpz_add_ui(m_data, m_data, i); + else + mpz_sub_ui(m_data, m_data, std::abs(i)); + return *this; + } + gmp_int& operator -= (long i) + { + if(i > 0) + mpz_sub_ui(m_data, m_data, i); + else + mpz_add_ui(m_data, m_data, std::abs(i)); + return *this; + } + gmp_int& operator *= (long i) + { + mpz_mul_ui(m_data, m_data, std::abs(i)); + if(i < 0) + mpz_neg(m_data, m_data); + return *this; + } + gmp_int& operator %= (long i) + { + bool neg = mpz_sgn(m_data) < 0; + bool neg2 = i < 0; + mpz_mod_ui(m_data, m_data, std::abs(i)); + if(neg) + { + if(!neg2) + { + negate(); + mpz_add_ui(m_data, m_data, std::abs(i)); + negate(); + } + else + { + mpz_sub_ui(m_data, m_data, std::abs(i)); + } + } + return *this; + } + gmp_int& operator /= (long i) + { + mpz_div_ui(m_data, m_data, std::abs(i)); + if(i < 0) + mpz_neg(m_data, m_data); + return *this; + } + void swap(gmp_int& o) + { + mpz_swap(m_data, o.m_data); + } + std::string str()const + { + void *(*alloc_func_ptr) (size_t); + void *(*realloc_func_ptr) (void *, size_t, size_t); + void (*free_func_ptr) (void *, size_t); + const char* ps = mpz_get_str (0, 10, m_data); + std::string s = ps; + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + return s; + } + ~gmp_int() + { + mpz_clear(m_data); + } + void negate() + { + mpz_neg(m_data, m_data); + } + int compare(const gmp_int& o)const + { + return mpz_cmp(m_data, o.m_data); + } + int compare(long i)const + { + return mpz_cmp_si(m_data, i); + } + int compare(unsigned long i)const + { + return mpz_cmp_ui(m_data, i); + } + template + int compare(V v)const + { + gmp_int d; + d = v; + return compare(d); + } +protected: + mpz_t m_data; +}; + +template<> +struct is_extended_integer : public mpl::true_ {}; + +typedef big_number > mpf_real_50; +typedef big_number > mpf_real_100; +typedef big_number > mpf_real_500; +typedef big_number > mpf_real_1000; +typedef big_number > mpf_real; +typedef big_number mpz_int; + +}} // namespaces + +#endif diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp new file mode 100644 index 00000000..f7c196e1 --- /dev/null +++ b/include/boost/math/concepts/big_number_architypes.hpp @@ -0,0 +1,309 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_CONCEPTS_ER_HPP +#define BOOST_MATH_CONCEPTS_ER_HPP + +#include +#include +#include +#include +#include + +namespace boost{ +namespace math{ +namespace concepts{ + +struct big_number_backend_real_architype +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + big_number_backend_real_architype() + { + std::cout << "Default construct" << std::endl; + } + big_number_backend_real_architype(const big_number_backend_real_architype& o) + { + std::cout << "Copy construct" << std::endl; + m_value = o.m_value; + } + big_number_backend_real_architype& operator = (const big_number_backend_real_architype& o) + { + m_value = o.m_value; + std::cout << "Assignment (" << m_value << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (boost::uintmax_t i) + { + m_value = i; + std::cout << "UInt Assignment (" << i << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (boost::intmax_t i) + { + m_value = i; + std::cout << "Int Assignment (" << i << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (unsigned i) + { + m_value = i; + std::cout << "UInt Assignment (" << i << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (int i) + { + m_value = i; + std::cout << "Int Assignment (" << i << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (double d) + { + m_value = d; + std::cout << "double Assignment (" << d << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (long double d) + { + m_value = d; + std::cout << "long double Assignment (" << d << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (const char* s) + { + m_value = boost::lexical_cast(s); + std::cout << "const char* Assignment (" << s << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator += (const big_number_backend_real_architype& o) + { + std::cout << "Addition (" << m_value << " += " << o.m_value << ")" << std::endl; + m_value += o.m_value; + return *this; + } + big_number_backend_real_architype& operator -= (const big_number_backend_real_architype& o) + { + std::cout << "Subtraction (" << m_value << " -= " << o.m_value << ")" << std::endl; + m_value -= o.m_value; + return *this; + } + big_number_backend_real_architype& operator *= (const big_number_backend_real_architype& o) + { + std::cout << "Multiplication (" << m_value << " *= " << o.m_value << ")" << std::endl; + m_value *= o.m_value; + return *this; + } + big_number_backend_real_architype& operator /= (const big_number_backend_real_architype& o) + { + std::cout << "Division (" << m_value << " /= " << o.m_value << ")" << std::endl; + m_value /= o.m_value; + return *this; + } + big_number_backend_real_architype& operator += (boost::uintmax_t i) + { + std::cout << "UIntmax_t Addition (" << m_value << " += " << i << ")" << std::endl; + m_value += i; + return *this; + } + big_number_backend_real_architype& operator -= (boost::uintmax_t i) + { + std::cout << "UIntmax_t Subtraction (" << m_value << " -= " << i << ")" << std::endl; + m_value -= i; + return *this; + } + big_number_backend_real_architype& operator *= (boost::uintmax_t i) + { + std::cout << "UIntmax_t Multiplication (" << m_value << " *= " << i << ")" << std::endl; + m_value *= i; + return *this; + } + big_number_backend_real_architype& operator /= (boost::uintmax_t i) + { + std::cout << "UIntmax_t Division (" << m_value << " /= " << i << ")" << std::endl; + m_value /= i; + return *this; + } + big_number_backend_real_architype& operator += (boost::intmax_t i) + { + std::cout << "Intmax_t Addition (" << m_value << " += " << i << ")" << std::endl; + m_value += i; + return *this; + } + big_number_backend_real_architype& operator -= (boost::intmax_t i) + { + std::cout << "Intmax_t Subtraction (" << m_value << " -= " << i << ")" << std::endl; + m_value -= i; + return *this; + } + big_number_backend_real_architype& operator *= (boost::intmax_t i) + { + std::cout << "Intmax_t Multiplication (" << m_value << " *= " << i << ")" << std::endl; + m_value *= i; + return *this; + } + big_number_backend_real_architype& operator /= (boost::intmax_t i) + { + std::cout << "Intmax_t Division (" << m_value << " /= " << i << ")" << std::endl; + m_value /= i; + return *this; + } + big_number_backend_real_architype& operator += (unsigned i) + { + std::cout << "UInt Addition (" << m_value << " += " << i << ")" << std::endl; + m_value += i; + return *this; + } + big_number_backend_real_architype& operator -= (unsigned i) + { + std::cout << "UInt Subtraction (" << m_value << " -= " << i << ")" << std::endl; + m_value -= i; + return *this; + } + big_number_backend_real_architype& operator *= (unsigned i) + { + std::cout << "UInt Multiplication (" << m_value << " *= " << i << ")" << std::endl; + m_value *= i; + return *this; + } + big_number_backend_real_architype& operator /= (unsigned i) + { + std::cout << "UInt Division (" << m_value << " /= " << i << ")" << std::endl; + m_value /= i; + return *this; + } + big_number_backend_real_architype& operator += (int i) + { + std::cout << "Int Addition (" << m_value << " += " << i << ")" << std::endl; + m_value += i; + return *this; + } + big_number_backend_real_architype& operator -= (int i) + { + std::cout << "Int Subtraction (" << m_value << " -= " << i << ")" << std::endl; + m_value -= i; + return *this; + } + big_number_backend_real_architype& operator *= (int i) + { + std::cout << "Int Multiplication (" << m_value << " *= " << i << ")" << std::endl; + m_value *= i; + return *this; + } + big_number_backend_real_architype& operator /= (int i) + { + std::cout << "Int Division (" << m_value << " /= " << i << ")" << std::endl; + m_value /= i; + return *this; + } + big_number_backend_real_architype& operator += (double d) + { + std::cout << "double Addition (" << m_value << " += " << d << ")" << std::endl; + m_value += d; + return *this; + } + big_number_backend_real_architype& operator -= (double d) + { + std::cout << "double Subtraction (" << m_value << " -= " << d << ")" << std::endl; + m_value -= d; + return *this; + } + big_number_backend_real_architype& operator *= (double d) + { + std::cout << "double Multiplication (" << m_value << " *= " << d << ")" << std::endl; + m_value *= d; + return *this; + } + big_number_backend_real_architype& operator /= (double d) + { + std::cout << "double Division (" << m_value << " /= " << d << ")" << std::endl; + m_value /= d; + return *this; + } + big_number_backend_real_architype& operator += (long double d) + { + std::cout << "long double Addition (" << m_value << " += " << d << ")" << std::endl; + m_value += d; + return *this; + } + big_number_backend_real_architype& operator -= (long double d) + { + std::cout << "long double Subtraction (" << m_value << " -= " << d << ")" << std::endl; + m_value -= d; + return *this; + } + big_number_backend_real_architype& operator *= (long double d) + { + std::cout << "long double Multiplication (" << m_value << " *= " << d << ")" << std::endl; + m_value *= d; + return *this; + } + big_number_backend_real_architype& operator /= (long double d) + { + std::cout << "long double Division (" << m_value << " /= " << d << ")" << std::endl; + m_value /= d; + return *this; + } + void swap(big_number_backend_real_architype& o) + { + std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; + std::swap(m_value, o.m_value); + } + std::string str()const + { + std::string s(boost::lexical_cast(m_value)); + std::cout << "Converting to string (" << s << ")" << std::endl; + return s; + } + void negate() + { + std::cout << "Negating (" << m_value << ")" << std::endl; + m_value = -m_value; + } + int compare(const big_number_backend_real_architype& o)const + { + std::cout << "Comparison" << std::endl; + return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); + } + int compare(int i)const + { + std::cout << "Comparison with int" << std::endl; + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(unsigned i)const + { + std::cout << "Comparison with unsigned" << std::endl; + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(boost::intmax_t i)const + { + std::cout << "Comparison with int" << std::endl; + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(boost::uintmax_t i)const + { + std::cout << "Comparison with unsigned" << std::endl; + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(double d)const + { + std::cout << "Comparison with double" << std::endl; + return m_value > d ? 1 : (m_value < d ? -1 : 0); + } + int compare(long double d)const + { + std::cout << "Comparison with long double" << std::endl; + return m_value > d ? 1 : (m_value < d ? -1 : 0); + } +private: + long double m_value; +}; + +typedef boost::math::big_number big_number_real_architype; + +}}} // namespaces + +#endif diff --git a/math/test/big_number_concept_check.cpp b/math/test/big_number_concept_check.cpp new file mode 100644 index 00000000..f4eaba6e --- /dev/null +++ b/math/test/big_number_concept_check.cpp @@ -0,0 +1,38 @@ + +// Copyright John Maddock 2011. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests two things: that e_float meets our +// conceptual requirements, and that we can instantiate +// all our distributions and special functions on this type. +// +#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false +#define TEST_MPFR + +#ifdef _MSC_VER +# pragma warning(disable:4800) +# pragma warning(disable:4512) +# pragma warning(disable:4127) +# pragma warning(disable:4512) +# pragma warning(disable:4503) // decorated name length exceeded, name was truncated +#endif + +#include + +#include +//#include "compile_test/instantiate.hpp" +/* +void foo() +{ + instantiate(boost::math::ef::e_float()); +} +*/ +int main() +{ + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +} + + diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp new file mode 100644 index 00000000..1109c3d3 --- /dev/null +++ b/math/test/test_arithmetic.cpp @@ -0,0 +1,443 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) +# define TEST_MPF50 +# define TEST_MPF +# define TEST_BACKEND +# define TEST_MPZ +#endif + +template +void test_integer_ops(const boost::mpl::false_&){} + +template +void test_integer_ops(const boost::mpl::true_&) +{ + Real a(20); + Real b(7); + BOOST_TEST(a % b == 20 % 7); + BOOST_TEST(a % 7 == 20 % 7); + BOOST_TEST(a % 7u == 20 % 7); + BOOST_TEST(-a % b == -20 % 7); + BOOST_TEST(-a % -b == -20 % -7); + BOOST_TEST(a % -b == 20 % -7); + BOOST_TEST(-a % 7 == -20 % 7); + BOOST_TEST(-a % -7 == -20 % -7); + BOOST_TEST(a % -7 == 20 % -7); + BOOST_TEST(-a % 7u == -20 % 7); + + a = 20; + a %= b; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= b; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -b; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -b; + BOOST_TEST(a == -20 % -7); + + a = 20; + a %= 7; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= 7; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7; + BOOST_TEST(a == -20 % -7); +} + +template +void test_negative_mixed(boost::mpl::true_ const&) +{ + std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; + Num n1 = -static_cast(1uLL << (std::numeric_limits::digits - 1)); + Num n2 = -1; + Num n3 = 0; + Num n4 = -20; + Num n5 = -8; + // Default construct: + BOOST_TEST(Real(n1) == n1); + BOOST_TEST(Real(n2) == n2); + BOOST_TEST(Real(n3) == n3); + BOOST_TEST(Real(n4) == n4); + BOOST_TEST(n1 == Real(n1)); + BOOST_TEST(n2 == Real(n2)); + BOOST_TEST(n3 == Real(n3)); + BOOST_TEST(n4 == Real(n4)); + BOOST_TEST(n1 == boost::lexical_cast(Real(n1))); + BOOST_TEST(n2 == boost::lexical_cast(Real(n2))); + BOOST_TEST(n3 == boost::lexical_cast(Real(n3))); + BOOST_TEST(n4 == boost::lexical_cast(Real(n4))); + // Assignment: + Real r(0); + BOOST_TEST(r != n1); + r = n1; + BOOST_TEST(r == n1); + r = n2; + BOOST_TEST(r == n2); + r = n3; + BOOST_TEST(r == n3); + r = n4; + BOOST_TEST(r == n4); + // Addition: + r = n2; + BOOST_TEST(r + n4 == n2 + n4); + BOOST_TEST(Real(r + n4) == n2 + n4); + r += n4; + BOOST_TEST(r == n2 + n4); + // subtraction: + r = n4; + BOOST_TEST(r - n5 == n4 - n5); + BOOST_TEST(Real(r - n5) == n4 - n5); + r -= n5; + BOOST_TEST(r == n4 - n5); + // Multiplication: + r = n2; + BOOST_TEST(r * n4 == n2 * n4); + BOOST_TEST(Real(r * n4) == n2 * n4); + r *= n4; + BOOST_TEST(r == n2 * n4); + // Division: + r = n1; + BOOST_TEST(r / n5 == n1 / n5); + BOOST_TEST(Real(r / n5) == n1 / n5); + r /= n5; + BOOST_TEST(r == n1 / n5); +} + +template +void test_negative_mixed(boost::mpl::false_ const&) +{ +} + +template +void test_mixed() +{ + std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; + Num n1 = static_cast(1uLL << (std::numeric_limits::digits - 1)); + Num n2 = 1; + Num n3 = 0; + Num n4 = 20; + Num n5 = 8; + // Default construct: + BOOST_TEST(Real(n1) == n1); + BOOST_TEST(Real(n2) == n2); + BOOST_TEST(Real(n3) == n3); + BOOST_TEST(Real(n4) == n4); + BOOST_TEST(n1 == Real(n1)); + BOOST_TEST(n2 == Real(n2)); + BOOST_TEST(n3 == Real(n3)); + BOOST_TEST(n4 == Real(n4)); + BOOST_TEST(n1 == boost::lexical_cast(Real(n1))); + BOOST_TEST(n2 == boost::lexical_cast(Real(n2))); + BOOST_TEST(n3 == boost::lexical_cast(Real(n3))); + BOOST_TEST(n4 == boost::lexical_cast(Real(n4))); + // Assignment: + Real r(0); + BOOST_TEST(r != n1); + r = n1; + BOOST_TEST(r == n1); + r = n2; + BOOST_TEST(r == n2); + r = n3; + BOOST_TEST(r == n3); + r = n4; + BOOST_TEST(r == n4); + // Addition: + r = n2; + BOOST_TEST(r + n4 == n2 + n4); + BOOST_TEST(Real(r + n4) == n2 + n4); + r += n4; + BOOST_TEST(r == n2 + n4); + // subtraction: + r = n4; + BOOST_TEST(r - n5 == n4 - n5); + BOOST_TEST(Real(r - n5) == n4 - n5); + r -= n5; + BOOST_TEST(r == n4 - n5); + // Multiplication: + r = n2; + BOOST_TEST(r * n4 == n2 * n4); + BOOST_TEST(Real(r * n4) == n2 * n4); + r *= n4; + BOOST_TEST(r == n2 * n4); + // Division: + r = n1; + BOOST_TEST(r / n5 == n1 / n5); + BOOST_TEST(Real(r / n5) == n1 / n5); + r /= n5; + BOOST_TEST(r == n1 / n5); + + test_negative_mixed(boost::mpl::bool_::is_signed>()); +} + +template +void test() +{ + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); +#ifdef BOOST_HAS_LONG_LONG + test_mixed(); + test_mixed(); +#endif + test_mixed(); + test_mixed(); + test_mixed(); + // + // Integer only functions: + // + test_integer_ops(boost::math::is_extended_integer()); + // + // Test basic arithmetic: + // + Real a(8); + Real b(64); + Real c(500); + Real d(1024); + BOOST_TEST(a + b == 72); + a += b; + BOOST_TEST(a == 72); + BOOST_TEST(a - b == 8); + a -= b; + BOOST_TEST(a == 8); + BOOST_TEST(a * b == 8*64L); + a *= b; + BOOST_TEST(a == 8*64L); + BOOST_TEST(a / b == 8); + a /= b; + BOOST_TEST(a == 8); + + Real ac(a); + BOOST_TEST(ac == a); + BOOST_TEST(-a == -8); + + ac = a * c; + BOOST_TEST(ac == 8*500L); + + ac = ac + b + c; + BOOST_TEST(ac == 8*500L+64+500); + ac = a; + ac = b + c + ac; + BOOST_TEST(ac == 8+64+500); + ac = ac - b + c; + BOOST_TEST(ac == 8+64+500-64+500); + ac = a; + ac = b + c - ac; + BOOST_TEST(ac == -8+64+500); + ac = a; + ac = ac * b; + BOOST_TEST(ac == 8*64); + ac = a; + ac *= b * ac; + BOOST_TEST(ac == 8*8*64); + ac = b; + ac = ac / a; + BOOST_TEST(ac == 64/8); + ac = b; + ac /= ac / a; + BOOST_TEST(ac == 64 / (64/8)); + ac = a; + ac = b + ac * a; + BOOST_TEST(ac == 64 * 2); + ac = a; + ac = b - ac * a; + BOOST_TEST(ac == 0); + ac = a; + ac = b * (ac + a); + BOOST_TEST(ac == 64 * (16)); + ac = a; + ac = b / (ac * 1); + BOOST_TEST(ac == 64 / 8); + ac = a; + ac = ac + b; + BOOST_TEST(ac == 8 + 64); + ac = a; + ac = a + ac; + BOOST_TEST(ac == 16); + ac = a; + ac = ac - b; + BOOST_TEST(ac == 8 - 64); + ac = a; + ac = a - ac; + BOOST_TEST(ac == 0); + ac = a; + ac += a + b; + BOOST_TEST(ac == 80); + ac = a; + ac += b + a; + BOOST_TEST(ac == 80); + ac = a; + ac -= a + b; + BOOST_TEST(ac == -64); + ac = a; + ac -= b - a; + BOOST_TEST(ac == 16 - 64); + ac = +a; + BOOST_TEST(ac == 8); + ac = -a; + BOOST_TEST(ac == -8); + ac = 8; + ac = a * ac; + BOOST_TEST(ac == 8*8); + ac = a; + ac = ac + "8"; + BOOST_TEST(ac == 16); + ac = a; + ac += +a; + BOOST_TEST(ac == 16); + ac = a; + ac += -a; + BOOST_TEST(ac == 0); + ac = a; + ac += b - a; + BOOST_TEST(ac == 8 + 64-8); + ac = a; + ac += b*c; + BOOST_TEST(ac == 8 + 64 * 500); + ac = a; + ac = ac - "8"; + BOOST_TEST(ac == 0); + ac = a; + ac -= +a; + BOOST_TEST(ac == 0); + ac = a; + ac -= -a; + BOOST_TEST(ac == 16); + ac = a; + ac -= c - b; + BOOST_TEST(ac == 8 - (500-64)); + ac = a; + ac -= b*c; + BOOST_TEST(ac == 8 - 500*64); + ac = a; + ac += ac * b; + BOOST_TEST(ac == 8 + 8 * 64); + ac = a; + ac -= ac * b; + BOOST_TEST(ac == 8 - 8 * 64); + ac = a * "8"; + BOOST_TEST(ac == 64); + ac *= +a; + BOOST_TEST(ac == 64 * 8); + ac = a; + ac *= -a; + BOOST_TEST(ac == -64); + ac = a; + ac *= b * c; + BOOST_TEST(ac == 8 * 64 * 500); + ac = a; + ac *= b / a; + BOOST_TEST(ac == 8 * 64 / 8); + ac = a; + ac *= b + c; + BOOST_TEST(ac == 8 * (64 + 500)); + ac = b / "8"; + BOOST_TEST(ac == 8); + ac = b; + ac /= +a; + BOOST_TEST(ac == 8); + ac = b; + ac /= -a; + BOOST_TEST(ac == -8); + ac = b; + ac /= b / a; + BOOST_TEST(ac == 64 / (64/8)); + ac = b; + ac /= a + Real(0); + BOOST_TEST(ac == 8); + ac = a + std::string("8"); + BOOST_TEST(ac == 16); + // + // Comparisons: + // + BOOST_TEST((a == b) == false); + BOOST_TEST((a != b) == true); + BOOST_TEST((a <= b) == true); + BOOST_TEST((a < b) == true); + BOOST_TEST((a >= b) == false); + BOOST_TEST((a > b) == false); + + BOOST_TEST((a+b == b) == false); + BOOST_TEST((a+b != b) == true); + BOOST_TEST((a+b >= b) == true); + BOOST_TEST((a+b > b) == true); + BOOST_TEST((a+b <= b) == false); + BOOST_TEST((a+b < b) == false); + + BOOST_TEST((a == b+a) == false); + BOOST_TEST((a != b+a) == true); + BOOST_TEST((a <= b+a) == true); + BOOST_TEST((a < b+a) == true); + BOOST_TEST((a >= b+a) == false); + BOOST_TEST((a > b+a) == false); + + BOOST_TEST((a+b == b+a) == true); + BOOST_TEST((a+b != b+a) == false); + BOOST_TEST((a+b <= b+a) == true); + BOOST_TEST((a+b < b+a) == false); + BOOST_TEST((a+b >= b+a) == true); + BOOST_TEST((a+b > b+a) == false); + + BOOST_TEST((8 == b+a) == false); + BOOST_TEST((8 != b+a) == true); + BOOST_TEST((8 <= b+a) == true); + BOOST_TEST((8 < b+a) == true); + BOOST_TEST((8 >= b+a) == false); + BOOST_TEST((8 > b+a) == false); + BOOST_TEST((800 == b+a) == false); + BOOST_TEST((800 != b+a) == true); + BOOST_TEST((800 >= b+a) == true); + BOOST_TEST((800 > b+a) == true); + BOOST_TEST((800 <= b+a) == false); + BOOST_TEST((800 < b+a) == false); + BOOST_TEST((72 == b+a) == true); + BOOST_TEST((72 != b+a) == false); + BOOST_TEST((72 <= b+a) == true); + BOOST_TEST((72 < b+a) == false); + BOOST_TEST((72 >= b+a) == true); + BOOST_TEST((72 > b+a) == false); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); +#endif +#ifdef TEST_MPF + boost::math::mpf_real::default_precision(1000); + boost::math::mpf_real r; + r.precision(50); + BOOST_TEST(r.precision() >= 50); + BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); + test(); +#endif +#ifdef TEST_MPZ + test(); +#endif + return boost::report_errors(); +} From 136e7b67afb6924fbf95bb2e68ca1b5f3b02aadd Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 8 Aug 2011 12:27:46 +0000 Subject: [PATCH 002/256] Add a few non-member functions for real-valued types. Add minimal docs. [SVN r73608] --- include/boost/math/big_number.hpp | 49 ++ include/boost/math/big_number/gmp.hpp | 48 ++ math/Jamroot.jam | 9 + math/boost-build.jam | 72 +++ math/doc/Jamfile.v2 | 67 ++ math/doc/big_number.qbk | 207 ++++++ math/doc/html/boost_bignumbers/intro.html | 44 ++ math/doc/html/boost_bignumbers/ref.html | 40 ++ .../boost_bignumbers/ref/backendconc.html | 38 ++ .../doc/html/boost_bignumbers/ref/bignum.html | 151 +++++ math/doc/html/boost_bignumbers/tut.html | 44 ++ math/doc/html/boost_bignumbers/tut/ints.html | 146 +++++ math/doc/html/boost_bignumbers/tut/reals.html | 158 +++++ math/doc/html/boostbook.css | 588 ++++++++++++++++++ math/doc/html/images/blank.png | Bin 0 -> 374 bytes math/doc/html/images/caution.png | Bin 0 -> 1250 bytes math/doc/html/images/caution.svg | 68 ++ math/doc/html/images/draft.png | Bin 0 -> 17454 bytes math/doc/html/images/home.png | Bin 0 -> 358 bytes math/doc/html/images/home.svg | 26 + math/doc/html/images/important.png | Bin 0 -> 722 bytes math/doc/html/images/important.svg | 25 + math/doc/html/images/next.png | Bin 0 -> 336 bytes math/doc/html/images/next.svg | 19 + math/doc/html/images/next_disabled.png | Bin 0 -> 1110 bytes math/doc/html/images/note.png | Bin 0 -> 490 bytes math/doc/html/images/note.svg | 33 + math/doc/html/images/prev.png | Bin 0 -> 334 bytes math/doc/html/images/prev.svg | 19 + math/doc/html/images/prev_disabled.png | Bin 0 -> 1109 bytes math/doc/html/images/tip.png | Bin 0 -> 449 bytes math/doc/html/images/tip.svg | 84 +++ math/doc/html/images/toc-blank.png | Bin 0 -> 318 bytes math/doc/html/images/toc-minus.png | Bin 0 -> 259 bytes math/doc/html/images/toc-plus.png | Bin 0 -> 264 bytes math/doc/html/images/up.png | Bin 0 -> 370 bytes math/doc/html/images/up.svg | 19 + math/doc/html/images/up_disabled.png | Bin 0 -> 1115 bytes math/doc/html/images/warning.png | Bin 0 -> 1241 bytes math/doc/html/images/warning.svg | 23 + math/doc/html/index.html | 53 ++ math/test/test_arithmetic.cpp | 23 + 42 files changed, 2053 insertions(+) create mode 100644 math/Jamroot.jam create mode 100644 math/boost-build.jam create mode 100644 math/doc/Jamfile.v2 create mode 100644 math/doc/big_number.qbk create mode 100644 math/doc/html/boost_bignumbers/intro.html create mode 100644 math/doc/html/boost_bignumbers/ref.html create mode 100644 math/doc/html/boost_bignumbers/ref/backendconc.html create mode 100644 math/doc/html/boost_bignumbers/ref/bignum.html create mode 100644 math/doc/html/boost_bignumbers/tut.html create mode 100644 math/doc/html/boost_bignumbers/tut/ints.html create mode 100644 math/doc/html/boost_bignumbers/tut/reals.html create mode 100644 math/doc/html/boostbook.css create mode 100644 math/doc/html/images/blank.png create mode 100644 math/doc/html/images/caution.png create mode 100644 math/doc/html/images/caution.svg create mode 100644 math/doc/html/images/draft.png create mode 100644 math/doc/html/images/home.png create mode 100644 math/doc/html/images/home.svg create mode 100644 math/doc/html/images/important.png create mode 100644 math/doc/html/images/important.svg create mode 100644 math/doc/html/images/next.png create mode 100644 math/doc/html/images/next.svg create mode 100644 math/doc/html/images/next_disabled.png create mode 100644 math/doc/html/images/note.png create mode 100644 math/doc/html/images/note.svg create mode 100644 math/doc/html/images/prev.png create mode 100644 math/doc/html/images/prev.svg create mode 100644 math/doc/html/images/prev_disabled.png create mode 100644 math/doc/html/images/tip.png create mode 100644 math/doc/html/images/tip.svg create mode 100644 math/doc/html/images/toc-blank.png create mode 100644 math/doc/html/images/toc-minus.png create mode 100644 math/doc/html/images/toc-plus.png create mode 100644 math/doc/html/images/up.png create mode 100644 math/doc/html/images/up.svg create mode 100644 math/doc/html/images/up_disabled.png create mode 100644 math/doc/html/images/warning.png create mode 100644 math/doc/html/images/warning.svg create mode 100644 math/doc/html/index.html diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index 632c7b72..ab3fabe7 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -398,6 +398,14 @@ public: { return m_backend.compare(canonical_value(o)); } + Backend& backend() + { + return m_backend; + } + const Backend& backend()const + { + return m_backend; + } private: template void do_assign(const Exp& e, const proto::tag::unary_plus&) @@ -1160,6 +1168,47 @@ std::istream& operator >> (std::istream& is, big_number& r) return is; } +// +// Non-member functions accepting an expression-template as argument: +// +#undef sqrt +template +typename boost::math::detail::expression_type::type sqrt(const detail::big_number_exp& val) +{ + typedef typename detail::expression_type::type result_type; + return sqrt(result_type(val)); +} +template +typename detail::expression_type::type abs(const detail::big_number_exp& val) +{ + typedef typename detail::expression_type::type result_type; + return abs(result_type(val)); +} +template +typename detail::expression_type::type fabs(const detail::big_number_exp& val) +{ + typedef typename detail::expression_type::type result_type; + return fabs(result_type(val)); +} +template +typename detail::expression_type::type ceil(const detail::big_number_exp& val) +{ + typedef typename detail::expression_type::type result_type; + return ceil(result_type(val)); +} +template +typename detail::expression_type::type floor(const detail::big_number_exp& val) +{ + typedef typename detail::expression_type::type result_type; + return floor(result_type(val)); +} +template +typename detail::expression_type::type trunc(const detail::big_number_exp& val) +{ + typedef typename detail::expression_type::type result_type; + return trunc(result_type(val)); +} + }} // namespaces #endif diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index a82674e5..374c7594 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -283,6 +283,8 @@ struct gmp_real_imp d = v; return compare(d); } + mpf_t& data() { return m_data; } + const mpf_t& data()const { return m_data; } protected: mpf_t m_data; }; @@ -366,6 +368,52 @@ private: } }; +// +// Native non-member operations: +// +template +big_number > sqrt(const big_number >& val) +{ + big_number > result; + mpf_sqrt(result.backend().data(), val.backend().data()); + return result; +} +template +big_number > abs(const big_number >& val) +{ + big_number > result; + mpf_abs(result.backend().data(), val.backend().data()); + return result; +} +template +big_number > fabs(const big_number >& val) +{ + big_number > result; + mpf_abs(result.backend().data(), val.backend().data()); + return result; +} +template +big_number > ceil(const big_number >& val) +{ + big_number > result; + mpf_ceil(result.backend().data(), val.backend().data()); + return result; +} +template +big_number > floor(const big_number >& val) +{ + big_number > result; + mpf_floor(result.backend().data(), val.backend().data()); + return result; +} +template +big_number > trunc(const big_number >& val) +{ + big_number > result; + mpf_trunc(result.backend().data(), val.backend().data()); + return result; +} + struct gmp_int { typedef mpl::list signed_types; diff --git a/math/Jamroot.jam b/math/Jamroot.jam new file mode 100644 index 00000000..c8019258 --- /dev/null +++ b/math/Jamroot.jam @@ -0,0 +1,9 @@ + +import modules ; + +local boost = [ modules.peek : BOOST ] ; + +project sandbox : requirements $(boost) ; + +# This seems to prevent some Boost.Build errors that otherwise occur :-( +use-project /boost : $(boost) ; diff --git a/math/boost-build.jam b/math/boost-build.jam new file mode 100644 index 00000000..02b750a1 --- /dev/null +++ b/math/boost-build.jam @@ -0,0 +1,72 @@ +# Copyright Rene Rivera 2007. +# +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +# For instructions see Jamfile.v2, or "bjam --help". + +local rule if-has-file ( file + : dir * ) +{ + local result ; + if $(dir) + { + result = [ GLOB $(dir) : $(file) ] ; + } + return $(result[1]:P) ; +} + +#~ Attempts to find the Boost source tree... + +local boost-src = [ if-has-file LICENSE_1_0.txt : + [ MATCH --boost=(.*) : $(ARGV) ] + $(BOOST) + $(BOOST_ROOT) + $(.boost-build-file:D)/../boost + $(.boost-build-file:D)/../Trunk + ] ; + +# error handling: +if ! $(boost-src) +{ + ECHO Unable to find the Boost source tree in the locations searched. ; + ECHO Try setting the environment variable BOOST to point to your ; + ECHO Boost tree, or else invoke bjam with the --boost=path option. ; + ECHO The Boost include path will not be automatically set. ; + ECHO The paths searched were [ MATCH --boost=(.*) : $(ARGV) ] $(BOOST) $(.boost-build-file:D)/../boost $(.boost-build-file:D)/../Trunk ; + ECHO But the file LICENSE_1_0.txt was not found in any of them ; +} + +#~ Attempts to find the Boost.Build files... + +local boost-build-src = [ if-has-file bootstrap.jam : + [ MATCH --boost-build=(.*) : $(ARGV) ] + $(BOOST_BUILD_PATH) + $(BOOST_BUILD) + $(boost-src)/tools/build/v2 + ] ; + +# error handling: +if ! $(boost-build-src) +{ + ECHO Unable to find the Boost.Build source tree in the locations searched. ; + ECHO Try setting the environment variable BOOST_BUILD to point to your ; + ECHO Boost.Build tree, or else invoke bjam with the --boost-build=path option. ; + ECHO The paths searched were [ MATCH --boost-build=(.*) : $(ARGV) ] $(BOOST_BUILD_PATH) $(BOOST_BUILD) $(boost-src)/tools/build/v2 ; + ECHO But bootstrap.jam was not found in any of these ; + ECHO More failures will very likely follow... ; +} + +#~ Set some common vars to refer to the Boost sources... + +BOOST ?= $(boost-src) ; +BOOST_ROOT ?= $(boost-src) ; + +#~ And load up Boost.Build... + +boost-build $(boost-build-src) ; + + + + + diff --git a/math/doc/Jamfile.v2 b/math/doc/Jamfile.v2 new file mode 100644 index 00000000..2f00f026 --- /dev/null +++ b/math/doc/Jamfile.v2 @@ -0,0 +1,67 @@ + +# Copyright John Maddock 2011. Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +using quickbook ; + +path-constant images_location : html ; + +xml big_number : big_number.qbk ; +boostbook standalone + : + big_number + : + # Path for links to Boost: + #boost.root=../../../../.. + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + html.stylesheet=boostbook.css + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=10 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=10 + # How far down sections get TOC's + toc.section.depth=10 + # Max depth in each TOC: + toc.max.depth=4 + # How far down we go with TOC's + #generate.section.toc.level=10 + # Index on type: + index.on.type=1 + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + fop1.extensions=0 + pdf:xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + pdf:fop.extensions=0 + pdf:fop1.extensions=0 + # No indent on body text: + pdf:body.start.indent=0pt + # Margin size: + pdf:page.margin.inner=0.5in + # Margin size: + pdf:page.margin.outer=0.5in + # Paper type = A4 + pdf:paper.type=A4 + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + pdf:admon.graphics.extension=".svg" + pdf:use.role.for.mediaobject=1 + pdf:preferred.mediaobject.role=print + pdf:img.src.path=$(images_location)/ + pdf:draft.mode="no" + pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/math/doc/sf_and_dist/html + ; + +install pdf-install : standalone : . PDF ; diff --git a/math/doc/big_number.qbk b/math/doc/big_number.qbk new file mode 100644 index 00000000..4ccfb199 --- /dev/null +++ b/math/doc/big_number.qbk @@ -0,0 +1,207 @@ +[/ + Copyright 2011 John Maddock. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + +[library Boost.BigNumbers + [quickbook 1.5] + [copyright 2011 John Maddock] + [purpose Big Number library] + [license + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + [@http://www.boost.org/LICENSE_1_0.txt]) + ] + [authors [authors, various]] + [last-revision $Date: 2011-07-08 18:51:46 +0100 (Fri, 08 Jul 2011) $] +] + +[section:intro Introduction] + +The Big Number library comes in two distinct parts: an expression template enabled front end `big_number` +that handles all the operator overloading, expression evaluation optimization, and code reduction, and +a selection of backends that implement the actual arithmetic operations, and need conform only to the +reduced interface requirements of the front end. + +[endsect] + +[section:tut Tutorial] + +In order to use this library you need to make two choices: what kind of number do I want, and +which backend do I want to perform the actual arithmetic? + +[section:ints Integer Types] + +The following backends provide integer arithmetic: + +[table +[[Backend Type][Header][Radix][Dependencies][Pros][Cons]] +[[`gmp_int`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +] + +[h4 gmp_int] + + namespace boost{ namespace math{ + + class gmp_int; + + typedef big_number mpz_int; + + }} // namespaces + +The `gmp_int` backend is used via the typedef `boost::math::mpz_int`. It acts as a thin wrapper around the GMP `mpz_t` +to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. + +[h5 Example:] + + #include + + boost::math::mpz_int v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + + std::cout << i << std::endl; // prints 1000! + +[endsect] + +[section:reals Real Numbers] + +The following backends provide real number arithmetic: + +[table +[[Backend Type][Header][Radix][Dependencies][Pros][Cons]] +[[`gmp_real`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +] + +[h4 gmp_real] + + namespace boost{ namespace math{ + + template + class gmp_real; + + typedef big_number > mpf_real_50; + typedef big_number > mpf_real_100; + typedef big_number > mpf_real_500; + typedef big_number > mpf_real_1000; + typedef big_number > mpf_real; + + }} // namespaces + +The `gmp_real` backend is used in conjunction with `big_number`: It acts as a thin wrapper around the GMP `mpf_t` +to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with +much greater precision. + +Type `gmp_real` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or +at variable precision by setting the template argument to zero. The typedefs mpf_real_50, mpf_real_100, +mpf_real_500, mpf_real_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision +respectively. The typedef mpf_real provides a variable precision type whose precision can be controlled via the +`big_number`'s member functions. + +[h5 example:] + + #include + + boost::math::gmp_real a = 2; + boost::math::gmp_real::default_precision(1000); + std::cout << boost::math::gmp_real::default_precision() << std::endl; + std::cout << sqrt(a) << std::endl; // print root-2 + +[endsect] + +[endsect] + +[section:ref Reference] + +[section:bignum big_number] + +[h4 Synopsis] + + namespace boost{ namespace math{ + + template + class big_number + { + big_number(); + big_number(see-below); + big_number& operator=(see-below); + /* Other number-type operators here */ + // string conversion: + std::string str()const; + // precision control: + static unsigned default_precision(); + static void default_precision(unsigned digits10); + unsigned precision()const; + void precision(unsigned digits10); + // Comparison: + int compare(const big_number& o)const; + template + typename enable_if, int>::type compare(const V& o)const; + }; + + }} // namespaces + +[h4 Description] + + big_number(); + big_number(see-below); + big_number& operator=(see-below); + +Type `big_number` is default constructible, and copy both constructible and assignable from: + +* Itself. +* An expression template which is the result of one of the arithmetic operators. +* Any builtin arithmetic type. +* A `std::string` or any type which is convertible to `const char*`. + + /* Other number-type operators here */ + +The following arithmetic operations are support for real-numbered types: + +* Binary +, -, *, /, +=, -=, *=, /=, ==, !=, <=, >=, <, >. +* Unary +, -. + +For integer types the following operators are also supported: + +Binary %, %=. + +(More to follow!!) + +Note that the result of the binary +, -, *, / and % operations is an expression template of "unmentionable type". + + std::string str()const; + +Returns the number formatted as a string (TODO: enable custom precision). + + static unsigned default_precision(); + static void default_precision(unsigned digits10); + unsigned precision()const; + void precision(unsigned digits10); + +These functions are only available if the Backend template parameter supports runtime changes to precision. They get and set +the default precision and the precision of *this respectively. + + int compare(const big_number& o)const; + template + typename enable_if, int>::type compare(const V& other)const; + +Returns: + +* A value less that 0 for *this < other +* A value greater that 0 for *this > other +* Zero for *this == other + +[endsect] + +[section:backendconc Backend Requirements] + +TODO, big boring job!! + +[endsect] + +[endsect] + diff --git a/math/doc/html/boost_bignumbers/intro.html b/math/doc/html/boost_bignumbers/intro.html new file mode 100644 index 00000000..ee77f4b1 --- /dev/null +++ b/math/doc/html/boost_bignumbers/intro.html @@ -0,0 +1,44 @@ + + + +Introduction + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The Big Number library comes in two distinct parts: an expression template + enabled front end big_number + that handles all the operator overloading, expression evaluation optimization, + and code reduction, and a selection of backends that implement the actual arithmetic + operations, and need conform only to the reduced interface requirements of + the front end. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/math/doc/html/boost_bignumbers/ref.html b/math/doc/html/boost_bignumbers/ref.html new file mode 100644 index 00000000..c6a81e2f --- /dev/null +++ b/math/doc/html/boost_bignumbers/ref.html @@ -0,0 +1,40 @@ + + + +Reference + + + + + + + + +
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/math/doc/html/boost_bignumbers/ref/backendconc.html b/math/doc/html/boost_bignumbers/ref/backendconc.html new file mode 100644 index 00000000..44dd13af --- /dev/null +++ b/math/doc/html/boost_bignumbers/ref/backendconc.html @@ -0,0 +1,38 @@ + + + +Backend Requirements + + + + + + + +
+
+
+PrevUpHome +
+
+ +

+ TODO, big boring job!! +

+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/math/doc/html/boost_bignumbers/ref/bignum.html b/math/doc/html/boost_bignumbers/ref/bignum.html new file mode 100644 index 00000000..bcf3ef57 --- /dev/null +++ b/math/doc/html/boost_bignumbers/ref/bignum.html @@ -0,0 +1,151 @@ + + + +big_number + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
namespace boost{ namespace math{
+
+template <class Backend>
+class big_number
+{
+   big_number();
+   big_number(see-below);
+   big_number& operator=(see-below);
+   /* Other number-type operators here */
+   // string conversion:
+   std::string str()const;
+   // precision control:
+   static unsigned default_precision();
+   static void default_precision(unsigned digits10);
+   unsigned precision()const;
+   void precision(unsigned digits10);
+   // Comparison:
+   int compare(const big_number<Backend>& o)const;
+   template <class V>
+   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
+};
+
+}} // namespaces
+
+
+ + Description +
+
big_number();
+big_number(see-below);
+big_number& operator=(see-below);
+
+

+ Type big_number is default + constructible, and copy both constructible and assignable from: +

+
    +
  • + Itself. +
  • +
  • + An expression template which is the result of one of the arithmetic operators. +
  • +
  • + Any builtin arithmetic type. +
  • +
  • + A std::string or any type which is convertible + to const char*. +
  • +
+
/* Other number-type operators here */
+
+

+ The following arithmetic operations are support for real-numbered types: +

+
    +
  • + Binary +, -, *, /, +, -, *, /, + ==, !, <, >=, <, >. +
  • +
  • + Unary +, -. +
  • +
+

+ For integer types the following operators are also supported: +

+

+ Binary %, %=. +

+

+ (More to follow!!) +

+

+ Note that the result of the binary +, -, *, / and % operations is an expression + template of "unmentionable type". +

+
std::string str()const;
+
+

+ Returns the number formatted as a string (TODO: enable custom precision). +

+
static unsigned default_precision();
+static void default_precision(unsigned digits10);
+unsigned precision()const;
+void precision(unsigned digits10);
+
+

+ These functions are only available if the Backend template parameter supports + runtime changes to precision. They get and set the default precision and + the precision of *this respectively. +

+
int compare(const big_number<Backend>& o)const;
+template <class V>
+typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
+
+

+ Returns: +

+
    +
  • + A value less that 0 for *this < other +
  • +
  • + A value greater that 0 for *this > other +
  • +
  • + Zero for *this == other +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/math/doc/html/boost_bignumbers/tut.html b/math/doc/html/boost_bignumbers/tut.html new file mode 100644 index 00000000..92e58b08 --- /dev/null +++ b/math/doc/html/boost_bignumbers/tut.html @@ -0,0 +1,44 @@ + + + +Tutorial + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ + +

+ In order to use this library you need to make two choices: what kind of number + do I want, and which backend do I want to perform the actual arithmetic? +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/math/doc/html/boost_bignumbers/tut/ints.html b/math/doc/html/boost_bignumbers/tut/ints.html new file mode 100644 index 00000000..b2dbce57 --- /dev/null +++ b/math/doc/html/boost_bignumbers/tut/ints.html @@ -0,0 +1,146 @@ + + + +Integer Types + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The following backends provide integer arithmetic: +

+
++++++++ + + + + + + + + + + + + + + + + +
+

+ Backend Type +

+
+

+ Header +

+
+

+ Radix +

+
+

+ Dependencies +

+
+

+ Pros +

+
+

+ Cons +

+
+

+ gmp_int +

+
+

+ boost/math/big_number/gmp.hpp +

+
+

+ 2 +

+
+

+ GMP +

+
+

+ Very fast and efficient backend. +

+
+

+ Dependency on GNU licenced GMP library. +

+
+
+ + gmp_int +
+
namespace boost{ namespace math{
+
+class gmp_int;
+
+typedef big_number<gmp_int >         mpz_int;
+
+}} // namespaces
+
+

+ The gmp_int backend is used + via the typedef boost::math::mpz_int. It acts as a thin wrapper around + the GMP mpz_t to provide + an integer type that is a drop-in replacement for the native C++ integer + types, but with unlimited precision. +

+
+ + Example: +
+
#include <boost/math/big_number/gmp.hpp>
+
+boost::math::mpz_int v = 1;
+
+// Do some arithmetic:
+for(unsigned i = 1; i <= 1000; ++i)
+   v *= i;
+
+std::cout << i << std::endl; // prints 1000!
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/math/doc/html/boost_bignumbers/tut/reals.html b/math/doc/html/boost_bignumbers/tut/reals.html new file mode 100644 index 00000000..cd08e445 --- /dev/null +++ b/math/doc/html/boost_bignumbers/tut/reals.html @@ -0,0 +1,158 @@ + + + +Real Numbers + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The following backends provide real number arithmetic: +

+
++++++++ + + + + + + + + + + + + + + + + +
+

+ Backend Type +

+
+

+ Header +

+
+

+ Radix +

+
+

+ Dependencies +

+
+

+ Pros +

+
+

+ Cons +

+
+

+ gmp_real<N> +

+
+

+ boost/math/big_number/gmp.hpp +

+
+

+ 2 +

+
+

+ GMP +

+
+

+ Very fast and efficient backend. +

+
+

+ Dependency on GNU licenced GMP library. +

+
+
+ + gmp_real +
+
namespace boost{ namespace math{
+
+template <unsigned Digits10>
+class gmp_real;
+
+typedef big_number<gmp_real<50> >    mpf_real_50;
+typedef big_number<gmp_real<100> >   mpf_real_100;
+typedef big_number<gmp_real<500> >   mpf_real_500;
+typedef big_number<gmp_real<1000> >  mpf_real_1000;
+typedef big_number<gmp_real<0> >     mpf_real;
+
+}} // namespaces
+
+

+ The gmp_real backend is used + in conjunction with big_number: + It acts as a thin wrapper around the GMP mpf_t + to provide an real-number type that is a drop-in replacement for the native + C++ floating-point types, but with much greater precision. +

+

+ Type gmp_real can be used + at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpf_real_50, mpf_real_100, mpf_real_500, mpf_real_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpf_real provides a variable precision type whose + precision can be controlled via the big_number's + member functions. +

+
+ + example: +
+
#include <boost/math/big_number/gmp.hpp>
+
+boost::math::gmp_real a = 2;
+boost::math::gmp_real::default_precision(1000);
+std::cout << boost::math::gmp_real::default_precision() << std::endl;
+std::cout << sqrt(a) << std::endl; // print root-2
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/math/doc/html/boostbook.css b/math/doc/html/boostbook.css new file mode 100644 index 00000000..252fa9ec --- /dev/null +++ b/math/doc/html/boostbook.css @@ -0,0 +1,588 @@ +/*============================================================================= + Copyright (c) 2004 Joel de Guzman + http://spirit.sourceforge.net/ + + Distributed under the Boost Software License, Version 1.0. (See accompany- + ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +=============================================================================*/ + +/*============================================================================= + Body defaults +=============================================================================*/ + + body + { + margin: 1em; + font-family: sans-serif; + } + +/*============================================================================= + Paragraphs +=============================================================================*/ + + p + { + text-align: left; + font-size: 10pt; + line-height: 1.15; + } + +/*============================================================================= + Program listings +=============================================================================*/ + + /* Code on paragraphs */ + p tt.computeroutput + { + font-size: 9pt; + } + + pre.synopsis + { + font-size: 90%; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + .programlisting, + .screen + { + font-size: 9pt; + display: block; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + /* Program listings in tables don't get borders */ + td .programlisting, + td .screen + { + margin: 0pc 0pc 0pc 0pc; + padding: 0pc 0pc 0pc 0pc; + } + +/*============================================================================= + Headings +=============================================================================*/ + + h1, h2, h3, h4, h5, h6 + { + text-align: left; + margin: 1em 0em 0.5em 0em; + font-weight: bold; + } + + h1 { font: 140% } + h2 { font: bold 140% } + h3 { font: bold 130% } + h4 { font: bold 120% } + h5 { font: italic 110% } + h6 { font: italic 100% } + + /* Top page titles */ + title, + h1.title, + h2.title + h3.title, + h4.title, + h5.title, + h6.title, + .refentrytitle + { + font-weight: bold; + margin-bottom: 1pc; + } + + h1.title { font-size: 140% } + h2.title { font-size: 140% } + h3.title { font-size: 130% } + h4.title { font-size: 120% } + h5.title { font-size: 110% } + h6.title { font-size: 100% } + + .section h1 + { + margin: 0em 0em 0.5em 0em; + font-size: 140%; + } + + .section h2 { font-size: 140% } + .section h3 { font-size: 130% } + .section h4 { font-size: 120% } + .section h5 { font-size: 110% } + .section h6 { font-size: 100% } + + /* Code on titles */ + h1 tt.computeroutput { font-size: 140% } + h2 tt.computeroutput { font-size: 140% } + h3 tt.computeroutput { font-size: 130% } + h4 tt.computeroutput { font-size: 120% } + h5 tt.computeroutput { font-size: 110% } + h6 tt.computeroutput { font-size: 100% } + +/*============================================================================= + Author +=============================================================================*/ + + h3.author + { + font-size: 100% + } + +/*============================================================================= + Lists +=============================================================================*/ + + li + { + font-size: 10pt; + line-height: 1.3; + } + + /* Unordered lists */ + ul + { + text-align: left; + } + + /* Ordered lists */ + ol + { + text-align: left; + } + +/*============================================================================= + Links +=============================================================================*/ + + a + { + text-decoration: none; /* no underline */ + } + + a:hover + { + text-decoration: underline; + } + +/*============================================================================= + Spirit style navigation +=============================================================================*/ + + .spirit-nav + { + text-align: right; + } + + .spirit-nav a + { + color: white; + padding-left: 0.5em; + } + + .spirit-nav img + { + border-width: 0px; + } + +/*============================================================================= + Copyright footer +=============================================================================*/ + .copyright-footer + { + text-align: right; + font-size: 70%; + } + + .copyright-footer p + { + text-align: right; + font-size: 80%; + } + +/*============================================================================= + Table of contents +=============================================================================*/ + + .toc + { + margin: 1pc 4% 0pc 4%; + padding: 0.1pc 1pc 0.1pc 1pc; + font-size: 80%; + line-height: 1.15; + } + + .boost-toc + { + float: right; + padding: 0.5pc; + } + +/*============================================================================= + Tables +=============================================================================*/ + + .table-title, + div.table p.title + { + margin-left: 4%; + padding-right: 0.5em; + padding-left: 0.5em; + } + + .informaltable table, + .table table + { + width: 92%; + margin-left: 4%; + margin-right: 4%; + } + + div.informaltable table, + div.table table + { + padding: 4px; + } + + /* Table Cells */ + div.informaltable table tr td, + div.table table tr td + { + padding: 0.5em; + text-align: left; + font-size: 9pt; + } + + div.informaltable table tr th, + div.table table tr th + { + padding: 0.5em 0.5em 0.5em 0.5em; + border: 1pt solid white; + font-size: 80%; + } + + table.simplelist + { + width: auto !important; + margin: 0em !important; + padding: 0em !important; + border: none !important; + } + table.simplelist td + { + margin: 0em !important; + padding: 0em !important; + text-align: left !important; + font-size: 9pt !important; + border: none !important; + } + +/*============================================================================= + Blurbs +=============================================================================*/ + + div.note, + div.tip, + div.important, + div.caution, + div.warning, + p.blurb + { + font-size: 9pt; /* A little bit smaller than the main text */ + line-height: 1.2; + display: block; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + p.blurb img + { + padding: 1pt; + } + +/*============================================================================= + Variable Lists +=============================================================================*/ + + /* Make the terms in definition lists bold */ + div.variablelist dl dt, + span.term + { + font-weight: bold; + font-size: 10pt; + } + + div.variablelist table tbody tr td + { + text-align: left; + vertical-align: top; + padding: 0em 2em 0em 0em; + font-size: 10pt; + margin: 0em 0em 0.5em 0em; + line-height: 1; + } + + div.variablelist dl dt + { + margin-bottom: 0.2em; + } + + div.variablelist dl dd + { + margin: 0em 0em 0.5em 2em; + font-size: 10pt; + } + + div.variablelist table tbody tr td p, + div.variablelist dl dd p + { + margin: 0em 0em 0.5em 0em; + line-height: 1; + } + +/*============================================================================= + Misc +=============================================================================*/ + + /* Title of books and articles in bibliographies */ + span.title + { + font-style: italic; + } + + span.underline + { + text-decoration: underline; + } + + span.strikethrough + { + text-decoration: line-through; + } + + /* Copyright, Legal Notice */ + div div.legalnotice p + { + text-align: left + } + +/*============================================================================= + Colors +=============================================================================*/ + + @media screen + { + body { + background-color: #FFFFFF; + } + + /* Links */ + a + { + color: #005a9c; + } + + a:visited + { + color: #9c5a9c; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, + h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, + h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited + { + text-decoration: none; /* no underline */ + color: #000000; + } + + /* Syntax Highlighting */ + .keyword { color: #0000AA; } + .identifier { color: #000000; } + .special { color: #707070; } + .preprocessor { color: #402080; } + .char { color: teal; } + .comment { color: #800000; } + .string { color: teal; } + .number { color: teal; } + .white_bkd { background-color: #FFFFFF; } + .dk_grey_bkd { background-color: #999999; } + + /* Copyright, Legal Notice */ + .copyright + { + color: #666666; + font-size: small; + } + + div div.legalnotice p + { + color: #666666; + } + + /* Program listing */ + pre.synopsis + { + border: 1px solid #DCDCDC; + } + + .programlisting, + .screen + { + border: 1px solid #DCDCDC; + } + + td .programlisting, + td .screen + { + border: 0px solid #DCDCDC; + } + + /* Blurbs */ + div.note, + div.tip, + div.important, + div.caution, + div.warning, + p.blurb + { + border: 1px solid #DCDCDC; + } + + /* Table of contents */ + .toc + { + border: 1px solid #DCDCDC; + } + + /* Tables */ + div.informaltable table tr td, + div.table table tr td + { + border: 1px solid #DCDCDC; + } + + div.informaltable table tr th, + div.table table tr th + { + background-color: #F0F0F0; + border: 1px solid #DCDCDC; + } + + .copyright-footer + { + color: #8F8F8F; + } + + /* Misc */ + span.highlight + { + color: #00A000; + } + } + + @media print + { + /* Links */ + a + { + color: black; + } + + a:visited + { + color: black; + } + + .spirit-nav + { + display: none; + } + + /* Program listing */ + pre.synopsis + { + border: 1px solid gray; + } + + .programlisting, + .screen + { + border: 1px solid gray; + } + + td .programlisting, + td .screen + { + border: 0px solid #DCDCDC; + } + + /* Table of contents */ + .toc + { + border: 1px solid gray; + } + + .informaltable table, + .table table + { + border: 1px solid gray; + border-collapse: collapse; + } + + /* Tables */ + div.informaltable table tr td, + div.table table tr td + { + border: 1px solid gray; + } + + div.informaltable table tr th, + div.table table tr th + { + border: 1px solid gray; + } + + table.simplelist tr td + { + border: none !important; + } + + /* Misc */ + span.highlight + { + font-weight: bold; + } + } + +/*============================================================================= + Images +=============================================================================*/ + + span.inlinemediaobject img + { + vertical-align: middle; + } + +/*============================================================================== + Super and Subscript: style so that line spacing isn't effected, see + http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341 +==============================================================================*/ + +sup, +sub { + height: 0; + line-height: 1; + vertical-align: baseline; + _vertical-align: bottom; + position: relative; + +} + +sup { + bottom: 1ex; +} + +sub { + top: .5ex; +} + diff --git a/math/doc/html/images/blank.png b/math/doc/html/images/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..764bf4f0c3bb4a09960b04b6fa9c9024bca703bc GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrEa{HEjtmSN`?>!lvNA9*>Uz33 zhE&XXd(lylL4oIh!GZnHecj|txT>yO8>^qY%(y?B;Tppl#t7yOYze#vq#8^aMzDZb YLK^d5CO(feU_df>y85}Sb4q9e0BevqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/math/doc/html/images/caution.svg b/math/doc/html/images/caution.svg new file mode 100644 index 00000000..4bd586a0 --- /dev/null +++ b/math/doc/html/images/caution.svg @@ -0,0 +1,68 @@ + + + + + + Attenzione + + + + pulsante + + + + + Open Clip Art Library + + + + + Architetto Francesco Rollandin + + + + + Architetto Francesco Rollandin + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/math/doc/html/images/draft.png b/math/doc/html/images/draft.png new file mode 100644 index 0000000000000000000000000000000000000000..0084708c9b8287c51efa6b40b8d492854191455e GIT binary patch literal 17454 zcmXwh2{_c>_y1e^C}m43S&}RzTQstU#!g0*n6YJ1aTS}>RLe1z8LVo z`rtm$Vp5JW1|R$HTrs@@LGR)Z?>PPkL8l=j-77Z&G8Tsi{RV4sPaGi)BBI`)`R~Q` z*=O$N8oBahuA1ujq=ONsH^Z$;Z@?A2zPOR;+t7%GvNscPQvtyu^ z^(He{(TNfAz{D>S76#pNt`V=aFm{t&tF)Lut!iq>3RU|!!{xbB|2@69Az7({KpgFX zBHUL)|7ydZKc0k%azcGA&PuCQV*kD$bT{P;b?=`M@6C_|b6!~s9j#tuU~e9n-MCHj zfV5S(js_`kv|ivaLE*6pY!G%r11u^qOVBw|g29`m16#D?@yi>zc0bwz%G@ za2kvxn$XS7{2WQ_ju!==VTs+`V&L;sVz(Pl4+J?F&ZZv3KoKW2c?bBtGq5)oRM?*)usx_-H@47Cu#_qL+2eow%ZDy0=bsNsUP&ms8wSUp@nG86W_bQDmNMRgINC`_}NgC zCcqF_Ta|ScVvPu;|0KG{NIio~DaGYcHYq4AEiIzkxEPqs@0$Z$*)*@J$yP3ObX$%T zzRS=t%7(g3t{Q*^ zEyTxT$*5+N*(plL90Bl6`Nb^WdKn_Pvpb{prO$Iu<5}~-EnXK7fy@_2c89d+ZhJ|)%qTOcbj#K2|l1B!3n*4em>_| zs0+)H9*C!kU%yVP5l({XnQMeRu}L5Sj@SNhX<@4AzfhMZW{P&$t(3w4cF;s3a!PkRM$$6I_u>8qK3>fr(_ zv-Y*v{SjgTfq|+BcyYvbM!vF^@bCsN)N`rpJ$><_Gs5*qVfQ0@761Os;NFEBr2V@4l75H}1u*H-x1FzIyrv zX4-neRxZt~y^&-x>*hYlIJHqt-rL&^c9<9eB-5QN-kNin&S^e!8s9rIjX$~r#FHSZ zPPGHSJ7NH?>J1WXHMp6{3_m_JHFb(pJM-&G@!UzwMZ19kYDMv8^_@35=1Qp*GU^C$ znS!nuvPQ5{W^@`l=K{0vn9d5B4sd@GNsqwYt13N;s_n$M5sF(Y{Gu{$f)Pqq6>`4( zoK6ZojptUz?t{2OQ@f4d24!GwYi6y465k8gmK^#vxd{Il-lBt^R7pE@jfteJwgkQ(YBxT%22tXdci&(7P>~Iov zlAF+-uyinD*mU_C1!Z!%vFE`wQx$H0WX*IMeKiv()c!!|Br&A#iWksE5wy*|X}DYF zOkmbb)NtBhwAgAQQ)W7>BzBj)^ec8BETv8dt~1Wtd}pfRmKnoYyMymV`fvW*bjTy@ zNFqchp{S-_%)XBfUmWyYYl$xVgQtxEVn358@gKtpQuu~+-Kl-33E21oa-Fi&oBI&`1N%T=`T3uD7xjR z1Q5DaVd-rOkkqXdK@Yti1APh3TN{S1DknOaE4Vdk=o-MQ!`zf#3^vm0RTp!s>(8+I z(BKlybb>#^&dE#xTWKkB5>RG$`5m60nzI~B_{R+DtsN)(K1(tUpuVHL0)mIKnUfCR zGE=xGXN@3g`N9QSG|T0c&wxuu*Qg<*+`PlfSfJAKfkWnRsVJ$bx1$Z`o)r~6%k4&i z<9I5}9(ypb2w!#-r7*;K+DjakI~Af;0mNtDxBc4R3|&8W^=h6KIf?>|@$@)*tlfRZ zrCkhM8ZMxnVd%Q>wKHQ6h;cwwxcI6738osp@h30JoAC1Si}3tS%4m{iuKSkF9xsrA%;wLv z8A#j|uifcVGx>ptY|-u;nJ$&yw-19u5smA=3C-sC-n~XzIV= z*~{{V0<$*x$DP?_zs?b?-Dsw+U(_(rI4}YY;n`g??R&MWiSNSHJ{;g>QuE+91GpRE zd9DfqUKVfdeAUwO7il>!iH(N~Y+WTTbX3b$$01o$aei(SD8PN9Ig|tehF6`&rMrwH z6C(}UhO7r4V(nXd&uyraV5X$iUUKSF7E#U?bu;$RHwXn03D2wdZR{}kbxlVH%&8F=8tR+X zZ7kKlMpt29EK0Mnb~Bm{1y*D227__FT~$T7>%Bs>RxQrlgI55^$os$sc`ic?+hwHQ zy%C%qRZZ?xjTT>R%HJvzYPmTbNJa&lc4N}*?d^eJ+TgWWrby|-X?$RL63$ocD0=1z zq>bD(K@l*w5V0aAqv-^DtQq(*B!;KK;S)?XERW0Z8_eB7>{FG!W0Tmu$$a@l#~e@t zb7eAjZ0Z_IN~+HjldvP|xLYiL+|mn)Q;HmqDMG^&^)mW(%Xyb~AG4Jkd@~F091U{i zRg(Zi(!S357h;^+d50bWLHO{(l58O+_d192vyD-Oh|kx|qkk|71w!Jdg*R ze=X`e#>jQ1n83%L37gJmxi{uYC;jRU__qGnk430EXC8CcRU^h&pyhVlHM8x(ce}=L+^|Pv zi|35MNQw6wsl4bw0P{NiUo&-{is+V{iXV*G{_L^ONZ@`H!#JZ@}t;bpd`Z>sx8;y zHg4#YSJ*anpi2Do=jWPejhaoGWKx!&jJeOVaku|#u8?8fCKc>EQ4j zn#0h@X_`cW22kHot+mSQz%;tAI|=i92)Mglsf!Nu*>=_g&(G0d>km#k&)3TllY#^u z02UV-NFuEUi@}-x=ETTTKA`X~EX5jv8~B<}HTK+*9&OvU2dkm`_BX*1VwV7Ij{pg= zxZNaUqPlcVYHAyHFof?m;I-ZD4bN%(@@2Td(VgI3 z{*lWmv$RZ|smov=_kGDznn+>_uX{A6;y}7pk@d`(Lh6{gFvrA5pAdMmu#G*QM1tQg z2^Fb6c;#}e`;nd&oQKh@*-zW!9ICOL;OFgA2-lpdOKmA=Bp;B_eB?c_df>veT)HW_ zs^sQQf+2B6j;5$>ZG`htEUcU*ioNkd+t(slRq00x_hk@N@P79aTAmlqe^(+dfnlOAm^WQavYofR?D70kyE!Q*mr z=MN`!PH<&(t6*5^bfSkgq80c+f6zkhX=!PVf1h^9o$GPX_wJAXim3%oV$)U9uWEOS zFZ=#iF~Q2FVvon!cVc(IvVedI_~ko1I5_AWe$&m4Pfz2dCm|J!YrHng`j<_W)9N6m zB@dJSV}^c#gL?<*=59v;JS=y@jX-JNZOq4)l)5={d`D-W!H@43<=pJ8Cgd+PhIgZ0 z&1}v2D7JC5c5m#$OqX|BP;TfUn_N`fm(NOG0@Nct5f0=5t?)gK>f*TZCP8 zE~vAz*f8;aNltIEzGmjk2?*gK)Xp4zr=6}59u!nRQiIH`r`BWA&&b%MJ+5|@JL))( z@lrFw!p1WBNbZB0IBSb692ygY3^VVnsCLI=p1DJ|9{R_viTo;ObrMJc9HN|9uopn6 zRxJ;a=NLyqW+8?@vXq*8_pkle?wWh-VSoPI3KIY*(nFq-Do;;Op#DRi6cuGIH zS7vFz0{w!T_jHtX9_!if-#4x3C9rYkU+2(KU|U3m|Bg{GCEc)G`)=}$uCcQ=o5}DE z4Qf|tZ$U3T&S;B0h&i3`PkyvL2&sK4L#)80)82naNsAnG!T4hTE7tIKfou;^sdejO z2^s6dG*bi~@XEf#g^+->YY)^i=j)rM{NpB6Os``bQrQDn`1IcCuH_tZo5u_RDCH9} z{A(qdv9-0;w%911g+6sdttId7K8LSzQx$iqDz9QJ%qEV5yOmP%C1^8VJ~&}mU03FL z5oO`+?_NbVx$89Jw_-65lS!LLL^<~>akOrQ*k8YT2f4npv!ne5LrBe1G zio4QV3V(pOPhsqCE2}mF#DXWKYCS~L->zo*5E`io01;dT5!%$~no!XU5w!2{HcD?P z$hkcJN$uNC-y%aa0(KSOy?hfCDA$n{jchN?d(tgsICQ1t%qbWQv5cv{T zBj3*W2{Wy5d$(v$@2djHMZWKG0-|MBp}dhVgo z`Vtvp{;P+IYGFXmo{Vm!Z+%cSOfN(pk`H&G(lF_arZgk!S9%x!bxKv`i?_8}mLXr- zfr-&54|LC~#MV?wRQm-EFSRGh4UA`d#pe!1bE-N?4{$Ro_JUO#b#A&ZN*AR84Q}u< zvAY2P2=^9%#QQFnV=U#iNT(o73@pmXuFN9 zR?J5~@ZQvv3RK1HlYa(JZ^_%8l~?wwv#lhDjuMeJDC(xS8@gFpX*CRJe8FTVfJFLE z`L1aE-QBK9wh8Lf=pv(3olJVvrY$Ug*U6Z?{29OF(VGVhgGPXNls7&Qa&U0KV+QnI zZN%rly6U%&wr&4qxD-ujjGO;@!kTH7t&RXS%qN%jTu85~jgj|mC`qh(pxU=LV<8nb z2*g-&X|S0`7pDK6F8O&>ow7=M28`!FRi!}mwg<&m&wRfJeJ}DJr|iWg3+r~FUb+VH z+^&Un8v5io|7I+;!f+OL&4~5g{fgrz&*uKPkBlbI#PEevl|9*Y;=ZITUOO{Xx3C?Q zjzzGgf??gQ$0$6k$=bjrn_FR?Ye1m&Alpp zIR2qAum=_rBrlX|_n?Z@`qf(Z0Kxll;~uBw&`7z9Rouxf&+){$ zT5l^SU3Q)C3!P4v<8`92?@GD3FQ>)aS@lWl&S_BItaudFE*~l)`|-f4TB#FImiY-_6&9CJ9!>+TEFxeaHO)c zvYblCdx~?kBnWI3y61_CZ7mPPn2!+y?I{+aqiJZV?FagXcV{P$qIQQ}eE8YeF~}-C z?~`EwR@Cieg6$PyJheqdg_twn9zXuoot>29+0UEtNnjKl>TgTSUIvF?r06FMW=5%U zVd7m{^kQJvRLT(~FbI!5QPR|t;QS06HwuN4s*dj5LYaTRDxc}ZbrgWm^`&@BlD%v{ z@k_@S)~9!76hB8Mu>D387Pt4nO+z=`W~vOK4w3_J5I>vM30q#&d2?0jd#W0;VqxAg z{*lOi191%V8^8z#kba|g@ zf4GgGK?gk~`S@>iRci6!kr&;RW(POG$iTAEX&_W3#)}zCBeQ12R}+C0SYWFB65117 zYx=X?gFD^+O{W+m*yAfTKmH~iyJk_ORwrFE`7|!~oOPP-{gCa4!U@A4tRgdFHX_Yj zXQ(+MhO_<^GRY)^`TEi#V?93xP#4UrcMTTD68zJ5m{DboqT=!RTMbx!3!QK?HvU2k za26tqP;3Z8*MmUwL{1I(@xTcd(1T(ot# zQ8@|QB&oA%VI6gn^=!_v)SeO)d`3{ewC>T3XM2ZqXV?iJKc$ft~<<46c!aV(J1mq1tLFMB0Q_){R1qliEw)EIh?S*NbRo*>YaPx z2D-q!@M}X!8+eqQe9(&`vcyr9*&Oc9DxIi1?hcoq6i$Ah{XCaH^2(3TA1)Kpu+!qk zA@V)hERaLu1FN%*CTT?U)U3}+-q2_=P0!NO%*+f=0%Wimi9$O7C`K!{L9kB*slT?q zUcI7*#C3?0;`R1E9%YCjZ^&A%sl;VB6)!NN8!ilSF2s{jaYk8%7*iwJVYB!}O?`NH z3i_o?`Ay@F!YSHq7T_a4Hx}qC1`Ys?_byXR)+^(UW^H6<{Jzm;NPkU97r0{^fT(G3 zA;><1llKwo;%)@{#|9*KE2Dmt;(B|5Xn)(d7V2nr5OXUnA1y_!SW`EtahHzmtl7EE z%djW%*H&HXZ5G=Zciw~l@@5<9~SRg`>1sdv54 zxFT-jCM&GG@`Q{Ed)0jXg#Q(;FzY%A{D;AwhdaxE884#bo;|{{h3OhPo0zbfk;Dak z&K2NDkc8^wVPB=SuB`+^8?cY^RCi~h^*4EmEc?J58r@|g3@t=ykaw*U{ z7v;3}@P2CDd|+0TV}fa|3wl21cs|OFu95chX_S0!)zbD}eUfC(!|&!sVnQ$17U~i3 z0k=jQ+>~NKF!oc>Kff(i>j!z@pZJbZ5Qp)A$c?DsJ8AAv!O6p8|34Q%YV*_nJIhup zmQ_{jUUf_x$nzc!4cNy^2`mY?*);JNgVn<>CsVJYluh4fgd_lF1||t597+ld|`Ww&*4Hb;}rzPmefkY`>P)eSO9!dk2T9lx>3Nj5=Mz z>r&3-+b)2!U(?WAgFX*rf@W9Zs)AS~lgtt0D77}&rQM~)i0CR!i>JVNn(;mN6vgZBRDJTdsnC?L>2H3nvZSp}#S z6*9#|of{57Sm7ktIRid*9b3ZPg&%fX92~R}5M69&e`W5`q8wIvKfBufD8f~ti%ujG zOKrw=EiJwBQ@H^*Kw5USk7cR`7;^B0t+_@D3FT&XdE}c8tK%QmNSn;A8RAsMn%(|0 z_}jjAHPj3;YFouX*X_FojE7Cjxz=b5i*s)&Yd&bUzA+NKT|Zgbdbmf54f|QjdK38q zi<5!1eI+@#xyQUC|DfNCc{vl9E=gF^==yjQil0#7c-)K`hM1O%+v4rCu<4wKEeA0> zEp7n)lZbgQlME&N{V?)eCoEp(d6K!Ss;kAyp#QBJcej|g)B$R7KOOkifc9VnF zpKF%Ab3TXaX3pJr!NN3W-J#nLcKyGkvKH+HgbCYH}OT?)qCnEf9AXZkAVH3MBfRj~6fiIx9-31EklLu#&A>uM1w2k;x{p z6SI?Q5Rg<8S^)#s7ktzJn2#%93?7_*{LTCC-tM45qH{l**RpP#OJ?_o|&r9_@2w=JQ0!~pTA3FNiUVF zjRt1OxG5gVaVzD&sIKBRWsLqX)%Dkp^<7D*ZZlOm3zvdK^caRuw0>+%#d)V}r&k&S9MyDr!%#@BU!SxwyIS8y<#pz4TMM)V&d^NaNs%w$r@xK#Z3m-2Z*B z!#C;VD$dR|<3`KMGMYA6xX-+QD(`rW%C9UZWiLh9%$D1dG#BLbF0BPZF6E_5rP3E_PtxKxwhc&v~_AC^KGDil_tZ4XGnVb_$U_s<> zm8kOFv>8SO#Z#<$=3;#hN0AoE1Eo}p(7cFS7Qu%^IP-@56DRm6;s!W0R~nyzVbeB3 zPAN{zeWb;hUGr&tp1Tb%L(Z#nGF@88afdvP=TZ9_k=he-T;vK+PJ?P6ZmqD(qF2)s za2N9|Lc_5Nh35`gW$V?KI?Em}*YAvfg$3DWNG(QvSZl?m(ctUi;Jj>c8s=iGQ_8IM5DCuHH6)h}yp2H=v=D>3DC$o5 zULiAntcT_b0+|=uYSp|RU-2AMnA6H6X~WBacfvSg6(!cva9ZpD*PX&B$NOGVW7m4Z zwa-Ri?VbD4_e>?M_?{Gp5;i_LZoeQ02^su&$#yDX?_v;bcFNw!ZP<6Xv&q9brr24? z|MPgFAc|V;-ru*smLhtJwEd+tn+gNbYoIlb_Kua^3mizF_sOpaD<1}%2z%fRbie!kaalVI{ zp@PyqhIH`4Lsqp;dXPhYq~D8f_H6FmSVw-c0o;ya;C8Y>viOHkmc!hn^U?c42ZCH^ zPvXs&ZghbhD2ne4J#b17FiS1I9RZ}k{S#@9{3>3owZjjy1{zN14ROf_w3vGo{JOw_ z5LgnbR;Hy3#ZJxN6{=$yTGHlT+Ef*p(!2*(M=pwq@gO`fH0Dr=&t+`4T`zSS&3H_CR^wcr&oGobo(9^R&aR88N zpw8q{)!yFVT7gxPn;IJlWjTZ@;6^gu0o~Co*Y0Z@emdc=ZP)|VUtU{c#1q@-m_(_F zc1`xg?iSXAbKiaJX8bOLsLi6+@?>^2T?51nOC5Th3E$~E6NxFrub(x#dXlO?;HtC3wTw{sEq|t|$syXv8Tfi8aLLm->hWZycx7?T zJAi@9^p4)TX$*q+{W7YJe2KLA=_$$-H9nhPJihFrO_S8hL+vnyy}LF)%0Bq3`+#x! z9*bF7ccIkdCZ@bjMt&SE&fg93dDU%csbne!aFMjR)C1<>dSOfAuTm{~rfOo&wrBMJ zi&P9Lc>oaIV)w+sO?^X8sjG-$-RvZfqbMm$3ez1Ue{7OHR`>b6Zq=_PrYSjFxJ0op{4-*e>HCa+ltbeRL&8rk zOpJhZ9$>74+^4>aDY$y1{+F~p?}C)d=kkO*yn}m+Ajw3dOKVp@e;LX1bbqRk?i+lw z|D*uJfF@Z)tVkhWM8?V&E# zyTmdhV1UEb^kae@-je}deN9LG-8T#3h1#ojCe(gby>*zW``~(Lb6U7b%MwpdqEq(K zEAS{$i7H)RbG~^`>SjFQj+Y?^Ft_1`?au+^$%R3VO1zaZ&?NS4Ry^!zZ^1c#NF#h@ z0TD8T#jmQSaL?JG8@5uub}qy}n+?f&XZkDn47o*x8=R+CS@9|@+5Sc{deuI{#-k@8 zGwVmk8dyt-NdoEExb}uMJCH}0UCrJi0uMR>5}ISY3=oBH&_hoY1^&b)i~yE}u?si% z-PVt&T)q;ZjLX0sQ_TA3bY0+hmGSl}+yLQsMKtH(tvC4_;^TC@vXLuNNTcgL$DnOmGiLhtBsMO^AN`&cRypL?h%J zBiGYxSf4}dsU(n)My$~2GQ(fLVZL#U{ho7-j1j?+)IK2=G zzXCkvL!y~{frb8dl#NEpiJ)7iad@m8(PH3p4?x|-%d5zWr95 z{rZdqX#)sbTEuODXWBnoDA=^8YbJDSV-L>lfASXZ8D5y&t!Z16)p2XHLUQ||$XzhY z(ZNTOhU=WEWxG?AOmpj8K~s1|a(9*t@!RB$%7U*=_M=t5`sWAFyuz~O>Pcjl@Xup- zgO1W}S3KEY&FGc`(1n6n{`G2ikZF>bki9HXRA3j<&l!tlbJ90F>rt$!$g75+5bn&= zjyM80QWmZjI!*;6oH#S|oUcV47FQsDUj%8+H$#7kjT51X^Jtx)%R6|}%#Dzl{ml^0 zsv`Nn-|Bz+48SiLI79mr$g&j&34dbw@n{EdZCF)Q;Eel#;Nmcdr^kRV94rNTeQ>Vz znJP$)fOxR055Bx)K9o5)r}JEv*;cD>C^DQx@@g87^oPS)Thwn;1zXm|@zi=;a?}5h8y* z6>(bt{|;@&f#h3nUIC~HE_8P)0gPfgF)Iz@RlCu`TI%(q~$n4sNz_?{|9BnSz}B&7{#_ zK1qBPIgO|{V&NqKX{rq+Kghb{e3jx$f^oK<{_owdP6x{tVp%vtu+-oKp~{XTyKKwM zX$Z`c@2!q%PLTgNKUeKOH3e?Z#(AjRAjfx2O^o-wLC-f~kXBCsjG2SB4k!3w&_%ssqiht1fi`gwthS zZRJxsc=Hc02T0kCbeye6=v`L}H=CcUFBS95I`opHXTIPR!vcLUKAVpo{skf;5|%cj zKZYwozQ@0;jmm7Ewzi zo<*oL>r^0lz>yz>?Cy#9!RQ(wwu(u2d3jTu6aCREon8S6b$ev_gGij5MEh0OwVHeY z3JMHR>*HK->0zGG9~TkshQO@B>eP?{hJE$f;3N>uRLhJ}P~ZraSC!2Z-m?eb14#V` z%Wf}!yyU^lkZyZXi204#!G+O?Q@ceB{!4N<(Xh3BuOxshEnNU26-F#`#RIs>N}(pBW@Si2rp;jR0tbkkeB?zr zS^vJtRoNXb>y}tW?zt}O@HIPqMztv8X1Mb1o1(k)Qcp6Pr6uU+Wr|!Hv7+$?#M_2O z8ozNt-UfLk4P2gUH6A!~G!t9m9h^|<)O4k5$cNw60eE=UoqqjQ71i%yE>IF5MMw53 zoVZpnlyb}7VoR-eL}JL|uKeGZGj%Bhl-tR>S%pT0QE3%}REJ4vlQXBz;^otxhg?Ch z8XD=ERaU!$Uo=nzVP$E_ymK_%iP6+MG{s;{Y7rF$-fQvmr}-!7R+5kFfp=OE?phks zAIRMnzl_f-n|fdFUx?=;*-?y8#j=PGKPpOOOfX}Ic6w;#a)+T)JYU|+Xv2w$zY|)U zEeeU^HM+hO--oSU>4i-+iF%MO_+IX?wo`R@!WLpS_grU1%73579~%ph(hCzw#gqKS z33(@oiGv3~@~gXqf5#i|_#YMm|B*Feu_oGLserI4H_P&w_AZb(3Isb~x3Ld2CgpT^#omehU$@8! zZ37~|Sa6Xc;y@q!+6z@#hh!4ucXrj8>Qxso@J<)u1I)@I5I^A46Xis^4@P!i0{?O+ zk)CZ~poU|sFD2L)#iE|&ssJ3xPipy!K=bolV9l|2Z(i}*43Z1Wl>m~3P4rKR z;{jYf=VLJmi^x2<{AMKuKw`P)#B;8nQBOIhHy->XNo^z$xthq*cY@X>W!5<4<@4FX zNAk9jj2q$VscrAdjGHmRtbN?guU-Ze<)BHW%*jo5k{5v?@U7yU_yhoD$uz_q-~545jZuxv;JUQ*eFqk?xfP@lh~jP(N?2I0NIZ-q zDGD#GS$Z5%#81&o5Ufv=)9xJ28~UMS`u^V4={bp#DxfwlU7@e?)*KGps|+y(T@tnr z9A#fLvb5wqpXG&eyWHhX@kN1}iO>(98#j(F*qUrT%3$LWY&VnO9gyxolrhty?u8%M zar#N)92>LMOfsB>_D%XweB1a5z8o_t7nV53zGhsGH=Ml{GE->_3^aZ?i1k+KH{Bi* zY{{urjeCUUx{4awMMqbyudOM4lcFe}f0kQxel&TCX;q8#ItaBSss?l>cfYcppL667 zS>TiWKH{ZWLw~L%seSo-t#ZVhl2DGsZb6V3qms|C<$Uq?0!WD znTe>ujm8kZr!xr(ULadh!(KEI*eP2e8ztmktEMSwD&hN43ddd7xbRW-tc40~ z19$nWlggKs>s;Od2Iq;+HaSzqE~nHmhvFSvxIn|naZo8v~4WofUl z>!4oJlcv$-(Hu&G#ZJ_w5Z)n~Rwk6YVkfc4?7^k&H4vyEOMEwEPa;GC(@sG9UK0l< zym3g}=fXdvShWk}JWOfm_hXjhW6NC8L44=y9MCIOFwlD^9541durm zIjxI`e%J5;RSEZ-PK64!Z$8JYxg)OYus$7X)=3YXtpuw8`FEZoHX-T27L3^3mCkP{ z&5K05BG=29L~TDoxs)Ze8YnCtB6r6s5%IM>J{E>lKnexjk zF8wpQnq>*y(C;*VyBSQLL0w@L?tQ?-PuO>uDOcCX?6xMc;$ZyH<_&W`uj1gXTP$N^ zG4Xa31VfrYj;M^;f(-Tw`<_7wa3DmU;dQiQf z7NxutM)uz=k#Ko!M0*iv^qY@@ibmclp2|7Ykd5wdL5{;9N3m~n4g=tUwe;P zI25w!A{9r;$eMW>q{hpo19Bk1pe=P>6r$o%=>7_cjN&Tm5M|IJuUvH+AK${CJX4oU zgO6^=eBKAuGz|tm+nSrK8|c$@b06AJVIe41Kb6p*)`8SjV>XRLlD=n zxmF_SZPNO?HOkAGmreqZP`zhDat0zvL6TUJs#jj+mv!eE2D(4H^wQ8v?J{{F_uNf{ z3Guwlmr_Y+?1xwv+DlCV!Qxf3`85lI9<3MYLPv#eKnDUu^wHQ zc>gm5549XSAWHZ;ccVn65dF5Y_!SFO%Z|}Q(6SZUI=Dtc;z5Ty%nrLYb#L*-Yh(x- zSIj@A+IWZB(0~zQg=&PNK%${P5hZ>29oZHuVGWHXY$x1YFsQbXHgN={wk@*qqJ+Nq zd)egXY~a_ZOiJe;TU+HKlsyJTMfblt8%od5*(H)*Q$D;z+^%AQ4mXPuX2k}%-4;79 zmQ1FAba2Ra`Bcxdj1l&?kFD%K^S3JRgKXK4^qjwecz_P2uJ-l zC)Qvqm+~M!v43_gwKDlR1nJf$++0o6yE@XCdZL3q)UgB#ypJ#vJ8S*1wxK1+=6B}+ zXR*cqf>giPZZtBQvI{Zak5z&s<%W6@C}Kc7|Jd$GBC>hYST1Qs6_hTGb>DuR924B0 zN83(4+CxS$>H&|*-r;Fo4NfL83)iN!YZ&TeJH98$Hv6Ebv4bJ|{_ja0c;iH3BS>3^ zpqgshmx8R31o2gdvH`OqjyW=UU6imxAx*C0^Zy99KL{oAvkpUJI(*CnkaZUKS|miv7yJG9ATWhm{X zmhwPou-YzMm|1!Q!U)jjx%z~gla=8UD)w?G&Zaq~DL{YDwlSN`Dnf>gnqOEH6`e=5 zK`qGvB4v}6phVXVBt;`Goq9`6$1(ekF#8@rQR!O?lVvgou3PA{Mrgg$a_qp=fEaM+ zd)RS3^IyJ;lNL~f*%#*d`QhDdtk^TrNIS|sGACrecpC80;-?Fs23-ZoFWU}~?O7@t zRJMKubhf|4AK65+^Yw8fyef3O1aA8v$s3mu7PHe^U+V4qu@K`r&lUl#^MSr$PX__o zkc4H6xZrmj{B9ymd8uZ1l@104i9rzScjn&(C@ri42@jd|ET?03nMCrOz62_&EiK<& zSBCb#CxX4Kax$9yU;Qik2A;XS4l0o}3esA}H7YGS`LFZ+Cp-+Ao3iV`;Y2#t+RBw4 zx0Nc0Q9y%mXU8X3P%JXaJSA=%)~{Chg+d_{`+@cih8jx$RRzetz1P5XI7rt8+K9*g zkSIZ8rn1WK#9AdD3qWOXE$*F3Ot={(vVp^%iu~vZN~NYgy8_O?l!!1aW}T^|BNP&6 z0?qjrcZN zmjmPbA_FH7lrCAL1d^70)DpX)@;aCfO87MXaxB1q=%jAw{{D`eJ!d-BNT7BMlMWP}{ZZ&o`DY!}ep;HhTV*iZR2Rod;vAPt=MM&iugW*ReqJUt5Qt_q8>ioMMBX>R9!hDFUD-8$eYs z1-TtSGqXUHgLC2i8u*t{Y|w|+jMebIyJ4s^A?cD}pz_yAd)%*nkt{$;7Zl-taBgGY z3@mR5iYU7aF`|s8$6+Otgv24;=D;){kh=%;5zgNp{HcTraHisq6ZRfb zGW_De>QlN^)>%P;wg-4IfgjGe)9@8oA5f2u;i&iuD70ZYZG>GVyG?KsVh7^@q^+_&<9k|1f{n8Ys}&4 zar=)5U>;^OAAH~;qzbCyEiJ*~gbv|vsZP*7fI2Zi@i+OI%Qu*&(tT@erO6Mb(Z$59 zguP#oe4eqid_2;#q}qW|`vO7O$`jJe$IvZwKK6c?Xzh#3XO?(!b^2k4;!# zYGW=JqVe>I?z~`PT4Q2xwFFNu6ey9UCv31nPenw9f8bRc#Vg5bJF+YgK;aIo$ualP wqI_@;Bx5sQADwv9=?)5}0VhV#cC~Kt`tEf9DgFWeNC#x3htMsB-+J`_0Fi|iga7~l literal 0 HcmV?d00001 diff --git a/math/doc/html/images/home.png b/math/doc/html/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..5584aacb097a80e66a5320312b6e4eb017af1a06 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9nKDRM~@s%h>KBER+u?+=H<(mwr$-K=fo0^iDsNj}a zlv + + + + + + + +]> + + + + + + + + + + + + + + diff --git a/math/doc/html/images/important.png b/math/doc/html/images/important.png new file mode 100644 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/math/doc/html/images/important.svg b/math/doc/html/images/important.svg new file mode 100644 index 00000000..dd84f3fe --- /dev/null +++ b/math/doc/html/images/important.svg @@ -0,0 +1,25 @@ + + + + + + + + +]> + + + + + + + + + + + + + + + diff --git a/math/doc/html/images/next.png b/math/doc/html/images/next.png new file mode 100644 index 0000000000000000000000000000000000000000..59800b4e87f60c0e3383ede2b384b9be0f5ffe8d GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9mdAS+qP~A^!HU$R#>ro>7z#vFJHct5EtX@VE6z3e?1}lM4)<}k|4ieAQuK0 zgzld^2NdTl@Q5sCVBi)4Va7{$>;3=*RZCnWN`mv#O3D+9QW<;`lZ*0mQ&Tb%72Gn5 zQp@v;vWpdbBNU7b3{2X~)|>}w5Cds&E=o--$;{7F2+7P%WiT|*H!#*WFgd=yhZCqG z!qdeuq+(9;4PKV1Hyx6gnJ3)X*T8%1&d~!CcvGht8EkNzY0cztDB;<=un7h&oMQJ5 zOnAh^!sYOgmxqZbU_wKJkwW(@g)2%k8?y8!<$B~f6iH61Ubv5eVdat_!+^S!9H1Qx Mp00i_>zopr0Jz|Gn*aa+ literal 0 HcmV?d00001 diff --git a/math/doc/html/images/next.svg b/math/doc/html/images/next.svg new file mode 100644 index 00000000..75fa83ed --- /dev/null +++ b/math/doc/html/images/next.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/math/doc/html/images/next_disabled.png b/math/doc/html/images/next_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..10a8c59d7b3741260b7bfe918b62d0670cad8433 GIT binary patch literal 1110 zcmY+@U1(Ba7zgmjDRvTtQ&L$$oM7uF2)$_$L2619oS2=UZrYjBy6mRGh`_UtKA{mr z&7hmQ>n7-KH(k`l3W_tgna$01TCHhYnyqEo%+oU}@c)DNeRv<Aw4@Ln z93k3vZsg(J43U|lVL3RF9xoOO*=)8_spRvsnW@QgsZ^`gs@1Bl&*gH{hGA%$HjdJ0 z0!^YRltHf%-=x_aG>vj-2F;>8dW+_ej^3ep^d5ac3+N+SL}4$&L!O*Z;pbcwggWI6Ht znSIeG^MqH2daRdq_j=NKWUEDx?&yZ{K(t0hNp-olr%gM()V(P|g0v^Rdp~d9J+QaF z!E^J*7D+vMK=CJy#-QLKKFMEfm#>;6HRZnKq86dtH6)t7^tAr+x)|r>qo?RMm@+$*>08dLHng9R* literal 0 HcmV?d00001 diff --git a/math/doc/html/images/note.png b/math/doc/html/images/note.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + diff --git a/math/doc/html/images/prev.png b/math/doc/html/images/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..d88a40f923e3c554125f01cd366707c60cfcad04 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7$jYX~xFJ+qQ05v3zNuzpt9I!sW}Cx;s0Z9qba~V*daCKl2PvGf+KGNswPKkP8D0 zLif*|1B!DNctjR6FmMZjFyp1Wb$@_@swJ)wCBgY=CFO}lsSLh}$wm3OsVSL>3T~N2 zspa`a*~JRJ5eh~I1}5!gYt92Th=DXX7o{eaWaj57gkwm>gfq&(JZLf6ZeXy%aV8%R&r1O{j}20XTDX{IIykaj z4Nx#hVBm6cU}k1+>Qw1kB6gA`rFdeFa~bob(-ZFQzAc!;#K4>y+$E64`2%PJgQu&X J%Q~loCIAR&aHIeL literal 0 HcmV?d00001 diff --git a/math/doc/html/images/prev.svg b/math/doc/html/images/prev.svg new file mode 100644 index 00000000..6d88ffdd --- /dev/null +++ b/math/doc/html/images/prev.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/math/doc/html/images/prev_disabled.png b/math/doc/html/images/prev_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3c17e02d156e7494dbab2f9cd66af46af2358c GIT binary patch literal 1109 zcmY+@QAkr^6bJBgcW-U!1{X&)qK7M_5M*o=8THWJ+-L(GYZ=trG_;qf9*iP{hOHkvdvc6%2vA_iD3U9-0yJDcRs#*KhAd};6H4s z+g3+J7N6H0vA^EQ+H!#9vbD6`Ds$w15^-3cW^4D2@1tYP~^k(L0ny@6iX8LwWQOEu&AU zfQo1ZeMa02wZ5RQ=o?x^-x0S~tsm$oT0_531^q^UP!(}k|Km7w>=EA^b6?PZ^nZ>c zHKa9-^N)RQXXnMy?rd*3eEalZV2h}d<7uSYUol!mlhPcO#b+0y%6jsu%~o|iC&Tqk zjZ&+ugrhej$H%%!n2hY4Bw5`RXuNjl<&!a&&LzU`dgFGUS~a!}3S4TRbC4w09~9k9 z);;a{R+T2~>V^|?*&xZWmO@B-pr0ES45n;vpEFE`ily1KnYZ`aRH^GBuiSf29T*)S kmrP2ur(nL^ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/math/doc/html/images/tip.svg b/math/doc/html/images/tip.svg new file mode 100644 index 00000000..cd437a5e --- /dev/null +++ b/math/doc/html/images/tip.svg @@ -0,0 +1,84 @@ + + + + + + lamp + + + + office + + lamp + + + + + Open Clip Art Library + + + + + Sergio Luiz Araujo Silva + + + + + Public Domain + + + set 2005 + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/math/doc/html/images/toc-blank.png b/math/doc/html/images/toc-blank.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffad17a0c7a78deaae58716e8071cc40cb0b8e0 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g literal 0 HcmV?d00001 diff --git a/math/doc/html/images/toc-minus.png b/math/doc/html/images/toc-minus.png new file mode 100644 index 0000000000000000000000000000000000000000..abbb020c8e2d6705ebc2f0fc17deed30f2977a46 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL literal 0 HcmV?d00001 diff --git a/math/doc/html/images/toc-plus.png b/math/doc/html/images/toc-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..941312ce0dab168e0efcc5b572e387259880e541 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{S^Z=hXV#3jn*#4_ x=vj5p^wF)?xpx*Du6ddKc=uuXxWffq{6A*KyDFWJxdXJF!PC{xWt~$(69DY=mmvTE literal 0 HcmV?d00001 diff --git a/math/doc/html/images/up.svg b/math/doc/html/images/up.svg new file mode 100644 index 00000000..d31aa9c8 --- /dev/null +++ b/math/doc/html/images/up.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/math/doc/html/images/up_disabled.png b/math/doc/html/images/up_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..e22bc8712192df3a8faa3264b0ec71ff3aaaa96c GIT binary patch literal 1115 zcmY+@Z)^*37zgl2dzmw~oK$GMafp#cWXs;jyt!6uYtl7UeZec8`SV6X{7De9Dw2(4 zm>26}32(gcW*OddFPdfV_NT?wYHgXdTAfl#H+r5D$$dY`-IIHMf0Ezb_xin_j)wY; z^+eR*>U8+HT56YQ=DTxXyvjv5Ve7IHJsG&Xy#F3Q%RQaGE}~1@h=SLMDmvFJ(fJml zT!5&3h-ky9p~u59A~Sj2e&_VmWGa=4$F*XyxL7D;GnsO^oJh>ZqBHq?zEmnDlXI0y zMc4I7gDEtPW>6Hx&`b0Ry+#^}qc><4CD2?%a47s&%&rYXwnm@^2oK6>2RiC(}ybQxc@;;j!lN7xJKGXK5u*58HCq zi)yn~zbYIeQ(ynxTdSHPs@k~jXquO=uiH1eY2@@XO+VY(#*4k%x7x*t?&AUCt?S$* rDO!X~;(e<^-4?Sb9}HJ}I(CrQLYik+oARjr0iT6jPLE^M9tiybIrJyp literal 0 HcmV?d00001 diff --git a/math/doc/html/images/warning.png b/math/doc/html/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/math/doc/html/images/warning.svg b/math/doc/html/images/warning.svg new file mode 100644 index 00000000..fc8d7484 --- /dev/null +++ b/math/doc/html/images/warning.svg @@ -0,0 +1,23 @@ + + + + + + + + +]> + + + + + + + + + + + + + diff --git a/math/doc/html/index.html b/math/doc/html/index.html new file mode 100644 index 00000000..c9d159d1 --- /dev/null +++ b/math/doc/html/index.html @@ -0,0 +1,53 @@ + + + +Chapter 1. Boost.BigNumbers + + + + + + +
+
+
Next
+
+
+

+Chapter 1. Boost.BigNumbers

+

+various authors +

+
+
+

+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +

+
+
+ +
+ + + +

Last revised: July 08, 2011 at 18:51:46 +0100

+
+
Next
+ + diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 1109c3d3..421df04a 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -60,6 +60,25 @@ void test_integer_ops(const boost::mpl::true_&) BOOST_TEST(a == -20 % -7); } +template +void test_real_ops(const boost::mpl::false_&){} + +template +void test_real_ops(const boost::mpl::true_&) +{ + std::cout << "Root2 = " << sqrt(Real(2)) << std::endl; + BOOST_TEST(abs(Real(2)) == 2); + BOOST_TEST(abs(Real(-2)) == 2); + BOOST_TEST(fabs(Real(2)) == 2); + BOOST_TEST(fabs(Real(-2)) == 2); + BOOST_TEST(floor(Real(5) / 2) == 2); + BOOST_TEST(ceil(Real(5) / 2) == 3); + BOOST_TEST(floor(Real(-5) / 2) == -3); + BOOST_TEST(ceil(Real(-5) / 2) == -2); + BOOST_TEST(trunc(Real(5) / 2) == 2); + BOOST_TEST(trunc(Real(-5) / 2) == -2); +} + template void test_negative_mixed(boost::mpl::true_ const&) { @@ -209,6 +228,10 @@ void test() // test_integer_ops(boost::math::is_extended_integer()); // + // Real number only functions: + // + test_real_ops(boost::mpl::bool_::value >()); + // // Test basic arithmetic: // Real a(8); From 41bee8c1421c7bac2342c390473885278a28322e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 8 Aug 2011 16:15:37 +0000 Subject: [PATCH 003/256] Add some build warnings. [SVN r73610] --- math/test/test_arithmetic.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 421df04a..e09d7f59 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -12,6 +12,14 @@ # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + #endif template From 53d0691ac950b88572f7ca00a03c5feb97645e88 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 8 Aug 2011 17:13:50 +0000 Subject: [PATCH 004/256] Add ldexp and frexp. [SVN r73612] --- include/boost/math/big_number/gmp.hpp | 24 ++++++++++++++++++++++++ math/test/test_arithmetic.cpp | 15 +++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 374c7594..aaa5a068 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -413,6 +413,30 @@ big_number > trunc(const big_number >& val mpf_trunc(result.backend().data(), val.backend().data()); return result; } +template +big_number > ldexp(const big_number >& val, long e) +{ + big_number > result; + if(e > 0) + mpf_mul_2exp(result.backend().data(), val.backend().data(), e); + else if(e < 0) + mpf_div_2exp(result.backend().data(), val.backend().data(), -e); + return result; +} +template +big_number > frexp(const big_number >& val, int* e) +{ + long v; + mpf_get_d_2exp(&v, val.backend().data()); + *e = v; + return ldexp(val, -v); +} +template +big_number > frexp(const big_number >& val, long* e) +{ + mpf_get_d_2exp(e, val.backend().data()); + return ldexp(val, -*v); +} struct gmp_int { diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index e09d7f59..fa2fc9c6 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -85,6 +85,21 @@ void test_real_ops(const boost::mpl::true_&) BOOST_TEST(ceil(Real(-5) / 2) == -2); BOOST_TEST(trunc(Real(5) / 2) == 2); BOOST_TEST(trunc(Real(-5) / 2) == -2); + + // + // ldexp and frexp, these pretty much have to implemented by each backend: + // + BOOST_TEST(ldexp(Real(2), 5) == 64); + BOOST_TEST(ldexp(Real(2), -5) == Real(2) / 32); + Real v(512); + int exp; + Real r = frexp(v, &exp); + BOOST_TEST(r == 0.5); + BOOST_TEST(exp == 10); + v = 1 / v; + r = frexp(v, &exp); + BOOST_TEST(r == 0.5); + BOOST_TEST(exp == -8); } template From 0fa9745248e1ffde53fb429bd72825a59497422b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 9 Aug 2011 16:25:39 +0000 Subject: [PATCH 005/256] Add missing #includes. [SVN r73626] --- include/boost/math/big_number.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index ab3fabe7..af00ec74 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -11,8 +11,12 @@ #include #include #include +#include #include #include +#include +#include +#include namespace boost{ namespace math{ From 30fbb4d528ad0b46880086dfbd4fbec1624f4746 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 11 Aug 2011 11:28:11 +0000 Subject: [PATCH 006/256] Add rvalue reference support. Add LINPACK benchmark test. Update arithmetic tests to work with types other than big_number. Fix precision of ostream& operator<<. [SVN r73649] --- include/boost/math/big_number.hpp | 26 +- include/boost/math/big_number/gmp.hpp | 46 +- .../math/concepts/big_number_architypes.hpp | 2 +- math/test/linpack-benchmark.cpp | 1258 +++++++++++++++++ math/test/test_arithmetic.cpp | 34 +- 5 files changed, 1345 insertions(+), 21 deletions(-) create mode 100644 math/test/linpack-benchmark.cpp diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index af00ec74..f9a7c98b 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -190,13 +190,6 @@ public: BOOST_ASSERT(proto::value(*this) == this); m_backend = canonical_value(v); } - /* - big_number(unsigned digits10, typename enable_if_c::type* dummy = 0) - : base_type(digits10) - { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); - }*/ big_number(const big_number& e, unsigned digits10) : m_backend(e.m_backend, digits10) { proto::value(*this) = this; @@ -240,6 +233,19 @@ public: do_assign(e, typename proto::tag_of::type()); } +#ifndef BOOST_NO_RVALUE_REFERENCES + big_number(big_number&& r) : m_backend(r.m_backend) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + } + big_number& operator=(big_number&& r) + { + m_backend.swap(r.m_backend); + return *this; + } +#endif + template big_number& operator+=(const detail::big_number_exp& e) { @@ -367,9 +373,9 @@ public: // // String conversion functions: // - std::string str()const + std::string str(unsigned digits = 0)const { - return m_backend.str(); + return m_backend.str(digits); } // // Default precision: @@ -1160,7 +1166,7 @@ inline typename boost::enable_if, bool>: template std::ostream& operator << (std::ostream& os, const big_number& r) { - return os << r.str(); + return os << r.str(static_cast(os.precision())); } template diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index aaa5a068..cba6ed56 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -33,11 +33,25 @@ struct gmp_real_imp { mpf_init_set(m_data, o.m_data); } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real_imp(gmp_real_imp&& o) + { + m_data[0] = o.m_data[0]; + o.m_data[0]._mp_d = 0; + } +#endif gmp_real_imp& operator = (const gmp_real_imp& o) { mpf_set(m_data, o.m_data); return *this; } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real_imp& operator = (gmp_real_imp&& o) + { + mpf_swap(m_data, o.m_data); + return *this; + } +#endif gmp_real_imp& operator = (boost::uintmax_t i) { boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); @@ -233,13 +247,13 @@ struct gmp_real_imp { mpf_swap(m_data, o.m_data); } - std::string str()const + std::string str(unsigned digits)const { mp_exp_t e; void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); - const char* ps = mpf_get_str (0, &e, 10, 0, m_data); + const char* ps = mpf_get_str (0, &e, 10, digits, m_data); std::string s("0."); if(ps[0] == '-') { @@ -258,7 +272,8 @@ struct gmp_real_imp } ~gmp_real_imp() { - mpf_clear(m_data); + if(m_data[0]._mp_d) + mpf_clear(m_data); } void negate() { @@ -299,13 +314,21 @@ struct gmp_real : public detail::gmp_real_imp mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } gmp_real(const gmp_real& o) : gmp_real_imp(o) {} - +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real(gmp_real&& o) : gmp_real_imp(o) {} +#endif gmp_real& operator=(const gmp_real& o) { *static_cast*>(this) = static_cast const&>(o); return *this; } - +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real& operator=(gmp_real&& o) + { + *static_cast*>(this) = static_cast&&>(o); + return *this; + } +#endif template gmp_real& operator=(const V& v) { @@ -326,6 +349,9 @@ struct gmp_real<0> : public detail::gmp_real_imp<0> mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } gmp_real(const gmp_real& o) : gmp_real_imp(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real(gmp_real&& o) : gmp_real_imp(o) {} +#endif gmp_real(const gmp_real& o, unsigned digits10) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); @@ -337,7 +363,13 @@ struct gmp_real<0> : public detail::gmp_real_imp<0> *static_cast*>(this) = static_cast const&>(o); return *this; } - +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real& operator=(gmp_real&& o) + { + *static_cast*>(this) = static_cast &&>(o); + return *this; + } +#endif template gmp_real& operator=(const V& v) { @@ -706,7 +738,7 @@ struct gmp_int { mpz_swap(m_data, o.m_data); } - std::string str()const + std::string str(unsigned)const { void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp index f7c196e1..31b4d992 100644 --- a/include/boost/math/concepts/big_number_architypes.hpp +++ b/include/boost/math/concepts/big_number_architypes.hpp @@ -252,7 +252,7 @@ struct big_number_backend_real_architype std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; std::swap(m_value, o.m_value); } - std::string str()const + std::string str(unsigned)const { std::string s(boost::lexical_cast(m_value)); std::cout << "Converting to string (" << s << ")" << std::endl; diff --git a/math/test/linpack-benchmark.cpp b/math/test/linpack-benchmark.cpp new file mode 100644 index 00000000..c2c1d054 --- /dev/null +++ b/math/test/linpack-benchmark.cpp @@ -0,0 +1,1258 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +/* 1000d.f -- translated by f2c (version 20050501). +You must link the resulting object file with libf2c: +on Microsoft Windows system, link with libf2c.lib; +on Linux or Unix systems, link with .../path/to/libf2c.a -lm +or, if you install libf2c.a in a standard place, with -lf2c -lm +-- in that order, at the end of the command line, as in +cc *.o -lf2c -lm +Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., + +http://www.netlib.org/f2c/libf2c.zip +*/ +#include +#include +#include +#ifdef TEST_BIG_NUMBER +#include +typedef boost::math::mpf_real_100 real_type; +#elif defined(TEST_GMPXX) +#include +typedef mpf_class real_type; +#elif defined(TEST_EF_GMP) +#define E_FLOAT_TYPE_GMP +#include +typedef e_float real_type; +#define CAST_TO_RT(x) real_type(x) +#elif defined(TEST_MATH_EF) +#define E_FLOAT_TYPE_GMP +#include +typedef boost::math::ef::e_float real_type; +//#define CAST_TO_RT(x) real_type(x) +#else +typedef double real_type; +#endif + +#ifndef CAST_TO_RT +# define CAST_TO_RT(x) x +#endif + +extern "C" { +#include "f2c.h" + integer s_wsfe(cilist *), e_wsfe(void), do_fio(integer *, char *, ftnlen), + s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen), + e_wsle(void); + /* Subroutine */ int s_stop(char *, ftnlen); + +#undef abs +#undef dabs +#define dabs abs +#undef min +#undef max +#undef dmin +#undef dmax +#define dmin min +#define dmax max + +} +#include + + +#if defined(TEST_EF_GMP) +#include +using namespace ef; +#endif + +using std::min; +using std::max; + +/* Table of constant values */ + +static integer c__0 = 0; +static real_type c_b7 = CAST_TO_RT(1); +static integer c__1 = 1; +static integer c__9 = 9; + +inline double second_(void) +{ + return ((double)(clock())) / CLOCKS_PER_SEC; +} + + +int main() +{ +#ifdef TEST_BIG_NUMBER + std::cout << "Testing big_number >" << std::endl; +#elif defined(TEST_GMPXX) + std::cout << "Testing mpfr_class at 100 decimal degits" << std::endl; + mpf_set_default_prec(((100 + 1) * 1000L) / 301L); +#elif defined(TEST_EF_GMP) + std::cout << "Testing gmp::e_float" << std::endl; +#elif defined(TEST_MATH_EF) + std::cout << "Testing boost::math::ef::e_float" << std::endl; +#else + std::cout << "Testing double" << std::endl; +#endif + + + /* Format strings */ + static char fmt_1[] = "(\002 Please send the results of this run to:\002" + "//\002 Jack J. Dongarra\002/\002 Computer Science Department\002/" + "\002 University of Tennessee\002/\002 Knoxville, Tennessee 37996" + "-1300\002//\002 Fax: 615-974-8296\002//\002 Internet: dongarra@c" + "s.utk.edu\002/)"; + static char fmt_40[] = "(\002 norm. resid resid mac" + "hep\002,\002 x(1) x(n)\002)"; + static char fmt_50[] = "(1p5e16.8)"; + static char fmt_60[] = "(//\002 times are reported for matrices of or" + "der \002,i5)"; + static char fmt_70[] = "(6x,\002factor\002,5x,\002solve\002,6x,\002tota" + "l\002,5x,\002mflops\002,7x,\002unit\002,6x,\002ratio\002)"; + static char fmt_80[] = "(\002 times for array with leading dimension o" + "f\002,i4)"; + static char fmt_110[] = "(6(1pe11.3))"; + + /* System generated locals */ + integer i__1; + real_type d__1, d__2, d__3; + + /* Builtin functions */ + + /* Local variables */ + static real_type a[1001000] /* was [1001][1000] */, b[1000]; + static integer i__, n; + static real_type x[1000]; + static double t1; + static integer lda; + static double ops; + static real_type eps; + static integer info; + static double time[6], cray, total; + static integer ipvt[1000]; + extern /* Subroutine */ int dgefa_(real_type *, integer *, integer *, + integer *, integer *), dgesl_(real_type *, integer *, integer *, + integer *, real_type *, integer *); + static real_type resid, norma; + extern /* Subroutine */ int dmxpy_(integer *, real_type *, integer *, + integer *, real_type *, real_type *); + static real_type normx; + extern /* Subroutine */ int matgen_(real_type *, integer *, integer *, + real_type *, real_type *); + static real_type residn; + extern real_type epslon_(real_type *); + + /* Fortran I/O blocks */ + static cilist io___4 = { 0, 6, 0, fmt_1, 0 }; + static cilist io___20 = { 0, 6, 0, fmt_40, 0 }; + static cilist io___21 = { 0, 6, 0, fmt_50, 0 }; + static cilist io___22 = { 0, 6, 0, fmt_60, 0 }; + static cilist io___23 = { 0, 6, 0, fmt_70, 0 }; + static cilist io___24 = { 0, 6, 0, fmt_80, 0 }; + static cilist io___25 = { 0, 6, 0, fmt_110, 0 }; + static cilist io___26 = { 0, 6, 0, 0, 0 }; + + + lda = 1001; + + /* this program was updated on 10/12/92 to correct a */ + /* problem with the random number generator. The previous */ + /* random number generator had a short period and produced */ + /* singular matrices occasionally. */ + + n = 1000; + cray = .056f; + s_wsfe(&io___4); + e_wsfe(); + /* Computing 3rd power */ + d__1 = (real_type) n; + /* Computing 2nd power */ + d__2 = (real_type) n; + ops = boost::lexical_cast(real_type(d__1 * (d__1 * d__1) * 2. / 3. + d__2 * d__2 * 2.)); + + matgen_(a, &lda, &n, b, &norma); + + /* ****************************************************************** */ + /* ****************************************************************** */ + /* you should replace the call to dgefa and dgesl */ + /* by calls to your linear equation solver. */ + /* ****************************************************************** */ + /* ****************************************************************** */ + + t1 = second_(); + dgefa_(a, &lda, &n, ipvt, &info); + time[0] = second_() - t1; + t1 = second_(); + dgesl_(a, &lda, &n, ipvt, b, &c__0); + time[1] = second_() - t1; + total = time[0] + time[1]; + /* ****************************************************************** */ + /* ****************************************************************** */ + + /* compute a residual to verify results. */ + + i__1 = n; + for (i__ = 1; i__ <= i__1; ++i__) { + x[i__ - 1] = b[i__ - 1]; + /* L10: */ + } + matgen_(a, &lda, &n, b, &norma); + i__1 = n; + for (i__ = 1; i__ <= i__1; ++i__) { + b[i__ - 1] = -b[i__ - 1]; + /* L20: */ + } + dmxpy_(&n, b, &n, &lda, x, a); + resid = CAST_TO_RT(0); + normx = CAST_TO_RT(0); + i__1 = n; + for (i__ = 1; i__ <= i__1; ++i__) { + /* Computing MAX */ + d__2 = resid, d__3 = (d__1 = b[i__ - 1], abs(d__1)); + resid = max(d__2,d__3); + /* Computing MAX */ + d__2 = normx, d__3 = (d__1 = x[i__ - 1], abs(d__1)); + normx = max(d__2,d__3); + /* L30: */ + } + eps = epslon_(&c_b7); + residn = resid / (n * norma * normx * eps); + s_wsfe(&io___20); + e_wsfe(); + s_wsfe(&io___21); + /* + do_fio(&c__1, (char *)&residn, (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&resid, (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&eps, (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&x[0], (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&x[n - 1], (ftnlen)sizeof(real_type)); + */ + std::cout << std::setw(12) << std::setprecision(5) << residn << " " << resid << " " << eps << " " << x[0] << " " << x[n-1] << std::endl; + e_wsfe(); + + s_wsfe(&io___22); + do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer)); + e_wsfe(); + s_wsfe(&io___23); + e_wsfe(); + + time[2] = total; + time[3] = ops / (total * 1e6); + time[4] = 2. / time[3]; + time[5] = total / cray; + s_wsfe(&io___24); + do_fio(&c__1, (char *)&lda, (ftnlen)sizeof(integer)); + e_wsfe(); + s_wsfe(&io___25); + for (i__ = 1; i__ <= 6; ++i__) { + // do_fio(&c__1, (char *)&time[i__ - 1], (ftnlen)sizeof(real_type)); + std::cout << std::setw(12) << std::setprecision(5) << time[i__ - 1]; + } + e_wsfe(); + s_wsle(&io___26); + do_lio(&c__9, &c__1, " end of tests -- this version dated 10/12/92", ( + ftnlen)44); + e_wsle(); + + s_stop("", (ftnlen)0); + return 0; +} /* MAIN__ */ + +/* Subroutine */ int matgen_(real_type *a, integer *lda, integer *n, + real_type *b, real_type *norma) +{ + /* System generated locals */ + integer a_dim1, a_offset, i__1, i__2; + real_type d__1, d__2; + + /* Local variables */ + static integer i__, j; + extern real_type ran_(integer *); + static integer init[4]; + + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + --b; + + /* Function Body */ + init[0] = 1; + init[1] = 2; + init[2] = 3; + init[3] = 1325; + *norma = CAST_TO_RT(0); + i__1 = *n; + for (j = 1; j <= i__1; ++j) { + i__2 = *n; + for (i__ = 1; i__ <= i__2; ++i__) { + a[i__ + j * a_dim1] = ran_(init) - .5f; + /* Computing MAX */ + d__2 = (d__1 = a[i__ + j * a_dim1], abs(d__1)); + *norma = max(d__2,*norma); + /* L20: */ + } + /* L30: */ + } + i__1 = *n; + for (i__ = 1; i__ <= i__1; ++i__) { + b[i__] = CAST_TO_RT(0); + /* L35: */ + } + i__1 = *n; + for (j = 1; j <= i__1; ++j) { + i__2 = *n; + for (i__ = 1; i__ <= i__2; ++i__) { + b[i__] += a[i__ + j * a_dim1]; + /* L40: */ + } + /* L50: */ + } + return 0; +} /* matgen_ */ + +/* Subroutine */ int dgefa_(real_type *a, integer *lda, integer *n, integer * + ipvt, integer *info) +{ + /* System generated locals */ + integer a_dim1, a_offset, i__1, i__2, i__3; + + /* Local variables */ + static integer j, k, l; + static real_type t; + static integer kp1, nm1; + extern /* Subroutine */ int dscal_(integer *, real_type *, real_type *, + integer *), daxpy_(integer *, real_type *, real_type *, integer + *, real_type *, integer *); + extern integer idamax_(integer *, real_type *, integer *); + + + /* dgefa factors a double precision matrix by gaussian elimination. */ + + /* dgefa is usually called by dgeco, but it can be called */ + /* directly with a saving in time if rcond is not needed. */ + /* (time for dgeco) = (1 + 9/n)*(time for dgefa) . */ + + /* on entry */ + + /* a double precision(lda, n) */ + /* the matrix to be factored. */ + + /* lda integer */ + /* the leading dimension of the array a . */ + + /* n integer */ + /* the order of the matrix a . */ + + /* on return */ + + /* a an upper triangular matrix and the multipliers */ + /* which were used to obtain it. */ + /* the factorization can be written a = l*u where */ + /* l is a product of permutation and unit lower */ + /* triangular matrices and u is upper triangular. */ + + /* ipvt integer(n) */ + /* an integer vector of pivot indices. */ + + /* info integer */ + /* = 0 normal value. */ + /* = k if u(k,k) .eq. 0.0 . this is not an error */ + /* condition for this subroutine, but it does */ + /* indicate that dgesl or dgedi will divide by zero */ + /* if called. use rcond in dgeco for a reliable */ + /* indication of singularity. */ + + /* linpack. this version dated 08/14/78 . */ + /* cleve moler, university of new mexico, argonne national lab. */ + + /* subroutines and functions */ + + /* blas daxpy,dscal,idamax */ + + /* internal variables */ + + + + /* gaussian elimination with partial pivoting */ + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + --ipvt; + + /* Function Body */ + *info = 0; + nm1 = *n - 1; + if (nm1 < 1) { + goto L70; + } + i__1 = nm1; + for (k = 1; k <= i__1; ++k) { + kp1 = k + 1; + + /* find l = pivot index */ + + i__2 = *n - k + 1; + l = idamax_(&i__2, &a[k + k * a_dim1], &c__1) + k - 1; + ipvt[k] = l; + + /* zero pivot implies this column already triangularized */ + + if (a[l + k * a_dim1] == 0.) { + goto L40; + } + + /* interchange if necessary */ + + if (l == k) { + goto L10; + } + t = a[l + k * a_dim1]; + a[l + k * a_dim1] = a[k + k * a_dim1]; + a[k + k * a_dim1] = t; +L10: + + /* compute multipliers */ + + t = -1. / a[k + k * a_dim1]; + i__2 = *n - k; + dscal_(&i__2, &t, &a[k + 1 + k * a_dim1], &c__1); + + /* row elimination with column indexing */ + + i__2 = *n; + for (j = kp1; j <= i__2; ++j) { + t = a[l + j * a_dim1]; + if (l == k) { + goto L20; + } + a[l + j * a_dim1] = a[k + j * a_dim1]; + a[k + j * a_dim1] = t; +L20: + i__3 = *n - k; + daxpy_(&i__3, &t, &a[k + 1 + k * a_dim1], &c__1, &a[k + 1 + j * + a_dim1], &c__1); + /* L30: */ + } + goto L50; +L40: + *info = k; +L50: + /* L60: */ + ; + } +L70: + ipvt[*n] = *n; + if (a[*n + *n * a_dim1] == 0.) { + *info = *n; + } + return 0; +} /* dgefa_ */ + +/* Subroutine */ int dgesl_(real_type *a, integer *lda, integer *n, integer * + ipvt, real_type *b, integer *job) +{ + /* System generated locals */ + integer a_dim1, a_offset, i__1, i__2; + + /* Local variables */ + static integer k, l; + static real_type t; + static integer kb, nm1; + extern real_type ddot_(integer *, real_type *, integer *, real_type *, + integer *); + extern /* Subroutine */ int daxpy_(integer *, real_type *, real_type *, + integer *, real_type *, integer *); + + + /* dgesl solves the double precision system */ + /* a * x = b or trans(a) * x = b */ + /* using the factors computed by dgeco or dgefa. */ + + /* on entry */ + + /* a double precision(lda, n) */ + /* the output from dgeco or dgefa. */ + + /* lda integer */ + /* the leading dimension of the array a . */ + + /* n integer */ + /* the order of the matrix a . */ + + /* ipvt integer(n) */ + /* the pivot vector from dgeco or dgefa. */ + + /* b double precision(n) */ + /* the right hand side vector. */ + + /* job integer */ + /* = 0 to solve a*x = b , */ + /* = nonzero to solve trans(a)*x = b where */ + /* trans(a) is the transpose. */ + + /* on return */ + + /* b the solution vector x . */ + + /* error condition */ + + /* a division by zero will occur if the input factor contains a */ + /* zero on the diagonal. technically this indicates singularity */ + /* but it is often caused by improper arguments or improper */ + /* setting of lda . it will not occur if the subroutines are */ + /* called correctly and if dgeco has set rcond .gt. 0.0 */ + /* or dgefa has set info .eq. 0 . */ + + /* to compute inverse(a) * c where c is a matrix */ + /* with p columns */ + /* call dgeco(a,lda,n,ipvt,rcond,z) */ + /* if (rcond is too small) go to ... */ + /* do 10 j = 1, p */ + /* call dgesl(a,lda,n,ipvt,c(1,j),0) */ + /* 10 continue */ + + /* linpack. this version dated 08/14/78 . */ + /* cleve moler, university of new mexico, argonne national lab. */ + + /* subroutines and functions */ + + /* blas daxpy,ddot */ + + /* internal variables */ + + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + --ipvt; + --b; + + /* Function Body */ + nm1 = *n - 1; + if (*job != 0) { + goto L50; + } + + /* job = 0 , solve a * x = b */ + /* first solve l*y = b */ + + if (nm1 < 1) { + goto L30; + } + i__1 = nm1; + for (k = 1; k <= i__1; ++k) { + l = ipvt[k]; + t = b[l]; + if (l == k) { + goto L10; + } + b[l] = b[k]; + b[k] = t; +L10: + i__2 = *n - k; + daxpy_(&i__2, &t, &a[k + 1 + k * a_dim1], &c__1, &b[k + 1], &c__1); + /* L20: */ + } +L30: + + /* now solve u*x = y */ + + i__1 = *n; + for (kb = 1; kb <= i__1; ++kb) { + k = *n + 1 - kb; + b[k] /= a[k + k * a_dim1]; + t = -b[k]; + i__2 = k - 1; + daxpy_(&i__2, &t, &a[k * a_dim1 + 1], &c__1, &b[1], &c__1); + /* L40: */ + } + goto L100; +L50: + + /* job = nonzero, solve trans(a) * x = b */ + /* first solve trans(u)*y = b */ + + i__1 = *n; + for (k = 1; k <= i__1; ++k) { + i__2 = k - 1; + t = ddot_(&i__2, &a[k * a_dim1 + 1], &c__1, &b[1], &c__1); + b[k] = (b[k] - t) / a[k + k * a_dim1]; + /* L60: */ + } + + /* now solve trans(l)*x = y */ + + if (nm1 < 1) { + goto L90; + } + i__1 = nm1; + for (kb = 1; kb <= i__1; ++kb) { + k = *n - kb; + i__2 = *n - k; + b[k] += ddot_(&i__2, &a[k + 1 + k * a_dim1], &c__1, &b[k + 1], &c__1); + l = ipvt[k]; + if (l == k) { + goto L70; + } + t = b[l]; + b[l] = b[k]; + b[k] = t; +L70: + /* L80: */ + ; + } +L90: +L100: + return 0; +} /* dgesl_ */ + +/* Subroutine */ int daxpy_(integer *n, real_type *da, real_type *dx, + integer *incx, real_type *dy, integer *incy) +{ + /* System generated locals */ + integer i__1; + + /* Local variables */ + static integer i__, m, ix, iy, mp1; + + + /* constant times a vector plus a vector. */ + /* uses unrolled loops for increments equal to one. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dy; + --dx; + + /* Function Body */ + if (*n <= 0) { + return 0; + } + if (*da == 0.) { + return 0; + } + if (*incx == 1 && *incy == 1) { + goto L20; + } + + /* code for unequal increments or equal increments */ + /* not equal to 1 */ + + ix = 1; + iy = 1; + if (*incx < 0) { + ix = (-(*n) + 1) * *incx + 1; + } + if (*incy < 0) { + iy = (-(*n) + 1) * *incy + 1; + } + i__1 = *n; + for (i__ = 1; i__ <= i__1; ++i__) { + dy[iy] += *da * dx[ix]; + ix += *incx; + iy += *incy; + /* L10: */ + } + return 0; + + /* code for both increments equal to 1 */ + + + /* clean-up loop */ + +L20: + m = *n % 4; + if (m == 0) { + goto L40; + } + i__1 = m; + for (i__ = 1; i__ <= i__1; ++i__) { + dy[i__] += *da * dx[i__]; + /* L30: */ + } + if (*n < 4) { + return 0; + } +L40: + mp1 = m + 1; + i__1 = *n; + for (i__ = mp1; i__ <= i__1; i__ += 4) { + dy[i__] += *da * dx[i__]; + dy[i__ + 1] += *da * dx[i__ + 1]; + dy[i__ + 2] += *da * dx[i__ + 2]; + dy[i__ + 3] += *da * dx[i__ + 3]; + /* L50: */ + } + return 0; +} /* daxpy_ */ + +real_type ddot_(integer *n, real_type *dx, integer *incx, real_type *dy, + integer *incy) +{ + /* System generated locals */ + integer i__1; + real_type ret_val; + + /* Local variables */ + static integer i__, m, ix, iy, mp1; + static real_type dtemp; + + + /* forms the dot product of two vectors. */ + /* uses unrolled loops for increments equal to one. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dy; + --dx; + + /* Function Body */ + ret_val = CAST_TO_RT(0); + dtemp = CAST_TO_RT(0); + if (*n <= 0) { + return ret_val; + } + if (*incx == 1 && *incy == 1) { + goto L20; + } + + /* code for unequal increments or equal increments */ + /* not equal to 1 */ + + ix = 1; + iy = 1; + if (*incx < 0) { + ix = (-(*n) + 1) * *incx + 1; + } + if (*incy < 0) { + iy = (-(*n) + 1) * *incy + 1; + } + i__1 = *n; + for (i__ = 1; i__ <= i__1; ++i__) { + dtemp += dx[ix] * dy[iy]; + ix += *incx; + iy += *incy; + /* L10: */ + } + ret_val = dtemp; + return ret_val; + + /* code for both increments equal to 1 */ + + + /* clean-up loop */ + +L20: + m = *n % 5; + if (m == 0) { + goto L40; + } + i__1 = m; + for (i__ = 1; i__ <= i__1; ++i__) { + dtemp += dx[i__] * dy[i__]; + /* L30: */ + } + if (*n < 5) { + goto L60; + } +L40: + mp1 = m + 1; + i__1 = *n; + for (i__ = mp1; i__ <= i__1; i__ += 5) { + dtemp = dtemp + dx[i__] * dy[i__] + dx[i__ + 1] * dy[i__ + 1] + dx[ + i__ + 2] * dy[i__ + 2] + dx[i__ + 3] * dy[i__ + 3] + dx[i__ + + 4] * dy[i__ + 4]; + /* L50: */ + } +L60: + ret_val = dtemp; + return ret_val; +} /* ddot_ */ + +/* Subroutine */ int dscal_(integer *n, real_type *da, real_type *dx, + integer *incx) +{ + /* System generated locals */ + integer i__1, i__2; + + /* Local variables */ + static integer i__, m, mp1, nincx; + + + /* scales a vector by a constant. */ + /* uses unrolled loops for increment equal to one. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dx; + + /* Function Body */ + if (*n <= 0) { + return 0; + } + if (*incx == 1) { + goto L20; + } + + /* code for increment not equal to 1 */ + + nincx = *n * *incx; + i__1 = nincx; + i__2 = *incx; + for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) { + dx[i__] = *da * dx[i__]; + /* L10: */ + } + return 0; + + /* code for increment equal to 1 */ + + + /* clean-up loop */ + +L20: + m = *n % 5; + if (m == 0) { + goto L40; + } + i__2 = m; + for (i__ = 1; i__ <= i__2; ++i__) { + dx[i__] = *da * dx[i__]; + /* L30: */ + } + if (*n < 5) { + return 0; + } +L40: + mp1 = m + 1; + i__2 = *n; + for (i__ = mp1; i__ <= i__2; i__ += 5) { + dx[i__] = *da * dx[i__]; + dx[i__ + 1] = *da * dx[i__ + 1]; + dx[i__ + 2] = *da * dx[i__ + 2]; + dx[i__ + 3] = *da * dx[i__ + 3]; + dx[i__ + 4] = *da * dx[i__ + 4]; + /* L50: */ + } + return 0; +} /* dscal_ */ + +integer idamax_(integer *n, real_type *dx, integer *incx) +{ + /* System generated locals */ + integer ret_val, i__1; + real_type d__1; + + /* Local variables */ + static integer i__, ix; + static real_type dmax__; + + + /* finds the index of element having max. dabsolute value. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dx; + + /* Function Body */ + ret_val = 0; + if (*n < 1) { + return ret_val; + } + ret_val = 1; + if (*n == 1) { + return ret_val; + } + if (*incx == 1) { + goto L20; + } + + /* code for increment not equal to 1 */ + + ix = 1; + dmax__ = abs(dx[1]); + ix += *incx; + i__1 = *n; + for (i__ = 2; i__ <= i__1; ++i__) { + if ((d__1 = dx[ix], abs(d__1)) <= dmax__) { + goto L5; + } + ret_val = i__; + dmax__ = (d__1 = dx[ix], abs(d__1)); +L5: + ix += *incx; + /* L10: */ + } + return ret_val; + + /* code for increment equal to 1 */ + +L20: + dmax__ = abs(dx[1]); + i__1 = *n; + for (i__ = 2; i__ <= i__1; ++i__) { + if ((d__1 = dx[i__], abs(d__1)) <= dmax__) { + goto L30; + } + ret_val = i__; + dmax__ = (d__1 = dx[i__], abs(d__1)); +L30: + ; + } + return ret_val; +} /* idamax_ */ + +real_type epslon_(real_type *x) +{ +#ifdef TEST_BIG_NUMBER + return ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); +#elif defined(TEST_GMPXX) + return ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); +#else + return CAST_TO_RT(std::numeric_limits::epsilon()); +#endif +} /* epslon_ */ + +/* Subroutine */ int mm_(real_type *a, integer *lda, integer *n1, integer * + n3, real_type *b, integer *ldb, integer *n2, real_type *c__, + integer *ldc) +{ + /* System generated locals */ + integer a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset, i__1, i__2; + + /* Local variables */ + static integer i__, j; + extern /* Subroutine */ int dmxpy_(integer *, real_type *, integer *, + integer *, real_type *, real_type *); + + + /* purpose: */ + /* multiply matrix b times matrix c and store the result in matrix a. */ + + /* parameters: */ + + /* a double precision(lda,n3), matrix of n1 rows and n3 columns */ + + /* lda integer, leading dimension of array a */ + + /* n1 integer, number of rows in matrices a and b */ + + /* n3 integer, number of columns in matrices a and c */ + + /* b double precision(ldb,n2), matrix of n1 rows and n2 columns */ + + /* ldb integer, leading dimension of array b */ + + /* n2 integer, number of columns in matrix b, and number of rows in */ + /* matrix c */ + + /* c double precision(ldc,n3), matrix of n2 rows and n3 columns */ + + /* ldc integer, leading dimension of array c */ + + /* ---------------------------------------------------------------------- */ + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + b_dim1 = *ldb; + b_offset = 1 + b_dim1; + b -= b_offset; + c_dim1 = *ldc; + c_offset = 1 + c_dim1; + c__ -= c_offset; + + /* Function Body */ + i__1 = *n3; + for (j = 1; j <= i__1; ++j) { + i__2 = *n1; + for (i__ = 1; i__ <= i__2; ++i__) { + a[i__ + j * a_dim1] = CAST_TO_RT(0); + /* L10: */ + } + dmxpy_(n2, &a[j * a_dim1 + 1], n1, ldb, &c__[j * c_dim1 + 1], &b[ + b_offset]); + /* L20: */ + } + + return 0; +} /* mm_ */ + +/* Subroutine */ int dmxpy_(integer *n1, real_type *y, integer *n2, integer * + ldm, real_type *x, real_type *m) +{ + /* System generated locals */ + integer m_dim1, m_offset, i__1, i__2; + + /* Local variables */ + static integer i__, j, jmin; + + + /* purpose: */ + /* multiply matrix m times vector x and add the result to vector y. */ + + /* parameters: */ + + /* n1 integer, number of elements in vector y, and number of rows in */ + /* matrix m */ + + /* y double precision(n1), vector of length n1 to which is added */ + /* the product m*x */ + + /* n2 integer, number of elements in vector x, and number of columns */ + /* in matrix m */ + + /* ldm integer, leading dimension of array m */ + + /* x double precision(n2), vector of length n2 */ + + /* m double precision(ldm,n2), matrix of n1 rows and n2 columns */ + + /* ---------------------------------------------------------------------- */ + + /* cleanup odd vector */ + + /* Parameter adjustments */ + --y; + m_dim1 = *ldm; + m_offset = 1 + m_dim1; + m -= m_offset; + --x; + + /* Function Body */ + j = *n2 % 2; + if (j >= 1) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] += x[j] * m[i__ + j * m_dim1]; + /* L10: */ + } + } + + /* cleanup odd group of two vectors */ + + j = *n2 % 4; + if (j >= 2) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] = y[i__] + x[j - 1] * m[i__ + (j - 1) * m_dim1] + x[j] * m[ + i__ + j * m_dim1]; + /* L20: */ + } + } + + /* cleanup odd group of four vectors */ + + j = *n2 % 8; + if (j >= 4) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] = y[i__] + x[j - 3] * m[i__ + (j - 3) * m_dim1] + x[j - 2] + * m[i__ + (j - 2) * m_dim1] + x[j - 1] * m[i__ + (j - 1) * + m_dim1] + x[j] * m[i__ + j * m_dim1]; + /* L30: */ + } + } + + /* cleanup odd group of eight vectors */ + + j = *n2 % 16; + if (j >= 8) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] = y[i__] + x[j - 7] * m[i__ + (j - 7) * m_dim1] + x[j - 6] + * m[i__ + (j - 6) * m_dim1] + x[j - 5] * m[i__ + (j - 5) * + m_dim1] + x[j - 4] * m[i__ + (j - 4) * m_dim1] + x[j - 3] + * m[i__ + (j - 3) * m_dim1] + x[j - 2] * m[i__ + (j - 2) + * m_dim1] + x[j - 1] * m[i__ + (j - 1) * m_dim1] + x[j] * + m[i__ + j * m_dim1]; + /* L40: */ + } + } + + /* main loop - groups of sixteen vectors */ + + jmin = j + 16; + i__1 = *n2; + for (j = jmin; j <= i__1; j += 16) { + i__2 = *n1; + for (i__ = 1; i__ <= i__2; ++i__) { + y[i__] = y[i__] + x[j - 15] * m[i__ + (j - 15) * m_dim1] + x[j - + 14] * m[i__ + (j - 14) * m_dim1] + x[j - 13] * m[i__ + (j + - 13) * m_dim1] + x[j - 12] * m[i__ + (j - 12) * m_dim1] + + x[j - 11] * m[i__ + (j - 11) * m_dim1] + x[j - 10] * m[ + i__ + (j - 10) * m_dim1] + x[j - 9] * m[i__ + (j - 9) * + m_dim1] + x[j - 8] * m[i__ + (j - 8) * m_dim1] + x[j - 7] + * m[i__ + (j - 7) * m_dim1] + x[j - 6] * m[i__ + (j - 6) * + m_dim1] + x[j - 5] * m[i__ + (j - 5) * m_dim1] + x[j - 4] + * m[i__ + (j - 4) * m_dim1] + x[j - 3] * m[i__ + (j - 3) + * m_dim1] + x[j - 2] * m[i__ + (j - 2) * m_dim1] + x[j - + 1] * m[i__ + (j - 1) * m_dim1] + x[j] * m[i__ + j * + m_dim1]; + /* L50: */ + } + /* L60: */ + } + return 0; +} /* dmxpy_ */ + +real_type ran_(integer *iseed) +{ + /* System generated locals */ + real_type ret_val; + + /* Local variables */ + static integer it1, it2, it3, it4; + + + /* modified from the LAPACK auxiliary routine 10/12/92 JD */ + /* -- LAPACK auxiliary routine (version 1.0) -- */ + /* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */ + /* Courant Institute, Argonne National Lab, and Rice University */ + /* February 29, 1992 */ + + /* .. Array Arguments .. */ + /* .. */ + + /* Purpose */ + /* ======= */ + + /* DLARAN returns a random double number from a uniform (0,1) */ + /* distribution. */ + + /* Arguments */ + /* ========= */ + + /* ISEED (input/output) INTEGER array, dimension (4) */ + /* On entry, the seed of the random number generator; the array */ + /* elements must be between 0 and 4095, and ISEED(4) must be */ + /* odd. */ + /* On exit, the seed is updated. */ + + /* Further Details */ + /* =============== */ + + /* This routine uses a multiplicative congruential method with modulus */ + /* 2**48 and multiplier 33952834046453 (see G.S.Fishman, */ + /* 'Multiplicative congruential random number generators with modulus */ + /* 2**b: an exhaustive analysis for b = 32 and a partial analysis for */ + /* b = 48', Math. Comp. 189, pp 331-344, 1990). */ + + /* 48-bit integers are stored in 4 integer array elements with 12 bits */ + /* per element. Hence the routine is portable across machines with */ + /* integers of 32 bits or more. */ + + /* .. Parameters .. */ + /* .. */ + /* .. Local Scalars .. */ + /* .. */ + /* .. Intrinsic Functions .. */ + /* .. */ + /* .. Executable Statements .. */ + + /* multiply the seed by the multiplier modulo 2**48 */ + + /* Parameter adjustments */ + --iseed; + + /* Function Body */ + it4 = iseed[4] * 2549; + it3 = it4 / 4096; + it4 -= it3 << 12; + it3 = it3 + iseed[3] * 2549 + iseed[4] * 2508; + it2 = it3 / 4096; + it3 -= it2 << 12; + it2 = it2 + iseed[2] * 2549 + iseed[3] * 2508 + iseed[4] * 322; + it1 = it2 / 4096; + it2 -= it1 << 12; + it1 = it1 + iseed[1] * 2549 + iseed[2] * 2508 + iseed[3] * 322 + iseed[4] + * 494; + it1 %= 4096; + + /* return updated seed */ + + iseed[1] = it1; + iseed[2] = it2; + iseed[3] = it3; + iseed[4] = it4; + + /* convert 48-bit integer to a double number in the interval (0,1) */ + + ret_val = ((real_type) it1 + ((real_type) it2 + ((real_type) it3 + ( + real_type) it4 * 2.44140625e-4) * 2.44140625e-4) * 2.44140625e-4) + * 2.44140625e-4; + return ret_val; + + /* End of RAN */ + +} /* ran_ */ + +/* + +Double results: +~~~~~~~~~~~~~~ + +norm. resid resid machep x(1) x(n) +6.4915 7.207e-013 2.2204e-016 1 1 + + + +times are reported for matrices of order 1000 +factor solve total mflops unit ratio +times for array with leading dimension of1001 +1.443 0.003 1.446 462.43 0.004325 25.821 + + +mpf_class results: +~~~~~~~~~~~~~~~~~~ + +norm. resid resid machep x(1) x(n) +3.6575e-05 5.2257e-103 2.8575e-101 1 1 + + + +times are reported for matrices of order 1000 +factor solve total mflops unit ratio +times for array with leading dimension of1001 +266.45 0.798 267.24 2.5021 0.79933 4772.2 + + +big_number >: +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + norm. resid resid machep x(1) x(n) + 0.36575e-4 0.52257e-102 0.28575e-100 0.1e1 0.1e1 + + + + times are reported for matrices of order 1000 + factor solve total mflops unit ratio + times for array with leading dimension of1001 + 279.96 0.84 280.8 2.3813 0.83988 5014.3 + +boost::math::ef::e_float: +~~~~~~~~~~~~~~~~~~~~~~~~~ + + norm. resid resid machep x(1) x(n) + 2.551330735e-16 1.275665107e-112 1e-99 1 1 + + + + times are reported for matrices of order 1000 + factor solve total mflops unit ratio + times for array with leading dimension of1001 + 363.89 1.074 364.97 1.8321 1.0916 6517.3 +*/ diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index fa2fc9c6..99436325 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -4,10 +4,8 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ #include -#include -#include -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) # define TEST_MPF50 # define TEST_MPF # define TEST_BACKEND @@ -22,6 +20,17 @@ #endif +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#include +#endif + template void test_integer_ops(const boost::mpl::false_&){} @@ -83,9 +92,12 @@ void test_real_ops(const boost::mpl::true_&) BOOST_TEST(ceil(Real(5) / 2) == 3); BOOST_TEST(floor(Real(-5) / 2) == -3); BOOST_TEST(ceil(Real(-5) / 2) == -2); +#ifndef TEST_E_FLOAT BOOST_TEST(trunc(Real(5) / 2) == 2); BOOST_TEST(trunc(Real(-5) / 2) == -2); +#endif +#ifndef TEST_E_FLOAT // // ldexp and frexp, these pretty much have to implemented by each backend: // @@ -100,6 +112,7 @@ void test_real_ops(const boost::mpl::true_&) r = frexp(v, &exp); BOOST_TEST(r == 0.5); BOOST_TEST(exp == -8); +#endif } template @@ -347,8 +360,10 @@ void test() ac = a * ac; BOOST_TEST(ac == 8*8); ac = a; +#ifndef TEST_E_FLOAT ac = ac + "8"; BOOST_TEST(ac == 16); +#endif ac = a; ac += +a; BOOST_TEST(ac == 16); @@ -362,8 +377,10 @@ void test() ac += b*c; BOOST_TEST(ac == 8 + 64 * 500); ac = a; +#ifndef TEST_E_FLOAT ac = ac - "8"; BOOST_TEST(ac == 0); +#endif ac = a; ac -= +a; BOOST_TEST(ac == 0); @@ -382,8 +399,12 @@ void test() ac = a; ac -= ac * b; BOOST_TEST(ac == 8 - 8 * 64); +#ifndef TEST_E_FLOAT ac = a * "8"; BOOST_TEST(ac == 64); +#else + ac = a * 8; +#endif ac *= +a; BOOST_TEST(ac == 64 * 8); ac = a; @@ -398,8 +419,10 @@ void test() ac = a; ac *= b + c; BOOST_TEST(ac == 8 * (64 + 500)); +#ifndef TEST_E_FLOAT ac = b / "8"; BOOST_TEST(ac == 8); +#endif ac = b; ac /= +a; BOOST_TEST(ac == 8); @@ -412,8 +435,10 @@ void test() ac = b; ac /= a + Real(0); BOOST_TEST(ac == 8); +#ifndef TEST_E_FLOAT ac = a + std::string("8"); BOOST_TEST(ac == 16); +#endif // // Comparisons: // @@ -484,6 +509,9 @@ int main() #endif #ifdef TEST_MPZ test(); +#endif +#ifdef TEST_E_FLOAT + test(); #endif return boost::report_errors(); } From dc54f251a4b4aa141294cdf5a6ab4c636e7db13b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 11 Aug 2011 16:09:23 +0000 Subject: [PATCH 007/256] Fix code to compile with GCC. [SVN r73660] --- include/boost/math/big_number/gmp.hpp | 10 +++---- math/test/linpack-benchmark.cpp | 38 +++++++++++---------------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index cba6ed56..95fddb04 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -313,9 +313,9 @@ struct gmp_real : public detail::gmp_real_imp { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } - gmp_real(const gmp_real& o) : gmp_real_imp(o) {} + gmp_real(const gmp_real& o) : detail::gmp_real_imp(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real(gmp_real&& o) : gmp_real_imp(o) {} + gmp_real(gmp_real&& o) : detail::gmp_real_imp(o) {} #endif gmp_real& operator=(const gmp_real& o) { @@ -348,9 +348,9 @@ struct gmp_real<0> : public detail::gmp_real_imp<0> { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } - gmp_real(const gmp_real& o) : gmp_real_imp(o) {} + gmp_real(const gmp_real& o) : detail::gmp_real_imp<0>(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real(gmp_real&& o) : gmp_real_imp(o) {} + gmp_real(gmp_real&& o) : detail::gmp_real_imp<0>(o) {} #endif gmp_real(const gmp_real& o, unsigned digits10) { @@ -467,7 +467,7 @@ template big_number > frexp(const big_number >& val, long* e) { mpf_get_d_2exp(e, val.backend().data()); - return ldexp(val, -*v); + return ldexp(val, -*e); } struct gmp_int diff --git a/math/test/linpack-benchmark.cpp b/math/test/linpack-benchmark.cpp index c2c1d054..bf5300fb 100644 --- a/math/test/linpack-benchmark.cpp +++ b/math/test/linpack-benchmark.cpp @@ -17,6 +17,7 @@ http://www.netlib.org/f2c/libf2c.zip #include #include #include +#include #ifdef TEST_BIG_NUMBER #include typedef boost::math::mpf_real_100 real_type; @@ -82,8 +83,20 @@ inline double second_(void) return ((double)(clock())) / CLOCKS_PER_SEC; } +int dgefa_(real_type *, integer *, integer *, integer *, integer *), dgesl_(real_type *, integer *, integer *, integer *, real_type *, integer *); +int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type *); +int matgen_(real_type *, integer *, integer *, real_type *, real_type *); +real_type epslon_(real_type *); +real_type ran_(integer *); +int dscal_(integer *, real_type *, real_type *, integer *); +int daxpy_(integer *, real_type *, real_type *, integer *, real_type *, integer *); +integer idamax_(integer *, real_type *, integer *); +real_type ddot_(integer *, real_type *, integer *, real_type *, integer *); +int daxpy_(integer *, real_type *, real_type *, integer *, real_type *, integer *); +int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type *); -int main() + +extern "C" int MAIN__() { #ifdef TEST_BIG_NUMBER std::cout << "Testing big_number >" << std::endl; @@ -133,17 +146,9 @@ int main() static integer info; static double time[6], cray, total; static integer ipvt[1000]; - extern /* Subroutine */ int dgefa_(real_type *, integer *, integer *, - integer *, integer *), dgesl_(real_type *, integer *, integer *, - integer *, real_type *, integer *); static real_type resid, norma; - extern /* Subroutine */ int dmxpy_(integer *, real_type *, integer *, - integer *, real_type *, real_type *); static real_type normx; - extern /* Subroutine */ int matgen_(real_type *, integer *, integer *, - real_type *, real_type *); static real_type residn; - extern real_type epslon_(real_type *); /* Fortran I/O blocks */ static cilist io___4 = { 0, 6, 0, fmt_1, 0 }; @@ -270,7 +275,6 @@ int main() /* Local variables */ static integer i__, j; - extern real_type ran_(integer *); static integer init[4]; @@ -325,10 +329,6 @@ int main() static integer j, k, l; static real_type t; static integer kp1, nm1; - extern /* Subroutine */ int dscal_(integer *, real_type *, real_type *, - integer *), daxpy_(integer *, real_type *, real_type *, integer - *, real_type *, integer *); - extern integer idamax_(integer *, real_type *, integer *); /* dgefa factors a double precision matrix by gaussian elimination. */ @@ -465,10 +465,6 @@ L70: static integer k, l; static real_type t; static integer kb, nm1; - extern real_type ddot_(integer *, real_type *, integer *, real_type *, - integer *); - extern /* Subroutine */ int daxpy_(integer *, real_type *, real_type *, - integer *, real_type *, integer *); /* dgesl solves the double precision system */ @@ -917,9 +913,9 @@ L30: real_type epslon_(real_type *x) { #ifdef TEST_BIG_NUMBER - return ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); + return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); #elif defined(TEST_GMPXX) - return ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); + return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); #else return CAST_TO_RT(std::numeric_limits::epsilon()); #endif @@ -934,8 +930,6 @@ real_type epslon_(real_type *x) /* Local variables */ static integer i__, j; - extern /* Subroutine */ int dmxpy_(integer *, real_type *, integer *, - integer *, real_type *, real_type *); /* purpose: */ From 4760f643cd7d05326489b341ccd1439ea3de9297 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 16 Aug 2011 18:02:03 +0000 Subject: [PATCH 008/256] Change backend concepts to allow for easier default implementations, plus out-of-place arithmetic as well as in-place. Change non-member functions to use expression templates with result value passed to the function as "workspace". [SVN r73819] --- include/boost/math/big_number.hpp | 564 +++++-------- .../boost/math/big_number/big_number_base.hpp | 463 +++++++++++ include/boost/math/big_number/default_ops.hpp | 302 +++++++ include/boost/math/big_number/gmp.hpp | 779 +++++++++++------- .../math/concepts/big_number_architypes.hpp | 248 +----- math/test/linpack-benchmark.cpp | 1 + math/test/test_arithmetic.cpp | 97 ++- 7 files changed, 1562 insertions(+), 892 deletions(-) create mode 100644 include/boost/math/big_number/big_number_base.hpp create mode 100644 include/boost/math/big_number/default_ops.hpp diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index f9a7c98b..434ddb79 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -17,156 +17,10 @@ #include #include #include +#include namespace boost{ namespace math{ -template -class big_number; - -namespace detail{ - -// Forward-declare an expression wrapper -template -struct big_number_exp; -// -// Declare our grammars: -// -struct big_number_grammar - : proto::or_< - proto::terminal< proto::_ > - , proto::plus< big_number_grammar, big_number_grammar > - , proto::multiplies< big_number_grammar, big_number_grammar > - , proto::minus< big_number_grammar, big_number_grammar > - , proto::divides< big_number_grammar, big_number_grammar > - , proto::unary_plus< big_number_grammar > - , proto::negate< big_number_grammar > - , proto::modulus - > -{}; - -// Define a calculator domain. Expression within -// the calculator domain will be wrapped in the -// calculator<> expression wrapper. -struct big_number_domain - : proto::domain< proto::generator, big_number_grammar> -{}; - -template -struct big_number_exp - : proto::extends, big_number_domain> -{ - typedef - proto::extends, big_number_domain> base_type; - - big_number_exp(Expr const &expr = Expr()) - : base_type(expr) - {} - template - big_number_exp(const Other& o) - : base_type(o) - {} -}; - -struct CalcDepth - : proto::or_< - proto::when< proto::terminal, - mpl::int_<0>() - > - , proto::when< proto::unary_expr, - CalcDepth(proto::_child) - > - , proto::when< proto::binary_expr, - mpl::plus, mpl::int_<1> >() - > - > -{}; - -template -struct has_enough_bits -{ - template - struct type : public mpl::bool_::digits >= b>{}; -}; - -template -struct canonical_imp -{ - typedef Val type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::signed_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::unsigned_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::real_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef const char* type; -}; - -template -struct canonical -{ - typedef typename mpl::if_< - is_signed, - mpl::int_<0>, - typename mpl::if_< - is_unsigned, - mpl::int_<1>, - typename mpl::if_< - is_floating_point, - mpl::int_<2>, - typename mpl::if_< - mpl::or_< - is_convertible, - is_same - >, - mpl::int_<3>, - mpl::int_<4> - >::type - >::type - >::type - >::type tag_type; - - typedef typename canonical_imp::type type; -}; - -} // namespace detail - -// -// Traits class, lets us know whether a backend is an integer type, otherwise assumed to be a real number type: -// -template -struct is_extended_integer : public mpl::false_ {}; -template -struct is_extended_integer > : public is_extended_integer{}; - template class big_number : public detail::big_number_exp*>::type > { @@ -207,7 +61,7 @@ public: template big_number& operator=(const detail::big_number_exp& e) { - do_assign(e, typename proto::tag_of::type()); + do_assign(e, typename detail::assign_and_eval::type()); return *this; } @@ -230,7 +84,7 @@ public: { proto::value(*this) = this; BOOST_ASSERT(proto::value(*this) == this); - do_assign(e, typename proto::tag_of::type()); + do_assign(e, typename detail::assign_and_eval::type()); } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -267,7 +121,8 @@ public: typename enable_if, big_number& >::type operator+=(const V& v) { - do_add_value(canonical_value(v), mpl::false_()); + using big_num_default_ops::add; + add(m_backend, canonical_value(v)); return *this; } @@ -291,7 +146,8 @@ public: typename enable_if, big_number& >::type operator-=(const V& v) { - do_subtract_value(canonical_value(v), mpl::false_()); + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(v)); return *this; } @@ -316,7 +172,8 @@ public: typename enable_if, big_number& >::type operator*=(const V& v) { - do_multiplies_value(canonical_value(v), mpl::false_()); + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(v)); return *this; } @@ -342,7 +199,8 @@ public: operator%=(const V& v) { BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); - do_modulus_value(canonical_value(v), mpl::false_()); + using big_num_default_ops::modulus; + modulus(m_backend, canonical_value(v)); return *this; } @@ -366,16 +224,17 @@ public: typename enable_if, big_number& >::type operator/=(const V& v) { - do_divide_value(canonical_value(v), mpl::false_()); + using big_num_default_ops::divide; + divide(m_backend, canonical_value(v)); return *this; } // // String conversion functions: // - std::string str(unsigned digits = 0)const + std::string str(unsigned digits = 0, bool scientific = true)const { - return m_backend.str(digits); + return m_backend.str(digits, scientific); } // // Default precision: @@ -417,18 +276,103 @@ public: return m_backend; } private: + template + void do_assign(const Exp& e, const detail::add_immediates&) + { + using big_num_default_ops::add; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + add(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + + template + void do_assign(const Exp& e, const detail::add_and_negate_immediates&) + { + using big_num_default_ops::add; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + add(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + m_backend.negate(); + } + + template + void do_assign(const Exp& e, const detail::subtract_immediates&) + { + using big_num_default_ops::subtract; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + subtract(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + + template + void do_assign(const Exp& e, const detail::subtract_and_negate_immediates&) + { + using big_num_default_ops::subtract; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + subtract(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + m_backend.negate(); + } + + template + void do_assign(const Exp& e, const detail::multiply_immediates&) + { + using big_num_default_ops::multiply; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + multiply(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + + template + void do_assign(const Exp& e, const detail::multiply_and_negate_immediates&) + { + using big_num_default_ops::multiply; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + multiply(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + m_backend.negate(); + } + + template + void do_assign(const Exp& e, const detail::divide_immediates&) + { + using big_num_default_ops::divide; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + divide(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + + template + void do_assign(const Exp& e, const detail::divide_and_negate_immediates&) + { + using big_num_default_ops::divide; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + divide(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + m_backend.negate(); + } + + template + void do_assign(const Exp& e, const detail::modulus_immediates&) + { + using big_num_default_ops::modulus; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + modulus(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + template void do_assign(const Exp& e, const proto::tag::unary_plus&) { typedef typename proto::result_of::left::type left_type; - do_assign(proto::left(e), typename proto::tag_of::type()); + do_assign(proto::left(e), typename detail::assign_and_eval::type()); } template void do_assign(const Exp& e, const proto::tag::negate&) { typedef typename proto::result_of::left::type left_type; - do_assign(proto::left(e), typename proto::tag_of::type()); + do_assign(proto::left(e), typename detail::assign_and_eval::type()); m_backend.negate(); } @@ -461,12 +405,12 @@ private: } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename proto::tag_of::type()); + do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_add(proto::right(e), typename proto::tag_of::type()); } else { - do_assign(proto::right(e), typename proto::tag_of::type()); + do_assign(proto::right(e), typename detail::assign_and_eval::type()); do_add(proto::left(e), typename proto::tag_of::type()); } } @@ -500,12 +444,12 @@ private: } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename proto::tag_of::type()); + do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_subtract(proto::right(e), typename proto::tag_of::type()); } else { - do_assign(proto::right(e), typename proto::tag_of::type()); + do_assign(proto::right(e), typename detail::assign_and_eval::type()); do_subtract(proto::left(e), typename proto::tag_of::type()); m_backend.negate(); } @@ -539,12 +483,12 @@ private: } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename proto::tag_of::type()); + do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_multiplies(proto::right(e), typename proto::tag_of::type()); } else { - do_assign(proto::right(e), typename proto::tag_of::type()); + do_assign(proto::right(e), typename detail::assign_and_eval::type()); do_multiplies(proto::left(e), typename proto::tag_of::type()); } } @@ -572,7 +516,7 @@ private: } else { - do_assign(proto::left(e), typename proto::tag_of::type()); + do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_divide(proto::right(e), typename proto::tag_of::type()); } } @@ -605,7 +549,7 @@ private: } else { - do_assign(proto::left(e), typename proto::tag_of::type()); + do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_modulus(proto::right(e), typename proto::tag_of::type()); } } @@ -617,28 +561,55 @@ private: m_backend = canonical_value(proto::value(e)); } } + template + void do_assign(const Exp& e, const proto::tag::function&) + { + typedef typename proto::arity_of::type tag_type; + do_assign_function(e, tag_type()); + } + template + void do_assign_function(const Exp& e, const mpl::long_<1>&) + { + proto::value(proto::left(e))(&m_backend); + } + template + void do_assign_function(const Exp& e, const mpl::long_<2>&) + { + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type tag_type; + do_assign_function_1(proto::value(proto::left(e)), proto::right(e), tag_type()); + } + template + void do_assign_function_1(const F& f, const Exp& val, const proto::tag::terminal&) + { + f(&m_backend, canonical_value(proto::value(val))); + } + template + void do_assign_function_1(const F& f, const Exp& val, const Tag&) + { + big_number t(val); + f(&m_backend, t.backend()); + } + template + void do_assign_function(const Exp& e, const mpl::long_<3>&) + { + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type tag_type; + typedef typename proto::result_of::child_c::type end_type; + typedef typename proto::tag_of::type end_tag; + do_assign_function_2(proto::value(proto::left(e)), proto::right(e), proto::child_c<2>(e), tag_type(), end_tag()); + } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const proto::tag::terminal&, const proto::tag::terminal&) + { + f(&m_backend, canonical_value(proto::value(val1)), canonical_value(proto::value(val2))); + } template void do_add(const Exp& e, const proto::tag::terminal&) { - typedef typename proto::result_of::value::type t1; - typedef typename remove_reference::type t2; - typedef typename remove_cv::type t3; - typedef typename detail::canonical::type t4; - typedef typename is_convertible::type tag; - do_add_value(canonical_value(proto::value(e)), tag()); - } - - template - void do_add_value(const V& v, const mpl::false_&) - { - m_backend += v; - } - template - void do_add_value(const V& v, const mpl::true_&) - { - self_type temp(v); - m_backend += temp.m_backend; + using big_num_default_ops::add; + add(m_backend, canonical_value(proto::value(e))); } template @@ -683,24 +654,8 @@ private: template void do_subtract(const Exp& e, const proto::tag::terminal&) { - typedef typename proto::result_of::value::type t1; - typedef typename remove_reference::type t2; - typedef typename remove_cv::type t3; - typedef typename detail::canonical::type t4; - typedef typename is_convertible::type tag; - do_subtract_value(canonical_value(proto::value(e)), tag()); - } - - template - void do_subtract_value(const V& v, const mpl::false_&) - { - m_backend -= v; - } - template - void do_subtract_value(const V& v, const mpl::true_&) - { - self_type temp(v); - m_backend -= temp.m_backend; + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(proto::value(e))); } template @@ -745,25 +700,8 @@ private: template void do_multiplies(const Exp& e, const proto::tag::terminal&) { - typedef typename proto::result_of::value::type t1; - typedef typename remove_reference::type t2; - typedef typename remove_cv::type t3; - typedef typename detail::canonical::type t4; - typedef typename is_convertible::type tag; - do_multiplies_value(canonical_value(proto::value(e)), tag()); - } - - template - void do_multiplies_value(const Val& v, const mpl::false_&) - { - m_backend *= v; - } - - template - void do_multiplies_value(const Val& e, const mpl::true_&) - { - self_type temp(e); - m_backend *= temp.m_backend; + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(proto::value(e))); } template @@ -802,32 +740,16 @@ private: template void do_multiplies(const Exp& e, const unknown&) { + using big_num_default_ops::multiply; self_type temp(e); - m_backend *= temp.m_backend; + multiply(m_backend, temp.m_backend); } template void do_divide(const Exp& e, const proto::tag::terminal&) { - typedef typename proto::result_of::value::type t1; - typedef typename remove_reference::type t2; - typedef typename remove_cv::type t3; - typedef typename detail::canonical::type t4; - typedef typename is_convertible::type tag; - do_divide_value(canonical_value(proto::value(e)), tag()); - } - - template - void do_divide_value(const Val& v, const mpl::false_&) - { - m_backend /= v; - } - - template - void do_divide_value(const Val& e, const mpl::true_&) - { - self_type temp(e); - m_backend /= temp.m_backend; + using big_num_default_ops::divide; + divide(m_backend, canonical_value(proto::value(e))); } template @@ -866,39 +788,24 @@ private: template void do_divide(const Exp& e, const unknown&) { + using big_num_default_ops::multiply; self_type temp(e); - m_backend /= temp.m_backend; + divide(m_backend, temp.m_backend); } template void do_modulus(const Exp& e, const proto::tag::terminal&) { - typedef typename proto::result_of::value::type t1; - typedef typename remove_reference::type t2; - typedef typename remove_cv::type t3; - typedef typename detail::canonical::type t4; - typedef typename is_convertible::type tag; - do_modulus_value(canonical_value(proto::value(e)), tag()); - } - - template - void do_modulus_value(const Val& v, const mpl::false_&) - { - m_backend %= v; - } - - template - void do_modulus_value(const Val& e, const mpl::true_&) - { - self_type temp(e); - m_backend %= temp.m_backend; + using big_num_default_ops::modulus; + modulus(m_backend, canonical_value(proto::value(e))); } template void do_modulus(const Exp& e, const Unknown&) { + using big_num_default_ops::modulus; self_type temp(e); - do_modulus_value(canonical_value(proto::value(temp)), mpl::false_()); + modulus(m_backend, canonical_value(proto::value(temp))); } // Tests if the expression contains a reference to *this: @@ -953,6 +860,19 @@ private: { return v == this; } + template + static typename detail::underlying_result::type underlying_value(const big_number_exp& e, const proto::tag::terminal&) + { + return proto::value(e); + } + template + static typename detail::underlying_result::type + underlying_value(const big_number_exp& e, const tag&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::tag_of::type tag_type; + return underlying_value(proto::left(e), tag_type()); + } static const Backend& canonical_value(const self_type& v){ return v.m_backend; } static const Backend& canonical_value(const self_type* v){ return v->m_backend; } @@ -967,72 +887,6 @@ private: namespace detail { -template -struct combine_expression_type -{ - typedef void type; -}; - -template -struct combine_expression_type, boost::math::big_number > -{ - typedef boost::math::big_number type; -}; - -template -struct combine_expression_type, Exp> -{ - typedef boost::math::big_number type; -}; - -template -struct combine_expression_type > -{ - typedef boost::math::big_number type; -}; - -template -struct is_big_number : public mpl::false_{}; -template -struct is_big_number > : public mpl::true_{}; -template -struct is_big_number_exp : public mpl::false_{}; -template -struct is_big_number_exp > : public mpl::true_{}; - - -template -struct expression_type_imp; - -template -struct expression_type_imp -{ - typedef typename remove_pointer::type>::type type; -}; - -template -struct expression_type_imp -{ - typedef typename proto::result_of::left::type nested_type; - typedef typename expression_type_imp::value>::type type; -}; - -template -struct expression_type_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename expression_type_imp::value>::type left_result; - typedef typename expression_type_imp::value>::type right_result; - typedef typename combine_expression_type::type type; -}; - -template -struct expression_type -{ - typedef typename expression_type_imp::value>::type type; -}; - template inline int big_number_compare(const big_number& a, const big_number& b) { @@ -1164,13 +1018,20 @@ inline typename boost::enable_if, bool>: } template -std::ostream& operator << (std::ostream& os, const big_number& r) +inline std::ostream& operator << (std::ostream& os, const big_number& r) { - return os << r.str(static_cast(os.precision())); + return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); +} +template +inline std::ostream& operator << (std::ostream& os, const detail::big_number_exp& r) +{ + typedef typename detail::expression_type::type value_type; + value_type temp(r); + return os << temp; } template -std::istream& operator >> (std::istream& is, big_number& r) +inline std::istream& operator >> (std::istream& is, big_number& r) { std::string s; is >> s; @@ -1178,47 +1039,6 @@ std::istream& operator >> (std::istream& is, big_number& r) return is; } -// -// Non-member functions accepting an expression-template as argument: -// -#undef sqrt -template -typename boost::math::detail::expression_type::type sqrt(const detail::big_number_exp& val) -{ - typedef typename detail::expression_type::type result_type; - return sqrt(result_type(val)); -} -template -typename detail::expression_type::type abs(const detail::big_number_exp& val) -{ - typedef typename detail::expression_type::type result_type; - return abs(result_type(val)); -} -template -typename detail::expression_type::type fabs(const detail::big_number_exp& val) -{ - typedef typename detail::expression_type::type result_type; - return fabs(result_type(val)); -} -template -typename detail::expression_type::type ceil(const detail::big_number_exp& val) -{ - typedef typename detail::expression_type::type result_type; - return ceil(result_type(val)); -} -template -typename detail::expression_type::type floor(const detail::big_number_exp& val) -{ - typedef typename detail::expression_type::type result_type; - return floor(result_type(val)); -} -template -typename detail::expression_type::type trunc(const detail::big_number_exp& val) -{ - typedef typename detail::expression_type::type result_type; - return trunc(result_type(val)); -} - }} // namespaces #endif diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp new file mode 100644 index 00000000..b3caed30 --- /dev/null +++ b/include/boost/math/big_number/big_number_base.hpp @@ -0,0 +1,463 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_BIG_NUM_BASE_HPP +#define BOOST_MATH_BIG_NUM_BASE_HPP + +namespace boost{ namespace math{ + +template +class big_number; + +namespace detail{ + +// Forward-declare an expression wrapper +template +struct big_number_exp; +// +// Declare our grammars: +// +struct big_number_grammar + : proto::or_< + proto::terminal< proto::_ > + , proto::plus< big_number_grammar, big_number_grammar > + , proto::multiplies< big_number_grammar, big_number_grammar > + , proto::minus< big_number_grammar, big_number_grammar > + , proto::divides< big_number_grammar, big_number_grammar > + , proto::unary_plus< big_number_grammar > + , proto::negate< big_number_grammar > + , proto::modulus + > +{}; + +// Define a calculator domain. Expression within +// the calculator domain will be wrapped in the +// calculator<> expression wrapper. +struct big_number_domain + : proto::domain< proto::generator, big_number_grammar> +{}; + +template +struct big_number_exp + : proto::extends, big_number_domain> +{ + typedef + proto::extends, big_number_domain> base_type; + + big_number_exp(Expr const &expr = Expr()) + : base_type(expr) + {} + template + big_number_exp(const Other& o) + : base_type(o) + {} +}; + +struct CalcDepth + : proto::or_< + proto::when< proto::terminal, + mpl::int_<0>() + > + , proto::when< proto::unary_expr, + CalcDepth(proto::_child) + > + , proto::when< proto::binary_expr, + mpl::plus, mpl::int_<1> >() + > + > +{}; + +template +struct has_enough_bits +{ + template + struct type : public mpl::bool_::digits >= b>{}; +}; + +template +struct canonical_imp +{ + typedef Val type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::signed_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::unsigned_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::real_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef const char* type; +}; + +template +struct canonical +{ + typedef typename mpl::if_< + is_signed, + mpl::int_<0>, + typename mpl::if_< + is_unsigned, + mpl::int_<1>, + typename mpl::if_< + is_floating_point, + mpl::int_<2>, + typename mpl::if_< + mpl::or_< + is_convertible, + is_same + >, + mpl::int_<3>, + mpl::int_<4> + >::type + >::type + >::type + >::type tag_type; + + typedef typename canonical_imp::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef tag type; +}; + +struct add_immediates{}; +struct add_and_negate_immediates{}; +struct subtract_immediates{}; +struct subtract_and_negate_immediates{}; +struct multiply_immediates{}; +struct multiply_and_negate_immediates{}; +struct divide_immediates{}; +struct divide_and_negate_immediates{}; +struct modulus_immediates{}; + +struct immediate{}; +struct negative_immediate{}; + +template +struct immediate_type +{ + typedef tag type; +}; +template +struct immediate_type +{ + typedef immediate type; +}; +template +struct immediate_type +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::tag_of::type left_tag; + typedef typename mpl::if_< + is_same, + immediate, + left_tag + >::type type; +}; +template +struct immediate_type +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::tag_of::type left_tag; + typedef typename immediate_type::type tag; + typedef typename mpl::if_< + is_same, + negative_immediate, + tag + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + add_immediates, + typename mpl::if_< + mpl::and_, is_same >, + subtract_immediates, + typename mpl::if_< + mpl::and_, is_same >, + subtract_and_negate_immediates, + typename mpl::if_< + mpl::and_, is_same >, + add_and_negate_immediates, + proto::tag::plus + >::type + >::type + >::type + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + subtract_immediates, + typename mpl::if_< + mpl::and_, is_same >, + add_immediates, + typename mpl::if_< + mpl::and_, is_same >, + add_and_negate_immediates, + typename mpl::if_< + mpl::and_, is_same >, + subtract_and_negate_immediates, + proto::tag::minus + >::type + >::type + >::type + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + multiply_immediates, + typename mpl::if_< + mpl::and_, is_same >, + multiply_and_negate_immediates, + typename mpl::if_< + mpl::and_, is_same >, + multiply_and_negate_immediates, + typename mpl::if_< + mpl::and_, is_same >, + multiply_immediates, + proto::tag::multiplies + >::type + >::type + >::type + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + divide_immediates, + typename mpl::if_< + mpl::and_, is_same >, + divide_and_negate_immediates, + typename mpl::if_< + mpl::and_, is_same >, + divide_and_negate_immediates, + typename mpl::if_< + mpl::and_, is_same >, + divide_immediates, + proto::tag::divides + >::type + >::type + >::type + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + modulus_immediates, + proto::tag::modulus + >::type type; +}; + +template +struct assign_and_eval +{ + typedef typename proto::tag_of::type tag_type; + typedef typename assign_and_eval_imp::type type; +}; + +template +struct underlying_result_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::tag_of::type tag_type; + typedef typename underlying_result_imp::type type; +}; + +template +struct underlying_result_imp +{ + typedef typename proto::result_of::value::type type; +}; + +template +struct underlying_result +{ + typedef typename proto::tag_of::type tag_type; + typedef typename underlying_result_imp::type type; +}; + +template +struct combine_expression_type +{ + typedef void type; +}; + +template +struct combine_expression_type, boost::math::big_number > +{ + typedef boost::math::big_number type; +}; + +template +struct combine_expression_type, Exp> +{ + typedef boost::math::big_number type; +}; + +template +struct combine_expression_type > +{ + typedef boost::math::big_number type; +}; + +template +struct is_big_number : public mpl::false_{}; +template +struct is_big_number > : public mpl::true_{}; +template +struct is_big_number_exp : public mpl::false_{}; +template +struct is_big_number_exp > : public mpl::true_{}; + + +template +struct expression_type_imp; + +template +struct expression_type_imp +{ + typedef typename remove_pointer::type>::type type; +}; + +template +struct expression_type_imp +{ + typedef typename proto::result_of::left::type nested_type; + typedef typename expression_type_imp::value>::type type; +}; + +template +struct expression_type_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename expression_type_imp::value>::type left_result; + typedef typename expression_type_imp::value>::type right_result; + typedef typename combine_expression_type::type type; +}; + +template +struct expression_type_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::result_of::child_c::type end_type; + typedef typename expression_type_imp::value>::type left_result; + typedef typename expression_type_imp::value>::type right_result; + typedef typename expression_type_imp::value>::type end_result; + typedef typename combine_expression_type::type>::type type; +}; + +template +struct expression_type +{ + typedef typename expression_type_imp::value>::type type; +}; + +template +struct backend_type +{ + typedef typename expression_type::type num_type; + typedef typename backend_type::type type; +}; + +template +struct backend_type > +{ + typedef Backend type; +}; + +} // namespace detail + +// +// Traits class, lets us know whether a backend is an integer type, otherwise assumed to be a real number type: +// +template +struct is_extended_integer : public mpl::false_ {}; +template +struct is_extended_integer > : public is_extended_integer{}; + + +}} // namespaces + +#endif // BOOST_MATH_BIG_NUM_BASE_HPP + + diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp new file mode 100644 index 00000000..569a32f6 --- /dev/null +++ b/include/boost/math/big_number/default_ops.hpp @@ -0,0 +1,302 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_BIG_NUM_DEF_OPS +#define BOOST_MATH_BIG_NUM_DEF_OPS + +#include + +namespace boost{ namespace math{ namespace big_num_default_ops{ + +// +// Default versions of mixed arithmetic, these just construct a temporary +// from the arithmetic value and then do the arithmetic on that: +// +template +inline typename enable_if, is_convertible, is_same > >::type + add(T& result, V const& v) +{ + T t; + t = v; + add(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + subtract(T& result, V const& v) +{ + T t; + t = v; + subtract(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + multiply(T& result, V const& v) +{ + T t; + t = v; + multiply(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + divide(T& result, V const& v) +{ + T t; + t = v; + divide(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + modulus(T& result, V const& v) +{ + T t; + t = v; + mudulus(result, t); +} + +template +inline bool is_same_object(const T& u, const T&v) +{ return &u == &v; } +template +inline bool is_same_object(const T& u, const U&v) +{ return false; } + +// +// Default versions of 3-arg arithmetic functions, these just forward to the 2 arg versions: +// +template +inline void add(T& t, const U& u, const V& v) +{ + if(is_same_object(t, v)) + { + add(t, u); + } + else if(is_same_object(t, u)) + { + add(t, v); + } + else + { + t = u; + add(t, v); + } +} +template +inline void subtract(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + subtract(t, v); + else if(is_same_object(t, v)) + { + subtract(t, u); + t.negate(); + } + else + { + t = u; + subtract(t, v); + } +} +template +inline void multiply(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + multiply(t, v); + else if(is_same_object(t, v)) + multiply(t, u); + else + { + t = u; + multiply(t, v); + } +} +template +inline void divide(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + divide(t, v); + else if(is_same_object(t, v)) + { + T temp = t; + divide(temp, u, v); + temp.swap(t); + } + else + { + t = u; + divide(t, v); + } +} +template +inline void modulus(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + modulus(t, v); + else if(is_same_object(t, v)) + { + T temp; + modulus(temp, u, v); + temp.swap(t); + } + else + { + t = u; + modulus(t, v); + } +} + +// +// Functions: +// +template +void abs(T* result, const T& arg) +{ + typedef typename T::signed_types type_list; + typedef typename mpl::front::type front; + *result = arg; + if(arg.compare(front(0)) < 0) + result->negate(); +} +template +void fabs(T* result, const T& arg) +{ + typedef typename T::signed_types type_list; + typedef typename mpl::front::type front; + *result = arg; + if(arg.compare(front(0)) < 0) + result->negate(); +} + +// +// These have to implemented by the backend, declared here so that our macro generated code compiles OK. +// +template +typename enable_if_c::type floor(); +template +typename enable_if_c::type ceil(); +template +typename enable_if_c::type trunc(); +template +typename enable_if_c::type sqrt(); +template +typename enable_if_c::type ldexp(); +template +typename enable_if_c::type frexp(); + +} + + +template +class big_number; + +namespace detail{ + +template +struct big_number_exp; + +} + +#define UNARY_OP_FUNCTOR(func)\ +namespace detail{\ +template \ +struct BOOST_JOIN(func, _funct)\ +{\ + void operator()(Backend* result, const Backend& arg)const\ + {\ + using big_num_default_ops::func;\ + func(result, arg);\ + }\ +};\ +\ +}\ +\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct)::type>\ + , detail::big_number_exp\ +>::type const \ +func(const detail::big_number_exp& arg)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)::type>() \ + , arg \ + );\ +}\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct)\ + , detail::big_number_exp*>::type>\ +>::type const \ +func(const big_number& arg)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)() \ + , static_cast*>::type>&>(arg) \ + );\ +} + +#define BINARY_OP_FUNCTOR(func)\ +namespace detail{\ +template \ +struct BOOST_JOIN(func, _funct)\ +{\ + template \ + void operator()(Backend* result, const Backend& arg, const A2& a)const\ + {\ + using big_num_default_ops::func;\ + func(result, arg, a);\ + }\ +};\ +\ +}\ +\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct)::type>\ + , detail::big_number_exp\ + , typename proto::result_of::as_child::type\ +>::type const \ +func(const detail::big_number_exp& arg, const A2& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)::type>() \ + , arg, proto::as_child(a) \ + );\ +}\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct)\ + , detail::big_number_exp*>::type>\ + , typename proto::result_of::as_child::type\ +>::type const \ +func(const big_number& arg, const A2& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)() \ + , static_cast*>::type>&>(arg),\ + proto::as_child(a)\ + );\ +} + +UNARY_OP_FUNCTOR(abs) +UNARY_OP_FUNCTOR(fabs) +UNARY_OP_FUNCTOR(sqrt) +UNARY_OP_FUNCTOR(floor) +UNARY_OP_FUNCTOR(ceil) +UNARY_OP_FUNCTOR(trunc) + +BINARY_OP_FUNCTOR(ldexp) +BINARY_OP_FUNCTOR(frexp) + +#undef BINARY_OP_FUNCTOR +#undef UNARY_OP_FUNCTOR + +}} // namespaces + +#endif + diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 95fddb04..20dc9203 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -145,130 +145,45 @@ struct gmp_real_imp mpf_set_str(m_data, s, 10); return *this; } - gmp_real_imp& operator += (const gmp_real& o) - { - mpf_add(m_data, m_data, o.m_data); - return *this; - } - template - gmp_real_imp& operator += (V v) - { - gmp_real d; - d = v; - return *this += d; - } - gmp_real_imp& operator -= (const gmp_real& o) - { - mpf_sub(m_data, m_data, o.m_data); - return *this; - } - template - gmp_real_imp& operator -= (V v) - { - gmp_real d; - d = v; - return *this -= d; - } - gmp_real_imp& operator *= (const gmp_real& o) - { - mpf_mul(m_data, m_data, o.m_data); - return *this; - } - template - gmp_real_imp& operator *= (V v) - { - gmp_real d; - d = v; - return *this *= d; - } - gmp_real_imp& operator /= (const gmp_real& o) - { - mpf_div(m_data, m_data, o.m_data); - return *this; - } - template - gmp_real_imp& operator /= (V v) - { - gmp_real d; - d = v; - return *this /= d; - } - gmp_real_imp& operator += (unsigned long i) - { - mpf_add_ui(m_data, m_data, i); - return *this; - } - gmp_real_imp& operator -= (unsigned long i) - { - mpf_sub_ui(m_data, m_data, i); - return *this; - } - gmp_real_imp& operator *= (unsigned long i) - { - mpf_mul_ui(m_data, m_data, i); - return *this; - } - gmp_real_imp& operator /= (unsigned long i) - { - mpf_div_ui(m_data, m_data, i); - return *this; - } - gmp_real_imp& operator += (long i) - { - if(i > 0) - mpf_add_ui(m_data, m_data, i); - else - mpf_sub_ui(m_data, m_data, std::abs(i)); - return *this; - } - gmp_real_imp& operator -= (long i) - { - if(i > 0) - mpf_sub_ui(m_data, m_data, i); - else - mpf_add_ui(m_data, m_data, std::abs(i)); - return *this; - } - gmp_real_imp& operator *= (long i) - { - mpf_mul_ui(m_data, m_data, std::abs(i)); - if(i < 0) - mpf_neg(m_data, m_data); - return *this; - } - gmp_real_imp& operator /= (long i) - { - mpf_div_ui(m_data, m_data, std::abs(i)); - if(i < 0) - mpf_neg(m_data, m_data); - return *this; - } void swap(gmp_real_imp& o) { mpf_swap(m_data, o.m_data); } - std::string str(unsigned digits)const + std::string str(unsigned digits, bool scientific)const { + std::string result; mp_exp_t e; void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); const char* ps = mpf_get_str (0, &e, 10, digits, m_data); - std::string s("0."); - if(ps[0] == '-') + std::ptrdiff_t sl = std::strlen(ps); + if(sl == 0) + return "0"; + if(*ps == '-') + --sl; // number of digits excluding sign. + if(!scientific + && (sl <= std::numeric_limits::digits10 + 1) + && (e >= sl) + && (sl <= std::numeric_limits::digits10 + 1)) { - s.insert(0, ps, 1); - s += ps + 1; + result = ps; + result.append(e-sl, '0'); } else { - s += ps; + result = ps; + if(ps[0] == '-') + result.insert(2, 1, '.'); + else + result.insert(1, 1, '.'); + --e; + if(e) + result += "e" + lexical_cast(e); } - s += "e"; - s += boost::lexical_cast(e); mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); - return s; + return result; } ~gmp_real_imp() { @@ -400,74 +315,280 @@ private: } }; +template +inline void add(gmp_real& result, const gmp_real& o) +{ + mpf_add(result.data(), result.data(), o.data()); +} +template +inline void subtract(gmp_real& result, const gmp_real& o) +{ + mpf_sub(result.data(), result.data(), o.data()); +} +template +inline void multiply(gmp_real& result, const gmp_real& o) +{ + mpf_mul(result.data(), result.data(), o.data()); +} +template +inline void divide(gmp_real& result, const gmp_real& o) +{ + mpf_div(result.data(), result.data(), o.data()); +} +template +inline void add(gmp_real& result, unsigned long i) +{ + mpf_add_ui(result.data(), result.data(), i); +} +template +inline void subtract(gmp_real& result, unsigned long i) +{ + mpf_sub_ui(result.data(), result.data(), i); +} +template +inline void multiply(gmp_real& result, unsigned long i) +{ + mpf_mul_ui(result.data(), result.data(), i); +} +template +inline void divide(gmp_real& result, unsigned long i) +{ + mpf_div_ui(result.data(), result.data(), i); +} +template +inline void add(gmp_real& result, long i) +{ + if(i > 0) + mpf_add_ui(result.data(), result.data(), i); + else + mpf_sub_ui(result.data(), result.data(), std::abs(i)); +} +template +inline void subtract(gmp_real& result, long i) +{ + if(i > 0) + mpf_sub_ui(result.data(), result.data(), i); + else + mpf_add_ui(result.data(), result.data(), std::abs(i)); +} +template +inline void multiply(gmp_real& result, long i) +{ + mpf_mul_ui(result.data(), result.data(), std::abs(i)); + if(i < 0) + mpf_neg(result.data(), result.data()); +} +template +inline void divide(gmp_real& result, long i) +{ + mpf_div_ui(result.data(), result.data(), std::abs(i)); + if(i < 0) + mpf_neg(result.data(), result.data()); +} +// +// Specialised 3 arg versions of the basic operators: +// +template +inline void add(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_add(a.data(), x.data(), y.data()); +} +template +inline void add(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_add_ui(a.data(), x.data(), y); +} +template +inline void add(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + mpf_sub_ui(a.data(), x.data(), -y); + else + mpf_add_ui(a.data(), x.data(), y); +} +template +inline void add(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_add_ui(a.data(), y.data(), x); +} +template +inline void add(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_ui_sub(a.data(), -x, y.data()); + mpf_neg(a.data(), a.data()); + } + else + mpf_add_ui(a.data(), y.data(), x); +} +template +inline void subtract(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_sub(a.data(), x.data(), y.data()); +} +template +inline void subtract(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_sub_ui(a.data(), x.data(), y); +} +template +inline void subtract(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + mpf_add_ui(a.data(), x.data(), -y); + else + mpf_sub_ui(a.data(), x.data(), y); +} +template +inline void subtract(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_ui_sub(a.data(), x, y.data()); +} +template +inline void subtract(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_add_ui(a.data(), y.data(), -x); + mpf_neg(a.data(), a.data()); + } + else + mpf_ui_sub(a.data(), x, y.data()); +} + +template +inline void multiply(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_mul(a.data(), x.data(), y.data()); +} +template +inline void multiply(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_mul_ui(a.data(), x.data(), y); +} +template +inline void multiply(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + { + mpf_mul_ui(a.data(), x.data(), -y); + a.negate(); + } + else + mpf_mul_ui(a.data(), x.data(), y); +} +template +inline void multiply(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_mul_ui(a.data(), y.data(), x); +} +template +inline void multiply(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_mul_ui(a.data(), y.data(), -x); + mpf_neg(a.data(), a.data()); + } + else + mpf_mul_ui(a.data(), y.data(), x); +} + +template +inline void divide(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_div(a.data(), x.data(), y.data()); +} +template +inline void divide(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_div_ui(a.data(), x.data(), y); +} +template +inline void divide(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + { + mpf_div_ui(a.data(), x.data(), -y); + a.negate(); + } + else + mpf_div_ui(a.data(), x.data(), y); +} +template +inline void divide(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_ui_div(a.data(), x, y.data()); +} +template +inline void divide(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_ui_div(a.data(), -x, y.data()); + mpf_neg(a.data(), a.data()); + } + else + mpf_ui_div(a.data(), x, y.data()); +} + // // Native non-member operations: // template -big_number > sqrt(const big_number >& val) +inline void sqrt(gmp_real* result, const gmp_real& val) { - big_number > result; - mpf_sqrt(result.backend().data(), val.backend().data()); - return result; + mpf_sqrt(result->data(), val.data()); +} + +template +inline void abs(gmp_real* result, const gmp_real& val) +{ + mpf_abs(result->data(), val.data()); +} + +template +inline void fabs(gmp_real* result, const gmp_real& val) +{ + mpf_abs(result->data(), val.data()); } template -big_number > abs(const big_number >& val) +inline void ceil(gmp_real* result, const gmp_real& val) { - big_number > result; - mpf_abs(result.backend().data(), val.backend().data()); - return result; + mpf_ceil(result->data(), val.data()); } template -big_number > fabs(const big_number >& val) +inline void floor(gmp_real* result, const gmp_real& val) { - big_number > result; - mpf_abs(result.backend().data(), val.backend().data()); - return result; + mpf_floor(result->data(), val.data()); } template -big_number > ceil(const big_number >& val) +inline void trunc(gmp_real* result, const gmp_real& val) { - big_number > result; - mpf_ceil(result.backend().data(), val.backend().data()); - return result; + mpf_trunc(result->data(), val.data()); } template -big_number > floor(const big_number >& val) +inline void ldexp(gmp_real* result, const gmp_real& val, long e) { - big_number > result; - mpf_floor(result.backend().data(), val.backend().data()); - return result; -} -template -big_number > trunc(const big_number >& val) -{ - big_number > result; - mpf_trunc(result.backend().data(), val.backend().data()); - return result; -} -template -big_number > ldexp(const big_number >& val, long e) -{ - big_number > result; if(e > 0) - mpf_mul_2exp(result.backend().data(), val.backend().data(), e); + mpf_mul_2exp(result->data(), val.data(), e); else if(e < 0) - mpf_div_2exp(result.backend().data(), val.backend().data(), -e); - return result; + mpf_div_2exp(result->data(), val.data(), -e); } template -big_number > frexp(const big_number >& val, int* e) +inline void frexp(gmp_real* result, const gmp_real& val, int* e) { long v; - mpf_get_d_2exp(&v, val.backend().data()); + mpf_get_d_2exp(&v, val.data()); *e = v; - return ldexp(val, -v); + return ldexp(result, val, -v); } template -big_number > frexp(const big_number >& val, long* e) +inline void frexp(gmp_real* result, const gmp_real& val, long* e) { - mpf_get_d_2exp(e, val.backend().data()); - return ldexp(val, -*e); + mpf_get_d_2exp(e, val.data()); + return ldexp(result, val, -*e); } struct gmp_int @@ -582,163 +703,11 @@ struct gmp_int mpz_set_str(m_data, s, 10); return *this; } - gmp_int& operator += (const gmp_int& o) - { - mpz_add(m_data, m_data, o.m_data); - return *this; - } - template - gmp_int& operator += (V v) - { - gmp_int d; - d = v; - return *this += d; - } - gmp_int& operator -= (const gmp_int& o) - { - mpz_sub(m_data, m_data, o.m_data); - return *this; - } - template - gmp_int& operator -= (V v) - { - gmp_int d; - d = v; - return *this -= d; - } - gmp_int& operator *= (const gmp_int& o) - { - mpz_mul(m_data, m_data, o.m_data); - return *this; - } - template - gmp_int& operator *= (V v) - { - gmp_int d; - d = v; - return *this *= d; - } - gmp_int& operator /= (const gmp_int& o) - { - mpz_div(m_data, m_data, o.m_data); - return *this; - } - template - gmp_int& operator /= (V v) - { - gmp_int d; - d = v; - return *this /= d; - } - gmp_int& operator %= (const gmp_int& o) - { - bool neg = mpz_sgn(m_data) < 0; - bool neg2 = mpz_sgn(o.m_data) < 0; - mpz_mod(m_data, m_data, o.m_data); - if(neg) - { - if(!neg2) - negate(); - mpz_add(m_data, m_data, o.m_data); - if(!neg2) - negate(); - } - return *this; - } - template - gmp_int& operator %= (V v) - { - gmp_int d; - d = v; - return *this %= d; - } - gmp_int& operator += (unsigned long i) - { - mpz_add_ui(m_data, m_data, i); - return *this; - } - gmp_int& operator -= (unsigned long i) - { - mpz_sub_ui(m_data, m_data, i); - return *this; - } - gmp_int& operator *= (unsigned long i) - { - mpz_mul_ui(m_data, m_data, i); - return *this; - } - gmp_int& operator %= (unsigned long i) - { - bool neg = mpz_sgn(m_data) < 0; - mpz_mod_ui(m_data, m_data, i); - if(neg) - { - negate(); - mpz_add_ui(m_data, m_data, i); - negate(); - } - return *this; - } - gmp_int& operator /= (unsigned long i) - { - mpz_div_ui(m_data, m_data, i); - return *this; - } - gmp_int& operator += (long i) - { - if(i > 0) - mpz_add_ui(m_data, m_data, i); - else - mpz_sub_ui(m_data, m_data, std::abs(i)); - return *this; - } - gmp_int& operator -= (long i) - { - if(i > 0) - mpz_sub_ui(m_data, m_data, i); - else - mpz_add_ui(m_data, m_data, std::abs(i)); - return *this; - } - gmp_int& operator *= (long i) - { - mpz_mul_ui(m_data, m_data, std::abs(i)); - if(i < 0) - mpz_neg(m_data, m_data); - return *this; - } - gmp_int& operator %= (long i) - { - bool neg = mpz_sgn(m_data) < 0; - bool neg2 = i < 0; - mpz_mod_ui(m_data, m_data, std::abs(i)); - if(neg) - { - if(!neg2) - { - negate(); - mpz_add_ui(m_data, m_data, std::abs(i)); - negate(); - } - else - { - mpz_sub_ui(m_data, m_data, std::abs(i)); - } - } - return *this; - } - gmp_int& operator /= (long i) - { - mpz_div_ui(m_data, m_data, std::abs(i)); - if(i < 0) - mpz_neg(m_data, m_data); - return *this; - } void swap(gmp_int& o) { mpz_swap(m_data, o.m_data); } - std::string str(unsigned)const + std::string str(unsigned /*digits*/, bool /*scientific*/)const { void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); @@ -776,10 +745,218 @@ struct gmp_int d = v; return compare(d); } + mpz_t& data() { return m_data; } + const mpz_t& data()const { return m_data; } protected: mpz_t m_data; }; +inline void add(gmp_int& t, const gmp_int& o) +{ + mpz_add(t.data(), t.data(), o.data()); +} +inline void subtract(gmp_int& t, const gmp_int& o) +{ + mpz_sub(t.data(), t.data(), o.data()); +} +inline void multiply(gmp_int& t, const gmp_int& o) +{ + mpz_mul(t.data(), t.data(), o.data()); +} +inline void divide(gmp_int& t, const gmp_int& o) +{ + mpz_div(t.data(), t.data(), o.data()); +} +inline void modulus(gmp_int& t, const gmp_int& o) +{ + bool neg = mpz_sgn(t.data()) < 0; + bool neg2 = mpz_sgn(o.data()) < 0; + mpz_mod(t.data(), t.data(), o.data()); + if(neg) + { + if(!neg2) + t.negate(); + mpz_add(t.data(), t.data(), o.data()); + if(!neg2) + t.negate(); + } +} +inline void add(gmp_int& t, unsigned long i) +{ + mpz_add_ui(t.data(), t.data(), i); +} +inline void subtract(gmp_int& t, unsigned long i) +{ + mpz_sub_ui(t.data(), t.data(), i); +} +inline void multiply(gmp_int& t, unsigned long i) +{ + mpz_mul_ui(t.data(), t.data(), i); +} +inline void modulus(gmp_int& t, unsigned long i) +{ + bool neg = mpz_sgn(t.data()) < 0; + mpz_mod_ui(t.data(), t.data(), i); + if(neg) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), i); + t.negate(); + } +} +inline void divide(gmp_int& t, unsigned long i) +{ + mpz_div_ui(t.data(), t.data(), i); +} +inline void add(gmp_int& t, long i) +{ + if(i > 0) + mpz_add_ui(t.data(), t.data(), i); + else + mpz_sub_ui(t.data(), t.data(), -i); +} +inline void subtract(gmp_int& t, long i) +{ + if(i > 0) + mpz_sub_ui(t.data(), t.data(), i); + else + mpz_add_ui(t.data(), t.data(), -i); +} +inline void multiply(gmp_int& t, long i) +{ + mpz_mul_ui(t.data(), t.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} +inline void modulus(gmp_int& t, long i) +{ + bool neg = mpz_sgn(t.data()) < 0; + bool neg2 = i < 0; + mpz_mod_ui(t.data(), t.data(), std::abs(i)); + if(neg) + { + if(!neg2) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), std::abs(i)); + t.negate(); + } + else + { + mpz_sub_ui(t.data(), t.data(), std::abs(i)); + } + } +} +inline void divide(gmp_int& t, long i) +{ + mpz_div_ui(t.data(), t.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} + +inline void add(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_add(t.data(), p.data(), o.data()); +} +inline void subtract(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_sub(t.data(), p.data(), o.data()); +} +inline void multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_mul(t.data(), p.data(), o.data()); +} +inline void divide(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_div(t.data(), p.data(), o.data()); +} +inline void modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + bool neg = mpz_sgn(p.data()) < 0; + bool neg2 = mpz_sgn(o.data()) < 0; + mpz_mod(t.data(), p.data(), o.data()); + if(neg) + { + if(!neg2) + t.negate(); + mpz_add(t.data(), t.data(), o.data()); + if(!neg2) + t.negate(); + } +} +inline void add(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_add_ui(t.data(), p.data(), i); +} +inline void subtract(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_sub_ui(t.data(), p.data(), i); +} +inline void multiply(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_mul_ui(t.data(), p.data(), i); +} +inline void modulus(gmp_int& t, const gmp_int& p, unsigned long i) +{ + bool neg = mpz_sgn(p.data()) < 0; + mpz_mod_ui(t.data(), p.data(), i); + if(neg) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), i); + t.negate(); + } +} +inline void divide(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_div_ui(t.data(), p.data(), i); +} +inline void add(gmp_int& t, const gmp_int& p, long i) +{ + if(i > 0) + mpz_add_ui(t.data(), p.data(), i); + else + mpz_sub_ui(t.data(), p.data(), -i); +} +inline void subtract(gmp_int& t, const gmp_int& p, long i) +{ + if(i > 0) + mpz_sub_ui(t.data(), p.data(), i); + else + mpz_add_ui(t.data(), p.data(), -i); +} +inline void multiply(gmp_int& t, const gmp_int& p, long i) +{ + mpz_mul_ui(t.data(), p.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} +inline void modulus(gmp_int& t, const gmp_int& p, long i) +{ + bool neg = mpz_sgn(p.data()) < 0; + bool neg2 = i < 0; + mpz_mod_ui(t.data(), p.data(), std::abs(i)); + if(neg) + { + if(!neg2) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), std::abs(i)); + t.negate(); + } + else + { + mpz_sub_ui(t.data(), t.data(), std::abs(i)); + } + } +} +inline void divide(gmp_int& t, const gmp_int& p, long i) +{ + mpz_div_ui(t.data(), p.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} + template<> struct is_extended_integer : public mpl::true_ {}; diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp index 31b4d992..6067b6e6 100644 --- a/include/boost/math/concepts/big_number_architypes.hpp +++ b/include/boost/math/concepts/big_number_architypes.hpp @@ -18,9 +18,9 @@ namespace concepts{ struct big_number_backend_real_architype { - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; big_number_backend_real_architype() { @@ -49,24 +49,6 @@ struct big_number_backend_real_architype std::cout << "Int Assignment (" << i << ")" << std::endl; return *this; } - big_number_backend_real_architype& operator = (unsigned i) - { - m_value = i; - std::cout << "UInt Assignment (" << i << ")" << std::endl; - return *this; - } - big_number_backend_real_architype& operator = (int i) - { - m_value = i; - std::cout << "Int Assignment (" << i << ")" << std::endl; - return *this; - } - big_number_backend_real_architype& operator = (double d) - { - m_value = d; - std::cout << "double Assignment (" << d << ")" << std::endl; - return *this; - } big_number_backend_real_architype& operator = (long double d) { m_value = d; @@ -79,182 +61,29 @@ struct big_number_backend_real_architype std::cout << "const char* Assignment (" << s << ")" << std::endl; return *this; } - big_number_backend_real_architype& operator += (const big_number_backend_real_architype& o) - { - std::cout << "Addition (" << m_value << " += " << o.m_value << ")" << std::endl; - m_value += o.m_value; - return *this; - } - big_number_backend_real_architype& operator -= (const big_number_backend_real_architype& o) - { - std::cout << "Subtraction (" << m_value << " -= " << o.m_value << ")" << std::endl; - m_value -= o.m_value; - return *this; - } - big_number_backend_real_architype& operator *= (const big_number_backend_real_architype& o) - { - std::cout << "Multiplication (" << m_value << " *= " << o.m_value << ")" << std::endl; - m_value *= o.m_value; - return *this; - } - big_number_backend_real_architype& operator /= (const big_number_backend_real_architype& o) - { - std::cout << "Division (" << m_value << " /= " << o.m_value << ")" << std::endl; - m_value /= o.m_value; - return *this; - } - big_number_backend_real_architype& operator += (boost::uintmax_t i) - { - std::cout << "UIntmax_t Addition (" << m_value << " += " << i << ")" << std::endl; - m_value += i; - return *this; - } - big_number_backend_real_architype& operator -= (boost::uintmax_t i) - { - std::cout << "UIntmax_t Subtraction (" << m_value << " -= " << i << ")" << std::endl; - m_value -= i; - return *this; - } - big_number_backend_real_architype& operator *= (boost::uintmax_t i) - { - std::cout << "UIntmax_t Multiplication (" << m_value << " *= " << i << ")" << std::endl; - m_value *= i; - return *this; - } - big_number_backend_real_architype& operator /= (boost::uintmax_t i) - { - std::cout << "UIntmax_t Division (" << m_value << " /= " << i << ")" << std::endl; - m_value /= i; - return *this; - } - big_number_backend_real_architype& operator += (boost::intmax_t i) - { - std::cout << "Intmax_t Addition (" << m_value << " += " << i << ")" << std::endl; - m_value += i; - return *this; - } - big_number_backend_real_architype& operator -= (boost::intmax_t i) - { - std::cout << "Intmax_t Subtraction (" << m_value << " -= " << i << ")" << std::endl; - m_value -= i; - return *this; - } - big_number_backend_real_architype& operator *= (boost::intmax_t i) - { - std::cout << "Intmax_t Multiplication (" << m_value << " *= " << i << ")" << std::endl; - m_value *= i; - return *this; - } - big_number_backend_real_architype& operator /= (boost::intmax_t i) - { - std::cout << "Intmax_t Division (" << m_value << " /= " << i << ")" << std::endl; - m_value /= i; - return *this; - } - big_number_backend_real_architype& operator += (unsigned i) - { - std::cout << "UInt Addition (" << m_value << " += " << i << ")" << std::endl; - m_value += i; - return *this; - } - big_number_backend_real_architype& operator -= (unsigned i) - { - std::cout << "UInt Subtraction (" << m_value << " -= " << i << ")" << std::endl; - m_value -= i; - return *this; - } - big_number_backend_real_architype& operator *= (unsigned i) - { - std::cout << "UInt Multiplication (" << m_value << " *= " << i << ")" << std::endl; - m_value *= i; - return *this; - } - big_number_backend_real_architype& operator /= (unsigned i) - { - std::cout << "UInt Division (" << m_value << " /= " << i << ")" << std::endl; - m_value /= i; - return *this; - } - big_number_backend_real_architype& operator += (int i) - { - std::cout << "Int Addition (" << m_value << " += " << i << ")" << std::endl; - m_value += i; - return *this; - } - big_number_backend_real_architype& operator -= (int i) - { - std::cout << "Int Subtraction (" << m_value << " -= " << i << ")" << std::endl; - m_value -= i; - return *this; - } - big_number_backend_real_architype& operator *= (int i) - { - std::cout << "Int Multiplication (" << m_value << " *= " << i << ")" << std::endl; - m_value *= i; - return *this; - } - big_number_backend_real_architype& operator /= (int i) - { - std::cout << "Int Division (" << m_value << " /= " << i << ")" << std::endl; - m_value /= i; - return *this; - } - big_number_backend_real_architype& operator += (double d) - { - std::cout << "double Addition (" << m_value << " += " << d << ")" << std::endl; - m_value += d; - return *this; - } - big_number_backend_real_architype& operator -= (double d) - { - std::cout << "double Subtraction (" << m_value << " -= " << d << ")" << std::endl; - m_value -= d; - return *this; - } - big_number_backend_real_architype& operator *= (double d) - { - std::cout << "double Multiplication (" << m_value << " *= " << d << ")" << std::endl; - m_value *= d; - return *this; - } - big_number_backend_real_architype& operator /= (double d) - { - std::cout << "double Division (" << m_value << " /= " << d << ")" << std::endl; - m_value /= d; - return *this; - } - big_number_backend_real_architype& operator += (long double d) - { - std::cout << "long double Addition (" << m_value << " += " << d << ")" << std::endl; - m_value += d; - return *this; - } - big_number_backend_real_architype& operator -= (long double d) - { - std::cout << "long double Subtraction (" << m_value << " -= " << d << ")" << std::endl; - m_value -= d; - return *this; - } - big_number_backend_real_architype& operator *= (long double d) - { - std::cout << "long double Multiplication (" << m_value << " *= " << d << ")" << std::endl; - m_value *= d; - return *this; - } - big_number_backend_real_architype& operator /= (long double d) - { - std::cout << "long double Division (" << m_value << " /= " << d << ")" << std::endl; - m_value /= d; - return *this; - } void swap(big_number_backend_real_architype& o) { std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; std::swap(m_value, o.m_value); } - std::string str(unsigned)const + std::string str(unsigned digits, bool scientific)const { - std::string s(boost::lexical_cast(m_value)); + std::stringstream ss; + if(scientific) + ss.setf(ss.scientific); + if(digits) + ss.precision(digits); + else + ss.precision(std::numeric_limits::digits10 + 2); + boost::intmax_t i = m_value; + boost::uintmax_t u = m_value; + if(!scientific && m_value == i) + ss << i; + else if(!scientific && m_value == u) + ss << u; + else + ss << m_value; + std::string s = ss.str(); std::cout << "Converting to string (" << s << ")" << std::endl; return s; } @@ -268,16 +97,6 @@ struct big_number_backend_real_architype std::cout << "Comparison" << std::endl; return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); } - int compare(int i)const - { - std::cout << "Comparison with int" << std::endl; - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(unsigned i)const - { - std::cout << "Comparison with unsigned" << std::endl; - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } int compare(boost::intmax_t i)const { std::cout << "Comparison with int" << std::endl; @@ -288,20 +107,35 @@ struct big_number_backend_real_architype std::cout << "Comparison with unsigned" << std::endl; return m_value > i ? 1 : (m_value < i ? -1 : 0); } - int compare(double d)const - { - std::cout << "Comparison with double" << std::endl; - return m_value > d ? 1 : (m_value < d ? -1 : 0); - } int compare(long double d)const { std::cout << "Comparison with long double" << std::endl; return m_value > d ? 1 : (m_value < d ? -1 : 0); } -private: long double m_value; }; +inline void add(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Addition (" << result.m_value << " += " << o.m_value << ")" << std::endl; + result.m_value += o.m_value; +} +inline void subtract(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Subtraction (" << result.m_value << " -= " << o.m_value << ")" << std::endl; + result.m_value -= o.m_value; +} +inline void multiply(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Multiplication (" << result.m_value << " *= " << o.m_value << ")" << std::endl; + result.m_value *= o.m_value; +} +inline void divide(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Division (" << result.m_value << " /= " << o.m_value << ")" << std::endl; + result.m_value /= o.m_value; +} + typedef boost::math::big_number big_number_real_architype; }}} // namespaces diff --git a/math/test/linpack-benchmark.cpp b/math/test/linpack-benchmark.cpp index bf5300fb..89ba6099 100644 --- a/math/test/linpack-benchmark.cpp +++ b/math/test/linpack-benchmark.cpp @@ -18,6 +18,7 @@ http://www.netlib.org/f2c/libf2c.zip #include #include #include + #ifdef TEST_BIG_NUMBER #include typedef boost::math::mpf_real_100 real_type; diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 99436325..9aeefdb2 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -50,6 +50,16 @@ void test_integer_ops(const boost::mpl::true_&) BOOST_TEST(a % -7 == 20 % -7); BOOST_TEST(-a % 7u == -20 % 7); + b = -b; + BOOST_TEST(a % b == 20 % -7); + a = -a; + BOOST_TEST(a % b == -20 % -7); + BOOST_TEST(a % -7 == -20 % -7); + b = 7; + BOOST_TEST(a % b == -20 % 7); + BOOST_TEST(a % 7 == -20 % 7); + BOOST_TEST(a % 7u == -20 % 7); + a = 20; a %= b; BOOST_TEST(a == 20 % 7); @@ -83,6 +93,7 @@ void test_real_ops(const boost::mpl::false_&){} template void test_real_ops(const boost::mpl::true_&) { +#if defined(TEST_MPF) || defined(TEST_MPF_50) std::cout << "Root2 = " << sqrt(Real(2)) << std::endl; BOOST_TEST(abs(Real(2)) == 2); BOOST_TEST(abs(Real(-2)) == 2); @@ -92,12 +103,8 @@ void test_real_ops(const boost::mpl::true_&) BOOST_TEST(ceil(Real(5) / 2) == 3); BOOST_TEST(floor(Real(-5) / 2) == -3); BOOST_TEST(ceil(Real(-5) / 2) == -2); -#ifndef TEST_E_FLOAT BOOST_TEST(trunc(Real(5) / 2) == 2); BOOST_TEST(trunc(Real(-5) / 2) == -2); -#endif - -#ifndef TEST_E_FLOAT // // ldexp and frexp, these pretty much have to implemented by each backend: // @@ -108,6 +115,7 @@ void test_real_ops(const boost::mpl::true_&) Real r = frexp(v, &exp); BOOST_TEST(r == 0.5); BOOST_TEST(exp == 10); + BOOST_TEST(v == 512); v = 1 / v; r = frexp(v, &exp); BOOST_TEST(r == 0.5); @@ -115,9 +123,24 @@ void test_real_ops(const boost::mpl::true_&) #endif } +template +struct lexical_cast_target_type +{ + typedef typename boost::mpl::if_< + boost::is_signed, + boost::intmax_t, + typename boost::mpl::if_< + boost::is_unsigned, + boost::uintmax_t, + T + >::type + >::type type; +}; + template void test_negative_mixed(boost::mpl::true_ const&) { + typedef typename lexical_cast_target_type::type target_type; std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; Num n1 = -static_cast(1uLL << (std::numeric_limits::digits - 1)); Num n2 = -1; @@ -133,10 +156,10 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); BOOST_TEST(n4 == Real(n4)); - BOOST_TEST(n1 == boost::lexical_cast(Real(n1))); - BOOST_TEST(n2 == boost::lexical_cast(Real(n2))); - BOOST_TEST(n3 == boost::lexical_cast(Real(n3))); - BOOST_TEST(n4 == boost::lexical_cast(Real(n4))); + BOOST_TEST(n1 == boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value))); + BOOST_TEST(n2 == boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value))); + BOOST_TEST(n3 == boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value))); + BOOST_TEST(n4 == boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value))); // Assignment: Real r(0); BOOST_TEST(r != n1); @@ -172,6 +195,21 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST(Real(r / n5) == n1 / n5); r /= n5; BOOST_TEST(r == n1 / n5); + // + // Extra cases for full coverage: + // + r = Real(n4) + n5; + BOOST_TEST(r == n4 + n5); + r = n4 + Real(n5); + BOOST_TEST(r == n4 + n5); + r = Real(n4) - n5; + BOOST_TEST(r == n4 - n5); + r = n4 - Real(n5); + BOOST_TEST(r == n4 - n5); + r = n4 * Real(n5); + BOOST_TEST(r == n4 * n5); + r = (4 * n4) / Real(4); + BOOST_TEST(r == n4); } template @@ -182,6 +220,7 @@ void test_negative_mixed(boost::mpl::false_ const&) template void test_mixed() { + typedef typename lexical_cast_target_type::type target_type; std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; Num n1 = static_cast(1uLL << (std::numeric_limits::digits - 1)); Num n2 = 1; @@ -197,10 +236,10 @@ void test_mixed() BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); BOOST_TEST(n4 == Real(n4)); - BOOST_TEST(n1 == boost::lexical_cast(Real(n1))); - BOOST_TEST(n2 == boost::lexical_cast(Real(n2))); - BOOST_TEST(n3 == boost::lexical_cast(Real(n3))); - BOOST_TEST(n4 == boost::lexical_cast(Real(n4))); + BOOST_TEST(n1 == boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value))); + BOOST_TEST(n2 == boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value))); + BOOST_TEST(n3 == boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value))); + BOOST_TEST(n4 == boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value))); // Assignment: Real r(0); BOOST_TEST(r != n1); @@ -237,6 +276,18 @@ void test_mixed() r /= n5; BOOST_TEST(r == n1 / n5); + // + // special cases for full coverage: + // + r = n5 + Real(n4); + BOOST_TEST(r == n4 + n5); + r = n4 - Real(n5); + BOOST_TEST(r == n4 - n5); + r = n4 * Real(n5); + BOOST_TEST(r == n4 * n5); + r = (4 * n4) / Real(4); + BOOST_TEST(r == n4); + test_negative_mixed(boost::mpl::bool_::is_signed>()); } @@ -439,6 +490,28 @@ void test() ac = a + std::string("8"); BOOST_TEST(ac == 16); #endif + // + // simple tests with immediate values, these calls can be optimised in many backends: + // + ac = a + b; + BOOST_TEST(ac == 72); + ac = a + +b; + BOOST_TEST(ac == 72); + ac = +a + b; + BOOST_TEST(ac == 72); + ac = +a + +b; + BOOST_TEST(ac == 72); + ac = a + -b; + BOOST_TEST(ac == 8 - 64); + ac = -a + b; + BOOST_TEST(ac == -8+64); + ac = -a + -b; + BOOST_TEST(ac == -72); + ac = a + - + -b; // lots of unary operators!! + BOOST_TEST(ac == 72); + ac = a; + ac = b / ac; + BOOST_TEST(ac == b / a); // // Comparisons: // From acc0bbe5111089d22035239b8c000a0c25645360 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 17 Aug 2011 08:38:17 +0000 Subject: [PATCH 009/256] Add some more modulus tests, fix regressions and add abs function for gmp_int backend. [SVN r73840] --- include/boost/math/big_number/default_ops.hpp | 2 +- include/boost/math/big_number/gmp.hpp | 5 ++++ math/test/test_arithmetic.cpp | 25 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index 569a32f6..86a2aa09 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -52,7 +52,7 @@ inline typename enable_if, is_convertible diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 20dc9203..ff74c39d 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -957,6 +957,11 @@ inline void divide(gmp_int& t, const gmp_int& p, long i) mpz_neg(t.data(), t.data()); } +inline void abs(gmp_int* result, const gmp_int& val) +{ + mpz_abs(result->data(), val.data()); +} + template<> struct is_extended_integer : public mpl::true_ {}; diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 9aeefdb2..c87f94c0 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -85,6 +85,31 @@ void test_integer_ops(const boost::mpl::true_&) a = -20; a %= -7; BOOST_TEST(a == -20 % -7); +#ifndef BOOST_NO_LONG_LONG + a = 20; + a %= 7uLL; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= 7uLL; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7LL; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7LL; + BOOST_TEST(a == -20 % -7); +#endif + // + // Non-member functions: + // + a = -20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); + a = 20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); } template From a21103c7b7a9e47ea3d88911fb1774a700cf1e55 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 19 Aug 2011 17:24:39 +0000 Subject: [PATCH 010/256] Fix buglets in GMP support, add MPFR support. [SVN r73922] --- include/boost/math/big_number/gmp.hpp | 13 +- include/boost/math/big_number/mpfr.hpp | 613 +++++++++++++++++++++++++ math/test/linpack-benchmark.cpp | 21 +- math/test/test_arithmetic.cpp | 24 +- 4 files changed, 661 insertions(+), 10 deletions(-) create mode 100644 include/boost/math/big_number/mpfr.hpp diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index ff74c39d..e9811c28 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -31,7 +31,14 @@ struct gmp_real_imp gmp_real_imp(const gmp_real_imp& o) { - mpf_init_set(m_data, o.m_data); + // + // We have to do an init followed by a set here, otherwise *this may be at + // a lower precision than o: seems like mpf_init_set copies just enough bits + // to get the right value, but if it's then used in further calculations + // things go badly wrong!! + // + mpf_init2(m_data, (((digits10 ? digits10 : gmp_real<0>::default_precision()) + 1) * 1000L) / 301L); + mpf_set(m_data, o.m_data); } #ifndef BOOST_NO_RVALUE_REFERENCES gmp_real_imp(gmp_real_imp&& o) @@ -57,8 +64,8 @@ struct gmp_real_imp boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpf_t t; - mpf_init2(m_data, ((digits10 + 1) * 1000L) / 301L); - mpf_init2(t, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(t, (((digits10 ? digits10 : gmp_real<0>::default_precision()) + 1) * 1000L) / 301L); + mpf_set_ui(m_data, 0); while(i) { mpf_set_ui(t, static_cast(i & mask)); diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp new file mode 100644 index 00000000..4589f68f --- /dev/null +++ b/include/boost/math/big_number/mpfr.hpp @@ -0,0 +1,613 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_BN_MPFR_HPP +#define BOOST_MATH_BN_MPFR_HPP + +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace math{ + +template +struct mpfr_real_backend; + +namespace detail{ + +template +struct mpfr_real_imp +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + mpfr_real_imp(){} + + mpfr_real_imp(const mpfr_real_imp& o) + { + mpfr_init2(m_data, (((digits10 ? digits10 : mpfr_real_backend<0>::default_precision()) + 1) * 1000L) / 301L); + mpfr_set(m_data, o.m_data, MPFR_RNDN); + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_imp(mpfr_real_imp&& o) + { + m_data[0] = o.m_data[0]; + o.m_data[0]._mpfr_d = 0; + } +#endif + mpfr_real_imp& operator = (const mpfr_real_imp& o) + { + mpfr_set(m_data, o.m_data, MPFR_RNDN); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_imp& operator = (mpfr_real_imp&& o) + { + mpfr_swap(m_data, o.m_data); + return *this; + } +#endif + mpfr_real_imp& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpfr_t t; + mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(((digits10 + 1) * 1000L) / 301L))); + mpfr_set_ui(m_data, 0, MPFR_RNDN); + while(i) + { + mpfr_set_ui(t, static_cast(i & mask), MPFR_RNDN); + long e; + const char* ps = mpfr_get_str (0, &e, 10, 0, t, MPFR_RNDN); + if(shift) + mpfr_mul_2exp(t, t, shift, MPFR_RNDN); + ps = mpfr_get_str (0, &e, 10, 0, t, MPFR_RNDN); + mpfr_add(m_data, m_data, t, MPFR_RNDN); + ps = mpfr_get_str (0, &e, 10, 0, m_data, MPFR_RNDN); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpfr_clear(t); + return *this; + } + mpfr_real_imp& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpfr_neg(m_data, m_data, MPFR_RNDN); + return *this; + } + mpfr_real_imp& operator = (unsigned long i) + { + mpfr_set_ui(m_data, i, MPFR_RNDN); + return *this; + } + mpfr_real_imp& operator = (long i) + { + mpfr_set_si(m_data, i, MPFR_RNDN); + return *this; + } + mpfr_real_imp& operator = (double d) + { + mpfr_set_d(m_data, d, MPFR_RNDN); + return *this; + } + mpfr_real_imp& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + mpfr_set_si(m_data, 0, MPFR_RNDN); + return *this; + } + + if (a == 1) { + mpfr_set_si(m_data, 1, MPFR_RNDN); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpfr_init_set_ui(m_data, 0u, MPFR_RNDN); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpfr_mul_2exp(m_data, m_data, shift, MPFR_RNDN); + if(term > 0) + mpfr_add_ui(m_data, m_data, static_cast(term), MPFR_RNDN); + else + mpfr_sub_ui(m_data, m_data, static_cast(-term), MPFR_RNDN); + f -= term; + } + if(e > 0) + mpfr_mul_2exp(m_data, m_data, e, MPFR_RNDN); + else if(e < 0) + mpfr_div_2exp(m_data, m_data, -e, MPFR_RNDN); + return *this; + } + mpfr_real_imp& operator = (const char* s) + { + mpfr_set_str(m_data, s, 10, MPFR_RNDN); + return *this; + } + void swap(mpfr_real_imp& o) + { + mpfr_swap(m_data, o.m_data); + } + std::string str(unsigned digits, bool scientific)const + { + std::string result; + mp_exp_t e; + void *(*alloc_func_ptr) (size_t); + void *(*realloc_func_ptr) (void *, size_t, size_t); + void (*free_func_ptr) (void *, size_t); + const char* ps = mpfr_get_str (0, &e, 10, digits, m_data, MPFR_RNDN); + std::ptrdiff_t sl = std::strlen(ps); + unsigned chars = sl; + if(sl == 0) + return "0"; + while(ps[chars-1] == '0') + --chars; + if(*ps == '-') + --chars; // number of digits excluding sign. + if(chars == 0) + return "0"; + if(!scientific + && (chars <= std::numeric_limits::digits10 + 1) + && (e >= (int)chars) + && (chars <= std::numeric_limits::digits10 + 1)) + { + result.assign(ps, (*ps == '-' ? chars+1 : chars)); + result.append(e-chars, '0'); + } + else + { + result = ps; + if(ps[0] == '-') + result.insert(2, 1, '.'); + else + result.insert(1, 1, '.'); + --e; + if(e) + result += "e" + lexical_cast(e); + } + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + (*free_func_ptr)((void*)ps, sl + 1); + return result; + } + ~mpfr_real_imp() + { + if(m_data[0]._mpfr_d) + mpfr_clear(m_data); + } + void negate() + { + mpfr_neg(m_data, m_data, MPFR_RNDN); + } + int compare(const mpfr_real_backend& o)const + { + return mpfr_cmp(m_data, o.m_data); + } + int compare(long i)const + { + return mpfr_cmp_si(m_data, i); + } + int compare(unsigned long i)const + { + return mpfr_cmp_ui(m_data, i); + } + template + int compare(V v)const + { + mpfr_real_backend d; + d = v; + return compare(d); + } + mpfr_t& data() { return m_data; } + const mpfr_t& data()const { return m_data; } +protected: + mpfr_t m_data; +}; + +} // namespace detail + +template +struct mpfr_real_backend : public detail::mpfr_real_imp +{ + mpfr_real_backend() + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp(o) {} +#endif + mpfr_real_backend& operator=(const mpfr_real_backend& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend& operator=(mpfr_real_backend&& o) + { + *static_cast*>(this) = static_cast&&>(o); + return *this; + } +#endif + template + mpfr_real_backend& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } +}; + +template <> +struct mpfr_real_backend<0> : public detail::mpfr_real_imp<0> +{ + mpfr_real_backend() + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + } + mpfr_real_backend(unsigned digits10) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp<0>(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp<0>(o) {} +#endif + mpfr_real_backend(const mpfr_real_backend& o, unsigned digits10) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + *this = o; + } + + mpfr_real_backend& operator=(const mpfr_real_backend& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend& operator=(mpfr_real_backend&& o) + { + *static_cast*>(this) = static_cast &&>(o); + return *this; + } +#endif + template + mpfr_real_backend& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } + static unsigned default_precision() + { + return get_default_precision(); + } + static void default_precision(unsigned v) + { + get_default_precision() = v; + } + unsigned precision()const + { + return mpfr_get_prec(this->m_data) * 301L / 1000 - 1; + } + void precision(unsigned digits10) + { + mpfr_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); + } +private: + static unsigned& get_default_precision() + { + static unsigned val = 50; + return val; + } +}; + +template +inline void add(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_add(result.data(), result.data(), o.data(), MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_sub(result.data(), result.data(), o.data(), MPFR_RNDN); +} +template +inline void multiply(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_mul(result.data(), result.data(), o.data(), MPFR_RNDN); +} +template +inline void divide(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_div(result.data(), result.data(), o.data(), MPFR_RNDN); +} +template +inline void add(mpfr_real_backend& result, unsigned long i) +{ + mpfr_add_ui(result.data(), result.data(), i, MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& result, unsigned long i) +{ + mpfr_sub_ui(result.data(), result.data(), i, MPFR_RNDN); +} +template +inline void multiply(mpfr_real_backend& result, unsigned long i) +{ + mpfr_mul_ui(result.data(), result.data(), i, MPFR_RNDN); +} +template +inline void divide(mpfr_real_backend& result, unsigned long i) +{ + mpfr_div_ui(result.data(), result.data(), i, MPFR_RNDN); +} +template +inline void add(mpfr_real_backend& result, long i) +{ + if(i > 0) + mpfr_add_ui(result.data(), result.data(), i, MPFR_RNDN); + else + mpfr_sub_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& result, long i) +{ + if(i > 0) + mpfr_sub_ui(result.data(), result.data(), i, MPFR_RNDN); + else + mpfr_add_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); +} +template +inline void multiply(mpfr_real_backend& result, long i) +{ + mpfr_mul_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); + if(i < 0) + mpfr_neg(result.data(), result.data(), MPFR_RNDN); +} +template +inline void divide(mpfr_real_backend& result, long i) +{ + mpfr_div_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); + if(i < 0) + mpfr_neg(result.data(), result.data(), MPFR_RNDN); +} +// +// Specialised 3 arg versions of the basic operators: +// +template +inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_add(a.data(), x.data(), y.data(), MPFR_RNDN); +} +template +inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_add_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + mpfr_sub_ui(a.data(), x.data(), -y, MPFR_RNDN); + else + mpfr_add_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void add(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_add_ui(a.data(), y.data(), x, MPFR_RNDN); +} +template +inline void add(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_ui_sub(a.data(), -x, y.data(), MPFR_RNDN); + mpfr_neg(a.data(), a.data(), MPFR_RNDN); + } + else + mpfr_add_ui(a.data(), y.data(), x, MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_sub(a.data(), x.data(), y.data(), MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_sub_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + mpfr_add_ui(a.data(), x.data(), -y, MPFR_RNDN); + else + mpfr_sub_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_ui_sub(a.data(), x, y.data(), MPFR_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_add_ui(a.data(), y.data(), -x, MPFR_RNDN); + mpfr_neg(a.data(), a.data(), MPFR_RNDN); + } + else + mpfr_ui_sub(a.data(), x, y.data(), MPFR_RNDN); +} + +template +inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_mul(a.data(), x.data(), y.data(), MPFR_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_mul_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + { + mpfr_mul_ui(a.data(), x.data(), -y, MPFR_RNDN); + a.negate(); + } + else + mpfr_mul_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_mul_ui(a.data(), y.data(), x, MPFR_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_mul_ui(a.data(), y.data(), -x, MPFR_RNDN); + mpfr_neg(a.data(), a.data(), MPFR_RNDN); + } + else + mpfr_mul_ui(a.data(), y.data(), x, MPFR_RNDN); +} + +template +inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_div(a.data(), x.data(), y.data(), MPFR_RNDN); +} +template +inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_div_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + { + mpfr_div_ui(a.data(), x.data(), -y, MPFR_RNDN); + a.negate(); + } + else + mpfr_div_ui(a.data(), x.data(), y, MPFR_RNDN); +} +template +inline void divide(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_ui_div(a.data(), x, y.data(), MPFR_RNDN); +} +template +inline void divide(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_ui_div(a.data(), -x, y.data(), MPFR_RNDN); + mpfr_neg(a.data(), a.data(), MPFR_RNDN); + } + else + mpfr_ui_div(a.data(), x, y.data(), MPFR_RNDN); +} + +// +// Native non-member operations: +// +template +inline void sqrt(mpfr_real_backend* result, const mpfr_real_backend& val) +{ + mpfr_sqrt(result->data(), val.data(), MPFR_RNDN); +} + +template +inline void abs(mpfr_real_backend* result, const mpfr_real_backend& val) +{ + mpfr_abs(result->data(), val.data(), MPFR_RNDN); +} + +template +inline void fabs(mpfr_real_backend* result, const mpfr_real_backend& val) +{ + mpfr_abs(result->data(), val.data(), MPFR_RNDN); +} +template +inline void ceil(mpfr_real_backend* result, const mpfr_real_backend& val) +{ + mpfr_ceil(result->data(), val.data()); +} +template +inline void floor(mpfr_real_backend* result, const mpfr_real_backend& val) +{ + mpfr_floor(result->data(), val.data()); +} +template +inline void trunc(mpfr_real_backend* result, const mpfr_real_backend& val) +{ + mpfr_trunc(result->data(), val.data()); +} +template +inline void ldexp(mpfr_real_backend* result, const mpfr_real_backend& val, long e) +{ + if(e > 0) + mpfr_mul_2exp(result->data(), val.data(), e, MPFR_RNDN); + else if(e < 0) + mpfr_div_2exp(result->data(), val.data(), -e, MPFR_RNDN); +} +template +inline void frexp(mpfr_real_backend* result, const mpfr_real_backend& val, int* e) +{ + long v; + mpfr_get_d_2exp(&v, val.data(), MPFR_RNDN); + *e = v; + return ldexp(result, val, -v); +} +template +inline void frexp(mpfr_real_backend* result, const mpfr_real_backend& val, long* e) +{ + mpfr_get_d_2exp(e, val.data(), MPFR_RNDN); + return ldexp(result, val, -*e); +} + +typedef big_number > mpfr_real_50; +typedef big_number > mpfr_real_100; +typedef big_number > mpfr_real_500; +typedef big_number > mpfr_real_1000; +typedef big_number > mpfr_real; + +}} // namespaces + +#endif diff --git a/math/test/linpack-benchmark.cpp b/math/test/linpack-benchmark.cpp index 89ba6099..0511f863 100644 --- a/math/test/linpack-benchmark.cpp +++ b/math/test/linpack-benchmark.cpp @@ -19,12 +19,18 @@ http://www.netlib.org/f2c/libf2c.zip #include #include -#ifdef TEST_BIG_NUMBER +#ifdef TEST_MPF_100 #include typedef boost::math::mpf_real_100 real_type; +#elif defined(TEST_MPFR_100) +#include +typedef boost::math::mpfr_real_100 real_type; #elif defined(TEST_GMPXX) #include typedef mpf_class real_type; +#elif defined(TEST_MPFRXX) +#include +typedef mpfr_class real_type; #elif defined(TEST_EF_GMP) #define E_FLOAT_TYPE_GMP #include @@ -99,11 +105,16 @@ int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type extern "C" int MAIN__() { -#ifdef TEST_BIG_NUMBER +#ifdef TEST_MPF_100 + std::cout << "Testing big_number >" << std::endl; +#elif defined(TEST_MPFR_100) std::cout << "Testing big_number >" << std::endl; #elif defined(TEST_GMPXX) - std::cout << "Testing mpfr_class at 100 decimal degits" << std::endl; + std::cout << "Testing mpf_class at 100 decimal degits" << std::endl; mpf_set_default_prec(((100 + 1) * 1000L) / 301L); +#elif defined(TEST_MPFRXX) + std::cout << "Testing mpfr_class at 100 decimal degits" << std::endl; + mpfr_set_default_prec(((100 + 1) * 1000L) / 301L); #elif defined(TEST_EF_GMP) std::cout << "Testing gmp::e_float" << std::endl; #elif defined(TEST_MATH_EF) @@ -913,9 +924,7 @@ L30: real_type epslon_(real_type *x) { -#ifdef TEST_BIG_NUMBER - return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); -#elif defined(TEST_GMPXX) +#if defined(TEST_MPF_100) || defined(TEST_MPFR_100) || defined(TEST_GMPXX) || defined(TEST_MPFRXX) return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); #else return CAST_TO_RT(std::numeric_limits::epsilon()); diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index c87f94c0..9e7261a8 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -5,11 +5,13 @@ #include -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) # define TEST_MPF50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ +# define TEST_MPFR +# define TEST_MPFR_50 #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -30,6 +32,9 @@ #include #include #endif +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) +#include +#endif template void test_integer_ops(const boost::mpl::false_&){} @@ -599,9 +604,11 @@ int main() #endif #ifdef TEST_MPF boost::math::mpf_real::default_precision(1000); + /* boost::math::mpf_real r; r.precision(50); BOOST_TEST(r.precision() >= 50); + */ BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); test(); #endif @@ -610,6 +617,21 @@ int main() #endif #ifdef TEST_E_FLOAT test(); +#endif +#ifdef TEST_MPFR + test(); +#endif +#ifdef TEST_MPFR_50 + test(); #endif return boost::report_errors(); } + +namespace boost +{ + void assertion_failed(char const * expr, + char const * function, char const * file, long line) + { + std::cout << "Failed assertion in expression: " << expr << " in function: " << function << " in file: " << file << " at line: " << line < Date: Mon, 22 Aug 2011 12:03:49 +0000 Subject: [PATCH 011/256] Added new backend adapter type, plus tentative e_float support. Added numeric_limits support, plus embryonic test program. [SVN r74004] --- include/boost/math/big_number.hpp | 8 + .../math/big_number/arithmetic_backend.hpp | 147 ++++++++++++ include/boost/math/big_number/e_float.hpp | 33 +++ include/boost/math/big_number/gmp.hpp | 212 ++++++++++++++++++ include/boost/math/big_number/mpfr.hpp | 188 ++++++++++++++++ .../math/concepts/big_number_architypes.hpp | 38 ++++ math/test/linpack-benchmark.cpp | 35 ++- math/test/test_arithmetic.cpp | 14 +- math/test/test_numeric_limits.cpp | 117 ++++++++++ 9 files changed, 761 insertions(+), 31 deletions(-) create mode 100644 include/boost/math/big_number/arithmetic_backend.hpp create mode 100644 include/boost/math/big_number/e_float.hpp create mode 100644 math/test/test_numeric_limits.cpp diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index 434ddb79..b140dbf7 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -58,6 +58,14 @@ public: m_backend = canonical_value(v); } + template + big_number(V v, typename enable_if, mpl::not_ > > >::type* dummy1 = 0) + : m_backend(v) + { + proto::value(*this) = this; + BOOST_ASSERT(proto::value(*this) == this); + } + template big_number& operator=(const detail::big_number_exp& e) { diff --git a/include/boost/math/big_number/arithmetic_backend.hpp b/include/boost/math/big_number/arithmetic_backend.hpp new file mode 100644 index 00000000..ba8d7165 --- /dev/null +++ b/include/boost/math/big_number/arithmetic_backend.hpp @@ -0,0 +1,147 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_ARITH_BACKEND_HPP +#define BOOST_MATH_ARITH_BACKEND_HPP + +#include +#include +#include +#include +#include + +namespace boost{ +namespace math{ + +template +struct arithmetic_backend +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + arithmetic_backend(){} + arithmetic_backend(const arithmetic_backend& o) + { + m_value = o.m_value; + } + arithmetic_backend(const Arithmetic& o) : m_value(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + arithmetic_backend(arithmetic_backend&& o) : m_value(o.m_value) {} + arithmetic_backend(Arithmetic&& o) : m_value(o) {} +#endif + arithmetic_backend& operator = (const arithmetic_backend& o) + { + m_value = o.m_value; + return *this; + } + arithmetic_backend& operator = (boost::uintmax_t i) + { + m_value = i; + return *this; + } + arithmetic_backend& operator = (boost::intmax_t i) + { + m_value = i; + return *this; + } + arithmetic_backend& operator = (long double d) + { + m_value = d; + return *this; + } + arithmetic_backend& operator = (const char* s) + { + m_value = boost::lexical_cast(s); + return *this; + } + void swap(arithmetic_backend& o) + { + std::swap(m_value, o.m_value); + } + std::string str(unsigned digits, bool scientific)const + { + return boost::lexical_cast(m_value); + } + void negate() + { + m_value = -m_value; + } + int compare(const arithmetic_backend& o)const + { + return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); + } + int compare(boost::intmax_t i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(boost::uintmax_t i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(long double d)const + { + return m_value > d ? 1 : (m_value < d ? -1 : 0); + } + Arithmetic& data() { return m_value; } + const Arithmetic& data()const { return m_value; } +private: + Arithmetic m_value; +}; + +template +inline void add(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() += o.data(); +} +template +inline void subtract(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() -= o.data(); +} +template +inline void multiply(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() *= o.data(); +} +template +inline void divide(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() /= o.data(); +} + +}} // namespaces + + +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +template +class numeric_limits > > : public std::numeric_limits +{ + typedef std::numeric_limits base_type; + typedef boost::math::big_number > number_type; +public: + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } +}; + +#ifdef BOOST_NO_NOEXCEPT +# undef noexcept +#endif + +} + +#endif diff --git a/include/boost/math/big_number/e_float.hpp b/include/boost/math/big_number/e_float.hpp new file mode 100644 index 00000000..b531fa08 --- /dev/null +++ b/include/boost/math/big_number/e_float.hpp @@ -0,0 +1,33 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_EFX_BACKEND_HPP +#define BOOST_MATH_EFX_BACKEND_HPP + +#include +#include +#include +#include + +namespace boost{ +namespace math{ + +typedef big_number > e_float; + +template<> +inline void arithmetic_backend::negate() +{ + m_value.negate(); +} + +inline void abs(arithmetic_backend* result, const arithmetic_backend& arg) +{ + result->data() = ef::fabs(arg.data()); +} + + +}} // namespaces + +#endif diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index e9811c28..b137cf52 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -12,6 +12,8 @@ #include #include #include +#include +#include namespace boost{ namespace math{ @@ -981,4 +983,214 @@ typedef big_number mpz_int; }} // namespaces +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +// +// numeric_limits [partial] specializations for the types declared in this header: +// +template +class numeric_limits > > +{ + typedef boost::math::big_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_mul_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX - 1); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept + { + return -(max)(); + } + BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + BOOST_STATIC_CONSTEXPR int digits10 = Digits10; + // Is this really correct??? + BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1); + } + return value.second; + } + // What value should this be???? + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), digits); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR long min_exponent = LONG_MIN; + BOOST_STATIC_CONSTEXPR long min_exponent10 = (LONG_MIN / 1000) * 301L; + BOOST_STATIC_CONSTEXPR long max_exponent = LONG_MAX; + BOOST_STATIC_CONSTEXPR long max_exponent10 = (LONG_MAX / 1000) * 301L; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = true; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_to_nearest; + +private: + struct data_initializer + { + data_initializer() + { + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + std::numeric_limits > >::min(); + std::numeric_limits > >::max(); + } + void do_nothing()const{} + }; + static const data_initializer initializer; +}; + +template +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; + +template<> +class numeric_limits > > +{ + typedef boost::math::big_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = false; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = false; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 0; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +template<> +class numeric_limits +{ + typedef boost::math::mpz_int number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return (min)(); } + // Digits are unbounded, use zero for now: + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +#ifdef BOOST_NO_NOEXCEPT +# undef noexcept +#endif + +} // namespace std + #endif diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index 4589f68f..1aa60cae 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -610,4 +610,192 @@ typedef big_number > mpfr_real; }} // namespaces +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +// +// numeric_limits [partial] specializations for the types declared in this header: +// +template +class numeric_limits > > +{ + typedef boost::math::big_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 0.5; + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), -mpfr_get_emin(), MPFR_RNDN); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 0.5; + mpfr_mul_2exp(value.second.backend().data(), value.second.backend().data(), mpfr_get_emax(), MPFR_RNDN); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept + { + return -(max)(); + } + BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + BOOST_STATIC_CONSTEXPR int digits10 = Digits10; + // Is this really correct??? + BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1, MPFR_RNDN); + } + return value.second; + } + // What value should this be???? + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), digits, MPFR_RNDN); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR long min_exponent = MPFR_EMIN_DEFAULT; + BOOST_STATIC_CONSTEXPR long min_exponent10 = (MPFR_EMIN_DEFAULT / 1000) * 301L; + BOOST_STATIC_CONSTEXPR long max_exponent = MPFR_EMAX_DEFAULT; + BOOST_STATIC_CONSTEXPR long max_exponent10 = (MPFR_EMAX_DEFAULT / 1000) * 301L; + BOOST_STATIC_CONSTEXPR bool has_infinity = true; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = true; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_set_inf(value.second.backend().data(), 1); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_set_nan(value.second.backend().data()); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept + { + return number_type(0); + } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = true; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_to_nearest; + +private: + struct data_initializer + { + data_initializer() + { + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + std::numeric_limits > >::min(); + std::numeric_limits > >::max(); + std::numeric_limits > >::infinity(); + std::numeric_limits > >::quiet_NaN(); + } + void do_nothing()const{} + }; + static const data_initializer initializer; +}; + +template +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; + +template<> +class numeric_limits > > +{ + typedef boost::math::big_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = false; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = false; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 0; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +#ifdef noexcept +#undef noexcept +#endif + +} // namespace std #endif diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp index 6067b6e6..fc85bfa3 100644 --- a/include/boost/math/concepts/big_number_architypes.hpp +++ b/include/boost/math/concepts/big_number_architypes.hpp @@ -16,6 +16,11 @@ namespace boost{ namespace math{ namespace concepts{ +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4244) +#endif + struct big_number_backend_real_architype { typedef mpl::list signed_types; @@ -140,4 +145,37 @@ typedef boost::math::big_number big_number_re }}} // namespaces +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +template <> +class numeric_limits : public std::numeric_limits +{ + typedef std::numeric_limits base_type; + typedef boost::math::concepts::big_number_real_architype number_type; +public: + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } +}; + +#ifdef BOOST_NO_NOEXCEPT +# undef noexcept +#endif + +} + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + #endif diff --git a/math/test/linpack-benchmark.cpp b/math/test/linpack-benchmark.cpp index 0511f863..99c8c87b 100644 --- a/math/test/linpack-benchmark.cpp +++ b/math/test/linpack-benchmark.cpp @@ -31,16 +31,15 @@ typedef mpf_class real_type; #elif defined(TEST_MPFRXX) #include typedef mpfr_class real_type; -#elif defined(TEST_EF_GMP) -#define E_FLOAT_TYPE_GMP -#include -typedef e_float real_type; -#define CAST_TO_RT(x) real_type(x) -#elif defined(TEST_MATH_EF) -#define E_FLOAT_TYPE_GMP -#include -typedef boost::math::ef::e_float real_type; -//#define CAST_TO_RT(x) real_type(x) +#elif defined(TEST_E_FLOAT) +#include +#include +#include +typedef ::efx::e_float real_type; +using ef::abs; +#elif defined(TEST_E_FLOAT_BN) +#include +typedef boost::math::e_float real_type; #else typedef double real_type; #endif @@ -69,12 +68,6 @@ extern "C" { } #include - -#if defined(TEST_EF_GMP) -#include -using namespace ef; -#endif - using std::min; using std::max; @@ -115,10 +108,10 @@ extern "C" int MAIN__() #elif defined(TEST_MPFRXX) std::cout << "Testing mpfr_class at 100 decimal degits" << std::endl; mpfr_set_default_prec(((100 + 1) * 1000L) / 301L); -#elif defined(TEST_EF_GMP) - std::cout << "Testing gmp::e_float" << std::endl; -#elif defined(TEST_MATH_EF) - std::cout << "Testing boost::math::ef::e_float" << std::endl; +#elif defined(TEST_E_FLOAT) + std::cout << "Testing boost::ef::e_float" << std::endl; +#elif defined(TEST_E_FLOAT_BN) + std::cout << "Testing boost::math::e_float" << std::endl; #else std::cout << "Testing double" << std::endl; #endif @@ -926,6 +919,8 @@ real_type epslon_(real_type *x) { #if defined(TEST_MPF_100) || defined(TEST_MPFR_100) || defined(TEST_GMPXX) || defined(TEST_MPFRXX) return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); +#elif defined(TEST_E_FLOAT_BN) + return std::pow(10.0, 1-std::numeric_limits::digits10); #else return CAST_TO_RT(std::numeric_limits::epsilon()); #endif diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 9e7261a8..8df99829 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -12,6 +12,7 @@ # define TEST_MPZ # define TEST_MPFR # define TEST_MPFR_50 +# define TEST_E_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -29,8 +30,7 @@ #include #endif #ifdef TEST_E_FLOAT -#include -#include +#include #endif #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include @@ -616,7 +616,7 @@ int main() test(); #endif #ifdef TEST_E_FLOAT - test(); + test(); #endif #ifdef TEST_MPFR test(); @@ -627,11 +627,3 @@ int main() return boost::report_errors(); } -namespace boost -{ - void assertion_failed(char const * expr, - char const * function, char const * file, long line) - { - std::cout << "Failed assertion in expression: " << expr << " in function: " << function << " in file: " << file << " at line: " << line < + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +# define TEST_MPF50 +# define TEST_MPF +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR +# define TEST_MPFR_50 +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) +#include +#endif + +#define PRINT(x)\ + std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; + +template +void test() +{ + // + // Note really a test just yet, but we can at least print out all the values: + // + std::cout << "numeric_limits values for type " << typeid(Number).name() << std::endl; + + PRINT(is_specialized); + PRINT(min()); + PRINT(max()); + PRINT(lowest()); + PRINT(digits); + PRINT(digits10); + PRINT(max_digits10); + PRINT(is_signed); + PRINT(is_integer); + PRINT(is_exact); + PRINT(radix); + PRINT(epsilon()); + PRINT(round_error()); + PRINT(min_exponent); + PRINT(min_exponent10); + PRINT(max_exponent); + PRINT(max_exponent10); + PRINT(has_infinity); + PRINT(has_quiet_NaN); + PRINT(has_signaling_NaN); + PRINT(has_denorm); + PRINT(has_denorm_loss); + PRINT(infinity()); + PRINT(quiet_NaN()); + PRINT(signaling_NaN()); + PRINT(denorm_min()); + PRINT(is_iec559); + PRINT(is_bounded); + PRINT(is_modulo); + PRINT(traps); + PRINT(tinyness_before); + PRINT(round_style); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); +#endif +#ifdef TEST_MPF + boost::math::mpf_real::default_precision(1000); + /* + boost::math::mpf_real r; + r.precision(50); + BOOST_TEST(r.precision() >= 50); + */ + BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); + test(); +#endif +#ifdef TEST_MPZ + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif +#ifdef TEST_MPFR + test(); +#endif +#ifdef TEST_MPFR_50 + test(); +#endif + return boost::report_errors(); +} + From cdcf165e309d9cfa51477c2f141bd12f3af47e1f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 23 Aug 2011 18:31:03 +0000 Subject: [PATCH 012/256] Add increment, decrement and bitwise-shift operators. [SVN r74024] --- include/boost/math/big_number.hpp | 154 ++++++++++++++++++ .../boost/math/big_number/big_number_base.hpp | 2 + include/boost/math/big_number/default_ops.hpp | 28 ++++ include/boost/math/big_number/gmp.hpp | 24 ++- include/boost/math/big_number/mpfr.hpp | 4 +- math/test/test_arithmetic.cpp | 40 +++++ 6 files changed, 248 insertions(+), 4 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index b140dbf7..082c95b6 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -17,6 +17,9 @@ #include #include #include +#include +#include +#include #include namespace boost{ namespace math{ @@ -201,6 +204,65 @@ public: } return *this; } + // + // These operators are *not* proto-ized. + // The issue is that the increment/decrement must happen + // even if the result of the operator *is never used*. + // Possibly we could modify our expression wrapper to + // execute the increment/decrement on destruction, but + // correct implemetation will be tricky, so defered for now... + // + big_number& operator++() + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); + using big_num_default_ops::increment; + increment(m_backend); + return *this; + } + + big_number& operator--() + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); + using big_num_default_ops::decrement; + decrement(m_backend); + return *this; + } + + big_number operator++(int) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); + using big_num_default_ops::increment; + self_type temp(*this); + increment(m_backend); + return temp; + } + + big_number operator--(int) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); + using big_num_default_ops::decrement; + self_type temp(*this); + decrement(m_backend); + return temp; + } + + template + typename enable_if, big_number&>::type operator <<= (V val) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The left-shift operation is only valid for integer types"); + check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); + left_shift(m_backend, canonical_value(val)); + return *this; + } + + template + typename enable_if, big_number&>::type operator >>= (V val) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The right-shift operation is only valid for integer types"); + check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); + right_shift(m_backend, canonical_value(val)); + return *this; + } template typename enable_if, big_number& >::type @@ -237,6 +299,14 @@ public: return *this; } + // + // swap: + // + void swap(self_type& other) + { + m_backend.swap(other.backend()); + } + // // String conversion functions: // @@ -284,6 +354,29 @@ public: return m_backend; } private: + template + void check_shift_range(V val, const mpl::true_&, const mpl::true_&) + { + if(val > std::numeric_limits::max()) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); + if(val < 0) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); + } + template + void check_shift_range(V val, const mpl::false_&, const mpl::true_&) + { + if(val < 0) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); + } + template + void check_shift_range(V val, const mpl::true_&, const mpl::false_&) + { + if(val > std::numeric_limits::max()) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); + } + template + void check_shift_range(V val, const mpl::false_&, const mpl::false_&){} + template void do_assign(const Exp& e, const detail::add_immediates&) { @@ -363,6 +456,7 @@ private: template void do_assign(const Exp& e, const detail::modulus_immediates&) { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); using big_num_default_ops::modulus; typedef typename proto::tag_of::type>::type left_tag; typedef typename proto::tag_of::type>::type right_tag; @@ -575,6 +669,64 @@ private: typedef typename proto::arity_of::type tag_type; do_assign_function(e, tag_type()); } + template + void do_assign(const Exp& e, const proto::tag::shift_left&) + { + // We can only shift by an integer value, not an arbitrary expression: + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::arity_of::type right_arity; + BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); + typedef typename proto::result_of::value::type right_value_type; + BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); + typedef typename proto::tag_of::type tag_type; + do_assign_left_shift(proto::left(e), canonical_value(proto::value(proto::right(e))), tag_type()); + } + + template + void do_assign(const Exp& e, const proto::tag::shift_right&) + { + // We can only shift by an integer value, not an arbitrary expression: + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::arity_of::type right_arity; + BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); + typedef typename proto::result_of::value::type right_value_type; + BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); + typedef typename proto::tag_of::type tag_type; + do_assign_right_shift(proto::left(e), canonical_value(proto::value(proto::right(e))), tag_type()); + } + + template + void do_assign_right_shift(const Exp& e, const Val& val, const proto::tag::terminal&) + { + using big_num_default_ops::right_shift; + right_shift(m_backend, canonical_value(proto::value(e)), val); + } + + template + void do_assign_left_shift(const Exp& e, const Val& val, const proto::tag::terminal&) + { + using big_num_default_ops::left_shift; + left_shift(m_backend, canonical_value(proto::value(e)), val); + } + + template + void do_assign_right_shift(const Exp& e, const Val& val, const Tag&) + { + using big_num_default_ops::right_shift; + self_type temp(e); + right_shift(m_backend, temp.backend(), val); + } + + template + void do_assign_left_shift(const Exp& e, const Val& val, const Tag&) + { + using big_num_default_ops::left_shift; + self_type temp(e); + left_shift(m_backend, temp.backend(), val); + } + template void do_assign_function(const Exp& e, const mpl::long_<1>&) { @@ -804,6 +956,7 @@ private: template void do_modulus(const Exp& e, const proto::tag::terminal&) { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); using big_num_default_ops::modulus; modulus(m_backend, canonical_value(proto::value(e))); } @@ -811,6 +964,7 @@ private: template void do_modulus(const Exp& e, const Unknown&) { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); using big_num_default_ops::modulus; self_type temp(e); modulus(m_backend, canonical_value(proto::value(temp))); diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp index b3caed30..5a75e71d 100644 --- a/include/boost/math/big_number/big_number_base.hpp +++ b/include/boost/math/big_number/big_number_base.hpp @@ -29,6 +29,8 @@ struct big_number_grammar , proto::unary_plus< big_number_grammar > , proto::negate< big_number_grammar > , proto::modulus + , proto::shift_left + , proto::shift_right > {}; diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index 86a2aa09..c5b3f581 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -146,6 +146,34 @@ inline void modulus(T& t, const U& u, const V& v) } } +template +inline void increment(T& val) +{ + typedef typename mpl::front::type ui_type; + add(val, static_cast(1u)); +} + +template +inline void decrement(T& val) +{ + typedef typename mpl::front::type ui_type; + subtract(val, static_cast(1u)); +} + +template +inline void left_shift(T& result, const T& arg, const V val) +{ + result = arg; + left_shift(result, val); +} + +template +inline void right_shift(T& result, const T& arg, const V val) +{ + result = arg; + right_shift(result, val); +} + // // Functions: // diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index b137cf52..6397d354 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -862,6 +862,26 @@ inline void divide(gmp_int& t, long i) if(i < 0) mpz_neg(t.data(), t.data()); } +template +inline void left_shift(gmp_int& t, UI i) +{ + mpz_mul_2exp(t.data(), t.data(), static_cast(i)); +} +template +inline void right_shift(gmp_int& t, UI i) +{ + mpz_fdiv_q_2exp(t.data(), t.data(), static_cast(i)); +} +template +inline void left_shift(gmp_int& t, const gmp_int& v, UI i) +{ + mpz_mul_2exp(t.data(), v.data(), static_cast(i)); +} +template +inline void right_shift(gmp_int& t, const gmp_int& v, UI i) +{ + mpz_fdiv_q_2exp(t.data(), v.data(), static_cast(i)); +} inline void add(gmp_int& t, const gmp_int& p, const gmp_int& o) { @@ -1087,8 +1107,8 @@ private: { std::numeric_limits > >::epsilon(); std::numeric_limits > >::round_error(); - std::numeric_limits > >::min(); - std::numeric_limits > >::max(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); } void do_nothing()const{} }; diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index 1aa60cae..380e4eaa 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -741,8 +741,8 @@ private: { std::numeric_limits > >::epsilon(); std::numeric_limits > >::round_error(); - std::numeric_limits > >::min(); - std::numeric_limits > >::max(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); std::numeric_limits > >::infinity(); std::numeric_limits > >::quiet_NaN(); } diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 8df99829..70c44787 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -36,6 +36,11 @@ #include #endif +#define BOOST_TEST_THROW(x, EX)\ + try { x; BOOST_ERROR("Expected exception not thrown"); } \ + catch(const EX&){}\ + catch(...){ BOOST_ERROR("Incorrect exception type thrown"); } + template void test_integer_ops(const boost::mpl::false_&){} @@ -104,6 +109,41 @@ void test_integer_ops(const boost::mpl::true_&) a %= -7LL; BOOST_TEST(a == -20 % -7); #endif + a = 20; + BOOST_TEST(++a == 21); + BOOST_TEST(--a == 20); + BOOST_TEST(a++ == 20); + BOOST_TEST(a == 21); + BOOST_TEST(a-- == 21); + BOOST_TEST(a == 20); + a = 2000; + a <<= 20; + BOOST_TEST(a == 2000L << 20); + a >>= 20; + BOOST_TEST(a == 2000); + a <<= 20u; + BOOST_TEST(a == 2000L << 20); + a >>= 20u; + BOOST_TEST(a == 2000); + BOOST_TEST_THROW(a <<= -20, std::out_of_range); + BOOST_TEST_THROW(a >>= -20, std::out_of_range); +#ifndef BOOST_NO_LONG_LONG + if(sizeof(long long) > sizeof(std::size_t)) + { + // extreme values should trigger an exception: + BOOST_TEST_THROW(a >>= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + BOOST_TEST_THROW(a <<= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + } +#endif + a = 20; + b = a << 20; + BOOST_TEST(b == (20 << 20)); + b = a >> 2; + BOOST_TEST(b == (20 >> 2)); + b = (a + 2) << 10; + BOOST_TEST(b == (22 << 10)); + b = (a + 3) >> 3; + BOOST_TEST(b == (23 >> 3)); // // Non-member functions: // From b1986d204d0d69f2fe124d530a7f9df08ec8b4bd Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 24 Aug 2011 11:27:08 +0000 Subject: [PATCH 013/256] Add sign and is_zero functions. Add use in boolean context. [SVN r74042] --- include/boost/math/big_number.hpp | 14 +++- .../boost/math/big_number/big_number_base.hpp | 65 ++++++++++++++----- include/boost/math/big_number/default_ops.hpp | 13 ++++ include/boost/math/big_number/e_float.hpp | 11 ++++ include/boost/math/big_number/gmp.hpp | 20 ++++++ include/boost/math/big_number/mpfr.hpp | 11 ++++ math/test/test_arithmetic.cpp | 49 ++++++++++++++ 7 files changed, 166 insertions(+), 17 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index 082c95b6..d5bb02f6 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -306,7 +306,19 @@ public: { m_backend.swap(other.backend()); } - + // + // Zero and sign: + // + bool is_zero() + { + using big_num_default_ops::is_zero; + return is_zero(m_backend); + } + int sign() + { + using big_num_default_ops::get_sign; + return get_sign(m_backend); + } // // String conversion functions: // diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp index 5a75e71d..9c432a6c 100644 --- a/include/boost/math/big_number/big_number_base.hpp +++ b/include/boost/math/big_number/big_number_base.hpp @@ -41,22 +41,6 @@ struct big_number_domain : proto::domain< proto::generator, big_number_grammar> {}; -template -struct big_number_exp - : proto::extends, big_number_domain> -{ - typedef - proto::extends, big_number_domain> base_type; - - big_number_exp(Expr const &expr = Expr()) - : base_type(expr) - {} - template - big_number_exp(const Other& o) - : base_type(o) - {} -}; - struct CalcDepth : proto::or_< proto::when< proto::terminal, @@ -447,6 +431,55 @@ struct backend_type > typedef Backend type; }; +template +struct big_number_exp + : proto::extends, big_number_domain> +{ +private: + typedef proto::extends, big_number_domain> base_type; + typedef big_number_exp self_type; + typedef typename expression_type::type number_type; + typedef void (self_type::*unmentionable_type)(); + void unmentionable_proc(){} + unmentionable_type boolean_context_from_terminal(const number_type* pval)const + { + return pval->is_zero() ? 0 : &self_type::unmentionable_proc; + } + unmentionable_type boolean_context_from_terminal(number_type* pval)const + { + return pval->is_zero() ? 0 : &self_type::unmentionable_proc; + } + template + unmentionable_type boolean_context_from_terminal(const Terminal& val)const + { + return val ? 0 : &self_type::unmentionable_proc; + } + unmentionable_type boolean_context(const proto::tag::terminal&)const + { + return boolean_context_from_terminal(proto::value(*this)); + } + template + unmentionable_type boolean_context(const Tag&)const + { + // we have to evaluate the expression template: + number_type result(*this); + return result.is_zero() ? 0 : &self_type::unmentionable_proc; + } +public: + big_number_exp(Expr const &expr = Expr()) + : base_type(expr) + {} + template + big_number_exp(const Other& o) + : base_type(o) + {} + + operator unmentionable_type()const + { + return boolean_context(typename proto::tag_of::type()); + } +}; + } // namespace detail // diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index c5b3f581..be28df3c 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -174,6 +174,19 @@ inline void right_shift(T& result, const T& arg, const V val) right_shift(result, val); } +template +inline bool is_zero(const T& val) +{ + typedef typename mpl::front::type ui_type; + return val.compare(static_cast(0)) == 0; +} +template +inline int get_sign(const T& val) +{ + typedef typename mpl::front::type ui_type; + return val.compare(static_cast(0)); +} + // // Functions: // diff --git a/include/boost/math/big_number/e_float.hpp b/include/boost/math/big_number/e_float.hpp index b531fa08..977d613d 100644 --- a/include/boost/math/big_number/e_float.hpp +++ b/include/boost/math/big_number/e_float.hpp @@ -27,6 +27,17 @@ inline void abs(arithmetic_backend* result, const arithmetic_backe result->data() = ef::fabs(arg.data()); } +inline bool is_zero(const arithmetic_backend& val) +{ + return val.data().iszero(); +} +inline int get_sign(const arithmetic_backend& val) +{ + return val.data().isneg() ? -1 : val.data().iszero() ? 0 : 1; +} + + + }} // namespaces diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 6397d354..53d648b1 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -542,6 +542,17 @@ inline void divide(gmp_real& a, long x, const gmp_real& y) mpf_ui_div(a.data(), x, y.data()); } +template +inline bool is_zero(const gmp_real& val) +{ + return mpf_sgn(val.data()) == 0; +} +template +inline int get_sign(const gmp_real& val) +{ + return mpf_sgn(val.data()); +} + // // Native non-member operations: // @@ -986,6 +997,15 @@ inline void divide(gmp_int& t, const gmp_int& p, long i) mpz_neg(t.data(), t.data()); } +inline bool is_zero(const gmp_int& val) +{ + return mpz_sgn(val.data()) == 0; +} +inline int get_sign(const gmp_int& val) +{ + return mpz_sgn(val.data()); +} + inline void abs(gmp_int* result, const gmp_int& val) { mpz_abs(result->data(), val.data()); diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index 380e4eaa..5e015d53 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -544,6 +544,17 @@ inline void divide(mpfr_real_backend& a, long x, const mpfr_real_backe mpfr_ui_div(a.data(), x, y.data(), MPFR_RNDN); } +template +inline bool is_zero(const mpfr_real_backend& val) +{ + return 0 != mpfr_zero_p(val.data()); +} +template +inline int get_sign(const mpfr_real_backend& val) +{ + return mpfr_sgn(val.data()); +} + // // Native non-member operations: // diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 70c44787..327a575f 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -41,6 +41,16 @@ catch(const EX&){}\ catch(...){ BOOST_ERROR("Incorrect exception type thrown"); } +#undef BOOST_TEST +#define BOOST_TEST(x)\ + try {\ + if(x){}else{ BOOST_ERROR("Value was zero: "); }\ + }\ + catch(const std::exception& e){ \ + BOOST_ERROR("Unexpected exception: ");\ + BOOST_LIGHTWEIGHT_TEST_OSTREAM << e.what() << std::endl;\ + } + template void test_integer_ops(const boost::mpl::false_&){} @@ -631,6 +641,45 @@ void test() BOOST_TEST((72 < b+a) == false); BOOST_TEST((72 >= b+a) == true); BOOST_TEST((72 > b+a) == false); + // + // Test sign and zero functions, plus use in boolian context: + // + a = 20; + BOOST_TEST(a.sign() > 0); + BOOST_TEST(!a.is_zero()); + a = -20; + BOOST_TEST(a.sign() < 0); + BOOST_TEST(!a.is_zero()); + a = 0; + BOOST_TEST(a.sign() == 0); + BOOST_TEST(a.is_zero()); + if(a) + { + BOOST_ERROR("Unexpected non-zero result"); + } + if(!a){} + else + { + BOOST_ERROR("Unexpected zero result"); + } + b = 2; + if(!b) + { + BOOST_ERROR("Unexpected zero result"); + } + if(b){} + else + { + BOOST_ERROR("Unexpected non-zero result"); + } + if(a && b) + { + BOOST_ERROR("Unexpected zero result"); + } + if(!(a || b)) + { + BOOST_ERROR("Unexpected zero result"); + } } From 32ad75f48b5e1faa7d66adbd50029200ba391d14 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 24 Aug 2011 11:57:52 +0000 Subject: [PATCH 014/256] Add test cases for expression-template used in boolean context. [SVN r74043] --- math/test/test_arithmetic.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 327a575f..35bc6682 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -680,6 +680,15 @@ void test() { BOOST_ERROR("Unexpected zero result"); } + if(a + b){} + else + { + BOOST_ERROR("Unexpected zero result"); + } + if(b - 2) + { + BOOST_ERROR("Unexpected non-zero result"); + } } From b48a341d164749a289c2fdb8b3b1ca3e56f63a15 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 25 Aug 2011 16:09:57 +0000 Subject: [PATCH 015/256] Add conversion routines. Add Jamfile. Fix broken stream operators. [SVN r74057] --- include/boost/math/big_number.hpp | 49 +++++- .../boost/math/big_number/big_number_base.hpp | 6 +- include/boost/math/big_number/default_ops.hpp | 60 +++++++ include/boost/math/big_number/e_float.hpp | 28 +++ include/boost/math/big_number/gmp.hpp | 28 +++ include/boost/math/big_number/mpfr.hpp | 41 ++++- math/config/Jamfile.v2 | 45 +++++ math/config/has_e_float.cpp | 17 ++ math/config/has_gcc_visibility.cpp | 13 ++ math/config/has_gmp.cpp | 7 + math/config/has_gmpxx.cpp | 7 + math/config/has_long_double_support.cpp | 10 ++ math/config/has_mpfr.cpp | 7 + math/config/has_mpfr_class.cpp | 14 ++ math/config/has_mpreal.cpp | 14 ++ math/config/has_ntl_rr.cpp | 12 ++ math/test/Jamfile.v2 | 166 ++++++++++++++++++ math/test/test_arithmetic.cpp | 31 +++- 18 files changed, 537 insertions(+), 18 deletions(-) create mode 100644 math/config/Jamfile.v2 create mode 100644 math/config/has_e_float.cpp create mode 100644 math/config/has_gcc_visibility.cpp create mode 100644 math/config/has_gmp.cpp create mode 100644 math/config/has_gmpxx.cpp create mode 100644 math/config/has_long_double_support.cpp create mode 100644 math/config/has_mpfr.cpp create mode 100644 math/config/has_mpfr_class.cpp create mode 100644 math/config/has_mpreal.cpp create mode 100644 math/config/has_ntl_rr.cpp create mode 100644 math/test/Jamfile.v2 diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index d5bb02f6..d8dae762 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -326,6 +326,14 @@ public: { return m_backend.str(digits, scientific); } + template + T convert_to()const + { + using big_num_default_ops::convert_to; + T result; + convert_to(&result, m_backend); + return result; + } // // Default precision: // @@ -1190,22 +1198,47 @@ inline typename boost::enable_if, bool>: { return 0 < detail::big_number_compare(a, b); } - -template -inline std::ostream& operator << (std::ostream& os, const big_number& r) +// +// Because proto overloads these << operators, we need version that accept both +// const and non-const RHS values, otherwise the proto version will be found +// with unpleasant results... not only that, but the stream parameter has to be a template +// otherwise the LHS of the expression would have to be *exactly* of type std::ostream +// for the overload to be found (ie doesn't work for std::fstream etc unless we do this...) +// +template +inline typename enable_if, std::ostream&>::type operator << (Stream& os, const big_number& r) { return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); } -template -inline std::ostream& operator << (std::ostream& os, const detail::big_number_exp& r) + +template +inline typename enable_if, std::ostream&>::type operator << (Stream& os, big_number& r) { - typedef typename detail::expression_type::type value_type; + return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); +} + +namespace detail{ + +template +inline typename enable_if, std::ostream&>::type operator << (Stream& os, const big_number_exp& r) +{ + typedef typename expression_type >::type value_type; value_type temp(r); return os << temp; } -template -inline std::istream& operator >> (std::istream& is, big_number& r) +template +inline typename enable_if, std::ostream&>::type operator << (Stream& os, big_number_exp& r) +{ + typedef typename expression_type >::type value_type; + value_type temp(r); + return os << temp; +} + +} + +template +inline typename enable_if, std::istream&>::type operator >> (Stream& is, big_number& r) { std::string s; is >> s; diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp index 9c432a6c..83e635a2 100644 --- a/include/boost/math/big_number/big_number_base.hpp +++ b/include/boost/math/big_number/big_number_base.hpp @@ -436,9 +436,9 @@ struct big_number_exp : proto::extends, big_number_domain> { private: - typedef proto::extends, big_number_domain> base_type; - typedef big_number_exp self_type; - typedef typename expression_type::type number_type; + typedef proto::extends, big_number_domain> base_type; + typedef big_number_exp self_type; + typedef typename remove_reference::type>::type number_type; typedef void (self_type::*unmentionable_type)(); void unmentionable_proc(){} unmentionable_type boolean_context_from_terminal(const number_type* pval)const diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index be28df3c..57fcf2ba 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -187,6 +187,66 @@ inline int get_sign(const T& val) return val.compare(static_cast(0)); } +template +struct has_enough_bits +{ + template + struct type : public mpl::and_ >, mpl::bool_::digits >= b> >{}; +}; + +template +struct terminal +{ + terminal(const R& v) : value(v){} + terminal(){} + terminal& operator = (R val) { value = val; } + R value; + operator R()const { return value; } +}; + +template +struct calculate_next_larger_type +{ + typedef typename mpl::if_< + is_signed, + typename B::signed_types, + typename mpl::if_< + is_unsigned, + typename B::unsigned_types, + typename B::real_types + >::type + >::type list_type; + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + list_type, + pred_type + >::type iter_type; + typedef typename mpl::eval_if< + is_same::type, iter_type>, + mpl::identity >, + mpl::deref + >::type type; +}; + +template +inline void convert_to(R* result, const B& backend) +{ + typedef calculate_next_larger_type::type next_type; + next_type n; + convert_to(&n, backend); + *result = static_cast(n); +} + +template +inline void convert_to(terminal* result, const B& backend) +{ + // + // We ran out of types to try for the convertion, try + // a lexical_cast and hope for the best: + // + result->value = boost::lexical_cast(backend.str(0, false)); +} + // // Functions: // diff --git a/include/boost/math/big_number/e_float.hpp b/include/boost/math/big_number/e_float.hpp index 977d613d..402c4379 100644 --- a/include/boost/math/big_number/e_float.hpp +++ b/include/boost/math/big_number/e_float.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace boost{ namespace math{ @@ -21,6 +22,17 @@ inline void arithmetic_backend::negate() { m_value.negate(); } +template<> +inline std::string arithmetic_backend::str(unsigned digits, bool scientific)const +{ + std::fstream os; + os << std::setprecision(digits ? digits : efx::e_float::ef_digits + 5); + if(scientific) + os << std::scientific; + std::string result; + this->data().wr_string(result, os); + return result; +} inline void abs(arithmetic_backend* result, const arithmetic_backend& arg) { @@ -36,6 +48,22 @@ inline int get_sign(const arithmetic_backend& val) return val.data().isneg() ? -1 : val.data().iszero() ? 0 : 1; } +inline void convert_to(boost::uintmax_t* result, const arithmetic_backend& val) +{ + *result = val.data().extract_unsigned_long_long(); +} +inline void convert_to(boost::intmax_t* result, const arithmetic_backend& val) +{ + *result = val.data().extract_signed_long_long(); +} +inline void convert_to(double* result, const arithmetic_backend& val) +{ + *result = val.data().extract_double(); +} +inline void convert_to(long double* result, const arithmetic_backend& val) +{ + *result = val.data().extract_long_double(); +} diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 53d648b1..51d35fe0 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -553,6 +553,22 @@ inline int get_sign(const gmp_real& val) return mpf_sgn(val.data()); } +template +inline void convert_to(unsigned long* result, const gmp_real& val) +{ + *result = mpf_get_ui(val.data()); +} +template +inline void convert_to(long* result, const gmp_real& val) +{ + *result = mpf_get_si(val.data()); +} +template +inline void convert_to(double* result, const gmp_real& val) +{ + *result = mpf_get_d(val.data()); +} + // // Native non-member operations: // @@ -1005,6 +1021,18 @@ inline int get_sign(const gmp_int& val) { return mpz_sgn(val.data()); } +inline void convert_to(unsigned long* result, const gmp_int& val) +{ + *result = mpz_get_ui(val.data()); +} +inline void convert_to(long* result, const gmp_int& val) +{ + *result = mpz_get_si(val.data()); +} +inline void convert_to(double* result, const gmp_int& val) +{ + *result = mpz_get_d(val.data()); +} inline void abs(gmp_int* result, const gmp_int& val) { diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index 5e015d53..a9aeac6f 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -159,10 +159,7 @@ struct mpfr_real_imp { std::string result; mp_exp_t e; - void *(*alloc_func_ptr) (size_t); - void *(*realloc_func_ptr) (void *, size_t, size_t); - void (*free_func_ptr) (void *, size_t); - const char* ps = mpfr_get_str (0, &e, 10, digits, m_data, MPFR_RNDN); + char* ps = mpfr_get_str (0, &e, 10, digits, m_data, MPFR_RNDN); std::ptrdiff_t sl = std::strlen(ps); unsigned chars = sl; if(sl == 0) @@ -192,8 +189,7 @@ struct mpfr_real_imp if(e) result += "e" + lexical_cast(e); } - mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); - (*free_func_ptr)((void*)ps, sl + 1); + mpfr_free_str(ps); return result; } ~mpfr_real_imp() @@ -555,6 +551,39 @@ inline int get_sign(const mpfr_real_backend& val) return mpfr_sgn(val.data()); } +template +inline void convert_to(unsigned long* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_ui(val.data(), MPFR_RNDN); +} +template +inline void convert_to(long* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_si(val.data(), MPFR_RNDN); +} +#ifdef _MPFR_H_HAVE_INTMAX_T +template +inline void convert_to(boost::uintmax_t* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_uj(val.data(), MPFR_RNDN); +} +template +inline void convert_to(boost::intmax_t* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_sj(val.data(), MPFR_RNDN); +} +#endif +template +inline void convert_to(double* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_d(val.data(), MPFR_RNDN); +} +template +inline void convert_to(long double* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_ld(val.data(), MPFR_RNDN); +} + // // Native non-member operations: // diff --git a/math/config/Jamfile.v2 b/math/config/Jamfile.v2 new file mode 100644 index 00000000..832e2936 --- /dev/null +++ b/math/config/Jamfile.v2 @@ -0,0 +1,45 @@ +# copyright John Maddock 2008 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt. + +import modules ; +import path ; + +local ntl-path = [ modules.peek : NTL_PATH ] ; +local gmp_path = [ modules.peek : GMP_PATH ] ; +local mpfr_path = [ modules.peek : MPFR_PATH ] ; +local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; + +if ! $(e_float_path) +{ + e_float_path = ../../../../e_float ; +} + +ECHO $(BOOST_E_FLOAT_PATH) + +obj has_long_double_support : has_long_double_support.cpp ; +obj has_mpfr_class : has_mpfr_class.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; +obj has_mpreal : has_mpreal.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/mpfrc++ ; +obj has_ntl_rr : has_ntl_rr.cpp : $(ntl-path)/include ; +obj has_gmpxx : has_gmpxx.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; +obj has_gcc_visibility : has_gcc_visibility.cpp : + gcc:-fvisibility=hidden gcc:-Werror ; +obj has_e_float : has_e_float.cpp : $(e_float_path) ; +obj has_gmp : has_gmp.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; +obj has_mpfr : has_mpfr.cpp : + $(mpfr_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; + +explicit has_long_double_support ; +explicit has_mpfr_class ; +explicit has_mpreal ; +explicit has_ntl_rr ; +explicit has_gmpxx ; +explicit has_gcc_visibility ; +explicit has_e_float ; +explicit has_gmp ; +explicit has_mpfr ; diff --git a/math/config/has_e_float.cpp b/math/config/has_e_float.cpp new file mode 100644 index 00000000..8cadc5c6 --- /dev/null +++ b/math/config/has_e_float.cpp @@ -0,0 +1,17 @@ +// Copyright John Maddock 2011. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#ifdef _MSC_VER +# pragma warning (disable : 4100) // unreferenced formal parameter +#endif + +#define E_FLOAT_TYPE_EFX + +#include +#include +#include + + diff --git a/math/config/has_gcc_visibility.cpp b/math/config/has_gcc_visibility.cpp new file mode 100644 index 00000000..6c7d6f91 --- /dev/null +++ b/math/config/has_gcc_visibility.cpp @@ -0,0 +1,13 @@ +// Copyright John Maddock 20010. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef __GNUC__ +# error "This is a GCC specific test case". +#endif + +int main() +{ + return 0; +} diff --git a/math/config/has_gmp.cpp b/math/config/has_gmp.cpp new file mode 100644 index 00000000..582f0027 --- /dev/null +++ b/math/config/has_gmp.cpp @@ -0,0 +1,7 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + diff --git a/math/config/has_gmpxx.cpp b/math/config/has_gmpxx.cpp new file mode 100644 index 00000000..edf62d8c --- /dev/null +++ b/math/config/has_gmpxx.cpp @@ -0,0 +1,7 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + diff --git a/math/config/has_long_double_support.cpp b/math/config/has_long_double_support.cpp new file mode 100644 index 00000000..d314cf38 --- /dev/null +++ b/math/config/has_long_double_support.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#error "long double support is not supported by Boost.Math on this Plaform: the long double version of the TR1 library will not be built." +#endif diff --git a/math/config/has_mpfr.cpp b/math/config/has_mpfr.cpp new file mode 100644 index 00000000..49d12a0b --- /dev/null +++ b/math/config/has_mpfr.cpp @@ -0,0 +1,7 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + diff --git a/math/config/has_mpfr_class.cpp b/math/config/has_mpfr_class.cpp new file mode 100644 index 00000000..8eb3c7b2 --- /dev/null +++ b/math/config/has_mpfr_class.cpp @@ -0,0 +1,14 @@ +// Copyright John Maddock 2008. +// Copyright Paul A. Britow 2009 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# pragma warning (disable : 4127) // conditional expression is constant +# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) +# pragma warning (disable : 4512) // assignment operator could not be generated +#endif + +#include + diff --git a/math/config/has_mpreal.cpp b/math/config/has_mpreal.cpp new file mode 100644 index 00000000..8ee8897d --- /dev/null +++ b/math/config/has_mpreal.cpp @@ -0,0 +1,14 @@ +// Copyright John Maddock 2008. +// Copyright Paul A. Britow 2009 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# pragma warning (disable : 4127) // conditional expression is constant +# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) +# pragma warning (disable : 4512) // assignment operator could not be generated +#endif + +#include + diff --git a/math/config/has_ntl_rr.cpp b/math/config/has_ntl_rr.cpp new file mode 100644 index 00000000..f3844217 --- /dev/null +++ b/math/config/has_ntl_rr.cpp @@ -0,0 +1,12 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#ifdef _MSC_VER +# pragma warning (disable : 4100) // unreferenced formal parameter +#endif + +#include + diff --git a/math/test/Jamfile.v2 b/math/test/Jamfile.v2 new file mode 100644 index 00000000..16b71922 --- /dev/null +++ b/math/test/Jamfile.v2 @@ -0,0 +1,166 @@ +# copyright John Maddock 2008 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt. + +import modules ; +import path ; + +local ntl-path = [ modules.peek : NTL_PATH ] ; +local gmp_path = [ modules.peek : GMP_PATH ] ; +local mpfr_path = [ modules.peek : MPFR_PATH ] ; +local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; + +if ! $(e_float_path) +{ + e_float_path = ../../../../e_float ; +} + +project : requirements + $(gmp_path) + $(gmp_path)/mpfr + $(gmp_path)/gmpfrxx + $(mpfr_path) + ../../.. + $(e_float_path) + $(gmp_path) + $(mpfr_path) + $(mpfr_path)/build.vc10/lib/Win32/Debug + msvc:static + E_FLOAT_DIGITS10=100 + E_FLOAT_TYPE_EFX + ; + +lib gmp ; +lib mpfr ; + +E_FLOAT_SRC = [ GLOB $(e_float_path)/libs/e_float/src/e_float : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/e_float/efx : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/constants : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/elementary : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/gamma : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/integer : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/tables : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/zeta : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/constants : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/elementary : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/utility : *.cpp ] + ; + +lib e_float : $(E_FLOAT_SRC) + : + [ check-target-builds ../config//has_e_float : : no ] + ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : test_arithmetic_backend_concept ; + +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpf50 ; + +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpf ; + +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPZ + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpz ; + +run test_arithmetic.cpp mpfr gmp + : # command line + : # input files + : # requirements + TEST_MPFR + [ check-target-builds ../config//has_mpfr : : no ] + : test_arithmetic_mpfr ; + +run test_arithmetic.cpp mpfr gmp + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_arithmetic_mpfr_50 ; + +run test_arithmetic.cpp $(E_FLOAT_SRC) + : # command line + : # input files + : # requirements + TEST_E_FLOAT + [ check-target-builds ../config//has_e_float : : no ] + : test_arithmetic_e_float ; + +run test_numeric_limits.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : test_numeric_limits_backend_concept ; + +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpf50 ; + +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpf ; + +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPZ + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpz ; + +run test_numeric_limits.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR + [ check-target-builds ../config//has_mpfr : : no ] + : test_numeric_limits_mpfr ; + +run test_numeric_limits.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_numeric_limits_mpfr_50 ; + +run test_numeric_limits.cpp $(E_FLOAT_SRC) + : # command line + : # input files + : # requirements + TEST_E_FLOAT + [ check-target-builds ../config//has_e_float : : no ] + : test_numeric_limits_e_float ; + + + diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 35bc6682..74111c7b 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -174,7 +174,6 @@ template void test_real_ops(const boost::mpl::true_&) { #if defined(TEST_MPF) || defined(TEST_MPF_50) - std::cout << "Root2 = " << sqrt(Real(2)) << std::endl; BOOST_TEST(abs(Real(2)) == 2); BOOST_TEST(abs(Real(-2)) == 2); BOOST_TEST(fabs(Real(2)) == 2); @@ -203,6 +202,16 @@ void test_real_ops(const boost::mpl::true_&) #endif } +#ifdef TEST_E_FLOAT + +template +struct lexical_cast_target_type +{ + typedef long double type; +}; + +#else + template struct lexical_cast_target_type { @@ -217,6 +226,8 @@ struct lexical_cast_target_type >::type type; }; +#endif + template void test_negative_mixed(boost::mpl::true_ const&) { @@ -312,6 +323,10 @@ void test_mixed() BOOST_TEST(Real(n2) == n2); BOOST_TEST(Real(n3) == n3); BOOST_TEST(Real(n4) == n4); + BOOST_TEST(Real(n1).template convert_to() == n1); + BOOST_TEST(Real(n2).template convert_to() == n2); + BOOST_TEST(Real(n3).template convert_to() == n3); + BOOST_TEST(Real(n4).template convert_to() == n4); BOOST_TEST(n1 == Real(n1)); BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); @@ -689,6 +704,20 @@ void test() { BOOST_ERROR("Unexpected non-zero result"); } + // + // Test iostreams: + // + std::stringstream ss; + a = 20; + b = 2; + ss << a; + ss >> c; + BOOST_TEST(a == c); + ss.clear(); + ss << a + b; + ss >> c; + BOOST_TEST(c == 22); + BOOST_TEST(c == a + b); } From 439ae1589f9a04e8953d73e7a1f2a83574570c75 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 27 Aug 2011 16:37:01 +0000 Subject: [PATCH 016/256] Add bitwise integer ops. Reorganise proto grammar. [SVN r74089] --- include/boost/math/big_number.hpp | 353 +++++++++++++++--- .../boost/math/big_number/big_number_base.hpp | 181 ++++++++- include/boost/math/big_number/default_ops.hpp | 74 ++++ include/boost/math/big_number/gmp.hpp | 35 ++ math/test/test_arithmetic.cpp | 83 ++++ 5 files changed, 668 insertions(+), 58 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index d8dae762..cd21fff5 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -204,6 +204,16 @@ public: } return *this; } + template + typename enable_if, big_number& >::type + operator%=(const V& v) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + using big_num_default_ops::modulus; + modulus(m_backend, canonical_value(v)); + return *this; + } + // // These operators are *not* proto-ized. // The issue is that the increment/decrement must happen @@ -264,16 +274,6 @@ public: return *this; } - template - typename enable_if, big_number& >::type - operator%=(const V& v) - { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; - modulus(m_backend, canonical_value(v)); - return *this; - } - template big_number& operator/=(const detail::big_number_exp& e) { @@ -299,6 +299,82 @@ public: return *this; } + template + big_number& operator&=(const detail::big_number_exp& e) + { + // Create a temporary if the RHS references *this, but not + // if we're just doing an x &= x; + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_bitwise_and(temp, typename proto::tag_of::type()); + } + else + { + do_bitwise_and(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator&=(const V& v) + { + using big_num_default_ops::bitwise_and; + bitwise_and(m_backend, canonical_value(v)); + return *this; + } + + template + big_number& operator|=(const detail::big_number_exp& e) + { + // Create a temporary if the RHS references *this, but not + // if we're just doing an x |= x; + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_bitwise_or(temp, typename proto::tag_of::type()); + } + else + { + do_bitwise_or(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator|=(const V& v) + { + using big_num_default_ops::bitwise_or; + bitwise_or(m_backend, canonical_value(v)); + return *this; + } + + template + big_number& operator^=(const detail::big_number_exp& e) + { + if(contains_self(e)) + { + self_type temp(e); + do_bitwise_xor(temp, typename proto::tag_of::type()); + } + else + { + do_bitwise_xor(e, typename proto::tag_of::type()); + } + return *this; + } + + template + typename enable_if, big_number& >::type + operator^=(const V& v) + { + using big_num_default_ops::bitwise_xor; + bitwise_xor(m_backend, canonical_value(v)); + return *this; + } + // // swap: // @@ -473,16 +549,6 @@ private: m_backend.negate(); } - template - void do_assign(const Exp& e, const detail::modulus_immediates&) - { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - modulus(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); - } - template void do_assign(const Exp& e, const proto::tag::unary_plus&) { @@ -675,6 +741,142 @@ private: do_modulus(proto::right(e), typename proto::tag_of::type()); } } + template + void do_assign(const Exp& e, const detail::modulus_immediates&) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + using big_num_default_ops::modulus; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + modulus(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + + template + void do_assign(const Exp& e, const proto::tag::bitwise_and&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just add the right: + do_bitwise_and(proto::right(e), typename proto::tag_of::type()); + } + else if(br && is_self(proto::right(e))) + { + do_bitwise_and(proto::left(e), typename proto::tag_of::type()); + } + else + { + do_assign(proto::left(e), typename detail::assign_and_eval::type()); + do_bitwise_and(proto::right(e), typename proto::tag_of::type()); + } + } + template + void do_assign(const Exp& e, const detail::bitwise_and_immediates&) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + using big_num_default_ops::bitwise_and; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + bitwise_and(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + + template + void do_assign(const Exp& e, const proto::tag::bitwise_or&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just add the right: + do_bitwise_or(proto::right(e), typename proto::tag_of::type()); + } + else if(br && is_self(proto::right(e))) + { + do_bitwise_or(proto::left(e), typename proto::tag_of::type()); + } + else + { + do_assign(proto::left(e), typename detail::assign_and_eval::type()); + do_bitwise_or(proto::right(e), typename proto::tag_of::type()); + } + } + template + void do_assign(const Exp& e, const detail::bitwise_or_immediates&) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + using big_num_default_ops::bitwise_or; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + bitwise_or(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + + template + void do_assign(const Exp& e, const proto::tag::bitwise_xor&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + + static int const left_depth = boost::result_of::type::value; + static int const right_depth = boost::result_of::type::value; + + bool bl = contains_self(proto::left(e)); + bool br = contains_self(proto::right(e)); + + if(bl && is_self(proto::left(e))) + { + // Ignore the left node, it's *this, just add the right: + do_bitwise_xor(proto::right(e), typename proto::tag_of::type()); + } + else if(br && is_self(proto::right(e))) + { + do_bitwise_xor(proto::left(e), typename proto::tag_of::type()); + } + else + { + do_assign(proto::left(e), typename detail::assign_and_eval::type()); + do_bitwise_xor(proto::right(e), typename proto::tag_of::type()); + } + } + template + void do_assign(const Exp& e, const detail::bitwise_xor_immediates&) + { + BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + using big_num_default_ops::bitwise_xor; + typedef typename proto::tag_of::type>::type left_tag; + typedef typename proto::tag_of::type>::type right_tag; + bitwise_xor(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + } + template void do_assign(const Exp& e, const proto::tag::terminal&) { @@ -717,6 +919,21 @@ private: do_assign_right_shift(proto::left(e), canonical_value(proto::value(proto::right(e))), tag_type()); } + template + void do_assign(const Exp& e, const proto::tag::complement&) + { + using big_num_default_ops::complement; + self_type temp(proto::left(e)); + complement(m_backend, temp.backend()); + } + + template + void do_assign(const Exp& e, const detail::complement_immediates&) + { + using big_num_default_ops::complement; + complement(m_backend, canonical_value(proto::left(e))); + } + template void do_assign_right_shift(const Exp& e, const Val& val, const proto::tag::terminal&) { @@ -990,6 +1207,72 @@ private: modulus(m_backend, canonical_value(proto::value(temp))); } + template + void do_bitwise_and(const Exp& e, const proto::tag::terminal&) + { + using big_num_default_ops::bitwise_and; + bitwise_and(m_backend, canonical_value(proto::value(e))); + } + template + void do_bitwise_and(const Exp& e, const proto::tag::bitwise_and&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_bitwise_and(proto::left(e), typename proto::tag_of::type()); + do_bitwise_and(proto::right(e), typename proto::tag_of::type()); + } + template + void do_bitwise_and(const Exp& e, const unknown&) + { + using big_num_default_ops::bitwise_and; + self_type temp(e); + bitwise_and(m_backend, temp.m_backend); + } + + template + void do_bitwise_or(const Exp& e, const proto::tag::terminal&) + { + using big_num_default_ops::bitwise_or; + bitwise_or(m_backend, canonical_value(proto::value(e))); + } + template + void do_bitwise_or(const Exp& e, const proto::tag::bitwise_or&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_bitwise_or(proto::left(e), typename proto::tag_of::type()); + do_bitwise_or(proto::right(e), typename proto::tag_of::type()); + } + template + void do_bitwise_or(const Exp& e, const unknown&) + { + using big_num_default_ops::bitwise_or; + self_type temp(e); + bitwise_or(m_backend, temp.m_backend); + } + + template + void do_bitwise_xor(const Exp& e, const proto::tag::terminal&) + { + using big_num_default_ops::bitwise_xor; + bitwise_xor(m_backend, canonical_value(proto::value(e))); + } + template + void do_bitwise_xor(const Exp& e, const proto::tag::bitwise_xor&) + { + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + do_bitwise_xor(proto::left(e), typename proto::tag_of::type()); + do_bitwise_xor(proto::right(e), typename proto::tag_of::type()); + } + template + void do_bitwise_xor(const Exp& e, const unknown&) + { + using big_num_default_ops::bitwise_xor; + self_type temp(e); + bitwise_xor(m_backend, temp.m_backend); + } + // Tests if the expression contains a reference to *this: template bool contains_self(const Exp& e)const @@ -1198,44 +1481,24 @@ inline typename boost::enable_if, bool>: { return 0 < detail::big_number_compare(a, b); } -// -// Because proto overloads these << operators, we need version that accept both -// const and non-const RHS values, otherwise the proto version will be found -// with unpleasant results... not only that, but the stream parameter has to be a template -// otherwise the LHS of the expression would have to be *exactly* of type std::ostream -// for the overload to be found (ie doesn't work for std::fstream etc unless we do this...) -// -template -inline typename enable_if, std::ostream&>::type operator << (Stream& os, const big_number& r) -{ - return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); -} -template -inline typename enable_if, std::ostream&>::type operator << (Stream& os, big_number& r) +template +inline std::ostream& operator << (std::ostream& os, const big_number& r) { return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); } namespace detail{ -template -inline typename enable_if, std::ostream&>::type operator << (Stream& os, const big_number_exp& r) +template +inline std::ostream& operator << (std::ostream& os, const big_number_exp& r) { typedef typename expression_type >::type value_type; value_type temp(r); return os << temp; } -template -inline typename enable_if, std::ostream&>::type operator << (Stream& os, big_number_exp& r) -{ - typedef typename expression_type >::type value_type; - value_type temp(r); - return os << temp; -} - -} +} // namespace detail template inline typename enable_if, std::istream&>::type operator >> (Stream& is, big_number& r) diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp index 83e635a2..c579d71e 100644 --- a/include/boost/math/big_number/big_number_base.hpp +++ b/include/boost/math/big_number/big_number_base.hpp @@ -19,21 +19,111 @@ struct big_number_exp; // // Declare our grammars: // -struct big_number_grammar - : proto::or_< - proto::terminal< proto::_ > - , proto::plus< big_number_grammar, big_number_grammar > - , proto::multiplies< big_number_grammar, big_number_grammar > - , proto::minus< big_number_grammar, big_number_grammar > - , proto::divides< big_number_grammar, big_number_grammar > - , proto::unary_plus< big_number_grammar > - , proto::negate< big_number_grammar > - , proto::modulus - , proto::shift_left - , proto::shift_right - > +struct integer_terminal : public +proto::and_< + proto::terminal< proto::_ >, + proto::if_ < boost::is_integral< proto::_value >() > + > {}; +struct big_number_grammar; + +template +struct is_big_number_ptr : mpl::false_ {}; + +template +struct is_big_number_ptr*> : mpl::true_ {}; + + +struct big_number_grammar_cases +{ + // The primary template matches nothing: + template + struct case_ + : proto::not_ + {}; +}; + +template<> +struct big_number_grammar_cases::case_ + : proto::and_< + proto::terminal, + proto::or_< + proto::if_ < is_big_number_ptr< proto::_value >() >, + proto::if_ < is_arithmetic< proto::_value >() >, + proto::if_ < is_same< proto::_value, std::string>() >, + proto::if_ < is_convertible< proto::_value, const char*>() > + > + > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::plus< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::multiplies< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::minus< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::divides< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::unary_plus< big_number_grammar> +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::negate< big_number_grammar> +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::modulus< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::bitwise_and< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::bitwise_or< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::bitwise_xor< big_number_grammar, big_number_grammar > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::shift_left< big_number_grammar, integer_terminal > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::shift_right< big_number_grammar, integer_terminal > +{}; + +template<> +struct big_number_grammar_cases::case_ + : proto::complement +{}; + +struct big_number_grammar : proto::switch_{}; + // Define a calculator domain. Expression within // the calculator domain will be wrapped in the // calculator<> expression wrapper. @@ -146,6 +236,10 @@ struct multiply_and_negate_immediates{}; struct divide_immediates{}; struct divide_and_negate_immediates{}; struct modulus_immediates{}; +struct bitwise_and_immediates{}; +struct bitwise_or_immediates{}; +struct bitwise_xor_immediates{}; +struct complement_immediates{}; struct immediate{}; struct negative_immediate{}; @@ -312,6 +406,67 @@ struct assign_and_eval_imp >::type type; }; +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + bitwise_and_immediates, + proto::tag::bitwise_and + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + bitwise_or_immediates, + proto::tag::bitwise_or + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::result_of::right::type right_type; + typedef typename proto::tag_of::type left_tag; + typedef typename proto::tag_of::type right_tag; + typedef typename immediate_type::type left_imm; + typedef typename immediate_type::type right_imm; + typedef typename mpl::if_< + mpl::and_, is_same >, + bitwise_xor_immediates, + proto::tag::bitwise_xor + >::type type; +}; + +template +struct assign_and_eval_imp +{ + typedef typename proto::result_of::left::type left_type; + typedef typename proto::tag_of::type left_tag; + typedef typename immediate_type::type left_imm; + typedef typename mpl::if_< + is_same, + complement_immediates, + proto::tag::complement + >::type type; +}; + template struct assign_and_eval { diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index 57fcf2ba..79da094b 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -54,6 +54,39 @@ inline typename enable_if, is_convertible +inline typename enable_if, is_convertible, is_same > >::type + bitwise_and(T& result, V const& v) +{ + T t; + t = v; + bitwise_and(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + bitwise_or(T& result, V const& v) +{ + T t; + t = v; + bitwise_or(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + bitwise_xor(T& result, V const& v) +{ + T t; + t = v; + bitwise_xor(result, t); +} + +template +inline typename enable_if, is_convertible, is_same > >::type + complement(T& result, V const& v) +{ + T t; + t = v; + complement(result, t); +} template inline bool is_same_object(const T& u, const T&v) @@ -145,6 +178,47 @@ inline void modulus(T& t, const U& u, const V& v) modulus(t, v); } } +template +inline void bitwise_and(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + bitwise_and(t, v); + else if(is_same_object(t, v)) + bitwise_and(t, u); + else + { + t = u; + bitwise_and(t, v); + } +} + +template +inline void bitwise_or(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + bitwise_or(t, v); + else if(is_same_object(t, v)) + bitwise_or(t, u); + else + { + t = u; + bitwise_or(t, v); + } +} + +template +inline void bitwise_xor(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + bitwise_xor(t, v); + else if(is_same_object(t, v)) + bitwise_xor(t, u); + else + { + t = u; + bitwise_xor(t, v); + } +} template inline void increment(T& val) diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 51d35fe0..40bde812 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -910,6 +910,21 @@ inline void right_shift(gmp_int& t, const gmp_int& v, UI i) mpz_fdiv_q_2exp(t.data(), v.data(), static_cast(i)); } +inline void bitwise_and(gmp_int& result, const gmp_int& v) +{ + mpz_and(result.data(), result.data(), v.data()); +} + +inline void bitwise_or(gmp_int& result, const gmp_int& v) +{ + mpz_ior(result.data(), result.data(), v.data()); +} + +inline void bitwise_xor(gmp_int& result, const gmp_int& v) +{ + mpz_xor(result.data(), result.data(), v.data()); +} + inline void add(gmp_int& t, const gmp_int& p, const gmp_int& o) { mpz_add(t.data(), p.data(), o.data()); @@ -1013,6 +1028,26 @@ inline void divide(gmp_int& t, const gmp_int& p, long i) mpz_neg(t.data(), t.data()); } +inline void bitwise_and(gmp_int& result, const gmp_int& u, const gmp_int& v) +{ + mpz_and(result.data(), u.data(), v.data()); +} + +inline void bitwise_or(gmp_int& result, const gmp_int& u, const gmp_int& v) +{ + mpz_ior(result.data(), u.data(), v.data()); +} + +inline void bitwise_xor(gmp_int& result, const gmp_int& u, const gmp_int& v) +{ + mpz_xor(result.data(), u.data(), v.data()); +} + +inline void complement(gmp_int& result, const gmp_int& u) +{ + mpz_com(result.data(), u.data()); +} + inline bool is_zero(const gmp_int& val) { return mpz_sgn(val.data()) == 0; diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 74111c7b..927376cd 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -59,6 +59,7 @@ void test_integer_ops(const boost::mpl::true_&) { Real a(20); Real b(7); + Real c; BOOST_TEST(a % b == 20 % 7); BOOST_TEST(a % 7 == 20 % 7); BOOST_TEST(a % 7u == 20 % 7); @@ -154,6 +155,86 @@ void test_integer_ops(const boost::mpl::true_&) BOOST_TEST(b == (22 << 10)); b = (a + 3) >> 3; BOOST_TEST(b == (23 >> 3)); + // + // Bit fiddling: + // + int i = 1020304; + int j = 56789123; + int k = 4523187; + a = i; + b = j; + c = a; + c &= b; + BOOST_TEST(c == (i & j)); + c = a; + c &= j; + BOOST_TEST(c == (i & j)); + c = a; + c &= a + b; + BOOST_TEST(c == (i & (i + j))); + BOOST_TEST((a & b) == (i & j)); + c = k; + a = a & (b + k); + BOOST_TEST(a == (i & (j + k))); + a = i; + a = (b + k) & a; + BOOST_TEST(a == (i & (j + k))); + a = i; + c = a & b & k; + BOOST_TEST(c == (i&j&k)); + + a = i; + b = j; + c = a; + c |= b; + BOOST_TEST(c == (i | j)); + c = a; + c |= j; + BOOST_TEST(c == (i | j)); + c = a; + c |= a + b; + BOOST_TEST(c == (i | (i + j))); + BOOST_TEST((a | b) == (i | j)); + c = k; + a = a | (b + k); + BOOST_TEST(a == (i | (j + k))); + a = i; + a = (b + k) | a; + BOOST_TEST(a == (i | (j + k))); + a = i; + c = a | b | k; + BOOST_TEST(c == (i|j|k)); + + a = i; + b = j; + c = a; + c ^= b; + BOOST_TEST(c == (i ^ j)); + c = a; + c ^= j; + BOOST_TEST(c == (i ^ j)); + c = a; + c ^= a + b; + BOOST_TEST(c == (i ^ (i + j))); + BOOST_TEST((a ^ b) == (i ^ j)); + c = k; + a = a ^ (b + k); + BOOST_TEST(a == (i ^ (j + k))); + a = i; + a = (b + k) ^ a; + BOOST_TEST(a == (i ^ (j + k))); + a = i; + c = a ^ b ^ k; + BOOST_TEST(c == (i^j^k)); + a = i; + b = j; + c = k; + BOOST_TEST(~a == ~i); + c = a & ~b; + BOOST_TEST(c == (i & ~j)); + c = ~(a | b); + BOOST_TEST(c == ~(i | j)); + // // Non-member functions: // @@ -389,6 +470,7 @@ void test_mixed() template void test() { +#ifndef NO_MIXED_OPS test_mixed(); test_mixed(); test_mixed(); @@ -405,6 +487,7 @@ void test() test_mixed(); test_mixed(); test_mixed(); +#endif // // Integer only functions: // From 0b6e68579954aef5a8ce51ad80e39a2c5615f463 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 30 Aug 2011 17:00:05 +0000 Subject: [PATCH 017/256] Change function evaluation calling convention and naming. Add integer-powers support. [SVN r74166] --- include/boost/math/big_number.hpp | 6 +-- include/boost/math/big_number/default_ops.hpp | 33 ++++++++------- include/boost/math/big_number/e_float.hpp | 9 +++- include/boost/math/big_number/gmp.hpp | 42 +++++++++---------- include/boost/math/big_number/mpfr.hpp | 36 ++++++++-------- .../math/concepts/big_number_architypes.hpp | 42 +++++++++++++++++++ math/test/test_arithmetic.cpp | 27 +++++++++++- 7 files changed, 136 insertions(+), 59 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index cd21fff5..1a8ed194 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -979,13 +979,13 @@ private: template void do_assign_function_1(const F& f, const Exp& val, const proto::tag::terminal&) { - f(&m_backend, canonical_value(proto::value(val))); + f(m_backend, canonical_value(proto::value(val))); } template void do_assign_function_1(const F& f, const Exp& val, const Tag&) { big_number t(val); - f(&m_backend, t.backend()); + f(m_backend, t.backend()); } template void do_assign_function(const Exp& e, const mpl::long_<3>&) @@ -999,7 +999,7 @@ private: template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const proto::tag::terminal&, const proto::tag::terminal&) { - f(&m_backend, canonical_value(proto::value(val1)), canonical_value(proto::value(val2))); + f(m_backend, canonical_value(proto::value(val1)), canonical_value(proto::value(val2))); } template diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index 79da094b..bb9bba69 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -325,7 +325,7 @@ inline void convert_to(terminal* result, const B& backend) // Functions: // template -void abs(T* result, const T& arg) +void eval_abs(T* result, const T& arg) { typedef typename T::signed_types type_list; typedef typename mpl::front::type front; @@ -334,7 +334,7 @@ void abs(T* result, const T& arg) result->negate(); } template -void fabs(T* result, const T& arg) +void eval_fabs(T* result, const T& arg) { typedef typename T::signed_types type_list; typedef typename mpl::front::type front; @@ -347,17 +347,21 @@ void fabs(T* result, const T& arg) // These have to implemented by the backend, declared here so that our macro generated code compiles OK. // template -typename enable_if_c::type floor(); +typename enable_if_c::type eval_floor(); template -typename enable_if_c::type ceil(); +typename enable_if_c::type eval_ceil(); template -typename enable_if_c::type trunc(); +typename enable_if_c::type eval_trunc(); template -typename enable_if_c::type sqrt(); +typename enable_if_c::type eval_sqrt(); template -typename enable_if_c::type ldexp(); +typename enable_if_c::type eval_ldexp(); template -typename enable_if_c::type frexp(); +typename enable_if_c::type eval_frexp(); +// +// These functions are implemented in separate files, but expanded inline here: +// +#include } @@ -377,10 +381,10 @@ namespace detail{\ template \ struct BOOST_JOIN(func, _funct)\ {\ - void operator()(Backend* result, const Backend& arg)const\ + void operator()(Backend& result, const Backend& arg)const\ {\ - using big_num_default_ops::func;\ - func(result, arg);\ + using big_num_default_ops::BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg);\ }\ };\ \ @@ -419,10 +423,10 @@ template \ struct BOOST_JOIN(func, _funct)\ {\ template \ - void operator()(Backend* result, const Backend& arg, const A2& a)const\ + void operator()(Backend& result, const Backend& arg, const A2& a)const\ {\ - using big_num_default_ops::func;\ - func(result, arg, a);\ + using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg, a);\ }\ };\ \ @@ -467,6 +471,7 @@ UNARY_OP_FUNCTOR(trunc) BINARY_OP_FUNCTOR(ldexp) BINARY_OP_FUNCTOR(frexp) +BINARY_OP_FUNCTOR(pow) #undef BINARY_OP_FUNCTOR #undef UNARY_OP_FUNCTOR diff --git a/include/boost/math/big_number/e_float.hpp b/include/boost/math/big_number/e_float.hpp index 402c4379..2cc4c8ee 100644 --- a/include/boost/math/big_number/e_float.hpp +++ b/include/boost/math/big_number/e_float.hpp @@ -34,9 +34,14 @@ inline std::string arithmetic_backend::str(unsigned digits, bool s return result; } -inline void abs(arithmetic_backend* result, const arithmetic_backend& arg) +inline void eval_abs(arithmetic_backend& result, const arithmetic_backend& arg) { - result->data() = ef::fabs(arg.data()); + result.data() = ef::fabs(arg.data()); +} + +inline void eval_fabs(arithmetic_backend& result, const arithmetic_backend& arg) +{ + result.data() = ef::fabs(arg.data()); } inline bool is_zero(const arithmetic_backend& val) diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 40bde812..c4a08f88 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -573,58 +573,58 @@ inline void convert_to(double* result, const gmp_real& val) // Native non-member operations: // template -inline void sqrt(gmp_real* result, const gmp_real& val) +inline void eval_sqrt(gmp_real& result, const gmp_real& val) { - mpf_sqrt(result->data(), val.data()); + mpf_sqrt(result.data(), val.data()); } template -inline void abs(gmp_real* result, const gmp_real& val) +inline void eval_abs(gmp_real& result, const gmp_real& val) { - mpf_abs(result->data(), val.data()); + mpf_abs(result.data(), val.data()); } template -inline void fabs(gmp_real* result, const gmp_real& val) +inline void eval_fabs(gmp_real& result, const gmp_real& val) { - mpf_abs(result->data(), val.data()); + mpf_abs(result.data(), val.data()); } template -inline void ceil(gmp_real* result, const gmp_real& val) +inline void eval_ceil(gmp_real& result, const gmp_real& val) { - mpf_ceil(result->data(), val.data()); + mpf_ceil(result.data(), val.data()); } template -inline void floor(gmp_real* result, const gmp_real& val) +inline void eval_floor(gmp_real& result, const gmp_real& val) { - mpf_floor(result->data(), val.data()); + mpf_floor(result.data(), val.data()); } template -inline void trunc(gmp_real* result, const gmp_real& val) +inline void eval_trunc(gmp_real& result, const gmp_real& val) { - mpf_trunc(result->data(), val.data()); + mpf_trunc(result.data(), val.data()); } template -inline void ldexp(gmp_real* result, const gmp_real& val, long e) +inline void eval_ldexp(gmp_real& result, const gmp_real& val, long e) { if(e > 0) - mpf_mul_2exp(result->data(), val.data(), e); + mpf_mul_2exp(result.data(), val.data(), e); else if(e < 0) - mpf_div_2exp(result->data(), val.data(), -e); + mpf_div_2exp(result.data(), val.data(), -e); } template -inline void frexp(gmp_real* result, const gmp_real& val, int* e) +inline void eval_frexp(gmp_real& result, const gmp_real& val, int* e) { long v; mpf_get_d_2exp(&v, val.data()); *e = v; - return ldexp(result, val, -v); + eval_ldexp(result, val, -v); } template -inline void frexp(gmp_real* result, const gmp_real& val, long* e) +inline void eval_frexp(gmp_real& result, const gmp_real& val, long* e) { mpf_get_d_2exp(e, val.data()); - return ldexp(result, val, -*e); + eval_ldexp(result, val, -*e); } struct gmp_int @@ -1069,9 +1069,9 @@ inline void convert_to(double* result, const gmp_int& val) *result = mpz_get_d(val.data()); } -inline void abs(gmp_int* result, const gmp_int& val) +inline void eval_abs(gmp_int& result, const gmp_int& val) { - mpz_abs(result->data(), val.data()); + mpz_abs(result.data(), val.data()); } template<> diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index a9aeac6f..afa2b953 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -588,55 +588,55 @@ inline void convert_to(long double* result, const mpfr_real_backend& v // Native non-member operations: // template -inline void sqrt(mpfr_real_backend* result, const mpfr_real_backend& val) +inline void eval_sqrt(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_sqrt(result->data(), val.data(), MPFR_RNDN); + mpfr_sqrt(result.data(), val.data(), MPFR_RNDN); } template -inline void abs(mpfr_real_backend* result, const mpfr_real_backend& val) +inline void eval_abs(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_abs(result->data(), val.data(), MPFR_RNDN); + mpfr_abs(result.data(), val.data(), MPFR_RNDN); } template -inline void fabs(mpfr_real_backend* result, const mpfr_real_backend& val) +inline void eval_fabs(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_abs(result->data(), val.data(), MPFR_RNDN); + mpfr_abs(result.data(), val.data(), MPFR_RNDN); } template -inline void ceil(mpfr_real_backend* result, const mpfr_real_backend& val) +inline void eval_ceil(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_ceil(result->data(), val.data()); + mpfr_ceil(result.data(), val.data()); } template -inline void floor(mpfr_real_backend* result, const mpfr_real_backend& val) +inline void eval_floor(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_floor(result->data(), val.data()); + mpfr_floor(result.data(), val.data()); } template -inline void trunc(mpfr_real_backend* result, const mpfr_real_backend& val) +inline void eval_trunc(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_trunc(result->data(), val.data()); + mpfr_trunc(result.data(), val.data()); } template -inline void ldexp(mpfr_real_backend* result, const mpfr_real_backend& val, long e) +inline void eval_ldexp(mpfr_real_backend& result, const mpfr_real_backend& val, long e) { if(e > 0) - mpfr_mul_2exp(result->data(), val.data(), e, MPFR_RNDN); + mpfr_mul_2exp(result.data(), val.data(), e, MPFR_RNDN); else if(e < 0) - mpfr_div_2exp(result->data(), val.data(), -e, MPFR_RNDN); + mpfr_div_2exp(result.data(), val.data(), -e, MPFR_RNDN); } template -inline void frexp(mpfr_real_backend* result, const mpfr_real_backend& val, int* e) +inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, int* e) { long v; mpfr_get_d_2exp(&v, val.data(), MPFR_RNDN); *e = v; - return ldexp(result, val, -v); + ldexp(result, val, -v); } template -inline void frexp(mpfr_real_backend* result, const mpfr_real_backend& val, long* e) +inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, long* e) { mpfr_get_d_2exp(e, val.data(), MPFR_RNDN); return ldexp(result, val, -*e); diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp index fc85bfa3..29b53493 100644 --- a/include/boost/math/concepts/big_number_architypes.hpp +++ b/include/boost/math/concepts/big_number_architypes.hpp @@ -8,9 +8,11 @@ #include #include +#include #include #include #include +#include namespace boost{ namespace math{ @@ -141,6 +143,46 @@ inline void divide(big_number_backend_real_architype& result, const big_number_b result.m_value /= o.m_value; } +inline void eval_frexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int* exp) +{ + result = std::frexp(arg.m_value, exp); +} + +inline void eval_ldexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int exp) +{ + result = std::ldexp(arg.m_value, exp); +} + +inline void eval_floor(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::floor(arg.m_value); +} + +inline void eval_ceil(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::ceil(arg.m_value); +} + +inline void eval_trunc(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = boost::math::trunc(arg.m_value); +} + +inline void eval_sqrt(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::sqrt(arg.m_value); +} + +inline void eval_abs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::abs(arg.m_value); +} + +inline void eval_fabs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::fabs(arg.m_value); +} + typedef boost::math::big_number big_number_real_architype; }}} // namespaces diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 927376cd..1c80628b 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -4,6 +4,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ #include +#include #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) # define TEST_MPF50 @@ -254,7 +255,7 @@ void test_real_ops(const boost::mpl::false_&){} template void test_real_ops(const boost::mpl::true_&) { -#if defined(TEST_MPF) || defined(TEST_MPF_50) +#if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) BOOST_TEST(abs(Real(2)) == 2); BOOST_TEST(abs(Real(-2)) == 2); BOOST_TEST(fabs(Real(2)) == 2); @@ -280,6 +281,30 @@ void test_real_ops(const boost::mpl::true_&) r = frexp(v, &exp); BOOST_TEST(r == 0.5); BOOST_TEST(exp == -8); + // + // pow and exp: + // + v = 3.25; + r = pow(v, 0); + BOOST_TEST(r == 1); + r = pow(v, 1); + BOOST_TEST(r == 3.25); + r = pow(v, 2); + BOOST_TEST(r == boost::math::pow<2>(3.25)); + r = pow(v, 3); + BOOST_TEST(r == boost::math::pow<3>(3.25)); + r = pow(v, 4); + BOOST_TEST(r == boost::math::pow<4>(3.25)); + r = pow(v, 5); + BOOST_TEST(r == boost::math::pow<5>(3.25)); + r = pow(v, 6); + BOOST_TEST(r == boost::math::pow<6>(3.25)); + r = pow(v, 25); + BOOST_TEST(r == boost::math::pow<25>(Real(3.25))); + /* + r = pow(v, 56); + BOOST_TEST(r == boost::math::pow<56>(Real(3.25))); + */ #endif } From 821405e5469b5801bbc063bb8be44a4644669955 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 30 Aug 2011 18:08:56 +0000 Subject: [PATCH 018/256] Added fpclassify routines. [SVN r74167] --- include/boost/math/big_number/default_ops.hpp | 67 +++++++++++++++++++ include/boost/math/big_number/e_float.hpp | 5 +- include/boost/math/big_number/mpfr.hpp | 6 ++ .../math/concepts/big_number_architypes.hpp | 5 ++ math/test/test_numeric_limits.cpp | 48 +++++++++++++ 5 files changed, 130 insertions(+), 1 deletion(-) diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index bb9bba69..de1bf552 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -7,6 +7,7 @@ #define BOOST_MATH_BIG_NUM_DEF_OPS #include +#include namespace boost{ namespace math{ namespace big_num_default_ops{ @@ -343,6 +344,11 @@ void eval_fabs(T* result, const T& arg) result->negate(); } +template +inline int eval_fpclassify(const Backend& arg) +{ + return is_zero(arg) ? FP_ZERO : FP_NORMAL; +} // // These have to implemented by the backend, declared here so that our macro generated code compiles OK. // @@ -376,6 +382,67 @@ struct big_number_exp; } +// +// Default versions of floating point classification routines: +// +template +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) +{ + using big_num_default_ops::eval_fpclassify; + return eval_fpclassify(arg.backend()); +} +template +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +{ + typedef typename expression_type::type value_type; + return fpclassify(value_type(arg)); +} +template +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) +{ + int v = fpclassify(arg); + return (v != FP_INFINITE) && (v != FP_NAN); +} +template +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +{ + typedef typename expression_type::type value_type; + return isfinite(value_type(arg)); +} +template +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) +{ + return fpclassify(arg) == FP_NAN; +} +template +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +{ + typedef typename expression_type::type value_type; + return isnan(value_type(arg)); +} +template +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) +{ + return fpclassify(arg) == FP_INFINITE; +} +template +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +{ + typedef typename expression_type::type value_type; + return isinf(value_type(arg)); +} +template +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) +{ + return fpclassify(arg) == FP_NORMAL; +} +template +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +{ + typedef typename expression_type::type value_type; + return isnormal(value_type(arg)); +} + #define UNARY_OP_FUNCTOR(func)\ namespace detail{\ template \ diff --git a/include/boost/math/big_number/e_float.hpp b/include/boost/math/big_number/e_float.hpp index 2cc4c8ee..9ce737c4 100644 --- a/include/boost/math/big_number/e_float.hpp +++ b/include/boost/math/big_number/e_float.hpp @@ -69,7 +69,10 @@ inline void convert_to(long double* result, const arithmetic_backend& val) +{ + return val.data().isinf() ? FP_INFINITE : val.data().isnan() ? FP_NAN : val.data().iszero() ? FP_ZERO : FP_NORMAL; +} }} // namespaces diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index afa2b953..cdd562dc 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -642,6 +642,12 @@ inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_back return ldexp(result, val, -*e); } +template +inline int eval_fpclassify(const mpfr_real_backend& val) +{ + return mpfr_inf_p(val.data()) ? FP_INFINITE : mpfr_nan_p(val.data()) ? FP_NAN : mpfr_zero_p(val.data()) ? FP_ZERO : FP_NORMAL; +} + typedef big_number > mpfr_real_50; typedef big_number > mpfr_real_100; typedef big_number > mpfr_real_500; diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp index 29b53493..66d79fc4 100644 --- a/include/boost/math/concepts/big_number_architypes.hpp +++ b/include/boost/math/concepts/big_number_architypes.hpp @@ -183,6 +183,11 @@ inline void eval_fabs(big_number_backend_real_architype& result, const big_numbe result = std::fabs(arg.m_value); } +inline int eval_fpclassify(const big_number_backend_real_architype& arg) +{ + return boost::math::fpclassify(arg.m_value); +} + typedef boost::math::big_number big_number_real_architype; }}} // namespaces diff --git a/math/test/test_numeric_limits.cpp b/math/test/test_numeric_limits.cpp index 35227e0c..8f3ecdcc 100644 --- a/math/test/test_numeric_limits.cpp +++ b/math/test/test_numeric_limits.cpp @@ -79,6 +79,54 @@ void test() PRINT(traps); PRINT(tinyness_before); PRINT(round_style); + + if(std::numeric_limits::is_specialized) + { + if(std::numeric_limits::has_quiet_NaN) + { + BOOST_TEST((boost::math::isnan)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::quiet_NaN())); + } + if(std::numeric_limits::has_signaling_NaN) + { + BOOST_TEST((boost::math::isnan)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::signaling_NaN())); + } + if(std::numeric_limits::has_infinity) + { + BOOST_TEST((boost::math::isinf)(std::numeric_limits::infinity())); + BOOST_TEST(FP_INFINITE == (boost::math::fpclassify)(std::numeric_limits::infinity())); + BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::infinity())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::infinity())); + BOOST_TEST(!(boost::math::isnan)(std::numeric_limits::infinity())); + } + if(std::numeric_limits::has_denorm) + { + BOOST_TEST(FP_SUBNORMAL == (boost::math::fpclassify)(std::numeric_limits::denorm_min())); + BOOST_TEST((boost::math::isfinite)(std::numeric_limits::denorm_min())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::denorm_min())); + BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::denorm_min())); + BOOST_TEST(!(boost::math::isnan)(std::numeric_limits::denorm_min())); + } + } + Number n = 0; + BOOST_TEST((boost::math::fpclassify)(n) == FP_ZERO); + BOOST_TEST((boost::math::isfinite)(n)); + BOOST_TEST(!(boost::math::isnormal)(n)); + BOOST_TEST(!(boost::math::isinf)(n)); + BOOST_TEST(!(boost::math::isnan)(n)); + n = 2; + BOOST_TEST((boost::math::fpclassify)(n) == FP_NORMAL); + BOOST_TEST((boost::math::isfinite)(n)); + BOOST_TEST((boost::math::isnormal)(n)); + BOOST_TEST(!(boost::math::isinf)(n)); + BOOST_TEST(!(boost::math::isnan)(n)); } From 4af7f865b06419e12569771ef9c6ceb28f8e71a5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 12 Sep 2011 08:35:42 +0000 Subject: [PATCH 019/256] Bring mpfr backend into line with Boost.Math's requirements. Fix input streaming. Add MPQ support. Mostly fix gcc compiler issues. [SVN r74354] --- include/boost/math/big_number.hpp | 68 +++- .../boost/math/big_number/big_number_base.hpp | 26 +- include/boost/math/big_number/default_ops.hpp | 347 ++++++++++++++++-- include/boost/math/big_number/gmp.hpp | 233 +++++++++++- include/boost/math/big_number/mpfr.hpp | 281 +++++++++----- math/test/Jamfile.v2 | 16 + math/test/big_number_concept_check.cpp | 140 ++++++- math/test/test_arithmetic.cpp | 10 +- math/test/test_numeric_limits.cpp | 8 +- 9 files changed, 960 insertions(+), 169 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index 1a8ed194..664aec72 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -453,7 +453,7 @@ private: template void check_shift_range(V val, const mpl::true_&, const mpl::true_&) { - if(val > std::numeric_limits::max()) + if(val > (std::numeric_limits::max)()) BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); if(val < 0) BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); @@ -467,7 +467,7 @@ private: template void check_shift_range(V val, const mpl::true_&, const mpl::false_&) { - if(val > std::numeric_limits::max()) + if(val > (std::numeric_limits::max)()) BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); } template @@ -686,9 +686,6 @@ private: typedef typename proto::result_of::left::type left_type; typedef typename proto::result_of::right::type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; - bool bl = contains_self(proto::left(e)); bool br = contains_self(proto::right(e)); @@ -719,9 +716,6 @@ private: typedef typename proto::result_of::left::type left_type; typedef typename proto::result_of::right::type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; - bool bl = contains_self(proto::left(e)); bool br = contains_self(proto::right(e)); @@ -777,11 +771,16 @@ private: { do_bitwise_and(proto::left(e), typename proto::tag_of::type()); } - else + else if(left_depth >= right_depth) { do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_bitwise_and(proto::right(e), typename proto::tag_of::type()); } + else + { + do_assign(proto::right(e), typename detail::assign_and_eval::type()); + do_bitwise_and(proto::left(e), typename proto::tag_of::type()); + } } template void do_assign(const Exp& e, const detail::bitwise_and_immediates&) @@ -819,11 +818,16 @@ private: { do_bitwise_or(proto::left(e), typename proto::tag_of::type()); } - else + else if(left_depth >= right_depth) { do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_bitwise_or(proto::right(e), typename proto::tag_of::type()); } + else + { + do_assign(proto::right(e), typename detail::assign_and_eval::type()); + do_bitwise_or(proto::left(e), typename proto::tag_of::type()); + } } template void do_assign(const Exp& e, const detail::bitwise_or_immediates&) @@ -861,11 +865,16 @@ private: { do_bitwise_xor(proto::left(e), typename proto::tag_of::type()); } - else + else if(left_depth >= right_depth) { do_assign(proto::left(e), typename detail::assign_and_eval::type()); do_bitwise_xor(proto::right(e), typename proto::tag_of::type()); } + else + { + do_assign(proto::right(e), typename detail::assign_and_eval::type()); + do_bitwise_xor(proto::left(e), typename proto::tag_of::type()); + } } template void do_assign(const Exp& e, const detail::bitwise_xor_immediates&) @@ -1001,6 +1010,25 @@ private: { f(m_backend, canonical_value(proto::value(val1)), canonical_value(proto::value(val2))); } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const proto::tag::terminal&) + { + self_type temp1(val1); + f(m_backend, temp1.backend(), canonical_value(proto::value(val2))); + } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const proto::tag::terminal&, const Tag2&) + { + self_type temp2(val2); + f(m_backend, canonical_value(proto::value(val1)), temp2.backend()); + } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&) + { + self_type temp1(val1); + self_type temp2(val2); + f(m_backend, temp1.backend(), temp2.backend()); + } template void do_add(const Exp& e, const proto::tag::terminal&) @@ -1297,6 +1325,16 @@ private: typedef typename proto::result_of::child_c::type child1_type; return contains_self(proto::child_c<0>(e), mpl::int_::value>()) || contains_self(proto::child_c<1>(e), mpl::int_::value>()); } + template + bool contains_self(const Exp& e, mpl::int_<3> const&)const + { + typedef typename proto::result_of::child_c::type child0_type; + typedef typename proto::result_of::child_c::type child1_type; + typedef typename proto::result_of::child_c::type child2_type; + return contains_self(proto::child_c<0>(e), mpl::int_::value>()) + || contains_self(proto::child_c<1>(e), mpl::int_::value>()) + || contains_self(proto::child_c<2>(e), mpl::int_::value>()); + } // Test if the expression is a reference to *this: template @@ -1326,13 +1364,13 @@ private: return v == this; } template - static typename detail::underlying_result::type underlying_value(const big_number_exp& e, const proto::tag::terminal&) + static typename detail::underlying_result::type underlying_value(const detail::big_number_exp& e, const proto::tag::terminal&) { return proto::value(e); } template static typename detail::underlying_result::type - underlying_value(const big_number_exp& e, const tag&) + underlying_value(const detail::big_number_exp& e, const tag&) { typedef typename proto::result_of::left::type left_type; typedef typename proto::tag_of::type tag_type; @@ -1500,8 +1538,8 @@ inline std::ostream& operator << (std::ostream& os, const big_number_exp& r } // namespace detail -template -inline typename enable_if, std::istream&>::type operator >> (Stream& is, big_number& r) +template +inline std::istream& operator >> (std::istream& is, big_number& r) { std::string s; is >> s; diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp index c579d71e..5356c6a3 100644 --- a/include/boost/math/big_number/big_number_base.hpp +++ b/include/boost/math/big_number/big_number_base.hpp @@ -6,6 +6,8 @@ #ifndef BOOST_MATH_BIG_NUM_BASE_HPP #define BOOST_MATH_BIG_NUM_BASE_HPP +#include + namespace boost{ namespace math{ template @@ -122,6 +124,14 @@ struct big_number_grammar_cases::case_ : proto::complement {}; +template<> +struct big_number_grammar_cases::case_ + : proto::or_< + proto::function< proto::_, big_number_grammar >, + proto::function< proto::_, big_number_grammar, proto::_ > + > +{}; + struct big_number_grammar : proto::switch_{}; // Define a calculator domain. Expression within @@ -625,7 +635,7 @@ public: : base_type(expr) {} template - big_number_exp(const Other& o) + big_number_exp(const Other& o, typename enable_if >::type const* = 0) : base_type(o) {} @@ -645,9 +655,21 @@ struct is_extended_integer : public mpl::false_ {}; template struct is_extended_integer > : public is_extended_integer{}; - }} // namespaces +namespace boost{ namespace math{ namespace tools{ + +template +struct promote_arg; + +template +struct promote_arg > +{ + typedef typename boost::math::detail::expression_type::type type; +}; + +}}} + #endif // BOOST_MATH_BIG_NUM_BASE_HPP diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index de1bf552..ca14a806 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -6,8 +6,10 @@ #ifndef BOOST_MATH_BIG_NUM_DEF_OPS #define BOOST_MATH_BIG_NUM_DEF_OPS +#include #include #include +#include namespace boost{ namespace math{ namespace big_num_default_ops{ @@ -306,7 +308,7 @@ struct calculate_next_larger_type template inline void convert_to(R* result, const B& backend) { - typedef calculate_next_larger_type::type next_type; + typedef typename calculate_next_larger_type::type next_type; next_type n; convert_to(&n, backend); *result = static_cast(n); @@ -365,6 +367,31 @@ typename enable_if_c::type eval_ldexp(); template typename enable_if_c::type eval_frexp(); // +// TODO: implement default versions of these: +// +template +typename enable_if_c::type eval_exp(); +template +typename enable_if_c::type eval_log(); +template +typename enable_if_c::type eval_sin(); +template +typename enable_if_c::type eval_cos(); +template +typename enable_if_c::type eval_tan(); +template +typename enable_if_c::type eval_asin(); +template +typename enable_if_c::type eval_acos(); +template +typename enable_if_c::type eval_atan(); +template +typename enable_if_c::type eval_sinh(); +template +typename enable_if_c::type eval_cosh(); +template +typename enable_if_c::type eval_tanh(); +// // These functions are implemented in separate files, but expanded inline here: // #include @@ -394,7 +421,7 @@ inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number template inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename expression_type::type value_type; + typedef typename detail::expression_type::type value_type; return fpclassify(value_type(arg)); } template @@ -406,7 +433,7 @@ inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& template inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename expression_type::type value_type; + typedef typename detail::expression_type::type value_type; return isfinite(value_type(arg)); } template @@ -417,7 +444,7 @@ inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& ar template inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename expression_type::type value_type; + typedef typename detail::expression_type::type value_type; return isnan(value_type(arg)); } template @@ -428,7 +455,7 @@ inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& ar template inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename expression_type::type value_type; + typedef typename detail::expression_type::type value_type; return isinf(value_type(arg)); } template @@ -439,13 +466,150 @@ inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& template inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename expression_type::type value_type; + typedef typename detail::expression_type::type value_type; return isnormal(value_type(arg)); } +template +inline int itrunc(const detail::big_number_exp& v, const Policy& pol) +{ + typedef typename detail::expression_type::type number_type; + number_type r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline int itrunc(const big_number& v, const Policy& pol) +{ + big_number r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long ltrunc(const detail::big_number_exp& v, const Policy& pol) +{ + typedef typename detail::expression_type::type number_type; + number_type r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long ltrunc(const big_number& v, const Policy& pol) +{ + big_number r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +#ifndef BOOST_NO_LONG_LONG +template +inline long long lltrunc(const detail::big_number_exp& v, const Policy& pol) +{ + typedef typename detail::expression_type::type number_type; + number_type r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long long lltrunc(const big_number& v, const Policy& pol) +{ + big_number r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +#endif +template +inline int iround(const detail::big_number_exp& v, const Policy& pol) +{ + typedef typename detail::expression_type::type number_type; + number_type r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline int iround(const big_number& v, const Policy& pol) +{ + big_number r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long lround(const detail::big_number_exp& v, const Policy& pol) +{ + typedef typename detail::expression_type::type number_type; + number_type r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long lround(const big_number& v, const Policy& pol) +{ + big_number r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +#ifndef BOOST_NO_LONG_LONG +template +inline long long llround(const detail::big_number_exp& v, const Policy& pol) +{ + typedef typename detail::expression_type::type number_type; + number_type r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long long llround(const big_number& v, const Policy& pol) +{ + big_number r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +#endif +// +// Overload of Boost.Math functions that find the wrong overload when used with big_number: +// +namespace detail{ + template T sinc_pi_imp(T); + template T sinhc_pi_imp(T); +} +template +inline big_number sinc_pi(const big_number& x) +{ + return detail::sinc_pi_imp(x); +} + +template +inline big_number sinc_pi(const big_number& x, const Policy&) +{ + return detail::sinc_pi_imp(x); +} + +template +inline big_number sinhc_pi(const big_number& x) +{ + return detail::sinhc_pi_imp(x); +} + +template +inline big_number sinhc_pi(const big_number& x, const Policy&) +{ + return boost::math::sinhc_pi(x); +} + #define UNARY_OP_FUNCTOR(func)\ namespace detail{\ -template \ +template \ struct BOOST_JOIN(func, _funct)\ {\ void operator()(Backend& result, const Backend& arg)const\ @@ -457,11 +621,11 @@ struct BOOST_JOIN(func, _funct)\ \ }\ \ -template \ +template \ typename proto::result_of::make_expr<\ proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)::type>\ - , detail::big_number_exp\ + , detail::BOOST_JOIN(func, _funct)::type> \ + , detail::big_number_exp \ >::type const \ func(const detail::big_number_exp& arg)\ {\ @@ -470,11 +634,11 @@ func(const detail::big_number_exp& arg)\ , arg \ );\ }\ -template \ +template \ typename proto::result_of::make_expr<\ proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)\ - , detail::big_number_exp*>::type>\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp*>::type> \ >::type const \ func(const big_number& arg)\ {\ @@ -486,11 +650,125 @@ func(const big_number& arg)\ #define BINARY_OP_FUNCTOR(func)\ namespace detail{\ -template \ +template \ struct BOOST_JOIN(func, _funct)\ {\ - template \ - void operator()(Backend& result, const Backend& arg, const A2& a)const\ + void operator()(Backend& result, const Backend& arg, const Backend& a)const\ + {\ + using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg, a);\ + }\ + template \ + void operator()(Backend& result, const Backend& arg, const Arithmetic& a)const\ + {\ + using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg, a);\ + }\ +};\ +\ +}\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp*>::type> \ + , detail::big_number_exp*>::type> \ +>::type const \ +func(const big_number& arg, const big_number& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)() \ + , static_cast*>::type>&>(arg),\ + static_cast*>::type>&>(a)\ + );\ +}\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp*>::type> \ + , detail::big_number_exp \ +>::type const \ +func(const big_number& arg, const detail::big_number_exp& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)() \ + , static_cast*>::type>&>(arg),\ + a\ + );\ +}\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp \ + , detail::big_number_exp*>::type > \ +>::type const \ +func(const detail::big_number_exp& arg, const big_number& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg,\ + static_cast*>::type>&>(a)\ + );\ +}\ +template \ +typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct)::type> \ + , detail::big_number_exp \ + , detail::big_number_exp \ +>::type const \ +func(const detail::big_number_exp& arg, const detail::big_number_exp& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)::type>() \ + , arg,\ + a\ + );\ +}\ +template \ +typename enable_if<\ + is_arithmetic,\ + typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp*>::type> \ + , typename proto::result_of::as_child::type\ +>::type>::type const \ +func(const big_number& arg, const Arithmetic& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)() \ + , static_cast*>::type>&>(arg),\ + proto::as_child(a)\ + );\ +}\ +template \ +typename enable_if<\ + is_arithmetic,\ + typename proto::result_of::make_expr<\ + proto::tag::function\ + , detail::BOOST_JOIN(func, _funct)::type> \ + , detail::big_number_exp \ + , typename proto::result_of::as_child::type\ +>::type>::type const \ +func(const detail::big_number_exp& arg, const Arithmetic& a)\ +{\ + return proto::make_expr(\ + detail::BOOST_JOIN(func, _funct)::type>() \ + , arg,\ + proto::as_child(a)\ + );\ +}\ + + +#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\ +namespace detail{\ +template \ +struct BOOST_JOIN(func, _funct)\ +{\ + void operator()(Backend& result, Backend const& arg, Arg2 a)const\ {\ using big_num_default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result, arg, a);\ @@ -499,35 +777,35 @@ struct BOOST_JOIN(func, _funct)\ \ }\ \ -template \ +template \ typename proto::result_of::make_expr<\ proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)::type>\ - , detail::big_number_exp\ - , typename proto::result_of::as_child::type\ + , detail::BOOST_JOIN(func, _funct)::type> \ + , detail::big_number_exp \ + , typename proto::result_of::as_child::type \ >::type const \ -func(const detail::big_number_exp& arg, const A2& a)\ +func(const detail::big_number_exp& arg, Arg2 const& a)\ {\ return proto::make_expr(\ detail::BOOST_JOIN(func, _funct)::type>() \ , arg, proto::as_child(a) \ );\ }\ -template \ +template \ typename proto::result_of::make_expr<\ proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)\ - , detail::big_number_exp*>::type>\ - , typename proto::result_of::as_child::type\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp*>::type> \ + , typename proto::result_of::as_child::type \ >::type const \ -func(const big_number& arg, const A2& a)\ +func(const big_number& arg, Arg2 const& a)\ {\ return proto::make_expr(\ detail::BOOST_JOIN(func, _funct)() \ , static_cast*>::type>&>(arg),\ proto::as_child(a)\ );\ -} +}\ UNARY_OP_FUNCTOR(abs) UNARY_OP_FUNCTOR(fabs) @@ -535,9 +813,20 @@ UNARY_OP_FUNCTOR(sqrt) UNARY_OP_FUNCTOR(floor) UNARY_OP_FUNCTOR(ceil) UNARY_OP_FUNCTOR(trunc) +UNARY_OP_FUNCTOR(exp) +UNARY_OP_FUNCTOR(log) +UNARY_OP_FUNCTOR(cos) +UNARY_OP_FUNCTOR(sin) +UNARY_OP_FUNCTOR(tan) +UNARY_OP_FUNCTOR(asin) +UNARY_OP_FUNCTOR(acos) +UNARY_OP_FUNCTOR(atan) +UNARY_OP_FUNCTOR(cosh) +UNARY_OP_FUNCTOR(sinh) +UNARY_OP_FUNCTOR(tanh) -BINARY_OP_FUNCTOR(ldexp) -BINARY_OP_FUNCTOR(frexp) +HETERO_BINARY_OP_FUNCTOR(ldexp, int) +HETERO_BINARY_OP_FUNCTOR(frexp, int*) BINARY_OP_FUNCTOR(pow) #undef BINARY_OP_FUNCTOR diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index c4a08f88..cfb114aa 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -39,7 +39,7 @@ struct gmp_real_imp // to get the right value, but if it's then used in further calculations // things go badly wrong!! // - mpf_init2(m_data, (((digits10 ? digits10 : gmp_real<0>::default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpf_set(m_data, o.m_data); } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -66,7 +66,7 @@ struct gmp_real_imp boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpf_t t; - mpf_init2(t, (((digits10 ? digits10 : gmp_real<0>::default_precision()) + 1) * 1000L) / 301L); + mpf_init2(t, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpf_set_ui(m_data, 0); while(i) { @@ -226,6 +226,11 @@ struct gmp_real_imp const mpf_t& data()const { return m_data; } protected: mpf_t m_data; + static unsigned& get_default_precision() + { + static unsigned val = 50; + return val; + } }; } // namespace detail @@ -316,12 +321,6 @@ struct gmp_real<0> : public detail::gmp_real_imp<0> { mpf_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); } -private: - static unsigned& get_default_precision() - { - static unsigned val = 50; - return val; - } }; template @@ -892,22 +891,22 @@ inline void divide(gmp_int& t, long i) template inline void left_shift(gmp_int& t, UI i) { - mpz_mul_2exp(t.data(), t.data(), static_cast(i)); + mpz_mul_2exp(t.data(), t.data(), static_cast(i)); } template inline void right_shift(gmp_int& t, UI i) { - mpz_fdiv_q_2exp(t.data(), t.data(), static_cast(i)); + mpz_fdiv_q_2exp(t.data(), t.data(), static_cast(i)); } template inline void left_shift(gmp_int& t, const gmp_int& v, UI i) { - mpz_mul_2exp(t.data(), v.data(), static_cast(i)); + mpz_mul_2exp(t.data(), v.data(), static_cast(i)); } template inline void right_shift(gmp_int& t, const gmp_int& v, UI i) { - mpz_fdiv_q_2exp(t.data(), v.data(), static_cast(i)); + mpz_fdiv_q_2exp(t.data(), v.data(), static_cast(i)); } inline void bitwise_and(gmp_int& result, const gmp_int& v) @@ -1074,6 +1073,215 @@ inline void eval_abs(gmp_int& result, const gmp_int& val) mpz_abs(result.data(), val.data()); } +struct gmp_rational; +void add(gmp_rational& t, const gmp_rational& o); + +struct gmp_rational +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + gmp_rational() + { + mpq_init(this->m_data); + } + gmp_rational(const gmp_rational& o) + { + mpq_init(m_data); + mpq_set(m_data, o.m_data); + } + gmp_rational& operator = (const gmp_rational& o) + { + mpq_set(m_data, o.m_data); + return *this; + } + gmp_rational& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpq_t t; + mpq_init(m_data); + mpq_init(t); + while(i) + { + mpq_set_ui(t, static_cast(i & mask), 1); + if(shift) + mpq_mul_2exp(t, t, shift); + mpq_add(m_data, m_data, t); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpq_clear(t); + return *this; + } + gmp_rational& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpq_neg(m_data, m_data); + return *this; + } + gmp_rational& operator = (unsigned long i) + { + mpq_set_ui(m_data, i, 1); + return *this; + } + gmp_rational& operator = (long i) + { + mpq_set_si(m_data, i, 1); + return *this; + } + gmp_rational& operator = (double d) + { + mpq_set_d(m_data, d); + return *this; + } + gmp_rational& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + using big_num_default_ops::add; + using big_num_default_ops::subtract; + + if (a == 0) { + mpq_set_si(m_data, 0, 1); + return *this; + } + + if (a == 1) { + mpq_set_si(m_data, 1, 1); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpq_init(m_data); + mpq_set_ui(m_data, 0u, 1); + gmp_rational t; + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpq_mul_2exp(m_data, m_data, shift); + t = static_cast(term); + add(*this, t); + f -= term; + } + if(e > 0) + mpq_mul_2exp(m_data, m_data, e); + else if(e < 0) + mpq_div_2exp(m_data, m_data, -e); + return *this; + } + gmp_rational& operator = (const char* s) + { + mpq_set_str(m_data, s, 10); + return *this; + } + void swap(gmp_rational& o) + { + mpq_swap(m_data, o.m_data); + } + std::string str(unsigned /*digits*/, bool /*scientific*/)const + { + void *(*alloc_func_ptr) (size_t); + void *(*realloc_func_ptr) (void *, size_t, size_t); + void (*free_func_ptr) (void *, size_t); + const char* ps = mpq_get_str (0, 10, m_data); + std::string s = ps; + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + return s; + } + ~gmp_rational() + { + mpq_clear(m_data); + } + void negate() + { + mpq_neg(m_data, m_data); + } + int compare(const gmp_rational& o)const + { + return mpq_cmp(m_data, o.m_data); + } + template + int compare(V v)const + { + gmp_rational d; + d = v; + return compare(d); + } + mpq_t& data() { return m_data; } + const mpq_t& data()const { return m_data; } +protected: + mpq_t m_data; +}; + +inline void add(gmp_rational& t, const gmp_rational& o) +{ + mpq_add(t.data(), t.data(), o.data()); +} +inline void subtract(gmp_rational& t, const gmp_rational& o) +{ + mpq_sub(t.data(), t.data(), o.data()); +} +inline void multiply(gmp_rational& t, const gmp_rational& o) +{ + mpq_mul(t.data(), t.data(), o.data()); +} +inline void divide(gmp_rational& t, const gmp_rational& o) +{ + mpq_div(t.data(), t.data(), o.data()); +} +inline void add(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_add(t.data(), p.data(), o.data()); +} +inline void subtract(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_sub(t.data(), p.data(), o.data()); +} +inline void multiply(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_mul(t.data(), p.data(), o.data()); +} +inline void divide(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_div(t.data(), p.data(), o.data()); +} + +inline bool is_zero(const gmp_rational& val) +{ + return mpq_sgn(val.data()) == 0; +} +inline int get_sign(const gmp_rational& val) +{ + return mpq_sgn(val.data()); +} +inline void convert_to(double* result, const gmp_rational& val) +{ + *result = mpq_get_d(val.data()); +} + +inline void eval_abs(gmp_rational& result, const gmp_rational& val) +{ + mpq_abs(result.data(), val.data()); +} + template<> struct is_extended_integer : public mpl::true_ {}; @@ -1083,6 +1291,7 @@ typedef big_number > mpf_real_500; typedef big_number > mpf_real_1000; typedef big_number > mpf_real; typedef big_number mpz_int; +typedef big_number mpq_rational; }} // namespaces diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index cdd562dc..3020edf5 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -21,6 +21,8 @@ struct mpfr_real_backend; namespace detail{ +long get_default_precision() { return 50; } + template struct mpfr_real_imp { @@ -32,8 +34,8 @@ struct mpfr_real_imp mpfr_real_imp(const mpfr_real_imp& o) { - mpfr_init2(m_data, (((digits10 ? digits10 : mpfr_real_backend<0>::default_precision()) + 1) * 1000L) / 301L); - mpfr_set(m_data, o.m_data, MPFR_RNDN); + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_set(m_data, o.m_data, GMP_RNDN); } #ifndef BOOST_NO_RVALUE_REFERENCES mpfr_real_imp(mpfr_real_imp&& o) @@ -44,7 +46,7 @@ struct mpfr_real_imp #endif mpfr_real_imp& operator = (const mpfr_real_imp& o) { - mpfr_set(m_data, o.m_data, MPFR_RNDN); + mpfr_set(m_data, o.m_data, GMP_RNDN); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -60,17 +62,17 @@ struct mpfr_real_imp unsigned shift = 0; mpfr_t t; mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(((digits10 + 1) * 1000L) / 301L))); - mpfr_set_ui(m_data, 0, MPFR_RNDN); + mpfr_set_ui(m_data, 0, GMP_RNDN); while(i) { - mpfr_set_ui(t, static_cast(i & mask), MPFR_RNDN); + mpfr_set_ui(t, static_cast(i & mask), GMP_RNDN); long e; - const char* ps = mpfr_get_str (0, &e, 10, 0, t, MPFR_RNDN); + const char* ps = mpfr_get_str (0, &e, 10, 0, t, GMP_RNDN); if(shift) - mpfr_mul_2exp(t, t, shift, MPFR_RNDN); - ps = mpfr_get_str (0, &e, 10, 0, t, MPFR_RNDN); - mpfr_add(m_data, m_data, t, MPFR_RNDN); - ps = mpfr_get_str (0, &e, 10, 0, m_data, MPFR_RNDN); + mpfr_mul_2exp(t, t, shift, GMP_RNDN); + ps = mpfr_get_str (0, &e, 10, 0, t, GMP_RNDN); + mpfr_add(m_data, m_data, t, GMP_RNDN); + ps = mpfr_get_str (0, &e, 10, 0, m_data, GMP_RNDN); shift += std::numeric_limits::digits; i >>= std::numeric_limits::digits; } @@ -82,22 +84,22 @@ struct mpfr_real_imp bool neg = i < 0; *this = static_cast(std::abs(i)); if(neg) - mpfr_neg(m_data, m_data, MPFR_RNDN); + mpfr_neg(m_data, m_data, GMP_RNDN); return *this; } mpfr_real_imp& operator = (unsigned long i) { - mpfr_set_ui(m_data, i, MPFR_RNDN); + mpfr_set_ui(m_data, i, GMP_RNDN); return *this; } mpfr_real_imp& operator = (long i) { - mpfr_set_si(m_data, i, MPFR_RNDN); + mpfr_set_si(m_data, i, GMP_RNDN); return *this; } mpfr_real_imp& operator = (double d) { - mpfr_set_d(m_data, d, MPFR_RNDN); + mpfr_set_d(m_data, d, GMP_RNDN); return *this; } mpfr_real_imp& operator = (long double a) @@ -107,12 +109,12 @@ struct mpfr_real_imp using std::floor; if (a == 0) { - mpfr_set_si(m_data, 0, MPFR_RNDN); + mpfr_set_si(m_data, 0, GMP_RNDN); return *this; } if (a == 1) { - mpfr_set_si(m_data, 1, MPFR_RNDN); + mpfr_set_si(m_data, 1, GMP_RNDN); return *this; } @@ -121,7 +123,7 @@ struct mpfr_real_imp int e; long double f, term; - mpfr_init_set_ui(m_data, 0u, MPFR_RNDN); + mpfr_init_set_ui(m_data, 0u, GMP_RNDN); f = frexp(a, &e); @@ -133,22 +135,22 @@ struct mpfr_real_imp f = ldexp(f, shift); term = floor(f); e -= shift; - mpfr_mul_2exp(m_data, m_data, shift, MPFR_RNDN); + mpfr_mul_2exp(m_data, m_data, shift, GMP_RNDN); if(term > 0) - mpfr_add_ui(m_data, m_data, static_cast(term), MPFR_RNDN); + mpfr_add_ui(m_data, m_data, static_cast(term), GMP_RNDN); else - mpfr_sub_ui(m_data, m_data, static_cast(-term), MPFR_RNDN); + mpfr_sub_ui(m_data, m_data, static_cast(-term), GMP_RNDN); f -= term; } if(e > 0) - mpfr_mul_2exp(m_data, m_data, e, MPFR_RNDN); + mpfr_mul_2exp(m_data, m_data, e, GMP_RNDN); else if(e < 0) - mpfr_div_2exp(m_data, m_data, -e, MPFR_RNDN); + mpfr_div_2exp(m_data, m_data, -e, GMP_RNDN); return *this; } mpfr_real_imp& operator = (const char* s) { - mpfr_set_str(m_data, s, 10, MPFR_RNDN); + mpfr_set_str(m_data, s, 10, GMP_RNDN); return *this; } void swap(mpfr_real_imp& o) @@ -159,7 +161,7 @@ struct mpfr_real_imp { std::string result; mp_exp_t e; - char* ps = mpfr_get_str (0, &e, 10, digits, m_data, MPFR_RNDN); + char* ps = mpfr_get_str (0, &e, 10, digits, m_data, GMP_RNDN); std::ptrdiff_t sl = std::strlen(ps); unsigned chars = sl; if(sl == 0) @@ -199,7 +201,7 @@ struct mpfr_real_imp } void negate() { - mpfr_neg(m_data, m_data, MPFR_RNDN); + mpfr_neg(m_data, m_data, GMP_RNDN); } int compare(const mpfr_real_backend& o)const { @@ -224,6 +226,11 @@ struct mpfr_real_imp const mpfr_t& data()const { return m_data; } protected: mpfr_t m_data; + static unsigned& get_default_precision() + { + static unsigned val = 50; + return val; + } }; } // namespace detail @@ -314,83 +321,77 @@ struct mpfr_real_backend<0> : public detail::mpfr_real_imp<0> { mpfr_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); } -private: - static unsigned& get_default_precision() - { - static unsigned val = 50; - return val; - } }; template inline void add(mpfr_real_backend& result, const mpfr_real_backend& o) { - mpfr_add(result.data(), result.data(), o.data(), MPFR_RNDN); + mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); } template inline void subtract(mpfr_real_backend& result, const mpfr_real_backend& o) { - mpfr_sub(result.data(), result.data(), o.data(), MPFR_RNDN); + mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); } template inline void multiply(mpfr_real_backend& result, const mpfr_real_backend& o) { - mpfr_mul(result.data(), result.data(), o.data(), MPFR_RNDN); + mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); } template inline void divide(mpfr_real_backend& result, const mpfr_real_backend& o) { - mpfr_div(result.data(), result.data(), o.data(), MPFR_RNDN); + mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); } template inline void add(mpfr_real_backend& result, unsigned long i) { - mpfr_add_ui(result.data(), result.data(), i, MPFR_RNDN); + mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); } template inline void subtract(mpfr_real_backend& result, unsigned long i) { - mpfr_sub_ui(result.data(), result.data(), i, MPFR_RNDN); + mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); } template inline void multiply(mpfr_real_backend& result, unsigned long i) { - mpfr_mul_ui(result.data(), result.data(), i, MPFR_RNDN); + mpfr_mul_ui(result.data(), result.data(), i, GMP_RNDN); } template inline void divide(mpfr_real_backend& result, unsigned long i) { - mpfr_div_ui(result.data(), result.data(), i, MPFR_RNDN); + mpfr_div_ui(result.data(), result.data(), i, GMP_RNDN); } template inline void add(mpfr_real_backend& result, long i) { if(i > 0) - mpfr_add_ui(result.data(), result.data(), i, MPFR_RNDN); + mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); else - mpfr_sub_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); + mpfr_sub_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template inline void subtract(mpfr_real_backend& result, long i) { if(i > 0) - mpfr_sub_ui(result.data(), result.data(), i, MPFR_RNDN); + mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); else - mpfr_add_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); + mpfr_add_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template inline void multiply(mpfr_real_backend& result, long i) { - mpfr_mul_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); + mpfr_mul_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) - mpfr_neg(result.data(), result.data(), MPFR_RNDN); + mpfr_neg(result.data(), result.data(), GMP_RNDN); } template inline void divide(mpfr_real_backend& result, long i) { - mpfr_div_ui(result.data(), result.data(), std::abs(i), MPFR_RNDN); + mpfr_div_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) - mpfr_neg(result.data(), result.data(), MPFR_RNDN); + mpfr_neg(result.data(), result.data(), GMP_RNDN); } // // Specialised 3 arg versions of the basic operators: @@ -398,146 +399,146 @@ inline void divide(mpfr_real_backend& result, long i) template inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) { - mpfr_add(a.data(), x.data(), y.data(), MPFR_RNDN); + mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); } template inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) { - mpfr_add_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, long y) { if(y < 0) - mpfr_sub_ui(a.data(), x.data(), -y, MPFR_RNDN); + mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); else - mpfr_add_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void add(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) { - mpfr_add_ui(a.data(), y.data(), x, MPFR_RNDN); + mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template inline void add(mpfr_real_backend& a, long x, const mpfr_real_backend& y) { if(x < 0) { - mpfr_ui_sub(a.data(), -x, y.data(), MPFR_RNDN); - mpfr_neg(a.data(), a.data(), MPFR_RNDN); + mpfr_ui_sub(a.data(), -x, y.data(), GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); } else - mpfr_add_ui(a.data(), y.data(), x, MPFR_RNDN); + mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) { - mpfr_sub(a.data(), x.data(), y.data(), MPFR_RNDN); + mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); } template inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) { - mpfr_sub_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, long y) { if(y < 0) - mpfr_add_ui(a.data(), x.data(), -y, MPFR_RNDN); + mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); else - mpfr_sub_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void subtract(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) { - mpfr_ui_sub(a.data(), x, y.data(), MPFR_RNDN); + mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } template inline void subtract(mpfr_real_backend& a, long x, const mpfr_real_backend& y) { if(x < 0) { - mpfr_add_ui(a.data(), y.data(), -x, MPFR_RNDN); - mpfr_neg(a.data(), a.data(), MPFR_RNDN); + mpfr_add_ui(a.data(), y.data(), -x, GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); } else - mpfr_ui_sub(a.data(), x, y.data(), MPFR_RNDN); + mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } template inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) { - mpfr_mul(a.data(), x.data(), y.data(), MPFR_RNDN); + mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); } template inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) { - mpfr_mul_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, long y) { if(y < 0) { - mpfr_mul_ui(a.data(), x.data(), -y, MPFR_RNDN); + mpfr_mul_ui(a.data(), x.data(), -y, GMP_RNDN); a.negate(); } else - mpfr_mul_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void multiply(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) { - mpfr_mul_ui(a.data(), y.data(), x, MPFR_RNDN); + mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } template inline void multiply(mpfr_real_backend& a, long x, const mpfr_real_backend& y) { if(x < 0) { - mpfr_mul_ui(a.data(), y.data(), -x, MPFR_RNDN); - mpfr_neg(a.data(), a.data(), MPFR_RNDN); + mpfr_mul_ui(a.data(), y.data(), -x, GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); } else - mpfr_mul_ui(a.data(), y.data(), x, MPFR_RNDN); + mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } template inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) { - mpfr_div(a.data(), x.data(), y.data(), MPFR_RNDN); + mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); } template inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) { - mpfr_div_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, long y) { if(y < 0) { - mpfr_div_ui(a.data(), x.data(), -y, MPFR_RNDN); + mpfr_div_ui(a.data(), x.data(), -y, GMP_RNDN); a.negate(); } else - mpfr_div_ui(a.data(), x.data(), y, MPFR_RNDN); + mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } template inline void divide(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) { - mpfr_ui_div(a.data(), x, y.data(), MPFR_RNDN); + mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); } template inline void divide(mpfr_real_backend& a, long x, const mpfr_real_backend& y) { if(x < 0) { - mpfr_ui_div(a.data(), -x, y.data(), MPFR_RNDN); - mpfr_neg(a.data(), a.data(), MPFR_RNDN); + mpfr_ui_div(a.data(), -x, y.data(), GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); } else - mpfr_ui_div(a.data(), x, y.data(), MPFR_RNDN); + mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); } template @@ -554,34 +555,34 @@ inline int get_sign(const mpfr_real_backend& val) template inline void convert_to(unsigned long* result, const mpfr_real_backend& val) { - *result = mpfr_get_ui(val.data(), MPFR_RNDN); + *result = mpfr_get_ui(val.data(), GMP_RNDN); } template inline void convert_to(long* result, const mpfr_real_backend& val) { - *result = mpfr_get_si(val.data(), MPFR_RNDN); + *result = mpfr_get_si(val.data(), GMP_RNDN); } #ifdef _MPFR_H_HAVE_INTMAX_T template inline void convert_to(boost::uintmax_t* result, const mpfr_real_backend& val) { - *result = mpfr_get_uj(val.data(), MPFR_RNDN); + *result = mpfr_get_uj(val.data(), GMP_RNDN); } template inline void convert_to(boost::intmax_t* result, const mpfr_real_backend& val) { - *result = mpfr_get_sj(val.data(), MPFR_RNDN); + *result = mpfr_get_sj(val.data(), GMP_RNDN); } #endif template inline void convert_to(double* result, const mpfr_real_backend& val) { - *result = mpfr_get_d(val.data(), MPFR_RNDN); + *result = mpfr_get_d(val.data(), GMP_RNDN); } template inline void convert_to(long double* result, const mpfr_real_backend& val) { - *result = mpfr_get_ld(val.data(), MPFR_RNDN); + *result = mpfr_get_ld(val.data(), GMP_RNDN); } // @@ -590,19 +591,19 @@ inline void convert_to(long double* result, const mpfr_real_backend& v template inline void eval_sqrt(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_sqrt(result.data(), val.data(), MPFR_RNDN); + mpfr_sqrt(result.data(), val.data(), GMP_RNDN); } template inline void eval_abs(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_abs(result.data(), val.data(), MPFR_RNDN); + mpfr_abs(result.data(), val.data(), GMP_RNDN); } template inline void eval_fabs(mpfr_real_backend& result, const mpfr_real_backend& val) { - mpfr_abs(result.data(), val.data(), MPFR_RNDN); + mpfr_abs(result.data(), val.data(), GMP_RNDN); } template inline void eval_ceil(mpfr_real_backend& result, const mpfr_real_backend& val) @@ -623,23 +624,23 @@ template inline void eval_ldexp(mpfr_real_backend& result, const mpfr_real_backend& val, long e) { if(e > 0) - mpfr_mul_2exp(result.data(), val.data(), e, MPFR_RNDN); + mpfr_mul_2exp(result.data(), val.data(), e, GMP_RNDN); else if(e < 0) - mpfr_div_2exp(result.data(), val.data(), -e, MPFR_RNDN); + mpfr_div_2exp(result.data(), val.data(), -e, GMP_RNDN); } template inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, int* e) { long v; - mpfr_get_d_2exp(&v, val.data(), MPFR_RNDN); + mpfr_get_d_2exp(&v, val.data(), GMP_RNDN); *e = v; - ldexp(result, val, -v); + eval_ldexp(result, val, -v); } template inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, long* e) { - mpfr_get_d_2exp(e, val.data(), MPFR_RNDN); - return ldexp(result, val, -*e); + mpfr_get_d_2exp(e, val.data(), GMP_RNDN); + return eval_ldexp(result, val, -*e); } template @@ -648,6 +649,90 @@ inline int eval_fpclassify(const mpfr_real_backend& val) return mpfr_inf_p(val.data()) ? FP_INFINITE : mpfr_nan_p(val.data()) ? FP_NAN : mpfr_zero_p(val.data()) ? FP_ZERO : FP_NORMAL; } +template +inline void eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const mpfr_real_backend& e) +{ + mpfr_pow(result.data(), b.data(), e.data(), GMP_RNDN); +} + +template +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) +{ + mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN); +} + +template +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) +{ + mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN); +} + +template +inline void eval_exp(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_exp(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_log(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_log(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_sin(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_sin(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_cos(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_cos(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_tan(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_tan(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_asin(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_asin(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_acos(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_acos(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_atan(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_atan(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_sinh(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_sinh(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_cosh(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_cosh(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_tanh(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_tanh(result.data(), arg.data(), GMP_RNDN); +} + typedef big_number > mpfr_real_50; typedef big_number > mpfr_real_100; typedef big_number > mpfr_real_500; @@ -679,7 +764,7 @@ public: { value.first = true; value.second = 0.5; - mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), -mpfr_get_emin(), MPFR_RNDN); + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), -mpfr_get_emin(), GMP_RNDN); } return value.second; } @@ -691,7 +776,7 @@ public: { value.first = true; value.second = 0.5; - mpfr_mul_2exp(value.second.backend().data(), value.second.backend().data(), mpfr_get_emax(), MPFR_RNDN); + mpfr_mul_2exp(value.second.backend().data(), value.second.backend().data(), mpfr_get_emax(), GMP_RNDN); } return value.second; } @@ -715,7 +800,7 @@ public: { value.first = true; value.second = 1; - mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1, MPFR_RNDN); + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1, GMP_RNDN); } return value.second; } @@ -729,7 +814,7 @@ public: { value.first = true; value.second = 1; - mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), digits, MPFR_RNDN); + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), digits, GMP_RNDN); } return value.second; } diff --git a/math/test/Jamfile.v2 b/math/test/Jamfile.v2 index 16b71922..b37662be 100644 --- a/math/test/Jamfile.v2 +++ b/math/test/Jamfile.v2 @@ -83,6 +83,14 @@ run test_arithmetic.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_arithmetic_mpz ; +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPQ + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpq ; + run test_arithmetic.cpp mpfr gmp : # command line : # input files @@ -138,6 +146,14 @@ run test_numeric_limits.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_numeric_limits_mpz ; +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPQ + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpq ; + run test_numeric_limits.cpp mpfr : # command line : # input files diff --git a/math/test/big_number_concept_check.cpp b/math/test/big_number_concept_check.cpp index f4eaba6e..764cd3b4 100644 --- a/math/test/big_number_concept_check.cpp +++ b/math/test/big_number_concept_check.cpp @@ -10,7 +10,7 @@ // all our distributions and special functions on this type. // #define BOOST_MATH_ASSERT_UNDEFINED_POLICY false -#define TEST_MPFR +#define BOOST_MATH_INSTANTIATE_MINIMUM #ifdef _MSC_VER # pragma warning(disable:4800) @@ -20,19 +20,143 @@ # pragma warning(disable:4503) // decorated name length exceeded, name was truncated #endif -#include +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +# define TEST_MPF50 +# define TEST_MPF +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR +# define TEST_MPFR_50 +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) +#include +#endif #include -//#include "compile_test/instantiate.hpp" -/* +#include "libs/math/test/compile_test/instantiate.hpp" + +void a() +{ + using namespace boost; + using namespace boost::math; + using namespace boost::math::concepts; + + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); +} + +void b() +{ + using namespace boost; + using namespace boost::math; + using namespace boost::math::concepts; + + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); +} + +void c() +{ + using namespace boost; + using namespace boost::math; + using namespace boost::math::concepts; + + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); +} + +void d() +{ + using namespace boost; + using namespace boost::math; + using namespace boost::math::concepts; + + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); +} + void foo() { - instantiate(boost::math::ef::e_float()); +#ifdef TEST_BACKEND + instantiate(boost::math::big_number_real_architype()); +#endif +#ifdef TEST_MPF_50 + instantiate(boost::math::mpf_real_50()); +#endif +#ifdef TEST_MPF + instantiate(boost::math::mpf_real()); +#endif +#ifdef TEST_MPFR_50 + instantiate(boost::math::mpfr_real_50()); +#endif +#ifdef TEST_MPFR + instantiate(boost::math::mpfr_real()); +#endif +#ifdef TEST_E_FLOAT + instantiate(boost::math::e_float()); +#endif } -*/ + int main() { +#ifdef TEST_BACKEND BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPF_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPF + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPFR_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPFR + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_E_FLOAT + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif + } - - diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 1c80628b..a8635716 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -6,7 +6,7 @@ #include #include -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 # define TEST_MPF # define TEST_BACKEND @@ -14,6 +14,7 @@ # define TEST_MPFR # define TEST_MPFR_50 # define TEST_E_FLOAT +# define TEST_MPQ #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -24,7 +25,7 @@ #endif -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) #include #endif #ifdef TEST_BACKEND @@ -255,7 +256,7 @@ void test_real_ops(const boost::mpl::false_&){} template void test_real_ops(const boost::mpl::true_&) { -#if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) +#if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) || defined(TEST_MPFR) BOOST_TEST(abs(Real(2)) == 2); BOOST_TEST(abs(Real(-2)) == 2); BOOST_TEST(fabs(Real(2)) == 2); @@ -850,6 +851,9 @@ int main() #ifdef TEST_MPZ test(); #endif +#ifdef TEST_MPQ + test(); +#endif #ifdef TEST_E_FLOAT test(); #endif diff --git a/math/test/test_numeric_limits.cpp b/math/test/test_numeric_limits.cpp index 8f3ecdcc..00bb19e2 100644 --- a/math/test/test_numeric_limits.cpp +++ b/math/test/test_numeric_limits.cpp @@ -5,7 +5,7 @@ #include -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 # define TEST_MPF # define TEST_BACKEND @@ -13,6 +13,7 @@ # define TEST_MPFR # define TEST_MPFR_50 # define TEST_E_FLOAT +# define TEST_MPQ #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -23,7 +24,7 @@ #endif -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) #include #endif #ifdef TEST_BACKEND @@ -151,6 +152,9 @@ int main() #ifdef TEST_MPZ test(); #endif +#ifdef TEST_MPQ + test(); +#endif #ifdef TEST_E_FLOAT test(); #endif From c3d0d2beadf01fa2b92279c29efbc574768b2633 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 20 Sep 2011 12:36:22 +0000 Subject: [PATCH 020/256] Optimise comparison to zero. Remove unnecessary static asserts - even floats are incrementable. Fix some of the default function methods, and add fmod. Add mpq comparison and conversion routines. Add mpfr lanczos support. Add std lib function support for big_number_architype. Update comparison tests. [SVN r74479] --- include/boost/math/big_number.hpp | 7 +- include/boost/math/big_number/default_ops.hpp | 25 ++++++- include/boost/math/big_number/gmp.hpp | 22 +++++++ include/boost/math/big_number/mpfr.hpp | 24 +++++++ .../math/concepts/big_number_architypes.hpp | 65 +++++++++++++++++++ math/test/test_arithmetic.cpp | 24 +++++++ 6 files changed, 161 insertions(+), 6 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index 664aec72..b2f2612a 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -224,7 +224,6 @@ public: // big_number& operator++() { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); using big_num_default_ops::increment; increment(m_backend); return *this; @@ -232,7 +231,6 @@ public: big_number& operator--() { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); using big_num_default_ops::decrement; decrement(m_backend); return *this; @@ -240,7 +238,6 @@ public: big_number operator++(int) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); using big_num_default_ops::increment; self_type temp(*this); increment(m_backend); @@ -249,7 +246,6 @@ public: big_number operator--(int) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The increment operation is only valid for integer types"); using big_num_default_ops::decrement; self_type temp(*this); decrement(m_backend); @@ -439,6 +435,8 @@ public: template typename enable_if, int>::type compare(const V& o)const { + if(o == 0) + return get_sign(m_backend); return m_backend.compare(canonical_value(o)); } Backend& backend() @@ -1380,6 +1378,7 @@ private: static const Backend& canonical_value(const self_type& v){ return v.m_backend; } static const Backend& canonical_value(const self_type* v){ return v->m_backend; } static const Backend& canonical_value(self_type* v){ return v->m_backend; } + static const Backend& canonical_value(self_type& v){ return v.m_backend; } template static typename detail::canonical::type canonical_value(const V& v){ return v; } static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index ca14a806..da2df385 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -328,7 +328,7 @@ inline void convert_to(terminal* result, const B& backend) // Functions: // template -void eval_abs(T* result, const T& arg) +void eval_abs(T& result, const T& arg) { typedef typename T::signed_types type_list; typedef typename mpl::front::type front; @@ -337,7 +337,7 @@ void eval_abs(T* result, const T& arg) result->negate(); } template -void eval_fabs(T* result, const T& arg) +void eval_fabs(T& result, const T& arg) { typedef typename T::signed_types type_list; typedef typename mpl::front::type front; @@ -351,6 +351,26 @@ inline int eval_fpclassify(const Backend& arg) { return is_zero(arg) ? FP_ZERO : FP_NORMAL; } + +template +inline void eval_fmod(T& result, const T& a, const T& b) +{ + if((&result == &a) || (&result == &b)) + { + T temp; + eval_fmod(temp, a, b); + result = temp; + } + T n; + divide(result, a, b); + if(get_sign(a) < 0) + eval_ceil(n, result); + else + eval_floor(n, result); + multiply(n, b); + subtract(result, a, n); +} + // // These have to implemented by the backend, declared here so that our macro generated code compiles OK. // @@ -828,6 +848,7 @@ UNARY_OP_FUNCTOR(tanh) HETERO_BINARY_OP_FUNCTOR(ldexp, int) HETERO_BINARY_OP_FUNCTOR(frexp, int*) BINARY_OP_FUNCTOR(pow) +BINARY_OP_FUNCTOR(fmod) #undef BINARY_OP_FUNCTOR #undef UNARY_OP_FUNCTOR diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index cfb114aa..3c32b4ea 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -1225,6 +1225,14 @@ struct gmp_rational d = v; return compare(d); } + int compare(unsigned long v) + { + return mpq_cmp_ui(m_data, v, 1); + } + int compare(long v) + { + return mpq_cmp_si(m_data, v, 1); + } mpq_t& data() { return m_data; } const mpq_t& data()const { return m_data; } protected: @@ -1277,6 +1285,20 @@ inline void convert_to(double* result, const gmp_rational& val) *result = mpq_get_d(val.data()); } +inline void convert_to(long* result, const gmp_rational& val) +{ + double r; + convert_to(&r, val); + *result = r; +} + +inline void convert_to(unsigned long* result, const gmp_rational& val) +{ + double r; + convert_to(&r, val); + *result = r; +} + inline void eval_abs(gmp_rational& result, const gmp_rational& val) { mpq_abs(result.data(), val.data()); diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index 3020edf5..e03f05da 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -739,6 +740,29 @@ typedef big_number > mpfr_real_500; typedef big_number > mpfr_real_1000; typedef big_number > mpfr_real; +namespace lanczos{ + +template +struct lanczos >, Policy> +{ + typedef typename mpl::if_c< + Digits10 <= 36, + lanczos22UDT, + typename mpl::if_c< + Digits10 <= 50, + lanczos31UDT, + typename mpl::if_c< + Digits10 <= 110, + lanczos61UDT, + undefined_lanczos + >::type + >::type + >::type type; +}; + +} // namespace lanczos + + }} // namespaces namespace std{ diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp index 66d79fc4..26a7a4b6 100644 --- a/include/boost/math/concepts/big_number_architypes.hpp +++ b/include/boost/math/concepts/big_number_architypes.hpp @@ -188,6 +188,71 @@ inline int eval_fpclassify(const big_number_backend_real_architype& arg) return boost::math::fpclassify(arg.m_value); } +inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, const big_number_backend_real_architype& e) +{ + result = std::pow(b.m_value, e.m_value); +} + +inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, int e) +{ + result = std::pow(b.m_value, e); +} + +inline void eval_exp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::exp(arg.m_value); +} + +inline void eval_log(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::log(arg.m_value); +} + +inline void eval_sin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::sin(arg.m_value); +} + +inline void eval_cos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::cos(arg.m_value); +} + +inline void eval_tan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::tan(arg.m_value); +} + +inline void eval_asin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::asin(arg.m_value); +} + +inline void eval_acos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::acos(arg.m_value); +} + +inline void eval_atan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::atan(arg.m_value); +} + +inline void eval_sinh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::sinh(arg.m_value); +} + +inline void eval_cosh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::cosh(arg.m_value); +} + +inline void eval_tanh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::tanh(arg.m_value); +} + typedef boost::math::big_number big_number_real_architype; }}} // namespaces diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index a8635716..fa795461 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -345,6 +345,18 @@ void test_negative_mixed(boost::mpl::true_ const&) Num n3 = 0; Num n4 = -20; Num n5 = -8; + BOOST_TEST((Real(n2) < 0) == true); + BOOST_TEST((Real(n2) <= 0) == true); + BOOST_TEST((Real(n2) > 0) == false); + BOOST_TEST((Real(n2) >= 0) == false); + BOOST_TEST((Real(n2) == 0) == false); + BOOST_TEST((Real(n2) != 0) == true); + BOOST_TEST((Real(n2) == n2) == true); + BOOST_TEST((Real(n2) != n2) == false); + BOOST_TEST((Real(n2) >= n2) == true); + BOOST_TEST((Real(n2) <= n2) == true); + BOOST_TEST((Real(n2) > n2) == false); + BOOST_TEST((Real(n2) < n2) == false); // Default construct: BOOST_TEST(Real(n1) == n1); BOOST_TEST(Real(n2) == n2); @@ -425,6 +437,18 @@ void test_mixed() Num n3 = 0; Num n4 = 20; Num n5 = 8; + BOOST_TEST((Real(n2) < 0) == false); + BOOST_TEST((Real(n2) <= 0) == false); + BOOST_TEST((Real(n2) > 0) == true); + BOOST_TEST((Real(n2) >= 0) == true); + BOOST_TEST((Real(n2) == 0) == false); + BOOST_TEST((Real(n2) != 0) == true); + BOOST_TEST((Real(n2) == n2) == true); + BOOST_TEST((Real(n2) != n2) == false); + BOOST_TEST((Real(n2) >= n2) == true); + BOOST_TEST((Real(n2) <= n2) == true); + BOOST_TEST((Real(n2) > n2) == false); + BOOST_TEST((Real(n2) < n2) == false); // Default construct: BOOST_TEST(Real(n1) == n1); BOOST_TEST(Real(n2) == n2); From 4783bd83e63f5684c96c95ab55f05a784d323f42 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 24 Sep 2011 11:07:59 +0000 Subject: [PATCH 021/256] First cut at removing proto dependency - concept check now builds with msvc and mpfr_real_50. [SVN r74545] --- include/boost/math/big_number.hpp | 923 ++++++------ .../boost/math/big_number/big_number_base.hpp | 1319 ++++++++++------- include/boost/math/big_number/default_ops.hpp | 282 ++-- include/boost/math/big_number/gmp.hpp | 4 +- math/test/big_number_concept_check.cpp | 62 - math/test/test_arithmetic.cpp | 44 +- 6 files changed, 1458 insertions(+), 1176 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index b2f2612a..86a9ad1e 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -6,7 +6,6 @@ #ifndef BOOST_MATH_EXTENDED_REAL_HPP #define BOOST_MATH_EXTENDED_REAL_HPP -#include #include #include #include @@ -25,54 +24,33 @@ namespace boost{ namespace math{ template -class big_number : public detail::big_number_exp*>::type > +class big_number { - typedef detail::big_number_exp*>::type > base_type; typedef big_number self_type; public: - big_number() - { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); - } - big_number(const big_number& e) : m_backend(e.m_backend) - { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); - } + big_number(){} + big_number(const big_number& e) : m_backend(e.m_backend){} template big_number(V v, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); m_backend = canonical_value(v); } - big_number(const big_number& e, unsigned digits10) : m_backend(e.m_backend, digits10) - { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); - } + big_number(const big_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} template big_number(V v, unsigned digits10, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) - : base_type(digits10) { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); + m_backend.precision(digits10); m_backend = canonical_value(v); } template big_number(V v, typename enable_if, mpl::not_ > > >::type* dummy1 = 0) - : m_backend(v) - { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); - } + : m_backend(v){} - template - big_number& operator=(const detail::big_number_exp& e) + template + big_number& operator=(const detail::big_number_exp& e) { - do_assign(e, typename detail::assign_and_eval::type()); + do_assign(e, tag()); return *this; } @@ -90,20 +68,14 @@ public: return *this; } - template - big_number(const detail::big_number_exp& e) + template + big_number(const detail::big_number_exp& e) { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); - do_assign(e, typename detail::assign_and_eval::type()); + do_assign(e, tag()); } #ifndef BOOST_NO_RVALUE_REFERENCES - big_number(big_number&& r) : m_backend(r.m_backend) - { - proto::value(*this) = this; - BOOST_ASSERT(proto::value(*this) == this); - } + big_number(big_number&& r) : m_backend(r.m_backend){} big_number& operator=(big_number&& r) { m_backend.swap(r.m_backend); @@ -111,19 +83,25 @@ public: } #endif - template - big_number& operator+=(const detail::big_number_exp& e) + big_number& operator+=(const self_type& val) + { + do_add(detail::big_number_exp(val), detail::terminal()); + return *this; + } + + template + big_number& operator+=(const detail::big_number_exp& e) { // Create a copy if e contains this, but not if we're just doing a // x *= x if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_add(temp, typename proto::tag_of::type()); + do_add(detail::big_number_exp(temp), detail::terminal()); } else { - do_add(e, typename proto::tag_of::type()); + do_add(e, tag()); } return *this; } @@ -137,6 +115,12 @@ public: return *this; } + big_number& operator-=(const self_type& val) + { + do_subtract(detail::big_number_exp(val), detail::terminal()); + return *this; + } + template big_number& operator-=(const detail::big_number_exp& e) { @@ -144,11 +128,11 @@ public: if(contains_self(e)) { self_type temp(e); - do_subtract(temp, typename proto::tag_of::type()); + do_subtract(temp, typename detail_of::type()); } else { - do_subtract(e, typename proto::tag_of::type()); + do_subtract(e, typename Exp::tag_type()); } return *this; } @@ -162,6 +146,13 @@ public: return *this; } + + big_number& operator *= (const self_type& e) + { + do_multiplies(detail::big_number_exp(e), detail::terminal()); + return *this; + } + template big_number& operator*=(const detail::big_number_exp& e) { @@ -170,11 +161,11 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_multiplies(temp, typename proto::tag_of::type()); + do_multiplies(detail::big_number_exp(temp), detail::terminal()); } else { - do_multiplies(e, typename proto::tag_of::type()); + do_multiplies(e, typename Exp::tag_type()); } return *this; } @@ -188,19 +179,25 @@ public: return *this; } + big_number& operator%=(const self_type& e) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + do_modulus(detail::big_number_exp(e), detail::terminal()); + return *this; + } template big_number& operator%=(const detail::big_number_exp& e) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); // Create a temporary if the RHS references *this: if(contains_self(e)) { self_type temp(e); - do_modulus(temp, typename proto::tag_of::type()); + do_modulus(temp, typename detail_of::type()); } else { - do_modulus(e, typename proto::tag_of::type()); + do_modulus(e, typename Exp::tag_type()); } return *this; } @@ -208,7 +205,7 @@ public: typename enable_if, big_number& >::type operator%=(const V& v) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); using big_num_default_ops::modulus; modulus(m_backend, canonical_value(v)); return *this; @@ -255,7 +252,7 @@ public: template typename enable_if, big_number&>::type operator <<= (V val) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The left-shift operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); left_shift(m_backend, canonical_value(val)); return *this; @@ -264,12 +261,18 @@ public: template typename enable_if, big_number&>::type operator >>= (V val) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The right-shift operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); right_shift(m_backend, canonical_value(val)); return *this; } + big_number& operator /= (const self_type& e) + { + do_divide(detail::big_number_exp(e), detail::terminal()); + return *this; + } + template big_number& operator/=(const detail::big_number_exp& e) { @@ -277,11 +280,11 @@ public: if(contains_self(e)) { self_type temp(e); - do_divide(temp, typename proto::tag_of::type()); + do_divide(detail::big_number_exp(temp), typename detail_of::type()); } else { - do_divide(e, typename proto::tag_of::type()); + do_divide(e, typename Exp::tag_type()); } return *this; } @@ -295,6 +298,12 @@ public: return *this; } + big_number& operator&=(const self_type& e) + { + do_bitwise_and(detail::big_number_exp(e), detail::terminal()); + return *this; + } + template big_number& operator&=(const detail::big_number_exp& e) { @@ -303,11 +312,11 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_and(temp, typename proto::tag_of::type()); + do_bitwise_and(temp, typename detail_of::type()); } else { - do_bitwise_and(e, typename proto::tag_of::type()); + do_bitwise_and(e, typename Exp::tag_type()); } return *this; } @@ -321,6 +330,12 @@ public: return *this; } + big_number& operator|=(const self_type& e) + { + do_bitwise_or(detail::big_number_exp(e), detail::terminal()); + return *this; + } + template big_number& operator|=(const detail::big_number_exp& e) { @@ -329,11 +344,11 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_or(temp, typename proto::tag_of::type()); + do_bitwise_or(temp, typename detail_of::type()); } else { - do_bitwise_or(e, typename proto::tag_of::type()); + do_bitwise_or(e, typename Exp::tag_type()); } return *this; } @@ -347,17 +362,23 @@ public: return *this; } + big_number& operator^=(const self_type& e) + { + do_bitwise_xor(detail::big_number_exp(e), detail::terminal()); + return *this; + } + template big_number& operator^=(const detail::big_number_exp& e) { if(contains_self(e)) { self_type temp(e); - do_bitwise_xor(temp, typename proto::tag_of::type()); + do_bitwise_xor(temp, typename detail_of::type()); } else { - do_bitwise_xor(e, typename proto::tag_of::type()); + do_bitwise_xor(e, typename Exp::tag_type()); } return *this; } @@ -370,6 +391,15 @@ public: bitwise_xor(m_backend, canonical_value(v)); return *this; } + // + // Use in boolean context: + // + typedef bool (self_type::*unmentionable_type)()const; + + operator unmentionable_type()const + { + return is_zero() ? 0 : &self_type::is_zero; + } // // swap: @@ -381,12 +411,12 @@ public: // // Zero and sign: // - bool is_zero() + bool is_zero()const { using big_num_default_ops::is_zero; return is_zero(m_backend); } - int sign() + int sign()const { using big_num_default_ops::get_sign; return get_sign(m_backend); @@ -435,6 +465,7 @@ public: template typename enable_if, int>::type compare(const V& o)const { + using big_num_default_ops::get_sign; if(o == 0) return get_sign(m_backend); return m_backend.compare(canonical_value(o)); @@ -475,114 +506,99 @@ private: void do_assign(const Exp& e, const detail::add_immediates&) { using big_num_default_ops::add; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - add(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } - +/* template void do_assign(const Exp& e, const detail::add_and_negate_immediates&) { using big_num_default_ops::add; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - add(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); m_backend.negate(); } - +*/ template void do_assign(const Exp& e, const detail::subtract_immediates&) { using big_num_default_ops::subtract; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - subtract(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } - + /* template void do_assign(const Exp& e, const detail::subtract_and_negate_immediates&) { using big_num_default_ops::subtract; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - subtract(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); m_backend.negate(); } - + */ template void do_assign(const Exp& e, const detail::multiply_immediates&) { using big_num_default_ops::multiply; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - multiply(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); - } - - template - void do_assign(const Exp& e, const detail::multiply_and_negate_immediates&) - { - using big_num_default_ops::multiply; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - multiply(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); - m_backend.negate(); + multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template void do_assign(const Exp& e, const detail::divide_immediates&) { using big_num_default_ops::divide; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - divide(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + +#if 0 + template + void do_assign(const Exp& e, const detail::multiply_and_negate_immediates&) + { + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + m_backend.negate(); } template void do_assign(const Exp& e, const detail::divide_and_negate_immediates&) { using big_num_default_ops::divide; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - divide(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); m_backend.negate(); } template - void do_assign(const Exp& e, const proto::tag::unary_plus&) + void do_assign(const Exp& e, const detail::unary_plus&) { - typedef typename proto::result_of::left::type left_type; - do_assign(proto::left(e), typename detail::assign_and_eval::type()); + typedef typename Exp::left_type left_type; + do_assign(e.left(), typename left_type::tag_type()); } +#endif template - void do_assign(const Exp& e, const proto::tag::negate&) + void do_assign(const Exp& e, const detail::negate&) { - typedef typename proto::result_of::left::type left_type; - do_assign(proto::left(e), typename detail::assign_and_eval::type()); + typedef typename Exp::left_type left_type; + do_assign(e.left(), typename left_type::tag_type()); m_backend.negate(); } - template - void do_assign(const Exp& e, const proto::tag::plus&) + void do_assign(const Exp& e, const detail::plus&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just add the right: - do_add(proto::right(e), typename proto::tag_of::type()); + do_add(e.right(), typename right_type::tag_type()); } - else if(br && is_self(proto::right(e))) + else if(br && is_self(e.right())) { // Ignore the right node, it's *this, just add the left: - do_add(proto::left(e), typename proto::tag_of::type()); + do_add(e.left(), typename left_type::tag_type()); } else if(bl || br) { @@ -591,36 +607,36 @@ private: } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_add(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_add(e.right(), typename right_type::tag_type()); } else { - do_assign(proto::right(e), typename detail::assign_and_eval::type()); - do_add(proto::left(e), typename proto::tag_of::type()); + do_assign(e.right(), typename right_type::tag_type()); + do_add(e.left(), typename left_type::tag_type()); } } template - void do_assign(const Exp& e, const proto::tag::minus&) + void do_assign(const Exp& e, const detail::minus&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just subtract the right: - do_subtract(proto::right(e), typename proto::tag_of::type()); + do_subtract(e.right(), typename right_type::tag_type()); } - else if(br && is_self(proto::right(e))) + else if(br && is_self(e.right())) { // Ignore the right node, it's *this, just subtract the left and negate the result: - do_subtract(proto::left(e), typename proto::tag_of::type()); + do_subtract(e.left(), typename left_type::tag_type()); m_backend.negate(); } else if(bl || br) @@ -630,37 +646,37 @@ private: } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_subtract(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_subtract(e.right(), typename right_type::tag_type()); } else { - do_assign(proto::right(e), typename detail::assign_and_eval::type()); - do_subtract(proto::left(e), typename proto::tag_of::type()); + do_assign(e.right(), typename right_type::tag_type()); + do_subtract(e.left(), typename left_type::tag_type()); m_backend.negate(); } } template - void do_assign(const Exp& e, const proto::tag::multiplies&) + void do_assign(const Exp& e, const detail::multiplies&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just add the right: - do_multiplies(proto::right(e), typename proto::tag_of::type()); + do_multiplies(e.right(), typename right_type::tag_type()); } - else if(br && is_self(proto::right(e))) + else if(br && is_self(e.right())) { // Ignore the right node, it's *this, just add the left: - do_multiplies(proto::left(e), typename proto::tag_of::type()); + do_multiplies(e.left(), typename left_type::tag_type()); } else if(bl || br) { @@ -669,28 +685,28 @@ private: } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_multiplies(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_multiplies(e.right(), typename right_type::tag_type()); } else { - do_assign(proto::right(e), typename detail::assign_and_eval::type()); - do_multiplies(proto::left(e), typename proto::tag_of::type()); + do_assign(e.right(), typename right_type::tag_type()); + do_multiplies(e.left(), typename left_type::tag_type()); } } template - void do_assign(const Exp& e, const proto::tag::divides&) + void do_assign(const Exp& e, const detail::divides&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just add the right: - do_divide(proto::right(e), typename proto::tag_of::type()); + do_divide(e.right(), typename right_type::tag_type()); } else if(bl || br) { @@ -699,28 +715,28 @@ private: } else { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_divide(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_divide(e.right(), typename right_type::tag_type()); } } template - void do_assign(const Exp& e, const proto::tag::modulus&) + void do_assign(const Exp& e, const detail::modulus&) { // // This operation is only valid for integer backends: // - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just add the right: - do_modulus(proto::right(e), typename proto::tag_of::type()); + do_modulus(e.right(), typename right_type::tag_type()); } else if(bl || br) { @@ -729,208 +745,199 @@ private: } else { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_modulus(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_modulus(e.right(), typename right_type::tag_type()); } } template void do_assign(const Exp& e, const detail::modulus_immediates&) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); using big_num_default_ops::modulus; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - modulus(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + modulus(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template - void do_assign(const Exp& e, const proto::tag::bitwise_and&) + void do_assign(const Exp& e, const detail::bitwise_and&) { // // This operation is only valid for integer backends: // - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just add the right: - do_bitwise_and(proto::right(e), typename proto::tag_of::type()); + do_bitwise_and(e.right(), typename right_type::tag_type()); } - else if(br && is_self(proto::right(e))) + else if(br && is_self(e.right())) { - do_bitwise_and(proto::left(e), typename proto::tag_of::type()); + do_bitwise_and(e.left(), typename left_type::tag_type()); } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_bitwise_and(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_bitwise_and(e.right(), typename right_type::tag_type()); } else { - do_assign(proto::right(e), typename detail::assign_and_eval::type()); - do_bitwise_and(proto::left(e), typename proto::tag_of::type()); + do_assign(e.right(), typename right_type::tag_type()); + do_bitwise_and(e.left(), typename left_type::tag_type()); } } template void do_assign(const Exp& e, const detail::bitwise_and_immediates&) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); using big_num_default_ops::bitwise_and; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - bitwise_and(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + bitwise_and(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template - void do_assign(const Exp& e, const proto::tag::bitwise_or&) + void do_assign(const Exp& e, const detail::bitwise_or&) { // // This operation is only valid for integer backends: // - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just add the right: - do_bitwise_or(proto::right(e), typename proto::tag_of::type()); + do_bitwise_or(e.right(), typename right_type::tag_type()); } - else if(br && is_self(proto::right(e))) + else if(br && is_self(e.right())) { - do_bitwise_or(proto::left(e), typename proto::tag_of::type()); + do_bitwise_or(e.left(), typename left_type::tag_type()); } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_bitwise_or(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_bitwise_or(e.right(), typename right_type::tag_type()); } else { - do_assign(proto::right(e), typename detail::assign_and_eval::type()); - do_bitwise_or(proto::left(e), typename proto::tag_of::type()); + do_assign(e.right(), typename right_type::tag_type()); + do_bitwise_or(e.left(), typename left_type::tag_type()); } } template void do_assign(const Exp& e, const detail::bitwise_or_immediates&) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); using big_num_default_ops::bitwise_or; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - bitwise_or(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + bitwise_or(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template - void do_assign(const Exp& e, const proto::tag::bitwise_xor&) + void do_assign(const Exp& e, const detail::bitwise_xor&) { // // This operation is only valid for integer backends: // - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; - static int const left_depth = boost::result_of::type::value; - static int const right_depth = boost::result_of::type::value; + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; - bool bl = contains_self(proto::left(e)); - bool br = contains_self(proto::right(e)); + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); - if(bl && is_self(proto::left(e))) + if(bl && is_self(e.left())) { // Ignore the left node, it's *this, just add the right: - do_bitwise_xor(proto::right(e), typename proto::tag_of::type()); + do_bitwise_xor(e.right(), typename right_type::tag_type()); } - else if(br && is_self(proto::right(e))) + else if(br && is_self(e.right())) { - do_bitwise_xor(proto::left(e), typename proto::tag_of::type()); + do_bitwise_xor(e.left(), typename left_type::tag_type()); } else if(left_depth >= right_depth) { - do_assign(proto::left(e), typename detail::assign_and_eval::type()); - do_bitwise_xor(proto::right(e), typename proto::tag_of::type()); + do_assign(e.left(), typename left_type::tag_type()); + do_bitwise_xor(e.right(), typename right_type::tag_type()); } else { - do_assign(proto::right(e), typename detail::assign_and_eval::type()); - do_bitwise_xor(proto::left(e), typename proto::tag_of::type()); + do_assign(e.right(), typename right_type::tag_type()); + do_bitwise_xor(e.left(), typename left_type::tag_type()); } } template void do_assign(const Exp& e, const detail::bitwise_xor_immediates&) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "Bitwise operations are only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); using big_num_default_ops::bitwise_xor; - typedef typename proto::tag_of::type>::type left_tag; - typedef typename proto::tag_of::type>::type right_tag; - bitwise_xor(m_backend, canonical_value(underlying_value(proto::left(e), left_tag())), canonical_value(underlying_value(proto::right(e), right_tag()))); + bitwise_xor(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } - template - void do_assign(const Exp& e, const proto::tag::terminal&) + void do_assign(const Exp& e, const detail::terminal&) { if(!is_self(e)) { - m_backend = canonical_value(proto::value(e)); + m_backend = canonical_value(e.value()); } } template - void do_assign(const Exp& e, const proto::tag::function&) + void do_assign(const Exp& e, const detail::function&) { - typedef typename proto::arity_of::type tag_type; + typedef typename Exp::arity tag_type; do_assign_function(e, tag_type()); } template - void do_assign(const Exp& e, const proto::tag::shift_left&) + void do_assign(const Exp& e, const detail::shift_left&) { // We can only shift by an integer value, not an arbitrary expression: - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::arity_of::type right_arity; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + typedef typename right_type::arity right_arity; BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); - typedef typename proto::result_of::value::type right_value_type; + typedef typename right_type::result_type right_value_type; BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); - typedef typename proto::tag_of::type tag_type; - do_assign_left_shift(proto::left(e), canonical_value(proto::value(proto::right(e))), tag_type()); + typedef typename left_type::tag_type tag_type; + do_assign_left_shift(e.left(), canonical_value(e.right().value()), tag_type()); } template - void do_assign(const Exp& e, const proto::tag::shift_right&) + void do_assign(const Exp& e, const detail::shift_right&) { // We can only shift by an integer value, not an arbitrary expression: - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::arity_of::type right_arity; + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + typedef typename right_type::arity right_arity; BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); - typedef typename proto::result_of::value::type right_value_type; + typedef typename right_type::result_type right_value_type; BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); - typedef typename proto::tag_of::type tag_type; - do_assign_right_shift(proto::left(e), canonical_value(proto::value(proto::right(e))), tag_type()); + typedef typename left_type::tag_type tag_type; + do_assign_right_shift(e.left(), canonical_value(e.right().value()), tag_type()); } template - void do_assign(const Exp& e, const proto::tag::complement&) + void do_assign(const Exp& e, const detail::bitwise_complement&) { using big_num_default_ops::complement; - self_type temp(proto::left(e)); + self_type temp(e.left()); complement(m_backend, temp.backend()); } @@ -938,21 +945,21 @@ private: void do_assign(const Exp& e, const detail::complement_immediates&) { using big_num_default_ops::complement; - complement(m_backend, canonical_value(proto::left(e))); + complement(m_backend, canonical_value(e.left().value())); } template - void do_assign_right_shift(const Exp& e, const Val& val, const proto::tag::terminal&) + void do_assign_right_shift(const Exp& e, const Val& val, const detail::terminal&) { using big_num_default_ops::right_shift; - right_shift(m_backend, canonical_value(proto::value(e)), val); + right_shift(m_backend, canonical_value(e.value()), val); } template - void do_assign_left_shift(const Exp& e, const Val& val, const proto::tag::terminal&) + void do_assign_left_shift(const Exp& e, const Val& val, const detail::terminal&) { using big_num_default_ops::left_shift; - left_shift(m_backend, canonical_value(proto::value(e)), val); + left_shift(m_backend, canonical_value(e.value()), val); } template @@ -972,21 +979,21 @@ private: } template - void do_assign_function(const Exp& e, const mpl::long_<1>&) + void do_assign_function(const Exp& e, const mpl::int_<1>&) { - proto::value(proto::left(e))(&m_backend); + e.left().value()(&m_backend); } template - void do_assign_function(const Exp& e, const mpl::long_<2>&) + void do_assign_function(const Exp& e, const mpl::int_<2>&) { - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type tag_type; - do_assign_function_1(proto::value(proto::left(e)), proto::right(e), tag_type()); + typedef typename Exp::right_type right_type; + typedef typename right_type::tag_type tag_type; + do_assign_function_1(e.left().value(), e.right(), tag_type()); } template - void do_assign_function_1(const F& f, const Exp& val, const proto::tag::terminal&) + void do_assign_function_1(const F& f, const Exp& val, const detail::terminal&) { - f(m_backend, canonical_value(proto::value(val))); + f(m_backend, canonical_value(val.value())); } template void do_assign_function_1(const F& f, const Exp& val, const Tag&) @@ -995,30 +1002,30 @@ private: f(m_backend, t.backend()); } template - void do_assign_function(const Exp& e, const mpl::long_<3>&) + void do_assign_function(const Exp& e, const mpl::int_<3>&) { - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type tag_type; - typedef typename proto::result_of::child_c::type end_type; - typedef typename proto::tag_of::type end_tag; - do_assign_function_2(proto::value(proto::left(e)), proto::right(e), proto::child_c<2>(e), tag_type(), end_tag()); + typedef typename Exp::middle_type middle_type; + typedef typename middle_type::tag_type tag_type; + typedef typename Exp::right_type end_type; + typedef typename end_type::tag_type end_tag; + do_assign_function_2(e.left().value(), e.middle(), e.right(), tag_type(), end_tag()); } template - void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const proto::tag::terminal&, const proto::tag::terminal&) + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const detail::terminal&) { - f(m_backend, canonical_value(proto::value(val1)), canonical_value(proto::value(val2))); + f(m_backend, canonical_value(val1.value()), canonical_value(val2.value())); } template - void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const proto::tag::terminal&) + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const detail::terminal&) { self_type temp1(val1); - f(m_backend, temp1.backend(), canonical_value(proto::value(val2))); + f(m_backend, temp1.backend(), canonical_value(val2.value())); } template - void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const proto::tag::terminal&, const Tag2&) + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const Tag2&) { self_type temp2(val2); - f(m_backend, canonical_value(proto::value(val1)), temp2.backend()); + f(m_backend, canonical_value(val1.value()), temp2.backend()); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&) @@ -1029,137 +1036,160 @@ private: } template - void do_add(const Exp& e, const proto::tag::terminal&) + void do_add(const Exp& e, const detail::terminal&) { using big_num_default_ops::add; - add(m_backend, canonical_value(proto::value(e))); + add(m_backend, canonical_value(e.value())); } template - void do_add(const Exp& e, const proto::tag::unary_plus&) + void do_add(const Exp& e, const detail::negate&) { - typedef typename proto::result_of::left::type left_type; - do_add(proto::left(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + do_subtract(e.left(), typename left_type::tag_type()); } template - void do_add(const Exp& e, const proto::tag::negate&) + void do_add(const Exp& e, const detail::plus&) { - typedef typename proto::result_of::left::type left_type; - do_subtract(proto::left(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_add(e.left(), typename left_type::tag_type()); + do_add(e.right(), typename right_type::tag_type()); } template - void do_add(const Exp& e, const proto::tag::plus&) + void do_add(const Exp& e, const detail::minus&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_add(proto::left(e), typename proto::tag_of::type()); - do_add(proto::right(e), typename proto::tag_of::type()); - } - - template - void do_add(const Exp& e, const proto::tag::minus&) - { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_add(proto::left(e), typename proto::tag_of::type()); - do_subtract(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_add(e.left(), typename left_type::tag_type()); + do_subtract(e.right(), typename right_type::tag_type()); } template void do_add(const Exp& e, const unknown&) { self_type temp(e); - do_add(temp, proto::tag::terminal()); + do_add(detail::big_number_exp(temp), detail::terminal()); } template - void do_subtract(const Exp& e, const proto::tag::terminal&) + void do_add(const Exp& e, const detail::add_immediates&) + { + using big_num_default_ops::add; + add(m_backend, canonical_value(e.left().value())); + add(m_backend, canonical_value(e.right().value())); + } + template + void do_add(const Exp& e, const detail::subtract_immediates&) + { + using big_num_default_ops::add; + using big_num_default_ops::subtract; + add(m_backend, canonical_value(e.left().value())); + subtract(m_backend, canonical_value(e.right().value())); + } + template + void do_subtract(const Exp& e, const detail::terminal&) { using big_num_default_ops::subtract; - subtract(m_backend, canonical_value(proto::value(e))); + subtract(m_backend, canonical_value(e.value())); } template - void do_subtract(const Exp& e, const proto::tag::unary_plus&) + void do_subtract(const Exp& e, const detail::negate&) { - typedef typename proto::result_of::left::type left_type; - do_subtract(proto::left(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + do_add(e.left(), typename left_type::tag_type()); } template - void do_subtract(const Exp& e, const proto::tag::negate&) + void do_subtract(const Exp& e, const detail::plus&) { - typedef typename proto::result_of::left::type left_type; - do_add(proto::left(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_subtract(e.left(), typename left_type::tag_type()); + do_subtract(e.right(), typename right_type::tag_type()); } template - void do_subtract(const Exp& e, const proto::tag::plus&) + void do_subtract(const Exp& e, const detail::minus&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_subtract(proto::left(e), typename proto::tag_of::type()); - do_subtract(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_subtract(e.left(), typename left_type::tag_type()); + do_add(e.right(), typename right_type::tag_type()); } - template - void do_subtract(const Exp& e, const proto::tag::minus&) + void do_subtract(const Exp& e, const detail::add_immediates&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_subtract(proto::left(e), typename proto::tag_of::type()); - do_add(proto::right(e), typename proto::tag_of::type()); + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(e.left().value())); + subtract(m_backend, canonical_value(e.right().value())); + } + template + void do_subtract(const Exp& e, const detail::subtract_immediates&) + { + using big_num_default_ops::add; + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(e.left().value())); + add(m_backend, canonical_value(e.right().value())); } - template void do_subtract(const Exp& e, const unknown&) { self_type temp(e); - do_subtract(temp, proto::tag::terminal()); + do_subtract(detail::big_number_exp(temp), detail::terminal()); } template - void do_multiplies(const Exp& e, const proto::tag::terminal&) + void do_multiplies(const Exp& e, const detail::terminal&) { using big_num_default_ops::multiply; - multiply(m_backend, canonical_value(proto::value(e))); + multiply(m_backend, canonical_value(e.value())); } template - void do_multiplies(const Exp& e, const proto::tag::unary_plus&) + void do_multiplies(const Exp& e, const detail::negate&) { - typedef typename proto::result_of::left::type left_type; - do_multiplies(proto::left(e), typename proto::tag_of::type()); - } - - template - void do_multiplies(const Exp& e, const proto::tag::negate&) - { - typedef typename proto::result_of::left::type left_type; - do_multiplies(proto::left(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + do_multiplies(e.left(), typename left_type::tag_type()); m_backend.negate(); } template - void do_multiplies(const Exp& e, const proto::tag::multiplies&) + void do_multiplies(const Exp& e, const detail::multiplies&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_multiplies(proto::left(e), typename proto::tag_of::type()); - do_multiplies(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_multiplies(e.left(), typename left_type::tag_type()); + do_multiplies(e.right(), typename right_type::tag_type()); } template - void do_multiplies(const Exp& e, const proto::tag::divides&) + void do_multiplies(const Exp& e, const detail::divides&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_multiplies(proto::left(e), typename proto::tag_of::type()); - do_divide(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_multiplies(e.left(), typename left_type::tag_type()); + do_divide(e.right(), typename right_type::tag_type()); } + template + void do_multiplies(const Exp& e, const detail::multiply_immediates&) + { + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(e.left().value())); + multiply(m_backend, canonical_value(e.right().value())); + } + template + void do_multiplies(const Exp& e, const detail::divide_immediates&) + { + using big_num_default_ops::multiply; + using big_num_default_ops::divide; + multiply(m_backend, canonical_value(e.left().value())); + divide(m_backend, canonical_value(e.right().value())); + } template void do_multiplies(const Exp& e, const unknown&) { @@ -1169,43 +1199,52 @@ private: } template - void do_divide(const Exp& e, const proto::tag::terminal&) + void do_divide(const Exp& e, const detail::terminal&) { using big_num_default_ops::divide; - divide(m_backend, canonical_value(proto::value(e))); + divide(m_backend, canonical_value(e.value())); } template - void do_divide(const Exp& e, const proto::tag::unary_plus&) + void do_divide(const Exp& e, const detail::negate&) { - typedef typename proto::result_of::left::type left_type; - do_divide(proto::left(e), typename proto::tag_of::type()); - } - - template - void do_divide(const Exp& e, const proto::tag::negate&) - { - typedef typename proto::result_of::left::type left_type; - do_divide(proto::left(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + do_divide(e.left(), typename left_type::tag_type()); m_backend.negate(); } template - void do_divide(const Exp& e, const proto::tag::multiplies&) + void do_divide(const Exp& e, const detail::multiplies&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_divide(proto::left(e), typename proto::tag_of::type()); - do_divide(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_divide(e.left(), typename left_type::tag_type()); + do_divide(e.right(), typename right_type::tag_type()); } template - void do_divide(const Exp& e, const proto::tag::divides&) + void do_divide(const Exp& e, const detail::divides&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_divide(proto::left(e), typename proto::tag_of::type()); - do_multiplies(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_divide(e.left(), typename left_type::tag_type()); + do_multiplies(e.right(), typename right_type::tag_type()); + } + + template + void do_divides(const Exp& e, const detail::multiply_immediates&) + { + using big_num_default_ops::divide; + divide(m_backend, canonical_value(e.left().value())); + divide(m_backend, canonical_value(e.right().value())); + } + template + void do_divides(const Exp& e, const detail::divide_immediates&) + { + using big_num_default_ops::multiply; + using big_num_default_ops::divide; + divide(m_backend, canonical_value(e.left().value())); + mutiply(m_backend, canonical_value(e.right().value())); } template @@ -1217,35 +1256,35 @@ private: } template - void do_modulus(const Exp& e, const proto::tag::terminal&) + void do_modulus(const Exp& e, const detail::terminal&) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); using big_num_default_ops::modulus; - modulus(m_backend, canonical_value(proto::value(e))); + modulus(m_backend, canonical_value(e.value())); } template void do_modulus(const Exp& e, const Unknown&) { - BOOST_STATIC_ASSERT_MSG(is_extended_integer::value, "The modulus operation is only valid for integer types"); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); using big_num_default_ops::modulus; self_type temp(e); - modulus(m_backend, canonical_value(proto::value(temp))); + modulus(m_backend, canonical_value(temp)); } template - void do_bitwise_and(const Exp& e, const proto::tag::terminal&) + void do_bitwise_and(const Exp& e, const detail::terminal&) { using big_num_default_ops::bitwise_and; - bitwise_and(m_backend, canonical_value(proto::value(e))); + bitwise_and(m_backend, canonical_value(e.value())); } template - void do_bitwise_and(const Exp& e, const proto::tag::bitwise_and&) + void do_bitwise_and(const Exp& e, const detail::bitwise_and&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_bitwise_and(proto::left(e), typename proto::tag_of::type()); - do_bitwise_and(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_bitwise_and(e.left(), typename left_type::tag_type()); + do_bitwise_and(e.right(), typename right_type::tag_type()); } template void do_bitwise_and(const Exp& e, const unknown&) @@ -1256,18 +1295,18 @@ private: } template - void do_bitwise_or(const Exp& e, const proto::tag::terminal&) + void do_bitwise_or(const Exp& e, const detail::terminal&) { using big_num_default_ops::bitwise_or; - bitwise_or(m_backend, canonical_value(proto::value(e))); + bitwise_or(m_backend, canonical_value(e.value())); } template - void do_bitwise_or(const Exp& e, const proto::tag::bitwise_or&) + void do_bitwise_or(const Exp& e, const detail::bitwise_or&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_bitwise_or(proto::left(e), typename proto::tag_of::type()); - do_bitwise_or(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_bitwise_or(e.left(), typename left_type::tag_type()); + do_bitwise_or(e.right(), typename right_type::tag_type()); } template void do_bitwise_or(const Exp& e, const unknown&) @@ -1278,18 +1317,18 @@ private: } template - void do_bitwise_xor(const Exp& e, const proto::tag::terminal&) + void do_bitwise_xor(const Exp& e, const detail::terminal&) { using big_num_default_ops::bitwise_xor; - bitwise_xor(m_backend, canonical_value(proto::value(e))); + bitwise_xor(m_backend, canonical_value(e.value())); } template - void do_bitwise_xor(const Exp& e, const proto::tag::bitwise_xor&) + void do_bitwise_xor(const Exp& e, const detail::bitwise_xor&) { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - do_bitwise_xor(proto::left(e), typename proto::tag_of::type()); - do_bitwise_xor(proto::right(e), typename proto::tag_of::type()); + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_bitwise_xor(e.left(), typename left_type::tag_type()); + do_bitwise_xor(e.right(), typename right_type::tag_type()); } template void do_bitwise_xor(const Exp& e, const unknown&) @@ -1303,47 +1342,48 @@ private: template bool contains_self(const Exp& e)const { - return contains_self(e, mpl::int_::value>()); + return contains_self(e, typename Exp::arity()); } template bool contains_self(const Exp& e, mpl::int_<0> const&)const { - return is_really_self(proto::value(e)); + return is_really_self(e.value()); } template bool contains_self(const Exp& e, mpl::int_<1> const&)const { - typedef typename proto::result_of::child_c::type child_type; - return contains_self(proto::child_c<0>(e), mpl::int_::value>()); + typedef typename Exp::left_type child_type; + return contains_self(e.left(), typename child_type::arity()); } template bool contains_self(const Exp& e, mpl::int_<2> const&)const { - typedef typename proto::result_of::child_c::type child0_type; - typedef typename proto::result_of::child_c::type child1_type; - return contains_self(proto::child_c<0>(e), mpl::int_::value>()) || contains_self(proto::child_c<1>(e), mpl::int_::value>()); + typedef typename Exp::left_type child0_type; + typedef typename Exp::right_type child1_type; + return contains_self(e.left(), typename child0_type::arity()) + || contains_self(e.right(), typename child1_type::arity()); } template bool contains_self(const Exp& e, mpl::int_<3> const&)const { - typedef typename proto::result_of::child_c::type child0_type; - typedef typename proto::result_of::child_c::type child1_type; - typedef typename proto::result_of::child_c::type child2_type; - return contains_self(proto::child_c<0>(e), mpl::int_::value>()) - || contains_self(proto::child_c<1>(e), mpl::int_::value>()) - || contains_self(proto::child_c<2>(e), mpl::int_::value>()); + typedef typename Exp::left_type child0_type; + typedef typename Exp::middle_type child1_type; + typedef typename Exp::right_type child2_type; + return contains_self(e.left(), typename child0_type::arity()) + || contains_self(e.middle(), typename child1_type::arity()) + || contains_self(e.right(), typename child2_type::arity()); } // Test if the expression is a reference to *this: template bool is_self(const Exp& e)const { - return is_self(e, mpl::int_::value>()); + return is_self(e, typename Exp::arity()); } template bool is_self(const Exp& e, mpl::int_<0> const&)const { - return is_really_self(proto::value(e)); + return is_really_self(e.value()); } template bool is_self(const Exp& e, mpl::int_ const&)const @@ -1353,36 +1393,15 @@ private: template bool is_really_self(const Val&)const { return false; } - bool is_really_self(const self_type* v)const - { - return v == this; - } - bool is_really_self(self_type* v)const - { - return v == this; - } - template - static typename detail::underlying_result::type underlying_value(const detail::big_number_exp& e, const proto::tag::terminal&) - { - return proto::value(e); - } - template - static typename detail::underlying_result::type - underlying_value(const detail::big_number_exp& e, const tag&) - { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::tag_of::type tag_type; - return underlying_value(proto::left(e), tag_type()); - } + bool is_really_self(const self_type& v)const { return &v == this; } static const Backend& canonical_value(const self_type& v){ return v.m_backend; } - static const Backend& canonical_value(const self_type* v){ return v->m_backend; } - static const Backend& canonical_value(self_type* v){ return v->m_backend; } - static const Backend& canonical_value(self_type& v){ return v.m_backend; } + //static const Backend& canonical_value(const self_type* v){ return v->m_backend; } + //static const Backend& canonical_value(self_type* v){ return v->m_backend; } + //static const Backend& canonical_value(self_type& v){ return v.m_backend; } template static typename detail::canonical::type canonical_value(const V& v){ return v; } static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } - Backend m_backend; }; @@ -1395,14 +1414,14 @@ inline int big_number_compare(const big_number& a, const big_number -inline int big_number_compare(const big_number& a, const big_number_exp& b) +template +inline int big_number_compare(const big_number& a, const big_number_exp& b) { return a.compare(big_number(b)); } -template -inline int big_number_compare(const big_number_exp& a, const big_number& b) +template +inline int big_number_compare(const big_number_exp& a, const big_number& b) { return -b.compare(big_number(a)); } @@ -1419,26 +1438,26 @@ inline int big_number_compare(const Val a, const big_number& b) return -b.compare(a); } -template -inline int big_number_compare(const big_number_exp& a, const big_number_exp& b) +template +inline int big_number_compare(const big_number_exp& a, const big_number_exp& b) { - typedef typename expression_type::type real1; - typedef typename expression_type::type real2; + typedef typename big_number_exp::result_type real1; + typedef typename big_number_exp::result_type real2; return real1(a).compare(real2(b)); } -template -inline typename enable_if, int>::type big_number_compare(const big_number_exp& a, const Val b) +template +inline typename enable_if, int>::type big_number_compare(const big_number_exp& a, const Val b) { - typedef typename expression_type::type real; + typedef typename big_number_exp::result_type real; real t(a); return t.compare(b); } -template -inline typename enable_if, int>::type big_number_compare(const Val a, const big_number_exp& b) +template +inline typename enable_if, int>::type big_number_compare(const Val a, const big_number_exp& b) { - typedef typename expression_type::type real; + typedef typename big_number_exp::result_type real; return -real(b).compare(a); } @@ -1527,10 +1546,10 @@ inline std::ostream& operator << (std::ostream& os, const big_number& r namespace detail{ -template -inline std::ostream& operator << (std::ostream& os, const big_number_exp& r) +template +inline std::ostream& operator << (std::ostream& os, const big_number_exp& r) { - typedef typename expression_type >::type value_type; + typedef typename big_number_exp::result_type value_type; value_type temp(r); return os << temp; } diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp index 5356c6a3..4053c0b8 100644 --- a/include/boost/math/big_number/big_number_base.hpp +++ b/include/boost/math/big_number/big_number_base.hpp @@ -7,6 +7,8 @@ #define BOOST_MATH_BIG_NUM_BASE_HPP #include +#include +#include namespace boost{ namespace math{ @@ -16,145 +18,8 @@ class big_number; namespace detail{ // Forward-declare an expression wrapper -template +template struct big_number_exp; -// -// Declare our grammars: -// -struct integer_terminal : public -proto::and_< - proto::terminal< proto::_ >, - proto::if_ < boost::is_integral< proto::_value >() > - > -{}; - -struct big_number_grammar; - -template -struct is_big_number_ptr : mpl::false_ {}; - -template -struct is_big_number_ptr*> : mpl::true_ {}; - - -struct big_number_grammar_cases -{ - // The primary template matches nothing: - template - struct case_ - : proto::not_ - {}; -}; - -template<> -struct big_number_grammar_cases::case_ - : proto::and_< - proto::terminal, - proto::or_< - proto::if_ < is_big_number_ptr< proto::_value >() >, - proto::if_ < is_arithmetic< proto::_value >() >, - proto::if_ < is_same< proto::_value, std::string>() >, - proto::if_ < is_convertible< proto::_value, const char*>() > - > - > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::plus< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::multiplies< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::minus< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::divides< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::unary_plus< big_number_grammar> -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::negate< big_number_grammar> -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::modulus< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::bitwise_and< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::bitwise_or< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::bitwise_xor< big_number_grammar, big_number_grammar > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::shift_left< big_number_grammar, integer_terminal > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::shift_right< big_number_grammar, integer_terminal > -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::complement -{}; - -template<> -struct big_number_grammar_cases::case_ - : proto::or_< - proto::function< proto::_, big_number_grammar >, - proto::function< proto::_, big_number_grammar, proto::_ > - > -{}; - -struct big_number_grammar : proto::switch_{}; - -// Define a calculator domain. Expression within -// the calculator domain will be wrapped in the -// calculator<> expression wrapper. -struct big_number_domain - : proto::domain< proto::generator, big_number_grammar> -{}; - -struct CalcDepth - : proto::or_< - proto::when< proto::terminal, - mpl::int_<0>() - > - , proto::when< proto::unary_expr, - CalcDepth(proto::_child) - > - , proto::when< proto::binary_expr, - mpl::plus, mpl::int_<1> >() - > - > -{}; template struct has_enough_bits @@ -231,303 +96,45 @@ struct canonical typedef typename canonical_imp::type type; }; -template -struct assign_and_eval_imp -{ - typedef tag type; -}; - +struct terminal{}; +struct negate{}; +struct plus{}; +struct minus{}; +struct multiplies{}; +struct divides{}; +struct modulus{}; +struct shift_left{}; +struct shift_right{}; +struct bitwise_and{}; +struct bitwise_or{}; +struct bitwise_xor{}; +struct bitwise_complement{}; struct add_immediates{}; -struct add_and_negate_immediates{}; struct subtract_immediates{}; -struct subtract_and_negate_immediates{}; struct multiply_immediates{}; -struct multiply_and_negate_immediates{}; struct divide_immediates{}; -struct divide_and_negate_immediates{}; struct modulus_immediates{}; struct bitwise_and_immediates{}; struct bitwise_or_immediates{}; struct bitwise_xor_immediates{}; struct complement_immediates{}; +struct function{}; -struct immediate{}; -struct negative_immediate{}; +template +struct backend_type; -template -struct immediate_type +template +struct backend_type > { - typedef tag type; -}; -template -struct immediate_type -{ - typedef immediate type; -}; -template -struct immediate_type -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::tag_of::type left_tag; - typedef typename mpl::if_< - is_same, - immediate, - left_tag - >::type type; -}; -template -struct immediate_type -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::tag_of::type left_tag; - typedef typename immediate_type::type tag; - typedef typename mpl::if_< - is_same, - negative_immediate, - tag - >::type type; + typedef T type; }; -template -struct assign_and_eval_imp +template +struct backend_type > { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - add_immediates, - typename mpl::if_< - mpl::and_, is_same >, - subtract_immediates, - typename mpl::if_< - mpl::and_, is_same >, - subtract_and_negate_immediates, - typename mpl::if_< - mpl::and_, is_same >, - add_and_negate_immediates, - proto::tag::plus - >::type - >::type - >::type - >::type type; + typedef typename backend_type::result_type>::type type; }; -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - subtract_immediates, - typename mpl::if_< - mpl::and_, is_same >, - add_immediates, - typename mpl::if_< - mpl::and_, is_same >, - add_and_negate_immediates, - typename mpl::if_< - mpl::and_, is_same >, - subtract_and_negate_immediates, - proto::tag::minus - >::type - >::type - >::type - >::type type; -}; - -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - multiply_immediates, - typename mpl::if_< - mpl::and_, is_same >, - multiply_and_negate_immediates, - typename mpl::if_< - mpl::and_, is_same >, - multiply_and_negate_immediates, - typename mpl::if_< - mpl::and_, is_same >, - multiply_immediates, - proto::tag::multiplies - >::type - >::type - >::type - >::type type; -}; - -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - divide_immediates, - typename mpl::if_< - mpl::and_, is_same >, - divide_and_negate_immediates, - typename mpl::if_< - mpl::and_, is_same >, - divide_and_negate_immediates, - typename mpl::if_< - mpl::and_, is_same >, - divide_immediates, - proto::tag::divides - >::type - >::type - >::type - >::type type; -}; - -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - modulus_immediates, - proto::tag::modulus - >::type type; -}; - -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - bitwise_and_immediates, - proto::tag::bitwise_and - >::type type; -}; - -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - bitwise_or_immediates, - proto::tag::bitwise_or - >::type type; -}; - -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::tag_of::type left_tag; - typedef typename proto::tag_of::type right_tag; - typedef typename immediate_type::type left_imm; - typedef typename immediate_type::type right_imm; - typedef typename mpl::if_< - mpl::and_, is_same >, - bitwise_xor_immediates, - proto::tag::bitwise_xor - >::type type; -}; - -template -struct assign_and_eval_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::tag_of::type left_tag; - typedef typename immediate_type::type left_imm; - typedef typename mpl::if_< - is_same, - complement_immediates, - proto::tag::complement - >::type type; -}; - -template -struct assign_and_eval -{ - typedef typename proto::tag_of::type tag_type; - typedef typename assign_and_eval_imp::type type; -}; - -template -struct underlying_result_imp -{ - typedef typename proto::result_of::left::type left_type; - typedef typename proto::tag_of::type tag_type; - typedef typename underlying_result_imp::type type; -}; - -template -struct underlying_result_imp -{ - typedef typename proto::result_of::value::type type; -}; - -template -struct underlying_result -{ - typedef typename proto::tag_of::type tag_type; - typedef typename underlying_result_imp::type type; -}; - -template -struct combine_expression_type -{ - typedef void type; -}; - -template -struct combine_expression_type, boost::math::big_number > -{ - typedef boost::math::big_number type; -}; - -template -struct combine_expression_type, Exp> -{ - typedef boost::math::big_number type; -}; - -template -struct combine_expression_type > -{ - typedef boost::math::big_number type; -}; template struct is_big_number : public mpl::false_{}; @@ -535,125 +142,823 @@ template struct is_big_number > : public mpl::true_{}; template struct is_big_number_exp : public mpl::false_{}; +template +struct is_big_number_exp > : public mpl::true_{}; + +template +struct combine_expression; + +template +struct combine_expression, T2> +{ + typedef big_number type; +}; + +template +struct combine_expression > +{ + typedef big_number type; +}; + template -struct is_big_number_exp > : public mpl::true_{}; - - -template -struct expression_type_imp; - -template -struct expression_type_imp +struct combine_expression, big_number > { - typedef typename remove_pointer::type>::type type; + typedef big_number type; }; -template -struct expression_type_imp +template +struct arg_type { - typedef typename proto::result_of::left::type nested_type; - typedef typename expression_type_imp::value>::type type; + typedef big_number_exp type; }; -template -struct expression_type_imp +template +struct arg_type > { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename expression_type_imp::value>::type left_result; - typedef typename expression_type_imp::value>::type right_result; - typedef typename combine_expression_type::type type; + typedef big_number_exp type; }; -template -struct expression_type_imp +template +void unmentionable_proc(){} + +typedef void (*unmentionable_type)(); + +template +struct big_number_exp_storage { - typedef typename proto::result_of::left::type left_type; - typedef typename proto::result_of::right::type right_type; - typedef typename proto::result_of::child_c::type end_type; - typedef typename expression_type_imp::value>::type left_result; - typedef typename expression_type_imp::value>::type right_result; - typedef typename expression_type_imp::value>::type end_result; - typedef typename combine_expression_type::type>::type type; + typedef const T& type; }; -template -struct expression_type +template +struct big_number_exp_storage { - typedef typename expression_type_imp::value>::type type; + typedef T* type; }; -template -struct backend_type +template +struct big_number_exp_storage { - typedef typename expression_type::type num_type; - typedef typename backend_type::type type; + typedef const T* type; }; -template -struct backend_type > +template +struct big_number_exp_storage > { - typedef Backend type; + typedef big_number_exp type; }; -template -struct big_number_exp - : proto::extends, big_number_domain> +template +struct big_number_exp { + typedef mpl::int_<1> arity; + typedef typename arg_type::type left_type; + typedef typename left_type::result_type result_type; + typedef tag tag_type; + + big_number_exp(const Arg1& a) : arg(a) {} + + left_type left()const { return arg; } + + const Arg1& left_ref()const{ return arg; } + + static const unsigned depth = left_type::depth + 1; + + operator unmentionable_type()const + { + result_type r(*this); + return r ? unmentionable_proc : 0; + } + private: - typedef proto::extends, big_number_domain> base_type; - typedef big_number_exp self_type; - typedef typename remove_reference::type>::type number_type; - typedef void (self_type::*unmentionable_type)(); - void unmentionable_proc(){} - unmentionable_type boolean_context_from_terminal(const number_type* pval)const - { - return pval->is_zero() ? 0 : &self_type::unmentionable_proc; - } - unmentionable_type boolean_context_from_terminal(number_type* pval)const - { - return pval->is_zero() ? 0 : &self_type::unmentionable_proc; - } - template - unmentionable_type boolean_context_from_terminal(const Terminal& val)const - { - return val ? 0 : &self_type::unmentionable_proc; - } - unmentionable_type boolean_context(const proto::tag::terminal&)const - { - return boolean_context_from_terminal(proto::value(*this)); - } - template - unmentionable_type boolean_context(const Tag&)const - { - // we have to evaluate the expression template: - number_type result(*this); - return result.is_zero() ? 0 : &self_type::unmentionable_proc; - } -public: - big_number_exp(Expr const &expr = Expr()) - : base_type(expr) - {} - template - big_number_exp(const Other& o, typename enable_if >::type const* = 0) - : base_type(o) - {} + typename big_number_exp_storage::type arg; +}; - operator unmentionable_type()const - { - return boolean_context(typename proto::tag_of::type()); - } +template +struct big_number_exp +{ + typedef mpl::int_<0> arity; + typedef Arg1 result_type; + typedef terminal tag_type; + + big_number_exp(const Arg1& a) : arg(a) {} + + const Arg1& value()const { return arg; } + + static const unsigned depth = 0; + + operator unmentionable_type()const + { + return arg ? unmentionable_proc : 0; + } + +private: + typename big_number_exp_storage::type arg; +}; + +template +struct big_number_exp +{ + typedef mpl::int_<2> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression::type result_type; + typedef tag tag_type; + + big_number_exp(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {} + + left_type left()const { return arg1; } + right_type right()const { return arg2; } + const Arg1& left_ref()const{ return arg1; } + const Arg2& right_ref()const{ return arg2; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? unmentionable_proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + static const unsigned depth = left_depth > right_depth ? left_depth : right_depth; +private: + typename big_number_exp_storage::type arg1; + typename big_number_exp_storage::type arg2; +}; + +template +struct big_number_exp +{ + typedef mpl::int_<3> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type middle_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename middle_type::result_type middle_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression< + left_result_type, + typename combine_expression::type + >::type result_type; + typedef tag tag_type; + + big_number_exp(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {} + + left_type left()const { return arg1; } + middle_type middle()const { return arg2; } + right_type right()const { return arg3; } + const Arg1& left_ref()const{ return arg1; } + const Arg2& middle_ref()const{ return arg2; } + const Arg3& right_ref()const{ return arg3; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? unmentionable_proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned middle_depth = middle_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + static const unsigned depth = left_depth > right_depth ? (left_depth > middle_depth ? left_depth : middle_depth) : (right_depth > middle_depth ? right_depth : middle_depth); +private: + typename big_number_exp_storage::type arg1; + typename big_number_exp_storage::type arg2; + typename big_number_exp_storage::type arg3; }; } // namespace detail // -// Traits class, lets us know whether a backend is an integer type, otherwise assumed to be a real number type: +// Non-member operators for big_number: // +// Unary operators first: +// +template +inline const big_number& operator + (const big_number& v) { return v; } +template +inline const detail::big_number_exp& operator + (const detail::big_number_exp& v) { return v; } +template +inline detail::big_number_exp > operator - (const big_number& v) { return v; } +template +inline detail::big_number_exp > operator - (const detail::big_number_exp& v) { return v; } +template +inline detail::big_number_exp > operator ~ (const big_number& v) { return v; } +template +inline detail::big_number_exp > operator ~ (const detail::big_number_exp& v) { return v; } +// +// Then addition: +// +template +inline detail::big_number_exp, big_number > + operator + (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator + (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator + (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator + (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator + (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator + (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator + (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator + (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::big_number_exp, typename detail::big_number_exp::left_type > + operator + (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, typename detail::big_number_exp::left_type >(a, b.left_ref()); +} +template +inline detail::big_number_exp, typename detail::big_number_exp::left_type > + operator + (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, typename detail::big_number_exp::left_type >(b, a.left_ref()); +} +template +inline detail::big_number_exp, big_number > + operator + (const big_number& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp, big_number >(a, b.left_ref()); +} +template +inline detail::big_number_exp, big_number > + operator + (const detail::big_number_exp >& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(b, a.left_ref()); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator + (const detail::big_number_exp >& a, const V& b) +{ + return detail::big_number_exp >(b, a.left_ref()); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator + (const V& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp, big_number >(a, b.left_ref()); +} +// +// Subtraction: +// +template +inline detail::big_number_exp, big_number > + operator - (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator - (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator - (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator - (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator - (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator - (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator - (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator - (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::big_number_exp, typename detail::big_number_exp::left_type > + operator - (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, typename detail::big_number_exp::left_type >(a, b.left_ref()); +} +template +inline detail::big_number_exp, typename detail::big_number_exp::left_type > > + operator - (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, typename detail::big_number_exp::left_type >(b, a.left_ref()); +} +template +inline detail::big_number_exp, big_number > + operator - (const big_number& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp, big_number >(a, b.left_ref()); +} +template +inline detail::big_number_exp, big_number > > + operator - (const detail::big_number_exp >& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(b, a.left_ref()); +} +template +inline typename enable_if, detail::big_number_exp, V > > >::type + operator - (const detail::big_number_exp >& a, const V& b) +{ + return detail::big_number_exp >(b, a.left_ref()); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator - (const V& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp >(a, b.left_ref()); +} +// +// Multiplication: +// +template +inline detail::big_number_exp, big_number > + operator * (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator * (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator * (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator * (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator * (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator * (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator * (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator * (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::big_number_exp, typename detail::big_number_exp::left_type > > + operator * (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, typename detail::big_number_exp::left_type > (a, b.left_ref()); +} +template +inline detail::big_number_exp, typename detail::big_number_exp::left_type > > + operator * (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, typename detail::big_number_exp::left_type >(b, a.left_ref()); +} +template +inline detail::big_number_exp, big_number > > + operator * (const big_number& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp, big_number >(a, b.left_ref()); +} +template +inline detail::big_number_exp, big_number > > + operator * (const detail::big_number_exp >& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(b, a.left_ref()); +} +template +inline typename enable_if, detail::big_number_exp, V > > >::type + operator * (const detail::big_number_exp >& a, const V& b) +{ + return detail::big_number_exp, V >(a.left_ref(), b); +} +template +inline typename enable_if, detail::big_number_exp, V > > >::type + operator * (const V& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp, V >(b.left_ref(), a); +} +// +// Division: +// +template +inline detail::big_number_exp, big_number > + operator / (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator / (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator / (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator / (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator / (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator / (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator / (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator / (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::big_number_exp, typename detail::big_number_exp::left_type > > + operator / (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, typename detail::big_number_exp::left_type >(a, b.left_ref()); +} +template +inline detail::big_number_exp::left_type, big_number > > + operator / (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp::left_type, big_number >(a.left_ref(), b); +} +template +inline detail::big_number_exp, big_number > > + operator / (const big_number& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp, big_number >(a, b.left_ref()); +} +template +inline detail::big_number_exp, big_number > > + operator / (const detail::big_number_exp >& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a.left_ref(), b); +} +template +inline typename enable_if, detail::big_number_exp, V > > >::type + operator / (const detail::big_number_exp >& a, const V& b) +{ + return detail::big_number_exp, V>(a.left_ref(), b); +} +template +inline typename enable_if, detail::big_number_exp > > >::type + operator / (const V& a, const detail::big_number_exp >& b) +{ + return detail::big_number_exp >(a, b.left_ref()); +} +// +// Modulus: +// +template +inline detail::big_number_exp, big_number > + operator % (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator % (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator % (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator % (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator % (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator % (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator % (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator % (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} +// +// Left shift: +// +template +inline typename enable_if, detail::big_number_exp, I > >::type + operator << (const big_number& a, const I& b) +{ + return detail::big_number_exp, I>(a, b); +} +template +inline typename enable_if, detail::big_number_exp, I> >::type + operator << (const detail::big_number_exp& a, const I& b) +{ + return detail::big_number_exp, I>(a, b); +} +// +// Right shift: +// +template +inline typename enable_if, detail::big_number_exp, I > >::type + operator >> (const big_number& a, const I& b) +{ + return detail::big_number_exp, I>(a, b); +} +template +inline typename enable_if, detail::big_number_exp, I> >::type + operator >> (const detail::big_number_exp& a, const I& b) +{ + return detail::big_number_exp, I>(a, b); +} +// +// Bitwise AND: +// +template +inline detail::big_number_exp, big_number > + operator & (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator & (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator & (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator & (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator & (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator & (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator & (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator & (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} +// +// Bitwise OR: +// +template +inline detail::big_number_exp, big_number > + operator| (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator| (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator| (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator| (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator| (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator| (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator| (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator| (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} +// +// Bitwise XOR: +// +template +inline detail::big_number_exp, big_number > + operator^ (const big_number& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator^ (const big_number& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator^ (const V& a, const big_number& b) +{ + return detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator^ (const big_number& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline detail::big_number_exp, big_number > + operator^ (const detail::big_number_exp& a, const big_number& b) +{ + return detail::big_number_exp, big_number >(a, b); +} +template +inline detail::big_number_exp, detail::big_number_exp > + operator^ (const detail::big_number_exp& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp, detail::big_number_exp >(a, b); +} +template +inline typename enable_if, detail::big_number_exp, V > >::type + operator^ (const detail::big_number_exp& a, const V& b) +{ + return detail::big_number_exp, V >(a, b); +} +template +inline typename enable_if, detail::big_number_exp > >::type + operator^ (const V& a, const detail::big_number_exp& b) +{ + return detail::big_number_exp >(a, b); +} + +// +// Traits class, lets us know what kind of number we have, defaults to a floating point type: +// +enum number_category_type +{ + number_kind_integer = 0, + number_kind_floating_point = 1, + number_kind_rational = 2, + number_kind_fixed_point = 3 +}; + template -struct is_extended_integer : public mpl::false_ {}; +struct number_category : public mpl::int_ {}; template -struct is_extended_integer > : public is_extended_integer{}; +struct number_category > : public number_category{}; +template +struct number_category > : public number_category::result_type>{}; }} // namespaces @@ -662,10 +967,10 @@ namespace boost{ namespace math{ namespace tools{ template struct promote_arg; -template -struct promote_arg > +template +struct promote_arg > { - typedef typename boost::math::detail::expression_type::type type; + typedef typename boost::math::detail::big_number_exp::result_type type; }; }}} diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index da2df385..52047256 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include namespace boost{ namespace math{ namespace big_num_default_ops{ @@ -418,17 +420,9 @@ typename enable_if_c::type eval_tanh(); } - template class big_number; -namespace detail{ - -template -struct big_number_exp; - -} - // // Default versions of floating point classification routines: // @@ -438,10 +432,10 @@ inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number using big_num_default_ops::eval_fpclassify; return eval_fpclassify(arg.backend()); } -template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +template +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename detail::expression_type::type value_type; + typedef typename detail::big_number_exp::result_type value_type; return fpclassify(value_type(arg)); } template @@ -450,10 +444,10 @@ inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& int v = fpclassify(arg); return (v != FP_INFINITE) && (v != FP_NAN); } -template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +template +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename detail::expression_type::type value_type; + typedef typename detail::big_number_exp::result_type value_type; return isfinite(value_type(arg)); } template @@ -461,10 +455,10 @@ inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& ar { return fpclassify(arg) == FP_NAN; } -template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +template +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename detail::expression_type::type value_type; + typedef typename detail::big_number_exp::result_type value_type; return isnan(value_type(arg)); } template @@ -472,10 +466,10 @@ inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& ar { return fpclassify(arg) == FP_INFINITE; } -template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +template +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename detail::expression_type::type value_type; + typedef typename detail::big_number_exp::result_type value_type; return isinf(value_type(arg)); } template @@ -483,17 +477,17 @@ inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& { return fpclassify(arg) == FP_NORMAL; } -template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) +template +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) { - typedef typename detail::expression_type::type value_type; + typedef typename detail::big_number_exp::result_type value_type; return isnormal(value_type(arg)); } -template -inline int itrunc(const detail::big_number_exp& v, const Policy& pol) +template +inline int itrunc(const detail::big_number_exp& v, const Policy& pol) { - typedef typename detail::expression_type::type number_type; + typedef typename detail::big_number_exp::result_type number_type; number_type r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); @@ -641,30 +635,38 @@ struct BOOST_JOIN(func, _funct)\ \ }\ \ -template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)::type> \ - , detail::big_number_exp \ ->::type const \ -func(const detail::big_number_exp& arg)\ +template \ +detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ +> \ +func(const detail::big_number_exp& arg)\ {\ - return proto::make_expr(\ - detail::BOOST_JOIN(func, _funct)::type>() \ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ +> (\ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg \ );\ }\ template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ +detail::big_number_exp<\ + detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp*>::type> \ ->::type const \ + , big_number\ +> \ func(const big_number& arg)\ {\ - return proto::make_expr(\ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , big_number\ + >(\ detail::BOOST_JOIN(func, _funct)() \ - , static_cast*>::type>&>(arg) \ + , arg \ );\ } @@ -688,61 +690,81 @@ struct BOOST_JOIN(func, _funct)\ \ }\ template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ +detail::big_number_exp<\ + detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp*>::type> \ - , detail::big_number_exp*>::type> \ ->::type const \ + , big_number \ + , big_number \ +> \ func(const big_number& arg, const big_number& a)\ {\ - return proto::make_expr(\ - detail::BOOST_JOIN(func, _funct)() \ - , static_cast*>::type>&>(arg),\ - static_cast*>::type>&>(a)\ - );\ -}\ -template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ + return detail::big_number_exp<\ + detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp*>::type> \ - , detail::big_number_exp \ ->::type const \ -func(const big_number& arg, const detail::big_number_exp& a)\ -{\ - return proto::make_expr(\ + , big_number \ + , big_number \ + >(\ detail::BOOST_JOIN(func, _funct)() \ - , static_cast*>::type>&>(arg),\ + , arg,\ a\ );\ }\ -template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ +template \ +detail::big_number_exp<\ + detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp \ - , detail::big_number_exp*>::type > \ ->::type const \ -func(const detail::big_number_exp& arg, const big_number& a)\ + , big_number \ + , detail::big_number_exp \ +> \ +func(const big_number& arg, const detail::big_number_exp& a)\ {\ - return proto::make_expr(\ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , big_number \ + , detail::big_number_exp \ + >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ - static_cast*>::type>&>(a)\ + a\ );\ }\ -template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)::type> \ - , detail::big_number_exp \ - , detail::big_number_exp \ ->::type const \ -func(const detail::big_number_exp& arg, const detail::big_number_exp& a)\ +template \ +detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp \ + , big_number\ +>\ +func(const detail::big_number_exp& arg, const big_number& a)\ {\ - return proto::make_expr(\ - detail::BOOST_JOIN(func, _funct)::type>() \ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::big_number_exp \ + , big_number\ + >(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg,\ + a\ + );\ +}\ +template \ +detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ + , detail::big_number_exp \ +>\ +func(const detail::big_number_exp& arg, const detail::big_number_exp& a)\ +{\ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ + , detail::big_number_exp \ + >(\ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ @@ -750,35 +772,47 @@ func(const detail::big_number_exp& arg, const detail::big_number_exp template \ typename enable_if<\ is_arithmetic,\ - typename proto::result_of::make_expr<\ - proto::tag::function\ + detail::big_number_exp<\ + detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp*>::type> \ - , typename proto::result_of::as_child::type\ ->::type>::type const \ + , big_number\ + , Arithmetic\ + > \ +>::type \ func(const big_number& arg, const Arithmetic& a)\ {\ - return proto::make_expr(\ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , big_number\ + , Arithmetic\ + >(\ detail::BOOST_JOIN(func, _funct)() \ - , static_cast*>::type>&>(arg),\ - proto::as_child(a)\ + , arg,\ + a\ );\ }\ -template \ +template \ typename enable_if<\ is_arithmetic,\ - typename proto::result_of::make_expr<\ - proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)::type> \ - , detail::big_number_exp \ - , typename proto::result_of::as_child::type\ ->::type>::type const \ -func(const detail::big_number_exp& arg, const Arithmetic& a)\ + detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ + , Arithmetic\ + > \ +>::type \ +func(const detail::big_number_exp& arg, const Arithmetic& a)\ {\ - return proto::make_expr(\ - detail::BOOST_JOIN(func, _funct)::type>() \ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ + , Arithmetic\ + >(\ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ - proto::as_child(a)\ + a\ );\ }\ @@ -797,33 +831,43 @@ struct BOOST_JOIN(func, _funct)\ \ }\ \ -template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ - , detail::BOOST_JOIN(func, _funct)::type> \ - , detail::big_number_exp \ - , typename proto::result_of::as_child::type \ ->::type const \ -func(const detail::big_number_exp& arg, Arg2 const& a)\ +template \ +detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ + , Arg2\ +>\ +func(const detail::big_number_exp& arg, Arg2 const& a)\ {\ - return proto::make_expr(\ - detail::BOOST_JOIN(func, _funct)::type>() \ - , arg, proto::as_child(a) \ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::big_number_exp \ + , Arg2\ + >(\ + detail::BOOST_JOIN(func, _funct) >::type>() \ + , arg, a \ );\ }\ template \ -typename proto::result_of::make_expr<\ - proto::tag::function\ +detail::big_number_exp<\ + detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp*>::type> \ - , typename proto::result_of::as_child::type \ ->::type const \ + , big_number\ + , Arg2\ +>\ func(const big_number& arg, Arg2 const& a)\ {\ - return proto::make_expr(\ + return detail::big_number_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , big_number\ + , Arg2\ + >(\ detail::BOOST_JOIN(func, _funct)() \ - , static_cast*>::type>&>(arg),\ - proto::as_child(a)\ + , arg,\ + a\ );\ }\ diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp index 3c32b4ea..3ee95512 100644 --- a/include/boost/math/big_number/gmp.hpp +++ b/include/boost/math/big_number/gmp.hpp @@ -1305,7 +1305,9 @@ inline void eval_abs(gmp_rational& result, const gmp_rational& val) } template<> -struct is_extended_integer : public mpl::true_ {}; +struct number_category : public mpl::int_{}; +template<> +struct number_category : public mpl::int_{}; typedef big_number > mpf_real_50; typedef big_number > mpf_real_100; diff --git a/math/test/big_number_concept_check.cpp b/math/test/big_number_concept_check.cpp index 764cd3b4..e2745897 100644 --- a/math/test/big_number_concept_check.cpp +++ b/math/test/big_number_concept_check.cpp @@ -54,68 +54,6 @@ #include #include "libs/math/test/compile_test/instantiate.hpp" -void a() -{ - using namespace boost; - using namespace boost::math; - using namespace boost::math::concepts; - - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); -} - -void b() -{ - using namespace boost; - using namespace boost::math; - using namespace boost::math::concepts; - - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); -} - -void c() -{ - using namespace boost; - using namespace boost::math; - using namespace boost::math::concepts; - - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); -} - -void d() -{ - using namespace boost; - using namespace boost::math; - using namespace boost::math::concepts; - - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); - function_requires > >(); -} - void foo() { #ifdef TEST_BACKEND diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index fa795461..559ec81c 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -53,11 +53,11 @@ BOOST_LIGHTWEIGHT_TEST_OSTREAM << e.what() << std::endl;\ } -template -void test_integer_ops(const boost::mpl::false_&){} +template +void test_integer_ops(const boost::mpl::int_&){} template -void test_integer_ops(const boost::mpl::true_&) +void test_integer_ops(const boost::mpl::int_&) { Real a(20); Real b(7); @@ -236,7 +236,6 @@ void test_integer_ops(const boost::mpl::true_&) BOOST_TEST(c == (i & ~j)); c = ~(a | b); BOOST_TEST(c == ~(i | j)); - // // Non-member functions: // @@ -250,11 +249,11 @@ void test_integer_ops(const boost::mpl::true_&) BOOST_TEST(abs(+a) == 20); } -template -void test_real_ops(const boost::mpl::false_&){} +template +void test_real_ops(const boost::mpl::int_&){} template -void test_real_ops(const boost::mpl::true_&) +void test_real_ops(const boost::mpl::int_&) { #if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) || defined(TEST_MPFR) BOOST_TEST(abs(Real(2)) == 2); @@ -501,7 +500,6 @@ void test_mixed() BOOST_TEST(Real(r / n5) == n1 / n5); r /= n5; BOOST_TEST(r == n1 / n5); - // // special cases for full coverage: // @@ -513,7 +511,6 @@ void test_mixed() BOOST_TEST(r == n4 * n5); r = (4 * n4) / Real(4); BOOST_TEST(r == n4); - test_negative_mixed(boost::mpl::bool_::is_signed>()); } @@ -541,11 +538,11 @@ void test() // // Integer only functions: // - test_integer_ops(boost::math::is_extended_integer()); + test_integer_ops(boost::math::number_category()); // // Real number only functions: // - test_real_ops(boost::mpl::bool_::value >()); + test_real_ops(boost::math::number_category()); // // Test basic arithmetic: // @@ -565,14 +562,12 @@ void test() BOOST_TEST(a / b == 8); a /= b; BOOST_TEST(a == 8); - Real ac(a); BOOST_TEST(ac == a); BOOST_TEST(-a == -8); - ac = a * c; BOOST_TEST(ac == 8*500L); - + ac = 8*500L; ac = ac + b + c; BOOST_TEST(ac == 8*500L+64+500); ac = a; @@ -639,10 +634,6 @@ void test() ac = a * ac; BOOST_TEST(ac == 8*8); ac = a; -#ifndef TEST_E_FLOAT - ac = ac + "8"; - BOOST_TEST(ac == 16); -#endif ac = a; ac += +a; BOOST_TEST(ac == 16); @@ -656,10 +647,6 @@ void test() ac += b*c; BOOST_TEST(ac == 8 + 64 * 500); ac = a; -#ifndef TEST_E_FLOAT - ac = ac - "8"; - BOOST_TEST(ac == 0); -#endif ac = a; ac -= +a; BOOST_TEST(ac == 0); @@ -678,12 +665,7 @@ void test() ac = a; ac -= ac * b; BOOST_TEST(ac == 8 - 8 * 64); -#ifndef TEST_E_FLOAT - ac = a * "8"; - BOOST_TEST(ac == 64); -#else ac = a * 8; -#endif ac *= +a; BOOST_TEST(ac == 64 * 8); ac = a; @@ -698,10 +680,6 @@ void test() ac = a; ac *= b + c; BOOST_TEST(ac == 8 * (64 + 500)); -#ifndef TEST_E_FLOAT - ac = b / "8"; - BOOST_TEST(ac == 8); -#endif ac = b; ac /= +a; BOOST_TEST(ac == 8); @@ -714,10 +692,6 @@ void test() ac = b; ac /= a + Real(0); BOOST_TEST(ac == 8); -#ifndef TEST_E_FLOAT - ac = a + std::string("8"); - BOOST_TEST(ac == 16); -#endif // // simple tests with immediate values, these calls can be optimised in many backends: // From 23bc9e5f5067a6783b4c4603a6b890d48e1df027 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 25 Sep 2011 11:11:14 +0000 Subject: [PATCH 022/256] Fix coding errors undetected by MSVC, get everything compiling with GCC. [SVN r74559] --- include/boost/math/big_number.hpp | 12 ++--- .../boost/math/big_number/big_number_base.hpp | 13 +++-- include/boost/math/big_number/default_ops.hpp | 54 +++++++++---------- math/test/Jamfile.v2 | 9 +++- math/test/test_arithmetic.cpp | 46 +++++++++++----- math/test/test_numeric_limits.cpp | 4 ++ 6 files changed, 85 insertions(+), 53 deletions(-) diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp index 86a9ad1e..6b84e39b 100644 --- a/include/boost/math/big_number.hpp +++ b/include/boost/math/big_number.hpp @@ -128,7 +128,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_subtract(temp, typename detail_of::type()); + do_subtract(temp, typename self_type::tag_type()); } else { @@ -193,7 +193,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_modulus(temp, typename detail_of::type()); + do_modulus(temp, typename self_type::tag_type()); } else { @@ -280,7 +280,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_divide(detail::big_number_exp(temp), typename detail_of::type()); + do_divide(detail::big_number_exp(temp), typename self_type::tag_type()); } else { @@ -312,7 +312,7 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_and(temp, typename detail_of::type()); + do_bitwise_and(temp, typename self_type::tag_type()); } else { @@ -344,7 +344,7 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_or(temp, typename detail_of::type()); + do_bitwise_or(temp, typename self_type::tag_type()); } else { @@ -374,7 +374,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_bitwise_xor(temp, typename detail_of::type()); + do_bitwise_xor(temp, typename self_type::tag_type()); } else { diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp index 4053c0b8..8eef7048 100644 --- a/include/boost/math/big_number/big_number_base.hpp +++ b/include/boost/math/big_number/big_number_base.hpp @@ -179,7 +179,10 @@ struct arg_type > }; template -void unmentionable_proc(){} +struct unmentionable +{ + static void proc(){} +}; typedef void (*unmentionable_type)(); @@ -226,7 +229,7 @@ struct big_number_exp operator unmentionable_type()const { result_type r(*this); - return r ? unmentionable_proc : 0; + return r ? &unmentionable::proc : 0; } private: @@ -248,7 +251,7 @@ struct big_number_exp operator unmentionable_type()const { - return arg ? unmentionable_proc : 0; + return arg ? &unmentionable::proc : 0; } private: @@ -276,7 +279,7 @@ struct big_number_exp operator unmentionable_type()const { result_type r(*this); - return r ? unmentionable_proc : 0; + return r ? &unmentionable::proc : 0; } static const unsigned left_depth = left_type::depth + 1; @@ -315,7 +318,7 @@ struct big_number_exp operator unmentionable_type()const { result_type r(*this); - return r ? unmentionable_proc : 0; + return r ? &unmentionable::proc : 0; } static const unsigned left_depth = left_type::depth + 1; diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp index 52047256..ea034e00 100644 --- a/include/boost/math/big_number/default_ops.hpp +++ b/include/boost/math/big_number/default_ops.hpp @@ -501,10 +501,10 @@ inline int itrunc(const big_number& v, const Policy& pol) return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } -template -inline long ltrunc(const detail::big_number_exp& v, const Policy& pol) +template +inline long ltrunc(const detail::big_number_exp& v, const Policy& pol) { - typedef typename detail::expression_type::type number_type; + typedef typename detail::big_number_exp::result_result number_type; number_type r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); @@ -519,10 +519,10 @@ inline long ltrunc(const big_number& v, const Policy& pol) return r.template convert_to(); } #ifndef BOOST_NO_LONG_LONG -template -inline long long lltrunc(const detail::big_number_exp& v, const Policy& pol) +template +inline long long lltrunc(const detail::big_number_exp& v, const Policy& pol) { - typedef typename detail::expression_type::type number_type; + typedef typename detail::big_number_exp::result_result number_type; number_type r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); @@ -537,10 +537,10 @@ inline long long lltrunc(const big_number& v, const Policy& pol) return r.template convert_to(); } #endif -template -inline int iround(const detail::big_number_exp& v, const Policy& pol) +template +inline int iround(const detail::big_number_exp& v, const Policy& pol) { - typedef typename detail::expression_type::type number_type; + typedef typename detail::big_number_exp::result_result number_type; number_type r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); @@ -554,10 +554,10 @@ inline int iround(const big_number& v, const Policy& pol) return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } -template -inline long lround(const detail::big_number_exp& v, const Policy& pol) +template +inline long lround(const detail::big_number_exp& v, const Policy& pol) { - typedef typename detail::expression_type::type number_type; + typedef typename detail::big_number_exp::result_result number_type; number_type r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); @@ -572,10 +572,10 @@ inline long lround(const big_number& v, const Policy& pol) return r.template convert_to(); } #ifndef BOOST_NO_LONG_LONG -template -inline long long llround(const detail::big_number_exp& v, const Policy& pol) +template +inline long long llround(const detail::big_number_exp& v, const Policy& pol) { - typedef typename detail::expression_type::type number_type; + typedef typename detail::big_number_exp::result_result number_type; number_type r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); @@ -656,14 +656,14 @@ template \ detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , big_number\ + , big_number \ > \ func(const big_number& arg)\ {\ return detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , big_number\ + , big_number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg \ @@ -734,15 +734,15 @@ detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , detail::big_number_exp \ - , big_number\ ->\ + , big_number \ +> \ func(const detail::big_number_exp& arg, const big_number& a)\ {\ return detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , detail::big_number_exp \ - , big_number\ + , big_number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -755,7 +755,7 @@ detail::big_number_exp<\ , detail::BOOST_JOIN(func, _funct) >::type> \ , detail::big_number_exp \ , detail::big_number_exp \ ->\ +> \ func(const detail::big_number_exp& arg, const detail::big_number_exp& a)\ {\ return detail::big_number_exp<\ @@ -775,7 +775,7 @@ typename enable_if<\ detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , big_number\ + , big_number \ , Arithmetic\ > \ >::type \ @@ -784,7 +784,7 @@ func(const big_number& arg, const Arithmetic& a)\ return detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , big_number\ + , big_number \ , Arithmetic\ >(\ detail::BOOST_JOIN(func, _funct)() \ @@ -837,7 +837,7 @@ detail::big_number_exp<\ , detail::BOOST_JOIN(func, _funct) >::type> \ , detail::big_number_exp \ , Arg2\ ->\ +> \ func(const detail::big_number_exp& arg, Arg2 const& a)\ {\ return detail::big_number_exp<\ @@ -854,15 +854,15 @@ template \ detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , big_number\ + , big_number \ , Arg2\ ->\ +> \ func(const big_number& arg, Arg2 const& a)\ {\ return detail::big_number_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , big_number\ + , big_number \ , Arg2\ >(\ detail::BOOST_JOIN(func, _funct)() \ diff --git a/math/test/Jamfile.v2 b/math/test/Jamfile.v2 index b37662be..24b697e7 100644 --- a/math/test/Jamfile.v2 +++ b/math/test/Jamfile.v2 @@ -170,6 +170,7 @@ run test_numeric_limits.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_numeric_limits_mpfr_50 ; + run test_numeric_limits.cpp $(E_FLOAT_SRC) : # command line : # input files @@ -178,5 +179,11 @@ run test_numeric_limits.cpp $(E_FLOAT_SRC) [ check-target-builds ../config//has_e_float : : no ] : test_numeric_limits_e_float ; - +run big_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : big_number_concept_check_mpfr_50 ; diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 559ec81c..5bca68e6 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -53,8 +53,25 @@ BOOST_LIGHTWEIGHT_TEST_OSTREAM << e.what() << std::endl;\ } -template -void test_integer_ops(const boost::mpl::int_&){} +bool isfloat(float){ return true; } +bool isfloat(double){ return true; } +bool isfloat(long double){ return true; } +template bool isfloat(T){ return false; } + +#define BOOST_TEST_CLOSE(x, y, tol)\ + if(x == 0){\ + BOOST_TEST(y == 0); }\ + else if(!isfloat(x)){\ + BOOST_TEST(x == y); }\ + else if((x != y) && (::fabsl(static_cast((x-y)/x)) > tol))\ + {\ + BOOST_ERROR("Expected tolerance was exceeded: ");\ + BOOST_LIGHTWEIGHT_TEST_OSTREAM << std::setprecision(34) << "(x-y)/x = " << ::fabsl(static_cast((x-y)/x)) \ + << " tolerance = " << tol << std::endl;\ + } + +template +void test_integer_ops(const T&){} template void test_integer_ops(const boost::mpl::int_&) @@ -249,8 +266,8 @@ void test_integer_ops(const boost::mpl::int_&) BOOST_TEST(abs(+a) == 20); } -template -void test_real_ops(const boost::mpl::int_&){} +template +void test_real_ops(const T&){} template void test_real_ops(const boost::mpl::int_&) @@ -365,10 +382,10 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); BOOST_TEST(n4 == Real(n4)); - BOOST_TEST(n1 == boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value))); - BOOST_TEST(n2 == boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value))); - BOOST_TEST(n3 == boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value))); - BOOST_TEST(n4 == boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value))); + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), 3 * std::numeric_limits::epsilon()); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); // Assignment: Real r(0); BOOST_TEST(r != n1); @@ -461,10 +478,11 @@ void test_mixed() BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); BOOST_TEST(n4 == Real(n4)); - BOOST_TEST(n1 == boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value))); - BOOST_TEST(n2 == boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value))); - BOOST_TEST(n3 == boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value))); - BOOST_TEST(n4 == boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value))); + std::cout << Real(n1).str(0, boost::is_floating_point::value) << std::endl; + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), 3 * std::numeric_limits::epsilon()); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); // Assignment: Real r(0); BOOST_TEST(r != n1); @@ -538,11 +556,11 @@ void test() // // Integer only functions: // - test_integer_ops(boost::math::number_category()); + test_integer_ops(typename boost::math::number_category::type()); // // Real number only functions: // - test_real_ops(boost::math::number_category()); + test_real_ops(typename boost::math::number_category::type()); // // Test basic arithmetic: // diff --git a/math/test/test_numeric_limits.cpp b/math/test/test_numeric_limits.cpp index 00bb19e2..08d1c32f 100644 --- a/math/test/test_numeric_limits.cpp +++ b/math/test/test_numeric_limits.cpp @@ -51,10 +51,14 @@ void test() PRINT(is_specialized); PRINT(min()); PRINT(max()); +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST PRINT(lowest()); +#endif PRINT(digits); PRINT(digits10); +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST PRINT(max_digits10); +#endif PRINT(is_signed); PRINT(is_integer); PRINT(is_exact); From 377971fae44d8d161deed9560f58a7a0fd26dc14 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 25 Sep 2011 12:35:40 +0000 Subject: [PATCH 023/256] Fix remaining GCC test failures, plus a few warnings. [SVN r74562] --- include/boost/math/big_number/mpfr.hpp | 4 ---- math/test/test_arithmetic.cpp | 26 ++++++++++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp index e03f05da..31165841 100644 --- a/include/boost/math/big_number/mpfr.hpp +++ b/include/boost/math/big_number/mpfr.hpp @@ -67,13 +67,9 @@ struct mpfr_real_imp while(i) { mpfr_set_ui(t, static_cast(i & mask), GMP_RNDN); - long e; - const char* ps = mpfr_get_str (0, &e, 10, 0, t, GMP_RNDN); if(shift) mpfr_mul_2exp(t, t, shift, GMP_RNDN); - ps = mpfr_get_str (0, &e, 10, 0, t, GMP_RNDN); mpfr_add(m_data, m_data, t, GMP_RNDN); - ps = mpfr_get_str (0, &e, 10, 0, m_data, GMP_RNDN); shift += std::numeric_limits::digits; i >>= std::numeric_limits::digits; } diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp index 5bca68e6..5e267eba 100644 --- a/math/test/test_arithmetic.cpp +++ b/math/test/test_arithmetic.cpp @@ -382,10 +382,15 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); BOOST_TEST(n4 == Real(n4)); - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), 3 * std::numeric_limits::epsilon()); - BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); - BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); - BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) + Num tol = 10 * std::numeric_limits::epsilon(); +#else + Num tol = 0; +#endif + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); // Assignment: Real r(0); BOOST_TEST(r != n1); @@ -479,10 +484,15 @@ void test_mixed() BOOST_TEST(n3 == Real(n3)); BOOST_TEST(n4 == Real(n4)); std::cout << Real(n1).str(0, boost::is_floating_point::value) << std::endl; - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), 3 * std::numeric_limits::epsilon()); - BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); - BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); - BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), std::numeric_limits::epsilon()); +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) + Num tol = 10 * std::numeric_limits::epsilon(); +#else + Num tol = 0; +#endif + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); // Assignment: Real r(0); BOOST_TEST(r != n1); From 09e1fd8f771138fba4f7c2014adee1c8c73b2411 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 26 Sep 2011 16:29:44 +0000 Subject: [PATCH 024/256] Giant file and directory rename: changed directory name from math to multiprecision and updated code to match. [SVN r74578] --- .../multiprecision/arithmetic_backend.hpp | 147 ++ .../multiprecision/backends/functions/pow.hpp | 97 + .../concepts/big_number_architypes.hpp | 293 +++ .../multiprecision/detail/big_number_base.hpp | 983 +++++++++++ .../multiprecision/detail/default_ops.hpp | 903 ++++++++++ include/boost/multiprecision/e_float.hpp | 80 + include/boost/multiprecision/gmp.hpp | 1532 ++++++++++++++++ include/boost/multiprecision/mp_number.hpp | 1570 +++++++++++++++++ include/boost/multiprecision/mpfr.hpp | 952 ++++++++++ 9 files changed, 6557 insertions(+) create mode 100644 include/boost/multiprecision/arithmetic_backend.hpp create mode 100644 include/boost/multiprecision/backends/functions/pow.hpp create mode 100644 include/boost/multiprecision/concepts/big_number_architypes.hpp create mode 100644 include/boost/multiprecision/detail/big_number_base.hpp create mode 100644 include/boost/multiprecision/detail/default_ops.hpp create mode 100644 include/boost/multiprecision/e_float.hpp create mode 100644 include/boost/multiprecision/gmp.hpp create mode 100644 include/boost/multiprecision/mp_number.hpp create mode 100644 include/boost/multiprecision/mpfr.hpp diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp new file mode 100644 index 00000000..54d452ec --- /dev/null +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -0,0 +1,147 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_ARITH_BACKEND_HPP +#define BOOST_MATH_ARITH_BACKEND_HPP + +#include +#include +#include +#include +#include + +namespace boost{ +namespace math{ + +template +struct arithmetic_backend +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + arithmetic_backend(){} + arithmetic_backend(const arithmetic_backend& o) + { + m_value = o.m_value; + } + arithmetic_backend(const Arithmetic& o) : m_value(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + arithmetic_backend(arithmetic_backend&& o) : m_value(o.m_value) {} + arithmetic_backend(Arithmetic&& o) : m_value(o) {} +#endif + arithmetic_backend& operator = (const arithmetic_backend& o) + { + m_value = o.m_value; + return *this; + } + arithmetic_backend& operator = (boost::uintmax_t i) + { + m_value = i; + return *this; + } + arithmetic_backend& operator = (boost::intmax_t i) + { + m_value = i; + return *this; + } + arithmetic_backend& operator = (long double d) + { + m_value = d; + return *this; + } + arithmetic_backend& operator = (const char* s) + { + m_value = boost::lexical_cast(s); + return *this; + } + void swap(arithmetic_backend& o) + { + std::swap(m_value, o.m_value); + } + std::string str(unsigned digits, bool scientific)const + { + return boost::lexical_cast(m_value); + } + void negate() + { + m_value = -m_value; + } + int compare(const arithmetic_backend& o)const + { + return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); + } + int compare(boost::intmax_t i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(boost::uintmax_t i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(long double d)const + { + return m_value > d ? 1 : (m_value < d ? -1 : 0); + } + Arithmetic& data() { return m_value; } + const Arithmetic& data()const { return m_value; } +private: + Arithmetic m_value; +}; + +template +inline void add(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() += o.data(); +} +template +inline void subtract(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() -= o.data(); +} +template +inline void multiply(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() *= o.data(); +} +template +inline void divide(arithmetic_backend& result, const arithmetic_backend& o) +{ + result.data() /= o.data(); +} + +}} // namespaces + + +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +template +class numeric_limits > > : public std::numeric_limits +{ + typedef std::numeric_limits base_type; + typedef boost::math::mp_number > number_type; +public: + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } +}; + +#ifdef BOOST_NO_NOEXCEPT +# undef noexcept +#endif + +} + +#endif diff --git a/include/boost/multiprecision/backends/functions/pow.hpp b/include/boost/multiprecision/backends/functions/pow.hpp new file mode 100644 index 00000000..48d10c15 --- /dev/null +++ b/include/boost/multiprecision/backends/functions/pow.hpp @@ -0,0 +1,97 @@ + +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +// +// This file has no include guards or namespaces - it's expanded inline inside default_ops.hpp +// + +template +inline void eval_pow(T& result, const T& t, const T& p) +{ +} + +namespace detail{ + +template +inline T pow_imp(T& result, const T& t, const U& p, const mpl::false_&) +{ + T temp(p); + eval_pow(result, t, p); +} + +template +inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) +{ + // Compute the pure power of typename T t^p. Binary splitting of the power is + // used. The resulting computational complexity has the order of log2[abs(p)]. + + typedef typename mpl::front::type int_type; + + if(p < 0) + { + T temp; + temp = static_cast(1); + T denom; + pow_imp(denom, t, -p, mpl::true_()); + divide(result, temp, denom); + } + + switch(p) + { + case 0: + result = static_cast(1); + break; + case 1: + result = t; + break; + case 2: + multiply(result, t, t); + break; + case 3: + multiply(result, t, t); + multiply(result, t); + break; + case 4: + multiply(result, t, t); + multiply(result, result); + break; + default: + { + result = t; + U n; + + for(n = static_cast(1); n <= static_cast(p / static_cast(2)); n *= static_cast(2)) + { + multiply(result, result); + } + + const U p_minus_n = static_cast(p - n); + + // Call the function recursively for computing the remaining power of n. + if(p_minus_n) + { + T temp; + pow_imp(temp, t, p_minus_n, mpl::true_()); + multiply(result, temp); + } + } + } +} + +} // namespace detail + +template +inline void eval_pow(T& result, const T& t, const U& p) +{ + typedef typename is_integral::type tag_type; + detail::pow_imp(result, t, p, tag_type()); +} + + diff --git a/include/boost/multiprecision/concepts/big_number_architypes.hpp b/include/boost/multiprecision/concepts/big_number_architypes.hpp new file mode 100644 index 00000000..f13c2c7e --- /dev/null +++ b/include/boost/multiprecision/concepts/big_number_architypes.hpp @@ -0,0 +1,293 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_CONCEPTS_ER_HPP +#define BOOST_MATH_CONCEPTS_ER_HPP + +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace math{ +namespace concepts{ + +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4244) +#endif + +struct big_number_backend_real_architype +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + big_number_backend_real_architype() + { + std::cout << "Default construct" << std::endl; + } + big_number_backend_real_architype(const big_number_backend_real_architype& o) + { + std::cout << "Copy construct" << std::endl; + m_value = o.m_value; + } + big_number_backend_real_architype& operator = (const big_number_backend_real_architype& o) + { + m_value = o.m_value; + std::cout << "Assignment (" << m_value << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (boost::uintmax_t i) + { + m_value = i; + std::cout << "UInt Assignment (" << i << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (boost::intmax_t i) + { + m_value = i; + std::cout << "Int Assignment (" << i << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (long double d) + { + m_value = d; + std::cout << "long double Assignment (" << d << ")" << std::endl; + return *this; + } + big_number_backend_real_architype& operator = (const char* s) + { + m_value = boost::lexical_cast(s); + std::cout << "const char* Assignment (" << s << ")" << std::endl; + return *this; + } + void swap(big_number_backend_real_architype& o) + { + std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; + std::swap(m_value, o.m_value); + } + std::string str(unsigned digits, bool scientific)const + { + std::stringstream ss; + if(scientific) + ss.setf(ss.scientific); + if(digits) + ss.precision(digits); + else + ss.precision(std::numeric_limits::digits10 + 2); + boost::intmax_t i = m_value; + boost::uintmax_t u = m_value; + if(!scientific && m_value == i) + ss << i; + else if(!scientific && m_value == u) + ss << u; + else + ss << m_value; + std::string s = ss.str(); + std::cout << "Converting to string (" << s << ")" << std::endl; + return s; + } + void negate() + { + std::cout << "Negating (" << m_value << ")" << std::endl; + m_value = -m_value; + } + int compare(const big_number_backend_real_architype& o)const + { + std::cout << "Comparison" << std::endl; + return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); + } + int compare(boost::intmax_t i)const + { + std::cout << "Comparison with int" << std::endl; + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(boost::uintmax_t i)const + { + std::cout << "Comparison with unsigned" << std::endl; + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(long double d)const + { + std::cout << "Comparison with long double" << std::endl; + return m_value > d ? 1 : (m_value < d ? -1 : 0); + } + long double m_value; +}; + +inline void add(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Addition (" << result.m_value << " += " << o.m_value << ")" << std::endl; + result.m_value += o.m_value; +} +inline void subtract(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Subtraction (" << result.m_value << " -= " << o.m_value << ")" << std::endl; + result.m_value -= o.m_value; +} +inline void multiply(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Multiplication (" << result.m_value << " *= " << o.m_value << ")" << std::endl; + result.m_value *= o.m_value; +} +inline void divide(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +{ + std::cout << "Division (" << result.m_value << " /= " << o.m_value << ")" << std::endl; + result.m_value /= o.m_value; +} + +inline void eval_frexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int* exp) +{ + result = std::frexp(arg.m_value, exp); +} + +inline void eval_ldexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int exp) +{ + result = std::ldexp(arg.m_value, exp); +} + +inline void eval_floor(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::floor(arg.m_value); +} + +inline void eval_ceil(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::ceil(arg.m_value); +} + +inline void eval_trunc(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = boost::math::trunc(arg.m_value); +} + +inline void eval_sqrt(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::sqrt(arg.m_value); +} + +inline void eval_abs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::abs(arg.m_value); +} + +inline void eval_fabs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::fabs(arg.m_value); +} + +inline int eval_fpclassify(const big_number_backend_real_architype& arg) +{ + return boost::math::fpclassify(arg.m_value); +} + +inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, const big_number_backend_real_architype& e) +{ + result = std::pow(b.m_value, e.m_value); +} + +inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, int e) +{ + result = std::pow(b.m_value, e); +} + +inline void eval_exp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::exp(arg.m_value); +} + +inline void eval_log(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::log(arg.m_value); +} + +inline void eval_sin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::sin(arg.m_value); +} + +inline void eval_cos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::cos(arg.m_value); +} + +inline void eval_tan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::tan(arg.m_value); +} + +inline void eval_asin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::asin(arg.m_value); +} + +inline void eval_acos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::acos(arg.m_value); +} + +inline void eval_atan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::atan(arg.m_value); +} + +inline void eval_sinh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::sinh(arg.m_value); +} + +inline void eval_cosh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::cosh(arg.m_value); +} + +inline void eval_tanh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +{ + result = std::tanh(arg.m_value); +} + +typedef boost::math::mp_number big_number_real_architype; + +}}} // namespaces + +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +template <> +class numeric_limits : public std::numeric_limits +{ + typedef std::numeric_limits base_type; + typedef boost::math::concepts::big_number_real_architype number_type; +public: + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } +}; + +#ifdef BOOST_NO_NOEXCEPT +# undef noexcept +#endif + +} + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +#endif diff --git a/include/boost/multiprecision/detail/big_number_base.hpp b/include/boost/multiprecision/detail/big_number_base.hpp new file mode 100644 index 00000000..c8fcd9cf --- /dev/null +++ b/include/boost/multiprecision/detail/big_number_base.hpp @@ -0,0 +1,983 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_BIG_NUM_BASE_HPP +#define BOOST_MATH_BIG_NUM_BASE_HPP + +#include +#include +#include + +namespace boost{ namespace math{ + +template +class mp_number; + +namespace detail{ + +// Forward-declare an expression wrapper +template +struct mp_exp; + +template +struct has_enough_bits +{ + template + struct type : public mpl::bool_::digits >= b>{}; +}; + +template +struct canonical_imp +{ + typedef Val type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::signed_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::unsigned_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::real_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef const char* type; +}; + +template +struct canonical +{ + typedef typename mpl::if_< + is_signed, + mpl::int_<0>, + typename mpl::if_< + is_unsigned, + mpl::int_<1>, + typename mpl::if_< + is_floating_point, + mpl::int_<2>, + typename mpl::if_< + mpl::or_< + is_convertible, + is_same + >, + mpl::int_<3>, + mpl::int_<4> + >::type + >::type + >::type + >::type tag_type; + + typedef typename canonical_imp::type type; +}; + +struct terminal{}; +struct negate{}; +struct plus{}; +struct minus{}; +struct multiplies{}; +struct divides{}; +struct modulus{}; +struct shift_left{}; +struct shift_right{}; +struct bitwise_and{}; +struct bitwise_or{}; +struct bitwise_xor{}; +struct bitwise_complement{}; +struct add_immediates{}; +struct subtract_immediates{}; +struct multiply_immediates{}; +struct divide_immediates{}; +struct modulus_immediates{}; +struct bitwise_and_immediates{}; +struct bitwise_or_immediates{}; +struct bitwise_xor_immediates{}; +struct complement_immediates{}; +struct function{}; + +template +struct backend_type; + +template +struct backend_type > +{ + typedef T type; +}; + +template +struct backend_type > +{ + typedef typename backend_type::result_type>::type type; +}; + + +template +struct is_big_number : public mpl::false_{}; +template +struct is_big_number > : public mpl::true_{}; +template +struct is_big_number_exp : public mpl::false_{}; +template +struct is_big_number_exp > : public mpl::true_{}; + +template +struct combine_expression; + +template +struct combine_expression, T2> +{ + typedef mp_number type; +}; + +template +struct combine_expression > +{ + typedef mp_number type; +}; + +template +struct combine_expression, mp_number > +{ + typedef mp_number type; +}; + +template +struct arg_type +{ + typedef mp_exp type; +}; + +template +struct arg_type > +{ + typedef mp_exp type; +}; + +template +struct unmentionable +{ + static void proc(){} +}; + +typedef void (*unmentionable_type)(); + +template +struct big_number_exp_storage +{ + typedef const T& type; +}; + +template +struct big_number_exp_storage +{ + typedef T* type; +}; + +template +struct big_number_exp_storage +{ + typedef const T* type; +}; + +template +struct big_number_exp_storage > +{ + typedef mp_exp type; +}; + +template +struct mp_exp +{ + typedef mpl::int_<1> arity; + typedef typename arg_type::type left_type; + typedef typename left_type::result_type result_type; + typedef tag tag_type; + + mp_exp(const Arg1& a) : arg(a) {} + + left_type left()const { return arg; } + + const Arg1& left_ref()const{ return arg; } + + static const unsigned depth = left_type::depth + 1; + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + +private: + typename big_number_exp_storage::type arg; +}; + +template +struct mp_exp +{ + typedef mpl::int_<0> arity; + typedef Arg1 result_type; + typedef terminal tag_type; + + mp_exp(const Arg1& a) : arg(a) {} + + const Arg1& value()const { return arg; } + + static const unsigned depth = 0; + + operator unmentionable_type()const + { + return arg ? &unmentionable::proc : 0; + } + +private: + typename big_number_exp_storage::type arg; +}; + +template +struct mp_exp +{ + typedef mpl::int_<2> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression::type result_type; + typedef tag tag_type; + + mp_exp(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {} + + left_type left()const { return arg1; } + right_type right()const { return arg2; } + const Arg1& left_ref()const{ return arg1; } + const Arg2& right_ref()const{ return arg2; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + static const unsigned depth = left_depth > right_depth ? left_depth : right_depth; +private: + typename big_number_exp_storage::type arg1; + typename big_number_exp_storage::type arg2; +}; + +template +struct mp_exp +{ + typedef mpl::int_<3> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type middle_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename middle_type::result_type middle_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression< + left_result_type, + typename combine_expression::type + >::type result_type; + typedef tag tag_type; + + mp_exp(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {} + + left_type left()const { return arg1; } + middle_type middle()const { return arg2; } + right_type right()const { return arg3; } + const Arg1& left_ref()const{ return arg1; } + const Arg2& middle_ref()const{ return arg2; } + const Arg3& right_ref()const{ return arg3; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned middle_depth = middle_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + static const unsigned depth = left_depth > right_depth ? (left_depth > middle_depth ? left_depth : middle_depth) : (right_depth > middle_depth ? right_depth : middle_depth); +private: + typename big_number_exp_storage::type arg1; + typename big_number_exp_storage::type arg2; + typename big_number_exp_storage::type arg3; +}; + +} // namespace detail + +// +// Non-member operators for mp_number: +// +// Unary operators first: +// +template +inline const mp_number& operator + (const mp_number& v) { return v; } +template +inline const detail::mp_exp& operator + (const detail::mp_exp& v) { return v; } +template +inline detail::mp_exp > operator - (const mp_number& v) { return v; } +template +inline detail::mp_exp > operator - (const detail::mp_exp& v) { return v; } +template +inline detail::mp_exp > operator ~ (const mp_number& v) { return v; } +template +inline detail::mp_exp > operator ~ (const detail::mp_exp& v) { return v; } +// +// Then addition: +// +template +inline detail::mp_exp, mp_number > + operator + (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator + (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator + (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator + (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator + (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator + (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator + (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator + (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator + (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); +} +template +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator + (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); +} +template +inline detail::mp_exp, mp_number > + operator + (const mp_number& a, const detail::mp_exp >& b) +{ + return detail::mp_exp, mp_number >(a, b.left_ref()); +} +template +inline detail::mp_exp, mp_number > + operator + (const detail::mp_exp >& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(b, a.left_ref()); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator + (const detail::mp_exp >& a, const V& b) +{ + return detail::mp_exp >(b, a.left_ref()); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator + (const V& a, const detail::mp_exp >& b) +{ + return detail::mp_exp, mp_number >(a, b.left_ref()); +} +// +// Subtraction: +// +template +inline detail::mp_exp, mp_number > + operator - (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator - (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator - (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator - (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator - (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator - (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator - (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator - (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator - (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); +} +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator - (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); +} +template +inline detail::mp_exp, mp_number > + operator - (const mp_number& a, const detail::mp_exp >& b) +{ + return detail::mp_exp, mp_number >(a, b.left_ref()); +} +template +inline detail::mp_exp, mp_number > > + operator - (const detail::mp_exp >& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(b, a.left_ref()); +} +template +inline typename enable_if, detail::mp_exp, V > > >::type + operator - (const detail::mp_exp >& a, const V& b) +{ + return detail::mp_exp >(b, a.left_ref()); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator - (const V& a, const detail::mp_exp >& b) +{ + return detail::mp_exp >(a, b.left_ref()); +} +// +// Multiplication: +// +template +inline detail::mp_exp, mp_number > + operator * (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator * (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator * (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator * (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator * (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator * (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator * (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator * (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator * (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref()); +} +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator * (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); +} +template +inline detail::mp_exp, mp_number > > + operator * (const mp_number& a, const detail::mp_exp >& b) +{ + return detail::mp_exp, mp_number >(a, b.left_ref()); +} +template +inline detail::mp_exp, mp_number > > + operator * (const detail::mp_exp >& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(b, a.left_ref()); +} +template +inline typename enable_if, detail::mp_exp, V > > >::type + operator * (const detail::mp_exp >& a, const V& b) +{ + return detail::mp_exp, V >(a.left_ref(), b); +} +template +inline typename enable_if, detail::mp_exp, V > > >::type + operator * (const V& a, const detail::mp_exp >& b) +{ + return detail::mp_exp, V >(b.left_ref(), a); +} +// +// Division: +// +template +inline detail::mp_exp, mp_number > + operator / (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator / (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator / (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator / (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator / (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator / (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator / (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator / (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator / (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); +} +template +inline detail::mp_exp::left_type, mp_number > > + operator / (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp::left_type, mp_number >(a.left_ref(), b); +} +template +inline detail::mp_exp, mp_number > > + operator / (const mp_number& a, const detail::mp_exp >& b) +{ + return detail::mp_exp, mp_number >(a, b.left_ref()); +} +template +inline detail::mp_exp, mp_number > > + operator / (const detail::mp_exp >& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a.left_ref(), b); +} +template +inline typename enable_if, detail::mp_exp, V > > >::type + operator / (const detail::mp_exp >& a, const V& b) +{ + return detail::mp_exp, V>(a.left_ref(), b); +} +template +inline typename enable_if, detail::mp_exp > > >::type + operator / (const V& a, const detail::mp_exp >& b) +{ + return detail::mp_exp >(a, b.left_ref()); +} +// +// Modulus: +// +template +inline detail::mp_exp, mp_number > + operator % (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator % (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator % (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator % (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator % (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator % (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator % (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator % (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} +// +// Left shift: +// +template +inline typename enable_if, detail::mp_exp, I > >::type + operator << (const mp_number& a, const I& b) +{ + return detail::mp_exp, I>(a, b); +} +template +inline typename enable_if, detail::mp_exp, I> >::type + operator << (const detail::mp_exp& a, const I& b) +{ + return detail::mp_exp, I>(a, b); +} +// +// Right shift: +// +template +inline typename enable_if, detail::mp_exp, I > >::type + operator >> (const mp_number& a, const I& b) +{ + return detail::mp_exp, I>(a, b); +} +template +inline typename enable_if, detail::mp_exp, I> >::type + operator >> (const detail::mp_exp& a, const I& b) +{ + return detail::mp_exp, I>(a, b); +} +// +// Bitwise AND: +// +template +inline detail::mp_exp, mp_number > + operator & (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator & (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator & (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator & (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator & (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator & (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator & (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator & (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} +// +// Bitwise OR: +// +template +inline detail::mp_exp, mp_number > + operator| (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator| (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator| (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator| (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator| (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator| (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator| (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator| (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} +// +// Bitwise XOR: +// +template +inline detail::mp_exp, mp_number > + operator^ (const mp_number& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator^ (const mp_number& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator^ (const V& a, const mp_number& b) +{ + return detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator^ (const mp_number& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline detail::mp_exp, mp_number > + operator^ (const detail::mp_exp& a, const mp_number& b) +{ + return detail::mp_exp, mp_number >(a, b); +} +template +inline detail::mp_exp, detail::mp_exp > + operator^ (const detail::mp_exp& a, const detail::mp_exp& b) +{ + return detail::mp_exp, detail::mp_exp >(a, b); +} +template +inline typename enable_if, detail::mp_exp, V > >::type + operator^ (const detail::mp_exp& a, const V& b) +{ + return detail::mp_exp, V >(a, b); +} +template +inline typename enable_if, detail::mp_exp > >::type + operator^ (const V& a, const detail::mp_exp& b) +{ + return detail::mp_exp >(a, b); +} + +// +// Traits class, lets us know what kind of number we have, defaults to a floating point type: +// +enum number_category_type +{ + number_kind_integer = 0, + number_kind_floating_point = 1, + number_kind_rational = 2, + number_kind_fixed_point = 3 +}; + +template +struct number_category : public mpl::int_ {}; +template +struct number_category > : public number_category{}; +template +struct number_category > : public number_category::result_type>{}; + +}} // namespaces + +namespace boost{ namespace math{ namespace tools{ + +template +struct promote_arg; + +template +struct promote_arg > +{ + typedef typename boost::math::detail::mp_exp::result_type type; +}; + +}}} + +#endif // BOOST_MATH_BIG_NUM_BASE_HPP + + diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp new file mode 100644 index 00000000..262b3ee7 --- /dev/null +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -0,0 +1,903 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_BIG_NUM_DEF_OPS +#define BOOST_MATH_BIG_NUM_DEF_OPS + +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace math{ namespace big_num_default_ops{ + +// +// Default versions of mixed arithmetic, these just construct a temporary +// from the arithmetic value and then do the arithmetic on that: +// +template +inline typename enable_if, is_convertible, is_same > >::type + add(T& result, V const& v) +{ + T t; + t = v; + add(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + subtract(T& result, V const& v) +{ + T t; + t = v; + subtract(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + multiply(T& result, V const& v) +{ + T t; + t = v; + multiply(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + divide(T& result, V const& v) +{ + T t; + t = v; + divide(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + modulus(T& result, V const& v) +{ + T t; + t = v; + modulus(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + bitwise_and(T& result, V const& v) +{ + T t; + t = v; + bitwise_and(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + bitwise_or(T& result, V const& v) +{ + T t; + t = v; + bitwise_or(result, t); +} +template +inline typename enable_if, is_convertible, is_same > >::type + bitwise_xor(T& result, V const& v) +{ + T t; + t = v; + bitwise_xor(result, t); +} + +template +inline typename enable_if, is_convertible, is_same > >::type + complement(T& result, V const& v) +{ + T t; + t = v; + complement(result, t); +} + +template +inline bool is_same_object(const T& u, const T&v) +{ return &u == &v; } +template +inline bool is_same_object(const T& u, const U&v) +{ return false; } + +// +// Default versions of 3-arg arithmetic functions, these just forward to the 2 arg versions: +// +template +inline void add(T& t, const U& u, const V& v) +{ + if(is_same_object(t, v)) + { + add(t, u); + } + else if(is_same_object(t, u)) + { + add(t, v); + } + else + { + t = u; + add(t, v); + } +} +template +inline void subtract(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + subtract(t, v); + else if(is_same_object(t, v)) + { + subtract(t, u); + t.negate(); + } + else + { + t = u; + subtract(t, v); + } +} +template +inline void multiply(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + multiply(t, v); + else if(is_same_object(t, v)) + multiply(t, u); + else + { + t = u; + multiply(t, v); + } +} +template +inline void divide(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + divide(t, v); + else if(is_same_object(t, v)) + { + T temp = t; + divide(temp, u, v); + temp.swap(t); + } + else + { + t = u; + divide(t, v); + } +} +template +inline void modulus(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + modulus(t, v); + else if(is_same_object(t, v)) + { + T temp; + modulus(temp, u, v); + temp.swap(t); + } + else + { + t = u; + modulus(t, v); + } +} +template +inline void bitwise_and(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + bitwise_and(t, v); + else if(is_same_object(t, v)) + bitwise_and(t, u); + else + { + t = u; + bitwise_and(t, v); + } +} + +template +inline void bitwise_or(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + bitwise_or(t, v); + else if(is_same_object(t, v)) + bitwise_or(t, u); + else + { + t = u; + bitwise_or(t, v); + } +} + +template +inline void bitwise_xor(T& t, const U& u, const V& v) +{ + if(is_same_object(t, u)) + bitwise_xor(t, v); + else if(is_same_object(t, v)) + bitwise_xor(t, u); + else + { + t = u; + bitwise_xor(t, v); + } +} + +template +inline void increment(T& val) +{ + typedef typename mpl::front::type ui_type; + add(val, static_cast(1u)); +} + +template +inline void decrement(T& val) +{ + typedef typename mpl::front::type ui_type; + subtract(val, static_cast(1u)); +} + +template +inline void left_shift(T& result, const T& arg, const V val) +{ + result = arg; + left_shift(result, val); +} + +template +inline void right_shift(T& result, const T& arg, const V val) +{ + result = arg; + right_shift(result, val); +} + +template +inline bool is_zero(const T& val) +{ + typedef typename mpl::front::type ui_type; + return val.compare(static_cast(0)) == 0; +} +template +inline int get_sign(const T& val) +{ + typedef typename mpl::front::type ui_type; + return val.compare(static_cast(0)); +} + +template +struct has_enough_bits +{ + template + struct type : public mpl::and_ >, mpl::bool_::digits >= b> >{}; +}; + +template +struct terminal +{ + terminal(const R& v) : value(v){} + terminal(){} + terminal& operator = (R val) { value = val; } + R value; + operator R()const { return value; } +}; + +template +struct calculate_next_larger_type +{ + typedef typename mpl::if_< + is_signed, + typename B::signed_types, + typename mpl::if_< + is_unsigned, + typename B::unsigned_types, + typename B::real_types + >::type + >::type list_type; + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + list_type, + pred_type + >::type iter_type; + typedef typename mpl::eval_if< + is_same::type, iter_type>, + mpl::identity >, + mpl::deref + >::type type; +}; + +template +inline void convert_to(R* result, const B& backend) +{ + typedef typename calculate_next_larger_type::type next_type; + next_type n; + convert_to(&n, backend); + *result = static_cast(n); +} + +template +inline void convert_to(terminal* result, const B& backend) +{ + // + // We ran out of types to try for the convertion, try + // a lexical_cast and hope for the best: + // + result->value = boost::lexical_cast(backend.str(0, false)); +} + +// +// Functions: +// +template +void eval_abs(T& result, const T& arg) +{ + typedef typename T::signed_types type_list; + typedef typename mpl::front::type front; + *result = arg; + if(arg.compare(front(0)) < 0) + result->negate(); +} +template +void eval_fabs(T& result, const T& arg) +{ + typedef typename T::signed_types type_list; + typedef typename mpl::front::type front; + *result = arg; + if(arg.compare(front(0)) < 0) + result->negate(); +} + +template +inline int eval_fpclassify(const Backend& arg) +{ + return is_zero(arg) ? FP_ZERO : FP_NORMAL; +} + +template +inline void eval_fmod(T& result, const T& a, const T& b) +{ + if((&result == &a) || (&result == &b)) + { + T temp; + eval_fmod(temp, a, b); + result = temp; + } + T n; + divide(result, a, b); + if(get_sign(a) < 0) + eval_ceil(n, result); + else + eval_floor(n, result); + multiply(n, b); + subtract(result, a, n); +} + +// +// These have to implemented by the backend, declared here so that our macro generated code compiles OK. +// +template +typename enable_if_c::type eval_floor(); +template +typename enable_if_c::type eval_ceil(); +template +typename enable_if_c::type eval_trunc(); +template +typename enable_if_c::type eval_sqrt(); +template +typename enable_if_c::type eval_ldexp(); +template +typename enable_if_c::type eval_frexp(); +// +// TODO: implement default versions of these: +// +template +typename enable_if_c::type eval_exp(); +template +typename enable_if_c::type eval_log(); +template +typename enable_if_c::type eval_sin(); +template +typename enable_if_c::type eval_cos(); +template +typename enable_if_c::type eval_tan(); +template +typename enable_if_c::type eval_asin(); +template +typename enable_if_c::type eval_acos(); +template +typename enable_if_c::type eval_atan(); +template +typename enable_if_c::type eval_sinh(); +template +typename enable_if_c::type eval_cosh(); +template +typename enable_if_c::type eval_tanh(); +// +// These functions are implemented in separate files, but expanded inline here: +// +#include + +} + +template +class mp_number; + +// +// Default versions of floating point classification routines: +// +template +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +{ + using big_num_default_ops::eval_fpclassify; + return eval_fpclassify(arg.backend()); +} +template +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +{ + typedef typename detail::mp_exp::result_type value_type; + return fpclassify(value_type(arg)); +} +template +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +{ + int v = fpclassify(arg); + return (v != FP_INFINITE) && (v != FP_NAN); +} +template +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +{ + typedef typename detail::mp_exp::result_type value_type; + return isfinite(value_type(arg)); +} +template +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +{ + return fpclassify(arg) == FP_NAN; +} +template +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +{ + typedef typename detail::mp_exp::result_type value_type; + return isnan(value_type(arg)); +} +template +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +{ + return fpclassify(arg) == FP_INFINITE; +} +template +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +{ + typedef typename detail::mp_exp::result_type value_type; + return isinf(value_type(arg)); +} +template +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +{ + return fpclassify(arg) == FP_NORMAL; +} +template +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +{ + typedef typename detail::mp_exp::result_type value_type; + return isnormal(value_type(arg)); +} + +template +inline int itrunc(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_type number_type; + number_type r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline int itrunc(const mp_number& v, const Policy& pol) +{ + mp_number r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long ltrunc(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_result number_type; + number_type r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long ltrunc(const mp_number& v, const Policy& pol) +{ + mp_number r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +#ifndef BOOST_NO_LONG_LONG +template +inline long long lltrunc(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_result number_type; + number_type r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long long lltrunc(const mp_number& v, const Policy& pol) +{ + mp_number r = trunc(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +#endif +template +inline int iround(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_result number_type; + number_type r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline int iround(const mp_number& v, const Policy& pol) +{ + mp_number r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long lround(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_result number_type; + number_type r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long lround(const mp_number& v, const Policy& pol) +{ + mp_number r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return r.template convert_to(); +} +#ifndef BOOST_NO_LONG_LONG +template +inline long long llround(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_result number_type; + number_type r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +template +inline long long llround(const mp_number& v, const Policy& pol) +{ + mp_number r = round(v, pol); + if(fabs(r) > (std::numeric_limits::max)()) + return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return r.template convert_to(); +} +#endif +// +// Overload of Boost.Math functions that find the wrong overload when used with mp_number: +// +namespace detail{ + template T sinc_pi_imp(T); + template T sinhc_pi_imp(T); +} +template +inline mp_number sinc_pi(const mp_number& x) +{ + return detail::sinc_pi_imp(x); +} + +template +inline mp_number sinc_pi(const mp_number& x, const Policy&) +{ + return detail::sinc_pi_imp(x); +} + +template +inline mp_number sinhc_pi(const mp_number& x) +{ + return detail::sinhc_pi_imp(x); +} + +template +inline mp_number sinhc_pi(const mp_number& x, const Policy&) +{ + return boost::math::sinhc_pi(x); +} + +#define UNARY_OP_FUNCTOR(func)\ +namespace detail{\ +template \ +struct BOOST_JOIN(func, _funct)\ +{\ + void operator()(Backend& result, const Backend& arg)const\ + {\ + using big_num_default_ops::BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg);\ + }\ +};\ +\ +}\ +\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ +> \ +func(const detail::mp_exp& arg)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ +> (\ + detail::BOOST_JOIN(func, _funct) >::type>() \ + , arg \ + );\ +}\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ +> \ +func(const mp_number& arg)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + >(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg \ + );\ +} + +#define BINARY_OP_FUNCTOR(func)\ +namespace detail{\ +template \ +struct BOOST_JOIN(func, _funct)\ +{\ + void operator()(Backend& result, const Backend& arg, const Backend& a)const\ + {\ + using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg, a);\ + }\ + template \ + void operator()(Backend& result, const Backend& arg, const Arithmetic& a)const\ + {\ + using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg, a);\ + }\ +};\ +\ +}\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , mp_number \ +> \ +func(const mp_number& arg, const mp_number& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , mp_number \ + >(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg,\ + a\ + );\ +}\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , detail::mp_exp \ +> \ +func(const mp_number& arg, const detail::mp_exp& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , detail::mp_exp \ + >(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg,\ + a\ + );\ +}\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::mp_exp \ + , mp_number \ +> \ +func(const detail::mp_exp& arg, const mp_number& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , detail::mp_exp \ + , mp_number \ + >(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg,\ + a\ + );\ +}\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , detail::mp_exp \ +> \ +func(const detail::mp_exp& arg, const detail::mp_exp& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , detail::mp_exp \ + >(\ + detail::BOOST_JOIN(func, _funct) >::type>() \ + , arg,\ + a\ + );\ +}\ +template \ +typename enable_if<\ + is_arithmetic,\ + detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , Arithmetic\ + > \ +>::type \ +func(const mp_number& arg, const Arithmetic& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , Arithmetic\ + >(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg,\ + a\ + );\ +}\ +template \ +typename enable_if<\ + is_arithmetic,\ + detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , Arithmetic\ + > \ +>::type \ +func(const detail::mp_exp& arg, const Arithmetic& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , Arithmetic\ + >(\ + detail::BOOST_JOIN(func, _funct) >::type>() \ + , arg,\ + a\ + );\ +}\ + + +#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\ +namespace detail{\ +template \ +struct BOOST_JOIN(func, _funct)\ +{\ + void operator()(Backend& result, Backend const& arg, Arg2 a)const\ + {\ + using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg, a);\ + }\ +};\ +\ +}\ +\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , Arg2\ +> \ +func(const detail::mp_exp& arg, Arg2 const& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , Arg2\ + >(\ + detail::BOOST_JOIN(func, _funct) >::type>() \ + , arg, a \ + );\ +}\ +template \ +detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , Arg2\ +> \ +func(const mp_number& arg, Arg2 const& a)\ +{\ + return detail::mp_exp<\ + detail::function\ + , detail::BOOST_JOIN(func, _funct) \ + , mp_number \ + , Arg2\ + >(\ + detail::BOOST_JOIN(func, _funct)() \ + , arg,\ + a\ + );\ +}\ + +UNARY_OP_FUNCTOR(abs) +UNARY_OP_FUNCTOR(fabs) +UNARY_OP_FUNCTOR(sqrt) +UNARY_OP_FUNCTOR(floor) +UNARY_OP_FUNCTOR(ceil) +UNARY_OP_FUNCTOR(trunc) +UNARY_OP_FUNCTOR(exp) +UNARY_OP_FUNCTOR(log) +UNARY_OP_FUNCTOR(cos) +UNARY_OP_FUNCTOR(sin) +UNARY_OP_FUNCTOR(tan) +UNARY_OP_FUNCTOR(asin) +UNARY_OP_FUNCTOR(acos) +UNARY_OP_FUNCTOR(atan) +UNARY_OP_FUNCTOR(cosh) +UNARY_OP_FUNCTOR(sinh) +UNARY_OP_FUNCTOR(tanh) + +HETERO_BINARY_OP_FUNCTOR(ldexp, int) +HETERO_BINARY_OP_FUNCTOR(frexp, int*) +BINARY_OP_FUNCTOR(pow) +BINARY_OP_FUNCTOR(fmod) + +#undef BINARY_OP_FUNCTOR +#undef UNARY_OP_FUNCTOR + +}} // namespaces + +#endif + diff --git a/include/boost/multiprecision/e_float.hpp b/include/boost/multiprecision/e_float.hpp new file mode 100644 index 00000000..4f9d4aa2 --- /dev/null +++ b/include/boost/multiprecision/e_float.hpp @@ -0,0 +1,80 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_EFX_BACKEND_HPP +#define BOOST_MATH_EFX_BACKEND_HPP + +#include +#include +#include +#include +#include + +namespace boost{ +namespace math{ + +typedef mp_number > e_float; + +template<> +inline void arithmetic_backend::negate() +{ + m_value.negate(); +} +template<> +inline std::string arithmetic_backend::str(unsigned digits, bool scientific)const +{ + std::fstream os; + os << std::setprecision(digits ? digits : efx::e_float::ef_digits + 5); + if(scientific) + os << std::scientific; + std::string result; + this->data().wr_string(result, os); + return result; +} + +inline void eval_abs(arithmetic_backend& result, const arithmetic_backend& arg) +{ + result.data() = ef::fabs(arg.data()); +} + +inline void eval_fabs(arithmetic_backend& result, const arithmetic_backend& arg) +{ + result.data() = ef::fabs(arg.data()); +} + +inline bool is_zero(const arithmetic_backend& val) +{ + return val.data().iszero(); +} +inline int get_sign(const arithmetic_backend& val) +{ + return val.data().isneg() ? -1 : val.data().iszero() ? 0 : 1; +} + +inline void convert_to(boost::uintmax_t* result, const arithmetic_backend& val) +{ + *result = val.data().extract_unsigned_long_long(); +} +inline void convert_to(boost::intmax_t* result, const arithmetic_backend& val) +{ + *result = val.data().extract_signed_long_long(); +} +inline void convert_to(double* result, const arithmetic_backend& val) +{ + *result = val.data().extract_double(); +} +inline void convert_to(long double* result, const arithmetic_backend& val) +{ + *result = val.data().extract_long_double(); +} +inline int eval_fpclassify(const arithmetic_backend& val) +{ + return val.data().isinf() ? FP_INFINITE : val.data().isnan() ? FP_NAN : val.data().iszero() ? FP_ZERO : FP_NORMAL; +} + + +}} // namespaces + +#endif diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp new file mode 100644 index 00000000..2cf5991d --- /dev/null +++ b/include/boost/multiprecision/gmp.hpp @@ -0,0 +1,1532 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_ER_GMP_BACKEND_HPP +#define BOOST_MATH_ER_GMP_BACKEND_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace math{ + +template +struct gmp_real; + +namespace detail{ + +template +struct gmp_real_imp +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + gmp_real_imp(){} + + gmp_real_imp(const gmp_real_imp& o) + { + // + // We have to do an init followed by a set here, otherwise *this may be at + // a lower precision than o: seems like mpf_init_set copies just enough bits + // to get the right value, but if it's then used in further calculations + // things go badly wrong!! + // + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_set(m_data, o.m_data); + } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real_imp(gmp_real_imp&& o) + { + m_data[0] = o.m_data[0]; + o.m_data[0]._mp_d = 0; + } +#endif + gmp_real_imp& operator = (const gmp_real_imp& o) + { + mpf_set(m_data, o.m_data); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real_imp& operator = (gmp_real_imp&& o) + { + mpf_swap(m_data, o.m_data); + return *this; + } +#endif + gmp_real_imp& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpf_t t; + mpf_init2(t, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_set_ui(m_data, 0); + while(i) + { + mpf_set_ui(t, static_cast(i & mask)); + if(shift) + mpf_mul_2exp(t, t, shift); + mpf_add(m_data, m_data, t); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpf_clear(t); + return *this; + } + gmp_real_imp& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpf_neg(m_data, m_data); + return *this; + } + gmp_real_imp& operator = (unsigned long i) + { + mpf_set_ui(m_data, i); + return *this; + } + gmp_real_imp& operator = (long i) + { + mpf_set_si(m_data, i); + return *this; + } + gmp_real_imp& operator = (double d) + { + mpf_set_d(m_data, d); + return *this; + } + gmp_real_imp& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + mpf_set_si(m_data, 0); + return *this; + } + + if (a == 1) { + mpf_set_si(m_data, 1); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpf_init_set_ui(m_data, 0u); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpf_mul_2exp(m_data, m_data, shift); + if(term > 0) + mpf_add_ui(m_data, m_data, static_cast(term)); + else + mpf_sub_ui(m_data, m_data, static_cast(-term)); + f -= term; + } + if(e > 0) + mpf_mul_2exp(m_data, m_data, e); + else if(e < 0) + mpf_div_2exp(m_data, m_data, -e); + return *this; + } + gmp_real_imp& operator = (const char* s) + { + mpf_set_str(m_data, s, 10); + return *this; + } + void swap(gmp_real_imp& o) + { + mpf_swap(m_data, o.m_data); + } + std::string str(unsigned digits, bool scientific)const + { + std::string result; + mp_exp_t e; + void *(*alloc_func_ptr) (size_t); + void *(*realloc_func_ptr) (void *, size_t, size_t); + void (*free_func_ptr) (void *, size_t); + const char* ps = mpf_get_str (0, &e, 10, digits, m_data); + std::ptrdiff_t sl = std::strlen(ps); + if(sl == 0) + return "0"; + if(*ps == '-') + --sl; // number of digits excluding sign. + if(!scientific + && (sl <= std::numeric_limits::digits10 + 1) + && (e >= sl) + && (sl <= std::numeric_limits::digits10 + 1)) + { + result = ps; + result.append(e-sl, '0'); + } + else + { + result = ps; + if(ps[0] == '-') + result.insert(2, 1, '.'); + else + result.insert(1, 1, '.'); + --e; + if(e) + result += "e" + lexical_cast(e); + } + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + return result; + } + ~gmp_real_imp() + { + if(m_data[0]._mp_d) + mpf_clear(m_data); + } + void negate() + { + mpf_neg(m_data, m_data); + } + int compare(const gmp_real& o)const + { + return mpf_cmp(m_data, o.m_data); + } + int compare(long i)const + { + return mpf_cmp_si(m_data, i); + } + int compare(unsigned long i)const + { + return mpf_cmp_ui(m_data, i); + } + template + int compare(V v)const + { + gmp_real d; + d = v; + return compare(d); + } + mpf_t& data() { return m_data; } + const mpf_t& data()const { return m_data; } +protected: + mpf_t m_data; + static unsigned& get_default_precision() + { + static unsigned val = 50; + return val; + } +}; + +} // namespace detail + +template +struct gmp_real : public detail::gmp_real_imp +{ + gmp_real() + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + gmp_real(const gmp_real& o) : detail::gmp_real_imp(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real(gmp_real&& o) : detail::gmp_real_imp(o) {} +#endif + gmp_real& operator=(const gmp_real& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real& operator=(gmp_real&& o) + { + *static_cast*>(this) = static_cast&&>(o); + return *this; + } +#endif + template + gmp_real& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } +}; + +template <> +struct gmp_real<0> : public detail::gmp_real_imp<0> +{ + gmp_real() + { + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + } + gmp_real(unsigned digits10) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + gmp_real(const gmp_real& o) : detail::gmp_real_imp<0>(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real(gmp_real&& o) : detail::gmp_real_imp<0>(o) {} +#endif + gmp_real(const gmp_real& o, unsigned digits10) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + *this = o; + } + + gmp_real& operator=(const gmp_real& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_real& operator=(gmp_real&& o) + { + *static_cast*>(this) = static_cast &&>(o); + return *this; + } +#endif + template + gmp_real& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } + static unsigned default_precision() + { + return get_default_precision(); + } + static void default_precision(unsigned v) + { + get_default_precision() = v; + } + unsigned precision()const + { + return mpf_get_prec(this->m_data) * 301L / 1000 - 1; + } + void precision(unsigned digits10) + { + mpf_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); + } +}; + +template +inline void add(gmp_real& result, const gmp_real& o) +{ + mpf_add(result.data(), result.data(), o.data()); +} +template +inline void subtract(gmp_real& result, const gmp_real& o) +{ + mpf_sub(result.data(), result.data(), o.data()); +} +template +inline void multiply(gmp_real& result, const gmp_real& o) +{ + mpf_mul(result.data(), result.data(), o.data()); +} +template +inline void divide(gmp_real& result, const gmp_real& o) +{ + mpf_div(result.data(), result.data(), o.data()); +} +template +inline void add(gmp_real& result, unsigned long i) +{ + mpf_add_ui(result.data(), result.data(), i); +} +template +inline void subtract(gmp_real& result, unsigned long i) +{ + mpf_sub_ui(result.data(), result.data(), i); +} +template +inline void multiply(gmp_real& result, unsigned long i) +{ + mpf_mul_ui(result.data(), result.data(), i); +} +template +inline void divide(gmp_real& result, unsigned long i) +{ + mpf_div_ui(result.data(), result.data(), i); +} +template +inline void add(gmp_real& result, long i) +{ + if(i > 0) + mpf_add_ui(result.data(), result.data(), i); + else + mpf_sub_ui(result.data(), result.data(), std::abs(i)); +} +template +inline void subtract(gmp_real& result, long i) +{ + if(i > 0) + mpf_sub_ui(result.data(), result.data(), i); + else + mpf_add_ui(result.data(), result.data(), std::abs(i)); +} +template +inline void multiply(gmp_real& result, long i) +{ + mpf_mul_ui(result.data(), result.data(), std::abs(i)); + if(i < 0) + mpf_neg(result.data(), result.data()); +} +template +inline void divide(gmp_real& result, long i) +{ + mpf_div_ui(result.data(), result.data(), std::abs(i)); + if(i < 0) + mpf_neg(result.data(), result.data()); +} +// +// Specialised 3 arg versions of the basic operators: +// +template +inline void add(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_add(a.data(), x.data(), y.data()); +} +template +inline void add(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_add_ui(a.data(), x.data(), y); +} +template +inline void add(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + mpf_sub_ui(a.data(), x.data(), -y); + else + mpf_add_ui(a.data(), x.data(), y); +} +template +inline void add(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_add_ui(a.data(), y.data(), x); +} +template +inline void add(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_ui_sub(a.data(), -x, y.data()); + mpf_neg(a.data(), a.data()); + } + else + mpf_add_ui(a.data(), y.data(), x); +} +template +inline void subtract(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_sub(a.data(), x.data(), y.data()); +} +template +inline void subtract(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_sub_ui(a.data(), x.data(), y); +} +template +inline void subtract(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + mpf_add_ui(a.data(), x.data(), -y); + else + mpf_sub_ui(a.data(), x.data(), y); +} +template +inline void subtract(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_ui_sub(a.data(), x, y.data()); +} +template +inline void subtract(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_add_ui(a.data(), y.data(), -x); + mpf_neg(a.data(), a.data()); + } + else + mpf_ui_sub(a.data(), x, y.data()); +} + +template +inline void multiply(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_mul(a.data(), x.data(), y.data()); +} +template +inline void multiply(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_mul_ui(a.data(), x.data(), y); +} +template +inline void multiply(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + { + mpf_mul_ui(a.data(), x.data(), -y); + a.negate(); + } + else + mpf_mul_ui(a.data(), x.data(), y); +} +template +inline void multiply(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_mul_ui(a.data(), y.data(), x); +} +template +inline void multiply(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_mul_ui(a.data(), y.data(), -x); + mpf_neg(a.data(), a.data()); + } + else + mpf_mul_ui(a.data(), y.data(), x); +} + +template +inline void divide(gmp_real& a, const gmp_real& x, const gmp_real& y) +{ + mpf_div(a.data(), x.data(), y.data()); +} +template +inline void divide(gmp_real& a, const gmp_real& x, unsigned long y) +{ + mpf_div_ui(a.data(), x.data(), y); +} +template +inline void divide(gmp_real& a, const gmp_real& x, long y) +{ + if(y < 0) + { + mpf_div_ui(a.data(), x.data(), -y); + a.negate(); + } + else + mpf_div_ui(a.data(), x.data(), y); +} +template +inline void divide(gmp_real& a, unsigned long x, const gmp_real& y) +{ + mpf_ui_div(a.data(), x, y.data()); +} +template +inline void divide(gmp_real& a, long x, const gmp_real& y) +{ + if(x < 0) + { + mpf_ui_div(a.data(), -x, y.data()); + mpf_neg(a.data(), a.data()); + } + else + mpf_ui_div(a.data(), x, y.data()); +} + +template +inline bool is_zero(const gmp_real& val) +{ + return mpf_sgn(val.data()) == 0; +} +template +inline int get_sign(const gmp_real& val) +{ + return mpf_sgn(val.data()); +} + +template +inline void convert_to(unsigned long* result, const gmp_real& val) +{ + *result = mpf_get_ui(val.data()); +} +template +inline void convert_to(long* result, const gmp_real& val) +{ + *result = mpf_get_si(val.data()); +} +template +inline void convert_to(double* result, const gmp_real& val) +{ + *result = mpf_get_d(val.data()); +} + +// +// Native non-member operations: +// +template +inline void eval_sqrt(gmp_real& result, const gmp_real& val) +{ + mpf_sqrt(result.data(), val.data()); +} + +template +inline void eval_abs(gmp_real& result, const gmp_real& val) +{ + mpf_abs(result.data(), val.data()); +} + +template +inline void eval_fabs(gmp_real& result, const gmp_real& val) +{ + mpf_abs(result.data(), val.data()); +} +template +inline void eval_ceil(gmp_real& result, const gmp_real& val) +{ + mpf_ceil(result.data(), val.data()); +} +template +inline void eval_floor(gmp_real& result, const gmp_real& val) +{ + mpf_floor(result.data(), val.data()); +} +template +inline void eval_trunc(gmp_real& result, const gmp_real& val) +{ + mpf_trunc(result.data(), val.data()); +} +template +inline void eval_ldexp(gmp_real& result, const gmp_real& val, long e) +{ + if(e > 0) + mpf_mul_2exp(result.data(), val.data(), e); + else if(e < 0) + mpf_div_2exp(result.data(), val.data(), -e); +} +template +inline void eval_frexp(gmp_real& result, const gmp_real& val, int* e) +{ + long v; + mpf_get_d_2exp(&v, val.data()); + *e = v; + eval_ldexp(result, val, -v); +} +template +inline void eval_frexp(gmp_real& result, const gmp_real& val, long* e) +{ + mpf_get_d_2exp(e, val.data()); + eval_ldexp(result, val, -*e); +} + +struct gmp_int +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + gmp_int() + { + mpz_init(this->m_data); + } + gmp_int(const gmp_int& o) + { + mpz_init_set(m_data, o.m_data); + } + gmp_int& operator = (const gmp_int& o) + { + mpz_set(m_data, o.m_data); + return *this; + } + gmp_int& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpz_t t; + mpz_init(m_data); + mpz_init(t); + while(i) + { + mpz_set_ui(t, static_cast(i & mask)); + if(shift) + mpz_mul_2exp(t, t, shift); + mpz_add(m_data, m_data, t); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpz_clear(t); + return *this; + } + gmp_int& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpz_neg(m_data, m_data); + return *this; + } + gmp_int& operator = (unsigned long i) + { + mpz_set_ui(m_data, i); + return *this; + } + gmp_int& operator = (long i) + { + mpz_set_si(m_data, i); + return *this; + } + gmp_int& operator = (double d) + { + mpz_set_d(m_data, d); + return *this; + } + gmp_int& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + mpz_set_si(m_data, 0); + return *this; + } + + if (a == 1) { + mpz_set_si(m_data, 1); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpz_init_set_ui(m_data, 0u); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpz_mul_2exp(m_data, m_data, shift); + if(term > 0) + mpz_add_ui(m_data, m_data, static_cast(term)); + else + mpz_sub_ui(m_data, m_data, static_cast(-term)); + f -= term; + } + if(e > 0) + mpz_mul_2exp(m_data, m_data, e); + else if(e < 0) + mpz_div_2exp(m_data, m_data, -e); + return *this; + } + gmp_int& operator = (const char* s) + { + mpz_set_str(m_data, s, 10); + return *this; + } + void swap(gmp_int& o) + { + mpz_swap(m_data, o.m_data); + } + std::string str(unsigned /*digits*/, bool /*scientific*/)const + { + void *(*alloc_func_ptr) (size_t); + void *(*realloc_func_ptr) (void *, size_t, size_t); + void (*free_func_ptr) (void *, size_t); + const char* ps = mpz_get_str (0, 10, m_data); + std::string s = ps; + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + return s; + } + ~gmp_int() + { + mpz_clear(m_data); + } + void negate() + { + mpz_neg(m_data, m_data); + } + int compare(const gmp_int& o)const + { + return mpz_cmp(m_data, o.m_data); + } + int compare(long i)const + { + return mpz_cmp_si(m_data, i); + } + int compare(unsigned long i)const + { + return mpz_cmp_ui(m_data, i); + } + template + int compare(V v)const + { + gmp_int d; + d = v; + return compare(d); + } + mpz_t& data() { return m_data; } + const mpz_t& data()const { return m_data; } +protected: + mpz_t m_data; +}; + +inline void add(gmp_int& t, const gmp_int& o) +{ + mpz_add(t.data(), t.data(), o.data()); +} +inline void subtract(gmp_int& t, const gmp_int& o) +{ + mpz_sub(t.data(), t.data(), o.data()); +} +inline void multiply(gmp_int& t, const gmp_int& o) +{ + mpz_mul(t.data(), t.data(), o.data()); +} +inline void divide(gmp_int& t, const gmp_int& o) +{ + mpz_div(t.data(), t.data(), o.data()); +} +inline void modulus(gmp_int& t, const gmp_int& o) +{ + bool neg = mpz_sgn(t.data()) < 0; + bool neg2 = mpz_sgn(o.data()) < 0; + mpz_mod(t.data(), t.data(), o.data()); + if(neg) + { + if(!neg2) + t.negate(); + mpz_add(t.data(), t.data(), o.data()); + if(!neg2) + t.negate(); + } +} +inline void add(gmp_int& t, unsigned long i) +{ + mpz_add_ui(t.data(), t.data(), i); +} +inline void subtract(gmp_int& t, unsigned long i) +{ + mpz_sub_ui(t.data(), t.data(), i); +} +inline void multiply(gmp_int& t, unsigned long i) +{ + mpz_mul_ui(t.data(), t.data(), i); +} +inline void modulus(gmp_int& t, unsigned long i) +{ + bool neg = mpz_sgn(t.data()) < 0; + mpz_mod_ui(t.data(), t.data(), i); + if(neg) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), i); + t.negate(); + } +} +inline void divide(gmp_int& t, unsigned long i) +{ + mpz_div_ui(t.data(), t.data(), i); +} +inline void add(gmp_int& t, long i) +{ + if(i > 0) + mpz_add_ui(t.data(), t.data(), i); + else + mpz_sub_ui(t.data(), t.data(), -i); +} +inline void subtract(gmp_int& t, long i) +{ + if(i > 0) + mpz_sub_ui(t.data(), t.data(), i); + else + mpz_add_ui(t.data(), t.data(), -i); +} +inline void multiply(gmp_int& t, long i) +{ + mpz_mul_ui(t.data(), t.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} +inline void modulus(gmp_int& t, long i) +{ + bool neg = mpz_sgn(t.data()) < 0; + bool neg2 = i < 0; + mpz_mod_ui(t.data(), t.data(), std::abs(i)); + if(neg) + { + if(!neg2) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), std::abs(i)); + t.negate(); + } + else + { + mpz_sub_ui(t.data(), t.data(), std::abs(i)); + } + } +} +inline void divide(gmp_int& t, long i) +{ + mpz_div_ui(t.data(), t.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} +template +inline void left_shift(gmp_int& t, UI i) +{ + mpz_mul_2exp(t.data(), t.data(), static_cast(i)); +} +template +inline void right_shift(gmp_int& t, UI i) +{ + mpz_fdiv_q_2exp(t.data(), t.data(), static_cast(i)); +} +template +inline void left_shift(gmp_int& t, const gmp_int& v, UI i) +{ + mpz_mul_2exp(t.data(), v.data(), static_cast(i)); +} +template +inline void right_shift(gmp_int& t, const gmp_int& v, UI i) +{ + mpz_fdiv_q_2exp(t.data(), v.data(), static_cast(i)); +} + +inline void bitwise_and(gmp_int& result, const gmp_int& v) +{ + mpz_and(result.data(), result.data(), v.data()); +} + +inline void bitwise_or(gmp_int& result, const gmp_int& v) +{ + mpz_ior(result.data(), result.data(), v.data()); +} + +inline void bitwise_xor(gmp_int& result, const gmp_int& v) +{ + mpz_xor(result.data(), result.data(), v.data()); +} + +inline void add(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_add(t.data(), p.data(), o.data()); +} +inline void subtract(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_sub(t.data(), p.data(), o.data()); +} +inline void multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_mul(t.data(), p.data(), o.data()); +} +inline void divide(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + mpz_div(t.data(), p.data(), o.data()); +} +inline void modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) +{ + bool neg = mpz_sgn(p.data()) < 0; + bool neg2 = mpz_sgn(o.data()) < 0; + mpz_mod(t.data(), p.data(), o.data()); + if(neg) + { + if(!neg2) + t.negate(); + mpz_add(t.data(), t.data(), o.data()); + if(!neg2) + t.negate(); + } +} +inline void add(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_add_ui(t.data(), p.data(), i); +} +inline void subtract(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_sub_ui(t.data(), p.data(), i); +} +inline void multiply(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_mul_ui(t.data(), p.data(), i); +} +inline void modulus(gmp_int& t, const gmp_int& p, unsigned long i) +{ + bool neg = mpz_sgn(p.data()) < 0; + mpz_mod_ui(t.data(), p.data(), i); + if(neg) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), i); + t.negate(); + } +} +inline void divide(gmp_int& t, const gmp_int& p, unsigned long i) +{ + mpz_div_ui(t.data(), p.data(), i); +} +inline void add(gmp_int& t, const gmp_int& p, long i) +{ + if(i > 0) + mpz_add_ui(t.data(), p.data(), i); + else + mpz_sub_ui(t.data(), p.data(), -i); +} +inline void subtract(gmp_int& t, const gmp_int& p, long i) +{ + if(i > 0) + mpz_sub_ui(t.data(), p.data(), i); + else + mpz_add_ui(t.data(), p.data(), -i); +} +inline void multiply(gmp_int& t, const gmp_int& p, long i) +{ + mpz_mul_ui(t.data(), p.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} +inline void modulus(gmp_int& t, const gmp_int& p, long i) +{ + bool neg = mpz_sgn(p.data()) < 0; + bool neg2 = i < 0; + mpz_mod_ui(t.data(), p.data(), std::abs(i)); + if(neg) + { + if(!neg2) + { + t.negate(); + mpz_add_ui(t.data(), t.data(), std::abs(i)); + t.negate(); + } + else + { + mpz_sub_ui(t.data(), t.data(), std::abs(i)); + } + } +} +inline void divide(gmp_int& t, const gmp_int& p, long i) +{ + mpz_div_ui(t.data(), p.data(), std::abs(i)); + if(i < 0) + mpz_neg(t.data(), t.data()); +} + +inline void bitwise_and(gmp_int& result, const gmp_int& u, const gmp_int& v) +{ + mpz_and(result.data(), u.data(), v.data()); +} + +inline void bitwise_or(gmp_int& result, const gmp_int& u, const gmp_int& v) +{ + mpz_ior(result.data(), u.data(), v.data()); +} + +inline void bitwise_xor(gmp_int& result, const gmp_int& u, const gmp_int& v) +{ + mpz_xor(result.data(), u.data(), v.data()); +} + +inline void complement(gmp_int& result, const gmp_int& u) +{ + mpz_com(result.data(), u.data()); +} + +inline bool is_zero(const gmp_int& val) +{ + return mpz_sgn(val.data()) == 0; +} +inline int get_sign(const gmp_int& val) +{ + return mpz_sgn(val.data()); +} +inline void convert_to(unsigned long* result, const gmp_int& val) +{ + *result = mpz_get_ui(val.data()); +} +inline void convert_to(long* result, const gmp_int& val) +{ + *result = mpz_get_si(val.data()); +} +inline void convert_to(double* result, const gmp_int& val) +{ + *result = mpz_get_d(val.data()); +} + +inline void eval_abs(gmp_int& result, const gmp_int& val) +{ + mpz_abs(result.data(), val.data()); +} + +struct gmp_rational; +void add(gmp_rational& t, const gmp_rational& o); + +struct gmp_rational +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + gmp_rational() + { + mpq_init(this->m_data); + } + gmp_rational(const gmp_rational& o) + { + mpq_init(m_data); + mpq_set(m_data, o.m_data); + } + gmp_rational& operator = (const gmp_rational& o) + { + mpq_set(m_data, o.m_data); + return *this; + } + gmp_rational& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpq_t t; + mpq_init(m_data); + mpq_init(t); + while(i) + { + mpq_set_ui(t, static_cast(i & mask), 1); + if(shift) + mpq_mul_2exp(t, t, shift); + mpq_add(m_data, m_data, t); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpq_clear(t); + return *this; + } + gmp_rational& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpq_neg(m_data, m_data); + return *this; + } + gmp_rational& operator = (unsigned long i) + { + mpq_set_ui(m_data, i, 1); + return *this; + } + gmp_rational& operator = (long i) + { + mpq_set_si(m_data, i, 1); + return *this; + } + gmp_rational& operator = (double d) + { + mpq_set_d(m_data, d); + return *this; + } + gmp_rational& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + using big_num_default_ops::add; + using big_num_default_ops::subtract; + + if (a == 0) { + mpq_set_si(m_data, 0, 1); + return *this; + } + + if (a == 1) { + mpq_set_si(m_data, 1, 1); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpq_init(m_data); + mpq_set_ui(m_data, 0u, 1); + gmp_rational t; + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpq_mul_2exp(m_data, m_data, shift); + t = static_cast(term); + add(*this, t); + f -= term; + } + if(e > 0) + mpq_mul_2exp(m_data, m_data, e); + else if(e < 0) + mpq_div_2exp(m_data, m_data, -e); + return *this; + } + gmp_rational& operator = (const char* s) + { + mpq_set_str(m_data, s, 10); + return *this; + } + void swap(gmp_rational& o) + { + mpq_swap(m_data, o.m_data); + } + std::string str(unsigned /*digits*/, bool /*scientific*/)const + { + void *(*alloc_func_ptr) (size_t); + void *(*realloc_func_ptr) (void *, size_t, size_t); + void (*free_func_ptr) (void *, size_t); + const char* ps = mpq_get_str (0, 10, m_data); + std::string s = ps; + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + return s; + } + ~gmp_rational() + { + mpq_clear(m_data); + } + void negate() + { + mpq_neg(m_data, m_data); + } + int compare(const gmp_rational& o)const + { + return mpq_cmp(m_data, o.m_data); + } + template + int compare(V v)const + { + gmp_rational d; + d = v; + return compare(d); + } + int compare(unsigned long v) + { + return mpq_cmp_ui(m_data, v, 1); + } + int compare(long v) + { + return mpq_cmp_si(m_data, v, 1); + } + mpq_t& data() { return m_data; } + const mpq_t& data()const { return m_data; } +protected: + mpq_t m_data; +}; + +inline void add(gmp_rational& t, const gmp_rational& o) +{ + mpq_add(t.data(), t.data(), o.data()); +} +inline void subtract(gmp_rational& t, const gmp_rational& o) +{ + mpq_sub(t.data(), t.data(), o.data()); +} +inline void multiply(gmp_rational& t, const gmp_rational& o) +{ + mpq_mul(t.data(), t.data(), o.data()); +} +inline void divide(gmp_rational& t, const gmp_rational& o) +{ + mpq_div(t.data(), t.data(), o.data()); +} +inline void add(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_add(t.data(), p.data(), o.data()); +} +inline void subtract(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_sub(t.data(), p.data(), o.data()); +} +inline void multiply(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_mul(t.data(), p.data(), o.data()); +} +inline void divide(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +{ + mpq_div(t.data(), p.data(), o.data()); +} + +inline bool is_zero(const gmp_rational& val) +{ + return mpq_sgn(val.data()) == 0; +} +inline int get_sign(const gmp_rational& val) +{ + return mpq_sgn(val.data()); +} +inline void convert_to(double* result, const gmp_rational& val) +{ + *result = mpq_get_d(val.data()); +} + +inline void convert_to(long* result, const gmp_rational& val) +{ + double r; + convert_to(&r, val); + *result = r; +} + +inline void convert_to(unsigned long* result, const gmp_rational& val) +{ + double r; + convert_to(&r, val); + *result = r; +} + +inline void eval_abs(gmp_rational& result, const gmp_rational& val) +{ + mpq_abs(result.data(), val.data()); +} + +template<> +struct number_category : public mpl::int_{}; +template<> +struct number_category : public mpl::int_{}; + +typedef mp_number > mpf_real_50; +typedef mp_number > mpf_real_100; +typedef mp_number > mpf_real_500; +typedef mp_number > mpf_real_1000; +typedef mp_number > mpf_real; +typedef mp_number mpz_int; +typedef mp_number mpq_rational; + +}} // namespaces + +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +// +// numeric_limits [partial] specializations for the types declared in this header: +// +template +class numeric_limits > > +{ + typedef boost::math::mp_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_mul_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX - 1); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept + { + return -(max)(); + } + BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + BOOST_STATIC_CONSTEXPR int digits10 = Digits10; + // Is this really correct??? + BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1); + } + return value.second; + } + // What value should this be???? + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), digits); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR long min_exponent = LONG_MIN; + BOOST_STATIC_CONSTEXPR long min_exponent10 = (LONG_MIN / 1000) * 301L; + BOOST_STATIC_CONSTEXPR long max_exponent = LONG_MAX; + BOOST_STATIC_CONSTEXPR long max_exponent10 = (LONG_MAX / 1000) * 301L; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = true; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_to_nearest; + +private: + struct data_initializer + { + data_initializer() + { + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); + } + void do_nothing()const{} + }; + static const data_initializer initializer; +}; + +template +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; + +template<> +class numeric_limits > > +{ + typedef boost::math::mp_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = false; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = false; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 0; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +template<> +class numeric_limits +{ + typedef boost::math::mpz_int number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return (min)(); } + // Digits are unbounded, use zero for now: + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +#ifdef BOOST_NO_NOEXCEPT +# undef noexcept +#endif + +} // namespace std + +#endif diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp new file mode 100644 index 00000000..fc2f2f75 --- /dev/null +++ b/include/boost/multiprecision/mp_number.hpp @@ -0,0 +1,1570 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_EXTENDED_REAL_HPP +#define BOOST_MATH_EXTENDED_REAL_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace math{ + +template +class mp_number +{ + typedef mp_number self_type; +public: + mp_number(){} + mp_number(const mp_number& e) : m_backend(e.m_backend){} + template + mp_number(V v, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + { + m_backend = canonical_value(v); + } + mp_number(const mp_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} + template + mp_number(V v, unsigned digits10, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + { + m_backend.precision(digits10); + m_backend = canonical_value(v); + } + + template + mp_number(V v, typename enable_if, mpl::not_ > > >::type* dummy1 = 0) + : m_backend(v){} + + template + mp_number& operator=(const detail::mp_exp& e) + { + do_assign(e, tag()); + return *this; + } + + mp_number& operator=(const mp_number& e) + { + m_backend = e.m_backend; + return *this; + } + + template + typename enable_if, is_same, is_convertible >, mp_number& >::type + operator=(const V& v) + { + m_backend = canonical_value(v); + return *this; + } + + template + mp_number(const detail::mp_exp& e) + { + do_assign(e, tag()); + } + +#ifndef BOOST_NO_RVALUE_REFERENCES + mp_number(mp_number&& r) : m_backend(r.m_backend){} + mp_number& operator=(mp_number&& r) + { + m_backend.swap(r.m_backend); + return *this; + } +#endif + + mp_number& operator+=(const self_type& val) + { + do_add(detail::mp_exp(val), detail::terminal()); + return *this; + } + + template + mp_number& operator+=(const detail::mp_exp& e) + { + // Create a copy if e contains this, but not if we're just doing a + // x *= x + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_add(detail::mp_exp(temp), detail::terminal()); + } + else + { + do_add(e, tag()); + } + return *this; + } + + template + typename enable_if, mp_number& >::type + operator+=(const V& v) + { + using big_num_default_ops::add; + add(m_backend, canonical_value(v)); + return *this; + } + + mp_number& operator-=(const self_type& val) + { + do_subtract(detail::mp_exp(val), detail::terminal()); + return *this; + } + + template + mp_number& operator-=(const detail::mp_exp& e) + { + // Create a copy if e contains this, but not if we're just doing a + if(contains_self(e)) + { + self_type temp(e); + do_subtract(temp, typename self_type::tag_type()); + } + else + { + do_subtract(e, typename Exp::tag_type()); + } + return *this; + } + + template + typename enable_if, mp_number& >::type + operator-=(const V& v) + { + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(v)); + return *this; + } + + + mp_number& operator *= (const self_type& e) + { + do_multiplies(detail::mp_exp(e), detail::terminal()); + return *this; + } + + template + mp_number& operator*=(const detail::mp_exp& e) + { + // Create a temporary if the RHS references *this, but not + // if we're just doing an x += x; + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_multiplies(detail::mp_exp(temp), detail::terminal()); + } + else + { + do_multiplies(e, typename Exp::tag_type()); + } + return *this; + } + + template + typename enable_if, mp_number& >::type + operator*=(const V& v) + { + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(v)); + return *this; + } + + mp_number& operator%=(const self_type& e) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + do_modulus(detail::mp_exp(e), detail::terminal()); + return *this; + } + template + mp_number& operator%=(const detail::mp_exp& e) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + // Create a temporary if the RHS references *this: + if(contains_self(e)) + { + self_type temp(e); + do_modulus(temp, typename self_type::tag_type()); + } + else + { + do_modulus(e, typename Exp::tag_type()); + } + return *this; + } + template + typename enable_if, mp_number& >::type + operator%=(const V& v) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + using big_num_default_ops::modulus; + modulus(m_backend, canonical_value(v)); + return *this; + } + + // + // These operators are *not* proto-ized. + // The issue is that the increment/decrement must happen + // even if the result of the operator *is never used*. + // Possibly we could modify our expression wrapper to + // execute the increment/decrement on destruction, but + // correct implemetation will be tricky, so defered for now... + // + mp_number& operator++() + { + using big_num_default_ops::increment; + increment(m_backend); + return *this; + } + + mp_number& operator--() + { + using big_num_default_ops::decrement; + decrement(m_backend); + return *this; + } + + mp_number operator++(int) + { + using big_num_default_ops::increment; + self_type temp(*this); + increment(m_backend); + return temp; + } + + mp_number operator--(int) + { + using big_num_default_ops::decrement; + self_type temp(*this); + decrement(m_backend); + return temp; + } + + template + typename enable_if, mp_number&>::type operator <<= (V val) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left-shift operation is only valid for integer types"); + check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); + left_shift(m_backend, canonical_value(val)); + return *this; + } + + template + typename enable_if, mp_number&>::type operator >>= (V val) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right-shift operation is only valid for integer types"); + check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); + right_shift(m_backend, canonical_value(val)); + return *this; + } + + mp_number& operator /= (const self_type& e) + { + do_divide(detail::mp_exp(e), detail::terminal()); + return *this; + } + + template + mp_number& operator/=(const detail::mp_exp& e) + { + // Create a temporary if the RHS references *this: + if(contains_self(e)) + { + self_type temp(e); + do_divide(detail::mp_exp(temp), typename self_type::tag_type()); + } + else + { + do_divide(e, typename Exp::tag_type()); + } + return *this; + } + + template + typename enable_if, mp_number& >::type + operator/=(const V& v) + { + using big_num_default_ops::divide; + divide(m_backend, canonical_value(v)); + return *this; + } + + mp_number& operator&=(const self_type& e) + { + do_bitwise_and(detail::mp_exp(e), detail::terminal()); + return *this; + } + + template + mp_number& operator&=(const detail::mp_exp& e) + { + // Create a temporary if the RHS references *this, but not + // if we're just doing an x &= x; + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_bitwise_and(temp, typename self_type::tag_type()); + } + else + { + do_bitwise_and(e, typename Exp::tag_type()); + } + return *this; + } + + template + typename enable_if, mp_number& >::type + operator&=(const V& v) + { + using big_num_default_ops::bitwise_and; + bitwise_and(m_backend, canonical_value(v)); + return *this; + } + + mp_number& operator|=(const self_type& e) + { + do_bitwise_or(detail::mp_exp(e), detail::terminal()); + return *this; + } + + template + mp_number& operator|=(const detail::mp_exp& e) + { + // Create a temporary if the RHS references *this, but not + // if we're just doing an x |= x; + if(contains_self(e) && !is_self(e)) + { + self_type temp(e); + do_bitwise_or(temp, typename self_type::tag_type()); + } + else + { + do_bitwise_or(e, typename Exp::tag_type()); + } + return *this; + } + + template + typename enable_if, mp_number& >::type + operator|=(const V& v) + { + using big_num_default_ops::bitwise_or; + bitwise_or(m_backend, canonical_value(v)); + return *this; + } + + mp_number& operator^=(const self_type& e) + { + do_bitwise_xor(detail::mp_exp(e), detail::terminal()); + return *this; + } + + template + mp_number& operator^=(const detail::mp_exp& e) + { + if(contains_self(e)) + { + self_type temp(e); + do_bitwise_xor(temp, typename self_type::tag_type()); + } + else + { + do_bitwise_xor(e, typename Exp::tag_type()); + } + return *this; + } + + template + typename enable_if, mp_number& >::type + operator^=(const V& v) + { + using big_num_default_ops::bitwise_xor; + bitwise_xor(m_backend, canonical_value(v)); + return *this; + } + // + // Use in boolean context: + // + typedef bool (self_type::*unmentionable_type)()const; + + operator unmentionable_type()const + { + return is_zero() ? 0 : &self_type::is_zero; + } + + // + // swap: + // + void swap(self_type& other) + { + m_backend.swap(other.backend()); + } + // + // Zero and sign: + // + bool is_zero()const + { + using big_num_default_ops::is_zero; + return is_zero(m_backend); + } + int sign()const + { + using big_num_default_ops::get_sign; + return get_sign(m_backend); + } + // + // String conversion functions: + // + std::string str(unsigned digits = 0, bool scientific = true)const + { + return m_backend.str(digits, scientific); + } + template + T convert_to()const + { + using big_num_default_ops::convert_to; + T result; + convert_to(&result, m_backend); + return result; + } + // + // Default precision: + // + static unsigned default_precision() + { + return Backend::default_precision(); + } + static void default_precision(unsigned digits10) + { + Backend::default_precision(digits10); + } + unsigned precision()const + { + return m_backend.precision(); + } + void precision(unsigned digits10) + { + m_backend.precision(digits10); + } + // + // Comparison: + // + int compare(const mp_number& o)const + { + return m_backend.compare(o.m_backend); + } + template + typename enable_if, int>::type compare(const V& o)const + { + using big_num_default_ops::get_sign; + if(o == 0) + return get_sign(m_backend); + return m_backend.compare(canonical_value(o)); + } + Backend& backend() + { + return m_backend; + } + const Backend& backend()const + { + return m_backend; + } +private: + template + void check_shift_range(V val, const mpl::true_&, const mpl::true_&) + { + if(val > (std::numeric_limits::max)()) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); + if(val < 0) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); + } + template + void check_shift_range(V val, const mpl::false_&, const mpl::true_&) + { + if(val < 0) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); + } + template + void check_shift_range(V val, const mpl::true_&, const mpl::false_&) + { + if(val > (std::numeric_limits::max)()) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); + } + template + void check_shift_range(V val, const mpl::false_&, const mpl::false_&){} + + template + void do_assign(const Exp& e, const detail::add_immediates&) + { + using big_num_default_ops::add; + add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } +/* + template + void do_assign(const Exp& e, const detail::add_and_negate_immediates&) + { + using big_num_default_ops::add; + add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + m_backend.negate(); + } +*/ + template + void do_assign(const Exp& e, const detail::subtract_immediates&) + { + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + /* + template + void do_assign(const Exp& e, const detail::subtract_and_negate_immediates&) + { + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + m_backend.negate(); + } + */ + template + void do_assign(const Exp& e, const detail::multiply_immediates&) + { + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + + template + void do_assign(const Exp& e, const detail::divide_immediates&) + { + using big_num_default_ops::divide; + divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + +#if 0 + template + void do_assign(const Exp& e, const detail::multiply_and_negate_immediates&) + { + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + m_backend.negate(); + } + + template + void do_assign(const Exp& e, const detail::divide_and_negate_immediates&) + { + using big_num_default_ops::divide; + divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + m_backend.negate(); + } + + template + void do_assign(const Exp& e, const detail::unary_plus&) + { + typedef typename Exp::left_type left_type; + do_assign(e.left(), typename left_type::tag_type()); + } + +#endif + template + void do_assign(const Exp& e, const detail::negate&) + { + typedef typename Exp::left_type left_type; + do_assign(e.left(), typename left_type::tag_type()); + m_backend.negate(); + } + template + void do_assign(const Exp& e, const detail::plus&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just add the right: + do_add(e.right(), typename right_type::tag_type()); + } + else if(br && is_self(e.right())) + { + // Ignore the right node, it's *this, just add the left: + do_add(e.left(), typename left_type::tag_type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else if(left_depth >= right_depth) + { + do_assign(e.left(), typename left_type::tag_type()); + do_add(e.right(), typename right_type::tag_type()); + } + else + { + do_assign(e.right(), typename right_type::tag_type()); + do_add(e.left(), typename left_type::tag_type()); + } + } + template + void do_assign(const Exp& e, const detail::minus&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just subtract the right: + do_subtract(e.right(), typename right_type::tag_type()); + } + else if(br && is_self(e.right())) + { + // Ignore the right node, it's *this, just subtract the left and negate the result: + do_subtract(e.left(), typename left_type::tag_type()); + m_backend.negate(); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else if(left_depth >= right_depth) + { + do_assign(e.left(), typename left_type::tag_type()); + do_subtract(e.right(), typename right_type::tag_type()); + } + else + { + do_assign(e.right(), typename right_type::tag_type()); + do_subtract(e.left(), typename left_type::tag_type()); + m_backend.negate(); + } + } + template + void do_assign(const Exp& e, const detail::multiplies&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just add the right: + do_multiplies(e.right(), typename right_type::tag_type()); + } + else if(br && is_self(e.right())) + { + // Ignore the right node, it's *this, just add the left: + do_multiplies(e.left(), typename left_type::tag_type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else if(left_depth >= right_depth) + { + do_assign(e.left(), typename left_type::tag_type()); + do_multiplies(e.right(), typename right_type::tag_type()); + } + else + { + do_assign(e.right(), typename right_type::tag_type()); + do_multiplies(e.left(), typename left_type::tag_type()); + } + } + template + void do_assign(const Exp& e, const detail::divides&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just add the right: + do_divide(e.right(), typename right_type::tag_type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else + { + do_assign(e.left(), typename left_type::tag_type()); + do_divide(e.right(), typename right_type::tag_type()); + } + } + template + void do_assign(const Exp& e, const detail::modulus&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just add the right: + do_modulus(e.right(), typename right_type::tag_type()); + } + else if(bl || br) + { + self_type temp(e); + temp.m_backend.swap(this->m_backend); + } + else + { + do_assign(e.left(), typename left_type::tag_type()); + do_modulus(e.right(), typename right_type::tag_type()); + } + } + template + void do_assign(const Exp& e, const detail::modulus_immediates&) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + using big_num_default_ops::modulus; + modulus(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + + template + void do_assign(const Exp& e, const detail::bitwise_and&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); + + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just add the right: + do_bitwise_and(e.right(), typename right_type::tag_type()); + } + else if(br && is_self(e.right())) + { + do_bitwise_and(e.left(), typename left_type::tag_type()); + } + else if(left_depth >= right_depth) + { + do_assign(e.left(), typename left_type::tag_type()); + do_bitwise_and(e.right(), typename right_type::tag_type()); + } + else + { + do_assign(e.right(), typename right_type::tag_type()); + do_bitwise_and(e.left(), typename left_type::tag_type()); + } + } + template + void do_assign(const Exp& e, const detail::bitwise_and_immediates&) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); + using big_num_default_ops::bitwise_and; + bitwise_and(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + + template + void do_assign(const Exp& e, const detail::bitwise_or&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); + + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just add the right: + do_bitwise_or(e.right(), typename right_type::tag_type()); + } + else if(br && is_self(e.right())) + { + do_bitwise_or(e.left(), typename left_type::tag_type()); + } + else if(left_depth >= right_depth) + { + do_assign(e.left(), typename left_type::tag_type()); + do_bitwise_or(e.right(), typename right_type::tag_type()); + } + else + { + do_assign(e.right(), typename right_type::tag_type()); + do_bitwise_or(e.left(), typename left_type::tag_type()); + } + } + template + void do_assign(const Exp& e, const detail::bitwise_or_immediates&) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); + using big_num_default_ops::bitwise_or; + bitwise_or(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + + template + void do_assign(const Exp& e, const detail::bitwise_xor&) + { + // + // This operation is only valid for integer backends: + // + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); + + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + + static int const left_depth = left_type::depth; + static int const right_depth = right_type::depth; + + bool bl = contains_self(e.left()); + bool br = contains_self(e.right()); + + if(bl && is_self(e.left())) + { + // Ignore the left node, it's *this, just add the right: + do_bitwise_xor(e.right(), typename right_type::tag_type()); + } + else if(br && is_self(e.right())) + { + do_bitwise_xor(e.left(), typename left_type::tag_type()); + } + else if(left_depth >= right_depth) + { + do_assign(e.left(), typename left_type::tag_type()); + do_bitwise_xor(e.right(), typename right_type::tag_type()); + } + else + { + do_assign(e.right(), typename right_type::tag_type()); + do_bitwise_xor(e.left(), typename left_type::tag_type()); + } + } + template + void do_assign(const Exp& e, const detail::bitwise_xor_immediates&) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); + using big_num_default_ops::bitwise_xor; + bitwise_xor(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + } + template + void do_assign(const Exp& e, const detail::terminal&) + { + if(!is_self(e)) + { + m_backend = canonical_value(e.value()); + } + } + template + void do_assign(const Exp& e, const detail::function&) + { + typedef typename Exp::arity tag_type; + do_assign_function(e, tag_type()); + } + template + void do_assign(const Exp& e, const detail::shift_left&) + { + // We can only shift by an integer value, not an arbitrary expression: + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + typedef typename right_type::arity right_arity; + BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); + typedef typename right_type::result_type right_value_type; + BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); + typedef typename left_type::tag_type tag_type; + do_assign_left_shift(e.left(), canonical_value(e.right().value()), tag_type()); + } + + template + void do_assign(const Exp& e, const detail::shift_right&) + { + // We can only shift by an integer value, not an arbitrary expression: + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + typedef typename right_type::arity right_arity; + BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); + typedef typename right_type::result_type right_value_type; + BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); + typedef typename left_type::tag_type tag_type; + do_assign_right_shift(e.left(), canonical_value(e.right().value()), tag_type()); + } + + template + void do_assign(const Exp& e, const detail::bitwise_complement&) + { + using big_num_default_ops::complement; + self_type temp(e.left()); + complement(m_backend, temp.backend()); + } + + template + void do_assign(const Exp& e, const detail::complement_immediates&) + { + using big_num_default_ops::complement; + complement(m_backend, canonical_value(e.left().value())); + } + + template + void do_assign_right_shift(const Exp& e, const Val& val, const detail::terminal&) + { + using big_num_default_ops::right_shift; + right_shift(m_backend, canonical_value(e.value()), val); + } + + template + void do_assign_left_shift(const Exp& e, const Val& val, const detail::terminal&) + { + using big_num_default_ops::left_shift; + left_shift(m_backend, canonical_value(e.value()), val); + } + + template + void do_assign_right_shift(const Exp& e, const Val& val, const Tag&) + { + using big_num_default_ops::right_shift; + self_type temp(e); + right_shift(m_backend, temp.backend(), val); + } + + template + void do_assign_left_shift(const Exp& e, const Val& val, const Tag&) + { + using big_num_default_ops::left_shift; + self_type temp(e); + left_shift(m_backend, temp.backend(), val); + } + + template + void do_assign_function(const Exp& e, const mpl::int_<1>&) + { + e.left().value()(&m_backend); + } + template + void do_assign_function(const Exp& e, const mpl::int_<2>&) + { + typedef typename Exp::right_type right_type; + typedef typename right_type::tag_type tag_type; + do_assign_function_1(e.left().value(), e.right(), tag_type()); + } + template + void do_assign_function_1(const F& f, const Exp& val, const detail::terminal&) + { + f(m_backend, canonical_value(val.value())); + } + template + void do_assign_function_1(const F& f, const Exp& val, const Tag&) + { + mp_number t(val); + f(m_backend, t.backend()); + } + template + void do_assign_function(const Exp& e, const mpl::int_<3>&) + { + typedef typename Exp::middle_type middle_type; + typedef typename middle_type::tag_type tag_type; + typedef typename Exp::right_type end_type; + typedef typename end_type::tag_type end_tag; + do_assign_function_2(e.left().value(), e.middle(), e.right(), tag_type(), end_tag()); + } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const detail::terminal&) + { + f(m_backend, canonical_value(val1.value()), canonical_value(val2.value())); + } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const detail::terminal&) + { + self_type temp1(val1); + f(m_backend, temp1.backend(), canonical_value(val2.value())); + } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const Tag2&) + { + self_type temp2(val2); + f(m_backend, canonical_value(val1.value()), temp2.backend()); + } + template + void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&) + { + self_type temp1(val1); + self_type temp2(val2); + f(m_backend, temp1.backend(), temp2.backend()); + } + + template + void do_add(const Exp& e, const detail::terminal&) + { + using big_num_default_ops::add; + add(m_backend, canonical_value(e.value())); + } + + template + void do_add(const Exp& e, const detail::negate&) + { + typedef typename Exp::left_type left_type; + do_subtract(e.left(), typename left_type::tag_type()); + } + + template + void do_add(const Exp& e, const detail::plus&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_add(e.left(), typename left_type::tag_type()); + do_add(e.right(), typename right_type::tag_type()); + } + + template + void do_add(const Exp& e, const detail::minus&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_add(e.left(), typename left_type::tag_type()); + do_subtract(e.right(), typename right_type::tag_type()); + } + + template + void do_add(const Exp& e, const unknown&) + { + self_type temp(e); + do_add(detail::mp_exp(temp), detail::terminal()); + } + + template + void do_add(const Exp& e, const detail::add_immediates&) + { + using big_num_default_ops::add; + add(m_backend, canonical_value(e.left().value())); + add(m_backend, canonical_value(e.right().value())); + } + template + void do_add(const Exp& e, const detail::subtract_immediates&) + { + using big_num_default_ops::add; + using big_num_default_ops::subtract; + add(m_backend, canonical_value(e.left().value())); + subtract(m_backend, canonical_value(e.right().value())); + } + template + void do_subtract(const Exp& e, const detail::terminal&) + { + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(e.value())); + } + + template + void do_subtract(const Exp& e, const detail::negate&) + { + typedef typename Exp::left_type left_type; + do_add(e.left(), typename left_type::tag_type()); + } + + template + void do_subtract(const Exp& e, const detail::plus&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_subtract(e.left(), typename left_type::tag_type()); + do_subtract(e.right(), typename right_type::tag_type()); + } + + template + void do_subtract(const Exp& e, const detail::minus&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_subtract(e.left(), typename left_type::tag_type()); + do_add(e.right(), typename right_type::tag_type()); + } + template + void do_subtract(const Exp& e, const detail::add_immediates&) + { + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(e.left().value())); + subtract(m_backend, canonical_value(e.right().value())); + } + template + void do_subtract(const Exp& e, const detail::subtract_immediates&) + { + using big_num_default_ops::add; + using big_num_default_ops::subtract; + subtract(m_backend, canonical_value(e.left().value())); + add(m_backend, canonical_value(e.right().value())); + } + template + void do_subtract(const Exp& e, const unknown&) + { + self_type temp(e); + do_subtract(detail::mp_exp(temp), detail::terminal()); + } + + template + void do_multiplies(const Exp& e, const detail::terminal&) + { + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(e.value())); + } + + template + void do_multiplies(const Exp& e, const detail::negate&) + { + typedef typename Exp::left_type left_type; + do_multiplies(e.left(), typename left_type::tag_type()); + m_backend.negate(); + } + + template + void do_multiplies(const Exp& e, const detail::multiplies&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_multiplies(e.left(), typename left_type::tag_type()); + do_multiplies(e.right(), typename right_type::tag_type()); + } + + template + void do_multiplies(const Exp& e, const detail::divides&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_multiplies(e.left(), typename left_type::tag_type()); + do_divide(e.right(), typename right_type::tag_type()); + } + + template + void do_multiplies(const Exp& e, const detail::multiply_immediates&) + { + using big_num_default_ops::multiply; + multiply(m_backend, canonical_value(e.left().value())); + multiply(m_backend, canonical_value(e.right().value())); + } + template + void do_multiplies(const Exp& e, const detail::divide_immediates&) + { + using big_num_default_ops::multiply; + using big_num_default_ops::divide; + multiply(m_backend, canonical_value(e.left().value())); + divide(m_backend, canonical_value(e.right().value())); + } + template + void do_multiplies(const Exp& e, const unknown&) + { + using big_num_default_ops::multiply; + self_type temp(e); + multiply(m_backend, temp.m_backend); + } + + template + void do_divide(const Exp& e, const detail::terminal&) + { + using big_num_default_ops::divide; + divide(m_backend, canonical_value(e.value())); + } + + template + void do_divide(const Exp& e, const detail::negate&) + { + typedef typename Exp::left_type left_type; + do_divide(e.left(), typename left_type::tag_type()); + m_backend.negate(); + } + + template + void do_divide(const Exp& e, const detail::multiplies&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_divide(e.left(), typename left_type::tag_type()); + do_divide(e.right(), typename right_type::tag_type()); + } + + template + void do_divide(const Exp& e, const detail::divides&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_divide(e.left(), typename left_type::tag_type()); + do_multiplies(e.right(), typename right_type::tag_type()); + } + + template + void do_divides(const Exp& e, const detail::multiply_immediates&) + { + using big_num_default_ops::divide; + divide(m_backend, canonical_value(e.left().value())); + divide(m_backend, canonical_value(e.right().value())); + } + template + void do_divides(const Exp& e, const detail::divide_immediates&) + { + using big_num_default_ops::multiply; + using big_num_default_ops::divide; + divide(m_backend, canonical_value(e.left().value())); + mutiply(m_backend, canonical_value(e.right().value())); + } + + template + void do_divide(const Exp& e, const unknown&) + { + using big_num_default_ops::multiply; + self_type temp(e); + divide(m_backend, temp.m_backend); + } + + template + void do_modulus(const Exp& e, const detail::terminal&) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + using big_num_default_ops::modulus; + modulus(m_backend, canonical_value(e.value())); + } + + template + void do_modulus(const Exp& e, const Unknown&) + { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); + using big_num_default_ops::modulus; + self_type temp(e); + modulus(m_backend, canonical_value(temp)); + } + + template + void do_bitwise_and(const Exp& e, const detail::terminal&) + { + using big_num_default_ops::bitwise_and; + bitwise_and(m_backend, canonical_value(e.value())); + } + template + void do_bitwise_and(const Exp& e, const detail::bitwise_and&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_bitwise_and(e.left(), typename left_type::tag_type()); + do_bitwise_and(e.right(), typename right_type::tag_type()); + } + template + void do_bitwise_and(const Exp& e, const unknown&) + { + using big_num_default_ops::bitwise_and; + self_type temp(e); + bitwise_and(m_backend, temp.m_backend); + } + + template + void do_bitwise_or(const Exp& e, const detail::terminal&) + { + using big_num_default_ops::bitwise_or; + bitwise_or(m_backend, canonical_value(e.value())); + } + template + void do_bitwise_or(const Exp& e, const detail::bitwise_or&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_bitwise_or(e.left(), typename left_type::tag_type()); + do_bitwise_or(e.right(), typename right_type::tag_type()); + } + template + void do_bitwise_or(const Exp& e, const unknown&) + { + using big_num_default_ops::bitwise_or; + self_type temp(e); + bitwise_or(m_backend, temp.m_backend); + } + + template + void do_bitwise_xor(const Exp& e, const detail::terminal&) + { + using big_num_default_ops::bitwise_xor; + bitwise_xor(m_backend, canonical_value(e.value())); + } + template + void do_bitwise_xor(const Exp& e, const detail::bitwise_xor&) + { + typedef typename Exp::left_type left_type; + typedef typename Exp::right_type right_type; + do_bitwise_xor(e.left(), typename left_type::tag_type()); + do_bitwise_xor(e.right(), typename right_type::tag_type()); + } + template + void do_bitwise_xor(const Exp& e, const unknown&) + { + using big_num_default_ops::bitwise_xor; + self_type temp(e); + bitwise_xor(m_backend, temp.m_backend); + } + + // Tests if the expression contains a reference to *this: + template + bool contains_self(const Exp& e)const + { + return contains_self(e, typename Exp::arity()); + } + template + bool contains_self(const Exp& e, mpl::int_<0> const&)const + { + return is_really_self(e.value()); + } + template + bool contains_self(const Exp& e, mpl::int_<1> const&)const + { + typedef typename Exp::left_type child_type; + return contains_self(e.left(), typename child_type::arity()); + } + template + bool contains_self(const Exp& e, mpl::int_<2> const&)const + { + typedef typename Exp::left_type child0_type; + typedef typename Exp::right_type child1_type; + return contains_self(e.left(), typename child0_type::arity()) + || contains_self(e.right(), typename child1_type::arity()); + } + template + bool contains_self(const Exp& e, mpl::int_<3> const&)const + { + typedef typename Exp::left_type child0_type; + typedef typename Exp::middle_type child1_type; + typedef typename Exp::right_type child2_type; + return contains_self(e.left(), typename child0_type::arity()) + || contains_self(e.middle(), typename child1_type::arity()) + || contains_self(e.right(), typename child2_type::arity()); + } + + // Test if the expression is a reference to *this: + template + bool is_self(const Exp& e)const + { + return is_self(e, typename Exp::arity()); + } + template + bool is_self(const Exp& e, mpl::int_<0> const&)const + { + return is_really_self(e.value()); + } + template + bool is_self(const Exp& e, mpl::int_ const&)const + { + return false; + } + + template + bool is_really_self(const Val&)const { return false; } + bool is_really_self(const self_type& v)const { return &v == this; } + + static const Backend& canonical_value(const self_type& v){ return v.m_backend; } + //static const Backend& canonical_value(const self_type* v){ return v->m_backend; } + //static const Backend& canonical_value(self_type* v){ return v->m_backend; } + //static const Backend& canonical_value(self_type& v){ return v.m_backend; } + template + static typename detail::canonical::type canonical_value(const V& v){ return v; } + static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } + Backend m_backend; +}; + +namespace detail +{ + +template +inline int big_number_compare(const mp_number& a, const mp_number& b) +{ + return a.compare(b); +} + +template +inline int big_number_compare(const mp_number& a, const mp_exp& b) +{ + return a.compare(mp_number(b)); +} + +template +inline int big_number_compare(const mp_exp& a, const mp_number& b) +{ + return -b.compare(mp_number(a)); +} + +template +inline int big_number_compare(const mp_number& a, const Val b) +{ + return a.compare(b); +} + +template +inline int big_number_compare(const Val a, const mp_number& b) +{ + return -b.compare(a); +} + +template +inline int big_number_compare(const mp_exp& a, const mp_exp& b) +{ + typedef typename mp_exp::result_type real1; + typedef typename mp_exp::result_type real2; + return real1(a).compare(real2(b)); +} + +template +inline typename enable_if, int>::type big_number_compare(const mp_exp& a, const Val b) +{ + typedef typename mp_exp::result_type real; + real t(a); + return t.compare(b); +} + +template +inline typename enable_if, int>::type big_number_compare(const Val a, const mp_exp& b) +{ + typedef typename mp_exp::result_type real; + return -real(b).compare(a); +} + +template +struct is_valid_comparison_imp +{ + typedef typename mpl::or_< + is_big_number, + is_big_number_exp + >::type is1; + typedef typename mpl::or_< + is_big_number, + is_big_number_exp + >::type is2; + typedef typename mpl::or_< + mpl::and_< + is1, + mpl::or_< + is2, + is_arithmetic + > + >, + mpl::and_< + is2, + mpl::or_< + is1, + is_arithmetic + > + > + >::type type; +}; + +template +struct is_valid_comparison : public boost::math::detail::is_valid_comparison_imp::type {}; + +} + + +template +inline typename boost::enable_if, bool>::type + operator == (const Exp1& a, const Exp2& b) +{ + return 0 == detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator != (const Exp1& a, const Exp2& b) +{ + return 0 != detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator <= (const Exp1& a, const Exp2& b) +{ + return 0 >= detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator < (const Exp1& a, const Exp2& b) +{ + return 0 > detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator >= (const Exp1& a, const Exp2& b) +{ + return 0 <= detail::big_number_compare(a, b); +} + +template +inline typename boost::enable_if, bool>::type + operator > (const Exp1& a, const Exp2& b) +{ + return 0 < detail::big_number_compare(a, b); +} + +template +inline std::ostream& operator << (std::ostream& os, const mp_number& r) +{ + return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); +} + +namespace detail{ + +template +inline std::ostream& operator << (std::ostream& os, const mp_exp& r) +{ + typedef typename mp_exp::result_type value_type; + value_type temp(r); + return os << temp; +} + +} // namespace detail + +template +inline std::istream& operator >> (std::istream& is, mp_number& r) +{ + std::string s; + is >> s; + r = s; + return is; +} + +}} // namespaces + +#endif diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp new file mode 100644 index 00000000..ad018505 --- /dev/null +++ b/include/boost/multiprecision/mpfr.hpp @@ -0,0 +1,952 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_BN_MPFR_HPP +#define BOOST_MATH_BN_MPFR_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace math{ + +template +struct mpfr_real_backend; + +namespace detail{ + +long get_default_precision() { return 50; } + +template +struct mpfr_real_imp +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + + mpfr_real_imp(){} + + mpfr_real_imp(const mpfr_real_imp& o) + { + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_set(m_data, o.m_data, GMP_RNDN); + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_imp(mpfr_real_imp&& o) + { + m_data[0] = o.m_data[0]; + o.m_data[0]._mpfr_d = 0; + } +#endif + mpfr_real_imp& operator = (const mpfr_real_imp& o) + { + mpfr_set(m_data, o.m_data, GMP_RNDN); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_imp& operator = (mpfr_real_imp&& o) + { + mpfr_swap(m_data, o.m_data); + return *this; + } +#endif + mpfr_real_imp& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpfr_t t; + mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(((digits10 + 1) * 1000L) / 301L))); + mpfr_set_ui(m_data, 0, GMP_RNDN); + while(i) + { + mpfr_set_ui(t, static_cast(i & mask), GMP_RNDN); + if(shift) + mpfr_mul_2exp(t, t, shift, GMP_RNDN); + mpfr_add(m_data, m_data, t, GMP_RNDN); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mpfr_clear(t); + return *this; + } + mpfr_real_imp& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mpfr_neg(m_data, m_data, GMP_RNDN); + return *this; + } + mpfr_real_imp& operator = (unsigned long i) + { + mpfr_set_ui(m_data, i, GMP_RNDN); + return *this; + } + mpfr_real_imp& operator = (long i) + { + mpfr_set_si(m_data, i, GMP_RNDN); + return *this; + } + mpfr_real_imp& operator = (double d) + { + mpfr_set_d(m_data, d, GMP_RNDN); + return *this; + } + mpfr_real_imp& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + mpfr_set_si(m_data, 0, GMP_RNDN); + return *this; + } + + if (a == 1) { + mpfr_set_si(m_data, 1, GMP_RNDN); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mpfr_init_set_ui(m_data, 0u, GMP_RNDN); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mpfr_mul_2exp(m_data, m_data, shift, GMP_RNDN); + if(term > 0) + mpfr_add_ui(m_data, m_data, static_cast(term), GMP_RNDN); + else + mpfr_sub_ui(m_data, m_data, static_cast(-term), GMP_RNDN); + f -= term; + } + if(e > 0) + mpfr_mul_2exp(m_data, m_data, e, GMP_RNDN); + else if(e < 0) + mpfr_div_2exp(m_data, m_data, -e, GMP_RNDN); + return *this; + } + mpfr_real_imp& operator = (const char* s) + { + mpfr_set_str(m_data, s, 10, GMP_RNDN); + return *this; + } + void swap(mpfr_real_imp& o) + { + mpfr_swap(m_data, o.m_data); + } + std::string str(unsigned digits, bool scientific)const + { + std::string result; + mp_exp_t e; + char* ps = mpfr_get_str (0, &e, 10, digits, m_data, GMP_RNDN); + std::ptrdiff_t sl = std::strlen(ps); + unsigned chars = sl; + if(sl == 0) + return "0"; + while(ps[chars-1] == '0') + --chars; + if(*ps == '-') + --chars; // number of digits excluding sign. + if(chars == 0) + return "0"; + if(!scientific + && (chars <= std::numeric_limits::digits10 + 1) + && (e >= (int)chars) + && (chars <= std::numeric_limits::digits10 + 1)) + { + result.assign(ps, (*ps == '-' ? chars+1 : chars)); + result.append(e-chars, '0'); + } + else + { + result = ps; + if(ps[0] == '-') + result.insert(2, 1, '.'); + else + result.insert(1, 1, '.'); + --e; + if(e) + result += "e" + lexical_cast(e); + } + mpfr_free_str(ps); + return result; + } + ~mpfr_real_imp() + { + if(m_data[0]._mpfr_d) + mpfr_clear(m_data); + } + void negate() + { + mpfr_neg(m_data, m_data, GMP_RNDN); + } + int compare(const mpfr_real_backend& o)const + { + return mpfr_cmp(m_data, o.m_data); + } + int compare(long i)const + { + return mpfr_cmp_si(m_data, i); + } + int compare(unsigned long i)const + { + return mpfr_cmp_ui(m_data, i); + } + template + int compare(V v)const + { + mpfr_real_backend d; + d = v; + return compare(d); + } + mpfr_t& data() { return m_data; } + const mpfr_t& data()const { return m_data; } +protected: + mpfr_t m_data; + static unsigned& get_default_precision() + { + static unsigned val = 50; + return val; + } +}; + +} // namespace detail + +template +struct mpfr_real_backend : public detail::mpfr_real_imp +{ + mpfr_real_backend() + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp(o) {} +#endif + mpfr_real_backend& operator=(const mpfr_real_backend& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend& operator=(mpfr_real_backend&& o) + { + *static_cast*>(this) = static_cast&&>(o); + return *this; + } +#endif + template + mpfr_real_backend& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } +}; + +template <> +struct mpfr_real_backend<0> : public detail::mpfr_real_imp<0> +{ + mpfr_real_backend() + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + } + mpfr_real_backend(unsigned digits10) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + } + mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp<0>(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp<0>(o) {} +#endif + mpfr_real_backend(const mpfr_real_backend& o, unsigned digits10) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + *this = o; + } + + mpfr_real_backend& operator=(const mpfr_real_backend& o) + { + *static_cast*>(this) = static_cast const&>(o); + return *this; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + mpfr_real_backend& operator=(mpfr_real_backend&& o) + { + *static_cast*>(this) = static_cast &&>(o); + return *this; + } +#endif + template + mpfr_real_backend& operator=(const V& v) + { + *static_cast*>(this) = v; + return *this; + } + static unsigned default_precision() + { + return get_default_precision(); + } + static void default_precision(unsigned v) + { + get_default_precision() = v; + } + unsigned precision()const + { + return mpfr_get_prec(this->m_data) * 301L / 1000 - 1; + } + void precision(unsigned digits10) + { + mpfr_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); + } +}; + +template +inline void add(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); +} +template +inline void multiply(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); +} +template +inline void divide(mpfr_real_backend& result, const mpfr_real_backend& o) +{ + mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); +} +template +inline void add(mpfr_real_backend& result, unsigned long i) +{ + mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& result, unsigned long i) +{ + mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); +} +template +inline void multiply(mpfr_real_backend& result, unsigned long i) +{ + mpfr_mul_ui(result.data(), result.data(), i, GMP_RNDN); +} +template +inline void divide(mpfr_real_backend& result, unsigned long i) +{ + mpfr_div_ui(result.data(), result.data(), i, GMP_RNDN); +} +template +inline void add(mpfr_real_backend& result, long i) +{ + if(i > 0) + mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); + else + mpfr_sub_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& result, long i) +{ + if(i > 0) + mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); + else + mpfr_add_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); +} +template +inline void multiply(mpfr_real_backend& result, long i) +{ + mpfr_mul_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); + if(i < 0) + mpfr_neg(result.data(), result.data(), GMP_RNDN); +} +template +inline void divide(mpfr_real_backend& result, long i) +{ + mpfr_div_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); + if(i < 0) + mpfr_neg(result.data(), result.data(), GMP_RNDN); +} +// +// Specialised 3 arg versions of the basic operators: +// +template +inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); +} +template +inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); + else + mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void add(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); +} +template +inline void add(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_ui_sub(a.data(), -x, y.data(), GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); + } + else + mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); + else + mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); +} +template +inline void subtract(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_add_ui(a.data(), y.data(), -x, GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); + } + else + mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); +} + +template +inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + { + mpfr_mul_ui(a.data(), x.data(), -y, GMP_RNDN); + a.negate(); + } + else + mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); +} +template +inline void multiply(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_mul_ui(a.data(), y.data(), -x, GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); + } + else + mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); +} + +template +inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +{ + mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); +} +template +inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +{ + mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +{ + if(y < 0) + { + mpfr_div_ui(a.data(), x.data(), -y, GMP_RNDN); + a.negate(); + } + else + mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); +} +template +inline void divide(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +{ + mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); +} +template +inline void divide(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +{ + if(x < 0) + { + mpfr_ui_div(a.data(), -x, y.data(), GMP_RNDN); + mpfr_neg(a.data(), a.data(), GMP_RNDN); + } + else + mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); +} + +template +inline bool is_zero(const mpfr_real_backend& val) +{ + return 0 != mpfr_zero_p(val.data()); +} +template +inline int get_sign(const mpfr_real_backend& val) +{ + return mpfr_sgn(val.data()); +} + +template +inline void convert_to(unsigned long* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_ui(val.data(), GMP_RNDN); +} +template +inline void convert_to(long* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_si(val.data(), GMP_RNDN); +} +#ifdef _MPFR_H_HAVE_INTMAX_T +template +inline void convert_to(boost::uintmax_t* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_uj(val.data(), GMP_RNDN); +} +template +inline void convert_to(boost::intmax_t* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_sj(val.data(), GMP_RNDN); +} +#endif +template +inline void convert_to(double* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_d(val.data(), GMP_RNDN); +} +template +inline void convert_to(long double* result, const mpfr_real_backend& val) +{ + *result = mpfr_get_ld(val.data(), GMP_RNDN); +} + +// +// Native non-member operations: +// +template +inline void eval_sqrt(mpfr_real_backend& result, const mpfr_real_backend& val) +{ + mpfr_sqrt(result.data(), val.data(), GMP_RNDN); +} + +template +inline void eval_abs(mpfr_real_backend& result, const mpfr_real_backend& val) +{ + mpfr_abs(result.data(), val.data(), GMP_RNDN); +} + +template +inline void eval_fabs(mpfr_real_backend& result, const mpfr_real_backend& val) +{ + mpfr_abs(result.data(), val.data(), GMP_RNDN); +} +template +inline void eval_ceil(mpfr_real_backend& result, const mpfr_real_backend& val) +{ + mpfr_ceil(result.data(), val.data()); +} +template +inline void eval_floor(mpfr_real_backend& result, const mpfr_real_backend& val) +{ + mpfr_floor(result.data(), val.data()); +} +template +inline void eval_trunc(mpfr_real_backend& result, const mpfr_real_backend& val) +{ + mpfr_trunc(result.data(), val.data()); +} +template +inline void eval_ldexp(mpfr_real_backend& result, const mpfr_real_backend& val, long e) +{ + if(e > 0) + mpfr_mul_2exp(result.data(), val.data(), e, GMP_RNDN); + else if(e < 0) + mpfr_div_2exp(result.data(), val.data(), -e, GMP_RNDN); +} +template +inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, int* e) +{ + long v; + mpfr_get_d_2exp(&v, val.data(), GMP_RNDN); + *e = v; + eval_ldexp(result, val, -v); +} +template +inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, long* e) +{ + mpfr_get_d_2exp(e, val.data(), GMP_RNDN); + return eval_ldexp(result, val, -*e); +} + +template +inline int eval_fpclassify(const mpfr_real_backend& val) +{ + return mpfr_inf_p(val.data()) ? FP_INFINITE : mpfr_nan_p(val.data()) ? FP_NAN : mpfr_zero_p(val.data()) ? FP_ZERO : FP_NORMAL; +} + +template +inline void eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const mpfr_real_backend& e) +{ + mpfr_pow(result.data(), b.data(), e.data(), GMP_RNDN); +} + +template +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) +{ + mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN); +} + +template +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) +{ + mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN); +} + +template +inline void eval_exp(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_exp(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_log(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_log(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_sin(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_sin(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_cos(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_cos(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_tan(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_tan(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_asin(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_asin(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_acos(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_acos(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_atan(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_atan(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_sinh(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_sinh(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_cosh(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_cosh(result.data(), arg.data(), GMP_RNDN); +} + +template +inline void eval_tanh(mpfr_real_backend& result, const mpfr_real_backend& arg) +{ + mpfr_tanh(result.data(), arg.data(), GMP_RNDN); +} + +typedef mp_number > mpfr_real_50; +typedef mp_number > mpfr_real_100; +typedef mp_number > mpfr_real_500; +typedef mp_number > mpfr_real_1000; +typedef mp_number > mpfr_real; + +namespace lanczos{ + +template +struct lanczos >, Policy> +{ + typedef typename mpl::if_c< + Digits10 <= 36, + lanczos22UDT, + typename mpl::if_c< + Digits10 <= 50, + lanczos31UDT, + typename mpl::if_c< + Digits10 <= 110, + lanczos61UDT, + undefined_lanczos + >::type + >::type + >::type type; +}; + +} // namespace lanczos + + +}} // namespaces + +namespace std{ + +#ifdef BOOST_NO_NOEXCEPT +# define noexcept +#endif + +// +// numeric_limits [partial] specializations for the types declared in this header: +// +template +class numeric_limits > > +{ + typedef boost::math::mp_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 0.5; + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), -mpfr_get_emin(), GMP_RNDN); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 0.5; + mpfr_mul_2exp(value.second.backend().data(), value.second.backend().data(), mpfr_get_emax(), GMP_RNDN); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept + { + return -(max)(); + } + BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + BOOST_STATIC_CONSTEXPR int digits10 = Digits10; + // Is this really correct??? + BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept + { + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1, GMP_RNDN); + } + return value.second; + } + // What value should this be???? + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), digits, GMP_RNDN); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR long min_exponent = MPFR_EMIN_DEFAULT; + BOOST_STATIC_CONSTEXPR long min_exponent10 = (MPFR_EMIN_DEFAULT / 1000) * 301L; + BOOST_STATIC_CONSTEXPR long max_exponent = MPFR_EMAX_DEFAULT; + BOOST_STATIC_CONSTEXPR long max_exponent10 = (MPFR_EMAX_DEFAULT / 1000) * 301L; + BOOST_STATIC_CONSTEXPR bool has_infinity = true; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = true; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_set_inf(value.second.backend().data(), 1); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept + { + // returns epsilon/2 + initializer.do_nothing(); + static std::pair value; + if(!value.first) + { + value.first = true; + value.second = 1; + mpfr_set_nan(value.second.backend().data()); + } + return value.second; + } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept + { + return number_type(0); + } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = true; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_to_nearest; + +private: + struct data_initializer + { + data_initializer() + { + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); + std::numeric_limits > >::infinity(); + std::numeric_limits > >::quiet_NaN(); + } + void do_nothing()const{} + }; + static const data_initializer initializer; +}; + +template +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; + +template<> +class numeric_limits > > +{ + typedef boost::math::mp_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = false; + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = false; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR int radix = 0; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +#ifdef noexcept +#undef noexcept +#endif + +} // namespace std +#endif From 73960e2a46a54fbcdf792f834e28ffa48dff4306 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 26 Sep 2011 17:00:44 +0000 Subject: [PATCH 025/256] Giant file and directory rename: changed directory name from math to multiprecision and updated code to match. [SVN r74579] --- Jamroot.jam | 9 + boost-build.jam | 72 + config/Jamfile.v2 | 45 + config/has_e_float.cpp | 17 + config/has_gcc_visibility.cpp | 13 + config/has_gmp.cpp | 7 + config/has_gmpxx.cpp | 7 + config/has_long_double_support.cpp | 10 + config/has_mpfr.cpp | 7 + config/has_mpfr_class.cpp | 14 + config/has_mpreal.cpp | 14 + config/has_ntl_rr.cpp | 12 + doc/Jamfile.v2 | 67 + doc/big_number.qbk | 207 +++ doc/html/boost_bignumbers/intro.html | 44 + doc/html/boost_bignumbers/ref.html | 40 + .../boost_bignumbers/ref/backendconc.html | 38 + doc/html/boost_bignumbers/ref/bignum.html | 151 ++ doc/html/boost_bignumbers/tut.html | 44 + doc/html/boost_bignumbers/tut/ints.html | 146 ++ doc/html/boost_bignumbers/tut/reals.html | 158 +++ doc/html/boostbook.css | 588 ++++++++ doc/html/images/blank.png | Bin 0 -> 374 bytes doc/html/images/caution.png | Bin 0 -> 1250 bytes doc/html/images/caution.svg | 68 + doc/html/images/draft.png | Bin 0 -> 17454 bytes doc/html/images/home.png | Bin 0 -> 358 bytes doc/html/images/home.svg | 26 + doc/html/images/important.png | Bin 0 -> 722 bytes doc/html/images/important.svg | 25 + doc/html/images/next.png | Bin 0 -> 336 bytes doc/html/images/next.svg | 19 + doc/html/images/next_disabled.png | Bin 0 -> 1110 bytes doc/html/images/note.png | Bin 0 -> 490 bytes doc/html/images/note.svg | 33 + doc/html/images/prev.png | Bin 0 -> 334 bytes doc/html/images/prev.svg | 19 + doc/html/images/prev_disabled.png | Bin 0 -> 1109 bytes doc/html/images/tip.png | Bin 0 -> 449 bytes doc/html/images/tip.svg | 84 ++ doc/html/images/toc-blank.png | Bin 0 -> 318 bytes doc/html/images/toc-minus.png | Bin 0 -> 259 bytes doc/html/images/toc-plus.png | Bin 0 -> 264 bytes doc/html/images/up.png | Bin 0 -> 370 bytes doc/html/images/up.svg | 19 + doc/html/images/up_disabled.png | Bin 0 -> 1115 bytes doc/html/images/warning.png | Bin 0 -> 1241 bytes doc/html/images/warning.svg | 23 + doc/html/index.html | 53 + test/Jamfile.v2 | 189 +++ test/big_number_concept_check.cpp | 100 ++ test/linpack-benchmark.cpp | 1257 +++++++++++++++++ test/test_arithmetic.cpp | 894 ++++++++++++ test/test_numeric_limits.cpp | 173 +++ 54 files changed, 4692 insertions(+) create mode 100644 Jamroot.jam create mode 100644 boost-build.jam create mode 100644 config/Jamfile.v2 create mode 100644 config/has_e_float.cpp create mode 100644 config/has_gcc_visibility.cpp create mode 100644 config/has_gmp.cpp create mode 100644 config/has_gmpxx.cpp create mode 100644 config/has_long_double_support.cpp create mode 100644 config/has_mpfr.cpp create mode 100644 config/has_mpfr_class.cpp create mode 100644 config/has_mpreal.cpp create mode 100644 config/has_ntl_rr.cpp create mode 100644 doc/Jamfile.v2 create mode 100644 doc/big_number.qbk create mode 100644 doc/html/boost_bignumbers/intro.html create mode 100644 doc/html/boost_bignumbers/ref.html create mode 100644 doc/html/boost_bignumbers/ref/backendconc.html create mode 100644 doc/html/boost_bignumbers/ref/bignum.html create mode 100644 doc/html/boost_bignumbers/tut.html create mode 100644 doc/html/boost_bignumbers/tut/ints.html create mode 100644 doc/html/boost_bignumbers/tut/reals.html create mode 100644 doc/html/boostbook.css create mode 100644 doc/html/images/blank.png create mode 100644 doc/html/images/caution.png create mode 100644 doc/html/images/caution.svg create mode 100644 doc/html/images/draft.png create mode 100644 doc/html/images/home.png create mode 100644 doc/html/images/home.svg create mode 100644 doc/html/images/important.png create mode 100644 doc/html/images/important.svg create mode 100644 doc/html/images/next.png create mode 100644 doc/html/images/next.svg create mode 100644 doc/html/images/next_disabled.png create mode 100644 doc/html/images/note.png create mode 100644 doc/html/images/note.svg create mode 100644 doc/html/images/prev.png create mode 100644 doc/html/images/prev.svg create mode 100644 doc/html/images/prev_disabled.png create mode 100644 doc/html/images/tip.png create mode 100644 doc/html/images/tip.svg create mode 100644 doc/html/images/toc-blank.png create mode 100644 doc/html/images/toc-minus.png create mode 100644 doc/html/images/toc-plus.png create mode 100644 doc/html/images/up.png create mode 100644 doc/html/images/up.svg create mode 100644 doc/html/images/up_disabled.png create mode 100644 doc/html/images/warning.png create mode 100644 doc/html/images/warning.svg create mode 100644 doc/html/index.html create mode 100644 test/Jamfile.v2 create mode 100644 test/big_number_concept_check.cpp create mode 100644 test/linpack-benchmark.cpp create mode 100644 test/test_arithmetic.cpp create mode 100644 test/test_numeric_limits.cpp diff --git a/Jamroot.jam b/Jamroot.jam new file mode 100644 index 00000000..c8019258 --- /dev/null +++ b/Jamroot.jam @@ -0,0 +1,9 @@ + +import modules ; + +local boost = [ modules.peek : BOOST ] ; + +project sandbox : requirements $(boost) ; + +# This seems to prevent some Boost.Build errors that otherwise occur :-( +use-project /boost : $(boost) ; diff --git a/boost-build.jam b/boost-build.jam new file mode 100644 index 00000000..02b750a1 --- /dev/null +++ b/boost-build.jam @@ -0,0 +1,72 @@ +# Copyright Rene Rivera 2007. +# +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +# For instructions see Jamfile.v2, or "bjam --help". + +local rule if-has-file ( file + : dir * ) +{ + local result ; + if $(dir) + { + result = [ GLOB $(dir) : $(file) ] ; + } + return $(result[1]:P) ; +} + +#~ Attempts to find the Boost source tree... + +local boost-src = [ if-has-file LICENSE_1_0.txt : + [ MATCH --boost=(.*) : $(ARGV) ] + $(BOOST) + $(BOOST_ROOT) + $(.boost-build-file:D)/../boost + $(.boost-build-file:D)/../Trunk + ] ; + +# error handling: +if ! $(boost-src) +{ + ECHO Unable to find the Boost source tree in the locations searched. ; + ECHO Try setting the environment variable BOOST to point to your ; + ECHO Boost tree, or else invoke bjam with the --boost=path option. ; + ECHO The Boost include path will not be automatically set. ; + ECHO The paths searched were [ MATCH --boost=(.*) : $(ARGV) ] $(BOOST) $(.boost-build-file:D)/../boost $(.boost-build-file:D)/../Trunk ; + ECHO But the file LICENSE_1_0.txt was not found in any of them ; +} + +#~ Attempts to find the Boost.Build files... + +local boost-build-src = [ if-has-file bootstrap.jam : + [ MATCH --boost-build=(.*) : $(ARGV) ] + $(BOOST_BUILD_PATH) + $(BOOST_BUILD) + $(boost-src)/tools/build/v2 + ] ; + +# error handling: +if ! $(boost-build-src) +{ + ECHO Unable to find the Boost.Build source tree in the locations searched. ; + ECHO Try setting the environment variable BOOST_BUILD to point to your ; + ECHO Boost.Build tree, or else invoke bjam with the --boost-build=path option. ; + ECHO The paths searched were [ MATCH --boost-build=(.*) : $(ARGV) ] $(BOOST_BUILD_PATH) $(BOOST_BUILD) $(boost-src)/tools/build/v2 ; + ECHO But bootstrap.jam was not found in any of these ; + ECHO More failures will very likely follow... ; +} + +#~ Set some common vars to refer to the Boost sources... + +BOOST ?= $(boost-src) ; +BOOST_ROOT ?= $(boost-src) ; + +#~ And load up Boost.Build... + +boost-build $(boost-build-src) ; + + + + + diff --git a/config/Jamfile.v2 b/config/Jamfile.v2 new file mode 100644 index 00000000..832e2936 --- /dev/null +++ b/config/Jamfile.v2 @@ -0,0 +1,45 @@ +# copyright John Maddock 2008 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt. + +import modules ; +import path ; + +local ntl-path = [ modules.peek : NTL_PATH ] ; +local gmp_path = [ modules.peek : GMP_PATH ] ; +local mpfr_path = [ modules.peek : MPFR_PATH ] ; +local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; + +if ! $(e_float_path) +{ + e_float_path = ../../../../e_float ; +} + +ECHO $(BOOST_E_FLOAT_PATH) + +obj has_long_double_support : has_long_double_support.cpp ; +obj has_mpfr_class : has_mpfr_class.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; +obj has_mpreal : has_mpreal.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/mpfrc++ ; +obj has_ntl_rr : has_ntl_rr.cpp : $(ntl-path)/include ; +obj has_gmpxx : has_gmpxx.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; +obj has_gcc_visibility : has_gcc_visibility.cpp : + gcc:-fvisibility=hidden gcc:-Werror ; +obj has_e_float : has_e_float.cpp : $(e_float_path) ; +obj has_gmp : has_gmp.cpp : + $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; +obj has_mpfr : has_mpfr.cpp : + $(mpfr_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; + +explicit has_long_double_support ; +explicit has_mpfr_class ; +explicit has_mpreal ; +explicit has_ntl_rr ; +explicit has_gmpxx ; +explicit has_gcc_visibility ; +explicit has_e_float ; +explicit has_gmp ; +explicit has_mpfr ; diff --git a/config/has_e_float.cpp b/config/has_e_float.cpp new file mode 100644 index 00000000..8cadc5c6 --- /dev/null +++ b/config/has_e_float.cpp @@ -0,0 +1,17 @@ +// Copyright John Maddock 2011. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#ifdef _MSC_VER +# pragma warning (disable : 4100) // unreferenced formal parameter +#endif + +#define E_FLOAT_TYPE_EFX + +#include +#include +#include + + diff --git a/config/has_gcc_visibility.cpp b/config/has_gcc_visibility.cpp new file mode 100644 index 00000000..6c7d6f91 --- /dev/null +++ b/config/has_gcc_visibility.cpp @@ -0,0 +1,13 @@ +// Copyright John Maddock 20010. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef __GNUC__ +# error "This is a GCC specific test case". +#endif + +int main() +{ + return 0; +} diff --git a/config/has_gmp.cpp b/config/has_gmp.cpp new file mode 100644 index 00000000..582f0027 --- /dev/null +++ b/config/has_gmp.cpp @@ -0,0 +1,7 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + diff --git a/config/has_gmpxx.cpp b/config/has_gmpxx.cpp new file mode 100644 index 00000000..edf62d8c --- /dev/null +++ b/config/has_gmpxx.cpp @@ -0,0 +1,7 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + diff --git a/config/has_long_double_support.cpp b/config/has_long_double_support.cpp new file mode 100644 index 00000000..d314cf38 --- /dev/null +++ b/config/has_long_double_support.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#error "long double support is not supported by Boost.Math on this Plaform: the long double version of the TR1 library will not be built." +#endif diff --git a/config/has_mpfr.cpp b/config/has_mpfr.cpp new file mode 100644 index 00000000..49d12a0b --- /dev/null +++ b/config/has_mpfr.cpp @@ -0,0 +1,7 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + diff --git a/config/has_mpfr_class.cpp b/config/has_mpfr_class.cpp new file mode 100644 index 00000000..8eb3c7b2 --- /dev/null +++ b/config/has_mpfr_class.cpp @@ -0,0 +1,14 @@ +// Copyright John Maddock 2008. +// Copyright Paul A. Britow 2009 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# pragma warning (disable : 4127) // conditional expression is constant +# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) +# pragma warning (disable : 4512) // assignment operator could not be generated +#endif + +#include + diff --git a/config/has_mpreal.cpp b/config/has_mpreal.cpp new file mode 100644 index 00000000..8ee8897d --- /dev/null +++ b/config/has_mpreal.cpp @@ -0,0 +1,14 @@ +// Copyright John Maddock 2008. +// Copyright Paul A. Britow 2009 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# pragma warning (disable : 4127) // conditional expression is constant +# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) +# pragma warning (disable : 4512) // assignment operator could not be generated +#endif + +#include + diff --git a/config/has_ntl_rr.cpp b/config/has_ntl_rr.cpp new file mode 100644 index 00000000..f3844217 --- /dev/null +++ b/config/has_ntl_rr.cpp @@ -0,0 +1,12 @@ +// Copyright John Maddock 2008. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#ifdef _MSC_VER +# pragma warning (disable : 4100) // unreferenced formal parameter +#endif + +#include + diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 new file mode 100644 index 00000000..2f00f026 --- /dev/null +++ b/doc/Jamfile.v2 @@ -0,0 +1,67 @@ + +# Copyright John Maddock 2011. Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +using quickbook ; + +path-constant images_location : html ; + +xml big_number : big_number.qbk ; +boostbook standalone + : + big_number + : + # Path for links to Boost: + #boost.root=../../../../.. + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + html.stylesheet=boostbook.css + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=10 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=10 + # How far down sections get TOC's + toc.section.depth=10 + # Max depth in each TOC: + toc.max.depth=4 + # How far down we go with TOC's + #generate.section.toc.level=10 + # Index on type: + index.on.type=1 + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + fop1.extensions=0 + pdf:xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + pdf:fop.extensions=0 + pdf:fop1.extensions=0 + # No indent on body text: + pdf:body.start.indent=0pt + # Margin size: + pdf:page.margin.inner=0.5in + # Margin size: + pdf:page.margin.outer=0.5in + # Paper type = A4 + pdf:paper.type=A4 + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + pdf:admon.graphics.extension=".svg" + pdf:use.role.for.mediaobject=1 + pdf:preferred.mediaobject.role=print + pdf:img.src.path=$(images_location)/ + pdf:draft.mode="no" + pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/math/doc/sf_and_dist/html + ; + +install pdf-install : standalone : . PDF ; diff --git a/doc/big_number.qbk b/doc/big_number.qbk new file mode 100644 index 00000000..4ccfb199 --- /dev/null +++ b/doc/big_number.qbk @@ -0,0 +1,207 @@ +[/ + Copyright 2011 John Maddock. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + +[library Boost.BigNumbers + [quickbook 1.5] + [copyright 2011 John Maddock] + [purpose Big Number library] + [license + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + [@http://www.boost.org/LICENSE_1_0.txt]) + ] + [authors [authors, various]] + [last-revision $Date: 2011-07-08 18:51:46 +0100 (Fri, 08 Jul 2011) $] +] + +[section:intro Introduction] + +The Big Number library comes in two distinct parts: an expression template enabled front end `big_number` +that handles all the operator overloading, expression evaluation optimization, and code reduction, and +a selection of backends that implement the actual arithmetic operations, and need conform only to the +reduced interface requirements of the front end. + +[endsect] + +[section:tut Tutorial] + +In order to use this library you need to make two choices: what kind of number do I want, and +which backend do I want to perform the actual arithmetic? + +[section:ints Integer Types] + +The following backends provide integer arithmetic: + +[table +[[Backend Type][Header][Radix][Dependencies][Pros][Cons]] +[[`gmp_int`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +] + +[h4 gmp_int] + + namespace boost{ namespace math{ + + class gmp_int; + + typedef big_number mpz_int; + + }} // namespaces + +The `gmp_int` backend is used via the typedef `boost::math::mpz_int`. It acts as a thin wrapper around the GMP `mpz_t` +to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. + +[h5 Example:] + + #include + + boost::math::mpz_int v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + + std::cout << i << std::endl; // prints 1000! + +[endsect] + +[section:reals Real Numbers] + +The following backends provide real number arithmetic: + +[table +[[Backend Type][Header][Radix][Dependencies][Pros][Cons]] +[[`gmp_real`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +] + +[h4 gmp_real] + + namespace boost{ namespace math{ + + template + class gmp_real; + + typedef big_number > mpf_real_50; + typedef big_number > mpf_real_100; + typedef big_number > mpf_real_500; + typedef big_number > mpf_real_1000; + typedef big_number > mpf_real; + + }} // namespaces + +The `gmp_real` backend is used in conjunction with `big_number`: It acts as a thin wrapper around the GMP `mpf_t` +to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with +much greater precision. + +Type `gmp_real` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or +at variable precision by setting the template argument to zero. The typedefs mpf_real_50, mpf_real_100, +mpf_real_500, mpf_real_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision +respectively. The typedef mpf_real provides a variable precision type whose precision can be controlled via the +`big_number`'s member functions. + +[h5 example:] + + #include + + boost::math::gmp_real a = 2; + boost::math::gmp_real::default_precision(1000); + std::cout << boost::math::gmp_real::default_precision() << std::endl; + std::cout << sqrt(a) << std::endl; // print root-2 + +[endsect] + +[endsect] + +[section:ref Reference] + +[section:bignum big_number] + +[h4 Synopsis] + + namespace boost{ namespace math{ + + template + class big_number + { + big_number(); + big_number(see-below); + big_number& operator=(see-below); + /* Other number-type operators here */ + // string conversion: + std::string str()const; + // precision control: + static unsigned default_precision(); + static void default_precision(unsigned digits10); + unsigned precision()const; + void precision(unsigned digits10); + // Comparison: + int compare(const big_number& o)const; + template + typename enable_if, int>::type compare(const V& o)const; + }; + + }} // namespaces + +[h4 Description] + + big_number(); + big_number(see-below); + big_number& operator=(see-below); + +Type `big_number` is default constructible, and copy both constructible and assignable from: + +* Itself. +* An expression template which is the result of one of the arithmetic operators. +* Any builtin arithmetic type. +* A `std::string` or any type which is convertible to `const char*`. + + /* Other number-type operators here */ + +The following arithmetic operations are support for real-numbered types: + +* Binary +, -, *, /, +=, -=, *=, /=, ==, !=, <=, >=, <, >. +* Unary +, -. + +For integer types the following operators are also supported: + +Binary %, %=. + +(More to follow!!) + +Note that the result of the binary +, -, *, / and % operations is an expression template of "unmentionable type". + + std::string str()const; + +Returns the number formatted as a string (TODO: enable custom precision). + + static unsigned default_precision(); + static void default_precision(unsigned digits10); + unsigned precision()const; + void precision(unsigned digits10); + +These functions are only available if the Backend template parameter supports runtime changes to precision. They get and set +the default precision and the precision of *this respectively. + + int compare(const big_number& o)const; + template + typename enable_if, int>::type compare(const V& other)const; + +Returns: + +* A value less that 0 for *this < other +* A value greater that 0 for *this > other +* Zero for *this == other + +[endsect] + +[section:backendconc Backend Requirements] + +TODO, big boring job!! + +[endsect] + +[endsect] + diff --git a/doc/html/boost_bignumbers/intro.html b/doc/html/boost_bignumbers/intro.html new file mode 100644 index 00000000..ee77f4b1 --- /dev/null +++ b/doc/html/boost_bignumbers/intro.html @@ -0,0 +1,44 @@ + + + +Introduction + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The Big Number library comes in two distinct parts: an expression template + enabled front end big_number + that handles all the operator overloading, expression evaluation optimization, + and code reduction, and a selection of backends that implement the actual arithmetic + operations, and need conform only to the reduced interface requirements of + the front end. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_bignumbers/ref.html b/doc/html/boost_bignumbers/ref.html new file mode 100644 index 00000000..c6a81e2f --- /dev/null +++ b/doc/html/boost_bignumbers/ref.html @@ -0,0 +1,40 @@ + + + +Reference + + + + + + + + +
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_bignumbers/ref/backendconc.html b/doc/html/boost_bignumbers/ref/backendconc.html new file mode 100644 index 00000000..44dd13af --- /dev/null +++ b/doc/html/boost_bignumbers/ref/backendconc.html @@ -0,0 +1,38 @@ + + + +Backend Requirements + + + + + + + +
+
+
+PrevUpHome +
+
+ +

+ TODO, big boring job!! +

+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/html/boost_bignumbers/ref/bignum.html b/doc/html/boost_bignumbers/ref/bignum.html new file mode 100644 index 00000000..bcf3ef57 --- /dev/null +++ b/doc/html/boost_bignumbers/ref/bignum.html @@ -0,0 +1,151 @@ + + + +big_number + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
namespace boost{ namespace math{
+
+template <class Backend>
+class big_number
+{
+   big_number();
+   big_number(see-below);
+   big_number& operator=(see-below);
+   /* Other number-type operators here */
+   // string conversion:
+   std::string str()const;
+   // precision control:
+   static unsigned default_precision();
+   static void default_precision(unsigned digits10);
+   unsigned precision()const;
+   void precision(unsigned digits10);
+   // Comparison:
+   int compare(const big_number<Backend>& o)const;
+   template <class V>
+   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
+};
+
+}} // namespaces
+
+
+ + Description +
+
big_number();
+big_number(see-below);
+big_number& operator=(see-below);
+
+

+ Type big_number is default + constructible, and copy both constructible and assignable from: +

+
    +
  • + Itself. +
  • +
  • + An expression template which is the result of one of the arithmetic operators. +
  • +
  • + Any builtin arithmetic type. +
  • +
  • + A std::string or any type which is convertible + to const char*. +
  • +
+
/* Other number-type operators here */
+
+

+ The following arithmetic operations are support for real-numbered types: +

+
    +
  • + Binary +, -, *, /, +, -, *, /, + ==, !, <, >=, <, >. +
  • +
  • + Unary +, -. +
  • +
+

+ For integer types the following operators are also supported: +

+

+ Binary %, %=. +

+

+ (More to follow!!) +

+

+ Note that the result of the binary +, -, *, / and % operations is an expression + template of "unmentionable type". +

+
std::string str()const;
+
+

+ Returns the number formatted as a string (TODO: enable custom precision). +

+
static unsigned default_precision();
+static void default_precision(unsigned digits10);
+unsigned precision()const;
+void precision(unsigned digits10);
+
+

+ These functions are only available if the Backend template parameter supports + runtime changes to precision. They get and set the default precision and + the precision of *this respectively. +

+
int compare(const big_number<Backend>& o)const;
+template <class V>
+typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
+
+

+ Returns: +

+
    +
  • + A value less that 0 for *this < other +
  • +
  • + A value greater that 0 for *this > other +
  • +
  • + Zero for *this == other +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_bignumbers/tut.html b/doc/html/boost_bignumbers/tut.html new file mode 100644 index 00000000..92e58b08 --- /dev/null +++ b/doc/html/boost_bignumbers/tut.html @@ -0,0 +1,44 @@ + + + +Tutorial + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ + +

+ In order to use this library you need to make two choices: what kind of number + do I want, and which backend do I want to perform the actual arithmetic? +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_bignumbers/tut/ints.html b/doc/html/boost_bignumbers/tut/ints.html new file mode 100644 index 00000000..b2dbce57 --- /dev/null +++ b/doc/html/boost_bignumbers/tut/ints.html @@ -0,0 +1,146 @@ + + + +Integer Types + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The following backends provide integer arithmetic: +

+
++++++++ + + + + + + + + + + + + + + + + +
+

+ Backend Type +

+
+

+ Header +

+
+

+ Radix +

+
+

+ Dependencies +

+
+

+ Pros +

+
+

+ Cons +

+
+

+ gmp_int +

+
+

+ boost/math/big_number/gmp.hpp +

+
+

+ 2 +

+
+

+ GMP +

+
+

+ Very fast and efficient backend. +

+
+

+ Dependency on GNU licenced GMP library. +

+
+
+ + gmp_int +
+
namespace boost{ namespace math{
+
+class gmp_int;
+
+typedef big_number<gmp_int >         mpz_int;
+
+}} // namespaces
+
+

+ The gmp_int backend is used + via the typedef boost::math::mpz_int. It acts as a thin wrapper around + the GMP mpz_t to provide + an integer type that is a drop-in replacement for the native C++ integer + types, but with unlimited precision. +

+
+ + Example: +
+
#include <boost/math/big_number/gmp.hpp>
+
+boost::math::mpz_int v = 1;
+
+// Do some arithmetic:
+for(unsigned i = 1; i <= 1000; ++i)
+   v *= i;
+
+std::cout << i << std::endl; // prints 1000!
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_bignumbers/tut/reals.html b/doc/html/boost_bignumbers/tut/reals.html new file mode 100644 index 00000000..cd08e445 --- /dev/null +++ b/doc/html/boost_bignumbers/tut/reals.html @@ -0,0 +1,158 @@ + + + +Real Numbers + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The following backends provide real number arithmetic: +

+
++++++++ + + + + + + + + + + + + + + + + +
+

+ Backend Type +

+
+

+ Header +

+
+

+ Radix +

+
+

+ Dependencies +

+
+

+ Pros +

+
+

+ Cons +

+
+

+ gmp_real<N> +

+
+

+ boost/math/big_number/gmp.hpp +

+
+

+ 2 +

+
+

+ GMP +

+
+

+ Very fast and efficient backend. +

+
+

+ Dependency on GNU licenced GMP library. +

+
+
+ + gmp_real +
+
namespace boost{ namespace math{
+
+template <unsigned Digits10>
+class gmp_real;
+
+typedef big_number<gmp_real<50> >    mpf_real_50;
+typedef big_number<gmp_real<100> >   mpf_real_100;
+typedef big_number<gmp_real<500> >   mpf_real_500;
+typedef big_number<gmp_real<1000> >  mpf_real_1000;
+typedef big_number<gmp_real<0> >     mpf_real;
+
+}} // namespaces
+
+

+ The gmp_real backend is used + in conjunction with big_number: + It acts as a thin wrapper around the GMP mpf_t + to provide an real-number type that is a drop-in replacement for the native + C++ floating-point types, but with much greater precision. +

+

+ Type gmp_real can be used + at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpf_real_50, mpf_real_100, mpf_real_500, mpf_real_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpf_real provides a variable precision type whose + precision can be controlled via the big_number's + member functions. +

+
+ + example: +
+
#include <boost/math/big_number/gmp.hpp>
+
+boost::math::gmp_real a = 2;
+boost::math::gmp_real::default_precision(1000);
+std::cout << boost::math::gmp_real::default_precision() << std::endl;
+std::cout << sqrt(a) << std::endl; // print root-2
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boostbook.css b/doc/html/boostbook.css new file mode 100644 index 00000000..252fa9ec --- /dev/null +++ b/doc/html/boostbook.css @@ -0,0 +1,588 @@ +/*============================================================================= + Copyright (c) 2004 Joel de Guzman + http://spirit.sourceforge.net/ + + Distributed under the Boost Software License, Version 1.0. (See accompany- + ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +=============================================================================*/ + +/*============================================================================= + Body defaults +=============================================================================*/ + + body + { + margin: 1em; + font-family: sans-serif; + } + +/*============================================================================= + Paragraphs +=============================================================================*/ + + p + { + text-align: left; + font-size: 10pt; + line-height: 1.15; + } + +/*============================================================================= + Program listings +=============================================================================*/ + + /* Code on paragraphs */ + p tt.computeroutput + { + font-size: 9pt; + } + + pre.synopsis + { + font-size: 90%; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + .programlisting, + .screen + { + font-size: 9pt; + display: block; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + /* Program listings in tables don't get borders */ + td .programlisting, + td .screen + { + margin: 0pc 0pc 0pc 0pc; + padding: 0pc 0pc 0pc 0pc; + } + +/*============================================================================= + Headings +=============================================================================*/ + + h1, h2, h3, h4, h5, h6 + { + text-align: left; + margin: 1em 0em 0.5em 0em; + font-weight: bold; + } + + h1 { font: 140% } + h2 { font: bold 140% } + h3 { font: bold 130% } + h4 { font: bold 120% } + h5 { font: italic 110% } + h6 { font: italic 100% } + + /* Top page titles */ + title, + h1.title, + h2.title + h3.title, + h4.title, + h5.title, + h6.title, + .refentrytitle + { + font-weight: bold; + margin-bottom: 1pc; + } + + h1.title { font-size: 140% } + h2.title { font-size: 140% } + h3.title { font-size: 130% } + h4.title { font-size: 120% } + h5.title { font-size: 110% } + h6.title { font-size: 100% } + + .section h1 + { + margin: 0em 0em 0.5em 0em; + font-size: 140%; + } + + .section h2 { font-size: 140% } + .section h3 { font-size: 130% } + .section h4 { font-size: 120% } + .section h5 { font-size: 110% } + .section h6 { font-size: 100% } + + /* Code on titles */ + h1 tt.computeroutput { font-size: 140% } + h2 tt.computeroutput { font-size: 140% } + h3 tt.computeroutput { font-size: 130% } + h4 tt.computeroutput { font-size: 120% } + h5 tt.computeroutput { font-size: 110% } + h6 tt.computeroutput { font-size: 100% } + +/*============================================================================= + Author +=============================================================================*/ + + h3.author + { + font-size: 100% + } + +/*============================================================================= + Lists +=============================================================================*/ + + li + { + font-size: 10pt; + line-height: 1.3; + } + + /* Unordered lists */ + ul + { + text-align: left; + } + + /* Ordered lists */ + ol + { + text-align: left; + } + +/*============================================================================= + Links +=============================================================================*/ + + a + { + text-decoration: none; /* no underline */ + } + + a:hover + { + text-decoration: underline; + } + +/*============================================================================= + Spirit style navigation +=============================================================================*/ + + .spirit-nav + { + text-align: right; + } + + .spirit-nav a + { + color: white; + padding-left: 0.5em; + } + + .spirit-nav img + { + border-width: 0px; + } + +/*============================================================================= + Copyright footer +=============================================================================*/ + .copyright-footer + { + text-align: right; + font-size: 70%; + } + + .copyright-footer p + { + text-align: right; + font-size: 80%; + } + +/*============================================================================= + Table of contents +=============================================================================*/ + + .toc + { + margin: 1pc 4% 0pc 4%; + padding: 0.1pc 1pc 0.1pc 1pc; + font-size: 80%; + line-height: 1.15; + } + + .boost-toc + { + float: right; + padding: 0.5pc; + } + +/*============================================================================= + Tables +=============================================================================*/ + + .table-title, + div.table p.title + { + margin-left: 4%; + padding-right: 0.5em; + padding-left: 0.5em; + } + + .informaltable table, + .table table + { + width: 92%; + margin-left: 4%; + margin-right: 4%; + } + + div.informaltable table, + div.table table + { + padding: 4px; + } + + /* Table Cells */ + div.informaltable table tr td, + div.table table tr td + { + padding: 0.5em; + text-align: left; + font-size: 9pt; + } + + div.informaltable table tr th, + div.table table tr th + { + padding: 0.5em 0.5em 0.5em 0.5em; + border: 1pt solid white; + font-size: 80%; + } + + table.simplelist + { + width: auto !important; + margin: 0em !important; + padding: 0em !important; + border: none !important; + } + table.simplelist td + { + margin: 0em !important; + padding: 0em !important; + text-align: left !important; + font-size: 9pt !important; + border: none !important; + } + +/*============================================================================= + Blurbs +=============================================================================*/ + + div.note, + div.tip, + div.important, + div.caution, + div.warning, + p.blurb + { + font-size: 9pt; /* A little bit smaller than the main text */ + line-height: 1.2; + display: block; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + p.blurb img + { + padding: 1pt; + } + +/*============================================================================= + Variable Lists +=============================================================================*/ + + /* Make the terms in definition lists bold */ + div.variablelist dl dt, + span.term + { + font-weight: bold; + font-size: 10pt; + } + + div.variablelist table tbody tr td + { + text-align: left; + vertical-align: top; + padding: 0em 2em 0em 0em; + font-size: 10pt; + margin: 0em 0em 0.5em 0em; + line-height: 1; + } + + div.variablelist dl dt + { + margin-bottom: 0.2em; + } + + div.variablelist dl dd + { + margin: 0em 0em 0.5em 2em; + font-size: 10pt; + } + + div.variablelist table tbody tr td p, + div.variablelist dl dd p + { + margin: 0em 0em 0.5em 0em; + line-height: 1; + } + +/*============================================================================= + Misc +=============================================================================*/ + + /* Title of books and articles in bibliographies */ + span.title + { + font-style: italic; + } + + span.underline + { + text-decoration: underline; + } + + span.strikethrough + { + text-decoration: line-through; + } + + /* Copyright, Legal Notice */ + div div.legalnotice p + { + text-align: left + } + +/*============================================================================= + Colors +=============================================================================*/ + + @media screen + { + body { + background-color: #FFFFFF; + } + + /* Links */ + a + { + color: #005a9c; + } + + a:visited + { + color: #9c5a9c; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, + h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, + h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited + { + text-decoration: none; /* no underline */ + color: #000000; + } + + /* Syntax Highlighting */ + .keyword { color: #0000AA; } + .identifier { color: #000000; } + .special { color: #707070; } + .preprocessor { color: #402080; } + .char { color: teal; } + .comment { color: #800000; } + .string { color: teal; } + .number { color: teal; } + .white_bkd { background-color: #FFFFFF; } + .dk_grey_bkd { background-color: #999999; } + + /* Copyright, Legal Notice */ + .copyright + { + color: #666666; + font-size: small; + } + + div div.legalnotice p + { + color: #666666; + } + + /* Program listing */ + pre.synopsis + { + border: 1px solid #DCDCDC; + } + + .programlisting, + .screen + { + border: 1px solid #DCDCDC; + } + + td .programlisting, + td .screen + { + border: 0px solid #DCDCDC; + } + + /* Blurbs */ + div.note, + div.tip, + div.important, + div.caution, + div.warning, + p.blurb + { + border: 1px solid #DCDCDC; + } + + /* Table of contents */ + .toc + { + border: 1px solid #DCDCDC; + } + + /* Tables */ + div.informaltable table tr td, + div.table table tr td + { + border: 1px solid #DCDCDC; + } + + div.informaltable table tr th, + div.table table tr th + { + background-color: #F0F0F0; + border: 1px solid #DCDCDC; + } + + .copyright-footer + { + color: #8F8F8F; + } + + /* Misc */ + span.highlight + { + color: #00A000; + } + } + + @media print + { + /* Links */ + a + { + color: black; + } + + a:visited + { + color: black; + } + + .spirit-nav + { + display: none; + } + + /* Program listing */ + pre.synopsis + { + border: 1px solid gray; + } + + .programlisting, + .screen + { + border: 1px solid gray; + } + + td .programlisting, + td .screen + { + border: 0px solid #DCDCDC; + } + + /* Table of contents */ + .toc + { + border: 1px solid gray; + } + + .informaltable table, + .table table + { + border: 1px solid gray; + border-collapse: collapse; + } + + /* Tables */ + div.informaltable table tr td, + div.table table tr td + { + border: 1px solid gray; + } + + div.informaltable table tr th, + div.table table tr th + { + border: 1px solid gray; + } + + table.simplelist tr td + { + border: none !important; + } + + /* Misc */ + span.highlight + { + font-weight: bold; + } + } + +/*============================================================================= + Images +=============================================================================*/ + + span.inlinemediaobject img + { + vertical-align: middle; + } + +/*============================================================================== + Super and Subscript: style so that line spacing isn't effected, see + http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341 +==============================================================================*/ + +sup, +sub { + height: 0; + line-height: 1; + vertical-align: baseline; + _vertical-align: bottom; + position: relative; + +} + +sup { + bottom: 1ex; +} + +sub { + top: .5ex; +} + diff --git a/doc/html/images/blank.png b/doc/html/images/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..764bf4f0c3bb4a09960b04b6fa9c9024bca703bc GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrEa{HEjtmSN`?>!lvNA9*>Uz33 zhE&XXd(lylL4oIh!GZnHecj|txT>yO8>^qY%(y?B;Tppl#t7yOYze#vq#8^aMzDZb YLK^d5CO(feU_df>y85}Sb4q9e0BevqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/doc/html/images/caution.svg b/doc/html/images/caution.svg new file mode 100644 index 00000000..4bd586a0 --- /dev/null +++ b/doc/html/images/caution.svg @@ -0,0 +1,68 @@ + + + + + + Attenzione + + + + pulsante + + + + + Open Clip Art Library + + + + + Architetto Francesco Rollandin + + + + + Architetto Francesco Rollandin + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/images/draft.png b/doc/html/images/draft.png new file mode 100644 index 0000000000000000000000000000000000000000..0084708c9b8287c51efa6b40b8d492854191455e GIT binary patch literal 17454 zcmXwh2{_c>_y1e^C}m43S&}RzTQstU#!g0*n6YJ1aTS}>RLe1z8LVo z`rtm$Vp5JW1|R$HTrs@@LGR)Z?>PPkL8l=j-77Z&G8Tsi{RV4sPaGi)BBI`)`R~Q` z*=O$N8oBahuA1ujq=ONsH^Z$;Z@?A2zPOR;+t7%GvNscPQvtyu^ z^(He{(TNfAz{D>S76#pNt`V=aFm{t&tF)Lut!iq>3RU|!!{xbB|2@69Az7({KpgFX zBHUL)|7ydZKc0k%azcGA&PuCQV*kD$bT{P;b?=`M@6C_|b6!~s9j#tuU~e9n-MCHj zfV5S(js_`kv|ivaLE*6pY!G%r11u^qOVBw|g29`m16#D?@yi>zc0bwz%G@ za2kvxn$XS7{2WQ_ju!==VTs+`V&L;sVz(Pl4+J?F&ZZv3KoKW2c?bBtGq5)oRM?*)usx_-H@47Cu#_qL+2eow%ZDy0=bsNsUP&ms8wSUp@nG86W_bQDmNMRgINC`_}NgC zCcqF_Ta|ScVvPu;|0KG{NIio~DaGYcHYq4AEiIzkxEPqs@0$Z$*)*@J$yP3ObX$%T zzRS=t%7(g3t{Q*^ zEyTxT$*5+N*(plL90Bl6`Nb^WdKn_Pvpb{prO$Iu<5}~-EnXK7fy@_2c89d+ZhJ|)%qTOcbj#K2|l1B!3n*4em>_| zs0+)H9*C!kU%yVP5l({XnQMeRu}L5Sj@SNhX<@4AzfhMZW{P&$t(3w4cF;s3a!PkRM$$6I_u>8qK3>fr(_ zv-Y*v{SjgTfq|+BcyYvbM!vF^@bCsN)N`rpJ$><_Gs5*qVfQ0@761Os;NFEBr2V@4l75H}1u*H-x1FzIyrv zX4-neRxZt~y^&-x>*hYlIJHqt-rL&^c9<9eB-5QN-kNin&S^e!8s9rIjX$~r#FHSZ zPPGHSJ7NH?>J1WXHMp6{3_m_JHFb(pJM-&G@!UzwMZ19kYDMv8^_@35=1Qp*GU^C$ znS!nuvPQ5{W^@`l=K{0vn9d5B4sd@GNsqwYt13N;s_n$M5sF(Y{Gu{$f)Pqq6>`4( zoK6ZojptUz?t{2OQ@f4d24!GwYi6y465k8gmK^#vxd{Il-lBt^R7pE@jfteJwgkQ(YBxT%22tXdci&(7P>~Iov zlAF+-uyinD*mU_C1!Z!%vFE`wQx$H0WX*IMeKiv()c!!|Br&A#iWksE5wy*|X}DYF zOkmbb)NtBhwAgAQQ)W7>BzBj)^ec8BETv8dt~1Wtd}pfRmKnoYyMymV`fvW*bjTy@ zNFqchp{S-_%)XBfUmWyYYl$xVgQtxEVn358@gKtpQuu~+-Kl-33E21oa-Fi&oBI&`1N%T=`T3uD7xjR z1Q5DaVd-rOkkqXdK@Yti1APh3TN{S1DknOaE4Vdk=o-MQ!`zf#3^vm0RTp!s>(8+I z(BKlybb>#^&dE#xTWKkB5>RG$`5m60nzI~B_{R+DtsN)(K1(tUpuVHL0)mIKnUfCR zGE=xGXN@3g`N9QSG|T0c&wxuu*Qg<*+`PlfSfJAKfkWnRsVJ$bx1$Z`o)r~6%k4&i z<9I5}9(ypb2w!#-r7*;K+DjakI~Af;0mNtDxBc4R3|&8W^=h6KIf?>|@$@)*tlfRZ zrCkhM8ZMxnVd%Q>wKHQ6h;cwwxcI6738osp@h30JoAC1Si}3tS%4m{iuKSkF9xsrA%;wLv z8A#j|uifcVGx>ptY|-u;nJ$&yw-19u5smA=3C-sC-n~XzIV= z*~{{V0<$*x$DP?_zs?b?-Dsw+U(_(rI4}YY;n`g??R&MWiSNSHJ{;g>QuE+91GpRE zd9DfqUKVfdeAUwO7il>!iH(N~Y+WTTbX3b$$01o$aei(SD8PN9Ig|tehF6`&rMrwH z6C(}UhO7r4V(nXd&uyraV5X$iUUKSF7E#U?bu;$RHwXn03D2wdZR{}kbxlVH%&8F=8tR+X zZ7kKlMpt29EK0Mnb~Bm{1y*D227__FT~$T7>%Bs>RxQrlgI55^$os$sc`ic?+hwHQ zy%C%qRZZ?xjTT>R%HJvzYPmTbNJa&lc4N}*?d^eJ+TgWWrby|-X?$RL63$ocD0=1z zq>bD(K@l*w5V0aAqv-^DtQq(*B!;KK;S)?XERW0Z8_eB7>{FG!W0Tmu$$a@l#~e@t zb7eAjZ0Z_IN~+HjldvP|xLYiL+|mn)Q;HmqDMG^&^)mW(%Xyb~AG4Jkd@~F091U{i zRg(Zi(!S357h;^+d50bWLHO{(l58O+_d192vyD-Oh|kx|qkk|71w!Jdg*R ze=X`e#>jQ1n83%L37gJmxi{uYC;jRU__qGnk430EXC8CcRU^h&pyhVlHM8x(ce}=L+^|Pv zi|35MNQw6wsl4bw0P{NiUo&-{is+V{iXV*G{_L^ONZ@`H!#JZ@}t;bpd`Z>sx8;y zHg4#YSJ*anpi2Do=jWPejhaoGWKx!&jJeOVaku|#u8?8fCKc>EQ4j zn#0h@X_`cW22kHot+mSQz%;tAI|=i92)Mglsf!Nu*>=_g&(G0d>km#k&)3TllY#^u z02UV-NFuEUi@}-x=ETTTKA`X~EX5jv8~B<}HTK+*9&OvU2dkm`_BX*1VwV7Ij{pg= zxZNaUqPlcVYHAyHFof?m;I-ZD4bN%(@@2Td(VgI3 z{*lWmv$RZ|smov=_kGDznn+>_uX{A6;y}7pk@d`(Lh6{gFvrA5pAdMmu#G*QM1tQg z2^Fb6c;#}e`;nd&oQKh@*-zW!9ICOL;OFgA2-lpdOKmA=Bp;B_eB?c_df>veT)HW_ zs^sQQf+2B6j;5$>ZG`htEUcU*ioNkd+t(slRq00x_hk@N@P79aTAmlqe^(+dfnlOAm^WQavYofR?D70kyE!Q*mr z=MN`!PH<&(t6*5^bfSkgq80c+f6zkhX=!PVf1h^9o$GPX_wJAXim3%oV$)U9uWEOS zFZ=#iF~Q2FVvon!cVc(IvVedI_~ko1I5_AWe$&m4Pfz2dCm|J!YrHng`j<_W)9N6m zB@dJSV}^c#gL?<*=59v;JS=y@jX-JNZOq4)l)5={d`D-W!H@43<=pJ8Cgd+PhIgZ0 z&1}v2D7JC5c5m#$OqX|BP;TfUn_N`fm(NOG0@Nct5f0=5t?)gK>f*TZCP8 zE~vAz*f8;aNltIEzGmjk2?*gK)Xp4zr=6}59u!nRQiIH`r`BWA&&b%MJ+5|@JL))( z@lrFw!p1WBNbZB0IBSb692ygY3^VVnsCLI=p1DJ|9{R_viTo;ObrMJc9HN|9uopn6 zRxJ;a=NLyqW+8?@vXq*8_pkle?wWh-VSoPI3KIY*(nFq-Do;;Op#DRi6cuGIH zS7vFz0{w!T_jHtX9_!if-#4x3C9rYkU+2(KU|U3m|Bg{GCEc)G`)=}$uCcQ=o5}DE z4Qf|tZ$U3T&S;B0h&i3`PkyvL2&sK4L#)80)82naNsAnG!T4hTE7tIKfou;^sdejO z2^s6dG*bi~@XEf#g^+->YY)^i=j)rM{NpB6Os``bQrQDn`1IcCuH_tZo5u_RDCH9} z{A(qdv9-0;w%911g+6sdttId7K8LSzQx$iqDz9QJ%qEV5yOmP%C1^8VJ~&}mU03FL z5oO`+?_NbVx$89Jw_-65lS!LLL^<~>akOrQ*k8YT2f4npv!ne5LrBe1G zio4QV3V(pOPhsqCE2}mF#DXWKYCS~L->zo*5E`io01;dT5!%$~no!XU5w!2{HcD?P z$hkcJN$uNC-y%aa0(KSOy?hfCDA$n{jchN?d(tgsICQ1t%qbWQv5cv{T zBj3*W2{Wy5d$(v$@2djHMZWKG0-|MBp}dhVgo z`Vtvp{;P+IYGFXmo{Vm!Z+%cSOfN(pk`H&G(lF_arZgk!S9%x!bxKv`i?_8}mLXr- zfr-&54|LC~#MV?wRQm-EFSRGh4UA`d#pe!1bE-N?4{$Ro_JUO#b#A&ZN*AR84Q}u< zvAY2P2=^9%#QQFnV=U#iNT(o73@pmXuFN9 zR?J5~@ZQvv3RK1HlYa(JZ^_%8l~?wwv#lhDjuMeJDC(xS8@gFpX*CRJe8FTVfJFLE z`L1aE-QBK9wh8Lf=pv(3olJVvrY$Ug*U6Z?{29OF(VGVhgGPXNls7&Qa&U0KV+QnI zZN%rly6U%&wr&4qxD-ujjGO;@!kTH7t&RXS%qN%jTu85~jgj|mC`qh(pxU=LV<8nb z2*g-&X|S0`7pDK6F8O&>ow7=M28`!FRi!}mwg<&m&wRfJeJ}DJr|iWg3+r~FUb+VH z+^&Un8v5io|7I+;!f+OL&4~5g{fgrz&*uKPkBlbI#PEevl|9*Y;=ZITUOO{Xx3C?Q zjzzGgf??gQ$0$6k$=bjrn_FR?Ye1m&Alpp zIR2qAum=_rBrlX|_n?Z@`qf(Z0Kxll;~uBw&`7z9Rouxf&+){$ zT5l^SU3Q)C3!P4v<8`92?@GD3FQ>)aS@lWl&S_BItaudFE*~l)`|-f4TB#FImiY-_6&9CJ9!>+TEFxeaHO)c zvYblCdx~?kBnWI3y61_CZ7mPPn2!+y?I{+aqiJZV?FagXcV{P$qIQQ}eE8YeF~}-C z?~`EwR@Cieg6$PyJheqdg_twn9zXuoot>29+0UEtNnjKl>TgTSUIvF?r06FMW=5%U zVd7m{^kQJvRLT(~FbI!5QPR|t;QS06HwuN4s*dj5LYaTRDxc}ZbrgWm^`&@BlD%v{ z@k_@S)~9!76hB8Mu>D387Pt4nO+z=`W~vOK4w3_J5I>vM30q#&d2?0jd#W0;VqxAg z{*lOi191%V8^8z#kba|g@ zf4GgGK?gk~`S@>iRci6!kr&;RW(POG$iTAEX&_W3#)}zCBeQ12R}+C0SYWFB65117 zYx=X?gFD^+O{W+m*yAfTKmH~iyJk_ORwrFE`7|!~oOPP-{gCa4!U@A4tRgdFHX_Yj zXQ(+MhO_<^GRY)^`TEi#V?93xP#4UrcMTTD68zJ5m{DboqT=!RTMbx!3!QK?HvU2k za26tqP;3Z8*MmUwL{1I(@xTcd(1T(ot# zQ8@|QB&oA%VI6gn^=!_v)SeO)d`3{ewC>T3XM2ZqXV?iJKc$ft~<<46c!aV(J1mq1tLFMB0Q_){R1qliEw)EIh?S*NbRo*>YaPx z2D-q!@M}X!8+eqQe9(&`vcyr9*&Oc9DxIi1?hcoq6i$Ah{XCaH^2(3TA1)Kpu+!qk zA@V)hERaLu1FN%*CTT?U)U3}+-q2_=P0!NO%*+f=0%Wimi9$O7C`K!{L9kB*slT?q zUcI7*#C3?0;`R1E9%YCjZ^&A%sl;VB6)!NN8!ilSF2s{jaYk8%7*iwJVYB!}O?`NH z3i_o?`Ay@F!YSHq7T_a4Hx}qC1`Ys?_byXR)+^(UW^H6<{Jzm;NPkU97r0{^fT(G3 zA;><1llKwo;%)@{#|9*KE2Dmt;(B|5Xn)(d7V2nr5OXUnA1y_!SW`EtahHzmtl7EE z%djW%*H&HXZ5G=Zciw~l@@5<9~SRg`>1sdv54 zxFT-jCM&GG@`Q{Ed)0jXg#Q(;FzY%A{D;AwhdaxE884#bo;|{{h3OhPo0zbfk;Dak z&K2NDkc8^wVPB=SuB`+^8?cY^RCi~h^*4EmEc?J58r@|g3@t=ykaw*U{ z7v;3}@P2CDd|+0TV}fa|3wl21cs|OFu95chX_S0!)zbD}eUfC(!|&!sVnQ$17U~i3 z0k=jQ+>~NKF!oc>Kff(i>j!z@pZJbZ5Qp)A$c?DsJ8AAv!O6p8|34Q%YV*_nJIhup zmQ_{jUUf_x$nzc!4cNy^2`mY?*);JNgVn<>CsVJYluh4fgd_lF1||t597+ld|`Ww&*4Hb;}rzPmefkY`>P)eSO9!dk2T9lx>3Nj5=Mz z>r&3-+b)2!U(?WAgFX*rf@W9Zs)AS~lgtt0D77}&rQM~)i0CR!i>JVNn(;mN6vgZBRDJTdsnC?L>2H3nvZSp}#S z6*9#|of{57Sm7ktIRid*9b3ZPg&%fX92~R}5M69&e`W5`q8wIvKfBufD8f~ti%ujG zOKrw=EiJwBQ@H^*Kw5USk7cR`7;^B0t+_@D3FT&XdE}c8tK%QmNSn;A8RAsMn%(|0 z_}jjAHPj3;YFouX*X_FojE7Cjxz=b5i*s)&Yd&bUzA+NKT|Zgbdbmf54f|QjdK38q zi<5!1eI+@#xyQUC|DfNCc{vl9E=gF^==yjQil0#7c-)K`hM1O%+v4rCu<4wKEeA0> zEp7n)lZbgQlME&N{V?)eCoEp(d6K!Ss;kAyp#QBJcej|g)B$R7KOOkifc9VnF zpKF%Ab3TXaX3pJr!NN3W-J#nLcKyGkvKH+HgbCYH}OT?)qCnEf9AXZkAVH3MBfRj~6fiIx9-31EklLu#&A>uM1w2k;x{p z6SI?Q5Rg<8S^)#s7ktzJn2#%93?7_*{LTCC-tM45qH{l**RpP#OJ?_o|&r9_@2w=JQ0!~pTA3FNiUVF zjRt1OxG5gVaVzD&sIKBRWsLqX)%Dkp^<7D*ZZlOm3zvdK^caRuw0>+%#d)V}r&k&S9MyDr!%#@BU!SxwyIS8y<#pz4TMM)V&d^NaNs%w$r@xK#Z3m-2Z*B z!#C;VD$dR|<3`KMGMYA6xX-+QD(`rW%C9UZWiLh9%$D1dG#BLbF0BPZF6E_5rP3E_PtxKxwhc&v~_AC^KGDil_tZ4XGnVb_$U_s<> zm8kOFv>8SO#Z#<$=3;#hN0AoE1Eo}p(7cFS7Qu%^IP-@56DRm6;s!W0R~nyzVbeB3 zPAN{zeWb;hUGr&tp1Tb%L(Z#nGF@88afdvP=TZ9_k=he-T;vK+PJ?P6ZmqD(qF2)s za2N9|Lc_5Nh35`gW$V?KI?Em}*YAvfg$3DWNG(QvSZl?m(ctUi;Jj>c8s=iGQ_8IM5DCuHH6)h}yp2H=v=D>3DC$o5 zULiAntcT_b0+|=uYSp|RU-2AMnA6H6X~WBacfvSg6(!cva9ZpD*PX&B$NOGVW7m4Z zwa-Ri?VbD4_e>?M_?{Gp5;i_LZoeQ02^su&$#yDX?_v;bcFNw!ZP<6Xv&q9brr24? z|MPgFAc|V;-ru*smLhtJwEd+tn+gNbYoIlb_Kua^3mizF_sOpaD<1}%2z%fRbie!kaalVI{ zp@PyqhIH`4Lsqp;dXPhYq~D8f_H6FmSVw-c0o;ya;C8Y>viOHkmc!hn^U?c42ZCH^ zPvXs&ZghbhD2ne4J#b17FiS1I9RZ}k{S#@9{3>3owZjjy1{zN14ROf_w3vGo{JOw_ z5LgnbR;Hy3#ZJxN6{=$yTGHlT+Ef*p(!2*(M=pwq@gO`fH0Dr=&t+`4T`zSS&3H_CR^wcr&oGobo(9^R&aR88N zpw8q{)!yFVT7gxPn;IJlWjTZ@;6^gu0o~Co*Y0Z@emdc=ZP)|VUtU{c#1q@-m_(_F zc1`xg?iSXAbKiaJX8bOLsLi6+@?>^2T?51nOC5Th3E$~E6NxFrub(x#dXlO?;HtC3wTw{sEq|t|$syXv8Tfi8aLLm->hWZycx7?T zJAi@9^p4)TX$*q+{W7YJe2KLA=_$$-H9nhPJihFrO_S8hL+vnyy}LF)%0Bq3`+#x! z9*bF7ccIkdCZ@bjMt&SE&fg93dDU%csbne!aFMjR)C1<>dSOfAuTm{~rfOo&wrBMJ zi&P9Lc>oaIV)w+sO?^X8sjG-$-RvZfqbMm$3ez1Ue{7OHR`>b6Zq=_PrYSjFxJ0op{4-*e>HCa+ltbeRL&8rk zOpJhZ9$>74+^4>aDY$y1{+F~p?}C)d=kkO*yn}m+Ajw3dOKVp@e;LX1bbqRk?i+lw z|D*uJfF@Z)tVkhWM8?V&E# zyTmdhV1UEb^kae@-je}deN9LG-8T#3h1#ojCe(gby>*zW``~(Lb6U7b%MwpdqEq(K zEAS{$i7H)RbG~^`>SjFQj+Y?^Ft_1`?au+^$%R3VO1zaZ&?NS4Ry^!zZ^1c#NF#h@ z0TD8T#jmQSaL?JG8@5uub}qy}n+?f&XZkDn47o*x8=R+CS@9|@+5Sc{deuI{#-k@8 zGwVmk8dyt-NdoEExb}uMJCH}0UCrJi0uMR>5}ISY3=oBH&_hoY1^&b)i~yE}u?si% z-PVt&T)q;ZjLX0sQ_TA3bY0+hmGSl}+yLQsMKtH(tvC4_;^TC@vXLuNNTcgL$DnOmGiLhtBsMO^AN`&cRypL?h%J zBiGYxSf4}dsU(n)My$~2GQ(fLVZL#U{ho7-j1j?+)IK2=G zzXCkvL!y~{frb8dl#NEpiJ)7iad@m8(PH3p4?x|-%d5zWr95 z{rZdqX#)sbTEuODXWBnoDA=^8YbJDSV-L>lfASXZ8D5y&t!Z16)p2XHLUQ||$XzhY z(ZNTOhU=WEWxG?AOmpj8K~s1|a(9*t@!RB$%7U*=_M=t5`sWAFyuz~O>Pcjl@Xup- zgO1W}S3KEY&FGc`(1n6n{`G2ikZF>bki9HXRA3j<&l!tlbJ90F>rt$!$g75+5bn&= zjyM80QWmZjI!*;6oH#S|oUcV47FQsDUj%8+H$#7kjT51X^Jtx)%R6|}%#Dzl{ml^0 zsv`Nn-|Bz+48SiLI79mr$g&j&34dbw@n{EdZCF)Q;Eel#;Nmcdr^kRV94rNTeQ>Vz znJP$)fOxR055Bx)K9o5)r}JEv*;cD>C^DQx@@g87^oPS)Thwn;1zXm|@zi=;a?}5h8y* z6>(bt{|;@&f#h3nUIC~HE_8P)0gPfgF)Iz@RlCu`TI%(q~$n4sNz_?{|9BnSz}B&7{#_ zK1qBPIgO|{V&NqKX{rq+Kghb{e3jx$f^oK<{_owdP6x{tVp%vtu+-oKp~{XTyKKwM zX$Z`c@2!q%PLTgNKUeKOH3e?Z#(AjRAjfx2O^o-wLC-f~kXBCsjG2SB4k!3w&_%ssqiht1fi`gwthS zZRJxsc=Hc02T0kCbeye6=v`L}H=CcUFBS95I`opHXTIPR!vcLUKAVpo{skf;5|%cj zKZYwozQ@0;jmm7Ewzi zo<*oL>r^0lz>yz>?Cy#9!RQ(wwu(u2d3jTu6aCREon8S6b$ev_gGij5MEh0OwVHeY z3JMHR>*HK->0zGG9~TkshQO@B>eP?{hJE$f;3N>uRLhJ}P~ZraSC!2Z-m?eb14#V` z%Wf}!yyU^lkZyZXi204#!G+O?Q@ceB{!4N<(Xh3BuOxshEnNU26-F#`#RIs>N}(pBW@Si2rp;jR0tbkkeB?zr zS^vJtRoNXb>y}tW?zt}O@HIPqMztv8X1Mb1o1(k)Qcp6Pr6uU+Wr|!Hv7+$?#M_2O z8ozNt-UfLk4P2gUH6A!~G!t9m9h^|<)O4k5$cNw60eE=UoqqjQ71i%yE>IF5MMw53 zoVZpnlyb}7VoR-eL}JL|uKeGZGj%Bhl-tR>S%pT0QE3%}REJ4vlQXBz;^otxhg?Ch z8XD=ERaU!$Uo=nzVP$E_ymK_%iP6+MG{s;{Y7rF$-fQvmr}-!7R+5kFfp=OE?phks zAIRMnzl_f-n|fdFUx?=;*-?y8#j=PGKPpOOOfX}Ic6w;#a)+T)JYU|+Xv2w$zY|)U zEeeU^HM+hO--oSU>4i-+iF%MO_+IX?wo`R@!WLpS_grU1%73579~%ph(hCzw#gqKS z33(@oiGv3~@~gXqf5#i|_#YMm|B*Feu_oGLserI4H_P&w_AZb(3Isb~x3Ld2CgpT^#omehU$@8! zZ37~|Sa6Xc;y@q!+6z@#hh!4ucXrj8>Qxso@J<)u1I)@I5I^A46Xis^4@P!i0{?O+ zk)CZ~poU|sFD2L)#iE|&ssJ3xPipy!K=bolV9l|2Z(i}*43Z1Wl>m~3P4rKR z;{jYf=VLJmi^x2<{AMKuKw`P)#B;8nQBOIhHy->XNo^z$xthq*cY@X>W!5<4<@4FX zNAk9jj2q$VscrAdjGHmRtbN?guU-Ze<)BHW%*jo5k{5v?@U7yU_yhoD$uz_q-~545jZuxv;JUQ*eFqk?xfP@lh~jP(N?2I0NIZ-q zDGD#GS$Z5%#81&o5Ufv=)9xJ28~UMS`u^V4={bp#DxfwlU7@e?)*KGps|+y(T@tnr z9A#fLvb5wqpXG&eyWHhX@kN1}iO>(98#j(F*qUrT%3$LWY&VnO9gyxolrhty?u8%M zar#N)92>LMOfsB>_D%XweB1a5z8o_t7nV53zGhsGH=Ml{GE->_3^aZ?i1k+KH{Bi* zY{{urjeCUUx{4awMMqbyudOM4lcFe}f0kQxel&TCX;q8#ItaBSss?l>cfYcppL667 zS>TiWKH{ZWLw~L%seSo-t#ZVhl2DGsZb6V3qms|C<$Uq?0!WD znTe>ujm8kZr!xr(ULadh!(KEI*eP2e8ztmktEMSwD&hN43ddd7xbRW-tc40~ z19$nWlggKs>s;Od2Iq;+HaSzqE~nHmhvFSvxIn|naZo8v~4WofUl z>!4oJlcv$-(Hu&G#ZJ_w5Z)n~Rwk6YVkfc4?7^k&H4vyEOMEwEPa;GC(@sG9UK0l< zym3g}=fXdvShWk}JWOfm_hXjhW6NC8L44=y9MCIOFwlD^9541durm zIjxI`e%J5;RSEZ-PK64!Z$8JYxg)OYus$7X)=3YXtpuw8`FEZoHX-T27L3^3mCkP{ z&5K05BG=29L~TDoxs)Ze8YnCtB6r6s5%IM>J{E>lKnexjk zF8wpQnq>*y(C;*VyBSQLL0w@L?tQ?-PuO>uDOcCX?6xMc;$ZyH<_&W`uj1gXTP$N^ zG4Xa31VfrYj;M^;f(-Tw`<_7wa3DmU;dQiQf z7NxutM)uz=k#Ko!M0*iv^qY@@ibmclp2|7Ykd5wdL5{;9N3m~n4g=tUwe;P zI25w!A{9r;$eMW>q{hpo19Bk1pe=P>6r$o%=>7_cjN&Tm5M|IJuUvH+AK${CJX4oU zgO6^=eBKAuGz|tm+nSrK8|c$@b06AJVIe41Kb6p*)`8SjV>XRLlD=n zxmF_SZPNO?HOkAGmreqZP`zhDat0zvL6TUJs#jj+mv!eE2D(4H^wQ8v?J{{F_uNf{ z3Guwlmr_Y+?1xwv+DlCV!Qxf3`85lI9<3MYLPv#eKnDUu^wHQ zc>gm5549XSAWHZ;ccVn65dF5Y_!SFO%Z|}Q(6SZUI=Dtc;z5Ty%nrLYb#L*-Yh(x- zSIj@A+IWZB(0~zQg=&PNK%${P5hZ>29oZHuVGWHXY$x1YFsQbXHgN={wk@*qqJ+Nq zd)egXY~a_ZOiJe;TU+HKlsyJTMfblt8%od5*(H)*Q$D;z+^%AQ4mXPuX2k}%-4;79 zmQ1FAba2Ra`Bcxdj1l&?kFD%K^S3JRgKXK4^qjwecz_P2uJ-l zC)Qvqm+~M!v43_gwKDlR1nJf$++0o6yE@XCdZL3q)UgB#ypJ#vJ8S*1wxK1+=6B}+ zXR*cqf>giPZZtBQvI{Zak5z&s<%W6@C}Kc7|Jd$GBC>hYST1Qs6_hTGb>DuR924B0 zN83(4+CxS$>H&|*-r;Fo4NfL83)iN!YZ&TeJH98$Hv6Ebv4bJ|{_ja0c;iH3BS>3^ zpqgshmx8R31o2gdvH`OqjyW=UU6imxAx*C0^Zy99KL{oAvkpUJI(*CnkaZUKS|miv7yJG9ATWhm{X zmhwPou-YzMm|1!Q!U)jjx%z~gla=8UD)w?G&Zaq~DL{YDwlSN`Dnf>gnqOEH6`e=5 zK`qGvB4v}6phVXVBt;`Goq9`6$1(ekF#8@rQR!O?lVvgou3PA{Mrgg$a_qp=fEaM+ zd)RS3^IyJ;lNL~f*%#*d`QhDdtk^TrNIS|sGACrecpC80;-?Fs23-ZoFWU}~?O7@t zRJMKubhf|4AK65+^Yw8fyef3O1aA8v$s3mu7PHe^U+V4qu@K`r&lUl#^MSr$PX__o zkc4H6xZrmj{B9ymd8uZ1l@104i9rzScjn&(C@ri42@jd|ET?03nMCrOz62_&EiK<& zSBCb#CxX4Kax$9yU;Qik2A;XS4l0o}3esA}H7YGS`LFZ+Cp-+Ao3iV`;Y2#t+RBw4 zx0Nc0Q9y%mXU8X3P%JXaJSA=%)~{Chg+d_{`+@cih8jx$RRzetz1P5XI7rt8+K9*g zkSIZ8rn1WK#9AdD3qWOXE$*F3Ot={(vVp^%iu~vZN~NYgy8_O?l!!1aW}T^|BNP&6 z0?qjrcZN zmjmPbA_FH7lrCAL1d^70)DpX)@;aCfO87MXaxB1q=%jAw{{D`eJ!d-BNT7BMlMWP}{ZZ&o`DY!}ep;HhTV*iZR2Rod;vAPt=MM&iugW*ReqJUt5Qt_q8>ioMMBX>R9!hDFUD-8$eYs z1-TtSGqXUHgLC2i8u*t{Y|w|+jMebIyJ4s^A?cD}pz_yAd)%*nkt{$;7Zl-taBgGY z3@mR5iYU7aF`|s8$6+Otgv24;=D;){kh=%;5zgNp{HcTraHisq6ZRfb zGW_De>QlN^)>%P;wg-4IfgjGe)9@8oA5f2u;i&iuD70ZYZG>GVyG?KsVh7^@q^+_&<9k|1f{n8Ys}&4 zar=)5U>;^OAAH~;qzbCyEiJ*~gbv|vsZP*7fI2Zi@i+OI%Qu*&(tT@erO6Mb(Z$59 zguP#oe4eqid_2;#q}qW|`vO7O$`jJe$IvZwKK6c?Xzh#3XO?(!b^2k4;!# zYGW=JqVe>I?z~`PT4Q2xwFFNu6ey9UCv31nPenw9f8bRc#Vg5bJF+YgK;aIo$ualP wqI_@;Bx5sQADwv9=?)5}0VhV#cC~Kt`tEf9DgFWeNC#x3htMsB-+J`_0Fi|iga7~l literal 0 HcmV?d00001 diff --git a/doc/html/images/home.png b/doc/html/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..5584aacb097a80e66a5320312b6e4eb017af1a06 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9nKDRM~@s%h>KBER+u?+=H<(mwr$-K=fo0^iDsNj}a zlv + + + + + + + +]> + + + + + + + + + + + + + + diff --git a/doc/html/images/important.png b/doc/html/images/important.png new file mode 100644 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/doc/html/images/important.svg b/doc/html/images/important.svg new file mode 100644 index 00000000..dd84f3fe --- /dev/null +++ b/doc/html/images/important.svg @@ -0,0 +1,25 @@ + + + + + + + + +]> + + + + + + + + + + + + + + + diff --git a/doc/html/images/next.png b/doc/html/images/next.png new file mode 100644 index 0000000000000000000000000000000000000000..59800b4e87f60c0e3383ede2b384b9be0f5ffe8d GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9mdAS+qP~A^!HU$R#>ro>7z#vFJHct5EtX@VE6z3e?1}lM4)<}k|4ieAQuK0 zgzld^2NdTl@Q5sCVBi)4Va7{$>;3=*RZCnWN`mv#O3D+9QW<;`lZ*0mQ&Tb%72Gn5 zQp@v;vWpdbBNU7b3{2X~)|>}w5Cds&E=o--$;{7F2+7P%WiT|*H!#*WFgd=yhZCqG z!qdeuq+(9;4PKV1Hyx6gnJ3)X*T8%1&d~!CcvGht8EkNzY0cztDB;<=un7h&oMQJ5 zOnAh^!sYOgmxqZbU_wKJkwW(@g)2%k8?y8!<$B~f6iH61Ubv5eVdat_!+^S!9H1Qx Mp00i_>zopr0Jz|Gn*aa+ literal 0 HcmV?d00001 diff --git a/doc/html/images/next.svg b/doc/html/images/next.svg new file mode 100644 index 00000000..75fa83ed --- /dev/null +++ b/doc/html/images/next.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/doc/html/images/next_disabled.png b/doc/html/images/next_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..10a8c59d7b3741260b7bfe918b62d0670cad8433 GIT binary patch literal 1110 zcmY+@U1(Ba7zgmjDRvTtQ&L$$oM7uF2)$_$L2619oS2=UZrYjBy6mRGh`_UtKA{mr z&7hmQ>n7-KH(k`l3W_tgna$01TCHhYnyqEo%+oU}@c)DNeRv<Aw4@Ln z93k3vZsg(J43U|lVL3RF9xoOO*=)8_spRvsnW@QgsZ^`gs@1Bl&*gH{hGA%$HjdJ0 z0!^YRltHf%-=x_aG>vj-2F;>8dW+_ej^3ep^d5ac3+N+SL}4$&L!O*Z;pbcwggWI6Ht znSIeG^MqH2daRdq_j=NKWUEDx?&yZ{K(t0hNp-olr%gM()V(P|g0v^Rdp~d9J+QaF z!E^J*7D+vMK=CJy#-QLKKFMEfm#>;6HRZnKq86dtH6)t7^tAr+x)|r>qo?RMm@+$*>08dLHng9R* literal 0 HcmV?d00001 diff --git a/doc/html/images/note.png b/doc/html/images/note.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/images/prev.png b/doc/html/images/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..d88a40f923e3c554125f01cd366707c60cfcad04 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7$jYX~xFJ+qQ05v3zNuzpt9I!sW}Cx;s0Z9qba~V*daCKl2PvGf+KGNswPKkP8D0 zLif*|1B!DNctjR6FmMZjFyp1Wb$@_@swJ)wCBgY=CFO}lsSLh}$wm3OsVSL>3T~N2 zspa`a*~JRJ5eh~I1}5!gYt92Th=DXX7o{eaWaj57gkwm>gfq&(JZLf6ZeXy%aV8%R&r1O{j}20XTDX{IIykaj z4Nx#hVBm6cU}k1+>Qw1kB6gA`rFdeFa~bob(-ZFQzAc!;#K4>y+$E64`2%PJgQu&X J%Q~loCIAR&aHIeL literal 0 HcmV?d00001 diff --git a/doc/html/images/prev.svg b/doc/html/images/prev.svg new file mode 100644 index 00000000..6d88ffdd --- /dev/null +++ b/doc/html/images/prev.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/doc/html/images/prev_disabled.png b/doc/html/images/prev_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3c17e02d156e7494dbab2f9cd66af46af2358c GIT binary patch literal 1109 zcmY+@QAkr^6bJBgcW-U!1{X&)qK7M_5M*o=8THWJ+-L(GYZ=trG_;qf9*iP{hOHkvdvc6%2vA_iD3U9-0yJDcRs#*KhAd};6H4s z+g3+J7N6H0vA^EQ+H!#9vbD6`Ds$w15^-3cW^4D2@1tYP~^k(L0ny@6iX8LwWQOEu&AU zfQo1ZeMa02wZ5RQ=o?x^-x0S~tsm$oT0_531^q^UP!(}k|Km7w>=EA^b6?PZ^nZ>c zHKa9-^N)RQXXnMy?rd*3eEalZV2h}d<7uSYUol!mlhPcO#b+0y%6jsu%~o|iC&Tqk zjZ&+ugrhej$H%%!n2hY4Bw5`RXuNjl<&!a&&LzU`dgFGUS~a!}3S4TRbC4w09~9k9 z);;a{R+T2~>V^|?*&xZWmO@B-pr0ES45n;vpEFE`ily1KnYZ`aRH^GBuiSf29T*)S kmrP2ur(nL^ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/doc/html/images/tip.svg b/doc/html/images/tip.svg new file mode 100644 index 00000000..cd437a5e --- /dev/null +++ b/doc/html/images/tip.svg @@ -0,0 +1,84 @@ + + + + + + lamp + + + + office + + lamp + + + + + Open Clip Art Library + + + + + Sergio Luiz Araujo Silva + + + + + Public Domain + + + set 2005 + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/images/toc-blank.png b/doc/html/images/toc-blank.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffad17a0c7a78deaae58716e8071cc40cb0b8e0 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g literal 0 HcmV?d00001 diff --git a/doc/html/images/toc-minus.png b/doc/html/images/toc-minus.png new file mode 100644 index 0000000000000000000000000000000000000000..abbb020c8e2d6705ebc2f0fc17deed30f2977a46 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL literal 0 HcmV?d00001 diff --git a/doc/html/images/toc-plus.png b/doc/html/images/toc-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..941312ce0dab168e0efcc5b572e387259880e541 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{S^Z=hXV#3jn*#4_ x=vj5p^wF)?xpx*Du6ddKc=uuXxWffq{6A*KyDFWJxdXJF!PC{xWt~$(69DY=mmvTE literal 0 HcmV?d00001 diff --git a/doc/html/images/up.svg b/doc/html/images/up.svg new file mode 100644 index 00000000..d31aa9c8 --- /dev/null +++ b/doc/html/images/up.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/doc/html/images/up_disabled.png b/doc/html/images/up_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..e22bc8712192df3a8faa3264b0ec71ff3aaaa96c GIT binary patch literal 1115 zcmY+@Z)^*37zgl2dzmw~oK$GMafp#cWXs;jyt!6uYtl7UeZec8`SV6X{7De9Dw2(4 zm>26}32(gcW*OddFPdfV_NT?wYHgXdTAfl#H+r5D$$dY`-IIHMf0Ezb_xin_j)wY; z^+eR*>U8+HT56YQ=DTxXyvjv5Ve7IHJsG&Xy#F3Q%RQaGE}~1@h=SLMDmvFJ(fJml zT!5&3h-ky9p~u59A~Sj2e&_VmWGa=4$F*XyxL7D;GnsO^oJh>ZqBHq?zEmnDlXI0y zMc4I7gDEtPW>6Hx&`b0Ry+#^}qc><4CD2?%a47s&%&rYXwnm@^2oK6>2RiC(}ybQxc@;;j!lN7xJKGXK5u*58HCq zi)yn~zbYIeQ(ynxTdSHPs@k~jXquO=uiH1eY2@@XO+VY(#*4k%x7x*t?&AUCt?S$* rDO!X~;(e<^-4?Sb9}HJ}I(CrQLYik+oARjr0iT6jPLE^M9tiybIrJyp literal 0 HcmV?d00001 diff --git a/doc/html/images/warning.png b/doc/html/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/doc/html/images/warning.svg b/doc/html/images/warning.svg new file mode 100644 index 00000000..fc8d7484 --- /dev/null +++ b/doc/html/images/warning.svg @@ -0,0 +1,23 @@ + + + + + + + + +]> + + + + + + + + + + + + + diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 00000000..c9d159d1 --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,53 @@ + + + +Chapter 1. Boost.BigNumbers + + + + + + +
+
+
Next
+
+
+

+Chapter 1. Boost.BigNumbers

+

+various authors +

+
+
+

+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +

+
+
+ +
+ + + +

Last revised: July 08, 2011 at 18:51:46 +0100

+
+
Next
+ + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 new file mode 100644 index 00000000..24b697e7 --- /dev/null +++ b/test/Jamfile.v2 @@ -0,0 +1,189 @@ +# copyright John Maddock 2008 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt. + +import modules ; +import path ; + +local ntl-path = [ modules.peek : NTL_PATH ] ; +local gmp_path = [ modules.peek : GMP_PATH ] ; +local mpfr_path = [ modules.peek : MPFR_PATH ] ; +local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; + +if ! $(e_float_path) +{ + e_float_path = ../../../../e_float ; +} + +project : requirements + $(gmp_path) + $(gmp_path)/mpfr + $(gmp_path)/gmpfrxx + $(mpfr_path) + ../../.. + $(e_float_path) + $(gmp_path) + $(mpfr_path) + $(mpfr_path)/build.vc10/lib/Win32/Debug + msvc:static + E_FLOAT_DIGITS10=100 + E_FLOAT_TYPE_EFX + ; + +lib gmp ; +lib mpfr ; + +E_FLOAT_SRC = [ GLOB $(e_float_path)/libs/e_float/src/e_float : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/e_float/efx : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/constants : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/elementary : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/gamma : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/integer : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/tables : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/functions/zeta : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/constants : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/elementary : *.cpp ] + [ GLOB $(e_float_path)/libs/e_float/src/utility : *.cpp ] + ; + +lib e_float : $(E_FLOAT_SRC) + : + [ check-target-builds ../config//has_e_float : : no ] + ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : test_arithmetic_backend_concept ; + +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpf50 ; + +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpf ; + +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPZ + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpz ; + +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPQ + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpq ; + +run test_arithmetic.cpp mpfr gmp + : # command line + : # input files + : # requirements + TEST_MPFR + [ check-target-builds ../config//has_mpfr : : no ] + : test_arithmetic_mpfr ; + +run test_arithmetic.cpp mpfr gmp + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_arithmetic_mpfr_50 ; + +run test_arithmetic.cpp $(E_FLOAT_SRC) + : # command line + : # input files + : # requirements + TEST_E_FLOAT + [ check-target-builds ../config//has_e_float : : no ] + : test_arithmetic_e_float ; + +run test_numeric_limits.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : test_numeric_limits_backend_concept ; + +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpf50 ; + +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpf ; + +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPZ + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpz ; + +run test_numeric_limits.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPQ + [ check-target-builds ../config//has_gmp : : no ] + : test_numeric_limits_mpq ; + +run test_numeric_limits.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR + [ check-target-builds ../config//has_mpfr : : no ] + : test_numeric_limits_mpfr ; + +run test_numeric_limits.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_numeric_limits_mpfr_50 ; + + +run test_numeric_limits.cpp $(E_FLOAT_SRC) + : # command line + : # input files + : # requirements + TEST_E_FLOAT + [ check-target-builds ../config//has_e_float : : no ] + : test_numeric_limits_e_float ; + +run big_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : big_number_concept_check_mpfr_50 ; + diff --git a/test/big_number_concept_check.cpp b/test/big_number_concept_check.cpp new file mode 100644 index 00000000..466af22f --- /dev/null +++ b/test/big_number_concept_check.cpp @@ -0,0 +1,100 @@ + +// Copyright John Maddock 2011. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests two things: that e_float meets our +// conceptual requirements, and that we can instantiate +// all our distributions and special functions on this type. +// +#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false +#define BOOST_MATH_INSTANTIATE_MINIMUM + +#ifdef _MSC_VER +# pragma warning(disable:4800) +# pragma warning(disable:4512) +# pragma warning(disable:4127) +# pragma warning(disable:4512) +# pragma warning(disable:4503) // decorated name length exceeded, name was truncated +#endif + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +# define TEST_MPF50 +# define TEST_MPF +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR +# define TEST_MPFR_50 +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) +#include +#endif + +#include +#include "libs/math/test/compile_test/instantiate.hpp" + +void foo() +{ +#ifdef TEST_BACKEND + instantiate(boost::math::big_number_real_architype()); +#endif +#ifdef TEST_MPF_50 + instantiate(boost::math::mpf_real_50()); +#endif +#ifdef TEST_MPF + instantiate(boost::math::mpf_real()); +#endif +#ifdef TEST_MPFR_50 + instantiate(boost::math::mpfr_real_50()); +#endif +#ifdef TEST_MPFR + instantiate(boost::math::mpfr_real()); +#endif +#ifdef TEST_E_FLOAT + instantiate(boost::math::e_float()); +#endif +} + +int main() +{ +#ifdef TEST_BACKEND + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPF_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPF + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPFR_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_MPFR + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif +#ifdef TEST_E_FLOAT + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#endif + +} diff --git a/test/linpack-benchmark.cpp b/test/linpack-benchmark.cpp new file mode 100644 index 00000000..27fdde3e --- /dev/null +++ b/test/linpack-benchmark.cpp @@ -0,0 +1,1257 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +/* 1000d.f -- translated by f2c (version 20050501). +You must link the resulting object file with libf2c: +on Microsoft Windows system, link with libf2c.lib; +on Linux or Unix systems, link with .../path/to/libf2c.a -lm +or, if you install libf2c.a in a standard place, with -lf2c -lm +-- in that order, at the end of the command line, as in +cc *.o -lf2c -lm +Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., + +http://www.netlib.org/f2c/libf2c.zip +*/ +#include +#include +#include +#include + +#ifdef TEST_MPF_100 +#include +typedef boost::math::mpf_real_100 real_type; +#elif defined(TEST_MPFR_100) +#include +typedef boost::math::mpfr_real_100 real_type; +#elif defined(TEST_GMPXX) +#include +typedef mpf_class real_type; +#elif defined(TEST_MPFRXX) +#include +typedef mpfr_class real_type; +#elif defined(TEST_E_FLOAT) +#include +#include +#include +typedef ::efx::e_float real_type; +using ef::abs; +#elif defined(TEST_E_FLOAT_BN) +#include +typedef boost::math::e_float real_type; +#else +typedef double real_type; +#endif + +#ifndef CAST_TO_RT +# define CAST_TO_RT(x) x +#endif + +extern "C" { +#include "f2c.h" + integer s_wsfe(cilist *), e_wsfe(void), do_fio(integer *, char *, ftnlen), + s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen), + e_wsle(void); + /* Subroutine */ int s_stop(char *, ftnlen); + +#undef abs +#undef dabs +#define dabs abs +#undef min +#undef max +#undef dmin +#undef dmax +#define dmin min +#define dmax max + +} +#include + +using std::min; +using std::max; + +/* Table of constant values */ + +static integer c__0 = 0; +static real_type c_b7 = CAST_TO_RT(1); +static integer c__1 = 1; +static integer c__9 = 9; + +inline double second_(void) +{ + return ((double)(clock())) / CLOCKS_PER_SEC; +} + +int dgefa_(real_type *, integer *, integer *, integer *, integer *), dgesl_(real_type *, integer *, integer *, integer *, real_type *, integer *); +int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type *); +int matgen_(real_type *, integer *, integer *, real_type *, real_type *); +real_type epslon_(real_type *); +real_type ran_(integer *); +int dscal_(integer *, real_type *, real_type *, integer *); +int daxpy_(integer *, real_type *, real_type *, integer *, real_type *, integer *); +integer idamax_(integer *, real_type *, integer *); +real_type ddot_(integer *, real_type *, integer *, real_type *, integer *); +int daxpy_(integer *, real_type *, real_type *, integer *, real_type *, integer *); +int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type *); + + +extern "C" int MAIN__() +{ +#ifdef TEST_MPF_100 + std::cout << "Testing mp_number >" << std::endl; +#elif defined(TEST_MPFR_100) + std::cout << "Testing mp_number >" << std::endl; +#elif defined(TEST_GMPXX) + std::cout << "Testing mpf_class at 100 decimal degits" << std::endl; + mpf_set_default_prec(((100 + 1) * 1000L) / 301L); +#elif defined(TEST_MPFRXX) + std::cout << "Testing mpfr_class at 100 decimal degits" << std::endl; + mpfr_set_default_prec(((100 + 1) * 1000L) / 301L); +#elif defined(TEST_E_FLOAT) + std::cout << "Testing boost::ef::e_float" << std::endl; +#elif defined(TEST_E_FLOAT_BN) + std::cout << "Testing boost::math::e_float" << std::endl; +#else + std::cout << "Testing double" << std::endl; +#endif + + + /* Format strings */ + static char fmt_1[] = "(\002 Please send the results of this run to:\002" + "//\002 Jack J. Dongarra\002/\002 Computer Science Department\002/" + "\002 University of Tennessee\002/\002 Knoxville, Tennessee 37996" + "-1300\002//\002 Fax: 615-974-8296\002//\002 Internet: dongarra@c" + "s.utk.edu\002/)"; + static char fmt_40[] = "(\002 norm. resid resid mac" + "hep\002,\002 x(1) x(n)\002)"; + static char fmt_50[] = "(1p5e16.8)"; + static char fmt_60[] = "(//\002 times are reported for matrices of or" + "der \002,i5)"; + static char fmt_70[] = "(6x,\002factor\002,5x,\002solve\002,6x,\002tota" + "l\002,5x,\002mflops\002,7x,\002unit\002,6x,\002ratio\002)"; + static char fmt_80[] = "(\002 times for array with leading dimension o" + "f\002,i4)"; + static char fmt_110[] = "(6(1pe11.3))"; + + /* System generated locals */ + integer i__1; + real_type d__1, d__2, d__3; + + /* Builtin functions */ + + /* Local variables */ + static real_type a[1001000] /* was [1001][1000] */, b[1000]; + static integer i__, n; + static real_type x[1000]; + static double t1; + static integer lda; + static double ops; + static real_type eps; + static integer info; + static double time[6], cray, total; + static integer ipvt[1000]; + static real_type resid, norma; + static real_type normx; + static real_type residn; + + /* Fortran I/O blocks */ + static cilist io___4 = { 0, 6, 0, fmt_1, 0 }; + static cilist io___20 = { 0, 6, 0, fmt_40, 0 }; + static cilist io___21 = { 0, 6, 0, fmt_50, 0 }; + static cilist io___22 = { 0, 6, 0, fmt_60, 0 }; + static cilist io___23 = { 0, 6, 0, fmt_70, 0 }; + static cilist io___24 = { 0, 6, 0, fmt_80, 0 }; + static cilist io___25 = { 0, 6, 0, fmt_110, 0 }; + static cilist io___26 = { 0, 6, 0, 0, 0 }; + + + lda = 1001; + + /* this program was updated on 10/12/92 to correct a */ + /* problem with the random number generator. The previous */ + /* random number generator had a short period and produced */ + /* singular matrices occasionally. */ + + n = 1000; + cray = .056f; + s_wsfe(&io___4); + e_wsfe(); + /* Computing 3rd power */ + d__1 = (real_type) n; + /* Computing 2nd power */ + d__2 = (real_type) n; + ops = boost::lexical_cast(real_type(d__1 * (d__1 * d__1) * 2. / 3. + d__2 * d__2 * 2.)); + + matgen_(a, &lda, &n, b, &norma); + + /* ****************************************************************** */ + /* ****************************************************************** */ + /* you should replace the call to dgefa and dgesl */ + /* by calls to your linear equation solver. */ + /* ****************************************************************** */ + /* ****************************************************************** */ + + t1 = second_(); + dgefa_(a, &lda, &n, ipvt, &info); + time[0] = second_() - t1; + t1 = second_(); + dgesl_(a, &lda, &n, ipvt, b, &c__0); + time[1] = second_() - t1; + total = time[0] + time[1]; + /* ****************************************************************** */ + /* ****************************************************************** */ + + /* compute a residual to verify results. */ + + i__1 = n; + for (i__ = 1; i__ <= i__1; ++i__) { + x[i__ - 1] = b[i__ - 1]; + /* L10: */ + } + matgen_(a, &lda, &n, b, &norma); + i__1 = n; + for (i__ = 1; i__ <= i__1; ++i__) { + b[i__ - 1] = -b[i__ - 1]; + /* L20: */ + } + dmxpy_(&n, b, &n, &lda, x, a); + resid = CAST_TO_RT(0); + normx = CAST_TO_RT(0); + i__1 = n; + for (i__ = 1; i__ <= i__1; ++i__) { + /* Computing MAX */ + d__2 = resid, d__3 = (d__1 = b[i__ - 1], abs(d__1)); + resid = max(d__2,d__3); + /* Computing MAX */ + d__2 = normx, d__3 = (d__1 = x[i__ - 1], abs(d__1)); + normx = max(d__2,d__3); + /* L30: */ + } + eps = epslon_(&c_b7); + residn = resid / (n * norma * normx * eps); + s_wsfe(&io___20); + e_wsfe(); + s_wsfe(&io___21); + /* + do_fio(&c__1, (char *)&residn, (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&resid, (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&eps, (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&x[0], (ftnlen)sizeof(real_type)); + do_fio(&c__1, (char *)&x[n - 1], (ftnlen)sizeof(real_type)); + */ + std::cout << std::setw(12) << std::setprecision(5) << residn << " " << resid << " " << eps << " " << x[0] << " " << x[n-1] << std::endl; + e_wsfe(); + + s_wsfe(&io___22); + do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer)); + e_wsfe(); + s_wsfe(&io___23); + e_wsfe(); + + time[2] = total; + time[3] = ops / (total * 1e6); + time[4] = 2. / time[3]; + time[5] = total / cray; + s_wsfe(&io___24); + do_fio(&c__1, (char *)&lda, (ftnlen)sizeof(integer)); + e_wsfe(); + s_wsfe(&io___25); + for (i__ = 1; i__ <= 6; ++i__) { + // do_fio(&c__1, (char *)&time[i__ - 1], (ftnlen)sizeof(real_type)); + std::cout << std::setw(12) << std::setprecision(5) << time[i__ - 1]; + } + e_wsfe(); + s_wsle(&io___26); + do_lio(&c__9, &c__1, " end of tests -- this version dated 10/12/92", ( + ftnlen)44); + e_wsle(); + + s_stop("", (ftnlen)0); + return 0; +} /* MAIN__ */ + +/* Subroutine */ int matgen_(real_type *a, integer *lda, integer *n, + real_type *b, real_type *norma) +{ + /* System generated locals */ + integer a_dim1, a_offset, i__1, i__2; + real_type d__1, d__2; + + /* Local variables */ + static integer i__, j; + static integer init[4]; + + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + --b; + + /* Function Body */ + init[0] = 1; + init[1] = 2; + init[2] = 3; + init[3] = 1325; + *norma = CAST_TO_RT(0); + i__1 = *n; + for (j = 1; j <= i__1; ++j) { + i__2 = *n; + for (i__ = 1; i__ <= i__2; ++i__) { + a[i__ + j * a_dim1] = ran_(init) - .5f; + /* Computing MAX */ + d__2 = (d__1 = a[i__ + j * a_dim1], abs(d__1)); + *norma = max(d__2,*norma); + /* L20: */ + } + /* L30: */ + } + i__1 = *n; + for (i__ = 1; i__ <= i__1; ++i__) { + b[i__] = CAST_TO_RT(0); + /* L35: */ + } + i__1 = *n; + for (j = 1; j <= i__1; ++j) { + i__2 = *n; + for (i__ = 1; i__ <= i__2; ++i__) { + b[i__] += a[i__ + j * a_dim1]; + /* L40: */ + } + /* L50: */ + } + return 0; +} /* matgen_ */ + +/* Subroutine */ int dgefa_(real_type *a, integer *lda, integer *n, integer * + ipvt, integer *info) +{ + /* System generated locals */ + integer a_dim1, a_offset, i__1, i__2, i__3; + + /* Local variables */ + static integer j, k, l; + static real_type t; + static integer kp1, nm1; + + + /* dgefa factors a double precision matrix by gaussian elimination. */ + + /* dgefa is usually called by dgeco, but it can be called */ + /* directly with a saving in time if rcond is not needed. */ + /* (time for dgeco) = (1 + 9/n)*(time for dgefa) . */ + + /* on entry */ + + /* a double precision(lda, n) */ + /* the matrix to be factored. */ + + /* lda integer */ + /* the leading dimension of the array a . */ + + /* n integer */ + /* the order of the matrix a . */ + + /* on return */ + + /* a an upper triangular matrix and the multipliers */ + /* which were used to obtain it. */ + /* the factorization can be written a = l*u where */ + /* l is a product of permutation and unit lower */ + /* triangular matrices and u is upper triangular. */ + + /* ipvt integer(n) */ + /* an integer vector of pivot indices. */ + + /* info integer */ + /* = 0 normal value. */ + /* = k if u(k,k) .eq. 0.0 . this is not an error */ + /* condition for this subroutine, but it does */ + /* indicate that dgesl or dgedi will divide by zero */ + /* if called. use rcond in dgeco for a reliable */ + /* indication of singularity. */ + + /* linpack. this version dated 08/14/78 . */ + /* cleve moler, university of new mexico, argonne national lab. */ + + /* subroutines and functions */ + + /* blas daxpy,dscal,idamax */ + + /* internal variables */ + + + + /* gaussian elimination with partial pivoting */ + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + --ipvt; + + /* Function Body */ + *info = 0; + nm1 = *n - 1; + if (nm1 < 1) { + goto L70; + } + i__1 = nm1; + for (k = 1; k <= i__1; ++k) { + kp1 = k + 1; + + /* find l = pivot index */ + + i__2 = *n - k + 1; + l = idamax_(&i__2, &a[k + k * a_dim1], &c__1) + k - 1; + ipvt[k] = l; + + /* zero pivot implies this column already triangularized */ + + if (a[l + k * a_dim1] == 0.) { + goto L40; + } + + /* interchange if necessary */ + + if (l == k) { + goto L10; + } + t = a[l + k * a_dim1]; + a[l + k * a_dim1] = a[k + k * a_dim1]; + a[k + k * a_dim1] = t; +L10: + + /* compute multipliers */ + + t = -1. / a[k + k * a_dim1]; + i__2 = *n - k; + dscal_(&i__2, &t, &a[k + 1 + k * a_dim1], &c__1); + + /* row elimination with column indexing */ + + i__2 = *n; + for (j = kp1; j <= i__2; ++j) { + t = a[l + j * a_dim1]; + if (l == k) { + goto L20; + } + a[l + j * a_dim1] = a[k + j * a_dim1]; + a[k + j * a_dim1] = t; +L20: + i__3 = *n - k; + daxpy_(&i__3, &t, &a[k + 1 + k * a_dim1], &c__1, &a[k + 1 + j * + a_dim1], &c__1); + /* L30: */ + } + goto L50; +L40: + *info = k; +L50: + /* L60: */ + ; + } +L70: + ipvt[*n] = *n; + if (a[*n + *n * a_dim1] == 0.) { + *info = *n; + } + return 0; +} /* dgefa_ */ + +/* Subroutine */ int dgesl_(real_type *a, integer *lda, integer *n, integer * + ipvt, real_type *b, integer *job) +{ + /* System generated locals */ + integer a_dim1, a_offset, i__1, i__2; + + /* Local variables */ + static integer k, l; + static real_type t; + static integer kb, nm1; + + + /* dgesl solves the double precision system */ + /* a * x = b or trans(a) * x = b */ + /* using the factors computed by dgeco or dgefa. */ + + /* on entry */ + + /* a double precision(lda, n) */ + /* the output from dgeco or dgefa. */ + + /* lda integer */ + /* the leading dimension of the array a . */ + + /* n integer */ + /* the order of the matrix a . */ + + /* ipvt integer(n) */ + /* the pivot vector from dgeco or dgefa. */ + + /* b double precision(n) */ + /* the right hand side vector. */ + + /* job integer */ + /* = 0 to solve a*x = b , */ + /* = nonzero to solve trans(a)*x = b where */ + /* trans(a) is the transpose. */ + + /* on return */ + + /* b the solution vector x . */ + + /* error condition */ + + /* a division by zero will occur if the input factor contains a */ + /* zero on the diagonal. technically this indicates singularity */ + /* but it is often caused by improper arguments or improper */ + /* setting of lda . it will not occur if the subroutines are */ + /* called correctly and if dgeco has set rcond .gt. 0.0 */ + /* or dgefa has set info .eq. 0 . */ + + /* to compute inverse(a) * c where c is a matrix */ + /* with p columns */ + /* call dgeco(a,lda,n,ipvt,rcond,z) */ + /* if (rcond is too small) go to ... */ + /* do 10 j = 1, p */ + /* call dgesl(a,lda,n,ipvt,c(1,j),0) */ + /* 10 continue */ + + /* linpack. this version dated 08/14/78 . */ + /* cleve moler, university of new mexico, argonne national lab. */ + + /* subroutines and functions */ + + /* blas daxpy,ddot */ + + /* internal variables */ + + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + --ipvt; + --b; + + /* Function Body */ + nm1 = *n - 1; + if (*job != 0) { + goto L50; + } + + /* job = 0 , solve a * x = b */ + /* first solve l*y = b */ + + if (nm1 < 1) { + goto L30; + } + i__1 = nm1; + for (k = 1; k <= i__1; ++k) { + l = ipvt[k]; + t = b[l]; + if (l == k) { + goto L10; + } + b[l] = b[k]; + b[k] = t; +L10: + i__2 = *n - k; + daxpy_(&i__2, &t, &a[k + 1 + k * a_dim1], &c__1, &b[k + 1], &c__1); + /* L20: */ + } +L30: + + /* now solve u*x = y */ + + i__1 = *n; + for (kb = 1; kb <= i__1; ++kb) { + k = *n + 1 - kb; + b[k] /= a[k + k * a_dim1]; + t = -b[k]; + i__2 = k - 1; + daxpy_(&i__2, &t, &a[k * a_dim1 + 1], &c__1, &b[1], &c__1); + /* L40: */ + } + goto L100; +L50: + + /* job = nonzero, solve trans(a) * x = b */ + /* first solve trans(u)*y = b */ + + i__1 = *n; + for (k = 1; k <= i__1; ++k) { + i__2 = k - 1; + t = ddot_(&i__2, &a[k * a_dim1 + 1], &c__1, &b[1], &c__1); + b[k] = (b[k] - t) / a[k + k * a_dim1]; + /* L60: */ + } + + /* now solve trans(l)*x = y */ + + if (nm1 < 1) { + goto L90; + } + i__1 = nm1; + for (kb = 1; kb <= i__1; ++kb) { + k = *n - kb; + i__2 = *n - k; + b[k] += ddot_(&i__2, &a[k + 1 + k * a_dim1], &c__1, &b[k + 1], &c__1); + l = ipvt[k]; + if (l == k) { + goto L70; + } + t = b[l]; + b[l] = b[k]; + b[k] = t; +L70: + /* L80: */ + ; + } +L90: +L100: + return 0; +} /* dgesl_ */ + +/* Subroutine */ int daxpy_(integer *n, real_type *da, real_type *dx, + integer *incx, real_type *dy, integer *incy) +{ + /* System generated locals */ + integer i__1; + + /* Local variables */ + static integer i__, m, ix, iy, mp1; + + + /* constant times a vector plus a vector. */ + /* uses unrolled loops for increments equal to one. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dy; + --dx; + + /* Function Body */ + if (*n <= 0) { + return 0; + } + if (*da == 0.) { + return 0; + } + if (*incx == 1 && *incy == 1) { + goto L20; + } + + /* code for unequal increments or equal increments */ + /* not equal to 1 */ + + ix = 1; + iy = 1; + if (*incx < 0) { + ix = (-(*n) + 1) * *incx + 1; + } + if (*incy < 0) { + iy = (-(*n) + 1) * *incy + 1; + } + i__1 = *n; + for (i__ = 1; i__ <= i__1; ++i__) { + dy[iy] += *da * dx[ix]; + ix += *incx; + iy += *incy; + /* L10: */ + } + return 0; + + /* code for both increments equal to 1 */ + + + /* clean-up loop */ + +L20: + m = *n % 4; + if (m == 0) { + goto L40; + } + i__1 = m; + for (i__ = 1; i__ <= i__1; ++i__) { + dy[i__] += *da * dx[i__]; + /* L30: */ + } + if (*n < 4) { + return 0; + } +L40: + mp1 = m + 1; + i__1 = *n; + for (i__ = mp1; i__ <= i__1; i__ += 4) { + dy[i__] += *da * dx[i__]; + dy[i__ + 1] += *da * dx[i__ + 1]; + dy[i__ + 2] += *da * dx[i__ + 2]; + dy[i__ + 3] += *da * dx[i__ + 3]; + /* L50: */ + } + return 0; +} /* daxpy_ */ + +real_type ddot_(integer *n, real_type *dx, integer *incx, real_type *dy, + integer *incy) +{ + /* System generated locals */ + integer i__1; + real_type ret_val; + + /* Local variables */ + static integer i__, m, ix, iy, mp1; + static real_type dtemp; + + + /* forms the dot product of two vectors. */ + /* uses unrolled loops for increments equal to one. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dy; + --dx; + + /* Function Body */ + ret_val = CAST_TO_RT(0); + dtemp = CAST_TO_RT(0); + if (*n <= 0) { + return ret_val; + } + if (*incx == 1 && *incy == 1) { + goto L20; + } + + /* code for unequal increments or equal increments */ + /* not equal to 1 */ + + ix = 1; + iy = 1; + if (*incx < 0) { + ix = (-(*n) + 1) * *incx + 1; + } + if (*incy < 0) { + iy = (-(*n) + 1) * *incy + 1; + } + i__1 = *n; + for (i__ = 1; i__ <= i__1; ++i__) { + dtemp += dx[ix] * dy[iy]; + ix += *incx; + iy += *incy; + /* L10: */ + } + ret_val = dtemp; + return ret_val; + + /* code for both increments equal to 1 */ + + + /* clean-up loop */ + +L20: + m = *n % 5; + if (m == 0) { + goto L40; + } + i__1 = m; + for (i__ = 1; i__ <= i__1; ++i__) { + dtemp += dx[i__] * dy[i__]; + /* L30: */ + } + if (*n < 5) { + goto L60; + } +L40: + mp1 = m + 1; + i__1 = *n; + for (i__ = mp1; i__ <= i__1; i__ += 5) { + dtemp = dtemp + dx[i__] * dy[i__] + dx[i__ + 1] * dy[i__ + 1] + dx[ + i__ + 2] * dy[i__ + 2] + dx[i__ + 3] * dy[i__ + 3] + dx[i__ + + 4] * dy[i__ + 4]; + /* L50: */ + } +L60: + ret_val = dtemp; + return ret_val; +} /* ddot_ */ + +/* Subroutine */ int dscal_(integer *n, real_type *da, real_type *dx, + integer *incx) +{ + /* System generated locals */ + integer i__1, i__2; + + /* Local variables */ + static integer i__, m, mp1, nincx; + + + /* scales a vector by a constant. */ + /* uses unrolled loops for increment equal to one. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dx; + + /* Function Body */ + if (*n <= 0) { + return 0; + } + if (*incx == 1) { + goto L20; + } + + /* code for increment not equal to 1 */ + + nincx = *n * *incx; + i__1 = nincx; + i__2 = *incx; + for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) { + dx[i__] = *da * dx[i__]; + /* L10: */ + } + return 0; + + /* code for increment equal to 1 */ + + + /* clean-up loop */ + +L20: + m = *n % 5; + if (m == 0) { + goto L40; + } + i__2 = m; + for (i__ = 1; i__ <= i__2; ++i__) { + dx[i__] = *da * dx[i__]; + /* L30: */ + } + if (*n < 5) { + return 0; + } +L40: + mp1 = m + 1; + i__2 = *n; + for (i__ = mp1; i__ <= i__2; i__ += 5) { + dx[i__] = *da * dx[i__]; + dx[i__ + 1] = *da * dx[i__ + 1]; + dx[i__ + 2] = *da * dx[i__ + 2]; + dx[i__ + 3] = *da * dx[i__ + 3]; + dx[i__ + 4] = *da * dx[i__ + 4]; + /* L50: */ + } + return 0; +} /* dscal_ */ + +integer idamax_(integer *n, real_type *dx, integer *incx) +{ + /* System generated locals */ + integer ret_val, i__1; + real_type d__1; + + /* Local variables */ + static integer i__, ix; + static real_type dmax__; + + + /* finds the index of element having max. dabsolute value. */ + /* jack dongarra, linpack, 3/11/78. */ + + + /* Parameter adjustments */ + --dx; + + /* Function Body */ + ret_val = 0; + if (*n < 1) { + return ret_val; + } + ret_val = 1; + if (*n == 1) { + return ret_val; + } + if (*incx == 1) { + goto L20; + } + + /* code for increment not equal to 1 */ + + ix = 1; + dmax__ = abs(dx[1]); + ix += *incx; + i__1 = *n; + for (i__ = 2; i__ <= i__1; ++i__) { + if ((d__1 = dx[ix], abs(d__1)) <= dmax__) { + goto L5; + } + ret_val = i__; + dmax__ = (d__1 = dx[ix], abs(d__1)); +L5: + ix += *incx; + /* L10: */ + } + return ret_val; + + /* code for increment equal to 1 */ + +L20: + dmax__ = abs(dx[1]); + i__1 = *n; + for (i__ = 2; i__ <= i__1; ++i__) { + if ((d__1 = dx[i__], abs(d__1)) <= dmax__) { + goto L30; + } + ret_val = i__; + dmax__ = (d__1 = dx[i__], abs(d__1)); +L30: + ; + } + return ret_val; +} /* idamax_ */ + +real_type epslon_(real_type *x) +{ +#if defined(TEST_MPF_100) || defined(TEST_MPFR_100) || defined(TEST_GMPXX) || defined(TEST_MPFRXX) + return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); +#elif defined(TEST_E_FLOAT_BN) + return std::pow(10.0, 1-std::numeric_limits::digits10); +#else + return CAST_TO_RT(std::numeric_limits::epsilon()); +#endif +} /* epslon_ */ + +/* Subroutine */ int mm_(real_type *a, integer *lda, integer *n1, integer * + n3, real_type *b, integer *ldb, integer *n2, real_type *c__, + integer *ldc) +{ + /* System generated locals */ + integer a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset, i__1, i__2; + + /* Local variables */ + static integer i__, j; + + + /* purpose: */ + /* multiply matrix b times matrix c and store the result in matrix a. */ + + /* parameters: */ + + /* a double precision(lda,n3), matrix of n1 rows and n3 columns */ + + /* lda integer, leading dimension of array a */ + + /* n1 integer, number of rows in matrices a and b */ + + /* n3 integer, number of columns in matrices a and c */ + + /* b double precision(ldb,n2), matrix of n1 rows and n2 columns */ + + /* ldb integer, leading dimension of array b */ + + /* n2 integer, number of columns in matrix b, and number of rows in */ + /* matrix c */ + + /* c double precision(ldc,n3), matrix of n2 rows and n3 columns */ + + /* ldc integer, leading dimension of array c */ + + /* ---------------------------------------------------------------------- */ + + /* Parameter adjustments */ + a_dim1 = *lda; + a_offset = 1 + a_dim1; + a -= a_offset; + b_dim1 = *ldb; + b_offset = 1 + b_dim1; + b -= b_offset; + c_dim1 = *ldc; + c_offset = 1 + c_dim1; + c__ -= c_offset; + + /* Function Body */ + i__1 = *n3; + for (j = 1; j <= i__1; ++j) { + i__2 = *n1; + for (i__ = 1; i__ <= i__2; ++i__) { + a[i__ + j * a_dim1] = CAST_TO_RT(0); + /* L10: */ + } + dmxpy_(n2, &a[j * a_dim1 + 1], n1, ldb, &c__[j * c_dim1 + 1], &b[ + b_offset]); + /* L20: */ + } + + return 0; +} /* mm_ */ + +/* Subroutine */ int dmxpy_(integer *n1, real_type *y, integer *n2, integer * + ldm, real_type *x, real_type *m) +{ + /* System generated locals */ + integer m_dim1, m_offset, i__1, i__2; + + /* Local variables */ + static integer i__, j, jmin; + + + /* purpose: */ + /* multiply matrix m times vector x and add the result to vector y. */ + + /* parameters: */ + + /* n1 integer, number of elements in vector y, and number of rows in */ + /* matrix m */ + + /* y double precision(n1), vector of length n1 to which is added */ + /* the product m*x */ + + /* n2 integer, number of elements in vector x, and number of columns */ + /* in matrix m */ + + /* ldm integer, leading dimension of array m */ + + /* x double precision(n2), vector of length n2 */ + + /* m double precision(ldm,n2), matrix of n1 rows and n2 columns */ + + /* ---------------------------------------------------------------------- */ + + /* cleanup odd vector */ + + /* Parameter adjustments */ + --y; + m_dim1 = *ldm; + m_offset = 1 + m_dim1; + m -= m_offset; + --x; + + /* Function Body */ + j = *n2 % 2; + if (j >= 1) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] += x[j] * m[i__ + j * m_dim1]; + /* L10: */ + } + } + + /* cleanup odd group of two vectors */ + + j = *n2 % 4; + if (j >= 2) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] = y[i__] + x[j - 1] * m[i__ + (j - 1) * m_dim1] + x[j] * m[ + i__ + j * m_dim1]; + /* L20: */ + } + } + + /* cleanup odd group of four vectors */ + + j = *n2 % 8; + if (j >= 4) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] = y[i__] + x[j - 3] * m[i__ + (j - 3) * m_dim1] + x[j - 2] + * m[i__ + (j - 2) * m_dim1] + x[j - 1] * m[i__ + (j - 1) * + m_dim1] + x[j] * m[i__ + j * m_dim1]; + /* L30: */ + } + } + + /* cleanup odd group of eight vectors */ + + j = *n2 % 16; + if (j >= 8) { + i__1 = *n1; + for (i__ = 1; i__ <= i__1; ++i__) { + y[i__] = y[i__] + x[j - 7] * m[i__ + (j - 7) * m_dim1] + x[j - 6] + * m[i__ + (j - 6) * m_dim1] + x[j - 5] * m[i__ + (j - 5) * + m_dim1] + x[j - 4] * m[i__ + (j - 4) * m_dim1] + x[j - 3] + * m[i__ + (j - 3) * m_dim1] + x[j - 2] * m[i__ + (j - 2) + * m_dim1] + x[j - 1] * m[i__ + (j - 1) * m_dim1] + x[j] * + m[i__ + j * m_dim1]; + /* L40: */ + } + } + + /* main loop - groups of sixteen vectors */ + + jmin = j + 16; + i__1 = *n2; + for (j = jmin; j <= i__1; j += 16) { + i__2 = *n1; + for (i__ = 1; i__ <= i__2; ++i__) { + y[i__] = y[i__] + x[j - 15] * m[i__ + (j - 15) * m_dim1] + x[j - + 14] * m[i__ + (j - 14) * m_dim1] + x[j - 13] * m[i__ + (j + - 13) * m_dim1] + x[j - 12] * m[i__ + (j - 12) * m_dim1] + + x[j - 11] * m[i__ + (j - 11) * m_dim1] + x[j - 10] * m[ + i__ + (j - 10) * m_dim1] + x[j - 9] * m[i__ + (j - 9) * + m_dim1] + x[j - 8] * m[i__ + (j - 8) * m_dim1] + x[j - 7] + * m[i__ + (j - 7) * m_dim1] + x[j - 6] * m[i__ + (j - 6) * + m_dim1] + x[j - 5] * m[i__ + (j - 5) * m_dim1] + x[j - 4] + * m[i__ + (j - 4) * m_dim1] + x[j - 3] * m[i__ + (j - 3) + * m_dim1] + x[j - 2] * m[i__ + (j - 2) * m_dim1] + x[j - + 1] * m[i__ + (j - 1) * m_dim1] + x[j] * m[i__ + j * + m_dim1]; + /* L50: */ + } + /* L60: */ + } + return 0; +} /* dmxpy_ */ + +real_type ran_(integer *iseed) +{ + /* System generated locals */ + real_type ret_val; + + /* Local variables */ + static integer it1, it2, it3, it4; + + + /* modified from the LAPACK auxiliary routine 10/12/92 JD */ + /* -- LAPACK auxiliary routine (version 1.0) -- */ + /* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */ + /* Courant Institute, Argonne National Lab, and Rice University */ + /* February 29, 1992 */ + + /* .. Array Arguments .. */ + /* .. */ + + /* Purpose */ + /* ======= */ + + /* DLARAN returns a random double number from a uniform (0,1) */ + /* distribution. */ + + /* Arguments */ + /* ========= */ + + /* ISEED (input/output) INTEGER array, dimension (4) */ + /* On entry, the seed of the random number generator; the array */ + /* elements must be between 0 and 4095, and ISEED(4) must be */ + /* odd. */ + /* On exit, the seed is updated. */ + + /* Further Details */ + /* =============== */ + + /* This routine uses a multiplicative congruential method with modulus */ + /* 2**48 and multiplier 33952834046453 (see G.S.Fishman, */ + /* 'Multiplicative congruential random number generators with modulus */ + /* 2**b: an exhaustive analysis for b = 32 and a partial analysis for */ + /* b = 48', Math. Comp. 189, pp 331-344, 1990). */ + + /* 48-bit integers are stored in 4 integer array elements with 12 bits */ + /* per element. Hence the routine is portable across machines with */ + /* integers of 32 bits or more. */ + + /* .. Parameters .. */ + /* .. */ + /* .. Local Scalars .. */ + /* .. */ + /* .. Intrinsic Functions .. */ + /* .. */ + /* .. Executable Statements .. */ + + /* multiply the seed by the multiplier modulo 2**48 */ + + /* Parameter adjustments */ + --iseed; + + /* Function Body */ + it4 = iseed[4] * 2549; + it3 = it4 / 4096; + it4 -= it3 << 12; + it3 = it3 + iseed[3] * 2549 + iseed[4] * 2508; + it2 = it3 / 4096; + it3 -= it2 << 12; + it2 = it2 + iseed[2] * 2549 + iseed[3] * 2508 + iseed[4] * 322; + it1 = it2 / 4096; + it2 -= it1 << 12; + it1 = it1 + iseed[1] * 2549 + iseed[2] * 2508 + iseed[3] * 322 + iseed[4] + * 494; + it1 %= 4096; + + /* return updated seed */ + + iseed[1] = it1; + iseed[2] = it2; + iseed[3] = it3; + iseed[4] = it4; + + /* convert 48-bit integer to a double number in the interval (0,1) */ + + ret_val = ((real_type) it1 + ((real_type) it2 + ((real_type) it3 + ( + real_type) it4 * 2.44140625e-4) * 2.44140625e-4) * 2.44140625e-4) + * 2.44140625e-4; + return ret_val; + + /* End of RAN */ + +} /* ran_ */ + +/* + +Double results: +~~~~~~~~~~~~~~ + +norm. resid resid machep x(1) x(n) +6.4915 7.207e-013 2.2204e-016 1 1 + + + +times are reported for matrices of order 1000 +factor solve total mflops unit ratio +times for array with leading dimension of1001 +1.443 0.003 1.446 462.43 0.004325 25.821 + + +mpf_class results: +~~~~~~~~~~~~~~~~~~ + +norm. resid resid machep x(1) x(n) +3.6575e-05 5.2257e-103 2.8575e-101 1 1 + + + +times are reported for matrices of order 1000 +factor solve total mflops unit ratio +times for array with leading dimension of1001 +266.45 0.798 267.24 2.5021 0.79933 4772.2 + + +mp_number >: +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + norm. resid resid machep x(1) x(n) + 0.36575e-4 0.52257e-102 0.28575e-100 0.1e1 0.1e1 + + + + times are reported for matrices of order 1000 + factor solve total mflops unit ratio + times for array with leading dimension of1001 + 279.96 0.84 280.8 2.3813 0.83988 5014.3 + +boost::math::ef::e_float: +~~~~~~~~~~~~~~~~~~~~~~~~~ + + norm. resid resid machep x(1) x(n) + 2.551330735e-16 1.275665107e-112 1e-99 1 1 + + + + times are reported for matrices of order 1000 + factor solve total mflops unit ratio + times for array with leading dimension of1001 + 363.89 1.074 364.97 1.8321 1.0916 6517.3 +*/ diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp new file mode 100644 index 00000000..3e82e749 --- /dev/null +++ b/test/test_arithmetic.cpp @@ -0,0 +1,894 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +# define TEST_MPF +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR +# define TEST_MPFR_50 +# define TEST_E_FLOAT +# define TEST_MPQ + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) +#include +#endif + +#define BOOST_TEST_THROW(x, EX)\ + try { x; BOOST_ERROR("Expected exception not thrown"); } \ + catch(const EX&){}\ + catch(...){ BOOST_ERROR("Incorrect exception type thrown"); } + +#undef BOOST_TEST +#define BOOST_TEST(x)\ + try {\ + if(x){}else{ BOOST_ERROR("Value was zero: "); }\ + }\ + catch(const std::exception& e){ \ + BOOST_ERROR("Unexpected exception: ");\ + BOOST_LIGHTWEIGHT_TEST_OSTREAM << e.what() << std::endl;\ + } + +bool isfloat(float){ return true; } +bool isfloat(double){ return true; } +bool isfloat(long double){ return true; } +template bool isfloat(T){ return false; } + +#define BOOST_TEST_CLOSE(x, y, tol)\ + if(x == 0){\ + BOOST_TEST(y == 0); }\ + else if(!isfloat(x)){\ + BOOST_TEST(x == y); }\ + else if((x != y) && (::fabsl(static_cast((x-y)/x)) > tol))\ + {\ + BOOST_ERROR("Expected tolerance was exceeded: ");\ + BOOST_LIGHTWEIGHT_TEST_OSTREAM << std::setprecision(34) << "(x-y)/x = " << ::fabsl(static_cast((x-y)/x)) \ + << " tolerance = " << tol << std::endl;\ + } + +template +void test_integer_ops(const T&){} + +template +void test_integer_ops(const boost::mpl::int_&) +{ + Real a(20); + Real b(7); + Real c; + BOOST_TEST(a % b == 20 % 7); + BOOST_TEST(a % 7 == 20 % 7); + BOOST_TEST(a % 7u == 20 % 7); + BOOST_TEST(-a % b == -20 % 7); + BOOST_TEST(-a % -b == -20 % -7); + BOOST_TEST(a % -b == 20 % -7); + BOOST_TEST(-a % 7 == -20 % 7); + BOOST_TEST(-a % -7 == -20 % -7); + BOOST_TEST(a % -7 == 20 % -7); + BOOST_TEST(-a % 7u == -20 % 7); + + b = -b; + BOOST_TEST(a % b == 20 % -7); + a = -a; + BOOST_TEST(a % b == -20 % -7); + BOOST_TEST(a % -7 == -20 % -7); + b = 7; + BOOST_TEST(a % b == -20 % 7); + BOOST_TEST(a % 7 == -20 % 7); + BOOST_TEST(a % 7u == -20 % 7); + + a = 20; + a %= b; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= b; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -b; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -b; + BOOST_TEST(a == -20 % -7); + + a = 20; + a %= 7; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= 7; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7; + BOOST_TEST(a == -20 % -7); +#ifndef BOOST_NO_LONG_LONG + a = 20; + a %= 7uLL; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= 7uLL; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7LL; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7LL; + BOOST_TEST(a == -20 % -7); +#endif + a = 20; + BOOST_TEST(++a == 21); + BOOST_TEST(--a == 20); + BOOST_TEST(a++ == 20); + BOOST_TEST(a == 21); + BOOST_TEST(a-- == 21); + BOOST_TEST(a == 20); + a = 2000; + a <<= 20; + BOOST_TEST(a == 2000L << 20); + a >>= 20; + BOOST_TEST(a == 2000); + a <<= 20u; + BOOST_TEST(a == 2000L << 20); + a >>= 20u; + BOOST_TEST(a == 2000); + BOOST_TEST_THROW(a <<= -20, std::out_of_range); + BOOST_TEST_THROW(a >>= -20, std::out_of_range); +#ifndef BOOST_NO_LONG_LONG + if(sizeof(long long) > sizeof(std::size_t)) + { + // extreme values should trigger an exception: + BOOST_TEST_THROW(a >>= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + BOOST_TEST_THROW(a <<= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + } +#endif + a = 20; + b = a << 20; + BOOST_TEST(b == (20 << 20)); + b = a >> 2; + BOOST_TEST(b == (20 >> 2)); + b = (a + 2) << 10; + BOOST_TEST(b == (22 << 10)); + b = (a + 3) >> 3; + BOOST_TEST(b == (23 >> 3)); + // + // Bit fiddling: + // + int i = 1020304; + int j = 56789123; + int k = 4523187; + a = i; + b = j; + c = a; + c &= b; + BOOST_TEST(c == (i & j)); + c = a; + c &= j; + BOOST_TEST(c == (i & j)); + c = a; + c &= a + b; + BOOST_TEST(c == (i & (i + j))); + BOOST_TEST((a & b) == (i & j)); + c = k; + a = a & (b + k); + BOOST_TEST(a == (i & (j + k))); + a = i; + a = (b + k) & a; + BOOST_TEST(a == (i & (j + k))); + a = i; + c = a & b & k; + BOOST_TEST(c == (i&j&k)); + + a = i; + b = j; + c = a; + c |= b; + BOOST_TEST(c == (i | j)); + c = a; + c |= j; + BOOST_TEST(c == (i | j)); + c = a; + c |= a + b; + BOOST_TEST(c == (i | (i + j))); + BOOST_TEST((a | b) == (i | j)); + c = k; + a = a | (b + k); + BOOST_TEST(a == (i | (j + k))); + a = i; + a = (b + k) | a; + BOOST_TEST(a == (i | (j + k))); + a = i; + c = a | b | k; + BOOST_TEST(c == (i|j|k)); + + a = i; + b = j; + c = a; + c ^= b; + BOOST_TEST(c == (i ^ j)); + c = a; + c ^= j; + BOOST_TEST(c == (i ^ j)); + c = a; + c ^= a + b; + BOOST_TEST(c == (i ^ (i + j))); + BOOST_TEST((a ^ b) == (i ^ j)); + c = k; + a = a ^ (b + k); + BOOST_TEST(a == (i ^ (j + k))); + a = i; + a = (b + k) ^ a; + BOOST_TEST(a == (i ^ (j + k))); + a = i; + c = a ^ b ^ k; + BOOST_TEST(c == (i^j^k)); + a = i; + b = j; + c = k; + BOOST_TEST(~a == ~i); + c = a & ~b; + BOOST_TEST(c == (i & ~j)); + c = ~(a | b); + BOOST_TEST(c == ~(i | j)); + // + // Non-member functions: + // + a = -20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); + a = 20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); +} + +template +void test_real_ops(const T&){} + +template +void test_real_ops(const boost::mpl::int_&) +{ +#if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) || defined(TEST_MPFR) + BOOST_TEST(abs(Real(2)) == 2); + BOOST_TEST(abs(Real(-2)) == 2); + BOOST_TEST(fabs(Real(2)) == 2); + BOOST_TEST(fabs(Real(-2)) == 2); + BOOST_TEST(floor(Real(5) / 2) == 2); + BOOST_TEST(ceil(Real(5) / 2) == 3); + BOOST_TEST(floor(Real(-5) / 2) == -3); + BOOST_TEST(ceil(Real(-5) / 2) == -2); + BOOST_TEST(trunc(Real(5) / 2) == 2); + BOOST_TEST(trunc(Real(-5) / 2) == -2); + // + // ldexp and frexp, these pretty much have to implemented by each backend: + // + BOOST_TEST(ldexp(Real(2), 5) == 64); + BOOST_TEST(ldexp(Real(2), -5) == Real(2) / 32); + Real v(512); + int exp; + Real r = frexp(v, &exp); + BOOST_TEST(r == 0.5); + BOOST_TEST(exp == 10); + BOOST_TEST(v == 512); + v = 1 / v; + r = frexp(v, &exp); + BOOST_TEST(r == 0.5); + BOOST_TEST(exp == -8); + // + // pow and exp: + // + v = 3.25; + r = pow(v, 0); + BOOST_TEST(r == 1); + r = pow(v, 1); + BOOST_TEST(r == 3.25); + r = pow(v, 2); + BOOST_TEST(r == boost::math::pow<2>(3.25)); + r = pow(v, 3); + BOOST_TEST(r == boost::math::pow<3>(3.25)); + r = pow(v, 4); + BOOST_TEST(r == boost::math::pow<4>(3.25)); + r = pow(v, 5); + BOOST_TEST(r == boost::math::pow<5>(3.25)); + r = pow(v, 6); + BOOST_TEST(r == boost::math::pow<6>(3.25)); + r = pow(v, 25); + BOOST_TEST(r == boost::math::pow<25>(Real(3.25))); + /* + r = pow(v, 56); + BOOST_TEST(r == boost::math::pow<56>(Real(3.25))); + */ +#endif +} + +#ifdef TEST_E_FLOAT + +template +struct lexical_cast_target_type +{ + typedef long double type; +}; + +#else + +template +struct lexical_cast_target_type +{ + typedef typename boost::mpl::if_< + boost::is_signed, + boost::intmax_t, + typename boost::mpl::if_< + boost::is_unsigned, + boost::uintmax_t, + T + >::type + >::type type; +}; + +#endif + +template +void test_negative_mixed(boost::mpl::true_ const&) +{ + typedef typename lexical_cast_target_type::type target_type; + std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; + Num n1 = -static_cast(1uLL << (std::numeric_limits::digits - 1)); + Num n2 = -1; + Num n3 = 0; + Num n4 = -20; + Num n5 = -8; + BOOST_TEST((Real(n2) < 0) == true); + BOOST_TEST((Real(n2) <= 0) == true); + BOOST_TEST((Real(n2) > 0) == false); + BOOST_TEST((Real(n2) >= 0) == false); + BOOST_TEST((Real(n2) == 0) == false); + BOOST_TEST((Real(n2) != 0) == true); + BOOST_TEST((Real(n2) == n2) == true); + BOOST_TEST((Real(n2) != n2) == false); + BOOST_TEST((Real(n2) >= n2) == true); + BOOST_TEST((Real(n2) <= n2) == true); + BOOST_TEST((Real(n2) > n2) == false); + BOOST_TEST((Real(n2) < n2) == false); + // Default construct: + BOOST_TEST(Real(n1) == n1); + BOOST_TEST(Real(n2) == n2); + BOOST_TEST(Real(n3) == n3); + BOOST_TEST(Real(n4) == n4); + BOOST_TEST(n1 == Real(n1)); + BOOST_TEST(n2 == Real(n2)); + BOOST_TEST(n3 == Real(n3)); + BOOST_TEST(n4 == Real(n4)); +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) + Num tol = 10 * std::numeric_limits::epsilon(); +#else + Num tol = 0; +#endif + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); + // Assignment: + Real r(0); + BOOST_TEST(r != n1); + r = n1; + BOOST_TEST(r == n1); + r = n2; + BOOST_TEST(r == n2); + r = n3; + BOOST_TEST(r == n3); + r = n4; + BOOST_TEST(r == n4); + // Addition: + r = n2; + BOOST_TEST(r + n4 == n2 + n4); + BOOST_TEST(Real(r + n4) == n2 + n4); + r += n4; + BOOST_TEST(r == n2 + n4); + // subtraction: + r = n4; + BOOST_TEST(r - n5 == n4 - n5); + BOOST_TEST(Real(r - n5) == n4 - n5); + r -= n5; + BOOST_TEST(r == n4 - n5); + // Multiplication: + r = n2; + BOOST_TEST(r * n4 == n2 * n4); + BOOST_TEST(Real(r * n4) == n2 * n4); + r *= n4; + BOOST_TEST(r == n2 * n4); + // Division: + r = n1; + BOOST_TEST(r / n5 == n1 / n5); + BOOST_TEST(Real(r / n5) == n1 / n5); + r /= n5; + BOOST_TEST(r == n1 / n5); + // + // Extra cases for full coverage: + // + r = Real(n4) + n5; + BOOST_TEST(r == n4 + n5); + r = n4 + Real(n5); + BOOST_TEST(r == n4 + n5); + r = Real(n4) - n5; + BOOST_TEST(r == n4 - n5); + r = n4 - Real(n5); + BOOST_TEST(r == n4 - n5); + r = n4 * Real(n5); + BOOST_TEST(r == n4 * n5); + r = (4 * n4) / Real(4); + BOOST_TEST(r == n4); +} + +template +void test_negative_mixed(boost::mpl::false_ const&) +{ +} + +template +void test_mixed() +{ + typedef typename lexical_cast_target_type::type target_type; + std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; + Num n1 = static_cast(1uLL << (std::numeric_limits::digits - 1)); + Num n2 = 1; + Num n3 = 0; + Num n4 = 20; + Num n5 = 8; + BOOST_TEST((Real(n2) < 0) == false); + BOOST_TEST((Real(n2) <= 0) == false); + BOOST_TEST((Real(n2) > 0) == true); + BOOST_TEST((Real(n2) >= 0) == true); + BOOST_TEST((Real(n2) == 0) == false); + BOOST_TEST((Real(n2) != 0) == true); + BOOST_TEST((Real(n2) == n2) == true); + BOOST_TEST((Real(n2) != n2) == false); + BOOST_TEST((Real(n2) >= n2) == true); + BOOST_TEST((Real(n2) <= n2) == true); + BOOST_TEST((Real(n2) > n2) == false); + BOOST_TEST((Real(n2) < n2) == false); + // Default construct: + BOOST_TEST(Real(n1) == n1); + BOOST_TEST(Real(n2) == n2); + BOOST_TEST(Real(n3) == n3); + BOOST_TEST(Real(n4) == n4); + BOOST_TEST(Real(n1).template convert_to() == n1); + BOOST_TEST(Real(n2).template convert_to() == n2); + BOOST_TEST(Real(n3).template convert_to() == n3); + BOOST_TEST(Real(n4).template convert_to() == n4); + BOOST_TEST(n1 == Real(n1)); + BOOST_TEST(n2 == Real(n2)); + BOOST_TEST(n3 == Real(n3)); + BOOST_TEST(n4 == Real(n4)); + std::cout << Real(n1).str(0, boost::is_floating_point::value) << std::endl; +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) + Num tol = 10 * std::numeric_limits::epsilon(); +#else + Num tol = 0; +#endif + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); + // Assignment: + Real r(0); + BOOST_TEST(r != n1); + r = n1; + BOOST_TEST(r == n1); + r = n2; + BOOST_TEST(r == n2); + r = n3; + BOOST_TEST(r == n3); + r = n4; + BOOST_TEST(r == n4); + // Addition: + r = n2; + BOOST_TEST(r + n4 == n2 + n4); + BOOST_TEST(Real(r + n4) == n2 + n4); + r += n4; + BOOST_TEST(r == n2 + n4); + // subtraction: + r = n4; + BOOST_TEST(r - n5 == n4 - n5); + BOOST_TEST(Real(r - n5) == n4 - n5); + r -= n5; + BOOST_TEST(r == n4 - n5); + // Multiplication: + r = n2; + BOOST_TEST(r * n4 == n2 * n4); + BOOST_TEST(Real(r * n4) == n2 * n4); + r *= n4; + BOOST_TEST(r == n2 * n4); + // Division: + r = n1; + BOOST_TEST(r / n5 == n1 / n5); + BOOST_TEST(Real(r / n5) == n1 / n5); + r /= n5; + BOOST_TEST(r == n1 / n5); + // + // special cases for full coverage: + // + r = n5 + Real(n4); + BOOST_TEST(r == n4 + n5); + r = n4 - Real(n5); + BOOST_TEST(r == n4 - n5); + r = n4 * Real(n5); + BOOST_TEST(r == n4 * n5); + r = (4 * n4) / Real(4); + BOOST_TEST(r == n4); + test_negative_mixed(boost::mpl::bool_::is_signed>()); +} + +template +void test() +{ +#ifndef NO_MIXED_OPS + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); + test_mixed(); +#ifdef BOOST_HAS_LONG_LONG + test_mixed(); + test_mixed(); +#endif + test_mixed(); + test_mixed(); + test_mixed(); +#endif + // + // Integer only functions: + // + test_integer_ops(typename boost::math::number_category::type()); + // + // Real number only functions: + // + test_real_ops(typename boost::math::number_category::type()); + // + // Test basic arithmetic: + // + Real a(8); + Real b(64); + Real c(500); + Real d(1024); + BOOST_TEST(a + b == 72); + a += b; + BOOST_TEST(a == 72); + BOOST_TEST(a - b == 8); + a -= b; + BOOST_TEST(a == 8); + BOOST_TEST(a * b == 8*64L); + a *= b; + BOOST_TEST(a == 8*64L); + BOOST_TEST(a / b == 8); + a /= b; + BOOST_TEST(a == 8); + Real ac(a); + BOOST_TEST(ac == a); + BOOST_TEST(-a == -8); + ac = a * c; + BOOST_TEST(ac == 8*500L); + ac = 8*500L; + ac = ac + b + c; + BOOST_TEST(ac == 8*500L+64+500); + ac = a; + ac = b + c + ac; + BOOST_TEST(ac == 8+64+500); + ac = ac - b + c; + BOOST_TEST(ac == 8+64+500-64+500); + ac = a; + ac = b + c - ac; + BOOST_TEST(ac == -8+64+500); + ac = a; + ac = ac * b; + BOOST_TEST(ac == 8*64); + ac = a; + ac *= b * ac; + BOOST_TEST(ac == 8*8*64); + ac = b; + ac = ac / a; + BOOST_TEST(ac == 64/8); + ac = b; + ac /= ac / a; + BOOST_TEST(ac == 64 / (64/8)); + ac = a; + ac = b + ac * a; + BOOST_TEST(ac == 64 * 2); + ac = a; + ac = b - ac * a; + BOOST_TEST(ac == 0); + ac = a; + ac = b * (ac + a); + BOOST_TEST(ac == 64 * (16)); + ac = a; + ac = b / (ac * 1); + BOOST_TEST(ac == 64 / 8); + ac = a; + ac = ac + b; + BOOST_TEST(ac == 8 + 64); + ac = a; + ac = a + ac; + BOOST_TEST(ac == 16); + ac = a; + ac = ac - b; + BOOST_TEST(ac == 8 - 64); + ac = a; + ac = a - ac; + BOOST_TEST(ac == 0); + ac = a; + ac += a + b; + BOOST_TEST(ac == 80); + ac = a; + ac += b + a; + BOOST_TEST(ac == 80); + ac = a; + ac -= a + b; + BOOST_TEST(ac == -64); + ac = a; + ac -= b - a; + BOOST_TEST(ac == 16 - 64); + ac = +a; + BOOST_TEST(ac == 8); + ac = -a; + BOOST_TEST(ac == -8); + ac = 8; + ac = a * ac; + BOOST_TEST(ac == 8*8); + ac = a; + ac = a; + ac += +a; + BOOST_TEST(ac == 16); + ac = a; + ac += -a; + BOOST_TEST(ac == 0); + ac = a; + ac += b - a; + BOOST_TEST(ac == 8 + 64-8); + ac = a; + ac += b*c; + BOOST_TEST(ac == 8 + 64 * 500); + ac = a; + ac = a; + ac -= +a; + BOOST_TEST(ac == 0); + ac = a; + ac -= -a; + BOOST_TEST(ac == 16); + ac = a; + ac -= c - b; + BOOST_TEST(ac == 8 - (500-64)); + ac = a; + ac -= b*c; + BOOST_TEST(ac == 8 - 500*64); + ac = a; + ac += ac * b; + BOOST_TEST(ac == 8 + 8 * 64); + ac = a; + ac -= ac * b; + BOOST_TEST(ac == 8 - 8 * 64); + ac = a * 8; + ac *= +a; + BOOST_TEST(ac == 64 * 8); + ac = a; + ac *= -a; + BOOST_TEST(ac == -64); + ac = a; + ac *= b * c; + BOOST_TEST(ac == 8 * 64 * 500); + ac = a; + ac *= b / a; + BOOST_TEST(ac == 8 * 64 / 8); + ac = a; + ac *= b + c; + BOOST_TEST(ac == 8 * (64 + 500)); + ac = b; + ac /= +a; + BOOST_TEST(ac == 8); + ac = b; + ac /= -a; + BOOST_TEST(ac == -8); + ac = b; + ac /= b / a; + BOOST_TEST(ac == 64 / (64/8)); + ac = b; + ac /= a + Real(0); + BOOST_TEST(ac == 8); + // + // simple tests with immediate values, these calls can be optimised in many backends: + // + ac = a + b; + BOOST_TEST(ac == 72); + ac = a + +b; + BOOST_TEST(ac == 72); + ac = +a + b; + BOOST_TEST(ac == 72); + ac = +a + +b; + BOOST_TEST(ac == 72); + ac = a + -b; + BOOST_TEST(ac == 8 - 64); + ac = -a + b; + BOOST_TEST(ac == -8+64); + ac = -a + -b; + BOOST_TEST(ac == -72); + ac = a + - + -b; // lots of unary operators!! + BOOST_TEST(ac == 72); + ac = a; + ac = b / ac; + BOOST_TEST(ac == b / a); + // + // Comparisons: + // + BOOST_TEST((a == b) == false); + BOOST_TEST((a != b) == true); + BOOST_TEST((a <= b) == true); + BOOST_TEST((a < b) == true); + BOOST_TEST((a >= b) == false); + BOOST_TEST((a > b) == false); + + BOOST_TEST((a+b == b) == false); + BOOST_TEST((a+b != b) == true); + BOOST_TEST((a+b >= b) == true); + BOOST_TEST((a+b > b) == true); + BOOST_TEST((a+b <= b) == false); + BOOST_TEST((a+b < b) == false); + + BOOST_TEST((a == b+a) == false); + BOOST_TEST((a != b+a) == true); + BOOST_TEST((a <= b+a) == true); + BOOST_TEST((a < b+a) == true); + BOOST_TEST((a >= b+a) == false); + BOOST_TEST((a > b+a) == false); + + BOOST_TEST((a+b == b+a) == true); + BOOST_TEST((a+b != b+a) == false); + BOOST_TEST((a+b <= b+a) == true); + BOOST_TEST((a+b < b+a) == false); + BOOST_TEST((a+b >= b+a) == true); + BOOST_TEST((a+b > b+a) == false); + + BOOST_TEST((8 == b+a) == false); + BOOST_TEST((8 != b+a) == true); + BOOST_TEST((8 <= b+a) == true); + BOOST_TEST((8 < b+a) == true); + BOOST_TEST((8 >= b+a) == false); + BOOST_TEST((8 > b+a) == false); + BOOST_TEST((800 == b+a) == false); + BOOST_TEST((800 != b+a) == true); + BOOST_TEST((800 >= b+a) == true); + BOOST_TEST((800 > b+a) == true); + BOOST_TEST((800 <= b+a) == false); + BOOST_TEST((800 < b+a) == false); + BOOST_TEST((72 == b+a) == true); + BOOST_TEST((72 != b+a) == false); + BOOST_TEST((72 <= b+a) == true); + BOOST_TEST((72 < b+a) == false); + BOOST_TEST((72 >= b+a) == true); + BOOST_TEST((72 > b+a) == false); + // + // Test sign and zero functions, plus use in boolian context: + // + a = 20; + BOOST_TEST(a.sign() > 0); + BOOST_TEST(!a.is_zero()); + a = -20; + BOOST_TEST(a.sign() < 0); + BOOST_TEST(!a.is_zero()); + a = 0; + BOOST_TEST(a.sign() == 0); + BOOST_TEST(a.is_zero()); + if(a) + { + BOOST_ERROR("Unexpected non-zero result"); + } + if(!a){} + else + { + BOOST_ERROR("Unexpected zero result"); + } + b = 2; + if(!b) + { + BOOST_ERROR("Unexpected zero result"); + } + if(b){} + else + { + BOOST_ERROR("Unexpected non-zero result"); + } + if(a && b) + { + BOOST_ERROR("Unexpected zero result"); + } + if(!(a || b)) + { + BOOST_ERROR("Unexpected zero result"); + } + if(a + b){} + else + { + BOOST_ERROR("Unexpected zero result"); + } + if(b - 2) + { + BOOST_ERROR("Unexpected non-zero result"); + } + // + // Test iostreams: + // + std::stringstream ss; + a = 20; + b = 2; + ss << a; + ss >> c; + BOOST_TEST(a == c); + ss.clear(); + ss << a + b; + ss >> c; + BOOST_TEST(c == 22); + BOOST_TEST(c == a + b); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); +#endif +#ifdef TEST_MPF + boost::math::mpf_real::default_precision(1000); + /* + boost::math::mpf_real r; + r.precision(50); + BOOST_TEST(r.precision() >= 50); + */ + BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); + test(); +#endif +#ifdef TEST_MPZ + test(); +#endif +#ifdef TEST_MPQ + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif +#ifdef TEST_MPFR + test(); +#endif +#ifdef TEST_MPFR_50 + test(); +#endif + return boost::report_errors(); +} + diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp new file mode 100644 index 00000000..1cd7f695 --- /dev/null +++ b/test/test_numeric_limits.cpp @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +# define TEST_MPF +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR +# define TEST_MPFR_50 +# define TEST_E_FLOAT +# define TEST_MPQ + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif +#if defined(TEST_MPFR) || defined(TEST_MPFR_50) +#include +#endif + +#define PRINT(x)\ + std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; + +template +void test() +{ + // + // Note really a test just yet, but we can at least print out all the values: + // + std::cout << "numeric_limits values for type " << typeid(Number).name() << std::endl; + + PRINT(is_specialized); + PRINT(min()); + PRINT(max()); +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST + PRINT(lowest()); +#endif + PRINT(digits); + PRINT(digits10); +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST + PRINT(max_digits10); +#endif + PRINT(is_signed); + PRINT(is_integer); + PRINT(is_exact); + PRINT(radix); + PRINT(epsilon()); + PRINT(round_error()); + PRINT(min_exponent); + PRINT(min_exponent10); + PRINT(max_exponent); + PRINT(max_exponent10); + PRINT(has_infinity); + PRINT(has_quiet_NaN); + PRINT(has_signaling_NaN); + PRINT(has_denorm); + PRINT(has_denorm_loss); + PRINT(infinity()); + PRINT(quiet_NaN()); + PRINT(signaling_NaN()); + PRINT(denorm_min()); + PRINT(is_iec559); + PRINT(is_bounded); + PRINT(is_modulo); + PRINT(traps); + PRINT(tinyness_before); + PRINT(round_style); + + if(std::numeric_limits::is_specialized) + { + if(std::numeric_limits::has_quiet_NaN) + { + BOOST_TEST((boost::math::isnan)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::quiet_NaN())); + BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::quiet_NaN())); + } + if(std::numeric_limits::has_signaling_NaN) + { + BOOST_TEST((boost::math::isnan)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::signaling_NaN())); + BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::signaling_NaN())); + } + if(std::numeric_limits::has_infinity) + { + BOOST_TEST((boost::math::isinf)(std::numeric_limits::infinity())); + BOOST_TEST(FP_INFINITE == (boost::math::fpclassify)(std::numeric_limits::infinity())); + BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::infinity())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::infinity())); + BOOST_TEST(!(boost::math::isnan)(std::numeric_limits::infinity())); + } + if(std::numeric_limits::has_denorm) + { + BOOST_TEST(FP_SUBNORMAL == (boost::math::fpclassify)(std::numeric_limits::denorm_min())); + BOOST_TEST((boost::math::isfinite)(std::numeric_limits::denorm_min())); + BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::denorm_min())); + BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::denorm_min())); + BOOST_TEST(!(boost::math::isnan)(std::numeric_limits::denorm_min())); + } + } + Number n = 0; + BOOST_TEST((boost::math::fpclassify)(n) == FP_ZERO); + BOOST_TEST((boost::math::isfinite)(n)); + BOOST_TEST(!(boost::math::isnormal)(n)); + BOOST_TEST(!(boost::math::isinf)(n)); + BOOST_TEST(!(boost::math::isnan)(n)); + n = 2; + BOOST_TEST((boost::math::fpclassify)(n) == FP_NORMAL); + BOOST_TEST((boost::math::isfinite)(n)); + BOOST_TEST((boost::math::isnormal)(n)); + BOOST_TEST(!(boost::math::isinf)(n)); + BOOST_TEST(!(boost::math::isnan)(n)); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); +#endif +#ifdef TEST_MPF + boost::math::mpf_real::default_precision(1000); + /* + boost::math::mpf_real r; + r.precision(50); + BOOST_TEST(r.precision() >= 50); + */ + BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); + test(); +#endif +#ifdef TEST_MPZ + test(); +#endif +#ifdef TEST_MPQ + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif +#ifdef TEST_MPFR + test(); +#endif +#ifdef TEST_MPFR_50 + test(); +#endif + return boost::report_errors(); +} + From 440eb46de639f2fc4732838e99742fcf08c9ca8d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 26 Sep 2011 17:01:23 +0000 Subject: [PATCH 026/256] Giant file and directory rename: changed directory name from math to multiprecision and updated code to match. [SVN r74580] --- math/Jamroot.jam | 9 - math/boost-build.jam | 72 - math/config/Jamfile.v2 | 45 - math/config/has_e_float.cpp | 17 - math/config/has_gcc_visibility.cpp | 13 - math/config/has_gmp.cpp | 7 - math/config/has_gmpxx.cpp | 7 - math/config/has_long_double_support.cpp | 10 - math/config/has_mpfr.cpp | 7 - math/config/has_mpfr_class.cpp | 14 - math/config/has_mpreal.cpp | 14 - math/config/has_ntl_rr.cpp | 12 - math/doc/Jamfile.v2 | 67 - math/doc/big_number.qbk | 207 --- math/doc/html/boost_bignumbers/intro.html | 44 - math/doc/html/boost_bignumbers/ref.html | 40 - .../boost_bignumbers/ref/backendconc.html | 38 - .../doc/html/boost_bignumbers/ref/bignum.html | 151 -- math/doc/html/boost_bignumbers/tut.html | 44 - math/doc/html/boost_bignumbers/tut/ints.html | 146 -- math/doc/html/boost_bignumbers/tut/reals.html | 158 --- math/doc/html/boostbook.css | 588 -------- math/doc/html/images/blank.png | Bin 374 -> 0 bytes math/doc/html/images/caution.png | Bin 1250 -> 0 bytes math/doc/html/images/caution.svg | 68 - math/doc/html/images/draft.png | Bin 17454 -> 0 bytes math/doc/html/images/home.png | Bin 358 -> 0 bytes math/doc/html/images/home.svg | 26 - math/doc/html/images/important.png | Bin 722 -> 0 bytes math/doc/html/images/important.svg | 25 - math/doc/html/images/next.png | Bin 336 -> 0 bytes math/doc/html/images/next.svg | 19 - math/doc/html/images/next_disabled.png | Bin 1110 -> 0 bytes math/doc/html/images/note.png | Bin 490 -> 0 bytes math/doc/html/images/note.svg | 33 - math/doc/html/images/prev.png | Bin 334 -> 0 bytes math/doc/html/images/prev.svg | 19 - math/doc/html/images/prev_disabled.png | Bin 1109 -> 0 bytes math/doc/html/images/tip.png | Bin 449 -> 0 bytes math/doc/html/images/tip.svg | 84 -- math/doc/html/images/toc-blank.png | Bin 318 -> 0 bytes math/doc/html/images/toc-minus.png | Bin 259 -> 0 bytes math/doc/html/images/toc-plus.png | Bin 264 -> 0 bytes math/doc/html/images/up.png | Bin 370 -> 0 bytes math/doc/html/images/up.svg | 19 - math/doc/html/images/up_disabled.png | Bin 1115 -> 0 bytes math/doc/html/images/warning.png | Bin 1241 -> 0 bytes math/doc/html/images/warning.svg | 23 - math/doc/html/index.html | 53 - math/test/Jamfile.v2 | 189 --- math/test/big_number_concept_check.cpp | 100 -- math/test/linpack-benchmark.cpp | 1257 ----------------- math/test/test_arithmetic.cpp | 894 ------------ math/test/test_numeric_limits.cpp | 173 --- 54 files changed, 4692 deletions(-) delete mode 100644 math/Jamroot.jam delete mode 100644 math/boost-build.jam delete mode 100644 math/config/Jamfile.v2 delete mode 100644 math/config/has_e_float.cpp delete mode 100644 math/config/has_gcc_visibility.cpp delete mode 100644 math/config/has_gmp.cpp delete mode 100644 math/config/has_gmpxx.cpp delete mode 100644 math/config/has_long_double_support.cpp delete mode 100644 math/config/has_mpfr.cpp delete mode 100644 math/config/has_mpfr_class.cpp delete mode 100644 math/config/has_mpreal.cpp delete mode 100644 math/config/has_ntl_rr.cpp delete mode 100644 math/doc/Jamfile.v2 delete mode 100644 math/doc/big_number.qbk delete mode 100644 math/doc/html/boost_bignumbers/intro.html delete mode 100644 math/doc/html/boost_bignumbers/ref.html delete mode 100644 math/doc/html/boost_bignumbers/ref/backendconc.html delete mode 100644 math/doc/html/boost_bignumbers/ref/bignum.html delete mode 100644 math/doc/html/boost_bignumbers/tut.html delete mode 100644 math/doc/html/boost_bignumbers/tut/ints.html delete mode 100644 math/doc/html/boost_bignumbers/tut/reals.html delete mode 100644 math/doc/html/boostbook.css delete mode 100644 math/doc/html/images/blank.png delete mode 100644 math/doc/html/images/caution.png delete mode 100644 math/doc/html/images/caution.svg delete mode 100644 math/doc/html/images/draft.png delete mode 100644 math/doc/html/images/home.png delete mode 100644 math/doc/html/images/home.svg delete mode 100644 math/doc/html/images/important.png delete mode 100644 math/doc/html/images/important.svg delete mode 100644 math/doc/html/images/next.png delete mode 100644 math/doc/html/images/next.svg delete mode 100644 math/doc/html/images/next_disabled.png delete mode 100644 math/doc/html/images/note.png delete mode 100644 math/doc/html/images/note.svg delete mode 100644 math/doc/html/images/prev.png delete mode 100644 math/doc/html/images/prev.svg delete mode 100644 math/doc/html/images/prev_disabled.png delete mode 100644 math/doc/html/images/tip.png delete mode 100644 math/doc/html/images/tip.svg delete mode 100644 math/doc/html/images/toc-blank.png delete mode 100644 math/doc/html/images/toc-minus.png delete mode 100644 math/doc/html/images/toc-plus.png delete mode 100644 math/doc/html/images/up.png delete mode 100644 math/doc/html/images/up.svg delete mode 100644 math/doc/html/images/up_disabled.png delete mode 100644 math/doc/html/images/warning.png delete mode 100644 math/doc/html/images/warning.svg delete mode 100644 math/doc/html/index.html delete mode 100644 math/test/Jamfile.v2 delete mode 100644 math/test/big_number_concept_check.cpp delete mode 100644 math/test/linpack-benchmark.cpp delete mode 100644 math/test/test_arithmetic.cpp delete mode 100644 math/test/test_numeric_limits.cpp diff --git a/math/Jamroot.jam b/math/Jamroot.jam deleted file mode 100644 index c8019258..00000000 --- a/math/Jamroot.jam +++ /dev/null @@ -1,9 +0,0 @@ - -import modules ; - -local boost = [ modules.peek : BOOST ] ; - -project sandbox : requirements $(boost) ; - -# This seems to prevent some Boost.Build errors that otherwise occur :-( -use-project /boost : $(boost) ; diff --git a/math/boost-build.jam b/math/boost-build.jam deleted file mode 100644 index 02b750a1..00000000 --- a/math/boost-build.jam +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright Rene Rivera 2007. -# -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -# For instructions see Jamfile.v2, or "bjam --help". - -local rule if-has-file ( file + : dir * ) -{ - local result ; - if $(dir) - { - result = [ GLOB $(dir) : $(file) ] ; - } - return $(result[1]:P) ; -} - -#~ Attempts to find the Boost source tree... - -local boost-src = [ if-has-file LICENSE_1_0.txt : - [ MATCH --boost=(.*) : $(ARGV) ] - $(BOOST) - $(BOOST_ROOT) - $(.boost-build-file:D)/../boost - $(.boost-build-file:D)/../Trunk - ] ; - -# error handling: -if ! $(boost-src) -{ - ECHO Unable to find the Boost source tree in the locations searched. ; - ECHO Try setting the environment variable BOOST to point to your ; - ECHO Boost tree, or else invoke bjam with the --boost=path option. ; - ECHO The Boost include path will not be automatically set. ; - ECHO The paths searched were [ MATCH --boost=(.*) : $(ARGV) ] $(BOOST) $(.boost-build-file:D)/../boost $(.boost-build-file:D)/../Trunk ; - ECHO But the file LICENSE_1_0.txt was not found in any of them ; -} - -#~ Attempts to find the Boost.Build files... - -local boost-build-src = [ if-has-file bootstrap.jam : - [ MATCH --boost-build=(.*) : $(ARGV) ] - $(BOOST_BUILD_PATH) - $(BOOST_BUILD) - $(boost-src)/tools/build/v2 - ] ; - -# error handling: -if ! $(boost-build-src) -{ - ECHO Unable to find the Boost.Build source tree in the locations searched. ; - ECHO Try setting the environment variable BOOST_BUILD to point to your ; - ECHO Boost.Build tree, or else invoke bjam with the --boost-build=path option. ; - ECHO The paths searched were [ MATCH --boost-build=(.*) : $(ARGV) ] $(BOOST_BUILD_PATH) $(BOOST_BUILD) $(boost-src)/tools/build/v2 ; - ECHO But bootstrap.jam was not found in any of these ; - ECHO More failures will very likely follow... ; -} - -#~ Set some common vars to refer to the Boost sources... - -BOOST ?= $(boost-src) ; -BOOST_ROOT ?= $(boost-src) ; - -#~ And load up Boost.Build... - -boost-build $(boost-build-src) ; - - - - - diff --git a/math/config/Jamfile.v2 b/math/config/Jamfile.v2 deleted file mode 100644 index 832e2936..00000000 --- a/math/config/Jamfile.v2 +++ /dev/null @@ -1,45 +0,0 @@ -# copyright John Maddock 2008 -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt. - -import modules ; -import path ; - -local ntl-path = [ modules.peek : NTL_PATH ] ; -local gmp_path = [ modules.peek : GMP_PATH ] ; -local mpfr_path = [ modules.peek : MPFR_PATH ] ; -local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; - -if ! $(e_float_path) -{ - e_float_path = ../../../../e_float ; -} - -ECHO $(BOOST_E_FLOAT_PATH) - -obj has_long_double_support : has_long_double_support.cpp ; -obj has_mpfr_class : has_mpfr_class.cpp : - $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; -obj has_mpreal : has_mpreal.cpp : - $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/mpfrc++ ; -obj has_ntl_rr : has_ntl_rr.cpp : $(ntl-path)/include ; -obj has_gmpxx : has_gmpxx.cpp : - $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; -obj has_gcc_visibility : has_gcc_visibility.cpp : - gcc:-fvisibility=hidden gcc:-Werror ; -obj has_e_float : has_e_float.cpp : $(e_float_path) ; -obj has_gmp : has_gmp.cpp : - $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; -obj has_mpfr : has_mpfr.cpp : - $(mpfr_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; - -explicit has_long_double_support ; -explicit has_mpfr_class ; -explicit has_mpreal ; -explicit has_ntl_rr ; -explicit has_gmpxx ; -explicit has_gcc_visibility ; -explicit has_e_float ; -explicit has_gmp ; -explicit has_mpfr ; diff --git a/math/config/has_e_float.cpp b/math/config/has_e_float.cpp deleted file mode 100644 index 8cadc5c6..00000000 --- a/math/config/has_e_float.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright John Maddock 2011. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -#ifdef _MSC_VER -# pragma warning (disable : 4100) // unreferenced formal parameter -#endif - -#define E_FLOAT_TYPE_EFX - -#include -#include -#include - - diff --git a/math/config/has_gcc_visibility.cpp b/math/config/has_gcc_visibility.cpp deleted file mode 100644 index 6c7d6f91..00000000 --- a/math/config/has_gcc_visibility.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright John Maddock 20010. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef __GNUC__ -# error "This is a GCC specific test case". -#endif - -int main() -{ - return 0; -} diff --git a/math/config/has_gmp.cpp b/math/config/has_gmp.cpp deleted file mode 100644 index 582f0027..00000000 --- a/math/config/has_gmp.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright John Maddock 2008. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include - diff --git a/math/config/has_gmpxx.cpp b/math/config/has_gmpxx.cpp deleted file mode 100644 index edf62d8c..00000000 --- a/math/config/has_gmpxx.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright John Maddock 2008. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include - diff --git a/math/config/has_long_double_support.cpp b/math/config/has_long_double_support.cpp deleted file mode 100644 index d314cf38..00000000 --- a/math/config/has_long_double_support.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright John Maddock 2008. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#error "long double support is not supported by Boost.Math on this Plaform: the long double version of the TR1 library will not be built." -#endif diff --git a/math/config/has_mpfr.cpp b/math/config/has_mpfr.cpp deleted file mode 100644 index 49d12a0b..00000000 --- a/math/config/has_mpfr.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright John Maddock 2008. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include - diff --git a/math/config/has_mpfr_class.cpp b/math/config/has_mpfr_class.cpp deleted file mode 100644 index 8eb3c7b2..00000000 --- a/math/config/has_mpfr_class.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright John Maddock 2008. -// Copyright Paul A. Britow 2009 -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifdef _MSC_VER -# pragma warning (disable : 4127) // conditional expression is constant -# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) -# pragma warning (disable : 4512) // assignment operator could not be generated -#endif - -#include - diff --git a/math/config/has_mpreal.cpp b/math/config/has_mpreal.cpp deleted file mode 100644 index 8ee8897d..00000000 --- a/math/config/has_mpreal.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright John Maddock 2008. -// Copyright Paul A. Britow 2009 -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifdef _MSC_VER -# pragma warning (disable : 4127) // conditional expression is constant -# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) -# pragma warning (disable : 4512) // assignment operator could not be generated -#endif - -#include - diff --git a/math/config/has_ntl_rr.cpp b/math/config/has_ntl_rr.cpp deleted file mode 100644 index f3844217..00000000 --- a/math/config/has_ntl_rr.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright John Maddock 2008. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -#ifdef _MSC_VER -# pragma warning (disable : 4100) // unreferenced formal parameter -#endif - -#include - diff --git a/math/doc/Jamfile.v2 b/math/doc/Jamfile.v2 deleted file mode 100644 index 2f00f026..00000000 --- a/math/doc/Jamfile.v2 +++ /dev/null @@ -1,67 +0,0 @@ - -# Copyright John Maddock 2011. Use, modification, and distribution are -# subject to the Boost Software License, Version 1.0. (See accompanying -# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -using quickbook ; - -path-constant images_location : html ; - -xml big_number : big_number.qbk ; -boostbook standalone - : - big_number - : - # Path for links to Boost: - #boost.root=../../../../.. - - # Some general style settings: - table.footnote.number.format=1 - footnote.number.format=1 - html.stylesheet=boostbook.css - - # HTML options first: - # Use graphics not text for navigation: - navig.graphics=1 - # How far down we chunk nested sections, basically all of them: - chunk.section.depth=10 - # Don't put the first section on the same page as the TOC: - chunk.first.sections=10 - # How far down sections get TOC's - toc.section.depth=10 - # Max depth in each TOC: - toc.max.depth=4 - # How far down we go with TOC's - #generate.section.toc.level=10 - # Index on type: - index.on.type=1 - - # PDF Options: - # TOC Generation: this is needed for FOP-0.9 and later: - fop1.extensions=0 - pdf:xep.extensions=1 - # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! - pdf:fop.extensions=0 - pdf:fop1.extensions=0 - # No indent on body text: - pdf:body.start.indent=0pt - # Margin size: - pdf:page.margin.inner=0.5in - # Margin size: - pdf:page.margin.outer=0.5in - # Paper type = A4 - pdf:paper.type=A4 - # Yes, we want graphics for admonishments: - admon.graphics=1 - # Set this one for PDF generation *only*: - # default pnd graphics are awful in PDF form, - # better use SVG's instead: - pdf:admon.graphics.extension=".svg" - pdf:use.role.for.mediaobject=1 - pdf:preferred.mediaobject.role=print - pdf:img.src.path=$(images_location)/ - pdf:draft.mode="no" - pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/math/doc/sf_and_dist/html - ; - -install pdf-install : standalone : . PDF ; diff --git a/math/doc/big_number.qbk b/math/doc/big_number.qbk deleted file mode 100644 index 4ccfb199..00000000 --- a/math/doc/big_number.qbk +++ /dev/null @@ -1,207 +0,0 @@ -[/ - Copyright 2011 John Maddock. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -] - -[library Boost.BigNumbers - [quickbook 1.5] - [copyright 2011 John Maddock] - [purpose Big Number library] - [license - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - [@http://www.boost.org/LICENSE_1_0.txt]) - ] - [authors [authors, various]] - [last-revision $Date: 2011-07-08 18:51:46 +0100 (Fri, 08 Jul 2011) $] -] - -[section:intro Introduction] - -The Big Number library comes in two distinct parts: an expression template enabled front end `big_number` -that handles all the operator overloading, expression evaluation optimization, and code reduction, and -a selection of backends that implement the actual arithmetic operations, and need conform only to the -reduced interface requirements of the front end. - -[endsect] - -[section:tut Tutorial] - -In order to use this library you need to make two choices: what kind of number do I want, and -which backend do I want to perform the actual arithmetic? - -[section:ints Integer Types] - -The following backends provide integer arithmetic: - -[table -[[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_int`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] -] - -[h4 gmp_int] - - namespace boost{ namespace math{ - - class gmp_int; - - typedef big_number mpz_int; - - }} // namespaces - -The `gmp_int` backend is used via the typedef `boost::math::mpz_int`. It acts as a thin wrapper around the GMP `mpz_t` -to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. - -[h5 Example:] - - #include - - boost::math::mpz_int v = 1; - - // Do some arithmetic: - for(unsigned i = 1; i <= 1000; ++i) - v *= i; - - std::cout << i << std::endl; // prints 1000! - -[endsect] - -[section:reals Real Numbers] - -The following backends provide real number arithmetic: - -[table -[[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_real`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] -] - -[h4 gmp_real] - - namespace boost{ namespace math{ - - template - class gmp_real; - - typedef big_number > mpf_real_50; - typedef big_number > mpf_real_100; - typedef big_number > mpf_real_500; - typedef big_number > mpf_real_1000; - typedef big_number > mpf_real; - - }} // namespaces - -The `gmp_real` backend is used in conjunction with `big_number`: It acts as a thin wrapper around the GMP `mpf_t` -to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with -much greater precision. - -Type `gmp_real` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or -at variable precision by setting the template argument to zero. The typedefs mpf_real_50, mpf_real_100, -mpf_real_500, mpf_real_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision -respectively. The typedef mpf_real provides a variable precision type whose precision can be controlled via the -`big_number`'s member functions. - -[h5 example:] - - #include - - boost::math::gmp_real a = 2; - boost::math::gmp_real::default_precision(1000); - std::cout << boost::math::gmp_real::default_precision() << std::endl; - std::cout << sqrt(a) << std::endl; // print root-2 - -[endsect] - -[endsect] - -[section:ref Reference] - -[section:bignum big_number] - -[h4 Synopsis] - - namespace boost{ namespace math{ - - template - class big_number - { - big_number(); - big_number(see-below); - big_number& operator=(see-below); - /* Other number-type operators here */ - // string conversion: - std::string str()const; - // precision control: - static unsigned default_precision(); - static void default_precision(unsigned digits10); - unsigned precision()const; - void precision(unsigned digits10); - // Comparison: - int compare(const big_number& o)const; - template - typename enable_if, int>::type compare(const V& o)const; - }; - - }} // namespaces - -[h4 Description] - - big_number(); - big_number(see-below); - big_number& operator=(see-below); - -Type `big_number` is default constructible, and copy both constructible and assignable from: - -* Itself. -* An expression template which is the result of one of the arithmetic operators. -* Any builtin arithmetic type. -* A `std::string` or any type which is convertible to `const char*`. - - /* Other number-type operators here */ - -The following arithmetic operations are support for real-numbered types: - -* Binary +, -, *, /, +=, -=, *=, /=, ==, !=, <=, >=, <, >. -* Unary +, -. - -For integer types the following operators are also supported: - -Binary %, %=. - -(More to follow!!) - -Note that the result of the binary +, -, *, / and % operations is an expression template of "unmentionable type". - - std::string str()const; - -Returns the number formatted as a string (TODO: enable custom precision). - - static unsigned default_precision(); - static void default_precision(unsigned digits10); - unsigned precision()const; - void precision(unsigned digits10); - -These functions are only available if the Backend template parameter supports runtime changes to precision. They get and set -the default precision and the precision of *this respectively. - - int compare(const big_number& o)const; - template - typename enable_if, int>::type compare(const V& other)const; - -Returns: - -* A value less that 0 for *this < other -* A value greater that 0 for *this > other -* Zero for *this == other - -[endsect] - -[section:backendconc Backend Requirements] - -TODO, big boring job!! - -[endsect] - -[endsect] - diff --git a/math/doc/html/boost_bignumbers/intro.html b/math/doc/html/boost_bignumbers/intro.html deleted file mode 100644 index ee77f4b1..00000000 --- a/math/doc/html/boost_bignumbers/intro.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Introduction - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -

- The Big Number library comes in two distinct parts: an expression template - enabled front end big_number - that handles all the operator overloading, expression evaluation optimization, - and code reduction, and a selection of backends that implement the actual arithmetic - operations, and need conform only to the reduced interface requirements of - the front end. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/math/doc/html/boost_bignumbers/ref.html b/math/doc/html/boost_bignumbers/ref.html deleted file mode 100644 index c6a81e2f..00000000 --- a/math/doc/html/boost_bignumbers/ref.html +++ /dev/null @@ -1,40 +0,0 @@ - - - -Reference - - - - - - - - -
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/math/doc/html/boost_bignumbers/ref/backendconc.html b/math/doc/html/boost_bignumbers/ref/backendconc.html deleted file mode 100644 index 44dd13af..00000000 --- a/math/doc/html/boost_bignumbers/ref/backendconc.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -Backend Requirements - - - - - - - -
-
-
-PrevUpHome -
-
- -

- TODO, big boring job!! -

-
- - - -
-
-
-PrevUpHome -
- - diff --git a/math/doc/html/boost_bignumbers/ref/bignum.html b/math/doc/html/boost_bignumbers/ref/bignum.html deleted file mode 100644 index bcf3ef57..00000000 --- a/math/doc/html/boost_bignumbers/ref/bignum.html +++ /dev/null @@ -1,151 +0,0 @@ - - - -big_number - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -
- - Synopsis -
-
namespace boost{ namespace math{
-
-template <class Backend>
-class big_number
-{
-   big_number();
-   big_number(see-below);
-   big_number& operator=(see-below);
-   /* Other number-type operators here */
-   // string conversion:
-   std::string str()const;
-   // precision control:
-   static unsigned default_precision();
-   static void default_precision(unsigned digits10);
-   unsigned precision()const;
-   void precision(unsigned digits10);
-   // Comparison:
-   int compare(const big_number<Backend>& o)const;
-   template <class V>
-   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
-};
-
-}} // namespaces
-
-
- - Description -
-
big_number();
-big_number(see-below);
-big_number& operator=(see-below);
-
-

- Type big_number is default - constructible, and copy both constructible and assignable from: -

-
    -
  • - Itself. -
  • -
  • - An expression template which is the result of one of the arithmetic operators. -
  • -
  • - Any builtin arithmetic type. -
  • -
  • - A std::string or any type which is convertible - to const char*. -
  • -
-
/* Other number-type operators here */
-
-

- The following arithmetic operations are support for real-numbered types: -

-
    -
  • - Binary +, -, *, /, +, -, *, /, - ==, !, <, >=, <, >. -
  • -
  • - Unary +, -. -
  • -
-

- For integer types the following operators are also supported: -

-

- Binary %, %=. -

-

- (More to follow!!) -

-

- Note that the result of the binary +, -, *, / and % operations is an expression - template of "unmentionable type". -

-
std::string str()const;
-
-

- Returns the number formatted as a string (TODO: enable custom precision). -

-
static unsigned default_precision();
-static void default_precision(unsigned digits10);
-unsigned precision()const;
-void precision(unsigned digits10);
-
-

- These functions are only available if the Backend template parameter supports - runtime changes to precision. They get and set the default precision and - the precision of *this respectively. -

-
int compare(const big_number<Backend>& o)const;
-template <class V>
-typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
-
-

- Returns: -

-
    -
  • - A value less that 0 for *this < other -
  • -
  • - A value greater that 0 for *this > other -
  • -
  • - Zero for *this == other -
  • -
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/math/doc/html/boost_bignumbers/tut.html b/math/doc/html/boost_bignumbers/tut.html deleted file mode 100644 index 92e58b08..00000000 --- a/math/doc/html/boost_bignumbers/tut.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Tutorial - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- - -

- In order to use this library you need to make two choices: what kind of number - do I want, and which backend do I want to perform the actual arithmetic? -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/math/doc/html/boost_bignumbers/tut/ints.html b/math/doc/html/boost_bignumbers/tut/ints.html deleted file mode 100644 index b2dbce57..00000000 --- a/math/doc/html/boost_bignumbers/tut/ints.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -Integer Types - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -

- The following backends provide integer arithmetic: -

-
-------- - - - - - - - - - - - - - - - - -
-

- Backend Type -

-
-

- Header -

-
-

- Radix -

-
-

- Dependencies -

-
-

- Pros -

-
-

- Cons -

-
-

- gmp_int -

-
-

- boost/math/big_number/gmp.hpp -

-
-

- 2 -

-
-

- GMP -

-
-

- Very fast and efficient backend. -

-
-

- Dependency on GNU licenced GMP library. -

-
-
- - gmp_int -
-
namespace boost{ namespace math{
-
-class gmp_int;
-
-typedef big_number<gmp_int >         mpz_int;
-
-}} // namespaces
-
-

- The gmp_int backend is used - via the typedef boost::math::mpz_int. It acts as a thin wrapper around - the GMP mpz_t to provide - an integer type that is a drop-in replacement for the native C++ integer - types, but with unlimited precision. -

-
- - Example: -
-
#include <boost/math/big_number/gmp.hpp>
-
-boost::math::mpz_int v = 1;
-
-// Do some arithmetic:
-for(unsigned i = 1; i <= 1000; ++i)
-   v *= i;
-
-std::cout << i << std::endl; // prints 1000!
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/math/doc/html/boost_bignumbers/tut/reals.html b/math/doc/html/boost_bignumbers/tut/reals.html deleted file mode 100644 index cd08e445..00000000 --- a/math/doc/html/boost_bignumbers/tut/reals.html +++ /dev/null @@ -1,158 +0,0 @@ - - - -Real Numbers - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -

- The following backends provide real number arithmetic: -

-
-------- - - - - - - - - - - - - - - - - -
-

- Backend Type -

-
-

- Header -

-
-

- Radix -

-
-

- Dependencies -

-
-

- Pros -

-
-

- Cons -

-
-

- gmp_real<N> -

-
-

- boost/math/big_number/gmp.hpp -

-
-

- 2 -

-
-

- GMP -

-
-

- Very fast and efficient backend. -

-
-

- Dependency on GNU licenced GMP library. -

-
-
- - gmp_real -
-
namespace boost{ namespace math{
-
-template <unsigned Digits10>
-class gmp_real;
-
-typedef big_number<gmp_real<50> >    mpf_real_50;
-typedef big_number<gmp_real<100> >   mpf_real_100;
-typedef big_number<gmp_real<500> >   mpf_real_500;
-typedef big_number<gmp_real<1000> >  mpf_real_1000;
-typedef big_number<gmp_real<0> >     mpf_real;
-
-}} // namespaces
-
-

- The gmp_real backend is used - in conjunction with big_number: - It acts as a thin wrapper around the GMP mpf_t - to provide an real-number type that is a drop-in replacement for the native - C++ floating-point types, but with much greater precision. -

-

- Type gmp_real can be used - at fixed precision by specifying a non-zero Digits10 - template parameter, or at variable precision by setting the template argument - to zero. The typedefs mpf_real_50, mpf_real_100, mpf_real_500, mpf_real_1000 - provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision - respectively. The typedef mpf_real provides a variable precision type whose - precision can be controlled via the big_number's - member functions. -

-
- - example: -
-
#include <boost/math/big_number/gmp.hpp>
-
-boost::math::gmp_real a = 2;
-boost::math::gmp_real::default_precision(1000);
-std::cout << boost::math::gmp_real::default_precision() << std::endl;
-std::cout << sqrt(a) << std::endl; // print root-2
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/math/doc/html/boostbook.css b/math/doc/html/boostbook.css deleted file mode 100644 index 252fa9ec..00000000 --- a/math/doc/html/boostbook.css +++ /dev/null @@ -1,588 +0,0 @@ -/*============================================================================= - Copyright (c) 2004 Joel de Guzman - http://spirit.sourceforge.net/ - - Distributed under the Boost Software License, Version 1.0. (See accompany- - ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -=============================================================================*/ - -/*============================================================================= - Body defaults -=============================================================================*/ - - body - { - margin: 1em; - font-family: sans-serif; - } - -/*============================================================================= - Paragraphs -=============================================================================*/ - - p - { - text-align: left; - font-size: 10pt; - line-height: 1.15; - } - -/*============================================================================= - Program listings -=============================================================================*/ - - /* Code on paragraphs */ - p tt.computeroutput - { - font-size: 9pt; - } - - pre.synopsis - { - font-size: 90%; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - .programlisting, - .screen - { - font-size: 9pt; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - /* Program listings in tables don't get borders */ - td .programlisting, - td .screen - { - margin: 0pc 0pc 0pc 0pc; - padding: 0pc 0pc 0pc 0pc; - } - -/*============================================================================= - Headings -=============================================================================*/ - - h1, h2, h3, h4, h5, h6 - { - text-align: left; - margin: 1em 0em 0.5em 0em; - font-weight: bold; - } - - h1 { font: 140% } - h2 { font: bold 140% } - h3 { font: bold 130% } - h4 { font: bold 120% } - h5 { font: italic 110% } - h6 { font: italic 100% } - - /* Top page titles */ - title, - h1.title, - h2.title - h3.title, - h4.title, - h5.title, - h6.title, - .refentrytitle - { - font-weight: bold; - margin-bottom: 1pc; - } - - h1.title { font-size: 140% } - h2.title { font-size: 140% } - h3.title { font-size: 130% } - h4.title { font-size: 120% } - h5.title { font-size: 110% } - h6.title { font-size: 100% } - - .section h1 - { - margin: 0em 0em 0.5em 0em; - font-size: 140%; - } - - .section h2 { font-size: 140% } - .section h3 { font-size: 130% } - .section h4 { font-size: 120% } - .section h5 { font-size: 110% } - .section h6 { font-size: 100% } - - /* Code on titles */ - h1 tt.computeroutput { font-size: 140% } - h2 tt.computeroutput { font-size: 140% } - h3 tt.computeroutput { font-size: 130% } - h4 tt.computeroutput { font-size: 120% } - h5 tt.computeroutput { font-size: 110% } - h6 tt.computeroutput { font-size: 100% } - -/*============================================================================= - Author -=============================================================================*/ - - h3.author - { - font-size: 100% - } - -/*============================================================================= - Lists -=============================================================================*/ - - li - { - font-size: 10pt; - line-height: 1.3; - } - - /* Unordered lists */ - ul - { - text-align: left; - } - - /* Ordered lists */ - ol - { - text-align: left; - } - -/*============================================================================= - Links -=============================================================================*/ - - a - { - text-decoration: none; /* no underline */ - } - - a:hover - { - text-decoration: underline; - } - -/*============================================================================= - Spirit style navigation -=============================================================================*/ - - .spirit-nav - { - text-align: right; - } - - .spirit-nav a - { - color: white; - padding-left: 0.5em; - } - - .spirit-nav img - { - border-width: 0px; - } - -/*============================================================================= - Copyright footer -=============================================================================*/ - .copyright-footer - { - text-align: right; - font-size: 70%; - } - - .copyright-footer p - { - text-align: right; - font-size: 80%; - } - -/*============================================================================= - Table of contents -=============================================================================*/ - - .toc - { - margin: 1pc 4% 0pc 4%; - padding: 0.1pc 1pc 0.1pc 1pc; - font-size: 80%; - line-height: 1.15; - } - - .boost-toc - { - float: right; - padding: 0.5pc; - } - -/*============================================================================= - Tables -=============================================================================*/ - - .table-title, - div.table p.title - { - margin-left: 4%; - padding-right: 0.5em; - padding-left: 0.5em; - } - - .informaltable table, - .table table - { - width: 92%; - margin-left: 4%; - margin-right: 4%; - } - - div.informaltable table, - div.table table - { - padding: 4px; - } - - /* Table Cells */ - div.informaltable table tr td, - div.table table tr td - { - padding: 0.5em; - text-align: left; - font-size: 9pt; - } - - div.informaltable table tr th, - div.table table tr th - { - padding: 0.5em 0.5em 0.5em 0.5em; - border: 1pt solid white; - font-size: 80%; - } - - table.simplelist - { - width: auto !important; - margin: 0em !important; - padding: 0em !important; - border: none !important; - } - table.simplelist td - { - margin: 0em !important; - padding: 0em !important; - text-align: left !important; - font-size: 9pt !important; - border: none !important; - } - -/*============================================================================= - Blurbs -=============================================================================*/ - - div.note, - div.tip, - div.important, - div.caution, - div.warning, - p.blurb - { - font-size: 9pt; /* A little bit smaller than the main text */ - line-height: 1.2; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - p.blurb img - { - padding: 1pt; - } - -/*============================================================================= - Variable Lists -=============================================================================*/ - - /* Make the terms in definition lists bold */ - div.variablelist dl dt, - span.term - { - font-weight: bold; - font-size: 10pt; - } - - div.variablelist table tbody tr td - { - text-align: left; - vertical-align: top; - padding: 0em 2em 0em 0em; - font-size: 10pt; - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - - div.variablelist dl dt - { - margin-bottom: 0.2em; - } - - div.variablelist dl dd - { - margin: 0em 0em 0.5em 2em; - font-size: 10pt; - } - - div.variablelist table tbody tr td p, - div.variablelist dl dd p - { - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - -/*============================================================================= - Misc -=============================================================================*/ - - /* Title of books and articles in bibliographies */ - span.title - { - font-style: italic; - } - - span.underline - { - text-decoration: underline; - } - - span.strikethrough - { - text-decoration: line-through; - } - - /* Copyright, Legal Notice */ - div div.legalnotice p - { - text-align: left - } - -/*============================================================================= - Colors -=============================================================================*/ - - @media screen - { - body { - background-color: #FFFFFF; - } - - /* Links */ - a - { - color: #005a9c; - } - - a:visited - { - color: #9c5a9c; - } - - h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, - h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, - h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited - { - text-decoration: none; /* no underline */ - color: #000000; - } - - /* Syntax Highlighting */ - .keyword { color: #0000AA; } - .identifier { color: #000000; } - .special { color: #707070; } - .preprocessor { color: #402080; } - .char { color: teal; } - .comment { color: #800000; } - .string { color: teal; } - .number { color: teal; } - .white_bkd { background-color: #FFFFFF; } - .dk_grey_bkd { background-color: #999999; } - - /* Copyright, Legal Notice */ - .copyright - { - color: #666666; - font-size: small; - } - - div div.legalnotice p - { - color: #666666; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid #DCDCDC; - } - - .programlisting, - .screen - { - border: 1px solid #DCDCDC; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Blurbs */ - div.note, - div.tip, - div.important, - div.caution, - div.warning, - p.blurb - { - border: 1px solid #DCDCDC; - } - - /* Table of contents */ - .toc - { - border: 1px solid #DCDCDC; - } - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid #DCDCDC; - } - - div.informaltable table tr th, - div.table table tr th - { - background-color: #F0F0F0; - border: 1px solid #DCDCDC; - } - - .copyright-footer - { - color: #8F8F8F; - } - - /* Misc */ - span.highlight - { - color: #00A000; - } - } - - @media print - { - /* Links */ - a - { - color: black; - } - - a:visited - { - color: black; - } - - .spirit-nav - { - display: none; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid gray; - } - - .programlisting, - .screen - { - border: 1px solid gray; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Table of contents */ - .toc - { - border: 1px solid gray; - } - - .informaltable table, - .table table - { - border: 1px solid gray; - border-collapse: collapse; - } - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid gray; - } - - div.informaltable table tr th, - div.table table tr th - { - border: 1px solid gray; - } - - table.simplelist tr td - { - border: none !important; - } - - /* Misc */ - span.highlight - { - font-weight: bold; - } - } - -/*============================================================================= - Images -=============================================================================*/ - - span.inlinemediaobject img - { - vertical-align: middle; - } - -/*============================================================================== - Super and Subscript: style so that line spacing isn't effected, see - http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341 -==============================================================================*/ - -sup, -sub { - height: 0; - line-height: 1; - vertical-align: baseline; - _vertical-align: bottom; - position: relative; - -} - -sup { - bottom: 1ex; -} - -sub { - top: .5ex; -} - diff --git a/math/doc/html/images/blank.png b/math/doc/html/images/blank.png deleted file mode 100644 index 764bf4f0c3bb4a09960b04b6fa9c9024bca703bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrEa{HEjtmSN`?>!lvNA9*>Uz33 zhE&XXd(lylL4oIh!GZnHecj|txT>yO8>^qY%(y?B;Tppl#t7yOYze#vq#8^aMzDZb YLK^d5CO(feU_df>y85}Sb4q9e0BevqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP diff --git a/math/doc/html/images/caution.svg b/math/doc/html/images/caution.svg deleted file mode 100644 index 4bd586a0..00000000 --- a/math/doc/html/images/caution.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - Attenzione - - - - pulsante - - - - - Open Clip Art Library - - - - - Architetto Francesco Rollandin - - - - - Architetto Francesco Rollandin - - - - image/svg+xml - - - en - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/math/doc/html/images/draft.png b/math/doc/html/images/draft.png deleted file mode 100644 index 0084708c9b8287c51efa6b40b8d492854191455e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17454 zcmXwh2{_c>_y1e^C}m43S&}RzTQstU#!g0*n6YJ1aTS}>RLe1z8LVo z`rtm$Vp5JW1|R$HTrs@@LGR)Z?>PPkL8l=j-77Z&G8Tsi{RV4sPaGi)BBI`)`R~Q` z*=O$N8oBahuA1ujq=ONsH^Z$;Z@?A2zPOR;+t7%GvNscPQvtyu^ z^(He{(TNfAz{D>S76#pNt`V=aFm{t&tF)Lut!iq>3RU|!!{xbB|2@69Az7({KpgFX zBHUL)|7ydZKc0k%azcGA&PuCQV*kD$bT{P;b?=`M@6C_|b6!~s9j#tuU~e9n-MCHj zfV5S(js_`kv|ivaLE*6pY!G%r11u^qOVBw|g29`m16#D?@yi>zc0bwz%G@ za2kvxn$XS7{2WQ_ju!==VTs+`V&L;sVz(Pl4+J?F&ZZv3KoKW2c?bBtGq5)oRM?*)usx_-H@47Cu#_qL+2eow%ZDy0=bsNsUP&ms8wSUp@nG86W_bQDmNMRgINC`_}NgC zCcqF_Ta|ScVvPu;|0KG{NIio~DaGYcHYq4AEiIzkxEPqs@0$Z$*)*@J$yP3ObX$%T zzRS=t%7(g3t{Q*^ zEyTxT$*5+N*(plL90Bl6`Nb^WdKn_Pvpb{prO$Iu<5}~-EnXK7fy@_2c89d+ZhJ|)%qTOcbj#K2|l1B!3n*4em>_| zs0+)H9*C!kU%yVP5l({XnQMeRu}L5Sj@SNhX<@4AzfhMZW{P&$t(3w4cF;s3a!PkRM$$6I_u>8qK3>fr(_ zv-Y*v{SjgTfq|+BcyYvbM!vF^@bCsN)N`rpJ$><_Gs5*qVfQ0@761Os;NFEBr2V@4l75H}1u*H-x1FzIyrv zX4-neRxZt~y^&-x>*hYlIJHqt-rL&^c9<9eB-5QN-kNin&S^e!8s9rIjX$~r#FHSZ zPPGHSJ7NH?>J1WXHMp6{3_m_JHFb(pJM-&G@!UzwMZ19kYDMv8^_@35=1Qp*GU^C$ znS!nuvPQ5{W^@`l=K{0vn9d5B4sd@GNsqwYt13N;s_n$M5sF(Y{Gu{$f)Pqq6>`4( zoK6ZojptUz?t{2OQ@f4d24!GwYi6y465k8gmK^#vxd{Il-lBt^R7pE@jfteJwgkQ(YBxT%22tXdci&(7P>~Iov zlAF+-uyinD*mU_C1!Z!%vFE`wQx$H0WX*IMeKiv()c!!|Br&A#iWksE5wy*|X}DYF zOkmbb)NtBhwAgAQQ)W7>BzBj)^ec8BETv8dt~1Wtd}pfRmKnoYyMymV`fvW*bjTy@ zNFqchp{S-_%)XBfUmWyYYl$xVgQtxEVn358@gKtpQuu~+-Kl-33E21oa-Fi&oBI&`1N%T=`T3uD7xjR z1Q5DaVd-rOkkqXdK@Yti1APh3TN{S1DknOaE4Vdk=o-MQ!`zf#3^vm0RTp!s>(8+I z(BKlybb>#^&dE#xTWKkB5>RG$`5m60nzI~B_{R+DtsN)(K1(tUpuVHL0)mIKnUfCR zGE=xGXN@3g`N9QSG|T0c&wxuu*Qg<*+`PlfSfJAKfkWnRsVJ$bx1$Z`o)r~6%k4&i z<9I5}9(ypb2w!#-r7*;K+DjakI~Af;0mNtDxBc4R3|&8W^=h6KIf?>|@$@)*tlfRZ zrCkhM8ZMxnVd%Q>wKHQ6h;cwwxcI6738osp@h30JoAC1Si}3tS%4m{iuKSkF9xsrA%;wLv z8A#j|uifcVGx>ptY|-u;nJ$&yw-19u5smA=3C-sC-n~XzIV= z*~{{V0<$*x$DP?_zs?b?-Dsw+U(_(rI4}YY;n`g??R&MWiSNSHJ{;g>QuE+91GpRE zd9DfqUKVfdeAUwO7il>!iH(N~Y+WTTbX3b$$01o$aei(SD8PN9Ig|tehF6`&rMrwH z6C(}UhO7r4V(nXd&uyraV5X$iUUKSF7E#U?bu;$RHwXn03D2wdZR{}kbxlVH%&8F=8tR+X zZ7kKlMpt29EK0Mnb~Bm{1y*D227__FT~$T7>%Bs>RxQrlgI55^$os$sc`ic?+hwHQ zy%C%qRZZ?xjTT>R%HJvzYPmTbNJa&lc4N}*?d^eJ+TgWWrby|-X?$RL63$ocD0=1z zq>bD(K@l*w5V0aAqv-^DtQq(*B!;KK;S)?XERW0Z8_eB7>{FG!W0Tmu$$a@l#~e@t zb7eAjZ0Z_IN~+HjldvP|xLYiL+|mn)Q;HmqDMG^&^)mW(%Xyb~AG4Jkd@~F091U{i zRg(Zi(!S357h;^+d50bWLHO{(l58O+_d192vyD-Oh|kx|qkk|71w!Jdg*R ze=X`e#>jQ1n83%L37gJmxi{uYC;jRU__qGnk430EXC8CcRU^h&pyhVlHM8x(ce}=L+^|Pv zi|35MNQw6wsl4bw0P{NiUo&-{is+V{iXV*G{_L^ONZ@`H!#JZ@}t;bpd`Z>sx8;y zHg4#YSJ*anpi2Do=jWPejhaoGWKx!&jJeOVaku|#u8?8fCKc>EQ4j zn#0h@X_`cW22kHot+mSQz%;tAI|=i92)Mglsf!Nu*>=_g&(G0d>km#k&)3TllY#^u z02UV-NFuEUi@}-x=ETTTKA`X~EX5jv8~B<}HTK+*9&OvU2dkm`_BX*1VwV7Ij{pg= zxZNaUqPlcVYHAyHFof?m;I-ZD4bN%(@@2Td(VgI3 z{*lWmv$RZ|smov=_kGDznn+>_uX{A6;y}7pk@d`(Lh6{gFvrA5pAdMmu#G*QM1tQg z2^Fb6c;#}e`;nd&oQKh@*-zW!9ICOL;OFgA2-lpdOKmA=Bp;B_eB?c_df>veT)HW_ zs^sQQf+2B6j;5$>ZG`htEUcU*ioNkd+t(slRq00x_hk@N@P79aTAmlqe^(+dfnlOAm^WQavYofR?D70kyE!Q*mr z=MN`!PH<&(t6*5^bfSkgq80c+f6zkhX=!PVf1h^9o$GPX_wJAXim3%oV$)U9uWEOS zFZ=#iF~Q2FVvon!cVc(IvVedI_~ko1I5_AWe$&m4Pfz2dCm|J!YrHng`j<_W)9N6m zB@dJSV}^c#gL?<*=59v;JS=y@jX-JNZOq4)l)5={d`D-W!H@43<=pJ8Cgd+PhIgZ0 z&1}v2D7JC5c5m#$OqX|BP;TfUn_N`fm(NOG0@Nct5f0=5t?)gK>f*TZCP8 zE~vAz*f8;aNltIEzGmjk2?*gK)Xp4zr=6}59u!nRQiIH`r`BWA&&b%MJ+5|@JL))( z@lrFw!p1WBNbZB0IBSb692ygY3^VVnsCLI=p1DJ|9{R_viTo;ObrMJc9HN|9uopn6 zRxJ;a=NLyqW+8?@vXq*8_pkle?wWh-VSoPI3KIY*(nFq-Do;;Op#DRi6cuGIH zS7vFz0{w!T_jHtX9_!if-#4x3C9rYkU+2(KU|U3m|Bg{GCEc)G`)=}$uCcQ=o5}DE z4Qf|tZ$U3T&S;B0h&i3`PkyvL2&sK4L#)80)82naNsAnG!T4hTE7tIKfou;^sdejO z2^s6dG*bi~@XEf#g^+->YY)^i=j)rM{NpB6Os``bQrQDn`1IcCuH_tZo5u_RDCH9} z{A(qdv9-0;w%911g+6sdttId7K8LSzQx$iqDz9QJ%qEV5yOmP%C1^8VJ~&}mU03FL z5oO`+?_NbVx$89Jw_-65lS!LLL^<~>akOrQ*k8YT2f4npv!ne5LrBe1G zio4QV3V(pOPhsqCE2}mF#DXWKYCS~L->zo*5E`io01;dT5!%$~no!XU5w!2{HcD?P z$hkcJN$uNC-y%aa0(KSOy?hfCDA$n{jchN?d(tgsICQ1t%qbWQv5cv{T zBj3*W2{Wy5d$(v$@2djHMZWKG0-|MBp}dhVgo z`Vtvp{;P+IYGFXmo{Vm!Z+%cSOfN(pk`H&G(lF_arZgk!S9%x!bxKv`i?_8}mLXr- zfr-&54|LC~#MV?wRQm-EFSRGh4UA`d#pe!1bE-N?4{$Ro_JUO#b#A&ZN*AR84Q}u< zvAY2P2=^9%#QQFnV=U#iNT(o73@pmXuFN9 zR?J5~@ZQvv3RK1HlYa(JZ^_%8l~?wwv#lhDjuMeJDC(xS8@gFpX*CRJe8FTVfJFLE z`L1aE-QBK9wh8Lf=pv(3olJVvrY$Ug*U6Z?{29OF(VGVhgGPXNls7&Qa&U0KV+QnI zZN%rly6U%&wr&4qxD-ujjGO;@!kTH7t&RXS%qN%jTu85~jgj|mC`qh(pxU=LV<8nb z2*g-&X|S0`7pDK6F8O&>ow7=M28`!FRi!}mwg<&m&wRfJeJ}DJr|iWg3+r~FUb+VH z+^&Un8v5io|7I+;!f+OL&4~5g{fgrz&*uKPkBlbI#PEevl|9*Y;=ZITUOO{Xx3C?Q zjzzGgf??gQ$0$6k$=bjrn_FR?Ye1m&Alpp zIR2qAum=_rBrlX|_n?Z@`qf(Z0Kxll;~uBw&`7z9Rouxf&+){$ zT5l^SU3Q)C3!P4v<8`92?@GD3FQ>)aS@lWl&S_BItaudFE*~l)`|-f4TB#FImiY-_6&9CJ9!>+TEFxeaHO)c zvYblCdx~?kBnWI3y61_CZ7mPPn2!+y?I{+aqiJZV?FagXcV{P$qIQQ}eE8YeF~}-C z?~`EwR@Cieg6$PyJheqdg_twn9zXuoot>29+0UEtNnjKl>TgTSUIvF?r06FMW=5%U zVd7m{^kQJvRLT(~FbI!5QPR|t;QS06HwuN4s*dj5LYaTRDxc}ZbrgWm^`&@BlD%v{ z@k_@S)~9!76hB8Mu>D387Pt4nO+z=`W~vOK4w3_J5I>vM30q#&d2?0jd#W0;VqxAg z{*lOi191%V8^8z#kba|g@ zf4GgGK?gk~`S@>iRci6!kr&;RW(POG$iTAEX&_W3#)}zCBeQ12R}+C0SYWFB65117 zYx=X?gFD^+O{W+m*yAfTKmH~iyJk_ORwrFE`7|!~oOPP-{gCa4!U@A4tRgdFHX_Yj zXQ(+MhO_<^GRY)^`TEi#V?93xP#4UrcMTTD68zJ5m{DboqT=!RTMbx!3!QK?HvU2k za26tqP;3Z8*MmUwL{1I(@xTcd(1T(ot# zQ8@|QB&oA%VI6gn^=!_v)SeO)d`3{ewC>T3XM2ZqXV?iJKc$ft~<<46c!aV(J1mq1tLFMB0Q_){R1qliEw)EIh?S*NbRo*>YaPx z2D-q!@M}X!8+eqQe9(&`vcyr9*&Oc9DxIi1?hcoq6i$Ah{XCaH^2(3TA1)Kpu+!qk zA@V)hERaLu1FN%*CTT?U)U3}+-q2_=P0!NO%*+f=0%Wimi9$O7C`K!{L9kB*slT?q zUcI7*#C3?0;`R1E9%YCjZ^&A%sl;VB6)!NN8!ilSF2s{jaYk8%7*iwJVYB!}O?`NH z3i_o?`Ay@F!YSHq7T_a4Hx}qC1`Ys?_byXR)+^(UW^H6<{Jzm;NPkU97r0{^fT(G3 zA;><1llKwo;%)@{#|9*KE2Dmt;(B|5Xn)(d7V2nr5OXUnA1y_!SW`EtahHzmtl7EE z%djW%*H&HXZ5G=Zciw~l@@5<9~SRg`>1sdv54 zxFT-jCM&GG@`Q{Ed)0jXg#Q(;FzY%A{D;AwhdaxE884#bo;|{{h3OhPo0zbfk;Dak z&K2NDkc8^wVPB=SuB`+^8?cY^RCi~h^*4EmEc?J58r@|g3@t=ykaw*U{ z7v;3}@P2CDd|+0TV}fa|3wl21cs|OFu95chX_S0!)zbD}eUfC(!|&!sVnQ$17U~i3 z0k=jQ+>~NKF!oc>Kff(i>j!z@pZJbZ5Qp)A$c?DsJ8AAv!O6p8|34Q%YV*_nJIhup zmQ_{jUUf_x$nzc!4cNy^2`mY?*);JNgVn<>CsVJYluh4fgd_lF1||t597+ld|`Ww&*4Hb;}rzPmefkY`>P)eSO9!dk2T9lx>3Nj5=Mz z>r&3-+b)2!U(?WAgFX*rf@W9Zs)AS~lgtt0D77}&rQM~)i0CR!i>JVNn(;mN6vgZBRDJTdsnC?L>2H3nvZSp}#S z6*9#|of{57Sm7ktIRid*9b3ZPg&%fX92~R}5M69&e`W5`q8wIvKfBufD8f~ti%ujG zOKrw=EiJwBQ@H^*Kw5USk7cR`7;^B0t+_@D3FT&XdE}c8tK%QmNSn;A8RAsMn%(|0 z_}jjAHPj3;YFouX*X_FojE7Cjxz=b5i*s)&Yd&bUzA+NKT|Zgbdbmf54f|QjdK38q zi<5!1eI+@#xyQUC|DfNCc{vl9E=gF^==yjQil0#7c-)K`hM1O%+v4rCu<4wKEeA0> zEp7n)lZbgQlME&N{V?)eCoEp(d6K!Ss;kAyp#QBJcej|g)B$R7KOOkifc9VnF zpKF%Ab3TXaX3pJr!NN3W-J#nLcKyGkvKH+HgbCYH}OT?)qCnEf9AXZkAVH3MBfRj~6fiIx9-31EklLu#&A>uM1w2k;x{p z6SI?Q5Rg<8S^)#s7ktzJn2#%93?7_*{LTCC-tM45qH{l**RpP#OJ?_o|&r9_@2w=JQ0!~pTA3FNiUVF zjRt1OxG5gVaVzD&sIKBRWsLqX)%Dkp^<7D*ZZlOm3zvdK^caRuw0>+%#d)V}r&k&S9MyDr!%#@BU!SxwyIS8y<#pz4TMM)V&d^NaNs%w$r@xK#Z3m-2Z*B z!#C;VD$dR|<3`KMGMYA6xX-+QD(`rW%C9UZWiLh9%$D1dG#BLbF0BPZF6E_5rP3E_PtxKxwhc&v~_AC^KGDil_tZ4XGnVb_$U_s<> zm8kOFv>8SO#Z#<$=3;#hN0AoE1Eo}p(7cFS7Qu%^IP-@56DRm6;s!W0R~nyzVbeB3 zPAN{zeWb;hUGr&tp1Tb%L(Z#nGF@88afdvP=TZ9_k=he-T;vK+PJ?P6ZmqD(qF2)s za2N9|Lc_5Nh35`gW$V?KI?Em}*YAvfg$3DWNG(QvSZl?m(ctUi;Jj>c8s=iGQ_8IM5DCuHH6)h}yp2H=v=D>3DC$o5 zULiAntcT_b0+|=uYSp|RU-2AMnA6H6X~WBacfvSg6(!cva9ZpD*PX&B$NOGVW7m4Z zwa-Ri?VbD4_e>?M_?{Gp5;i_LZoeQ02^su&$#yDX?_v;bcFNw!ZP<6Xv&q9brr24? z|MPgFAc|V;-ru*smLhtJwEd+tn+gNbYoIlb_Kua^3mizF_sOpaD<1}%2z%fRbie!kaalVI{ zp@PyqhIH`4Lsqp;dXPhYq~D8f_H6FmSVw-c0o;ya;C8Y>viOHkmc!hn^U?c42ZCH^ zPvXs&ZghbhD2ne4J#b17FiS1I9RZ}k{S#@9{3>3owZjjy1{zN14ROf_w3vGo{JOw_ z5LgnbR;Hy3#ZJxN6{=$yTGHlT+Ef*p(!2*(M=pwq@gO`fH0Dr=&t+`4T`zSS&3H_CR^wcr&oGobo(9^R&aR88N zpw8q{)!yFVT7gxPn;IJlWjTZ@;6^gu0o~Co*Y0Z@emdc=ZP)|VUtU{c#1q@-m_(_F zc1`xg?iSXAbKiaJX8bOLsLi6+@?>^2T?51nOC5Th3E$~E6NxFrub(x#dXlO?;HtC3wTw{sEq|t|$syXv8Tfi8aLLm->hWZycx7?T zJAi@9^p4)TX$*q+{W7YJe2KLA=_$$-H9nhPJihFrO_S8hL+vnyy}LF)%0Bq3`+#x! z9*bF7ccIkdCZ@bjMt&SE&fg93dDU%csbne!aFMjR)C1<>dSOfAuTm{~rfOo&wrBMJ zi&P9Lc>oaIV)w+sO?^X8sjG-$-RvZfqbMm$3ez1Ue{7OHR`>b6Zq=_PrYSjFxJ0op{4-*e>HCa+ltbeRL&8rk zOpJhZ9$>74+^4>aDY$y1{+F~p?}C)d=kkO*yn}m+Ajw3dOKVp@e;LX1bbqRk?i+lw z|D*uJfF@Z)tVkhWM8?V&E# zyTmdhV1UEb^kae@-je}deN9LG-8T#3h1#ojCe(gby>*zW``~(Lb6U7b%MwpdqEq(K zEAS{$i7H)RbG~^`>SjFQj+Y?^Ft_1`?au+^$%R3VO1zaZ&?NS4Ry^!zZ^1c#NF#h@ z0TD8T#jmQSaL?JG8@5uub}qy}n+?f&XZkDn47o*x8=R+CS@9|@+5Sc{deuI{#-k@8 zGwVmk8dyt-NdoEExb}uMJCH}0UCrJi0uMR>5}ISY3=oBH&_hoY1^&b)i~yE}u?si% z-PVt&T)q;ZjLX0sQ_TA3bY0+hmGSl}+yLQsMKtH(tvC4_;^TC@vXLuNNTcgL$DnOmGiLhtBsMO^AN`&cRypL?h%J zBiGYxSf4}dsU(n)My$~2GQ(fLVZL#U{ho7-j1j?+)IK2=G zzXCkvL!y~{frb8dl#NEpiJ)7iad@m8(PH3p4?x|-%d5zWr95 z{rZdqX#)sbTEuODXWBnoDA=^8YbJDSV-L>lfASXZ8D5y&t!Z16)p2XHLUQ||$XzhY z(ZNTOhU=WEWxG?AOmpj8K~s1|a(9*t@!RB$%7U*=_M=t5`sWAFyuz~O>Pcjl@Xup- zgO1W}S3KEY&FGc`(1n6n{`G2ikZF>bki9HXRA3j<&l!tlbJ90F>rt$!$g75+5bn&= zjyM80QWmZjI!*;6oH#S|oUcV47FQsDUj%8+H$#7kjT51X^Jtx)%R6|}%#Dzl{ml^0 zsv`Nn-|Bz+48SiLI79mr$g&j&34dbw@n{EdZCF)Q;Eel#;Nmcdr^kRV94rNTeQ>Vz znJP$)fOxR055Bx)K9o5)r}JEv*;cD>C^DQx@@g87^oPS)Thwn;1zXm|@zi=;a?}5h8y* z6>(bt{|;@&f#h3nUIC~HE_8P)0gPfgF)Iz@RlCu`TI%(q~$n4sNz_?{|9BnSz}B&7{#_ zK1qBPIgO|{V&NqKX{rq+Kghb{e3jx$f^oK<{_owdP6x{tVp%vtu+-oKp~{XTyKKwM zX$Z`c@2!q%PLTgNKUeKOH3e?Z#(AjRAjfx2O^o-wLC-f~kXBCsjG2SB4k!3w&_%ssqiht1fi`gwthS zZRJxsc=Hc02T0kCbeye6=v`L}H=CcUFBS95I`opHXTIPR!vcLUKAVpo{skf;5|%cj zKZYwozQ@0;jmm7Ewzi zo<*oL>r^0lz>yz>?Cy#9!RQ(wwu(u2d3jTu6aCREon8S6b$ev_gGij5MEh0OwVHeY z3JMHR>*HK->0zGG9~TkshQO@B>eP?{hJE$f;3N>uRLhJ}P~ZraSC!2Z-m?eb14#V` z%Wf}!yyU^lkZyZXi204#!G+O?Q@ceB{!4N<(Xh3BuOxshEnNU26-F#`#RIs>N}(pBW@Si2rp;jR0tbkkeB?zr zS^vJtRoNXb>y}tW?zt}O@HIPqMztv8X1Mb1o1(k)Qcp6Pr6uU+Wr|!Hv7+$?#M_2O z8ozNt-UfLk4P2gUH6A!~G!t9m9h^|<)O4k5$cNw60eE=UoqqjQ71i%yE>IF5MMw53 zoVZpnlyb}7VoR-eL}JL|uKeGZGj%Bhl-tR>S%pT0QE3%}REJ4vlQXBz;^otxhg?Ch z8XD=ERaU!$Uo=nzVP$E_ymK_%iP6+MG{s;{Y7rF$-fQvmr}-!7R+5kFfp=OE?phks zAIRMnzl_f-n|fdFUx?=;*-?y8#j=PGKPpOOOfX}Ic6w;#a)+T)JYU|+Xv2w$zY|)U zEeeU^HM+hO--oSU>4i-+iF%MO_+IX?wo`R@!WLpS_grU1%73579~%ph(hCzw#gqKS z33(@oiGv3~@~gXqf5#i|_#YMm|B*Feu_oGLserI4H_P&w_AZb(3Isb~x3Ld2CgpT^#omehU$@8! zZ37~|Sa6Xc;y@q!+6z@#hh!4ucXrj8>Qxso@J<)u1I)@I5I^A46Xis^4@P!i0{?O+ zk)CZ~poU|sFD2L)#iE|&ssJ3xPipy!K=bolV9l|2Z(i}*43Z1Wl>m~3P4rKR z;{jYf=VLJmi^x2<{AMKuKw`P)#B;8nQBOIhHy->XNo^z$xthq*cY@X>W!5<4<@4FX zNAk9jj2q$VscrAdjGHmRtbN?guU-Ze<)BHW%*jo5k{5v?@U7yU_yhoD$uz_q-~545jZuxv;JUQ*eFqk?xfP@lh~jP(N?2I0NIZ-q zDGD#GS$Z5%#81&o5Ufv=)9xJ28~UMS`u^V4={bp#DxfwlU7@e?)*KGps|+y(T@tnr z9A#fLvb5wqpXG&eyWHhX@kN1}iO>(98#j(F*qUrT%3$LWY&VnO9gyxolrhty?u8%M zar#N)92>LMOfsB>_D%XweB1a5z8o_t7nV53zGhsGH=Ml{GE->_3^aZ?i1k+KH{Bi* zY{{urjeCUUx{4awMMqbyudOM4lcFe}f0kQxel&TCX;q8#ItaBSss?l>cfYcppL667 zS>TiWKH{ZWLw~L%seSo-t#ZVhl2DGsZb6V3qms|C<$Uq?0!WD znTe>ujm8kZr!xr(ULadh!(KEI*eP2e8ztmktEMSwD&hN43ddd7xbRW-tc40~ z19$nWlggKs>s;Od2Iq;+HaSzqE~nHmhvFSvxIn|naZo8v~4WofUl z>!4oJlcv$-(Hu&G#ZJ_w5Z)n~Rwk6YVkfc4?7^k&H4vyEOMEwEPa;GC(@sG9UK0l< zym3g}=fXdvShWk}JWOfm_hXjhW6NC8L44=y9MCIOFwlD^9541durm zIjxI`e%J5;RSEZ-PK64!Z$8JYxg)OYus$7X)=3YXtpuw8`FEZoHX-T27L3^3mCkP{ z&5K05BG=29L~TDoxs)Ze8YnCtB6r6s5%IM>J{E>lKnexjk zF8wpQnq>*y(C;*VyBSQLL0w@L?tQ?-PuO>uDOcCX?6xMc;$ZyH<_&W`uj1gXTP$N^ zG4Xa31VfrYj;M^;f(-Tw`<_7wa3DmU;dQiQf z7NxutM)uz=k#Ko!M0*iv^qY@@ibmclp2|7Ykd5wdL5{;9N3m~n4g=tUwe;P zI25w!A{9r;$eMW>q{hpo19Bk1pe=P>6r$o%=>7_cjN&Tm5M|IJuUvH+AK${CJX4oU zgO6^=eBKAuGz|tm+nSrK8|c$@b06AJVIe41Kb6p*)`8SjV>XRLlD=n zxmF_SZPNO?HOkAGmreqZP`zhDat0zvL6TUJs#jj+mv!eE2D(4H^wQ8v?J{{F_uNf{ z3Guwlmr_Y+?1xwv+DlCV!Qxf3`85lI9<3MYLPv#eKnDUu^wHQ zc>gm5549XSAWHZ;ccVn65dF5Y_!SFO%Z|}Q(6SZUI=Dtc;z5Ty%nrLYb#L*-Yh(x- zSIj@A+IWZB(0~zQg=&PNK%${P5hZ>29oZHuVGWHXY$x1YFsQbXHgN={wk@*qqJ+Nq zd)egXY~a_ZOiJe;TU+HKlsyJTMfblt8%od5*(H)*Q$D;z+^%AQ4mXPuX2k}%-4;79 zmQ1FAba2Ra`Bcxdj1l&?kFD%K^S3JRgKXK4^qjwecz_P2uJ-l zC)Qvqm+~M!v43_gwKDlR1nJf$++0o6yE@XCdZL3q)UgB#ypJ#vJ8S*1wxK1+=6B}+ zXR*cqf>giPZZtBQvI{Zak5z&s<%W6@C}Kc7|Jd$GBC>hYST1Qs6_hTGb>DuR924B0 zN83(4+CxS$>H&|*-r;Fo4NfL83)iN!YZ&TeJH98$Hv6Ebv4bJ|{_ja0c;iH3BS>3^ zpqgshmx8R31o2gdvH`OqjyW=UU6imxAx*C0^Zy99KL{oAvkpUJI(*CnkaZUKS|miv7yJG9ATWhm{X zmhwPou-YzMm|1!Q!U)jjx%z~gla=8UD)w?G&Zaq~DL{YDwlSN`Dnf>gnqOEH6`e=5 zK`qGvB4v}6phVXVBt;`Goq9`6$1(ekF#8@rQR!O?lVvgou3PA{Mrgg$a_qp=fEaM+ zd)RS3^IyJ;lNL~f*%#*d`QhDdtk^TrNIS|sGACrecpC80;-?Fs23-ZoFWU}~?O7@t zRJMKubhf|4AK65+^Yw8fyef3O1aA8v$s3mu7PHe^U+V4qu@K`r&lUl#^MSr$PX__o zkc4H6xZrmj{B9ymd8uZ1l@104i9rzScjn&(C@ri42@jd|ET?03nMCrOz62_&EiK<& zSBCb#CxX4Kax$9yU;Qik2A;XS4l0o}3esA}H7YGS`LFZ+Cp-+Ao3iV`;Y2#t+RBw4 zx0Nc0Q9y%mXU8X3P%JXaJSA=%)~{Chg+d_{`+@cih8jx$RRzetz1P5XI7rt8+K9*g zkSIZ8rn1WK#9AdD3qWOXE$*F3Ot={(vVp^%iu~vZN~NYgy8_O?l!!1aW}T^|BNP&6 z0?qjrcZN zmjmPbA_FH7lrCAL1d^70)DpX)@;aCfO87MXaxB1q=%jAw{{D`eJ!d-BNT7BMlMWP}{ZZ&o`DY!}ep;HhTV*iZR2Rod;vAPt=MM&iugW*ReqJUt5Qt_q8>ioMMBX>R9!hDFUD-8$eYs z1-TtSGqXUHgLC2i8u*t{Y|w|+jMebIyJ4s^A?cD}pz_yAd)%*nkt{$;7Zl-taBgGY z3@mR5iYU7aF`|s8$6+Otgv24;=D;){kh=%;5zgNp{HcTraHisq6ZRfb zGW_De>QlN^)>%P;wg-4IfgjGe)9@8oA5f2u;i&iuD70ZYZG>GVyG?KsVh7^@q^+_&<9k|1f{n8Ys}&4 zar=)5U>;^OAAH~;qzbCyEiJ*~gbv|vsZP*7fI2Zi@i+OI%Qu*&(tT@erO6Mb(Z$59 zguP#oe4eqid_2;#q}qW|`vO7O$`jJe$IvZwKK6c?Xzh#3XO?(!b^2k4;!# zYGW=JqVe>I?z~`PT4Q2xwFFNu6ey9UCv31nPenw9f8bRc#Vg5bJF+YgK;aIo$ualP wqI_@;Bx5sQADwv9=?)5}0VhV#cC~Kt`tEf9DgFWeNC#x3htMsB-+J`_0Fi|iga7~l diff --git a/math/doc/html/images/home.png b/math/doc/html/images/home.png deleted file mode 100644 index 5584aacb097a80e66a5320312b6e4eb017af1a06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9nKDRM~@s%h>KBER+u?+=H<(mwr$-K=fo0^iDsNj}a zlv - - - - - - - -]> - - - - - - - - - - - - - - diff --git a/math/doc/html/images/important.png b/math/doc/html/images/important.png deleted file mode 100644 index 12c90f607a1b27ddde0a7d922ae255e8c90e883e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD diff --git a/math/doc/html/images/important.svg b/math/doc/html/images/important.svg deleted file mode 100644 index dd84f3fe..00000000 --- a/math/doc/html/images/important.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - -]> - - - - - - - - - - - - - - - diff --git a/math/doc/html/images/next.png b/math/doc/html/images/next.png deleted file mode 100644 index 59800b4e87f60c0e3383ede2b384b9be0f5ffe8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9mdAS+qP~A^!HU$R#>ro>7z#vFJHct5EtX@VE6z3e?1}lM4)<}k|4ieAQuK0 zgzld^2NdTl@Q5sCVBi)4Va7{$>;3=*RZCnWN`mv#O3D+9QW<;`lZ*0mQ&Tb%72Gn5 zQp@v;vWpdbBNU7b3{2X~)|>}w5Cds&E=o--$;{7F2+7P%WiT|*H!#*WFgd=yhZCqG z!qdeuq+(9;4PKV1Hyx6gnJ3)X*T8%1&d~!CcvGht8EkNzY0cztDB;<=un7h&oMQJ5 zOnAh^!sYOgmxqZbU_wKJkwW(@g)2%k8?y8!<$B~f6iH61Ubv5eVdat_!+^S!9H1Qx Mp00i_>zopr0Jz|Gn*aa+ diff --git a/math/doc/html/images/next.svg b/math/doc/html/images/next.svg deleted file mode 100644 index 75fa83ed..00000000 --- a/math/doc/html/images/next.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -]> - - - - - - - - - - - diff --git a/math/doc/html/images/next_disabled.png b/math/doc/html/images/next_disabled.png deleted file mode 100644 index 10a8c59d7b3741260b7bfe918b62d0670cad8433..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 zcmY+@U1(Ba7zgmjDRvTtQ&L$$oM7uF2)$_$L2619oS2=UZrYjBy6mRGh`_UtKA{mr z&7hmQ>n7-KH(k`l3W_tgna$01TCHhYnyqEo%+oU}@c)DNeRv<Aw4@Ln z93k3vZsg(J43U|lVL3RF9xoOO*=)8_spRvsnW@QgsZ^`gs@1Bl&*gH{hGA%$HjdJ0 z0!^YRltHf%-=x_aG>vj-2F;>8dW+_ej^3ep^d5ac3+N+SL}4$&L!O*Z;pbcwggWI6Ht znSIeG^MqH2daRdq_j=NKWUEDx?&yZ{K(t0hNp-olr%gM()V(P|g0v^Rdp~d9J+QaF z!E^J*7D+vMK=CJy#-QLKKFMEfm#>;6HRZnKq86dtH6)t7^tAr+x)|r>qo?RMm@+$*>08dLHng9R* diff --git a/math/doc/html/images/note.png b/math/doc/html/images/note.png deleted file mode 100644 index d0c3c645ab9af6318035b026dd86944b9ddc9114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - diff --git a/math/doc/html/images/prev.png b/math/doc/html/images/prev.png deleted file mode 100644 index d88a40f923e3c554125f01cd366707c60cfcad04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7$jYX~xFJ+qQ05v3zNuzpt9I!sW}Cx;s0Z9qba~V*daCKl2PvGf+KGNswPKkP8D0 zLif*|1B!DNctjR6FmMZjFyp1Wb$@_@swJ)wCBgY=CFO}lsSLh}$wm3OsVSL>3T~N2 zspa`a*~JRJ5eh~I1}5!gYt92Th=DXX7o{eaWaj57gkwm>gfq&(JZLf6ZeXy%aV8%R&r1O{j}20XTDX{IIykaj z4Nx#hVBm6cU}k1+>Qw1kB6gA`rFdeFa~bob(-ZFQzAc!;#K4>y+$E64`2%PJgQu&X J%Q~loCIAR&aHIeL diff --git a/math/doc/html/images/prev.svg b/math/doc/html/images/prev.svg deleted file mode 100644 index 6d88ffdd..00000000 --- a/math/doc/html/images/prev.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -]> - - - - - - - - - - - diff --git a/math/doc/html/images/prev_disabled.png b/math/doc/html/images/prev_disabled.png deleted file mode 100644 index ab3c17e02d156e7494dbab2f9cd66af46af2358c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1109 zcmY+@QAkr^6bJBgcW-U!1{X&)qK7M_5M*o=8THWJ+-L(GYZ=trG_;qf9*iP{hOHkvdvc6%2vA_iD3U9-0yJDcRs#*KhAd};6H4s z+g3+J7N6H0vA^EQ+H!#9vbD6`Ds$w15^-3cW^4D2@1tYP~^k(L0ny@6iX8LwWQOEu&AU zfQo1ZeMa02wZ5RQ=o?x^-x0S~tsm$oT0_531^q^UP!(}k|Km7w>=EA^b6?PZ^nZ>c zHKa9-^N)RQXXnMy?rd*3eEalZV2h}d<7uSYUol!mlhPcO#b+0y%6jsu%~o|iC&Tqk zjZ&+ugrhej$H%%!n2hY4Bw5`RXuNjl<&!a&&LzU`dgFGUS~a!}3S4TRbC4w09~9k9 z);;a{R+T2~>V^|?*&xZWmO@B-pr0ES45n;vpEFE`ily1KnYZ`aRH^GBuiSf29T*)S kmrP2ur(nL^ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS diff --git a/math/doc/html/images/tip.svg b/math/doc/html/images/tip.svg deleted file mode 100644 index cd437a5e..00000000 --- a/math/doc/html/images/tip.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - lamp - - - - office - - lamp - - - - - Open Clip Art Library - - - - - Sergio Luiz Araujo Silva - - - - - Public Domain - - - set 2005 - image/svg+xml - - - en - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/math/doc/html/images/toc-blank.png b/math/doc/html/images/toc-blank.png deleted file mode 100644 index 6ffad17a0c7a78deaae58716e8071cc40cb0b8e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g diff --git a/math/doc/html/images/toc-minus.png b/math/doc/html/images/toc-minus.png deleted file mode 100644 index abbb020c8e2d6705ebc2f0fc17deed30f2977a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL diff --git a/math/doc/html/images/toc-plus.png b/math/doc/html/images/toc-plus.png deleted file mode 100644 index 941312ce0dab168e0efcc5b572e387259880e541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{S^Z=hXV#3jn*#4_ x=vj5p^wF)?xpx*Du6ddKc=uuXxWffq{6A*KyDFWJxdXJF!PC{xWt~$(69DY=mmvTE diff --git a/math/doc/html/images/up.svg b/math/doc/html/images/up.svg deleted file mode 100644 index d31aa9c8..00000000 --- a/math/doc/html/images/up.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -]> - - - - - - - - - - - diff --git a/math/doc/html/images/up_disabled.png b/math/doc/html/images/up_disabled.png deleted file mode 100644 index e22bc8712192df3a8faa3264b0ec71ff3aaaa96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmY+@Z)^*37zgl2dzmw~oK$GMafp#cWXs;jyt!6uYtl7UeZec8`SV6X{7De9Dw2(4 zm>26}32(gcW*OddFPdfV_NT?wYHgXdTAfl#H+r5D$$dY`-IIHMf0Ezb_xin_j)wY; z^+eR*>U8+HT56YQ=DTxXyvjv5Ve7IHJsG&Xy#F3Q%RQaGE}~1@h=SLMDmvFJ(fJml zT!5&3h-ky9p~u59A~Sj2e&_VmWGa=4$F*XyxL7D;GnsO^oJh>ZqBHq?zEmnDlXI0y zMc4I7gDEtPW>6Hx&`b0Ry+#^}qc><4CD2?%a47s&%&rYXwnm@^2oK6>2RiC(}ybQxc@;;j!lN7xJKGXK5u*58HCq zi)yn~zbYIeQ(ynxTdSHPs@k~jXquO=uiH1eY2@@XO+VY(#*4k%x7x*t?&AUCt?S$* rDO!X~;(e<^-4?Sb9}HJ}I(CrQLYik+oARjr0iT6jPLE^M9tiybIrJyp diff --git a/math/doc/html/images/warning.png b/math/doc/html/images/warning.png deleted file mode 100644 index 1c33db8f34a8b42b373179b46a2d8d8a10e061a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> diff --git a/math/doc/html/images/warning.svg b/math/doc/html/images/warning.svg deleted file mode 100644 index fc8d7484..00000000 --- a/math/doc/html/images/warning.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - -]> - - - - - - - - - - - - - diff --git a/math/doc/html/index.html b/math/doc/html/index.html deleted file mode 100644 index c9d159d1..00000000 --- a/math/doc/html/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Chapter 1. Boost.BigNumbers - - - - - - -
-
-
Next
-
-
-

-Chapter 1. Boost.BigNumbers

-

-various authors -

-
-
-

- Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -

-
-
- -
- - - -

Last revised: July 08, 2011 at 18:51:46 +0100

-
-
Next
- - diff --git a/math/test/Jamfile.v2 b/math/test/Jamfile.v2 deleted file mode 100644 index 24b697e7..00000000 --- a/math/test/Jamfile.v2 +++ /dev/null @@ -1,189 +0,0 @@ -# copyright John Maddock 2008 -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt. - -import modules ; -import path ; - -local ntl-path = [ modules.peek : NTL_PATH ] ; -local gmp_path = [ modules.peek : GMP_PATH ] ; -local mpfr_path = [ modules.peek : MPFR_PATH ] ; -local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; - -if ! $(e_float_path) -{ - e_float_path = ../../../../e_float ; -} - -project : requirements - $(gmp_path) - $(gmp_path)/mpfr - $(gmp_path)/gmpfrxx - $(mpfr_path) - ../../.. - $(e_float_path) - $(gmp_path) - $(mpfr_path) - $(mpfr_path)/build.vc10/lib/Win32/Debug - msvc:static - E_FLOAT_DIGITS10=100 - E_FLOAT_TYPE_EFX - ; - -lib gmp ; -lib mpfr ; - -E_FLOAT_SRC = [ GLOB $(e_float_path)/libs/e_float/src/e_float : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/e_float/efx : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/constants : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/elementary : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/gamma : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/integer : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/tables : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/zeta : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/constants : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/elementary : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/utility : *.cpp ] - ; - -lib e_float : $(E_FLOAT_SRC) - : - [ check-target-builds ../config//has_e_float : : no ] - ; - -run test_arithmetic.cpp - : # command line - : # input files - : # requirements - TEST_BACKEND - : test_arithmetic_backend_concept ; - -run test_arithmetic.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPF50 - [ check-target-builds ../config//has_gmp : : no ] - : test_arithmetic_mpf50 ; - -run test_arithmetic.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPF - [ check-target-builds ../config//has_gmp : : no ] - : test_arithmetic_mpf ; - -run test_arithmetic.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPZ - [ check-target-builds ../config//has_gmp : : no ] - : test_arithmetic_mpz ; - -run test_arithmetic.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPQ - [ check-target-builds ../config//has_gmp : : no ] - : test_arithmetic_mpq ; - -run test_arithmetic.cpp mpfr gmp - : # command line - : # input files - : # requirements - TEST_MPFR - [ check-target-builds ../config//has_mpfr : : no ] - : test_arithmetic_mpfr ; - -run test_arithmetic.cpp mpfr gmp - : # command line - : # input files - : # requirements - TEST_MPFR_50 - [ check-target-builds ../config//has_mpfr : : no ] - : test_arithmetic_mpfr_50 ; - -run test_arithmetic.cpp $(E_FLOAT_SRC) - : # command line - : # input files - : # requirements - TEST_E_FLOAT - [ check-target-builds ../config//has_e_float : : no ] - : test_arithmetic_e_float ; - -run test_numeric_limits.cpp - : # command line - : # input files - : # requirements - TEST_BACKEND - : test_numeric_limits_backend_concept ; - -run test_numeric_limits.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPF50 - [ check-target-builds ../config//has_gmp : : no ] - : test_numeric_limits_mpf50 ; - -run test_numeric_limits.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPF - [ check-target-builds ../config//has_gmp : : no ] - : test_numeric_limits_mpf ; - -run test_numeric_limits.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPZ - [ check-target-builds ../config//has_gmp : : no ] - : test_numeric_limits_mpz ; - -run test_numeric_limits.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPQ - [ check-target-builds ../config//has_gmp : : no ] - : test_numeric_limits_mpq ; - -run test_numeric_limits.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR - [ check-target-builds ../config//has_mpfr : : no ] - : test_numeric_limits_mpfr ; - -run test_numeric_limits.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_50 - [ check-target-builds ../config//has_mpfr : : no ] - : test_numeric_limits_mpfr_50 ; - - -run test_numeric_limits.cpp $(E_FLOAT_SRC) - : # command line - : # input files - : # requirements - TEST_E_FLOAT - [ check-target-builds ../config//has_e_float : : no ] - : test_numeric_limits_e_float ; - -run big_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_50 - [ check-target-builds ../config//has_mpfr : : no ] - : big_number_concept_check_mpfr_50 ; - diff --git a/math/test/big_number_concept_check.cpp b/math/test/big_number_concept_check.cpp deleted file mode 100644 index e2745897..00000000 --- a/math/test/big_number_concept_check.cpp +++ /dev/null @@ -1,100 +0,0 @@ - -// Copyright John Maddock 2011. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -// -// This tests two things: that e_float meets our -// conceptual requirements, and that we can instantiate -// all our distributions and special functions on this type. -// -#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false -#define BOOST_MATH_INSTANTIATE_MINIMUM - -#ifdef _MSC_VER -# pragma warning(disable:4800) -# pragma warning(disable:4512) -# pragma warning(disable:4127) -# pragma warning(disable:4512) -# pragma warning(disable:4503) // decorated name length exceeded, name was truncated -#endif - -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) -# define TEST_MPF50 -# define TEST_MPF -# define TEST_BACKEND -# define TEST_MPZ -# define TEST_MPFR -# define TEST_MPFR_50 -# define TEST_E_FLOAT - -#ifdef _MSC_VER -#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") -#endif -#ifdef __GNUC__ -#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" -#endif - -#endif - -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) -#include -#endif -#ifdef TEST_BACKEND -#include -#endif -#ifdef TEST_E_FLOAT -#include -#endif -#if defined(TEST_MPFR) || defined(TEST_MPFR_50) -#include -#endif - -#include -#include "libs/math/test/compile_test/instantiate.hpp" - -void foo() -{ -#ifdef TEST_BACKEND - instantiate(boost::math::big_number_real_architype()); -#endif -#ifdef TEST_MPF_50 - instantiate(boost::math::mpf_real_50()); -#endif -#ifdef TEST_MPF - instantiate(boost::math::mpf_real()); -#endif -#ifdef TEST_MPFR_50 - instantiate(boost::math::mpfr_real_50()); -#endif -#ifdef TEST_MPFR - instantiate(boost::math::mpfr_real()); -#endif -#ifdef TEST_E_FLOAT - instantiate(boost::math::e_float()); -#endif -} - -int main() -{ -#ifdef TEST_BACKEND - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); -#endif -#ifdef TEST_MPF_50 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); -#endif -#ifdef TEST_MPF - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); -#endif -#ifdef TEST_MPFR_50 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); -#endif -#ifdef TEST_MPFR - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); -#endif -#ifdef TEST_E_FLOAT - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); -#endif - -} diff --git a/math/test/linpack-benchmark.cpp b/math/test/linpack-benchmark.cpp deleted file mode 100644 index 99c8c87b..00000000 --- a/math/test/linpack-benchmark.cpp +++ /dev/null @@ -1,1257 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -/* 1000d.f -- translated by f2c (version 20050501). -You must link the resulting object file with libf2c: -on Microsoft Windows system, link with libf2c.lib; -on Linux or Unix systems, link with .../path/to/libf2c.a -lm -or, if you install libf2c.a in a standard place, with -lf2c -lm --- in that order, at the end of the command line, as in -cc *.o -lf2c -lm -Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., - -http://www.netlib.org/f2c/libf2c.zip -*/ -#include -#include -#include -#include - -#ifdef TEST_MPF_100 -#include -typedef boost::math::mpf_real_100 real_type; -#elif defined(TEST_MPFR_100) -#include -typedef boost::math::mpfr_real_100 real_type; -#elif defined(TEST_GMPXX) -#include -typedef mpf_class real_type; -#elif defined(TEST_MPFRXX) -#include -typedef mpfr_class real_type; -#elif defined(TEST_E_FLOAT) -#include -#include -#include -typedef ::efx::e_float real_type; -using ef::abs; -#elif defined(TEST_E_FLOAT_BN) -#include -typedef boost::math::e_float real_type; -#else -typedef double real_type; -#endif - -#ifndef CAST_TO_RT -# define CAST_TO_RT(x) x -#endif - -extern "C" { -#include "f2c.h" - integer s_wsfe(cilist *), e_wsfe(void), do_fio(integer *, char *, ftnlen), - s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen), - e_wsle(void); - /* Subroutine */ int s_stop(char *, ftnlen); - -#undef abs -#undef dabs -#define dabs abs -#undef min -#undef max -#undef dmin -#undef dmax -#define dmin min -#define dmax max - -} -#include - -using std::min; -using std::max; - -/* Table of constant values */ - -static integer c__0 = 0; -static real_type c_b7 = CAST_TO_RT(1); -static integer c__1 = 1; -static integer c__9 = 9; - -inline double second_(void) -{ - return ((double)(clock())) / CLOCKS_PER_SEC; -} - -int dgefa_(real_type *, integer *, integer *, integer *, integer *), dgesl_(real_type *, integer *, integer *, integer *, real_type *, integer *); -int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type *); -int matgen_(real_type *, integer *, integer *, real_type *, real_type *); -real_type epslon_(real_type *); -real_type ran_(integer *); -int dscal_(integer *, real_type *, real_type *, integer *); -int daxpy_(integer *, real_type *, real_type *, integer *, real_type *, integer *); -integer idamax_(integer *, real_type *, integer *); -real_type ddot_(integer *, real_type *, integer *, real_type *, integer *); -int daxpy_(integer *, real_type *, real_type *, integer *, real_type *, integer *); -int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type *); - - -extern "C" int MAIN__() -{ -#ifdef TEST_MPF_100 - std::cout << "Testing big_number >" << std::endl; -#elif defined(TEST_MPFR_100) - std::cout << "Testing big_number >" << std::endl; -#elif defined(TEST_GMPXX) - std::cout << "Testing mpf_class at 100 decimal degits" << std::endl; - mpf_set_default_prec(((100 + 1) * 1000L) / 301L); -#elif defined(TEST_MPFRXX) - std::cout << "Testing mpfr_class at 100 decimal degits" << std::endl; - mpfr_set_default_prec(((100 + 1) * 1000L) / 301L); -#elif defined(TEST_E_FLOAT) - std::cout << "Testing boost::ef::e_float" << std::endl; -#elif defined(TEST_E_FLOAT_BN) - std::cout << "Testing boost::math::e_float" << std::endl; -#else - std::cout << "Testing double" << std::endl; -#endif - - - /* Format strings */ - static char fmt_1[] = "(\002 Please send the results of this run to:\002" - "//\002 Jack J. Dongarra\002/\002 Computer Science Department\002/" - "\002 University of Tennessee\002/\002 Knoxville, Tennessee 37996" - "-1300\002//\002 Fax: 615-974-8296\002//\002 Internet: dongarra@c" - "s.utk.edu\002/)"; - static char fmt_40[] = "(\002 norm. resid resid mac" - "hep\002,\002 x(1) x(n)\002)"; - static char fmt_50[] = "(1p5e16.8)"; - static char fmt_60[] = "(//\002 times are reported for matrices of or" - "der \002,i5)"; - static char fmt_70[] = "(6x,\002factor\002,5x,\002solve\002,6x,\002tota" - "l\002,5x,\002mflops\002,7x,\002unit\002,6x,\002ratio\002)"; - static char fmt_80[] = "(\002 times for array with leading dimension o" - "f\002,i4)"; - static char fmt_110[] = "(6(1pe11.3))"; - - /* System generated locals */ - integer i__1; - real_type d__1, d__2, d__3; - - /* Builtin functions */ - - /* Local variables */ - static real_type a[1001000] /* was [1001][1000] */, b[1000]; - static integer i__, n; - static real_type x[1000]; - static double t1; - static integer lda; - static double ops; - static real_type eps; - static integer info; - static double time[6], cray, total; - static integer ipvt[1000]; - static real_type resid, norma; - static real_type normx; - static real_type residn; - - /* Fortran I/O blocks */ - static cilist io___4 = { 0, 6, 0, fmt_1, 0 }; - static cilist io___20 = { 0, 6, 0, fmt_40, 0 }; - static cilist io___21 = { 0, 6, 0, fmt_50, 0 }; - static cilist io___22 = { 0, 6, 0, fmt_60, 0 }; - static cilist io___23 = { 0, 6, 0, fmt_70, 0 }; - static cilist io___24 = { 0, 6, 0, fmt_80, 0 }; - static cilist io___25 = { 0, 6, 0, fmt_110, 0 }; - static cilist io___26 = { 0, 6, 0, 0, 0 }; - - - lda = 1001; - - /* this program was updated on 10/12/92 to correct a */ - /* problem with the random number generator. The previous */ - /* random number generator had a short period and produced */ - /* singular matrices occasionally. */ - - n = 1000; - cray = .056f; - s_wsfe(&io___4); - e_wsfe(); - /* Computing 3rd power */ - d__1 = (real_type) n; - /* Computing 2nd power */ - d__2 = (real_type) n; - ops = boost::lexical_cast(real_type(d__1 * (d__1 * d__1) * 2. / 3. + d__2 * d__2 * 2.)); - - matgen_(a, &lda, &n, b, &norma); - - /* ****************************************************************** */ - /* ****************************************************************** */ - /* you should replace the call to dgefa and dgesl */ - /* by calls to your linear equation solver. */ - /* ****************************************************************** */ - /* ****************************************************************** */ - - t1 = second_(); - dgefa_(a, &lda, &n, ipvt, &info); - time[0] = second_() - t1; - t1 = second_(); - dgesl_(a, &lda, &n, ipvt, b, &c__0); - time[1] = second_() - t1; - total = time[0] + time[1]; - /* ****************************************************************** */ - /* ****************************************************************** */ - - /* compute a residual to verify results. */ - - i__1 = n; - for (i__ = 1; i__ <= i__1; ++i__) { - x[i__ - 1] = b[i__ - 1]; - /* L10: */ - } - matgen_(a, &lda, &n, b, &norma); - i__1 = n; - for (i__ = 1; i__ <= i__1; ++i__) { - b[i__ - 1] = -b[i__ - 1]; - /* L20: */ - } - dmxpy_(&n, b, &n, &lda, x, a); - resid = CAST_TO_RT(0); - normx = CAST_TO_RT(0); - i__1 = n; - for (i__ = 1; i__ <= i__1; ++i__) { - /* Computing MAX */ - d__2 = resid, d__3 = (d__1 = b[i__ - 1], abs(d__1)); - resid = max(d__2,d__3); - /* Computing MAX */ - d__2 = normx, d__3 = (d__1 = x[i__ - 1], abs(d__1)); - normx = max(d__2,d__3); - /* L30: */ - } - eps = epslon_(&c_b7); - residn = resid / (n * norma * normx * eps); - s_wsfe(&io___20); - e_wsfe(); - s_wsfe(&io___21); - /* - do_fio(&c__1, (char *)&residn, (ftnlen)sizeof(real_type)); - do_fio(&c__1, (char *)&resid, (ftnlen)sizeof(real_type)); - do_fio(&c__1, (char *)&eps, (ftnlen)sizeof(real_type)); - do_fio(&c__1, (char *)&x[0], (ftnlen)sizeof(real_type)); - do_fio(&c__1, (char *)&x[n - 1], (ftnlen)sizeof(real_type)); - */ - std::cout << std::setw(12) << std::setprecision(5) << residn << " " << resid << " " << eps << " " << x[0] << " " << x[n-1] << std::endl; - e_wsfe(); - - s_wsfe(&io___22); - do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer)); - e_wsfe(); - s_wsfe(&io___23); - e_wsfe(); - - time[2] = total; - time[3] = ops / (total * 1e6); - time[4] = 2. / time[3]; - time[5] = total / cray; - s_wsfe(&io___24); - do_fio(&c__1, (char *)&lda, (ftnlen)sizeof(integer)); - e_wsfe(); - s_wsfe(&io___25); - for (i__ = 1; i__ <= 6; ++i__) { - // do_fio(&c__1, (char *)&time[i__ - 1], (ftnlen)sizeof(real_type)); - std::cout << std::setw(12) << std::setprecision(5) << time[i__ - 1]; - } - e_wsfe(); - s_wsle(&io___26); - do_lio(&c__9, &c__1, " end of tests -- this version dated 10/12/92", ( - ftnlen)44); - e_wsle(); - - s_stop("", (ftnlen)0); - return 0; -} /* MAIN__ */ - -/* Subroutine */ int matgen_(real_type *a, integer *lda, integer *n, - real_type *b, real_type *norma) -{ - /* System generated locals */ - integer a_dim1, a_offset, i__1, i__2; - real_type d__1, d__2; - - /* Local variables */ - static integer i__, j; - static integer init[4]; - - - /* Parameter adjustments */ - a_dim1 = *lda; - a_offset = 1 + a_dim1; - a -= a_offset; - --b; - - /* Function Body */ - init[0] = 1; - init[1] = 2; - init[2] = 3; - init[3] = 1325; - *norma = CAST_TO_RT(0); - i__1 = *n; - for (j = 1; j <= i__1; ++j) { - i__2 = *n; - for (i__ = 1; i__ <= i__2; ++i__) { - a[i__ + j * a_dim1] = ran_(init) - .5f; - /* Computing MAX */ - d__2 = (d__1 = a[i__ + j * a_dim1], abs(d__1)); - *norma = max(d__2,*norma); - /* L20: */ - } - /* L30: */ - } - i__1 = *n; - for (i__ = 1; i__ <= i__1; ++i__) { - b[i__] = CAST_TO_RT(0); - /* L35: */ - } - i__1 = *n; - for (j = 1; j <= i__1; ++j) { - i__2 = *n; - for (i__ = 1; i__ <= i__2; ++i__) { - b[i__] += a[i__ + j * a_dim1]; - /* L40: */ - } - /* L50: */ - } - return 0; -} /* matgen_ */ - -/* Subroutine */ int dgefa_(real_type *a, integer *lda, integer *n, integer * - ipvt, integer *info) -{ - /* System generated locals */ - integer a_dim1, a_offset, i__1, i__2, i__3; - - /* Local variables */ - static integer j, k, l; - static real_type t; - static integer kp1, nm1; - - - /* dgefa factors a double precision matrix by gaussian elimination. */ - - /* dgefa is usually called by dgeco, but it can be called */ - /* directly with a saving in time if rcond is not needed. */ - /* (time for dgeco) = (1 + 9/n)*(time for dgefa) . */ - - /* on entry */ - - /* a double precision(lda, n) */ - /* the matrix to be factored. */ - - /* lda integer */ - /* the leading dimension of the array a . */ - - /* n integer */ - /* the order of the matrix a . */ - - /* on return */ - - /* a an upper triangular matrix and the multipliers */ - /* which were used to obtain it. */ - /* the factorization can be written a = l*u where */ - /* l is a product of permutation and unit lower */ - /* triangular matrices and u is upper triangular. */ - - /* ipvt integer(n) */ - /* an integer vector of pivot indices. */ - - /* info integer */ - /* = 0 normal value. */ - /* = k if u(k,k) .eq. 0.0 . this is not an error */ - /* condition for this subroutine, but it does */ - /* indicate that dgesl or dgedi will divide by zero */ - /* if called. use rcond in dgeco for a reliable */ - /* indication of singularity. */ - - /* linpack. this version dated 08/14/78 . */ - /* cleve moler, university of new mexico, argonne national lab. */ - - /* subroutines and functions */ - - /* blas daxpy,dscal,idamax */ - - /* internal variables */ - - - - /* gaussian elimination with partial pivoting */ - - /* Parameter adjustments */ - a_dim1 = *lda; - a_offset = 1 + a_dim1; - a -= a_offset; - --ipvt; - - /* Function Body */ - *info = 0; - nm1 = *n - 1; - if (nm1 < 1) { - goto L70; - } - i__1 = nm1; - for (k = 1; k <= i__1; ++k) { - kp1 = k + 1; - - /* find l = pivot index */ - - i__2 = *n - k + 1; - l = idamax_(&i__2, &a[k + k * a_dim1], &c__1) + k - 1; - ipvt[k] = l; - - /* zero pivot implies this column already triangularized */ - - if (a[l + k * a_dim1] == 0.) { - goto L40; - } - - /* interchange if necessary */ - - if (l == k) { - goto L10; - } - t = a[l + k * a_dim1]; - a[l + k * a_dim1] = a[k + k * a_dim1]; - a[k + k * a_dim1] = t; -L10: - - /* compute multipliers */ - - t = -1. / a[k + k * a_dim1]; - i__2 = *n - k; - dscal_(&i__2, &t, &a[k + 1 + k * a_dim1], &c__1); - - /* row elimination with column indexing */ - - i__2 = *n; - for (j = kp1; j <= i__2; ++j) { - t = a[l + j * a_dim1]; - if (l == k) { - goto L20; - } - a[l + j * a_dim1] = a[k + j * a_dim1]; - a[k + j * a_dim1] = t; -L20: - i__3 = *n - k; - daxpy_(&i__3, &t, &a[k + 1 + k * a_dim1], &c__1, &a[k + 1 + j * - a_dim1], &c__1); - /* L30: */ - } - goto L50; -L40: - *info = k; -L50: - /* L60: */ - ; - } -L70: - ipvt[*n] = *n; - if (a[*n + *n * a_dim1] == 0.) { - *info = *n; - } - return 0; -} /* dgefa_ */ - -/* Subroutine */ int dgesl_(real_type *a, integer *lda, integer *n, integer * - ipvt, real_type *b, integer *job) -{ - /* System generated locals */ - integer a_dim1, a_offset, i__1, i__2; - - /* Local variables */ - static integer k, l; - static real_type t; - static integer kb, nm1; - - - /* dgesl solves the double precision system */ - /* a * x = b or trans(a) * x = b */ - /* using the factors computed by dgeco or dgefa. */ - - /* on entry */ - - /* a double precision(lda, n) */ - /* the output from dgeco or dgefa. */ - - /* lda integer */ - /* the leading dimension of the array a . */ - - /* n integer */ - /* the order of the matrix a . */ - - /* ipvt integer(n) */ - /* the pivot vector from dgeco or dgefa. */ - - /* b double precision(n) */ - /* the right hand side vector. */ - - /* job integer */ - /* = 0 to solve a*x = b , */ - /* = nonzero to solve trans(a)*x = b where */ - /* trans(a) is the transpose. */ - - /* on return */ - - /* b the solution vector x . */ - - /* error condition */ - - /* a division by zero will occur if the input factor contains a */ - /* zero on the diagonal. technically this indicates singularity */ - /* but it is often caused by improper arguments or improper */ - /* setting of lda . it will not occur if the subroutines are */ - /* called correctly and if dgeco has set rcond .gt. 0.0 */ - /* or dgefa has set info .eq. 0 . */ - - /* to compute inverse(a) * c where c is a matrix */ - /* with p columns */ - /* call dgeco(a,lda,n,ipvt,rcond,z) */ - /* if (rcond is too small) go to ... */ - /* do 10 j = 1, p */ - /* call dgesl(a,lda,n,ipvt,c(1,j),0) */ - /* 10 continue */ - - /* linpack. this version dated 08/14/78 . */ - /* cleve moler, university of new mexico, argonne national lab. */ - - /* subroutines and functions */ - - /* blas daxpy,ddot */ - - /* internal variables */ - - - /* Parameter adjustments */ - a_dim1 = *lda; - a_offset = 1 + a_dim1; - a -= a_offset; - --ipvt; - --b; - - /* Function Body */ - nm1 = *n - 1; - if (*job != 0) { - goto L50; - } - - /* job = 0 , solve a * x = b */ - /* first solve l*y = b */ - - if (nm1 < 1) { - goto L30; - } - i__1 = nm1; - for (k = 1; k <= i__1; ++k) { - l = ipvt[k]; - t = b[l]; - if (l == k) { - goto L10; - } - b[l] = b[k]; - b[k] = t; -L10: - i__2 = *n - k; - daxpy_(&i__2, &t, &a[k + 1 + k * a_dim1], &c__1, &b[k + 1], &c__1); - /* L20: */ - } -L30: - - /* now solve u*x = y */ - - i__1 = *n; - for (kb = 1; kb <= i__1; ++kb) { - k = *n + 1 - kb; - b[k] /= a[k + k * a_dim1]; - t = -b[k]; - i__2 = k - 1; - daxpy_(&i__2, &t, &a[k * a_dim1 + 1], &c__1, &b[1], &c__1); - /* L40: */ - } - goto L100; -L50: - - /* job = nonzero, solve trans(a) * x = b */ - /* first solve trans(u)*y = b */ - - i__1 = *n; - for (k = 1; k <= i__1; ++k) { - i__2 = k - 1; - t = ddot_(&i__2, &a[k * a_dim1 + 1], &c__1, &b[1], &c__1); - b[k] = (b[k] - t) / a[k + k * a_dim1]; - /* L60: */ - } - - /* now solve trans(l)*x = y */ - - if (nm1 < 1) { - goto L90; - } - i__1 = nm1; - for (kb = 1; kb <= i__1; ++kb) { - k = *n - kb; - i__2 = *n - k; - b[k] += ddot_(&i__2, &a[k + 1 + k * a_dim1], &c__1, &b[k + 1], &c__1); - l = ipvt[k]; - if (l == k) { - goto L70; - } - t = b[l]; - b[l] = b[k]; - b[k] = t; -L70: - /* L80: */ - ; - } -L90: -L100: - return 0; -} /* dgesl_ */ - -/* Subroutine */ int daxpy_(integer *n, real_type *da, real_type *dx, - integer *incx, real_type *dy, integer *incy) -{ - /* System generated locals */ - integer i__1; - - /* Local variables */ - static integer i__, m, ix, iy, mp1; - - - /* constant times a vector plus a vector. */ - /* uses unrolled loops for increments equal to one. */ - /* jack dongarra, linpack, 3/11/78. */ - - - /* Parameter adjustments */ - --dy; - --dx; - - /* Function Body */ - if (*n <= 0) { - return 0; - } - if (*da == 0.) { - return 0; - } - if (*incx == 1 && *incy == 1) { - goto L20; - } - - /* code for unequal increments or equal increments */ - /* not equal to 1 */ - - ix = 1; - iy = 1; - if (*incx < 0) { - ix = (-(*n) + 1) * *incx + 1; - } - if (*incy < 0) { - iy = (-(*n) + 1) * *incy + 1; - } - i__1 = *n; - for (i__ = 1; i__ <= i__1; ++i__) { - dy[iy] += *da * dx[ix]; - ix += *incx; - iy += *incy; - /* L10: */ - } - return 0; - - /* code for both increments equal to 1 */ - - - /* clean-up loop */ - -L20: - m = *n % 4; - if (m == 0) { - goto L40; - } - i__1 = m; - for (i__ = 1; i__ <= i__1; ++i__) { - dy[i__] += *da * dx[i__]; - /* L30: */ - } - if (*n < 4) { - return 0; - } -L40: - mp1 = m + 1; - i__1 = *n; - for (i__ = mp1; i__ <= i__1; i__ += 4) { - dy[i__] += *da * dx[i__]; - dy[i__ + 1] += *da * dx[i__ + 1]; - dy[i__ + 2] += *da * dx[i__ + 2]; - dy[i__ + 3] += *da * dx[i__ + 3]; - /* L50: */ - } - return 0; -} /* daxpy_ */ - -real_type ddot_(integer *n, real_type *dx, integer *incx, real_type *dy, - integer *incy) -{ - /* System generated locals */ - integer i__1; - real_type ret_val; - - /* Local variables */ - static integer i__, m, ix, iy, mp1; - static real_type dtemp; - - - /* forms the dot product of two vectors. */ - /* uses unrolled loops for increments equal to one. */ - /* jack dongarra, linpack, 3/11/78. */ - - - /* Parameter adjustments */ - --dy; - --dx; - - /* Function Body */ - ret_val = CAST_TO_RT(0); - dtemp = CAST_TO_RT(0); - if (*n <= 0) { - return ret_val; - } - if (*incx == 1 && *incy == 1) { - goto L20; - } - - /* code for unequal increments or equal increments */ - /* not equal to 1 */ - - ix = 1; - iy = 1; - if (*incx < 0) { - ix = (-(*n) + 1) * *incx + 1; - } - if (*incy < 0) { - iy = (-(*n) + 1) * *incy + 1; - } - i__1 = *n; - for (i__ = 1; i__ <= i__1; ++i__) { - dtemp += dx[ix] * dy[iy]; - ix += *incx; - iy += *incy; - /* L10: */ - } - ret_val = dtemp; - return ret_val; - - /* code for both increments equal to 1 */ - - - /* clean-up loop */ - -L20: - m = *n % 5; - if (m == 0) { - goto L40; - } - i__1 = m; - for (i__ = 1; i__ <= i__1; ++i__) { - dtemp += dx[i__] * dy[i__]; - /* L30: */ - } - if (*n < 5) { - goto L60; - } -L40: - mp1 = m + 1; - i__1 = *n; - for (i__ = mp1; i__ <= i__1; i__ += 5) { - dtemp = dtemp + dx[i__] * dy[i__] + dx[i__ + 1] * dy[i__ + 1] + dx[ - i__ + 2] * dy[i__ + 2] + dx[i__ + 3] * dy[i__ + 3] + dx[i__ + - 4] * dy[i__ + 4]; - /* L50: */ - } -L60: - ret_val = dtemp; - return ret_val; -} /* ddot_ */ - -/* Subroutine */ int dscal_(integer *n, real_type *da, real_type *dx, - integer *incx) -{ - /* System generated locals */ - integer i__1, i__2; - - /* Local variables */ - static integer i__, m, mp1, nincx; - - - /* scales a vector by a constant. */ - /* uses unrolled loops for increment equal to one. */ - /* jack dongarra, linpack, 3/11/78. */ - - - /* Parameter adjustments */ - --dx; - - /* Function Body */ - if (*n <= 0) { - return 0; - } - if (*incx == 1) { - goto L20; - } - - /* code for increment not equal to 1 */ - - nincx = *n * *incx; - i__1 = nincx; - i__2 = *incx; - for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) { - dx[i__] = *da * dx[i__]; - /* L10: */ - } - return 0; - - /* code for increment equal to 1 */ - - - /* clean-up loop */ - -L20: - m = *n % 5; - if (m == 0) { - goto L40; - } - i__2 = m; - for (i__ = 1; i__ <= i__2; ++i__) { - dx[i__] = *da * dx[i__]; - /* L30: */ - } - if (*n < 5) { - return 0; - } -L40: - mp1 = m + 1; - i__2 = *n; - for (i__ = mp1; i__ <= i__2; i__ += 5) { - dx[i__] = *da * dx[i__]; - dx[i__ + 1] = *da * dx[i__ + 1]; - dx[i__ + 2] = *da * dx[i__ + 2]; - dx[i__ + 3] = *da * dx[i__ + 3]; - dx[i__ + 4] = *da * dx[i__ + 4]; - /* L50: */ - } - return 0; -} /* dscal_ */ - -integer idamax_(integer *n, real_type *dx, integer *incx) -{ - /* System generated locals */ - integer ret_val, i__1; - real_type d__1; - - /* Local variables */ - static integer i__, ix; - static real_type dmax__; - - - /* finds the index of element having max. dabsolute value. */ - /* jack dongarra, linpack, 3/11/78. */ - - - /* Parameter adjustments */ - --dx; - - /* Function Body */ - ret_val = 0; - if (*n < 1) { - return ret_val; - } - ret_val = 1; - if (*n == 1) { - return ret_val; - } - if (*incx == 1) { - goto L20; - } - - /* code for increment not equal to 1 */ - - ix = 1; - dmax__ = abs(dx[1]); - ix += *incx; - i__1 = *n; - for (i__ = 2; i__ <= i__1; ++i__) { - if ((d__1 = dx[ix], abs(d__1)) <= dmax__) { - goto L5; - } - ret_val = i__; - dmax__ = (d__1 = dx[ix], abs(d__1)); -L5: - ix += *incx; - /* L10: */ - } - return ret_val; - - /* code for increment equal to 1 */ - -L20: - dmax__ = abs(dx[1]); - i__1 = *n; - for (i__ = 2; i__ <= i__1; ++i__) { - if ((d__1 = dx[i__], abs(d__1)) <= dmax__) { - goto L30; - } - ret_val = i__; - dmax__ = (d__1 = dx[i__], abs(d__1)); -L30: - ; - } - return ret_val; -} /* idamax_ */ - -real_type epslon_(real_type *x) -{ -#if defined(TEST_MPF_100) || defined(TEST_MPFR_100) || defined(TEST_GMPXX) || defined(TEST_MPFRXX) - return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); -#elif defined(TEST_E_FLOAT_BN) - return std::pow(10.0, 1-std::numeric_limits::digits10); -#else - return CAST_TO_RT(std::numeric_limits::epsilon()); -#endif -} /* epslon_ */ - -/* Subroutine */ int mm_(real_type *a, integer *lda, integer *n1, integer * - n3, real_type *b, integer *ldb, integer *n2, real_type *c__, - integer *ldc) -{ - /* System generated locals */ - integer a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset, i__1, i__2; - - /* Local variables */ - static integer i__, j; - - - /* purpose: */ - /* multiply matrix b times matrix c and store the result in matrix a. */ - - /* parameters: */ - - /* a double precision(lda,n3), matrix of n1 rows and n3 columns */ - - /* lda integer, leading dimension of array a */ - - /* n1 integer, number of rows in matrices a and b */ - - /* n3 integer, number of columns in matrices a and c */ - - /* b double precision(ldb,n2), matrix of n1 rows and n2 columns */ - - /* ldb integer, leading dimension of array b */ - - /* n2 integer, number of columns in matrix b, and number of rows in */ - /* matrix c */ - - /* c double precision(ldc,n3), matrix of n2 rows and n3 columns */ - - /* ldc integer, leading dimension of array c */ - - /* ---------------------------------------------------------------------- */ - - /* Parameter adjustments */ - a_dim1 = *lda; - a_offset = 1 + a_dim1; - a -= a_offset; - b_dim1 = *ldb; - b_offset = 1 + b_dim1; - b -= b_offset; - c_dim1 = *ldc; - c_offset = 1 + c_dim1; - c__ -= c_offset; - - /* Function Body */ - i__1 = *n3; - for (j = 1; j <= i__1; ++j) { - i__2 = *n1; - for (i__ = 1; i__ <= i__2; ++i__) { - a[i__ + j * a_dim1] = CAST_TO_RT(0); - /* L10: */ - } - dmxpy_(n2, &a[j * a_dim1 + 1], n1, ldb, &c__[j * c_dim1 + 1], &b[ - b_offset]); - /* L20: */ - } - - return 0; -} /* mm_ */ - -/* Subroutine */ int dmxpy_(integer *n1, real_type *y, integer *n2, integer * - ldm, real_type *x, real_type *m) -{ - /* System generated locals */ - integer m_dim1, m_offset, i__1, i__2; - - /* Local variables */ - static integer i__, j, jmin; - - - /* purpose: */ - /* multiply matrix m times vector x and add the result to vector y. */ - - /* parameters: */ - - /* n1 integer, number of elements in vector y, and number of rows in */ - /* matrix m */ - - /* y double precision(n1), vector of length n1 to which is added */ - /* the product m*x */ - - /* n2 integer, number of elements in vector x, and number of columns */ - /* in matrix m */ - - /* ldm integer, leading dimension of array m */ - - /* x double precision(n2), vector of length n2 */ - - /* m double precision(ldm,n2), matrix of n1 rows and n2 columns */ - - /* ---------------------------------------------------------------------- */ - - /* cleanup odd vector */ - - /* Parameter adjustments */ - --y; - m_dim1 = *ldm; - m_offset = 1 + m_dim1; - m -= m_offset; - --x; - - /* Function Body */ - j = *n2 % 2; - if (j >= 1) { - i__1 = *n1; - for (i__ = 1; i__ <= i__1; ++i__) { - y[i__] += x[j] * m[i__ + j * m_dim1]; - /* L10: */ - } - } - - /* cleanup odd group of two vectors */ - - j = *n2 % 4; - if (j >= 2) { - i__1 = *n1; - for (i__ = 1; i__ <= i__1; ++i__) { - y[i__] = y[i__] + x[j - 1] * m[i__ + (j - 1) * m_dim1] + x[j] * m[ - i__ + j * m_dim1]; - /* L20: */ - } - } - - /* cleanup odd group of four vectors */ - - j = *n2 % 8; - if (j >= 4) { - i__1 = *n1; - for (i__ = 1; i__ <= i__1; ++i__) { - y[i__] = y[i__] + x[j - 3] * m[i__ + (j - 3) * m_dim1] + x[j - 2] - * m[i__ + (j - 2) * m_dim1] + x[j - 1] * m[i__ + (j - 1) * - m_dim1] + x[j] * m[i__ + j * m_dim1]; - /* L30: */ - } - } - - /* cleanup odd group of eight vectors */ - - j = *n2 % 16; - if (j >= 8) { - i__1 = *n1; - for (i__ = 1; i__ <= i__1; ++i__) { - y[i__] = y[i__] + x[j - 7] * m[i__ + (j - 7) * m_dim1] + x[j - 6] - * m[i__ + (j - 6) * m_dim1] + x[j - 5] * m[i__ + (j - 5) * - m_dim1] + x[j - 4] * m[i__ + (j - 4) * m_dim1] + x[j - 3] - * m[i__ + (j - 3) * m_dim1] + x[j - 2] * m[i__ + (j - 2) - * m_dim1] + x[j - 1] * m[i__ + (j - 1) * m_dim1] + x[j] * - m[i__ + j * m_dim1]; - /* L40: */ - } - } - - /* main loop - groups of sixteen vectors */ - - jmin = j + 16; - i__1 = *n2; - for (j = jmin; j <= i__1; j += 16) { - i__2 = *n1; - for (i__ = 1; i__ <= i__2; ++i__) { - y[i__] = y[i__] + x[j - 15] * m[i__ + (j - 15) * m_dim1] + x[j - - 14] * m[i__ + (j - 14) * m_dim1] + x[j - 13] * m[i__ + (j - - 13) * m_dim1] + x[j - 12] * m[i__ + (j - 12) * m_dim1] - + x[j - 11] * m[i__ + (j - 11) * m_dim1] + x[j - 10] * m[ - i__ + (j - 10) * m_dim1] + x[j - 9] * m[i__ + (j - 9) * - m_dim1] + x[j - 8] * m[i__ + (j - 8) * m_dim1] + x[j - 7] - * m[i__ + (j - 7) * m_dim1] + x[j - 6] * m[i__ + (j - 6) * - m_dim1] + x[j - 5] * m[i__ + (j - 5) * m_dim1] + x[j - 4] - * m[i__ + (j - 4) * m_dim1] + x[j - 3] * m[i__ + (j - 3) - * m_dim1] + x[j - 2] * m[i__ + (j - 2) * m_dim1] + x[j - - 1] * m[i__ + (j - 1) * m_dim1] + x[j] * m[i__ + j * - m_dim1]; - /* L50: */ - } - /* L60: */ - } - return 0; -} /* dmxpy_ */ - -real_type ran_(integer *iseed) -{ - /* System generated locals */ - real_type ret_val; - - /* Local variables */ - static integer it1, it2, it3, it4; - - - /* modified from the LAPACK auxiliary routine 10/12/92 JD */ - /* -- LAPACK auxiliary routine (version 1.0) -- */ - /* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */ - /* Courant Institute, Argonne National Lab, and Rice University */ - /* February 29, 1992 */ - - /* .. Array Arguments .. */ - /* .. */ - - /* Purpose */ - /* ======= */ - - /* DLARAN returns a random double number from a uniform (0,1) */ - /* distribution. */ - - /* Arguments */ - /* ========= */ - - /* ISEED (input/output) INTEGER array, dimension (4) */ - /* On entry, the seed of the random number generator; the array */ - /* elements must be between 0 and 4095, and ISEED(4) must be */ - /* odd. */ - /* On exit, the seed is updated. */ - - /* Further Details */ - /* =============== */ - - /* This routine uses a multiplicative congruential method with modulus */ - /* 2**48 and multiplier 33952834046453 (see G.S.Fishman, */ - /* 'Multiplicative congruential random number generators with modulus */ - /* 2**b: an exhaustive analysis for b = 32 and a partial analysis for */ - /* b = 48', Math. Comp. 189, pp 331-344, 1990). */ - - /* 48-bit integers are stored in 4 integer array elements with 12 bits */ - /* per element. Hence the routine is portable across machines with */ - /* integers of 32 bits or more. */ - - /* .. Parameters .. */ - /* .. */ - /* .. Local Scalars .. */ - /* .. */ - /* .. Intrinsic Functions .. */ - /* .. */ - /* .. Executable Statements .. */ - - /* multiply the seed by the multiplier modulo 2**48 */ - - /* Parameter adjustments */ - --iseed; - - /* Function Body */ - it4 = iseed[4] * 2549; - it3 = it4 / 4096; - it4 -= it3 << 12; - it3 = it3 + iseed[3] * 2549 + iseed[4] * 2508; - it2 = it3 / 4096; - it3 -= it2 << 12; - it2 = it2 + iseed[2] * 2549 + iseed[3] * 2508 + iseed[4] * 322; - it1 = it2 / 4096; - it2 -= it1 << 12; - it1 = it1 + iseed[1] * 2549 + iseed[2] * 2508 + iseed[3] * 322 + iseed[4] - * 494; - it1 %= 4096; - - /* return updated seed */ - - iseed[1] = it1; - iseed[2] = it2; - iseed[3] = it3; - iseed[4] = it4; - - /* convert 48-bit integer to a double number in the interval (0,1) */ - - ret_val = ((real_type) it1 + ((real_type) it2 + ((real_type) it3 + ( - real_type) it4 * 2.44140625e-4) * 2.44140625e-4) * 2.44140625e-4) - * 2.44140625e-4; - return ret_val; - - /* End of RAN */ - -} /* ran_ */ - -/* - -Double results: -~~~~~~~~~~~~~~ - -norm. resid resid machep x(1) x(n) -6.4915 7.207e-013 2.2204e-016 1 1 - - - -times are reported for matrices of order 1000 -factor solve total mflops unit ratio -times for array with leading dimension of1001 -1.443 0.003 1.446 462.43 0.004325 25.821 - - -mpf_class results: -~~~~~~~~~~~~~~~~~~ - -norm. resid resid machep x(1) x(n) -3.6575e-05 5.2257e-103 2.8575e-101 1 1 - - - -times are reported for matrices of order 1000 -factor solve total mflops unit ratio -times for array with leading dimension of1001 -266.45 0.798 267.24 2.5021 0.79933 4772.2 - - -big_number >: -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - norm. resid resid machep x(1) x(n) - 0.36575e-4 0.52257e-102 0.28575e-100 0.1e1 0.1e1 - - - - times are reported for matrices of order 1000 - factor solve total mflops unit ratio - times for array with leading dimension of1001 - 279.96 0.84 280.8 2.3813 0.83988 5014.3 - -boost::math::ef::e_float: -~~~~~~~~~~~~~~~~~~~~~~~~~ - - norm. resid resid machep x(1) x(n) - 2.551330735e-16 1.275665107e-112 1e-99 1 1 - - - - times are reported for matrices of order 1000 - factor solve total mflops unit ratio - times for array with leading dimension of1001 - 363.89 1.074 364.97 1.8321 1.0916 6517.3 -*/ diff --git a/math/test/test_arithmetic.cpp b/math/test/test_arithmetic.cpp deleted file mode 100644 index 5e267eba..00000000 --- a/math/test/test_arithmetic.cpp +++ /dev/null @@ -1,894 +0,0 @@ -/////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ - -#include -#include - -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 -# define TEST_MPF -# define TEST_BACKEND -# define TEST_MPZ -# define TEST_MPFR -# define TEST_MPFR_50 -# define TEST_E_FLOAT -# define TEST_MPQ - -#ifdef _MSC_VER -#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") -#endif -#ifdef __GNUC__ -#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" -#endif - -#endif - -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) -#include -#endif -#ifdef TEST_BACKEND -#include -#endif -#ifdef TEST_E_FLOAT -#include -#endif -#if defined(TEST_MPFR) || defined(TEST_MPFR_50) -#include -#endif - -#define BOOST_TEST_THROW(x, EX)\ - try { x; BOOST_ERROR("Expected exception not thrown"); } \ - catch(const EX&){}\ - catch(...){ BOOST_ERROR("Incorrect exception type thrown"); } - -#undef BOOST_TEST -#define BOOST_TEST(x)\ - try {\ - if(x){}else{ BOOST_ERROR("Value was zero: "); }\ - }\ - catch(const std::exception& e){ \ - BOOST_ERROR("Unexpected exception: ");\ - BOOST_LIGHTWEIGHT_TEST_OSTREAM << e.what() << std::endl;\ - } - -bool isfloat(float){ return true; } -bool isfloat(double){ return true; } -bool isfloat(long double){ return true; } -template bool isfloat(T){ return false; } - -#define BOOST_TEST_CLOSE(x, y, tol)\ - if(x == 0){\ - BOOST_TEST(y == 0); }\ - else if(!isfloat(x)){\ - BOOST_TEST(x == y); }\ - else if((x != y) && (::fabsl(static_cast((x-y)/x)) > tol))\ - {\ - BOOST_ERROR("Expected tolerance was exceeded: ");\ - BOOST_LIGHTWEIGHT_TEST_OSTREAM << std::setprecision(34) << "(x-y)/x = " << ::fabsl(static_cast((x-y)/x)) \ - << " tolerance = " << tol << std::endl;\ - } - -template -void test_integer_ops(const T&){} - -template -void test_integer_ops(const boost::mpl::int_&) -{ - Real a(20); - Real b(7); - Real c; - BOOST_TEST(a % b == 20 % 7); - BOOST_TEST(a % 7 == 20 % 7); - BOOST_TEST(a % 7u == 20 % 7); - BOOST_TEST(-a % b == -20 % 7); - BOOST_TEST(-a % -b == -20 % -7); - BOOST_TEST(a % -b == 20 % -7); - BOOST_TEST(-a % 7 == -20 % 7); - BOOST_TEST(-a % -7 == -20 % -7); - BOOST_TEST(a % -7 == 20 % -7); - BOOST_TEST(-a % 7u == -20 % 7); - - b = -b; - BOOST_TEST(a % b == 20 % -7); - a = -a; - BOOST_TEST(a % b == -20 % -7); - BOOST_TEST(a % -7 == -20 % -7); - b = 7; - BOOST_TEST(a % b == -20 % 7); - BOOST_TEST(a % 7 == -20 % 7); - BOOST_TEST(a % 7u == -20 % 7); - - a = 20; - a %= b; - BOOST_TEST(a == 20 % 7); - a = -20; - a %= b; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -b; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -b; - BOOST_TEST(a == -20 % -7); - - a = 20; - a %= 7; - BOOST_TEST(a == 20 % 7); - a = -20; - a %= 7; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -7; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -7; - BOOST_TEST(a == -20 % -7); -#ifndef BOOST_NO_LONG_LONG - a = 20; - a %= 7uLL; - BOOST_TEST(a == 20 % 7); - a = -20; - a %= 7uLL; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -7LL; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -7LL; - BOOST_TEST(a == -20 % -7); -#endif - a = 20; - BOOST_TEST(++a == 21); - BOOST_TEST(--a == 20); - BOOST_TEST(a++ == 20); - BOOST_TEST(a == 21); - BOOST_TEST(a-- == 21); - BOOST_TEST(a == 20); - a = 2000; - a <<= 20; - BOOST_TEST(a == 2000L << 20); - a >>= 20; - BOOST_TEST(a == 2000); - a <<= 20u; - BOOST_TEST(a == 2000L << 20); - a >>= 20u; - BOOST_TEST(a == 2000); - BOOST_TEST_THROW(a <<= -20, std::out_of_range); - BOOST_TEST_THROW(a >>= -20, std::out_of_range); -#ifndef BOOST_NO_LONG_LONG - if(sizeof(long long) > sizeof(std::size_t)) - { - // extreme values should trigger an exception: - BOOST_TEST_THROW(a >>= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); - BOOST_TEST_THROW(a <<= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); - } -#endif - a = 20; - b = a << 20; - BOOST_TEST(b == (20 << 20)); - b = a >> 2; - BOOST_TEST(b == (20 >> 2)); - b = (a + 2) << 10; - BOOST_TEST(b == (22 << 10)); - b = (a + 3) >> 3; - BOOST_TEST(b == (23 >> 3)); - // - // Bit fiddling: - // - int i = 1020304; - int j = 56789123; - int k = 4523187; - a = i; - b = j; - c = a; - c &= b; - BOOST_TEST(c == (i & j)); - c = a; - c &= j; - BOOST_TEST(c == (i & j)); - c = a; - c &= a + b; - BOOST_TEST(c == (i & (i + j))); - BOOST_TEST((a & b) == (i & j)); - c = k; - a = a & (b + k); - BOOST_TEST(a == (i & (j + k))); - a = i; - a = (b + k) & a; - BOOST_TEST(a == (i & (j + k))); - a = i; - c = a & b & k; - BOOST_TEST(c == (i&j&k)); - - a = i; - b = j; - c = a; - c |= b; - BOOST_TEST(c == (i | j)); - c = a; - c |= j; - BOOST_TEST(c == (i | j)); - c = a; - c |= a + b; - BOOST_TEST(c == (i | (i + j))); - BOOST_TEST((a | b) == (i | j)); - c = k; - a = a | (b + k); - BOOST_TEST(a == (i | (j + k))); - a = i; - a = (b + k) | a; - BOOST_TEST(a == (i | (j + k))); - a = i; - c = a | b | k; - BOOST_TEST(c == (i|j|k)); - - a = i; - b = j; - c = a; - c ^= b; - BOOST_TEST(c == (i ^ j)); - c = a; - c ^= j; - BOOST_TEST(c == (i ^ j)); - c = a; - c ^= a + b; - BOOST_TEST(c == (i ^ (i + j))); - BOOST_TEST((a ^ b) == (i ^ j)); - c = k; - a = a ^ (b + k); - BOOST_TEST(a == (i ^ (j + k))); - a = i; - a = (b + k) ^ a; - BOOST_TEST(a == (i ^ (j + k))); - a = i; - c = a ^ b ^ k; - BOOST_TEST(c == (i^j^k)); - a = i; - b = j; - c = k; - BOOST_TEST(~a == ~i); - c = a & ~b; - BOOST_TEST(c == (i & ~j)); - c = ~(a | b); - BOOST_TEST(c == ~(i | j)); - // - // Non-member functions: - // - a = -20; - BOOST_TEST(abs(a) == 20); - BOOST_TEST(abs(-a) == 20); - BOOST_TEST(abs(+a) == 20); - a = 20; - BOOST_TEST(abs(a) == 20); - BOOST_TEST(abs(-a) == 20); - BOOST_TEST(abs(+a) == 20); -} - -template -void test_real_ops(const T&){} - -template -void test_real_ops(const boost::mpl::int_&) -{ -#if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) || defined(TEST_MPFR) - BOOST_TEST(abs(Real(2)) == 2); - BOOST_TEST(abs(Real(-2)) == 2); - BOOST_TEST(fabs(Real(2)) == 2); - BOOST_TEST(fabs(Real(-2)) == 2); - BOOST_TEST(floor(Real(5) / 2) == 2); - BOOST_TEST(ceil(Real(5) / 2) == 3); - BOOST_TEST(floor(Real(-5) / 2) == -3); - BOOST_TEST(ceil(Real(-5) / 2) == -2); - BOOST_TEST(trunc(Real(5) / 2) == 2); - BOOST_TEST(trunc(Real(-5) / 2) == -2); - // - // ldexp and frexp, these pretty much have to implemented by each backend: - // - BOOST_TEST(ldexp(Real(2), 5) == 64); - BOOST_TEST(ldexp(Real(2), -5) == Real(2) / 32); - Real v(512); - int exp; - Real r = frexp(v, &exp); - BOOST_TEST(r == 0.5); - BOOST_TEST(exp == 10); - BOOST_TEST(v == 512); - v = 1 / v; - r = frexp(v, &exp); - BOOST_TEST(r == 0.5); - BOOST_TEST(exp == -8); - // - // pow and exp: - // - v = 3.25; - r = pow(v, 0); - BOOST_TEST(r == 1); - r = pow(v, 1); - BOOST_TEST(r == 3.25); - r = pow(v, 2); - BOOST_TEST(r == boost::math::pow<2>(3.25)); - r = pow(v, 3); - BOOST_TEST(r == boost::math::pow<3>(3.25)); - r = pow(v, 4); - BOOST_TEST(r == boost::math::pow<4>(3.25)); - r = pow(v, 5); - BOOST_TEST(r == boost::math::pow<5>(3.25)); - r = pow(v, 6); - BOOST_TEST(r == boost::math::pow<6>(3.25)); - r = pow(v, 25); - BOOST_TEST(r == boost::math::pow<25>(Real(3.25))); - /* - r = pow(v, 56); - BOOST_TEST(r == boost::math::pow<56>(Real(3.25))); - */ -#endif -} - -#ifdef TEST_E_FLOAT - -template -struct lexical_cast_target_type -{ - typedef long double type; -}; - -#else - -template -struct lexical_cast_target_type -{ - typedef typename boost::mpl::if_< - boost::is_signed, - boost::intmax_t, - typename boost::mpl::if_< - boost::is_unsigned, - boost::uintmax_t, - T - >::type - >::type type; -}; - -#endif - -template -void test_negative_mixed(boost::mpl::true_ const&) -{ - typedef typename lexical_cast_target_type::type target_type; - std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; - Num n1 = -static_cast(1uLL << (std::numeric_limits::digits - 1)); - Num n2 = -1; - Num n3 = 0; - Num n4 = -20; - Num n5 = -8; - BOOST_TEST((Real(n2) < 0) == true); - BOOST_TEST((Real(n2) <= 0) == true); - BOOST_TEST((Real(n2) > 0) == false); - BOOST_TEST((Real(n2) >= 0) == false); - BOOST_TEST((Real(n2) == 0) == false); - BOOST_TEST((Real(n2) != 0) == true); - BOOST_TEST((Real(n2) == n2) == true); - BOOST_TEST((Real(n2) != n2) == false); - BOOST_TEST((Real(n2) >= n2) == true); - BOOST_TEST((Real(n2) <= n2) == true); - BOOST_TEST((Real(n2) > n2) == false); - BOOST_TEST((Real(n2) < n2) == false); - // Default construct: - BOOST_TEST(Real(n1) == n1); - BOOST_TEST(Real(n2) == n2); - BOOST_TEST(Real(n3) == n3); - BOOST_TEST(Real(n4) == n4); - BOOST_TEST(n1 == Real(n1)); - BOOST_TEST(n2 == Real(n2)); - BOOST_TEST(n3 == Real(n3)); - BOOST_TEST(n4 == Real(n4)); -#if defined(TEST_MPFR) || defined(TEST_MPFR_50) - Num tol = 10 * std::numeric_limits::epsilon(); -#else - Num tol = 0; -#endif - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); - BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); - // Assignment: - Real r(0); - BOOST_TEST(r != n1); - r = n1; - BOOST_TEST(r == n1); - r = n2; - BOOST_TEST(r == n2); - r = n3; - BOOST_TEST(r == n3); - r = n4; - BOOST_TEST(r == n4); - // Addition: - r = n2; - BOOST_TEST(r + n4 == n2 + n4); - BOOST_TEST(Real(r + n4) == n2 + n4); - r += n4; - BOOST_TEST(r == n2 + n4); - // subtraction: - r = n4; - BOOST_TEST(r - n5 == n4 - n5); - BOOST_TEST(Real(r - n5) == n4 - n5); - r -= n5; - BOOST_TEST(r == n4 - n5); - // Multiplication: - r = n2; - BOOST_TEST(r * n4 == n2 * n4); - BOOST_TEST(Real(r * n4) == n2 * n4); - r *= n4; - BOOST_TEST(r == n2 * n4); - // Division: - r = n1; - BOOST_TEST(r / n5 == n1 / n5); - BOOST_TEST(Real(r / n5) == n1 / n5); - r /= n5; - BOOST_TEST(r == n1 / n5); - // - // Extra cases for full coverage: - // - r = Real(n4) + n5; - BOOST_TEST(r == n4 + n5); - r = n4 + Real(n5); - BOOST_TEST(r == n4 + n5); - r = Real(n4) - n5; - BOOST_TEST(r == n4 - n5); - r = n4 - Real(n5); - BOOST_TEST(r == n4 - n5); - r = n4 * Real(n5); - BOOST_TEST(r == n4 * n5); - r = (4 * n4) / Real(4); - BOOST_TEST(r == n4); -} - -template -void test_negative_mixed(boost::mpl::false_ const&) -{ -} - -template -void test_mixed() -{ - typedef typename lexical_cast_target_type::type target_type; - std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; - Num n1 = static_cast(1uLL << (std::numeric_limits::digits - 1)); - Num n2 = 1; - Num n3 = 0; - Num n4 = 20; - Num n5 = 8; - BOOST_TEST((Real(n2) < 0) == false); - BOOST_TEST((Real(n2) <= 0) == false); - BOOST_TEST((Real(n2) > 0) == true); - BOOST_TEST((Real(n2) >= 0) == true); - BOOST_TEST((Real(n2) == 0) == false); - BOOST_TEST((Real(n2) != 0) == true); - BOOST_TEST((Real(n2) == n2) == true); - BOOST_TEST((Real(n2) != n2) == false); - BOOST_TEST((Real(n2) >= n2) == true); - BOOST_TEST((Real(n2) <= n2) == true); - BOOST_TEST((Real(n2) > n2) == false); - BOOST_TEST((Real(n2) < n2) == false); - // Default construct: - BOOST_TEST(Real(n1) == n1); - BOOST_TEST(Real(n2) == n2); - BOOST_TEST(Real(n3) == n3); - BOOST_TEST(Real(n4) == n4); - BOOST_TEST(Real(n1).template convert_to() == n1); - BOOST_TEST(Real(n2).template convert_to() == n2); - BOOST_TEST(Real(n3).template convert_to() == n3); - BOOST_TEST(Real(n4).template convert_to() == n4); - BOOST_TEST(n1 == Real(n1)); - BOOST_TEST(n2 == Real(n2)); - BOOST_TEST(n3 == Real(n3)); - BOOST_TEST(n4 == Real(n4)); - std::cout << Real(n1).str(0, boost::is_floating_point::value) << std::endl; -#if defined(TEST_MPFR) || defined(TEST_MPFR_50) - Num tol = 10 * std::numeric_limits::epsilon(); -#else - Num tol = 0; -#endif - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); - BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); - // Assignment: - Real r(0); - BOOST_TEST(r != n1); - r = n1; - BOOST_TEST(r == n1); - r = n2; - BOOST_TEST(r == n2); - r = n3; - BOOST_TEST(r == n3); - r = n4; - BOOST_TEST(r == n4); - // Addition: - r = n2; - BOOST_TEST(r + n4 == n2 + n4); - BOOST_TEST(Real(r + n4) == n2 + n4); - r += n4; - BOOST_TEST(r == n2 + n4); - // subtraction: - r = n4; - BOOST_TEST(r - n5 == n4 - n5); - BOOST_TEST(Real(r - n5) == n4 - n5); - r -= n5; - BOOST_TEST(r == n4 - n5); - // Multiplication: - r = n2; - BOOST_TEST(r * n4 == n2 * n4); - BOOST_TEST(Real(r * n4) == n2 * n4); - r *= n4; - BOOST_TEST(r == n2 * n4); - // Division: - r = n1; - BOOST_TEST(r / n5 == n1 / n5); - BOOST_TEST(Real(r / n5) == n1 / n5); - r /= n5; - BOOST_TEST(r == n1 / n5); - // - // special cases for full coverage: - // - r = n5 + Real(n4); - BOOST_TEST(r == n4 + n5); - r = n4 - Real(n5); - BOOST_TEST(r == n4 - n5); - r = n4 * Real(n5); - BOOST_TEST(r == n4 * n5); - r = (4 * n4) / Real(4); - BOOST_TEST(r == n4); - test_negative_mixed(boost::mpl::bool_::is_signed>()); -} - -template -void test() -{ -#ifndef NO_MIXED_OPS - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); -#ifdef BOOST_HAS_LONG_LONG - test_mixed(); - test_mixed(); -#endif - test_mixed(); - test_mixed(); - test_mixed(); -#endif - // - // Integer only functions: - // - test_integer_ops(typename boost::math::number_category::type()); - // - // Real number only functions: - // - test_real_ops(typename boost::math::number_category::type()); - // - // Test basic arithmetic: - // - Real a(8); - Real b(64); - Real c(500); - Real d(1024); - BOOST_TEST(a + b == 72); - a += b; - BOOST_TEST(a == 72); - BOOST_TEST(a - b == 8); - a -= b; - BOOST_TEST(a == 8); - BOOST_TEST(a * b == 8*64L); - a *= b; - BOOST_TEST(a == 8*64L); - BOOST_TEST(a / b == 8); - a /= b; - BOOST_TEST(a == 8); - Real ac(a); - BOOST_TEST(ac == a); - BOOST_TEST(-a == -8); - ac = a * c; - BOOST_TEST(ac == 8*500L); - ac = 8*500L; - ac = ac + b + c; - BOOST_TEST(ac == 8*500L+64+500); - ac = a; - ac = b + c + ac; - BOOST_TEST(ac == 8+64+500); - ac = ac - b + c; - BOOST_TEST(ac == 8+64+500-64+500); - ac = a; - ac = b + c - ac; - BOOST_TEST(ac == -8+64+500); - ac = a; - ac = ac * b; - BOOST_TEST(ac == 8*64); - ac = a; - ac *= b * ac; - BOOST_TEST(ac == 8*8*64); - ac = b; - ac = ac / a; - BOOST_TEST(ac == 64/8); - ac = b; - ac /= ac / a; - BOOST_TEST(ac == 64 / (64/8)); - ac = a; - ac = b + ac * a; - BOOST_TEST(ac == 64 * 2); - ac = a; - ac = b - ac * a; - BOOST_TEST(ac == 0); - ac = a; - ac = b * (ac + a); - BOOST_TEST(ac == 64 * (16)); - ac = a; - ac = b / (ac * 1); - BOOST_TEST(ac == 64 / 8); - ac = a; - ac = ac + b; - BOOST_TEST(ac == 8 + 64); - ac = a; - ac = a + ac; - BOOST_TEST(ac == 16); - ac = a; - ac = ac - b; - BOOST_TEST(ac == 8 - 64); - ac = a; - ac = a - ac; - BOOST_TEST(ac == 0); - ac = a; - ac += a + b; - BOOST_TEST(ac == 80); - ac = a; - ac += b + a; - BOOST_TEST(ac == 80); - ac = a; - ac -= a + b; - BOOST_TEST(ac == -64); - ac = a; - ac -= b - a; - BOOST_TEST(ac == 16 - 64); - ac = +a; - BOOST_TEST(ac == 8); - ac = -a; - BOOST_TEST(ac == -8); - ac = 8; - ac = a * ac; - BOOST_TEST(ac == 8*8); - ac = a; - ac = a; - ac += +a; - BOOST_TEST(ac == 16); - ac = a; - ac += -a; - BOOST_TEST(ac == 0); - ac = a; - ac += b - a; - BOOST_TEST(ac == 8 + 64-8); - ac = a; - ac += b*c; - BOOST_TEST(ac == 8 + 64 * 500); - ac = a; - ac = a; - ac -= +a; - BOOST_TEST(ac == 0); - ac = a; - ac -= -a; - BOOST_TEST(ac == 16); - ac = a; - ac -= c - b; - BOOST_TEST(ac == 8 - (500-64)); - ac = a; - ac -= b*c; - BOOST_TEST(ac == 8 - 500*64); - ac = a; - ac += ac * b; - BOOST_TEST(ac == 8 + 8 * 64); - ac = a; - ac -= ac * b; - BOOST_TEST(ac == 8 - 8 * 64); - ac = a * 8; - ac *= +a; - BOOST_TEST(ac == 64 * 8); - ac = a; - ac *= -a; - BOOST_TEST(ac == -64); - ac = a; - ac *= b * c; - BOOST_TEST(ac == 8 * 64 * 500); - ac = a; - ac *= b / a; - BOOST_TEST(ac == 8 * 64 / 8); - ac = a; - ac *= b + c; - BOOST_TEST(ac == 8 * (64 + 500)); - ac = b; - ac /= +a; - BOOST_TEST(ac == 8); - ac = b; - ac /= -a; - BOOST_TEST(ac == -8); - ac = b; - ac /= b / a; - BOOST_TEST(ac == 64 / (64/8)); - ac = b; - ac /= a + Real(0); - BOOST_TEST(ac == 8); - // - // simple tests with immediate values, these calls can be optimised in many backends: - // - ac = a + b; - BOOST_TEST(ac == 72); - ac = a + +b; - BOOST_TEST(ac == 72); - ac = +a + b; - BOOST_TEST(ac == 72); - ac = +a + +b; - BOOST_TEST(ac == 72); - ac = a + -b; - BOOST_TEST(ac == 8 - 64); - ac = -a + b; - BOOST_TEST(ac == -8+64); - ac = -a + -b; - BOOST_TEST(ac == -72); - ac = a + - + -b; // lots of unary operators!! - BOOST_TEST(ac == 72); - ac = a; - ac = b / ac; - BOOST_TEST(ac == b / a); - // - // Comparisons: - // - BOOST_TEST((a == b) == false); - BOOST_TEST((a != b) == true); - BOOST_TEST((a <= b) == true); - BOOST_TEST((a < b) == true); - BOOST_TEST((a >= b) == false); - BOOST_TEST((a > b) == false); - - BOOST_TEST((a+b == b) == false); - BOOST_TEST((a+b != b) == true); - BOOST_TEST((a+b >= b) == true); - BOOST_TEST((a+b > b) == true); - BOOST_TEST((a+b <= b) == false); - BOOST_TEST((a+b < b) == false); - - BOOST_TEST((a == b+a) == false); - BOOST_TEST((a != b+a) == true); - BOOST_TEST((a <= b+a) == true); - BOOST_TEST((a < b+a) == true); - BOOST_TEST((a >= b+a) == false); - BOOST_TEST((a > b+a) == false); - - BOOST_TEST((a+b == b+a) == true); - BOOST_TEST((a+b != b+a) == false); - BOOST_TEST((a+b <= b+a) == true); - BOOST_TEST((a+b < b+a) == false); - BOOST_TEST((a+b >= b+a) == true); - BOOST_TEST((a+b > b+a) == false); - - BOOST_TEST((8 == b+a) == false); - BOOST_TEST((8 != b+a) == true); - BOOST_TEST((8 <= b+a) == true); - BOOST_TEST((8 < b+a) == true); - BOOST_TEST((8 >= b+a) == false); - BOOST_TEST((8 > b+a) == false); - BOOST_TEST((800 == b+a) == false); - BOOST_TEST((800 != b+a) == true); - BOOST_TEST((800 >= b+a) == true); - BOOST_TEST((800 > b+a) == true); - BOOST_TEST((800 <= b+a) == false); - BOOST_TEST((800 < b+a) == false); - BOOST_TEST((72 == b+a) == true); - BOOST_TEST((72 != b+a) == false); - BOOST_TEST((72 <= b+a) == true); - BOOST_TEST((72 < b+a) == false); - BOOST_TEST((72 >= b+a) == true); - BOOST_TEST((72 > b+a) == false); - // - // Test sign and zero functions, plus use in boolian context: - // - a = 20; - BOOST_TEST(a.sign() > 0); - BOOST_TEST(!a.is_zero()); - a = -20; - BOOST_TEST(a.sign() < 0); - BOOST_TEST(!a.is_zero()); - a = 0; - BOOST_TEST(a.sign() == 0); - BOOST_TEST(a.is_zero()); - if(a) - { - BOOST_ERROR("Unexpected non-zero result"); - } - if(!a){} - else - { - BOOST_ERROR("Unexpected zero result"); - } - b = 2; - if(!b) - { - BOOST_ERROR("Unexpected zero result"); - } - if(b){} - else - { - BOOST_ERROR("Unexpected non-zero result"); - } - if(a && b) - { - BOOST_ERROR("Unexpected zero result"); - } - if(!(a || b)) - { - BOOST_ERROR("Unexpected zero result"); - } - if(a + b){} - else - { - BOOST_ERROR("Unexpected zero result"); - } - if(b - 2) - { - BOOST_ERROR("Unexpected non-zero result"); - } - // - // Test iostreams: - // - std::stringstream ss; - a = 20; - b = 2; - ss << a; - ss >> c; - BOOST_TEST(a == c); - ss.clear(); - ss << a + b; - ss >> c; - BOOST_TEST(c == 22); - BOOST_TEST(c == a + b); -} - - -int main() -{ -#ifdef TEST_BACKEND - test >(); -#endif -#ifdef TEST_MPF50 - test(); -#endif -#ifdef TEST_MPF - boost::math::mpf_real::default_precision(1000); - /* - boost::math::mpf_real r; - r.precision(50); - BOOST_TEST(r.precision() >= 50); - */ - BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); - test(); -#endif -#ifdef TEST_MPZ - test(); -#endif -#ifdef TEST_MPQ - test(); -#endif -#ifdef TEST_E_FLOAT - test(); -#endif -#ifdef TEST_MPFR - test(); -#endif -#ifdef TEST_MPFR_50 - test(); -#endif - return boost::report_errors(); -} - diff --git a/math/test/test_numeric_limits.cpp b/math/test/test_numeric_limits.cpp deleted file mode 100644 index 08d1c32f..00000000 --- a/math/test/test_numeric_limits.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ - -#include - -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 -# define TEST_MPF -# define TEST_BACKEND -# define TEST_MPZ -# define TEST_MPFR -# define TEST_MPFR_50 -# define TEST_E_FLOAT -# define TEST_MPQ - -#ifdef _MSC_VER -#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") -#endif -#ifdef __GNUC__ -#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" -#endif - -#endif - -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) -#include -#endif -#ifdef TEST_BACKEND -#include -#endif -#ifdef TEST_E_FLOAT -#include -#endif -#if defined(TEST_MPFR) || defined(TEST_MPFR_50) -#include -#endif - -#define PRINT(x)\ - std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; - -template -void test() -{ - // - // Note really a test just yet, but we can at least print out all the values: - // - std::cout << "numeric_limits values for type " << typeid(Number).name() << std::endl; - - PRINT(is_specialized); - PRINT(min()); - PRINT(max()); -#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST - PRINT(lowest()); -#endif - PRINT(digits); - PRINT(digits10); -#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST - PRINT(max_digits10); -#endif - PRINT(is_signed); - PRINT(is_integer); - PRINT(is_exact); - PRINT(radix); - PRINT(epsilon()); - PRINT(round_error()); - PRINT(min_exponent); - PRINT(min_exponent10); - PRINT(max_exponent); - PRINT(max_exponent10); - PRINT(has_infinity); - PRINT(has_quiet_NaN); - PRINT(has_signaling_NaN); - PRINT(has_denorm); - PRINT(has_denorm_loss); - PRINT(infinity()); - PRINT(quiet_NaN()); - PRINT(signaling_NaN()); - PRINT(denorm_min()); - PRINT(is_iec559); - PRINT(is_bounded); - PRINT(is_modulo); - PRINT(traps); - PRINT(tinyness_before); - PRINT(round_style); - - if(std::numeric_limits::is_specialized) - { - if(std::numeric_limits::has_quiet_NaN) - { - BOOST_TEST((boost::math::isnan)(std::numeric_limits::quiet_NaN())); - BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits::quiet_NaN())); - BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::quiet_NaN())); - BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::quiet_NaN())); - BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::quiet_NaN())); - } - if(std::numeric_limits::has_signaling_NaN) - { - BOOST_TEST((boost::math::isnan)(std::numeric_limits::signaling_NaN())); - BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits::signaling_NaN())); - BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::signaling_NaN())); - BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::signaling_NaN())); - BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::signaling_NaN())); - } - if(std::numeric_limits::has_infinity) - { - BOOST_TEST((boost::math::isinf)(std::numeric_limits::infinity())); - BOOST_TEST(FP_INFINITE == (boost::math::fpclassify)(std::numeric_limits::infinity())); - BOOST_TEST(!(boost::math::isfinite)(std::numeric_limits::infinity())); - BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::infinity())); - BOOST_TEST(!(boost::math::isnan)(std::numeric_limits::infinity())); - } - if(std::numeric_limits::has_denorm) - { - BOOST_TEST(FP_SUBNORMAL == (boost::math::fpclassify)(std::numeric_limits::denorm_min())); - BOOST_TEST((boost::math::isfinite)(std::numeric_limits::denorm_min())); - BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits::denorm_min())); - BOOST_TEST(!(boost::math::isinf)(std::numeric_limits::denorm_min())); - BOOST_TEST(!(boost::math::isnan)(std::numeric_limits::denorm_min())); - } - } - Number n = 0; - BOOST_TEST((boost::math::fpclassify)(n) == FP_ZERO); - BOOST_TEST((boost::math::isfinite)(n)); - BOOST_TEST(!(boost::math::isnormal)(n)); - BOOST_TEST(!(boost::math::isinf)(n)); - BOOST_TEST(!(boost::math::isnan)(n)); - n = 2; - BOOST_TEST((boost::math::fpclassify)(n) == FP_NORMAL); - BOOST_TEST((boost::math::isfinite)(n)); - BOOST_TEST((boost::math::isnormal)(n)); - BOOST_TEST(!(boost::math::isinf)(n)); - BOOST_TEST(!(boost::math::isnan)(n)); -} - - -int main() -{ -#ifdef TEST_BACKEND - test >(); -#endif -#ifdef TEST_MPF50 - test(); -#endif -#ifdef TEST_MPF - boost::math::mpf_real::default_precision(1000); - /* - boost::math::mpf_real r; - r.precision(50); - BOOST_TEST(r.precision() >= 50); - */ - BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); - test(); -#endif -#ifdef TEST_MPZ - test(); -#endif -#ifdef TEST_MPQ - test(); -#endif -#ifdef TEST_E_FLOAT - test(); -#endif -#ifdef TEST_MPFR - test(); -#endif -#ifdef TEST_MPFR_50 - test(); -#endif - return boost::report_errors(); -} - From 94d6513d38bc833fcb7009e6af1abd1fcbc9f36b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 26 Sep 2011 17:03:55 +0000 Subject: [PATCH 027/256] Giant file and directory rename: changed directory name from math to multiprecision and updated code to match. [SVN r74582] --- include/boost/math/big_number.hpp | 1570 ----------------- .../math/big_number/arithmetic_backend.hpp | 147 -- .../boost/math/big_number/big_number_base.hpp | 983 ----------- include/boost/math/big_number/default_ops.hpp | 903 ---------- include/boost/math/big_number/e_float.hpp | 80 - include/boost/math/big_number/gmp.hpp | 1532 ---------------- include/boost/math/big_number/mpfr.hpp | 952 ---------- .../math/concepts/big_number_architypes.hpp | 293 --- 8 files changed, 6460 deletions(-) delete mode 100644 include/boost/math/big_number.hpp delete mode 100644 include/boost/math/big_number/arithmetic_backend.hpp delete mode 100644 include/boost/math/big_number/big_number_base.hpp delete mode 100644 include/boost/math/big_number/default_ops.hpp delete mode 100644 include/boost/math/big_number/e_float.hpp delete mode 100644 include/boost/math/big_number/gmp.hpp delete mode 100644 include/boost/math/big_number/mpfr.hpp delete mode 100644 include/boost/math/concepts/big_number_architypes.hpp diff --git a/include/boost/math/big_number.hpp b/include/boost/math/big_number.hpp deleted file mode 100644 index 6b84e39b..00000000 --- a/include/boost/math/big_number.hpp +++ /dev/null @@ -1,1570 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_EXTENDED_REAL_HPP -#define BOOST_MATH_EXTENDED_REAL_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost{ namespace math{ - -template -class big_number -{ - typedef big_number self_type; -public: - big_number(){} - big_number(const big_number& e) : m_backend(e.m_backend){} - template - big_number(V v, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) - { - m_backend = canonical_value(v); - } - big_number(const big_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} - template - big_number(V v, unsigned digits10, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) - { - m_backend.precision(digits10); - m_backend = canonical_value(v); - } - - template - big_number(V v, typename enable_if, mpl::not_ > > >::type* dummy1 = 0) - : m_backend(v){} - - template - big_number& operator=(const detail::big_number_exp& e) - { - do_assign(e, tag()); - return *this; - } - - big_number& operator=(const big_number& e) - { - m_backend = e.m_backend; - return *this; - } - - template - typename enable_if, is_same, is_convertible >, big_number& >::type - operator=(const V& v) - { - m_backend = canonical_value(v); - return *this; - } - - template - big_number(const detail::big_number_exp& e) - { - do_assign(e, tag()); - } - -#ifndef BOOST_NO_RVALUE_REFERENCES - big_number(big_number&& r) : m_backend(r.m_backend){} - big_number& operator=(big_number&& r) - { - m_backend.swap(r.m_backend); - return *this; - } -#endif - - big_number& operator+=(const self_type& val) - { - do_add(detail::big_number_exp(val), detail::terminal()); - return *this; - } - - template - big_number& operator+=(const detail::big_number_exp& e) - { - // Create a copy if e contains this, but not if we're just doing a - // x *= x - if(contains_self(e) && !is_self(e)) - { - self_type temp(e); - do_add(detail::big_number_exp(temp), detail::terminal()); - } - else - { - do_add(e, tag()); - } - return *this; - } - - template - typename enable_if, big_number& >::type - operator+=(const V& v) - { - using big_num_default_ops::add; - add(m_backend, canonical_value(v)); - return *this; - } - - big_number& operator-=(const self_type& val) - { - do_subtract(detail::big_number_exp(val), detail::terminal()); - return *this; - } - - template - big_number& operator-=(const detail::big_number_exp& e) - { - // Create a copy if e contains this, but not if we're just doing a - if(contains_self(e)) - { - self_type temp(e); - do_subtract(temp, typename self_type::tag_type()); - } - else - { - do_subtract(e, typename Exp::tag_type()); - } - return *this; - } - - template - typename enable_if, big_number& >::type - operator-=(const V& v) - { - using big_num_default_ops::subtract; - subtract(m_backend, canonical_value(v)); - return *this; - } - - - big_number& operator *= (const self_type& e) - { - do_multiplies(detail::big_number_exp(e), detail::terminal()); - return *this; - } - - template - big_number& operator*=(const detail::big_number_exp& e) - { - // Create a temporary if the RHS references *this, but not - // if we're just doing an x += x; - if(contains_self(e) && !is_self(e)) - { - self_type temp(e); - do_multiplies(detail::big_number_exp(temp), detail::terminal()); - } - else - { - do_multiplies(e, typename Exp::tag_type()); - } - return *this; - } - - template - typename enable_if, big_number& >::type - operator*=(const V& v) - { - using big_num_default_ops::multiply; - multiply(m_backend, canonical_value(v)); - return *this; - } - - big_number& operator%=(const self_type& e) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - do_modulus(detail::big_number_exp(e), detail::terminal()); - return *this; - } - template - big_number& operator%=(const detail::big_number_exp& e) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - // Create a temporary if the RHS references *this: - if(contains_self(e)) - { - self_type temp(e); - do_modulus(temp, typename self_type::tag_type()); - } - else - { - do_modulus(e, typename Exp::tag_type()); - } - return *this; - } - template - typename enable_if, big_number& >::type - operator%=(const V& v) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; - modulus(m_backend, canonical_value(v)); - return *this; - } - - // - // These operators are *not* proto-ized. - // The issue is that the increment/decrement must happen - // even if the result of the operator *is never used*. - // Possibly we could modify our expression wrapper to - // execute the increment/decrement on destruction, but - // correct implemetation will be tricky, so defered for now... - // - big_number& operator++() - { - using big_num_default_ops::increment; - increment(m_backend); - return *this; - } - - big_number& operator--() - { - using big_num_default_ops::decrement; - decrement(m_backend); - return *this; - } - - big_number operator++(int) - { - using big_num_default_ops::increment; - self_type temp(*this); - increment(m_backend); - return temp; - } - - big_number operator--(int) - { - using big_num_default_ops::decrement; - self_type temp(*this); - decrement(m_backend); - return temp; - } - - template - typename enable_if, big_number&>::type operator <<= (V val) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left-shift operation is only valid for integer types"); - check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); - left_shift(m_backend, canonical_value(val)); - return *this; - } - - template - typename enable_if, big_number&>::type operator >>= (V val) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right-shift operation is only valid for integer types"); - check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); - right_shift(m_backend, canonical_value(val)); - return *this; - } - - big_number& operator /= (const self_type& e) - { - do_divide(detail::big_number_exp(e), detail::terminal()); - return *this; - } - - template - big_number& operator/=(const detail::big_number_exp& e) - { - // Create a temporary if the RHS references *this: - if(contains_self(e)) - { - self_type temp(e); - do_divide(detail::big_number_exp(temp), typename self_type::tag_type()); - } - else - { - do_divide(e, typename Exp::tag_type()); - } - return *this; - } - - template - typename enable_if, big_number& >::type - operator/=(const V& v) - { - using big_num_default_ops::divide; - divide(m_backend, canonical_value(v)); - return *this; - } - - big_number& operator&=(const self_type& e) - { - do_bitwise_and(detail::big_number_exp(e), detail::terminal()); - return *this; - } - - template - big_number& operator&=(const detail::big_number_exp& e) - { - // Create a temporary if the RHS references *this, but not - // if we're just doing an x &= x; - if(contains_self(e) && !is_self(e)) - { - self_type temp(e); - do_bitwise_and(temp, typename self_type::tag_type()); - } - else - { - do_bitwise_and(e, typename Exp::tag_type()); - } - return *this; - } - - template - typename enable_if, big_number& >::type - operator&=(const V& v) - { - using big_num_default_ops::bitwise_and; - bitwise_and(m_backend, canonical_value(v)); - return *this; - } - - big_number& operator|=(const self_type& e) - { - do_bitwise_or(detail::big_number_exp(e), detail::terminal()); - return *this; - } - - template - big_number& operator|=(const detail::big_number_exp& e) - { - // Create a temporary if the RHS references *this, but not - // if we're just doing an x |= x; - if(contains_self(e) && !is_self(e)) - { - self_type temp(e); - do_bitwise_or(temp, typename self_type::tag_type()); - } - else - { - do_bitwise_or(e, typename Exp::tag_type()); - } - return *this; - } - - template - typename enable_if, big_number& >::type - operator|=(const V& v) - { - using big_num_default_ops::bitwise_or; - bitwise_or(m_backend, canonical_value(v)); - return *this; - } - - big_number& operator^=(const self_type& e) - { - do_bitwise_xor(detail::big_number_exp(e), detail::terminal()); - return *this; - } - - template - big_number& operator^=(const detail::big_number_exp& e) - { - if(contains_self(e)) - { - self_type temp(e); - do_bitwise_xor(temp, typename self_type::tag_type()); - } - else - { - do_bitwise_xor(e, typename Exp::tag_type()); - } - return *this; - } - - template - typename enable_if, big_number& >::type - operator^=(const V& v) - { - using big_num_default_ops::bitwise_xor; - bitwise_xor(m_backend, canonical_value(v)); - return *this; - } - // - // Use in boolean context: - // - typedef bool (self_type::*unmentionable_type)()const; - - operator unmentionable_type()const - { - return is_zero() ? 0 : &self_type::is_zero; - } - - // - // swap: - // - void swap(self_type& other) - { - m_backend.swap(other.backend()); - } - // - // Zero and sign: - // - bool is_zero()const - { - using big_num_default_ops::is_zero; - return is_zero(m_backend); - } - int sign()const - { - using big_num_default_ops::get_sign; - return get_sign(m_backend); - } - // - // String conversion functions: - // - std::string str(unsigned digits = 0, bool scientific = true)const - { - return m_backend.str(digits, scientific); - } - template - T convert_to()const - { - using big_num_default_ops::convert_to; - T result; - convert_to(&result, m_backend); - return result; - } - // - // Default precision: - // - static unsigned default_precision() - { - return Backend::default_precision(); - } - static void default_precision(unsigned digits10) - { - Backend::default_precision(digits10); - } - unsigned precision()const - { - return m_backend.precision(); - } - void precision(unsigned digits10) - { - m_backend.precision(digits10); - } - // - // Comparison: - // - int compare(const big_number& o)const - { - return m_backend.compare(o.m_backend); - } - template - typename enable_if, int>::type compare(const V& o)const - { - using big_num_default_ops::get_sign; - if(o == 0) - return get_sign(m_backend); - return m_backend.compare(canonical_value(o)); - } - Backend& backend() - { - return m_backend; - } - const Backend& backend()const - { - return m_backend; - } -private: - template - void check_shift_range(V val, const mpl::true_&, const mpl::true_&) - { - if(val > (std::numeric_limits::max)()) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); - if(val < 0) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); - } - template - void check_shift_range(V val, const mpl::false_&, const mpl::true_&) - { - if(val < 0) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); - } - template - void check_shift_range(V val, const mpl::true_&, const mpl::false_&) - { - if(val > (std::numeric_limits::max)()) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); - } - template - void check_shift_range(V val, const mpl::false_&, const mpl::false_&){} - - template - void do_assign(const Exp& e, const detail::add_immediates&) - { - using big_num_default_ops::add; - add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } -/* - template - void do_assign(const Exp& e, const detail::add_and_negate_immediates&) - { - using big_num_default_ops::add; - add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } -*/ - template - void do_assign(const Exp& e, const detail::subtract_immediates&) - { - using big_num_default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } - /* - template - void do_assign(const Exp& e, const detail::subtract_and_negate_immediates&) - { - using big_num_default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } - */ - template - void do_assign(const Exp& e, const detail::multiply_immediates&) - { - using big_num_default_ops::multiply; - multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } - - template - void do_assign(const Exp& e, const detail::divide_immediates&) - { - using big_num_default_ops::divide; - divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } - -#if 0 - template - void do_assign(const Exp& e, const detail::multiply_and_negate_immediates&) - { - using big_num_default_ops::multiply; - multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } - - template - void do_assign(const Exp& e, const detail::divide_and_negate_immediates&) - { - using big_num_default_ops::divide; - divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } - - template - void do_assign(const Exp& e, const detail::unary_plus&) - { - typedef typename Exp::left_type left_type; - do_assign(e.left(), typename left_type::tag_type()); - } - -#endif - template - void do_assign(const Exp& e, const detail::negate&) - { - typedef typename Exp::left_type left_type; - do_assign(e.left(), typename left_type::tag_type()); - m_backend.negate(); - } - template - void do_assign(const Exp& e, const detail::plus&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - static int const left_depth = left_type::depth; - static int const right_depth = right_type::depth; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just add the right: - do_add(e.right(), typename right_type::tag_type()); - } - else if(br && is_self(e.right())) - { - // Ignore the right node, it's *this, just add the left: - do_add(e.left(), typename left_type::tag_type()); - } - else if(bl || br) - { - self_type temp(e); - temp.m_backend.swap(this->m_backend); - } - else if(left_depth >= right_depth) - { - do_assign(e.left(), typename left_type::tag_type()); - do_add(e.right(), typename right_type::tag_type()); - } - else - { - do_assign(e.right(), typename right_type::tag_type()); - do_add(e.left(), typename left_type::tag_type()); - } - } - template - void do_assign(const Exp& e, const detail::minus&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - static int const left_depth = left_type::depth; - static int const right_depth = right_type::depth; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just subtract the right: - do_subtract(e.right(), typename right_type::tag_type()); - } - else if(br && is_self(e.right())) - { - // Ignore the right node, it's *this, just subtract the left and negate the result: - do_subtract(e.left(), typename left_type::tag_type()); - m_backend.negate(); - } - else if(bl || br) - { - self_type temp(e); - temp.m_backend.swap(this->m_backend); - } - else if(left_depth >= right_depth) - { - do_assign(e.left(), typename left_type::tag_type()); - do_subtract(e.right(), typename right_type::tag_type()); - } - else - { - do_assign(e.right(), typename right_type::tag_type()); - do_subtract(e.left(), typename left_type::tag_type()); - m_backend.negate(); - } - } - template - void do_assign(const Exp& e, const detail::multiplies&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - static int const left_depth = left_type::depth; - static int const right_depth = right_type::depth; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just add the right: - do_multiplies(e.right(), typename right_type::tag_type()); - } - else if(br && is_self(e.right())) - { - // Ignore the right node, it's *this, just add the left: - do_multiplies(e.left(), typename left_type::tag_type()); - } - else if(bl || br) - { - self_type temp(e); - temp.m_backend.swap(this->m_backend); - } - else if(left_depth >= right_depth) - { - do_assign(e.left(), typename left_type::tag_type()); - do_multiplies(e.right(), typename right_type::tag_type()); - } - else - { - do_assign(e.right(), typename right_type::tag_type()); - do_multiplies(e.left(), typename left_type::tag_type()); - } - } - template - void do_assign(const Exp& e, const detail::divides&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just add the right: - do_divide(e.right(), typename right_type::tag_type()); - } - else if(bl || br) - { - self_type temp(e); - temp.m_backend.swap(this->m_backend); - } - else - { - do_assign(e.left(), typename left_type::tag_type()); - do_divide(e.right(), typename right_type::tag_type()); - } - } - template - void do_assign(const Exp& e, const detail::modulus&) - { - // - // This operation is only valid for integer backends: - // - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just add the right: - do_modulus(e.right(), typename right_type::tag_type()); - } - else if(bl || br) - { - self_type temp(e); - temp.m_backend.swap(this->m_backend); - } - else - { - do_assign(e.left(), typename left_type::tag_type()); - do_modulus(e.right(), typename right_type::tag_type()); - } - } - template - void do_assign(const Exp& e, const detail::modulus_immediates&) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; - modulus(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } - - template - void do_assign(const Exp& e, const detail::bitwise_and&) - { - // - // This operation is only valid for integer backends: - // - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - static int const left_depth = left_type::depth; - static int const right_depth = right_type::depth; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just add the right: - do_bitwise_and(e.right(), typename right_type::tag_type()); - } - else if(br && is_self(e.right())) - { - do_bitwise_and(e.left(), typename left_type::tag_type()); - } - else if(left_depth >= right_depth) - { - do_assign(e.left(), typename left_type::tag_type()); - do_bitwise_and(e.right(), typename right_type::tag_type()); - } - else - { - do_assign(e.right(), typename right_type::tag_type()); - do_bitwise_and(e.left(), typename left_type::tag_type()); - } - } - template - void do_assign(const Exp& e, const detail::bitwise_and_immediates&) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using big_num_default_ops::bitwise_and; - bitwise_and(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } - - template - void do_assign(const Exp& e, const detail::bitwise_or&) - { - // - // This operation is only valid for integer backends: - // - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - static int const left_depth = left_type::depth; - static int const right_depth = right_type::depth; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just add the right: - do_bitwise_or(e.right(), typename right_type::tag_type()); - } - else if(br && is_self(e.right())) - { - do_bitwise_or(e.left(), typename left_type::tag_type()); - } - else if(left_depth >= right_depth) - { - do_assign(e.left(), typename left_type::tag_type()); - do_bitwise_or(e.right(), typename right_type::tag_type()); - } - else - { - do_assign(e.right(), typename right_type::tag_type()); - do_bitwise_or(e.left(), typename left_type::tag_type()); - } - } - template - void do_assign(const Exp& e, const detail::bitwise_or_immediates&) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using big_num_default_ops::bitwise_or; - bitwise_or(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } - - template - void do_assign(const Exp& e, const detail::bitwise_xor&) - { - // - // This operation is only valid for integer backends: - // - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - - static int const left_depth = left_type::depth; - static int const right_depth = right_type::depth; - - bool bl = contains_self(e.left()); - bool br = contains_self(e.right()); - - if(bl && is_self(e.left())) - { - // Ignore the left node, it's *this, just add the right: - do_bitwise_xor(e.right(), typename right_type::tag_type()); - } - else if(br && is_self(e.right())) - { - do_bitwise_xor(e.left(), typename left_type::tag_type()); - } - else if(left_depth >= right_depth) - { - do_assign(e.left(), typename left_type::tag_type()); - do_bitwise_xor(e.right(), typename right_type::tag_type()); - } - else - { - do_assign(e.right(), typename right_type::tag_type()); - do_bitwise_xor(e.left(), typename left_type::tag_type()); - } - } - template - void do_assign(const Exp& e, const detail::bitwise_xor_immediates&) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using big_num_default_ops::bitwise_xor; - bitwise_xor(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - } - template - void do_assign(const Exp& e, const detail::terminal&) - { - if(!is_self(e)) - { - m_backend = canonical_value(e.value()); - } - } - template - void do_assign(const Exp& e, const detail::function&) - { - typedef typename Exp::arity tag_type; - do_assign_function(e, tag_type()); - } - template - void do_assign(const Exp& e, const detail::shift_left&) - { - // We can only shift by an integer value, not an arbitrary expression: - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - typedef typename right_type::arity right_arity; - BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); - typedef typename right_type::result_type right_value_type; - BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); - typedef typename left_type::tag_type tag_type; - do_assign_left_shift(e.left(), canonical_value(e.right().value()), tag_type()); - } - - template - void do_assign(const Exp& e, const detail::shift_right&) - { - // We can only shift by an integer value, not an arbitrary expression: - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - typedef typename right_type::arity right_arity; - BOOST_STATIC_ASSERT_MSG(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand."); - typedef typename right_type::result_type right_value_type; - BOOST_STATIC_ASSERT_MSG(is_integral::value, "The left shift operator requires an integer value for the shift operand."); - typedef typename left_type::tag_type tag_type; - do_assign_right_shift(e.left(), canonical_value(e.right().value()), tag_type()); - } - - template - void do_assign(const Exp& e, const detail::bitwise_complement&) - { - using big_num_default_ops::complement; - self_type temp(e.left()); - complement(m_backend, temp.backend()); - } - - template - void do_assign(const Exp& e, const detail::complement_immediates&) - { - using big_num_default_ops::complement; - complement(m_backend, canonical_value(e.left().value())); - } - - template - void do_assign_right_shift(const Exp& e, const Val& val, const detail::terminal&) - { - using big_num_default_ops::right_shift; - right_shift(m_backend, canonical_value(e.value()), val); - } - - template - void do_assign_left_shift(const Exp& e, const Val& val, const detail::terminal&) - { - using big_num_default_ops::left_shift; - left_shift(m_backend, canonical_value(e.value()), val); - } - - template - void do_assign_right_shift(const Exp& e, const Val& val, const Tag&) - { - using big_num_default_ops::right_shift; - self_type temp(e); - right_shift(m_backend, temp.backend(), val); - } - - template - void do_assign_left_shift(const Exp& e, const Val& val, const Tag&) - { - using big_num_default_ops::left_shift; - self_type temp(e); - left_shift(m_backend, temp.backend(), val); - } - - template - void do_assign_function(const Exp& e, const mpl::int_<1>&) - { - e.left().value()(&m_backend); - } - template - void do_assign_function(const Exp& e, const mpl::int_<2>&) - { - typedef typename Exp::right_type right_type; - typedef typename right_type::tag_type tag_type; - do_assign_function_1(e.left().value(), e.right(), tag_type()); - } - template - void do_assign_function_1(const F& f, const Exp& val, const detail::terminal&) - { - f(m_backend, canonical_value(val.value())); - } - template - void do_assign_function_1(const F& f, const Exp& val, const Tag&) - { - big_number t(val); - f(m_backend, t.backend()); - } - template - void do_assign_function(const Exp& e, const mpl::int_<3>&) - { - typedef typename Exp::middle_type middle_type; - typedef typename middle_type::tag_type tag_type; - typedef typename Exp::right_type end_type; - typedef typename end_type::tag_type end_tag; - do_assign_function_2(e.left().value(), e.middle(), e.right(), tag_type(), end_tag()); - } - template - void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const detail::terminal&) - { - f(m_backend, canonical_value(val1.value()), canonical_value(val2.value())); - } - template - void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const detail::terminal&) - { - self_type temp1(val1); - f(m_backend, temp1.backend(), canonical_value(val2.value())); - } - template - void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const Tag2&) - { - self_type temp2(val2); - f(m_backend, canonical_value(val1.value()), temp2.backend()); - } - template - void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&) - { - self_type temp1(val1); - self_type temp2(val2); - f(m_backend, temp1.backend(), temp2.backend()); - } - - template - void do_add(const Exp& e, const detail::terminal&) - { - using big_num_default_ops::add; - add(m_backend, canonical_value(e.value())); - } - - template - void do_add(const Exp& e, const detail::negate&) - { - typedef typename Exp::left_type left_type; - do_subtract(e.left(), typename left_type::tag_type()); - } - - template - void do_add(const Exp& e, const detail::plus&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_add(e.left(), typename left_type::tag_type()); - do_add(e.right(), typename right_type::tag_type()); - } - - template - void do_add(const Exp& e, const detail::minus&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_add(e.left(), typename left_type::tag_type()); - do_subtract(e.right(), typename right_type::tag_type()); - } - - template - void do_add(const Exp& e, const unknown&) - { - self_type temp(e); - do_add(detail::big_number_exp(temp), detail::terminal()); - } - - template - void do_add(const Exp& e, const detail::add_immediates&) - { - using big_num_default_ops::add; - add(m_backend, canonical_value(e.left().value())); - add(m_backend, canonical_value(e.right().value())); - } - template - void do_add(const Exp& e, const detail::subtract_immediates&) - { - using big_num_default_ops::add; - using big_num_default_ops::subtract; - add(m_backend, canonical_value(e.left().value())); - subtract(m_backend, canonical_value(e.right().value())); - } - template - void do_subtract(const Exp& e, const detail::terminal&) - { - using big_num_default_ops::subtract; - subtract(m_backend, canonical_value(e.value())); - } - - template - void do_subtract(const Exp& e, const detail::negate&) - { - typedef typename Exp::left_type left_type; - do_add(e.left(), typename left_type::tag_type()); - } - - template - void do_subtract(const Exp& e, const detail::plus&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_subtract(e.left(), typename left_type::tag_type()); - do_subtract(e.right(), typename right_type::tag_type()); - } - - template - void do_subtract(const Exp& e, const detail::minus&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_subtract(e.left(), typename left_type::tag_type()); - do_add(e.right(), typename right_type::tag_type()); - } - template - void do_subtract(const Exp& e, const detail::add_immediates&) - { - using big_num_default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value())); - subtract(m_backend, canonical_value(e.right().value())); - } - template - void do_subtract(const Exp& e, const detail::subtract_immediates&) - { - using big_num_default_ops::add; - using big_num_default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value())); - add(m_backend, canonical_value(e.right().value())); - } - template - void do_subtract(const Exp& e, const unknown&) - { - self_type temp(e); - do_subtract(detail::big_number_exp(temp), detail::terminal()); - } - - template - void do_multiplies(const Exp& e, const detail::terminal&) - { - using big_num_default_ops::multiply; - multiply(m_backend, canonical_value(e.value())); - } - - template - void do_multiplies(const Exp& e, const detail::negate&) - { - typedef typename Exp::left_type left_type; - do_multiplies(e.left(), typename left_type::tag_type()); - m_backend.negate(); - } - - template - void do_multiplies(const Exp& e, const detail::multiplies&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_multiplies(e.left(), typename left_type::tag_type()); - do_multiplies(e.right(), typename right_type::tag_type()); - } - - template - void do_multiplies(const Exp& e, const detail::divides&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_multiplies(e.left(), typename left_type::tag_type()); - do_divide(e.right(), typename right_type::tag_type()); - } - - template - void do_multiplies(const Exp& e, const detail::multiply_immediates&) - { - using big_num_default_ops::multiply; - multiply(m_backend, canonical_value(e.left().value())); - multiply(m_backend, canonical_value(e.right().value())); - } - template - void do_multiplies(const Exp& e, const detail::divide_immediates&) - { - using big_num_default_ops::multiply; - using big_num_default_ops::divide; - multiply(m_backend, canonical_value(e.left().value())); - divide(m_backend, canonical_value(e.right().value())); - } - template - void do_multiplies(const Exp& e, const unknown&) - { - using big_num_default_ops::multiply; - self_type temp(e); - multiply(m_backend, temp.m_backend); - } - - template - void do_divide(const Exp& e, const detail::terminal&) - { - using big_num_default_ops::divide; - divide(m_backend, canonical_value(e.value())); - } - - template - void do_divide(const Exp& e, const detail::negate&) - { - typedef typename Exp::left_type left_type; - do_divide(e.left(), typename left_type::tag_type()); - m_backend.negate(); - } - - template - void do_divide(const Exp& e, const detail::multiplies&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_divide(e.left(), typename left_type::tag_type()); - do_divide(e.right(), typename right_type::tag_type()); - } - - template - void do_divide(const Exp& e, const detail::divides&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_divide(e.left(), typename left_type::tag_type()); - do_multiplies(e.right(), typename right_type::tag_type()); - } - - template - void do_divides(const Exp& e, const detail::multiply_immediates&) - { - using big_num_default_ops::divide; - divide(m_backend, canonical_value(e.left().value())); - divide(m_backend, canonical_value(e.right().value())); - } - template - void do_divides(const Exp& e, const detail::divide_immediates&) - { - using big_num_default_ops::multiply; - using big_num_default_ops::divide; - divide(m_backend, canonical_value(e.left().value())); - mutiply(m_backend, canonical_value(e.right().value())); - } - - template - void do_divide(const Exp& e, const unknown&) - { - using big_num_default_ops::multiply; - self_type temp(e); - divide(m_backend, temp.m_backend); - } - - template - void do_modulus(const Exp& e, const detail::terminal&) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; - modulus(m_backend, canonical_value(e.value())); - } - - template - void do_modulus(const Exp& e, const Unknown&) - { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; - self_type temp(e); - modulus(m_backend, canonical_value(temp)); - } - - template - void do_bitwise_and(const Exp& e, const detail::terminal&) - { - using big_num_default_ops::bitwise_and; - bitwise_and(m_backend, canonical_value(e.value())); - } - template - void do_bitwise_and(const Exp& e, const detail::bitwise_and&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_bitwise_and(e.left(), typename left_type::tag_type()); - do_bitwise_and(e.right(), typename right_type::tag_type()); - } - template - void do_bitwise_and(const Exp& e, const unknown&) - { - using big_num_default_ops::bitwise_and; - self_type temp(e); - bitwise_and(m_backend, temp.m_backend); - } - - template - void do_bitwise_or(const Exp& e, const detail::terminal&) - { - using big_num_default_ops::bitwise_or; - bitwise_or(m_backend, canonical_value(e.value())); - } - template - void do_bitwise_or(const Exp& e, const detail::bitwise_or&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_bitwise_or(e.left(), typename left_type::tag_type()); - do_bitwise_or(e.right(), typename right_type::tag_type()); - } - template - void do_bitwise_or(const Exp& e, const unknown&) - { - using big_num_default_ops::bitwise_or; - self_type temp(e); - bitwise_or(m_backend, temp.m_backend); - } - - template - void do_bitwise_xor(const Exp& e, const detail::terminal&) - { - using big_num_default_ops::bitwise_xor; - bitwise_xor(m_backend, canonical_value(e.value())); - } - template - void do_bitwise_xor(const Exp& e, const detail::bitwise_xor&) - { - typedef typename Exp::left_type left_type; - typedef typename Exp::right_type right_type; - do_bitwise_xor(e.left(), typename left_type::tag_type()); - do_bitwise_xor(e.right(), typename right_type::tag_type()); - } - template - void do_bitwise_xor(const Exp& e, const unknown&) - { - using big_num_default_ops::bitwise_xor; - self_type temp(e); - bitwise_xor(m_backend, temp.m_backend); - } - - // Tests if the expression contains a reference to *this: - template - bool contains_self(const Exp& e)const - { - return contains_self(e, typename Exp::arity()); - } - template - bool contains_self(const Exp& e, mpl::int_<0> const&)const - { - return is_really_self(e.value()); - } - template - bool contains_self(const Exp& e, mpl::int_<1> const&)const - { - typedef typename Exp::left_type child_type; - return contains_self(e.left(), typename child_type::arity()); - } - template - bool contains_self(const Exp& e, mpl::int_<2> const&)const - { - typedef typename Exp::left_type child0_type; - typedef typename Exp::right_type child1_type; - return contains_self(e.left(), typename child0_type::arity()) - || contains_self(e.right(), typename child1_type::arity()); - } - template - bool contains_self(const Exp& e, mpl::int_<3> const&)const - { - typedef typename Exp::left_type child0_type; - typedef typename Exp::middle_type child1_type; - typedef typename Exp::right_type child2_type; - return contains_self(e.left(), typename child0_type::arity()) - || contains_self(e.middle(), typename child1_type::arity()) - || contains_self(e.right(), typename child2_type::arity()); - } - - // Test if the expression is a reference to *this: - template - bool is_self(const Exp& e)const - { - return is_self(e, typename Exp::arity()); - } - template - bool is_self(const Exp& e, mpl::int_<0> const&)const - { - return is_really_self(e.value()); - } - template - bool is_self(const Exp& e, mpl::int_ const&)const - { - return false; - } - - template - bool is_really_self(const Val&)const { return false; } - bool is_really_self(const self_type& v)const { return &v == this; } - - static const Backend& canonical_value(const self_type& v){ return v.m_backend; } - //static const Backend& canonical_value(const self_type* v){ return v->m_backend; } - //static const Backend& canonical_value(self_type* v){ return v->m_backend; } - //static const Backend& canonical_value(self_type& v){ return v.m_backend; } - template - static typename detail::canonical::type canonical_value(const V& v){ return v; } - static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } - Backend m_backend; -}; - -namespace detail -{ - -template -inline int big_number_compare(const big_number& a, const big_number& b) -{ - return a.compare(b); -} - -template -inline int big_number_compare(const big_number& a, const big_number_exp& b) -{ - return a.compare(big_number(b)); -} - -template -inline int big_number_compare(const big_number_exp& a, const big_number& b) -{ - return -b.compare(big_number(a)); -} - -template -inline int big_number_compare(const big_number& a, const Val b) -{ - return a.compare(b); -} - -template -inline int big_number_compare(const Val a, const big_number& b) -{ - return -b.compare(a); -} - -template -inline int big_number_compare(const big_number_exp& a, const big_number_exp& b) -{ - typedef typename big_number_exp::result_type real1; - typedef typename big_number_exp::result_type real2; - return real1(a).compare(real2(b)); -} - -template -inline typename enable_if, int>::type big_number_compare(const big_number_exp& a, const Val b) -{ - typedef typename big_number_exp::result_type real; - real t(a); - return t.compare(b); -} - -template -inline typename enable_if, int>::type big_number_compare(const Val a, const big_number_exp& b) -{ - typedef typename big_number_exp::result_type real; - return -real(b).compare(a); -} - -template -struct is_valid_comparison_imp -{ - typedef typename mpl::or_< - is_big_number, - is_big_number_exp - >::type is1; - typedef typename mpl::or_< - is_big_number, - is_big_number_exp - >::type is2; - typedef typename mpl::or_< - mpl::and_< - is1, - mpl::or_< - is2, - is_arithmetic - > - >, - mpl::and_< - is2, - mpl::or_< - is1, - is_arithmetic - > - > - >::type type; -}; - -template -struct is_valid_comparison : public boost::math::detail::is_valid_comparison_imp::type {}; - -} - - -template -inline typename boost::enable_if, bool>::type - operator == (const Exp1& a, const Exp2& b) -{ - return 0 == detail::big_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator != (const Exp1& a, const Exp2& b) -{ - return 0 != detail::big_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator <= (const Exp1& a, const Exp2& b) -{ - return 0 >= detail::big_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator < (const Exp1& a, const Exp2& b) -{ - return 0 > detail::big_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator >= (const Exp1& a, const Exp2& b) -{ - return 0 <= detail::big_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator > (const Exp1& a, const Exp2& b) -{ - return 0 < detail::big_number_compare(a, b); -} - -template -inline std::ostream& operator << (std::ostream& os, const big_number& r) -{ - return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); -} - -namespace detail{ - -template -inline std::ostream& operator << (std::ostream& os, const big_number_exp& r) -{ - typedef typename big_number_exp::result_type value_type; - value_type temp(r); - return os << temp; -} - -} // namespace detail - -template -inline std::istream& operator >> (std::istream& is, big_number& r) -{ - std::string s; - is >> s; - r = s; - return is; -} - -}} // namespaces - -#endif diff --git a/include/boost/math/big_number/arithmetic_backend.hpp b/include/boost/math/big_number/arithmetic_backend.hpp deleted file mode 100644 index ba8d7165..00000000 --- a/include/boost/math/big_number/arithmetic_backend.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ - -#ifndef BOOST_MATH_ARITH_BACKEND_HPP -#define BOOST_MATH_ARITH_BACKEND_HPP - -#include -#include -#include -#include -#include - -namespace boost{ -namespace math{ - -template -struct arithmetic_backend -{ - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; - - arithmetic_backend(){} - arithmetic_backend(const arithmetic_backend& o) - { - m_value = o.m_value; - } - arithmetic_backend(const Arithmetic& o) : m_value(o) {} -#ifndef BOOST_NO_RVALUE_REFERENCES - arithmetic_backend(arithmetic_backend&& o) : m_value(o.m_value) {} - arithmetic_backend(Arithmetic&& o) : m_value(o) {} -#endif - arithmetic_backend& operator = (const arithmetic_backend& o) - { - m_value = o.m_value; - return *this; - } - arithmetic_backend& operator = (boost::uintmax_t i) - { - m_value = i; - return *this; - } - arithmetic_backend& operator = (boost::intmax_t i) - { - m_value = i; - return *this; - } - arithmetic_backend& operator = (long double d) - { - m_value = d; - return *this; - } - arithmetic_backend& operator = (const char* s) - { - m_value = boost::lexical_cast(s); - return *this; - } - void swap(arithmetic_backend& o) - { - std::swap(m_value, o.m_value); - } - std::string str(unsigned digits, bool scientific)const - { - return boost::lexical_cast(m_value); - } - void negate() - { - m_value = -m_value; - } - int compare(const arithmetic_backend& o)const - { - return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); - } - int compare(boost::intmax_t i)const - { - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(boost::uintmax_t i)const - { - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(long double d)const - { - return m_value > d ? 1 : (m_value < d ? -1 : 0); - } - Arithmetic& data() { return m_value; } - const Arithmetic& data()const { return m_value; } -private: - Arithmetic m_value; -}; - -template -inline void add(arithmetic_backend& result, const arithmetic_backend& o) -{ - result.data() += o.data(); -} -template -inline void subtract(arithmetic_backend& result, const arithmetic_backend& o) -{ - result.data() -= o.data(); -} -template -inline void multiply(arithmetic_backend& result, const arithmetic_backend& o) -{ - result.data() *= o.data(); -} -template -inline void divide(arithmetic_backend& result, const arithmetic_backend& o) -{ - result.data() /= o.data(); -} - -}} // namespaces - - -namespace std{ - -#ifdef BOOST_NO_NOEXCEPT -# define noexcept -#endif - -template -class numeric_limits > > : public std::numeric_limits -{ - typedef std::numeric_limits base_type; - typedef boost::math::big_number > number_type; -public: - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } -}; - -#ifdef BOOST_NO_NOEXCEPT -# undef noexcept -#endif - -} - -#endif diff --git a/include/boost/math/big_number/big_number_base.hpp b/include/boost/math/big_number/big_number_base.hpp deleted file mode 100644 index 8eef7048..00000000 --- a/include/boost/math/big_number/big_number_base.hpp +++ /dev/null @@ -1,983 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_BIG_NUM_BASE_HPP -#define BOOST_MATH_BIG_NUM_BASE_HPP - -#include -#include -#include - -namespace boost{ namespace math{ - -template -class big_number; - -namespace detail{ - -// Forward-declare an expression wrapper -template -struct big_number_exp; - -template -struct has_enough_bits -{ - template - struct type : public mpl::bool_::digits >= b>{}; -}; - -template -struct canonical_imp -{ - typedef Val type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::signed_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::unsigned_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::real_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef const char* type; -}; - -template -struct canonical -{ - typedef typename mpl::if_< - is_signed, - mpl::int_<0>, - typename mpl::if_< - is_unsigned, - mpl::int_<1>, - typename mpl::if_< - is_floating_point, - mpl::int_<2>, - typename mpl::if_< - mpl::or_< - is_convertible, - is_same - >, - mpl::int_<3>, - mpl::int_<4> - >::type - >::type - >::type - >::type tag_type; - - typedef typename canonical_imp::type type; -}; - -struct terminal{}; -struct negate{}; -struct plus{}; -struct minus{}; -struct multiplies{}; -struct divides{}; -struct modulus{}; -struct shift_left{}; -struct shift_right{}; -struct bitwise_and{}; -struct bitwise_or{}; -struct bitwise_xor{}; -struct bitwise_complement{}; -struct add_immediates{}; -struct subtract_immediates{}; -struct multiply_immediates{}; -struct divide_immediates{}; -struct modulus_immediates{}; -struct bitwise_and_immediates{}; -struct bitwise_or_immediates{}; -struct bitwise_xor_immediates{}; -struct complement_immediates{}; -struct function{}; - -template -struct backend_type; - -template -struct backend_type > -{ - typedef T type; -}; - -template -struct backend_type > -{ - typedef typename backend_type::result_type>::type type; -}; - - -template -struct is_big_number : public mpl::false_{}; -template -struct is_big_number > : public mpl::true_{}; -template -struct is_big_number_exp : public mpl::false_{}; -template -struct is_big_number_exp > : public mpl::true_{}; - -template -struct combine_expression; - -template -struct combine_expression, T2> -{ - typedef big_number type; -}; - -template -struct combine_expression > -{ - typedef big_number type; -}; - -template -struct combine_expression, big_number > -{ - typedef big_number type; -}; - -template -struct arg_type -{ - typedef big_number_exp type; -}; - -template -struct arg_type > -{ - typedef big_number_exp type; -}; - -template -struct unmentionable -{ - static void proc(){} -}; - -typedef void (*unmentionable_type)(); - -template -struct big_number_exp_storage -{ - typedef const T& type; -}; - -template -struct big_number_exp_storage -{ - typedef T* type; -}; - -template -struct big_number_exp_storage -{ - typedef const T* type; -}; - -template -struct big_number_exp_storage > -{ - typedef big_number_exp type; -}; - -template -struct big_number_exp -{ - typedef mpl::int_<1> arity; - typedef typename arg_type::type left_type; - typedef typename left_type::result_type result_type; - typedef tag tag_type; - - big_number_exp(const Arg1& a) : arg(a) {} - - left_type left()const { return arg; } - - const Arg1& left_ref()const{ return arg; } - - static const unsigned depth = left_type::depth + 1; - - operator unmentionable_type()const - { - result_type r(*this); - return r ? &unmentionable::proc : 0; - } - -private: - typename big_number_exp_storage::type arg; -}; - -template -struct big_number_exp -{ - typedef mpl::int_<0> arity; - typedef Arg1 result_type; - typedef terminal tag_type; - - big_number_exp(const Arg1& a) : arg(a) {} - - const Arg1& value()const { return arg; } - - static const unsigned depth = 0; - - operator unmentionable_type()const - { - return arg ? &unmentionable::proc : 0; - } - -private: - typename big_number_exp_storage::type arg; -}; - -template -struct big_number_exp -{ - typedef mpl::int_<2> arity; - typedef typename arg_type::type left_type; - typedef typename arg_type::type right_type; - typedef typename left_type::result_type left_result_type; - typedef typename right_type::result_type right_result_type; - typedef typename combine_expression::type result_type; - typedef tag tag_type; - - big_number_exp(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {} - - left_type left()const { return arg1; } - right_type right()const { return arg2; } - const Arg1& left_ref()const{ return arg1; } - const Arg2& right_ref()const{ return arg2; } - - operator unmentionable_type()const - { - result_type r(*this); - return r ? &unmentionable::proc : 0; - } - - static const unsigned left_depth = left_type::depth + 1; - static const unsigned right_depth = right_type::depth + 1; - static const unsigned depth = left_depth > right_depth ? left_depth : right_depth; -private: - typename big_number_exp_storage::type arg1; - typename big_number_exp_storage::type arg2; -}; - -template -struct big_number_exp -{ - typedef mpl::int_<3> arity; - typedef typename arg_type::type left_type; - typedef typename arg_type::type middle_type; - typedef typename arg_type::type right_type; - typedef typename left_type::result_type left_result_type; - typedef typename middle_type::result_type middle_result_type; - typedef typename right_type::result_type right_result_type; - typedef typename combine_expression< - left_result_type, - typename combine_expression::type - >::type result_type; - typedef tag tag_type; - - big_number_exp(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {} - - left_type left()const { return arg1; } - middle_type middle()const { return arg2; } - right_type right()const { return arg3; } - const Arg1& left_ref()const{ return arg1; } - const Arg2& middle_ref()const{ return arg2; } - const Arg3& right_ref()const{ return arg3; } - - operator unmentionable_type()const - { - result_type r(*this); - return r ? &unmentionable::proc : 0; - } - - static const unsigned left_depth = left_type::depth + 1; - static const unsigned middle_depth = middle_type::depth + 1; - static const unsigned right_depth = right_type::depth + 1; - static const unsigned depth = left_depth > right_depth ? (left_depth > middle_depth ? left_depth : middle_depth) : (right_depth > middle_depth ? right_depth : middle_depth); -private: - typename big_number_exp_storage::type arg1; - typename big_number_exp_storage::type arg2; - typename big_number_exp_storage::type arg3; -}; - -} // namespace detail - -// -// Non-member operators for big_number: -// -// Unary operators first: -// -template -inline const big_number& operator + (const big_number& v) { return v; } -template -inline const detail::big_number_exp& operator + (const detail::big_number_exp& v) { return v; } -template -inline detail::big_number_exp > operator - (const big_number& v) { return v; } -template -inline detail::big_number_exp > operator - (const detail::big_number_exp& v) { return v; } -template -inline detail::big_number_exp > operator ~ (const big_number& v) { return v; } -template -inline detail::big_number_exp > operator ~ (const detail::big_number_exp& v) { return v; } -// -// Then addition: -// -template -inline detail::big_number_exp, big_number > - operator + (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator + (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator + (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator + (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator + (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator + (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator + (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator + (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::big_number_exp, typename detail::big_number_exp::left_type > - operator + (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, typename detail::big_number_exp::left_type >(a, b.left_ref()); -} -template -inline detail::big_number_exp, typename detail::big_number_exp::left_type > - operator + (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, typename detail::big_number_exp::left_type >(b, a.left_ref()); -} -template -inline detail::big_number_exp, big_number > - operator + (const big_number& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp, big_number >(a, b.left_ref()); -} -template -inline detail::big_number_exp, big_number > - operator + (const detail::big_number_exp >& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(b, a.left_ref()); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator + (const detail::big_number_exp >& a, const V& b) -{ - return detail::big_number_exp >(b, a.left_ref()); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator + (const V& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp, big_number >(a, b.left_ref()); -} -// -// Subtraction: -// -template -inline detail::big_number_exp, big_number > - operator - (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator - (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator - (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator - (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator - (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator - (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator - (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator - (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::big_number_exp, typename detail::big_number_exp::left_type > - operator - (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, typename detail::big_number_exp::left_type >(a, b.left_ref()); -} -template -inline detail::big_number_exp, typename detail::big_number_exp::left_type > > - operator - (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, typename detail::big_number_exp::left_type >(b, a.left_ref()); -} -template -inline detail::big_number_exp, big_number > - operator - (const big_number& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp, big_number >(a, b.left_ref()); -} -template -inline detail::big_number_exp, big_number > > - operator - (const detail::big_number_exp >& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(b, a.left_ref()); -} -template -inline typename enable_if, detail::big_number_exp, V > > >::type - operator - (const detail::big_number_exp >& a, const V& b) -{ - return detail::big_number_exp >(b, a.left_ref()); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator - (const V& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp >(a, b.left_ref()); -} -// -// Multiplication: -// -template -inline detail::big_number_exp, big_number > - operator * (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator * (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator * (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator * (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator * (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator * (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator * (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator * (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::big_number_exp, typename detail::big_number_exp::left_type > > - operator * (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, typename detail::big_number_exp::left_type > (a, b.left_ref()); -} -template -inline detail::big_number_exp, typename detail::big_number_exp::left_type > > - operator * (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, typename detail::big_number_exp::left_type >(b, a.left_ref()); -} -template -inline detail::big_number_exp, big_number > > - operator * (const big_number& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp, big_number >(a, b.left_ref()); -} -template -inline detail::big_number_exp, big_number > > - operator * (const detail::big_number_exp >& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(b, a.left_ref()); -} -template -inline typename enable_if, detail::big_number_exp, V > > >::type - operator * (const detail::big_number_exp >& a, const V& b) -{ - return detail::big_number_exp, V >(a.left_ref(), b); -} -template -inline typename enable_if, detail::big_number_exp, V > > >::type - operator * (const V& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp, V >(b.left_ref(), a); -} -// -// Division: -// -template -inline detail::big_number_exp, big_number > - operator / (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator / (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator / (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator / (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator / (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator / (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator / (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator / (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::big_number_exp, typename detail::big_number_exp::left_type > > - operator / (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, typename detail::big_number_exp::left_type >(a, b.left_ref()); -} -template -inline detail::big_number_exp::left_type, big_number > > - operator / (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp::left_type, big_number >(a.left_ref(), b); -} -template -inline detail::big_number_exp, big_number > > - operator / (const big_number& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp, big_number >(a, b.left_ref()); -} -template -inline detail::big_number_exp, big_number > > - operator / (const detail::big_number_exp >& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a.left_ref(), b); -} -template -inline typename enable_if, detail::big_number_exp, V > > >::type - operator / (const detail::big_number_exp >& a, const V& b) -{ - return detail::big_number_exp, V>(a.left_ref(), b); -} -template -inline typename enable_if, detail::big_number_exp > > >::type - operator / (const V& a, const detail::big_number_exp >& b) -{ - return detail::big_number_exp >(a, b.left_ref()); -} -// -// Modulus: -// -template -inline detail::big_number_exp, big_number > - operator % (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator % (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator % (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator % (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator % (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator % (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator % (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator % (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} -// -// Left shift: -// -template -inline typename enable_if, detail::big_number_exp, I > >::type - operator << (const big_number& a, const I& b) -{ - return detail::big_number_exp, I>(a, b); -} -template -inline typename enable_if, detail::big_number_exp, I> >::type - operator << (const detail::big_number_exp& a, const I& b) -{ - return detail::big_number_exp, I>(a, b); -} -// -// Right shift: -// -template -inline typename enable_if, detail::big_number_exp, I > >::type - operator >> (const big_number& a, const I& b) -{ - return detail::big_number_exp, I>(a, b); -} -template -inline typename enable_if, detail::big_number_exp, I> >::type - operator >> (const detail::big_number_exp& a, const I& b) -{ - return detail::big_number_exp, I>(a, b); -} -// -// Bitwise AND: -// -template -inline detail::big_number_exp, big_number > - operator & (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator & (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator & (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator & (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator & (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator & (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator & (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator & (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} -// -// Bitwise OR: -// -template -inline detail::big_number_exp, big_number > - operator| (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator| (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator| (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator| (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator| (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator| (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator| (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator| (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} -// -// Bitwise XOR: -// -template -inline detail::big_number_exp, big_number > - operator^ (const big_number& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator^ (const big_number& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator^ (const V& a, const big_number& b) -{ - return detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator^ (const big_number& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline detail::big_number_exp, big_number > - operator^ (const detail::big_number_exp& a, const big_number& b) -{ - return detail::big_number_exp, big_number >(a, b); -} -template -inline detail::big_number_exp, detail::big_number_exp > - operator^ (const detail::big_number_exp& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp, detail::big_number_exp >(a, b); -} -template -inline typename enable_if, detail::big_number_exp, V > >::type - operator^ (const detail::big_number_exp& a, const V& b) -{ - return detail::big_number_exp, V >(a, b); -} -template -inline typename enable_if, detail::big_number_exp > >::type - operator^ (const V& a, const detail::big_number_exp& b) -{ - return detail::big_number_exp >(a, b); -} - -// -// Traits class, lets us know what kind of number we have, defaults to a floating point type: -// -enum number_category_type -{ - number_kind_integer = 0, - number_kind_floating_point = 1, - number_kind_rational = 2, - number_kind_fixed_point = 3 -}; - -template -struct number_category : public mpl::int_ {}; -template -struct number_category > : public number_category{}; -template -struct number_category > : public number_category::result_type>{}; - -}} // namespaces - -namespace boost{ namespace math{ namespace tools{ - -template -struct promote_arg; - -template -struct promote_arg > -{ - typedef typename boost::math::detail::big_number_exp::result_type type; -}; - -}}} - -#endif // BOOST_MATH_BIG_NUM_BASE_HPP - - diff --git a/include/boost/math/big_number/default_ops.hpp b/include/boost/math/big_number/default_ops.hpp deleted file mode 100644 index ea034e00..00000000 --- a/include/boost/math/big_number/default_ops.hpp +++ /dev/null @@ -1,903 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_BIG_NUM_DEF_OPS -#define BOOST_MATH_BIG_NUM_DEF_OPS - -#include -#include -#include -#include -#include -#include - -namespace boost{ namespace math{ namespace big_num_default_ops{ - -// -// Default versions of mixed arithmetic, these just construct a temporary -// from the arithmetic value and then do the arithmetic on that: -// -template -inline typename enable_if, is_convertible, is_same > >::type - add(T& result, V const& v) -{ - T t; - t = v; - add(result, t); -} -template -inline typename enable_if, is_convertible, is_same > >::type - subtract(T& result, V const& v) -{ - T t; - t = v; - subtract(result, t); -} -template -inline typename enable_if, is_convertible, is_same > >::type - multiply(T& result, V const& v) -{ - T t; - t = v; - multiply(result, t); -} -template -inline typename enable_if, is_convertible, is_same > >::type - divide(T& result, V const& v) -{ - T t; - t = v; - divide(result, t); -} -template -inline typename enable_if, is_convertible, is_same > >::type - modulus(T& result, V const& v) -{ - T t; - t = v; - modulus(result, t); -} -template -inline typename enable_if, is_convertible, is_same > >::type - bitwise_and(T& result, V const& v) -{ - T t; - t = v; - bitwise_and(result, t); -} -template -inline typename enable_if, is_convertible, is_same > >::type - bitwise_or(T& result, V const& v) -{ - T t; - t = v; - bitwise_or(result, t); -} -template -inline typename enable_if, is_convertible, is_same > >::type - bitwise_xor(T& result, V const& v) -{ - T t; - t = v; - bitwise_xor(result, t); -} - -template -inline typename enable_if, is_convertible, is_same > >::type - complement(T& result, V const& v) -{ - T t; - t = v; - complement(result, t); -} - -template -inline bool is_same_object(const T& u, const T&v) -{ return &u == &v; } -template -inline bool is_same_object(const T& u, const U&v) -{ return false; } - -// -// Default versions of 3-arg arithmetic functions, these just forward to the 2 arg versions: -// -template -inline void add(T& t, const U& u, const V& v) -{ - if(is_same_object(t, v)) - { - add(t, u); - } - else if(is_same_object(t, u)) - { - add(t, v); - } - else - { - t = u; - add(t, v); - } -} -template -inline void subtract(T& t, const U& u, const V& v) -{ - if(is_same_object(t, u)) - subtract(t, v); - else if(is_same_object(t, v)) - { - subtract(t, u); - t.negate(); - } - else - { - t = u; - subtract(t, v); - } -} -template -inline void multiply(T& t, const U& u, const V& v) -{ - if(is_same_object(t, u)) - multiply(t, v); - else if(is_same_object(t, v)) - multiply(t, u); - else - { - t = u; - multiply(t, v); - } -} -template -inline void divide(T& t, const U& u, const V& v) -{ - if(is_same_object(t, u)) - divide(t, v); - else if(is_same_object(t, v)) - { - T temp = t; - divide(temp, u, v); - temp.swap(t); - } - else - { - t = u; - divide(t, v); - } -} -template -inline void modulus(T& t, const U& u, const V& v) -{ - if(is_same_object(t, u)) - modulus(t, v); - else if(is_same_object(t, v)) - { - T temp; - modulus(temp, u, v); - temp.swap(t); - } - else - { - t = u; - modulus(t, v); - } -} -template -inline void bitwise_and(T& t, const U& u, const V& v) -{ - if(is_same_object(t, u)) - bitwise_and(t, v); - else if(is_same_object(t, v)) - bitwise_and(t, u); - else - { - t = u; - bitwise_and(t, v); - } -} - -template -inline void bitwise_or(T& t, const U& u, const V& v) -{ - if(is_same_object(t, u)) - bitwise_or(t, v); - else if(is_same_object(t, v)) - bitwise_or(t, u); - else - { - t = u; - bitwise_or(t, v); - } -} - -template -inline void bitwise_xor(T& t, const U& u, const V& v) -{ - if(is_same_object(t, u)) - bitwise_xor(t, v); - else if(is_same_object(t, v)) - bitwise_xor(t, u); - else - { - t = u; - bitwise_xor(t, v); - } -} - -template -inline void increment(T& val) -{ - typedef typename mpl::front::type ui_type; - add(val, static_cast(1u)); -} - -template -inline void decrement(T& val) -{ - typedef typename mpl::front::type ui_type; - subtract(val, static_cast(1u)); -} - -template -inline void left_shift(T& result, const T& arg, const V val) -{ - result = arg; - left_shift(result, val); -} - -template -inline void right_shift(T& result, const T& arg, const V val) -{ - result = arg; - right_shift(result, val); -} - -template -inline bool is_zero(const T& val) -{ - typedef typename mpl::front::type ui_type; - return val.compare(static_cast(0)) == 0; -} -template -inline int get_sign(const T& val) -{ - typedef typename mpl::front::type ui_type; - return val.compare(static_cast(0)); -} - -template -struct has_enough_bits -{ - template - struct type : public mpl::and_ >, mpl::bool_::digits >= b> >{}; -}; - -template -struct terminal -{ - terminal(const R& v) : value(v){} - terminal(){} - terminal& operator = (R val) { value = val; } - R value; - operator R()const { return value; } -}; - -template -struct calculate_next_larger_type -{ - typedef typename mpl::if_< - is_signed, - typename B::signed_types, - typename mpl::if_< - is_unsigned, - typename B::unsigned_types, - typename B::real_types - >::type - >::type list_type; - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - list_type, - pred_type - >::type iter_type; - typedef typename mpl::eval_if< - is_same::type, iter_type>, - mpl::identity >, - mpl::deref - >::type type; -}; - -template -inline void convert_to(R* result, const B& backend) -{ - typedef typename calculate_next_larger_type::type next_type; - next_type n; - convert_to(&n, backend); - *result = static_cast(n); -} - -template -inline void convert_to(terminal* result, const B& backend) -{ - // - // We ran out of types to try for the convertion, try - // a lexical_cast and hope for the best: - // - result->value = boost::lexical_cast(backend.str(0, false)); -} - -// -// Functions: -// -template -void eval_abs(T& result, const T& arg) -{ - typedef typename T::signed_types type_list; - typedef typename mpl::front::type front; - *result = arg; - if(arg.compare(front(0)) < 0) - result->negate(); -} -template -void eval_fabs(T& result, const T& arg) -{ - typedef typename T::signed_types type_list; - typedef typename mpl::front::type front; - *result = arg; - if(arg.compare(front(0)) < 0) - result->negate(); -} - -template -inline int eval_fpclassify(const Backend& arg) -{ - return is_zero(arg) ? FP_ZERO : FP_NORMAL; -} - -template -inline void eval_fmod(T& result, const T& a, const T& b) -{ - if((&result == &a) || (&result == &b)) - { - T temp; - eval_fmod(temp, a, b); - result = temp; - } - T n; - divide(result, a, b); - if(get_sign(a) < 0) - eval_ceil(n, result); - else - eval_floor(n, result); - multiply(n, b); - subtract(result, a, n); -} - -// -// These have to implemented by the backend, declared here so that our macro generated code compiles OK. -// -template -typename enable_if_c::type eval_floor(); -template -typename enable_if_c::type eval_ceil(); -template -typename enable_if_c::type eval_trunc(); -template -typename enable_if_c::type eval_sqrt(); -template -typename enable_if_c::type eval_ldexp(); -template -typename enable_if_c::type eval_frexp(); -// -// TODO: implement default versions of these: -// -template -typename enable_if_c::type eval_exp(); -template -typename enable_if_c::type eval_log(); -template -typename enable_if_c::type eval_sin(); -template -typename enable_if_c::type eval_cos(); -template -typename enable_if_c::type eval_tan(); -template -typename enable_if_c::type eval_asin(); -template -typename enable_if_c::type eval_acos(); -template -typename enable_if_c::type eval_atan(); -template -typename enable_if_c::type eval_sinh(); -template -typename enable_if_c::type eval_cosh(); -template -typename enable_if_c::type eval_tanh(); -// -// These functions are implemented in separate files, but expanded inline here: -// -#include - -} - -template -class big_number; - -// -// Default versions of floating point classification routines: -// -template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) -{ - using big_num_default_ops::eval_fpclassify; - return eval_fpclassify(arg.backend()); -} -template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) -{ - typedef typename detail::big_number_exp::result_type value_type; - return fpclassify(value_type(arg)); -} -template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) -{ - int v = fpclassify(arg); - return (v != FP_INFINITE) && (v != FP_NAN); -} -template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) -{ - typedef typename detail::big_number_exp::result_type value_type; - return isfinite(value_type(arg)); -} -template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) -{ - return fpclassify(arg) == FP_NAN; -} -template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) -{ - typedef typename detail::big_number_exp::result_type value_type; - return isnan(value_type(arg)); -} -template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) -{ - return fpclassify(arg) == FP_INFINITE; -} -template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) -{ - typedef typename detail::big_number_exp::result_type value_type; - return isinf(value_type(arg)); -} -template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const big_number& arg) -{ - return fpclassify(arg) == FP_NORMAL; -} -template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::big_number_exp& arg) -{ - typedef typename detail::big_number_exp::result_type value_type; - return isnormal(value_type(arg)); -} - -template -inline int itrunc(const detail::big_number_exp& v, const Policy& pol) -{ - typedef typename detail::big_number_exp::result_type number_type; - number_type r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); - return r.template convert_to(); -} -template -inline int itrunc(const big_number& v, const Policy& pol) -{ - big_number r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); - return r.template convert_to(); -} -template -inline long ltrunc(const detail::big_number_exp& v, const Policy& pol) -{ - typedef typename detail::big_number_exp::result_result number_type; - number_type r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); - return r.template convert_to(); -} -template -inline long ltrunc(const big_number& v, const Policy& pol) -{ - big_number r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); - return r.template convert_to(); -} -#ifndef BOOST_NO_LONG_LONG -template -inline long long lltrunc(const detail::big_number_exp& v, const Policy& pol) -{ - typedef typename detail::big_number_exp::result_result number_type; - number_type r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); - return r.template convert_to(); -} -template -inline long long lltrunc(const big_number& v, const Policy& pol) -{ - big_number r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); - return r.template convert_to(); -} -#endif -template -inline int iround(const detail::big_number_exp& v, const Policy& pol) -{ - typedef typename detail::big_number_exp::result_result number_type; - number_type r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); - return r.template convert_to(); -} -template -inline int iround(const big_number& v, const Policy& pol) -{ - big_number r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); - return r.template convert_to(); -} -template -inline long lround(const detail::big_number_exp& v, const Policy& pol) -{ - typedef typename detail::big_number_exp::result_result number_type; - number_type r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); - return r.template convert_to(); -} -template -inline long lround(const big_number& v, const Policy& pol) -{ - big_number r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); - return r.template convert_to(); -} -#ifndef BOOST_NO_LONG_LONG -template -inline long long llround(const detail::big_number_exp& v, const Policy& pol) -{ - typedef typename detail::big_number_exp::result_result number_type; - number_type r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); - return r.template convert_to(); -} -template -inline long long llround(const big_number& v, const Policy& pol) -{ - big_number r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); - return r.template convert_to(); -} -#endif -// -// Overload of Boost.Math functions that find the wrong overload when used with big_number: -// -namespace detail{ - template T sinc_pi_imp(T); - template T sinhc_pi_imp(T); -} -template -inline big_number sinc_pi(const big_number& x) -{ - return detail::sinc_pi_imp(x); -} - -template -inline big_number sinc_pi(const big_number& x, const Policy&) -{ - return detail::sinc_pi_imp(x); -} - -template -inline big_number sinhc_pi(const big_number& x) -{ - return detail::sinhc_pi_imp(x); -} - -template -inline big_number sinhc_pi(const big_number& x, const Policy&) -{ - return boost::math::sinhc_pi(x); -} - -#define UNARY_OP_FUNCTOR(func)\ -namespace detail{\ -template \ -struct BOOST_JOIN(func, _funct)\ -{\ - void operator()(Backend& result, const Backend& arg)const\ - {\ - using big_num_default_ops::BOOST_JOIN(eval_,func);\ - BOOST_JOIN(eval_,func)(result, arg);\ - }\ -};\ -\ -}\ -\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ -> \ -func(const detail::big_number_exp& arg)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ -> (\ - detail::BOOST_JOIN(func, _funct) >::type>() \ - , arg \ - );\ -}\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ -> \ -func(const big_number& arg)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - >(\ - detail::BOOST_JOIN(func, _funct)() \ - , arg \ - );\ -} - -#define BINARY_OP_FUNCTOR(func)\ -namespace detail{\ -template \ -struct BOOST_JOIN(func, _funct)\ -{\ - void operator()(Backend& result, const Backend& arg, const Backend& a)const\ - {\ - using big_num_default_ops:: BOOST_JOIN(eval_,func);\ - BOOST_JOIN(eval_,func)(result, arg, a);\ - }\ - template \ - void operator()(Backend& result, const Backend& arg, const Arithmetic& a)const\ - {\ - using big_num_default_ops:: BOOST_JOIN(eval_,func);\ - BOOST_JOIN(eval_,func)(result, arg, a);\ - }\ -};\ -\ -}\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , big_number \ -> \ -func(const big_number& arg, const big_number& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , big_number \ - >(\ - detail::BOOST_JOIN(func, _funct)() \ - , arg,\ - a\ - );\ -}\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , detail::big_number_exp \ -> \ -func(const big_number& arg, const detail::big_number_exp& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , detail::big_number_exp \ - >(\ - detail::BOOST_JOIN(func, _funct)() \ - , arg,\ - a\ - );\ -}\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp \ - , big_number \ -> \ -func(const detail::big_number_exp& arg, const big_number& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , detail::big_number_exp \ - , big_number \ - >(\ - detail::BOOST_JOIN(func, _funct)() \ - , arg,\ - a\ - );\ -}\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ - , detail::big_number_exp \ -> \ -func(const detail::big_number_exp& arg, const detail::big_number_exp& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ - , detail::big_number_exp \ - >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ - , arg,\ - a\ - );\ -}\ -template \ -typename enable_if<\ - is_arithmetic,\ - detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , Arithmetic\ - > \ ->::type \ -func(const big_number& arg, const Arithmetic& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , Arithmetic\ - >(\ - detail::BOOST_JOIN(func, _funct)() \ - , arg,\ - a\ - );\ -}\ -template \ -typename enable_if<\ - is_arithmetic,\ - detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ - , Arithmetic\ - > \ ->::type \ -func(const detail::big_number_exp& arg, const Arithmetic& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ - , Arithmetic\ - >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ - , arg,\ - a\ - );\ -}\ - - -#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\ -namespace detail{\ -template \ -struct BOOST_JOIN(func, _funct)\ -{\ - void operator()(Backend& result, Backend const& arg, Arg2 a)const\ - {\ - using big_num_default_ops:: BOOST_JOIN(eval_,func);\ - BOOST_JOIN(eval_,func)(result, arg, a);\ - }\ -};\ -\ -}\ -\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ - , Arg2\ -> \ -func(const detail::big_number_exp& arg, Arg2 const& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::big_number_exp \ - , Arg2\ - >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ - , arg, a \ - );\ -}\ -template \ -detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , Arg2\ -> \ -func(const big_number& arg, Arg2 const& a)\ -{\ - return detail::big_number_exp<\ - detail::function\ - , detail::BOOST_JOIN(func, _funct) \ - , big_number \ - , Arg2\ - >(\ - detail::BOOST_JOIN(func, _funct)() \ - , arg,\ - a\ - );\ -}\ - -UNARY_OP_FUNCTOR(abs) -UNARY_OP_FUNCTOR(fabs) -UNARY_OP_FUNCTOR(sqrt) -UNARY_OP_FUNCTOR(floor) -UNARY_OP_FUNCTOR(ceil) -UNARY_OP_FUNCTOR(trunc) -UNARY_OP_FUNCTOR(exp) -UNARY_OP_FUNCTOR(log) -UNARY_OP_FUNCTOR(cos) -UNARY_OP_FUNCTOR(sin) -UNARY_OP_FUNCTOR(tan) -UNARY_OP_FUNCTOR(asin) -UNARY_OP_FUNCTOR(acos) -UNARY_OP_FUNCTOR(atan) -UNARY_OP_FUNCTOR(cosh) -UNARY_OP_FUNCTOR(sinh) -UNARY_OP_FUNCTOR(tanh) - -HETERO_BINARY_OP_FUNCTOR(ldexp, int) -HETERO_BINARY_OP_FUNCTOR(frexp, int*) -BINARY_OP_FUNCTOR(pow) -BINARY_OP_FUNCTOR(fmod) - -#undef BINARY_OP_FUNCTOR -#undef UNARY_OP_FUNCTOR - -}} // namespaces - -#endif - diff --git a/include/boost/math/big_number/e_float.hpp b/include/boost/math/big_number/e_float.hpp deleted file mode 100644 index 9ce737c4..00000000 --- a/include/boost/math/big_number/e_float.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ - -#ifndef BOOST_MATH_EFX_BACKEND_HPP -#define BOOST_MATH_EFX_BACKEND_HPP - -#include -#include -#include -#include -#include - -namespace boost{ -namespace math{ - -typedef big_number > e_float; - -template<> -inline void arithmetic_backend::negate() -{ - m_value.negate(); -} -template<> -inline std::string arithmetic_backend::str(unsigned digits, bool scientific)const -{ - std::fstream os; - os << std::setprecision(digits ? digits : efx::e_float::ef_digits + 5); - if(scientific) - os << std::scientific; - std::string result; - this->data().wr_string(result, os); - return result; -} - -inline void eval_abs(arithmetic_backend& result, const arithmetic_backend& arg) -{ - result.data() = ef::fabs(arg.data()); -} - -inline void eval_fabs(arithmetic_backend& result, const arithmetic_backend& arg) -{ - result.data() = ef::fabs(arg.data()); -} - -inline bool is_zero(const arithmetic_backend& val) -{ - return val.data().iszero(); -} -inline int get_sign(const arithmetic_backend& val) -{ - return val.data().isneg() ? -1 : val.data().iszero() ? 0 : 1; -} - -inline void convert_to(boost::uintmax_t* result, const arithmetic_backend& val) -{ - *result = val.data().extract_unsigned_long_long(); -} -inline void convert_to(boost::intmax_t* result, const arithmetic_backend& val) -{ - *result = val.data().extract_signed_long_long(); -} -inline void convert_to(double* result, const arithmetic_backend& val) -{ - *result = val.data().extract_double(); -} -inline void convert_to(long double* result, const arithmetic_backend& val) -{ - *result = val.data().extract_long_double(); -} -inline int eval_fpclassify(const arithmetic_backend& val) -{ - return val.data().isinf() ? FP_INFINITE : val.data().isnan() ? FP_NAN : val.data().iszero() ? FP_ZERO : FP_NORMAL; -} - - -}} // namespaces - -#endif diff --git a/include/boost/math/big_number/gmp.hpp b/include/boost/math/big_number/gmp.hpp deleted file mode 100644 index 3ee95512..00000000 --- a/include/boost/math/big_number/gmp.hpp +++ /dev/null @@ -1,1532 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_ER_GMP_BACKEND_HPP -#define BOOST_MATH_ER_GMP_BACKEND_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost{ namespace math{ - -template -struct gmp_real; - -namespace detail{ - -template -struct gmp_real_imp -{ - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; - - gmp_real_imp(){} - - gmp_real_imp(const gmp_real_imp& o) - { - // - // We have to do an init followed by a set here, otherwise *this may be at - // a lower precision than o: seems like mpf_init_set copies just enough bits - // to get the right value, but if it's then used in further calculations - // things go badly wrong!! - // - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); - mpf_set(m_data, o.m_data); - } -#ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real_imp(gmp_real_imp&& o) - { - m_data[0] = o.m_data[0]; - o.m_data[0]._mp_d = 0; - } -#endif - gmp_real_imp& operator = (const gmp_real_imp& o) - { - mpf_set(m_data, o.m_data); - return *this; - } -#ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real_imp& operator = (gmp_real_imp&& o) - { - mpf_swap(m_data, o.m_data); - return *this; - } -#endif - gmp_real_imp& operator = (boost::uintmax_t i) - { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); - unsigned shift = 0; - mpf_t t; - mpf_init2(t, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); - mpf_set_ui(m_data, 0); - while(i) - { - mpf_set_ui(t, static_cast(i & mask)); - if(shift) - mpf_mul_2exp(t, t, shift); - mpf_add(m_data, m_data, t); - shift += std::numeric_limits::digits; - i >>= std::numeric_limits::digits; - } - mpf_clear(t); - return *this; - } - gmp_real_imp& operator = (boost::intmax_t i) - { - bool neg = i < 0; - *this = static_cast(std::abs(i)); - if(neg) - mpf_neg(m_data, m_data); - return *this; - } - gmp_real_imp& operator = (unsigned long i) - { - mpf_set_ui(m_data, i); - return *this; - } - gmp_real_imp& operator = (long i) - { - mpf_set_si(m_data, i); - return *this; - } - gmp_real_imp& operator = (double d) - { - mpf_set_d(m_data, d); - return *this; - } - gmp_real_imp& operator = (long double a) - { - using std::frexp; - using std::ldexp; - using std::floor; - - if (a == 0) { - mpf_set_si(m_data, 0); - return *this; - } - - if (a == 1) { - mpf_set_si(m_data, 1); - return *this; - } - - BOOST_ASSERT(!(boost::math::isinf)(a)); - BOOST_ASSERT(!(boost::math::isnan)(a)); - - int e; - long double f, term; - mpf_init_set_ui(m_data, 0u); - - f = frexp(a, &e); - - static const int shift = std::numeric_limits::digits - 1; - - while(f) - { - // extract int sized bits from f: - f = ldexp(f, shift); - term = floor(f); - e -= shift; - mpf_mul_2exp(m_data, m_data, shift); - if(term > 0) - mpf_add_ui(m_data, m_data, static_cast(term)); - else - mpf_sub_ui(m_data, m_data, static_cast(-term)); - f -= term; - } - if(e > 0) - mpf_mul_2exp(m_data, m_data, e); - else if(e < 0) - mpf_div_2exp(m_data, m_data, -e); - return *this; - } - gmp_real_imp& operator = (const char* s) - { - mpf_set_str(m_data, s, 10); - return *this; - } - void swap(gmp_real_imp& o) - { - mpf_swap(m_data, o.m_data); - } - std::string str(unsigned digits, bool scientific)const - { - std::string result; - mp_exp_t e; - void *(*alloc_func_ptr) (size_t); - void *(*realloc_func_ptr) (void *, size_t, size_t); - void (*free_func_ptr) (void *, size_t); - const char* ps = mpf_get_str (0, &e, 10, digits, m_data); - std::ptrdiff_t sl = std::strlen(ps); - if(sl == 0) - return "0"; - if(*ps == '-') - --sl; // number of digits excluding sign. - if(!scientific - && (sl <= std::numeric_limits::digits10 + 1) - && (e >= sl) - && (sl <= std::numeric_limits::digits10 + 1)) - { - result = ps; - result.append(e-sl, '0'); - } - else - { - result = ps; - if(ps[0] == '-') - result.insert(2, 1, '.'); - else - result.insert(1, 1, '.'); - --e; - if(e) - result += "e" + lexical_cast(e); - } - mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); - (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); - return result; - } - ~gmp_real_imp() - { - if(m_data[0]._mp_d) - mpf_clear(m_data); - } - void negate() - { - mpf_neg(m_data, m_data); - } - int compare(const gmp_real& o)const - { - return mpf_cmp(m_data, o.m_data); - } - int compare(long i)const - { - return mpf_cmp_si(m_data, i); - } - int compare(unsigned long i)const - { - return mpf_cmp_ui(m_data, i); - } - template - int compare(V v)const - { - gmp_real d; - d = v; - return compare(d); - } - mpf_t& data() { return m_data; } - const mpf_t& data()const { return m_data; } -protected: - mpf_t m_data; - static unsigned& get_default_precision() - { - static unsigned val = 50; - return val; - } -}; - -} // namespace detail - -template -struct gmp_real : public detail::gmp_real_imp -{ - gmp_real() - { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - } - gmp_real(const gmp_real& o) : detail::gmp_real_imp(o) {} -#ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real(gmp_real&& o) : detail::gmp_real_imp(o) {} -#endif - gmp_real& operator=(const gmp_real& o) - { - *static_cast*>(this) = static_cast const&>(o); - return *this; - } -#ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real& operator=(gmp_real&& o) - { - *static_cast*>(this) = static_cast&&>(o); - return *this; - } -#endif - template - gmp_real& operator=(const V& v) - { - *static_cast*>(this) = v; - return *this; - } -}; - -template <> -struct gmp_real<0> : public detail::gmp_real_imp<0> -{ - gmp_real() - { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); - } - gmp_real(unsigned digits10) - { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - } - gmp_real(const gmp_real& o) : detail::gmp_real_imp<0>(o) {} -#ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real(gmp_real&& o) : detail::gmp_real_imp<0>(o) {} -#endif - gmp_real(const gmp_real& o, unsigned digits10) - { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - *this = o; - } - - gmp_real& operator=(const gmp_real& o) - { - *static_cast*>(this) = static_cast const&>(o); - return *this; - } -#ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real& operator=(gmp_real&& o) - { - *static_cast*>(this) = static_cast &&>(o); - return *this; - } -#endif - template - gmp_real& operator=(const V& v) - { - *static_cast*>(this) = v; - return *this; - } - static unsigned default_precision() - { - return get_default_precision(); - } - static void default_precision(unsigned v) - { - get_default_precision() = v; - } - unsigned precision()const - { - return mpf_get_prec(this->m_data) * 301L / 1000 - 1; - } - void precision(unsigned digits10) - { - mpf_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); - } -}; - -template -inline void add(gmp_real& result, const gmp_real& o) -{ - mpf_add(result.data(), result.data(), o.data()); -} -template -inline void subtract(gmp_real& result, const gmp_real& o) -{ - mpf_sub(result.data(), result.data(), o.data()); -} -template -inline void multiply(gmp_real& result, const gmp_real& o) -{ - mpf_mul(result.data(), result.data(), o.data()); -} -template -inline void divide(gmp_real& result, const gmp_real& o) -{ - mpf_div(result.data(), result.data(), o.data()); -} -template -inline void add(gmp_real& result, unsigned long i) -{ - mpf_add_ui(result.data(), result.data(), i); -} -template -inline void subtract(gmp_real& result, unsigned long i) -{ - mpf_sub_ui(result.data(), result.data(), i); -} -template -inline void multiply(gmp_real& result, unsigned long i) -{ - mpf_mul_ui(result.data(), result.data(), i); -} -template -inline void divide(gmp_real& result, unsigned long i) -{ - mpf_div_ui(result.data(), result.data(), i); -} -template -inline void add(gmp_real& result, long i) -{ - if(i > 0) - mpf_add_ui(result.data(), result.data(), i); - else - mpf_sub_ui(result.data(), result.data(), std::abs(i)); -} -template -inline void subtract(gmp_real& result, long i) -{ - if(i > 0) - mpf_sub_ui(result.data(), result.data(), i); - else - mpf_add_ui(result.data(), result.data(), std::abs(i)); -} -template -inline void multiply(gmp_real& result, long i) -{ - mpf_mul_ui(result.data(), result.data(), std::abs(i)); - if(i < 0) - mpf_neg(result.data(), result.data()); -} -template -inline void divide(gmp_real& result, long i) -{ - mpf_div_ui(result.data(), result.data(), std::abs(i)); - if(i < 0) - mpf_neg(result.data(), result.data()); -} -// -// Specialised 3 arg versions of the basic operators: -// -template -inline void add(gmp_real& a, const gmp_real& x, const gmp_real& y) -{ - mpf_add(a.data(), x.data(), y.data()); -} -template -inline void add(gmp_real& a, const gmp_real& x, unsigned long y) -{ - mpf_add_ui(a.data(), x.data(), y); -} -template -inline void add(gmp_real& a, const gmp_real& x, long y) -{ - if(y < 0) - mpf_sub_ui(a.data(), x.data(), -y); - else - mpf_add_ui(a.data(), x.data(), y); -} -template -inline void add(gmp_real& a, unsigned long x, const gmp_real& y) -{ - mpf_add_ui(a.data(), y.data(), x); -} -template -inline void add(gmp_real& a, long x, const gmp_real& y) -{ - if(x < 0) - { - mpf_ui_sub(a.data(), -x, y.data()); - mpf_neg(a.data(), a.data()); - } - else - mpf_add_ui(a.data(), y.data(), x); -} -template -inline void subtract(gmp_real& a, const gmp_real& x, const gmp_real& y) -{ - mpf_sub(a.data(), x.data(), y.data()); -} -template -inline void subtract(gmp_real& a, const gmp_real& x, unsigned long y) -{ - mpf_sub_ui(a.data(), x.data(), y); -} -template -inline void subtract(gmp_real& a, const gmp_real& x, long y) -{ - if(y < 0) - mpf_add_ui(a.data(), x.data(), -y); - else - mpf_sub_ui(a.data(), x.data(), y); -} -template -inline void subtract(gmp_real& a, unsigned long x, const gmp_real& y) -{ - mpf_ui_sub(a.data(), x, y.data()); -} -template -inline void subtract(gmp_real& a, long x, const gmp_real& y) -{ - if(x < 0) - { - mpf_add_ui(a.data(), y.data(), -x); - mpf_neg(a.data(), a.data()); - } - else - mpf_ui_sub(a.data(), x, y.data()); -} - -template -inline void multiply(gmp_real& a, const gmp_real& x, const gmp_real& y) -{ - mpf_mul(a.data(), x.data(), y.data()); -} -template -inline void multiply(gmp_real& a, const gmp_real& x, unsigned long y) -{ - mpf_mul_ui(a.data(), x.data(), y); -} -template -inline void multiply(gmp_real& a, const gmp_real& x, long y) -{ - if(y < 0) - { - mpf_mul_ui(a.data(), x.data(), -y); - a.negate(); - } - else - mpf_mul_ui(a.data(), x.data(), y); -} -template -inline void multiply(gmp_real& a, unsigned long x, const gmp_real& y) -{ - mpf_mul_ui(a.data(), y.data(), x); -} -template -inline void multiply(gmp_real& a, long x, const gmp_real& y) -{ - if(x < 0) - { - mpf_mul_ui(a.data(), y.data(), -x); - mpf_neg(a.data(), a.data()); - } - else - mpf_mul_ui(a.data(), y.data(), x); -} - -template -inline void divide(gmp_real& a, const gmp_real& x, const gmp_real& y) -{ - mpf_div(a.data(), x.data(), y.data()); -} -template -inline void divide(gmp_real& a, const gmp_real& x, unsigned long y) -{ - mpf_div_ui(a.data(), x.data(), y); -} -template -inline void divide(gmp_real& a, const gmp_real& x, long y) -{ - if(y < 0) - { - mpf_div_ui(a.data(), x.data(), -y); - a.negate(); - } - else - mpf_div_ui(a.data(), x.data(), y); -} -template -inline void divide(gmp_real& a, unsigned long x, const gmp_real& y) -{ - mpf_ui_div(a.data(), x, y.data()); -} -template -inline void divide(gmp_real& a, long x, const gmp_real& y) -{ - if(x < 0) - { - mpf_ui_div(a.data(), -x, y.data()); - mpf_neg(a.data(), a.data()); - } - else - mpf_ui_div(a.data(), x, y.data()); -} - -template -inline bool is_zero(const gmp_real& val) -{ - return mpf_sgn(val.data()) == 0; -} -template -inline int get_sign(const gmp_real& val) -{ - return mpf_sgn(val.data()); -} - -template -inline void convert_to(unsigned long* result, const gmp_real& val) -{ - *result = mpf_get_ui(val.data()); -} -template -inline void convert_to(long* result, const gmp_real& val) -{ - *result = mpf_get_si(val.data()); -} -template -inline void convert_to(double* result, const gmp_real& val) -{ - *result = mpf_get_d(val.data()); -} - -// -// Native non-member operations: -// -template -inline void eval_sqrt(gmp_real& result, const gmp_real& val) -{ - mpf_sqrt(result.data(), val.data()); -} - -template -inline void eval_abs(gmp_real& result, const gmp_real& val) -{ - mpf_abs(result.data(), val.data()); -} - -template -inline void eval_fabs(gmp_real& result, const gmp_real& val) -{ - mpf_abs(result.data(), val.data()); -} -template -inline void eval_ceil(gmp_real& result, const gmp_real& val) -{ - mpf_ceil(result.data(), val.data()); -} -template -inline void eval_floor(gmp_real& result, const gmp_real& val) -{ - mpf_floor(result.data(), val.data()); -} -template -inline void eval_trunc(gmp_real& result, const gmp_real& val) -{ - mpf_trunc(result.data(), val.data()); -} -template -inline void eval_ldexp(gmp_real& result, const gmp_real& val, long e) -{ - if(e > 0) - mpf_mul_2exp(result.data(), val.data(), e); - else if(e < 0) - mpf_div_2exp(result.data(), val.data(), -e); -} -template -inline void eval_frexp(gmp_real& result, const gmp_real& val, int* e) -{ - long v; - mpf_get_d_2exp(&v, val.data()); - *e = v; - eval_ldexp(result, val, -v); -} -template -inline void eval_frexp(gmp_real& result, const gmp_real& val, long* e) -{ - mpf_get_d_2exp(e, val.data()); - eval_ldexp(result, val, -*e); -} - -struct gmp_int -{ - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; - - gmp_int() - { - mpz_init(this->m_data); - } - gmp_int(const gmp_int& o) - { - mpz_init_set(m_data, o.m_data); - } - gmp_int& operator = (const gmp_int& o) - { - mpz_set(m_data, o.m_data); - return *this; - } - gmp_int& operator = (boost::uintmax_t i) - { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); - unsigned shift = 0; - mpz_t t; - mpz_init(m_data); - mpz_init(t); - while(i) - { - mpz_set_ui(t, static_cast(i & mask)); - if(shift) - mpz_mul_2exp(t, t, shift); - mpz_add(m_data, m_data, t); - shift += std::numeric_limits::digits; - i >>= std::numeric_limits::digits; - } - mpz_clear(t); - return *this; - } - gmp_int& operator = (boost::intmax_t i) - { - bool neg = i < 0; - *this = static_cast(std::abs(i)); - if(neg) - mpz_neg(m_data, m_data); - return *this; - } - gmp_int& operator = (unsigned long i) - { - mpz_set_ui(m_data, i); - return *this; - } - gmp_int& operator = (long i) - { - mpz_set_si(m_data, i); - return *this; - } - gmp_int& operator = (double d) - { - mpz_set_d(m_data, d); - return *this; - } - gmp_int& operator = (long double a) - { - using std::frexp; - using std::ldexp; - using std::floor; - - if (a == 0) { - mpz_set_si(m_data, 0); - return *this; - } - - if (a == 1) { - mpz_set_si(m_data, 1); - return *this; - } - - BOOST_ASSERT(!(boost::math::isinf)(a)); - BOOST_ASSERT(!(boost::math::isnan)(a)); - - int e; - long double f, term; - mpz_init_set_ui(m_data, 0u); - - f = frexp(a, &e); - - static const int shift = std::numeric_limits::digits - 1; - - while(f) - { - // extract int sized bits from f: - f = ldexp(f, shift); - term = floor(f); - e -= shift; - mpz_mul_2exp(m_data, m_data, shift); - if(term > 0) - mpz_add_ui(m_data, m_data, static_cast(term)); - else - mpz_sub_ui(m_data, m_data, static_cast(-term)); - f -= term; - } - if(e > 0) - mpz_mul_2exp(m_data, m_data, e); - else if(e < 0) - mpz_div_2exp(m_data, m_data, -e); - return *this; - } - gmp_int& operator = (const char* s) - { - mpz_set_str(m_data, s, 10); - return *this; - } - void swap(gmp_int& o) - { - mpz_swap(m_data, o.m_data); - } - std::string str(unsigned /*digits*/, bool /*scientific*/)const - { - void *(*alloc_func_ptr) (size_t); - void *(*realloc_func_ptr) (void *, size_t, size_t); - void (*free_func_ptr) (void *, size_t); - const char* ps = mpz_get_str (0, 10, m_data); - std::string s = ps; - mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); - (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); - return s; - } - ~gmp_int() - { - mpz_clear(m_data); - } - void negate() - { - mpz_neg(m_data, m_data); - } - int compare(const gmp_int& o)const - { - return mpz_cmp(m_data, o.m_data); - } - int compare(long i)const - { - return mpz_cmp_si(m_data, i); - } - int compare(unsigned long i)const - { - return mpz_cmp_ui(m_data, i); - } - template - int compare(V v)const - { - gmp_int d; - d = v; - return compare(d); - } - mpz_t& data() { return m_data; } - const mpz_t& data()const { return m_data; } -protected: - mpz_t m_data; -}; - -inline void add(gmp_int& t, const gmp_int& o) -{ - mpz_add(t.data(), t.data(), o.data()); -} -inline void subtract(gmp_int& t, const gmp_int& o) -{ - mpz_sub(t.data(), t.data(), o.data()); -} -inline void multiply(gmp_int& t, const gmp_int& o) -{ - mpz_mul(t.data(), t.data(), o.data()); -} -inline void divide(gmp_int& t, const gmp_int& o) -{ - mpz_div(t.data(), t.data(), o.data()); -} -inline void modulus(gmp_int& t, const gmp_int& o) -{ - bool neg = mpz_sgn(t.data()) < 0; - bool neg2 = mpz_sgn(o.data()) < 0; - mpz_mod(t.data(), t.data(), o.data()); - if(neg) - { - if(!neg2) - t.negate(); - mpz_add(t.data(), t.data(), o.data()); - if(!neg2) - t.negate(); - } -} -inline void add(gmp_int& t, unsigned long i) -{ - mpz_add_ui(t.data(), t.data(), i); -} -inline void subtract(gmp_int& t, unsigned long i) -{ - mpz_sub_ui(t.data(), t.data(), i); -} -inline void multiply(gmp_int& t, unsigned long i) -{ - mpz_mul_ui(t.data(), t.data(), i); -} -inline void modulus(gmp_int& t, unsigned long i) -{ - bool neg = mpz_sgn(t.data()) < 0; - mpz_mod_ui(t.data(), t.data(), i); - if(neg) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), i); - t.negate(); - } -} -inline void divide(gmp_int& t, unsigned long i) -{ - mpz_div_ui(t.data(), t.data(), i); -} -inline void add(gmp_int& t, long i) -{ - if(i > 0) - mpz_add_ui(t.data(), t.data(), i); - else - mpz_sub_ui(t.data(), t.data(), -i); -} -inline void subtract(gmp_int& t, long i) -{ - if(i > 0) - mpz_sub_ui(t.data(), t.data(), i); - else - mpz_add_ui(t.data(), t.data(), -i); -} -inline void multiply(gmp_int& t, long i) -{ - mpz_mul_ui(t.data(), t.data(), std::abs(i)); - if(i < 0) - mpz_neg(t.data(), t.data()); -} -inline void modulus(gmp_int& t, long i) -{ - bool neg = mpz_sgn(t.data()) < 0; - bool neg2 = i < 0; - mpz_mod_ui(t.data(), t.data(), std::abs(i)); - if(neg) - { - if(!neg2) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), std::abs(i)); - t.negate(); - } - else - { - mpz_sub_ui(t.data(), t.data(), std::abs(i)); - } - } -} -inline void divide(gmp_int& t, long i) -{ - mpz_div_ui(t.data(), t.data(), std::abs(i)); - if(i < 0) - mpz_neg(t.data(), t.data()); -} -template -inline void left_shift(gmp_int& t, UI i) -{ - mpz_mul_2exp(t.data(), t.data(), static_cast(i)); -} -template -inline void right_shift(gmp_int& t, UI i) -{ - mpz_fdiv_q_2exp(t.data(), t.data(), static_cast(i)); -} -template -inline void left_shift(gmp_int& t, const gmp_int& v, UI i) -{ - mpz_mul_2exp(t.data(), v.data(), static_cast(i)); -} -template -inline void right_shift(gmp_int& t, const gmp_int& v, UI i) -{ - mpz_fdiv_q_2exp(t.data(), v.data(), static_cast(i)); -} - -inline void bitwise_and(gmp_int& result, const gmp_int& v) -{ - mpz_and(result.data(), result.data(), v.data()); -} - -inline void bitwise_or(gmp_int& result, const gmp_int& v) -{ - mpz_ior(result.data(), result.data(), v.data()); -} - -inline void bitwise_xor(gmp_int& result, const gmp_int& v) -{ - mpz_xor(result.data(), result.data(), v.data()); -} - -inline void add(gmp_int& t, const gmp_int& p, const gmp_int& o) -{ - mpz_add(t.data(), p.data(), o.data()); -} -inline void subtract(gmp_int& t, const gmp_int& p, const gmp_int& o) -{ - mpz_sub(t.data(), p.data(), o.data()); -} -inline void multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) -{ - mpz_mul(t.data(), p.data(), o.data()); -} -inline void divide(gmp_int& t, const gmp_int& p, const gmp_int& o) -{ - mpz_div(t.data(), p.data(), o.data()); -} -inline void modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) -{ - bool neg = mpz_sgn(p.data()) < 0; - bool neg2 = mpz_sgn(o.data()) < 0; - mpz_mod(t.data(), p.data(), o.data()); - if(neg) - { - if(!neg2) - t.negate(); - mpz_add(t.data(), t.data(), o.data()); - if(!neg2) - t.negate(); - } -} -inline void add(gmp_int& t, const gmp_int& p, unsigned long i) -{ - mpz_add_ui(t.data(), p.data(), i); -} -inline void subtract(gmp_int& t, const gmp_int& p, unsigned long i) -{ - mpz_sub_ui(t.data(), p.data(), i); -} -inline void multiply(gmp_int& t, const gmp_int& p, unsigned long i) -{ - mpz_mul_ui(t.data(), p.data(), i); -} -inline void modulus(gmp_int& t, const gmp_int& p, unsigned long i) -{ - bool neg = mpz_sgn(p.data()) < 0; - mpz_mod_ui(t.data(), p.data(), i); - if(neg) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), i); - t.negate(); - } -} -inline void divide(gmp_int& t, const gmp_int& p, unsigned long i) -{ - mpz_div_ui(t.data(), p.data(), i); -} -inline void add(gmp_int& t, const gmp_int& p, long i) -{ - if(i > 0) - mpz_add_ui(t.data(), p.data(), i); - else - mpz_sub_ui(t.data(), p.data(), -i); -} -inline void subtract(gmp_int& t, const gmp_int& p, long i) -{ - if(i > 0) - mpz_sub_ui(t.data(), p.data(), i); - else - mpz_add_ui(t.data(), p.data(), -i); -} -inline void multiply(gmp_int& t, const gmp_int& p, long i) -{ - mpz_mul_ui(t.data(), p.data(), std::abs(i)); - if(i < 0) - mpz_neg(t.data(), t.data()); -} -inline void modulus(gmp_int& t, const gmp_int& p, long i) -{ - bool neg = mpz_sgn(p.data()) < 0; - bool neg2 = i < 0; - mpz_mod_ui(t.data(), p.data(), std::abs(i)); - if(neg) - { - if(!neg2) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), std::abs(i)); - t.negate(); - } - else - { - mpz_sub_ui(t.data(), t.data(), std::abs(i)); - } - } -} -inline void divide(gmp_int& t, const gmp_int& p, long i) -{ - mpz_div_ui(t.data(), p.data(), std::abs(i)); - if(i < 0) - mpz_neg(t.data(), t.data()); -} - -inline void bitwise_and(gmp_int& result, const gmp_int& u, const gmp_int& v) -{ - mpz_and(result.data(), u.data(), v.data()); -} - -inline void bitwise_or(gmp_int& result, const gmp_int& u, const gmp_int& v) -{ - mpz_ior(result.data(), u.data(), v.data()); -} - -inline void bitwise_xor(gmp_int& result, const gmp_int& u, const gmp_int& v) -{ - mpz_xor(result.data(), u.data(), v.data()); -} - -inline void complement(gmp_int& result, const gmp_int& u) -{ - mpz_com(result.data(), u.data()); -} - -inline bool is_zero(const gmp_int& val) -{ - return mpz_sgn(val.data()) == 0; -} -inline int get_sign(const gmp_int& val) -{ - return mpz_sgn(val.data()); -} -inline void convert_to(unsigned long* result, const gmp_int& val) -{ - *result = mpz_get_ui(val.data()); -} -inline void convert_to(long* result, const gmp_int& val) -{ - *result = mpz_get_si(val.data()); -} -inline void convert_to(double* result, const gmp_int& val) -{ - *result = mpz_get_d(val.data()); -} - -inline void eval_abs(gmp_int& result, const gmp_int& val) -{ - mpz_abs(result.data(), val.data()); -} - -struct gmp_rational; -void add(gmp_rational& t, const gmp_rational& o); - -struct gmp_rational -{ - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; - - gmp_rational() - { - mpq_init(this->m_data); - } - gmp_rational(const gmp_rational& o) - { - mpq_init(m_data); - mpq_set(m_data, o.m_data); - } - gmp_rational& operator = (const gmp_rational& o) - { - mpq_set(m_data, o.m_data); - return *this; - } - gmp_rational& operator = (boost::uintmax_t i) - { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); - unsigned shift = 0; - mpq_t t; - mpq_init(m_data); - mpq_init(t); - while(i) - { - mpq_set_ui(t, static_cast(i & mask), 1); - if(shift) - mpq_mul_2exp(t, t, shift); - mpq_add(m_data, m_data, t); - shift += std::numeric_limits::digits; - i >>= std::numeric_limits::digits; - } - mpq_clear(t); - return *this; - } - gmp_rational& operator = (boost::intmax_t i) - { - bool neg = i < 0; - *this = static_cast(std::abs(i)); - if(neg) - mpq_neg(m_data, m_data); - return *this; - } - gmp_rational& operator = (unsigned long i) - { - mpq_set_ui(m_data, i, 1); - return *this; - } - gmp_rational& operator = (long i) - { - mpq_set_si(m_data, i, 1); - return *this; - } - gmp_rational& operator = (double d) - { - mpq_set_d(m_data, d); - return *this; - } - gmp_rational& operator = (long double a) - { - using std::frexp; - using std::ldexp; - using std::floor; - using big_num_default_ops::add; - using big_num_default_ops::subtract; - - if (a == 0) { - mpq_set_si(m_data, 0, 1); - return *this; - } - - if (a == 1) { - mpq_set_si(m_data, 1, 1); - return *this; - } - - BOOST_ASSERT(!(boost::math::isinf)(a)); - BOOST_ASSERT(!(boost::math::isnan)(a)); - - int e; - long double f, term; - mpq_init(m_data); - mpq_set_ui(m_data, 0u, 1); - gmp_rational t; - - f = frexp(a, &e); - - static const int shift = std::numeric_limits::digits - 1; - - while(f) - { - // extract int sized bits from f: - f = ldexp(f, shift); - term = floor(f); - e -= shift; - mpq_mul_2exp(m_data, m_data, shift); - t = static_cast(term); - add(*this, t); - f -= term; - } - if(e > 0) - mpq_mul_2exp(m_data, m_data, e); - else if(e < 0) - mpq_div_2exp(m_data, m_data, -e); - return *this; - } - gmp_rational& operator = (const char* s) - { - mpq_set_str(m_data, s, 10); - return *this; - } - void swap(gmp_rational& o) - { - mpq_swap(m_data, o.m_data); - } - std::string str(unsigned /*digits*/, bool /*scientific*/)const - { - void *(*alloc_func_ptr) (size_t); - void *(*realloc_func_ptr) (void *, size_t, size_t); - void (*free_func_ptr) (void *, size_t); - const char* ps = mpq_get_str (0, 10, m_data); - std::string s = ps; - mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); - (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); - return s; - } - ~gmp_rational() - { - mpq_clear(m_data); - } - void negate() - { - mpq_neg(m_data, m_data); - } - int compare(const gmp_rational& o)const - { - return mpq_cmp(m_data, o.m_data); - } - template - int compare(V v)const - { - gmp_rational d; - d = v; - return compare(d); - } - int compare(unsigned long v) - { - return mpq_cmp_ui(m_data, v, 1); - } - int compare(long v) - { - return mpq_cmp_si(m_data, v, 1); - } - mpq_t& data() { return m_data; } - const mpq_t& data()const { return m_data; } -protected: - mpq_t m_data; -}; - -inline void add(gmp_rational& t, const gmp_rational& o) -{ - mpq_add(t.data(), t.data(), o.data()); -} -inline void subtract(gmp_rational& t, const gmp_rational& o) -{ - mpq_sub(t.data(), t.data(), o.data()); -} -inline void multiply(gmp_rational& t, const gmp_rational& o) -{ - mpq_mul(t.data(), t.data(), o.data()); -} -inline void divide(gmp_rational& t, const gmp_rational& o) -{ - mpq_div(t.data(), t.data(), o.data()); -} -inline void add(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) -{ - mpq_add(t.data(), p.data(), o.data()); -} -inline void subtract(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) -{ - mpq_sub(t.data(), p.data(), o.data()); -} -inline void multiply(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) -{ - mpq_mul(t.data(), p.data(), o.data()); -} -inline void divide(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) -{ - mpq_div(t.data(), p.data(), o.data()); -} - -inline bool is_zero(const gmp_rational& val) -{ - return mpq_sgn(val.data()) == 0; -} -inline int get_sign(const gmp_rational& val) -{ - return mpq_sgn(val.data()); -} -inline void convert_to(double* result, const gmp_rational& val) -{ - *result = mpq_get_d(val.data()); -} - -inline void convert_to(long* result, const gmp_rational& val) -{ - double r; - convert_to(&r, val); - *result = r; -} - -inline void convert_to(unsigned long* result, const gmp_rational& val) -{ - double r; - convert_to(&r, val); - *result = r; -} - -inline void eval_abs(gmp_rational& result, const gmp_rational& val) -{ - mpq_abs(result.data(), val.data()); -} - -template<> -struct number_category : public mpl::int_{}; -template<> -struct number_category : public mpl::int_{}; - -typedef big_number > mpf_real_50; -typedef big_number > mpf_real_100; -typedef big_number > mpf_real_500; -typedef big_number > mpf_real_1000; -typedef big_number > mpf_real; -typedef big_number mpz_int; -typedef big_number mpq_rational; - -}} // namespaces - -namespace std{ - -#ifdef BOOST_NO_NOEXCEPT -# define noexcept -#endif - -// -// numeric_limits [partial] specializations for the types declared in this header: -// -template -class numeric_limits > > -{ - typedef boost::math::big_number > number_type; -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = true; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept - { - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept - { - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpf_mul_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX - 1); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept - { - return -(max)(); - } - BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); - BOOST_STATIC_CONSTEXPR int digits10 = Digits10; - // Is this really correct??? - BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; - BOOST_STATIC_CONSTEXPR bool is_signed = true; - BOOST_STATIC_CONSTEXPR bool is_integer = false; - BOOST_STATIC_CONSTEXPR bool is_exact = false; - BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept - { - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1); - } - return value.second; - } - // What value should this be???? - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept - { - // returns epsilon/2 - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), digits); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR long min_exponent = LONG_MIN; - BOOST_STATIC_CONSTEXPR long min_exponent10 = (LONG_MIN / 1000) * 301L; - BOOST_STATIC_CONSTEXPR long max_exponent = LONG_MAX; - BOOST_STATIC_CONSTEXPR long max_exponent10 = (LONG_MAX / 1000) * 301L; - BOOST_STATIC_CONSTEXPR bool has_infinity = false; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = true; - BOOST_STATIC_CONSTEXPR bool is_modulo = false; - BOOST_STATIC_CONSTEXPR bool traps = true; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_to_nearest; - -private: - struct data_initializer - { - data_initializer() - { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); - } - void do_nothing()const{} - }; - static const data_initializer initializer; -}; - -template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; - -template<> -class numeric_limits > > -{ - typedef boost::math::big_number > number_type; -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = false; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR int digits = 0; - BOOST_STATIC_CONSTEXPR int digits10 = 0; - BOOST_STATIC_CONSTEXPR int max_digits10 = 0; - BOOST_STATIC_CONSTEXPR bool is_signed = false; - BOOST_STATIC_CONSTEXPR bool is_integer = false; - BOOST_STATIC_CONSTEXPR bool is_exact = false; - BOOST_STATIC_CONSTEXPR int radix = 0; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR int min_exponent = 0; - BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; - BOOST_STATIC_CONSTEXPR int max_exponent = 0; - BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; - BOOST_STATIC_CONSTEXPR bool has_infinity = false; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = false; - BOOST_STATIC_CONSTEXPR bool is_modulo = false; - BOOST_STATIC_CONSTEXPR bool traps = false; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; -}; - -template<> -class numeric_limits -{ - typedef boost::math::mpz_int number_type; -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = true; - // - // Largest and smallest numbers are bounded only by available memory, set - // to zero: - // - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept - { - return number_type(); - } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept - { - return number_type(); - } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return (min)(); } - // Digits are unbounded, use zero for now: - BOOST_STATIC_CONSTEXPR int digits = 0; - BOOST_STATIC_CONSTEXPR int digits10 = 0; - BOOST_STATIC_CONSTEXPR int max_digits10 = 0; - BOOST_STATIC_CONSTEXPR bool is_signed = true; - BOOST_STATIC_CONSTEXPR bool is_integer = true; - BOOST_STATIC_CONSTEXPR bool is_exact = true; - BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR int min_exponent = 0; - BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; - BOOST_STATIC_CONSTEXPR int max_exponent = 0; - BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; - BOOST_STATIC_CONSTEXPR bool has_infinity = false; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = false; - BOOST_STATIC_CONSTEXPR bool is_modulo = false; - BOOST_STATIC_CONSTEXPR bool traps = false; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; -}; - -#ifdef BOOST_NO_NOEXCEPT -# undef noexcept -#endif - -} // namespace std - -#endif diff --git a/include/boost/math/big_number/mpfr.hpp b/include/boost/math/big_number/mpfr.hpp deleted file mode 100644 index 31165841..00000000 --- a/include/boost/math/big_number/mpfr.hpp +++ /dev/null @@ -1,952 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_BN_MPFR_HPP -#define BOOST_MATH_BN_MPFR_HPP - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost{ namespace math{ - -template -struct mpfr_real_backend; - -namespace detail{ - -long get_default_precision() { return 50; } - -template -struct mpfr_real_imp -{ - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; - - mpfr_real_imp(){} - - mpfr_real_imp(const mpfr_real_imp& o) - { - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); - mpfr_set(m_data, o.m_data, GMP_RNDN); - } -#ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_imp(mpfr_real_imp&& o) - { - m_data[0] = o.m_data[0]; - o.m_data[0]._mpfr_d = 0; - } -#endif - mpfr_real_imp& operator = (const mpfr_real_imp& o) - { - mpfr_set(m_data, o.m_data, GMP_RNDN); - return *this; - } -#ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_imp& operator = (mpfr_real_imp&& o) - { - mpfr_swap(m_data, o.m_data); - return *this; - } -#endif - mpfr_real_imp& operator = (boost::uintmax_t i) - { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); - unsigned shift = 0; - mpfr_t t; - mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(((digits10 + 1) * 1000L) / 301L))); - mpfr_set_ui(m_data, 0, GMP_RNDN); - while(i) - { - mpfr_set_ui(t, static_cast(i & mask), GMP_RNDN); - if(shift) - mpfr_mul_2exp(t, t, shift, GMP_RNDN); - mpfr_add(m_data, m_data, t, GMP_RNDN); - shift += std::numeric_limits::digits; - i >>= std::numeric_limits::digits; - } - mpfr_clear(t); - return *this; - } - mpfr_real_imp& operator = (boost::intmax_t i) - { - bool neg = i < 0; - *this = static_cast(std::abs(i)); - if(neg) - mpfr_neg(m_data, m_data, GMP_RNDN); - return *this; - } - mpfr_real_imp& operator = (unsigned long i) - { - mpfr_set_ui(m_data, i, GMP_RNDN); - return *this; - } - mpfr_real_imp& operator = (long i) - { - mpfr_set_si(m_data, i, GMP_RNDN); - return *this; - } - mpfr_real_imp& operator = (double d) - { - mpfr_set_d(m_data, d, GMP_RNDN); - return *this; - } - mpfr_real_imp& operator = (long double a) - { - using std::frexp; - using std::ldexp; - using std::floor; - - if (a == 0) { - mpfr_set_si(m_data, 0, GMP_RNDN); - return *this; - } - - if (a == 1) { - mpfr_set_si(m_data, 1, GMP_RNDN); - return *this; - } - - BOOST_ASSERT(!(boost::math::isinf)(a)); - BOOST_ASSERT(!(boost::math::isnan)(a)); - - int e; - long double f, term; - mpfr_init_set_ui(m_data, 0u, GMP_RNDN); - - f = frexp(a, &e); - - static const int shift = std::numeric_limits::digits - 1; - - while(f) - { - // extract int sized bits from f: - f = ldexp(f, shift); - term = floor(f); - e -= shift; - mpfr_mul_2exp(m_data, m_data, shift, GMP_RNDN); - if(term > 0) - mpfr_add_ui(m_data, m_data, static_cast(term), GMP_RNDN); - else - mpfr_sub_ui(m_data, m_data, static_cast(-term), GMP_RNDN); - f -= term; - } - if(e > 0) - mpfr_mul_2exp(m_data, m_data, e, GMP_RNDN); - else if(e < 0) - mpfr_div_2exp(m_data, m_data, -e, GMP_RNDN); - return *this; - } - mpfr_real_imp& operator = (const char* s) - { - mpfr_set_str(m_data, s, 10, GMP_RNDN); - return *this; - } - void swap(mpfr_real_imp& o) - { - mpfr_swap(m_data, o.m_data); - } - std::string str(unsigned digits, bool scientific)const - { - std::string result; - mp_exp_t e; - char* ps = mpfr_get_str (0, &e, 10, digits, m_data, GMP_RNDN); - std::ptrdiff_t sl = std::strlen(ps); - unsigned chars = sl; - if(sl == 0) - return "0"; - while(ps[chars-1] == '0') - --chars; - if(*ps == '-') - --chars; // number of digits excluding sign. - if(chars == 0) - return "0"; - if(!scientific - && (chars <= std::numeric_limits::digits10 + 1) - && (e >= (int)chars) - && (chars <= std::numeric_limits::digits10 + 1)) - { - result.assign(ps, (*ps == '-' ? chars+1 : chars)); - result.append(e-chars, '0'); - } - else - { - result = ps; - if(ps[0] == '-') - result.insert(2, 1, '.'); - else - result.insert(1, 1, '.'); - --e; - if(e) - result += "e" + lexical_cast(e); - } - mpfr_free_str(ps); - return result; - } - ~mpfr_real_imp() - { - if(m_data[0]._mpfr_d) - mpfr_clear(m_data); - } - void negate() - { - mpfr_neg(m_data, m_data, GMP_RNDN); - } - int compare(const mpfr_real_backend& o)const - { - return mpfr_cmp(m_data, o.m_data); - } - int compare(long i)const - { - return mpfr_cmp_si(m_data, i); - } - int compare(unsigned long i)const - { - return mpfr_cmp_ui(m_data, i); - } - template - int compare(V v)const - { - mpfr_real_backend d; - d = v; - return compare(d); - } - mpfr_t& data() { return m_data; } - const mpfr_t& data()const { return m_data; } -protected: - mpfr_t m_data; - static unsigned& get_default_precision() - { - static unsigned val = 50; - return val; - } -}; - -} // namespace detail - -template -struct mpfr_real_backend : public detail::mpfr_real_imp -{ - mpfr_real_backend() - { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - } - mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp(o) {} -#ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp(o) {} -#endif - mpfr_real_backend& operator=(const mpfr_real_backend& o) - { - *static_cast*>(this) = static_cast const&>(o); - return *this; - } -#ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend& operator=(mpfr_real_backend&& o) - { - *static_cast*>(this) = static_cast&&>(o); - return *this; - } -#endif - template - mpfr_real_backend& operator=(const V& v) - { - *static_cast*>(this) = v; - return *this; - } -}; - -template <> -struct mpfr_real_backend<0> : public detail::mpfr_real_imp<0> -{ - mpfr_real_backend() - { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); - } - mpfr_real_backend(unsigned digits10) - { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - } - mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp<0>(o) {} -#ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp<0>(o) {} -#endif - mpfr_real_backend(const mpfr_real_backend& o, unsigned digits10) - { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - *this = o; - } - - mpfr_real_backend& operator=(const mpfr_real_backend& o) - { - *static_cast*>(this) = static_cast const&>(o); - return *this; - } -#ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend& operator=(mpfr_real_backend&& o) - { - *static_cast*>(this) = static_cast &&>(o); - return *this; - } -#endif - template - mpfr_real_backend& operator=(const V& v) - { - *static_cast*>(this) = v; - return *this; - } - static unsigned default_precision() - { - return get_default_precision(); - } - static void default_precision(unsigned v) - { - get_default_precision() = v; - } - unsigned precision()const - { - return mpfr_get_prec(this->m_data) * 301L / 1000 - 1; - } - void precision(unsigned digits10) - { - mpfr_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); - } -}; - -template -inline void add(mpfr_real_backend& result, const mpfr_real_backend& o) -{ - mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& result, const mpfr_real_backend& o) -{ - mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); -} -template -inline void multiply(mpfr_real_backend& result, const mpfr_real_backend& o) -{ - mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); -} -template -inline void divide(mpfr_real_backend& result, const mpfr_real_backend& o) -{ - mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); -} -template -inline void add(mpfr_real_backend& result, unsigned long i) -{ - mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& result, unsigned long i) -{ - mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); -} -template -inline void multiply(mpfr_real_backend& result, unsigned long i) -{ - mpfr_mul_ui(result.data(), result.data(), i, GMP_RNDN); -} -template -inline void divide(mpfr_real_backend& result, unsigned long i) -{ - mpfr_div_ui(result.data(), result.data(), i, GMP_RNDN); -} -template -inline void add(mpfr_real_backend& result, long i) -{ - if(i > 0) - mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); - else - mpfr_sub_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& result, long i) -{ - if(i > 0) - mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); - else - mpfr_add_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); -} -template -inline void multiply(mpfr_real_backend& result, long i) -{ - mpfr_mul_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); - if(i < 0) - mpfr_neg(result.data(), result.data(), GMP_RNDN); -} -template -inline void divide(mpfr_real_backend& result, long i) -{ - mpfr_div_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); - if(i < 0) - mpfr_neg(result.data(), result.data(), GMP_RNDN); -} -// -// Specialised 3 arg versions of the basic operators: -// -template -inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) -{ - mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); -} -template -inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) -{ - mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, long y) -{ - if(y < 0) - mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); - else - mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void add(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) -{ - mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); -} -template -inline void add(mpfr_real_backend& a, long x, const mpfr_real_backend& y) -{ - if(x < 0) - { - mpfr_ui_sub(a.data(), -x, y.data(), GMP_RNDN); - mpfr_neg(a.data(), a.data(), GMP_RNDN); - } - else - mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) -{ - mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) -{ - mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, long y) -{ - if(y < 0) - mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); - else - mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) -{ - mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); -} -template -inline void subtract(mpfr_real_backend& a, long x, const mpfr_real_backend& y) -{ - if(x < 0) - { - mpfr_add_ui(a.data(), y.data(), -x, GMP_RNDN); - mpfr_neg(a.data(), a.data(), GMP_RNDN); - } - else - mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); -} - -template -inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) -{ - mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); -} -template -inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) -{ - mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, long y) -{ - if(y < 0) - { - mpfr_mul_ui(a.data(), x.data(), -y, GMP_RNDN); - a.negate(); - } - else - mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void multiply(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) -{ - mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); -} -template -inline void multiply(mpfr_real_backend& a, long x, const mpfr_real_backend& y) -{ - if(x < 0) - { - mpfr_mul_ui(a.data(), y.data(), -x, GMP_RNDN); - mpfr_neg(a.data(), a.data(), GMP_RNDN); - } - else - mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); -} - -template -inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) -{ - mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); -} -template -inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) -{ - mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, long y) -{ - if(y < 0) - { - mpfr_div_ui(a.data(), x.data(), -y, GMP_RNDN); - a.negate(); - } - else - mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); -} -template -inline void divide(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) -{ - mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); -} -template -inline void divide(mpfr_real_backend& a, long x, const mpfr_real_backend& y) -{ - if(x < 0) - { - mpfr_ui_div(a.data(), -x, y.data(), GMP_RNDN); - mpfr_neg(a.data(), a.data(), GMP_RNDN); - } - else - mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); -} - -template -inline bool is_zero(const mpfr_real_backend& val) -{ - return 0 != mpfr_zero_p(val.data()); -} -template -inline int get_sign(const mpfr_real_backend& val) -{ - return mpfr_sgn(val.data()); -} - -template -inline void convert_to(unsigned long* result, const mpfr_real_backend& val) -{ - *result = mpfr_get_ui(val.data(), GMP_RNDN); -} -template -inline void convert_to(long* result, const mpfr_real_backend& val) -{ - *result = mpfr_get_si(val.data(), GMP_RNDN); -} -#ifdef _MPFR_H_HAVE_INTMAX_T -template -inline void convert_to(boost::uintmax_t* result, const mpfr_real_backend& val) -{ - *result = mpfr_get_uj(val.data(), GMP_RNDN); -} -template -inline void convert_to(boost::intmax_t* result, const mpfr_real_backend& val) -{ - *result = mpfr_get_sj(val.data(), GMP_RNDN); -} -#endif -template -inline void convert_to(double* result, const mpfr_real_backend& val) -{ - *result = mpfr_get_d(val.data(), GMP_RNDN); -} -template -inline void convert_to(long double* result, const mpfr_real_backend& val) -{ - *result = mpfr_get_ld(val.data(), GMP_RNDN); -} - -// -// Native non-member operations: -// -template -inline void eval_sqrt(mpfr_real_backend& result, const mpfr_real_backend& val) -{ - mpfr_sqrt(result.data(), val.data(), GMP_RNDN); -} - -template -inline void eval_abs(mpfr_real_backend& result, const mpfr_real_backend& val) -{ - mpfr_abs(result.data(), val.data(), GMP_RNDN); -} - -template -inline void eval_fabs(mpfr_real_backend& result, const mpfr_real_backend& val) -{ - mpfr_abs(result.data(), val.data(), GMP_RNDN); -} -template -inline void eval_ceil(mpfr_real_backend& result, const mpfr_real_backend& val) -{ - mpfr_ceil(result.data(), val.data()); -} -template -inline void eval_floor(mpfr_real_backend& result, const mpfr_real_backend& val) -{ - mpfr_floor(result.data(), val.data()); -} -template -inline void eval_trunc(mpfr_real_backend& result, const mpfr_real_backend& val) -{ - mpfr_trunc(result.data(), val.data()); -} -template -inline void eval_ldexp(mpfr_real_backend& result, const mpfr_real_backend& val, long e) -{ - if(e > 0) - mpfr_mul_2exp(result.data(), val.data(), e, GMP_RNDN); - else if(e < 0) - mpfr_div_2exp(result.data(), val.data(), -e, GMP_RNDN); -} -template -inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, int* e) -{ - long v; - mpfr_get_d_2exp(&v, val.data(), GMP_RNDN); - *e = v; - eval_ldexp(result, val, -v); -} -template -inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, long* e) -{ - mpfr_get_d_2exp(e, val.data(), GMP_RNDN); - return eval_ldexp(result, val, -*e); -} - -template -inline int eval_fpclassify(const mpfr_real_backend& val) -{ - return mpfr_inf_p(val.data()) ? FP_INFINITE : mpfr_nan_p(val.data()) ? FP_NAN : mpfr_zero_p(val.data()) ? FP_ZERO : FP_NORMAL; -} - -template -inline void eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const mpfr_real_backend& e) -{ - mpfr_pow(result.data(), b.data(), e.data(), GMP_RNDN); -} - -template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) -{ - mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN); -} - -template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) -{ - mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN); -} - -template -inline void eval_exp(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_exp(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_log(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_log(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_sin(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_sin(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_cos(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_cos(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_tan(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_tan(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_asin(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_asin(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_acos(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_acos(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_atan(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_atan(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_sinh(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_sinh(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_cosh(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_cosh(result.data(), arg.data(), GMP_RNDN); -} - -template -inline void eval_tanh(mpfr_real_backend& result, const mpfr_real_backend& arg) -{ - mpfr_tanh(result.data(), arg.data(), GMP_RNDN); -} - -typedef big_number > mpfr_real_50; -typedef big_number > mpfr_real_100; -typedef big_number > mpfr_real_500; -typedef big_number > mpfr_real_1000; -typedef big_number > mpfr_real; - -namespace lanczos{ - -template -struct lanczos >, Policy> -{ - typedef typename mpl::if_c< - Digits10 <= 36, - lanczos22UDT, - typename mpl::if_c< - Digits10 <= 50, - lanczos31UDT, - typename mpl::if_c< - Digits10 <= 110, - lanczos61UDT, - undefined_lanczos - >::type - >::type - >::type type; -}; - -} // namespace lanczos - - -}} // namespaces - -namespace std{ - -#ifdef BOOST_NO_NOEXCEPT -# define noexcept -#endif - -// -// numeric_limits [partial] specializations for the types declared in this header: -// -template -class numeric_limits > > -{ - typedef boost::math::big_number > number_type; -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = true; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept - { - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 0.5; - mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), -mpfr_get_emin(), GMP_RNDN); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept - { - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 0.5; - mpfr_mul_2exp(value.second.backend().data(), value.second.backend().data(), mpfr_get_emax(), GMP_RNDN); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept - { - return -(max)(); - } - BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); - BOOST_STATIC_CONSTEXPR int digits10 = Digits10; - // Is this really correct??? - BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; - BOOST_STATIC_CONSTEXPR bool is_signed = true; - BOOST_STATIC_CONSTEXPR bool is_integer = false; - BOOST_STATIC_CONSTEXPR bool is_exact = false; - BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept - { - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), std::numeric_limits::digits - 1, GMP_RNDN); - } - return value.second; - } - // What value should this be???? - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept - { - // returns epsilon/2 - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpfr_div_2exp(value.second.backend().data(), value.second.backend().data(), digits, GMP_RNDN); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR long min_exponent = MPFR_EMIN_DEFAULT; - BOOST_STATIC_CONSTEXPR long min_exponent10 = (MPFR_EMIN_DEFAULT / 1000) * 301L; - BOOST_STATIC_CONSTEXPR long max_exponent = MPFR_EMAX_DEFAULT; - BOOST_STATIC_CONSTEXPR long max_exponent10 = (MPFR_EMAX_DEFAULT / 1000) * 301L; - BOOST_STATIC_CONSTEXPR bool has_infinity = true; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = true; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept - { - // returns epsilon/2 - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpfr_set_inf(value.second.backend().data(), 1); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept - { - // returns epsilon/2 - initializer.do_nothing(); - static std::pair value; - if(!value.first) - { - value.first = true; - value.second = 1; - mpfr_set_nan(value.second.backend().data()); - } - return value.second; - } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept - { - return number_type(0); - } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = true; - BOOST_STATIC_CONSTEXPR bool is_modulo = false; - BOOST_STATIC_CONSTEXPR bool traps = true; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_to_nearest; - -private: - struct data_initializer - { - data_initializer() - { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); - std::numeric_limits > >::infinity(); - std::numeric_limits > >::quiet_NaN(); - } - void do_nothing()const{} - }; - static const data_initializer initializer; -}; - -template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; - -template<> -class numeric_limits > > -{ - typedef boost::math::big_number > number_type; -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = false; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR int digits = 0; - BOOST_STATIC_CONSTEXPR int digits10 = 0; - BOOST_STATIC_CONSTEXPR int max_digits10 = 0; - BOOST_STATIC_CONSTEXPR bool is_signed = false; - BOOST_STATIC_CONSTEXPR bool is_integer = false; - BOOST_STATIC_CONSTEXPR bool is_exact = false; - BOOST_STATIC_CONSTEXPR int radix = 0; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR int min_exponent = 0; - BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; - BOOST_STATIC_CONSTEXPR int max_exponent = 0; - BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; - BOOST_STATIC_CONSTEXPR bool has_infinity = false; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = false; - BOOST_STATIC_CONSTEXPR bool is_modulo = false; - BOOST_STATIC_CONSTEXPR bool traps = false; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; -}; - -#ifdef noexcept -#undef noexcept -#endif - -} // namespace std -#endif diff --git a/include/boost/math/concepts/big_number_architypes.hpp b/include/boost/math/concepts/big_number_architypes.hpp deleted file mode 100644 index 26a7a4b6..00000000 --- a/include/boost/math/concepts/big_number_architypes.hpp +++ /dev/null @@ -1,293 +0,0 @@ -/////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ - -#ifndef BOOST_MATH_CONCEPTS_ER_HPP -#define BOOST_MATH_CONCEPTS_ER_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace boost{ -namespace math{ -namespace concepts{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4244) -#endif - -struct big_number_backend_real_architype -{ - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; - - big_number_backend_real_architype() - { - std::cout << "Default construct" << std::endl; - } - big_number_backend_real_architype(const big_number_backend_real_architype& o) - { - std::cout << "Copy construct" << std::endl; - m_value = o.m_value; - } - big_number_backend_real_architype& operator = (const big_number_backend_real_architype& o) - { - m_value = o.m_value; - std::cout << "Assignment (" << m_value << ")" << std::endl; - return *this; - } - big_number_backend_real_architype& operator = (boost::uintmax_t i) - { - m_value = i; - std::cout << "UInt Assignment (" << i << ")" << std::endl; - return *this; - } - big_number_backend_real_architype& operator = (boost::intmax_t i) - { - m_value = i; - std::cout << "Int Assignment (" << i << ")" << std::endl; - return *this; - } - big_number_backend_real_architype& operator = (long double d) - { - m_value = d; - std::cout << "long double Assignment (" << d << ")" << std::endl; - return *this; - } - big_number_backend_real_architype& operator = (const char* s) - { - m_value = boost::lexical_cast(s); - std::cout << "const char* Assignment (" << s << ")" << std::endl; - return *this; - } - void swap(big_number_backend_real_architype& o) - { - std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; - std::swap(m_value, o.m_value); - } - std::string str(unsigned digits, bool scientific)const - { - std::stringstream ss; - if(scientific) - ss.setf(ss.scientific); - if(digits) - ss.precision(digits); - else - ss.precision(std::numeric_limits::digits10 + 2); - boost::intmax_t i = m_value; - boost::uintmax_t u = m_value; - if(!scientific && m_value == i) - ss << i; - else if(!scientific && m_value == u) - ss << u; - else - ss << m_value; - std::string s = ss.str(); - std::cout << "Converting to string (" << s << ")" << std::endl; - return s; - } - void negate() - { - std::cout << "Negating (" << m_value << ")" << std::endl; - m_value = -m_value; - } - int compare(const big_number_backend_real_architype& o)const - { - std::cout << "Comparison" << std::endl; - return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); - } - int compare(boost::intmax_t i)const - { - std::cout << "Comparison with int" << std::endl; - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(boost::uintmax_t i)const - { - std::cout << "Comparison with unsigned" << std::endl; - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(long double d)const - { - std::cout << "Comparison with long double" << std::endl; - return m_value > d ? 1 : (m_value < d ? -1 : 0); - } - long double m_value; -}; - -inline void add(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) -{ - std::cout << "Addition (" << result.m_value << " += " << o.m_value << ")" << std::endl; - result.m_value += o.m_value; -} -inline void subtract(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) -{ - std::cout << "Subtraction (" << result.m_value << " -= " << o.m_value << ")" << std::endl; - result.m_value -= o.m_value; -} -inline void multiply(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) -{ - std::cout << "Multiplication (" << result.m_value << " *= " << o.m_value << ")" << std::endl; - result.m_value *= o.m_value; -} -inline void divide(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) -{ - std::cout << "Division (" << result.m_value << " /= " << o.m_value << ")" << std::endl; - result.m_value /= o.m_value; -} - -inline void eval_frexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int* exp) -{ - result = std::frexp(arg.m_value, exp); -} - -inline void eval_ldexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int exp) -{ - result = std::ldexp(arg.m_value, exp); -} - -inline void eval_floor(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::floor(arg.m_value); -} - -inline void eval_ceil(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::ceil(arg.m_value); -} - -inline void eval_trunc(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = boost::math::trunc(arg.m_value); -} - -inline void eval_sqrt(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::sqrt(arg.m_value); -} - -inline void eval_abs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::abs(arg.m_value); -} - -inline void eval_fabs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::fabs(arg.m_value); -} - -inline int eval_fpclassify(const big_number_backend_real_architype& arg) -{ - return boost::math::fpclassify(arg.m_value); -} - -inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, const big_number_backend_real_architype& e) -{ - result = std::pow(b.m_value, e.m_value); -} - -inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, int e) -{ - result = std::pow(b.m_value, e); -} - -inline void eval_exp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::exp(arg.m_value); -} - -inline void eval_log(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::log(arg.m_value); -} - -inline void eval_sin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::sin(arg.m_value); -} - -inline void eval_cos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::cos(arg.m_value); -} - -inline void eval_tan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::tan(arg.m_value); -} - -inline void eval_asin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::asin(arg.m_value); -} - -inline void eval_acos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::acos(arg.m_value); -} - -inline void eval_atan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::atan(arg.m_value); -} - -inline void eval_sinh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::sinh(arg.m_value); -} - -inline void eval_cosh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::cosh(arg.m_value); -} - -inline void eval_tanh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) -{ - result = std::tanh(arg.m_value); -} - -typedef boost::math::big_number big_number_real_architype; - -}}} // namespaces - -namespace std{ - -#ifdef BOOST_NO_NOEXCEPT -# define noexcept -#endif - -template <> -class numeric_limits : public std::numeric_limits -{ - typedef std::numeric_limits base_type; - typedef boost::math::concepts::big_number_real_architype number_type; -public: - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } -}; - -#ifdef BOOST_NO_NOEXCEPT -# undef noexcept -#endif - -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif From b0de931cf10a650da845e949a3084fe8f1a6ff5a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 26 Sep 2011 17:59:35 +0000 Subject: [PATCH 028/256] Giant file and directory rename: changed directory name from math to multiprecision and updated code to match. [SVN r74583] --- .../boost/multiprecision/{backends => detail}/functions/pow.hpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename include/boost/multiprecision/{backends => detail}/functions/pow.hpp (100%) diff --git a/include/boost/multiprecision/backends/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp similarity index 100% rename from include/boost/multiprecision/backends/functions/pow.hpp rename to include/boost/multiprecision/detail/functions/pow.hpp From 01173bc59c781aa04f574a666e9b064aab67a425 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 3 Oct 2011 16:56:24 +0000 Subject: [PATCH 029/256] Changed namespace to "multiprecision". Added some numberic constant calculations. Added exp function support and test case. [SVN r74669] --- .../multiprecision/arithmetic_backend.hpp | 6 +- .../concepts/big_number_architypes.hpp | 23 ++- .../multiprecision/detail/big_number_base.hpp | 10 +- .../multiprecision/detail/default_ops.hpp | 189 ++++++++++++------ .../detail/functions/constants.hpp | 116 +++++++++++ .../multiprecision/detail/functions/pow.hpp | 146 ++++++++++++++ include/boost/multiprecision/e_float.hpp | 2 +- include/boost/multiprecision/gmp.hpp | 90 +++++++-- include/boost/multiprecision/mp_number.hpp | 29 +-- include/boost/multiprecision/mpfr.hpp | 30 +-- test/Jamfile.v2 | 8 + test/big_number_concept_check.cpp | 22 +- test/linpack-benchmark.cpp | 10 +- test/test_arithmetic.cpp | 30 +-- test/test_exp.cpp | 129 ++++++++++++ test/test_numeric_limits.cpp | 22 +- 16 files changed, 691 insertions(+), 171 deletions(-) create mode 100644 include/boost/multiprecision/detail/functions/constants.hpp create mode 100644 test/test_exp.cpp diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index 54d452ec..f5429c48 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -13,7 +13,7 @@ #include namespace boost{ -namespace math{ +namespace multiprecision{ template struct arithmetic_backend @@ -122,10 +122,10 @@ namespace std{ #endif template -class numeric_limits > > : public std::numeric_limits +class numeric_limits > > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::math::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } diff --git a/include/boost/multiprecision/concepts/big_number_architypes.hpp b/include/boost/multiprecision/concepts/big_number_architypes.hpp index f13c2c7e..fbec67b3 100644 --- a/include/boost/multiprecision/concepts/big_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/big_number_architypes.hpp @@ -15,7 +15,7 @@ #include namespace boost{ -namespace math{ +namespace multiprecision{ namespace concepts{ #ifdef BOOST_MSVC @@ -64,7 +64,7 @@ struct big_number_backend_real_architype } big_number_backend_real_architype& operator = (const char* s) { - m_value = boost::lexical_cast(s); + m_value = boost::lexical_cast(s); std::cout << "const char* Assignment (" << s << ")" << std::endl; return *this; } @@ -143,6 +143,19 @@ inline void divide(big_number_backend_real_architype& result, const big_number_b result.m_value /= o.m_value; } +inline void convert_to(boost::uintmax_t* result, const big_number_backend_real_architype& val) +{ + *result = static_cast(val.m_value); +} +inline void convert_to(boost::intmax_t* result, const big_number_backend_real_architype& val) +{ + *result = static_cast(val.m_value); +} +inline void convert_to(long double* result, big_number_backend_real_architype& val) +{ + *result = val.m_value; +} + inline void eval_frexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int* exp) { result = std::frexp(arg.m_value, exp); @@ -253,7 +266,7 @@ inline void eval_tanh(big_number_backend_real_architype& result, const big_numbe result = std::tanh(arg.m_value); } -typedef boost::math::mp_number big_number_real_architype; +typedef boost::multiprecision::mp_number big_number_real_architype; }}} // namespaces @@ -264,10 +277,10 @@ namespace std{ #endif template <> -class numeric_limits : public std::numeric_limits +class numeric_limits : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::math::concepts::big_number_real_architype number_type; + typedef boost::multiprecision::concepts::big_number_real_architype number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } diff --git a/include/boost/multiprecision/detail/big_number_base.hpp b/include/boost/multiprecision/detail/big_number_base.hpp index c8fcd9cf..6b85d7d4 100644 --- a/include/boost/multiprecision/detail/big_number_base.hpp +++ b/include/boost/multiprecision/detail/big_number_base.hpp @@ -10,7 +10,7 @@ #include #include -namespace boost{ namespace math{ +namespace boost{ namespace multiprecision{ template class mp_number; @@ -139,11 +139,11 @@ struct backend_type > template struct is_big_number : public mpl::false_{}; template -struct is_big_number > : public mpl::true_{}; +struct is_big_number > : public mpl::true_{}; template struct is_big_number_exp : public mpl::false_{}; template -struct is_big_number_exp > : public mpl::true_{}; +struct is_big_number_exp > : public mpl::true_{}; template struct combine_expression; @@ -971,9 +971,9 @@ template struct promote_arg; template -struct promote_arg > +struct promote_arg > { - typedef typename boost::math::detail::mp_exp::result_type type; + typedef typename boost::multiprecision::detail::mp_exp::result_type type; }; }}} diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 262b3ee7..da8780e8 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -12,8 +12,9 @@ #include #include #include +#include -namespace boost{ namespace math{ namespace big_num_default_ops{ +namespace boost{ namespace multiprecision{ namespace big_num_default_ops{ // // Default versions of mixed arithmetic, these just construct a temporary @@ -372,6 +373,29 @@ inline void eval_fmod(T& result, const T& a, const T& b) multiply(n, b); subtract(result, a, n); } +template +inline void eval_trunc(T& result, const T& a) +{ + if(get_sign(a) < 0) + eval_ceil(result, a); + else + eval_floor(result, a); +} + +template +inline void eval_round(T& result, const T& a) +{ + if(get_sign(a) < 0) + { + subtract(result, a, 0.5f); + eval_ceil(result, result); + } + else + { + add(result, a, 0.5f); + eval_floor(result, result); + } +} // // These have to implemented by the backend, declared here so that our macro generated code compiles OK. @@ -414,8 +438,10 @@ typename enable_if_c::type eval_cosh(); template typename enable_if_c::type eval_tanh(); // -// These functions are implemented in separate files, but expanded inline here: +// These functions are implemented in separate files, but expanded inline here, +// DO NOT CHANGE THE ORDER OF THESE INCLUDES: // +#include #include } @@ -423,74 +449,95 @@ typename enable_if_c::type eval_tanh(); template class mp_number; +} // namespace multiprecision +namespace math{ // // Default versions of floating point classification routines: // template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { - using big_num_default_ops::eval_fpclassify; + using multiprecision::big_num_default_ops::eval_fpclassify; return eval_fpclassify(arg.backend()); } template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return fpclassify(value_type(arg)); } template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { int v = fpclassify(arg); return (v != FP_INFINITE) && (v != FP_NAN); } template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isfinite(value_type(arg)); } template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { return fpclassify(arg) == FP_NAN; } template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isnan(value_type(arg)); } template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { return fpclassify(arg) == FP_INFINITE; } template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isinf(value_type(arg)); } template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const mp_number& arg) +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { return fpclassify(arg) == FP_NORMAL; } template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const detail::mp_exp& arg) +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isnormal(value_type(arg)); } +} // namespace math +namespace multiprecision{ + +template +inline typename detail::mp_exp::result_type trunc(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_type number_type; + return trunc(v, pol); +} + +template +inline mp_number trunc(const mp_number& v, const Policy& pol) +{ + using big_num_default_ops::eval_trunc; + mp_number result; + eval_trunc(result.backend(), v.backend()); + return result; +} + template inline int itrunc(const detail::mp_exp& v, const Policy& pol) { typedef typename detail::mp_exp::result_type number_type; number_type r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } template @@ -498,7 +545,7 @@ inline int itrunc(const mp_number& v, const Policy& pol) { mp_number r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } template @@ -507,7 +554,7 @@ inline long ltrunc(const detail::mp_exp& v, const Policy& pol) typedef typename detail::mp_exp::result_result number_type; number_type r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } template @@ -515,7 +562,7 @@ inline long ltrunc(const mp_number& v, const Policy& pol) { mp_number r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } #ifndef BOOST_NO_LONG_LONG @@ -525,7 +572,7 @@ inline long long lltrunc(const detail::mp_exp& v, const Policy& typedef typename detail::mp_exp::result_result number_type; number_type r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } template @@ -533,17 +580,32 @@ inline long long lltrunc(const mp_number& v, const Policy& pol) { mp_number r = trunc(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } #endif +template +inline typename detail::mp_exp::result_result round(const detail::mp_exp& v, const Policy& pol) +{ + typedef typename detail::mp_exp::result_result number_type; + return round(static_cast(v), pol); +} +template +inline mp_number round(const mp_number& v, const Policy& pol) +{ + using big_num_default_ops::eval_round; + mp_number result; + eval_round(result.backend(), v.backend()); + return result; +} + template inline int iround(const detail::mp_exp& v, const Policy& pol) { typedef typename detail::mp_exp::result_result number_type; number_type r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } template @@ -551,7 +613,7 @@ inline int iround(const mp_number& v, const Policy& pol) { mp_number r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } template @@ -560,7 +622,7 @@ inline long lround(const detail::mp_exp& v, const Policy& pol) typedef typename detail::mp_exp::result_result number_type; number_type r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } template @@ -568,7 +630,7 @@ inline long lround(const mp_number& v, const Policy& pol) { mp_number r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } #ifndef BOOST_NO_LONG_LONG @@ -578,7 +640,7 @@ inline long long llround(const detail::mp_exp& v, const Policy& typedef typename detail::mp_exp::result_result number_type; number_type r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } template @@ -586,40 +648,10 @@ inline long long llround(const mp_number& v, const Policy& pol) { mp_number r = round(v, pol); if(fabs(r) > (std::numeric_limits::max)()) - return policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } #endif -// -// Overload of Boost.Math functions that find the wrong overload when used with mp_number: -// -namespace detail{ - template T sinc_pi_imp(T); - template T sinhc_pi_imp(T); -} -template -inline mp_number sinc_pi(const mp_number& x) -{ - return detail::sinc_pi_imp(x); -} - -template -inline mp_number sinc_pi(const mp_number& x, const Policy&) -{ - return detail::sinc_pi_imp(x); -} - -template -inline mp_number sinhc_pi(const mp_number& x) -{ - return detail::sinhc_pi_imp(x); -} - -template -inline mp_number sinhc_pi(const mp_number& x, const Policy&) -{ - return boost::math::sinhc_pi(x); -} #define UNARY_OP_FUNCTOR(func)\ namespace detail{\ @@ -897,7 +929,42 @@ BINARY_OP_FUNCTOR(fmod) #undef BINARY_OP_FUNCTOR #undef UNARY_OP_FUNCTOR -}} // namespaces +} //namespace multiprecision + +namespace math{ +// +// Overload of Boost.Math functions that find the wrong overload when used with mp_number: +// +namespace detail{ + template T sinc_pi_imp(T); + template T sinhc_pi_imp(T); +} +template +inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x) +{ + return detail::sinc_pi_imp(x); +} + +template +inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x, const Policy&) +{ + return detail::sinc_pi_imp(x); +} + +template +inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x) +{ + return detail::sinhc_pi_imp(x); +} + +template +inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x, const Policy&) +{ + return boost::multiprecision::sinhc_pi(x); +} + +} // namespace math +} // namespace boost #endif diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp new file mode 100644 index 00000000..60a3bfe8 --- /dev/null +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -0,0 +1,116 @@ +// Copyright 2011 John Maddock. Distributed under the Boost +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// This file has no include guards or namespaces - it's expanded inline inside default_ops.hpp +// + +template +void calc_log2(T& num, unsigned digits) +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename T::unsigned_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type ui_type; + typedef typename mpl::front::type si_type; + + num = static_cast(1180509120u); + T denom, next_term, temp; + denom = static_cast(1277337600u); + next_term = static_cast(120u); + si_type sign = -1; + + ui_type limit = digits / 3 + 1; + + for(ui_type n = 6; n < limit; ++n) + { + temp = static_cast(2); + multiply(temp, ui_type(2 * n)); + multiply(temp, ui_type(2 * n + 1)); + multiply(num, temp); + multiply(denom, temp); + sign = -sign; + multiply(next_term, n); + multiply(temp, next_term, next_term); + multiply(temp, sign); + add(num, temp); + } + multiply(denom, ui_type(4)); + multiply(num, ui_type(3)); + divide(num, denom); +} + +template +void calc_e(T& result, unsigned digits) +{ + typedef typename mpl::front::type ui_type; + typedef typename mpl::front::type real_type; + T lim; + lim = ui_type(1); + eval_ldexp(lim, lim, digits); + + result = ui_type(2); + T denom; + denom = ui_type(1); + ui_type i = 2; + do{ + multiply(denom, i); + multiply(result, i); + add(result, ui_type(1)); + ++i; + }while(denom.compare(lim) <= 0); + divide(result, denom); +} + + +template +struct constant_initializer +{ + static void do_nothing() + { + init.do_nothing(); + } +private: + struct initializer + { + initializer() + { + F(); + } + void do_nothing()const{} + }; + static const initializer init; +}; + +template +typename constant_initializer::initializer const constant_initializer::init; + +template +const T& get_constant_ln2() +{ + static T result; + static bool b = false; + if(!b) + calc_log2(result, std::numeric_limits >::digits); + + constant_initializer >::do_nothing(); + + return result; +} + +template +const T& get_constant_e() +{ + static T result; + static bool b = false; + if(!b) + calc_e(result, std::numeric_limits >::digits); + + constant_initializer >::do_nothing(); + + return result; +} + diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 48d10c15..de5b2b4e 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -94,4 +94,150 @@ inline void eval_pow(T& result, const T& t, const U& p) detail::pow_imp(result, t, p, tag_type()); } +template +void hyp0F0(T& H0F0, const T& x) +{ + // Compute the series representation of Hypergeometric0F0 taken from + // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric0F0/06/01/ + // There are no checks on input range or parameter boundaries. + + typedef typename mpl::front::type ui_type; + + long tol = std::numeric_limits >::digits; + T t; + + T x_pow_n_div_n_fact(x); + + add(H0F0, x_pow_n_div_n_fact, ui_type(1)); + + ui_type n; + + // Series expansion of hyperg_0f0(; ; x). + for(n = 2; n < 300; ++n) + { + multiply(x_pow_n_div_n_fact, x); + divide(x_pow_n_div_n_fact, n); + + if(n > 20) + { + eval_ldexp(t, H0F0, -tol); + if(t.compare(x_pow_n_div_n_fact) >= 0) + { + break; + } + } + + add(H0F0, x_pow_n_div_n_fact); + } + if(n >= 300) + throw std::runtime_error("H0F0 failed to converge"); +} + + +template +void eval_exp(T& result, const T& x) +{ + if(&x == &result) + { + T temp; + eval_exp(temp, x); + result = temp; + } + typedef typename mpl::front::type ui_type; + // Handle special arguments. + int type = eval_fpclassify(x); + bool isneg = get_sign(x) < 0; + if(type == FP_NAN) + { + result = std::numeric_limits >::quiet_NaN().backend(); + return; + } + else if(type == FP_INFINITE) + { + result = x; + if(isneg) + result = ui_type(0u); + else + result = x; + return; + } + else if(type == FP_ZERO) + { + result = ui_type(1); + return; + } + + // Get local copy of argument and force it to be positive. + T xx = x; + T exp_series; + if(isneg) + xx.negate(); + + // Check the range of the argument. + static const boost::intmax_t maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? std::numeric_limits::max() : std::numeric_limits >::max_exponent; + + if(xx.compare(maximum_arg_for_exp) >= 0) + { + // Overflow / underflow + if(isneg) + result = ui_type(0); + else + result = std::numeric_limits >::has_infinity ? std::numeric_limits >::infinity().backend() : (std::numeric_limits >::max)().backend(); + return; + } + + // Check for pure-integer arguments which can be either signed or unsigned. + boost::intmax_t ll; + eval_trunc(exp_series, x); + convert_to(&ll, exp_series); + if(x.compare(ll) == 0) + { + detail::pow_imp(result, get_constant_e(), ll, mpl::true_()); + return; + } + + // The algorithm for exp has been taken from MPFUN. + // exp(t) = [ (1 + r + r^2/2! + r^3/3! + r^4/4! ...)^p2 ] * 2^n + // where p2 is a power of 2 such as 2048, r = t_prime / p2, and + // t_prime = t - n*ln2, with n chosen to minimize the absolute + // value of t_prime. In the resulting Taylor series, which is + // implemented as a hypergeometric function, |r| is bounded by + // ln2 / p2. For small arguments, no scaling is done. + + typedef typename mpl::front::type float_type; + + const bool b_scale = (xx.compare(float_type(1e-4)) > 0); + + // Compute the exponential series of the (possibly) scaled argument. + + if(b_scale) + { + divide(result, xx, get_constant_ln2()); + boost::intmax_t n; + convert_to(&n, result); + + // The scaling is 2^11 = 2048. + static const long long p2 = static_cast(boost::uint32_t(1u) << 11); + + multiply(exp_series, get_constant_ln2(), n); + subtract(exp_series, xx); + divide(exp_series, p2); + exp_series.negate(); + hyp0F0(result, exp_series); + + detail::pow_imp(exp_series, result, p2, mpl::true_()); + result = ui_type(1); + eval_ldexp(result, result, n); + multiply(exp_series, result); + } + else + { + hyp0F0(exp_series, xx); + } + + if(isneg) + divide(result, ui_type(1), exp_series); + else + result = exp_series; +} diff --git a/include/boost/multiprecision/e_float.hpp b/include/boost/multiprecision/e_float.hpp index 4f9d4aa2..68931334 100644 --- a/include/boost/multiprecision/e_float.hpp +++ b/include/boost/multiprecision/e_float.hpp @@ -13,7 +13,7 @@ #include namespace boost{ -namespace math{ +namespace multiprecision{ typedef mp_number > e_float; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 2cf5991d..bcaaf1e0 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -15,7 +15,7 @@ #include #include -namespace boost{ namespace math{ +namespace boost{ namespace multiprecision{ template struct gmp_real; @@ -567,6 +567,68 @@ inline void convert_to(double* result, const gmp_real& val) { *result = mpf_get_d(val.data()); } +#ifdef BOOST_HAS_LONG_LONG +template +inline void convert_to(long long* result, const gmp_real& val) +{ + gmp_real t(val); + if(get_sign(t) < 0) + t.negate(); + + long digits = std::numeric_limits::digits - std::numeric_limits::digits; + + if(digits > 0) + mpf_div_2exp(t.data(), t.data(), digits); + + if(!mpf_fits_slong_p(t.data())) + { + *result = (std::numeric_limits::max)(); + return; + }; + + *result = mpf_get_si(t.data()); + while(digits > 0) + { + *result <<= digits; + digits -= std::numeric_limits::digits; + mpf_mul_2exp(t.data(), t.data(), digits >= 0 ? std::numeric_limits::digits : std::numeric_limits::digits + digits); + unsigned long l = mpf_get_ui(t.data()); + if(digits < 0) + l >>= -digits; + *result |= l; + } + if(get_sign(val) < 0) + *result = -*result; +} +template +inline void convert_to(unsigned long long* result, const gmp_real& val) +{ + gmp_real t(val); + + long digits = std::numeric_limits::digits - std::numeric_limits::digits; + + if(digits > 0) + mpf_div_2exp(t.data(), t.data(), digits); + + if(!mpf_fits_ulong_p(t.data())) + { + *result = (std::numeric_limits::max)(); + return; + } + + *result = mpf_get_ui(t.data()); + while(digits > 0) + { + *result <<= digits; + digits -= std::numeric_limits::digits; + mpf_mul_2exp(t.data(), t.data(), digits >= 0 ? std::numeric_limits::digits : std::numeric_limits::digits + digits); + unsigned long l = mpf_get_ui(t.data()); + if(digits < 0) + l >>= -digits; + *result |= l; + } +} +#endif // // Native non-member operations: @@ -1289,14 +1351,14 @@ inline void convert_to(long* result, const gmp_rational& val) { double r; convert_to(&r, val); - *result = r; + *result = static_cast(r); } inline void convert_to(unsigned long* result, const gmp_rational& val) { double r; convert_to(&r, val); - *result = r; + *result = static_cast(r); } inline void eval_abs(gmp_rational& result, const gmp_rational& val) @@ -1329,9 +1391,9 @@ namespace std{ // numeric_limits [partial] specializations for the types declared in this header: // template -class numeric_limits > > +class numeric_limits > > { - typedef boost::math::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept @@ -1421,10 +1483,10 @@ private: { data_initializer() { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); } void do_nothing()const{} }; @@ -1432,12 +1494,12 @@ private: }; template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; template<> -class numeric_limits > > +class numeric_limits > > { - typedef boost::math::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(); } @@ -1474,9 +1536,9 @@ public: }; template<> -class numeric_limits +class numeric_limits { - typedef boost::math::mpz_int number_type; + typedef boost::multiprecision::mpz_int number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index fc2f2f75..053d45a6 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -21,7 +21,7 @@ #include #include -namespace boost{ namespace math{ +namespace boost{ namespace multiprecision{ template class mp_number @@ -546,31 +546,6 @@ private: divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } -#if 0 - template - void do_assign(const Exp& e, const detail::multiply_and_negate_immediates&) - { - using big_num_default_ops::multiply; - multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } - - template - void do_assign(const Exp& e, const detail::divide_and_negate_immediates&) - { - using big_num_default_ops::divide; - divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } - - template - void do_assign(const Exp& e, const detail::unary_plus&) - { - typedef typename Exp::left_type left_type; - do_assign(e.left(), typename left_type::tag_type()); - } - -#endif template void do_assign(const Exp& e, const detail::negate&) { @@ -1491,7 +1466,7 @@ struct is_valid_comparison_imp }; template -struct is_valid_comparison : public boost::math::detail::is_valid_comparison_imp::type {}; +struct is_valid_comparison : public boost::multiprecision::detail::is_valid_comparison_imp::type {}; } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index ad018505..062d926a 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -15,7 +15,7 @@ #include #include -namespace boost{ namespace math{ +namespace boost{ namespace multiprecision{ template struct mpfr_real_backend; @@ -736,10 +736,14 @@ typedef mp_number > mpfr_real_500; typedef mp_number > mpfr_real_1000; typedef mp_number > mpfr_real; +} // namespace boost + +namespace math{ + namespace lanczos{ template -struct lanczos >, Policy> +struct lanczos >, Policy> { typedef typename mpl::if_c< Digits10 <= 36, @@ -771,9 +775,9 @@ namespace std{ // numeric_limits [partial] specializations for the types declared in this header: // template -class numeric_limits > > +class numeric_limits > > { - typedef boost::math::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept @@ -890,12 +894,12 @@ private: { data_initializer() { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); - std::numeric_limits > >::infinity(); - std::numeric_limits > >::quiet_NaN(); + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); + std::numeric_limits > >::infinity(); + std::numeric_limits > >::quiet_NaN(); } void do_nothing()const{} }; @@ -903,12 +907,12 @@ private: }; template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; template<> -class numeric_limits > > +class numeric_limits > > { - typedef boost::math::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(0); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 24b697e7..5e66e5bf 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -187,3 +187,11 @@ run big_number_concept_check.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : big_number_concept_check_mpfr_50 ; +run test_exp.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_exp_mpf50 ; + diff --git a/test/big_number_concept_check.cpp b/test/big_number_concept_check.cpp index 466af22f..ec54755b 100644 --- a/test/big_number_concept_check.cpp +++ b/test/big_number_concept_check.cpp @@ -57,22 +57,22 @@ void foo() { #ifdef TEST_BACKEND - instantiate(boost::math::big_number_real_architype()); + instantiate(boost::multiprecision::big_number_real_architype()); #endif #ifdef TEST_MPF_50 - instantiate(boost::math::mpf_real_50()); + instantiate(boost::multiprecision::mpf_real_50()); #endif #ifdef TEST_MPF - instantiate(boost::math::mpf_real()); + instantiate(boost::multiprecision::mpf_real()); #endif #ifdef TEST_MPFR_50 - instantiate(boost::math::mpfr_real_50()); + instantiate(boost::multiprecision::mpfr_real_50()); #endif #ifdef TEST_MPFR - instantiate(boost::math::mpfr_real()); + instantiate(boost::multiprecision::mpfr_real()); #endif #ifdef TEST_E_FLOAT - instantiate(boost::math::e_float()); + instantiate(boost::multiprecision::e_float()); #endif } @@ -82,19 +82,19 @@ int main() BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPF_50 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPF - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPFR_50 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPFR - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_E_FLOAT - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif } diff --git a/test/linpack-benchmark.cpp b/test/linpack-benchmark.cpp index 27fdde3e..1f4d2ab8 100644 --- a/test/linpack-benchmark.cpp +++ b/test/linpack-benchmark.cpp @@ -21,10 +21,10 @@ http://www.netlib.org/f2c/libf2c.zip #ifdef TEST_MPF_100 #include -typedef boost::math::mpf_real_100 real_type; +typedef boost::multiprecision::mpf_real_100 real_type; #elif defined(TEST_MPFR_100) #include -typedef boost::math::mpfr_real_100 real_type; +typedef boost::multiprecision::mpfr_real_100 real_type; #elif defined(TEST_GMPXX) #include typedef mpf_class real_type; @@ -39,7 +39,7 @@ typedef ::efx::e_float real_type; using ef::abs; #elif defined(TEST_E_FLOAT_BN) #include -typedef boost::math::e_float real_type; +typedef boost::multiprecision::e_float real_type; #else typedef double real_type; #endif @@ -111,7 +111,7 @@ extern "C" int MAIN__() #elif defined(TEST_E_FLOAT) std::cout << "Testing boost::ef::e_float" << std::endl; #elif defined(TEST_E_FLOAT_BN) - std::cout << "Testing boost::math::e_float" << std::endl; + std::cout << "Testing boost::multiprecision::e_float" << std::endl; #else std::cout << "Testing double" << std::endl; #endif @@ -1242,7 +1242,7 @@ mp_number >: times for array with leading dimension of1001 279.96 0.84 280.8 2.3813 0.83988 5014.3 -boost::math::ef::e_float: +boost::multiprecision::ef::e_float: ~~~~~~~~~~~~~~~~~~~~~~~~~ norm. resid resid machep x(1) x(n) diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 3e82e749..62405dad 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -74,7 +74,7 @@ template void test_integer_ops(const T&){} template -void test_integer_ops(const boost::mpl::int_&) +void test_integer_ops(const boost::mpl::int_&) { Real a(20); Real b(7); @@ -270,7 +270,7 @@ template void test_real_ops(const T&){} template -void test_real_ops(const boost::mpl::int_&) +void test_real_ops(const boost::mpl::int_&) { #if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) || defined(TEST_MPFR) BOOST_TEST(abs(Real(2)) == 2); @@ -566,11 +566,11 @@ void test() // // Integer only functions: // - test_integer_ops(typename boost::math::number_category::type()); + test_integer_ops(typename boost::multiprecision::number_category::type()); // // Real number only functions: // - test_real_ops(typename boost::math::number_category::type()); + test_real_ops(typename boost::multiprecision::number_category::type()); // // Test basic arithmetic: // @@ -859,35 +859,35 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF50 - test(); + test(); #endif #ifdef TEST_MPF - boost::math::mpf_real::default_precision(1000); + boost::multiprecision::mpf_real::default_precision(1000); /* - boost::math::mpf_real r; + boost::multiprecision::mpf_real r; r.precision(50); BOOST_TEST(r.precision() >= 50); */ - BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); - test(); + BOOST_TEST(boost::multiprecision::mpf_real::default_precision() == 1000); + test(); #endif #ifdef TEST_MPZ - test(); + test(); #endif #ifdef TEST_MPQ - test(); + test(); #endif #ifdef TEST_E_FLOAT - test(); + test(); #endif #ifdef TEST_MPFR - test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp new file mode 100644 index 00000000..14a3129a --- /dev/null +++ b/test/test_exp.cpp @@ -0,0 +1,129 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("1."), + T("9.4774758759621877024211675170518456366884502921505415491512637467314221915954853431757689726613032841249599156149038435317513116309445221664968991934479367736962368912070497862135887440758964938422498610719192114666493107120133053433933470080716434904854804591983841381870449665144170011709399012693158566138960223723364102555657731121349862591746773752353141675856300389702807704522952296232409058995e76"), + T("8.9822548979445237099762393639075561506833309483454509238768979587574644012197081949903511127689329087920328909235374785049128571553031890973238724279779592658729244759890277209350767466719784199679796679076195510817453034019585841414276969807276603422838152196159579020392165208404938697706742432405072185394955217454998873094186010667116964062108348411120353180844989880619261736047981860732797930644e153"), + T("8.5129104107012425752479825179539835555229492815662784863307311391672159207488925610548399363157976134510028424514441050609545913878842822386467301206413201029623476769026205205033685817764924800488232855250724008684495915251712280130842326233108250199883461186105839257510617980635806077595457588382413118792469142952313318664506759914894358735407111388609445312410411768354469087810933243701518863094e230"), + T("8.068090305164838604842549259891290171124821324687615632762765947633748868268417454336601924388552143324691924117594027902831510205350887969459808981202607973311868683121411298688279975061789109893607155133896078457388071886309741456291076644788440713510519219662121306330169119711707661687366546188062768141595534496102806873207221787877336040297603480708540379623897605936160066148763011880191621869e307"), + T("7.6465131232284163049316971133689488893295181895713899732751818669118734787914222264428338943260471340902326391726435840091710708695473968075461348860956049684669812738873320847453110965340325334947107583391780473997991426818290712114444252407495208024999404559898062464415917818325137468413597347923471238518514205589873079135934550659222795036544923795379322078022614498712288611880678752777952015152e384"), + T("7.2469643660625598538019258566517379445511821515071121090548187005319333633673122846436747032786828698818049511140660969044546275219845755939273078671198074959632409619498154244698031034440156360197935648334627868546857888857494388700626844388689389822377033582839158752694909185487984346545185318857120307481828458998400770240716997943805543726689069264680883497414036698656007667489582007899001829547e461"), + T("6.8682929953315519748061086577140456531398698780106027012062193513974157724673145902422782875956445003426789107235281687028397040131570497762100824722937078427155330107861397918035390454699657109557435638021678699307825502445861009401889929556587580492784546438388738373098175168819944606997023434060917962050793068854615280653706806955349426233710968944941108524201897185239272184650924550094159165184e538"), + T("6.5094081172294858524266967236074125271501239931616451822606100184551967070123942960365792762875516947968906251960679962384234952003522496976521459488146737312705400397630193900773373659538930712803305054506593414261773420168174852358519629345494258520616169148118576343286498482213483702930624725613384454163670114665649516148482263466492457979074135245336808430956247276655511233636218374141666023272e615"), + T("6.1692758397834896445466565257129421525132737513712327204187797947854551109008575685822530235797715953977744784785550340516715598557366923302859690730271083925820960776432604991610505575079802877181530212126674968757212631217826462154883556827312493006938669407561453082743084716913350560632423093917610154998589982600001382392313694022445670347030705319164552170150291848012351937100953890036300105871e692"), + T("5.8469162943704389675386957200432422884983339114040809517125791843529698266123366406953460141383587627250027572569096847362363831549584856898467181999391413025165420386358087621054569033111477610047027055333381725754117391518041977019653549862107958916803866421362184761931585219445620128589637254918343555371393128431807715170682738452071618887807426604132681626154765999537959315476068213542621180322e769"), + T("5.5414008128666064583537076240692868933072418197965454555020420111392626928160330156411498052861994284073777041588578343924444729815070056061660603933966757946018263861283152733720240516173400789600385493382166372543010812180148374708916504088803663809915284719654025586373106511403877362732360653577732630088912763232117614936657631128626622480330571961457177097015572841013819523862056676302123590835e846"), + T("5.251849252298052001849336634596605624932615050587242126709230836437099642948552827155317681622985673796485738044339684860221300378963566030058095552267153924938244515158005499605803770525751057401451830019036344558051163875818942505974131107483204115256933385945743955379487500587051829522367096042702717218823641765552373631712919055254215952997997242218608413439149796128454371169305737207513128807e923"), + T("4.9774274592844840922553532523399895707687997944019016434779659339099599495175571066749191102647610895707050400315564576144486939330191822264020831239376081750240177080224855259905972322795436336044718080591030837173922087243357258882189147341298494439853073189728114774501846930002388008365636203966891211742478022416179489779372415512232819505675629656011956781715868427072593283654666589611808073581e1000"), + T("4.7173448669720462237188351865970295455238511572394280863649015756105641752582788447957398889951756658763666977964561080316844537247511176975067430907677318411628894592131659609314519705065696036773840172243882880973707032036317239517638220758446197062685014773982890420289865519060688689357420655259758455221621133987780001331686741987234669397265361446155200793231408284664030082289902730362397848561e1077"), + T("4.4708522175321623603760234543012160551233097542464376709898701080016161641305114803775155211008103406608130900779618211357983931505100150872036597773168012401952663951774811462178950982356754934520420952750636967336804589186617110996219414674248378823188434472686833719446877071963169624353004701806734777657062069056499506562750389037932975870328903604743080312421901044848764763554120280608069622747e1154"), + T("4.2372394036653119830098671356758800877704381245840070556972166015743494177406662087025674510726553612407773483679793826805395046830522912774907458645315666657109679555711516123219895337097780310478450990346378570451984628571968728862717021688464671183102216087482134582783233462788612276436433844843113340117661068800967697425945952185565756591509948286825746552902121339188076398953061591657510445066e1231"), + T("4.0158334228914400539745590178164794975437536606699818222034254004811114067672490994749378759633661049912208598371211928081486311385567301424145253923797915452955822482631387668888916584389521441919397036718125302432512547147127924813280974253855801042782701987819292329831163944563371019697555352578545825707188652122309957602602328073674784142564935616256457537057261596233390671696504290741500824325e1308"), + T("3.8059964387336281390030628447736918731950638905889859981670562575013579651080893378643261418615597248563793905721216409752849171768325689975193281668646707475626612103018049529414972031338274254587787676115938524624210494070325582923806604462125023016462957768718261849099968552115528194693187665051765401859680442459296615169707213689087378346661673375123735787731940984618937841286808679717684045601e1385"), + T("3.6071239432095959207430930181651037268769528665018877695729199475196601891740487861223796136712863819929038760151135883635004445484745979300525669576636222972289788167180919942439736319800034914890005316195880400774555618160525047519091232763877112549157224779431406160698065686340819410841933246641650269061746492965033484737240772388735312991521074123198706383278511433856343165625103198269467277045e1462"), + T("3.4186430153374545706606299190728926303831987493039531531525792716113836020659611610272471306951869724846396516471297290706571995664799809535296646907832639466194597092728987006624017784246439039721439649240230770188576832674257817653601012003365792748252816491311084472983584896236685446078049796997495088275235014482876422624572733765422511563417424717976734285541485840205576333292292629705898026712e1539"), + T("3.2400106706387356945670320428646200776993383104555861757828941469924476740373605793183477572742076241032829759659681490962141240145141581865097423924646660398220529435794134651336421615115538294144878610322957162996489151882559706577258950380659727211777291935939480320782190247511227788798308670601955093205987496538797636913777784465756466432434857195432171054628069149765836567108796606518876161411e1616"), + T("3.0707122968838686808762365976116630656317083977116234783051460697759202764413714416029446981398815846396774097846142086219585484898425128945637835965609311626781498745013601665202311991073858493014761614369526954113562966924343632898676526247434944353812116870344357416617678601015459053297989079589299509864871767253387806087559388044642587983434307487581273247444950986227978405821984630380335522999e1693"), + T("2.9102601715737304709407721855237845605215030467786367061140857045899101530013173126178764480141553804302726818509771061464761826116800985901969508353958187973711321043157119127861178260598364278447637770099918746816176840436194047559028684276346030463240065993810821297209992114976352565659256401456824943396501998104720348581392556524094012469848383344186510494751840542956622168648051127134605419049e1770"), + T("2.7581920568863607870027917438011158114732314795167030242749419621017647849448607372158405505948973604056597946655107017870542301435918693041804847351891423642078041222831042196395295270728440674479791111077414832394734353235316069842707878669474381815671796103458710433178002392178092638286037259141627485462419803958568427330260813821541600701534519737633707025577914995456788692103051108422425375408e1847"), + T("2.6140698680411010453416773970464335103997599275990557963505882402750774237538007727638017837647068698785550358186768104621786728298395959017968646659450681758854495815775051287976515457472752962763600118692278131638936053170621574407487878235430394106909122081064770622396768825200987517033934258510550698555707917420074884651382528854596786633229647900291304513978131386770725311082555006911467864447e1924"), + T("2.4774784112439194545961900234630392526964078574399033336208722389562768176981620423625796094049751937688183037372271145640392552111592856112971332411543527668988982189213357069766999642690629174087636518790443153236463649626796203655474042490645756106046469120382604539074502111722789325269571247140534108791736500356851939956197404652273603941323630209215720013693452205022518765760329070842616941046e2001"), + T("2.3480241875781374631691380066790792771892564869650825534762414159728147468382334513664061092463982019282596608230957530311211307328143974085747420399537158037724095218243991423228023444859379580883072434670530040478491744472651118485401814194033214517221050352934587398275852096346826910101105240186236412184656659382535831384647508927079089332738325920621748164698159861195345140124576533260099531818e2078"), + T("2.2253342593947512482894343051033346460553514685284868064761586762995307539088982139722858486639592417618934607300618026000707839555068686077050219383701773511012374743383996188227317471958686041947524249098686209176989223885354176417280209218097978029585985115430634192732411379059159347252165834440501107479076728537702323035968171445551276815488702844227415317075032577967598705531043548190902240163e2155"), + T("2.1090551759365936315455394763107180892546255311406814474807735913225599344136347904154067215849740466098616361782897296314219278981058583564722586146448606213894635847184726562609032113220295749441955633109205157660265084141265451792574855174504712050982199997333601700242161381263233947649564996752502282300661121812212460958677667464307539559824119716390823776389116062024328503582458296404661030724e2232"), + T("1.9988519551012253626665391606414160629542055458014061990042537070247177860439177457869686789999953426516957430680890680964654190474258046504015466343786427551666546734635351226235742257396796694133189981279578839780058454761985247524191011603418127443226153000194710273722264940047399226885184129896957721196752811974521300721776877014427959949663663916026486491804231252409445050163051004298903230857e2309"), + T("1.8944071184091717327769157288694214491666404740796335627119828665408788464610207014827128441011823347031833774554689560285831180446909490973719926278454999562091766786964617295311248054209296251829365565657637585794799613184943543642149302253502921625588487967178044987717063245419475512579228948005151251220172269440562559442067650076109382783512605616677262078725150593936302571039602645533145833688e2386"), + T("1.795419776397396870883759116489769402541419469341753006054859662887039319928613872577712647027984056309170986725948997439220662114370977055801553872855064859465160778064610757538797519726695741862251510315436821959386698539808251950372887792620010350735505164024826909107013909479283953771859666151170337965452357673457347076929518296009792647791360547551255623795595827532506478122285622521680723198e2463"), + T("1.7016047618031754086134654579111810617120348758710143771069305417445489516040399750813776000705885685499141312138983442910516360247333185628492894202543743484367527766696250509432364995620305699351629185845681107616307847503246334638085810705895758535310625200703209004562084637734409371699916561240290054446464424202718339701400783109986719573562903857763873129540597357986671423745013710023231651329e2540"), + T("1.6126918080411979609715701452747988352165611850041775296367567768434358897691585163763723200113910842065988232661477200356230494761269971912897846125539659247231849257562594838887825972384334125491030803473533770400171029646043156961751894914511918427584075989532586054167207076781379343029365612771751032986978351517889027305091647604463730801257161289620542661422918279902166096709193161081148394122e2617"), + T("1.5284247706072296906699846404669034984154826955667742337840818347648901587881658504557814138346370867446936528153779291440974222875392035177334798180491517730019043230270100162475021422595011732593995371616778833697035670363475607783524853038032682034425785665657694174408203262209215616997795015596310706005669556487099297258112136814894205842056567712320200105413268352722573109566950626278687930372e2694"), + T("1.4485608891653060012262662362934733670202669964729350005811103752638169264554793857733858200215714810347904907192143845165275567906538821978702789157309454852049290295796799965552485868312721404394594588565776908022341972957647259592625133676589615774282958675900831935353271514314162851566868342929429856058517618472279436082944777949290121160320329701032110206134281440294897812652040954276090507017e2771"), + T("1.3728700881926523987377787943233319240491435703774938014541289523016635231812897840380838214278403055812374826352836064462692100642008102237346834361992329341687329019897351648991658099511836287726680508579879561481258870568846143059698287552784017902374151003189575311983375350280503953688511659632273800604956059446835976326153862663879531247057664632472283459374059559730646129713043045914280036191e2848"), + T("1.3011343141675944177179012805391104090720749087989014559756238032895645009279901485614947480934542467295834329661576448972096487118616044389963400689819864304760083535444189376011062378910379399366999838002995455575533727570818112349042088887223540611741471886797668792340331999553880029276216552340520965077802458183989229739403020238639120027067012696404307310649637683517662985846874429681252694077e2925"), + T("1.233146907390998223699634116604196321303527338063194018635704429203476960154098702362306563055636743760637784824497167438582308977860508068061535923688719183483752799354995864650650838160287374006896203951016533958052684442079538436867039485265319300786722392487965089753674979550869797200905652353584841188368624722200329909417714522575076225901000950862809939580119622301038231535752640718531560503e3002"), + T("1.1687120066315563646851448403936869404385185807787910322183199726441909641701499694514314549503826524393274595370652625335780618101237045988306992211747149512692179708353068119406926898226236555424247858876734064642321276408994327805695378682350680381138120637976561992552983027128491109399057399204806734536960608717759169335403208815710861794231703278779715979117164411304050798514670593787652928186e3079"), + T("1.1076439848797935780459011708913459693873418501614440121893411516856155264044888921508915048116297777621412439748701311029558308262037962091076982761455032906089728939898793892875302522325111709336468475276025046431105649997619822361542676063571655376547693673809133715806114929084161165591159275087382589295164718676930405790416367425834825705001722880024431488182592089567213871253363437453881724614e3156"), + T("1.0497669145852869831822072985740561681644437400018209440593094671016875295492661221847443008152631201881081765740915849038613188076178075126640018128968505236614758225634907922757204588825919348747289334952559508285340900441213069663101271469490908846474748126491486153897933707558113462272399019590825684419149149971088390644736001969102418531930304048460671867178170486969430030044866749941411652221e3233"), + T("9.9491406083653158286834756917422021600764727853686312719802358420566982531788421914469238540915616504216223401740335370367923898274605089490332650511788075886198714135795808528419557141582217964579360685402741569208063074313253490838482414281367060197950065504143914001338572155467333984661503453898847902871372714795379743025547542723839248318892138759596907306100969830936341255021634987471789706941e3309"), + T("9.42927401023380446961314339401657458785389811652244742482194123119943160577946366372207045050095290781679375214307398843926493195734487944624333413228893399732976728321980799677091653454804065271499274601941255651159823827574140068157063214410760869314717732028275496245648005191215048930881016330693755275282258597115402181603925122663256538590166426964332556533036059527784227962722441198371434037e3386"), + T("8.9365716959828116465632229827533775010309573979010794366666818430433566556286774474031057786888009871925254918684981245088107384317036889752292156920146379694165987770273470926340201197874812456173862271880689137375502421735431888891334269040972307308842443051934967463204037988999112477683156448819368015441070611711599827182978835927951062291039453298334013800388495719125476482150507255562932471987e3463"), + T("8.4696142662483591182651710363149061965529671414187214114508986504580419620532836415592194561692587545892671733647852519586965260182156246891106882514113059675737245160959965677478337885852837584798963994305283509311992268344932659689149044725278268851178262071743625689593833327527427790889142934871390124497847187559769333723286181059355730422352609633594972880679988434632727829633392971196615348162e3540"), + T("8.0270564887074008992929481581600294386090831745459505539216873340458312207422342705431057237884163498424349206319209533661302797554406960728685696384646157216820308811030692783501496335637205341645641865876987704911724172887422201095488046489024482854111274279939733922390803256997868575641148291588995771500671739181954270612789001072297006035844811068998273723866529350060897658557177391069889428138e3617"), + T("7.6076234226710136997076519198854581037482480050087592375273646746765716709802670790534160394910843369630438334623933329715061433126854176918572680591852491900095968421410826840041652944667732505393218836407650478812322026068521739096553158504199794298343738853325452463396386800405102937609865179610358195390467842398985491405704400439203254032406556044023342935195219037071893174834506422022272020608e3694"), + T("7.2101067461769422102719046864935900042020946053983858930538783546380741670622477730299778929732944630854151363803543748221329578582604770541719603126349873057195532110292846743563791049380608460124840094825775295226949060515234109528775156283010154878061758953690404860422160965162770534213586973008276804840802176466270909812402590547626695704877606695620372290113893333718784454195491413120278571381e3771"), + T("6.833361275000419432343650592319686694062674227594429857464606108305032877344799885305123090652406787997867592503236607009836687444829395552541403634550659710745653974928907350064693400553697943529341780925791186120102910163514753761188563821153759960369188532092163964559115206212975793696371318151500479047238166891574507004736959512033943570963451048752039151427991562182278434585245918970979972925e3848"), + }}; + + T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + T val = boost::multiprecision::exp(boost::multiprecision::sqrt((pi * (100 * k)) * (100 * k))); + T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 1200); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 1cd7f695..0bd62a0f 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -138,35 +138,35 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF50 - test(); + test(); #endif #ifdef TEST_MPF - boost::math::mpf_real::default_precision(1000); + boost::multiprecision::mpf_real::default_precision(1000); /* - boost::math::mpf_real r; + boost::multiprecision::mpf_real r; r.precision(50); BOOST_TEST(r.precision() >= 50); */ - BOOST_TEST(boost::math::mpf_real::default_precision() == 1000); - test(); + BOOST_TEST(boost::multiprecision::mpf_real::default_precision() == 1000); + test(); #endif #ifdef TEST_MPZ - test(); + test(); #endif #ifdef TEST_MPQ - test(); + test(); #endif #ifdef TEST_E_FLOAT - test(); + test(); #endif #ifdef TEST_MPFR - test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); + test(); #endif return boost::report_errors(); } From e0309c8492113b36ba46c0d3cf9a75617c5dc6b6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 3 Oct 2011 17:03:28 +0000 Subject: [PATCH 030/256] More file renames to remove "big_" prefixes. [SVN r74670] --- .../{big_number_architypes.hpp => mp_number_architypes.hpp} | 0 include/boost/multiprecision/detail/default_ops.hpp | 2 +- .../detail/{big_number_base.hpp => mp_number_base.hpp} | 0 test/Jamfile.v2 | 2 +- ...big_number_concept_check.cpp => mp_number_concept_check.cpp} | 2 +- test/test_arithmetic.cpp | 2 +- test/test_exp.cpp | 2 +- test/test_numeric_limits.cpp | 2 +- 8 files changed, 6 insertions(+), 6 deletions(-) rename include/boost/multiprecision/concepts/{big_number_architypes.hpp => mp_number_architypes.hpp} (100%) rename include/boost/multiprecision/detail/{big_number_base.hpp => mp_number_base.hpp} (100%) rename test/{big_number_concept_check.cpp => mp_number_concept_check.cpp} (97%) diff --git a/include/boost/multiprecision/concepts/big_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp similarity index 100% rename from include/boost/multiprecision/concepts/big_number_architypes.hpp rename to include/boost/multiprecision/concepts/mp_number_architypes.hpp diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index da8780e8..58bc9637 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -7,7 +7,7 @@ #define BOOST_MATH_BIG_NUM_DEF_OPS #include -#include +#include #include #include #include diff --git a/include/boost/multiprecision/detail/big_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp similarity index 100% rename from include/boost/multiprecision/detail/big_number_base.hpp rename to include/boost/multiprecision/detail/mp_number_base.hpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 5e66e5bf..d36382c6 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -179,7 +179,7 @@ run test_numeric_limits.cpp $(E_FLOAT_SRC) [ check-target-builds ../config//has_e_float : : no ] : test_numeric_limits_e_float ; -run big_number_concept_check.cpp mpfr +run mp_number_concept_check.cpp mpfr : # command line : # input files : # requirements diff --git a/test/big_number_concept_check.cpp b/test/mp_number_concept_check.cpp similarity index 97% rename from test/big_number_concept_check.cpp rename to test/mp_number_concept_check.cpp index ec54755b..635e5de0 100644 --- a/test/big_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -42,7 +42,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_E_FLOAT #include diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 62405dad..d9eebcec 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -29,7 +29,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_E_FLOAT #include diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 14a3129a..5415448a 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_E_FLOAT #include diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 0bd62a0f..d378becd 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -28,7 +28,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_E_FLOAT #include From b8a60ca6caff5c2ca5779b2f7c65e6c50df1b585 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 3 Oct 2011 17:15:55 +0000 Subject: [PATCH 031/256] Rename "big_number*" to "mp_number*". [SVN r74671] --- .../concepts/mp_number_architypes.hpp | 84 +++++++++---------- .../multiprecision/detail/mp_number_base.hpp | 30 +++---- include/boost/multiprecision/mp_number.hpp | 36 ++++---- test/mp_number_concept_check.cpp | 4 +- test/test_arithmetic.cpp | 2 +- test/test_exp.cpp | 2 +- test/test_numeric_limits.cpp | 2 +- 7 files changed, 80 insertions(+), 80 deletions(-) diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index fbec67b3..032f78f7 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -23,52 +23,52 @@ namespace concepts{ #pragma warning(disable:4244) #endif -struct big_number_backend_real_architype +struct mp_number_backend_real_architype { typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; - big_number_backend_real_architype() + mp_number_backend_real_architype() { std::cout << "Default construct" << std::endl; } - big_number_backend_real_architype(const big_number_backend_real_architype& o) + mp_number_backend_real_architype(const mp_number_backend_real_architype& o) { std::cout << "Copy construct" << std::endl; m_value = o.m_value; } - big_number_backend_real_architype& operator = (const big_number_backend_real_architype& o) + mp_number_backend_real_architype& operator = (const mp_number_backend_real_architype& o) { m_value = o.m_value; std::cout << "Assignment (" << m_value << ")" << std::endl; return *this; } - big_number_backend_real_architype& operator = (boost::uintmax_t i) + mp_number_backend_real_architype& operator = (boost::uintmax_t i) { m_value = i; std::cout << "UInt Assignment (" << i << ")" << std::endl; return *this; } - big_number_backend_real_architype& operator = (boost::intmax_t i) + mp_number_backend_real_architype& operator = (boost::intmax_t i) { m_value = i; std::cout << "Int Assignment (" << i << ")" << std::endl; return *this; } - big_number_backend_real_architype& operator = (long double d) + mp_number_backend_real_architype& operator = (long double d) { m_value = d; std::cout << "long double Assignment (" << d << ")" << std::endl; return *this; } - big_number_backend_real_architype& operator = (const char* s) + mp_number_backend_real_architype& operator = (const char* s) { m_value = boost::lexical_cast(s); std::cout << "const char* Assignment (" << s << ")" << std::endl; return *this; } - void swap(big_number_backend_real_architype& o) + void swap(mp_number_backend_real_architype& o) { std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; std::swap(m_value, o.m_value); @@ -99,7 +99,7 @@ struct big_number_backend_real_architype std::cout << "Negating (" << m_value << ")" << std::endl; m_value = -m_value; } - int compare(const big_number_backend_real_architype& o)const + int compare(const mp_number_backend_real_architype& o)const { std::cout << "Comparison" << std::endl; return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); @@ -122,151 +122,151 @@ struct big_number_backend_real_architype long double m_value; }; -inline void add(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +inline void add(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) { std::cout << "Addition (" << result.m_value << " += " << o.m_value << ")" << std::endl; result.m_value += o.m_value; } -inline void subtract(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +inline void subtract(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) { std::cout << "Subtraction (" << result.m_value << " -= " << o.m_value << ")" << std::endl; result.m_value -= o.m_value; } -inline void multiply(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +inline void multiply(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) { std::cout << "Multiplication (" << result.m_value << " *= " << o.m_value << ")" << std::endl; result.m_value *= o.m_value; } -inline void divide(big_number_backend_real_architype& result, const big_number_backend_real_architype& o) +inline void divide(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) { std::cout << "Division (" << result.m_value << " /= " << o.m_value << ")" << std::endl; result.m_value /= o.m_value; } -inline void convert_to(boost::uintmax_t* result, const big_number_backend_real_architype& val) +inline void convert_to(boost::uintmax_t* result, const mp_number_backend_real_architype& val) { *result = static_cast(val.m_value); } -inline void convert_to(boost::intmax_t* result, const big_number_backend_real_architype& val) +inline void convert_to(boost::intmax_t* result, const mp_number_backend_real_architype& val) { *result = static_cast(val.m_value); } -inline void convert_to(long double* result, big_number_backend_real_architype& val) +inline void convert_to(long double* result, mp_number_backend_real_architype& val) { *result = val.m_value; } -inline void eval_frexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int* exp) +inline void eval_frexp(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg, int* exp) { result = std::frexp(arg.m_value, exp); } -inline void eval_ldexp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg, int exp) +inline void eval_ldexp(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg, int exp) { result = std::ldexp(arg.m_value, exp); } -inline void eval_floor(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_floor(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::floor(arg.m_value); } -inline void eval_ceil(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_ceil(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::ceil(arg.m_value); } -inline void eval_trunc(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_trunc(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = boost::math::trunc(arg.m_value); } -inline void eval_sqrt(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_sqrt(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::sqrt(arg.m_value); } -inline void eval_abs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_abs(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::abs(arg.m_value); } -inline void eval_fabs(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_fabs(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::fabs(arg.m_value); } -inline int eval_fpclassify(const big_number_backend_real_architype& arg) +inline int eval_fpclassify(const mp_number_backend_real_architype& arg) { return boost::math::fpclassify(arg.m_value); } -inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, const big_number_backend_real_architype& e) +inline void eval_pow(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& b, const mp_number_backend_real_architype& e) { result = std::pow(b.m_value, e.m_value); } -inline void eval_pow(big_number_backend_real_architype& result, const big_number_backend_real_architype& b, int e) +inline void eval_pow(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& b, int e) { result = std::pow(b.m_value, e); } -inline void eval_exp(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_exp(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::exp(arg.m_value); } -inline void eval_log(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_log(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::log(arg.m_value); } -inline void eval_sin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_sin(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::sin(arg.m_value); } -inline void eval_cos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_cos(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::cos(arg.m_value); } -inline void eval_tan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_tan(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::tan(arg.m_value); } -inline void eval_asin(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_asin(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::asin(arg.m_value); } -inline void eval_acos(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_acos(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::acos(arg.m_value); } -inline void eval_atan(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_atan(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::atan(arg.m_value); } -inline void eval_sinh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_sinh(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::sinh(arg.m_value); } -inline void eval_cosh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_cosh(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::cosh(arg.m_value); } -inline void eval_tanh(big_number_backend_real_architype& result, const big_number_backend_real_architype& arg) +inline void eval_tanh(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) { result = std::tanh(arg.m_value); } -typedef boost::multiprecision::mp_number big_number_real_architype; +typedef boost::multiprecision::mp_number mp_number_real_architype; }}} // namespaces @@ -277,10 +277,10 @@ namespace std{ #endif template <> -class numeric_limits : public std::numeric_limits +class numeric_limits : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::concepts::big_number_real_architype number_type; + typedef boost::multiprecision::concepts::mp_number_real_architype number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 6b85d7d4..39fd8500 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -137,13 +137,13 @@ struct backend_type > template -struct is_big_number : public mpl::false_{}; +struct is_mp_number : public mpl::false_{}; template -struct is_big_number > : public mpl::true_{}; +struct is_mp_number > : public mpl::true_{}; template -struct is_big_number_exp : public mpl::false_{}; +struct is_mp_number_exp : public mpl::false_{}; template -struct is_big_number_exp > : public mpl::true_{}; +struct is_mp_number_exp > : public mpl::true_{}; template struct combine_expression; @@ -187,25 +187,25 @@ struct unmentionable typedef void (*unmentionable_type)(); template -struct big_number_exp_storage +struct mp_exp_storage { typedef const T& type; }; template -struct big_number_exp_storage +struct mp_exp_storage { typedef T* type; }; template -struct big_number_exp_storage +struct mp_exp_storage { typedef const T* type; }; template -struct big_number_exp_storage > +struct mp_exp_storage > { typedef mp_exp type; }; @@ -233,7 +233,7 @@ struct mp_exp } private: - typename big_number_exp_storage::type arg; + typename mp_exp_storage::type arg; }; template @@ -255,7 +255,7 @@ struct mp_exp } private: - typename big_number_exp_storage::type arg; + typename mp_exp_storage::type arg; }; template @@ -286,8 +286,8 @@ struct mp_exp static const unsigned right_depth = right_type::depth + 1; static const unsigned depth = left_depth > right_depth ? left_depth : right_depth; private: - typename big_number_exp_storage::type arg1; - typename big_number_exp_storage::type arg2; + typename mp_exp_storage::type arg1; + typename mp_exp_storage::type arg2; }; template @@ -326,9 +326,9 @@ struct mp_exp static const unsigned right_depth = right_type::depth + 1; static const unsigned depth = left_depth > right_depth ? (left_depth > middle_depth ? left_depth : middle_depth) : (right_depth > middle_depth ? right_depth : middle_depth); private: - typename big_number_exp_storage::type arg1; - typename big_number_exp_storage::type arg2; - typename big_number_exp_storage::type arg3; + typename mp_exp_storage::type arg1; + typename mp_exp_storage::type arg2; + typename mp_exp_storage::type arg3; }; } // namespace detail diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 053d45a6..e54c85cb 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1384,37 +1384,37 @@ namespace detail { template -inline int big_number_compare(const mp_number& a, const mp_number& b) +inline int mp_number_compare(const mp_number& a, const mp_number& b) { return a.compare(b); } template -inline int big_number_compare(const mp_number& a, const mp_exp& b) +inline int mp_number_compare(const mp_number& a, const mp_exp& b) { return a.compare(mp_number(b)); } template -inline int big_number_compare(const mp_exp& a, const mp_number& b) +inline int mp_number_compare(const mp_exp& a, const mp_number& b) { return -b.compare(mp_number(a)); } template -inline int big_number_compare(const mp_number& a, const Val b) +inline int mp_number_compare(const mp_number& a, const Val b) { return a.compare(b); } template -inline int big_number_compare(const Val a, const mp_number& b) +inline int mp_number_compare(const Val a, const mp_number& b) { return -b.compare(a); } template -inline int big_number_compare(const mp_exp& a, const mp_exp& b) +inline int mp_number_compare(const mp_exp& a, const mp_exp& b) { typedef typename mp_exp::result_type real1; typedef typename mp_exp::result_type real2; @@ -1422,7 +1422,7 @@ inline int big_number_compare(const mp_exp& a, const mp_exp -inline typename enable_if, int>::type big_number_compare(const mp_exp& a, const Val b) +inline typename enable_if, int>::type mp_number_compare(const mp_exp& a, const Val b) { typedef typename mp_exp::result_type real; real t(a); @@ -1430,7 +1430,7 @@ inline typename enable_if, int>::type big_number_compare(cons } template -inline typename enable_if, int>::type big_number_compare(const Val a, const mp_exp& b) +inline typename enable_if, int>::type mp_number_compare(const Val a, const mp_exp& b) { typedef typename mp_exp::result_type real; return -real(b).compare(a); @@ -1440,12 +1440,12 @@ template struct is_valid_comparison_imp { typedef typename mpl::or_< - is_big_number, - is_big_number_exp + is_mp_number, + is_mp_number_exp >::type is1; typedef typename mpl::or_< - is_big_number, - is_big_number_exp + is_mp_number, + is_mp_number_exp >::type is2; typedef typename mpl::or_< mpl::and_< @@ -1475,42 +1475,42 @@ template inline typename boost::enable_if, bool>::type operator == (const Exp1& a, const Exp2& b) { - return 0 == detail::big_number_compare(a, b); + return 0 == detail::mp_number_compare(a, b); } template inline typename boost::enable_if, bool>::type operator != (const Exp1& a, const Exp2& b) { - return 0 != detail::big_number_compare(a, b); + return 0 != detail::mp_number_compare(a, b); } template inline typename boost::enable_if, bool>::type operator <= (const Exp1& a, const Exp2& b) { - return 0 >= detail::big_number_compare(a, b); + return 0 >= detail::mp_number_compare(a, b); } template inline typename boost::enable_if, bool>::type operator < (const Exp1& a, const Exp2& b) { - return 0 > detail::big_number_compare(a, b); + return 0 > detail::mp_number_compare(a, b); } template inline typename boost::enable_if, bool>::type operator >= (const Exp1& a, const Exp2& b) { - return 0 <= detail::big_number_compare(a, b); + return 0 <= detail::mp_number_compare(a, b); } template inline typename boost::enable_if, bool>::type operator > (const Exp1& a, const Exp2& b) { - return 0 < detail::big_number_compare(a, b); + return 0 < detail::mp_number_compare(a, b); } template diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 635e5de0..cc814372 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -57,7 +57,7 @@ void foo() { #ifdef TEST_BACKEND - instantiate(boost::multiprecision::big_number_real_architype()); + instantiate(boost::multiprecision::mp_number_real_architype()); #endif #ifdef TEST_MPF_50 instantiate(boost::multiprecision::mpf_real_50()); @@ -79,7 +79,7 @@ void foo() int main() { #ifdef TEST_BACKEND - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPF_50 BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index d9eebcec..2c837f26 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -859,7 +859,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF50 test(); diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 5415448a..592ae720 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -113,7 +113,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF50 test(); diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index d378becd..28c354c9 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -138,7 +138,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF50 test(); From 7be44c1683d0c3bbc6ce03d73921e21c2f6942ca Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 4 Oct 2011 16:46:25 +0000 Subject: [PATCH 032/256] Add log function and tests. [SVN r74700] --- config/Jamfile.v2 | 3 +- .../multiprecision/detail/functions/pow.hpp | 45 +++++ test/Jamfile.v2 | 7 + test/test_log.cpp | 181 ++++++++++++++++++ 4 files changed, 235 insertions(+), 1 deletion(-) create mode 100644 test/test_log.cpp diff --git a/config/Jamfile.v2 b/config/Jamfile.v2 index 832e2936..2aeacdc8 100644 --- a/config/Jamfile.v2 +++ b/config/Jamfile.v2 @@ -32,7 +32,7 @@ obj has_e_float : has_e_float.cpp : $(e_float_path) ; obj has_gmp : has_gmp.cpp : $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; obj has_mpfr : has_mpfr.cpp : - $(mpfr_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; + $(mpfr_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx $(gmp_path) ; explicit has_long_double_support ; explicit has_mpfr_class ; @@ -43,3 +43,4 @@ explicit has_gcc_visibility ; explicit has_e_float ; explicit has_gmp ; explicit has_mpfr ; + diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index de5b2b4e..63f6f223 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -241,3 +241,48 @@ void eval_exp(T& result, const T& x) result = exp_series; } +template +void eval_log(T& result, const T& arg) +{ + // + // We use a variation of http://dlmf.nist.gov/4.45#i + // using frexp to reduce the argument to x * 2^n, + // then let y = x - 1 and compute: + // log(x) = log(2) * n + log1p(1 + y) + // + if(&arg == &result) + { + T temp; + eval_log(temp, arg); + result = temp; + } + + typedef typename boost::multiprecision::detail::canonical::type long_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + + int e; + T t; + eval_frexp(t, arg, &e); + + multiply(result, get_constant_ln2(), long_type(e)); + subtract(t, ui_type(1)); /* -0.5 <= t <= 0 */ + t.negate(); /* 0 <= t <= 0.5 */ + T pow = t; + T lim; + T t2; + multiply(lim, result, std::numeric_limits >::epsilon().backend()); + if(get_sign(lim) < 0) + lim.negate(); + + subtract(result, t); + + ui_type k = 1; + do + { + ++k; + multiply(pow, t); + divide(t2, pow, k); + subtract(result, t2); + }while(lim.compare(t2) <= 0); +} + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index d36382c6..d3b86aee 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -195,3 +195,10 @@ run test_exp.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_exp_mpf50 ; +run test_log.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_log_mpf50 ; diff --git a/test/test_log.cpp b/test/test_log.cpp new file mode 100644 index 00000000..4139a059 --- /dev/null +++ b/test/test_log.cpp @@ -0,0 +1,181 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("-2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806"), + T("10.355073440919378699690477472036470469315794905372650461119520557405966250191554948388847794306923706128373152780234988638443954821327953543032075228882306893901540038156503265416950932549208174713640840670002321534598356631953006304821201484830902632165858733357596733427094375150860310219829690440417223992885533566388118595248523193740778052893647271700612136670114224280374211626787106078693643289"), + T("11.741365414719872359995630593475834957852130639032528348910839621576752378207582766840832626901446337859064321328454096088656817987112409176281442608184950888327275070356290649885618053367245169005379545357345645235094776018156840041023694466493107510640907700621694994008944652785168884717808235919056023540605910031676977750466679901495978099025342154131430098841939052890393197699093697421676686108"), + T("12.552295188839391064403078983058501313786961042419051509346988474726615643710688192053158471717695991904853941837387256340073310064341282022830248452137946273986542713154937759697687656073485311102053666502633006429446632794099471395918827441203897096147814416727830805903830888831170139661499031930347916453836121200110772307492771615813954882033814741470466415076136175748560866462690250372712624427"), + T("13.12765917900902322346243585913156826327069465639834188399662474212182724479008698347907678965083909936781641397385483495362268256360763444317213586059490467781653518008717313901614800566992248144716374322429987750723867821114358979404591879648104388637035609754399283274014767545593886580941165664957384975221949645055255781874944374229417864853289321901220692566918330756199433299461690335766708584"), + T("13.573946210017730027239177097297058651455670148127333215055495986565964988037166389618503523561570994165268599045375753512400565200059790703280760252213714757212213525833556727462647729566258301490115414864748436290794191111843775262434063842232241185107471214859854864335150887423144285468856056851239653315249148749701603523173627966758652109489308872414194066451074827802642589890222384815709071028"), + T("13.938589284701101831675037903832444894846690407420628610481163937380536465305805316181768586604603341197033655576371082304146219991693253987043452241307224478718013872459287813264283001906622959681872321576087143975972033651747378310838673897181549722528073649569290162541997276292708638316653324605571398691171391912961431088832002969546541039753774950645926800096854799942237644831671997679785482847"), + T("14.246890620897408672445451566098178524763429935510610216690355229695078778430708804421870639655370744549370273426124295240527401708361100923871708589722651960428863955835558634640426846383161118062310502176054546468600516588908689567134867002953229862887953032595529925511011383644740837050282379317993152702704798000312156694502691021267028423979454580574052732764336948692001989411724963233511159783"), + T("14.51395339092117324610526432755496036199337959182144260442491096061930765841595850793460014941610881052330595683873016973224744403781498772061971443926277312865243350174522677227134957935047605429941424114476598970997223505479765426888886686275495180653025817201214478249415383537946915840293549927935267010481189550187682053892807264533011114305883442850485847010726074555176479027986850883182954118"), + T("14.749519451795537716462643672888549370666057639128212044001868590062813335472483708120056955187220713486931180221186191741860718823347399129280491176499608998857949407351247432513825095161942372289203657231256344909997480732110798704027258108845584594081552703009126596026870753341888414903979390651641367952487019992866762344920748102417282166652161104367292712971759633790964534907923779335451109079"), + T("14.960240475644662390024535772058360495972689995692264619118050620984863397335883147741001175137837088856196207660064061839685086120444324885420172384357780225067863432546453923434326358834374021700709153791633034800554630092122384413882780201869241166113270104158152592921242256738530713688528178980864650875690860545577283508963373084295388766350046816560200649161822618828666606722223620871032632611"), + T("15.150860829728925816270269964092673433542841210964830162793225770535551518840933315190406262273098573795238063523955485390896001670839635976377071048140363687808579387495186737492639543519534774851635101169579614712607935494886581440494071142193798729857001548284675533558490478467589884332536443679208006567281631805562767928329937083844501800478013385969649342207304490375728237042482944784544838254"), + T("15.324883579506436493570233597448883519693351814374549397498489035148221882270042436654099306811313261346823941672888447313628931256927773946985727814886420570056552118783468127543676769633344136209500636666830026098080195180498059221494203817961212365532443050015541947762494604799890429565189588245725920948145579035449699519788465993549043152027361890729572024195346130030456992216388648768722394836"), + T("15.484968991583560712862164152602532972505596882865402498065644250737301955125596006515274461619204302558285733320299957799185995441209009451408808376560872924206710117585718578727591708553957297729203457443101522435265312291388453827953066056871634785359329503731609907767433693085428240202927311226115616775436485821324503901092891486358733365244513748729928672060637178808283856096451123227237766837"), + T("15.633184933296400322886411216914351313442169047575854720677392808712745585778888867637029115450088924031428350724038141381219620588274493330817678181565157141965018413952386880843987389414299029950277357119925470077396582940505069596480801954154029286187951921181728705116872415271634077604874063371227144842898712603028462623610688275714711124501733417572553751110494225479183571648948845731888607993"), + T("15.771170674177108994750017157264759379388540187789301748807798065200414118407271774235601089093934343495795521812477515931432709195503245641975701807702026215615357450518151317247119115864533992757135781852491298348627270712291588580073932563653614422839620206266586292520948221873093053975823776289996754936187304352159896156876771015468496811587576227636095095473566772184717633945339405330371627545"), + T("15.900247714739125237305645451417508966665591345786220672552302840334525160137723176098165167253830541655084109190400464710649206788771240950251243759258268060695212680017248831015574286848979270728739089100870231114250075432989803029255029492399141798408644860336753530942734586654467728627658977642688053752033223720047083446705808444218983029996407752310091763448795485193086044050699179075227514085"), + T("16.021496956952197922992283502641894579962626483154818954043789565712934054541190510263229676242727892630672492409948339732534439120465067507199758379167701667321617794907607307728874859663168072318224068053703928672394393376652024298292046951118253912008558176064907492479298408285769067404165601995001682495873893492451380569168665052480684672167775365328449822100602627386235888117607629689989295358"), + T("16.135813783442291449575041100809653925479234724736343542177079039059170241908162244448865517513646317913575323823536275208044355623776985732503939829900060864487127004364547143183319169525031486430688761890355067541570726092642869160866842639424318480923069734468346837396224375681293323049896437786794370196393419740684520457519876260717581058279975484300455393801884203407282602155622048760192869731"), + T("16.243948224975912162101874242338089698927747514172297963501304802721456885123447742525917146000081948350317670558217990170315910524955950657647628011646020228669505156094231753926456488583104510177838897523717492728937537629972877557426292386450904986250829454391823373783104867874948543639133365724217397301073161382317429508046689262594057712721480553629716238053162259132557499326959178271755311819"), + T("16.346534812891312020017737390565972522861639520956794183631801030677318559517349930264816297286373068267542772472219372292428845683416042271115312027071601889325060155482892443418582095080544516697369324049179348198348320350032057951783059238791085449471373733253488008998200818236407442435705194113745206455080467406424910471012832247972967952311217374959559350158619575075500673005632848486334892081"), + T("16.444115140490340128500589643685615592593325439192231430163649023292793816677629077048173396104592590442505550803932707806677495894373323443853064668488945973357469342360809555842080876327526869093152265593359032627507962690981132695345232937664935403696772586286371082469152648334224734697834132478315542287352614722743239776066558016553826776123247656549922477370984130115175375533899599151832866777"), + T("16.537155171118865136534989063582757364253199496897225305411818162632163606557745471767961160436879104964882723479325928591604518246962419687548390063992529356693298596378658322800277364077966826234091623459656551097008920549618056923279473982070326894236928331513682937597704431571923632859325944958271156630648510192786810276479282782233678225160061893949554276261365074478039201200141096034185340788"), + T("16.626058695701082390621404187251773798561764113151150041596109882112467488919141098521165822165293765039118029510544981683905860141438867442019067534265891760023149100317968826679154566584457042877767867250357368225093921585968539417839705388349710086788853906351301543791493808667435475597486845630653110450254081800953162013336880338884388603160347478448669890791767227275369657780841518987171046251"), + T("16.711177924047687436041681081297469757517395732698719962499711839818824068470368594816509809165130772248099176990649818696451892735033114399817499272685517472929769530848678764490613732856699010061350335113220658748043901782349324603111802594973838523650919828685995473213566914734286172266839140529583990377667556754261878256224596588519392559788652514828861263680954096492024398529162625680677258884"), + T("16.792821912654942574589969785414406627855177803111176492774370259331640542125643510644899208865670120639893723574191986313708664152776559897034386961403215067476041927571306948209653637016541256814370701598681758297129259567548154765775910932763810160923332344469835976310776610418278334876476195529920021337399751846302536974621623453741347064741080510495703994896565552519309503521053051550623483165"), + T("16.871263338577273117049933407315211807184894736082799946337588399915643695388836578819581481279897851015095335198849942961931601540668917787952832251688896660707943869197097893837964754891796695592066084995854170120209827918603483811654385230282025426754327077293929504883381435192439219366582495078959939830875435944938000044089717015334115741229281828493468876793032191535756728196375330663180727281"), + T("16.946743994200631806033476403925371852051109645526740171061759524387799979304956484613870531865187139791227191840781754383935422487885452369507952721547705027535773654885832127821314459521240798742974634464887793874048016231828535132695506414037947185201173465247385982934992490469404967587724592554548395276895353595409898385619478502390678687463962622836411208115179925881515699871702165077675857036"), + T("17.019479282236065828727803356580529388797042464710975507911282243104151862598751845439937481303609237769338953879291798328663979939210753132559510492288100384177867237190989151135211416672909332732482371326996189543048703303285313799031214641216166381411885795576234361808712082618702464622338883787915216150436372783047860816587095332458688921705641277515576461385290501276378977328383137813013202605"), + T("17.089661921583428533920885090473894674921519340994685086552627218992626938319872359613748323826158856027837200411438668460410538403836237956276065714403575420148736981655027235218177614075251822388622713232585428029969533906061654341819894513492491624632974192525592636008127939368987600981961744622054023981036109865947530952316809705151315101400446930619393266624895135955182323721805890693892489067"), + T("17.157465024686670167940702199808038440453826682770881229464136716214305217066325160993039686330328188786987064692354236198505670650108871009195717920051441546822338399371747349503874711833721760676087218038457960626001087951737722106836691584985009357268276351001658789309901363541541142239028890280836555429745898638761562947010206765922958485242984359891337645169887782296197402533921841201821435322"), + T("17.223044670108153088406971612680579462250390145455205711423224535559905829397735171751863831903325186673310251936245608147861310604382786127429364616442074955520795624793164764110780962566943990430036624945190166480864873260501647262851147587875798742974124100786387378932173276365815649310057053480347330487890156980245097594505867694166591312545929965230291418670445516669557156689966248314016354044"), + T("17.286542066533530981819924644041556546839394128235306235416269038138274222049809140847092268150839206354707638710275634022335650694777681817694798501418812448888688173373947001904190184008892957674606496333161081431327984331509197841574297574788702287443502123119313877415278877304866456565176360773848651195816021879148876985173267277031263646152871873014441183590471141901167533828621963866651938359"), + T("17.348085383681499172852340212837946913681349503319833895379599364916346996678774115472356552172467728498192423708290186696353892633802275272186862935888864564436104200250553583802585096479988444811879111645109656880728153108808638274341978968354895482288870990505393394330150686285205409461910256828313237800771316014620729111128197408712519655232673726993167731090657784157432284844410962540306871812"), + T("17.407791309811451413991402934776587727274692304168979758129844486195147501475844430031581045491342304862802756719012802717759227086944920237646742600183730387935914237410099970497154963215669635477250725760034883360834134873909027143784365748082991457136260982918509631214089379283854791699127985575276751950639814381413022404340898037317031344649130788109442934133748721229332612763230675387867060167"), + T("17.465766383402858316731575043043871754932551869660069657366289253587674381952187793692876332186097637634087898052217367730831337525450143144735163993701984235559102178727289467801811444923511321849112339058962832869205150513708620081533545907748750224381419445198858131583714181742840318906599828122743306582674187117835956409356596804579817623463035229848008072471150460106195548408352347746742847561"), + T("17.522108137193897711249955720342223562404817078270264273905715197834637314555104238731504974899534359198079882854402652102198388084110484760619705504323190957788898675675472299192322756141627162323541713415099172067523105704142354142286507565791349450889277448545966302507723270185283899864397011417078910276215036241179611950839739662625626455044878609357243901835302874736030320059872773022839076998"), + T("17.576906085439158795399613853863097303860835367703382634217979275105020336999327656009595436350031662565840865227976662242781789960872250051998481804897622287887086985238091438506085053631982050247194140738539987379268409303934286420729479452837709138518786355198810012076646196653084861659638299340083440855659993917810136693887499673110592919880225890667600561450738971059427382635508450091570097859"), + T("17.630242579482716539323837128846626753956194314343736063283695118187974605321998609676585457221722093540967455603842712855190915316171267768551204188316976169082878976713161041600921069589708836776259260899700342542761959107817464710887483018031112156977258240064220687983570300417350906046032596793701224117336432612122346984445322343505811317200044404325245524587348610225714892960184376194438742903"), + T("17.682193552177642930469311075041540632454794315173833851548924954045201903733019976720709429894183669091622069055829864963447674638381460850277690319942206492046322144914184638283615681017449686491773099947404077379395563267125512703092895031616346899622091168324459335139948282486097513426616067084251033517363717148785943762510534333490466778398817865864252996839848563898275763467374270388303474531"), + T("17.732829168042892302590066897013224260526349617442757064898532827287653373154374250085440081248759495538523122114463120786358068331952209807684385821625688206899889794184992102701935895298679767555036775735985597715341448247873700759325978422207409167388561946150223833135803435044691082980471455256218231653367433009869225710546713847446382266908465706428817510556416763430212167661925983678317689559"), + T("17.782214393127773091907390576928321922818609345162469668288248606737448584265787291899115365824350981071781548351963523796289812496283393676088371363622146243894946956855177324929267339605228930435844698103907214217720043808120931206339233299438914243909015437719067832873971853535761149326746352476616918607787268605165583917095714007024394600276277913067861955743579281638075879563801550521361400101"), + T("17.830409496196797333256263738087407756305793204876426547866274663003566432384680240879632999625725708300091127739268764655234592101254713785942646078437589939733647676861210608435791914827456291767449764007558390614584486670558546409061408823289149666666818024559557140308187730981247373784664587280435856629009596287509432264978977660915985852234235063815941899607957940727152099219426925372856581083"), + T("17.877470490934232288852811743259662703350866532641876235327240424382634438025700311951299570329496669487738366928514133455422447732866797861412283887178678146519925852345567722230587799483201967913067391020608007825990349366451164476805546339769760220805534987675878347990806759564468339408725207557557011408435539499579334714364702076041798486860978860009676392441269681660376828431489832998763783258"), + T("17.923449527306267869903426070004616586122783729793624019886904269965872168854615384174781325332961537402467089754136043237824345234828497017675462013908498436584882632257634259557543282397560432131425953734774375224901224027834174376390115551172850840545446370919691863863162138436779349056977625063368614038926314141157758995633570593909444840439875814859101692914284555504462737973961801589348562421"), + T("17.968395238938123096275003449517382823058653367901994410453731720353712579214128295617333869516953666517153266184450063833611730223713367177888956257642697863674682557764474491249664869634869467450632518845976225157445436929203774807794710993549169067538180609230496568688211520386012533845072853251411123534511690847284034061828924979836346301147669327210040586682352268581578885354613616677879192008"), + T("18.012353052308072938755867264876761138384940766536728123219303502872235608220456049765985905816906980541771912193578395286636524639567005562096644259687421270993689984646487799760867557580378976263785987858028882916593402367582926712749625025395229096162602944095765767003293442756802839571379406129666952518296572179431801499117577022831811590456125422748646995266409456422225586206021840322692382857"), + T("18.055365462686668331727160748231009519565746647193730385530909331597852334952578425145279427250887034166658709337134491235522678908221793937220809954557808901763389178392831492051282059480629151432246720826269576988663211852119754955967569929315382922357289706041278636253185833298598511399638105081736687620508948263244525471222947804257016135464845038301780535378180021273347494295813215232102999649"), + T("18.097472281022918092839876166164329437973263728374666387409900363304423095913608188979786368122872685324785740303523457754035383735336598870745063200445496969465305638435393742921093080855121166597064087151732410717510776813994536867846471600876935467557239720329955864393503091522335217308468551898804050931884864074974187930869095426636541733964836470414482229854405996155347764481217202728996408614"), + T("18.138710855372574931023279730094645378686287349356676919424498204049762635832652703081045863264164065707461503608812437952726945167389204858679677978907656542126675434222486013764292798698974541262372833651362936600851261171024940667498778746253799866490414715539561648775214507198558445051277115507846030240001071535504590488750762226492938922487331198045407471864288427126708589240674067562104543957"), + T("18.179116269955114571377487963612019905652085216126618591531831326851631273535837433851652060806307371522002942828348086254592323263632131183438294055667010855067061587674644272103122258118876651912890486407250279668447142712674562099014392095571206458285314302909409592642841502932705416119595372330139185232535836986175505626716905102551635720868328845059106716603941432470493828723765413424721976223"), + T("18.218721524498032554193215680552580137491683034589488437319060302272592206508827557611431375182704552154497537575444766904464774327453349109721410510507102426285778233008253433639863695380913463970388673098705619991229471182831382051550803100625573309055088036785775202381313835883262855970305798706681563291905495590616431781211404743717763365778127660253455212146746026811363929209719531660648504082"), + T("18.25755769616561915104320634671335949819923250838247367135480870103002754055972575277617781066800125225275977232426410882766773084485826986957597205108505829168630501177398318211279559799848433615486396320080576991739828304477785924273653352846964138446264644904849824507615174857436913763769835408524950658917536946876135419383532210821743200063786350760207420579200676223678007228393958258720083932"), + T("18.295654086063005239961930900603578763176327716162022442528659338478895027684612801134718048445578078864512023650622689532231640803798279071247213212940626166721703242773412064293396910008891332614727995930235839898502680907757808722725076622433926254807390507349193089487065273859422711581690536923283818694448490391002663699373577479984089586448960986922914070154319198856799480586814831572660049059"), + T("18.333038352045729366070360053860247416881993539906325936417001019639836810235521744851872438194534698737793818113182566661284551265375926400252096198917463166081789346386579278436021220544269108158036360716265068681920333271695665204550361645092770414267870574761534021576748772414710332296686656677922105572480136623006540318287771752403257225484193416375374630295739694584359181669584822144217946089"), + T("18.369736629342788833545154829965612197972030184654204521583836723612431388284128470120361520079152081604731214550025504583810749093225662462708297813392905679444268263153178673045591535099590243771860299493196201337328463166245762316637806913270164277457975112426005180292583426915918675383435395598215385153247994877265654873384456838948090969392401887506081626510459117637684719849016393221041720966"), + T("18.405773640310900146133080088261946202976690317466294344672811637024889157611521518848738302063682147953709444704912322724498748005402509152494514057803322060491136048741666988817114427555111210963923209356023892097003244960804568051496345885676927757469123572277620624446804627512970828422692616021227425852662243212443997074981005547833762050079432581680067106949297497692327125068990077901522226957"), + T("18.441172794474399698182030074721740031645602552534420544604120821167467838337449892992771747357276011553142091110875268371883702350672621604391781630952792517951394285585851496086739721764180588422789463043949353454011941863375479066641639870318143091000764755109263681792932398864353035859720611512874738125344871434992639512151401272538083058455878170262156351968871089395179837425273523581266914745"), + T("18.47595627986464597709414934346663732189241252367556916529377819718435871713823800089497791390570676646849082185155969226893554048129639509679051447135722658187695404706235925157146425104283059827944524324932672824661552843990966903508121362067629390223781365207266998003720499319458536728358620338853555386727837290179454339519141841532839938596761951045619471589862830891354308681626977577420483375"), + T("18.510145146551442627414905806735913567003712650812295077443330836708330498077617580007887630002806998527489958357928811323358164284670780912045286972377274734553167811143903532773133805470585887337986897779623231393980154689146471547983633489101760043708991315746940120025902341173853793429617026275691215584867628750464940410772709161351434979639911956946479201132978330304672548030931942250342827294"), + T("18.54375938315397840777373858913955248239941847920328667581513228848814216209238117867823746808674105485439472281080229047484288277191323337476914908731578203036561093352990739771860442165984753982600021729206737097284114048195126812337180690412756158211962923840645830361425158816448002373708570542607328640280411811505735178290827333249222248570577590327817428193141575383830773736064963674654660788"), + T("18.576817987027647186937851258336640937668818840595786321214115700990580993937301728456982569596955182509352640277092493549853424411966677818012248002654715239100874590037738307469713048325570874520232570867464224788639656453937494219294174471955373301736672685268384577575584576576899158917424074434177408506824723823546414342198182263466224674661649356568188397290822447447185825387180657594093708751"), + T("18.609339028743835443520046961477709286939310853034399826433866146117641838882532805452792636721283076369348347017617290496488517658040508081002292362699460963188796636919359563770588812590411785597112719721757265655201721601867128800954165396591923271771796713301912904158675092529178443570927414653982088273331584295588174225100793199329706639345162173054259175639620324704962515101988919574683797276"), + T("18.641339711410638424722499047013449967887089663871032284600678326435618587023360889502435665997102476809993062067289899429492640057255987173558009597289702007868879986681400023832856533473923548707096670227832737339287908558274044368146372966754230837592655179154123960009424338853507410779228164259856997555111697864450713171508666161000757176178710802248263025585993364498172063037657704404452535503"), + T("18.672836425322050368486113163967894536152542145032787472779137579977190277914128508177973702344749215422866489255932015284354044054928123475206880037062819389112504714106095639732288437854189846017324055713142277768438434138800721340366655917386856186887417022606078557020556496094324427190459240576788558291551699271849591355480496655647717244614207638067307680084952591605729876523430439516165337322"), + T("18.703844798370253311556748128890196309240890383998201893987314003630502067675284072677315790931434159739316058047067634433988116165753705089479010402482501330164866808933095532965233351834719435836698735379881853925522288987702030512098787246242665060494288818182785084700362957305908534097737840396555283267034806128689898134337131513408714563437722088348519474128730338455257510535561818243515295123"), + T("18.734379742609172948695846511449581634565683544125106511957075355113091757584835040550323433523983103087395353257534872811737536865777209110758107808331702363999663358869296693765232701087487872606287651215678117982769333263424530048349886338191672000649776344735688777038908317935895545479771750928675097454702913124841960320021274672197296187088995346243239131294305233657221950357770047779041168948"), + T("18.764455497316603659697964676682244441947566581055018250974850982088974686459881812049067093753928158863642280317022246479491132048354932411165733919156970301233277913734990931824860100667882748928084034147822613522025142522120240087012670818451468498896073922908905983528384054249374818979283244638542138214163225714979901542761366770616662189716515808719831023436094002277345660650710470976214503432"), + T("18.794085668866182740204823781307373749785233327862921970091261536522099678420128101122831261188800902247301052497120590553831148856384993334702795779266689462427228385943774192181671843132138022659399715350825905060669445319905454600530058604054055511420322690455781203696250448217551628254838303648547201462249630753150471851402187751539728462449395082445265630322991793425964521071134426892761087686"), + T("18.82328326768867946516209716586995768024335839807194833176766112965627616145648993732694510000805245875257813926012495009414082293067923695618654400188454857448056930551075037023425200611189368317293241290052197494133870263300149851324237139757643613913686228545143709137199633423670636305032456696459165988858650794045361585281861601603030153235699981659298052458840307661288883784791255308752353561"), + T("18.852060742573912900871064645288864648159675216435305629278797553184221367993840166607573470069267053513735624040087819326415506386854437946403720812228284865900153407303755694944652909440890918000505344963394853809579466102995490946923404655914747241389209313457700354163158136320973199396402856713949800424774426208733366034958384913000571799639761622099679737940788622933241370717844146251711932128"), + T("18.880430012539655701065719740012642650514689061888847292472446317260576484360479108374318422256748212928421929786176000015552730066213309405093412502424231235041703778572229968621812094224953783751727048234887878221529796434400738059144871066371011576734445290684672478932371976691435646196856591582073749970279840730554499319160664075936135140351358832332481792115613668240634181554442075595951874232"), + T("18.908402496471717232311467781165733233171140941896760455553034330908971709296619686804159498334964006649119069488646486948675866965781697617293443993292894960273992948681816600748607581132058645469709895004815813032481899164996133398853203604094641445335770040577643758444125343960451089873183667195183097301272165939070294009329717796749663916249651314647264543061678516229808974080105230884519025421"), + T("18.935989140719681524355183827184271883117018713616424044375161718824065979531438908152091359516789236304421957752893530968312896089478807820652680723918795442056690234785900341761515097938048245785367391810983836804772037480360220145546699221066508593371664219887047644628393373836620900288539062774663891696384999640649150431067240627749142322666676970274474792135970231868616050929898319819448939034"), + T("18.963200444815204167404888798469665227431788358892299847438551435971105813566329353339851076750530262901184430318825907802984559086828099838800823075902608236275943927671387049630228757166718632225359114181378374769186216486342164672374303171089906235756037703334480067642792992542669516647312965086899057259968955796081732571906843773036664256360263051447703790357359429377002031207739864979999279347"), + T("18.990046485464088033353325238570094871523592746407402454864447659438418650897352188003827603659585905257296788261872980663015351591030286798753545075312871886708540373690732957230479307213846083134185408782477823043603415914158563765104431367119681516469558190435321626296408405773925785846797696565762444462069369032104851518168840362055319574446706630124442642806832354006488607879109906061011225994"), + T("19.016536938949335590921908878972071081608578803308502271146163132935001206102423418117835863551157682291011036313549071538079474102791095379250735204641651869626255407971202952320707788423726057706822543117840676308428340234652209177652929619836857962138281947043694787969753375808877555756525156889419987622193160096718082756877689454214937644538436622120458515758071395625444960838247998451767464267"), + T("19.042681102069820040323211057777714109150558076228575985448688497208727928412122242888431932498284067180966108960090928128416538326586163291672353531766027111567123306015724614143020205136706498507055346813817986209642505418179828757157587146552894936306186818734849750397304488535715134906592464324381660408650130874094490704788761416060096501351661608424222204094369103147551037672603814369634649173"), + T("19.068487911727958175697030382906549671323284692477975980792892280404995909757933182996822232452584791269433004172376138676679805214029937405307084300414313959313789831600985178255638111559270519906326622715617717964168412002699242926437873012736620082535900009120622005729068876661407020205549742970102634687260159098231611555026386636952356914915597529253373429394903680674472796958663494038067669179"), + T("19.093965963269656159901801532857652686731313095114787279282350143184060615248880952958892345276101741792959203039945279273255821413683057071718873479055914318955623580559627285483449590741119271240498698177664589148961791164562328382134513604070535948997556425774535241433839196056647337630745324677877037589790564832932809741759428622931327986353687891898499439791429917840804474313864245639140963876"), + T("19.119123527670705331793258647026174473061813878914781070641605073424527485626683566355878191198143709838509389044950724156590593262994411423265514055870555330957166471517671117689943118929441254707396532385048466111853801352620946858612646592880180562600210076019427990165200479741063391057955342589569972650353707736819649707138135073772494722116787681314798945037658461538374603477221825614061123586"), + T("19.143968567655614969812922707872905228504499895574401195919290684664632292543319151929670686365568982588326143748358606442800755409560708661213139514248609009613770051771501624762852458893105259920477327438788243371302722213272226600736522283567127277667156871770413468147870394343816746792945999572244176333552811712447483231232773171106511438260175071145300046115843401710072061507331123043607901766"), + T("19.168508752827482780609154136923082745746771414212427034681109262302000645968087085215520638009496537393752178754873475983837687377025695010556483691979309217953419255985001727184619660158435191823702770674175581797631578786818852604111682506864006199186805540809913091091561814668081471402749434233431033452441548505582706019452955567976154397574205270457372773342241946969622998755580434262211071558"), + T("19.192751473880834042563713562225153433521577940186973776803866639536641104273721851582869330116346851241224039623128541122821371810756925681002641212419779923811384320279466454221232217629041792882431116499214977303106306157966687858071257893713340199820635963233697984370035461108601863346164084264967404520613456100656965925875472210769471793070984755357524002396981276686789870757739219539841324669"), + T("19.216703855963329593992083348877341510356872855419154524286060224198192164950344042194924570763041352943159776496534086655621090662648765929073480563926604513272233491262353914647091955902924297702861031248271549558718609763974479507490837350364617085882753391176792131259310397149374028556893735115741447201974608383790314541221313482249282941830681505989160209022143487123591182161037084387107577471"), + T("19.240372771246783136336288622974117018573581443774444767997147210768023102387819846722491865244820295698055584478151667485670300985795814036287612086238394489310685917822308982062485897587424683040075624404469719368214374255580054164790522993745386564072906888203344350441788631572056395846260169628655731587443716443908470481602481327796867951175756539602824534024677208143458306390998693538144276002"), + T("19.263764850762979509196317705761686108092922892356892210254799469999751475179529646750512177469718303426094538082717842694993912366018532429385996195100165328675330327321101942399890523238950583083919577089467043577581159099371618262297126999910295820866611740582812686480215151994304295620401944519281853807987442610790122820927006439539980791908595120476521299636624843377591628005484740938263373595"), + T("19.286886495555294522450851525927489255646333848651043717882790718796769943763203547772413744395083720600670009266257171342692898145198064660758379840502214228374875168690401725272168814130387964227940171355345107459707413634435078254467165459318134413588306046635342334572072865760417877208230914828250259039270224031775041480686581149991980042698893384296012208438178584526032640636530664689171174514"), + T("19.309743887193036513569909003754932688390195189494409126081957694707453295769725463252527373922995550848707616892717734716346726926003376949988744940329952938435722400261306789658518736487435455592323288866363564460056999876237001095092480820045715217327131479089102764865100373961878408215166685028270522348153253852064527393390794401890890932406298166622224431486187051653736399833197687524233000392"), + T("19.332342997691718269365647851051829244300572144237799985690236148794296859647334840581772744190077146167636205171422529047782401411481872480699008041273574144705390909628455554205882856537701103044535844002047328262877230706418721410147702147287802942241134713881576962004492246225067150128745210304021219616585555420191917418786300056829952680702638022710700076784220324428140020802898115083347702904"), + T("19.354689598879088211883278917315015191222443867565368209411861608347893184500809153071123456883339348988675265028178228103174790923741638364554293709103213239495123865898742141584076941660965692453426480770865774436380303703020587851939728834028918714275983773159730132531253761589283704592841895713231304417993106469276962707965968679020792759185611101812841427933459395519877074670185732532077876915"), + T("19.376789271243668798743209719830951710660724013826759987563467708214368337563307069810449676142525612003499201086112645501159094078378318648014400550345870757023544381773094826620272453238529286555419097429861755219673554476395943490245768513403194721941361801918811127988057063915654267554707302094460700078255016831241731287084620030531370389406858605301314913503432729894455360413554796057743624785"), + T("19.398647412299738536733101983020344760416543000933452586938357216391679714568872063480206587627849607725892049860100424409512218327903976557192129920072602449053963631370720893361294311430877864798057636106390383386608343478253049758287190639090148001663846660919016228401517981946486814580501445191763231914170223651871543954569563229752867364010807484149328122287932691728836607206296504503654291916"), + T("19.420269244500125639443026886412358511499173347101740173789245348545649777799992933455717128782979425999232096035698012165274922488616903998818326535687811364645463339885951676665882203155018792792505473796600843314336576346118972683035247786115152970665197263535031125663311669153219106967873840911780618890220192918885584791820817380351857621444438732170662912318105800373867459654881916254806601924"), + T("19.441659822725832764853886827062860938003360575287073851586808019473777348197590834815623551815029267586554639358825375063360984210103069003729612683914916394217674289812465439813541316938870999354861402160375582810342455043995730819816948505547453029096197833928688735935982538915244747599958654970407704104602569366784225221531104839626781845870092648147888203880688567605208831444945817857785153427"), + T("19.462824041379362514202453738329145059871795167945778128620896576209292571177865023083134487492542931078517939464890630420523665550799939651548618906955780515811541533057671943504991862669514142328738958049297858093270685582461594213632344682911288013670395835728596839923778216755784200501989248577166652556656745561631320914185098036550279972269808563352717494278133064808018424486494613581670904697"), + T("19.483766641106643718481178395114340475919752681994355643610181441860832131581914604665304968112958314746911243491535376957183544987386808635080341126118126364286470448001964590403332961518317007864293940732767763315935539659300785943459751426720740528037173390794501709108627539732588206226415399674048608843262175783293190807110169521287571898125826758063922707869247389042070537305271065057452360137"), + T("19.504492215170652185153425611551614568097792837031617515988255748353971463776213613651972980845739009653411602074763823583486335276886222365741099356087975815479321535979397651959714956358141934399110351847826398926624666313434326948757230737160647513320407575743953348133831681915668076630219831345596329489041495050445409516995558844346940248424949708046529076568535423815692145534030368195098701895"), + T("19.52500521549816144973266072401605164852396136071234571245810367391072812166019661923143396972741343266046339927362413412251126099193801965681827360699083448218860273549526903661234475357554150017778848244185893299525191263899191588797634058235164494448438674653809951435022502560679429105527325418829543863756825670476364629140951247734867887985343458291386040322597855003211338820555010939867273248"), + T("19.545309958419535630089123088329455125777373731767323301911891787605488456921558805681207304272616222501167615837357366396904683096528060072684210523189673108467018417135186800678628444987751206147451054525963839562634340820804697604369657105969423354842149829173951943549166420900709500398322624130365195674097282456714104812933002700523506427441210494461469512180706693823193924457440917371176532034"), + T("19.565410630120075532420489068555321524954362381908007338302983473268528473151341321768804731192210840056455228388636731122203200610869021021871133154865620432257415783302175345843898977949742849569372169004904667621738405749986270376895267386643049526766451459390277406632576412790748533372863644721976845168460840162066672290292749672668879524315410824251032084115058493720402881895485689493165441193"), + }}; + + T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; + T tenth = 1; + tenth /= 10; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + T val = boost::multiprecision::log(tenth + pi * (100 * k) * (100 * k)); + T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 10); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + From fa6b1ad9ea9cfbceb9f124256ba4068265b97d5c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 4 Oct 2011 18:23:26 +0000 Subject: [PATCH 033/256] Add exponent_type as a requirement for floating point backends. Made use of that type in code, and suppressed a few warnings. [SVN r74704] --- .../multiprecision/arithmetic_backend.hpp | 1 + .../concepts/mp_number_architypes.hpp | 1 + .../multiprecision/detail/functions/pow.hpp | 21 ++++++++++++------- include/boost/multiprecision/gmp.hpp | 1 + include/boost/multiprecision/mpfr.hpp | 1 + 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index f5429c48..a58a2b6d 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -21,6 +21,7 @@ struct arithmetic_backend typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; + typedef int exponent_type; arithmetic_backend(){} arithmetic_backend(const arithmetic_backend& o) diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index 032f78f7..92402dbc 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -28,6 +28,7 @@ struct mp_number_backend_real_architype typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; + typedef int exponent_type; mp_number_backend_real_architype() { diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 63f6f223..44a70c53 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -143,7 +143,10 @@ void eval_exp(T& result, const T& x) eval_exp(temp, x); result = temp; } - typedef typename mpl::front::type ui_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; // Handle special arguments. int type = eval_fpclassify(x); bool isneg = get_sign(x) < 0; @@ -174,7 +177,7 @@ void eval_exp(T& result, const T& x) xx.negate(); // Check the range of the argument. - static const boost::intmax_t maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? std::numeric_limits::max() : std::numeric_limits >::max_exponent; + static const canonical_exp_type maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? std::numeric_limits::max() : std::numeric_limits >::max_exponent; if(xx.compare(maximum_arg_for_exp) >= 0) { @@ -213,13 +216,13 @@ void eval_exp(T& result, const T& x) if(b_scale) { divide(result, xx, get_constant_ln2()); - boost::intmax_t n; + exp_type n; convert_to(&n, result); // The scaling is 2^11 = 2048. - static const long long p2 = static_cast(boost::uint32_t(1u) << 11); + static const si_type p2 = static_cast(si_type(1) << 11); - multiply(exp_series, get_constant_ln2(), n); + multiply(exp_series, get_constant_ln2(), static_cast(n)); subtract(exp_series, xx); divide(exp_series, p2); exp_series.negate(); @@ -257,14 +260,16 @@ void eval_log(T& result, const T& arg) result = temp; } - typedef typename boost::multiprecision::detail::canonical::type long_type; + typedef typename boost::multiprecision::detail::canonical::type si_type; typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - int e; + exp_type e; T t; eval_frexp(t, arg, &e); - multiply(result, get_constant_ln2(), long_type(e)); + multiply(result, get_constant_ln2(), canonical_exp_type(e)); subtract(t, ui_type(1)); /* -0.5 <= t <= 0 */ t.negate(); /* 0 <= t <= 0.5 */ T pow = t; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index bcaaf1e0..7aab73ab 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -28,6 +28,7 @@ struct gmp_real_imp typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; + typedef long exponent_type; gmp_real_imp(){} diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 062d926a..b4d6286e 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -30,6 +30,7 @@ struct mpfr_real_imp typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; + typedef long exponent_type; mpfr_real_imp(){} From d6b9a6e98021fb8554b6664696277f7d27402421 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 5 Oct 2011 11:26:31 +0000 Subject: [PATCH 034/256] Change log to give correct answer for log(1) and to not subtract towards the correct answer when that answer is small. Also improves series convergence. [SVN r74736] --- .../multiprecision/detail/functions/pow.hpp | 26 +++++++++++++++---- test/test_log.cpp | 1 + 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 44a70c53..85d389ba 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -264,14 +264,24 @@ void eval_log(T& result, const T& arg) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; exp_type e; T t; eval_frexp(t, arg, &e); + bool alternate = false; + + if(t.compare(fp_type(2) / fp_type(3)) <= 0) + { + alternate = true; + eval_ldexp(t, t, 1); + --e; + } multiply(result, get_constant_ln2(), canonical_exp_type(e)); - subtract(t, ui_type(1)); /* -0.5 <= t <= 0 */ - t.negate(); /* 0 <= t <= 0.5 */ + subtract(t, ui_type(1)); /* -0.3 <= t <= 0.3 */ + if(!alternate) + t.negate(); /* 0 <= t <= 0.33333 */ T pow = t; T lim; T t2; @@ -279,7 +289,10 @@ void eval_log(T& result, const T& arg) if(get_sign(lim) < 0) lim.negate(); - subtract(result, t); + if(alternate) + add(result, t); + else + subtract(result, t); ui_type k = 1; do @@ -287,7 +300,10 @@ void eval_log(T& result, const T& arg) ++k; multiply(pow, t); divide(t2, pow, k); - subtract(result, t2); - }while(lim.compare(t2) <= 0); + if(alternate && ((k & 1) != 0)) + add(result, t2); + else + subtract(result, t2); + }while(lim.compare(t2) < 0); } diff --git a/test/test_log.cpp b/test/test_log.cpp index 4139a059..5589a930 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -159,6 +159,7 @@ void test() } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 10); + BOOST_TEST(log(T(1)) == 0); } From 5f15eaa6793f14c265a49cc742d0b7a994f3da24 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 7 Oct 2011 18:14:34 +0000 Subject: [PATCH 035/256] Added pow, exp, log, sinh, cosh and tanh support. [SVN r74781] --- .../multiprecision/detail/functions/pow.hpp | 292 ++++++++- test/Jamfile.v2 | 80 +++ test/test_cosh.cpp | 137 ++++ test/test_exp.cpp | 12 + test/test_log.cpp | 7 + test/test_pow.cpp | 583 ++++++++++++++++++ test/test_sinh.cpp | 137 ++++ test/test_tanh.cpp | 137 ++++ 8 files changed, 1377 insertions(+), 8 deletions(-) create mode 100644 test/test_cosh.cpp create mode 100644 test/test_pow.cpp create mode 100644 test/test_sinh.cpp create mode 100644 test/test_tanh.cpp diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 85d389ba..4b077f08 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -12,11 +12,6 @@ // This file has no include guards or namespaces - it's expanded inline inside default_ops.hpp // -template -inline void eval_pow(T& result, const T& t, const T& p) -{ -} - namespace detail{ template @@ -103,6 +98,7 @@ void hyp0F0(T& H0F0, const T& x) typedef typename mpl::front::type ui_type; + BOOST_ASSERT(&H0F0 != &x); long tol = std::numeric_limits >::digits; T t; @@ -133,6 +129,58 @@ void hyp0F0(T& H0F0, const T& x) throw std::runtime_error("H0F0 failed to converge"); } +template +void hyp1F0(T& H1F0, const T& a, const T& x) +{ + // Compute the series representation of Hypergeometric1F0 taken from + // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F0/06/01/01/ + // and also see the corresponding section for the power function (i.e. x^a). + // There are no checks on input range or parameter boundaries. + + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + BOOST_ASSERT(&H1F0 != &x); + BOOST_ASSERT(&H1F0 != &a); + + T x_pow_n_div_n_fact(x); + T pochham_a (a); + T ap (a); + + multiply(H1F0, pochham_a, x_pow_n_div_n_fact); + add(H1F0, si_type(1)); + + si_type n; + T term, part; + + // Series expansion of hyperg_1f0(a; ; x). + for(n = 2; n < 1000; n++) + { + multiply(x_pow_n_div_n_fact, x); + divide(x_pow_n_div_n_fact, n); + increment(ap); + + multiply(pochham_a, ap); + + multiply(term, pochham_a, x_pow_n_div_n_fact); + + if(n > 20) + { + exp_type e1, e2; + eval_frexp(part, H1F0, &e1); + eval_frexp(part, term, &e2); + if(e1 - e2 >= std::numeric_limits >::digits) + break; + } + + add(H1F0, term); + } + if(n >= 1000) + throw std::runtime_error("H1F0 failed to converge"); +} template void eval_exp(T& result, const T& x) @@ -147,6 +195,8 @@ void eval_exp(T& result, const T& x) typedef typename boost::multiprecision::detail::canonical::type si_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename boost::multiprecision::detail::canonical::type float_type; + // Handle special arguments. int type = eval_fpclassify(x); bool isneg = get_sign(x) < 0; @@ -188,6 +238,34 @@ void eval_exp(T& result, const T& x) result = std::numeric_limits >::has_infinity ? std::numeric_limits >::infinity().backend() : (std::numeric_limits >::max)().backend(); return; } + if(xx.compare(si_type(1)) <= 0) + { + // + // Use series for exp(x) - 1: + // + T lim = std::numeric_limits >::epsilon().backend(); + unsigned k = 2; + exp_series = xx; + result = si_type(1); + if(isneg) + subtract(result, exp_series); + else + add(result, exp_series); + multiply(exp_series, xx); + divide(exp_series, ui_type(k)); + add(result, exp_series); + while(exp_series.compare(lim) > 0) + { + ++k; + multiply(exp_series, xx); + divide(exp_series, ui_type(k)); + if(isneg && (k&1)) + subtract(result, exp_series); + else + add(result, exp_series); + } + return; + } // Check for pure-integer arguments which can be either signed or unsigned. boost::intmax_t ll; @@ -285,15 +363,16 @@ void eval_log(T& result, const T& arg) T pow = t; T lim; T t2; - multiply(lim, result, std::numeric_limits >::epsilon().backend()); - if(get_sign(lim) < 0) - lim.negate(); if(alternate) add(result, t); else subtract(result, t); + multiply(lim, result, std::numeric_limits >::epsilon().backend()); + if(get_sign(lim) < 0) + lim.negate(); + ui_type k = 1; do { @@ -307,3 +386,200 @@ void eval_log(T& result, const T& arg) }while(lim.compare(t2) < 0); } +template +inline void eval_pow(T& result, const T& x, const T& a) +{ + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + if((&result == &x) || (&result == &a)) + { + T t; + eval_pow(t, x, a); + result = t; + } + + if(a.compare(si_type(1)) == 0) + { + result = x; + return; + } + + int type = eval_fpclassify(x); + + switch(type) + { + case FP_INFINITE: + result = x; + return; + case FP_ZERO: + result = si_type(1); + return; + case FP_NAN: + result = x; + return; + default: ; + } + + if(get_sign(a) == 0) + { + result = si_type(1); + return; + } + + boost::intmax_t an; + convert_to(&an, a); + const bool bo_a_isint = a.compare(an) == 0; + + if((get_sign(x) < 0) && !bo_a_isint) + { + result = std::numeric_limits >::quiet_NaN().backend(); + } + + T t; + T da(a); + subtract(da, an); + + if(a.compare(si_type(-1)) < 0) + { + t = a; + t.negate(); + eval_pow(da, x, t); + divide(result, si_type(1), da); + return; + } + + subtract(da, a, an); + + if(bo_a_isint) + { + detail::pow_imp(result, x, an, mpl::true_()); + return; + } + + if((get_sign(x) > 0) && (x.compare(fp_type(0.1)) > 0) && (x.compare(fp_type(0.9)) < 0)) + { + if(a.compare(fp_type(1e-5f)) <= 0) + { + // Series expansion for small a. + eval_log(t, x); + multiply(t, a); + hyp0F0(result, t); + return; + } + else + { + // Series expansion for moderately sized x. Note that for large power of a, + // the power of the integer part of a is calculated using the pown function. + if(an) + { + da.negate(); + t = si_type(1); + subtract(t, x); + hyp1F0(result, da, t); + detail::pow_imp(t, x, an, mpl::true_()); + multiply(result, t); + } + else + { + da = a; + da.negate(); + t = si_type(1); + subtract(t, x); + hyp1F0(result, da, t); + } + } + } + else + { + // Series expansion for pow(x, a). Note that for large power of a, the power + // of the integer part of a is calculated using the pown function. + if(an) + { + eval_log(t, x); + multiply(t, da); + eval_exp(result, t); + detail::pow_imp(t, x, an, mpl::true_()); + multiply(result, t); + } + else + { + eval_log(t, x); + multiply(t, a); + eval_exp(result, t); + } + } +} + +namespace detail{ + + template + void sinhcosh(const T& x, T* p_sinh, T* p_cosh) + { + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) + { + case FP_NAN: + case FP_INFINITE: + if(p_sinh) + *p_sinh = x; + if(p_cosh) + *p_cosh = x; + return; + case FP_ZERO: + if(p_sinh) + *p_sinh = x; + if(p_cosh) + *p_cosh = ui_type(1); + return; + default: ; + } + + + T e_px; + eval_exp(e_px, x); + T e_mx; + divide(e_mx, ui_type(1), e_px); + + if(p_sinh) + { + subtract(*p_sinh, e_px, e_mx); + divide(*p_sinh, ui_type(2)); + } + if(p_cosh) + { + add(*p_cosh, e_px, e_mx); + divide(*p_cosh, ui_type(2)); + } + } + +} // namespace detail + +template +inline void eval_sinh(T& result, const T& x) +{ + detail::sinhcosh(x, &result, static_cast(0)); +} + +template +inline void eval_cosh(T& result, const T& x) +{ + detail::sinhcosh(x, static_cast(0), &result); +} + +template +inline void eval_tanh(T& result, const T& x) +{ + T c; + detail::sinhcosh(x, &result, &c); + divide(result, c); +} + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index d3b86aee..3c9242ba 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -202,3 +202,83 @@ run test_log.cpp gmp TEST_MPF50 [ check-target-builds ../config//has_gmp : : no ] : test_log_mpf50 ; + +run test_pow.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_pow_mpf50 ; + +run test_sinh.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_sinh_mpf50 ; + +run test_cosh.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_cosh_mpf50 ; + +run test_tanh.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_tanh_mpf50 ; + +run test_exp.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_exp_mpfr50 ; + +run test_log.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_log_mpfr50 ; + +run test_pow.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_pow_mpfr50 ; + +run test_sinh.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_sinh_mpfr50 ; + +run test_cosh.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_cosh_mpfr50 ; + +run test_tanh.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_tanh_mpfr50 ; diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp new file mode 100644 index 00000000..e2c0b845 --- /dev/null +++ b/test/test_cosh.cpp @@ -0,0 +1,137 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("1.0560191127459844751259038114395241283965590525302917878166464679729562764239266483419824023679041866569431842053263976225991679105269492268050148624443706785607467750929028856273183654547152707568642275917435773104050171284580773949313906303074811586096214771879801872225500237540725592288167903987152007171391207680034517664218965133028298959753155835975555361514087618679892905973726581183754237665"), + T("6.0577917650974496023981039346694689204850927958941226507775366589415588030232830758139222010716099059155799853188868489737439396141346120898610181630988217093945337280471788812956307352429914669334599644412036010014302812555700905490062030666482387008384856645533100266205122930455496234252478878949675888122615795451076521244771554025667181070733415815608287241160724578541982548132473721865287585003"), + T("383.32956577005424506758441449272199796616394738942294350035763341369127219359132618750028176886177362785452836065735889720098699937365992620246167965376788963171659530350198190156275836547285437366012371175910490835823389352716981464503672749829183569550509561579181434088407652213421105693358960196044447948190823567291153397039759820680087749250557665869797605969680417240900163183563482342795870741"), + T("180470.88335034971169904627554690213669106779370247753503772451628313223853228134148123711258586005038324156900626143047383382773083164188515409766952843294484598668304799186411411329575367546332731190431166613267871177008493921416649792646568096789971466064344922873643120446759328638447781504932928745974584136039698220604099816877847080168890581112550484205291341188894903342677757367415636409890558"), + T("6.2781497954189513287619297175142770025826052476955600323495790530946900406209789437212923381830889846578651793922971071825731424267985994598149826652782605981764572599129753631344305259620294513472869937699509893247230674850025066547664563263958672029867981296029855675095947587305949634130736118694040608573981560192569935477462121110619100122692626135788198431038121227062383110684489973794745342204e8"), + T("1.613783114750852113223226710244634574082654363427931747177970610142560035434819323665197978270795707611590961019502906079030261920109649748962125930850198625621792763842224096823299250338750953491004408731082880660125641628213970297576817341593254767125933119462446651783267917469179893016103516988279473907996009458208097272806046395206212403180775656514566222835047724943633607736647735739948551096e13"), + T("3.0651210048650948869531196671342477415226643123350617715268971834881834615138925908518703584506447138436613632341330640449725016173384960626760387649747643297918807083363913015806893683786389067836005832038060734248371426886808175554210317756018846109627572546314172492701544345965940408777570519312837860014177872754358662463423939942202520475422342889660750666147940146262635303938752019875745307992e18"), + T("4.3016893602106215864771434464025735547192956887050537014696231526954713331351791376069506688795159316625154458115179050297716224800318064110052445970764898870599885508391064218065806885129697936678362276766771902589638957537168339190488273555753876162633237990462617955892238424402124353124736879474651977422350856642986446591941163073842974714357745162365700428610167249762162775568692443158879770006e24"), + T("4.4608685929681360001024935791890661655506049487122331222491789277138083092507844933483858468341107613657448783043064935174812965310544903547535217357996429824403225005261842368679242972243707736489629610256554995236901040773902962370130989883960298987808008001651650799892267761089302132749037069497452309074389846493140222931714618697738906019885122076310868220596765753447232222740129365498326869428e31"), + T("3.4181315955816806472569357441100390029536003312981931954091744304974491527743601285017456624487264929971022746516079644284683284072159616291298593217459064246713801084801182706805865477209408120733740982340972570739267039630582468876075574706187115643861449939429503730606743466086010115127464706315791765264572070452800816054590653675962889901898843712936126341807733200610910325052666512334161414655e39"), + T("1.935294628272790810141453021278524976364077691905248015888165919062516673344977091262644262832934899971824373171672037249361491844419302323587942915162859665992916625636813244576210109931852761921719987632855596663907494303248513195744818730879742963301327852160193919379798462926667740594397712731448572837824802330973561570848397758210619453310032286208701226098998940360395267237151018055781640126e48"), + T("8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696411023621632714191313583360826598468217983223558130595633054971338824192327248896500337050246640453410159732184419096917171044075711156867804851018388576371530520943696439917673720450911725466781235347212700849702742625663288687644090935756560022610000629006347244369388824818661974220426e57"), + T("2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636307131078699799472622998437404149614292337267153201903296102921815263736653035269935857816159086496594269187082442244280898258397047045746728729079796167987895368614037770286371191530575814695859433478185016171380286325273493350193132538052551497175771289873181595171e68"), + T("5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887832891095928020095581695527354104986223411349657526888924224926675682032043363279774947976053895819671003276400297758359779703605970507328706064692923481168676751999124073697599262277247814864401196929320497117521176016017349797292609303756215e79"), + T("9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667380623792736661655695464087154725768656507603378053220212067894914686147301550764045337512361478831034999674296837635744344039906734109560908793921568633128400104314078575159786136202769893309913175064586488844295321363e91"), + T("1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120466881600981869890379917878811691555316448842731085218988710571211956972016424649758226606500603194972966032036214213759991156778846329137084961334557845326183588274571457361004704490747798678e105"), + T("1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155601275526921302332118009966650991624878227108265079219497366770219141098050965023005919495048022616553249266192057652205987267068584616625670961423579715954410508985e119"), + T("7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004829725273067921443635526965673971412049693552004259820173389681647135125678701502084190660111860351299407405357314966388044340723077086e133"), + T("3.7985363580067976240250330165300706958269826851549371732460220923459822809007918495780412109700378352703982899561570150646963751463572075768540297484136809462018052149545042828665345287117150392150513078663739946623681053685054650372595872914400423446635806806461783139586204378680585507446218544068845246753010850565341852111017728985713047360191412931479535524815646071456825031827933342626130249175e149"), + T("1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174689070525154077366030192931540897742543089509897490703511310531249977e166"), + T("3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531488383930867055908047961915279983259e183"), + T("7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201"), + T("1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221"), + T("1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241"), + T("1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262"), + T("6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283"), + T("2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306"), + T("9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329"), + T("2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354"), + T("4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379"), + T("5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405"), + T("5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432"), + T("4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460"), + T("2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489"), + T("8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518"), + T("2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549"), + T("5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580"), + T("8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612"), + T("1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646"), + T("9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679"), + T("5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714"), + T("2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750"), + T("9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786"), + T("2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824"), + T("4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862"), + T("7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901"), + T("7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941"), + T("5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982"), + T("3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024"), + T("1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067"), + T("4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110"), + }}; + + T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + const T x = eg + k; + T val = boost::multiprecision::cosh(x * x); + T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 1200); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 592ae720..abde8e4c 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -29,6 +29,9 @@ #if defined(TEST_MPF50) #include #endif +#if defined(TEST_MPFR_50) +#include +#endif #ifdef TEST_BACKEND #include #endif @@ -104,6 +107,11 @@ void test() unsigned err = e.template convert_to(); if(err > max_err) max_err = err; + val = boost::multiprecision::exp(-boost::multiprecision::sqrt((pi * (100 * k)) * (100 * k))); + e = ceil(fabs((val - (1/data[k])) / (1/data[k])) / std::numeric_limits::epsilon()); + err = e.template convert_to(); + if(err > max_err) + max_err = err; } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 1200); @@ -119,6 +127,10 @@ int main() test(); test(); #endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif #ifdef TEST_E_FLOAT test(); #endif diff --git a/test/test_log.cpp b/test/test_log.cpp index 5589a930..6905a19d 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -29,6 +29,9 @@ #if defined(TEST_MPF50) #include #endif +#ifdef TEST_MPFR_50 +#include +#endif #ifdef TEST_BACKEND #include #endif @@ -172,6 +175,10 @@ int main() test(); test(); #endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif #ifdef TEST_E_FLOAT test(); #endif diff --git a/test/test_pow.cpp b/test/test_pow.cpp new file mode 100644 index 00000000..15315716 --- /dev/null +++ b/test/test_pow.cpp @@ -0,0 +1,583 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT +# define TEST_MPFR_50 + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array, 500> data = + {{ + { static_cast("9.85291419463953934609889984130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.41670862661703722551465034484863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66781019918879108354226292713799369912745098619466567318041467361236175866573114777000418440761829061824953361563557580935951901405814080757565313129904800947783606850513184296612628910656615168927761935861462770335134108408073175949783551491164949747086136599355880600420490275164555515512645668845e4202") }, + { static_cast("1.65291435510970359246130101382732391357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.93652894786225093781695250072516500949859619140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14852190138491736562279120519668390081141778746743826681517181158751264571350304943298501284647564489716027476004029804110782430201351750715968215799574772058637701195873519618784612525011353325208230847515250406858209757415407239793739704829281917272032288615255140733409015874140869835291148547238") }, + { static_cast("2.95673953882856110908505797851830720901489257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.30915509717990971694234758615493774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.16137091634529046709182958669115589757019722367818747705232600776240821857227718551873067599347313641575272826830417174591636547915061517391300131065931465784194067711359196329143298499263726513131614582697830908424187934868152998838921216586737465291051289708299364409624364999366486746226077050764e249") }, + { static_cast("6.08581487679821513288314083212071636808104813098907470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.65778516457987279864028096199035644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.27056224622668410282266686919173718609676411389459024877282902746284033954589536288634973757568176464096389580016576960309487231057438455595655805167665817497028295657665023126747065443986739792258870082022889306909488139458069146748438042701949551909468708242176394539901613782225328586614222105675e-3229") }, + { static_cast("2.72264614486854572561469467473216354846954345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.86954434555903360043460637029966164845973253250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99366682241962146368589809577120011723198308450433185299366732500677873637460155970547267099719914327909694930518383012498797681761846242526638144261306834523078708261122471803832490341687603813336927181436827534082878781252668704774445437548691251936499670077735883150461534069270846997649139259014e-1") }, + { static_cast("1.15866069758449596882599053060403093695640563964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.91253262757665787319183436920866370201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.46868982488456565751167443881314840659743514173491612010770748877346398177489343237604160804413931931718223750314831998907846386274396179552445359933868165880372381338724806279781831953896898649659594755834925976964179275873971118494605322798850925802574178528777014182338769959249415096934378557388e-1") }, + { static_cast("4.72825938314130529761314392089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.22893132739781236750786774791777133941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.47245157077269889091085696140795527282280334677569169487973419233796250189843816560261965111196061138868370890204338231535198008079068304184762140493830719955323588998399173073261634891767823614143691840392792367527470000847416054709559319143615840412839768396194451923527439592939735228732869467965e69") }, + { static_cast("1.29556572255334176588803529739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.81521083299418428680382930906489491462707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.91729899451736210436889587963352494969987265352294254442114149825297350300933403119961677078224257818567229354512108221647637427508041941647518586565006416113534560289731038664091154857692367872604020422463457596747145816854139701847749519264660326361171185139298113322096978245544144264234481020815e7") }, + { static_cast("1.74305909145137593441177159547805786132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.55727459709495003048473904527781996876001358032226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12324923143821767715038683964417533829057341785931080679952341815408539775130405061465897612861320390765996927155081774925717154208894105154455487856335006846587865128269477586014136390788140643457017602926503892493119037260205017744346004538379559837051387829449807650507431889923695496342461088404") }, + { static_cast("5.94723096329786358182900585234165191650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.47960584914021491681479503199625469278544187545776367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00101355895664265703253905800820834352012946978175213925289823900262226487475877307647753894219794796436589570196875943062842928843129407133278574235943906905626144071246066853301987332156463703818534415183682692042219695734377740067313312425523058170350486981674302932951851973390826740834796342180") }, + { static_cast("1.68908811949766600121487086783034214931831229478120803833007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.31583500510190560817136429250240325927734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.06485337562137503941405427253471002412719863672407294570575625371322654317127374055512455786988091092329605000808871766177184698431732837248355728401235010135527651826220232715652024742668291949645619992685612328535253252695622896976648954823150769316159100729259724133493553742448044299816541989455e-423") }, + { static_cast("4.72470471679805708838453814912838879536138847470283508300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.93150097545414496380544733256101608276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.36613880262643802742756290736395850668317512466586871167321608424137867570108690626258507320043808302565319397131444616166042735793688809613906106252620462557968555895414582976985576875374557668514391264049547180886976991031038592004458693177738810104222966751846844587127740341157319952915743398285e-103") }, + { static_cast("5.42042332941097132481544917936844285577535629272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.51174849138805500459170616522897034883499145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.77171703127754502681310204125715941650801721154976863870699221072355335125966565182666925044598746890911836338141033359039531496488403405876863230608143768785806156629534985369811294999635059473513624761915818310578096052710097713441725036078711101258417410421951107958524860020565804089659046743943e-1") }, + { static_cast("1.03814929656497190180175493878778070211410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.02775539432865528274851918411059159552678465843200683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99908769642175788386137778958539300137602918424410284952085874015336769726750047569734816766197409755257562872230833189101650544474710424482558254479079319860825174137124403380959665595507587367668848404286717760343524270837960434045414179621713212480893218438355518348995643697164109731552178914851e-1") }, + { static_cast("3.82635641630229656584560871124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.04696645144304778529686927868169732391834259033203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02545504718938094372102791727911930176506035001600018053644429991055918696319033730794852043021666923875675436795843500904336366408589219201909169612259476814126333181168932741070039124737361896932592045285182764869916877379718622220890978571031406624988992549594836404906978120992311725853941493659") }, + { static_cast("1.33672486906479148771609288814943283796310424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.20701621203230615719803608953952789306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.82608741435940656086722594561546646099634760918110959565977761208896418216166536561903222226214939613599640463597249764023513875896636280664458251642404729724932181291845871312202787897768372355186920789243514016890287945724482698867187289280837997988218972650355222505584789955736058952829050123955e-11") }, + { static_cast("7.88803854908014727698173373937606811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.46278561425722486433187441434711217880249023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72840141730863663391876877521764355960382145920572562742914162972208384723706307292705275033115082012368548682595775882643927894139786449383322664316773126131611883398659050539189893838100041408464889082404113404032943316931275847874983317572290683797208861989532362102600980996636385789799495020849e4") }, + { static_cast("6.02908445011699427595885936170816421508789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.73159824509963122807221225230023264884948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06403097260563050081855800637166449495962164712719263330810086375883439970326530663445685346228862337912240907582664457942174627433334293660419014781254710335542481599007896808711916825623070383641755045318205803207383228319360990374222920104547227487223738392731388028498147565624523546346417715655") }, + { static_cast("5.21882079270016063787807070184499025344848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.00797343550563134328967862529680132865905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.36552325485277806964373331313098838333278330423455390715861973295876349888773267892681165876113176797510574847645252615081953879524429911159719101193921387688552351634752458416166446355778230365755243829643708299147847893065939954861919388676503519612640610354931769525373202729617723199328630093636e-1") }, + { static_cast("6.21172003041995424155174987390637397766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.60919435020819194006019142717534009534574579447507858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000157241706535645559625081132898066253320364132991765749046567536915342813631920409642832019004224458248512335711478395060579077427182783938451114029622700384959716532968625901664719629811957905865676402174328291417935322613778738659214041802729741480722967793087943757739011593472415850478420639") }, + { static_cast("8.93348943116835901567807098899720585905015468597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.15322293979125788609962910413742065429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.91021563983953636397848520840523223624643742835964326188016961937573012460753870407293657436708430593126320103796954182972032017026192445957161066771807675200884423939605981304732630092257312925408813941089831976477439943114677798839623996214029155361569909503935179401196449493080818512569086682097e-1267") }, + { static_cast("5.55105519395504379644989967346191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.20561294990389011871911861817352473735809326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11282177288045201072507504088709286277978249266318510332909847928909226338145185595245293917086320817076726850666066198249106037631163063795831697507293260413136608221812252367908447186422344164553977681855896096040438700902356349275031836676568495994537852124264298684105398360497193752327260914137e1") }, + { static_cast("2.64139377644600310476863391784263512818142771720886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.78537344498752810831310178230069141136482357978820800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99179632299559171314926709030763809736309139005374052895886931807671532458904052556141342139885810036321222015645710865315806166952058325774560966552187527103940189373824279065702873017246336399071137612269219545181070886990906061668084063703411460250321467244169857420435253409159030432098292621067e-1") }, + { static_cast("1.04207364225271594477817416191101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.49096324860676521240065994788892567157745361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00881927761618177965011845644574187803759898330801723609976606642566910129111150781463974721119043760111173993259232795682413324213317011846206782754096089290427628991647487342082014619699610677423897602146820644840945077548746946762791624180147374361784328110343084702444523109612274014821745626982") }, + { static_cast("3.31519320566263809429985442989163857419043779373168945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.69130350190431280252290058285780105507001280784606933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99544126695324189746630737456946723361046661345027805407888971023026631339988056392642825478722792254481831582440796961181158845762815786131168245934078509438401554967954057934563178474479427510608187860234090448388699710858468168174057416883471915845617321874136073232354461932587707630236256378020e-1") }, + { static_cast("1.88337177923367888807137937590141518739983439445495605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.32540268863411711208755150437355041503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75229630554212330195665922771148699451829771147200356624805857657236782065140481467338634818457146889580617522654929450001033313425457042558128784684181381335537144806647956114444609625124141647264003246426211941949785732284342909061255617831919446477154897012961652269654460432165747451828975060062e-1612") }, + { static_cast("3.95459290525709050712066527921706438064575195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.67791671378427392183514677004296800078009255230426788330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99997515679857005761440503886095927815406391244413835291624899797364615653895949902813000744851723242602512239539568754651988070279277456656779917196036522934849059282355864096704432345340316634144618927930200708582994637711792811242475638942101629267185320507818308058050356385241284795438747530570e-1") }, + { static_cast("4.18765706320910169324633898213505744934082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.16291806714740175721090054139494895935058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.21448401185251170746394861880464242649255630391558005989017991140563422704674077045117022763467561974222030061746655113958910240758539727055748249625892285904547489203480154655618632992990390332430221914382681227157928848406067945057161854616129785541408035327136685741399621377579757754012545382969e1") }, + { static_cast("1.28834086985551640736069600734481355175375938415527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.50705923255961032891647732867568265646696090698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.76932835372685523370171735287063726416767225734834615849134547109660778793799398169080725972094573408844765674179657286895933198717192952354877012591779343412877647689917686841315165602494901218010719779271020694334581849406783713948998204010537229621398578990055098138781426451663477493080600789821e-1") }, + { static_cast("2.09720612044679288743509459891356527805328369140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.58040082173553630973117378744063898921012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.37769288971832154015429547694831033608424622845142547611771987181607855769209591840464089347717993026475816138178319620101164703046235086673631394869476080594839931563796671833715053698127488579638544943331524253087769152813629459325853986427109398088052746438762088357925061124187186100435982047033e-1") }, + { static_cast("2.86348409095251425380765364359092473023338243365287780761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.66147340815298694138846258283592760562896728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.19957610695947876947018322120150143406142221469373757924519795345150006977773403730313023369079301615734601162566867121616810596830759956044509310651071485457850172811241087990683705383118703983140409701647142571470333867908682196499347683237058377349085352136214854181401946343510795949868835711429e-1") }, + { static_cast("1.43297873345568077638745307922363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41681240009364082165985165850941029930254444479942321777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016822776212044529668140515271000711944889104836686684000447554242511520504646895662976301872271981369559245931879055379226726537073846553544561947637792091890791964244339592472180091648456672557297620691698497967178088487062658421331764320606009571740080394934111049676474128724114098218934644280") }, + { static_cast("3.60098653144944158555063040694221854209899902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.03376339210932499668160744477063417434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.25275538744154336055615419863736730746930928726962752118772852620054361808569416481449220736645770958820155429279907622983889720952174836443567087662689941130263300184594808723215176724531461369529244321399979413684112346655770810116945662086924599874483949305102682382993398648882273436739947930631e-1") }, + { static_cast("5.29540201171499924810703863187200113316066563129425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.56136148696097143417915731333778239786624908447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56082033932816309081231125453071826327896674917466727856568147854623107132514590973229074834141556000908164346345063684708226886531162257152516511661460364047957606893852284251293056880030888612998267350454535860387161852393199580592248818623376237183284153405740445167284591706260229351268548628924e-1") }, + { static_cast("1.44301800298425852986383688403293490409851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.14308392953894662376346236243307430413551628589630126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000261963485792416853927136569198682383793838454319729684734973539039182323306199235318171814360855994012568229358281529883676852371448365509202038288834881570383584403906835594533516647281713968932211752518665238323196577224701747937440185305151190908616249351775361542696295892178890063882257116") }, + { static_cast("6.22803809629584627372000937839402467943727970123291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.25094187232484732597015408828156068921089172363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.86658469541403998034943500870243069476823132486007751990824694615782893644279173776512596334159142603325455113617967643461939139102971978114976150505918018758878971981207590718138194009315889095960072548673588879789986017926322494375432269097377546556386620403909103214427884440798206932883636297352e-1") }, + { static_cast("9.85553619558515492826700210571289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.19375835372379413001908687874674797058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.69327012293708811121144971175263370083910101169553278058859848877086709080419562447585355719348842415619132355236627485649548952876411849102018675375354238273102815474095986357261970461229247085634624604985094330242448976955585994530902647027597520370418448678147789523361182103563378206595110636366e6") }, + { static_cast("3.58793922164308502070761974778179137501865625381469726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.91828844531360287462007363501470535993576049804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77635990889125108309690852819112724262223736693646969131631611067612444282401471024845889526676870050656945639578159737127915466435929600368572355785708484463627825178182883323088006398240693308602881027224033181200011330121428663774743869527395379215026638702157803494202819893449358544841576526785e-1") }, + { static_cast("4.96146848614257760345935821533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.36919182658175953015700088144512847065925598144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57915370211935194723362359441601671775858730114448762856923579370262681814508708674839371719677055754578289843591415190008400693094242195743768201495967775525358591358166609121796030602701836084062498854380733868656008519376928763241674707747769169741392588580100945268376807756367217092609019332523") }, + { static_cast("4.24495621335822494657116776828331694559892639517784118652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.41273133041338017079624478355981409549713134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.05650148888948869811331120941963319541414375806822687983830138205938420862200064078576598469877831249406211581526927963122105281131255004573845222711684347603254852806653766035434125383812586900316395999300527269121533046942253679078218107723668449508163238533047093749711627477323541829484653131292e-2") }, + { static_cast("4.48640427032238338142633438110351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.57545512531989570200255390552968037809478119015693664550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00002050314697607659431018359659361183713303212753613120902527904331498111603138394334757418054814218670389608976827498549914166555768752494414195237102560486571709642923543196007200071132086884670852209514113439317507321835737223329599950365222037362534859303381396326717532288233329927808913598785") }, + { static_cast("6.49749570902381674386560916900634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67233186866778105184039304731413722038269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.37780724079840208711014533649991541109470796504084314835156759344214993302863952807171583660778803863957191115559320339273255056520571556246744533838811694006166732957726755945662570959533321672076547914911635593118101608294069731654269467619949055336628326621660012876406202543146880009002104821553e6") }, + { static_cast("6.09674367112420512171411246526986360549926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57044841435982965565515412365016345574986189603805541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995606813099499267634389464438683850041060806908350269346321155672893761130577244819124593817984249660934044363638948086248241297434338993626965911693249278796597285537898160766381999495115463474497883772569241592760426493272254012575287314033420480717621539078495596903806489817283498263020744184e-1") }, + { static_cast("7.57503455130639213876975190942175686359405517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.25659927896368083096931278497265793703263625502586364746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99967576340235983529748322865757677186118554170023614050204881657758768441183672920424294568610952334609747551908015545068832481235294176033402023954402315837530793201944548984799957607361928025651266738940647431602585783131780321746876553060340085541214977820888348264644079307051095179685852079945e-1") }, + { static_cast("7.23094922542264449683013793901409371756017208099365234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.59957635240683257102367598179171181982383131980895996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98843860017333489092110505899347130551976013147438321970353479326257793437223848104429707854561661175450570835038515201752789245106905767296900600611401551754756721658819816241278926439311942572630487380703760937536160330693843537976099522621025621041857521661138411993182809798954282325807746896512e-1") }, + { static_cast("2.22347866336470469832420349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.67574314969844628819828358246013522148132324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.45597650920700334896440864288586774552136744768533970151074149218272851829624764505239431335468131476208480181217427109189696065749387968903474055278714181692867425657254225967806378137696550459591101296481511902742572646395696145586249150843548288850238158312747067673295059110101209836587291678717e1") }, + { static_cast("1.61969754204121987178899289006039907690137624740600585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.98433649539913870007978857756825163960456848144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77061455335439039778043359172467746025200146785630273407892949860314031306268447375871357416922980298986141833641561954857127992214135487677696097641048847861017455164355255934271546462888696419881919311556223441720520985938735112636787538160901409982382930452852563601752376961873325250302513132303e-1") }, + { static_cast("1.10785802837759378425275258450710680335760116577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18652221207551884308087353225857896177330985665321350097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99946575396258084502018839446238846584110705812867877643924485585779113197512036317728340100285410504878437697437320927763146715271389949541429089452281046460116468251613835907291530307473134875676645637754443536935426771393775580503285493873005924313301673550096584687732186248324962291699197441007e-1") }, + { static_cast("4.00900856150933880290426758463695477985311299562454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.51532437768501453796091832382231245901493821293115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981169291887424157759932262067246066753044936086128253970315838989839817149914187581608688565806547274970455207936904774502513857569845689591879527047150474914557088218340646463900082270385606124499095033110795779754466447281328092278318076549095302554108789079991538595665731579745334006426859960e-1") }, + { static_cast("1.19021350263737038868705475636033952469006180763244628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.68290288542928294646117137745022773742675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.04852417540620009944566041453719467211390230149498516011819535440728246929538100576552383464173953438153608848998091884909329517100819960017904887302473398843345408874822800579053111675353115760245493436345787702548498655314405766561270926511701674435330529881522800583133171192665005622617374333010e-67") }, + { static_cast("3.24276265467208501549166432820214822640991769731044769287109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.45408954542178808083674468321078165899962186813354492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.94386254687686946963322383552185492075977337531973213930838015838274376322044860137122810561067818353529641305366066211688682157075369267213623551618566522232634253178245524174116891287095569137130501326353904791232655125453161983083517758472031555434930112729665552915867163490039363051308443099856e-1") }, + { static_cast("6.15810616566200508259498747065663337707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.16615056291079111083774932922096922993659973144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.84767212442093730437806115126470445228033445461780019945996712538430276008229376762120777978183512697217805509135802054380845495119030204478634136438561790634012659775242132306345870420149133737299397362388964674004273429551607587049902912378874846355087545159480302396357641147726629312485985544367e-1") }, + { static_cast("4.98639800075090606696903705596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.77610720170316863455745731714685575752810109406709671020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001921243238237193183827489311170506446717993399056537282384027062526108337893488664380391849139457202726524784919352515463921911589077429652463880766791641171380378763553978844617450998857121720620679684506344842701809891676387117033562056914974016308650056416678855410514380179891286420315463385") }, + { static_cast("1.39829478131476389535237103700637817382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43499530583138337064275091847775911446660757064819335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00024882796344591385461239880845260384691776851307067376321212831043330119768926261152601978474535337925904198175128520020096443925386965960197623129024285407478015708065567539370247164906581380771634920314388644089046167410745320267558557473972499677590220735439622489041126850128421653983634543138") }, + { static_cast("5.53823542724402595460730935883475467562675476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.89513503025480504506072865211763200932182371616363525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99887300842861835164017418113429559930804468019069798605482088141983665217815479503166341320807290829070352700865762573462007338287440579346738382811838185553843038382146930720875234411175792603385681200743384496310942148612050283753172718455515566946341846284557394785250850393323918755270713010620e-1") }, + { static_cast("1.41121361373833846300840377807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.98754187978802221437035768758505582809448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.39052029796505087174799036572060834290339669936231503015871931355721722463161747207749930806516332386763841930651054884331973674982367750538370231486178766251016302345689298357523496706436693633349722362506875465430935461687316908940273568043577086452494403668755303085058972545116855832701160169233e5") }, + { static_cast("2.89668134268413328424353336831842398169101215898990631103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.15865345460021584855780929501634091138839721679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.28205556117411408113652874564375329933423424935399606070975188165013549346043442272013469493594176280229509402715241333520310808546934629428072668916547032154136142048364995378685732366063433675907163954131129548865718748066808278449447269502355535592014434886553141414017802588692926998785625006881e-1") }, + { static_cast("6.80370452266789652639999985694885253906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.55585667546695538554502036276971921324729919433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02281231404359612151527353897929180348478744328820333025332541070807332704656155540376559985312945856024293947964716753864592850899748540597581561259020876390111605898100116321942106603048757052249826147692127068934907088939143183343054183800841834132202006495897859489577613318023621649632711626369") }, + { static_cast("4.62504113144313121035178237860918670776300132274627685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.52163427846739888679716834474220377160236239433288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98482342652643471998471847918276729621115291527655407478347392440646810723671728307137559792389469491363165496772939188998042052370839020230988405367662374022902953797332354477989367493245470167443057076807839721016298819277997067517609396627866901281229526562169916899579412733467953808761281274902e-1") }, + { static_cast("4.50822932159575771038362290710210800170898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06839470475542444583005874392256373539566993713378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00407725957483558818239220892424948692876561612077691060007144800995480352451729509031292920021843587131856132257906499443064130817064638818765366250131236399994854411601609832821870319397908684888708832193783247348840517389795509100198832759307607589651546707827898198086014636944156848700425178047") }, + { static_cast("2.97403319008989266980513832550059305503964424133300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.86474774881857552344399664434604346752166748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05563040619657475424023632617553458144221260647471757349470769600263284068856263065983919485584722356671096360406091314847188039821446085937501687228128412834520625095444394738723676139779119999762553228944695777339743845083698817002881418226410778165865331625883646946752393289471811888730325566680e-1") }, + { static_cast("2.38325080784211650097859092056751251220703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.66302465811868707690202029425563523545861244201660156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00914434741735633383477956146627482536171366958054332840551181784200344603582400731522959980543848217816660950109678863255860871237640121402147335369863635255623422637578873942180607947824451388135749116333642343887949089848641558138185462358132315292011403950110303162349396320495083970574820485984") }, + { static_cast("1.71423190201370800878066802397370338439941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.22776453453089651191021403064951300621032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.41715373496456388539324810858409600194977863833255435782643057881295200486872481370727134110261522844531904021514609023835218872201273620577170073750362820523072032985530745444647038907617563505404059737966630343043214665700476103118304785807103469358517871674775523305518419709923690374745267779192") }, + { static_cast("2.24202183750390773639082908630371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.88606137138923326407313751928995770867913961410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00356204426464651318381353366766656275190463831503522239513652128295092897680949875433153708401966246976000272332294389517143726474038495934684353460128449357504408039179941027444904612222505017810534008770086553370099204575810832664720970035523251219105643922854038752127247330051903230606763080754") }, + { static_cast("6.68254924276967532392745852121151983737945556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.37453434835288135218434035778045654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.23884289615444976971058885660437787480627352137562427420631247881049437291942148842029267007686370097695430731343288589752635360722257432905786816202418979845289181427172830309982121527477449228884669859681103900842455539708329644639171581286590973017189366587396069226010533102477610964537380565038e-6") }, + { static_cast("7.08735989603501259637141629355028271675109863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.93170577274373727050260640680789947509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.22994581178880428430588361219833883540463488675474104323353907511764504539625188516288826354093370529125373667749527512470360034116957923611728143647053700596011110669882224710437210488847861184277118067955181730553186100384807049379684590737156995709498402541295775367296456895644229479101255193586e-8") }, + { static_cast("2.32014942323958166525699198246002197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44810310131192876426098337105941027402877807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.41156739924941071144222113991630683194620198146427652318978812945951687592217439817665385168004660248141475796965481088709894832854582569992290051260681221672250427616673943995167609515610097891251991676291118804434690243303234426750763059520585143335380969303297852505455054177640936866538646738978") }, + { static_cast("5.53282998141260031843557953834533691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.84121602625912601070012897253036499023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.58373770974866315239700400474362989477383658235694014601763955308120813900734144800418886820772189374330395186134971653113939250757648994415649668842051891937875262317539557069792723676293862948593761228728392700591159530165592758768030540795599964339740660316188438257430600649159884119157424191581e1437") }, + { static_cast("1.85718777739859418943524360656738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22760764621501818278162532216413183050462976098060607910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000634214788464577855189457084479231510812185767194037441581727975561469887723538341241488476848396809344125019310357146729535769441778199276860378224675705997700022744347653159656289098028240954603207536444605258988369343538458427994444681579339406242882282677673848923548267602318784029338545299") }, + { static_cast("2.26509465497761368624196620658040046691894531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.03762510179397637877229954028734937310218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.03290580019042823129797947218377400320349309579887379648069219653044521496312022139633395975447973076157177628011296170468228189168841156259900536323684747126636993787966799478738521263932697630770091216225209592893137197359045523997671979624680066252774430678393930591603773849047796785558663064178") }, + { static_cast("3.00476295219746433740048985328030539676547050476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.02409308153823985776398330926895141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.14136997855533491337740509094908136487500777275671775674006769752964040924959289897651192452522290539206601428332553008348132654735739834724305690164751538343877568881013821199733121651153278576916744941958595422652696891642421407236449964345890318648778746090208231400439749942969896805715062234843e-203") }, + { static_cast("9.70798896667321969289332628250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44245980458260469880826804001117125153541564941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04162803810086699019811359451605453492327199203637588333443087016790236547076001612983024940969264195708947484110311219661303765376669460085704437741732903824466154100734799424439147057676949660911617676769474501254927589549167841876728171722481679869607753266592648983928705022178056753619502736504") }, + { static_cast("4.66389224589813756668976729713449458358809351921081542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.41598683219974930125317769125103950500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.53382042139791789590459891074340066702060120383660058981707324170432197791546635984529280576877432127625617337120709804544743161881268886942872653531280982977576133511801284796672543413476367564502976743587063883733930418435751755822485352709171649159924126024328941448624940766411726855902924670549e-37") }, + { static_cast("3.59808415633625783280891141657775733619928359985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.89106070923696201191432919586077332496643066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11957324795765157901703029938063916662894000731995996196921601505519523032651152137148283098242267387419838627536448762986353433569901640648734154364900058234967711292575255307936095926242393050569604396410567616604312846123878721000606629431359673384574670669906697802557686478096291498804903738631e-1") }, + { static_cast("8.29546112810515936034083672723227209644392132759094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.58324466499312066503080131951719522476196289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.86659658288740565122000959721270284304946720479579271651550103638161205367495371607443353257219806398111103943515458202894485596325631197266478165244814107159447017816960534609382148164169335790367935277372018345236031109996214855557877416239874683021494253068006756484498147004540748744410389570461e-11") }, + { static_cast("8.63334593891555979183749514049850404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53080323158965114771490334533154964447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.35233729973545869852697007160756749812975339497681040282999017995032382608550729201580422775220111291799102420635253476809267746237352183450521514570985348430714476644398637263228584608977432119909919809882847191196859131282077491115028311403034792745466352775458252803189617423439193439791933123479e-2") }, + { static_cast("4.96802530016260956990947761369170621037483215332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.02519683572433439877613636781461536884307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.79130174131074712614824707606461473196424333567411409743609116414751816130489331857231684597817414740294362613028844768413127008896909984819847802879905875872491406317289520166024819440680050252863090346899246519659384416734528764367429297819383807550500609868490474715994290375146313368129823880737e-1") }, + { static_cast("1.24702033554851823282660916447639465332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.71070595755497723185201142115374750574119389057159423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00004316789477874277620263489613820769653924396429221925198065527832144152145855155330213971456389989525794479500052652310504867952437063466242776820964127214900733034755428153463014611408545155223418498794841462940237893200540509678171081868776875097700422657888013910264387140255547155547751726595") }, + { static_cast("8.14130989781463318757936953318221640074625611305236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.47674360353472167162180994637310504913330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63199095965818056903859668356569903606584619352293451010588563431807635376986054905897873784109387681218165026966672415089273447045333707684197569751029547891913778442699838628510300753325723159251992398807517774034918042863197611983714480066975243968618918488213538490759809651966026386013669113012e-3") }, + { static_cast("9.48316047562641761814461460744496434926986694335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.87318705342295180847622670938790179206989705562591552734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986164907695049446699147999970503354260553000953839878275159076458261755428730763560216631851642537174133195419034054495238529976374508256949441111167727864128507860277033299044051865971449902820004978297018651282279654117307535005136847959876138249613275046667240315151303933181873427450473536424e-1") }, + { static_cast("6.72439622398628665533859560810014954768121242523193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.25371945127648842799317208118736743927001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74287216286274945633266572714083322962101975717027023442493643122162512912802620909159732325958549010615659395950026917825109006470507725724883444926417334797999132724229966674370457592343778072797597317430071335665732334697884217471229705559230148495486170835726019893708870900510074940623722192258e-24") }, + { static_cast("2.30442309265876887366175651550292968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.10077615004599603520940576117936871014535427093505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00006298512189780533426621327292231284630240394286315128868176668180396156679505765231684868863847590833570938788465357619602169740491681317033999860409913654411707265663879954547321897801703570651803262843624273611588702980486012373865440788314427239276089286730821085936329475836740228791493079509") }, + { static_cast("5.67608898683707252530439291149377822875976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.07683021912563162914011627435684204101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.67068196412266823466861212116241893055807436102731155140415238019317223182255528301301262470626159261154640191153443230288813541880287940859066915763205210708548641176944414442344483827370453800486623574896474317715521007693847769491979549043149389934860292588058888100428936865217794693086764880012e458") }, + { static_cast("2.81337246606456581503152847290039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.76344844070871521052312758115476754028350114822387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00084899099059737772913859365556118027581054407285954758329055990529529377511066455820790791091871502993434775634942750452313898053395589443975739777882392931281046995883876066279980856281434476038018812014179817821871586805042023183706725376177160577170143175806815414662475357051404586743878413781") }, + { static_cast("3.34983523837648674431610729129715764429420232772827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20852082105692326674528658259077928960323333740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74653990782509243550836183201075823369159155519692846798314436930630346572690178245424014813711682670551067058906680367646181984756645025448347553573937829174199564122446362713993201587207768412845129431576839987405545810458778769778400165994012026984577717831659943902405397254874487260228557294263e-1") }, + { static_cast("1.17365003664101777758332900702953338623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.78053489600925995972602322581224143505096435546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.05893503437891990856263354837986270829833882333366791751057714437977103925035624856886729661425365010268503431934637684230477655839134293793513971115798026793973457123299079643692631311303731259185411381265912635677151301389868547814580071368806352687212447229499485791883769033890017890187866384697") }, + { static_cast("6.35473191480731591582298278808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("8.15332646258649447190691716969013214111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.39785593586175436998336047723152633390674636830187065022507274459265394076960202352145842758484227495355755965560336623550772098175134115092702375767668586879200691996181864401350579269221993542974245130770033239773182375358583651870979382999043883377805409110023459275245515025837447884289450716490e473") }, + { static_cast("1.20953010742292040959000587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.81528620999166889760090271010994911193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.36836082188852137389175804388074236213762814888145199618983165421342520318145120542719392963440700570926350816427711317556249274733873103430368341047528787950522843632555485443202700694068291761260828423023146529348899979040923182831897371799138328552240635790031739904574931369069808189107688786563") }, + { static_cast("5.02826864423656406943852203994538285769522190093994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.49148497614115050149963259684682270744815468788146972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99886724184991506266822294352662914256716265702852450641368490227402118731911016182228523518485801671330942930187800995820804252420406598640376923122551567922827288661396415930336442260706727249870079649992447995120206397679683465259479974096061438201134430443691684817587750638183840953282722156209e-1") }, + { static_cast("1.77623605706485581789272343300467582594137638807296752929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.16881559843790408872998831668610364431515336036682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99216151571584206550599285631558723279674057106881165894202136106399680298454020164284514110193651012658901118782805914666290560642145072003861919887611842296547047036059520963486973019219177746829500434614825844519776793639037139709040279058532565912742721673028532604681375807832044191447365386410e-1") }, + { static_cast("5.44470752993507289829722139984369277954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.89424994358623844748022030382017533156613353639841079711914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000315551756552929413349733123431754994533967419962917545562731445729245526256276165331606875912022797791137395975129631042701829381104269734643785979371368397149024305719491289967486350643357572991392648348784068298353851347894101762457227438358667841811859357203913787202416700523836489423208926") }, + { static_cast("3.47952865539182312204502522945404052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.70647055379554400678099312926860875450074672698974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01003641035516199003729871729172100472722683758579980406598003587323081240911466133797745466321375213116846128724578817241014105529656120259049841543565831847323023771528373536119517374544673647922841984354734790648175557634969225996223997613913923117328699599574593399806697328078695200917124733876") }, + { static_cast("4.89683247131728754952817439516365993767976760864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.96528625490362656162875165666292787136626429855823516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989546369402488423594127072150976413227845609208465040224219805251052465526350038203035493184013561718362361567469358800995276604754108514280603768744650567983276404672018483263585666869718723877857972643772304671740644914409892158811218430582592069739462405196179208350796857344173822141379782399e-1") }, + { static_cast("1.46846575134083542901741736841358942911028861999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.13961295777929194628086406737565994262695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.25155431004176641664360564432608271749851863826540763464893400702786658931519008803678187122457752047812131114041410952546777155616546380522319343918668230249104290662019435519965989945104554644065424460926764956490748710036580200886547368376656130754697653950693222962392418484839778727280176131769e-7") }, + { static_cast("4.92258328635518438431972754187881946563720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.16701285749932963387021089829431730322539806365966796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99846424401823072211356827414998110501335375349159811161820098061831954942111055007312660415928636319873898347702590642507419097876493991759663677610295879480797600223758201686500279349159643821096880668703139199785910150322740521690695804135686666464835791331742866153491003010427701847514162106732e-1") }, + { static_cast("2.08891842024441984904115088284015655517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37451123552204679256760755379218608140945434570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.51853459491101499462028153198307960464036529321862426769066486207166171296494170498179583135034855145454026518293079000045567402865046530341818676848400774327944796661350087157800975247279219703171839848135584471839442165788564723636737356977396947188532339857132058951624239309379955278406455872013") }, + { static_cast("6.59693951898326247373915975913405418395996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.58390504285117244415159731829589873086661100387573242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016195756688330761491474273615136423552556614577036197755742996689336001512360595235890000441982158893267294826116899101351409093661584157256387065246323209052057870928088601548025462625595893993027794606583868972654751596093207938303600634384394989635869479864226583469214082919105133232859648980") }, + { static_cast("4.72190302282203920185565948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.36872614795644276242114756314549595117568969726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.36273289377674003549552956596428296006868194528902491172931330043916572933784595495824585583342079403134944318241053700848989680616524963231553615168899405338957973320487490472555612135391925458093520067531657179731576065041675903036737870428047782297012296101361469066116145701281560378942697624754") }, + { static_cast("4.82034977757478931038870317848932245397008955478668212890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.20114163951150231847420091213507475913502275943756103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98806768192609411674337267672424056960083232464271360229113542018960233572696008296128150338304172594110837781004501757127999427554595909914289685513812993265024374119615672800606621652602006481141937435665444874495693840170640030665928027259502446424921700891997624978473239252852217099622859393453e-1") }, + { static_cast("9.54197957425642506734675407642498612403869628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.34304142023469919031697372702183201909065246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99984326565139803772938990236401058117431661922045573846220380640349699832779123098058540753008622857674232899802697126593866411818203678224123515319186907350469596960547397261912465753250671926347546302198056587430826863955515669743258039245240360599418185587449465990312391796474083173534248199413e-1") }, + { static_cast("6.40960699263738433728576637804508209228515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.00816732049831557560537476092576980590820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.44157504422123306075307680246115279780269010737951173392922320903011026254261224810748434749033392788723902179648854339741924679540874536758451693815806813776859218948113244848659597589114467756894234559650445795659560796369660440795499707193716216403592941616722628011042403021580672267269382135734e182") }, + { static_cast("1.22311589009840382402671821182593703269958496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.10469349157712311976231589483177231159061193466186523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00004238976442526402787977257335501538186147626008780569692886964327726967250839556988250363044075945205489441982444641281650300897861533023502296756146804366735904879346020295258735438264424281840920414740589412010520817925020516062766522452589181209496869654998063536725728358771467633669371863258") }, + { static_cast("6.39291118430208007339388132095336914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.28391975830675164615968242287635803222656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.69505481296349945509651870173004703548467117826619443587513918127052944692060859604078331125022112009253571107992368448403956917792261351644585277417570509975725723863004283151424512684410008159602519982839123505049564570077423370661622862250195728714873045142974264003278199036815752137105673556433e4") }, + { static_cast("9.83190653233646116859745234251022338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.16849063361153184814611449837684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.25770980590636267172342833096299211879468172398651157530921609762966193936659345808702337762714296668889853763786019297633422123145533613492472992798929637639386760407400078511978818609469799050619387136981965857651597610392961103496543359101531210986834447630570812748220097342632073167798940478519e830") }, + { static_cast("5.47317500559057634745840914547443389892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.25569401906009264768826483305019792169332504272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.05154283217149739996322394073132732110285973177101672144476243536792403202554641841303821681674178605013975392578098758039213562899690576014988268448654777051869934823936115258309781471880324840875908371004233345043851515355481534420805940488435409518654838065662552503310797307929345306698760361427") }, + { static_cast("6.49123836382549113110940197657328099012374877929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.85020261717664669109950636993744410574436187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.50660946670306311914365279482095005173354041210571854577128244379583503141132158648667793122314902465794942399303782457347308120094047863238127874892080844189140303644281120192942849585627941033052970332875969503978268193734299765207776684899260119431935484734340685682552324678913617232469193989216e-1") }, + { static_cast("2.24692705476482810621891017532902878883760422468185424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.52982695718321792810456827282905578613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.90763013958916250310703922628537395346144248614383500040096138375431039104002049367585390738671354254176978486242291556216285278163895739264649656370403930009408842065500683071987767757954595210907449882232438368368764844630512751091553559176805208777768953085505825846870225770460080538105432353809e-17") }, + { static_cast("1.03776311938838771311566233634948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.67758461032731062689826728728803573176264762878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03459301282359622046275858130909175858605738103500377882461906122638713902728757596922241637837677972497613038491667511030599129584893938038824302224512570610802632172627579650514542361582967805126424931338365938119495726516045340017819117717607391845493489250022446019685368890472485823905828290701") }, + { static_cast("5.44463531752032992017120704986155033111572265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.08467925444702359527582302689552307128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09056011709343327076534816446309237286970058275834540830372719698670511928227959632093780315386474610345825780828956917908117330975173563693122316666283875774232598613235043753932040992980072681882395580571647274880789017536786697004043527146342091119566202577901703268215449281872604307112909919335e-264") }, + { static_cast("4.32141091390930114357615821063518524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.79962553627032728620349644188536331057548522949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07012654071632775332556853428357456635166481137753650401618414453228087751942869456669180112375507267782856652222749904765639096915852769878278766680206962666525967341796532563009425557062229126958039051450556007688280632610398536337196273409572525834486954342631282999563123455233960154445776600968") }, + { static_cast("8.85195395209329438657164246251340955495834350585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.32014972604017088997352402657270431518554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.71305713463862717236321613646893663926389070764619904563621824742856237889605485601780242185666715109642520925666586793175066523791156636682971412268154170045092095602942426637119803498838588967096817482914325839210531169438704998222940708453881877588305201012231120626503012557840854056737490425114e-25") }, + { static_cast("5.11800358239917845513955452219079234055243432521820068359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.53194625802088957300384208792820572853088378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.78675898815841251401603750577856756795950441245444722873452268896478608982683458941926503132911522781757532432483294128491039729829837206496101278313685758061174666050134299787052246310316361371623036791254936884792176693736621135978412809784428098496835040268753660201880757384305210529998116341854e-1") }, + { static_cast("2.32741466149031985682915646407309395726770162582397460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.38640739832896395418437851532189597492106258869171142578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99549497162550438458304414161333920701781715268855145062033883882900750111819551249273252859663946257284929221986573479403421187776431235203160677411657816941834327558315579342010850796902138914924928940560282841455433144115320935123004884062392612303227832917659972351800421646517607120651251528968e-1") }, + { static_cast("2.88820917341887019574642181396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.72679079374876875974109680100809782743453979492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04797427152199505899776613380207153019163891696040089708565511495563600355422445163531206665239877024907641710076156338867860992891601417074486301976244681251883409289427117509266966735400170413169626794460003914944960446253186507533452481416547111722260834345331494363350198444447590272333886931493") }, + { static_cast("9.11769074488846854364965111017227172851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.34287283617854882322717458009719848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.61412399451200792430940441597911814328017657658519351363425803166936981320098511499093754150499459010245435176020174953699548406222107608392288974835149178057255386825625780361600243592099112823611022187187648569904297395013151014275208089987059198137284635106672418842688183845527005332642735224166e1877") }, + { static_cast("2.99902079785064756833889987319707870483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.68497592645624978853480246954177346196956932544708251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001063692844088210456002419855074011148005470079145471634788112628295771788190807123424233524759763995207569368229563514564551401717941193555837507092120724642714186373549513618453183103215293207086254916107790393722326161402579919794484826396299503609272588338890824693538523484869461094064640920") }, + { static_cast("7.72854459904651157557964324951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.48978348521208037863461370875484135467559099197387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00610574384563796400321310101756992783528974702739913146260646865660943239706104030906315422031586966995536370399679280585793557349882649609015460449277306668457058524687099432479479161198093426061867258598346229732606275929747805949435342506588647203249401335413541148238532118555631296171613732580") }, + { static_cast("9.29770372877305817382875829935073852539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.35261872461758123759034688760038989130407571792602539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00037864179461996490975401602514900577512361928909810135170262283211442500106334885446423595314421485481346967556782507370070595069946883492382064486384013379235733594798086474310298773717536986583185147038897974675666723220012717870637206407697176312759927758943687773764377471241445265488722941855") }, + { static_cast("1.08593927041971596736402716487646102905273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.54205328509148672372353061632566095795482397079467773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00119232709184950657347355900529943667776581936561333029642844322931651851922987396688070423513516427393233449332830940932893802869470044377136541346608056612546712420915411514501773616973022311857494372432610405714927103499401270099666054931681878021711299630772502630342850129330691538468637467235") }, + { static_cast("6.08955210127030499279499053955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.93997641600216752522101160138845443725585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.18201219777662049133348544929685038145294798461233898669466368271726917449741209374562376908881805268589020897308399041338055306698995074087125055703556791502100679603522120055594862139867723186128435543540272128120797808148788656196331354569711892744404054200303870971480027638854018077003767037387e22") }, + { static_cast("4.17002058199641822966441395692527294158935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.27638775324770278722132099691322082435362972319126129150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000325050709508111108865304342178215954684414490544574201155545551225580135488259163273316494247157849444894518301320733204512003009459708444645141220074915996395890189435364804366091830247042355490183040883445209891891864651638351487974364904897430627412415757188029347485931227191708441175016047") }, + { static_cast("7.67550081598081896869234519442670716671273112297058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.09358860541564251178670019726268947124481201171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.33361058888703312937877266409714100834748582910004102998779521040115944440359724219966898465717158230452195981198500825979353396690326287544928081118745655488492150353523103453131904616559184005975246310430624687681784477200062656846973772093687820868635241069192671298954998139357716654945366635020e-2") }, + { static_cast("9.11928851435624994337558746337890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.77150273145831363419411275117454351857304573059082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.01072215443565297495212875757828431150173416786594077990011283253611684077171961857977658555772993227256701225998130851047810587496804030395055038866276482446366864045774522304245866613460132889356389785400787106849829332460233953000396006079677394660376277801825929937944079178448460996666434091599") }, + { static_cast("5.41420122645918127091135829687118530273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.89522592882503256809384462044931751734111458063125610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00007565289778675652984140979321399062757791371437603651125252179594586538728496280877795475718254343845999376499222253067347916841829323365254311918387151598991472092918535912843066893311920458448486904240767256448921472261918689220109607027673999114234655407258002618927723100761498362332050377153") }, + { static_cast("8.00879921885989665142346893844660371541976928710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.65125145484174709054059349000453948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.51542106881981491731489464208722559455080283729538316329978070693260585378415308395373558536702307332302792317627310748549719761801156867236663991267318247059438589418271824484275577584765219427298744283723772247523591169183694405713456066811755471408195734266771535080425449850856084868376311119689e-106") }, + { static_cast("1.09156997362350409730424871668219566345214843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.10878062686337663933500152779743075370788574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01957066747628902940966302510092960488528925253540221172663471275503400990771789589916604068584334436432589666410671717466013196522730609847023637947764642131621149159485396625786863911618319465245064605684158683676154002669412578226202367577007287146331656090836085181386754790207143710478024828107") }, + { static_cast("5.27981737437816178726279758848249912261962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.41970852096179633861083857482299208641052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.43686253241293502543031164235680564280493113934425702290586259672655229919415634458697404687915141160074152506872313697917935113169212018685900336128740210227144508079482606408290248099236632255964024354639101204012497824568760884660053718968331056137812934970479251589590682389747704367113989950745") }, + { static_cast("2.97632424685030514410755131393671035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.12458361916200374253094196319580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.69742603562041824153926447786929280716116286355510132564473072728789802885515779796188477871744149730979853211785348379587523589298115735526488355106077778856284664084128422453984824424076757383964141778964343798745285559893404942252682634909106936299245602255752362338032501973165524906979409622054e1344") }, + { static_cast("8.12277007629636675119400024414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.92673741168140821855558897368609905242919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.30484996489149406381687564563779425178418692009670007244171321324888859123491778857160269626310259110411696125879945417306210294026918965107428093516365217530286177050990880067424193779915234192484015646474192080157981645949288654940510168136275269591421630149209078542082633232345605476593203338075e29") }, + { static_cast("6.75063843580995381898901541717350482940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.02748489106749621435632491284195566549897193908691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00196404947416174365030420006016203648060565955934806957206111637856432455172895201651727892958586584412299635092294986305134023877029915464080887124975616815060819276759381700802994334432976763795102196206567937500407359464356440088544622676160266170981561234435498384331071158546292310523236254753") }, + { static_cast("3.50174444164054002612829208374023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.80282755451220007281154522615906898863613605499267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00819798888901128629632317940565742032581044787310510298394051237610722547925779466083057852335930819436022531750188258730486171674268778076637531078630844955462136795806889121317307097195981029957098770479755079052235805500969330960373439119072852284817639069793570751583988153638659438922106591664") }, + { static_cast("1.26564950853483537684951443225145339965820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.55352677703511933278261725188684749809908680617809295654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000394312365539989563625486331626137964273811834798695005780013495760538177217100805072673596190622159320905648378255454000218262505715454699578920413495174693604468418384665870032433868756106543653906692751058614669494849726609491390952522788637204327400613561970408136313418894648226391505731573") }, + { static_cast("2.15745882397261681817646206127392360940575599670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.37905683348865193416088459343882277607917785644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.64117851649613850769514625497977880278916078343037571542452910699608639199334716242087257033679813405503457913766626678856765747940796988239184619492044398845847330875248279377691256718144764352787323595310916665202454075432835782224634142882556904024349917556799442289975480861859420905292552431968e-1") }, + { static_cast("1.04145372167880889691105039673857390880584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.37802182325172850596572970971465110778808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.88526852493738132239113873166539203263138672058127955706951262195153797473038707601101237196070886256644090185553908945280688151557324839521372121066434881841798255953853902832020964805296391060444306684398308798244411237112095640393380398474592654522034844007881900667824504043884214270458892007901e-9") }, + { static_cast("3.07012551115110277066833077697083353996276855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.68879194147396471947786267264746129512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.27959056811329343392664000245431816256252125501370190635108304735068414726869009253945094404747463601079257760616120868020903017002340732110943618640264478113302579667971697324950504699622151612181100300886867598913337113652973737056690812163582367071363756081204514554722838161602803979904270771466e-1") }, + { static_cast("3.87855552747419096704106777906417846679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.68123953003118842275398492347449064254760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14414942990692656452341784125767590353064260907248467847740571016135049928321189261126610028098851785915087403250818786340815261171401002033061136458109120291157079359913768807250954139969052510045722307049663169894534742927788300920701107994896596920105547258658675585904959114220585301112702429345") }, + { static_cast("7.26004581866997872330315999533922877162694931030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.06413410745037140259228181093931198120117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.21086963011262781557962916039162488992600789192717542131434452153601149170623279185807445011140592247466432290015786700658875253434281122713288249913633617033214856219833669907164464033302015146556043425711342744639683355773156696931162767677537366527811567871143970446954952970890842842464186617910e-1") }, + { static_cast("4.11288422352877880427968193544074892997741699218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.51736412939929010690320865251123905181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.24565288563751822331299972603179488550349468370067144446751898852644002616709216207408151506565589257442807820798232055968358812640290558093447292295273379034573533601586226697268290915360691120466719143962043078879323957769794563236709847407432551615445562560818926972156677354022231138620495943375e-4") }, + { static_cast("3.83413786726422607898712158203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.00384576840691153165607829578220844268798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.70586881100241909365086281828106615321437784717557599878404325717613404517722842063862151116432421295729131945352592123500947115034261116251456345076603582494211858526398683989440066160175940760838173788310914276938532934671434380694237696835717084352874743706871899256563045584501545107582617433574e27") }, + { static_cast("1.45287638810286156079709662947152537526562809944152832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.12685751933480298196330049442792642366839572787284851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99976308406201382296511195677454028213966050559386949061001176100458674306535766658075727649858861936143578824990999294178518894376297296437371242014351633015801209221765213206140971726863151455918302666401442029878834264175629251102478211077868646609228275473662440136138981614575523961652841689231e-1") }, + { static_cast("1.06060778784217379921983592794276773929595947265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.66538555043448722320365007476539176423102617263793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99991775850777769594805464682102392095766388724998006545282885743063065509840288039071353911521871815954556155694843177720505424196812072094678443706799908575637539974472545844157811962504294140635183658965312242832638263593804028788156476482121148602286677141129409544764834011834242854688050032534e-1") }, + { static_cast("5.88086377090030459208191970787993341218680143356323242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.28950414823927278495929726886970456689596176147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97772228399557115917897595553123200059617745525398631036747902716221825268917059130877148214691312502174434355597848183024102187672671321353149180399633699090375168044589993636218162674313714376215322688591337150653523844732601246528148296899452660176207080310884559549441104143585753370139662688312e-1") }, + { static_cast("1.82088437442942030486392468446865677833557128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.18170819309718790101129681779923430440248921513557434082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000130754723378331003328108523077660890480086159377400421770916129060299296337133805493313328717117334983973342138421022906982702012383037259191961910456959250943670084798790257349266900179703918444391347033677458675178576414635996649806132816647233201959427396166295868642002149628537093670669003") }, + { static_cast("1.81790864213692415773948596324771642684936523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.11112317505943991591266239993274211883544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.16716616089260899158634927691311476940264689424270830038830803482761816779192664467113169986590716888439242048069862364270415910055880132349242712046577768880635878273030333655678293456983297487516817843334720432032181949191565525929129951842591644277698817197191950932369312197425519306770280944742e1") }, + { static_cast("3.11682213641562033444643020629882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.94098588905476396315741283160605235025286674499511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03790338780611240821364394096187689009151442337723127625883997000112224823851501188946812750320424873330954741819494803462494193607811995436113951374495986635400485180461374008937550605117989616259238001766980179462154007176099462553721961527948038831707776585902099492828100272597482214965326918683") }, + { static_cast("1.39087864126595343872150323250025394372642040252685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.30102723808126441440435883123427629470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.14022877396721831842223346046335424470246823884137406233750859143164782910052273120452909159294424816461360814736670369100321052363875210113861850087708357854957657313512898387152990311841659387594066789695419982631901574195401313785030478101180804642923588217360853722001240454059693137169086797197e-1") }, + { static_cast("2.70245297975474845853308125676051076879957690834999084472656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.27192418381639527069637551903724670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66297652134236153231549630311782646457435806521553869102045806271290140313907532572617601088189845177879703715370369231877915346831429034626669722739550299919960838955152823532091259662956246982857242736145549200749997723311019597549168518852317671248226020048798842889139150504890040937192852486477e-1266") }, + { static_cast("1.24917144681230411151773296296596527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15140916555233019380466430447995662689208984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.38260599513773427745927397841453042338248242456988517458147773019568704658853879515960004076402277283883489795069346406439823839016514254977654510204974986928186171239215823810556312920621087546486393810430469767985081698483192169492133075210737954383435371131440185644678524564816434215238704654516e24") }, + { static_cast("3.11836231019214392290450632572174072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.07745884054014173791813391289906576275825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18191130436089764539875276066824383600066278177797976268794231640866698789531115667856789828761726794355968881132857750694814866048339710833375629295256557712732385065863487440162509225900966765667937759713986800012768351783498265785505802770202831716066805035224331887004845557896771449008224340669") }, + { static_cast("1.49079206164313831095569184981286525726318359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.42373605503094040614087134599685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.27012834121533023666785182346229437241289754499051958039863912420351581912036946871768101343922573098899177777951053704877386501476998681242293961635818871027535060307630949907397555951449420495765047830618356183657814571149049220337636474144629773918060565875711712572574729922979876342390263324772e1105") }, + { static_cast("6.66620618596326164947279968586713039258029311895370483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.21273515382789454086776004260173067450523376464843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.77204862888219369744788573660770287170392769001738688402155865708513288003188496251740638940642992963657767448328425353472870578497253649660611575851476001092271122636729433601460150801906619434951209083981408041494135365768470816162930615684520542260356335965614720676272646217323394466315267451500e-1") }, + { static_cast("1.38078986432311534571226729894988238811492919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.93562727297856326913461089134216308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.09060418138444387424424059062331178711979043905828333720448765913252697584689444873629369083510366476460104106313375773568706388071930121668811178870306890980290075045537520987441428335324653171796426529164093528427568372203611999068229147036397950044150945977202609787933363721956655499688121770967e-511") }, + { static_cast("2.16771050432941410690546035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.11416271213217389808580737309284813818521797657012939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00085620226622470905732844417905757963463091991631468675045664887604696934739150514381777470211904644648980514762573227291787791600677422794047913591269830095072415283470532919592193733010388187339828883232881043401853930198928232094973120867346831075681954343729371567448461485192448773328157967492") }, + { static_cast("8.66129276411148731409928025470890133874490857124328613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.63230476162026535980054120500426506623625755310058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.75677926316087201992937434104172212635183402081845367050961907386982900528845357336855433020027701890844425355924313158894887243517734179729721860852203216211626732274220956786288208809210677612308603888585509873354794360927290410971415768734554863757722931375046183502833124862440220040682623894401e-1") }, + { static_cast("3.35057580340428966085564166377253059181384742259979248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.16747650803829827736990409903228282928466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.69762726818915994102636669640248641695258916516178220951615332541358403169898089796085534108216181605452622185779736827460245748311614902401628390881069582094010945399117381574868399439034359201699565625835678615787458358138834274021214751543009200113868243044350923559610553355961511493945076046223e-15") }, + { static_cast("6.53381930771882064867828177057162974961102008819580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.88128239916411388321648701094090938568115234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.44239576906295172295161064728901353975092629051590219076800377900713837403284136783431262977433666893756151770251819781412876948522321366628456614260642901179077056688683539196520237460889892611407142177331136348438247424975172992629120895139251739138531630904163246094893508737465346231066931419052e-25") }, + { static_cast("9.58824111169796669855713844299316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.76775888223340871263644658029079437255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29079715270199960942963556473318847100392035825806894633874834481890517355918139252275167622132083673533042352315135079499274198112245747602316235108479674713674202663546893395644195003527204518806401402778881498713093151993690595544754136969841959488665417573929913679381495568123074940059218587082e237") }, + { static_cast("9.80462544807249748030075764404500660020858049392700195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.92380061818621106439763934758957475423812866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.69367957215417366534795032414092044927898150798664469523819577887485052498975506353682229088031835479896261249192998498541269057857290594440231095317424708287026045610877468508170913712129807960043309223866462243177903185979844369471346406937023243553333556543631914530281862882346915332974736594434e-1") }, + { static_cast("4.22715824828159014714401564560830593109130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.73237473383745509636355563998222351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.85142181625610748727512967615608623642319089823180852116567338775155480625397140714648406228861247464456116191851444571000366236244452154069748412545940070600491678946250810802096421175871317523376451483012224450957973158915531091130907648484702974041033736125577265886371493322366154555363836169078e108") }, + { static_cast("6.96647127037580693453833191597368568181991577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.57526947921747250802582129836082458496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21776552625627356590336877317582904052748969026951170943346144361121751863809186842688158978930311760773848599440472082708351294025960471667864592532594991999006914698692274398613842119283225752843571850040859177332114176284555447226936581391382855150937157990431287391269415649433263516860035782138e-414") }, + { static_cast("8.87031657211726951572927646338939666748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.34070958469201997331765596754848957061767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.30679204065692425620221532321916410120280977665891018935099692677903142836365793713310074103183167526509810778546217793360039724544105606790669360053805611269103519872268834740224972933178750433774433912507891375768945267742879488012985036171398185645729556921004734943776799979369402749984084043452e26") }, + { static_cast("1.38894800193875870772397540520159964216873049736022949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("8.28834370250225660470277944114059209823608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.35222056499059860815119534190744388049132560559707635179974362835024292102863415735162094842301916959003527949486946878329851243593307281685479130665725517616797588026104563060365221513904192277451172225341242860418605162130720263571624685346061029050164764398879401328940031001593736913742594656342e-4") }, + { static_cast("1.09816947397275884975090254336294037784682586789131164550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.58183945899629990446480509724835883389459922909736633300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99936261439304212269593793274631621066678586897953594510473482514688267255174393243589871913940083113695300948318689338051222055912287552167309726448706279958229666015743107592418824002439360290161725288760084420735569321637244499982204153705684126108823317986930400592132185032791247608619277879575e-1") }, + { static_cast("2.31096996516865660353801104065496474504470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.05549814372709782617221208056434988975524902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.07259003265165794231974650932471010325197411080114721904301457157547097334313567798534807882346741414784333355642286915364891740931795753032224983168581398136163731017251242792429565442336378918505638415347606482959367519064678452374991852143987534832456623394400259546622175052847902597251732867983e-1") }, + { static_cast("8.49670416441904163828979790196171961724758148193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.06998079666728116224327926886417117202654480934143066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99758288631873273226282145885741739757443924805027385096536700548341955223394388330738555808413815209906793614975662061712919602993250011794563507497959691981853673962928960543216580974445772540799559436678586781978389593065105455927885069982188267742598791601651598840088278986439446428992363728811e-1") }, + { static_cast("1.57311385387133050244301557540893554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.28071775496995989116096048565651699391310103237628936767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003170338187821543987107336746662729109295981087069294808638827112958850528655867141095917778641007871411889107729782401763128246612168904257048743190385169980528080025389670873111442583914650963121405799362630066123464254273948242629742051351814124726982856264616340030151043214382406894418159834") }, + { static_cast("2.39202138047558889866195386275649070739746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.49118181918548543762881308794021606445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.27339014094927962826314328575939814304054781018385168289190485168514741352754753149678911930165646861374735328175462043586928267957865268734389479790773849220996848074070389175534751472812216991107745875007249116250242613067032470443930894251972922681126465003519414999032823440924453088711434009253e757") }, + { static_cast("1.64634850170019781216979026794433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.58052312996124176558421225990969105623662471771240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01546348252503362826107105198333600916123885616351929759095090370675683807853397698537671019348523544289454424258903395372242729481623263158900841743559291226322042608326721672299094222138476822715326186152957264351608036142453170432188932360709929281850323115131827188070509946087921486355921396837") }, + { static_cast("1.29984771123733180422585298252613483782624825835227966308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.48673306853607149757845462545446935109794139862060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99382895797564405052408771210317692764125583490813721738650031785719409851796983570805688722349822979681595897622086712994137349075757656980372150545265412692073900115244181782170626388308672797472118433651575906690160786295103594530704832482562910548180219532761382129979082146445301288761331520852e-1") }, + { static_cast("3.34499410762214122172508723451755940914154052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.70362841707174993644002825021743774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.40485852822901975442109716898610918193900542520961776863305069906497895793489542547982159745108266280524490077140951661552295048439266934614559790866489193897427949324691009938697269495988925070011169411841665487299534902136008055662912091113639828368592572760704050198717640286295766255031666140310e-272") }, + { static_cast("4.58769266685160914676089305430650711059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.94008884841098259987912655333275324665009975433349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00265878013514519296809865295705868217393246867225559245606227172893223522667583594724300322356488286875380629025637162385262938162022625886814529504008804417980773476428819488610083450291142913844379562656183905757559036430981251862699509205398028210683848825112302095809741897956564300820095580866") }, + { static_cast("1.83659034529005538161072763614356517791748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.28717719818835121259326115250587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.53726930767980134628351414040002163694004937538301878071492381306637265403593248974390687238745936146996356402451151949754817939176416474547668969917407094657482938942615901000965138448816198787619804034435155352704149778316444976717855180409986287616695020212770570197624985971189801426264668362739e113") }, + { static_cast("8.69656197110674742973418505087579433165956288576126098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.53470532471532833396210548926319461315870285034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.36245700894899388555856775460955394048641742342223378203581109445790321544636857502869379407622931929904915591813410010543421311751441003345169506628319334514393326009523930245673734273160199057057608984977895920935149203153332718973184503752228376603699406900321208889195409621350940486281346111426e-1") }, + { static_cast("4.77866412699338716230101908877259120345115661621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16847487332184418740155251725809648633003234863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.00939095440309291336847802488312895385004430053772751642212203497067924870860269568166321148643247526572505972984054880543549485653717067216843154655077419087852705718322510631592242331848706588637404925586365121042986696317386544833327481602868949385627978856713298735650783856235081147982296346628e-1") }, + { static_cast("1.54963799196492800547275692224502563476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.11204960957075971172969275357900187373161315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16782897318171377990330689886402903355059628193684114132825684051875757607797689933491076299185969963004000061078683006351157287011440524301691431503915118755080894616168235485089522630543579349054155603272650786560006738889360398191602249883148592535791585897969899944427735543027279681332101510149") }, + { static_cast("2.47000679471161216497421264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.52499082730789443929086957041363348253071308135986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01911645804528060285295007365522901933244353571254108413776362642912835636609229733378877024828901273387523484327765744744502840827542422973162779826478327376782490303695679704814420712110588844007646988152318154340574171527693080085147287526207828218450010980129801914952299876654249129807403026665") }, + { static_cast("3.03723549186705435616595583070420616422779858112335205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.51110323265247643576003611087799072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.62158625261315621796784260963880908165199570383258880752909601743905724906716730454255511124675934144867399204404978430279501754463613692043192608111413253272638040513583589571469911855611383025946828382761211165356334768347578605666178294674917101334371471550226399719868797818976469869780054171828e-204") }, + { static_cast("1.79856395286417303225334762828424572944641113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.32059115576763366967701779364219305534788873046636581420898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077517217823836935248077849892691299847903424265238524662417641027601052147271170002075034613200815926835872160958521395863660559755851166354980024967551112970300127247095245969854003499125350435566412954660499861774431261483707515396163088724936940160199016889915664585852452649068941190636190") }, + { static_cast("4.41355937354146021789347287267446517944335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.42641018144159374969603959470987319946289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74548555036519520791276201322845305843766995125882533366758793048355043544777974793130718057932582612619627280143295972890756755586060864163343519807569602024123450673829021330095007485505005460893008699595178496760510808546265795771516348135206769564722897763853591915237047669941031110007831969575e-13") }, + { static_cast("5.69171991829923172190319746732711791992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.98043102542145899036540868110023438930511474609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35629700595091638395832213480888201727086153567756638562745744247364577078732772888391063571800696941049290536498639573875131887930844892410621248852158649248884548273739508794634953342193256645662324249539648039244590505104994015484168576899587920875428234320711411322714373060714140422162212909132e1") }, + { static_cast("5.76954356011381364402468285845770878950133919715881347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.25111872914564514758239965885877609252929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.94463304445870155806025859667737584217029774659090091223865132706141204011793568374081383686497430278169952431756767677964164234313821914580067310902314296078439102264644178954457549643252195734243656729528702645014237867821529512634908260975861471735012585206572278726071364924835281322609605715766e-3") }, + { static_cast("1.05123768089208714283672857492391017331101465970277786254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.80326412933219444312271662056446075439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.01096635654174895730364890004274506998670967372315294988820585742497849923309225303695080415166238118944235696360277258545630995713146996451284285658251097270549397299546887024456736142173128664145649440632706184379221313274424739352233838868194748496986549948050292922466160812395403732938083994855e-1079") }, + { static_cast("1.28163238607435392424349629436619579792022705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16524102155253899582021404057741165161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.07879719574926016494490747415323778012199705593394831943581938296777477488312425323506097154699459156568032482136467971947677672762383992541647262353219851774496336332221673599562229050781431336707003943210680119687255794953033119424826346843688505841414943672869216307940977860809662475253945553141e-104") }, + { static_cast("7.87202251453049029805697500705718994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.39760572205021471603458849131129682064056396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53207555977032989055018208938771579303277505887799197079806149426805566503858217166434829573392590992745607709024458374528640995879305116834709101892580164791296787623750765678369128997876794757719509455355831607218534572758406336319858307548393197701741434159035106328532033366541994641153056109739") }, + { static_cast("1.85413190872573295564507134258747100830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.69406846692120716113549860892817378044128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.95656735368615067592522859512955039643574891198504549379998394284320814651945584264960315505975008311532240586619468218955713277820799989277348072854744621874725681637220043518336051308494199906438625737004480910828551371454866506648373987268921256736551339157313351536645840751017335445520822528269e1") }, + { static_cast("3.99959450842199415454558675264706835150718688964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.86709578350118121647938096430152654647827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.05340685717906270754605609530501932449443307474519553599524954021671059012176997891604734383935653924096296837478833892286774229478680952581431502458132810484806788952807655375243507984165689501659897282979828575230799553474262829100370309746639962529485962944150334131789310986002849666502428526895e-1") }, + { static_cast("1.84674139572777286713578526189394324319437146186828613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.25571659299317051061706251857685856521129608154296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.23722070622293990830799081708429380180065314114356604329745073190591014971022286949735867992102290979570786194665670044964971913376468986554402193499702945966888241927569660743521069322430532256408138686743620372490125687831732257527068587575688326301178711197108267406944507908002982504230542257301e-1") }, + { static_cast("3.58473911190903163515031337738037109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.60245302222975851691444404423236846923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.78031144785764416938612223102409855040299356306284612439958299013225825622202999580381834230141933121841779061836895061770649393695477680433223418771879979265527918578121214616513115300315506936777567650603403724811526574832706041635294702581230395655527148395841553708668562384577527922279281988840e346") }, + { static_cast("3.71269374692093090395417220861418172717094421386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.32704198530596029974130967143963744092616252601146697998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998245586875139489901271639028340713779059130027015276766418411283294006537627833255021572845938748168207820412482122290518617722205438714506223415635135045747382101925106285222804464701875561904552995223695133038388901912278020591663993121292169965721308487953050363811103359158918910384771899011e-1") }, + { static_cast("1.70108553436059684038639261416392400860786437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16607504683781455865482223899221025931183248758316040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978954129792622644650032269094574319631975777438486754903659150962464082118122945419410503323172656817200054190506282421527117453082829189458035945776425795407971906137471812197621061779135748565507246203908206485915975691199432826508885650310574999400116127525787480206412253878273855862615753183e-1") }, + { static_cast("2.09225836667166789993643760681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.85669374483343502246768252916808705776929855346679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00843563284699754528712961596450017035453860350588570410059871012011253379813933654529429045301434484839481489237559065322374683637748571974104032389976926103159187339564349254244671809494052575105796625285810628759847430784136996879048594191371809811836063684074535025913318716848524590469577859424") }, + { static_cast("1.21714727542868383913798879802925512194633483886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.04024274981674075615800667549137870082631707191467285156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99851738180285989619013743122680620229360476738383672375457223596142024538032582334141363701685216531955627726353087504478019029760906182307020379318817894422274668875967247480704625723584657033632048027924110460864147683431850155444025526123837240535234902995892523890236573378473187948012001689440e-1") }, + { static_cast("5.07736820771065972511537633948819348006509244441986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.97089812664133678943301219987915828824043273925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61496103531524292145269969904333508188364139708137329208759077302004651060803860997069231846146525416244529356233531058823752839075298907756560474430217361656059248345442657322781131236619023757967452575027788503647455091630937116588678330308533380860226144011143233073363114955647590755520397783133e-1") }, + { static_cast("1.05107095024027863416904438054189085960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.03411347779367872590228216722607612609863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.75435618440696236423847758785039217191601787351549036022831398969378880644344551767328463505949691251600586393797511528994909897140379260738080763330267660481025359227717949542759648019166102411005065795694130304853332521480946507674204615568889856249883941530835820527992056685661760535222848429821") }, + { static_cast("6.04991801259759207250177315273731437628157436847686767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.18837713372669895761646330356597900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.65759593884760895858132938458504295554865358684199156580525629386190771627069601339728387260476959873950047671147626130674714736942807728977752816985626622779230687686049014608462755984076183185977629942323400832151270339085974963175219245006492664764899739861651980200882059489983917901390447959952e-3455") }, + { static_cast("6.51744748140962656179908663034439086914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.07710216336688000492681493991398156140348874032497406005859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000328979143507415685697811442096253363291297955720636385496027164054688294193762566482130745852122932064218776073663482596744861678935376393042841878114830402198126626873661961854660156517253426476105318520395463096676472118157780746408448524800033381676594338617857965937768629354079942055143731") }, + { static_cast("4.63884491638627549647821979306172579526901245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.58892435788971937427049851976335048675537109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.33715260820791317269987064747412391800309849955602033217225409481400578667858265909262657939940738177907804353137088637745857746470695800199690029742037073210058760217313184489359114691758908649867287570270285365266943814797806817843515342646282514312200010453327035336204860831498248439822619093280e-38") }, + { static_cast("1.49058285795790606154814783579354298126418143510818481445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.70317518258870839037433242424413037952035665512084960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98108922622050827087546461298822670842973092479525322691759952475540660272868395330655428828449033553950251437644999243615808527145214868010990354809843842150796169597464947831412602935689456012651060606674408759590837715937317107067113406559618224088301687347090716482594166112826991011166298362788e-1") }, + { static_cast("7.50315265219419380571252986555919051170349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.06222517749687384025492065120488405227661132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.40175419689520964937445314051307565108961445693694723005043311860973648366068520257018285775532813235354539177271941463790001972938524250513944002301467776271129144936307452041012641877576914077850978415809262774052418002232753061586235460151777159128199018488311311211799819289180487350061980646390e-1") }, + { static_cast("4.26847036788872134273342684451790773891843855381011962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.25843044022171965845742491740821833445806987583637237548828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99967215285852515192073395540137950482554540502668958238310575910483321879481952698928091493628164541705483350832773369892703138436296385686888980010809861693571807457349075609182274750398269557656870778473684116326560067055000556274923680535552295628380182973673412404308833575096574012516864815095e-1") }, + { static_cast("2.62667296496937296979012899100780487060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.98943432793326180699211569447015790501609444618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000067498249093796554190906335150484537007905333805853084798522029363004660855846859261868482180160316566139837296027351379815963628562093199672797915615284584800543052123602981811247334355647141931097257473080865200634384690696676990980451941954802180365065774462909125574737179287520936788897430") }, + { static_cast("6.70966669446914210084287333302199840545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.16310384563290541287683410587305843364447355270385742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001744257181843369125556914164986065767377720999640888705793438430385027106235014113094055738186706162642114104415940235112867181288621050157885040444050793876376258047873939583048138039901310315757778797936384132441774545886210926930901727852204521859059543099653693673834002390277355781829097039") }, + { static_cast("7.41203371899830177426338195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.08045243497875006967630373555522282913443632423877716064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001460353450390109753320201848917579634289514937879484407258848004890744776169944597998175250117503923620359242409184317540187082543653993640048666001395047165769964336795615132413269257911431079896523695358479509374941248440346987424514128254145411471716437568325046246372300034330801593929796699") }, + { static_cast("1.69159255637993624077353160828351974487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.18026386927718329733494329047971405088901519775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763302348245649415440222014057755125288511751974439494118531238495212343084716356590900135150471489029857630623786718849006602487868725615880115082270216521029606377055101314827010471252021762724425333126829904634616800319752383603387644619737656819562990847546393907303039685961266007323499371276") }, + { static_cast("4.71460529249768889314964326331391930580139160156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.65188827816496541345259174704551696777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.57039862156640741370099717884062397571736028728524050580037613318788846117662035095375103738860527021001943141141148597120492387251375648252287053831107964249223144395667696166786054472499439767489130687268705183565392558321079668035341534647161063188715235627145576677691259556611945549071489064974e-120") }, + { static_cast("6.64982363517832908428317750804126262664794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.04124859899293669557307495665554597508162260055541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99916721594674747376600569188805403610749202879145587384797447934876298553391460440217614450811626491475153827239769211949770987067539929764774811195211928780393852025574440532735397207179531706592529705918782911567387089221968997852275611755107175151890770337885129722749288992344581262036121822096e-1") }, + { static_cast("1.16893441744004085194319486618041992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.15678606859390242789231706410646438598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.51388885705521092082676462955313303770964042418254877907252507964234420916080103781270109330079123766686738994000772870583969928581773756873588657991143050640555136731739608625215812170605441235916882843841833089297543893622016574335981753027769495373907938555110085958780955474425308783814139862813e33") }, + { static_cast("9.76400625826371292015348757331594242714345455169677734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.86442986632989526896153620327822864055633544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.74623224798347601232565592691979711045580692330641567994756260200814740060669606546590062265074708542429821154943403107394779336685935160305728814542562226163058396994725320974264154815235226634053969860486205541938719842224052325659161610602552591765080618174794519808159266445853952938084827117419e-1") }, + { static_cast("1.87868482843651634084380930289626121520996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.16929872732812327740248292684555053710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.12028119371494031430335044645564708556145176065304647173808454044697019950167941050283479818252925468559303066000892193796628006878431527857608384081735638513924751307741786259324802053021768713537078672257166368405154064404708746524318561350343547073960189134086007775921344634528456932868446419630e91") }, + { static_cast("6.10956934891920536756515502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.61245994668030334651120938360691070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.65700792854128829481158381754556960783201446467603874396477753649899987199726050381764154587841579338454205142269277734568001743334867145801385330344031718733980559420806485323497734470145803167224651985614888601581616073332671350983075972830731246525865989689804085186895425350117377876021236432000e41") }, + { static_cast("5.12940713132187653400251292623579502105712890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.28564435019894255014284711879923861488350667059421539306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000373701282973747520930655159796229096921541589463952802693848825441766023480118817224366828254246104620872707491850843628745742807472462411859435943238658855518813616022964453910564185237673973654468864102738810104394810487407665604967406614750596030541491730666890517480494969397423025082726828") }, + { static_cast("5.96919527975153832953774529768153911390982102602720260620117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.57180582106150705794678917870399459388863760977983474731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977473944483761872828387581066184030968843746303338716635967128051482967926885604187120298468309076374477372898167140591203610593108721399453839682426096478159671434202750765691646383078954275710747248498138805135910075991839124150638583040898450493059066421550145802666193053679045930003027645237e-1") }, + { static_cast("3.68606214248608399230988652561791241168975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.49260037966346908013329231046384393266635015606880187988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99985103565493113484475922183999881089207789606742350698567516671823393925981239943259423556444582299741676725651226703123182719333272364174176377120721866858898501279006570635020422790273788959353152995392898746327367860857986758594342210926743928260938298323338805513021194833182527623776519608700e-1") }, + { static_cast("2.75108139709647048221086151897907257080078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.50370430827189238698338158428668975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.22207684654158090072166193557643641149481975652647701708530399277363664695064351610680468504557225898194931419933867113331640493326162327026706800979963281990313857552256767561246682453632232432467037080629483164984556210425989798928121976072588554960434306958147259366170108308967342505596481568498e19") }, + { static_cast("1.81162455673292015490005724132061004638671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.55260000441009051353087599967039977855165489017963409423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000739442221122260724005033635770725844741914207974197964181739354726511926916714698090584379202017604302885037125163720681613028683344989131816590462063741786918631523895090976438946284620031268598318287495015673164204411596879025777677083658398098322196424671094954029116891354161564494388093193") }, + { static_cast("8.96493500879970817152297968277707695960998535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.56875157541190674237441271543502807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.18186472758714615747935532618938695169587522725634994323764763361322541875338494379271005378981383706775962465651100098009942121578720737172235160080858098630748438403135919432305006360154000115695658966205609995229485314131439314904570801339124033312271333615588491334684665719513845178970476180503e-41") }, + { static_cast("1.26612879808979481716102455379768798593431711196899414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.90879340262861951771355961682274937629699707031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56902896481771879143877379682638527882901861190229819789042792546979238367054331337767498254741605069110970147845996240165269976456347023401814558426675219095881612725781553874494895757386564444732770552998856125193687086542254594118439921159929235553297916239134941949770234940282427408194492643353e-1") }, + { static_cast("1.05179746109396965946490565269044736851355992257595062255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("6.59374100718207543231352829593561182264238595962524414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99092782662380324729163640655313848714756101648128347661760755472309885143398472302956067855710190800993042892779094559399021527010697359107101541167758299014549008387517426503427862359734988159027154498990787998696863714462719474369182220777439814743092111459144669908819231194636468040015004769487e-1") }, + { static_cast("2.26677931802150922635519236791878938674926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.01284500605095928449372877366840839385986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.04799524981909743425238268974274974124170089470250115095198088233403741098790024678291238778471336000887693628348108623078030852501843027636021269414992355439834109447548416843301419510567977485938290387496561912410461657784176868621026947292962832450377901755820567805673466030070278228671530695195e1") }, + { static_cast("1.47645383833588006439185846829786896705627441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.34770445962486519420053809881210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.81864953170833366001029957686457080479745389229343183507996187270256012032168347753440691289295163599099444007484206082939466510290612710007371495952373847856242772883552123786185299979765598455416935895627334117098932505280856391911876837712397381549095944110724452719067485663398985307194410072346e141") }, + { static_cast("6.83690460562575097469562024343758821487426757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.83530767198103986204138493576465407386422157287597656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98542687144721504190991783229244229904437024428948393594123834827455412276977464755147963505927618995184986289919531376928027005710396398910486083058794955925781790662773364003988254537015097017811287414007455159323257827799204950099119284414629154584347927772687791013118617040392415483793228615528e-1") }, + { static_cast("1.00205353905587213336758622972411103546619415283203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.21472319667746432969579473137855529785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.08953646324319429602818744612054042909432561532126770140572825180403651664408870454180981154606920328617475099247353850589948028434533205453640961164641456021776839621300753911422835934782850338468313312210488559936609343534193099022841479411388023651172446221865345603921529386692401675022261632417e-1265") }, + { static_cast("5.15232802831238245744316373020410537719726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.60510257181055615571807493324740789830684661865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01431289853951002532506377614168990948051280337886607436878494527645645147723859636940385995419356184615086203041458176935646525562258868511947236909026624331932959131571326296466151873473074426347666272446566573176007728397599624815497760954111152173140369195400219514948443921717606923360226206339") }, + { static_cast("1.50327863210486480966210365295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.25928705204024481645319610834121704101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21705224525603686559675227491858310594380597690754424568785114801297385692314088399732454361300955075549296567427255869777962816305497530312793581969492733775461667703068826501146498955373099052386164214730524062952781381010426318671419140310052915928431939434595652675036589780009141539593357125642e1687") }, + { static_cast("2.52103950481096059522273522546242929820436984300613403320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.04572569600166157249149234687024545564781874418258666992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99677562816744661723525153627124442052964231793875730324917063167910023632186323828596851920875156111103787347156093646859907405739307639598484356543171131155872282222202848608366838457688692164646235280817749009555765844448651859985081286265963272205351701235959915053427147246220456364075290757788e-1") }, + { static_cast("6.69572868673203203115917858667671680450439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.16763271218019875231225457312689286482054740190505981445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001172763619213033390863469162514923787137097731257478379858496528955583730797624990721270466292542630978166836841730894536953419182253636303821927335171827673847960943549331513055995583023583227615832251837950408037083523512010882821232754743304332778547391577736073428707081283889265580574098969") }, + { static_cast("3.90611154895943855080986395478248596191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.09392819734250876240189143118186620995402336120605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01257436238989364436740053785780748984877719711041249303794530677616720891994615335093220833940115128861191606642103642393403535957041953141054150817528925853538686389534782202437853737346681413564667163289005149907512827692491679645604032151505662903966426036149340526908388743360309704155643902314") }, + { static_cast("1.85738968908478855155408382415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.34900449082321379629112456655093410518020391464233398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007223974053029723271350039259412141636069806425386754509098025549121050837680692710943206684686658573776447604596802766176331791002163659401284496154417281082333498905606330772551902793976098371405853098920109852460783688567109865594724989116482969799710457089092798143235841330467446343910216945") }, + { static_cast("1.76070615176634455565363168716430664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.74889370868937987779645482078194618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.45316765019878240189602403680427223818770335223288608146347951094991305163036799974448576646914163732716464031107846083674367407256925355345653200850687798959392811940414372053909694215614805160729642095127896071955737496902022738055554549005006428357198315347861922794020063710653902271293794797134e20") }, + { static_cast("8.59257176966675461152189718916361016454175114631652832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.23640678060561270967809832654893398284912109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.75626791055079856222412335079669380796397627500002019826921615591957724636638189051537678939438100683331885757581588353701345439775420172078880839292692181866988352748585676000159933320197094086021294353349620582341779917757035411891306338495037492064154895428084541796948375617939605049956389592963e-4") }, + { static_cast("1.18373366744053128780857914170709932477620895951986312866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.67326277601629289126013849786644982486905064433813095092773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977165516365318634154013098062676051482936340600676508115018286371174310194281664961388300484701624347701999911368618575116158865905431420415090042447533719781066713262060337264603666364847020671540664275635449461141562032657119830142469510330575908700332922190579477083626027776803818572001718803e-1") }, + { static_cast("2.79297046837543444519624813437985721975564956665039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.97135089362066378421145529387104033958166837692260742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98254178388410952430693242810343707992963411946313883778028696826023938537768767830025754426281554000607392763511414140886618834915773502093937010404359418681811029932841236322654028803608283276794373781000755359892344545988755782370138251235941283542297935477464591913844965660089628462450619495872e-1") }, + { static_cast("3.38113855762533148663351312279701232910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.09301666014966266347874235265180686837993562221527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00010890478594524709067739908022368917088132812449962876399165997211946438304504899291487317819472340328330375585022333633583894340550549675803507677712058170618442005704437605073252304959372965881786681685588681179433355904579852317919540925268445449423495866437480095339165546614783853750408452453") }, + { static_cast("2.06425930083115716229258396197110414505004882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.22320068732874709382940636714920401573181152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.56994381329744106645164401249639056164129850194015191524774235721349310749300345652229762055800940290782810800288250321003967654939060262541583665184611869025848444849240326580936044484294913651408991979990620894378054306407392449503735235963890733618686812461995281192108663576402590588669671991241") }, + { static_cast("1.34087695405307183449394869967363774776458740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.48273418616638036349186791085230652242898941040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.97025233069613645577452155667707700431529405119046003459330154763708616924139333978711947517286910376855122315920165412886432318792826535847675162918439845483335638190760733366507881163660357422897573743052858674336878106847554903297760383077263299654131223242076136517464708165444087161451001347315e-1") }, + { static_cast("1.13795829837500036774144973605871200561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.03500201236379312419617904073021463773329742252826690673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000963457189792748049744783509653303667431326364869818483704842948351380610875652979437988682746278703117572921123081696661945181740330111308085604188704279357002138744426600265673193487995475006875655840336689027158444662492494587307695412667171074545903613666004574014189607190377465209019809696") }, + { static_cast("1.43733943515224175686145757779854648106265813112258911132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.32214836393443135875713778659701347351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.69028929542482647910462333162857910188985784876407542387662931701295222184216133407420608557785163630976401541135533394749225188544894532723554319205860877128881077879568220494222775086397987960274421371074192662130785663013334009285908262792624635778476059436229937151198221859566242280319019160525e-12") }, + { static_cast("1.40044272789335991546977311372756958007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.53744104780148727051880541694117709994316101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763558978681810389405573088195138451898513946030420888756116873548356901540068272802595421797514887115185086583712361722645481445016465906573909064890341678510048829617311165144452645678278211232399208153808746476971992206798944801345917584439323122735213774632862994806449009371980892407850308879") }, + { static_cast("3.33770615636067580211943095491733402013778686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16340691059281198249664157629013061523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.74932879103617263287699269441230578657539752277509100498121992886363492927534654879230172186557771810338441534937330485904491247273189306610489852019997049552119104082607943340924820476508529648819831797793990936006114678588935819382061714015089476930073162215255275726210879447826384500950556498380e-77") }, + { static_cast("4.28996264268685627030208706855773925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.55843482735151467322154417161073070019483566284179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04758858160148749573207693865097611258682532053580644741708378607626299571741454781489071163331961478583318303704887429698138745438016282037356465726871543404600493318018423949357845164509841052287336032095968547544265578409278441961772371247405527391823186341452132702680834735192488255543508774968") }, + { static_cast("1.28110344596063102651228859940601978451013565063476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.43418931353877687762121695413952693343162536621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.61015280162581259611603041281312219714750672075712379519625520748837900282815093599469657102449329452585522609992906027038154076071639645146113938200595344162570525215006263974571317023675884323716943933613404725430584249433688012398115002318410911938391274174242791011414117839535968615208469771466e-1") }, + { static_cast("5.16672517946984571901580807207210455089807510375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.80381185032818629470231092115639626172196585685014724731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99990502044552423124036840709042864832582112050272720529614683113869481837430803897286965523406403026476324601866776220157395635334324411401951420003880457537783083750584239021034205680737146324172685990190142433894632845319189846259349630351570776916287281796804645673831673367339618359511691534945e-1") }, + { static_cast("1.27899907316783210262656211853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22536024090327483326845481315103825181722640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00616341899333551359328361392752162344577264467244472586370749414301840554961173829121346442368844768868155278219296270614015234651325697529392935793355916715136924941286676982861345063267744784667777743656327428634674404454023683239192093835032100591051537658643852513812450455406749057692109035777") }, + { static_cast("7.11730850188353797420859336853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.60788079495505627572460305430013249861076474189758300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00107405241322382059953913596876333435454811871669131165966566428674069591664017854016649566117750922070455790150785398980453750449040916943909541516125417685189264145037334413362116738563574347465747605135946915752491452923545893529316360034715492483804067411471432361687478500733144787639791290510") }, + { static_cast("7.25343826567665018956176936626434326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.29954091776851328177144750952720642089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.04970290589109038711395049954355776776342381310886782453562200726034000844667284742622588171082170563883520775218082400856123793786048177341878726458251943347876583569178437736653743701492064380769184875657546923031668880530296652280260428229230807500261114316496980898463695380987245993698126306466e943") }, + { static_cast("1.05425305597257192857796326279640197753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.41211561689230674643269480839080642908811569213867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00221940552517387456904940935153668768677803438018028587024892341085297549561710698873774378670329922261139925263482590967131460066291169951663366614190003024630959832086281000186573153943388176622129526851339850140935108594752581778544126368342198113455082270613501744317697800189856112116044092035") }, + { static_cast("2.06616686835977376654471804329205042449757456779479980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.69516133890853029630996218202199088409543037414550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.85720096393058346372084885893839606320554663169456270644249004310463500725457211657627998908535169742871675934174757999843761965159654941281377745862394591058408452525449223020548106433276286869407305925521861569746775217097838170535894284575048909646530082294345563168457886536304399266956794807072e-1") }, + { static_cast("3.64402451110348510332492821817140793427824974060058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20455824353290882888778412507235771045088768005371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74947852438644348963594070779458486239729374924703758041706549021145269914102751629698949629550481353884433142728878758835488685283460683679637491539837448325034596988851330419929610091798061933767303224300754233414005420110971299300889653323675957445130038468323617573447274322484402694978713617040e-1") }, + { static_cast("9.29240918436359104014016924155683341268741060048341751098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.10041539819032330171921785222366452217102050781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.30375096076042540689175588676000039497925847630595558133397707131285132566953633275113891277016515974090275087097707081223643727147456085023753621384884096242056199349318008502416132788061805089253485591443085259511013177192516510953942353610198267062490629651968866334656113567343023162640866499116e-7") }, + { static_cast("4.70374294317859518955657338601383798959432169795036315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.29316103610866321105277165770530700683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15122965827666394521150958097124834553922749706241413675626621322918765539817839286128014659593143570942315119838489669350005299860384297452971974330427527438060831168176929743817135707477251203472467806027668891154074309800997369457141925072379579611854152032663703570089179850821080592817602489379e-689") }, + { static_cast("7.90111168678090834346927628928369813365861773490905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.50142935632569063386654306668788194656372070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72554973148662694166759157160166169303284736393781157514352684466477860400705537599392645875431865905681445772161441577785663278326674184262006684080907675404076284363331862467589217294540329968481020258307213288969704999028809892457240851077890832023610976308448700744934847296072460694151132193050e-13") }, + { static_cast("2.19470224538514946388545467925723642110824584960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.55402946608165493103115295525640249252319335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.15537644035230762511257501642891052274838428807882763659106583075479589103986905326616108567723817554261320425463998387402938492727716723367633134645452074625478383896044161060182209094299460842378984988424538062120485203568234956869861031978112571715328186447068917826940102237728367749115256994036e-2") }, + { static_cast("9.59375752767912236013830851177885961078573018312454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.70600447818681459466461092233657836914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.34074971005352694977724271428304704379730503069979006543824421982543154474277701862893673330086806692863058917258547615336829675716810145864841475235135109391399496144355613620559781473891279309689200469472005874869702401500915898827498117462493418903426151104912981808366378491461635507492430973906e-2833") }, + { static_cast("2.20730165021212201281741727143526077270507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06815138837059212754271309009368451370391994714736938476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00003305295163452281794976529673484400203041012190269638476184821369788032078572490628055955783906515975070132315405678121749687518303529356301281556543290455691541229667405975677836660331331546866945589821129205572181796808319706436826468956587053252695087454167269382499127173288396374118362076812") }, + { static_cast("1.85780789842078593210317194461822509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.30823413709633314283564686775207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59033859659617126254628613087390514142443448071790104857905386498498208916927300817260750485505223182216712213534955208892328370772179606978553650153083374335774046910050899642665243305280141884413167811281876091816572586748238812963621916941228650345907682195313189327181720960131248296641667634950e427") }, + { static_cast("1.28002693604745983830747735332522552198497578501701354980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.28203848010336862728308915393427014350891113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.86706798756547273034023259748332998697114154360428093064398895642136945343512222443801509462788398508116083101485126653725181025691107909977090006260480711914768000641955268595050193784354949171562687163857371073429271907026305099383798868693635018067191669439164014101281294813574568021616736489720e-5") }, + { static_cast("2.00223379702332143770249217595846857875585556030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.62365481395694466471013583941385149955749511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05235460797399961706826012566932005845504749468248264540170967631534913675307979194267567883423064423939335134422258880838785383291061227375243059330869736175934549938928557322841085452000578723759590054565129213090997527802918663825422738502966602188020267614510519712792292721325579607440137453800e-1") }, + { static_cast("1.46975278087147759168741567581406570752733387053012847900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.86458989513311337860024252677249023690819740295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.92154549068701501199366439766982295808371482320630816324433379463381296202639580495789257638722760912167367897485745357403740992265341544963450873213458100774396760614353635868165234585261876587876465994053070011062897736386668244554072898747895651881702386350638799402464850863950102149208151366166e-1") }, + { static_cast("1.69869769328567166155607992550358176231384277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.09451664353347934838245336663931084331125020980834960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00005799594795372584357977768556944656253178249587480331145989344864034282666379944361611058467140259982713730781408566683105999320504528967383185252941819780496432948156779669264240460517640856647134097150209519411486934323027426354907715934579141058953345456267906766103552413735697517517849566921") }, + { static_cast("3.15183975929332882515154778957366943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.02384029084149653920920997052235179580748081207275390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00828189958217090945616829239889322422890752450091752768664294850744665096849748731214361917701488824218313674215416049035608435896320044761285630475680013499593324921963112908846599652343142683769107300940314664453753090942709855630290654440762603604322610449245678270429752911593206005276375357381") }, + { static_cast("3.55087476619042874403930909465998411178588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.98956931787756730045657604932785034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.32018908151418417859876732852718049962350652342105850490583184901223805273843023839695354873994074279947349253543933474250055215956442663452932535132575000870445343325403706967004656960749057879238157659107219147411710899538754744145348815414311088777452109665676822468399972746650501593917415911950e43") }, + { static_cast("1.26775488796815989189781248569488525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.00502285798295979898919760842090909136459231376647949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00071834700218288240776940900136375146363527699090847426981092022769405513480212911323057036382071349683106853880233005923304991341200308955960878969600681793506999384869035120625501911973134511693383019876699301926591009688967553141397068289179934328294897849913598948019612426308123680588484240861") }, + { static_cast("8.15220048105761634360533207654953002929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75025311305504219921980180174614361021667718887329101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00038554010810039170759525901230037332621377704113376782308969416671995519944631372963790226541075839243378526551356024850278824940678165140037685990966568856425831851096416371162933528342527414028064433797747326021549595783932074419350022816349807211737168691836224208314746714465025589975731455428") }, + { static_cast("2.65027968976974648285249713808298110961914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.00316549124626845923557993955910205841064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.76325996094662828651112161237788953415887952374670102134300653855113287125254830377423982732034899162480399742930099350206403828614662703257591959653574878666923823464038672614887656376458325931158457664475267311806542914278433869759036943522883194636568041344283954333960707999807543121267715345128e4") }, + { static_cast("3.65182751295248817768879234790802001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67556451265639907433069311082363128662109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92218138915478317609234268428449378609898504811886050861657038624663939529613919692032879990877291035109701590929770282532279774612429349026418707716959296859399988519535881353467118924067126621065164445440389423581971051504964356883522778929468170495170856030672143818408689238481847643503940756672e59") }, + { static_cast("3.06064234847405454518348699721741468238178640604019165039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.20328027949478477687250688177300617098808288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.55974238261708442675674596584944622380379860666888634356645875331625278958028151760326676909826129760886331850336797218123658397234427228603106790759796963957806080469839015421053939928057033567772138680185158581228274260396763090865346625773393191666291620910582819221973998350912562080963747333068e-1") }, + { static_cast("2.04040793254407122731208801269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.86284726793166655056666058953851461410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.58821325525680163465105847555152044190569200388116750112228338962598195492329497459385020613020256287552717930952139248724578086838832538138376726496296560875204247514233017557960719338882649967806582509446295835645176351140001109236587197833843059204085625918013701386357232953416141714287393580849e15") }, + { static_cast("3.02716069476693064643768593668937683105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.04039959726672404105585201250505633652210235595703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03510986044313446578771317219744132510998690381352607017246273580247626695630046904160285453167383058665284858123740052884532347981837364373948718495188424769656549948930405672217230120189497151355681193015659186537151773454794215525893522934864014682466868462268390720016762737891468184834184088104") }, + { static_cast("4.47552570179789768189948517829179763793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42494522046174552087904885411262512207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.11929646387532568976168597828914488086907276576025509760458985730962224619833220482536328707584889009590311478709195034015122056954215000823555978179815671349373291996702460104546989380293121918158085134301955237814810326108959984625471199876172816491246653847194071812034535823558646590118729075911e73") }, + { static_cast("7.89920944916936605295632034540176391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.04372395393338365465751849114894866943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.67759107384668464385278885844815795751161179367906982405379998416580527424480738041217566954239691080320039512890036456504748798096287871747642118148076943027438116523332662829876900574449886819108021138850402281937549768122792675121441618853423616832699349260369305453263152392638804725787763327554e302") }, + { static_cast("2.54801173789754968612708552200274425558745861053466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.15927661277336413458982633528648875653743743896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.58205367007949169809279999461100360912902896399937272021332641770690450812544971532999275755132753113048328902348279538087441845456071781043743985319802898282971020600433571724744632298362925010469603804610543751544460798372376992115798540860563907814359172789945116001784572399034814979737998689779e-1") }, + { static_cast("1.89928750500089372508227825164794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.41078495521190028227920265635475516319274902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.06563424507714690167714042623337538555278963530996591844954713364193688715643758076458567982650781640747670966188519005031306885869355129425908043628325745338231076914378682618756362764508582923824741998110533664940173863055464267380496758389944654061554957122449256611900453680459384297799878623896e2") }, + { static_cast("2.91020477415979972324322488930192776024341583251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.10728022839575198851824744394889421528205275535583496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99890103192413085441074667861315652249320196657611339570482857071941674209639709864703891665811884603908304481549592842627180817065779143546842079140388383757073035382383336415119892457712538117493661547669850819233137331852231641783994865993482070326235283184181541427573679758103030801595943776744e-1") }, + { static_cast("3.14872001537003598059527575969696044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43125111933481261039524667921796208247542381286621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02802334347014804115203210525086340106221839607209085819487247743041255274944512485633547164774253058201682853956553615818500164452268935135547407521495805328007119673698391733155607980906430692803512122247717040507439060960157575458288088753689807084410223837216910150868125550872659514690258206478") }, + { static_cast("7.57561563668409548074483828017378073127474635839462280273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.50776874093542589960748045996297150850296020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.22360322691615293009344442522576915365414410103567546362459956848539698481031529793394942148327475172323264893580159766513287240943753652400314434832413344966940876720610075372213401767379175382193046077868122711719538872402153088637192089166340900530573304907112834730373371836607562222448960151481e-1") }, + { static_cast("2.62745508969974561619409314516815356910228729248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.54116524398034698606352321803569793701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.65627927121210139869453772647172972010233396005753285235163657937204725700240182301143436917519389589272478600896823141333467649759723515447005854045233682059842082604402664004516169590843725236432591088329366055949159027684989904142732333954835416376354569871287255391194720780011944013876616447352e-244") }, + { static_cast("4.80817610372865829049260355532169342041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.83678291961692252698412630707025527954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.41928564331678515981471338829811408659000181192686008443981749115702769340722053174798292070290561882896008338642826088125297911559295342634515669888076588557229523820060662923011009955171952757056636448724507715649589034168433634032429475749149003931613573665241664071010924406015748971161354696738e64") }, + { static_cast("3.20537873291325013269670307636260986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.12063633247133534681996835935535727912792935967445373535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000736273879463173771441699203291296246037525214803383466819484064993717806192280443913585501602480713195981402804796752564583674811227808842648414027111557663920686825861938638104671353044668858964832448138218436863850713355695690765716750462185486284733337309942715764828383697583139810455212638") }, + { static_cast("3.61912176346828890621809549088538915384560823440551757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.52277102882139392207860861816470787744037806987762451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99641674908429772727741716066692522684337586976236285526703123104244360091941899419901468194625324926731894302874406101537005325420303987745335631550541398216024526757166654981325659490102941309976706722307972204026369136295841549401634445497494285259254938938876164197916350437289297642860805084296e-1") }, + { static_cast("5.47727150864758538517662600497715175151824951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54622621028518670346224572753612847009208053350448608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989699815221047195237797415460745692681672883768835967449812852073485700626675461871958759788593113792388910307095890907937872017129700062714402629139690850899327106043179965950904385626167111246937006767223675683130961170323257583625795510235931710927527056466356951973276658601609644129515473818e-1") }, + { static_cast("3.15637438341709639644250273704528808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.72407848923734441370925196679309010505676269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.49825547286670319702380922050187415294618434375837006137892453203122331928047047306492172079078511814726958266726273319242885369558258257128888847286538356045014816657847217085941522774109065130033471139571270092091883178037417387674630454737070888538218688730956097543661382768897165490297639608102e1") }, + { static_cast("3.43503294936064165085554122924804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27250150145350989297488020213222625898197293281555175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00162336779090582285668555617540990956375149416793870895822616882369079038963730293631724525621870732184904017056404166569755879690536542415147024291651047693012257723344966042105272046767388935297934745863474716190137901174215179659999117641456704254362366255369408392878120515423933846401645588741") }, + { static_cast("1.05074245129533483122941106557846069335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.44512744072382729528143674446738486949470825493335723876953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001005416673874970641874885661095503816717227379033676876612730865335989893449582345456543451081149107465171659175604293715962189257810117721711365871006508720993220186972724366817623975260748578680835030711473739357905906032894783455531711583331359705157662673931729626022752940417931688341732378") }, + { static_cast("8.18657910086106118275478538137690520670730620622634887695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.69535439208307230074534999175739358179271221160888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93351224746448996937113594504910401882994345207771800323049779691276470148213924723483955246436042747455629177564845224233210837232201105509371449087604601761437328836060853287056217115691403748052298316839138971392756481564106383080155540424716692745736592178985310629391299501759133150627938918074e-1") }, + { static_cast("6.94796213109996792234301921098449383862316608428955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.01032189649519636986951809376478195190429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.23006490342279217571806140077665886981099414044595093418295957860943720284086984665743578056568297229139299500245761284073691802977046208070538242215508979634862568996291341587581554469156573033924350089621252836592701785348565193758908337598409016657851371246098654329684058361927838809573986193758e-127") }, + { static_cast("1.10592794589664117665961384773254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.25260821850983816716507135424762964248657226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.77248676688621920044634297401786442645385941311525110002800741928600473067163385046961591455772161080604895545524410628330763921136911631698147157554500689676133210576592147935248743333122279013651774018515939625427205237675732186795164784795174668611013924030393724917154265078516887725307445272803") }, + { static_cast("1.25391642141006403698803850499388090611319057643413543701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.33579604520485872853896580636501312255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.68392795308248572652843135364969720382138943730339914636303299072150410868121378543408470390954010868594468316840003936924097765196715356527524435528061810352989069642830612407823386666008449194429503821925534277567874494596141278120854458833913072506701454712189004957264318701887957792196559450829e-5") }, + { static_cast("1.43124739542791035162849766493309289216995239257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.20942048850905869983307638904079794883728027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.99052723424150661886931649071103918452644460542298398165637531920915224385808227208964029010419121462212498905692527594903577506198009266794868206489817939747878141799591393368960481067737790483228614343187263432824490432996787531286395390254093241449602142598445964130129975312810018929887788198701e-1") }, + { static_cast("3.43751575420593244447609038161317585036158561706542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.51206687051705870317164226435124874114990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.57663597564430277353448388417312985615626273703902768815220625590828356254147933705830400685411299593103143556639123246778758775852967467852603984265071153374722320323459885871194691907711626373620710017973655475923376123554952810313797438555025227910644691182176423627488188876492434022067149277036e-38") }, + { static_cast("2.17472395590978127746101256079214181227143853902816772460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.91971825175046888034557923674583435058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.50169709235325052632986882192448754882997090613648358141414144591089112598426944965520244801106015239482741658118850562377407270011579313225688643981938806077750575133252661340927273680933994486522267294226372481412223764992202845720067257372057887189374997685336348698935086839444322249450808054944e-1362") }, + { static_cast("5.61856815780757930039405328992430099788180086761713027954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.29876093753134198849341629511400242336094379425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.81481816351315594384727007893186507859436644672331091167617928065788693663352781510746621160037607384076966766971591864898782687655354341611390803359295084395315487119152362491516158659729010541073082819881189326119491997777097209681555255784910126963441436697354364542857530552913114970532656768045e-1") }, + { static_cast("2.69252008622562698292313143610954284667968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15330514334751887961516558789298869669437408447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.06666279730568497198113724274678005155752498157046477782004178363192374164474721840040331312046115275560496984877594971350062701246211629447728806246316863840490103633689163217579393790965785864180257773316151663393300617519826348688668218517932804149442470238145344903593621930871763066878050548745") }, + { static_cast("3.16092590727489834989683004096150398254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.48064997212848559193787423282628878951072692871093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12772520348616005115304677929962056919100702599904589876944000234727659228749834981600423100421009690523247572724398560756474248595294433046382239886297029833469577515642633205214954504439619606667497183510745512915018311469959758235733226013623764492488909973197069967553629996698907871574676780407") }, + { static_cast("1.11417522478442774288426297957244059944059699773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.07515622779491204497048784105572849512100219726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.37919294955190238371406645550683331410621638917073656116684574199081255090910984115004225393137968138900076398279876623105976571541314203892497339063273916638860131717065142379547629145053297558185567155580289078804833133323155623898592227362901992618266649001082738287327625009340169715002810953003e-2") }, + { static_cast("1.54818678360652516035056436294325976632535457611083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.62060471994897832819643168633660934574436396360397338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99950690212005897959136097299917160482075781519044088208212676575453006587694459400083447882136665068803314657182010357110987268971672741796887858729353234727108572424227132082469362733286450718291677866426969142840900462763239110268260519434037322501413834614893396154343681850902784948541773957467e-1") }, + { static_cast("2.28067710108071286176367742370985070010647177696228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22516467629786623624865704584863124182447791099548339843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99645746030268443121474912265456530387059240825775542503945117534294341852612112033263023994402497137577664903179947031417093395690539107266054577344864123860512144985801819409282408928976825661093887120497669159146596001826170808186934642139325551337232119779982282458342982953928951761806573163414e-1") }, + { static_cast("2.20739083812885155566618777811527252197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.63635428348883159158696359858353730487579014152288436889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000883141260854728883702175584015782702915499431300231183450474406119123947650012070542489465023521252692179702983050986429423066780728766911719282820886407479657520041375764406817735028802434658714254220988205387649994799335160542734586791578044041036401530550092162441750788372567864862832251789") }, + { static_cast("2.11115639194152252336444952618421666556969285011291503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.91611178791150109645968768745660781860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.03851749220927707096105838017357917405034340382528308320810037826391303266735158295669708446462859180309945589089175400795292926848603356140832744578280150360981737396616217244331933441226205091493168502347016694353942358220609837333188158011389094568440922575728826317171755408132992139505746448351e-181") }, + { static_cast("2.38633916347037029481725767254829406738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.47350156205279176901967730373144149780273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.50492562190358454748346649100342667975057580840217621906828483604765156733043048058740688210262627421835218492853562454601684989325985386603026971417507963657922417960947826930994787046883004260577743222590669257927836671693436821127356903028204248621426323317746936948905014560414890048500518981483e58") }, + { static_cast("4.16496490135696059015080194853908324148505926132202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.07526112190653293509967625141143798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.95708970459274514353705613356165057031575229424640773311770967490560575262481854947938662630918869775857057855329254545872812061129308665775656748897011265399787487814796202063476887242748791769330372489092700441649278984973352735989854637536188114328280137258357850310518955976767163293227505459553e-135") }, + { static_cast("5.60807874972006062050389196826927218353375792503356933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.70244506350627981296208535155756180756725370883941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99735500279497094553640363695299701240525058593455541261394700469821111611056791299453732067954961427582921898800842237144105286658409494042658058247679724238096009700396852983653186891371272750369926281385138909360300419604531575348226930671075101518323161673992501032516753200240811209353821343888e-1") }, + { static_cast("5.00853676861336616008002486921668605646118521690368652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.00645550345715264484169892966747283935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42868005311869594653291738037482789532744928595938052618021862026535850449639612018073258671047578104461913132613998217526422325806836712765473733283115693708797988431341752008408657974271055896785613419004497755473106128411938210880970972796033569804407750025332012993610194266901383355037197031359e-213") }, + { static_cast("5.35323167813788168132305145263671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.62778514750403147104407253209501504898071289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.05603230256580909333512613256181086069213372778044080861620436376260245170503316441303581724403388552683668422287401763124771418367914789920284987220255387646685601968642931765033670724000770308127910918065433865509022691461489073952236533017504964013454255542118759406756885123664390687006240095440e20") }, + { static_cast("3.22976764266951800463889554748675436712801456451416015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.89050305023335795340244658291339874267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.01732691727954660011725367716319147371899471036670702622303272300897410300692262400537048572027256759129565470020582895602617924506137374758437886475976576037363655165839084170315722377939735400391371695808916328159137254265306017499308291350722410467152148965233006027461767679652965168830636324127e-849") }, + { static_cast("1.09048941423813448636792600154876708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.65254774353689448673776496434584259986877441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.58980988503590960516637371738014660727349100194484396379725478994088734700803526572947540745308063381145664972855458934861597057007568531182327714420486870282357356343021375166932444789575430439279485545025094851301007569967666444995213425647227644871269194317170084391746473828083433195180432304317e1") }, + { static_cast("2.44743479435021299650543369352817535400390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.82995112549842228050200887423670792486518621444702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00266010667859458204491495940561046268243246346579041029260554228176172232635197593622622290922199036969298596977304010218474771392718302157017833152484401953670784025973565870850532277945591072432075029519001358625355897190571211275599240174542923282378185576537237233948130696870807231732661924935") }, + { static_cast("1.51488749663457274436950683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.02354275702668705760531309145733303012093529105186462402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000985234516448019885473896561732145157443536520866911511897918118736186775473199587722487758817093449012349451559620294147840372481518705271731392645893056248771116553702829600792931868987911801336627246125357506584399976395776801325943965572049289654345210028541577738692060413098304903948601150") }, + { static_cast("2.67331385687573711007480881107767345383763313293457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.37764930215238656785459170350804924964904785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47571438862309533743624874136133366541454712127562663177399504286662183346894197246880043192629661657584457838166576178504996182224295507635623850476949534360416194135273172780271343507597813231256012656614579448387095352094197763495149376101171772035626900389244626161777607049448871411562278802652e-2") }, + { static_cast("1.01808534444340903490910932305268943309783935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72211847836940634692837193142622709274291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.82611384964605354323505795669056920339301763307089989948479130915805719954810517867370884785746904749334148062069679398152101779177523464996450923425943206891878509254410570738031307822715129842441609577961369156460374327926946469260053825787159767563643637983753386908235973617270978178126680100594e-1") }, + { static_cast("1.00731276656660706514401226741028949618339538574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.18228984435489814508457584452116861939430236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.88175560346904726742930639398687086396036352224271818500936901685374885901648764892385495076288151387225190990418969616688304224966648010000551417499596854632379457426863173605879611399961688292945890600044144991480340984880181190619092493192482621545694847376381337620163394916517599662918605010835e-1") }, + { static_cast("9.87804687799645529753395090111212084593717008829116821289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("8.48295760044814414868596941232681274414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.06922896545426989764243576324057040501874322165012440675766666713649225255160119756183042369835830558457195704471707778294936068250116736974227601059618844500705991834404101497665868066256287785153513125539305523985206318973305432078184236844170690028706643163133079135912179653756316354134757605909e-5095") }, + { static_cast("4.41825747491548099787905812263488769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.79827462222631995203414589923340827226638793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.34369652134197483793288072833308732535658609465509415675669768410932243039179437886058214288267645007975345260332874670014492568423533076540783205684921434471069515293441857790677592200203989418352589897685209311617733829289352336172155226574531882652742067029068005584363117523423189997997484568014") }, + { static_cast("1.52968448456620720321552653331309556961059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63460821261542546913893281246288324837223626673221588134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99996930989216600191785450269008898634303181250066938686025190496179003638914112281154344493820093586185759774048968741774280050131382009162499732926045936023057461223555387483027406180587409400576483490119308402153097647327397891029914779646839934539999749442740222968027612552511977099477561837845e-1") }, + { static_cast("1.54590681969825345731806010007858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.80711944432144022698594199027866125106811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53179160234960851931903141810390484338949709737193408192930930410912781308171727424842710235568081208824229115859793069399719735722193263870374052840504012604354910230724690998586625239385836126384899034476217672957422789468436133936022499041037971795682906772214055897416212584774512114169944288303") }, + { static_cast("1.06149875426708788185223286681946319731650874018669128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.82539004163816664938480016644462011754512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.14272969225465289903926091127128136862591595250320697667906487225773277795209213908946435749298160698748843670986774816760975159538180372090105486573778335998950914987159909756145213525174507361115992516851061441846585401483368166991251261491681595295047033029078105940961946982855869715287402727788e-1") }, + { static_cast("1.70942859622804244762450665007236239034682512283325195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.45014151369056887470876393564367390354163944721221923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99874220008245006855542326558513156408919554643242887993818629193137080289456989925446796371679686209603602304321606023129900225876158421172053263787015124593801332165057745276555467837973732533352070833078756655605565367486807321355073518225701436176826535604183999704696382097767183866284922545237e-1") }, + { static_cast("6.89165129121799887451649269110021123196929693222045898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.03300713262715859741547319572418928146362304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.04313106664538570098839747789552148131626561809170196746678563650616413426296764086879429552165570381706960290576103965119389999281879292911019435355504974691551612891938410889406352256775463548603589074490341705913775216055301816238813657180725380061984870607389371696477377291283392196645786369100e-3") }, + { static_cast("4.27946433404347626492381095886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("6.70089369397394089659936167180376287433318793773651123046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007146201085226752984788738357625307865767014027631803309640949680577376696724418376175136252913773532105485594068985474036691750060444806287575074228772867146937453568465581121950409526897590340390497454647087617789150538474509489560078795836109491866150406233412810302502603589419003168433407796") }, + { static_cast("5.40162932367991470775092643918924295576289296150207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.23362153160343446245406084926798939704895019531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06423742747299574139652654980590788059822860773454214351500321781043318590458743790589432652553137712034307825892416077869655718345307052092676953436188880309769835515354046500269913785918625489459139881331406660934866445646807527177908193314853725313276753369974838311556362819425625446719126859340e-4") }, + { static_cast("6.98480482930233392835361883044242858886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.82423550256237437978967808049901577760465443134307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00020487356414235503163915728935712973913169358041240146118411664231468676920896629650395007895636986611826729763726166983962518312776000911959157822099221405201493001705233813919293314432879950393142137203274049451871519519207057550355386892818843802770417350657588091700213982000763521441126819299") }, + { static_cast("1.01174486687951502972282469272613525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.80096038819214743220697982906131073832511901855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21386628363111930567875501391228231832773971221469956618940994372919354601446271218977478634940587702534597215097311823723977361204234536761437991482874205192547888855528921579052205936359371957155208181288324241439984156409711039174371275245144079425493549183603159162251977135775037801563222969321") }, + { static_cast("4.58527642677075686350463001872412860393524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.20426803030317546711058795949611521791666746139526367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98276019906690498641979219227000354726256121309260540509550375256349346398739094196651394582546860191649946783658447448964727247382391275461932541094336719168645988397711787831199214881092736264632640564846015317413042211277375865471754751928875230345189863352333606975129830522964976988522205012182e-1") }, + { static_cast("7.60517875978827806449089621310122311115264892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.47867011136062753706710282131098210811614990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.91022318181765750138709868330053023824369950588567785742389327678334961200987486582852651651749970246817747258718976307116965890616698349626417133054222982034680094324870404036435780314465221090580409266996951521555820905007542674615310907131989836681135988524628981589839950536317534105789412104573e-1") }, + { static_cast("8.74441787592109604670184003216704127225966658443212509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.16721737539795736814107751655456013395451009273529052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99872128426369981492114383609632051952305521589536821086005990494116094292173923739983506376030713210025133335713606540746004193037337306885070775500980783374129579854971973151969528024543815880504327167057351706595072153954661171897742253459693134310482723707663819212838281958152922341896338434956e-1") }, + { static_cast("1.91138738236028468236327171325683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41870493681337528357744304230436682701110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.61393719165089070084284302313399424679983675134163509852591590498735859530953368982681984829992497504960254661066913076235623948356021050016415986014420596315994017260378613566207333104954408470522228787617243604128057260092817202582188202107977088110567991555379686212833460754614025473450009263444") }, + { static_cast("3.95935805094525858294218778610229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.66342798237554857082587389527361665386706590652465820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00080082312808327988582209522378397852005304579172107085124537382297137225033557828343923139785908077173538670582197264674005612125502043965115623737220659926592486850580770115661984729610019606048664824477525628872443957605574420631353398611478369946179434030057548832782863477926163435959118485879") }, + { static_cast("9.52749482248151265129099130035683629103004932403564453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.36644237252481737243670067982748150825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.99043290744436080750367189311776962864514898582236218043546095145053426015403970275978470316955018068268507145854768132371105755976745328665490014149700831691054362640281890694866429566348288921720874015164835895723114083232661342953621394611916380955923119767515256749281015210664840084139488728470e-1") }, + { static_cast("2.48422895630792811018892896068877007564879022538661956787109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.55993124989414910785967549600172787904739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.91195173359063670429359403048505978785219394151399979472770021116863735850753993687072273831783588580026886709426140199445066463954822741869299289627867228462101496659941594784834735871174181621098355725481647468654367330416914560339262972917390166297854884128515599346578674725441419457079115897184e-1") }, + { static_cast("4.94911189808764902409166097640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.00486277593047912404244925710372626781463623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.45161540440045450223953783783894469144373503171768310299316311211396701039652476264548018632004490940551121650475174226555299061745541449779441170912616150358121670452871969103360706271231784736206842228875578338918267487091360709713844820843854370488212897734417544669039756642667411365232861750622") }, + { static_cast("5.86830898821921187469285996485268697142601013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.15714500475533861589827466787028242833912372589111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98538706799650092346821769070662036641738082636479009372539733284347573229317564170016552698886694627816395005478215973507005929122925461962335439146679105934195547032542346569150966461707254588652749552262131982196536881226818665443124490222705261425197752741794319954946333545210933092733146260794e-1") }, + { static_cast("7.83501026710203586844727396965026855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.38788040794881645245695267476548906415700912475585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03084303369653734759444079184018763110189145271757350290747789171120440011979438908956047437954061198621891331998729346005011749200857634828740000563446280260144290233886419978479827799434112209614567540357757105949708290107985650241181647155069956615108211465282807906696708079090952998142539773200") }, + { static_cast("7.24040157384670202134202554589137434959411621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.21397503061749550967718391802918631583452224731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98962718742601158545306104847042012373529894592940838744141601234699871358047935296869274717524339141323620050266212255881930805755665793284647269071772742030623661802389270250239007055699061760303889999391509361560603832488400525248124730452423718749922363976939807153833465852271516354356322016570e-1") }, + { static_cast("2.37737491856019333980043484189081937074661254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.16670398708927525177614370477385818958282470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.49589428217805567802447379970866851398217501608629580197067814528656191899243702632356211673360505654178344944705028006574948563210523891802606219873940153904076904718577079606890006710252221715434732369471615966209956056482424699085238332051063676105524207191799310422842401999054890360978090765282e-1") }, + { static_cast("3.01647874000722708842658903449773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.92136460953186087863286957144737243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.67051217459346602496477010560417251705712700254048639078839264060325224717762633346441800378240849611262512392424682983226473649608304764571881449403455973384432668551726106109236708017847884189936294979084049530151497877322166267026808199785689058092334141134841250691148642129989881676444005953065e28") }, + { static_cast("2.63540555826397102784364179228759894613176584243774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22820432867716089475607077474705874919891357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06662853666315384518454771688957273896640018166337060934230580664851581626370131366235045252515485872195142490483479220526746937459904335480861408290098145258297721984393013560504944686230699800648442282165588666276252945193146150539010418085408269547841393316042913883904363908615604194055289620194e-2") }, + { static_cast("2.26046063075346914672536513535305857658386230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36270389219972226646504509517399128526449203491210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.49669691356986597021713215820093379236513850713669538194655152931335203737791678558428932820631859896635045077055245394317491407809178976243739664980597540207413635355482092381212167318467695663002155241642388129246468412919845420697165678187848016391630764936016535264450983179524692369001196616367e-1") }, + { static_cast("7.44369864652441037833341397345066070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.92138014336919438207473831425886601209640502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.14010675669123183496921521116811427733135459824631474903189627969592690975861278168724266785431509343760131532834105760648359541103464859507378780843287835638142981311936553660415847409900494706845746029735940277531884780112929935900839635096070137371899495277565868989524061668633390669303733877713e-1") }, + { static_cast("2.58707365843879599776045097314636223018169403076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.94714110472695892894989810883998870849609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.94285469588168562425042075510651649105332456874498432065780910860149873485515925490595348642217083245456881656394030092730262652761300876175697759058061470631341983801941103052127203347591729319027059625352617883993869442078699806792081819748879905962225386908139580991345038356748418452094703929970e-310") }, + { static_cast("5.98084615325454649337189039215445518493652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.54141705573080567892238490479428492108127102255821228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000134883014846657688131845485191611848674206835683154280061306464539283951337684813473177431132125670490032207511582839375165363167348982592154407605611359695341748966890300250815981718309647127029989133813099179248600056821756358657145575917892530126627067999467459186401635829661375435200555943") }, + { static_cast("6.95026071869872530406553323700791224837303161621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.31225239711935908609730105922608345281332731246948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99946829922765932774347186827261089119719545372876939189761602548364480617029835514052044796339343249676137993597737045638155557799285710458997819509839368231591299591459306098956962406996519241338464726435617191918273092870466980318418139849371272285377732672340181070589663937610591450209282798517e-1") }, + { static_cast("2.24073444824900158689473528283997438848018646240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.72011372485644930879419844949040907522430643439292907714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978273147710365618565727465750018434266860028552780634511158239820481200127637360576082082285493761515451879661983436902590331857062933298024957408602175417434650700857480478630047039957552639826605254005583176460691229891227955796802817287827361621819443402008175782397464338976239485836367013797e-1") }, + { static_cast("1.02696336152198410170133247021340139326639473438262939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.11791001950321867638993289517657103715464472770690917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98056858099165538580460452287541225753365554206313892868475688098072267264713973803329319240088967254425048329384938932204820454762680502689447633583472338302047491675207245782389326788006117820440333632657775030341985234164850042741621548603372080092391251779877542034296864156086357253603371919108e-1") }, + { static_cast("8.67037052863078860909240574983414262533187866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.52133920341677693691129213959811750100925564765930175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99277952718489198651035604747543743540115676651768417733688848831717723612326298765655588890670608573536137096893609251918929861039853578444897886108139617036413401117695629638378951997111811960041138307910848973294872108144596558607179052633028242671568000242144929604511881481654385461936722413631e-1") }, + { static_cast("2.52535597921406917976128170266747474670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.67545906951556844433071091771125793457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.98282264364143312494924261974141234695472294090992155155562018911995536275433125782292778674260525238398016330461123980463532873852775335243553615531641077025771609462191107211129184970987736565747180479720790198029098762244705019025351383419378700872375798060833692002857187730789356240125924455777e234") }, + { static_cast("2.61640599122827916289679706096649169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.04737226836765842108434299007058143615722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25310610377006493866619672909110501466370730517133791833746014957247005356303121141646462034804208859942897670276612700251850886627624409691966399085604959689485003780186276442904234165384933316935452289326908453230024435075360037297385764282630607352032826861327915100978947458904222670931759368924e35") }, + { static_cast("2.82002594439443032836578595379251055419445037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.28903360394438468768812944276191956305410712957382202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981126663120663978315445418195178347518855090095327320928958000002380082757914082726230053423120527749961157170801907113926659877545130473348116514066094356797962151622116993547396704816898570832090901788549840104993042307779674567777216024811187461718618588120530554820575895739988590245022632269e-1") }, + { static_cast("1.05597237376428054744792461860924959182739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74456803510535429779793048510327935218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05450439582280470237419243848514333965208787934652393730167951372955494178606431812200728304139567804628971230701860498398849175230634941866518705534394558725303044357497118657164159909944927143807152603979711611331658711835035945317940163428557910521645089962892594811777021284923659424445609434015") }, + { static_cast("1.92238907809509029789296619128435850143432617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08349612860076613971363479471676782850408926606178283691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99982133131096723846335477747571205458555360592772378989843831769539959961315480174186773210831188200236203659966289556452394505676789152783853641019895730138295352465651299769502538786481056285110475730395967855975688507419189456451422446526295567348482093213471867865722148473015661603656725132323e-1") }, + { static_cast("1.04631933860085252672433853149414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e6"), static_cast("7.47628658058347578263536092890717554837465286254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.10918690854877106790971565776367526216180983995819057803660864422406143847654780992569076690586240873186597255294638451033694659817944978005382660886521706741399259776875547778479274738700590433170032223482808245749786294093246294856718197278358866518098957741521257199802713807166809120449267805013") }, + { static_cast("6.36259548895734333359697210141803225269541144371032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.22809772788395861198296188376843929290771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.52598782338450286286135450458954573598472802663327374811636800203700927786701774385033841837545251692421774984587119423266677067201879737268514092791650544542213882071172025510515697098553107823303332247548034598510867132891098061561608401432719775239528846321974734634143406918807796517003534735158e-64") }, + { static_cast("2.13062266921418196562697244811346308779320679605007171630859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.38534614031968601466360269114375114440917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.19098455118066498520013706754490677591984461696830181149035955535619874262474066374087254218809585126187088590005269981305550987677753928730521021427525334082765124171365549957770314171493849134109885501003714622689267145862269434956103582260650590467252136804225198053437675495933201621005291059680e-136") }, + { static_cast("1.40290401591987802021321840584278106689453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.13722689335705595681247359607368707656860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.76476316747050528850692000246200519522360470716902181350858525854503943786512297020242024222896565430817144786078487939900580658865175044648134728561580288938753166434593435107710997858417174150763109875175878816362192204521588377137231081824131646740939989148534654273494711671253618986609286323224e2") }, + { static_cast("4.37201757312766858376562595367431640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.50898368829070932406466454267501831054687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.50016375413563777673770541325000240347503109832508653488647336857427144256430628344920480322962866090482161278435394130795573385145704869750655237320185554045574687208211132875092396633526114578443250901360527371315672281676871350085960576744972765455104647558784495896122434499365424664074824652372e2556") }, + { static_cast("2.82657718261440410630058739371861520339734852313995361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.01065835722450432997924357758634528181573841720819473266601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989414562934374733570123984537478193847375990023521202992404597564318809152441993727777418090556514104681985844118458823465596529403699968559686663737740106923387493303105200565503166558779713221587331443491180025140468746214432126679720477339697928392369627582889524402889778083449486287091857918e-1") }, + { static_cast("1.82131588065436497009264016355700732674449682235717773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.66518199450072917899845492684107739478349685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.40207373373989750079079577094631199620167306803671706440022399491116271902378455342284164919251165911009699545436187010204381502830971843813249510091499154307328869929569251004649662529059388775244320275509563520973233815719214546857449027774185623555318990471004404713606927167122651605783870374832e-1") }, + { static_cast("1.46755915364810964092612266540527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.89043697836551700675045140087604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.64484232464543513497888195163429809804134777698713994865506287396508104602871734408178720046618390944324170991778876210342419644694461221793882529660281950244593440074231456401876196827229747637594809904497759425267031152839358279700896103069795279548051852526590187125738047135851503597639320208298e407") }, + { static_cast("8.30433287676949054002761840820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.52637571399967619800719376144115813076496124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03503345548731106338710812130725055986503423501253010837510324365889248445099107670056377581266593900575457325985155519568071726317821696776190852210129272438899726884098324950090040468317646989831449979292183766681690581501814228892321721246601040936202160676525600474705308542633568308584316650080") }, + { static_cast("8.81076109807957895100116729736328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.33372790631923177073758779442869126796722412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72892191263152309368418398483858745615162148917317277888912958706672096823639413941816735201743610855503568372158123380568416223942437204395543055191166267974357638190306465483077702922759360128463612732981531386413914170095452050612671264384868877433570747466951378322325020744405691770060335633788") }, + { static_cast("7.53729022560753492143703624606132507324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.44997674051331170439263495985926510911667719483375549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000626746844722828444925305995099577313805301524404103686494009081743532235207019307339151083010194102029079910572707461595043287395038108777455456317947638812268175715959797135803525856300281211049078122806988241700281453385528141559419083370029575853474851945010647429584718991721854559935746944") }, + { static_cast("9.29196125311857485939981415867805480957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.87364075941672677400040569750672148074954748153686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00130310607123242618493657884019907082179077698498276221909900016213891825242765534255421206798520599892641330780794108614272121210817595736511473642012182311222406630247676600611837624670300497417793849558413334183751618128852678982366003027694097779362865347129226028454653385495003448455051752341") }, + { static_cast("1.43727353532569850358413532376289367675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.29608176142756548188117449171841144561767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.54783993491495810650470280449947427623348347028981499281421336796280567779408506141109574684107695839213640033321254129078108321583824176685378348816016878194065833488610016432724082665467588150668096361892027109844713789484964974482948538692616206482165899790288506924374902752205806598101379280087e2") }, + { static_cast("2.70759640224985531631318735890090465545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.30536731556413743149391848419327288866043090820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07547877767428083419096142604570911700485352561609679581466039671852713698452759329634869067401784752327384511745999840407965753203664746748858043080448574928987130431330974864221970333531951352649388383982665219131905566066113253186390249711325528920747650049981618690921655600270254173866304929129") }, + { static_cast("4.86911459659213416298687016059432153269881382584571838378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.64415295518658677309531412902288138866424560546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.41012673791647055159490710611797984019709597197766274319967811180940457128047417078813260208344264234412901043623761003849931025905704896535929048868960146432780155662155674231586473433894529344683868489738341572805069281662400777414260520026876565570790884943500995948410148791343831009292038245400e-3") }, + { static_cast("7.84854690434243218444265721700503490865230560302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.46294874434749200275973635143600404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.31540724563669307320322491667157973956200661651434919571593303846115863894103669513415833366999982869469042192760040827577397824232012793869428364179080549290195624467934132481201575233560543620306283174662613044511585064238810137330925608875093333350849757044686376810419383361338035393598016327803e-1") }, + { static_cast("3.72120262782922945916652679443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.94908530795382262112980242818593978881835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.12206584334504219728846621264973553250302703946785171831645645721830894010675262018545815052840050758849380777393422282576480781495344500008748097426459462508969278927821357065182790433439566919608820582252667225317461885443234193297904549706413625058399088149505555110903375380342716569207812657836e18") }, + { static_cast("2.37172835747338208930989900125041458522900938987731933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.40757764503378617060302957497697207145392894744873046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99465320336479719185464362393617871174305860472162937262848024567759736497677820188393809529906684006391677099787283285239332531375600773760223206100883246634220752238455329498878968166316454533321577818353913376078773928516840980584615525022113173652501922620733886925072518116022140332545581471584e-1") }, + { static_cast("3.53605103337158652720972895622253417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.84582476913116806827019900083541870117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.83532969791885885135620378353794410619553188299174712267165316998085251325072529407513466403156971688912550231810700054288873685181499788137652636209514628912399831379317778239395084315052983947372535292000124065735878003968456173427606734312841500343489942261612441073694733682134245803236657004841e725") }, + { static_cast("8.31048089824369333293314215937996891625516582280397415161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.15539351718839655713821912286221049726009368896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.43482075927723057531497663442495255886217925614713738709933378320005101165593393456330280592636199704470243210249220699112677280162135519833702952111992891673206729843009842099688221317242192847449764385413153153282253151503752131156497992327652425308884952829049613144312048128169217759285595530627e-1") }, + { static_cast("1.14666020001788820081856101751327514648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.34127651548888934485148638486862182617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.74479451169065114507177142090694649425184490446641781570460948781576584635840991601731927655494758023459925015377386019778946251375096661299820054396659345784163916943122911769409035509491324432205386045800229510005976694475685559497072577311014446199955236237444975977941360792089045512126998703937e1022") }, + { static_cast("1.59284463946466757988673634827136993408203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.37368596141571408519865826747263781726360321044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12790541394790276732931574594592716168427963234746835691403175587826006982488095536822241070760245600803352183137207993347315747261870544496930500337717553335079860285134922718636682581363247953489931749833309595523465412068635376914524529775388476847978990731073661981262435307448746968442209991247") }, + { static_cast("1.01037463548088457532259099025395698845386505126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.83350084750183555115654598921537399291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.46827959515471898774763024079995706113716782750728469166998382738205474672874505408339070961454993286360763402251395607969974201963555866889613983970569781895238062738547839409015372756811222082668539050479266568911339662981230077013588037391296361362960017408451588351832195207411208108858157498757e-115") }, + { static_cast("1.66695565004290529032004997134208679199218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.71804015666434395370743004605174064636230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16219309185108283690353246115834277672387666007297244563945515894098174972467389980428784832971321037184548414733298149740082669071577857913503517445753714679820984984835536300423998074680014379718142053804437180632038614386541542054507333387434066222641647278889877313111291185910035634611028423893e1") }, + { static_cast("1.28464602296116354409605264663696289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.32457638429370376798033248633146286010742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.24945391385140670639469572823424256394544549042741674612450176003078448450232834405677926416541827735839125915448795224664876170676948629996836691342006517593947756961464160491430339434651171508096026536520981556090838358776179831242252299597098299062165399439487062435923683313278394249407345431587e95") }, + { static_cast("1.04339649065651030425752598951305571972625330090522766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.57348570830582303869960014708340167999267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.13059686908080605126564483508274490473647130063580548021629986277623406548383789633827569651948273474979014022501027829260141472868965231700274633764760142846471542740886183449424861759202613481741450387488820213753956013540876031520080117102079251759436887925675362188501650887210343405664270909838e-79") }, + { static_cast("5.98527292754746476077798433834686875343322753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.92842618905841398438405498438896756852045655250549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99969570850103897852254602475534171540024098089888531491644885537022647868647455296214377097624078476427734613966180360314627711193584708132475074727707481960045949327090840155765239976195485323033627665295521041657350135494380406033384926325020170964497589858453537791112107981125863527921983931294e-1") }, + { static_cast("1.20170821629471988138682103652854493702761828899383544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.83573171858579975435077358270063996315002441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.28605001646404799122123246583375017811401439409264242217956456924187147921073178601773640157007541107990624712528914809901097933653148466740296742087373566926721281981068789281547799916665066119657434350735735616423796448248252402292977828214490771898387468010213868209841336736006316556313401379158e-10") }, + { static_cast("1.79027858130276217707432806491851806640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.03754584982387711988849332556128501892089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.63044664995037750836987820374386953646551425036186940515842751543311970070428773125366390621088048509415536569966741084563251083225715464442813762547476523458275835451374563942157742199280762833831415410370539590912680755089996665637460577287883121257390441169299493248423283996313182295602073608455e33") }, + { static_cast("7.71075177335318884264125927074928767979145050048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.64182056353383813984692096710205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.43972399050369154988520798910605088410360743083682368257478281007222478749780386934407011016164443028717189065642983648339942330570417348717676304330188520673656075843370307967688074309785894752170432378373350782687762813282030251151752809306457995236444306078641839344649086096494148698382826630683e-559") }, + { static_cast("1.22585961723861284554004669189453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.01372669446815572924860959780346547631779685616493225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011878102928302779143036441761880708224532433147368168056931216968198406137164127175122694955536795144107173837990207593653143943257391177552069467355860858316175819319731322452047752960070552385154812027281420138955970684262089648831370958477699568344849874652831370849460274952408206982772881433") }, + { static_cast("5.82595149644963838930777910718461498618125915527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.85058768638723995477498446282638155935273971408605575561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998621052671820010209082288722125377109323080442152434584440919377662337625060557131747020218413297035621822998191924210038600199853200536989949496907248450515440309961142400248274163420688419892365590086355187405743025995286488853302886303794885670413483577122364857720736276931131470386157699818e-1") }, + { static_cast("9.01125395544224438992841896833851933479309082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.21806070291085433154876227490603923797607421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.38368157061396129371090614663532617206257134398324144105974743560347038187851945959992361814602150755480311739774866352614225040566667708793196627370259194113771020229764238603211377558658426209396490633521450588911944454397547213176293597692411663128824894095155297793732492904564527595779976674988e-1") }, + { static_cast("4.40965439472245090968272052123211324214935302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.02453990431700336927178796031512320041656494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.19534075097294910062427312364961024864527797483767863624171403928319226867976521096128692940847528103007338680691678979870596291215052686966371603169090630798213135736273205172476019108353742027081191692977102801637543740660392501627319952653856947188066651067307484842658131091249553304134437847486e-1") }, + { static_cast("1.93717944386320728433759086328791454434394836425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.08574263216941169218898721737787127494812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.56194064144518235667018224449588679976819296337783156090494451036523029483949448332763991177580492553296509263765798810431727918219796862387760870580577134565230417714219352767669331762365217747400655499790736729474440290141888015988952364748907315410294417222286566628219298383793200309754712308589e-1") }, + { static_cast("3.66479892681643832474946975708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.71145011595037033202970633283257484436035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.92304236247268349096312573893392045307545699411902317264880124837981164329935084560551082257778103184407170649203234984204658334295355705120603551098245781624244872037069412927213696722873101986921044921101077821551960590243440000669839151585453297946266135519928259442687204452169702512081165606273e19") }, + { static_cast("1.32708985351551091298460960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.56531833894015816668887630669360078172758221626281738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00077473925602097877583679698815018000110220247989590351745049914772258652489667683543311902850183669682134777670514222872443151397469262756195899010288195180434965887160900063533882057343026426147190468334739066751949659071732450855977621834587152702675615140712006936143437739732339126497413250346") }, + { static_cast("3.52775045264896220942318905144929885864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.20207441294177685975341773882973939180374145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.19164668712694362712251058826210564533792000244902438405631163228898011483361552530774835675890492313952004188178746361986328169935055931569379688204574777223286241370824460769287348812931304022631646073013552253933784290828875633916987679684918077103703055564642008994164871305721849760321403415697") }, + { static_cast("5.26721150567696895450353622436523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.02594021105445992042559666401757567655295133590698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00252610964243996116042029581448234570507107619387893463104238190901401098561255564385433004137657583567661490188312636640964083001255112695679226528406143723662756570159800308402030438165398677929717369572388554610405821138849352686065896479954227526563362385890018562652478441542017212666618852941") }, + { static_cast("2.85382232656423795447153679560869932174682617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.21622084331017621394721572869457304477691650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.13603045090195516704596534175318401579207918841598587146324536013529784552205952203801294482696233870522877138037982641276177183524409958004888324787356863626406890600708780844863240402886258989044381114275612277702992295412653204859730899096318397139691123133990243168861782693287239971524166152533") }, + { static_cast("3.93381694633284512141457867073768284171819686889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02640519319720624480396509170532226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.39863675434390989723351064011214037513398262547140577736762821607782111942948883337093856726075063500818067573716198405459606323946322650536233861891286348318106161892821504014313663700097828008365436512713907896457061009150442887680100088324705807016079909429412724343222986472982422270499720872159e-3") }, + { static_cast("1.90723973215819387405645102262496948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.12980954046070617650260325959266083373222500085830688476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003874831722429751496737922917004435479965257235816453591525868492670813319281541168275796018004391940278219820598993631669244673032352035813333397881915928790424205764915135090114218540888704442481908590391442502493189810976009897523082978954781479402200004590037271385433077485827559023806478611") }, + { static_cast("2.08352376339207012279075570404529571533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.77328372265651944869168515905855088021780829876661300659179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000308249415661310193935943862153702303875909245307529450912006821815453371252563642757366042171762708256721399309832054533722706035892679765533583739735266608823632317266441068592608135365434098808509810551746075126687287986572543900322800829577692516676548344312574211742425657072976921014511642") }, + { static_cast("9.71724513689399464055895805358886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.53600001609863927917037917936227131576742976903915405273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00014104020491665960642725547509974756116986496973147973056122194845971531406444606607453003866992922578566310810305178136382912507500272971783788119308610688740112803511843108270710764262658648334376396166426766278251188688321297859103006142315969456950763638190401996565523343208463418705191958244") }, + { static_cast("1.39802629394119207304099383737394646232132799923419952392578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.51936644048749802671238740003900602459907531738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("6.22241870897130620142553713444278896319414844301127628403550478555392596780554049192378201563747768162180873879073883732945738916895322915439456198565943172406197196260279982663959045275534018807122490359500452521705604768928620538202140216274727339329295923594705918674314862791990908520063913560002e-1") }, + { static_cast("1.82765007732204644297357987170471460558474063873291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.84318950269757237947487737983465194702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.44507161334831975914976330209249902713146345349963201960249788428960802366282255229864854849664361912073985037641790912699757539023105844864929631975643935921225809946412808629805438733741027621604921419911409131275740749522537202228860884159853851509071131465735369871648912668689687943767400944117e-133") }, + { static_cast("2.49872242289261521364096552133560180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.70475708243581758338791587448213249444961547851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16348084392128872602170011561254935010976642009637548196335495165701186585536416597718806964461847864028617635977334329848073696152520245124091137376311572172062522206250814543168673719325221226847866492589752767830775399781911226358430095279351842770613889036173222279808875420192058143269430231674") }, + { static_cast("9.73728711278181032710149489517448273545596748590469360351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.49131637906343872401748740230686962604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.07165047632947683093273589058329846367047057355046748020009102510780065766705586588667687646255828190502946698129852184038457736930348397388946238687402139213354445146888181529201139114650892414118512134805367250310852437034078342906915160983796227481872425495472151960083249503055095175373933146792e-1") }, + { static_cast("4.41558345670632190066440259101909759920090436935424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.02580267030248754346610784438098562532104551792144775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99968900351231822950433739312428495072856038776486153703336951900488129027691896751286362525813536862927182360156159008954621569331770038862723809677808006540779343891491372231781933232571078612298233285052166498857617406809139173150092488738015228536389093793575323664246229233166651636689627818170e-1") }, + { static_cast("1.69439965482008625397014611735357902944087982177734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.70724294373208412833875513570092152804136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.82874963902734961145255850699575978876746826231267390332055952052622176060893943203741788304684214781121351119738947541263489494899175563981247061980860747331222509426652450764505228926170316851952179492921780437496906593243321687842665376169899786546461700589626075813241454757704572169462564574837e-1") }, + { static_cast("1.03376346181700355373322963714599609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.28989017209520627493812838793019182048738002777099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01199452382152846374481951076631164582584661608322894290555407864227990207508639820617740715279797178581146570337346215682655494757376897027306747771093102874076785395996716253897920655609144243672317898938847395985100637001354712944101351050038536687079382428227717980685264632621156939159222226580") }, + { static_cast("3.11283305234331397759461879104492254555225372314453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.01353477046427009958251552745878143468871712684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986074588519454560640521673442935641990554362956049271045530697088039943872329332770296441408515271037076808977915428133116228156704302455915102356256867263136007644093137679299480159178566422686424390921886424606676712277018147908640199369062110318937373042728100659267805929813035245614797996696e-1") }, + { static_cast("5.28149186098080924978148686932399868965148925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.16657975145258205884601920843124389648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.28853014056156731737794697397317103994217559431541111572375406126519183769444357872853226505354592130101907012445487770770781129901235873025553849331106253792412404560306141938477978026852566898693906386886543485615404988699045603447639500571979436388663669239796393481965967462640474331680310932353e-255") }, + { static_cast("2.22250599362956213767006374837365001440048217773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.64204894849468473694287240505218505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.32843078440077439221637641999286892206805235377727400014747144482178933184733036820827184969102097810334387052048590277206436733653974464975608297721942370810634826788083279979408768576378602999295622590369226553818034587114239802440932660296228167167346743576531361276267309223102513376997022773121e-304") }, + { static_cast("2.64401597631773445755243301391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.48515468216955248692556779133155941963195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.22595558957063988125039996231413212457799685089809815878697787456948885300739760428233740293311835672030485009491199517382307607053064251483492857230753137256332086797523013500249415836024187602707789116720162609479623122987122977570646771495383250532455162474303561808394969890452286012410188771582e1") }, + { static_cast("1.09582116879168154355284059420228004455566406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.12062729806059380166516348253935575485229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.40731230607113577867418131365007953849097556433032366687124266265609534681297061468250410931194577479128955229993084028648709681104213544161468193428670594705798621530529153971465865443890890717329532471903443507290510241292018220973611927868861647858691705199882686680328023542042496509604517393163") }, + { static_cast("2.87650329232355375097540672868490219116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29636994307592203767853789031505584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.22908880787878338117870181426636174855444573322349359087228723914632875946311491878034980145023441888073390972797385266938998183475968716718276000295270333868881283934630328911650991709812223171518435502540229986453603655260898220094106548795285001784222894626512051690586979041086530161063766088286e48") }, + { static_cast("5.43192335581155216501364479952940200746525079011917114257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.05490815336499605694119130472330425618565641343593597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991447218133598413920881391105179265568552579320617946001886143605253717825160221002770761833078341617996929941439664383856515269642825892255570319730959451798678974258583863414985420861854967974576953145352608585972242996479479728931155364675877878808323939895254383920003458645959690646207544957e-1") }, + { static_cast("4.24450620737656849484897847446518426295369863510131835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.42617657776718897988388334852061234414577484130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.28295177297287815001307142572162153750668927480049029937221930255174310738192949066940496577252702629998657734311395912708887847618250337367575924375521236807234588840327753338387239581722861162855798729933237542178055913633273793008757291901196363208416962469352000552707123078294608807586649015685e-1") }, + { static_cast("1.30733273631510917012210626353407860733568668365478515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.28858724063975630660591753517962843034183606505393981933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99964885633207072968580726334787422174518544602461721143383625224899368056665861649907581709049484723249000855383620986446956783244965088674964206494776757278305799759524067667215395257158003498553463221431113016348494389058271382782227321845047125985119505752219731349818937084514014330356212827292e-1") }, + { static_cast("5.05693319148356598344284940083070978289470076560974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.71295988486159203589842547899024793878197669982910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.63937121881680868303835544307084885674388908256423717510775350630463810161245157254316013064889945722190309457613724784742119883122943867724213022530021363225255978426044946346577578461808416905152263622045415849140604671011655772958990313726815312540544848648362428160986497782665450731113127323529e-1") }, + { static_cast("4.84423969203509041108191013336181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.98413458911828048669701018980049411766231060028076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00430738669558002031403659131744896728312485313631409231096866927631637993851247415735380222493024677897434245013356617271278547792035688620287749522586547267897264556329014249359221662180556496497208175354676304526200770138492165863545577626683932270268515447259703077574615595169323328662157853185") }, + { static_cast("3.70784803656541983585270827461499720811843872070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.52501708992864104530440272355917841196060180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.33573197351168666887962631201029384882638323647836131662987813863879776215233605661322116050262224430353678691583537529582375506359810080440891529163886160078411813398386404062767305381544566179454141780145518165423921596307439563187082576279320332050551415851387221311994490392675793780232895364275e-1") }, + { static_cast("9.71655514772415699553675949573516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59166384187756904111665789969265460968017578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35377653844658353569031679679735299370922232948810544763027212743048187579990164187893014793934410534408779634667801500692064187926463087757507629287841868368096408503740782370080191376158895711024144836742418575636184986247750729343991462010937031402061673932392367262371858670977341473615463130359e1") }, + { static_cast("2.19264585936548201061668805778026580810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.96729316179001942387419288316152687912108376622200012207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003755636032301823537943813016356575902489314188145066916221494580392625081472816947024292161874513732270899683702071327371665141574567958235034154797657204764921080200596842458370044167411926333595258330617813605034939486089552138840272033589961004832483480269032835319807553392086565465392533307") }, + { static_cast("3.07913249304984926180139837015303783118724822998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.05463804011641570923529798164963722229003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.01796919571840276681288861157787148204747502682382876961304668410493347723226232435621763407251840958497596600197906374696494268910490419389807332560043086656936398322936521311486726743408171670806339766715147358441693728848925652781609216889389399280179459317545232154188799226490332505068768929180e-13") }, + { static_cast("2.72793625008602248271927237510681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.45107876494454290927649253717390820384025573730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21356364414706225993709314217781803611734556534595777181951409142649823132949473277169982486320740015805393683502787636048469072138860871755431959907851351864995912275227191432009279405103766593019141570051245200073079914866268809278471723253071227068595740039873872137154853304817823898235004618070") }, + { static_cast("7.23608622250063859837609925307333469390869140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.31713845716947162145515903830528259277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.20546015073919711264373148066122758661068546232444031541084969085534241548251886930568813690809866385000095984750691172127616802373754602142656508934912781801862005537086317665378844206989588374435568687107987862008034665185792976330120721552229886514045101504253350965371418298181204870517230728955e80") }, + { static_cast("2.57072303536429899395443499088287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.69790274993758974475532852466130862012505531311035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02140974620888944930305959435799702728843289682449376214925750857783066006891649041158724227299321084257799199351924992147805951706584524451302681812312203333848599297059927350897068391576429287666840858314350106940048605718179391844174140189607359928083054157216235380992076831905704302805940691484") }, + { static_cast("6.27071378772734664380550384521484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.77213705199215154541952932376602802833076566457748413085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00013045496457016358902387902369248820481792505684604793782357003458740283012026953971512527832247937686018956926918760579827820618149654974789601261789353438501933209142889274324701479760186259188286221595702693452369288516143444427753506877231697874469255361407264955531595418134590240336559943863") }, + { static_cast("1.22109376852135853575020973948994651436805725097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.11543635047828820815521422282756702770711854100227355957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995551589729160336804918676630911396340574056049766519068518427735361038006808700598379055737548489964622176597729664945550621782605173209704608243388212974829930345797712949588621847644770093271093043600103623962707878170666514346008821208975619634087411931268385031450753049330763535153583731711e-1") }, + { static_cast("1.52900990354010689331598626949926256202161312103271484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.07910792856703210418345406651496887207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09437152552687759915144210042422837004776738858769798785362828201158918075365450163702134968526881164477730298716543350719085306748967317190021537573795780001155496528795641888775374745803795044275135632851107711558035622505495812638847592959079891240357223230602055612544312975892640303394964825816e-1149") }, + { static_cast("3.33574880350019498109759297221899032592773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.22409910922928020227118395268917083740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.53927322890034742368017335227292720005783821228941858003370629012694382557138392281089806659775813675293365836774015539525201899124038456550795641920581579865504101847353382339574548922971435920120403286201070202878099356466592276232925556211910029587973272230882852354333961947656943741233580547242e33") }, + { static_cast("2.93886093222884170472752884961664676666259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.83152139210962529736886894582426066335756331682205200195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99965326837122789351065801513643019379691746234431978717545032882563543159129029000520238088911519893688798595680083260598269929340163335960195938697476035130411906261845669886681524297055544969116053569875568029319976030656002722062158836225698022385486930605555120535915405105091329811282147529892e-1") }, + { static_cast("1.05363900341240332636516541242599487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.51733416318811920042719521006802096962928771972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36944656525417845173858897538026176879580880507614615066496128471220543538723767528991906038383446820702565624708556443997649629495841259671527437077527127938789704415913380536996498286764720566639200198900869760387706475703380674649201567096875423075710829719565752777057995176317511826228555593581") }, + { static_cast("7.04420993592731428016920358636809851304860785603523254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.83514384888353143665540301299188286066055297851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.42999851704960956730922360017793140547106959683768718211070193339741510527923658661871542385815054985958418322575081567325471819065963185600217971978825670497003073742499873659741487280818814513977323524960437583297927902838999554519027556228317521167236540123085211060151247184818776639943050911394e-2") }, + { static_cast("1.36453344822830520570278167724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.64161706602405751964646185570018133148550987243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04399795038635921897857958256316651977445152567453727222518284598769789391999595233661749274120961391885225992798836625746470159354169324537076101684572935560321844745400772917299981122731280255675880379891143456808614768985468915540339803333726839718219814716863124296189939533443325484535601906033") }, + { static_cast("2.96565824250737205147743225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.51611044873741196425953603466041386127471923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47522068392867838732450708572135930567101005550555468267204809080882851453167258980507378379243415338266777301093835073449659828508711197010120745211201439735694186362327003324753635700543968787946652069972776477402704033680932298818937199049452926851734709666219333409709557278942834445272506685923") }, + { static_cast("3.49571885007329983636736869812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.05030442875070617603228129155468195676803588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00424637003637001346519445137047903985527298734444205998841513031143713650570988838061609722582515075163633719319500702266902153041674931227041528924269656845803454259997891649918404783522081199789884938037449889035577760958358376931686006190221056227385652828889051574541455553647177469994824093880") }, + { static_cast("3.48704350707848789170384407043457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.94470451369696548105103772741131251677870750427246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00348622623956426654419790365515385008204532308719120294458056691444071691627567637464093877906643804041743573926720499607391861016395825332249134843376717727039444569339034648222083969616342813466476442089528251404075917497087087133158228565604726619218594367232783173627524996497743616209681950686") }, + { static_cast("1.56866354052483725212141507654450833797454833984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.92382444394148101329822253546808497048914432525634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99458548775941655985641049562781270043468152203580071617312952591624765716886645437516907451083025631663787001723138256606416990037410952933773901687094742927210507959414283830075225958048767485241813607677989510714884949211624158456814965576504829085206941026015695802504061055800475236320588403791e-1") }, + { static_cast("3.02555496695998127343329997529508545994758605957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.43476200926107111399687710218131542205810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.07162439112148019358772224877510168973399161717373536875684406796915754460308189843582561832996734392043166689610197386058626738901780367190433337506557349349095623450517180395264699151519926104197461968535179024894054340573408793813826035189319052898390671701445304365679647915192850527101155372317e-12") }, + { static_cast("1.13301057369715999811887741088867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.63391498739915612750661644270167016657069325447082519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00152645922689671305334533143447522531808487470636607472600090062282095427316474560067944838274073843864628772883486893974636361201579261003896147984190781801313303984627253458134496161410984325183430174864002871499528387099093919980953756534711057395376377803880481128200568335684903772454493560544") }, + { static_cast("2.00289080215499270707368850708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.63919332962040243728552013635635375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.92699766759603617897105296135509926340232009672802063778499835631207758035200425882438232730073541633716557508264570905405926283429555595877466543065569320408150504538307810614249593452939955155496934950121411097262064539453295031460705244148452908856502571794692573823194011760644101511653087442625e3716") }, + { static_cast("1.32507839540064445080225219442127126967534422874450683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.51887862883488423904054798185825347900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.03647722584318600030967144335207527953463651392633257231597431308252840118498779108498324584815641015064709374407448575779770810144009458027431983385495055750280990347720737478088901276233575808268895728220588756650828610378844764861577519796740508015409537773234457412772265295624580311112182954835e-589") }, + { static_cast("3.57603431414909023189352410554420202970504760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.25925527701659852259155614184749083506176248192787170410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99982482017295343923291140868824543861889706024267738325920940955163642168596277387382324596268313941030962899361898533933991225186157467591500415565798572470081783136017764613428509329263882432996891459823007909353566621634663513526224023265569627278594547455316883257611223218894909706813593928661e-1") }, + { static_cast("6.37895215316995745524764060974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.33606864421000417781498770253278962627518922090530395507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011705660623425091805720617137318115223118739797033368829524572193511821979599497313069101487866374165387923697805554918674050522785359139471078208862147954503878603840716656103170817064574728416607854591674468869938491395161398773239010400175784333016262331344116781579064223044329496394945074676") }, + { static_cast("7.38104343240080229548993884236551821231842041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.78526096140715813593603800146780713475891388952732086181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992740925564330652806516420746938988010148239633275154076421571630454719695668630175026322867662102076692387029189869547293172340508820534949790931051258505036554857756821592275590340005422029182367955076901146714768419205676755504470790282646601620852828276821380880075367804416790635127471984294e-1") }, + { static_cast("2.24606666462972934823483228683471679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.56224853001515953110356349498033523559570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.01973918494886267810001894567464669163247766970377570638787946610322435627850446066260492108701967988500602281478606685233882133420407449502588207373547970434356681888963673609480451591224779378429762251379481389292664486026843607177275521955621777327928762357765933587555111806380884809909558908126e155") }, + { static_cast("9.00800182710125019180935623808181844651699066162109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.64432725765355242097953691882139537483453750610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93259995118943779913113450886803213157300236441759177808360979990670369813799397673229074691051859756881735508284831070803950318509897851789286938821324800564473083981421925321740139076048924264684734691750703913517330543410997193207195299362629750503027996358069377923999788650279477370768077765657e-1") }, + { static_cast("9.41820034138939809054136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.77419300288664260104552761188045906237675808370113372802734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000890381075384949081595209139696411199492416870417459364082687864113657489926105641478106668362778068330268736600393352152923274282322515415108939987073582719187381060734722668227714154297709452559911296248629890116220184188866083605360898785001127921221360852853375996265543887873427220880943937") }, + { static_cast("3.73692731999517979007974233240929606836289167404174804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.54122149350758519403825630433857440948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.92632813942166735469252865298175146289395053013193471532530902730842579927583105349449489218906918310069151271847219223504300355763614013961247019308729802033635205970100220700085021558381217246935232153985446384879850169504304149149649141113162707552300166988589633450196697040655835196191118606631e-25") }, + { static_cast("1.36207381223418886456721921263124386314302682876586914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.62468618182947011518990620970726013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.23349312978912488484797519539255018773821880984944037182332190114599517402131412348320914129812507474815113624208263309735483442308554370722059051755362465566371079854655405434396337539491832247301779055162543337811300162664812836135792078898777055591459214033387458633919871456241380657515870584905e-1015") }, + { static_cast("4.99439352691324893385171890258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.82669140887688854490988887846469879150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25800762575108176129137940894321369236803059535403474287787709049193999989553876351149791249607106743078893765328229169808063556877194151113548299740103775991789375636892691914854010648529483996498522632062568652379746122433944483375027665116468292026500341138320088041194003298397510386237462266236e179") }, + { static_cast("6.48539296127664783853106200695037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.19081769830710604285428644288913346827030181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763841928646063179945311430619776672100366204545937731495139936077193534063748395270846081233643612207997993464082794803985613863394615181696471224069637239381759785944556677466232970035407360811317566511537057177507901702757204703329800142152099723806486139061978862458791045685416916469263617024") }, + { static_cast("1.26185358741126574244617586373351514339447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.18707874563769861381290482427175447810441255569458007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97208954505633083962348848418154736485944843062550245347612203304547965531131555025237286475690843458460809325029245321285039436520603179307117618768371875438665250167675789128497710216048233584274468422162333906486838232593986287174975031846178589748114260487176217087771250070897293526267935699686e-1") }, + { static_cast("4.35488942342848749831318855285644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.98678835531215099763358011841773986816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.28936120581079817550967747499324146341809782859497306106568788729215792440868081012592482836115918565108733027645928062811796100015424546044055914594061783213133483941275372186699846142681689537346156745852091720729474664315028859269079769914368203114147150204153490030106741528606576208240181832379e2313") }, + { static_cast("9.52079140369027854262640175875276327133178710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08107909706786978198955750940513098612427711486816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99946912731466247972527890006754510895764819973853843000662583785640845446566388520861934833991540886888853432324685563515222422612660717906957938307798158191679485565611171204322088502967506340693425660800080176478497228519680488062210430869030836704176100634086409155754383655120084467598988079204e-1") }, + { static_cast("1.04090684013030454480031039565801620483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.93673921485533583108917810022830963134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.11210338662691592819619664979726597449100163292683513479170961681889868927958630114518483290408310841588879531996056535646660865328863109763975044243074863201932805945130071457158971557983161341534770079019284360491414192422030250649176833692020314068650401152520803465262499102820988511235853988648e197") }, + { static_cast("1.97149801027129978336915883119218051433563232421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.08739590531112617632913952547824010252952575683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.91773157361409781701715493663763866515090466561690289420891165770114164193580683686846646130438934752909209919079027125210567061374829822112866779201464446464651026659338435230202216580437945262368984290532688736997482187636274012593325315635831427955296981578931251003363149110123293975764983649974e-1") }, + { static_cast("2.79971511541740710526937618851661682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.78721875202228321077857486898210481740534305572509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00326623969490901566461359485954800182836515927200276988639325398663724684484176518830065683294723102506600723636309590040090118084917994679575687454329398419185701984750026134555302778342008308134679599723649132979721129657717437355628051914400727321111879908949789141417261266151891576137055521720") }, + { static_cast("6.47180277522192426431502099148929119110107421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54396046637904049703138298355042934417724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.11393159288848940315388484390073955173736785149894558116032886653088516351969818186256818732041463123159800744120590173108691581334056179094211775690837141959813271450679799058611736101514220405786918675156348944553549256908731766892776136986705072991002327432436231317606705791658862062772822668961e-5") }, + { static_cast("4.68478493824730685446411371231079101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("8.08503458490309867556788958609104156494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.97762155395492793734284548790084346203097684458052431296538227291993735975496781864258983550151454075639982388971649044469779839674940147551147838593024539580668837295332526092577626791361518961708496544368414553255175123291725694241746786254191457634438577633532650001615818789185478534006606741407e296") }, + { static_cast("1.54391459551929816074178347662382293492555618286132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.30291502045438312151759419066365808248519897460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61942064374907006758472323953419672912600288860094391695046538452658427001421356899386802781741233841276963853691331000772213773371503948038327239870459585412114416103967368390201886001946927622637207918880459451317082626408706757400699845882572764664471363683650469561537447695573432201521718527705e-1") }, + { static_cast("6.48003875925739691865601344034075736999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.26121082452632900412770045051047418382950127124786376953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00006094496769763278820872383817879036100529479018908630432836412716347076273911182394224909321200839758060396148281450949863621182268008379068612869939290370399199699187329868380547441347229000962054100848350577521278040241049817698210922858722233509600098748764436396006044192563867258556456726002") }, + { static_cast("1.02255146268133501052943756803870201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.89932691098755263015007699323177803307771682739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00013156917767091552599892235129254853484398955770015153844565825349128084659104946293310766324345122756751921898192510410177121820174080396618577123202206891707775599129806431636068338328182197155856712217515198962725685962829886150997851437588418591804207516238583892908865355284748545102405714042") }, + { static_cast("2.81888129121324254811042919754981994628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.07352602363188209810829221169115044176578521728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02324693289074461806065314601130588099455748535483252525100029761881094483032981058215632709470546862166291555062468221229877852679809354657976457141823806639541535849041446001105725715917762334478759524935613974359759936992996718201195710259035985781666122257084622777055529931477121573215140197696") }, + { static_cast("2.07185404527926539820087414867089137260336428880691528320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.35292300705978618680092040449380874633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.48850440195174823298359540121818302112603372945421421598869878434979555804675505735326375593302973038814914197710751833892726619856756218734694899102028024355384042325664532283875944124268902285546831042825514027899847395159917919088321233227951525026080119430650746383889735094027434636578283016912e-26") }, + { static_cast("4.31935286049695476781606906513388821622356772422790527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.67446027602891164636454701675205569699755869805812835693359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99973122517169758868298611393816315674468708382437784046013092517874934197350186005397961789565235843871109955511656116413964407693637441952651815512224774438246717669200447114406421198392169132912944363201879586414171509537947822165122722681222879324770937027844102716000158168894762456660415032672e-1") }, + { static_cast("5.60728659565255868472196526530737514804059173911809921264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.38030853130188620203101790284705430167377926409244537353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99990816207746297627000228090032149940299388165914304992280548917955938225443662692605137525666097388080408339273626056667955459490552137971306327684500228508064672496432612203803093818358636762048072433804065084080756285538210846111127149390742779965190790248566867146590543170273767758612958658971e-1") }, + { static_cast("4.94365872790929563630746290670003872946836054325103759765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("6.08107286586160853403271175920963287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.41889634080305711655291544430541860422410170311666966191109605478799772032330347327796646352426019590688459329571978188218768772574725991603534645626444629132445446486278236532522655245444099755490849273965885852698636839519891473821647868673766453693048753250768728056307822453273785810806442880557e-262") }, + { static_cast("4.57863041241061873733997344970703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27996139284958445614392985589802265167236328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.85252911535679891073378835901479886089967576299789401385670015780551662533990060451545346245206661914640102653229509656129118798311517873586006356564037704026911300448200277564257378774264510533411693099418541902845247573044373703549276907520323049567611007543654341177174512295005876331502328496351e72") }, + { static_cast("2.08423524510303792567356140352785587310791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.35070210371325316600632504560053348541259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.69650994818884808551478851790421398330849110943521821889862054443832715742450095948994740658527477301306542925058870703929885411081233767845292798598894899925369153906803097693018622562446710881324699679389099964263723003154543262693904642747226514772235244787350437914151428906711221635213885798789") }, + { static_cast("7.03507355339941797822689295571763068437576293945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.66736311094788106856867671012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.68909935340978860422757035820741960584342288164122209394216788923406587897458745269054408633969378408300698489680800368145152233150125878615072546588959342193206959268161227822392820692595901101440058139059566058188384350410226233241151749648406111214064140648607944967440645591239738930953785109368e-1000") }, + { static_cast("4.44777561798017704859375953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.37314005329937316446375916711986064910888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.12314549862845492717877595964768115546325186339715764453604920761210996544623734651949041265076846799054130789000520895961692269440989421981634150513113011053879079524507516981642085862682964932699084859566571367826867471772759871670601934760070910316789800074922999274803369631048113774053097073929e20") }, + { static_cast("4.78949184649386006640270352363586425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.79183351174304107189527712762355804443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.79637132177375382162263956935980813855595791264327736518378404210637984016731507340572257630052502643907564502937056932274446805895054500000116906646009851736492937513833076602489625307279653461589071484812740516746714953908730424736460829219077432204380475346934742691432944334479643432469277088306e659") }, + { static_cast("6.22325830215437599690631031990051269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.25225952793516384642380501190928043797612190246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01987069469372759270453628912642728954230513534833089604954661995171725801656380902963421144934906141234552439696120736550210382743489449329697576830407056888118360526079463661066722214220114165138840831176499526985462507289995825151030297233511088604059436353741508088143154130210563278515547311543") }, + { static_cast("9.12400440701637786139466257395724824164062738418579101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.34400553054916376341521022652614192338660359382629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97821977486950583166084719161557689663568325790003522306021158417755185644936647878316368235185593329253132043532554677812935724747863173935255764658313396824835230126055857216828346612262350441572667853382236006603976105644273478945602579828808105896550462847104108659412377316272488653010471184196e-1") }, + { static_cast("1.33795627811531119277788093313574790954589843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.48183812852515298791582915027831290899484883993864059448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000384349299045776862801360403732363545774843774701655200272080627739941386437175886379606902727479191090187794979610761904053274682140855025508483613322969568848488035529156236560186742600966591613965074184599845133474883618868818832890976311295886503114503738779326119140373893527826165039256344") }, + { static_cast("7.06939041310026368591934442520141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("7.52070113177227312917239032685756683349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.16601617096668251300410633861451144300904853213668949893514704576723535839139585890152639279492333481781656085682222252609689619088940700517823681224990153082715763605916833922234577262387169239662906567674441665483003247288718595609022710170750805174093013421029787059183231600348513197446175716344e289") }, + { static_cast("1.46809474819978857951241479895543307065963745117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.55150258058036227826192998691112734377384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.87508829078291473496350060709599928627355203095913409392108636898471105714839831302147923025254259824329731513966469918955762532776229610929533035120642195606951641982085398951090528368050382553009140996960228822308531093162518295270230167711636888797942089811261515649759631850124542086583338696866e-1") }, + { static_cast("2.13403424835757107302924850955605506896972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74881959702026967828913939229096285998821258544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02087023232278898673025082821180943357336233310089987611387411667231521549575677239762600896132782138671932320359043850059141855317509884880628897347559802452573752440941620827448739200875424446592178873469737214134752340014718109265906882735838254335143242217171430272779729156476847140495477447567") }, + { static_cast("7.95233844752690766100045038911048322916030883789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.84851678481346848315070019452832639217376708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.52320441273088937482705455163451804728010853035570734024869989669472225400000323970014547943529070869582874785761555559916107563529628329435884632549334664560080647778917243975126257892837384804686623525333256233581024540617818741704180357848449262419278792476592443919338009722004675820379508226554e-1") }, + { static_cast("4.86469155616132400629658683044453937327489256858825683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.22877434444638661270587931539921555668115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.49398596693121402232511551773946216238940594887656584112333721649128338309222255715733045830942439483758414668436262063880698192055748811167639524982228502529443333539688201437948685066022343441584667892362197265423697997073104183476242310932155094648160217817878533689247152065556146288540676206268e-1") }, + { static_cast("9.97061023610679164619341463549062609672546386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.88064355210892131253785919398069381713867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.31339250305317586137103280435203540286641209041963686984564977317675267872546421630007855518104235103746292194256810045376453068069833982650717834727768128915903290190711155087191155109113681049655966851631090461344965018352997694452739029417934674832819743056725077543693812469593253205921308221308e-59") }, + { static_cast("9.25067228877758662708430392740410752594470977783203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("6.58041095700439004900772488326765596866607666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.34794411703227640768834559037146678081237450497151808641284692857257405073921261445846307144839876248119821368257643009964194784066475970698686506948363255089072439573285741549161564675949811535766568038690509602693098394199576228057991570285009737564027696021280582562413585412543950911326853262100e-1") }, + { static_cast("1.27144511159262219734955579042434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("6.18836319449928007330186119361314922571182250976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.55634262177085310455272777009125596103461766420555774353254576944288801886851836915203973701385795773437574206488784269131348804974222211728133676956373754063980028710578189114584286886146802067657659439377822750677886486205610448378645450751753499248735236114037268909383185086028320044219137753422") }, + { static_cast("1.42205871841051475712447427213191986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.49175822061007323782177991233766078948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.31499443769464065089935605375459683035642863575091614297392875457512297919442473147075015935528487370816930373009973708163470195938036050657595355692444453780282744702410807810566482106290630446087507470829783752836539009991223629616484834464198297022741851935670638283977884632514115384409382379451e5") }, + { static_cast("1.79830846471683798881713300943374633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.15740741801222002740900940409574104705825448036193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00026780930725147708425182905646433452420215464014520968261578887024273841780021979940791064143678705875846798937060716374571767664452465951073901977576420551043883735274454852404885141087100496560513919957329201186421887438051030917217421635429456043545707951122601188323754670287140035060211268236") }, + { static_cast("1.41617493747205998033678042702376842498779296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.06659473408631241819755075539433164522051811218261718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00214037426842670551611147350147052752193345171802567422360034056719592273707967867550926051192650203531759829732673928643729296057128383914827597014066465351929167430158631190618779931772000386360976972135737607634338444086468691888473748375182457345550820744493891034677687786078596412978684852640") }, + { static_cast("3.03620445696295947202170140144517063163220882415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.77755559529355344761114565699244849383831024169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.65907453809699509460147409829901675941527854788885630333979265214696163822247505595008528776776735251807610239492515526114770917079309768787319965003601255566849812163333057688474056980168539317656182802355025321396669769362336327872219770789870937515083196007462468888621524361865732646086424336453e-1") }, + { static_cast("1.88150796984490007162094116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.96075222779542400530772283673286437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.33268783679377583213014321394305562443708551652324893198731298378098553656636607906131354129802125769805603337990709647117721910862833606977379369954861887407787985331605230823250624512728814254652735899657072127956911865541366861599183456838203731048557393074731179271410020592240238165188774584943e838") }, + { static_cast("8.89727582886910006720881938235834240913391113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.04127996077174773958962106235048850066959857940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99878344302358244722248144111222437762654865779811772935718213218215174416593116585765566781129897695750076434329093650632173287168263229734935010362448649517261601361617830618010680773234135778887817284697256494192909633866400288905649938277337678717548098982509457693289514879908537721749577461800e-1") }, + { static_cast("1.83083205221824460440238624414632795378565788269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.51305815268083279079291969537734985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.08759465190948202575969824985581134108808966132826957045953621966485495100532942367792704772987024490520063202480279983957515910756497430137889290866515761789926914423548570454774810411630371091100113544891279153106437138536746735808516608107152208446229082973737250416694137957514739571766896873306e-404") }, + { static_cast("3.34665340825903966375139131361748923154664225876331329345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.78685988588032159896101802587509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.52212078787830927194297643296251781134291925779877466674871728836105722487573580131785145484495276918545575844013070305855330551951353365366550132397674036846629030890995284036782751533644901503503905390007269189142085867922573306793968734446410118933272999821289312420310855129959801669881803865858e-2074") }, + { static_cast("5.33927735030905274151661471515595280834531877189874649047851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.20766189867572767122939902950662371949874795973300933837890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991034310800110010707678195555035460840436574922962233018600570397473321611757701145927433415065972844383465094874922585959664097551124468322387734536918015102243687653110114625528443011692213994065730522520240541725522418247328328568974843758308408263849244150678651666777627782107985602066092068e-1") }, + { static_cast("2.19994195074324068173154955729842185974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.06707480325778616969678580517211230471730232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00952545862365855685219042115608145190455235613268820530406120489310419092421063376518661644406509494089174786391890344365290616699827245940846567812410266752069452669091303167176618868615804832415636793311353407444727299687139263635273616648724056070625009496090575286667611858626054037393426920940") }, + { static_cast("9.49426131626506853745939285005306373932398855686187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.33658593189578134285966370953246951103210449218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.10953513637051167906362488703903898283324995313357160919327331939686921714903739192273840983847338772103005796728222224591772689334463276313863779738778665022741134644128703431090827473653846081611135627094959784765932765625500258444912393296945910143335619574776807349923037475968356403544804516261e-2") }, + { static_cast("1.58204381201744226359551248606294393539428710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.69967088875234341601404286503651519524282775819301605224609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077966919198536118506000604021848342587459233214812502825319036185927111842640720441778472762148840769009480654434988580516960635247026640481971290957649218368276357248615028690535272593446475039055115505472342603119011692356413204456935489635677140077206818440909527541341514742179392759484948") }, + { static_cast("7.89159836081502775182242026552614788670325651764869689941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.81696106146368038025684654712677001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.94147359401180853490618926342983857830809890106752620847948172427377774972592621604834694930262822082783398795004418901297871494637794539318032606545630879764294273346094400196886499691750495365869112152459387957968585556903274684614177896724684391146995388586545846815713970966406314356957705636188e-2940") }, + { static_cast("1.28909708384213387034833431243896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.93039877413820920581954965200566221028566360473632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.08496647090160629262865176257751429047729744058064486558757367783712447981236338124011887293782800275409466363098994983981904989007840757365461380428739706364354348918768376442904733609028311603151255847131247523710764847675936168535507206845244124708518371354311381017836653040028826211975497871572") }, + { static_cast("1.88979339146257488413205294364161090925335884094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.50746279790036936674368917010724544525146484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.76918423991144038304021445193438173201942067819279237648900596695575024236585474624026460405210909663314261583560910578839787952809598740673148266220449752385049510413309645447866767727463403580780664879153239139760411591518829772808581212853680494395035365090735562853954119264286528501466090236373e-42") }, + { static_cast("8.41517212362860789198748534545302391052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.64690954096749919699504971504211425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.36385641555849335879047779054573450503531219143280186506059811952516602814802026798922317458022305556248077861115239238036534162971730930403784483407045473794360984711531633071954017599185535725837014265828161774595330813847033913388549400091383297967089159291617295023155265969142242902513558326176e3") }, + { static_cast("7.79453915372945402850746177136898040771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37570185974411316465193522162735462188720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06022076559461302576262215724290203547920286581395364873074659478022575993646868223512587189711310741927159850526321306597320278985726000202501743927791980296512242522543006053260060771089791556404973296770985910119125940674256012428243689156025466514102435785983398909290409351186888763744330929933e26") }, + { static_cast("1.53996830801468109712004661560058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.55753945580631575351659989792096894234418869018554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.20447431374301175187511662239775886280442123057569989101048717965641664163683965122530380365781626549245733448495292659434928101251174655724999866929500920292760069066534315397658186379331270528348085084759405281722204998903474609597521346801285181467380964556686904383585877178604246579963496131145") }, + { static_cast("1.58292085642406949773430824279785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.39839658341223938009534322191029787063598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.95369184630899349835322600435195771430552393938403392920497743251505007693757163085390208500076347439614593692001276141903681987497427879862172599262551403341684739246319058993775975522937386429303489479759146923528741632009619169067978673180741577543638362298805900307916877489621750277562246056785e12") }, + { static_cast("1.34007962789787852670997381210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.93078487352859630432622140006060362793505191802978515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01851774851557016267678896947673493426952146980838508956199625705868791978344101642179134412654468177801448310465798049263061832294449615311708734175434429497593168411288076223275335865898358255932555661831601275564405349791579099870920484601878548075981946266790952650050188664408833668093366337128") }, + { static_cast("6.57565090460510646153124980628490447998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.95349579102368409166956553235650062561035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92883670959819008737323351550818895693909971573197862669756297233542900030950953480711710193053129535412775508169382249001427538228339649766961919628309117712145393012207284297044617755253176225355208718450804357511545954540599873761726532747435308616642768909463909723766874135347528684022648860560e53") }, + { static_cast("7.73401481707858096115160151384770870208740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.49148120277696079938323237001895904541015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21022119284238444262099118632640694751857489911985882302778583637174384391251394588072250813144879442061174245455228341031066580984347413608919792407019123272438031870871777573323381609534176617167457318208979616222032754767955294734636001910121462806120247278470491361024670390806812831433737112379e221") }, + { static_cast("1.10978898863228390113400134708854238851927220821380615234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.32219377403916382718307431787252426147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.07947867569658321194458380597181231565685445537647073748124994390202466909582021155440785847623999110729024670271166064504654713592331835440877924887265726281088902886492996205474623955394661696347608605548560131153946508949187941058346142181719469523416895370937975489878692955467549849494731965625e-66") }, + { static_cast("6.01388538493091151515557157836155965924263000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.60022931107700908527451122420615092778461985290050506591796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992690524283092045041727666257712294170472055655983655789156306985603524706361035867762480294454684826579379760817381252880474747063748101481751389649370586878847928039436815138481244723824252557644191693486953238362877605577315573573222917218930477592061427550313462645068276263623663297863327092e-1") }, + { static_cast("2.15534801432384071073755649194936268031597137451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.05812814671632215990371150837745517492294311523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.55799445393602464144976083125961944702079982479924287374752573999342183140040918969698718557087349720031284500593972794455976395816766982409031253828819168807248785638632014800512514311905184872890032777260194266023572565329278809193542262172193713145497824126566400120337339261082686915643720103934e-1") }, + }}; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + T val = boost::multiprecision::pow(data[k][0], data[k][1]); + T e = ceil(fabs((val - data[k][2]) / data[k][2]) / std::numeric_limits::epsilon()); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp new file mode 100644 index 00000000..7f559fec --- /dev/null +++ b/test/test_sinh.cpp @@ -0,0 +1,137 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("0.33937643772780730649735035088117439284797964277099188367427256402032493952288848579083622213428182842627923924487560393743204013166230906610274533504451302298480596207257724471359936027198954417317381228420986152562253196896619001418292769103034561794393400788635610424360775622370491149170501475453034747306600304507650361914904138327962144190354572359428689767990353722392457982930942617983634601752"), + T("5.9746833446871871874685235810964396457491766537010251792063372398172074828151074989468673672535421045923659313715467371148678693662985453590831122722616951299822923837410906027605763677066945998696776562438704017846907508677186762421899376364636371743116519071733413775650991880222096045615827530741679305666041641331859757012015389431793705875600863391408448065773828563483223117178640044499399723744"), + T("383.32826140718915582837967448860824902040431804683461630967288341613741467095168380744762629948507973653220772087887989292128183196493611623766470283358542341824134250511562240487252437079958429586344329111208041197054162309164204144237855212391474938076935722386012246677813568519769393617755607372817372398764101401294149353978426057544810680225593132066193858006901125069663362991172745649465725272"), + T("180470.88334757918167934673473709881208559849920820465419382707969109187448281704429118605409224039018180517847684905660962429505828088398660499158213746722168139372781263849989865384042531846290813274318773753295025006473736660333640052386121946183935053629928496714560749082485275242374067168149435272169334475060524974384307351757201698786200303374802146857634893509516262245925287553380389076772488"), + T("6.2781497954189513207977998975338639259302378413658035459603622432839117790845430762753614618299222131433987986511235061633658516824123179660244932375967566163895461895213509376427850290780942550513918615228886566287592461085762554208269169000672149592375451149457664991726947185145469263932975075681560662428417041932848357447220175607720561540370653825438750168143857523868718856189519864027430308779e8"), + T("1.6137831147508521132232267071463247985636947830692243664921522457394294988129666666745854084767325882717254318322908201512400243137564101564235450151960593110176457803621675408660678871179456625850704076654060872094257085919134755925910859520026379969099492921728083639989029675808598278170215911879751320574053132699172028082102336989338403081942130794464992491330850160862146024982135931859868176809e13"), + T("3.065121004865094886953119667134247741359538615435533822684602797608029400610449009335078883525336625519599034934744634528257351124420564267197918749480389135525897886434344884370577475363556341414615470556433033106705280531443046669163916446454890662947185057748542735928453570069226294801221403438864013368364219717148075652123561545773399076318560221173734215703610924057158101731263882232550297741e18"), + T("4.3016893602106215864771434464025735547192956887049374680649926707919814241961779812200280749930256501997849507695395125441756421661413154730888574483309057229943886742437071251707738990393977398403536175642762242808350076543018009682725019125106175929448866428526984370017465117236484653179596869643117790492866002064306593104169410537341890174831622159415936125041593936992634719906123727028419057537e24"), + T("4.4608685929681360001024935791890661655506049487122331222491789265929503651540405036031990380918459104583255735620288691363060079360758406339887417913286769718423759522832754263499878135869223253358698774066131403822428286318351390574838877307934317251880890827523325360658275060099119902102399714992704146743744108968362755624325107486994088414126705458507082103811086372240878942983212662081104875997e31"), + T("3.4181315955816806472569357441100390029536003312981931954091744304974491527743599822230006760631204302243855667216955365986192324833652299336285826148922073950348547795494738267861098328516497599288314822606511466743212319770180141969147554023326883651348621187276823849839283609071336923316655316828855943689100621619083822127788284160652232283630351386798636794979234576432977468152969056493038423561e39"), + T("1.9352946282727908101414530212785249763640776919052480158881659190625166733449770912626442628329346416132299268886589920690636914906717492301836773331460154604580407945460359957380672599434023197425489039882987443681919056322268437224184910074985583829184831034293865504101338027818555871946080687710035062238789949143319550108801094190098446234092310048150477274502060870736716324117412815209633124145e48"), + T("8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696410406066640351065195237123718468440597743167713019447544827353458477844468727834630038609140168354634397475741840053079910210908251252223665806813131724262334693137656218010287981601097259534068903471812189212459231851835393208367369054618963204727992168556204168791513644815218096463093e57"), + T("2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636306931304501320694017061891400181233108050930610234076339285157392030024769366663118692571469493256243952018705693924919037621083041696227375589264811876761430035546270312014570431860268644276406457398485042029556392894799022733858611415899182421526634018060028309384e68"), + T("5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887824145000873531937856827299256489358571593850210528248202703396455363364446996158929674989959483681393263782486430231288067231095140919741928337466492665857902913114664767450432510739209971738097074002526312039248809036478310948111740897528204e79"), + T("9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667375441761513692598664419973302444660838882173718713387158013802112502169254860961105745895124415352002289485483908952674562396552790441656755711709645516914188860464353624992313010889765422981069429049436524222321550149e91"), + T("1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120462726353510147373798347292650122930289404816748193194907382572774906323766342758092979989633448828636445074016110331338699464788279882402189027828261039788079556739180915346692779065476431369e105"), + T("1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155600824601418042452138211549248837967344874095248283887929145923103153332810091693393888809653081365270947112297406471162377655179657693898463736926911943490619163092e119"), + T("7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004823102746037654096845266998518623332118892916505020627868405618942429551700207476696585635930562973459491424179233918050890206232214765e133"), + T("3.798536358006797624025033016530070695826982685154937173246022092345982280900791849578041210970037835270398289956157015064696375146357207576854029748413680946201805214954504282866534528711715039215051307866373994662368105368505465037259587291440042344663580680646178313958620437868058550744621854406871361710599007951099013146571208384054250556080476992977623024059268095813712424244902009427293468485e149"), + T("1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174653663068675983237955855108059376913611877439522917217336109804190399e166"), + T("3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531487094949084263218956635085585632719e183"), + T("7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201"), + T("1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221"), + T("1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241"), + T("1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262"), + T("6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283"), + T("2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306"), + T("9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329"), + T("2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354"), + T("4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379"), + T("5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405"), + T("5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432"), + T("4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460"), + T("2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489"), + T("8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518"), + T("2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549"), + T("5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580"), + T("8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612"), + T("1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646"), + T("9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679"), + T("5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714"), + T("2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750"), + T("9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786"), + T("2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824"), + T("4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862"), + T("7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901"), + T("7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941"), + T("5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982"), + T("3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024"), + T("1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067"), + T("4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110"), + }}; + + T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + const T x = eg + k; + T val = boost::multiprecision::sinh(x * x); + T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 1200); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp new file mode 100644 index 00000000..a0d3b792 --- /dev/null +++ b/test/test_tanh.cpp @@ -0,0 +1,137 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("0.32137338579537729992840434899278935725496267444911714908205287462634251052210833615032073534299473485492692600156322137421801432333125051088723502425037485776412801577568405892077585206768190530859883094571475323319480739773193974206966728764224286661945738178210577326172938196062277314761537881936346874075881338768208490193827960565412814349738654540520356903367084438822830345189856017860672463017"), + T("0.98628073997374759901559180515206275902189609982907214282364143439537215491113710345866034807991101303183938339561499559327886956280789743287824488269072297413440935381715378233031399015496124706604318545539544610760151756970229801074280545428642122005982857974921606264103186878499260552388713716032507770319550435738767597150644370033277228635793175246197730488375240713357827246166262087899961098648"), + T("0.99999659728082161113542951278514830809677661658635225532792520501703544628367875293677270218317428676793098034276042396396797568103263882451732810190507733063467333056356770774002596898762991629653041854653269824642873291146068535300466473399592751219449187768646625229500705182676930009096545254478199838990703077597971823456671241141900968900216742636822174010867343154474773040184900973368250708724"), + T("0.9999999999846483268200051609594321550129159997920576480976206867496512752486590660437091205989616108531910897733432934135954788151766561209164605337537937873588006552145390152387235783207736999759875845070169747521389728857476525437483543080651125798739562649414879487621858466223255239845627205850217328574865852922872737234283038190096982410137471391847466112651349436875974689271288261759782261321"), + T("0.9999999999999999987314527242099750648171958211319474558707792311593804963057878814487720997303512134007272111464990650500302215773762906820778949397525329109311974741708703536680512747226155618703318739024344621256722269608969415280035337052044425138281821760268269187377517243951584969175035549994883451471918693502477485385682884154959809285569290940740978684264145737164182111806308430952867505356"), + T("0.9999999999999999999999999980800953069847308586840237590563929855339557065536765765234844240789584487443451033349994294426525006157530320529970966048109743850154174651033567146346966529198814047607015842020039899630884318521543225160212193994911746894335846264878066530266737005606770102869237101848445559941638381625615207320468184414917265299980278164193202897754476112968080358662232635784904263624"), + T("0.9999999999999999999999999999999999999467800140220866754762922747687784133233134010432889959570821554455247528344437918197518545105332713456859236726383195243056599177018396579766073961540714510399202497404647103138524118065391185503678895059096790300665805648569647351935897874460587855127436472608470703384261586158923066272124216158518232588330799027603391275039552776308636189531809031683723259525"), + T("0.9999999999999999999999999999999999999999999999999729795912960133359928587562229512337339217831178574875626619226954752643039860388090399659478676726654102118545764943682017611574275691203710439707807193180604656837503862242700430179591666329131728631752773789406064618682879167351725013888294859467540832310795515139677375807407622028485242969471516812171475098378942187864794497220152019202351747432"), + T("0.9999999999999999999999999999999999999999999999999999999999999997487354938310440650220692519525261552411539996830587326435051159231522052011310872619940247463640019105467860778515384738650636054646551611609757125760437266415865214306396520500343113189907306851418957620080971645943305760132385139924583154317156560414548076370893360020924960120441059315311380109752919823616149973862196846266297710225"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999572050575304159358359221596743379014313563214857593401545331495211888415913558896516895286943572966865708195832339959764445194449615969154689769557903166971249521898883489362426386924297872088925852892350150865941427355319827260914834268754732102528105919811851193667193380541054520023003326858641189063542651960743457613"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998665016733514821204959171836698281165918083005790816030823236096080522860514417075411055633676502699904415882389102672678124683084429720879962355892225321369091298491658349178472270952759208443767848312111069127329160464884932271685986610697222434145553035947750809388321614695213754318979469071722942883"), + T("0.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999992372516628147584832950728021842198359205201519966391076994594773600474674435473005118571751514446148292787696117866094991476340344341061706866751156257825144909115117822189019766805825304055482958970512463798453229341693148012213183553546720540880444569824125592343803193018989122964"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999920180539244323143459416025663362517256166793900312667214543096238752838226369161775531456005541374878274529461511286842988937830155704737448202558382612829022464635400289328916240002670783433827234852858267621807568393874737879853500598862298495727481132883728328"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998470116425957155787153557938061034698436461173594805292722874130433614266475136267606498346730583487791266503943659174886554170377537630914770998114573340081594827150737005158607830579000912020838690230498119348251553312722575955142752845289"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999462931048083476382670449719737943481963930626760625326765703815392249622625483433043363664396638162612437367800102332819699131841317348173451308570776544874933173719394861336636728378134900422312720743996219523365098"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996546783689748726752364896615532860288057097437452774779386074906915819380531729493071959232887620213723607155628959529584572083388979892309086717786559916703004365603135284141639480887703759"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999593332381019647939423999969519583099837564321056588766269967853479478603122899456262904869063959564274215899007623362296377022418464303752396325625838280378647335"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999122842714667567128203355585346559126606029196080721845292399104475997315344844970601651757832506169948906646054332493537761143729664"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999965347272050374435790597917065458623422102880662825928396981295898014081371503733411536311258910851858"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999974926240515037403282500845454464621558236030794140169313830052413917"), + T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999667705192725716176070161727364499"), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + T("1."), + }}; + + T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + const T x = eg + k; + T val = boost::multiprecision::tanh(x * x); + T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 1200); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + From 8cf2a83683b0909e13a9bceb775f7875ed95042b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 Oct 2011 18:10:20 +0000 Subject: [PATCH 036/256] Add sin/cos/tan/asin functions. [SVN r75053] --- .../multiprecision/detail/default_ops.hpp | 2 + .../detail/functions/constants.hpp | 61 ++ .../multiprecision/detail/functions/pow.hpp | 45 +- .../multiprecision/detail/functions/trig.hpp | 524 ++++++++++++++++++ test/Jamfile.v2 | 49 ++ test/test_asin.cpp | 98 ++++ test/test_cos.cpp | 291 ++++++++++ test/test_sin.cpp | 297 ++++++++++ 8 files changed, 1345 insertions(+), 22 deletions(-) create mode 100644 include/boost/multiprecision/detail/functions/trig.hpp create mode 100644 test/test_asin.cpp create mode 100644 test/test_cos.cpp create mode 100644 test/test_sin.cpp diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 58bc9637..587c99e8 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -363,6 +363,7 @@ inline void eval_fmod(T& result, const T& a, const T& b) T temp; eval_fmod(temp, a, b); result = temp; + return; } T n; divide(result, a, b); @@ -443,6 +444,7 @@ typename enable_if_c::type eval_tanh(); // #include #include +#include } diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 60a3bfe8..e1e6a7b2 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -65,6 +65,54 @@ void calc_e(T& result, unsigned digits) divide(result, denom); } +template +void calc_pi(T& result, unsigned digits) +{ + typedef typename mpl::front::type ui_type; + typedef typename mpl::front::type real_type; + + T a; + a = ui_type(1); + T b; + T A(a); + T B; + B = real_type(0.5f); + T D; + D = real_type(0.25f); + + T lim; + lim = ui_type(1); + eval_ldexp(lim, lim, -(int)digits); + + unsigned k = 1; + + do + { + add(result, A, B); + eval_ldexp(result, result, -2); + eval_sqrt(b, B); + add(a, b); + eval_ldexp(a, a, -1); + multiply(A, a, a); + subtract(B, A, result); + eval_ldexp(B, B, 1); + subtract(result, A, B); + bool neg = get_sign(result) < 0; + if(neg) + result.negate(); + if(result.compare(lim) <= 0) + break; + if(neg) + result.negate(); + eval_ldexp(result, result, k - 1); + subtract(D, result); + ++k; + eval_ldexp(lim, lim, 1); + } + while(true); + + divide(result, B, D); +} template struct constant_initializer @@ -114,3 +162,16 @@ const T& get_constant_e() return result; } +template +const T& get_constant_pi() +{ + static T result; + static bool b = false; + if(!b) + calc_pi(result, std::numeric_limits >::digits); + + constant_initializer >::do_nothing(); + + return result; +} + diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 4b077f08..cc6b2489 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -36,6 +36,7 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) T denom; pow_imp(denom, t, -p, mpl::true_()); divide(result, temp, denom); + return; } switch(p) @@ -106,6 +107,11 @@ void hyp0F0(T& H0F0, const T& x) add(H0F0, x_pow_n_div_n_fact, ui_type(1)); + T lim; + eval_ldexp(lim, H0F0, 1 - tol); + if(get_sign(lim) < 0) + lim.negate(); + ui_type n; // Series expansion of hyperg_0f0(; ; x). @@ -113,17 +119,14 @@ void hyp0F0(T& H0F0, const T& x) { multiply(x_pow_n_div_n_fact, x); divide(x_pow_n_div_n_fact, n); - - if(n > 20) - { - eval_ldexp(t, H0F0, -tol); - if(t.compare(x_pow_n_div_n_fact) >= 0) - { - break; - } - } - add(H0F0, x_pow_n_div_n_fact); + bool neg = get_sign(x_pow_n_div_n_fact); + if(neg) + x_pow_n_div_n_fact.negate(); + if(lim.compare(x_pow_n_div_n_fact) > 0) + break; + if(neg) + x_pow_n_div_n_fact.negate(); } if(n >= 300) throw std::runtime_error("H0F0 failed to converge"); @@ -152,6 +155,10 @@ void hyp1F0(T& H1F0, const T& a, const T& x) multiply(H1F0, pochham_a, x_pow_n_div_n_fact); add(H1F0, si_type(1)); + T lim; + eval_ldexp(lim, H1F0, 1 - std::numeric_limits >::digits); + if(get_sign(lim) < 0) + lim.negate(); si_type n; T term, part; @@ -162,21 +169,13 @@ void hyp1F0(T& H1F0, const T& a, const T& x) multiply(x_pow_n_div_n_fact, x); divide(x_pow_n_div_n_fact, n); increment(ap); - multiply(pochham_a, ap); - multiply(term, pochham_a, x_pow_n_div_n_fact); - - if(n > 20) - { - exp_type e1, e2; - eval_frexp(part, H1F0, &e1); - eval_frexp(part, term, &e2); - if(e1 - e2 >= std::numeric_limits >::digits) - break; - } - add(H1F0, term); + if(get_sign(term) < 0) + term.negate(); + if(lim.compare(term) < 0) + break; } if(n >= 1000) throw std::runtime_error("H1F0 failed to converge"); @@ -190,6 +189,7 @@ void eval_exp(T& result, const T& x) T temp; eval_exp(temp, x); result = temp; + return; } typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename boost::multiprecision::detail::canonical::type si_type; @@ -336,6 +336,7 @@ void eval_log(T& result, const T& arg) T temp; eval_log(temp, arg); result = temp; + return; } typedef typename boost::multiprecision::detail::canonical::type si_type; diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp new file mode 100644 index 00000000..e770e4cd --- /dev/null +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -0,0 +1,524 @@ + +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +// +// This file has no include guards or namespaces - it's expanded inline inside default_ops.hpp +// + +template +void hyp0F1(T& result, const T& b, const T& x) +{ + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + // Compute the series representation of Hypergeometric0F1 taken from + // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric0F1/06/01/01/ + // There are no checks on input range or parameter boundaries. + + T x_pow_n_div_n_fact(x); + T pochham_b (b); + T bp (b); + + divide(result, x_pow_n_div_n_fact, pochham_b); + add(result, ui_type(1)); + + si_type n; + + T tol; + tol = ui_type(1); + eval_ldexp(tol, tol, 1 - std::numeric_limits >::digits); + multiply(tol, result); + if(get_sign(tol) < 0) + tol.negate(); + T term; + + // Series expansion of hyperg_0f1(; b; x). + for(n = 2; n < 300; ++n) + { + multiply(x_pow_n_div_n_fact, x); + divide(x_pow_n_div_n_fact, n); + increment(bp); + multiply(pochham_b, bp); + + divide(term, x_pow_n_div_n_fact, pochham_b); + add(result, term); + + bool neg_term = get_sign(term) < 0; + if(neg_term) + term.negate(); + if(term.compare(tol) <= 0) + break; + } + + if(n >= 300) + throw std::runtime_error("H0F1 Failed to Converge"); +} + + +template +void eval_sin(T& result, const T& x) +{ + if(&result == &x) + { + T temp; + eval_sin(temp, x); + result = temp; + return; + } + + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) + { + case FP_INFINITE: + case FP_NAN: + result = std::numeric_limits >::quiet_NaN().backend(); + return; + case FP_ZERO: + result = ui_type(0); + return; + default: ; + } + + // Local copy of the argument + T xx = x; + + // Analyze and prepare the phase of the argument. + // Make a local, positive copy of the argument, xx. + // The argument xx will be reduced to 0 <= xx <= pi/2. + bool b_negate_sin = false; + + if(get_sign(x) < 0) + { + xx.negate(); + b_negate_sin = !b_negate_sin; + } + + T n_pi, t; + // Remove even multiples of pi. + if(xx.compare(get_constant_pi()) > 0) + { + divide(n_pi, xx, get_constant_pi()); + eval_trunc(n_pi, n_pi); + t = ui_type(2); + eval_fmod(t, n_pi, t); + const bool b_n_pi_is_even = get_sign(t) == 0; + multiply(n_pi, get_constant_pi()); + subtract(xx, n_pi); + + // Adjust signs if the multiple of pi is not even. + if(!b_n_pi_is_even) + { + b_negate_sin = !b_negate_sin; + } + } + + // Reduce the argument to 0 <= xx <= pi/2. + eval_ldexp(t, get_constant_pi(), -1); + if(xx.compare(t) > 0) + { + subtract(xx, get_constant_pi(), xx); + } + + subtract(t, xx); + const bool b_zero = get_sign(xx) == 0; + const bool b_pi_half = get_sign(t) == 0; + + // Check if the reduced argument is very close to 0 or pi/2. + const bool b_near_zero = xx.compare(fp_type(1e-1)) < 0; + const bool b_near_pi_half = t.compare(fp_type(1e-1)) < 0;; + + if(b_zero) + { + result = ui_type(0); + } + else if(b_pi_half) + { + result = ui_type(1); + } + else if(b_near_zero) + { + multiply(t, xx, xx); + divide(t, si_type(-4)); + T t2; + t2 = fp_type(1.5); + hyp0F1(result, t2, t); + multiply(result, xx); + } + else if(b_near_pi_half) + { + multiply(t, t); + divide(t, si_type(-4)); + T t2; + t2 = fp_type(0.5); + hyp0F1(result, t2, t); + } + else + { + // Scale to a small argument for an efficient Taylor series, + // implemented as a hypergeometric function. Use a standard + // divide by three identity a certain number of times. + // Here we use division by 3^9 --> (19683 = 3^9). + + static const si_type n_scale = 9; + static const si_type n_three_pow_scale = static_cast(19683L); + + divide(xx, n_three_pow_scale); + + // Now with small arguments, we are ready for a series expansion. + multiply(t, xx, xx); + divide(t, si_type(-4)); + T t2; + t2 = fp_type(1.5); + hyp0F1(result, t2, t); + multiply(result, xx); + + // Convert back using multiple angle identity. + for(boost::int32_t k = static_cast(0); k < n_scale; k++) + { + // Rescale the cosine value using the multiple angle identity. + multiply(t2, result, ui_type(3)); + multiply(t, result, result); + multiply(t, result); + multiply(t, ui_type(4)); + subtract(result, t2, t); + } + } + + if(b_negate_sin) + result.negate(); +} + +template +void eval_cos(T& result, const T& x) +{ + if(&result == &x) + { + T temp; + eval_sin(temp, x); + result = temp; + return; + } + + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) + { + case FP_INFINITE: + case FP_NAN: + result = std::numeric_limits >::quiet_NaN().backend(); + return; + case FP_ZERO: + result = ui_type(1); + return; + default: ; + } + + // Local copy of the argument + T xx = x; + + // Analyze and prepare the phase of the argument. + // Make a local, positive copy of the argument, xx. + // The argument xx will be reduced to 0 <= xx <= pi/2. + bool b_negate_cos = false; + + if(get_sign(x) < 0) + { + xx.negate(); + b_negate_cos = !b_negate_cos; + } + + T n_pi, t; + // Remove even multiples of pi. + if(xx.compare(get_constant_pi()) > 0) + { + divide(t, xx, get_constant_pi()); + eval_trunc(n_pi, t); + multiply(t, n_pi, get_constant_pi()); + subtract(xx, t); + + // Adjust signs if the multiple of pi is not even. + t = ui_type(2); + eval_fmod(t, n_pi, t); + const bool b_n_pi_is_even = get_sign(t) == 0; + + if(!b_n_pi_is_even) + { + b_negate_cos = !b_negate_cos; + } + } + + // Reduce the argument to 0 <= xx <= pi/2. + eval_ldexp(t, get_constant_pi(), -1); + int com = xx.compare(t); + if(com > 0) + { + subtract(xx, get_constant_pi(), xx); + b_negate_cos = !b_negate_cos; + } + + const bool b_zero = get_sign(xx) == 0; + const bool b_pi_half = com == 0; + + // Check if the reduced argument is very close to 0 or pi/2. + const bool b_near_zero = xx.compare(fp_type(1e-4)) < 0; + subtract(t, xx); + const bool b_near_pi_half = t.compare(fp_type(1e-4)) < 0; + + if(b_zero) + { + result = si_type(1); + } + else if(b_pi_half) + { + result = si_type(0); + } + else if(b_near_zero) + { + multiply(t, xx, xx); + divide(t, si_type(-4)); + n_pi = fp_type(0.5f); + hyp0F1(result, n_pi, t); + } + else if(b_near_pi_half) + { + T t2(t); + multiply(t, t); + divide(t, si_type(-4)); + n_pi = fp_type(1.5f); + hyp0F1(result, n_pi, t); + multiply(result, t2); + } + else + { + // Scale to a small argument for an efficient Taylor series, + // implemented as a hypergeometric function. Use a standard + // divide by three identity a certain number of times. + // Here we use division by 3^9 --> (19683 = 3^9). + + static const ui_type n_scale = 9; + static const ui_type n_three_pow_scale = 19683; + divide(xx, n_three_pow_scale); + + multiply(t, xx, xx); + divide(t, si_type(-4)); + n_pi = fp_type(0.5f); + + // Now with small arguments, we are ready for a series expansion. + hyp0F1(result, n_pi, t); + + // Convert back using multiple angle identity. + for(ui_type k = 0; k < n_scale; k++) + { + multiply(t, result, result); + multiply(t, result); + multiply(t, ui_type(4)); + multiply(result, si_type(-3)); + add(result, t); + } + } + if(b_negate_cos) + result.negate(); +} + +template +void eval_tan(T& result, const T& x) +{ + T t; + eval_sin(result, x); + eval_cos(t, x); + divide(result, t); +} + +template +void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) +{ + // Compute the series representation of hyperg_2f1 taken from + // Abramowitz and Stegun 15.1.1. + // There are no checks on input range or parameter boundaries. + + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + T x_pow_n_div_n_fact(x); + T pochham_a (a); + T pochham_b (b); + T pochham_c (c); + T ap (a); + T bp (b); + T cp (c); + + multiply(result, pochham_a, pochham_b); + divide(result, pochham_c); + multiply(result, x_pow_n_div_n_fact); + add(result, ui_type(1)); + + T lim; + eval_ldexp(lim, result, 1 - std::numeric_limits >::digits); + + if(get_sign(lim) < 0) + lim.negate(); + + ui_type n; + T term; + + // Series expansion of hyperg_2f1(a, b; c; x). + for(n = 2; n < 300; ++n) + { + multiply(x_pow_n_div_n_fact, x); + divide(x_pow_n_div_n_fact, n); + + increment(ap); + multiply(pochham_a, ap); + increment(bp); + multiply(pochham_b, bp); + increment(cp); + multiply(pochham_c, cp); + + multiply(term, pochham_a, pochham_b); + divide(term, pochham_c); + multiply(term, x_pow_n_div_n_fact); + add(result, term); + + if(get_sign(term) < 0) + term.negate(); + if(lim.compare(term) >= 0) + break; + } + if(n > 300) + throw std::runtime_error("H2F1 failed to converge."); +} + +template +void eval_asin(T& result, const T& x) +{ + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + if(&result == &x) + { + T t(x); + eval_asin(result, t); + return; + } + + switch(eval_fpclassify(x)) + { + case FP_NAN: + case FP_INFINITE: + result = std::numeric_limits >::quiet_NaN().backend(); + return; + case FP_ZERO: + result = ui_type(0); + return; + default: ; + } + + const bool b_neg = get_sign(x) < 0; + + T xx(x); + if(b_neg) + xx.negate(); + + int c = xx.compare(ui_type(1)); + if(c > 0) + { + result = std::numeric_limits >::quiet_NaN().backend(); + return; + } + else if(c == 0) + { + result = get_constant_pi(); + eval_ldexp(result, result, -1); + if(b_neg) + result.negate(); + return; + } + + if(xx.compare(fp_type(1e-4)) < 0) + { + // http://functions.wolfram.com/ElementaryFunctions/ArcSin/26/01/01/ + multiply(xx, xx); + T t1, t2; + t1 = fp_type(0.5f); + t2 = fp_type(1.5f); + hyp2F1(result, t1, t1, t2, xx); + multiply(result, x); + if(b_neg) + result.negate(); + return; + } + else if(xx.compare(fp_type(1 - 1e-4f)) > 0) + { + T dx1; + T t1, t2; + subtract(dx1, ui_type(1), xx); + t1 = fp_type(0.5f); + t2 = fp_type(1.5f); + eval_ldexp(dx1, dx1, -1); + hyp2F1(result, t1, t1, t2, dx1); + eval_ldexp(dx1, dx1, 2); + eval_sqrt(t1, dx1); + multiply(result, t1); + eval_ldexp(t1, get_constant_pi(), -1); + result.negate(); + add(result, t1); + if(b_neg) + result.negate(); + return; + } + + // Get initial estimate using standard math function asin. + double dd; + convert_to(&dd, xx); + + result = fp_type(std::asin(dd)); + + // Newton-Raphson iteration + while(true) + { + T s, c; + eval_sin(s, result); + eval_cos(c, result); + subtract(s, xx); + divide(s, c); + subtract(result, s); + + T lim; + eval_ldexp(lim, result, 1 - std::numeric_limits >::digits); + if(get_sign(s) < 0) + s.negate(); + if(get_sign(lim) < 0) + lim.negate(); + if(lim.compare(s) >= 0) + break; + } + if(b_neg) + result.negate(); +} + + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3c9242ba..dbcfbe61 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -282,3 +282,52 @@ run test_tanh.cpp mpfr TEST_MPFR_50 [ check-target-builds ../config//has_mpfr : : no ] : test_tanh_mpfr50 ; + +run test_sin.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_sin_mpf50 ; + +run test_sin.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_sin_mpfr_50 ; + +run test_cos.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_cos_mpf50 ; + +run test_cos.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_cos_mpfr_50 ; + +run test_asin.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_asin_mpf50 ; + +run test_asin.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_asin_mpfr_50 ; + diff --git a/test/test_asin.cpp b/test/test_asin.cpp new file mode 100644 index 00000000..6f1c8768 --- /dev/null +++ b/test/test_asin.cpp @@ -0,0 +1,98 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + // + // Test with some exact binary values as input - this tests our code + // rather than the test data: + // + static const boost::array, 6> exact_data = + {{ + {{ 0.5, "0.523598775598298873077107230546583814032861566562517636829157432051302734381034833104672470890352844663691347752213717775" }}, + {{ 0.25, "0.252680255142078653485657436993710972252193733096838193633923778740575060481021222411748742228014601605092602909414066566" }}, + {{0.75, "0.848062078981481008052944338998418080073366213263112642860718163570200821228474234349189801731957230300995227265307531834" }}, + {{std::ldexp(1.0, -20), "9.53674316406394560289664793089102218648031077292419572854816420395098616062014311172490017625353237219958438022056661501e-7" }}, + {{ 1 - std::ldexp(1.0, -20), "1.56941525875313420204921285316218397515809899320201864334535204504240776023375739189119474528488143494473216475057072728" }}, + {{ 1, "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064" }}, + }}; + unsigned max_err = 0; + for(unsigned k = 0; k < exact_data.size(); k++) + { + T val = asin(exact_data[k][0]); + T e = (exact_data[k][1] == 0) ? T(ceil(fabs((val - exact_data[k][1]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + val = asin(-exact_data[k][0]); + e = T(ceil(fabs((val + exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 20); + BOOST_TEST(asin(T(0)) == 0); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_cos.cpp b/test/test_cos.cpp new file mode 100644 index 00000000..419f18b0 --- /dev/null +++ b/test/test_cos.cpp @@ -0,0 +1,291 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("-0.50162154214905535006507934761566421365808962336874567677926739022768858180703782104157334491773507690211622144412751863172893119122904872120863946237533655183100979972269651012785895305465091942482860884709266947899655662267052604131701946158941092922207257375120965677001058006645609151579188243577188192831765423148813895489546306047297711022539509473462404019089733447430114238267379980532396311664"), + T("0.60313571428133694309325113655636540756247392441681227046917143280974317371916820972719995253248954425492897594051861535050840463205496306256237562726891289696301688567930026444972968333329934552460084325207412884738539384203738886072440013640125030433738691853586812704775040754220545555524237855361445575868855139945713834823411715711428213828850093318644478373792898000948569667301322178250159228606"), + T("0.96902885660223213449832417965462288346382027027907788639786102888188268413128284808786908788351970794814191573322198094839000459295090920127430762740525901384778314480815531039485728089512489227948630012091333107823627672161756650613535363845597750943844039360212709462602480040358932164638277463645635101178868520058961493135889052671922314786442189473233561252419424865659925386520422456933994031412"), + T("0.14782491492260520954264860310453392894688582499520847868449990765772811594316839506757584243129175527745236732059643506743012867347391315093605558463510078020864683057368198129858823908327097108583620570511151521896111105026538667326749527786043478669088587777236123716686756088055458828079103458534402182273835161066708126746360741813126817035007484464329141515901214558732724557437706092450180726378"), + T("-0.85447015139344948471094821054366626768019606763269341666053644333072070840260166961763856973284893831954425042860099172316086950440334996806598196522184690224018944138578542327045770832471332376269716674841615467614625539483750018876502303839670098606230317226296309325404589665701938190004997832683948796843166639576625281030300467522347494569768687089899397360725496800596493559470637547748735594697"), + T("-0.81000689036588888102398287378618104836450574863713892332248232301021899106208419137911694670935600210389307190348154033680700645928539580731142634010602466147128679656911798991740456705453963764056901956423046807435258488930954638670002070774439646670450724500520094586192645160847046520311570082832431061691996839606591067443335185302732221888316818825870721496315105401624866741940813589284275695918"), + T("0.2267455177003321384894005667464998092097833850092894238480831378466683827110057043871346060005709235569800215748516185659827893723700508589640891976972716570403665692613477548038629552153079218542242417184271182264022470709072429310981387965885388758575814101891100826647083444934684812292662215448102626341015149572372707444725994248777658076421636637760492982947444020394182326376291158696727384852"), + T("0.98572607094681400469823142383450564975177916157871840422129452719452525174019803417354200370408054482797693621385765351670173144053171524005535725427317409189868483686977845578192854125777358818593005952568285102554187813023457756929121023181880198348203083841375515867843145321766318476866476607321938993078073105088587752971311300418067382395754489252201424628686354714684325074264340586434068083735"), + T("0.53715481965030691887397316962489853948341836449029599646266321884877186476498260019355874856809552188645630606126976563119123530724283602396484950653123503399938294688332329634386257314146589125825636097592371320563696604271190825947497633567945681092924620382686009619110102110209885034787176755762448527267043281608584015012767667899712762371285806841811102653584612955459666723163160014123341963671"), + T("-0.56945144858011886915780505911780725010620323062276283805115420871306570794972703588425077520601752861293077323301792800610549113139402646104081762175534061087117946244152125287975953108704696268847815261917377065241801643783329354778399526877290332215236634903080639679860355847620563822363712579548641527844739938293967364597110377469773489014211951212857101374318452911401420528677259991331090266005"), + T("-0.97845810511310366097345864112668906661089075307983663561178996977421991305045684012227818895513901547325249161241097295038349597373820690088476031256136981855438584632935895625291791741570973153071536443895825053372019222244541345181800559983327493395843212471107951435623879503589116197386166395270332969985628390518342285544128149350904869144760786557644083102040293619728857795557725975446387638082"), + T("-0.18881649076882036818094718893825891946691295900905829577570255489597056088743777799436529545269699011594065157007321752198038423373390670103253610646983030773571922979273600163598344653044825786274322207994738104766932351285365246017952816761886637102290439956065197679903357501267350062489863581450400525901254917975058272557102311416424438039867176899411547343130655797011597302924818642795986910776"), + T("0.83213248256248718391648282211236200464150938178343837417522635579213705328552770623957486792338755433958256100224720251839082676782210674078979903328623897712870422600430978907177584667709552233768475968506874004560085480509103334782228549116928850495590090914133655583767781543886956699592465303315591578411513564172526903206600594554996369316967222569167592338646796759203865876228192676690576393957"), + T("0.83368761966098380317914918853127190012005517198095141616372457983351189700156411681039093358761555771758536229588242982647239744187242300801829995961871412772468923394414109025642424234703592018655517051393077978860068845984020869413624371103031896740117407710299198562267502869147100200858539656754317575041431701939759759225389946719106478332366708137354276007919533255169664638235639383569564110075"), + T("-0.18605618137227649584671124815631620875769157093190685600569736108086402885199167407702422320100843062616644714444408614621390574242763877642390939806307957026167805604628333909629405976831956784535026886701013223479257442178936513209253370459988519785036119662696969209506800793520534365946487576733594348627957021254017447520897947123358509837940617442852539597167693389591380189862319487892792923153"), + T("-0.97787410706912947200700947809086987929552083940545236541182287303790608208610023257624198390105132776123115664110406549669787968717953162987933260638310530750565076435745587024443942712810356372635589174338356282870564205603334997652974637518927664227105047973535688395040777968082125500061259190313820373870936866720823176265958448162090987423326403872038897090958331050185525989399368410147697601184"), + T("-0.57175918163121264025616107589630751551161205724757288681494194505248342228571881008866075970817690438186545379919710148119548771419260784258379302863349865022779589406640338106461807885184578720013258862884778613907350162349826641089246855371608494365729193629734711852175384638728815913727055118781471960575965215193534386589450370243853256890375165575818694142504618584610839931680003465519416417686"), + T("0.53478241597498682890636923119124507573138434225226478301997338705931821657049944750562391125304256759887391004338167587322019260365925435302391176930331161896818003746464685277508807805130884660314731429722219318699505836398912422599554793162364836595300619860913573673921432325981205409702897337053197706014049687225094538593517626884763534008626048851538197945922313231461994435494917556595912129444"), + T("0.98619528108436834444622772244233500550001863518169392038562682097011946713614830549103565779570404766638555367268020992254689671390965312890416679706192473068433717014095521991774567755994345709131209844512998942709582638991869821050636439257597063856249038092119512871640381123843890013812838185293393263756058350072768448458950380360337889770923256206901689904823829217396801268618019194906772703227"), + T("0.22948154144509182369415746800698328364988547396475691620681392787566104183462052622980774444304368277802870979261579895452333488316470495027443871923297117956210113575448119970237881958246782891025814249305970662163236166516394039705137544157900789683194435211763787511069822409683486532927557658412323180776903688623277362060713475574739265599518489263464320833102602215450190502358534383949241852484"), + T("-0.80835578582046670310464731711696478601773118159925609840597870029856375850957218864062941877059300809268098041286606529894870899049159003652074961379621476411176224648451902760457011220845176506086174749134555188467902316469475288975403773973857636373892326760376585744094430003550369691223550482756797212146056901318410686997010241891041855811922027651329719928389111111167862044112446757189042088046"), + T("-0.85592663170679958406515397649643131309994249316454429005131578645085757570761552251729365670632975735279522675018975575836010210249068470527194075548251441076976420496548792075626757772699437483366302008026562909787676760497709271997930485538120627136230760141137536077186130465523928404376378372203755818590534658221264961808618483334189725855704258977192100851554017405085224133570406300901634686193"), + T("0.14504509334766993343679732543237665601748015028110051986903855469561805431836897592755787294803720321294196670692675860425817019156006795472544060301573514970130737237352276407965078322598196015088783620318485742726789260216376389721616761481364286097504141935673467904417287244647363440435023754573347620436961058676078531225670052103877411944831266665091545142351559495386200504307614132116833066489"), + T("0.96833108057454018135440242001894400433450486884893467698495154667147695605198346971512860434896301677316979407715828973045999189796179033252360390253384834782428911228350312995059296512013202981214049690155973624217982618572186690629393688668380855531415343035476364485845562203330354168788849023043609092864372997506131587372974589034738683570955059234741409975711088655065542622757333229038929539614"), + T("0.60537478588662083093550030671881062835301187704838619957445140277346831579708290170559342372438997696786583564116411747796066131598667722839502247472418892060636953054544383896701697716904288008881811071365393348940494848858720140528491631498078923089892805069340832767510592701952499233084373444894649962175905154151059310656485499518493307751028032192138975110743944975104530590939205299365402172399"), + T("-0.49918857050765127165246443100830980202323621859663295606411941969457362189652587284758726475585312743864487499288977743573076640209331558808543037798473406138898808010287039327632227491127621026484760216100025745074711422052006517238053729631745694408780163847537773119573702459176085803816861008338932982744241500509585746534632592189239382341678009278118030810458222678068124752194184440160812863357"), + T("-0.99222700442041793244341637163672398376812477454144578739458582830385307501573374493329418110400264981611911650266336290704933803675752414608868505761080497715998786605323101072631863530928986865345605473152114701760347977346551445152252230086602267733482237318264916817026594817822201149718727077242483980112025554281082958570816251191650760457174817529165817706742958860474153596353298087887496342571"), + T("-0.26974974384283529407135442904911380728022891803412415907499156005666362362451160206340942887714356745930732393405178421002248875485798257350416225295845333813028470892948983232570745331205136828532696050523659085855991735781739399449780199864580413509362957674310213115088541667662139444692787904342579506007770224294439456180398644394712078670122120840185549712701180444406705582313291159418160268707"), + T("0.78318117881507218281256857540210491140619166393457160009274918850278377150347503811659906527658912201560000425062426213174077300808809107842767634667207644130246300983762258813379724135069575858579484972987736881337517572218810617863132592764984653001013079710817700332509430207238192747837232227382559069149116081099363790759716765670238049577887842168907894878101742345788299501918210802461045488336"), + T("0.87668546801298894316611272503029374001219866661666136243743380759468378098691643969637456927472038354627520673349367283367324121916949272869177620477269451717775313582362761369952753768494804335788010017359300886827719062432162897060693014847129089532263482838487347672588768501033685070780610322543843882757687187812123549700825256897742477675410408774989851342602781239821815645715958753412070397601"), + T("-0.10378317514630283035697337871092369012118223784464643078377333318832860627512487321975641507120202567300966096393096627338947655380820003149059343389474916418959764384086933825280338584080543377015355584259569741193189206873606119903440824298765910897401393832760642020478309582400187458069600297503471338694965049437285901431495005334289622152511502991672903524064211804721113695218039893263678813343"), + T("-0.95711349446199095576893296201081918391006544549413893765144324906139169225887225012143883285387366088163020556116889558963741768284740305902934334806946850023570597825714830361465408561420292855043502515001498149850537134194706047165529988277670109220102766502269805527095332398862295461748072266537481745404509807754999697692445286508080110297609601749711507506133141464812431049826946597146636354781"), + T("-0.63794350009531545667254180005058967014091074426028186874676752373058269762260454593384980188290943960936825811511438820242903324463297183316287071729253599410382790069375166807977207973311824805416905280934478728402362367738590911068930970233001798070025927580146476114118351752104439608955539133724726044901319895130615046919558595196176958507074369945336446902427277357686167969430099800901266255694"), + T("0.46273146552227640776400067795797886210480882393837882658186448207173350896006259857463834781474074845803406523589452301046262359240960602310918185550315272791571940053255136983368027733514059954139407173745111843912155780937211468453669133666656749905679399238836226218178194842769436017337481617143672364099652685726181145621234602247890953107767351286824995678514316143524362442186848118247298539021"), + T("0.99654284430835394575771581445263740011621544801262270069888725717770662527892701805906692059703566000057199727570596201090018843521079740099451243652812902235907552357808897819533630795824169795169152613897271256945242079733003533677278244438976511094582819587451104089603294510862191561695442770960262566234171127458107369852758518111412741106821369313642094603607640773678048962065297712686264798258"), + T("0.30955146113330921967430965120100702675233631993391895373629969028737150573338643391886330012902676396897993034209801929950606565714260278367377830209837135331181218082619455762666764549875449196418398841614865341526715151403235213502358851080285994526097503071014059233244883279123955235243977740815084262049389088713424955579803462877942093968546097956762333725432236406001838616369819684003862992419"), + T("-0.7566521966358354309951093880175904595961117293429649925035725302909818579817906207321292211570710827880191877879999303605651415336764708947953554392170782512559588243742231488130076898716985771987302881464753061056309847520640566277714873772103739495076986709669815846805764241489433274054604832770486905571732368583068561729787356544754173018704553303862640097086917153589464723040964231442327725739"), + T("-0.89592822979483709059243413613768383910182989046075476634617095657797990928508436396136302337758704430356065256820357837873075721305029630953922861317062956315025129501726888033240428998214338302878323599895725515251065134297830575602290889130735518399074878206099064423045326729243958866358871543482110235173182896730253794606214425305515937065566938780643012662976806400899752708380354702107584200173"), + T("0.06234178205498326768449331827227332778878332201276384069140804289468809818009465781317127499109411839409445261411097713389998386056235706454635141010244151932394411847811136494628546693592312682393427375069804704908617054121292472216996067137584186214292728977551151133236612796923969229055426308128461924845361007211592745940106076843829115607148914933190080636946774340167862449354032670081682503677"), + T("0.94424074758905426693013670501578752072879728684274664557376317555913249162898450233304331602359948789616904949986891686512171337619053651010052765459159420933905715970952322156715741540214635674374384487833082591105216552403945633258288248064096802773248182125224091036161363816821787326423255076418870584794499423986465255713593740475609695103672895656428014974438779094737722426473065402390479127002"), + T("0.66940900234972085772698395256659605212272643739109209667125733824405981903658617201709239065102665405063166964631091092744127095503906134074823656023393611554152837997449326176648259796105677009519668003831584281955537599169598905666609420488437109555473016150415050976685545370751598833602947303804286613228920011048601435648630323226945291269501824614939897919341523226599107705055297349402859236896"), + T("-0.42547414721971330565409790138583216442479880361609527886964392881677619848933007107332651801952059053556471752375648666462158176314752197637071456256008899487321608724189395189615041157311878404609283475043414911337534183547148088572894035977423720231858134885165786681305346317203268564898788667422942217715710500639870156821380173286044798492696421543055302879445405671926952506373313300693015863574"), + T("-0.99913533725625827895885420059533174260228060155728399323156205571706305217929202105237251086305720615246638608665744238167422868148494071388447512869369652666016804258416975268792629805702694345570129997561583877702300615841988105832696053353859384414627875276769517809636231032799628078938353066535288163274118038591394188369361821148103018841138634739652369087495081203873309267574158616396567307492"), + T("-0.34881786319235757353608331390774426958801870286240250260169998305471883501204837208323576855595361379043170036069553791773607809536655382734659088580969476301635137094982435633208997311383294130223650445792658125459022909462690696664526317408366804098986643756477511847342019476173582109336405217301916061499808856137725615883817070458120962726145756438119220448588723418633370427189844667611481792962"), + T("0.72881471652779599579578058763983370510799582516797066846624634893882199724038302182668125377701493863656762620352413750563017197413808000383697483717264271873855767687937510341726345841626061553517042595268476874385774311053499675017743616990623307920507987935959383718695693618200297497313502037997098069759583079411517535532519668785928165917878363955532156662323627880875149433884315003009524969368"), + T("0.91362164005394510404798528088309623890018900746219043351480570272112701909791508825990618473644291633475042035900507995909672613140877257670920948316716218048879267235797825939302972470200910320624112626429381475376664864431458828213242682906890618620939480878412280722400697167591741919704297000951832259295785803906002953167528593565353099927772534139636590356175767293503013121188135804719329377757"), + T("-0.020792579731020884570917489924829815990901072176716833800451630402659488568602453092320962870467062725056963726749091346237812411927788553678105022434525207164566719010754898510917339890499700846699846272929873718752144808990322962955858259663820680120429324521028803111432757858749225053719910422285494416920886558156485737807758736556364535329791051459890234311397811046030022550124420890079918499806"), + T("-0.92973510112499140703211303301543817758564572287706026278579630272201180630168028836976329577763576080557925500836630218023453183589136530080853328463253256043937995662714702310301104590063206629677773404210676707719408386980510414385968423854465563338165624928483173590672543381355453313463456551085355191753472704341195875901211063845473814165083882940066653120643707041759352014177322989513249712945"), + T("-0.69971687855481202313282264003416633874007708241691504684133936897916129633508695580324089944109853489892619325255884869329787559760565315713290477914000125094981765362135662354044758619666857636031878131847413243331348066629478769360995267702914881219005969303814156065237352978323936029385435868138673545623501852266665885946448589623038753247551331280396083996799682701685286072955536720942219340784"), + T("0.38748104563009787102820133164016447769400048035334289735708379460553950678502357006276775381947203793501041447662719507628277154284594473586657342957139018292691624326995856690727098436205171520067762188653923456293311998678147550312423215288396830773761466919125058572139335774599032387616617354102353665454197825146894321951594670500888745959955736169293525665535786830770045479189693672271780123876"), + T("1."), + T("0.38748104563009787102820133164016447769400048035334289735708379460553950678502357006276775381947203793501041447662719507628277154284594473586657342957139018292691624326995856690727098436205171520067762188653923456293311998678147550312423215288396830773761466919125058572139335774599032387616617354102353665454197825146894321951594670500888745959955736169293525665535786830770045479189693672271780123876"), + T("-0.69971687855481202313282264003416633874007708241691504684133936897916129633508695580324089944109853489892619325255884869329787559760565315713290477914000125094981765362135662354044758619666857636031878131847413243331348066629478769360995267702914881219005969303814156065237352978323936029385435868138673545623501852266665885946448589623038753247551331280396083996799682701685286072955536720942219340784"), + T("-0.92973510112499140703211303301543817758564572287706026278579630272201180630168028836976329577763576080557925500836630218023453183589136530080853328463253256043937995662714702310301104590063206629677773404210676707719408386980510414385968423854465563338165624928483173590672543381355453313463456551085355191753472704341195875901211063845473814165083882940066653120643707041759352014177322989513249712945"), + T("-0.020792579731020884570917489924829815990901072176716833800451630402659488568602453092320962870467062725056963726749091346237812411927788553678105022434525207164566719010754898510917339890499700846699846272929873718752144808990322962955858259663820680120429324521028803111432757858749225053719910422285494416920886558156485737807758736556364535329791051459890234311397811046030022550124420890079918499806"), + T("0.91362164005394510404798528088309623890018900746219043351480570272112701909791508825990618473644291633475042035900507995909672613140877257670920948316716218048879267235797825939302972470200910320624112626429381475376664864431458828213242682906890618620939480878412280722400697167591741919704297000951832259295785803906002953167528593565353099927772534139636590356175767293503013121188135804719329377757"), + T("0.72881471652779599579578058763983370510799582516797066846624634893882199724038302182668125377701493863656762620352413750563017197413808000383697483717264271873855767687937510341726345841626061553517042595268476874385774311053499675017743616990623307920507987935959383718695693618200297497313502037997098069759583079411517535532519668785928165917878363955532156662323627880875149433884315003009524969368"), + T("-0.34881786319235757353608331390774426958801870286240250260169998305471883501204837208323576855595361379043170036069553791773607809536655382734659088580969476301635137094982435633208997311383294130223650445792658125459022909462690696664526317408366804098986643756477511847342019476173582109336405217301916061499808856137725615883817070458120962726145756438119220448588723418633370427189844667611481792962"), + T("-0.99913533725625827895885420059533174260228060155728399323156205571706305217929202105237251086305720615246638608665744238167422868148494071388447512869369652666016804258416975268792629805702694345570129997561583877702300615841988105832696053353859384414627875276769517809636231032799628078938353066535288163274118038591394188369361821148103018841138634739652369087495081203873309267574158616396567307492"), + T("-0.42547414721971330565409790138583216442479880361609527886964392881677619848933007107332651801952059053556471752375648666462158176314752197637071456256008899487321608724189395189615041157311878404609283475043414911337534183547148088572894035977423720231858134885165786681305346317203268564898788667422942217715710500639870156821380173286044798492696421543055302879445405671926952506373313300693015863574"), + T("0.66940900234972085772698395256659605212272643739109209667125733824405981903658617201709239065102665405063166964631091092744127095503906134074823656023393611554152837997449326176648259796105677009519668003831584281955537599169598905666609420488437109555473016150415050976685545370751598833602947303804286613228920011048601435648630323226945291269501824614939897919341523226599107705055297349402859236896"), + T("0.94424074758905426693013670501578752072879728684274664557376317555913249162898450233304331602359948789616904949986891686512171337619053651010052765459159420933905715970952322156715741540214635674374384487833082591105216552403945633258288248064096802773248182125224091036161363816821787326423255076418870584794499423986465255713593740475609695103672895656428014974438779094737722426473065402390479127002"), + T("0.06234178205498326768449331827227332778878332201276384069140804289468809818009465781317127499109411839409445261411097713389998386056235706454635141010244151932394411847811136494628546693592312682393427375069804704908617054121292472216996067137584186214292728977551151133236612796923969229055426308128461924845361007211592745940106076843829115607148914933190080636946774340167862449354032670081682503677"), + T("-0.89592822979483709059243413613768383910182989046075476634617095657797990928508436396136302337758704430356065256820357837873075721305029630953922861317062956315025129501726888033240428998214338302878323599895725515251065134297830575602290889130735518399074878206099064423045326729243958866358871543482110235173182896730253794606214425305515937065566938780643012662976806400899752708380354702107584200173"), + T("-0.7566521966358354309951093880175904595961117293429649925035725302909818579817906207321292211570710827880191877879999303605651415336764708947953554392170782512559588243742231488130076898716985771987302881464753061056309847520640566277714873772103739495076986709669815846805764241489433274054604832770486905571732368583068561729787356544754173018704553303862640097086917153589464723040964231442327725739"), + T("0.30955146113330921967430965120100702675233631993391895373629969028737150573338643391886330012902676396897993034209801929950606565714260278367377830209837135331181218082619455762666764549875449196418398841614865341526715151403235213502358851080285994526097503071014059233244883279123955235243977740815084262049389088713424955579803462877942093968546097956762333725432236406001838616369819684003862992419"), + T("0.99654284430835394575771581445263740011621544801262270069888725717770662527892701805906692059703566000057199727570596201090018843521079740099451243652812902235907552357808897819533630795824169795169152613897271256945242079733003533677278244438976511094582819587451104089603294510862191561695442770960262566234171127458107369852758518111412741106821369313642094603607640773678048962065297712686264798258"), + T("0.46273146552227640776400067795797886210480882393837882658186448207173350896006259857463834781474074845803406523589452301046262359240960602310918185550315272791571940053255136983368027733514059954139407173745111843912155780937211468453669133666656749905679399238836226218178194842769436017337481617143672364099652685726181145621234602247890953107767351286824995678514316143524362442186848118247298539021"), + T("-0.63794350009531545667254180005058967014091074426028186874676752373058269762260454593384980188290943960936825811511438820242903324463297183316287071729253599410382790069375166807977207973311824805416905280934478728402362367738590911068930970233001798070025927580146476114118351752104439608955539133724726044901319895130615046919558595196176958507074369945336446902427277357686167969430099800901266255694"), + T("-0.95711349446199095576893296201081918391006544549413893765144324906139169225887225012143883285387366088163020556116889558963741768284740305902934334806946850023570597825714830361465408561420292855043502515001498149850537134194706047165529988277670109220102766502269805527095332398862295461748072266537481745404509807754999697692445286508080110297609601749711507506133141464812431049826946597146636354781"), + T("-0.10378317514630283035697337871092369012118223784464643078377333318832860627512487321975641507120202567300966096393096627338947655380820003149059343389474916418959764384086933825280338584080543377015355584259569741193189206873606119903440824298765910897401393832760642020478309582400187458069600297503471338694965049437285901431495005334289622152511502991672903524064211804721113695218039893263678813343"), + T("0.87668546801298894316611272503029374001219866661666136243743380759468378098691643969637456927472038354627520673349367283367324121916949272869177620477269451717775313582362761369952753768494804335788010017359300886827719062432162897060693014847129089532263482838487347672588768501033685070780610322543843882757687187812123549700825256897742477675410408774989851342602781239821815645715958753412070397601"), + T("0.78318117881507218281256857540210491140619166393457160009274918850278377150347503811659906527658912201560000425062426213174077300808809107842767634667207644130246300983762258813379724135069575858579484972987736881337517572218810617863132592764984653001013079710817700332509430207238192747837232227382559069149116081099363790759716765670238049577887842168907894878101742345788299501918210802461045488336"), + T("-0.26974974384283529407135442904911380728022891803412415907499156005666362362451160206340942887714356745930732393405178421002248875485798257350416225295845333813028470892948983232570745331205136828532696050523659085855991735781739399449780199864580413509362957674310213115088541667662139444692787904342579506007770224294439456180398644394712078670122120840185549712701180444406705582313291159418160268707"), + T("-0.99222700442041793244341637163672398376812477454144578739458582830385307501573374493329418110400264981611911650266336290704933803675752414608868505761080497715998786605323101072631863530928986865345605473152114701760347977346551445152252230086602267733482237318264916817026594817822201149718727077242483980112025554281082958570816251191650760457174817529165817706742958860474153596353298087887496342571"), + T("-0.49918857050765127165246443100830980202323621859663295606411941969457362189652587284758726475585312743864487499288977743573076640209331558808543037798473406138898808010287039327632227491127621026484760216100025745074711422052006517238053729631745694408780163847537773119573702459176085803816861008338932982744241500509585746534632592189239382341678009278118030810458222678068124752194184440160812863357"), + T("0.60537478588662083093550030671881062835301187704838619957445140277346831579708290170559342372438997696786583564116411747796066131598667722839502247472418892060636953054544383896701697716904288008881811071365393348940494848858720140528491631498078923089892805069340832767510592701952499233084373444894649962175905154151059310656485499518493307751028032192138975110743944975104530590939205299365402172399"), + T("0.96833108057454018135440242001894400433450486884893467698495154667147695605198346971512860434896301677316979407715828973045999189796179033252360390253384834782428911228350312995059296512013202981214049690155973624217982618572186690629393688668380855531415343035476364485845562203330354168788849023043609092864372997506131587372974589034738683570955059234741409975711088655065542622757333229038929539614"), + T("0.14504509334766993343679732543237665601748015028110051986903855469561805431836897592755787294803720321294196670692675860425817019156006795472544060301573514970130737237352276407965078322598196015088783620318485742726789260216376389721616761481364286097504141935673467904417287244647363440435023754573347620436961058676078531225670052103877411944831266665091545142351559495386200504307614132116833066489"), + T("-0.85592663170679958406515397649643131309994249316454429005131578645085757570761552251729365670632975735279522675018975575836010210249068470527194075548251441076976420496548792075626757772699437483366302008026562909787676760497709271997930485538120627136230760141137536077186130465523928404376378372203755818590534658221264961808618483334189725855704258977192100851554017405085224133570406300901634686193"), + T("-0.80835578582046670310464731711696478601773118159925609840597870029856375850957218864062941877059300809268098041286606529894870899049159003652074961379621476411176224648451902760457011220845176506086174749134555188467902316469475288975403773973857636373892326760376585744094430003550369691223550482756797212146056901318410686997010241891041855811922027651329719928389111111167862044112446757189042088046"), + T("0.22948154144509182369415746800698328364988547396475691620681392787566104183462052622980774444304368277802870979261579895452333488316470495027443871923297117956210113575448119970237881958246782891025814249305970662163236166516394039705137544157900789683194435211763787511069822409683486532927557658412323180776903688623277362060713475574739265599518489263464320833102602215450190502358534383949241852484"), + T("0.98619528108436834444622772244233500550001863518169392038562682097011946713614830549103565779570404766638555367268020992254689671390965312890416679706192473068433717014095521991774567755994345709131209844512998942709582638991869821050636439257597063856249038092119512871640381123843890013812838185293393263756058350072768448458950380360337889770923256206901689904823829217396801268618019194906772703227"), + T("0.53478241597498682890636923119124507573138434225226478301997338705931821657049944750562391125304256759887391004338167587322019260365925435302391176930331161896818003746464685277508807805130884660314731429722219318699505836398912422599554793162364836595300619860913573673921432325981205409702897337053197706014049687225094538593517626884763534008626048851538197945922313231461994435494917556595912129444"), + T("-0.57175918163121264025616107589630751551161205724757288681494194505248342228571881008866075970817690438186545379919710148119548771419260784258379302863349865022779589406640338106461807885184578720013258862884778613907350162349826641089246855371608494365729193629734711852175384638728815913727055118781471960575965215193534386589450370243853256890375165575818694142504618584610839931680003465519416417686"), + T("-0.97787410706912947200700947809086987929552083940545236541182287303790608208610023257624198390105132776123115664110406549669787968717953162987933260638310530750565076435745587024443942712810356372635589174338356282870564205603334997652974637518927664227105047973535688395040777968082125500061259190313820373870936866720823176265958448162090987423326403872038897090958331050185525989399368410147697601184"), + T("-0.18605618137227649584671124815631620875769157093190685600569736108086402885199167407702422320100843062616644714444408614621390574242763877642390939806307957026167805604628333909629405976831956784535026886701013223479257442178936513209253370459988519785036119662696969209506800793520534365946487576733594348627957021254017447520897947123358509837940617442852539597167693389591380189862319487892792923153"), + T("0.83368761966098380317914918853127190012005517198095141616372457983351189700156411681039093358761555771758536229588242982647239744187242300801829995961871412772468923394414109025642424234703592018655517051393077978860068845984020869413624371103031896740117407710299198562267502869147100200858539656754317575041431701939759759225389946719106478332366708137354276007919533255169664638235639383569564110075"), + T("0.83213248256248718391648282211236200464150938178343837417522635579213705328552770623957486792338755433958256100224720251839082676782210674078979903328623897712870422600430978907177584667709552233768475968506874004560085480509103334782228549116928850495590090914133655583767781543886956699592465303315591578411513564172526903206600594554996369316967222569167592338646796759203865876228192676690576393957"), + T("-0.18881649076882036818094718893825891946691295900905829577570255489597056088743777799436529545269699011594065157007321752198038423373390670103253610646983030773571922979273600163598344653044825786274322207994738104766932351285365246017952816761886637102290439956065197679903357501267350062489863581450400525901254917975058272557102311416424438039867176899411547343130655797011597302924818642795986910776"), + T("-0.97845810511310366097345864112668906661089075307983663561178996977421991305045684012227818895513901547325249161241097295038349597373820690088476031256136981855438584632935895625291791741570973153071536443895825053372019222244541345181800559983327493395843212471107951435623879503589116197386166395270332969985628390518342285544128149350904869144760786557644083102040293619728857795557725975446387638082"), + T("-0.56945144858011886915780505911780725010620323062276283805115420871306570794972703588425077520601752861293077323301792800610549113139402646104081762175534061087117946244152125287975953108704696268847815261917377065241801643783329354778399526877290332215236634903080639679860355847620563822363712579548641527844739938293967364597110377469773489014211951212857101374318452911401420528677259991331090266005"), + T("0.53715481965030691887397316962489853948341836449029599646266321884877186476498260019355874856809552188645630606126976563119123530724283602396484950653123503399938294688332329634386257314146589125825636097592371320563696604271190825947497633567945681092924620382686009619110102110209885034787176755762448527267043281608584015012767667899712762371285806841811102653584612955459666723163160014123341963671"), + T("0.98572607094681400469823142383450564975177916157871840422129452719452525174019803417354200370408054482797693621385765351670173144053171524005535725427317409189868483686977845578192854125777358818593005952568285102554187813023457756929121023181880198348203083841375515867843145321766318476866476607321938993078073105088587752971311300418067382395754489252201424628686354714684325074264340586434068083735"), + T("0.2267455177003321384894005667464998092097833850092894238480831378466683827110057043871346060005709235569800215748516185659827893723700508589640891976972716570403665692613477548038629552153079218542242417184271182264022470709072429310981387965885388758575814101891100826647083444934684812292662215448102626341015149572372707444725994248777658076421636637760492982947444020394182326376291158696727384852"), + T("-0.81000689036588888102398287378618104836450574863713892332248232301021899106208419137911694670935600210389307190348154033680700645928539580731142634010602466147128679656911798991740456705453963764056901956423046807435258488930954638670002070774439646670450724500520094586192645160847046520311570082832431061691996839606591067443335185302732221888316818825870721496315105401624866741940813589284275695918"), + T("-0.85447015139344948471094821054366626768019606763269341666053644333072070840260166961763856973284893831954425042860099172316086950440334996806598196522184690224018944138578542327045770832471332376269716674841615467614625539483750018876502303839670098606230317226296309325404589665701938190004997832683948796843166639576625281030300467522347494569768687089899397360725496800596493559470637547748735594697"), + T("0.14782491492260520954264860310453392894688582499520847868449990765772811594316839506757584243129175527745236732059643506743012867347391315093605558463510078020864683057368198129858823908327097108583620570511151521896111105026538667326749527786043478669088587777236123716686756088055458828079103458534402182273835161066708126746360741813126817035007484464329141515901214558732724557437706092450180726378"), + T("0.96902885660223213449832417965462288346382027027907788639786102888188268413128284808786908788351970794814191573322198094839000459295090920127430762740525901384778314480815531039485728089512489227948630012091333107823627672161756650613535363845597750943844039360212709462602480040358932164638277463645635101178868520058961493135889052671922314786442189473233561252419424865659925386520422456933994031412"), + T("0.60313571428133694309325113655636540756247392441681227046917143280974317371916820972719995253248954425492897594051861535050840463205496306256237562726891289696301688567930026444972968333329934552460084325207412884738539384203738886072440013640125030433738691853586812704775040754220545555524237855361445575868855139945713834823411715711428213828850093318644478373792898000948569667301322178250159228606"), + T("-0.50162154214905535006507934761566421365808962336874567677926739022768858180703782104157334491773507690211622144412751863172893119122904872120863946237533655183100979972269651012785895305465091942482860884709266947899655662267052604131701946158941092922207257375120965677001058006645609151579188243577188192831765423148813895489546306047297711022539509473462404019089733447430114238267379980532396311664"), + }}; + + T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + + boost::uintmax_t max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + T val = cos(euler_gamma * ((100 * k) - 5000)); + T e = (data[k] == 0) ? T(ceil(fabs((val - data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon())); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + val = cos(-euler_gamma * ((100 * k) - 5000)); + e = (data[k] == 0) ? T(ceil(fabs((val + data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val + data[k]) / -data[k]) / std::numeric_limits::epsilon())); + err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 5000000000L); + + static const boost::array near_one = + {{ + T("0.001103662615143147017601393734232421549156847219973314118949247990939859507971857976111288683988415478257878902917354105871236439563170045857810738102729287303674642020538722348587741395785016549139854168605590336633274890874911975139498047488076101124170425114828336211817830671418321600962996502656221412102902998671173649312277667706874059520046508702908872747388744526457997404065469953155187340837"), + T("0.0030157041572432190019717764776322147049224887913331212054173669461673516770769148735558540290915754514269097799280330158745508542936966046640795712691698490758472574837678659161855207596563250546269614348515005196657786359646020537231301121492728577410212550350070502426482802490452572415879214994201864402901595309726458026672888041860289772080407882673424767232857435141510615538430445535588448032261"), + T("0.0049277346741750694119109616231402901360500185022482787362616412856233338679208830974124749830793778323997684640684587346403570647040211088376986993615001420565608501262335822815041623056442245053684626079448221530207757672939048030945164948521320401574074802966260975904478775314730002799895049652983052125151436511589335123254582883803928373794668948878049089088843407672795237410750365571990834236348"), + T("0.0068397471757112108044544339281399968563253858411528016363900245610068161564091499398024110635089866212789583403491711476788985949178019078796740862827299289838108117219486357027460681238178010067475221327133396780718266880540272936860185783976937569903778160170225166328920201699827472893824363838439627437187765159770262282930293057633886299749088561182830982345936603553661004526800797082995898813903"), + T("0.008751734671690018552720976028788304981263251327799787402847843531098338033456389098956160956160597460869666211569183483587979772678557230743050583975270977754518475970489741156524119378847305446845331098526962579804361960647344836744631465315238254178161716870409320747176674142306881908614436607977326507761331050644035013756409444911127742401762647885817361924274132830920030936589562922803846509607"), + T("0.010663690172041286306192948782895990881227033104763005629047563262531418373465237876680529005058533981010793759446966868628480908709812402179047774888094761104238131843239037167212206469894485599085717216855637620318723457013401360290343196462723174177342294339229792213396006286331141933952648238459364417067676760977202812721209681621184724443514062993874571816382775241753902032787099435678672474841"), + T("0.012575606686811781116778815864446643746718166744927923785139233710240017201737625088406861185781739628293213436323314376708933534933748436720721568462267317026688561438144113855290140925120435317506169856461386623828941531577425811393721991195661429557079268566156800689149725770186985872449679872155877537432897653904213375816262709009448220490217917537801655330411526526290708967440087145630462068976"), + T("0.014487477226190798137230457835664944872810802211308342685055637400305474021552028493778559102552025380880477103065187688337931713540557562373991431880251553620947836940726544553647739994157300967262941976933375115946629204615918888689039777423610894099269527633757403818072000860056651445780074486612843419789636984117740884711882675016016919064788076097669389652323393864660933705259163296837955978748"), + T("0.016399294800535714798489384358524900105286836154421890562438917862501411947245037986455919696365301666112414890097246479762149456962809638588245466988584093380263545543023411087203351948681559905336010066900667101787138862856447778428938265451537422367650992162004154495705878092019403922006152498705687706013973674800621422751806347308220226407830977673540994341535381202679482907460136241543505771361"), + T("0.018311052420397544372537858201001145083914223029622271478159852925692124442640247100336262041440360412392318902558295108452513123454103504516607498763863728284797202978975409264141138861738184468257576157204552383675442780049333490201800526935793000727771598103735596829143729912656158790924063286176336412427525710457367751437348230246446466833498557166002214984255422115833828533909144072330080184872"), + T("0.020222743096546488827333191237246591760639730704704148795009602627175281013458865557238240830203973690492882935553111519759474835556686812553430134442713057622274348510526931333124437928482001301214776111358848026164688447150395879262705323533149853785508106018564787140458587165768350143018847840661371060583295055600185059031740386698369796694993301139380463919242175430688496936048982929502368583755"), + T("0.022134359839997490880406060727014362125793630864951833270601574861700025448109186301755833862830343973100181180995751924514611578149687732808840212399134735559355116816700346196685057916461444889179117142807858883574426062415931319905031345377305247124198345242221848293630112578508459623098934259229893301963120289071135120089672338617200639338087265986570094025605269870532431816151660553037324591448"), + T("0.024045895662035785157706623778569329505432699504171659064296747761761946910295074291838826981712792368282349553905175996858645967280135417577488810651594776626562252686758463813820791031580579721782251705600570838044158357396828391251385978824608388341556751951593319015721256942139947235672567093309227673005475237474351604086627391812539914665025071874865132198040631867741985556198082915821590691115"), + T("0.025957343574242448364285479040344211549214421772336408904791690210449825580868841229728937909141136116652894475476991471494524501035809956288247010861464302066154254736425460468024350571584780489213056428098560686376999562953811729945811217829999284678155635497607933780499844559793793320393174691097636750027421158473345884329284455326733063073401001936304522649050748641723222539485352644237494855455"), + T("0.027868696588519948373400137317728007608587427701668964330844960393232962659347088604492706251530487148805683505883152882204177723404307465324383408418716579280515871949790204586171885981761699066301009410176801635003961167315448162116236938093263170474354430610732127054993766008385425707409224417795873645410443727472246508894027549288331903202127478347028519320691939639175445464091747341289465807076"), + T("0.029779947717117692140641616959423088975059158964671307393654571763491553590582559015283533532986018614029995854278748039155177088839414450454409571267110720713374288363670804692289394770804051182510495900322915294613479146430103948686457060129295537542317247965142780968717375277053102667416124807987527429828758851341378395347636356414345553353015296944031211364374602764176767114282660874356057979248"), + T("0.03169108997265757234968007548831539092664261419258315028339932724609641378752993073240305448323210275610250474048387518003293691429670190316839718892647475151605557113852966925288722557261748981001717642661075734993748510506277165730472207647763678204813714194082852502621623007244214605646094787730992510318924772328958129857640953691466395972638014259980360897599169526022683004620965496473543834477"), + T("0.033602116368159512696233026049065446239504816931754722314316906991719894135599777826750609185018647633748023602662568553364455253741994701511752478506175671449029859193583332380924298164350627023797218098539441228986492601142199774579432202424360114528105854714450548265654769162069979862894518829365029262734944196495563243510942310738160350648115273816371164862001848102516957052031698646996790510953"), + T("0.035513019917067011716864665791693591701266221069066142988726516832036728613300457006403299601385922973285573124147669717618486570986860008564309641657943172757912451506572783449830586163814477502720341010870119231030511664725149033496023356743601581035789746158436049009960920433265660001864258067191594425969638702851317416487965304378219676062220223886417078628342731900948906319081697480745936074075"), + T("0.037423793633272685069230163289099410548201460485083250584815890545695501760634737348027106921155349564805321222282824709072582234185849564440670000847571561359324629877368620222775856068569278590582843550096096627510109210574429458414697641703261368397349100700647508781941466979105505468662952228018391181441110331804231754679360190526351574820397399161022517352576803713854137820941977691824804918229"), + T("0.039334430531143806170384413477273936914540782490679532559795199052084263353981243128408259086619593938946158294175465792633584421592350011455198124846778194417281005620258982615227234871780679327289232072858751285307955384102986030326321993554199425677956531006546270705693578070953933490084008156062047268010604414954653769711129551190023978078265436680151306319349753427763894284339669614362603225399"), + T("0.041244923625547845099780771389235760645292527949481044094490883777921290140650504322516472637184803214130714431279474404434513167088543202171922178874118967991301744186858054508473413647148744260057423931033177973119110921967581379650616945061418716237102199971097086754171168500651650526166023618723542873290120298640370217463634503988257867984189842393302366909916756244585593509804376197012137137735"), + T("0.043155265931878005673591620105503250213648422568500347993529171942176855000247082147052189275394127432389966427668413127665366489709229602926384588361071126297040547180622989395253518259197742053810419372452372506534313264090033740095357809571640645325965973975968081307185286025492280541542290934505383760407808393490207181258819590768103829347539943429968533891105456889889207923129412409325200337396"), + T("0.045065450466078760596989313842010956972889269629840996618541471076456145341576346037140737554087089598232657340541865108389258265511462307708855932308284610805209084413460614598570062354088931179587984702006847566162492414964136182928014974554852612762940578089297583097434972291633301329615187665009664697057933900728259220674217919826618275818024987757805509580781060051826778978395144370327934582031"), + T("0.046975470244671384601033063916347240271496301008030038885300525267985292259051299166038486168462131096926077920611254966322965395673221324506213593415263189667393727124978454125104192236004303056348320706091018781990803164595039969574510002737990997634364247271320535459089400357647302806652831431190979518269432197656547265417669309719787317687585776029758282182901563328846367691507505917911626458378"), + T("0.048885318284779485470814703449342779874157141188272539012461507790598796169844054420701400747288103863351008593834375336008952419161297787680355981672505884405645257094616683497040471721980241679616912483788844007649447969703512155758482444019770785766752697959554691538291379700303132353876869628124563105576278585509058450081192711918856522653293896204836307264696289474219755720645459588331890558889"), + T("0.050794987604154532871523976044438688478988546522275702591135165295075684834775069782087540212155311599924632216878717363279038406203747968637573994688146329296755023729170505930935028107359530042909822369245609091696704070694133386183688825674952803613566914142157159664703170379754943610785780639205752343103591085978554489192416588288410803225066825839880971435465232206429722600557780654218330146221"), + T("0.052704471221201384879102044313723519214541830844294339002006150295000261803629777930668202713875629368914012613840180174156598399096984605842000917709330893871365961242812860633022132663435078869433262371062200555333508565564704972551921154864927879748108180002977668648111714062992755985320189721615088748697314805428967770533095416911693326757965362169171309026356339280576158225848771071227224373815"), + T("0.054613762155003812122160305957618147686113745063989650607179163157398820817715079449268802189362998719256947035541552524839497119721884536865240705017403409053301625152685151644761334409897199810093505097528650897729279062117617766845257388412635800174656504897022571125534403010151970450307624961920347280823962725005822339087173498538012712497715370388872960900453285934131578336748483622553313648565"), + T("0.056522853425350019441850338124226420404372628229474954730316461224029279793449121148941830155705856364290655296696008865349058650396297667951745639266344993911111272076019522476315254920931469406381088740392436352997178777214659473302034620137440843681809428909274912969436139312159105442160243076856936138443854294531618433726198293972487505166088883354213979143973990964298454127970039847456893860203"), + T("0.058431738052758164976379864942430396555977098734986011309321413104802080798824039565461521608355122102022725461220269967251619843394860641070621951433765763369761658916816880868188275032453137184211673934079277285593935159478757148621410070196500221526968060556586710920750728824112282461003224923995158937905479480579208549847478185757177039153501786271361921802927586114942206193581554801605680183774"), + T("0.060340409058501876576879058406717550375449897922866349024612531373677724965692896763451690034750214807393086060232183962741893455630800282528706094634312497867863194252914455062127544671909424505367559503649890477570116767021509485710626043408265846213906257952113003324887350087083283630715857354116849013376841533857321740197047217435805280085872071354373524395263864933170034771001607559366437835689"), + T("0.06224885946463576546133123915706193746686049729742751789281333411875145041642253752249398319274836506892916659694331849766284472811963607782488993959669913942440995816339529777656740297867471191540909520680122909159182411803441391065468297111274482089347737322313334144161837035757661055283810143238846811496286086926075008068489724098160672664550444107807861952850135669761489736449089327971794824585"), + T("0.064157082294020937013292141108273585068933185681722806586173136512969086561151000586083228827704474922133659368208499428517560937267711287558275856325851735527047525549135602809953924346232393575354505341516408877034795144989051337120442048812961016500803766780090428411925756071299228254760633032932651170483895163866111455935100454818941073761804284777739005007991141161823471943803047351369535073521"), + T("0.066065070570350498632132342303164932774411476452581548988386145454309844170784631219900687545375669726062411278210148833761887075889382631711319762066717518842787273543143969874177059386003262516941215168234997245420735913778365997498382320917159517052861653706668051150014889560865161606396037665048820655743861710636504450723955435275019348223982732095398949832565423361714391500479155224225613768011"), + T("0.067972817318175064541548243754498015429928588516517183822313264446879635682093113384264993280408482780193047687370305892309106748875519486540879020142902362307237689684697063792225838111742241714789823601251998299331254097504567214769822096812914869886418586879378868131071702869283011709161582762527864014863950459121468893761825841337802563429112718615110803469902519051203360473993644451463303576859"), + T("0.069880315562928257463098098362562671709183706398122146969098129179472379455539984270317889382725678551314678030902515782188203802362460214070192378666311369730755912670660970378408284876465192356340335277225457776091515934608751710356445501169982098020701963512215973413220903547301855847279762573955110834619967590588317288171580291576756417265600792610005176888567344924086299458709493921684370833814"), + T("0.071787558330952207061531053207739391124226218288071373402959685303573894071937999096931283415397385296306228484128726125223568292760110763075739612174182840148193517540379302896938375357744754831885570482299802985278525692833941172622048860945698352794727105726197891701070706523197225463566498764869186174536278875440544967870368440256565084805804998877012238900798874720340885805165811704445925369809"), + T("0.07369453864952304506868897057861922170414313661538863465614770246556638808351254050794164760581857499175318127117745597595046399453737415234966090460819383278338184265518294393589316067434296307320873514873375534499000895507092920123162793722742278902956263178675873980121089525814840115300730124457959632013360479776554262210801798434607194598511786777350540581826836696200671400628870250659962729555"), + T("0.075601249546876396992772935963040077834759122887264324876826746597298507042570795315940378957369646666545616927930046677179646722187557860442506025110541968257406052679604681892086517951648112201767029044637142334937786145563391280677987040697732028896674786378870229133792190093646530752257521390201161387698590619925316803401938362974478273195688740273778224688121208296858072701246429755713258468481"), + T("0.077507684052232870319778844857360483087988665809157375994805235390695227945273826842335916971262245322463861698987988491433092759415620685754813456247989287157909601376742141647886684380473379403067343977633347655683745871434202230624968375294472571053679501320680048739346844244553807193670436672857163839591129928936603341033670518982144557944158002407590669543043048232580344768659176122645763500513"), + T("0.079413835195823539113919284592789131508074280056913456617148863190077260584186476150168101766032692499585019572300009477107342325731806003539645749720998260074894005503243715777788187754550286488316966320623707403846973934258796072434720381188302956748572794547906591019552569722211941807674118070825610462581312695693650893380241875873254675082431417454526920871842555422162216221640850141209989864308"), + T("0.081319696008915424923862092389736899811819511475112310887916890436246797704730704673729056088324784096921353721791055102563812592375189346816348952621603248827528923433998597558478366712658235656924601774921095079356565867874041683517103417362062033545480747089630436317004907748679995334911923789802669273406449877710501792905734235548100216242648355048174292232350538531258791292074224222773259366265"), + T("0.083225259523836973901629476483826882570495097409722948211156651871411915926347698443317606324912095013846386144848076019334983060323996364575622231284156371311209803383868297666027142776492604713451401116304951916037351315288808149328656282592946622481248077426878390562084748274992526750980236994304445617883874613002677387890383751048690275480465558930319669630406765794141303531112767626885032234711"), + T("0.085130518774003530041015433371012162123590338565297712899451572274044870858132401685294989726432756808251618198809497117031428754224182463768189333992610411750324249283786647605964593556580841488686189374310703328490638378071341189999989736919850819640255203388192531225871093915262442913255553964348789674386732423763999398384843950222967487918049677831350991752153610543052586794779289758903475438463"), + T("0.087035466793942804442393380943589773874807384137701777807755858606555806090045313793349743667697666495784828540247587627381581545620918795107877715086227932192756144780086856515641298195558204484728115519445514732755572178929839231921546119143469647706999890259163924570037168105911942268212237224359201159897493303064534985539474450028748960081579369980283792804593122976296597796047722827878891322393"), + T("0.088940096619320340510800454481897179643787714504988904779549430422905882044782054375828906100456879992313640144934242418129400679706865644316664458061953684856607341811667576418163339843372041295322709797007871604740491453013916791024918954258557372755707588171502529270934617054742841996068375532958173787119651672031238405892943090742861150287144368470297356054911834742041692715934237148148936307154"), + T("0.090844401286964974994199780075024285173534240616972938308566124002318176156233343333797652771250228033597767340846476094210813299723066344955542455246897302945908336756464582189829335315055318509171623072382573656172991307091055717376996812421994002305994837615827430425975713541786272473174908117299253875064746541808768776888139494200307162476704515967971265236163183394620211890252072718610942571965"), + T("0.092748373834894294768837248013614869545920040757666771889792264347367335922283987944081370356939214799510822558638935486112190359701790662792925773186897671244831971450474952036618937833706899006048469791213129922302798462311426294239282200248625552430083292818594731518350634587677158329361662244008606299358410273467156168469937529868888478684257396004386633746334360279683178784117372066095688934486"), + T("0.094652007302340089278624856973167138217258137565762699413364163993950641989798336903224059425798872308451866930780842878435503832366316245159154044350517727312654980455290163514021860802028251981954724580292247887851185639950862672925642859475325430465650514258094310141033116303195908372018392349011340787373492402788283020594141795669947097771918542864972570255253465754192708165241608041715996375567"), + T("0.09655529472977379853549858833033074225823562054271495313739665642376685099661084023094270272485976247900824483810911634635819558334630910267353320029261330296977292720266655308513559530586843550229208517388789783011887450865488554143475302590353915732321663418057567573042594801866258948380684000769091353165879953111046260532796891917772727185993569684246844052518121013717183610828519193371796413317"), + }}; + + T half_pi = "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"; + + max_err = 0; + for(unsigned k = 0; k < near_one.size(); k++) + { + static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + T val = cos(half_pi - (euler_gamma + k) / 523); + T e = (near_one[k] == 0) ? T(ceil(fabs((val - near_one[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - near_one[k]) / near_one[k]) / std::numeric_limits::epsilon())); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 500); + + // + // Test with some exact binary values as input - this tests our code + // rather than the test data: + // + static const boost::array, 7> exact_data = + {{ + {{ 0.5, "0.877582561890372716116281582603829651991645197109744052997610868315950763274213947405794184084682258355478400593109053993" }}, + {{ 0.25, "0.968912421710644784144595449494189199804134190287442831148128124288942561184523327264655202799685025510352709626116202617" }}, + {{0.75, "0.731688868873820886311838753000084543840541276050772482507683220220750082501569499540967562610201174960122884908227300721" }}, + {{std::ldexp(1.0, -20), "0.99999999999954525264911357034690133684385823577463126432241468890539365027135494672267164697779879113636143901797362388" }}, + {{ 2, "-0.416146836547142386997568229500762189766000771075544890755149973781964936124079169074531777860169140367366791365215728559" }}, + {{ 5, "0.283662185463226264466639171513557308334422592252215944930359066586151456767382702286176981668344573238827368717546699737" }}, + {{ 10, "-0.839071529076452452258863947824064834519930165133168546835953731048792586866270768400933712760422138927451054405350243624" }} + }}; + max_err = 0; + for(unsigned k = 0; k < exact_data.size(); k++) + { + T val = cos(exact_data[k][0]); + T e = (exact_data[k][1] == 0) ? T(ceil(fabs((val - exact_data[k][1]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 20); + + BOOST_TEST(cos(T(0)) == 1); + BOOST_TEST(fabs(cos(half_pi)) < std::numeric_limits::epsilon()); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_sin.cpp b/test/test_sin.cpp new file mode 100644 index 00000000..f864f216 --- /dev/null +++ b/test/test_sin.cpp @@ -0,0 +1,297 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("-0.86508717968306725270818735916557777730599862881751831435316187689198923993283521790498932671735565487198406771220725516598383731877859238387113868142949869746710189966430151098818077220502499366007854414799684058332411166897077090145203892212195332779437567412064793775991386725873517928401298446944183864288115967332769329141686571538486980106767058872245206155998183801127952563209302584516809804068"), + T("-0.79763858366953481259714957489398094215522640329181266031581650731842869736147648450595884906779088504877531298007549709584387968778149220989565106227234119514920955857261247662051707093671536949960734074547532698822613207712655346154633044042812601716529880175764244503721748663711634053406295594334950958339944104852233364538438677862264102037879639671893945361353871735018017912124896762688051071101"), + T("0.24694751481270393816989455015331965599577990782082974819820952118012926923238759680307705708664260650582713915549160371243741339970969856458066110960284501686263922529370992689985210394245398556897269198908375140963677715274995382713675198405319566885196239063678630261988218491689541221423165343153282194748383394932208400962140245741297801785867823531750497892155090643962052920864620306068640533502"), + T("0.98901354618029602175090175847463473510249349724827992487552201591187355027688868967642510244298626184812677555619430672681773746616625955520405639182509666726561394718194458471759810888548201804764323767747429110609233156664896859247358618600160567275441201363464883016296014653448896069217108492576553919644561112490398174029484186504656523262450502010870102764110481052688040511085868232105814711948"), + T("0.51950049121984044339738214491377557901625353846688754076530639315973808266367537549984077340395292997735469833961726139018356328562746542110713036413300858234570352248446585277165262617881845994831334396201052962253340345385732694479841227791272253515875849614421139763193705915213364104134129815431668002845745090121741132063335533091373430722704456843140034973756911786188684117004466722017726632522"), + T("-0.58642035909386951523768726695456120016000621264121118748335087467285913667949995440747093529938553592801111543797937432739099086039685347738175389472878030459744416755494430838140051041697426054654163206937572434284771573711696435479889701764370159398277764008561691680023659946126461221466012782190610630337123139316903479632261164136029483310671081582686512548571027968589672841130517258821548718323"), + T("-0.97395403906078050869854812754010898778588110998510216999024129038738667688293411233247507547660433481826378554022069634273248636871268889943206657893365085495908990103953837221918076997320773016743323042411543366853067308772133354882422005996025272628299293665330139411017152702226907842064909056524954416279212381635918809975293849765789208374484279614272702262407912547006420026381898882431367705053"), + T("-0.16835709980798731779763364790367408966536862842255885422223099514294148991190930841731427782587704016811168224144233724867667772646548196695213703654087451353235456862964457399533377933177974811857965890770102023474800434793450796708363928962489727300887984685066126963778396606401313473669144644834322766129500826515170674439623002622166198644072962305451561242924295496497673865817996583336572441598"), + T("0.84348366891508115788160933441645221250048198837137321279789763092610185698937735368600669544368356295269809174537295606389343383737539420322987993567260099654804618392548221004269952154930593772246006464043499864133979093900482916664339574929175866269202056532433888199203357312856354292159018595451908698245799015703256761432875415473819767251067057623850803832618933566752146583252515995117479236918"), + T("0.82202496781424117249008335037366444394838277287311909893953311783617946236226559994208529824007840086283951031540156850110406585677216210109663411850204100009480981960066776312830296812837514885788767571642502602406668355250521717143900938155040050319876970346676468728877434985446025106390443319201723689927608809502112038908318173339375177994594042306023859374748187782138324203679569236625767697521"), + T("-0.20644548078966172278108566693593446671066500009311131547131824408615418778824039740776494907158941999700112622969927991803006352755440587105827687343678969660134349201419765578964725001619127224358098018507197217477518476424879393188273937853474771810828977229876872752634362284867524335876537185168202058991502610059394227279455590213187025513498301701182162411129861291651458149809232765920694382718"), + T("-0.98201238933821398742743268689921357999177043645192920595050426161233644052306998773405192706007122833665193511424723001758553674874382453729473736698967318043174263178305116522678701572642644955125046307737685013720369337168716304062292912089093170603176088603092541579085189475146906948455044376044742840712066206800020164347462069250277677754185339937853236236760620498554396625100570743064458561012"), + T("-0.55457689409530213747356287041164249845415987873946462511683197174099773035991522752407571732843646308149750048541683187925931560402799808039721796055589991969835698977651564881904161899499528485305192774993355886674471830577982958725011962505578939702283684004757222629888058039297509802651204034056785648094344956773393289641899074853933663408784777126564054915893792740950321751681666900366149285673"), + T("0.55223631972553454320768877543021740444770413956059533654445613814866273197657606242587941011620967135302125178080188557790223181274132635479848516001166956056684169152368919096181559634794365697929692462933846221564253699877634144325144847224182437654513501600352945517055120350460290761483324902471273182702037419675899405714185903257727806710137118071603904368311406545920382236241507802254402670342"), + T("0.98253910729963647217200550710547625178905758256820276353400539681385849046526414570850258127380376793100401827298985862391604692170961399606758739415403392939490853364686526772514484164160895334184339538751098251139449063960873514450954179656572162689800220524835985551929362412800974236601606988593425142227646314150034874268224737812934754054739495109549178354735648685843025309695149000523043036256"), + T("0.20919424161231759292985627465559155127857466748292444765172341549043455435483356353779261807927572689301399184910446505295185314912207254913673684840121644950196263845525205209069485089301207501133253448764073025457512071224229423661258059212569761388984180893967120131886763302041343297149817612448231084051035085349821477062216670975268069118975416132488618059227673886548754511524393205260913936737"), + T("-0.82042150034016416806875390736702748196355225785028360060677365666061470851725327317484829164156996988612675463903575414696300136809557656769505171924327821177877208936984569326071873868949719900334446867163962763207795935703399610925921076634415348400788763860462929861356452609306026119961919669078311635349472648728526901263549622576885884996291919276608766907523487313088490283878962209939268414829"), + T("-0.84498980323075860897972946021725417020274887656496755152613838764676035268791649188464914202966471633575987923264828416390016799882223646789601058107569902148674040269544868920695600748107986559656481124234185704814218734471348170295455557819067840791831040541198080087226424277346298230729678145499808600603861335243905613388932855271426976928024047466289393683437131604292988966125504076029384924023"), + T("0.16558643533491417205585047942945840817444866977186231320483545168338776228411479964576268852405814440921094618356469443677441509984568603636330335278789316351077745488280059266519036588084571034766067428538242876359850813716345435707699637862360396048950400623443566517903264884891653913736982243815926409161441171926621253221896245282532431364608500284511449412428102071793828094632271947929662322388"), + T("0.9733130134422248664781076439996325547596041902633251431309613137772871577452457011348386026771902539246123917754369011815275465953253766314483807639106238230199709503923447643159359893490066619470146552346442263259964047308322485032089683425930804181966240839058765435955921596502848477098334939721288492487750073064012585262871240814591890531382462762625592433554435697556163942273461885638661645373"), + T("0.58869425301303541994797274551524668431807337246095715070998523760895824155086577422557656235988936714948459396658626194388329584290953541802060334893578288199017940637454710820521526799628794241448315885605593820784070904763717099063196519196389181232206959679228386773967307850125102763819453488563433855077856029436716904341327752651679433491068803177798096114777267163356371922112193539114936367793"), + T("-0.51709728401438414917109716343072272559608361642833403289320143191669289972512815282728235788726767946133258714516539347300398650917111088383730840642462745361559628023336834708274177008810720997864503236483231424256182008792514317978767120858313922250278919795149943234196749501590214648800764097687555634887106709926715156050968991302040120816446887836448112221991715147755412747643904982369941874903"), + T("-0.98942504561778994579633520641173655056014959757317198390962485163668002823254326156828513148058511330328117672273198435854028958189163569498745241605165009769541862169414925124968295274462159200520442455095613008718526467538007940197043090974670359128924585720097669855764038631475310106434490427905711290624710915672501400113806220416195439435490181070678989789478092500957769720727750016650901714876"), + T("-0.24966961848279291797571833930275478107046130070512731730054610018931793329197222379145867877191403438507358664845958042303643850373616999952368954956802652884289978026682268405432675662623924967650629865863280328006489120844535221004915558956531029998007360982378798891060454706118319300864403238959986801161474819341364524976070498799822591253693631124434026399072435454954851787496900161449413279223"), + T("0.79594055595422952691181178601097588849087648705672837252520925001820847496121721128286756288605360935162062680205427201959305734943295649471345888560139726757801278052687627513338719817916945750214503848241201988433673534399927155896112448547784281558455109017382599606935223412144543300644796946427196636388890407359228183542249818866763328733472675174818547133151154516588878300883530746640968325861"), + T("0.86649337624388547603453321055003727682405511135812925957248489739919757880982158700509398511202886625151501180599611933401736555472982930024421765233048287030623272875751902474678241444565197252953357529927172840699144509942108163113181199347462221304945816329094035938388900123384165001280011688853078191968630514719137943065609922040635003116435361117139325021519623335846499222050126246453597170833"), + T("-0.1244410370371604254208240524194278926442108653864928935045533919736466234398227704731948452746209576611285042916086804685407426387667022583034033620993631898331144469445927075361836574325552419453828929182451743365661513957092134365138299104921209789330945195117245194360833974076928889872484098355943802078944073614928420504484518104238232385695964828077489150197654158701678306792352671268317890272"), + T("-0.96293046254479079199525681753175960597403031074325898542927860894499480571620304305496779255522714740449920561168034834326825673596092141778811133613057020474685368838786612124083863539941316962278807332763650117226990808742108594645615178525818371573122469236743437907516188100317299657360446054991401261819129204379540798883211112991870608214671142610787565091372101286504874487369815732318336349301"), + T("-0.62179356795469823415192312397624874675187191101898449037192803173787210412483490820000397097177845254715052331863963593667486830949291665803517410280665438510706842857082320141162218238699592290729367363950604466282373746899578041764378198664733652245195397766367192007717967103668113752808285669458804690643918469292331076180494649617596159416023979394805630825188506001209288256336069204288392918838"), + T("0.48106401879047921636300391903940107974582760756679309056624716720150642739438342683672522048951018737803088677542525404601585084899079521603734609111135623651892724625992491018152917388956983222505917061754711563327272328292684822300781993087528192469722167755578240677892037874808381277754976653429844703376014341933327393380277555990041743102376562190670837062637051362532345331538219172506270246382"), + T("0.99459994598660210790246203022148930567403641332218416710062008621506849496380708626551905127945616727090196117664589091004541642161620912257208486753611501380010498988340379322071716856719164564672927645435101404830980303745361961742256873999110722481713879285794690870477524893138199111938913573011925775303350770468373885738832279778798291949531285037943371526561613622424317208916781257715667313581"), + T("0.28971323531857568215733762332571032238826720017802004073812127963067217035517116389133284725195297132478232737373492302474489345753341693637584844179360668204049858751950419151081083323122754896023020805399882258107804380387112498888463322046038842525866090837069466212429580864869728865250452052787720449604911495690324684990021677192825514006536158108787009532155828922880124667158494830079658512834"), + T("-0.77008317127836149586878227059441350607034119134834670931732901937779794039455678722027323000807268437290639233506821159491390367599326413477276644187223128663850330256445887240546131620117611701853928301285348103306423446252568562902316700603944623091642743103450263900938785484049174821097911777581836743736428447638710800031710950631619240205470844855655792342941803794181628118648640971785223895876"), + T("-0.88649850017673821224561809313855387711494312733345943767846677270453513982665617998145538590166442213419297144115248659615137339374320428869731210388654046137340073163830069184603212007278659182492697000063091326735676965960505375616122884162932165199220730427526058986119610548232796127810029383442287778473786899637739243088842682085531376471601373062369273637834719593554537141683999217223108777744"), + T("0.083080439682369446261941860869339750420290004566040999778829779164510726472983010580067243494180590665495350929857908288257260333087985455133237616981062631238079114106138544790668480770034429554478579438789193350580847656213214727573008763057329069201052276891726438472292117455024152732335694633669865925030242983966039212743857415675412320417462552183844941128084005364683434559113799225166204962233"), + T("0.95088269145580379080881101181112994052817118522049856992220036183689985937794231145980774478416653809589611744235048028615644615194631392655321782728314051357571890517116936363315155374421300181857604455336079096611022607668388384799386418069760723004847858784954833878669474357403336991887563364651104186693715603819443888233612866696932669196365387585172649113432965547015182359279258388342378601416"), + T("0.65381759943134372106091314588882519891954306836908397778723174077695027443392791956504268149479549903097213397297315499069850358516736287190903269479767199733614758880061832597202653797690144333090552903833899073895212983370074179915262608190468586811072275899498782703930003207603330356201921815802020943598313063056751498074179598679039887095914705463376631567774307957063595250839360463815064201881"), + T("-0.44419883729776869434215071043777351144885030313451423935916035359618633896743881816177107613844097597506905160463293878480033961624169222223295759692648326664891288415570974076231512054827602757300757558932537164133079144259056831830919794753959849196109997567447839019812358107684761555967862120024116269901062705630447884553959212830932666828758642780403825798457036759897149148537604844399459548053"), + T("-0.99805485931896998415393032770516446507771859322057899721697973416742915484901238232275785525940419957209526513627987177343779809373389157284465387153256600311648238334663448491831652332368312374266794595524373421505295425580509620840292149779344897042078912546100024102919688347595170844681619630553312369459496674685957338099812389267540391789384661598432484560731964762141424249915228499619880194537"), + T("-0.32925584367246074527751396405706006739637798458722245566584108718687942076934044708484934395776690595227015287405290706639110667384016496689668602236850778364504698270562443122446777121633580240826031233297957129154523055470095490128048296939167974638270094687461177877139544097682449778044363207679045057493400456686353020427908875447286459468112566742417779096833118762203417239243684311231171355257"), + T("0.74289406214691971730748689577071217763372018162585246470580187915854993014301138575550281083980887718816934749714046327786941209573648523055241872433461772076860288459827515491353103487336092666555533666775562550333977874850593623837303036248122754018490021383285853316403824589398140210724484596507930263094598302837215576862656152830461839065227673408330599330179492764472850719715849698041674036671"), + T("0.90497057965861947038086599125811051384385044697380649969790067815919477474459340879746896604169505347120527692320057718967343970641857165915886346383145960515992441520153342687355055159285406653023104853613872396986139584358904781952363737284861566876891343765798384121744173765740395134357707977315982337368931113664139166273039854021692888036428013020429307841621946009361316544995599016861275630769"), + T("-0.041576169205724414854331070120053457632530839733700369568167900754032406936654732772225888568634961935991599374915238690240599985796132138663492274966652919918441321848911576199257910762408333861417879305855108842865299418446579173115561267409572938992011498300648706364387410319460214397723214932915588169565205375812490511157716082500702780952451334934264616069402150160091480447723605317627380573224"), + T("-0.93719053469287541428447587920734971303045432291101939590716959209616543859713365160616776090412883872180361728110905082632348674501130850562014606872006847637794825897919364230003376975014085954809549306630677263098107502639663445116999448134011722873039267927440801790504248068619316004733842223304424897958505882332051426143421784920188133729127262166283872235910357317736650757661074470493571412889"), + T("-0.68471096746912734562470712876063800310010723726902681221146004451735978903661775368964845187095694357185341078508280456672582218780943948231295585200462910309462638043306220829569568223236127599504907044705589687387386319181085952764133248551365406192657503789196736085441072782932910447315642044863129150642662429341110770180104183011207149983149660707056083856793755175252844455169463798794450950564"), + T("0.40656549143420863029908616751057885992068413298024300589949432115120595898702030047373213851768191655418538252805786101555132655463705735655711116154911765012476201409686869641764641591979668818343426771144822241041750152386563094831102053728224980943104700599378495286307562549354472575266695139105050719290255561758911030594734879707560039179536988148731390148863859754525169110234247580451842221669"), + T("0.99978381094521086442978283578205200383899997058493813685797491852361573237867864126930099929206074874924525764484785288016649661565231871317512839959145480453557525203272815558595173449617271532616787029536616206070064038068200899478815974462302016941233137744957010925379020671232973472871426623684133227677308974216593623778540970772162801182795433315750474086424241697242150612379589791040978731667"), + T("0.36822906150398015822020319344162532428677981447045504526401832896397568656416150947456641712465258877489220724479853323760381517310729310497119744108741895595122245701305436253648702833101014863503443210528716577148214088604629263271753365879547676920872334528859185577830585960895038151179369059434978333166167532494557340097007973338568999353459041439303550202850628759030952416080241927287498139623"), + T("-0.7144202473793071622881824775602288526051552507380513260225595579233618296068431093342018128610611262439148937183337715231254167800684731882124998094889468876528172261692144316638297695446478340662483258456439006572000095777092767225185208121633549640410407788341811629709553299018947000385149072176583748965166297086235970966085113896085627672474399917518485166722788989758308777458718519262591124605"), + T("-0.92187767045167441324530701803233328862428889387952715397673074188905541924455439014301496958042559842229652278722386549208881577386402901283648710147036914825018808066251392970466575927695920587735551236320976667968957032620207459743622857456422499005778316090809442840146125918223889417182053059405944140104740509712594294160758554714036208559142846789714294797916313510255933830907372057747524929562"), + T("0"), + T("0.92187767045167441324530701803233328862428889387952715397673074188905541924455439014301496958042559842229652278722386549208881577386402901283648710147036914825018808066251392970466575927695920587735551236320976667968957032620207459743622857456422499005778316090809442840146125918223889417182053059405944140104740509712594294160758554714036208559142846789714294797916313510255933830907372057747524929562"), + T("0.7144202473793071622881824775602288526051552507380513260225595579233618296068431093342018128610611262439148937183337715231254167800684731882124998094889468876528172261692144316638297695446478340662483258456439006572000095777092767225185208121633549640410407788341811629709553299018947000385149072176583748965166297086235970966085113896085627672474399917518485166722788989758308777458718519262591124605"), + T("-0.36822906150398015822020319344162532428677981447045504526401832896397568656416150947456641712465258877489220724479853323760381517310729310497119744108741895595122245701305436253648702833101014863503443210528716577148214088604629263271753365879547676920872334528859185577830585960895038151179369059434978333166167532494557340097007973338568999353459041439303550202850628759030952416080241927287498139623"), + T("-0.99978381094521086442978283578205200383899997058493813685797491852361573237867864126930099929206074874924525764484785288016649661565231871317512839959145480453557525203272815558595173449617271532616787029536616206070064038068200899478815974462302016941233137744957010925379020671232973472871426623684133227677308974216593623778540970772162801182795433315750474086424241697242150612379589791040978731667"), + T("-0.40656549143420863029908616751057885992068413298024300589949432115120595898702030047373213851768191655418538252805786101555132655463705735655711116154911765012476201409686869641764641591979668818343426771144822241041750152386563094831102053728224980943104700599378495286307562549354472575266695139105050719290255561758911030594734879707560039179536988148731390148863859754525169110234247580451842221669"), + T("0.68471096746912734562470712876063800310010723726902681221146004451735978903661775368964845187095694357185341078508280456672582218780943948231295585200462910309462638043306220829569568223236127599504907044705589687387386319181085952764133248551365406192657503789196736085441072782932910447315642044863129150642662429341110770180104183011207149983149660707056083856793755175252844455169463798794450950564"), + T("0.93719053469287541428447587920734971303045432291101939590716959209616543859713365160616776090412883872180361728110905082632348674501130850562014606872006847637794825897919364230003376975014085954809549306630677263098107502639663445116999448134011722873039267927440801790504248068619316004733842223304424897958505882332051426143421784920188133729127262166283872235910357317736650757661074470493571412889"), + T("0.041576169205724414854331070120053457632530839733700369568167900754032406936654732772225888568634961935991599374915238690240599985796132138663492274966652919918441321848911576199257910762408333861417879305855108842865299418446579173115561267409572938992011498300648706364387410319460214397723214932915588169565205375812490511157716082500702780952451334934264616069402150160091480447723605317627380573224"), + T("-0.90497057965861947038086599125811051384385044697380649969790067815919477474459340879746896604169505347120527692320057718967343970641857165915886346383145960515992441520153342687355055159285406653023104853613872396986139584358904781952363737284861566876891343765798384121744173765740395134357707977315982337368931113664139166273039854021692888036428013020429307841621946009361316544995599016861275630769"), + T("-0.74289406214691971730748689577071217763372018162585246470580187915854993014301138575550281083980887718816934749714046327786941209573648523055241872433461772076860288459827515491353103487336092666555533666775562550333977874850593623837303036248122754018490021383285853316403824589398140210724484596507930263094598302837215576862656152830461839065227673408330599330179492764472850719715849698041674036671"), + T("0.32925584367246074527751396405706006739637798458722245566584108718687942076934044708484934395776690595227015287405290706639110667384016496689668602236850778364504698270562443122446777121633580240826031233297957129154523055470095490128048296939167974638270094687461177877139544097682449778044363207679045057493400456686353020427908875447286459468112566742417779096833118762203417239243684311231171355257"), + T("0.99805485931896998415393032770516446507771859322057899721697973416742915484901238232275785525940419957209526513627987177343779809373389157284465387153256600311648238334663448491831652332368312374266794595524373421505295425580509620840292149779344897042078912546100024102919688347595170844681619630553312369459496674685957338099812389267540391789384661598432484560731964762141424249915228499619880194537"), + T("0.44419883729776869434215071043777351144885030313451423935916035359618633896743881816177107613844097597506905160463293878480033961624169222223295759692648326664891288415570974076231512054827602757300757558932537164133079144259056831830919794753959849196109997567447839019812358107684761555967862120024116269901062705630447884553959212830932666828758642780403825798457036759897149148537604844399459548053"), + T("-0.65381759943134372106091314588882519891954306836908397778723174077695027443392791956504268149479549903097213397297315499069850358516736287190903269479767199733614758880061832597202653797690144333090552903833899073895212983370074179915262608190468586811072275899498782703930003207603330356201921815802020943598313063056751498074179598679039887095914705463376631567774307957063595250839360463815064201881"), + T("-0.95088269145580379080881101181112994052817118522049856992220036183689985937794231145980774478416653809589611744235048028615644615194631392655321782728314051357571890517116936363315155374421300181857604455336079096611022607668388384799386418069760723004847858784954833878669474357403336991887563364651104186693715603819443888233612866696932669196365387585172649113432965547015182359279258388342378601416"), + T("-0.083080439682369446261941860869339750420290004566040999778829779164510726472983010580067243494180590665495350929857908288257260333087985455133237616981062631238079114106138544790668480770034429554478579438789193350580847656213214727573008763057329069201052276891726438472292117455024152732335694633669865925030242983966039212743857415675412320417462552183844941128084005364683434559113799225166204962233"), + T("0.88649850017673821224561809313855387711494312733345943767846677270453513982665617998145538590166442213419297144115248659615137339374320428869731210388654046137340073163830069184603212007278659182492697000063091326735676965960505375616122884162932165199220730427526058986119610548232796127810029383442287778473786899637739243088842682085531376471601373062369273637834719593554537141683999217223108777744"), + T("0.77008317127836149586878227059441350607034119134834670931732901937779794039455678722027323000807268437290639233506821159491390367599326413477276644187223128663850330256445887240546131620117611701853928301285348103306423446252568562902316700603944623091642743103450263900938785484049174821097911777581836743736428447638710800031710950631619240205470844855655792342941803794181628118648640971785223895876"), + T("-0.28971323531857568215733762332571032238826720017802004073812127963067217035517116389133284725195297132478232737373492302474489345753341693637584844179360668204049858751950419151081083323122754896023020805399882258107804380387112498888463322046038842525866090837069466212429580864869728865250452052787720449604911495690324684990021677192825514006536158108787009532155828922880124667158494830079658512834"), + T("-0.99459994598660210790246203022148930567403641332218416710062008621506849496380708626551905127945616727090196117664589091004541642161620912257208486753611501380010498988340379322071716856719164564672927645435101404830980303745361961742256873999110722481713879285794690870477524893138199111938913573011925775303350770468373885738832279778798291949531285037943371526561613622424317208916781257715667313581"), + T("-0.48106401879047921636300391903940107974582760756679309056624716720150642739438342683672522048951018737803088677542525404601585084899079521603734609111135623651892724625992491018152917388956983222505917061754711563327272328292684822300781993087528192469722167755578240677892037874808381277754976653429844703376014341933327393380277555990041743102376562190670837062637051362532345331538219172506270246382"), + T("0.62179356795469823415192312397624874675187191101898449037192803173787210412483490820000397097177845254715052331863963593667486830949291665803517410280665438510706842857082320141162218238699592290729367363950604466282373746899578041764378198664733652245195397766367192007717967103668113752808285669458804690643918469292331076180494649617596159416023979394805630825188506001209288256336069204288392918838"), + T("0.96293046254479079199525681753175960597403031074325898542927860894499480571620304305496779255522714740449920561168034834326825673596092141778811133613057020474685368838786612124083863539941316962278807332763650117226990808742108594645615178525818371573122469236743437907516188100317299657360446054991401261819129204379540798883211112991870608214671142610787565091372101286504874487369815732318336349301"), + T("0.1244410370371604254208240524194278926442108653864928935045533919736466234398227704731948452746209576611285042916086804685407426387667022583034033620993631898331144469445927075361836574325552419453828929182451743365661513957092134365138299104921209789330945195117245194360833974076928889872484098355943802078944073614928420504484518104238232385695964828077489150197654158701678306792352671268317890272"), + T("-0.86649337624388547603453321055003727682405511135812925957248489739919757880982158700509398511202886625151501180599611933401736555472982930024421765233048287030623272875751902474678241444565197252953357529927172840699144509942108163113181199347462221304945816329094035938388900123384165001280011688853078191968630514719137943065609922040635003116435361117139325021519623335846499222050126246453597170833"), + T("-0.79594055595422952691181178601097588849087648705672837252520925001820847496121721128286756288605360935162062680205427201959305734943295649471345888560139726757801278052687627513338719817916945750214503848241201988433673534399927155896112448547784281558455109017382599606935223412144543300644796946427196636388890407359228183542249818866763328733472675174818547133151154516588878300883530746640968325861"), + T("0.24966961848279291797571833930275478107046130070512731730054610018931793329197222379145867877191403438507358664845958042303643850373616999952368954956802652884289978026682268405432675662623924967650629865863280328006489120844535221004915558956531029998007360982378798891060454706118319300864403238959986801161474819341364524976070498799822591253693631124434026399072435454954851787496900161449413279223"), + T("0.98942504561778994579633520641173655056014959757317198390962485163668002823254326156828513148058511330328117672273198435854028958189163569498745241605165009769541862169414925124968295274462159200520442455095613008718526467538007940197043090974670359128924585720097669855764038631475310106434490427905711290624710915672501400113806220416195439435490181070678989789478092500957769720727750016650901714876"), + T("0.51709728401438414917109716343072272559608361642833403289320143191669289972512815282728235788726767946133258714516539347300398650917111088383730840642462745361559628023336834708274177008810720997864503236483231424256182008792514317978767120858313922250278919795149943234196749501590214648800764097687555634887106709926715156050968991302040120816446887836448112221991715147755412747643904982369941874903"), + T("-0.58869425301303541994797274551524668431807337246095715070998523760895824155086577422557656235988936714948459396658626194388329584290953541802060334893578288199017940637454710820521526799628794241448315885605593820784070904763717099063196519196389181232206959679228386773967307850125102763819453488563433855077856029436716904341327752651679433491068803177798096114777267163356371922112193539114936367793"), + T("-0.9733130134422248664781076439996325547596041902633251431309613137772871577452457011348386026771902539246123917754369011815275465953253766314483807639106238230199709503923447643159359893490066619470146552346442263259964047308322485032089683425930804181966240839058765435955921596502848477098334939721288492487750073064012585262871240814591890531382462762625592433554435697556163942273461885638661645373"), + T("-0.16558643533491417205585047942945840817444866977186231320483545168338776228411479964576268852405814440921094618356469443677441509984568603636330335278789316351077745488280059266519036588084571034766067428538242876359850813716345435707699637862360396048950400623443566517903264884891653913736982243815926409161441171926621253221896245282532431364608500284511449412428102071793828094632271947929662322388"), + T("0.84498980323075860897972946021725417020274887656496755152613838764676035268791649188464914202966471633575987923264828416390016799882223646789601058107569902148674040269544868920695600748107986559656481124234185704814218734471348170295455557819067840791831040541198080087226424277346298230729678145499808600603861335243905613388932855271426976928024047466289393683437131604292988966125504076029384924023"), + T("0.82042150034016416806875390736702748196355225785028360060677365666061470851725327317484829164156996988612675463903575414696300136809557656769505171924327821177877208936984569326071873868949719900334446867163962763207795935703399610925921076634415348400788763860462929861356452609306026119961919669078311635349472648728526901263549622576885884996291919276608766907523487313088490283878962209939268414829"), + T("-0.20919424161231759292985627465559155127857466748292444765172341549043455435483356353779261807927572689301399184910446505295185314912207254913673684840121644950196263845525205209069485089301207501133253448764073025457512071224229423661258059212569761388984180893967120131886763302041343297149817612448231084051035085349821477062216670975268069118975416132488618059227673886548754511524393205260913936737"), + T("-0.98253910729963647217200550710547625178905758256820276353400539681385849046526414570850258127380376793100401827298985862391604692170961399606758739415403392939490853364686526772514484164160895334184339538751098251139449063960873514450954179656572162689800220524835985551929362412800974236601606988593425142227646314150034874268224737812934754054739495109549178354735648685843025309695149000523043036256"), + T("-0.55223631972553454320768877543021740444770413956059533654445613814866273197657606242587941011620967135302125178080188557790223181274132635479848516001166956056684169152368919096181559634794365697929692462933846221564253699877634144325144847224182437654513501600352945517055120350460290761483324902471273182702037419675899405714185903257727806710137118071603904368311406545920382236241507802254402670342"), + T("0.55457689409530213747356287041164249845415987873946462511683197174099773035991522752407571732843646308149750048541683187925931560402799808039721796055589991969835698977651564881904161899499528485305192774993355886674471830577982958725011962505578939702283684004757222629888058039297509802651204034056785648094344956773393289641899074853933663408784777126564054915893792740950321751681666900366149285673"), + T("0.98201238933821398742743268689921357999177043645192920595050426161233644052306998773405192706007122833665193511424723001758553674874382453729473736698967318043174263178305116522678701572642644955125046307737685013720369337168716304062292912089093170603176088603092541579085189475146906948455044376044742840712066206800020164347462069250277677754185339937853236236760620498554396625100570743064458561012"), + T("0.20644548078966172278108566693593446671066500009311131547131824408615418778824039740776494907158941999700112622969927991803006352755440587105827687343678969660134349201419765578964725001619127224358098018507197217477518476424879393188273937853474771810828977229876872752634362284867524335876537185168202058991502610059394227279455590213187025513498301701182162411129861291651458149809232765920694382718"), + T("-0.82202496781424117249008335037366444394838277287311909893953311783617946236226559994208529824007840086283951031540156850110406585677216210109663411850204100009480981960066776312830296812837514885788767571642502602406668355250521717143900938155040050319876970346676468728877434985446025106390443319201723689927608809502112038908318173339375177994594042306023859374748187782138324203679569236625767697521"), + T("-0.84348366891508115788160933441645221250048198837137321279789763092610185698937735368600669544368356295269809174537295606389343383737539420322987993567260099654804618392548221004269952154930593772246006464043499864133979093900482916664339574929175866269202056532433888199203357312856354292159018595451908698245799015703256761432875415473819767251067057623850803832618933566752146583252515995117479236918"), + T("0.16835709980798731779763364790367408966536862842255885422223099514294148991190930841731427782587704016811168224144233724867667772646548196695213703654087451353235456862964457399533377933177974811857965890770102023474800434793450796708363928962489727300887984685066126963778396606401313473669144644834322766129500826515170674439623002622166198644072962305451561242924295496497673865817996583336572441598"), + T("0.97395403906078050869854812754010898778588110998510216999024129038738667688293411233247507547660433481826378554022069634273248636871268889943206657893365085495908990103953837221918076997320773016743323042411543366853067308772133354882422005996025272628299293665330139411017152702226907842064909056524954416279212381635918809975293849765789208374484279614272702262407912547006420026381898882431367705053"), + T("0.58642035909386951523768726695456120016000621264121118748335087467285913667949995440747093529938553592801111543797937432739099086039685347738175389472878030459744416755494430838140051041697426054654163206937572434284771573711696435479889701764370159398277764008561691680023659946126461221466012782190610630337123139316903479632261164136029483310671081582686512548571027968589672841130517258821548718323"), + T("-0.51950049121984044339738214491377557901625353846688754076530639315973808266367537549984077340395292997735469833961726139018356328562746542110713036413300858234570352248446585277165262617881845994831334396201052962253340345385732694479841227791272253515875849614421139763193705915213364104134129815431668002845745090121741132063335533091373430722704456843140034973756911786188684117004466722017726632522"), + T("-0.98901354618029602175090175847463473510249349724827992487552201591187355027688868967642510244298626184812677555619430672681773746616625955520405639182509666726561394718194458471759810888548201804764323767747429110609233156664896859247358618600160567275441201363464883016296014653448896069217108492576553919644561112490398174029484186504656523262450502010870102764110481052688040511085868232105814711948"), + T("-0.24694751481270393816989455015331965599577990782082974819820952118012926923238759680307705708664260650582713915549160371243741339970969856458066110960284501686263922529370992689985210394245398556897269198908375140963677715274995382713675198405319566885196239063678630261988218491689541221423165343153282194748383394932208400962140245741297801785867823531750497892155090643962052920864620306068640533502"), + T("0.79763858366953481259714957489398094215522640329181266031581650731842869736147648450595884906779088504877531298007549709584387968778149220989565106227234119514920955857261247662051707093671536949960734074547532698822613207712655346154633044042812601716529880175764244503721748663711634053406295594334950958339944104852233364538438677862264102037879639671893945361353871735018017912124896762688051071101"), + T("0.86508717968306725270818735916557777730599862881751831435316187689198923993283521790498932671735565487198406771220725516598383731877859238387113868142949869746710189966430151098818077220502499366007854414799684058332411166897077090145203892212195332779437567412064793775991386725873517928401298446944183864288115967332769329141686571538486980106767058872245206155998183801127952563209302584516809804068"), + }}; + + T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + + boost::uintmax_t max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + T val = sin(euler_gamma * ((100 * k) - 5000)); + T e = (data[k] == 0) ? T(ceil(fabs((val - data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon())); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + val = sin(-euler_gamma * ((100 * k) - 5000)); + e = (data[k] == 0) ? T(ceil(fabs((val + data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val + data[k]) / -data[k]) / std::numeric_limits::epsilon())); + err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 5000000000); + + static const boost::array small_data = + {{ + T("0.010890646307437399028563191160252839599929232814970922208664909237494716181484215717644776933044418903207919912063594159099133490979634344811936925144447725948305353257042599564404885434349760121009797816724142318243738364307036155852011004353462651092012819894667485840322627440332163428546845499107471983896711023161969130462687924045508477090891879273259947713367290982391204265694893491531721581439"), + T("0.029754394000520972141380267705677256353702996169858414168445272181777338962866552847084800544086743338130195210005002660881957584567978770485056322086472328896988088721899728258224129935989180857437073412730903070983582129359565450458299328041955729258476583848159389714290107649243089149974776893563078190705561325124542669960182002956940545214147678093802442811362846262655415145897575707676223535749"), + T("0.04860754948595027759689273751438643634234576398271158524070718139962965653841137425728738193533514318422431877217110239554743968609870039776938201724688048349972662394084789924867267405853696017478160702683117974766657840965270625814482422398422216605490620054574252910928068433847115132429726072853170339113804838625536981361490008602432476302086066307320875870985443111858828925332085101376920451257"), + T("0.067443401266329792365583268418977022587089806595860818790246293104463576184436096833111903064801552379988362224633198052490234517656318474005568709048710308123967082103235230201516378834855764348740505470176912466587139988300259624310153055247378188811239571439869254255368050758213303082097176168650573121101094016896349982672715603054645687782535250201448606757920212668324401846105554332382154705308"), + T("0.086255244004175604199645786226683865650130764638142939010554245919172299560583634262067769465886944689883333394099120765964771092069938753689253686543017871063587988437235057514131760587649504670117933814486942187589706655157340717185354058186603027300571692666150552274324933749082047517987509942119060274537912867956274549119040817359639741746006374702951412541338483858389306953539029174581171144916"), + T("0.10503638090893519164596691292161072193010174143933600597680115817738720676321226654184308409972393036413684625874294713490753271261380987552528236660688624108474124469034444076627315674234385578608111398112242272762722849083801773818689342174907858373883192220827687618321085007917387951532673599267211035785307947515638810735621964273183425401191468313574763898720597251843424536611952986478638938787"), + T("0.12378012612096459891996422671239906394195356627713556749926735466337892925173796651675302282473738808218327028589606894825728784823540605065317506645900565980161901287116410208049542818796994171203890952761651470187834173644651508025088970034800067245131759655003164127161058084682831906406941473650395873577925901419536540828468001386512234321890242266327761400155849351025221609783793228816606096155"), + T("0.14247980709161433833827358255114404185333478069639957369769805221957506649654851981837061160249376538785737485777248817812720592537597263252706422066438137522011148566625861552209380620325080441618503257506798981598559897331754555335688284111417797211888381141445522536739542765207936516297907076923899840216864191777039028622886076254231994264908278499537587536902686114072117102531777746791366147472"), + T("0.16112876695857673825462942280040873226725445145336882995544646098546697397681955191516861690559627281570477802647683153249828731761062718487424104325152088763220776831248566486363299448443795266104568555186977695939803420793575204146124697832793773870449082377964029658283741910741804550762511379894890589132658450368609377005630322641674351408014813725947288936865021810537922503050280596331958949813"), + T("0.17972036691564914131189073707203611766536704952071818203835281740755093560444625679032703078557333645546302532200674729781663838075105196332695024246509042831095553050804767663788014113177991938252225120228302734228632787082072480689719322299247090887229731260135165819595797392665106642595359433094386743214852929965104946276195924300495453775467378376551444126292108291215861133471208854009513721707"), + T("0.19824798857606934571352609051549058593435535174283382080060738672122306773474119459815363636791069253463660528114022041674780565798655265640072669329819802234483545444085426470661233958030668844326674768815456315879868376252722369574694411591080512527683145774214215193268992508938562109669843137270238454905091555179756374512457742554641355319960601765568460966738628365652972463731882673979926092423"), + T("0.2167050363285819704223187876642169717474346025766606244643176750460657731203611217470241676182041675112171974414875203007374497968642376196256262296063879827128970901451226217571636202438144440234868076467587220541438440149682254317134405302648426790500751310485432990930185087578150399032543990173811106465656404530116032387260432178319507278340110997943206401370789106214680733463126804159766688178"), + T("0.23508493968539701289801441539326267060915175918342580386836036980227948313782327655061004506711767031388143537081826986030990557707922203603349984851809173788402101756510017046639631528282698404857654444279509591873678208318484036337040837844539190863615310872984455261973647897667843302241773795592355085118273592671348602240382153223466391512738221253451636183066773121830262978729780866153048605159"), + T("0.2533811556212047542679161173582151227103672187769971543582388259784795155332622779547839459016647290250036005712168909799523370471647322112833886051217950625710683025675691585734514265087749450457714578451290681140064635291501640395753290532318406110106892218388811781561305402570000283806458134435822529043797962340420841850011846648265787470508569124672250211852546600514370101687713861131209463861"), + T("0.27158717090241435065755609312085387589073221253701701142877476904254125053252466469600403650634482409879186635717002370089097070045821182432642232618427944489732133359996899812980722107011126957850576210476679069162561257167921627603536603943342268770727524690332400255408587654094512383349857596775777725888982277559281982571487656535560758087235441872907962373375423740325723506626374882319859924962"), + T("0.28969650440578692965912855479777150523900698183973110358010443581781966348171378962307935462457921708108325003566673849851640304571019200113280406744551445148200341554501141174444530008329262826786160080931309057528673711507934822659456861163197618813727062179453555460400169858233923358238607875306523866767536243361049306545596678120228677505849040202788510059415993219975440657979707947898632705847"), + T("0.30770270942563778634443222550824378057595253208974144909939396933701715445493088586920897452838893301853350676955400357197838773823140696209649573828382477454711986806154497998912926265388494228459988323524548750870702083339285969468391846533348589851520262990720843670148790211009236063622194282315540801467216625666505663699480592080398449845511909092071640909885054719301078547683325662349532658001"), + T("0.32559937596878634249263192973385963275552570142977727375619908690982968889531407133936548327912894149757305868454394002531385820341045863161146695151908269553629121372700695833373968533510661265854738947940689721812230819575490874211279007289828369964583273676393398981064015459284982970048174649094549631109312941188691838118955683939990881732219088392629316401227525790752712758279892546851835776728"), + T("0.34338013303643689435259984865624959352259286039436985939426483729323987764837568376066164703227630278807584950278626035763399164177429894322425866236150336898079573258157833074772287354310049676029566569737995054499018518699450946056626536479822852758163848528920078247789349605898976290484284018984355696648190967701849464571286257873661615051036433297599097073117151941857301740816310919312668936753"), + T("0.36103865089217782674224266392907326208964452822379102503439414768728197653534265911503054023760783622236800804794470785631737993143180071550223728801984904852623160397230839644629077782630949486339104760008566935013234195735777070582106661423219379374522941522832331186147905332977726043795737008218909226025962294880541867964419424128310806148008435847967256901208159302482322730929744194185143496647"), + T("0.37856864331529191294683302986737462527422720295203122486985051910813389831630458742420433021640718832999264813674938157273375290592788753133996741859965258034273428657399863159488519434113093863042179261649202584979828347495161391780592433454809420632605178105958049630938532568156789806946629309375790343585791884755866400295470651281289167454617624179556306285775538273640784278475358303871406797294"), + T("0.3959638698385755489557710011250921602780605301308457595569865098132061251227321128681128349835212212508810246299921462519655630208347321575504292305860152320513799100372630595769065936291506594220617567642210250680560302662459931036815131767702563357378794733903424219866581554015722958062178902473414883933807190920961687912191470152974845756609418554739641361171541363409996648143043979357302190703"), + T("0.41321813796987028521091431473013916161596830805293649687424341688961507413716621591649879163383882641673238540682782626959358955002216003316726344623613626809950993449214457071292961126188761860214007662067345193545393653191742497646193189677890657992964660139924463087072704096969748995358605459064076775540679952182100013584273877612509536257834358450242426357122974687246428904315337788603554112487"), + T("0.43032530539651581726649227346608528709372859200683817125277384462849187532000288969537766724897319030479860713591459932866508254904869456423088312945970943686450425589907227275358186473310644458353392107693439475272544181726520566221333846008220008702070460626739342310039148106649726719665728169819714333172605016313499067227953767878741853545763313707499816244740855778447731454065384788859848319503"), + T("0.44727928217193967651655712666040617006236300257644793444619887007723922383970962870988815495150987337761018019128790177957898245520422485269324604484642139354461290347689315448558082058132330317789105861674569680430563377440355102600184370927625450804550114009478901349833826102470780452480255838220723171955252412104006070322080932915859579006653276371401264439817338080069936810866666557553662506811"), + T("0.46407403288360522126660904671571257203469668709200603873826642103612288853249598361813813213381052968904786566929537791978751985511297321991996818974870946807510786919602279514706154473236597480481149516597293844121405001964448599792635426082163120478756812832932606227610137817312140031064078333902425335570730565173883252754294319888872518149175050583958244086010074110878967984441526026195572046031"), + T("0.48070357880154616464768530714893198018226307768872832018696934136162055774617690112915494983829868655926209174893609677823844628976682666861087174925649829592164380174433963170047900751735818142724368678683601091750819984658303806035572915499999180599872513173096429390456178642478189724903758698238722978406369084171804020040246631229610021517925007543961283845124822740019511921386188934760298241688"), + T("0.49716200000672278683141570737786924159326600032981923078600441023882683095816876734389429898823686013764499093454507915253215528870989821318738227798745591597923864925733083640574132559603114206682739488541451077277291582357627881380008066440685837422009543184722898767087492264154499861112499590934108906196324393034778681622285346845867860458748417916763883649390228287689107774312170267691257606116"), + T("0.51344343749844216224309565441486087365890516381683759696704839526386373494321578458551193514743669178342420835082611868891019193801223760604220552152028015878259509179672236586872004169442377393342941368136686044214656339879518691219516228434732537186028321245942076903928921929607502848888640267094590400556200402256089794954485061564115688273804254406706725374971267431122825004095102239220991848356"), + T("0.52954209528009218542956877037980380998240467111773187487177084701668417706002935457309027480414979338624119758863233287969233845786459113619958146654397106933375312089626001011352424174223416515118670901639015699899005014886945323983797633471828049323917701068414699189471811508040323789047713536270617216249222074877291822920747392986535291960399633972613345908694327479738445245500914715996152461985"), + T("0.54545224242244689926647810432697721723945987179773365856990386707254353534614807468692870318816991084937065603191754270239773531928848863926268254420020634174904439920465735399587679402503040251639815041072160696029528969373711375024524059535996077596844557011786411865071706766713049961515353664484996577751962474564968659755104983468313555304855249829815310291744255989014492588353749587481644931913"), + T("0.56116821510380861353700162760755101727268623115746212675907859515911800480855365905235006799852352328451502804871577600277181740574994973635138803211912076695967558806493981733454148905054449991651227073996616835900542604367257843601995979944175684600136575098939764120745952964355353589317556067474680987527548079297833539998258342242865222215681747969549869015697939554127499557081626950060916329896"), + T("0.57668441862626054773920164705882295031880435874490231795930393597704964539534854834250638055542815083463738683146430082379073149079998953871974990605030531115748567904948229002538680465351816034414085890696196467615521969543006224204433997063527288514443404935419253943724579872472854300703798475966107579038880496698051818375532546368197809806544115496171522444187250876233927302975709248591908972346"), + T("0.59199532940731223634617420193837196766186356068263223313261061480558639436412180991021350240470913092271149633483820904350945127229180169976070379470147429711011056203078210298313829635000565303787641997857930629432231274870246836108452732993007541125359738273485061324228778750531830069944570036169084871305329515261365955383178502917713214334808810726412625844210978481512366368025275438632291862785"), + T("0.60709549694622869462483067245797028399468956070763942538530335526853282815406226053099893555611232739741099281199863420254333016184720313024881100010161759837083928797224725640021095785125988238992410296927225409984765886863313873892022531648958451940083661715815760806237878803609330649695132473889046508160482887768573723088361332267243452286610176948724186843039692112797106039213976473403724518188"), + T("0.62197954576434335539696684219824327976988998993669475584026026679831221725774460365328908947620452777457191790806959938899059379387140391128845696987642418506611453321626607869801717870254836897328796165084605948086983949944714226464644755644542238083403302661596239269476252222614109836597348873471190787660391585694078779921390758232910639208518119325492789999941075221166054973249356136808607130253"), + T("0.6366421773186640485920116318191204083389644098160828009666722635549477083039305904975813615643101060893999315509501318081025137289051787335454356108133761354485193083183997634369795655283340428506642872565827559825155045924936470784378552800563136355526499002558162019410271880717338646318471375684163442601830537613691628498474632262547856029932241457937391840960919415488213025664314613747543749464"), + T("0.65107817188809080279752785471799265973958362274943758073000075578938519480042543196041314945170036193559782763524413154927612489597355144799562963417455961310886431794132437757357185377007718709790504976900339191552944965308823754898079933186431693664015814010551367365293786806527034958873669211570906132849013497458819941168651227792824572805777219160376304646562062564773441718051418178414899683019"), + T("0.6652823904315739978766556052897347198651017349760138699519597733553278561013395851136458951983261597283585391502588949649092379467069209284755289821255744166256794329589771465045421874634188329764638118238723545310838064785644468083837991172367935880462068347034222894524074808990476036821633127927532229213401486467496527893691588255513769781016943243185567913995336109327864083859254466073492381187"), + T("0.67924977641755138662041086036801948989088186294785002709809874961811116536667286127777672928127306388394020078452402417993836722984523906631302047812425809759286220237826357465064765092612104224837992075711035615650942777454297235908308024053950635657488001916036801234116581671119069849133344664024677517075723660642709275823456343659009540444032487248071553674961012055521740306092600444870718199652"), + T("0.69297535762401272778114932738244728669670875114228232862389083194872888693112134130021641463393969624412179768291914405554577080353247136859984307940401373940521815913274464950964347624918449081645304540343160683388727015489772202472645406318288749244334156857814927405528763108558137488794292057315715995191324964500528600378291562277858608403425720078390497455476055579003286296442406491998525563297"), + T("0.70645424790855122905182233963742667718470686911515869065744744473731249895412640632516625097411541437953942564566468313798077366853928608154168668667806938130662439220702019172328936889436324187304262248463334787504456805683070026006307765178787997020889111556678907849442591478755800698808480163225125777511828352357189284217101098738405458071150544253514248561787426067001460586251699075230390564367"), + T("0.71968164894777168289159927814596788937422432901416956306230349431557362414856173295064125294878325237342190029914430775648665560145040598898117000971783978541799092281781000633902779626437866517288284324732827083065703448279654800632624171861777710582293639879819116932680545313562525074940809403693475624332169458744562386580074420532959714281903926902622613852892104465683714186704831143197300465955"), + T("0.73265285194543608674851404628602868786755398311878599262050209465658337331457767882450516660833910207846986678480603058221329185506983962144302950162737505562091432645466997334653618075359372680522922578429510783107155224742867979206003853893418268095936450823867623873015528453108944563276576646508412198497923383466470895808777876544429706485835161864475122029711660543090876323595451165397047981956"), + T("0.74536323930873866831066285008063416514858255428941319323031554151661731879818806472410911187787504167842137286019020264008471692607030872105020489874402631524823767448432915438225335869622093354538021006314536198469136634364850042715775621307965524560308901397550829610851125072518884822515926626213581949190024268711827023522012804341871590177804438418738255381261594827085100659777173578154500251787"), + T("0.75780828629211358196731753685850074775187628883294491833833279769413437275246840580617185041212744084038976069700142887035937511309419495512390089087847775651833369173386038513330257480188204696687136231267595399438343156895032682495327740328291738325217778497473260463740600852973600297913238958828132336080624048815574113414592522918778477418427876829087439774857073733879539765547872800792711360592"), + T("0.76998356260799010064124325420889481428942836988785464918451704687709959533402569414853910266075223008145347866420469852220997470992987183595134711278161994827010482478666523199914707457365681979989417199177427808129308850228595726632468139527316915481709465938257650120793934685421343443942356060396291075752713480402305699120964704579260218579751719693291565685728074939857101460901984240449471777639"), + T("0.78188473400392189344901888012886357289691591193533323711550248487573232160560048524966536928562079994581390209192526509899176077393862245482807165569409036943146775931090958041945317489351020506180957959482939768275851398130892970557450783138983566392455270904228057175489097967314871299150832712632639718878702471658606369540854496281803565819545728647765960328269135853132407415684491934581417388002"), + T("0.79350756380552895006859336306152006552993066088382163294295016384877329185292344719536879395060919553184640006473875955257330264813115929942877156894433233876161573894628944452740080653935089289153173836334040374431360850336851424574668632837338016740333716530963434291489645017931035529052587483629111178971917421121398732580060101294617212337648611654041575132820234403350225337355214099696493406567"), + T("0.80484791442470288298134387731514331459831415420391927496917008531718727007136925375073869996549995938671025493755987802316807560672754205522916341547950527416285009447065632296220924964603370109747266700136618832767813938243784759073035555035361911772169687111972294262096081393656654067512785827139608367560009298721819281091010743363153063005841441400130721362346287552727162527118465104052539630019"), + T("0.81590174883253870457705586780548750833668862852238889952372206236774966573191832400412494946116015154305873210759963247859431688393192829248700535837612167242633896627292821666890819736549652534738107012873094812825219601489880060491958385552979476621004236099490018887651186347086675381603801017940808290855340870383683075409122477045713172106217670870448929077822708030574128623585863036730829850118"), + }}; + + max_err = 0; + for(unsigned k = 0; k < small_data.size(); k++) + { + static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + T val = sin((euler_gamma + k) / 53); + T e = (small_data[k] == 0) ? T(ceil(fabs((val - small_data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - small_data[k]) / small_data[k]) / std::numeric_limits::epsilon())); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + val = sin(-(euler_gamma + k) / 53); + e = (small_data[k] == 0) ? T(ceil(fabs((val + small_data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val + small_data[k]) / -small_data[k]) / std::numeric_limits::epsilon())); + err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 20); + + + // + // Test with some exact binary values as input - this tests our code + // rather than the test data: + // + static const boost::array, 7> exact_data = + {{ + {{ 0.5, "0.479425538604203000273287935215571388081803367940600675188616613125535000287814832209631274684348269086132091084505717418" }}, + {{ 0.25, "0.247403959254522929596848704849389195893390980386965810676544830494398136043486821690984848527973792338327197752176516138" }}, + {{0.75, "0.681638760023334166733241952779893935338382394659229909213625262151100388887003782753145274849781911981438190343146876189" }}, + {{std::ldexp(1.0, -20), "9.53674316406105439710335272649306549801506698739838753888815787489707114648106832493113326022411646219016312547902694921e-7" }}, + {{ 2, "0.909297426825681695396019865911744842702254971447890268378973011530967301540783544620126688924959380309967896742399486261" }}, + {{ 5, "-0.958924274663138468893154406155993973352461543964601778131672454235102558086559603076995955429532866596530638461663378937" }}, + {{ 10, "-0.544021110889369813404747661851377281683643012916223891574184012616757209640493425707075673894983216158293824238262832286" }} + }}; + max_err = 0; + for(unsigned k = 0; k < exact_data.size(); k++) + { + T val = sin(exact_data[k][0]); + T e = (exact_data[k][1] == 0) ? T(ceil(fabs((val - exact_data[k][1]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 20); + + T half_pi = "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"; + + BOOST_TEST(sin(T(0)) == 0); + BOOST_TEST(sin(half_pi) == 1); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + From 636fdc2e5db2ba17f4dd4266e5cf7230e268dded Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 20 Oct 2011 18:16:46 +0000 Subject: [PATCH 037/256] Tidy up the tests with boilerplate relative error calculation. Fix eval_ldexp for mpf_t. Fix power and log calculations. Add acos. Get all the tests passing. [SVN r75070] --- .../multiprecision/detail/functions/pow.hpp | 10 +- .../multiprecision/detail/functions/trig.hpp | 39 +++- include/boost/multiprecision/gmp.hpp | 2 + test/Jamfile.v2 | 16 ++ test/test_acos.cpp | 106 +++++++++ test/test_asin.cpp | 9 +- test/test_cos.cpp | 211 ++++++++--------- test/test_cosh.cpp | 5 +- test/test_exp.cpp | 154 ++++++++----- test/test_log.cpp | 9 +- test/test_pow.cpp | 7 +- test/test_sin.cpp | 213 +++++++++--------- test/test_sinh.cpp | 5 +- test/test_tanh.cpp | 5 +- 14 files changed, 506 insertions(+), 285 deletions(-) create mode 100644 test/test_acos.cpp diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index cc6b2489..a2e75f4c 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -120,7 +120,7 @@ void hyp0F0(T& H0F0, const T& x) multiply(x_pow_n_div_n_fact, x); divide(x_pow_n_div_n_fact, n); add(H0F0, x_pow_n_div_n_fact); - bool neg = get_sign(x_pow_n_div_n_fact); + bool neg = get_sign(x_pow_n_div_n_fact) < 0; if(neg) x_pow_n_div_n_fact.negate(); if(lim.compare(x_pow_n_div_n_fact) > 0) @@ -164,7 +164,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) T term, part; // Series expansion of hyperg_1f0(a; ; x). - for(n = 2; n < 1000; n++) + for(n = 2; n < std::numeric_limits >::digits + 10; n++) { multiply(x_pow_n_div_n_fact, x); divide(x_pow_n_div_n_fact, n); @@ -174,10 +174,10 @@ void hyp1F0(T& H1F0, const T& a, const T& x) add(H1F0, term); if(get_sign(term) < 0) term.negate(); - if(lim.compare(term) < 0) + if(lim.compare(term) >= 0) break; } - if(n >= 1000) + if(n >= std::numeric_limits >::digits + 10) throw std::runtime_error("H1F0 failed to converge"); } @@ -461,7 +461,7 @@ inline void eval_pow(T& result, const T& x, const T& a) return; } - if((get_sign(x) > 0) && (x.compare(fp_type(0.1)) > 0) && (x.compare(fp_type(0.9)) < 0)) + if((get_sign(x) > 0) && (x.compare(fp_type(0.5)) >= 0) && (x.compare(fp_type(0.9)) < 0)) { if(a.compare(fp_type(1e-5f)) <= 0) { diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index e770e4cd..412d7ed0 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -468,8 +468,6 @@ void eval_asin(T& result, const T& x) t2 = fp_type(1.5f); hyp2F1(result, t1, t1, t2, xx); multiply(result, x); - if(b_neg) - result.negate(); return; } else if(xx.compare(fp_type(1 - 1e-4f)) > 0) @@ -521,4 +519,41 @@ void eval_asin(T& result, const T& x) result.negate(); } +template +inline void eval_acos(T& result, const T& x) +{ + typedef typename boost::multiprecision::detail::canonical::type ui_type; + + switch(eval_fpclassify(x)) + { + case FP_NAN: + case FP_INFINITE: + result = std::numeric_limits >::quiet_NaN().backend(); + return; + case FP_ZERO: + result = get_constant_pi(); + eval_ldexp(result, result, -1); // divide by two. + return; + } + + eval_abs(result, x); + int c = result.compare(ui_type(1)); + + if(c > 0) + { + result = std::numeric_limits >::quiet_NaN().backend(); + return; + } + else if(c == 0) + { + result = ui_type(0); + return; + } + + eval_asin(result, x); + T t; + eval_ldexp(t, get_constant_pi(), -1); + subtract(result, t); + result.negate(); +} diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 7aab73ab..8da15ee7 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -673,6 +673,8 @@ inline void eval_ldexp(gmp_real& result, const gmp_real& val mpf_mul_2exp(result.data(), val.data(), e); else if(e < 0) mpf_div_2exp(result.data(), val.data(), -e); + else + result = val; } template inline void eval_frexp(gmp_real& result, const gmp_real& val, int* e) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index dbcfbe61..29edef2a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -331,3 +331,19 @@ run test_asin.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_asin_mpfr_50 ; +run test_acos.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF50 + [ check-target-builds ../config//has_gmp : : no ] + : test_acos_mpf50 ; + +run test_acos.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_acos_mpfr_50 ; + diff --git a/test/test_acos.cpp b/test/test_acos.cpp new file mode 100644 index 00000000..eea8e1fc --- /dev/null +++ b/test/test_acos.cpp @@ -0,0 +1,106 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include +#include "test.hpp" + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +void test() +{ + // + // Test with some exact binary values as input - this tests our code + // rather than the test data: + // + static const boost::array, 13> exact_data = + {{ + {{ 0.5, "1.04719755119659774615421446109316762806572313312503527365831486410260546876206966620934494178070568932738269550442743555" }}, + {{ 0.25, "1.31811607165281796574566425464604046984639096659071471685354851741333314266208327690226867044304393238598144034722708676" }}, + {{0.75, "0.722734247813415611178377352641333362025218486424440267626754132583707381914630264964827610939101303690078815991333621490" }}, + {{1 - std::ldexp(1.0, -20), "0.00138106804176241718210883847756746694048570648553426714212025111150044290934710742282266738617709904634187850607042604204" }}, + {{std::ldexp(1.0, -20), "1.57079537312058021283676140197495835299636605165647561806789944133748780804448843729970624018104090863783682329820313127" }}, + {{1, "0" }}, + + {{0, "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332" }}, + + {{ -0.5, "2.09439510239319549230842892218633525613144626625007054731662972820521093752413933241868988356141137865476539100885487110" }}, + {{ -0.25, "1.82347658193697527271697912863346241435077843278439110412139607489448326362412572172576615489907313559616664616605521989" }}, + {{-0.75, "2.41885840577637762728426603063816952217195091295066555334819045972410902437157873366320721440301576429206927052194868516" }}, + {{-1 + std::ldexp(1.0, -20), "3.14021158554803082128053454480193541725668369288957155383282434119631596337686189120521215795593996893580620800721188061" }}, + {{-std::ldexp(1.0, -20), "1.57079728046921302562588198130454453120080334771863020290704515097032859824172056132832858516107615934431126321507917538" }}, + {{-1, "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230665" }}, + }}; + T half_pi = "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"; + unsigned max_err = 0; + for(unsigned k = 0; k < exact_data.size(); k++) + { + T val = acos(exact_data[k][0]); + T e = relative_error(val, exact_data[k][1]); + unsigned err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 20); + BOOST_TEST(asin(T(0)) == 0); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 6f1c8768..aff5d824 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -59,15 +60,19 @@ void test() for(unsigned k = 0; k < exact_data.size(); k++) { T val = asin(exact_data[k][0]); - T e = (exact_data[k][1] == 0) ? T(ceil(fabs((val - exact_data[k][1]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + T e = relative_error(val, exact_data[k][1]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = asin(-exact_data[k][0]); - e = T(ceil(fabs((val + exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + e = relative_error(val, T(-exact_data[k][1])); err = e.template convert_to(); if(err > max_err) + { + std::cout << val << std::endl; + std::cout << -exact_data[k][0] << std::endl; max_err = err; + } } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 20); diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 419f18b0..1eb36acf 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -44,107 +45,107 @@ void test() { static const boost::array data = {{ - T("-0.50162154214905535006507934761566421365808962336874567677926739022768858180703782104157334491773507690211622144412751863172893119122904872120863946237533655183100979972269651012785895305465091942482860884709266947899655662267052604131701946158941092922207257375120965677001058006645609151579188243577188192831765423148813895489546306047297711022539509473462404019089733447430114238267379980532396311664"), - T("0.60313571428133694309325113655636540756247392441681227046917143280974317371916820972719995253248954425492897594051861535050840463205496306256237562726891289696301688567930026444972968333329934552460084325207412884738539384203738886072440013640125030433738691853586812704775040754220545555524237855361445575868855139945713834823411715711428213828850093318644478373792898000948569667301322178250159228606"), - T("0.96902885660223213449832417965462288346382027027907788639786102888188268413128284808786908788351970794814191573322198094839000459295090920127430762740525901384778314480815531039485728089512489227948630012091333107823627672161756650613535363845597750943844039360212709462602480040358932164638277463645635101178868520058961493135889052671922314786442189473233561252419424865659925386520422456933994031412"), - T("0.14782491492260520954264860310453392894688582499520847868449990765772811594316839506757584243129175527745236732059643506743012867347391315093605558463510078020864683057368198129858823908327097108583620570511151521896111105026538667326749527786043478669088587777236123716686756088055458828079103458534402182273835161066708126746360741813126817035007484464329141515901214558732724557437706092450180726378"), - T("-0.85447015139344948471094821054366626768019606763269341666053644333072070840260166961763856973284893831954425042860099172316086950440334996806598196522184690224018944138578542327045770832471332376269716674841615467614625539483750018876502303839670098606230317226296309325404589665701938190004997832683948796843166639576625281030300467522347494569768687089899397360725496800596493559470637547748735594697"), - T("-0.81000689036588888102398287378618104836450574863713892332248232301021899106208419137911694670935600210389307190348154033680700645928539580731142634010602466147128679656911798991740456705453963764056901956423046807435258488930954638670002070774439646670450724500520094586192645160847046520311570082832431061691996839606591067443335185302732221888316818825870721496315105401624866741940813589284275695918"), - T("0.2267455177003321384894005667464998092097833850092894238480831378466683827110057043871346060005709235569800215748516185659827893723700508589640891976972716570403665692613477548038629552153079218542242417184271182264022470709072429310981387965885388758575814101891100826647083444934684812292662215448102626341015149572372707444725994248777658076421636637760492982947444020394182326376291158696727384852"), - T("0.98572607094681400469823142383450564975177916157871840422129452719452525174019803417354200370408054482797693621385765351670173144053171524005535725427317409189868483686977845578192854125777358818593005952568285102554187813023457756929121023181880198348203083841375515867843145321766318476866476607321938993078073105088587752971311300418067382395754489252201424628686354714684325074264340586434068083735"), - T("0.53715481965030691887397316962489853948341836449029599646266321884877186476498260019355874856809552188645630606126976563119123530724283602396484950653123503399938294688332329634386257314146589125825636097592371320563696604271190825947497633567945681092924620382686009619110102110209885034787176755762448527267043281608584015012767667899712762371285806841811102653584612955459666723163160014123341963671"), - T("-0.56945144858011886915780505911780725010620323062276283805115420871306570794972703588425077520601752861293077323301792800610549113139402646104081762175534061087117946244152125287975953108704696268847815261917377065241801643783329354778399526877290332215236634903080639679860355847620563822363712579548641527844739938293967364597110377469773489014211951212857101374318452911401420528677259991331090266005"), - T("-0.97845810511310366097345864112668906661089075307983663561178996977421991305045684012227818895513901547325249161241097295038349597373820690088476031256136981855438584632935895625291791741570973153071536443895825053372019222244541345181800559983327493395843212471107951435623879503589116197386166395270332969985628390518342285544128149350904869144760786557644083102040293619728857795557725975446387638082"), - T("-0.18881649076882036818094718893825891946691295900905829577570255489597056088743777799436529545269699011594065157007321752198038423373390670103253610646983030773571922979273600163598344653044825786274322207994738104766932351285365246017952816761886637102290439956065197679903357501267350062489863581450400525901254917975058272557102311416424438039867176899411547343130655797011597302924818642795986910776"), - T("0.83213248256248718391648282211236200464150938178343837417522635579213705328552770623957486792338755433958256100224720251839082676782210674078979903328623897712870422600430978907177584667709552233768475968506874004560085480509103334782228549116928850495590090914133655583767781543886956699592465303315591578411513564172526903206600594554996369316967222569167592338646796759203865876228192676690576393957"), - T("0.83368761966098380317914918853127190012005517198095141616372457983351189700156411681039093358761555771758536229588242982647239744187242300801829995961871412772468923394414109025642424234703592018655517051393077978860068845984020869413624371103031896740117407710299198562267502869147100200858539656754317575041431701939759759225389946719106478332366708137354276007919533255169664638235639383569564110075"), - T("-0.18605618137227649584671124815631620875769157093190685600569736108086402885199167407702422320100843062616644714444408614621390574242763877642390939806307957026167805604628333909629405976831956784535026886701013223479257442178936513209253370459988519785036119662696969209506800793520534365946487576733594348627957021254017447520897947123358509837940617442852539597167693389591380189862319487892792923153"), - T("-0.97787410706912947200700947809086987929552083940545236541182287303790608208610023257624198390105132776123115664110406549669787968717953162987933260638310530750565076435745587024443942712810356372635589174338356282870564205603334997652974637518927664227105047973535688395040777968082125500061259190313820373870936866720823176265958448162090987423326403872038897090958331050185525989399368410147697601184"), - T("-0.57175918163121264025616107589630751551161205724757288681494194505248342228571881008866075970817690438186545379919710148119548771419260784258379302863349865022779589406640338106461807885184578720013258862884778613907350162349826641089246855371608494365729193629734711852175384638728815913727055118781471960575965215193534386589450370243853256890375165575818694142504618584610839931680003465519416417686"), - T("0.53478241597498682890636923119124507573138434225226478301997338705931821657049944750562391125304256759887391004338167587322019260365925435302391176930331161896818003746464685277508807805130884660314731429722219318699505836398912422599554793162364836595300619860913573673921432325981205409702897337053197706014049687225094538593517626884763534008626048851538197945922313231461994435494917556595912129444"), - T("0.98619528108436834444622772244233500550001863518169392038562682097011946713614830549103565779570404766638555367268020992254689671390965312890416679706192473068433717014095521991774567755994345709131209844512998942709582638991869821050636439257597063856249038092119512871640381123843890013812838185293393263756058350072768448458950380360337889770923256206901689904823829217396801268618019194906772703227"), - T("0.22948154144509182369415746800698328364988547396475691620681392787566104183462052622980774444304368277802870979261579895452333488316470495027443871923297117956210113575448119970237881958246782891025814249305970662163236166516394039705137544157900789683194435211763787511069822409683486532927557658412323180776903688623277362060713475574739265599518489263464320833102602215450190502358534383949241852484"), - T("-0.80835578582046670310464731711696478601773118159925609840597870029856375850957218864062941877059300809268098041286606529894870899049159003652074961379621476411176224648451902760457011220845176506086174749134555188467902316469475288975403773973857636373892326760376585744094430003550369691223550482756797212146056901318410686997010241891041855811922027651329719928389111111167862044112446757189042088046"), - T("-0.85592663170679958406515397649643131309994249316454429005131578645085757570761552251729365670632975735279522675018975575836010210249068470527194075548251441076976420496548792075626757772699437483366302008026562909787676760497709271997930485538120627136230760141137536077186130465523928404376378372203755818590534658221264961808618483334189725855704258977192100851554017405085224133570406300901634686193"), - T("0.14504509334766993343679732543237665601748015028110051986903855469561805431836897592755787294803720321294196670692675860425817019156006795472544060301573514970130737237352276407965078322598196015088783620318485742726789260216376389721616761481364286097504141935673467904417287244647363440435023754573347620436961058676078531225670052103877411944831266665091545142351559495386200504307614132116833066489"), - T("0.96833108057454018135440242001894400433450486884893467698495154667147695605198346971512860434896301677316979407715828973045999189796179033252360390253384834782428911228350312995059296512013202981214049690155973624217982618572186690629393688668380855531415343035476364485845562203330354168788849023043609092864372997506131587372974589034738683570955059234741409975711088655065542622757333229038929539614"), - T("0.60537478588662083093550030671881062835301187704838619957445140277346831579708290170559342372438997696786583564116411747796066131598667722839502247472418892060636953054544383896701697716904288008881811071365393348940494848858720140528491631498078923089892805069340832767510592701952499233084373444894649962175905154151059310656485499518493307751028032192138975110743944975104530590939205299365402172399"), - T("-0.49918857050765127165246443100830980202323621859663295606411941969457362189652587284758726475585312743864487499288977743573076640209331558808543037798473406138898808010287039327632227491127621026484760216100025745074711422052006517238053729631745694408780163847537773119573702459176085803816861008338932982744241500509585746534632592189239382341678009278118030810458222678068124752194184440160812863357"), - T("-0.99222700442041793244341637163672398376812477454144578739458582830385307501573374493329418110400264981611911650266336290704933803675752414608868505761080497715998786605323101072631863530928986865345605473152114701760347977346551445152252230086602267733482237318264916817026594817822201149718727077242483980112025554281082958570816251191650760457174817529165817706742958860474153596353298087887496342571"), - T("-0.26974974384283529407135442904911380728022891803412415907499156005666362362451160206340942887714356745930732393405178421002248875485798257350416225295845333813028470892948983232570745331205136828532696050523659085855991735781739399449780199864580413509362957674310213115088541667662139444692787904342579506007770224294439456180398644394712078670122120840185549712701180444406705582313291159418160268707"), - T("0.78318117881507218281256857540210491140619166393457160009274918850278377150347503811659906527658912201560000425062426213174077300808809107842767634667207644130246300983762258813379724135069575858579484972987736881337517572218810617863132592764984653001013079710817700332509430207238192747837232227382559069149116081099363790759716765670238049577887842168907894878101742345788299501918210802461045488336"), - T("0.87668546801298894316611272503029374001219866661666136243743380759468378098691643969637456927472038354627520673349367283367324121916949272869177620477269451717775313582362761369952753768494804335788010017359300886827719062432162897060693014847129089532263482838487347672588768501033685070780610322543843882757687187812123549700825256897742477675410408774989851342602781239821815645715958753412070397601"), - T("-0.10378317514630283035697337871092369012118223784464643078377333318832860627512487321975641507120202567300966096393096627338947655380820003149059343389474916418959764384086933825280338584080543377015355584259569741193189206873606119903440824298765910897401393832760642020478309582400187458069600297503471338694965049437285901431495005334289622152511502991672903524064211804721113695218039893263678813343"), - T("-0.95711349446199095576893296201081918391006544549413893765144324906139169225887225012143883285387366088163020556116889558963741768284740305902934334806946850023570597825714830361465408561420292855043502515001498149850537134194706047165529988277670109220102766502269805527095332398862295461748072266537481745404509807754999697692445286508080110297609601749711507506133141464812431049826946597146636354781"), - T("-0.63794350009531545667254180005058967014091074426028186874676752373058269762260454593384980188290943960936825811511438820242903324463297183316287071729253599410382790069375166807977207973311824805416905280934478728402362367738590911068930970233001798070025927580146476114118351752104439608955539133724726044901319895130615046919558595196176958507074369945336446902427277357686167969430099800901266255694"), - T("0.46273146552227640776400067795797886210480882393837882658186448207173350896006259857463834781474074845803406523589452301046262359240960602310918185550315272791571940053255136983368027733514059954139407173745111843912155780937211468453669133666656749905679399238836226218178194842769436017337481617143672364099652685726181145621234602247890953107767351286824995678514316143524362442186848118247298539021"), - T("0.99654284430835394575771581445263740011621544801262270069888725717770662527892701805906692059703566000057199727570596201090018843521079740099451243652812902235907552357808897819533630795824169795169152613897271256945242079733003533677278244438976511094582819587451104089603294510862191561695442770960262566234171127458107369852758518111412741106821369313642094603607640773678048962065297712686264798258"), - T("0.30955146113330921967430965120100702675233631993391895373629969028737150573338643391886330012902676396897993034209801929950606565714260278367377830209837135331181218082619455762666764549875449196418398841614865341526715151403235213502358851080285994526097503071014059233244883279123955235243977740815084262049389088713424955579803462877942093968546097956762333725432236406001838616369819684003862992419"), - T("-0.7566521966358354309951093880175904595961117293429649925035725302909818579817906207321292211570710827880191877879999303605651415336764708947953554392170782512559588243742231488130076898716985771987302881464753061056309847520640566277714873772103739495076986709669815846805764241489433274054604832770486905571732368583068561729787356544754173018704553303862640097086917153589464723040964231442327725739"), - T("-0.89592822979483709059243413613768383910182989046075476634617095657797990928508436396136302337758704430356065256820357837873075721305029630953922861317062956315025129501726888033240428998214338302878323599895725515251065134297830575602290889130735518399074878206099064423045326729243958866358871543482110235173182896730253794606214425305515937065566938780643012662976806400899752708380354702107584200173"), - T("0.06234178205498326768449331827227332778878332201276384069140804289468809818009465781317127499109411839409445261411097713389998386056235706454635141010244151932394411847811136494628546693592312682393427375069804704908617054121292472216996067137584186214292728977551151133236612796923969229055426308128461924845361007211592745940106076843829115607148914933190080636946774340167862449354032670081682503677"), - T("0.94424074758905426693013670501578752072879728684274664557376317555913249162898450233304331602359948789616904949986891686512171337619053651010052765459159420933905715970952322156715741540214635674374384487833082591105216552403945633258288248064096802773248182125224091036161363816821787326423255076418870584794499423986465255713593740475609695103672895656428014974438779094737722426473065402390479127002"), - T("0.66940900234972085772698395256659605212272643739109209667125733824405981903658617201709239065102665405063166964631091092744127095503906134074823656023393611554152837997449326176648259796105677009519668003831584281955537599169598905666609420488437109555473016150415050976685545370751598833602947303804286613228920011048601435648630323226945291269501824614939897919341523226599107705055297349402859236896"), - T("-0.42547414721971330565409790138583216442479880361609527886964392881677619848933007107332651801952059053556471752375648666462158176314752197637071456256008899487321608724189395189615041157311878404609283475043414911337534183547148088572894035977423720231858134885165786681305346317203268564898788667422942217715710500639870156821380173286044798492696421543055302879445405671926952506373313300693015863574"), - T("-0.99913533725625827895885420059533174260228060155728399323156205571706305217929202105237251086305720615246638608665744238167422868148494071388447512869369652666016804258416975268792629805702694345570129997561583877702300615841988105832696053353859384414627875276769517809636231032799628078938353066535288163274118038591394188369361821148103018841138634739652369087495081203873309267574158616396567307492"), - T("-0.34881786319235757353608331390774426958801870286240250260169998305471883501204837208323576855595361379043170036069553791773607809536655382734659088580969476301635137094982435633208997311383294130223650445792658125459022909462690696664526317408366804098986643756477511847342019476173582109336405217301916061499808856137725615883817070458120962726145756438119220448588723418633370427189844667611481792962"), - T("0.72881471652779599579578058763983370510799582516797066846624634893882199724038302182668125377701493863656762620352413750563017197413808000383697483717264271873855767687937510341726345841626061553517042595268476874385774311053499675017743616990623307920507987935959383718695693618200297497313502037997098069759583079411517535532519668785928165917878363955532156662323627880875149433884315003009524969368"), - T("0.91362164005394510404798528088309623890018900746219043351480570272112701909791508825990618473644291633475042035900507995909672613140877257670920948316716218048879267235797825939302972470200910320624112626429381475376664864431458828213242682906890618620939480878412280722400697167591741919704297000951832259295785803906002953167528593565353099927772534139636590356175767293503013121188135804719329377757"), - T("-0.020792579731020884570917489924829815990901072176716833800451630402659488568602453092320962870467062725056963726749091346237812411927788553678105022434525207164566719010754898510917339890499700846699846272929873718752144808990322962955858259663820680120429324521028803111432757858749225053719910422285494416920886558156485737807758736556364535329791051459890234311397811046030022550124420890079918499806"), - T("-0.92973510112499140703211303301543817758564572287706026278579630272201180630168028836976329577763576080557925500836630218023453183589136530080853328463253256043937995662714702310301104590063206629677773404210676707719408386980510414385968423854465563338165624928483173590672543381355453313463456551085355191753472704341195875901211063845473814165083882940066653120643707041759352014177322989513249712945"), - T("-0.69971687855481202313282264003416633874007708241691504684133936897916129633508695580324089944109853489892619325255884869329787559760565315713290477914000125094981765362135662354044758619666857636031878131847413243331348066629478769360995267702914881219005969303814156065237352978323936029385435868138673545623501852266665885946448589623038753247551331280396083996799682701685286072955536720942219340784"), - T("0.38748104563009787102820133164016447769400048035334289735708379460553950678502357006276775381947203793501041447662719507628277154284594473586657342957139018292691624326995856690727098436205171520067762188653923456293311998678147550312423215288396830773761466919125058572139335774599032387616617354102353665454197825146894321951594670500888745959955736169293525665535786830770045479189693672271780123876"), - T("1."), - T("0.38748104563009787102820133164016447769400048035334289735708379460553950678502357006276775381947203793501041447662719507628277154284594473586657342957139018292691624326995856690727098436205171520067762188653923456293311998678147550312423215288396830773761466919125058572139335774599032387616617354102353665454197825146894321951594670500888745959955736169293525665535786830770045479189693672271780123876"), - T("-0.69971687855481202313282264003416633874007708241691504684133936897916129633508695580324089944109853489892619325255884869329787559760565315713290477914000125094981765362135662354044758619666857636031878131847413243331348066629478769360995267702914881219005969303814156065237352978323936029385435868138673545623501852266665885946448589623038753247551331280396083996799682701685286072955536720942219340784"), - T("-0.92973510112499140703211303301543817758564572287706026278579630272201180630168028836976329577763576080557925500836630218023453183589136530080853328463253256043937995662714702310301104590063206629677773404210676707719408386980510414385968423854465563338165624928483173590672543381355453313463456551085355191753472704341195875901211063845473814165083882940066653120643707041759352014177322989513249712945"), - T("-0.020792579731020884570917489924829815990901072176716833800451630402659488568602453092320962870467062725056963726749091346237812411927788553678105022434525207164566719010754898510917339890499700846699846272929873718752144808990322962955858259663820680120429324521028803111432757858749225053719910422285494416920886558156485737807758736556364535329791051459890234311397811046030022550124420890079918499806"), - T("0.91362164005394510404798528088309623890018900746219043351480570272112701909791508825990618473644291633475042035900507995909672613140877257670920948316716218048879267235797825939302972470200910320624112626429381475376664864431458828213242682906890618620939480878412280722400697167591741919704297000951832259295785803906002953167528593565353099927772534139636590356175767293503013121188135804719329377757"), - T("0.72881471652779599579578058763983370510799582516797066846624634893882199724038302182668125377701493863656762620352413750563017197413808000383697483717264271873855767687937510341726345841626061553517042595268476874385774311053499675017743616990623307920507987935959383718695693618200297497313502037997098069759583079411517535532519668785928165917878363955532156662323627880875149433884315003009524969368"), - T("-0.34881786319235757353608331390774426958801870286240250260169998305471883501204837208323576855595361379043170036069553791773607809536655382734659088580969476301635137094982435633208997311383294130223650445792658125459022909462690696664526317408366804098986643756477511847342019476173582109336405217301916061499808856137725615883817070458120962726145756438119220448588723418633370427189844667611481792962"), - T("-0.99913533725625827895885420059533174260228060155728399323156205571706305217929202105237251086305720615246638608665744238167422868148494071388447512869369652666016804258416975268792629805702694345570129997561583877702300615841988105832696053353859384414627875276769517809636231032799628078938353066535288163274118038591394188369361821148103018841138634739652369087495081203873309267574158616396567307492"), - T("-0.42547414721971330565409790138583216442479880361609527886964392881677619848933007107332651801952059053556471752375648666462158176314752197637071456256008899487321608724189395189615041157311878404609283475043414911337534183547148088572894035977423720231858134885165786681305346317203268564898788667422942217715710500639870156821380173286044798492696421543055302879445405671926952506373313300693015863574"), - T("0.66940900234972085772698395256659605212272643739109209667125733824405981903658617201709239065102665405063166964631091092744127095503906134074823656023393611554152837997449326176648259796105677009519668003831584281955537599169598905666609420488437109555473016150415050976685545370751598833602947303804286613228920011048601435648630323226945291269501824614939897919341523226599107705055297349402859236896"), - T("0.94424074758905426693013670501578752072879728684274664557376317555913249162898450233304331602359948789616904949986891686512171337619053651010052765459159420933905715970952322156715741540214635674374384487833082591105216552403945633258288248064096802773248182125224091036161363816821787326423255076418870584794499423986465255713593740475609695103672895656428014974438779094737722426473065402390479127002"), - T("0.06234178205498326768449331827227332778878332201276384069140804289468809818009465781317127499109411839409445261411097713389998386056235706454635141010244151932394411847811136494628546693592312682393427375069804704908617054121292472216996067137584186214292728977551151133236612796923969229055426308128461924845361007211592745940106076843829115607148914933190080636946774340167862449354032670081682503677"), - T("-0.89592822979483709059243413613768383910182989046075476634617095657797990928508436396136302337758704430356065256820357837873075721305029630953922861317062956315025129501726888033240428998214338302878323599895725515251065134297830575602290889130735518399074878206099064423045326729243958866358871543482110235173182896730253794606214425305515937065566938780643012662976806400899752708380354702107584200173"), - T("-0.7566521966358354309951093880175904595961117293429649925035725302909818579817906207321292211570710827880191877879999303605651415336764708947953554392170782512559588243742231488130076898716985771987302881464753061056309847520640566277714873772103739495076986709669815846805764241489433274054604832770486905571732368583068561729787356544754173018704553303862640097086917153589464723040964231442327725739"), - T("0.30955146113330921967430965120100702675233631993391895373629969028737150573338643391886330012902676396897993034209801929950606565714260278367377830209837135331181218082619455762666764549875449196418398841614865341526715151403235213502358851080285994526097503071014059233244883279123955235243977740815084262049389088713424955579803462877942093968546097956762333725432236406001838616369819684003862992419"), - T("0.99654284430835394575771581445263740011621544801262270069888725717770662527892701805906692059703566000057199727570596201090018843521079740099451243652812902235907552357808897819533630795824169795169152613897271256945242079733003533677278244438976511094582819587451104089603294510862191561695442770960262566234171127458107369852758518111412741106821369313642094603607640773678048962065297712686264798258"), - T("0.46273146552227640776400067795797886210480882393837882658186448207173350896006259857463834781474074845803406523589452301046262359240960602310918185550315272791571940053255136983368027733514059954139407173745111843912155780937211468453669133666656749905679399238836226218178194842769436017337481617143672364099652685726181145621234602247890953107767351286824995678514316143524362442186848118247298539021"), - T("-0.63794350009531545667254180005058967014091074426028186874676752373058269762260454593384980188290943960936825811511438820242903324463297183316287071729253599410382790069375166807977207973311824805416905280934478728402362367738590911068930970233001798070025927580146476114118351752104439608955539133724726044901319895130615046919558595196176958507074369945336446902427277357686167969430099800901266255694"), - T("-0.95711349446199095576893296201081918391006544549413893765144324906139169225887225012143883285387366088163020556116889558963741768284740305902934334806946850023570597825714830361465408561420292855043502515001498149850537134194706047165529988277670109220102766502269805527095332398862295461748072266537481745404509807754999697692445286508080110297609601749711507506133141464812431049826946597146636354781"), - T("-0.10378317514630283035697337871092369012118223784464643078377333318832860627512487321975641507120202567300966096393096627338947655380820003149059343389474916418959764384086933825280338584080543377015355584259569741193189206873606119903440824298765910897401393832760642020478309582400187458069600297503471338694965049437285901431495005334289622152511502991672903524064211804721113695218039893263678813343"), - T("0.87668546801298894316611272503029374001219866661666136243743380759468378098691643969637456927472038354627520673349367283367324121916949272869177620477269451717775313582362761369952753768494804335788010017359300886827719062432162897060693014847129089532263482838487347672588768501033685070780610322543843882757687187812123549700825256897742477675410408774989851342602781239821815645715958753412070397601"), - T("0.78318117881507218281256857540210491140619166393457160009274918850278377150347503811659906527658912201560000425062426213174077300808809107842767634667207644130246300983762258813379724135069575858579484972987736881337517572218810617863132592764984653001013079710817700332509430207238192747837232227382559069149116081099363790759716765670238049577887842168907894878101742345788299501918210802461045488336"), - T("-0.26974974384283529407135442904911380728022891803412415907499156005666362362451160206340942887714356745930732393405178421002248875485798257350416225295845333813028470892948983232570745331205136828532696050523659085855991735781739399449780199864580413509362957674310213115088541667662139444692787904342579506007770224294439456180398644394712078670122120840185549712701180444406705582313291159418160268707"), - T("-0.99222700442041793244341637163672398376812477454144578739458582830385307501573374493329418110400264981611911650266336290704933803675752414608868505761080497715998786605323101072631863530928986865345605473152114701760347977346551445152252230086602267733482237318264916817026594817822201149718727077242483980112025554281082958570816251191650760457174817529165817706742958860474153596353298087887496342571"), - T("-0.49918857050765127165246443100830980202323621859663295606411941969457362189652587284758726475585312743864487499288977743573076640209331558808543037798473406138898808010287039327632227491127621026484760216100025745074711422052006517238053729631745694408780163847537773119573702459176085803816861008338932982744241500509585746534632592189239382341678009278118030810458222678068124752194184440160812863357"), - T("0.60537478588662083093550030671881062835301187704838619957445140277346831579708290170559342372438997696786583564116411747796066131598667722839502247472418892060636953054544383896701697716904288008881811071365393348940494848858720140528491631498078923089892805069340832767510592701952499233084373444894649962175905154151059310656485499518493307751028032192138975110743944975104530590939205299365402172399"), - T("0.96833108057454018135440242001894400433450486884893467698495154667147695605198346971512860434896301677316979407715828973045999189796179033252360390253384834782428911228350312995059296512013202981214049690155973624217982618572186690629393688668380855531415343035476364485845562203330354168788849023043609092864372997506131587372974589034738683570955059234741409975711088655065542622757333229038929539614"), - T("0.14504509334766993343679732543237665601748015028110051986903855469561805431836897592755787294803720321294196670692675860425817019156006795472544060301573514970130737237352276407965078322598196015088783620318485742726789260216376389721616761481364286097504141935673467904417287244647363440435023754573347620436961058676078531225670052103877411944831266665091545142351559495386200504307614132116833066489"), - T("-0.85592663170679958406515397649643131309994249316454429005131578645085757570761552251729365670632975735279522675018975575836010210249068470527194075548251441076976420496548792075626757772699437483366302008026562909787676760497709271997930485538120627136230760141137536077186130465523928404376378372203755818590534658221264961808618483334189725855704258977192100851554017405085224133570406300901634686193"), - T("-0.80835578582046670310464731711696478601773118159925609840597870029856375850957218864062941877059300809268098041286606529894870899049159003652074961379621476411176224648451902760457011220845176506086174749134555188467902316469475288975403773973857636373892326760376585744094430003550369691223550482756797212146056901318410686997010241891041855811922027651329719928389111111167862044112446757189042088046"), - T("0.22948154144509182369415746800698328364988547396475691620681392787566104183462052622980774444304368277802870979261579895452333488316470495027443871923297117956210113575448119970237881958246782891025814249305970662163236166516394039705137544157900789683194435211763787511069822409683486532927557658412323180776903688623277362060713475574739265599518489263464320833102602215450190502358534383949241852484"), - T("0.98619528108436834444622772244233500550001863518169392038562682097011946713614830549103565779570404766638555367268020992254689671390965312890416679706192473068433717014095521991774567755994345709131209844512998942709582638991869821050636439257597063856249038092119512871640381123843890013812838185293393263756058350072768448458950380360337889770923256206901689904823829217396801268618019194906772703227"), - T("0.53478241597498682890636923119124507573138434225226478301997338705931821657049944750562391125304256759887391004338167587322019260365925435302391176930331161896818003746464685277508807805130884660314731429722219318699505836398912422599554793162364836595300619860913573673921432325981205409702897337053197706014049687225094538593517626884763534008626048851538197945922313231461994435494917556595912129444"), - T("-0.57175918163121264025616107589630751551161205724757288681494194505248342228571881008866075970817690438186545379919710148119548771419260784258379302863349865022779589406640338106461807885184578720013258862884778613907350162349826641089246855371608494365729193629734711852175384638728815913727055118781471960575965215193534386589450370243853256890375165575818694142504618584610839931680003465519416417686"), - T("-0.97787410706912947200700947809086987929552083940545236541182287303790608208610023257624198390105132776123115664110406549669787968717953162987933260638310530750565076435745587024443942712810356372635589174338356282870564205603334997652974637518927664227105047973535688395040777968082125500061259190313820373870936866720823176265958448162090987423326403872038897090958331050185525989399368410147697601184"), - T("-0.18605618137227649584671124815631620875769157093190685600569736108086402885199167407702422320100843062616644714444408614621390574242763877642390939806307957026167805604628333909629405976831956784535026886701013223479257442178936513209253370459988519785036119662696969209506800793520534365946487576733594348627957021254017447520897947123358509837940617442852539597167693389591380189862319487892792923153"), - T("0.83368761966098380317914918853127190012005517198095141616372457983351189700156411681039093358761555771758536229588242982647239744187242300801829995961871412772468923394414109025642424234703592018655517051393077978860068845984020869413624371103031896740117407710299198562267502869147100200858539656754317575041431701939759759225389946719106478332366708137354276007919533255169664638235639383569564110075"), - T("0.83213248256248718391648282211236200464150938178343837417522635579213705328552770623957486792338755433958256100224720251839082676782210674078979903328623897712870422600430978907177584667709552233768475968506874004560085480509103334782228549116928850495590090914133655583767781543886956699592465303315591578411513564172526903206600594554996369316967222569167592338646796759203865876228192676690576393957"), - T("-0.18881649076882036818094718893825891946691295900905829577570255489597056088743777799436529545269699011594065157007321752198038423373390670103253610646983030773571922979273600163598344653044825786274322207994738104766932351285365246017952816761886637102290439956065197679903357501267350062489863581450400525901254917975058272557102311416424438039867176899411547343130655797011597302924818642795986910776"), - T("-0.97845810511310366097345864112668906661089075307983663561178996977421991305045684012227818895513901547325249161241097295038349597373820690088476031256136981855438584632935895625291791741570973153071536443895825053372019222244541345181800559983327493395843212471107951435623879503589116197386166395270332969985628390518342285544128149350904869144760786557644083102040293619728857795557725975446387638082"), - T("-0.56945144858011886915780505911780725010620323062276283805115420871306570794972703588425077520601752861293077323301792800610549113139402646104081762175534061087117946244152125287975953108704696268847815261917377065241801643783329354778399526877290332215236634903080639679860355847620563822363712579548641527844739938293967364597110377469773489014211951212857101374318452911401420528677259991331090266005"), - T("0.53715481965030691887397316962489853948341836449029599646266321884877186476498260019355874856809552188645630606126976563119123530724283602396484950653123503399938294688332329634386257314146589125825636097592371320563696604271190825947497633567945681092924620382686009619110102110209885034787176755762448527267043281608584015012767667899712762371285806841811102653584612955459666723163160014123341963671"), - T("0.98572607094681400469823142383450564975177916157871840422129452719452525174019803417354200370408054482797693621385765351670173144053171524005535725427317409189868483686977845578192854125777358818593005952568285102554187813023457756929121023181880198348203083841375515867843145321766318476866476607321938993078073105088587752971311300418067382395754489252201424628686354714684325074264340586434068083735"), - T("0.2267455177003321384894005667464998092097833850092894238480831378466683827110057043871346060005709235569800215748516185659827893723700508589640891976972716570403665692613477548038629552153079218542242417184271182264022470709072429310981387965885388758575814101891100826647083444934684812292662215448102626341015149572372707444725994248777658076421636637760492982947444020394182326376291158696727384852"), - T("-0.81000689036588888102398287378618104836450574863713892332248232301021899106208419137911694670935600210389307190348154033680700645928539580731142634010602466147128679656911798991740456705453963764056901956423046807435258488930954638670002070774439646670450724500520094586192645160847046520311570082832431061691996839606591067443335185302732221888316818825870721496315105401624866741940813589284275695918"), - T("-0.85447015139344948471094821054366626768019606763269341666053644333072070840260166961763856973284893831954425042860099172316086950440334996806598196522184690224018944138578542327045770832471332376269716674841615467614625539483750018876502303839670098606230317226296309325404589665701938190004997832683948796843166639576625281030300467522347494569768687089899397360725496800596493559470637547748735594697"), - T("0.14782491492260520954264860310453392894688582499520847868449990765772811594316839506757584243129175527745236732059643506743012867347391315093605558463510078020864683057368198129858823908327097108583620570511151521896111105026538667326749527786043478669088587777236123716686756088055458828079103458534402182273835161066708126746360741813126817035007484464329141515901214558732724557437706092450180726378"), - T("0.96902885660223213449832417965462288346382027027907788639786102888188268413128284808786908788351970794814191573322198094839000459295090920127430762740525901384778314480815531039485728089512489227948630012091333107823627672161756650613535363845597750943844039360212709462602480040358932164638277463645635101178868520058961493135889052671922314786442189473233561252419424865659925386520422456933994031412"), - T("0.60313571428133694309325113655636540756247392441681227046917143280974317371916820972719995253248954425492897594051861535050840463205496306256237562726891289696301688567930026444972968333329934552460084325207412884738539384203738886072440013640125030433738691853586812704775040754220545555524237855361445575868855139945713834823411715711428213828850093318644478373792898000948569667301322178250159228606"), - T("-0.50162154214905535006507934761566421365808962336874567677926739022768858180703782104157334491773507690211622144412751863172893119122904872120863946237533655183100979972269651012785895305465091942482860884709266947899655662267052604131701946158941092922207257375120965677001058006645609151579188243577188192831765423148813895489546306047297711022539509473462404019089733447430114238267379980532396311664"), +T("-2.37609908807915949996042688873953402912174184373388399043229539427530802169622688886435380890546981798452174137747437590e-1"), +T("8.03406366226813589517543567844755380935198206635917017883860879215939165740799963435747185200486086864198723786516760875e-1"), +T("8.60219386510802105228997694366289682807721120146423711696179175800635220710279361583231346318224971127450760223168489952e-1"), +T("-1.36768951513839774357595871594675554406872039078811749027554673949684004409484639336417431285061889554892096426752261915e-1"), +T("-9.66210139195431691033548069227792927999642647449593184440815029076272297050360196975341458076547426373476590671462150981e-1"), +T("-6.12007278553856790723803948280976098970972124581361775428331444376106018942231526074915731012122426588769327127413045994e-1"), +T("4.91927698740873688392439262912409276430264703350691359723802294639643655296838880236042651349290074585311025856549893171e-1"), +T("9.93232596718899824059271235487971663771012607519717340071654721877802691370866768064059943491135925674950430467047724563e-1"), +T("2.77789911520199551017947550534057049374212876971194676010301098598339529915403722848373365985645657342475739669568931563e-1"), +T("-7.77955945956221239101360662190442739163791527953499629555756394261998892874934847131138921705713935365505245406994428077e-1"), +T("-8.80676278306736581575818642341143682410874043182925227659938804267878718513212454821032629378618345485453587099696563832e-1"), +T("9.54652155963865007116798560589970996367213754762169439269792747771200843006278637115722685610960738675814993576019945344e-2"), +T("9.54658201427917718824191302196929158303422390793460018465335986921801519149657723689322277773550748806000948225466432438e-1"), +T("6.44358700620889799575033272322899136331490664925359198096632560532437137894857803619177106562399406351419810452110265174e-1"), +T("-4.55304635273050571206400777159475409897339683148730716647371922365967582339285347105376503917296765204188604297021364549e-1"), +T("-9.97202532932553753622481171186283382950122646390227670693679248197349800205205290898290539070732778341271049474946533154e-1"), +T("-3.17489525058325500707686194437148362752290391406825231198381521862930317513649081353670386166519524315810546189268634469e-1"), +T("7.51160186640147504067744846462384089742696250681200524524912647858645140367792164416711871535116761744380912486921554617e-1"), +T("8.99610194168373157174515848193119670768490559799348397680196213249921436405001710937402190319584272526657508442591319630e-1"), +T("-5.39963892484342940823660554048696208293700871414984387094529796385334086703752106515008832585578915389731907422242902573e-2"), +T("-9.41455348900839346761557896365239742769987576963330061702397697388879776230596944312519157729410022380228287314835345969e-1"), +T("-6.75595816763857390859268297670835380459024839344154743310231115864242050771191159334664874097564054770066166961642073448e-1"), +T("4.17894201894880415042381733708896725748531223743344790054523182948440843948904650988733732381978194392219295696279423635e-1"), +T("9.99447981389824371458566861195586395552622718284098766856978062347139060489410032781030191080200904443096549587568037683e-1"), +T("3.56640095868759075150409032448421838265699043643228482503057299699740924345262819242042067863780263400092250418388628640e-1"), +T("-7.23065426868134142613141384486526262450487633432466529798821958977732347646832059032382447792655111641456570392189752211e-1"), +T("-9.16988391192434436877664999042786024703848714036221388727578305299843547352325574309860356272561772723624753484063972217e-1"), +T("1.24341855683226931265962750806821531283439413068694552738675989282017066737438591268502070364982899342633928417210588531e-2"), +T("9.26624413643579136646620112107410908114766812511471130116341925013001661546817531064974089666536893346764523464250445838e-1"), +T("7.05664607841658050248613256866289182754229289446384595719719495272020558391145537620968819401219414243210529013148958366e-1"), +T("-3.79761093422301890838671114556341706055562482358183402807224298533060188038450560241345615647754569347252101282386222173e-1"), +T("-9.99965058979463689113370264378210962384824970050865061898892508056811665771886385589295806419278045318841717598003331419e-1"), +T("-3.95173919871548266286836251448043149039940610894391718791244019288314418437411707835924620250473697245151743147215758686e-1"), +T("6.93720251624319621941983929806434090162802383400620564454074825718151625795576680427510026452063593762417421561201654156e-1"), +T("9.32780816819880202610269817418700102084277332259524791943833699964920012022753227823298655560837271746316929623378078695e-1"), +T("2.91495208658083070508005579692813621670878962971611104453227900103973434149303469066898102622556226584993895360896300290e-2"), +T("-9.10191043170480685360743788297835112117551819731152897291272407935139876953384666161532187572493791297095784055525159185e-1"), +T("-7.34513075127503122343910106816656237074878218180284276449954797048122379869002663646507706411949095015624141821039453971e-1"), +T("3.40971254411713599427147477626159847871020791931107106418841144080445813896332252160005593096670674809345703079384115052e-1"), +T("9.98752871506016936810666998588493462933191829230756181478046320353377054175122206889047094521687205093218701141334147081e-1"), +T("4.33024359542714849537532946954507232835434973891665238942502273464321666207117525270650546741831354943253652514490075246e-1"), +T("-6.63175408268187738636594884921931867786416057472876635147295424128144233911929585327601381618059327766986981109409782838e-1"), +T("-9.46960160806563725719808910991708075372282242401645009270517113290439792088443109178772446465191984149998211903724560065e-1"), +T("-7.06828182905581345108929510344440443421290640066613022421187316650733628538705972455891575947230299102119854983197703150e-2"), +T("8.92183656127948379886438402777950080111433733329436790239129260607557296960582455582584117031260710927499215646838011844e-1"), +T("7.62091330231640362984555508176991632755732840163230620595759320390970951235395195394649584713540498911356433919369698423e-1"), +T("-3.01591765120371930643555588643712101466544136366607065361801475091335195383846047491935017919396438040414024941341524187e-1"), +T("-9.95813515236177554177387795413035497724212540625760091518605741283184405719984044075159457509720410668598540884613985023e-1"), +T("-4.70125959152223022135690700550251564040118601846181392455764893020377582359429013073566263451488554529709131439092909247e-1"), +T("6.31483718775865440843182928017874708719203714677143270278178885379757350754752477512514449375355491054871712891789652146e-1"), +T("1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), +T("3.87481045630097871028201331640164477694000480353342897357083794605539506785023570062767753819472037935010414476627195076e-1"), +T("-6.99716878554812023132822640034166338740077082416915046841339368979161296335086955803240899441098534898926193252558848693e-1"), +T("-9.29735101124991407032113033015438177585645722877060262785796302722011806301680288369763295777635760805579255008366302180e-1"), +T("-2.07925797310208845709174899248298159909010721767168338004516304026594885686024530923209628704670627250569637267490913462e-2"), +T("9.13621640053945104047985280883096238900189007462190433514805702721127019097915088259906184736442916334750420359005079959e-1"), +T("7.28814716527795995795780587639833705107995825167970668466246348938821997240383021826681253777014938636567626203524137506e-1"), +T("-3.48817863192357573536083313907744269588018702862402502601699983054718835012048372083235768555953613790431700360695537918e-1"), +T("-9.99135337256258278958854200595331742602280601557283993231562055717063052179292021052372510863057206152466386086657442382e-1"), +T("-4.25474147219713305654097901385832164424798803616095278869643928816776198489330071073326518019520590535564717523756486665e-1"), +T("6.69409002349720857726983952566596052122726437391092096671257338244059819036586172017092390651026654050631669646310910927e-1"), +T("9.44240747589054266930136705015787520728797286842746645573763175559132491628984502333043316023599487896169049499868916865e-1"), +T("6.23417820549832676844933182722733277887833220127638406914080428946880981800946578131712749910941183940944526141109771339e-2"), +T("-8.95928229794837090592434136137683839101829890460754766346170956577979909285084363961363023377587044303560652568203578379e-1"), +T("-7.56652196635835430995109388017590459596111729342964992503572530290981857981790620732129221157071082788019187787999930361e-1"), +T("3.09551461133309219674309651201007026752336319933918953736299690287371505733386433918863300129026763968979930342098019300e-1"), +T("9.96542844308353945757715814452637400116215448012622700698887257177706625278927018059066920597035660000571997275705962011e-1"), +T("4.62731465522276407764000677957978862104808823938378826581864482071733508960062598574638347814740748458034065235894523010e-1"), +T("-6.37943500095315456672541800050589670140910744260281868746767523730582697622604545933849801882909439609368258115114388202e-1"), +T("-9.57113494461990955768932962010819183910065445494138937651443249061391692258872250121438832853873660881630205561168895590e-1"), +T("-1.03783175146302830356973378710923690121182237844646430783773333188328606275124873219756415071202025673009660963930966273e-1"), +T("8.76685468012988943166112725030293740012198666616661362437433807594683780986916439696374569274720383546275206733493672834e-1"), +T("7.83181178815072182812568575402104911406191663934571600092749188502783771503475038116599065276589122015600004250624262132e-1"), +T("-2.69749743842835294071354429049113807280228918034124159074991560056663623624511602063409428877143567459307323934051784210e-1"), +T("-9.92227004420417932443416371636723983768124774541445787394585828303853075015733744933294181104002649816119116502663362907e-1"), +T("-4.99188570507651271652464431008309802023236218596632956064119419694573621896525872847587264755853127438644874992889777436e-1"), +T("6.05374785886620830935500306718810628353011877048386199574451402773468315797082901705593423724389976967865835641164117478e-1"), +T("9.68331080574540181354402420018944004334504868848934676984951546671476956051983469715128604348963016773169794077158289730e-1"), +T("1.45045093347669933436797325432376656017480150281100519869038554695618054318368975927557872948037203212941966706926758604e-1"), +T("-8.55926631706799584065153976496431313099942493164544290051315786450857575707615522517293656706329757352795226750189755758e-1"), +T("-8.08355785820466703104647317116964786017731181599256098405978700298563758509572188640629418770593008092680980412866065299e-1"), +T("2.29481541445091823694157468006983283649885473964756916206813927875661041834620526229807744443043682778028709792615798955e-1"), +T("9.86195281084368344446227722442335005500018635181693920385626820970119467136148305491035657795704047666385553672680209923e-1"), +T("5.34782415974986828906369231191245075731384342252264783019973387059318216570499447505623911253042567598873910043381675873e-1"), +T("-5.71759181631212640256161075896307515511612057247572886814941945052483422285718810088660759708176904381865453799197101481e-1"), +T("-9.77874107069129472007009478090869879295520839405452365411822873037906082086100232576241983901051327761231156641104065497e-1"), +T("-1.86056181372276495846711248156316208757691570931906856005697361080864028851991674077024223201008430626166447144444086146e-1"), +T("8.33687619660983803179149188531271900120055171980951416163724579833511897001564116810390933587615557717585362295882429826e-1"), +T("8.32132482562487183916482822112362004641509381783438374175226355792137053285527706239574867923387554339582561002247202518e-1"), +T("-1.88816490768820368180947188938258919466912959009058295775702554895970560887437777994365295452696990115940651570073217522e-1"), +T("-9.78458105113103660973458641126689066610890753079836635611789969774219913050456840122278188955139015473252491612410972950e-1"), +T("-5.69451448580118869157805059117807250106203230622762838051154208713065707949727035884250775206017528612930773233017928006e-1"), +T("5.37154819650306918873973169624898539483418364490295996462663218848771864764982600193558748568095521886456306061269765631e-1"), +T("9.85726070946814004698231423834505649751779161578718404221294527194525251740198034173542003704080544827976936213857653517e-1"), +T("2.26745517700332138489400566746499809209783385009289423848083137846668382711005704387134606000570923556980021574851618566e-1"), +T("-8.10006890365888881023982873786181048364505748637138923322482323010218991062084191379116946709356002103893071903481540337e-1"), +T("-8.54470151393449484710948210543666267680196067632693416660536443330720708402601669617638569732848938319544250428600991723e-1"), +T("1.47824914922605209542648603104533928946885824995208478684499907657728115943168395067575842431291755277452367320596435067e-1"), +T("9.69028856602232134498324179654622883463820270279077886397861028881882684131282848087869087883519707948141915733221980948e-1"), +T("6.03135714281336943093251136556365407562473924416812270469171432809743173719168209727199952532489544254928975940518615351e-1"), +T("-5.01621542149055350065079347615664213658089623368745676779267390227688581807037821041573344917735076902116221444127518632e-1"), }}; T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; @@ -154,12 +155,12 @@ void test() { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = cos(euler_gamma * ((100 * k) - 5000)); - T e = (data[k] == 0) ? T(ceil(fabs((val - data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon())); + T e = relative_error(val, data[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = cos(-euler_gamma * ((100 * k) - 5000)); - e = (data[k] == 0) ? T(ceil(fabs((val + data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val + data[k]) / -data[k]) / std::numeric_limits::epsilon())); + e = relative_error(val, data[k]); err = e.template convert_to(); if(err > max_err) max_err = err; @@ -229,7 +230,7 @@ void test() { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = cos(half_pi - (euler_gamma + k) / 523); - T e = (near_one[k] == 0) ? T(ceil(fabs((val - near_one[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - near_one[k]) / near_one[k]) / std::numeric_limits::epsilon())); + T e = relative_error(val, near_one[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; @@ -255,7 +256,7 @@ void test() for(unsigned k = 0; k < exact_data.size(); k++) { T val = cos(exact_data[k][0]); - T e = (exact_data[k][1] == 0) ? T(ceil(fabs((val - exact_data[k][1]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + T e = relative_error(val, exact_data[k][1]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index e2c0b845..38841e62 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -104,13 +105,13 @@ void test() { const T x = eg + k; T val = boost::multiprecision::cosh(x * x); - T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + T e = relative_error(val, data[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 1200); + BOOST_TEST(max_err < 2000); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index abde8e4c..87578245 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -44,57 +45,57 @@ void test() { static const boost::array data = {{ - T("1."), - T("9.4774758759621877024211675170518456366884502921505415491512637467314221915954853431757689726613032841249599156149038435317513116309445221664968991934479367736962368912070497862135887440758964938422498610719192114666493107120133053433933470080716434904854804591983841381870449665144170011709399012693158566138960223723364102555657731121349862591746773752353141675856300389702807704522952296232409058995e76"), - T("8.9822548979445237099762393639075561506833309483454509238768979587574644012197081949903511127689329087920328909235374785049128571553031890973238724279779592658729244759890277209350767466719784199679796679076195510817453034019585841414276969807276603422838152196159579020392165208404938697706742432405072185394955217454998873094186010667116964062108348411120353180844989880619261736047981860732797930644e153"), - T("8.5129104107012425752479825179539835555229492815662784863307311391672159207488925610548399363157976134510028424514441050609545913878842822386467301206413201029623476769026205205033685817764924800488232855250724008684495915251712280130842326233108250199883461186105839257510617980635806077595457588382413118792469142952313318664506759914894358735407111388609445312410411768354469087810933243701518863094e230"), - T("8.068090305164838604842549259891290171124821324687615632762765947633748868268417454336601924388552143324691924117594027902831510205350887969459808981202607973311868683121411298688279975061789109893607155133896078457388071886309741456291076644788440713510519219662121306330169119711707661687366546188062768141595534496102806873207221787877336040297603480708540379623897605936160066148763011880191621869e307"), - T("7.6465131232284163049316971133689488893295181895713899732751818669118734787914222264428338943260471340902326391726435840091710708695473968075461348860956049684669812738873320847453110965340325334947107583391780473997991426818290712114444252407495208024999404559898062464415917818325137468413597347923471238518514205589873079135934550659222795036544923795379322078022614498712288611880678752777952015152e384"), - T("7.2469643660625598538019258566517379445511821515071121090548187005319333633673122846436747032786828698818049511140660969044546275219845755939273078671198074959632409619498154244698031034440156360197935648334627868546857888857494388700626844388689389822377033582839158752694909185487984346545185318857120307481828458998400770240716997943805543726689069264680883497414036698656007667489582007899001829547e461"), - T("6.8682929953315519748061086577140456531398698780106027012062193513974157724673145902422782875956445003426789107235281687028397040131570497762100824722937078427155330107861397918035390454699657109557435638021678699307825502445861009401889929556587580492784546438388738373098175168819944606997023434060917962050793068854615280653706806955349426233710968944941108524201897185239272184650924550094159165184e538"), - T("6.5094081172294858524266967236074125271501239931616451822606100184551967070123942960365792762875516947968906251960679962384234952003522496976521459488146737312705400397630193900773373659538930712803305054506593414261773420168174852358519629345494258520616169148118576343286498482213483702930624725613384454163670114665649516148482263466492457979074135245336808430956247276655511233636218374141666023272e615"), - T("6.1692758397834896445466565257129421525132737513712327204187797947854551109008575685822530235797715953977744784785550340516715598557366923302859690730271083925820960776432604991610505575079802877181530212126674968757212631217826462154883556827312493006938669407561453082743084716913350560632423093917610154998589982600001382392313694022445670347030705319164552170150291848012351937100953890036300105871e692"), - T("5.8469162943704389675386957200432422884983339114040809517125791843529698266123366406953460141383587627250027572569096847362363831549584856898467181999391413025165420386358087621054569033111477610047027055333381725754117391518041977019653549862107958916803866421362184761931585219445620128589637254918343555371393128431807715170682738452071618887807426604132681626154765999537959315476068213542621180322e769"), - T("5.5414008128666064583537076240692868933072418197965454555020420111392626928160330156411498052861994284073777041588578343924444729815070056061660603933966757946018263861283152733720240516173400789600385493382166372543010812180148374708916504088803663809915284719654025586373106511403877362732360653577732630088912763232117614936657631128626622480330571961457177097015572841013819523862056676302123590835e846"), - T("5.251849252298052001849336634596605624932615050587242126709230836437099642948552827155317681622985673796485738044339684860221300378963566030058095552267153924938244515158005499605803770525751057401451830019036344558051163875818942505974131107483204115256933385945743955379487500587051829522367096042702717218823641765552373631712919055254215952997997242218608413439149796128454371169305737207513128807e923"), - T("4.9774274592844840922553532523399895707687997944019016434779659339099599495175571066749191102647610895707050400315564576144486939330191822264020831239376081750240177080224855259905972322795436336044718080591030837173922087243357258882189147341298494439853073189728114774501846930002388008365636203966891211742478022416179489779372415512232819505675629656011956781715868427072593283654666589611808073581e1000"), - T("4.7173448669720462237188351865970295455238511572394280863649015756105641752582788447957398889951756658763666977964561080316844537247511176975067430907677318411628894592131659609314519705065696036773840172243882880973707032036317239517638220758446197062685014773982890420289865519060688689357420655259758455221621133987780001331686741987234669397265361446155200793231408284664030082289902730362397848561e1077"), - T("4.4708522175321623603760234543012160551233097542464376709898701080016161641305114803775155211008103406608130900779618211357983931505100150872036597773168012401952663951774811462178950982356754934520420952750636967336804589186617110996219414674248378823188434472686833719446877071963169624353004701806734777657062069056499506562750389037932975870328903604743080312421901044848764763554120280608069622747e1154"), - T("4.2372394036653119830098671356758800877704381245840070556972166015743494177406662087025674510726553612407773483679793826805395046830522912774907458645315666657109679555711516123219895337097780310478450990346378570451984628571968728862717021688464671183102216087482134582783233462788612276436433844843113340117661068800967697425945952185565756591509948286825746552902121339188076398953061591657510445066e1231"), - T("4.0158334228914400539745590178164794975437536606699818222034254004811114067672490994749378759633661049912208598371211928081486311385567301424145253923797915452955822482631387668888916584389521441919397036718125302432512547147127924813280974253855801042782701987819292329831163944563371019697555352578545825707188652122309957602602328073674784142564935616256457537057261596233390671696504290741500824325e1308"), - T("3.8059964387336281390030628447736918731950638905889859981670562575013579651080893378643261418615597248563793905721216409752849171768325689975193281668646707475626612103018049529414972031338274254587787676115938524624210494070325582923806604462125023016462957768718261849099968552115528194693187665051765401859680442459296615169707213689087378346661673375123735787731940984618937841286808679717684045601e1385"), - T("3.6071239432095959207430930181651037268769528665018877695729199475196601891740487861223796136712863819929038760151135883635004445484745979300525669576636222972289788167180919942439736319800034914890005316195880400774555618160525047519091232763877112549157224779431406160698065686340819410841933246641650269061746492965033484737240772388735312991521074123198706383278511433856343165625103198269467277045e1462"), - T("3.4186430153374545706606299190728926303831987493039531531525792716113836020659611610272471306951869724846396516471297290706571995664799809535296646907832639466194597092728987006624017784246439039721439649240230770188576832674257817653601012003365792748252816491311084472983584896236685446078049796997495088275235014482876422624572733765422511563417424717976734285541485840205576333292292629705898026712e1539"), - T("3.2400106706387356945670320428646200776993383104555861757828941469924476740373605793183477572742076241032829759659681490962141240145141581865097423924646660398220529435794134651336421615115538294144878610322957162996489151882559706577258950380659727211777291935939480320782190247511227788798308670601955093205987496538797636913777784465756466432434857195432171054628069149765836567108796606518876161411e1616"), - T("3.0707122968838686808762365976116630656317083977116234783051460697759202764413714416029446981398815846396774097846142086219585484898425128945637835965609311626781498745013601665202311991073858493014761614369526954113562966924343632898676526247434944353812116870344357416617678601015459053297989079589299509864871767253387806087559388044642587983434307487581273247444950986227978405821984630380335522999e1693"), - T("2.9102601715737304709407721855237845605215030467786367061140857045899101530013173126178764480141553804302726818509771061464761826116800985901969508353958187973711321043157119127861178260598364278447637770099918746816176840436194047559028684276346030463240065993810821297209992114976352565659256401456824943396501998104720348581392556524094012469848383344186510494751840542956622168648051127134605419049e1770"), - T("2.7581920568863607870027917438011158114732314795167030242749419621017647849448607372158405505948973604056597946655107017870542301435918693041804847351891423642078041222831042196395295270728440674479791111077414832394734353235316069842707878669474381815671796103458710433178002392178092638286037259141627485462419803958568427330260813821541600701534519737633707025577914995456788692103051108422425375408e1847"), - T("2.6140698680411010453416773970464335103997599275990557963505882402750774237538007727638017837647068698785550358186768104621786728298395959017968646659450681758854495815775051287976515457472752962763600118692278131638936053170621574407487878235430394106909122081064770622396768825200987517033934258510550698555707917420074884651382528854596786633229647900291304513978131386770725311082555006911467864447e1924"), - T("2.4774784112439194545961900234630392526964078574399033336208722389562768176981620423625796094049751937688183037372271145640392552111592856112971332411543527668988982189213357069766999642690629174087636518790443153236463649626796203655474042490645756106046469120382604539074502111722789325269571247140534108791736500356851939956197404652273603941323630209215720013693452205022518765760329070842616941046e2001"), - T("2.3480241875781374631691380066790792771892564869650825534762414159728147468382334513664061092463982019282596608230957530311211307328143974085747420399537158037724095218243991423228023444859379580883072434670530040478491744472651118485401814194033214517221050352934587398275852096346826910101105240186236412184656659382535831384647508927079089332738325920621748164698159861195345140124576533260099531818e2078"), - T("2.2253342593947512482894343051033346460553514685284868064761586762995307539088982139722858486639592417618934607300618026000707839555068686077050219383701773511012374743383996188227317471958686041947524249098686209176989223885354176417280209218097978029585985115430634192732411379059159347252165834440501107479076728537702323035968171445551276815488702844227415317075032577967598705531043548190902240163e2155"), - T("2.1090551759365936315455394763107180892546255311406814474807735913225599344136347904154067215849740466098616361782897296314219278981058583564722586146448606213894635847184726562609032113220295749441955633109205157660265084141265451792574855174504712050982199997333601700242161381263233947649564996752502282300661121812212460958677667464307539559824119716390823776389116062024328503582458296404661030724e2232"), - T("1.9988519551012253626665391606414160629542055458014061990042537070247177860439177457869686789999953426516957430680890680964654190474258046504015466343786427551666546734635351226235742257396796694133189981279578839780058454761985247524191011603418127443226153000194710273722264940047399226885184129896957721196752811974521300721776877014427959949663663916026486491804231252409445050163051004298903230857e2309"), - T("1.8944071184091717327769157288694214491666404740796335627119828665408788464610207014827128441011823347031833774554689560285831180446909490973719926278454999562091766786964617295311248054209296251829365565657637585794799613184943543642149302253502921625588487967178044987717063245419475512579228948005151251220172269440562559442067650076109382783512605616677262078725150593936302571039602645533145833688e2386"), - T("1.795419776397396870883759116489769402541419469341753006054859662887039319928613872577712647027984056309170986725948997439220662114370977055801553872855064859465160778064610757538797519726695741862251510315436821959386698539808251950372887792620010350735505164024826909107013909479283953771859666151170337965452357673457347076929518296009792647791360547551255623795595827532506478122285622521680723198e2463"), - T("1.7016047618031754086134654579111810617120348758710143771069305417445489516040399750813776000705885685499141312138983442910516360247333185628492894202543743484367527766696250509432364995620305699351629185845681107616307847503246334638085810705895758535310625200703209004562084637734409371699916561240290054446464424202718339701400783109986719573562903857763873129540597357986671423745013710023231651329e2540"), - T("1.6126918080411979609715701452747988352165611850041775296367567768434358897691585163763723200113910842065988232661477200356230494761269971912897846125539659247231849257562594838887825972384334125491030803473533770400171029646043156961751894914511918427584075989532586054167207076781379343029365612771751032986978351517889027305091647604463730801257161289620542661422918279902166096709193161081148394122e2617"), - T("1.5284247706072296906699846404669034984154826955667742337840818347648901587881658504557814138346370867446936528153779291440974222875392035177334798180491517730019043230270100162475021422595011732593995371616778833697035670363475607783524853038032682034425785665657694174408203262209215616997795015596310706005669556487099297258112136814894205842056567712320200105413268352722573109566950626278687930372e2694"), - T("1.4485608891653060012262662362934733670202669964729350005811103752638169264554793857733858200215714810347904907192143845165275567906538821978702789157309454852049290295796799965552485868312721404394594588565776908022341972957647259592625133676589615774282958675900831935353271514314162851566868342929429856058517618472279436082944777949290121160320329701032110206134281440294897812652040954276090507017e2771"), - T("1.3728700881926523987377787943233319240491435703774938014541289523016635231812897840380838214278403055812374826352836064462692100642008102237346834361992329341687329019897351648991658099511836287726680508579879561481258870568846143059698287552784017902374151003189575311983375350280503953688511659632273800604956059446835976326153862663879531247057664632472283459374059559730646129713043045914280036191e2848"), - T("1.3011343141675944177179012805391104090720749087989014559756238032895645009279901485614947480934542467295834329661576448972096487118616044389963400689819864304760083535444189376011062378910379399366999838002995455575533727570818112349042088887223540611741471886797668792340331999553880029276216552340520965077802458183989229739403020238639120027067012696404307310649637683517662985846874429681252694077e2925"), - T("1.233146907390998223699634116604196321303527338063194018635704429203476960154098702362306563055636743760637784824497167438582308977860508068061535923688719183483752799354995864650650838160287374006896203951016533958052684442079538436867039485265319300786722392487965089753674979550869797200905652353584841188368624722200329909417714522575076225901000950862809939580119622301038231535752640718531560503e3002"), - T("1.1687120066315563646851448403936869404385185807787910322183199726441909641701499694514314549503826524393274595370652625335780618101237045988306992211747149512692179708353068119406926898226236555424247858876734064642321276408994327805695378682350680381138120637976561992552983027128491109399057399204806734536960608717759169335403208815710861794231703278779715979117164411304050798514670593787652928186e3079"), - T("1.1076439848797935780459011708913459693873418501614440121893411516856155264044888921508915048116297777621412439748701311029558308262037962091076982761455032906089728939898793892875302522325111709336468475276025046431105649997619822361542676063571655376547693673809133715806114929084161165591159275087382589295164718676930405790416367425834825705001722880024431488182592089567213871253363437453881724614e3156"), - T("1.0497669145852869831822072985740561681644437400018209440593094671016875295492661221847443008152631201881081765740915849038613188076178075126640018128968505236614758225634907922757204588825919348747289334952559508285340900441213069663101271469490908846474748126491486153897933707558113462272399019590825684419149149971088390644736001969102418531930304048460671867178170486969430030044866749941411652221e3233"), - T("9.9491406083653158286834756917422021600764727853686312719802358420566982531788421914469238540915616504216223401740335370367923898274605089490332650511788075886198714135795808528419557141582217964579360685402741569208063074313253490838482414281367060197950065504143914001338572155467333984661503453898847902871372714795379743025547542723839248318892138759596907306100969830936341255021634987471789706941e3309"), - T("9.42927401023380446961314339401657458785389811652244742482194123119943160577946366372207045050095290781679375214307398843926493195734487944624333413228893399732976728321980799677091653454804065271499274601941255651159823827574140068157063214410760869314717732028275496245648005191215048930881016330693755275282258597115402181603925122663256538590166426964332556533036059527784227962722441198371434037e3386"), - T("8.9365716959828116465632229827533775010309573979010794366666818430433566556286774474031057786888009871925254918684981245088107384317036889752292156920146379694165987770273470926340201197874812456173862271880689137375502421735431888891334269040972307308842443051934967463204037988999112477683156448819368015441070611711599827182978835927951062291039453298334013800388495719125476482150507255562932471987e3463"), - T("8.4696142662483591182651710363149061965529671414187214114508986504580419620532836415592194561692587545892671733647852519586965260182156246891106882514113059675737245160959965677478337885852837584798963994305283509311992268344932659689149044725278268851178262071743625689593833327527427790889142934871390124497847187559769333723286181059355730422352609633594972880679988434632727829633392971196615348162e3540"), - T("8.0270564887074008992929481581600294386090831745459505539216873340458312207422342705431057237884163498424349206319209533661302797554406960728685696384646157216820308811030692783501496335637205341645641865876987704911724172887422201095488046489024482854111274279939733922390803256997868575641148291588995771500671739181954270612789001072297006035844811068998273723866529350060897658557177391069889428138e3617"), - T("7.6076234226710136997076519198854581037482480050087592375273646746765716709802670790534160394910843369630438334623933329715061433126854176918572680591852491900095968421410826840041652944667732505393218836407650478812322026068521739096553158504199794298343738853325452463396386800405102937609865179610358195390467842398985491405704400439203254032406556044023342935195219037071893174834506422022272020608e3694"), - T("7.2101067461769422102719046864935900042020946053983858930538783546380741670622477730299778929732944630854151363803543748221329578582604770541719603126349873057195532110292846743563791049380608460124840094825775295226949060515234109528775156283010154878061758953690404860422160965162770534213586973008276804840802176466270909812402590547626695704877606695620372290113893333718784454195491413120278571381e3771"), - T("6.833361275000419432343650592319686694062674227594429857464606108305032877344799885305123090652406787997867592503236607009836687444829395552541403634550659710745653974928907350064693400553697943529341780925791186120102910163514753761188563821153759960369188532092163964559115206212975793696371318151500479047238166891574507004736959512033943570963451048752039151427991562182278434585245918970979972925e3848"), + T("1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + T("9.47747587596218770242116751705184563668845029215054154915126374673142219159548534317576897266130328412495991561490384353e76"), + T("8.98225489794452370997623936390755615068333094834545092387689795875746440121970819499035111276893290879203289092353747850e153"), + T("8.51291041070124257524798251795398355552294928156627848633073113916721592074889256105483993631579761345100284245144410506e230"), + T("8.06809030516483860484254925989129017112482132468761563276276594763374886826841745433660192438855214332469192411759402790e307"), + T("7.64651312322841630493169711336894888932951818957138997327518186691187347879142222644283389432604713409023263917264358401e384"), + T("7.24696436606255985380192585665173794455118215150711210905481870053193336336731228464367470327868286988180495111406609690e461"), + T("6.86829299533155197480610865771404565313986987801060270120621935139741577246731459024227828759564450034267891072352816870e538"), + T("6.50940811722948585242669672360741252715012399316164518226061001845519670701239429603657927628755169479689062519606799624e615"), + T("6.16927583978348964454665652571294215251327375137123272041877979478545511090085756858225302357977159539777447847855503405e692"), + T("5.84691629437043896753869572004324228849833391140408095171257918435296982661233664069534601413835876272500275725690968474e769"), + T("5.54140081286660645835370762406928689330724181979654545550204201113926269281603301564114980528619942840737770415885783439e846"), + T("5.25184925229805200184933663459660562493261505058724212670923083643709964294855282715531768162298567379648573804433968486e923"), + T("4.97742745928448409225535325233998957076879979440190164347796593390995994951755710667491911026476108957070504003155645761e1000"), + T("4.71734486697204622371883518659702954552385115723942808636490157561056417525827884479573988899517566587636669779645610803e1077"), + T("4.47085221753216236037602345430121605512330975424643767098987010800161616413051148037751552110081034066081309007796182114e1154"), + T("4.23723940366531198300986713567588008777043812458400705569721660157434941774066620870256745107265536124077734836797938268e1231"), + T("4.01583342289144005397455901781647949754375366066998182220342540048111140676724909947493787596336610499122085983712119281e1308"), + T("3.80599643873362813900306284477369187319506389058898599816705625750135796510808933786432614186155972485637939057212164098e1385"), + T("3.60712394320959592074309301816510372687695286650188776957291994751966018917404878612237961367128638199290387601511358836e1462"), + T("3.41864301533745457066062991907289263038319874930395315315257927161138360206596116102724713069518697248463965164712972907e1539"), + T("3.24001067063873569456703204286462007769933831045558617578289414699244767403736057931834775727420762410328297596596814910e1616"), + T("3.07071229688386868087623659761166306563170839771162347830514606977592027644137144160294469813988158463967740978461420862e1693"), + T("2.91026017157373047094077218552378456052150304677863670611408570458991015300131731261787644801415538043027268185097710615e1770"), + T("2.75819205688636078700279174380111581147323147951670302427494196210176478494486073721584055059489736040565979466551070179e1847"), + T("2.61406986804110104534167739704643351039975992759905579635058824027507742375380077276380178376470686987855503581867681046e1924"), + T("2.47747841124391945459619002346303925269640785743990333362087223895627681769816204236257960940497519376881830373722711456e2001"), + T("2.34802418757813746316913800667907927718925648696508255347624141597281474683823345136640610924639820192825966082309575303e2078"), + T("2.22533425939475124828943430510333464605535146852848680647615867629953075390889821397228584866395924176189346073006180260e2155"), + T("2.10905517593659363154553947631071808925462553114068144748077359132255993441363479041540672158497404660986163617828972963e2232"), + T("1.99885195510122536266653916064141606295420554580140619900425370702471778604391774578696867899999534265169574306808906810e2309"), + T("1.89440711840917173277691572886942144916664047407963356271198286654087884646102070148271284410118233470318337745546895603e2386"), + T("1.79541977639739687088375911648976940254141946934175300605485966288703931992861387257771264702798405630917098672594899744e2463"), + T("1.70160476180317540861346545791118106171203487587101437710693054174454895160403997508137760007058856854991413121389834429e2540"), + T("1.61269180804119796097157014527479883521656118500417752963675677684343588976915851637637232001139108420659882326614772004e2617"), + T("1.52842477060722969066998464046690349841548269556677423378408183476489015878816585045578141383463708674469365281537792914e2694"), + T("1.44856088916530600122626623629347336702026699647293500058111037526381692645547938577338582002157148103479049071921438452e2771"), + T("1.37287008819265239873777879432333192404914357037749380145412895230166352318128978403808382142784030558123748263528360645e2848"), + T("1.30113431416759441771790128053911040907207490879890145597562380328956450092799014856149474809345424672958343296615764490e2925"), + T("1.23314690739099822369963411660419632130352733806319401863570442920347696015409870236230656305563674376063778482449716744e3002"), + T("1.16871200663155636468514484039368694043851858077879103221831997264419096417014996945143145495038265243932745953706526253e3079"), + T("1.10764398487979357804590117089134596938734185016144401218934115168561552640448889215089150481162977776214124397487013110e3156"), + T("1.04976691458528698318220729857405616816444374000182094405930946710168752954926612218474430081526312018810817657409158490e3233"), + T("9.94914060836531582868347569174220216007647278536863127198023584205669825317884219144692385409156165042162234017403353704e3309"), + T("9.42927401023380446961314339401657458785389811652244742482194123119943160577946366372207045050095290781679375214307398844e3386"), + T("8.93657169598281164656322298275337750103095739790107943666668184304335665562867744740310577868880098719252549186849812451e3463"), + T("8.46961426624835911826517103631490619655296714141872141145089865045804196205328364155921945616925875458926717336478525196e3540"), + T("8.02705648870740089929294815816002943860908317454595055392168733404583122074223427054310572378841634984243492063192095337e3617"), + T("7.60762342267101369970765191988545810374824800500875923752736467467657167098026707905341603949108433696304383346239333297e3694"), + T("7.21010674617694221027190468649359000420209460539838589305387835463807416706224777302997789297329446308541513638035437482e3771"), + T("6.83336127500041943234365059231968669406267422759442985746460610830503287734479988530512309065240678799786759250323660701e3848"), }}; T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; @@ -102,19 +103,60 @@ void test() unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) { - T val = boost::multiprecision::exp(boost::multiprecision::sqrt((pi * (100 * k)) * (100 * k))); - T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + T val = exp(sqrt((pi * (100 * k)) * (100 * k))); + T e = relative_error(val, data[k]); unsigned err = e.template convert_to(); if(err > max_err) + { max_err = err; - val = boost::multiprecision::exp(-boost::multiprecision::sqrt((pi * (100 * k)) * (100 * k))); - e = ceil(fabs((val - (1/data[k])) / (1/data[k])) / std::numeric_limits::epsilon()); + } + val = exp(-sqrt((pi * (100 * k)) * (100 * k))); + e = relative_error(val, T(1/data[k])); err = e.template convert_to(); if(err > max_err) + { max_err = err; + } } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 1200); + BOOST_TEST(max_err < 5000); + + static const boost::array, 10> exact_data = + {{ + {{ std::ldexp(1.0, -50), "1.00000000000000088817841970012562676935794497867573073630970950828771105957980924149923657574337470594698012676100224953" }}, + {{ std::ldexp(1.0, -20), "1.00000095367477115374544678824955687428365188553281789775169686343569285229334215539516690752571791280462887427635269562" }}, + {{ std::ldexp(1.0, -10), "1.00097703949241653524284529261160650646585162918174419940186408264916250428896869173656853690882467186075613761065459261" }}, + {{ 0.25, "1.28402541668774148407342056806243645833628086528146308921750729687220776586723800275330641943955356890166283174967968731" }}, + {{ 0.5, "1.64872127070012814684865078781416357165377610071014801157507931164066102119421560863277652005636664300286663775630779700" }}, + {{ 0.75, "2.11700001661267466854536981983709561013449158470240342177913303081098453336401282000279156026661579821888590471901551426" }}, + {{ 10, "22026.4657948067165169579006452842443663535126185567810742354263552252028185707925751991209681645258954515555010924578367" }}, + {{ 10.5, "36315.5026742466377389120269013166179689315579671275857607480190550842856628099187749764427758174866310742771977376827512" }}, + {{ 25, "7.20048993373858725241613514661261579152235338133952787362213864472320593107782569745000325654258093194727871848859163684e10" }}, + {{ 31.25, "3.72994612957188849046766396046821396700589012875701157893019118883826370993674081486706667149871508642909416337810227575e13" }}, + }}; + + max_err = 0; + for(unsigned k = 0; k < exact_data.size(); k++) + { + T val = exp(exact_data[k][0]); + T e = relative_error(val, exact_data[k][1]); + unsigned err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + val = exp(-exact_data[k][0]); + e = relative_error(val, T(1/exact_data[k][1])); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 10); + + BOOST_TEST(exp(T(0)) == 1); } diff --git a/test/test_log.cpp b/test/test_log.cpp index 6905a19d..06a1fa90 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -155,10 +156,16 @@ void test() for(unsigned k = 0; k < data.size(); k++) { T val = boost::multiprecision::log(tenth + pi * (100 * k) * (100 * k)); - T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + T e = relative_error(val, data[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; + + val = boost::multiprecision::log(1 / (tenth + pi * (100 * k) * (100 * k))); + e = relative_error(val, T(-data[k])); + err = e.template convert_to(); + if(err > max_err) + max_err = err; } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 10); diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 15315716..45c81149 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -550,11 +551,13 @@ void test() unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) { - T val = boost::multiprecision::pow(data[k][0], data[k][1]); - T e = ceil(fabs((val - data[k][2]) / data[k][2]) / std::numeric_limits::epsilon()); + T val = pow(data[k][0], data[k][1]); + T e = relative_error(val, data[k][2]); unsigned err = e.template convert_to(); if(err > max_err) + { max_err = err; + } } std::cout << "Max error was: " << max_err << std::endl; } diff --git a/test/test_sin.cpp b/test/test_sin.cpp index f864f216..fcee9188 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -44,107 +45,107 @@ void test() { static const boost::array data = {{ - T("-0.86508717968306725270818735916557777730599862881751831435316187689198923993283521790498932671735565487198406771220725516598383731877859238387113868142949869746710189966430151098818077220502499366007854414799684058332411166897077090145203892212195332779437567412064793775991386725873517928401298446944183864288115967332769329141686571538486980106767058872245206155998183801127952563209302584516809804068"), - T("-0.79763858366953481259714957489398094215522640329181266031581650731842869736147648450595884906779088504877531298007549709584387968778149220989565106227234119514920955857261247662051707093671536949960734074547532698822613207712655346154633044042812601716529880175764244503721748663711634053406295594334950958339944104852233364538438677862264102037879639671893945361353871735018017912124896762688051071101"), - T("0.24694751481270393816989455015331965599577990782082974819820952118012926923238759680307705708664260650582713915549160371243741339970969856458066110960284501686263922529370992689985210394245398556897269198908375140963677715274995382713675198405319566885196239063678630261988218491689541221423165343153282194748383394932208400962140245741297801785867823531750497892155090643962052920864620306068640533502"), - T("0.98901354618029602175090175847463473510249349724827992487552201591187355027688868967642510244298626184812677555619430672681773746616625955520405639182509666726561394718194458471759810888548201804764323767747429110609233156664896859247358618600160567275441201363464883016296014653448896069217108492576553919644561112490398174029484186504656523262450502010870102764110481052688040511085868232105814711948"), - T("0.51950049121984044339738214491377557901625353846688754076530639315973808266367537549984077340395292997735469833961726139018356328562746542110713036413300858234570352248446585277165262617881845994831334396201052962253340345385732694479841227791272253515875849614421139763193705915213364104134129815431668002845745090121741132063335533091373430722704456843140034973756911786188684117004466722017726632522"), - T("-0.58642035909386951523768726695456120016000621264121118748335087467285913667949995440747093529938553592801111543797937432739099086039685347738175389472878030459744416755494430838140051041697426054654163206937572434284771573711696435479889701764370159398277764008561691680023659946126461221466012782190610630337123139316903479632261164136029483310671081582686512548571027968589672841130517258821548718323"), - T("-0.97395403906078050869854812754010898778588110998510216999024129038738667688293411233247507547660433481826378554022069634273248636871268889943206657893365085495908990103953837221918076997320773016743323042411543366853067308772133354882422005996025272628299293665330139411017152702226907842064909056524954416279212381635918809975293849765789208374484279614272702262407912547006420026381898882431367705053"), - T("-0.16835709980798731779763364790367408966536862842255885422223099514294148991190930841731427782587704016811168224144233724867667772646548196695213703654087451353235456862964457399533377933177974811857965890770102023474800434793450796708363928962489727300887984685066126963778396606401313473669144644834322766129500826515170674439623002622166198644072962305451561242924295496497673865817996583336572441598"), - T("0.84348366891508115788160933441645221250048198837137321279789763092610185698937735368600669544368356295269809174537295606389343383737539420322987993567260099654804618392548221004269952154930593772246006464043499864133979093900482916664339574929175866269202056532433888199203357312856354292159018595451908698245799015703256761432875415473819767251067057623850803832618933566752146583252515995117479236918"), - T("0.82202496781424117249008335037366444394838277287311909893953311783617946236226559994208529824007840086283951031540156850110406585677216210109663411850204100009480981960066776312830296812837514885788767571642502602406668355250521717143900938155040050319876970346676468728877434985446025106390443319201723689927608809502112038908318173339375177994594042306023859374748187782138324203679569236625767697521"), - T("-0.20644548078966172278108566693593446671066500009311131547131824408615418778824039740776494907158941999700112622969927991803006352755440587105827687343678969660134349201419765578964725001619127224358098018507197217477518476424879393188273937853474771810828977229876872752634362284867524335876537185168202058991502610059394227279455590213187025513498301701182162411129861291651458149809232765920694382718"), - T("-0.98201238933821398742743268689921357999177043645192920595050426161233644052306998773405192706007122833665193511424723001758553674874382453729473736698967318043174263178305116522678701572642644955125046307737685013720369337168716304062292912089093170603176088603092541579085189475146906948455044376044742840712066206800020164347462069250277677754185339937853236236760620498554396625100570743064458561012"), - T("-0.55457689409530213747356287041164249845415987873946462511683197174099773035991522752407571732843646308149750048541683187925931560402799808039721796055589991969835698977651564881904161899499528485305192774993355886674471830577982958725011962505578939702283684004757222629888058039297509802651204034056785648094344956773393289641899074853933663408784777126564054915893792740950321751681666900366149285673"), - T("0.55223631972553454320768877543021740444770413956059533654445613814866273197657606242587941011620967135302125178080188557790223181274132635479848516001166956056684169152368919096181559634794365697929692462933846221564253699877634144325144847224182437654513501600352945517055120350460290761483324902471273182702037419675899405714185903257727806710137118071603904368311406545920382236241507802254402670342"), - T("0.98253910729963647217200550710547625178905758256820276353400539681385849046526414570850258127380376793100401827298985862391604692170961399606758739415403392939490853364686526772514484164160895334184339538751098251139449063960873514450954179656572162689800220524835985551929362412800974236601606988593425142227646314150034874268224737812934754054739495109549178354735648685843025309695149000523043036256"), - T("0.20919424161231759292985627465559155127857466748292444765172341549043455435483356353779261807927572689301399184910446505295185314912207254913673684840121644950196263845525205209069485089301207501133253448764073025457512071224229423661258059212569761388984180893967120131886763302041343297149817612448231084051035085349821477062216670975268069118975416132488618059227673886548754511524393205260913936737"), - T("-0.82042150034016416806875390736702748196355225785028360060677365666061470851725327317484829164156996988612675463903575414696300136809557656769505171924327821177877208936984569326071873868949719900334446867163962763207795935703399610925921076634415348400788763860462929861356452609306026119961919669078311635349472648728526901263549622576885884996291919276608766907523487313088490283878962209939268414829"), - T("-0.84498980323075860897972946021725417020274887656496755152613838764676035268791649188464914202966471633575987923264828416390016799882223646789601058107569902148674040269544868920695600748107986559656481124234185704814218734471348170295455557819067840791831040541198080087226424277346298230729678145499808600603861335243905613388932855271426976928024047466289393683437131604292988966125504076029384924023"), - T("0.16558643533491417205585047942945840817444866977186231320483545168338776228411479964576268852405814440921094618356469443677441509984568603636330335278789316351077745488280059266519036588084571034766067428538242876359850813716345435707699637862360396048950400623443566517903264884891653913736982243815926409161441171926621253221896245282532431364608500284511449412428102071793828094632271947929662322388"), - T("0.9733130134422248664781076439996325547596041902633251431309613137772871577452457011348386026771902539246123917754369011815275465953253766314483807639106238230199709503923447643159359893490066619470146552346442263259964047308322485032089683425930804181966240839058765435955921596502848477098334939721288492487750073064012585262871240814591890531382462762625592433554435697556163942273461885638661645373"), - T("0.58869425301303541994797274551524668431807337246095715070998523760895824155086577422557656235988936714948459396658626194388329584290953541802060334893578288199017940637454710820521526799628794241448315885605593820784070904763717099063196519196389181232206959679228386773967307850125102763819453488563433855077856029436716904341327752651679433491068803177798096114777267163356371922112193539114936367793"), - T("-0.51709728401438414917109716343072272559608361642833403289320143191669289972512815282728235788726767946133258714516539347300398650917111088383730840642462745361559628023336834708274177008810720997864503236483231424256182008792514317978767120858313922250278919795149943234196749501590214648800764097687555634887106709926715156050968991302040120816446887836448112221991715147755412747643904982369941874903"), - T("-0.98942504561778994579633520641173655056014959757317198390962485163668002823254326156828513148058511330328117672273198435854028958189163569498745241605165009769541862169414925124968295274462159200520442455095613008718526467538007940197043090974670359128924585720097669855764038631475310106434490427905711290624710915672501400113806220416195439435490181070678989789478092500957769720727750016650901714876"), - T("-0.24966961848279291797571833930275478107046130070512731730054610018931793329197222379145867877191403438507358664845958042303643850373616999952368954956802652884289978026682268405432675662623924967650629865863280328006489120844535221004915558956531029998007360982378798891060454706118319300864403238959986801161474819341364524976070498799822591253693631124434026399072435454954851787496900161449413279223"), - T("0.79594055595422952691181178601097588849087648705672837252520925001820847496121721128286756288605360935162062680205427201959305734943295649471345888560139726757801278052687627513338719817916945750214503848241201988433673534399927155896112448547784281558455109017382599606935223412144543300644796946427196636388890407359228183542249818866763328733472675174818547133151154516588878300883530746640968325861"), - T("0.86649337624388547603453321055003727682405511135812925957248489739919757880982158700509398511202886625151501180599611933401736555472982930024421765233048287030623272875751902474678241444565197252953357529927172840699144509942108163113181199347462221304945816329094035938388900123384165001280011688853078191968630514719137943065609922040635003116435361117139325021519623335846499222050126246453597170833"), - T("-0.1244410370371604254208240524194278926442108653864928935045533919736466234398227704731948452746209576611285042916086804685407426387667022583034033620993631898331144469445927075361836574325552419453828929182451743365661513957092134365138299104921209789330945195117245194360833974076928889872484098355943802078944073614928420504484518104238232385695964828077489150197654158701678306792352671268317890272"), - T("-0.96293046254479079199525681753175960597403031074325898542927860894499480571620304305496779255522714740449920561168034834326825673596092141778811133613057020474685368838786612124083863539941316962278807332763650117226990808742108594645615178525818371573122469236743437907516188100317299657360446054991401261819129204379540798883211112991870608214671142610787565091372101286504874487369815732318336349301"), - T("-0.62179356795469823415192312397624874675187191101898449037192803173787210412483490820000397097177845254715052331863963593667486830949291665803517410280665438510706842857082320141162218238699592290729367363950604466282373746899578041764378198664733652245195397766367192007717967103668113752808285669458804690643918469292331076180494649617596159416023979394805630825188506001209288256336069204288392918838"), - T("0.48106401879047921636300391903940107974582760756679309056624716720150642739438342683672522048951018737803088677542525404601585084899079521603734609111135623651892724625992491018152917388956983222505917061754711563327272328292684822300781993087528192469722167755578240677892037874808381277754976653429844703376014341933327393380277555990041743102376562190670837062637051362532345331538219172506270246382"), - T("0.99459994598660210790246203022148930567403641332218416710062008621506849496380708626551905127945616727090196117664589091004541642161620912257208486753611501380010498988340379322071716856719164564672927645435101404830980303745361961742256873999110722481713879285794690870477524893138199111938913573011925775303350770468373885738832279778798291949531285037943371526561613622424317208916781257715667313581"), - T("0.28971323531857568215733762332571032238826720017802004073812127963067217035517116389133284725195297132478232737373492302474489345753341693637584844179360668204049858751950419151081083323122754896023020805399882258107804380387112498888463322046038842525866090837069466212429580864869728865250452052787720449604911495690324684990021677192825514006536158108787009532155828922880124667158494830079658512834"), - T("-0.77008317127836149586878227059441350607034119134834670931732901937779794039455678722027323000807268437290639233506821159491390367599326413477276644187223128663850330256445887240546131620117611701853928301285348103306423446252568562902316700603944623091642743103450263900938785484049174821097911777581836743736428447638710800031710950631619240205470844855655792342941803794181628118648640971785223895876"), - T("-0.88649850017673821224561809313855387711494312733345943767846677270453513982665617998145538590166442213419297144115248659615137339374320428869731210388654046137340073163830069184603212007278659182492697000063091326735676965960505375616122884162932165199220730427526058986119610548232796127810029383442287778473786899637739243088842682085531376471601373062369273637834719593554537141683999217223108777744"), - T("0.083080439682369446261941860869339750420290004566040999778829779164510726472983010580067243494180590665495350929857908288257260333087985455133237616981062631238079114106138544790668480770034429554478579438789193350580847656213214727573008763057329069201052276891726438472292117455024152732335694633669865925030242983966039212743857415675412320417462552183844941128084005364683434559113799225166204962233"), - T("0.95088269145580379080881101181112994052817118522049856992220036183689985937794231145980774478416653809589611744235048028615644615194631392655321782728314051357571890517116936363315155374421300181857604455336079096611022607668388384799386418069760723004847858784954833878669474357403336991887563364651104186693715603819443888233612866696932669196365387585172649113432965547015182359279258388342378601416"), - T("0.65381759943134372106091314588882519891954306836908397778723174077695027443392791956504268149479549903097213397297315499069850358516736287190903269479767199733614758880061832597202653797690144333090552903833899073895212983370074179915262608190468586811072275899498782703930003207603330356201921815802020943598313063056751498074179598679039887095914705463376631567774307957063595250839360463815064201881"), - T("-0.44419883729776869434215071043777351144885030313451423935916035359618633896743881816177107613844097597506905160463293878480033961624169222223295759692648326664891288415570974076231512054827602757300757558932537164133079144259056831830919794753959849196109997567447839019812358107684761555967862120024116269901062705630447884553959212830932666828758642780403825798457036759897149148537604844399459548053"), - T("-0.99805485931896998415393032770516446507771859322057899721697973416742915484901238232275785525940419957209526513627987177343779809373389157284465387153256600311648238334663448491831652332368312374266794595524373421505295425580509620840292149779344897042078912546100024102919688347595170844681619630553312369459496674685957338099812389267540391789384661598432484560731964762141424249915228499619880194537"), - T("-0.32925584367246074527751396405706006739637798458722245566584108718687942076934044708484934395776690595227015287405290706639110667384016496689668602236850778364504698270562443122446777121633580240826031233297957129154523055470095490128048296939167974638270094687461177877139544097682449778044363207679045057493400456686353020427908875447286459468112566742417779096833118762203417239243684311231171355257"), - T("0.74289406214691971730748689577071217763372018162585246470580187915854993014301138575550281083980887718816934749714046327786941209573648523055241872433461772076860288459827515491353103487336092666555533666775562550333977874850593623837303036248122754018490021383285853316403824589398140210724484596507930263094598302837215576862656152830461839065227673408330599330179492764472850719715849698041674036671"), - T("0.90497057965861947038086599125811051384385044697380649969790067815919477474459340879746896604169505347120527692320057718967343970641857165915886346383145960515992441520153342687355055159285406653023104853613872396986139584358904781952363737284861566876891343765798384121744173765740395134357707977315982337368931113664139166273039854021692888036428013020429307841621946009361316544995599016861275630769"), - T("-0.041576169205724414854331070120053457632530839733700369568167900754032406936654732772225888568634961935991599374915238690240599985796132138663492274966652919918441321848911576199257910762408333861417879305855108842865299418446579173115561267409572938992011498300648706364387410319460214397723214932915588169565205375812490511157716082500702780952451334934264616069402150160091480447723605317627380573224"), - T("-0.93719053469287541428447587920734971303045432291101939590716959209616543859713365160616776090412883872180361728110905082632348674501130850562014606872006847637794825897919364230003376975014085954809549306630677263098107502639663445116999448134011722873039267927440801790504248068619316004733842223304424897958505882332051426143421784920188133729127262166283872235910357317736650757661074470493571412889"), - T("-0.68471096746912734562470712876063800310010723726902681221146004451735978903661775368964845187095694357185341078508280456672582218780943948231295585200462910309462638043306220829569568223236127599504907044705589687387386319181085952764133248551365406192657503789196736085441072782932910447315642044863129150642662429341110770180104183011207149983149660707056083856793755175252844455169463798794450950564"), - T("0.40656549143420863029908616751057885992068413298024300589949432115120595898702030047373213851768191655418538252805786101555132655463705735655711116154911765012476201409686869641764641591979668818343426771144822241041750152386563094831102053728224980943104700599378495286307562549354472575266695139105050719290255561758911030594734879707560039179536988148731390148863859754525169110234247580451842221669"), - T("0.99978381094521086442978283578205200383899997058493813685797491852361573237867864126930099929206074874924525764484785288016649661565231871317512839959145480453557525203272815558595173449617271532616787029536616206070064038068200899478815974462302016941233137744957010925379020671232973472871426623684133227677308974216593623778540970772162801182795433315750474086424241697242150612379589791040978731667"), - T("0.36822906150398015822020319344162532428677981447045504526401832896397568656416150947456641712465258877489220724479853323760381517310729310497119744108741895595122245701305436253648702833101014863503443210528716577148214088604629263271753365879547676920872334528859185577830585960895038151179369059434978333166167532494557340097007973338568999353459041439303550202850628759030952416080241927287498139623"), - T("-0.7144202473793071622881824775602288526051552507380513260225595579233618296068431093342018128610611262439148937183337715231254167800684731882124998094889468876528172261692144316638297695446478340662483258456439006572000095777092767225185208121633549640410407788341811629709553299018947000385149072176583748965166297086235970966085113896085627672474399917518485166722788989758308777458718519262591124605"), - T("-0.92187767045167441324530701803233328862428889387952715397673074188905541924455439014301496958042559842229652278722386549208881577386402901283648710147036914825018808066251392970466575927695920587735551236320976667968957032620207459743622857456422499005778316090809442840146125918223889417182053059405944140104740509712594294160758554714036208559142846789714294797916313510255933830907372057747524929562"), - T("0"), - T("0.92187767045167441324530701803233328862428889387952715397673074188905541924455439014301496958042559842229652278722386549208881577386402901283648710147036914825018808066251392970466575927695920587735551236320976667968957032620207459743622857456422499005778316090809442840146125918223889417182053059405944140104740509712594294160758554714036208559142846789714294797916313510255933830907372057747524929562"), - T("0.7144202473793071622881824775602288526051552507380513260225595579233618296068431093342018128610611262439148937183337715231254167800684731882124998094889468876528172261692144316638297695446478340662483258456439006572000095777092767225185208121633549640410407788341811629709553299018947000385149072176583748965166297086235970966085113896085627672474399917518485166722788989758308777458718519262591124605"), - T("-0.36822906150398015822020319344162532428677981447045504526401832896397568656416150947456641712465258877489220724479853323760381517310729310497119744108741895595122245701305436253648702833101014863503443210528716577148214088604629263271753365879547676920872334528859185577830585960895038151179369059434978333166167532494557340097007973338568999353459041439303550202850628759030952416080241927287498139623"), - T("-0.99978381094521086442978283578205200383899997058493813685797491852361573237867864126930099929206074874924525764484785288016649661565231871317512839959145480453557525203272815558595173449617271532616787029536616206070064038068200899478815974462302016941233137744957010925379020671232973472871426623684133227677308974216593623778540970772162801182795433315750474086424241697242150612379589791040978731667"), - T("-0.40656549143420863029908616751057885992068413298024300589949432115120595898702030047373213851768191655418538252805786101555132655463705735655711116154911765012476201409686869641764641591979668818343426771144822241041750152386563094831102053728224980943104700599378495286307562549354472575266695139105050719290255561758911030594734879707560039179536988148731390148863859754525169110234247580451842221669"), - T("0.68471096746912734562470712876063800310010723726902681221146004451735978903661775368964845187095694357185341078508280456672582218780943948231295585200462910309462638043306220829569568223236127599504907044705589687387386319181085952764133248551365406192657503789196736085441072782932910447315642044863129150642662429341110770180104183011207149983149660707056083856793755175252844455169463798794450950564"), - T("0.93719053469287541428447587920734971303045432291101939590716959209616543859713365160616776090412883872180361728110905082632348674501130850562014606872006847637794825897919364230003376975014085954809549306630677263098107502639663445116999448134011722873039267927440801790504248068619316004733842223304424897958505882332051426143421784920188133729127262166283872235910357317736650757661074470493571412889"), - T("0.041576169205724414854331070120053457632530839733700369568167900754032406936654732772225888568634961935991599374915238690240599985796132138663492274966652919918441321848911576199257910762408333861417879305855108842865299418446579173115561267409572938992011498300648706364387410319460214397723214932915588169565205375812490511157716082500702780952451334934264616069402150160091480447723605317627380573224"), - T("-0.90497057965861947038086599125811051384385044697380649969790067815919477474459340879746896604169505347120527692320057718967343970641857165915886346383145960515992441520153342687355055159285406653023104853613872396986139584358904781952363737284861566876891343765798384121744173765740395134357707977315982337368931113664139166273039854021692888036428013020429307841621946009361316544995599016861275630769"), - T("-0.74289406214691971730748689577071217763372018162585246470580187915854993014301138575550281083980887718816934749714046327786941209573648523055241872433461772076860288459827515491353103487336092666555533666775562550333977874850593623837303036248122754018490021383285853316403824589398140210724484596507930263094598302837215576862656152830461839065227673408330599330179492764472850719715849698041674036671"), - T("0.32925584367246074527751396405706006739637798458722245566584108718687942076934044708484934395776690595227015287405290706639110667384016496689668602236850778364504698270562443122446777121633580240826031233297957129154523055470095490128048296939167974638270094687461177877139544097682449778044363207679045057493400456686353020427908875447286459468112566742417779096833118762203417239243684311231171355257"), - T("0.99805485931896998415393032770516446507771859322057899721697973416742915484901238232275785525940419957209526513627987177343779809373389157284465387153256600311648238334663448491831652332368312374266794595524373421505295425580509620840292149779344897042078912546100024102919688347595170844681619630553312369459496674685957338099812389267540391789384661598432484560731964762141424249915228499619880194537"), - T("0.44419883729776869434215071043777351144885030313451423935916035359618633896743881816177107613844097597506905160463293878480033961624169222223295759692648326664891288415570974076231512054827602757300757558932537164133079144259056831830919794753959849196109997567447839019812358107684761555967862120024116269901062705630447884553959212830932666828758642780403825798457036759897149148537604844399459548053"), - T("-0.65381759943134372106091314588882519891954306836908397778723174077695027443392791956504268149479549903097213397297315499069850358516736287190903269479767199733614758880061832597202653797690144333090552903833899073895212983370074179915262608190468586811072275899498782703930003207603330356201921815802020943598313063056751498074179598679039887095914705463376631567774307957063595250839360463815064201881"), - T("-0.95088269145580379080881101181112994052817118522049856992220036183689985937794231145980774478416653809589611744235048028615644615194631392655321782728314051357571890517116936363315155374421300181857604455336079096611022607668388384799386418069760723004847858784954833878669474357403336991887563364651104186693715603819443888233612866696932669196365387585172649113432965547015182359279258388342378601416"), - T("-0.083080439682369446261941860869339750420290004566040999778829779164510726472983010580067243494180590665495350929857908288257260333087985455133237616981062631238079114106138544790668480770034429554478579438789193350580847656213214727573008763057329069201052276891726438472292117455024152732335694633669865925030242983966039212743857415675412320417462552183844941128084005364683434559113799225166204962233"), - T("0.88649850017673821224561809313855387711494312733345943767846677270453513982665617998145538590166442213419297144115248659615137339374320428869731210388654046137340073163830069184603212007278659182492697000063091326735676965960505375616122884162932165199220730427526058986119610548232796127810029383442287778473786899637739243088842682085531376471601373062369273637834719593554537141683999217223108777744"), - T("0.77008317127836149586878227059441350607034119134834670931732901937779794039455678722027323000807268437290639233506821159491390367599326413477276644187223128663850330256445887240546131620117611701853928301285348103306423446252568562902316700603944623091642743103450263900938785484049174821097911777581836743736428447638710800031710950631619240205470844855655792342941803794181628118648640971785223895876"), - T("-0.28971323531857568215733762332571032238826720017802004073812127963067217035517116389133284725195297132478232737373492302474489345753341693637584844179360668204049858751950419151081083323122754896023020805399882258107804380387112498888463322046038842525866090837069466212429580864869728865250452052787720449604911495690324684990021677192825514006536158108787009532155828922880124667158494830079658512834"), - T("-0.99459994598660210790246203022148930567403641332218416710062008621506849496380708626551905127945616727090196117664589091004541642161620912257208486753611501380010498988340379322071716856719164564672927645435101404830980303745361961742256873999110722481713879285794690870477524893138199111938913573011925775303350770468373885738832279778798291949531285037943371526561613622424317208916781257715667313581"), - T("-0.48106401879047921636300391903940107974582760756679309056624716720150642739438342683672522048951018737803088677542525404601585084899079521603734609111135623651892724625992491018152917388956983222505917061754711563327272328292684822300781993087528192469722167755578240677892037874808381277754976653429844703376014341933327393380277555990041743102376562190670837062637051362532345331538219172506270246382"), - T("0.62179356795469823415192312397624874675187191101898449037192803173787210412483490820000397097177845254715052331863963593667486830949291665803517410280665438510706842857082320141162218238699592290729367363950604466282373746899578041764378198664733652245195397766367192007717967103668113752808285669458804690643918469292331076180494649617596159416023979394805630825188506001209288256336069204288392918838"), - T("0.96293046254479079199525681753175960597403031074325898542927860894499480571620304305496779255522714740449920561168034834326825673596092141778811133613057020474685368838786612124083863539941316962278807332763650117226990808742108594645615178525818371573122469236743437907516188100317299657360446054991401261819129204379540798883211112991870608214671142610787565091372101286504874487369815732318336349301"), - T("0.1244410370371604254208240524194278926442108653864928935045533919736466234398227704731948452746209576611285042916086804685407426387667022583034033620993631898331144469445927075361836574325552419453828929182451743365661513957092134365138299104921209789330945195117245194360833974076928889872484098355943802078944073614928420504484518104238232385695964828077489150197654158701678306792352671268317890272"), - T("-0.86649337624388547603453321055003727682405511135812925957248489739919757880982158700509398511202886625151501180599611933401736555472982930024421765233048287030623272875751902474678241444565197252953357529927172840699144509942108163113181199347462221304945816329094035938388900123384165001280011688853078191968630514719137943065609922040635003116435361117139325021519623335846499222050126246453597170833"), - T("-0.79594055595422952691181178601097588849087648705672837252520925001820847496121721128286756288605360935162062680205427201959305734943295649471345888560139726757801278052687627513338719817916945750214503848241201988433673534399927155896112448547784281558455109017382599606935223412144543300644796946427196636388890407359228183542249818866763328733472675174818547133151154516588878300883530746640968325861"), - T("0.24966961848279291797571833930275478107046130070512731730054610018931793329197222379145867877191403438507358664845958042303643850373616999952368954956802652884289978026682268405432675662623924967650629865863280328006489120844535221004915558956531029998007360982378798891060454706118319300864403238959986801161474819341364524976070498799822591253693631124434026399072435454954851787496900161449413279223"), - T("0.98942504561778994579633520641173655056014959757317198390962485163668002823254326156828513148058511330328117672273198435854028958189163569498745241605165009769541862169414925124968295274462159200520442455095613008718526467538007940197043090974670359128924585720097669855764038631475310106434490427905711290624710915672501400113806220416195439435490181070678989789478092500957769720727750016650901714876"), - T("0.51709728401438414917109716343072272559608361642833403289320143191669289972512815282728235788726767946133258714516539347300398650917111088383730840642462745361559628023336834708274177008810720997864503236483231424256182008792514317978767120858313922250278919795149943234196749501590214648800764097687555634887106709926715156050968991302040120816446887836448112221991715147755412747643904982369941874903"), - T("-0.58869425301303541994797274551524668431807337246095715070998523760895824155086577422557656235988936714948459396658626194388329584290953541802060334893578288199017940637454710820521526799628794241448315885605593820784070904763717099063196519196389181232206959679228386773967307850125102763819453488563433855077856029436716904341327752651679433491068803177798096114777267163356371922112193539114936367793"), - T("-0.9733130134422248664781076439996325547596041902633251431309613137772871577452457011348386026771902539246123917754369011815275465953253766314483807639106238230199709503923447643159359893490066619470146552346442263259964047308322485032089683425930804181966240839058765435955921596502848477098334939721288492487750073064012585262871240814591890531382462762625592433554435697556163942273461885638661645373"), - T("-0.16558643533491417205585047942945840817444866977186231320483545168338776228411479964576268852405814440921094618356469443677441509984568603636330335278789316351077745488280059266519036588084571034766067428538242876359850813716345435707699637862360396048950400623443566517903264884891653913736982243815926409161441171926621253221896245282532431364608500284511449412428102071793828094632271947929662322388"), - T("0.84498980323075860897972946021725417020274887656496755152613838764676035268791649188464914202966471633575987923264828416390016799882223646789601058107569902148674040269544868920695600748107986559656481124234185704814218734471348170295455557819067840791831040541198080087226424277346298230729678145499808600603861335243905613388932855271426976928024047466289393683437131604292988966125504076029384924023"), - T("0.82042150034016416806875390736702748196355225785028360060677365666061470851725327317484829164156996988612675463903575414696300136809557656769505171924327821177877208936984569326071873868949719900334446867163962763207795935703399610925921076634415348400788763860462929861356452609306026119961919669078311635349472648728526901263549622576885884996291919276608766907523487313088490283878962209939268414829"), - T("-0.20919424161231759292985627465559155127857466748292444765172341549043455435483356353779261807927572689301399184910446505295185314912207254913673684840121644950196263845525205209069485089301207501133253448764073025457512071224229423661258059212569761388984180893967120131886763302041343297149817612448231084051035085349821477062216670975268069118975416132488618059227673886548754511524393205260913936737"), - T("-0.98253910729963647217200550710547625178905758256820276353400539681385849046526414570850258127380376793100401827298985862391604692170961399606758739415403392939490853364686526772514484164160895334184339538751098251139449063960873514450954179656572162689800220524835985551929362412800974236601606988593425142227646314150034874268224737812934754054739495109549178354735648685843025309695149000523043036256"), - T("-0.55223631972553454320768877543021740444770413956059533654445613814866273197657606242587941011620967135302125178080188557790223181274132635479848516001166956056684169152368919096181559634794365697929692462933846221564253699877634144325144847224182437654513501600352945517055120350460290761483324902471273182702037419675899405714185903257727806710137118071603904368311406545920382236241507802254402670342"), - T("0.55457689409530213747356287041164249845415987873946462511683197174099773035991522752407571732843646308149750048541683187925931560402799808039721796055589991969835698977651564881904161899499528485305192774993355886674471830577982958725011962505578939702283684004757222629888058039297509802651204034056785648094344956773393289641899074853933663408784777126564054915893792740950321751681666900366149285673"), - T("0.98201238933821398742743268689921357999177043645192920595050426161233644052306998773405192706007122833665193511424723001758553674874382453729473736698967318043174263178305116522678701572642644955125046307737685013720369337168716304062292912089093170603176088603092541579085189475146906948455044376044742840712066206800020164347462069250277677754185339937853236236760620498554396625100570743064458561012"), - T("0.20644548078966172278108566693593446671066500009311131547131824408615418778824039740776494907158941999700112622969927991803006352755440587105827687343678969660134349201419765578964725001619127224358098018507197217477518476424879393188273937853474771810828977229876872752634362284867524335876537185168202058991502610059394227279455590213187025513498301701182162411129861291651458149809232765920694382718"), - T("-0.82202496781424117249008335037366444394838277287311909893953311783617946236226559994208529824007840086283951031540156850110406585677216210109663411850204100009480981960066776312830296812837514885788767571642502602406668355250521717143900938155040050319876970346676468728877434985446025106390443319201723689927608809502112038908318173339375177994594042306023859374748187782138324203679569236625767697521"), - T("-0.84348366891508115788160933441645221250048198837137321279789763092610185698937735368600669544368356295269809174537295606389343383737539420322987993567260099654804618392548221004269952154930593772246006464043499864133979093900482916664339574929175866269202056532433888199203357312856354292159018595451908698245799015703256761432875415473819767251067057623850803832618933566752146583252515995117479236918"), - T("0.16835709980798731779763364790367408966536862842255885422223099514294148991190930841731427782587704016811168224144233724867667772646548196695213703654087451353235456862964457399533377933177974811857965890770102023474800434793450796708363928962489727300887984685066126963778396606401313473669144644834322766129500826515170674439623002622166198644072962305451561242924295496497673865817996583336572441598"), - T("0.97395403906078050869854812754010898778588110998510216999024129038738667688293411233247507547660433481826378554022069634273248636871268889943206657893365085495908990103953837221918076997320773016743323042411543366853067308772133354882422005996025272628299293665330139411017152702226907842064909056524954416279212381635918809975293849765789208374484279614272702262407912547006420026381898882431367705053"), - T("0.58642035909386951523768726695456120016000621264121118748335087467285913667949995440747093529938553592801111543797937432739099086039685347738175389472878030459744416755494430838140051041697426054654163206937572434284771573711696435479889701764370159398277764008561691680023659946126461221466012782190610630337123139316903479632261164136029483310671081582686512548571027968589672841130517258821548718323"), - T("-0.51950049121984044339738214491377557901625353846688754076530639315973808266367537549984077340395292997735469833961726139018356328562746542110713036413300858234570352248446585277165262617881845994831334396201052962253340345385732694479841227791272253515875849614421139763193705915213364104134129815431668002845745090121741132063335533091373430722704456843140034973756911786188684117004466722017726632522"), - T("-0.98901354618029602175090175847463473510249349724827992487552201591187355027688868967642510244298626184812677555619430672681773746616625955520405639182509666726561394718194458471759810888548201804764323767747429110609233156664896859247358618600160567275441201363464883016296014653448896069217108492576553919644561112490398174029484186504656523262450502010870102764110481052688040511085868232105814711948"), - T("-0.24694751481270393816989455015331965599577990782082974819820952118012926923238759680307705708664260650582713915549160371243741339970969856458066110960284501686263922529370992689985210394245398556897269198908375140963677715274995382713675198405319566885196239063678630261988218491689541221423165343153282194748383394932208400962140245741297801785867823531750497892155090643962052920864620306068640533502"), - T("0.79763858366953481259714957489398094215522640329181266031581650731842869736147648450595884906779088504877531298007549709584387968778149220989565106227234119514920955857261247662051707093671536949960734074547532698822613207712655346154633044042812601716529880175764244503721748663711634053406295594334950958339944104852233364538438677862264102037879639671893945361353871735018017912124896762688051071101"), - T("0.86508717968306725270818735916557777730599862881751831435316187689198923993283521790498932671735565487198406771220725516598383731877859238387113868142949869746710189966430151098818077220502499366007854414799684058332411166897077090145203892212195332779437567412064793775991386725873517928401298446944183864288115967332769329141686571538486980106767058872245206155998183801127952563209302584516809804068"), +T("-9.71360659712083391437631022096936715962104815777147739346439739644168480837178969413799829610404829247283169084501281105e-1"), +T("-5.95431113317256105006804890684659010940293672390817519158205264611725147142085353698349092164137652363446368483953564682e-1"), +T("5.09924118934356013545988500545586843463766955556781588535384546070893806324487181574368899833574915659357543038822935347e-1"), +T("9.90602974910637417521410554344955057938063175873799034495811832851567842600306335485818201417146475654562543760051881571e-1"), +T("2.57755634110962773819397192502372718147953063328591480930319110437537556577887190430547163274290595074462686853519200826e-1"), +T("-7.90852129665907861812449876176102241731921451584589870529143390612597378289323905030142878920134443274067663564142249906e-1"), +T("-8.70636054394434218558219672958497111094237434037462776135170928197514857325641761722162169311905082223410873872693125021e-1"), +T("1.16142192225871586802402588799179588339908282696987123538816621894316618250692422106879105583060486278819650782761165055e-1"), +T("9.60641850565339311654365605083646127348817546384991780755200411966145627086231307074524787693440076802209868233548778731e-1"), +T("6.28318825240308217440049590303028869715272770671179428040549526344092598897275498972932981684079339892035243316790587027e-1"), +T("-4.73718579778960595001132927360485548840577209745936881040433718918629103032639945353908537818475936329314134212199346978e-1"), +T("-9.95432766494621395340223548609251497842694553405493731879049259799325119533316838972006879914623359183523219011870805961e-1"), +T("-2.97704078652633309130390182393607392013126109733352620573058826659738026681661456497779386104992235762190242017128767206e-1"), +T("7.64723391125286889782047394187107836056829439952009227196240883193721606229047061163517791688110517783506991004016374431e-1"), +T("8.90335717074674250432504838435892622513509178529392798127561987551398090841490265311069534613651712468228001675091153605e-1"), +T("-7.47469618974513669394515485690188234127771130501791709462887130373371023385813212165673231177548426835629029005547008861e-2"), +T("-9.48261778982069330544079494960981900232314056127899219497335245577354566418258722147558010380033694835705634428764954401e-1"), +T("-6.60119969404606610211922488494059074732492583049845598285779387022002845776084527598443564095143849120847643366330179739e-1"), +T("4.36693827009658961576344650626557410722590226545637608661764593658572210930294024902150766064738444736422263939746970132e-1"), +T("9.98541130824430070642243744636010968399851408459030982248969144276197147611376115185206245742327729890090526273555800490e-1"), +T("3.37137695943362070360548307779555944485385294617304662646987679063953108310365389494460188124285214040163147170304540339e-1"), +T("-7.37272196933518190054375156317136276073182897209685319124536092629865074949247291797880288692223977281455156619510259042e-1"), +T("-9.08495699506960201290293288218820500948312195353635174830883006841931398581001427066173033535720385301624330783999899511e-1"), +T("3.32224697427099307204044509056982627738295866011152619834749776109067529453431741767996787924292629814505731320175556430e-2"), +T("9.34241854135599266375493853147210486293657026766576383005045752264274587199837314096798394557243705656211732557069413970e-1"), +T("6.90779551281016826784976005137338585011513089446563025258584317423906941741640583083551185645679047405447557105684226754e-1"), +T("-3.98913888475082839741071010629509607776766095858433376450534753556286110518195743624946499527251336022805096741714382999e-1"), +T("-9.99922692526403520897313527841668431397204867244750030781062964701898557028332255650446046614062333174844253917288331438e-1"), +T("-3.75988292423704532504216998833472116186771022412627192871974303806891208635376610998425108046077306043945435504842144332e-1"), +T("7.08546019140379445669962535829318394094758212505515423960726677977484727061149949358051741627739138448760095710063342839e-1"), +T("9.25084597170819667485373176055260044057716794391569156042799693611964098948722923916237050181882167134906470192542857299e-1"), +T("8.35947487571472125423673177137150279693224632368449469153892167972732129345714981936363891382927399742266512920038864004e-3"), +T("-9.18606321039298722214219289469027246078943851192917449117591801249272620492502932760495762195965214412326830491755901723e-1"), +T("-7.20244550473164405555518647469765134103488938825118543602681358279149452868549672550326500728323814331193184035259160414e-1"), +T("3.60444097985855629825697367385029316833790934188475151408740160657889784929257301330229580694580194294034115152177674537e-1"), +T("9.99575062430677992414643463029115424067356090568060307410717467085018957489304987413609313388961297483138454662118061646e-1"), +T("4.14188682766963304833862149212585018360876819555612195218295874225032162838027842720351664698295767693697842043579048219e-1"), +T("-6.78594534657286312316409269272929566493548786915986771929001823358451551885758307761400157853363173388867780400090112946e-1"), +T("-9.40073722462713282312837596921874850901167502371739429501407718251639587081137893231736511487958940802467918593519005653e-1"), +T("-4.99269632411748222821310824324558181913141458235676771744322439351386139493233963671531219603373207564905654915871172017e-2"), +T("9.01382218619061521491363679812206948759377256420255657634443270431495336446996377562469573885297156497163691224107230524e-1"), +T("7.48464012406957686684753003872919309910943477238245908909177973105841950470333390670719219379167068809799710776770734833e-1"), +T("-3.21350982331168500558883709193541886146178412146971245706190880193067020283050714591560922441331235332970961845050217575e-1"), +T("-9.97498841702838239659412520756556451623238132913559678626409839807628110807613195403956929948379909495726426243705794281e-1"), +T("-4.51672806064485973599605876288778011355969815150135195358334589946828629430271875346142404286368814526016297993583170592e-1"), +T("6.47469539349743367777844577149239337681085253251300560380374646379682072633705733561446355539618404778987844138766238618e-1"), +T("9.53437154306238691456130012770111782377503876017231780889420296856266641153714110120975772709549811845909173386912105405e-1"), +T("9.14081116365893107669584386407698218216480671014671832303147213716318806206478591012619084058741626713939006968851852873e-2"), +T("-8.82599332954202005638662236444958997569939600897565089251125658458817750203393016337212996488633688567918453254294067039e-1"), +T("-7.75389136447631492669594511701990356678047393586968390929688701894781023967621486245394406725747074772996680491766725244e-1"), +T("0"), +T("9.21877670451674413245307018032333288624288893879527153976730741889055419244554390143014969580425598422296522787223865492e-1"), +T("7.14420247379307162288182477560228852605155250738051326022559557923361829606843109334201812861061126243914893718333771523e-1"), +T("-3.68229061503980158220203193441625324286779814470455045264018328963975686564161509474566417124652588774892207244798533238e-1"), +T("-9.99783810945210864429782835782052003838999970584938136857974918523615732378678641269300999292060748749245257644847852880e-1"), +T("-4.06565491434208630299086167510578859920684132980243005899494321151205958987020300473732138517681916554185382528057861016e-1"), +T("6.84710967469127345624707128760638003100107237269026812211460044517359789036617753689648451870956943571853410785082804567e-1"), +T("9.37190534692875414284475879207349713030454322911019395907169592096165438597133651606167760904128838721803617281109050826e-1"), +T("4.15761692057244148543310701200534576325308397337003695681679007540324069366547327722258885686349619359915993749152386902e-2"), +T("-9.04970579658619470380865991258110513843850446973806499697900678159194774744593408797468966041695053471205276923200577190e-1"), +T("-7.42894062146919717307486895770712177633720181625852464705801879158549930143011385755502810839808877188169347497140463278e-1"), +T("3.29255843672460745277513964057060067396377984587222455665841087186879420769340447084849343957766905952270152874052907066e-1"), +T("9.98054859318969984153930327705164465077718593220578997216979734167429154849012382322757855259404199572095265136279871773e-1"), +T("4.44198837297768694342150710437773511448850303134514239359160353596186338967438818161771076138440975975069051604632938785e-1"), +T("-6.53817599431343721060913145888825198919543068369083977787231740776950274433927919565042681494795499030972133972973154991e-1"), +T("-9.50882691455803790808811011811129940528171185220498569922200361836899859377942311459807744784166538095896117442350480286e-1"), +T("-8.30804396823694462619418608693397504202900045660409997788297791645107264729830105800672434941805906654953509298579082883e-2"), +T("8.86498500176738212245618093138553877114943127333459437678466772704535139826656179981455385901664422134192971441152486596e-1"), +T("7.70083171278361495868782270594413506070341191348346709317329019377797940394556787220273230008072684372906392335068211595e-1"), +T("-2.89713235318575682157337623325710322388267200178020040738121279630672170355171163891332847251952971324782327373734923025e-1"), +T("-9.94599945986602107902462030221489305674036413322184167100620086215068494963807086265519051279456167270901961176645890910e-1"), +T("-4.81064018790479216363003919039401079745827607566793090566247167201506427394383426836725220489510187378030886775425254046e-1"), +T("6.21793567954698234151923123976248746751871911018984490371928031737872104124834908200003970971778452547150523318639635937e-1"), +T("9.62930462544790791995256817531759605974030310743258985429278608944994805716203043054967792555227147404499205611680348343e-1"), +T("1.24441037037160425420824052419427892644210865386492893504553391973646623439822770473194845274620957661128504291608680469e-1"), +T("-8.66493376243885476034533210550037276824055111358129259572484897399197578809821587005093985112028866251515011805996119334e-1"), +T("-7.95940555954229526911811786010975888490876487056728372525209250018208474961217211282867562886053609351620626802054272020e-1"), +T("2.49669618482792917975718339302754781070461300705127317300546100189317933291972223791458678771914034385073586648459580423e-1"), +T("9.89425045617789945796335206411736550560149597573171983909624851636680028232543261568285131480585113303281176722731984359e-1"), +T("5.17097284014384149171097163430722725596083616428334032893201431916692899725128152827282357887267679461332587145165393473e-1"), +T("-5.88694253013035419947972745515246684318073372460957150709985237608958241550865774225576562359889367149484593966586261944e-1"), +T("-9.73313013442224866478107643999632554759604190263325143130961313777287157745245701134838602677190253924612391775436901182e-1"), +T("-1.65586435334914172055850479429458408174448669771862313204835451683387762284114799645762688524058144409210946183564694437e-1"), +T("8.44989803230758608979729460217254170202748876564967551526138387646760352687916491884649142029664716335759879232648284164e-1"), +T("8.20421500340164168068753907367027481963552257850283600606773656660614708517253273174848291641569969886126754639035754147e-1"), +T("-2.09194241612317592929856274655591551278574667482924447651723415490434554354833563537792618079275726893013991849104465053e-1"), +T("-9.82539107299636472172005507105476251789057582568202763534005396813858490465264145708502581273803767931004018272989858624e-1"), +T("-5.52236319725534543207688775430217404447704139560595336544456138148662731976576062425879410116209671353021251780801885578e-1"), +T("5.54576894095302137473562870411642498454159878739464625116831971740997730359915227524075717328436463081497500485416831879e-1"), +T("9.82012389338213987427432686899213579991770436451929205950504261612336440523069987734051927060071228336651935114247230018e-1"), +T("2.06445480789661722781085666935934466710665000093111315471318244086154187788240397407764949071589419997001126229699279918e-1"), +T("-8.22024967814241172490083350373664443948382772873119098939533117836179462362265599942085298240078400862839510315401568501e-1"), +T("-8.43483668915081157881609334416452212500481988371373212797897630926101856989377353686006695443683562952698091745372956064e-1"), +T("1.68357099807987317797633647903674089665368628422558854222230995142941489911909308417314277825877040168111682241442337249e-1"), +T("9.73954039060780508698548127540108987785881109985102169990241290387386676882934112332475075476604334818263785540220696343e-1"), +T("5.86420359093869515237687266954561200160006212641211187483350874672859136679499954407470935299385535928011115437979374327e-1"), +T("-5.19500491219840443397382144913775579016253538466887540765306393159738082663675375499840773403952929977354698339617261390e-1"), +T("-9.89013546180296021750901758474634735102493497248279924875522015911873550276888689676425102442986261848126775556194306727e-1"), +T("-2.46947514812703938169894550153319655995779907820829748198209521180129269232387596803077057086642606505827139155491603712e-1"), +T("7.97638583669534812597149574893980942155226403291812660315816507318428697361476484505958849067790885048775312980075497096e-1"), +T("8.65087179683067252708187359165577777305998628817518314353161876891989239932835217904989326717355654871984067712207255166e-1"), }}; T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; @@ -154,12 +155,12 @@ void test() { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = sin(euler_gamma * ((100 * k) - 5000)); - T e = (data[k] == 0) ? T(ceil(fabs((val - data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon())); + T e = relative_error(val, data[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = sin(-euler_gamma * ((100 * k) - 5000)); - e = (data[k] == 0) ? T(ceil(fabs((val + data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val + data[k]) / -data[k]) / std::numeric_limits::epsilon())); + e = relative_error(val, T(-data[k])); err = e.template convert_to(); if(err > max_err) max_err = err; @@ -227,12 +228,12 @@ void test() { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = sin((euler_gamma + k) / 53); - T e = (small_data[k] == 0) ? T(ceil(fabs((val - small_data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - small_data[k]) / small_data[k]) / std::numeric_limits::epsilon())); + T e = relative_error(val, small_data[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = sin(-(euler_gamma + k) / 53); - e = (small_data[k] == 0) ? T(ceil(fabs((val + small_data[k]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val + small_data[k]) / -small_data[k]) / std::numeric_limits::epsilon())); + e = relative_error(val, T(-small_data[k])); err = e.template convert_to(); if(err > max_err) max_err = err; @@ -259,7 +260,7 @@ void test() for(unsigned k = 0; k < exact_data.size(); k++) { T val = sin(exact_data[k][0]); - T e = (exact_data[k][1] == 0) ? T(ceil(fabs((val - exact_data[k][1]) / std::numeric_limits::epsilon()))) : T(ceil(fabs((val - exact_data[k][1]) / exact_data[k][1]) / std::numeric_limits::epsilon())); + T e = relative_error(val, exact_data[k][1]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 7f559fec..e049b449 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -104,13 +105,13 @@ void test() { const T x = eg + k; T val = boost::multiprecision::sinh(x * x); - T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + T e = relative_error(val, data[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 1200); + BOOST_TEST(max_err < 2000); } diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index a0d3b792..547b69a9 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -10,6 +10,7 @@ #include #include +#include "test.hpp" #if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF50 @@ -104,13 +105,13 @@ void test() { const T x = eg + k; T val = boost::multiprecision::tanh(x * x); - T e = ceil(fabs((val - data[k]) / data[k]) / std::numeric_limits::epsilon()); + T e = relative_error(val, data[k]); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 1200); + BOOST_TEST(max_err < 10); } From 21a28f3bbe656fcc36bc7d491cfcba6a116cb713 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 20 Oct 2011 18:18:27 +0000 Subject: [PATCH 038/256] Fix eval_ldexp. [SVN r75071] --- include/boost/multiprecision/mpfr.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index b4d6286e..d5941d3f 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -625,6 +625,8 @@ inline void eval_ldexp(mpfr_real_backend& result, const mpfr_real_back mpfr_mul_2exp(result.data(), val.data(), e, GMP_RNDN); else if(e < 0) mpfr_div_2exp(result.data(), val.data(), -e, GMP_RNDN); + else + result = val; } template inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, int* e) From 628c8cd62f856f6f6e92db1b4a906a0bc9505115 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 22 Oct 2011 17:32:01 +0000 Subject: [PATCH 039/256] Added atan2, plus missing file. [SVN r75090] --- .../multiprecision/detail/default_ops.hpp | 9 + .../multiprecision/detail/functions/trig.hpp | 174 ++++++++++++ include/boost/multiprecision/mp_number.hpp | 1 + test/test.hpp | 41 +++ test/test_atan.cpp | 247 ++++++++++++++++++ 5 files changed, 472 insertions(+) create mode 100644 test/test.hpp create mode 100644 test/test_atan.cpp diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 587c99e8..961e03fc 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -398,6 +398,14 @@ inline void eval_round(T& result, const T& a) } } +template +void eval_atan2(T& result, const T& a, const Arithmetic& b) +{ + T x; + x = b; + eval_atan2(result, a, x); +} + // // These have to implemented by the backend, declared here so that our macro generated code compiles OK. // @@ -927,6 +935,7 @@ HETERO_BINARY_OP_FUNCTOR(ldexp, int) HETERO_BINARY_OP_FUNCTOR(frexp, int*) BINARY_OP_FUNCTOR(pow) BINARY_OP_FUNCTOR(fmod) +BINARY_OP_FUNCTOR(atan2) #undef BINARY_OP_FUNCTOR #undef UNARY_OP_FUNCTOR diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index 412d7ed0..a65ffdb6 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -557,3 +557,177 @@ inline void eval_acos(T& result, const T& x) result.negate(); } +template +void eval_atan(T& result, const T& x) +{ + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(x)) + { + case FP_NAN: + result = std::numeric_limits >::quiet_NaN().backend(); + return; + case FP_ZERO: + result = ui_type(0); + return; + case FP_INFINITE: + if(get_sign(x) < 0) + { + eval_ldexp(result, get_constant_pi(), -1); + result.negate(); + } + else + eval_ldexp(result, get_constant_pi(), -1); + return; + default: ; + } + + const bool b_neg = get_sign(x) < 0; + + T xx(x); + if(b_neg) + xx.negate(); + + if(xx.compare(fp_type(0.1)) < 0) + { + T t1, t2, t3; + t1 = ui_type(1); + t2 = fp_type(0.5f); + t3 = fp_type(1.5f); + multiply(xx, xx); + xx.negate(); + hyp2F1(result, t1, t2, t3, xx); + multiply(result, x); + return; + } + + if(xx.compare(fp_type(10)) > 0) + { + T t1, t2, t3; + t1 = fp_type(0.5f); + t2 = ui_type(1u); + t3 = fp_type(1.5f); + multiply(xx, xx); + divide(xx, si_type(-1), xx); + hyp2F1(result, t1, t2, t3, xx); + divide(result, x); + if(!b_neg) + result.negate(); + eval_ldexp(t1, get_constant_pi(), -1); + add(result, t1); + if(b_neg) + result.negate(); + return; + } + + + // Get initial estimate using standard math function atan. + fp_type d; + convert_to(&d, xx); + result = fp_type(std::atan(d)); + + // Newton-Raphson iteration + static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; + + T s, c, t; + for(boost::int32_t digits = double_digits10_minus_one; digits <= std::numeric_limits >::digits10; digits *= 2) + { + eval_sin(s, result); + eval_cos(c, result); + multiply(t, xx, c); + subtract(t, s); + multiply(s, t, c); + add(result, s); + } + if(b_neg) + result.negate(); +} + +template +void eval_atan2(T& result, const T& y, const T& x) +{ + typedef typename boost::multiprecision::detail::canonical::type si_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; + typedef typename T::exponent_type exp_type; + typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; + typedef typename mpl::front::type fp_type; + + switch(eval_fpclassify(y)) + { + case FP_NAN: + result = y; + return; + case FP_ZERO: + { + int c = get_sign(x); + if(c < 0) + result = get_constant_pi(); + else if(c >= 0) + result = ui_type(0); // Note we allow atan2(0,0) to be zero, even though it's mathematically undefined + return; + } + case FP_INFINITE: + { + if(eval_fpclassify(x) == FP_INFINITE) + { + result = std::numeric_limits >::quiet_NaN().backend(); + } + else + { + eval_ldexp(result, get_constant_pi(), -1); + if(get_sign(y) < 0) + result.negate(); + } + return; + } + } + + switch(eval_fpclassify(x)) + { + case FP_NAN: + result = x; + return; + case FP_ZERO: + { + eval_ldexp(result, get_constant_pi(), -1); + if(get_sign(x) < 0) + result.negate(); + return; + } + case FP_INFINITE: + if(get_sign(x) > 0) + result = ui_type(0); + else + result = get_constant_pi(); + if(get_sign(y) < 0) + result.negate(); + return; + } + + T xx; + divide(xx, y, x); + if(get_sign(xx) < 0) + xx.negate(); + + eval_atan(result, xx); + + // Determine quadrant (sign) based on signs of x, y + const bool y_neg = get_sign(y) < 0; + const bool x_neg = get_sign(x) < 0; + + if(y_neg != x_neg) + result.negate(); + + if(x_neg) + { + if(y_neg) + subtract(result, get_constant_pi()); + else + add(result, get_constant_pi()); + } +} + diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index e54c85cb..e2b1a6cc 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -28,6 +28,7 @@ class mp_number { typedef mp_number self_type; public: + typedef Backend backend_type; mp_number(){} mp_number(const mp_number& e) : m_backend(e.m_backend){} template diff --git a/test/test.hpp b/test/test.hpp new file mode 100644 index 00000000..657c5737 --- /dev/null +++ b/test/test.hpp @@ -0,0 +1,41 @@ + +#ifndef BOOST_MULTIPRECISION_TEST_HPP +#define BOOST_MULTIPRECISION_TEST_HPP + +template +T relative_error(T a, T b) +{ + T min_val = (std::numeric_limits::min)(); + T max_val = (std::numeric_limits::max)(); + + if((a != 0) && (b != 0)) + { + // TODO: use isfinite: + if(fabs(b) >= max_val) + { + if(fabs(a) >= max_val) + return 0; // one infinity is as good as another! + } + // If the result is denormalised, treat all denorms as equivalent: + if((a < min_val) && (a > 0)) + a = min_val; + else if((a > -min_val) && (a < 0)) + a = -min_val; + if((b < min_val) && (b > 0)) + b = min_val; + else if((b > -min_val) && (b < 0)) + b = -min_val; + return (std::max)(fabs((a-b)/a), fabs((a-b)/b)) / std::numeric_limits::epsilon(); + } + + // Handle special case where one or both are zero: + if(min_val == 0) + return fabs(a-b); + if(fabs(a) < min_val) + a = min_val; + if(fabs(b) < min_val) + b = min_val; + return (std::max)(fabs((a-b)/a), fabs((a-b)/b)) / std::numeric_limits::epsilon(); +} + +#endif diff --git a/test/test_atan.cpp b/test/test_atan.cpp new file mode 100644 index 00000000..db4eb33b --- /dev/null +++ b/test/test_atan.cpp @@ -0,0 +1,247 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include +#include "test.hpp" + +#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_E_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_E_FLOAT +#include +#endif + +template +T atan2_def(T y, T x) +{ + T t; + t.backend() = boost::multiprecision::big_num_default_ops::get_constant_pi(); + T t2; + if(x) + t2 = atan(y / x); + else + t2 = y.sign() * t / 2; + return t2 + (t / 2) * (1 - x.sign()) * T(y.sign() + 0.5).sign(); +} + +template +struct is_mpfr_type : public boost::mpl::false_ {}; + +template +struct is_mpfr_type > > : public boost::mpl::true_{}; + +template +void test() +{ + static const boost::array data = + {{ + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-101"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666667e-97"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666667e-93"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666667e-89"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666667e-85"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666667e-81"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-77"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-73"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-69"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238e-65"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238e-61"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238e-57"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238e-53"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238095238096349206349206349e-49"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349e-45"), + T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349206349206349206349206349e-41"), + T("9.99999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920634920634920634920634920544011544011544011544011544011544011544e-37"), + T("9.999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349206349206349206340115440115440115440115440115440115440115440115440115440115440116209346209346209e-33"), + T("9.999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349115440115440115440115440115440115440115440115440115440116209346209346209346209346209346209346209346209346209346202679543e-29"), + T("9.99999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920544011544011544011544011544011544011544011544011620934620934620934620934620934620934620934620934554267954267954267954267954267954267954267954268013091483679719e-25"), + T("9.999999999999999999999999999999999999999666666666666666666666666666666666666666686666666666666666666666666666666666666665238095238095238095238095238095238095238206349206349206349206349206349206349206340115440115440115440115440115440115440116209346209346209346209346209346209346209279542679542679542679542679542679542679548561895620719150130914836797189738366208428128459088211410192834341441152586663e-21"), + T("9.999999999999999999999999999999966666666666666666666666666666666866666666666666666666666666666665238095238095238095238095238095249206349206349206349206349206349115440115440115440115440115440116209346209346209346209346209346202679542679542679542679542679542738366208954444248561895620719149604599047323505527839893164970569113274066834438351466215243304983108499463325146458811824271509689681318218133e-17"), + T("9.999999999999999999999996666666666666666666666668666666666666666666666665238095238095238095238096349206349206349206349205440115440115440115440116209346209346209346209345542679542679542679542680130914836797189738366208428128459088211410192834817631628777139613052925311641589740930163598087002528653948764327011735444703713649735994600714288656350334489593033695272837185114343249547095046272603174268e-13"), + T("9.999999999999999666666666666666686666666666666665238095238095238206349206349206340115440115440116209346209346209279542679542679548561895620719149604599047323505575458940784018179051162265592202726621494746410579611835097095566286199717626418813764642659343446728207455753397291482030056516178836684094391777365260695851470017381944166954115569576329193296454393446430574957840819236721213626802085619e-9"), + T("0.00009999999966666666866666665238095249206349115440116209346202679542738366208428128463850116128619335776637836253560167434464812879197215298894881707269927081030999737549925482008672363799937606915962379247584324159094536421375755997513179578610677454920512897850953612762990732913046921088456079984429888220262137400213929962691532176198436788640624698990926490105259050461938357510947570244880435664081"), + T("0.78539816339744830961566084581987572104929234984377645524373614807695410157155224965700870633552926699553702162832057666177346115238764555793133985203212027936257102567548463027638991115573723873259549110720274391648336153211891205844669579131780047728641214173086508715261358166205334840181506228531843114675165157889704372038023024070731352292884109197314759000283263263720511663034603673798537790236"), + T("1.5706963267952299525626550249873704896065212085331517483940102693584808194810202180293789115097723406333076648941055516492022741759833189628737308869915412879148320539754700057326930986734751013960313584219296445913757777000240665569182597868494941800236191544832206381775972559949762275927455637707925634113006817837919481411335451596526426779712759369563859151046126747697908496855825977735219514481"), + T("1.5707963167948966192313220249730847754318980330208862438222342009158129649367552929648110725556184185509578339104318071142673796252326115673007840833450909541260947278453938016119958041324233151995987794877839930865561434524027270213271053829179745357590596408023867275770197075707094053216000680544580256094089113804288267449089904640326828789035666143699659867092108718279796583028512542392495421779"), + T("1.5707963267938966192313216916397514424319180330208862438208054294872415364764378326474936031472490101815502336217205184029120016698547471043186681600526965471042074304163483259318452680435202095109230279463923963492870040904012032740805456738144599352893425202988524603439218707929425378295371082108281620406379082813613862672159901100496534463976107550806601465567059619048829495421806391510160463001"), + T("1.5707963267948965192313216916397514420985846996878862438208056294872415364764378306473507460043918673244073765899887723711659699238229101634817272120007484952330785592874771970616254211570733230640365810600043257395046296021443620234312981206088055277773974880349347475097997796620171523611445056144296707974573126845590321623615288317089359131170138395627805178532322154433252386274406088878525130896"), + T("1.5707963267948966192213216916397514420985846996875529104874726294872415364764378326473507460043918673044073765899744866568802556381086244491974416088261453206299039561128740224575416159622681282588417758651991386266175167241223840014532761425201608391327088433455208280958809539778973505942839152244275827508237604782514078980809178018719474972957865632271450490908284680846718670522639450168825443945"), + T("1.5707963267948966192313206916397514420985846996875529104874722961539082034764378326473507460043918673244073765899744866566802556381086244491960130373975738920584753846844454510289702985019506679413814584048816783091570881436029034819727566620006803196521893628268096302936831517800951527920861130266253182819592915368594665061395258604800061112367475630116742454513973110064559653064241192080164878504"), + T("1.5707963267948966192313216915397514420985846996875529104874722961539082031431044993143507460043918673244073765899744866568802556381086244491940130373975738920584753846843025938861131556448078107985386012620245354520143421118568717359410106302546485736203322199696666822417350998320432047401380610785733702300121487566396862863593060802602258914565277827918940256045031718123167711672299800138772937113"), + T("1.5707963267948966192313216916397414420985846996875529104874722961539082031431044993140174126710588673244073765899744866568802556381086244491960130373975738920584553846843025938861131556448078107985243155477388211663000563975725860216552963445403628593347290453664920790671319252288686015654237753642876559442969539514448810915541112750654206966513329776061797398902251498342947931452519580358553156893"), + T("1.5707963267948966192313216916397514410985846996875529104874722961539082031431044993140174126710585339910740435899744866568802556381086244491960130373975738920584753846843025938861129556448078107985243155477388211663000563975711574502267249159689342879063004739379206504957033538002971729941063150468273384839794936339845636311255398464939921252227615490256602593707446303537753126257714385553358352607"), + T("1.5707963267948966192313216916397514420984846996875529104874722961539082031431044993140174126710585339910740432566411533238802556381086244491960130373975738920584753846843025938861131556448078107985243135477388211663000563975711574502267249159689342879061576167950635076385604966574543158512491721896844813411223507768417064883795081004622460934767298029939142275136017732109181697686285814124786923127"), + T("1.5707963267948966192313216916397514420985846896875529104874722961539082031431044993140174126710585339910740432566411533235469223047756244491960130373975738920584753846843025938861131556448078107985243155477388211663000563775711574502267249159689342879061576167950635076385604966574400301369634579039701956268380650625559922026652223861765318077624440887081999419104271700363149951654539782378755175984"), + T("1.5707963267948966192313216916397514420985846996865529104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626800373975738920584753846843025938861131556448078107985243155477388211663000563975711574502267249157689342879061576167950635076385604966574400301369634579039701956268366364911274207740937938147481032363338726601367713704818557414648864237368825496664469462809"), + T("1.5707963267948966192313216916397514420985846996875528104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405590584753846843025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167930635076385604966574400301369634579039701956268366364911274207740937938147479603791910155172796285133390128843220292808797396925235898034238"), + T("1.5707963267948966192313216916397514420985846996875529104774722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405587251420513513025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167950635076385604966574200301369634579039701956268366364911274207740937938147479603791910155172796285133389985986077435665940254068093055177095"), + T("1.570796326794896619231321691639751442098584699687552910487471296153908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552780155644807810798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903969995626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296053908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127418774093793814747960379191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153898203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960359191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908202143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832967056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513138998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908203143004499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566592025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104489314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499313017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954573157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017312671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412661058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671057533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671058533891074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803630124570637195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + }}; + + T arg = "1e-100"; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + T val = atan(arg); + T e = relative_error(val, data[k]); + unsigned err = e.template convert_to(); + if(err > max_err) + max_err = err; + val = atan(-arg); + e = relative_error(val, T(-data[k])); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + arg *= 10000; + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 10); + BOOST_TEST(atan(T(0)) == 0); + + // + // And again, but test all the phases of atan2: + // + arg = "1e-100"; + unsigned err; + for(unsigned k = 0; k < data.size(); k++) + { + T val = atan2(arg, 1); + T e = relative_error(val, atan2_def(arg, T(1))); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + val = atan2(-arg, 1); + e = relative_error(val, atan2_def(T(-arg), T(1))); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + val = atan2(arg, -1); + e = relative_error(val, atan2_def(arg, T(-1))); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + val = atan2(-arg, -1); + e = relative_error(val, atan2_def(T(-arg), T(-1))); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + arg *= 10000; + } + // + // special cases: + // + err = relative_error(T(atan2(T(0), T(1))), atan2_def(T(0), T(1))).template convert_to(); + if(err > max_err) + max_err = err; + err = relative_error(T(atan2(T(0), T(-1))), atan2_def(T(0), T(-1))).template convert_to(); + if(err > max_err) + max_err = err; + + T pi; + pi.backend() = boost::multiprecision::big_num_default_ops::get_constant_pi(); + + err = relative_error(T(atan2(T(1), T(0))), T(pi / 2)).template convert_to(); + if(err > max_err) + max_err = err; + if(! is_mpfr_type::value) + { + // MPFR seems to get the sign of this all wrong: + err = relative_error(T(atan2(T(-1), T(0))), T(pi / -2)).template convert_to(); + if(err > max_err) + max_err = err; + } + T mv = (std::numeric_limits::max)(); + err = relative_error(T(atan2(mv, T(1))), T(pi / 2)).template convert_to(); + if(err > max_err) + max_err = err; + err = relative_error(T(atan2(-mv, T(1))), T(pi / -2)).template convert_to(); + if(err > max_err) + max_err = err; + + if(std::numeric_limits::has_infinity) + { + mv = (std::numeric_limits::infinity)(); + err = relative_error(T(atan2(mv, T(1))), T(pi / 2)).template convert_to(); + if(err > max_err) + max_err = err; + err = relative_error(T(atan2(-mv, T(1))), T(pi / -2)).template convert_to(); + if(err > max_err) + max_err = err; + } + + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 40); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_E_FLOAT + test(); +#endif + return boost::report_errors(); +} + + + From c34e9f654f9316f7e25a186299468aeb2bce18f3 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 23 Oct 2011 11:23:13 +0000 Subject: [PATCH 040/256] Big search and replace namespace and class renaming: get rid of last references to "big_number" and "real". [SVN r75093] --- .../concepts/mp_number_architypes.hpp | 84 +++--- .../multiprecision/detail/default_ops.hpp | 16 +- include/boost/multiprecision/gmp.hpp | 212 +++++++-------- include/boost/multiprecision/mp_number.hpp | 124 ++++----- include/boost/multiprecision/mpfr.hpp | 242 +++++++++--------- test/Jamfile.v2 | 47 +++- test/linpack-benchmark.cpp | 10 +- test/mp_number_concept_check.cpp | 26 +- test/test_acos.cpp | 18 +- test/test_arithmetic.cpp | 30 +-- test/test_asin.cpp | 18 +- test/test_atan.cpp | 26 +- test/test_cos.cpp | 18 +- test/test_cosh.cpp | 18 +- test/test_exp.cpp | 18 +- test/test_log.cpp | 18 +- test/test_numeric_limits.cpp | 24 +- test/test_pow.cpp | 18 +- test/test_sin.cpp | 18 +- test/test_sinh.cpp | 18 +- test/test_tanh.cpp | 18 +- 21 files changed, 523 insertions(+), 498 deletions(-) diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index 92402dbc..da417ae1 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -23,53 +23,53 @@ namespace concepts{ #pragma warning(disable:4244) #endif -struct mp_number_backend_real_architype +struct mp_number_backend_float_architype { typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; typedef int exponent_type; - mp_number_backend_real_architype() + mp_number_backend_float_architype() { std::cout << "Default construct" << std::endl; } - mp_number_backend_real_architype(const mp_number_backend_real_architype& o) + mp_number_backend_float_architype(const mp_number_backend_float_architype& o) { std::cout << "Copy construct" << std::endl; m_value = o.m_value; } - mp_number_backend_real_architype& operator = (const mp_number_backend_real_architype& o) + mp_number_backend_float_architype& operator = (const mp_number_backend_float_architype& o) { m_value = o.m_value; std::cout << "Assignment (" << m_value << ")" << std::endl; return *this; } - mp_number_backend_real_architype& operator = (boost::uintmax_t i) + mp_number_backend_float_architype& operator = (boost::uintmax_t i) { m_value = i; std::cout << "UInt Assignment (" << i << ")" << std::endl; return *this; } - mp_number_backend_real_architype& operator = (boost::intmax_t i) + mp_number_backend_float_architype& operator = (boost::intmax_t i) { m_value = i; std::cout << "Int Assignment (" << i << ")" << std::endl; return *this; } - mp_number_backend_real_architype& operator = (long double d) + mp_number_backend_float_architype& operator = (long double d) { m_value = d; std::cout << "long double Assignment (" << d << ")" << std::endl; return *this; } - mp_number_backend_real_architype& operator = (const char* s) + mp_number_backend_float_architype& operator = (const char* s) { m_value = boost::lexical_cast(s); std::cout << "const char* Assignment (" << s << ")" << std::endl; return *this; } - void swap(mp_number_backend_real_architype& o) + void swap(mp_number_backend_float_architype& o) { std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; std::swap(m_value, o.m_value); @@ -100,7 +100,7 @@ struct mp_number_backend_real_architype std::cout << "Negating (" << m_value << ")" << std::endl; m_value = -m_value; } - int compare(const mp_number_backend_real_architype& o)const + int compare(const mp_number_backend_float_architype& o)const { std::cout << "Comparison" << std::endl; return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); @@ -123,151 +123,151 @@ struct mp_number_backend_real_architype long double m_value; }; -inline void add(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) +inline void add(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Addition (" << result.m_value << " += " << o.m_value << ")" << std::endl; result.m_value += o.m_value; } -inline void subtract(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) +inline void subtract(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Subtraction (" << result.m_value << " -= " << o.m_value << ")" << std::endl; result.m_value -= o.m_value; } -inline void multiply(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) +inline void multiply(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Multiplication (" << result.m_value << " *= " << o.m_value << ")" << std::endl; result.m_value *= o.m_value; } -inline void divide(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& o) +inline void divide(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Division (" << result.m_value << " /= " << o.m_value << ")" << std::endl; result.m_value /= o.m_value; } -inline void convert_to(boost::uintmax_t* result, const mp_number_backend_real_architype& val) +inline void convert_to(boost::uintmax_t* result, const mp_number_backend_float_architype& val) { *result = static_cast(val.m_value); } -inline void convert_to(boost::intmax_t* result, const mp_number_backend_real_architype& val) +inline void convert_to(boost::intmax_t* result, const mp_number_backend_float_architype& val) { *result = static_cast(val.m_value); } -inline void convert_to(long double* result, mp_number_backend_real_architype& val) +inline void convert_to(long double* result, mp_number_backend_float_architype& val) { *result = val.m_value; } -inline void eval_frexp(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg, int* exp) +inline void eval_frexp(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg, int* exp) { result = std::frexp(arg.m_value, exp); } -inline void eval_ldexp(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg, int exp) +inline void eval_ldexp(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg, int exp) { result = std::ldexp(arg.m_value, exp); } -inline void eval_floor(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_floor(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::floor(arg.m_value); } -inline void eval_ceil(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_ceil(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::ceil(arg.m_value); } -inline void eval_trunc(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_trunc(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = boost::math::trunc(arg.m_value); } -inline void eval_sqrt(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_sqrt(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::sqrt(arg.m_value); } -inline void eval_abs(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_abs(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::abs(arg.m_value); } -inline void eval_fabs(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_fabs(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::fabs(arg.m_value); } -inline int eval_fpclassify(const mp_number_backend_real_architype& arg) +inline int eval_fpclassify(const mp_number_backend_float_architype& arg) { return boost::math::fpclassify(arg.m_value); } -inline void eval_pow(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& b, const mp_number_backend_real_architype& e) +inline void eval_pow(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& b, const mp_number_backend_float_architype& e) { result = std::pow(b.m_value, e.m_value); } -inline void eval_pow(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& b, int e) +inline void eval_pow(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& b, int e) { result = std::pow(b.m_value, e); } -inline void eval_exp(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_exp(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::exp(arg.m_value); } -inline void eval_log(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_log(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::log(arg.m_value); } -inline void eval_sin(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_sin(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::sin(arg.m_value); } -inline void eval_cos(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_cos(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::cos(arg.m_value); } -inline void eval_tan(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_tan(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::tan(arg.m_value); } -inline void eval_asin(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_asin(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::asin(arg.m_value); } -inline void eval_acos(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_acos(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::acos(arg.m_value); } -inline void eval_atan(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_atan(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::atan(arg.m_value); } -inline void eval_sinh(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_sinh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::sinh(arg.m_value); } -inline void eval_cosh(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_cosh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::cosh(arg.m_value); } -inline void eval_tanh(mp_number_backend_real_architype& result, const mp_number_backend_real_architype& arg) +inline void eval_tanh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::tanh(arg.m_value); } -typedef boost::multiprecision::mp_number mp_number_real_architype; +typedef boost::multiprecision::mp_number mp_number_float_architype; }}} // namespaces @@ -278,10 +278,10 @@ namespace std{ #endif template <> -class numeric_limits : public std::numeric_limits +class numeric_limits : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::concepts::mp_number_real_architype number_type; + typedef boost::multiprecision::concepts::mp_number_float_architype number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 961e03fc..77240092 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -14,7 +14,7 @@ #include #include -namespace boost{ namespace multiprecision{ namespace big_num_default_ops{ +namespace boost{ namespace multiprecision{ namespace default_ops{ // // Default versions of mixed arithmetic, these just construct a temporary @@ -467,7 +467,7 @@ namespace math{ template inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { - using multiprecision::big_num_default_ops::eval_fpclassify; + using multiprecision::default_ops::eval_fpclassify; return eval_fpclassify(arg.backend()); } template @@ -535,7 +535,7 @@ inline typename detail::mp_exp::result_type trunc(const detail: template inline mp_number trunc(const mp_number& v, const Policy& pol) { - using big_num_default_ops::eval_trunc; + using default_ops::eval_trunc; mp_number result; eval_trunc(result.backend(), v.backend()); return result; @@ -603,7 +603,7 @@ inline typename detail::mp_exp::result_result round(const detai template inline mp_number round(const mp_number& v, const Policy& pol) { - using big_num_default_ops::eval_round; + using default_ops::eval_round; mp_number result; eval_round(result.backend(), v.backend()); return result; @@ -670,7 +670,7 @@ struct BOOST_JOIN(func, _funct)\ {\ void operator()(Backend& result, const Backend& arg)const\ {\ - using big_num_default_ops::BOOST_JOIN(eval_,func);\ + using default_ops::BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result, arg);\ }\ };\ @@ -719,13 +719,13 @@ struct BOOST_JOIN(func, _funct)\ {\ void operator()(Backend& result, const Backend& arg, const Backend& a)const\ {\ - using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result, arg, a);\ }\ template \ void operator()(Backend& result, const Backend& arg, const Arithmetic& a)const\ {\ - using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result, arg, a);\ }\ };\ @@ -866,7 +866,7 @@ struct BOOST_JOIN(func, _funct)\ {\ void operator()(Backend& result, Backend const& arg, Arg2 a)const\ {\ - using big_num_default_ops:: BOOST_JOIN(eval_,func);\ + using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result, arg, a);\ }\ };\ diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 8da15ee7..af72d94b 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -18,21 +18,21 @@ namespace boost{ namespace multiprecision{ template -struct gmp_real; +struct gmp_float; namespace detail{ template -struct gmp_real_imp +struct gmp_float_imp { typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; typedef long exponent_type; - gmp_real_imp(){} + gmp_float_imp(){} - gmp_real_imp(const gmp_real_imp& o) + gmp_float_imp(const gmp_float_imp& o) { // // We have to do an init followed by a set here, otherwise *this may be at @@ -44,25 +44,25 @@ struct gmp_real_imp mpf_set(m_data, o.m_data); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real_imp(gmp_real_imp&& o) + gmp_float_imp(gmp_float_imp&& o) { m_data[0] = o.m_data[0]; o.m_data[0]._mp_d = 0; } #endif - gmp_real_imp& operator = (const gmp_real_imp& o) + gmp_float_imp& operator = (const gmp_float_imp& o) { mpf_set(m_data, o.m_data); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real_imp& operator = (gmp_real_imp&& o) + gmp_float_imp& operator = (gmp_float_imp&& o) { mpf_swap(m_data, o.m_data); return *this; } #endif - gmp_real_imp& operator = (boost::uintmax_t i) + gmp_float_imp& operator = (boost::uintmax_t i) { boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; @@ -81,7 +81,7 @@ struct gmp_real_imp mpf_clear(t); return *this; } - gmp_real_imp& operator = (boost::intmax_t i) + gmp_float_imp& operator = (boost::intmax_t i) { bool neg = i < 0; *this = static_cast(std::abs(i)); @@ -89,22 +89,22 @@ struct gmp_real_imp mpf_neg(m_data, m_data); return *this; } - gmp_real_imp& operator = (unsigned long i) + gmp_float_imp& operator = (unsigned long i) { mpf_set_ui(m_data, i); return *this; } - gmp_real_imp& operator = (long i) + gmp_float_imp& operator = (long i) { mpf_set_si(m_data, i); return *this; } - gmp_real_imp& operator = (double d) + gmp_float_imp& operator = (double d) { mpf_set_d(m_data, d); return *this; } - gmp_real_imp& operator = (long double a) + gmp_float_imp& operator = (long double a) { using std::frexp; using std::ldexp; @@ -150,12 +150,12 @@ struct gmp_real_imp mpf_div_2exp(m_data, m_data, -e); return *this; } - gmp_real_imp& operator = (const char* s) + gmp_float_imp& operator = (const char* s) { mpf_set_str(m_data, s, 10); return *this; } - void swap(gmp_real_imp& o) + void swap(gmp_float_imp& o) { mpf_swap(m_data, o.m_data); } @@ -195,7 +195,7 @@ struct gmp_real_imp (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); return result; } - ~gmp_real_imp() + ~gmp_float_imp() { if(m_data[0]._mp_d) mpf_clear(m_data); @@ -204,7 +204,7 @@ struct gmp_real_imp { mpf_neg(m_data, m_data); } - int compare(const gmp_real& o)const + int compare(const gmp_float& o)const { return mpf_cmp(m_data, o.m_data); } @@ -219,7 +219,7 @@ struct gmp_real_imp template int compare(V v)const { - gmp_real d; + gmp_float d; d = v; return compare(d); } @@ -237,73 +237,73 @@ protected: } // namespace detail template -struct gmp_real : public detail::gmp_real_imp +struct gmp_float : public detail::gmp_float_imp { - gmp_real() + gmp_float() { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } - gmp_real(const gmp_real& o) : detail::gmp_real_imp(o) {} + gmp_float(const gmp_float& o) : detail::gmp_float_imp(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real(gmp_real&& o) : detail::gmp_real_imp(o) {} + gmp_float(gmp_float&& o) : detail::gmp_float_imp(o) {} #endif - gmp_real& operator=(const gmp_real& o) + gmp_float& operator=(const gmp_float& o) { - *static_cast*>(this) = static_cast const&>(o); + *static_cast*>(this) = static_cast const&>(o); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real& operator=(gmp_real&& o) + gmp_float& operator=(gmp_float&& o) { - *static_cast*>(this) = static_cast&&>(o); + *static_cast*>(this) = static_cast&&>(o); return *this; } #endif template - gmp_real& operator=(const V& v) + gmp_float& operator=(const V& v) { - *static_cast*>(this) = v; + *static_cast*>(this) = v; return *this; } }; template <> -struct gmp_real<0> : public detail::gmp_real_imp<0> +struct gmp_float<0> : public detail::gmp_float_imp<0> { - gmp_real() + gmp_float() { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); } - gmp_real(unsigned digits10) + gmp_float(unsigned digits10) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } - gmp_real(const gmp_real& o) : detail::gmp_real_imp<0>(o) {} + gmp_float(const gmp_float& o) : detail::gmp_float_imp<0>(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real(gmp_real&& o) : detail::gmp_real_imp<0>(o) {} + gmp_float(gmp_float&& o) : detail::gmp_float_imp<0>(o) {} #endif - gmp_real(const gmp_real& o, unsigned digits10) + gmp_float(const gmp_float& o, unsigned digits10) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); *this = o; } - gmp_real& operator=(const gmp_real& o) + gmp_float& operator=(const gmp_float& o) { - *static_cast*>(this) = static_cast const&>(o); + *static_cast*>(this) = static_cast const&>(o); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_real& operator=(gmp_real&& o) + gmp_float& operator=(gmp_float&& o) { - *static_cast*>(this) = static_cast &&>(o); + *static_cast*>(this) = static_cast &&>(o); return *this; } #endif template - gmp_real& operator=(const V& v) + gmp_float& operator=(const V& v) { - *static_cast*>(this) = v; + *static_cast*>(this) = v; return *this; } static unsigned default_precision() @@ -325,47 +325,47 @@ struct gmp_real<0> : public detail::gmp_real_imp<0> }; template -inline void add(gmp_real& result, const gmp_real& o) +inline void add(gmp_float& result, const gmp_float& o) { mpf_add(result.data(), result.data(), o.data()); } template -inline void subtract(gmp_real& result, const gmp_real& o) +inline void subtract(gmp_float& result, const gmp_float& o) { mpf_sub(result.data(), result.data(), o.data()); } template -inline void multiply(gmp_real& result, const gmp_real& o) +inline void multiply(gmp_float& result, const gmp_float& o) { mpf_mul(result.data(), result.data(), o.data()); } template -inline void divide(gmp_real& result, const gmp_real& o) +inline void divide(gmp_float& result, const gmp_float& o) { mpf_div(result.data(), result.data(), o.data()); } template -inline void add(gmp_real& result, unsigned long i) +inline void add(gmp_float& result, unsigned long i) { mpf_add_ui(result.data(), result.data(), i); } template -inline void subtract(gmp_real& result, unsigned long i) +inline void subtract(gmp_float& result, unsigned long i) { mpf_sub_ui(result.data(), result.data(), i); } template -inline void multiply(gmp_real& result, unsigned long i) +inline void multiply(gmp_float& result, unsigned long i) { mpf_mul_ui(result.data(), result.data(), i); } template -inline void divide(gmp_real& result, unsigned long i) +inline void divide(gmp_float& result, unsigned long i) { mpf_div_ui(result.data(), result.data(), i); } template -inline void add(gmp_real& result, long i) +inline void add(gmp_float& result, long i) { if(i > 0) mpf_add_ui(result.data(), result.data(), i); @@ -373,7 +373,7 @@ inline void add(gmp_real& result, long i) mpf_sub_ui(result.data(), result.data(), std::abs(i)); } template -inline void subtract(gmp_real& result, long i) +inline void subtract(gmp_float& result, long i) { if(i > 0) mpf_sub_ui(result.data(), result.data(), i); @@ -381,14 +381,14 @@ inline void subtract(gmp_real& result, long i) mpf_add_ui(result.data(), result.data(), std::abs(i)); } template -inline void multiply(gmp_real& result, long i) +inline void multiply(gmp_float& result, long i) { mpf_mul_ui(result.data(), result.data(), std::abs(i)); if(i < 0) mpf_neg(result.data(), result.data()); } template -inline void divide(gmp_real& result, long i) +inline void divide(gmp_float& result, long i) { mpf_div_ui(result.data(), result.data(), std::abs(i)); if(i < 0) @@ -398,17 +398,17 @@ inline void divide(gmp_real& result, long i) // Specialised 3 arg versions of the basic operators: // template -inline void add(gmp_real& a, const gmp_real& x, const gmp_real& y) +inline void add(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_add(a.data(), x.data(), y.data()); } template -inline void add(gmp_real& a, const gmp_real& x, unsigned long y) +inline void add(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_add_ui(a.data(), x.data(), y); } template -inline void add(gmp_real& a, const gmp_real& x, long y) +inline void add(gmp_float& a, const gmp_float& x, long y) { if(y < 0) mpf_sub_ui(a.data(), x.data(), -y); @@ -416,12 +416,12 @@ inline void add(gmp_real& a, const gmp_real& x, long y) mpf_add_ui(a.data(), x.data(), y); } template -inline void add(gmp_real& a, unsigned long x, const gmp_real& y) +inline void add(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_add_ui(a.data(), y.data(), x); } template -inline void add(gmp_real& a, long x, const gmp_real& y) +inline void add(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -432,17 +432,17 @@ inline void add(gmp_real& a, long x, const gmp_real& y) mpf_add_ui(a.data(), y.data(), x); } template -inline void subtract(gmp_real& a, const gmp_real& x, const gmp_real& y) +inline void subtract(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_sub(a.data(), x.data(), y.data()); } template -inline void subtract(gmp_real& a, const gmp_real& x, unsigned long y) +inline void subtract(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_sub_ui(a.data(), x.data(), y); } template -inline void subtract(gmp_real& a, const gmp_real& x, long y) +inline void subtract(gmp_float& a, const gmp_float& x, long y) { if(y < 0) mpf_add_ui(a.data(), x.data(), -y); @@ -450,12 +450,12 @@ inline void subtract(gmp_real& a, const gmp_real& x, long y) mpf_sub_ui(a.data(), x.data(), y); } template -inline void subtract(gmp_real& a, unsigned long x, const gmp_real& y) +inline void subtract(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_ui_sub(a.data(), x, y.data()); } template -inline void subtract(gmp_real& a, long x, const gmp_real& y) +inline void subtract(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -467,17 +467,17 @@ inline void subtract(gmp_real& a, long x, const gmp_real& y) } template -inline void multiply(gmp_real& a, const gmp_real& x, const gmp_real& y) +inline void multiply(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_mul(a.data(), x.data(), y.data()); } template -inline void multiply(gmp_real& a, const gmp_real& x, unsigned long y) +inline void multiply(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_mul_ui(a.data(), x.data(), y); } template -inline void multiply(gmp_real& a, const gmp_real& x, long y) +inline void multiply(gmp_float& a, const gmp_float& x, long y) { if(y < 0) { @@ -488,12 +488,12 @@ inline void multiply(gmp_real& a, const gmp_real& x, long y) mpf_mul_ui(a.data(), x.data(), y); } template -inline void multiply(gmp_real& a, unsigned long x, const gmp_real& y) +inline void multiply(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_mul_ui(a.data(), y.data(), x); } template -inline void multiply(gmp_real& a, long x, const gmp_real& y) +inline void multiply(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -505,17 +505,17 @@ inline void multiply(gmp_real& a, long x, const gmp_real& y) } template -inline void divide(gmp_real& a, const gmp_real& x, const gmp_real& y) +inline void divide(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_div(a.data(), x.data(), y.data()); } template -inline void divide(gmp_real& a, const gmp_real& x, unsigned long y) +inline void divide(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_div_ui(a.data(), x.data(), y); } template -inline void divide(gmp_real& a, const gmp_real& x, long y) +inline void divide(gmp_float& a, const gmp_float& x, long y) { if(y < 0) { @@ -526,12 +526,12 @@ inline void divide(gmp_real& a, const gmp_real& x, long y) mpf_div_ui(a.data(), x.data(), y); } template -inline void divide(gmp_real& a, unsigned long x, const gmp_real& y) +inline void divide(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_ui_div(a.data(), x, y.data()); } template -inline void divide(gmp_real& a, long x, const gmp_real& y) +inline void divide(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -543,36 +543,36 @@ inline void divide(gmp_real& a, long x, const gmp_real& y) } template -inline bool is_zero(const gmp_real& val) +inline bool is_zero(const gmp_float& val) { return mpf_sgn(val.data()) == 0; } template -inline int get_sign(const gmp_real& val) +inline int get_sign(const gmp_float& val) { return mpf_sgn(val.data()); } template -inline void convert_to(unsigned long* result, const gmp_real& val) +inline void convert_to(unsigned long* result, const gmp_float& val) { *result = mpf_get_ui(val.data()); } template -inline void convert_to(long* result, const gmp_real& val) +inline void convert_to(long* result, const gmp_float& val) { *result = mpf_get_si(val.data()); } template -inline void convert_to(double* result, const gmp_real& val) +inline void convert_to(double* result, const gmp_float& val) { *result = mpf_get_d(val.data()); } #ifdef BOOST_HAS_LONG_LONG template -inline void convert_to(long long* result, const gmp_real& val) +inline void convert_to(long long* result, const gmp_float& val) { - gmp_real t(val); + gmp_float t(val); if(get_sign(t) < 0) t.negate(); @@ -602,9 +602,9 @@ inline void convert_to(long long* result, const gmp_real& val) *result = -*result; } template -inline void convert_to(unsigned long long* result, const gmp_real& val) +inline void convert_to(unsigned long long* result, const gmp_float& val) { - gmp_real t(val); + gmp_float t(val); long digits = std::numeric_limits::digits - std::numeric_limits::digits; @@ -635,39 +635,39 @@ inline void convert_to(unsigned long long* result, const gmp_real& val // Native non-member operations: // template -inline void eval_sqrt(gmp_real& result, const gmp_real& val) +inline void eval_sqrt(gmp_float& result, const gmp_float& val) { mpf_sqrt(result.data(), val.data()); } template -inline void eval_abs(gmp_real& result, const gmp_real& val) +inline void eval_abs(gmp_float& result, const gmp_float& val) { mpf_abs(result.data(), val.data()); } template -inline void eval_fabs(gmp_real& result, const gmp_real& val) +inline void eval_fabs(gmp_float& result, const gmp_float& val) { mpf_abs(result.data(), val.data()); } template -inline void eval_ceil(gmp_real& result, const gmp_real& val) +inline void eval_ceil(gmp_float& result, const gmp_float& val) { mpf_ceil(result.data(), val.data()); } template -inline void eval_floor(gmp_real& result, const gmp_real& val) +inline void eval_floor(gmp_float& result, const gmp_float& val) { mpf_floor(result.data(), val.data()); } template -inline void eval_trunc(gmp_real& result, const gmp_real& val) +inline void eval_trunc(gmp_float& result, const gmp_float& val) { mpf_trunc(result.data(), val.data()); } template -inline void eval_ldexp(gmp_real& result, const gmp_real& val, long e) +inline void eval_ldexp(gmp_float& result, const gmp_float& val, long e) { if(e > 0) mpf_mul_2exp(result.data(), val.data(), e); @@ -677,7 +677,7 @@ inline void eval_ldexp(gmp_real& result, const gmp_real& val result = val; } template -inline void eval_frexp(gmp_real& result, const gmp_real& val, int* e) +inline void eval_frexp(gmp_float& result, const gmp_float& val, int* e) { long v; mpf_get_d_2exp(&v, val.data()); @@ -685,7 +685,7 @@ inline void eval_frexp(gmp_real& result, const gmp_real& val eval_ldexp(result, val, -v); } template -inline void eval_frexp(gmp_real& result, const gmp_real& val, long* e) +inline void eval_frexp(gmp_float& result, const gmp_float& val, long* e) { mpf_get_d_2exp(e, val.data()); eval_ldexp(result, val, -*e); @@ -1208,8 +1208,8 @@ struct gmp_rational using std::frexp; using std::ldexp; using std::floor; - using big_num_default_ops::add; - using big_num_default_ops::subtract; + using default_ops::add; + using default_ops::subtract; if (a == 0) { mpq_set_si(m_data, 0, 1); @@ -1374,11 +1374,11 @@ struct number_category : public mpl::int_{}; template<> struct number_category : public mpl::int_{}; -typedef mp_number > mpf_real_50; -typedef mp_number > mpf_real_100; -typedef mp_number > mpf_real_500; -typedef mp_number > mpf_real_1000; -typedef mp_number > mpf_real; +typedef mp_number > mpf_float_50; +typedef mp_number > mpf_float_100; +typedef mp_number > mpf_float_500; +typedef mp_number > mpf_float_1000; +typedef mp_number > mpf_float; typedef mp_number mpz_int; typedef mp_number mpq_rational; @@ -1394,9 +1394,9 @@ namespace std{ // numeric_limits [partial] specializations for the types declared in this header: // template -class numeric_limits > > +class numeric_limits > > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept @@ -1486,10 +1486,10 @@ private: { data_initializer() { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); } void do_nothing()const{} }; @@ -1497,12 +1497,12 @@ private: }; template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; template<> -class numeric_limits > > +class numeric_limits > > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(); } diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index e2b1a6cc..bb95fd8c 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -111,7 +111,7 @@ public: typename enable_if, mp_number& >::type operator+=(const V& v) { - using big_num_default_ops::add; + using default_ops::add; add(m_backend, canonical_value(v)); return *this; } @@ -142,7 +142,7 @@ public: typename enable_if, mp_number& >::type operator-=(const V& v) { - using big_num_default_ops::subtract; + using default_ops::subtract; subtract(m_backend, canonical_value(v)); return *this; } @@ -175,7 +175,7 @@ public: typename enable_if, mp_number& >::type operator*=(const V& v) { - using big_num_default_ops::multiply; + using default_ops::multiply; multiply(m_backend, canonical_value(v)); return *this; } @@ -207,7 +207,7 @@ public: operator%=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; + using default_ops::modulus; modulus(m_backend, canonical_value(v)); return *this; } @@ -222,21 +222,21 @@ public: // mp_number& operator++() { - using big_num_default_ops::increment; + using default_ops::increment; increment(m_backend); return *this; } mp_number& operator--() { - using big_num_default_ops::decrement; + using default_ops::decrement; decrement(m_backend); return *this; } mp_number operator++(int) { - using big_num_default_ops::increment; + using default_ops::increment; self_type temp(*this); increment(m_backend); return temp; @@ -244,7 +244,7 @@ public: mp_number operator--(int) { - using big_num_default_ops::decrement; + using default_ops::decrement; self_type temp(*this); decrement(m_backend); return temp; @@ -294,7 +294,7 @@ public: typename enable_if, mp_number& >::type operator/=(const V& v) { - using big_num_default_ops::divide; + using default_ops::divide; divide(m_backend, canonical_value(v)); return *this; } @@ -326,7 +326,7 @@ public: typename enable_if, mp_number& >::type operator&=(const V& v) { - using big_num_default_ops::bitwise_and; + using default_ops::bitwise_and; bitwise_and(m_backend, canonical_value(v)); return *this; } @@ -358,7 +358,7 @@ public: typename enable_if, mp_number& >::type operator|=(const V& v) { - using big_num_default_ops::bitwise_or; + using default_ops::bitwise_or; bitwise_or(m_backend, canonical_value(v)); return *this; } @@ -388,7 +388,7 @@ public: typename enable_if, mp_number& >::type operator^=(const V& v) { - using big_num_default_ops::bitwise_xor; + using default_ops::bitwise_xor; bitwise_xor(m_backend, canonical_value(v)); return *this; } @@ -414,12 +414,12 @@ public: // bool is_zero()const { - using big_num_default_ops::is_zero; + using default_ops::is_zero; return is_zero(m_backend); } int sign()const { - using big_num_default_ops::get_sign; + using default_ops::get_sign; return get_sign(m_backend); } // @@ -432,7 +432,7 @@ public: template T convert_to()const { - using big_num_default_ops::convert_to; + using default_ops::convert_to; T result; convert_to(&result, m_backend); return result; @@ -466,7 +466,7 @@ public: template typename enable_if, int>::type compare(const V& o)const { - using big_num_default_ops::get_sign; + using default_ops::get_sign; if(o == 0) return get_sign(m_backend); return m_backend.compare(canonical_value(o)); @@ -506,14 +506,14 @@ private: template void do_assign(const Exp& e, const detail::add_immediates&) { - using big_num_default_ops::add; + using default_ops::add; add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } /* template void do_assign(const Exp& e, const detail::add_and_negate_immediates&) { - using big_num_default_ops::add; + using default_ops::add; add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); m_backend.negate(); } @@ -521,14 +521,14 @@ private: template void do_assign(const Exp& e, const detail::subtract_immediates&) { - using big_num_default_ops::subtract; + using default_ops::subtract; subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } /* template void do_assign(const Exp& e, const detail::subtract_and_negate_immediates&) { - using big_num_default_ops::subtract; + using default_ops::subtract; subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); m_backend.negate(); } @@ -536,14 +536,14 @@ private: template void do_assign(const Exp& e, const detail::multiply_immediates&) { - using big_num_default_ops::multiply; + using default_ops::multiply; multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template void do_assign(const Exp& e, const detail::divide_immediates&) { - using big_num_default_ops::divide; + using default_ops::divide; divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } @@ -729,7 +729,7 @@ private: void do_assign(const Exp& e, const detail::modulus_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; + using default_ops::modulus; modulus(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } @@ -774,7 +774,7 @@ private: void do_assign(const Exp& e, const detail::bitwise_and_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using big_num_default_ops::bitwise_and; + using default_ops::bitwise_and; bitwise_and(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } @@ -819,7 +819,7 @@ private: void do_assign(const Exp& e, const detail::bitwise_or_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using big_num_default_ops::bitwise_or; + using default_ops::bitwise_or; bitwise_or(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } @@ -864,7 +864,7 @@ private: void do_assign(const Exp& e, const detail::bitwise_xor_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using big_num_default_ops::bitwise_xor; + using default_ops::bitwise_xor; bitwise_xor(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template @@ -912,7 +912,7 @@ private: template void do_assign(const Exp& e, const detail::bitwise_complement&) { - using big_num_default_ops::complement; + using default_ops::complement; self_type temp(e.left()); complement(m_backend, temp.backend()); } @@ -920,28 +920,28 @@ private: template void do_assign(const Exp& e, const detail::complement_immediates&) { - using big_num_default_ops::complement; + using default_ops::complement; complement(m_backend, canonical_value(e.left().value())); } template void do_assign_right_shift(const Exp& e, const Val& val, const detail::terminal&) { - using big_num_default_ops::right_shift; + using default_ops::right_shift; right_shift(m_backend, canonical_value(e.value()), val); } template void do_assign_left_shift(const Exp& e, const Val& val, const detail::terminal&) { - using big_num_default_ops::left_shift; + using default_ops::left_shift; left_shift(m_backend, canonical_value(e.value()), val); } template void do_assign_right_shift(const Exp& e, const Val& val, const Tag&) { - using big_num_default_ops::right_shift; + using default_ops::right_shift; self_type temp(e); right_shift(m_backend, temp.backend(), val); } @@ -949,7 +949,7 @@ private: template void do_assign_left_shift(const Exp& e, const Val& val, const Tag&) { - using big_num_default_ops::left_shift; + using default_ops::left_shift; self_type temp(e); left_shift(m_backend, temp.backend(), val); } @@ -1014,7 +1014,7 @@ private: template void do_add(const Exp& e, const detail::terminal&) { - using big_num_default_ops::add; + using default_ops::add; add(m_backend, canonical_value(e.value())); } @@ -1053,22 +1053,22 @@ private: template void do_add(const Exp& e, const detail::add_immediates&) { - using big_num_default_ops::add; + using default_ops::add; add(m_backend, canonical_value(e.left().value())); add(m_backend, canonical_value(e.right().value())); } template void do_add(const Exp& e, const detail::subtract_immediates&) { - using big_num_default_ops::add; - using big_num_default_ops::subtract; + using default_ops::add; + using default_ops::subtract; add(m_backend, canonical_value(e.left().value())); subtract(m_backend, canonical_value(e.right().value())); } template void do_subtract(const Exp& e, const detail::terminal&) { - using big_num_default_ops::subtract; + using default_ops::subtract; subtract(m_backend, canonical_value(e.value())); } @@ -1099,15 +1099,15 @@ private: template void do_subtract(const Exp& e, const detail::add_immediates&) { - using big_num_default_ops::subtract; + using default_ops::subtract; subtract(m_backend, canonical_value(e.left().value())); subtract(m_backend, canonical_value(e.right().value())); } template void do_subtract(const Exp& e, const detail::subtract_immediates&) { - using big_num_default_ops::add; - using big_num_default_ops::subtract; + using default_ops::add; + using default_ops::subtract; subtract(m_backend, canonical_value(e.left().value())); add(m_backend, canonical_value(e.right().value())); } @@ -1121,7 +1121,7 @@ private: template void do_multiplies(const Exp& e, const detail::terminal&) { - using big_num_default_ops::multiply; + using default_ops::multiply; multiply(m_backend, canonical_value(e.value())); } @@ -1154,22 +1154,22 @@ private: template void do_multiplies(const Exp& e, const detail::multiply_immediates&) { - using big_num_default_ops::multiply; + using default_ops::multiply; multiply(m_backend, canonical_value(e.left().value())); multiply(m_backend, canonical_value(e.right().value())); } template void do_multiplies(const Exp& e, const detail::divide_immediates&) { - using big_num_default_ops::multiply; - using big_num_default_ops::divide; + using default_ops::multiply; + using default_ops::divide; multiply(m_backend, canonical_value(e.left().value())); divide(m_backend, canonical_value(e.right().value())); } template void do_multiplies(const Exp& e, const unknown&) { - using big_num_default_ops::multiply; + using default_ops::multiply; self_type temp(e); multiply(m_backend, temp.m_backend); } @@ -1177,7 +1177,7 @@ private: template void do_divide(const Exp& e, const detail::terminal&) { - using big_num_default_ops::divide; + using default_ops::divide; divide(m_backend, canonical_value(e.value())); } @@ -1210,15 +1210,15 @@ private: template void do_divides(const Exp& e, const detail::multiply_immediates&) { - using big_num_default_ops::divide; + using default_ops::divide; divide(m_backend, canonical_value(e.left().value())); divide(m_backend, canonical_value(e.right().value())); } template void do_divides(const Exp& e, const detail::divide_immediates&) { - using big_num_default_ops::multiply; - using big_num_default_ops::divide; + using default_ops::multiply; + using default_ops::divide; divide(m_backend, canonical_value(e.left().value())); mutiply(m_backend, canonical_value(e.right().value())); } @@ -1226,7 +1226,7 @@ private: template void do_divide(const Exp& e, const unknown&) { - using big_num_default_ops::multiply; + using default_ops::multiply; self_type temp(e); divide(m_backend, temp.m_backend); } @@ -1235,7 +1235,7 @@ private: void do_modulus(const Exp& e, const detail::terminal&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; + using default_ops::modulus; modulus(m_backend, canonical_value(e.value())); } @@ -1243,7 +1243,7 @@ private: void do_modulus(const Exp& e, const Unknown&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using big_num_default_ops::modulus; + using default_ops::modulus; self_type temp(e); modulus(m_backend, canonical_value(temp)); } @@ -1251,7 +1251,7 @@ private: template void do_bitwise_and(const Exp& e, const detail::terminal&) { - using big_num_default_ops::bitwise_and; + using default_ops::bitwise_and; bitwise_and(m_backend, canonical_value(e.value())); } template @@ -1265,7 +1265,7 @@ private: template void do_bitwise_and(const Exp& e, const unknown&) { - using big_num_default_ops::bitwise_and; + using default_ops::bitwise_and; self_type temp(e); bitwise_and(m_backend, temp.m_backend); } @@ -1273,7 +1273,7 @@ private: template void do_bitwise_or(const Exp& e, const detail::terminal&) { - using big_num_default_ops::bitwise_or; + using default_ops::bitwise_or; bitwise_or(m_backend, canonical_value(e.value())); } template @@ -1287,7 +1287,7 @@ private: template void do_bitwise_or(const Exp& e, const unknown&) { - using big_num_default_ops::bitwise_or; + using default_ops::bitwise_or; self_type temp(e); bitwise_or(m_backend, temp.m_backend); } @@ -1295,7 +1295,7 @@ private: template void do_bitwise_xor(const Exp& e, const detail::terminal&) { - using big_num_default_ops::bitwise_xor; + using default_ops::bitwise_xor; bitwise_xor(m_backend, canonical_value(e.value())); } template @@ -1309,7 +1309,7 @@ private: template void do_bitwise_xor(const Exp& e, const unknown&) { - using big_num_default_ops::bitwise_xor; + using default_ops::bitwise_xor; self_type temp(e); bitwise_xor(m_backend, temp.m_backend); } @@ -1323,7 +1323,7 @@ private: template bool contains_self(const Exp& e, mpl::int_<0> const&)const { - return is_really_self(e.value()); + return is_floatly_self(e.value()); } template bool contains_self(const Exp& e, mpl::int_<1> const&)const @@ -1359,7 +1359,7 @@ private: template bool is_self(const Exp& e, mpl::int_<0> const&)const { - return is_really_self(e.value()); + return is_floatly_self(e.value()); } template bool is_self(const Exp& e, mpl::int_ const&)const @@ -1368,8 +1368,8 @@ private: } template - bool is_really_self(const Val&)const { return false; } - bool is_really_self(const self_type& v)const { return &v == this; } + bool is_floatly_self(const Val&)const { return false; } + bool is_floatly_self(const self_type& v)const { return &v == this; } static const Backend& canonical_value(const self_type& v){ return v.m_backend; } //static const Backend& canonical_value(const self_type* v){ return v->m_backend; } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index d5941d3f..27d6a572 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -18,47 +18,47 @@ namespace boost{ namespace multiprecision{ template -struct mpfr_real_backend; +struct mpfr_float_backend; namespace detail{ long get_default_precision() { return 50; } template -struct mpfr_real_imp +struct mpfr_float_imp { typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list real_types; typedef long exponent_type; - mpfr_real_imp(){} + mpfr_float_imp(){} - mpfr_real_imp(const mpfr_real_imp& o) + mpfr_float_imp(const mpfr_float_imp& o) { mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpfr_set(m_data, o.m_data, GMP_RNDN); } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_imp(mpfr_real_imp&& o) + mpfr_float_imp(mpfr_float_imp&& o) { m_data[0] = o.m_data[0]; o.m_data[0]._mpfr_d = 0; } #endif - mpfr_real_imp& operator = (const mpfr_real_imp& o) + mpfr_float_imp& operator = (const mpfr_float_imp& o) { mpfr_set(m_data, o.m_data, GMP_RNDN); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_imp& operator = (mpfr_real_imp&& o) + mpfr_float_imp& operator = (mpfr_float_imp&& o) { mpfr_swap(m_data, o.m_data); return *this; } #endif - mpfr_real_imp& operator = (boost::uintmax_t i) + mpfr_float_imp& operator = (boost::uintmax_t i) { boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; @@ -77,7 +77,7 @@ struct mpfr_real_imp mpfr_clear(t); return *this; } - mpfr_real_imp& operator = (boost::intmax_t i) + mpfr_float_imp& operator = (boost::intmax_t i) { bool neg = i < 0; *this = static_cast(std::abs(i)); @@ -85,22 +85,22 @@ struct mpfr_real_imp mpfr_neg(m_data, m_data, GMP_RNDN); return *this; } - mpfr_real_imp& operator = (unsigned long i) + mpfr_float_imp& operator = (unsigned long i) { mpfr_set_ui(m_data, i, GMP_RNDN); return *this; } - mpfr_real_imp& operator = (long i) + mpfr_float_imp& operator = (long i) { mpfr_set_si(m_data, i, GMP_RNDN); return *this; } - mpfr_real_imp& operator = (double d) + mpfr_float_imp& operator = (double d) { mpfr_set_d(m_data, d, GMP_RNDN); return *this; } - mpfr_real_imp& operator = (long double a) + mpfr_float_imp& operator = (long double a) { using std::frexp; using std::ldexp; @@ -146,12 +146,12 @@ struct mpfr_real_imp mpfr_div_2exp(m_data, m_data, -e, GMP_RNDN); return *this; } - mpfr_real_imp& operator = (const char* s) + mpfr_float_imp& operator = (const char* s) { mpfr_set_str(m_data, s, 10, GMP_RNDN); return *this; } - void swap(mpfr_real_imp& o) + void swap(mpfr_float_imp& o) { mpfr_swap(m_data, o.m_data); } @@ -192,7 +192,7 @@ struct mpfr_real_imp mpfr_free_str(ps); return result; } - ~mpfr_real_imp() + ~mpfr_float_imp() { if(m_data[0]._mpfr_d) mpfr_clear(m_data); @@ -201,7 +201,7 @@ struct mpfr_real_imp { mpfr_neg(m_data, m_data, GMP_RNDN); } - int compare(const mpfr_real_backend& o)const + int compare(const mpfr_float_backend& o)const { return mpfr_cmp(m_data, o.m_data); } @@ -216,7 +216,7 @@ struct mpfr_real_imp template int compare(V v)const { - mpfr_real_backend d; + mpfr_float_backend d; d = v; return compare(d); } @@ -234,73 +234,73 @@ protected: } // namespace detail template -struct mpfr_real_backend : public detail::mpfr_real_imp +struct mpfr_float_backend : public detail::mpfr_float_imp { - mpfr_real_backend() + mpfr_float_backend() { mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } - mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp(o) {} + mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp(o) {} + mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp(o) {} #endif - mpfr_real_backend& operator=(const mpfr_real_backend& o) + mpfr_float_backend& operator=(const mpfr_float_backend& o) { - *static_cast*>(this) = static_cast const&>(o); + *static_cast*>(this) = static_cast const&>(o); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend& operator=(mpfr_real_backend&& o) + mpfr_float_backend& operator=(mpfr_float_backend&& o) { - *static_cast*>(this) = static_cast&&>(o); + *static_cast*>(this) = static_cast&&>(o); return *this; } #endif template - mpfr_real_backend& operator=(const V& v) + mpfr_float_backend& operator=(const V& v) { - *static_cast*>(this) = v; + *static_cast*>(this) = v; return *this; } }; template <> -struct mpfr_real_backend<0> : public detail::mpfr_real_imp<0> +struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> { - mpfr_real_backend() + mpfr_float_backend() { mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); } - mpfr_real_backend(unsigned digits10) + mpfr_float_backend(unsigned digits10) { mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } - mpfr_real_backend(const mpfr_real_backend& o) : detail::mpfr_real_imp<0>(o) {} + mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp<0>(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend(mpfr_real_backend&& o) : detail::mpfr_real_imp<0>(o) {} + mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp<0>(o) {} #endif - mpfr_real_backend(const mpfr_real_backend& o, unsigned digits10) + mpfr_float_backend(const mpfr_float_backend& o, unsigned digits10) { mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); *this = o; } - mpfr_real_backend& operator=(const mpfr_real_backend& o) + mpfr_float_backend& operator=(const mpfr_float_backend& o) { - *static_cast*>(this) = static_cast const&>(o); + *static_cast*>(this) = static_cast const&>(o); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_real_backend& operator=(mpfr_real_backend&& o) + mpfr_float_backend& operator=(mpfr_float_backend&& o) { - *static_cast*>(this) = static_cast &&>(o); + *static_cast*>(this) = static_cast &&>(o); return *this; } #endif template - mpfr_real_backend& operator=(const V& v) + mpfr_float_backend& operator=(const V& v) { - *static_cast*>(this) = v; + *static_cast*>(this) = v; return *this; } static unsigned default_precision() @@ -322,47 +322,47 @@ struct mpfr_real_backend<0> : public detail::mpfr_real_imp<0> }; template -inline void add(mpfr_real_backend& result, const mpfr_real_backend& o) +inline void add(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void subtract(mpfr_real_backend& result, const mpfr_real_backend& o) +inline void subtract(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void multiply(mpfr_real_backend& result, const mpfr_real_backend& o) +inline void multiply(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void divide(mpfr_real_backend& result, const mpfr_real_backend& o) +inline void divide(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void add(mpfr_real_backend& result, unsigned long i) +inline void add(mpfr_float_backend& result, unsigned long i) { mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void subtract(mpfr_real_backend& result, unsigned long i) +inline void subtract(mpfr_float_backend& result, unsigned long i) { mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void multiply(mpfr_real_backend& result, unsigned long i) +inline void multiply(mpfr_float_backend& result, unsigned long i) { mpfr_mul_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void divide(mpfr_real_backend& result, unsigned long i) +inline void divide(mpfr_float_backend& result, unsigned long i) { mpfr_div_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void add(mpfr_real_backend& result, long i) +inline void add(mpfr_float_backend& result, long i) { if(i > 0) mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); @@ -370,7 +370,7 @@ inline void add(mpfr_real_backend& result, long i) mpfr_sub_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template -inline void subtract(mpfr_real_backend& result, long i) +inline void subtract(mpfr_float_backend& result, long i) { if(i > 0) mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); @@ -378,14 +378,14 @@ inline void subtract(mpfr_real_backend& result, long i) mpfr_add_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template -inline void multiply(mpfr_real_backend& result, long i) +inline void multiply(mpfr_float_backend& result, long i) { mpfr_mul_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) mpfr_neg(result.data(), result.data(), GMP_RNDN); } template -inline void divide(mpfr_real_backend& result, long i) +inline void divide(mpfr_float_backend& result, long i) { mpfr_div_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) @@ -395,17 +395,17 @@ inline void divide(mpfr_real_backend& result, long i) // Specialised 3 arg versions of the basic operators: // template -inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +inline void add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +inline void add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void add(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +inline void add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); @@ -413,12 +413,12 @@ inline void add(mpfr_real_backend& a, const mpfr_real_backend -inline void add(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +inline void add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void add(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +inline void add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -429,17 +429,17 @@ inline void add(mpfr_real_backend& a, long x, const mpfr_real_backend< mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +inline void subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +inline void subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void subtract(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +inline void subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); @@ -447,12 +447,12 @@ inline void subtract(mpfr_real_backend& a, const mpfr_real_backend -inline void subtract(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +inline void subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } template -inline void subtract(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +inline void subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -464,17 +464,17 @@ inline void subtract(mpfr_real_backend& a, long x, const mpfr_real_bac } template -inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +inline void multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +inline void multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void multiply(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +inline void multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) { @@ -485,12 +485,12 @@ inline void multiply(mpfr_real_backend& a, const mpfr_real_backend -inline void multiply(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +inline void multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void multiply(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +inline void multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -502,17 +502,17 @@ inline void multiply(mpfr_real_backend& a, long x, const mpfr_real_bac } template -inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, const mpfr_real_backend& y) +inline void divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, unsigned long y) +inline void divide(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void divide(mpfr_real_backend& a, const mpfr_real_backend& x, long y) +inline void divide(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) { @@ -523,12 +523,12 @@ inline void divide(mpfr_real_backend& a, const mpfr_real_backend -inline void divide(mpfr_real_backend& a, unsigned long x, const mpfr_real_backend& y) +inline void divide(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); } template -inline void divide(mpfr_real_backend& a, long x, const mpfr_real_backend& y) +inline void divide(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -540,45 +540,45 @@ inline void divide(mpfr_real_backend& a, long x, const mpfr_real_backe } template -inline bool is_zero(const mpfr_real_backend& val) +inline bool is_zero(const mpfr_float_backend& val) { return 0 != mpfr_zero_p(val.data()); } template -inline int get_sign(const mpfr_real_backend& val) +inline int get_sign(const mpfr_float_backend& val) { return mpfr_sgn(val.data()); } template -inline void convert_to(unsigned long* result, const mpfr_real_backend& val) +inline void convert_to(unsigned long* result, const mpfr_float_backend& val) { *result = mpfr_get_ui(val.data(), GMP_RNDN); } template -inline void convert_to(long* result, const mpfr_real_backend& val) +inline void convert_to(long* result, const mpfr_float_backend& val) { *result = mpfr_get_si(val.data(), GMP_RNDN); } #ifdef _MPFR_H_HAVE_INTMAX_T template -inline void convert_to(boost::uintmax_t* result, const mpfr_real_backend& val) +inline void convert_to(boost::uintmax_t* result, const mpfr_float_backend& val) { *result = mpfr_get_uj(val.data(), GMP_RNDN); } template -inline void convert_to(boost::intmax_t* result, const mpfr_real_backend& val) +inline void convert_to(boost::intmax_t* result, const mpfr_float_backend& val) { *result = mpfr_get_sj(val.data(), GMP_RNDN); } #endif template -inline void convert_to(double* result, const mpfr_real_backend& val) +inline void convert_to(double* result, const mpfr_float_backend& val) { *result = mpfr_get_d(val.data(), GMP_RNDN); } template -inline void convert_to(long double* result, const mpfr_real_backend& val) +inline void convert_to(long double* result, const mpfr_float_backend& val) { *result = mpfr_get_ld(val.data(), GMP_RNDN); } @@ -587,39 +587,39 @@ inline void convert_to(long double* result, const mpfr_real_backend& v // Native non-member operations: // template -inline void eval_sqrt(mpfr_real_backend& result, const mpfr_real_backend& val) +inline void eval_sqrt(mpfr_float_backend& result, const mpfr_float_backend& val) { mpfr_sqrt(result.data(), val.data(), GMP_RNDN); } template -inline void eval_abs(mpfr_real_backend& result, const mpfr_real_backend& val) +inline void eval_abs(mpfr_float_backend& result, const mpfr_float_backend& val) { mpfr_abs(result.data(), val.data(), GMP_RNDN); } template -inline void eval_fabs(mpfr_real_backend& result, const mpfr_real_backend& val) +inline void eval_fabs(mpfr_float_backend& result, const mpfr_float_backend& val) { mpfr_abs(result.data(), val.data(), GMP_RNDN); } template -inline void eval_ceil(mpfr_real_backend& result, const mpfr_real_backend& val) +inline void eval_ceil(mpfr_float_backend& result, const mpfr_float_backend& val) { mpfr_ceil(result.data(), val.data()); } template -inline void eval_floor(mpfr_real_backend& result, const mpfr_real_backend& val) +inline void eval_floor(mpfr_float_backend& result, const mpfr_float_backend& val) { mpfr_floor(result.data(), val.data()); } template -inline void eval_trunc(mpfr_real_backend& result, const mpfr_real_backend& val) +inline void eval_trunc(mpfr_float_backend& result, const mpfr_float_backend& val) { mpfr_trunc(result.data(), val.data()); } template -inline void eval_ldexp(mpfr_real_backend& result, const mpfr_real_backend& val, long e) +inline void eval_ldexp(mpfr_float_backend& result, const mpfr_float_backend& val, long e) { if(e > 0) mpfr_mul_2exp(result.data(), val.data(), e, GMP_RNDN); @@ -629,7 +629,7 @@ inline void eval_ldexp(mpfr_real_backend& result, const mpfr_real_back result = val; } template -inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, int* e) +inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, int* e) { long v; mpfr_get_d_2exp(&v, val.data(), GMP_RNDN); @@ -637,107 +637,107 @@ inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_back eval_ldexp(result, val, -v); } template -inline void eval_frexp(mpfr_real_backend& result, const mpfr_real_backend& val, long* e) +inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, long* e) { mpfr_get_d_2exp(e, val.data(), GMP_RNDN); return eval_ldexp(result, val, -*e); } template -inline int eval_fpclassify(const mpfr_real_backend& val) +inline int eval_fpclassify(const mpfr_float_backend& val) { return mpfr_inf_p(val.data()) ? FP_INFINITE : mpfr_nan_p(val.data()) ? FP_NAN : mpfr_zero_p(val.data()) ? FP_ZERO : FP_NORMAL; } template -inline void eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const mpfr_real_backend& e) +inline void eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const mpfr_float_backend& e) { mpfr_pow(result.data(), b.data(), e.data(), GMP_RNDN); } template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) { mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN); } template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_real_backend& result, const mpfr_real_backend& b, const Integer& e) +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) { mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN); } template -inline void eval_exp(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_exp(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_exp(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_log(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_log(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_log(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_sin(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_sin(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_sin(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_cos(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_cos(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_cos(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_tan(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_tan(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_tan(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_asin(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_asin(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_asin(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_acos(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_acos(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_acos(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_atan(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_atan(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_atan(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_sinh(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_sinh(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_sinh(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_cosh(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_cosh(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_cosh(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_tanh(mpfr_real_backend& result, const mpfr_real_backend& arg) +inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_backend& arg) { mpfr_tanh(result.data(), arg.data(), GMP_RNDN); } -typedef mp_number > mpfr_real_50; -typedef mp_number > mpfr_real_100; -typedef mp_number > mpfr_real_500; -typedef mp_number > mpfr_real_1000; -typedef mp_number > mpfr_real; +typedef mp_number > mpfr_float_50; +typedef mp_number > mpfr_float_100; +typedef mp_number > mpfr_float_500; +typedef mp_number > mpfr_float_1000; +typedef mp_number > mpfr_float; } // namespace boost @@ -746,7 +746,7 @@ namespace math{ namespace lanczos{ template -struct lanczos >, Policy> +struct lanczos >, Policy> { typedef typename mpl::if_c< Digits10 <= 36, @@ -778,9 +778,9 @@ namespace std{ // numeric_limits [partial] specializations for the types declared in this header: // template -class numeric_limits > > +class numeric_limits > > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept @@ -897,12 +897,12 @@ private: { data_initializer() { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); - std::numeric_limits > >::infinity(); - std::numeric_limits > >::quiet_NaN(); + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); + std::numeric_limits > >::infinity(); + std::numeric_limits > >::quiet_NaN(); } void do_nothing()const{} }; @@ -910,12 +910,12 @@ private: }; template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; +const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; template<> -class numeric_limits > > +class numeric_limits > > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(0); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 29edef2a..b1379fd4 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -63,7 +63,7 @@ run test_arithmetic.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_arithmetic_mpf50 ; @@ -126,7 +126,7 @@ run test_numeric_limits.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_numeric_limits_mpf50 ; @@ -187,11 +187,19 @@ run mp_number_concept_check.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : big_number_concept_check_mpfr_50 ; +run mp_number_concept_check.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : big_number_concept_check_mpf50 ; + run test_exp.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_exp_mpf50 ; @@ -199,7 +207,7 @@ run test_log.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_log_mpf50 ; @@ -207,7 +215,7 @@ run test_pow.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_pow_mpf50 ; @@ -215,7 +223,7 @@ run test_sinh.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_sinh_mpf50 ; @@ -223,7 +231,7 @@ run test_cosh.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_cosh_mpf50 ; @@ -231,7 +239,7 @@ run test_tanh.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_tanh_mpf50 ; @@ -287,7 +295,7 @@ run test_sin.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_sin_mpf50 ; @@ -303,7 +311,7 @@ run test_cos.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_cos_mpf50 ; @@ -319,7 +327,7 @@ run test_asin.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_asin_mpf50 ; @@ -335,7 +343,7 @@ run test_acos.cpp gmp : # command line : # input files : # requirements - TEST_MPF50 + TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] : test_acos_mpf50 ; @@ -347,3 +355,18 @@ run test_acos.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_acos_mpfr_50 ; +run test_atan.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : test_atan_mpf50 ; + +run test_atan.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_atan_mpfr_50 ; diff --git a/test/linpack-benchmark.cpp b/test/linpack-benchmark.cpp index 1f4d2ab8..8798ca6d 100644 --- a/test/linpack-benchmark.cpp +++ b/test/linpack-benchmark.cpp @@ -21,10 +21,10 @@ http://www.netlib.org/f2c/libf2c.zip #ifdef TEST_MPF_100 #include -typedef boost::multiprecision::mpf_real_100 real_type; +typedef boost::multiprecision::mpf_float_100 real_type; #elif defined(TEST_MPFR_100) #include -typedef boost::multiprecision::mpfr_real_100 real_type; +typedef boost::multiprecision::mpfr_float_100 real_type; #elif defined(TEST_GMPXX) #include typedef mpf_class real_type; @@ -99,9 +99,9 @@ int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type extern "C" int MAIN__() { #ifdef TEST_MPF_100 - std::cout << "Testing mp_number >" << std::endl; + std::cout << "Testing mp_number >" << std::endl; #elif defined(TEST_MPFR_100) - std::cout << "Testing mp_number >" << std::endl; + std::cout << "Testing mp_number >" << std::endl; #elif defined(TEST_GMPXX) std::cout << "Testing mpf_class at 100 decimal degits" << std::endl; mpf_set_default_prec(((100 + 1) * 1000L) / 301L); @@ -1229,7 +1229,7 @@ times for array with leading dimension of1001 266.45 0.798 267.24 2.5021 0.79933 4772.2 -mp_number >: +mp_number >: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ norm. resid resid machep x(1) x(n) diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index cc814372..95ff4ffc 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -20,8 +20,8 @@ # pragma warning(disable:4503) // decorated name length exceeded, name was truncated #endif -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ @@ -38,7 +38,7 @@ #endif -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) +#if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) #include #endif #ifdef TEST_BACKEND @@ -57,19 +57,19 @@ void foo() { #ifdef TEST_BACKEND - instantiate(boost::multiprecision::mp_number_real_architype()); + instantiate(boost::multiprecision::mp_number_float_architype()); #endif #ifdef TEST_MPF_50 - instantiate(boost::multiprecision::mpf_real_50()); + instantiate(boost::multiprecision::mpf_float_50()); #endif #ifdef TEST_MPF - instantiate(boost::multiprecision::mpf_real()); + instantiate(boost::multiprecision::mpf_float()); #endif #ifdef TEST_MPFR_50 - instantiate(boost::multiprecision::mpfr_real_50()); + instantiate(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR - instantiate(boost::multiprecision::mpfr_real()); + instantiate(boost::multiprecision::mpfr_float()); #endif #ifdef TEST_E_FLOAT instantiate(boost::multiprecision::e_float()); @@ -79,19 +79,19 @@ void foo() int main() { #ifdef TEST_BACKEND - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPF_50 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPF - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPFR_50 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPFR - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_E_FLOAT BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); diff --git a/test/test_acos.cpp b/test/test_acos.cpp index eea8e1fc..16fca50b 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -86,15 +86,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 2c837f26..86d18619 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -6,8 +6,8 @@ #include #include -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ @@ -25,7 +25,7 @@ #endif -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) +#if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) #include #endif #ifdef TEST_BACKEND @@ -267,10 +267,10 @@ void test_integer_ops(const boost::mpl::int_ -void test_real_ops(const T&){} +void test_float_ops(const T&){} template -void test_real_ops(const boost::mpl::int_&) +void test_float_ops(const boost::mpl::int_&) { #if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) || defined(TEST_MPFR) BOOST_TEST(abs(Real(2)) == 2); @@ -570,7 +570,7 @@ void test() // // Real number only functions: // - test_real_ops(typename boost::multiprecision::number_category::type()); + test_float_ops(typename boost::multiprecision::number_category::type()); // // Test basic arithmetic: // @@ -859,20 +859,20 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); +#ifdef TEST_MPF_50 + test(); #endif #ifdef TEST_MPF - boost::multiprecision::mpf_real::default_precision(1000); + boost::multiprecision::mpf_float::default_precision(1000); /* - boost::multiprecision::mpf_real r; + boost::multiprecision::mpf_float r; r.precision(50); BOOST_TEST(r.precision() >= 50); */ - BOOST_TEST(boost::multiprecision::mpf_real::default_precision() == 1000); - test(); + BOOST_TEST(boost::multiprecision::mpf_float::default_precision() == 1000); + test(); #endif #ifdef TEST_MPZ test(); @@ -884,10 +884,10 @@ int main() test(); #endif #ifdef TEST_MPFR - test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_asin.cpp b/test/test_asin.cpp index aff5d824..60bb3f0c 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -83,15 +83,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_atan.cpp b/test/test_atan.cpp index db4eb33b..63119ac9 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -44,7 +44,7 @@ template T atan2_def(T y, T x) { T t; - t.backend() = boost::multiprecision::big_num_default_ops::get_constant_pi(); + t.backend() = boost::multiprecision::default_ops::get_constant_pi(); T t2; if(x) t2 = atan(y / x); @@ -56,8 +56,10 @@ T atan2_def(T y, T x) template struct is_mpfr_type : public boost::mpl::false_ {}; +#ifdef TEST_MPFR_50 template -struct is_mpfr_type > > : public boost::mpl::true_{}; +struct is_mpfr_type > > : public boost::mpl::true_{}; +#endif template void test() @@ -188,7 +190,7 @@ void test() max_err = err; T pi; - pi.backend() = boost::multiprecision::big_num_default_ops::get_constant_pi(); + pi.backend() = boost::multiprecision::default_ops::get_constant_pi(); err = relative_error(T(atan2(T(1), T(0))), T(pi / 2)).template convert_to(); if(err > max_err) @@ -227,15 +229,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 1eb36acf..bb9aab89 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -272,15 +272,15 @@ T("-5.01621542149055350065079347615664213658089623368745676779267390227688581807 int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index 38841e62..c9be8958 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -118,15 +118,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 87578245..ff2bf4d9 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -163,15 +163,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_log.cpp b/test/test_log.cpp index 06a1fa90..166bfcae 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #ifdef TEST_MPFR_50 @@ -176,15 +176,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 28c354c9..e2075d3b 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -5,8 +5,8 @@ #include -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ @@ -24,7 +24,7 @@ #endif -#if defined(TEST_MPF50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) +#if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) #include #endif #ifdef TEST_BACKEND @@ -138,20 +138,20 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); +#ifdef TEST_MPF_50 + test(); #endif #ifdef TEST_MPF - boost::multiprecision::mpf_real::default_precision(1000); + boost::multiprecision::mpf_float::default_precision(1000); /* - boost::multiprecision::mpf_real r; + boost::multiprecision::mpf_float r; r.precision(50); BOOST_TEST(r.precision() >= 50); */ - BOOST_TEST(boost::multiprecision::mpf_real::default_precision() == 1000); - test(); + BOOST_TEST(boost::multiprecision::mpf_float::default_precision() == 1000); + test(); #endif #ifdef TEST_MPZ test(); @@ -163,10 +163,10 @@ int main() test(); #endif #ifdef TEST_MPFR - test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 45c81149..b681d703 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -28,7 +28,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -566,15 +566,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_sin.cpp b/test/test_sin.cpp index fcee9188..3843b37d 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -278,15 +278,15 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index e049b449..0d33347c 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -118,15 +118,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 547b69a9..59d67c9f 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -12,8 +12,8 @@ #include #include "test.hpp" -#if !defined(TEST_MPF50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) -# define TEST_MPF50 +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND # define TEST_E_FLOAT @@ -27,7 +27,7 @@ #endif -#if defined(TEST_MPF50) +#if defined(TEST_MPF_50) #include #endif #if defined(TEST_MPFR_50) @@ -118,15 +118,15 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif -#ifdef TEST_MPF50 - test(); - test(); +#ifdef TEST_MPF_50 + test(); + test(); #endif #ifdef TEST_MPFR_50 - test(); - test(); + test(); + test(); #endif #ifdef TEST_E_FLOAT test(); From fc1eb9303f00d9293cab6cfc125ae7a35515ebc6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 23 Oct 2011 15:49:27 +0000 Subject: [PATCH 041/256] Get the tests passing with gcc on Linux. [SVN r75094] --- include/boost/multiprecision/detail/default_ops.hpp | 10 +--------- include/boost/multiprecision/detail/functions/pow.hpp | 2 -- include/boost/multiprecision/detail/functions/trig.hpp | 8 ++++++++ test/test.hpp | 3 +++ 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 77240092..dea68ff4 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -398,14 +398,6 @@ inline void eval_round(T& result, const T& a) } } -template -void eval_atan2(T& result, const T& a, const Arithmetic& b) -{ - T x; - x = b; - eval_atan2(result, a, x); -} - // // These have to implemented by the backend, declared here so that our macro generated code compiles OK. // @@ -971,7 +963,7 @@ inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_numb template inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x, const Policy&) { - return boost::multiprecision::sinhc_pi(x); + return boost::math::sinhc_pi(x); } } // namespace math diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index a2e75f4c..7bd0554c 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -285,8 +285,6 @@ void eval_exp(T& result, const T& x) // implemented as a hypergeometric function, |r| is bounded by // ln2 / p2. For small arguments, no scaling is done. - typedef typename mpl::front::type float_type; - const bool b_scale = (xx.compare(float_type(1e-4)) > 0); // Compute the exponential series of the (possibly) scaled argument. diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index a65ffdb6..9a1b2ae7 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -731,3 +731,11 @@ void eval_atan2(T& result, const T& y, const T& x) } } +template +typename disable_if >::type eval_atan2(T& result, const T& a, const Arithmetic& b) +{ + T x; + x = b; + eval_atan2(result, a, x); +} + diff --git a/test/test.hpp b/test/test.hpp index 657c5737..88836794 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -2,6 +2,9 @@ #ifndef BOOST_MULTIPRECISION_TEST_HPP #define BOOST_MULTIPRECISION_TEST_HPP +#include +#include + template T relative_error(T a, T b) { From 9124ccb4c12991928a24b09cf30085d1271795d4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 23 Oct 2011 16:03:29 +0000 Subject: [PATCH 042/256] Enable native atan2 for mpfr. [SVN r75095] --- include/boost/multiprecision/mpfr.hpp | 6 ++++++ test/test_atan.cpp | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 27d6a572..bf478e42 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -715,6 +715,12 @@ inline void eval_atan(mpfr_float_backend& result, const mpfr_float_bac mpfr_atan(result.data(), arg.data(), GMP_RNDN); } +template +inline void eval_atan2(mpfr_float_backend& result, const mpfr_float_backend& arg1, const mpfr_float_backend& arg2) +{ + mpfr_atan2(result.data(), arg1.data(), arg2.data(), GMP_RNDN); +} + template inline void eval_sinh(mpfr_float_backend& result, const mpfr_float_backend& arg) { diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 63119ac9..e572e7af 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -222,7 +222,7 @@ void test() } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 40); + BOOST_TEST(max_err < 70); } From b0ac20f3914d8ccfe139b430a73d040b00c01a03 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 27 Oct 2011 12:43:41 +0000 Subject: [PATCH 043/256] Add port of e_float as a backend. [SVN r75129] --- config/Jamfile.v2 | 27 - include/boost/multiprecision/mp_float.hpp | 2461 +++++++++++++++++++++ test/Jamfile.v2 | 51 +- test/test_arithmetic.cpp | 25 +- 4 files changed, 2474 insertions(+), 90 deletions(-) create mode 100644 include/boost/multiprecision/mp_float.hpp diff --git a/config/Jamfile.v2 b/config/Jamfile.v2 index 2aeacdc8..a307db12 100644 --- a/config/Jamfile.v2 +++ b/config/Jamfile.v2 @@ -6,41 +6,14 @@ import modules ; import path ; -local ntl-path = [ modules.peek : NTL_PATH ] ; local gmp_path = [ modules.peek : GMP_PATH ] ; local mpfr_path = [ modules.peek : MPFR_PATH ] ; -local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; -if ! $(e_float_path) -{ - e_float_path = ../../../../e_float ; -} - -ECHO $(BOOST_E_FLOAT_PATH) - -obj has_long_double_support : has_long_double_support.cpp ; -obj has_mpfr_class : has_mpfr_class.cpp : - $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; -obj has_mpreal : has_mpreal.cpp : - $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/mpfrc++ ; -obj has_ntl_rr : has_ntl_rr.cpp : $(ntl-path)/include ; -obj has_gmpxx : has_gmpxx.cpp : - $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; -obj has_gcc_visibility : has_gcc_visibility.cpp : - gcc:-fvisibility=hidden gcc:-Werror ; -obj has_e_float : has_e_float.cpp : $(e_float_path) ; obj has_gmp : has_gmp.cpp : $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; obj has_mpfr : has_mpfr.cpp : $(mpfr_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx $(gmp_path) ; -explicit has_long_double_support ; -explicit has_mpfr_class ; -explicit has_mpreal ; -explicit has_ntl_rr ; -explicit has_gmpxx ; -explicit has_gcc_visibility ; -explicit has_e_float ; explicit has_gmp ; explicit has_mpfr ; diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp new file mode 100644 index 00000000..a07ca1ac --- /dev/null +++ b/include/boost/multiprecision/mp_float.hpp @@ -0,0 +1,2461 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +// + +#ifndef BOOST_MP_EFX_BACKEND_HPP +#define BOOST_MP_EFX_BACKEND_HPP + +#include +#include +#include + +namespace boost{ +namespace multiprecision{ + +template +class mp_float +{ +public: + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + typedef boost::int64_t exponent_type; + + + static const boost::int32_t mp_radix = 10; + static const boost::int32_t mp_float_digits = Digits10; + + static const boost::int32_t mp_float_digits10_setting = Digits10; + static const boost::int32_t mp_float_digits10_limit = boost::integer_traits::const_max; + static const boost::int32_t mp_float_digits10 = ((mp_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((mp_float_digits10_setting > mp_float_digits10_limit) ? mp_float_digits10_limit : mp_float_digits10_setting)); + static const boost::int32_t mp_float_digits10_extra = static_cast(((static_cast(mp_float_digits10) * 15LL) + 50LL) / 100LL); + static const boost::int32_t mp_float_max_digits10 = static_cast(mp_float_digits10 + ((mp_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((mp_float_digits10_extra > static_cast(30)) ? static_cast(30) : mp_float_digits10_extra))); + static const boost::int64_t mp_float_max_exp = static_cast(+9223372036854775795LL); + static const boost::int64_t mp_float_min_exp = static_cast(-9223372036854775795LL); + static const boost::int64_t mp_float_max_exp10 = static_cast(+3063937869882635616LL); // Approx. [mp_float_max_exp / log10(2)], also an even multiple of 8 + static const boost::int64_t mp_float_min_exp10 = static_cast(-3063937869882635616LL); + static const boost::int32_t mp_elem_digits10 = static_cast(8); + +private: + static const boost::int32_t mp_float_digits10_num_base = static_cast((mp_float_max_digits10 / mp_elem_digits10) + (((mp_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); + static const boost::int32_t mp_elem_number = static_cast(mp_float_digits10_num_base + 2); + static const boost::int32_t mp_elem_mask = static_cast(100000000); + + typedef enum enum_fpclass + { + mp_finite, + mp_inf, + mp_NaN + } + t_fpclass; + + typedef boost::array array_type; + + array_type data; + boost::int64_t exp; + bool neg; + t_fpclass fpclass; + boost::int32_t prec_elem; + + // + // Special values constructor: + // + mp_float(t_fpclass c) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (c), + prec_elem(mp_elem_number) { } + + // + // Static data initializer: + // + struct initializer + { + initializer() + { + mp_float::nan(); + mp_float::inf(); + (mp_float::min)(); + (mp_float::max)(); + mp_float::zero(); + mp_float::one(); + mp_float::two(); + mp_float::double_min(); + mp_float::double_max(); + mp_float::long_double_max(); + mp_float::long_double_min(); + mp_float::long_long_max(); + mp_float::long_long_min(); + mp_float::ulong_long_max(); + mp_float::pow2(0); + } + void do_nothing(){} + }; + + static initializer init; + +public: + // Constructors + mp_float() : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) { } + + mp_float(const char* s) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + *this = s; + } + + template + mp_float(I i, typename enable_if >::type* = 0) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + from_unsigned_long_long(i); + } + + template + mp_float(I i, typename enable_if >::type* = 0) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + if(i < 0) + { + from_unsigned_long_long(-i); + negate(); + } + else + from_unsigned_long_long(i); + } + + mp_float(const mp_float& f) : + data (f.data), + exp (f.exp), + neg (f.neg), + fpclass (f.fpclass), + prec_elem(f.prec_elem) { } + + template + mp_float(const F val, typename enable_if >::type* = 0): + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + *this = val; + } + + mp_float(const double val, long long exponent); + + // Specific special values. + static const mp_float& nan() + { + static const mp_float val(mp_NaN); + init.do_nothing(); + return val; + } + static const mp_float& inf() + { + static const mp_float val(mp_inf); + init.do_nothing(); + return val; + } + static const mp_float& (max)() + { + init.do_nothing(); + static bool init = false; + static const std::string str_max = std::string("9." + std::string(static_cast(mp_float_max_digits10), static_cast('9'))) + + std::string("e+" + boost::lexical_cast(mp_float_max_exp)); + static mp_float val_max; + if(!init) + { + init = true; + val_max = str_max.c_str(); + } + return val_max; + } + + static const mp_float& (min)() + { + init.do_nothing(); + static bool init = false; + static mp_float val_min; + if(!init) + { + init = true; + val_min = std::string("1.0e" + boost::lexical_cast(mp_float_min_exp)).c_str(); + } + return val_min; + } + static const mp_float& zero() + { + init.do_nothing(); + static mp_float val(static_cast(0u)); + return val; + } + static const mp_float& one() + { + init.do_nothing(); + static mp_float val(static_cast(1u)); + return val; + } + static const mp_float& two() + { + init.do_nothing(); + static mp_float val(static_cast(2u)); + return val; + } + static const mp_float& double_min() + { + init.do_nothing(); + static mp_float val(static_cast((std::numeric_limits::min)())); + return val; + } + static const mp_float& double_max() + { + init.do_nothing(); + static mp_float val(static_cast((std::numeric_limits::max)())); + return val; + } + static const mp_float& long_double_min() + { + init.do_nothing(); + static mp_float val((std::numeric_limits::min)()); + return val; + } + static const mp_float& long_double_max() + { + init.do_nothing(); + static mp_float val((std::numeric_limits::max)()); + return val; + } + static const mp_float& long_long_max() + { + init.do_nothing(); + static mp_float val((std::numeric_limits::max)()); + return val; + } + static const mp_float& long_long_min() + { + init.do_nothing(); + static mp_float val((std::numeric_limits::min)()); + return val; + } + static const mp_float& ulong_long_max() + { + init.do_nothing(); + static mp_float val((std::numeric_limits::max)()); + return val; + } + + // Basic operations. + mp_float& operator= (const mp_float& v) + { + data = v.data; + exp = v.exp; + neg = v.neg; + fpclass = v.fpclass; + prec_elem = v.prec_elem; + return *this; + } + mp_float& operator= (long long v) + { + if(v < 0) + { + from_unsigned_long_long(-v); + negate(); + } + else + from_unsigned_long_long(v); + return *this; + } + mp_float& operator= (unsigned long long v) + { + from_unsigned_long_long(v); + return *this; + } + mp_float& operator= (long double v); + mp_float& operator= (const char* v) + { + rd_string(v); + return *this; + } + + mp_float& operator+=(const mp_float& v); + mp_float& operator-=(const mp_float& v); + mp_float& operator*=(const mp_float& v); + mp_float& operator/=(const mp_float& v); + + mp_float& add_unsigned_long_long(const unsigned long long n) + { + mp_float t; + t.from_unsigned_long_long(n); + return *this += t; + } + mp_float& sub_unsigned_long_long(const unsigned long long n) + { + mp_float t; + t.from_unsigned_long_long(n); + return *this -= t; + } + mp_float& mul_unsigned_long_long(const unsigned long long n); + mp_float& div_unsigned_long_long(const unsigned long long n); + + // Elementary primitives. + mp_float& calculate_inv (void); + mp_float& calculate_sqrt(void); + void negate() + { + if(!iszero()) + neg = !neg; + } + + // Comparison functions + bool isnan (void) const { return (fpclass == mp_NaN); } + bool isinf (void) const { return (fpclass == mp_inf); } + bool isfinite(void) const { return (fpclass == mp_finite); } + + bool iszero (void) const + { + return ((fpclass == mp_finite) && (data[0u] == 0u)); + } + bool isone (void) const; + bool isint (void) const; + bool isneg (void) const { return neg; } + + // Operators pre-increment and pre-decrement + mp_float& operator++(void) + { + return *this += one(); + } + mp_float& operator--(void) + { + return *this -= one(); + } + + std::string str(unsigned digits, bool scientific)const; + + int compare(const mp_float& v)const; + template + int compare(const V& v)const + { + mp_float t; + t = v; + return compare(t); + } + + void swap(mp_float& v) + { + data.swap(v.data); + std::swap(exp, v.exp); + std::swap(neg, v.neg); + std::swap(fpclass, v.fpclass); + std::swap(prec_elem, v.prec_elem); + } + + double extract_double (void) const; + long double extract_long_double (void) const; + signed long long extract_signed_long_long (void) const; + unsigned long long extract_unsigned_long_long(void) const; + void extract_parts (double& mantissa, boost::int64_t& exponent) const; + mp_float extract_integer_part (void) const; + void precision(const boost::int32_t prec_digits) + { + if(prec_digits >= mp_float_digits10) + { + prec_elem = mp_elem_number; + } + else + { + const boost::int32_t elems = static_cast( static_cast( (prec_digits + (mp_elem_digits10 / 2)) / mp_elem_digits10) + + static_cast(((prec_digits % mp_elem_digits10) != 0) ? 1 : 0)); + + prec_elem = (std::min)(mp_elem_number, (std::max)(elems, static_cast(2))); + } + } + static mp_float pow2(long long i); + +private: + static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast(0u)); } + static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(mp_float::mp_elem_mask - 1)); } + static bool char_is_nonzero_predicate(const char& c) { return (c != static_cast('0')); } + + void from_unsigned_long_long(const unsigned long long u); + + int cmp_data(const array_type& vd) const; + + static void mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p); + static boost::uint32_t mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); + static boost::uint32_t div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); + + bool rd_string(const char* const s); + long long order()const + { + const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); + + return (bo_order_is_zero ? static_cast(0) + : static_cast(exp + static_cast(std::log10(static_cast(data[0])) + (std::numeric_limits::epsilon() * 0.9)))); + } +}; + +template +typename mp_float::initializer mp_float::init; + +template +const boost::int32_t mp_float::mp_radix; +template +const boost::int32_t mp_float::mp_float_digits; +template +const boost::int32_t mp_float::mp_float_digits10_setting; +template +const boost::int32_t mp_float::mp_float_digits10_limit; +template +const boost::int32_t mp_float::mp_float_digits10; +template +const boost::int32_t mp_float::mp_float_digits10_extra; +template +const boost::int32_t mp_float::mp_float_max_digits10; +template +const boost::int64_t mp_float::mp_float_max_exp; +template +const boost::int64_t mp_float::mp_float_min_exp; +template +const boost::int64_t mp_float::mp_float_max_exp10; +template +const boost::int64_t mp_float::mp_float_min_exp10; +template +const boost::int32_t mp_float::mp_elem_digits10; +template +const boost::int32_t mp_float::mp_float_digits10_num_base; +template +const boost::int32_t mp_float::mp_elem_number; +template +const boost::int32_t mp_float::mp_elem_mask; + + +template +mp_float& mp_float::operator+=(const mp_float& v) +{ + if(isnan()) + { + return *this; + } + + if(isinf()) + { + if(v.isinf() && (isneg() != v.isneg())) + { + *this = nan(); + } + return *this; + } + + if(iszero()) + { + return operator=(v); + } + + // Get the offset for the add/sub operation. + static const boost::int64_t max_delta_exp = static_cast((mp_elem_number - 1) * mp_elem_digits10); + + const boost::int64_t ofs_exp = static_cast(exp - v.exp); + + // Check if the operation is out of range, requiring special handling. + if(v.iszero() || (ofs_exp > max_delta_exp)) + { + // Result is *this unchanged since v is negligible compared to *this. + return *this; + } + else if(ofs_exp < -max_delta_exp) + { + // Result is *this = v since *this is negligible compared to v. + return operator=(v); + } + + // Do the add/sub operation. + + typename array_type::iterator p_u = data.begin(); + typename array_type::const_iterator p_v = v.data.begin(); + bool b_copy = false; + const boost::int32_t ofs = static_cast(static_cast(ofs_exp) / mp_elem_digits10); + array_type n_data; + + if(neg == v.neg) + { + // Add v to *this, where the data array of either *this or v + // might have to be treated with a positive, negative or zero offset. + // The result is stored in *this. The data are added one element + // at a time, each element with carry. + if(ofs >= static_cast(0)) + { + std::copy(v.data.begin(), v.data.end() - static_cast(ofs), n_data.begin() + static_cast(ofs)); + std::fill(n_data.begin(), n_data.begin() + static_cast(ofs), static_cast(0u)); + p_v = n_data.begin(); + } + else + { + std::copy(data.begin(), data.end() - static_cast(-ofs), n_data.begin() + static_cast(-ofs)); + std::fill(n_data.begin(), n_data.begin() + static_cast(-ofs), static_cast(0u)); + p_u = n_data.begin(); + b_copy = true; + } + + // Addition algorithm + boost::uint32_t carry = static_cast(0u); + + for(boost::int32_t j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) + { + boost::uint32_t t = static_cast(static_cast(p_u[j] + p_v[j]) + carry); + carry = t / static_cast(mp_elem_mask); + p_u[j] = static_cast(t - static_cast(carry * static_cast(mp_elem_mask))); + } + + if(b_copy) + { + data = n_data; + exp = v.exp; + } + + // There needs to be a carry into the element -1 of the array data + if(carry != static_cast(0u)) + { + std::copy_backward(data.begin(), data.end() - static_cast(1u), data.end()); + data[0] = carry; + exp += static_cast(mp_elem_digits10); + } + } + else + { + // Subtract v from *this, where the data array of either *this or v + // might have to be treated with a positive, negative or zero offset. + if((ofs > static_cast(0)) + || ( (ofs == static_cast(0)) + && (cmp_data(v.data) > static_cast(0))) + ) + { + // In this case, |u| > |v| and ofs is positive. + // Copy the data of v, shifted down to a lower value + // into the data array m_n. Set the operand pointer p_v + // to point to the copied, shifted data m_n. + std::copy(v.data.begin(), v.data.end() - static_cast(ofs), n_data.begin() + static_cast(ofs)); + std::fill(n_data.begin(), n_data.begin() + static_cast(ofs), static_cast(0u)); + p_v = n_data.begin(); + } + else + { + if(ofs != static_cast(0)) + { + // In this case, |u| < |v| and ofs is negative. + // Shift the data of u down to a lower value. + std::copy_backward(data.begin(), data.end() - static_cast(-ofs), data.end()); + std::fill(data.begin(), data.begin() + static_cast(-ofs), static_cast(0u)); + } + + // Copy the data of v into the data array n_data. + // Set the u-pointer p_u to point to m_n and the + // operand pointer p_v to point to the shifted + // data m_data. + n_data = v.data; + p_u = n_data.begin(); + p_v = data.begin(); + b_copy = true; + } + + boost::int32_t j; + + // Subtraction algorithm + boost::int32_t borrow = static_cast(0); + + for(j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) + { + boost::int32_t t = static_cast(static_cast( static_cast(p_u[j]) + - static_cast(p_v[j])) - borrow); + + // Underflow? Borrow? + if(t < static_cast(0)) + { + // Yes, underflow and borrow + t += static_cast(mp_elem_mask); + borrow = static_cast(1); + } + else + { + borrow = static_cast(0); + } + + p_u[j] = static_cast(static_cast(t) % static_cast(mp_elem_mask)); + } + + if(b_copy) + { + data = n_data; + exp = v.exp; + neg = v.neg; + } + + // Is it necessary to justify the data? + const typename array_type::const_iterator first_nonzero_elem = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); + + if(first_nonzero_elem != data.begin()) + { + if(first_nonzero_elem == data.end()) + { + // This result of the subtraction is exactly zero. + // Reset the sign and the exponent. + neg = false; + exp = static_cast(0); + } + else + { + // Justify the data + const std::size_t sj = static_cast(std::distance(data.begin(), first_nonzero_elem)); + + std::copy(data.begin() + static_cast(sj), data.end(), data.begin()); + std::fill(data.end() - sj, data.end(), static_cast(0u)); + + exp -= static_cast(sj * static_cast(mp_elem_digits10)); + } + } + } + + // Check for underflow. + if(iszero()) + { + return *this = zero(); + } + + bool overflow = exp >= mp_float_max_exp; + if(exp == mp_float_max_exp) + { + // Check to see if we really truely have an overflow or not... + if(isneg()) + { + mp_float t(*this); + t.negate(); + overflow = t.compare((max)()) > 0; + } + else + { + overflow = compare((max)()) > 0; + } + } + + // Check for overflow. + if(overflow) + { + const bool b_result_is_neg = neg; + + *this = inf(); + if(b_result_is_neg) + negate(); + } + + return *this; +} + +template +mp_float& mp_float::operator-=(const mp_float& v) +{ + // Use *this - v = -(-*this + v). + negate(); + *this += v; + negate(); + return *this; +} + +template +mp_float& mp_float::operator*=(const mp_float& v) +{ + // Evaluate the sign of the result. + const bool b_result_is_neg = (neg != v.neg); + + // Artificially set the sign of the result to be positive. + neg = false; + + // Handle special cases like zero, inf and NaN. + const bool b_u_is_inf = isinf(); + const bool b_v_is_inf = v.isinf(); + const bool b_u_is_zero = iszero(); + const bool b_v_is_zero = v.iszero(); + + if( (isnan() || v.isnan()) + || (b_u_is_inf && b_v_is_zero) + || (b_v_is_inf && b_u_is_zero) + ) + { + *this = nan(); + return *this; + } + + if(b_u_is_inf || b_v_is_inf) + { + *this = inf(); + if(b_result_is_neg) + negate(); + return *this; + } + + if(b_u_is_zero || b_v_is_zero) + { + return *this = zero(); + } + + // Check for overflow or underflow. + const bool u_exp_is_neg = (exp < static_cast(0)); + const bool v_exp_is_neg = (v.exp < static_cast(0)); + + if(u_exp_is_neg == v_exp_is_neg) + { + // Get the unsigned base-10 exponents of *this and v and... + const boost::int64_t u_exp = ((!u_exp_is_neg) ? exp : static_cast( -exp)); + const boost::int64_t v_exp = ((!v_exp_is_neg) ? v.exp : static_cast(-v.exp)); + + // Check the range of the upcoming multiplication. + const bool b_result_is_out_of_range = (v_exp >= static_cast(mp_float_max_exp10 - u_exp)); + + if(b_result_is_out_of_range) + { + if(u_exp_is_neg) + { + *this = zero(); + } + else + { + *this = inf(); + if(b_result_is_neg) + negate(); + } + return *this; + } + } + + // Set the exponent of the result. + exp += v.exp; + + boost::array(mp_elem_number + static_cast(1))> w = {{ 0u }}; + + mul_loop_uv(data.data(), v.data.data(), w.data(), (std::min)(prec_elem, v.prec_elem)); + + // Copy the multiplication data into the result. + // Shift the result and adjust the exponent if necessary. + if(w[static_cast(0u)] != static_cast(0u)) + { + exp += static_cast(mp_elem_digits10); + + std::copy(w.begin(), w.end() - 1u, data.begin()); + } + else + { + std::copy(w.begin() + 1u, w.end(), data.begin()); + } + + // Set the sign of the result. + neg = b_result_is_neg; + + return *this; +} + +template +mp_float& mp_float::operator/=(const mp_float& v) +{ + const bool u_and_v_are_finite_and_identical = ( isfinite() + && (fpclass == v.fpclass) + && (exp == v.exp) + && (cmp_data(v.data) == static_cast(0))); + + if(u_and_v_are_finite_and_identical) + { + *this = one(); + if(neg != v.neg) + negate(); + return *this; + } + else + { + mp_float t(v); + t.calculate_inv(); + return operator*=(t); + } +} + +template +mp_float& mp_float::mul_unsigned_long_long(const unsigned long long n) +{ + // Multiply *this with a constant unsigned long long. + + // Evaluate the sign of the result. + const bool b_neg = neg; + + // Artificially set the sign of the result to be positive. + neg = false; + + // Handle special cases like zero, inf and NaN. + const bool b_u_is_inf = isinf(); + const bool b_n_is_zero = (n == static_cast(0)); + + if(isnan() || (b_u_is_inf && b_n_is_zero)) + { + return (*this = nan()); + } + + if(b_u_is_inf) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + if(iszero() || b_n_is_zero) + { + // Multiplication by zero. + return *this = zero(); + } + + if(n >= static_cast(mp_elem_mask)) + { + neg = b_neg; + mp_float t; + t = n; + return operator*=(t); + } + + if(n == static_cast(1u)) + { + neg = b_neg; + return *this; + } + + // Set up the multiplication loop. + const boost::uint32_t nn = static_cast(n); + const boost::uint32_t carry = mul_loop_n(data.data(), nn, prec_elem); + + // Handle the carry and adjust the exponent. + if(carry != static_cast(0u)) + { + exp += static_cast(mp_elem_digits10); + + // Shift the result of the multiplication one element to the right. + std::copy_backward(data.begin(), + data.begin() + static_cast(prec_elem - static_cast(1)), + data.begin() + static_cast(prec_elem)); + + data.front() = static_cast(carry); + } + + bool overflow = exp >= mp_float_max_exp; + if(exp == mp_float_max_exp) + { + // Check to see if we really truely have an overflow or not... + if(isneg()) + { + mp_float t(*this); + t.negate(); + overflow = t.compare((max)()) > 0; + } + else + { + overflow = compare((max)()) > 0; + } + } + + if(overflow) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + // Set the sign. + neg = b_neg; + + return *this; +} + +template +mp_float& mp_float::div_unsigned_long_long(const unsigned long long n) +{ + // Divide *this by a constant unsigned long long. + + // Evaluate the sign of the result. + const bool b_neg = neg; + + // Artificially set the sign of the result to be positive. + neg = false; + + // Handle special cases like zero, inf and NaN. + if(isnan()) + { + return *this; + } + + if(isinf()) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + if(n == static_cast(0u)) + { + // Divide by 0. + if(iszero()) + { + *this = nan(); + return *this; + } + else + { + *this = inf(); + if(isneg()) + negate(); + return *this; + } + } + + if(iszero()) + { + return *this; + } + + if(n >= static_cast(mp_elem_mask)) + { + neg = b_neg; + mp_float t; + t = n; + return operator/=(t); + } + + const boost::uint32_t nn = static_cast(n); + + if(nn > static_cast(1u)) + { + // Do the division loop. + const boost::uint32_t prev = div_loop_n(data.data(), nn, prec_elem); + + // Determine if one leading zero is in the result data. + if(data[0] == static_cast(0u)) + { + // Adjust the exponent + exp -= static_cast(mp_elem_digits10); + + // Shift result of the division one element to the left. + std::copy(data.begin() + static_cast(1u), + data.begin() + static_cast(prec_elem - static_cast(1)), + data.begin()); + + data[prec_elem - static_cast(1)] = static_cast(static_cast(prev * static_cast(mp_elem_mask)) / nn); + } + } + + // Check for underflow. + if(iszero()) + { + return *this = zero(); + } + + // Set the sign of the result. + neg = b_neg; + + return *this; +} + +template +mp_float& mp_float::calculate_inv() +{ + // Compute the inverse of *this. + const bool b_neg = neg; + + neg = false; + + // Handle special cases like zero, inf and NaN. + if(iszero()) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + if(isnan()) + { + return *this; + } + + if(isinf()) + { + return *this = zero(); + } + + if(isone()) + { + if(b_neg) + negate(); + return *this; + } + + // Save the original *this. + mp_float x(*this); + + // Generate the initial estimate using division. + // Extract the mantissa and exponent for a "manual" + // computation of the estimate. + double dd; + boost::int64_t ne; + x.extract_parts(dd, ne); + + // Do the inverse estimate using double precision estimates of mantissa and exponent. + operator=(mp_float(1.0 / dd, -ne)); + + // Compute the inverse of *this. Quadratically convergent Newton-Raphson iteration + // is used. During the iterative steps, the precision of the calculation is limited + // to the minimum required in order to minimize the run-time. + + static const boost::int32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); + + for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= static_cast(2)) + { + // Adjust precision of the terms. + precision(static_cast(digits * static_cast(2))); + x.precision(static_cast(digits * static_cast(2))); + + // Next iteration. + mp_float t(*this); + t *= x; + t -= two(); + t.negate(); + *this *= t; + } + + neg = b_neg; + + prec_elem = mp_elem_number; + + return *this; +} + +template +mp_float& mp_float::calculate_sqrt(void) +{ + // Compute the square root of *this. + + if(isneg() || (!isfinite())) + { + *this = nan(); + return *this; + } + + if(iszero() || isone()) + { + return *this; + } + + // Save the original *this. + mp_float x(*this); + + // Generate the initial estimate using division. + // Extract the mantissa and exponent for a "manual" + // computation of the estimate. + double dd; + boost::int64_t ne; + extract_parts(dd, ne); + + // Force the exponent to be an even multiple of two. + if((ne % static_cast(2)) != static_cast(0)) + { + ++ne; + dd /= 10.0; + } + + // Setup the iteration. + // Estimate the square root using simple manipulations. + const double sqd = std::sqrt(dd); + + *this = mp_float(sqd, static_cast(ne / static_cast(2))); + + // Estimate 1.0 / (2.0 * x0) using simple manipulations. + mp_float vi(0.5 / sqd, static_cast(-ne / static_cast(2))); + + // Compute the square root of x. Coupled Newton iteration + // as described in "Pi Unleashed" is used. During the + // iterative steps, the precision of the calculation is + // limited to the minimum required in order to minimize + // the run-time. + // + // Book references: + // http://www.jjj.de/pibook/pibook.html + // http://www.amazon.com/exec/obidos/tg/detail/-/3540665722/qid=1035535482/sr=8-7/ref=sr_8_7/104-3357872-6059916?v=glance&n=507846 + + static const boost::int32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); + + for(boost::int32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= static_cast(2)) + { + // Adjust precision of the terms. + precision(static_cast(digits * static_cast(2))); + vi.precision(static_cast(digits * static_cast(2))); + + // Next iteration of vi + mp_float t(*this); + t *= vi; + t.negate(); + t.mul_unsigned_long_long(2); + t += one(); + t *= vi; + vi += t; + + // Next iteration of *this + t = *this; + t *= *this; + t.negate(); + t += x; + t *= vi; + *this += t; + } + + prec_elem = mp_elem_number; + + return *this; +} + +template +int mp_float::cmp_data(const array_type& vd) const +{ + // Compare the data of *this with those of v. + // Return +1 for *this > v + // 0 for *this = v + // -1 for *this < v + + const std::pair mismatch_pair = std::mismatch(data.begin(), data.end(), vd.begin()); + + const bool is_equal = ((mismatch_pair.first == data.end()) && (mismatch_pair.second == vd.end())); + + if(is_equal) + { + return 0; + } + else + { + return ((*mismatch_pair.first > *mismatch_pair.second) ? 1 : -1); + } +} + +template +int mp_float::compare(const mp_float& v) const +{ + // Compare v with *this. + // Return +1 for *this > v + // 0 for *this = v + // -1 for *this < v + + // Handle all non-finite cases. + if((!isfinite()) || (!v.isfinite())) + { + // NaN can never equal NaN. Return an implementation-dependent + // signed result. Also note that comparison of NaN with NaN + // using operators greater-than or less-than is undefined. + if(isnan() || v.isnan()) { return (isnan() ? 1 : -1); } + + if(isinf() && v.isinf()) + { + // Both *this and v are infinite. They are equal if they have the same sign. + // Otherwise, *this is less than v if and only if *this is negative. + return ((neg == v.neg) ? 0 : (neg ? -1 : 1)); + } + + if(isinf()) + { + // *this is infinite, but v is finite. + // So negative infinite *this is less than any finite v. + // Whereas positive infinite *this is greater than any finite v. + return (isneg() ? -1 : 1); + } + else + { + // *this is finite, and v is infinite. + // So any finite *this is greater than negative infinite v. + // Whereas any finite *this is less than positive infinite v. + return (v.neg ? 1 : -1); + } + } + + // And now handle all *finite* cases. + if(iszero()) + { + // The value of *this is zero and v is either zero or non-zero. + return (v.iszero() ? 0 + : (v.neg ? 1 : -1)); + } + else if(v.iszero()) + { + // The value of v is zero and *this is non-zero. + return (neg ? -1 : 1); + } + else + { + // Both *this and v are non-zero. + + if(neg != v.neg) + { + // The signs are different. + return (neg ? -1 : 1); + } + else if(exp != v.exp) + { + // The signs are the same and the exponents are different. + const int val_cmp_exp = ((exp < v.exp) ? 1 : -1); + + return (neg ? val_cmp_exp : -val_cmp_exp); + } + else + { + // The signs are the same and the exponents are the same. + // Compare the data. + const int val_cmp_data = cmp_data(v.data); + + return ((!neg) ? val_cmp_data : -val_cmp_data); + } + } +} + +template +bool mp_float::isone() const +{ + // Check if the value of *this is identically 1 or very close to 1. + + const bool not_negative_and_is_finite = ((!neg) && isfinite()); + + if(not_negative_and_is_finite) + { + if((data[0u] == static_cast(1u)) && (exp == static_cast(0))) + { + const typename array_type::const_iterator it_non_zero = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); + return (it_non_zero == data.end()); + } + else if((data[0u] == static_cast(mp_elem_mask - 1)) && (exp == static_cast(-mp_elem_digits10))) + { + const typename array_type::const_iterator it_non_nine = std::find_if(data.begin(), data.end(), data_elem_is_non_nine_predicate); + return (it_non_nine == data.end()); + } + } + + return false; +} + +template +bool mp_float::isint() const +{ + if(fpclass != mp_finite) { return false; } + + if(iszero()) { return true; } + + if(exp < static_cast(0)) { return false; } // |*this| < 1. + + const typename array_type::size_type offset_decimal_part = static_cast(exp / mp_elem_digits10) + 1u; + + if(offset_decimal_part >= static_cast(mp_elem_number)) + { + // The number is too large to resolve the integer part. + // It considered to be a pure integer. + return true; + } + + typename array_type::const_iterator it_non_zero = std::find_if(data.begin() + offset_decimal_part, data.end(), data_elem_is_non_zero_predicate); + + return (it_non_zero == data.end()); +} + +template +void mp_float::extract_parts(double& mantissa, boost::int64_t& exponent) const +{ + // Extract the approximate parts mantissa and base-10 exponent from the input mp_float value x. + + // Extracts the mantissa and exponent. + exponent = exp; + + boost::uint32_t p10 = static_cast(1u); + boost::uint32_t test = data[0u]; + + for(;;) + { + test /= static_cast(10u); + + if(test == static_cast(0u)) + { + break; + } + + p10 *= static_cast(10u); + ++exponent; + } + + mantissa = static_cast(data[0]) + + (static_cast(data[1]) / static_cast(mp_elem_mask)) + + ((static_cast(data[2]) / static_cast(mp_elem_mask)) / static_cast(mp_elem_mask)); + + mantissa /= static_cast(p10); + + if(neg) { mantissa = -mantissa; } +} + +template +double mp_float::extract_double(void) const +{ + // Returns the double conversion of a mp_float. + + // Check for non-normal mp_float. + if(!isfinite()) + { + if(isnan()) + { + return std::numeric_limits::quiet_NaN(); + } + else + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + } + + mp_float xx(*this); + if(xx.isneg()) + xx.negate(); + + // Check for zero mp_float. + if(iszero() || (xx.compare(double_min()) < 0)) + { + return 0.0; + } + + // Check if mp_float exceeds the maximum of double. + if(xx.compare(double_max()) > 0) + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + + std::stringstream ss; + + ss << str(std::numeric_limits::digits10 + (2 + 1), true); + + double d; + ss >> d; + + return d; +} + +template +long double mp_float::extract_long_double(void) const +{ + // Returns the long double conversion of a mp_float. + + // Check for non-normal mp_float. + if(!isfinite()) + { + if(isnan()) + { + return std::numeric_limits::quiet_NaN(); + } + else + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + } + + mp_float xx(*this); + if(xx.isneg()) + xx.negate(); + + // Check for zero mp_float. + if(iszero() || (xx.compare(long_double_min()) < 0)) + { + return static_cast(0.0); + } + + // Check if mp_float exceeds the maximum of double. + if(xx.compare(long_double_max()) > 0) + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + + std::stringstream ss; + + ss << str(std::numeric_limits::digits10 + (2 + 1), true); + + long double ld; + ss >> ld; + + return ld; +} + +template +signed long long mp_float::extract_signed_long_long(void) const +{ + // Extracts a signed long long from *this. + // If (x > maximum of signed long long) or (x < minimum of signed long long), + // then the maximum or minimum of signed long long is returned accordingly. + + if(exp < static_cast(0)) + { + return static_cast(0); + } + + const bool b_neg = isneg(); + + unsigned long long val; + + if((!b_neg) && (compare(long_long_max()) > 0)) + { + return (std::numeric_limits::max)(); + } + else if(b_neg && (compare(long_long_min()) < 0)) + { + return (std::numeric_limits::min)(); + } + else + { + // Extract the data into an unsigned long long value. + mp_float xn(extract_integer_part()); + if(xn.isneg()) + xn.negate(); + + val = static_cast(xn.data[0]); + + const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); + + for(boost::int32_t i = static_cast(1); i <= imax; i++) + { + val *= static_cast(mp_elem_mask); + val += static_cast(xn.data[i]); + } + } + + return ((!b_neg) ? static_cast(val) : static_cast(-static_cast(val))); +} + +template +unsigned long long mp_float::extract_unsigned_long_long(void) const +{ + // Extracts an unsigned long long from *this. + // If x exceeds the maximum of unsigned long long, + // then the maximum of unsigned long long is returned. + // If x is negative, then the unsigned long long cast of + // the signed long long extracted value is returned. + + if(isneg()) + { + return static_cast(extract_signed_long_long()); + } + + if(exp < static_cast(0)) + { + return static_cast(0u); + } + + const mp_float xn(extract_integer_part()); + + unsigned long long val; + + if(xn.compare(ulong_long_max()) > 0) + { + return (std::numeric_limits::max)(); + } + else + { + // Extract the data into an unsigned long long value. + val = static_cast(xn.data[0]); + + const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); + + for(boost::int32_t i = static_cast(1); i <= imax; i++) + { + val *= static_cast(mp_elem_mask); + val += static_cast(xn.data[i]); + } + } + + return val; +} + +template +mp_float mp_float::extract_integer_part(void) const +{ + // Compute the signed integer part of x. + + if(!isfinite()) + { + return *this; + } + + if(exp < static_cast(0)) + { + // The absolute value of the number is smaller than 1. + // Thus the integer part is zero. + return zero(); + } + else if(exp >= Digits10 - 1) + { + // The number is too large to resolve the integer part. + // Thus it is already a pure integer part. + return *this; + } + + // Make a local copy. + mp_float x = *this; + + // Clear out the decimal portion + const size_t first_clear = (static_cast(x.exp) / static_cast(mp_elem_digits10)) + 1u; + const size_t last_clear = static_cast(mp_elem_number); + + std::fill(x.data.begin() + first_clear, x.data.begin() + last_clear, static_cast(0u)); + + return x; +} + +template +std::string mp_float::str(std::size_t number_of_digits, bool scientific) const +{ + std::string str; + boost::int64_t my_exp = order(); + if(number_of_digits == 0) + number_of_digits = (std::numeric_limits::max)(); + // Determine the number of elements needed to provide the requested digits from mp_float. + const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(mp_elem_digits10)) + 2u), + static_cast(mp_elem_number)); + + // Extract the remaining digits from mp_float after the decimal point. + str = boost::lexical_cast(data[0]); + + // Extract all of the digits from mp_float, beginning with the first data element. + for(std::size_t i = static_cast(1u); i < number_of_elements; i++) + { + std::stringstream ss; + + ss << std::setw(static_cast(mp_elem_digits10)) + << std::setfill(static_cast('0')) + << data[i]; + + str += ss.str(); + } + + // Cut the output to the size of the precision. + if(str.length() > number_of_digits) + { + // Get the digit after the last needed digit for rounding + const boost::uint32_t round = static_cast(static_cast(str.at(number_of_digits)) - static_cast('0')); + + // Truncate the string + str = str.substr(static_cast(0u), number_of_digits); + + if(round >= static_cast(5u)) + { + std::size_t ix = static_cast(str.length() - 1u); + + // Every trailing 9 must be rounded up + while(ix && (static_cast(str.at(ix)) - static_cast('0') == static_cast(9))) + { + str.at(ix) = static_cast('0'); + --ix; + } + + if(!ix) + { + // There were nothing but trailing nines. + if(static_cast(static_cast(str.at(ix)) - static_cast(0x30)) == static_cast(9)) + { + // Increment up to the next order and adjust exponent. + str.at(ix) = static_cast('1'); + ++my_exp; + } + else + { + // Round up this digit. + ++str.at(ix); + } + } + else + { + // Round up the last digit. + ++str[ix]; + } + } + } + // + // Suppress trailing zeros: + // + std::string::iterator pos = str.end(); + while(pos != str.begin() && *--pos == '0'){} + if(pos != str.end()) + ++pos; + str.erase(pos, str.end()); + if(str.empty()) + str = '0'; + if(!scientific && (str.size() < 20) && (my_exp >= 0) && (my_exp < 20)) + { + if(1 + my_exp > str.size()) + { + // Just pad out the end with zeros: + str.append(static_cast(1 + my_exp - str.size()), '0'); + } + else if(my_exp + 1 != str.size()) + { + // Insert the decimal point: + str.insert(static_cast(my_exp + 1), 1, '.'); + } + } + else + { + // Scientific format: + str.insert(1, 1, '.'); + if(str.size() == 2) + str.append(1, '0'); + str.append(1, 'e'); + str.append(boost::lexical_cast(my_exp)); + } + if(isneg()) + str.insert(0, 1, '-'); + return str; +} + +template +bool mp_float::rd_string(const char* const s) +{ + std::string str(s); + + // Get a possible exponent and remove it. + exp = static_cast(0); + + std::size_t pos; + + if( ((pos = str.find('e')) != std::string::npos) + || ((pos = str.find('E')) != std::string::npos) + ) + { + // Remove the exponent part from the string. + exp = boost::lexical_cast(static_cast(str.c_str() + (pos + 1u))); + str = str.substr(static_cast(0u), pos); + } + + // Get a possible +/- sign and remove it. + neg = false; + + if((pos = str.find(static_cast('-'))) != std::string::npos) + { + neg = true; + str.erase(pos, static_cast(1u)); + } + + if((pos = str.find(static_cast('+'))) != std::string::npos) + { + str.erase(pos, static_cast(1u)); + } + + // Remove leading zeros for all input types. + const std::string::iterator fwd_it_leading_zero = std::find_if(str.begin(), str.end(), char_is_nonzero_predicate); + + if(fwd_it_leading_zero != str.begin()) + { + if(fwd_it_leading_zero == str.end()) + { + // The string contains nothing but leading zeros. + // This string represents zero. + operator=(zero()); + return true; + } + else + { + str.erase(str.begin(), fwd_it_leading_zero); + } + } + + // Put the input string into the standard mp_float input form + // aaa.bbbbE+/-n, where aa has 1...mp_elem_digits10, bbbb has an + // even multiple of mp_elem_digits10 which are possibly zero padded + // on the right-end, and n is a signed 32-bit integer which is an + // even multiple of mp_elem_digits10. + + // Find a possible decimal point. + pos = str.find(static_cast('.')); + + if(pos != std::string::npos) + { + // Remove all trailing insignificant zeros. + const std::string::const_reverse_iterator rit_non_zero = std::find_if(str.rbegin(), str.rend(), char_is_nonzero_predicate); + + if(rit_non_zero != str.rbegin()) + { + const std::string::size_type ofs = str.length() - std::distance(str.rbegin(), rit_non_zero); + str.erase(str.begin() + ofs, str.end()); + } + + // Check if the input is identically zero. + if(str == std::string(".")) + { + operator=(zero()); + return true; + } + + // Remove leading significant zeros just after the decimal point + // and adjust the exponent accordingly. + // Note that the while-loop operates only on strings of the form ".000abcd..." + // and peels away the zeros just after the decimal point. + if(str.at(static_cast(0u)) == static_cast('.')) + { + const std::string::iterator it_non_zero = std::find_if(str.begin() + 1u, str.end(), char_is_nonzero_predicate); + + std::size_t delta_exp = static_cast(0u); + + if(str.at(static_cast(1u)) == static_cast('0')) + { + delta_exp = std::distance(str.begin() + 1u, it_non_zero); + } + + // Bring one single digit into the mantissa and adjust exponent accordingly. + str.erase(str.begin(), it_non_zero); + str.insert(static_cast(1u), "."); + exp -= static_cast(delta_exp + 1u); + } + } + else + { + // Input string has no decimal point: Append decimal point. + str.append("."); + } + + // Shift the decimal point such that the exponent is an even multiple of mp_elem_digits10. + std::size_t n_shift = static_cast(0u); + const std::size_t n_exp_rem = static_cast(exp % static_cast(mp_elem_digits10)); + + if((exp % static_cast(mp_elem_digits10)) != static_cast(0)) + { + n_shift = ((exp < static_cast(0)) + ? static_cast(n_exp_rem + static_cast(mp_elem_digits10)) + : static_cast(n_exp_rem)); + } + + // Make sure that there are enough digits for the decimal point shift. + pos = str.find(static_cast('.')); + + std::size_t pos_plus_one = static_cast(pos + 1u); + + if((str.length() - pos_plus_one) < n_shift) + { + const std::size_t sz = static_cast(n_shift - (str.length() - pos_plus_one)); + + str.append(std::string(sz, static_cast('0'))); + } + + // Do the decimal point shift. + if(n_shift != static_cast(0u)) + { + str.insert(static_cast(pos_plus_one + n_shift), "."); + + str.erase(pos, static_cast(1u)); + + exp -= static_cast(n_shift); + } + + // Cut the size of the mantissa to <= mp_elem_digits10. + pos = str.find(static_cast('.')); + pos_plus_one = static_cast(pos + 1u); + + if(pos > static_cast(mp_elem_digits10)) + { + const boost::int32_t n_pos = static_cast(pos); + const boost::int32_t n_rem_is_zero = ((static_cast(n_pos % mp_elem_digits10) == static_cast(0)) ? static_cast(1) : static_cast(0)); + const boost::int32_t n = static_cast(static_cast(n_pos / mp_elem_digits10) - n_rem_is_zero); + + str.insert(static_cast(static_cast(n_pos - static_cast(n * mp_elem_digits10))), "."); + + str.erase(pos_plus_one, static_cast(1u)); + + exp += static_cast(static_cast(n) * static_cast(mp_elem_digits10)); + } + + // Pad the decimal part such that its value is an even + // multiple of mp_elem_digits10. + pos = str.find(static_cast('.')); + pos_plus_one = static_cast(pos + 1u); + + const boost::int32_t n_dec = static_cast(static_cast(str.length() - 1u) - static_cast(pos)); + const boost::int32_t n_rem = static_cast(n_dec % mp_elem_digits10); + boost::int32_t n_cnt = ((n_rem != static_cast(0)) ? static_cast(mp_elem_digits10 - n_rem) + : static_cast(0)); + + if(n_cnt != static_cast(0)) + { + str.append(static_cast(n_cnt), static_cast('0')); + } + + // Truncate decimal part if it is too long. + const std::size_t max_dec = static_cast((mp_elem_number - 1) * mp_elem_digits10); + + if(static_cast(str.length() - pos) > max_dec) + { + str = str.substr(static_cast(0u), + static_cast(pos_plus_one + max_dec)); + } + + // Now the input string has the standard mp_float input form. + // (See the comment above.) + + // Set all the data elements to 0. + std::fill(data.begin(), data.end(), static_cast(0u)); + + // Extract the data. + + // First get the digits to the left of the decimal point... + data[0u] = boost::lexical_cast(str.substr(static_cast(0u), pos)); + + // ...then get the remaining digits to the right of the decimal point. + const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast(mp_elem_digits10)); + + for(std::string::size_type i = static_cast(0u); i < i_end; i++) + { + const std::string::const_iterator it = str.begin() + + pos_plus_one + + (i * static_cast(mp_elem_digits10)); + + data[i + 1u] = boost::lexical_cast(std::string(it, it + static_cast(mp_elem_digits10))); + } + + // Check for overflow... + if(exp > mp_float_max_exp) + { + const bool b_result_is_neg = neg; + + *this = inf(); + if(b_result_is_neg) + negate(); + } + + // ...and check for underflow. + if(exp <= mp_float_min_exp) + { + if(exp == mp_float_min_exp) + { + // Check for identity with the minimum value. + mp_float test = *this; + + test.exp = static_cast(0); + + if(test.isone()) + { + *this = zero(); + } + } + else + { + *this = zero(); + } + } + + return true; +} + +template +mp_float::mp_float(const double mantissa, const boost::int64_t exponent) + : data (), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) +{ + // Create an mp_float from mantissa and exponent. + // This ctor does not maintain the full precision of double. + + const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits::min)() * (1.0 + std::numeric_limits::epsilon()))); + + if(mantissa_is_iszero) + { + std::fill(data.begin(), data.end(), static_cast(0u)); + return; + } + + const bool b_neg = (mantissa < 0.0); + + double d = ((!b_neg) ? mantissa : -mantissa); + boost::int64_t e = exponent; + + while(d > 10.0) { d /= 10.0; ++e; } + while(d < 1.0) { d *= 10.0; --e; } + + boost::int32_t shift = static_cast(e % static_cast(mp_elem_digits10)); + + while(static_cast(shift-- % mp_elem_digits10) != static_cast(0)) + { + d *= 10.0; + --e; + } + + exp = e; + neg = b_neg; + + std::fill(data.begin(), data.end(), static_cast(0u)); + + static const boost::int32_t digit_ratio = static_cast(static_cast(std::numeric_limits::digits10) / static_cast(mp_elem_digits10)); + static const boost::int32_t digit_loops = static_cast(digit_ratio + static_cast(2)); + + for(boost::int32_t i = static_cast(0); i < digit_loops; i++) + { + boost::uint32_t n = static_cast(static_cast(d)); + data[i] = static_cast(n); + d -= static_cast(n); + d *= static_cast(mp_elem_mask); + } +} + +template +mp_float& mp_float::operator = (long double a) +{ + // Christopher Kormanyos's original code used a cast to long long here, but that fails + // when long double has more digits than a long long. + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + return *this = zero(); + } + + if (a == 1) { + return *this = one(); + } + + if((boost::math::isinf)(a)) + { + return *this = inf(); + } + if((boost::math::isnan)(a)) + return *this = nan(); + + int e; + long double f, term; + *this = zero(); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + *this *= pow2(shift); + if(term > 0) + add_unsigned_long_long(static_cast(term)); + else + sub_unsigned_long_long(static_cast(-term)); + f -= term; + } + if(e != 0) + *this *= pow2(e); + return *this; +} + +template +void mp_float::from_unsigned_long_long(const unsigned long long u) +{ + std::fill(data.begin(), data.end(), static_cast(0u)); + + exp = static_cast(0); + neg = false; + fpclass = mp_finite; + prec_elem = mp_elem_number; + + std::size_t i =static_cast(0u); + + unsigned long long uu = u; + + boost::uint32_t temp[(std::numeric_limits::digits10 / static_cast(mp_elem_digits10)) + 3] = { static_cast(0u) }; + + while(uu != static_cast(0u)) + { + temp[i] = static_cast(uu % static_cast(mp_elem_mask)); + uu = static_cast(uu / static_cast(mp_elem_mask)); + ++i; + } + + if(i > static_cast(1u)) + { + exp += static_cast((i - 1u) * static_cast(mp_elem_digits10)); + } + + std::reverse(temp, temp + i); + std::copy(temp, temp + (std::min)(i, static_cast(mp_elem_number)), data.begin()); +} + +template +void mp_float::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p) +{ + boost::uint64_t carry = static_cast(0u); + + for(boost::int32_t j = static_cast(p - 1u); j >= static_cast(0); j--) + { + boost::uint64_t sum = carry; + + for(boost::int32_t i = j; i >= static_cast(0); i--) + { + sum += static_cast(u[i] * static_cast(v[j - i])); + } + + w[j + 1] = static_cast(sum % static_cast(mp_elem_mask)); + carry = static_cast(sum / static_cast(mp_elem_mask)); + } + + w[0u] = static_cast(carry); +} + +template +boost::uint32_t mp_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +{ + boost::uint64_t carry = static_cast(0u); + + // Multiplication loop. + for(boost::int32_t j = p - 1; j >= static_cast(0); j--) + { + const boost::uint64_t t = static_cast(carry + static_cast(u[j] * static_cast(n))); + carry = static_cast(t / static_cast(mp_elem_mask)); + u[j] = static_cast(t - static_cast(static_cast(mp_elem_mask) * static_cast(carry))); + } + + return static_cast(carry); +} + +template +boost::uint32_t mp_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +{ + boost::uint64_t prev = static_cast(0u); + + for(boost::int32_t j = static_cast(0); j < p; j++) + { + const boost::uint64_t t = static_cast(u[j] + static_cast(prev * static_cast(mp_elem_mask))); + u[j] = static_cast(t / n); + prev = static_cast(t - static_cast(n * static_cast(u[j]))); + } + + return static_cast(prev); +} + +template +mp_float mp_float::pow2(const boost::int64_t p) +{ + // Create a static const table of p^2 for -128 < p < +128. + // Note: The size of this table must be odd-numbered and + // symmetric about 0. + init.do_nothing(); + static const boost::array, 255u> p2_data = + {{ + mp_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), + mp_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), + mp_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"), + mp_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"), + mp_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"), + mp_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"), + mp_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"), + mp_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"), + mp_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"), + mp_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"), + mp_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"), + mp_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"), + mp_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"), + mp_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"), + mp_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"), + mp_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"), + mp_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"), + mp_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"), + mp_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"), + mp_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"), + mp_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"), + mp_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"), + mp_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"), + mp_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"), + mp_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"), + mp_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"), + mp_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"), + mp_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"), + mp_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"), + mp_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"), + mp_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"), + mp_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"), + mp_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"), + mp_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"), + mp_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"), + mp_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"), + mp_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"), + mp_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"), + mp_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"), + mp_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"), + mp_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"), + mp_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"), + mp_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"), + mp_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"), + mp_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"), + mp_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"), + mp_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"), + mp_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"), + mp_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"), + mp_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"), + mp_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"), + mp_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"), + mp_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"), + mp_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"), + mp_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"), + mp_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"), + mp_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"), + mp_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"), + mp_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"), + mp_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"), + mp_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"), + mp_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"), + mp_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"), + mp_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"), + mp_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"), + mp_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"), + mp_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"), + mp_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"), + mp_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"), + mp_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"), + mp_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"), + mp_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"), + mp_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"), + mp_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"), + mp_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"), + mp_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"), + mp_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"), + mp_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"), + mp_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"), + mp_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"), + mp_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"), + mp_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"), + mp_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"), + mp_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"), + mp_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"), + mp_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"), + mp_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"), + mp_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"), + mp_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + mp_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + mp_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + mp_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + mp_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + mp_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + mp_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + mp_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + mp_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + mp_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + mp_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + mp_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + mp_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + mp_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + mp_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + mp_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + mp_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + mp_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + mp_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + mp_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + mp_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + mp_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + mp_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + mp_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + mp_float("0.125"), + mp_float("0.25"), + mp_float("0.5"), + one(), + two(), + mp_float(static_cast(4)), + mp_float(static_cast(8)), + mp_float(static_cast(16)), + mp_float(static_cast(32)), + mp_float(static_cast(64)), + mp_float(static_cast(128)), + mp_float(static_cast(256)), + mp_float(static_cast(512)), + mp_float(static_cast(1024)), + mp_float(static_cast(2048)), + mp_float(static_cast(4096)), + mp_float(static_cast(8192)), + mp_float(static_cast(16384)), + mp_float(static_cast(32768)), + mp_float(static_cast(65536)), + mp_float(static_cast(131072)), + mp_float(static_cast(262144)), + mp_float(static_cast(524288)), + mp_float(static_cast(1uL << 20u)), + mp_float(static_cast(1uL << 21u)), + mp_float(static_cast(1uL << 22u)), + mp_float(static_cast(1uL << 23u)), + mp_float(static_cast(1uL << 24u)), + mp_float(static_cast(1uL << 25u)), + mp_float(static_cast(1uL << 26u)), + mp_float(static_cast(1uL << 27u)), + mp_float(static_cast(1uL << 28u)), + mp_float(static_cast(1uL << 29u)), + mp_float(static_cast(1uL << 30u)), + mp_float(static_cast(1uL << 31u)), + mp_float(static_cast(1uLL << 32u)), + mp_float(static_cast(1uLL << 33u)), + mp_float(static_cast(1uLL << 34u)), + mp_float(static_cast(1uLL << 35u)), + mp_float(static_cast(1uLL << 36u)), + mp_float(static_cast(1uLL << 37u)), + mp_float(static_cast(1uLL << 38u)), + mp_float(static_cast(1uLL << 39u)), + mp_float(static_cast(1uLL << 40u)), + mp_float(static_cast(1uLL << 41u)), + mp_float(static_cast(1uLL << 42u)), + mp_float(static_cast(1uLL << 43u)), + mp_float(static_cast(1uLL << 44u)), + mp_float(static_cast(1uLL << 45u)), + mp_float(static_cast(1uLL << 46u)), + mp_float(static_cast(1uLL << 47u)), + mp_float(static_cast(1uLL << 48u)), + mp_float(static_cast(1uLL << 49u)), + mp_float(static_cast(1uLL << 50u)), + mp_float(static_cast(1uLL << 51u)), + mp_float(static_cast(1uLL << 52u)), + mp_float(static_cast(1uLL << 53u)), + mp_float(static_cast(1uLL << 54u)), + mp_float(static_cast(1uLL << 55u)), + mp_float(static_cast(1uLL << 56u)), + mp_float(static_cast(1uLL << 57u)), + mp_float(static_cast(1uLL << 58u)), + mp_float(static_cast(1uLL << 59u)), + mp_float(static_cast(1uLL << 60u)), + mp_float(static_cast(1uLL << 61u)), + mp_float(static_cast(1uLL << 62u)), + mp_float(static_cast(1uLL << 63u)), + mp_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + mp_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + mp_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + mp_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + mp_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + mp_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + mp_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + mp_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + mp_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + mp_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + mp_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + mp_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + mp_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + mp_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + mp_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + mp_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + mp_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + mp_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + mp_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + mp_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + mp_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"), + mp_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"), + mp_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"), + mp_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"), + mp_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"), + mp_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"), + mp_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"), + mp_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"), + mp_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"), + mp_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"), + mp_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"), + mp_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"), + mp_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"), + mp_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"), + mp_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"), + mp_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"), + mp_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"), + mp_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"), + mp_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"), + mp_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"), + mp_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"), + mp_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"), + mp_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"), + mp_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"), + mp_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"), + mp_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"), + mp_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"), + mp_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"), + mp_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"), + mp_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"), + mp_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"), + mp_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"), + mp_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"), + mp_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"), + mp_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"), + mp_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"), + mp_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"), + mp_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"), + mp_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"), + mp_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"), + mp_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"), + mp_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"), + mp_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"), + mp_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") + }}; + + if((p > static_cast(-128)) && (p < static_cast(+128))) + { + return p2_data[static_cast(p + ((p2_data.size() - 1u) / 2u))]; + } + + // Compute and return 2^p. + if(p < static_cast(0)) + { + return pow2(static_cast(-p)).calculate_inv(); + } + else if(p < static_cast(std::numeric_limits::digits)) + { + const boost::uint64_t p2 = static_cast(static_cast(1uLL) << p); + return mp_float(p2); + } + else + { + mp_float t; + default_ops::detail::pow_imp(t, two(), p, mpl::true_()); + return t; + } +} + + +template +inline void add(mp_float& result, const mp_float& o) +{ + result += o; +} +template +inline void subtract(mp_float& result, const mp_float& o) +{ + result -= o; +} +template +inline void multiply(mp_float& result, const mp_float& o) +{ + result *= o; +} +template +inline void divide(mp_float& result, const mp_float& o) +{ + result /= o; +} + +template +inline void add(mp_float& result, const unsigned long long& o) +{ + result.add_unsigned_long_long(o); +} +template +inline void subtract(mp_float& result, const unsigned long long& o) +{ + result.sub_unsigned_long_long(o); +} +template +inline void multiply(mp_float& result, const unsigned long long& o) +{ + result.mul_unsigned_long_long(o); +} +template +inline void divide(mp_float& result, const unsigned long long& o) +{ + result.div_unsigned_long_long(o); +} + +template +inline void add(mp_float& result, long long o) +{ + if(o < 0) + result.sub_unsigned_long_long(-o); + else + result.add_unsigned_long_long(o); +} +template +inline void subtract(mp_float& result, long long o) +{ + if(o < 0) + result.add_unsigned_long_long(-o); + else + result.sub_unsigned_long_long(o); +} +template +inline void multiply(mp_float& result, long long o) +{ + if(o < 0) + { + result.mul_unsigned_long_long(-o); + result.negate(); + } + else + result.mul_unsigned_long_long(o); +} +template +inline void divide(mp_float& result, long long o) +{ + if(o < 0) + { + result.div_unsigned_long_long(-o); + result.negate(); + } + else + result.div_unsigned_long_long(o); +} + +template +inline void convert_to(unsigned long long* result, const mp_float& val) +{ + *result = val.extract_unsigned_long_long(); +} +template +inline void convert_to(long long* result, const mp_float& val) +{ + *result = val.extract_signed_long_long(); +} +template +inline void convert_to(long double* result, mp_float& val) +{ + *result = val.extract_long_double(); +} + + +typedef mp_number > mp_float_50; +typedef mp_number > mp_float_100; + +}} + +#endif + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index b1379fd4..00078e8e 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -9,12 +9,6 @@ import path ; local ntl-path = [ modules.peek : NTL_PATH ] ; local gmp_path = [ modules.peek : GMP_PATH ] ; local mpfr_path = [ modules.peek : MPFR_PATH ] ; -local e_float_path = [ modules.peek : BOOST_E_FLOAT_PATH ] ; - -if ! $(e_float_path) -{ - e_float_path = ../../../../e_float ; -} project : requirements $(gmp_path) @@ -22,36 +16,15 @@ project : requirements $(gmp_path)/gmpfrxx $(mpfr_path) ../../.. - $(e_float_path) $(gmp_path) $(mpfr_path) $(mpfr_path)/build.vc10/lib/Win32/Debug msvc:static - E_FLOAT_DIGITS10=100 - E_FLOAT_TYPE_EFX ; lib gmp ; lib mpfr ; -E_FLOAT_SRC = [ GLOB $(e_float_path)/libs/e_float/src/e_float : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/e_float/efx : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/constants : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/elementary : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/gamma : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/integer : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/tables : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/functions/zeta : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/constants : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/generic_functions/elementary : *.cpp ] - [ GLOB $(e_float_path)/libs/e_float/src/utility : *.cpp ] - ; - -lib e_float : $(E_FLOAT_SRC) - : - [ check-target-builds ../config//has_e_float : : no ] - ; - run test_arithmetic.cpp : # command line : # input files @@ -59,6 +32,13 @@ run test_arithmetic.cpp TEST_BACKEND : test_arithmetic_backend_concept ; +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_arithmetic_mp_float ; + run test_arithmetic.cpp gmp : # command line : # input files @@ -107,14 +87,6 @@ run test_arithmetic.cpp mpfr gmp [ check-target-builds ../config//has_mpfr : : no ] : test_arithmetic_mpfr_50 ; -run test_arithmetic.cpp $(E_FLOAT_SRC) - : # command line - : # input files - : # requirements - TEST_E_FLOAT - [ check-target-builds ../config//has_e_float : : no ] - : test_arithmetic_e_float ; - run test_numeric_limits.cpp : # command line : # input files @@ -170,15 +142,6 @@ run test_numeric_limits.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_numeric_limits_mpfr_50 ; - -run test_numeric_limits.cpp $(E_FLOAT_SRC) - : # command line - : # input files - : # requirements - TEST_E_FLOAT - [ check-target-builds ../config//has_e_float : : no ] - : test_numeric_limits_e_float ; - run mp_number_concept_check.cpp mpfr : # command line : # input files diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 86d18619..dc71ed86 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -6,14 +6,14 @@ #include #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ # define TEST_MPFR # define TEST_MPFR_50 -# define TEST_E_FLOAT +# define TEST_MP_FLOAT # define TEST_MPQ #ifdef _MSC_VER @@ -31,8 +31,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include @@ -325,16 +325,6 @@ void test_float_ops(const boost::mpl::int_ -struct lexical_cast_target_type -{ - typedef long double type; -}; - -#else - template struct lexical_cast_target_type { @@ -349,8 +339,6 @@ struct lexical_cast_target_type >::type type; }; -#endif - template void test_negative_mixed(boost::mpl::true_ const&) { @@ -483,7 +471,6 @@ void test_mixed() BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); BOOST_TEST(n4 == Real(n4)); - std::cout << Real(n1).str(0, boost::is_floating_point::value) << std::endl; #if defined(TEST_MPFR) || defined(TEST_MPFR_50) Num tol = 10 * std::numeric_limits::epsilon(); #else @@ -880,8 +867,8 @@ int main() #ifdef TEST_MPQ test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); #endif #ifdef TEST_MPFR test(); From ad66feecbe7b674592620c13742f3ac8ae5e327f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 27 Oct 2011 16:46:46 +0000 Subject: [PATCH 044/256] Add numeric_limits support for mp_float. [SVN r75134] --- include/boost/multiprecision/mp_float.hpp | 65 +++++++++++++++++++++++ test/Jamfile.v2 | 8 +++ test/test_numeric_limits.cpp | 13 ++--- 3 files changed, 80 insertions(+), 6 deletions(-) diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp index a07ca1ac..0e32e962 100644 --- a/include/boost/multiprecision/mp_float.hpp +++ b/include/boost/multiprecision/mp_float.hpp @@ -95,6 +95,7 @@ private: mp_float::long_long_max(); mp_float::long_long_min(); mp_float::ulong_long_max(); + mp_float::eps(); mp_float::pow2(0); } void do_nothing(){} @@ -269,6 +270,12 @@ public: static mp_float val((std::numeric_limits::max)()); return val; } + static const mp_float& eps() + { + init.do_nothing(); + static mp_float val(1.0, 1 - Digits10); + return val; + } // Basic operations. mp_float& operator= (const mp_float& v) @@ -2451,11 +2458,69 @@ inline void convert_to(long double* result, mp_float& val) *result = val.extract_long_double(); } +// +// Non member function support: +// +template +int eval_fpclassify(const mp_float& x) +{ + if(x.isinf()) + return FP_INFINITE; + if(x.isnan()) + return FP_NAN; + if(x.iszero()) + return FP_ZERO; + return FP_NORMAL; +} + typedef mp_number > mp_float_50; typedef mp_number > mp_float_100; }} +namespace std +{ + template + class numeric_limits > > + { + public: + static const bool is_specialized = true; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const bool is_bounded = true; + static const bool is_modulo = false; + static const bool is_iec559 = false; + static const int digits = boost::multiprecision::mp_float::mp_float_digits; + static const int digits10 = boost::multiprecision::mp_float::mp_float_digits10; + static const int max_digits10 = boost::multiprecision::mp_float::mp_float_max_digits10; + static const boost::int64_t min_exponent = boost::multiprecision::mp_float::mp_float_min_exp; // Type differs from int. + static const boost::int64_t min_exponent10 = boost::multiprecision::mp_float::mp_float_min_exp10; // Type differs from int. + static const boost::int64_t max_exponent = boost::multiprecision::mp_float::mp_float_max_exp; // Type differs from int. + static const boost::int64_t max_exponent10 = boost::multiprecision::mp_float::mp_float_max_exp10; // Type differs from int. + static const int radix = boost::multiprecision::mp_float::mp_radix; + static const std::float_round_style round_style = std::round_to_nearest; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = false; + static const std::float_denorm_style has_denorm = std::denorm_absent; + static const bool has_denorm_loss = false; + static const bool traps = false; + static const bool tinyness_before = false; + + static const boost::multiprecision::mp_number > (min) (void) throw() { return (boost::multiprecision::mp_float::min)(); } + static const boost::multiprecision::mp_number > (max) (void) throw() { return (boost::multiprecision::mp_float::max)(); } + static const boost::multiprecision::mp_number > lowest (void) throw() { return boost::multiprecision::mp_float::zero(); } + static const boost::multiprecision::mp_number > epsilon (void) throw() { return boost::multiprecision::mp_float::eps(); } + static const boost::multiprecision::mp_number > round_error (void) throw() { return 0.5L; } + static const boost::multiprecision::mp_number > infinity (void) throw() { return boost::multiprecision::mp_float::inf(); } + static const boost::multiprecision::mp_number > quiet_NaN (void) throw() { return boost::multiprecision::mp_float::nan(); } + static const boost::multiprecision::mp_number > signaling_NaN(void) throw() { return boost::multiprecision::mp_float::zero(); } + static const boost::multiprecision::mp_number > denorm_min (void) throw() { return boost::multiprecision::mp_float::zero(); } + }; +} + + #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 00078e8e..c77d791f 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -142,6 +142,14 @@ run test_numeric_limits.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_numeric_limits_mpfr_50 ; +run test_numeric_limits.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + [ check-target-builds ../config//has_mpfr : : no ] + : test_numeric_limits_mp_float ; + run mp_number_concept_check.cpp mpfr : # command line : # input files diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index e2075d3b..0dc9e7d0 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -5,14 +5,14 @@ #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ # define TEST_MPFR # define TEST_MPFR_50 -# define TEST_E_FLOAT +# define TEST_MP_FLOAT # define TEST_MPQ #ifdef _MSC_VER @@ -30,8 +30,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include @@ -159,8 +159,9 @@ int main() #ifdef TEST_MPQ test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif #ifdef TEST_MPFR test(); From 6372f8b6382d29a65a95001dc04ad2cad6efaf49 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 29 Oct 2011 11:57:54 +0000 Subject: [PATCH 045/256] Get mp_float passing all the tests, fix some bugs in acos and atan implementations. [SVN r75166] --- .../multiprecision/detail/default_ops.hpp | 12 +- .../multiprecision/detail/functions/trig.hpp | 7 +- include/boost/multiprecision/gmp.hpp | 28 ++- include/boost/multiprecision/mp_float.hpp | 203 ++++++++++++++++- include/boost/multiprecision/mp_number.hpp | 2 +- test/Jamfile.v2 | 85 +++++++ test/mp_number_concept_check.cpp | 18 +- test/test_acos.cpp | 13 +- test/test_arithmetic.cpp | 6 - test/test_asin.cpp | 13 +- test/test_atan.cpp | 25 +- test/test_cos.cpp | 215 +++++++++--------- test/test_cosh.cpp | 13 +- test/test_exp.cpp | 13 +- test/test_log.cpp | 13 +- test/test_pow.cpp | 13 +- test/test_sin.cpp | 23 +- test/test_sinh.cpp | 13 +- test/test_tanh.cpp | 13 +- 19 files changed, 514 insertions(+), 214 deletions(-) diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index dea68ff4..ed82327c 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -314,7 +314,12 @@ inline void convert_to(R* result, const B& backend) typedef typename calculate_next_larger_type::type next_type; next_type n; convert_to(&n, backend); - *result = static_cast(n); + if(std::numeric_limits::is_specialized && (n > (std::numeric_limits::max)())) + { + *result = (std::numeric_limits::max)(); + } + else + *result = static_cast(n); } template @@ -386,14 +391,15 @@ inline void eval_trunc(T& result, const T& a) template inline void eval_round(T& result, const T& a) { + typedef typename boost::multiprecision::detail::canonical::type fp_type; if(get_sign(a) < 0) { - subtract(result, a, 0.5f); + subtract(result, a, fp_type(0.5f)); eval_ceil(result, result); } else { - add(result, a, 0.5f); + add(result, a, fp_type(0.5f)); eval_floor(result, result); } } diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index 9a1b2ae7..7aca7e53 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -546,7 +546,10 @@ inline void eval_acos(T& result, const T& x) } else if(c == 0) { - result = ui_type(0); + if(get_sign(x) < 0) + result = get_constant_pi(); + else + result = ui_type(0); return; } @@ -694,7 +697,7 @@ void eval_atan2(T& result, const T& y, const T& x) case FP_ZERO: { eval_ldexp(result, get_constant_pi(), -1); - if(get_sign(x) < 0) + if(get_sign(y) < 0) result.negate(); return; } diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index af72d94b..16fa8e71 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -556,12 +556,21 @@ inline int get_sign(const gmp_float& val) template inline void convert_to(unsigned long* result, const gmp_float& val) { - *result = mpf_get_ui(val.data()); + if(0 == mpf_fits_ulong_p(val.data())) + *result = (std::numeric_limits::max)(); + else + *result = mpf_get_ui(val.data()); } template inline void convert_to(long* result, const gmp_float& val) { - *result = mpf_get_si(val.data()); + if(0 == mpf_fits_slong_p(val.data())) + { + *result = (std::numeric_limits::max)(); + *result *= mpf_sgn(val.data()); + } + else + *result = mpf_get_si(val.data()); } template inline void convert_to(double* result, const gmp_float& val) @@ -1122,11 +1131,22 @@ inline int get_sign(const gmp_int& val) } inline void convert_to(unsigned long* result, const gmp_int& val) { - *result = mpz_get_ui(val.data()); + if(0 == mpz_fits_ulong_p(val.data())) + { + *result = (std::numeric_limits::max)(); + } + else + *result = mpz_get_ui(val.data()); } inline void convert_to(long* result, const gmp_int& val) { - *result = mpz_get_si(val.data()); + if(0 == mpz_fits_slong_p(val.data())) + { + *result = (std::numeric_limits::max)(); + *result *= mpz_sgn(val.data()); + } + else + *result = mpz_get_si(val.data()); } inline void convert_to(double* result, const gmp_int& val) { diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp index 0e32e962..df932965 100644 --- a/include/boost/multiprecision/mp_float.hpp +++ b/include/boost/multiprecision/mp_float.hpp @@ -16,6 +16,11 @@ #include #include +// +// Headers required for Boost.Math integration: +// +#include + namespace boost{ namespace multiprecision{ @@ -88,6 +93,7 @@ private: mp_float::zero(); mp_float::one(); mp_float::two(); + mp_float::half(); mp_float::double_min(); mp_float::double_max(); mp_float::long_double_max(); @@ -228,6 +234,12 @@ public: static mp_float val(static_cast(2u)); return val; } + static const mp_float& half() + { + init.do_nothing(); + static mp_float val(0.5L); + return val; + } static const mp_float& double_min() { init.do_nothing(); @@ -403,6 +415,57 @@ public: } } static mp_float pow2(long long i); + long long order()const + { + const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); + // + // Binary search to find the order of the leading term: + // + boost::uint32_t prefix = 0; + + if(data[0] >= 100000UL) + { + if(data[0] >= 10000000UL) + { + if(data[0] >= 100000000UL) + { + if(data[0] >= 1000000000UL) + prefix = 9; + else + prefix = 8; + } + else + prefix = 7; + } + else + { + if(data[0] >= 1000000UL) + prefix = 6; + else + prefix = 5; + } + } + else + { + if(data[0] >= 1000UL) + { + if(data[0] >= 10000UL) + prefix = 4; + else + prefix = 3; + } + else + { + if(data[0] >= 100) + prefix = 2; + else if(data[0] >= 10) + prefix = 1; + } + } + + return (bo_order_is_zero ? static_cast(0) + : static_cast(exp + prefix)); + } private: static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast(0u)); } @@ -418,13 +481,6 @@ private: static boost::uint32_t div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); bool rd_string(const char* const s); - long long order()const - { - const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); - - return (bo_order_is_zero ? static_cast(0) - : static_cast(exp + static_cast(std::log10(static_cast(data[0])) + (std::numeric_limits::epsilon() * 0.9)))); - } }; template @@ -2462,7 +2518,7 @@ inline void convert_to(long double* result, mp_float& val) // Non member function support: // template -int eval_fpclassify(const mp_float& x) +inline int eval_fpclassify(const mp_float& x) { if(x.isinf()) return FP_INFINITE; @@ -2473,6 +2529,114 @@ int eval_fpclassify(const mp_float& x) return FP_NORMAL; } +template +inline void eval_abs(mp_float& result, const mp_float& x) +{ + result = x; + if(x.isneg()) + result.negate(); +} + +template +inline void eval_fabs(mp_float& result, const mp_float& x) +{ + result = x; + if(x.isneg()) + result.negate(); +} + +template +inline void eval_sqrt(mp_float& result, const mp_float& x) +{ + result = x; + result.calculate_sqrt(); +} + +template +inline void eval_floor(mp_float& result, const mp_float& x) +{ + result = x; + if(!x.isfinite() || x.isint()) + { + return; + } + + if(x.isneg()) + result -= mp_float::one(); + result = result.extract_integer_part(); +} + +template +inline void eval_ceil(mp_float& result, const mp_float& x) +{ + result = x; + if(!x.isfinite() || x.isint()) + { + return; + } + + if(!x.isneg()) + result += mp_float::one(); + result = result.extract_integer_part(); +} + +template +inline void eval_trunc(mp_float& result, const mp_float& x) +{ + if(!x.isfinite() || x.isint()) + { + result = x; + return; + } + result = x.extract_integer_part(); +} + +template +inline void eval_ldexp(mp_float& result, const mp_float& x, long long e) +{ + result = x; + result *= mp_float::pow2(e); +} + +template +inline void eval_frexp(mp_float& result, const mp_float& x, long long* e) +{ + result = x; + if(result.isneg()) + result.negate(); + + long long t = result.order(); + + if(std::abs(t) > (std::numeric_limits::max)() / 3) + throw std::runtime_error("Exponent is too large to be represented as a power of 2."); + t *= 3; + + result *= mp_float::pow2(-t); + + while(result.compare(mp_float::one()) >= 0) + { + result /= mp_float::two(); + ++t; + } + while(result.compare(mp_float::half()) < 0) + { + result *= mp_float::two(); + --t; + } + *e = t; + if(x.isneg()) + result.negate(); +} + +template +inline void eval_frexp(mp_float& result, const mp_float& x, int* e) +{ + long long t; + eval_frexp(result, x, &t); + if(t > (std::numeric_limits::max)()) + throw std::runtime_error("Exponent is outside the range of an int"); + *e = static_cast(t); +} typedef mp_number > mp_float_50; typedef mp_number > mp_float_100; @@ -2521,6 +2685,29 @@ namespace std }; } +namespace boost{ namespace math{ + +namespace policies{ + +template +struct precision< boost::multiprecision::mp_number >, Policy> +{ + typedef typename Policy::precision_type precision_type; + typedef digits2<((Digits10 + 1) * 1000L) / 301L> digits_2; + typedef typename mpl::if_c< + ((digits_2::value <= precision_type::value) + || (Policy::precision_type::value <= 0)), + // Default case, full precision for RealType: + digits_2, + // User customised precision: + precision_type + >::type type; +}; + +} // namespace policies + +}} // namespaces boost::math + #endif diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index bb95fd8c..b0e2f156 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -45,7 +45,7 @@ public: } template - mp_number(V v, typename enable_if, mpl::not_ > > >::type* dummy1 = 0) + mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* dummy1 = 0) : m_backend(v){} template diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index c77d791f..e2da4d0d 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -166,6 +166,14 @@ run mp_number_concept_check.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : big_number_concept_check_mpf50 ; +run mp_number_concept_check.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + [ check-target-builds ../config//has_gmp : : no ] + : big_number_concept_check_mp_float ; + run test_exp.cpp gmp : # command line : # input files @@ -262,6 +270,55 @@ run test_tanh.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_tanh_mpfr50 ; +run test_exp.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_exp_mp_float ; + +run test_log.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_log_mp_float ; + +run test_pow.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_pow_mp_float ; + +run test_sinh.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_sinh_mp_float ; + +run test_cosh.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_cosh_mp_float ; + +run test_tanh.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_tanh_mp_float ; + +run test_sin.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_sin_mp_float ; + run test_sin.cpp gmp : # command line : # input files @@ -278,6 +335,13 @@ run test_sin.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_sin_mpfr_50 ; +run test_cos.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_cos_mp_float ; + run test_cos.cpp gmp : # command line : # input files @@ -294,6 +358,13 @@ run test_cos.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_cos_mpfr_50 ; +run test_asin.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_asin_mp_float ; + run test_asin.cpp gmp : # command line : # input files @@ -310,6 +381,13 @@ run test_asin.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_asin_mpfr_50 ; +run test_acos.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_acos_mp_float ; + run test_acos.cpp gmp : # command line : # input files @@ -334,6 +412,13 @@ run test_atan.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_atan_mpf50 ; +run test_atan.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + : test_atan_mp_float ; + run test_atan.cpp mpfr : # command line : # input files diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 95ff4ffc..99d2c13f 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -5,7 +5,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // -// This tests two things: that e_float meets our +// This tests two things: that mp_float_50 meets our // conceptual requirements, and that we can instantiate // all our distributions and special functions on this type. // @@ -20,14 +20,14 @@ # pragma warning(disable:4503) // decorated name length exceeded, name was truncated #endif -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ # define TEST_MPFR # define TEST_MPFR_50 -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -44,8 +44,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include @@ -71,8 +71,8 @@ void foo() #ifdef TEST_MPFR instantiate(boost::multiprecision::mpfr_float()); #endif -#ifdef TEST_E_FLOAT - instantiate(boost::multiprecision::e_float()); +#ifdef TEST_MP_FLOAT + instantiate(boost::multiprecision::mp_float_50()); #endif } @@ -93,8 +93,8 @@ int main() #ifdef TEST_MPFR BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif -#ifdef TEST_E_FLOAT - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#ifdef TEST_MP_FLOAT + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif } diff --git a/test/test_acos.cpp b/test/test_acos.cpp index 16fca50b..f7e350c4 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -96,8 +96,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index dc71ed86..aa040478 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -272,7 +272,6 @@ void test_float_ops(const T&){} template void test_float_ops(const boost::mpl::int_&) { -#if defined(TEST_MPF) || defined(TEST_MPF_50) || defined(TEST_BACKEND) || defined(TEST_MPFR) BOOST_TEST(abs(Real(2)) == 2); BOOST_TEST(abs(Real(-2)) == 2); BOOST_TEST(fabs(Real(2)) == 2); @@ -318,11 +317,6 @@ void test_float_ops(const boost::mpl::int_(3.25)); r = pow(v, 25); BOOST_TEST(r == boost::math::pow<25>(Real(3.25))); - /* - r = pow(v, 56); - BOOST_TEST(r == boost::math::pow<56>(Real(3.25))); - */ -#endif } template diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 60bb3f0c..c8c1e810 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -93,8 +93,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_atan.cpp b/test/test_atan.cpp index e572e7af..0b07212f 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -195,13 +195,11 @@ void test() err = relative_error(T(atan2(T(1), T(0))), T(pi / 2)).template convert_to(); if(err > max_err) max_err = err; - if(! is_mpfr_type::value) - { - // MPFR seems to get the sign of this all wrong: - err = relative_error(T(atan2(T(-1), T(0))), T(pi / -2)).template convert_to(); - if(err > max_err) - max_err = err; - } + + err = relative_error(T(atan2(T(-1), T(0))), T(pi / -2)).template convert_to(); + if(err > max_err) + max_err = err; + T mv = (std::numeric_limits::max)(); err = relative_error(T(atan2(mv, T(1))), T(pi / 2)).template convert_to(); if(err > max_err) @@ -239,8 +237,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_cos.cpp b/test/test_cos.cpp index bb9aab89..2e5dcf48 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -45,107 +45,107 @@ void test() { static const boost::array data = {{ -T("-2.37609908807915949996042688873953402912174184373388399043229539427530802169622688886435380890546981798452174137747437590e-1"), -T("8.03406366226813589517543567844755380935198206635917017883860879215939165740799963435747185200486086864198723786516760875e-1"), -T("8.60219386510802105228997694366289682807721120146423711696179175800635220710279361583231346318224971127450760223168489952e-1"), -T("-1.36768951513839774357595871594675554406872039078811749027554673949684004409484639336417431285061889554892096426752261915e-1"), -T("-9.66210139195431691033548069227792927999642647449593184440815029076272297050360196975341458076547426373476590671462150981e-1"), -T("-6.12007278553856790723803948280976098970972124581361775428331444376106018942231526074915731012122426588769327127413045994e-1"), -T("4.91927698740873688392439262912409276430264703350691359723802294639643655296838880236042651349290074585311025856549893171e-1"), -T("9.93232596718899824059271235487971663771012607519717340071654721877802691370866768064059943491135925674950430467047724563e-1"), -T("2.77789911520199551017947550534057049374212876971194676010301098598339529915403722848373365985645657342475739669568931563e-1"), -T("-7.77955945956221239101360662190442739163791527953499629555756394261998892874934847131138921705713935365505245406994428077e-1"), -T("-8.80676278306736581575818642341143682410874043182925227659938804267878718513212454821032629378618345485453587099696563832e-1"), -T("9.54652155963865007116798560589970996367213754762169439269792747771200843006278637115722685610960738675814993576019945344e-2"), -T("9.54658201427917718824191302196929158303422390793460018465335986921801519149657723689322277773550748806000948225466432438e-1"), -T("6.44358700620889799575033272322899136331490664925359198096632560532437137894857803619177106562399406351419810452110265174e-1"), -T("-4.55304635273050571206400777159475409897339683148730716647371922365967582339285347105376503917296765204188604297021364549e-1"), -T("-9.97202532932553753622481171186283382950122646390227670693679248197349800205205290898290539070732778341271049474946533154e-1"), -T("-3.17489525058325500707686194437148362752290391406825231198381521862930317513649081353670386166519524315810546189268634469e-1"), -T("7.51160186640147504067744846462384089742696250681200524524912647858645140367792164416711871535116761744380912486921554617e-1"), -T("8.99610194168373157174515848193119670768490559799348397680196213249921436405001710937402190319584272526657508442591319630e-1"), -T("-5.39963892484342940823660554048696208293700871414984387094529796385334086703752106515008832585578915389731907422242902573e-2"), -T("-9.41455348900839346761557896365239742769987576963330061702397697388879776230596944312519157729410022380228287314835345969e-1"), -T("-6.75595816763857390859268297670835380459024839344154743310231115864242050771191159334664874097564054770066166961642073448e-1"), -T("4.17894201894880415042381733708896725748531223743344790054523182948440843948904650988733732381978194392219295696279423635e-1"), -T("9.99447981389824371458566861195586395552622718284098766856978062347139060489410032781030191080200904443096549587568037683e-1"), -T("3.56640095868759075150409032448421838265699043643228482503057299699740924345262819242042067863780263400092250418388628640e-1"), -T("-7.23065426868134142613141384486526262450487633432466529798821958977732347646832059032382447792655111641456570392189752211e-1"), -T("-9.16988391192434436877664999042786024703848714036221388727578305299843547352325574309860356272561772723624753484063972217e-1"), -T("1.24341855683226931265962750806821531283439413068694552738675989282017066737438591268502070364982899342633928417210588531e-2"), -T("9.26624413643579136646620112107410908114766812511471130116341925013001661546817531064974089666536893346764523464250445838e-1"), -T("7.05664607841658050248613256866289182754229289446384595719719495272020558391145537620968819401219414243210529013148958366e-1"), -T("-3.79761093422301890838671114556341706055562482358183402807224298533060188038450560241345615647754569347252101282386222173e-1"), -T("-9.99965058979463689113370264378210962384824970050865061898892508056811665771886385589295806419278045318841717598003331419e-1"), -T("-3.95173919871548266286836251448043149039940610894391718791244019288314418437411707835924620250473697245151743147215758686e-1"), -T("6.93720251624319621941983929806434090162802383400620564454074825718151625795576680427510026452063593762417421561201654156e-1"), -T("9.32780816819880202610269817418700102084277332259524791943833699964920012022753227823298655560837271746316929623378078695e-1"), -T("2.91495208658083070508005579692813621670878962971611104453227900103973434149303469066898102622556226584993895360896300290e-2"), -T("-9.10191043170480685360743788297835112117551819731152897291272407935139876953384666161532187572493791297095784055525159185e-1"), -T("-7.34513075127503122343910106816656237074878218180284276449954797048122379869002663646507706411949095015624141821039453971e-1"), -T("3.40971254411713599427147477626159847871020791931107106418841144080445813896332252160005593096670674809345703079384115052e-1"), -T("9.98752871506016936810666998588493462933191829230756181478046320353377054175122206889047094521687205093218701141334147081e-1"), -T("4.33024359542714849537532946954507232835434973891665238942502273464321666207117525270650546741831354943253652514490075246e-1"), -T("-6.63175408268187738636594884921931867786416057472876635147295424128144233911929585327601381618059327766986981109409782838e-1"), -T("-9.46960160806563725719808910991708075372282242401645009270517113290439792088443109178772446465191984149998211903724560065e-1"), -T("-7.06828182905581345108929510344440443421290640066613022421187316650733628538705972455891575947230299102119854983197703150e-2"), -T("8.92183656127948379886438402777950080111433733329436790239129260607557296960582455582584117031260710927499215646838011844e-1"), -T("7.62091330231640362984555508176991632755732840163230620595759320390970951235395195394649584713540498911356433919369698423e-1"), -T("-3.01591765120371930643555588643712101466544136366607065361801475091335195383846047491935017919396438040414024941341524187e-1"), -T("-9.95813515236177554177387795413035497724212540625760091518605741283184405719984044075159457509720410668598540884613985023e-1"), -T("-4.70125959152223022135690700550251564040118601846181392455764893020377582359429013073566263451488554529709131439092909247e-1"), -T("6.31483718775865440843182928017874708719203714677143270278178885379757350754752477512514449375355491054871712891789652146e-1"), -T("1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), -T("3.87481045630097871028201331640164477694000480353342897357083794605539506785023570062767753819472037935010414476627195076e-1"), -T("-6.99716878554812023132822640034166338740077082416915046841339368979161296335086955803240899441098534898926193252558848693e-1"), -T("-9.29735101124991407032113033015438177585645722877060262785796302722011806301680288369763295777635760805579255008366302180e-1"), -T("-2.07925797310208845709174899248298159909010721767168338004516304026594885686024530923209628704670627250569637267490913462e-2"), -T("9.13621640053945104047985280883096238900189007462190433514805702721127019097915088259906184736442916334750420359005079959e-1"), -T("7.28814716527795995795780587639833705107995825167970668466246348938821997240383021826681253777014938636567626203524137506e-1"), -T("-3.48817863192357573536083313907744269588018702862402502601699983054718835012048372083235768555953613790431700360695537918e-1"), -T("-9.99135337256258278958854200595331742602280601557283993231562055717063052179292021052372510863057206152466386086657442382e-1"), -T("-4.25474147219713305654097901385832164424798803616095278869643928816776198489330071073326518019520590535564717523756486665e-1"), -T("6.69409002349720857726983952566596052122726437391092096671257338244059819036586172017092390651026654050631669646310910927e-1"), -T("9.44240747589054266930136705015787520728797286842746645573763175559132491628984502333043316023599487896169049499868916865e-1"), -T("6.23417820549832676844933182722733277887833220127638406914080428946880981800946578131712749910941183940944526141109771339e-2"), -T("-8.95928229794837090592434136137683839101829890460754766346170956577979909285084363961363023377587044303560652568203578379e-1"), -T("-7.56652196635835430995109388017590459596111729342964992503572530290981857981790620732129221157071082788019187787999930361e-1"), -T("3.09551461133309219674309651201007026752336319933918953736299690287371505733386433918863300129026763968979930342098019300e-1"), -T("9.96542844308353945757715814452637400116215448012622700698887257177706625278927018059066920597035660000571997275705962011e-1"), -T("4.62731465522276407764000677957978862104808823938378826581864482071733508960062598574638347814740748458034065235894523010e-1"), -T("-6.37943500095315456672541800050589670140910744260281868746767523730582697622604545933849801882909439609368258115114388202e-1"), -T("-9.57113494461990955768932962010819183910065445494138937651443249061391692258872250121438832853873660881630205561168895590e-1"), -T("-1.03783175146302830356973378710923690121182237844646430783773333188328606275124873219756415071202025673009660963930966273e-1"), -T("8.76685468012988943166112725030293740012198666616661362437433807594683780986916439696374569274720383546275206733493672834e-1"), -T("7.83181178815072182812568575402104911406191663934571600092749188502783771503475038116599065276589122015600004250624262132e-1"), -T("-2.69749743842835294071354429049113807280228918034124159074991560056663623624511602063409428877143567459307323934051784210e-1"), -T("-9.92227004420417932443416371636723983768124774541445787394585828303853075015733744933294181104002649816119116502663362907e-1"), -T("-4.99188570507651271652464431008309802023236218596632956064119419694573621896525872847587264755853127438644874992889777436e-1"), -T("6.05374785886620830935500306718810628353011877048386199574451402773468315797082901705593423724389976967865835641164117478e-1"), -T("9.68331080574540181354402420018944004334504868848934676984951546671476956051983469715128604348963016773169794077158289730e-1"), -T("1.45045093347669933436797325432376656017480150281100519869038554695618054318368975927557872948037203212941966706926758604e-1"), -T("-8.55926631706799584065153976496431313099942493164544290051315786450857575707615522517293656706329757352795226750189755758e-1"), -T("-8.08355785820466703104647317116964786017731181599256098405978700298563758509572188640629418770593008092680980412866065299e-1"), -T("2.29481541445091823694157468006983283649885473964756916206813927875661041834620526229807744443043682778028709792615798955e-1"), -T("9.86195281084368344446227722442335005500018635181693920385626820970119467136148305491035657795704047666385553672680209923e-1"), -T("5.34782415974986828906369231191245075731384342252264783019973387059318216570499447505623911253042567598873910043381675873e-1"), -T("-5.71759181631212640256161075896307515511612057247572886814941945052483422285718810088660759708176904381865453799197101481e-1"), -T("-9.77874107069129472007009478090869879295520839405452365411822873037906082086100232576241983901051327761231156641104065497e-1"), -T("-1.86056181372276495846711248156316208757691570931906856005697361080864028851991674077024223201008430626166447144444086146e-1"), -T("8.33687619660983803179149188531271900120055171980951416163724579833511897001564116810390933587615557717585362295882429826e-1"), -T("8.32132482562487183916482822112362004641509381783438374175226355792137053285527706239574867923387554339582561002247202518e-1"), -T("-1.88816490768820368180947188938258919466912959009058295775702554895970560887437777994365295452696990115940651570073217522e-1"), -T("-9.78458105113103660973458641126689066610890753079836635611789969774219913050456840122278188955139015473252491612410972950e-1"), -T("-5.69451448580118869157805059117807250106203230622762838051154208713065707949727035884250775206017528612930773233017928006e-1"), -T("5.37154819650306918873973169624898539483418364490295996462663218848771864764982600193558748568095521886456306061269765631e-1"), -T("9.85726070946814004698231423834505649751779161578718404221294527194525251740198034173542003704080544827976936213857653517e-1"), -T("2.26745517700332138489400566746499809209783385009289423848083137846668382711005704387134606000570923556980021574851618566e-1"), -T("-8.10006890365888881023982873786181048364505748637138923322482323010218991062084191379116946709356002103893071903481540337e-1"), -T("-8.54470151393449484710948210543666267680196067632693416660536443330720708402601669617638569732848938319544250428600991723e-1"), -T("1.47824914922605209542648603104533928946885824995208478684499907657728115943168395067575842431291755277452367320596435067e-1"), -T("9.69028856602232134498324179654622883463820270279077886397861028881882684131282848087869087883519707948141915733221980948e-1"), -T("6.03135714281336943093251136556365407562473924416812270469171432809743173719168209727199952532489544254928975940518615351e-1"), -T("-5.01621542149055350065079347615664213658089623368745676779267390227688581807037821041573344917735076902116221444127518632e-1"), + T("-2.37609908807915949996042688873953402912174184373388399043229539427530802169622688886435380890546981798452174137747437590e-1"), + T("8.03406366226813589517543567844755380935198206635917017883860879215939165740799963435747185200486086864198723786516760875e-1"), + T("8.60219386510802105228997694366289682807721120146423711696179175800635220710279361583231346318224971127450760223168489952e-1"), + T("-1.36768951513839774357595871594675554406872039078811749027554673949684004409484639336417431285061889554892096426752261915e-1"), + T("-9.66210139195431691033548069227792927999642647449593184440815029076272297050360196975341458076547426373476590671462150981e-1"), + T("-6.12007278553856790723803948280976098970972124581361775428331444376106018942231526074915731012122426588769327127413045994e-1"), + T("4.91927698740873688392439262912409276430264703350691359723802294639643655296838880236042651349290074585311025856549893171e-1"), + T("9.93232596718899824059271235487971663771012607519717340071654721877802691370866768064059943491135925674950430467047724563e-1"), + T("2.77789911520199551017947550534057049374212876971194676010301098598339529915403722848373365985645657342475739669568931563e-1"), + T("-7.77955945956221239101360662190442739163791527953499629555756394261998892874934847131138921705713935365505245406994428077e-1"), + T("-8.80676278306736581575818642341143682410874043182925227659938804267878718513212454821032629378618345485453587099696563832e-1"), + T("9.54652155963865007116798560589970996367213754762169439269792747771200843006278637115722685610960738675814993576019945344e-2"), + T("9.54658201427917718824191302196929158303422390793460018465335986921801519149657723689322277773550748806000948225466432438e-1"), + T("6.44358700620889799575033272322899136331490664925359198096632560532437137894857803619177106562399406351419810452110265174e-1"), + T("-4.55304635273050571206400777159475409897339683148730716647371922365967582339285347105376503917296765204188604297021364549e-1"), + T("-9.97202532932553753622481171186283382950122646390227670693679248197349800205205290898290539070732778341271049474946533154e-1"), + T("-3.17489525058325500707686194437148362752290391406825231198381521862930317513649081353670386166519524315810546189268634469e-1"), + T("7.51160186640147504067744846462384089742696250681200524524912647858645140367792164416711871535116761744380912486921554617e-1"), + T("8.99610194168373157174515848193119670768490559799348397680196213249921436405001710937402190319584272526657508442591319630e-1"), + T("-5.39963892484342940823660554048696208293700871414984387094529796385334086703752106515008832585578915389731907422242902573e-2"), + T("-9.41455348900839346761557896365239742769987576963330061702397697388879776230596944312519157729410022380228287314835345969e-1"), + T("-6.75595816763857390859268297670835380459024839344154743310231115864242050771191159334664874097564054770066166961642073448e-1"), + T("4.17894201894880415042381733708896725748531223743344790054523182948440843948904650988733732381978194392219295696279423635e-1"), + T("9.99447981389824371458566861195586395552622718284098766856978062347139060489410032781030191080200904443096549587568037683e-1"), + T("3.56640095868759075150409032448421838265699043643228482503057299699740924345262819242042067863780263400092250418388628640e-1"), + T("-7.23065426868134142613141384486526262450487633432466529798821958977732347646832059032382447792655111641456570392189752211e-1"), + T("-9.16988391192434436877664999042786024703848714036221388727578305299843547352325574309860356272561772723624753484063972217e-1"), + T("1.24341855683226931265962750806821531283439413068694552738675989282017066737438591268502070364982899342633928417210588531e-2"), + T("9.26624413643579136646620112107410908114766812511471130116341925013001661546817531064974089666536893346764523464250445838e-1"), + T("7.05664607841658050248613256866289182754229289446384595719719495272020558391145537620968819401219414243210529013148958366e-1"), + T("-3.79761093422301890838671114556341706055562482358183402807224298533060188038450560241345615647754569347252101282386222173e-1"), + T("-9.99965058979463689113370264378210962384824970050865061898892508056811665771886385589295806419278045318841717598003331419e-1"), + T("-3.95173919871548266286836251448043149039940610894391718791244019288314418437411707835924620250473697245151743147215758686e-1"), + T("6.93720251624319621941983929806434090162802383400620564454074825718151625795576680427510026452063593762417421561201654156e-1"), + T("9.32780816819880202610269817418700102084277332259524791943833699964920012022753227823298655560837271746316929623378078695e-1"), + T("2.91495208658083070508005579692813621670878962971611104453227900103973434149303469066898102622556226584993895360896300290e-2"), + T("-9.10191043170480685360743788297835112117551819731152897291272407935139876953384666161532187572493791297095784055525159185e-1"), + T("-7.34513075127503122343910106816656237074878218180284276449954797048122379869002663646507706411949095015624141821039453971e-1"), + T("3.40971254411713599427147477626159847871020791931107106418841144080445813896332252160005593096670674809345703079384115052e-1"), + T("9.98752871506016936810666998588493462933191829230756181478046320353377054175122206889047094521687205093218701141334147081e-1"), + T("4.33024359542714849537532946954507232835434973891665238942502273464321666207117525270650546741831354943253652514490075246e-1"), + T("-6.63175408268187738636594884921931867786416057472876635147295424128144233911929585327601381618059327766986981109409782838e-1"), + T("-9.46960160806563725719808910991708075372282242401645009270517113290439792088443109178772446465191984149998211903724560065e-1"), + T("-7.06828182905581345108929510344440443421290640066613022421187316650733628538705972455891575947230299102119854983197703150e-2"), + T("8.92183656127948379886438402777950080111433733329436790239129260607557296960582455582584117031260710927499215646838011844e-1"), + T("7.62091330231640362984555508176991632755732840163230620595759320390970951235395195394649584713540498911356433919369698423e-1"), + T("-3.01591765120371930643555588643712101466544136366607065361801475091335195383846047491935017919396438040414024941341524187e-1"), + T("-9.95813515236177554177387795413035497724212540625760091518605741283184405719984044075159457509720410668598540884613985023e-1"), + T("-4.70125959152223022135690700550251564040118601846181392455764893020377582359429013073566263451488554529709131439092909247e-1"), + T("6.31483718775865440843182928017874708719203714677143270278178885379757350754752477512514449375355491054871712891789652146e-1"), + T("1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + T("3.87481045630097871028201331640164477694000480353342897357083794605539506785023570062767753819472037935010414476627195076e-1"), + T("-6.99716878554812023132822640034166338740077082416915046841339368979161296335086955803240899441098534898926193252558848693e-1"), + T("-9.29735101124991407032113033015438177585645722877060262785796302722011806301680288369763295777635760805579255008366302180e-1"), + T("-2.07925797310208845709174899248298159909010721767168338004516304026594885686024530923209628704670627250569637267490913462e-2"), + T("9.13621640053945104047985280883096238900189007462190433514805702721127019097915088259906184736442916334750420359005079959e-1"), + T("7.28814716527795995795780587639833705107995825167970668466246348938821997240383021826681253777014938636567626203524137506e-1"), + T("-3.48817863192357573536083313907744269588018702862402502601699983054718835012048372083235768555953613790431700360695537918e-1"), + T("-9.99135337256258278958854200595331742602280601557283993231562055717063052179292021052372510863057206152466386086657442382e-1"), + T("-4.25474147219713305654097901385832164424798803616095278869643928816776198489330071073326518019520590535564717523756486665e-1"), + T("6.69409002349720857726983952566596052122726437391092096671257338244059819036586172017092390651026654050631669646310910927e-1"), + T("9.44240747589054266930136705015787520728797286842746645573763175559132491628984502333043316023599487896169049499868916865e-1"), + T("6.23417820549832676844933182722733277887833220127638406914080428946880981800946578131712749910941183940944526141109771339e-2"), + T("-8.95928229794837090592434136137683839101829890460754766346170956577979909285084363961363023377587044303560652568203578379e-1"), + T("-7.56652196635835430995109388017590459596111729342964992503572530290981857981790620732129221157071082788019187787999930361e-1"), + T("3.09551461133309219674309651201007026752336319933918953736299690287371505733386433918863300129026763968979930342098019300e-1"), + T("9.96542844308353945757715814452637400116215448012622700698887257177706625278927018059066920597035660000571997275705962011e-1"), + T("4.62731465522276407764000677957978862104808823938378826581864482071733508960062598574638347814740748458034065235894523010e-1"), + T("-6.37943500095315456672541800050589670140910744260281868746767523730582697622604545933849801882909439609368258115114388202e-1"), + T("-9.57113494461990955768932962010819183910065445494138937651443249061391692258872250121438832853873660881630205561168895590e-1"), + T("-1.03783175146302830356973378710923690121182237844646430783773333188328606275124873219756415071202025673009660963930966273e-1"), + T("8.76685468012988943166112725030293740012198666616661362437433807594683780986916439696374569274720383546275206733493672834e-1"), + T("7.83181178815072182812568575402104911406191663934571600092749188502783771503475038116599065276589122015600004250624262132e-1"), + T("-2.69749743842835294071354429049113807280228918034124159074991560056663623624511602063409428877143567459307323934051784210e-1"), + T("-9.92227004420417932443416371636723983768124774541445787394585828303853075015733744933294181104002649816119116502663362907e-1"), + T("-4.99188570507651271652464431008309802023236218596632956064119419694573621896525872847587264755853127438644874992889777436e-1"), + T("6.05374785886620830935500306718810628353011877048386199574451402773468315797082901705593423724389976967865835641164117478e-1"), + T("9.68331080574540181354402420018944004334504868848934676984951546671476956051983469715128604348963016773169794077158289730e-1"), + T("1.45045093347669933436797325432376656017480150281100519869038554695618054318368975927557872948037203212941966706926758604e-1"), + T("-8.55926631706799584065153976496431313099942493164544290051315786450857575707615522517293656706329757352795226750189755758e-1"), + T("-8.08355785820466703104647317116964786017731181599256098405978700298563758509572188640629418770593008092680980412866065299e-1"), + T("2.29481541445091823694157468006983283649885473964756916206813927875661041834620526229807744443043682778028709792615798955e-1"), + T("9.86195281084368344446227722442335005500018635181693920385626820970119467136148305491035657795704047666385553672680209923e-1"), + T("5.34782415974986828906369231191245075731384342252264783019973387059318216570499447505623911253042567598873910043381675873e-1"), + T("-5.71759181631212640256161075896307515511612057247572886814941945052483422285718810088660759708176904381865453799197101481e-1"), + T("-9.77874107069129472007009478090869879295520839405452365411822873037906082086100232576241983901051327761231156641104065497e-1"), + T("-1.86056181372276495846711248156316208757691570931906856005697361080864028851991674077024223201008430626166447144444086146e-1"), + T("8.33687619660983803179149188531271900120055171980951416163724579833511897001564116810390933587615557717585362295882429826e-1"), + T("8.32132482562487183916482822112362004641509381783438374175226355792137053285527706239574867923387554339582561002247202518e-1"), + T("-1.88816490768820368180947188938258919466912959009058295775702554895970560887437777994365295452696990115940651570073217522e-1"), + T("-9.78458105113103660973458641126689066610890753079836635611789969774219913050456840122278188955139015473252491612410972950e-1"), + T("-5.69451448580118869157805059117807250106203230622762838051154208713065707949727035884250775206017528612930773233017928006e-1"), + T("5.37154819650306918873973169624898539483418364490295996462663218848771864764982600193558748568095521886456306061269765631e-1"), + T("9.85726070946814004698231423834505649751779161578718404221294527194525251740198034173542003704080544827976936213857653517e-1"), + T("2.26745517700332138489400566746499809209783385009289423848083137846668382711005704387134606000570923556980021574851618566e-1"), + T("-8.10006890365888881023982873786181048364505748637138923322482323010218991062084191379116946709356002103893071903481540337e-1"), + T("-8.54470151393449484710948210543666267680196067632693416660536443330720708402601669617638569732848938319544250428600991723e-1"), + T("1.47824914922605209542648603104533928946885824995208478684499907657728115943168395067575842431291755277452367320596435067e-1"), + T("9.69028856602232134498324179654622883463820270279077886397861028881882684131282848087869087883519707948141915733221980948e-1"), + T("6.03135714281336943093251136556365407562473924416812270469171432809743173719168209727199952532489544254928975940518615351e-1"), + T("-5.01621542149055350065079347615664213658089623368745676779267390227688581807037821041573344917735076902116221444127518632e-1"), }}; T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; @@ -282,8 +282,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index c9be8958..76c4f976 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -128,8 +128,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index ff2bf4d9..8f397d9e 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -173,8 +173,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_log.cpp b/test/test_log.cpp index 166bfcae..85c077a9 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -186,8 +186,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_pow.cpp b/test/test_pow.cpp index b681d703..38181241 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT # define TEST_MPFR_50 #ifdef _MSC_VER @@ -37,8 +37,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -576,8 +576,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 3843b37d..03be2a9f 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -246,7 +246,7 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 // Test with some exact binary values as input - this tests our code // rather than the test data: // - static const boost::array, 7> exact_data = + static const boost::array, 9> exact_data = {{ {{ 0.5, "0.479425538604203000273287935215571388081803367940600675188616613125535000287814832209631274684348269086132091084505717418" }}, {{ 0.25, "0.247403959254522929596848704849389195893390980386965810676544830494398136043486821690984848527973792338327197752176516138" }}, @@ -254,7 +254,9 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 {{std::ldexp(1.0, -20), "9.53674316406105439710335272649306549801506698739838753888815787489707114648106832493113326022411646219016312547902694921e-7" }}, {{ 2, "0.909297426825681695396019865911744842702254971447890268378973011530967301540783544620126688924959380309967896742399486261" }}, {{ 5, "-0.958924274663138468893154406155993973352461543964601778131672454235102558086559603076995955429532866596530638461663378937" }}, - {{ 10, "-0.544021110889369813404747661851377281683643012916223891574184012616757209640493425707075673894983216158293824238262832286" }} + {{ 10, "-0.544021110889369813404747661851377281683643012916223891574184012616757209640493425707075673894983216158293824238262832286" }}, + {{ 0, 0 }}, + {{ "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064", 1 }} }}; max_err = 0; for(unsigned k = 0; k < exact_data.size(); k++) @@ -267,11 +269,6 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 20); - - T half_pi = "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"; - - BOOST_TEST(sin(T(0)) == 0); - BOOST_TEST(sin(half_pi) == 1); } @@ -288,8 +285,8 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); #endif return boost::report_errors(); } diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 0d33347c..bddad689 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -128,8 +128,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 59d67c9f..d226fc95 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_E_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_E_FLOAT +# define TEST_MP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_E_FLOAT -#include +#ifdef TEST_MP_FLOAT +#include #endif template @@ -128,8 +128,9 @@ int main() test(); test(); #endif -#ifdef TEST_E_FLOAT - test(); +#ifdef TEST_MP_FLOAT + test(); + test(); #endif return boost::report_errors(); } From 79d630a0680177a0c71f743fc47ec1cfe03d14e5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 29 Oct 2011 17:41:31 +0000 Subject: [PATCH 046/256] Fix benchmark to build with new code. [SVN r75169] --- test/linpack-benchmark.cpp | 54 ++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/test/linpack-benchmark.cpp b/test/linpack-benchmark.cpp index 8798ca6d..f4829101 100644 --- a/test/linpack-benchmark.cpp +++ b/test/linpack-benchmark.cpp @@ -19,27 +19,21 @@ http://www.netlib.org/f2c/libf2c.zip #include #include -#ifdef TEST_MPF_100 -#include -typedef boost::multiprecision::mpf_float_100 real_type; -#elif defined(TEST_MPFR_100) -#include -typedef boost::multiprecision::mpfr_float_100 real_type; -#elif defined(TEST_GMPXX) +#if defined(TEST_GMPXX) #include typedef mpf_class real_type; #elif defined(TEST_MPFRXX) #include typedef mpfr_class real_type; -#elif defined(TEST_E_FLOAT) -#include -#include -#include -typedef ::efx::e_float real_type; -using ef::abs; -#elif defined(TEST_E_FLOAT_BN) -#include -typedef boost::multiprecision::e_float real_type; +#elif defined(TEST_MP_FLOAT) +#include +typedef boost::multiprecision::mp_float_50 real_type; +#elif defined(TEST_MPFR_50) +#include +typedef boost::multiprecision::mpfr_float_50 real_type; +#elif defined(TEST_MPF_50) +#include +typedef boost::multiprecision::mpf_float_50 real_type; #else typedef double real_type; #endif @@ -98,20 +92,18 @@ int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type extern "C" int MAIN__() { -#ifdef TEST_MPF_100 - std::cout << "Testing mp_number >" << std::endl; -#elif defined(TEST_MPFR_100) - std::cout << "Testing mp_number >" << std::endl; +#ifdef TEST_MPF_50 + std::cout << "Testing mp_number >" << std::endl; +#elif defined(TEST_MPFR_50) + std::cout << "Testing mp_number >" << std::endl; #elif defined(TEST_GMPXX) - std::cout << "Testing mpf_class at 100 decimal degits" << std::endl; - mpf_set_default_prec(((100 + 1) * 1000L) / 301L); + std::cout << "Testing mpf_class at 50 decimal degits" << std::endl; + mpf_set_default_prec(((50 + 1) * 1000L) / 301L); #elif defined(TEST_MPFRXX) - std::cout << "Testing mpfr_class at 100 decimal degits" << std::endl; - mpfr_set_default_prec(((100 + 1) * 1000L) / 301L); -#elif defined(TEST_E_FLOAT) - std::cout << "Testing boost::ef::e_float" << std::endl; -#elif defined(TEST_E_FLOAT_BN) - std::cout << "Testing boost::multiprecision::e_float" << std::endl; + std::cout << "Testing mpfr_class at 50 decimal degits" << std::endl; + mpfr_set_default_prec(((50 + 1) * 1000L) / 301L); +#elif defined(TEST_MP_FLOAT) + std::cout << "Testing mp_number >" << std::endl; #else std::cout << "Testing double" << std::endl; #endif @@ -919,8 +911,8 @@ real_type epslon_(real_type *x) { #if defined(TEST_MPF_100) || defined(TEST_MPFR_100) || defined(TEST_GMPXX) || defined(TEST_MPFRXX) return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); -#elif defined(TEST_E_FLOAT_BN) - return std::pow(10.0, 1-std::numeric_limits::digits10); +#elif defined(TEST_MP_FLOAT_BN) + return std::pow(10.0, 1-std::numeric_limits::digits10); #else return CAST_TO_RT(std::numeric_limits::epsilon()); #endif @@ -1242,7 +1234,7 @@ mp_number >: times for array with leading dimension of1001 279.96 0.84 280.8 2.3813 0.83988 5014.3 -boost::multiprecision::ef::e_float: +boost::multiprecision::ef::mp_float_50: ~~~~~~~~~~~~~~~~~~~~~~~~~ norm. resid resid machep x(1) x(n) From 4061f5275b51c96186d957f62adbbe3fd95ff635 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 30 Oct 2011 18:39:38 +0000 Subject: [PATCH 047/256] Fix Clang failures. [SVN r75180] --- include/boost/multiprecision/mp_number.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index b0e2f156..3ca21f55 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -129,7 +129,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_subtract(temp, typename self_type::tag_type()); + do_subtract(temp, detail::terminal()); } else { @@ -194,7 +194,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_modulus(temp, typename self_type::tag_type()); + do_modulus(temp, detail::terminal()); } else { @@ -281,7 +281,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_divide(detail::mp_exp(temp), typename self_type::tag_type()); + do_divide(detail::mp_exp(temp), detail::terminal()); } else { @@ -313,7 +313,7 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_and(temp, typename self_type::tag_type()); + do_bitwise_and(temp, detail::terminal()); } else { @@ -345,7 +345,7 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_or(temp, typename self_type::tag_type()); + do_bitwise_or(temp, detail::terminal()); } else { @@ -375,7 +375,7 @@ public: if(contains_self(e)) { self_type temp(e); - do_bitwise_xor(temp, typename self_type::tag_type()); + do_bitwise_xor(temp, detail::terminal()); } else { From 401af0322a172cc40ef3f1fc1e30a4ed127a22df Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 31 Oct 2011 16:00:21 +0000 Subject: [PATCH 048/256] File rename [SVN r75194] --- doc/Jamfile.v2 | 3 ++- doc/{big_number.qbk => multiprecision.qbk} | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename doc/{big_number.qbk => multiprecision.qbk} (100%) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 2f00f026..1a557811 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -7,7 +7,7 @@ using quickbook ; path-constant images_location : html ; -xml big_number : big_number.qbk ; +xml big_number : multiprecision.qbk ; boostbook standalone : big_number @@ -65,3 +65,4 @@ boostbook standalone ; install pdf-install : standalone : . PDF ; + diff --git a/doc/big_number.qbk b/doc/multiprecision.qbk similarity index 100% rename from doc/big_number.qbk rename to doc/multiprecision.qbk From 9092a7b1505381abc6ec32696194fae6103edd24 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 31 Oct 2011 16:01:10 +0000 Subject: [PATCH 049/256] Remove old docs. [SVN r75195] --- doc/html/boost_bignumbers/intro.html | 44 -- doc/html/boost_bignumbers/ref.html | 40 -- .../boost_bignumbers/ref/backendconc.html | 38 -- doc/html/boost_bignumbers/ref/bignum.html | 151 ----- doc/html/boost_bignumbers/tut.html | 44 -- doc/html/boost_bignumbers/tut/ints.html | 146 ----- doc/html/boost_bignumbers/tut/reals.html | 158 ----- doc/html/boostbook.css | 588 ------------------ doc/html/images/blank.png | Bin 374 -> 0 bytes doc/html/images/caution.png | Bin 1250 -> 0 bytes doc/html/images/caution.svg | 68 -- doc/html/images/draft.png | Bin 17454 -> 0 bytes doc/html/images/home.png | Bin 358 -> 0 bytes doc/html/images/home.svg | 26 - doc/html/images/important.png | Bin 722 -> 0 bytes doc/html/images/important.svg | 25 - doc/html/images/next.png | Bin 336 -> 0 bytes doc/html/images/next.svg | 19 - doc/html/images/next_disabled.png | Bin 1110 -> 0 bytes doc/html/images/note.png | Bin 490 -> 0 bytes doc/html/images/note.svg | 33 - doc/html/images/prev.png | Bin 334 -> 0 bytes doc/html/images/prev.svg | 19 - doc/html/images/prev_disabled.png | Bin 1109 -> 0 bytes doc/html/images/tip.png | Bin 449 -> 0 bytes doc/html/images/tip.svg | 84 --- doc/html/images/toc-blank.png | Bin 318 -> 0 bytes doc/html/images/toc-minus.png | Bin 259 -> 0 bytes doc/html/images/toc-plus.png | Bin 264 -> 0 bytes doc/html/images/up.png | Bin 370 -> 0 bytes doc/html/images/up.svg | 19 - doc/html/images/up_disabled.png | Bin 1115 -> 0 bytes doc/html/images/warning.png | Bin 1241 -> 0 bytes doc/html/images/warning.svg | 23 - doc/html/index.html | 53 -- 35 files changed, 1578 deletions(-) delete mode 100644 doc/html/boost_bignumbers/intro.html delete mode 100644 doc/html/boost_bignumbers/ref.html delete mode 100644 doc/html/boost_bignumbers/ref/backendconc.html delete mode 100644 doc/html/boost_bignumbers/ref/bignum.html delete mode 100644 doc/html/boost_bignumbers/tut.html delete mode 100644 doc/html/boost_bignumbers/tut/ints.html delete mode 100644 doc/html/boost_bignumbers/tut/reals.html delete mode 100644 doc/html/boostbook.css delete mode 100644 doc/html/images/blank.png delete mode 100644 doc/html/images/caution.png delete mode 100644 doc/html/images/caution.svg delete mode 100644 doc/html/images/draft.png delete mode 100644 doc/html/images/home.png delete mode 100644 doc/html/images/home.svg delete mode 100644 doc/html/images/important.png delete mode 100644 doc/html/images/important.svg delete mode 100644 doc/html/images/next.png delete mode 100644 doc/html/images/next.svg delete mode 100644 doc/html/images/next_disabled.png delete mode 100644 doc/html/images/note.png delete mode 100644 doc/html/images/note.svg delete mode 100644 doc/html/images/prev.png delete mode 100644 doc/html/images/prev.svg delete mode 100644 doc/html/images/prev_disabled.png delete mode 100644 doc/html/images/tip.png delete mode 100644 doc/html/images/tip.svg delete mode 100644 doc/html/images/toc-blank.png delete mode 100644 doc/html/images/toc-minus.png delete mode 100644 doc/html/images/toc-plus.png delete mode 100644 doc/html/images/up.png delete mode 100644 doc/html/images/up.svg delete mode 100644 doc/html/images/up_disabled.png delete mode 100644 doc/html/images/warning.png delete mode 100644 doc/html/images/warning.svg delete mode 100644 doc/html/index.html diff --git a/doc/html/boost_bignumbers/intro.html b/doc/html/boost_bignumbers/intro.html deleted file mode 100644 index ee77f4b1..00000000 --- a/doc/html/boost_bignumbers/intro.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Introduction - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -

- The Big Number library comes in two distinct parts: an expression template - enabled front end big_number - that handles all the operator overloading, expression evaluation optimization, - and code reduction, and a selection of backends that implement the actual arithmetic - operations, and need conform only to the reduced interface requirements of - the front end. -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost_bignumbers/ref.html b/doc/html/boost_bignumbers/ref.html deleted file mode 100644 index c6a81e2f..00000000 --- a/doc/html/boost_bignumbers/ref.html +++ /dev/null @@ -1,40 +0,0 @@ - - - -Reference - - - - - - - - -
-
-
-PrevUpHomeNext -
- - - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost_bignumbers/ref/backendconc.html b/doc/html/boost_bignumbers/ref/backendconc.html deleted file mode 100644 index 44dd13af..00000000 --- a/doc/html/boost_bignumbers/ref/backendconc.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -Backend Requirements - - - - - - - -
-
-
-PrevUpHome -
-
- -

- TODO, big boring job!! -

-
- - - -
-
-
-PrevUpHome -
- - diff --git a/doc/html/boost_bignumbers/ref/bignum.html b/doc/html/boost_bignumbers/ref/bignum.html deleted file mode 100644 index bcf3ef57..00000000 --- a/doc/html/boost_bignumbers/ref/bignum.html +++ /dev/null @@ -1,151 +0,0 @@ - - - -big_number - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -
- - Synopsis -
-
namespace boost{ namespace math{
-
-template <class Backend>
-class big_number
-{
-   big_number();
-   big_number(see-below);
-   big_number& operator=(see-below);
-   /* Other number-type operators here */
-   // string conversion:
-   std::string str()const;
-   // precision control:
-   static unsigned default_precision();
-   static void default_precision(unsigned digits10);
-   unsigned precision()const;
-   void precision(unsigned digits10);
-   // Comparison:
-   int compare(const big_number<Backend>& o)const;
-   template <class V>
-   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
-};
-
-}} // namespaces
-
-
- - Description -
-
big_number();
-big_number(see-below);
-big_number& operator=(see-below);
-
-

- Type big_number is default - constructible, and copy both constructible and assignable from: -

-
    -
  • - Itself. -
  • -
  • - An expression template which is the result of one of the arithmetic operators. -
  • -
  • - Any builtin arithmetic type. -
  • -
  • - A std::string or any type which is convertible - to const char*. -
  • -
-
/* Other number-type operators here */
-
-

- The following arithmetic operations are support for real-numbered types: -

-
    -
  • - Binary +, -, *, /, +, -, *, /, - ==, !, <, >=, <, >. -
  • -
  • - Unary +, -. -
  • -
-

- For integer types the following operators are also supported: -

-

- Binary %, %=. -

-

- (More to follow!!) -

-

- Note that the result of the binary +, -, *, / and % operations is an expression - template of "unmentionable type". -

-
std::string str()const;
-
-

- Returns the number formatted as a string (TODO: enable custom precision). -

-
static unsigned default_precision();
-static void default_precision(unsigned digits10);
-unsigned precision()const;
-void precision(unsigned digits10);
-
-

- These functions are only available if the Backend template parameter supports - runtime changes to precision. They get and set the default precision and - the precision of *this respectively. -

-
int compare(const big_number<Backend>& o)const;
-template <class V>
-typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
-
-

- Returns: -

-
    -
  • - A value less that 0 for *this < other -
  • -
  • - A value greater that 0 for *this > other -
  • -
  • - Zero for *this == other -
  • -
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost_bignumbers/tut.html b/doc/html/boost_bignumbers/tut.html deleted file mode 100644 index 92e58b08..00000000 --- a/doc/html/boost_bignumbers/tut.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Tutorial - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- - -

- In order to use this library you need to make two choices: what kind of number - do I want, and which backend do I want to perform the actual arithmetic? -

-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost_bignumbers/tut/ints.html b/doc/html/boost_bignumbers/tut/ints.html deleted file mode 100644 index b2dbce57..00000000 --- a/doc/html/boost_bignumbers/tut/ints.html +++ /dev/null @@ -1,146 +0,0 @@ - - - -Integer Types - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -

- The following backends provide integer arithmetic: -

-
-------- - - - - - - - - - - - - - - - - -
-

- Backend Type -

-
-

- Header -

-
-

- Radix -

-
-

- Dependencies -

-
-

- Pros -

-
-

- Cons -

-
-

- gmp_int -

-
-

- boost/math/big_number/gmp.hpp -

-
-

- 2 -

-
-

- GMP -

-
-

- Very fast and efficient backend. -

-
-

- Dependency on GNU licenced GMP library. -

-
-
- - gmp_int -
-
namespace boost{ namespace math{
-
-class gmp_int;
-
-typedef big_number<gmp_int >         mpz_int;
-
-}} // namespaces
-
-

- The gmp_int backend is used - via the typedef boost::math::mpz_int. It acts as a thin wrapper around - the GMP mpz_t to provide - an integer type that is a drop-in replacement for the native C++ integer - types, but with unlimited precision. -

-
- - Example: -
-
#include <boost/math/big_number/gmp.hpp>
-
-boost::math::mpz_int v = 1;
-
-// Do some arithmetic:
-for(unsigned i = 1; i <= 1000; ++i)
-   v *= i;
-
-std::cout << i << std::endl; // prints 1000!
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost_bignumbers/tut/reals.html b/doc/html/boost_bignumbers/tut/reals.html deleted file mode 100644 index cd08e445..00000000 --- a/doc/html/boost_bignumbers/tut/reals.html +++ /dev/null @@ -1,158 +0,0 @@ - - - -Real Numbers - - - - - - - - -
-
-
-PrevUpHomeNext -
-
- -

- The following backends provide real number arithmetic: -

-
-------- - - - - - - - - - - - - - - - - -
-

- Backend Type -

-
-

- Header -

-
-

- Radix -

-
-

- Dependencies -

-
-

- Pros -

-
-

- Cons -

-
-

- gmp_real<N> -

-
-

- boost/math/big_number/gmp.hpp -

-
-

- 2 -

-
-

- GMP -

-
-

- Very fast and efficient backend. -

-
-

- Dependency on GNU licenced GMP library. -

-
-
- - gmp_real -
-
namespace boost{ namespace math{
-
-template <unsigned Digits10>
-class gmp_real;
-
-typedef big_number<gmp_real<50> >    mpf_real_50;
-typedef big_number<gmp_real<100> >   mpf_real_100;
-typedef big_number<gmp_real<500> >   mpf_real_500;
-typedef big_number<gmp_real<1000> >  mpf_real_1000;
-typedef big_number<gmp_real<0> >     mpf_real;
-
-}} // namespaces
-
-

- The gmp_real backend is used - in conjunction with big_number: - It acts as a thin wrapper around the GMP mpf_t - to provide an real-number type that is a drop-in replacement for the native - C++ floating-point types, but with much greater precision. -

-

- Type gmp_real can be used - at fixed precision by specifying a non-zero Digits10 - template parameter, or at variable precision by setting the template argument - to zero. The typedefs mpf_real_50, mpf_real_100, mpf_real_500, mpf_real_1000 - provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision - respectively. The typedef mpf_real provides a variable precision type whose - precision can be controlled via the big_number's - member functions. -

-
- - example: -
-
#include <boost/math/big_number/gmp.hpp>
-
-boost::math::gmp_real a = 2;
-boost::math::gmp_real::default_precision(1000);
-std::cout << boost::math::gmp_real::default_precision() << std::endl;
-std::cout << sqrt(a) << std::endl; // print root-2
-
-
- - - -
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boostbook.css b/doc/html/boostbook.css deleted file mode 100644 index 252fa9ec..00000000 --- a/doc/html/boostbook.css +++ /dev/null @@ -1,588 +0,0 @@ -/*============================================================================= - Copyright (c) 2004 Joel de Guzman - http://spirit.sourceforge.net/ - - Distributed under the Boost Software License, Version 1.0. (See accompany- - ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -=============================================================================*/ - -/*============================================================================= - Body defaults -=============================================================================*/ - - body - { - margin: 1em; - font-family: sans-serif; - } - -/*============================================================================= - Paragraphs -=============================================================================*/ - - p - { - text-align: left; - font-size: 10pt; - line-height: 1.15; - } - -/*============================================================================= - Program listings -=============================================================================*/ - - /* Code on paragraphs */ - p tt.computeroutput - { - font-size: 9pt; - } - - pre.synopsis - { - font-size: 90%; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - .programlisting, - .screen - { - font-size: 9pt; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - /* Program listings in tables don't get borders */ - td .programlisting, - td .screen - { - margin: 0pc 0pc 0pc 0pc; - padding: 0pc 0pc 0pc 0pc; - } - -/*============================================================================= - Headings -=============================================================================*/ - - h1, h2, h3, h4, h5, h6 - { - text-align: left; - margin: 1em 0em 0.5em 0em; - font-weight: bold; - } - - h1 { font: 140% } - h2 { font: bold 140% } - h3 { font: bold 130% } - h4 { font: bold 120% } - h5 { font: italic 110% } - h6 { font: italic 100% } - - /* Top page titles */ - title, - h1.title, - h2.title - h3.title, - h4.title, - h5.title, - h6.title, - .refentrytitle - { - font-weight: bold; - margin-bottom: 1pc; - } - - h1.title { font-size: 140% } - h2.title { font-size: 140% } - h3.title { font-size: 130% } - h4.title { font-size: 120% } - h5.title { font-size: 110% } - h6.title { font-size: 100% } - - .section h1 - { - margin: 0em 0em 0.5em 0em; - font-size: 140%; - } - - .section h2 { font-size: 140% } - .section h3 { font-size: 130% } - .section h4 { font-size: 120% } - .section h5 { font-size: 110% } - .section h6 { font-size: 100% } - - /* Code on titles */ - h1 tt.computeroutput { font-size: 140% } - h2 tt.computeroutput { font-size: 140% } - h3 tt.computeroutput { font-size: 130% } - h4 tt.computeroutput { font-size: 120% } - h5 tt.computeroutput { font-size: 110% } - h6 tt.computeroutput { font-size: 100% } - -/*============================================================================= - Author -=============================================================================*/ - - h3.author - { - font-size: 100% - } - -/*============================================================================= - Lists -=============================================================================*/ - - li - { - font-size: 10pt; - line-height: 1.3; - } - - /* Unordered lists */ - ul - { - text-align: left; - } - - /* Ordered lists */ - ol - { - text-align: left; - } - -/*============================================================================= - Links -=============================================================================*/ - - a - { - text-decoration: none; /* no underline */ - } - - a:hover - { - text-decoration: underline; - } - -/*============================================================================= - Spirit style navigation -=============================================================================*/ - - .spirit-nav - { - text-align: right; - } - - .spirit-nav a - { - color: white; - padding-left: 0.5em; - } - - .spirit-nav img - { - border-width: 0px; - } - -/*============================================================================= - Copyright footer -=============================================================================*/ - .copyright-footer - { - text-align: right; - font-size: 70%; - } - - .copyright-footer p - { - text-align: right; - font-size: 80%; - } - -/*============================================================================= - Table of contents -=============================================================================*/ - - .toc - { - margin: 1pc 4% 0pc 4%; - padding: 0.1pc 1pc 0.1pc 1pc; - font-size: 80%; - line-height: 1.15; - } - - .boost-toc - { - float: right; - padding: 0.5pc; - } - -/*============================================================================= - Tables -=============================================================================*/ - - .table-title, - div.table p.title - { - margin-left: 4%; - padding-right: 0.5em; - padding-left: 0.5em; - } - - .informaltable table, - .table table - { - width: 92%; - margin-left: 4%; - margin-right: 4%; - } - - div.informaltable table, - div.table table - { - padding: 4px; - } - - /* Table Cells */ - div.informaltable table tr td, - div.table table tr td - { - padding: 0.5em; - text-align: left; - font-size: 9pt; - } - - div.informaltable table tr th, - div.table table tr th - { - padding: 0.5em 0.5em 0.5em 0.5em; - border: 1pt solid white; - font-size: 80%; - } - - table.simplelist - { - width: auto !important; - margin: 0em !important; - padding: 0em !important; - border: none !important; - } - table.simplelist td - { - margin: 0em !important; - padding: 0em !important; - text-align: left !important; - font-size: 9pt !important; - border: none !important; - } - -/*============================================================================= - Blurbs -=============================================================================*/ - - div.note, - div.tip, - div.important, - div.caution, - div.warning, - p.blurb - { - font-size: 9pt; /* A little bit smaller than the main text */ - line-height: 1.2; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - p.blurb img - { - padding: 1pt; - } - -/*============================================================================= - Variable Lists -=============================================================================*/ - - /* Make the terms in definition lists bold */ - div.variablelist dl dt, - span.term - { - font-weight: bold; - font-size: 10pt; - } - - div.variablelist table tbody tr td - { - text-align: left; - vertical-align: top; - padding: 0em 2em 0em 0em; - font-size: 10pt; - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - - div.variablelist dl dt - { - margin-bottom: 0.2em; - } - - div.variablelist dl dd - { - margin: 0em 0em 0.5em 2em; - font-size: 10pt; - } - - div.variablelist table tbody tr td p, - div.variablelist dl dd p - { - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - -/*============================================================================= - Misc -=============================================================================*/ - - /* Title of books and articles in bibliographies */ - span.title - { - font-style: italic; - } - - span.underline - { - text-decoration: underline; - } - - span.strikethrough - { - text-decoration: line-through; - } - - /* Copyright, Legal Notice */ - div div.legalnotice p - { - text-align: left - } - -/*============================================================================= - Colors -=============================================================================*/ - - @media screen - { - body { - background-color: #FFFFFF; - } - - /* Links */ - a - { - color: #005a9c; - } - - a:visited - { - color: #9c5a9c; - } - - h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, - h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, - h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited - { - text-decoration: none; /* no underline */ - color: #000000; - } - - /* Syntax Highlighting */ - .keyword { color: #0000AA; } - .identifier { color: #000000; } - .special { color: #707070; } - .preprocessor { color: #402080; } - .char { color: teal; } - .comment { color: #800000; } - .string { color: teal; } - .number { color: teal; } - .white_bkd { background-color: #FFFFFF; } - .dk_grey_bkd { background-color: #999999; } - - /* Copyright, Legal Notice */ - .copyright - { - color: #666666; - font-size: small; - } - - div div.legalnotice p - { - color: #666666; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid #DCDCDC; - } - - .programlisting, - .screen - { - border: 1px solid #DCDCDC; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Blurbs */ - div.note, - div.tip, - div.important, - div.caution, - div.warning, - p.blurb - { - border: 1px solid #DCDCDC; - } - - /* Table of contents */ - .toc - { - border: 1px solid #DCDCDC; - } - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid #DCDCDC; - } - - div.informaltable table tr th, - div.table table tr th - { - background-color: #F0F0F0; - border: 1px solid #DCDCDC; - } - - .copyright-footer - { - color: #8F8F8F; - } - - /* Misc */ - span.highlight - { - color: #00A000; - } - } - - @media print - { - /* Links */ - a - { - color: black; - } - - a:visited - { - color: black; - } - - .spirit-nav - { - display: none; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid gray; - } - - .programlisting, - .screen - { - border: 1px solid gray; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Table of contents */ - .toc - { - border: 1px solid gray; - } - - .informaltable table, - .table table - { - border: 1px solid gray; - border-collapse: collapse; - } - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid gray; - } - - div.informaltable table tr th, - div.table table tr th - { - border: 1px solid gray; - } - - table.simplelist tr td - { - border: none !important; - } - - /* Misc */ - span.highlight - { - font-weight: bold; - } - } - -/*============================================================================= - Images -=============================================================================*/ - - span.inlinemediaobject img - { - vertical-align: middle; - } - -/*============================================================================== - Super and Subscript: style so that line spacing isn't effected, see - http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341 -==============================================================================*/ - -sup, -sub { - height: 0; - line-height: 1; - vertical-align: baseline; - _vertical-align: bottom; - position: relative; - -} - -sup { - bottom: 1ex; -} - -sub { - top: .5ex; -} - diff --git a/doc/html/images/blank.png b/doc/html/images/blank.png deleted file mode 100644 index 764bf4f0c3bb4a09960b04b6fa9c9024bca703bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrEa{HEjtmSN`?>!lvNA9*>Uz33 zhE&XXd(lylL4oIh!GZnHecj|txT>yO8>^qY%(y?B;Tppl#t7yOYze#vq#8^aMzDZb YLK^d5CO(feU_df>y85}Sb4q9e0BevqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP diff --git a/doc/html/images/caution.svg b/doc/html/images/caution.svg deleted file mode 100644 index 4bd586a0..00000000 --- a/doc/html/images/caution.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - Attenzione - - - - pulsante - - - - - Open Clip Art Library - - - - - Architetto Francesco Rollandin - - - - - Architetto Francesco Rollandin - - - - image/svg+xml - - - en - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/html/images/draft.png b/doc/html/images/draft.png deleted file mode 100644 index 0084708c9b8287c51efa6b40b8d492854191455e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17454 zcmXwh2{_c>_y1e^C}m43S&}RzTQstU#!g0*n6YJ1aTS}>RLe1z8LVo z`rtm$Vp5JW1|R$HTrs@@LGR)Z?>PPkL8l=j-77Z&G8Tsi{RV4sPaGi)BBI`)`R~Q` z*=O$N8oBahuA1ujq=ONsH^Z$;Z@?A2zPOR;+t7%GvNscPQvtyu^ z^(He{(TNfAz{D>S76#pNt`V=aFm{t&tF)Lut!iq>3RU|!!{xbB|2@69Az7({KpgFX zBHUL)|7ydZKc0k%azcGA&PuCQV*kD$bT{P;b?=`M@6C_|b6!~s9j#tuU~e9n-MCHj zfV5S(js_`kv|ivaLE*6pY!G%r11u^qOVBw|g29`m16#D?@yi>zc0bwz%G@ za2kvxn$XS7{2WQ_ju!==VTs+`V&L;sVz(Pl4+J?F&ZZv3KoKW2c?bBtGq5)oRM?*)usx_-H@47Cu#_qL+2eow%ZDy0=bsNsUP&ms8wSUp@nG86W_bQDmNMRgINC`_}NgC zCcqF_Ta|ScVvPu;|0KG{NIio~DaGYcHYq4AEiIzkxEPqs@0$Z$*)*@J$yP3ObX$%T zzRS=t%7(g3t{Q*^ zEyTxT$*5+N*(plL90Bl6`Nb^WdKn_Pvpb{prO$Iu<5}~-EnXK7fy@_2c89d+ZhJ|)%qTOcbj#K2|l1B!3n*4em>_| zs0+)H9*C!kU%yVP5l({XnQMeRu}L5Sj@SNhX<@4AzfhMZW{P&$t(3w4cF;s3a!PkRM$$6I_u>8qK3>fr(_ zv-Y*v{SjgTfq|+BcyYvbM!vF^@bCsN)N`rpJ$><_Gs5*qVfQ0@761Os;NFEBr2V@4l75H}1u*H-x1FzIyrv zX4-neRxZt~y^&-x>*hYlIJHqt-rL&^c9<9eB-5QN-kNin&S^e!8s9rIjX$~r#FHSZ zPPGHSJ7NH?>J1WXHMp6{3_m_JHFb(pJM-&G@!UzwMZ19kYDMv8^_@35=1Qp*GU^C$ znS!nuvPQ5{W^@`l=K{0vn9d5B4sd@GNsqwYt13N;s_n$M5sF(Y{Gu{$f)Pqq6>`4( zoK6ZojptUz?t{2OQ@f4d24!GwYi6y465k8gmK^#vxd{Il-lBt^R7pE@jfteJwgkQ(YBxT%22tXdci&(7P>~Iov zlAF+-uyinD*mU_C1!Z!%vFE`wQx$H0WX*IMeKiv()c!!|Br&A#iWksE5wy*|X}DYF zOkmbb)NtBhwAgAQQ)W7>BzBj)^ec8BETv8dt~1Wtd}pfRmKnoYyMymV`fvW*bjTy@ zNFqchp{S-_%)XBfUmWyYYl$xVgQtxEVn358@gKtpQuu~+-Kl-33E21oa-Fi&oBI&`1N%T=`T3uD7xjR z1Q5DaVd-rOkkqXdK@Yti1APh3TN{S1DknOaE4Vdk=o-MQ!`zf#3^vm0RTp!s>(8+I z(BKlybb>#^&dE#xTWKkB5>RG$`5m60nzI~B_{R+DtsN)(K1(tUpuVHL0)mIKnUfCR zGE=xGXN@3g`N9QSG|T0c&wxuu*Qg<*+`PlfSfJAKfkWnRsVJ$bx1$Z`o)r~6%k4&i z<9I5}9(ypb2w!#-r7*;K+DjakI~Af;0mNtDxBc4R3|&8W^=h6KIf?>|@$@)*tlfRZ zrCkhM8ZMxnVd%Q>wKHQ6h;cwwxcI6738osp@h30JoAC1Si}3tS%4m{iuKSkF9xsrA%;wLv z8A#j|uifcVGx>ptY|-u;nJ$&yw-19u5smA=3C-sC-n~XzIV= z*~{{V0<$*x$DP?_zs?b?-Dsw+U(_(rI4}YY;n`g??R&MWiSNSHJ{;g>QuE+91GpRE zd9DfqUKVfdeAUwO7il>!iH(N~Y+WTTbX3b$$01o$aei(SD8PN9Ig|tehF6`&rMrwH z6C(}UhO7r4V(nXd&uyraV5X$iUUKSF7E#U?bu;$RHwXn03D2wdZR{}kbxlVH%&8F=8tR+X zZ7kKlMpt29EK0Mnb~Bm{1y*D227__FT~$T7>%Bs>RxQrlgI55^$os$sc`ic?+hwHQ zy%C%qRZZ?xjTT>R%HJvzYPmTbNJa&lc4N}*?d^eJ+TgWWrby|-X?$RL63$ocD0=1z zq>bD(K@l*w5V0aAqv-^DtQq(*B!;KK;S)?XERW0Z8_eB7>{FG!W0Tmu$$a@l#~e@t zb7eAjZ0Z_IN~+HjldvP|xLYiL+|mn)Q;HmqDMG^&^)mW(%Xyb~AG4Jkd@~F091U{i zRg(Zi(!S357h;^+d50bWLHO{(l58O+_d192vyD-Oh|kx|qkk|71w!Jdg*R ze=X`e#>jQ1n83%L37gJmxi{uYC;jRU__qGnk430EXC8CcRU^h&pyhVlHM8x(ce}=L+^|Pv zi|35MNQw6wsl4bw0P{NiUo&-{is+V{iXV*G{_L^ONZ@`H!#JZ@}t;bpd`Z>sx8;y zHg4#YSJ*anpi2Do=jWPejhaoGWKx!&jJeOVaku|#u8?8fCKc>EQ4j zn#0h@X_`cW22kHot+mSQz%;tAI|=i92)Mglsf!Nu*>=_g&(G0d>km#k&)3TllY#^u z02UV-NFuEUi@}-x=ETTTKA`X~EX5jv8~B<}HTK+*9&OvU2dkm`_BX*1VwV7Ij{pg= zxZNaUqPlcVYHAyHFof?m;I-ZD4bN%(@@2Td(VgI3 z{*lWmv$RZ|smov=_kGDznn+>_uX{A6;y}7pk@d`(Lh6{gFvrA5pAdMmu#G*QM1tQg z2^Fb6c;#}e`;nd&oQKh@*-zW!9ICOL;OFgA2-lpdOKmA=Bp;B_eB?c_df>veT)HW_ zs^sQQf+2B6j;5$>ZG`htEUcU*ioNkd+t(slRq00x_hk@N@P79aTAmlqe^(+dfnlOAm^WQavYofR?D70kyE!Q*mr z=MN`!PH<&(t6*5^bfSkgq80c+f6zkhX=!PVf1h^9o$GPX_wJAXim3%oV$)U9uWEOS zFZ=#iF~Q2FVvon!cVc(IvVedI_~ko1I5_AWe$&m4Pfz2dCm|J!YrHng`j<_W)9N6m zB@dJSV}^c#gL?<*=59v;JS=y@jX-JNZOq4)l)5={d`D-W!H@43<=pJ8Cgd+PhIgZ0 z&1}v2D7JC5c5m#$OqX|BP;TfUn_N`fm(NOG0@Nct5f0=5t?)gK>f*TZCP8 zE~vAz*f8;aNltIEzGmjk2?*gK)Xp4zr=6}59u!nRQiIH`r`BWA&&b%MJ+5|@JL))( z@lrFw!p1WBNbZB0IBSb692ygY3^VVnsCLI=p1DJ|9{R_viTo;ObrMJc9HN|9uopn6 zRxJ;a=NLyqW+8?@vXq*8_pkle?wWh-VSoPI3KIY*(nFq-Do;;Op#DRi6cuGIH zS7vFz0{w!T_jHtX9_!if-#4x3C9rYkU+2(KU|U3m|Bg{GCEc)G`)=}$uCcQ=o5}DE z4Qf|tZ$U3T&S;B0h&i3`PkyvL2&sK4L#)80)82naNsAnG!T4hTE7tIKfou;^sdejO z2^s6dG*bi~@XEf#g^+->YY)^i=j)rM{NpB6Os``bQrQDn`1IcCuH_tZo5u_RDCH9} z{A(qdv9-0;w%911g+6sdttId7K8LSzQx$iqDz9QJ%qEV5yOmP%C1^8VJ~&}mU03FL z5oO`+?_NbVx$89Jw_-65lS!LLL^<~>akOrQ*k8YT2f4npv!ne5LrBe1G zio4QV3V(pOPhsqCE2}mF#DXWKYCS~L->zo*5E`io01;dT5!%$~no!XU5w!2{HcD?P z$hkcJN$uNC-y%aa0(KSOy?hfCDA$n{jchN?d(tgsICQ1t%qbWQv5cv{T zBj3*W2{Wy5d$(v$@2djHMZWKG0-|MBp}dhVgo z`Vtvp{;P+IYGFXmo{Vm!Z+%cSOfN(pk`H&G(lF_arZgk!S9%x!bxKv`i?_8}mLXr- zfr-&54|LC~#MV?wRQm-EFSRGh4UA`d#pe!1bE-N?4{$Ro_JUO#b#A&ZN*AR84Q}u< zvAY2P2=^9%#QQFnV=U#iNT(o73@pmXuFN9 zR?J5~@ZQvv3RK1HlYa(JZ^_%8l~?wwv#lhDjuMeJDC(xS8@gFpX*CRJe8FTVfJFLE z`L1aE-QBK9wh8Lf=pv(3olJVvrY$Ug*U6Z?{29OF(VGVhgGPXNls7&Qa&U0KV+QnI zZN%rly6U%&wr&4qxD-ujjGO;@!kTH7t&RXS%qN%jTu85~jgj|mC`qh(pxU=LV<8nb z2*g-&X|S0`7pDK6F8O&>ow7=M28`!FRi!}mwg<&m&wRfJeJ}DJr|iWg3+r~FUb+VH z+^&Un8v5io|7I+;!f+OL&4~5g{fgrz&*uKPkBlbI#PEevl|9*Y;=ZITUOO{Xx3C?Q zjzzGgf??gQ$0$6k$=bjrn_FR?Ye1m&Alpp zIR2qAum=_rBrlX|_n?Z@`qf(Z0Kxll;~uBw&`7z9Rouxf&+){$ zT5l^SU3Q)C3!P4v<8`92?@GD3FQ>)aS@lWl&S_BItaudFE*~l)`|-f4TB#FImiY-_6&9CJ9!>+TEFxeaHO)c zvYblCdx~?kBnWI3y61_CZ7mPPn2!+y?I{+aqiJZV?FagXcV{P$qIQQ}eE8YeF~}-C z?~`EwR@Cieg6$PyJheqdg_twn9zXuoot>29+0UEtNnjKl>TgTSUIvF?r06FMW=5%U zVd7m{^kQJvRLT(~FbI!5QPR|t;QS06HwuN4s*dj5LYaTRDxc}ZbrgWm^`&@BlD%v{ z@k_@S)~9!76hB8Mu>D387Pt4nO+z=`W~vOK4w3_J5I>vM30q#&d2?0jd#W0;VqxAg z{*lOi191%V8^8z#kba|g@ zf4GgGK?gk~`S@>iRci6!kr&;RW(POG$iTAEX&_W3#)}zCBeQ12R}+C0SYWFB65117 zYx=X?gFD^+O{W+m*yAfTKmH~iyJk_ORwrFE`7|!~oOPP-{gCa4!U@A4tRgdFHX_Yj zXQ(+MhO_<^GRY)^`TEi#V?93xP#4UrcMTTD68zJ5m{DboqT=!RTMbx!3!QK?HvU2k za26tqP;3Z8*MmUwL{1I(@xTcd(1T(ot# zQ8@|QB&oA%VI6gn^=!_v)SeO)d`3{ewC>T3XM2ZqXV?iJKc$ft~<<46c!aV(J1mq1tLFMB0Q_){R1qliEw)EIh?S*NbRo*>YaPx z2D-q!@M}X!8+eqQe9(&`vcyr9*&Oc9DxIi1?hcoq6i$Ah{XCaH^2(3TA1)Kpu+!qk zA@V)hERaLu1FN%*CTT?U)U3}+-q2_=P0!NO%*+f=0%Wimi9$O7C`K!{L9kB*slT?q zUcI7*#C3?0;`R1E9%YCjZ^&A%sl;VB6)!NN8!ilSF2s{jaYk8%7*iwJVYB!}O?`NH z3i_o?`Ay@F!YSHq7T_a4Hx}qC1`Ys?_byXR)+^(UW^H6<{Jzm;NPkU97r0{^fT(G3 zA;><1llKwo;%)@{#|9*KE2Dmt;(B|5Xn)(d7V2nr5OXUnA1y_!SW`EtahHzmtl7EE z%djW%*H&HXZ5G=Zciw~l@@5<9~SRg`>1sdv54 zxFT-jCM&GG@`Q{Ed)0jXg#Q(;FzY%A{D;AwhdaxE884#bo;|{{h3OhPo0zbfk;Dak z&K2NDkc8^wVPB=SuB`+^8?cY^RCi~h^*4EmEc?J58r@|g3@t=ykaw*U{ z7v;3}@P2CDd|+0TV}fa|3wl21cs|OFu95chX_S0!)zbD}eUfC(!|&!sVnQ$17U~i3 z0k=jQ+>~NKF!oc>Kff(i>j!z@pZJbZ5Qp)A$c?DsJ8AAv!O6p8|34Q%YV*_nJIhup zmQ_{jUUf_x$nzc!4cNy^2`mY?*);JNgVn<>CsVJYluh4fgd_lF1||t597+ld|`Ww&*4Hb;}rzPmefkY`>P)eSO9!dk2T9lx>3Nj5=Mz z>r&3-+b)2!U(?WAgFX*rf@W9Zs)AS~lgtt0D77}&rQM~)i0CR!i>JVNn(;mN6vgZBRDJTdsnC?L>2H3nvZSp}#S z6*9#|of{57Sm7ktIRid*9b3ZPg&%fX92~R}5M69&e`W5`q8wIvKfBufD8f~ti%ujG zOKrw=EiJwBQ@H^*Kw5USk7cR`7;^B0t+_@D3FT&XdE}c8tK%QmNSn;A8RAsMn%(|0 z_}jjAHPj3;YFouX*X_FojE7Cjxz=b5i*s)&Yd&bUzA+NKT|Zgbdbmf54f|QjdK38q zi<5!1eI+@#xyQUC|DfNCc{vl9E=gF^==yjQil0#7c-)K`hM1O%+v4rCu<4wKEeA0> zEp7n)lZbgQlME&N{V?)eCoEp(d6K!Ss;kAyp#QBJcej|g)B$R7KOOkifc9VnF zpKF%Ab3TXaX3pJr!NN3W-J#nLcKyGkvKH+HgbCYH}OT?)qCnEf9AXZkAVH3MBfRj~6fiIx9-31EklLu#&A>uM1w2k;x{p z6SI?Q5Rg<8S^)#s7ktzJn2#%93?7_*{LTCC-tM45qH{l**RpP#OJ?_o|&r9_@2w=JQ0!~pTA3FNiUVF zjRt1OxG5gVaVzD&sIKBRWsLqX)%Dkp^<7D*ZZlOm3zvdK^caRuw0>+%#d)V}r&k&S9MyDr!%#@BU!SxwyIS8y<#pz4TMM)V&d^NaNs%w$r@xK#Z3m-2Z*B z!#C;VD$dR|<3`KMGMYA6xX-+QD(`rW%C9UZWiLh9%$D1dG#BLbF0BPZF6E_5rP3E_PtxKxwhc&v~_AC^KGDil_tZ4XGnVb_$U_s<> zm8kOFv>8SO#Z#<$=3;#hN0AoE1Eo}p(7cFS7Qu%^IP-@56DRm6;s!W0R~nyzVbeB3 zPAN{zeWb;hUGr&tp1Tb%L(Z#nGF@88afdvP=TZ9_k=he-T;vK+PJ?P6ZmqD(qF2)s za2N9|Lc_5Nh35`gW$V?KI?Em}*YAvfg$3DWNG(QvSZl?m(ctUi;Jj>c8s=iGQ_8IM5DCuHH6)h}yp2H=v=D>3DC$o5 zULiAntcT_b0+|=uYSp|RU-2AMnA6H6X~WBacfvSg6(!cva9ZpD*PX&B$NOGVW7m4Z zwa-Ri?VbD4_e>?M_?{Gp5;i_LZoeQ02^su&$#yDX?_v;bcFNw!ZP<6Xv&q9brr24? z|MPgFAc|V;-ru*smLhtJwEd+tn+gNbYoIlb_Kua^3mizF_sOpaD<1}%2z%fRbie!kaalVI{ zp@PyqhIH`4Lsqp;dXPhYq~D8f_H6FmSVw-c0o;ya;C8Y>viOHkmc!hn^U?c42ZCH^ zPvXs&ZghbhD2ne4J#b17FiS1I9RZ}k{S#@9{3>3owZjjy1{zN14ROf_w3vGo{JOw_ z5LgnbR;Hy3#ZJxN6{=$yTGHlT+Ef*p(!2*(M=pwq@gO`fH0Dr=&t+`4T`zSS&3H_CR^wcr&oGobo(9^R&aR88N zpw8q{)!yFVT7gxPn;IJlWjTZ@;6^gu0o~Co*Y0Z@emdc=ZP)|VUtU{c#1q@-m_(_F zc1`xg?iSXAbKiaJX8bOLsLi6+@?>^2T?51nOC5Th3E$~E6NxFrub(x#dXlO?;HtC3wTw{sEq|t|$syXv8Tfi8aLLm->hWZycx7?T zJAi@9^p4)TX$*q+{W7YJe2KLA=_$$-H9nhPJihFrO_S8hL+vnyy}LF)%0Bq3`+#x! z9*bF7ccIkdCZ@bjMt&SE&fg93dDU%csbne!aFMjR)C1<>dSOfAuTm{~rfOo&wrBMJ zi&P9Lc>oaIV)w+sO?^X8sjG-$-RvZfqbMm$3ez1Ue{7OHR`>b6Zq=_PrYSjFxJ0op{4-*e>HCa+ltbeRL&8rk zOpJhZ9$>74+^4>aDY$y1{+F~p?}C)d=kkO*yn}m+Ajw3dOKVp@e;LX1bbqRk?i+lw z|D*uJfF@Z)tVkhWM8?V&E# zyTmdhV1UEb^kae@-je}deN9LG-8T#3h1#ojCe(gby>*zW``~(Lb6U7b%MwpdqEq(K zEAS{$i7H)RbG~^`>SjFQj+Y?^Ft_1`?au+^$%R3VO1zaZ&?NS4Ry^!zZ^1c#NF#h@ z0TD8T#jmQSaL?JG8@5uub}qy}n+?f&XZkDn47o*x8=R+CS@9|@+5Sc{deuI{#-k@8 zGwVmk8dyt-NdoEExb}uMJCH}0UCrJi0uMR>5}ISY3=oBH&_hoY1^&b)i~yE}u?si% z-PVt&T)q;ZjLX0sQ_TA3bY0+hmGSl}+yLQsMKtH(tvC4_;^TC@vXLuNNTcgL$DnOmGiLhtBsMO^AN`&cRypL?h%J zBiGYxSf4}dsU(n)My$~2GQ(fLVZL#U{ho7-j1j?+)IK2=G zzXCkvL!y~{frb8dl#NEpiJ)7iad@m8(PH3p4?x|-%d5zWr95 z{rZdqX#)sbTEuODXWBnoDA=^8YbJDSV-L>lfASXZ8D5y&t!Z16)p2XHLUQ||$XzhY z(ZNTOhU=WEWxG?AOmpj8K~s1|a(9*t@!RB$%7U*=_M=t5`sWAFyuz~O>Pcjl@Xup- zgO1W}S3KEY&FGc`(1n6n{`G2ikZF>bki9HXRA3j<&l!tlbJ90F>rt$!$g75+5bn&= zjyM80QWmZjI!*;6oH#S|oUcV47FQsDUj%8+H$#7kjT51X^Jtx)%R6|}%#Dzl{ml^0 zsv`Nn-|Bz+48SiLI79mr$g&j&34dbw@n{EdZCF)Q;Eel#;Nmcdr^kRV94rNTeQ>Vz znJP$)fOxR055Bx)K9o5)r}JEv*;cD>C^DQx@@g87^oPS)Thwn;1zXm|@zi=;a?}5h8y* z6>(bt{|;@&f#h3nUIC~HE_8P)0gPfgF)Iz@RlCu`TI%(q~$n4sNz_?{|9BnSz}B&7{#_ zK1qBPIgO|{V&NqKX{rq+Kghb{e3jx$f^oK<{_owdP6x{tVp%vtu+-oKp~{XTyKKwM zX$Z`c@2!q%PLTgNKUeKOH3e?Z#(AjRAjfx2O^o-wLC-f~kXBCsjG2SB4k!3w&_%ssqiht1fi`gwthS zZRJxsc=Hc02T0kCbeye6=v`L}H=CcUFBS95I`opHXTIPR!vcLUKAVpo{skf;5|%cj zKZYwozQ@0;jmm7Ewzi zo<*oL>r^0lz>yz>?Cy#9!RQ(wwu(u2d3jTu6aCREon8S6b$ev_gGij5MEh0OwVHeY z3JMHR>*HK->0zGG9~TkshQO@B>eP?{hJE$f;3N>uRLhJ}P~ZraSC!2Z-m?eb14#V` z%Wf}!yyU^lkZyZXi204#!G+O?Q@ceB{!4N<(Xh3BuOxshEnNU26-F#`#RIs>N}(pBW@Si2rp;jR0tbkkeB?zr zS^vJtRoNXb>y}tW?zt}O@HIPqMztv8X1Mb1o1(k)Qcp6Pr6uU+Wr|!Hv7+$?#M_2O z8ozNt-UfLk4P2gUH6A!~G!t9m9h^|<)O4k5$cNw60eE=UoqqjQ71i%yE>IF5MMw53 zoVZpnlyb}7VoR-eL}JL|uKeGZGj%Bhl-tR>S%pT0QE3%}REJ4vlQXBz;^otxhg?Ch z8XD=ERaU!$Uo=nzVP$E_ymK_%iP6+MG{s;{Y7rF$-fQvmr}-!7R+5kFfp=OE?phks zAIRMnzl_f-n|fdFUx?=;*-?y8#j=PGKPpOOOfX}Ic6w;#a)+T)JYU|+Xv2w$zY|)U zEeeU^HM+hO--oSU>4i-+iF%MO_+IX?wo`R@!WLpS_grU1%73579~%ph(hCzw#gqKS z33(@oiGv3~@~gXqf5#i|_#YMm|B*Feu_oGLserI4H_P&w_AZb(3Isb~x3Ld2CgpT^#omehU$@8! zZ37~|Sa6Xc;y@q!+6z@#hh!4ucXrj8>Qxso@J<)u1I)@I5I^A46Xis^4@P!i0{?O+ zk)CZ~poU|sFD2L)#iE|&ssJ3xPipy!K=bolV9l|2Z(i}*43Z1Wl>m~3P4rKR z;{jYf=VLJmi^x2<{AMKuKw`P)#B;8nQBOIhHy->XNo^z$xthq*cY@X>W!5<4<@4FX zNAk9jj2q$VscrAdjGHmRtbN?guU-Ze<)BHW%*jo5k{5v?@U7yU_yhoD$uz_q-~545jZuxv;JUQ*eFqk?xfP@lh~jP(N?2I0NIZ-q zDGD#GS$Z5%#81&o5Ufv=)9xJ28~UMS`u^V4={bp#DxfwlU7@e?)*KGps|+y(T@tnr z9A#fLvb5wqpXG&eyWHhX@kN1}iO>(98#j(F*qUrT%3$LWY&VnO9gyxolrhty?u8%M zar#N)92>LMOfsB>_D%XweB1a5z8o_t7nV53zGhsGH=Ml{GE->_3^aZ?i1k+KH{Bi* zY{{urjeCUUx{4awMMqbyudOM4lcFe}f0kQxel&TCX;q8#ItaBSss?l>cfYcppL667 zS>TiWKH{ZWLw~L%seSo-t#ZVhl2DGsZb6V3qms|C<$Uq?0!WD znTe>ujm8kZr!xr(ULadh!(KEI*eP2e8ztmktEMSwD&hN43ddd7xbRW-tc40~ z19$nWlggKs>s;Od2Iq;+HaSzqE~nHmhvFSvxIn|naZo8v~4WofUl z>!4oJlcv$-(Hu&G#ZJ_w5Z)n~Rwk6YVkfc4?7^k&H4vyEOMEwEPa;GC(@sG9UK0l< zym3g}=fXdvShWk}JWOfm_hXjhW6NC8L44=y9MCIOFwlD^9541durm zIjxI`e%J5;RSEZ-PK64!Z$8JYxg)OYus$7X)=3YXtpuw8`FEZoHX-T27L3^3mCkP{ z&5K05BG=29L~TDoxs)Ze8YnCtB6r6s5%IM>J{E>lKnexjk zF8wpQnq>*y(C;*VyBSQLL0w@L?tQ?-PuO>uDOcCX?6xMc;$ZyH<_&W`uj1gXTP$N^ zG4Xa31VfrYj;M^;f(-Tw`<_7wa3DmU;dQiQf z7NxutM)uz=k#Ko!M0*iv^qY@@ibmclp2|7Ykd5wdL5{;9N3m~n4g=tUwe;P zI25w!A{9r;$eMW>q{hpo19Bk1pe=P>6r$o%=>7_cjN&Tm5M|IJuUvH+AK${CJX4oU zgO6^=eBKAuGz|tm+nSrK8|c$@b06AJVIe41Kb6p*)`8SjV>XRLlD=n zxmF_SZPNO?HOkAGmreqZP`zhDat0zvL6TUJs#jj+mv!eE2D(4H^wQ8v?J{{F_uNf{ z3Guwlmr_Y+?1xwv+DlCV!Qxf3`85lI9<3MYLPv#eKnDUu^wHQ zc>gm5549XSAWHZ;ccVn65dF5Y_!SFO%Z|}Q(6SZUI=Dtc;z5Ty%nrLYb#L*-Yh(x- zSIj@A+IWZB(0~zQg=&PNK%${P5hZ>29oZHuVGWHXY$x1YFsQbXHgN={wk@*qqJ+Nq zd)egXY~a_ZOiJe;TU+HKlsyJTMfblt8%od5*(H)*Q$D;z+^%AQ4mXPuX2k}%-4;79 zmQ1FAba2Ra`Bcxdj1l&?kFD%K^S3JRgKXK4^qjwecz_P2uJ-l zC)Qvqm+~M!v43_gwKDlR1nJf$++0o6yE@XCdZL3q)UgB#ypJ#vJ8S*1wxK1+=6B}+ zXR*cqf>giPZZtBQvI{Zak5z&s<%W6@C}Kc7|Jd$GBC>hYST1Qs6_hTGb>DuR924B0 zN83(4+CxS$>H&|*-r;Fo4NfL83)iN!YZ&TeJH98$Hv6Ebv4bJ|{_ja0c;iH3BS>3^ zpqgshmx8R31o2gdvH`OqjyW=UU6imxAx*C0^Zy99KL{oAvkpUJI(*CnkaZUKS|miv7yJG9ATWhm{X zmhwPou-YzMm|1!Q!U)jjx%z~gla=8UD)w?G&Zaq~DL{YDwlSN`Dnf>gnqOEH6`e=5 zK`qGvB4v}6phVXVBt;`Goq9`6$1(ekF#8@rQR!O?lVvgou3PA{Mrgg$a_qp=fEaM+ zd)RS3^IyJ;lNL~f*%#*d`QhDdtk^TrNIS|sGACrecpC80;-?Fs23-ZoFWU}~?O7@t zRJMKubhf|4AK65+^Yw8fyef3O1aA8v$s3mu7PHe^U+V4qu@K`r&lUl#^MSr$PX__o zkc4H6xZrmj{B9ymd8uZ1l@104i9rzScjn&(C@ri42@jd|ET?03nMCrOz62_&EiK<& zSBCb#CxX4Kax$9yU;Qik2A;XS4l0o}3esA}H7YGS`LFZ+Cp-+Ao3iV`;Y2#t+RBw4 zx0Nc0Q9y%mXU8X3P%JXaJSA=%)~{Chg+d_{`+@cih8jx$RRzetz1P5XI7rt8+K9*g zkSIZ8rn1WK#9AdD3qWOXE$*F3Ot={(vVp^%iu~vZN~NYgy8_O?l!!1aW}T^|BNP&6 z0?qjrcZN zmjmPbA_FH7lrCAL1d^70)DpX)@;aCfO87MXaxB1q=%jAw{{D`eJ!d-BNT7BMlMWP}{ZZ&o`DY!}ep;HhTV*iZR2Rod;vAPt=MM&iugW*ReqJUt5Qt_q8>ioMMBX>R9!hDFUD-8$eYs z1-TtSGqXUHgLC2i8u*t{Y|w|+jMebIyJ4s^A?cD}pz_yAd)%*nkt{$;7Zl-taBgGY z3@mR5iYU7aF`|s8$6+Otgv24;=D;){kh=%;5zgNp{HcTraHisq6ZRfb zGW_De>QlN^)>%P;wg-4IfgjGe)9@8oA5f2u;i&iuD70ZYZG>GVyG?KsVh7^@q^+_&<9k|1f{n8Ys}&4 zar=)5U>;^OAAH~;qzbCyEiJ*~gbv|vsZP*7fI2Zi@i+OI%Qu*&(tT@erO6Mb(Z$59 zguP#oe4eqid_2;#q}qW|`vO7O$`jJe$IvZwKK6c?Xzh#3XO?(!b^2k4;!# zYGW=JqVe>I?z~`PT4Q2xwFFNu6ey9UCv31nPenw9f8bRc#Vg5bJF+YgK;aIo$ualP wqI_@;Bx5sQADwv9=?)5}0VhV#cC~Kt`tEf9DgFWeNC#x3htMsB-+J`_0Fi|iga7~l diff --git a/doc/html/images/home.png b/doc/html/images/home.png deleted file mode 100644 index 5584aacb097a80e66a5320312b6e4eb017af1a06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9nKDRM~@s%h>KBER+u?+=H<(mwr$-K=fo0^iDsNj}a zlv - - - - - - - -]> - - - - - - - - - - - - - - diff --git a/doc/html/images/important.png b/doc/html/images/important.png deleted file mode 100644 index 12c90f607a1b27ddde0a7d922ae255e8c90e883e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD diff --git a/doc/html/images/important.svg b/doc/html/images/important.svg deleted file mode 100644 index dd84f3fe..00000000 --- a/doc/html/images/important.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - -]> - - - - - - - - - - - - - - - diff --git a/doc/html/images/next.png b/doc/html/images/next.png deleted file mode 100644 index 59800b4e87f60c0e3383ede2b384b9be0f5ffe8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7)tW9mdAS+qP~A^!HU$R#>ro>7z#vFJHct5EtX@VE6z3e?1}lM4)<}k|4ieAQuK0 zgzld^2NdTl@Q5sCVBi)4Va7{$>;3=*RZCnWN`mv#O3D+9QW<;`lZ*0mQ&Tb%72Gn5 zQp@v;vWpdbBNU7b3{2X~)|>}w5Cds&E=o--$;{7F2+7P%WiT|*H!#*WFgd=yhZCqG z!qdeuq+(9;4PKV1Hyx6gnJ3)X*T8%1&d~!CcvGht8EkNzY0cztDB;<=un7h&oMQJ5 zOnAh^!sYOgmxqZbU_wKJkwW(@g)2%k8?y8!<$B~f6iH61Ubv5eVdat_!+^S!9H1Qx Mp00i_>zopr0Jz|Gn*aa+ diff --git a/doc/html/images/next.svg b/doc/html/images/next.svg deleted file mode 100644 index 75fa83ed..00000000 --- a/doc/html/images/next.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -]> - - - - - - - - - - - diff --git a/doc/html/images/next_disabled.png b/doc/html/images/next_disabled.png deleted file mode 100644 index 10a8c59d7b3741260b7bfe918b62d0670cad8433..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 zcmY+@U1(Ba7zgmjDRvTtQ&L$$oM7uF2)$_$L2619oS2=UZrYjBy6mRGh`_UtKA{mr z&7hmQ>n7-KH(k`l3W_tgna$01TCHhYnyqEo%+oU}@c)DNeRv<Aw4@Ln z93k3vZsg(J43U|lVL3RF9xoOO*=)8_spRvsnW@QgsZ^`gs@1Bl&*gH{hGA%$HjdJ0 z0!^YRltHf%-=x_aG>vj-2F;>8dW+_ej^3ep^d5ac3+N+SL}4$&L!O*Z;pbcwggWI6Ht znSIeG^MqH2daRdq_j=NKWUEDx?&yZ{K(t0hNp-olr%gM()V(P|g0v^Rdp~d9J+QaF z!E^J*7D+vMK=CJy#-QLKKFMEfm#>;6HRZnKq86dtH6)t7^tAr+x)|r>qo?RMm@+$*>08dLHng9R* diff --git a/doc/html/images/note.png b/doc/html/images/note.png deleted file mode 100644 index d0c3c645ab9af6318035b026dd86944b9ddc9114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - diff --git a/doc/html/images/prev.png b/doc/html/images/prev.png deleted file mode 100644 index d88a40f923e3c554125f01cd366707c60cfcad04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J$mwJ|V8+ zB7$jYX~xFJ+qQ05v3zNuzpt9I!sW}Cx;s0Z9qba~V*daCKl2PvGf+KGNswPKkP8D0 zLif*|1B!DNctjR6FmMZjFyp1Wb$@_@swJ)wCBgY=CFO}lsSLh}$wm3OsVSL>3T~N2 zspa`a*~JRJ5eh~I1}5!gYt92Th=DXX7o{eaWaj57gkwm>gfq&(JZLf6ZeXy%aV8%R&r1O{j}20XTDX{IIykaj z4Nx#hVBm6cU}k1+>Qw1kB6gA`rFdeFa~bob(-ZFQzAc!;#K4>y+$E64`2%PJgQu&X J%Q~loCIAR&aHIeL diff --git a/doc/html/images/prev.svg b/doc/html/images/prev.svg deleted file mode 100644 index 6d88ffdd..00000000 --- a/doc/html/images/prev.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -]> - - - - - - - - - - - diff --git a/doc/html/images/prev_disabled.png b/doc/html/images/prev_disabled.png deleted file mode 100644 index ab3c17e02d156e7494dbab2f9cd66af46af2358c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1109 zcmY+@QAkr^6bJBgcW-U!1{X&)qK7M_5M*o=8THWJ+-L(GYZ=trG_;qf9*iP{hOHkvdvc6%2vA_iD3U9-0yJDcRs#*KhAd};6H4s z+g3+J7N6H0vA^EQ+H!#9vbD6`Ds$w15^-3cW^4D2@1tYP~^k(L0ny@6iX8LwWQOEu&AU zfQo1ZeMa02wZ5RQ=o?x^-x0S~tsm$oT0_531^q^UP!(}k|Km7w>=EA^b6?PZ^nZ>c zHKa9-^N)RQXXnMy?rd*3eEalZV2h}d<7uSYUol!mlhPcO#b+0y%6jsu%~o|iC&Tqk zjZ&+ugrhej$H%%!n2hY4Bw5`RXuNjl<&!a&&LzU`dgFGUS~a!}3S4TRbC4w09~9k9 z);;a{R+T2~>V^|?*&xZWmO@B-pr0ES45n;vpEFE`ily1KnYZ`aRH^GBuiSf29T*)S kmrP2ur(nL^ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS diff --git a/doc/html/images/tip.svg b/doc/html/images/tip.svg deleted file mode 100644 index cd437a5e..00000000 --- a/doc/html/images/tip.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - lamp - - - - office - - lamp - - - - - Open Clip Art Library - - - - - Sergio Luiz Araujo Silva - - - - - Public Domain - - - set 2005 - image/svg+xml - - - en - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/html/images/toc-blank.png b/doc/html/images/toc-blank.png deleted file mode 100644 index 6ffad17a0c7a78deaae58716e8071cc40cb0b8e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g diff --git a/doc/html/images/toc-minus.png b/doc/html/images/toc-minus.png deleted file mode 100644 index abbb020c8e2d6705ebc2f0fc17deed30f2977a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL diff --git a/doc/html/images/toc-plus.png b/doc/html/images/toc-plus.png deleted file mode 100644 index 941312ce0dab168e0efcc5b572e387259880e541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{S^Z=hXV#3jn*#4_ x=vj5p^wF)?xpx*Du6ddKc=uuXxWffq{6A*KyDFWJxdXJF!PC{xWt~$(69DY=mmvTE diff --git a/doc/html/images/up.svg b/doc/html/images/up.svg deleted file mode 100644 index d31aa9c8..00000000 --- a/doc/html/images/up.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -]> - - - - - - - - - - - diff --git a/doc/html/images/up_disabled.png b/doc/html/images/up_disabled.png deleted file mode 100644 index e22bc8712192df3a8faa3264b0ec71ff3aaaa96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmY+@Z)^*37zgl2dzmw~oK$GMafp#cWXs;jyt!6uYtl7UeZec8`SV6X{7De9Dw2(4 zm>26}32(gcW*OddFPdfV_NT?wYHgXdTAfl#H+r5D$$dY`-IIHMf0Ezb_xin_j)wY; z^+eR*>U8+HT56YQ=DTxXyvjv5Ve7IHJsG&Xy#F3Q%RQaGE}~1@h=SLMDmvFJ(fJml zT!5&3h-ky9p~u59A~Sj2e&_VmWGa=4$F*XyxL7D;GnsO^oJh>ZqBHq?zEmnDlXI0y zMc4I7gDEtPW>6Hx&`b0Ry+#^}qc><4CD2?%a47s&%&rYXwnm@^2oK6>2RiC(}ybQxc@;;j!lN7xJKGXK5u*58HCq zi)yn~zbYIeQ(ynxTdSHPs@k~jXquO=uiH1eY2@@XO+VY(#*4k%x7x*t?&AUCt?S$* rDO!X~;(e<^-4?Sb9}HJ}I(CrQLYik+oARjr0iT6jPLE^M9tiybIrJyp diff --git a/doc/html/images/warning.png b/doc/html/images/warning.png deleted file mode 100644 index 1c33db8f34a8b42b373179b46a2d8d8a10e061a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> diff --git a/doc/html/images/warning.svg b/doc/html/images/warning.svg deleted file mode 100644 index fc8d7484..00000000 --- a/doc/html/images/warning.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - -]> - - - - - - - - - - - - - diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index c9d159d1..00000000 --- a/doc/html/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Chapter 1. Boost.BigNumbers - - - - - - -
-
-
Next
-
-
-

-Chapter 1. Boost.BigNumbers

-

-various authors -

-
-
-

- Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -

-
-
- -
- - - -

Last revised: July 08, 2011 at 18:51:46 +0100

-
-
Next
- - From e97c76f66ffc8f61dcc956f25f783af437436670 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 1 Nov 2011 19:14:08 +0000 Subject: [PATCH 050/256] Add interconversions between GMP types. Updates docs. Add numerator and denominator methods for rational numbers. [SVN r75232] --- doc/Jamfile.v2 | 5 +- doc/multiprecision.qbk | 374 ++++++++++++++++++--- include/boost/multiprecision/gmp.hpp | 288 +++++++++++++++- include/boost/multiprecision/mp_number.hpp | 21 ++ 4 files changed, 633 insertions(+), 55 deletions(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 1a557811..7cae9abc 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -13,12 +13,12 @@ boostbook standalone big_number : # Path for links to Boost: - #boost.root=../../../../.. + #boost.root=http://www.boost.org/doc/libs/release # Some general style settings: table.footnote.number.format=1 footnote.number.format=1 - html.stylesheet=boostbook.css + html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css # HTML options first: # Use graphics not text for navigation: @@ -66,3 +66,4 @@ boostbook standalone install pdf-install : standalone : . PDF ; + diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 4ccfb199..87ebc540 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -5,10 +5,10 @@ http://www.boost.org/LICENSE_1_0.txt). ] -[library Boost.BigNumbers +[library Boost.Multiprecision [quickbook 1.5] [copyright 2011 John Maddock] - [purpose Big Number library] + [purpose Multiprecision Number library] [license Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -20,7 +20,7 @@ [section:intro Introduction] -The Big Number library comes in two distinct parts: an expression template enabled front end `big_number` +The Multiprecision library comes in two distinct parts: an expression template enabled front end `mp_number` that handles all the operator overloading, expression evaluation optimization, and code reduction, and a selection of backends that implement the actual arithmetic operations, and need conform only to the reduced interface requirements of the front end. @@ -38,27 +38,34 @@ The following backends provide integer arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_int`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +[[`gmp_int`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] ] [h4 gmp_int] - namespace boost{ namespace math{ + namespace boost{ namespace multiprecision{ class gmp_int; - typedef big_number mpz_int; + typedef mp_number mpz_int; }} // namespaces -The `gmp_int` backend is used via the typedef `boost::math::mpz_int`. It acts as a thin wrapper around the GMP `mpz_t` +The `gmp_int` backend is used via the typedef `boost::multiprecision::mpz_int`. It acts as a thin wrapper around the GMP `mpz_t` to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. +As well as the usual conversions from arithmetic and string types, type `mpz_int` is copy constructible and asignable from: + +* The GMP native types: `mpf_t`, `mpz_t`, `mpq_t`. +* Instances of `mp_number` that are wrappers around those types: `mp_number >`, `mp_number`. + +It's also possible to access the underlying `mpz_t` via the data() member function of `gmp_int`. + [h5 Example:] - #include + #include - boost::math::mpz_int v = 1; + boost::multiprecision::mpz_int v = 1; // Do some arithmetic: for(unsigned i = 1; i <= 1000; ++i) @@ -66,6 +73,10 @@ to provide an integer type that is a drop-in replacement for the native C++ inte std::cout << i << std::endl; // prints 1000! + // Access the underlying representation: + mpz_t z; + mpz_int(z, v.backend().data()); + [endsect] [section:reals Real Numbers] @@ -74,61 +85,214 @@ The following backends provide real number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_real`][boost/math/big_number/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +[[`mpf_float`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +[[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][GMP and MPFR][Very fast and efficient backend, with it's own standard library implementation.][Dependency on GNU licenced GMP and MPFR libraries.]] +[[`mp_float`][boost/multiprecision/mp_float.hpp][10][None][Header only, all C++ implementation.][Approximately 2x slower than the MPFR or GMP libraries.]] ] -[h4 gmp_real] +[h4 gmp_float] - namespace boost{ namespace math{ + namespace boost{ namespace multiprecision{ template - class gmp_real; + class gmp_float; - typedef big_number > mpf_real_50; - typedef big_number > mpf_real_100; - typedef big_number > mpf_real_500; - typedef big_number > mpf_real_1000; - typedef big_number > mpf_real; + typedef mp_number > mpf_float_50; + typedef mp_number > mpf_float_100; + typedef mp_number > mpf_float_500; + typedef mp_number > mpf_float_1000; + typedef mp_number > mpf_float; }} // namespaces -The `gmp_real` backend is used in conjunction with `big_number`: It acts as a thin wrapper around the GMP `mpf_t` +The `gmp_float` backend is used in conjunction with `mp_number`: It acts as a thin wrapper around the GMP `mpf_t` to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. -Type `gmp_real` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or -at variable precision by setting the template argument to zero. The typedefs mpf_real_50, mpf_real_100, -mpf_real_500, mpf_real_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision -respectively. The typedef mpf_real provides a variable precision type whose precision can be controlled via the -`big_number`'s member functions. +Type `gmp_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or +at variable precision by setting the template argument to zero. The typedefs mpf_float_50, mpf_float_100, +mpf_float_500, mpf_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision +respectively. The typedef mpf_float provides a variable precision type whose precision can be controlled via the +`mp_number`'s member functions. -[h5 example:] +[note This type only provides standard library and numeric_limits support when the precision is fixed at compile time.] - #include +As well as the usual conversions from arithmetic and string types, instances of `mp_number >` are +copy constructible and assignable from: - boost::math::gmp_real a = 2; - boost::math::gmp_real::default_precision(1000); - std::cout << boost::math::gmp_real::default_precision() << std::endl; +* The GMP native types `mpf_t`, `mpz_t`, `mpq_t`. +* The `mp_number` wrappers around those types: `mp_number >`, `mp_number`, `mp_number`. + +It's also possible to access the underlying `mpf_t` via the data() member function of `gmp_float`. + +[h5 GMP example:] + + #include + + // Operations at variable precision and limited standard library support: + boost::multiprecision::gmp_float a = 2; + boost::multiprecision::gmp_float::default_precision(1000); + std::cout << boost::multiprecision::gmp_float::default_precision() << std::endl; std::cout << sqrt(a) << std::endl; // print root-2 + // Operations at fixed precision and full standard library support: + boost::multiprecision::mpf_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; + std::cout << log(b) << std::endl; // print log(2) + + // Access the underlying representation: + mpf_t f; + mpf_init(f, a.backend().data()); + +[h4 mpfr_float] + + namespace boost{ namespace multiprecision{ + + template + class mpfr_float; + + typedef mp_number > mpfr_float_50; + typedef mp_number > mpfr_float_100; + typedef mp_number > mpfr_float_500; + typedef mp_number > mpfr_float_1000; + typedef mp_number > mpfr_float; + + }} // namespaces + +The `mpfr_float` backend is used in conjunction with `mp_number`: It acts as a thin wrapper around the MPFR `mpfr_t` +to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with +much greater precision. + +Type `mpfr_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or +at variable precision by setting the template argument to zero. The typedefs mpfr_float_50, mpfr_float_100, +mpfr_float_500, mpfr_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision +respectively. The typedef mpfr_float provides a variable precision type whose precision can be controlled via the +`mp_number`'s member functions. + +[note This type only provides numeric_limits support when the precision is fixed at compile time.] + +[h5 MPFR example:] + + #include + + // Operations at variable precision and no numeric_limits support: + boost::multiprecision::gmp_float a = 2; + boost::multiprecision::gmp_float::default_precision(1000); + std::cout << boost::multiprecision::gmp_float::default_precision() << std::endl; + std::cout << sqrt(a) << std::endl; // print root-2 + + // Operations at fixed precision and full numeric_limits support: + boost::multiprecision::mpfr_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; + std::cout << log(b) << std::endl; // print log(2) + +[h4 mp_float] + + namespace boost{ namespace multiprecision{ + + template + class mp_float; + + typedef mp_number > mp_float_50; + typedef mp_number > mp_float_100; + + }} // namespaces + +The `mp_float` backend is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free) +real-number type that is a drop-in replacement for the native C++ floating-point types, but with +much greater precision. + +Type `mp_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. +The typedefs mp_float_50 and mp_float_100 provide arithmetic types at 50 and 100 decimal digits precision +respectively. + +There is full standard library and numeric_limits support available for this type. + +[h5 mp_float example:] + + #include + + // Operations at fixed precision and full numeric_limits support: + boost::multiprecision::mp_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; + std::cout << log(b) << std::endl; // print log(2) + +[endsect] + +[section:rational Rational Number Types] + +The following backends provide rational number arithmetic: + +[table +[[Backend Type][Header][Radix][Dependencies][Pros][Cons]] +[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +] + +[h4 gmp_rational] + + namespace boost{ namespace multiprecision{ + + class gmp_rational; + + typedef mp_number mpq_rational; + + }} // namespaces + +The `gmp_rational` backend is used via the typedef `boost::multiprecision::mpq_rational`. It acts as a thin wrapper around the GMP `mpq_t` +to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. + +As well as the usual conversions from arithmetic and string types, instances of `mp_number` are copy constructible +and assignable from: + +* The GMP native types: `mpz_t`, `mpq_t`. +* `mp_number`. + +There are also non-member functions: + + mpz_int numerator(const mpq_rational&); + mpz_int denominator(const mpq_rational&); + +Which return the numerator and denominator of the number. + +It's also possible to access the underlying `mpq_t` via the data() member function of `mpq_rational`. + +[h5 Example:] + + #include + + boost::multiprecision::mpq_rational v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + v /= 10; + + std::cout << i << std::endl; // prints 1000! / 10 + std::cout << numerator(i) << std::endl; + std::cout << denominator(i) << std::endl; + + // Access the underlying data: + mpq_t q; + mpq_init(q, i.backend().data()); + [endsect] [endsect] [section:ref Reference] -[section:bignum big_number] +[section:mp_number mp_number] [h4 Synopsis] - namespace boost{ namespace math{ + namespace boost{ namespace multiprecision{ template - class big_number + class mp_number { - big_number(); - big_number(see-below); - big_number& operator=(see-below); + mp_number(); + mp_number(see-below); + mp_number& operator=(see-below); /* Other number-type operators here */ // string conversion: std::string str()const; @@ -138,44 +302,93 @@ respectively. The typedef mpf_real provides a variable precision type whose pre unsigned precision()const; void precision(unsigned digits10); // Comparison: - int compare(const big_number& o)const; + int compare(const mp_number& o)const; template typename enable_if, int>::type compare(const V& o)const; }; + // iostream support: + template + std::ostream& operator << (std::ostream& os, const mp_number& r); + std::ostream& operator << (std::ostream& os, const ``['unmentionable-expression-template-type]``& r); + template + std::istream& operator >> (std::istream& is, mp_number& r); + + // Non-member function standard library support: + ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); + + ``['unmentionable-expression-template-type]`` ldexp (const ``['mp_number-or-expression-template-type]``&, int); + ``['unmentionable-expression-template-type]`` frexp (const ``['mp_number-or-expression-template-type]``&, int*); + ``['unmentionable-expression-template-type]`` pow (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fmod (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan2 (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + }} // namespaces + // numeric_limits support: + namespace std{ + + template + struct numeric_limits > + { + /* Usual members here */ + }; + + } + [h4 Description] - big_number(); - big_number(see-below); - big_number& operator=(see-below); + mp_number(); + mp_number(see-below); + mp_number& operator=(see-below); -Type `big_number` is default constructible, and copy both constructible and assignable from: +Type `mp_number` is default constructible, and both copy constructible and assignable from: * Itself. * An expression template which is the result of one of the arithmetic operators. * Any builtin arithmetic type. * A `std::string` or any type which is convertible to `const char*`. +* Any type that the Backend is constructible or assignable from. /* Other number-type operators here */ The following arithmetic operations are support for real-numbered types: -* Binary +, -, *, /, +=, -=, *=, /=, ==, !=, <=, >=, <, >. -* Unary +, -. +* Binary +, -, *, /, +=, -=, *=, /=, ==, !=, <=, >=, <, >, ||, &&, ||=, &&=. +* Unary +, -, ++, --, !. For integer types the following operators are also supported: -Binary %, %=. +Binary %, %=, |, |=, &, &=, ^, ^=, <<, <<=, >>, >>=. -(More to follow!!) +Note that with the exception of the logical operators and unary + the result of applying an operator to +mp_number is an "unmentionable" expression template type. -Note that the result of the binary +, -, *, / and % operations is an expression template of "unmentionable type". +Binary operators, must have at least one argument that is of type `mp_number` or an expression template +derived from `mp_number`. One argument may optionally be of arithmetic type. - std::string str()const; +Note that type `mp_number` (and all expression templates derived from it) may be used in a Boolian context. -Returns the number formatted as a string (TODO: enable custom precision). + std::string str(unsigned precision, bool scientific = true)const; + +Returns the number formatted as a string, with at least /precision/ digits, and in scientific format +if /scientific/ is true. static unsigned default_precision(); static void default_precision(unsigned digits10); @@ -183,9 +396,9 @@ Returns the number formatted as a string (TODO: enable custom precision). void precision(unsigned digits10); These functions are only available if the Backend template parameter supports runtime changes to precision. They get and set -the default precision and the precision of *this respectively. +the default precision and the precision of `*this` respectively. - int compare(const big_number& o)const; + int compare(const mp_number& o)const; template typename enable_if, int>::type compare(const V& other)const; @@ -195,6 +408,69 @@ Returns: * A value greater that 0 for *this > other * Zero for *this == other +[h4 Iostream Support] + + template + std::ostream& operator << (std::ostream& os, const mp_number& r); + template + std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r); + template + inline std::istream& operator >> (std::istream& is, mp_number& r) + +These operators provided formatted input-output operations on `mp_number` types, and expression templates derived from them. + +[h4 Non-member standard library function support] + + ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); + + ``['unmentionable-expression-template-type]`` ldexp (const ``['mp_number-or-expression-template-type]``&, int); + ``['unmentionable-expression-template-type]`` frexp (const ``['mp_number-or-expression-template-type]``&, int*); + ``['unmentionable-expression-template-type]`` pow (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fmod (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan2 (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + +These functions all behave exactly as their standard library counterparts do: their argument is either an instance of `mp_number` or +an expression template derived from it; their return value is always an expression template. + +These functions are normally implemented by the Backend type. However, default versions are provided for Backend types that +don't have native support for these functions. Please note however, that this default support requires the precision of the type +to be a compile time constant - this means for example that the GMP MPF Backend will not work with these functions when that type is +used at variable precision. + +Also note that with the exception of `abs` that these functions can only be used with floating point Backend types. + +[h4 std::numeric_limits support] + + namespace std{ + + template + struct numeric_limits > + { + /* Usual members here */ + }; + + } + +Class template `std::numeric_limits` is specialized for all instantiations of `mp_number` whose precision is known at compile time, plus those +types whose precision is unlimited (though it is much less useful in those cases). It is not specialized for types +whose precision can vary at compile time (such as `mpf_float`). + [endsect] [section:backendconc Backend Requirements] diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 16fa8e71..3aaada75 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -236,6 +236,9 @@ protected: } // namespace detail +struct gmp_int; +struct gmp_rational; + template struct gmp_float : public detail::gmp_float_imp { @@ -244,6 +247,37 @@ struct gmp_float : public detail::gmp_float_imp mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } gmp_float(const gmp_float& o) : detail::gmp_float_imp(o) {} + template + gmp_float(const gmp_float& o) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_set(this->m_data, o.data()); + } + gmp_float(const gmp_int& o) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_set_z(this->data(), o.data()); + } + gmp_float(const gmp_rational& o) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_set_q(this->data(), o.data()); + } + gmp_float(mpf_t val) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_set(this->m_data, val); + } + gmp_float(mpz_t val) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_set_z(this->m_data, val); + } + gmp_float(mpq_t val) + { + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_set_q(this->m_data, val); + } #ifndef BOOST_NO_RVALUE_REFERENCES gmp_float(gmp_float&& o) : detail::gmp_float_imp(o) {} #endif @@ -259,6 +293,37 @@ struct gmp_float : public detail::gmp_float_imp return *this; } #endif + template + gmp_float& operator=(const gmp_float& o) + { + mpf_set(this->m_data, o.data()); + return *this; + } + gmp_float& operator=(const gmp_int& o) + { + mpf_set_z(this->data(), o.data()); + return *this; + } + gmp_float& operator=(const gmp_rational& o) + { + mpf_set_q(this->data(), o.data()); + return *this; + } + gmp_float& operator=(const mpf_t& val) + { + mpf_set(this->m_data, val); + return *this; + } + gmp_float& operator=(const mpz_t& val) + { + mpf_set_z(this->m_data, val); + return *this; + } + gmp_float& operator=(const mpq_t& val) + { + mpf_set_q(this->m_data, val); + return *this; + } template gmp_float& operator=(const V& v) { @@ -278,14 +343,37 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } + gmp_float(mpf_t val) + { + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_set(this->m_data, val); + } + gmp_float(mpz_t val) + { + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_set_z(this->m_data, val); + } + gmp_float(mpq_t val) + { + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_set_q(this->m_data, val); + } gmp_float(const gmp_float& o) : detail::gmp_float_imp<0>(o) {} + template + gmp_float(const gmp_float& o) + { + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_set(this->m_data, o.data()); + } #ifndef BOOST_NO_RVALUE_REFERENCES gmp_float(gmp_float&& o) : detail::gmp_float_imp<0>(o) {} #endif - gmp_float(const gmp_float& o, unsigned digits10) + gmp_float(const gmp_int& o); + gmp_float(const gmp_rational& o); + gmp_float(const gmp_float& o, unsigned digits10) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - *this = o; + mpf_set(this->m_data, o.data()); } gmp_float& operator=(const gmp_float& o) @@ -300,6 +388,29 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> return *this; } #endif + template + gmp_float& operator=(const gmp_float& o) + { + mpf_set(this->m_data, o.data()); + return *this; + } + gmp_float& operator=(const gmp_int& o); + gmp_float& operator=(const gmp_rational& o); + gmp_float& operator=(const mpf_t& val) + { + mpf_set(this->m_data, val); + return *this; + } + gmp_float& operator=(const mpz_t& val) + { + mpf_set_z(this->m_data, val); + return *this; + } + gmp_float& operator=(const mpq_t& val) + { + mpf_set_q(this->m_data, val); + return *this; + } template gmp_float& operator=(const V& v) { @@ -702,9 +813,9 @@ inline void eval_frexp(gmp_float& result, const gmp_float& v struct gmp_int { - typedef mpl::list signed_types; + typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list real_types; gmp_int() { @@ -714,6 +825,27 @@ struct gmp_int { mpz_init_set(m_data, o.m_data); } + gmp_int(mpf_t val) + { + mpz_init(this->m_data); + mpz_set_f(this->m_data, val); + } + gmp_int(mpz_t val) + { + mpz_init_set(this->m_data, val); + } + gmp_int(mpq_t val) + { + mpz_init(this->m_data); + mpz_set_q(this->m_data, val); + } + template + gmp_int(const gmp_float& o) + { + mpz_init(this->m_data); + mpz_set_f(this->m_data, o.data()); + } + gmp_int(const gmp_rational& o); gmp_int& operator = (const gmp_int& o) { mpz_set(m_data, o.m_data); @@ -812,6 +944,28 @@ struct gmp_int mpz_set_str(m_data, s, 10); return *this; } + gmp_int& operator=(const mpf_t& val) + { + mpz_set_f(this->m_data, val); + return *this; + } + gmp_int& operator=(const mpz_t& val) + { + mpz_set(this->m_data, val); + return *this; + } + gmp_int& operator=(const mpq_t& val) + { + mpz_set_q(this->m_data, val); + return *this; + } + template + gmp_int& operator=(const gmp_float& o) + { + mpz_set_f(this->m_data, o.data()); + return *this; + } + gmp_int& operator=(const gmp_rational& o); void swap(gmp_int& o) { mpz_swap(m_data, o.m_data); @@ -1176,6 +1330,21 @@ struct gmp_rational mpq_init(m_data); mpq_set(m_data, o.m_data); } + gmp_rational(const gmp_int& o) + { + mpq_init(m_data); + mpq_set_z(m_data, o.data()); + } + gmp_rational(mpq_t o) + { + mpq_init(m_data); + mpq_set(m_data, o); + } + gmp_rational(mpz_t o) + { + mpq_init(m_data); + mpq_set_z(m_data, o); + } gmp_rational& operator = (const gmp_rational& o) { mpq_set(m_data, o.m_data); @@ -1276,6 +1445,21 @@ struct gmp_rational mpq_set_str(m_data, s, 10); return *this; } + gmp_rational& operator=(const gmp_int& o) + { + mpq_set_z(m_data, o.data()); + return *this; + } + gmp_rational& operator=(const mpq_t& o) + { + mpq_set(m_data, o); + return *this; + } + gmp_rational& operator=(const mpz_t& o) + { + mpq_set_z(m_data, o); + return *this; + } void swap(gmp_rational& o) { mpq_swap(m_data, o.m_data); @@ -1324,6 +1508,17 @@ protected: mpq_t m_data; }; +inline mp_number numerator(const mp_number& val) +{ + const __mpz_struct* pz = (mpq_numref(val.backend().data())); + return mp_number((mpz_t&)pz); +} +inline mp_number denominator(const mp_number& val) +{ + const __mpz_struct* pz = mpq_denref(val.backend().data()); + return mp_number((mpz_t&)pz); +} + inline void add(gmp_rational& t, const gmp_rational& o) { mpq_add(t.data(), t.data(), o.data()); @@ -1389,6 +1584,41 @@ inline void eval_abs(gmp_rational& result, const gmp_rational& val) mpq_abs(result.data(), val.data()); } +// +// Some member functions that are dependent upon previous code go here: +// +inline gmp_float<0>::gmp_float(const gmp_int& o) +{ + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_set_z(this->data(), o.data()); +} +inline gmp_float<0>::gmp_float(const gmp_rational& o) +{ + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_set_q(this->data(), o.data()); +} +inline gmp_float<0>& gmp_float<0>::operator=(const gmp_int& o) +{ + mpf_set_z(this->data(), o.data()); + return *this; +} +inline gmp_float<0>& gmp_float<0>::operator=(const gmp_rational& o) +{ + mpf_set_q(this->data(), o.data()); + return *this; +} +inline gmp_int::gmp_int(const gmp_rational& o) +{ + mpz_init(this->m_data); + mpz_set_q(this->m_data, o.data()); +} +inline gmp_int& gmp_int::operator=(const gmp_rational& o) +{ + mpz_set_q(this->m_data, o.data()); + return *this; +} + + template<> struct number_category : public mpl::int_{}; template<> @@ -1608,6 +1838,56 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +template<> +class numeric_limits +{ + typedef boost::multiprecision::mpq_rational number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return (min)(); } + // Digits are unbounded, use zero for now: + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + #ifdef BOOST_NO_NOEXCEPT # undef noexcept #endif diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 3ca21f55..5a9aebc2 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -43,6 +43,11 @@ public: m_backend.precision(digits10); m_backend = canonical_value(v); } + template + mp_number(const mp_number& val, typename enable_if >::type* dummy1 = 0) + { + m_backend = val.backend(); + } template mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* dummy1 = 0) @@ -69,6 +74,22 @@ public: return *this; } + template + typename enable_if, mpl::not_, is_same, is_convertible > > >, mp_number& >::type + operator=(const V& v) + { + m_backend = v; + return *this; + } + + template + typename enable_if, mp_number& >::type + operator=(const mp_number& v) + { + m_backend = v.backend(); + return *this; + } + template mp_number(const detail::mp_exp& e) { From 8d23cca8cb01e791792b5f2dea3ba81bb922d235 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 2 Nov 2011 17:15:46 +0000 Subject: [PATCH 051/256] Add mpfr inter-conversions. Fix numerator/denominator for rational types. [SVN r75277] --- include/boost/multiprecision/gmp.hpp | 10 +- include/boost/multiprecision/mpfr.hpp | 169 ++++++++++++++++++++++++++ 2 files changed, 175 insertions(+), 4 deletions(-) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 3aaada75..c0390c06 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1510,13 +1510,15 @@ protected: inline mp_number numerator(const mp_number& val) { - const __mpz_struct* pz = (mpq_numref(val.backend().data())); - return mp_number((mpz_t&)pz); + mp_number result; + mpz_set(result.backend().data(), (mpq_numref(val.backend().data()))); + return result; } inline mp_number denominator(const mp_number& val) { - const __mpz_struct* pz = mpq_denref(val.backend().data()); - return mp_number((mpz_t&)pz); + mp_number result; + mpz_set(result.backend().data(), (mpq_denref(val.backend().data()))); + return result; } inline void add(gmp_rational& t, const gmp_rational& o) diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index bf478e42..47b20140 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -7,6 +7,7 @@ #define BOOST_MATH_BN_MPFR_HPP #include +#include #include #include #include @@ -244,6 +245,48 @@ struct mpfr_float_backend : public detail::mpfr_float_imp #ifndef BOOST_NO_RVALUE_REFERENCES mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp(o) {} #endif + template + mpfr_float_backend(const mpfr_float_backend& val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set(this->m_data, val.data(), GMP_RNDN); + } + template + mpfr_float_backend(const gmp_float& val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set_f(this->m_data, val.data(), GMP_RNDN); + } + mpfr_float_backend(const gmp_int& val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set_z(this->m_data, val.data(), GMP_RNDN); + } + mpfr_float_backend(const gmp_rational& val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set_q(this->m_data, val.data(), GMP_RNDN); + } + mpfr_float_backend(mpfr_t val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set(this->m_data, val, GMP_RNDN); + } + mpfr_float_backend(mpf_t val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set_f(this->m_data, val, GMP_RNDN); + } + mpfr_float_backend(mpz_t val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set_z(this->m_data, val, GMP_RNDN); + } + mpfr_float_backend(mpq_t val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set_q(this->m_data, val, GMP_RNDN); + } mpfr_float_backend& operator=(const mpfr_float_backend& o) { *static_cast*>(this) = static_cast const&>(o); @@ -262,6 +305,48 @@ struct mpfr_float_backend : public detail::mpfr_float_imp *static_cast*>(this) = v; return *this; } + mpfr_float_backend& operator=(const mpfr_t& val) + { + mpfr_set(this->m_data, val, GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const mpf_t& val) + { + mpfr_set_f(this->m_data, val, GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const mpz_t& val) + { + mpfr_set_z(this->m_data, val, GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const mpq_t& val) + { + mpfr_set_q(this->m_data, val, GMP_RNDN); + return *this; + } + template + mpfr_float_backend& operator=(const mpfr_float_backend& val) + { + mpfr_set(this->m_data, val.data(), GMP_RNDN); + return *this; + } + template + mpfr_float_backend& operator=(const gmp_float& val) + { + mpfr_set_f(this->m_data, val.data(), GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const gmp_int& val) + { + mpfr_set_z(this->m_data, val.data(), GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const gmp_rational& val) + { + mpfr_set_q(this->m_data, val.data(), GMP_RNDN); + return *this; + } }; template <> @@ -275,6 +360,26 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> { mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); } + mpfr_float_backend(mpfr_t val) + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_set(this->m_data, val, GMP_RNDN); + } + mpfr_float_backend(mpf_t val) + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_set_f(this->m_data, val, GMP_RNDN); + } + mpfr_float_backend(mpz_t val) + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_set_z(this->m_data, val, GMP_RNDN); + } + mpfr_float_backend(mpq_t val) + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_set_q(this->m_data, val, GMP_RNDN); + } mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp<0>(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp<0>(o) {} @@ -284,6 +389,28 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); *this = o; } + template + mpfr_float_backend(const mpfr_float_backend& val) + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_set(this->m_data, val.data(), GMP_RNDN); + } + template + mpfr_float_backend(const gmp_float& val) + { + mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_set_f(this->m_data, val.data(), GMP_RNDN); + } + mpfr_float_backend(const gmp_int& val) + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_set_z(this->m_data, val.data(), GMP_RNDN); + } + mpfr_float_backend(const gmp_rational& val) + { + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_set_q(this->m_data, val.data(), GMP_RNDN); + } mpfr_float_backend& operator=(const mpfr_float_backend& o) { @@ -303,6 +430,48 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> *static_cast*>(this) = v; return *this; } + mpfr_float_backend& operator=(const mpfr_t& val) + { + mpfr_set(this->m_data, val, GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const mpf_t& val) + { + mpfr_set_f(this->m_data, val, GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const mpz_t& val) + { + mpfr_set_z(this->m_data, val, GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const mpq_t& val) + { + mpfr_set_q(this->m_data, val, GMP_RNDN); + return *this; + } + template + mpfr_float_backend& operator=(const mpfr_float_backend& val) + { + mpfr_set(this->m_data, val.data(), GMP_RNDN); + return *this; + } + template + mpfr_float_backend& operator=(const gmp_float& val) + { + mpfr_set_f(this->m_data, val.data(), GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const gmp_int& val) + { + mpfr_set_z(this->m_data, val.data(), GMP_RNDN); + return *this; + } + mpfr_float_backend& operator=(const gmp_rational& val) + { + mpfr_set_q(this->m_data, val.data(), GMP_RNDN); + return *this; + } static unsigned default_precision() { return get_default_precision(); From 1c6577b5a65caef7d661249f8d6f008d01391bed Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 2 Nov 2011 18:15:00 +0000 Subject: [PATCH 052/256] Add conversion tests and update docs. [SVN r75279] --- doc/multiprecision.qbk | 43 ++++++++--- test/Jamfile.v2 | 13 ++++ test/test_gmp_conversions.cpp | 131 +++++++++++++++++++++++++++++++++ test/test_mpfr_conversions.cpp | 104 ++++++++++++++++++++++++++ 4 files changed, 280 insertions(+), 11 deletions(-) create mode 100644 test/test_gmp_conversions.cpp create mode 100644 test/test_mpfr_conversions.cpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 87ebc540..bab92aa3 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -115,7 +115,7 @@ mpf_float_500, mpf_float_1000 provide arithmetic types at 50, 100, 500 and 1000 respectively. The typedef mpf_float provides a variable precision type whose precision can be controlled via the `mp_number`'s member functions. -[note This type only provides standard library and numeric_limits support when the precision is fixed at compile time.] +[note This type only provides standard library and `numeric_limits` support when the precision is fixed at compile time.] As well as the usual conversions from arithmetic and string types, instances of `mp_number >` are copy constructible and assignable from: @@ -149,27 +149,36 @@ It's also possible to access the underlying `mpf_t` via the data() member functi namespace boost{ namespace multiprecision{ template - class mpfr_float; + class mpfr_float_backend; - typedef mp_number > mpfr_float_50; - typedef mp_number > mpfr_float_100; - typedef mp_number > mpfr_float_500; - typedef mp_number > mpfr_float_1000; - typedef mp_number > mpfr_float; + typedef mp_number > mpfr_float_50; + typedef mp_number > mpfr_float_100; + typedef mp_number > mpfr_float_500; + typedef mp_number > mpfr_float_1000; + typedef mp_number > mpfr_float; }} // namespaces -The `mpfr_float` backend is used in conjunction with `mp_number`: It acts as a thin wrapper around the MPFR `mpfr_t` +The `mpfr_float_backend` type is used in conjunction with `mp_number`: It acts as a thin wrapper around the MPFR `mpfr_t` to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. -Type `mpfr_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or +Type `mpfr_float_backend` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or at variable precision by setting the template argument to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpfr_float provides a variable precision type whose precision can be controlled via the `mp_number`'s member functions. -[note This type only provides numeric_limits support when the precision is fixed at compile time.] +[note This type only provides `numeric_limits` support when the precision is fixed at compile time.] + +As well as the usual conversions from arithmetic and string types, instances of `mp_number >` are +copy constructible and assignable from: + +* The GMP native types `mpf_t`, `mpz_t`, `mpq_t`. +* The MPFR native type `mpfr_t`. +* The `mp_number` wrappers around those types: `mp_number >`, `mp_number >`, `mp_number`, `mp_number`. + +It's also possible to access the underlying `mpf_t` via the data() member function of `gmp_float`. [h5 MPFR example:] @@ -186,6 +195,10 @@ respectively. The typedef mpfr_float provides a variable precision type whose p std::cout << std::numeric_limits::digits << std::endl; std::cout << log(b) << std::endl; // print log(2) + // Access the underlying data: + mpfr_t r; + mpfr_set(r, b.backend().data()); + [h4 mp_float] namespace boost{ namespace multiprecision{ @@ -206,7 +219,7 @@ Type `mp_float` can be used at fixed precision by specifying a non-zero `Digits1 The typedefs mp_float_50 and mp_float_100 provide arithmetic types at 50 and 100 decimal digits precision respectively. -There is full standard library and numeric_limits support available for this type. +There is full standard library and `numeric_limits` support available for this type. [h5 mp_float example:] @@ -305,6 +318,9 @@ It's also possible to access the underlying `mpq_t` via the data() member functi int compare(const mp_number& o)const; template typename enable_if, int>::type compare(const V& o)const; + // Access to the underlying implementation: + Backend& backend(); + const Backend& backend()const; }; // iostream support: @@ -408,6 +424,11 @@ Returns: * A value greater that 0 for *this > other * Zero for *this == other + Backend& backend(); + const Backend& backend()const; + +Returns the underlying backend instance used by *this. + [h4 Iostream Support] template diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index e2da4d0d..889804ca 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -426,3 +426,16 @@ run test_atan.cpp mpfr TEST_MPFR_50 [ check-target-builds ../config//has_mpfr : : no ] : test_atan_mpfr_50 ; + +run test_gmp_conversions.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] ; + +run test_mpfr_conversions.cpp gmp mpfr + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_mpfr : : no ] ; + diff --git a/test/test_gmp_conversions.cpp b/test/test_gmp_conversions.cpp new file mode 100644 index 00000000..a2e30a7f --- /dev/null +++ b/test/test_gmp_conversions.cpp @@ -0,0 +1,131 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include +#include "test.hpp" + +#include + +int main() +{ + using namespace boost::multiprecision; + // + // Test interconversions between GMP supported backends: + // + mpf_t mpf; + mpz_t mpz; + mpq_t mpq; + mpf_init2(mpf, 100); + mpf_set_ui(mpf, 2u); + mpz_init(mpz); + mpz_set_ui(mpz, 2u); + mpq_init(mpq); + mpq_set_ui(mpq, 2u, 1u); + + BOOST_TEST(mpf_float(mpf) == 2); + BOOST_TEST(mpf_float_50(mpf) == 2); + BOOST_TEST(mpf_float(mpz) == 2); + BOOST_TEST(mpf_float_50(mpz) == 2); + BOOST_TEST(mpf_float(mpq) == 2); + BOOST_TEST(mpf_float_50(mpq) == 2); + + mpf_float f0; + mpf_float_50 f50; + f0 = mpf; + BOOST_TEST(f0 == 2); + f0 = 0; + f0 = mpz; + BOOST_TEST(f0 == 2); + f0 = 0; + f0 = mpq; + BOOST_TEST(f0 == 2); + + f50 = mpf; + BOOST_TEST(f50 == 2); + f50 = 0; + f50 = mpz; + BOOST_TEST(f50 == 2); + f50 = 0; + f50 = mpq; + BOOST_TEST(f50 == 2); + + f50 = 4; + f0 = f50; + BOOST_TEST(f0 == 4); + f0 = 3; + f50 = f0; + BOOST_TEST(f50 == 3); + f50 = 4; + BOOST_TEST(mpf_float(f50) == 4); + BOOST_TEST(mpf_float_50(f0) == 3); + + mpz_int iz(2); + mpq_rational rat(2); + f50 = iz; + BOOST_TEST(f50 == 2); + f0 = iz; + BOOST_TEST(f0 == 2); + BOOST_TEST(mpf_float(iz) == 2); + BOOST_TEST(mpf_float_50(iz) == 2); + BOOST_TEST(mpf_float(rat) == 2); + BOOST_TEST(mpf_float_50(rat) == 2); + + BOOST_TEST(mpz_int(mpf) == 2); + BOOST_TEST(mpz_int(mpz) == 2); + BOOST_TEST(mpz_int(mpq) == 2); + iz = 3; + iz = mpf; + BOOST_TEST(iz == 2); + iz = 3; + iz = mpz; + BOOST_TEST(iz == 2); + iz = 4; + iz = mpq; + BOOST_TEST(iz == 2); + f0 = 2; + f50 = 2; + BOOST_TEST(mpz_int(f0) == 2); + BOOST_TEST(mpz_int(f50) == 2); + rat = 2; + BOOST_TEST(mpz_int(rat) == 2); + iz = 3; + iz = f0; + BOOST_TEST(iz == 2); + iz = 3; + iz = f50; + BOOST_TEST(iz == 2); + iz = 3; + iz = rat; + BOOST_TEST(iz == 2); + + BOOST_TEST(mpq_rational(mpz) == 2); + BOOST_TEST(mpq_rational(mpq) == 2); + BOOST_TEST(mpq_rational(iz) == 2); + rat = 3; + rat = mpz; + BOOST_TEST(rat == 2); + rat = 3; + rat = mpq; + BOOST_TEST(rat == 2); + rat = 3; + rat = iz; + BOOST_TEST(rat == 2); + + iz = numerator(rat); + BOOST_TEST(iz == 2); + iz = denominator(rat); + BOOST_TEST(iz == 1); + + return boost::report_errors(); +} + + + diff --git a/test/test_mpfr_conversions.cpp b/test/test_mpfr_conversions.cpp new file mode 100644 index 00000000..3340697d --- /dev/null +++ b/test/test_mpfr_conversions.cpp @@ -0,0 +1,104 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include +#include "test.hpp" + +#include +#include + +int main() +{ + using namespace boost::multiprecision; + // + // Test interconversions between GMP supported backends: + // + mpf_t mpf; + mpz_t mpz; + mpq_t mpq; + mpfr_t mpfr; + mpf_init2(mpf, 100); + mpf_set_ui(mpf, 2u); + mpz_init(mpz); + mpz_set_ui(mpz, 2u); + mpq_init(mpq); + mpq_set_ui(mpq, 2u, 1u); + mpfr_init(mpfr); + mpfr_set_ui(mpfr, 2u, GMP_RNDN); + + BOOST_TEST(mpfr_float(mpf) == 2); + BOOST_TEST(mpfr_float_50(mpf) == 2); + BOOST_TEST(mpfr_float(mpz) == 2); + BOOST_TEST(mpfr_float_50(mpz) == 2); + BOOST_TEST(mpfr_float(mpq) == 2); + BOOST_TEST(mpfr_float_50(mpq) == 2); + BOOST_TEST(mpfr_float(mpfr) == 2); + BOOST_TEST(mpfr_float_50(mpfr) == 2); + + mpfr_float f0; + mpfr_float_50 f50; + f0 = mpf; + BOOST_TEST(f0 == 2); + f0 = 0; + f0 = mpz; + BOOST_TEST(f0 == 2); + f0 = 0; + f0 = mpq; + BOOST_TEST(f0 == 2); + f0 = mpfr; + BOOST_TEST(f0 == 2); + + f50 = mpf; + BOOST_TEST(f50 == 2); + f50 = 0; + f50 = mpz; + BOOST_TEST(f50 == 2); + f50 = 0; + f50 = mpq; + BOOST_TEST(f50 == 2); + f50 = mpfr; + BOOST_TEST(f50 == 2); + + f50 = 4; + f0 = f50; + BOOST_TEST(f0 == 4); + f0 = 3; + f50 = f0; + BOOST_TEST(f50 == 3); + f50 = 4; + BOOST_TEST(mpfr_float(f50) == 4); + BOOST_TEST(mpfr_float_50(f0) == 3); + + mpz_int iz(2); + mpq_rational rat(2); + mpf_float gf(2); + f50 = 3; + f50 = iz; + BOOST_TEST(f50 == 2); + f50 = 3; + f0 = iz; + BOOST_TEST(f0 == 2); + f50 = 3; + f0 = gf; + BOOST_TEST(f0 == 2); + BOOST_TEST(mpfr_float(iz) == 2); + BOOST_TEST(mpfr_float_50(iz) == 2); + BOOST_TEST(mpfr_float(rat) == 2); + BOOST_TEST(mpfr_float_50(rat) == 2); + BOOST_TEST(mpfr_float(gf) == 2); + BOOST_TEST(mpfr_float_50(gf) == 2); + + + return boost::report_errors(); +} + + + From 6e009f3029dc15fc68594c09a762ce323e51c368 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 3 Nov 2011 11:06:05 +0000 Subject: [PATCH 053/256] Fix gcc warnings and errors. Update docs. [SVN r75284] --- doc/multiprecision.qbk | 76 +- example/gmp_snips.cpp | 88 ++ example/mp_float_snips.cpp | 28 + example/mpfr_snips.cpp | 41 + include/boost/multiprecision/gmp.hpp | 74 +- include/boost/multiprecision/mp_float.hpp | 10 +- include/boost/multiprecision/mpfr.hpp | 2 +- test/Jamfile.v2 | 13 + test/test_cos.cpp | 2 +- test/test_pow.cpp | 1000 ++++++++++----------- test/test_sin.cpp | 2 +- 11 files changed, 731 insertions(+), 605 deletions(-) create mode 100644 example/gmp_snips.cpp create mode 100644 example/mp_float_snips.cpp create mode 100644 example/mpfr_snips.cpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index bab92aa3..a585f353 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -18,6 +18,10 @@ [last-revision $Date: 2011-07-08 18:51:46 +0100 (Fri, 08 Jul 2011) $] ] +[import ../example/gmp_snips.cpp] +[import ../example/mpfr_snips.cpp] +[import ../example/mp_float_snips.cpp] + [section:intro Introduction] The Multiprecision library comes in two distinct parts: an expression template enabled front end `mp_number` @@ -63,19 +67,7 @@ It's also possible to access the underlying `mpz_t` via the data() member functi [h5 Example:] - #include - - boost::multiprecision::mpz_int v = 1; - - // Do some arithmetic: - for(unsigned i = 1; i <= 1000; ++i) - v *= i; - - std::cout << i << std::endl; // prints 1000! - - // Access the underlying representation: - mpz_t z; - mpz_int(z, v.backend().data()); +[mpz_eg] [endsect] @@ -127,22 +119,7 @@ It's also possible to access the underlying `mpf_t` via the data() member functi [h5 GMP example:] - #include - - // Operations at variable precision and limited standard library support: - boost::multiprecision::gmp_float a = 2; - boost::multiprecision::gmp_float::default_precision(1000); - std::cout << boost::multiprecision::gmp_float::default_precision() << std::endl; - std::cout << sqrt(a) << std::endl; // print root-2 - - // Operations at fixed precision and full standard library support: - boost::multiprecision::mpf_float_100 b = 2; - std::cout << std::numeric_limits::digits << std::endl; - std::cout << log(b) << std::endl; // print log(2) - - // Access the underlying representation: - mpf_t f; - mpf_init(f, a.backend().data()); +[mpf_eg] [h4 mpfr_float] @@ -182,22 +159,7 @@ It's also possible to access the underlying `mpf_t` via the data() member functi [h5 MPFR example:] - #include - - // Operations at variable precision and no numeric_limits support: - boost::multiprecision::gmp_float a = 2; - boost::multiprecision::gmp_float::default_precision(1000); - std::cout << boost::multiprecision::gmp_float::default_precision() << std::endl; - std::cout << sqrt(a) << std::endl; // print root-2 - - // Operations at fixed precision and full numeric_limits support: - boost::multiprecision::mpfr_float_100 b = 2; - std::cout << std::numeric_limits::digits << std::endl; - std::cout << log(b) << std::endl; // print log(2) - - // Access the underlying data: - mpfr_t r; - mpfr_set(r, b.backend().data()); +[mpfr_eg] [h4 mp_float] @@ -223,12 +185,7 @@ There is full standard library and `numeric_limits` support available for this t [h5 mp_float example:] - #include - - // Operations at fixed precision and full numeric_limits support: - boost::multiprecision::mp_float_100 b = 2; - std::cout << std::numeric_limits::digits << std::endl; - std::cout << log(b) << std::endl; // print log(2) +[mp_float_eg] [endsect] @@ -271,22 +228,7 @@ It's also possible to access the underlying `mpq_t` via the data() member functi [h5 Example:] - #include - - boost::multiprecision::mpq_rational v = 1; - - // Do some arithmetic: - for(unsigned i = 1; i <= 1000; ++i) - v *= i; - v /= 10; - - std::cout << i << std::endl; // prints 1000! / 10 - std::cout << numerator(i) << std::endl; - std::cout << denominator(i) << std::endl; - - // Access the underlying data: - mpq_t q; - mpq_init(q, i.backend().data()); +[mpq_eg] [endsect] diff --git a/example/gmp_snips.cpp b/example/gmp_snips.cpp new file mode 100644 index 00000000..cf763fa2 --- /dev/null +++ b/example/gmp_snips.cpp @@ -0,0 +1,88 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include + +void t1() +{ + //[mpz_eg + //=#include + + using namespace boost::multiprecision; + + mpz_int v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + + std::cout << v << std::endl; // prints 1000! + + // Access the underlying representation: + mpz_t z; + mpz_init(z); + mpz_set(z, v.backend().data()); + //] +} + +void t2() +{ + //[mpf_eg + //=#include + + using namespace boost::multiprecision; + + // Operations at variable precision and limited standard library support: + mpf_float a = 2; + mpf_float::default_precision(1000); + std::cout << mpf_float::default_precision() << std::endl; + std::cout << sqrt(a) << std::endl; // print root-2 + + // Operations at fixed precision and full standard library support: + mpf_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; + std::cout << log(b) << std::endl; // print log(2) + + // Access the underlying representation: + mpf_t f; + mpf_init(f); + mpf_set(f, a.backend().data()); + //] +} + +void t3() +{ + //[mpq_eg + //=#include + + using namespace boost::multiprecision; + + mpq_rational v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + v /= 10; + + std::cout << v << std::endl; // prints 1000! / 10 + std::cout << numerator(v) << std::endl; + std::cout << denominator(v) << std::endl; + + // Access the underlying data: + mpq_t q; + mpq_init(q); + mpq_set(q, v.backend().data()); + //] +} + +int main() +{ + t1(); + t2(); + t3(); + return 0; +} + diff --git a/example/mp_float_snips.cpp b/example/mp_float_snips.cpp new file mode 100644 index 00000000..0b2df0d0 --- /dev/null +++ b/example/mp_float_snips.cpp @@ -0,0 +1,28 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include + +void t1() +{ + //[mp_float_eg + //=#include + + using namespace boost::multiprecision; + + // Operations at fixed precision and full numeric_limits support: + mp_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; + std::cout << log(b) << std::endl; // print log(2) + //] +} + +int main() +{ + t1(); + return 0; +} + diff --git a/example/mpfr_snips.cpp b/example/mpfr_snips.cpp new file mode 100644 index 00000000..3eaf6f31 --- /dev/null +++ b/example/mpfr_snips.cpp @@ -0,0 +1,41 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include + +void t1() +{ + //[mpfr_eg + //=#include + + using namespace boost::multiprecision; + + // Operations at variable precision and no numeric_limits support: + mpfr_float a = 2; + mpfr_float::default_precision(1000); + std::cout << mpfr_float::default_precision() << std::endl; + std::cout << sqrt(a) << std::endl; // print root-2 + + // Operations at fixed precision and full numeric_limits support: + mpfr_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; + std::cout << log(b) << std::endl; // print log(2) + + // Access the underlying data: + mpfr_t r; + mpfr_init(r); + mpfr_set(r, b.backend().data(), GMP_RNDN); + //] +} + +int main() +{ + t1(); + return 0; +} + + + diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index c0390c06..13ac14c3 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -248,21 +248,9 @@ struct gmp_float : public detail::gmp_float_imp } gmp_float(const gmp_float& o) : detail::gmp_float_imp(o) {} template - gmp_float(const gmp_float& o) - { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - mpf_set(this->m_data, o.data()); - } - gmp_float(const gmp_int& o) - { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - mpf_set_z(this->data(), o.data()); - } - gmp_float(const gmp_rational& o) - { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - mpf_set_q(this->data(), o.data()); - } + gmp_float(const gmp_float& o); + gmp_float(const gmp_int& o); + gmp_float(const gmp_rational& o); gmp_float(mpf_t val) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); @@ -294,21 +282,9 @@ struct gmp_float : public detail::gmp_float_imp } #endif template - gmp_float& operator=(const gmp_float& o) - { - mpf_set(this->m_data, o.data()); - return *this; - } - gmp_float& operator=(const gmp_int& o) - { - mpf_set_z(this->data(), o.data()); - return *this; - } - gmp_float& operator=(const gmp_rational& o) - { - mpf_set_q(this->data(), o.data()); - return *this; - } + gmp_float& operator=(const gmp_float& o); + gmp_float& operator=(const gmp_int& o); + gmp_float& operator=(const gmp_rational& o); gmp_float& operator=(const mpf_t& val) { mpf_set(this->m_data, val); @@ -1589,6 +1565,44 @@ inline void eval_abs(gmp_rational& result, const gmp_rational& val) // // Some member functions that are dependent upon previous code go here: // +template +template +inline gmp_float::gmp_float(const gmp_float& o) +{ + mpf_init2(this->m_data, ((Digits10 + 1) * 1000L) / 301L); + mpf_set(this->m_data, o.data()); +} +template +inline gmp_float::gmp_float(const gmp_int& o) +{ + mpf_init2(this->m_data, ((Digits10 + 1) * 1000L) / 301L); + mpf_set_z(this->data(), o.data()); +} +template +inline gmp_float::gmp_float(const gmp_rational& o) +{ + mpf_init2(this->m_data, ((Digits10 + 1) * 1000L) / 301L); + mpf_set_q(this->data(), o.data()); +} +template +template +inline gmp_float& gmp_float::operator=(const gmp_float& o) +{ + mpf_set(this->m_data, o.data()); + return *this; +} +template +inline gmp_float& gmp_float::operator=(const gmp_int& o) +{ + mpf_set_z(this->data(), o.data()); + return *this; +} +template +inline gmp_float& gmp_float::operator=(const gmp_rational& o) +{ + mpf_set_q(this->data(), o.data()); + return *this; +} inline gmp_float<0>::gmp_float(const gmp_int& o) { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp index df932965..e75ed494 100644 --- a/include/boost/multiprecision/mp_float.hpp +++ b/include/boost/multiprecision/mp_float.hpp @@ -1173,19 +1173,19 @@ mp_float& mp_float::calculate_sqrt(void) // http://www.jjj.de/pibook/pibook.html // http://www.amazon.com/exec/obidos/tg/detail/-/3540665722/qid=1035535482/sr=8-7/ref=sr_8_7/104-3357872-6059916?v=glance&n=507846 - static const boost::int32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); + static const boost::uint32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); - for(boost::int32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= static_cast(2)) + for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= 2u) { // Adjust precision of the terms. - precision(static_cast(digits * static_cast(2))); - vi.precision(static_cast(digits * static_cast(2))); + precision(digits * 2); + vi.precision(digits * 2); // Next iteration of vi mp_float t(*this); t *= vi; t.negate(); - t.mul_unsigned_long_long(2); + t.mul_unsigned_long_long(2u); t += one(); t *= vi; vi += t; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 47b20140..667f0ea1 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -398,7 +398,7 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> template mpfr_float_backend(const gmp_float& val) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpfr_set_f(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_int& val) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 889804ca..9ee8b530 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -439,3 +439,16 @@ run test_mpfr_conversions.cpp gmp mpfr : # requirements [ check-target-builds ../config//has_mpfr : : no ] ; +run ../example/gmp_snips.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] ; + +run ../example/mpfr_snips.cpp mpfr + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_mpfr : : no ] ; + +run ../example/mp_float_snips.cpp ; diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 2e5dcf48..53374292 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -166,7 +166,7 @@ void test() max_err = err; } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 5000000000L); + BOOST_TEST(max_err < 5000000000ULL); static const boost::array near_one = {{ diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 38181241..a8ba5495 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -46,506 +46,506 @@ void test() { static const boost::array, 500> data = {{ - { static_cast("9.85291419463953934609889984130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.41670862661703722551465034484863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66781019918879108354226292713799369912745098619466567318041467361236175866573114777000418440761829061824953361563557580935951901405814080757565313129904800947783606850513184296612628910656615168927761935861462770335134108408073175949783551491164949747086136599355880600420490275164555515512645668845e4202") }, - { static_cast("1.65291435510970359246130101382732391357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.93652894786225093781695250072516500949859619140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14852190138491736562279120519668390081141778746743826681517181158751264571350304943298501284647564489716027476004029804110782430201351750715968215799574772058637701195873519618784612525011353325208230847515250406858209757415407239793739704829281917272032288615255140733409015874140869835291148547238") }, - { static_cast("2.95673953882856110908505797851830720901489257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.30915509717990971694234758615493774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.16137091634529046709182958669115589757019722367818747705232600776240821857227718551873067599347313641575272826830417174591636547915061517391300131065931465784194067711359196329143298499263726513131614582697830908424187934868152998838921216586737465291051289708299364409624364999366486746226077050764e249") }, - { static_cast("6.08581487679821513288314083212071636808104813098907470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.65778516457987279864028096199035644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.27056224622668410282266686919173718609676411389459024877282902746284033954589536288634973757568176464096389580016576960309487231057438455595655805167665817497028295657665023126747065443986739792258870082022889306909488139458069146748438042701949551909468708242176394539901613782225328586614222105675e-3229") }, - { static_cast("2.72264614486854572561469467473216354846954345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.86954434555903360043460637029966164845973253250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99366682241962146368589809577120011723198308450433185299366732500677873637460155970547267099719914327909694930518383012498797681761846242526638144261306834523078708261122471803832490341687603813336927181436827534082878781252668704774445437548691251936499670077735883150461534069270846997649139259014e-1") }, - { static_cast("1.15866069758449596882599053060403093695640563964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.91253262757665787319183436920866370201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.46868982488456565751167443881314840659743514173491612010770748877346398177489343237604160804413931931718223750314831998907846386274396179552445359933868165880372381338724806279781831953896898649659594755834925976964179275873971118494605322798850925802574178528777014182338769959249415096934378557388e-1") }, - { static_cast("4.72825938314130529761314392089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.22893132739781236750786774791777133941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.47245157077269889091085696140795527282280334677569169487973419233796250189843816560261965111196061138868370890204338231535198008079068304184762140493830719955323588998399173073261634891767823614143691840392792367527470000847416054709559319143615840412839768396194451923527439592939735228732869467965e69") }, - { static_cast("1.29556572255334176588803529739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.81521083299418428680382930906489491462707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.91729899451736210436889587963352494969987265352294254442114149825297350300933403119961677078224257818567229354512108221647637427508041941647518586565006416113534560289731038664091154857692367872604020422463457596747145816854139701847749519264660326361171185139298113322096978245544144264234481020815e7") }, - { static_cast("1.74305909145137593441177159547805786132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.55727459709495003048473904527781996876001358032226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12324923143821767715038683964417533829057341785931080679952341815408539775130405061465897612861320390765996927155081774925717154208894105154455487856335006846587865128269477586014136390788140643457017602926503892493119037260205017744346004538379559837051387829449807650507431889923695496342461088404") }, - { static_cast("5.94723096329786358182900585234165191650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.47960584914021491681479503199625469278544187545776367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00101355895664265703253905800820834352012946978175213925289823900262226487475877307647753894219794796436589570196875943062842928843129407133278574235943906905626144071246066853301987332156463703818534415183682692042219695734377740067313312425523058170350486981674302932951851973390826740834796342180") }, - { static_cast("1.68908811949766600121487086783034214931831229478120803833007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.31583500510190560817136429250240325927734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.06485337562137503941405427253471002412719863672407294570575625371322654317127374055512455786988091092329605000808871766177184698431732837248355728401235010135527651826220232715652024742668291949645619992685612328535253252695622896976648954823150769316159100729259724133493553742448044299816541989455e-423") }, - { static_cast("4.72470471679805708838453814912838879536138847470283508300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.93150097545414496380544733256101608276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.36613880262643802742756290736395850668317512466586871167321608424137867570108690626258507320043808302565319397131444616166042735793688809613906106252620462557968555895414582976985576875374557668514391264049547180886976991031038592004458693177738810104222966751846844587127740341157319952915743398285e-103") }, - { static_cast("5.42042332941097132481544917936844285577535629272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.51174849138805500459170616522897034883499145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.77171703127754502681310204125715941650801721154976863870699221072355335125966565182666925044598746890911836338141033359039531496488403405876863230608143768785806156629534985369811294999635059473513624761915818310578096052710097713441725036078711101258417410421951107958524860020565804089659046743943e-1") }, - { static_cast("1.03814929656497190180175493878778070211410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.02775539432865528274851918411059159552678465843200683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99908769642175788386137778958539300137602918424410284952085874015336769726750047569734816766197409755257562872230833189101650544474710424482558254479079319860825174137124403380959665595507587367668848404286717760343524270837960434045414179621713212480893218438355518348995643697164109731552178914851e-1") }, - { static_cast("3.82635641630229656584560871124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.04696645144304778529686927868169732391834259033203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02545504718938094372102791727911930176506035001600018053644429991055918696319033730794852043021666923875675436795843500904336366408589219201909169612259476814126333181168932741070039124737361896932592045285182764869916877379718622220890978571031406624988992549594836404906978120992311725853941493659") }, - { static_cast("1.33672486906479148771609288814943283796310424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.20701621203230615719803608953952789306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.82608741435940656086722594561546646099634760918110959565977761208896418216166536561903222226214939613599640463597249764023513875896636280664458251642404729724932181291845871312202787897768372355186920789243514016890287945724482698867187289280837997988218972650355222505584789955736058952829050123955e-11") }, - { static_cast("7.88803854908014727698173373937606811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.46278561425722486433187441434711217880249023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72840141730863663391876877521764355960382145920572562742914162972208384723706307292705275033115082012368548682595775882643927894139786449383322664316773126131611883398659050539189893838100041408464889082404113404032943316931275847874983317572290683797208861989532362102600980996636385789799495020849e4") }, - { static_cast("6.02908445011699427595885936170816421508789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.73159824509963122807221225230023264884948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06403097260563050081855800637166449495962164712719263330810086375883439970326530663445685346228862337912240907582664457942174627433334293660419014781254710335542481599007896808711916825623070383641755045318205803207383228319360990374222920104547227487223738392731388028498147565624523546346417715655") }, - { static_cast("5.21882079270016063787807070184499025344848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.00797343550563134328967862529680132865905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.36552325485277806964373331313098838333278330423455390715861973295876349888773267892681165876113176797510574847645252615081953879524429911159719101193921387688552351634752458416166446355778230365755243829643708299147847893065939954861919388676503519612640610354931769525373202729617723199328630093636e-1") }, - { static_cast("6.21172003041995424155174987390637397766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.60919435020819194006019142717534009534574579447507858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000157241706535645559625081132898066253320364132991765749046567536915342813631920409642832019004224458248512335711478395060579077427182783938451114029622700384959716532968625901664719629811957905865676402174328291417935322613778738659214041802729741480722967793087943757739011593472415850478420639") }, - { static_cast("8.93348943116835901567807098899720585905015468597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.15322293979125788609962910413742065429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.91021563983953636397848520840523223624643742835964326188016961937573012460753870407293657436708430593126320103796954182972032017026192445957161066771807675200884423939605981304732630092257312925408813941089831976477439943114677798839623996214029155361569909503935179401196449493080818512569086682097e-1267") }, - { static_cast("5.55105519395504379644989967346191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.20561294990389011871911861817352473735809326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11282177288045201072507504088709286277978249266318510332909847928909226338145185595245293917086320817076726850666066198249106037631163063795831697507293260413136608221812252367908447186422344164553977681855896096040438700902356349275031836676568495994537852124264298684105398360497193752327260914137e1") }, - { static_cast("2.64139377644600310476863391784263512818142771720886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.78537344498752810831310178230069141136482357978820800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99179632299559171314926709030763809736309139005374052895886931807671532458904052556141342139885810036321222015645710865315806166952058325774560966552187527103940189373824279065702873017246336399071137612269219545181070886990906061668084063703411460250321467244169857420435253409159030432098292621067e-1") }, - { static_cast("1.04207364225271594477817416191101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.49096324860676521240065994788892567157745361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00881927761618177965011845644574187803759898330801723609976606642566910129111150781463974721119043760111173993259232795682413324213317011846206782754096089290427628991647487342082014619699610677423897602146820644840945077548746946762791624180147374361784328110343084702444523109612274014821745626982") }, - { static_cast("3.31519320566263809429985442989163857419043779373168945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.69130350190431280252290058285780105507001280784606933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99544126695324189746630737456946723361046661345027805407888971023026631339988056392642825478722792254481831582440796961181158845762815786131168245934078509438401554967954057934563178474479427510608187860234090448388699710858468168174057416883471915845617321874136073232354461932587707630236256378020e-1") }, - { static_cast("1.88337177923367888807137937590141518739983439445495605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.32540268863411711208755150437355041503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75229630554212330195665922771148699451829771147200356624805857657236782065140481467338634818457146889580617522654929450001033313425457042558128784684181381335537144806647956114444609625124141647264003246426211941949785732284342909061255617831919446477154897012961652269654460432165747451828975060062e-1612") }, - { static_cast("3.95459290525709050712066527921706438064575195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.67791671378427392183514677004296800078009255230426788330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99997515679857005761440503886095927815406391244413835291624899797364615653895949902813000744851723242602512239539568754651988070279277456656779917196036522934849059282355864096704432345340316634144618927930200708582994637711792811242475638942101629267185320507818308058050356385241284795438747530570e-1") }, - { static_cast("4.18765706320910169324633898213505744934082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.16291806714740175721090054139494895935058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.21448401185251170746394861880464242649255630391558005989017991140563422704674077045117022763467561974222030061746655113958910240758539727055748249625892285904547489203480154655618632992990390332430221914382681227157928848406067945057161854616129785541408035327136685741399621377579757754012545382969e1") }, - { static_cast("1.28834086985551640736069600734481355175375938415527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.50705923255961032891647732867568265646696090698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.76932835372685523370171735287063726416767225734834615849134547109660778793799398169080725972094573408844765674179657286895933198717192952354877012591779343412877647689917686841315165602494901218010719779271020694334581849406783713948998204010537229621398578990055098138781426451663477493080600789821e-1") }, - { static_cast("2.09720612044679288743509459891356527805328369140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.58040082173553630973117378744063898921012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.37769288971832154015429547694831033608424622845142547611771987181607855769209591840464089347717993026475816138178319620101164703046235086673631394869476080594839931563796671833715053698127488579638544943331524253087769152813629459325853986427109398088052746438762088357925061124187186100435982047033e-1") }, - { static_cast("2.86348409095251425380765364359092473023338243365287780761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.66147340815298694138846258283592760562896728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.19957610695947876947018322120150143406142221469373757924519795345150006977773403730313023369079301615734601162566867121616810596830759956044509310651071485457850172811241087990683705383118703983140409701647142571470333867908682196499347683237058377349085352136214854181401946343510795949868835711429e-1") }, - { static_cast("1.43297873345568077638745307922363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41681240009364082165985165850941029930254444479942321777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016822776212044529668140515271000711944889104836686684000447554242511520504646895662976301872271981369559245931879055379226726537073846553544561947637792091890791964244339592472180091648456672557297620691698497967178088487062658421331764320606009571740080394934111049676474128724114098218934644280") }, - { static_cast("3.60098653144944158555063040694221854209899902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.03376339210932499668160744477063417434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.25275538744154336055615419863736730746930928726962752118772852620054361808569416481449220736645770958820155429279907622983889720952174836443567087662689941130263300184594808723215176724531461369529244321399979413684112346655770810116945662086924599874483949305102682382993398648882273436739947930631e-1") }, - { static_cast("5.29540201171499924810703863187200113316066563129425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.56136148696097143417915731333778239786624908447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56082033932816309081231125453071826327896674917466727856568147854623107132514590973229074834141556000908164346345063684708226886531162257152516511661460364047957606893852284251293056880030888612998267350454535860387161852393199580592248818623376237183284153405740445167284591706260229351268548628924e-1") }, - { static_cast("1.44301800298425852986383688403293490409851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.14308392953894662376346236243307430413551628589630126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000261963485792416853927136569198682383793838454319729684734973539039182323306199235318171814360855994012568229358281529883676852371448365509202038288834881570383584403906835594533516647281713968932211752518665238323196577224701747937440185305151190908616249351775361542696295892178890063882257116") }, - { static_cast("6.22803809629584627372000937839402467943727970123291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.25094187232484732597015408828156068921089172363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.86658469541403998034943500870243069476823132486007751990824694615782893644279173776512596334159142603325455113617967643461939139102971978114976150505918018758878971981207590718138194009315889095960072548673588879789986017926322494375432269097377546556386620403909103214427884440798206932883636297352e-1") }, - { static_cast("9.85553619558515492826700210571289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.19375835372379413001908687874674797058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.69327012293708811121144971175263370083910101169553278058859848877086709080419562447585355719348842415619132355236627485649548952876411849102018675375354238273102815474095986357261970461229247085634624604985094330242448976955585994530902647027597520370418448678147789523361182103563378206595110636366e6") }, - { static_cast("3.58793922164308502070761974778179137501865625381469726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.91828844531360287462007363501470535993576049804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77635990889125108309690852819112724262223736693646969131631611067612444282401471024845889526676870050656945639578159737127915466435929600368572355785708484463627825178182883323088006398240693308602881027224033181200011330121428663774743869527395379215026638702157803494202819893449358544841576526785e-1") }, - { static_cast("4.96146848614257760345935821533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.36919182658175953015700088144512847065925598144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57915370211935194723362359441601671775858730114448762856923579370262681814508708674839371719677055754578289843591415190008400693094242195743768201495967775525358591358166609121796030602701836084062498854380733868656008519376928763241674707747769169741392588580100945268376807756367217092609019332523") }, - { static_cast("4.24495621335822494657116776828331694559892639517784118652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.41273133041338017079624478355981409549713134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.05650148888948869811331120941963319541414375806822687983830138205938420862200064078576598469877831249406211581526927963122105281131255004573845222711684347603254852806653766035434125383812586900316395999300527269121533046942253679078218107723668449508163238533047093749711627477323541829484653131292e-2") }, - { static_cast("4.48640427032238338142633438110351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.57545512531989570200255390552968037809478119015693664550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00002050314697607659431018359659361183713303212753613120902527904331498111603138394334757418054814218670389608976827498549914166555768752494414195237102560486571709642923543196007200071132086884670852209514113439317507321835737223329599950365222037362534859303381396326717532288233329927808913598785") }, - { static_cast("6.49749570902381674386560916900634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67233186866778105184039304731413722038269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.37780724079840208711014533649991541109470796504084314835156759344214993302863952807171583660778803863957191115559320339273255056520571556246744533838811694006166732957726755945662570959533321672076547914911635593118101608294069731654269467619949055336628326621660012876406202543146880009002104821553e6") }, - { static_cast("6.09674367112420512171411246526986360549926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57044841435982965565515412365016345574986189603805541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995606813099499267634389464438683850041060806908350269346321155672893761130577244819124593817984249660934044363638948086248241297434338993626965911693249278796597285537898160766381999495115463474497883772569241592760426493272254012575287314033420480717621539078495596903806489817283498263020744184e-1") }, - { static_cast("7.57503455130639213876975190942175686359405517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.25659927896368083096931278497265793703263625502586364746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99967576340235983529748322865757677186118554170023614050204881657758768441183672920424294568610952334609747551908015545068832481235294176033402023954402315837530793201944548984799957607361928025651266738940647431602585783131780321746876553060340085541214977820888348264644079307051095179685852079945e-1") }, - { static_cast("7.23094922542264449683013793901409371756017208099365234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.59957635240683257102367598179171181982383131980895996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98843860017333489092110505899347130551976013147438321970353479326257793437223848104429707854561661175450570835038515201752789245106905767296900600611401551754756721658819816241278926439311942572630487380703760937536160330693843537976099522621025621041857521661138411993182809798954282325807746896512e-1") }, - { static_cast("2.22347866336470469832420349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.67574314969844628819828358246013522148132324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.45597650920700334896440864288586774552136744768533970151074149218272851829624764505239431335468131476208480181217427109189696065749387968903474055278714181692867425657254225967806378137696550459591101296481511902742572646395696145586249150843548288850238158312747067673295059110101209836587291678717e1") }, - { static_cast("1.61969754204121987178899289006039907690137624740600585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.98433649539913870007978857756825163960456848144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77061455335439039778043359172467746025200146785630273407892949860314031306268447375871357416922980298986141833641561954857127992214135487677696097641048847861017455164355255934271546462888696419881919311556223441720520985938735112636787538160901409982382930452852563601752376961873325250302513132303e-1") }, - { static_cast("1.10785802837759378425275258450710680335760116577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18652221207551884308087353225857896177330985665321350097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99946575396258084502018839446238846584110705812867877643924485585779113197512036317728340100285410504878437697437320927763146715271389949541429089452281046460116468251613835907291530307473134875676645637754443536935426771393775580503285493873005924313301673550096584687732186248324962291699197441007e-1") }, - { static_cast("4.00900856150933880290426758463695477985311299562454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.51532437768501453796091832382231245901493821293115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981169291887424157759932262067246066753044936086128253970315838989839817149914187581608688565806547274970455207936904774502513857569845689591879527047150474914557088218340646463900082270385606124499095033110795779754466447281328092278318076549095302554108789079991538595665731579745334006426859960e-1") }, - { static_cast("1.19021350263737038868705475636033952469006180763244628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.68290288542928294646117137745022773742675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.04852417540620009944566041453719467211390230149498516011819535440728246929538100576552383464173953438153608848998091884909329517100819960017904887302473398843345408874822800579053111675353115760245493436345787702548498655314405766561270926511701674435330529881522800583133171192665005622617374333010e-67") }, - { static_cast("3.24276265467208501549166432820214822640991769731044769287109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.45408954542178808083674468321078165899962186813354492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.94386254687686946963322383552185492075977337531973213930838015838274376322044860137122810561067818353529641305366066211688682157075369267213623551618566522232634253178245524174116891287095569137130501326353904791232655125453161983083517758472031555434930112729665552915867163490039363051308443099856e-1") }, - { static_cast("6.15810616566200508259498747065663337707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.16615056291079111083774932922096922993659973144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.84767212442093730437806115126470445228033445461780019945996712538430276008229376762120777978183512697217805509135802054380845495119030204478634136438561790634012659775242132306345870420149133737299397362388964674004273429551607587049902912378874846355087545159480302396357641147726629312485985544367e-1") }, - { static_cast("4.98639800075090606696903705596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.77610720170316863455745731714685575752810109406709671020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001921243238237193183827489311170506446717993399056537282384027062526108337893488664380391849139457202726524784919352515463921911589077429652463880766791641171380378763553978844617450998857121720620679684506344842701809891676387117033562056914974016308650056416678855410514380179891286420315463385") }, - { static_cast("1.39829478131476389535237103700637817382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43499530583138337064275091847775911446660757064819335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00024882796344591385461239880845260384691776851307067376321212831043330119768926261152601978474535337925904198175128520020096443925386965960197623129024285407478015708065567539370247164906581380771634920314388644089046167410745320267558557473972499677590220735439622489041126850128421653983634543138") }, - { static_cast("5.53823542724402595460730935883475467562675476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.89513503025480504506072865211763200932182371616363525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99887300842861835164017418113429559930804468019069798605482088141983665217815479503166341320807290829070352700865762573462007338287440579346738382811838185553843038382146930720875234411175792603385681200743384496310942148612050283753172718455515566946341846284557394785250850393323918755270713010620e-1") }, - { static_cast("1.41121361373833846300840377807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.98754187978802221437035768758505582809448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.39052029796505087174799036572060834290339669936231503015871931355721722463161747207749930806516332386763841930651054884331973674982367750538370231486178766251016302345689298357523496706436693633349722362506875465430935461687316908940273568043577086452494403668755303085058972545116855832701160169233e5") }, - { static_cast("2.89668134268413328424353336831842398169101215898990631103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.15865345460021584855780929501634091138839721679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.28205556117411408113652874564375329933423424935399606070975188165013549346043442272013469493594176280229509402715241333520310808546934629428072668916547032154136142048364995378685732366063433675907163954131129548865718748066808278449447269502355535592014434886553141414017802588692926998785625006881e-1") }, - { static_cast("6.80370452266789652639999985694885253906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.55585667546695538554502036276971921324729919433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02281231404359612151527353897929180348478744328820333025332541070807332704656155540376559985312945856024293947964716753864592850899748540597581561259020876390111605898100116321942106603048757052249826147692127068934907088939143183343054183800841834132202006495897859489577613318023621649632711626369") }, - { static_cast("4.62504113144313121035178237860918670776300132274627685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.52163427846739888679716834474220377160236239433288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98482342652643471998471847918276729621115291527655407478347392440646810723671728307137559792389469491363165496772939188998042052370839020230988405367662374022902953797332354477989367493245470167443057076807839721016298819277997067517609396627866901281229526562169916899579412733467953808761281274902e-1") }, - { static_cast("4.50822932159575771038362290710210800170898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06839470475542444583005874392256373539566993713378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00407725957483558818239220892424948692876561612077691060007144800995480352451729509031292920021843587131856132257906499443064130817064638818765366250131236399994854411601609832821870319397908684888708832193783247348840517389795509100198832759307607589651546707827898198086014636944156848700425178047") }, - { static_cast("2.97403319008989266980513832550059305503964424133300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.86474774881857552344399664434604346752166748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05563040619657475424023632617553458144221260647471757349470769600263284068856263065983919485584722356671096360406091314847188039821446085937501687228128412834520625095444394738723676139779119999762553228944695777339743845083698817002881418226410778165865331625883646946752393289471811888730325566680e-1") }, - { static_cast("2.38325080784211650097859092056751251220703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.66302465811868707690202029425563523545861244201660156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00914434741735633383477956146627482536171366958054332840551181784200344603582400731522959980543848217816660950109678863255860871237640121402147335369863635255623422637578873942180607947824451388135749116333642343887949089848641558138185462358132315292011403950110303162349396320495083970574820485984") }, - { static_cast("1.71423190201370800878066802397370338439941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.22776453453089651191021403064951300621032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.41715373496456388539324810858409600194977863833255435782643057881295200486872481370727134110261522844531904021514609023835218872201273620577170073750362820523072032985530745444647038907617563505404059737966630343043214665700476103118304785807103469358517871674775523305518419709923690374745267779192") }, - { static_cast("2.24202183750390773639082908630371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.88606137138923326407313751928995770867913961410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00356204426464651318381353366766656275190463831503522239513652128295092897680949875433153708401966246976000272332294389517143726474038495934684353460128449357504408039179941027444904612222505017810534008770086553370099204575810832664720970035523251219105643922854038752127247330051903230606763080754") }, - { static_cast("6.68254924276967532392745852121151983737945556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.37453434835288135218434035778045654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.23884289615444976971058885660437787480627352137562427420631247881049437291942148842029267007686370097695430731343288589752635360722257432905786816202418979845289181427172830309982121527477449228884669859681103900842455539708329644639171581286590973017189366587396069226010533102477610964537380565038e-6") }, - { static_cast("7.08735989603501259637141629355028271675109863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.93170577274373727050260640680789947509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.22994581178880428430588361219833883540463488675474104323353907511764504539625188516288826354093370529125373667749527512470360034116957923611728143647053700596011110669882224710437210488847861184277118067955181730553186100384807049379684590737156995709498402541295775367296456895644229479101255193586e-8") }, - { static_cast("2.32014942323958166525699198246002197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44810310131192876426098337105941027402877807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.41156739924941071144222113991630683194620198146427652318978812945951687592217439817665385168004660248141475796965481088709894832854582569992290051260681221672250427616673943995167609515610097891251991676291118804434690243303234426750763059520585143335380969303297852505455054177640936866538646738978") }, - { static_cast("5.53282998141260031843557953834533691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.84121602625912601070012897253036499023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.58373770974866315239700400474362989477383658235694014601763955308120813900734144800418886820772189374330395186134971653113939250757648994415649668842051891937875262317539557069792723676293862948593761228728392700591159530165592758768030540795599964339740660316188438257430600649159884119157424191581e1437") }, - { static_cast("1.85718777739859418943524360656738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22760764621501818278162532216413183050462976098060607910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000634214788464577855189457084479231510812185767194037441581727975561469887723538341241488476848396809344125019310357146729535769441778199276860378224675705997700022744347653159656289098028240954603207536444605258988369343538458427994444681579339406242882282677673848923548267602318784029338545299") }, - { static_cast("2.26509465497761368624196620658040046691894531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.03762510179397637877229954028734937310218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.03290580019042823129797947218377400320349309579887379648069219653044521496312022139633395975447973076157177628011296170468228189168841156259900536323684747126636993787966799478738521263932697630770091216225209592893137197359045523997671979624680066252774430678393930591603773849047796785558663064178") }, - { static_cast("3.00476295219746433740048985328030539676547050476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.02409308153823985776398330926895141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.14136997855533491337740509094908136487500777275671775674006769752964040924959289897651192452522290539206601428332553008348132654735739834724305690164751538343877568881013821199733121651153278576916744941958595422652696891642421407236449964345890318648778746090208231400439749942969896805715062234843e-203") }, - { static_cast("9.70798896667321969289332628250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44245980458260469880826804001117125153541564941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04162803810086699019811359451605453492327199203637588333443087016790236547076001612983024940969264195708947484110311219661303765376669460085704437741732903824466154100734799424439147057676949660911617676769474501254927589549167841876728171722481679869607753266592648983928705022178056753619502736504") }, - { static_cast("4.66389224589813756668976729713449458358809351921081542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.41598683219974930125317769125103950500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.53382042139791789590459891074340066702060120383660058981707324170432197791546635984529280576877432127625617337120709804544743161881268886942872653531280982977576133511801284796672543413476367564502976743587063883733930418435751755822485352709171649159924126024328941448624940766411726855902924670549e-37") }, - { static_cast("3.59808415633625783280891141657775733619928359985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.89106070923696201191432919586077332496643066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11957324795765157901703029938063916662894000731995996196921601505519523032651152137148283098242267387419838627536448762986353433569901640648734154364900058234967711292575255307936095926242393050569604396410567616604312846123878721000606629431359673384574670669906697802557686478096291498804903738631e-1") }, - { static_cast("8.29546112810515936034083672723227209644392132759094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.58324466499312066503080131951719522476196289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.86659658288740565122000959721270284304946720479579271651550103638161205367495371607443353257219806398111103943515458202894485596325631197266478165244814107159447017816960534609382148164169335790367935277372018345236031109996214855557877416239874683021494253068006756484498147004540748744410389570461e-11") }, - { static_cast("8.63334593891555979183749514049850404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53080323158965114771490334533154964447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.35233729973545869852697007160756749812975339497681040282999017995032382608550729201580422775220111291799102420635253476809267746237352183450521514570985348430714476644398637263228584608977432119909919809882847191196859131282077491115028311403034792745466352775458252803189617423439193439791933123479e-2") }, - { static_cast("4.96802530016260956990947761369170621037483215332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.02519683572433439877613636781461536884307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.79130174131074712614824707606461473196424333567411409743609116414751816130489331857231684597817414740294362613028844768413127008896909984819847802879905875872491406317289520166024819440680050252863090346899246519659384416734528764367429297819383807550500609868490474715994290375146313368129823880737e-1") }, - { static_cast("1.24702033554851823282660916447639465332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.71070595755497723185201142115374750574119389057159423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00004316789477874277620263489613820769653924396429221925198065527832144152145855155330213971456389989525794479500052652310504867952437063466242776820964127214900733034755428153463014611408545155223418498794841462940237893200540509678171081868776875097700422657888013910264387140255547155547751726595") }, - { static_cast("8.14130989781463318757936953318221640074625611305236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.47674360353472167162180994637310504913330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63199095965818056903859668356569903606584619352293451010588563431807635376986054905897873784109387681218165026966672415089273447045333707684197569751029547891913778442699838628510300753325723159251992398807517774034918042863197611983714480066975243968618918488213538490759809651966026386013669113012e-3") }, - { static_cast("9.48316047562641761814461460744496434926986694335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.87318705342295180847622670938790179206989705562591552734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986164907695049446699147999970503354260553000953839878275159076458261755428730763560216631851642537174133195419034054495238529976374508256949441111167727864128507860277033299044051865971449902820004978297018651282279654117307535005136847959876138249613275046667240315151303933181873427450473536424e-1") }, - { static_cast("6.72439622398628665533859560810014954768121242523193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.25371945127648842799317208118736743927001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74287216286274945633266572714083322962101975717027023442493643122162512912802620909159732325958549010615659395950026917825109006470507725724883444926417334797999132724229966674370457592343778072797597317430071335665732334697884217471229705559230148495486170835726019893708870900510074940623722192258e-24") }, - { static_cast("2.30442309265876887366175651550292968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.10077615004599603520940576117936871014535427093505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00006298512189780533426621327292231284630240394286315128868176668180396156679505765231684868863847590833570938788465357619602169740491681317033999860409913654411707265663879954547321897801703570651803262843624273611588702980486012373865440788314427239276089286730821085936329475836740228791493079509") }, - { static_cast("5.67608898683707252530439291149377822875976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.07683021912563162914011627435684204101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.67068196412266823466861212116241893055807436102731155140415238019317223182255528301301262470626159261154640191153443230288813541880287940859066915763205210708548641176944414442344483827370453800486623574896474317715521007693847769491979549043149389934860292588058888100428936865217794693086764880012e458") }, - { static_cast("2.81337246606456581503152847290039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.76344844070871521052312758115476754028350114822387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00084899099059737772913859365556118027581054407285954758329055990529529377511066455820790791091871502993434775634942750452313898053395589443975739777882392931281046995883876066279980856281434476038018812014179817821871586805042023183706725376177160577170143175806815414662475357051404586743878413781") }, - { static_cast("3.34983523837648674431610729129715764429420232772827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20852082105692326674528658259077928960323333740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74653990782509243550836183201075823369159155519692846798314436930630346572690178245424014813711682670551067058906680367646181984756645025448347553573937829174199564122446362713993201587207768412845129431576839987405545810458778769778400165994012026984577717831659943902405397254874487260228557294263e-1") }, - { static_cast("1.17365003664101777758332900702953338623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.78053489600925995972602322581224143505096435546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.05893503437891990856263354837986270829833882333366791751057714437977103925035624856886729661425365010268503431934637684230477655839134293793513971115798026793973457123299079643692631311303731259185411381265912635677151301389868547814580071368806352687212447229499485791883769033890017890187866384697") }, - { static_cast("6.35473191480731591582298278808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("8.15332646258649447190691716969013214111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.39785593586175436998336047723152633390674636830187065022507274459265394076960202352145842758484227495355755965560336623550772098175134115092702375767668586879200691996181864401350579269221993542974245130770033239773182375358583651870979382999043883377805409110023459275245515025837447884289450716490e473") }, - { static_cast("1.20953010742292040959000587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.81528620999166889760090271010994911193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.36836082188852137389175804388074236213762814888145199618983165421342520318145120542719392963440700570926350816427711317556249274733873103430368341047528787950522843632555485443202700694068291761260828423023146529348899979040923182831897371799138328552240635790031739904574931369069808189107688786563") }, - { static_cast("5.02826864423656406943852203994538285769522190093994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.49148497614115050149963259684682270744815468788146972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99886724184991506266822294352662914256716265702852450641368490227402118731911016182228523518485801671330942930187800995820804252420406598640376923122551567922827288661396415930336442260706727249870079649992447995120206397679683465259479974096061438201134430443691684817587750638183840953282722156209e-1") }, - { static_cast("1.77623605706485581789272343300467582594137638807296752929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.16881559843790408872998831668610364431515336036682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99216151571584206550599285631558723279674057106881165894202136106399680298454020164284514110193651012658901118782805914666290560642145072003861919887611842296547047036059520963486973019219177746829500434614825844519776793639037139709040279058532565912742721673028532604681375807832044191447365386410e-1") }, - { static_cast("5.44470752993507289829722139984369277954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.89424994358623844748022030382017533156613353639841079711914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000315551756552929413349733123431754994533967419962917545562731445729245526256276165331606875912022797791137395975129631042701829381104269734643785979371368397149024305719491289967486350643357572991392648348784068298353851347894101762457227438358667841811859357203913787202416700523836489423208926") }, - { static_cast("3.47952865539182312204502522945404052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.70647055379554400678099312926860875450074672698974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01003641035516199003729871729172100472722683758579980406598003587323081240911466133797745466321375213116846128724578817241014105529656120259049841543565831847323023771528373536119517374544673647922841984354734790648175557634969225996223997613913923117328699599574593399806697328078695200917124733876") }, - { static_cast("4.89683247131728754952817439516365993767976760864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.96528625490362656162875165666292787136626429855823516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989546369402488423594127072150976413227845609208465040224219805251052465526350038203035493184013561718362361567469358800995276604754108514280603768744650567983276404672018483263585666869718723877857972643772304671740644914409892158811218430582592069739462405196179208350796857344173822141379782399e-1") }, - { static_cast("1.46846575134083542901741736841358942911028861999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.13961295777929194628086406737565994262695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.25155431004176641664360564432608271749851863826540763464893400702786658931519008803678187122457752047812131114041410952546777155616546380522319343918668230249104290662019435519965989945104554644065424460926764956490748710036580200886547368376656130754697653950693222962392418484839778727280176131769e-7") }, - { static_cast("4.92258328635518438431972754187881946563720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.16701285749932963387021089829431730322539806365966796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99846424401823072211356827414998110501335375349159811161820098061831954942111055007312660415928636319873898347702590642507419097876493991759663677610295879480797600223758201686500279349159643821096880668703139199785910150322740521690695804135686666464835791331742866153491003010427701847514162106732e-1") }, - { static_cast("2.08891842024441984904115088284015655517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37451123552204679256760755379218608140945434570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.51853459491101499462028153198307960464036529321862426769066486207166171296494170498179583135034855145454026518293079000045567402865046530341818676848400774327944796661350087157800975247279219703171839848135584471839442165788564723636737356977396947188532339857132058951624239309379955278406455872013") }, - { static_cast("6.59693951898326247373915975913405418395996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.58390504285117244415159731829589873086661100387573242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016195756688330761491474273615136423552556614577036197755742996689336001512360595235890000441982158893267294826116899101351409093661584157256387065246323209052057870928088601548025462625595893993027794606583868972654751596093207938303600634384394989635869479864226583469214082919105133232859648980") }, - { static_cast("4.72190302282203920185565948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.36872614795644276242114756314549595117568969726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.36273289377674003549552956596428296006868194528902491172931330043916572933784595495824585583342079403134944318241053700848989680616524963231553615168899405338957973320487490472555612135391925458093520067531657179731576065041675903036737870428047782297012296101361469066116145701281560378942697624754") }, - { static_cast("4.82034977757478931038870317848932245397008955478668212890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.20114163951150231847420091213507475913502275943756103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98806768192609411674337267672424056960083232464271360229113542018960233572696008296128150338304172594110837781004501757127999427554595909914289685513812993265024374119615672800606621652602006481141937435665444874495693840170640030665928027259502446424921700891997624978473239252852217099622859393453e-1") }, - { static_cast("9.54197957425642506734675407642498612403869628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.34304142023469919031697372702183201909065246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99984326565139803772938990236401058117431661922045573846220380640349699832779123098058540753008622857674232899802697126593866411818203678224123515319186907350469596960547397261912465753250671926347546302198056587430826863955515669743258039245240360599418185587449465990312391796474083173534248199413e-1") }, - { static_cast("6.40960699263738433728576637804508209228515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.00816732049831557560537476092576980590820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.44157504422123306075307680246115279780269010737951173392922320903011026254261224810748434749033392788723902179648854339741924679540874536758451693815806813776859218948113244848659597589114467756894234559650445795659560796369660440795499707193716216403592941616722628011042403021580672267269382135734e182") }, - { static_cast("1.22311589009840382402671821182593703269958496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.10469349157712311976231589483177231159061193466186523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00004238976442526402787977257335501538186147626008780569692886964327726967250839556988250363044075945205489441982444641281650300897861533023502296756146804366735904879346020295258735438264424281840920414740589412010520817925020516062766522452589181209496869654998063536725728358771467633669371863258") }, - { static_cast("6.39291118430208007339388132095336914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.28391975830675164615968242287635803222656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.69505481296349945509651870173004703548467117826619443587513918127052944692060859604078331125022112009253571107992368448403956917792261351644585277417570509975725723863004283151424512684410008159602519982839123505049564570077423370661622862250195728714873045142974264003278199036815752137105673556433e4") }, - { static_cast("9.83190653233646116859745234251022338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.16849063361153184814611449837684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.25770980590636267172342833096299211879468172398651157530921609762966193936659345808702337762714296668889853763786019297633422123145533613492472992798929637639386760407400078511978818609469799050619387136981965857651597610392961103496543359101531210986834447630570812748220097342632073167798940478519e830") }, - { static_cast("5.47317500559057634745840914547443389892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.25569401906009264768826483305019792169332504272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.05154283217149739996322394073132732110285973177101672144476243536792403202554641841303821681674178605013975392578098758039213562899690576014988268448654777051869934823936115258309781471880324840875908371004233345043851515355481534420805940488435409518654838065662552503310797307929345306698760361427") }, - { static_cast("6.49123836382549113110940197657328099012374877929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.85020261717664669109950636993744410574436187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.50660946670306311914365279482095005173354041210571854577128244379583503141132158648667793122314902465794942399303782457347308120094047863238127874892080844189140303644281120192942849585627941033052970332875969503978268193734299765207776684899260119431935484734340685682552324678913617232469193989216e-1") }, - { static_cast("2.24692705476482810621891017532902878883760422468185424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.52982695718321792810456827282905578613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.90763013958916250310703922628537395346144248614383500040096138375431039104002049367585390738671354254176978486242291556216285278163895739264649656370403930009408842065500683071987767757954595210907449882232438368368764844630512751091553559176805208777768953085505825846870225770460080538105432353809e-17") }, - { static_cast("1.03776311938838771311566233634948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.67758461032731062689826728728803573176264762878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03459301282359622046275858130909175858605738103500377882461906122638713902728757596922241637837677972497613038491667511030599129584893938038824302224512570610802632172627579650514542361582967805126424931338365938119495726516045340017819117717607391845493489250022446019685368890472485823905828290701") }, - { static_cast("5.44463531752032992017120704986155033111572265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.08467925444702359527582302689552307128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09056011709343327076534816446309237286970058275834540830372719698670511928227959632093780315386474610345825780828956917908117330975173563693122316666283875774232598613235043753932040992980072681882395580571647274880789017536786697004043527146342091119566202577901703268215449281872604307112909919335e-264") }, - { static_cast("4.32141091390930114357615821063518524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.79962553627032728620349644188536331057548522949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07012654071632775332556853428357456635166481137753650401618414453228087751942869456669180112375507267782856652222749904765639096915852769878278766680206962666525967341796532563009425557062229126958039051450556007688280632610398536337196273409572525834486954342631282999563123455233960154445776600968") }, - { static_cast("8.85195395209329438657164246251340955495834350585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.32014972604017088997352402657270431518554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.71305713463862717236321613646893663926389070764619904563621824742856237889605485601780242185666715109642520925666586793175066523791156636682971412268154170045092095602942426637119803498838588967096817482914325839210531169438704998222940708453881877588305201012231120626503012557840854056737490425114e-25") }, - { static_cast("5.11800358239917845513955452219079234055243432521820068359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.53194625802088957300384208792820572853088378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.78675898815841251401603750577856756795950441245444722873452268896478608982683458941926503132911522781757532432483294128491039729829837206496101278313685758061174666050134299787052246310316361371623036791254936884792176693736621135978412809784428098496835040268753660201880757384305210529998116341854e-1") }, - { static_cast("2.32741466149031985682915646407309395726770162582397460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.38640739832896395418437851532189597492106258869171142578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99549497162550438458304414161333920701781715268855145062033883882900750111819551249273252859663946257284929221986573479403421187776431235203160677411657816941834327558315579342010850796902138914924928940560282841455433144115320935123004884062392612303227832917659972351800421646517607120651251528968e-1") }, - { static_cast("2.88820917341887019574642181396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.72679079374876875974109680100809782743453979492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04797427152199505899776613380207153019163891696040089708565511495563600355422445163531206665239877024907641710076156338867860992891601417074486301976244681251883409289427117509266966735400170413169626794460003914944960446253186507533452481416547111722260834345331494363350198444447590272333886931493") }, - { static_cast("9.11769074488846854364965111017227172851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.34287283617854882322717458009719848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.61412399451200792430940441597911814328017657658519351363425803166936981320098511499093754150499459010245435176020174953699548406222107608392288974835149178057255386825625780361600243592099112823611022187187648569904297395013151014275208089987059198137284635106672418842688183845527005332642735224166e1877") }, - { static_cast("2.99902079785064756833889987319707870483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.68497592645624978853480246954177346196956932544708251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001063692844088210456002419855074011148005470079145471634788112628295771788190807123424233524759763995207569368229563514564551401717941193555837507092120724642714186373549513618453183103215293207086254916107790393722326161402579919794484826396299503609272588338890824693538523484869461094064640920") }, - { static_cast("7.72854459904651157557964324951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.48978348521208037863461370875484135467559099197387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00610574384563796400321310101756992783528974702739913146260646865660943239706104030906315422031586966995536370399679280585793557349882649609015460449277306668457058524687099432479479161198093426061867258598346229732606275929747805949435342506588647203249401335413541148238532118555631296171613732580") }, - { static_cast("9.29770372877305817382875829935073852539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.35261872461758123759034688760038989130407571792602539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00037864179461996490975401602514900577512361928909810135170262283211442500106334885446423595314421485481346967556782507370070595069946883492382064486384013379235733594798086474310298773717536986583185147038897974675666723220012717870637206407697176312759927758943687773764377471241445265488722941855") }, - { static_cast("1.08593927041971596736402716487646102905273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.54205328509148672372353061632566095795482397079467773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00119232709184950657347355900529943667776581936561333029642844322931651851922987396688070423513516427393233449332830940932893802869470044377136541346608056612546712420915411514501773616973022311857494372432610405714927103499401270099666054931681878021711299630772502630342850129330691538468637467235") }, - { static_cast("6.08955210127030499279499053955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.93997641600216752522101160138845443725585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.18201219777662049133348544929685038145294798461233898669466368271726917449741209374562376908881805268589020897308399041338055306698995074087125055703556791502100679603522120055594862139867723186128435543540272128120797808148788656196331354569711892744404054200303870971480027638854018077003767037387e22") }, - { static_cast("4.17002058199641822966441395692527294158935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.27638775324770278722132099691322082435362972319126129150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000325050709508111108865304342178215954684414490544574201155545551225580135488259163273316494247157849444894518301320733204512003009459708444645141220074915996395890189435364804366091830247042355490183040883445209891891864651638351487974364904897430627412415757188029347485931227191708441175016047") }, - { static_cast("7.67550081598081896869234519442670716671273112297058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.09358860541564251178670019726268947124481201171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.33361058888703312937877266409714100834748582910004102998779521040115944440359724219966898465717158230452195981198500825979353396690326287544928081118745655488492150353523103453131904616559184005975246310430624687681784477200062656846973772093687820868635241069192671298954998139357716654945366635020e-2") }, - { static_cast("9.11928851435624994337558746337890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.77150273145831363419411275117454351857304573059082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.01072215443565297495212875757828431150173416786594077990011283253611684077171961857977658555772993227256701225998130851047810587496804030395055038866276482446366864045774522304245866613460132889356389785400787106849829332460233953000396006079677394660376277801825929937944079178448460996666434091599") }, - { static_cast("5.41420122645918127091135829687118530273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.89522592882503256809384462044931751734111458063125610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00007565289778675652984140979321399062757791371437603651125252179594586538728496280877795475718254343845999376499222253067347916841829323365254311918387151598991472092918535912843066893311920458448486904240767256448921472261918689220109607027673999114234655407258002618927723100761498362332050377153") }, - { static_cast("8.00879921885989665142346893844660371541976928710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.65125145484174709054059349000453948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.51542106881981491731489464208722559455080283729538316329978070693260585378415308395373558536702307332302792317627310748549719761801156867236663991267318247059438589418271824484275577584765219427298744283723772247523591169183694405713456066811755471408195734266771535080425449850856084868376311119689e-106") }, - { static_cast("1.09156997362350409730424871668219566345214843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.10878062686337663933500152779743075370788574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01957066747628902940966302510092960488528925253540221172663471275503400990771789589916604068584334436432589666410671717466013196522730609847023637947764642131621149159485396625786863911618319465245064605684158683676154002669412578226202367577007287146331656090836085181386754790207143710478024828107") }, - { static_cast("5.27981737437816178726279758848249912261962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.41970852096179633861083857482299208641052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.43686253241293502543031164235680564280493113934425702290586259672655229919415634458697404687915141160074152506872313697917935113169212018685900336128740210227144508079482606408290248099236632255964024354639101204012497824568760884660053718968331056137812934970479251589590682389747704367113989950745") }, - { static_cast("2.97632424685030514410755131393671035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.12458361916200374253094196319580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.69742603562041824153926447786929280716116286355510132564473072728789802885515779796188477871744149730979853211785348379587523589298115735526488355106077778856284664084128422453984824424076757383964141778964343798745285559893404942252682634909106936299245602255752362338032501973165524906979409622054e1344") }, - { static_cast("8.12277007629636675119400024414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.92673741168140821855558897368609905242919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.30484996489149406381687564563779425178418692009670007244171321324888859123491778857160269626310259110411696125879945417306210294026918965107428093516365217530286177050990880067424193779915234192484015646474192080157981645949288654940510168136275269591421630149209078542082633232345605476593203338075e29") }, - { static_cast("6.75063843580995381898901541717350482940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.02748489106749621435632491284195566549897193908691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00196404947416174365030420006016203648060565955934806957206111637856432455172895201651727892958586584412299635092294986305134023877029915464080887124975616815060819276759381700802994334432976763795102196206567937500407359464356440088544622676160266170981561234435498384331071158546292310523236254753") }, - { static_cast("3.50174444164054002612829208374023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.80282755451220007281154522615906898863613605499267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00819798888901128629632317940565742032581044787310510298394051237610722547925779466083057852335930819436022531750188258730486171674268778076637531078630844955462136795806889121317307097195981029957098770479755079052235805500969330960373439119072852284817639069793570751583988153638659438922106591664") }, - { static_cast("1.26564950853483537684951443225145339965820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.55352677703511933278261725188684749809908680617809295654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000394312365539989563625486331626137964273811834798695005780013495760538177217100805072673596190622159320905648378255454000218262505715454699578920413495174693604468418384665870032433868756106543653906692751058614669494849726609491390952522788637204327400613561970408136313418894648226391505731573") }, - { static_cast("2.15745882397261681817646206127392360940575599670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.37905683348865193416088459343882277607917785644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.64117851649613850769514625497977880278916078343037571542452910699608639199334716242087257033679813405503457913766626678856765747940796988239184619492044398845847330875248279377691256718144764352787323595310916665202454075432835782224634142882556904024349917556799442289975480861859420905292552431968e-1") }, - { static_cast("1.04145372167880889691105039673857390880584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.37802182325172850596572970971465110778808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.88526852493738132239113873166539203263138672058127955706951262195153797473038707601101237196070886256644090185553908945280688151557324839521372121066434881841798255953853902832020964805296391060444306684398308798244411237112095640393380398474592654522034844007881900667824504043884214270458892007901e-9") }, - { static_cast("3.07012551115110277066833077697083353996276855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.68879194147396471947786267264746129512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.27959056811329343392664000245431816256252125501370190635108304735068414726869009253945094404747463601079257760616120868020903017002340732110943618640264478113302579667971697324950504699622151612181100300886867598913337113652973737056690812163582367071363756081204514554722838161602803979904270771466e-1") }, - { static_cast("3.87855552747419096704106777906417846679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.68123953003118842275398492347449064254760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14414942990692656452341784125767590353064260907248467847740571016135049928321189261126610028098851785915087403250818786340815261171401002033061136458109120291157079359913768807250954139969052510045722307049663169894534742927788300920701107994896596920105547258658675585904959114220585301112702429345") }, - { static_cast("7.26004581866997872330315999533922877162694931030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.06413410745037140259228181093931198120117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.21086963011262781557962916039162488992600789192717542131434452153601149170623279185807445011140592247466432290015786700658875253434281122713288249913633617033214856219833669907164464033302015146556043425711342744639683355773156696931162767677537366527811567871143970446954952970890842842464186617910e-1") }, - { static_cast("4.11288422352877880427968193544074892997741699218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.51736412939929010690320865251123905181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.24565288563751822331299972603179488550349468370067144446751898852644002616709216207408151506565589257442807820798232055968358812640290558093447292295273379034573533601586226697268290915360691120466719143962043078879323957769794563236709847407432551615445562560818926972156677354022231138620495943375e-4") }, - { static_cast("3.83413786726422607898712158203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.00384576840691153165607829578220844268798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.70586881100241909365086281828106615321437784717557599878404325717613404517722842063862151116432421295729131945352592123500947115034261116251456345076603582494211858526398683989440066160175940760838173788310914276938532934671434380694237696835717084352874743706871899256563045584501545107582617433574e27") }, - { static_cast("1.45287638810286156079709662947152537526562809944152832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.12685751933480298196330049442792642366839572787284851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99976308406201382296511195677454028213966050559386949061001176100458674306535766658075727649858861936143578824990999294178518894376297296437371242014351633015801209221765213206140971726863151455918302666401442029878834264175629251102478211077868646609228275473662440136138981614575523961652841689231e-1") }, - { static_cast("1.06060778784217379921983592794276773929595947265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.66538555043448722320365007476539176423102617263793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99991775850777769594805464682102392095766388724998006545282885743063065509840288039071353911521871815954556155694843177720505424196812072094678443706799908575637539974472545844157811962504294140635183658965312242832638263593804028788156476482121148602286677141129409544764834011834242854688050032534e-1") }, - { static_cast("5.88086377090030459208191970787993341218680143356323242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.28950414823927278495929726886970456689596176147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97772228399557115917897595553123200059617745525398631036747902716221825268917059130877148214691312502174434355597848183024102187672671321353149180399633699090375168044589993636218162674313714376215322688591337150653523844732601246528148296899452660176207080310884559549441104143585753370139662688312e-1") }, - { static_cast("1.82088437442942030486392468446865677833557128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.18170819309718790101129681779923430440248921513557434082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000130754723378331003328108523077660890480086159377400421770916129060299296337133805493313328717117334983973342138421022906982702012383037259191961910456959250943670084798790257349266900179703918444391347033677458675178576414635996649806132816647233201959427396166295868642002149628537093670669003") }, - { static_cast("1.81790864213692415773948596324771642684936523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.11112317505943991591266239993274211883544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.16716616089260899158634927691311476940264689424270830038830803482761816779192664467113169986590716888439242048069862364270415910055880132349242712046577768880635878273030333655678293456983297487516817843334720432032181949191565525929129951842591644277698817197191950932369312197425519306770280944742e1") }, - { static_cast("3.11682213641562033444643020629882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.94098588905476396315741283160605235025286674499511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03790338780611240821364394096187689009151442337723127625883997000112224823851501188946812750320424873330954741819494803462494193607811995436113951374495986635400485180461374008937550605117989616259238001766980179462154007176099462553721961527948038831707776585902099492828100272597482214965326918683") }, - { static_cast("1.39087864126595343872150323250025394372642040252685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.30102723808126441440435883123427629470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.14022877396721831842223346046335424470246823884137406233750859143164782910052273120452909159294424816461360814736670369100321052363875210113861850087708357854957657313512898387152990311841659387594066789695419982631901574195401313785030478101180804642923588217360853722001240454059693137169086797197e-1") }, - { static_cast("2.70245297975474845853308125676051076879957690834999084472656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.27192418381639527069637551903724670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66297652134236153231549630311782646457435806521553869102045806271290140313907532572617601088189845177879703715370369231877915346831429034626669722739550299919960838955152823532091259662956246982857242736145549200749997723311019597549168518852317671248226020048798842889139150504890040937192852486477e-1266") }, - { static_cast("1.24917144681230411151773296296596527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15140916555233019380466430447995662689208984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.38260599513773427745927397841453042338248242456988517458147773019568704658853879515960004076402277283883489795069346406439823839016514254977654510204974986928186171239215823810556312920621087546486393810430469767985081698483192169492133075210737954383435371131440185644678524564816434215238704654516e24") }, - { static_cast("3.11836231019214392290450632572174072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.07745884054014173791813391289906576275825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18191130436089764539875276066824383600066278177797976268794231640866698789531115667856789828761726794355968881132857750694814866048339710833375629295256557712732385065863487440162509225900966765667937759713986800012768351783498265785505802770202831716066805035224331887004845557896771449008224340669") }, - { static_cast("1.49079206164313831095569184981286525726318359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.42373605503094040614087134599685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.27012834121533023666785182346229437241289754499051958039863912420351581912036946871768101343922573098899177777951053704877386501476998681242293961635818871027535060307630949907397555951449420495765047830618356183657814571149049220337636474144629773918060565875711712572574729922979876342390263324772e1105") }, - { static_cast("6.66620618596326164947279968586713039258029311895370483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.21273515382789454086776004260173067450523376464843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.77204862888219369744788573660770287170392769001738688402155865708513288003188496251740638940642992963657767448328425353472870578497253649660611575851476001092271122636729433601460150801906619434951209083981408041494135365768470816162930615684520542260356335965614720676272646217323394466315267451500e-1") }, - { static_cast("1.38078986432311534571226729894988238811492919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.93562727297856326913461089134216308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.09060418138444387424424059062331178711979043905828333720448765913252697584689444873629369083510366476460104106313375773568706388071930121668811178870306890980290075045537520987441428335324653171796426529164093528427568372203611999068229147036397950044150945977202609787933363721956655499688121770967e-511") }, - { static_cast("2.16771050432941410690546035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.11416271213217389808580737309284813818521797657012939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00085620226622470905732844417905757963463091991631468675045664887604696934739150514381777470211904644648980514762573227291787791600677422794047913591269830095072415283470532919592193733010388187339828883232881043401853930198928232094973120867346831075681954343729371567448461485192448773328157967492") }, - { static_cast("8.66129276411148731409928025470890133874490857124328613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.63230476162026535980054120500426506623625755310058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.75677926316087201992937434104172212635183402081845367050961907386982900528845357336855433020027701890844425355924313158894887243517734179729721860852203216211626732274220956786288208809210677612308603888585509873354794360927290410971415768734554863757722931375046183502833124862440220040682623894401e-1") }, - { static_cast("3.35057580340428966085564166377253059181384742259979248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.16747650803829827736990409903228282928466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.69762726818915994102636669640248641695258916516178220951615332541358403169898089796085534108216181605452622185779736827460245748311614902401628390881069582094010945399117381574868399439034359201699565625835678615787458358138834274021214751543009200113868243044350923559610553355961511493945076046223e-15") }, - { static_cast("6.53381930771882064867828177057162974961102008819580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.88128239916411388321648701094090938568115234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.44239576906295172295161064728901353975092629051590219076800377900713837403284136783431262977433666893756151770251819781412876948522321366628456614260642901179077056688683539196520237460889892611407142177331136348438247424975172992629120895139251739138531630904163246094893508737465346231066931419052e-25") }, - { static_cast("9.58824111169796669855713844299316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.76775888223340871263644658029079437255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29079715270199960942963556473318847100392035825806894633874834481890517355918139252275167622132083673533042352315135079499274198112245747602316235108479674713674202663546893395644195003527204518806401402778881498713093151993690595544754136969841959488665417573929913679381495568123074940059218587082e237") }, - { static_cast("9.80462544807249748030075764404500660020858049392700195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.92380061818621106439763934758957475423812866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.69367957215417366534795032414092044927898150798664469523819577887485052498975506353682229088031835479896261249192998498541269057857290594440231095317424708287026045610877468508170913712129807960043309223866462243177903185979844369471346406937023243553333556543631914530281862882346915332974736594434e-1") }, - { static_cast("4.22715824828159014714401564560830593109130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.73237473383745509636355563998222351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.85142181625610748727512967615608623642319089823180852116567338775155480625397140714648406228861247464456116191851444571000366236244452154069748412545940070600491678946250810802096421175871317523376451483012224450957973158915531091130907648484702974041033736125577265886371493322366154555363836169078e108") }, - { static_cast("6.96647127037580693453833191597368568181991577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.57526947921747250802582129836082458496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21776552625627356590336877317582904052748969026951170943346144361121751863809186842688158978930311760773848599440472082708351294025960471667864592532594991999006914698692274398613842119283225752843571850040859177332114176284555447226936581391382855150937157990431287391269415649433263516860035782138e-414") }, - { static_cast("8.87031657211726951572927646338939666748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.34070958469201997331765596754848957061767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.30679204065692425620221532321916410120280977665891018935099692677903142836365793713310074103183167526509810778546217793360039724544105606790669360053805611269103519872268834740224972933178750433774433912507891375768945267742879488012985036171398185645729556921004734943776799979369402749984084043452e26") }, - { static_cast("1.38894800193875870772397540520159964216873049736022949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("8.28834370250225660470277944114059209823608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.35222056499059860815119534190744388049132560559707635179974362835024292102863415735162094842301916959003527949486946878329851243593307281685479130665725517616797588026104563060365221513904192277451172225341242860418605162130720263571624685346061029050164764398879401328940031001593736913742594656342e-4") }, - { static_cast("1.09816947397275884975090254336294037784682586789131164550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.58183945899629990446480509724835883389459922909736633300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99936261439304212269593793274631621066678586897953594510473482514688267255174393243589871913940083113695300948318689338051222055912287552167309726448706279958229666015743107592418824002439360290161725288760084420735569321637244499982204153705684126108823317986930400592132185032791247608619277879575e-1") }, - { static_cast("2.31096996516865660353801104065496474504470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.05549814372709782617221208056434988975524902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.07259003265165794231974650932471010325197411080114721904301457157547097334313567798534807882346741414784333355642286915364891740931795753032224983168581398136163731017251242792429565442336378918505638415347606482959367519064678452374991852143987534832456623394400259546622175052847902597251732867983e-1") }, - { static_cast("8.49670416441904163828979790196171961724758148193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.06998079666728116224327926886417117202654480934143066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99758288631873273226282145885741739757443924805027385096536700548341955223394388330738555808413815209906793614975662061712919602993250011794563507497959691981853673962928960543216580974445772540799559436678586781978389593065105455927885069982188267742598791601651598840088278986439446428992363728811e-1") }, - { static_cast("1.57311385387133050244301557540893554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.28071775496995989116096048565651699391310103237628936767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003170338187821543987107336746662729109295981087069294808638827112958850528655867141095917778641007871411889107729782401763128246612168904257048743190385169980528080025389670873111442583914650963121405799362630066123464254273948242629742051351814124726982856264616340030151043214382406894418159834") }, - { static_cast("2.39202138047558889866195386275649070739746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.49118181918548543762881308794021606445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.27339014094927962826314328575939814304054781018385168289190485168514741352754753149678911930165646861374735328175462043586928267957865268734389479790773849220996848074070389175534751472812216991107745875007249116250242613067032470443930894251972922681126465003519414999032823440924453088711434009253e757") }, - { static_cast("1.64634850170019781216979026794433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.58052312996124176558421225990969105623662471771240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01546348252503362826107105198333600916123885616351929759095090370675683807853397698537671019348523544289454424258903395372242729481623263158900841743559291226322042608326721672299094222138476822715326186152957264351608036142453170432188932360709929281850323115131827188070509946087921486355921396837") }, - { static_cast("1.29984771123733180422585298252613483782624825835227966308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.48673306853607149757845462545446935109794139862060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99382895797564405052408771210317692764125583490813721738650031785719409851796983570805688722349822979681595897622086712994137349075757656980372150545265412692073900115244181782170626388308672797472118433651575906690160786295103594530704832482562910548180219532761382129979082146445301288761331520852e-1") }, - { static_cast("3.34499410762214122172508723451755940914154052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.70362841707174993644002825021743774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.40485852822901975442109716898610918193900542520961776863305069906497895793489542547982159745108266280524490077140951661552295048439266934614559790866489193897427949324691009938697269495988925070011169411841665487299534902136008055662912091113639828368592572760704050198717640286295766255031666140310e-272") }, - { static_cast("4.58769266685160914676089305430650711059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.94008884841098259987912655333275324665009975433349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00265878013514519296809865295705868217393246867225559245606227172893223522667583594724300322356488286875380629025637162385262938162022625886814529504008804417980773476428819488610083450291142913844379562656183905757559036430981251862699509205398028210683848825112302095809741897956564300820095580866") }, - { static_cast("1.83659034529005538161072763614356517791748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.28717719818835121259326115250587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.53726930767980134628351414040002163694004937538301878071492381306637265403593248974390687238745936146996356402451151949754817939176416474547668969917407094657482938942615901000965138448816198787619804034435155352704149778316444976717855180409986287616695020212770570197624985971189801426264668362739e113") }, - { static_cast("8.69656197110674742973418505087579433165956288576126098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.53470532471532833396210548926319461315870285034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.36245700894899388555856775460955394048641742342223378203581109445790321544636857502869379407622931929904915591813410010543421311751441003345169506628319334514393326009523930245673734273160199057057608984977895920935149203153332718973184503752228376603699406900321208889195409621350940486281346111426e-1") }, - { static_cast("4.77866412699338716230101908877259120345115661621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16847487332184418740155251725809648633003234863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.00939095440309291336847802488312895385004430053772751642212203497067924870860269568166321148643247526572505972984054880543549485653717067216843154655077419087852705718322510631592242331848706588637404925586365121042986696317386544833327481602868949385627978856713298735650783856235081147982296346628e-1") }, - { static_cast("1.54963799196492800547275692224502563476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.11204960957075971172969275357900187373161315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16782897318171377990330689886402903355059628193684114132825684051875757607797689933491076299185969963004000061078683006351157287011440524301691431503915118755080894616168235485089522630543579349054155603272650786560006738889360398191602249883148592535791585897969899944427735543027279681332101510149") }, - { static_cast("2.47000679471161216497421264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.52499082730789443929086957041363348253071308135986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01911645804528060285295007365522901933244353571254108413776362642912835636609229733378877024828901273387523484327765744744502840827542422973162779826478327376782490303695679704814420712110588844007646988152318154340574171527693080085147287526207828218450010980129801914952299876654249129807403026665") }, - { static_cast("3.03723549186705435616595583070420616422779858112335205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.51110323265247643576003611087799072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.62158625261315621796784260963880908165199570383258880752909601743905724906716730454255511124675934144867399204404978430279501754463613692043192608111413253272638040513583589571469911855611383025946828382761211165356334768347578605666178294674917101334371471550226399719868797818976469869780054171828e-204") }, - { static_cast("1.79856395286417303225334762828424572944641113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.32059115576763366967701779364219305534788873046636581420898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077517217823836935248077849892691299847903424265238524662417641027601052147271170002075034613200815926835872160958521395863660559755851166354980024967551112970300127247095245969854003499125350435566412954660499861774431261483707515396163088724936940160199016889915664585852452649068941190636190") }, - { static_cast("4.41355937354146021789347287267446517944335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.42641018144159374969603959470987319946289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74548555036519520791276201322845305843766995125882533366758793048355043544777974793130718057932582612619627280143295972890756755586060864163343519807569602024123450673829021330095007485505005460893008699595178496760510808546265795771516348135206769564722897763853591915237047669941031110007831969575e-13") }, - { static_cast("5.69171991829923172190319746732711791992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.98043102542145899036540868110023438930511474609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35629700595091638395832213480888201727086153567756638562745744247364577078732772888391063571800696941049290536498639573875131887930844892410621248852158649248884548273739508794634953342193256645662324249539648039244590505104994015484168576899587920875428234320711411322714373060714140422162212909132e1") }, - { static_cast("5.76954356011381364402468285845770878950133919715881347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.25111872914564514758239965885877609252929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.94463304445870155806025859667737584217029774659090091223865132706141204011793568374081383686497430278169952431756767677964164234313821914580067310902314296078439102264644178954457549643252195734243656729528702645014237867821529512634908260975861471735012585206572278726071364924835281322609605715766e-3") }, - { static_cast("1.05123768089208714283672857492391017331101465970277786254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.80326412933219444312271662056446075439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.01096635654174895730364890004274506998670967372315294988820585742497849923309225303695080415166238118944235696360277258545630995713146996451284285658251097270549397299546887024456736142173128664145649440632706184379221313274424739352233838868194748496986549948050292922466160812395403732938083994855e-1079") }, - { static_cast("1.28163238607435392424349629436619579792022705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16524102155253899582021404057741165161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.07879719574926016494490747415323778012199705593394831943581938296777477488312425323506097154699459156568032482136467971947677672762383992541647262353219851774496336332221673599562229050781431336707003943210680119687255794953033119424826346843688505841414943672869216307940977860809662475253945553141e-104") }, - { static_cast("7.87202251453049029805697500705718994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.39760572205021471603458849131129682064056396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53207555977032989055018208938771579303277505887799197079806149426805566503858217166434829573392590992745607709024458374528640995879305116834709101892580164791296787623750765678369128997876794757719509455355831607218534572758406336319858307548393197701741434159035106328532033366541994641153056109739") }, - { static_cast("1.85413190872573295564507134258747100830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.69406846692120716113549860892817378044128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.95656735368615067592522859512955039643574891198504549379998394284320814651945584264960315505975008311532240586619468218955713277820799989277348072854744621874725681637220043518336051308494199906438625737004480910828551371454866506648373987268921256736551339157313351536645840751017335445520822528269e1") }, - { static_cast("3.99959450842199415454558675264706835150718688964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.86709578350118121647938096430152654647827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.05340685717906270754605609530501932449443307474519553599524954021671059012176997891604734383935653924096296837478833892286774229478680952581431502458132810484806788952807655375243507984165689501659897282979828575230799553474262829100370309746639962529485962944150334131789310986002849666502428526895e-1") }, - { static_cast("1.84674139572777286713578526189394324319437146186828613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.25571659299317051061706251857685856521129608154296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.23722070622293990830799081708429380180065314114356604329745073190591014971022286949735867992102290979570786194665670044964971913376468986554402193499702945966888241927569660743521069322430532256408138686743620372490125687831732257527068587575688326301178711197108267406944507908002982504230542257301e-1") }, - { static_cast("3.58473911190903163515031337738037109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.60245302222975851691444404423236846923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.78031144785764416938612223102409855040299356306284612439958299013225825622202999580381834230141933121841779061836895061770649393695477680433223418771879979265527918578121214616513115300315506936777567650603403724811526574832706041635294702581230395655527148395841553708668562384577527922279281988840e346") }, - { static_cast("3.71269374692093090395417220861418172717094421386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.32704198530596029974130967143963744092616252601146697998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998245586875139489901271639028340713779059130027015276766418411283294006537627833255021572845938748168207820412482122290518617722205438714506223415635135045747382101925106285222804464701875561904552995223695133038388901912278020591663993121292169965721308487953050363811103359158918910384771899011e-1") }, - { static_cast("1.70108553436059684038639261416392400860786437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16607504683781455865482223899221025931183248758316040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978954129792622644650032269094574319631975777438486754903659150962464082118122945419410503323172656817200054190506282421527117453082829189458035945776425795407971906137471812197621061779135748565507246203908206485915975691199432826508885650310574999400116127525787480206412253878273855862615753183e-1") }, - { static_cast("2.09225836667166789993643760681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.85669374483343502246768252916808705776929855346679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00843563284699754528712961596450017035453860350588570410059871012011253379813933654529429045301434484839481489237559065322374683637748571974104032389976926103159187339564349254244671809494052575105796625285810628759847430784136996879048594191371809811836063684074535025913318716848524590469577859424") }, - { static_cast("1.21714727542868383913798879802925512194633483886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.04024274981674075615800667549137870082631707191467285156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99851738180285989619013743122680620229360476738383672375457223596142024538032582334141363701685216531955627726353087504478019029760906182307020379318817894422274668875967247480704625723584657033632048027924110460864147683431850155444025526123837240535234902995892523890236573378473187948012001689440e-1") }, - { static_cast("5.07736820771065972511537633948819348006509244441986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.97089812664133678943301219987915828824043273925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61496103531524292145269969904333508188364139708137329208759077302004651060803860997069231846146525416244529356233531058823752839075298907756560474430217361656059248345442657322781131236619023757967452575027788503647455091630937116588678330308533380860226144011143233073363114955647590755520397783133e-1") }, - { static_cast("1.05107095024027863416904438054189085960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.03411347779367872590228216722607612609863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.75435618440696236423847758785039217191601787351549036022831398969378880644344551767328463505949691251600586393797511528994909897140379260738080763330267660481025359227717949542759648019166102411005065795694130304853332521480946507674204615568889856249883941530835820527992056685661760535222848429821") }, - { static_cast("6.04991801259759207250177315273731437628157436847686767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.18837713372669895761646330356597900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.65759593884760895858132938458504295554865358684199156580525629386190771627069601339728387260476959873950047671147626130674714736942807728977752816985626622779230687686049014608462755984076183185977629942323400832151270339085974963175219245006492664764899739861651980200882059489983917901390447959952e-3455") }, - { static_cast("6.51744748140962656179908663034439086914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.07710216336688000492681493991398156140348874032497406005859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000328979143507415685697811442096253363291297955720636385496027164054688294193762566482130745852122932064218776073663482596744861678935376393042841878114830402198126626873661961854660156517253426476105318520395463096676472118157780746408448524800033381676594338617857965937768629354079942055143731") }, - { static_cast("4.63884491638627549647821979306172579526901245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.58892435788971937427049851976335048675537109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.33715260820791317269987064747412391800309849955602033217225409481400578667858265909262657939940738177907804353137088637745857746470695800199690029742037073210058760217313184489359114691758908649867287570270285365266943814797806817843515342646282514312200010453327035336204860831498248439822619093280e-38") }, - { static_cast("1.49058285795790606154814783579354298126418143510818481445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.70317518258870839037433242424413037952035665512084960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98108922622050827087546461298822670842973092479525322691759952475540660272868395330655428828449033553950251437644999243615808527145214868010990354809843842150796169597464947831412602935689456012651060606674408759590837715937317107067113406559618224088301687347090716482594166112826991011166298362788e-1") }, - { static_cast("7.50315265219419380571252986555919051170349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.06222517749687384025492065120488405227661132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.40175419689520964937445314051307565108961445693694723005043311860973648366068520257018285775532813235354539177271941463790001972938524250513944002301467776271129144936307452041012641877576914077850978415809262774052418002232753061586235460151777159128199018488311311211799819289180487350061980646390e-1") }, - { static_cast("4.26847036788872134273342684451790773891843855381011962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.25843044022171965845742491740821833445806987583637237548828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99967215285852515192073395540137950482554540502668958238310575910483321879481952698928091493628164541705483350832773369892703138436296385686888980010809861693571807457349075609182274750398269557656870778473684116326560067055000556274923680535552295628380182973673412404308833575096574012516864815095e-1") }, - { static_cast("2.62667296496937296979012899100780487060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.98943432793326180699211569447015790501609444618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000067498249093796554190906335150484537007905333805853084798522029363004660855846859261868482180160316566139837296027351379815963628562093199672797915615284584800543052123602981811247334355647141931097257473080865200634384690696676990980451941954802180365065774462909125574737179287520936788897430") }, - { static_cast("6.70966669446914210084287333302199840545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.16310384563290541287683410587305843364447355270385742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001744257181843369125556914164986065767377720999640888705793438430385027106235014113094055738186706162642114104415940235112867181288621050157885040444050793876376258047873939583048138039901310315757778797936384132441774545886210926930901727852204521859059543099653693673834002390277355781829097039") }, - { static_cast("7.41203371899830177426338195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.08045243497875006967630373555522282913443632423877716064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001460353450390109753320201848917579634289514937879484407258848004890744776169944597998175250117503923620359242409184317540187082543653993640048666001395047165769964336795615132413269257911431079896523695358479509374941248440346987424514128254145411471716437568325046246372300034330801593929796699") }, - { static_cast("1.69159255637993624077353160828351974487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.18026386927718329733494329047971405088901519775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763302348245649415440222014057755125288511751974439494118531238495212343084716356590900135150471489029857630623786718849006602487868725615880115082270216521029606377055101314827010471252021762724425333126829904634616800319752383603387644619737656819562990847546393907303039685961266007323499371276") }, - { static_cast("4.71460529249768889314964326331391930580139160156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.65188827816496541345259174704551696777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.57039862156640741370099717884062397571736028728524050580037613318788846117662035095375103738860527021001943141141148597120492387251375648252287053831107964249223144395667696166786054472499439767489130687268705183565392558321079668035341534647161063188715235627145576677691259556611945549071489064974e-120") }, - { static_cast("6.64982363517832908428317750804126262664794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.04124859899293669557307495665554597508162260055541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99916721594674747376600569188805403610749202879145587384797447934876298553391460440217614450811626491475153827239769211949770987067539929764774811195211928780393852025574440532735397207179531706592529705918782911567387089221968997852275611755107175151890770337885129722749288992344581262036121822096e-1") }, - { static_cast("1.16893441744004085194319486618041992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.15678606859390242789231706410646438598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.51388885705521092082676462955313303770964042418254877907252507964234420916080103781270109330079123766686738994000772870583969928581773756873588657991143050640555136731739608625215812170605441235916882843841833089297543893622016574335981753027769495373907938555110085958780955474425308783814139862813e33") }, - { static_cast("9.76400625826371292015348757331594242714345455169677734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.86442986632989526896153620327822864055633544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.74623224798347601232565592691979711045580692330641567994756260200814740060669606546590062265074708542429821154943403107394779336685935160305728814542562226163058396994725320974264154815235226634053969860486205541938719842224052325659161610602552591765080618174794519808159266445853952938084827117419e-1") }, - { static_cast("1.87868482843651634084380930289626121520996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.16929872732812327740248292684555053710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.12028119371494031430335044645564708556145176065304647173808454044697019950167941050283479818252925468559303066000892193796628006878431527857608384081735638513924751307741786259324802053021768713537078672257166368405154064404708746524318561350343547073960189134086007775921344634528456932868446419630e91") }, - { static_cast("6.10956934891920536756515502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.61245994668030334651120938360691070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.65700792854128829481158381754556960783201446467603874396477753649899987199726050381764154587841579338454205142269277734568001743334867145801385330344031718733980559420806485323497734470145803167224651985614888601581616073332671350983075972830731246525865989689804085186895425350117377876021236432000e41") }, - { static_cast("5.12940713132187653400251292623579502105712890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.28564435019894255014284711879923861488350667059421539306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000373701282973747520930655159796229096921541589463952802693848825441766023480118817224366828254246104620872707491850843628745742807472462411859435943238658855518813616022964453910564185237673973654468864102738810104394810487407665604967406614750596030541491730666890517480494969397423025082726828") }, - { static_cast("5.96919527975153832953774529768153911390982102602720260620117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.57180582106150705794678917870399459388863760977983474731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977473944483761872828387581066184030968843746303338716635967128051482967926885604187120298468309076374477372898167140591203610593108721399453839682426096478159671434202750765691646383078954275710747248498138805135910075991839124150638583040898450493059066421550145802666193053679045930003027645237e-1") }, - { static_cast("3.68606214248608399230988652561791241168975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.49260037966346908013329231046384393266635015606880187988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99985103565493113484475922183999881089207789606742350698567516671823393925981239943259423556444582299741676725651226703123182719333272364174176377120721866858898501279006570635020422790273788959353152995392898746327367860857986758594342210926743928260938298323338805513021194833182527623776519608700e-1") }, - { static_cast("2.75108139709647048221086151897907257080078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.50370430827189238698338158428668975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.22207684654158090072166193557643641149481975652647701708530399277363664695064351610680468504557225898194931419933867113331640493326162327026706800979963281990313857552256767561246682453632232432467037080629483164984556210425989798928121976072588554960434306958147259366170108308967342505596481568498e19") }, - { static_cast("1.81162455673292015490005724132061004638671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.55260000441009051353087599967039977855165489017963409423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000739442221122260724005033635770725844741914207974197964181739354726511926916714698090584379202017604302885037125163720681613028683344989131816590462063741786918631523895090976438946284620031268598318287495015673164204411596879025777677083658398098322196424671094954029116891354161564494388093193") }, - { static_cast("8.96493500879970817152297968277707695960998535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.56875157541190674237441271543502807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.18186472758714615747935532618938695169587522725634994323764763361322541875338494379271005378981383706775962465651100098009942121578720737172235160080858098630748438403135919432305006360154000115695658966205609995229485314131439314904570801339124033312271333615588491334684665719513845178970476180503e-41") }, - { static_cast("1.26612879808979481716102455379768798593431711196899414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.90879340262861951771355961682274937629699707031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56902896481771879143877379682638527882901861190229819789042792546979238367054331337767498254741605069110970147845996240165269976456347023401814558426675219095881612725781553874494895757386564444732770552998856125193687086542254594118439921159929235553297916239134941949770234940282427408194492643353e-1") }, - { static_cast("1.05179746109396965946490565269044736851355992257595062255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("6.59374100718207543231352829593561182264238595962524414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99092782662380324729163640655313848714756101648128347661760755472309885143398472302956067855710190800993042892779094559399021527010697359107101541167758299014549008387517426503427862359734988159027154498990787998696863714462719474369182220777439814743092111459144669908819231194636468040015004769487e-1") }, - { static_cast("2.26677931802150922635519236791878938674926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.01284500605095928449372877366840839385986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.04799524981909743425238268974274974124170089470250115095198088233403741098790024678291238778471336000887693628348108623078030852501843027636021269414992355439834109447548416843301419510567977485938290387496561912410461657784176868621026947292962832450377901755820567805673466030070278228671530695195e1") }, - { static_cast("1.47645383833588006439185846829786896705627441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.34770445962486519420053809881210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.81864953170833366001029957686457080479745389229343183507996187270256012032168347753440691289295163599099444007484206082939466510290612710007371495952373847856242772883552123786185299979765598455416935895627334117098932505280856391911876837712397381549095944110724452719067485663398985307194410072346e141") }, - { static_cast("6.83690460562575097469562024343758821487426757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.83530767198103986204138493576465407386422157287597656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98542687144721504190991783229244229904437024428948393594123834827455412276977464755147963505927618995184986289919531376928027005710396398910486083058794955925781790662773364003988254537015097017811287414007455159323257827799204950099119284414629154584347927772687791013118617040392415483793228615528e-1") }, - { static_cast("1.00205353905587213336758622972411103546619415283203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.21472319667746432969579473137855529785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.08953646324319429602818744612054042909432561532126770140572825180403651664408870454180981154606920328617475099247353850589948028434533205453640961164641456021776839621300753911422835934782850338468313312210488559936609343534193099022841479411388023651172446221865345603921529386692401675022261632417e-1265") }, - { static_cast("5.15232802831238245744316373020410537719726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.60510257181055615571807493324740789830684661865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01431289853951002532506377614168990948051280337886607436878494527645645147723859636940385995419356184615086203041458176935646525562258868511947236909026624331932959131571326296466151873473074426347666272446566573176007728397599624815497760954111152173140369195400219514948443921717606923360226206339") }, - { static_cast("1.50327863210486480966210365295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.25928705204024481645319610834121704101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21705224525603686559675227491858310594380597690754424568785114801297385692314088399732454361300955075549296567427255869777962816305497530312793581969492733775461667703068826501146498955373099052386164214730524062952781381010426318671419140310052915928431939434595652675036589780009141539593357125642e1687") }, - { static_cast("2.52103950481096059522273522546242929820436984300613403320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.04572569600166157249149234687024545564781874418258666992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99677562816744661723525153627124442052964231793875730324917063167910023632186323828596851920875156111103787347156093646859907405739307639598484356543171131155872282222202848608366838457688692164646235280817749009555765844448651859985081286265963272205351701235959915053427147246220456364075290757788e-1") }, - { static_cast("6.69572868673203203115917858667671680450439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.16763271218019875231225457312689286482054740190505981445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001172763619213033390863469162514923787137097731257478379858496528955583730797624990721270466292542630978166836841730894536953419182253636303821927335171827673847960943549331513055995583023583227615832251837950408037083523512010882821232754743304332778547391577736073428707081283889265580574098969") }, - { static_cast("3.90611154895943855080986395478248596191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.09392819734250876240189143118186620995402336120605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01257436238989364436740053785780748984877719711041249303794530677616720891994615335093220833940115128861191606642103642393403535957041953141054150817528925853538686389534782202437853737346681413564667163289005149907512827692491679645604032151505662903966426036149340526908388743360309704155643902314") }, - { static_cast("1.85738968908478855155408382415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.34900449082321379629112456655093410518020391464233398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007223974053029723271350039259412141636069806425386754509098025549121050837680692710943206684686658573776447604596802766176331791002163659401284496154417281082333498905606330772551902793976098371405853098920109852460783688567109865594724989116482969799710457089092798143235841330467446343910216945") }, - { static_cast("1.76070615176634455565363168716430664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.74889370868937987779645482078194618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.45316765019878240189602403680427223818770335223288608146347951094991305163036799974448576646914163732716464031107846083674367407256925355345653200850687798959392811940414372053909694215614805160729642095127896071955737496902022738055554549005006428357198315347861922794020063710653902271293794797134e20") }, - { static_cast("8.59257176966675461152189718916361016454175114631652832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.23640678060561270967809832654893398284912109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.75626791055079856222412335079669380796397627500002019826921615591957724636638189051537678939438100683331885757581588353701345439775420172078880839292692181866988352748585676000159933320197094086021294353349620582341779917757035411891306338495037492064154895428084541796948375617939605049956389592963e-4") }, - { static_cast("1.18373366744053128780857914170709932477620895951986312866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.67326277601629289126013849786644982486905064433813095092773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977165516365318634154013098062676051482936340600676508115018286371174310194281664961388300484701624347701999911368618575116158865905431420415090042447533719781066713262060337264603666364847020671540664275635449461141562032657119830142469510330575908700332922190579477083626027776803818572001718803e-1") }, - { static_cast("2.79297046837543444519624813437985721975564956665039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.97135089362066378421145529387104033958166837692260742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98254178388410952430693242810343707992963411946313883778028696826023938537768767830025754426281554000607392763511414140886618834915773502093937010404359418681811029932841236322654028803608283276794373781000755359892344545988755782370138251235941283542297935477464591913844965660089628462450619495872e-1") }, - { static_cast("3.38113855762533148663351312279701232910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.09301666014966266347874235265180686837993562221527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00010890478594524709067739908022368917088132812449962876399165997211946438304504899291487317819472340328330375585022333633583894340550549675803507677712058170618442005704437605073252304959372965881786681685588681179433355904579852317919540925268445449423495866437480095339165546614783853750408452453") }, - { static_cast("2.06425930083115716229258396197110414505004882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.22320068732874709382940636714920401573181152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.56994381329744106645164401249639056164129850194015191524774235721349310749300345652229762055800940290782810800288250321003967654939060262541583665184611869025848444849240326580936044484294913651408991979990620894378054306407392449503735235963890733618686812461995281192108663576402590588669671991241") }, - { static_cast("1.34087695405307183449394869967363774776458740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.48273418616638036349186791085230652242898941040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.97025233069613645577452155667707700431529405119046003459330154763708616924139333978711947517286910376855122315920165412886432318792826535847675162918439845483335638190760733366507881163660357422897573743052858674336878106847554903297760383077263299654131223242076136517464708165444087161451001347315e-1") }, - { static_cast("1.13795829837500036774144973605871200561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.03500201236379312419617904073021463773329742252826690673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000963457189792748049744783509653303667431326364869818483704842948351380610875652979437988682746278703117572921123081696661945181740330111308085604188704279357002138744426600265673193487995475006875655840336689027158444662492494587307695412667171074545903613666004574014189607190377465209019809696") }, - { static_cast("1.43733943515224175686145757779854648106265813112258911132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.32214836393443135875713778659701347351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.69028929542482647910462333162857910188985784876407542387662931701295222184216133407420608557785163630976401541135533394749225188544894532723554319205860877128881077879568220494222775086397987960274421371074192662130785663013334009285908262792624635778476059436229937151198221859566242280319019160525e-12") }, - { static_cast("1.40044272789335991546977311372756958007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.53744104780148727051880541694117709994316101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763558978681810389405573088195138451898513946030420888756116873548356901540068272802595421797514887115185086583712361722645481445016465906573909064890341678510048829617311165144452645678278211232399208153808746476971992206798944801345917584439323122735213774632862994806449009371980892407850308879") }, - { static_cast("3.33770615636067580211943095491733402013778686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16340691059281198249664157629013061523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.74932879103617263287699269441230578657539752277509100498121992886363492927534654879230172186557771810338441534937330485904491247273189306610489852019997049552119104082607943340924820476508529648819831797793990936006114678588935819382061714015089476930073162215255275726210879447826384500950556498380e-77") }, - { static_cast("4.28996264268685627030208706855773925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.55843482735151467322154417161073070019483566284179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04758858160148749573207693865097611258682532053580644741708378607626299571741454781489071163331961478583318303704887429698138745438016282037356465726871543404600493318018423949357845164509841052287336032095968547544265578409278441961772371247405527391823186341452132702680834735192488255543508774968") }, - { static_cast("1.28110344596063102651228859940601978451013565063476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.43418931353877687762121695413952693343162536621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.61015280162581259611603041281312219714750672075712379519625520748837900282815093599469657102449329452585522609992906027038154076071639645146113938200595344162570525215006263974571317023675884323716943933613404725430584249433688012398115002318410911938391274174242791011414117839535968615208469771466e-1") }, - { static_cast("5.16672517946984571901580807207210455089807510375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.80381185032818629470231092115639626172196585685014724731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99990502044552423124036840709042864832582112050272720529614683113869481837430803897286965523406403026476324601866776220157395635334324411401951420003880457537783083750584239021034205680737146324172685990190142433894632845319189846259349630351570776916287281796804645673831673367339618359511691534945e-1") }, - { static_cast("1.27899907316783210262656211853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22536024090327483326845481315103825181722640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00616341899333551359328361392752162344577264467244472586370749414301840554961173829121346442368844768868155278219296270614015234651325697529392935793355916715136924941286676982861345063267744784667777743656327428634674404454023683239192093835032100591051537658643852513812450455406749057692109035777") }, - { static_cast("7.11730850188353797420859336853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.60788079495505627572460305430013249861076474189758300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00107405241322382059953913596876333435454811871669131165966566428674069591664017854016649566117750922070455790150785398980453750449040916943909541516125417685189264145037334413362116738563574347465747605135946915752491452923545893529316360034715492483804067411471432361687478500733144787639791290510") }, - { static_cast("7.25343826567665018956176936626434326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.29954091776851328177144750952720642089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.04970290589109038711395049954355776776342381310886782453562200726034000844667284742622588171082170563883520775218082400856123793786048177341878726458251943347876583569178437736653743701492064380769184875657546923031668880530296652280260428229230807500261114316496980898463695380987245993698126306466e943") }, - { static_cast("1.05425305597257192857796326279640197753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.41211561689230674643269480839080642908811569213867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00221940552517387456904940935153668768677803438018028587024892341085297549561710698873774378670329922261139925263482590967131460066291169951663366614190003024630959832086281000186573153943388176622129526851339850140935108594752581778544126368342198113455082270613501744317697800189856112116044092035") }, - { static_cast("2.06616686835977376654471804329205042449757456779479980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.69516133890853029630996218202199088409543037414550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.85720096393058346372084885893839606320554663169456270644249004310463500725457211657627998908535169742871675934174757999843761965159654941281377745862394591058408452525449223020548106433276286869407305925521861569746775217097838170535894284575048909646530082294345563168457886536304399266956794807072e-1") }, - { static_cast("3.64402451110348510332492821817140793427824974060058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20455824353290882888778412507235771045088768005371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74947852438644348963594070779458486239729374924703758041706549021145269914102751629698949629550481353884433142728878758835488685283460683679637491539837448325034596988851330419929610091798061933767303224300754233414005420110971299300889653323675957445130038468323617573447274322484402694978713617040e-1") }, - { static_cast("9.29240918436359104014016924155683341268741060048341751098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.10041539819032330171921785222366452217102050781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.30375096076042540689175588676000039497925847630595558133397707131285132566953633275113891277016515974090275087097707081223643727147456085023753621384884096242056199349318008502416132788061805089253485591443085259511013177192516510953942353610198267062490629651968866334656113567343023162640866499116e-7") }, - { static_cast("4.70374294317859518955657338601383798959432169795036315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.29316103610866321105277165770530700683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15122965827666394521150958097124834553922749706241413675626621322918765539817839286128014659593143570942315119838489669350005299860384297452971974330427527438060831168176929743817135707477251203472467806027668891154074309800997369457141925072379579611854152032663703570089179850821080592817602489379e-689") }, - { static_cast("7.90111168678090834346927628928369813365861773490905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.50142935632569063386654306668788194656372070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72554973148662694166759157160166169303284736393781157514352684466477860400705537599392645875431865905681445772161441577785663278326674184262006684080907675404076284363331862467589217294540329968481020258307213288969704999028809892457240851077890832023610976308448700744934847296072460694151132193050e-13") }, - { static_cast("2.19470224538514946388545467925723642110824584960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.55402946608165493103115295525640249252319335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.15537644035230762511257501642891052274838428807882763659106583075479589103986905326616108567723817554261320425463998387402938492727716723367633134645452074625478383896044161060182209094299460842378984988424538062120485203568234956869861031978112571715328186447068917826940102237728367749115256994036e-2") }, - { static_cast("9.59375752767912236013830851177885961078573018312454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.70600447818681459466461092233657836914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.34074971005352694977724271428304704379730503069979006543824421982543154474277701862893673330086806692863058917258547615336829675716810145864841475235135109391399496144355613620559781473891279309689200469472005874869702401500915898827498117462493418903426151104912981808366378491461635507492430973906e-2833") }, - { static_cast("2.20730165021212201281741727143526077270507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06815138837059212754271309009368451370391994714736938476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00003305295163452281794976529673484400203041012190269638476184821369788032078572490628055955783906515975070132315405678121749687518303529356301281556543290455691541229667405975677836660331331546866945589821129205572181796808319706436826468956587053252695087454167269382499127173288396374118362076812") }, - { static_cast("1.85780789842078593210317194461822509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.30823413709633314283564686775207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59033859659617126254628613087390514142443448071790104857905386498498208916927300817260750485505223182216712213534955208892328370772179606978553650153083374335774046910050899642665243305280141884413167811281876091816572586748238812963621916941228650345907682195313189327181720960131248296641667634950e427") }, - { static_cast("1.28002693604745983830747735332522552198497578501701354980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.28203848010336862728308915393427014350891113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.86706798756547273034023259748332998697114154360428093064398895642136945343512222443801509462788398508116083101485126653725181025691107909977090006260480711914768000641955268595050193784354949171562687163857371073429271907026305099383798868693635018067191669439164014101281294813574568021616736489720e-5") }, - { static_cast("2.00223379702332143770249217595846857875585556030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.62365481395694466471013583941385149955749511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05235460797399961706826012566932005845504749468248264540170967631534913675307979194267567883423064423939335134422258880838785383291061227375243059330869736175934549938928557322841085452000578723759590054565129213090997527802918663825422738502966602188020267614510519712792292721325579607440137453800e-1") }, - { static_cast("1.46975278087147759168741567581406570752733387053012847900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.86458989513311337860024252677249023690819740295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.92154549068701501199366439766982295808371482320630816324433379463381296202639580495789257638722760912167367897485745357403740992265341544963450873213458100774396760614353635868165234585261876587876465994053070011062897736386668244554072898747895651881702386350638799402464850863950102149208151366166e-1") }, - { static_cast("1.69869769328567166155607992550358176231384277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.09451664353347934838245336663931084331125020980834960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00005799594795372584357977768556944656253178249587480331145989344864034282666379944361611058467140259982713730781408566683105999320504528967383185252941819780496432948156779669264240460517640856647134097150209519411486934323027426354907715934579141058953345456267906766103552413735697517517849566921") }, - { static_cast("3.15183975929332882515154778957366943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.02384029084149653920920997052235179580748081207275390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00828189958217090945616829239889322422890752450091752768664294850744665096849748731214361917701488824218313674215416049035608435896320044761285630475680013499593324921963112908846599652343142683769107300940314664453753090942709855630290654440762603604322610449245678270429752911593206005276375357381") }, - { static_cast("3.55087476619042874403930909465998411178588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.98956931787756730045657604932785034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.32018908151418417859876732852718049962350652342105850490583184901223805273843023839695354873994074279947349253543933474250055215956442663452932535132575000870445343325403706967004656960749057879238157659107219147411710899538754744145348815414311088777452109665676822468399972746650501593917415911950e43") }, - { static_cast("1.26775488796815989189781248569488525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.00502285798295979898919760842090909136459231376647949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00071834700218288240776940900136375146363527699090847426981092022769405513480212911323057036382071349683106853880233005923304991341200308955960878969600681793506999384869035120625501911973134511693383019876699301926591009688967553141397068289179934328294897849913598948019612426308123680588484240861") }, - { static_cast("8.15220048105761634360533207654953002929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75025311305504219921980180174614361021667718887329101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00038554010810039170759525901230037332621377704113376782308969416671995519944631372963790226541075839243378526551356024850278824940678165140037685990966568856425831851096416371162933528342527414028064433797747326021549595783932074419350022816349807211737168691836224208314746714465025589975731455428") }, - { static_cast("2.65027968976974648285249713808298110961914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.00316549124626845923557993955910205841064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.76325996094662828651112161237788953415887952374670102134300653855113287125254830377423982732034899162480399742930099350206403828614662703257591959653574878666923823464038672614887656376458325931158457664475267311806542914278433869759036943522883194636568041344283954333960707999807543121267715345128e4") }, - { static_cast("3.65182751295248817768879234790802001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67556451265639907433069311082363128662109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92218138915478317609234268428449378609898504811886050861657038624663939529613919692032879990877291035109701590929770282532279774612429349026418707716959296859399988519535881353467118924067126621065164445440389423581971051504964356883522778929468170495170856030672143818408689238481847643503940756672e59") }, - { static_cast("3.06064234847405454518348699721741468238178640604019165039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.20328027949478477687250688177300617098808288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.55974238261708442675674596584944622380379860666888634356645875331625278958028151760326676909826129760886331850336797218123658397234427228603106790759796963957806080469839015421053939928057033567772138680185158581228274260396763090865346625773393191666291620910582819221973998350912562080963747333068e-1") }, - { static_cast("2.04040793254407122731208801269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.86284726793166655056666058953851461410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.58821325525680163465105847555152044190569200388116750112228338962598195492329497459385020613020256287552717930952139248724578086838832538138376726496296560875204247514233017557960719338882649967806582509446295835645176351140001109236587197833843059204085625918013701386357232953416141714287393580849e15") }, - { static_cast("3.02716069476693064643768593668937683105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.04039959726672404105585201250505633652210235595703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03510986044313446578771317219744132510998690381352607017246273580247626695630046904160285453167383058665284858123740052884532347981837364373948718495188424769656549948930405672217230120189497151355681193015659186537151773454794215525893522934864014682466868462268390720016762737891468184834184088104") }, - { static_cast("4.47552570179789768189948517829179763793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42494522046174552087904885411262512207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.11929646387532568976168597828914488086907276576025509760458985730962224619833220482536328707584889009590311478709195034015122056954215000823555978179815671349373291996702460104546989380293121918158085134301955237814810326108959984625471199876172816491246653847194071812034535823558646590118729075911e73") }, - { static_cast("7.89920944916936605295632034540176391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.04372395393338365465751849114894866943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.67759107384668464385278885844815795751161179367906982405379998416580527424480738041217566954239691080320039512890036456504748798096287871747642118148076943027438116523332662829876900574449886819108021138850402281937549768122792675121441618853423616832699349260369305453263152392638804725787763327554e302") }, - { static_cast("2.54801173789754968612708552200274425558745861053466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.15927661277336413458982633528648875653743743896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.58205367007949169809279999461100360912902896399937272021332641770690450812544971532999275755132753113048328902348279538087441845456071781043743985319802898282971020600433571724744632298362925010469603804610543751544460798372376992115798540860563907814359172789945116001784572399034814979737998689779e-1") }, - { static_cast("1.89928750500089372508227825164794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.41078495521190028227920265635475516319274902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.06563424507714690167714042623337538555278963530996591844954713364193688715643758076458567982650781640747670966188519005031306885869355129425908043628325745338231076914378682618756362764508582923824741998110533664940173863055464267380496758389944654061554957122449256611900453680459384297799878623896e2") }, - { static_cast("2.91020477415979972324322488930192776024341583251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.10728022839575198851824744394889421528205275535583496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99890103192413085441074667861315652249320196657611339570482857071941674209639709864703891665811884603908304481549592842627180817065779143546842079140388383757073035382383336415119892457712538117493661547669850819233137331852231641783994865993482070326235283184181541427573679758103030801595943776744e-1") }, - { static_cast("3.14872001537003598059527575969696044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43125111933481261039524667921796208247542381286621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02802334347014804115203210525086340106221839607209085819487247743041255274944512485633547164774253058201682853956553615818500164452268935135547407521495805328007119673698391733155607980906430692803512122247717040507439060960157575458288088753689807084410223837216910150868125550872659514690258206478") }, - { static_cast("7.57561563668409548074483828017378073127474635839462280273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.50776874093542589960748045996297150850296020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.22360322691615293009344442522576915365414410103567546362459956848539698481031529793394942148327475172323264893580159766513287240943753652400314434832413344966940876720610075372213401767379175382193046077868122711719538872402153088637192089166340900530573304907112834730373371836607562222448960151481e-1") }, - { static_cast("2.62745508969974561619409314516815356910228729248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.54116524398034698606352321803569793701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.65627927121210139869453772647172972010233396005753285235163657937204725700240182301143436917519389589272478600896823141333467649759723515447005854045233682059842082604402664004516169590843725236432591088329366055949159027684989904142732333954835416376354569871287255391194720780011944013876616447352e-244") }, - { static_cast("4.80817610372865829049260355532169342041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.83678291961692252698412630707025527954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.41928564331678515981471338829811408659000181192686008443981749115702769340722053174798292070290561882896008338642826088125297911559295342634515669888076588557229523820060662923011009955171952757056636448724507715649589034168433634032429475749149003931613573665241664071010924406015748971161354696738e64") }, - { static_cast("3.20537873291325013269670307636260986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.12063633247133534681996835935535727912792935967445373535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000736273879463173771441699203291296246037525214803383466819484064993717806192280443913585501602480713195981402804796752564583674811227808842648414027111557663920686825861938638104671353044668858964832448138218436863850713355695690765716750462185486284733337309942715764828383697583139810455212638") }, - { static_cast("3.61912176346828890621809549088538915384560823440551757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.52277102882139392207860861816470787744037806987762451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99641674908429772727741716066692522684337586976236285526703123104244360091941899419901468194625324926731894302874406101537005325420303987745335631550541398216024526757166654981325659490102941309976706722307972204026369136295841549401634445497494285259254938938876164197916350437289297642860805084296e-1") }, - { static_cast("5.47727150864758538517662600497715175151824951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54622621028518670346224572753612847009208053350448608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989699815221047195237797415460745692681672883768835967449812852073485700626675461871958759788593113792388910307095890907937872017129700062714402629139690850899327106043179965950904385626167111246937006767223675683130961170323257583625795510235931710927527056466356951973276658601609644129515473818e-1") }, - { static_cast("3.15637438341709639644250273704528808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.72407848923734441370925196679309010505676269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.49825547286670319702380922050187415294618434375837006137892453203122331928047047306492172079078511814726958266726273319242885369558258257128888847286538356045014816657847217085941522774109065130033471139571270092091883178037417387674630454737070888538218688730956097543661382768897165490297639608102e1") }, - { static_cast("3.43503294936064165085554122924804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27250150145350989297488020213222625898197293281555175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00162336779090582285668555617540990956375149416793870895822616882369079038963730293631724525621870732184904017056404166569755879690536542415147024291651047693012257723344966042105272046767388935297934745863474716190137901174215179659999117641456704254362366255369408392878120515423933846401645588741") }, - { static_cast("1.05074245129533483122941106557846069335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.44512744072382729528143674446738486949470825493335723876953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001005416673874970641874885661095503816717227379033676876612730865335989893449582345456543451081149107465171659175604293715962189257810117721711365871006508720993220186972724366817623975260748578680835030711473739357905906032894783455531711583331359705157662673931729626022752940417931688341732378") }, - { static_cast("8.18657910086106118275478538137690520670730620622634887695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.69535439208307230074534999175739358179271221160888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93351224746448996937113594504910401882994345207771800323049779691276470148213924723483955246436042747455629177564845224233210837232201105509371449087604601761437328836060853287056217115691403748052298316839138971392756481564106383080155540424716692745736592178985310629391299501759133150627938918074e-1") }, - { static_cast("6.94796213109996792234301921098449383862316608428955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.01032189649519636986951809376478195190429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.23006490342279217571806140077665886981099414044595093418295957860943720284086984665743578056568297229139299500245761284073691802977046208070538242215508979634862568996291341587581554469156573033924350089621252836592701785348565193758908337598409016657851371246098654329684058361927838809573986193758e-127") }, - { static_cast("1.10592794589664117665961384773254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.25260821850983816716507135424762964248657226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.77248676688621920044634297401786442645385941311525110002800741928600473067163385046961591455772161080604895545524410628330763921136911631698147157554500689676133210576592147935248743333122279013651774018515939625427205237675732186795164784795174668611013924030393724917154265078516887725307445272803") }, - { static_cast("1.25391642141006403698803850499388090611319057643413543701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.33579604520485872853896580636501312255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.68392795308248572652843135364969720382138943730339914636303299072150410868121378543408470390954010868594468316840003936924097765196715356527524435528061810352989069642830612407823386666008449194429503821925534277567874494596141278120854458833913072506701454712189004957264318701887957792196559450829e-5") }, - { static_cast("1.43124739542791035162849766493309289216995239257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.20942048850905869983307638904079794883728027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.99052723424150661886931649071103918452644460542298398165637531920915224385808227208964029010419121462212498905692527594903577506198009266794868206489817939747878141799591393368960481067737790483228614343187263432824490432996787531286395390254093241449602142598445964130129975312810018929887788198701e-1") }, - { static_cast("3.43751575420593244447609038161317585036158561706542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.51206687051705870317164226435124874114990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.57663597564430277353448388417312985615626273703902768815220625590828356254147933705830400685411299593103143556639123246778758775852967467852603984265071153374722320323459885871194691907711626373620710017973655475923376123554952810313797438555025227910644691182176423627488188876492434022067149277036e-38") }, - { static_cast("2.17472395590978127746101256079214181227143853902816772460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.91971825175046888034557923674583435058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.50169709235325052632986882192448754882997090613648358141414144591089112598426944965520244801106015239482741658118850562377407270011579313225688643981938806077750575133252661340927273680933994486522267294226372481412223764992202845720067257372057887189374997685336348698935086839444322249450808054944e-1362") }, - { static_cast("5.61856815780757930039405328992430099788180086761713027954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.29876093753134198849341629511400242336094379425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.81481816351315594384727007893186507859436644672331091167617928065788693663352781510746621160037607384076966766971591864898782687655354341611390803359295084395315487119152362491516158659729010541073082819881189326119491997777097209681555255784910126963441436697354364542857530552913114970532656768045e-1") }, - { static_cast("2.69252008622562698292313143610954284667968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15330514334751887961516558789298869669437408447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.06666279730568497198113724274678005155752498157046477782004178363192374164474721840040331312046115275560496984877594971350062701246211629447728806246316863840490103633689163217579393790965785864180257773316151663393300617519826348688668218517932804149442470238145344903593621930871763066878050548745") }, - { static_cast("3.16092590727489834989683004096150398254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.48064997212848559193787423282628878951072692871093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12772520348616005115304677929962056919100702599904589876944000234727659228749834981600423100421009690523247572724398560756474248595294433046382239886297029833469577515642633205214954504439619606667497183510745512915018311469959758235733226013623764492488909973197069967553629996698907871574676780407") }, - { static_cast("1.11417522478442774288426297957244059944059699773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.07515622779491204497048784105572849512100219726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.37919294955190238371406645550683331410621638917073656116684574199081255090910984115004225393137968138900076398279876623105976571541314203892497339063273916638860131717065142379547629145053297558185567155580289078804833133323155623898592227362901992618266649001082738287327625009340169715002810953003e-2") }, - { static_cast("1.54818678360652516035056436294325976632535457611083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.62060471994897832819643168633660934574436396360397338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99950690212005897959136097299917160482075781519044088208212676575453006587694459400083447882136665068803314657182010357110987268971672741796887858729353234727108572424227132082469362733286450718291677866426969142840900462763239110268260519434037322501413834614893396154343681850902784948541773957467e-1") }, - { static_cast("2.28067710108071286176367742370985070010647177696228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22516467629786623624865704584863124182447791099548339843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99645746030268443121474912265456530387059240825775542503945117534294341852612112033263023994402497137577664903179947031417093395690539107266054577344864123860512144985801819409282408928976825661093887120497669159146596001826170808186934642139325551337232119779982282458342982953928951761806573163414e-1") }, - { static_cast("2.20739083812885155566618777811527252197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.63635428348883159158696359858353730487579014152288436889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000883141260854728883702175584015782702915499431300231183450474406119123947650012070542489465023521252692179702983050986429423066780728766911719282820886407479657520041375764406817735028802434658714254220988205387649994799335160542734586791578044041036401530550092162441750788372567864862832251789") }, - { static_cast("2.11115639194152252336444952618421666556969285011291503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.91611178791150109645968768745660781860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.03851749220927707096105838017357917405034340382528308320810037826391303266735158295669708446462859180309945589089175400795292926848603356140832744578280150360981737396616217244331933441226205091493168502347016694353942358220609837333188158011389094568440922575728826317171755408132992139505746448351e-181") }, - { static_cast("2.38633916347037029481725767254829406738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.47350156205279176901967730373144149780273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.50492562190358454748346649100342667975057580840217621906828483604765156733043048058740688210262627421835218492853562454601684989325985386603026971417507963657922417960947826930994787046883004260577743222590669257927836671693436821127356903028204248621426323317746936948905014560414890048500518981483e58") }, - { static_cast("4.16496490135696059015080194853908324148505926132202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.07526112190653293509967625141143798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.95708970459274514353705613356165057031575229424640773311770967490560575262481854947938662630918869775857057855329254545872812061129308665775656748897011265399787487814796202063476887242748791769330372489092700441649278984973352735989854637536188114328280137258357850310518955976767163293227505459553e-135") }, - { static_cast("5.60807874972006062050389196826927218353375792503356933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.70244506350627981296208535155756180756725370883941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99735500279497094553640363695299701240525058593455541261394700469821111611056791299453732067954961427582921898800842237144105286658409494042658058247679724238096009700396852983653186891371272750369926281385138909360300419604531575348226930671075101518323161673992501032516753200240811209353821343888e-1") }, - { static_cast("5.00853676861336616008002486921668605646118521690368652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.00645550345715264484169892966747283935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42868005311869594653291738037482789532744928595938052618021862026535850449639612018073258671047578104461913132613998217526422325806836712765473733283115693708797988431341752008408657974271055896785613419004497755473106128411938210880970972796033569804407750025332012993610194266901383355037197031359e-213") }, - { static_cast("5.35323167813788168132305145263671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.62778514750403147104407253209501504898071289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.05603230256580909333512613256181086069213372778044080861620436376260245170503316441303581724403388552683668422287401763124771418367914789920284987220255387646685601968642931765033670724000770308127910918065433865509022691461489073952236533017504964013454255542118759406756885123664390687006240095440e20") }, - { static_cast("3.22976764266951800463889554748675436712801456451416015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.89050305023335795340244658291339874267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.01732691727954660011725367716319147371899471036670702622303272300897410300692262400537048572027256759129565470020582895602617924506137374758437886475976576037363655165839084170315722377939735400391371695808916328159137254265306017499308291350722410467152148965233006027461767679652965168830636324127e-849") }, - { static_cast("1.09048941423813448636792600154876708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.65254774353689448673776496434584259986877441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.58980988503590960516637371738014660727349100194484396379725478994088734700803526572947540745308063381145664972855458934861597057007568531182327714420486870282357356343021375166932444789575430439279485545025094851301007569967666444995213425647227644871269194317170084391746473828083433195180432304317e1") }, - { static_cast("2.44743479435021299650543369352817535400390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.82995112549842228050200887423670792486518621444702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00266010667859458204491495940561046268243246346579041029260554228176172232635197593622622290922199036969298596977304010218474771392718302157017833152484401953670784025973565870850532277945591072432075029519001358625355897190571211275599240174542923282378185576537237233948130696870807231732661924935") }, - { static_cast("1.51488749663457274436950683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.02354275702668705760531309145733303012093529105186462402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000985234516448019885473896561732145157443536520866911511897918118736186775473199587722487758817093449012349451559620294147840372481518705271731392645893056248771116553702829600792931868987911801336627246125357506584399976395776801325943965572049289654345210028541577738692060413098304903948601150") }, - { static_cast("2.67331385687573711007480881107767345383763313293457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.37764930215238656785459170350804924964904785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47571438862309533743624874136133366541454712127562663177399504286662183346894197246880043192629661657584457838166576178504996182224295507635623850476949534360416194135273172780271343507597813231256012656614579448387095352094197763495149376101171772035626900389244626161777607049448871411562278802652e-2") }, - { static_cast("1.01808534444340903490910932305268943309783935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72211847836940634692837193142622709274291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.82611384964605354323505795669056920339301763307089989948479130915805719954810517867370884785746904749334148062069679398152101779177523464996450923425943206891878509254410570738031307822715129842441609577961369156460374327926946469260053825787159767563643637983753386908235973617270978178126680100594e-1") }, - { static_cast("1.00731276656660706514401226741028949618339538574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.18228984435489814508457584452116861939430236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.88175560346904726742930639398687086396036352224271818500936901685374885901648764892385495076288151387225190990418969616688304224966648010000551417499596854632379457426863173605879611399961688292945890600044144991480340984880181190619092493192482621545694847376381337620163394916517599662918605010835e-1") }, - { static_cast("9.87804687799645529753395090111212084593717008829116821289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("8.48295760044814414868596941232681274414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.06922896545426989764243576324057040501874322165012440675766666713649225255160119756183042369835830558457195704471707778294936068250116736974227601059618844500705991834404101497665868066256287785153513125539305523985206318973305432078184236844170690028706643163133079135912179653756316354134757605909e-5095") }, - { static_cast("4.41825747491548099787905812263488769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.79827462222631995203414589923340827226638793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.34369652134197483793288072833308732535658609465509415675669768410932243039179437886058214288267645007975345260332874670014492568423533076540783205684921434471069515293441857790677592200203989418352589897685209311617733829289352336172155226574531882652742067029068005584363117523423189997997484568014") }, - { static_cast("1.52968448456620720321552653331309556961059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63460821261542546913893281246288324837223626673221588134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99996930989216600191785450269008898634303181250066938686025190496179003638914112281154344493820093586185759774048968741774280050131382009162499732926045936023057461223555387483027406180587409400576483490119308402153097647327397891029914779646839934539999749442740222968027612552511977099477561837845e-1") }, - { static_cast("1.54590681969825345731806010007858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.80711944432144022698594199027866125106811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53179160234960851931903141810390484338949709737193408192930930410912781308171727424842710235568081208824229115859793069399719735722193263870374052840504012604354910230724690998586625239385836126384899034476217672957422789468436133936022499041037971795682906772214055897416212584774512114169944288303") }, - { static_cast("1.06149875426708788185223286681946319731650874018669128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.82539004163816664938480016644462011754512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.14272969225465289903926091127128136862591595250320697667906487225773277795209213908946435749298160698748843670986774816760975159538180372090105486573778335998950914987159909756145213525174507361115992516851061441846585401483368166991251261491681595295047033029078105940961946982855869715287402727788e-1") }, - { static_cast("1.70942859622804244762450665007236239034682512283325195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.45014151369056887470876393564367390354163944721221923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99874220008245006855542326558513156408919554643242887993818629193137080289456989925446796371679686209603602304321606023129900225876158421172053263787015124593801332165057745276555467837973732533352070833078756655605565367486807321355073518225701436176826535604183999704696382097767183866284922545237e-1") }, - { static_cast("6.89165129121799887451649269110021123196929693222045898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.03300713262715859741547319572418928146362304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.04313106664538570098839747789552148131626561809170196746678563650616413426296764086879429552165570381706960290576103965119389999281879292911019435355504974691551612891938410889406352256775463548603589074490341705913775216055301816238813657180725380061984870607389371696477377291283392196645786369100e-3") }, - { static_cast("4.27946433404347626492381095886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("6.70089369397394089659936167180376287433318793773651123046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007146201085226752984788738357625307865767014027631803309640949680577376696724418376175136252913773532105485594068985474036691750060444806287575074228772867146937453568465581121950409526897590340390497454647087617789150538474509489560078795836109491866150406233412810302502603589419003168433407796") }, - { static_cast("5.40162932367991470775092643918924295576289296150207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.23362153160343446245406084926798939704895019531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06423742747299574139652654980590788059822860773454214351500321781043318590458743790589432652553137712034307825892416077869655718345307052092676953436188880309769835515354046500269913785918625489459139881331406660934866445646807527177908193314853725313276753369974838311556362819425625446719126859340e-4") }, - { static_cast("6.98480482930233392835361883044242858886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.82423550256237437978967808049901577760465443134307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00020487356414235503163915728935712973913169358041240146118411664231468676920896629650395007895636986611826729763726166983962518312776000911959157822099221405201493001705233813919293314432879950393142137203274049451871519519207057550355386892818843802770417350657588091700213982000763521441126819299") }, - { static_cast("1.01174486687951502972282469272613525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.80096038819214743220697982906131073832511901855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21386628363111930567875501391228231832773971221469956618940994372919354601446271218977478634940587702534597215097311823723977361204234536761437991482874205192547888855528921579052205936359371957155208181288324241439984156409711039174371275245144079425493549183603159162251977135775037801563222969321") }, - { static_cast("4.58527642677075686350463001872412860393524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.20426803030317546711058795949611521791666746139526367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98276019906690498641979219227000354726256121309260540509550375256349346398739094196651394582546860191649946783658447448964727247382391275461932541094336719168645988397711787831199214881092736264632640564846015317413042211277375865471754751928875230345189863352333606975129830522964976988522205012182e-1") }, - { static_cast("7.60517875978827806449089621310122311115264892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.47867011136062753706710282131098210811614990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.91022318181765750138709868330053023824369950588567785742389327678334961200987486582852651651749970246817747258718976307116965890616698349626417133054222982034680094324870404036435780314465221090580409266996951521555820905007542674615310907131989836681135988524628981589839950536317534105789412104573e-1") }, - { static_cast("8.74441787592109604670184003216704127225966658443212509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.16721737539795736814107751655456013395451009273529052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99872128426369981492114383609632051952305521589536821086005990494116094292173923739983506376030713210025133335713606540746004193037337306885070775500980783374129579854971973151969528024543815880504327167057351706595072153954661171897742253459693134310482723707663819212838281958152922341896338434956e-1") }, - { static_cast("1.91138738236028468236327171325683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41870493681337528357744304230436682701110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.61393719165089070084284302313399424679983675134163509852591590498735859530953368982681984829992497504960254661066913076235623948356021050016415986014420596315994017260378613566207333104954408470522228787617243604128057260092817202582188202107977088110567991555379686212833460754614025473450009263444") }, - { static_cast("3.95935805094525858294218778610229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.66342798237554857082587389527361665386706590652465820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00080082312808327988582209522378397852005304579172107085124537382297137225033557828343923139785908077173538670582197264674005612125502043965115623737220659926592486850580770115661984729610019606048664824477525628872443957605574420631353398611478369946179434030057548832782863477926163435959118485879") }, - { static_cast("9.52749482248151265129099130035683629103004932403564453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.36644237252481737243670067982748150825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.99043290744436080750367189311776962864514898582236218043546095145053426015403970275978470316955018068268507145854768132371105755976745328665490014149700831691054362640281890694866429566348288921720874015164835895723114083232661342953621394611916380955923119767515256749281015210664840084139488728470e-1") }, - { static_cast("2.48422895630792811018892896068877007564879022538661956787109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.55993124989414910785967549600172787904739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.91195173359063670429359403048505978785219394151399979472770021116863735850753993687072273831783588580026886709426140199445066463954822741869299289627867228462101496659941594784834735871174181621098355725481647468654367330416914560339262972917390166297854884128515599346578674725441419457079115897184e-1") }, - { static_cast("4.94911189808764902409166097640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.00486277593047912404244925710372626781463623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.45161540440045450223953783783894469144373503171768310299316311211396701039652476264548018632004490940551121650475174226555299061745541449779441170912616150358121670452871969103360706271231784736206842228875578338918267487091360709713844820843854370488212897734417544669039756642667411365232861750622") }, - { static_cast("5.86830898821921187469285996485268697142601013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.15714500475533861589827466787028242833912372589111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98538706799650092346821769070662036641738082636479009372539733284347573229317564170016552698886694627816395005478215973507005929122925461962335439146679105934195547032542346569150966461707254588652749552262131982196536881226818665443124490222705261425197752741794319954946333545210933092733146260794e-1") }, - { static_cast("7.83501026710203586844727396965026855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.38788040794881645245695267476548906415700912475585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03084303369653734759444079184018763110189145271757350290747789171120440011979438908956047437954061198621891331998729346005011749200857634828740000563446280260144290233886419978479827799434112209614567540357757105949708290107985650241181647155069956615108211465282807906696708079090952998142539773200") }, - { static_cast("7.24040157384670202134202554589137434959411621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.21397503061749550967718391802918631583452224731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98962718742601158545306104847042012373529894592940838744141601234699871358047935296869274717524339141323620050266212255881930805755665793284647269071772742030623661802389270250239007055699061760303889999391509361560603832488400525248124730452423718749922363976939807153833465852271516354356322016570e-1") }, - { static_cast("2.37737491856019333980043484189081937074661254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.16670398708927525177614370477385818958282470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.49589428217805567802447379970866851398217501608629580197067814528656191899243702632356211673360505654178344944705028006574948563210523891802606219873940153904076904718577079606890006710252221715434732369471615966209956056482424699085238332051063676105524207191799310422842401999054890360978090765282e-1") }, - { static_cast("3.01647874000722708842658903449773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.92136460953186087863286957144737243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.67051217459346602496477010560417251705712700254048639078839264060325224717762633346441800378240849611262512392424682983226473649608304764571881449403455973384432668551726106109236708017847884189936294979084049530151497877322166267026808199785689058092334141134841250691148642129989881676444005953065e28") }, - { static_cast("2.63540555826397102784364179228759894613176584243774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22820432867716089475607077474705874919891357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06662853666315384518454771688957273896640018166337060934230580664851581626370131366235045252515485872195142490483479220526746937459904335480861408290098145258297721984393013560504944686230699800648442282165588666276252945193146150539010418085408269547841393316042913883904363908615604194055289620194e-2") }, - { static_cast("2.26046063075346914672536513535305857658386230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36270389219972226646504509517399128526449203491210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.49669691356986597021713215820093379236513850713669538194655152931335203737791678558428932820631859896635045077055245394317491407809178976243739664980597540207413635355482092381212167318467695663002155241642388129246468412919845420697165678187848016391630764936016535264450983179524692369001196616367e-1") }, - { static_cast("7.44369864652441037833341397345066070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.92138014336919438207473831425886601209640502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.14010675669123183496921521116811427733135459824631474903189627969592690975861278168724266785431509343760131532834105760648359541103464859507378780843287835638142981311936553660415847409900494706845746029735940277531884780112929935900839635096070137371899495277565868989524061668633390669303733877713e-1") }, - { static_cast("2.58707365843879599776045097314636223018169403076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.94714110472695892894989810883998870849609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.94285469588168562425042075510651649105332456874498432065780910860149873485515925490595348642217083245456881656394030092730262652761300876175697759058061470631341983801941103052127203347591729319027059625352617883993869442078699806792081819748879905962225386908139580991345038356748418452094703929970e-310") }, - { static_cast("5.98084615325454649337189039215445518493652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.54141705573080567892238490479428492108127102255821228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000134883014846657688131845485191611848674206835683154280061306464539283951337684813473177431132125670490032207511582839375165363167348982592154407605611359695341748966890300250815981718309647127029989133813099179248600056821756358657145575917892530126627067999467459186401635829661375435200555943") }, - { static_cast("6.95026071869872530406553323700791224837303161621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.31225239711935908609730105922608345281332731246948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99946829922765932774347186827261089119719545372876939189761602548364480617029835514052044796339343249676137993597737045638155557799285710458997819509839368231591299591459306098956962406996519241338464726435617191918273092870466980318418139849371272285377732672340181070589663937610591450209282798517e-1") }, - { static_cast("2.24073444824900158689473528283997438848018646240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.72011372485644930879419844949040907522430643439292907714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978273147710365618565727465750018434266860028552780634511158239820481200127637360576082082285493761515451879661983436902590331857062933298024957408602175417434650700857480478630047039957552639826605254005583176460691229891227955796802817287827361621819443402008175782397464338976239485836367013797e-1") }, - { static_cast("1.02696336152198410170133247021340139326639473438262939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.11791001950321867638993289517657103715464472770690917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98056858099165538580460452287541225753365554206313892868475688098072267264713973803329319240088967254425048329384938932204820454762680502689447633583472338302047491675207245782389326788006117820440333632657775030341985234164850042741621548603372080092391251779877542034296864156086357253603371919108e-1") }, - { static_cast("8.67037052863078860909240574983414262533187866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.52133920341677693691129213959811750100925564765930175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99277952718489198651035604747543743540115676651768417733688848831717723612326298765655588890670608573536137096893609251918929861039853578444897886108139617036413401117695629638378951997111811960041138307910848973294872108144596558607179052633028242671568000242144929604511881481654385461936722413631e-1") }, - { static_cast("2.52535597921406917976128170266747474670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.67545906951556844433071091771125793457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.98282264364143312494924261974141234695472294090992155155562018911995536275433125782292778674260525238398016330461123980463532873852775335243553615531641077025771609462191107211129184970987736565747180479720790198029098762244705019025351383419378700872375798060833692002857187730789356240125924455777e234") }, - { static_cast("2.61640599122827916289679706096649169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.04737226836765842108434299007058143615722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25310610377006493866619672909110501466370730517133791833746014957247005356303121141646462034804208859942897670276612700251850886627624409691966399085604959689485003780186276442904234165384933316935452289326908453230024435075360037297385764282630607352032826861327915100978947458904222670931759368924e35") }, - { static_cast("2.82002594439443032836578595379251055419445037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.28903360394438468768812944276191956305410712957382202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981126663120663978315445418195178347518855090095327320928958000002380082757914082726230053423120527749961157170801907113926659877545130473348116514066094356797962151622116993547396704816898570832090901788549840104993042307779674567777216024811187461718618588120530554820575895739988590245022632269e-1") }, - { static_cast("1.05597237376428054744792461860924959182739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74456803510535429779793048510327935218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05450439582280470237419243848514333965208787934652393730167951372955494178606431812200728304139567804628971230701860498398849175230634941866518705534394558725303044357497118657164159909944927143807152603979711611331658711835035945317940163428557910521645089962892594811777021284923659424445609434015") }, - { static_cast("1.92238907809509029789296619128435850143432617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08349612860076613971363479471676782850408926606178283691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99982133131096723846335477747571205458555360592772378989843831769539959961315480174186773210831188200236203659966289556452394505676789152783853641019895730138295352465651299769502538786481056285110475730395967855975688507419189456451422446526295567348482093213471867865722148473015661603656725132323e-1") }, - { static_cast("1.04631933860085252672433853149414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e6"), static_cast("7.47628658058347578263536092890717554837465286254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.10918690854877106790971565776367526216180983995819057803660864422406143847654780992569076690586240873186597255294638451033694659817944978005382660886521706741399259776875547778479274738700590433170032223482808245749786294093246294856718197278358866518098957741521257199802713807166809120449267805013") }, - { static_cast("6.36259548895734333359697210141803225269541144371032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.22809772788395861198296188376843929290771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.52598782338450286286135450458954573598472802663327374811636800203700927786701774385033841837545251692421774984587119423266677067201879737268514092791650544542213882071172025510515697098553107823303332247548034598510867132891098061561608401432719775239528846321974734634143406918807796517003534735158e-64") }, - { static_cast("2.13062266921418196562697244811346308779320679605007171630859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.38534614031968601466360269114375114440917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.19098455118066498520013706754490677591984461696830181149035955535619874262474066374087254218809585126187088590005269981305550987677753928730521021427525334082765124171365549957770314171493849134109885501003714622689267145862269434956103582260650590467252136804225198053437675495933201621005291059680e-136") }, - { static_cast("1.40290401591987802021321840584278106689453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.13722689335705595681247359607368707656860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.76476316747050528850692000246200519522360470716902181350858525854503943786512297020242024222896565430817144786078487939900580658865175044648134728561580288938753166434593435107710997858417174150763109875175878816362192204521588377137231081824131646740939989148534654273494711671253618986609286323224e2") }, - { static_cast("4.37201757312766858376562595367431640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.50898368829070932406466454267501831054687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.50016375413563777673770541325000240347503109832508653488647336857427144256430628344920480322962866090482161278435394130795573385145704869750655237320185554045574687208211132875092396633526114578443250901360527371315672281676871350085960576744972765455104647558784495896122434499365424664074824652372e2556") }, - { static_cast("2.82657718261440410630058739371861520339734852313995361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.01065835722450432997924357758634528181573841720819473266601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989414562934374733570123984537478193847375990023521202992404597564318809152441993727777418090556514104681985844118458823465596529403699968559686663737740106923387493303105200565503166558779713221587331443491180025140468746214432126679720477339697928392369627582889524402889778083449486287091857918e-1") }, - { static_cast("1.82131588065436497009264016355700732674449682235717773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.66518199450072917899845492684107739478349685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.40207373373989750079079577094631199620167306803671706440022399491116271902378455342284164919251165911009699545436187010204381502830971843813249510091499154307328869929569251004649662529059388775244320275509563520973233815719214546857449027774185623555318990471004404713606927167122651605783870374832e-1") }, - { static_cast("1.46755915364810964092612266540527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.89043697836551700675045140087604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.64484232464543513497888195163429809804134777698713994865506287396508104602871734408178720046618390944324170991778876210342419644694461221793882529660281950244593440074231456401876196827229747637594809904497759425267031152839358279700896103069795279548051852526590187125738047135851503597639320208298e407") }, - { static_cast("8.30433287676949054002761840820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.52637571399967619800719376144115813076496124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03503345548731106338710812130725055986503423501253010837510324365889248445099107670056377581266593900575457325985155519568071726317821696776190852210129272438899726884098324950090040468317646989831449979292183766681690581501814228892321721246601040936202160676525600474705308542633568308584316650080") }, - { static_cast("8.81076109807957895100116729736328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.33372790631923177073758779442869126796722412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72892191263152309368418398483858745615162148917317277888912958706672096823639413941816735201743610855503568372158123380568416223942437204395543055191166267974357638190306465483077702922759360128463612732981531386413914170095452050612671264384868877433570747466951378322325020744405691770060335633788") }, - { static_cast("7.53729022560753492143703624606132507324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.44997674051331170439263495985926510911667719483375549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000626746844722828444925305995099577313805301524404103686494009081743532235207019307339151083010194102029079910572707461595043287395038108777455456317947638812268175715959797135803525856300281211049078122806988241700281453385528141559419083370029575853474851945010647429584718991721854559935746944") }, - { static_cast("9.29196125311857485939981415867805480957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.87364075941672677400040569750672148074954748153686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00130310607123242618493657884019907082179077698498276221909900016213891825242765534255421206798520599892641330780794108614272121210817595736511473642012182311222406630247676600611837624670300497417793849558413334183751618128852678982366003027694097779362865347129226028454653385495003448455051752341") }, - { static_cast("1.43727353532569850358413532376289367675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.29608176142756548188117449171841144561767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.54783993491495810650470280449947427623348347028981499281421336796280567779408506141109574684107695839213640033321254129078108321583824176685378348816016878194065833488610016432724082665467588150668096361892027109844713789484964974482948538692616206482165899790288506924374902752205806598101379280087e2") }, - { static_cast("2.70759640224985531631318735890090465545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.30536731556413743149391848419327288866043090820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07547877767428083419096142604570911700485352561609679581466039671852713698452759329634869067401784752327384511745999840407965753203664746748858043080448574928987130431330974864221970333531951352649388383982665219131905566066113253186390249711325528920747650049981618690921655600270254173866304929129") }, - { static_cast("4.86911459659213416298687016059432153269881382584571838378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.64415295518658677309531412902288138866424560546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.41012673791647055159490710611797984019709597197766274319967811180940457128047417078813260208344264234412901043623761003849931025905704896535929048868960146432780155662155674231586473433894529344683868489738341572805069281662400777414260520026876565570790884943500995948410148791343831009292038245400e-3") }, - { static_cast("7.84854690434243218444265721700503490865230560302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.46294874434749200275973635143600404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.31540724563669307320322491667157973956200661651434919571593303846115863894103669513415833366999982869469042192760040827577397824232012793869428364179080549290195624467934132481201575233560543620306283174662613044511585064238810137330925608875093333350849757044686376810419383361338035393598016327803e-1") }, - { static_cast("3.72120262782922945916652679443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.94908530795382262112980242818593978881835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.12206584334504219728846621264973553250302703946785171831645645721830894010675262018545815052840050758849380777393422282576480781495344500008748097426459462508969278927821357065182790433439566919608820582252667225317461885443234193297904549706413625058399088149505555110903375380342716569207812657836e18") }, - { static_cast("2.37172835747338208930989900125041458522900938987731933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.40757764503378617060302957497697207145392894744873046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99465320336479719185464362393617871174305860472162937262848024567759736497677820188393809529906684006391677099787283285239332531375600773760223206100883246634220752238455329498878968166316454533321577818353913376078773928516840980584615525022113173652501922620733886925072518116022140332545581471584e-1") }, - { static_cast("3.53605103337158652720972895622253417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.84582476913116806827019900083541870117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.83532969791885885135620378353794410619553188299174712267165316998085251325072529407513466403156971688912550231810700054288873685181499788137652636209514628912399831379317778239395084315052983947372535292000124065735878003968456173427606734312841500343489942261612441073694733682134245803236657004841e725") }, - { static_cast("8.31048089824369333293314215937996891625516582280397415161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.15539351718839655713821912286221049726009368896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.43482075927723057531497663442495255886217925614713738709933378320005101165593393456330280592636199704470243210249220699112677280162135519833702952111992891673206729843009842099688221317242192847449764385413153153282253151503752131156497992327652425308884952829049613144312048128169217759285595530627e-1") }, - { static_cast("1.14666020001788820081856101751327514648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.34127651548888934485148638486862182617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.74479451169065114507177142090694649425184490446641781570460948781576584635840991601731927655494758023459925015377386019778946251375096661299820054396659345784163916943122911769409035509491324432205386045800229510005976694475685559497072577311014446199955236237444975977941360792089045512126998703937e1022") }, - { static_cast("1.59284463946466757988673634827136993408203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.37368596141571408519865826747263781726360321044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12790541394790276732931574594592716168427963234746835691403175587826006982488095536822241070760245600803352183137207993347315747261870544496930500337717553335079860285134922718636682581363247953489931749833309595523465412068635376914524529775388476847978990731073661981262435307448746968442209991247") }, - { static_cast("1.01037463548088457532259099025395698845386505126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.83350084750183555115654598921537399291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.46827959515471898774763024079995706113716782750728469166998382738205474672874505408339070961454993286360763402251395607969974201963555866889613983970569781895238062738547839409015372756811222082668539050479266568911339662981230077013588037391296361362960017408451588351832195207411208108858157498757e-115") }, - { static_cast("1.66695565004290529032004997134208679199218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.71804015666434395370743004605174064636230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16219309185108283690353246115834277672387666007297244563945515894098174972467389980428784832971321037184548414733298149740082669071577857913503517445753714679820984984835536300423998074680014379718142053804437180632038614386541542054507333387434066222641647278889877313111291185910035634611028423893e1") }, - { static_cast("1.28464602296116354409605264663696289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.32457638429370376798033248633146286010742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.24945391385140670639469572823424256394544549042741674612450176003078448450232834405677926416541827735839125915448795224664876170676948629996836691342006517593947756961464160491430339434651171508096026536520981556090838358776179831242252299597098299062165399439487062435923683313278394249407345431587e95") }, - { static_cast("1.04339649065651030425752598951305571972625330090522766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.57348570830582303869960014708340167999267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.13059686908080605126564483508274490473647130063580548021629986277623406548383789633827569651948273474979014022501027829260141472868965231700274633764760142846471542740886183449424861759202613481741450387488820213753956013540876031520080117102079251759436887925675362188501650887210343405664270909838e-79") }, - { static_cast("5.98527292754746476077798433834686875343322753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.92842618905841398438405498438896756852045655250549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99969570850103897852254602475534171540024098089888531491644885537022647868647455296214377097624078476427734613966180360314627711193584708132475074727707481960045949327090840155765239976195485323033627665295521041657350135494380406033384926325020170964497589858453537791112107981125863527921983931294e-1") }, - { static_cast("1.20170821629471988138682103652854493702761828899383544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.83573171858579975435077358270063996315002441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.28605001646404799122123246583375017811401439409264242217956456924187147921073178601773640157007541107990624712528914809901097933653148466740296742087373566926721281981068789281547799916665066119657434350735735616423796448248252402292977828214490771898387468010213868209841336736006316556313401379158e-10") }, - { static_cast("1.79027858130276217707432806491851806640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.03754584982387711988849332556128501892089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.63044664995037750836987820374386953646551425036186940515842751543311970070428773125366390621088048509415536569966741084563251083225715464442813762547476523458275835451374563942157742199280762833831415410370539590912680755089996665637460577287883121257390441169299493248423283996313182295602073608455e33") }, - { static_cast("7.71075177335318884264125927074928767979145050048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.64182056353383813984692096710205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.43972399050369154988520798910605088410360743083682368257478281007222478749780386934407011016164443028717189065642983648339942330570417348717676304330188520673656075843370307967688074309785894752170432378373350782687762813282030251151752809306457995236444306078641839344649086096494148698382826630683e-559") }, - { static_cast("1.22585961723861284554004669189453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.01372669446815572924860959780346547631779685616493225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011878102928302779143036441761880708224532433147368168056931216968198406137164127175122694955536795144107173837990207593653143943257391177552069467355860858316175819319731322452047752960070552385154812027281420138955970684262089648831370958477699568344849874652831370849460274952408206982772881433") }, - { static_cast("5.82595149644963838930777910718461498618125915527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.85058768638723995477498446282638155935273971408605575561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998621052671820010209082288722125377109323080442152434584440919377662337625060557131747020218413297035621822998191924210038600199853200536989949496907248450515440309961142400248274163420688419892365590086355187405743025995286488853302886303794885670413483577122364857720736276931131470386157699818e-1") }, - { static_cast("9.01125395544224438992841896833851933479309082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.21806070291085433154876227490603923797607421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.38368157061396129371090614663532617206257134398324144105974743560347038187851945959992361814602150755480311739774866352614225040566667708793196627370259194113771020229764238603211377558658426209396490633521450588911944454397547213176293597692411663128824894095155297793732492904564527595779976674988e-1") }, - { static_cast("4.40965439472245090968272052123211324214935302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.02453990431700336927178796031512320041656494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.19534075097294910062427312364961024864527797483767863624171403928319226867976521096128692940847528103007338680691678979870596291215052686966371603169090630798213135736273205172476019108353742027081191692977102801637543740660392501627319952653856947188066651067307484842658131091249553304134437847486e-1") }, - { static_cast("1.93717944386320728433759086328791454434394836425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.08574263216941169218898721737787127494812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.56194064144518235667018224449588679976819296337783156090494451036523029483949448332763991177580492553296509263765798810431727918219796862387760870580577134565230417714219352767669331762365217747400655499790736729474440290141888015988952364748907315410294417222286566628219298383793200309754712308589e-1") }, - { static_cast("3.66479892681643832474946975708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.71145011595037033202970633283257484436035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.92304236247268349096312573893392045307545699411902317264880124837981164329935084560551082257778103184407170649203234984204658334295355705120603551098245781624244872037069412927213696722873101986921044921101077821551960590243440000669839151585453297946266135519928259442687204452169702512081165606273e19") }, - { static_cast("1.32708985351551091298460960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.56531833894015816668887630669360078172758221626281738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00077473925602097877583679698815018000110220247989590351745049914772258652489667683543311902850183669682134777670514222872443151397469262756195899010288195180434965887160900063533882057343026426147190468334739066751949659071732450855977621834587152702675615140712006936143437739732339126497413250346") }, - { static_cast("3.52775045264896220942318905144929885864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.20207441294177685975341773882973939180374145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.19164668712694362712251058826210564533792000244902438405631163228898011483361552530774835675890492313952004188178746361986328169935055931569379688204574777223286241370824460769287348812931304022631646073013552253933784290828875633916987679684918077103703055564642008994164871305721849760321403415697") }, - { static_cast("5.26721150567696895450353622436523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.02594021105445992042559666401757567655295133590698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00252610964243996116042029581448234570507107619387893463104238190901401098561255564385433004137657583567661490188312636640964083001255112695679226528406143723662756570159800308402030438165398677929717369572388554610405821138849352686065896479954227526563362385890018562652478441542017212666618852941") }, - { static_cast("2.85382232656423795447153679560869932174682617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.21622084331017621394721572869457304477691650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.13603045090195516704596534175318401579207918841598587146324536013529784552205952203801294482696233870522877138037982641276177183524409958004888324787356863626406890600708780844863240402886258989044381114275612277702992295412653204859730899096318397139691123133990243168861782693287239971524166152533") }, - { static_cast("3.93381694633284512141457867073768284171819686889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02640519319720624480396509170532226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.39863675434390989723351064011214037513398262547140577736762821607782111942948883337093856726075063500818067573716198405459606323946322650536233861891286348318106161892821504014313663700097828008365436512713907896457061009150442887680100088324705807016079909429412724343222986472982422270499720872159e-3") }, - { static_cast("1.90723973215819387405645102262496948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.12980954046070617650260325959266083373222500085830688476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003874831722429751496737922917004435479965257235816453591525868492670813319281541168275796018004391940278219820598993631669244673032352035813333397881915928790424205764915135090114218540888704442481908590391442502493189810976009897523082978954781479402200004590037271385433077485827559023806478611") }, - { static_cast("2.08352376339207012279075570404529571533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.77328372265651944869168515905855088021780829876661300659179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000308249415661310193935943862153702303875909245307529450912006821815453371252563642757366042171762708256721399309832054533722706035892679765533583739735266608823632317266441068592608135365434098808509810551746075126687287986572543900322800829577692516676548344312574211742425657072976921014511642") }, - { static_cast("9.71724513689399464055895805358886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.53600001609863927917037917936227131576742976903915405273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00014104020491665960642725547509974756116986496973147973056122194845971531406444606607453003866992922578566310810305178136382912507500272971783788119308610688740112803511843108270710764262658648334376396166426766278251188688321297859103006142315969456950763638190401996565523343208463418705191958244") }, - { static_cast("1.39802629394119207304099383737394646232132799923419952392578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.51936644048749802671238740003900602459907531738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("6.22241870897130620142553713444278896319414844301127628403550478555392596780554049192378201563747768162180873879073883732945738916895322915439456198565943172406197196260279982663959045275534018807122490359500452521705604768928620538202140216274727339329295923594705918674314862791990908520063913560002e-1") }, - { static_cast("1.82765007732204644297357987170471460558474063873291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.84318950269757237947487737983465194702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.44507161334831975914976330209249902713146345349963201960249788428960802366282255229864854849664361912073985037641790912699757539023105844864929631975643935921225809946412808629805438733741027621604921419911409131275740749522537202228860884159853851509071131465735369871648912668689687943767400944117e-133") }, - { static_cast("2.49872242289261521364096552133560180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.70475708243581758338791587448213249444961547851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16348084392128872602170011561254935010976642009637548196335495165701186585536416597718806964461847864028617635977334329848073696152520245124091137376311572172062522206250814543168673719325221226847866492589752767830775399781911226358430095279351842770613889036173222279808875420192058143269430231674") }, - { static_cast("9.73728711278181032710149489517448273545596748590469360351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.49131637906343872401748740230686962604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.07165047632947683093273589058329846367047057355046748020009102510780065766705586588667687646255828190502946698129852184038457736930348397388946238687402139213354445146888181529201139114650892414118512134805367250310852437034078342906915160983796227481872425495472151960083249503055095175373933146792e-1") }, - { static_cast("4.41558345670632190066440259101909759920090436935424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.02580267030248754346610784438098562532104551792144775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99968900351231822950433739312428495072856038776486153703336951900488129027691896751286362525813536862927182360156159008954621569331770038862723809677808006540779343891491372231781933232571078612298233285052166498857617406809139173150092488738015228536389093793575323664246229233166651636689627818170e-1") }, - { static_cast("1.69439965482008625397014611735357902944087982177734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.70724294373208412833875513570092152804136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.82874963902734961145255850699575978876746826231267390332055952052622176060893943203741788304684214781121351119738947541263489494899175563981247061980860747331222509426652450764505228926170316851952179492921780437496906593243321687842665376169899786546461700589626075813241454757704572169462564574837e-1") }, - { static_cast("1.03376346181700355373322963714599609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.28989017209520627493812838793019182048738002777099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01199452382152846374481951076631164582584661608322894290555407864227990207508639820617740715279797178581146570337346215682655494757376897027306747771093102874076785395996716253897920655609144243672317898938847395985100637001354712944101351050038536687079382428227717980685264632621156939159222226580") }, - { static_cast("3.11283305234331397759461879104492254555225372314453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.01353477046427009958251552745878143468871712684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986074588519454560640521673442935641990554362956049271045530697088039943872329332770296441408515271037076808977915428133116228156704302455915102356256867263136007644093137679299480159178566422686424390921886424606676712277018147908640199369062110318937373042728100659267805929813035245614797996696e-1") }, - { static_cast("5.28149186098080924978148686932399868965148925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.16657975145258205884601920843124389648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.28853014056156731737794697397317103994217559431541111572375406126519183769444357872853226505354592130101907012445487770770781129901235873025553849331106253792412404560306141938477978026852566898693906386886543485615404988699045603447639500571979436388663669239796393481965967462640474331680310932353e-255") }, - { static_cast("2.22250599362956213767006374837365001440048217773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.64204894849468473694287240505218505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.32843078440077439221637641999286892206805235377727400014747144482178933184733036820827184969102097810334387052048590277206436733653974464975608297721942370810634826788083279979408768576378602999295622590369226553818034587114239802440932660296228167167346743576531361276267309223102513376997022773121e-304") }, - { static_cast("2.64401597631773445755243301391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.48515468216955248692556779133155941963195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.22595558957063988125039996231413212457799685089809815878697787456948885300739760428233740293311835672030485009491199517382307607053064251483492857230753137256332086797523013500249415836024187602707789116720162609479623122987122977570646771495383250532455162474303561808394969890452286012410188771582e1") }, - { static_cast("1.09582116879168154355284059420228004455566406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.12062729806059380166516348253935575485229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.40731230607113577867418131365007953849097556433032366687124266265609534681297061468250410931194577479128955229993084028648709681104213544161468193428670594705798621530529153971465865443890890717329532471903443507290510241292018220973611927868861647858691705199882686680328023542042496509604517393163") }, - { static_cast("2.87650329232355375097540672868490219116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29636994307592203767853789031505584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.22908880787878338117870181426636174855444573322349359087228723914632875946311491878034980145023441888073390972797385266938998183475968716718276000295270333868881283934630328911650991709812223171518435502540229986453603655260898220094106548795285001784222894626512051690586979041086530161063766088286e48") }, - { static_cast("5.43192335581155216501364479952940200746525079011917114257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.05490815336499605694119130472330425618565641343593597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991447218133598413920881391105179265568552579320617946001886143605253717825160221002770761833078341617996929941439664383856515269642825892255570319730959451798678974258583863414985420861854967974576953145352608585972242996479479728931155364675877878808323939895254383920003458645959690646207544957e-1") }, - { static_cast("4.24450620737656849484897847446518426295369863510131835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.42617657776718897988388334852061234414577484130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.28295177297287815001307142572162153750668927480049029937221930255174310738192949066940496577252702629998657734311395912708887847618250337367575924375521236807234588840327753338387239581722861162855798729933237542178055913633273793008757291901196363208416962469352000552707123078294608807586649015685e-1") }, - { static_cast("1.30733273631510917012210626353407860733568668365478515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.28858724063975630660591753517962843034183606505393981933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99964885633207072968580726334787422174518544602461721143383625224899368056665861649907581709049484723249000855383620986446956783244965088674964206494776757278305799759524067667215395257158003498553463221431113016348494389058271382782227321845047125985119505752219731349818937084514014330356212827292e-1") }, - { static_cast("5.05693319148356598344284940083070978289470076560974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.71295988486159203589842547899024793878197669982910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.63937121881680868303835544307084885674388908256423717510775350630463810161245157254316013064889945722190309457613724784742119883122943867724213022530021363225255978426044946346577578461808416905152263622045415849140604671011655772958990313726815312540544848648362428160986497782665450731113127323529e-1") }, - { static_cast("4.84423969203509041108191013336181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.98413458911828048669701018980049411766231060028076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00430738669558002031403659131744896728312485313631409231096866927631637993851247415735380222493024677897434245013356617271278547792035688620287749522586547267897264556329014249359221662180556496497208175354676304526200770138492165863545577626683932270268515447259703077574615595169323328662157853185") }, - { static_cast("3.70784803656541983585270827461499720811843872070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.52501708992864104530440272355917841196060180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.33573197351168666887962631201029384882638323647836131662987813863879776215233605661322116050262224430353678691583537529582375506359810080440891529163886160078411813398386404062767305381544566179454141780145518165423921596307439563187082576279320332050551415851387221311994490392675793780232895364275e-1") }, - { static_cast("9.71655514772415699553675949573516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59166384187756904111665789969265460968017578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35377653844658353569031679679735299370922232948810544763027212743048187579990164187893014793934410534408779634667801500692064187926463087757507629287841868368096408503740782370080191376158895711024144836742418575636184986247750729343991462010937031402061673932392367262371858670977341473615463130359e1") }, - { static_cast("2.19264585936548201061668805778026580810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.96729316179001942387419288316152687912108376622200012207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003755636032301823537943813016356575902489314188145066916221494580392625081472816947024292161874513732270899683702071327371665141574567958235034154797657204764921080200596842458370044167411926333595258330617813605034939486089552138840272033589961004832483480269032835319807553392086565465392533307") }, - { static_cast("3.07913249304984926180139837015303783118724822998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.05463804011641570923529798164963722229003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.01796919571840276681288861157787148204747502682382876961304668410493347723226232435621763407251840958497596600197906374696494268910490419389807332560043086656936398322936521311486726743408171670806339766715147358441693728848925652781609216889389399280179459317545232154188799226490332505068768929180e-13") }, - { static_cast("2.72793625008602248271927237510681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.45107876494454290927649253717390820384025573730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21356364414706225993709314217781803611734556534595777181951409142649823132949473277169982486320740015805393683502787636048469072138860871755431959907851351864995912275227191432009279405103766593019141570051245200073079914866268809278471723253071227068595740039873872137154853304817823898235004618070") }, - { static_cast("7.23608622250063859837609925307333469390869140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.31713845716947162145515903830528259277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.20546015073919711264373148066122758661068546232444031541084969085534241548251886930568813690809866385000095984750691172127616802373754602142656508934912781801862005537086317665378844206989588374435568687107987862008034665185792976330120721552229886514045101504253350965371418298181204870517230728955e80") }, - { static_cast("2.57072303536429899395443499088287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.69790274993758974475532852466130862012505531311035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02140974620888944930305959435799702728843289682449376214925750857783066006891649041158724227299321084257799199351924992147805951706584524451302681812312203333848599297059927350897068391576429287666840858314350106940048605718179391844174140189607359928083054157216235380992076831905704302805940691484") }, - { static_cast("6.27071378772734664380550384521484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.77213705199215154541952932376602802833076566457748413085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00013045496457016358902387902369248820481792505684604793782357003458740283012026953971512527832247937686018956926918760579827820618149654974789601261789353438501933209142889274324701479760186259188286221595702693452369288516143444427753506877231697874469255361407264955531595418134590240336559943863") }, - { static_cast("1.22109376852135853575020973948994651436805725097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.11543635047828820815521422282756702770711854100227355957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995551589729160336804918676630911396340574056049766519068518427735361038006808700598379055737548489964622176597729664945550621782605173209704608243388212974829930345797712949588621847644770093271093043600103623962707878170666514346008821208975619634087411931268385031450753049330763535153583731711e-1") }, - { static_cast("1.52900990354010689331598626949926256202161312103271484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.07910792856703210418345406651496887207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09437152552687759915144210042422837004776738858769798785362828201158918075365450163702134968526881164477730298716543350719085306748967317190021537573795780001155496528795641888775374745803795044275135632851107711558035622505495812638847592959079891240357223230602055612544312975892640303394964825816e-1149") }, - { static_cast("3.33574880350019498109759297221899032592773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.22409910922928020227118395268917083740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.53927322890034742368017335227292720005783821228941858003370629012694382557138392281089806659775813675293365836774015539525201899124038456550795641920581579865504101847353382339574548922971435920120403286201070202878099356466592276232925556211910029587973272230882852354333961947656943741233580547242e33") }, - { static_cast("2.93886093222884170472752884961664676666259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.83152139210962529736886894582426066335756331682205200195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99965326837122789351065801513643019379691746234431978717545032882563543159129029000520238088911519893688798595680083260598269929340163335960195938697476035130411906261845669886681524297055544969116053569875568029319976030656002722062158836225698022385486930605555120535915405105091329811282147529892e-1") }, - { static_cast("1.05363900341240332636516541242599487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.51733416318811920042719521006802096962928771972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36944656525417845173858897538026176879580880507614615066496128471220543538723767528991906038383446820702565624708556443997649629495841259671527437077527127938789704415913380536996498286764720566639200198900869760387706475703380674649201567096875423075710829719565752777057995176317511826228555593581") }, - { static_cast("7.04420993592731428016920358636809851304860785603523254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.83514384888353143665540301299188286066055297851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.42999851704960956730922360017793140547106959683768718211070193339741510527923658661871542385815054985958418322575081567325471819065963185600217971978825670497003073742499873659741487280818814513977323524960437583297927902838999554519027556228317521167236540123085211060151247184818776639943050911394e-2") }, - { static_cast("1.36453344822830520570278167724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.64161706602405751964646185570018133148550987243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04399795038635921897857958256316651977445152567453727222518284598769789391999595233661749274120961391885225992798836625746470159354169324537076101684572935560321844745400772917299981122731280255675880379891143456808614768985468915540339803333726839718219814716863124296189939533443325484535601906033") }, - { static_cast("2.96565824250737205147743225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.51611044873741196425953603466041386127471923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47522068392867838732450708572135930567101005550555468267204809080882851453167258980507378379243415338266777301093835073449659828508711197010120745211201439735694186362327003324753635700543968787946652069972776477402704033680932298818937199049452926851734709666219333409709557278942834445272506685923") }, - { static_cast("3.49571885007329983636736869812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.05030442875070617603228129155468195676803588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00424637003637001346519445137047903985527298734444205998841513031143713650570988838061609722582515075163633719319500702266902153041674931227041528924269656845803454259997891649918404783522081199789884938037449889035577760958358376931686006190221056227385652828889051574541455553647177469994824093880") }, - { static_cast("3.48704350707848789170384407043457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.94470451369696548105103772741131251677870750427246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00348622623956426654419790365515385008204532308719120294458056691444071691627567637464093877906643804041743573926720499607391861016395825332249134843376717727039444569339034648222083969616342813466476442089528251404075917497087087133158228565604726619218594367232783173627524996497743616209681950686") }, - { static_cast("1.56866354052483725212141507654450833797454833984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.92382444394148101329822253546808497048914432525634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99458548775941655985641049562781270043468152203580071617312952591624765716886645437516907451083025631663787001723138256606416990037410952933773901687094742927210507959414283830075225958048767485241813607677989510714884949211624158456814965576504829085206941026015695802504061055800475236320588403791e-1") }, - { static_cast("3.02555496695998127343329997529508545994758605957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.43476200926107111399687710218131542205810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.07162439112148019358772224877510168973399161717373536875684406796915754460308189843582561832996734392043166689610197386058626738901780367190433337506557349349095623450517180395264699151519926104197461968535179024894054340573408793813826035189319052898390671701445304365679647915192850527101155372317e-12") }, - { static_cast("1.13301057369715999811887741088867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.63391498739915612750661644270167016657069325447082519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00152645922689671305334533143447522531808487470636607472600090062282095427316474560067944838274073843864628772883486893974636361201579261003896147984190781801313303984627253458134496161410984325183430174864002871499528387099093919980953756534711057395376377803880481128200568335684903772454493560544") }, - { static_cast("2.00289080215499270707368850708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.63919332962040243728552013635635375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.92699766759603617897105296135509926340232009672802063778499835631207758035200425882438232730073541633716557508264570905405926283429555595877466543065569320408150504538307810614249593452939955155496934950121411097262064539453295031460705244148452908856502571794692573823194011760644101511653087442625e3716") }, - { static_cast("1.32507839540064445080225219442127126967534422874450683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.51887862883488423904054798185825347900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.03647722584318600030967144335207527953463651392633257231597431308252840118498779108498324584815641015064709374407448575779770810144009458027431983385495055750280990347720737478088901276233575808268895728220588756650828610378844764861577519796740508015409537773234457412772265295624580311112182954835e-589") }, - { static_cast("3.57603431414909023189352410554420202970504760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.25925527701659852259155614184749083506176248192787170410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99982482017295343923291140868824543861889706024267738325920940955163642168596277387382324596268313941030962899361898533933991225186157467591500415565798572470081783136017764613428509329263882432996891459823007909353566621634663513526224023265569627278594547455316883257611223218894909706813593928661e-1") }, - { static_cast("6.37895215316995745524764060974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.33606864421000417781498770253278962627518922090530395507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011705660623425091805720617137318115223118739797033368829524572193511821979599497313069101487866374165387923697805554918674050522785359139471078208862147954503878603840716656103170817064574728416607854591674468869938491395161398773239010400175784333016262331344116781579064223044329496394945074676") }, - { static_cast("7.38104343240080229548993884236551821231842041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.78526096140715813593603800146780713475891388952732086181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992740925564330652806516420746938988010148239633275154076421571630454719695668630175026322867662102076692387029189869547293172340508820534949790931051258505036554857756821592275590340005422029182367955076901146714768419205676755504470790282646601620852828276821380880075367804416790635127471984294e-1") }, - { static_cast("2.24606666462972934823483228683471679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.56224853001515953110356349498033523559570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.01973918494886267810001894567464669163247766970377570638787946610322435627850446066260492108701967988500602281478606685233882133420407449502588207373547970434356681888963673609480451591224779378429762251379481389292664486026843607177275521955621777327928762357765933587555111806380884809909558908126e155") }, - { static_cast("9.00800182710125019180935623808181844651699066162109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.64432725765355242097953691882139537483453750610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93259995118943779913113450886803213157300236441759177808360979990670369813799397673229074691051859756881735508284831070803950318509897851789286938821324800564473083981421925321740139076048924264684734691750703913517330543410997193207195299362629750503027996358069377923999788650279477370768077765657e-1") }, - { static_cast("9.41820034138939809054136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.77419300288664260104552761188045906237675808370113372802734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000890381075384949081595209139696411199492416870417459364082687864113657489926105641478106668362778068330268736600393352152923274282322515415108939987073582719187381060734722668227714154297709452559911296248629890116220184188866083605360898785001127921221360852853375996265543887873427220880943937") }, - { static_cast("3.73692731999517979007974233240929606836289167404174804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.54122149350758519403825630433857440948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.92632813942166735469252865298175146289395053013193471532530902730842579927583105349449489218906918310069151271847219223504300355763614013961247019308729802033635205970100220700085021558381217246935232153985446384879850169504304149149649141113162707552300166988589633450196697040655835196191118606631e-25") }, - { static_cast("1.36207381223418886456721921263124386314302682876586914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.62468618182947011518990620970726013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.23349312978912488484797519539255018773821880984944037182332190114599517402131412348320914129812507474815113624208263309735483442308554370722059051755362465566371079854655405434396337539491832247301779055162543337811300162664812836135792078898777055591459214033387458633919871456241380657515870584905e-1015") }, - { static_cast("4.99439352691324893385171890258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.82669140887688854490988887846469879150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25800762575108176129137940894321369236803059535403474287787709049193999989553876351149791249607106743078893765328229169808063556877194151113548299740103775991789375636892691914854010648529483996498522632062568652379746122433944483375027665116468292026500341138320088041194003298397510386237462266236e179") }, - { static_cast("6.48539296127664783853106200695037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.19081769830710604285428644288913346827030181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763841928646063179945311430619776672100366204545937731495139936077193534063748395270846081233643612207997993464082794803985613863394615181696471224069637239381759785944556677466232970035407360811317566511537057177507901702757204703329800142152099723806486139061978862458791045685416916469263617024") }, - { static_cast("1.26185358741126574244617586373351514339447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.18707874563769861381290482427175447810441255569458007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97208954505633083962348848418154736485944843062550245347612203304547965531131555025237286475690843458460809325029245321285039436520603179307117618768371875438665250167675789128497710216048233584274468422162333906486838232593986287174975031846178589748114260487176217087771250070897293526267935699686e-1") }, - { static_cast("4.35488942342848749831318855285644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.98678835531215099763358011841773986816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.28936120581079817550967747499324146341809782859497306106568788729215792440868081012592482836115918565108733027645928062811796100015424546044055914594061783213133483941275372186699846142681689537346156745852091720729474664315028859269079769914368203114147150204153490030106741528606576208240181832379e2313") }, - { static_cast("9.52079140369027854262640175875276327133178710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08107909706786978198955750940513098612427711486816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99946912731466247972527890006754510895764819973853843000662583785640845446566388520861934833991540886888853432324685563515222422612660717906957938307798158191679485565611171204322088502967506340693425660800080176478497228519680488062210430869030836704176100634086409155754383655120084467598988079204e-1") }, - { static_cast("1.04090684013030454480031039565801620483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.93673921485533583108917810022830963134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.11210338662691592819619664979726597449100163292683513479170961681889868927958630114518483290408310841588879531996056535646660865328863109763975044243074863201932805945130071457158971557983161341534770079019284360491414192422030250649176833692020314068650401152520803465262499102820988511235853988648e197") }, - { static_cast("1.97149801027129978336915883119218051433563232421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.08739590531112617632913952547824010252952575683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.91773157361409781701715493663763866515090466561690289420891165770114164193580683686846646130438934752909209919079027125210567061374829822112866779201464446464651026659338435230202216580437945262368984290532688736997482187636274012593325315635831427955296981578931251003363149110123293975764983649974e-1") }, - { static_cast("2.79971511541740710526937618851661682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.78721875202228321077857486898210481740534305572509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00326623969490901566461359485954800182836515927200276988639325398663724684484176518830065683294723102506600723636309590040090118084917994679575687454329398419185701984750026134555302778342008308134679599723649132979721129657717437355628051914400727321111879908949789141417261266151891576137055521720") }, - { static_cast("6.47180277522192426431502099148929119110107421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54396046637904049703138298355042934417724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.11393159288848940315388484390073955173736785149894558116032886653088516351969818186256818732041463123159800744120590173108691581334056179094211775690837141959813271450679799058611736101514220405786918675156348944553549256908731766892776136986705072991002327432436231317606705791658862062772822668961e-5") }, - { static_cast("4.68478493824730685446411371231079101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("8.08503458490309867556788958609104156494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.97762155395492793734284548790084346203097684458052431296538227291993735975496781864258983550151454075639982388971649044469779839674940147551147838593024539580668837295332526092577626791361518961708496544368414553255175123291725694241746786254191457634438577633532650001615818789185478534006606741407e296") }, - { static_cast("1.54391459551929816074178347662382293492555618286132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.30291502045438312151759419066365808248519897460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61942064374907006758472323953419672912600288860094391695046538452658427001421356899386802781741233841276963853691331000772213773371503948038327239870459585412114416103967368390201886001946927622637207918880459451317082626408706757400699845882572764664471363683650469561537447695573432201521718527705e-1") }, - { static_cast("6.48003875925739691865601344034075736999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.26121082452632900412770045051047418382950127124786376953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00006094496769763278820872383817879036100529479018908630432836412716347076273911182394224909321200839758060396148281450949863621182268008379068612869939290370399199699187329868380547441347229000962054100848350577521278040241049817698210922858722233509600098748764436396006044192563867258556456726002") }, - { static_cast("1.02255146268133501052943756803870201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.89932691098755263015007699323177803307771682739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00013156917767091552599892235129254853484398955770015153844565825349128084659104946293310766324345122756751921898192510410177121820174080396618577123202206891707775599129806431636068338328182197155856712217515198962725685962829886150997851437588418591804207516238583892908865355284748545102405714042") }, - { static_cast("2.81888129121324254811042919754981994628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.07352602363188209810829221169115044176578521728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02324693289074461806065314601130588099455748535483252525100029761881094483032981058215632709470546862166291555062468221229877852679809354657976457141823806639541535849041446001105725715917762334478759524935613974359759936992996718201195710259035985781666122257084622777055529931477121573215140197696") }, - { static_cast("2.07185404527926539820087414867089137260336428880691528320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.35292300705978618680092040449380874633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.48850440195174823298359540121818302112603372945421421598869878434979555804675505735326375593302973038814914197710751833892726619856756218734694899102028024355384042325664532283875944124268902285546831042825514027899847395159917919088321233227951525026080119430650746383889735094027434636578283016912e-26") }, - { static_cast("4.31935286049695476781606906513388821622356772422790527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.67446027602891164636454701675205569699755869805812835693359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99973122517169758868298611393816315674468708382437784046013092517874934197350186005397961789565235843871109955511656116413964407693637441952651815512224774438246717669200447114406421198392169132912944363201879586414171509537947822165122722681222879324770937027844102716000158168894762456660415032672e-1") }, - { static_cast("5.60728659565255868472196526530737514804059173911809921264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.38030853130188620203101790284705430167377926409244537353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99990816207746297627000228090032149940299388165914304992280548917955938225443662692605137525666097388080408339273626056667955459490552137971306327684500228508064672496432612203803093818358636762048072433804065084080756285538210846111127149390742779965190790248566867146590543170273767758612958658971e-1") }, - { static_cast("4.94365872790929563630746290670003872946836054325103759765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("6.08107286586160853403271175920963287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.41889634080305711655291544430541860422410170311666966191109605478799772032330347327796646352426019590688459329571978188218768772574725991603534645626444629132445446486278236532522655245444099755490849273965885852698636839519891473821647868673766453693048753250768728056307822453273785810806442880557e-262") }, - { static_cast("4.57863041241061873733997344970703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27996139284958445614392985589802265167236328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.85252911535679891073378835901479886089967576299789401385670015780551662533990060451545346245206661914640102653229509656129118798311517873586006356564037704026911300448200277564257378774264510533411693099418541902845247573044373703549276907520323049567611007543654341177174512295005876331502328496351e72") }, - { static_cast("2.08423524510303792567356140352785587310791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.35070210371325316600632504560053348541259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.69650994818884808551478851790421398330849110943521821889862054443832715742450095948994740658527477301306542925058870703929885411081233767845292798598894899925369153906803097693018622562446710881324699679389099964263723003154543262693904642747226514772235244787350437914151428906711221635213885798789") }, - { static_cast("7.03507355339941797822689295571763068437576293945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.66736311094788106856867671012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.68909935340978860422757035820741960584342288164122209394216788923406587897458745269054408633969378408300698489680800368145152233150125878615072546588959342193206959268161227822392820692595901101440058139059566058188384350410226233241151749648406111214064140648607944967440645591239738930953785109368e-1000") }, - { static_cast("4.44777561798017704859375953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.37314005329937316446375916711986064910888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.12314549862845492717877595964768115546325186339715764453604920761210996544623734651949041265076846799054130789000520895961692269440989421981634150513113011053879079524507516981642085862682964932699084859566571367826867471772759871670601934760070910316789800074922999274803369631048113774053097073929e20") }, - { static_cast("4.78949184649386006640270352363586425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.79183351174304107189527712762355804443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.79637132177375382162263956935980813855595791264327736518378404210637984016731507340572257630052502643907564502937056932274446805895054500000116906646009851736492937513833076602489625307279653461589071484812740516746714953908730424736460829219077432204380475346934742691432944334479643432469277088306e659") }, - { static_cast("6.22325830215437599690631031990051269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.25225952793516384642380501190928043797612190246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01987069469372759270453628912642728954230513534833089604954661995171725801656380902963421144934906141234552439696120736550210382743489449329697576830407056888118360526079463661066722214220114165138840831176499526985462507289995825151030297233511088604059436353741508088143154130210563278515547311543") }, - { static_cast("9.12400440701637786139466257395724824164062738418579101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.34400553054916376341521022652614192338660359382629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97821977486950583166084719161557689663568325790003522306021158417755185644936647878316368235185593329253132043532554677812935724747863173935255764658313396824835230126055857216828346612262350441572667853382236006603976105644273478945602579828808105896550462847104108659412377316272488653010471184196e-1") }, - { static_cast("1.33795627811531119277788093313574790954589843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.48183812852515298791582915027831290899484883993864059448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000384349299045776862801360403732363545774843774701655200272080627739941386437175886379606902727479191090187794979610761904053274682140855025508483613322969568848488035529156236560186742600966591613965074184599845133474883618868818832890976311295886503114503738779326119140373893527826165039256344") }, - { static_cast("7.06939041310026368591934442520141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("7.52070113177227312917239032685756683349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.16601617096668251300410633861451144300904853213668949893514704576723535839139585890152639279492333481781656085682222252609689619088940700517823681224990153082715763605916833922234577262387169239662906567674441665483003247288718595609022710170750805174093013421029787059183231600348513197446175716344e289") }, - { static_cast("1.46809474819978857951241479895543307065963745117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.55150258058036227826192998691112734377384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.87508829078291473496350060709599928627355203095913409392108636898471105714839831302147923025254259824329731513966469918955762532776229610929533035120642195606951641982085398951090528368050382553009140996960228822308531093162518295270230167711636888797942089811261515649759631850124542086583338696866e-1") }, - { static_cast("2.13403424835757107302924850955605506896972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74881959702026967828913939229096285998821258544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02087023232278898673025082821180943357336233310089987611387411667231521549575677239762600896132782138671932320359043850059141855317509884880628897347559802452573752440941620827448739200875424446592178873469737214134752340014718109265906882735838254335143242217171430272779729156476847140495477447567") }, - { static_cast("7.95233844752690766100045038911048322916030883789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.84851678481346848315070019452832639217376708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.52320441273088937482705455163451804728010853035570734024869989669472225400000323970014547943529070869582874785761555559916107563529628329435884632549334664560080647778917243975126257892837384804686623525333256233581024540617818741704180357848449262419278792476592443919338009722004675820379508226554e-1") }, - { static_cast("4.86469155616132400629658683044453937327489256858825683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.22877434444638661270587931539921555668115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.49398596693121402232511551773946216238940594887656584112333721649128338309222255715733045830942439483758414668436262063880698192055748811167639524982228502529443333539688201437948685066022343441584667892362197265423697997073104183476242310932155094648160217817878533689247152065556146288540676206268e-1") }, - { static_cast("9.97061023610679164619341463549062609672546386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.88064355210892131253785919398069381713867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.31339250305317586137103280435203540286641209041963686984564977317675267872546421630007855518104235103746292194256810045376453068069833982650717834727768128915903290190711155087191155109113681049655966851631090461344965018352997694452739029417934674832819743056725077543693812469593253205921308221308e-59") }, - { static_cast("9.25067228877758662708430392740410752594470977783203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("6.58041095700439004900772488326765596866607666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.34794411703227640768834559037146678081237450497151808641284692857257405073921261445846307144839876248119821368257643009964194784066475970698686506948363255089072439573285741549161564675949811535766568038690509602693098394199576228057991570285009737564027696021280582562413585412543950911326853262100e-1") }, - { static_cast("1.27144511159262219734955579042434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("6.18836319449928007330186119361314922571182250976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.55634262177085310455272777009125596103461766420555774353254576944288801886851836915203973701385795773437574206488784269131348804974222211728133676956373754063980028710578189114584286886146802067657659439377822750677886486205610448378645450751753499248735236114037268909383185086028320044219137753422") }, - { static_cast("1.42205871841051475712447427213191986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.49175822061007323782177991233766078948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.31499443769464065089935605375459683035642863575091614297392875457512297919442473147075015935528487370816930373009973708163470195938036050657595355692444453780282744702410807810566482106290630446087507470829783752836539009991223629616484834464198297022741851935670638283977884632514115384409382379451e5") }, - { static_cast("1.79830846471683798881713300943374633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.15740741801222002740900940409574104705825448036193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00026780930725147708425182905646433452420215464014520968261578887024273841780021979940791064143678705875846798937060716374571767664452465951073901977576420551043883735274454852404885141087100496560513919957329201186421887438051030917217421635429456043545707951122601188323754670287140035060211268236") }, - { static_cast("1.41617493747205998033678042702376842498779296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.06659473408631241819755075539433164522051811218261718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00214037426842670551611147350147052752193345171802567422360034056719592273707967867550926051192650203531759829732673928643729296057128383914827597014066465351929167430158631190618779931772000386360976972135737607634338444086468691888473748375182457345550820744493891034677687786078596412978684852640") }, - { static_cast("3.03620445696295947202170140144517063163220882415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.77755559529355344761114565699244849383831024169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.65907453809699509460147409829901675941527854788885630333979265214696163822247505595008528776776735251807610239492515526114770917079309768787319965003601255566849812163333057688474056980168539317656182802355025321396669769362336327872219770789870937515083196007462468888621524361865732646086424336453e-1") }, - { static_cast("1.88150796984490007162094116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.96075222779542400530772283673286437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.33268783679377583213014321394305562443708551652324893198731298378098553656636607906131354129802125769805603337990709647117721910862833606977379369954861887407787985331605230823250624512728814254652735899657072127956911865541366861599183456838203731048557393074731179271410020592240238165188774584943e838") }, - { static_cast("8.89727582886910006720881938235834240913391113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.04127996077174773958962106235048850066959857940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99878344302358244722248144111222437762654865779811772935718213218215174416593116585765566781129897695750076434329093650632173287168263229734935010362448649517261601361617830618010680773234135778887817284697256494192909633866400288905649938277337678717548098982509457693289514879908537721749577461800e-1") }, - { static_cast("1.83083205221824460440238624414632795378565788269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.51305815268083279079291969537734985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.08759465190948202575969824985581134108808966132826957045953621966485495100532942367792704772987024490520063202480279983957515910756497430137889290866515761789926914423548570454774810411630371091100113544891279153106437138536746735808516608107152208446229082973737250416694137957514739571766896873306e-404") }, - { static_cast("3.34665340825903966375139131361748923154664225876331329345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.78685988588032159896101802587509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.52212078787830927194297643296251781134291925779877466674871728836105722487573580131785145484495276918545575844013070305855330551951353365366550132397674036846629030890995284036782751533644901503503905390007269189142085867922573306793968734446410118933272999821289312420310855129959801669881803865858e-2074") }, - { static_cast("5.33927735030905274151661471515595280834531877189874649047851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.20766189867572767122939902950662371949874795973300933837890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991034310800110010707678195555035460840436574922962233018600570397473321611757701145927433415065972844383465094874922585959664097551124468322387734536918015102243687653110114625528443011692213994065730522520240541725522418247328328568974843758308408263849244150678651666777627782107985602066092068e-1") }, - { static_cast("2.19994195074324068173154955729842185974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.06707480325778616969678580517211230471730232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00952545862365855685219042115608145190455235613268820530406120489310419092421063376518661644406509494089174786391890344365290616699827245940846567812410266752069452669091303167176618868615804832415636793311353407444727299687139263635273616648724056070625009496090575286667611858626054037393426920940") }, - { static_cast("9.49426131626506853745939285005306373932398855686187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.33658593189578134285966370953246951103210449218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.10953513637051167906362488703903898283324995313357160919327331939686921714903739192273840983847338772103005796728222224591772689334463276313863779738778665022741134644128703431090827473653846081611135627094959784765932765625500258444912393296945910143335619574776807349923037475968356403544804516261e-2") }, - { static_cast("1.58204381201744226359551248606294393539428710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.69967088875234341601404286503651519524282775819301605224609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077966919198536118506000604021848342587459233214812502825319036185927111842640720441778472762148840769009480654434988580516960635247026640481971290957649218368276357248615028690535272593446475039055115505472342603119011692356413204456935489635677140077206818440909527541341514742179392759484948") }, - { static_cast("7.89159836081502775182242026552614788670325651764869689941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.81696106146368038025684654712677001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.94147359401180853490618926342983857830809890106752620847948172427377774972592621604834694930262822082783398795004418901297871494637794539318032606545630879764294273346094400196886499691750495365869112152459387957968585556903274684614177896724684391146995388586545846815713970966406314356957705636188e-2940") }, - { static_cast("1.28909708384213387034833431243896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.93039877413820920581954965200566221028566360473632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.08496647090160629262865176257751429047729744058064486558757367783712447981236338124011887293782800275409466363098994983981904989007840757365461380428739706364354348918768376442904733609028311603151255847131247523710764847675936168535507206845244124708518371354311381017836653040028826211975497871572") }, - { static_cast("1.88979339146257488413205294364161090925335884094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.50746279790036936674368917010724544525146484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.76918423991144038304021445193438173201942067819279237648900596695575024236585474624026460405210909663314261583560910578839787952809598740673148266220449752385049510413309645447866767727463403580780664879153239139760411591518829772808581212853680494395035365090735562853954119264286528501466090236373e-42") }, - { static_cast("8.41517212362860789198748534545302391052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.64690954096749919699504971504211425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.36385641555849335879047779054573450503531219143280186506059811952516602814802026798922317458022305556248077861115239238036534162971730930403784483407045473794360984711531633071954017599185535725837014265828161774595330813847033913388549400091383297967089159291617295023155265969142242902513558326176e3") }, - { static_cast("7.79453915372945402850746177136898040771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37570185974411316465193522162735462188720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06022076559461302576262215724290203547920286581395364873074659478022575993646868223512587189711310741927159850526321306597320278985726000202501743927791980296512242522543006053260060771089791556404973296770985910119125940674256012428243689156025466514102435785983398909290409351186888763744330929933e26") }, - { static_cast("1.53996830801468109712004661560058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.55753945580631575351659989792096894234418869018554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.20447431374301175187511662239775886280442123057569989101048717965641664163683965122530380365781626549245733448495292659434928101251174655724999866929500920292760069066534315397658186379331270528348085084759405281722204998903474609597521346801285181467380964556686904383585877178604246579963496131145") }, - { static_cast("1.58292085642406949773430824279785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.39839658341223938009534322191029787063598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.95369184630899349835322600435195771430552393938403392920497743251505007693757163085390208500076347439614593692001276141903681987497427879862172599262551403341684739246319058993775975522937386429303489479759146923528741632009619169067978673180741577543638362298805900307916877489621750277562246056785e12") }, - { static_cast("1.34007962789787852670997381210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.93078487352859630432622140006060362793505191802978515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01851774851557016267678896947673493426952146980838508956199625705868791978344101642179134412654468177801448310465798049263061832294449615311708734175434429497593168411288076223275335865898358255932555661831601275564405349791579099870920484601878548075981946266790952650050188664408833668093366337128") }, - { static_cast("6.57565090460510646153124980628490447998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.95349579102368409166956553235650062561035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92883670959819008737323351550818895693909971573197862669756297233542900030950953480711710193053129535412775508169382249001427538228339649766961919628309117712145393012207284297044617755253176225355208718450804357511545954540599873761726532747435308616642768909463909723766874135347528684022648860560e53") }, - { static_cast("7.73401481707858096115160151384770870208740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.49148120277696079938323237001895904541015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21022119284238444262099118632640694751857489911985882302778583637174384391251394588072250813144879442061174245455228341031066580984347413608919792407019123272438031870871777573323381609534176617167457318208979616222032754767955294734636001910121462806120247278470491361024670390806812831433737112379e221") }, - { static_cast("1.10978898863228390113400134708854238851927220821380615234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.32219377403916382718307431787252426147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.07947867569658321194458380597181231565685445537647073748124994390202466909582021155440785847623999110729024670271166064504654713592331835440877924887265726281088902886492996205474623955394661696347608605548560131153946508949187941058346142181719469523416895370937975489878692955467549849494731965625e-66") }, - { static_cast("6.01388538493091151515557157836155965924263000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.60022931107700908527451122420615092778461985290050506591796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992690524283092045041727666257712294170472055655983655789156306985603524706361035867762480294454684826579379760817381252880474747063748101481751389649370586878847928039436815138481244723824252557644191693486953238362877605577315573573222917218930477592061427550313462645068276263623663297863327092e-1") }, - { static_cast("2.15534801432384071073755649194936268031597137451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.05812814671632215990371150837745517492294311523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.55799445393602464144976083125961944702079982479924287374752573999342183140040918969698718557087349720031284500593972794455976395816766982409031253828819168807248785638632014800512514311905184872890032777260194266023572565329278809193542262172193713145497824126566400120337339261082686915643720103934e-1") }, + {{ static_cast("9.85291419463953934609889984130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.41670862661703722551465034484863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66781019918879108354226292713799369912745098619466567318041467361236175866573114777000418440761829061824953361563557580935951901405814080757565313129904800947783606850513184296612628910656615168927761935861462770335134108408073175949783551491164949747086136599355880600420490275164555515512645668845e4202") }}, + {{ static_cast("1.65291435510970359246130101382732391357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.93652894786225093781695250072516500949859619140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14852190138491736562279120519668390081141778746743826681517181158751264571350304943298501284647564489716027476004029804110782430201351750715968215799574772058637701195873519618784612525011353325208230847515250406858209757415407239793739704829281917272032288615255140733409015874140869835291148547238") }}, + {{ static_cast("2.95673953882856110908505797851830720901489257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.30915509717990971694234758615493774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.16137091634529046709182958669115589757019722367818747705232600776240821857227718551873067599347313641575272826830417174591636547915061517391300131065931465784194067711359196329143298499263726513131614582697830908424187934868152998838921216586737465291051289708299364409624364999366486746226077050764e249") }}, + {{ static_cast("6.08581487679821513288314083212071636808104813098907470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.65778516457987279864028096199035644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.27056224622668410282266686919173718609676411389459024877282902746284033954589536288634973757568176464096389580016576960309487231057438455595655805167665817497028295657665023126747065443986739792258870082022889306909488139458069146748438042701949551909468708242176394539901613782225328586614222105675e-3229") }}, + {{ static_cast("2.72264614486854572561469467473216354846954345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.86954434555903360043460637029966164845973253250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99366682241962146368589809577120011723198308450433185299366732500677873637460155970547267099719914327909694930518383012498797681761846242526638144261306834523078708261122471803832490341687603813336927181436827534082878781252668704774445437548691251936499670077735883150461534069270846997649139259014e-1") }}, + {{ static_cast("1.15866069758449596882599053060403093695640563964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.91253262757665787319183436920866370201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.46868982488456565751167443881314840659743514173491612010770748877346398177489343237604160804413931931718223750314831998907846386274396179552445359933868165880372381338724806279781831953896898649659594755834925976964179275873971118494605322798850925802574178528777014182338769959249415096934378557388e-1") }}, + {{ static_cast("4.72825938314130529761314392089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.22893132739781236750786774791777133941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.47245157077269889091085696140795527282280334677569169487973419233796250189843816560261965111196061138868370890204338231535198008079068304184762140493830719955323588998399173073261634891767823614143691840392792367527470000847416054709559319143615840412839768396194451923527439592939735228732869467965e69") }}, + {{ static_cast("1.29556572255334176588803529739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.81521083299418428680382930906489491462707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.91729899451736210436889587963352494969987265352294254442114149825297350300933403119961677078224257818567229354512108221647637427508041941647518586565006416113534560289731038664091154857692367872604020422463457596747145816854139701847749519264660326361171185139298113322096978245544144264234481020815e7") }}, + {{ static_cast("1.74305909145137593441177159547805786132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.55727459709495003048473904527781996876001358032226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12324923143821767715038683964417533829057341785931080679952341815408539775130405061465897612861320390765996927155081774925717154208894105154455487856335006846587865128269477586014136390788140643457017602926503892493119037260205017744346004538379559837051387829449807650507431889923695496342461088404") }}, + {{ static_cast("5.94723096329786358182900585234165191650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.47960584914021491681479503199625469278544187545776367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00101355895664265703253905800820834352012946978175213925289823900262226487475877307647753894219794796436589570196875943062842928843129407133278574235943906905626144071246066853301987332156463703818534415183682692042219695734377740067313312425523058170350486981674302932951851973390826740834796342180") }}, + {{ static_cast("1.68908811949766600121487086783034214931831229478120803833007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.31583500510190560817136429250240325927734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.06485337562137503941405427253471002412719863672407294570575625371322654317127374055512455786988091092329605000808871766177184698431732837248355728401235010135527651826220232715652024742668291949645619992685612328535253252695622896976648954823150769316159100729259724133493553742448044299816541989455e-423") }}, + {{ static_cast("4.72470471679805708838453814912838879536138847470283508300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.93150097545414496380544733256101608276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.36613880262643802742756290736395850668317512466586871167321608424137867570108690626258507320043808302565319397131444616166042735793688809613906106252620462557968555895414582976985576875374557668514391264049547180886976991031038592004458693177738810104222966751846844587127740341157319952915743398285e-103") }}, + {{ static_cast("5.42042332941097132481544917936844285577535629272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.51174849138805500459170616522897034883499145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.77171703127754502681310204125715941650801721154976863870699221072355335125966565182666925044598746890911836338141033359039531496488403405876863230608143768785806156629534985369811294999635059473513624761915818310578096052710097713441725036078711101258417410421951107958524860020565804089659046743943e-1") }}, + {{ static_cast("1.03814929656497190180175493878778070211410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.02775539432865528274851918411059159552678465843200683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99908769642175788386137778958539300137602918424410284952085874015336769726750047569734816766197409755257562872230833189101650544474710424482558254479079319860825174137124403380959665595507587367668848404286717760343524270837960434045414179621713212480893218438355518348995643697164109731552178914851e-1") }}, + {{ static_cast("3.82635641630229656584560871124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.04696645144304778529686927868169732391834259033203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02545504718938094372102791727911930176506035001600018053644429991055918696319033730794852043021666923875675436795843500904336366408589219201909169612259476814126333181168932741070039124737361896932592045285182764869916877379718622220890978571031406624988992549594836404906978120992311725853941493659") }}, + {{ static_cast("1.33672486906479148771609288814943283796310424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.20701621203230615719803608953952789306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.82608741435940656086722594561546646099634760918110959565977761208896418216166536561903222226214939613599640463597249764023513875896636280664458251642404729724932181291845871312202787897768372355186920789243514016890287945724482698867187289280837997988218972650355222505584789955736058952829050123955e-11") }}, + {{ static_cast("7.88803854908014727698173373937606811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.46278561425722486433187441434711217880249023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72840141730863663391876877521764355960382145920572562742914162972208384723706307292705275033115082012368548682595775882643927894139786449383322664316773126131611883398659050539189893838100041408464889082404113404032943316931275847874983317572290683797208861989532362102600980996636385789799495020849e4") }}, + {{ static_cast("6.02908445011699427595885936170816421508789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.73159824509963122807221225230023264884948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06403097260563050081855800637166449495962164712719263330810086375883439970326530663445685346228862337912240907582664457942174627433334293660419014781254710335542481599007896808711916825623070383641755045318205803207383228319360990374222920104547227487223738392731388028498147565624523546346417715655") }}, + {{ static_cast("5.21882079270016063787807070184499025344848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.00797343550563134328967862529680132865905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.36552325485277806964373331313098838333278330423455390715861973295876349888773267892681165876113176797510574847645252615081953879524429911159719101193921387688552351634752458416166446355778230365755243829643708299147847893065939954861919388676503519612640610354931769525373202729617723199328630093636e-1") }}, + {{ static_cast("6.21172003041995424155174987390637397766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.60919435020819194006019142717534009534574579447507858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000157241706535645559625081132898066253320364132991765749046567536915342813631920409642832019004224458248512335711478395060579077427182783938451114029622700384959716532968625901664719629811957905865676402174328291417935322613778738659214041802729741480722967793087943757739011593472415850478420639") }}, + {{ static_cast("8.93348943116835901567807098899720585905015468597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.15322293979125788609962910413742065429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.91021563983953636397848520840523223624643742835964326188016961937573012460753870407293657436708430593126320103796954182972032017026192445957161066771807675200884423939605981304732630092257312925408813941089831976477439943114677798839623996214029155361569909503935179401196449493080818512569086682097e-1267") }}, + {{ static_cast("5.55105519395504379644989967346191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.20561294990389011871911861817352473735809326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11282177288045201072507504088709286277978249266318510332909847928909226338145185595245293917086320817076726850666066198249106037631163063795831697507293260413136608221812252367908447186422344164553977681855896096040438700902356349275031836676568495994537852124264298684105398360497193752327260914137e1") }}, + {{ static_cast("2.64139377644600310476863391784263512818142771720886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.78537344498752810831310178230069141136482357978820800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99179632299559171314926709030763809736309139005374052895886931807671532458904052556141342139885810036321222015645710865315806166952058325774560966552187527103940189373824279065702873017246336399071137612269219545181070886990906061668084063703411460250321467244169857420435253409159030432098292621067e-1") }}, + {{ static_cast("1.04207364225271594477817416191101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.49096324860676521240065994788892567157745361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00881927761618177965011845644574187803759898330801723609976606642566910129111150781463974721119043760111173993259232795682413324213317011846206782754096089290427628991647487342082014619699610677423897602146820644840945077548746946762791624180147374361784328110343084702444523109612274014821745626982") }}, + {{ static_cast("3.31519320566263809429985442989163857419043779373168945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.69130350190431280252290058285780105507001280784606933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99544126695324189746630737456946723361046661345027805407888971023026631339988056392642825478722792254481831582440796961181158845762815786131168245934078509438401554967954057934563178474479427510608187860234090448388699710858468168174057416883471915845617321874136073232354461932587707630236256378020e-1") }}, + {{ static_cast("1.88337177923367888807137937590141518739983439445495605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.32540268863411711208755150437355041503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75229630554212330195665922771148699451829771147200356624805857657236782065140481467338634818457146889580617522654929450001033313425457042558128784684181381335537144806647956114444609625124141647264003246426211941949785732284342909061255617831919446477154897012961652269654460432165747451828975060062e-1612") }}, + {{ static_cast("3.95459290525709050712066527921706438064575195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.67791671378427392183514677004296800078009255230426788330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99997515679857005761440503886095927815406391244413835291624899797364615653895949902813000744851723242602512239539568754651988070279277456656779917196036522934849059282355864096704432345340316634144618927930200708582994637711792811242475638942101629267185320507818308058050356385241284795438747530570e-1") }}, + {{ static_cast("4.18765706320910169324633898213505744934082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.16291806714740175721090054139494895935058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.21448401185251170746394861880464242649255630391558005989017991140563422704674077045117022763467561974222030061746655113958910240758539727055748249625892285904547489203480154655618632992990390332430221914382681227157928848406067945057161854616129785541408035327136685741399621377579757754012545382969e1") }}, + {{ static_cast("1.28834086985551640736069600734481355175375938415527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.50705923255961032891647732867568265646696090698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.76932835372685523370171735287063726416767225734834615849134547109660778793799398169080725972094573408844765674179657286895933198717192952354877012591779343412877647689917686841315165602494901218010719779271020694334581849406783713948998204010537229621398578990055098138781426451663477493080600789821e-1") }}, + {{ static_cast("2.09720612044679288743509459891356527805328369140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.58040082173553630973117378744063898921012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.37769288971832154015429547694831033608424622845142547611771987181607855769209591840464089347717993026475816138178319620101164703046235086673631394869476080594839931563796671833715053698127488579638544943331524253087769152813629459325853986427109398088052746438762088357925061124187186100435982047033e-1") }}, + {{ static_cast("2.86348409095251425380765364359092473023338243365287780761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.66147340815298694138846258283592760562896728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.19957610695947876947018322120150143406142221469373757924519795345150006977773403730313023369079301615734601162566867121616810596830759956044509310651071485457850172811241087990683705383118703983140409701647142571470333867908682196499347683237058377349085352136214854181401946343510795949868835711429e-1") }}, + {{ static_cast("1.43297873345568077638745307922363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41681240009364082165985165850941029930254444479942321777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016822776212044529668140515271000711944889104836686684000447554242511520504646895662976301872271981369559245931879055379226726537073846553544561947637792091890791964244339592472180091648456672557297620691698497967178088487062658421331764320606009571740080394934111049676474128724114098218934644280") }}, + {{ static_cast("3.60098653144944158555063040694221854209899902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.03376339210932499668160744477063417434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.25275538744154336055615419863736730746930928726962752118772852620054361808569416481449220736645770958820155429279907622983889720952174836443567087662689941130263300184594808723215176724531461369529244321399979413684112346655770810116945662086924599874483949305102682382993398648882273436739947930631e-1") }}, + {{ static_cast("5.29540201171499924810703863187200113316066563129425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.56136148696097143417915731333778239786624908447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56082033932816309081231125453071826327896674917466727856568147854623107132514590973229074834141556000908164346345063684708226886531162257152516511661460364047957606893852284251293056880030888612998267350454535860387161852393199580592248818623376237183284153405740445167284591706260229351268548628924e-1") }}, + {{ static_cast("1.44301800298425852986383688403293490409851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.14308392953894662376346236243307430413551628589630126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000261963485792416853927136569198682383793838454319729684734973539039182323306199235318171814360855994012568229358281529883676852371448365509202038288834881570383584403906835594533516647281713968932211752518665238323196577224701747937440185305151190908616249351775361542696295892178890063882257116") }}, + {{ static_cast("6.22803809629584627372000937839402467943727970123291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.25094187232484732597015408828156068921089172363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.86658469541403998034943500870243069476823132486007751990824694615782893644279173776512596334159142603325455113617967643461939139102971978114976150505918018758878971981207590718138194009315889095960072548673588879789986017926322494375432269097377546556386620403909103214427884440798206932883636297352e-1") }}, + {{ static_cast("9.85553619558515492826700210571289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.19375835372379413001908687874674797058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.69327012293708811121144971175263370083910101169553278058859848877086709080419562447585355719348842415619132355236627485649548952876411849102018675375354238273102815474095986357261970461229247085634624604985094330242448976955585994530902647027597520370418448678147789523361182103563378206595110636366e6") }}, + {{ static_cast("3.58793922164308502070761974778179137501865625381469726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.91828844531360287462007363501470535993576049804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77635990889125108309690852819112724262223736693646969131631611067612444282401471024845889526676870050656945639578159737127915466435929600368572355785708484463627825178182883323088006398240693308602881027224033181200011330121428663774743869527395379215026638702157803494202819893449358544841576526785e-1") }}, + {{ static_cast("4.96146848614257760345935821533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.36919182658175953015700088144512847065925598144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57915370211935194723362359441601671775858730114448762856923579370262681814508708674839371719677055754578289843591415190008400693094242195743768201495967775525358591358166609121796030602701836084062498854380733868656008519376928763241674707747769169741392588580100945268376807756367217092609019332523") }}, + {{ static_cast("4.24495621335822494657116776828331694559892639517784118652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.41273133041338017079624478355981409549713134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.05650148888948869811331120941963319541414375806822687983830138205938420862200064078576598469877831249406211581526927963122105281131255004573845222711684347603254852806653766035434125383812586900316395999300527269121533046942253679078218107723668449508163238533047093749711627477323541829484653131292e-2") }}, + {{ static_cast("4.48640427032238338142633438110351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.57545512531989570200255390552968037809478119015693664550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00002050314697607659431018359659361183713303212753613120902527904331498111603138394334757418054814218670389608976827498549914166555768752494414195237102560486571709642923543196007200071132086884670852209514113439317507321835737223329599950365222037362534859303381396326717532288233329927808913598785") }}, + {{ static_cast("6.49749570902381674386560916900634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67233186866778105184039304731413722038269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.37780724079840208711014533649991541109470796504084314835156759344214993302863952807171583660778803863957191115559320339273255056520571556246744533838811694006166732957726755945662570959533321672076547914911635593118101608294069731654269467619949055336628326621660012876406202543146880009002104821553e6") }}, + {{ static_cast("6.09674367112420512171411246526986360549926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57044841435982965565515412365016345574986189603805541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995606813099499267634389464438683850041060806908350269346321155672893761130577244819124593817984249660934044363638948086248241297434338993626965911693249278796597285537898160766381999495115463474497883772569241592760426493272254012575287314033420480717621539078495596903806489817283498263020744184e-1") }}, + {{ static_cast("7.57503455130639213876975190942175686359405517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.25659927896368083096931278497265793703263625502586364746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99967576340235983529748322865757677186118554170023614050204881657758768441183672920424294568610952334609747551908015545068832481235294176033402023954402315837530793201944548984799957607361928025651266738940647431602585783131780321746876553060340085541214977820888348264644079307051095179685852079945e-1") }}, + {{ static_cast("7.23094922542264449683013793901409371756017208099365234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.59957635240683257102367598179171181982383131980895996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98843860017333489092110505899347130551976013147438321970353479326257793437223848104429707854561661175450570835038515201752789245106905767296900600611401551754756721658819816241278926439311942572630487380703760937536160330693843537976099522621025621041857521661138411993182809798954282325807746896512e-1") }}, + {{ static_cast("2.22347866336470469832420349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.67574314969844628819828358246013522148132324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.45597650920700334896440864288586774552136744768533970151074149218272851829624764505239431335468131476208480181217427109189696065749387968903474055278714181692867425657254225967806378137696550459591101296481511902742572646395696145586249150843548288850238158312747067673295059110101209836587291678717e1") }}, + {{ static_cast("1.61969754204121987178899289006039907690137624740600585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.98433649539913870007978857756825163960456848144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77061455335439039778043359172467746025200146785630273407892949860314031306268447375871357416922980298986141833641561954857127992214135487677696097641048847861017455164355255934271546462888696419881919311556223441720520985938735112636787538160901409982382930452852563601752376961873325250302513132303e-1") }}, + {{ static_cast("1.10785802837759378425275258450710680335760116577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18652221207551884308087353225857896177330985665321350097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99946575396258084502018839446238846584110705812867877643924485585779113197512036317728340100285410504878437697437320927763146715271389949541429089452281046460116468251613835907291530307473134875676645637754443536935426771393775580503285493873005924313301673550096584687732186248324962291699197441007e-1") }}, + {{ static_cast("4.00900856150933880290426758463695477985311299562454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.51532437768501453796091832382231245901493821293115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981169291887424157759932262067246066753044936086128253970315838989839817149914187581608688565806547274970455207936904774502513857569845689591879527047150474914557088218340646463900082270385606124499095033110795779754466447281328092278318076549095302554108789079991538595665731579745334006426859960e-1") }}, + {{ static_cast("1.19021350263737038868705475636033952469006180763244628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.68290288542928294646117137745022773742675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.04852417540620009944566041453719467211390230149498516011819535440728246929538100576552383464173953438153608848998091884909329517100819960017904887302473398843345408874822800579053111675353115760245493436345787702548498655314405766561270926511701674435330529881522800583133171192665005622617374333010e-67") }}, + {{ static_cast("3.24276265467208501549166432820214822640991769731044769287109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.45408954542178808083674468321078165899962186813354492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.94386254687686946963322383552185492075977337531973213930838015838274376322044860137122810561067818353529641305366066211688682157075369267213623551618566522232634253178245524174116891287095569137130501326353904791232655125453161983083517758472031555434930112729665552915867163490039363051308443099856e-1") }}, + {{ static_cast("6.15810616566200508259498747065663337707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.16615056291079111083774932922096922993659973144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.84767212442093730437806115126470445228033445461780019945996712538430276008229376762120777978183512697217805509135802054380845495119030204478634136438561790634012659775242132306345870420149133737299397362388964674004273429551607587049902912378874846355087545159480302396357641147726629312485985544367e-1") }}, + {{ static_cast("4.98639800075090606696903705596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.77610720170316863455745731714685575752810109406709671020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001921243238237193183827489311170506446717993399056537282384027062526108337893488664380391849139457202726524784919352515463921911589077429652463880766791641171380378763553978844617450998857121720620679684506344842701809891676387117033562056914974016308650056416678855410514380179891286420315463385") }}, + {{ static_cast("1.39829478131476389535237103700637817382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43499530583138337064275091847775911446660757064819335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00024882796344591385461239880845260384691776851307067376321212831043330119768926261152601978474535337925904198175128520020096443925386965960197623129024285407478015708065567539370247164906581380771634920314388644089046167410745320267558557473972499677590220735439622489041126850128421653983634543138") }}, + {{ static_cast("5.53823542724402595460730935883475467562675476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.89513503025480504506072865211763200932182371616363525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99887300842861835164017418113429559930804468019069798605482088141983665217815479503166341320807290829070352700865762573462007338287440579346738382811838185553843038382146930720875234411175792603385681200743384496310942148612050283753172718455515566946341846284557394785250850393323918755270713010620e-1") }}, + {{ static_cast("1.41121361373833846300840377807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.98754187978802221437035768758505582809448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.39052029796505087174799036572060834290339669936231503015871931355721722463161747207749930806516332386763841930651054884331973674982367750538370231486178766251016302345689298357523496706436693633349722362506875465430935461687316908940273568043577086452494403668755303085058972545116855832701160169233e5") }}, + {{ static_cast("2.89668134268413328424353336831842398169101215898990631103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.15865345460021584855780929501634091138839721679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.28205556117411408113652874564375329933423424935399606070975188165013549346043442272013469493594176280229509402715241333520310808546934629428072668916547032154136142048364995378685732366063433675907163954131129548865718748066808278449447269502355535592014434886553141414017802588692926998785625006881e-1") }}, + {{ static_cast("6.80370452266789652639999985694885253906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.55585667546695538554502036276971921324729919433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02281231404359612151527353897929180348478744328820333025332541070807332704656155540376559985312945856024293947964716753864592850899748540597581561259020876390111605898100116321942106603048757052249826147692127068934907088939143183343054183800841834132202006495897859489577613318023621649632711626369") }}, + {{ static_cast("4.62504113144313121035178237860918670776300132274627685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.52163427846739888679716834474220377160236239433288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98482342652643471998471847918276729621115291527655407478347392440646810723671728307137559792389469491363165496772939188998042052370839020230988405367662374022902953797332354477989367493245470167443057076807839721016298819277997067517609396627866901281229526562169916899579412733467953808761281274902e-1") }}, + {{ static_cast("4.50822932159575771038362290710210800170898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06839470475542444583005874392256373539566993713378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00407725957483558818239220892424948692876561612077691060007144800995480352451729509031292920021843587131856132257906499443064130817064638818765366250131236399994854411601609832821870319397908684888708832193783247348840517389795509100198832759307607589651546707827898198086014636944156848700425178047") }}, + {{ static_cast("2.97403319008989266980513832550059305503964424133300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.86474774881857552344399664434604346752166748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05563040619657475424023632617553458144221260647471757349470769600263284068856263065983919485584722356671096360406091314847188039821446085937501687228128412834520625095444394738723676139779119999762553228944695777339743845083698817002881418226410778165865331625883646946752393289471811888730325566680e-1") }}, + {{ static_cast("2.38325080784211650097859092056751251220703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.66302465811868707690202029425563523545861244201660156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00914434741735633383477956146627482536171366958054332840551181784200344603582400731522959980543848217816660950109678863255860871237640121402147335369863635255623422637578873942180607947824451388135749116333642343887949089848641558138185462358132315292011403950110303162349396320495083970574820485984") }}, + {{ static_cast("1.71423190201370800878066802397370338439941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.22776453453089651191021403064951300621032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.41715373496456388539324810858409600194977863833255435782643057881295200486872481370727134110261522844531904021514609023835218872201273620577170073750362820523072032985530745444647038907617563505404059737966630343043214665700476103118304785807103469358517871674775523305518419709923690374745267779192") }}, + {{ static_cast("2.24202183750390773639082908630371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.88606137138923326407313751928995770867913961410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00356204426464651318381353366766656275190463831503522239513652128295092897680949875433153708401966246976000272332294389517143726474038495934684353460128449357504408039179941027444904612222505017810534008770086553370099204575810832664720970035523251219105643922854038752127247330051903230606763080754") }}, + {{ static_cast("6.68254924276967532392745852121151983737945556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.37453434835288135218434035778045654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.23884289615444976971058885660437787480627352137562427420631247881049437291942148842029267007686370097695430731343288589752635360722257432905786816202418979845289181427172830309982121527477449228884669859681103900842455539708329644639171581286590973017189366587396069226010533102477610964537380565038e-6") }}, + {{ static_cast("7.08735989603501259637141629355028271675109863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.93170577274373727050260640680789947509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.22994581178880428430588361219833883540463488675474104323353907511764504539625188516288826354093370529125373667749527512470360034116957923611728143647053700596011110669882224710437210488847861184277118067955181730553186100384807049379684590737156995709498402541295775367296456895644229479101255193586e-8") }}, + {{ static_cast("2.32014942323958166525699198246002197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44810310131192876426098337105941027402877807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.41156739924941071144222113991630683194620198146427652318978812945951687592217439817665385168004660248141475796965481088709894832854582569992290051260681221672250427616673943995167609515610097891251991676291118804434690243303234426750763059520585143335380969303297852505455054177640936866538646738978") }}, + {{ static_cast("5.53282998141260031843557953834533691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.84121602625912601070012897253036499023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.58373770974866315239700400474362989477383658235694014601763955308120813900734144800418886820772189374330395186134971653113939250757648994415649668842051891937875262317539557069792723676293862948593761228728392700591159530165592758768030540795599964339740660316188438257430600649159884119157424191581e1437") }}, + {{ static_cast("1.85718777739859418943524360656738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22760764621501818278162532216413183050462976098060607910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000634214788464577855189457084479231510812185767194037441581727975561469887723538341241488476848396809344125019310357146729535769441778199276860378224675705997700022744347653159656289098028240954603207536444605258988369343538458427994444681579339406242882282677673848923548267602318784029338545299") }}, + {{ static_cast("2.26509465497761368624196620658040046691894531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.03762510179397637877229954028734937310218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.03290580019042823129797947218377400320349309579887379648069219653044521496312022139633395975447973076157177628011296170468228189168841156259900536323684747126636993787966799478738521263932697630770091216225209592893137197359045523997671979624680066252774430678393930591603773849047796785558663064178") }}, + {{ static_cast("3.00476295219746433740048985328030539676547050476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.02409308153823985776398330926895141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.14136997855533491337740509094908136487500777275671775674006769752964040924959289897651192452522290539206601428332553008348132654735739834724305690164751538343877568881013821199733121651153278576916744941958595422652696891642421407236449964345890318648778746090208231400439749942969896805715062234843e-203") }}, + {{ static_cast("9.70798896667321969289332628250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44245980458260469880826804001117125153541564941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04162803810086699019811359451605453492327199203637588333443087016790236547076001612983024940969264195708947484110311219661303765376669460085704437741732903824466154100734799424439147057676949660911617676769474501254927589549167841876728171722481679869607753266592648983928705022178056753619502736504") }}, + {{ static_cast("4.66389224589813756668976729713449458358809351921081542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.41598683219974930125317769125103950500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.53382042139791789590459891074340066702060120383660058981707324170432197791546635984529280576877432127625617337120709804544743161881268886942872653531280982977576133511801284796672543413476367564502976743587063883733930418435751755822485352709171649159924126024328941448624940766411726855902924670549e-37") }}, + {{ static_cast("3.59808415633625783280891141657775733619928359985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.89106070923696201191432919586077332496643066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11957324795765157901703029938063916662894000731995996196921601505519523032651152137148283098242267387419838627536448762986353433569901640648734154364900058234967711292575255307936095926242393050569604396410567616604312846123878721000606629431359673384574670669906697802557686478096291498804903738631e-1") }}, + {{ static_cast("8.29546112810515936034083672723227209644392132759094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.58324466499312066503080131951719522476196289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.86659658288740565122000959721270284304946720479579271651550103638161205367495371607443353257219806398111103943515458202894485596325631197266478165244814107159447017816960534609382148164169335790367935277372018345236031109996214855557877416239874683021494253068006756484498147004540748744410389570461e-11") }}, + {{ static_cast("8.63334593891555979183749514049850404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53080323158965114771490334533154964447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.35233729973545869852697007160756749812975339497681040282999017995032382608550729201580422775220111291799102420635253476809267746237352183450521514570985348430714476644398637263228584608977432119909919809882847191196859131282077491115028311403034792745466352775458252803189617423439193439791933123479e-2") }}, + {{ static_cast("4.96802530016260956990947761369170621037483215332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.02519683572433439877613636781461536884307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.79130174131074712614824707606461473196424333567411409743609116414751816130489331857231684597817414740294362613028844768413127008896909984819847802879905875872491406317289520166024819440680050252863090346899246519659384416734528764367429297819383807550500609868490474715994290375146313368129823880737e-1") }}, + {{ static_cast("1.24702033554851823282660916447639465332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.71070595755497723185201142115374750574119389057159423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00004316789477874277620263489613820769653924396429221925198065527832144152145855155330213971456389989525794479500052652310504867952437063466242776820964127214900733034755428153463014611408545155223418498794841462940237893200540509678171081868776875097700422657888013910264387140255547155547751726595") }}, + {{ static_cast("8.14130989781463318757936953318221640074625611305236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.47674360353472167162180994637310504913330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63199095965818056903859668356569903606584619352293451010588563431807635376986054905897873784109387681218165026966672415089273447045333707684197569751029547891913778442699838628510300753325723159251992398807517774034918042863197611983714480066975243968618918488213538490759809651966026386013669113012e-3") }}, + {{ static_cast("9.48316047562641761814461460744496434926986694335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.87318705342295180847622670938790179206989705562591552734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986164907695049446699147999970503354260553000953839878275159076458261755428730763560216631851642537174133195419034054495238529976374508256949441111167727864128507860277033299044051865971449902820004978297018651282279654117307535005136847959876138249613275046667240315151303933181873427450473536424e-1") }}, + {{ static_cast("6.72439622398628665533859560810014954768121242523193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.25371945127648842799317208118736743927001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74287216286274945633266572714083322962101975717027023442493643122162512912802620909159732325958549010615659395950026917825109006470507725724883444926417334797999132724229966674370457592343778072797597317430071335665732334697884217471229705559230148495486170835726019893708870900510074940623722192258e-24") }}, + {{ static_cast("2.30442309265876887366175651550292968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.10077615004599603520940576117936871014535427093505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00006298512189780533426621327292231284630240394286315128868176668180396156679505765231684868863847590833570938788465357619602169740491681317033999860409913654411707265663879954547321897801703570651803262843624273611588702980486012373865440788314427239276089286730821085936329475836740228791493079509") }}, + {{ static_cast("5.67608898683707252530439291149377822875976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.07683021912563162914011627435684204101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.67068196412266823466861212116241893055807436102731155140415238019317223182255528301301262470626159261154640191153443230288813541880287940859066915763205210708548641176944414442344483827370453800486623574896474317715521007693847769491979549043149389934860292588058888100428936865217794693086764880012e458") }}, + {{ static_cast("2.81337246606456581503152847290039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.76344844070871521052312758115476754028350114822387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00084899099059737772913859365556118027581054407285954758329055990529529377511066455820790791091871502993434775634942750452313898053395589443975739777882392931281046995883876066279980856281434476038018812014179817821871586805042023183706725376177160577170143175806815414662475357051404586743878413781") }}, + {{ static_cast("3.34983523837648674431610729129715764429420232772827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20852082105692326674528658259077928960323333740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74653990782509243550836183201075823369159155519692846798314436930630346572690178245424014813711682670551067058906680367646181984756645025448347553573937829174199564122446362713993201587207768412845129431576839987405545810458778769778400165994012026984577717831659943902405397254874487260228557294263e-1") }}, + {{ static_cast("1.17365003664101777758332900702953338623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.78053489600925995972602322581224143505096435546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.05893503437891990856263354837986270829833882333366791751057714437977103925035624856886729661425365010268503431934637684230477655839134293793513971115798026793973457123299079643692631311303731259185411381265912635677151301389868547814580071368806352687212447229499485791883769033890017890187866384697") }}, + {{ static_cast("6.35473191480731591582298278808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("8.15332646258649447190691716969013214111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.39785593586175436998336047723152633390674636830187065022507274459265394076960202352145842758484227495355755965560336623550772098175134115092702375767668586879200691996181864401350579269221993542974245130770033239773182375358583651870979382999043883377805409110023459275245515025837447884289450716490e473") }}, + {{ static_cast("1.20953010742292040959000587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.81528620999166889760090271010994911193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.36836082188852137389175804388074236213762814888145199618983165421342520318145120542719392963440700570926350816427711317556249274733873103430368341047528787950522843632555485443202700694068291761260828423023146529348899979040923182831897371799138328552240635790031739904574931369069808189107688786563") }}, + {{ static_cast("5.02826864423656406943852203994538285769522190093994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.49148497614115050149963259684682270744815468788146972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99886724184991506266822294352662914256716265702852450641368490227402118731911016182228523518485801671330942930187800995820804252420406598640376923122551567922827288661396415930336442260706727249870079649992447995120206397679683465259479974096061438201134430443691684817587750638183840953282722156209e-1") }}, + {{ static_cast("1.77623605706485581789272343300467582594137638807296752929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.16881559843790408872998831668610364431515336036682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99216151571584206550599285631558723279674057106881165894202136106399680298454020164284514110193651012658901118782805914666290560642145072003861919887611842296547047036059520963486973019219177746829500434614825844519776793639037139709040279058532565912742721673028532604681375807832044191447365386410e-1") }}, + {{ static_cast("5.44470752993507289829722139984369277954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.89424994358623844748022030382017533156613353639841079711914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000315551756552929413349733123431754994533967419962917545562731445729245526256276165331606875912022797791137395975129631042701829381104269734643785979371368397149024305719491289967486350643357572991392648348784068298353851347894101762457227438358667841811859357203913787202416700523836489423208926") }}, + {{ static_cast("3.47952865539182312204502522945404052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.70647055379554400678099312926860875450074672698974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01003641035516199003729871729172100472722683758579980406598003587323081240911466133797745466321375213116846128724578817241014105529656120259049841543565831847323023771528373536119517374544673647922841984354734790648175557634969225996223997613913923117328699599574593399806697328078695200917124733876") }}, + {{ static_cast("4.89683247131728754952817439516365993767976760864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.96528625490362656162875165666292787136626429855823516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989546369402488423594127072150976413227845609208465040224219805251052465526350038203035493184013561718362361567469358800995276604754108514280603768744650567983276404672018483263585666869718723877857972643772304671740644914409892158811218430582592069739462405196179208350796857344173822141379782399e-1") }}, + {{ static_cast("1.46846575134083542901741736841358942911028861999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.13961295777929194628086406737565994262695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.25155431004176641664360564432608271749851863826540763464893400702786658931519008803678187122457752047812131114041410952546777155616546380522319343918668230249104290662019435519965989945104554644065424460926764956490748710036580200886547368376656130754697653950693222962392418484839778727280176131769e-7") }}, + {{ static_cast("4.92258328635518438431972754187881946563720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.16701285749932963387021089829431730322539806365966796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99846424401823072211356827414998110501335375349159811161820098061831954942111055007312660415928636319873898347702590642507419097876493991759663677610295879480797600223758201686500279349159643821096880668703139199785910150322740521690695804135686666464835791331742866153491003010427701847514162106732e-1") }}, + {{ static_cast("2.08891842024441984904115088284015655517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37451123552204679256760755379218608140945434570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.51853459491101499462028153198307960464036529321862426769066486207166171296494170498179583135034855145454026518293079000045567402865046530341818676848400774327944796661350087157800975247279219703171839848135584471839442165788564723636737356977396947188532339857132058951624239309379955278406455872013") }}, + {{ static_cast("6.59693951898326247373915975913405418395996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.58390504285117244415159731829589873086661100387573242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016195756688330761491474273615136423552556614577036197755742996689336001512360595235890000441982158893267294826116899101351409093661584157256387065246323209052057870928088601548025462625595893993027794606583868972654751596093207938303600634384394989635869479864226583469214082919105133232859648980") }}, + {{ static_cast("4.72190302282203920185565948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.36872614795644276242114756314549595117568969726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.36273289377674003549552956596428296006868194528902491172931330043916572933784595495824585583342079403134944318241053700848989680616524963231553615168899405338957973320487490472555612135391925458093520067531657179731576065041675903036737870428047782297012296101361469066116145701281560378942697624754") }}, + {{ static_cast("4.82034977757478931038870317848932245397008955478668212890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.20114163951150231847420091213507475913502275943756103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98806768192609411674337267672424056960083232464271360229113542018960233572696008296128150338304172594110837781004501757127999427554595909914289685513812993265024374119615672800606621652602006481141937435665444874495693840170640030665928027259502446424921700891997624978473239252852217099622859393453e-1") }}, + {{ static_cast("9.54197957425642506734675407642498612403869628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.34304142023469919031697372702183201909065246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99984326565139803772938990236401058117431661922045573846220380640349699832779123098058540753008622857674232899802697126593866411818203678224123515319186907350469596960547397261912465753250671926347546302198056587430826863955515669743258039245240360599418185587449465990312391796474083173534248199413e-1") }}, + {{ static_cast("6.40960699263738433728576637804508209228515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.00816732049831557560537476092576980590820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.44157504422123306075307680246115279780269010737951173392922320903011026254261224810748434749033392788723902179648854339741924679540874536758451693815806813776859218948113244848659597589114467756894234559650445795659560796369660440795499707193716216403592941616722628011042403021580672267269382135734e182") }}, + {{ static_cast("1.22311589009840382402671821182593703269958496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.10469349157712311976231589483177231159061193466186523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00004238976442526402787977257335501538186147626008780569692886964327726967250839556988250363044075945205489441982444641281650300897861533023502296756146804366735904879346020295258735438264424281840920414740589412010520817925020516062766522452589181209496869654998063536725728358771467633669371863258") }}, + {{ static_cast("6.39291118430208007339388132095336914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.28391975830675164615968242287635803222656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.69505481296349945509651870173004703548467117826619443587513918127052944692060859604078331125022112009253571107992368448403956917792261351644585277417570509975725723863004283151424512684410008159602519982839123505049564570077423370661622862250195728714873045142974264003278199036815752137105673556433e4") }}, + {{ static_cast("9.83190653233646116859745234251022338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.16849063361153184814611449837684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.25770980590636267172342833096299211879468172398651157530921609762966193936659345808702337762714296668889853763786019297633422123145533613492472992798929637639386760407400078511978818609469799050619387136981965857651597610392961103496543359101531210986834447630570812748220097342632073167798940478519e830") }}, + {{ static_cast("5.47317500559057634745840914547443389892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.25569401906009264768826483305019792169332504272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.05154283217149739996322394073132732110285973177101672144476243536792403202554641841303821681674178605013975392578098758039213562899690576014988268448654777051869934823936115258309781471880324840875908371004233345043851515355481534420805940488435409518654838065662552503310797307929345306698760361427") }}, + {{ static_cast("6.49123836382549113110940197657328099012374877929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.85020261717664669109950636993744410574436187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.50660946670306311914365279482095005173354041210571854577128244379583503141132158648667793122314902465794942399303782457347308120094047863238127874892080844189140303644281120192942849585627941033052970332875969503978268193734299765207776684899260119431935484734340685682552324678913617232469193989216e-1") }}, + {{ static_cast("2.24692705476482810621891017532902878883760422468185424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.52982695718321792810456827282905578613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.90763013958916250310703922628537395346144248614383500040096138375431039104002049367585390738671354254176978486242291556216285278163895739264649656370403930009408842065500683071987767757954595210907449882232438368368764844630512751091553559176805208777768953085505825846870225770460080538105432353809e-17") }}, + {{ static_cast("1.03776311938838771311566233634948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.67758461032731062689826728728803573176264762878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03459301282359622046275858130909175858605738103500377882461906122638713902728757596922241637837677972497613038491667511030599129584893938038824302224512570610802632172627579650514542361582967805126424931338365938119495726516045340017819117717607391845493489250022446019685368890472485823905828290701") }}, + {{ static_cast("5.44463531752032992017120704986155033111572265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.08467925444702359527582302689552307128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09056011709343327076534816446309237286970058275834540830372719698670511928227959632093780315386474610345825780828956917908117330975173563693122316666283875774232598613235043753932040992980072681882395580571647274880789017536786697004043527146342091119566202577901703268215449281872604307112909919335e-264") }}, + {{ static_cast("4.32141091390930114357615821063518524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.79962553627032728620349644188536331057548522949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07012654071632775332556853428357456635166481137753650401618414453228087751942869456669180112375507267782856652222749904765639096915852769878278766680206962666525967341796532563009425557062229126958039051450556007688280632610398536337196273409572525834486954342631282999563123455233960154445776600968") }}, + {{ static_cast("8.85195395209329438657164246251340955495834350585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.32014972604017088997352402657270431518554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.71305713463862717236321613646893663926389070764619904563621824742856237889605485601780242185666715109642520925666586793175066523791156636682971412268154170045092095602942426637119803498838588967096817482914325839210531169438704998222940708453881877588305201012231120626503012557840854056737490425114e-25") }}, + {{ static_cast("5.11800358239917845513955452219079234055243432521820068359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.53194625802088957300384208792820572853088378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.78675898815841251401603750577856756795950441245444722873452268896478608982683458941926503132911522781757532432483294128491039729829837206496101278313685758061174666050134299787052246310316361371623036791254936884792176693736621135978412809784428098496835040268753660201880757384305210529998116341854e-1") }}, + {{ static_cast("2.32741466149031985682915646407309395726770162582397460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.38640739832896395418437851532189597492106258869171142578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99549497162550438458304414161333920701781715268855145062033883882900750111819551249273252859663946257284929221986573479403421187776431235203160677411657816941834327558315579342010850796902138914924928940560282841455433144115320935123004884062392612303227832917659972351800421646517607120651251528968e-1") }}, + {{ static_cast("2.88820917341887019574642181396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.72679079374876875974109680100809782743453979492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04797427152199505899776613380207153019163891696040089708565511495563600355422445163531206665239877024907641710076156338867860992891601417074486301976244681251883409289427117509266966735400170413169626794460003914944960446253186507533452481416547111722260834345331494363350198444447590272333886931493") }}, + {{ static_cast("9.11769074488846854364965111017227172851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.34287283617854882322717458009719848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.61412399451200792430940441597911814328017657658519351363425803166936981320098511499093754150499459010245435176020174953699548406222107608392288974835149178057255386825625780361600243592099112823611022187187648569904297395013151014275208089987059198137284635106672418842688183845527005332642735224166e1877") }}, + {{ static_cast("2.99902079785064756833889987319707870483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.68497592645624978853480246954177346196956932544708251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001063692844088210456002419855074011148005470079145471634788112628295771788190807123424233524759763995207569368229563514564551401717941193555837507092120724642714186373549513618453183103215293207086254916107790393722326161402579919794484826396299503609272588338890824693538523484869461094064640920") }}, + {{ static_cast("7.72854459904651157557964324951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.48978348521208037863461370875484135467559099197387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00610574384563796400321310101756992783528974702739913146260646865660943239706104030906315422031586966995536370399679280585793557349882649609015460449277306668457058524687099432479479161198093426061867258598346229732606275929747805949435342506588647203249401335413541148238532118555631296171613732580") }}, + {{ static_cast("9.29770372877305817382875829935073852539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.35261872461758123759034688760038989130407571792602539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00037864179461996490975401602514900577512361928909810135170262283211442500106334885446423595314421485481346967556782507370070595069946883492382064486384013379235733594798086474310298773717536986583185147038897974675666723220012717870637206407697176312759927758943687773764377471241445265488722941855") }}, + {{ static_cast("1.08593927041971596736402716487646102905273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.54205328509148672372353061632566095795482397079467773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00119232709184950657347355900529943667776581936561333029642844322931651851922987396688070423513516427393233449332830940932893802869470044377136541346608056612546712420915411514501773616973022311857494372432610405714927103499401270099666054931681878021711299630772502630342850129330691538468637467235") }}, + {{ static_cast("6.08955210127030499279499053955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.93997641600216752522101160138845443725585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.18201219777662049133348544929685038145294798461233898669466368271726917449741209374562376908881805268589020897308399041338055306698995074087125055703556791502100679603522120055594862139867723186128435543540272128120797808148788656196331354569711892744404054200303870971480027638854018077003767037387e22") }}, + {{ static_cast("4.17002058199641822966441395692527294158935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.27638775324770278722132099691322082435362972319126129150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000325050709508111108865304342178215954684414490544574201155545551225580135488259163273316494247157849444894518301320733204512003009459708444645141220074915996395890189435364804366091830247042355490183040883445209891891864651638351487974364904897430627412415757188029347485931227191708441175016047") }}, + {{ static_cast("7.67550081598081896869234519442670716671273112297058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.09358860541564251178670019726268947124481201171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.33361058888703312937877266409714100834748582910004102998779521040115944440359724219966898465717158230452195981198500825979353396690326287544928081118745655488492150353523103453131904616559184005975246310430624687681784477200062656846973772093687820868635241069192671298954998139357716654945366635020e-2") }}, + {{ static_cast("9.11928851435624994337558746337890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.77150273145831363419411275117454351857304573059082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.01072215443565297495212875757828431150173416786594077990011283253611684077171961857977658555772993227256701225998130851047810587496804030395055038866276482446366864045774522304245866613460132889356389785400787106849829332460233953000396006079677394660376277801825929937944079178448460996666434091599") }}, + {{ static_cast("5.41420122645918127091135829687118530273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.89522592882503256809384462044931751734111458063125610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00007565289778675652984140979321399062757791371437603651125252179594586538728496280877795475718254343845999376499222253067347916841829323365254311918387151598991472092918535912843066893311920458448486904240767256448921472261918689220109607027673999114234655407258002618927723100761498362332050377153") }}, + {{ static_cast("8.00879921885989665142346893844660371541976928710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.65125145484174709054059349000453948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.51542106881981491731489464208722559455080283729538316329978070693260585378415308395373558536702307332302792317627310748549719761801156867236663991267318247059438589418271824484275577584765219427298744283723772247523591169183694405713456066811755471408195734266771535080425449850856084868376311119689e-106") }}, + {{ static_cast("1.09156997362350409730424871668219566345214843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.10878062686337663933500152779743075370788574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01957066747628902940966302510092960488528925253540221172663471275503400990771789589916604068584334436432589666410671717466013196522730609847023637947764642131621149159485396625786863911618319465245064605684158683676154002669412578226202367577007287146331656090836085181386754790207143710478024828107") }}, + {{ static_cast("5.27981737437816178726279758848249912261962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.41970852096179633861083857482299208641052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.43686253241293502543031164235680564280493113934425702290586259672655229919415634458697404687915141160074152506872313697917935113169212018685900336128740210227144508079482606408290248099236632255964024354639101204012497824568760884660053718968331056137812934970479251589590682389747704367113989950745") }}, + {{ static_cast("2.97632424685030514410755131393671035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.12458361916200374253094196319580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.69742603562041824153926447786929280716116286355510132564473072728789802885515779796188477871744149730979853211785348379587523589298115735526488355106077778856284664084128422453984824424076757383964141778964343798745285559893404942252682634909106936299245602255752362338032501973165524906979409622054e1344") }}, + {{ static_cast("8.12277007629636675119400024414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.92673741168140821855558897368609905242919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.30484996489149406381687564563779425178418692009670007244171321324888859123491778857160269626310259110411696125879945417306210294026918965107428093516365217530286177050990880067424193779915234192484015646474192080157981645949288654940510168136275269591421630149209078542082633232345605476593203338075e29") }}, + {{ static_cast("6.75063843580995381898901541717350482940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.02748489106749621435632491284195566549897193908691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00196404947416174365030420006016203648060565955934806957206111637856432455172895201651727892958586584412299635092294986305134023877029915464080887124975616815060819276759381700802994334432976763795102196206567937500407359464356440088544622676160266170981561234435498384331071158546292310523236254753") }}, + {{ static_cast("3.50174444164054002612829208374023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.80282755451220007281154522615906898863613605499267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00819798888901128629632317940565742032581044787310510298394051237610722547925779466083057852335930819436022531750188258730486171674268778076637531078630844955462136795806889121317307097195981029957098770479755079052235805500969330960373439119072852284817639069793570751583988153638659438922106591664") }}, + {{ static_cast("1.26564950853483537684951443225145339965820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.55352677703511933278261725188684749809908680617809295654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000394312365539989563625486331626137964273811834798695005780013495760538177217100805072673596190622159320905648378255454000218262505715454699578920413495174693604468418384665870032433868756106543653906692751058614669494849726609491390952522788637204327400613561970408136313418894648226391505731573") }}, + {{ static_cast("2.15745882397261681817646206127392360940575599670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.37905683348865193416088459343882277607917785644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.64117851649613850769514625497977880278916078343037571542452910699608639199334716242087257033679813405503457913766626678856765747940796988239184619492044398845847330875248279377691256718144764352787323595310916665202454075432835782224634142882556904024349917556799442289975480861859420905292552431968e-1") }}, + {{ static_cast("1.04145372167880889691105039673857390880584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.37802182325172850596572970971465110778808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.88526852493738132239113873166539203263138672058127955706951262195153797473038707601101237196070886256644090185553908945280688151557324839521372121066434881841798255953853902832020964805296391060444306684398308798244411237112095640393380398474592654522034844007881900667824504043884214270458892007901e-9") }}, + {{ static_cast("3.07012551115110277066833077697083353996276855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.68879194147396471947786267264746129512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.27959056811329343392664000245431816256252125501370190635108304735068414726869009253945094404747463601079257760616120868020903017002340732110943618640264478113302579667971697324950504699622151612181100300886867598913337113652973737056690812163582367071363756081204514554722838161602803979904270771466e-1") }}, + {{ static_cast("3.87855552747419096704106777906417846679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.68123953003118842275398492347449064254760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14414942990692656452341784125767590353064260907248467847740571016135049928321189261126610028098851785915087403250818786340815261171401002033061136458109120291157079359913768807250954139969052510045722307049663169894534742927788300920701107994896596920105547258658675585904959114220585301112702429345") }}, + {{ static_cast("7.26004581866997872330315999533922877162694931030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.06413410745037140259228181093931198120117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.21086963011262781557962916039162488992600789192717542131434452153601149170623279185807445011140592247466432290015786700658875253434281122713288249913633617033214856219833669907164464033302015146556043425711342744639683355773156696931162767677537366527811567871143970446954952970890842842464186617910e-1") }}, + {{ static_cast("4.11288422352877880427968193544074892997741699218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.51736412939929010690320865251123905181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.24565288563751822331299972603179488550349468370067144446751898852644002616709216207408151506565589257442807820798232055968358812640290558093447292295273379034573533601586226697268290915360691120466719143962043078879323957769794563236709847407432551615445562560818926972156677354022231138620495943375e-4") }}, + {{ static_cast("3.83413786726422607898712158203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.00384576840691153165607829578220844268798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.70586881100241909365086281828106615321437784717557599878404325717613404517722842063862151116432421295729131945352592123500947115034261116251456345076603582494211858526398683989440066160175940760838173788310914276938532934671434380694237696835717084352874743706871899256563045584501545107582617433574e27") }}, + {{ static_cast("1.45287638810286156079709662947152537526562809944152832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.12685751933480298196330049442792642366839572787284851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99976308406201382296511195677454028213966050559386949061001176100458674306535766658075727649858861936143578824990999294178518894376297296437371242014351633015801209221765213206140971726863151455918302666401442029878834264175629251102478211077868646609228275473662440136138981614575523961652841689231e-1") }}, + {{ static_cast("1.06060778784217379921983592794276773929595947265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.66538555043448722320365007476539176423102617263793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99991775850777769594805464682102392095766388724998006545282885743063065509840288039071353911521871815954556155694843177720505424196812072094678443706799908575637539974472545844157811962504294140635183658965312242832638263593804028788156476482121148602286677141129409544764834011834242854688050032534e-1") }}, + {{ static_cast("5.88086377090030459208191970787993341218680143356323242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.28950414823927278495929726886970456689596176147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97772228399557115917897595553123200059617745525398631036747902716221825268917059130877148214691312502174434355597848183024102187672671321353149180399633699090375168044589993636218162674313714376215322688591337150653523844732601246528148296899452660176207080310884559549441104143585753370139662688312e-1") }}, + {{ static_cast("1.82088437442942030486392468446865677833557128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.18170819309718790101129681779923430440248921513557434082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000130754723378331003328108523077660890480086159377400421770916129060299296337133805493313328717117334983973342138421022906982702012383037259191961910456959250943670084798790257349266900179703918444391347033677458675178576414635996649806132816647233201959427396166295868642002149628537093670669003") }}, + {{ static_cast("1.81790864213692415773948596324771642684936523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.11112317505943991591266239993274211883544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.16716616089260899158634927691311476940264689424270830038830803482761816779192664467113169986590716888439242048069862364270415910055880132349242712046577768880635878273030333655678293456983297487516817843334720432032181949191565525929129951842591644277698817197191950932369312197425519306770280944742e1") }}, + {{ static_cast("3.11682213641562033444643020629882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.94098588905476396315741283160605235025286674499511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03790338780611240821364394096187689009151442337723127625883997000112224823851501188946812750320424873330954741819494803462494193607811995436113951374495986635400485180461374008937550605117989616259238001766980179462154007176099462553721961527948038831707776585902099492828100272597482214965326918683") }}, + {{ static_cast("1.39087864126595343872150323250025394372642040252685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.30102723808126441440435883123427629470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.14022877396721831842223346046335424470246823884137406233750859143164782910052273120452909159294424816461360814736670369100321052363875210113861850087708357854957657313512898387152990311841659387594066789695419982631901574195401313785030478101180804642923588217360853722001240454059693137169086797197e-1") }}, + {{ static_cast("2.70245297975474845853308125676051076879957690834999084472656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.27192418381639527069637551903724670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66297652134236153231549630311782646457435806521553869102045806271290140313907532572617601088189845177879703715370369231877915346831429034626669722739550299919960838955152823532091259662956246982857242736145549200749997723311019597549168518852317671248226020048798842889139150504890040937192852486477e-1266") }}, + {{ static_cast("1.24917144681230411151773296296596527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15140916555233019380466430447995662689208984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.38260599513773427745927397841453042338248242456988517458147773019568704658853879515960004076402277283883489795069346406439823839016514254977654510204974986928186171239215823810556312920621087546486393810430469767985081698483192169492133075210737954383435371131440185644678524564816434215238704654516e24") }}, + {{ static_cast("3.11836231019214392290450632572174072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.07745884054014173791813391289906576275825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18191130436089764539875276066824383600066278177797976268794231640866698789531115667856789828761726794355968881132857750694814866048339710833375629295256557712732385065863487440162509225900966765667937759713986800012768351783498265785505802770202831716066805035224331887004845557896771449008224340669") }}, + {{ static_cast("1.49079206164313831095569184981286525726318359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.42373605503094040614087134599685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.27012834121533023666785182346229437241289754499051958039863912420351581912036946871768101343922573098899177777951053704877386501476998681242293961635818871027535060307630949907397555951449420495765047830618356183657814571149049220337636474144629773918060565875711712572574729922979876342390263324772e1105") }}, + {{ static_cast("6.66620618596326164947279968586713039258029311895370483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.21273515382789454086776004260173067450523376464843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.77204862888219369744788573660770287170392769001738688402155865708513288003188496251740638940642992963657767448328425353472870578497253649660611575851476001092271122636729433601460150801906619434951209083981408041494135365768470816162930615684520542260356335965614720676272646217323394466315267451500e-1") }}, + {{ static_cast("1.38078986432311534571226729894988238811492919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.93562727297856326913461089134216308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.09060418138444387424424059062331178711979043905828333720448765913252697584689444873629369083510366476460104106313375773568706388071930121668811178870306890980290075045537520987441428335324653171796426529164093528427568372203611999068229147036397950044150945977202609787933363721956655499688121770967e-511") }}, + {{ static_cast("2.16771050432941410690546035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.11416271213217389808580737309284813818521797657012939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00085620226622470905732844417905757963463091991631468675045664887604696934739150514381777470211904644648980514762573227291787791600677422794047913591269830095072415283470532919592193733010388187339828883232881043401853930198928232094973120867346831075681954343729371567448461485192448773328157967492") }}, + {{ static_cast("8.66129276411148731409928025470890133874490857124328613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.63230476162026535980054120500426506623625755310058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.75677926316087201992937434104172212635183402081845367050961907386982900528845357336855433020027701890844425355924313158894887243517734179729721860852203216211626732274220956786288208809210677612308603888585509873354794360927290410971415768734554863757722931375046183502833124862440220040682623894401e-1") }}, + {{ static_cast("3.35057580340428966085564166377253059181384742259979248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.16747650803829827736990409903228282928466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.69762726818915994102636669640248641695258916516178220951615332541358403169898089796085534108216181605452622185779736827460245748311614902401628390881069582094010945399117381574868399439034359201699565625835678615787458358138834274021214751543009200113868243044350923559610553355961511493945076046223e-15") }}, + {{ static_cast("6.53381930771882064867828177057162974961102008819580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.88128239916411388321648701094090938568115234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.44239576906295172295161064728901353975092629051590219076800377900713837403284136783431262977433666893756151770251819781412876948522321366628456614260642901179077056688683539196520237460889892611407142177331136348438247424975172992629120895139251739138531630904163246094893508737465346231066931419052e-25") }}, + {{ static_cast("9.58824111169796669855713844299316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.76775888223340871263644658029079437255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29079715270199960942963556473318847100392035825806894633874834481890517355918139252275167622132083673533042352315135079499274198112245747602316235108479674713674202663546893395644195003527204518806401402778881498713093151993690595544754136969841959488665417573929913679381495568123074940059218587082e237") }}, + {{ static_cast("9.80462544807249748030075764404500660020858049392700195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.92380061818621106439763934758957475423812866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.69367957215417366534795032414092044927898150798664469523819577887485052498975506353682229088031835479896261249192998498541269057857290594440231095317424708287026045610877468508170913712129807960043309223866462243177903185979844369471346406937023243553333556543631914530281862882346915332974736594434e-1") }}, + {{ static_cast("4.22715824828159014714401564560830593109130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.73237473383745509636355563998222351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.85142181625610748727512967615608623642319089823180852116567338775155480625397140714648406228861247464456116191851444571000366236244452154069748412545940070600491678946250810802096421175871317523376451483012224450957973158915531091130907648484702974041033736125577265886371493322366154555363836169078e108") }}, + {{ static_cast("6.96647127037580693453833191597368568181991577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.57526947921747250802582129836082458496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21776552625627356590336877317582904052748969026951170943346144361121751863809186842688158978930311760773848599440472082708351294025960471667864592532594991999006914698692274398613842119283225752843571850040859177332114176284555447226936581391382855150937157990431287391269415649433263516860035782138e-414") }}, + {{ static_cast("8.87031657211726951572927646338939666748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.34070958469201997331765596754848957061767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.30679204065692425620221532321916410120280977665891018935099692677903142836365793713310074103183167526509810778546217793360039724544105606790669360053805611269103519872268834740224972933178750433774433912507891375768945267742879488012985036171398185645729556921004734943776799979369402749984084043452e26") }}, + {{ static_cast("1.38894800193875870772397540520159964216873049736022949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("8.28834370250225660470277944114059209823608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.35222056499059860815119534190744388049132560559707635179974362835024292102863415735162094842301916959003527949486946878329851243593307281685479130665725517616797588026104563060365221513904192277451172225341242860418605162130720263571624685346061029050164764398879401328940031001593736913742594656342e-4") }}, + {{ static_cast("1.09816947397275884975090254336294037784682586789131164550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.58183945899629990446480509724835883389459922909736633300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99936261439304212269593793274631621066678586897953594510473482514688267255174393243589871913940083113695300948318689338051222055912287552167309726448706279958229666015743107592418824002439360290161725288760084420735569321637244499982204153705684126108823317986930400592132185032791247608619277879575e-1") }}, + {{ static_cast("2.31096996516865660353801104065496474504470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.05549814372709782617221208056434988975524902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.07259003265165794231974650932471010325197411080114721904301457157547097334313567798534807882346741414784333355642286915364891740931795753032224983168581398136163731017251242792429565442336378918505638415347606482959367519064678452374991852143987534832456623394400259546622175052847902597251732867983e-1") }}, + {{ static_cast("8.49670416441904163828979790196171961724758148193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.06998079666728116224327926886417117202654480934143066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99758288631873273226282145885741739757443924805027385096536700548341955223394388330738555808413815209906793614975662061712919602993250011794563507497959691981853673962928960543216580974445772540799559436678586781978389593065105455927885069982188267742598791601651598840088278986439446428992363728811e-1") }}, + {{ static_cast("1.57311385387133050244301557540893554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.28071775496995989116096048565651699391310103237628936767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003170338187821543987107336746662729109295981087069294808638827112958850528655867141095917778641007871411889107729782401763128246612168904257048743190385169980528080025389670873111442583914650963121405799362630066123464254273948242629742051351814124726982856264616340030151043214382406894418159834") }}, + {{ static_cast("2.39202138047558889866195386275649070739746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.49118181918548543762881308794021606445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.27339014094927962826314328575939814304054781018385168289190485168514741352754753149678911930165646861374735328175462043586928267957865268734389479790773849220996848074070389175534751472812216991107745875007249116250242613067032470443930894251972922681126465003519414999032823440924453088711434009253e757") }}, + {{ static_cast("1.64634850170019781216979026794433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.58052312996124176558421225990969105623662471771240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01546348252503362826107105198333600916123885616351929759095090370675683807853397698537671019348523544289454424258903395372242729481623263158900841743559291226322042608326721672299094222138476822715326186152957264351608036142453170432188932360709929281850323115131827188070509946087921486355921396837") }}, + {{ static_cast("1.29984771123733180422585298252613483782624825835227966308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.48673306853607149757845462545446935109794139862060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99382895797564405052408771210317692764125583490813721738650031785719409851796983570805688722349822979681595897622086712994137349075757656980372150545265412692073900115244181782170626388308672797472118433651575906690160786295103594530704832482562910548180219532761382129979082146445301288761331520852e-1") }}, + {{ static_cast("3.34499410762214122172508723451755940914154052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.70362841707174993644002825021743774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.40485852822901975442109716898610918193900542520961776863305069906497895793489542547982159745108266280524490077140951661552295048439266934614559790866489193897427949324691009938697269495988925070011169411841665487299534902136008055662912091113639828368592572760704050198717640286295766255031666140310e-272") }}, + {{ static_cast("4.58769266685160914676089305430650711059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.94008884841098259987912655333275324665009975433349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00265878013514519296809865295705868217393246867225559245606227172893223522667583594724300322356488286875380629025637162385262938162022625886814529504008804417980773476428819488610083450291142913844379562656183905757559036430981251862699509205398028210683848825112302095809741897956564300820095580866") }}, + {{ static_cast("1.83659034529005538161072763614356517791748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.28717719818835121259326115250587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.53726930767980134628351414040002163694004937538301878071492381306637265403593248974390687238745936146996356402451151949754817939176416474547668969917407094657482938942615901000965138448816198787619804034435155352704149778316444976717855180409986287616695020212770570197624985971189801426264668362739e113") }}, + {{ static_cast("8.69656197110674742973418505087579433165956288576126098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.53470532471532833396210548926319461315870285034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.36245700894899388555856775460955394048641742342223378203581109445790321544636857502869379407622931929904915591813410010543421311751441003345169506628319334514393326009523930245673734273160199057057608984977895920935149203153332718973184503752228376603699406900321208889195409621350940486281346111426e-1") }}, + {{ static_cast("4.77866412699338716230101908877259120345115661621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16847487332184418740155251725809648633003234863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.00939095440309291336847802488312895385004430053772751642212203497067924870860269568166321148643247526572505972984054880543549485653717067216843154655077419087852705718322510631592242331848706588637404925586365121042986696317386544833327481602868949385627978856713298735650783856235081147982296346628e-1") }}, + {{ static_cast("1.54963799196492800547275692224502563476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.11204960957075971172969275357900187373161315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16782897318171377990330689886402903355059628193684114132825684051875757607797689933491076299185969963004000061078683006351157287011440524301691431503915118755080894616168235485089522630543579349054155603272650786560006738889360398191602249883148592535791585897969899944427735543027279681332101510149") }}, + {{ static_cast("2.47000679471161216497421264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.52499082730789443929086957041363348253071308135986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01911645804528060285295007365522901933244353571254108413776362642912835636609229733378877024828901273387523484327765744744502840827542422973162779826478327376782490303695679704814420712110588844007646988152318154340574171527693080085147287526207828218450010980129801914952299876654249129807403026665") }}, + {{ static_cast("3.03723549186705435616595583070420616422779858112335205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.51110323265247643576003611087799072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.62158625261315621796784260963880908165199570383258880752909601743905724906716730454255511124675934144867399204404978430279501754463613692043192608111413253272638040513583589571469911855611383025946828382761211165356334768347578605666178294674917101334371471550226399719868797818976469869780054171828e-204") }}, + {{ static_cast("1.79856395286417303225334762828424572944641113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.32059115576763366967701779364219305534788873046636581420898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077517217823836935248077849892691299847903424265238524662417641027601052147271170002075034613200815926835872160958521395863660559755851166354980024967551112970300127247095245969854003499125350435566412954660499861774431261483707515396163088724936940160199016889915664585852452649068941190636190") }}, + {{ static_cast("4.41355937354146021789347287267446517944335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.42641018144159374969603959470987319946289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74548555036519520791276201322845305843766995125882533366758793048355043544777974793130718057932582612619627280143295972890756755586060864163343519807569602024123450673829021330095007485505005460893008699595178496760510808546265795771516348135206769564722897763853591915237047669941031110007831969575e-13") }}, + {{ static_cast("5.69171991829923172190319746732711791992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.98043102542145899036540868110023438930511474609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35629700595091638395832213480888201727086153567756638562745744247364577078732772888391063571800696941049290536498639573875131887930844892410621248852158649248884548273739508794634953342193256645662324249539648039244590505104994015484168576899587920875428234320711411322714373060714140422162212909132e1") }}, + {{ static_cast("5.76954356011381364402468285845770878950133919715881347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.25111872914564514758239965885877609252929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.94463304445870155806025859667737584217029774659090091223865132706141204011793568374081383686497430278169952431756767677964164234313821914580067310902314296078439102264644178954457549643252195734243656729528702645014237867821529512634908260975861471735012585206572278726071364924835281322609605715766e-3") }}, + {{ static_cast("1.05123768089208714283672857492391017331101465970277786254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.80326412933219444312271662056446075439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.01096635654174895730364890004274506998670967372315294988820585742497849923309225303695080415166238118944235696360277258545630995713146996451284285658251097270549397299546887024456736142173128664145649440632706184379221313274424739352233838868194748496986549948050292922466160812395403732938083994855e-1079") }}, + {{ static_cast("1.28163238607435392424349629436619579792022705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16524102155253899582021404057741165161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.07879719574926016494490747415323778012199705593394831943581938296777477488312425323506097154699459156568032482136467971947677672762383992541647262353219851774496336332221673599562229050781431336707003943210680119687255794953033119424826346843688505841414943672869216307940977860809662475253945553141e-104") }}, + {{ static_cast("7.87202251453049029805697500705718994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.39760572205021471603458849131129682064056396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53207555977032989055018208938771579303277505887799197079806149426805566503858217166434829573392590992745607709024458374528640995879305116834709101892580164791296787623750765678369128997876794757719509455355831607218534572758406336319858307548393197701741434159035106328532033366541994641153056109739") }}, + {{ static_cast("1.85413190872573295564507134258747100830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.69406846692120716113549860892817378044128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.95656735368615067592522859512955039643574891198504549379998394284320814651945584264960315505975008311532240586619468218955713277820799989277348072854744621874725681637220043518336051308494199906438625737004480910828551371454866506648373987268921256736551339157313351536645840751017335445520822528269e1") }}, + {{ static_cast("3.99959450842199415454558675264706835150718688964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.86709578350118121647938096430152654647827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.05340685717906270754605609530501932449443307474519553599524954021671059012176997891604734383935653924096296837478833892286774229478680952581431502458132810484806788952807655375243507984165689501659897282979828575230799553474262829100370309746639962529485962944150334131789310986002849666502428526895e-1") }}, + {{ static_cast("1.84674139572777286713578526189394324319437146186828613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.25571659299317051061706251857685856521129608154296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.23722070622293990830799081708429380180065314114356604329745073190591014971022286949735867992102290979570786194665670044964971913376468986554402193499702945966888241927569660743521069322430532256408138686743620372490125687831732257527068587575688326301178711197108267406944507908002982504230542257301e-1") }}, + {{ static_cast("3.58473911190903163515031337738037109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.60245302222975851691444404423236846923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.78031144785764416938612223102409855040299356306284612439958299013225825622202999580381834230141933121841779061836895061770649393695477680433223418771879979265527918578121214616513115300315506936777567650603403724811526574832706041635294702581230395655527148395841553708668562384577527922279281988840e346") }}, + {{ static_cast("3.71269374692093090395417220861418172717094421386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.32704198530596029974130967143963744092616252601146697998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998245586875139489901271639028340713779059130027015276766418411283294006537627833255021572845938748168207820412482122290518617722205438714506223415635135045747382101925106285222804464701875561904552995223695133038388901912278020591663993121292169965721308487953050363811103359158918910384771899011e-1") }}, + {{ static_cast("1.70108553436059684038639261416392400860786437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16607504683781455865482223899221025931183248758316040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978954129792622644650032269094574319631975777438486754903659150962464082118122945419410503323172656817200054190506282421527117453082829189458035945776425795407971906137471812197621061779135748565507246203908206485915975691199432826508885650310574999400116127525787480206412253878273855862615753183e-1") }}, + {{ static_cast("2.09225836667166789993643760681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.85669374483343502246768252916808705776929855346679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00843563284699754528712961596450017035453860350588570410059871012011253379813933654529429045301434484839481489237559065322374683637748571974104032389976926103159187339564349254244671809494052575105796625285810628759847430784136996879048594191371809811836063684074535025913318716848524590469577859424") }}, + {{ static_cast("1.21714727542868383913798879802925512194633483886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.04024274981674075615800667549137870082631707191467285156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99851738180285989619013743122680620229360476738383672375457223596142024538032582334141363701685216531955627726353087504478019029760906182307020379318817894422274668875967247480704625723584657033632048027924110460864147683431850155444025526123837240535234902995892523890236573378473187948012001689440e-1") }}, + {{ static_cast("5.07736820771065972511537633948819348006509244441986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.97089812664133678943301219987915828824043273925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61496103531524292145269969904333508188364139708137329208759077302004651060803860997069231846146525416244529356233531058823752839075298907756560474430217361656059248345442657322781131236619023757967452575027788503647455091630937116588678330308533380860226144011143233073363114955647590755520397783133e-1") }}, + {{ static_cast("1.05107095024027863416904438054189085960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.03411347779367872590228216722607612609863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.75435618440696236423847758785039217191601787351549036022831398969378880644344551767328463505949691251600586393797511528994909897140379260738080763330267660481025359227717949542759648019166102411005065795694130304853332521480946507674204615568889856249883941530835820527992056685661760535222848429821") }}, + {{ static_cast("6.04991801259759207250177315273731437628157436847686767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.18837713372669895761646330356597900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.65759593884760895858132938458504295554865358684199156580525629386190771627069601339728387260476959873950047671147626130674714736942807728977752816985626622779230687686049014608462755984076183185977629942323400832151270339085974963175219245006492664764899739861651980200882059489983917901390447959952e-3455") }}, + {{ static_cast("6.51744748140962656179908663034439086914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.07710216336688000492681493991398156140348874032497406005859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000328979143507415685697811442096253363291297955720636385496027164054688294193762566482130745852122932064218776073663482596744861678935376393042841878114830402198126626873661961854660156517253426476105318520395463096676472118157780746408448524800033381676594338617857965937768629354079942055143731") }}, + {{ static_cast("4.63884491638627549647821979306172579526901245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.58892435788971937427049851976335048675537109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.33715260820791317269987064747412391800309849955602033217225409481400578667858265909262657939940738177907804353137088637745857746470695800199690029742037073210058760217313184489359114691758908649867287570270285365266943814797806817843515342646282514312200010453327035336204860831498248439822619093280e-38") }}, + {{ static_cast("1.49058285795790606154814783579354298126418143510818481445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.70317518258870839037433242424413037952035665512084960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98108922622050827087546461298822670842973092479525322691759952475540660272868395330655428828449033553950251437644999243615808527145214868010990354809843842150796169597464947831412602935689456012651060606674408759590837715937317107067113406559618224088301687347090716482594166112826991011166298362788e-1") }}, + {{ static_cast("7.50315265219419380571252986555919051170349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.06222517749687384025492065120488405227661132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.40175419689520964937445314051307565108961445693694723005043311860973648366068520257018285775532813235354539177271941463790001972938524250513944002301467776271129144936307452041012641877576914077850978415809262774052418002232753061586235460151777159128199018488311311211799819289180487350061980646390e-1") }}, + {{ static_cast("4.26847036788872134273342684451790773891843855381011962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.25843044022171965845742491740821833445806987583637237548828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99967215285852515192073395540137950482554540502668958238310575910483321879481952698928091493628164541705483350832773369892703138436296385686888980010809861693571807457349075609182274750398269557656870778473684116326560067055000556274923680535552295628380182973673412404308833575096574012516864815095e-1") }}, + {{ static_cast("2.62667296496937296979012899100780487060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.98943432793326180699211569447015790501609444618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000067498249093796554190906335150484537007905333805853084798522029363004660855846859261868482180160316566139837296027351379815963628562093199672797915615284584800543052123602981811247334355647141931097257473080865200634384690696676990980451941954802180365065774462909125574737179287520936788897430") }}, + {{ static_cast("6.70966669446914210084287333302199840545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.16310384563290541287683410587305843364447355270385742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001744257181843369125556914164986065767377720999640888705793438430385027106235014113094055738186706162642114104415940235112867181288621050157885040444050793876376258047873939583048138039901310315757778797936384132441774545886210926930901727852204521859059543099653693673834002390277355781829097039") }}, + {{ static_cast("7.41203371899830177426338195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.08045243497875006967630373555522282913443632423877716064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001460353450390109753320201848917579634289514937879484407258848004890744776169944597998175250117503923620359242409184317540187082543653993640048666001395047165769964336795615132413269257911431079896523695358479509374941248440346987424514128254145411471716437568325046246372300034330801593929796699") }}, + {{ static_cast("1.69159255637993624077353160828351974487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.18026386927718329733494329047971405088901519775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763302348245649415440222014057755125288511751974439494118531238495212343084716356590900135150471489029857630623786718849006602487868725615880115082270216521029606377055101314827010471252021762724425333126829904634616800319752383603387644619737656819562990847546393907303039685961266007323499371276") }}, + {{ static_cast("4.71460529249768889314964326331391930580139160156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.65188827816496541345259174704551696777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.57039862156640741370099717884062397571736028728524050580037613318788846117662035095375103738860527021001943141141148597120492387251375648252287053831107964249223144395667696166786054472499439767489130687268705183565392558321079668035341534647161063188715235627145576677691259556611945549071489064974e-120") }}, + {{ static_cast("6.64982363517832908428317750804126262664794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.04124859899293669557307495665554597508162260055541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99916721594674747376600569188805403610749202879145587384797447934876298553391460440217614450811626491475153827239769211949770987067539929764774811195211928780393852025574440532735397207179531706592529705918782911567387089221968997852275611755107175151890770337885129722749288992344581262036121822096e-1") }}, + {{ static_cast("1.16893441744004085194319486618041992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.15678606859390242789231706410646438598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.51388885705521092082676462955313303770964042418254877907252507964234420916080103781270109330079123766686738994000772870583969928581773756873588657991143050640555136731739608625215812170605441235916882843841833089297543893622016574335981753027769495373907938555110085958780955474425308783814139862813e33") }}, + {{ static_cast("9.76400625826371292015348757331594242714345455169677734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.86442986632989526896153620327822864055633544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.74623224798347601232565592691979711045580692330641567994756260200814740060669606546590062265074708542429821154943403107394779336685935160305728814542562226163058396994725320974264154815235226634053969860486205541938719842224052325659161610602552591765080618174794519808159266445853952938084827117419e-1") }}, + {{ static_cast("1.87868482843651634084380930289626121520996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.16929872732812327740248292684555053710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.12028119371494031430335044645564708556145176065304647173808454044697019950167941050283479818252925468559303066000892193796628006878431527857608384081735638513924751307741786259324802053021768713537078672257166368405154064404708746524318561350343547073960189134086007775921344634528456932868446419630e91") }}, + {{ static_cast("6.10956934891920536756515502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.61245994668030334651120938360691070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.65700792854128829481158381754556960783201446467603874396477753649899987199726050381764154587841579338454205142269277734568001743334867145801385330344031718733980559420806485323497734470145803167224651985614888601581616073332671350983075972830731246525865989689804085186895425350117377876021236432000e41") }}, + {{ static_cast("5.12940713132187653400251292623579502105712890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.28564435019894255014284711879923861488350667059421539306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000373701282973747520930655159796229096921541589463952802693848825441766023480118817224366828254246104620872707491850843628745742807472462411859435943238658855518813616022964453910564185237673973654468864102738810104394810487407665604967406614750596030541491730666890517480494969397423025082726828") }}, + {{ static_cast("5.96919527975153832953774529768153911390982102602720260620117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.57180582106150705794678917870399459388863760977983474731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977473944483761872828387581066184030968843746303338716635967128051482967926885604187120298468309076374477372898167140591203610593108721399453839682426096478159671434202750765691646383078954275710747248498138805135910075991839124150638583040898450493059066421550145802666193053679045930003027645237e-1") }}, + {{ static_cast("3.68606214248608399230988652561791241168975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.49260037966346908013329231046384393266635015606880187988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99985103565493113484475922183999881089207789606742350698567516671823393925981239943259423556444582299741676725651226703123182719333272364174176377120721866858898501279006570635020422790273788959353152995392898746327367860857986758594342210926743928260938298323338805513021194833182527623776519608700e-1") }}, + {{ static_cast("2.75108139709647048221086151897907257080078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.50370430827189238698338158428668975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.22207684654158090072166193557643641149481975652647701708530399277363664695064351610680468504557225898194931419933867113331640493326162327026706800979963281990313857552256767561246682453632232432467037080629483164984556210425989798928121976072588554960434306958147259366170108308967342505596481568498e19") }}, + {{ static_cast("1.81162455673292015490005724132061004638671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.55260000441009051353087599967039977855165489017963409423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000739442221122260724005033635770725844741914207974197964181739354726511926916714698090584379202017604302885037125163720681613028683344989131816590462063741786918631523895090976438946284620031268598318287495015673164204411596879025777677083658398098322196424671094954029116891354161564494388093193") }}, + {{ static_cast("8.96493500879970817152297968277707695960998535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.56875157541190674237441271543502807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.18186472758714615747935532618938695169587522725634994323764763361322541875338494379271005378981383706775962465651100098009942121578720737172235160080858098630748438403135919432305006360154000115695658966205609995229485314131439314904570801339124033312271333615588491334684665719513845178970476180503e-41") }}, + {{ static_cast("1.26612879808979481716102455379768798593431711196899414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.90879340262861951771355961682274937629699707031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56902896481771879143877379682638527882901861190229819789042792546979238367054331337767498254741605069110970147845996240165269976456347023401814558426675219095881612725781553874494895757386564444732770552998856125193687086542254594118439921159929235553297916239134941949770234940282427408194492643353e-1") }}, + {{ static_cast("1.05179746109396965946490565269044736851355992257595062255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("6.59374100718207543231352829593561182264238595962524414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99092782662380324729163640655313848714756101648128347661760755472309885143398472302956067855710190800993042892779094559399021527010697359107101541167758299014549008387517426503427862359734988159027154498990787998696863714462719474369182220777439814743092111459144669908819231194636468040015004769487e-1") }}, + {{ static_cast("2.26677931802150922635519236791878938674926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.01284500605095928449372877366840839385986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.04799524981909743425238268974274974124170089470250115095198088233403741098790024678291238778471336000887693628348108623078030852501843027636021269414992355439834109447548416843301419510567977485938290387496561912410461657784176868621026947292962832450377901755820567805673466030070278228671530695195e1") }}, + {{ static_cast("1.47645383833588006439185846829786896705627441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.34770445962486519420053809881210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.81864953170833366001029957686457080479745389229343183507996187270256012032168347753440691289295163599099444007484206082939466510290612710007371495952373847856242772883552123786185299979765598455416935895627334117098932505280856391911876837712397381549095944110724452719067485663398985307194410072346e141") }}, + {{ static_cast("6.83690460562575097469562024343758821487426757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.83530767198103986204138493576465407386422157287597656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98542687144721504190991783229244229904437024428948393594123834827455412276977464755147963505927618995184986289919531376928027005710396398910486083058794955925781790662773364003988254537015097017811287414007455159323257827799204950099119284414629154584347927772687791013118617040392415483793228615528e-1") }}, + {{ static_cast("1.00205353905587213336758622972411103546619415283203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.21472319667746432969579473137855529785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.08953646324319429602818744612054042909432561532126770140572825180403651664408870454180981154606920328617475099247353850589948028434533205453640961164641456021776839621300753911422835934782850338468313312210488559936609343534193099022841479411388023651172446221865345603921529386692401675022261632417e-1265") }}, + {{ static_cast("5.15232802831238245744316373020410537719726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.60510257181055615571807493324740789830684661865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01431289853951002532506377614168990948051280337886607436878494527645645147723859636940385995419356184615086203041458176935646525562258868511947236909026624331932959131571326296466151873473074426347666272446566573176007728397599624815497760954111152173140369195400219514948443921717606923360226206339") }}, + {{ static_cast("1.50327863210486480966210365295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.25928705204024481645319610834121704101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21705224525603686559675227491858310594380597690754424568785114801297385692314088399732454361300955075549296567427255869777962816305497530312793581969492733775461667703068826501146498955373099052386164214730524062952781381010426318671419140310052915928431939434595652675036589780009141539593357125642e1687") }}, + {{ static_cast("2.52103950481096059522273522546242929820436984300613403320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.04572569600166157249149234687024545564781874418258666992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99677562816744661723525153627124442052964231793875730324917063167910023632186323828596851920875156111103787347156093646859907405739307639598484356543171131155872282222202848608366838457688692164646235280817749009555765844448651859985081286265963272205351701235959915053427147246220456364075290757788e-1") }}, + {{ static_cast("6.69572868673203203115917858667671680450439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.16763271218019875231225457312689286482054740190505981445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001172763619213033390863469162514923787137097731257478379858496528955583730797624990721270466292542630978166836841730894536953419182253636303821927335171827673847960943549331513055995583023583227615832251837950408037083523512010882821232754743304332778547391577736073428707081283889265580574098969") }}, + {{ static_cast("3.90611154895943855080986395478248596191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.09392819734250876240189143118186620995402336120605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01257436238989364436740053785780748984877719711041249303794530677616720891994615335093220833940115128861191606642103642393403535957041953141054150817528925853538686389534782202437853737346681413564667163289005149907512827692491679645604032151505662903966426036149340526908388743360309704155643902314") }}, + {{ static_cast("1.85738968908478855155408382415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.34900449082321379629112456655093410518020391464233398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007223974053029723271350039259412141636069806425386754509098025549121050837680692710943206684686658573776447604596802766176331791002163659401284496154417281082333498905606330772551902793976098371405853098920109852460783688567109865594724989116482969799710457089092798143235841330467446343910216945") }}, + {{ static_cast("1.76070615176634455565363168716430664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.74889370868937987779645482078194618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.45316765019878240189602403680427223818770335223288608146347951094991305163036799974448576646914163732716464031107846083674367407256925355345653200850687798959392811940414372053909694215614805160729642095127896071955737496902022738055554549005006428357198315347861922794020063710653902271293794797134e20") }}, + {{ static_cast("8.59257176966675461152189718916361016454175114631652832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.23640678060561270967809832654893398284912109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.75626791055079856222412335079669380796397627500002019826921615591957724636638189051537678939438100683331885757581588353701345439775420172078880839292692181866988352748585676000159933320197094086021294353349620582341779917757035411891306338495037492064154895428084541796948375617939605049956389592963e-4") }}, + {{ static_cast("1.18373366744053128780857914170709932477620895951986312866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.67326277601629289126013849786644982486905064433813095092773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977165516365318634154013098062676051482936340600676508115018286371174310194281664961388300484701624347701999911368618575116158865905431420415090042447533719781066713262060337264603666364847020671540664275635449461141562032657119830142469510330575908700332922190579477083626027776803818572001718803e-1") }}, + {{ static_cast("2.79297046837543444519624813437985721975564956665039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.97135089362066378421145529387104033958166837692260742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98254178388410952430693242810343707992963411946313883778028696826023938537768767830025754426281554000607392763511414140886618834915773502093937010404359418681811029932841236322654028803608283276794373781000755359892344545988755782370138251235941283542297935477464591913844965660089628462450619495872e-1") }}, + {{ static_cast("3.38113855762533148663351312279701232910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.09301666014966266347874235265180686837993562221527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00010890478594524709067739908022368917088132812449962876399165997211946438304504899291487317819472340328330375585022333633583894340550549675803507677712058170618442005704437605073252304959372965881786681685588681179433355904579852317919540925268445449423495866437480095339165546614783853750408452453") }}, + {{ static_cast("2.06425930083115716229258396197110414505004882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.22320068732874709382940636714920401573181152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.56994381329744106645164401249639056164129850194015191524774235721349310749300345652229762055800940290782810800288250321003967654939060262541583665184611869025848444849240326580936044484294913651408991979990620894378054306407392449503735235963890733618686812461995281192108663576402590588669671991241") }}, + {{ static_cast("1.34087695405307183449394869967363774776458740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.48273418616638036349186791085230652242898941040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.97025233069613645577452155667707700431529405119046003459330154763708616924139333978711947517286910376855122315920165412886432318792826535847675162918439845483335638190760733366507881163660357422897573743052858674336878106847554903297760383077263299654131223242076136517464708165444087161451001347315e-1") }}, + {{ static_cast("1.13795829837500036774144973605871200561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.03500201236379312419617904073021463773329742252826690673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000963457189792748049744783509653303667431326364869818483704842948351380610875652979437988682746278703117572921123081696661945181740330111308085604188704279357002138744426600265673193487995475006875655840336689027158444662492494587307695412667171074545903613666004574014189607190377465209019809696") }}, + {{ static_cast("1.43733943515224175686145757779854648106265813112258911132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.32214836393443135875713778659701347351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.69028929542482647910462333162857910188985784876407542387662931701295222184216133407420608557785163630976401541135533394749225188544894532723554319205860877128881077879568220494222775086397987960274421371074192662130785663013334009285908262792624635778476059436229937151198221859566242280319019160525e-12") }}, + {{ static_cast("1.40044272789335991546977311372756958007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.53744104780148727051880541694117709994316101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763558978681810389405573088195138451898513946030420888756116873548356901540068272802595421797514887115185086583712361722645481445016465906573909064890341678510048829617311165144452645678278211232399208153808746476971992206798944801345917584439323122735213774632862994806449009371980892407850308879") }}, + {{ static_cast("3.33770615636067580211943095491733402013778686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16340691059281198249664157629013061523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.74932879103617263287699269441230578657539752277509100498121992886363492927534654879230172186557771810338441534937330485904491247273189306610489852019997049552119104082607943340924820476508529648819831797793990936006114678588935819382061714015089476930073162215255275726210879447826384500950556498380e-77") }}, + {{ static_cast("4.28996264268685627030208706855773925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.55843482735151467322154417161073070019483566284179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04758858160148749573207693865097611258682532053580644741708378607626299571741454781489071163331961478583318303704887429698138745438016282037356465726871543404600493318018423949357845164509841052287336032095968547544265578409278441961772371247405527391823186341452132702680834735192488255543508774968") }}, + {{ static_cast("1.28110344596063102651228859940601978451013565063476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.43418931353877687762121695413952693343162536621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.61015280162581259611603041281312219714750672075712379519625520748837900282815093599469657102449329452585522609992906027038154076071639645146113938200595344162570525215006263974571317023675884323716943933613404725430584249433688012398115002318410911938391274174242791011414117839535968615208469771466e-1") }}, + {{ static_cast("5.16672517946984571901580807207210455089807510375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.80381185032818629470231092115639626172196585685014724731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99990502044552423124036840709042864832582112050272720529614683113869481837430803897286965523406403026476324601866776220157395635334324411401951420003880457537783083750584239021034205680737146324172685990190142433894632845319189846259349630351570776916287281796804645673831673367339618359511691534945e-1") }}, + {{ static_cast("1.27899907316783210262656211853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22536024090327483326845481315103825181722640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00616341899333551359328361392752162344577264467244472586370749414301840554961173829121346442368844768868155278219296270614015234651325697529392935793355916715136924941286676982861345063267744784667777743656327428634674404454023683239192093835032100591051537658643852513812450455406749057692109035777") }}, + {{ static_cast("7.11730850188353797420859336853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.60788079495505627572460305430013249861076474189758300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00107405241322382059953913596876333435454811871669131165966566428674069591664017854016649566117750922070455790150785398980453750449040916943909541516125417685189264145037334413362116738563574347465747605135946915752491452923545893529316360034715492483804067411471432361687478500733144787639791290510") }}, + {{ static_cast("7.25343826567665018956176936626434326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.29954091776851328177144750952720642089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.04970290589109038711395049954355776776342381310886782453562200726034000844667284742622588171082170563883520775218082400856123793786048177341878726458251943347876583569178437736653743701492064380769184875657546923031668880530296652280260428229230807500261114316496980898463695380987245993698126306466e943") }}, + {{ static_cast("1.05425305597257192857796326279640197753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.41211561689230674643269480839080642908811569213867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00221940552517387456904940935153668768677803438018028587024892341085297549561710698873774378670329922261139925263482590967131460066291169951663366614190003024630959832086281000186573153943388176622129526851339850140935108594752581778544126368342198113455082270613501744317697800189856112116044092035") }}, + {{ static_cast("2.06616686835977376654471804329205042449757456779479980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.69516133890853029630996218202199088409543037414550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.85720096393058346372084885893839606320554663169456270644249004310463500725457211657627998908535169742871675934174757999843761965159654941281377745862394591058408452525449223020548106433276286869407305925521861569746775217097838170535894284575048909646530082294345563168457886536304399266956794807072e-1") }}, + {{ static_cast("3.64402451110348510332492821817140793427824974060058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20455824353290882888778412507235771045088768005371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74947852438644348963594070779458486239729374924703758041706549021145269914102751629698949629550481353884433142728878758835488685283460683679637491539837448325034596988851330419929610091798061933767303224300754233414005420110971299300889653323675957445130038468323617573447274322484402694978713617040e-1") }}, + {{ static_cast("9.29240918436359104014016924155683341268741060048341751098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.10041539819032330171921785222366452217102050781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.30375096076042540689175588676000039497925847630595558133397707131285132566953633275113891277016515974090275087097707081223643727147456085023753621384884096242056199349318008502416132788061805089253485591443085259511013177192516510953942353610198267062490629651968866334656113567343023162640866499116e-7") }}, + {{ static_cast("4.70374294317859518955657338601383798959432169795036315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.29316103610866321105277165770530700683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15122965827666394521150958097124834553922749706241413675626621322918765539817839286128014659593143570942315119838489669350005299860384297452971974330427527438060831168176929743817135707477251203472467806027668891154074309800997369457141925072379579611854152032663703570089179850821080592817602489379e-689") }}, + {{ static_cast("7.90111168678090834346927628928369813365861773490905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.50142935632569063386654306668788194656372070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72554973148662694166759157160166169303284736393781157514352684466477860400705537599392645875431865905681445772161441577785663278326674184262006684080907675404076284363331862467589217294540329968481020258307213288969704999028809892457240851077890832023610976308448700744934847296072460694151132193050e-13") }}, + {{ static_cast("2.19470224538514946388545467925723642110824584960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.55402946608165493103115295525640249252319335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.15537644035230762511257501642891052274838428807882763659106583075479589103986905326616108567723817554261320425463998387402938492727716723367633134645452074625478383896044161060182209094299460842378984988424538062120485203568234956869861031978112571715328186447068917826940102237728367749115256994036e-2") }}, + {{ static_cast("9.59375752767912236013830851177885961078573018312454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.70600447818681459466461092233657836914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.34074971005352694977724271428304704379730503069979006543824421982543154474277701862893673330086806692863058917258547615336829675716810145864841475235135109391399496144355613620559781473891279309689200469472005874869702401500915898827498117462493418903426151104912981808366378491461635507492430973906e-2833") }}, + {{ static_cast("2.20730165021212201281741727143526077270507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06815138837059212754271309009368451370391994714736938476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00003305295163452281794976529673484400203041012190269638476184821369788032078572490628055955783906515975070132315405678121749687518303529356301281556543290455691541229667405975677836660331331546866945589821129205572181796808319706436826468956587053252695087454167269382499127173288396374118362076812") }}, + {{ static_cast("1.85780789842078593210317194461822509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.30823413709633314283564686775207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59033859659617126254628613087390514142443448071790104857905386498498208916927300817260750485505223182216712213534955208892328370772179606978553650153083374335774046910050899642665243305280141884413167811281876091816572586748238812963621916941228650345907682195313189327181720960131248296641667634950e427") }}, + {{ static_cast("1.28002693604745983830747735332522552198497578501701354980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.28203848010336862728308915393427014350891113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.86706798756547273034023259748332998697114154360428093064398895642136945343512222443801509462788398508116083101485126653725181025691107909977090006260480711914768000641955268595050193784354949171562687163857371073429271907026305099383798868693635018067191669439164014101281294813574568021616736489720e-5") }}, + {{ static_cast("2.00223379702332143770249217595846857875585556030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.62365481395694466471013583941385149955749511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05235460797399961706826012566932005845504749468248264540170967631534913675307979194267567883423064423939335134422258880838785383291061227375243059330869736175934549938928557322841085452000578723759590054565129213090997527802918663825422738502966602188020267614510519712792292721325579607440137453800e-1") }}, + {{ static_cast("1.46975278087147759168741567581406570752733387053012847900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.86458989513311337860024252677249023690819740295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.92154549068701501199366439766982295808371482320630816324433379463381296202639580495789257638722760912167367897485745357403740992265341544963450873213458100774396760614353635868165234585261876587876465994053070011062897736386668244554072898747895651881702386350638799402464850863950102149208151366166e-1") }}, + {{ static_cast("1.69869769328567166155607992550358176231384277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.09451664353347934838245336663931084331125020980834960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00005799594795372584357977768556944656253178249587480331145989344864034282666379944361611058467140259982713730781408566683105999320504528967383185252941819780496432948156779669264240460517640856647134097150209519411486934323027426354907715934579141058953345456267906766103552413735697517517849566921") }}, + {{ static_cast("3.15183975929332882515154778957366943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.02384029084149653920920997052235179580748081207275390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00828189958217090945616829239889322422890752450091752768664294850744665096849748731214361917701488824218313674215416049035608435896320044761285630475680013499593324921963112908846599652343142683769107300940314664453753090942709855630290654440762603604322610449245678270429752911593206005276375357381") }}, + {{ static_cast("3.55087476619042874403930909465998411178588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.98956931787756730045657604932785034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.32018908151418417859876732852718049962350652342105850490583184901223805273843023839695354873994074279947349253543933474250055215956442663452932535132575000870445343325403706967004656960749057879238157659107219147411710899538754744145348815414311088777452109665676822468399972746650501593917415911950e43") }}, + {{ static_cast("1.26775488796815989189781248569488525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.00502285798295979898919760842090909136459231376647949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00071834700218288240776940900136375146363527699090847426981092022769405513480212911323057036382071349683106853880233005923304991341200308955960878969600681793506999384869035120625501911973134511693383019876699301926591009688967553141397068289179934328294897849913598948019612426308123680588484240861") }}, + {{ static_cast("8.15220048105761634360533207654953002929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75025311305504219921980180174614361021667718887329101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00038554010810039170759525901230037332621377704113376782308969416671995519944631372963790226541075839243378526551356024850278824940678165140037685990966568856425831851096416371162933528342527414028064433797747326021549595783932074419350022816349807211737168691836224208314746714465025589975731455428") }}, + {{ static_cast("2.65027968976974648285249713808298110961914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.00316549124626845923557993955910205841064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.76325996094662828651112161237788953415887952374670102134300653855113287125254830377423982732034899162480399742930099350206403828614662703257591959653574878666923823464038672614887656376458325931158457664475267311806542914278433869759036943522883194636568041344283954333960707999807543121267715345128e4") }}, + {{ static_cast("3.65182751295248817768879234790802001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67556451265639907433069311082363128662109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92218138915478317609234268428449378609898504811886050861657038624663939529613919692032879990877291035109701590929770282532279774612429349026418707716959296859399988519535881353467118924067126621065164445440389423581971051504964356883522778929468170495170856030672143818408689238481847643503940756672e59") }}, + {{ static_cast("3.06064234847405454518348699721741468238178640604019165039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.20328027949478477687250688177300617098808288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.55974238261708442675674596584944622380379860666888634356645875331625278958028151760326676909826129760886331850336797218123658397234427228603106790759796963957806080469839015421053939928057033567772138680185158581228274260396763090865346625773393191666291620910582819221973998350912562080963747333068e-1") }}, + {{ static_cast("2.04040793254407122731208801269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.86284726793166655056666058953851461410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.58821325525680163465105847555152044190569200388116750112228338962598195492329497459385020613020256287552717930952139248724578086838832538138376726496296560875204247514233017557960719338882649967806582509446295835645176351140001109236587197833843059204085625918013701386357232953416141714287393580849e15") }}, + {{ static_cast("3.02716069476693064643768593668937683105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.04039959726672404105585201250505633652210235595703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03510986044313446578771317219744132510998690381352607017246273580247626695630046904160285453167383058665284858123740052884532347981837364373948718495188424769656549948930405672217230120189497151355681193015659186537151773454794215525893522934864014682466868462268390720016762737891468184834184088104") }}, + {{ static_cast("4.47552570179789768189948517829179763793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42494522046174552087904885411262512207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.11929646387532568976168597828914488086907276576025509760458985730962224619833220482536328707584889009590311478709195034015122056954215000823555978179815671349373291996702460104546989380293121918158085134301955237814810326108959984625471199876172816491246653847194071812034535823558646590118729075911e73") }}, + {{ static_cast("7.89920944916936605295632034540176391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.04372395393338365465751849114894866943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.67759107384668464385278885844815795751161179367906982405379998416580527424480738041217566954239691080320039512890036456504748798096287871747642118148076943027438116523332662829876900574449886819108021138850402281937549768122792675121441618853423616832699349260369305453263152392638804725787763327554e302") }}, + {{ static_cast("2.54801173789754968612708552200274425558745861053466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.15927661277336413458982633528648875653743743896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.58205367007949169809279999461100360912902896399937272021332641770690450812544971532999275755132753113048328902348279538087441845456071781043743985319802898282971020600433571724744632298362925010469603804610543751544460798372376992115798540860563907814359172789945116001784572399034814979737998689779e-1") }}, + {{ static_cast("1.89928750500089372508227825164794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.41078495521190028227920265635475516319274902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.06563424507714690167714042623337538555278963530996591844954713364193688715643758076458567982650781640747670966188519005031306885869355129425908043628325745338231076914378682618756362764508582923824741998110533664940173863055464267380496758389944654061554957122449256611900453680459384297799878623896e2") }}, + {{ static_cast("2.91020477415979972324322488930192776024341583251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.10728022839575198851824744394889421528205275535583496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99890103192413085441074667861315652249320196657611339570482857071941674209639709864703891665811884603908304481549592842627180817065779143546842079140388383757073035382383336415119892457712538117493661547669850819233137331852231641783994865993482070326235283184181541427573679758103030801595943776744e-1") }}, + {{ static_cast("3.14872001537003598059527575969696044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43125111933481261039524667921796208247542381286621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02802334347014804115203210525086340106221839607209085819487247743041255274944512485633547164774253058201682853956553615818500164452268935135547407521495805328007119673698391733155607980906430692803512122247717040507439060960157575458288088753689807084410223837216910150868125550872659514690258206478") }}, + {{ static_cast("7.57561563668409548074483828017378073127474635839462280273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.50776874093542589960748045996297150850296020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.22360322691615293009344442522576915365414410103567546362459956848539698481031529793394942148327475172323264893580159766513287240943753652400314434832413344966940876720610075372213401767379175382193046077868122711719538872402153088637192089166340900530573304907112834730373371836607562222448960151481e-1") }}, + {{ static_cast("2.62745508969974561619409314516815356910228729248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.54116524398034698606352321803569793701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.65627927121210139869453772647172972010233396005753285235163657937204725700240182301143436917519389589272478600896823141333467649759723515447005854045233682059842082604402664004516169590843725236432591088329366055949159027684989904142732333954835416376354569871287255391194720780011944013876616447352e-244") }}, + {{ static_cast("4.80817610372865829049260355532169342041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.83678291961692252698412630707025527954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.41928564331678515981471338829811408659000181192686008443981749115702769340722053174798292070290561882896008338642826088125297911559295342634515669888076588557229523820060662923011009955171952757056636448724507715649589034168433634032429475749149003931613573665241664071010924406015748971161354696738e64") }}, + {{ static_cast("3.20537873291325013269670307636260986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.12063633247133534681996835935535727912792935967445373535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000736273879463173771441699203291296246037525214803383466819484064993717806192280443913585501602480713195981402804796752564583674811227808842648414027111557663920686825861938638104671353044668858964832448138218436863850713355695690765716750462185486284733337309942715764828383697583139810455212638") }}, + {{ static_cast("3.61912176346828890621809549088538915384560823440551757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.52277102882139392207860861816470787744037806987762451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99641674908429772727741716066692522684337586976236285526703123104244360091941899419901468194625324926731894302874406101537005325420303987745335631550541398216024526757166654981325659490102941309976706722307972204026369136295841549401634445497494285259254938938876164197916350437289297642860805084296e-1") }}, + {{ static_cast("5.47727150864758538517662600497715175151824951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54622621028518670346224572753612847009208053350448608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989699815221047195237797415460745692681672883768835967449812852073485700626675461871958759788593113792388910307095890907937872017129700062714402629139690850899327106043179965950904385626167111246937006767223675683130961170323257583625795510235931710927527056466356951973276658601609644129515473818e-1") }}, + {{ static_cast("3.15637438341709639644250273704528808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.72407848923734441370925196679309010505676269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.49825547286670319702380922050187415294618434375837006137892453203122331928047047306492172079078511814726958266726273319242885369558258257128888847286538356045014816657847217085941522774109065130033471139571270092091883178037417387674630454737070888538218688730956097543661382768897165490297639608102e1") }}, + {{ static_cast("3.43503294936064165085554122924804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27250150145350989297488020213222625898197293281555175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00162336779090582285668555617540990956375149416793870895822616882369079038963730293631724525621870732184904017056404166569755879690536542415147024291651047693012257723344966042105272046767388935297934745863474716190137901174215179659999117641456704254362366255369408392878120515423933846401645588741") }}, + {{ static_cast("1.05074245129533483122941106557846069335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.44512744072382729528143674446738486949470825493335723876953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001005416673874970641874885661095503816717227379033676876612730865335989893449582345456543451081149107465171659175604293715962189257810117721711365871006508720993220186972724366817623975260748578680835030711473739357905906032894783455531711583331359705157662673931729626022752940417931688341732378") }}, + {{ static_cast("8.18657910086106118275478538137690520670730620622634887695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.69535439208307230074534999175739358179271221160888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93351224746448996937113594504910401882994345207771800323049779691276470148213924723483955246436042747455629177564845224233210837232201105509371449087604601761437328836060853287056217115691403748052298316839138971392756481564106383080155540424716692745736592178985310629391299501759133150627938918074e-1") }}, + {{ static_cast("6.94796213109996792234301921098449383862316608428955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.01032189649519636986951809376478195190429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.23006490342279217571806140077665886981099414044595093418295957860943720284086984665743578056568297229139299500245761284073691802977046208070538242215508979634862568996291341587581554469156573033924350089621252836592701785348565193758908337598409016657851371246098654329684058361927838809573986193758e-127") }}, + {{ static_cast("1.10592794589664117665961384773254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.25260821850983816716507135424762964248657226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.77248676688621920044634297401786442645385941311525110002800741928600473067163385046961591455772161080604895545524410628330763921136911631698147157554500689676133210576592147935248743333122279013651774018515939625427205237675732186795164784795174668611013924030393724917154265078516887725307445272803") }}, + {{ static_cast("1.25391642141006403698803850499388090611319057643413543701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.33579604520485872853896580636501312255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.68392795308248572652843135364969720382138943730339914636303299072150410868121378543408470390954010868594468316840003936924097765196715356527524435528061810352989069642830612407823386666008449194429503821925534277567874494596141278120854458833913072506701454712189004957264318701887957792196559450829e-5") }}, + {{ static_cast("1.43124739542791035162849766493309289216995239257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.20942048850905869983307638904079794883728027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.99052723424150661886931649071103918452644460542298398165637531920915224385808227208964029010419121462212498905692527594903577506198009266794868206489817939747878141799591393368960481067737790483228614343187263432824490432996787531286395390254093241449602142598445964130129975312810018929887788198701e-1") }}, + {{ static_cast("3.43751575420593244447609038161317585036158561706542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.51206687051705870317164226435124874114990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.57663597564430277353448388417312985615626273703902768815220625590828356254147933705830400685411299593103143556639123246778758775852967467852603984265071153374722320323459885871194691907711626373620710017973655475923376123554952810313797438555025227910644691182176423627488188876492434022067149277036e-38") }}, + {{ static_cast("2.17472395590978127746101256079214181227143853902816772460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.91971825175046888034557923674583435058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.50169709235325052632986882192448754882997090613648358141414144591089112598426944965520244801106015239482741658118850562377407270011579313225688643981938806077750575133252661340927273680933994486522267294226372481412223764992202845720067257372057887189374997685336348698935086839444322249450808054944e-1362") }}, + {{ static_cast("5.61856815780757930039405328992430099788180086761713027954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.29876093753134198849341629511400242336094379425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.81481816351315594384727007893186507859436644672331091167617928065788693663352781510746621160037607384076966766971591864898782687655354341611390803359295084395315487119152362491516158659729010541073082819881189326119491997777097209681555255784910126963441436697354364542857530552913114970532656768045e-1") }}, + {{ static_cast("2.69252008622562698292313143610954284667968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15330514334751887961516558789298869669437408447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.06666279730568497198113724274678005155752498157046477782004178363192374164474721840040331312046115275560496984877594971350062701246211629447728806246316863840490103633689163217579393790965785864180257773316151663393300617519826348688668218517932804149442470238145344903593621930871763066878050548745") }}, + {{ static_cast("3.16092590727489834989683004096150398254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.48064997212848559193787423282628878951072692871093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12772520348616005115304677929962056919100702599904589876944000234727659228749834981600423100421009690523247572724398560756474248595294433046382239886297029833469577515642633205214954504439619606667497183510745512915018311469959758235733226013623764492488909973197069967553629996698907871574676780407") }}, + {{ static_cast("1.11417522478442774288426297957244059944059699773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.07515622779491204497048784105572849512100219726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.37919294955190238371406645550683331410621638917073656116684574199081255090910984115004225393137968138900076398279876623105976571541314203892497339063273916638860131717065142379547629145053297558185567155580289078804833133323155623898592227362901992618266649001082738287327625009340169715002810953003e-2") }}, + {{ static_cast("1.54818678360652516035056436294325976632535457611083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.62060471994897832819643168633660934574436396360397338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99950690212005897959136097299917160482075781519044088208212676575453006587694459400083447882136665068803314657182010357110987268971672741796887858729353234727108572424227132082469362733286450718291677866426969142840900462763239110268260519434037322501413834614893396154343681850902784948541773957467e-1") }}, + {{ static_cast("2.28067710108071286176367742370985070010647177696228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22516467629786623624865704584863124182447791099548339843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99645746030268443121474912265456530387059240825775542503945117534294341852612112033263023994402497137577664903179947031417093395690539107266054577344864123860512144985801819409282408928976825661093887120497669159146596001826170808186934642139325551337232119779982282458342982953928951761806573163414e-1") }}, + {{ static_cast("2.20739083812885155566618777811527252197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.63635428348883159158696359858353730487579014152288436889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000883141260854728883702175584015782702915499431300231183450474406119123947650012070542489465023521252692179702983050986429423066780728766911719282820886407479657520041375764406817735028802434658714254220988205387649994799335160542734586791578044041036401530550092162441750788372567864862832251789") }}, + {{ static_cast("2.11115639194152252336444952618421666556969285011291503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.91611178791150109645968768745660781860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.03851749220927707096105838017357917405034340382528308320810037826391303266735158295669708446462859180309945589089175400795292926848603356140832744578280150360981737396616217244331933441226205091493168502347016694353942358220609837333188158011389094568440922575728826317171755408132992139505746448351e-181") }}, + {{ static_cast("2.38633916347037029481725767254829406738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.47350156205279176901967730373144149780273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.50492562190358454748346649100342667975057580840217621906828483604765156733043048058740688210262627421835218492853562454601684989325985386603026971417507963657922417960947826930994787046883004260577743222590669257927836671693436821127356903028204248621426323317746936948905014560414890048500518981483e58") }}, + {{ static_cast("4.16496490135696059015080194853908324148505926132202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.07526112190653293509967625141143798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.95708970459274514353705613356165057031575229424640773311770967490560575262481854947938662630918869775857057855329254545872812061129308665775656748897011265399787487814796202063476887242748791769330372489092700441649278984973352735989854637536188114328280137258357850310518955976767163293227505459553e-135") }}, + {{ static_cast("5.60807874972006062050389196826927218353375792503356933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.70244506350627981296208535155756180756725370883941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99735500279497094553640363695299701240525058593455541261394700469821111611056791299453732067954961427582921898800842237144105286658409494042658058247679724238096009700396852983653186891371272750369926281385138909360300419604531575348226930671075101518323161673992501032516753200240811209353821343888e-1") }}, + {{ static_cast("5.00853676861336616008002486921668605646118521690368652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.00645550345715264484169892966747283935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42868005311869594653291738037482789532744928595938052618021862026535850449639612018073258671047578104461913132613998217526422325806836712765473733283115693708797988431341752008408657974271055896785613419004497755473106128411938210880970972796033569804407750025332012993610194266901383355037197031359e-213") }}, + {{ static_cast("5.35323167813788168132305145263671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.62778514750403147104407253209501504898071289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.05603230256580909333512613256181086069213372778044080861620436376260245170503316441303581724403388552683668422287401763124771418367914789920284987220255387646685601968642931765033670724000770308127910918065433865509022691461489073952236533017504964013454255542118759406756885123664390687006240095440e20") }}, + {{ static_cast("3.22976764266951800463889554748675436712801456451416015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.89050305023335795340244658291339874267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.01732691727954660011725367716319147371899471036670702622303272300897410300692262400537048572027256759129565470020582895602617924506137374758437886475976576037363655165839084170315722377939735400391371695808916328159137254265306017499308291350722410467152148965233006027461767679652965168830636324127e-849") }}, + {{ static_cast("1.09048941423813448636792600154876708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.65254774353689448673776496434584259986877441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.58980988503590960516637371738014660727349100194484396379725478994088734700803526572947540745308063381145664972855458934861597057007568531182327714420486870282357356343021375166932444789575430439279485545025094851301007569967666444995213425647227644871269194317170084391746473828083433195180432304317e1") }}, + {{ static_cast("2.44743479435021299650543369352817535400390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.82995112549842228050200887423670792486518621444702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00266010667859458204491495940561046268243246346579041029260554228176172232635197593622622290922199036969298596977304010218474771392718302157017833152484401953670784025973565870850532277945591072432075029519001358625355897190571211275599240174542923282378185576537237233948130696870807231732661924935") }}, + {{ static_cast("1.51488749663457274436950683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.02354275702668705760531309145733303012093529105186462402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000985234516448019885473896561732145157443536520866911511897918118736186775473199587722487758817093449012349451559620294147840372481518705271731392645893056248771116553702829600792931868987911801336627246125357506584399976395776801325943965572049289654345210028541577738692060413098304903948601150") }}, + {{ static_cast("2.67331385687573711007480881107767345383763313293457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.37764930215238656785459170350804924964904785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47571438862309533743624874136133366541454712127562663177399504286662183346894197246880043192629661657584457838166576178504996182224295507635623850476949534360416194135273172780271343507597813231256012656614579448387095352094197763495149376101171772035626900389244626161777607049448871411562278802652e-2") }}, + {{ static_cast("1.01808534444340903490910932305268943309783935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72211847836940634692837193142622709274291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.82611384964605354323505795669056920339301763307089989948479130915805719954810517867370884785746904749334148062069679398152101779177523464996450923425943206891878509254410570738031307822715129842441609577961369156460374327926946469260053825787159767563643637983753386908235973617270978178126680100594e-1") }}, + {{ static_cast("1.00731276656660706514401226741028949618339538574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.18228984435489814508457584452116861939430236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.88175560346904726742930639398687086396036352224271818500936901685374885901648764892385495076288151387225190990418969616688304224966648010000551417499596854632379457426863173605879611399961688292945890600044144991480340984880181190619092493192482621545694847376381337620163394916517599662918605010835e-1") }}, + {{ static_cast("9.87804687799645529753395090111212084593717008829116821289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("8.48295760044814414868596941232681274414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.06922896545426989764243576324057040501874322165012440675766666713649225255160119756183042369835830558457195704471707778294936068250116736974227601059618844500705991834404101497665868066256287785153513125539305523985206318973305432078184236844170690028706643163133079135912179653756316354134757605909e-5095") }}, + {{ static_cast("4.41825747491548099787905812263488769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.79827462222631995203414589923340827226638793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.34369652134197483793288072833308732535658609465509415675669768410932243039179437886058214288267645007975345260332874670014492568423533076540783205684921434471069515293441857790677592200203989418352589897685209311617733829289352336172155226574531882652742067029068005584363117523423189997997484568014") }}, + {{ static_cast("1.52968448456620720321552653331309556961059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63460821261542546913893281246288324837223626673221588134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99996930989216600191785450269008898634303181250066938686025190496179003638914112281154344493820093586185759774048968741774280050131382009162499732926045936023057461223555387483027406180587409400576483490119308402153097647327397891029914779646839934539999749442740222968027612552511977099477561837845e-1") }}, + {{ static_cast("1.54590681969825345731806010007858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.80711944432144022698594199027866125106811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53179160234960851931903141810390484338949709737193408192930930410912781308171727424842710235568081208824229115859793069399719735722193263870374052840504012604354910230724690998586625239385836126384899034476217672957422789468436133936022499041037971795682906772214055897416212584774512114169944288303") }}, + {{ static_cast("1.06149875426708788185223286681946319731650874018669128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.82539004163816664938480016644462011754512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.14272969225465289903926091127128136862591595250320697667906487225773277795209213908946435749298160698748843670986774816760975159538180372090105486573778335998950914987159909756145213525174507361115992516851061441846585401483368166991251261491681595295047033029078105940961946982855869715287402727788e-1") }}, + {{ static_cast("1.70942859622804244762450665007236239034682512283325195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.45014151369056887470876393564367390354163944721221923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99874220008245006855542326558513156408919554643242887993818629193137080289456989925446796371679686209603602304321606023129900225876158421172053263787015124593801332165057745276555467837973732533352070833078756655605565367486807321355073518225701436176826535604183999704696382097767183866284922545237e-1") }}, + {{ static_cast("6.89165129121799887451649269110021123196929693222045898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.03300713262715859741547319572418928146362304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.04313106664538570098839747789552148131626561809170196746678563650616413426296764086879429552165570381706960290576103965119389999281879292911019435355504974691551612891938410889406352256775463548603589074490341705913775216055301816238813657180725380061984870607389371696477377291283392196645786369100e-3") }}, + {{ static_cast("4.27946433404347626492381095886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("6.70089369397394089659936167180376287433318793773651123046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007146201085226752984788738357625307865767014027631803309640949680577376696724418376175136252913773532105485594068985474036691750060444806287575074228772867146937453568465581121950409526897590340390497454647087617789150538474509489560078795836109491866150406233412810302502603589419003168433407796") }}, + {{ static_cast("5.40162932367991470775092643918924295576289296150207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.23362153160343446245406084926798939704895019531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06423742747299574139652654980590788059822860773454214351500321781043318590458743790589432652553137712034307825892416077869655718345307052092676953436188880309769835515354046500269913785918625489459139881331406660934866445646807527177908193314853725313276753369974838311556362819425625446719126859340e-4") }}, + {{ static_cast("6.98480482930233392835361883044242858886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.82423550256237437978967808049901577760465443134307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00020487356414235503163915728935712973913169358041240146118411664231468676920896629650395007895636986611826729763726166983962518312776000911959157822099221405201493001705233813919293314432879950393142137203274049451871519519207057550355386892818843802770417350657588091700213982000763521441126819299") }}, + {{ static_cast("1.01174486687951502972282469272613525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.80096038819214743220697982906131073832511901855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21386628363111930567875501391228231832773971221469956618940994372919354601446271218977478634940587702534597215097311823723977361204234536761437991482874205192547888855528921579052205936359371957155208181288324241439984156409711039174371275245144079425493549183603159162251977135775037801563222969321") }}, + {{ static_cast("4.58527642677075686350463001872412860393524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.20426803030317546711058795949611521791666746139526367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98276019906690498641979219227000354726256121309260540509550375256349346398739094196651394582546860191649946783658447448964727247382391275461932541094336719168645988397711787831199214881092736264632640564846015317413042211277375865471754751928875230345189863352333606975129830522964976988522205012182e-1") }}, + {{ static_cast("7.60517875978827806449089621310122311115264892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.47867011136062753706710282131098210811614990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.91022318181765750138709868330053023824369950588567785742389327678334961200987486582852651651749970246817747258718976307116965890616698349626417133054222982034680094324870404036435780314465221090580409266996951521555820905007542674615310907131989836681135988524628981589839950536317534105789412104573e-1") }}, + {{ static_cast("8.74441787592109604670184003216704127225966658443212509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.16721737539795736814107751655456013395451009273529052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99872128426369981492114383609632051952305521589536821086005990494116094292173923739983506376030713210025133335713606540746004193037337306885070775500980783374129579854971973151969528024543815880504327167057351706595072153954661171897742253459693134310482723707663819212838281958152922341896338434956e-1") }}, + {{ static_cast("1.91138738236028468236327171325683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41870493681337528357744304230436682701110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.61393719165089070084284302313399424679983675134163509852591590498735859530953368982681984829992497504960254661066913076235623948356021050016415986014420596315994017260378613566207333104954408470522228787617243604128057260092817202582188202107977088110567991555379686212833460754614025473450009263444") }}, + {{ static_cast("3.95935805094525858294218778610229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.66342798237554857082587389527361665386706590652465820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00080082312808327988582209522378397852005304579172107085124537382297137225033557828343923139785908077173538670582197264674005612125502043965115623737220659926592486850580770115661984729610019606048664824477525628872443957605574420631353398611478369946179434030057548832782863477926163435959118485879") }}, + {{ static_cast("9.52749482248151265129099130035683629103004932403564453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.36644237252481737243670067982748150825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.99043290744436080750367189311776962864514898582236218043546095145053426015403970275978470316955018068268507145854768132371105755976745328665490014149700831691054362640281890694866429566348288921720874015164835895723114083232661342953621394611916380955923119767515256749281015210664840084139488728470e-1") }}, + {{ static_cast("2.48422895630792811018892896068877007564879022538661956787109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.55993124989414910785967549600172787904739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.91195173359063670429359403048505978785219394151399979472770021116863735850753993687072273831783588580026886709426140199445066463954822741869299289627867228462101496659941594784834735871174181621098355725481647468654367330416914560339262972917390166297854884128515599346578674725441419457079115897184e-1") }}, + {{ static_cast("4.94911189808764902409166097640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.00486277593047912404244925710372626781463623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.45161540440045450223953783783894469144373503171768310299316311211396701039652476264548018632004490940551121650475174226555299061745541449779441170912616150358121670452871969103360706271231784736206842228875578338918267487091360709713844820843854370488212897734417544669039756642667411365232861750622") }}, + {{ static_cast("5.86830898821921187469285996485268697142601013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.15714500475533861589827466787028242833912372589111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98538706799650092346821769070662036641738082636479009372539733284347573229317564170016552698886694627816395005478215973507005929122925461962335439146679105934195547032542346569150966461707254588652749552262131982196536881226818665443124490222705261425197752741794319954946333545210933092733146260794e-1") }}, + {{ static_cast("7.83501026710203586844727396965026855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.38788040794881645245695267476548906415700912475585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03084303369653734759444079184018763110189145271757350290747789171120440011979438908956047437954061198621891331998729346005011749200857634828740000563446280260144290233886419978479827799434112209614567540357757105949708290107985650241181647155069956615108211465282807906696708079090952998142539773200") }}, + {{ static_cast("7.24040157384670202134202554589137434959411621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.21397503061749550967718391802918631583452224731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98962718742601158545306104847042012373529894592940838744141601234699871358047935296869274717524339141323620050266212255881930805755665793284647269071772742030623661802389270250239007055699061760303889999391509361560603832488400525248124730452423718749922363976939807153833465852271516354356322016570e-1") }}, + {{ static_cast("2.37737491856019333980043484189081937074661254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.16670398708927525177614370477385818958282470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.49589428217805567802447379970866851398217501608629580197067814528656191899243702632356211673360505654178344944705028006574948563210523891802606219873940153904076904718577079606890006710252221715434732369471615966209956056482424699085238332051063676105524207191799310422842401999054890360978090765282e-1") }}, + {{ static_cast("3.01647874000722708842658903449773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.92136460953186087863286957144737243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.67051217459346602496477010560417251705712700254048639078839264060325224717762633346441800378240849611262512392424682983226473649608304764571881449403455973384432668551726106109236708017847884189936294979084049530151497877322166267026808199785689058092334141134841250691148642129989881676444005953065e28") }}, + {{ static_cast("2.63540555826397102784364179228759894613176584243774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22820432867716089475607077474705874919891357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06662853666315384518454771688957273896640018166337060934230580664851581626370131366235045252515485872195142490483479220526746937459904335480861408290098145258297721984393013560504944686230699800648442282165588666276252945193146150539010418085408269547841393316042913883904363908615604194055289620194e-2") }}, + {{ static_cast("2.26046063075346914672536513535305857658386230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36270389219972226646504509517399128526449203491210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.49669691356986597021713215820093379236513850713669538194655152931335203737791678558428932820631859896635045077055245394317491407809178976243739664980597540207413635355482092381212167318467695663002155241642388129246468412919845420697165678187848016391630764936016535264450983179524692369001196616367e-1") }}, + {{ static_cast("7.44369864652441037833341397345066070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.92138014336919438207473831425886601209640502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.14010675669123183496921521116811427733135459824631474903189627969592690975861278168724266785431509343760131532834105760648359541103464859507378780843287835638142981311936553660415847409900494706845746029735940277531884780112929935900839635096070137371899495277565868989524061668633390669303733877713e-1") }}, + {{ static_cast("2.58707365843879599776045097314636223018169403076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.94714110472695892894989810883998870849609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.94285469588168562425042075510651649105332456874498432065780910860149873485515925490595348642217083245456881656394030092730262652761300876175697759058061470631341983801941103052127203347591729319027059625352617883993869442078699806792081819748879905962225386908139580991345038356748418452094703929970e-310") }}, + {{ static_cast("5.98084615325454649337189039215445518493652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.54141705573080567892238490479428492108127102255821228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000134883014846657688131845485191611848674206835683154280061306464539283951337684813473177431132125670490032207511582839375165363167348982592154407605611359695341748966890300250815981718309647127029989133813099179248600056821756358657145575917892530126627067999467459186401635829661375435200555943") }}, + {{ static_cast("6.95026071869872530406553323700791224837303161621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.31225239711935908609730105922608345281332731246948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99946829922765932774347186827261089119719545372876939189761602548364480617029835514052044796339343249676137993597737045638155557799285710458997819509839368231591299591459306098956962406996519241338464726435617191918273092870466980318418139849371272285377732672340181070589663937610591450209282798517e-1") }}, + {{ static_cast("2.24073444824900158689473528283997438848018646240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.72011372485644930879419844949040907522430643439292907714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978273147710365618565727465750018434266860028552780634511158239820481200127637360576082082285493761515451879661983436902590331857062933298024957408602175417434650700857480478630047039957552639826605254005583176460691229891227955796802817287827361621819443402008175782397464338976239485836367013797e-1") }}, + {{ static_cast("1.02696336152198410170133247021340139326639473438262939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.11791001950321867638993289517657103715464472770690917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98056858099165538580460452287541225753365554206313892868475688098072267264713973803329319240088967254425048329384938932204820454762680502689447633583472338302047491675207245782389326788006117820440333632657775030341985234164850042741621548603372080092391251779877542034296864156086357253603371919108e-1") }}, + {{ static_cast("8.67037052863078860909240574983414262533187866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.52133920341677693691129213959811750100925564765930175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99277952718489198651035604747543743540115676651768417733688848831717723612326298765655588890670608573536137096893609251918929861039853578444897886108139617036413401117695629638378951997111811960041138307910848973294872108144596558607179052633028242671568000242144929604511881481654385461936722413631e-1") }}, + {{ static_cast("2.52535597921406917976128170266747474670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.67545906951556844433071091771125793457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.98282264364143312494924261974141234695472294090992155155562018911995536275433125782292778674260525238398016330461123980463532873852775335243553615531641077025771609462191107211129184970987736565747180479720790198029098762244705019025351383419378700872375798060833692002857187730789356240125924455777e234") }}, + {{ static_cast("2.61640599122827916289679706096649169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.04737226836765842108434299007058143615722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25310610377006493866619672909110501466370730517133791833746014957247005356303121141646462034804208859942897670276612700251850886627624409691966399085604959689485003780186276442904234165384933316935452289326908453230024435075360037297385764282630607352032826861327915100978947458904222670931759368924e35") }}, + {{ static_cast("2.82002594439443032836578595379251055419445037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.28903360394438468768812944276191956305410712957382202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981126663120663978315445418195178347518855090095327320928958000002380082757914082726230053423120527749961157170801907113926659877545130473348116514066094356797962151622116993547396704816898570832090901788549840104993042307779674567777216024811187461718618588120530554820575895739988590245022632269e-1") }}, + {{ static_cast("1.05597237376428054744792461860924959182739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74456803510535429779793048510327935218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05450439582280470237419243848514333965208787934652393730167951372955494178606431812200728304139567804628971230701860498398849175230634941866518705534394558725303044357497118657164159909944927143807152603979711611331658711835035945317940163428557910521645089962892594811777021284923659424445609434015") }}, + {{ static_cast("1.92238907809509029789296619128435850143432617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08349612860076613971363479471676782850408926606178283691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99982133131096723846335477747571205458555360592772378989843831769539959961315480174186773210831188200236203659966289556452394505676789152783853641019895730138295352465651299769502538786481056285110475730395967855975688507419189456451422446526295567348482093213471867865722148473015661603656725132323e-1") }}, + {{ static_cast("1.04631933860085252672433853149414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e6"), static_cast("7.47628658058347578263536092890717554837465286254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.10918690854877106790971565776367526216180983995819057803660864422406143847654780992569076690586240873186597255294638451033694659817944978005382660886521706741399259776875547778479274738700590433170032223482808245749786294093246294856718197278358866518098957741521257199802713807166809120449267805013") }}, + {{ static_cast("6.36259548895734333359697210141803225269541144371032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.22809772788395861198296188376843929290771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.52598782338450286286135450458954573598472802663327374811636800203700927786701774385033841837545251692421774984587119423266677067201879737268514092791650544542213882071172025510515697098553107823303332247548034598510867132891098061561608401432719775239528846321974734634143406918807796517003534735158e-64") }}, + {{ static_cast("2.13062266921418196562697244811346308779320679605007171630859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.38534614031968601466360269114375114440917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.19098455118066498520013706754490677591984461696830181149035955535619874262474066374087254218809585126187088590005269981305550987677753928730521021427525334082765124171365549957770314171493849134109885501003714622689267145862269434956103582260650590467252136804225198053437675495933201621005291059680e-136") }}, + {{ static_cast("1.40290401591987802021321840584278106689453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.13722689335705595681247359607368707656860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.76476316747050528850692000246200519522360470716902181350858525854503943786512297020242024222896565430817144786078487939900580658865175044648134728561580288938753166434593435107710997858417174150763109875175878816362192204521588377137231081824131646740939989148534654273494711671253618986609286323224e2") }}, + {{ static_cast("4.37201757312766858376562595367431640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.50898368829070932406466454267501831054687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.50016375413563777673770541325000240347503109832508653488647336857427144256430628344920480322962866090482161278435394130795573385145704869750655237320185554045574687208211132875092396633526114578443250901360527371315672281676871350085960576744972765455104647558784495896122434499365424664074824652372e2556") }}, + {{ static_cast("2.82657718261440410630058739371861520339734852313995361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.01065835722450432997924357758634528181573841720819473266601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989414562934374733570123984537478193847375990023521202992404597564318809152441993727777418090556514104681985844118458823465596529403699968559686663737740106923387493303105200565503166558779713221587331443491180025140468746214432126679720477339697928392369627582889524402889778083449486287091857918e-1") }}, + {{ static_cast("1.82131588065436497009264016355700732674449682235717773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.66518199450072917899845492684107739478349685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.40207373373989750079079577094631199620167306803671706440022399491116271902378455342284164919251165911009699545436187010204381502830971843813249510091499154307328869929569251004649662529059388775244320275509563520973233815719214546857449027774185623555318990471004404713606927167122651605783870374832e-1") }}, + {{ static_cast("1.46755915364810964092612266540527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.89043697836551700675045140087604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.64484232464543513497888195163429809804134777698713994865506287396508104602871734408178720046618390944324170991778876210342419644694461221793882529660281950244593440074231456401876196827229747637594809904497759425267031152839358279700896103069795279548051852526590187125738047135851503597639320208298e407") }}, + {{ static_cast("8.30433287676949054002761840820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.52637571399967619800719376144115813076496124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03503345548731106338710812130725055986503423501253010837510324365889248445099107670056377581266593900575457325985155519568071726317821696776190852210129272438899726884098324950090040468317646989831449979292183766681690581501814228892321721246601040936202160676525600474705308542633568308584316650080") }}, + {{ static_cast("8.81076109807957895100116729736328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.33372790631923177073758779442869126796722412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72892191263152309368418398483858745615162148917317277888912958706672096823639413941816735201743610855503568372158123380568416223942437204395543055191166267974357638190306465483077702922759360128463612732981531386413914170095452050612671264384868877433570747466951378322325020744405691770060335633788") }}, + {{ static_cast("7.53729022560753492143703624606132507324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.44997674051331170439263495985926510911667719483375549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000626746844722828444925305995099577313805301524404103686494009081743532235207019307339151083010194102029079910572707461595043287395038108777455456317947638812268175715959797135803525856300281211049078122806988241700281453385528141559419083370029575853474851945010647429584718991721854559935746944") }}, + {{ static_cast("9.29196125311857485939981415867805480957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.87364075941672677400040569750672148074954748153686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00130310607123242618493657884019907082179077698498276221909900016213891825242765534255421206798520599892641330780794108614272121210817595736511473642012182311222406630247676600611837624670300497417793849558413334183751618128852678982366003027694097779362865347129226028454653385495003448455051752341") }}, + {{ static_cast("1.43727353532569850358413532376289367675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.29608176142756548188117449171841144561767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.54783993491495810650470280449947427623348347028981499281421336796280567779408506141109574684107695839213640033321254129078108321583824176685378348816016878194065833488610016432724082665467588150668096361892027109844713789484964974482948538692616206482165899790288506924374902752205806598101379280087e2") }}, + {{ static_cast("2.70759640224985531631318735890090465545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.30536731556413743149391848419327288866043090820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07547877767428083419096142604570911700485352561609679581466039671852713698452759329634869067401784752327384511745999840407965753203664746748858043080448574928987130431330974864221970333531951352649388383982665219131905566066113253186390249711325528920747650049981618690921655600270254173866304929129") }}, + {{ static_cast("4.86911459659213416298687016059432153269881382584571838378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.64415295518658677309531412902288138866424560546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.41012673791647055159490710611797984019709597197766274319967811180940457128047417078813260208344264234412901043623761003849931025905704896535929048868960146432780155662155674231586473433894529344683868489738341572805069281662400777414260520026876565570790884943500995948410148791343831009292038245400e-3") }}, + {{ static_cast("7.84854690434243218444265721700503490865230560302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.46294874434749200275973635143600404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.31540724563669307320322491667157973956200661651434919571593303846115863894103669513415833366999982869469042192760040827577397824232012793869428364179080549290195624467934132481201575233560543620306283174662613044511585064238810137330925608875093333350849757044686376810419383361338035393598016327803e-1") }}, + {{ static_cast("3.72120262782922945916652679443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.94908530795382262112980242818593978881835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.12206584334504219728846621264973553250302703946785171831645645721830894010675262018545815052840050758849380777393422282576480781495344500008748097426459462508969278927821357065182790433439566919608820582252667225317461885443234193297904549706413625058399088149505555110903375380342716569207812657836e18") }}, + {{ static_cast("2.37172835747338208930989900125041458522900938987731933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.40757764503378617060302957497697207145392894744873046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99465320336479719185464362393617871174305860472162937262848024567759736497677820188393809529906684006391677099787283285239332531375600773760223206100883246634220752238455329498878968166316454533321577818353913376078773928516840980584615525022113173652501922620733886925072518116022140332545581471584e-1") }}, + {{ static_cast("3.53605103337158652720972895622253417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.84582476913116806827019900083541870117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.83532969791885885135620378353794410619553188299174712267165316998085251325072529407513466403156971688912550231810700054288873685181499788137652636209514628912399831379317778239395084315052983947372535292000124065735878003968456173427606734312841500343489942261612441073694733682134245803236657004841e725") }}, + {{ static_cast("8.31048089824369333293314215937996891625516582280397415161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.15539351718839655713821912286221049726009368896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.43482075927723057531497663442495255886217925614713738709933378320005101165593393456330280592636199704470243210249220699112677280162135519833702952111992891673206729843009842099688221317242192847449764385413153153282253151503752131156497992327652425308884952829049613144312048128169217759285595530627e-1") }}, + {{ static_cast("1.14666020001788820081856101751327514648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.34127651548888934485148638486862182617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.74479451169065114507177142090694649425184490446641781570460948781576584635840991601731927655494758023459925015377386019778946251375096661299820054396659345784163916943122911769409035509491324432205386045800229510005976694475685559497072577311014446199955236237444975977941360792089045512126998703937e1022") }}, + {{ static_cast("1.59284463946466757988673634827136993408203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.37368596141571408519865826747263781726360321044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12790541394790276732931574594592716168427963234746835691403175587826006982488095536822241070760245600803352183137207993347315747261870544496930500337717553335079860285134922718636682581363247953489931749833309595523465412068635376914524529775388476847978990731073661981262435307448746968442209991247") }}, + {{ static_cast("1.01037463548088457532259099025395698845386505126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.83350084750183555115654598921537399291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.46827959515471898774763024079995706113716782750728469166998382738205474672874505408339070961454993286360763402251395607969974201963555866889613983970569781895238062738547839409015372756811222082668539050479266568911339662981230077013588037391296361362960017408451588351832195207411208108858157498757e-115") }}, + {{ static_cast("1.66695565004290529032004997134208679199218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.71804015666434395370743004605174064636230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16219309185108283690353246115834277672387666007297244563945515894098174972467389980428784832971321037184548414733298149740082669071577857913503517445753714679820984984835536300423998074680014379718142053804437180632038614386541542054507333387434066222641647278889877313111291185910035634611028423893e1") }}, + {{ static_cast("1.28464602296116354409605264663696289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.32457638429370376798033248633146286010742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.24945391385140670639469572823424256394544549042741674612450176003078448450232834405677926416541827735839125915448795224664876170676948629996836691342006517593947756961464160491430339434651171508096026536520981556090838358776179831242252299597098299062165399439487062435923683313278394249407345431587e95") }}, + {{ static_cast("1.04339649065651030425752598951305571972625330090522766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.57348570830582303869960014708340167999267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.13059686908080605126564483508274490473647130063580548021629986277623406548383789633827569651948273474979014022501027829260141472868965231700274633764760142846471542740886183449424861759202613481741450387488820213753956013540876031520080117102079251759436887925675362188501650887210343405664270909838e-79") }}, + {{ static_cast("5.98527292754746476077798433834686875343322753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.92842618905841398438405498438896756852045655250549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99969570850103897852254602475534171540024098089888531491644885537022647868647455296214377097624078476427734613966180360314627711193584708132475074727707481960045949327090840155765239976195485323033627665295521041657350135494380406033384926325020170964497589858453537791112107981125863527921983931294e-1") }}, + {{ static_cast("1.20170821629471988138682103652854493702761828899383544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.83573171858579975435077358270063996315002441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.28605001646404799122123246583375017811401439409264242217956456924187147921073178601773640157007541107990624712528914809901097933653148466740296742087373566926721281981068789281547799916665066119657434350735735616423796448248252402292977828214490771898387468010213868209841336736006316556313401379158e-10") }}, + {{ static_cast("1.79027858130276217707432806491851806640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.03754584982387711988849332556128501892089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.63044664995037750836987820374386953646551425036186940515842751543311970070428773125366390621088048509415536569966741084563251083225715464442813762547476523458275835451374563942157742199280762833831415410370539590912680755089996665637460577287883121257390441169299493248423283996313182295602073608455e33") }}, + {{ static_cast("7.71075177335318884264125927074928767979145050048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.64182056353383813984692096710205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.43972399050369154988520798910605088410360743083682368257478281007222478749780386934407011016164443028717189065642983648339942330570417348717676304330188520673656075843370307967688074309785894752170432378373350782687762813282030251151752809306457995236444306078641839344649086096494148698382826630683e-559") }}, + {{ static_cast("1.22585961723861284554004669189453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.01372669446815572924860959780346547631779685616493225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011878102928302779143036441761880708224532433147368168056931216968198406137164127175122694955536795144107173837990207593653143943257391177552069467355860858316175819319731322452047752960070552385154812027281420138955970684262089648831370958477699568344849874652831370849460274952408206982772881433") }}, + {{ static_cast("5.82595149644963838930777910718461498618125915527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.85058768638723995477498446282638155935273971408605575561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998621052671820010209082288722125377109323080442152434584440919377662337625060557131747020218413297035621822998191924210038600199853200536989949496907248450515440309961142400248274163420688419892365590086355187405743025995286488853302886303794885670413483577122364857720736276931131470386157699818e-1") }}, + {{ static_cast("9.01125395544224438992841896833851933479309082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.21806070291085433154876227490603923797607421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.38368157061396129371090614663532617206257134398324144105974743560347038187851945959992361814602150755480311739774866352614225040566667708793196627370259194113771020229764238603211377558658426209396490633521450588911944454397547213176293597692411663128824894095155297793732492904564527595779976674988e-1") }}, + {{ static_cast("4.40965439472245090968272052123211324214935302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.02453990431700336927178796031512320041656494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.19534075097294910062427312364961024864527797483767863624171403928319226867976521096128692940847528103007338680691678979870596291215052686966371603169090630798213135736273205172476019108353742027081191692977102801637543740660392501627319952653856947188066651067307484842658131091249553304134437847486e-1") }}, + {{ static_cast("1.93717944386320728433759086328791454434394836425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.08574263216941169218898721737787127494812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.56194064144518235667018224449588679976819296337783156090494451036523029483949448332763991177580492553296509263765798810431727918219796862387760870580577134565230417714219352767669331762365217747400655499790736729474440290141888015988952364748907315410294417222286566628219298383793200309754712308589e-1") }}, + {{ static_cast("3.66479892681643832474946975708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.71145011595037033202970633283257484436035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.92304236247268349096312573893392045307545699411902317264880124837981164329935084560551082257778103184407170649203234984204658334295355705120603551098245781624244872037069412927213696722873101986921044921101077821551960590243440000669839151585453297946266135519928259442687204452169702512081165606273e19") }}, + {{ static_cast("1.32708985351551091298460960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.56531833894015816668887630669360078172758221626281738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00077473925602097877583679698815018000110220247989590351745049914772258652489667683543311902850183669682134777670514222872443151397469262756195899010288195180434965887160900063533882057343026426147190468334739066751949659071732450855977621834587152702675615140712006936143437739732339126497413250346") }}, + {{ static_cast("3.52775045264896220942318905144929885864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.20207441294177685975341773882973939180374145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.19164668712694362712251058826210564533792000244902438405631163228898011483361552530774835675890492313952004188178746361986328169935055931569379688204574777223286241370824460769287348812931304022631646073013552253933784290828875633916987679684918077103703055564642008994164871305721849760321403415697") }}, + {{ static_cast("5.26721150567696895450353622436523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.02594021105445992042559666401757567655295133590698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00252610964243996116042029581448234570507107619387893463104238190901401098561255564385433004137657583567661490188312636640964083001255112695679226528406143723662756570159800308402030438165398677929717369572388554610405821138849352686065896479954227526563362385890018562652478441542017212666618852941") }}, + {{ static_cast("2.85382232656423795447153679560869932174682617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.21622084331017621394721572869457304477691650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.13603045090195516704596534175318401579207918841598587146324536013529784552205952203801294482696233870522877138037982641276177183524409958004888324787356863626406890600708780844863240402886258989044381114275612277702992295412653204859730899096318397139691123133990243168861782693287239971524166152533") }}, + {{ static_cast("3.93381694633284512141457867073768284171819686889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02640519319720624480396509170532226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.39863675434390989723351064011214037513398262547140577736762821607782111942948883337093856726075063500818067573716198405459606323946322650536233861891286348318106161892821504014313663700097828008365436512713907896457061009150442887680100088324705807016079909429412724343222986472982422270499720872159e-3") }}, + {{ static_cast("1.90723973215819387405645102262496948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.12980954046070617650260325959266083373222500085830688476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003874831722429751496737922917004435479965257235816453591525868492670813319281541168275796018004391940278219820598993631669244673032352035813333397881915928790424205764915135090114218540888704442481908590391442502493189810976009897523082978954781479402200004590037271385433077485827559023806478611") }}, + {{ static_cast("2.08352376339207012279075570404529571533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.77328372265651944869168515905855088021780829876661300659179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000308249415661310193935943862153702303875909245307529450912006821815453371252563642757366042171762708256721399309832054533722706035892679765533583739735266608823632317266441068592608135365434098808509810551746075126687287986572543900322800829577692516676548344312574211742425657072976921014511642") }}, + {{ static_cast("9.71724513689399464055895805358886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.53600001609863927917037917936227131576742976903915405273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00014104020491665960642725547509974756116986496973147973056122194845971531406444606607453003866992922578566310810305178136382912507500272971783788119308610688740112803511843108270710764262658648334376396166426766278251188688321297859103006142315969456950763638190401996565523343208463418705191958244") }}, + {{ static_cast("1.39802629394119207304099383737394646232132799923419952392578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.51936644048749802671238740003900602459907531738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("6.22241870897130620142553713444278896319414844301127628403550478555392596780554049192378201563747768162180873879073883732945738916895322915439456198565943172406197196260279982663959045275534018807122490359500452521705604768928620538202140216274727339329295923594705918674314862791990908520063913560002e-1") }}, + {{ static_cast("1.82765007732204644297357987170471460558474063873291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.84318950269757237947487737983465194702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.44507161334831975914976330209249902713146345349963201960249788428960802366282255229864854849664361912073985037641790912699757539023105844864929631975643935921225809946412808629805438733741027621604921419911409131275740749522537202228860884159853851509071131465735369871648912668689687943767400944117e-133") }}, + {{ static_cast("2.49872242289261521364096552133560180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.70475708243581758338791587448213249444961547851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16348084392128872602170011561254935010976642009637548196335495165701186585536416597718806964461847864028617635977334329848073696152520245124091137376311572172062522206250814543168673719325221226847866492589752767830775399781911226358430095279351842770613889036173222279808875420192058143269430231674") }}, + {{ static_cast("9.73728711278181032710149489517448273545596748590469360351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.49131637906343872401748740230686962604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.07165047632947683093273589058329846367047057355046748020009102510780065766705586588667687646255828190502946698129852184038457736930348397388946238687402139213354445146888181529201139114650892414118512134805367250310852437034078342906915160983796227481872425495472151960083249503055095175373933146792e-1") }}, + {{ static_cast("4.41558345670632190066440259101909759920090436935424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.02580267030248754346610784438098562532104551792144775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99968900351231822950433739312428495072856038776486153703336951900488129027691896751286362525813536862927182360156159008954621569331770038862723809677808006540779343891491372231781933232571078612298233285052166498857617406809139173150092488738015228536389093793575323664246229233166651636689627818170e-1") }}, + {{ static_cast("1.69439965482008625397014611735357902944087982177734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.70724294373208412833875513570092152804136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.82874963902734961145255850699575978876746826231267390332055952052622176060893943203741788304684214781121351119738947541263489494899175563981247061980860747331222509426652450764505228926170316851952179492921780437496906593243321687842665376169899786546461700589626075813241454757704572169462564574837e-1") }}, + {{ static_cast("1.03376346181700355373322963714599609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.28989017209520627493812838793019182048738002777099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01199452382152846374481951076631164582584661608322894290555407864227990207508639820617740715279797178581146570337346215682655494757376897027306747771093102874076785395996716253897920655609144243672317898938847395985100637001354712944101351050038536687079382428227717980685264632621156939159222226580") }}, + {{ static_cast("3.11283305234331397759461879104492254555225372314453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.01353477046427009958251552745878143468871712684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986074588519454560640521673442935641990554362956049271045530697088039943872329332770296441408515271037076808977915428133116228156704302455915102356256867263136007644093137679299480159178566422686424390921886424606676712277018147908640199369062110318937373042728100659267805929813035245614797996696e-1") }}, + {{ static_cast("5.28149186098080924978148686932399868965148925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.16657975145258205884601920843124389648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.28853014056156731737794697397317103994217559431541111572375406126519183769444357872853226505354592130101907012445487770770781129901235873025553849331106253792412404560306141938477978026852566898693906386886543485615404988699045603447639500571979436388663669239796393481965967462640474331680310932353e-255") }}, + {{ static_cast("2.22250599362956213767006374837365001440048217773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.64204894849468473694287240505218505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.32843078440077439221637641999286892206805235377727400014747144482178933184733036820827184969102097810334387052048590277206436733653974464975608297721942370810634826788083279979408768576378602999295622590369226553818034587114239802440932660296228167167346743576531361276267309223102513376997022773121e-304") }}, + {{ static_cast("2.64401597631773445755243301391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.48515468216955248692556779133155941963195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.22595558957063988125039996231413212457799685089809815878697787456948885300739760428233740293311835672030485009491199517382307607053064251483492857230753137256332086797523013500249415836024187602707789116720162609479623122987122977570646771495383250532455162474303561808394969890452286012410188771582e1") }}, + {{ static_cast("1.09582116879168154355284059420228004455566406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.12062729806059380166516348253935575485229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.40731230607113577867418131365007953849097556433032366687124266265609534681297061468250410931194577479128955229993084028648709681104213544161468193428670594705798621530529153971465865443890890717329532471903443507290510241292018220973611927868861647858691705199882686680328023542042496509604517393163") }}, + {{ static_cast("2.87650329232355375097540672868490219116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29636994307592203767853789031505584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.22908880787878338117870181426636174855444573322349359087228723914632875946311491878034980145023441888073390972797385266938998183475968716718276000295270333868881283934630328911650991709812223171518435502540229986453603655260898220094106548795285001784222894626512051690586979041086530161063766088286e48") }}, + {{ static_cast("5.43192335581155216501364479952940200746525079011917114257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.05490815336499605694119130472330425618565641343593597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991447218133598413920881391105179265568552579320617946001886143605253717825160221002770761833078341617996929941439664383856515269642825892255570319730959451798678974258583863414985420861854967974576953145352608585972242996479479728931155364675877878808323939895254383920003458645959690646207544957e-1") }}, + {{ static_cast("4.24450620737656849484897847446518426295369863510131835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.42617657776718897988388334852061234414577484130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.28295177297287815001307142572162153750668927480049029937221930255174310738192949066940496577252702629998657734311395912708887847618250337367575924375521236807234588840327753338387239581722861162855798729933237542178055913633273793008757291901196363208416962469352000552707123078294608807586649015685e-1") }}, + {{ static_cast("1.30733273631510917012210626353407860733568668365478515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.28858724063975630660591753517962843034183606505393981933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99964885633207072968580726334787422174518544602461721143383625224899368056665861649907581709049484723249000855383620986446956783244965088674964206494776757278305799759524067667215395257158003498553463221431113016348494389058271382782227321845047125985119505752219731349818937084514014330356212827292e-1") }}, + {{ static_cast("5.05693319148356598344284940083070978289470076560974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.71295988486159203589842547899024793878197669982910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.63937121881680868303835544307084885674388908256423717510775350630463810161245157254316013064889945722190309457613724784742119883122943867724213022530021363225255978426044946346577578461808416905152263622045415849140604671011655772958990313726815312540544848648362428160986497782665450731113127323529e-1") }}, + {{ static_cast("4.84423969203509041108191013336181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.98413458911828048669701018980049411766231060028076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00430738669558002031403659131744896728312485313631409231096866927631637993851247415735380222493024677897434245013356617271278547792035688620287749522586547267897264556329014249359221662180556496497208175354676304526200770138492165863545577626683932270268515447259703077574615595169323328662157853185") }}, + {{ static_cast("3.70784803656541983585270827461499720811843872070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.52501708992864104530440272355917841196060180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.33573197351168666887962631201029384882638323647836131662987813863879776215233605661322116050262224430353678691583537529582375506359810080440891529163886160078411813398386404062767305381544566179454141780145518165423921596307439563187082576279320332050551415851387221311994490392675793780232895364275e-1") }}, + {{ static_cast("9.71655514772415699553675949573516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59166384187756904111665789969265460968017578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35377653844658353569031679679735299370922232948810544763027212743048187579990164187893014793934410534408779634667801500692064187926463087757507629287841868368096408503740782370080191376158895711024144836742418575636184986247750729343991462010937031402061673932392367262371858670977341473615463130359e1") }}, + {{ static_cast("2.19264585936548201061668805778026580810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.96729316179001942387419288316152687912108376622200012207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003755636032301823537943813016356575902489314188145066916221494580392625081472816947024292161874513732270899683702071327371665141574567958235034154797657204764921080200596842458370044167411926333595258330617813605034939486089552138840272033589961004832483480269032835319807553392086565465392533307") }}, + {{ static_cast("3.07913249304984926180139837015303783118724822998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.05463804011641570923529798164963722229003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.01796919571840276681288861157787148204747502682382876961304668410493347723226232435621763407251840958497596600197906374696494268910490419389807332560043086656936398322936521311486726743408171670806339766715147358441693728848925652781609216889389399280179459317545232154188799226490332505068768929180e-13") }}, + {{ static_cast("2.72793625008602248271927237510681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.45107876494454290927649253717390820384025573730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21356364414706225993709314217781803611734556534595777181951409142649823132949473277169982486320740015805393683502787636048469072138860871755431959907851351864995912275227191432009279405103766593019141570051245200073079914866268809278471723253071227068595740039873872137154853304817823898235004618070") }}, + {{ static_cast("7.23608622250063859837609925307333469390869140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.31713845716947162145515903830528259277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.20546015073919711264373148066122758661068546232444031541084969085534241548251886930568813690809866385000095984750691172127616802373754602142656508934912781801862005537086317665378844206989588374435568687107987862008034665185792976330120721552229886514045101504253350965371418298181204870517230728955e80") }}, + {{ static_cast("2.57072303536429899395443499088287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.69790274993758974475532852466130862012505531311035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02140974620888944930305959435799702728843289682449376214925750857783066006891649041158724227299321084257799199351924992147805951706584524451302681812312203333848599297059927350897068391576429287666840858314350106940048605718179391844174140189607359928083054157216235380992076831905704302805940691484") }}, + {{ static_cast("6.27071378772734664380550384521484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.77213705199215154541952932376602802833076566457748413085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00013045496457016358902387902369248820481792505684604793782357003458740283012026953971512527832247937686018956926918760579827820618149654974789601261789353438501933209142889274324701479760186259188286221595702693452369288516143444427753506877231697874469255361407264955531595418134590240336559943863") }}, + {{ static_cast("1.22109376852135853575020973948994651436805725097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.11543635047828820815521422282756702770711854100227355957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995551589729160336804918676630911396340574056049766519068518427735361038006808700598379055737548489964622176597729664945550621782605173209704608243388212974829930345797712949588621847644770093271093043600103623962707878170666514346008821208975619634087411931268385031450753049330763535153583731711e-1") }}, + {{ static_cast("1.52900990354010689331598626949926256202161312103271484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.07910792856703210418345406651496887207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09437152552687759915144210042422837004776738858769798785362828201158918075365450163702134968526881164477730298716543350719085306748967317190021537573795780001155496528795641888775374745803795044275135632851107711558035622505495812638847592959079891240357223230602055612544312975892640303394964825816e-1149") }}, + {{ static_cast("3.33574880350019498109759297221899032592773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.22409910922928020227118395268917083740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.53927322890034742368017335227292720005783821228941858003370629012694382557138392281089806659775813675293365836774015539525201899124038456550795641920581579865504101847353382339574548922971435920120403286201070202878099356466592276232925556211910029587973272230882852354333961947656943741233580547242e33") }}, + {{ static_cast("2.93886093222884170472752884961664676666259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.83152139210962529736886894582426066335756331682205200195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99965326837122789351065801513643019379691746234431978717545032882563543159129029000520238088911519893688798595680083260598269929340163335960195938697476035130411906261845669886681524297055544969116053569875568029319976030656002722062158836225698022385486930605555120535915405105091329811282147529892e-1") }}, + {{ static_cast("1.05363900341240332636516541242599487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.51733416318811920042719521006802096962928771972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36944656525417845173858897538026176879580880507614615066496128471220543538723767528991906038383446820702565624708556443997649629495841259671527437077527127938789704415913380536996498286764720566639200198900869760387706475703380674649201567096875423075710829719565752777057995176317511826228555593581") }}, + {{ static_cast("7.04420993592731428016920358636809851304860785603523254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.83514384888353143665540301299188286066055297851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.42999851704960956730922360017793140547106959683768718211070193339741510527923658661871542385815054985958418322575081567325471819065963185600217971978825670497003073742499873659741487280818814513977323524960437583297927902838999554519027556228317521167236540123085211060151247184818776639943050911394e-2") }}, + {{ static_cast("1.36453344822830520570278167724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.64161706602405751964646185570018133148550987243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04399795038635921897857958256316651977445152567453727222518284598769789391999595233661749274120961391885225992798836625746470159354169324537076101684572935560321844745400772917299981122731280255675880379891143456808614768985468915540339803333726839718219814716863124296189939533443325484535601906033") }}, + {{ static_cast("2.96565824250737205147743225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.51611044873741196425953603466041386127471923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47522068392867838732450708572135930567101005550555468267204809080882851453167258980507378379243415338266777301093835073449659828508711197010120745211201439735694186362327003324753635700543968787946652069972776477402704033680932298818937199049452926851734709666219333409709557278942834445272506685923") }}, + {{ static_cast("3.49571885007329983636736869812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.05030442875070617603228129155468195676803588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00424637003637001346519445137047903985527298734444205998841513031143713650570988838061609722582515075163633719319500702266902153041674931227041528924269656845803454259997891649918404783522081199789884938037449889035577760958358376931686006190221056227385652828889051574541455553647177469994824093880") }}, + {{ static_cast("3.48704350707848789170384407043457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.94470451369696548105103772741131251677870750427246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00348622623956426654419790365515385008204532308719120294458056691444071691627567637464093877906643804041743573926720499607391861016395825332249134843376717727039444569339034648222083969616342813466476442089528251404075917497087087133158228565604726619218594367232783173627524996497743616209681950686") }}, + {{ static_cast("1.56866354052483725212141507654450833797454833984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.92382444394148101329822253546808497048914432525634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99458548775941655985641049562781270043468152203580071617312952591624765716886645437516907451083025631663787001723138256606416990037410952933773901687094742927210507959414283830075225958048767485241813607677989510714884949211624158456814965576504829085206941026015695802504061055800475236320588403791e-1") }}, + {{ static_cast("3.02555496695998127343329997529508545994758605957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.43476200926107111399687710218131542205810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.07162439112148019358772224877510168973399161717373536875684406796915754460308189843582561832996734392043166689610197386058626738901780367190433337506557349349095623450517180395264699151519926104197461968535179024894054340573408793813826035189319052898390671701445304365679647915192850527101155372317e-12") }}, + {{ static_cast("1.13301057369715999811887741088867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.63391498739915612750661644270167016657069325447082519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00152645922689671305334533143447522531808487470636607472600090062282095427316474560067944838274073843864628772883486893974636361201579261003896147984190781801313303984627253458134496161410984325183430174864002871499528387099093919980953756534711057395376377803880481128200568335684903772454493560544") }}, + {{ static_cast("2.00289080215499270707368850708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.63919332962040243728552013635635375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.92699766759603617897105296135509926340232009672802063778499835631207758035200425882438232730073541633716557508264570905405926283429555595877466543065569320408150504538307810614249593452939955155496934950121411097262064539453295031460705244148452908856502571794692573823194011760644101511653087442625e3716") }}, + {{ static_cast("1.32507839540064445080225219442127126967534422874450683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.51887862883488423904054798185825347900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.03647722584318600030967144335207527953463651392633257231597431308252840118498779108498324584815641015064709374407448575779770810144009458027431983385495055750280990347720737478088901276233575808268895728220588756650828610378844764861577519796740508015409537773234457412772265295624580311112182954835e-589") }}, + {{ static_cast("3.57603431414909023189352410554420202970504760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.25925527701659852259155614184749083506176248192787170410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99982482017295343923291140868824543861889706024267738325920940955163642168596277387382324596268313941030962899361898533933991225186157467591500415565798572470081783136017764613428509329263882432996891459823007909353566621634663513526224023265569627278594547455316883257611223218894909706813593928661e-1") }}, + {{ static_cast("6.37895215316995745524764060974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.33606864421000417781498770253278962627518922090530395507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011705660623425091805720617137318115223118739797033368829524572193511821979599497313069101487866374165387923697805554918674050522785359139471078208862147954503878603840716656103170817064574728416607854591674468869938491395161398773239010400175784333016262331344116781579064223044329496394945074676") }}, + {{ static_cast("7.38104343240080229548993884236551821231842041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.78526096140715813593603800146780713475891388952732086181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992740925564330652806516420746938988010148239633275154076421571630454719695668630175026322867662102076692387029189869547293172340508820534949790931051258505036554857756821592275590340005422029182367955076901146714768419205676755504470790282646601620852828276821380880075367804416790635127471984294e-1") }}, + {{ static_cast("2.24606666462972934823483228683471679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.56224853001515953110356349498033523559570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.01973918494886267810001894567464669163247766970377570638787946610322435627850446066260492108701967988500602281478606685233882133420407449502588207373547970434356681888963673609480451591224779378429762251379481389292664486026843607177275521955621777327928762357765933587555111806380884809909558908126e155") }}, + {{ static_cast("9.00800182710125019180935623808181844651699066162109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.64432725765355242097953691882139537483453750610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93259995118943779913113450886803213157300236441759177808360979990670369813799397673229074691051859756881735508284831070803950318509897851789286938821324800564473083981421925321740139076048924264684734691750703913517330543410997193207195299362629750503027996358069377923999788650279477370768077765657e-1") }}, + {{ static_cast("9.41820034138939809054136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.77419300288664260104552761188045906237675808370113372802734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000890381075384949081595209139696411199492416870417459364082687864113657489926105641478106668362778068330268736600393352152923274282322515415108939987073582719187381060734722668227714154297709452559911296248629890116220184188866083605360898785001127921221360852853375996265543887873427220880943937") }}, + {{ static_cast("3.73692731999517979007974233240929606836289167404174804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.54122149350758519403825630433857440948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.92632813942166735469252865298175146289395053013193471532530902730842579927583105349449489218906918310069151271847219223504300355763614013961247019308729802033635205970100220700085021558381217246935232153985446384879850169504304149149649141113162707552300166988589633450196697040655835196191118606631e-25") }}, + {{ static_cast("1.36207381223418886456721921263124386314302682876586914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.62468618182947011518990620970726013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.23349312978912488484797519539255018773821880984944037182332190114599517402131412348320914129812507474815113624208263309735483442308554370722059051755362465566371079854655405434396337539491832247301779055162543337811300162664812836135792078898777055591459214033387458633919871456241380657515870584905e-1015") }}, + {{ static_cast("4.99439352691324893385171890258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.82669140887688854490988887846469879150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25800762575108176129137940894321369236803059535403474287787709049193999989553876351149791249607106743078893765328229169808063556877194151113548299740103775991789375636892691914854010648529483996498522632062568652379746122433944483375027665116468292026500341138320088041194003298397510386237462266236e179") }}, + {{ static_cast("6.48539296127664783853106200695037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.19081769830710604285428644288913346827030181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763841928646063179945311430619776672100366204545937731495139936077193534063748395270846081233643612207997993464082794803985613863394615181696471224069637239381759785944556677466232970035407360811317566511537057177507901702757204703329800142152099723806486139061978862458791045685416916469263617024") }}, + {{ static_cast("1.26185358741126574244617586373351514339447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.18707874563769861381290482427175447810441255569458007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97208954505633083962348848418154736485944843062550245347612203304547965531131555025237286475690843458460809325029245321285039436520603179307117618768371875438665250167675789128497710216048233584274468422162333906486838232593986287174975031846178589748114260487176217087771250070897293526267935699686e-1") }}, + {{ static_cast("4.35488942342848749831318855285644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.98678835531215099763358011841773986816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.28936120581079817550967747499324146341809782859497306106568788729215792440868081012592482836115918565108733027645928062811796100015424546044055914594061783213133483941275372186699846142681689537346156745852091720729474664315028859269079769914368203114147150204153490030106741528606576208240181832379e2313") }}, + {{ static_cast("9.52079140369027854262640175875276327133178710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08107909706786978198955750940513098612427711486816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99946912731466247972527890006754510895764819973853843000662583785640845446566388520861934833991540886888853432324685563515222422612660717906957938307798158191679485565611171204322088502967506340693425660800080176478497228519680488062210430869030836704176100634086409155754383655120084467598988079204e-1") }}, + {{ static_cast("1.04090684013030454480031039565801620483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.93673921485533583108917810022830963134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.11210338662691592819619664979726597449100163292683513479170961681889868927958630114518483290408310841588879531996056535646660865328863109763975044243074863201932805945130071457158971557983161341534770079019284360491414192422030250649176833692020314068650401152520803465262499102820988511235853988648e197") }}, + {{ static_cast("1.97149801027129978336915883119218051433563232421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.08739590531112617632913952547824010252952575683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.91773157361409781701715493663763866515090466561690289420891165770114164193580683686846646130438934752909209919079027125210567061374829822112866779201464446464651026659338435230202216580437945262368984290532688736997482187636274012593325315635831427955296981578931251003363149110123293975764983649974e-1") }}, + {{ static_cast("2.79971511541740710526937618851661682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.78721875202228321077857486898210481740534305572509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00326623969490901566461359485954800182836515927200276988639325398663724684484176518830065683294723102506600723636309590040090118084917994679575687454329398419185701984750026134555302778342008308134679599723649132979721129657717437355628051914400727321111879908949789141417261266151891576137055521720") }}, + {{ static_cast("6.47180277522192426431502099148929119110107421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54396046637904049703138298355042934417724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.11393159288848940315388484390073955173736785149894558116032886653088516351969818186256818732041463123159800744120590173108691581334056179094211775690837141959813271450679799058611736101514220405786918675156348944553549256908731766892776136986705072991002327432436231317606705791658862062772822668961e-5") }}, + {{ static_cast("4.68478493824730685446411371231079101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("8.08503458490309867556788958609104156494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.97762155395492793734284548790084346203097684458052431296538227291993735975496781864258983550151454075639982388971649044469779839674940147551147838593024539580668837295332526092577626791361518961708496544368414553255175123291725694241746786254191457634438577633532650001615818789185478534006606741407e296") }}, + {{ static_cast("1.54391459551929816074178347662382293492555618286132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.30291502045438312151759419066365808248519897460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61942064374907006758472323953419672912600288860094391695046538452658427001421356899386802781741233841276963853691331000772213773371503948038327239870459585412114416103967368390201886001946927622637207918880459451317082626408706757400699845882572764664471363683650469561537447695573432201521718527705e-1") }}, + {{ static_cast("6.48003875925739691865601344034075736999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.26121082452632900412770045051047418382950127124786376953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00006094496769763278820872383817879036100529479018908630432836412716347076273911182394224909321200839758060396148281450949863621182268008379068612869939290370399199699187329868380547441347229000962054100848350577521278040241049817698210922858722233509600098748764436396006044192563867258556456726002") }}, + {{ static_cast("1.02255146268133501052943756803870201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.89932691098755263015007699323177803307771682739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00013156917767091552599892235129254853484398955770015153844565825349128084659104946293310766324345122756751921898192510410177121820174080396618577123202206891707775599129806431636068338328182197155856712217515198962725685962829886150997851437588418591804207516238583892908865355284748545102405714042") }}, + {{ static_cast("2.81888129121324254811042919754981994628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.07352602363188209810829221169115044176578521728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02324693289074461806065314601130588099455748535483252525100029761881094483032981058215632709470546862166291555062468221229877852679809354657976457141823806639541535849041446001105725715917762334478759524935613974359759936992996718201195710259035985781666122257084622777055529931477121573215140197696") }}, + {{ static_cast("2.07185404527926539820087414867089137260336428880691528320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.35292300705978618680092040449380874633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.48850440195174823298359540121818302112603372945421421598869878434979555804675505735326375593302973038814914197710751833892726619856756218734694899102028024355384042325664532283875944124268902285546831042825514027899847395159917919088321233227951525026080119430650746383889735094027434636578283016912e-26") }}, + {{ static_cast("4.31935286049695476781606906513388821622356772422790527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.67446027602891164636454701675205569699755869805812835693359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99973122517169758868298611393816315674468708382437784046013092517874934197350186005397961789565235843871109955511656116413964407693637441952651815512224774438246717669200447114406421198392169132912944363201879586414171509537947822165122722681222879324770937027844102716000158168894762456660415032672e-1") }}, + {{ static_cast("5.60728659565255868472196526530737514804059173911809921264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.38030853130188620203101790284705430167377926409244537353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99990816207746297627000228090032149940299388165914304992280548917955938225443662692605137525666097388080408339273626056667955459490552137971306327684500228508064672496432612203803093818358636762048072433804065084080756285538210846111127149390742779965190790248566867146590543170273767758612958658971e-1") }}, + {{ static_cast("4.94365872790929563630746290670003872946836054325103759765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("6.08107286586160853403271175920963287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.41889634080305711655291544430541860422410170311666966191109605478799772032330347327796646352426019590688459329571978188218768772574725991603534645626444629132445446486278236532522655245444099755490849273965885852698636839519891473821647868673766453693048753250768728056307822453273785810806442880557e-262") }}, + {{ static_cast("4.57863041241061873733997344970703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27996139284958445614392985589802265167236328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.85252911535679891073378835901479886089967576299789401385670015780551662533990060451545346245206661914640102653229509656129118798311517873586006356564037704026911300448200277564257378774264510533411693099418541902845247573044373703549276907520323049567611007543654341177174512295005876331502328496351e72") }}, + {{ static_cast("2.08423524510303792567356140352785587310791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.35070210371325316600632504560053348541259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.69650994818884808551478851790421398330849110943521821889862054443832715742450095948994740658527477301306542925058870703929885411081233767845292798598894899925369153906803097693018622562446710881324699679389099964263723003154543262693904642747226514772235244787350437914151428906711221635213885798789") }}, + {{ static_cast("7.03507355339941797822689295571763068437576293945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.66736311094788106856867671012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.68909935340978860422757035820741960584342288164122209394216788923406587897458745269054408633969378408300698489680800368145152233150125878615072546588959342193206959268161227822392820692595901101440058139059566058188384350410226233241151749648406111214064140648607944967440645591239738930953785109368e-1000") }}, + {{ static_cast("4.44777561798017704859375953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.37314005329937316446375916711986064910888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.12314549862845492717877595964768115546325186339715764453604920761210996544623734651949041265076846799054130789000520895961692269440989421981634150513113011053879079524507516981642085862682964932699084859566571367826867471772759871670601934760070910316789800074922999274803369631048113774053097073929e20") }}, + {{ static_cast("4.78949184649386006640270352363586425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.79183351174304107189527712762355804443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.79637132177375382162263956935980813855595791264327736518378404210637984016731507340572257630052502643907564502937056932274446805895054500000116906646009851736492937513833076602489625307279653461589071484812740516746714953908730424736460829219077432204380475346934742691432944334479643432469277088306e659") }}, + {{ static_cast("6.22325830215437599690631031990051269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.25225952793516384642380501190928043797612190246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01987069469372759270453628912642728954230513534833089604954661995171725801656380902963421144934906141234552439696120736550210382743489449329697576830407056888118360526079463661066722214220114165138840831176499526985462507289995825151030297233511088604059436353741508088143154130210563278515547311543") }}, + {{ static_cast("9.12400440701637786139466257395724824164062738418579101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.34400553054916376341521022652614192338660359382629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97821977486950583166084719161557689663568325790003522306021158417755185644936647878316368235185593329253132043532554677812935724747863173935255764658313396824835230126055857216828346612262350441572667853382236006603976105644273478945602579828808105896550462847104108659412377316272488653010471184196e-1") }}, + {{ static_cast("1.33795627811531119277788093313574790954589843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.48183812852515298791582915027831290899484883993864059448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000384349299045776862801360403732363545774843774701655200272080627739941386437175886379606902727479191090187794979610761904053274682140855025508483613322969568848488035529156236560186742600966591613965074184599845133474883618868818832890976311295886503114503738779326119140373893527826165039256344") }}, + {{ static_cast("7.06939041310026368591934442520141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("7.52070113177227312917239032685756683349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.16601617096668251300410633861451144300904853213668949893514704576723535839139585890152639279492333481781656085682222252609689619088940700517823681224990153082715763605916833922234577262387169239662906567674441665483003247288718595609022710170750805174093013421029787059183231600348513197446175716344e289") }}, + {{ static_cast("1.46809474819978857951241479895543307065963745117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.55150258058036227826192998691112734377384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.87508829078291473496350060709599928627355203095913409392108636898471105714839831302147923025254259824329731513966469918955762532776229610929533035120642195606951641982085398951090528368050382553009140996960228822308531093162518295270230167711636888797942089811261515649759631850124542086583338696866e-1") }}, + {{ static_cast("2.13403424835757107302924850955605506896972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74881959702026967828913939229096285998821258544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02087023232278898673025082821180943357336233310089987611387411667231521549575677239762600896132782138671932320359043850059141855317509884880628897347559802452573752440941620827448739200875424446592178873469737214134752340014718109265906882735838254335143242217171430272779729156476847140495477447567") }}, + {{ static_cast("7.95233844752690766100045038911048322916030883789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.84851678481346848315070019452832639217376708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.52320441273088937482705455163451804728010853035570734024869989669472225400000323970014547943529070869582874785761555559916107563529628329435884632549334664560080647778917243975126257892837384804686623525333256233581024540617818741704180357848449262419278792476592443919338009722004675820379508226554e-1") }}, + {{ static_cast("4.86469155616132400629658683044453937327489256858825683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.22877434444638661270587931539921555668115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.49398596693121402232511551773946216238940594887656584112333721649128338309222255715733045830942439483758414668436262063880698192055748811167639524982228502529443333539688201437948685066022343441584667892362197265423697997073104183476242310932155094648160217817878533689247152065556146288540676206268e-1") }}, + {{ static_cast("9.97061023610679164619341463549062609672546386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.88064355210892131253785919398069381713867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.31339250305317586137103280435203540286641209041963686984564977317675267872546421630007855518104235103746292194256810045376453068069833982650717834727768128915903290190711155087191155109113681049655966851631090461344965018352997694452739029417934674832819743056725077543693812469593253205921308221308e-59") }}, + {{ static_cast("9.25067228877758662708430392740410752594470977783203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("6.58041095700439004900772488326765596866607666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.34794411703227640768834559037146678081237450497151808641284692857257405073921261445846307144839876248119821368257643009964194784066475970698686506948363255089072439573285741549161564675949811535766568038690509602693098394199576228057991570285009737564027696021280582562413585412543950911326853262100e-1") }}, + {{ static_cast("1.27144511159262219734955579042434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("6.18836319449928007330186119361314922571182250976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.55634262177085310455272777009125596103461766420555774353254576944288801886851836915203973701385795773437574206488784269131348804974222211728133676956373754063980028710578189114584286886146802067657659439377822750677886486205610448378645450751753499248735236114037268909383185086028320044219137753422") }}, + {{ static_cast("1.42205871841051475712447427213191986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.49175822061007323782177991233766078948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.31499443769464065089935605375459683035642863575091614297392875457512297919442473147075015935528487370816930373009973708163470195938036050657595355692444453780282744702410807810566482106290630446087507470829783752836539009991223629616484834464198297022741851935670638283977884632514115384409382379451e5") }}, + {{ static_cast("1.79830846471683798881713300943374633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.15740741801222002740900940409574104705825448036193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00026780930725147708425182905646433452420215464014520968261578887024273841780021979940791064143678705875846798937060716374571767664452465951073901977576420551043883735274454852404885141087100496560513919957329201186421887438051030917217421635429456043545707951122601188323754670287140035060211268236") }}, + {{ static_cast("1.41617493747205998033678042702376842498779296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.06659473408631241819755075539433164522051811218261718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00214037426842670551611147350147052752193345171802567422360034056719592273707967867550926051192650203531759829732673928643729296057128383914827597014066465351929167430158631190618779931772000386360976972135737607634338444086468691888473748375182457345550820744493891034677687786078596412978684852640") }}, + {{ static_cast("3.03620445696295947202170140144517063163220882415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.77755559529355344761114565699244849383831024169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.65907453809699509460147409829901675941527854788885630333979265214696163822247505595008528776776735251807610239492515526114770917079309768787319965003601255566849812163333057688474056980168539317656182802355025321396669769362336327872219770789870937515083196007462468888621524361865732646086424336453e-1") }}, + {{ static_cast("1.88150796984490007162094116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.96075222779542400530772283673286437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.33268783679377583213014321394305562443708551652324893198731298378098553656636607906131354129802125769805603337990709647117721910862833606977379369954861887407787985331605230823250624512728814254652735899657072127956911865541366861599183456838203731048557393074731179271410020592240238165188774584943e838") }}, + {{ static_cast("8.89727582886910006720881938235834240913391113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.04127996077174773958962106235048850066959857940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99878344302358244722248144111222437762654865779811772935718213218215174416593116585765566781129897695750076434329093650632173287168263229734935010362448649517261601361617830618010680773234135778887817284697256494192909633866400288905649938277337678717548098982509457693289514879908537721749577461800e-1") }}, + {{ static_cast("1.83083205221824460440238624414632795378565788269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.51305815268083279079291969537734985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.08759465190948202575969824985581134108808966132826957045953621966485495100532942367792704772987024490520063202480279983957515910756497430137889290866515761789926914423548570454774810411630371091100113544891279153106437138536746735808516608107152208446229082973737250416694137957514739571766896873306e-404") }}, + {{ static_cast("3.34665340825903966375139131361748923154664225876331329345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.78685988588032159896101802587509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.52212078787830927194297643296251781134291925779877466674871728836105722487573580131785145484495276918545575844013070305855330551951353365366550132397674036846629030890995284036782751533644901503503905390007269189142085867922573306793968734446410118933272999821289312420310855129959801669881803865858e-2074") }}, + {{ static_cast("5.33927735030905274151661471515595280834531877189874649047851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.20766189867572767122939902950662371949874795973300933837890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991034310800110010707678195555035460840436574922962233018600570397473321611757701145927433415065972844383465094874922585959664097551124468322387734536918015102243687653110114625528443011692213994065730522520240541725522418247328328568974843758308408263849244150678651666777627782107985602066092068e-1") }}, + {{ static_cast("2.19994195074324068173154955729842185974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.06707480325778616969678580517211230471730232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00952545862365855685219042115608145190455235613268820530406120489310419092421063376518661644406509494089174786391890344365290616699827245940846567812410266752069452669091303167176618868615804832415636793311353407444727299687139263635273616648724056070625009496090575286667611858626054037393426920940") }}, + {{ static_cast("9.49426131626506853745939285005306373932398855686187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.33658593189578134285966370953246951103210449218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.10953513637051167906362488703903898283324995313357160919327331939686921714903739192273840983847338772103005796728222224591772689334463276313863779738778665022741134644128703431090827473653846081611135627094959784765932765625500258444912393296945910143335619574776807349923037475968356403544804516261e-2") }}, + {{ static_cast("1.58204381201744226359551248606294393539428710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.69967088875234341601404286503651519524282775819301605224609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077966919198536118506000604021848342587459233214812502825319036185927111842640720441778472762148840769009480654434988580516960635247026640481971290957649218368276357248615028690535272593446475039055115505472342603119011692356413204456935489635677140077206818440909527541341514742179392759484948") }}, + {{ static_cast("7.89159836081502775182242026552614788670325651764869689941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.81696106146368038025684654712677001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.94147359401180853490618926342983857830809890106752620847948172427377774972592621604834694930262822082783398795004418901297871494637794539318032606545630879764294273346094400196886499691750495365869112152459387957968585556903274684614177896724684391146995388586545846815713970966406314356957705636188e-2940") }}, + {{ static_cast("1.28909708384213387034833431243896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.93039877413820920581954965200566221028566360473632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.08496647090160629262865176257751429047729744058064486558757367783712447981236338124011887293782800275409466363098994983981904989007840757365461380428739706364354348918768376442904733609028311603151255847131247523710764847675936168535507206845244124708518371354311381017836653040028826211975497871572") }}, + {{ static_cast("1.88979339146257488413205294364161090925335884094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.50746279790036936674368917010724544525146484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.76918423991144038304021445193438173201942067819279237648900596695575024236585474624026460405210909663314261583560910578839787952809598740673148266220449752385049510413309645447866767727463403580780664879153239139760411591518829772808581212853680494395035365090735562853954119264286528501466090236373e-42") }}, + {{ static_cast("8.41517212362860789198748534545302391052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.64690954096749919699504971504211425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.36385641555849335879047779054573450503531219143280186506059811952516602814802026798922317458022305556248077861115239238036534162971730930403784483407045473794360984711531633071954017599185535725837014265828161774595330813847033913388549400091383297967089159291617295023155265969142242902513558326176e3") }}, + {{ static_cast("7.79453915372945402850746177136898040771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37570185974411316465193522162735462188720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06022076559461302576262215724290203547920286581395364873074659478022575993646868223512587189711310741927159850526321306597320278985726000202501743927791980296512242522543006053260060771089791556404973296770985910119125940674256012428243689156025466514102435785983398909290409351186888763744330929933e26") }}, + {{ static_cast("1.53996830801468109712004661560058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.55753945580631575351659989792096894234418869018554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.20447431374301175187511662239775886280442123057569989101048717965641664163683965122530380365781626549245733448495292659434928101251174655724999866929500920292760069066534315397658186379331270528348085084759405281722204998903474609597521346801285181467380964556686904383585877178604246579963496131145") }}, + {{ static_cast("1.58292085642406949773430824279785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.39839658341223938009534322191029787063598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.95369184630899349835322600435195771430552393938403392920497743251505007693757163085390208500076347439614593692001276141903681987497427879862172599262551403341684739246319058993775975522937386429303489479759146923528741632009619169067978673180741577543638362298805900307916877489621750277562246056785e12") }}, + {{ static_cast("1.34007962789787852670997381210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.93078487352859630432622140006060362793505191802978515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01851774851557016267678896947673493426952146980838508956199625705868791978344101642179134412654468177801448310465798049263061832294449615311708734175434429497593168411288076223275335865898358255932555661831601275564405349791579099870920484601878548075981946266790952650050188664408833668093366337128") }}, + {{ static_cast("6.57565090460510646153124980628490447998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.95349579102368409166956553235650062561035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92883670959819008737323351550818895693909971573197862669756297233542900030950953480711710193053129535412775508169382249001427538228339649766961919628309117712145393012207284297044617755253176225355208718450804357511545954540599873761726532747435308616642768909463909723766874135347528684022648860560e53") }}, + {{ static_cast("7.73401481707858096115160151384770870208740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.49148120277696079938323237001895904541015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21022119284238444262099118632640694751857489911985882302778583637174384391251394588072250813144879442061174245455228341031066580984347413608919792407019123272438031870871777573323381609534176617167457318208979616222032754767955294734636001910121462806120247278470491361024670390806812831433737112379e221") }}, + {{ static_cast("1.10978898863228390113400134708854238851927220821380615234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.32219377403916382718307431787252426147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.07947867569658321194458380597181231565685445537647073748124994390202466909582021155440785847623999110729024670271166064504654713592331835440877924887265726281088902886492996205474623955394661696347608605548560131153946508949187941058346142181719469523416895370937975489878692955467549849494731965625e-66") }}, + {{ static_cast("6.01388538493091151515557157836155965924263000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.60022931107700908527451122420615092778461985290050506591796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992690524283092045041727666257712294170472055655983655789156306985603524706361035867762480294454684826579379760817381252880474747063748101481751389649370586878847928039436815138481244723824252557644191693486953238362877605577315573573222917218930477592061427550313462645068276263623663297863327092e-1") }}, + {{ static_cast("2.15534801432384071073755649194936268031597137451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.05812814671632215990371150837745517492294311523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.55799445393602464144976083125961944702079982479924287374752573999342183140040918969698718557087349720031284500593972794455976395816766982409031253828819168807248785638632014800512514311905184872890032777260194266023572565329278809193542262172193713145497824126566400120337339261082686915643720103934e-1") }}, }}; unsigned max_err = 0; diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 03be2a9f..702e1d06 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -166,7 +166,7 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 max_err = err; } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 5000000000); + BOOST_TEST(max_err < 5000000000uLL); static const boost::array small_data = {{ From fb0acf68724fc5ba306833b04b60bfb6e1a18953 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 5 Nov 2011 18:22:18 +0000 Subject: [PATCH 054/256] Add performance test comparison. Update docs some more. Remove dead code in mp_number.hpp. [SVN r75324] --- doc/multiprecision.qbk | 156 +++++++++- include/boost/multiprecision/mp_number.hpp | 9 - performance/sf_performance.cpp | 321 +++++++++++++++++++++ 3 files changed, 476 insertions(+), 10 deletions(-) create mode 100644 performance/sf_performance.cpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index a585f353..2f8dfe1e 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -24,11 +24,165 @@ [section:intro Introduction] -The Multiprecision library comes in two distinct parts: an expression template enabled front end `mp_number` +The Multiprecision library comes in two distinct parts: an expression-template-enabled front end `mp_number` that handles all the operator overloading, expression evaluation optimization, and code reduction, and a selection of backends that implement the actual arithmetic operations, and need conform only to the reduced interface requirements of the front end. +The library is often used by using one of the predfined typedefs: for example if you wanted an arbitrary precision +integer type using GMP as the underlying implementation then you could use: + + #include // Defines the wrappers around the GMP library's types + + boost::multiprecision::mpz_int myint; // Arbitrary precision integer type. + +Alternatively one can compose your own multiprecision type, by combining `mp_number` with one of the +predefined backend types. For example, suppose you wanted a 300 decimal digit floating point type +based on the MPFR library, in this case there's no predefined typedef with that level of precision, +so instead we compose our own: + + #include // Defines the Backend type that wraps MPFR + + namespace mp = boost::multiprecision; // Reduce the typing a bit later... + + typedef mp::mp_number > my_float; + + my_float a, b, c; // These variables have 300 decimal digits precision + +[h4 Expression Templates] + +Class `mp_number` is expression-template-enabled: that means that rather than having a multiplication +operator that looks like this: + + template + mp_number operator * (const mp_number& a, const mp_number& b) + { + mp_number result(a); + result *= b; + return result; + } + +Instead the operator looks more like this: + + template + ``['unmentionable-type]`` operator * (const mp_number& a, const mp_number& b); + +Where the "unmentionable" return type is an implementation detail that, rather than containing the result +of the multiplication, contains instructions on how to compute the result. In effect it's just a pair +of references to the arguments of the function, plus some compile-time information that stores what the operation +is. + +The great advantage of this method is the ['elimination of temporaries]: for example the "naive" implementation +of `operator*` above, requires one temporary for computing the result, and at least another one to return it. It's true +that sometimes this overhead can be reduced by using move-semantics, but it can't be eliminated completely. For example, +lets suppose we're evaluating a polynomial via Horners method, something like this: + + T a[7] = { /* some values */ }; + //.... + y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; + +If type `T` is an `mp_number`, then this expression is evaluated ['without creating a single temporary value], in contrast +if we were using the C++ wrapper that ships with GMP - `mpf_class` - then this expression would result in no less than 11 +temporaries (this is true even though mpf_class does use expression templates to reduce the number of temporaries somewhat). Had +we used an even simpler wrapper around GMP or MPFR like `mpclass` things would have been even worse and no less that 24 temporaries +are created for this simple expression (note - we actually measure the number of memory allocations performed rather than +the number of temporaries directly). + +This library also extends expression template support to standard library functions like `abs` or `sin` with `mp_number` +arguments. This means that an expression such as: + + y = abs(x); + +can be evaluated without a single temporary being calculated. Even expressions like: + + y = sin(x); + +get this treatment, so that variable 'y' is used as "working storage" within the implementation of `sin`, +thus reducing the number of temporaries used by one. Of course, should you write: + + x = sin(x); + +Then we clearly can't use `x` as working storage during the calculation, so then a temporary variable +is created in this case. + +Given the comments above, you might be forgiven for thinking that expression-templates are some kind of universal-panacea: +sadly though, all tricks like this have their downsides. For one thing, expression template libraries +like this one, tend to be slower to compile than their simpler cousins, they're also harder to debug +(should you actually want to step through our code!), and rely on compiler optimizations being turned +on to give really good performance. Also since the return type from expressions involving `mp_number`'s +is an "unmentionable implementation detail", you have to be careful to cast the result of an expression +to the actual number type when passing an expression to a template function. For example given: + + template + void my_proc(const T&); + +Then calling: + + my_proc(a+b); + +Will very likely result in obscure error messages inside the body of `my_proc` - since we've passed it +an expression template type, and not a number type. Instead we probably need: + + my_proc(my_mp_number_type(a+b)); + +Having said that, these situations don't occur that often - or indeed not at all for non-template functions. +In addition all the functions in the Boost.Math library will automatically convert expression-template arguments +to the underlying number type without you having to do anything, so: + + mpfr_float_100 a(20), delta(0.125); + boost::math::gamma_p(a, a + delta); + +Will work just fine, with the `a + delta` expression template argument getting converted to an `mpfr_float_100` +internally by the Boost.Math library. + +One other potential pitfall that's only possible in C++11: you should never store an expression template using: + + auto my_expression = a + b - c; + +Unless you're absolutely sure that the lifetimes of `a`, `b` and `c` will outlive that of `my_expression`. + +And finally.... the performance improvements from an expression template library like this are often not as +dramatic as the reduction in number of temporaries would suggest. For example if we compare this library with +`mpfr_class` and `mpreal`, with all three using the underlying MPFR library at 50 decimal digits precision then +we see the following typical results for polynomial execution: + +[table Evaluation of Order 6 Polynomial. +[[Library][Relative Time][Relative number of memory allocations]] +[[mp_number][1.0 (0.00793s)][1.0 (2996 total)]] +[[mpfr_class][1.2 (0.00931s)][4.3 (12976 total)]] +[[mpreal][1.9 (0.0148s)][9.3 (27947 total)]] +] + +As you can see the execution time increases a lot more slowly than the number of memory allocations. There are +a number of reasons for this: + +* The cost of extended-precision multiplication and division is so great, that the times taken for these tend to +swamp everything else. +* The cost of an in-place multiplication (using `operator*=`) tends to be more than an out-of-place +`operator*` (typically `operator *=` has to create a temporary workspace to carry out the multiplication, where +as `operator*` can use the target variable as workspace). Since the expression templates carry out their +magic by converting out-of-place operators to in-place ones, we necessarily take this hit. Even so the +transformation is more efficient than creating the extra temporary variable, just not by as much as +one would hope. + +We'll conclude this section by providing some more performance comparisons between these three libraries, +again, all are using MPFR to carry out the underlying arithmetic, and all are operating at the same precision +(50 decimal places): + +[table Evaluation of Boost.Math's Bessel function test data +[[Library][Relative Time][Relative Number of Memory Allocations]] +[[mp_number][1.0 (6.21s)][1.0 (2685469)]] +[[mpfr_class][1.04 (6.45s)][1.47 (3946007)]] +[[mpreal][1.53 (9.52s)][4.92 (13222940)]] +] + +[table Evaluation of Boost.Math's Non-Central T distribution test data +[[Library][Relative Time][Relative Number of Memory Allocations]] +[[mp_number][1.0 (269s)][1.0 (139082551)]] +[[mpfr_class][1.04 (278s)][1.81 (252400791)]] +[[mpreal][1.49 (401s)][3.22 (447009280)]] +] + [endsect] [section:tut Tutorial] diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 5a9aebc2..78a0cc74 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -545,15 +545,6 @@ private: using default_ops::subtract; subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } - /* - template - void do_assign(const Exp& e, const detail::subtract_and_negate_immediates&) - { - using default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } - */ template void do_assign(const Exp& e, const detail::multiply_immediates&) { diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp new file mode 100644 index 00000000..04238b9e --- /dev/null +++ b/performance/sf_performance.cpp @@ -0,0 +1,321 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#define BOOST_CHRONO_HEADER_ONLY +#define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 500 + +#include +#include +#include +#include +#include +#include +#include +#include + +template +Real test_bessel(); + +template +struct stopwatch +{ + typedef typename Clock::duration duration; + stopwatch() + { + m_start = Clock::now(); + } + duration elapsed() + { + return Clock::now() - m_start; + } + void reset() + { + m_start = Clock::now(); + } + +private: + typename Clock::time_point m_start; +}; + +template +Real test_bessel() +{ +# define T double +# include "libs/math/test/bessel_i_int_data.ipp" +# include "libs/math/test/bessel_i_data.ipp" + + Real r; + + for(unsigned i = 0; i < bessel_i_int_data.size(); ++i) + { + r += boost::math::cyl_bessel_i(Real(bessel_i_int_data[i][0]), Real(bessel_i_int_data[i][1])); + } + for(unsigned i = 0; i < bessel_i_data.size(); ++i) + { + r += boost::math::cyl_bessel_i(Real(bessel_i_data[i][0]), Real(bessel_i_data[i][1])); + } + +#include "libs/math/test/bessel_j_int_data.ipp" + for(unsigned i = 0; i < bessel_j_int_data.size(); ++i) + { + r += boost::math::cyl_bessel_j(Real(bessel_j_int_data[i][0]), Real(bessel_j_int_data[i][1])); + } + +#include "libs/math/test/bessel_j_data.ipp" + for(unsigned i = 0; i < bessel_j_data.size(); ++i) + { + r += boost::math::cyl_bessel_j(Real(bessel_j_data[i][0]), Real(bessel_j_data[i][1])); + } + +#include "libs/math/test/bessel_j_large_data.ipp" + for(unsigned i = 0; i < bessel_j_large_data.size(); ++i) + { + r += boost::math::cyl_bessel_j(Real(bessel_j_large_data[i][0]), Real(bessel_j_large_data[i][1])); + } + +#include "libs/math/test/sph_bessel_data.ipp" + for(unsigned i = 0; i < sph_bessel_data.size(); ++i) + { + r += boost::math::sph_bessel(static_cast(sph_bessel_data[i][0]), Real(sph_bessel_data[i][1])); + } + + + return r; +} + +template +Real test_polynomial() +{ + static const unsigned t[] = { + 2, 3, 4, 5, 6, 7, 8 }; + Real result = 0; + for(Real k = 2; k < 1000; ++k) + result += boost::math::tools::evaluate_polynomial(t, k); + + return result; +} + +template +Real test_nct() +{ +#define T double +#include "libs/math/test/nct.ipp" + + Real result = 0; + for(unsigned i = 0; i < nct.size(); ++i) + { + try{ + result += quantile(boost::math::non_central_t_distribution(nct[i][0], nct[i][1]), nct[i][3]); + } + catch(const std::exception&) + {} + result += cdf(boost::math::non_central_t_distribution(nct[i][0], nct[i][1]), nct[i][2]); + } + return result; +} + +unsigned allocation_count = 0; + +void *(*alloc_func_ptr) (size_t); +void *(*realloc_func_ptr) (void *, size_t, size_t); +void (*free_func_ptr) (void *, size_t); + +void *alloc_func(size_t n) +{ + ++allocation_count; + return (*alloc_func_ptr)(n); +} + +void free_func(void * p, size_t n) +{ + (*free_func_ptr)(p, n); +} + +void * realloc_func(void * p, size_t old, size_t n) +{ + ++allocation_count; + return (*realloc_func_ptr)(p, old, n); +} + +int main() +{ + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + mp_set_memory_functions(&alloc_func, &realloc_func, &free_func); + + static const unsigned a[] = { + 2, 3, 4, 5, 6, 7, 8 }; + boost::multiprecision::mpfr_float_50 result, x(2); + allocation_count = 0; + result = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; + std::cout << allocation_count << std::endl; + mpfr_class r, x2(2); + allocation_count = 0; + r = (((((a[6] * x2 + a[5]) * x2 + a[4]) * x2 + a[3]) * x2 + a[2]) * x2 + a[1]) * x2 + a[0]; + std::cout << allocation_count << std::endl; + mpfr::mpreal r2, x3(2); + allocation_count = 0; + r2 = (((((a[6] * x3 + a[5]) * x3 + a[4]) * x3 + a[3]) * x3 + a[2]) * x3 + a[1]) * x3 + a[0]; + std::cout << allocation_count << std::endl; + + allocation_count = 0; + result = boost::math::tools::evaluate_polynomial(a, x); + std::cout << allocation_count << std::endl; + allocation_count = 0; + r = boost::math::tools::evaluate_polynomial(a, x2); + std::cout << allocation_count << std::endl; + allocation_count = 0; + r2 = boost::math::tools::evaluate_polynomial(a, x3); + std::cout << allocation_count << std::endl; + + + boost::chrono::duration time; + stopwatch c; + // + // 50 digits first: + // + std::cout << "Testing Bessel Functions....." << std::endl; + mpfr_set_default_prec(50 * 1000L / 301L); + mpfr::mpreal::set_default_prec(50 * 1000L / 301L); + c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpfr_float_50 = " << time << std::endl; + std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; + std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpreal (50 digits) = " << time << std::endl; + std::cout << "Total allocations for mpreal (50 digits) = " << allocation_count << std::endl; + allocation_count = 0; + // + // Then 100 digits: + // + mpfr_set_default_prec(100 * 1000L / 301L); + mpfr::mpreal::set_default_prec(100 * 1000L / 301L); + c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpfr_float_100 = " << time << std::endl; + std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; + std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpreal (100 digits) = " << time << std::endl; + std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; + allocation_count = 0; + + // + // 50 digits first: + // + c.reset(); + std::cout << "Testing Polynomial Evaluation....." << std::endl; + mpfr_set_default_prec(50 * 1000L / 301L); + mpfr::mpreal::set_default_prec(50 * 1000L / 301L); + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpfr_float_50 = " << time << std::endl; + std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; + std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpreal (50 digits) = " << time << std::endl; + std::cout << "Total allocations for mpreal (50 digits = " << allocation_count << std::endl; + allocation_count = 0; + // + // Then 100 digits: + // + mpfr_set_default_prec(100 * 1000L / 301L); + mpfr::mpreal::set_default_prec(100 * 1000L / 301L); + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpfr_float_100 = " << time << std::endl; + std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; + std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpreal (100 digits) = " << time << std::endl; + std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; + allocation_count = 0; + + // + // 50 digits first: + // + c.reset(); + std::cout << "Testing Non-Central T....." << std::endl; + mpfr_set_default_prec(50 * 1000L / 301L); + mpfr::mpreal::set_default_prec(50 * 1000L / 301L); + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpfr_float_50 = " << time << std::endl; + std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; + std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpreal (50 digits) = " << time << std::endl; + std::cout << "Total allocations for mpreal (50 digits) = " << allocation_count << std::endl; + allocation_count = 0; + // + // Then 100 digits: + // + mpfr_set_default_prec(100 * 1000L / 301L); + mpfr::mpreal::set_default_prec(100 * 1000L / 301L); + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpfr_float_100 = " << time << std::endl; + std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; + std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpreal (100 digits) = " << time << std::endl; + std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; + allocation_count = 0; +} + From b36be1f5c38b4736300beaa052f97e6cfcbca02b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 8 Nov 2011 12:50:21 +0000 Subject: [PATCH 055/256] Tighten up and test the architypes. [SVN r75404] --- .../concepts/mp_number_architypes.hpp | 82 +------------------ .../multiprecision/detail/default_ops.hpp | 8 +- test/Jamfile.v2 | 40 ++++++++- test/mp_number_concept_check.cpp | 53 ++++++++---- 4 files changed, 80 insertions(+), 103 deletions(-) diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index da417ae1..accd293d 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -177,94 +177,14 @@ inline void eval_ceil(mp_number_backend_float_architype& result, const mp_number result = std::ceil(arg.m_value); } -inline void eval_trunc(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = boost::math::trunc(arg.m_value); -} - inline void eval_sqrt(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) { result = std::sqrt(arg.m_value); } -inline void eval_abs(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::abs(arg.m_value); -} - -inline void eval_fabs(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::fabs(arg.m_value); -} - inline int eval_fpclassify(const mp_number_backend_float_architype& arg) { - return boost::math::fpclassify(arg.m_value); -} - -inline void eval_pow(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& b, const mp_number_backend_float_architype& e) -{ - result = std::pow(b.m_value, e.m_value); -} - -inline void eval_pow(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& b, int e) -{ - result = std::pow(b.m_value, e); -} - -inline void eval_exp(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::exp(arg.m_value); -} - -inline void eval_log(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::log(arg.m_value); -} - -inline void eval_sin(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::sin(arg.m_value); -} - -inline void eval_cos(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::cos(arg.m_value); -} - -inline void eval_tan(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::tan(arg.m_value); -} - -inline void eval_asin(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::asin(arg.m_value); -} - -inline void eval_acos(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::acos(arg.m_value); -} - -inline void eval_atan(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::atan(arg.m_value); -} - -inline void eval_sinh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::sinh(arg.m_value); -} - -inline void eval_cosh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::cosh(arg.m_value); -} - -inline void eval_tanh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) -{ - result = std::tanh(arg.m_value); + return (boost::math::fpclassify)(arg.m_value); } typedef boost::multiprecision::mp_number mp_number_float_architype; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index ed82327c..91bed7f5 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -340,18 +340,18 @@ void eval_abs(T& result, const T& arg) { typedef typename T::signed_types type_list; typedef typename mpl::front::type front; - *result = arg; + result = arg; if(arg.compare(front(0)) < 0) - result->negate(); + result.negate(); } template void eval_fabs(T& result, const T& arg) { typedef typename T::signed_types type_list; typedef typename mpl::front::type front; - *result = arg; + result = arg; if(arg.compare(front(0)) < 0) - result->negate(); + result.negate(); } template diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 9ee8b530..7855a726 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -158,6 +158,38 @@ run mp_number_concept_check.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : big_number_concept_check_mpfr_50 ; +run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_6 + [ check-target-builds ../config//has_mpfr : : no ] + : big_number_concept_check_mpfr_6 ; + +run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_15 + [ check-target-builds ../config//has_mpfr : : no ] + : big_number_concept_check_mpfr_15 ; + +run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_17 + [ check-target-builds ../config//has_mpfr : : no ] + : big_number_concept_check_mpfr_17 ; + +run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_30 + [ check-target-builds ../config//has_mpfr : : no ] + : big_number_concept_check_mpfr_30 ; + run mp_number_concept_check.cpp gmp : # command line : # input files @@ -171,9 +203,15 @@ run mp_number_concept_check.cpp : # input files : # requirements TEST_MP_FLOAT - [ check-target-builds ../config//has_gmp : : no ] : big_number_concept_check_mp_float ; +run mp_number_concept_check.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : big_number_concept_check_backend_concept ; + run test_exp.cpp gmp : # command line : # input files diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 99d2c13f..35872d75 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -20,13 +20,17 @@ # pragma warning(disable:4503) // decorated name length exceeded, name was truncated #endif -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ + && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR_50)\ + && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) # define TEST_MPF_50 -# define TEST_MPF # define TEST_BACKEND # define TEST_MPZ -# define TEST_MPFR # define TEST_MPFR_50 +# define TEST_MPFR_6 +# define TEST_MPFR_15 +# define TEST_MPFR_17 +# define TEST_MPFR_30 # define TEST_MP_FLOAT #ifdef _MSC_VER @@ -38,7 +42,7 @@ #endif -#if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) +#if defined(TEST_MPF_50) || defined(TEST_MPZ) #include #endif #ifdef TEST_BACKEND @@ -47,7 +51,7 @@ #ifdef TEST_MP_FLOAT #include #endif -#if defined(TEST_MPFR) || defined(TEST_MPFR_50) +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) #include #endif @@ -57,19 +61,25 @@ void foo() { #ifdef TEST_BACKEND - instantiate(boost::multiprecision::mp_number_float_architype()); + instantiate(boost::multiprecision::concepts::mp_number_float_architype()); #endif #ifdef TEST_MPF_50 instantiate(boost::multiprecision::mpf_float_50()); #endif -#ifdef TEST_MPF - instantiate(boost::multiprecision::mpf_float()); -#endif #ifdef TEST_MPFR_50 instantiate(boost::multiprecision::mpfr_float_50()); #endif -#ifdef TEST_MPFR - instantiate(boost::multiprecision::mpfr_float()); +#ifdef TEST_MPFR_6 + instantiate(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_15 + instantiate(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_17 + instantiate(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_30 + instantiate(boost::multiprecision::mp_number >()); #endif #ifdef TEST_MP_FLOAT instantiate(boost::multiprecision::mp_float_50()); @@ -79,19 +89,28 @@ void foo() int main() { #ifdef TEST_BACKEND - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPF_50 BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif -#ifdef TEST_MPF - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); -#endif #ifdef TEST_MPFR_50 BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif -#ifdef TEST_MPFR - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#ifdef TEST_MPFR_6 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); +#endif +#ifdef TEST_MPFR_15 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); +#endif +#ifdef TEST_MPFR_17 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); +#endif +#ifdef TEST_MPFR_30 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); +#endif +#ifdef TEST_MPFR_50 + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MP_FLOAT BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); From 0c4dde52eec163ae81d48c7e56e8d7d6fb416e1e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 9 Nov 2011 17:37:40 +0000 Subject: [PATCH 056/256] Get the rounding functions working and tested, update docs to match. [SVN r75425] --- doc/multiprecision.qbk | 303 +++++++++++-- .../multiprecision/detail/default_ops.hpp | 151 ++++--- .../multiprecision/detail/functions/pow.hpp | 25 ++ include/boost/multiprecision/gmp.hpp | 5 +- include/boost/multiprecision/mp_float.hpp | 9 +- include/boost/multiprecision/mp_number.hpp | 6 + include/boost/multiprecision/mpfr.hpp | 22 + test/Jamfile.v2 | 32 ++ test/test_log.cpp | 13 + test/test_round.cpp | 404 ++++++++++++++++++ 10 files changed, 881 insertions(+), 89 deletions(-) create mode 100644 test/test_round.cpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 2f8dfe1e..fdcd45e6 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -402,9 +402,21 @@ It's also possible to access the underlying `mpq_t` via the data() member functi mp_number(); mp_number(see-below); mp_number& operator=(see-below); + /* Other number-type operators here */ + + // Use in Boolean context: + operator ``['convertible-to-bool-type]``()const; + // swap: + void swap(mp_number& other); + // Sign: + bool is_zero()const; + int sign()const; // string conversion: std::string str()const; + // Generic conversion mechanism + template + T convert_to()const; // precision control: static unsigned default_precision(); static void default_precision(unsigned digits10); @@ -419,6 +431,10 @@ It's also possible to access the underlying `mpq_t` via the data() member functi const Backend& backend()const; }; + // Swap: + template + void swap(mp_number& a, mp_number& b); + // iostream support: template std::ostream& operator << (std::ostream& os, const mp_number& r); @@ -427,23 +443,31 @@ It's also possible to access the underlying `mpq_t` via the data() member functi std::istream& operator >> (std::istream& is, mp_number& r); // Non-member function standard library support: - ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` itrunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ltrunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lltrunc(const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` round (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` iround (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lround (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` llround(const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log10 (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); ``['unmentionable-expression-template-type]`` ldexp (const ``['mp_number-or-expression-template-type]``&, int); ``['unmentionable-expression-template-type]`` frexp (const ``['mp_number-or-expression-template-type]``&, int*); @@ -453,6 +477,17 @@ It's also possible to access the underlying `mpq_t` via the data() member functi }} // namespaces + namespace boost{ namespace math{ + + // Boost.Math interoperability functions: + int fpclassify (const ``['mp_number-or-expression-template-type]``&, int); + bool isfinite (const ``['mp_number-or-expression-template-type]``&, int); + bool isnan (const ``['mp_number-or-expression-template-type]``&, int); + bool isinf (const ``['mp_number-or-expression-template-type]``&, int); + bool isnormal (const ``['mp_number-or-expression-template-type]``&, int); + + }} // namespaces + // numeric_limits support: namespace std{ @@ -497,11 +532,37 @@ derived from `mp_number`. One argument may optionally be of arithmetic type. Note that type `mp_number` (and all expression templates derived from it) may be used in a Boolian context. + operator ``['convertible-to-bool-type]``()const; + +Returns an ['unmentionable-type] that is usable in Boolean contexts (this allows `mp_number` to be used in any +Boolean context - if statements, conditional statements, or as an argument to a logical operator - without +type `mp_number` being convertible to type `bool`. + + void swap(mp_number& other); + +Swaps `*this` with `other`. + + bool is_zero()const; + +Returns `true` is `*this` is zero, otherwise `false`. + + int sign()const; + +Returns a value less than zero if `*this` is negative, a value greater than zero if `*this is positive, and zero +if `*this` is zero. + std::string str(unsigned precision, bool scientific = true)const; Returns the number formatted as a string, with at least /precision/ digits, and in scientific format if /scientific/ is true. + template + T convert_to()const; + +Provides a generic conversion mechanism to convert `*this` to type `T`. Type `T` may be any arithmetic type. +Optionally other types may also be supported by specific `Backend` types. + + static unsigned default_precision(); static void default_precision(unsigned digits10); unsigned precision()const; @@ -525,6 +586,13 @@ Returns: Returns the underlying backend instance used by *this. +[h4 swap] + + template + void swap(mp_number& a, mp_number& b); + +Swaps `a` and `b`. + [h4 Iostream Support] template @@ -538,23 +606,31 @@ These operators provided formatted input-output operations on `mp_number` types, [h4 Non-member standard library function support] - ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` itrunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ltrunc (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lltrunc(const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` round (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` iround (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lround (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` llround(const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log10 (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); ``['unmentionable-expression-template-type]`` ldexp (const ``['mp_number-or-expression-template-type]``&, int); ``['unmentionable-expression-template-type]`` frexp (const ``['mp_number-or-expression-template-type]``&, int*); @@ -572,6 +648,21 @@ used at variable precision. Also note that with the exception of `abs` that these functions can only be used with floating point Backend types. +[h4 Boost.Math Interoperabilty Support] + + namespace boost{ namespace math{ + + int fpclassify (const ``['mp_number-or-expression-template-type]``&, int); + bool isfinite (const ``['mp_number-or-expression-template-type]``&, int); + bool isnan (const ``['mp_number-or-expression-template-type]``&, int); + bool isinf (const ``['mp_number-or-expression-template-type]``&, int); + bool isnormal (const ``['mp_number-or-expression-template-type]``&, int); + + }} // namespaces + +These functions behave exacts as their Boost.Math equivalents. Other Boost.Math functions and templates may also be +specialized or overloaded to ensure interoperability. + [h4 std::numeric_limits support] namespace std{ @@ -592,7 +683,149 @@ whose precision can vary at compile time (such as `mpf_float`). [section:backendconc Backend Requirements] -TODO, big boring job!! +[template super[x]''''''[x]''''''] + +The requirements on the `Backend` template argument to `mp_number` are split up into +compulsary requirements, and optional requirements that are either to improve performance +or provide optional features. + +In the following tables, type B is the `Backend` template arument to `mp_number`, `b` is +a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a variable of Arithmetic type, +`s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, +`pa` is a variable of type pointer-to-arithmetc-type, `exp` is a variable of type `B::exp_type`, +`pexp` is a variable of type `B::exp_type*`. + +[table Compulsary Requirements on the Backend type. +[[Expression][Return Type][Comments]] +[[`B::signed_types`][`mpl::list`][A list of signed integral types that can be assigned to type B. The types shall be + listed in order of size, smallest first, and shall terminate in the type that is `std::intmax_t`.]] +[[`B::unsigned_types`][`mpl::list`][A list of unsigned integral types that can be assigned to type B. The types shall be + listed in order of size, smallest first, and shall terminate in the type that is `std::uintmax_t`.]] +[[`B::real_types`][`mpl::list`][A list of floating point types that can be assigned to type B.The types shall be + listed in order of size, smallest first, and shall terminate in type `long double`.]] +[[`B::exponent_type`][A signed integral type.][The type of the exponent of type B.]] +[[`B()`][ ][Default constructor.]] +[[`B(cb)`][ ][Copy Constructor.]] +[[`b = b`][`B&`][Assignment operator.]] +[[`b = a`][`B&`][Assignment from an Arithmetic type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`b = s`][`B&`][Assignment from a string.]] +[[`b.swap(b)`][`void`][Swaps the contents of it's arguments.]] +[[`cb.str(ui, bb)`][`std::string`][Returns the string representation of `b` with `ui` digits and in scientific format if `bb` is `true`. + If `ui` is zero, then returns as many digits as are required to reconstruct the original value.]] +[[`b.negate()`][`void`][Negates `b`.]] +[[`cb.compare(cb2)`][`int`][Compares `cb` and `cb2`, returns a value less than zero if `cb < cb2`, a value greater than zero if `cb > cb2` and zero + if `cb == cb2`.]] +[[`cb.compare(a)`][`int`][Compares `cb` and `a`, returns a value less than zero if `cb < a`, a value greater than zero if `cb > a` and zero + if `cb == a`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`add(b, cb)`][`void`][Adds `cb` to `b`.]] +[[`subtract(b, cb)`][`void`][Subtracts `cb` from `b`.]] +[[`multiply(b, cb)`][`void`][Multiplies `b` by `cb`.]] +[[`divide(b, cb)`][`void`][Divides `b` by `cb`.]] +[[`modulus(b, cb)`][`void`][Computes `b %= cb`, only required when `B` is an integer type.]] +[[`bitwise_and(b, cb)`][`void`][Computes `b &= cb`, only required when `B` is an integer type.]] +[[`bitwise_or(b, cb)`][`void`][Computes `b |= cb`, only required when `B` is an integer type.]] +[[`bitwise_xor(b, cb)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type.]] +[[`complement(b, cb)`][`void`][Computes the ones-complement of `cb` and stores the result in `b`, only required when `B` is an integer type.]] +[[`left_shift(b, ui)`][`void`][Computes `b <<= ui`, only required when `B` is an integer type.]] +[[`right_shift(b, ui)`][`void`][Computes `b >>= ui`, only required when `B` is an integer type.]] +[[`convert_to(pa, cb)`][`void`][Converts `cb` to the type of `*pa` and store the result in `*pa`. Type `B` shall support + conversion to at least types `std::intmax_t`, `std::uintmax_t` and `long long`. + Conversion to other arithmetic types can then be synthesised using other operations. + Conversions to other types are entirely optional.]] +[[`eval_frexp(b, cb, pexp)`][`void`][Stores values in `b` and `*pexp` such that the value of `cb` is b * 2[super *pexp], only required when `B` is a floating point type.]] +[[`eval_ldexp(b, cb, exp)`][`void`][Stores a value in `b` that is cb * 2[super exp], only required when `B` is a floating point type.]] +[[`eval_floor(b, cb)`][`void`][Stores the floor of `cb` in `b`, only required when `B` is a floating point type.]] +[[`eval_ceil(b, cb)`][`void`][Stores the ceiling of `cb` in `b`, only required when `B` is a floating point type.]] +[[`eval_sqrt(b, cb)`][`void`][Stores the square root of `cb` in `b`, only required when `B` is a floating point type.]] +] + +[table Optional Requirements on the Backend Type +[[Expression][Returns][Comments]] +[[`add(b, a)`][`void`][Adds `a` to `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`subtract(b, a)`][`void`][Subtracts `a` from `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`multiply(b, a)`][`void`][Multiplies `b` by `a`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`divide(b, a)`][`void`][Divides `b` by `a`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`modulus(b, a)`][`void`][Computes `b %= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_and(b, a)`][`void`][Computes `b &= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_or(b, a)`][`void`][Computes `b |= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_xor(b, a)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`add(b, cb, cb2)`][`void`][Add `cb` to `cb2` and stores the result in `b`.]] +[[`subtract(b, cb, cb2)`][`void`][Subtracts `cb2` from `cb` and stores the result in `b`.]] +[[`multiply(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and stores the result in `b`.]] +[[`divide(b, cb, cb2)`][`void`][Divides `cb` by `cb2` and stores the result in `b`.]] +[[`add(b, cb, a)`][`void`][Add `cb` to `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`subtract(b, cb, a)`][`void`][Subtracts `a` from `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`multiply(b, cb, a)`][`void`][Multiplies `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`divide(b, cb, a)`][`void`][Divides `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`modulus(b, cb, cb2)`][`void`][Computes `cb % cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`bitwise_and(b, cb, cb2)`][`void`][Computes `cb & cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`bitwise_or(b, cb, cb2)`][`void`][Computes `cb | cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`bitwise_xor(b, cb, cb2)`][`void`][Computes `cb ^ cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`add(b, a, cb)`][`void`][Add `a` to `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`subtract(b, a, cb)`][`void`][Subtracts `cb` from `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`multiply(b, a, cb)`][`void`][Multiplies `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`divide(b, a, cb)`][`void`][Divides `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`modulus(b, cb, a)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_and(b, cb, a)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_or(b, cb, a)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_xor(b, cb, a)`][`void`][Computes `cb ^ a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`modulus(b, a, cb)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_and(b, a, cb)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_or(b, a, cb)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`bitwise_xor(b, a, cb)`][`void`][Computes `a ^ cb` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] +[[`left_shift(b, cb, ui)`][`void`][Computes `cb << ui` and stores the result in `b`, only required when `B` is an integer type.]] +[[`right_shift(b, cb, ui)`][`void`][Computes `cb >> ui` and stores the result in `b`, only required when `B` is an integer type.]] +[[`increment(b)`][void][Increments the value of `b` by one.]] +[[`decrement(b)`][void][Decrements the value of `b` by one.]] +[[`is_zero(cb)`][`bool`][Returns `true` if `cb` is zero, otherwise `false`]] +[[`get_sign(cb)`][`int`][Returns a value < zero if `cb` is negative, a value > zero if `cb` is positive, and zero if `cb` is zero.]] +[[`eval_abs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] +[[`eval_fabs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] +[[`eval_fpclassify(cb)`][`int`][Returns one of the same values returned by `std::fpclassify`. Only required when `B` is an floating point type.]] +[[`eval_trunc(b, cb)`][`void`][Performs the equivalent operation to `std::trunc` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_round(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::round` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_exp(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_log(b, cb)`][`void`][Performs the equivalent operation to `std::log` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_log10(b, cb)`][`void`][Performs the equivalent operation to `std::log10` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_sin(b, cb)`][`void`][Performs the equivalent operation to `std::sin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_cos(b, cb)`][`void`][Performs the equivalent operation to `std::cos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_tan(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_asin(b, cb)`][`void`][Performs the equivalent operation to `std::asin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_acos(b, cb)`][`void`][Performs the equivalent operation to `std::acos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_atan(b, cb)`][`void`][Performs the equivalent operation to `std::atan` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_sinh(b, cb)`][`void`][Performs the equivalent operation to `std::sinh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_cosh(b, cb)`][`void`][Performs the equivalent operation to `std::cosh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_tanh(b, cb)`][`void`][Performs the equivalent operation to `std::tanh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_fmod(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::fmod` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_pow(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::pow` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_atan2(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::atan` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating point type.]] +] [endsect] diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 91bed7f5..775a3b7d 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -382,6 +382,12 @@ inline void eval_fmod(T& result, const T& a, const T& b) template inline void eval_trunc(T& result, const T& a) { + int c = eval_fpclassify(a); + if(c == FP_NAN || c == FP_INFINITE) + { + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number(a), 0, boost::math::policies::policy<>()).backend(); + return; + } if(get_sign(a) < 0) eval_ceil(result, a); else @@ -392,6 +398,12 @@ template inline void eval_round(T& result, const T& a) { typedef typename boost::multiprecision::detail::canonical::type fp_type; + int c = eval_fpclassify(a); + if(c == FP_NAN || c == FP_INFINITE) + { + result = boost::math::policies::raise_rounding_error("boost::multiprecision::round<%1%>(%1%)", 0, mp_number(a), 0, boost::math::policies::policy<>()).backend(); + return; + } if(get_sign(a) < 0) { subtract(result, a, fp_type(0.5f)); @@ -420,31 +432,6 @@ typename enable_if_c::type eval_ldexp(); template typename enable_if_c::type eval_frexp(); // -// TODO: implement default versions of these: -// -template -typename enable_if_c::type eval_exp(); -template -typename enable_if_c::type eval_log(); -template -typename enable_if_c::type eval_sin(); -template -typename enable_if_c::type eval_cos(); -template -typename enable_if_c::type eval_tan(); -template -typename enable_if_c::type eval_asin(); -template -typename enable_if_c::type eval_acos(); -template -typename enable_if_c::type eval_atan(); -template -typename enable_if_c::type eval_sinh(); -template -typename enable_if_c::type eval_cosh(); -template -typename enable_if_c::type eval_tanh(); -// // These functions are implemented in separate files, but expanded inline here, // DO NOT CHANGE THE ORDER OF THESE INCLUDES: // @@ -527,7 +514,7 @@ template inline typename detail::mp_exp::result_type trunc(const detail::mp_exp& v, const Policy& pol) { typedef typename detail::mp_exp::result_type number_type; - return trunc(v, pol); + return trunc(number_type(v), pol); } template @@ -544,58 +531,88 @@ inline int itrunc(const detail::mp_exp& v, const Policy& pol) { typedef typename detail::mp_exp::result_type number_type; number_type r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) + return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to(); return r.template convert_to(); } +template +inline int itrunc(const detail::mp_exp& v) +{ + return itrunc(v, boost::math::policies::policy<>()); +} template inline int itrunc(const mp_number& v, const Policy& pol) { mp_number r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } +template +inline int itrunc(const mp_number& v) +{ + return itrunc(v, boost::math::policies::policy<>()); +} template inline long ltrunc(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_result number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) + return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to(); return r.template convert_to(); } +template +inline long ltrunc(const detail::mp_exp& v) +{ + return ltrunc(v, boost::math::policies::policy<>()); +} template inline long ltrunc(const mp_number& v, const Policy& pol) { mp_number r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } +template +inline long ltrunc(const mp_number& v) +{ + return ltrunc(v, boost::math::policies::policy<>()); +} #ifndef BOOST_NO_LONG_LONG template inline long long lltrunc(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_result number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) + return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to(); return r.template convert_to(); } +template +inline long long lltrunc(const detail::mp_exp& v) +{ + return lltrunc(v, boost::math::policies::policy<>()); +} template inline long long lltrunc(const mp_number& v, const Policy& pol) { mp_number r = trunc(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } +template +inline long long lltrunc(const mp_number& v) +{ + return lltrunc(v, boost::math::policies::policy<>()); +} #endif template -inline typename detail::mp_exp::result_result round(const detail::mp_exp& v, const Policy& pol) +inline typename detail::mp_exp::result_type round(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_result number_type; + typedef typename detail::mp_exp::result_type number_type; return round(static_cast(v), pol); } template @@ -610,55 +627,85 @@ inline mp_number round(const mp_number& v, const Policy& pol) template inline int iround(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_result number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) + return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to(); return r.template convert_to(); } +template +inline int iround(const detail::mp_exp& v) +{ + return iround(v, boost::math::policies::policy<>()); +} template inline int iround(const mp_number& v, const Policy& pol) { mp_number r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } +template +inline int iround(const mp_number& v) +{ + return iround(v, boost::math::policies::policy<>()); +} template inline long lround(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_result number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) + return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to(); return r.template convert_to(); } +template +inline long lround(const detail::mp_exp& v) +{ + return lround(v, boost::math::policies::policy<>()); +} template inline long lround(const mp_number& v, const Policy& pol) { mp_number r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } +template +inline long lround(const mp_number& v) +{ + return lround(v, boost::math::policies::policy<>()); +} #ifndef BOOST_NO_LONG_LONG template inline long long llround(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_result number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) - return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) + return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to(); return r.template convert_to(); } +template +inline long long llround(const detail::mp_exp& v) +{ + return llround(v, boost::math::policies::policy<>()); +} template inline long long llround(const mp_number& v, const Policy& pol) { mp_number r = round(v, pol); - if(fabs(r) > (std::numeric_limits::max)()) + if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } +template +inline long long llround(const mp_number& v) +{ + return llround(v, boost::math::policies::policy<>()); +} #endif #define UNARY_OP_FUNCTOR(func)\ @@ -917,8 +964,10 @@ UNARY_OP_FUNCTOR(sqrt) UNARY_OP_FUNCTOR(floor) UNARY_OP_FUNCTOR(ceil) UNARY_OP_FUNCTOR(trunc) +UNARY_OP_FUNCTOR(round) UNARY_OP_FUNCTOR(exp) UNARY_OP_FUNCTOR(log) +UNARY_OP_FUNCTOR(log10) UNARY_OP_FUNCTOR(cos) UNARY_OP_FUNCTOR(sin) UNARY_OP_FUNCTOR(tan) diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 7bd0554c..fe8ab3ab 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -385,6 +385,31 @@ void eval_log(T& result, const T& arg) }while(lim.compare(t2) < 0); } +template +const T& get_constant_log10() +{ + static T result; + static bool b = false; + if(!b) + { + typedef typename boost::multiprecision::detail::canonical::type ui_type; + T ten; + ten = ui_type(10u); + eval_log(result, ten); + } + + constant_initializer >::do_nothing(); + + return result; +} + +template +void eval_log10(T& result, const T& arg) +{ + eval_log(result, arg); + divide(result, get_constant_log10()); +} + template inline void eval_pow(T& result, const T& x, const T& a) { diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 13ac14c3..ce7413a8 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -679,7 +679,10 @@ inline void convert_to(long long* result, const gmp_float& val) if(!mpf_fits_slong_p(t.data())) { - *result = (std::numeric_limits::max)(); + if(get_sign(val) < 0) + *result = (std::numeric_limits::min)(); + else + *result = (std::numeric_limits::max)(); return; }; diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp index e75ed494..321364c9 100644 --- a/include/boost/multiprecision/mp_float.hpp +++ b/include/boost/multiprecision/mp_float.hpp @@ -2583,10 +2583,15 @@ inline void eval_ceil(mp_float& result, const mp_float& x) template inline void eval_trunc(mp_float& result, const mp_float& x) { - if(!x.isfinite() || x.isint()) + if(!x.isfinite()) { + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(x), 0, boost::math::policies::policy<>()).backend(); + return; + } + else if(x.isint()) + { result = x; - return; + return; } result = x.extract_integer_part(); } diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 78a0cc74..ff11fb42 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1553,6 +1553,12 @@ inline std::istream& operator >> (std::istream& is, mp_number& r) return is; } +template +inline void swap(mp_number& a, mp_number& b) +{ + a.swap(b); +} + }} // namespaces #endif diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 667f0ea1..8e82ab51 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -785,6 +785,12 @@ inline void eval_floor(mpfr_float_backend& result, const mpfr_float_ba template inline void eval_trunc(mpfr_float_backend& result, const mpfr_float_backend& val) { + int c = eval_fpclassify(val); + if(0 == mpfr_number_p(val.data())) + { + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(val), 0, boost::math::policies::policy<>()).backend(); + return; + } mpfr_trunc(result.data(), val.data()); } template @@ -848,6 +854,12 @@ inline void eval_log(mpfr_float_backend& result, const mpfr_float_back mpfr_log(result.data(), arg.data(), GMP_RNDN); } +template +inline void eval_log10(mpfr_float_backend& result, const mpfr_float_backend& arg) +{ + mpfr_log10(result.data(), arg.data(), GMP_RNDN); +} + template inline void eval_sin(mpfr_float_backend& result, const mpfr_float_backend& arg) { @@ -918,6 +930,16 @@ typedef mp_number > mpfr_float; namespace math{ +namespace tools{ + +template <> +inline int digits() +{ + return boost::multiprecision::detail::get_default_precision(); +} + +} + namespace lanczos{ template diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 7855a726..6a85b2f2 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -490,3 +490,35 @@ run ../example/mpfr_snips.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] ; run ../example/mp_float_snips.cpp ; + +run test_round.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : test_round_backend_concept ; + +run test_round.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : test_round_mpf50 ; + +run test_round.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_round_mpfr_50 ; + +run test_round.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + [ check-target-builds ../config//has_mpfr : : no ] + : test_round_mp_float ; + diff --git a/test/test_log.cpp b/test/test_log.cpp index 85c077a9..8c6e4b19 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -151,6 +151,7 @@ void test() T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; T tenth = 1; tenth /= 10; + T logten = log(T(10)); unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) @@ -166,6 +167,18 @@ void test() err = e.template convert_to(); if(err > max_err) max_err = err; + + val = boost::multiprecision::log10(tenth + pi * (100 * k) * (100 * k)); + e = relative_error(val, T(data[k] / logten)); + err = e.template convert_to(); + if(err > max_err) + max_err = err; + + val = boost::multiprecision::log10(1 / (tenth + pi * (100 * k) * (100 * k))); + e = relative_error(val, T(-data[k] / logten)); + err = e.template convert_to(); + if(err > max_err) + max_err = err; } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 10); diff --git a/test/test_round.cpp b/test/test_round.cpp new file mode 100644 index 00000000..52734b28 --- /dev/null +++ b/test/test_round.cpp @@ -0,0 +1,404 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_CHECK_THROW(x, EX)\ + try { x; BOOST_ERROR("Expected exception not thrown"); } \ + catch(const EX&){}\ + catch(...){ BOOST_ERROR("Incorrect exception type thrown"); } + + +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_BACKEND +# define TEST_MP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#ifdef TEST_MPFR_50 +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_MP_FLOAT +#include +#endif + +boost::mt19937 rng; + +template +T get_random() +{ + // + // Fill all the bits in T with random values, + // likewise set the exponent to a random value + // that will still fit inside a T, and always + // have a remainder as well as an integer part. + // + int bits = boost::math::tools::digits(); + int shift = 0; + int exponent = rng() % (bits - 4); + T result = 0; + while(bits > 0) + { + result += ldexp(static_cast(rng()), shift); + shift += std::numeric_limits::digits; + bits -= std::numeric_limits::digits; + } + return rng() & 1u ? -ldexp(frexp(result, &bits), exponent) : ldexp(frexp(result, &bits), exponent); +} + +template +void check_within_half(T a, U u) +{ + BOOST_MATH_STD_USING + if(fabs(a-u) > 0.5f) + { + BOOST_ERROR("Rounded result differed by more than 0.5 from the original"); + std::cerr << "Values were: " << std::setprecision(35) << std::setw(40) + << std::left << a << u << std::endl; + } + if((fabs(a - u) == 0.5f) && (fabs(static_cast(u)) < fabs(a))) + { + BOOST_ERROR("Rounded result was towards zero with boost::round"); + std::cerr << "Values were: " << std::setprecision(35) << std::setw(40) + << std::left << a << u << std::endl; + } +} + +// +// We may not have an abs overload for long long so provide a fall back: +// +template +inline T safe_abs(T const& v ...) +{ + return v < 0 ? -v : v; +} + +template +void check_trunc_result(T a, U u) +{ + BOOST_MATH_STD_USING + if(fabs(a-u) >= 1) + { + BOOST_ERROR("Rounded result differed by more than 1 from the original"); + std::cerr << "Values were: " << std::setprecision(35) << std::setw(40) + << std::left << a << u << std::endl; + } + if(abs(a) < safe_abs(u)) + { + BOOST_ERROR("Truncated result had larger absolute value than the original"); + std::cerr << "Values were: " << std::setprecision(35) << std::setw(40) + << std::left << a << u << std::endl; + } + if(fabs(static_cast(u)) > fabs(a)) + { + BOOST_ERROR("Rounded result was away from zero with boost::trunc"); + std::cerr << "Values were: " << std::setprecision(35) << std::setw(40) + << std::left << a << u << std::endl; + } +} + +template +void check_modf_result(T a, T fract, U ipart) +{ + BOOST_MATH_STD_USING + if(fract + ipart != a) + { + BOOST_ERROR("Fractional and integer results do not add up to the original value"); + std::cerr << "Values were: " << std::setprecision(35) << " " + << std::left << a << ipart << " " << fract << std::endl; + } + if((boost::math::sign(a) != boost::math::sign(fract)) && boost::math::sign(fract)) + { + BOOST_ERROR("Original and fractional parts have differing signs"); + std::cerr << "Values were: " << std::setprecision(35) << " " + << std::left << a << ipart << " " << fract << std::endl; + } + if((boost::math::sign(a) != boost::math::sign(ipart)) && boost::math::sign(ipart)) + { + BOOST_ERROR("Original and integer parts have differing signs"); + std::cerr << "Values were: " << std::setprecision(35) << " " + << std::left << a << ipart << " " << ipart << std::endl; + } + if(fabs(a-ipart) >= 1) + { + BOOST_ERROR("Rounded result differed by more than 1 from the original"); + std::cerr << "Values were: " << std::setprecision(35) << std::setw(40) + << std::left << a << ipart << std::endl; + } +} + +template +void test() +{ + BOOST_MATH_STD_USING + + for(int i = 0; i < 1000; ++i) + { + T arg = get_random(); + T r = round(arg); + check_within_half(arg, r); + BOOST_TEST(r == round(arg + 0)); + r = trunc(arg); + check_trunc_result(arg, r); + BOOST_TEST(r == trunc(arg + 0)); + T frac = modf(arg, &r); + check_modf_result(arg, frac, r); + + if(abs(r) < (std::numeric_limits::max)()) + { + int i = iround(arg); + check_within_half(arg, i); + BOOST_TEST(i == iround(arg + 0)); + i = itrunc(arg); + check_trunc_result(arg, i); + BOOST_TEST(i == itrunc(arg + 0)); + r = modf(arg, &i); + check_modf_result(arg, r, i); + } + if(abs(r) < (std::numeric_limits::max)()) + { + long l = lround(arg); + check_within_half(arg, l); + BOOST_TEST(l == lround(arg + 0)); + l = ltrunc(arg); + check_trunc_result(arg, l); + BOOST_TEST(l == ltrunc(arg + 0)); + r = modf(arg, &l); + check_modf_result(arg, r, l); + } + +#ifdef BOOST_HAS_LONG_LONG + if(abs(r) < (std::numeric_limits::max)()) + { + boost::long_long_type ll = llround(arg); + check_within_half(arg, ll); + BOOST_TEST(ll == llround(arg + 0)); + ll = lltrunc(arg); + check_trunc_result(arg, ll); + BOOST_TEST(ll == lltrunc(arg + 0)); + r = modf(arg, &ll); + check_modf_result(arg, r, ll); + } +#endif + } + // + // Test boundary cases: + // + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + int si = iround(static_cast((std::numeric_limits::max)())); + check_within_half(static_cast((std::numeric_limits::max)()), si); + BOOST_TEST(si == iround(static_cast((std::numeric_limits::max)()) + 0)); + si = iround(static_cast((std::numeric_limits::min)())); + check_within_half(static_cast((std::numeric_limits::min)()), si); + BOOST_TEST(si == iround(static_cast((std::numeric_limits::min)()) + 0)); + si = itrunc(static_cast((std::numeric_limits::max)())); + check_trunc_result(static_cast((std::numeric_limits::max)()), si); + BOOST_TEST(si == itrunc(static_cast((std::numeric_limits::max)()) + 0)); + si = itrunc(static_cast((std::numeric_limits::min)())); + check_trunc_result(static_cast((std::numeric_limits::min)()), si); + BOOST_TEST(si == itrunc(static_cast((std::numeric_limits::min)()) + 0)); + + si = iround(static_cast((std::numeric_limits::max)() - 1)); + check_within_half(static_cast((std::numeric_limits::max)() - 1), si); + si = iround(static_cast((std::numeric_limits::min)() + 1)); + check_within_half(static_cast((std::numeric_limits::min)() + 1), si); + si = itrunc(static_cast((std::numeric_limits::max)() - 1)); + check_trunc_result(static_cast((std::numeric_limits::max)() - 1), si); + si = itrunc(static_cast((std::numeric_limits::min)() + 1)); + check_trunc_result(static_cast((std::numeric_limits::min)() + 1), si); + } + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + long k = lround(static_cast((std::numeric_limits::max)())); + check_within_half(static_cast((std::numeric_limits::max)()), k); + BOOST_TEST(k == lround(static_cast((std::numeric_limits::max)()) + 0)); + k = lround(static_cast((std::numeric_limits::min)())); + check_within_half(static_cast((std::numeric_limits::min)()), k); + BOOST_TEST(k == lround(static_cast((std::numeric_limits::min)()) + 0)); + k = ltrunc(static_cast((std::numeric_limits::max)())); + check_trunc_result(static_cast((std::numeric_limits::max)()), k); + BOOST_TEST(k == ltrunc(static_cast((std::numeric_limits::max)()) + 0)); + k = ltrunc(static_cast((std::numeric_limits::min)())); + check_trunc_result(static_cast((std::numeric_limits::min)()), k); + BOOST_TEST(k == ltrunc(static_cast((std::numeric_limits::min)()) + 0)); + + k = lround(static_cast((std::numeric_limits::max)() - 1)); + check_within_half(static_cast((std::numeric_limits::max)() - 1), k); + k = lround(static_cast((std::numeric_limits::min)() + 1)); + check_within_half(static_cast((std::numeric_limits::min)() + 1), k); + k = ltrunc(static_cast((std::numeric_limits::max)() - 1)); + check_trunc_result(static_cast((std::numeric_limits::max)() - 1), k); + k = ltrunc(static_cast((std::numeric_limits::min)() + 1)); + check_trunc_result(static_cast((std::numeric_limits::min)() + 1), k); + } +#ifndef BOOST_NO_LONG_LONG + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + boost::long_long_type j = llround(static_cast((std::numeric_limits::max)())); + check_within_half(static_cast((std::numeric_limits::max)()), j); + BOOST_TEST(j == llround(static_cast((std::numeric_limits::max)()) + 0)); + j = llround(static_cast((std::numeric_limits::min)())); + check_within_half(static_cast((std::numeric_limits::min)()), j); + BOOST_TEST(j == llround(static_cast((std::numeric_limits::min)()) + 0)); + j = lltrunc(static_cast((std::numeric_limits::max)())); + check_trunc_result(static_cast((std::numeric_limits::max)()), j); + BOOST_TEST(j == lltrunc(static_cast((std::numeric_limits::max)()) + 0)); + j = lltrunc(static_cast((std::numeric_limits::min)())); + check_trunc_result(static_cast((std::numeric_limits::min)()), j); + BOOST_TEST(j == lltrunc(static_cast((std::numeric_limits::min)()) + 0)); + + j = llround(static_cast((std::numeric_limits::max)() - 1)); + check_within_half(static_cast((std::numeric_limits::max)() - 1), j); + j = llround(static_cast((std::numeric_limits::min)() + 1)); + check_within_half(static_cast((std::numeric_limits::min)() + 1), j); + j = lltrunc(static_cast((std::numeric_limits::max)() - 1)); + check_trunc_result(static_cast((std::numeric_limits::max)() - 1), j); + j = lltrunc(static_cast((std::numeric_limits::min)() + 1)); + check_trunc_result(static_cast((std::numeric_limits::min)() + 1), j); + } +#endif + // + // Finish off by testing the error handlers: + // + BOOST_CHECK_THROW(static_cast(iround(static_cast(1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(iround(static_cast(-1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lround(static_cast(1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lround(static_cast(-1e20))), boost::math::rounding_error); +#ifdef BOOST_HAS_LONG_LONG + BOOST_CHECK_THROW(static_cast(llround(static_cast(1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(llround(static_cast(-1e20))), boost::math::rounding_error); +#endif + if(std::numeric_limits::has_infinity) + { + BOOST_CHECK_THROW(static_cast(round(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(iround(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(iround(-std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lround(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lround(-std::numeric_limits::infinity())), boost::math::rounding_error); + #ifdef BOOST_HAS_LONG_LONG + BOOST_CHECK_THROW(static_cast(llround(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(llround(-std::numeric_limits::infinity())), boost::math::rounding_error); + #endif + } + if(std::numeric_limits::has_quiet_NaN) + { + BOOST_CHECK_THROW(static_cast(round(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(iround(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lround(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + #ifdef BOOST_HAS_LONG_LONG + BOOST_CHECK_THROW(static_cast(llround(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + #endif + } + BOOST_CHECK_THROW(static_cast(itrunc(static_cast(1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(itrunc(static_cast(-1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(ltrunc(static_cast(1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(ltrunc(static_cast(-1e20))), boost::math::rounding_error); +#ifdef BOOST_HAS_LONG_LONG + BOOST_CHECK_THROW(static_cast(lltrunc(static_cast(1e20))), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lltrunc(static_cast(-1e20))), boost::math::rounding_error); +#endif + if(std::numeric_limits::has_infinity) + { + BOOST_CHECK_THROW(static_cast(trunc(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(itrunc(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(itrunc(-std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(ltrunc(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(ltrunc(-std::numeric_limits::infinity())), boost::math::rounding_error); + #ifdef BOOST_HAS_LONG_LONG + BOOST_CHECK_THROW(static_cast(lltrunc(std::numeric_limits::infinity())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lltrunc(-std::numeric_limits::infinity())), boost::math::rounding_error); + #endif + } + if(std::numeric_limits::has_quiet_NaN) + { + BOOST_CHECK_THROW(static_cast(trunc(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(itrunc(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(ltrunc(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + #ifdef BOOST_HAS_LONG_LONG + BOOST_CHECK_THROW(static_cast(lltrunc(std::numeric_limits::quiet_NaN())), boost::math::rounding_error); + #endif + } + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + BOOST_CHECK_THROW(static_cast(itrunc(static_cast((std::numeric_limits::max)()) + 1)), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(itrunc(static_cast((std::numeric_limits::min)()) - 1)), boost::math::rounding_error); + } + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + BOOST_CHECK_THROW(static_cast(ltrunc(static_cast((std::numeric_limits::max)()) + 1)), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(ltrunc(static_cast((std::numeric_limits::min)()) - 1)), boost::math::rounding_error); + } +#ifndef BOOST_NO_LONG_LONG + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + BOOST_CHECK_THROW(static_cast(lltrunc(static_cast((std::numeric_limits::max)()) + 1)), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lltrunc(static_cast((std::numeric_limits::min)()) - 1)), boost::math::rounding_error); + } +#endif + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + BOOST_CHECK_THROW(static_cast(iround(static_cast((std::numeric_limits::max)()) + 1)), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(iround(static_cast((std::numeric_limits::min)()) - 1)), boost::math::rounding_error); + } + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + BOOST_CHECK_THROW(static_cast(lround(static_cast((std::numeric_limits::max)()) + 1)), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(lround(static_cast((std::numeric_limits::min)()) - 1)), boost::math::rounding_error); + } +#ifndef BOOST_NO_LONG_LONG + if(std::numeric_limits::digits >= std::numeric_limits::digits) + { + BOOST_CHECK_THROW(static_cast(llround(static_cast((std::numeric_limits::max)()) + 1)), boost::math::rounding_error); + BOOST_CHECK_THROW(static_cast(llround(static_cast((std::numeric_limits::min)()) - 1)), boost::math::rounding_error); + } +#endif +} + +int main() +{ +#ifdef TEST_MPF_50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_MP_FLOAT + test(); + test(); +#endif +#ifdef TEST_BACKEND + test >(); +#endif + return boost::report_errors(); +} + + + + + From 47724a42214cc0beb45ef5bcca1f170856946f98 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 12 Nov 2011 12:15:04 +0000 Subject: [PATCH 057/256] Fixes for bugs in mp_float. Fix constant initialization. Add some instrumentation code. Make mp_exp constructor explicit. Remove some dead code. Note mp_float division has outstanding bugs still!! [SVN r75452] --- .../multiprecision/detail/default_ops.hpp | 10 + .../detail/functions/constants.hpp | 12 + .../multiprecision/detail/functions/pow.hpp | 6 +- .../multiprecision/detail/mp_number_base.hpp | 22 +- include/boost/multiprecision/mp_float.hpp | 24 +- include/boost/multiprecision/mpfr.hpp | 1 - test/Jamfile.v2 | 47 ++- test/test_fpclassify.cpp | 324 ++++++++++++++++++ test/test_round.cpp | 1 - 9 files changed, 417 insertions(+), 30 deletions(-) create mode 100644 test/test_fpclassify.cpp diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 775a3b7d..2e2770fa 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -14,6 +14,16 @@ #include #include +#ifndef INSTRUMENT_BACKEND +#ifndef BOOST_MP_INSTRUMENT +#define INSTRUMENT_BACKEND(x) +#else +#define INSTRUMENT_BACKEND(x)\ + std::cout << BOOST_STRINGIZE(x) << " = " << x.str(0, true) << std::endl; +#endif +#endif + + namespace boost{ namespace multiprecision{ namespace default_ops{ // diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index e1e6a7b2..1c1c1d06 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -40,7 +40,10 @@ void calc_log2(T& num, unsigned digits) } multiply(denom, ui_type(4)); multiply(num, ui_type(3)); + INSTRUMENT_BACKEND(denom); + INSTRUMENT_BACKEND(num); divide(num, denom); + INSTRUMENT_BACKEND(num); } template @@ -142,7 +145,10 @@ const T& get_constant_ln2() static T result; static bool b = false; if(!b) + { calc_log2(result, std::numeric_limits >::digits); + b = true; + } constant_initializer >::do_nothing(); @@ -155,7 +161,10 @@ const T& get_constant_e() static T result; static bool b = false; if(!b) + { calc_e(result, std::numeric_limits >::digits); + b = true; + } constant_initializer >::do_nothing(); @@ -168,7 +177,10 @@ const T& get_constant_pi() static T result; static bool b = false; if(!b) + { calc_pi(result, std::numeric_limits >::digits); + b = true; + } constant_initializer >::do_nothing(); diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index fe8ab3ab..ad4629d6 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -227,7 +227,7 @@ void eval_exp(T& result, const T& x) xx.negate(); // Check the range of the argument. - static const canonical_exp_type maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? std::numeric_limits::max() : std::numeric_limits >::max_exponent; + static const canonical_exp_type maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? (std::numeric_limits::max)() : std::numeric_limits >::max_exponent; if(xx.compare(maximum_arg_for_exp) >= 0) { @@ -356,6 +356,7 @@ void eval_log(T& result, const T& arg) } multiply(result, get_constant_ln2(), canonical_exp_type(e)); + INSTRUMENT_BACKEND(result); subtract(t, ui_type(1)); /* -0.3 <= t <= 0.3 */ if(!alternate) t.negate(); /* 0 <= t <= 0.33333 */ @@ -371,6 +372,7 @@ void eval_log(T& result, const T& arg) multiply(lim, result, std::numeric_limits >::epsilon().backend()); if(get_sign(lim) < 0) lim.negate(); + INSTRUMENT_BACKEND(lim); ui_type k = 1; do @@ -378,10 +380,12 @@ void eval_log(T& result, const T& arg) ++k; multiply(pow, t); divide(t2, pow, k); + INSTRUMENT_BACKEND(t2); if(alternate && ((k & 1) != 0)) add(result, t2); else subtract(result, t2); + INSTRUMENT_BACKEND(result); }while(lim.compare(t2) < 0); } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 39fd8500..847ae9b3 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -220,7 +220,7 @@ struct mp_exp mp_exp(const Arg1& a) : arg(a) {} - left_type left()const { return arg; } + left_type left()const { return left_type(arg); } const Arg1& left_ref()const{ return arg; } @@ -243,7 +243,7 @@ struct mp_exp typedef Arg1 result_type; typedef terminal tag_type; - mp_exp(const Arg1& a) : arg(a) {} + explicit mp_exp(const Arg1& a) : arg(a) {} const Arg1& value()const { return arg; } @@ -271,8 +271,8 @@ struct mp_exp mp_exp(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {} - left_type left()const { return arg1; } - right_type right()const { return arg2; } + left_type left()const { return left_type(arg1); } + right_type right()const { return right_type(arg2); } const Arg1& left_ref()const{ return arg1; } const Arg2& right_ref()const{ return arg2; } @@ -308,9 +308,9 @@ struct mp_exp mp_exp(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {} - left_type left()const { return arg1; } - middle_type middle()const { return arg2; } - right_type right()const { return arg3; } + left_type left()const { return left_type(arg1); } + middle_type middle()const { return middle_type(arg2); } + right_type right()const { return right_type(arg3); } const Arg1& left_ref()const{ return arg1; } const Arg2& middle_ref()const{ return arg2; } const Arg3& right_ref()const{ return arg3; } @@ -343,13 +343,13 @@ inline const mp_number& operator + (const mp_number& v) { return v; } template inline const detail::mp_exp& operator + (const detail::mp_exp& v) { return v; } template -inline detail::mp_exp > operator - (const mp_number& v) { return v; } +inline detail::mp_exp > operator - (const mp_number& v) { return detail::mp_exp >(v); } template -inline detail::mp_exp > operator - (const detail::mp_exp& v) { return v; } +inline detail::mp_exp > operator - (const detail::mp_exp& v) { return detail::mp_exp >(v); } template -inline detail::mp_exp > operator ~ (const mp_number& v) { return v; } +inline detail::mp_exp > operator ~ (const mp_number& v) { return detail::mp_exp >(v); } template -inline detail::mp_exp > operator ~ (const detail::mp_exp& v) { return v; } +inline detail::mp_exp > operator ~ (const detail::mp_exp& v) { return detail::mp_exp >(v); } // // Then addition: // diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp index 321364c9..dc7fd375 100644 --- a/include/boost/multiprecision/mp_float.hpp +++ b/include/boost/multiprecision/mp_float.hpp @@ -194,7 +194,7 @@ public: init.do_nothing(); static bool init = false; static const std::string str_max = std::string("9." + std::string(static_cast(mp_float_max_digits10), static_cast('9'))) - + std::string("e+" + boost::lexical_cast(mp_float_max_exp)); + + std::string("e+" + boost::lexical_cast(mp_float_max_exp10)); static mp_float val_max; if(!init) { @@ -212,7 +212,7 @@ public: if(!init) { init = true; - val_min = std::string("1.0e" + boost::lexical_cast(mp_float_min_exp)).c_str(); + val_min = std::string("1.0e" + boost::lexical_cast(mp_float_min_exp10)).c_str(); } return val_min; } @@ -285,7 +285,7 @@ public: static const mp_float& eps() { init.do_nothing(); - static mp_float val(1.0, 1 - Digits10); + static mp_float val(1.0, 1 - (int)Digits10); return val; } @@ -857,6 +857,14 @@ mp_float& mp_float::operator/=(const mp_float& v) } else { + if(iszero()) + { + if(v.isnan() || v.iszero()) + { + return *this = v; + } + return *this; + } mp_float t(v); t.calculate_inv(); return operator*=(t); @@ -1098,7 +1106,7 @@ mp_float& mp_float::calculate_inv() // is used. During the iterative steps, the precision of the calculation is limited // to the minimum required in order to minimize the run-time. - static const boost::int32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); + static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= static_cast(2)) { @@ -1908,7 +1916,7 @@ bool mp_float::rd_string(const char* const s) } // Check for overflow... - if(exp > mp_float_max_exp) + if(exp > mp_float_max_exp10) { const bool b_result_is_neg = neg; @@ -1918,9 +1926,9 @@ bool mp_float::rd_string(const char* const s) } // ...and check for underflow. - if(exp <= mp_float_min_exp) + if(exp <= mp_float_min_exp10) { - if(exp == mp_float_min_exp) + if(exp == mp_float_min_exp10) { // Check for identity with the minimum value. mp_float test = *this; @@ -2661,7 +2669,7 @@ namespace std static const bool is_bounded = true; static const bool is_modulo = false; static const bool is_iec559 = false; - static const int digits = boost::multiprecision::mp_float::mp_float_digits; + static const int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); static const int digits10 = boost::multiprecision::mp_float::mp_float_digits10; static const int max_digits10 = boost::multiprecision::mp_float::mp_float_max_digits10; static const boost::int64_t min_exponent = boost::multiprecision::mp_float::mp_float_min_exp; // Type differs from int. diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 8e82ab51..80752d1c 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -785,7 +785,6 @@ inline void eval_floor(mpfr_float_backend& result, const mpfr_float_ba template inline void eval_trunc(mpfr_float_backend& result, const mpfr_float_backend& val) { - int c = eval_fpclassify(val); if(0 == mpfr_number_p(val.data())) { result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(val), 0, boost::math::policies::policy<>()).backend(); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 6a85b2f2..843e64cd 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -156,7 +156,7 @@ run mp_number_concept_check.cpp mpfr : # requirements TEST_MPFR_50 [ check-target-builds ../config//has_mpfr : : no ] - : big_number_concept_check_mpfr_50 ; + : mp_number_concept_check_mpfr_50 ; run mp_number_concept_check.cpp mpfr : # command line @@ -164,7 +164,7 @@ run mp_number_concept_check.cpp mpfr : # requirements TEST_MPFR_6 [ check-target-builds ../config//has_mpfr : : no ] - : big_number_concept_check_mpfr_6 ; + : mp_number_concept_check_mpfr_6 ; run mp_number_concept_check.cpp mpfr : # command line @@ -172,7 +172,7 @@ run mp_number_concept_check.cpp mpfr : # requirements TEST_MPFR_15 [ check-target-builds ../config//has_mpfr : : no ] - : big_number_concept_check_mpfr_15 ; + : mp_number_concept_check_mpfr_15 ; run mp_number_concept_check.cpp mpfr : # command line @@ -180,7 +180,7 @@ run mp_number_concept_check.cpp mpfr : # requirements TEST_MPFR_17 [ check-target-builds ../config//has_mpfr : : no ] - : big_number_concept_check_mpfr_17 ; + : mp_number_concept_check_mpfr_17 ; run mp_number_concept_check.cpp mpfr : # command line @@ -188,7 +188,7 @@ run mp_number_concept_check.cpp mpfr : # requirements TEST_MPFR_30 [ check-target-builds ../config//has_mpfr : : no ] - : big_number_concept_check_mpfr_30 ; + : mp_number_concept_check_mpfr_30 ; run mp_number_concept_check.cpp gmp : # command line @@ -196,21 +196,21 @@ run mp_number_concept_check.cpp gmp : # requirements TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] - : big_number_concept_check_mpf50 ; + : mp_number_concept_check_mpf50 ; run mp_number_concept_check.cpp : # command line : # input files : # requirements TEST_MP_FLOAT - : big_number_concept_check_mp_float ; + : mp_number_concept_check_mp_float ; run mp_number_concept_check.cpp : # command line : # input files : # requirements TEST_BACKEND - : big_number_concept_check_backend_concept ; + : mp_number_concept_check_backend_concept ; run test_exp.cpp gmp : # command line @@ -522,3 +522,34 @@ run test_round.cpp [ check-target-builds ../config//has_mpfr : : no ] : test_round_mp_float ; +run test_fpclassify.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : test_fpclassify_backend_concept ; + +run test_fpclassify.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : test_fpclassify_mpf50 ; + +run test_fpclassify.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_fpclassify_mpfr_50 ; + +run test_fpclassify.cpp + : # command line + : # input files + : # requirements + TEST_MP_FLOAT + [ check-target-builds ../config//has_mpfr : : no ] + : test_fpclassify_mp_float ; + diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp new file mode 100644 index 00000000..044f8462 --- /dev/null +++ b/test/test_fpclassify.cpp @@ -0,0 +1,324 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_BACKEND +# define TEST_MP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#ifdef TEST_MPFR_50 +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_MP_FLOAT +#include +#endif + +#ifdef _MSC_VER +#pragma warning(disable: 4127) // conditional expression is constant +#endif + +#define BOOST_CHECK_EQUAL(x, y)\ + if(x != y)\ + {\ + BOOST_ERROR("Values were not equal.");\ + BOOST_LIGHTWEIGHT_TEST_OSTREAM << x << " != " << y << std::endl;\ + } + +const char* method_name(const boost::math::detail::native_tag&) +{ + return "Native"; +} + +const char* method_name(const boost::math::detail::generic_tag&) +{ + return "Generic (with numeric limits)"; +} + +const char* method_name(const boost::math::detail::generic_tag&) +{ + return "Generic (without numeric limits)"; +} + +const char* method_name(const boost::math::detail::ieee_tag&) +{ + return "IEEE std"; +} + +const char* method_name(const boost::math::detail::ieee_copy_all_bits_tag&) +{ + return "IEEE std, copy all bits"; +} + +const char* method_name(const boost::math::detail::ieee_copy_leading_bits_tag&) +{ + return "IEEE std, copy leading bits"; +} + +template +void test() +{ + typedef typename boost::math::detail::fp_traits::type traits; + typedef typename traits::method method; + + T t = 2; + T u = 2; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + if(std::numeric_limits::is_specialized) + { + t = (std::numeric_limits::max)(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + t = (std::numeric_limits::min)(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + } + if(std::numeric_limits::has_denorm) + { + t = (std::numeric_limits::min)(); + t /= 2; + if(t != 0) + { + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_SUBNORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_SUBNORMAL); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + } + t = std::numeric_limits::denorm_min(); + if((t != 0) && (t < (std::numeric_limits::min)())) + { + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_SUBNORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_SUBNORMAL); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + } + } + else + { + std::cout << "Denormalised forms not tested" << std::endl; + } + t = 0; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_ZERO); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_ZERO); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + t /= -u; // create minus zero if it exists + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_ZERO); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_ZERO); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + // infinity: + if(std::numeric_limits::has_infinity) + { + // At least one std::numeric_limits::infinity)() returns zero + // (Compaq true64 cxx), hence the check. + t = (std::numeric_limits::infinity)(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); +#if !defined(__BORLANDC__) && !(defined(__DECCXX) && !defined(_IEEE_FP)) + // divide by zero on Borland triggers a C++ exception :-( + // divide by zero on Compaq CXX triggers a C style signal :-( + t = 2; + u = 0; + t /= u; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); + t = -2; + t /= u; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0)); +#else + std::cout << "Infinities from divide by zero not tested" << std::endl; +#endif + } + else + { + std::cout << "Infinity not tested" << std::endl; + } +#ifndef __BORLANDC__ + // NaN's: + // Note that Borland throws an exception if we even try to obtain a Nan + // by calling std::numeric_limits::quiet_NaN() !!!!!!! + if(std::numeric_limits::has_quiet_NaN) + { + t = std::numeric_limits::quiet_NaN(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NAN); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NAN); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + } + else + { + std::cout << "Quiet NaN's not tested" << std::endl; + } + if(std::numeric_limits::has_signaling_NaN) + { + t = std::numeric_limits::signaling_NaN(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NAN); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NAN); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false); + BOOST_CHECK_EQUAL((::boost::math::isnan)(t), true); + BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), true); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false); + BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false); + } + else + { + std::cout << "Signaling NaN's not tested" << std::endl; + } +#endif +} + +int main() +{ + BOOST_MATH_CONTROL_FP; + // start by printing some information: +#ifdef isnan + std::cout << "Platform has isnan macro." << std::endl; +#endif +#ifdef fpclassify + std::cout << "Platform has fpclassify macro." << std::endl; +#endif +#ifdef BOOST_HAS_FPCLASSIFY + std::cout << "Platform has FP_NORMAL macro." << std::endl; +#endif + std::cout << "FP_ZERO: " << (int)FP_ZERO << std::endl; + std::cout << "FP_NORMAL: " << (int)FP_NORMAL << std::endl; + std::cout << "FP_INFINITE: " << (int)FP_INFINITE << std::endl; + std::cout << "FP_NAN: " << (int)FP_NAN << std::endl; + std::cout << "FP_SUBNORMAL: " << (int)FP_SUBNORMAL << std::endl; + +#ifdef TEST_MPF_50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_MP_FLOAT + test(); + test(); +#endif +#ifdef TEST_BACKEND + test >(); +#endif + return boost::report_errors(); +} + diff --git a/test/test_round.cpp b/test/test_round.cpp index 52734b28..31312c2f 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -4,7 +4,6 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include -#include #include #include #include From c8eda6845ee1e4d422c4b212cb862b40591cd58f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 12 Nov 2011 13:15:33 +0000 Subject: [PATCH 058/256] Search and replace - rename mp_float cpp_float. [SVN r75453] --- example/mp_float_snips.cpp | 10 +- include/boost/multiprecision/cpp_float.hpp | 2726 ++++++++++++++++++++ include/boost/multiprecision/mp_float.hpp | 986 +++---- test/Jamfile.v2 | 66 +- test/linpack-benchmark.cpp | 16 +- test/mp_number_concept_check.cpp | 18 +- test/test_acos.cpp | 14 +- test/test_arithmetic.cpp | 12 +- test/test_asin.cpp | 14 +- test/test_atan.cpp | 14 +- test/test_cos.cpp | 14 +- test/test_cosh.cpp | 14 +- test/test_exp.cpp | 14 +- test/test_fpclassify.cpp | 14 +- test/test_log.cpp | 18 +- test/test_numeric_limits.cpp | 14 +- test/test_pow.cpp | 14 +- test/test_round.cpp | 14 +- test/test_sin.cpp | 17 +- test/test_sinh.cpp | 14 +- test/test_tanh.cpp | 14 +- 21 files changed, 3386 insertions(+), 651 deletions(-) create mode 100644 include/boost/multiprecision/cpp_float.hpp diff --git a/example/mp_float_snips.cpp b/example/mp_float_snips.cpp index 0b2df0d0..8d3e5c25 100644 --- a/example/mp_float_snips.cpp +++ b/example/mp_float_snips.cpp @@ -3,19 +3,19 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ -#include +#include #include void t1() { - //[mp_float_eg - //=#include + //[cpp_float_eg + //=#include using namespace boost::multiprecision; // Operations at fixed precision and full numeric_limits support: - mp_float_100 b = 2; - std::cout << std::numeric_limits::digits << std::endl; + cpp_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; std::cout << log(b) << std::endl; // print log(2) //] } diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp new file mode 100644 index 00000000..13c41251 --- /dev/null +++ b/include/boost/multiprecision/cpp_float.hpp @@ -0,0 +1,2726 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +// + +#ifndef BOOST_MP_EFX_BACKEND_HPP +#define BOOST_MP_EFX_BACKEND_HPP + +#include +#include +#include + +// +// Headers required for Boost.Math integration: +// +#include + +namespace boost{ +namespace multiprecision{ + +template +class cpp_float +{ +public: + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list real_types; + typedef boost::int64_t exponent_type; + + + static const boost::int32_t mp_radix = 10; + static const boost::int32_t cpp_float_digits = Digits10; + + static const boost::int32_t cpp_float_digits10_setting = Digits10; + static const boost::int32_t cpp_float_digits10_limit = boost::integer_traits::const_max; + static const boost::int32_t cpp_float_digits10 = ((cpp_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_float_digits10_setting > cpp_float_digits10_limit) ? cpp_float_digits10_limit : cpp_float_digits10_setting)); + static const boost::int32_t cpp_float_digits10_extra = static_cast(((static_cast(cpp_float_digits10) * 15LL) + 50LL) / 100LL); + static const boost::int32_t cpp_float_max_digits10 = static_cast(cpp_float_digits10 + ((cpp_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_float_digits10_extra))); + static const boost::int64_t cpp_float_max_exp = static_cast(+9223372036854775795LL); + static const boost::int64_t cpp_float_min_exp = static_cast(-9223372036854775795LL); + static const boost::int64_t cpp_float_max_exp10 = static_cast(+3063937869882635616LL); // Approx. [cpp_float_max_exp / log10(2)], also an even multiple of 8 + static const boost::int64_t cpp_float_min_exp10 = static_cast(-3063937869882635616LL); + static const boost::int32_t mp_elem_digits10 = static_cast(8); + +private: + static const boost::int32_t cpp_float_digits10_num_base = static_cast((cpp_float_max_digits10 / mp_elem_digits10) + (((cpp_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); + static const boost::int32_t mp_elem_number = static_cast(cpp_float_digits10_num_base + 2); + static const boost::int32_t mp_elem_mask = static_cast(100000000); + + typedef enum enum_fpclass + { + mp_finite, + mp_inf, + mp_NaN + } + t_fpclass; + + typedef boost::array array_type; + + array_type data; + boost::int64_t exp; + bool neg; + t_fpclass fpclass; + boost::int32_t prec_elem; + + // + // Special values constructor: + // + cpp_float(t_fpclass c) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (c), + prec_elem(mp_elem_number) { } + + // + // Static data initializer: + // + struct initializer + { + initializer() + { + cpp_float::nan(); + cpp_float::inf(); + (cpp_float::min)(); + (cpp_float::max)(); + cpp_float::zero(); + cpp_float::one(); + cpp_float::two(); + cpp_float::half(); + cpp_float::double_min(); + cpp_float::double_max(); + cpp_float::long_double_max(); + cpp_float::long_double_min(); + cpp_float::long_long_max(); + cpp_float::long_long_min(); + cpp_float::ulong_long_max(); + cpp_float::eps(); + cpp_float::pow2(0); + } + void do_nothing(){} + }; + + static initializer init; + +public: + // Constructors + cpp_float() : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) { } + + cpp_float(const char* s) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + *this = s; + } + + template + cpp_float(I i, typename enable_if >::type* = 0) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + from_unsigned_long_long(i); + } + + template + cpp_float(I i, typename enable_if >::type* = 0) : + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + if(i < 0) + { + from_unsigned_long_long(-i); + negate(); + } + else + from_unsigned_long_long(i); + } + + cpp_float(const cpp_float& f) : + data (f.data), + exp (f.exp), + neg (f.neg), + fpclass (f.fpclass), + prec_elem(f.prec_elem) { } + + template + cpp_float(const F val, typename enable_if >::type* = 0): + data(), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) + { + *this = val; + } + + cpp_float(const double val, long long exponent); + + // Specific special values. + static const cpp_float& nan() + { + static const cpp_float val(mp_NaN); + init.do_nothing(); + return val; + } + static const cpp_float& inf() + { + static const cpp_float val(mp_inf); + init.do_nothing(); + return val; + } + static const cpp_float& (max)() + { + init.do_nothing(); + static bool init = false; + static const std::string str_max = std::string("9." + std::string(static_cast(cpp_float_max_digits10), static_cast('9'))) + + std::string("e+" + boost::lexical_cast(cpp_float_max_exp10)); + static cpp_float val_max; + if(!init) + { + init = true; + val_max = str_max.c_str(); + } + return val_max; + } + + static const cpp_float& (min)() + { + init.do_nothing(); + static bool init = false; + static cpp_float val_min; + if(!init) + { + init = true; + val_min = std::string("1.0e" + boost::lexical_cast(cpp_float_min_exp10)).c_str(); + } + return val_min; + } + static const cpp_float& zero() + { + init.do_nothing(); + static cpp_float val(static_cast(0u)); + return val; + } + static const cpp_float& one() + { + init.do_nothing(); + static cpp_float val(static_cast(1u)); + return val; + } + static const cpp_float& two() + { + init.do_nothing(); + static cpp_float val(static_cast(2u)); + return val; + } + static const cpp_float& half() + { + init.do_nothing(); + static cpp_float val(0.5L); + return val; + } + static const cpp_float& double_min() + { + init.do_nothing(); + static cpp_float val(static_cast((std::numeric_limits::min)())); + return val; + } + static const cpp_float& double_max() + { + init.do_nothing(); + static cpp_float val(static_cast((std::numeric_limits::max)())); + return val; + } + static const cpp_float& long_double_min() + { + init.do_nothing(); + static cpp_float val((std::numeric_limits::min)()); + return val; + } + static const cpp_float& long_double_max() + { + init.do_nothing(); + static cpp_float val((std::numeric_limits::max)()); + return val; + } + static const cpp_float& long_long_max() + { + init.do_nothing(); + static cpp_float val((std::numeric_limits::max)()); + return val; + } + static const cpp_float& long_long_min() + { + init.do_nothing(); + static cpp_float val((std::numeric_limits::min)()); + return val; + } + static const cpp_float& ulong_long_max() + { + init.do_nothing(); + static cpp_float val((std::numeric_limits::max)()); + return val; + } + static const cpp_float& eps() + { + init.do_nothing(); + static cpp_float val(1.0, 1 - (int)Digits10); + return val; + } + + // Basic operations. + cpp_float& operator= (const cpp_float& v) + { + data = v.data; + exp = v.exp; + neg = v.neg; + fpclass = v.fpclass; + prec_elem = v.prec_elem; + return *this; + } + cpp_float& operator= (long long v) + { + if(v < 0) + { + from_unsigned_long_long(-v); + negate(); + } + else + from_unsigned_long_long(v); + return *this; + } + cpp_float& operator= (unsigned long long v) + { + from_unsigned_long_long(v); + return *this; + } + cpp_float& operator= (long double v); + cpp_float& operator= (const char* v) + { + rd_string(v); + return *this; + } + + cpp_float& operator+=(const cpp_float& v); + cpp_float& operator-=(const cpp_float& v); + cpp_float& operator*=(const cpp_float& v); + cpp_float& operator/=(const cpp_float& v); + + cpp_float& add_unsigned_long_long(const unsigned long long n) + { + cpp_float t; + t.from_unsigned_long_long(n); + return *this += t; + } + cpp_float& sub_unsigned_long_long(const unsigned long long n) + { + cpp_float t; + t.from_unsigned_long_long(n); + return *this -= t; + } + cpp_float& mul_unsigned_long_long(const unsigned long long n); + cpp_float& div_unsigned_long_long(const unsigned long long n); + + // Elementary primitives. + cpp_float& calculate_inv (void); + cpp_float& calculate_sqrt(void); + void negate() + { + if(!iszero()) + neg = !neg; + } + + // Comparison functions + bool isnan (void) const { return (fpclass == mp_NaN); } + bool isinf (void) const { return (fpclass == mp_inf); } + bool isfinite(void) const { return (fpclass == mp_finite); } + + bool iszero (void) const + { + return ((fpclass == mp_finite) && (data[0u] == 0u)); + } + bool isone (void) const; + bool isint (void) const; + bool isneg (void) const { return neg; } + + // Operators pre-increment and pre-decrement + cpp_float& operator++(void) + { + return *this += one(); + } + cpp_float& operator--(void) + { + return *this -= one(); + } + + std::string str(unsigned digits, bool scientific)const; + + int compare(const cpp_float& v)const; + template + int compare(const V& v)const + { + cpp_float t; + t = v; + return compare(t); + } + + void swap(cpp_float& v) + { + data.swap(v.data); + std::swap(exp, v.exp); + std::swap(neg, v.neg); + std::swap(fpclass, v.fpclass); + std::swap(prec_elem, v.prec_elem); + } + + double extract_double (void) const; + long double extract_long_double (void) const; + signed long long extract_signed_long_long (void) const; + unsigned long long extract_unsigned_long_long(void) const; + void extract_parts (double& mantissa, boost::int64_t& exponent) const; + cpp_float extract_integer_part (void) const; + void precision(const boost::int32_t prec_digits) + { + if(prec_digits >= cpp_float_digits10) + { + prec_elem = mp_elem_number; + } + else + { + const boost::int32_t elems = static_cast( static_cast( (prec_digits + (mp_elem_digits10 / 2)) / mp_elem_digits10) + + static_cast(((prec_digits % mp_elem_digits10) != 0) ? 1 : 0)); + + prec_elem = (std::min)(mp_elem_number, (std::max)(elems, static_cast(2))); + } + } + static cpp_float pow2(long long i); + long long order()const + { + const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); + // + // Binary search to find the order of the leading term: + // + boost::uint32_t prefix = 0; + + if(data[0] >= 100000UL) + { + if(data[0] >= 10000000UL) + { + if(data[0] >= 100000000UL) + { + if(data[0] >= 1000000000UL) + prefix = 9; + else + prefix = 8; + } + else + prefix = 7; + } + else + { + if(data[0] >= 1000000UL) + prefix = 6; + else + prefix = 5; + } + } + else + { + if(data[0] >= 1000UL) + { + if(data[0] >= 10000UL) + prefix = 4; + else + prefix = 3; + } + else + { + if(data[0] >= 100) + prefix = 2; + else if(data[0] >= 10) + prefix = 1; + } + } + + return (bo_order_is_zero ? static_cast(0) + : static_cast(exp + prefix)); + } + +private: + static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast(0u)); } + static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(cpp_float::mp_elem_mask - 1)); } + static bool char_is_nonzero_predicate(const char& c) { return (c != static_cast('0')); } + + void from_unsigned_long_long(const unsigned long long u); + + int cmp_data(const array_type& vd) const; + + static void mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p); + static boost::uint32_t mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); + static boost::uint32_t div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); + + bool rd_string(const char* const s); +}; + +template +typename cpp_float::initializer cpp_float::init; + +template +const boost::int32_t cpp_float::mp_radix; +template +const boost::int32_t cpp_float::cpp_float_digits; +template +const boost::int32_t cpp_float::cpp_float_digits10_setting; +template +const boost::int32_t cpp_float::cpp_float_digits10_limit; +template +const boost::int32_t cpp_float::cpp_float_digits10; +template +const boost::int32_t cpp_float::cpp_float_digits10_extra; +template +const boost::int32_t cpp_float::cpp_float_max_digits10; +template +const boost::int64_t cpp_float::cpp_float_max_exp; +template +const boost::int64_t cpp_float::cpp_float_min_exp; +template +const boost::int64_t cpp_float::cpp_float_max_exp10; +template +const boost::int64_t cpp_float::cpp_float_min_exp10; +template +const boost::int32_t cpp_float::mp_elem_digits10; +template +const boost::int32_t cpp_float::cpp_float_digits10_num_base; +template +const boost::int32_t cpp_float::mp_elem_number; +template +const boost::int32_t cpp_float::mp_elem_mask; + + +template +cpp_float& cpp_float::operator+=(const cpp_float& v) +{ + if(isnan()) + { + return *this; + } + + if(isinf()) + { + if(v.isinf() && (isneg() != v.isneg())) + { + *this = nan(); + } + return *this; + } + + if(iszero()) + { + return operator=(v); + } + + // Get the offset for the add/sub operation. + static const boost::int64_t max_delta_exp = static_cast((mp_elem_number - 1) * mp_elem_digits10); + + const boost::int64_t ofs_exp = static_cast(exp - v.exp); + + // Check if the operation is out of range, requiring special handling. + if(v.iszero() || (ofs_exp > max_delta_exp)) + { + // Result is *this unchanged since v is negligible compared to *this. + return *this; + } + else if(ofs_exp < -max_delta_exp) + { + // Result is *this = v since *this is negligible compared to v. + return operator=(v); + } + + // Do the add/sub operation. + + typename array_type::iterator p_u = data.begin(); + typename array_type::const_iterator p_v = v.data.begin(); + bool b_copy = false; + const boost::int32_t ofs = static_cast(static_cast(ofs_exp) / mp_elem_digits10); + array_type n_data; + + if(neg == v.neg) + { + // Add v to *this, where the data array of either *this or v + // might have to be treated with a positive, negative or zero offset. + // The result is stored in *this. The data are added one element + // at a time, each element with carry. + if(ofs >= static_cast(0)) + { + std::copy(v.data.begin(), v.data.end() - static_cast(ofs), n_data.begin() + static_cast(ofs)); + std::fill(n_data.begin(), n_data.begin() + static_cast(ofs), static_cast(0u)); + p_v = n_data.begin(); + } + else + { + std::copy(data.begin(), data.end() - static_cast(-ofs), n_data.begin() + static_cast(-ofs)); + std::fill(n_data.begin(), n_data.begin() + static_cast(-ofs), static_cast(0u)); + p_u = n_data.begin(); + b_copy = true; + } + + // Addition algorithm + boost::uint32_t carry = static_cast(0u); + + for(boost::int32_t j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) + { + boost::uint32_t t = static_cast(static_cast(p_u[j] + p_v[j]) + carry); + carry = t / static_cast(mp_elem_mask); + p_u[j] = static_cast(t - static_cast(carry * static_cast(mp_elem_mask))); + } + + if(b_copy) + { + data = n_data; + exp = v.exp; + } + + // There needs to be a carry into the element -1 of the array data + if(carry != static_cast(0u)) + { + std::copy_backward(data.begin(), data.end() - static_cast(1u), data.end()); + data[0] = carry; + exp += static_cast(mp_elem_digits10); + } + } + else + { + // Subtract v from *this, where the data array of either *this or v + // might have to be treated with a positive, negative or zero offset. + if((ofs > static_cast(0)) + || ( (ofs == static_cast(0)) + && (cmp_data(v.data) > static_cast(0))) + ) + { + // In this case, |u| > |v| and ofs is positive. + // Copy the data of v, shifted down to a lower value + // into the data array m_n. Set the operand pointer p_v + // to point to the copied, shifted data m_n. + std::copy(v.data.begin(), v.data.end() - static_cast(ofs), n_data.begin() + static_cast(ofs)); + std::fill(n_data.begin(), n_data.begin() + static_cast(ofs), static_cast(0u)); + p_v = n_data.begin(); + } + else + { + if(ofs != static_cast(0)) + { + // In this case, |u| < |v| and ofs is negative. + // Shift the data of u down to a lower value. + std::copy_backward(data.begin(), data.end() - static_cast(-ofs), data.end()); + std::fill(data.begin(), data.begin() + static_cast(-ofs), static_cast(0u)); + } + + // Copy the data of v into the data array n_data. + // Set the u-pointer p_u to point to m_n and the + // operand pointer p_v to point to the shifted + // data m_data. + n_data = v.data; + p_u = n_data.begin(); + p_v = data.begin(); + b_copy = true; + } + + boost::int32_t j; + + // Subtraction algorithm + boost::int32_t borrow = static_cast(0); + + for(j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) + { + boost::int32_t t = static_cast(static_cast( static_cast(p_u[j]) + - static_cast(p_v[j])) - borrow); + + // Underflow? Borrow? + if(t < static_cast(0)) + { + // Yes, underflow and borrow + t += static_cast(mp_elem_mask); + borrow = static_cast(1); + } + else + { + borrow = static_cast(0); + } + + p_u[j] = static_cast(static_cast(t) % static_cast(mp_elem_mask)); + } + + if(b_copy) + { + data = n_data; + exp = v.exp; + neg = v.neg; + } + + // Is it necessary to justify the data? + const typename array_type::const_iterator first_nonzero_elem = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); + + if(first_nonzero_elem != data.begin()) + { + if(first_nonzero_elem == data.end()) + { + // This result of the subtraction is exactly zero. + // Reset the sign and the exponent. + neg = false; + exp = static_cast(0); + } + else + { + // Justify the data + const std::size_t sj = static_cast(std::distance(data.begin(), first_nonzero_elem)); + + std::copy(data.begin() + static_cast(sj), data.end(), data.begin()); + std::fill(data.end() - sj, data.end(), static_cast(0u)); + + exp -= static_cast(sj * static_cast(mp_elem_digits10)); + } + } + } + + // Check for underflow. + if(iszero()) + { + return *this = zero(); + } + + bool overflow = exp >= cpp_float_max_exp; + if(exp == cpp_float_max_exp) + { + // Check to see if we really truely have an overflow or not... + if(isneg()) + { + cpp_float t(*this); + t.negate(); + overflow = t.compare((max)()) > 0; + } + else + { + overflow = compare((max)()) > 0; + } + } + + // Check for overflow. + if(overflow) + { + const bool b_result_is_neg = neg; + + *this = inf(); + if(b_result_is_neg) + negate(); + } + + return *this; +} + +template +cpp_float& cpp_float::operator-=(const cpp_float& v) +{ + // Use *this - v = -(-*this + v). + negate(); + *this += v; + negate(); + return *this; +} + +template +cpp_float& cpp_float::operator*=(const cpp_float& v) +{ + // Evaluate the sign of the result. + const bool b_result_is_neg = (neg != v.neg); + + // Artificially set the sign of the result to be positive. + neg = false; + + // Handle special cases like zero, inf and NaN. + const bool b_u_is_inf = isinf(); + const bool b_v_is_inf = v.isinf(); + const bool b_u_is_zero = iszero(); + const bool b_v_is_zero = v.iszero(); + + if( (isnan() || v.isnan()) + || (b_u_is_inf && b_v_is_zero) + || (b_v_is_inf && b_u_is_zero) + ) + { + *this = nan(); + return *this; + } + + if(b_u_is_inf || b_v_is_inf) + { + *this = inf(); + if(b_result_is_neg) + negate(); + return *this; + } + + if(b_u_is_zero || b_v_is_zero) + { + return *this = zero(); + } + + // Check for overflow or underflow. + const bool u_exp_is_neg = (exp < static_cast(0)); + const bool v_exp_is_neg = (v.exp < static_cast(0)); + + if(u_exp_is_neg == v_exp_is_neg) + { + // Get the unsigned base-10 exponents of *this and v and... + const boost::int64_t u_exp = ((!u_exp_is_neg) ? exp : static_cast( -exp)); + const boost::int64_t v_exp = ((!v_exp_is_neg) ? v.exp : static_cast(-v.exp)); + + // Check the range of the upcoming multiplication. + const bool b_result_is_out_of_range = (v_exp >= static_cast(cpp_float_max_exp10 - u_exp)); + + if(b_result_is_out_of_range) + { + if(u_exp_is_neg) + { + *this = zero(); + } + else + { + *this = inf(); + if(b_result_is_neg) + negate(); + } + return *this; + } + } + + // Set the exponent of the result. + exp += v.exp; + + boost::array(mp_elem_number + static_cast(1))> w = {{ 0u }}; + + mul_loop_uv(data.data(), v.data.data(), w.data(), (std::min)(prec_elem, v.prec_elem)); + + // Copy the multiplication data into the result. + // Shift the result and adjust the exponent if necessary. + if(w[static_cast(0u)] != static_cast(0u)) + { + exp += static_cast(mp_elem_digits10); + + std::copy(w.begin(), w.end() - 1u, data.begin()); + } + else + { + std::copy(w.begin() + 1u, w.end(), data.begin()); + } + + // Set the sign of the result. + neg = b_result_is_neg; + + return *this; +} + +template +cpp_float& cpp_float::operator/=(const cpp_float& v) +{ + const bool u_and_v_are_finite_and_identical = ( isfinite() + && (fpclass == v.fpclass) + && (exp == v.exp) + && (cmp_data(v.data) == static_cast(0))); + + if(u_and_v_are_finite_and_identical) + { + *this = one(); + if(neg != v.neg) + negate(); + return *this; + } + else + { + if(iszero()) + { + if(v.isnan() || v.iszero()) + { + return *this = v; + } + return *this; + } + cpp_float t(v); + t.calculate_inv(); + return operator*=(t); + } +} + +template +cpp_float& cpp_float::mul_unsigned_long_long(const unsigned long long n) +{ + // Multiply *this with a constant unsigned long long. + + // Evaluate the sign of the result. + const bool b_neg = neg; + + // Artificially set the sign of the result to be positive. + neg = false; + + // Handle special cases like zero, inf and NaN. + const bool b_u_is_inf = isinf(); + const bool b_n_is_zero = (n == static_cast(0)); + + if(isnan() || (b_u_is_inf && b_n_is_zero)) + { + return (*this = nan()); + } + + if(b_u_is_inf) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + if(iszero() || b_n_is_zero) + { + // Multiplication by zero. + return *this = zero(); + } + + if(n >= static_cast(mp_elem_mask)) + { + neg = b_neg; + cpp_float t; + t = n; + return operator*=(t); + } + + if(n == static_cast(1u)) + { + neg = b_neg; + return *this; + } + + // Set up the multiplication loop. + const boost::uint32_t nn = static_cast(n); + const boost::uint32_t carry = mul_loop_n(data.data(), nn, prec_elem); + + // Handle the carry and adjust the exponent. + if(carry != static_cast(0u)) + { + exp += static_cast(mp_elem_digits10); + + // Shift the result of the multiplication one element to the right. + std::copy_backward(data.begin(), + data.begin() + static_cast(prec_elem - static_cast(1)), + data.begin() + static_cast(prec_elem)); + + data.front() = static_cast(carry); + } + + bool overflow = exp >= cpp_float_max_exp; + if(exp == cpp_float_max_exp) + { + // Check to see if we really truely have an overflow or not... + if(isneg()) + { + cpp_float t(*this); + t.negate(); + overflow = t.compare((max)()) > 0; + } + else + { + overflow = compare((max)()) > 0; + } + } + + if(overflow) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + // Set the sign. + neg = b_neg; + + return *this; +} + +template +cpp_float& cpp_float::div_unsigned_long_long(const unsigned long long n) +{ + // Divide *this by a constant unsigned long long. + + // Evaluate the sign of the result. + const bool b_neg = neg; + + // Artificially set the sign of the result to be positive. + neg = false; + + // Handle special cases like zero, inf and NaN. + if(isnan()) + { + return *this; + } + + if(isinf()) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + if(n == static_cast(0u)) + { + // Divide by 0. + if(iszero()) + { + *this = nan(); + return *this; + } + else + { + *this = inf(); + if(isneg()) + negate(); + return *this; + } + } + + if(iszero()) + { + return *this; + } + + if(n >= static_cast(mp_elem_mask)) + { + neg = b_neg; + cpp_float t; + t = n; + return operator/=(t); + } + + const boost::uint32_t nn = static_cast(n); + + if(nn > static_cast(1u)) + { + // Do the division loop. + const boost::uint32_t prev = div_loop_n(data.data(), nn, prec_elem); + + // Determine if one leading zero is in the result data. + if(data[0] == static_cast(0u)) + { + // Adjust the exponent + exp -= static_cast(mp_elem_digits10); + + // Shift result of the division one element to the left. + std::copy(data.begin() + static_cast(1u), + data.begin() + static_cast(prec_elem - static_cast(1)), + data.begin()); + + data[prec_elem - static_cast(1)] = static_cast(static_cast(prev * static_cast(mp_elem_mask)) / nn); + } + } + + // Check for underflow. + if(iszero()) + { + return *this = zero(); + } + + // Set the sign of the result. + neg = b_neg; + + return *this; +} + +template +cpp_float& cpp_float::calculate_inv() +{ + // Compute the inverse of *this. + const bool b_neg = neg; + + neg = false; + + // Handle special cases like zero, inf and NaN. + if(iszero()) + { + *this = inf(); + if(b_neg) + negate(); + return *this; + } + + if(isnan()) + { + return *this; + } + + if(isinf()) + { + return *this = zero(); + } + + if(isone()) + { + if(b_neg) + negate(); + return *this; + } + + // Save the original *this. + cpp_float x(*this); + + // Generate the initial estimate using division. + // Extract the mantissa and exponent for a "manual" + // computation of the estimate. + double dd; + boost::int64_t ne; + x.extract_parts(dd, ne); + + // Do the inverse estimate using double precision estimates of mantissa and exponent. + operator=(cpp_float(1.0 / dd, -ne)); + + // Compute the inverse of *this. Quadratically convergent Newton-Raphson iteration + // is used. During the iterative steps, the precision of the calculation is limited + // to the minimum required in order to minimize the run-time. + + static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; + + for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= static_cast(2)) + { + // Adjust precision of the terms. + precision(static_cast(digits * static_cast(2))); + x.precision(static_cast(digits * static_cast(2))); + + // Next iteration. + cpp_float t(*this); + t *= x; + t -= two(); + t.negate(); + *this *= t; + } + + neg = b_neg; + + prec_elem = mp_elem_number; + + return *this; +} + +template +cpp_float& cpp_float::calculate_sqrt(void) +{ + // Compute the square root of *this. + + if(isneg() || (!isfinite())) + { + *this = nan(); + return *this; + } + + if(iszero() || isone()) + { + return *this; + } + + // Save the original *this. + cpp_float x(*this); + + // Generate the initial estimate using division. + // Extract the mantissa and exponent for a "manual" + // computation of the estimate. + double dd; + boost::int64_t ne; + extract_parts(dd, ne); + + // Force the exponent to be an even multiple of two. + if((ne % static_cast(2)) != static_cast(0)) + { + ++ne; + dd /= 10.0; + } + + // Setup the iteration. + // Estimate the square root using simple manipulations. + const double sqd = std::sqrt(dd); + + *this = cpp_float(sqd, static_cast(ne / static_cast(2))); + + // Estimate 1.0 / (2.0 * x0) using simple manipulations. + cpp_float vi(0.5 / sqd, static_cast(-ne / static_cast(2))); + + // Compute the square root of x. Coupled Newton iteration + // as described in "Pi Unleashed" is used. During the + // iterative steps, the precision of the calculation is + // limited to the minimum required in order to minimize + // the run-time. + // + // Book references: + // http://www.jjj.de/pibook/pibook.html + // http://www.amazon.com/exec/obidos/tg/detail/-/3540665722/qid=1035535482/sr=8-7/ref=sr_8_7/104-3357872-6059916?v=glance&n=507846 + + static const boost::uint32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); + + for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= 2u) + { + // Adjust precision of the terms. + precision(digits * 2); + vi.precision(digits * 2); + + // Next iteration of vi + cpp_float t(*this); + t *= vi; + t.negate(); + t.mul_unsigned_long_long(2u); + t += one(); + t *= vi; + vi += t; + + // Next iteration of *this + t = *this; + t *= *this; + t.negate(); + t += x; + t *= vi; + *this += t; + } + + prec_elem = mp_elem_number; + + return *this; +} + +template +int cpp_float::cmp_data(const array_type& vd) const +{ + // Compare the data of *this with those of v. + // Return +1 for *this > v + // 0 for *this = v + // -1 for *this < v + + const std::pair mismatch_pair = std::mismatch(data.begin(), data.end(), vd.begin()); + + const bool is_equal = ((mismatch_pair.first == data.end()) && (mismatch_pair.second == vd.end())); + + if(is_equal) + { + return 0; + } + else + { + return ((*mismatch_pair.first > *mismatch_pair.second) ? 1 : -1); + } +} + +template +int cpp_float::compare(const cpp_float& v) const +{ + // Compare v with *this. + // Return +1 for *this > v + // 0 for *this = v + // -1 for *this < v + + // Handle all non-finite cases. + if((!isfinite()) || (!v.isfinite())) + { + // NaN can never equal NaN. Return an implementation-dependent + // signed result. Also note that comparison of NaN with NaN + // using operators greater-than or less-than is undefined. + if(isnan() || v.isnan()) { return (isnan() ? 1 : -1); } + + if(isinf() && v.isinf()) + { + // Both *this and v are infinite. They are equal if they have the same sign. + // Otherwise, *this is less than v if and only if *this is negative. + return ((neg == v.neg) ? 0 : (neg ? -1 : 1)); + } + + if(isinf()) + { + // *this is infinite, but v is finite. + // So negative infinite *this is less than any finite v. + // Whereas positive infinite *this is greater than any finite v. + return (isneg() ? -1 : 1); + } + else + { + // *this is finite, and v is infinite. + // So any finite *this is greater than negative infinite v. + // Whereas any finite *this is less than positive infinite v. + return (v.neg ? 1 : -1); + } + } + + // And now handle all *finite* cases. + if(iszero()) + { + // The value of *this is zero and v is either zero or non-zero. + return (v.iszero() ? 0 + : (v.neg ? 1 : -1)); + } + else if(v.iszero()) + { + // The value of v is zero and *this is non-zero. + return (neg ? -1 : 1); + } + else + { + // Both *this and v are non-zero. + + if(neg != v.neg) + { + // The signs are different. + return (neg ? -1 : 1); + } + else if(exp != v.exp) + { + // The signs are the same and the exponents are different. + const int val_cmp_exp = ((exp < v.exp) ? 1 : -1); + + return (neg ? val_cmp_exp : -val_cmp_exp); + } + else + { + // The signs are the same and the exponents are the same. + // Compare the data. + const int val_cmp_data = cmp_data(v.data); + + return ((!neg) ? val_cmp_data : -val_cmp_data); + } + } +} + +template +bool cpp_float::isone() const +{ + // Check if the value of *this is identically 1 or very close to 1. + + const bool not_negative_and_is_finite = ((!neg) && isfinite()); + + if(not_negative_and_is_finite) + { + if((data[0u] == static_cast(1u)) && (exp == static_cast(0))) + { + const typename array_type::const_iterator it_non_zero = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); + return (it_non_zero == data.end()); + } + else if((data[0u] == static_cast(mp_elem_mask - 1)) && (exp == static_cast(-mp_elem_digits10))) + { + const typename array_type::const_iterator it_non_nine = std::find_if(data.begin(), data.end(), data_elem_is_non_nine_predicate); + return (it_non_nine == data.end()); + } + } + + return false; +} + +template +bool cpp_float::isint() const +{ + if(fpclass != mp_finite) { return false; } + + if(iszero()) { return true; } + + if(exp < static_cast(0)) { return false; } // |*this| < 1. + + const typename array_type::size_type offset_decimal_part = static_cast(exp / mp_elem_digits10) + 1u; + + if(offset_decimal_part >= static_cast(mp_elem_number)) + { + // The number is too large to resolve the integer part. + // It considered to be a pure integer. + return true; + } + + typename array_type::const_iterator it_non_zero = std::find_if(data.begin() + offset_decimal_part, data.end(), data_elem_is_non_zero_predicate); + + return (it_non_zero == data.end()); +} + +template +void cpp_float::extract_parts(double& mantissa, boost::int64_t& exponent) const +{ + // Extract the approximate parts mantissa and base-10 exponent from the input cpp_float value x. + + // Extracts the mantissa and exponent. + exponent = exp; + + boost::uint32_t p10 = static_cast(1u); + boost::uint32_t test = data[0u]; + + for(;;) + { + test /= static_cast(10u); + + if(test == static_cast(0u)) + { + break; + } + + p10 *= static_cast(10u); + ++exponent; + } + + mantissa = static_cast(data[0]) + + (static_cast(data[1]) / static_cast(mp_elem_mask)) + + ((static_cast(data[2]) / static_cast(mp_elem_mask)) / static_cast(mp_elem_mask)); + + mantissa /= static_cast(p10); + + if(neg) { mantissa = -mantissa; } +} + +template +double cpp_float::extract_double(void) const +{ + // Returns the double conversion of a cpp_float. + + // Check for non-normal cpp_float. + if(!isfinite()) + { + if(isnan()) + { + return std::numeric_limits::quiet_NaN(); + } + else + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + } + + cpp_float xx(*this); + if(xx.isneg()) + xx.negate(); + + // Check for zero cpp_float. + if(iszero() || (xx.compare(double_min()) < 0)) + { + return 0.0; + } + + // Check if cpp_float exceeds the maximum of double. + if(xx.compare(double_max()) > 0) + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + + std::stringstream ss; + + ss << str(std::numeric_limits::digits10 + (2 + 1), true); + + double d; + ss >> d; + + return d; +} + +template +long double cpp_float::extract_long_double(void) const +{ + // Returns the long double conversion of a cpp_float. + + // Check for non-normal cpp_float. + if(!isfinite()) + { + if(isnan()) + { + return std::numeric_limits::quiet_NaN(); + } + else + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + } + + cpp_float xx(*this); + if(xx.isneg()) + xx.negate(); + + // Check for zero cpp_float. + if(iszero() || (xx.compare(long_double_min()) < 0)) + { + return static_cast(0.0); + } + + // Check if cpp_float exceeds the maximum of double. + if(xx.compare(long_double_max()) > 0) + { + return ((!neg) ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + + std::stringstream ss; + + ss << str(std::numeric_limits::digits10 + (2 + 1), true); + + long double ld; + ss >> ld; + + return ld; +} + +template +signed long long cpp_float::extract_signed_long_long(void) const +{ + // Extracts a signed long long from *this. + // If (x > maximum of signed long long) or (x < minimum of signed long long), + // then the maximum or minimum of signed long long is returned accordingly. + + if(exp < static_cast(0)) + { + return static_cast(0); + } + + const bool b_neg = isneg(); + + unsigned long long val; + + if((!b_neg) && (compare(long_long_max()) > 0)) + { + return (std::numeric_limits::max)(); + } + else if(b_neg && (compare(long_long_min()) < 0)) + { + return (std::numeric_limits::min)(); + } + else + { + // Extract the data into an unsigned long long value. + cpp_float xn(extract_integer_part()); + if(xn.isneg()) + xn.negate(); + + val = static_cast(xn.data[0]); + + const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); + + for(boost::int32_t i = static_cast(1); i <= imax; i++) + { + val *= static_cast(mp_elem_mask); + val += static_cast(xn.data[i]); + } + } + + return ((!b_neg) ? static_cast(val) : static_cast(-static_cast(val))); +} + +template +unsigned long long cpp_float::extract_unsigned_long_long(void) const +{ + // Extracts an unsigned long long from *this. + // If x exceeds the maximum of unsigned long long, + // then the maximum of unsigned long long is returned. + // If x is negative, then the unsigned long long cast of + // the signed long long extracted value is returned. + + if(isneg()) + { + return static_cast(extract_signed_long_long()); + } + + if(exp < static_cast(0)) + { + return static_cast(0u); + } + + const cpp_float xn(extract_integer_part()); + + unsigned long long val; + + if(xn.compare(ulong_long_max()) > 0) + { + return (std::numeric_limits::max)(); + } + else + { + // Extract the data into an unsigned long long value. + val = static_cast(xn.data[0]); + + const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); + + for(boost::int32_t i = static_cast(1); i <= imax; i++) + { + val *= static_cast(mp_elem_mask); + val += static_cast(xn.data[i]); + } + } + + return val; +} + +template +cpp_float cpp_float::extract_integer_part(void) const +{ + // Compute the signed integer part of x. + + if(!isfinite()) + { + return *this; + } + + if(exp < static_cast(0)) + { + // The absolute value of the number is smaller than 1. + // Thus the integer part is zero. + return zero(); + } + else if(exp >= Digits10 - 1) + { + // The number is too large to resolve the integer part. + // Thus it is already a pure integer part. + return *this; + } + + // Make a local copy. + cpp_float x = *this; + + // Clear out the decimal portion + const size_t first_clear = (static_cast(x.exp) / static_cast(mp_elem_digits10)) + 1u; + const size_t last_clear = static_cast(mp_elem_number); + + std::fill(x.data.begin() + first_clear, x.data.begin() + last_clear, static_cast(0u)); + + return x; +} + +template +std::string cpp_float::str(std::size_t number_of_digits, bool scientific) const +{ + std::string str; + boost::int64_t my_exp = order(); + if(number_of_digits == 0) + number_of_digits = (std::numeric_limits::max)(); + // Determine the number of elements needed to provide the requested digits from cpp_float. + const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(mp_elem_digits10)) + 2u), + static_cast(mp_elem_number)); + + // Extract the remaining digits from cpp_float after the decimal point. + str = boost::lexical_cast(data[0]); + + // Extract all of the digits from cpp_float, beginning with the first data element. + for(std::size_t i = static_cast(1u); i < number_of_elements; i++) + { + std::stringstream ss; + + ss << std::setw(static_cast(mp_elem_digits10)) + << std::setfill(static_cast('0')) + << data[i]; + + str += ss.str(); + } + + // Cut the output to the size of the precision. + if(str.length() > number_of_digits) + { + // Get the digit after the last needed digit for rounding + const boost::uint32_t round = static_cast(static_cast(str.at(number_of_digits)) - static_cast('0')); + + // Truncate the string + str = str.substr(static_cast(0u), number_of_digits); + + if(round >= static_cast(5u)) + { + std::size_t ix = static_cast(str.length() - 1u); + + // Every trailing 9 must be rounded up + while(ix && (static_cast(str.at(ix)) - static_cast('0') == static_cast(9))) + { + str.at(ix) = static_cast('0'); + --ix; + } + + if(!ix) + { + // There were nothing but trailing nines. + if(static_cast(static_cast(str.at(ix)) - static_cast(0x30)) == static_cast(9)) + { + // Increment up to the next order and adjust exponent. + str.at(ix) = static_cast('1'); + ++my_exp; + } + else + { + // Round up this digit. + ++str.at(ix); + } + } + else + { + // Round up the last digit. + ++str[ix]; + } + } + } + // + // Suppress trailing zeros: + // + std::string::iterator pos = str.end(); + while(pos != str.begin() && *--pos == '0'){} + if(pos != str.end()) + ++pos; + str.erase(pos, str.end()); + if(str.empty()) + str = '0'; + if(!scientific && (str.size() < 20) && (my_exp >= 0) && (my_exp < 20)) + { + if(1 + my_exp > str.size()) + { + // Just pad out the end with zeros: + str.append(static_cast(1 + my_exp - str.size()), '0'); + } + else if(my_exp + 1 != str.size()) + { + // Insert the decimal point: + str.insert(static_cast(my_exp + 1), 1, '.'); + } + } + else + { + // Scientific format: + str.insert(1, 1, '.'); + if(str.size() == 2) + str.append(1, '0'); + str.append(1, 'e'); + str.append(boost::lexical_cast(my_exp)); + } + if(isneg()) + str.insert(0, 1, '-'); + return str; +} + +template +bool cpp_float::rd_string(const char* const s) +{ + std::string str(s); + + // Get a possible exponent and remove it. + exp = static_cast(0); + + std::size_t pos; + + if( ((pos = str.find('e')) != std::string::npos) + || ((pos = str.find('E')) != std::string::npos) + ) + { + // Remove the exponent part from the string. + exp = boost::lexical_cast(static_cast(str.c_str() + (pos + 1u))); + str = str.substr(static_cast(0u), pos); + } + + // Get a possible +/- sign and remove it. + neg = false; + + if((pos = str.find(static_cast('-'))) != std::string::npos) + { + neg = true; + str.erase(pos, static_cast(1u)); + } + + if((pos = str.find(static_cast('+'))) != std::string::npos) + { + str.erase(pos, static_cast(1u)); + } + + // Remove leading zeros for all input types. + const std::string::iterator fwd_it_leading_zero = std::find_if(str.begin(), str.end(), char_is_nonzero_predicate); + + if(fwd_it_leading_zero != str.begin()) + { + if(fwd_it_leading_zero == str.end()) + { + // The string contains nothing but leading zeros. + // This string represents zero. + operator=(zero()); + return true; + } + else + { + str.erase(str.begin(), fwd_it_leading_zero); + } + } + + // Put the input string into the standard cpp_float input form + // aaa.bbbbE+/-n, where aa has 1...mp_elem_digits10, bbbb has an + // even multiple of mp_elem_digits10 which are possibly zero padded + // on the right-end, and n is a signed 32-bit integer which is an + // even multiple of mp_elem_digits10. + + // Find a possible decimal point. + pos = str.find(static_cast('.')); + + if(pos != std::string::npos) + { + // Remove all trailing insignificant zeros. + const std::string::const_reverse_iterator rit_non_zero = std::find_if(str.rbegin(), str.rend(), char_is_nonzero_predicate); + + if(rit_non_zero != str.rbegin()) + { + const std::string::size_type ofs = str.length() - std::distance(str.rbegin(), rit_non_zero); + str.erase(str.begin() + ofs, str.end()); + } + + // Check if the input is identically zero. + if(str == std::string(".")) + { + operator=(zero()); + return true; + } + + // Remove leading significant zeros just after the decimal point + // and adjust the exponent accordingly. + // Note that the while-loop operates only on strings of the form ".000abcd..." + // and peels away the zeros just after the decimal point. + if(str.at(static_cast(0u)) == static_cast('.')) + { + const std::string::iterator it_non_zero = std::find_if(str.begin() + 1u, str.end(), char_is_nonzero_predicate); + + std::size_t delta_exp = static_cast(0u); + + if(str.at(static_cast(1u)) == static_cast('0')) + { + delta_exp = std::distance(str.begin() + 1u, it_non_zero); + } + + // Bring one single digit into the mantissa and adjust exponent accordingly. + str.erase(str.begin(), it_non_zero); + str.insert(static_cast(1u), "."); + exp -= static_cast(delta_exp + 1u); + } + } + else + { + // Input string has no decimal point: Append decimal point. + str.append("."); + } + + // Shift the decimal point such that the exponent is an even multiple of mp_elem_digits10. + std::size_t n_shift = static_cast(0u); + const std::size_t n_exp_rem = static_cast(exp % static_cast(mp_elem_digits10)); + + if((exp % static_cast(mp_elem_digits10)) != static_cast(0)) + { + n_shift = ((exp < static_cast(0)) + ? static_cast(n_exp_rem + static_cast(mp_elem_digits10)) + : static_cast(n_exp_rem)); + } + + // Make sure that there are enough digits for the decimal point shift. + pos = str.find(static_cast('.')); + + std::size_t pos_plus_one = static_cast(pos + 1u); + + if((str.length() - pos_plus_one) < n_shift) + { + const std::size_t sz = static_cast(n_shift - (str.length() - pos_plus_one)); + + str.append(std::string(sz, static_cast('0'))); + } + + // Do the decimal point shift. + if(n_shift != static_cast(0u)) + { + str.insert(static_cast(pos_plus_one + n_shift), "."); + + str.erase(pos, static_cast(1u)); + + exp -= static_cast(n_shift); + } + + // Cut the size of the mantissa to <= mp_elem_digits10. + pos = str.find(static_cast('.')); + pos_plus_one = static_cast(pos + 1u); + + if(pos > static_cast(mp_elem_digits10)) + { + const boost::int32_t n_pos = static_cast(pos); + const boost::int32_t n_rem_is_zero = ((static_cast(n_pos % mp_elem_digits10) == static_cast(0)) ? static_cast(1) : static_cast(0)); + const boost::int32_t n = static_cast(static_cast(n_pos / mp_elem_digits10) - n_rem_is_zero); + + str.insert(static_cast(static_cast(n_pos - static_cast(n * mp_elem_digits10))), "."); + + str.erase(pos_plus_one, static_cast(1u)); + + exp += static_cast(static_cast(n) * static_cast(mp_elem_digits10)); + } + + // Pad the decimal part such that its value is an even + // multiple of mp_elem_digits10. + pos = str.find(static_cast('.')); + pos_plus_one = static_cast(pos + 1u); + + const boost::int32_t n_dec = static_cast(static_cast(str.length() - 1u) - static_cast(pos)); + const boost::int32_t n_rem = static_cast(n_dec % mp_elem_digits10); + boost::int32_t n_cnt = ((n_rem != static_cast(0)) ? static_cast(mp_elem_digits10 - n_rem) + : static_cast(0)); + + if(n_cnt != static_cast(0)) + { + str.append(static_cast(n_cnt), static_cast('0')); + } + + // Truncate decimal part if it is too long. + const std::size_t max_dec = static_cast((mp_elem_number - 1) * mp_elem_digits10); + + if(static_cast(str.length() - pos) > max_dec) + { + str = str.substr(static_cast(0u), + static_cast(pos_plus_one + max_dec)); + } + + // Now the input string has the standard cpp_float input form. + // (See the comment above.) + + // Set all the data elements to 0. + std::fill(data.begin(), data.end(), static_cast(0u)); + + // Extract the data. + + // First get the digits to the left of the decimal point... + data[0u] = boost::lexical_cast(str.substr(static_cast(0u), pos)); + + // ...then get the remaining digits to the right of the decimal point. + const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast(mp_elem_digits10)); + + for(std::string::size_type i = static_cast(0u); i < i_end; i++) + { + const std::string::const_iterator it = str.begin() + + pos_plus_one + + (i * static_cast(mp_elem_digits10)); + + data[i + 1u] = boost::lexical_cast(std::string(it, it + static_cast(mp_elem_digits10))); + } + + // Check for overflow... + if(exp > cpp_float_max_exp10) + { + const bool b_result_is_neg = neg; + + *this = inf(); + if(b_result_is_neg) + negate(); + } + + // ...and check for underflow. + if(exp <= cpp_float_min_exp10) + { + if(exp == cpp_float_min_exp10) + { + // Check for identity with the minimum value. + cpp_float test = *this; + + test.exp = static_cast(0); + + if(test.isone()) + { + *this = zero(); + } + } + else + { + *this = zero(); + } + } + + return true; +} + +template +cpp_float::cpp_float(const double mantissa, const boost::int64_t exponent) + : data (), + exp (static_cast(0)), + neg (false), + fpclass (mp_finite), + prec_elem(mp_elem_number) +{ + // Create an cpp_float from mantissa and exponent. + // This ctor does not maintain the full precision of double. + + const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits::min)() * (1.0 + std::numeric_limits::epsilon()))); + + if(mantissa_is_iszero) + { + std::fill(data.begin(), data.end(), static_cast(0u)); + return; + } + + const bool b_neg = (mantissa < 0.0); + + double d = ((!b_neg) ? mantissa : -mantissa); + boost::int64_t e = exponent; + + while(d > 10.0) { d /= 10.0; ++e; } + while(d < 1.0) { d *= 10.0; --e; } + + boost::int32_t shift = static_cast(e % static_cast(mp_elem_digits10)); + + while(static_cast(shift-- % mp_elem_digits10) != static_cast(0)) + { + d *= 10.0; + --e; + } + + exp = e; + neg = b_neg; + + std::fill(data.begin(), data.end(), static_cast(0u)); + + static const boost::int32_t digit_ratio = static_cast(static_cast(std::numeric_limits::digits10) / static_cast(mp_elem_digits10)); + static const boost::int32_t digit_loops = static_cast(digit_ratio + static_cast(2)); + + for(boost::int32_t i = static_cast(0); i < digit_loops; i++) + { + boost::uint32_t n = static_cast(static_cast(d)); + data[i] = static_cast(n); + d -= static_cast(n); + d *= static_cast(mp_elem_mask); + } +} + +template +cpp_float& cpp_float::operator = (long double a) +{ + // Christopher Kormanyos's original code used a cast to long long here, but that fails + // when long double has more digits than a long long. + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + return *this = zero(); + } + + if (a == 1) { + return *this = one(); + } + + if((boost::math::isinf)(a)) + { + return *this = inf(); + } + if((boost::math::isnan)(a)) + return *this = nan(); + + int e; + long double f, term; + *this = zero(); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + *this *= pow2(shift); + if(term > 0) + add_unsigned_long_long(static_cast(term)); + else + sub_unsigned_long_long(static_cast(-term)); + f -= term; + } + if(e != 0) + *this *= pow2(e); + return *this; +} + +template +void cpp_float::from_unsigned_long_long(const unsigned long long u) +{ + std::fill(data.begin(), data.end(), static_cast(0u)); + + exp = static_cast(0); + neg = false; + fpclass = mp_finite; + prec_elem = mp_elem_number; + + std::size_t i =static_cast(0u); + + unsigned long long uu = u; + + boost::uint32_t temp[(std::numeric_limits::digits10 / static_cast(mp_elem_digits10)) + 3] = { static_cast(0u) }; + + while(uu != static_cast(0u)) + { + temp[i] = static_cast(uu % static_cast(mp_elem_mask)); + uu = static_cast(uu / static_cast(mp_elem_mask)); + ++i; + } + + if(i > static_cast(1u)) + { + exp += static_cast((i - 1u) * static_cast(mp_elem_digits10)); + } + + std::reverse(temp, temp + i); + std::copy(temp, temp + (std::min)(i, static_cast(mp_elem_number)), data.begin()); +} + +template +void cpp_float::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p) +{ + boost::uint64_t carry = static_cast(0u); + + for(boost::int32_t j = static_cast(p - 1u); j >= static_cast(0); j--) + { + boost::uint64_t sum = carry; + + for(boost::int32_t i = j; i >= static_cast(0); i--) + { + sum += static_cast(u[i] * static_cast(v[j - i])); + } + + w[j + 1] = static_cast(sum % static_cast(mp_elem_mask)); + carry = static_cast(sum / static_cast(mp_elem_mask)); + } + + w[0u] = static_cast(carry); +} + +template +boost::uint32_t cpp_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +{ + boost::uint64_t carry = static_cast(0u); + + // Multiplication loop. + for(boost::int32_t j = p - 1; j >= static_cast(0); j--) + { + const boost::uint64_t t = static_cast(carry + static_cast(u[j] * static_cast(n))); + carry = static_cast(t / static_cast(mp_elem_mask)); + u[j] = static_cast(t - static_cast(static_cast(mp_elem_mask) * static_cast(carry))); + } + + return static_cast(carry); +} + +template +boost::uint32_t cpp_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +{ + boost::uint64_t prev = static_cast(0u); + + for(boost::int32_t j = static_cast(0); j < p; j++) + { + const boost::uint64_t t = static_cast(u[j] + static_cast(prev * static_cast(mp_elem_mask))); + u[j] = static_cast(t / n); + prev = static_cast(t - static_cast(n * static_cast(u[j]))); + } + + return static_cast(prev); +} + +template +cpp_float cpp_float::pow2(const boost::int64_t p) +{ + // Create a static const table of p^2 for -128 < p < +128. + // Note: The size of this table must be odd-numbered and + // symmetric about 0. + init.do_nothing(); + static const boost::array, 255u> p2_data = + {{ + cpp_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), + cpp_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), + cpp_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"), + cpp_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"), + cpp_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"), + cpp_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"), + cpp_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"), + cpp_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"), + cpp_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"), + cpp_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"), + cpp_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"), + cpp_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"), + cpp_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"), + cpp_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"), + cpp_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"), + cpp_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"), + cpp_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"), + cpp_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"), + cpp_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"), + cpp_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"), + cpp_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"), + cpp_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"), + cpp_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"), + cpp_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"), + cpp_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"), + cpp_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"), + cpp_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"), + cpp_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"), + cpp_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"), + cpp_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"), + cpp_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"), + cpp_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"), + cpp_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"), + cpp_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"), + cpp_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"), + cpp_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"), + cpp_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"), + cpp_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"), + cpp_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"), + cpp_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"), + cpp_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"), + cpp_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"), + cpp_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"), + cpp_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"), + cpp_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"), + cpp_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"), + cpp_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"), + cpp_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"), + cpp_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"), + cpp_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"), + cpp_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"), + cpp_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"), + cpp_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"), + cpp_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"), + cpp_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"), + cpp_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"), + cpp_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"), + cpp_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"), + cpp_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"), + cpp_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"), + cpp_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"), + cpp_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"), + cpp_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"), + cpp_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"), + cpp_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"), + cpp_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"), + cpp_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"), + cpp_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.125"), + cpp_float("0.25"), + cpp_float("0.5"), + one(), + two(), + cpp_float(static_cast(4)), + cpp_float(static_cast(8)), + cpp_float(static_cast(16)), + cpp_float(static_cast(32)), + cpp_float(static_cast(64)), + cpp_float(static_cast(128)), + cpp_float(static_cast(256)), + cpp_float(static_cast(512)), + cpp_float(static_cast(1024)), + cpp_float(static_cast(2048)), + cpp_float(static_cast(4096)), + cpp_float(static_cast(8192)), + cpp_float(static_cast(16384)), + cpp_float(static_cast(32768)), + cpp_float(static_cast(65536)), + cpp_float(static_cast(131072)), + cpp_float(static_cast(262144)), + cpp_float(static_cast(524288)), + cpp_float(static_cast(1uL << 20u)), + cpp_float(static_cast(1uL << 21u)), + cpp_float(static_cast(1uL << 22u)), + cpp_float(static_cast(1uL << 23u)), + cpp_float(static_cast(1uL << 24u)), + cpp_float(static_cast(1uL << 25u)), + cpp_float(static_cast(1uL << 26u)), + cpp_float(static_cast(1uL << 27u)), + cpp_float(static_cast(1uL << 28u)), + cpp_float(static_cast(1uL << 29u)), + cpp_float(static_cast(1uL << 30u)), + cpp_float(static_cast(1uL << 31u)), + cpp_float(static_cast(1uLL << 32u)), + cpp_float(static_cast(1uLL << 33u)), + cpp_float(static_cast(1uLL << 34u)), + cpp_float(static_cast(1uLL << 35u)), + cpp_float(static_cast(1uLL << 36u)), + cpp_float(static_cast(1uLL << 37u)), + cpp_float(static_cast(1uLL << 38u)), + cpp_float(static_cast(1uLL << 39u)), + cpp_float(static_cast(1uLL << 40u)), + cpp_float(static_cast(1uLL << 41u)), + cpp_float(static_cast(1uLL << 42u)), + cpp_float(static_cast(1uLL << 43u)), + cpp_float(static_cast(1uLL << 44u)), + cpp_float(static_cast(1uLL << 45u)), + cpp_float(static_cast(1uLL << 46u)), + cpp_float(static_cast(1uLL << 47u)), + cpp_float(static_cast(1uLL << 48u)), + cpp_float(static_cast(1uLL << 49u)), + cpp_float(static_cast(1uLL << 50u)), + cpp_float(static_cast(1uLL << 51u)), + cpp_float(static_cast(1uLL << 52u)), + cpp_float(static_cast(1uLL << 53u)), + cpp_float(static_cast(1uLL << 54u)), + cpp_float(static_cast(1uLL << 55u)), + cpp_float(static_cast(1uLL << 56u)), + cpp_float(static_cast(1uLL << 57u)), + cpp_float(static_cast(1uLL << 58u)), + cpp_float(static_cast(1uLL << 59u)), + cpp_float(static_cast(1uLL << 60u)), + cpp_float(static_cast(1uLL << 61u)), + cpp_float(static_cast(1uLL << 62u)), + cpp_float(static_cast(1uLL << 63u)), + cpp_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") + }}; + + if((p > static_cast(-128)) && (p < static_cast(+128))) + { + return p2_data[static_cast(p + ((p2_data.size() - 1u) / 2u))]; + } + + // Compute and return 2^p. + if(p < static_cast(0)) + { + return pow2(static_cast(-p)).calculate_inv(); + } + else if(p < static_cast(std::numeric_limits::digits)) + { + const boost::uint64_t p2 = static_cast(static_cast(1uLL) << p); + return cpp_float(p2); + } + else + { + cpp_float t; + default_ops::detail::pow_imp(t, two(), p, mpl::true_()); + return t; + } +} + + +template +inline void add(cpp_float& result, const cpp_float& o) +{ + result += o; +} +template +inline void subtract(cpp_float& result, const cpp_float& o) +{ + result -= o; +} +template +inline void multiply(cpp_float& result, const cpp_float& o) +{ + result *= o; +} +template +inline void divide(cpp_float& result, const cpp_float& o) +{ + result /= o; +} + +template +inline void add(cpp_float& result, const unsigned long long& o) +{ + result.add_unsigned_long_long(o); +} +template +inline void subtract(cpp_float& result, const unsigned long long& o) +{ + result.sub_unsigned_long_long(o); +} +template +inline void multiply(cpp_float& result, const unsigned long long& o) +{ + result.mul_unsigned_long_long(o); +} +template +inline void divide(cpp_float& result, const unsigned long long& o) +{ + result.div_unsigned_long_long(o); +} + +template +inline void add(cpp_float& result, long long o) +{ + if(o < 0) + result.sub_unsigned_long_long(-o); + else + result.add_unsigned_long_long(o); +} +template +inline void subtract(cpp_float& result, long long o) +{ + if(o < 0) + result.add_unsigned_long_long(-o); + else + result.sub_unsigned_long_long(o); +} +template +inline void multiply(cpp_float& result, long long o) +{ + if(o < 0) + { + result.mul_unsigned_long_long(-o); + result.negate(); + } + else + result.mul_unsigned_long_long(o); +} +template +inline void divide(cpp_float& result, long long o) +{ + if(o < 0) + { + result.div_unsigned_long_long(-o); + result.negate(); + } + else + result.div_unsigned_long_long(o); +} + +template +inline void convert_to(unsigned long long* result, const cpp_float& val) +{ + *result = val.extract_unsigned_long_long(); +} +template +inline void convert_to(long long* result, const cpp_float& val) +{ + *result = val.extract_signed_long_long(); +} +template +inline void convert_to(long double* result, cpp_float& val) +{ + *result = val.extract_long_double(); +} + +// +// Non member function support: +// +template +inline int eval_fpclassify(const cpp_float& x) +{ + if(x.isinf()) + return FP_INFINITE; + if(x.isnan()) + return FP_NAN; + if(x.iszero()) + return FP_ZERO; + return FP_NORMAL; +} + +template +inline void eval_abs(cpp_float& result, const cpp_float& x) +{ + result = x; + if(x.isneg()) + result.negate(); +} + +template +inline void eval_fabs(cpp_float& result, const cpp_float& x) +{ + result = x; + if(x.isneg()) + result.negate(); +} + +template +inline void eval_sqrt(cpp_float& result, const cpp_float& x) +{ + result = x; + result.calculate_sqrt(); +} + +template +inline void eval_floor(cpp_float& result, const cpp_float& x) +{ + result = x; + if(!x.isfinite() || x.isint()) + { + return; + } + + if(x.isneg()) + result -= cpp_float::one(); + result = result.extract_integer_part(); +} + +template +inline void eval_ceil(cpp_float& result, const cpp_float& x) +{ + result = x; + if(!x.isfinite() || x.isint()) + { + return; + } + + if(!x.isneg()) + result += cpp_float::one(); + result = result.extract_integer_part(); +} + +template +inline void eval_trunc(cpp_float& result, const cpp_float& x) +{ + if(!x.isfinite()) + { + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(x), 0, boost::math::policies::policy<>()).backend(); + return; + } + else if(x.isint()) + { + result = x; + return; + } + result = x.extract_integer_part(); +} + +template +inline void eval_ldexp(cpp_float& result, const cpp_float& x, long long e) +{ + result = x; + result *= cpp_float::pow2(e); +} + +template +inline void eval_frexp(cpp_float& result, const cpp_float& x, long long* e) +{ + result = x; + if(result.isneg()) + result.negate(); + + long long t = result.order(); + + if(std::abs(t) > (std::numeric_limits::max)() / 3) + throw std::runtime_error("Exponent is too large to be represented as a power of 2."); + t *= 3; + + result *= cpp_float::pow2(-t); + + while(result.compare(cpp_float::one()) >= 0) + { + result /= cpp_float::two(); + ++t; + } + while(result.compare(cpp_float::half()) < 0) + { + result *= cpp_float::two(); + --t; + } + *e = t; + if(x.isneg()) + result.negate(); +} + +template +inline void eval_frexp(cpp_float& result, const cpp_float& x, int* e) +{ + long long t; + eval_frexp(result, x, &t); + if(t > (std::numeric_limits::max)()) + throw std::runtime_error("Exponent is outside the range of an int"); + *e = static_cast(t); +} + +typedef mp_number > cpp_float_50; +typedef mp_number > cpp_float_100; + +}} + +namespace std +{ + template + class numeric_limits > > + { + public: + static const bool is_specialized = true; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const bool is_bounded = true; + static const bool is_modulo = false; + static const bool is_iec559 = false; + static const int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + static const int digits10 = boost::multiprecision::cpp_float::cpp_float_digits10; + static const int max_digits10 = boost::multiprecision::cpp_float::cpp_float_max_digits10; + static const boost::int64_t min_exponent = boost::multiprecision::cpp_float::cpp_float_min_exp; // Type differs from int. + static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_float::cpp_float_min_exp10; // Type differs from int. + static const boost::int64_t max_exponent = boost::multiprecision::cpp_float::cpp_float_max_exp; // Type differs from int. + static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_float::cpp_float_max_exp10; // Type differs from int. + static const int radix = boost::multiprecision::cpp_float::mp_radix; + static const std::float_round_style round_style = std::round_to_nearest; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = false; + static const std::float_denorm_style has_denorm = std::denorm_absent; + static const bool has_denorm_loss = false; + static const bool traps = false; + static const bool tinyness_before = false; + + static const boost::multiprecision::mp_number > (min) (void) throw() { return (boost::multiprecision::cpp_float::min)(); } + static const boost::multiprecision::mp_number > (max) (void) throw() { return (boost::multiprecision::cpp_float::max)(); } + static const boost::multiprecision::mp_number > lowest (void) throw() { return boost::multiprecision::cpp_float::zero(); } + static const boost::multiprecision::mp_number > epsilon (void) throw() { return boost::multiprecision::cpp_float::eps(); } + static const boost::multiprecision::mp_number > round_error (void) throw() { return 0.5L; } + static const boost::multiprecision::mp_number > infinity (void) throw() { return boost::multiprecision::cpp_float::inf(); } + static const boost::multiprecision::mp_number > quiet_NaN (void) throw() { return boost::multiprecision::cpp_float::nan(); } + static const boost::multiprecision::mp_number > signaling_NaN(void) throw() { return boost::multiprecision::cpp_float::zero(); } + static const boost::multiprecision::mp_number > denorm_min (void) throw() { return boost::multiprecision::cpp_float::zero(); } + }; +} + +namespace boost{ namespace math{ + +namespace policies{ + +template +struct precision< boost::multiprecision::mp_number >, Policy> +{ + typedef typename Policy::precision_type precision_type; + typedef digits2<((Digits10 + 1) * 1000L) / 301L> digits_2; + typedef typename mpl::if_c< + ((digits_2::value <= precision_type::value) + || (Policy::precision_type::value <= 0)), + // Default case, full precision for RealType: + digits_2, + // User customised precision: + precision_type + >::type type; +}; + +} // namespace policies + +}} // namespaces boost::math + + +#endif + diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp index dc7fd375..13c41251 100644 --- a/include/boost/multiprecision/mp_float.hpp +++ b/include/boost/multiprecision/mp_float.hpp @@ -25,7 +25,7 @@ namespace boost{ namespace multiprecision{ template -class mp_float +class cpp_float { public: typedef mpl::list signed_types; @@ -35,22 +35,22 @@ public: static const boost::int32_t mp_radix = 10; - static const boost::int32_t mp_float_digits = Digits10; + static const boost::int32_t cpp_float_digits = Digits10; - static const boost::int32_t mp_float_digits10_setting = Digits10; - static const boost::int32_t mp_float_digits10_limit = boost::integer_traits::const_max; - static const boost::int32_t mp_float_digits10 = ((mp_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((mp_float_digits10_setting > mp_float_digits10_limit) ? mp_float_digits10_limit : mp_float_digits10_setting)); - static const boost::int32_t mp_float_digits10_extra = static_cast(((static_cast(mp_float_digits10) * 15LL) + 50LL) / 100LL); - static const boost::int32_t mp_float_max_digits10 = static_cast(mp_float_digits10 + ((mp_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((mp_float_digits10_extra > static_cast(30)) ? static_cast(30) : mp_float_digits10_extra))); - static const boost::int64_t mp_float_max_exp = static_cast(+9223372036854775795LL); - static const boost::int64_t mp_float_min_exp = static_cast(-9223372036854775795LL); - static const boost::int64_t mp_float_max_exp10 = static_cast(+3063937869882635616LL); // Approx. [mp_float_max_exp / log10(2)], also an even multiple of 8 - static const boost::int64_t mp_float_min_exp10 = static_cast(-3063937869882635616LL); + static const boost::int32_t cpp_float_digits10_setting = Digits10; + static const boost::int32_t cpp_float_digits10_limit = boost::integer_traits::const_max; + static const boost::int32_t cpp_float_digits10 = ((cpp_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_float_digits10_setting > cpp_float_digits10_limit) ? cpp_float_digits10_limit : cpp_float_digits10_setting)); + static const boost::int32_t cpp_float_digits10_extra = static_cast(((static_cast(cpp_float_digits10) * 15LL) + 50LL) / 100LL); + static const boost::int32_t cpp_float_max_digits10 = static_cast(cpp_float_digits10 + ((cpp_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_float_digits10_extra))); + static const boost::int64_t cpp_float_max_exp = static_cast(+9223372036854775795LL); + static const boost::int64_t cpp_float_min_exp = static_cast(-9223372036854775795LL); + static const boost::int64_t cpp_float_max_exp10 = static_cast(+3063937869882635616LL); // Approx. [cpp_float_max_exp / log10(2)], also an even multiple of 8 + static const boost::int64_t cpp_float_min_exp10 = static_cast(-3063937869882635616LL); static const boost::int32_t mp_elem_digits10 = static_cast(8); private: - static const boost::int32_t mp_float_digits10_num_base = static_cast((mp_float_max_digits10 / mp_elem_digits10) + (((mp_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); - static const boost::int32_t mp_elem_number = static_cast(mp_float_digits10_num_base + 2); + static const boost::int32_t cpp_float_digits10_num_base = static_cast((cpp_float_max_digits10 / mp_elem_digits10) + (((cpp_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); + static const boost::int32_t mp_elem_number = static_cast(cpp_float_digits10_num_base + 2); static const boost::int32_t mp_elem_mask = static_cast(100000000); typedef enum enum_fpclass @@ -72,7 +72,7 @@ private: // // Special values constructor: // - mp_float(t_fpclass c) : + cpp_float(t_fpclass c) : data(), exp (static_cast(0)), neg (false), @@ -86,23 +86,23 @@ private: { initializer() { - mp_float::nan(); - mp_float::inf(); - (mp_float::min)(); - (mp_float::max)(); - mp_float::zero(); - mp_float::one(); - mp_float::two(); - mp_float::half(); - mp_float::double_min(); - mp_float::double_max(); - mp_float::long_double_max(); - mp_float::long_double_min(); - mp_float::long_long_max(); - mp_float::long_long_min(); - mp_float::ulong_long_max(); - mp_float::eps(); - mp_float::pow2(0); + cpp_float::nan(); + cpp_float::inf(); + (cpp_float::min)(); + (cpp_float::max)(); + cpp_float::zero(); + cpp_float::one(); + cpp_float::two(); + cpp_float::half(); + cpp_float::double_min(); + cpp_float::double_max(); + cpp_float::long_double_max(); + cpp_float::long_double_min(); + cpp_float::long_long_max(); + cpp_float::long_long_min(); + cpp_float::ulong_long_max(); + cpp_float::eps(); + cpp_float::pow2(0); } void do_nothing(){} }; @@ -111,14 +111,14 @@ private: public: // Constructors - mp_float() : + cpp_float() : data(), exp (static_cast(0)), neg (false), fpclass (mp_finite), prec_elem(mp_elem_number) { } - mp_float(const char* s) : + cpp_float(const char* s) : data(), exp (static_cast(0)), neg (false), @@ -129,7 +129,7 @@ public: } template - mp_float(I i, typename enable_if >::type* = 0) : + cpp_float(I i, typename enable_if >::type* = 0) : data(), exp (static_cast(0)), neg (false), @@ -140,7 +140,7 @@ public: } template - mp_float(I i, typename enable_if >::type* = 0) : + cpp_float(I i, typename enable_if >::type* = 0) : data(), exp (static_cast(0)), neg (false), @@ -156,7 +156,7 @@ public: from_unsigned_long_long(i); } - mp_float(const mp_float& f) : + cpp_float(const cpp_float& f) : data (f.data), exp (f.exp), neg (f.neg), @@ -164,7 +164,7 @@ public: prec_elem(f.prec_elem) { } template - mp_float(const F val, typename enable_if >::type* = 0): + cpp_float(const F val, typename enable_if >::type* = 0): data(), exp (static_cast(0)), neg (false), @@ -174,28 +174,28 @@ public: *this = val; } - mp_float(const double val, long long exponent); + cpp_float(const double val, long long exponent); // Specific special values. - static const mp_float& nan() + static const cpp_float& nan() { - static const mp_float val(mp_NaN); + static const cpp_float val(mp_NaN); init.do_nothing(); return val; } - static const mp_float& inf() + static const cpp_float& inf() { - static const mp_float val(mp_inf); + static const cpp_float val(mp_inf); init.do_nothing(); return val; } - static const mp_float& (max)() + static const cpp_float& (max)() { init.do_nothing(); static bool init = false; - static const std::string str_max = std::string("9." + std::string(static_cast(mp_float_max_digits10), static_cast('9'))) - + std::string("e+" + boost::lexical_cast(mp_float_max_exp10)); - static mp_float val_max; + static const std::string str_max = std::string("9." + std::string(static_cast(cpp_float_max_digits10), static_cast('9'))) + + std::string("e+" + boost::lexical_cast(cpp_float_max_exp10)); + static cpp_float val_max; if(!init) { init = true; @@ -204,93 +204,93 @@ public: return val_max; } - static const mp_float& (min)() + static const cpp_float& (min)() { init.do_nothing(); static bool init = false; - static mp_float val_min; + static cpp_float val_min; if(!init) { init = true; - val_min = std::string("1.0e" + boost::lexical_cast(mp_float_min_exp10)).c_str(); + val_min = std::string("1.0e" + boost::lexical_cast(cpp_float_min_exp10)).c_str(); } return val_min; } - static const mp_float& zero() + static const cpp_float& zero() { init.do_nothing(); - static mp_float val(static_cast(0u)); + static cpp_float val(static_cast(0u)); return val; } - static const mp_float& one() + static const cpp_float& one() { init.do_nothing(); - static mp_float val(static_cast(1u)); + static cpp_float val(static_cast(1u)); return val; } - static const mp_float& two() + static const cpp_float& two() { init.do_nothing(); - static mp_float val(static_cast(2u)); + static cpp_float val(static_cast(2u)); return val; } - static const mp_float& half() + static const cpp_float& half() { init.do_nothing(); - static mp_float val(0.5L); + static cpp_float val(0.5L); return val; } - static const mp_float& double_min() + static const cpp_float& double_min() { init.do_nothing(); - static mp_float val(static_cast((std::numeric_limits::min)())); + static cpp_float val(static_cast((std::numeric_limits::min)())); return val; } - static const mp_float& double_max() + static const cpp_float& double_max() { init.do_nothing(); - static mp_float val(static_cast((std::numeric_limits::max)())); + static cpp_float val(static_cast((std::numeric_limits::max)())); return val; } - static const mp_float& long_double_min() + static const cpp_float& long_double_min() { init.do_nothing(); - static mp_float val((std::numeric_limits::min)()); + static cpp_float val((std::numeric_limits::min)()); return val; } - static const mp_float& long_double_max() + static const cpp_float& long_double_max() { init.do_nothing(); - static mp_float val((std::numeric_limits::max)()); + static cpp_float val((std::numeric_limits::max)()); return val; } - static const mp_float& long_long_max() + static const cpp_float& long_long_max() { init.do_nothing(); - static mp_float val((std::numeric_limits::max)()); + static cpp_float val((std::numeric_limits::max)()); return val; } - static const mp_float& long_long_min() + static const cpp_float& long_long_min() { init.do_nothing(); - static mp_float val((std::numeric_limits::min)()); + static cpp_float val((std::numeric_limits::min)()); return val; } - static const mp_float& ulong_long_max() + static const cpp_float& ulong_long_max() { init.do_nothing(); - static mp_float val((std::numeric_limits::max)()); + static cpp_float val((std::numeric_limits::max)()); return val; } - static const mp_float& eps() + static const cpp_float& eps() { init.do_nothing(); - static mp_float val(1.0, 1 - (int)Digits10); + static cpp_float val(1.0, 1 - (int)Digits10); return val; } // Basic operations. - mp_float& operator= (const mp_float& v) + cpp_float& operator= (const cpp_float& v) { data = v.data; exp = v.exp; @@ -299,7 +299,7 @@ public: prec_elem = v.prec_elem; return *this; } - mp_float& operator= (long long v) + cpp_float& operator= (long long v) { if(v < 0) { @@ -310,41 +310,41 @@ public: from_unsigned_long_long(v); return *this; } - mp_float& operator= (unsigned long long v) + cpp_float& operator= (unsigned long long v) { from_unsigned_long_long(v); return *this; } - mp_float& operator= (long double v); - mp_float& operator= (const char* v) + cpp_float& operator= (long double v); + cpp_float& operator= (const char* v) { rd_string(v); return *this; } - mp_float& operator+=(const mp_float& v); - mp_float& operator-=(const mp_float& v); - mp_float& operator*=(const mp_float& v); - mp_float& operator/=(const mp_float& v); + cpp_float& operator+=(const cpp_float& v); + cpp_float& operator-=(const cpp_float& v); + cpp_float& operator*=(const cpp_float& v); + cpp_float& operator/=(const cpp_float& v); - mp_float& add_unsigned_long_long(const unsigned long long n) + cpp_float& add_unsigned_long_long(const unsigned long long n) { - mp_float t; + cpp_float t; t.from_unsigned_long_long(n); return *this += t; } - mp_float& sub_unsigned_long_long(const unsigned long long n) + cpp_float& sub_unsigned_long_long(const unsigned long long n) { - mp_float t; + cpp_float t; t.from_unsigned_long_long(n); return *this -= t; } - mp_float& mul_unsigned_long_long(const unsigned long long n); - mp_float& div_unsigned_long_long(const unsigned long long n); + cpp_float& mul_unsigned_long_long(const unsigned long long n); + cpp_float& div_unsigned_long_long(const unsigned long long n); // Elementary primitives. - mp_float& calculate_inv (void); - mp_float& calculate_sqrt(void); + cpp_float& calculate_inv (void); + cpp_float& calculate_sqrt(void); void negate() { if(!iszero()) @@ -365,27 +365,27 @@ public: bool isneg (void) const { return neg; } // Operators pre-increment and pre-decrement - mp_float& operator++(void) + cpp_float& operator++(void) { return *this += one(); } - mp_float& operator--(void) + cpp_float& operator--(void) { return *this -= one(); } std::string str(unsigned digits, bool scientific)const; - int compare(const mp_float& v)const; + int compare(const cpp_float& v)const; template int compare(const V& v)const { - mp_float t; + cpp_float t; t = v; return compare(t); } - void swap(mp_float& v) + void swap(cpp_float& v) { data.swap(v.data); std::swap(exp, v.exp); @@ -399,10 +399,10 @@ public: signed long long extract_signed_long_long (void) const; unsigned long long extract_unsigned_long_long(void) const; void extract_parts (double& mantissa, boost::int64_t& exponent) const; - mp_float extract_integer_part (void) const; + cpp_float extract_integer_part (void) const; void precision(const boost::int32_t prec_digits) { - if(prec_digits >= mp_float_digits10) + if(prec_digits >= cpp_float_digits10) { prec_elem = mp_elem_number; } @@ -414,7 +414,7 @@ public: prec_elem = (std::min)(mp_elem_number, (std::max)(elems, static_cast(2))); } } - static mp_float pow2(long long i); + static cpp_float pow2(long long i); long long order()const { const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); @@ -469,7 +469,7 @@ public: private: static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast(0u)); } - static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(mp_float::mp_elem_mask - 1)); } + static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(cpp_float::mp_elem_mask - 1)); } static bool char_is_nonzero_predicate(const char& c) { return (c != static_cast('0')); } void from_unsigned_long_long(const unsigned long long u); @@ -484,42 +484,42 @@ private: }; template -typename mp_float::initializer mp_float::init; +typename cpp_float::initializer cpp_float::init; template -const boost::int32_t mp_float::mp_radix; +const boost::int32_t cpp_float::mp_radix; template -const boost::int32_t mp_float::mp_float_digits; +const boost::int32_t cpp_float::cpp_float_digits; template -const boost::int32_t mp_float::mp_float_digits10_setting; +const boost::int32_t cpp_float::cpp_float_digits10_setting; template -const boost::int32_t mp_float::mp_float_digits10_limit; +const boost::int32_t cpp_float::cpp_float_digits10_limit; template -const boost::int32_t mp_float::mp_float_digits10; +const boost::int32_t cpp_float::cpp_float_digits10; template -const boost::int32_t mp_float::mp_float_digits10_extra; +const boost::int32_t cpp_float::cpp_float_digits10_extra; template -const boost::int32_t mp_float::mp_float_max_digits10; +const boost::int32_t cpp_float::cpp_float_max_digits10; template -const boost::int64_t mp_float::mp_float_max_exp; +const boost::int64_t cpp_float::cpp_float_max_exp; template -const boost::int64_t mp_float::mp_float_min_exp; +const boost::int64_t cpp_float::cpp_float_min_exp; template -const boost::int64_t mp_float::mp_float_max_exp10; +const boost::int64_t cpp_float::cpp_float_max_exp10; template -const boost::int64_t mp_float::mp_float_min_exp10; +const boost::int64_t cpp_float::cpp_float_min_exp10; template -const boost::int32_t mp_float::mp_elem_digits10; +const boost::int32_t cpp_float::mp_elem_digits10; template -const boost::int32_t mp_float::mp_float_digits10_num_base; +const boost::int32_t cpp_float::cpp_float_digits10_num_base; template -const boost::int32_t mp_float::mp_elem_number; +const boost::int32_t cpp_float::mp_elem_number; template -const boost::int32_t mp_float::mp_elem_mask; +const boost::int32_t cpp_float::mp_elem_mask; template -mp_float& mp_float::operator+=(const mp_float& v) +cpp_float& cpp_float::operator+=(const cpp_float& v) { if(isnan()) { @@ -709,13 +709,13 @@ mp_float& mp_float::operator+=(const mp_float& v) return *this = zero(); } - bool overflow = exp >= mp_float_max_exp; - if(exp == mp_float_max_exp) + bool overflow = exp >= cpp_float_max_exp; + if(exp == cpp_float_max_exp) { // Check to see if we really truely have an overflow or not... if(isneg()) { - mp_float t(*this); + cpp_float t(*this); t.negate(); overflow = t.compare((max)()) > 0; } @@ -739,7 +739,7 @@ mp_float& mp_float::operator+=(const mp_float& v) } template -mp_float& mp_float::operator-=(const mp_float& v) +cpp_float& cpp_float::operator-=(const cpp_float& v) { // Use *this - v = -(-*this + v). negate(); @@ -749,7 +749,7 @@ mp_float& mp_float::operator-=(const mp_float& v) } template -mp_float& mp_float::operator*=(const mp_float& v) +cpp_float& cpp_float::operator*=(const cpp_float& v) { // Evaluate the sign of the result. const bool b_result_is_neg = (neg != v.neg); @@ -796,7 +796,7 @@ mp_float& mp_float::operator*=(const mp_float& v) const boost::int64_t v_exp = ((!v_exp_is_neg) ? v.exp : static_cast(-v.exp)); // Check the range of the upcoming multiplication. - const bool b_result_is_out_of_range = (v_exp >= static_cast(mp_float_max_exp10 - u_exp)); + const bool b_result_is_out_of_range = (v_exp >= static_cast(cpp_float_max_exp10 - u_exp)); if(b_result_is_out_of_range) { @@ -841,7 +841,7 @@ mp_float& mp_float::operator*=(const mp_float& v) } template -mp_float& mp_float::operator/=(const mp_float& v) +cpp_float& cpp_float::operator/=(const cpp_float& v) { const bool u_and_v_are_finite_and_identical = ( isfinite() && (fpclass == v.fpclass) @@ -865,14 +865,14 @@ mp_float& mp_float::operator/=(const mp_float& v) } return *this; } - mp_float t(v); + cpp_float t(v); t.calculate_inv(); return operator*=(t); } } template -mp_float& mp_float::mul_unsigned_long_long(const unsigned long long n) +cpp_float& cpp_float::mul_unsigned_long_long(const unsigned long long n) { // Multiply *this with a constant unsigned long long. @@ -908,7 +908,7 @@ mp_float& mp_float::mul_unsigned_long_long(const unsigned lo if(n >= static_cast(mp_elem_mask)) { neg = b_neg; - mp_float t; + cpp_float t; t = n; return operator*=(t); } @@ -936,13 +936,13 @@ mp_float& mp_float::mul_unsigned_long_long(const unsigned lo data.front() = static_cast(carry); } - bool overflow = exp >= mp_float_max_exp; - if(exp == mp_float_max_exp) + bool overflow = exp >= cpp_float_max_exp; + if(exp == cpp_float_max_exp) { // Check to see if we really truely have an overflow or not... if(isneg()) { - mp_float t(*this); + cpp_float t(*this); t.negate(); overflow = t.compare((max)()) > 0; } @@ -967,7 +967,7 @@ mp_float& mp_float::mul_unsigned_long_long(const unsigned lo } template -mp_float& mp_float::div_unsigned_long_long(const unsigned long long n) +cpp_float& cpp_float::div_unsigned_long_long(const unsigned long long n) { // Divide *this by a constant unsigned long long. @@ -1016,7 +1016,7 @@ mp_float& mp_float::div_unsigned_long_long(const unsigned lo if(n >= static_cast(mp_elem_mask)) { neg = b_neg; - mp_float t; + cpp_float t; t = n; return operator/=(t); } @@ -1056,7 +1056,7 @@ mp_float& mp_float::div_unsigned_long_long(const unsigned lo } template -mp_float& mp_float::calculate_inv() +cpp_float& cpp_float::calculate_inv() { // Compute the inverse of *this. const bool b_neg = neg; @@ -1090,7 +1090,7 @@ mp_float& mp_float::calculate_inv() } // Save the original *this. - mp_float x(*this); + cpp_float x(*this); // Generate the initial estimate using division. // Extract the mantissa and exponent for a "manual" @@ -1100,7 +1100,7 @@ mp_float& mp_float::calculate_inv() x.extract_parts(dd, ne); // Do the inverse estimate using double precision estimates of mantissa and exponent. - operator=(mp_float(1.0 / dd, -ne)); + operator=(cpp_float(1.0 / dd, -ne)); // Compute the inverse of *this. Quadratically convergent Newton-Raphson iteration // is used. During the iterative steps, the precision of the calculation is limited @@ -1115,7 +1115,7 @@ mp_float& mp_float::calculate_inv() x.precision(static_cast(digits * static_cast(2))); // Next iteration. - mp_float t(*this); + cpp_float t(*this); t *= x; t -= two(); t.negate(); @@ -1130,7 +1130,7 @@ mp_float& mp_float::calculate_inv() } template -mp_float& mp_float::calculate_sqrt(void) +cpp_float& cpp_float::calculate_sqrt(void) { // Compute the square root of *this. @@ -1146,7 +1146,7 @@ mp_float& mp_float::calculate_sqrt(void) } // Save the original *this. - mp_float x(*this); + cpp_float x(*this); // Generate the initial estimate using division. // Extract the mantissa and exponent for a "manual" @@ -1166,10 +1166,10 @@ mp_float& mp_float::calculate_sqrt(void) // Estimate the square root using simple manipulations. const double sqd = std::sqrt(dd); - *this = mp_float(sqd, static_cast(ne / static_cast(2))); + *this = cpp_float(sqd, static_cast(ne / static_cast(2))); // Estimate 1.0 / (2.0 * x0) using simple manipulations. - mp_float vi(0.5 / sqd, static_cast(-ne / static_cast(2))); + cpp_float vi(0.5 / sqd, static_cast(-ne / static_cast(2))); // Compute the square root of x. Coupled Newton iteration // as described in "Pi Unleashed" is used. During the @@ -1190,7 +1190,7 @@ mp_float& mp_float::calculate_sqrt(void) vi.precision(digits * 2); // Next iteration of vi - mp_float t(*this); + cpp_float t(*this); t *= vi; t.negate(); t.mul_unsigned_long_long(2u); @@ -1213,7 +1213,7 @@ mp_float& mp_float::calculate_sqrt(void) } template -int mp_float::cmp_data(const array_type& vd) const +int cpp_float::cmp_data(const array_type& vd) const { // Compare the data of *this with those of v. // Return +1 for *this > v @@ -1235,7 +1235,7 @@ int mp_float::cmp_data(const array_type& vd) const } template -int mp_float::compare(const mp_float& v) const +int cpp_float::compare(const cpp_float& v) const { // Compare v with *this. // Return +1 for *this > v @@ -1313,7 +1313,7 @@ int mp_float::compare(const mp_float& v) const } template -bool mp_float::isone() const +bool cpp_float::isone() const { // Check if the value of *this is identically 1 or very close to 1. @@ -1337,7 +1337,7 @@ bool mp_float::isone() const } template -bool mp_float::isint() const +bool cpp_float::isint() const { if(fpclass != mp_finite) { return false; } @@ -1360,9 +1360,9 @@ bool mp_float::isint() const } template -void mp_float::extract_parts(double& mantissa, boost::int64_t& exponent) const +void cpp_float::extract_parts(double& mantissa, boost::int64_t& exponent) const { - // Extract the approximate parts mantissa and base-10 exponent from the input mp_float value x. + // Extract the approximate parts mantissa and base-10 exponent from the input cpp_float value x. // Extracts the mantissa and exponent. exponent = exp; @@ -1393,11 +1393,11 @@ void mp_float::extract_parts(double& mantissa, boost::int64_t& exponen } template -double mp_float::extract_double(void) const +double cpp_float::extract_double(void) const { - // Returns the double conversion of a mp_float. + // Returns the double conversion of a cpp_float. - // Check for non-normal mp_float. + // Check for non-normal cpp_float. if(!isfinite()) { if(isnan()) @@ -1411,17 +1411,17 @@ double mp_float::extract_double(void) const } } - mp_float xx(*this); + cpp_float xx(*this); if(xx.isneg()) xx.negate(); - // Check for zero mp_float. + // Check for zero cpp_float. if(iszero() || (xx.compare(double_min()) < 0)) { return 0.0; } - // Check if mp_float exceeds the maximum of double. + // Check if cpp_float exceeds the maximum of double. if(xx.compare(double_max()) > 0) { return ((!neg) ? std::numeric_limits::infinity() @@ -1439,11 +1439,11 @@ double mp_float::extract_double(void) const } template -long double mp_float::extract_long_double(void) const +long double cpp_float::extract_long_double(void) const { - // Returns the long double conversion of a mp_float. + // Returns the long double conversion of a cpp_float. - // Check for non-normal mp_float. + // Check for non-normal cpp_float. if(!isfinite()) { if(isnan()) @@ -1457,17 +1457,17 @@ long double mp_float::extract_long_double(void) const } } - mp_float xx(*this); + cpp_float xx(*this); if(xx.isneg()) xx.negate(); - // Check for zero mp_float. + // Check for zero cpp_float. if(iszero() || (xx.compare(long_double_min()) < 0)) { return static_cast(0.0); } - // Check if mp_float exceeds the maximum of double. + // Check if cpp_float exceeds the maximum of double. if(xx.compare(long_double_max()) > 0) { return ((!neg) ? std::numeric_limits::infinity() @@ -1485,7 +1485,7 @@ long double mp_float::extract_long_double(void) const } template -signed long long mp_float::extract_signed_long_long(void) const +signed long long cpp_float::extract_signed_long_long(void) const { // Extracts a signed long long from *this. // If (x > maximum of signed long long) or (x < minimum of signed long long), @@ -1511,7 +1511,7 @@ signed long long mp_float::extract_signed_long_long(void) const else { // Extract the data into an unsigned long long value. - mp_float xn(extract_integer_part()); + cpp_float xn(extract_integer_part()); if(xn.isneg()) xn.negate(); @@ -1530,7 +1530,7 @@ signed long long mp_float::extract_signed_long_long(void) const } template -unsigned long long mp_float::extract_unsigned_long_long(void) const +unsigned long long cpp_float::extract_unsigned_long_long(void) const { // Extracts an unsigned long long from *this. // If x exceeds the maximum of unsigned long long, @@ -1548,7 +1548,7 @@ unsigned long long mp_float::extract_unsigned_long_long(void) const return static_cast(0u); } - const mp_float xn(extract_integer_part()); + const cpp_float xn(extract_integer_part()); unsigned long long val; @@ -1574,7 +1574,7 @@ unsigned long long mp_float::extract_unsigned_long_long(void) const } template -mp_float mp_float::extract_integer_part(void) const +cpp_float cpp_float::extract_integer_part(void) const { // Compute the signed integer part of x. @@ -1597,7 +1597,7 @@ mp_float mp_float::extract_integer_part(void) const } // Make a local copy. - mp_float x = *this; + cpp_float x = *this; // Clear out the decimal portion const size_t first_clear = (static_cast(x.exp) / static_cast(mp_elem_digits10)) + 1u; @@ -1609,20 +1609,20 @@ mp_float mp_float::extract_integer_part(void) const } template -std::string mp_float::str(std::size_t number_of_digits, bool scientific) const +std::string cpp_float::str(std::size_t number_of_digits, bool scientific) const { std::string str; boost::int64_t my_exp = order(); if(number_of_digits == 0) number_of_digits = (std::numeric_limits::max)(); - // Determine the number of elements needed to provide the requested digits from mp_float. + // Determine the number of elements needed to provide the requested digits from cpp_float. const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(mp_elem_digits10)) + 2u), static_cast(mp_elem_number)); - // Extract the remaining digits from mp_float after the decimal point. + // Extract the remaining digits from cpp_float after the decimal point. str = boost::lexical_cast(data[0]); - // Extract all of the digits from mp_float, beginning with the first data element. + // Extract all of the digits from cpp_float, beginning with the first data element. for(std::size_t i = static_cast(1u); i < number_of_elements; i++) { std::stringstream ss; @@ -1714,7 +1714,7 @@ std::string mp_float::str(std::size_t number_of_digits, bool scientifi } template -bool mp_float::rd_string(const char* const s) +bool cpp_float::rd_string(const char* const s) { std::string str(s); @@ -1764,7 +1764,7 @@ bool mp_float::rd_string(const char* const s) } } - // Put the input string into the standard mp_float input form + // Put the input string into the standard cpp_float input form // aaa.bbbbE+/-n, where aa has 1...mp_elem_digits10, bbbb has an // even multiple of mp_elem_digits10 which are possibly zero padded // on the right-end, and n is a signed 32-bit integer which is an @@ -1892,7 +1892,7 @@ bool mp_float::rd_string(const char* const s) static_cast(pos_plus_one + max_dec)); } - // Now the input string has the standard mp_float input form. + // Now the input string has the standard cpp_float input form. // (See the comment above.) // Set all the data elements to 0. @@ -1916,7 +1916,7 @@ bool mp_float::rd_string(const char* const s) } // Check for overflow... - if(exp > mp_float_max_exp10) + if(exp > cpp_float_max_exp10) { const bool b_result_is_neg = neg; @@ -1926,12 +1926,12 @@ bool mp_float::rd_string(const char* const s) } // ...and check for underflow. - if(exp <= mp_float_min_exp10) + if(exp <= cpp_float_min_exp10) { - if(exp == mp_float_min_exp10) + if(exp == cpp_float_min_exp10) { // Check for identity with the minimum value. - mp_float test = *this; + cpp_float test = *this; test.exp = static_cast(0); @@ -1950,14 +1950,14 @@ bool mp_float::rd_string(const char* const s) } template -mp_float::mp_float(const double mantissa, const boost::int64_t exponent) +cpp_float::cpp_float(const double mantissa, const boost::int64_t exponent) : data (), exp (static_cast(0)), neg (false), fpclass (mp_finite), prec_elem(mp_elem_number) { - // Create an mp_float from mantissa and exponent. + // Create an cpp_float from mantissa and exponent. // This ctor does not maintain the full precision of double. const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits::min)() * (1.0 + std::numeric_limits::epsilon()))); @@ -2002,7 +2002,7 @@ mp_float::mp_float(const double mantissa, const boost::int64_t exponen } template -mp_float& mp_float::operator = (long double a) +cpp_float& cpp_float::operator = (long double a) { // Christopher Kormanyos's original code used a cast to long long here, but that fails // when long double has more digits than a long long. @@ -2052,7 +2052,7 @@ mp_float& mp_float::operator = (long double a) } template -void mp_float::from_unsigned_long_long(const unsigned long long u) +void cpp_float::from_unsigned_long_long(const unsigned long long u) { std::fill(data.begin(), data.end(), static_cast(0u)); @@ -2084,7 +2084,7 @@ void mp_float::from_unsigned_long_long(const unsigned long long u) } template -void mp_float::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p) +void cpp_float::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p) { boost::uint64_t carry = static_cast(0u); @@ -2105,7 +2105,7 @@ void mp_float::mul_loop_uv(const boost::uint32_t* const u, const boost } template -boost::uint32_t mp_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +boost::uint32_t cpp_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) { boost::uint64_t carry = static_cast(0u); @@ -2121,7 +2121,7 @@ boost::uint32_t mp_float::mul_loop_n(boost::uint32_t* const u, boost:: } template -boost::uint32_t mp_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +boost::uint32_t cpp_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) { boost::uint64_t prev = static_cast(0u); @@ -2136,269 +2136,269 @@ boost::uint32_t mp_float::div_loop_n(boost::uint32_t* const u, boost:: } template -mp_float mp_float::pow2(const boost::int64_t p) +cpp_float cpp_float::pow2(const boost::int64_t p) { // Create a static const table of p^2 for -128 < p < +128. // Note: The size of this table must be odd-numbered and // symmetric about 0. init.do_nothing(); - static const boost::array, 255u> p2_data = + static const boost::array, 255u> p2_data = {{ - mp_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), - mp_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), - mp_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"), - mp_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"), - mp_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"), - mp_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"), - mp_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"), - mp_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"), - mp_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"), - mp_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"), - mp_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"), - mp_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"), - mp_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"), - mp_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"), - mp_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"), - mp_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"), - mp_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"), - mp_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"), - mp_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"), - mp_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"), - mp_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"), - mp_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"), - mp_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"), - mp_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"), - mp_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"), - mp_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"), - mp_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"), - mp_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"), - mp_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"), - mp_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"), - mp_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"), - mp_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"), - mp_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"), - mp_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"), - mp_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"), - mp_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"), - mp_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"), - mp_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"), - mp_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"), - mp_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"), - mp_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"), - mp_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"), - mp_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"), - mp_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"), - mp_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"), - mp_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"), - mp_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"), - mp_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"), - mp_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"), - mp_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"), - mp_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"), - mp_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"), - mp_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"), - mp_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"), - mp_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"), - mp_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"), - mp_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"), - mp_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"), - mp_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"), - mp_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"), - mp_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"), - mp_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"), - mp_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"), - mp_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"), - mp_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"), - mp_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"), - mp_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"), - mp_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"), - mp_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"), - mp_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"), - mp_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"), - mp_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"), - mp_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"), - mp_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"), - mp_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"), - mp_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"), - mp_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"), - mp_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"), - mp_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"), - mp_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"), - mp_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"), - mp_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"), - mp_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"), - mp_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"), - mp_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"), - mp_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"), - mp_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"), - mp_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"), - mp_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - mp_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - mp_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - mp_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - mp_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - mp_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - mp_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - mp_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - mp_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - mp_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - mp_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - mp_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - mp_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - mp_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - mp_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - mp_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - mp_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - mp_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - mp_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - mp_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - mp_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - mp_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - mp_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - mp_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - mp_float("0.125"), - mp_float("0.25"), - mp_float("0.5"), + cpp_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), + cpp_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), + cpp_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"), + cpp_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"), + cpp_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"), + cpp_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"), + cpp_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"), + cpp_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"), + cpp_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"), + cpp_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"), + cpp_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"), + cpp_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"), + cpp_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"), + cpp_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"), + cpp_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"), + cpp_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"), + cpp_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"), + cpp_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"), + cpp_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"), + cpp_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"), + cpp_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"), + cpp_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"), + cpp_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"), + cpp_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"), + cpp_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"), + cpp_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"), + cpp_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"), + cpp_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"), + cpp_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"), + cpp_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"), + cpp_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"), + cpp_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"), + cpp_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"), + cpp_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"), + cpp_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"), + cpp_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"), + cpp_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"), + cpp_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"), + cpp_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"), + cpp_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"), + cpp_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"), + cpp_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"), + cpp_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"), + cpp_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"), + cpp_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"), + cpp_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"), + cpp_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"), + cpp_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"), + cpp_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"), + cpp_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"), + cpp_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"), + cpp_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"), + cpp_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"), + cpp_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"), + cpp_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"), + cpp_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"), + cpp_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"), + cpp_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"), + cpp_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"), + cpp_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"), + cpp_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"), + cpp_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"), + cpp_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"), + cpp_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"), + cpp_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"), + cpp_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"), + cpp_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"), + cpp_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"), + cpp_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_float("0.125"), + cpp_float("0.25"), + cpp_float("0.5"), one(), two(), - mp_float(static_cast(4)), - mp_float(static_cast(8)), - mp_float(static_cast(16)), - mp_float(static_cast(32)), - mp_float(static_cast(64)), - mp_float(static_cast(128)), - mp_float(static_cast(256)), - mp_float(static_cast(512)), - mp_float(static_cast(1024)), - mp_float(static_cast(2048)), - mp_float(static_cast(4096)), - mp_float(static_cast(8192)), - mp_float(static_cast(16384)), - mp_float(static_cast(32768)), - mp_float(static_cast(65536)), - mp_float(static_cast(131072)), - mp_float(static_cast(262144)), - mp_float(static_cast(524288)), - mp_float(static_cast(1uL << 20u)), - mp_float(static_cast(1uL << 21u)), - mp_float(static_cast(1uL << 22u)), - mp_float(static_cast(1uL << 23u)), - mp_float(static_cast(1uL << 24u)), - mp_float(static_cast(1uL << 25u)), - mp_float(static_cast(1uL << 26u)), - mp_float(static_cast(1uL << 27u)), - mp_float(static_cast(1uL << 28u)), - mp_float(static_cast(1uL << 29u)), - mp_float(static_cast(1uL << 30u)), - mp_float(static_cast(1uL << 31u)), - mp_float(static_cast(1uLL << 32u)), - mp_float(static_cast(1uLL << 33u)), - mp_float(static_cast(1uLL << 34u)), - mp_float(static_cast(1uLL << 35u)), - mp_float(static_cast(1uLL << 36u)), - mp_float(static_cast(1uLL << 37u)), - mp_float(static_cast(1uLL << 38u)), - mp_float(static_cast(1uLL << 39u)), - mp_float(static_cast(1uLL << 40u)), - mp_float(static_cast(1uLL << 41u)), - mp_float(static_cast(1uLL << 42u)), - mp_float(static_cast(1uLL << 43u)), - mp_float(static_cast(1uLL << 44u)), - mp_float(static_cast(1uLL << 45u)), - mp_float(static_cast(1uLL << 46u)), - mp_float(static_cast(1uLL << 47u)), - mp_float(static_cast(1uLL << 48u)), - mp_float(static_cast(1uLL << 49u)), - mp_float(static_cast(1uLL << 50u)), - mp_float(static_cast(1uLL << 51u)), - mp_float(static_cast(1uLL << 52u)), - mp_float(static_cast(1uLL << 53u)), - mp_float(static_cast(1uLL << 54u)), - mp_float(static_cast(1uLL << 55u)), - mp_float(static_cast(1uLL << 56u)), - mp_float(static_cast(1uLL << 57u)), - mp_float(static_cast(1uLL << 58u)), - mp_float(static_cast(1uLL << 59u)), - mp_float(static_cast(1uLL << 60u)), - mp_float(static_cast(1uLL << 61u)), - mp_float(static_cast(1uLL << 62u)), - mp_float(static_cast(1uLL << 63u)), - mp_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - mp_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - mp_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - mp_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - mp_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - mp_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - mp_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - mp_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - mp_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - mp_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - mp_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - mp_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - mp_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - mp_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - mp_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - mp_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - mp_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - mp_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - mp_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - mp_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - mp_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"), - mp_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"), - mp_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"), - mp_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"), - mp_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"), - mp_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"), - mp_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"), - mp_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"), - mp_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"), - mp_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"), - mp_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"), - mp_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"), - mp_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"), - mp_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"), - mp_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"), - mp_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"), - mp_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"), - mp_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"), - mp_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"), - mp_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"), - mp_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"), - mp_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"), - mp_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"), - mp_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"), - mp_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"), - mp_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"), - mp_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"), - mp_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"), - mp_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"), - mp_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"), - mp_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"), - mp_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"), - mp_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"), - mp_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"), - mp_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"), - mp_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"), - mp_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"), - mp_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"), - mp_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"), - mp_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"), - mp_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"), - mp_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"), - mp_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"), - mp_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") + cpp_float(static_cast(4)), + cpp_float(static_cast(8)), + cpp_float(static_cast(16)), + cpp_float(static_cast(32)), + cpp_float(static_cast(64)), + cpp_float(static_cast(128)), + cpp_float(static_cast(256)), + cpp_float(static_cast(512)), + cpp_float(static_cast(1024)), + cpp_float(static_cast(2048)), + cpp_float(static_cast(4096)), + cpp_float(static_cast(8192)), + cpp_float(static_cast(16384)), + cpp_float(static_cast(32768)), + cpp_float(static_cast(65536)), + cpp_float(static_cast(131072)), + cpp_float(static_cast(262144)), + cpp_float(static_cast(524288)), + cpp_float(static_cast(1uL << 20u)), + cpp_float(static_cast(1uL << 21u)), + cpp_float(static_cast(1uL << 22u)), + cpp_float(static_cast(1uL << 23u)), + cpp_float(static_cast(1uL << 24u)), + cpp_float(static_cast(1uL << 25u)), + cpp_float(static_cast(1uL << 26u)), + cpp_float(static_cast(1uL << 27u)), + cpp_float(static_cast(1uL << 28u)), + cpp_float(static_cast(1uL << 29u)), + cpp_float(static_cast(1uL << 30u)), + cpp_float(static_cast(1uL << 31u)), + cpp_float(static_cast(1uLL << 32u)), + cpp_float(static_cast(1uLL << 33u)), + cpp_float(static_cast(1uLL << 34u)), + cpp_float(static_cast(1uLL << 35u)), + cpp_float(static_cast(1uLL << 36u)), + cpp_float(static_cast(1uLL << 37u)), + cpp_float(static_cast(1uLL << 38u)), + cpp_float(static_cast(1uLL << 39u)), + cpp_float(static_cast(1uLL << 40u)), + cpp_float(static_cast(1uLL << 41u)), + cpp_float(static_cast(1uLL << 42u)), + cpp_float(static_cast(1uLL << 43u)), + cpp_float(static_cast(1uLL << 44u)), + cpp_float(static_cast(1uLL << 45u)), + cpp_float(static_cast(1uLL << 46u)), + cpp_float(static_cast(1uLL << 47u)), + cpp_float(static_cast(1uLL << 48u)), + cpp_float(static_cast(1uLL << 49u)), + cpp_float(static_cast(1uLL << 50u)), + cpp_float(static_cast(1uLL << 51u)), + cpp_float(static_cast(1uLL << 52u)), + cpp_float(static_cast(1uLL << 53u)), + cpp_float(static_cast(1uLL << 54u)), + cpp_float(static_cast(1uLL << 55u)), + cpp_float(static_cast(1uLL << 56u)), + cpp_float(static_cast(1uLL << 57u)), + cpp_float(static_cast(1uLL << 58u)), + cpp_float(static_cast(1uLL << 59u)), + cpp_float(static_cast(1uLL << 60u)), + cpp_float(static_cast(1uLL << 61u)), + cpp_float(static_cast(1uLL << 62u)), + cpp_float(static_cast(1uLL << 63u)), + cpp_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"), + cpp_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") }}; if((p > static_cast(-128)) && (p < static_cast(+128))) @@ -2414,11 +2414,11 @@ mp_float mp_float::pow2(const boost::int64_t p) else if(p < static_cast(std::numeric_limits::digits)) { const boost::uint64_t p2 = static_cast(static_cast(1uLL) << p); - return mp_float(p2); + return cpp_float(p2); } else { - mp_float t; + cpp_float t; default_ops::detail::pow_imp(t, two(), p, mpl::true_()); return t; } @@ -2426,49 +2426,49 @@ mp_float mp_float::pow2(const boost::int64_t p) template -inline void add(mp_float& result, const mp_float& o) +inline void add(cpp_float& result, const cpp_float& o) { result += o; } template -inline void subtract(mp_float& result, const mp_float& o) +inline void subtract(cpp_float& result, const cpp_float& o) { result -= o; } template -inline void multiply(mp_float& result, const mp_float& o) +inline void multiply(cpp_float& result, const cpp_float& o) { result *= o; } template -inline void divide(mp_float& result, const mp_float& o) +inline void divide(cpp_float& result, const cpp_float& o) { result /= o; } template -inline void add(mp_float& result, const unsigned long long& o) +inline void add(cpp_float& result, const unsigned long long& o) { result.add_unsigned_long_long(o); } template -inline void subtract(mp_float& result, const unsigned long long& o) +inline void subtract(cpp_float& result, const unsigned long long& o) { result.sub_unsigned_long_long(o); } template -inline void multiply(mp_float& result, const unsigned long long& o) +inline void multiply(cpp_float& result, const unsigned long long& o) { result.mul_unsigned_long_long(o); } template -inline void divide(mp_float& result, const unsigned long long& o) +inline void divide(cpp_float& result, const unsigned long long& o) { result.div_unsigned_long_long(o); } template -inline void add(mp_float& result, long long o) +inline void add(cpp_float& result, long long o) { if(o < 0) result.sub_unsigned_long_long(-o); @@ -2476,7 +2476,7 @@ inline void add(mp_float& result, long long o) result.add_unsigned_long_long(o); } template -inline void subtract(mp_float& result, long long o) +inline void subtract(cpp_float& result, long long o) { if(o < 0) result.add_unsigned_long_long(-o); @@ -2484,7 +2484,7 @@ inline void subtract(mp_float& result, long long o) result.sub_unsigned_long_long(o); } template -inline void multiply(mp_float& result, long long o) +inline void multiply(cpp_float& result, long long o) { if(o < 0) { @@ -2495,7 +2495,7 @@ inline void multiply(mp_float& result, long long o) result.mul_unsigned_long_long(o); } template -inline void divide(mp_float& result, long long o) +inline void divide(cpp_float& result, long long o) { if(o < 0) { @@ -2507,17 +2507,17 @@ inline void divide(mp_float& result, long long o) } template -inline void convert_to(unsigned long long* result, const mp_float& val) +inline void convert_to(unsigned long long* result, const cpp_float& val) { *result = val.extract_unsigned_long_long(); } template -inline void convert_to(long long* result, const mp_float& val) +inline void convert_to(long long* result, const cpp_float& val) { *result = val.extract_signed_long_long(); } template -inline void convert_to(long double* result, mp_float& val) +inline void convert_to(long double* result, cpp_float& val) { *result = val.extract_long_double(); } @@ -2526,7 +2526,7 @@ inline void convert_to(long double* result, mp_float& val) // Non member function support: // template -inline int eval_fpclassify(const mp_float& x) +inline int eval_fpclassify(const cpp_float& x) { if(x.isinf()) return FP_INFINITE; @@ -2538,7 +2538,7 @@ inline int eval_fpclassify(const mp_float& x) } template -inline void eval_abs(mp_float& result, const mp_float& x) +inline void eval_abs(cpp_float& result, const cpp_float& x) { result = x; if(x.isneg()) @@ -2546,7 +2546,7 @@ inline void eval_abs(mp_float& result, const mp_float& x) } template -inline void eval_fabs(mp_float& result, const mp_float& x) +inline void eval_fabs(cpp_float& result, const cpp_float& x) { result = x; if(x.isneg()) @@ -2554,14 +2554,14 @@ inline void eval_fabs(mp_float& result, const mp_float& x) } template -inline void eval_sqrt(mp_float& result, const mp_float& x) +inline void eval_sqrt(cpp_float& result, const cpp_float& x) { result = x; result.calculate_sqrt(); } template -inline void eval_floor(mp_float& result, const mp_float& x) +inline void eval_floor(cpp_float& result, const cpp_float& x) { result = x; if(!x.isfinite() || x.isint()) @@ -2570,12 +2570,12 @@ inline void eval_floor(mp_float& result, const mp_float& x) } if(x.isneg()) - result -= mp_float::one(); + result -= cpp_float::one(); result = result.extract_integer_part(); } template -inline void eval_ceil(mp_float& result, const mp_float& x) +inline void eval_ceil(cpp_float& result, const cpp_float& x) { result = x; if(!x.isfinite() || x.isint()) @@ -2584,16 +2584,16 @@ inline void eval_ceil(mp_float& result, const mp_float& x) } if(!x.isneg()) - result += mp_float::one(); + result += cpp_float::one(); result = result.extract_integer_part(); } template -inline void eval_trunc(mp_float& result, const mp_float& x) +inline void eval_trunc(cpp_float& result, const cpp_float& x) { if(!x.isfinite()) { - result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(x), 0, boost::math::policies::policy<>()).backend(); + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(x), 0, boost::math::policies::policy<>()).backend(); return; } else if(x.isint()) @@ -2605,14 +2605,14 @@ inline void eval_trunc(mp_float& result, const mp_float& x) } template -inline void eval_ldexp(mp_float& result, const mp_float& x, long long e) +inline void eval_ldexp(cpp_float& result, const cpp_float& x, long long e) { result = x; - result *= mp_float::pow2(e); + result *= cpp_float::pow2(e); } template -inline void eval_frexp(mp_float& result, const mp_float& x, long long* e) +inline void eval_frexp(cpp_float& result, const cpp_float& x, long long* e) { result = x; if(result.isneg()) @@ -2624,16 +2624,16 @@ inline void eval_frexp(mp_float& result, const mp_float& x, throw std::runtime_error("Exponent is too large to be represented as a power of 2."); t *= 3; - result *= mp_float::pow2(-t); + result *= cpp_float::pow2(-t); - while(result.compare(mp_float::one()) >= 0) + while(result.compare(cpp_float::one()) >= 0) { - result /= mp_float::two(); + result /= cpp_float::two(); ++t; } - while(result.compare(mp_float::half()) < 0) + while(result.compare(cpp_float::half()) < 0) { - result *= mp_float::two(); + result *= cpp_float::two(); --t; } *e = t; @@ -2642,7 +2642,7 @@ inline void eval_frexp(mp_float& result, const mp_float& x, } template -inline void eval_frexp(mp_float& result, const mp_float& x, int* e) +inline void eval_frexp(cpp_float& result, const cpp_float& x, int* e) { long long t; eval_frexp(result, x, &t); @@ -2651,15 +2651,15 @@ inline void eval_frexp(mp_float& result, const mp_float& x, *e = static_cast(t); } -typedef mp_number > mp_float_50; -typedef mp_number > mp_float_100; +typedef mp_number > cpp_float_50; +typedef mp_number > cpp_float_100; }} namespace std { template - class numeric_limits > > + class numeric_limits > > { public: static const bool is_specialized = true; @@ -2670,13 +2670,13 @@ namespace std static const bool is_modulo = false; static const bool is_iec559 = false; static const int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); - static const int digits10 = boost::multiprecision::mp_float::mp_float_digits10; - static const int max_digits10 = boost::multiprecision::mp_float::mp_float_max_digits10; - static const boost::int64_t min_exponent = boost::multiprecision::mp_float::mp_float_min_exp; // Type differs from int. - static const boost::int64_t min_exponent10 = boost::multiprecision::mp_float::mp_float_min_exp10; // Type differs from int. - static const boost::int64_t max_exponent = boost::multiprecision::mp_float::mp_float_max_exp; // Type differs from int. - static const boost::int64_t max_exponent10 = boost::multiprecision::mp_float::mp_float_max_exp10; // Type differs from int. - static const int radix = boost::multiprecision::mp_float::mp_radix; + static const int digits10 = boost::multiprecision::cpp_float::cpp_float_digits10; + static const int max_digits10 = boost::multiprecision::cpp_float::cpp_float_max_digits10; + static const boost::int64_t min_exponent = boost::multiprecision::cpp_float::cpp_float_min_exp; // Type differs from int. + static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_float::cpp_float_min_exp10; // Type differs from int. + static const boost::int64_t max_exponent = boost::multiprecision::cpp_float::cpp_float_max_exp; // Type differs from int. + static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_float::cpp_float_max_exp10; // Type differs from int. + static const int radix = boost::multiprecision::cpp_float::mp_radix; static const std::float_round_style round_style = std::round_to_nearest; static const bool has_infinity = true; static const bool has_quiet_NaN = true; @@ -2686,15 +2686,15 @@ namespace std static const bool traps = false; static const bool tinyness_before = false; - static const boost::multiprecision::mp_number > (min) (void) throw() { return (boost::multiprecision::mp_float::min)(); } - static const boost::multiprecision::mp_number > (max) (void) throw() { return (boost::multiprecision::mp_float::max)(); } - static const boost::multiprecision::mp_number > lowest (void) throw() { return boost::multiprecision::mp_float::zero(); } - static const boost::multiprecision::mp_number > epsilon (void) throw() { return boost::multiprecision::mp_float::eps(); } - static const boost::multiprecision::mp_number > round_error (void) throw() { return 0.5L; } - static const boost::multiprecision::mp_number > infinity (void) throw() { return boost::multiprecision::mp_float::inf(); } - static const boost::multiprecision::mp_number > quiet_NaN (void) throw() { return boost::multiprecision::mp_float::nan(); } - static const boost::multiprecision::mp_number > signaling_NaN(void) throw() { return boost::multiprecision::mp_float::zero(); } - static const boost::multiprecision::mp_number > denorm_min (void) throw() { return boost::multiprecision::mp_float::zero(); } + static const boost::multiprecision::mp_number > (min) (void) throw() { return (boost::multiprecision::cpp_float::min)(); } + static const boost::multiprecision::mp_number > (max) (void) throw() { return (boost::multiprecision::cpp_float::max)(); } + static const boost::multiprecision::mp_number > lowest (void) throw() { return boost::multiprecision::cpp_float::zero(); } + static const boost::multiprecision::mp_number > epsilon (void) throw() { return boost::multiprecision::cpp_float::eps(); } + static const boost::multiprecision::mp_number > round_error (void) throw() { return 0.5L; } + static const boost::multiprecision::mp_number > infinity (void) throw() { return boost::multiprecision::cpp_float::inf(); } + static const boost::multiprecision::mp_number > quiet_NaN (void) throw() { return boost::multiprecision::cpp_float::nan(); } + static const boost::multiprecision::mp_number > signaling_NaN(void) throw() { return boost::multiprecision::cpp_float::zero(); } + static const boost::multiprecision::mp_number > denorm_min (void) throw() { return boost::multiprecision::cpp_float::zero(); } }; } @@ -2703,7 +2703,7 @@ namespace boost{ namespace math{ namespace policies{ template -struct precision< boost::multiprecision::mp_number >, Policy> +struct precision< boost::multiprecision::mp_number >, Policy> { typedef typename Policy::precision_type precision_type; typedef digits2<((Digits10 + 1) * 1000L) / 301L> digits_2; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 843e64cd..75fdb952 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -36,8 +36,8 @@ run test_arithmetic.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_arithmetic_mp_float ; + TEST_CPP_FLOAT + : test_arithmetic_cpp_float ; run test_arithmetic.cpp gmp : # command line @@ -146,9 +146,9 @@ run test_numeric_limits.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT + TEST_CPP_FLOAT [ check-target-builds ../config//has_mpfr : : no ] - : test_numeric_limits_mp_float ; + : test_numeric_limits_cpp_float ; run mp_number_concept_check.cpp mpfr : # command line @@ -202,8 +202,8 @@ run mp_number_concept_check.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : mp_number_concept_check_mp_float ; + TEST_CPP_FLOAT + : mp_number_concept_check_cpp_float ; run mp_number_concept_check.cpp : # command line @@ -312,50 +312,50 @@ run test_exp.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_exp_mp_float ; + TEST_CPP_FLOAT + : test_exp_cpp_float ; run test_log.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_log_mp_float ; + TEST_CPP_FLOAT + : test_log_cpp_float ; run test_pow.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_pow_mp_float ; + TEST_CPP_FLOAT + : test_pow_cpp_float ; run test_sinh.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_sinh_mp_float ; + TEST_CPP_FLOAT + : test_sinh_cpp_float ; run test_cosh.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_cosh_mp_float ; + TEST_CPP_FLOAT + : test_cosh_cpp_float ; run test_tanh.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_tanh_mp_float ; + TEST_CPP_FLOAT + : test_tanh_cpp_float ; run test_sin.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_sin_mp_float ; + TEST_CPP_FLOAT + : test_sin_cpp_float ; run test_sin.cpp gmp : # command line @@ -377,8 +377,8 @@ run test_cos.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_cos_mp_float ; + TEST_CPP_FLOAT + : test_cos_cpp_float ; run test_cos.cpp gmp : # command line @@ -400,8 +400,8 @@ run test_asin.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_asin_mp_float ; + TEST_CPP_FLOAT + : test_asin_cpp_float ; run test_asin.cpp gmp : # command line @@ -423,8 +423,8 @@ run test_acos.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_acos_mp_float ; + TEST_CPP_FLOAT + : test_acos_cpp_float ; run test_acos.cpp gmp : # command line @@ -454,8 +454,8 @@ run test_atan.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT - : test_atan_mp_float ; + TEST_CPP_FLOAT + : test_atan_cpp_float ; run test_atan.cpp mpfr : # command line @@ -489,7 +489,7 @@ run ../example/mpfr_snips.cpp mpfr : # requirements [ check-target-builds ../config//has_mpfr : : no ] ; -run ../example/mp_float_snips.cpp ; +run ../example/cpp_float_snips.cpp ; run test_round.cpp : # command line @@ -518,9 +518,9 @@ run test_round.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT + TEST_CPP_FLOAT [ check-target-builds ../config//has_mpfr : : no ] - : test_round_mp_float ; + : test_round_cpp_float ; run test_fpclassify.cpp : # command line @@ -549,7 +549,7 @@ run test_fpclassify.cpp : # command line : # input files : # requirements - TEST_MP_FLOAT + TEST_CPP_FLOAT [ check-target-builds ../config//has_mpfr : : no ] - : test_fpclassify_mp_float ; + : test_fpclassify_cpp_float ; diff --git a/test/linpack-benchmark.cpp b/test/linpack-benchmark.cpp index f4829101..42b1c3a2 100644 --- a/test/linpack-benchmark.cpp +++ b/test/linpack-benchmark.cpp @@ -25,9 +25,9 @@ typedef mpf_class real_type; #elif defined(TEST_MPFRXX) #include typedef mpfr_class real_type; -#elif defined(TEST_MP_FLOAT) -#include -typedef boost::multiprecision::mp_float_50 real_type; +#elif defined(TEST_CPP_FLOAT) +#include +typedef boost::multiprecision::cpp_float_50 real_type; #elif defined(TEST_MPFR_50) #include typedef boost::multiprecision::mpfr_float_50 real_type; @@ -102,8 +102,8 @@ extern "C" int MAIN__() #elif defined(TEST_MPFRXX) std::cout << "Testing mpfr_class at 50 decimal degits" << std::endl; mpfr_set_default_prec(((50 + 1) * 1000L) / 301L); -#elif defined(TEST_MP_FLOAT) - std::cout << "Testing mp_number >" << std::endl; +#elif defined(TEST_CPP_FLOAT) + std::cout << "Testing mp_number >" << std::endl; #else std::cout << "Testing double" << std::endl; #endif @@ -911,8 +911,8 @@ real_type epslon_(real_type *x) { #if defined(TEST_MPF_100) || defined(TEST_MPFR_100) || defined(TEST_GMPXX) || defined(TEST_MPFRXX) return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); -#elif defined(TEST_MP_FLOAT_BN) - return std::pow(10.0, 1-std::numeric_limits::digits10); +#elif defined(TEST_CPP_FLOAT_BN) + return std::pow(10.0, 1-std::numeric_limits::digits10); #else return CAST_TO_RT(std::numeric_limits::epsilon()); #endif @@ -1234,7 +1234,7 @@ mp_number >: times for array with leading dimension of1001 279.96 0.84 280.8 2.3813 0.83988 5014.3 -boost::multiprecision::ef::mp_float_50: +boost::multiprecision::ef::cpp_float_50: ~~~~~~~~~~~~~~~~~~~~~~~~~ norm. resid resid machep x(1) x(n) diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 35872d75..675aa2b7 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -5,7 +5,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // -// This tests two things: that mp_float_50 meets our +// This tests two things: that cpp_float_50 meets our // conceptual requirements, and that we can instantiate // all our distributions and special functions on this type. // @@ -21,7 +21,7 @@ #endif #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ - && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR_50)\ + && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50)\ && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) # define TEST_MPF_50 # define TEST_BACKEND @@ -31,7 +31,7 @@ # define TEST_MPFR_15 # define TEST_MPFR_17 # define TEST_MPFR_30 -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -48,8 +48,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) #include @@ -81,8 +81,8 @@ void foo() #ifdef TEST_MPFR_30 instantiate(boost::multiprecision::mp_number >()); #endif -#ifdef TEST_MP_FLOAT - instantiate(boost::multiprecision::mp_float_50()); +#ifdef TEST_CPP_FLOAT + instantiate(boost::multiprecision::cpp_float_50()); #endif } @@ -112,8 +112,8 @@ int main() #ifdef TEST_MPFR_50 BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif -#ifdef TEST_MP_FLOAT - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); +#ifdef TEST_CPP_FLOAT + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif } diff --git a/test/test_acos.cpp b/test/test_acos.cpp index f7e350c4..c2b1a074 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -96,9 +96,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index aa040478..db49a85b 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -6,14 +6,14 @@ #include #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ # define TEST_MPFR # define TEST_MPFR_50 -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT # define TEST_MPQ #ifdef _MSC_VER @@ -31,8 +31,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include @@ -861,8 +861,8 @@ int main() #ifdef TEST_MPQ test(); #endif -#ifdef TEST_MP_FLOAT - test(); +#ifdef TEST_CPP_FLOAT + test(); #endif #ifdef TEST_MPFR test(); diff --git a/test/test_asin.cpp b/test/test_asin.cpp index c8c1e810..2813f036 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -93,9 +93,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 0b07212f..b1176c6f 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -237,9 +237,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 53374292..aacd3ea4 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -282,9 +282,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index 76c4f976..89a002d2 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -128,9 +128,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 8f397d9e..a8cc428a 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -173,9 +173,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp index 044f8462..374382a8 100644 --- a/test/test_fpclassify.cpp +++ b/test/test_fpclassify.cpp @@ -10,11 +10,11 @@ #include #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 # define TEST_MPFR_50 # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -34,8 +34,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif #ifdef _MSC_VER @@ -312,9 +312,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif #ifdef TEST_BACKEND test >(); diff --git a/test/test_log.cpp b/test/test_log.cpp index 8c6e4b19..49c6d275 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -166,7 +166,11 @@ void test() e = relative_error(val, T(-data[k])); err = e.template convert_to(); if(err > max_err) + { max_err = err; + std::cout << val << std::endl; + std::cout << T(-data[k]) << std::endl; + } val = boost::multiprecision::log10(tenth + pi * (100 * k) * (100 * k)); e = relative_error(val, T(data[k] / logten)); @@ -199,9 +203,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 0dc9e7d0..ce87c5d6 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -5,14 +5,14 @@ #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND # define TEST_MPZ # define TEST_MPFR # define TEST_MPFR_50 -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT # define TEST_MPQ #ifdef _MSC_VER @@ -30,8 +30,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include @@ -159,9 +159,9 @@ int main() #ifdef TEST_MPQ test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif #ifdef TEST_MPFR test(); diff --git a/test/test_pow.cpp b/test/test_pow.cpp index a8ba5495..096a56c1 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT # define TEST_MPFR_50 #ifdef _MSC_VER @@ -37,8 +37,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -576,9 +576,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_round.cpp b/test/test_round.cpp index 31312c2f..5d0e2923 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -16,11 +16,11 @@ catch(...){ BOOST_ERROR("Incorrect exception type thrown"); } -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 # define TEST_MPFR_50 # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -40,8 +40,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif boost::mt19937 rng; @@ -387,9 +387,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif #ifdef TEST_BACKEND test >(); diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 702e1d06..e5ecbeb6 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -231,7 +231,12 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 T e = relative_error(val, small_data[k]); unsigned err = e.template convert_to(); if(err > max_err) + { + std::cout << val << std::endl; + std::cout << small_data[k] << std::endl; + std::cout << e << std::endl; max_err = err; + } val = sin(-(euler_gamma + k) / 53); e = relative_error(val, T(-small_data[k])); err = e.template convert_to(); @@ -285,8 +290,8 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); +#ifdef TEST_CPP_FLOAT + test(); #endif return boost::report_errors(); } diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index bddad689..8a626c99 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -128,9 +128,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index d226fc95..9b62aea8 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -12,11 +12,11 @@ #include #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 //# define TEST_MPF # define TEST_BACKEND -# define TEST_MP_FLOAT +# define TEST_CPP_FLOAT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,8 +36,8 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_MP_FLOAT -#include +#ifdef TEST_CPP_FLOAT +#include #endif template @@ -128,9 +128,9 @@ int main() test(); test(); #endif -#ifdef TEST_MP_FLOAT - test(); - test(); +#ifdef TEST_CPP_FLOAT + test(); + test(); #endif return boost::report_errors(); } From 0bf6917f18a236133872eef671d61689f21b3561 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 12 Nov 2011 13:16:39 +0000 Subject: [PATCH 059/256] Remove dead file. [SVN r75454] --- include/boost/multiprecision/mp_float.hpp | 2726 --------------------- 1 file changed, 2726 deletions(-) delete mode 100644 include/boost/multiprecision/mp_float.hpp diff --git a/include/boost/multiprecision/mp_float.hpp b/include/boost/multiprecision/mp_float.hpp deleted file mode 100644 index 13c41251..00000000 --- a/include/boost/multiprecision/mp_float.hpp +++ /dev/null @@ -1,2726 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright Christopher Kormanyos 2002 - 2011. -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// -// This work is based on an earlier work: -// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", -// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 -// - -#ifndef BOOST_MP_EFX_BACKEND_HPP -#define BOOST_MP_EFX_BACKEND_HPP - -#include -#include -#include - -// -// Headers required for Boost.Math integration: -// -#include - -namespace boost{ -namespace multiprecision{ - -template -class cpp_float -{ -public: - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list real_types; - typedef boost::int64_t exponent_type; - - - static const boost::int32_t mp_radix = 10; - static const boost::int32_t cpp_float_digits = Digits10; - - static const boost::int32_t cpp_float_digits10_setting = Digits10; - static const boost::int32_t cpp_float_digits10_limit = boost::integer_traits::const_max; - static const boost::int32_t cpp_float_digits10 = ((cpp_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_float_digits10_setting > cpp_float_digits10_limit) ? cpp_float_digits10_limit : cpp_float_digits10_setting)); - static const boost::int32_t cpp_float_digits10_extra = static_cast(((static_cast(cpp_float_digits10) * 15LL) + 50LL) / 100LL); - static const boost::int32_t cpp_float_max_digits10 = static_cast(cpp_float_digits10 + ((cpp_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_float_digits10_extra))); - static const boost::int64_t cpp_float_max_exp = static_cast(+9223372036854775795LL); - static const boost::int64_t cpp_float_min_exp = static_cast(-9223372036854775795LL); - static const boost::int64_t cpp_float_max_exp10 = static_cast(+3063937869882635616LL); // Approx. [cpp_float_max_exp / log10(2)], also an even multiple of 8 - static const boost::int64_t cpp_float_min_exp10 = static_cast(-3063937869882635616LL); - static const boost::int32_t mp_elem_digits10 = static_cast(8); - -private: - static const boost::int32_t cpp_float_digits10_num_base = static_cast((cpp_float_max_digits10 / mp_elem_digits10) + (((cpp_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); - static const boost::int32_t mp_elem_number = static_cast(cpp_float_digits10_num_base + 2); - static const boost::int32_t mp_elem_mask = static_cast(100000000); - - typedef enum enum_fpclass - { - mp_finite, - mp_inf, - mp_NaN - } - t_fpclass; - - typedef boost::array array_type; - - array_type data; - boost::int64_t exp; - bool neg; - t_fpclass fpclass; - boost::int32_t prec_elem; - - // - // Special values constructor: - // - cpp_float(t_fpclass c) : - data(), - exp (static_cast(0)), - neg (false), - fpclass (c), - prec_elem(mp_elem_number) { } - - // - // Static data initializer: - // - struct initializer - { - initializer() - { - cpp_float::nan(); - cpp_float::inf(); - (cpp_float::min)(); - (cpp_float::max)(); - cpp_float::zero(); - cpp_float::one(); - cpp_float::two(); - cpp_float::half(); - cpp_float::double_min(); - cpp_float::double_max(); - cpp_float::long_double_max(); - cpp_float::long_double_min(); - cpp_float::long_long_max(); - cpp_float::long_long_min(); - cpp_float::ulong_long_max(); - cpp_float::eps(); - cpp_float::pow2(0); - } - void do_nothing(){} - }; - - static initializer init; - -public: - // Constructors - cpp_float() : - data(), - exp (static_cast(0)), - neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) { } - - cpp_float(const char* s) : - data(), - exp (static_cast(0)), - neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) - { - *this = s; - } - - template - cpp_float(I i, typename enable_if >::type* = 0) : - data(), - exp (static_cast(0)), - neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) - { - from_unsigned_long_long(i); - } - - template - cpp_float(I i, typename enable_if >::type* = 0) : - data(), - exp (static_cast(0)), - neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) - { - if(i < 0) - { - from_unsigned_long_long(-i); - negate(); - } - else - from_unsigned_long_long(i); - } - - cpp_float(const cpp_float& f) : - data (f.data), - exp (f.exp), - neg (f.neg), - fpclass (f.fpclass), - prec_elem(f.prec_elem) { } - - template - cpp_float(const F val, typename enable_if >::type* = 0): - data(), - exp (static_cast(0)), - neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) - { - *this = val; - } - - cpp_float(const double val, long long exponent); - - // Specific special values. - static const cpp_float& nan() - { - static const cpp_float val(mp_NaN); - init.do_nothing(); - return val; - } - static const cpp_float& inf() - { - static const cpp_float val(mp_inf); - init.do_nothing(); - return val; - } - static const cpp_float& (max)() - { - init.do_nothing(); - static bool init = false; - static const std::string str_max = std::string("9." + std::string(static_cast(cpp_float_max_digits10), static_cast('9'))) - + std::string("e+" + boost::lexical_cast(cpp_float_max_exp10)); - static cpp_float val_max; - if(!init) - { - init = true; - val_max = str_max.c_str(); - } - return val_max; - } - - static const cpp_float& (min)() - { - init.do_nothing(); - static bool init = false; - static cpp_float val_min; - if(!init) - { - init = true; - val_min = std::string("1.0e" + boost::lexical_cast(cpp_float_min_exp10)).c_str(); - } - return val_min; - } - static const cpp_float& zero() - { - init.do_nothing(); - static cpp_float val(static_cast(0u)); - return val; - } - static const cpp_float& one() - { - init.do_nothing(); - static cpp_float val(static_cast(1u)); - return val; - } - static const cpp_float& two() - { - init.do_nothing(); - static cpp_float val(static_cast(2u)); - return val; - } - static const cpp_float& half() - { - init.do_nothing(); - static cpp_float val(0.5L); - return val; - } - static const cpp_float& double_min() - { - init.do_nothing(); - static cpp_float val(static_cast((std::numeric_limits::min)())); - return val; - } - static const cpp_float& double_max() - { - init.do_nothing(); - static cpp_float val(static_cast((std::numeric_limits::max)())); - return val; - } - static const cpp_float& long_double_min() - { - init.do_nothing(); - static cpp_float val((std::numeric_limits::min)()); - return val; - } - static const cpp_float& long_double_max() - { - init.do_nothing(); - static cpp_float val((std::numeric_limits::max)()); - return val; - } - static const cpp_float& long_long_max() - { - init.do_nothing(); - static cpp_float val((std::numeric_limits::max)()); - return val; - } - static const cpp_float& long_long_min() - { - init.do_nothing(); - static cpp_float val((std::numeric_limits::min)()); - return val; - } - static const cpp_float& ulong_long_max() - { - init.do_nothing(); - static cpp_float val((std::numeric_limits::max)()); - return val; - } - static const cpp_float& eps() - { - init.do_nothing(); - static cpp_float val(1.0, 1 - (int)Digits10); - return val; - } - - // Basic operations. - cpp_float& operator= (const cpp_float& v) - { - data = v.data; - exp = v.exp; - neg = v.neg; - fpclass = v.fpclass; - prec_elem = v.prec_elem; - return *this; - } - cpp_float& operator= (long long v) - { - if(v < 0) - { - from_unsigned_long_long(-v); - negate(); - } - else - from_unsigned_long_long(v); - return *this; - } - cpp_float& operator= (unsigned long long v) - { - from_unsigned_long_long(v); - return *this; - } - cpp_float& operator= (long double v); - cpp_float& operator= (const char* v) - { - rd_string(v); - return *this; - } - - cpp_float& operator+=(const cpp_float& v); - cpp_float& operator-=(const cpp_float& v); - cpp_float& operator*=(const cpp_float& v); - cpp_float& operator/=(const cpp_float& v); - - cpp_float& add_unsigned_long_long(const unsigned long long n) - { - cpp_float t; - t.from_unsigned_long_long(n); - return *this += t; - } - cpp_float& sub_unsigned_long_long(const unsigned long long n) - { - cpp_float t; - t.from_unsigned_long_long(n); - return *this -= t; - } - cpp_float& mul_unsigned_long_long(const unsigned long long n); - cpp_float& div_unsigned_long_long(const unsigned long long n); - - // Elementary primitives. - cpp_float& calculate_inv (void); - cpp_float& calculate_sqrt(void); - void negate() - { - if(!iszero()) - neg = !neg; - } - - // Comparison functions - bool isnan (void) const { return (fpclass == mp_NaN); } - bool isinf (void) const { return (fpclass == mp_inf); } - bool isfinite(void) const { return (fpclass == mp_finite); } - - bool iszero (void) const - { - return ((fpclass == mp_finite) && (data[0u] == 0u)); - } - bool isone (void) const; - bool isint (void) const; - bool isneg (void) const { return neg; } - - // Operators pre-increment and pre-decrement - cpp_float& operator++(void) - { - return *this += one(); - } - cpp_float& operator--(void) - { - return *this -= one(); - } - - std::string str(unsigned digits, bool scientific)const; - - int compare(const cpp_float& v)const; - template - int compare(const V& v)const - { - cpp_float t; - t = v; - return compare(t); - } - - void swap(cpp_float& v) - { - data.swap(v.data); - std::swap(exp, v.exp); - std::swap(neg, v.neg); - std::swap(fpclass, v.fpclass); - std::swap(prec_elem, v.prec_elem); - } - - double extract_double (void) const; - long double extract_long_double (void) const; - signed long long extract_signed_long_long (void) const; - unsigned long long extract_unsigned_long_long(void) const; - void extract_parts (double& mantissa, boost::int64_t& exponent) const; - cpp_float extract_integer_part (void) const; - void precision(const boost::int32_t prec_digits) - { - if(prec_digits >= cpp_float_digits10) - { - prec_elem = mp_elem_number; - } - else - { - const boost::int32_t elems = static_cast( static_cast( (prec_digits + (mp_elem_digits10 / 2)) / mp_elem_digits10) - + static_cast(((prec_digits % mp_elem_digits10) != 0) ? 1 : 0)); - - prec_elem = (std::min)(mp_elem_number, (std::max)(elems, static_cast(2))); - } - } - static cpp_float pow2(long long i); - long long order()const - { - const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); - // - // Binary search to find the order of the leading term: - // - boost::uint32_t prefix = 0; - - if(data[0] >= 100000UL) - { - if(data[0] >= 10000000UL) - { - if(data[0] >= 100000000UL) - { - if(data[0] >= 1000000000UL) - prefix = 9; - else - prefix = 8; - } - else - prefix = 7; - } - else - { - if(data[0] >= 1000000UL) - prefix = 6; - else - prefix = 5; - } - } - else - { - if(data[0] >= 1000UL) - { - if(data[0] >= 10000UL) - prefix = 4; - else - prefix = 3; - } - else - { - if(data[0] >= 100) - prefix = 2; - else if(data[0] >= 10) - prefix = 1; - } - } - - return (bo_order_is_zero ? static_cast(0) - : static_cast(exp + prefix)); - } - -private: - static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast(0u)); } - static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(cpp_float::mp_elem_mask - 1)); } - static bool char_is_nonzero_predicate(const char& c) { return (c != static_cast('0')); } - - void from_unsigned_long_long(const unsigned long long u); - - int cmp_data(const array_type& vd) const; - - static void mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p); - static boost::uint32_t mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); - static boost::uint32_t div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); - - bool rd_string(const char* const s); -}; - -template -typename cpp_float::initializer cpp_float::init; - -template -const boost::int32_t cpp_float::mp_radix; -template -const boost::int32_t cpp_float::cpp_float_digits; -template -const boost::int32_t cpp_float::cpp_float_digits10_setting; -template -const boost::int32_t cpp_float::cpp_float_digits10_limit; -template -const boost::int32_t cpp_float::cpp_float_digits10; -template -const boost::int32_t cpp_float::cpp_float_digits10_extra; -template -const boost::int32_t cpp_float::cpp_float_max_digits10; -template -const boost::int64_t cpp_float::cpp_float_max_exp; -template -const boost::int64_t cpp_float::cpp_float_min_exp; -template -const boost::int64_t cpp_float::cpp_float_max_exp10; -template -const boost::int64_t cpp_float::cpp_float_min_exp10; -template -const boost::int32_t cpp_float::mp_elem_digits10; -template -const boost::int32_t cpp_float::cpp_float_digits10_num_base; -template -const boost::int32_t cpp_float::mp_elem_number; -template -const boost::int32_t cpp_float::mp_elem_mask; - - -template -cpp_float& cpp_float::operator+=(const cpp_float& v) -{ - if(isnan()) - { - return *this; - } - - if(isinf()) - { - if(v.isinf() && (isneg() != v.isneg())) - { - *this = nan(); - } - return *this; - } - - if(iszero()) - { - return operator=(v); - } - - // Get the offset for the add/sub operation. - static const boost::int64_t max_delta_exp = static_cast((mp_elem_number - 1) * mp_elem_digits10); - - const boost::int64_t ofs_exp = static_cast(exp - v.exp); - - // Check if the operation is out of range, requiring special handling. - if(v.iszero() || (ofs_exp > max_delta_exp)) - { - // Result is *this unchanged since v is negligible compared to *this. - return *this; - } - else if(ofs_exp < -max_delta_exp) - { - // Result is *this = v since *this is negligible compared to v. - return operator=(v); - } - - // Do the add/sub operation. - - typename array_type::iterator p_u = data.begin(); - typename array_type::const_iterator p_v = v.data.begin(); - bool b_copy = false; - const boost::int32_t ofs = static_cast(static_cast(ofs_exp) / mp_elem_digits10); - array_type n_data; - - if(neg == v.neg) - { - // Add v to *this, where the data array of either *this or v - // might have to be treated with a positive, negative or zero offset. - // The result is stored in *this. The data are added one element - // at a time, each element with carry. - if(ofs >= static_cast(0)) - { - std::copy(v.data.begin(), v.data.end() - static_cast(ofs), n_data.begin() + static_cast(ofs)); - std::fill(n_data.begin(), n_data.begin() + static_cast(ofs), static_cast(0u)); - p_v = n_data.begin(); - } - else - { - std::copy(data.begin(), data.end() - static_cast(-ofs), n_data.begin() + static_cast(-ofs)); - std::fill(n_data.begin(), n_data.begin() + static_cast(-ofs), static_cast(0u)); - p_u = n_data.begin(); - b_copy = true; - } - - // Addition algorithm - boost::uint32_t carry = static_cast(0u); - - for(boost::int32_t j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) - { - boost::uint32_t t = static_cast(static_cast(p_u[j] + p_v[j]) + carry); - carry = t / static_cast(mp_elem_mask); - p_u[j] = static_cast(t - static_cast(carry * static_cast(mp_elem_mask))); - } - - if(b_copy) - { - data = n_data; - exp = v.exp; - } - - // There needs to be a carry into the element -1 of the array data - if(carry != static_cast(0u)) - { - std::copy_backward(data.begin(), data.end() - static_cast(1u), data.end()); - data[0] = carry; - exp += static_cast(mp_elem_digits10); - } - } - else - { - // Subtract v from *this, where the data array of either *this or v - // might have to be treated with a positive, negative or zero offset. - if((ofs > static_cast(0)) - || ( (ofs == static_cast(0)) - && (cmp_data(v.data) > static_cast(0))) - ) - { - // In this case, |u| > |v| and ofs is positive. - // Copy the data of v, shifted down to a lower value - // into the data array m_n. Set the operand pointer p_v - // to point to the copied, shifted data m_n. - std::copy(v.data.begin(), v.data.end() - static_cast(ofs), n_data.begin() + static_cast(ofs)); - std::fill(n_data.begin(), n_data.begin() + static_cast(ofs), static_cast(0u)); - p_v = n_data.begin(); - } - else - { - if(ofs != static_cast(0)) - { - // In this case, |u| < |v| and ofs is negative. - // Shift the data of u down to a lower value. - std::copy_backward(data.begin(), data.end() - static_cast(-ofs), data.end()); - std::fill(data.begin(), data.begin() + static_cast(-ofs), static_cast(0u)); - } - - // Copy the data of v into the data array n_data. - // Set the u-pointer p_u to point to m_n and the - // operand pointer p_v to point to the shifted - // data m_data. - n_data = v.data; - p_u = n_data.begin(); - p_v = data.begin(); - b_copy = true; - } - - boost::int32_t j; - - // Subtraction algorithm - boost::int32_t borrow = static_cast(0); - - for(j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) - { - boost::int32_t t = static_cast(static_cast( static_cast(p_u[j]) - - static_cast(p_v[j])) - borrow); - - // Underflow? Borrow? - if(t < static_cast(0)) - { - // Yes, underflow and borrow - t += static_cast(mp_elem_mask); - borrow = static_cast(1); - } - else - { - borrow = static_cast(0); - } - - p_u[j] = static_cast(static_cast(t) % static_cast(mp_elem_mask)); - } - - if(b_copy) - { - data = n_data; - exp = v.exp; - neg = v.neg; - } - - // Is it necessary to justify the data? - const typename array_type::const_iterator first_nonzero_elem = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); - - if(first_nonzero_elem != data.begin()) - { - if(first_nonzero_elem == data.end()) - { - // This result of the subtraction is exactly zero. - // Reset the sign and the exponent. - neg = false; - exp = static_cast(0); - } - else - { - // Justify the data - const std::size_t sj = static_cast(std::distance(data.begin(), first_nonzero_elem)); - - std::copy(data.begin() + static_cast(sj), data.end(), data.begin()); - std::fill(data.end() - sj, data.end(), static_cast(0u)); - - exp -= static_cast(sj * static_cast(mp_elem_digits10)); - } - } - } - - // Check for underflow. - if(iszero()) - { - return *this = zero(); - } - - bool overflow = exp >= cpp_float_max_exp; - if(exp == cpp_float_max_exp) - { - // Check to see if we really truely have an overflow or not... - if(isneg()) - { - cpp_float t(*this); - t.negate(); - overflow = t.compare((max)()) > 0; - } - else - { - overflow = compare((max)()) > 0; - } - } - - // Check for overflow. - if(overflow) - { - const bool b_result_is_neg = neg; - - *this = inf(); - if(b_result_is_neg) - negate(); - } - - return *this; -} - -template -cpp_float& cpp_float::operator-=(const cpp_float& v) -{ - // Use *this - v = -(-*this + v). - negate(); - *this += v; - negate(); - return *this; -} - -template -cpp_float& cpp_float::operator*=(const cpp_float& v) -{ - // Evaluate the sign of the result. - const bool b_result_is_neg = (neg != v.neg); - - // Artificially set the sign of the result to be positive. - neg = false; - - // Handle special cases like zero, inf and NaN. - const bool b_u_is_inf = isinf(); - const bool b_v_is_inf = v.isinf(); - const bool b_u_is_zero = iszero(); - const bool b_v_is_zero = v.iszero(); - - if( (isnan() || v.isnan()) - || (b_u_is_inf && b_v_is_zero) - || (b_v_is_inf && b_u_is_zero) - ) - { - *this = nan(); - return *this; - } - - if(b_u_is_inf || b_v_is_inf) - { - *this = inf(); - if(b_result_is_neg) - negate(); - return *this; - } - - if(b_u_is_zero || b_v_is_zero) - { - return *this = zero(); - } - - // Check for overflow or underflow. - const bool u_exp_is_neg = (exp < static_cast(0)); - const bool v_exp_is_neg = (v.exp < static_cast(0)); - - if(u_exp_is_neg == v_exp_is_neg) - { - // Get the unsigned base-10 exponents of *this and v and... - const boost::int64_t u_exp = ((!u_exp_is_neg) ? exp : static_cast( -exp)); - const boost::int64_t v_exp = ((!v_exp_is_neg) ? v.exp : static_cast(-v.exp)); - - // Check the range of the upcoming multiplication. - const bool b_result_is_out_of_range = (v_exp >= static_cast(cpp_float_max_exp10 - u_exp)); - - if(b_result_is_out_of_range) - { - if(u_exp_is_neg) - { - *this = zero(); - } - else - { - *this = inf(); - if(b_result_is_neg) - negate(); - } - return *this; - } - } - - // Set the exponent of the result. - exp += v.exp; - - boost::array(mp_elem_number + static_cast(1))> w = {{ 0u }}; - - mul_loop_uv(data.data(), v.data.data(), w.data(), (std::min)(prec_elem, v.prec_elem)); - - // Copy the multiplication data into the result. - // Shift the result and adjust the exponent if necessary. - if(w[static_cast(0u)] != static_cast(0u)) - { - exp += static_cast(mp_elem_digits10); - - std::copy(w.begin(), w.end() - 1u, data.begin()); - } - else - { - std::copy(w.begin() + 1u, w.end(), data.begin()); - } - - // Set the sign of the result. - neg = b_result_is_neg; - - return *this; -} - -template -cpp_float& cpp_float::operator/=(const cpp_float& v) -{ - const bool u_and_v_are_finite_and_identical = ( isfinite() - && (fpclass == v.fpclass) - && (exp == v.exp) - && (cmp_data(v.data) == static_cast(0))); - - if(u_and_v_are_finite_and_identical) - { - *this = one(); - if(neg != v.neg) - negate(); - return *this; - } - else - { - if(iszero()) - { - if(v.isnan() || v.iszero()) - { - return *this = v; - } - return *this; - } - cpp_float t(v); - t.calculate_inv(); - return operator*=(t); - } -} - -template -cpp_float& cpp_float::mul_unsigned_long_long(const unsigned long long n) -{ - // Multiply *this with a constant unsigned long long. - - // Evaluate the sign of the result. - const bool b_neg = neg; - - // Artificially set the sign of the result to be positive. - neg = false; - - // Handle special cases like zero, inf and NaN. - const bool b_u_is_inf = isinf(); - const bool b_n_is_zero = (n == static_cast(0)); - - if(isnan() || (b_u_is_inf && b_n_is_zero)) - { - return (*this = nan()); - } - - if(b_u_is_inf) - { - *this = inf(); - if(b_neg) - negate(); - return *this; - } - - if(iszero() || b_n_is_zero) - { - // Multiplication by zero. - return *this = zero(); - } - - if(n >= static_cast(mp_elem_mask)) - { - neg = b_neg; - cpp_float t; - t = n; - return operator*=(t); - } - - if(n == static_cast(1u)) - { - neg = b_neg; - return *this; - } - - // Set up the multiplication loop. - const boost::uint32_t nn = static_cast(n); - const boost::uint32_t carry = mul_loop_n(data.data(), nn, prec_elem); - - // Handle the carry and adjust the exponent. - if(carry != static_cast(0u)) - { - exp += static_cast(mp_elem_digits10); - - // Shift the result of the multiplication one element to the right. - std::copy_backward(data.begin(), - data.begin() + static_cast(prec_elem - static_cast(1)), - data.begin() + static_cast(prec_elem)); - - data.front() = static_cast(carry); - } - - bool overflow = exp >= cpp_float_max_exp; - if(exp == cpp_float_max_exp) - { - // Check to see if we really truely have an overflow or not... - if(isneg()) - { - cpp_float t(*this); - t.negate(); - overflow = t.compare((max)()) > 0; - } - else - { - overflow = compare((max)()) > 0; - } - } - - if(overflow) - { - *this = inf(); - if(b_neg) - negate(); - return *this; - } - - // Set the sign. - neg = b_neg; - - return *this; -} - -template -cpp_float& cpp_float::div_unsigned_long_long(const unsigned long long n) -{ - // Divide *this by a constant unsigned long long. - - // Evaluate the sign of the result. - const bool b_neg = neg; - - // Artificially set the sign of the result to be positive. - neg = false; - - // Handle special cases like zero, inf and NaN. - if(isnan()) - { - return *this; - } - - if(isinf()) - { - *this = inf(); - if(b_neg) - negate(); - return *this; - } - - if(n == static_cast(0u)) - { - // Divide by 0. - if(iszero()) - { - *this = nan(); - return *this; - } - else - { - *this = inf(); - if(isneg()) - negate(); - return *this; - } - } - - if(iszero()) - { - return *this; - } - - if(n >= static_cast(mp_elem_mask)) - { - neg = b_neg; - cpp_float t; - t = n; - return operator/=(t); - } - - const boost::uint32_t nn = static_cast(n); - - if(nn > static_cast(1u)) - { - // Do the division loop. - const boost::uint32_t prev = div_loop_n(data.data(), nn, prec_elem); - - // Determine if one leading zero is in the result data. - if(data[0] == static_cast(0u)) - { - // Adjust the exponent - exp -= static_cast(mp_elem_digits10); - - // Shift result of the division one element to the left. - std::copy(data.begin() + static_cast(1u), - data.begin() + static_cast(prec_elem - static_cast(1)), - data.begin()); - - data[prec_elem - static_cast(1)] = static_cast(static_cast(prev * static_cast(mp_elem_mask)) / nn); - } - } - - // Check for underflow. - if(iszero()) - { - return *this = zero(); - } - - // Set the sign of the result. - neg = b_neg; - - return *this; -} - -template -cpp_float& cpp_float::calculate_inv() -{ - // Compute the inverse of *this. - const bool b_neg = neg; - - neg = false; - - // Handle special cases like zero, inf and NaN. - if(iszero()) - { - *this = inf(); - if(b_neg) - negate(); - return *this; - } - - if(isnan()) - { - return *this; - } - - if(isinf()) - { - return *this = zero(); - } - - if(isone()) - { - if(b_neg) - negate(); - return *this; - } - - // Save the original *this. - cpp_float x(*this); - - // Generate the initial estimate using division. - // Extract the mantissa and exponent for a "manual" - // computation of the estimate. - double dd; - boost::int64_t ne; - x.extract_parts(dd, ne); - - // Do the inverse estimate using double precision estimates of mantissa and exponent. - operator=(cpp_float(1.0 / dd, -ne)); - - // Compute the inverse of *this. Quadratically convergent Newton-Raphson iteration - // is used. During the iterative steps, the precision of the calculation is limited - // to the minimum required in order to minimize the run-time. - - static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; - - for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= static_cast(2)) - { - // Adjust precision of the terms. - precision(static_cast(digits * static_cast(2))); - x.precision(static_cast(digits * static_cast(2))); - - // Next iteration. - cpp_float t(*this); - t *= x; - t -= two(); - t.negate(); - *this *= t; - } - - neg = b_neg; - - prec_elem = mp_elem_number; - - return *this; -} - -template -cpp_float& cpp_float::calculate_sqrt(void) -{ - // Compute the square root of *this. - - if(isneg() || (!isfinite())) - { - *this = nan(); - return *this; - } - - if(iszero() || isone()) - { - return *this; - } - - // Save the original *this. - cpp_float x(*this); - - // Generate the initial estimate using division. - // Extract the mantissa and exponent for a "manual" - // computation of the estimate. - double dd; - boost::int64_t ne; - extract_parts(dd, ne); - - // Force the exponent to be an even multiple of two. - if((ne % static_cast(2)) != static_cast(0)) - { - ++ne; - dd /= 10.0; - } - - // Setup the iteration. - // Estimate the square root using simple manipulations. - const double sqd = std::sqrt(dd); - - *this = cpp_float(sqd, static_cast(ne / static_cast(2))); - - // Estimate 1.0 / (2.0 * x0) using simple manipulations. - cpp_float vi(0.5 / sqd, static_cast(-ne / static_cast(2))); - - // Compute the square root of x. Coupled Newton iteration - // as described in "Pi Unleashed" is used. During the - // iterative steps, the precision of the calculation is - // limited to the minimum required in order to minimize - // the run-time. - // - // Book references: - // http://www.jjj.de/pibook/pibook.html - // http://www.amazon.com/exec/obidos/tg/detail/-/3540665722/qid=1035535482/sr=8-7/ref=sr_8_7/104-3357872-6059916?v=glance&n=507846 - - static const boost::uint32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); - - for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= 2u) - { - // Adjust precision of the terms. - precision(digits * 2); - vi.precision(digits * 2); - - // Next iteration of vi - cpp_float t(*this); - t *= vi; - t.negate(); - t.mul_unsigned_long_long(2u); - t += one(); - t *= vi; - vi += t; - - // Next iteration of *this - t = *this; - t *= *this; - t.negate(); - t += x; - t *= vi; - *this += t; - } - - prec_elem = mp_elem_number; - - return *this; -} - -template -int cpp_float::cmp_data(const array_type& vd) const -{ - // Compare the data of *this with those of v. - // Return +1 for *this > v - // 0 for *this = v - // -1 for *this < v - - const std::pair mismatch_pair = std::mismatch(data.begin(), data.end(), vd.begin()); - - const bool is_equal = ((mismatch_pair.first == data.end()) && (mismatch_pair.second == vd.end())); - - if(is_equal) - { - return 0; - } - else - { - return ((*mismatch_pair.first > *mismatch_pair.second) ? 1 : -1); - } -} - -template -int cpp_float::compare(const cpp_float& v) const -{ - // Compare v with *this. - // Return +1 for *this > v - // 0 for *this = v - // -1 for *this < v - - // Handle all non-finite cases. - if((!isfinite()) || (!v.isfinite())) - { - // NaN can never equal NaN. Return an implementation-dependent - // signed result. Also note that comparison of NaN with NaN - // using operators greater-than or less-than is undefined. - if(isnan() || v.isnan()) { return (isnan() ? 1 : -1); } - - if(isinf() && v.isinf()) - { - // Both *this and v are infinite. They are equal if they have the same sign. - // Otherwise, *this is less than v if and only if *this is negative. - return ((neg == v.neg) ? 0 : (neg ? -1 : 1)); - } - - if(isinf()) - { - // *this is infinite, but v is finite. - // So negative infinite *this is less than any finite v. - // Whereas positive infinite *this is greater than any finite v. - return (isneg() ? -1 : 1); - } - else - { - // *this is finite, and v is infinite. - // So any finite *this is greater than negative infinite v. - // Whereas any finite *this is less than positive infinite v. - return (v.neg ? 1 : -1); - } - } - - // And now handle all *finite* cases. - if(iszero()) - { - // The value of *this is zero and v is either zero or non-zero. - return (v.iszero() ? 0 - : (v.neg ? 1 : -1)); - } - else if(v.iszero()) - { - // The value of v is zero and *this is non-zero. - return (neg ? -1 : 1); - } - else - { - // Both *this and v are non-zero. - - if(neg != v.neg) - { - // The signs are different. - return (neg ? -1 : 1); - } - else if(exp != v.exp) - { - // The signs are the same and the exponents are different. - const int val_cmp_exp = ((exp < v.exp) ? 1 : -1); - - return (neg ? val_cmp_exp : -val_cmp_exp); - } - else - { - // The signs are the same and the exponents are the same. - // Compare the data. - const int val_cmp_data = cmp_data(v.data); - - return ((!neg) ? val_cmp_data : -val_cmp_data); - } - } -} - -template -bool cpp_float::isone() const -{ - // Check if the value of *this is identically 1 or very close to 1. - - const bool not_negative_and_is_finite = ((!neg) && isfinite()); - - if(not_negative_and_is_finite) - { - if((data[0u] == static_cast(1u)) && (exp == static_cast(0))) - { - const typename array_type::const_iterator it_non_zero = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); - return (it_non_zero == data.end()); - } - else if((data[0u] == static_cast(mp_elem_mask - 1)) && (exp == static_cast(-mp_elem_digits10))) - { - const typename array_type::const_iterator it_non_nine = std::find_if(data.begin(), data.end(), data_elem_is_non_nine_predicate); - return (it_non_nine == data.end()); - } - } - - return false; -} - -template -bool cpp_float::isint() const -{ - if(fpclass != mp_finite) { return false; } - - if(iszero()) { return true; } - - if(exp < static_cast(0)) { return false; } // |*this| < 1. - - const typename array_type::size_type offset_decimal_part = static_cast(exp / mp_elem_digits10) + 1u; - - if(offset_decimal_part >= static_cast(mp_elem_number)) - { - // The number is too large to resolve the integer part. - // It considered to be a pure integer. - return true; - } - - typename array_type::const_iterator it_non_zero = std::find_if(data.begin() + offset_decimal_part, data.end(), data_elem_is_non_zero_predicate); - - return (it_non_zero == data.end()); -} - -template -void cpp_float::extract_parts(double& mantissa, boost::int64_t& exponent) const -{ - // Extract the approximate parts mantissa and base-10 exponent from the input cpp_float value x. - - // Extracts the mantissa and exponent. - exponent = exp; - - boost::uint32_t p10 = static_cast(1u); - boost::uint32_t test = data[0u]; - - for(;;) - { - test /= static_cast(10u); - - if(test == static_cast(0u)) - { - break; - } - - p10 *= static_cast(10u); - ++exponent; - } - - mantissa = static_cast(data[0]) - + (static_cast(data[1]) / static_cast(mp_elem_mask)) - + ((static_cast(data[2]) / static_cast(mp_elem_mask)) / static_cast(mp_elem_mask)); - - mantissa /= static_cast(p10); - - if(neg) { mantissa = -mantissa; } -} - -template -double cpp_float::extract_double(void) const -{ - // Returns the double conversion of a cpp_float. - - // Check for non-normal cpp_float. - if(!isfinite()) - { - if(isnan()) - { - return std::numeric_limits::quiet_NaN(); - } - else - { - return ((!neg) ? std::numeric_limits::infinity() - : -std::numeric_limits::infinity()); - } - } - - cpp_float xx(*this); - if(xx.isneg()) - xx.negate(); - - // Check for zero cpp_float. - if(iszero() || (xx.compare(double_min()) < 0)) - { - return 0.0; - } - - // Check if cpp_float exceeds the maximum of double. - if(xx.compare(double_max()) > 0) - { - return ((!neg) ? std::numeric_limits::infinity() - : -std::numeric_limits::infinity()); - } - - std::stringstream ss; - - ss << str(std::numeric_limits::digits10 + (2 + 1), true); - - double d; - ss >> d; - - return d; -} - -template -long double cpp_float::extract_long_double(void) const -{ - // Returns the long double conversion of a cpp_float. - - // Check for non-normal cpp_float. - if(!isfinite()) - { - if(isnan()) - { - return std::numeric_limits::quiet_NaN(); - } - else - { - return ((!neg) ? std::numeric_limits::infinity() - : -std::numeric_limits::infinity()); - } - } - - cpp_float xx(*this); - if(xx.isneg()) - xx.negate(); - - // Check for zero cpp_float. - if(iszero() || (xx.compare(long_double_min()) < 0)) - { - return static_cast(0.0); - } - - // Check if cpp_float exceeds the maximum of double. - if(xx.compare(long_double_max()) > 0) - { - return ((!neg) ? std::numeric_limits::infinity() - : -std::numeric_limits::infinity()); - } - - std::stringstream ss; - - ss << str(std::numeric_limits::digits10 + (2 + 1), true); - - long double ld; - ss >> ld; - - return ld; -} - -template -signed long long cpp_float::extract_signed_long_long(void) const -{ - // Extracts a signed long long from *this. - // If (x > maximum of signed long long) or (x < minimum of signed long long), - // then the maximum or minimum of signed long long is returned accordingly. - - if(exp < static_cast(0)) - { - return static_cast(0); - } - - const bool b_neg = isneg(); - - unsigned long long val; - - if((!b_neg) && (compare(long_long_max()) > 0)) - { - return (std::numeric_limits::max)(); - } - else if(b_neg && (compare(long_long_min()) < 0)) - { - return (std::numeric_limits::min)(); - } - else - { - // Extract the data into an unsigned long long value. - cpp_float xn(extract_integer_part()); - if(xn.isneg()) - xn.negate(); - - val = static_cast(xn.data[0]); - - const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); - - for(boost::int32_t i = static_cast(1); i <= imax; i++) - { - val *= static_cast(mp_elem_mask); - val += static_cast(xn.data[i]); - } - } - - return ((!b_neg) ? static_cast(val) : static_cast(-static_cast(val))); -} - -template -unsigned long long cpp_float::extract_unsigned_long_long(void) const -{ - // Extracts an unsigned long long from *this. - // If x exceeds the maximum of unsigned long long, - // then the maximum of unsigned long long is returned. - // If x is negative, then the unsigned long long cast of - // the signed long long extracted value is returned. - - if(isneg()) - { - return static_cast(extract_signed_long_long()); - } - - if(exp < static_cast(0)) - { - return static_cast(0u); - } - - const cpp_float xn(extract_integer_part()); - - unsigned long long val; - - if(xn.compare(ulong_long_max()) > 0) - { - return (std::numeric_limits::max)(); - } - else - { - // Extract the data into an unsigned long long value. - val = static_cast(xn.data[0]); - - const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); - - for(boost::int32_t i = static_cast(1); i <= imax; i++) - { - val *= static_cast(mp_elem_mask); - val += static_cast(xn.data[i]); - } - } - - return val; -} - -template -cpp_float cpp_float::extract_integer_part(void) const -{ - // Compute the signed integer part of x. - - if(!isfinite()) - { - return *this; - } - - if(exp < static_cast(0)) - { - // The absolute value of the number is smaller than 1. - // Thus the integer part is zero. - return zero(); - } - else if(exp >= Digits10 - 1) - { - // The number is too large to resolve the integer part. - // Thus it is already a pure integer part. - return *this; - } - - // Make a local copy. - cpp_float x = *this; - - // Clear out the decimal portion - const size_t first_clear = (static_cast(x.exp) / static_cast(mp_elem_digits10)) + 1u; - const size_t last_clear = static_cast(mp_elem_number); - - std::fill(x.data.begin() + first_clear, x.data.begin() + last_clear, static_cast(0u)); - - return x; -} - -template -std::string cpp_float::str(std::size_t number_of_digits, bool scientific) const -{ - std::string str; - boost::int64_t my_exp = order(); - if(number_of_digits == 0) - number_of_digits = (std::numeric_limits::max)(); - // Determine the number of elements needed to provide the requested digits from cpp_float. - const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(mp_elem_digits10)) + 2u), - static_cast(mp_elem_number)); - - // Extract the remaining digits from cpp_float after the decimal point. - str = boost::lexical_cast(data[0]); - - // Extract all of the digits from cpp_float, beginning with the first data element. - for(std::size_t i = static_cast(1u); i < number_of_elements; i++) - { - std::stringstream ss; - - ss << std::setw(static_cast(mp_elem_digits10)) - << std::setfill(static_cast('0')) - << data[i]; - - str += ss.str(); - } - - // Cut the output to the size of the precision. - if(str.length() > number_of_digits) - { - // Get the digit after the last needed digit for rounding - const boost::uint32_t round = static_cast(static_cast(str.at(number_of_digits)) - static_cast('0')); - - // Truncate the string - str = str.substr(static_cast(0u), number_of_digits); - - if(round >= static_cast(5u)) - { - std::size_t ix = static_cast(str.length() - 1u); - - // Every trailing 9 must be rounded up - while(ix && (static_cast(str.at(ix)) - static_cast('0') == static_cast(9))) - { - str.at(ix) = static_cast('0'); - --ix; - } - - if(!ix) - { - // There were nothing but trailing nines. - if(static_cast(static_cast(str.at(ix)) - static_cast(0x30)) == static_cast(9)) - { - // Increment up to the next order and adjust exponent. - str.at(ix) = static_cast('1'); - ++my_exp; - } - else - { - // Round up this digit. - ++str.at(ix); - } - } - else - { - // Round up the last digit. - ++str[ix]; - } - } - } - // - // Suppress trailing zeros: - // - std::string::iterator pos = str.end(); - while(pos != str.begin() && *--pos == '0'){} - if(pos != str.end()) - ++pos; - str.erase(pos, str.end()); - if(str.empty()) - str = '0'; - if(!scientific && (str.size() < 20) && (my_exp >= 0) && (my_exp < 20)) - { - if(1 + my_exp > str.size()) - { - // Just pad out the end with zeros: - str.append(static_cast(1 + my_exp - str.size()), '0'); - } - else if(my_exp + 1 != str.size()) - { - // Insert the decimal point: - str.insert(static_cast(my_exp + 1), 1, '.'); - } - } - else - { - // Scientific format: - str.insert(1, 1, '.'); - if(str.size() == 2) - str.append(1, '0'); - str.append(1, 'e'); - str.append(boost::lexical_cast(my_exp)); - } - if(isneg()) - str.insert(0, 1, '-'); - return str; -} - -template -bool cpp_float::rd_string(const char* const s) -{ - std::string str(s); - - // Get a possible exponent and remove it. - exp = static_cast(0); - - std::size_t pos; - - if( ((pos = str.find('e')) != std::string::npos) - || ((pos = str.find('E')) != std::string::npos) - ) - { - // Remove the exponent part from the string. - exp = boost::lexical_cast(static_cast(str.c_str() + (pos + 1u))); - str = str.substr(static_cast(0u), pos); - } - - // Get a possible +/- sign and remove it. - neg = false; - - if((pos = str.find(static_cast('-'))) != std::string::npos) - { - neg = true; - str.erase(pos, static_cast(1u)); - } - - if((pos = str.find(static_cast('+'))) != std::string::npos) - { - str.erase(pos, static_cast(1u)); - } - - // Remove leading zeros for all input types. - const std::string::iterator fwd_it_leading_zero = std::find_if(str.begin(), str.end(), char_is_nonzero_predicate); - - if(fwd_it_leading_zero != str.begin()) - { - if(fwd_it_leading_zero == str.end()) - { - // The string contains nothing but leading zeros. - // This string represents zero. - operator=(zero()); - return true; - } - else - { - str.erase(str.begin(), fwd_it_leading_zero); - } - } - - // Put the input string into the standard cpp_float input form - // aaa.bbbbE+/-n, where aa has 1...mp_elem_digits10, bbbb has an - // even multiple of mp_elem_digits10 which are possibly zero padded - // on the right-end, and n is a signed 32-bit integer which is an - // even multiple of mp_elem_digits10. - - // Find a possible decimal point. - pos = str.find(static_cast('.')); - - if(pos != std::string::npos) - { - // Remove all trailing insignificant zeros. - const std::string::const_reverse_iterator rit_non_zero = std::find_if(str.rbegin(), str.rend(), char_is_nonzero_predicate); - - if(rit_non_zero != str.rbegin()) - { - const std::string::size_type ofs = str.length() - std::distance(str.rbegin(), rit_non_zero); - str.erase(str.begin() + ofs, str.end()); - } - - // Check if the input is identically zero. - if(str == std::string(".")) - { - operator=(zero()); - return true; - } - - // Remove leading significant zeros just after the decimal point - // and adjust the exponent accordingly. - // Note that the while-loop operates only on strings of the form ".000abcd..." - // and peels away the zeros just after the decimal point. - if(str.at(static_cast(0u)) == static_cast('.')) - { - const std::string::iterator it_non_zero = std::find_if(str.begin() + 1u, str.end(), char_is_nonzero_predicate); - - std::size_t delta_exp = static_cast(0u); - - if(str.at(static_cast(1u)) == static_cast('0')) - { - delta_exp = std::distance(str.begin() + 1u, it_non_zero); - } - - // Bring one single digit into the mantissa and adjust exponent accordingly. - str.erase(str.begin(), it_non_zero); - str.insert(static_cast(1u), "."); - exp -= static_cast(delta_exp + 1u); - } - } - else - { - // Input string has no decimal point: Append decimal point. - str.append("."); - } - - // Shift the decimal point such that the exponent is an even multiple of mp_elem_digits10. - std::size_t n_shift = static_cast(0u); - const std::size_t n_exp_rem = static_cast(exp % static_cast(mp_elem_digits10)); - - if((exp % static_cast(mp_elem_digits10)) != static_cast(0)) - { - n_shift = ((exp < static_cast(0)) - ? static_cast(n_exp_rem + static_cast(mp_elem_digits10)) - : static_cast(n_exp_rem)); - } - - // Make sure that there are enough digits for the decimal point shift. - pos = str.find(static_cast('.')); - - std::size_t pos_plus_one = static_cast(pos + 1u); - - if((str.length() - pos_plus_one) < n_shift) - { - const std::size_t sz = static_cast(n_shift - (str.length() - pos_plus_one)); - - str.append(std::string(sz, static_cast('0'))); - } - - // Do the decimal point shift. - if(n_shift != static_cast(0u)) - { - str.insert(static_cast(pos_plus_one + n_shift), "."); - - str.erase(pos, static_cast(1u)); - - exp -= static_cast(n_shift); - } - - // Cut the size of the mantissa to <= mp_elem_digits10. - pos = str.find(static_cast('.')); - pos_plus_one = static_cast(pos + 1u); - - if(pos > static_cast(mp_elem_digits10)) - { - const boost::int32_t n_pos = static_cast(pos); - const boost::int32_t n_rem_is_zero = ((static_cast(n_pos % mp_elem_digits10) == static_cast(0)) ? static_cast(1) : static_cast(0)); - const boost::int32_t n = static_cast(static_cast(n_pos / mp_elem_digits10) - n_rem_is_zero); - - str.insert(static_cast(static_cast(n_pos - static_cast(n * mp_elem_digits10))), "."); - - str.erase(pos_plus_one, static_cast(1u)); - - exp += static_cast(static_cast(n) * static_cast(mp_elem_digits10)); - } - - // Pad the decimal part such that its value is an even - // multiple of mp_elem_digits10. - pos = str.find(static_cast('.')); - pos_plus_one = static_cast(pos + 1u); - - const boost::int32_t n_dec = static_cast(static_cast(str.length() - 1u) - static_cast(pos)); - const boost::int32_t n_rem = static_cast(n_dec % mp_elem_digits10); - boost::int32_t n_cnt = ((n_rem != static_cast(0)) ? static_cast(mp_elem_digits10 - n_rem) - : static_cast(0)); - - if(n_cnt != static_cast(0)) - { - str.append(static_cast(n_cnt), static_cast('0')); - } - - // Truncate decimal part if it is too long. - const std::size_t max_dec = static_cast((mp_elem_number - 1) * mp_elem_digits10); - - if(static_cast(str.length() - pos) > max_dec) - { - str = str.substr(static_cast(0u), - static_cast(pos_plus_one + max_dec)); - } - - // Now the input string has the standard cpp_float input form. - // (See the comment above.) - - // Set all the data elements to 0. - std::fill(data.begin(), data.end(), static_cast(0u)); - - // Extract the data. - - // First get the digits to the left of the decimal point... - data[0u] = boost::lexical_cast(str.substr(static_cast(0u), pos)); - - // ...then get the remaining digits to the right of the decimal point. - const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast(mp_elem_digits10)); - - for(std::string::size_type i = static_cast(0u); i < i_end; i++) - { - const std::string::const_iterator it = str.begin() - + pos_plus_one - + (i * static_cast(mp_elem_digits10)); - - data[i + 1u] = boost::lexical_cast(std::string(it, it + static_cast(mp_elem_digits10))); - } - - // Check for overflow... - if(exp > cpp_float_max_exp10) - { - const bool b_result_is_neg = neg; - - *this = inf(); - if(b_result_is_neg) - negate(); - } - - // ...and check for underflow. - if(exp <= cpp_float_min_exp10) - { - if(exp == cpp_float_min_exp10) - { - // Check for identity with the minimum value. - cpp_float test = *this; - - test.exp = static_cast(0); - - if(test.isone()) - { - *this = zero(); - } - } - else - { - *this = zero(); - } - } - - return true; -} - -template -cpp_float::cpp_float(const double mantissa, const boost::int64_t exponent) - : data (), - exp (static_cast(0)), - neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) -{ - // Create an cpp_float from mantissa and exponent. - // This ctor does not maintain the full precision of double. - - const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits::min)() * (1.0 + std::numeric_limits::epsilon()))); - - if(mantissa_is_iszero) - { - std::fill(data.begin(), data.end(), static_cast(0u)); - return; - } - - const bool b_neg = (mantissa < 0.0); - - double d = ((!b_neg) ? mantissa : -mantissa); - boost::int64_t e = exponent; - - while(d > 10.0) { d /= 10.0; ++e; } - while(d < 1.0) { d *= 10.0; --e; } - - boost::int32_t shift = static_cast(e % static_cast(mp_elem_digits10)); - - while(static_cast(shift-- % mp_elem_digits10) != static_cast(0)) - { - d *= 10.0; - --e; - } - - exp = e; - neg = b_neg; - - std::fill(data.begin(), data.end(), static_cast(0u)); - - static const boost::int32_t digit_ratio = static_cast(static_cast(std::numeric_limits::digits10) / static_cast(mp_elem_digits10)); - static const boost::int32_t digit_loops = static_cast(digit_ratio + static_cast(2)); - - for(boost::int32_t i = static_cast(0); i < digit_loops; i++) - { - boost::uint32_t n = static_cast(static_cast(d)); - data[i] = static_cast(n); - d -= static_cast(n); - d *= static_cast(mp_elem_mask); - } -} - -template -cpp_float& cpp_float::operator = (long double a) -{ - // Christopher Kormanyos's original code used a cast to long long here, but that fails - // when long double has more digits than a long long. - using std::frexp; - using std::ldexp; - using std::floor; - - if (a == 0) { - return *this = zero(); - } - - if (a == 1) { - return *this = one(); - } - - if((boost::math::isinf)(a)) - { - return *this = inf(); - } - if((boost::math::isnan)(a)) - return *this = nan(); - - int e; - long double f, term; - *this = zero(); - - f = frexp(a, &e); - - static const int shift = std::numeric_limits::digits - 1; - - while(f) - { - // extract int sized bits from f: - f = ldexp(f, shift); - term = floor(f); - e -= shift; - *this *= pow2(shift); - if(term > 0) - add_unsigned_long_long(static_cast(term)); - else - sub_unsigned_long_long(static_cast(-term)); - f -= term; - } - if(e != 0) - *this *= pow2(e); - return *this; -} - -template -void cpp_float::from_unsigned_long_long(const unsigned long long u) -{ - std::fill(data.begin(), data.end(), static_cast(0u)); - - exp = static_cast(0); - neg = false; - fpclass = mp_finite; - prec_elem = mp_elem_number; - - std::size_t i =static_cast(0u); - - unsigned long long uu = u; - - boost::uint32_t temp[(std::numeric_limits::digits10 / static_cast(mp_elem_digits10)) + 3] = { static_cast(0u) }; - - while(uu != static_cast(0u)) - { - temp[i] = static_cast(uu % static_cast(mp_elem_mask)); - uu = static_cast(uu / static_cast(mp_elem_mask)); - ++i; - } - - if(i > static_cast(1u)) - { - exp += static_cast((i - 1u) * static_cast(mp_elem_digits10)); - } - - std::reverse(temp, temp + i); - std::copy(temp, temp + (std::min)(i, static_cast(mp_elem_number)), data.begin()); -} - -template -void cpp_float::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p) -{ - boost::uint64_t carry = static_cast(0u); - - for(boost::int32_t j = static_cast(p - 1u); j >= static_cast(0); j--) - { - boost::uint64_t sum = carry; - - for(boost::int32_t i = j; i >= static_cast(0); i--) - { - sum += static_cast(u[i] * static_cast(v[j - i])); - } - - w[j + 1] = static_cast(sum % static_cast(mp_elem_mask)); - carry = static_cast(sum / static_cast(mp_elem_mask)); - } - - w[0u] = static_cast(carry); -} - -template -boost::uint32_t cpp_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) -{ - boost::uint64_t carry = static_cast(0u); - - // Multiplication loop. - for(boost::int32_t j = p - 1; j >= static_cast(0); j--) - { - const boost::uint64_t t = static_cast(carry + static_cast(u[j] * static_cast(n))); - carry = static_cast(t / static_cast(mp_elem_mask)); - u[j] = static_cast(t - static_cast(static_cast(mp_elem_mask) * static_cast(carry))); - } - - return static_cast(carry); -} - -template -boost::uint32_t cpp_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) -{ - boost::uint64_t prev = static_cast(0u); - - for(boost::int32_t j = static_cast(0); j < p; j++) - { - const boost::uint64_t t = static_cast(u[j] + static_cast(prev * static_cast(mp_elem_mask))); - u[j] = static_cast(t / n); - prev = static_cast(t - static_cast(n * static_cast(u[j]))); - } - - return static_cast(prev); -} - -template -cpp_float cpp_float::pow2(const boost::int64_t p) -{ - // Create a static const table of p^2 for -128 < p < +128. - // Note: The size of this table must be odd-numbered and - // symmetric about 0. - init.do_nothing(); - static const boost::array, 255u> p2_data = - {{ - cpp_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), - cpp_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), - cpp_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"), - cpp_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"), - cpp_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"), - cpp_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"), - cpp_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"), - cpp_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"), - cpp_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"), - cpp_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"), - cpp_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"), - cpp_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"), - cpp_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"), - cpp_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"), - cpp_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"), - cpp_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"), - cpp_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"), - cpp_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"), - cpp_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"), - cpp_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"), - cpp_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"), - cpp_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"), - cpp_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"), - cpp_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"), - cpp_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"), - cpp_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"), - cpp_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"), - cpp_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"), - cpp_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"), - cpp_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"), - cpp_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"), - cpp_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"), - cpp_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"), - cpp_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"), - cpp_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"), - cpp_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"), - cpp_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"), - cpp_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"), - cpp_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"), - cpp_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"), - cpp_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"), - cpp_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"), - cpp_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"), - cpp_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"), - cpp_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"), - cpp_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"), - cpp_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"), - cpp_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"), - cpp_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"), - cpp_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"), - cpp_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"), - cpp_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"), - cpp_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"), - cpp_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"), - cpp_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"), - cpp_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"), - cpp_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"), - cpp_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"), - cpp_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"), - cpp_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"), - cpp_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"), - cpp_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"), - cpp_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"), - cpp_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"), - cpp_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"), - cpp_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"), - cpp_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"), - cpp_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"), - cpp_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"), - cpp_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"), - cpp_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"), - cpp_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"), - cpp_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"), - cpp_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"), - cpp_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"), - cpp_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"), - cpp_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"), - cpp_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"), - cpp_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"), - cpp_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"), - cpp_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - cpp_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - cpp_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - cpp_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - cpp_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - cpp_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - cpp_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - cpp_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - cpp_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - cpp_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - cpp_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - cpp_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - cpp_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - cpp_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - cpp_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - cpp_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_float("0.125"), - cpp_float("0.25"), - cpp_float("0.5"), - one(), - two(), - cpp_float(static_cast(4)), - cpp_float(static_cast(8)), - cpp_float(static_cast(16)), - cpp_float(static_cast(32)), - cpp_float(static_cast(64)), - cpp_float(static_cast(128)), - cpp_float(static_cast(256)), - cpp_float(static_cast(512)), - cpp_float(static_cast(1024)), - cpp_float(static_cast(2048)), - cpp_float(static_cast(4096)), - cpp_float(static_cast(8192)), - cpp_float(static_cast(16384)), - cpp_float(static_cast(32768)), - cpp_float(static_cast(65536)), - cpp_float(static_cast(131072)), - cpp_float(static_cast(262144)), - cpp_float(static_cast(524288)), - cpp_float(static_cast(1uL << 20u)), - cpp_float(static_cast(1uL << 21u)), - cpp_float(static_cast(1uL << 22u)), - cpp_float(static_cast(1uL << 23u)), - cpp_float(static_cast(1uL << 24u)), - cpp_float(static_cast(1uL << 25u)), - cpp_float(static_cast(1uL << 26u)), - cpp_float(static_cast(1uL << 27u)), - cpp_float(static_cast(1uL << 28u)), - cpp_float(static_cast(1uL << 29u)), - cpp_float(static_cast(1uL << 30u)), - cpp_float(static_cast(1uL << 31u)), - cpp_float(static_cast(1uLL << 32u)), - cpp_float(static_cast(1uLL << 33u)), - cpp_float(static_cast(1uLL << 34u)), - cpp_float(static_cast(1uLL << 35u)), - cpp_float(static_cast(1uLL << 36u)), - cpp_float(static_cast(1uLL << 37u)), - cpp_float(static_cast(1uLL << 38u)), - cpp_float(static_cast(1uLL << 39u)), - cpp_float(static_cast(1uLL << 40u)), - cpp_float(static_cast(1uLL << 41u)), - cpp_float(static_cast(1uLL << 42u)), - cpp_float(static_cast(1uLL << 43u)), - cpp_float(static_cast(1uLL << 44u)), - cpp_float(static_cast(1uLL << 45u)), - cpp_float(static_cast(1uLL << 46u)), - cpp_float(static_cast(1uLL << 47u)), - cpp_float(static_cast(1uLL << 48u)), - cpp_float(static_cast(1uLL << 49u)), - cpp_float(static_cast(1uLL << 50u)), - cpp_float(static_cast(1uLL << 51u)), - cpp_float(static_cast(1uLL << 52u)), - cpp_float(static_cast(1uLL << 53u)), - cpp_float(static_cast(1uLL << 54u)), - cpp_float(static_cast(1uLL << 55u)), - cpp_float(static_cast(1uLL << 56u)), - cpp_float(static_cast(1uLL << 57u)), - cpp_float(static_cast(1uLL << 58u)), - cpp_float(static_cast(1uLL << 59u)), - cpp_float(static_cast(1uLL << 60u)), - cpp_float(static_cast(1uLL << 61u)), - cpp_float(static_cast(1uLL << 62u)), - cpp_float(static_cast(1uLL << 63u)), - cpp_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - cpp_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - cpp_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - cpp_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - cpp_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - cpp_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - cpp_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - cpp_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - cpp_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - cpp_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - cpp_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - cpp_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - cpp_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"), - cpp_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"), - cpp_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"), - cpp_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"), - cpp_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"), - cpp_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"), - cpp_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"), - cpp_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"), - cpp_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"), - cpp_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"), - cpp_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"), - cpp_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"), - cpp_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"), - cpp_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"), - cpp_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"), - cpp_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"), - cpp_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"), - cpp_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"), - cpp_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"), - cpp_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"), - cpp_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"), - cpp_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"), - cpp_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"), - cpp_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"), - cpp_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"), - cpp_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"), - cpp_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"), - cpp_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"), - cpp_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"), - cpp_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"), - cpp_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"), - cpp_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") - }}; - - if((p > static_cast(-128)) && (p < static_cast(+128))) - { - return p2_data[static_cast(p + ((p2_data.size() - 1u) / 2u))]; - } - - // Compute and return 2^p. - if(p < static_cast(0)) - { - return pow2(static_cast(-p)).calculate_inv(); - } - else if(p < static_cast(std::numeric_limits::digits)) - { - const boost::uint64_t p2 = static_cast(static_cast(1uLL) << p); - return cpp_float(p2); - } - else - { - cpp_float t; - default_ops::detail::pow_imp(t, two(), p, mpl::true_()); - return t; - } -} - - -template -inline void add(cpp_float& result, const cpp_float& o) -{ - result += o; -} -template -inline void subtract(cpp_float& result, const cpp_float& o) -{ - result -= o; -} -template -inline void multiply(cpp_float& result, const cpp_float& o) -{ - result *= o; -} -template -inline void divide(cpp_float& result, const cpp_float& o) -{ - result /= o; -} - -template -inline void add(cpp_float& result, const unsigned long long& o) -{ - result.add_unsigned_long_long(o); -} -template -inline void subtract(cpp_float& result, const unsigned long long& o) -{ - result.sub_unsigned_long_long(o); -} -template -inline void multiply(cpp_float& result, const unsigned long long& o) -{ - result.mul_unsigned_long_long(o); -} -template -inline void divide(cpp_float& result, const unsigned long long& o) -{ - result.div_unsigned_long_long(o); -} - -template -inline void add(cpp_float& result, long long o) -{ - if(o < 0) - result.sub_unsigned_long_long(-o); - else - result.add_unsigned_long_long(o); -} -template -inline void subtract(cpp_float& result, long long o) -{ - if(o < 0) - result.add_unsigned_long_long(-o); - else - result.sub_unsigned_long_long(o); -} -template -inline void multiply(cpp_float& result, long long o) -{ - if(o < 0) - { - result.mul_unsigned_long_long(-o); - result.negate(); - } - else - result.mul_unsigned_long_long(o); -} -template -inline void divide(cpp_float& result, long long o) -{ - if(o < 0) - { - result.div_unsigned_long_long(-o); - result.negate(); - } - else - result.div_unsigned_long_long(o); -} - -template -inline void convert_to(unsigned long long* result, const cpp_float& val) -{ - *result = val.extract_unsigned_long_long(); -} -template -inline void convert_to(long long* result, const cpp_float& val) -{ - *result = val.extract_signed_long_long(); -} -template -inline void convert_to(long double* result, cpp_float& val) -{ - *result = val.extract_long_double(); -} - -// -// Non member function support: -// -template -inline int eval_fpclassify(const cpp_float& x) -{ - if(x.isinf()) - return FP_INFINITE; - if(x.isnan()) - return FP_NAN; - if(x.iszero()) - return FP_ZERO; - return FP_NORMAL; -} - -template -inline void eval_abs(cpp_float& result, const cpp_float& x) -{ - result = x; - if(x.isneg()) - result.negate(); -} - -template -inline void eval_fabs(cpp_float& result, const cpp_float& x) -{ - result = x; - if(x.isneg()) - result.negate(); -} - -template -inline void eval_sqrt(cpp_float& result, const cpp_float& x) -{ - result = x; - result.calculate_sqrt(); -} - -template -inline void eval_floor(cpp_float& result, const cpp_float& x) -{ - result = x; - if(!x.isfinite() || x.isint()) - { - return; - } - - if(x.isneg()) - result -= cpp_float::one(); - result = result.extract_integer_part(); -} - -template -inline void eval_ceil(cpp_float& result, const cpp_float& x) -{ - result = x; - if(!x.isfinite() || x.isint()) - { - return; - } - - if(!x.isneg()) - result += cpp_float::one(); - result = result.extract_integer_part(); -} - -template -inline void eval_trunc(cpp_float& result, const cpp_float& x) -{ - if(!x.isfinite()) - { - result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(x), 0, boost::math::policies::policy<>()).backend(); - return; - } - else if(x.isint()) - { - result = x; - return; - } - result = x.extract_integer_part(); -} - -template -inline void eval_ldexp(cpp_float& result, const cpp_float& x, long long e) -{ - result = x; - result *= cpp_float::pow2(e); -} - -template -inline void eval_frexp(cpp_float& result, const cpp_float& x, long long* e) -{ - result = x; - if(result.isneg()) - result.negate(); - - long long t = result.order(); - - if(std::abs(t) > (std::numeric_limits::max)() / 3) - throw std::runtime_error("Exponent is too large to be represented as a power of 2."); - t *= 3; - - result *= cpp_float::pow2(-t); - - while(result.compare(cpp_float::one()) >= 0) - { - result /= cpp_float::two(); - ++t; - } - while(result.compare(cpp_float::half()) < 0) - { - result *= cpp_float::two(); - --t; - } - *e = t; - if(x.isneg()) - result.negate(); -} - -template -inline void eval_frexp(cpp_float& result, const cpp_float& x, int* e) -{ - long long t; - eval_frexp(result, x, &t); - if(t > (std::numeric_limits::max)()) - throw std::runtime_error("Exponent is outside the range of an int"); - *e = static_cast(t); -} - -typedef mp_number > cpp_float_50; -typedef mp_number > cpp_float_100; - -}} - -namespace std -{ - template - class numeric_limits > > - { - public: - static const bool is_specialized = true; - static const bool is_signed = true; - static const bool is_integer = false; - static const bool is_exact = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - static const bool is_iec559 = false; - static const int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); - static const int digits10 = boost::multiprecision::cpp_float::cpp_float_digits10; - static const int max_digits10 = boost::multiprecision::cpp_float::cpp_float_max_digits10; - static const boost::int64_t min_exponent = boost::multiprecision::cpp_float::cpp_float_min_exp; // Type differs from int. - static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_float::cpp_float_min_exp10; // Type differs from int. - static const boost::int64_t max_exponent = boost::multiprecision::cpp_float::cpp_float_max_exp; // Type differs from int. - static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_float::cpp_float_max_exp10; // Type differs from int. - static const int radix = boost::multiprecision::cpp_float::mp_radix; - static const std::float_round_style round_style = std::round_to_nearest; - static const bool has_infinity = true; - static const bool has_quiet_NaN = true; - static const bool has_signaling_NaN = false; - static const std::float_denorm_style has_denorm = std::denorm_absent; - static const bool has_denorm_loss = false; - static const bool traps = false; - static const bool tinyness_before = false; - - static const boost::multiprecision::mp_number > (min) (void) throw() { return (boost::multiprecision::cpp_float::min)(); } - static const boost::multiprecision::mp_number > (max) (void) throw() { return (boost::multiprecision::cpp_float::max)(); } - static const boost::multiprecision::mp_number > lowest (void) throw() { return boost::multiprecision::cpp_float::zero(); } - static const boost::multiprecision::mp_number > epsilon (void) throw() { return boost::multiprecision::cpp_float::eps(); } - static const boost::multiprecision::mp_number > round_error (void) throw() { return 0.5L; } - static const boost::multiprecision::mp_number > infinity (void) throw() { return boost::multiprecision::cpp_float::inf(); } - static const boost::multiprecision::mp_number > quiet_NaN (void) throw() { return boost::multiprecision::cpp_float::nan(); } - static const boost::multiprecision::mp_number > signaling_NaN(void) throw() { return boost::multiprecision::cpp_float::zero(); } - static const boost::multiprecision::mp_number > denorm_min (void) throw() { return boost::multiprecision::cpp_float::zero(); } - }; -} - -namespace boost{ namespace math{ - -namespace policies{ - -template -struct precision< boost::multiprecision::mp_number >, Policy> -{ - typedef typename Policy::precision_type precision_type; - typedef digits2<((Digits10 + 1) * 1000L) / 301L> digits_2; - typedef typename mpl::if_c< - ((digits_2::value <= precision_type::value) - || (Policy::precision_type::value <= 0)), - // Default case, full precision for RealType: - digits_2, - // User customised precision: - precision_type - >::type type; -}; - -} // namespace policies - -}} // namespaces boost::math - - -#endif - From 40d1b2f1dd90e0ff52ca27f98ce603badc3efd0c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 13 Nov 2011 17:36:39 +0000 Subject: [PATCH 060/256] Add sqrt tests. Fix remaining cpp_float failures. [SVN r75478] --- include/boost/multiprecision/cpp_float.hpp | 12 +- .../multiprecision/detail/functions/trig.hpp | 13 ++ test/Jamfile.v2 | 3 +- test/test_asin.cpp | 2 - test/test_log.cpp | 2 - test/test_sin.cpp | 3 - test/test_sqrt.cpp | 190 ++++++++++++++++++ 7 files changed, 213 insertions(+), 12 deletions(-) create mode 100644 test/test_sqrt.cpp diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 13c41251..17bf1c90 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -850,9 +850,13 @@ cpp_float& cpp_float::operator/=(const cpp_float& if(u_and_v_are_finite_and_identical) { - *this = one(); if(neg != v.neg) + { + *this = one(); negate(); + } + else + *this = one(); return *this; } else @@ -1108,7 +1112,7 @@ cpp_float& cpp_float::calculate_inv() static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; - for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= static_cast(2)) + for(boost::uint32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= static_cast(2)) { // Adjust precision of the terms. precision(static_cast(digits * static_cast(2))); @@ -1181,9 +1185,9 @@ cpp_float& cpp_float::calculate_sqrt(void) // http://www.jjj.de/pibook/pibook.html // http://www.amazon.com/exec/obidos/tg/detail/-/3540665722/qid=1035535482/sr=8-7/ref=sr_8_7/104-3357872-6059916?v=glance&n=507846 - static const boost::uint32_t double_digits10_minus_one = static_cast(static_cast(Digits10) - static_cast(1)); + static const boost::uint32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; - for(boost::uint32_t digits = double_digits10_minus_one; digits <= Digits10; digits *= 2u) + for(boost::uint32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= 2u) { // Adjust precision of the terms. precision(digits * 2); diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index 7aca7e53..cf2b8dd2 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -653,6 +653,19 @@ void eval_atan(T& result, const T& x) template void eval_atan2(T& result, const T& y, const T& x) { + if(&result == &y) + { + T temp(y); + eval_atan2(result, temp, x); + return; + } + else if(&result == &x) + { + T temp(x); + eval_atan2(result, y, temp); + return; + } + typedef typename boost::multiprecision::detail::canonical::type si_type; typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 75fdb952..83de9b40 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -489,7 +489,7 @@ run ../example/mpfr_snips.cpp mpfr : # requirements [ check-target-builds ../config//has_mpfr : : no ] ; -run ../example/cpp_float_snips.cpp ; +run ../example/mp_float_snips.cpp ; run test_round.cpp : # command line @@ -553,3 +553,4 @@ run test_fpclassify.cpp [ check-target-builds ../config//has_mpfr : : no ] : test_fpclassify_cpp_float ; + diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 2813f036..834e6bf1 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -69,8 +69,6 @@ void test() err = e.template convert_to(); if(err > max_err) { - std::cout << val << std::endl; - std::cout << -exact_data[k][0] << std::endl; max_err = err; } } diff --git a/test/test_log.cpp b/test/test_log.cpp index 49c6d275..ff7b8b5a 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -168,8 +168,6 @@ void test() if(err > max_err) { max_err = err; - std::cout << val << std::endl; - std::cout << T(-data[k]) << std::endl; } val = boost::multiprecision::log10(tenth + pi * (100 * k) * (100 * k)); diff --git a/test/test_sin.cpp b/test/test_sin.cpp index e5ecbeb6..d320ac1d 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -232,9 +232,6 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 unsigned err = e.template convert_to(); if(err > max_err) { - std::cout << val << std::endl; - std::cout << small_data[k] << std::endl; - std::cout << e << std::endl; max_err = err; } val = sin(-(euler_gamma + k) / 53); diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp new file mode 100644 index 00000000..f3cfad43 --- /dev/null +++ b/test/test_sqrt.cpp @@ -0,0 +1,190 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#include +#include +#include "test.hpp" + +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +template +void test() +{ + static const boost::array data = + {{ + T("0"), + T("1.7724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021"), + T("2.506628274631000502415765284811045253006986740609938316629923576342293654607841974946595838378057266116009972665203879644866323618126736180957855655966147931913435480458123731137327804313019938802647150234465504898425802329413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739697252377702538748247848633488642597506589513095738763427251926880402"), + T("3.0699801238394654654386548746677945821221293132529234536092078633942877416889511494096190816646754176075937074244926190270345429405099416216417975877667492169521054332143197658279274969526803993603118331066475990710709664118358901594985707262626428113026982211562266383695623138538180531502756293265592878111781185072888638355377253555018107077854544789544383440520575813285321747411416665951698336554"), + T("3.5449077018110320545963349666822903655950989122447742564276155797058225691820643627499013134770893308324536472485651413324723057314488452050501874192055741369240753973062102456998503460579016524578641907585359256003492780307029594410334003803704680371708939489898252806278435510518124328108386650018127968152274669549503068673359795787317036728175909023303234775201181347868635826656197096924963698041"), + T("3.9633272976060110133450287651201830315223597563961947927072580621967387180265716572287741878596340312327405647932953536228865576823564748759947646553751734998345995939694212511640273087471173966245241872854466233365203399138209787201764302154653389399844478265349330231414848625437655715466042970013389483751348124861944502103329498799507208968519689075130370544887031405163197191213743249921794351351"), + T("4.3416075273496059561780877637447746072326533687072755618572739666222092317177743715006976894086930825786781544103546196765147228208117261527925650444366222660658062788515204204290333579229705891625284205192508929083683171545403426350581368076912529151526695869265253040752801155830676216390514320781159868843187117008896251829228661529973809619044473853320316190549204385101682005396209108634347068051"), + T("4.6894720998347514072224884956178300284641581320824106981633983758453256799744598320502835518976559264849872655758786968460389643339445673551269229241587961003379434250163073293499620997874074698516457801989721178630024470871191608919926005831108426583129390228179129584616970283973090935125037470398636450816554023533350528106738423929159432353981681442386558251657700009494385592281294126884159744657"), + T("5.0132565492620010048315305696220905060139734812198766332598471526845873092156839498931916767561145322320199453304077592897326472362534723619157113119322958638268709609162474622746556086260398776052943004689310097968516046588277255593373672260673516476883623121569801912000827503005505833029224516877237298413981218533281823760314793945047554050774964956972669772851950131790261914775268545038537608041"), + T("5.3173615527165480818945024500234355483926483683671613846414233695587338537730965441248519702156339962486804708728477119987084585971732678075752811288083612053861130959593153685497755190868524786867962861378038884005239170460544391615501005705557020557563409234847379209417653265777186492162579975027191952228412004324254603010039693680975555092263863534954852162801772021802953739984295645387445547062"), + T("5.6049912163979286993112824338688008938543237752107832649583533936522833776518879743363843375245853739417146705744562990455542075539831517566644946677745451618612727648966621311978378350382925082779759505143787044093893128068035895930171543641983336476166511254286056162309665822553855728700099730566135263229310482770603702313599779589939672325828370865928422053430400072831171741334547285379289682272"), + T("5.8785643816741282350544208778970709719984349210386743751731421071573245581781685524668778017649261234929950374883647452602146761146149358621791392549585140581629668270696079138391334037573962811189827061481326675520008356479940776678802748553233235202402722469819906081593819717286567095640228930465862438974894553668787148856578760128886389981154414656617912505436134549129966633314429654846358015259"), + T("6.1399602476789309308773097493355891642442586265058469072184157267885754833779022988192381633293508352151874148489852380540690858810198832432835951755334984339042108664286395316558549939053607987206236662132951981421419328236717803189971414525252856226053964423124532767391246277076361063005512586531185756223562370145777276710754507110036214155709089579088766881041151626570643494822833331903396673108"), + T("6.3906732428334428261259345606683697744186991536295350856572952536792334275205803679271798801956028881370696845677932311660934936022581339690170211061979607805733455201951479794666965209869986063436354009130926493418080814534089804341799659379279227089093453978416225274321462755382516029668891204905799575745973313377842838152883214737404214320108342272339141901742347633007754961396966894396055218335"), + T("6.6319150439565422209346322551709504425716735849288353552017602534239577421171265746820083094212110964436394134010761548512808504941585541646833262349861354253649509838599508444233906260858397863860491814334791305676062694775880372125594128993954478298062410594772628739424601593453063666245276274089103412069272086098919187261711687627099337914569206834456380008016156884529727902326858088262113926506"), + T("6.8646842464782674501407002511771796402482345158456677029870019960868679981055033418327138403618402473871307535713830436350072970119200914833099051433782215491766416984101933198510637348024255711982258019646531673420782186308197017640254188794990907965118086055013577841433086632978528558423768612444566483278359963402485448887021894326224663275495307768561423891711354763179723690983043995316901267288"), + T("7.0898154036220641091926699333645807311901978244895485128552311594116451383641287254998026269541786616649072944971302826649446114628976904101003748384111482738481507946124204913997006921158033049157283815170718512006985560614059188820668007607409360743417878979796505612556871021036248656216773300036255936304549339099006137346719591574634073456351818046606469550402362695737271653312394193849927396082"), + T("7.3080144438162192957641041416982527245725757227305100451197343989892588739821761414808182301620094920283430190134112374199876901202971502696155007476535432232511740870601931279580970011543206100142223236655886609010356942017275197137478321035055972286226075962614582069104333896744606536872975969818688237536119023271082556121464860312141980207823280639488597150891408230800059272527978401067077953752"), + T("7.5198848238930015072472958544331357590209602218298149498897707290268809638235259248397875151341717983480299179956116389345989708543802085428735669678984437957403064413743711934119834129390598164079414507033965146952774069882415883390060508391010274715325434682354702868001241254508258749543836775315855947620971827799922735640472190917571331076162447435459004659277925197685392872162902817557806412061"), + T("7.7259472181866523240047447857321216411382058048896371981452984461525717139136608383759839184128073783247516939318227254188667186252920148976230121738172757350696910761931890703374371352358496474852223543486038624030825959222662530865956553207195355499692117829480399491662056117052329890340838528765941430191040119361471649248115254864172681901246179411702783591299133670884083665071028145395467905989"), + T("7.9266545952120220266900575302403660630447195127923895854145161243934774360531433144575483757192680624654811295865907072457731153647129497519895293107503469996691991879388425023280546174942347932490483745708932466730406798276419574403528604309306778799688956530698660462829697250875311430932085940026778967502696249723889004206658997599014417937039378150260741089774062810326394382427486499843588702701"), + T("8.1224039375904999377505608579034490537406469390188453967144182984533857877290325940614418824321939803516927684051300838316226942055451781105993601208197552034439458355062514914010489070985895267530389722733907460105781807411858969857115513607918067972038272323523153845863300953401051857105777813389049407583848705460609239380620914585791645607237224057116980335542916058764975650602331697086068450513"), + T("8.3135454758469596794056637871226727528862453946735918624095026138842010906353046929837281458679232254339472365667835656180555764317605853990925880640952695214325626531682928857436719230013491132666257954067248287299135662202926101799336433744666850543864886828346127739925910374766049639016834422078705626669128492094502607019895812459974265416556762885336564093974655530945349099945854007412027682568"), + T("8.5003900517896968140560669406685714433987187446432157683182522591265374787311356353957620692173960349646676819100596310150960821656523158016643597684118372232800409169139557083780710669356964332570202113507421938631568719639718297731072485795933970567341061565566173805049809290766392136448216369341299035269967401098236132846311584581915310373661351551853853444420939639104451552704753437006616697649"), + T("8.6832150546992119123561755274895492144653067374145511237145479332444184634355487430013953788173861651573563088207092393530294456416234523055851300888732445321316125577030408408580667158459411783250568410385017858167366343090806852701162736153825058303053391738530506081505602311661352432781028641562319737686374234017792503658457323059947619238088947706640632381098408770203364010792418217268694136103"), + T("8.8622692545275801364908374167057259139877472806119356410690389492645564229551609068747532836927233270811341181214128533311807643286221130126254685480139353423101884932655256142496258651447541311446604768963398140008731950767573986025835009509261700929272348724745632015696088776295310820270966625045319920380686673873757671683399489468292591820439772558258086938002953369671589566640492742312409245103"), + T("9.0377767727099026972694942617286283519638707297067360423044656369897256312879279757777821069900749950044557425089876204493377875035177412255299561756483293212989442985024715332632332359674718551451382911466759962124284189582809463459910475239066062631635959736116080550697706078586467289296679727180578661286024444872547183386534308509666500269688916003034333222621461052151120014437539157953639737316"), + T("9.2099403715183963963159646240033837463663879397587703608276235901828632250668534482288572449940262528227811222734778570811036288215298248649253927633002476508563162996429592974837824908580411980809354993199427972132128992355076704784957121787879284339080946634686799151086869415614541594508268879796778634335343555218665915066131760665054321233563634368633150321561727439855965242234249997855095009663"), + T("9.3789441996695028144449769912356600569283162641648213963267967516906513599489196641005671037953118529699745311517573936920779286678891347102538458483175922006758868500326146586999241995748149397032915603979442357260048941742383217839852011662216853166258780456358259169233940567946181870250074940797272901633108047066701056213476847858318864707963362884773116503315400018988771184562588253768319489314"), + T("9.5449561001664121805331805088802752995271020253115319957577421074579216968677586712228633689301398077088311039352276247681835887608812952471054772558240075235037900668496782095699528477874731344527911180393401955463971510372217637805322797423365420146482689917834696038570131901274302300283422182521267833006285359393142295438279095927378336768120882908112575029657358394527378572761652822503523073037"), + T("9.7081295627784962702001300843202309014239162997075295338190725567740867768360828377797213369985222605738422125153205809614310720383763405854578937000465002140881359434675879559012762493638090947752116234678266669492794549428222971705363614488937056614823310418806119084118208768665243016864006604622872546517235887590814184637647435563763625009597343962143998069332678679995949595625752510047376769469"), + T("9.8686053858325691182072112788747533886058057201411380476476456712628079750259677966540684132469441944845346447517503807626845356172247759078119619345186680215080975949071260888809391129195428784313017526586710196446975545314396408422675567403935100395356341294811788475428908479858626488242639666149638195038312462497821769798554375186844561183275752651214811690182399175358793738641461618652775991586"), + T("10.026513098524002009663061139244181012027946962439753266519694305369174618431367899786383353512229064464039890660815518579465294472506944723831422623864591727653741921832494924549311217252079755210588600937862019593703209317655451118674734452134703295376724624313960382400165500601101166605844903375447459682796243706656364752062958789009510810154992991394533954570390026358052382955053709007707521608"), + T("10.181972184624311615821119525392646566614334777981507304797991128872845411935855045687447106020270650309180533858862699802452616670765042577313665825807440090307057847512919113426271458183092072699581551465382478938467355504032255882264015569014213825098166114446059843169833192986444108942840506996523623715072210566481161204920674164962676130998460012958025127031857745585310129294054842583903606686"), + T("10.335093140463368369194743647270744470970869361548018260412395037033434954444302167923137950092164921880086359392676052875666101107812632184449266829146247839347650312553659121907050973521042894776187579282867330188754139851333707822660813843642659379040498993205802303976963038480061139480627996652519324110663045988145350403266422896739974552818525729859458145898707780132492595810710069483709616997"), + T("10.485978393819184450541593598855581216998391038666955618731153780797160148941518448029432453424375096293506458743106555413233965573260145046667734677176640468352558693946707494977637683951611790027770744751949296502577300781357035084119423389099318378785160701550868259776821786756050171108775480133925239818616956336860985197400338717780301525607287576543821416712628079932173339130152141281524936833"), + T("10.634723105433096163789004900046871096785296736734322769282846739117467707546193088249703940431267992497360941745695423997416917194346535615150562257616722410772226191918630737099551038173704957373592572275607776801047834092108878323100201141111404111512681846969475841883530653155437298432515995005438390445682400864850920602007938736195111018452772706990970432560354404360590747996859129077489109412"), + T("10.781415870970860097347086002569754013483313106913200202187513520048043712278512261111348167752270787807827044005214735609272769552792030217118319247865527486947266834539351039872232355517952920779295855320877662434434089302868383880854490418955953060861828833022956166078549446407677882309027526266764943581836604667447009735143063508187804312221807902016203318428080812848859262617506901631056404484"), + T("10.926139338138249418394948518774535514239264300129320003780439933689850327924622206216861373106327795446382986541097387057719208036647206296404050944003327874361582341281080807890889880787061319999797409840564399938369028699154596465019693581401702995072256439155901828510666479433850274478604710483110368760249425996181639834293503287006547476391343675449556976797862780800361545757368573258815323922"), + T("11.06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602611864735807868417839407991190718628442039357569977371968270131812518244771818655226966561256042843867368054126790999954427565212628829680859010057375985048181200629605336234528792323216018627284394365650824130654190684379749960413601595348763566769123659605593998962030711530297996631109"), + T("11.209982432795857398622564867737601787708647550421566529916706787304566755303775948672768675049170747883429341148912598091108415107966303513328989335549090323722545529793324262395675670076585016555951901028757408818778625613607179186034308728396667295233302250857211232461933164510771145740019946113227052645862096554120740462719955917987934465165674173185684410686080014566234348266909457075857936454"), + T("11.349242212464298392610285658298501528539506746683292704338035654856239080485360828460205074304281603179304760097806255228463147327169830108042093067800293527086021375553337641095043483168312926670841786279105684958531871509131651122477280457930695269239120342802270691155290589721502201125592305692096859835744595168676715800717585850328384113754784770216906888175704141625668202687511966586138689496"), + T("11.486813807613115307809355167215211082379289672043820620858981542835886683139127150291615174043283349892373335303488265357426140211488562306351746628698313560931134742861605848764176458004039113239912373535418892499572608431667264556464452240410101014511349682690566153385156486931102628456780783577079308426737658296507891772476075136809898570922049321898908119541008410725370277134653232606047953378"), + T("11.622757164475265300727734810950869136366250850775675675103670116706112045368165235882961201344951218672069233183763229866495319155659488490374792371109115979803795182321120105254011624290383337645277922708894963432033544765028110116592451203025661365050867782024140543770476276220678204795976767514166142764541148954132005264256215811527038353628432725649155000008199699094629246514703895814051248301"), + T("11.757128763348256470108841755794141943996869842077348750346284214314649116356337104933755603529852246985990074976729490520429352229229871724358278509917028116325933654139215827678266807514792562237965412296265335104001671295988155335760549710646647040480544493963981216318763943457313419128045786093172487794978910733757429771315752025777277996230882931323582501087226909825993326662885930969271603052"), + T("11.889981892818033040035086295360549094567079269188584378121774186590216154079714971686322563578902093698221694379886060868659673047069424627984293966125520499503798781908263753492081926241352189873572561856339870009561019741462936160529290646396016819953343479604799069424454587631296714639812891004016845125404437458583350630998849639852162690555906722539111163466109421548959157364122974976538305405"), + T("12.021366896702325047512148370523129868500863831336365554094968238961326486689613290630609864218702661853221321521170144826739118836804766785357157269477553635675326417440397275525273224383182704417613920902492439425058136861846204626155795604149515361113916782624367244364805538377594330304168849066367137313615505351036054026784342300533235365305626284568959522499820909662710078078441813899168007885"), + T("12.151331396958947321546025714556865120149751887789792242805026251328834724212197338975462680992513495564542856143237780070708286761588671182939823052704607214915211775783314118543447776586990218385020548327676785144266827587041679291236998809169833652034346885774675107188363717375427120958548330331469713644263714560973379556087401639283796742412962466979669807549620252885888038363577488350118588327"), + T("12.279920495357861861754619498671178328488517253011693814436831453577150966755804597638476326658701670430374829697970476108138171762039766486567190351066996867808421732857279063311709987810721597441247332426590396284283865647343560637994282905050571245210792884624906553478249255415272212601102517306237151244712474029155455342150901422007242831141817915817753376208230325314128698964566666380679334622"), + T("12.407176956338612191087172383388016279582846192856709897496654528970378992137225269624654597169812657913587765369977994663653070060070958217675655967219509479234263890571735859949476211202655783602524667654875739601222473107460358043616901331296638130098128821464388482197452428681343514837935327506344788853296134342326074035675928525560962854861568158156132171320413471754022539329668983923737294314"), + T("12.53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332601939822433161809063368090478927827983073965956717740229061865568663902156509969401323575117232752449212901164706931389834341806516837911922090578039245047800020687575137645825730612921930932460349530463332045594007869848626188851269374123924316744321298753294756547869381713625963440201"), + T("12.657852319136902268774845164792088421135161808965517945523128473136824363883193009269209734457043707990147945768735771850922659087939277511584226597559704972434156306141869703126860783026363074957510823322218307776858151286948305635221192680870601025159853336795122235254709338570514335130167369800379884747089903762281584689350599843615480943120877060478385159492967618565239777860563171974700594693"), + T("12.781346485666885652251869121336739548837398307259070171314590507358466855041160735854359760391205776274139369135586462332186987204516267938034042212395921561146691040390295958933393041973997212687270801826185298683616162906817960868359931875855845417818690795683245054864292551076503205933778240981159915149194662675568567630576642947480842864021668454467828380348469526601550992279393378879211043667"), + T("12.903658808270584524837154363200375169745690840774169241078436884878608872508906572537587380452008766699694274634572683484063997575550636271724653470644222116629862120750427362283465850548658876022606030340287534831876059275988640705535030144354363210242251009786303368432070884750488539702567688880560860857563258835290820838217726051097677070824752411130297718422198873037383148768947802251879541624"), + T("13.024822582048817868534263291234323821697960106121826685571821899866627695153323114502093068226079247736034463231063859029544168462435178458377695133309866798197418836554561261287100073768911767487585261557752678725104951463621027905174410423073758745458008760779575912225840346749202864917154296234347960652956135102668875548768598458992142885713342155996094857164761315530504601618862732590304120415"), + T("13.144869567532369703435413653931342518067740699025339623141355353215828472920177249101100071067765021905490369373865624919713235361781704313989935557374066820403290956743429603874630415006274130921897795214176147246606564445416505741569346364219413607323060794720326291947944072987907139328701736835753824779102737278004452916595869434574114960991640537914399673850290672639531054905749913587677194565"), + T("13.263830087913084441869264510341900885143347169857670710403520506847915484234253149364016618842422192887278826802152309702561700988317108329366652469972270850729901967719901688846781252171679572772098362866958261135212538955176074425118825798790895659612482118954525747884920318690612733249055254817820682413854417219783837452342337525419867582913841366891276001603231376905945580465371617652422785301"), + T("13.381733118494712177838769415668363136693460917853586922473464683953085883088277884543132016555752708286716738574100724123397234966834133579930312055894987491473163259667229253648684025236934307557806266139484672929088612080633523093147067612558483695818827536275063195935514841373590920865965312578548954529988065057157198978981673627647254889933136041368681534023007231776113961710869320159667705337"), + T("13.49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174297398771305025250783532430038321980650780572061258675589431807213585169525934929261000167914426347007424971894853755903478955153674190248106782011276139620636507795882584271293035478532473175580070278864979183505217356484769621601133034831695071383225633005792357284236385529593207735858"), + T("13.614476360176244437992652165124010849348942994806267539289974901165636798182245517885383466885359131822710017177747823047886229391043506105903448210261769449935362361092960808325221972886007181477749623755496282578986043666471300738088582325762070505557101653785908332333215528357372693553823245805882631589902970439410267849152146509417834583229229656869363779274739391530153058374399344402589683807"), + T("13.729368492956534900281400502354359280496469031691335405974003992173735996211006683665427680723680494774261507142766087270014594023840182966619810286756443098353283396820386639702127469604851142396451603929306334684156437261639403528050837758998181593023617211002715568286617326595705711684753722488913296655671992680497089777404378865244932655099061553712284778342270952635944738196608799063380253458"), + T("13.843307114594308080228438262394272564345963431637029583240249081158469052183791491684039537760243230438634632151602246770081706304258619208947181121555949109643060376549010534247946473402803168501401798859700886609956343474750915165635990740345802222770885528894449519285586683416492340458031775111481023344097481374008848545235590455121882858118351182839281932280042314361125165296526825458755105679"), + T("13.956315578352589716302829873401945109198453712022825800945047218826731843806713506320236853413543088508394629854930633075647798955617836866562243675418009347632488093795950654785453808337001941625657577694831670791784231090389461985759139354822791165710146844931160825962396468466501611937704664704804958138610109693667041306322225916233920219127362826337256387581504195730954720065862316612737195428"), + T("14.068416299504254221667465486853490085392474396247232094490195127535977039923379496150850655692967779454961796727636090538116893001833702065380768772476388301013830275048921988049886299362222409554937340596916353589007341261357482675977801749332527974938817068453738875385091085191927280537511241119590935244966207060005158432021527178747829706194504432715967475497310002848315677684388238065247923397"), + T("14.179630807244128218385339866729161462380395648979097025710462318823290276728257450999605253908357323329814588994260565329889222925795380820200749676822296547696301589224840982799401384231606609831456763034143702401397112122811837764133601521481872148683575795959301122511374204207249731243354660007251187260909867819801227469343918314926814691270363609321293910080472539147454330662478838769985479216"), + T("14.289979792964598888046537025443929046349268690964636578475665109896668898160471038052184926128242082008071899344418492114005094607229573377783255206983187149713770987548494300509284453832960172186602825751752512740011206822965310731878663221408732182835419428674418921388428247682017853292902641094633654925031641157363239954497643638130492825559275734408219193654081845577502824457995610506588347991"), + T("14.399483155201312771128205693735119100150409368172849193283383259397943499400343097146699820101799211280532901097982868866065091616972220786072353233159181246251291666898296600872888597521470039336674892211278156066944280526085074727923215099315369244314973758177163795161905224659231453738958954759692535888585135313785224088858851114397375930143280080631232806768837383757811100735506790734241356142"), + T("14.508160041525463782196810772461415937984681525001596663279698630294663935908428439756213479497787337122567348801168744730052437263877739149127104404701300967284676515346229296805236190281514801622180654355551641687098356104648569744546852559008969056173614451568235018709148732753388030273661774352691760355549492167313040490929262056910773064824444033384277728019069474988708219182391801225541693935"), + T("14.61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802682247483997538024059430053923100149530708644650234817412038625591619400230864122002844464733117732180207138840345503942749566420701119445724521519252291641382086677934892130737459519396373764750722380465421651122429297206242839604156465612789771943017828164616001185450559568021341559075"), + T("14.723107453852795047660891850891348521019392896043801015617971628447783989965629640672866077356179147930039264054884436242337612281568551505460575065987584693479589826744627929483999892320528426925051155319040406737336570522942634239674703047310686338476335923532963117635039796288802156148141351666029297701497040980317238592980791463337224993212730297458845130688595199892451695017449401650874288673"), + T("14.829412859290334246310862079120981116215413675054277728460153169122428030531791551314608952543420254520474051699795429624440231166188714141339453291154149160307170860994018007001626101791576255751027842245708752403881346737835127200458159845732446774737303087761617897753731524877979274694284246989924515961238107617606034599749358785428854546203389668405763983263427124792153857226338962692134292775"), + T("14.934961613773077251874220527850221390835466676976882941215420887391409941569982643090524050005551945256610875794604586439205076677328137831885915476923937188476319884303388028434778637885660437004576928003169458451279164932299027997584048683596586922839913541602495362116464353240069317035849303355081215425573060479512202737316638230608336142262048918028633468554185638406802946342865126132844574834"), + T("15.039769647786003014494591708866271518041920443659629899779541458053761927647051849679575030268343596696059835991223277869197941708760417085747133935796887591480612882748742386823966825878119632815882901406793029390554813976483176678012101678202054943065086936470940573600248250901651749908767355063171189524194365559984547128094438183514266215232489487091800931855585039537078574432580563511561282412"), + T("15.143852340539209919669694152668075754802130564520529114229055107020254596987080606065177179266558949005546167801108989466486322639120015544612100116126475848822295714630667404278002543054087765126012369520774988292980482378607240819831183403574109472290470399416907492752726605411715253325510753261994252828188462682810154109677323956353529409565238339361711344464981722604499214446881247473198801415"), + T("15.247224546311525337004063635408328366688778670871498563977766898883017695500718397562791377885264468934146929755054408018559707733171577715334636002100724249512539221477485126428071589422606639367264374525385748313792960737408667516619228196176535880477098918773859144321945753279661701266364778960943177407574056743200803896101394393730713481442086031230604416350429704383528396355475201590099114842"), + T("15.349900619197327327193274373338972910610646566264617268046039316971438708444755747048095408323377088037968537122463095135172714702549708108208987938833746084760527166071598829139637484763401996801559165533237995355354832059179450797492853631313214056513491105781133191847811569269090265751378146632796439055890592536444319177688626777509053538927272394772191720260287906642660873705708332975849168277"), + T("15.451894436373304648009489571464243282276411609779274396290596892305143427827321676751967836825614756649503387863645450837733437250584029795246024347634551470139382152386378140674874270471699294970444708697207724806165191844532506173191310641439071099938423565896079898332411223410465978068167705753188286038208023872294329849623050972834536380249235882340556718259826734176816733014205629079093581198"), + T("15.553219419991929097391447827110150978276147342755611087132612856263542587794892243906527633373900129242231785993922632274254453378155136866947691413591367716787056987199223748707467009025071039158554274945537967635091771197351723187066327453183887178046363960719814297174200677165073465692725493619076089149843317017809607596662107883796994364174947841232638766495324678472146142625602614264235678696"), + T("15.653888557799428533661532247337596699165609502143573736324609963676016536620219650233947025955941767418394468430088744792011863372700125171657152344359691884844467537973207254356056413344833677019845894722403336263492187594473529648820105313588218738589863121077164638145443372177511689907229285786639401142720480840361807890924894118341348723302140201727278896670612158646957973089749997574886849052"), + T("15.753914422567924620983011231186756248927500048298297966046797894473026288195693602724718689673345950533773458261077009361447048732755177208182393190558955000510862906901264875534878251422852119708834699869325135138115458649625715331447841946651213506247785763655954618727631238085210998597640478337632316374699558747521521322958958007061686783767533791960628390158818930229551073161600125867700021792"), + T("15.85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917318141449154623072942589950397905862150069399933839837587768500465610923498846958649809674914178649334608135965528391488070572086186135575993779130613973209256593945017506228618641718800535579350053924994477780084133179951980288358740787563005214821795481256206527887648549729996871774054"), + T("15.952084658149644245683507350070306645177945105101484153924270108676201561319289632374555910646901988746041412618543135996125375791519803422725843386425083616158339287877946105649326557260557436060388858413411665201571751138163317484650301711667106167269022770454213762825295979733155947648773992508157585668523601297276380903011908104292666527679159060486455648840531606540886121995288693616233664118"), + T("16.050252259524242304765819675794450638017457570575983927825323032144525082963948191096147193145311656453873849743947855717510860973988659112083956949050053482287530484973632648820968563125979705559716208799062595086459726936476696439381910220384322311324311842667158228425675297979222265812106596748979173989790155646435957100594433524698909367347330792212795303074381195611252785521380020853492164213"), + T("16.147823080773235880405791115635997557864326968336419500556329380232598367900898497414264871456444239647173004031647690209887509450260015358377350981847404025422287378732373648981765201137038640626625054151148020200007297959878815562787393121096595035600314225225829183114125474497018547223659528472930900422571056329570935652356761026639723378971526771480442539666833071774260326796995470405776697508"), + T("16.244807875180999875501121715806898107481293878037690793428836596906771575458065188122883764864387960703385536810260167663245388411090356221198720241639510406887891671012502982802097814197179053506077944546781492021156361482371793971423102721583613594407654464704630769172660190680210371421155562677809881516769741092121847876124182917158329121447444811423396067108583211752995130120466339417213690103"), + T("16.341217076923383960696369420161248669121212808135654273983491452937095658109553619994922766756319666975188172033084786774938321749356282450853819283481043653079525140374828081598688868309044496356854434283025399835051607515358702243412387084009896448573365043827048092425743953483386894323518311923913690941609208424884900176315736258863356896904842838787088633319141807219561302676306271570497938951"), + T("16.437060814169977953327247404361277316133609673377048855107248395882567096603010277067169202635116275806042691595212970108586780272931810640625169517986388546454661584514822804714353912243137592516024763283438958227839402433048048710441109095172462035564435115216917054500940736255985371596025417460999236751644500293733791545234403402763313780467186900924301219121627362814381042265364554244922063244"), + T("16.532348921502715844688082576333627653976665425427208876480987568125771090198651469125133728158959771903048097921398391233385160724013876315451069276292964513405939027110844786864417344898464954584607502706435338641340198705784007825954758491636479758251565454590803621730664169376188515867591916106130400067381048724859197544495864321744604824010272768413212368063633927635680949445491291877351894002"), + T("16.627090951693919358811327574245345505772490789347183724819005227768402181270609385967456291735846450867894473133567131236111152863521170798185176128190539042865125306336585771487343846002698226533251590813449657459827132440585220359867286748933370108772977365669225547985182074953209927803366884415741125333825698418900521403979162491994853083311352577067312818794931106189069819989170801482405536514"), + T("16.721296186883706959605742705233010783899326523984270864686085184270332637146646055028529386107385333643018392715062510774480808240365813021854787737722340862660933836784188253900670608552564136025173808090739064412712504259523027988063714336820233104689334204836546487559659633964043151984340548060532718923362128881432934135325567300871046043987974739750202594174747157312786841203825015000569906569"), + T("16.814973649193786097933847301606402681562971325632349794875060180956850132955663923009153012573756121825144011723368897136662622661949455269993484003323635485583818294689986393593513505114877524833927851543136113228167938420410768779051463092595000942849953376285816848692899746766156718610029919169840578968793144831181110694079933876981901697748511259778526616029120021849351522400364185613786904682"), + T("16.908132110811980070323724133825443669074486306220411933324368366059977522675356589320971338976776616316134235802112798127138113465084701628640560443298729802233609863856357626793535493930184649436981665533778324622620988007501131586355391858595913504065552289654660238871963950906549509361444433014511210945609775277269846879360970012281095853461600076871591771412527553822562541374853347368516919083"), + T("17.00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382011926203019216433130463160332871953682367444656008183382791141675614213387139286651404042270148438772631374392794365954621449715918679411346821231311323476100996185815327842728964327386825980705399348021964722656926231691638306207473227031037077068888418792782089031054095068740132333953"), + T("17.092925928109873230856890966518170609049635890295121605225309418908275818470576879572890960685410581830840991105430126130887790543881945170122581670877506416385845881122034595711744339948691879348516227414909772352427723381307136312192527194398703992339257139025461873121242339773525646882099071218455368070360012094043767404721710936020967834426862977103157516068354293085070758241766981055235066209"), + T("17.184577662469350439927855242766012175901435587217348622500720382402437284043691040754973131531272064166131201551424433897942349835349079351126685371244284352588634150544638769966985677717022600144009093735325965072805119643341927076098445506587163233137151789343227901578709257933753169161253949701854384420333694583107005741557086141652266134114205529376278344127778702038153204605578398292401917015"), + T("17.275743170440754085190445015394979038018668745865422068491523038650327582540706316060451728873454611950564439169497072829566902102398394981985975990083088007962977970505915486567012863555181572053681584109963952561485141768953808491468086742419682163408958624144213019203883451244657001188829080210013359418255598633772348738641653443346826322446562330527464133013054079541191939171126793437194110759"), + T("17.366430109398423824712351054979098428930613474829102247429095866488836926871097486002790757634772330314712617641418478706058891283246904611170260177746489064263225115406081681716133431691882356650113682077003571633473268618161370540232547230765011660610678347706101216301120462332270486556205728312463947537274846803558500731691464611989523847617789541328126476219681754040672802158483643453738827221"), + T("17.456645937814341319169222501542608627403113623558293524363238531385820187770170403648403252074964213113377845095534227202560251082915822197277767058606166170134732818652676480521208063952545598229201593834632528912430284433244772566961770292191780850052527418760053662080114781916361358783723872887199722599102508052518044253446686455582486241466233995573362181026486277618737441990128524043149017597"), + T("17.546397922417003516910356993677316771048907184269568216409465034396055582254893824626170868646400862812069808656427157514064265326887153266704989591763035523394048363206866117961294630191139571618530051641258534288980616305897039457680785291235730766909268092549430669200289626051927041560228580907033054444893426486648638316110177880766643917771237734940434420498182546126591670171343990763488162814"), + T("17.635693145022384705163262633691212915995304763116023125519426321471973674534505657400633405294778370478985112465094235780644028343844807586537417764875542174488900481208823741517400211272188843356948118444398002656002506943982233003640824565969970560720816740945971824478145915185970128692068679139758731692468366100636144656973628038665916994346324396985373751630840364738989989994328896453907404578"), + T("17.724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021"), + }}; + + T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + T val = sqrt(pi * k); + T e = relative_error(val, data[k]); + unsigned err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + } + std::cout << "Max error was: " << max_err << std::endl; + BOOST_TEST(max_err < 20); +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF_50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_CPP_FLOAT + test(); + test(); +#endif + return boost::report_errors(); +} + + + From b85306e0761c3b7ec57548046e8808be9bf6e0b7 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 14 Nov 2011 12:19:17 +0000 Subject: [PATCH 061/256] Fix remaining cpp_float bugs. Fix use of expression templates in conditional expressions. [SVN r75485] --- include/boost/multiprecision/cpp_float.hpp | 14 +++++- .../multiprecision/detail/mp_number_base.hpp | 44 ++++++++++++------- test/test_round.cpp | 2 +- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 17bf1c90..19e704c4 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1112,7 +1112,7 @@ cpp_float& cpp_float::calculate_inv() static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; - for(boost::uint32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= static_cast(2)) + for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= static_cast(2)) { // Adjust precision of the terms. precision(static_cast(digits * static_cast(2))); @@ -2655,6 +2655,18 @@ inline void eval_frexp(cpp_float& result, const cpp_float& x *e = static_cast(t); } +template +inline bool is_zero(const cpp_float& val) +{ + return val.iszero(); +} +template +inline int get_sign(const cpp_float& val) +{ + return val.iszero() ? 0 : val.isneg() ? -1 : 1; +} + + typedef mp_number > cpp_float_50; typedef mp_number > cpp_float_100; diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 847ae9b3..e85328b1 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -218,7 +218,7 @@ struct mp_exp typedef typename left_type::result_type result_type; typedef tag tag_type; - mp_exp(const Arg1& a) : arg(a) {} + explicit mp_exp(const Arg1& a) : arg(a) {} left_type left()const { return left_type(arg); } @@ -504,7 +504,8 @@ template inline detail::mp_exp, typename detail::mp_exp::left_type > > operator - (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); } template inline detail::mp_exp, mp_number > @@ -516,7 +517,8 @@ template inline detail::mp_exp, mp_number > > operator - (const detail::mp_exp >& a, const mp_number& b) { - return detail::mp_exp, mp_number >(b, a.left_ref()); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(b, a.left_ref())); } template inline typename enable_if, detail::mp_exp, V > > >::type @@ -588,37 +590,43 @@ template inline detail::mp_exp, typename detail::mp_exp::left_type > > operator * (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref())); } template inline detail::mp_exp, typename detail::mp_exp::left_type > > operator * (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); } template inline detail::mp_exp, mp_number > > operator * (const mp_number& a, const detail::mp_exp >& b) { - return detail::mp_exp, mp_number >(a, b.left_ref()); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(a, b.left_ref())); } template inline detail::mp_exp, mp_number > > operator * (const detail::mp_exp >& a, const mp_number& b) { - return detail::mp_exp, mp_number >(b, a.left_ref()); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(b, a.left_ref())); } template inline typename enable_if, detail::mp_exp, V > > >::type operator * (const detail::mp_exp >& a, const V& b) { - return detail::mp_exp, V >(a.left_ref(), b); + return detail::mp_exp, V > > ( + detail::mp_exp, V >(a.left_ref(), b)); } template inline typename enable_if, detail::mp_exp, V > > >::type operator * (const V& a, const detail::mp_exp >& b) { - return detail::mp_exp, V >(b.left_ref(), a); + return detail::mp_exp, V > >( + detail::mp_exp, V >(b.left_ref(), a)); } // // Division: @@ -678,37 +686,43 @@ template inline detail::mp_exp, typename detail::mp_exp::left_type > > operator / (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref())); } template inline detail::mp_exp::left_type, mp_number > > operator / (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp::left_type, mp_number >(a.left_ref(), b); + return detail::mp_exp::left_type, mp_number > >( + detail::mp_exp::left_type, mp_number >(a.left_ref(), b)); } template inline detail::mp_exp, mp_number > > operator / (const mp_number& a, const detail::mp_exp >& b) { - return detail::mp_exp, mp_number >(a, b.left_ref()); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(a, b.left_ref())); } template inline detail::mp_exp, mp_number > > operator / (const detail::mp_exp >& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a.left_ref(), b); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(a.left_ref(), b)); } template inline typename enable_if, detail::mp_exp, V > > >::type operator / (const detail::mp_exp >& a, const V& b) { - return detail::mp_exp, V>(a.left_ref(), b); + return detail::mp_exp, V > >( + detail::mp_exp, V>(a.left_ref(), b)); } template inline typename enable_if, detail::mp_exp > > >::type operator / (const V& a, const detail::mp_exp >& b) { - return detail::mp_exp >(a, b.left_ref()); + return detail::mp_exp > >( + detail::mp_exp >(a, b.left_ref())); } // // Modulus: diff --git a/test/test_round.cpp b/test/test_round.cpp index 5d0e2923..6e56437f 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -65,7 +65,7 @@ T get_random() shift += std::numeric_limits::digits; bits -= std::numeric_limits::digits; } - return rng() & 1u ? -ldexp(frexp(result, &bits), exponent) : ldexp(frexp(result, &bits), exponent); + return rng() & 1u ? T(-ldexp(frexp(result, &bits), exponent)) : T(ldexp(frexp(result, &bits), exponent)); } template From f5eb2f330bace5e2f716eda3659d700f8971c781 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 14 Nov 2011 12:41:15 +0000 Subject: [PATCH 062/256] Update docs, rename remaining occurrences of mp_float. [SVN r75487] --- doc/html/boost_multiprecision/intro.html | 476 ++++ doc/html/boost_multiprecision/ref.html | 40 + .../boost_multiprecision/ref/backendconc.html | 2024 +++++++++++++++++ .../boost_multiprecision/ref/mp_number.html | 411 ++++ doc/html/boost_multiprecision/tut.html | 45 + doc/html/boost_multiprecision/tut/ints.html | 177 ++ .../boost_multiprecision/tut/rational.html | 188 ++ doc/html/boost_multiprecision/tut/reals.html | 420 ++++ doc/html/index.html | 54 + doc/multiprecision.qbk | 24 +- ...mp_float_snips.cpp => cpp_float_snips.cpp} | 0 11 files changed, 3847 insertions(+), 12 deletions(-) create mode 100644 doc/html/boost_multiprecision/intro.html create mode 100644 doc/html/boost_multiprecision/ref.html create mode 100644 doc/html/boost_multiprecision/ref/backendconc.html create mode 100644 doc/html/boost_multiprecision/ref/mp_number.html create mode 100644 doc/html/boost_multiprecision/tut.html create mode 100644 doc/html/boost_multiprecision/tut/ints.html create mode 100644 doc/html/boost_multiprecision/tut/rational.html create mode 100644 doc/html/boost_multiprecision/tut/reals.html create mode 100644 doc/html/index.html rename example/{mp_float_snips.cpp => cpp_float_snips.cpp} (100%) diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html new file mode 100644 index 00000000..6a2d9aaf --- /dev/null +++ b/doc/html/boost_multiprecision/intro.html @@ -0,0 +1,476 @@ + + + +Introduction + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The Multiprecision library comes in two distinct parts: an expression-template-enabled + front end mp_number that handles + all the operator overloading, expression evaluation optimization, and code + reduction, and a selection of backends that implement the actual arithmetic + operations, and need conform only to the reduced interface requirements of + the front end. +

+

+ The library is often used by using one of the predfined typedefs: for example + if you wanted an arbitrary precision integer type using GMP as the underlying + implementation then you could use: +

+
#include <boost/multiprecision/gmp.hpp>  // Defines the wrappers around the GMP library's types
+
+boost::multiprecision::mpz_int myint;    // Arbitrary precision integer type.
+
+

+ Alternatively one can compose your own multiprecision type, by combining mp_number with one of the predefined backend + types. For example, suppose you wanted a 300 decimal digit floating point type + based on the MPFR library, in this case there's no predefined typedef with + that level of precision, so instead we compose our own: +

+
#include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
+
+namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
+
+typedef mp::mp_number<mp::mpfr_float_backend<300> >  my_float;
+
+my_float a, b, c; // These variables have 300 decimal digits precision
+
+
+ + Expression + Templates +
+

+ Class mp_number is expression-template-enabled: + that means that rather than having a multiplication operator that looks like + this: +

+
template <class Backend>
+mp_number<Backend> operator * (const mp_number<Backend>& a, const mp_number<Backend>& b)
+{
+   mp_number<Backend> result(a);
+   result *= b;
+   return result;
+}
+
+

+ Instead the operator looks more like this: +

+
template <class Backend>
+unmentionable-type operator * (const mp_number<Backend>& a, const mp_number<Backend>& b);
+
+

+ Where the "unmentionable" return type is an implementation detail + that, rather than containing the result of the multiplication, contains instructions + on how to compute the result. In effect it's just a pair of references to the + arguments of the function, plus some compile-time information that stores what + the operation is. +

+

+ The great advantage of this method is the elimination of temporaries: + for example the "naive" implementation of operator* above, requires one temporary for computing + the result, and at least another one to return it. It's true that sometimes + this overhead can be reduced by using move-semantics, but it can't be eliminated + completely. For example, lets suppose we're evaluating a polynomial via Horners + method, something like this: +

+
T a[7] = { /* some values */ };
+//....
+y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0];
+
+

+ If type T is an mp_number, then this expression is evaluated + without creating a single temporary value, in contrast + if we were using the C++ wrapper that ships with GMP - mpf_class + - then this expression would result in no less than 11 temporaries (this is + true even though mpf_class does use expression templates to reduce the number + of temporaries somewhat). Had we used an even simpler wrapper around GMP or + MPFR like mpclass things would + have been even worse and no less that 24 temporaries are created for this simple + expression (note - we actually measure the number of memory allocations performed + rather than the number of temporaries directly). +

+

+ This library also extends expression template support to standard library functions + like abs or sin + with mp_number arguments. This + means that an expression such as: +

+
y = abs(x);
+
+

+ can be evaluated without a single temporary being calculated. Even expressions + like: +

+
y = sin(x);
+
+

+ get this treatment, so that variable 'y' is used as "working storage" + within the implementation of sin, + thus reducing the number of temporaries used by one. Of course, should you + write: +

+
x = sin(x);
+
+

+ Then we clearly can't use x + as working storage during the calculation, so then a temporary variable is + created in this case. +

+

+ Given the comments above, you might be forgiven for thinking that expression-templates + are some kind of universal-panacea: sadly though, all tricks like this have + their downsides. For one thing, expression template libraries like this one, + tend to be slower to compile than their simpler cousins, they're also harder + to debug (should you actually want to step through our code!), and rely on + compiler optimizations being turned on to give really good performance. Also + since the return type from expressions involving mp_number's + is an "unmentionable implementation detail", you have to be careful + to cast the result of an expression to the actual number type when passing + an expression to a template function. For example given: +

+
template <class T>
+void my_proc(const T&);
+
+

+ Then calling: +

+
my_proc(a+b);
+
+

+ Will very likely result in obscure error messages inside the body of my_proc - since we've passed it an expression + template type, and not a number type. Instead we probably need: +

+
my_proc(my_mp_number_type(a+b));
+
+

+ Having said that, these situations don't occur that often - or indeed not at + all for non-template functions. In addition all the functions in the Boost.Math + library will automatically convert expression-template arguments to the underlying + number type without you having to do anything, so: +

+
mpfr_float_100 a(20), delta(0.125);
+boost::math::gamma_p(a, a + delta);
+
+

+ Will work just fine, with the a + delta expression + template argument getting converted to an mpfr_float_100 + internally by the Boost.Math library. +

+

+ One other potential pitfall that's only possible in C++11: you should never + store an expression template using: +

+
auto my_expression = a + b - c;
+
+

+ Unless you're absolutely sure that the lifetimes of a, + b and c + will outlive that of my_expression. +

+

+ And finally.... the performance improvements from an expression template library + like this are often not as dramatic as the reduction in number of temporaries + would suggest. For example if we compare this library with mpfr_class + and mpreal, with all three + using the underlying MPFR library at 50 decimal digits precision then we see + the following typical results for polynomial execution: +

+
+

Table 1.1. Evaluation of Order 6 Polynomial.

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Library +

+
+

+ Relative Time +

+
+

+ Relative number of memory allocations +

+
+

+ mp_number +

+
+

+ 1.0 (0.00793s) +

+
+

+ 1.0 (2996 total) +

+
+

+ mpfr_class +

+
+

+ 1.2 (0.00931s) +

+
+

+ 4.3 (12976 total) +

+
+

+ mpreal +

+
+

+ 1.9 (0.0148s) +

+
+

+ 9.3 (27947 total) +

+
+
+

+ As you can see the execution time increases a lot more slowly than the number + of memory allocations. There are a number of reasons for this: +

+
    +
  • + The cost of extended-precision multiplication and division is so great, + that the times taken for these tend to swamp everything else. +
  • +
  • + The cost of an in-place multiplication (using operator*=) tends to be more than an out-of-place + operator* + (typically operator *= + has to create a temporary workspace to carry out the multiplication, where + as operator* + can use the target variable as workspace). Since the expression templates + carry out their magic by converting out-of-place operators to in-place + ones, we necessarily take this hit. Even so the transformation is more + efficient than creating the extra temporary variable, just not by as much + as one would hope. +
  • +
+

+ We'll conclude this section by providing some more performance comparisons + between these three libraries, again, all are using MPFR to carry out the underlying + arithmetic, and all are operating at the same precision (50 decimal places): +

+
+

Table 1.2. Evaluation of Boost.Math's Bessel function test data

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Library +

+
+

+ Relative Time +

+
+

+ Relative Number of Memory Allocations +

+
+

+ mp_number +

+
+

+ 1.0 (6.21s) +

+
+

+ 1.0 (2685469) +

+
+

+ mpfr_class +

+
+

+ 1.04 (6.45s) +

+
+

+ 1.47 (3946007) +

+
+

+ mpreal +

+
+

+ 1.53 (9.52s) +

+
+

+ 4.92 (13222940) +

+
+
+
+

Table 1.3. Evaluation of Boost.Math's Non-Central T distribution test data

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Library +

+
+

+ Relative Time +

+
+

+ Relative Number of Memory Allocations +

+
+

+ mp_number +

+
+

+ 1.0 (269s) +

+
+

+ 1.0 (139082551) +

+
+

+ mpfr_class +

+
+

+ 1.04 (278s) +

+
+

+ 1.81 (252400791) +

+
+

+ mpreal +

+
+

+ 1.49 (401s) +

+
+

+ 3.22 (447009280) +

+
+
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html new file mode 100644 index 00000000..5bff5c01 --- /dev/null +++ b/doc/html/boost_multiprecision/ref.html @@ -0,0 +1,40 @@ + + + +Reference + + + + + + + + +
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html new file mode 100644 index 00000000..a15e98a4 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -0,0 +1,2024 @@ + + + +Backend Requirements + + + + + + + +
+
+
+PrevUpHome +
+
+ +

+ The requirements on the Backend + template argument to mp_number + are split up into compulsary requirements, and optional requirements that + are either to improve performance or provide optional features. +

+

+ In the following tables, type B is the Backend + template arument to mp_number, + b is a variable of B, cb and cb2 + are constant variables of type B, a + is a variable of Arithmetic type, s + is a variable of type const char*, ui is a variable of type unsigned, bb + is a variable of type bool, + pa is a variable of type + pointer-to-arithmetc-type, exp + is a variable of type B::exp_type, pexp + is a variable of type B::exp_type*. +

+
+

Table 1.4. Compulsary Requirements on the Backend type.

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Return Type +

+
+

+ Comments +

+
+

+ B::signed_types +

+
+

+ mpl::list<type-list> +

+
+

+ A list of signed integral types that can be assigned to type B. + The types shall be listed in order of size, smallest first, and + shall terminate in the type that is std::intmax_t. +

+
+

+ B::unsigned_types +

+
+

+ mpl::list<type-list> +

+
+

+ A list of unsigned integral types that can be assigned to type + B. The types shall be listed in order of size, smallest first, + and shall terminate in the type that is std::uintmax_t. +

+
+

+ B::real_types +

+
+

+ mpl::list<type-list> +

+
+

+ A list of floating point types that can be assigned to type B.The + types shall be listed in order of size, smallest first, and shall + terminate in type long double. +

+
+

+ B::exponent_type +

+
+

+ A signed integral type. +

+
+

+ The type of the exponent of type B. +

+
+

+ B() +

+
+ +

+ Default constructor. +

+
+

+ B(cb) +

+
+ +

+ Copy Constructor. +

+
+

+ b = + b +

+
+

+ B& +

+
+

+ Assignment operator. +

+
+

+ b = + a +

+
+

+ B& +

+
+

+ Assignment from an Arithmetic type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ b = + s +

+
+

+ B& +

+
+

+ Assignment from a string. +

+
+

+ b.swap(b) +

+
+

+ void +

+
+

+ Swaps the contents of it's arguments. +

+
+

+ cb.str(ui, + bb) +

+
+

+ std::string +

+
+

+ Returns the string representation of b + with ui digits + and in scientific format if bb + is true. If ui is zero, then returns as many + digits as are required to reconstruct the original value. +

+
+

+ b.negate() +

+
+

+ void +

+
+

+ Negates b. +

+
+

+ cb.compare(cb2) +

+
+

+ int +

+
+

+ Compares cb and + cb2, returns a + value less than zero if cb + < cb2, + a value greater than zero if cb + > cb2 + and zero if cb == cb2. +

+
+

+ cb.compare(a) +

+
+

+ int +

+
+

+ Compares cb and + a, returns a value + less than zero if cb + < a, + a value greater than zero if cb + > a + and zero if cb == a. + The type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ add(b, + cb) +

+
+

+ void +

+
+

+ Adds cb to b. +

+
+

+ subtract(b, + cb) +

+
+

+ void +

+
+

+ Subtracts cb from + b. +

+
+

+ multiply(b, + cb) +

+
+

+ void +

+
+

+ Multiplies b by + cb. +

+
+

+ divide(b, + cb) +

+
+

+ void +

+
+

+ Divides b by cb. +

+
+

+ modulus(b, + cb) +

+
+

+ void +

+
+

+ Computes b %= + cb, only required when + B is an integer + type. +

+
+

+ bitwise_and(b, + cb) +

+
+

+ void +

+
+

+ Computes b &= + cb, only required when + B is an integer + type. +

+
+

+ bitwise_or(b, + cb) +

+
+

+ void +

+
+

+ Computes b |= + cb, only required when + B is an integer + type. +

+
+

+ bitwise_xor(b, + cb) +

+
+

+ void +

+
+

+ Computes b ^= + cb, only required when + B is an integer + type. +

+
+

+ complement(b, + cb) +

+
+

+ void +

+
+

+ Computes the ones-complement of cb + and stores the result in b, + only required when B + is an integer type. +

+
+

+ left_shift(b, + ui) +

+
+

+ void +

+
+

+ Computes b <<= + ui, only required when + B is an integer + type. +

+
+

+ right_shift(b, + ui) +

+
+

+ void +

+
+

+ Computes b >>= + ui, only required when + B is an integer + type. +

+
+

+ convert_to(pa, + cb) +

+
+

+ void +

+
+

+ Converts cb to + the type of *pa + and store the result in *pa. Type B + shall support conversion to at least types std::intmax_t, + std::uintmax_t and long + long. Conversion to other + arithmetic types can then be synthesised using other operations. + Conversions to other types are entirely optional. +

+
+

+ eval_frexp(b, + cb, + pexp) +

+
+

+ void +

+
+

+ Stores values in b + and *pexp + such that the value of cb + is b * 2*pexp, only required when B + is a floating point type. +

+
+

+ eval_ldexp(b, + cb, + exp) +

+
+

+ void +

+
+

+ Stores a value in b + that is cb * 2exp, only required when B + is a floating point type. +

+
+

+ eval_floor(b, + cb) +

+
+

+ void +

+
+

+ Stores the floor of cb + in b, only required + when B is a floating + point type. +

+
+

+ eval_ceil(b, + cb) +

+
+

+ void +

+
+

+ Stores the ceiling of cb + in b, only required + when B is a floating + point type. +

+
+

+ eval_sqrt(b, + cb) +

+
+

+ void +

+
+

+ Stores the square root of cb + in b, only required + when B is a floating + point type. +

+
+
+
+

Table 1.5. Optional Requirements on the Backend Type

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Returns +

+
+

+ Comments +

+
+

+ add(b, + a) +

+
+

+ void +

+
+

+ Adds a to b. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::real_types. +

+
+

+ subtract(b, + a) +

+
+

+ void +

+
+

+ Subtracts a from + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ multiply(b, + a) +

+
+

+ void +

+
+

+ Multiplies b by + a. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ divide(b, + a) +

+
+

+ void +

+
+

+ Divides b by a. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::real_types. +

+
+

+ modulus(b, + a) +

+
+

+ void +

+
+

+ Computes b %= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_and(b, + a) +

+
+

+ void +

+
+

+ Computes b &= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_or(b, + a) +

+
+

+ void +

+
+

+ Computes b |= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_xor(b, + a) +

+
+

+ void +

+
+

+ Computes b ^= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ add(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Add cb to cb2 and stores the result in + b. +

+
+

+ subtract(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Subtracts cb2 from + cb and stores the + result in b. +

+
+

+ multiply(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Multiplies cb by + cb2 and stores + the result in b. +

+
+

+ divide(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Divides cb by + cb2 and stores + the result in b. +

+
+

+ add(b, + cb, + a) +

+
+

+ void +

+
+

+ Add cb to a and stores the result in b. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::real_types. +

+
+

+ subtract(b, + cb, + a) +

+
+

+ void +

+
+

+ Subtracts a from + cb and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ multiply(b, + cb, + a) +

+
+

+ void +

+
+

+ Multiplies cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ divide(b, + cb, + a) +

+
+

+ void +

+
+

+ Divides cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ modulus(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Computes cb % + cb2 and stores the result + in b, only required + when B is an integer + type. +

+
+

+ bitwise_and(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Computes cb & + cb2 and stores the result + in b, only required + when B is an integer + type. +

+
+

+ bitwise_or(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Computes cb | + cb2 and stores the result + in b, only required + when B is an integer + type. +

+
+

+ bitwise_xor(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Computes cb ^ + cb2 and stores the result + in b, only required + when B is an integer + type. +

+
+

+ add(b, + a, + cb) +

+
+

+ void +

+
+

+ Add a to cb and stores the result in + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ subtract(b, + a, + cb) +

+
+

+ void +

+
+

+ Subtracts cb from + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ multiply(b, + a, + cb) +

+
+

+ void +

+
+

+ Multiplies a by + cb and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ divide(b, + a, + cb) +

+
+

+ void +

+
+

+ Divides a by cb and stores the result in + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ modulus(b, + cb, + a) +

+
+

+ void +

+
+

+ Computes cb % + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_and(b, + cb, + a) +

+
+

+ void +

+
+

+ Computes cb & + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_or(b, + cb, + a) +

+
+

+ void +

+
+

+ Computes cb | + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_xor(b, + cb, + a) +

+
+

+ void +

+
+

+ Computes cb ^ + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ modulus(b, + a, + cb) +

+
+

+ void +

+
+

+ Computes cb % + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_and(b, + a, + cb) +

+
+

+ void +

+
+

+ Computes cb & + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_or(b, + a, + cb) +

+
+

+ void +

+
+

+ Computes cb | + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ bitwise_xor(b, + a, + cb) +

+
+

+ void +

+
+

+ Computes a ^ + cb and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::real_types. +

+
+

+ left_shift(b, + cb, + ui) +

+
+

+ void +

+
+

+ Computes cb << + ui and stores the result + in b, only required + when B is an integer + type. +

+
+

+ right_shift(b, + cb, + ui) +

+
+

+ void +

+
+

+ Computes cb >> + ui and stores the result + in b, only required + when B is an integer + type. +

+
+

+ increment(b) +

+
+

+ void +

+
+

+ Increments the value of b + by one. +

+
+

+ decrement(b) +

+
+

+ void +

+
+

+ Decrements the value of b + by one. +

+
+

+ is_zero(cb) +

+
+

+ bool +

+
+

+ Returns true if cb is zero, otherwise false +

+
+

+ get_sign(cb) +

+
+

+ int +

+
+

+ Returns a value < zero if cb + is negative, a value > zero if cb + is positive, and zero if cb + is zero. +

+
+

+ eval_abs(b, + cb) +

+
+

+ void +

+
+

+ Set b to the absolute + value of cb. +

+
+

+ eval_fabs(b, + cb) +

+
+

+ void +

+
+

+ Set b to the absolute + value of cb. +

+
+

+ eval_fpclassify(cb) +

+
+

+ int +

+
+

+ Returns one of the same values returned by std::fpclassify. + Only required when B + is an floating point type. +

+
+

+ eval_trunc(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::trunc + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_round(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::round + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_exp(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_log(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::log + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_log10(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::log10 + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_sin(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::sin + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_cos(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::cos + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_tan(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_asin(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::asin + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_acos(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::acos + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_atan(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::atan + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_sinh(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::sinh + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_cosh(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::cosh + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_tanh(b, + cb) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::tanh + on argument cb + and stores the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_fmod(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::fmod + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_pow(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::pow + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating point type. +

+
+

+ eval_atan2(b, + cb, + cb2) +

+
+

+ void +

+
+

+ Performs the equivalent operation to std::atan + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating point type. +

+
+
+
+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html new file mode 100644 index 00000000..613feeaa --- /dev/null +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -0,0 +1,411 @@ + + + +mp_number + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
namespace boost{ namespace multiprecision{
+
+template <class Backend>
+class mp_number
+{
+   mp_number();
+   mp_number(see-below);
+   mp_number& operator=(see-below);
+
+   /* Other number-type operators here */
+
+   // Use in Boolean context:
+   operator convertible-to-bool-type()const;
+   // swap:
+   void swap(mp_number& other);
+   // Sign:
+   bool is_zero()const;
+   int sign()const;
+   // string conversion:
+   std::string str()const;
+   // Generic conversion mechanism
+   template <class T>
+   T convert_to()const;
+   // precision control:
+   static unsigned default_precision();
+   static void default_precision(unsigned digits10);
+   unsigned precision()const;
+   void precision(unsigned digits10);
+   // Comparison:
+   int compare(const mp_number<Backend>& o)const;
+   template <class V>
+   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
+   // Access to the underlying implementation:
+   Backend& backend();
+   const Backend& backend()const;
+};
+
+// Swap:
+template <class Backend>
+void swap(mp_number<Backend>& a, mp_number<Backend>& b);
+
+// iostream support:
+template <class Backend>
+std::ostream& operator << (std::ostream& os, const mp_number<Backend>& r);
+std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
+template <class Backend>
+std::istream& operator >> (std::istream& is, mp_number<Backend>& r);
+
+// Non-member function standard library support:
+unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
+
+unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
+unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
+unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
+
+}} // namespaces
+
+namespace boost{ namespace math{
+
+// Boost.Math interoperability functions:
+int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
+bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
+bool                                             isnan          (const mp_number-or-expression-template-type&, int);
+bool                                             isinf          (const mp_number-or-expression-template-type&, int);
+bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
+
+}} // namespaces
+
+// numeric_limits support:
+namespace std{
+
+template <class Backend>
+struct numeric_limits<boost::multiprecision<Backend> >
+{
+   /* Usual members here */
+};
+
+}
+
+
+ + Description +
+
mp_number();
+mp_number(see-below);
+mp_number& operator=(see-below);
+
+

+ Type mp_number is default + constructible, and both copy constructible and assignable from: +

+
    +
  • + Itself. +
  • +
  • + An expression template which is the result of one of the arithmetic operators. +
  • +
  • + Any builtin arithmetic type. +
  • +
  • + A std::string or any type which is convertible + to const char*. +
  • +
  • + Any type that the Backend is constructible or assignable from. +
  • +
+
/* Other number-type operators here */
+
+

+ The following arithmetic operations are support for real-numbered types: +

+
    +
  • + Binary +, -, *, /, +, -, *, /, + ==, !, <, >, <, >, ||, &&, + ||, &&=. +
  • +
  • + Unary +, -, ++, --, !. +
  • +
+

+ For integer types the following operators are also supported: +

+

+ Binary %, %, |, |, &, &, ^, ^, + <<, <<, >>, >>. +

+

+ Note that with the exception of the logical operators and unary + the result + of applying an operator to mp_number is an "unmentionable" expression + template type. +

+

+ Binary operators, must have at least one argument that is of type mp_number or an expression template derived + from mp_number. One argument + may optionally be of arithmetic type. +

+

+ Note that type mp_number + (and all expression templates derived from it) may be used in a Boolian context. +

+
operator convertible-to-bool-type()const;
+
+

+ Returns an unmentionable-type that is usable in Boolean + contexts (this allows mp_number + to be used in any Boolean context - if statements, conditional statements, + or as an argument to a logical operator - without type mp_number + being convertible to type bool. +

+
void swap(mp_number& other);
+
+

+ Swaps *this + with other. +

+
bool is_zero()const;
+
+

+ Returns true is *this is zero, + otherwise false. +

+
int sign()const;
+
+

+ Returns a value less than zero if *this is negative, a value greater than zero + if *this + is positive, and zero if *this + is zero. +

+
std::string str(unsigned precision, bool scientific = true)const;
+
+

+ Returns the number formatted as a string, with at least precision + digits, and in scientific format if scientific is true. +

+
template <class T>
+T convert_to()const;
+
+

+ Provides a generic conversion mechanism to convert *this to type T. + Type T may be any arithmetic + type. Optionally other types may also be supported by specific Backend types. +

+
static unsigned default_precision();
+static void default_precision(unsigned digits10);
+unsigned precision()const;
+void precision(unsigned digits10);
+
+

+ These functions are only available if the Backend template parameter supports + runtime changes to precision. They get and set the default precision and + the precision of *this + respectively. +

+
int compare(const mp_number<Backend>& o)const;
+template <class V>
+typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
+
+

+ Returns: +

+
    +
  • + A value less that 0 for *this < other +
  • +
  • + A value greater that 0 for *this > other +
  • +
  • + Zero for *this == other +
  • +
+
Backend& backend();
+const Backend& backend()const;
+
+

+ Returns the underlying backend instance used by *this. +

+
+ + swap +
+
template <class Backend>
+void swap(mp_number<Backend>& a, mp_number<Backend>& b);
+
+

+ Swaps a and b. +

+
+ + Iostream + Support +
+
template <class Backend>
+std::ostream& operator << (std::ostream& os, const mp_number<Backend>& r);
+template <class Backend>
+std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
+template <class Backend>
+inline std::istream& operator >> (std::istream& is, mp_number<Backend>& r)
+
+

+ These operators provided formatted input-output operations on mp_number types, and expression templates + derived from them. +

+
+ + Non-member + standard library function support +
+
unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
+
+unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
+unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
+unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
+unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
+
+

+ These functions all behave exactly as their standard library counterparts + do: their argument is either an instance of mp_number + or an expression template derived from it; their return value is always an + expression template. +

+

+ These functions are normally implemented by the Backend type. However, default + versions are provided for Backend types that don't have native support for + these functions. Please note however, that this default support requires + the precision of the type to be a compile time constant - this means for + example that the GMP MPF Backend will not work with these functions when + that type is used at variable precision. +

+

+ Also note that with the exception of abs + that these functions can only be used with floating point Backend types. +

+
+ + Boost.Math + Interoperabilty Support +
+
namespace boost{ namespace math{
+
+int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
+bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
+bool                                             isnan          (const mp_number-or-expression-template-type&, int);
+bool                                             isinf          (const mp_number-or-expression-template-type&, int);
+bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
+
+}} // namespaces
+
+

+ These functions behave exacts as their Boost.Math equivalents. Other Boost.Math + functions and templates may also be specialized or overloaded to ensure interoperability. +

+
+ + std::numeric_limits + support +
+
namespace std{
+
+template <class Backend>
+struct numeric_limits<boost::multiprecision<Backend> >
+{
+   /* Usual members here */
+};
+
+}
+
+

+ Class template std::numeric_limits is specialized for all instantiations + of mp_number whose precision + is known at compile time, plus those types whose precision is unlimited (though + it is much less useful in those cases). It is not specialized for types whose + precision can vary at compile time (such as mpf_float). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html new file mode 100644 index 00000000..d6d8a0bb --- /dev/null +++ b/doc/html/boost_multiprecision/tut.html @@ -0,0 +1,45 @@ + + + +Tutorial + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ + +

+ In order to use this library you need to make two choices: what kind of number + do I want, and which backend do I want to perform the actual arithmetic? +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html new file mode 100644 index 00000000..bccd2e4f --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -0,0 +1,177 @@ + + + +Integer Types + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The following backends provide integer arithmetic: +

+
++++++++ + + + + + + + + + + + + + + + + +
+

+ Backend Type +

+
+

+ Header +

+
+

+ Radix +

+
+

+ Dependencies +

+
+

+ Pros +

+
+

+ Cons +

+
+

+ gmp_int +

+
+

+ boost/multiprecision/gmp.hpp +

+
+

+ 2 +

+
+

+ GMP +

+
+

+ Very fast and efficient backend. +

+
+

+ Dependency on GNU licenced GMP library. +

+
+
+ + gmp_int +
+
namespace boost{ namespace multiprecision{
+
+class gmp_int;
+
+typedef mp_number<gmp_int >         mpz_int;
+
+}} // namespaces
+
+

+ The gmp_int backend is used + via the typedef boost::multiprecision::mpz_int. It acts as a thin wrapper around + the GMP mpz_t to provide + an integer type that is a drop-in replacement for the native C++ integer + types, but with unlimited precision. +

+

+ As well as the usual conversions from arithmetic and string types, type + mpz_int is copy constructible + and asignable from: +

+
    +
  • + The GMP native types: mpf_t, + mpz_t, mpq_t. +
  • +
  • + Instances of mp_number<T> that are wrappers around those types: + mp_number<gmp_float<N> >, mp_number<gmp_rational>. +
  • +
+

+ It's also possible to access the underlying mpz_t + via the data() member function of gmp_int. +

+
+ + Example: +
+

+ +

+
#include <boost/multiprecision/gmp.hpp>
+
+using namespace boost::multiprecision;
+
+mpz_int v = 1;
+
+// Do some arithmetic:
+for(unsigned i = 1; i <= 1000; ++i)
+   v *= i;
+
+std::cout << v << std::endl; // prints 1000!
+
+// Access the underlying representation:
+mpz_t z;
+mpz_init(z);
+mpz_set(z, v.backend().data());
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html new file mode 100644 index 00000000..4f5308d5 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -0,0 +1,188 @@ + + + +Rational Number Types + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The following backends provide rational number arithmetic: +

+
++++++++ + + + + + + + + + + + + + + + + +
+

+ Backend Type +

+
+

+ Header +

+
+

+ Radix +

+
+

+ Dependencies +

+
+

+ Pros +

+
+

+ Cons +

+
+

+ gmp_rational +

+
+

+ boost/multiprecision/gmp.hpp +

+
+

+ 2 +

+
+

+ GMP +

+
+

+ Very fast and efficient backend. +

+
+

+ Dependency on GNU licenced GMP library. +

+
+
+ + gmp_rational +
+
namespace boost{ namespace multiprecision{
+
+class gmp_rational;
+
+typedef mp_number<gmp_rational >         mpq_rational;
+
+}} // namespaces
+
+

+ The gmp_rational backend + is used via the typedef boost::multiprecision::mpq_rational. + It acts as a thin wrapper around the GMP mpq_t + to provide a rational number type that is a drop-in replacement for the native + C++ number types, but with unlimited precision. +

+

+ As well as the usual conversions from arithmetic and string types, instances + of mp_number<gmp_rational> + are copy constructible and assignable from: +

+
    +
  • + The GMP native types: mpz_t, + mpq_t. +
  • +
  • + mp_number<gmp_int>. +
  • +
+

+ There are also non-member functions: +

+
mpz_int numerator(const mpq_rational&);
+mpz_int denominator(const mpq_rational&);
+
+

+ Which return the numerator and denominator of the number. +

+

+ It's also possible to access the underlying mpq_t + via the data() member function of mpq_rational. +

+
+ + Example: +
+

+ +

+
#include <boost/multiprecision/gmp.hpp>
+
+using namespace boost::multiprecision;
+
+mpq_rational v = 1;
+
+// Do some arithmetic:
+for(unsigned i = 1; i <= 1000; ++i)
+   v *= i;
+v /= 10;
+
+std::cout << v << std::endl; // prints 1000! / 10
+std::cout << numerator(v) << std::endl;
+std::cout << denominator(v) << std::endl;
+
+// Access the underlying data:
+mpq_t q;
+mpq_init(q);
+mpq_set(q, v.backend().data());
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html new file mode 100644 index 00000000..a5df3c35 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/reals.html @@ -0,0 +1,420 @@ + + + +Real Numbers + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ +

+ The following backends provide real number arithmetic: +

+
++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Backend Type +

+
+

+ Header +

+
+

+ Radix +

+
+

+ Dependencies +

+
+

+ Pros +

+
+

+ Cons +

+
+

+ mpf_float<N> +

+
+

+ boost/multiprecision/gmp.hpp +

+
+

+ 2 +

+
+

+ GMP +

+
+

+ Very fast and efficient backend. +

+
+

+ Dependency on GNU licenced GMP library. +

+
+

+ mpfr_float<N> +

+
+

+ boost/multiprecision/mpfr.hpp +

+
+

+ 2 +

+
+

+ GMP and MPFR +

+
+

+ Very fast and efficient backend, with it's own standard library + implementation. +

+
+

+ Dependency on GNU licenced GMP and MPFR libraries. +

+
+

+ cpp_float<N> +

+
+

+ boost/multiprecision/cpp_float.hpp +

+
+

+ 10 +

+
+

+ None +

+
+

+ Header only, all C++ implementation. +

+
+

+ Approximately 2x slower than the MPFR or GMP libraries. +

+
+
+ + gmp_float +
+
namespace boost{ namespace multiprecision{
+
+template <unsigned Digits10>
+class gmp_float;
+
+typedef mp_number<gmp_float<50> >    mpf_float_50;
+typedef mp_number<gmp_float<100> >   mpf_float_100;
+typedef mp_number<gmp_float<500> >   mpf_float_500;
+typedef mp_number<gmp_float<1000> >  mpf_float_1000;
+typedef mp_number<gmp_float<0> >     mpf_float;
+
+}} // namespaces
+
+

+ The gmp_float backend is + used in conjunction with mp_number: + It acts as a thin wrapper around the GMP mpf_t + to provide an real-number type that is a drop-in replacement for the native + C++ floating-point types, but with much greater precision. +

+

+ Type gmp_float can be used + at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpf_float provides a variable precision type whose + precision can be controlled via the mp_number's + member functions. +

+
+ + + + + +
[Note]Note

+ This type only provides standard library and numeric_limits + support when the precision is fixed at compile time. +

+

+ As well as the usual conversions from arithmetic and string types, instances + of mp_number<mpf_float<N> > are copy constructible and assignable + from: +

+
    +
  • + The GMP native types mpf_t, + mpz_t, mpq_t. +
  • +
  • + The mp_number wrappers + around those types: mp_number<mpf_float<M> >, + mp_number<gmp_int>, + mp_number<gmp_rational>. +
  • +
+

+ It's also possible to access the underlying mpf_t + via the data() member function of gmp_float. +

+
+ + GMP example: +
+

+ +

+
#include <boost/multiprecision/gmp.hpp>
+
+using namespace boost::multiprecision;
+
+// Operations at variable precision and limited standard library support:
+mpf_float a = 2;
+mpf_float::default_precision(1000);
+std::cout << mpf_float::default_precision() << std::endl;
+std::cout << sqrt(a) << std::endl; // print root-2
+
+// Operations at fixed precision and full standard library support:
+mpf_float_100 b = 2;
+std::cout << std::numeric_limits<mpf_float_100>::digits << std::endl;
+std::cout << log(b) << std::endl; // print log(2)
+
+// Access the underlying representation:
+mpf_t f;
+mpf_init(f);
+mpf_set(f, a.backend().data());
+
+

+

+
+ + mpfr_float +
+
namespace boost{ namespace multiprecision{
+
+template <unsigned Digits10>
+class mpfr_float_backend;
+
+typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
+typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
+typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
+typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
+typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
+
+}} // namespaces
+
+

+ The mpfr_float_backend type + is used in conjunction with mp_number: + It acts as a thin wrapper around the MPFR mpfr_t + to provide an real-number type that is a drop-in replacement for the native + C++ floating-point types, but with much greater precision. +

+

+ Type mpfr_float_backend can + be used at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpfr_float provides a variable precision type whose + precision can be controlled via the mp_number's + member functions. +

+
+ + + + + +
[Note]Note

+ This type only provides numeric_limits + support when the precision is fixed at compile time. +

+

+ As well as the usual conversions from arithmetic and string types, instances + of mp_number<mpfr_float_backend<N> > are copy constructible and assignable + from: +

+
    +
  • + The GMP native types mpf_t, + mpz_t, mpq_t. +
  • +
  • + The MPFR native type mpfr_t. +
  • +
  • + The mp_number wrappers + around those types: mp_number<mpfr_float_backend<M> >, + mp_number<mpf_float<M> >, mp_number<gmp_int>, mp_number<gmp_rational>. +
  • +
+

+ It's also possible to access the underlying mpf_t + via the data() member function of gmp_float. +

+
+ + MPFR example: +
+

+ +

+
#include <boost/multiprecision/mpfr.hpp>
+
+using namespace boost::multiprecision;
+
+// Operations at variable precision and no numeric_limits support:
+mpfr_float a = 2;
+mpfr_float::default_precision(1000);
+std::cout << mpfr_float::default_precision() << std::endl;
+std::cout << sqrt(a) << std::endl; // print root-2
+
+// Operations at fixed precision and full numeric_limits support:
+mpfr_float_100 b = 2;
+std::cout << std::numeric_limits<mpfr_float_100>::digits << std::endl;
+std::cout << log(b) << std::endl; // print log(2)
+
+// Access the underlying data:
+mpfr_t r;
+mpfr_init(r);
+mpfr_set(r, b.backend().data(), GMP_RNDN);
+
+

+

+
+ + cpp_float +
+
namespace boost{ namespace multiprecision{
+
+template <unsigned Digits10>
+class cpp_float;
+
+typedef mp_number<cpp_float<50> > cpp_float_50;
+typedef mp_number<cpp_float<100> > cpp_float_100;
+
+}} // namespaces
+
+

+ The cpp_float backend is + used in conjunction with mp_number: + It acts as an entirely C++ (header only and dependency free) real-number + type that is a drop-in replacement for the native C++ floating-point types, + but with much greater precision. +

+

+ Type cpp_float can be used + at fixed precision by specifying a non-zero Digits10 + template parameter. The typedefs cpp_float_50 and cpp_float_100 provide arithmetic + types at 50 and 100 decimal digits precision respectively. +

+

+ There is full standard library and numeric_limits + support available for this type. +

+
+ + cpp_float + example: +
+

+ +

+
#include <boost/multiprecision/cpp_float.hpp>
+
+using namespace boost::multiprecision;
+
+// Operations at fixed precision and full numeric_limits support:
+cpp_float_100 b = 2;
+std::cout << std::numeric_limits<cpp_float_100>::digits << std::endl;
+std::cout << log(b) << std::endl; // print log(2)
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 00000000..1b43772d --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,54 @@ + + + +Chapter 1. Boost.Multiprecision + + + + + + +
+
+
Next
+
+
+

+Chapter 1. Boost.Multiprecision

+

+various authors +

+
+
+

+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +

+
+
+ +
+ + + +

Last revised: July 08, 2011 at 18:51:46 +0100

+
+
Next
+ + diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index fdcd45e6..2e5e7b9e 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -20,7 +20,7 @@ [import ../example/gmp_snips.cpp] [import ../example/mpfr_snips.cpp] -[import ../example/mp_float_snips.cpp] +[import ../example/cpp_float_snips.cpp] [section:intro Introduction] @@ -233,7 +233,7 @@ The following backends provide real number arithmetic: [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`mpf_float`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] [[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][GMP and MPFR][Very fast and efficient backend, with it's own standard library implementation.][Dependency on GNU licenced GMP and MPFR libraries.]] -[[`mp_float`][boost/multiprecision/mp_float.hpp][10][None][Header only, all C++ implementation.][Approximately 2x slower than the MPFR or GMP libraries.]] +[[`cpp_float`][boost/multiprecision/cpp_float.hpp][10][None][Header only, all C++ implementation.][Approximately 2x slower than the MPFR or GMP libraries.]] ] [h4 gmp_float] @@ -315,31 +315,31 @@ It's also possible to access the underlying `mpf_t` via the data() member functi [mpfr_eg] -[h4 mp_float] +[h4 cpp_float] namespace boost{ namespace multiprecision{ template - class mp_float; + class cpp_float; - typedef mp_number > mp_float_50; - typedef mp_number > mp_float_100; + typedef mp_number > cpp_float_50; + typedef mp_number > cpp_float_100; }} // namespaces -The `mp_float` backend is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free) +The `cpp_float` backend is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free) real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. -Type `mp_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. -The typedefs mp_float_50 and mp_float_100 provide arithmetic types at 50 and 100 decimal digits precision +Type `cpp_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. +The typedefs cpp_float_50 and cpp_float_100 provide arithmetic types at 50 and 100 decimal digits precision respectively. There is full standard library and `numeric_limits` support available for this type. -[h5 mp_float example:] +[h5 cpp_float example:] -[mp_float_eg] +[cpp_float_eg] [endsect] @@ -548,7 +548,7 @@ Returns `true` is `*this` is zero, otherwise `false`. int sign()const; -Returns a value less than zero if `*this` is negative, a value greater than zero if `*this is positive, and zero +Returns a value less than zero if `*this` is negative, a value greater than zero if `*this` is positive, and zero if `*this` is zero. std::string str(unsigned precision, bool scientific = true)const; diff --git a/example/mp_float_snips.cpp b/example/cpp_float_snips.cpp similarity index 100% rename from example/mp_float_snips.cpp rename to example/cpp_float_snips.cpp From 0c413f735247963d8f8746750c616581402d62a0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 14 Nov 2011 13:39:10 +0000 Subject: [PATCH 063/256] Change real_types to float_types. [SVN r75489] --- .../boost_multiprecision/ref/backendconc.html | 54 +++++++++---------- doc/html/index.html | 2 +- doc/multiprecision.qbk | 54 +++++++++---------- .../multiprecision/arithmetic_backend.hpp | 2 +- .../concepts/mp_number_architypes.hpp | 2 +- include/boost/multiprecision/cpp_float.hpp | 2 +- .../multiprecision/detail/default_ops.hpp | 2 +- .../detail/functions/constants.hpp | 4 +- .../multiprecision/detail/functions/pow.hpp | 8 +-- .../multiprecision/detail/functions/trig.hpp | 14 ++--- .../multiprecision/detail/mp_number_base.hpp | 2 +- include/boost/multiprecision/gmp.hpp | 6 +-- include/boost/multiprecision/mpfr.hpp | 2 +- test/Jamfile.v2 | 2 +- 14 files changed, 78 insertions(+), 78 deletions(-) diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index a15e98a4..765eb817 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -104,7 +104,7 @@

- B::real_types + B::float_types

@@ -199,7 +199,7 @@

Assignment from an Arithmetic type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -322,7 +322,7 @@ and zero if cb == a. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -724,7 +724,7 @@

Adds a to b. The type of a shall be listed in one of the type lists B::signed_types, B::unsigned_types - or B::real_types. + or B::float_types.

@@ -746,7 +746,7 @@ b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -768,7 +768,7 @@ a. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -788,7 +788,7 @@

Divides b by a. The type of a shall be listed in one of the type lists B::signed_types, B::unsigned_types - or B::real_types. + or B::float_types.

@@ -811,7 +811,7 @@ B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -834,7 +834,7 @@ B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -857,7 +857,7 @@ B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -880,7 +880,7 @@ B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -984,7 +984,7 @@

Add cb to a and stores the result in b. The type of a shall be listed in one of the type lists B::signed_types, B::unsigned_types - or B::real_types. + or B::float_types.

@@ -1008,7 +1008,7 @@ result in b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1032,7 +1032,7 @@ result in b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1056,7 +1056,7 @@ result in b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1171,7 +1171,7 @@ b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1195,7 +1195,7 @@ result in b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1219,7 +1219,7 @@ result in b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1242,7 +1242,7 @@ b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1267,7 +1267,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1292,7 +1292,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1317,7 +1317,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1342,7 +1342,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1367,7 +1367,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1392,7 +1392,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1417,7 +1417,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

@@ -1442,7 +1442,7 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::real_types. + B::unsigned_types or B::float_types.

diff --git a/doc/html/index.html b/doc/html/index.html index 1b43772d..2f877f6c 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -20,7 +20,7 @@
-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 2e5e7b9e..1d539382 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -701,14 +701,14 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia listed in order of size, smallest first, and shall terminate in the type that is `std::intmax_t`.]] [[`B::unsigned_types`][`mpl::list`][A list of unsigned integral types that can be assigned to type B. The types shall be listed in order of size, smallest first, and shall terminate in the type that is `std::uintmax_t`.]] -[[`B::real_types`][`mpl::list`][A list of floating point types that can be assigned to type B.The types shall be +[[`B::float_types`][`mpl::list`][A list of floating point types that can be assigned to type B.The types shall be listed in order of size, smallest first, and shall terminate in type `long double`.]] [[`B::exponent_type`][A signed integral type.][The type of the exponent of type B.]] [[`B()`][ ][Default constructor.]] [[`B(cb)`][ ][Copy Constructor.]] [[`b = b`][`B&`][Assignment operator.]] [[`b = a`][`B&`][Assignment from an Arithmetic type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`b = s`][`B&`][Assignment from a string.]] [[`b.swap(b)`][`void`][Swaps the contents of it's arguments.]] [[`cb.str(ui, bb)`][`std::string`][Returns the string representation of `b` with `ui` digits and in scientific format if `bb` is `true`. @@ -718,7 +718,7 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia if `cb == cb2`.]] [[`cb.compare(a)`][`int`][Compares `cb` and `a`, returns a value less than zero if `cb < a`, a value greater than zero if `cb > a` and zero if `cb == a`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`add(b, cb)`][`void`][Adds `cb` to `b`.]] [[`subtract(b, cb)`][`void`][Subtracts `cb` from `b`.]] [[`multiply(b, cb)`][`void`][Multiplies `b` by `cb`.]] @@ -744,61 +744,61 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia [table Optional Requirements on the Backend Type [[Expression][Returns][Comments]] [[`add(b, a)`][`void`][Adds `a` to `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`subtract(b, a)`][`void`][Subtracts `a` from `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`multiply(b, a)`][`void`][Multiplies `b` by `a`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`divide(b, a)`][`void`][Divides `b` by `a`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`modulus(b, a)`][`void`][Computes `b %= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_and(b, a)`][`void`][Computes `b &= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_or(b, a)`][`void`][Computes `b |= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_xor(b, a)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`add(b, cb, cb2)`][`void`][Add `cb` to `cb2` and stores the result in `b`.]] [[`subtract(b, cb, cb2)`][`void`][Subtracts `cb2` from `cb` and stores the result in `b`.]] [[`multiply(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and stores the result in `b`.]] [[`divide(b, cb, cb2)`][`void`][Divides `cb` by `cb2` and stores the result in `b`.]] [[`add(b, cb, a)`][`void`][Add `cb` to `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`subtract(b, cb, a)`][`void`][Subtracts `a` from `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`multiply(b, cb, a)`][`void`][Multiplies `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`divide(b, cb, a)`][`void`][Divides `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`modulus(b, cb, cb2)`][`void`][Computes `cb % cb2` and stores the result in `b`, only required when `B` is an integer type.]] [[`bitwise_and(b, cb, cb2)`][`void`][Computes `cb & cb2` and stores the result in `b`, only required when `B` is an integer type.]] [[`bitwise_or(b, cb, cb2)`][`void`][Computes `cb | cb2` and stores the result in `b`, only required when `B` is an integer type.]] [[`bitwise_xor(b, cb, cb2)`][`void`][Computes `cb ^ cb2` and stores the result in `b`, only required when `B` is an integer type.]] [[`add(b, a, cb)`][`void`][Add `a` to `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`subtract(b, a, cb)`][`void`][Subtracts `cb` from `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`multiply(b, a, cb)`][`void`][Multiplies `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`divide(b, a, cb)`][`void`][Divides `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`modulus(b, cb, a)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_and(b, cb, a)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_or(b, cb, a)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_xor(b, cb, a)`][`void`][Computes `cb ^ a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`modulus(b, a, cb)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_and(b, a, cb)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_or(b, a, cb)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`bitwise_xor(b, a, cb)`][`void`][Computes `a ^ cb` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::real_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`left_shift(b, cb, ui)`][`void`][Computes `cb << ui` and stores the result in `b`, only required when `B` is an integer type.]] [[`right_shift(b, cb, ui)`][`void`][Computes `cb >> ui` and stores the result in `b`, only required when `B` is an integer type.]] [[`increment(b)`][void][Increments the value of `b` by one.]] diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index a58a2b6d..25f173ad 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -20,7 +20,7 @@ struct arithmetic_backend { typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list float_types; typedef int exponent_type; arithmetic_backend(){} diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index accd293d..a51f93b7 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -27,7 +27,7 @@ struct mp_number_backend_float_architype { typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list float_types; typedef int exponent_type; mp_number_backend_float_architype() diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 19e704c4..ab5b5432 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -30,7 +30,7 @@ class cpp_float public: typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list float_types; typedef boost::int64_t exponent_type; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 2e2770fa..917a99e2 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -303,7 +303,7 @@ struct calculate_next_larger_type typename mpl::if_< is_unsigned, typename B::unsigned_types, - typename B::real_types + typename B::float_types >::type >::type list_type; typedef typename has_enough_bits::digits>::template type pred_type; diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 1c1c1d06..56bb4716 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -50,7 +50,7 @@ template void calc_e(T& result, unsigned digits) { typedef typename mpl::front::type ui_type; - typedef typename mpl::front::type real_type; + typedef typename mpl::front::type real_type; T lim; lim = ui_type(1); eval_ldexp(lim, lim, digits); @@ -72,7 +72,7 @@ template void calc_pi(T& result, unsigned digits) { typedef typename mpl::front::type ui_type; - typedef typename mpl::front::type real_type; + typedef typename mpl::front::type real_type; T a; a = ui_type(1); diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index ad4629d6..f4e98eaf 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -144,7 +144,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; BOOST_ASSERT(&H1F0 != &x); BOOST_ASSERT(&H1F0 != &a); @@ -341,7 +341,7 @@ void eval_log(T& result, const T& arg) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; exp_type e; T t; @@ -421,7 +421,7 @@ inline void eval_pow(T& result, const T& x, const T& a) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; if((&result == &x) || (&result == &a)) { @@ -551,7 +551,7 @@ namespace detail{ typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; switch(eval_fpclassify(x)) { diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index cf2b8dd2..d6119eaf 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -19,7 +19,7 @@ void hyp0F1(T& result, const T& b, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; // Compute the series representation of Hypergeometric0F1 taken from // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric0F1/06/01/01/ @@ -80,7 +80,7 @@ void eval_sin(T& result, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; switch(eval_fpclassify(x)) { @@ -218,7 +218,7 @@ void eval_cos(T& result, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; switch(eval_fpclassify(x)) { @@ -359,7 +359,7 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; T x_pow_n_div_n_fact(x); T pochham_a (a); @@ -417,7 +417,7 @@ void eval_asin(T& result, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; if(&result == &x) { @@ -567,7 +567,7 @@ void eval_atan(T& result, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; switch(eval_fpclassify(x)) { @@ -670,7 +670,7 @@ void eval_atan2(T& result, const T& y, const T& x) typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; typedef typename boost::multiprecision::detail::canonical::type canonical_exp_type; - typedef typename mpl::front::type fp_type; + typedef typename mpl::front::type fp_type; switch(eval_fpclassify(y)) { diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index e85328b1..6a7f0ff1 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -58,7 +58,7 @@ struct canonical_imp > { typedef typename has_enough_bits::digits>::template type pred_type; typedef typename mpl::find_if< - typename Backend::real_types, + typename Backend::float_types, pred_type >::type iter_type; typedef typename mpl::deref::type type; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index ce7413a8..f5260057 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -27,7 +27,7 @@ struct gmp_float_imp { typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list float_types; typedef long exponent_type; gmp_float_imp(){} @@ -794,7 +794,7 @@ struct gmp_int { typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list float_types; gmp_int() { @@ -1298,7 +1298,7 @@ struct gmp_rational { typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list float_types; gmp_rational() { diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 80752d1c..e37e5082 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -30,7 +30,7 @@ struct mpfr_float_imp { typedef mpl::list signed_types; typedef mpl::list unsigned_types; - typedef mpl::list real_types; + typedef mpl::list float_types; typedef long exponent_type; mpfr_float_imp(){} diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 83de9b40..3bd9ac01 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -489,7 +489,7 @@ run ../example/mpfr_snips.cpp mpfr : # requirements [ check-target-builds ../config//has_mpfr : : no ] ; -run ../example/mp_float_snips.cpp ; +run ../example/cpp_float_snips.cpp ; run test_round.cpp : # command line From bf4c85c584926bd385e6ed7b4209f2d8d8db6b33 Mon Sep 17 00:00:00 2001 From: "Paul A. Bristow" Date: Tue, 15 Nov 2011 12:16:49 +0000 Subject: [PATCH 064/256] Minor editorial corrections. [SVN r75494] --- doc/multiprecision.qbk | 136 +++++++++++++++++++++-------------------- 1 file changed, 70 insertions(+), 66 deletions(-) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 1d539382..48117bfd 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -15,7 +15,7 @@ [@http://www.boost.org/LICENSE_1_0.txt]) ] [authors [authors, various]] - [last-revision $Date: 2011-07-08 18:51:46 +0100 (Fri, 08 Jul 2011) $] + [/last-revision $Date: 2011-07-08 18:51:46 +0100 (Fri, 08 Jul 2011) $] ] [import ../example/gmp_snips.cpp] @@ -24,21 +24,23 @@ [section:intro Introduction] -The Multiprecision library comes in two distinct parts: an expression-template-enabled front end `mp_number` -that handles all the operator overloading, expression evaluation optimization, and code reduction, and -a selection of backends that implement the actual arithmetic operations, and need conform only to the +The Multiprecision library comes in two distinct parts: + +* An expression-template-enabled front end `mp_number` +that handles all the operator overloading, expression evaluation optimization, and code reduction. +* A selection of backends that implement the actual arithmetic operations, and need conform only to the reduced interface requirements of the front end. -The library is often used by using one of the predfined typedefs: for example if you wanted an arbitrary precision +The library is often used by using one of the predefined typedefs: for example if you wanted an arbitrary precision integer type using GMP as the underlying implementation then you could use: #include // Defines the wrappers around the GMP library's types boost::multiprecision::mpz_int myint; // Arbitrary precision integer type. -Alternatively one can compose your own multiprecision type, by combining `mp_number` with one of the -predefined backend types. For example, suppose you wanted a 300 decimal digit floating point type -based on the MPFR library, in this case there's no predefined typedef with that level of precision, +Alternatively, you can compose your own multiprecision type, by combining `mp_number` with one of the +predefined backend types. For example, suppose you wanted a 300 decimal digit floating-point type +based on the MPFR library. In this case, there's no predefined typedef with that level of precision, so instead we compose our own: #include // Defines the Backend type that wraps MPFR @@ -81,9 +83,9 @@ lets suppose we're evaluating a polynomial via Horners method, something like th //.... y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; -If type `T` is an `mp_number`, then this expression is evaluated ['without creating a single temporary value], in contrast +If type `T` is an `mp_number`, then this expression is evaluated ['without creating a single temporary value]. In contrast, if we were using the C++ wrapper that ships with GMP - `mpf_class` - then this expression would result in no less than 11 -temporaries (this is true even though mpf_class does use expression templates to reduce the number of temporaries somewhat). Had +temporaries (this is true even though `mpf_class` does use expression templates to reduce the number of temporaries somewhat). Had we used an even simpler wrapper around GMP or MPFR like `mpclass` things would have been even worse and no less that 24 temporaries are created for this simple expression (note - we actually measure the number of memory allocations performed rather than the number of temporaries directly). @@ -109,9 +111,9 @@ Given the comments above, you might be forgiven for thinking that expression-tem sadly though, all tricks like this have their downsides. For one thing, expression template libraries like this one, tend to be slower to compile than their simpler cousins, they're also harder to debug (should you actually want to step through our code!), and rely on compiler optimizations being turned -on to give really good performance. Also since the return type from expressions involving `mp_number`'s +on to give really good performance. Also, since the return type from expressions involving `mp_number`'s is an "unmentionable implementation detail", you have to be careful to cast the result of an expression -to the actual number type when passing an expression to a template function. For example given: +to the actual number type when passing an expression to a template function. For example, given: template void my_proc(const T&); @@ -126,7 +128,7 @@ an expression template type, and not a number type. Instead we probably need: my_proc(my_mp_number_type(a+b)); Having said that, these situations don't occur that often - or indeed not at all for non-template functions. -In addition all the functions in the Boost.Math library will automatically convert expression-template arguments +In addition, all the functions in the Boost.Math library will automatically convert expression-template arguments to the underlying number type without you having to do anything, so: mpfr_float_100 a(20), delta(0.125); @@ -139,9 +141,9 @@ One other potential pitfall that's only possible in C++11: you should never stor auto my_expression = a + b - c; -Unless you're absolutely sure that the lifetimes of `a`, `b` and `c` will outlive that of `my_expression`. +unless you're absolutely sure that the lifetimes of `a`, `b` and `c` will outlive that of `my_expression`. -And finally.... the performance improvements from an expression template library like this are often not as +And finally... the performance improvements from an expression template library like this are often not as dramatic as the reduction in number of temporaries would suggest. For example if we compare this library with `mpfr_class` and `mpreal`, with all three using the underlying MPFR library at 50 decimal digits precision then we see the following typical results for polynomial execution: @@ -153,7 +155,7 @@ we see the following typical results for polynomial execution: [[mpreal][1.9 (0.0148s)][9.3 (27947 total)]] ] -As you can see the execution time increases a lot more slowly than the number of memory allocations. There are +As you can see, the execution time increases a lot more slowly than the number of memory allocations. There are a number of reasons for this: * The cost of extended-precision multiplication and division is so great, that the times taken for these tend to @@ -167,7 +169,7 @@ one would hope. We'll conclude this section by providing some more performance comparisons between these three libraries, again, all are using MPFR to carry out the underlying arithmetic, and all are operating at the same precision -(50 decimal places): +(50 decimal digits): [table Evaluation of Boost.Math's Bessel function test data [[Library][Relative Time][Relative Number of Memory Allocations]] @@ -212,12 +214,12 @@ The following backends provide integer arithmetic: The `gmp_int` backend is used via the typedef `boost::multiprecision::mpz_int`. It acts as a thin wrapper around the GMP `mpz_t` to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. -As well as the usual conversions from arithmetic and string types, type `mpz_int` is copy constructible and asignable from: +As well as the usual conversions from arithmetic and string types, type `mpz_int` is copy constructible and assignable from: * The GMP native types: `mpf_t`, `mpz_t`, `mpq_t`. * Instances of `mp_number` that are wrappers around those types: `mp_number >`, `mp_number`. -It's also possible to access the underlying `mpz_t` via the data() member function of `gmp_int`. +It's also possible to access the underlying `mpz_t` via the `data()` member function of `gmp_int`. [h5 Example:] @@ -232,8 +234,8 @@ The following backends provide real number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`mpf_float`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] -[[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][GMP and MPFR][Very fast and efficient backend, with it's own standard library implementation.][Dependency on GNU licenced GMP and MPFR libraries.]] -[[`cpp_float`][boost/multiprecision/cpp_float.hpp][10][None][Header only, all C++ implementation.][Approximately 2x slower than the MPFR or GMP libraries.]] +[[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][GMP and MPFR][Very fast and efficient backend, with its own standard library implementation.][Dependency on GNU licenced GMP and MPFR libraries.]] +[[`cpp_float`][boost/multiprecision/cpp_float.hpp][10][None][Header only, all C++ implementation. Boost licence.][Approximately 2x slower than the MPFR or GMP libraries.]] ] [h4 gmp_float] @@ -251,7 +253,7 @@ The following backends provide real number arithmetic: }} // namespaces -The `gmp_float` backend is used in conjunction with `mp_number`: It acts as a thin wrapper around the GMP `mpf_t` +The `gmp_float` backend is used in conjunction with `mp_number` : it acts as a thin wrapper around the GMP `mpf_t` to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. @@ -269,7 +271,7 @@ copy constructible and assignable from: * The GMP native types `mpf_t`, `mpz_t`, `mpq_t`. * The `mp_number` wrappers around those types: `mp_number >`, `mp_number`, `mp_number`. -It's also possible to access the underlying `mpf_t` via the data() member function of `gmp_float`. +It's also possible to access the underlying `mpf_t` via the `data()` member function of `gmp_float`. [h5 GMP example:] @@ -376,9 +378,9 @@ There are also non-member functions: mpz_int numerator(const mpq_rational&); mpz_int denominator(const mpq_rational&); -Which return the numerator and denominator of the number. +which return the numerator and denominator of the number. -It's also possible to access the underlying `mpq_t` via the data() member function of `mpq_rational`. +It's also possible to access the underlying `mpq_t` via the `data()` member function of `mpq_rational`. [h5 Example:] @@ -530,7 +532,7 @@ mp_number is an "unmentionable" expression template type. Binary operators, must have at least one argument that is of type `mp_number` or an expression template derived from `mp_number`. One argument may optionally be of arithmetic type. -Note that type `mp_number` (and all expression templates derived from it) may be used in a Boolian context. +Note that type `mp_number` (and all expression templates derived from it) may be used in a Boolean context. operator ``['convertible-to-bool-type]``()const; @@ -577,14 +579,14 @@ the default precision and the precision of `*this` respectively. Returns: -* A value less that 0 for *this < other -* A value greater that 0 for *this > other -* Zero for *this == other +* A value less that 0 for `*this < other` +* A value greater that 0 for `*this > other` +* Zero for `*this == other` Backend& backend(); const Backend& backend()const; -Returns the underlying backend instance used by *this. +Returns the underlying backend instance used by `*this`. [h4 swap] @@ -646,21 +648,23 @@ don't have native support for these functions. Please note however, that this d to be a compile time constant - this means for example that the GMP MPF Backend will not work with these functions when that type is used at variable precision. -Also note that with the exception of `abs` that these functions can only be used with floating point Backend types. +Also note that with the exception of `abs` that these functions can only be used with floating-point Backend types. -[h4 Boost.Math Interoperabilty Support] +[h4 Boost.Math Interoperability Support] namespace boost{ namespace math{ - int fpclassify (const ``['mp_number-or-expression-template-type]``&, int); - bool isfinite (const ``['mp_number-or-expression-template-type]``&, int); - bool isnan (const ``['mp_number-or-expression-template-type]``&, int); - bool isinf (const ``['mp_number-or-expression-template-type]``&, int); - bool isnormal (const ``['mp_number-or-expression-template-type]``&, int); + int fpclassify (const ``['mp_number-or-expression-template-type]``&, int); + bool isfinite (const ``['mp_number-or-expression-template-type]``&, int); + bool isnan (const ``['mp_number-or-expression-template-type]``&, int); + bool isinf (const ``['mp_number-or-expression-template-type]``&, int); + bool isnormal (const ``['mp_number-or-expression-template-type]``&, int); }} // namespaces -These functions behave exacts as their Boost.Math equivalents. Other Boost.Math functions and templates may also be +These floating-point classification functions behave exactly as their Boost.Math equivalents. + +Other Boost.Math functions and templates may also be specialized or overloaded to ensure interoperability. [h4 std::numeric_limits support] @@ -686,22 +690,22 @@ whose precision can vary at compile time (such as `mpf_float`). [template super[x]''''''[x]''''''] The requirements on the `Backend` template argument to `mp_number` are split up into -compulsary requirements, and optional requirements that are either to improve performance +compulsory requirements, and optional requirements that are either to improve performance or provide optional features. In the following tables, type B is the `Backend` template arument to `mp_number`, `b` is a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a variable of Arithmetic type, `s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, -`pa` is a variable of type pointer-to-arithmetc-type, `exp` is a variable of type `B::exp_type`, +`pa` is a variable of type pointer-to-arithmetic-type, `exp` is a variable of type `B::exp_type`, `pexp` is a variable of type `B::exp_type*`. -[table Compulsary Requirements on the Backend type. +[table Compulsory Requirements on the Backend type. [[Expression][Return Type][Comments]] [[`B::signed_types`][`mpl::list`][A list of signed integral types that can be assigned to type B. The types shall be listed in order of size, smallest first, and shall terminate in the type that is `std::intmax_t`.]] [[`B::unsigned_types`][`mpl::list`][A list of unsigned integral types that can be assigned to type B. The types shall be listed in order of size, smallest first, and shall terminate in the type that is `std::uintmax_t`.]] -[[`B::float_types`][`mpl::list`][A list of floating point types that can be assigned to type B.The types shall be +[[`B::float_types`][`mpl::list`][A list of floating-point types that can be assigned to type B.The types shall be listed in order of size, smallest first, and shall terminate in type `long double`.]] [[`B::exponent_type`][A signed integral type.][The type of the exponent of type B.]] [[`B()`][ ][Default constructor.]] @@ -710,7 +714,7 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia [[`b = a`][`B&`][Assignment from an Arithmetic type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`b = s`][`B&`][Assignment from a string.]] -[[`b.swap(b)`][`void`][Swaps the contents of it's arguments.]] +[[`b.swap(b)`][`void`][Swaps the contents of its arguments.]] [[`cb.str(ui, bb)`][`std::string`][Returns the string representation of `b` with `ui` digits and in scientific format if `bb` is `true`. If `ui` is zero, then returns as many digits as are required to reconstruct the original value.]] [[`b.negate()`][`void`][Negates `b`.]] @@ -734,11 +738,11 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia conversion to at least types `std::intmax_t`, `std::uintmax_t` and `long long`. Conversion to other arithmetic types can then be synthesised using other operations. Conversions to other types are entirely optional.]] -[[`eval_frexp(b, cb, pexp)`][`void`][Stores values in `b` and `*pexp` such that the value of `cb` is b * 2[super *pexp], only required when `B` is a floating point type.]] -[[`eval_ldexp(b, cb, exp)`][`void`][Stores a value in `b` that is cb * 2[super exp], only required when `B` is a floating point type.]] -[[`eval_floor(b, cb)`][`void`][Stores the floor of `cb` in `b`, only required when `B` is a floating point type.]] -[[`eval_ceil(b, cb)`][`void`][Stores the ceiling of `cb` in `b`, only required when `B` is a floating point type.]] -[[`eval_sqrt(b, cb)`][`void`][Stores the square root of `cb` in `b`, only required when `B` is a floating point type.]] +[[`eval_frexp(b, cb, pexp)`][`void`][Stores values in `b` and `*pexp` such that the value of `cb` is b * 2[super *pexp], only required when `B` is a floating-point type.]] +[[`eval_ldexp(b, cb, exp)`][`void`][Stores a value in `b` that is cb * 2[super exp], only required when `B` is a floating-point type.]] +[[`eval_floor(b, cb)`][`void`][Stores the floor of `cb` in `b`, only required when `B` is a floating-point type.]] +[[`eval_ceil(b, cb)`][`void`][Stores the ceiling of `cb` in `b`, only required when `B` is a floating-point type.]] +[[`eval_sqrt(b, cb)`][`void`][Stores the square root of `cb` in `b`, only required when `B` is a floating-point type.]] ] [table Optional Requirements on the Backend Type @@ -807,24 +811,24 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia [[`get_sign(cb)`][`int`][Returns a value < zero if `cb` is negative, a value > zero if `cb` is positive, and zero if `cb` is zero.]] [[`eval_abs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] [[`eval_fabs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] -[[`eval_fpclassify(cb)`][`int`][Returns one of the same values returned by `std::fpclassify`. Only required when `B` is an floating point type.]] -[[`eval_trunc(b, cb)`][`void`][Performs the equivalent operation to `std::trunc` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_round(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::round` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_exp(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_log(b, cb)`][`void`][Performs the equivalent operation to `std::log` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_log10(b, cb)`][`void`][Performs the equivalent operation to `std::log10` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_sin(b, cb)`][`void`][Performs the equivalent operation to `std::sin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_cos(b, cb)`][`void`][Performs the equivalent operation to `std::cos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_tan(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_asin(b, cb)`][`void`][Performs the equivalent operation to `std::asin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_acos(b, cb)`][`void`][Performs the equivalent operation to `std::acos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_atan(b, cb)`][`void`][Performs the equivalent operation to `std::atan` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_sinh(b, cb)`][`void`][Performs the equivalent operation to `std::sinh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_cosh(b, cb)`][`void`][Performs the equivalent operation to `std::cosh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_tanh(b, cb)`][`void`][Performs the equivalent operation to `std::tanh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_fmod(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::fmod` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_pow(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::pow` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating point type.]] -[[`eval_atan2(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::atan` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating point type.]] +[[`eval_fpclassify(cb)`][`int`][Returns one of the same values returned by `std::fpclassify`. Only required when `B` is an floating-point type.]] +[[`eval_trunc(b, cb)`][`void`][Performs the equivalent operation to `std::trunc` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_round(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::round` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_exp(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_log(b, cb)`][`void`][Performs the equivalent operation to `std::log` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_log10(b, cb)`][`void`][Performs the equivalent operation to `std::log10` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_sin(b, cb)`][`void`][Performs the equivalent operation to `std::sin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_cos(b, cb)`][`void`][Performs the equivalent operation to `std::cos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_tan(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_asin(b, cb)`][`void`][Performs the equivalent operation to `std::asin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_acos(b, cb)`][`void`][Performs the equivalent operation to `std::acos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_atan(b, cb)`][`void`][Performs the equivalent operation to `std::atan` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_sinh(b, cb)`][`void`][Performs the equivalent operation to `std::sinh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_cosh(b, cb)`][`void`][Performs the equivalent operation to `std::cosh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_tanh(b, cb)`][`void`][Performs the equivalent operation to `std::tanh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_fmod(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::fmod` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_pow(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::pow` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_atan2(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::atan` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] ] [endsect] From 050ae32c4438bbb00b0b4b2ab4aae00e552f94cb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 16 Nov 2011 09:40:05 +0000 Subject: [PATCH 065/256] Add initial libtommath support. Fix use of noexcept. Remove dead files. [SVN r75505] --- config/Jamfile.v2 | 5 +- config/has_e_float.cpp | 17 - config/has_gcc_visibility.cpp | 13 - config/has_long_double_support.cpp | 10 - config/has_mpfr_class.cpp | 14 - config/has_mpreal.cpp | 14 - config/has_ntl_rr.cpp | 12 - config/{has_gmpxx.cpp => has_tommath.cpp} | 4 +- .../multiprecision/arithmetic_backend.hpp | 22 +- .../concepts/mp_number_architypes.hpp | 22 +- .../multiprecision/detail/mp_number_base.hpp | 6 + include/boost/multiprecision/e_float.hpp | 80 ---- include/boost/multiprecision/gmp.hpp | 83 ++-- include/boost/multiprecision/mpfr.hpp | 42 +- include/boost/multiprecision/tommath.hpp | 411 ++++++++++++++++++ test/Jamfile.v2 | 29 ++ test/test_arithmetic.cpp | 24 +- test/test_numeric_limits.cpp | 9 +- 18 files changed, 564 insertions(+), 253 deletions(-) delete mode 100644 config/has_e_float.cpp delete mode 100644 config/has_gcc_visibility.cpp delete mode 100644 config/has_long_double_support.cpp delete mode 100644 config/has_mpfr_class.cpp delete mode 100644 config/has_mpreal.cpp delete mode 100644 config/has_ntl_rr.cpp rename config/{has_gmpxx.cpp => has_tommath.cpp} (78%) delete mode 100644 include/boost/multiprecision/e_float.hpp create mode 100644 include/boost/multiprecision/tommath.hpp diff --git a/config/Jamfile.v2 b/config/Jamfile.v2 index a307db12..91f9cbb3 100644 --- a/config/Jamfile.v2 +++ b/config/Jamfile.v2 @@ -8,12 +8,15 @@ import path ; local gmp_path = [ modules.peek : GMP_PATH ] ; local mpfr_path = [ modules.peek : MPFR_PATH ] ; +local tommath_path = [ modules.peek : TOMMATH_PATH ] ; obj has_gmp : has_gmp.cpp : $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; obj has_mpfr : has_mpfr.cpp : $(mpfr_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx $(gmp_path) ; +obj has_tommath : has_tommath.cpp : + $(tommath_path) ; explicit has_gmp ; explicit has_mpfr ; - +explicit has_tommath ; diff --git a/config/has_e_float.cpp b/config/has_e_float.cpp deleted file mode 100644 index 8cadc5c6..00000000 --- a/config/has_e_float.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright John Maddock 2011. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -#ifdef _MSC_VER -# pragma warning (disable : 4100) // unreferenced formal parameter -#endif - -#define E_FLOAT_TYPE_EFX - -#include -#include -#include - - diff --git a/config/has_gcc_visibility.cpp b/config/has_gcc_visibility.cpp deleted file mode 100644 index 6c7d6f91..00000000 --- a/config/has_gcc_visibility.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright John Maddock 20010. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef __GNUC__ -# error "This is a GCC specific test case". -#endif - -int main() -{ - return 0; -} diff --git a/config/has_long_double_support.cpp b/config/has_long_double_support.cpp deleted file mode 100644 index d314cf38..00000000 --- a/config/has_long_double_support.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright John Maddock 2008. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#error "long double support is not supported by Boost.Math on this Plaform: the long double version of the TR1 library will not be built." -#endif diff --git a/config/has_mpfr_class.cpp b/config/has_mpfr_class.cpp deleted file mode 100644 index 8eb3c7b2..00000000 --- a/config/has_mpfr_class.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright John Maddock 2008. -// Copyright Paul A. Britow 2009 -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifdef _MSC_VER -# pragma warning (disable : 4127) // conditional expression is constant -# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) -# pragma warning (disable : 4512) // assignment operator could not be generated -#endif - -#include - diff --git a/config/has_mpreal.cpp b/config/has_mpreal.cpp deleted file mode 100644 index 8ee8897d..00000000 --- a/config/has_mpreal.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright John Maddock 2008. -// Copyright Paul A. Britow 2009 -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifdef _MSC_VER -# pragma warning (disable : 4127) // conditional expression is constant -# pragma warning (disable : 4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) -# pragma warning (disable : 4512) // assignment operator could not be generated -#endif - -#include - diff --git a/config/has_ntl_rr.cpp b/config/has_ntl_rr.cpp deleted file mode 100644 index f3844217..00000000 --- a/config/has_ntl_rr.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright John Maddock 2008. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -#ifdef _MSC_VER -# pragma warning (disable : 4100) // unreferenced formal parameter -#endif - -#include - diff --git a/config/has_gmpxx.cpp b/config/has_tommath.cpp similarity index 78% rename from config/has_gmpxx.cpp rename to config/has_tommath.cpp index edf62d8c..8d230043 100644 --- a/config/has_gmpxx.cpp +++ b/config/has_tommath.cpp @@ -1,7 +1,7 @@ -// Copyright John Maddock 2008. +// Copyright John Maddock 2011. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#include +#include diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index 25f173ad..88098dab 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -119,7 +119,7 @@ inline void divide(arithmetic_backend& result, const arithmetic_back namespace std{ #ifdef BOOST_NO_NOEXCEPT -# define noexcept +# define BOOST_MP_NOEXCEPT #endif template @@ -128,19 +128,19 @@ class numeric_limits base_type; typedef boost::multiprecision::mp_number > number_type; public: - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } }; #ifdef BOOST_NO_NOEXCEPT -# undef noexcept +# undef BOOST_MP_NOEXCEPT #endif } diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index a51f93b7..18a4b85c 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -194,7 +194,7 @@ typedef boost::multiprecision::mp_number mp_n namespace std{ #ifdef BOOST_NO_NOEXCEPT -# define noexcept +# define BOOST_MP_NOEXCEPT #endif template <> @@ -203,19 +203,19 @@ class numeric_limits typedef std::numeric_limits base_type; typedef boost::multiprecision::concepts::mp_number_float_architype number_type; public: - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return base_type::denorm_min(); } + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } }; #ifdef BOOST_NO_NOEXCEPT -# undef noexcept +# undef BOOST_MP_NOEXCEPT #endif } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 6a7f0ff1..ca9cc5e9 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -10,6 +10,12 @@ #include #include +#ifdef BOOST_NO_NOEXCEPT +#define BOOST_MP_NOEXCEPT +#else +#define BOOST_MP_NOEXCEPT noexcept +#endif + namespace boost{ namespace multiprecision{ template diff --git a/include/boost/multiprecision/e_float.hpp b/include/boost/multiprecision/e_float.hpp deleted file mode 100644 index 68931334..00000000 --- a/include/boost/multiprecision/e_float.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ - -#ifndef BOOST_MATH_EFX_BACKEND_HPP -#define BOOST_MATH_EFX_BACKEND_HPP - -#include -#include -#include -#include -#include - -namespace boost{ -namespace multiprecision{ - -typedef mp_number > e_float; - -template<> -inline void arithmetic_backend::negate() -{ - m_value.negate(); -} -template<> -inline std::string arithmetic_backend::str(unsigned digits, bool scientific)const -{ - std::fstream os; - os << std::setprecision(digits ? digits : efx::e_float::ef_digits + 5); - if(scientific) - os << std::scientific; - std::string result; - this->data().wr_string(result, os); - return result; -} - -inline void eval_abs(arithmetic_backend& result, const arithmetic_backend& arg) -{ - result.data() = ef::fabs(arg.data()); -} - -inline void eval_fabs(arithmetic_backend& result, const arithmetic_backend& arg) -{ - result.data() = ef::fabs(arg.data()); -} - -inline bool is_zero(const arithmetic_backend& val) -{ - return val.data().iszero(); -} -inline int get_sign(const arithmetic_backend& val) -{ - return val.data().isneg() ? -1 : val.data().iszero() ? 0 : 1; -} - -inline void convert_to(boost::uintmax_t* result, const arithmetic_backend& val) -{ - *result = val.data().extract_unsigned_long_long(); -} -inline void convert_to(boost::intmax_t* result, const arithmetic_backend& val) -{ - *result = val.data().extract_signed_long_long(); -} -inline void convert_to(double* result, const arithmetic_backend& val) -{ - *result = val.data().extract_double(); -} -inline void convert_to(long double* result, const arithmetic_backend& val) -{ - *result = val.data().extract_long_double(); -} -inline int eval_fpclassify(const arithmetic_backend& val) -{ - return val.data().isinf() ? FP_INFINITE : val.data().isnan() ? FP_NAN : val.data().iszero() ? FP_ZERO : FP_NORMAL; -} - - -}} // namespaces - -#endif diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index f5260057..80153bed 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1656,7 +1656,7 @@ typedef mp_number mpq_rational; namespace std{ #ifdef BOOST_NO_NOEXCEPT -# define noexcept +# define BOOST_MP_NOEXCEPT #endif // @@ -1668,7 +1668,7 @@ class numeric_limits > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1680,7 +1680,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1692,7 +1692,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } @@ -1704,7 +1704,7 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1717,7 +1717,7 @@ public: return value.second; } // What value should this be???? - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1739,10 +1739,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1774,9 +1774,9 @@ class numeric_limits > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; BOOST_STATIC_CONSTEXPR int max_digits10 = 0; @@ -1784,8 +1784,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 0; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1795,10 +1795,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1817,25 +1817,24 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return (min)(); } - // Digits are unbounded, use zero for now: - BOOST_STATIC_CONSTEXPR int digits = 0; - BOOST_STATIC_CONSTEXPR int digits10 = 0; - BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR int digits = INT_MAX; + BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; BOOST_STATIC_CONSTEXPR bool is_signed = true; BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1845,10 +1844,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1867,15 +1866,15 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return (min)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } // Digits are unbounded, use zero for now: BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; @@ -1884,8 +1883,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1895,10 +1894,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1908,7 +1907,7 @@ public: }; #ifdef BOOST_NO_NOEXCEPT -# undef noexcept +# undef BOOST_MP_NOEXCEPT #endif } // namespace std diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index e37e5082..08ef8a92 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -967,7 +967,7 @@ struct lanczos > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -991,7 +991,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1003,7 +1003,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } @@ -1015,7 +1015,7 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1028,7 +1028,7 @@ public: return value.second; } // What value should this be???? - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1050,7 +1050,7 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1063,7 +1063,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1076,11 +1076,11 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1114,9 +1114,9 @@ class numeric_limits > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; - BOOST_STATIC_CONSTEXPR number_type (min)() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type (max)() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type lowest() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; BOOST_STATIC_CONSTEXPR int max_digits10 = 0; @@ -1124,8 +1124,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 0; - BOOST_STATIC_CONSTEXPR number_type epsilon() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type round_error() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1135,10 +1135,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() noexcept { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() noexcept { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1147,8 +1147,8 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -#ifdef noexcept -#undef noexcept +#ifdef BOOST_MP_NOEXCEPT +#undef BOOST_MP_NOEXCEPT #endif } // namespace std diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp new file mode 100644 index 00000000..90448520 --- /dev/null +++ b/include/boost/multiprecision/tommath.hpp @@ -0,0 +1,411 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_MP_TOMMATH_BACKEND_HPP +#define BOOST_MATH_MP_TOMMATH_BACKEND_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace multiprecision{ + +struct tommath_int +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + + tommath_int() + { + mp_init(&m_data); + } + tommath_int(const tommath_int& o) + { + mp_init_copy(&m_data, const_cast<::mp_int*>(&o.m_data)); + } + tommath_int& operator = (const tommath_int& o) + { + mp_copy(const_cast<::mp_int*>(&o.m_data), &m_data); + return *this; + } + tommath_int& operator = (boost::uintmax_t i) + { + boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + ::mp_int t; + mp_init(&t); + mp_zero(&m_data); + while(i) + { + mp_set_int(&t, static_cast(i & mask)); + if(shift) + mp_mul_2d(&t, shift, &t); + mp_add(&m_data, &t, &m_data); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + mp_clear(&t); + return *this; + } + tommath_int& operator = (boost::intmax_t i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mp_neg(&m_data, &m_data); + return *this; + } + tommath_int& operator = (unsigned long i) + { + mp_set_int(&m_data, i); + return *this; + } + tommath_int& operator = (long i) + { + bool neg = i < 0; + *this = static_cast(std::abs(i)); + if(neg) + mp_neg(&m_data, &m_data); + return *this; + } + tommath_int& operator = (long double a) + { + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + mp_set_int(&m_data, 0); + return *this; + } + + if (a == 1) { + mp_set_int(&m_data, 1); + return *this; + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + mp_init_set_int(&m_data, 0u); + ::mp_int t; + mp_init(&t); + + f = frexp(a, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + mp_mul_2d(&m_data, shift, &m_data); + if(term > 0) + { + mp_set_int(&t, static_cast(term)); + mp_add(&m_data, &t, &m_data); + } + else + { + mp_set_int(&t, static_cast(-term)); + mp_sub(&m_data, &t, &m_data); + } + f -= term; + } + if(e > 0) + mp_mul_2d(&m_data, e, &m_data); + else if(e < 0) + { + tommath_int t2; + mp_div_2d(&m_data, -e, &m_data, &t2.data()); + } + return *this; + } + tommath_int& operator = (const char* s) + { + mp_read_radix(&m_data, s, 10); + return *this; + } + std::string str(unsigned /*digits*/, bool /*scientific*/)const + { + int s; + mp_radix_size(const_cast<::mp_int*>(&m_data), 10, &s); + boost::scoped_array a(new char[s+1]); + mp_toradix_n(const_cast<::mp_int*>(&m_data), a.get(), 10, s+1); + return a.get(); + } + ~tommath_int() + { + mp_clear(&m_data); + } + void negate() + { + mp_neg(&m_data, &m_data); + } + int compare(const tommath_int& o)const + { + return mp_cmp(const_cast<::mp_int*>(&m_data), const_cast<::mp_int*>(&o.m_data)); + } + template + int compare(V v)const + { + tommath_int d; + tommath_int t(*this); + mp_shrink(&t.data()); + d = v; + return t.compare(d); + } + mp_int& data() { return m_data; } + const mp_int& data()const { return m_data; } + void swap(tommath_int& o) + { + mp_exch(&m_data, &o.data()); + } +protected: + mp_int m_data; +}; + +int get_sign(const tommath_int& val); + +inline void add(tommath_int& t, const tommath_int& o) +{ + mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); +} +inline void subtract(tommath_int& t, const tommath_int& o) +{ + mp_sub(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); +} +inline void multiply(tommath_int& t, const tommath_int& o) +{ + mp_mul(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); +} +inline void divide(tommath_int& t, const tommath_int& o) +{ + tommath_int temp; + mp_div(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data(), &temp.data()); +} +inline void modulus(tommath_int& t, const tommath_int& o) +{ + bool neg = get_sign(t) < 0; + bool neg2 = get_sign(o) < 0; + mp_mod(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + if(neg != neg2) + { + t.negate(); + mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + t.negate(); + } +} +template +inline void left_shift(tommath_int& t, UI i) +{ + mp_mul_2d(&t.data(), static_cast(i), &t.data()); +} +template +inline void right_shift(tommath_int& t, UI i) +{ + tommath_int d; + mp_div_2d(&t.data(), static_cast(i), &t.data(), &d.data()); +} +template +inline void left_shift(tommath_int& t, const tommath_int& v, UI i) +{ + mp_mul_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data()); +} +template +inline void right_shift(tommath_int& t, const tommath_int& v, UI i) +{ + tommath_int d; + mp_div_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data(), &d.data()); +} + +inline void bitwise_and(tommath_int& result, const tommath_int& v) +{ + mp_and(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data()); +} + +inline void bitwise_or(tommath_int& result, const tommath_int& v) +{ + mp_or(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data()); +} + +inline void bitwise_xor(tommath_int& result, const tommath_int& v) +{ + mp_xor(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data()); +} + +inline void add(tommath_int& t, const tommath_int& p, const tommath_int& o) +{ + mp_add(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); +} +inline void subtract(tommath_int& t, const tommath_int& p, const tommath_int& o) +{ + mp_sub(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); +} +inline void multiply(tommath_int& t, const tommath_int& p, const tommath_int& o) +{ + mp_mul(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); +} +inline void divide(tommath_int& t, const tommath_int& p, const tommath_int& o) +{ + tommath_int d; + mp_div(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data(), &d.data()); +} +inline void modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) +{ + bool neg = get_sign(p) < 0; + bool neg2 = get_sign(o) < 0; + mp_mod(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); + if(neg != neg2) + { + t.negate(); + mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + t.negate(); + } +} + +inline void bitwise_and(tommath_int& result, const tommath_int& u, const tommath_int& v) +{ + mp_and(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data()); +} + +inline void bitwise_or(tommath_int& result, const tommath_int& u, const tommath_int& v) +{ + mp_or(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data()); +} + +inline void bitwise_xor(tommath_int& result, const tommath_int& u, const tommath_int& v) +{ + mp_xor(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data()); +} + +inline void complement(tommath_int& result, const tommath_int& u) +{ + result = u; + for(int i = 0; i < result.data().used; ++i) + { + result.data().dp[i] = MP_MASK & ~(result.data().dp[i]); + } + // + // We now need to pad out the left of the value with 1's to round up to a whole number of + // CHAR_BIT * sizeof(mp_digit) units. Otherwise we'll end up with a very strange number of + // bits set! + // + unsigned shift = result.data().used * DIGIT_BIT; // How many bits we're actually using + // How many bits we actually need, reduced by one to account for a mythical sign bit: + unsigned padding = result.data().used * std::numeric_limits::digits - shift - 1; + while(padding >= std::numeric_limits::digits) + padding -= std::numeric_limits::digits; + + // Create a mask providing the extra bits we need and add to result: + tommath_int mask; + mask = static_cast((1u << padding) - 1); + left_shift(mask, shift); + add(result, mask); +} + +inline bool is_zero(const tommath_int& val) +{ + return mp_iszero(&val.data()); +} +inline int get_sign(const tommath_int& val) +{ + return mp_iszero(&val.data()) ? 0 : SIGN(&val.data()) ? -1 : 1; +} +template +inline void convert_to(A* result, const tommath_int& val) +{ + *result = boost::lexical_cast(val.str(0, false)); +} +inline void convert_to(char* result, const tommath_int& val) +{ + *result = static_cast(boost::lexical_cast(val.str(0, false))); +} +inline void convert_to(unsigned char* result, const tommath_int& val) +{ + *result = static_cast(boost::lexical_cast(val.str(0, false))); +} +inline void convert_to(signed char* result, const tommath_int& val) +{ + *result = static_cast(boost::lexical_cast(val.str(0, false))); +} +inline void eval_abs(tommath_int& result, const tommath_int& val) +{ + mp_abs(const_cast<::mp_int*>(&val.data()), &result.data()); +} + + +template<> +struct number_category : public mpl::int_{}; + +typedef mp_number mp_int; + +}} // namespaces + +namespace std{ + +template<> +class numeric_limits +{ + typedef boost::multiprecision::mp_int number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR int digits = INT_MAX; + BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +} + +#endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3bd9ac01..a076a565 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -9,22 +9,35 @@ import path ; local ntl-path = [ modules.peek : NTL_PATH ] ; local gmp_path = [ modules.peek : GMP_PATH ] ; local mpfr_path = [ modules.peek : MPFR_PATH ] ; +local tommath_path = [ modules.peek : TOMMATH_PATH ] ; project : requirements $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx $(mpfr_path) + $(tommath_path) ../../.. $(gmp_path) $(mpfr_path) $(mpfr_path)/build.vc10/lib/Win32/Debug + $(tommath_path) msvc:static ; lib gmp ; lib mpfr ; +if $(tommath_path) +{ + TOMMATH = [ GLOB $(tommath_path) : *.c ] ; +} +else +{ + lib tommath ; + TOMMATH = tommath ; +} + run test_arithmetic.cpp : # command line : # input files @@ -87,6 +100,14 @@ run test_arithmetic.cpp mpfr gmp [ check-target-builds ../config//has_mpfr : : no ] : test_arithmetic_mpfr_50 ; +run test_arithmetic.cpp $(TOMMATH) + : # command line + : # input files + : # requirements + TEST_TOMMATH + [ check-target-builds ../config//has_tommath : : no ] + : test_arithmetic_tommath ; + run test_numeric_limits.cpp : # command line : # input files @@ -150,6 +171,14 @@ run test_numeric_limits.cpp [ check-target-builds ../config//has_mpfr : : no ] : test_numeric_limits_cpp_float ; +run test_numeric_limits.cpp $(TOMMATH) + : # command line + : # input files + : # requirements + TEST_TOMMATH + [ check-target-builds ../config//has_tommath : : no ] + : test_numeric_limits_tommath ; + run mp_number_concept_check.cpp mpfr : # command line : # input files diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index db49a85b..a39dc351 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -6,7 +6,7 @@ #include #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_TOMMATH) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -15,6 +15,7 @@ # define TEST_MPFR_50 # define TEST_CPP_FLOAT # define TEST_MPQ +# define TEST_TOMMATH #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -37,6 +38,9 @@ #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include #endif +#ifdef TEST_TOMMATH +#include +#endif #define BOOST_TEST_THROW(x, EX)\ try { x; BOOST_ERROR("Expected exception not thrown"); } \ @@ -70,6 +74,14 @@ template bool isfloat(T){ return false; } << " tolerance = " << tol << std::endl;\ } +template +struct is_twos_complement_integer : public boost::mpl::true_ {}; + +#ifdef TEST_TOMMATH +template <> +struct is_twos_complement_integer : public boost::mpl::false_ {}; +#endif + template void test_integer_ops(const T&){} @@ -180,6 +192,7 @@ void test_integer_ops(const boost::mpl::int_::value ? ~0 : (std::numeric_limits::max)(); a = i; b = j; c = a; @@ -248,11 +261,11 @@ void test_integer_ops(const boost::mpl::int_(); +#endif +#ifdef TEST_TOMMATH + test(); #endif return boost::report_errors(); } diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index ce87c5d6..ea18665c 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -5,7 +5,7 @@ #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_TOMMATH) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -14,6 +14,7 @@ # define TEST_MPFR_50 # define TEST_CPP_FLOAT # define TEST_MPQ +# define TEST_TOMMATH #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -36,6 +37,9 @@ #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include #endif +#ifdef TEST_TOMMATH +#include +#endif #define PRINT(x)\ std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; @@ -168,6 +172,9 @@ int main() #endif #ifdef TEST_MPFR_50 test(); +#endif +#ifdef TEST_TOMMATH + test(); #endif return boost::report_errors(); } From b653174c77628b25cc37506b94016bbcabee6f89 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 16 Nov 2011 17:36:40 +0000 Subject: [PATCH 066/256] Add enhanced testing support. Remove throw statements for BOOST_THROW_EXCEPTION. Remove throw() qualifiers: they're a dis-optimization. [SVN r75511] --- include/boost/multiprecision/cpp_float.hpp | 22 +- .../multiprecision/detail/functions/pow.hpp | 4 +- .../multiprecision/detail/functions/trig.hpp | 4 +- test/Jamfile.v2 | 1 + test/test.hpp | 193 ++++++++++++++++++ test/test_fpclassify.cpp | 9 +- test/test_round.cpp | 7 +- test/test_test.cpp | 85 ++++++++ 8 files changed, 296 insertions(+), 29 deletions(-) create mode 100644 test/test_test.cpp diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index ab5b5432..28db0a82 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -2625,7 +2625,7 @@ inline void eval_frexp(cpp_float& result, const cpp_float& x long long t = result.order(); if(std::abs(t) > (std::numeric_limits::max)() / 3) - throw std::runtime_error("Exponent is too large to be represented as a power of 2."); + BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is too large to be represented as a power of 2.")); t *= 3; result *= cpp_float::pow2(-t); @@ -2651,7 +2651,7 @@ inline void eval_frexp(cpp_float& result, const cpp_float& x long long t; eval_frexp(result, x, &t); if(t > (std::numeric_limits::max)()) - throw std::runtime_error("Exponent is outside the range of an int"); + BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is outside the range of an int")); *e = static_cast(t); } @@ -2702,15 +2702,15 @@ namespace std static const bool traps = false; static const bool tinyness_before = false; - static const boost::multiprecision::mp_number > (min) (void) throw() { return (boost::multiprecision::cpp_float::min)(); } - static const boost::multiprecision::mp_number > (max) (void) throw() { return (boost::multiprecision::cpp_float::max)(); } - static const boost::multiprecision::mp_number > lowest (void) throw() { return boost::multiprecision::cpp_float::zero(); } - static const boost::multiprecision::mp_number > epsilon (void) throw() { return boost::multiprecision::cpp_float::eps(); } - static const boost::multiprecision::mp_number > round_error (void) throw() { return 0.5L; } - static const boost::multiprecision::mp_number > infinity (void) throw() { return boost::multiprecision::cpp_float::inf(); } - static const boost::multiprecision::mp_number > quiet_NaN (void) throw() { return boost::multiprecision::cpp_float::nan(); } - static const boost::multiprecision::mp_number > signaling_NaN(void) throw() { return boost::multiprecision::cpp_float::zero(); } - static const boost::multiprecision::mp_number > denorm_min (void) throw() { return boost::multiprecision::cpp_float::zero(); } + static const boost::multiprecision::mp_number > (min) (void) { return (boost::multiprecision::cpp_float::min)(); } + static const boost::multiprecision::mp_number > (max) (void) { return (boost::multiprecision::cpp_float::max)(); } + static const boost::multiprecision::mp_number > lowest (void) { return boost::multiprecision::cpp_float::zero(); } + static const boost::multiprecision::mp_number > epsilon (void) { return boost::multiprecision::cpp_float::eps(); } + static const boost::multiprecision::mp_number > round_error (void) { return 0.5L; } + static const boost::multiprecision::mp_number > infinity (void) { return boost::multiprecision::cpp_float::inf(); } + static const boost::multiprecision::mp_number > quiet_NaN (void) { return boost::multiprecision::cpp_float::nan(); } + static const boost::multiprecision::mp_number > signaling_NaN(void) { return boost::multiprecision::cpp_float::zero(); } + static const boost::multiprecision::mp_number > denorm_min (void) { return boost::multiprecision::cpp_float::zero(); } }; } diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index f4e98eaf..323325c2 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -129,7 +129,7 @@ void hyp0F0(T& H0F0, const T& x) x_pow_n_div_n_fact.negate(); } if(n >= 300) - throw std::runtime_error("H0F0 failed to converge"); + BOOST_THROW_EXCEPTION(std::runtime_error("H0F0 failed to converge")); } template @@ -178,7 +178,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) break; } if(n >= std::numeric_limits >::digits + 10) - throw std::runtime_error("H1F0 failed to converge"); + BOOST_THROW_EXCEPTION(std::runtime_error("H1F0 failed to converge")); } template diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index d6119eaf..930dadcb 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -61,7 +61,7 @@ void hyp0F1(T& result, const T& b, const T& x) } if(n >= 300) - throw std::runtime_error("H0F1 Failed to Converge"); + BOOST_THROW_EXCEPTION(std::runtime_error("H0F1 Failed to Converge")); } @@ -407,7 +407,7 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) break; } if(n > 300) - throw std::runtime_error("H2F1 failed to converge."); + BOOST_THROW_EXCEPTION(std::runtime_error("H2F1 failed to converge.")); } template diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a076a565..975e7a0e 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -583,3 +583,4 @@ run test_fpclassify.cpp : test_fpclassify_cpp_float ; +run test_test.cpp ; \ No newline at end of file diff --git a/test/test.hpp b/test/test.hpp index 88836794..7999c896 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -5,6 +5,10 @@ #include #include +#include +#include +#include + template T relative_error(T a, T b) { @@ -41,4 +45,193 @@ T relative_error(T a, T b) return (std::max)(fabs((a-b)/a), fabs((a-b)/b)) / std::numeric_limits::epsilon(); } +enum +{ + warn_on_fail, + error_on_fail, + abort_on_fail +}; + +template +inline T epsilon_of(const T&) +{ + BOOST_STATIC_ASSERT(std::numeric_limits::is_specialized); + return std::numeric_limits::epsilon(); +} + +template +inline int digits_of(const T&) +{ + return std::numeric_limits::is_specialized ? std::numeric_limits::digits10 + 2 : std::numeric_limits::digits10 + 2; +} + +inline std::ostream& report_where(const char* file, int line, const char* function) +{ + if(function) + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "In function: "<< function << std::endl; + BOOST_LIGHTWEIGHT_TEST_OSTREAM << file << ":" << line; + return BOOST_LIGHTWEIGHT_TEST_OSTREAM; +} + +#define BOOST_MP_REPORT_WHERE report_where(__FILE__, __LINE__, BOOST_CURRENT_FUNCTION) + +inline void report_severity(int severity) +{ + if(severity == error_on_fail) + ++boost::detail::test_errors(); + else if(severity == abort_on_fail) + { + ++boost::detail::test_errors(); + abort(); + } +} + +#define BOOST_MP_REPORT_SEVERITY(severity) report_severity(severity) + +template +void report_unexpected_exception(const E& e, int severity, const char* file, int line, const char* function) +{ + report_where(file, line, function) << " Unexpected exception of type " << typeid(e).name() << std::endl; + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "Errot message was: " << e.what() << std::endl; + BOOST_MP_REPORT_SEVERITY(severity); +} + +#define BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) catch(const std::exception& e) { report_unexpected_exception(e, severity, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); } + + +#define BOOST_CHECK_IMP(x, severity)\ + try{ if(x){}else{\ + BOOST_MP_REPORT_WHERE << " Failed predicate: " << BOOST_STRINGIZE(x) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_CHECK(x) BOOST_CHECK_IMP(x, error_on_fail) +#define BOOST_WARN(x) BOOST_CHECK_IMP(x, warn_on_fail) +#define BOOST_REQUIRE(x) BOOST_CHECK_IMP(x, abort_on_fail) + +#define BOOST_CLOSE_IMP(x, y, tol, severity)\ + try{ if(relative_error(x, y) > tol){\ + BOOST_MP_REPORT_WHERE << " Failed check for closeness: \n" \ + << std::setprecision(digits_of(x)) << std::scientific\ + << "Value of LHS was: " << x << "\n"\ + << "Value of RHS was: " << y << "\n"\ + << std::setprecision(3)\ + << "Relative error was: " << relative_error(x, y) << "eps\n"\ + << "Tolerance was: " << tol << "eps" << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_EQUAL_IMP(x, y, severity)\ + try{ if(x != y){\ + BOOST_MP_REPORT_WHERE << " Failed check for equality: \n" \ + << std::setprecision(digits_of(x)) << std::scientific\ + << "Value of LHS was: " << x << "\n"\ + << "Value of RHS was: " << y << "\n"\ + << std::setprecision(3) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_NE_IMP(x, y, severity)\ + try{ if(!(x != y)){\ + BOOST_MP_REPORT_WHERE << " Failed check for non-equality: \n" \ + << std::setprecision(digits_of(x)) << std::scientific\ + << "Value of LHS was: " << x << "\n"\ + << "Value of RHS was: " << y << "\n"\ + << std::setprecision(3) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_LT_IMP(x, y, severity)\ + try{ if(!(x < y)){\ + BOOST_MP_REPORT_WHERE << " Failed check for less than: \n" \ + << std::setprecision(digits_of(x)) << std::scientific\ + << "Value of LHS was: " << x << "\n"\ + << "Value of RHS was: " << y << "\n"\ + << std::setprecision(3) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_GT_IMP(x, y, severity)\ + try{ if(!(x > y)){\ + BOOST_MP_REPORT_WHERE << " Failed check for greater than: \n" \ + << std::setprecision(digits_of(x)) << std::scientific\ + << "Value of LHS was: " << x << "\n"\ + << "Value of RHS was: " << y << "\n"\ + << std::setprecision(3) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_LE_IMP(x, y, severity)\ + try{ if(!(x <= y)){\ + BOOST_MP_REPORT_WHERE << " Failed check for less-than-equal-to: \n" \ + << std::setprecision(digits_of(x)) << std::scientific\ + << "Value of LHS was: " << x << "\n"\ + << "Value of RHS was: " << y << "\n"\ + << std::setprecision(3) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_GE_IMP(x, y, severity)\ + try{ if(!(x >= y)){\ + BOOST_MP_REPORT_WHERE << " Failed check for greater-than-equal-to \n" \ + << std::setprecision(digits_of(x)) << std::scientific\ + << "Value of LHS was: " << x << "\n"\ + << "Value of RHS was: " << y << "\n"\ + << std::setprecision(3) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + }BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_MT_CHECK_THROW_IMP(x, E, severity)\ + try{ \ + x;\ + BOOST_MP_REPORT_WHERE << " Expected exception not thrown in expression " << BOOST_STRINGIZE(x) << std::endl;\ + BOOST_MP_REPORT_SEVERITY(severity);\ + }\ + catch(const E&){}\ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_CHECK_CLOSE(x, y, tol) BOOST_CLOSE_IMP(x, y, ((tol / (100 * epsilon_of(x)))), error_on_fail) +#define BOOST_WARN_CLOSE(x, y, tol) BOOST_CLOSE_IMP(x, y, (tol / (100 * epsilon_of(x))), warn_on_fail) +#define BOOST_REQUIRE_CLOSE(x, y, tol) BOOST_CLOSE_IMP(x, y, (tol / (100 * epsilon_of(x))), abort_on_fail) + +#define BOOST_CHECK_CLOSE_FRACTION(x, y, tol) BOOST_CLOSE_IMP(x, y, ((tol / (epsilon_of(x)))), error_on_fail) +#define BOOST_WARN_CLOSE_FRACTION(x, y, tol) BOOST_CLOSE_IMP(x, y, (tol / (epsilon_of(x))), warn_on_fail) +#define BOOST_REQUIRE_CLOSE_FRACTION(x, y, tol) BOOST_CLOSE_IMP(x, y, (tol / (epsilon_of(x))), abort_on_fail) + +#define BOOST_CHECK_EQUAL(x, y) BOOST_EQUAL_IMP(x, y, error_on_fail) +#define BOOST_WARN_EQUAL(x, y) BOOST_EQUAL_IMP(x, y, warn_on_fail) +#define BOOST_REQUIRE_EQUAL(x, y) BOOST_EQUAL_IMP(x, y, abort_on_fail) + +#define BOOST_CHECK_NE(x, y) BOOST_NE_IMP(x, y, error_on_fail) +#define BOOST_WARN_NE(x, y) BOOST_NE_IMP(x, y, warn_on_fail) +#define BOOST_REQUIRE_NE(x, y) BOOST_NE_IMP(x, y, abort_on_fail) + +#define BOOST_CHECK_LT(x, y) BOOST_LT_IMP(x, y, error_on_fail) +#define BOOST_WARN_LT(x, y) BOOST_LT_IMP(x, y, warn_on_fail) +#define BOOST_REQUIRE_LT(x, y) BOOST_LT_IMP(x, y, abort_on_fail) + +#define BOOST_CHECK_GT(x, y) BOOST_GT_IMP(x, y, error_on_fail) +#define BOOST_WARN_GT(x, y) BOOST_GT_IMP(x, y, warn_on_fail) +#define BOOST_REQUIRE_GT(x, y) BOOST_GT_IMP(x, y, abort_on_fail) + +#define BOOST_CHECK_LE(x, y) BOOST_LE_IMP(x, y, error_on_fail) +#define BOOST_WARN_LE(x, y) BOOST_LE_IMP(x, y, warn_on_fail) +#define BOOST_REQUIRE_LE(x, y) BOOST_LE_IMP(x, y, abort_on_fail) + +#define BOOST_CHECK_GE(x, y) BOOST_GE_IMP(x, y, error_on_fail) +#define BOOST_WARN_GE(x, y) BOOST_GE_IMP(x, y, warn_on_fail) +#define BOOST_REQUIRE_GE(x, y) BOOST_GE_IMP(x, y, abort_on_fail) + +#define BOOST_CHECK_THROW(x, E) BOOST_MT_CHECK_THROW_IMP(x, E, error_on_fail) +#define BOOST_WARN_THROW(x, E) BOOST_MT_CHECK_THROW_IMP(x, E, warn_on_fail) +#define BOOST_REQUIRE_THROW(x, E) BOOST_MT_CHECK_THROW_IMP(x, E, abort_on_fail) + #endif diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp index 374382a8..e3e28825 100644 --- a/test/test_fpclassify.cpp +++ b/test/test_fpclassify.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include "test.hpp" #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 @@ -42,13 +42,6 @@ #pragma warning(disable: 4127) // conditional expression is constant #endif -#define BOOST_CHECK_EQUAL(x, y)\ - if(x != y)\ - {\ - BOOST_ERROR("Values were not equal.");\ - BOOST_LIGHTWEIGHT_TEST_OSTREAM << x << " != " << y << std::endl;\ - } - const char* method_name(const boost::math::detail::native_tag&) { return "Native"; diff --git a/test/test_round.cpp b/test/test_round.cpp index 6e56437f..4be856b1 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -9,12 +9,7 @@ #include #include #include - -#define BOOST_CHECK_THROW(x, EX)\ - try { x; BOOST_ERROR("Expected exception not thrown"); } \ - catch(const EX&){}\ - catch(...){ BOOST_ERROR("Incorrect exception type thrown"); } - +#include "test.hpp" #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) # define TEST_MPF_50 diff --git a/test/test_test.cpp b/test/test_test.cpp new file mode 100644 index 00000000..3d0b207d --- /dev/null +++ b/test/test_test.cpp @@ -0,0 +1,85 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "test.hpp" +#include + +void proc_that_throws() +{ + throw std::runtime_error(""); +} + +int main() +{ + boost::multiprecision::cpp_float_50 a1(1), a2(1), b(3), c(-2); + + BOOST_WARN(a1); + BOOST_WARN(a1 == b); + BOOST_CHECK(a1); + BOOST_CHECK(a1 == b); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + boost::multiprecision::cpp_float_50 a_tol = a1 + a1 * 100 * std::numeric_limits::epsilon(); + boost::multiprecision::cpp_float_50 tol = 100 * std::numeric_limits::epsilon(); + + BOOST_CHECK_CLOSE(a1, a_tol, tol * 102); // Passes + BOOST_WARN_CLOSE(a1, a_tol, tol * 98); // fails + BOOST_CHECK_CLOSE(a1, a_tol, tol * 98); // fails + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_CLOSE_FRACTION(a1, a_tol, tol * 1.02); // Passes + BOOST_WARN_CLOSE_FRACTION(a1, a_tol, tol * 0.98); // fails + BOOST_CHECK_CLOSE_FRACTION(a1, a_tol, tol * 0.98); // fails + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_EQUAL(a1, a2); + BOOST_WARN_EQUAL(a1, b); + BOOST_CHECK_EQUAL(a1, b); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_NE(a1, b); + BOOST_WARN_NE(a1, a2); + BOOST_CHECK_NE(a1, a2); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_GT(a1, c); + BOOST_WARN_GT(a1, a2); + BOOST_CHECK_GT(a1, a2); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_LT(a1, b); + BOOST_WARN_LT(a1, a2); + BOOST_CHECK_LT(a1, a2); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_GE(a1, a2); + BOOST_CHECK_GE(a1, c); + BOOST_WARN_GE(a1, b); + BOOST_CHECK_GE(a1, b); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_LE(a1, a2); + BOOST_CHECK_LE(a1, b); + BOOST_WARN_LE(a1, c); + BOOST_CHECK_LE(a1, c); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + BOOST_CHECK_THROW(proc_that_throws(), std::runtime_error); + BOOST_CHECK_THROW(a1+b+c, std::runtime_error); + BOOST_CHECK(boost::detail::test_errors() == 1); + --boost::detail::test_errors(); + + return boost::report_errors(); +} + From cd31fbde7ae3d646004429fde98fbc95cf4c3a07 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 17 Nov 2011 18:08:51 +0000 Subject: [PATCH 067/256] Fix operator>> for mp_number. Add template inter-conversions on cpp_float. Adjust precision of test reporting. [SVN r75520] --- include/boost/multiprecision/cpp_float.hpp | 26 ++++++++++++++++++++++ include/boost/multiprecision/mp_number.hpp | 4 +++- test/test.hpp | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 28db0a82..19e5d588 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -163,6 +163,18 @@ public: fpclass (f.fpclass), prec_elem(f.prec_elem) { } + template + cpp_float(const cpp_float& f) : + exp (f.exp), + neg (f.neg), + fpclass (static_cast(static_cast(f.fpclass))), + prec_elem(mp_elem_number) + { + // TODO: this doesn't round! + std::copy_n(f.data.begin(), std::min(f.prec_elem, prec_elem), data.begin()); + precision(std::min(f.prec_elem, prec_elem)); + } + template cpp_float(const F val, typename enable_if >::type* = 0): data(), @@ -299,6 +311,16 @@ public: prec_elem = v.prec_elem; return *this; } + template + cpp_float& operator=(const cpp_float& f) + { + exp = f.exp; + neg = f.neg; + fpclass = static_cast(static_cast(f.fpclass)); + std::copy_n(f.data.begin(), std::min(f.prec_elem, prec_elem), data.begin()); + precision(std::min(f.prec_elem, prec_elem)); + return *this; + } cpp_float& operator= (long long v) { if(v < 0) @@ -481,6 +503,10 @@ private: static boost::uint32_t div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); bool rd_string(const char* const s); + + template + friend class cpp_float; + }; template diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index ff11fb42..6c92093b 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1529,7 +1529,9 @@ inline typename boost::enable_if, bool>: template inline std::ostream& operator << (std::ostream& os, const mp_number& r) { - return os << r.str(static_cast(os.precision(), os.flags() & os.scientific)); + unsigned d = os.precision(); + bool b = os.flags() & os.scientific; + return os << r.str(d, b); } namespace detail{ diff --git a/test/test.hpp b/test/test.hpp index 7999c896..d44af84f 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -116,7 +116,7 @@ void report_unexpected_exception(const E& e, int severity, const char* file, int << std::setprecision(digits_of(x)) << std::scientific\ << "Value of LHS was: " << x << "\n"\ << "Value of RHS was: " << y << "\n"\ - << std::setprecision(3)\ + << std::setprecision(5) << std::fixed\ << "Relative error was: " << relative_error(x, y) << "eps\n"\ << "Tolerance was: " << tol << "eps" << std::endl;\ BOOST_MP_REPORT_SEVERITY(severity);\ From ecead4525a8ab5a5bab55ea9ef4de839c51c77eb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 21 Nov 2011 09:52:32 +0000 Subject: [PATCH 068/256] Suppress MSVC warnings in tests. Add support for std::ios_base::fmtflags in string formatting. Fix the errors that result from above change! [SVN r75586] --- .../multiprecision/arithmetic_backend.hpp | 16 +- .../concepts/mp_number_architypes.hpp | 17 +- include/boost/multiprecision/cpp_float.hpp | 42 +++-- .../multiprecision/detail/default_ops.hpp | 4 +- .../detail/functions/constants.hpp | 6 +- .../multiprecision/detail/functions/pow.hpp | 8 +- .../multiprecision/detail/functions/trig.hpp | 8 +- .../multiprecision/detail/mp_number_base.hpp | 8 + include/boost/multiprecision/gmp.hpp | 87 ++++++++--- include/boost/multiprecision/mp_number.hpp | 34 ++-- include/boost/multiprecision/mpfr.hpp | 49 +++--- include/boost/multiprecision/tommath.hpp | 145 ++++++++++++------ test/mp_number_concept_check.cpp | 2 +- test/test.hpp | 1 + test/test_acos.cpp | 4 + test/test_arithmetic.cpp | 22 ++- test/test_asin.cpp | 4 + test/test_atan.cpp | 4 + test/test_cos.cpp | 4 + test/test_cosh.cpp | 4 + test/test_exp.cpp | 4 + test/test_fpclassify.cpp | 4 + test/test_gmp_conversions.cpp | 4 + test/test_log.cpp | 4 + test/test_mpfr_conversions.cpp | 4 + test/test_numeric_limits.cpp | 4 + test/test_pow.cpp | 4 + test/test_round.cpp | 4 + test/test_sin.cpp | 4 + test/test_sinh.cpp | 4 + test/test_sqrt.cpp | 4 + test/test_tanh.cpp | 4 + test/test_test.cpp | 4 + 33 files changed, 361 insertions(+), 160 deletions(-) diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index 88098dab..b213c819 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -62,9 +63,12 @@ struct arithmetic_backend { std::swap(m_value, o.m_value); } - std::string str(unsigned digits, bool scientific)const + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const { - return boost::lexical_cast(m_value); + std::stringstream ss; + ss.flags(f); + ss << std::setprecision(digits) << m_data; + return ss.str(); } void negate() { @@ -118,10 +122,6 @@ inline void divide(arithmetic_backend& result, const arithmetic_back namespace std{ -#ifdef BOOST_NO_NOEXCEPT -# define BOOST_MP_NOEXCEPT -#endif - template class numeric_limits > > : public std::numeric_limits { @@ -139,10 +139,6 @@ public: BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } }; -#ifdef BOOST_NO_NOEXCEPT -# undef BOOST_MP_NOEXCEPT -#endif - } #endif diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index 18a4b85c..d8380e93 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -74,20 +74,19 @@ struct mp_number_backend_float_architype std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; std::swap(m_value, o.m_value); } - std::string str(unsigned digits, bool scientific)const + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const { std::stringstream ss; - if(scientific) - ss.setf(ss.scientific); + ss.flags(f); if(digits) ss.precision(digits); else ss.precision(std::numeric_limits::digits10 + 2); boost::intmax_t i = m_value; boost::uintmax_t u = m_value; - if(!scientific && m_value == i) + if(!(f & std::ios_base::scientific) && m_value == i) ss << i; - else if(!scientific && m_value == u) + else if(!(f & std::ios_base::scientific) && m_value == u) ss << u; else ss << m_value; @@ -193,10 +192,6 @@ typedef boost::multiprecision::mp_number mp_n namespace std{ -#ifdef BOOST_NO_NOEXCEPT -# define BOOST_MP_NOEXCEPT -#endif - template <> class numeric_limits : public std::numeric_limits { @@ -214,10 +209,6 @@ public: BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } }; -#ifdef BOOST_NO_NOEXCEPT -# undef BOOST_MP_NOEXCEPT -#endif - } #ifdef BOOST_MSVC diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 19e5d588..38b527c1 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -171,7 +171,7 @@ public: prec_elem(mp_elem_number) { // TODO: this doesn't round! - std::copy_n(f.data.begin(), std::min(f.prec_elem, prec_elem), data.begin()); + std::copy(f.data.begin(), f.data.begin() + std::min(f.prec_elem, prec_elem), data.begin()); precision(std::min(f.prec_elem, prec_elem)); } @@ -317,7 +317,7 @@ public: exp = f.exp; neg = f.neg; fpclass = static_cast(static_cast(f.fpclass)); - std::copy_n(f.data.begin(), std::min(f.prec_elem, prec_elem), data.begin()); + std::copy(f.data.begin(), f.data.begin() + std::min(f.prec_elem, prec_elem), data.begin()); precision(std::min(f.prec_elem, prec_elem)); return *this; } @@ -396,7 +396,7 @@ public: return *this -= one(); } - std::string str(unsigned digits, bool scientific)const; + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const; int compare(const cpp_float& v)const; template @@ -1460,7 +1460,7 @@ double cpp_float::extract_double(void) const std::stringstream ss; - ss << str(std::numeric_limits::digits10 + (2 + 1), true); + ss << str(std::numeric_limits::digits10 + (2 + 1), std::ios_base::scientific); double d; ss >> d; @@ -1506,7 +1506,7 @@ long double cpp_float::extract_long_double(void) const std::stringstream ss; - ss << str(std::numeric_limits::digits10 + (2 + 1), true); + ss << str(std::numeric_limits::digits10 + (2 + 1), std::ios_base::scientific); long double ld; ss >> ld; @@ -1639,8 +1639,12 @@ cpp_float cpp_float::extract_integer_part(void) const } template -std::string cpp_float::str(std::size_t number_of_digits, bool scientific) const +std::string cpp_float::str(std::streamsize number_of_digits, std::ios_base::fmtflags f) const { + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; + bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; + bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + std::string str; boost::int64_t my_exp = order(); if(number_of_digits == 0) @@ -1665,13 +1669,13 @@ std::string cpp_float::str(std::size_t number_of_digits, bool scientif } // Cut the output to the size of the precision. - if(str.length() > number_of_digits) + if(str.length() > static_cast(number_of_digits)) { // Get the digit after the last needed digit for rounding - const boost::uint32_t round = static_cast(static_cast(str.at(number_of_digits)) - static_cast('0')); + const boost::uint32_t round = static_cast(static_cast(str[static_cast(number_of_digits)]) - static_cast('0')); // Truncate the string - str = str.substr(static_cast(0u), number_of_digits); + str.erase(static_cast(number_of_digits)); if(round >= static_cast(5u)) { @@ -1716,18 +1720,30 @@ std::string cpp_float::str(std::size_t number_of_digits, bool scientif str.erase(pos, str.end()); if(str.empty()) str = '0'; - if(!scientific && (str.size() < 20) && (my_exp >= 0) && (my_exp < 20)) + if(fixed || (!scientific && (str.size() < 20) && (my_exp >= -3) && (my_exp < 20))) { if(1 + my_exp > str.size()) { // Just pad out the end with zeros: str.append(static_cast(1 + my_exp - str.size()), '0'); + if(showpoint) + str.append(".0"); } else if(my_exp + 1 != str.size()) { - // Insert the decimal point: - str.insert(static_cast(my_exp + 1), 1, '.'); + if(my_exp < 0) + { + str.insert(0, static_cast(-1-my_exp), '0'); + str.insert(0, "0."); + } + else + { + // Insert the decimal point: + str.insert(static_cast(my_exp + 1), 1, '.'); + } } + else if(showpoint) + str += ".0"; } else { @@ -2711,7 +2727,7 @@ namespace std static const bool is_bounded = true; static const bool is_modulo = false; static const bool is_iec559 = false; - static const int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + static const int digits = Digits10; static const int digits10 = boost::multiprecision::cpp_float::cpp_float_digits10; static const int max_digits10 = boost::multiprecision::cpp_float::cpp_float_max_digits10; static const boost::int64_t min_exponent = boost::multiprecision::cpp_float::cpp_float_min_exp; // Type differs from int. diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 917a99e2..e6b18a7a 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -19,7 +19,7 @@ #define INSTRUMENT_BACKEND(x) #else #define INSTRUMENT_BACKEND(x)\ - std::cout << BOOST_STRINGIZE(x) << " = " << x.str(0, true) << std::endl; + std::cout << BOOST_STRINGIZE(x) << " = " << x.str(0, std::ios_base::scientific) << std::endl; #endif #endif @@ -339,7 +339,7 @@ inline void convert_to(terminal* result, const B& backend) // We ran out of types to try for the convertion, try // a lexical_cast and hope for the best: // - result->value = boost::lexical_cast(backend.str(0, false)); + result->value = boost::lexical_cast(backend.str(0, std::ios_base::fmtflags(0))); } // diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 56bb4716..d8fc9966 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -146,7 +146,7 @@ const T& get_constant_ln2() static bool b = false; if(!b) { - calc_log2(result, std::numeric_limits >::digits); + calc_log2(result, boost::multiprecision::detail::digits2 >::value); b = true; } @@ -162,7 +162,7 @@ const T& get_constant_e() static bool b = false; if(!b) { - calc_e(result, std::numeric_limits >::digits); + calc_e(result, boost::multiprecision::detail::digits2 >::value); b = true; } @@ -178,7 +178,7 @@ const T& get_constant_pi() static bool b = false; if(!b) { - calc_pi(result, std::numeric_limits >::digits); + calc_pi(result, boost::multiprecision::detail::digits2 >::value); b = true; } diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 323325c2..3883d938 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -100,7 +100,7 @@ void hyp0F0(T& H0F0, const T& x) typedef typename mpl::front::type ui_type; BOOST_ASSERT(&H0F0 != &x); - long tol = std::numeric_limits >::digits; + long tol = boost::multiprecision::detail::digits2 >::value; T t; T x_pow_n_div_n_fact(x); @@ -156,7 +156,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) multiply(H1F0, pochham_a, x_pow_n_div_n_fact); add(H1F0, si_type(1)); T lim; - eval_ldexp(lim, H1F0, 1 - std::numeric_limits >::digits); + eval_ldexp(lim, H1F0, 1 - boost::multiprecision::detail::digits2 >::value); if(get_sign(lim) < 0) lim.negate(); @@ -164,7 +164,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) T term, part; // Series expansion of hyperg_1f0(a; ; x). - for(n = 2; n < std::numeric_limits >::digits + 10; n++) + for(n = 2; n < boost::multiprecision::detail::digits2 >::value + 10; n++) { multiply(x_pow_n_div_n_fact, x); divide(x_pow_n_div_n_fact, n); @@ -177,7 +177,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) if(lim.compare(term) >= 0) break; } - if(n >= std::numeric_limits >::digits + 10) + if(n >= boost::multiprecision::detail::digits2 >::value + 10) BOOST_THROW_EXCEPTION(std::runtime_error("H1F0 failed to converge")); } diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index 930dadcb..d466b84c 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -36,7 +36,7 @@ void hyp0F1(T& result, const T& b, const T& x) T tol; tol = ui_type(1); - eval_ldexp(tol, tol, 1 - std::numeric_limits >::digits); + eval_ldexp(tol, tol, 1 - boost::multiprecision::detail::digits2 >::value); multiply(tol, result); if(get_sign(tol) < 0) tol.negate(); @@ -375,7 +375,7 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) add(result, ui_type(1)); T lim; - eval_ldexp(lim, result, 1 - std::numeric_limits >::digits); + eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); if(get_sign(lim) < 0) lim.negate(); @@ -507,7 +507,7 @@ void eval_asin(T& result, const T& x) subtract(result, s); T lim; - eval_ldexp(lim, result, 1 - std::numeric_limits >::digits); + eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); if(get_sign(s) < 0) s.negate(); if(get_sign(lim) < 0) @@ -751,7 +751,7 @@ template typename disable_if >::type eval_atan2(T& result, const T& a, const Arithmetic& b) { T x; - x = b; + x = static_cast::type>(b); eval_atan2(result, a, x); } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index ca9cc5e9..e4c9a619 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -337,6 +337,14 @@ private: typename mp_exp_storage::type arg3; }; +template +struct digits2 +{ + BOOST_STATIC_ASSERT(std::numeric_limits::is_specialized); + BOOST_STATIC_ASSERT((std::numeric_limits::radix == 2) || (std::numeric_limits::radix == 10)); + static const long value = std::numeric_limits::radix == 10 ? (((std::numeric_limits::digits + 1) * 1000L) / 301L) : std::numeric_limits::digits; +}; + } // namespace detail // diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 80153bed..56ade6a2 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -159,30 +159,48 @@ struct gmp_float_imp { mpf_swap(m_data, o.m_data); } - std::string str(unsigned digits, bool scientific)const + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const { + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; + bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; + bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + std::string result; mp_exp_t e; void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); - const char* ps = mpf_get_str (0, &e, 10, digits, m_data); + const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); std::ptrdiff_t sl = std::strlen(ps); if(sl == 0) return "0"; if(*ps == '-') --sl; // number of digits excluding sign. - if(!scientific - && (sl <= std::numeric_limits::digits10 + 1) - && (e >= sl) - && (sl <= std::numeric_limits::digits10 + 1)) + result = ps; + if(fixed || (!scientific && (e > -4) && (e <= std::numeric_limits::digits10 + 2))) { - result = ps; - result.append(e-sl, '0'); + if(1 + e >= sl) + { + result.append(e - sl, '0'); + if(showpoint) + result.append(".0"); + } + else + { + if(e <= 0) + { + result.insert(0, -e, '0'); + result.insert(0, "0."); + } + else + { + // Insert the decimal point: + result.insert(e, 1, '.'); + } + } } else { - result = ps; if(ps[0] == '-') result.insert(2, 1, '.'); else @@ -920,7 +938,26 @@ struct gmp_int } gmp_int& operator = (const char* s) { - mpz_set_str(m_data, s, 10); + std::size_t n = s ? std::strlen(s) : 0; + int radix = 10; + if(n && (*s == '0')) + { + if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) + { + radix = 16; + s +=2; + n -= 2; + } + else + { + radix = 8; + n -= 1; + } + } + if(n) + mpz_set_str(m_data, s, radix); + else + mpz_set_ui(m_data, 0); return *this; } gmp_int& operator=(const mpf_t& val) @@ -949,15 +986,30 @@ struct gmp_int { mpz_swap(m_data, o.m_data); } - std::string str(unsigned /*digits*/, bool /*scientific*/)const + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const { + int base = 10; + if((f & std::ios_base::oct) == std::ios_base::oct) + base = 8; + else if((f & std::ios_base::hex) == std::ios_base::hex) + base = 16; void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); - const char* ps = mpz_get_str (0, 10, m_data); + const char* ps = mpz_get_str (0, base, m_data); std::string s = ps; mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + + if((base != 10) && (f & std::ios_base::showbase)) + { + int pos = s[0] == '-' ? 1 : 0; + const char* pp = base == 8 ? "0" : "0x"; + s.insert(pos, pp); + } + if((f & std::ios_base::showpos) && (s[0] != '-')) + s.insert(0, 1, '+'); + return s; } ~gmp_int() @@ -1443,8 +1495,9 @@ struct gmp_rational { mpq_swap(m_data, o.m_data); } - std::string str(unsigned /*digits*/, bool /*scientific*/)const + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const { + // TODO make a better job of this including handling of f!! void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); @@ -1655,10 +1708,6 @@ typedef mp_number mpq_rational; namespace std{ -#ifdef BOOST_NO_NOEXCEPT -# define BOOST_MP_NOEXCEPT -#endif - // // numeric_limits [partial] specializations for the types declared in this header: // @@ -1906,10 +1955,6 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -#ifdef BOOST_NO_NOEXCEPT -# undef BOOST_MP_NOEXCEPT -#endif - } // namespace std #endif diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 6c92093b..71aa1fc6 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -446,9 +446,9 @@ public: // // String conversion functions: // - std::string str(unsigned digits = 0, bool scientific = true)const + std::string str(std::streamsize digits = 0, std::ios_base::fmtflags f = std::ios_base::fmtflags(0))const { - return m_backend.str(digits, scientific); + return m_backend.str(digits, f); } template T convert_to()const @@ -981,7 +981,7 @@ private: template void do_assign_function_1(const F& f, const Exp& val, const detail::terminal&) { - f(m_backend, canonical_value(val.value())); + f(m_backend, function_arg_value(val.value())); } template void do_assign_function_1(const F& f, const Exp& val, const Tag&) @@ -1001,19 +1001,19 @@ private: template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const detail::terminal&) { - f(m_backend, canonical_value(val1.value()), canonical_value(val2.value())); + f(m_backend, function_arg_value(val1.value()), function_arg_value(val2.value())); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const detail::terminal&) { self_type temp1(val1); - f(m_backend, temp1.backend(), canonical_value(val2.value())); + f(m_backend, temp1.backend(), function_arg_value(val2.value())); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const Tag2&) { self_type temp2(val2); - f(m_backend, canonical_value(val1.value()), temp2.backend()); + f(m_backend, function_arg_value(val1.value()), temp2.backend()); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&) @@ -1384,12 +1384,13 @@ private: bool is_floatly_self(const self_type& v)const { return &v == this; } static const Backend& canonical_value(const self_type& v){ return v.m_backend; } - //static const Backend& canonical_value(const self_type* v){ return v->m_backend; } - //static const Backend& canonical_value(self_type* v){ return v->m_backend; } - //static const Backend& canonical_value(self_type& v){ return v.m_backend; } template static typename detail::canonical::type canonical_value(const V& v){ return v; } static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } + + static const Backend& function_arg_value(const self_type& v) { return v.backend(); } + template + static const V& function_arg_value(const V& v) { return v; } Backend m_backend; }; @@ -1529,9 +1530,18 @@ inline typename boost::enable_if, bool>: template inline std::ostream& operator << (std::ostream& os, const mp_number& r) { - unsigned d = os.precision(); - bool b = os.flags() & os.scientific; - return os << r.str(d, b); + std::streamsize d = os.precision(); + std::string s = r.str(d, os.flags()); + std::streamsize ss = os.width(); + if(ss > static_cast(s.size())) + { + char fill = os.fill(); + if((os.flags() & std::ios_base::left) == std::ios_base::left) + s.append(static_cast(ss - s.size()), fill); + else + s.insert(0, static_cast(ss - s.size()), fill); + } + return os << s; } namespace detail{ diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 08ef8a92..1eae2c7d 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -156,32 +156,51 @@ struct mpfr_float_imp { mpfr_swap(m_data, o.m_data); } - std::string str(unsigned digits, bool scientific)const + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const { + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; + bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; + bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + std::string result; mp_exp_t e; - char* ps = mpfr_get_str (0, &e, 10, digits, m_data, GMP_RNDN); + char* ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); std::ptrdiff_t sl = std::strlen(ps); - unsigned chars = sl; + int chars = sl; if(sl == 0) return "0"; while(ps[chars-1] == '0') --chars; + ps[chars] = 0; if(*ps == '-') --chars; // number of digits excluding sign. if(chars == 0) - return "0"; - if(!scientific - && (chars <= std::numeric_limits::digits10 + 1) - && (e >= (int)chars) - && (chars <= std::numeric_limits::digits10 + 1)) + return scientific ? "0.0e0" : showpoint ? "0.0" : "0"; + result = ps; + if(fixed || (!scientific && (e > -4) && (e <= std::numeric_limits::digits10 + 2))) { - result.assign(ps, (*ps == '-' ? chars+1 : chars)); - result.append(e-chars, '0'); + if(e >= chars) + { + result.append(e - chars, '0'); + if(showpoint) + result.append(".0"); + } + else + { + if(e <= 0) + { + result.insert(0, -e, '0'); + result.insert(0, "0."); + } + else + { + // Insert the decimal point: + result.insert(e, 1, '.'); + } + } } else { - result = ps; if(ps[0] == '-') result.insert(2, 1, '.'); else @@ -966,10 +985,6 @@ struct lanczos signed_types; @@ -26,15 +38,15 @@ struct tommath_int tommath_int() { - mp_init(&m_data); + detail::check_tommath_result(mp_init(&m_data)); } tommath_int(const tommath_int& o) { - mp_init_copy(&m_data, const_cast<::mp_int*>(&o.m_data)); + detail::check_tommath_result(mp_init_copy(&m_data, const_cast<::mp_int*>(&o.m_data))); } tommath_int& operator = (const tommath_int& o) { - mp_copy(const_cast<::mp_int*>(&o.m_data), &m_data); + detail::check_tommath_result(mp_copy(const_cast<::mp_int*>(&o.m_data), &m_data)); return *this; } tommath_int& operator = (boost::uintmax_t i) @@ -42,14 +54,14 @@ struct tommath_int boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; ::mp_int t; - mp_init(&t); + detail::check_tommath_result(mp_init(&t)); mp_zero(&m_data); while(i) { - mp_set_int(&t, static_cast(i & mask)); + detail::check_tommath_result(mp_set_int(&t, static_cast(i & mask))); if(shift) - mp_mul_2d(&t, shift, &t); - mp_add(&m_data, &t, &m_data); + detail::check_tommath_result(mp_mul_2d(&t, shift, &t)); + detail::check_tommath_result((mp_add(&m_data, &t, &m_data))); shift += std::numeric_limits::digits; i >>= std::numeric_limits::digits; } @@ -61,12 +73,12 @@ struct tommath_int bool neg = i < 0; *this = static_cast(std::abs(i)); if(neg) - mp_neg(&m_data, &m_data); + detail::check_tommath_result(mp_neg(&m_data, &m_data)); return *this; } tommath_int& operator = (unsigned long i) { - mp_set_int(&m_data, i); + detail::check_tommath_result((mp_set_int(&m_data, i))); return *this; } tommath_int& operator = (long i) @@ -74,7 +86,7 @@ struct tommath_int bool neg = i < 0; *this = static_cast(std::abs(i)); if(neg) - mp_neg(&m_data, &m_data); + detail::check_tommath_result(mp_neg(&m_data, &m_data)); return *this; } tommath_int& operator = (long double a) @@ -84,12 +96,12 @@ struct tommath_int using std::floor; if (a == 0) { - mp_set_int(&m_data, 0); + detail::check_tommath_result(mp_set_int(&m_data, 0)); return *this; } if (a == 1) { - mp_set_int(&m_data, 1); + detail::check_tommath_result(mp_set_int(&m_data, 1)); return *this; } @@ -98,9 +110,9 @@ struct tommath_int int e; long double f, term; - mp_init_set_int(&m_data, 0u); + detail::check_tommath_result(mp_init_set_int(&m_data, 0u)); ::mp_int t; - mp_init(&t); + detail::check_tommath_result(mp_init(&t)); f = frexp(a, &e); @@ -112,40 +124,73 @@ struct tommath_int f = ldexp(f, shift); term = floor(f); e -= shift; - mp_mul_2d(&m_data, shift, &m_data); + detail::check_tommath_result(mp_mul_2d(&m_data, shift, &m_data)); if(term > 0) { - mp_set_int(&t, static_cast(term)); - mp_add(&m_data, &t, &m_data); + detail::check_tommath_result(mp_set_int(&t, static_cast(term))); + detail::check_tommath_result(mp_add(&m_data, &t, &m_data)); } else { - mp_set_int(&t, static_cast(-term)); - mp_sub(&m_data, &t, &m_data); + detail::check_tommath_result(mp_set_int(&t, static_cast(-term))); + detail::check_tommath_result(mp_sub(&m_data, &t, &m_data)); } f -= term; } if(e > 0) - mp_mul_2d(&m_data, e, &m_data); + detail::check_tommath_result(mp_mul_2d(&m_data, e, &m_data)); else if(e < 0) { tommath_int t2; - mp_div_2d(&m_data, -e, &m_data, &t2.data()); + detail::check_tommath_result(mp_div_2d(&m_data, -e, &m_data, &t2.data())); } return *this; } tommath_int& operator = (const char* s) { - mp_read_radix(&m_data, s, 10); + std::size_t n = s ? std::strlen(s) : 0; + int radix = 10; + if(n && (*s == '0')) + { + if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) + { + radix = 16; + s +=2; + n -= 2; + } + else + { + radix = 8; + n -= 1; + } + } + if(n) + detail::check_tommath_result(mp_read_radix(&m_data, s, 10)); + else + detail::check_tommath_result(mp_set_int(&m_data, 0)); return *this; } - std::string str(unsigned /*digits*/, bool /*scientific*/)const + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const { + int base = 10; + if((f & std::ios_base::oct) == std::ios_base::oct) + base = 8; + else if((f & std::ios_base::hex) == std::ios_base::hex) + base = 16; int s; - mp_radix_size(const_cast<::mp_int*>(&m_data), 10, &s); + detail::check_tommath_result(mp_radix_size(const_cast<::mp_int*>(&m_data), 10, &s)); boost::scoped_array a(new char[s+1]); - mp_toradix_n(const_cast<::mp_int*>(&m_data), a.get(), 10, s+1); - return a.get(); + detail::check_tommath_result(mp_toradix_n(const_cast<::mp_int*>(&m_data), a.get(), base, s+1)); + std::string result = a.get(); + if((base != 10) && (f & std::ios_base::showbase)) + { + int pos = result[0] == '-' ? 1 : 0; + const char* pp = base == 8 ? "0" : "0x"; + result.insert(pos, pp); + } + if((f & std::ios_base::showpos) && (result[0] != '-')) + result.insert(0, 1, '+'); + return result; } ~tommath_int() { @@ -164,7 +209,7 @@ struct tommath_int { tommath_int d; tommath_int t(*this); - mp_shrink(&t.data()); + detail::check_tommath_result(mp_shrink(&t.data())); d = v; return t.compare(d); } @@ -182,114 +227,114 @@ int get_sign(const tommath_int& val); inline void add(tommath_int& t, const tommath_int& o) { - mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); } inline void subtract(tommath_int& t, const tommath_int& o) { - mp_sub(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_sub(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); } inline void multiply(tommath_int& t, const tommath_int& o) { - mp_mul(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_mul(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); } inline void divide(tommath_int& t, const tommath_int& o) { tommath_int temp; - mp_div(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data(), &temp.data()); + detail::check_tommath_result(mp_div(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data(), &temp.data())); } inline void modulus(tommath_int& t, const tommath_int& o) { bool neg = get_sign(t) < 0; bool neg2 = get_sign(o) < 0; - mp_mod(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_mod(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); if(neg != neg2) { t.negate(); - mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); t.negate(); } } template inline void left_shift(tommath_int& t, UI i) { - mp_mul_2d(&t.data(), static_cast(i), &t.data()); + detail::check_tommath_result(mp_mul_2d(&t.data(), static_cast(i), &t.data())); } template inline void right_shift(tommath_int& t, UI i) { tommath_int d; - mp_div_2d(&t.data(), static_cast(i), &t.data(), &d.data()); + detail::check_tommath_result(mp_div_2d(&t.data(), static_cast(i), &t.data(), &d.data())); } template inline void left_shift(tommath_int& t, const tommath_int& v, UI i) { - mp_mul_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data()); + detail::check_tommath_result(mp_mul_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data())); } template inline void right_shift(tommath_int& t, const tommath_int& v, UI i) { tommath_int d; - mp_div_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data(), &d.data()); + detail::check_tommath_result(mp_div_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data(), &d.data())); } inline void bitwise_and(tommath_int& result, const tommath_int& v) { - mp_and(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data()); + detail::check_tommath_result(mp_and(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data())); } inline void bitwise_or(tommath_int& result, const tommath_int& v) { - mp_or(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data()); + detail::check_tommath_result(mp_or(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data())); } inline void bitwise_xor(tommath_int& result, const tommath_int& v) { - mp_xor(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data()); + detail::check_tommath_result(mp_xor(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data())); } inline void add(tommath_int& t, const tommath_int& p, const tommath_int& o) { - mp_add(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_add(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); } inline void subtract(tommath_int& t, const tommath_int& p, const tommath_int& o) { - mp_sub(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_sub(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); } inline void multiply(tommath_int& t, const tommath_int& p, const tommath_int& o) { - mp_mul(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_mul(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); } inline void divide(tommath_int& t, const tommath_int& p, const tommath_int& o) { tommath_int d; - mp_div(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data(), &d.data()); + detail::check_tommath_result(mp_div(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data(), &d.data())); } inline void modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) { bool neg = get_sign(p) < 0; bool neg2 = get_sign(o) < 0; - mp_mod(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_mod(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); if(neg != neg2) { t.negate(); - mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data()); + detail::check_tommath_result(mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); t.negate(); } } inline void bitwise_and(tommath_int& result, const tommath_int& u, const tommath_int& v) { - mp_and(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data()); + detail::check_tommath_result(mp_and(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data())); } inline void bitwise_or(tommath_int& result, const tommath_int& u, const tommath_int& v) { - mp_or(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data()); + detail::check_tommath_result(mp_or(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data())); } inline void bitwise_xor(tommath_int& result, const tommath_int& u, const tommath_int& v) { - mp_xor(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data()); + detail::check_tommath_result(mp_xor(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data())); } inline void complement(tommath_int& result, const tommath_int& u) @@ -344,7 +389,7 @@ inline void convert_to(signed char* result, const tommath_int& val) } inline void eval_abs(tommath_int& result, const tommath_int& val) { - mp_abs(const_cast<::mp_int*>(&val.data()), &result.data()); + detail::check_tommath_result(mp_abs(const_cast<::mp_int*>(&val.data()), &result.data())); } diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 675aa2b7..c5787b1e 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -1,4 +1,3 @@ - // Copyright John Maddock 2011. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file @@ -13,6 +12,7 @@ #define BOOST_MATH_INSTANTIATE_MINIMUM #ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS # pragma warning(disable:4800) # pragma warning(disable:4512) # pragma warning(disable:4127) diff --git a/test/test.hpp b/test/test.hpp index d44af84f..b4d21e1c 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -4,6 +4,7 @@ #include #include +#include #include #include diff --git a/test/test_acos.cpp b/test/test_acos.cpp index c2b1a074..2528378e 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index a39dc351..b6ae1a92 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -3,6 +3,10 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include @@ -382,10 +386,11 @@ void test_negative_mixed(boost::mpl::true_ const&) #else Num tol = 0; #endif - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); - BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); + std::ios_base::fmtflags f = boost::is_floating_point::value ? std::ios_base::scientific : std::ios_base::fmtflags(0); + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, f)), tol); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, f)), 0); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, f)), 0); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, f)), 0); // Assignment: Real r(0); BOOST_TEST(r != n1); @@ -483,10 +488,11 @@ void test_mixed() #else Num tol = 0; #endif - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, boost::is_floating_point::value)), tol); - BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, boost::is_floating_point::value)), 0); - BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, boost::is_floating_point::value)), 0); + std::ios_base::fmtflags f = boost::is_floating_point::value ? std::ios_base::scientific : std::ios_base::fmtflags(0); + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, f)), tol); + BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, f)), 0); + BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, f)), 0); + BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, f)), 0); // Assignment: Real r(0); BOOST_TEST(r != n1); diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 834e6bf1..21015134 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_atan.cpp b/test/test_atan.cpp index b1176c6f..afa589d6 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_cos.cpp b/test/test_cos.cpp index aacd3ea4..4ea8b163 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index 89a002d2..7100e4f7 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_exp.cpp b/test/test_exp.cpp index a8cc428a..9582cb58 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp index e3e28825..5e02c661 100644 --- a/test/test_fpclassify.cpp +++ b/test/test_fpclassify.cpp @@ -4,6 +4,10 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include diff --git a/test/test_gmp_conversions.cpp b/test/test_gmp_conversions.cpp index a2e30a7f..fad3d97d 100644 --- a/test/test_gmp_conversions.cpp +++ b/test/test_gmp_conversions.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_log.cpp b/test/test_log.cpp index ff7b8b5a..e965e6d0 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_mpfr_conversions.cpp b/test/test_mpfr_conversions.cpp index 3340697d..cd11e638 100644 --- a/test/test_mpfr_conversions.cpp +++ b/test/test_mpfr_conversions.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index ea18665c..489f1047 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -3,6 +3,10 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_TOMMATH) diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 096a56c1..680db5de 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_round.cpp b/test/test_round.cpp index 4be856b1..c921073e 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -3,6 +3,10 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include diff --git a/test/test_sin.cpp b/test/test_sin.cpp index d320ac1d..d8747218 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 8a626c99..a12ce09d 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index f3cfad43..adc27efc 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 9b62aea8..96bf4574 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -8,6 +8,10 @@ // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include #include #include "test.hpp" diff --git a/test/test_test.cpp b/test/test_test.cpp index 3d0b207d..f01c073e 100644 --- a/test/test_test.cpp +++ b/test/test_test.cpp @@ -3,6 +3,10 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include "test.hpp" #include From 60525e3a9b940ccc75c9b12d5832f6ae9d30f730 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 21 Nov 2011 19:20:35 +0000 Subject: [PATCH 069/256] Fix showpos support. [SVN r75597] --- include/boost/multiprecision/cpp_float.hpp | 3 +++ include/boost/multiprecision/gmp.hpp | 8 ++++++++ include/boost/multiprecision/mpfr.hpp | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 38b527c1..51b0eb95 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1644,6 +1644,7 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + bool shopos = (f & std::ios_base::showpos) == std::ios_base::showpos; std::string str; boost::int64_t my_exp = order(); @@ -1756,6 +1757,8 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ } if(isneg()) str.insert(0, 1, '-'); + else if(shopos) + str.insert(0, 1, '+'); return str; } diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 56ade6a2..7faa4b58 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -164,6 +164,7 @@ struct gmp_float_imp bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; std::string result; mp_exp_t e; @@ -173,7 +174,12 @@ struct gmp_float_imp const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); std::ptrdiff_t sl = std::strlen(ps); if(sl == 0) + { + result = scientific ? "0.0e0" : showpoint ? "0.0" : "0"; + if(showpos) + result.insert(0, 1, '+'); return "0"; + } if(*ps == '-') --sl; // number of digits excluding sign. result = ps; @@ -209,6 +215,8 @@ struct gmp_float_imp if(e) result += "e" + lexical_cast(e); } + if(shopos && (str[0] != '-')) + str.insert(0, 1, '+'); mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); return result; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 1eae2c7d..22c2f3f9 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -161,6 +161,7 @@ struct mpfr_float_imp bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; std::string result; mp_exp_t e; @@ -168,7 +169,12 @@ struct mpfr_float_imp std::ptrdiff_t sl = std::strlen(ps); int chars = sl; if(sl == 0) + { + result = scientific ? "0.0e0" : showpoint ? "0.0" : "0"; + if(showpos) + result.insert(0, 1, '+'); return "0"; + } while(ps[chars-1] == '0') --chars; ps[chars] = 0; @@ -209,6 +215,8 @@ struct mpfr_float_imp if(e) result += "e" + lexical_cast(e); } + if(shopos && (str[0] != '-')) + str.insert(0, 1, '+'); mpfr_free_str(ps); return result; } From 40123e7170713d33945b472dfeaf73d485af67e7 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 22 Nov 2011 09:51:58 +0000 Subject: [PATCH 070/256] Change number formatting when std::ios_base::fixed is set to print the requested number of digits, padding with zeros as required. [SVN r75602] --- include/boost/multiprecision/cpp_float.hpp | 8 ++++++ include/boost/multiprecision/gmp.hpp | 27 ++++++++++++------ include/boost/multiprecision/mpfr.hpp | 32 +++++++++++++--------- 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 51b0eb95..41ad3005 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1755,6 +1755,14 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ str.append(1, 'e'); str.append(boost::lexical_cast(my_exp)); } + if(showpoint || scientific) + { + std::streamsize chars = str.size() - 1; + BOOST_ASSERT(str.find('.') != std::string::npos); // there must be a decimal point!! + chars = number_of_digits - chars; + if(chars > 0) + str.append(chars, '0'); + } if(isneg()) str.insert(0, 1, '-'); else if(shopos) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 7faa4b58..150782cb 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -173,17 +173,14 @@ struct gmp_float_imp void (*free_func_ptr) (void *, size_t); const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); std::ptrdiff_t sl = std::strlen(ps); + if(ps && *ps == '-') + --sl; // number of digits excluding sign. + result = ps; if(sl == 0) { result = scientific ? "0.0e0" : showpoint ? "0.0" : "0"; - if(showpos) - result.insert(0, 1, '+'); - return "0"; } - if(*ps == '-') - --sl; // number of digits excluding sign. - result = ps; - if(fixed || (!scientific && (e > -4) && (e <= std::numeric_limits::digits10 + 2))) + else if(fixed || (!scientific && (e > -4) && (e <= std::numeric_limits::digits10 + 2))) { if(1 + e >= sl) { @@ -215,8 +212,20 @@ struct gmp_float_imp if(e) result += "e" + lexical_cast(e); } - if(shopos && (str[0] != '-')) - str.insert(0, 1, '+'); + if(showpoint || scientific) + { + // Pad out end with zeros as required to give required precision. + std::streamsize chars = result.size() - 1; + BOOST_ASSERT(result.find('.') != std::string::npos); // there must be a decimal point!! + BOOST_ASSERT(result.size()); // Better not be a null string by this point!! + if(result[0] == '-') + --chars; + chars = digits - chars; + if(chars > 0) + result.append(static_cast(chars), '0'); + } + if(showpos && (result[0] != '-')) + result.insert(0, 1, '+'); mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); return result; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 22c2f3f9..2fbae2c8 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -168,21 +168,15 @@ struct mpfr_float_imp char* ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); std::ptrdiff_t sl = std::strlen(ps); int chars = sl; - if(sl == 0) - { - result = scientific ? "0.0e0" : showpoint ? "0.0" : "0"; - if(showpos) - result.insert(0, 1, '+'); - return "0"; - } - while(ps[chars-1] == '0') + while(chars && (ps[chars-1] == '0')) --chars; ps[chars] = 0; - if(*ps == '-') + if(chars && (*ps == '-')) --chars; // number of digits excluding sign. if(chars == 0) - return scientific ? "0.0e0" : showpoint ? "0.0" : "0"; - result = ps; + result = "0"; + else + result = ps; if(fixed || (!scientific && (e > -4) && (e <= std::numeric_limits::digits10 + 2))) { if(e >= chars) @@ -215,8 +209,20 @@ struct mpfr_float_imp if(e) result += "e" + lexical_cast(e); } - if(shopos && (str[0] != '-')) - str.insert(0, 1, '+'); + if(showpoint || scientific) + { + // Pad out end with zeros as required to give required precision. + std::streamsize chars = result.size() - 1; + BOOST_ASSERT(result.find('.') != std::string::npos); // there must be a decimal point!! + BOOST_ASSERT(result.size()); // Better not be a null string by this point!! + if(result[0] == '-') + --chars; + chars = digits - chars; + if(chars > 0) + result.append(static_cast(chars), '0'); + } + if(showpos && (result[0] != '-')) + result.insert(0, 1, '+'); mpfr_free_str(ps); return result; } From b3048e4ad2c0ec9b68ccd3fd06a6fda17194d6f9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 22 Nov 2011 10:07:24 +0000 Subject: [PATCH 071/256] Fix bug in previous formatting code. [SVN r75603] --- include/boost/multiprecision/cpp_float.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 41ad3005..7a33dfa9 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1755,13 +1755,13 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ str.append(1, 'e'); str.append(boost::lexical_cast(my_exp)); } - if(showpoint || scientific) + if((showpoint || scientific) && (number_of_digits != (std::numeric_limits::max)())) { std::streamsize chars = str.size() - 1; BOOST_ASSERT(str.find('.') != std::string::npos); // there must be a decimal point!! chars = number_of_digits - chars; if(chars > 0) - str.append(chars, '0'); + str.append(static_cast(chars), '0'); } if(isneg()) str.insert(0, 1, '-'); From a448d536d0497760f2e53abfb6e3e589be6a6354 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 23 Nov 2011 10:14:41 +0000 Subject: [PATCH 072/256] Re-factor and fix (again) floating point formatting. [SVN r75637] --- include/boost/multiprecision/cpp_float.hpp | 66 ++------------- .../multiprecision/detail/mp_number_base.hpp | 81 +++++++++++++++++++ include/boost/multiprecision/gmp.hpp | 72 ++++------------- include/boost/multiprecision/mpfr.hpp | 77 +++++------------- 4 files changed, 122 insertions(+), 174 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 7a33dfa9..8bf78bd1 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1641,15 +1641,14 @@ cpp_float cpp_float::extract_integer_part(void) const template std::string cpp_float::str(std::streamsize number_of_digits, std::ios_base::fmtflags f) const { - bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; - bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; - bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; - bool shopos = (f & std::ios_base::showpos) == std::ios_base::showpos; - std::string str; boost::int64_t my_exp = order(); if(number_of_digits == 0) - number_of_digits = (std::numeric_limits::max)(); + number_of_digits = cpp_float_max_digits10; + if(f & std::ios_base::fixed) + number_of_digits += my_exp + 1; + else if(f & std::ios_base::scientific) + ++number_of_digits; // Determine the number of elements needed to provide the requested digits from cpp_float. const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(mp_elem_digits10)) + 2u), static_cast(mp_elem_number)); @@ -1711,62 +1710,9 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ } } } - // - // Suppress trailing zeros: - // - std::string::iterator pos = str.end(); - while(pos != str.begin() && *--pos == '0'){} - if(pos != str.end()) - ++pos; - str.erase(pos, str.end()); - if(str.empty()) - str = '0'; - if(fixed || (!scientific && (str.size() < 20) && (my_exp >= -3) && (my_exp < 20))) - { - if(1 + my_exp > str.size()) - { - // Just pad out the end with zeros: - str.append(static_cast(1 + my_exp - str.size()), '0'); - if(showpoint) - str.append(".0"); - } - else if(my_exp + 1 != str.size()) - { - if(my_exp < 0) - { - str.insert(0, static_cast(-1-my_exp), '0'); - str.insert(0, "0."); - } - else - { - // Insert the decimal point: - str.insert(static_cast(my_exp + 1), 1, '.'); - } - } - else if(showpoint) - str += ".0"; - } - else - { - // Scientific format: - str.insert(1, 1, '.'); - if(str.size() == 2) - str.append(1, '0'); - str.append(1, 'e'); - str.append(boost::lexical_cast(my_exp)); - } - if((showpoint || scientific) && (number_of_digits != (std::numeric_limits::max)())) - { - std::streamsize chars = str.size() - 1; - BOOST_ASSERT(str.find('.') != std::string::npos); // there must be a decimal point!! - chars = number_of_digits - chars; - if(chars > 0) - str.append(static_cast(chars), '0'); - } if(isneg()) str.insert(0, 1, '-'); - else if(shopos) - str.insert(0, 1, '+'); + boost::multiprecision::detail::format_float_string(str, my_exp, number_of_digits, f); return str; } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index e4c9a619..d059ba17 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -345,6 +345,87 @@ struct digits2 static const long value = std::numeric_limits::radix == 10 ? (((std::numeric_limits::digits + 1) * 1000L) / 301L) : std::numeric_limits::digits; }; +template +void format_float_string(S& str, long long my_exp, std::streamsize digits, std::ios_base::fmtflags f) +{ + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; + bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; + bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; + + if(!fixed && !scientific) + { + // + // Suppress trailing zeros: + // + std::string::iterator pos = str.end(); + while(pos != str.begin() && *--pos == '0'){} + if(pos != str.end()) + ++pos; + str.erase(pos, str.end()); + if(str.empty()) + str = '0'; + } + else + { + // + // Pad out the end with zero's if we need to: + // + std::streamsize chars = str.size(); + if(chars && str[0] == '-') + --chars; + chars = digits - chars; + if(chars > 0) + { + str.append(static_cast(chars), '0'); + } + } + + if(fixed || (!scientific && (str.size() < 20) && (my_exp >= -3) && (my_exp < 20))) + { + if(1 + my_exp > str.size()) + { + // Just pad out the end with zeros: + str.append(static_cast(1 + my_exp - str.size()), '0'); + if(showpoint) + str.append(".0"); + } + else if(my_exp + 1 != str.size()) + { + if(my_exp < 0) + { + str.insert(0, static_cast(-1-my_exp), '0'); + str.insert(0, "0."); + } + else + { + // Insert the decimal point: + str.insert(static_cast(my_exp + 1), 1, '.'); + } + } + else if(showpoint) + str += ".0"; + } + else + { + // Scientific format: + str.insert(1, 1, '.'); + if(str.size() == 2) + str.append(1, '0'); + str.append(1, 'e'); + S e = boost::lexical_cast(std::abs(my_exp)); + if(e.size() < 3) + e.insert(0, 3-e.size(), '0'); + if(my_exp < 0) + e.insert(0, 1, '-'); + else + e.insert(0, 1, '+'); + str.append(e); + } + if(showpos && (str[0] != '-')) + str.insert(0, 1, '+'); +} + } // namespace detail // diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 150782cb..5184375a 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -163,71 +163,29 @@ struct gmp_float_imp { bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; - bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; - bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; + + if(scientific) + ++digits; std::string result; mp_exp_t e; void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); - const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); - std::ptrdiff_t sl = std::strlen(ps); - if(ps && *ps == '-') - --sl; // number of digits excluding sign. - result = ps; - if(sl == 0) - { - result = scientific ? "0.0e0" : showpoint ? "0.0" : "0"; - } - else if(fixed || (!scientific && (e > -4) && (e <= std::numeric_limits::digits10 + 2))) - { - if(1 + e >= sl) - { - result.append(e - sl, '0'); - if(showpoint) - result.append(".0"); - } - else - { - if(e <= 0) - { - result.insert(0, -e, '0'); - result.insert(0, "0."); - } - else - { - // Insert the decimal point: - result.insert(e, 1, '.'); - } - } - } - else - { - if(ps[0] == '-') - result.insert(2, 1, '.'); - else - result.insert(1, 1, '.'); - --e; - if(e) - result += "e" + lexical_cast(e); - } - if(showpoint || scientific) - { - // Pad out end with zeros as required to give required precision. - std::streamsize chars = result.size() - 1; - BOOST_ASSERT(result.find('.') != std::string::npos); // there must be a decimal point!! - BOOST_ASSERT(result.size()); // Better not be a null string by this point!! - if(result[0] == '-') - --chars; - chars = digits - chars; - if(chars > 0) - result.append(static_cast(chars), '0'); - } - if(showpos && (result[0] != '-')) - result.insert(0, 1, '+'); mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); + --e; // To match with what our formatter expects. + if(fixed && e != -1) + { + // Oops we actually need a different number of digits to what we asked for: + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + digits += e + 1; + ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); + --e; // To match with what our formatter expects. + } + result = ps; (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + boost::multiprecision::detail::format_float_string(result, e, digits, f); return result; } ~gmp_float_imp() diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 2fbae2c8..7e162839 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -160,70 +160,33 @@ struct mpfr_float_imp { bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; - bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; - bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; + + if(scientific) + ++digits; std::string result; mp_exp_t e; - char* ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); - std::ptrdiff_t sl = std::strlen(ps); - int chars = sl; - while(chars && (ps[chars-1] == '0')) - --chars; - ps[chars] = 0; - if(chars && (*ps == '-')) - --chars; // number of digits excluding sign. - if(chars == 0) + if(mpfr_zero_p(m_data)) + { + e = 0; result = "0"; + } else + { + char* ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); + --e; // To match with what our formatter expects. + if(fixed && e != -1) + { + // Oops we actually need a different number of digits to what we asked for: + mpfr_free_str(ps); + digits += e + 1; + ps = ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); + --e; // To match with what our formatter expects. + } result = ps; - if(fixed || (!scientific && (e > -4) && (e <= std::numeric_limits::digits10 + 2))) - { - if(e >= chars) - { - result.append(e - chars, '0'); - if(showpoint) - result.append(".0"); - } - else - { - if(e <= 0) - { - result.insert(0, -e, '0'); - result.insert(0, "0."); - } - else - { - // Insert the decimal point: - result.insert(e, 1, '.'); - } - } + mpfr_free_str(ps); } - else - { - if(ps[0] == '-') - result.insert(2, 1, '.'); - else - result.insert(1, 1, '.'); - --e; - if(e) - result += "e" + lexical_cast(e); - } - if(showpoint || scientific) - { - // Pad out end with zeros as required to give required precision. - std::streamsize chars = result.size() - 1; - BOOST_ASSERT(result.find('.') != std::string::npos); // there must be a decimal point!! - BOOST_ASSERT(result.size()); // Better not be a null string by this point!! - if(result[0] == '-') - --chars; - chars = digits - chars; - if(chars > 0) - result.append(static_cast(chars), '0'); - } - if(showpos && (result[0] != '-')) - result.insert(0, 1, '+'); - mpfr_free_str(ps); + boost::multiprecision::detail::format_float_string(result, e, digits, f); return result; } ~mpfr_float_imp() From a82c12c4472e8fe1cfc8d68b9b11a8806ba3ceab Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 24 Nov 2011 17:27:17 +0000 Subject: [PATCH 073/256] Mostly fix IO failures. [SVN r75644] --- include/boost/multiprecision/cpp_float.hpp | 79 ++++++++++++------- .../multiprecision/detail/mp_number_base.hpp | 37 ++++++--- include/boost/multiprecision/gmp.hpp | 31 +++++--- include/boost/multiprecision/mpfr.hpp | 2 + 4 files changed, 97 insertions(+), 52 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 8bf78bd1..b1a6b1f5 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1646,7 +1646,9 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ if(number_of_digits == 0) number_of_digits = cpp_float_max_digits10; if(f & std::ios_base::fixed) + { number_of_digits += my_exp + 1; + } else if(f & std::ios_base::scientific) ++number_of_digits; // Determine the number of elements needed to provide the requested digits from cpp_float. @@ -1667,47 +1669,64 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ str += ss.str(); } - - // Cut the output to the size of the precision. - if(str.length() > static_cast(number_of_digits)) + if(number_of_digits == 0) { - // Get the digit after the last needed digit for rounding - const boost::uint32_t round = static_cast(static_cast(str[static_cast(number_of_digits)]) - static_cast('0')); - - // Truncate the string - str.erase(static_cast(number_of_digits)); - - if(round >= static_cast(5u)) + // We only get here if the output format is "fixed" and we just need to + // round the first digit. + str.insert(0, 1, '0'); + ++number_of_digits; + } + if(number_of_digits < 0) + { + str = "0"; + if(isneg()) + str.insert(0, 1, '-'); + boost::multiprecision::detail::format_float_string(str, 0, number_of_digits - my_exp - 1, f); + return str; + } + else + { + // Cut the output to the size of the precision. + if(str.length() > static_cast(number_of_digits)) { - std::size_t ix = static_cast(str.length() - 1u); + // Get the digit after the last needed digit for rounding + const boost::uint32_t round = static_cast(static_cast(str[static_cast(number_of_digits)]) - static_cast('0')); - // Every trailing 9 must be rounded up - while(ix && (static_cast(str.at(ix)) - static_cast('0') == static_cast(9))) - { - str.at(ix) = static_cast('0'); - --ix; - } + // Truncate the string + str.erase(static_cast(number_of_digits)); - if(!ix) + if(round >= static_cast(5u)) { - // There were nothing but trailing nines. - if(static_cast(static_cast(str.at(ix)) - static_cast(0x30)) == static_cast(9)) + std::size_t ix = static_cast(str.length() - 1u); + + // Every trailing 9 must be rounded up + while(ix && (static_cast(str.at(ix)) - static_cast('0') == static_cast(9))) { - // Increment up to the next order and adjust exponent. - str.at(ix) = static_cast('1'); - ++my_exp; + str.at(ix) = static_cast('0'); + --ix; + } + + if(!ix) + { + // There were nothing but trailing nines. + if(static_cast(static_cast(str.at(ix)) - static_cast(0x30)) == static_cast(9)) + { + // Increment up to the next order and adjust exponent. + str.at(ix) = static_cast('1'); + ++my_exp; + } + else + { + // Round up this digit. + ++str.at(ix); + } } else { - // Round up this digit. - ++str.at(ix); + // Round up the last digit. + ++str[ix]; } } - else - { - // Round up the last digit. - ++str[ix]; - } } } if(isneg()) diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index d059ba17..8376405f 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -9,6 +9,7 @@ #include #include #include +#include #ifdef BOOST_NO_NOEXCEPT #define BOOST_MP_NOEXCEPT @@ -345,6 +346,14 @@ struct digits2 static const long value = std::numeric_limits::radix == 10 ? (((std::numeric_limits::digits + 1) * 1000L) / 301L) : std::numeric_limits::digits; }; +#ifndef BOOST_MP_MIN_EXPONENT_DIGITS +#ifdef _MSC_VER +# define BOOST_MP_MIN_EXPONENT_DIGITS 3 +#else +# define BOOST_MP_MIN_EXPONENT_DIGITS 2 +#endif +#endif + template void format_float_string(S& str, long long my_exp, std::streamsize digits, std::ios_base::fmtflags f) { @@ -353,7 +362,12 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; - if(!fixed && !scientific) + bool neg = str.size() && (str[0] == '-'); + + if(neg) + str.erase(0, 1); + + if(!fixed && !scientific && !showpoint) { // // Suppress trailing zeros: @@ -372,8 +386,6 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: // Pad out the end with zero's if we need to: // std::streamsize chars = str.size(); - if(chars && str[0] == '-') - --chars; chars = digits - chars; if(chars > 0) { @@ -381,14 +393,14 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: } } - if(fixed || (!scientific && (str.size() < 20) && (my_exp >= -3) && (my_exp < 20))) + if(fixed || (!scientific && (my_exp >= -4) && (my_exp < digits))) { if(1 + my_exp > str.size()) { // Just pad out the end with zeros: str.append(static_cast(1 + my_exp - str.size()), '0'); if(showpoint) - str.append(".0"); + str.append("."); } else if(my_exp + 1 != str.size()) { @@ -404,25 +416,26 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: } } else if(showpoint) - str += ".0"; + str += "."; } else { // Scientific format: - str.insert(1, 1, '.'); - if(str.size() == 2) - str.append(1, '0'); + if(showpoint || (str.size() > 1)) + str.insert(1, 1, '.'); str.append(1, 'e'); S e = boost::lexical_cast(std::abs(my_exp)); - if(e.size() < 3) - e.insert(0, 3-e.size(), '0'); + if(e.size() < BOOST_MP_MIN_EXPONENT_DIGITS) + e.insert(0, BOOST_MP_MIN_EXPONENT_DIGITS-e.size(), '0'); if(my_exp < 0) e.insert(0, 1, '-'); else e.insert(0, 1, '+'); str.append(e); } - if(showpos && (str[0] != '-')) + if(neg) + str.insert(0, 1, '-'); + else if(showpos) str.insert(0, 1, '+'); } diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 5184375a..bec26f6b 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -173,18 +173,29 @@ struct gmp_float_imp void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); - const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); - --e; // To match with what our formatter expects. - if(fixed && e != -1) + + if(mpf_sgn(m_data) == 0) { - // Oops we actually need a different number of digits to what we asked for: - (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); - digits += e + 1; - ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); - --e; // To match with what our formatter expects. + e = 0; + result = "0"; + if(fixed) + ++digits; + } + else + { + const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); + --e; // To match with what our formatter expects. + if(fixed && e != -1) + { + // Oops we actually need a different number of digits to what we asked for: + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); + digits += e + 1; + ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); + --e; // To match with what our formatter expects. + } + result = ps; + (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); } - result = ps; - (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); boost::multiprecision::detail::format_float_string(result, e, digits, f); return result; } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 7e162839..b030957b 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -170,6 +170,8 @@ struct mpfr_float_imp { e = 0; result = "0"; + if(fixed) + ++digits; } else { From ffc6bcedc9ecae0c40bcc7c600063bdee6cbe725 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 28 Nov 2011 09:13:12 +0000 Subject: [PATCH 074/256] Fix float IO and add test. [SVN r75707] --- include/boost/multiprecision/cpp_float.hpp | 54 +++++- .../multiprecision/detail/mp_number_base.hpp | 59 +++++- include/boost/multiprecision/gmp.hpp | 67 ++++++- include/boost/multiprecision/mpfr.hpp | 71 ++++++- test/Jamfile.v2 | 27 ++- test/test_float_io.cpp | 181 ++++++++++++++++++ 6 files changed, 430 insertions(+), 29 deletions(-) create mode 100644 test/test_float_io.cpp diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index b1a6b1f5..8e4bdb16 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1642,6 +1642,7 @@ template std::string cpp_float::str(std::streamsize number_of_digits, std::ios_base::fmtflags f) const { std::string str; + std::streamsize org_digits(number_of_digits); boost::int64_t my_exp = order(); if(number_of_digits == 0) number_of_digits = cpp_float_max_digits10; @@ -1669,19 +1670,21 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ str += ss.str(); } + bool have_leading_zeros = false; if(number_of_digits == 0) { // We only get here if the output format is "fixed" and we just need to - // round the first digit. - str.insert(0, 1, '0'); - ++number_of_digits; + // round the first non-zero digit. + number_of_digits -= my_exp + 1; // reset to original value + str.insert(0, std::string::size_type(number_of_digits), '0'); + have_leading_zeros = true; } if(number_of_digits < 0) { str = "0"; if(isneg()) str.insert(0, 1, '-'); - boost::multiprecision::detail::format_float_string(str, 0, number_of_digits - my_exp - 1, f); + boost::multiprecision::detail::format_float_string(str, 0, number_of_digits - my_exp - 1, f, this->iszero()); return str; } else @@ -1692,10 +1695,37 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ // Get the digit after the last needed digit for rounding const boost::uint32_t round = static_cast(static_cast(str[static_cast(number_of_digits)]) - static_cast('0')); + bool need_round_up = round >= 5u; + + if(round == 5u) + { + const boost::uint32_t ix = static_cast(static_cast(str[static_cast(number_of_digits - 1)]) - static_cast('0')); + if((ix & 1u) == 0) + { + // We have an even digit followed by a 5, so we might not actually need to round up + // if all the remaining digits are zero: + if(str.find_first_not_of('0', static_cast(number_of_digits + 1)) == std::string::npos) + { + bool all_zeros = true; + // No none-zero trailing digits in the string, now check whatever parts we didn't convert to the string: + for(std::size_t i = number_of_elements; i < data.size(); i++) + { + if(data[i]) + { + all_zeros = false; + break; + } + } + if(all_zeros) + need_round_up = false; // tie break - round to even. + } + } + } + // Truncate the string str.erase(static_cast(number_of_digits)); - if(round >= static_cast(5u)) + if(need_round_up) { std::size_t ix = static_cast(str.length() - 1u); @@ -1729,9 +1759,21 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ } } } + if(have_leading_zeros) + { + // We need to take the zeros back out again, and correct the exponent + // if we rounded up: + if(str[std::string::size_type(number_of_digits - 1)] != '0') + { + ++my_exp; + str.erase(0, std::string::size_type(number_of_digits - 1)); + } + else + str.erase(0, std::string::size_type(number_of_digits)); + } if(isneg()) str.insert(0, 1, '-'); - boost::multiprecision::detail::format_float_string(str, my_exp, number_of_digits, f); + boost::multiprecision::detail::format_float_string(str, my_exp, org_digits, f, this->iszero()); return str; } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 8376405f..fb2cb147 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -348,15 +348,16 @@ struct digits2 #ifndef BOOST_MP_MIN_EXPONENT_DIGITS #ifdef _MSC_VER -# define BOOST_MP_MIN_EXPONENT_DIGITS 3 +# define BOOST_MP_MIN_EXPONENT_DIGITS 2 #else # define BOOST_MP_MIN_EXPONENT_DIGITS 2 #endif #endif template -void format_float_string(S& str, long long my_exp, std::streamsize digits, std::ios_base::fmtflags f) +void format_float_string(S& str, long long my_exp, std::streamsize digits, std::ios_base::fmtflags f, bool iszero) { + typedef typename S::size_type size_type; bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; @@ -367,6 +368,39 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: if(neg) str.erase(0, 1); + if(digits == 0) + { + digits = (std::max)(str.size(), size_type(16)); + } + + if(iszero || str.empty() || (str.find_first_not_of('0') == S::npos)) + { + // We will be printing zero, even though the value might not + // actually be zero (it just may have been rounded to zero). + str = "0"; + if(scientific || fixed) + { + str.append(1, '.'); + str.append(size_type(digits), '0'); + if(scientific) + str.append("e+00"); + } + else + { + if(showpoint) + { + str.append(1, '.'); + if(digits > 1) + str.append(size_type(digits - 1), '0'); + } + } + if(neg) + str.insert(0, 1, '-'); + else if(showpos) + str.insert(0, 1, '+'); + return; + } + if(!fixed && !scientific && !showpoint) { // @@ -380,13 +414,15 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: if(str.empty()) str = '0'; } - else + else if(!fixed || (my_exp >= 0)) { // // Pad out the end with zero's if we need to: // std::streamsize chars = str.size(); chars = digits - chars; + if(scientific) + ++chars; if(chars > 0) { str.append(static_cast(chars), '0'); @@ -399,14 +435,14 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: { // Just pad out the end with zeros: str.append(static_cast(1 + my_exp - str.size()), '0'); - if(showpoint) + if(showpoint || fixed) str.append("."); } - else if(my_exp + 1 != str.size()) + else if(my_exp + 1 < str.size()) { if(my_exp < 0) { - str.insert(0, static_cast(-1-my_exp), '0'); + str.insert(0, static_cast(-1 - my_exp), '0'); str.insert(0, "0."); } else @@ -415,8 +451,17 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: str.insert(static_cast(my_exp + 1), 1, '.'); } } - else if(showpoint) + else if(showpoint || fixed) // we have exactly the digits we require to left of the point str += "."; + + if(fixed) + { + // We may need to add trailing zeros: + std::streamsize l = str.find('.') + 1; + l = digits - (str.size() - l); + if(l > 0) + str.append(size_type(l), '0'); + } } else { diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index bec26f6b..e5d5fcc9 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -163,8 +163,9 @@ struct gmp_float_imp { bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; + std::streamsize org_digits(digits); - if(scientific) + if(scientific && digits) ++digits; std::string result; @@ -178,25 +179,79 @@ struct gmp_float_imp { e = 0; result = "0"; - if(fixed) + if(fixed && digits) ++digits; } else { - const char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); + char* ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); --e; // To match with what our formatter expects. if(fixed && e != -1) { // Oops we actually need a different number of digits to what we asked for: (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); digits += e + 1; - ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); - --e; // To match with what our formatter expects. + if(digits == 0) + { + // We need to get *all* the digits and then possibly round up, + // we end up with either "0" or "1" as the result. + ps = mpf_get_str (0, &e, 10, 0, m_data); + --e; + unsigned offset = *ps == '-' ? 1 : 0; + if(ps[offset] > '5') + { + ++e; + ps[offset] = '1'; + ps[offset + 1] = 0; + } + else if(ps[offset] == '5') + { + unsigned i = offset + 1; + bool round_up = false; + while(ps[i] != 0) + { + if(ps[i] != '0') + { + round_up = true; + break; + } + } + if(round_up) + { + ++e; + ps[offset] = '1'; + ps[offset + 1] = 0; + } + else + { + ps[offset] = '0'; + ps[offset + 1] = 0; + } + } + else + { + ps[offset] = '0'; + ps[offset + 1] = 0; + } + } + else if(digits > 0) + { + ps = mpf_get_str (0, &e, 10, static_cast(digits), m_data); + --e; // To match with what our formatter expects. + } + else + { + ps = mpf_get_str (0, &e, 10, 1, m_data); + --e; + unsigned offset = *ps == '-' ? 1 : 0; + ps[offset] = '0'; + ps[offset + 1] = 0; + } } result = ps; (*free_func_ptr)((void*)ps, std::strlen(ps) + 1); } - boost::multiprecision::detail::format_float_string(result, e, digits, f); + boost::multiprecision::detail::format_float_string(result, e, org_digits, f, mpf_sgn(m_data) == 0); return result; } ~gmp_float_imp() diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index b030957b..9afdc01a 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -161,7 +161,9 @@ struct mpfr_float_imp bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; - if(scientific) + std::streamsize org_digits(digits); + + if(scientific && digits) ++digits; std::string result; @@ -170,8 +172,6 @@ struct mpfr_float_imp { e = 0; result = "0"; - if(fixed) - ++digits; } else { @@ -182,13 +182,68 @@ struct mpfr_float_imp // Oops we actually need a different number of digits to what we asked for: mpfr_free_str(ps); digits += e + 1; - ps = ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); - --e; // To match with what our formatter expects. + if(digits == 0) + { + // We need to get *all* the digits and then possibly round up, + // we end up with either "0" or "1" as the result. + ps = mpfr_get_str (0, &e, 10, 0, m_data, GMP_RNDN); + --e; + unsigned offset = *ps == '-' ? 1 : 0; + if(ps[offset] > '5') + { + ++e; + ps[offset] = '1'; + ps[offset + 1] = 0; + } + else if(ps[offset] == '5') + { + unsigned i = offset + 1; + bool round_up = false; + while(ps[i] != 0) + { + if(ps[i] != '0') + { + round_up = true; + break; + } + } + if(round_up) + { + ++e; + ps[offset] = '1'; + ps[offset + 1] = 0; + } + else + { + ps[offset] = '0'; + ps[offset + 1] = 0; + } + } + else + { + ps[offset] = '0'; + ps[offset + 1] = 0; + } + } + else if(digits > 0) + { + ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); + --e; // To match with what our formatter expects. + } + else + { + ps = mpfr_get_str (0, &e, 10, 1, m_data, GMP_RNDN); + --e; + unsigned offset = *ps == '-' ? 1 : 0; + ps[offset] = '0'; + ps[offset + 1] = 0; + } } - result = ps; - mpfr_free_str(ps); + result = ps ? ps : "0"; + if(ps) + mpfr_free_str(ps); } - boost::multiprecision::detail::format_float_string(result, e, digits, f); + boost::multiprecision::detail::format_float_string(result, e, org_digits, f, 0 != mpfr_zero_p(m_data)); return result; } ~mpfr_float_imp() diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 975e7a0e..d707576b 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -579,8 +579,31 @@ run test_fpclassify.cpp : # input files : # requirements TEST_CPP_FLOAT - [ check-target-builds ../config//has_mpfr : : no ] : test_fpclassify_cpp_float ; -run test_test.cpp ; \ No newline at end of file +run test_test.cpp ; + +run test_float_io.cpp + : # command line + : # input files + : # requirements + TEST_CPP_FLOAT + : test_float_io_cpp_float ; + +run test_float_io.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : test_float_io_mpf ; + +run test_float_io.cpp mpfr gmp + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_float_io_mpfr ; + diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp new file mode 100644 index 00000000..944c1721 --- /dev/null +++ b/test/test_float_io.cpp @@ -0,0 +1,181 @@ +// Copyright John Maddock 2011. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#if !defined(TEST_MPF_50) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_CPP_FLOAT +# define TEST_MPFR_50 + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#include +#include +#include +#include + +#if defined(TEST_MPF_50) +template +bool is_mpf(const boost::multiprecision::mp_number >&) +{ return true; } +#endif +template +bool is_mpf(const T&) { return false; } + +bool is_bankers_rounding_error(const std::string& s, const char* expect) +{ + // This check isn't foolproof: that would require *much* more sofisticated code!!! + std::string::size_type l = std::strlen(expect); + if(l != s.size()) + return false; + std::string::size_type len = s.find('e'); + if(len == std::string::npos) + len = l - 1; + else + --len; + if(s.compare(0, len, expect, len)) + return false; + if(s[len] != expect[len] + 1) + return false; + return true; +} + +void print_flags(std::ios_base::fmtflags f) +{ + std::cout << "Formatting flags were: "; + if(f & std::ios_base::scientific) + std::cout << "scientific "; + if(f & std::ios_base::fixed) + std::cout << "fixed "; + if(f & std::ios_base::showpoint) + std::cout << "showpoint "; + if(f & std::ios_base::showpos) + std::cout << "showpos "; + std::cout << std::endl; +} + + +template +void test() +{ + typedef T mp_t; + boost::array f = + {{ + std::ios_base::fmtflags(0), std::ios_base::showpoint, std::ios_base::showpos, std::ios_base::scientific, std::ios_base::scientific|std::ios_base::showpos, + std::ios_base::scientific|std::ios_base::showpoint, std::ios_base::fixed, std::ios_base::fixed|std::ios_base::showpoint, + std::ios_base::fixed|std::ios_base::showpos + }}; + + boost::array, 40> string_data = {{ +#include "libs/multiprecision/string_data.ipp" + }}; + + double num = 123456789.0; + double denom = 1; + double val = num; + for(unsigned j = 0; j < 40; ++j) + { + unsigned col = 0; + for(unsigned prec = 1; prec < 14; ++prec) + { + for(unsigned i = 0; i < f.size(); ++i, ++col) + { + std::stringstream ss; + ss.precision(prec); + ss.flags(f[i]); + ss << mp_t(val); + const char* expect = string_data[j][col]; + if(ss.str() != expect) + { + if(is_mpf(mp_t()) && is_bankers_rounding_error(ss.str(), expect)) + { + std::cout << "Ignoring bankers-rounding error with GMP mp_f.\n"; + } + else + { + std::cout << std::setprecision(20) << "Testing value " << val << std::endl; + print_flags(f[i]); + std::cout << "Precision is: " << prec << std::endl; + std::cout << "Got: " << ss.str() << std::endl; + std::cout << "Expected: " << expect << std::endl; + ++boost::detail::test_errors(); + mp_t(val).str(prec, f[i]); // for debugging + } + } + } + } + num = -num; + if(j & 1) + denom *= 8; + val = num / denom; + } + + boost::array zeros = + {{ "0", "0.", "+0", "0.0e+00", "+0.0e+00", "0.0e+00", "0.0", "0.0", "+0.0", "0", "0.0", "+0", "0.00e+00", "+0.00e+00", "0.00e+00", "0.00", "0.00", "+0.00", "0", "0.00", "+0", "0.000e+00", "+0.000e+00", "0.000e+00", "0.000", "0.000", "+0.000", "0", "0.000", "+0", "0.0000e+00", "+0.0000e+00", "0.0000e+00", "0.0000", "0.0000", "+0.0000", "0", "0.0000", "+0", "0.00000e+00", "+0.00000e+00", "0.00000e+00", "0.00000", "0.00000", "+0.00000", "0", "0.00000", "+0", "0.000000e+00", "+0.000000e+00", "0.000000e+00", "0.000000", "0.000000", "+0.000000", "0", "0.000000", "+0", "0.0000000e+00", "+0.0000000e+00", "0.0000000e+00", "0.0000000", "0.0000000", "+0.0000000", "0", "0.0000000", "+0", "0.00000000e+00", "+0.00000000e+00", "0.00000000e+00", "0.00000000", "0.00000000", "+0.00000000", "0", "0.00000000", "+0", "0.000000000e+00", "+0.000000000e+00", "0.000000000e+00", "0.000000000", "0.000000000", "+0.000000000", "0", "0.000000000", "+0", "0.0000000000e+00", "+0.0000000000e+00", "0.0000000000e+00", "0.0000000000", "0.0000000000", "+0.0000000000", "0", "0.0000000000", "+0", "0.00000000000e+00", "+0.00000000000e+00", "0.00000000000e+00", "0.00000000000", "0.00000000000", "+0.00000000000", "0", "0.00000000000", "+0", "0.000000000000e+00", "+0.000000000000e+00", "0.000000000000e+00", "0.000000000000", "0.000000000000", "+0.000000000000", "0", "0.000000000000", "+0", "0.0000000000000e+00", "+0.0000000000000e+00", "0.0000000000000e+00", "0.0000000000000", "0.0000000000000", "+0.0000000000000" }}; + + unsigned col = 0; + val = 0; + for(unsigned prec = 1; prec < 14; ++prec) + { + for(unsigned i = 0; i < f.size(); ++i, ++col) + { + std::stringstream ss; + ss.precision(prec); + ss.flags(f[i]); + ss << mp_t(val); + const char* expect = zeros[col]; + if(ss.str() != expect) + { + std::cout << std::setprecision(20) << "Testing value " << val << std::endl; + print_flags(f[i]); + std::cout << "Precision is: " << prec << std::endl; + std::cout << "Got: " << ss.str() << std::endl; + std::cout << "Expected: " << expect << std::endl; + ++boost::detail::test_errors(); + mp_t(val).str(prec, f[i]); // for debugging + } + } + } +} + +int main() +{ +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_CPP_FLOAT + test(); + test(); +#endif +#ifdef TEST_MPF_50 + test(); + test(); +#endif + return boost::report_errors(); +} + From 7143af0191252363c64bce436e076847283cfd32 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 28 Nov 2011 16:28:31 +0000 Subject: [PATCH 075/256] Fix IO of infinities and NaN's. Add IO round trip test and adjust max_digits10 accordingly. [SVN r75714] --- include/boost/multiprecision/cpp_float.hpp | 55 ++++++++++-- include/boost/multiprecision/gmp.hpp | 4 +- include/boost/multiprecision/mpfr.hpp | 17 +++- test/test.hpp | 2 +- test/test_float_io.cpp | 98 +++++++++++++++++++++- 5 files changed, 164 insertions(+), 12 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 8e4bdb16..c432a13f 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -53,6 +53,11 @@ private: static const boost::int32_t mp_elem_number = static_cast(cpp_float_digits10_num_base + 2); static const boost::int32_t mp_elem_mask = static_cast(100000000); +public: + static const boost::int32_t cpp_float_total_digits10 = mp_elem_number * mp_elem_digits10; + +private: + typedef enum enum_fpclass { mp_finite, @@ -1641,6 +1646,20 @@ cpp_float cpp_float::extract_integer_part(void) const template std::string cpp_float::str(std::streamsize number_of_digits, std::ios_base::fmtflags f) const { + if(this->isinf()) + { + if(this->isneg()) + return "-inf"; + else if(f & std::ios_base::showpos) + return "+inf"; + else + return "inf"; + } + else if(this->isnan()) + { + return "nan"; + } + std::string str; std::streamsize org_digits(number_of_digits); boost::int64_t my_exp = order(); @@ -1799,16 +1818,38 @@ bool cpp_float::rd_string(const char* const s) // Get a possible +/- sign and remove it. neg = false; - if((pos = str.find(static_cast('-'))) != std::string::npos) + if(str.size()) { - neg = true; - str.erase(pos, static_cast(1u)); + if(str[0] == '-') + { + neg = true; + str.erase(0, 1); + } + else if(str[0] == '+') + { + str.erase(0, 1); + } + } + // + // Special cases for infinities and NaN's: + // + if((str == "inf") || (str == "INF") || (str == "infinity") || (str == "INFINITY")) + { + if(neg) + { + *this = this->inf(); + this->negate(); + } + else + *this = this->inf(); + return true; + } + if((str.size() >= 3) && ((str.substr(0, 3) == "nan") || (str.substr(0, 3) == "NAN"))) + { + *this = this->nan(); + return true; } - if((pos = str.find(static_cast('+'))) != std::string::npos) - { - str.erase(pos, static_cast(1u)); - } // Remove leading zeros for all input types. const std::string::iterator fwd_it_leading_zero = std::find_if(str.begin(), str.end(), char_is_nonzero_predicate); diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index e5d5fcc9..b6467a50 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1788,8 +1788,8 @@ public: } BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); BOOST_STATIC_CONSTEXPR int digits10 = Digits10; - // Is this really correct??? - BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; + // Have to allow for a possible extra limb inside the gmp data structure: + BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 2 + ((GMP_LIMB_BITS * 301L) / 1000L); BOOST_STATIC_CONSTEXPR bool is_signed = true; BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 9afdc01a..ea5023ef 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -168,6 +168,21 @@ struct mpfr_float_imp std::string result; mp_exp_t e; + if(mpfr_inf_p(m_data)) + { + if(mpfr_sgn(m_data) < 0) + result = "-inf"; + else if(f & std::ios_base::showpos) + result = "+inf"; + else + result = "inf"; + return result; + } + if(mpfr_nan_p(m_data)) + { + result = "nan"; + return result; + } if(mpfr_zero_p(m_data)) { e = 0; @@ -1059,7 +1074,7 @@ public: BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); BOOST_STATIC_CONSTEXPR int digits10 = Digits10; // Is this really correct??? - BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 1; + BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 2; BOOST_STATIC_CONSTEXPR bool is_signed = true; BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; diff --git a/test/test.hpp b/test/test.hpp index b4d21e1c..de2224f5 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -63,7 +63,7 @@ inline T epsilon_of(const T&) template inline int digits_of(const T&) { - return std::numeric_limits::is_specialized ? std::numeric_limits::digits10 + 2 : std::numeric_limits::digits10 + 2; + return std::numeric_limits::is_specialized ? std::numeric_limits::max_digits10 + 2 : std::numeric_limits::max_digits10 + 2; } inline std::ostream& report_where(const char* file, int line, const char* function) diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 944c1721..bd512991 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -33,7 +33,9 @@ #include #endif -#include +#include +#include +#include "test.hpp" #include #include #include @@ -160,6 +162,85 @@ void test() } } } + + if(std::numeric_limits::has_infinity) + { + T val = std::numeric_limits::infinity(); + BOOST_CHECK_EQUAL(val.str(), "inf"); + BOOST_CHECK_EQUAL(val.str(0, std::ios_base::showpos), "+inf"); + val = -val; + BOOST_CHECK_EQUAL(val.str(), "-inf"); + BOOST_CHECK_EQUAL(val.str(0, std::ios_base::showpos), "-inf"); + + val = "inf"; + BOOST_CHECK_EQUAL(val, std::numeric_limits::infinity()); + val = "+inf"; + BOOST_CHECK_EQUAL(val, std::numeric_limits::infinity()); + val = "-inf"; + BOOST_CHECK_EQUAL(val, -std::numeric_limits::infinity()); + } + if(std::numeric_limits::has_quiet_NaN) + { + T val = std::numeric_limits::quiet_NaN(); + BOOST_CHECK_EQUAL(val.str(), "nan"); + val = "nan"; + BOOST_CHECK(boost::math::isnan(val)); + } +} + +template +T generate_random() +{ + static boost::random::mt19937 gen; + T val = gen(); + T prev_val = -1; + while(val != prev_val) + { + val *= (gen.max)(); + prev_val = val; + val += gen(); + } + int e; + val = frexp(val, &e); + + typedef typename T::backend_type::exponent_type e_type; + static boost::random::uniform_int_distribution ui(0, std::numeric_limits::max_exponent - 10); + return ldexp(val, ui(gen)); +} + +template +void do_round_trip(const T& val, std::ios_base::fmtflags f) +{ + std::stringstream ss; + ss << std::setprecision(std::numeric_limits::max_digits10); + ss.flags(f); + ss << val; + T new_val = ss.str(); + BOOST_CHECK_EQUAL(new_val, val); + new_val = val.str(0, f); + BOOST_CHECK_EQUAL(new_val, val); +} + +template +void do_round_trip(const T& val) +{ + do_round_trip(val, std::ios_base::fmtflags(0)); + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::scientific)); + if((fabs(val) > 1) && (fabs(val) < 1e100)) + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::fixed)); +} + +template +void test_round_trip() +{ + for(unsigned i = 0; i < 1000; ++i) + { + T val = generate_random(); + do_round_trip(val); + do_round_trip(T(-val)); + do_round_trip(T(1/val)); + do_round_trip(T(-1/val)); + } } int main() @@ -167,14 +248,29 @@ int main() #ifdef TEST_MPFR_50 test(); test(); + + test_round_trip(); + test_round_trip(); #endif #ifdef TEST_CPP_FLOAT test(); test(); + + /* + // cpp_float has extra guard digits that messes this up: + test_round_trip(); + test_round_trip(); + */ #endif #ifdef TEST_MPF_50 test(); test(); + /* + // I can't get this to work with mpf_t - mpf_str appears + // not to actually print enough decimal digits: + test_round_trip(); + test_round_trip(); + */ #endif return boost::report_errors(); } From 4a9845ac7e87e42d16026e759616efd9513e8a2f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 28 Nov 2011 19:24:20 +0000 Subject: [PATCH 076/256] Fix and test integer formatted output. [SVN r75716] --- include/boost/multiprecision/gmp.hpp | 5 + include/boost/multiprecision/tommath.hpp | 70 +++++++------- test/Jamfile.v2 | 15 +++ test/test.hpp | 2 +- test/test_int_io.cpp | 112 +++++++++++++++++++++++ 5 files changed, 171 insertions(+), 33 deletions(-) create mode 100644 test/test_int_io.cpp diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index b6467a50..4e678fd1 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1034,6 +1034,11 @@ struct gmp_int base = 8; else if((f & std::ios_base::hex) == std::ios_base::hex) base = 16; + // + // sanity check, bases 8 and 16 are only available for positive numbers: + // + if((base != 10) && (mpz_sgn(m_data) < 0)) + BOOST_THROW_EXCEPTION(std::runtime_error("Formatted output in bases 8 or 16 is only available for positive numbers")); void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); void (*free_func_ptr) (void *, size_t); diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index f55c485e..b0b9067e 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -42,11 +42,11 @@ struct tommath_int } tommath_int(const tommath_int& o) { - detail::check_tommath_result(mp_init_copy(&m_data, const_cast<::mp_int*>(&o.m_data))); + detail::check_tommath_result(mp_init_copy(&m_data, const_cast< ::mp_int*>(&o.m_data))); } tommath_int& operator = (const tommath_int& o) { - detail::check_tommath_result(mp_copy(const_cast<::mp_int*>(&o.m_data), &m_data)); + detail::check_tommath_result(mp_copy(const_cast< ::mp_int*>(&o.m_data), &m_data)); return *this; } tommath_int& operator = (boost::uintmax_t i) @@ -162,10 +162,11 @@ struct tommath_int { radix = 8; n -= 1; + s += 1; } } if(n) - detail::check_tommath_result(mp_read_radix(&m_data, s, 10)); + detail::check_tommath_result(mp_read_radix(&m_data, s, radix)); else detail::check_tommath_result(mp_set_int(&m_data, 0)); return *this; @@ -177,10 +178,15 @@ struct tommath_int base = 8; else if((f & std::ios_base::hex) == std::ios_base::hex) base = 16; + // + // sanity check, bases 8 and 16 are only available for positive numbers: + // + if((base != 10) && m_data.sign) + BOOST_THROW_EXCEPTION(std::runtime_error("Formatted output in bases 8 or 16 is only available for positive numbers")); int s; - detail::check_tommath_result(mp_radix_size(const_cast<::mp_int*>(&m_data), 10, &s)); + detail::check_tommath_result(mp_radix_size(const_cast< ::mp_int*>(&m_data), base, &s)); boost::scoped_array a(new char[s+1]); - detail::check_tommath_result(mp_toradix_n(const_cast<::mp_int*>(&m_data), a.get(), base, s+1)); + detail::check_tommath_result(mp_toradix_n(const_cast< ::mp_int*>(&m_data), a.get(), base, s+1)); std::string result = a.get(); if((base != 10) && (f & std::ios_base::showbase)) { @@ -202,7 +208,7 @@ struct tommath_int } int compare(const tommath_int& o)const { - return mp_cmp(const_cast<::mp_int*>(&m_data), const_cast<::mp_int*>(&o.m_data)); + return mp_cmp(const_cast< ::mp_int*>(&m_data), const_cast< ::mp_int*>(&o.m_data)); } template int compare(V v)const @@ -227,30 +233,30 @@ int get_sign(const tommath_int& val); inline void add(tommath_int& t, const tommath_int& o) { - detail::check_tommath_result(mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); } inline void subtract(tommath_int& t, const tommath_int& o) { - detail::check_tommath_result(mp_sub(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_sub(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); } inline void multiply(tommath_int& t, const tommath_int& o) { - detail::check_tommath_result(mp_mul(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_mul(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); } inline void divide(tommath_int& t, const tommath_int& o) { tommath_int temp; - detail::check_tommath_result(mp_div(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data(), &temp.data())); + detail::check_tommath_result(mp_div(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data(), &temp.data())); } inline void modulus(tommath_int& t, const tommath_int& o) { bool neg = get_sign(t) < 0; bool neg2 = get_sign(o) < 0; - detail::check_tommath_result(mp_mod(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_mod(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); if(neg != neg2) { t.negate(); - detail::check_tommath_result(mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); t.negate(); } } @@ -268,73 +274,73 @@ inline void right_shift(tommath_int& t, UI i) template inline void left_shift(tommath_int& t, const tommath_int& v, UI i) { - detail::check_tommath_result(mp_mul_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data())); + detail::check_tommath_result(mp_mul_2d(const_cast< ::mp_int*>(&v.data()), static_cast(i), &t.data())); } template inline void right_shift(tommath_int& t, const tommath_int& v, UI i) { tommath_int d; - detail::check_tommath_result(mp_div_2d(const_cast<::mp_int*>(&v.data()), static_cast(i), &t.data(), &d.data())); + detail::check_tommath_result(mp_div_2d(const_cast< ::mp_int*>(&v.data()), static_cast(i), &t.data(), &d.data())); } inline void bitwise_and(tommath_int& result, const tommath_int& v) { - detail::check_tommath_result(mp_and(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data())); + detail::check_tommath_result(mp_and(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_or(tommath_int& result, const tommath_int& v) { - detail::check_tommath_result(mp_or(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data())); + detail::check_tommath_result(mp_or(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_xor(tommath_int& result, const tommath_int& v) { - detail::check_tommath_result(mp_xor(&result.data(), const_cast<::mp_int*>(&v.data()), &result.data())); + detail::check_tommath_result(mp_xor(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void add(tommath_int& t, const tommath_int& p, const tommath_int& o) { - detail::check_tommath_result(mp_add(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_add(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); } inline void subtract(tommath_int& t, const tommath_int& p, const tommath_int& o) { - detail::check_tommath_result(mp_sub(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_sub(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); } inline void multiply(tommath_int& t, const tommath_int& p, const tommath_int& o) { - detail::check_tommath_result(mp_mul(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_mul(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); } inline void divide(tommath_int& t, const tommath_int& p, const tommath_int& o) { tommath_int d; - detail::check_tommath_result(mp_div(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data(), &d.data())); + detail::check_tommath_result(mp_div(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data(), &d.data())); } inline void modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) { bool neg = get_sign(p) < 0; bool neg2 = get_sign(o) < 0; - detail::check_tommath_result(mp_mod(const_cast<::mp_int*>(&p.data()), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_mod(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); if(neg != neg2) { t.negate(); - detail::check_tommath_result(mp_add(&t.data(), const_cast<::mp_int*>(&o.data()), &t.data())); + detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); t.negate(); } } inline void bitwise_and(tommath_int& result, const tommath_int& u, const tommath_int& v) { - detail::check_tommath_result(mp_and(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data())); + detail::check_tommath_result(mp_and(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_or(tommath_int& result, const tommath_int& u, const tommath_int& v) { - detail::check_tommath_result(mp_or(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data())); + detail::check_tommath_result(mp_or(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_xor(tommath_int& result, const tommath_int& u, const tommath_int& v) { - detail::check_tommath_result(mp_xor(const_cast<::mp_int*>(&u.data()), const_cast<::mp_int*>(&v.data()), &result.data())); + detail::check_tommath_result(mp_xor(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void complement(tommath_int& result, const tommath_int& u) @@ -351,7 +357,7 @@ inline void complement(tommath_int& result, const tommath_int& u) // unsigned shift = result.data().used * DIGIT_BIT; // How many bits we're actually using // How many bits we actually need, reduced by one to account for a mythical sign bit: - unsigned padding = result.data().used * std::numeric_limits::digits - shift - 1; + int padding = result.data().used * std::numeric_limits::digits - shift - 1; while(padding >= std::numeric_limits::digits) padding -= std::numeric_limits::digits; @@ -373,23 +379,23 @@ inline int get_sign(const tommath_int& val) template inline void convert_to(A* result, const tommath_int& val) { - *result = boost::lexical_cast(val.str(0, false)); + *result = boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0))); } inline void convert_to(char* result, const tommath_int& val) { - *result = static_cast(boost::lexical_cast(val.str(0, false))); + *result = static_cast(boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0)))); } inline void convert_to(unsigned char* result, const tommath_int& val) { - *result = static_cast(boost::lexical_cast(val.str(0, false))); + *result = static_cast(boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0)))); } inline void convert_to(signed char* result, const tommath_int& val) { - *result = static_cast(boost::lexical_cast(val.str(0, false))); + *result = static_cast(boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0)))); } inline void eval_abs(tommath_int& result, const tommath_int& val) { - detail::check_tommath_result(mp_abs(const_cast<::mp_int*>(&val.data()), &result.data())); + detail::check_tommath_result(mp_abs(const_cast< ::mp_int*>(&val.data()), &result.data())); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index d707576b..3a2c300e 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -607,3 +607,18 @@ run test_float_io.cpp mpfr gmp [ check-target-builds ../config//has_mpfr : : no ] : test_float_io_mpfr ; +run test_int_io.cpp $(TOMMATH) + : # command line + : # input files + : # requirements + TEST_TOMMATH + [ check-target-builds ../config//has_tommath : : no ] + : test_int_io_tommath ; + +run test_int_io.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPZ + [ check-target-builds ../config//has_gmp : : no ] + : test_int_io_mpz ; diff --git a/test/test.hpp b/test/test.hpp index de2224f5..b4d21e1c 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -63,7 +63,7 @@ inline T epsilon_of(const T&) template inline int digits_of(const T&) { - return std::numeric_limits::is_specialized ? std::numeric_limits::max_digits10 + 2 : std::numeric_limits::max_digits10 + 2; + return std::numeric_limits::is_specialized ? std::numeric_limits::digits10 + 2 : std::numeric_limits::digits10 + 2; } inline std::ostream& report_where(const char* file, int line, const char* function) diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp new file mode 100644 index 00000000..35963444 --- /dev/null +++ b/test/test_int_io.cpp @@ -0,0 +1,112 @@ +// Copyright John Maddock 2011. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) +# define TEST_TOMMATH +# define TEST_MPZ + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPZ) +#include +#endif +#if defined(TEST_TOMMATH) +#include +#endif + +#include +#include +#include +#include "test.hpp" +#include +#include + +template +T generate_random() +{ + static boost::random::uniform_int_distribution ui(0, 20); + static boost::random::mt19937 gen; + T val = gen(); + unsigned lim = ui(gen); + for(unsigned i = 0; i < lim; ++i) + { + val *= (gen.max)(); + val += gen(); + } + return val; +} + +template +void do_round_trip(const T& val, std::ios_base::fmtflags f) +{ + std::stringstream ss; + ss << std::setprecision(std::numeric_limits::max_digits10); + ss.flags(f); + ss << val; + T new_val = ss.str(); + BOOST_CHECK_EQUAL(new_val, val); + new_val = val.str(0, f); + BOOST_CHECK_EQUAL(new_val, val); +} + +template +void do_round_trip(const T& val) +{ + do_round_trip(val, std::ios_base::fmtflags(0)); + if(val >= 0) + { + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::showbase|std::ios_base::hex)); + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::showbase|std::ios_base::oct)); + } +} + +template +void test_round_trip() +{ + for(unsigned i = 0; i < 1000; ++i) + { + T val = generate_random(); + do_round_trip(val); + do_round_trip(T(-val)); + } + + BOOST_CHECK_EQUAL(T(1002).str(), "1002"); + BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::showpos), "+1002"); + BOOST_CHECK_EQUAL(T(-1002).str(), "-1002"); + BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::oct), "1752"); + BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::oct|std::ios_base::showbase), "01752"); + BOOST_CHECK_EQUAL(boost::to_lower_copy(T(1002).str(0, std::ios_base::hex)), "3ea"); + BOOST_CHECK_EQUAL(boost::to_lower_copy(T(1002).str(0, std::ios_base::hex|std::ios_base::showbase)), "0x3ea"); + BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::dec), "1002"); + BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::dec|std::ios_base::showbase), "1002"); + + BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::oct), std::runtime_error); + BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::hex), std::runtime_error); +} + +int main() +{ +#ifdef TEST_MPZ + test_round_trip(); +#endif +#ifdef TEST_TOMMATH + test_round_trip(); +#endif + return boost::report_errors(); +} + From d76492ddaa2e11551593057bf842655e653b6549 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 29 Nov 2011 12:27:40 +0000 Subject: [PATCH 077/256] Suppress some GCC warnings. [SVN r75723] --- include/boost/multiprecision/cpp_float.hpp | 2 +- test/test_acos.cpp | 1 - test/test_cos.cpp | 2 -- test/test_sin.cpp | 2 -- 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index c432a13f..01af3e30 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1218,7 +1218,7 @@ cpp_float& cpp_float::calculate_sqrt(void) static const boost::uint32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; - for(boost::uint32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= 2u) + for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= 2u) { // Adjust precision of the terms. precision(digits * 2); diff --git a/test/test_acos.cpp b/test/test_acos.cpp index 2528378e..317790ec 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -69,7 +69,6 @@ void test() {{-std::ldexp(1.0, -20), "1.57079728046921302562588198130454453120080334771863020290704515097032859824172056132832858516107615934431126321507917538" }}, {{-1, "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230665" }}, }}; - T half_pi = "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"; unsigned max_err = 0; for(unsigned k = 0; k < exact_data.size(); k++) { diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 4ea8b163..7bd0059f 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -152,8 +152,6 @@ void test() T("-5.01621542149055350065079347615664213658089623368745676779267390227688581807037821041573344917735076902116221444127518632e-1"), }}; - T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; - boost::uintmax_t max_err = 0; for(unsigned k = 0; k < data.size(); k++) { diff --git a/test/test_sin.cpp b/test/test_sin.cpp index d8747218..d5c0a850 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -152,8 +152,6 @@ T("7.976385836695348125971495748939809421552264032918126603158165073184286973614 T("8.65087179683067252708187359165577777305998628817518314353161876891989239932835217904989326717355654871984067712207255166e-1"), }}; - T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; - boost::uintmax_t max_err = 0; for(unsigned k = 0; k < data.size(); k++) { From fdcc1a5034620a2e07987680441217b6befc13e5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 30 Nov 2011 12:08:59 +0000 Subject: [PATCH 078/256] Document libtommath support, add error checking to tommath bitwise operators. [SVN r75746] --- doc/html/boost_multiprecision/intro.html | 64 ++--- .../boost_multiprecision/ref/backendconc.html | 86 ++++--- .../boost_multiprecision/ref/mp_number.html | 228 +++++++++++++----- doc/html/boost_multiprecision/tut/ints.html | 153 +++++++++++- .../boost_multiprecision/tut/rational.html | 18 +- doc/html/boost_multiprecision/tut/reals.html | 52 ++-- doc/html/index.html | 4 +- doc/multiprecision.qbk | 151 ++++++++++-- include/boost/multiprecision/tommath.hpp | 24 +- test/Jamfile.v2 | 36 +-- test/test_arithmetic.cpp | 26 +- 11 files changed, 637 insertions(+), 205 deletions(-) diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 6a2d9aaf..04fc3f7e 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -20,15 +20,22 @@ Introduction

- The Multiprecision library comes in two distinct parts: an expression-template-enabled - front end mp_number that handles - all the operator overloading, expression evaluation optimization, and code - reduction, and a selection of backends that implement the actual arithmetic - operations, and need conform only to the reduced interface requirements of - the front end. + The Multiprecision library comes in two distinct parts:

+
    +
  • + An expression-template-enabled front end mp_number + that handles all the operator overloading, expression evaluation optimization, + and code reduction. +
  • +
  • + A selection of backends that implement the actual arithmetic operations, + and need conform only to the reduced interface requirements of the front + end. +
  • +

- The library is often used by using one of the predfined typedefs: for example + The library is often used by using one of the predefined typedefs: for example if you wanted an arbitrary precision integer type using GMP as the underlying implementation then you could use:

@@ -37,10 +44,11 @@ boost::multiprecision::mpz_int myint; // Arbitrary precision integer type.

- Alternatively one can compose your own multiprecision type, by combining mp_number with one of the predefined backend - types. For example, suppose you wanted a 300 decimal digit floating point type - based on the MPFR library, in this case there's no predefined typedef with - that level of precision, so instead we compose our own: + Alternatively, you can compose your own multiprecision type, by combining + mp_number with one of the predefined + backend types. For example, suppose you wanted a 300 decimal digit floating-point + type based on the MPFR library. In this case, there's no predefined typedef + with that level of precision, so instead we compose our own:

#include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
 
@@ -50,9 +58,9 @@
 
 my_float a, b, c; // These variables have 300 decimal digits precision
 
-
- - Expression +
+ + Expression Templates

@@ -95,15 +103,15 @@

If type T is an mp_number, then this expression is evaluated - without creating a single temporary value, in contrast + without creating a single temporary value. In contrast, if we were using the C++ wrapper that ships with GMP - mpf_class - then this expression would result in no less than 11 temporaries (this is - true even though mpf_class does use expression templates to reduce the number - of temporaries somewhat). Had we used an even simpler wrapper around GMP or - MPFR like mpclass things would - have been even worse and no less that 24 temporaries are created for this simple - expression (note - we actually measure the number of memory allocations performed - rather than the number of temporaries directly). + true even though mpf_class + does use expression templates to reduce the number of temporaries somewhat). + Had we used an even simpler wrapper around GMP or MPFR like mpclass + things would have been even worse and no less that 24 temporaries are created + for this simple expression (note - we actually measure the number of memory + allocations performed rather than the number of temporaries directly).

This library also extends expression template support to standard library functions @@ -138,11 +146,11 @@ their downsides. For one thing, expression template libraries like this one, tend to be slower to compile than their simpler cousins, they're also harder to debug (should you actually want to step through our code!), and rely on - compiler optimizations being turned on to give really good performance. Also + compiler optimizations being turned on to give really good performance. Also, since the return type from expressions involving mp_number's is an "unmentionable implementation detail", you have to be careful to cast the result of an expression to the actual number type when passing - an expression to a template function. For example given: + an expression to a template function. For example, given:

template <class T>
 void my_proc(const T&);
@@ -160,7 +168,7 @@
 

Having said that, these situations don't occur that often - or indeed not at - all for non-template functions. In addition all the functions in the Boost.Math + all for non-template functions. In addition, all the functions in the Boost.Math library will automatically convert expression-template arguments to the underlying number type without you having to do anything, so:

@@ -179,12 +187,12 @@
auto my_expression = a + b - c;
 

- Unless you're absolutely sure that the lifetimes of a, + unless you're absolutely sure that the lifetimes of a, b and c will outlive that of my_expression.

- And finally.... the performance improvements from an expression template library + And finally... the performance improvements from an expression template library like this are often not as dramatic as the reduction in number of temporaries would suggest. For example if we compare this library with mpfr_class and mpreal, with all three @@ -272,7 +280,7 @@

- As you can see the execution time increases a lot more slowly than the number + As you can see, the execution time increases a lot more slowly than the number of memory allocations. There are a number of reasons for this:

    @@ -296,7 +304,7 @@

    We'll conclude this section by providing some more performance comparisons between these three libraries, again, all are using MPFR to carry out the underlying - arithmetic, and all are operating at the same precision (50 decimal places): + arithmetic, and all are operating at the same precision (50 decimal digits):

    Table 1.2. Evaluation of Boost.Math's Bessel function test data

    diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index 765eb817..99d7d865 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -21,7 +21,7 @@

    The requirements on the Backend template argument to mp_number - are split up into compulsary requirements, and optional requirements that + are split up into compulsory requirements, and optional requirements that are either to improve performance or provide optional features.

    @@ -33,13 +33,13 @@ is a variable of type const char*, ui is a variable of type unsigned, bb is a variable of type bool, pa is a variable of type - pointer-to-arithmetc-type, exp + pointer-to-arithmetic-type, exp is a variable of type B::exp_type, pexp is a variable of type B::exp_type*.

    -

    Table 1.4. Compulsary Requirements on the Backend type.

    -
    +

    Table 1.4. Compulsory Requirements on the Backend type.

    +
    @@ -114,7 +114,7 @@ @@ -591,7 +591,7 @@ and *pexp such that the value of cb is b * 2*pexp, only required when B - is a floating point type. + is a floating-point type.

    @@ -612,7 +612,7 @@

    Stores a value in b that is cb * 2exp, only required when B - is a floating point type. + is a floating-point type.

    @@ -632,8 +632,8 @@

    Stores the floor of cb in b, only required - when B is a floating - point type. + when B is a floating-point + type.

    @@ -653,8 +653,8 @@

    Stores the ceiling of cb in b, only required - when B is a floating - point type. + when B is a floating-point + type.

    @@ -674,8 +674,30 @@

    Stores the square root of cb in b, only required - when B is a floating - point type. + when B is a floating-point + type. +

    + + + + + + @@ -1618,7 +1640,7 @@

    Returns one of the same values returned by std::fpclassify. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1640,7 +1662,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1663,7 +1685,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1685,7 +1707,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1707,7 +1729,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1729,7 +1751,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1751,7 +1773,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1773,7 +1795,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1795,7 +1817,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1817,7 +1839,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1839,7 +1861,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1861,7 +1883,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1883,7 +1905,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1905,7 +1927,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1927,7 +1949,7 @@ on argument cb and stores the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1951,7 +1973,7 @@ and cb2, and store the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1975,7 +1997,7 @@ and cb2, and store the result in b. Only required when B - is an floating point type. + is an floating-point type.

    @@ -1999,7 +2021,7 @@ and cb2, and store the result in b. Only required when B - is an floating point type. + is an floating-point type.

    diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index 613feeaa..727527eb 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -19,9 +19,9 @@ -
    - - Synopsis +
    + + Synopsis
    namespace boost{ namespace multiprecision{
     
    @@ -32,7 +32,22 @@
        mp_number(see-below);
        mp_number& operator=(see-below);
     
    -   /* Other number-type operators here */
    +   // Member operators
    +   mp_number& operator+=(const see-below&);
    +   mp_number& operator-=(const see-below&);
    +   mp_number& operator*=(const see-below&);
    +   mp_number& operator/=(const see-below&);
    +   mp_number& operator++();
    +   mp_number& operator--();
    +   mp_number  operator++(int);
    +   mp_number  operator--(int);
    +
    +   mp_number& operator%=(const see-below&);
    +   mp_number& operator&=(const see-below&);
    +   mp_number& operator|=(const see-below&);
    +   mp_number& operator^=(const see-below&);
    +   mp_number& operator<<=(const integer-type&);
    +   mp_number& operator>>=(const integer-type&);
     
        // Use in Boolean context:
        operator convertible-to-bool-type()const;
    @@ -60,6 +75,26 @@
        const Backend& backend()const;
     };
     
    +// Non member operators:
    +unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    +// Integer only operations:
    +unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    +unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    +// Comparison operators:
    +bool operator==(const see-below&, const see-below&);
    +bool operator!=(const see-below&, const see-below&);
    +bool operator< (const see-below&, const see-below&);
    +bool operator> (const see-below&, const see-below&);
    +bool operator<=(const see-below&, const see-below&);
    +bool operator>=(const see-below&, const see-below&);
    +
     // Swap:
     template <class Backend>
     void swap(mp_number<Backend>& a, mp_number<Backend>& b);
    @@ -128,9 +163,9 @@
     
     }
     
    -
    - - Description +
    + + Description
    mp_number();
     mp_number(see-below);
    @@ -158,41 +193,43 @@
                 Any type that the Backend is constructible or assignable from.
               
     
    -
    /* Other number-type operators here */
    +
    mp_number& operator+=(const see-below&);
    +mp_number& operator-=(const see-below&);
    +mp_number& operator*=(const see-below&);
    +mp_number& operator/=(const see-below&);
    +mp_number& operator++();
    +mp_number& operator--();
    +mp_number  operator++(int);
    +mp_number  operator--(int);
    +// Integer only operations:
    +mp_number& operator%=(const see-below&);
    +mp_number& operator&=(const see-below&);
    +mp_number& operator|=(const see-below&);
    +mp_number& operator^=(const see-below&);
    +mp_number& operator<<=(const integer-type&);
    +mp_number& operator>>=(const integer-type&);
     

    - The following arithmetic operations are support for real-numbered types: + These operators all take their usual arithmetic meanings. +

    +

    + The arguments to these operators is either:

    • - Binary +, -, *, /, +, -, *, /, - ==, !, <, >, <, >, ||, &&, - ||, &&=. + Another mp_number<Backend>.
    • - Unary +, -, ++, --, !. + A builtin arithmetic type. +
    • +
    • + An expression template derived from mp_number<Backend>.

    - For integer types the following operators are also supported: -

    -

    - Binary %, %, |, |, &, &, ^, ^, - <<, <<, >>, >>. -

    -

    - Note that with the exception of the logical operators and unary + the result - of applying an operator to mp_number is an "unmentionable" expression - template type. -

    -

    - Binary operators, must have at least one argument that is of type mp_number or an expression template derived - from mp_number. One argument - may optionally be of arithmetic type. -

    -

    - Note that type mp_number - (and all expression templates derived from it) may be used in a Boolian context. + For the left and right shift operations, the argument must be a builtin integer + type with a positive value (negative values result in a std::runtime_error + being thrown).

    operator convertible-to-bool-type()const;
     
    @@ -203,6 +240,12 @@ or as an argument to a logical operator - without type mp_number being convertible to type bool.

    +

    + This operator also enables the use of mp_number + with any of the following operators: !, + ||, && + and ?:. +

    void swap(mp_number& other);
     

    @@ -257,24 +300,80 @@

    • - A value less that 0 for *this < other + A value less that 0 for *this < other
    • - A value greater that 0 for *this > other + A value greater that 0 for *this > other
    • - Zero for *this == other + Zero for *this + == other
    Backend& backend();
     const Backend& backend()const;
     

    - Returns the underlying backend instance used by *this. + Returns the underlying backend instance used by *this.

    -
    - - swap +
    + + Non-member + operators +
    +
    // Non member operators:
    +unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    +// Integer only operations:
    +unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    +unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    +// Comparison operators:
    +bool operator==(const see-below&, const see-below&);
    +bool operator!=(const see-below&, const see-below&);
    +bool operator< (const see-below&, const see-below&);
    +bool operator> (const see-below&, const see-below&);
    +bool operator<=(const see-below&, const see-below&);
    +bool operator>=(const see-below&, const see-below&);
    +
    +

    + These operators all take their usual arithmetic meanings. +

    +

    + The arguments to these functions must contain at least one of the following: +

    +
      +
    • + An mp_number. +
    • +
    • + An expression template type derived from mp_number. +
    • +
    +

    + In addition, one of the two arguments may be a builtin arithmetic type. +

    +

    + With the exception of the comparison operators (which always evaluate their + arguments and return a bool + result), these operators return an "unmentionable" expression template + type which defers evaluation of the operator until the result is actually + required. +

    +

    + Finally note that the second argument to the left and right shift operations + must be a builtin integer type, and that the argument must be positive (negative + arguments result in a std::runtime_error + being thrown). +

    +
    + + swap
    template <class Backend>
     void swap(mp_number<Backend>& a, mp_number<Backend>& b);
    @@ -282,9 +381,9 @@
     

    Swaps a and b.

    -
    - - Iostream +
    + + Iostream Support
    template <class Backend>
    @@ -298,9 +397,14 @@
             These operators provided formatted input-output operations on mp_number types, and expression templates
             derived from them.
           

    -
    - - Non-member +

    + It's down to the backend type to actually implement string conversion. However, + the backends provided with this library support all of the iostream formatting + flags, field width and precision settings. +

    +
    + + Non-member standard library function support
    unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    @@ -351,30 +455,34 @@
           

    Also note that with the exception of abs - that these functions can only be used with floating point Backend types. + that these functions can only be used with floating-point Backend types.

    -
    - - Boost.Math - Interoperabilty Support +
    + + Boost.Math + Interoperability Support
    namespace boost{ namespace math{
     
    -int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
    -bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
    -bool                                             isnan          (const mp_number-or-expression-template-type&, int);
    -bool                                             isinf          (const mp_number-or-expression-template-type&, int);
    -bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
    +int  fpclassify     (const mp_number-or-expression-template-type&, int);
    +bool isfinite       (const mp_number-or-expression-template-type&, int);
    +bool isnan          (const mp_number-or-expression-template-type&, int);
    +bool isinf          (const mp_number-or-expression-template-type&, int);
    +bool isnormal       (const mp_number-or-expression-template-type&, int);
     
     }} // namespaces
     

    - These functions behave exacts as their Boost.Math equivalents. Other Boost.Math - functions and templates may also be specialized or overloaded to ensure interoperability. + These floating-point classification functions behave exactly as their Boost.Math + equivalents.

    -
    - - std::numeric_limits +

    + Other Boost.Math functions and templates may also be specialized or overloaded + to ensure interoperability. +

    +
    + + std::numeric_limits support
    namespace std{
    diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html
    index bccd2e4f..814eac46 100644
    --- a/doc/html/boost_multiprecision/tut/ints.html
    +++ b/doc/html/boost_multiprecision/tut/ints.html
    @@ -63,7 +63,8 @@
                     

    -
    + + - + + + + + + + + + +

    - A list of floating point types that can be assigned to type B.The + A list of floating-point types that can be assigned to type B.The types shall be listed in order of size, smallest first, and shall terminate in type long double.

    @@ -234,7 +234,7 @@

    - Swaps the contents of it's arguments. + Swaps the contents of its arguments.

    +

    + boost::multiprecision::number_category<B>::type +

    +
    +

    + mpl::int_<N> +

    +
    +

    + N is one of the + values number_kind_integer, + number_kind_floating_point, + number_kind_rational + or number_kind_fixed_point. + Defaults to number_kind_floating_point.

    gmp_int @@ -94,11 +95,44 @@ Dependency on GNU licenced GMP library.

    +

    + mp_int +

    +
    +

    + boost/multiprecision/tommath.hpp +

    +
    +

    + 2 +

    +
    +

    + libtommath +

    +
    +

    + Public domain backend with no licence restrictions. +

    +
    +

    + Slower than GMP. +

    +
    -
    - - gmp_int +
    + + gmp_int
    namespace boost{ namespace multiprecision{
     
    @@ -118,7 +152,7 @@
     

    As well as the usual conversions from arithmetic and string types, type mpz_int is copy constructible - and asignable from: + and assignable from:

    • @@ -132,14 +166,26 @@

    It's also possible to access the underlying mpz_t - via the data() member function of gmp_int. + via the data() + member function of gmp_int.

    -
    - - Example: +
    + + + + + +
    [Note]Note

    + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this type + when the argument is negative and either of the flags std::ios_base::oct + or std::ios_base::hex are set, will result in a std::runtime_error will be thrown. +

    +
    + + Example:

    -

    #include <boost/multiprecision/gmp.hpp>
     
    @@ -157,6 +203,91 @@
     mpz_t z;
     mpz_init(z);
     mpz_set(z, v.backend().data());
    +
    +

    +

    +
    + + mp_int +
    +
    namespace boost{ namespace multiprecision{
    +
    +class tommath_int;
    +
    +typedef mp_number<tommath_int >         mp_int;
    +
    +}} // namespaces
    +
    +

    + The tommath_int backend is + used via the typedef boost::multiprecision::mp_int. + It acts as a thin wrapper around the libtommath mp_int + to provide an integer type that is a drop-in replacement for the native C++ + integer types, but with unlimited precision. +

    +
    + + + + + +
    [Caution]Caution

    + Although mp_int is mostly + a drop in replacement for the builtin integer types, it should be noted + that it is a rather strange beast as it's a signed type that is not a 2's + complement type. As a result the bitwise operations | + & ^ + will throw a std::runtime_error exception if either of + the arguments is negative. Similarly the complement operator~ is deliberately not implemented for this + type. +

    +
    + + + + + +
    [Note]Note

    + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this type + when the argument is negative and either of the flags std::ios_base::oct + or std::ios_base::hex are set, will result in a std::runtime_error will be thrown. +

    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/tommath.hpp>
    +
    +boost::multiprecision::mp_int v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 1000!
    +std::cout << std::hex << v << std::endl; // prints 1000! in hex format
    +
    +try{
    +   std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +
    +try{
    +   // v is not a 2's complement type, bitwise operations are only supported
    +   // on positive values:
    +   v = -v & 2;
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +
     

    diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 4f5308d5..957ea0ee 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -96,9 +96,9 @@
    -
    - - gmp_rational +
    + + gmp_rational
    namespace boost{ namespace multiprecision{
     
    @@ -136,18 +136,18 @@
     mpz_int denominator(const mpq_rational&);
     

    - Which return the numerator and denominator of the number. + which return the numerator and denominator of the number.

    It's also possible to access the underlying mpq_t - via the data() member function of mpq_rational. + via the data() + member function of mpq_rational.

    -
    - - Example: +
    + + Example:

    -

    #include <boost/multiprecision/gmp.hpp>
     
    diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html
    index a5df3c35..429cf67d 100644
    --- a/doc/html/boost_multiprecision/tut/reals.html
    +++ b/doc/html/boost_multiprecision/tut/reals.html
    @@ -119,7 +119,7 @@
                   
     
                     

    - Very fast and efficient backend, with it's own standard library + Very fast and efficient backend, with its own standard library implementation.

    @@ -152,7 +152,7 @@

    - Header only, all C++ implementation. + Header only, all C++ implementation. Boost licence.

    @@ -163,9 +163,9 @@
    -
    - - gmp_float +
    + + gmp_float
    namespace boost{ namespace multiprecision{
     
    @@ -182,8 +182,8 @@
     

    The gmp_float backend is - used in conjunction with mp_number: - It acts as a thin wrapper around the GMP mpf_t + used in conjunction with mp_number + : it acts as a thin wrapper around the GMP mpf_t to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision.

    @@ -226,14 +226,15 @@

It's also possible to access the underlying mpf_t - via the data() member function of gmp_float. + via the data() + member function of gmp_float.

-
- - GMP example: +
+ + GMP + example:

-

#include <boost/multiprecision/gmp.hpp>
 
@@ -257,9 +258,9 @@
 

-
- - mpfr_float +
+ + mpfr_float
namespace boost{ namespace multiprecision{
 
@@ -324,12 +325,12 @@
         It's also possible to access the underlying mpf_t
         via the data() member function of gmp_float.
       

-
- - MPFR example: +
+ + MPFR + example:

-

#include <boost/multiprecision/mpfr.hpp>
 
@@ -353,9 +354,9 @@
 

-
- - cpp_float +
+ + cpp_float
namespace boost{ namespace multiprecision{
 
@@ -384,13 +385,12 @@
         There is full standard library and numeric_limits
         support available for this type.
       

-
- - cpp_float +
+ + cpp_float example:

-

#include <boost/multiprecision/cpp_float.hpp>
 
diff --git a/doc/html/index.html b/doc/html/index.html
index 2f877f6c..78af59a2 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -20,7 +20,7 @@
 
-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -45,7 +45,7 @@
- +

Last revised: July 08, 2011 at 18:51:46 +0100

Last revised: November 29, 2011 at 19:27:45 GMT


diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 48117bfd..e29dd22b 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -21,6 +21,7 @@ [import ../example/gmp_snips.cpp] [import ../example/mpfr_snips.cpp] [import ../example/cpp_float_snips.cpp] +[import ../example/tommath_snips.cpp] [section:intro Introduction] @@ -199,6 +200,7 @@ The following backends provide integer arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_int`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +[[`mp_int`][boost/multiprecision/tommath.hpp][2][libtommath][Public domain backend with no licence restrictions.][Slower than GMP.]] ] [h4 gmp_int] @@ -221,10 +223,40 @@ As well as the usual conversions from arithmetic and string types, type `mpz_int It's also possible to access the underlying `mpz_t` via the `data()` member function of `gmp_int`. +[note Formatted IO for this type does not support octal or hexadecimal notation for negative values, +as a result performing formatted output on this type when the argument is negative and either of the flags +`std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown.] + [h5 Example:] [mpz_eg] +[h4 mp_int] + + namespace boost{ namespace multiprecision{ + + class tommath_int; + + typedef mp_number mp_int; + + }} // namespaces + +The `tommath_int` backend is used via the typedef `boost::multiprecision::mp_int`. It acts as a thin wrapper around the libtommath `mp_int` +to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. + +[caution Although `mp_int` is mostly a drop in replacement for the builtin integer types, it should be noted that it is a +rather strange beast as it's a signed type that is not a 2's complement type. As a result the bitwise operations +`| & ^` will throw a `std::runtime_error` exception if either of the arguments is negative. Similarly the complement +operator`~` is deliberately not implemented for this type.] + +[note Formatted IO for this type does not support octal or hexadecimal notation for negative values, +as a result performing formatted output on this type when the argument is negative and either of the flags +`std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown.] + +[h5 Example:] + +[tommath_eg] + [endsect] [section:reals Real Numbers] @@ -405,7 +437,22 @@ It's also possible to access the underlying `mpq_t` via the `data()` member func mp_number(see-below); mp_number& operator=(see-below); - /* Other number-type operators here */ + // Member operators + mp_number& operator+=(const ``['see-below]``&); + mp_number& operator-=(const ``['see-below]``&); + mp_number& operator*=(const ``['see-below]``&); + mp_number& operator/=(const ``['see-below]``&); + mp_number& operator++(); + mp_number& operator--(); + mp_number operator++(int); + mp_number operator--(int); + + mp_number& operator%=(const ``['see-below]``&); + mp_number& operator&=(const ``['see-below]``&); + mp_number& operator|=(const ``['see-below]``&); + mp_number& operator^=(const ``['see-below]``&); + mp_number& operator<<=(const ``['integer-type]``&); + mp_number& operator>>=(const ``['integer-type]``&); // Use in Boolean context: operator ``['convertible-to-bool-type]``()const; @@ -433,6 +480,26 @@ It's also possible to access the underlying `mpq_t` via the `data()` member func const Backend& backend()const; }; + // Non member operators: + ``['unmentionable-expression-template-type]`` operator+(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator-(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator*(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator/(const ``['see-below]``&, const ``['see-below]``&); + // Integer only operations: + ``['unmentionable-expression-template-type]`` operator%(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator&(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator|(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator^(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator<<(const ``['see-below]``&, const ``['integer-type]``&); + ``['unmentionable-expression-template-type]`` operator>>(const ``['see-below]``&, const ``['integer-type]``&); + // Comparison operators: + bool operator==(const ``['see-below]``&, const ``['see-below]``&); + bool operator!=(const ``['see-below]``&, const ``['see-below]``&); + bool operator< (const ``['see-below]``&, const ``['see-below]``&); + bool operator> (const ``['see-below]``&, const ``['see-below]``&); + bool operator<=(const ``['see-below]``&, const ``['see-below]``&); + bool operator>=(const ``['see-below]``&, const ``['see-below]``&); + // Swap: template void swap(mp_number& a, mp_number& b); @@ -515,24 +582,32 @@ Type `mp_number` is default constructible, and both copy constructible and assig * A `std::string` or any type which is convertible to `const char*`. * Any type that the Backend is constructible or assignable from. - /* Other number-type operators here */ + mp_number& operator+=(const ``['see-below]``&); + mp_number& operator-=(const ``['see-below]``&); + mp_number& operator*=(const ``['see-below]``&); + mp_number& operator/=(const ``['see-below]``&); + mp_number& operator++(); + mp_number& operator--(); + mp_number operator++(int); + mp_number operator--(int); + // Integer only operations: + mp_number& operator%=(const ``['see-below]``&); + mp_number& operator&=(const ``['see-below]``&); + mp_number& operator|=(const ``['see-below]``&); + mp_number& operator^=(const ``['see-below]``&); + mp_number& operator<<=(const ``['integer-type]``&); + mp_number& operator>>=(const ``['integer-type]``&); -The following arithmetic operations are support for real-numbered types: +These operators all take their usual arithmetic meanings. -* Binary +, -, *, /, +=, -=, *=, /=, ==, !=, <=, >=, <, >, ||, &&, ||=, &&=. -* Unary +, -, ++, --, !. +The arguments to these operators is either: -For integer types the following operators are also supported: +* Another `mp_number`. +* A builtin arithmetic type. +* An expression template derived from `mp_number`. -Binary %, %=, |, |=, &, &=, ^, ^=, <<, <<=, >>, >>=. - -Note that with the exception of the logical operators and unary + the result of applying an operator to -mp_number is an "unmentionable" expression template type. - -Binary operators, must have at least one argument that is of type `mp_number` or an expression template -derived from `mp_number`. One argument may optionally be of arithmetic type. - -Note that type `mp_number` (and all expression templates derived from it) may be used in a Boolean context. +For the left and right shift operations, the argument must be a builtin +integer type with a positive value (negative values result in a `std::runtime_error` being thrown). operator ``['convertible-to-bool-type]``()const; @@ -540,6 +615,9 @@ Returns an ['unmentionable-type] that is usable in Boolean contexts (this allows Boolean context - if statements, conditional statements, or as an argument to a logical operator - without type `mp_number` being convertible to type `bool`. +This operator also enables the use of `mp_number` with any of the following operators: +`!`, `||`, `&&` and `?:`. + void swap(mp_number& other); Swaps `*this` with `other`. @@ -588,6 +666,44 @@ Returns: Returns the underlying backend instance used by `*this`. +[h4 Non-member operators] + + // Non member operators: + ``['unmentionable-expression-template-type]`` operator+(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator-(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator*(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator/(const ``['see-below]``&, const ``['see-below]``&); + // Integer only operations: + ``['unmentionable-expression-template-type]`` operator%(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator&(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator|(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator^(const ``['see-below]``&, const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator<<(const ``['see-below]``&, const ``['integer-type]``&); + ``['unmentionable-expression-template-type]`` operator>>(const ``['see-below]``&, const ``['integer-type]``&); + // Comparison operators: + bool operator==(const ``['see-below]``&, const ``['see-below]``&); + bool operator!=(const ``['see-below]``&, const ``['see-below]``&); + bool operator< (const ``['see-below]``&, const ``['see-below]``&); + bool operator> (const ``['see-below]``&, const ``['see-below]``&); + bool operator<=(const ``['see-below]``&, const ``['see-below]``&); + bool operator>=(const ``['see-below]``&, const ``['see-below]``&); + +These operators all take their usual arithmetic meanings. + +The arguments to these functions must contain at least one of the following: + +* An `mp_number`. +* An expression template type derived from `mp_number`. + +In addition, one of the two arguments may be a builtin arithmetic type. + +With the exception of the comparison operators (which always evaluate their arguments and return a `bool` result), +these operators return an "unmentionable" expression template type which defers evaluation of the operator +until the result is actually required. + +Finally note that the second argument to the left and right shift operations must be a builtin integer type, +and that the argument must be positive (negative arguments result in a `std::runtime_error` being thrown). + [h4 swap] template @@ -606,6 +722,9 @@ Swaps `a` and `b`. These operators provided formatted input-output operations on `mp_number` types, and expression templates derived from them. +It's down to the backend type to actually implement string conversion. However, the backends provided with +this library support all of the iostream formatting flags, field width and precision settings. + [h4 Non-member standard library function support] ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); @@ -743,6 +862,8 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia [[`eval_floor(b, cb)`][`void`][Stores the floor of `cb` in `b`, only required when `B` is a floating-point type.]] [[`eval_ceil(b, cb)`][`void`][Stores the ceiling of `cb` in `b`, only required when `B` is a floating-point type.]] [[`eval_sqrt(b, cb)`][`void`][Stores the square root of `cb` in `b`, only required when `B` is a floating-point type.]] +[[`boost::multiprecision::number_category::type`][`mpl::int_`][`N` is one of the values `number_kind_integer`, `number_kind_floating_point`, `number_kind_rational` or `number_kind_fixed_point`. + Defaults to `number_kind_floating_point`.]] ] [table Optional Requirements on the Backend Type diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index b0b9067e..bd3ba689 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -229,6 +229,10 @@ protected: mp_int m_data; }; +#define BOOST_MP_TOMMATH_BIT_OP_CHECK(x)\ + if(SIGN(&x.data()))\ + BOOST_THROW_EXCEPTION(std::runtime_error("Bitwise operations on libtommath negative valued integers are disabled as they produce unpredictable results")) + int get_sign(const tommath_int& val); inline void add(tommath_int& t, const tommath_int& o) @@ -285,16 +289,22 @@ inline void right_shift(tommath_int& t, const tommath_int& v, UI i) inline void bitwise_and(tommath_int& result, const tommath_int& v) { + BOOST_MP_TOMMATH_BIT_OP_CHECK(result); + BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_and(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_or(tommath_int& result, const tommath_int& v) { + BOOST_MP_TOMMATH_BIT_OP_CHECK(result); + BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_or(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_xor(tommath_int& result, const tommath_int& v) { + BOOST_MP_TOMMATH_BIT_OP_CHECK(result); + BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_xor(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } @@ -330,21 +340,31 @@ inline void modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) inline void bitwise_and(tommath_int& result, const tommath_int& u, const tommath_int& v) { + BOOST_MP_TOMMATH_BIT_OP_CHECK(u); + BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_and(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_or(tommath_int& result, const tommath_int& u, const tommath_int& v) { + BOOST_MP_TOMMATH_BIT_OP_CHECK(u); + BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_or(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } inline void bitwise_xor(tommath_int& result, const tommath_int& u, const tommath_int& v) { + BOOST_MP_TOMMATH_BIT_OP_CHECK(u); + BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_xor(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } - +/* inline void complement(tommath_int& result, const tommath_int& u) { + // + // Although this code works, it doesn't really do what the user might expect.... + // and it's hard to see how it ever could. Disabled for now: + // result = u; for(int i = 0; i < result.data().used; ++i) { @@ -367,7 +387,7 @@ inline void complement(tommath_int& result, const tommath_int& u) left_shift(mask, shift); add(result, mask); } - +*/ inline bool is_zero(const tommath_int& val) { return mp_iszero(&val.data()); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3a2c300e..018e0802 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -506,20 +506,6 @@ run test_mpfr_conversions.cpp gmp mpfr : # requirements [ check-target-builds ../config//has_mpfr : : no ] ; -run ../example/gmp_snips.cpp gmp - : # command line - : # input files - : # requirements - [ check-target-builds ../config//has_gmp : : no ] ; - -run ../example/mpfr_snips.cpp mpfr - : # command line - : # input files - : # requirements - [ check-target-builds ../config//has_mpfr : : no ] ; - -run ../example/cpp_float_snips.cpp ; - run test_round.cpp : # command line : # input files @@ -622,3 +608,25 @@ run test_int_io.cpp gmp TEST_MPZ [ check-target-builds ../config//has_gmp : : no ] : test_int_io_mpz ; + +run ../example/gmp_snips.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] ; + +run ../example/mpfr_snips.cpp mpfr + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_mpfr : : no ] ; + +run ../example/cpp_float_snips.cpp ; + +run ../example/tommath_snips.cpp $(TOMMATH) + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_tommath : : no ] ; + + diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index b6ae1a92..1a7b5bc7 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -86,6 +86,24 @@ template <> struct is_twos_complement_integer : public boost::mpl::false_ {}; #endif +template +void test_complement(Real a, Real b, Real c, const boost::mpl::true_&) +{ + int i = 1020304; + int j = 56789123; + int sign_mask = ~0; + BOOST_TEST(~a == (~i & sign_mask)); + c = a & ~b; + BOOST_TEST(c == (i & (~j & sign_mask))); + c = ~(a | b); + BOOST_TEST(c == (~(i | j) & sign_mask)); +} + +template +void test_complement(Real, Real, Real, const boost::mpl::false_&) +{ +} + template void test_integer_ops(const T&){} @@ -196,7 +214,6 @@ void test_integer_ops(const boost::mpl::int_::value ? ~0 : (std::numeric_limits::max)(); a = i; b = j; c = a; @@ -219,6 +236,8 @@ void test_integer_ops(const boost::mpl::int_(a, b, c, typename is_twos_complement_integer::type()); + a = i; b = j; c = a; @@ -265,11 +284,6 @@ void test_integer_ops(const boost::mpl::int_ Date: Wed, 30 Nov 2011 12:16:52 +0000 Subject: [PATCH 079/256] Add roadmap and TODO list. [SVN r75747] --- doc/html/boost_multiprecision/map.html | 40 +++++++++++++ doc/html/boost_multiprecision/map/hist.html | 34 +++++++++++ doc/html/boost_multiprecision/map/todo.html | 57 +++++++++++++++++++ .../boost_multiprecision/ref/backendconc.html | 5 +- doc/html/index.html | 7 ++- doc/multiprecision.qbk | 19 +++++++ 6 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 doc/html/boost_multiprecision/map.html create mode 100644 doc/html/boost_multiprecision/map/hist.html create mode 100644 doc/html/boost_multiprecision/map/todo.html diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html new file mode 100644 index 00000000..0f9be0ff --- /dev/null +++ b/doc/html/boost_multiprecision/map.html @@ -0,0 +1,40 @@ + + + +Roadmap + + + + + + + + +
+
+
+PrevUpHomeNext +
+
+ + +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html new file mode 100644 index 00000000..2403eb82 --- /dev/null +++ b/doc/html/boost_multiprecision/map/hist.html @@ -0,0 +1,34 @@ + + + +History + + + + + + + + +
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html new file mode 100644 index 00000000..977961ff --- /dev/null +++ b/doc/html/boost_multiprecision/map/todo.html @@ -0,0 +1,57 @@ + + + +TODO + + + + + + + +
+
+
+PrevUpHome +
+
+

+TODO +

+

+ More a list of what could be done, rather than what + should be done (which may be a much smaller list!). +

+
    +
  • + Adapt Boost.Math special function tests for this library: will make a + very good test of arithmetic and std lib support. +
  • +
  • + Add an adapter backend for complex number types. +
  • +
  • + Add an adapter backend for rational types. +
  • +
  • + Test integer types with Boost.Rational. +
  • +
  • + Adapt libtommath code to make an all C++ fixed precision integer type. +
  • +
+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index 99d7d865..fdb54705 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -7,12 +7,13 @@ +

-PrevUpHome +PrevUpHomeNext

@@ -2040,7 +2041,7 @@
-PrevUpHome +PrevUpHomeNext
diff --git a/doc/html/index.html b/doc/html/index.html index 78af59a2..9abc8978 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -41,11 +41,16 @@
mp_number
Backend Requirements
+
Roadmap
+
+
History
+
TODO
+

- +

Last revised: November 29, 2011 at 19:27:45 GMT

Last revised: November 30, 2011 at 12:15:51 GMT


diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index e29dd22b..d074fe83 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -956,3 +956,22 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia [endsect] +[section:map Roadmap] + +[section:hist History] + +[endsect] + +[section:todo TODO] + +More a list of what ['could] be done, rather than what ['should] be done (which may be a much smaller list!). + +* Adapt Boost.Math special function tests for this library: will make a very good test of arithmetic and std lib support. +* Add an adapter backend for complex number types. +* Add an adapter backend for rational types. +* Test integer types with Boost.Rational. +* Adapt libtommath code to make an all C++ fixed precision integer type. + +[endsect] + +[endsect] \ No newline at end of file From 018ac8cd6cc486dc1c8a784f44d1eca242af7534 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 6 Dec 2011 19:03:41 +0000 Subject: [PATCH 080/256] Begin adding tests taken from Boost.Math and fix the issues they flag up. [SVN r75832] --- include/boost/multiprecision/cpp_float.hpp | 63 +++++++-- .../detail/functions/constants.hpp | 2 +- .../multiprecision/detail/functions/pow.hpp | 66 +++++++-- .../multiprecision/detail/functions/trig.hpp | 15 +- test/Jamfile.v2 | 29 ++++ test/math/log1p_expm1_test.cpp | 131 +++++++++++++++++ test/math/powm1_sqrtp1m1_test.cpp | 132 ++++++++++++++++++ test/math/test_bessel_i.cpp | 107 ++++++++++++++ test/math/test_bessel_j.cpp | 129 +++++++++++++++++ test/math/test_bessel_k.cpp | 115 +++++++++++++++ test/math/test_bessel_y.cpp | 121 ++++++++++++++++ test/math/test_beta.cpp | 128 +++++++++++++++++ test/math/test_binomial_coeff.cpp | 107 ++++++++++++++ test/math/test_carlson.cpp | 108 ++++++++++++++ test/test_atan.cpp | 2 +- test/test_cos.cpp | 15 +- test/test_cosh.cpp | 5 + test/test_numeric_limits.cpp | 29 +++- test/test_sinh.cpp | 81 +++++++++++ test/test_tanh.cpp | 2 +- 20 files changed, 1357 insertions(+), 30 deletions(-) create mode 100644 test/math/log1p_expm1_test.cpp create mode 100644 test/math/powm1_sqrtp1m1_test.cpp create mode 100644 test/math/test_bessel_i.cpp create mode 100644 test/math/test_bessel_j.cpp create mode 100644 test/math/test_bessel_k.cpp create mode 100644 test/math/test_bessel_y.cpp create mode 100644 test/math/test_beta.cpp create mode 100644 test/math/test_binomial_coeff.cpp create mode 100644 test/math/test_carlson.cpp diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 01af3e30..8c2f0411 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -42,12 +42,15 @@ public: static const boost::int32_t cpp_float_digits10 = ((cpp_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_float_digits10_setting > cpp_float_digits10_limit) ? cpp_float_digits10_limit : cpp_float_digits10_setting)); static const boost::int32_t cpp_float_digits10_extra = static_cast(((static_cast(cpp_float_digits10) * 15LL) + 50LL) / 100LL); static const boost::int32_t cpp_float_max_digits10 = static_cast(cpp_float_digits10 + ((cpp_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_float_digits10_extra))); - static const boost::int64_t cpp_float_max_exp = static_cast(+9223372036854775795LL); - static const boost::int64_t cpp_float_min_exp = static_cast(-9223372036854775795LL); - static const boost::int64_t cpp_float_max_exp10 = static_cast(+3063937869882635616LL); // Approx. [cpp_float_max_exp / log10(2)], also an even multiple of 8 - static const boost::int64_t cpp_float_min_exp10 = static_cast(-3063937869882635616LL); + static const boost::int64_t cpp_float_max_exp10 = 2776234983093287512; + static const boost::int64_t cpp_float_min_exp10 = -2776234983093287512; + static const boost::int64_t cpp_float_max_exp = (cpp_float_max_exp10 / 301LL) * 1000LL; + static const boost::int64_t cpp_float_min_exp = (cpp_float_min_exp10 / 301LL) * 1000LL; static const boost::int32_t mp_elem_digits10 = static_cast(8); + BOOST_STATIC_ASSERT(0 == cpp_float_max_exp10 % mp_elem_digits10); + BOOST_STATIC_ASSERT(cpp_float_max_exp10 == -cpp_float_min_exp10); + private: static const boost::int32_t cpp_float_digits10_num_base = static_cast((cpp_float_max_digits10 / mp_elem_digits10) + (((cpp_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); static const boost::int32_t mp_elem_number = static_cast(cpp_float_digits10_num_base + 2); @@ -740,8 +743,8 @@ cpp_float& cpp_float::operator+=(const cpp_float& return *this = zero(); } - bool overflow = exp >= cpp_float_max_exp; - if(exp == cpp_float_max_exp) + bool overflow = exp >= cpp_float_max_exp10; + if(exp == cpp_float_max_exp10) { // Check to see if we really truely have an overflow or not... if(isneg()) @@ -971,8 +974,8 @@ cpp_float& cpp_float::mul_unsigned_long_long(const unsigned data.front() = static_cast(carry); } - bool overflow = exp >= cpp_float_max_exp; - if(exp == cpp_float_max_exp) + bool overflow = exp >= cpp_float_max_exp10; + if(exp == cpp_float_max_exp10) { // Check to see if we really truely have an overflow or not... if(isneg()) @@ -2723,14 +2726,52 @@ inline void eval_frexp(cpp_float& result, const cpp_float& x if(result.isneg()) result.negate(); + if(result.iszero()) + { + *e = 0; + return; + } + long long t = result.order(); - if(std::abs(t) > (std::numeric_limits::max)() / 3) - BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is too large to be represented as a power of 2.")); - t *= 3; + if(std::abs(t) < ((std::numeric_limits::max)() / 1000)) + { + t *= 1000; + t /= 301; + } + else + { + t /= 301; + t *= 1000; + } result *= cpp_float::pow2(-t); + if(result.iszero() || result.isinf() || result.isnan()) + { + // pow2 overflowed, slip the calculation up: + result = x; + if(result.isneg()) + result.negate(); + t /= 2; + result *= cpp_float::pow2(-t); + } + + if(std::abs(result.order()) > 5) + { + // If our first estimate doesn't get close enough then try recursion until we do: + long long e2; + cpp_float r2; + eval_frexp(r2, result, &e2); + // overflow prtection: + if((t > 0) && (e2 > 0) && (t > (std::numeric_limits::max)() - e2)) + BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is too large to be represented as a power of 2.")); + if((t < 0) && (e2 < 0) && (t < (std::numeric_limits::min)() - e2)) + BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is too large to be represented as a power of 2.")); + t += e2; + result = r2; + } + while(result.compare(cpp_float::one()) >= 0) { result /= cpp_float::two(); diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index d8fc9966..dab1e2c3 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -178,7 +178,7 @@ const T& get_constant_pi() static bool b = false; if(!b) { - calc_pi(result, boost::multiprecision::detail::digits2 >::value); + calc_pi(result, boost::multiprecision::detail::digits2 >::value + 10); b = true; } diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 3883d938..91b1a084 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -544,6 +544,33 @@ inline void eval_pow(T& result, const T& x, const T& a) namespace detail{ + template + void small_sinh_series(T x, T& result) + { + typedef typename boost::multiprecision::detail::canonical::type ui_type; + bool neg = get_sign(x) < 0; + if(neg) + x.negate(); + T p(x); + T mult(x); + multiply(mult, x); + result = x; + ui_type k = 1; + + T lim(x); + eval_ldexp(lim, lim, 1 - boost::multiprecision::detail::digits2 >::value); + + do + { + multiply(p, mult); + divide(p, ++k); + divide(p, ++k); + add(result, p); + }while(p.compare(lim) >= 0); + if(neg) + result.negate(); + } + template void sinhcosh(const T& x, T* p_sinh, T* p_cosh) { @@ -571,21 +598,36 @@ namespace detail{ default: ; } + T e_px, e_mx; - T e_px; - eval_exp(e_px, x); - T e_mx; - divide(e_mx, ui_type(1), e_px); + bool small_sinh = get_sign(x) < 0 ? e_px.compare(fp_type(-0.5)) > 0 : e_px.compare(fp_type(0.5)) < 0; - if(p_sinh) - { - subtract(*p_sinh, e_px, e_mx); - divide(*p_sinh, ui_type(2)); + if(p_cosh || !small_sinh) + { + eval_exp(e_px, x); + divide(e_mx, ui_type(1), e_px); + + if(p_sinh) + { + if(small_sinh) + { + small_sinh_series(x, *p_sinh); + } + else + { + subtract(*p_sinh, e_px, e_mx); + divide(*p_sinh, ui_type(2)); + } + } + if(p_cosh) + { + add(*p_cosh, e_px, e_mx); + divide(*p_cosh, ui_type(2)); + } } - if(p_cosh) - { - add(*p_cosh, e_px, e_mx); - divide(*p_cosh, ui_type(2)); + else + { + small_sinh_series(x, *p_sinh); } } diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index d466b84c..17a7f353 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -120,6 +120,9 @@ void eval_sin(T& result, const T& x) multiply(n_pi, get_constant_pi()); subtract(xx, n_pi); + BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); + BOOST_MATH_INSTRUMENT_CODE(n_pi.str(0, std::ios_base::scientific)); + // Adjust signs if the multiple of pi is not even. if(!b_n_pi_is_even) { @@ -132,6 +135,7 @@ void eval_sin(T& result, const T& x) if(xx.compare(t) > 0) { subtract(xx, get_constant_pi(), xx); + BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); } subtract(t, xx); @@ -157,6 +161,7 @@ void eval_sin(T& result, const T& x) T t2; t2 = fp_type(1.5); hyp0F1(result, t2, t); + BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); multiply(result, xx); } else if(b_near_pi_half) @@ -166,6 +171,7 @@ void eval_sin(T& result, const T& x) T t2; t2 = fp_type(0.5); hyp0F1(result, t2, t); + BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); } else { @@ -185,6 +191,7 @@ void eval_sin(T& result, const T& x) T t2; t2 = fp_type(1.5); hyp0F1(result, t2, t); + BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); multiply(result, xx); // Convert back using multiple angle identity. @@ -243,7 +250,6 @@ void eval_cos(T& result, const T& x) if(get_sign(x) < 0) { xx.negate(); - b_negate_cos = !b_negate_cos; } T n_pi, t; @@ -252,8 +258,11 @@ void eval_cos(T& result, const T& x) { divide(t, xx, get_constant_pi()); eval_trunc(n_pi, t); + BOOST_MATH_INSTRUMENT_CODE(n_pi.str(0, std::ios_base::scientific)); multiply(t, n_pi, get_constant_pi()); + BOOST_MATH_INSTRUMENT_CODE(t.str(0, std::ios_base::scientific)); subtract(xx, t); + BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); // Adjust signs if the multiple of pi is not even. t = ui_type(2); @@ -273,6 +282,7 @@ void eval_cos(T& result, const T& x) { subtract(xx, get_constant_pi(), xx); b_negate_cos = !b_negate_cos; + BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); } const bool b_zero = get_sign(xx) == 0; @@ -297,6 +307,7 @@ void eval_cos(T& result, const T& x) divide(t, si_type(-4)); n_pi = fp_type(0.5f); hyp0F1(result, n_pi, t); + BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); } else if(b_near_pi_half) { @@ -306,6 +317,7 @@ void eval_cos(T& result, const T& x) n_pi = fp_type(1.5f); hyp0F1(result, n_pi, t); multiply(result, t2); + BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); } else { @@ -324,6 +336,7 @@ void eval_cos(T& result, const T& x) // Now with small arguments, we are ready for a series expansion. hyp0F1(result, n_pi, t); + BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); // Convert back using multiple angle identity. for(ui_type k = 0; k < n_scale; k++) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 018e0802..6269b724 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -630,3 +630,32 @@ run ../example/tommath_snips.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] ; +for local source in [ glob math/*.cpp ] +{ + run $(source) mpfr gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_mpfr : : no ] + TEST_MPFR_50 + speed + BOOST_ALL_NO_LIB + : $(source:B)_mpfr ; + run $(source) gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] + speed + TEST_MPF_50 + BOOST_ALL_NO_LIB + : $(source:B)_mpf ; + run $(source) /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static + : # command line + : # input files + : # requirements + TEST_CPP_FLOAT + BOOST_ALL_NO_LIB + speed + : $(source:B)_cpp_float ; +} diff --git a/test/math/log1p_expm1_test.cpp b/test/math/log1p_expm1_test.cpp new file mode 100644 index 00000000..0006ac18 --- /dev/null +++ b/test/math/log1p_expm1_test.cpp @@ -0,0 +1,131 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#include +#include +#include +#include + +#define SC_(x) BOOST_STRINGIZE(x) + +#include "libs/math/test/log1p_expm1_test.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the functions log1p and expm1. The accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", // test function + 8, // Max Peek error + 5); // Max mean error + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test(mp_number >(), "mp_number >"); + test(mp_number >(), "mp_number >"); + test(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test(mp_number >(), "mp_number >"); + test(mp_number >(), "mp_number >"); + test(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test(mp_number >(), "mp_number >"); + test(mp_number >(), "mp_number >"); + test(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/powm1_sqrtp1m1_test.cpp b/test/math/powm1_sqrtp1m1_test.cpp new file mode 100644 index 00000000..0e419958 --- /dev/null +++ b/test/math/powm1_sqrtp1m1_test.cpp @@ -0,0 +1,132 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#include +#include +#include +#include + +#define SC_(x) BOOST_STRINGIZE(x) + +#include "libs/math/test/powm1_sqrtp1m1_test.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the functions log1p and expm1. The accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", // test function + 15, // Max Peek error + 5); // Max mean error + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // We test two different precisions: + // 18 decimal digits triggers Boost.Math's 64-bit long double support. + // 30 decimal digits triggers Boost.Math's 128-bit long double support. + // 35 decimal digits triggers true arbitrary precision support. + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. + //test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp new file mode 100644 index 00000000..b514e24a --- /dev/null +++ b/test/math/test_bessel_i.cpp @@ -0,0 +1,107 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) + +#include "libs/math/test/test_bessel_i.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", // test function + 250, // Max Peek error + 100); // Max mean error + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. + //test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp new file mode 100644 index 00000000..c6115e33 --- /dev/null +++ b/test/math/test_bessel_j.cpp @@ -0,0 +1,129 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) + +#include "libs/math/test/test_bessel_j.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*J0.*Tricky.*", // test data group + ".*", 400000000, 400000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*J1.*Tricky.*", // test data group + ".*", 5000000, 5000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*JN.*Integer.*", // test data group + ".*", 40000, 10000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*(JN|j).*|.*Tricky.*", // test data group + ".*", 4000, 700); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 40, 20); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. + //test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp new file mode 100644 index 00000000..95d5c387 --- /dev/null +++ b/test/math/test_bessel_k.cpp @@ -0,0 +1,115 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) + +#include "libs/math/test/test_bessel_k.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp.*", // test type(s) + ".*", // test data group + ".*", 2000, 1500); // test function + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*large.*", // test data group + ".*", 80, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 50, 15); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp new file mode 100644 index 00000000..d0295a2e --- /dev/null +++ b/test/math/test_bessel_y.cpp @@ -0,0 +1,121 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) + +#include "libs/math/test/test_bessel_y.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*(Y[nv]|y).*Random.*", // test data group + ".*", 70000, 4000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*Y0.*", // test data group + ".*", 800, 400); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*Yn.*", // test data group + ".*", 1700, 600); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 80, 40); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: + //test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); + test_bessel(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp new file mode 100644 index 00000000..83849258 --- /dev/null +++ b/test/math/test_beta.cpp @@ -0,0 +1,128 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) + +#include "libs/math/test/test_beta.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp.*", // test type(s) + "Beta Function: Medium.*", // test data group + "boost::math::beta", 2200, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp.*", // test type(s) + "Beta Function: Divergent.*", // test data group + "boost::math::beta", 2200, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Beta Function: Small.*", // test data group + "boost::math::beta", 8, 5); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Beta Function: Medium.*", // test data group + "boost::math::beta", 160, 35); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Beta Function: Divergent.*", // test data group + "boost::math::beta", 30, 6); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp new file mode 100644 index 00000000..aa7f3eaa --- /dev/null +++ b/test/math/test_binomial_coeff.cpp @@ -0,0 +1,107 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) + +#include "libs/math/test/test_binomial_coeff.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp.*", // test type(s) + ".*", // test data group + ".*", 3000, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 100, 20); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: + test_binomial(mp_number >(), "mp_number >"); + test_binomial(mp_number >(), "mp_number >"); + test_binomial(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_binomial(mp_number >(), "mp_number >"); + test_binomial(mp_number >(), "mp_number >"); + test_binomial(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_binomial(mp_number >(), "mp_number >"); + test_binomial(mp_number >(), "mp_number >"); + test_binomial(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp new file mode 100644 index 00000000..fce96091 --- /dev/null +++ b/test/math/test_carlson.cpp @@ -0,0 +1,108 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_carlson.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*RJ.*", // test data group + ".*", 2700, 250); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 40, 20); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/test_atan.cpp b/test/test_atan.cpp index afa589d6..2c0bf6ee 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -224,7 +224,7 @@ void test() } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 70); + BOOST_TEST(max_err < 2000); } diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 7bd0059f..1ce8baaa 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -236,6 +236,11 @@ void test() unsigned err = e.template convert_to(); if(err > max_err) max_err = err; + val = cos(-half_pi + (euler_gamma + k) / 523); + e = relative_error(val, near_one[k]); + err = e.template convert_to(); + if(err > max_err) + max_err = err; } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 500); @@ -244,7 +249,7 @@ void test() // Test with some exact binary values as input - this tests our code // rather than the test data: // - static const boost::array, 7> exact_data = + static const boost::array, 8> exact_data = {{ {{ 0.5, "0.877582561890372716116281582603829651991645197109744052997610868315950763274213947405794184084682258355478400593109053993" }}, {{ 0.25, "0.968912421710644784144595449494189199804134190287442831148128124288942561184523327264655202799685025510352709626116202617" }}, @@ -252,7 +257,8 @@ void test() {{std::ldexp(1.0, -20), "0.99999999999954525264911357034690133684385823577463126432241468890539365027135494672267164697779879113636143901797362388" }}, {{ 2, "-0.416146836547142386997568229500762189766000771075544890755149973781964936124079169074531777860169140367366791365215728559" }}, {{ 5, "0.283662185463226264466639171513557308334422592252215944930359066586151456767382702286176981668344573238827368717546699737" }}, - {{ 10, "-0.839071529076452452258863947824064834519930165133168546835953731048792586866270768400933712760422138927451054405350243624" }} + {{ 10, "-0.839071529076452452258863947824064834519930165133168546835953731048792586866270768400933712760422138927451054405350243624" }}, + {{ 8.5, "-0.60201190268482361534842652295699870029606776360435523539636606145572515876770619546025351418378467287262574566665150299" }} }}; max_err = 0; for(unsigned k = 0; k < exact_data.size(); k++) @@ -262,6 +268,11 @@ void test() unsigned err = e.template convert_to(); if(err > max_err) max_err = err; + val = cos(-exact_data[k][0]); + e = relative_error(val, exact_data[k][1]); + err = e.template convert_to(); + if(err > max_err) + max_err = err; } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 20); diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index 7100e4f7..b4dc8601 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -113,6 +113,11 @@ void test() unsigned err = e.template convert_to(); if(err > max_err) max_err = err; + val = boost::multiprecision::cosh(-x * x); + e = relative_error(val, data[k]); + err = e.template convert_to(); + if(err > max_err) + max_err = err; } std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 2000); diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 489f1047..bb8db580 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -7,7 +7,7 @@ # define _SCL_SECURE_NO_WARNINGS #endif -#include +#include "test.hpp" #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_TOMMATH) # define TEST_MPF_50 @@ -48,6 +48,25 @@ #define PRINT(x)\ std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; +template +void test_fp(const boost::mpl::int_&) +{ + Number minv, maxv; + minv = (std::numeric_limits::min)(); + maxv = (std::numeric_limits::max)(); + BOOST_CHECK(boost::math::isnormal(minv)); + BOOST_CHECK(boost::math::isnormal(maxv)); + BOOST_CHECK(boost::math::isnormal(log(minv))); + BOOST_CHECK(boost::math::isnormal(log(maxv))); + BOOST_CHECK(boost::math::isnormal(sqrt(minv))); + BOOST_CHECK(boost::math::isnormal(sqrt(maxv))); +} + +template +void test_fp(const T&) +{ +} + template void test() { @@ -140,6 +159,14 @@ void test() BOOST_TEST((boost::math::isnormal)(n)); BOOST_TEST(!(boost::math::isinf)(n)); BOOST_TEST(!(boost::math::isnan)(n)); + + typedef typename boost::mpl::if_c< + std::numeric_limits::is_specialized, + typename boost::multiprecision::number_category::type, + boost::mpl::int_<500> // not a number type + >::type fp_test_type; + + test_fp(fp_test_type()); } diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index a12ce09d..04dc679b 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -113,7 +113,88 @@ void test() unsigned err = e.template convert_to(); if(err > max_err) max_err = err; + val = boost::multiprecision::sinh(-x * x); + e = relative_error(val, T(-data[k])); + err = e.template convert_to(); + if(err > max_err) + max_err = err; } + + boost::array small_values = + {{ + "8.223167319358299807036616344469138485821440027829633696917375433348917938654659351596020080036406671343718039863220496616e-01", + "2.526123168081683079141251505420579055197542874276608074880949653019810769068593790606537020961198741487692473633089323967e-01", + "8.342981744595282037256218647969712476322487890550784823763249893556153270975172951404094950587944959561849750490537201329e-02", + "2.778135016068299789938671680845480653984976507019542653788637161116587306168290886761259072846829249121589698206609261524e-02", + "9.259391565199916442789400306996794489540862711193761818262415211084389468754315525525896238827358889826875006042447587516e-03", + "3.086424653287772358219607529932097884435043040527155440187640095572710676452654803730003577747633690318001961509535020849e-03", + "1.028806765851002064810061084014826478832745077469708149635730407866217436751337520417458090265791086156438275231514030381e-03", + "3.429355348425226988441198390119109217716503769838753365112550442738406326637684639052252898314646892490045395290022292013e-04", + "1.143118429558603374406653541544292690548937361618336125287018361332072426474632105217297150810234138626767253281422813482e-04", + "3.810394757818873406266877296641684693312194735341898368873067089928172619067423751257049691985638480762032673977695116880e-05", + "1.270131585666421832817527834137477593266387525701388601975733237436369505733715799310429349744168792375082834509467436523e-05", + "4.233771952120219947940459634636576539101577724347428305072378100562649548884420218224692461748739725090626754420296122389e-06", + "1.411257317369659013704209000288436132710449162963127340562961271337242582661013580874165903770246169179192268836124421074e-06", + "4.704191057897475365825409916786898392364235667906752767514580467152163619657508910797742266406961516358439252434955007668e-07", + "1.568063685965773714045928492719360014894368531987759414833778466374819836545157375950693756664550256136222396871173634254e-07", + "5.226878953219226673524993193392503058475862017726848548717100658392470633650387274004511940515056405069137033934323251644e-08", + "1.742292984406408185991240874995689487745140228031202510923711784729440494088066989430128101759261047316736074663327672115e-08", + "5.807643281354693692124967044009687283114597355717062156493618245876910131607338183944830908381903728560328284173507220743e-09", + "1.935881093784897887701686451485601671131342930785061493703969418728524594573922282309665275558709040519461560600768780392e-09", + "6.452936979282992955422916851920785543106383715381924626175995859924351552325880931187614903984801793287071578640505194508e-10", + "2.150978993094330985008279519046512957825521218238790792201835497215534851989750722105234826300738623838446309250309905466e-10", + "7.169929976981103283311786261663531258230547972690500493476881079295129579131280734024784107219045379345460886663104148486e-11", + "2.389976658993701094435441884684454421835327948893136184573938864819002944442339456827931472237274353903634036758669394620e-11", + "7.966588863312336981450798799860506345287566898810744342680146925029151178981033890759916168189916177504592939240995619757e-12", + "2.655529621104112327150241298135440075805848488054800577703768668100658036999584228451100239039042920681377381394421710121e-12", + "8.851765403680374423834128412864530361591097252230621965426275532533242581680245794741067906285298655116802944992368126680e-13", + "2.950588467893458141278042461784956914687338675140497707333871358819185395356569206661450997145748756956497959702280685427e-13", + "9.835294892978193804260141412430145318398649753331401112621871794012928366988233744354238387090649589382104704221708773516e-14", + "3.278431630992731268086713799445120869198593899364655036314007566906378666339665297288092596796135684816883503781385164489e-14", + "1.092810543664243756028904599641030626636532928735904320784337625844108091213506619051042206148385975354700234586478575025e-14", + "3.642701812214145853429681998738987398752764686754626492252324567456938623579239392678142797020213493844816454129960310753e-15", + "1.214233937404715284476560666243942169089106312534317920490462975351305354471020532764015606315872085933262687299655265697e-15", + "4.047446458015717614921868887478923169619805517194433471908835726595116905187672132801369948377551282604828733616045843751e-16", + "1.349148819338572538307289629159608313551890152969010184597042496758528297346351553643241208769191557898925543369605617734e-16", + "4.497162731128575127690965430532015584807024576774799020494128293451281927637267192489558050090835454302448780391749096414e-17", + "1.499054243709525042563655143510671412452985626833998379862387948592418229228808284088934491020852037924756758483008288052e-17", + "4.996847479031750141878850478368904541825005460277179305602161748681654262243578435201096986093377131577325573917436618470e-18", + "1.665615826343916713959616826122968174447164290616980189746184851537351248309665330601503343215376981550822569162631313560e-18", + "5.552052754479722379865389420409893912541965834349657578615232567585047309856390957625702896178052275806406957076143469634e-19", + "1.850684251493240793288463140136631304096139902769381795814754672989850701401641374814254071564872119933498619234778448524e-19", + "6.168947504977469310961543800455437680289164351695283493312025632359317744715643192414807145394613572397590534364339391526e-20", + "2.056315834992489770320514600151812560095228784236601072113743484455321300338926430301421880927367590178440922006775473367e-20", + "6.854386116641632567735048667172708533650333231531203539518552950777817440179277823487619201513258000884052637516041835420e-21", + "2.284795372213877522578349555724236177883428507451482660054557452824460619777642844796449091646418601791047308814504431261e-21", + "7.615984574046258408594498519080787259611422468149787192854095139994568043598766360557598146279482678180281335390895949036e-22", + "2.538661524682086136198166173026929086537140604567639372655275057673980680372673609490963070062819520295998328327889923353e-22", + "8.462205082273620453993887243423096955123801934429554813185698344472203995997708879527322555715697860578416576045982358004e-23", + "2.820735027424540151331295747807698985041267308484077168753311108116374235508697904826049959781116012127075951788533527897e-23", + "9.402450091415133837770985826025663283470891027171945709804152456669015193736201020401750153196590359525341207466344738924e-24", + "3.134150030471711279256995275341887761156963675682933328476437810109959425395050019306074135780459168092270327572635795510e-24", + }}; + + max_err = 0; + T v = 0.75; + for(unsigned k = 0; k < small_values.size(); ++k) + { + T val = boost::multiprecision::sinh(v); + T e = relative_error(val, small_values[k]); + unsigned err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + val = boost::multiprecision::sinh(-v); + e = relative_error(val, T(-small_values[k])); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + v /= 3; + } + std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 2000); } diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 96bf4574..4e5ca6c8 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -115,7 +115,7 @@ void test() max_err = err; } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 10); + BOOST_TEST(max_err < 100); } From 6e3ab5380b647855f8044ff08f77378da711d0bc Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 20 Dec 2011 16:19:55 +0000 Subject: [PATCH 081/256] Add tests for Boost.Math special functions, and fix whatever errors came up in running those tests. Add workaround for compilers that don't have a std::abs(long long). [SVN r76079] --- include/boost/multiprecision/cpp_float.hpp | 8 +- .../multiprecision/detail/mp_number_base.hpp | 11 +- include/boost/multiprecision/gmp.hpp | 9 +- include/boost/multiprecision/mpfr.hpp | 3 +- include/boost/multiprecision/tommath.hpp | 3 +- test/Jamfile.v2 | 3 + test/math/log1p_expm1_test.cpp | 18 +++ test/math/powm1_sqrtp1m1_test.cpp | 9 ++ test/math/test_bessel_i.cpp | 4 +- test/math/test_bessel_j.cpp | 2 +- test/math/test_bessel_k.cpp | 8 ++ test/math/test_bessel_y.cpp | 14 ++ test/math/test_binomial_coeff.cpp | 10 +- test/math/test_carlson.cpp | 5 - test/math/test_cbrt.cpp | 95 +++++++++++++ test/math/test_digamma.cpp | 100 ++++++++++++++ test/math/test_ellint_1.cpp | 93 +++++++++++++ test/math/test_ellint_2.cpp | 93 +++++++++++++ test/math/test_ellint_3.cpp | 107 +++++++++++++++ test/math/test_erf.cpp | 114 ++++++++++++++++ test/math/test_expint.cpp | 114 ++++++++++++++++ test/math/test_gamma.cpp | 128 ++++++++++++++++++ test/math/test_hermite.cpp | 93 +++++++++++++ test/math/test_ibeta.cpp | 117 ++++++++++++++++ test/math/test_ibeta_2.cpp | 124 +++++++++++++++++ test/math/test_ibeta_3.cpp | 110 +++++++++++++++ test/math/test_ibeta_4.cpp | 117 ++++++++++++++++ test/math/test_ibeta_inv_1.cpp | 96 +++++++++++++ test/math/test_ibeta_inv_ab_4.cpp | 96 +++++++++++++ test/math/test_igamma.cpp | 100 ++++++++++++++ test/math/test_igamma_inv.cpp | 108 +++++++++++++++ test/math/test_igamma_inva.cpp | 94 +++++++++++++ test/math/test_laguerre.cpp | 93 +++++++++++++ test/math/test_legendre.cpp | 93 +++++++++++++ test/math/test_tgamma_ratio.cpp | 100 ++++++++++++++ test/math/test_zeta.cpp | 100 ++++++++++++++ 36 files changed, 2373 insertions(+), 19 deletions(-) create mode 100644 test/math/test_cbrt.cpp create mode 100644 test/math/test_digamma.cpp create mode 100644 test/math/test_ellint_1.cpp create mode 100644 test/math/test_ellint_2.cpp create mode 100644 test/math/test_ellint_3.cpp create mode 100644 test/math/test_erf.cpp create mode 100644 test/math/test_expint.cpp create mode 100644 test/math/test_gamma.cpp create mode 100644 test/math/test_hermite.cpp create mode 100644 test/math/test_ibeta.cpp create mode 100644 test/math/test_ibeta_2.cpp create mode 100644 test/math/test_ibeta_3.cpp create mode 100644 test/math/test_ibeta_4.cpp create mode 100644 test/math/test_ibeta_inv_1.cpp create mode 100644 test/math/test_ibeta_inv_ab_4.cpp create mode 100644 test/math/test_igamma.cpp create mode 100644 test/math/test_igamma_inv.cpp create mode 100644 test/math/test_igamma_inva.cpp create mode 100644 test/math/test_laguerre.cpp create mode 100644 test/math/test_legendre.cpp create mode 100644 test/math/test_tgamma_ratio.cpp create mode 100644 test/math/test_zeta.cpp diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 8c2f0411..037672eb 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -2733,8 +2733,8 @@ inline void eval_frexp(cpp_float& result, const cpp_float& x } long long t = result.order(); - - if(std::abs(t) < ((std::numeric_limits::max)() / 1000)) + BOOST_MP_USING_ABS + if(abs(t) < ((std::numeric_limits::max)() / 1000)) { t *= 1000; t /= 301; @@ -2756,8 +2756,8 @@ inline void eval_frexp(cpp_float& result, const cpp_float& x t /= 2; result *= cpp_float::pow2(-t); } - - if(std::abs(result.order()) > 5) + BOOST_MP_USING_ABS + if(abs(result.order()) > 5) { // If our first estimate doesn't get close enough then try recursion until we do: long long e2; diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index fb2cb147..b0eb1611 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -28,6 +28,14 @@ namespace detail{ template struct mp_exp; +template +typename boost::enable_if, T>::type abs(const T& t) +{ + return t < 0 ? -t : t; +} + +#define BOOST_MP_USING_ABS using std::abs; using boost::multiprecision::detail::abs; + template struct has_enough_bits { @@ -465,11 +473,12 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: } else { + BOOST_MP_USING_ABS // Scientific format: if(showpoint || (str.size() > 1)) str.insert(1, 1, '.'); str.append(1, 'e'); - S e = boost::lexical_cast(std::abs(my_exp)); + S e = boost::lexical_cast(abs(my_exp)); if(e.size() < BOOST_MP_MIN_EXPONENT_DIGITS) e.insert(0, BOOST_MP_MIN_EXPONENT_DIGITS-e.size(), '0'); if(my_exp < 0) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 4e678fd1..5a966277 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -83,8 +83,9 @@ struct gmp_float_imp } gmp_float_imp& operator = (boost::intmax_t i) { + BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(std::abs(i)); + *this = static_cast(abs(i)); if(neg) mpf_neg(m_data, m_data); return *this; @@ -910,8 +911,9 @@ struct gmp_int } gmp_int& operator = (boost::intmax_t i) { + BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(std::abs(i)); + *this = static_cast(abs(i)); if(neg) mpz_neg(m_data, m_data); return *this; @@ -1448,8 +1450,9 @@ struct gmp_rational } gmp_rational& operator = (boost::intmax_t i) { + BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(std::abs(i)); + *this = static_cast(abs(i)); if(neg) mpq_neg(m_data, m_data); return *this; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index ea5023ef..3129171e 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -80,8 +80,9 @@ struct mpfr_float_imp } mpfr_float_imp& operator = (boost::intmax_t i) { + BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(std::abs(i)); + *this = static_cast(abs(i)); if(neg) mpfr_neg(m_data, m_data, GMP_RNDN); return *this; diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index bd3ba689..19f5a4ed 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -70,8 +70,9 @@ struct tommath_int } tommath_int& operator = (boost::intmax_t i) { + BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(std::abs(i)); + *this = static_cast(abs(i)); if(neg) detail::check_tommath_result(mp_neg(&m_data, &m_data)); return *this; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 6269b724..1f3c0ea7 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -640,6 +640,7 @@ for local source in [ glob math/*.cpp ] TEST_MPFR_50 speed BOOST_ALL_NO_LIB + msvc:-bigobj : $(source:B)_mpfr ; run $(source) gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static : # command line @@ -649,6 +650,7 @@ for local source in [ glob math/*.cpp ] speed TEST_MPF_50 BOOST_ALL_NO_LIB + msvc:-bigobj : $(source:B)_mpf ; run $(source) /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static : # command line @@ -657,5 +659,6 @@ for local source in [ glob math/*.cpp ] TEST_CPP_FLOAT BOOST_ALL_NO_LIB speed + msvc:-bigobj : $(source:B)_cpp_float ; } diff --git a/test/math/log1p_expm1_test.cpp b/test/math/log1p_expm1_test.cpp index 0006ac18..10653fc9 100644 --- a/test/math/log1p_expm1_test.cpp +++ b/test/math/log1p_expm1_test.cpp @@ -80,6 +80,24 @@ void expected_results() // // Catch all cases come last: // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + ".*", // test data group + ".*", // test function + 500, // Max Peek error + 100); // Max mean error + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", // test function + 500, // Max Peek error + 100); // Max mean error add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/powm1_sqrtp1m1_test.cpp b/test/math/powm1_sqrtp1m1_test.cpp index 0e419958..8c44e8f4 100644 --- a/test/math/powm1_sqrtp1m1_test.cpp +++ b/test/math/powm1_sqrtp1m1_test.cpp @@ -80,6 +80,15 @@ void expected_results() // // Catch all cases come last: // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", // test function + 300, // Max Peek error + 50); // Max mean error add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index b514e24a..168563e2 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -62,8 +62,8 @@ void expected_results() ".*", // test type(s) ".*", // test data group ".*", // test function - 250, // Max Peek error - 100); // Max mean error + 300, // Max Peek error + 200); // Max mean error // // Finish off by printing out the compiler/stdlib/platform names, diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index c6115e33..b2e6b936 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -65,7 +65,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*J1.*Tricky.*", // test data group - ".*", 5000000, 5000000); // test function + ".*", 10000000, 5000000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp index 95d5c387..1432a4e3 100644 --- a/test/math/test_bessel_k.cpp +++ b/test/math/test_bessel_k.cpp @@ -13,6 +13,7 @@ #endif #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) # define TEST_MPF_50 @@ -59,6 +60,13 @@ void expected_results() ".*", // test data group ".*", 2000, 1500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 3000, 1000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index d0295a2e..e224865a 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -58,6 +58,13 @@ void expected_results() ".*", // test type(s) ".*(Y[nv]|y).*Random.*", // test data group ".*", 70000, 4000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*Y0.*", // test data group + ".*", 3000, 2000); // test function add_expected_result( ".*", // compiler ".*", // stdlib @@ -72,6 +79,13 @@ void expected_results() ".*", // test type(s) ".*Yn.*", // test data group ".*", 1700, 600); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 10000, 4000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index aa7f3eaa..6272d647 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -57,7 +57,14 @@ void expected_results() ".*", // platform ".*gmp.*", // test type(s) ".*", // test data group - ".*", 3000, 200); // test function + ".*", 3000, 1500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 500, 100); // test function add_expected_result( ".*", // compiler ".*", // stdlib @@ -105,3 +112,4 @@ int test_main(int, char* []) + diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp index fce96091..b698bd0c 100644 --- a/test/math/test_carlson.cpp +++ b/test/math/test_carlson.cpp @@ -1,12 +1,7 @@ /////////////////////////////////////////////////////////////// -// Copyright Christopher Kormanyos 2002 - 2011. // Copyright 2011 John Maddock. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ -// -// This work is based on an earlier work: -// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", -// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 #ifdef _MSC_VER # define _SCL_SECURE_NO_WARNINGS diff --git a/test/math/test_cbrt.cpp b/test/math/test_cbrt.cpp new file mode 100644 index 00000000..5c3b6906 --- /dev/null +++ b/test/math/test_cbrt.cpp @@ -0,0 +1,95 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_cbrt.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 5, 3); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(mp_number >(), "mp_number >"); +#endif + return 0; +} + + + diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp new file mode 100644 index 00000000..1098ae6e --- /dev/null +++ b/test/math/test_digamma.cpp @@ -0,0 +1,100 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_digamma.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*Negative.*", // test data group + ".*", 350, 40); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 80, 30); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_digamma(mp_number >(), "mp_number >"); + test_digamma(mp_number >(), "mp_number >"); + test_digamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_digamma(mp_number >(), "mp_number >"); + test_digamma(mp_number >(), "mp_number >"); + test_digamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_digamma(mp_number >(), "mp_number >"); + test_digamma(mp_number >(), "mp_number >"); + test_digamma(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp new file mode 100644 index 00000000..a9b88450 --- /dev/null +++ b/test/math/test_ellint_1.cpp @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_ellint_1.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 40, 20); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp new file mode 100644 index 00000000..4accc451 --- /dev/null +++ b/test/math/test_ellint_2.cpp @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_ellint_2.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 60, 30); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp new file mode 100644 index 00000000..880d4743 --- /dev/null +++ b/test/math/test_ellint_3.cpp @@ -0,0 +1,107 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_ellint_3.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + ".*", // test data group + ".*", 3000, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*Large.*", // test data group + ".*", 75, 40); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 60, 30); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); + test_spots(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp new file mode 100644 index 00000000..f056d2bd --- /dev/null +++ b/test/math/test_erf.cpp @@ -0,0 +1,114 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_erf.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + "Erf Function:.*", // test data group + "boost::math::erfc?", 2200, 1500);// test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + "Inverse Erf.*", // test data group + "boost::math::erfc?_inv", 2200, 1500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Erf Function:.*", // test data group + "boost::math::erfc?", 300, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Inverse Erf.*", // test data group + "boost::math::erfc?_inv", 35, 20); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_erf(mp_number >(), "mp_number >"); + test_erf(mp_number >(), "mp_number >"); + test_erf(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_erf(mp_number >(), "mp_number >"); + test_erf(mp_number >(), "mp_number >"); + test_erf(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_erf(mp_number >(), "mp_number >"); + test_erf(mp_number >(), "mp_number >"); + test_erf(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_expint.cpp b/test/math/test_expint.cpp new file mode 100644 index 00000000..4f19cb0c --- /dev/null +++ b/test/math/test_expint.cpp @@ -0,0 +1,114 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_expint.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + ".*", // test data group + ".*", 2500, 1500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 1000, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float.*", // test type(s) + ".*", // test data group + ".*", 250, 100); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 250, 50); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_expint(mp_number >(), "mp_number >"); + test_expint(mp_number >(), "mp_number >"); + test_expint(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_expint(mp_number >(), "mp_number >"); + test_expint(mp_number >(), "mp_number >"); + test_expint(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_expint(mp_number >(), "mp_number >"); + test_expint(mp_number >(), "mp_number >"); + test_expint(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp new file mode 100644 index 00000000..9e6528e5 --- /dev/null +++ b/test/math/test_gamma.cpp @@ -0,0 +1,128 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_gamma.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + ".*", // test data group + "boost::math::tgamma", 4000, 2500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "factorials", // test data group + "boost::math::tgamma", 70, 25); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "factorials", // test data group + "boost::math::lgamma", 80, 40); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "near.*", // test data group + "boost::math::tgamma", 80, 60); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "near.*", // test data group + "boost::math::lgamma", 10000000, 10000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "tgamma1pm1.*", // test data group + "boost::math::tgamma1pm1", 1000, 150); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_hermite.cpp b/test/math/test_hermite.cpp new file mode 100644 index 00000000..bd776eb4 --- /dev/null +++ b/test/math/test_hermite.cpp @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_hermite.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + "boost::math::hermite", 10, 5); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_hermite(mp_number >(), "mp_number >"); + test_hermite(mp_number >(), "mp_number >"); + test_hermite(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_hermite(mp_number >(), "mp_number >"); + test_hermite(mp_number >(), "mp_number >"); + test_hermite(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_hermite(mp_number >(), "mp_number >"); + test_hermite(mp_number >(), "mp_number >"); + test_hermite(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp new file mode 100644 index 00000000..4cf95bb1 --- /dev/null +++ b/test/math/test_ibeta.cpp @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#define TEST_DATA 1 + +#include "libs/math/test/test_ibeta.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*gmp_float<18>.*", // test type(s) + "(?i).*small.*", // test data group + ".*", 3000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*small.*", // test data group + ".*", 90, 25); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*medium.*", // test data group + ".*", 150, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*large.*", // test data group + ".*", 5000, 500); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ibeta_2.cpp b/test/math/test_ibeta_2.cpp new file mode 100644 index 00000000..a149c837 --- /dev/null +++ b/test/math/test_ibeta_2.cpp @@ -0,0 +1,124 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#define TEST_DATA 2 + +#include "libs/math/test/test_ibeta.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*gmp_float<18>.*", // test type(s) + "(?i).*medium.*", // test data group + ".*", 4000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + "(?i).*medium.*", // test data group + ".*", 20000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*small.*", // test data group + ".*", 90, 25); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*medium.*", // test data group + ".*", 200, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*large.*", // test data group + ".*", 5000, 500); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ibeta_3.cpp b/test/math/test_ibeta_3.cpp new file mode 100644 index 00000000..6f42b026 --- /dev/null +++ b/test/math/test_ibeta_3.cpp @@ -0,0 +1,110 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#define TEST_DATA 3 + +#include "libs/math/test/test_ibeta.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*small.*", // test data group + ".*", 90, 25); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*medium.*", // test data group + ".*", 200, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*large.*", // test data group + ".*", 6000000, 500000); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ibeta_4.cpp b/test/math/test_ibeta_4.cpp new file mode 100644 index 00000000..d5c665bd --- /dev/null +++ b/test/math/test_ibeta_4.cpp @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#define TEST_DATA 4 + +#include "libs/math/test/test_ibeta.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*small.*", // test data group + ".*", 4000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*small.*", // test data group + ".*", 90, 25); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*medium.*", // test data group + ".*", 200, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*", // test type(s) + "(?i).*large.*", // test data group + ".*", 5000, 500); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp new file mode 100644 index 00000000..2b3b616d --- /dev/null +++ b/test/math/test_ibeta_inv_1.cpp @@ -0,0 +1,96 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#define TEST_DATA 4 + +#include "libs/math/test/test_ibeta_inv.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 1000000, 100000); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + //test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp new file mode 100644 index 00000000..4ff6dbca --- /dev/null +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -0,0 +1,96 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#define TEST_DATA 4 +#define FULL_TEST + +#include "libs/math/test/test_ibeta_inv_ab.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 1000, 100); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + //test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); + test_beta(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_igamma.cpp b/test/math/test_igamma.cpp new file mode 100644 index 00000000..ee60a91b --- /dev/null +++ b/test/math/test_igamma.cpp @@ -0,0 +1,100 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) + +#include "libs/math/test/test_igamma.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*large.*", // test data group + ".*", 20000000L, 1000000L); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 7000, 2000); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp new file mode 100644 index 00000000..44c5a718 --- /dev/null +++ b/test/math/test_igamma_inv.cpp @@ -0,0 +1,108 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_igamma_inv.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + ".*small.*", // test data group + ".*", 2000000000L, 300000000L); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*small.*", // test data group + ".*", 10000000L, 2000000L); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 7000, 2000); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_igamma_inva.cpp b/test/math/test_igamma_inva.cpp new file mode 100644 index 00000000..7cca029c --- /dev/null +++ b/test/math/test_igamma_inva.cpp @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_SMALL_CONSTANT(x) x + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_igamma_inva.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 7000, 2000); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); + test_gamma(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_laguerre.cpp b/test/math/test_laguerre.cpp new file mode 100644 index 00000000..da304c5d --- /dev/null +++ b/test/math/test_laguerre.cpp @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_laguerre.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 7000, 500); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp new file mode 100644 index 00000000..2c0a6787 --- /dev/null +++ b/test/math/test_legendre.cpp @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_legendre.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 5000, 500); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp new file mode 100644 index 00000000..71d45a79 --- /dev/null +++ b/test/math/test_tgamma_ratio.cpp @@ -0,0 +1,100 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_tgamma_ratio.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*gmp_float<18>.*", // test type(s) + ".*", // test data group + ".*", 4000, 2000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 1000, 200); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(mp_number >(), "mp_number >"); +#endif + return 0; +} + diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp new file mode 100644 index 00000000..b4503eb1 --- /dev/null +++ b/test/math/test_zeta.cpp @@ -0,0 +1,100 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_MPFR_50 +# define TEST_CPP_FLOAT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif + +#define SC_(x) T(BOOST_STRINGIZE(x)) +#define TEST_UDT + +#include "libs/math/test/test_zeta.hpp" + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*Random values less than 1", // test data group + ".*", 5000, 2000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 1000, 200); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +int test_main(int, char* []) +{ + using namespace boost::multiprecision; + expected_results(); + // + // Test at: + // 18 decimal digits: tests 80-bit long double approximations + // 30 decimal digits: tests 128-bit long double approximations + // 35 decimal digits: tests arbitrary precision code + // +#ifdef TEST_MPF_50 + test_zeta(mp_number >(), "mp_number >"); + test_zeta(mp_number >(), "mp_number >"); + test_zeta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_MPFR_50 + test_zeta(mp_number >(), "mp_number >"); + test_zeta(mp_number >(), "mp_number >"); + test_zeta(mp_number >(), "mp_number >"); +#endif +#ifdef TEST_CPP_FLOAT + test_zeta(mp_number >(), "mp_number >"); + test_zeta(mp_number >(), "mp_number >"); + test_zeta(mp_number >(), "mp_number >"); +#endif + return 0; +} + From 3327eb6b8b8691a70eadf46cc7e36b2109245bc6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 20 Dec 2011 16:46:54 +0000 Subject: [PATCH 082/256] Fix some MSVC warnings. [SVN r76082] --- include/boost/multiprecision/cpp_float.hpp | 6 +++--- include/boost/multiprecision/detail/mp_number_base.hpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 037672eb..84811b12 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -404,7 +404,7 @@ public: return *this -= one(); } - std::string str(std::streamsize digits, std::ios_base::fmtflags f)const; + std::string str(boost::intmax_t digits, std::ios_base::fmtflags f)const; int compare(const cpp_float& v)const; template @@ -1647,7 +1647,7 @@ cpp_float cpp_float::extract_integer_part(void) const } template -std::string cpp_float::str(std::streamsize number_of_digits, std::ios_base::fmtflags f) const +std::string cpp_float::str(boost::intmax_t number_of_digits, std::ios_base::fmtflags f) const { if(this->isinf()) { @@ -1664,7 +1664,7 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ } std::string str; - std::streamsize org_digits(number_of_digits); + boost::intmax_t org_digits(number_of_digits); boost::int64_t my_exp = order(); if(number_of_digits == 0) number_of_digits = cpp_float_max_digits10; diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index b0eb1611..781f8f71 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -363,7 +363,7 @@ struct digits2 #endif template -void format_float_string(S& str, long long my_exp, std::streamsize digits, std::ios_base::fmtflags f, bool iszero) +void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, std::ios_base::fmtflags f, bool iszero) { typedef typename S::size_type size_type; bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; @@ -427,7 +427,7 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: // // Pad out the end with zero's if we need to: // - std::streamsize chars = str.size(); + boost::intmax_t chars = str.size(); chars = digits - chars; if(scientific) ++chars; @@ -465,7 +465,7 @@ void format_float_string(S& str, long long my_exp, std::streamsize digits, std:: if(fixed) { // We may need to add trailing zeros: - std::streamsize l = str.find('.') + 1; + boost::intmax_t l = str.find('.') + 1; l = digits - (str.size() - l); if(l > 0) str.append(size_type(l), '0'); From ebe14443af47cca1fb3ac3db36d8bb367af092b3 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 22 Dec 2011 11:52:51 +0000 Subject: [PATCH 083/256] Update TODO list. [SVN r76103] --- doc/html/boost_multiprecision/map/todo.html | 3 +-- doc/html/index.html | 2 +- doc/multiprecision.qbk | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 977961ff..7d07e878 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -24,8 +24,7 @@

  • - Adapt Boost.Math special function tests for this library: will make a - very good test of arithmetic and std lib support. + Add backend support for libdecNumber.
  • Add an adapter backend for complex number types. diff --git a/doc/html/index.html b/doc/html/index.html index 9abc8978..a404ace7 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -50,7 +50,7 @@
- +

Last revised: November 30, 2011 at 12:15:51 GMT

Last revised: December 22, 2011 at 11:51:46 GMT


diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index d074fe83..5e717788 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -966,7 +966,7 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia More a list of what ['could] be done, rather than what ['should] be done (which may be a much smaller list!). -* Adapt Boost.Math special function tests for this library: will make a very good test of arithmetic and std lib support. +* Add backend support for libdecNumber. * Add an adapter backend for complex number types. * Add an adapter backend for rational types. * Test integer types with Boost.Rational. From a2dc3b968cf9c344520a7d3a07f126d6644bcd7c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 23 Dec 2011 17:13:29 +0000 Subject: [PATCH 084/256] Fix remaining Boost.Rational support issues and add rational number IO test. [SVN r76121] --- include/boost/multiprecision/mp_number.hpp | 42 +++- test/Jamfile.v2 | 228 ++++++++++++--------- test/test_arithmetic.cpp | 49 ++++- test/test_float_io.cpp | 2 +- test/test_rational_io.cpp | 131 ++++++++++++ 5 files changed, 350 insertions(+), 102 deletions(-) create mode 100644 test/test_rational_io.cpp diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 71aa1fc6..2d638b2c 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1571,6 +1571,46 @@ inline void swap(mp_number& a, mp_number& b) a.swap(b); } -}} // namespaces +} // namespace multipreciion + +template +class rational; + +template +inline std::istream& operator >> (std::istream& is, rational >& r) +{ + std::string s1; + multiprecision::mp_number v1, v2; + char c; + bool have_hex = false; + + while((EOF != (c = is.peek())) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) + { + if(c == 'x' || c == 'X') + have_hex = true; + s1.append(1, c); + is.get(); + } + v1 = s1; + s1.erase(); + if(c == '/') + { + is.get(); + while((EOF != (c = is.peek())) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) + { + if(c == 'x' || c == 'X') + have_hex = true; + s1.append(1, c); + is.get(); + } + v2 = s1; + } + else + v2 = 1; + r.assign(v1, v2); + return is; +} + +} // namespaces #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1f3c0ea7..0c36ed4a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -25,6 +25,10 @@ project : requirements msvc:static ; +local disable-specfun = [ MATCH (--disable-specfun) : [ modules.peek : ARGV ] ] ; +local disable-concepts = [ MATCH (--disable-concepts) : [ modules.peek : ARGV ] ] ; + + lib gmp ; lib mpfr ; @@ -76,6 +80,14 @@ run test_arithmetic.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_arithmetic_mpz ; +run test_arithmetic.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPZ_BOOST_RATIONAL + [ check-target-builds ../config//has_gmp : : no ] + : test_arithmetic_mpz_br ; + run test_arithmetic.cpp gmp : # command line : # input files @@ -108,6 +120,14 @@ run test_arithmetic.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] : test_arithmetic_tommath ; +run test_arithmetic.cpp $(TOMMATH) + : # command line + : # input files + : # requirements + TEST_TOMMATH_BOOST_RATIONAL + [ check-target-builds ../config//has_tommath : : no ] + : test_arithmetic_tommath_br ; + run test_numeric_limits.cpp : # command line : # input files @@ -179,68 +199,6 @@ run test_numeric_limits.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] : test_numeric_limits_tommath ; -run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_50 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_50 ; - -run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_6 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_6 ; - -run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_15 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_15 ; - -run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_17 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_17 ; - -run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_30 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_30 ; - -run mp_number_concept_check.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPF_50 - [ check-target-builds ../config//has_gmp : : no ] - : mp_number_concept_check_mpf50 ; - -run mp_number_concept_check.cpp - : # command line - : # input files - : # requirements - TEST_CPP_FLOAT - : mp_number_concept_check_cpp_float ; - -run mp_number_concept_check.cpp - : # command line - : # input files - : # requirements - TEST_BACKEND - : mp_number_concept_check_backend_concept ; - run test_exp.cpp gmp : # command line : # input files @@ -609,6 +567,22 @@ run test_int_io.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_int_io_mpz ; +run test_rational_io.cpp $(TOMMATH) + : # command line + : # input files + : # requirements + TEST_TOMMATH + [ check-target-builds ../config//has_tommath : : no ] + : test_rational_io_tommath ; + +run test_rational_io.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPQ + [ check-target-builds ../config//has_gmp : : no ] + : test_rational_io_mpz ; + run ../example/gmp_snips.cpp gmp : # command line : # input files @@ -630,35 +604,105 @@ run ../example/tommath_snips.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] ; -for local source in [ glob math/*.cpp ] +if ! $(disable-specfun) { - run $(source) mpfr gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static - : # command line - : # input files - : # requirements - [ check-target-builds ../config//has_mpfr : : no ] - TEST_MPFR_50 - speed - BOOST_ALL_NO_LIB - msvc:-bigobj - : $(source:B)_mpfr ; - run $(source) gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static - : # command line - : # input files - : # requirements - [ check-target-builds ../config//has_gmp : : no ] - speed - TEST_MPF_50 - BOOST_ALL_NO_LIB - msvc:-bigobj - : $(source:B)_mpf ; - run $(source) /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static - : # command line - : # input files - : # requirements - TEST_CPP_FLOAT - BOOST_ALL_NO_LIB - speed - msvc:-bigobj - : $(source:B)_cpp_float ; + + for local source in [ glob math/*.cpp ] + { + run $(source) mpfr gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_mpfr : : no ] + TEST_MPFR_50 + speed + BOOST_ALL_NO_LIB + msvc:-bigobj + : $(source:B)_mpfr ; + run $(source) gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] + speed + TEST_MPF_50 + BOOST_ALL_NO_LIB + msvc:-bigobj + : $(source:B)_mpf ; + run $(source) /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static + : # command line + : # input files + : # requirements + TEST_CPP_FLOAT + BOOST_ALL_NO_LIB + speed + msvc:-bigobj + : $(source:B)_cpp_float ; + } +} + +if ! $(disable-concepts) +{ + run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : mp_number_concept_check_mpfr_50 ; + + run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_6 + [ check-target-builds ../config//has_mpfr : : no ] + : mp_number_concept_check_mpfr_6 ; + + run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_15 + [ check-target-builds ../config//has_mpfr : : no ] + : mp_number_concept_check_mpfr_15 ; + + run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_17 + [ check-target-builds ../config//has_mpfr : : no ] + : mp_number_concept_check_mpfr_17 ; + + run mp_number_concept_check.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_30 + [ check-target-builds ../config//has_mpfr : : no ] + : mp_number_concept_check_mpfr_30 ; + + run mp_number_concept_check.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : mp_number_concept_check_mpf50 ; + + run mp_number_concept_check.cpp + : # command line + : # input files + : # requirements + TEST_CPP_FLOAT + : mp_number_concept_check_cpp_float ; + + run mp_number_concept_check.cpp + : # command line + : # input files + : # requirements + TEST_BACKEND + : mp_number_concept_check_backend_concept ; + } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 1a7b5bc7..6c5fabf1 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -10,7 +10,9 @@ #include #include -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_TOMMATH) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ + !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ + && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -30,7 +32,7 @@ #endif -#if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) +#if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) || defined(TEST_MPZ_BOOST_RATIONAL) #include #endif #ifdef TEST_BACKEND @@ -42,8 +44,27 @@ #if defined(TEST_MPFR) || defined(TEST_MPFR_50) #include #endif -#ifdef TEST_TOMMATH +#if defined(TEST_TOMMATH) || defined(TEST_TOMMATH_BOOST_RATIONAL) #include +#endif +#if defined(TEST_TOMMATH_BOOST_RATIONAL) || defined(TEST_MPZ_BOOST_RATIONAL) +#include + +#define NO_MIXED_OPS + +namespace boost{ namespace multiprecision{ + +#ifdef TEST_TOMMATH_BOOST_RATIONAL +template<> +struct number_category > : public mpl::int_ {}; +#endif +#ifdef TEST_MPZ_BOOST_RATIONAL +template<> +struct number_category > : public mpl::int_ {}; +#endif + +}} + #endif #define BOOST_TEST_THROW(x, EX)\ @@ -637,7 +658,9 @@ void test() BOOST_TEST(ac == 64 * 2); ac = a; ac = b - ac * a; +#ifndef NO_MIXED_OPS BOOST_TEST(ac == 0); +#endif ac = a; ac = b * (ac + a); BOOST_TEST(ac == 64 * (16)); @@ -655,7 +678,9 @@ void test() BOOST_TEST(ac == 8 - 64); ac = a; ac = a - ac; +#ifndef NO_MIXED_OPS BOOST_TEST(ac == 0); +#endif ac = a; ac += a + b; BOOST_TEST(ac == 80); @@ -681,7 +706,9 @@ void test() BOOST_TEST(ac == 16); ac = a; ac += -a; +#ifndef NO_MIXED_OPS BOOST_TEST(ac == 0); +#endif ac = a; ac += b - a; BOOST_TEST(ac == 8 + 64-8); @@ -691,7 +718,9 @@ void test() ac = a; ac = a; ac -= +a; +#ifndef NO_MIXED_OPS BOOST_TEST(ac == 0); +#endif ac = a; ac -= -a; BOOST_TEST(ac == 16); @@ -805,6 +834,7 @@ void test() BOOST_TEST((72 < b+a) == false); BOOST_TEST((72 >= b+a) == true); BOOST_TEST((72 > b+a) == false); +#ifndef NO_MIXED_OPS // // Test sign and zero functions, plus use in boolian context: // @@ -817,6 +847,8 @@ void test() a = 0; BOOST_TEST(a.sign() == 0); BOOST_TEST(a.is_zero()); +#endif + a = 0; if(a) { BOOST_ERROR("Unexpected non-zero result"); @@ -880,11 +912,6 @@ int main() #endif #ifdef TEST_MPF boost::multiprecision::mpf_float::default_precision(1000); - /* - boost::multiprecision::mpf_float r; - r.precision(50); - BOOST_TEST(r.precision() >= 50); - */ BOOST_TEST(boost::multiprecision::mpf_float::default_precision() == 1000); test(); #endif @@ -905,6 +932,12 @@ int main() #endif #ifdef TEST_TOMMATH test(); +#endif +#ifdef TEST_TOMMATH_BOOST_RATIONAL + test >(); +#endif +#ifdef TEST_MPZ_BOOST_RATIONAL + test >(); #endif return boost::report_errors(); } diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index bd512991..59afe975 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -50,7 +50,7 @@ bool is_mpf(const T&) { return false; } bool is_bankers_rounding_error(const std::string& s, const char* expect) { - // This check isn't foolproof: that would require *much* more sofisticated code!!! + // This check isn't foolproof: that would require *much* more sophisticated code!!! std::string::size_type l = std::strlen(expect); if(l != s.size()) return false; diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp new file mode 100644 index 00000000..66246c0f --- /dev/null +++ b/test/test_rational_io.cpp @@ -0,0 +1,131 @@ +// Copyright John Maddock 2011. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#if !defined(TEST_MPQ) && !defined(TEST_TOMMATH) +# define TEST_MPQ +# define TEST_TOMMATH + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPQ) +#include +#endif +#if defined(TEST_TOMMATH) +#include +#endif + +#include +#include +#include +#include +#include "test.hpp" +#include +#include + +template +T generate_random() +{ + static boost::random::uniform_int_distribution ui(0, 20); + static boost::random::mt19937 gen; + T val = gen(); + unsigned lim = ui(gen); + for(unsigned i = 0; i < lim; ++i) + { + val *= (gen.max)(); + val += gen(); + } + T denom = gen(); + lim = ui(gen); + for(unsigned i = 0; i < lim; ++i) + { + denom *= (gen.max)(); + denom += gen(); + } + return val / denom; +} + +template +void do_round_trip(const T& val, std::ios_base::fmtflags f, const boost::mpl::true_&) +{ + std::stringstream ss; + ss << std::setprecision(std::numeric_limits::max_digits10); + ss.flags(f); + ss << val; + T new_val = ss.str(); + BOOST_CHECK_EQUAL(new_val, val); + new_val = val.str(0, f); + BOOST_CHECK_EQUAL(new_val, val); +} + +template +void do_round_trip(const T& val, std::ios_base::fmtflags f, const boost::mpl::false_&) +{ + std::stringstream ss; + ss << std::setprecision(std::numeric_limits::max_digits10); + ss.flags(f); + ss << val; + T new_val; + ss >> new_val; + BOOST_CHECK_EQUAL(new_val, val); +} + +template +struct is_mp_number : public boost::mpl::false_{}; +template +struct is_mp_number > : public boost::mpl::true_{}; + +template +void do_round_trip(const T& val, std::ios_base::fmtflags f) +{ + do_round_trip(val, f, is_mp_number()); +} + +template +void do_round_trip(const T& val) +{ + do_round_trip(val, std::ios_base::fmtflags(0)); + if(val >= 0) + { + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::showbase|std::ios_base::hex)); + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::showbase|std::ios_base::oct)); + } +} + +template +void test_round_trip() +{ + for(unsigned i = 0; i < 1000; ++i) + { + T val = generate_random(); + do_round_trip(val); + do_round_trip(T(-val)); + } +} + +int main() +{ +#ifdef TEST_MPQ + test_round_trip(); + test_round_trip >(); +#endif +#ifdef TEST_TOMMATH + test_round_trip >(); +#endif + return boost::report_errors(); +} + From b9ea00966fbc9d61954e0d6d65adbdaf0584f011 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 24 Dec 2011 10:07:32 +0000 Subject: [PATCH 085/256] Fix modulus operations for negative numbers that should yield zero results (and update tests to match). Fix boost::rational comparison operator support. Fix GCC failures in test_rational_io.cpp. Add adapter for rational types. [SVN r76128] --- include/boost/multiprecision/gmp.hpp | 12 +- include/boost/multiprecision/mp_number.hpp | 24 +++ .../boost/multiprecision/rational_adapter.hpp | 161 ++++++++++++++++++ include/boost/multiprecision/tommath.hpp | 12 +- test/test_arithmetic.cpp | 22 ++- test/test_rational_io.cpp | 6 +- 6 files changed, 217 insertions(+), 20 deletions(-) create mode 100644 include/boost/multiprecision/rational_adapter.hpp diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 5a966277..be5c3b3d 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1114,7 +1114,7 @@ inline void modulus(gmp_int& t, const gmp_int& o) bool neg = mpz_sgn(t.data()) < 0; bool neg2 = mpz_sgn(o.data()) < 0; mpz_mod(t.data(), t.data(), o.data()); - if(neg) + if(neg && mpz_sgn(t.data()) != 0) { if(!neg2) t.negate(); @@ -1139,7 +1139,7 @@ inline void modulus(gmp_int& t, unsigned long i) { bool neg = mpz_sgn(t.data()) < 0; mpz_mod_ui(t.data(), t.data(), i); - if(neg) + if(neg && mpz_sgn(t.data()) != 0) { t.negate(); mpz_add_ui(t.data(), t.data(), i); @@ -1175,7 +1175,7 @@ inline void modulus(gmp_int& t, long i) bool neg = mpz_sgn(t.data()) < 0; bool neg2 = i < 0; mpz_mod_ui(t.data(), t.data(), std::abs(i)); - if(neg) + if(neg && mpz_sgn(t.data()) != 0) { if(!neg2) { @@ -1252,7 +1252,7 @@ inline void modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) bool neg = mpz_sgn(p.data()) < 0; bool neg2 = mpz_sgn(o.data()) < 0; mpz_mod(t.data(), p.data(), o.data()); - if(neg) + if(neg && mpz_sgn(t.data()) != 0) { if(!neg2) t.negate(); @@ -1277,7 +1277,7 @@ inline void modulus(gmp_int& t, const gmp_int& p, unsigned long i) { bool neg = mpz_sgn(p.data()) < 0; mpz_mod_ui(t.data(), p.data(), i); - if(neg) + if(neg && mpz_sgn(t.data()) != 0) { t.negate(); mpz_add_ui(t.data(), t.data(), i); @@ -1313,7 +1313,7 @@ inline void modulus(gmp_int& t, const gmp_int& p, long i) bool neg = mpz_sgn(p.data()) < 0; bool neg2 = i < 0; mpz_mod_ui(t.data(), p.data(), std::abs(i)); - if(neg) + if(neg && mpz_sgn(t.data()) != 0) { if(!neg2) { diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 2d638b2c..a04eba59 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1611,6 +1611,30 @@ inline std::istream& operator >> (std::istream& is, rational +typename enable_if, bool>::type operator == (const rational >& a, const Arithmetic& b) +{ + return a == multiprecision::mp_number(b); +} + +template +typename enable_if, bool>::type operator == (const Arithmetic& b, const rational >& a) +{ + return a == multiprecision::mp_number(b); +} + +template +typename enable_if, bool>::type operator != (const rational >& a, const Arithmetic& b) +{ + return a != multiprecision::mp_number(b); +} + +template +typename enable_if, bool>::type operator != (const Arithmetic& b, const rational >& a) +{ + return a != multiprecision::mp_number(b); +} + } // namespaces #endif diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp new file mode 100644 index 00000000..074c136e --- /dev/null +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -0,0 +1,161 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_RATIONAL_ADAPTER_HPP +#define BOOST_MATH_RATIONAL_ADAPTER_HPP + +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace multiprecision{ + +template +struct rational_adapter +{ + typedef mp_number integer_type; + typedef boost::rational rational_type; + + typedef typename IntBackend::signed_types signed_types; + typedef typename IntBackend::unsigned_types unsigned_types; + typedef typename IntBackend::float_types float_types; + + rational_adapter(){} + rational_adapter(const rational_adapter& o) + { + m_value = o.m_value; + } + rational_adapter(const IntBackend& o) : m_value(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + rational_adapter(rational_adapter&& o) : m_value(o.m_value) {} + rational_adapter(IntBackend&& o) : m_value(o) {} +#endif + rational_adapter& operator = (const rational_adapter& o) + { + m_value = o.m_value; + return *this; + } + template + typename enable_if, rational_adapter&>::type operator = (Arithmetic i) + { + m_value = i; + return *this; + } + rational_adapter& operator = (const char* s) + { + m_value = s; + return *this; + } + void swap(rational_adapter& o) + { + std::swap(m_value, o.m_value); + } + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const + { + // + // We format the string ourselves so we can match what GMP's mpq type does: + // + std::string result = data().numerator().str(digits, f); + if(data().denominator() != 1) + { + result.append(1, ','); + result.append(data().denominator().str(digits, f)); + } + return result; + } + void negate() + { + m_value = -m_value; + } + int compare(const rational_adapter& o)const + { + return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); + } + template + typename enable_if, int>::type compare(Arithmatic i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + rational_type& data() { return m_value; } + const rational_type& data()const { return m_value; } +private: + rational_type m_value; +}; + +template +inline void add(rational_adapter& result, const rational_adapter& o) +{ + result.data() += o.data(); +} +template +inline void subtract(rational_adapter& result, const rational_adapter& o) +{ + result.data() -= o.data(); +} +template +inline void multiply(rational_adapter& result, const rational_adapter& o) +{ + result.data() *= o.data(); +} +template +inline void divide(rational_adapter& result, const rational_adapter& o) +{ + result.data() /= o.data(); +} + +template +inline void convert_to(R* result, const rational_adapter& backend) +{ + *result = backend.data().numerator().template convert_to(); + *result /= backend.data().denominator().template convert_to(); +} + +template +inline bool is_zero(const rational_adapter& val) +{ + return is_zero(val.data().numerator().backend()); +} +template +inline int get_sign(const rational_adapter& val) +{ + return get_sign(val.data().numerator().backend()); +} + + +template +struct number_category > : public mpl::int_{}; + +}} // namespaces + + +namespace std{ + +template +class numeric_limits > > : public std::numeric_limits +{ + typedef std::numeric_limits base_type; + typedef boost::multiprecision::mp_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } +}; + +} + +#endif diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 19f5a4ed..fbe834cb 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -258,12 +258,16 @@ inline void modulus(tommath_int& t, const tommath_int& o) bool neg = get_sign(t) < 0; bool neg2 = get_sign(o) < 0; detail::check_tommath_result(mp_mod(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); - if(neg != neg2) + if((neg != neg2) && (get_sign(t) != 0)) { t.negate(); detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); t.negate(); } + else if(neg && (t.compare(o) == 0)) + { + mp_zero(&t.data()); + } } template inline void left_shift(tommath_int& t, UI i) @@ -331,12 +335,16 @@ inline void modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) bool neg = get_sign(p) < 0; bool neg2 = get_sign(o) < 0; detail::check_tommath_result(mp_mod(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); - if(neg != neg2) + if((neg != neg2) && (get_sign(t) != 0)) { t.negate(); detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); t.negate(); } + else if(neg && (t.compare(o) == 0)) + { + mp_zero(&t.data()); + } } inline void bitwise_and(tommath_int& result, const tommath_int& u, const tommath_int& v) diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 6c5fabf1..0419cf82 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -34,6 +34,7 @@ #if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) || defined(TEST_MPZ_BOOST_RATIONAL) #include +#include #endif #ifdef TEST_BACKEND #include @@ -46,6 +47,7 @@ #endif #if defined(TEST_TOMMATH) || defined(TEST_TOMMATH_BOOST_RATIONAL) #include +#include #endif #if defined(TEST_TOMMATH_BOOST_RATIONAL) || defined(TEST_MPZ_BOOST_RATIONAL) #include @@ -133,7 +135,7 @@ void test_integer_ops(const boost::mpl::int_(); + test > >(); #endif #ifdef TEST_MPQ test(); @@ -932,6 +935,7 @@ int main() #endif #ifdef TEST_TOMMATH test(); + test > >(); #endif #ifdef TEST_TOMMATH_BOOST_RATIONAL test >(); diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index 66246c0f..b8fcacd9 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -42,14 +42,14 @@ T generate_random() { static boost::random::uniform_int_distribution ui(0, 20); static boost::random::mt19937 gen; - T val = gen(); + T val = T(gen()); unsigned lim = ui(gen); for(unsigned i = 0; i < lim; ++i) { val *= (gen.max)(); val += gen(); } - T denom = gen(); + T denom = T(gen()); lim = ui(gen); for(unsigned i = 0; i < lim; ++i) { @@ -76,7 +76,7 @@ template void do_round_trip(const T& val, std::ios_base::fmtflags f, const boost::mpl::false_&) { std::stringstream ss; - ss << std::setprecision(std::numeric_limits::max_digits10); + ss << std::setprecision(std::numeric_limits::digits10 + 4); ss.flags(f); ss << val; T new_val; From c32e35aaced570cb553071e320753135b718d10e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 24 Dec 2011 11:59:25 +0000 Subject: [PATCH 086/256] Fix File IO and string conversion for rational_adapter, and update tests accordingly. [SVN r76129] --- .../boost/multiprecision/rational_adapter.hpp | 32 +++++++++++++++++-- test/test_rational_io.cpp | 3 ++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 074c136e..64a34de9 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -50,7 +50,35 @@ struct rational_adapter } rational_adapter& operator = (const char* s) { - m_value = s; + std::string s1; + multiprecision::mp_number v1, v2; + char c; + bool have_hex = false; + + while((0 != (c = *s)) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) + { + if(c == 'x' || c == 'X') + have_hex = true; + s1.append(1, c); + ++s; + } + v1 = s1; + s1.erase(); + if(c == '/') + { + ++s; + while((0 != (c = *s)) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) + { + if(c == 'x' || c == 'X') + have_hex = true; + s1.append(1, c); + ++s; + } + v2 = s1; + } + else + v2 = 1; + data().assign(v1, v2); return *this; } void swap(rational_adapter& o) @@ -65,7 +93,7 @@ struct rational_adapter std::string result = data().numerator().str(digits, f); if(data().denominator() != 1) { - result.append(1, ','); + result.append(1, '/'); result.append(data().denominator().str(digits, f)); } return result; diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index b8fcacd9..583b891e 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include "test.hpp" #include #include @@ -122,9 +123,11 @@ int main() #ifdef TEST_MPQ test_round_trip(); test_round_trip >(); + test_round_trip > >(); #endif #ifdef TEST_TOMMATH test_round_trip >(); + test_round_trip > >(); #endif return boost::report_errors(); } From d7578f242cf85006a0ad9e6ffffc38b2d58d23ad Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 24 Dec 2011 13:13:16 +0000 Subject: [PATCH 087/256] Add numerator/denominator accessor functions to rational_adapter.hpp. Define predefined rational number type for libtommath. Add rational number specific tests to test_arithmetic.cpp. Document rational_adapter and related stuff, regenerate docs. [SVN r76130] --- doc/html/boost_multiprecision/intro.html | 2 - doc/html/boost_multiprecision/map.html | 2 - doc/html/boost_multiprecision/map/hist.html | 2 - doc/html/boost_multiprecision/map/todo.html | 2 - doc/html/boost_multiprecision/ref.html | 2 - .../boost_multiprecision/ref/backendconc.html | 2 - .../boost_multiprecision/ref/mp_number.html | 2 - doc/html/boost_multiprecision/tut.html | 2 - doc/html/boost_multiprecision/tut/ints.html | 2 - .../boost_multiprecision/tut/rational.html | 203 +++++++++++++++++- doc/html/boost_multiprecision/tut/reals.html | 2 - doc/html/index.html | 4 +- doc/multiprecision.qbk | 59 +++++ example/tommath_snips.cpp | 70 ++++++ .../boost/multiprecision/rational_adapter.hpp | 10 + include/boost/multiprecision/tommath.hpp | 5 +- test/test_arithmetic.cpp | 12 ++ test/test_rational_io.cpp | 2 +- 18 files changed, 356 insertions(+), 29 deletions(-) create mode 100644 example/tommath_snips.cpp diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 04fc3f7e..90451449 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html index 0f9be0ff..0587898f 100644 --- a/doc/html/boost_multiprecision/map.html +++ b/doc/html/boost_multiprecision/map.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index 2403eb82..4701f08a 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 7d07e878..0f7290bb 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -9,8 +9,6 @@ -
-
PrevUpHome
diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index 5bff5c01..4634199e 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index fdb54705..c6e86a15 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index 727527eb..be7d53ba 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index d6d8a0bb..4c86cbe3 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index 814eac46..c1612d16 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 957ea0ee..8fe67803 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
@@ -63,7 +61,8 @@

- + +

gmp_rational @@ -94,7 +93,107 @@ Dependency on GNU licenced GMP library.

- + + + +

+ tommath_rational +

+ + +

+ boost/multiprecision/tommath.hpp +

+ + +

+ 2 +

+ + +

+ libtommath +

+ + +

+ All C/C++ implementation that's Boost Software Licence compatible. +

+ + +

+ Slower than GMP. +

+ + + + +

+ rational_adapter +

+ + +

+ boost/multiprecision/rational_adapter.hpp +

+ + +

+ N/A +

+ + +

+ none +

+ + +

+ All C++ adapter that allows any inetger backend type to be used + as a rational type. +

+ + +

+ Requires an underlying integer backend type. +

+ + + + +

+ boost::rational +

+ + +

+ boost/rational.hpp +

+ + +

+ N/A +

+ + +

+ None +

+ + +

+ A C++ rational number type that can used with any mp_number integer type. +

+ + +

+ The expression templates used by mp_number + end up being "hidden" inside boost::rational: + performance may well suffer as a result. +

+ + +
@@ -171,6 +270,102 @@

+
+ + tommath_rational +
+
namespace boost{ namespace multiprecision{
+
+typedef rational_adpater<tommath_int>        tommath_rational;
+typedef mp_number<tommath_rational >         mp_rational;
+
+}} // namespaces
+
+

+ The tommath_rational backend + is used via the typedef boost::multiprecision::mp_rational. + It acts as a thin wrapper around boost::rational<mp_int> to provide a rational number type that + is a drop-in replacement for the native C++ number types, but with unlimited + precision. +

+

+ The advantage of using this type rather than boost::rational<mp_int> directly, is that it is expression-template + enabled, greatly reducing the number of temporaries created in complex expressions. +

+

+ There are also non-member functions: +

+
mp_int numerator(const mp_rational&);
+mp_int denominator(const mp_rational&);
+
+

+ which return the numerator and denominator of the number. +

+
+ + Example: +
+

+

+
#include <boost/multiprecision/tommath.hpp>
+
+using namespace boost::multiprecision;
+
+mp_rational v = 1;
+
+// Do some arithmetic:
+for(unsigned i = 1; i <= 1000; ++i)
+   v *= i;
+v /= 10;
+
+std::cout << v << std::endl; // prints 1000! / 10
+std::cout << numerator(v) << std::endl;
+std::cout << denominator(v) << std::endl;
+
+
+

+

+
+ + Use With + Boost.Rational +
+

+ All of the inetger types in this library can be used as template arguments + to boost::rational<IntType>. +

+

+ Note that using the library in this way largely negates the effect of the + expression templates in mp_number. +

+
+ + rational_adapter +
+
namespace boost{ namespace multiprecision{
+
+template <class IntBackend>
+class rational_adpater;
+
+}}
+
+

+ The class template rational_adapter + is a backend for mp_number + which converts any existing integer backend into a rational-number backend. +

+

+ So for example, given an integer backend type MyIntegerBackend, + the use would be something like: +

+
typedef mp_number<MyIntegerBackend>                    MyInt;
+typedef mp_number<rational_adapter<MyIntegerBackend> > MyRational;
+
+MyRational r = 2;
+r /= 3;
+MyInt i = numerator(r);
+assert(i == 2);
+
diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html index 429cf67d..5fd1090c 100644 --- a/doc/html/boost_multiprecision/tut/reals.html +++ b/doc/html/boost_multiprecision/tut/reals.html @@ -10,8 +10,6 @@ -
-
PrevUpHomeNext
diff --git a/doc/html/index.html b/doc/html/index.html index a404ace7..67cdb54d 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -8,8 +8,6 @@ -
-
Next
@@ -50,7 +48,7 @@
- +

Last revised: December 22, 2011 at 11:51:46 GMT

Last revised: December 24, 2011 at 13:09:42 GMT


diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 5e717788..9ed0f3ce 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -384,6 +384,9 @@ The following backends provide rational number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_rational`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] +[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][libtommath][All C/C++ implementation that's Boost Software Licence compatible.][Slower than GMP.]] +[[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger backend type to be used as a rational type.][Requires an underlying integer backend type.]] +[[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] [h4 gmp_rational] @@ -418,6 +421,62 @@ It's also possible to access the underlying `mpq_t` via the `data()` member func [mpq_eg] +[h4 tommath_rational] + + namespace boost{ namespace multiprecision{ + + typedef rational_adpater tommath_rational; + typedef mp_number mp_rational; + + }} // namespaces + +The `tommath_rational` backend is used via the typedef `boost::multiprecision::mp_rational`. It acts as a thin wrapper around +`boost::rational` +to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. + +The advantage of using this type rather than `boost::rational` directly, is that it is expression-template enabled, +greatly reducing the number of temporaries created in complex expressions. + +There are also non-member functions: + + mp_int numerator(const mp_rational&); + mp_int denominator(const mp_rational&); + +which return the numerator and denominator of the number. + +[h5 Example:] + +[mp_rat_eg] + +[h4 Use With Boost.Rational] + +All of the inetger types in this library can be used as template arguments to `boost::rational`. + +Note that using the library in this way largely negates the effect of the expression templates in `mp_number`. + +[h4 rational_adapter] + + namespace boost{ namespace multiprecision{ + + template + class rational_adpater; + + }} + +The class template `rational_adapter` is a backend for `mp_number` which converts any existing integer backend +into a rational-number backend. + +So for example, given an integer backend type `MyIntegerBackend`, the use would be something like: + + typedef mp_number MyInt; + typedef mp_number > MyRational; + + MyRational r = 2; + r /= 3; + MyInt i = numerator(r); + assert(i == 2); + + [endsect] [endsect] diff --git a/example/tommath_snips.cpp b/example/tommath_snips.cpp new file mode 100644 index 00000000..793aa5f6 --- /dev/null +++ b/example/tommath_snips.cpp @@ -0,0 +1,70 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include + +void t1() +{ + //[tommath_eg + //=#include + + boost::multiprecision::mp_int v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + + std::cout << v << std::endl; // prints 1000! + std::cout << std::hex << v << std::endl; // prints 1000! in hex format + + try{ + std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format! + } + catch(const std::runtime_error& e) + { + std::cout << e.what() << std::endl; + } + + try{ + // v is not a 2's complement type, bitwise operations are only supported + // on positive values: + v = -v & 2; + } + catch(const std::runtime_error& e) + { + std::cout << e.what() << std::endl; + } + + //] +} + +void t3() +{ + //[mp_rat_eg + //=#include + + using namespace boost::multiprecision; + + mp_rational v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + v /= 10; + + std::cout << v << std::endl; // prints 1000! / 10 + std::cout << numerator(v) << std::endl; + std::cout << denominator(v) << std::endl; + + //] +} + +int main() +{ + t1(); + return 0; +} + diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 64a34de9..e417653d 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -156,6 +156,16 @@ inline int get_sign(const rational_adapter& val) return get_sign(val.data().numerator().backend()); } +template +inline mp_number numerator(const mp_number >& val) +{ + return val.backend().data().numerator(); +} +template +inline mp_number denominator(const mp_number >& val) +{ + return val.backend().data().denominator(); +} template struct number_category > : public mpl::int_{}; diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index fbe834cb..95e035b4 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -7,6 +7,7 @@ #define BOOST_MATH_MP_TOMMATH_BACKEND_HPP #include +#include #include #include #include @@ -431,7 +432,9 @@ inline void eval_abs(tommath_int& result, const tommath_int& val) template<> struct number_category : public mpl::int_{}; -typedef mp_number mp_int; +typedef mp_number mp_int; +typedef rational_adapter tommath_rational; +typedef mp_number mp_rational; }} // namespaces diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 0419cf82..fba084b3 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -130,6 +130,18 @@ void test_complement(Real, Real, Real, const boost::mpl::false_&) template void test_integer_ops(const T&){} +template +void test_integer_ops(const boost::mpl::int_&) +{ + Real a(2); + a /= 3; + BOOST_TEST(numerator(a) == 2); + BOOST_TEST(denominator(a) == 3); + Real b(4); + b /= 6; + BOOST_TEST(a == b); +} + template void test_integer_ops(const boost::mpl::int_&) { diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index 583b891e..7b1d4290 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -127,7 +127,7 @@ int main() #endif #ifdef TEST_TOMMATH test_round_trip >(); - test_round_trip > >(); + test_round_trip(); #endif return boost::report_errors(); } From 5ada2d816973ddfcbfaf097f6a90383110de99ea Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 24 Dec 2011 13:14:17 +0000 Subject: [PATCH 088/256] Correct TODO list and regenerate docs. [SVN r76131] --- doc/html/boost_multiprecision/map/todo.html | 6 ------ doc/html/index.html | 2 +- doc/multiprecision.qbk | 2 -- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 0f7290bb..fadf395e 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -27,12 +27,6 @@
  • Add an adapter backend for complex number types.
  • -
  • - Add an adapter backend for rational types. -
  • -
  • - Test integer types with Boost.Rational. -
  • Adapt libtommath code to make an all C++ fixed precision integer type.
  • diff --git a/doc/html/index.html b/doc/html/index.html index 67cdb54d..35e62118 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -48,7 +48,7 @@
    - +

    Last revised: December 24, 2011 at 13:09:42 GMT

    Last revised: December 24, 2011 at 13:13:53 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 9ed0f3ce..b2107616 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -1027,8 +1027,6 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Add backend support for libdecNumber. * Add an adapter backend for complex number types. -* Add an adapter backend for rational types. -* Test integer types with Boost.Rational. * Adapt libtommath code to make an all C++ fixed precision integer type. [endsect] From 30310e4a528d389ab546efe58249d462c7606b0c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 30 Dec 2011 18:21:08 +0000 Subject: [PATCH 089/256] Another Boost.Rational fix. Add tentative version of a fixed width, bit-packed 2's complement integer type. [SVN r76234] --- include/boost/multiprecision/mp_number.hpp | 12 + .../boost/multiprecision/packed_cpp_int.hpp | 888 ++++++++++++++++++ test/Jamfile.v2 | 28 + test/test_arithmetic.cpp | 236 +++-- test/test_int_io.cpp | 36 +- 5 files changed, 1107 insertions(+), 93 deletions(-) create mode 100644 include/boost/multiprecision/packed_cpp_int.hpp diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index a04eba59..2c8b9d4d 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1635,6 +1635,18 @@ typename enable_if, bool>::type operator != (co return a != multiprecision::mp_number(b); } +template +inline multiprecision::mp_number numerator(const rational >& a) +{ + return a.numerator(); +} + +template +inline multiprecision::mp_number denominator(const rational >& a) +{ + return a.denominator(); +} + } // namespaces #endif diff --git a/include/boost/multiprecision/packed_cpp_int.hpp b/include/boost/multiprecision/packed_cpp_int.hpp new file mode 100644 index 00000000..1c8e7af6 --- /dev/null +++ b/include/boost/multiprecision/packed_cpp_int.hpp @@ -0,0 +1,888 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_RATIONAL_ADAPTER_HPP +#define BOOST_MATH_RATIONAL_ADAPTER_HPP + +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace multiprecision{ + +template +struct packed_cpp_int +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + + typedef boost::uint32_t limb_type; + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(unsigned, limb_count = Bits / limb_bits + (Bits % limb_bits ? 1 : 0)); + BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); + BOOST_STATIC_CONSTANT(limb_type, upper_limb_mask = (Bits % limb_bits ? (1 << (Bits % limb_bits)) - 1 : max_limb_value)); + BOOST_STATIC_CONSTANT(limb_type, upper_limb_not_mask = ~upper_limb_mask); + BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1 << ((Bits % limb_bits ? Bits % limb_bits : limb_bits) - 1)); + typedef boost::array data_type; + + packed_cpp_int(){} + packed_cpp_int(const packed_cpp_int& o) + { + m_value = o.m_value; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + packed_cpp_int(packed_cpp_int&& o) : m_value(o.m_value) {} +#endif + packed_cpp_int& operator = (const packed_cpp_int& o) + { + m_value = o.m_value; + return *this; + } + packed_cpp_int& operator = (boost::uint32_t i) + { + m_value[limb_count - 1] = i; + for(int j = limb_count - 2; j >= 0; --j) + m_value[j] = 0; + m_value[0] &= packed_cpp_int::upper_limb_mask; + return *this; + } + packed_cpp_int& operator = (boost::int32_t i) + { + m_value[limb_count - 1] = i; + // sign extend: + for(int j = limb_count - 2; j >= 0; --j) + m_value[j] = i < 0 ? max_limb_value : 0; + m_value[0] &= packed_cpp_int::upper_limb_mask; + return *this; + } + packed_cpp_int& operator = (boost::uintmax_t i) + { + BOOST_STATIC_ASSERT(sizeof(i) % sizeof(limb_type) == 0); + boost::uintmax_t mask = max_limb_value; + unsigned shift = 0; + for(int j = limb_count - 1; j >= static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)); --j) + { + m_value[j] = static_cast((i & mask) >> shift); + mask <<= limb_bits; + shift += limb_bits; + } + for(int j = static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)) - 1; j >= 0; --j) + m_value[j] = 0; + m_value[0] &= packed_cpp_int::upper_limb_mask; + return *this; + } + packed_cpp_int& operator = (boost::intmax_t i) + { + BOOST_STATIC_ASSERT(sizeof(i) % sizeof(limb_type) == 0); + boost::uintmax_t mask = max_limb_value; + unsigned shift = 0; + for(int j = limb_count - 1; j >= static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)); --j) + { + m_value[j] = static_cast((i & mask) >> shift); + mask <<= limb_bits; + shift += limb_bits; + } + for(int j = static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)) - 1; j >= 0; --j) + m_value[j] = i < 0 ? max_limb_value : 0; + m_value[0] &= packed_cpp_int::upper_limb_mask; + return *this; + } + packed_cpp_int& operator = (long double a) + { + BOOST_STATIC_ASSERT(Bits >= std::numeric_limits::digits); + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + return *this = static_cast(0u); + } + + if (a == 1) { + return *this = static_cast(1u); + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + *this = static_cast(0u); + + f = frexp(a, &e); + + static const boost::uint32_t shift = std::numeric_limits::digits; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + left_shift(*this, shift); + if(term > 0) + add(*this, static_cast(term)); + else + subtract(*this, static_cast(-term)); + f -= term; + } + if(e > 0) + left_shift(*this, e); + else if(e < 0) + right_shift(*this, -e); + data()[0] &= packed_cpp_int::upper_limb_mask; + return *this; + } + packed_cpp_int& operator = (const char* s) + { + std::size_t n = s ? std::strlen(s) : 0; + *this = static_cast(0u); + unsigned radix = 10; + bool isneg = false; + if(n && (*s == '-')) + { + --n; + ++s; + isneg = true; + } + if(n && (*s == '0')) + { + if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) + { + radix = 16; + s +=2; + n -= 2; + } + else + { + radix = 8; + n -= 1; + } + } + if(n) + { + if(radix == 8 || radix == 16) + { + unsigned shift = radix == 8 ? 3 : 4; + boost::uint32_t val = max_limb_value; + while(*s) + { + left_shift(*this, shift); + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else if(*s >= 'a' && *s <= 'f') + val = 10 + *s - 'a'; + else if(*s >= 'A' && *s <= 'F') + val = 10 + *s - 'A'; + else + val = max_limb_value; + if(val > radix) + { + m_value[0] &= packed_cpp_int::upper_limb_mask; + return *this; // TODO raise an exception here? + } + m_value[limb_count - 1] |= val; + ++s; + } + } + else + { + // Base 10: + while(*s) + { + // TODO: this implementation is brain dead, Fix Me! + multiply(*this, static_cast(10)); + boost::uint32_t val; + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else + return *this; // TODO raise an exception here? + add(*this, val); + ++s; + } + } + } + m_value[0] &= packed_cpp_int::upper_limb_mask; + if(isneg) + negate(); + return *this; + } + void swap(packed_cpp_int& o) + { + std::swap(m_value, o.m_value); + } + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const + { + int base = 10; + if((f & std::ios_base::oct) == std::ios_base::oct) + base = 8; + else if((f & std::ios_base::hex) == std::ios_base::hex) + base = 16; + std::string result; + + if(base == 8 || base == 16) + { + boost::uint32_t shift = base == 8 ? 3 : 4; + boost::uint32_t mask = static_cast((1u << shift) - 1); + packed_cpp_int t(*this); + for(unsigned i = 0; i < Bits / shift; ++i) + { + char c = '0' + (t.data()[limb_count-1] & mask); + if(c > '9') + c += 'A' - '9' - 1; + result.insert(0, 1, c); + right_shift(t, shift); + } + if(Bits % shift) + { + mask = static_cast((1u << (Bits % shift)) - 1); + char c = '0' + (t.data()[limb_count-1] & mask); + if(c > '9') + c += 'A' - '9'; + result.insert(0, 1, c); + } + // + // Get rid of leading zeros: + // + std::string::size_type n = result.find_first_not_of('0'); + if(!result.empty() && (n == std::string::npos)) + n = result.size() - 1; + result.erase(0, n); + if(f & std::ios_base::showbase) + { + const char* pp = base == 8 ? "0" : "0x"; + result.insert(0, pp); + } + } + else + { + packed_cpp_int t(*this); + packed_cpp_int ten, r; + ten = boost::uint32_t(1000000000); + bool neg = false; + if(Signed && (t.data()[0] & sign_bit_mask)) + { + t.negate(); + neg = true; + } + if(limb_count == 1) + { + result = boost::lexical_cast(t.data()[0]); + } + else + { + while(get_sign(t) != 0) + { + packed_cpp_int t2; + divide_unsigned_helper(t2, t, ten, r); + t = t2; + boost::uint32_t v = r.data()[limb_count - 1]; + for(unsigned i = 0; i < 9; ++i) + { + char c = '0' + v % 10; + v /= 10; + result.insert(0, 1, c); + } + } + } + unsigned n = result.find_first_not_of('0'); + result.erase(0, n); + if(result.empty()) + result = "0"; + if(neg) + result.insert(0, 1, '-'); + else if(f & std::ios_base::showpos) + result.insert(0, 1, '+'); + } + return result; + } + void negate() + { + using default_ops::increment; + // complement and add 1: + complement(*this, *this); + increment(*this); + } + int compare(const packed_cpp_int& o)const + { + int result = 0; + if(Signed && ((m_value[0] & sign_bit_mask) != (o.data()[0] & sign_bit_mask))) + { + return m_value[0] & sign_bit_mask ? -1 : 1; + } + for(data_type::size_type i = 0; i < limb_count; ++i) + { + if(m_value[i] != o.data()[i]) + { + result = (m_value[i] < o.data()[i]) ? -1 : 1; + break; + } + } + return Signed && (m_value[0] & sign_bit_mask) ? -result : result ; + } + template + typename enable_if, int>::type compare(Arithmatic i)const + { + // braindead version: + packed_cpp_int t; + t = i; + return compare(t); + } + data_type& data() { return m_value; } + const data_type& data()const { return m_value; } +private: + data_type m_value; +}; + +template +inline void add(packed_cpp_int& result, const packed_cpp_int& o) +{ + // Addition using modular arithmatic. + // Nothing fancy, just let uintmax_t take the strain: + boost::uintmax_t carry = 0; + for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + { + boost::uintmax_t v = static_cast(result.data()[i]) + static_cast(o.data()[i]) + carry; + result.data()[i] = static_cast::limb_type>(v); + carry = v > packed_cpp_int::max_limb_value ? 1 : 0; + } + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} +template +inline void add(packed_cpp_int& result, const boost::uint32_t& o) +{ + // Addition using modular arithmatic. + // Nothing fancy, just let uintmax_t take the strain: + boost::uintmax_t carry = o; + for(int i = packed_cpp_int::limb_count - 1; carry && i >= 0; --i) + { + boost::uintmax_t v = static_cast(result.data()[i]) + carry; + result.data()[i] = static_cast::limb_type>(v); + carry = v > packed_cpp_int::max_limb_value ? 1 : 0; + } + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} +template +inline void add(packed_cpp_int& result, const boost::int32_t& o) +{ + if(o < 0) + subtract(result, static_cast(-o)); + else if(o > 0) + add(result, static_cast(o)); +} +template +inline void subtract(packed_cpp_int& result, const boost::uint32_t& o) +{ + if(o) + { + packed_cpp_int t; + t.data()[packed_cpp_int::limb_count - 1] = ~o + 1; + for(int i = packed_cpp_int::limb_count - 2; i >= 0; --i) + { + t.data()[i] = packed_cpp_int::max_limb_value; + } + add(result, t); + } +} +template +inline void subtract(packed_cpp_int& result, const boost::int32_t& o) +{ + if(o) + { + if(o < 0) + add(result, static_cast(-o)); + else + subtract(result, static_cast(o)); + } +} +template +inline void increment(packed_cpp_int& result) +{ + static const boost::uint32_t one = 1; + add(result, one); +} +template +inline void decrement(packed_cpp_int& result) +{ + static const boost::uint32_t one = 1; + subtract(result, one); +} +template +inline void subtract(packed_cpp_int& result, const packed_cpp_int& o) +{ + // Negate and add: + packed_cpp_int t(o); + t.negate(); + add(result, t); +} +template +inline void multiply(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +{ + // Very simple long multiplication, only usable for small numbers of limb_type's + // but that's the typical use case for this type anyway: + if(&result == &a) + { + packed_cpp_int t(a); + multiply(result, t, b); + return; + } + if(&result == &b) + { + packed_cpp_int t(b); + multiply(result, a, t); + return; + } + boost::uintmax_t carry = 0; + for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + result.data()[i] = 0; + for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + { + for(int j = packed_cpp_int::limb_count - 1; j >= static_cast(packed_cpp_int::limb_count) - i - 1; --j) + { + boost::uintmax_t v = static_cast(a.data()[i]) * static_cast(b.data()[j]) + carry; + v += result.data()[i + j + 1 - packed_cpp_int::limb_count]; + result.data()[i + j + 1 - packed_cpp_int::limb_count] = static_cast::limb_type>(v); + carry = v >> sizeof(packed_cpp_int::limb_type) * CHAR_BIT; + } + carry = 0; + } + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} +template +inline void multiply(packed_cpp_int& result, const packed_cpp_int& a) +{ + // There is no in-place multiply: + packed_cpp_int b(result); + multiply(result, b, a); +} +template +inline void multiply(packed_cpp_int& result, const boost::uint32_t& a) +{ + boost::uintmax_t carry = 0; + for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + { + boost::uintmax_t v = static_cast(result.data()[i]) * static_cast(a) + carry; + result.data()[i] = static_cast::limb_type>(v); + carry = v >> sizeof(packed_cpp_int::limb_type) * CHAR_BIT; + } + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} +template +inline void multiply(packed_cpp_int& result, const boost::int32_t& a) +{ + if(a > 0) + multiply(result, static_cast(a)); + else + { + multiply(result, static_cast(-a)); + result.negate(); + } +} + +template +boost::uint32_t bitcount(const packed_cpp_int& a) +{ + // returns the location of the MSB in a: + boost::uint32_t i = 0; + for(; (i < packed_cpp_int::limb_count) && (a.data()[i] == 0); ++i){} + boost::uint32_t count = (packed_cpp_int::limb_count - i) * packed_cpp_int::limb_bits; + if(!count) + return count; // no bits are set, value is zero + boost::uint32_t mask = static_cast(1u) << (packed_cpp_int::limb_bits - 1); + while((a.data()[i] & mask) == 0) + { + --count; + mask >>= 1; + } + return count; +} + +template +void divide_unsigned_helper(packed_cpp_int& result, const packed_cpp_int& x, const packed_cpp_int& y, packed_cpp_int& r) +{ + if((&result == &x) || (&r == &x)) + { + packed_cpp_int t(x); + divide_unsigned_helper(result, t, y, r); + return; + } + if((&result == &y) || (&r == &y)) + { + packed_cpp_int t(y); + divide_unsigned_helper(result, x, t, r); + return; + } + + + using default_ops::subtract; + + + if (is_zero(y)) + { + volatile int i = 0; + i /= i; + return; + } + + if (is_zero(x)) + { + r = y; + result = x; + return; + } + + if(&result == &r) + { + packed_cpp_int rem; + divide_unsigned_helper(result, x, y, rem); + r = rem; + return; + } + + r = x; + result = static_cast(0u); + if(x.compare(y) < 0) + { + return; // We already have the answer: zero. + } + + boost::uint32_t n = bitcount(x) - bitcount(y); + + if(n == 0) + { + // result is exactly 1: + result = static_cast(1u); + subtract(r, y); + return; + } + + // Together mask_index and mask give us the bit we may be about to set in the result: + boost::uint32_t mask_index = packed_cpp_int::limb_count - 1 - n / packed_cpp_int::limb_bits; + boost::uint32_t mask = static_cast(1u) << n % packed_cpp_int::limb_bits; + packed_cpp_int t(y); + left_shift(t, n); + while(mask_index < packed_cpp_int::limb_count) + { + int comp = r.compare(t); + if(comp >= 0) + { + result.data()[mask_index] |= mask; + subtract(r, t); + if(comp == 0) + break; // no remainder left - we have an exact result! + } + right_shift(t, 1u); + if(0 == (mask >>= 1)) + { + ++mask_index; + mask = static_cast(1u) << (packed_cpp_int::limb_bits - 1); + } + } + BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed +} + +template +inline void divide(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +{ + packed_cpp_int r; + if(Signed && (a.data()[0] & packed_cpp_int::sign_bit_mask)) + { + if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + { + packed_cpp_int t1(a), t2(b); + t1.negate(); + t2.negate(); + divide_unsigned_helper(result, t1, t2, r); + } + else + { + packed_cpp_int t(a); + t.negate(); + divide_unsigned_helper(result, t, b, r); + result.negate(); + } + } + else if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + { + packed_cpp_int t(b); + t.negate(); + divide_unsigned_helper(result, a, t, r); + result.negate(); + } + else + { + divide_unsigned_helper(result, a, b, r); + } +} +template +inline void divide(packed_cpp_int& result, const packed_cpp_int& b) +{ + // There is no in place divide: + packed_cpp_int a(result); + divide(result, a, b); +} +template +inline void modulus(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +{ + packed_cpp_int r; + if(Signed && (a.data()[0] & packed_cpp_int::sign_bit_mask)) + { + if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + { + packed_cpp_int t1(a), t2(b); + t1.negate(); + t2.negate(); + divide_unsigned_helper(r, t1, t2, result); + result.negate(); + } + else + { + packed_cpp_int t(a); + t.negate(); + divide_unsigned_helper(r, t, b, result); + result.negate(); + } + } + else if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + { + packed_cpp_int t(b); + t.negate(); + divide_unsigned_helper(r, a, t, result); + } + else + { + divide_unsigned_helper(r, a, b, result); + } +} +template +inline void modulus(packed_cpp_int& result, const packed_cpp_int& b) +{ + // There is no in place divide: + packed_cpp_int a(result); + modulus(result, a, b); +} + +template +inline void bitwise_and(packed_cpp_int& result, const packed_cpp_int& o) +{ + for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + result.data()[i] &= o.data()[i]; +} +template +inline void bitwise_or(packed_cpp_int& result, const packed_cpp_int& o) +{ + for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + result.data()[i] |= o.data()[i]; +} +template +inline void bitwise_xor(packed_cpp_int& result, const packed_cpp_int& o) +{ + for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + result.data()[i] ^= o.data()[i]; + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} +template +inline void complement(packed_cpp_int& result, const packed_cpp_int& o) +{ + for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + result.data()[i] = ~o.data()[i]; + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} +template +inline void left_shift(packed_cpp_int& result, boost::uintmax_t s) +{ + if(s >= Bits) + { + result = static_cast(0); + return; + } + boost::uint32_t offset = static_cast(s / packed_cpp_int::limb_bits); + boost::uint32_t shift = static_cast(s % packed_cpp_int::limb_bits); + unsigned i = 0; + if(shift) + { + // This code only works when shift is non-zero, otherwise we invoke undefined behaviour! + for(; i + offset + 1 < packed_cpp_int::limb_count; ++i) + { + result.data()[i] = result.data()[i+offset] << shift; + result.data()[i] |= result.data()[i+offset+1] >> (packed_cpp_int::limb_bits - shift); + } + result.data()[i] = result.data()[i+offset] << shift; + ++i; + for(; i < packed_cpp_int::limb_count; ++i) + result.data()[i] = 0; + } + else + { + for(; i + offset < packed_cpp_int::limb_count; ++i) + result.data()[i] = result.data()[i+offset]; + for(; i < packed_cpp_int::limb_count; ++i) + result.data()[i] = 0; + } + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} +template +inline void right_shift(packed_cpp_int& result, boost::uintmax_t s) +{ + boost::uint32_t fill = (Signed && (result.data()[0] & packed_cpp_int::sign_bit_mask)) ? packed_cpp_int::max_limb_value : 0u; + if(s >= Bits) + { + for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + result.data()[i] = fill; + return; + } + boost::uint32_t offset = static_cast(s / packed_cpp_int::limb_bits); + boost::uint32_t shift = static_cast(s % packed_cpp_int::limb_bits); + int i = packed_cpp_int::limb_count - 1; + if(shift) + { + // This code only works for non-zero shift, otherwise we invoke undefined behaviour! + if(fill && (Bits % packed_cpp_int::limb_bits)) + { + // We need to sign extend the leftmost bits, otherwise we may shift zeros into the result: + result.data()[0] |= fill << (Bits % packed_cpp_int::limb_bits); + } + for(; i - offset > 0; --i) + { + result.data()[i] = result.data()[i-offset] >> shift; + result.data()[i] |= result.data()[i-offset-1] << (packed_cpp_int::limb_bits - shift); + } + result.data()[i] = result.data()[i+offset] >> shift; + result.data()[i] |= fill << (packed_cpp_int::limb_bits - shift); + --i; + for(; i >= 0; --i) + result.data()[i] = fill; + } + else + { + for(; i - offset > 0; --i) + result.data()[i] = result.data()[i - offset]; + for(; i >= 0; --i) + result.data()[i] = fill; + } + result.data()[0] &= packed_cpp_int::upper_limb_mask; +} + +template +inline typename enable_if, void>::type convert_to(R* result, const packed_cpp_int& backend) +{ + unsigned shift = (packed_cpp_int::limb_count - 1) * packed_cpp_int::limb_bits; + *result = 0; + for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + { + *result += static_cast(backend.data()[i]) << shift; + shift -= packed_cpp_int::limb_bits; + } +} + +template +inline typename enable_if, void>::type convert_to(R* result, const packed_cpp_int& backend) +{ + unsigned shift = (packed_cpp_int::limb_count - 1) * packed_cpp_int::limb_bits; + *result = 0; + for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + { + *result += static_cast(std::ldexp(static_cast(backend.data()[i]), shift)); + shift -= packed_cpp_int::limb_bits; + } +} + +template +inline bool is_zero(const packed_cpp_int& val) +{ + for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + { + if(val.data()[i]) + return false; + } + return true; +} +template +inline int get_sign(const packed_cpp_int& val) +{ + return is_zero(val) ? 0 : 1; +} +template +inline int get_sign(const packed_cpp_int& val) +{ + return is_zero(val) ? 0 : val.data()[0] & packed_cpp_int::sign_bit_mask ? -1 : 1; +} + +template +struct number_category > : public mpl::int_{}; + +typedef mp_number > mp_uint64_t; +typedef mp_number > mp_uint128_t; +typedef mp_number > mp_uint256_t; +typedef mp_number > mp_uint512_t; + +typedef mp_number > mp_int64_t; +typedef mp_number > mp_int128_t; +typedef mp_number > mp_int256_t; +typedef mp_number > mp_int512_t; + +}} // namespaces + + +namespace std{ + +template +class numeric_limits > > +{ + typedef boost::multiprecision::mp_number > number_type; +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + { + return number_type(); + } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR int digits = Bits; + BOOST_STATIC_CONSTEXPR int digits10 = (digits * 301L) / 1000; + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; + BOOST_STATIC_CONSTEXPR bool is_signed = Signed; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = true; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +} + +#endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 0c36ed4a..3f028183 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -128,6 +128,20 @@ run test_arithmetic.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] : test_arithmetic_tommath_br ; +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_PACKED_INT1 + : test_arithmetic_packed_int1 ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_PACKED_INT2 + : test_arithmetic_packed_int2 ; + run test_numeric_limits.cpp : # command line : # input files @@ -567,6 +581,20 @@ run test_int_io.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_int_io_mpz ; +run test_int_io.cpp + : # command line + : # input files + : # requirements + TEST_PACKED_INT1 + : test_int_io_packed_int1 ; + +run test_int_io.cpp + : # command line + : # input files + : # requirements + TEST_PACKED_INT2 + : test_int_io_packed_int2 ; + run test_rational_io.cpp $(TOMMATH) : # command line : # input files diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index fba084b3..5339152a 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -12,7 +12,8 @@ #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ - && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL) + && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ + && !defined(TEST_PACKED_INT1) && !defined(TEST_PACKED_INT2) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -22,6 +23,8 @@ # define TEST_CPP_FLOAT # define TEST_MPQ # define TEST_TOMMATH +# define TEST_PACKED_INT1 +# define TEST_PACKED_INT2 #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -49,6 +52,9 @@ #include #include #endif +#if defined(TEST_PACKED_INT1) || defined(TEST_PACKED_INT2) +#include +#endif #if defined(TEST_TOMMATH_BOOST_RATIONAL) || defined(TEST_MPZ_BOOST_RATIONAL) #include @@ -151,70 +157,79 @@ void test_integer_ops(const boost::mpl::int_::is_signed) + { + BOOST_TEST(-a % c == 0); + BOOST_TEST(-a % b == -20 % 7); + BOOST_TEST(-a % -b == -20 % -7); + BOOST_TEST(a % -b == 20 % -7); + BOOST_TEST(-a % 7 == -20 % 7); + BOOST_TEST(-a % -7 == -20 % -7); + BOOST_TEST(a % -7 == 20 % -7); + BOOST_TEST(-a % 7u == -20 % 7); + BOOST_TEST(-a % a == 0); + BOOST_TEST(-a % 5 == 0); + BOOST_TEST(-a % -5 == 0); + BOOST_TEST(a % -5 == 0); - b = -b; - BOOST_TEST(a % b == 20 % -7); - a = -a; - BOOST_TEST(a % b == -20 % -7); - BOOST_TEST(a % -7 == -20 % -7); - b = 7; - BOOST_TEST(a % b == -20 % 7); - BOOST_TEST(a % 7 == -20 % 7); - BOOST_TEST(a % 7u == -20 % 7); + b = -b; + BOOST_TEST(a % b == 20 % -7); + a = -a; + BOOST_TEST(a % b == -20 % -7); + BOOST_TEST(a % -7 == -20 % -7); + b = 7; + BOOST_TEST(a % b == -20 % 7); + BOOST_TEST(a % 7 == -20 % 7); + BOOST_TEST(a % 7u == -20 % 7); - a = 20; - a %= b; - BOOST_TEST(a == 20 % 7); - a = -20; - a %= b; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -b; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -b; - BOOST_TEST(a == -20 % -7); + a = 20; + a %= b; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= b; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -b; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -b; + BOOST_TEST(a == -20 % -7); + } a = 20; a %= 7; BOOST_TEST(a == 20 % 7); - a = -20; - a %= 7; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -7; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -7; - BOOST_TEST(a == -20 % -7); + if(std::numeric_limits::is_signed) + { + a = -20; + a %= 7; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7; + BOOST_TEST(a == -20 % -7); + } #ifndef BOOST_NO_LONG_LONG a = 20; a %= 7uLL; BOOST_TEST(a == 20 % 7); - a = -20; - a %= 7uLL; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -7LL; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -7LL; - BOOST_TEST(a == -20 % -7); + if(std::numeric_limits::is_signed) + { + a = -20; + a %= 7uLL; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7LL; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7LL; + BOOST_TEST(a == -20 % -7); + } #endif a = 20; BOOST_TEST(++a == 21); @@ -330,14 +345,17 @@ void test_integer_ops(const boost::mpl::int_::is_signed) + { + a = -20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); + a = 20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); + } } template @@ -410,6 +428,8 @@ struct lexical_cast_target_type template void test_negative_mixed(boost::mpl::true_ const&) { + if(std::numeric_limits::is_specialized && !std::numeric_limits::is_signed) + return; typedef typename lexical_cast_target_type::type target_type; std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; Num n1 = -static_cast(1uLL << (std::numeric_limits::digits - 1)); @@ -649,7 +669,10 @@ void test() BOOST_TEST(a == 8); Real ac(a); BOOST_TEST(ac == a); - BOOST_TEST(-a == -8); + if(std::numeric_limits::is_signed) + { + BOOST_TEST(-a == -8); + } ac = a * c; BOOST_TEST(ac == 8*500L); ac = 8*500L; @@ -693,9 +716,12 @@ void test() ac = a; ac = a + ac; BOOST_TEST(ac == 16); - ac = a; - ac = ac - b; - BOOST_TEST(ac == 8 - 64); + if(std::numeric_limits::is_signed) + { + ac = a; + ac = ac - b; + BOOST_TEST(ac == 8 - 64); + } ac = a; ac = a - ac; BOOST_TEST(ac == 0); @@ -705,16 +731,22 @@ void test() ac = a; ac += b + a; BOOST_TEST(ac == 80); - ac = a; - ac -= a + b; - BOOST_TEST(ac == -64); - ac = a; - ac -= b - a; - BOOST_TEST(ac == 16 - 64); + if(std::numeric_limits::is_signed) + { + ac = a; + ac -= a + b; + BOOST_TEST(ac == -64); + ac = a; + ac -= b - a; + BOOST_TEST(ac == 16 - 64); + } ac = +a; BOOST_TEST(ac == 8); - ac = -a; - BOOST_TEST(ac == -8); + if(std::numeric_limits::is_signed) + { + ac = -a; + BOOST_TEST(ac == -8); + } ac = 8; ac = a * ac; BOOST_TEST(ac == 8*8); @@ -736,8 +768,11 @@ void test() ac -= +a; BOOST_TEST(ac == 0); ac = a; - ac -= -a; - BOOST_TEST(ac == 16); + if(std::numeric_limits::is_signed) + { + ac -= -a; + BOOST_TEST(ac == 16); + } ac = a; ac -= c - b; BOOST_TEST(ac == 8 - (500-64)); @@ -768,9 +803,12 @@ void test() ac = b; ac /= +a; BOOST_TEST(ac == 8); - ac = b; - ac /= -a; - BOOST_TEST(ac == -8); + if(std::numeric_limits::is_signed) + { + ac = b; + ac /= -a; + BOOST_TEST(ac == -8); + } ac = b; ac /= b / a; BOOST_TEST(ac == 64 / (64/8)); @@ -788,14 +826,17 @@ void test() BOOST_TEST(ac == 72); ac = +a + +b; BOOST_TEST(ac == 72); - ac = a + -b; - BOOST_TEST(ac == 8 - 64); - ac = -a + b; - BOOST_TEST(ac == -8+64); - ac = -a + -b; - BOOST_TEST(ac == -72); - ac = a + - + -b; // lots of unary operators!! - BOOST_TEST(ac == 72); + if(std::numeric_limits::is_signed) + { + ac = a + -b; + BOOST_TEST(ac == 8 - 64); + ac = -a + b; + BOOST_TEST(ac == -8+64); + ac = -a + -b; + BOOST_TEST(ac == -72); + ac = a + - + -b; // lots of unary operators!! + BOOST_TEST(ac == 72); + } ac = a; ac = b / ac; BOOST_TEST(ac == b / a); @@ -855,9 +896,12 @@ void test() a = 20; BOOST_TEST(a.sign() > 0); BOOST_TEST(!a.is_zero()); - a = -20; - BOOST_TEST(a.sign() < 0); - BOOST_TEST(!a.is_zero()); + if(std::numeric_limits::is_signed) + { + a = -20; + BOOST_TEST(a.sign() < 0); + BOOST_TEST(!a.is_zero()); + } a = 0; BOOST_TEST(a.sign() == 0); BOOST_TEST(a.is_zero()); @@ -954,6 +998,22 @@ int main() #endif #ifdef TEST_MPZ_BOOST_RATIONAL test >(); +#endif +#ifdef TEST_PACKED_INT1 + test(); + test(); + test(); + test > >(); +#endif +#ifdef TEST_PACKED_INT2 + // + // Can't test 64-bit signed ints - they don't have enough bits + // to interoperate with uint64_t without loss: + // + //test(); + test(); + test(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 35963444..93a33fb3 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -9,9 +9,11 @@ # define _SCL_SECURE_NO_WARNINGS #endif -#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) +#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_PACKED_INT1) && !defined(TEST_PACKED_INT2) # define TEST_TOMMATH # define TEST_MPZ +# define TEST_PACKED_INT1 +# define TEST_PACKED_INT2 #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -28,6 +30,9 @@ #if defined(TEST_TOMMATH) #include #endif +#if defined(TEST_PACKED_INT1) || defined(TEST_PACKED_INT2) +#include +#endif #include #include @@ -82,12 +87,16 @@ void test_round_trip() { T val = generate_random(); do_round_trip(val); - do_round_trip(T(-val)); + if(std::numeric_limits::is_signed) + do_round_trip(T(-val)); } BOOST_CHECK_EQUAL(T(1002).str(), "1002"); BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::showpos), "+1002"); - BOOST_CHECK_EQUAL(T(-1002).str(), "-1002"); + if(std::numeric_limits::is_signed) + { + BOOST_CHECK_EQUAL(T(-1002).str(), "-1002"); + } BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::oct), "1752"); BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::oct|std::ios_base::showbase), "01752"); BOOST_CHECK_EQUAL(boost::to_lower_copy(T(1002).str(0, std::ios_base::hex)), "3ea"); @@ -95,8 +104,11 @@ void test_round_trip() BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::dec), "1002"); BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::dec|std::ios_base::showbase), "1002"); - BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::oct), std::runtime_error); - BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::hex), std::runtime_error); + if(std::numeric_limits::is_signed && !std::numeric_limits::is_modulo) + { + BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::oct), std::runtime_error); + BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::hex), std::runtime_error); + } } int main() @@ -106,6 +118,20 @@ int main() #endif #ifdef TEST_TOMMATH test_round_trip(); +#endif +#ifdef TEST_PACKED_INT1 + test_round_trip(); + test_round_trip(); + test_round_trip(); + test_round_trip > >(); + test_round_trip > >(); +#endif +#ifdef TEST_PACKED_INT2 + test_round_trip(); + test_round_trip(); + test_round_trip(); + test_round_trip > >(); + test_round_trip > >(); #endif return boost::report_errors(); } From 9a1f7c14a5687ab23127765cab7956948d4b3dfe Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 1 Jan 2012 11:37:46 +0000 Subject: [PATCH 090/256] Update special functions performance test and add generic lanczos support to floating point types. [SVN r76252] --- include/boost/multiprecision/cpp_float.hpp | 1 + .../multiprecision/detail/big_lanczos.hpp | 46 ++++++++++++ include/boost/multiprecision/gmp.hpp | 1 + include/boost/multiprecision/mpfr.hpp | 25 +------ performance/sf_performance-msvc-10.log | 69 ++++++++++++++++++ performance/sf_performance.cpp | 73 +++++++++++++++++++ 6 files changed, 191 insertions(+), 24 deletions(-) create mode 100644 include/boost/multiprecision/detail/big_lanczos.hpp create mode 100644 performance/sf_performance-msvc-10.log diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 84811b12..968e29c1 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -15,6 +15,7 @@ #include #include #include +#include // // Headers required for Boost.Math integration: diff --git a/include/boost/multiprecision/detail/big_lanczos.hpp b/include/boost/multiprecision/detail/big_lanczos.hpp new file mode 100644 index 00000000..a3dd8cb2 --- /dev/null +++ b/include/boost/multiprecision/detail/big_lanczos.hpp @@ -0,0 +1,46 @@ + +// Copyright (c) 2011 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_BIG_LANCZOS +#define BOOST_MP_BIG_LANCZOS + +#include + +namespace boost{ namespace math{ + +namespace lanczos{ + +template +struct lanczos; + +template +struct lanczos, Policy> +{ + typedef typename boost::math::policies::precision, Policy>::type precision_type; + typedef typename mpl::if_c< + precision_type::value <= 73, + lanczos13UDT, + typename mpl::if_c< + precision_type::value <= 122, + lanczos22UDT, + typename mpl::if_c< + precision_type::value <= 172, + lanczos31UDT, + typename mpl::if_c< + precision_type::value <= 372, + lanczos61UDT, + undefined_lanczos + >::type + >::type + >::type + >::type type; +}; + +} // namespace lanczos + +}} // namespaces + +#endif diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index be5c3b3d..b5d71181 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -7,6 +7,7 @@ #define BOOST_MATH_ER_GMP_BACKEND_HPP #include +#include #include #include #include diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 3129171e..c0c497ce 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include #include @@ -1008,29 +1008,6 @@ inline int digits() } -namespace lanczos{ - -template -struct lanczos >, Policy> -{ - typedef typename mpl::if_c< - Digits10 <= 36, - lanczos22UDT, - typename mpl::if_c< - Digits10 <= 50, - lanczos31UDT, - typename mpl::if_c< - Digits10 <= 110, - lanczos61UDT, - undefined_lanczos - >::type - >::type - >::type type; -}; - -} // namespace lanczos - - }} // namespaces namespace std{ diff --git a/performance/sf_performance-msvc-10.log b/performance/sf_performance-msvc-10.log new file mode 100644 index 00000000..82722d81 --- /dev/null +++ b/performance/sf_performance-msvc-10.log @@ -0,0 +1,69 @@ +0 +11 +24 +3 +13 +27 +Testing Bessel Functions..... +Time for mpfr_float_50 = 6.2742 seconds +Total allocations for mpfr_float_50 = 2684348 +Time for mpf_float_50 = 11.2255 seconds +Total allocations for mpf_float_50 = 2601366 +Time for cpp_float_50 = 19.5712 seconds +Total allocations for cpp_float_50 = 0 +Time for mpfr_class (50 digits) = 6.11757 seconds +Total allocations for mpfr_class (50 digits) = 3946031 +Time for mpreal (50 digits) = 9.38756 seconds +Total allocations for mpreal (50 digits) = 13223017 +Time for mpfr_float_100 = 9.61944 seconds +Total allocations for mpfr_float_50 = 3671485 +Time for mpf_float_100 = 8.29211 seconds +Total allocations for mpf_float_100 = 3593669 +Time for cpp_float_100 = 20.4485 seconds +Total allocations for cpp_float_100 = 0 +Time for mpfr_class (100 digits) = 9.88427 seconds +Total allocations for mpfr_class (100 digits) = 5447348 +Time for mpreal (100 digits) = 13.7811 seconds +Total allocations for mpreal (100 digits) = 16671065 +Testing Polynomial Evaluation..... +Time for mpfr_float_50 = 0.00839464 seconds +Total allocations for mpfr_float_50 = 2996 +Time for mpf_float_50 = 0.0042138 seconds +Total allocations for mpf_float_50 = 2996 +Time for cpp_float_50 = 0.0046054 seconds +Total allocations for cpp_float_50 = 0 +Time for mpfr_class (50 digits) = 0.00990538 seconds +Total allocations for mpfr_class (50 digits) = 12976 +Time for mpreal (50 digits) = 0.0152955 seconds +Total allocations for mpreal (50 digits = 27947 +Time for mpfr_float_100 = 0.00957098 seconds +Total allocations for mpfr_float_100 = 2996 +Time for mpf_float_100 = 0.00418726 seconds +Total allocations for mpf_float_100 = 2996 +Time for cpp_float_100 = 0.0090742 seconds +Total allocations for cpp_float_100 = 0 +Time for mpfr_class (100 digits) = 0.011094 seconds +Total allocations for mpfr_class (100 digits) = 12976 +Time for mpreal (100 digits) = 0.0172028 seconds +Total allocations for mpreal (100 digits) = 27947 +Testing Non-Central T..... +Time for mpfr_float_50 = 260.324 seconds +Total allocations for mpfr_float_50 = 139149049 +Time for mpf_float_50 = 201.95 seconds +Total allocations for mpf_float_50 = 134600354 +Time for cpp_float_50 = 340.292 seconds +Total allocations for cpp_float_50 = 0 +Time for mpfr_class (50 digits) = 269.03 seconds +Total allocations for mpfr_class (50 digits) = 252401115 +Time for mpreal (50 digits) = 350.758 seconds +Total allocations for mpreal (50 digits) = 447009420 +Time for mpfr_float_100 = 519.421 seconds +Total allocations for mpfr_float_100 = 220400854 +Time for mpf_float_100 = 404.593 seconds +Total allocations for mpf_float_100 = 212307349 +Time for cpp_float_100 = 1118.91 seconds +Total allocations for cpp_float_100 = 0 +Time for mpfr_class (100 digits) = 541.35 seconds +Total allocations for mpfr_class (100 digits) = 407154781 +Time for mpreal (100 digits) = 677.265 seconds +Total allocations for mpreal (100 digits) = 724581024 diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 04238b9e..5b2d0fbf 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -9,6 +9,8 @@ #include #include #include +#include +#include #include #include #include @@ -43,6 +45,7 @@ template Real test_bessel() { # define T double +# define SC_(x) x # include "libs/math/test/bessel_i_int_data.ipp" # include "libs/math/test/bessel_i_data.ipp" @@ -184,6 +187,16 @@ int main() std::cout << "Time for mpfr_float_50 = " << time << std::endl; std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpf_float_50 = " << time << std::endl; + std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + test_bessel(); + time = c.elapsed(); + std::cout << "Time for cpp_float_50 = " << time << std::endl; + std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; + allocation_count = 0; c.reset(); test_bessel(); time = c.elapsed(); @@ -208,6 +221,18 @@ int main() std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for mpf_float_100 = " << time << std::endl; + std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_bessel(); + time = c.elapsed(); + std::cout << "Time for cpp_float_100 = " << time << std::endl; + std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; @@ -234,6 +259,18 @@ int main() std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpf_float_50 = " << time << std::endl; + std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for cpp_float_50 = " << time << std::endl; + std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; @@ -257,6 +294,18 @@ int main() std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; allocation_count = 0; c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for mpf_float_100 = " << time << std::endl; + std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_polynomial(); + time = c.elapsed(); + std::cout << "Time for cpp_float_100 = " << time << std::endl; + std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; @@ -283,6 +332,18 @@ int main() std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpf_float_50 = " << time << std::endl; + std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for cpp_float_50 = " << time << std::endl; + std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; @@ -306,6 +367,18 @@ int main() std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; allocation_count = 0; c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for mpf_float_100 = " << time << std::endl; + std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); + test_nct(); + time = c.elapsed(); + std::cout << "Time for cpp_float_100 = " << time << std::endl; + std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; + allocation_count = 0; + c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; From b607dc2c470574bae1fff58c32657d1a50b7c695 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 1 Jan 2012 11:46:48 +0000 Subject: [PATCH 091/256] Move file. [SVN r76253] --- {test => performance}/linpack-benchmark.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {test => performance}/linpack-benchmark.cpp (100%) diff --git a/test/linpack-benchmark.cpp b/performance/linpack-benchmark.cpp similarity index 100% rename from test/linpack-benchmark.cpp rename to performance/linpack-benchmark.cpp From 8dec0e4db6de2577617d56d59a8b0267443c71eb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 2 Jan 2012 17:45:49 +0000 Subject: [PATCH 092/256] Add initial performance test program for testing basic arithmetic. Fix header include on packed_cpp_int.hpp and add numeric_limits min/max values. [SVN r76279] --- .../boost/multiprecision/packed_cpp_int.hpp | 50 ++- performance/performance_test.cpp | 347 ++++++++++++++++++ 2 files changed, 386 insertions(+), 11 deletions(-) create mode 100644 performance/performance_test.cpp diff --git a/include/boost/multiprecision/packed_cpp_int.hpp b/include/boost/multiprecision/packed_cpp_int.hpp index 1c8e7af6..3e0510e8 100644 --- a/include/boost/multiprecision/packed_cpp_int.hpp +++ b/include/boost/multiprecision/packed_cpp_int.hpp @@ -3,8 +3,8 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ -#ifndef BOOST_MATH_RATIONAL_ADAPTER_HPP -#define BOOST_MATH_RATIONAL_ADAPTER_HPP +#ifndef BOOST_MP_PACKED_INT_HPP +#define BOOST_MP_PACKED_INT_HPP #include #include @@ -838,6 +838,17 @@ template class numeric_limits > > { typedef boost::multiprecision::mp_number > number_type; + + struct initializer + { + initializer() + { + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); + } + void do_nothing()const{} + }; + static const initializer init; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // @@ -845,12 +856,26 @@ public: // to zero: // BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT - { - return number_type(); + { + static bool init = false; + static number_type val; + if(!init) + { + init = true; + val = Signed ? number_type(1) << Bits - 1 : 0; + } + return val; } BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { - return number_type(); + static bool init = false; + static number_type val; + if(!init) + { + init = true; + val = Signed ? number_type(~(number_type(1) << Bits - 1)) : number_type(~number_type(0)); + } + return val; } BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = Bits; @@ -860,8 +885,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -871,10 +896,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = true; @@ -883,6 +908,9 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +template +typename numeric_limits > >::initializer + typename numeric_limits > >::init; } #endif diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp new file mode 100644 index 00000000..b02ac616 --- /dev/null +++ b/performance/performance_test.cpp @@ -0,0 +1,347 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#define BOOST_CHRONO_HEADER_ONLY + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#if !defined(TEST_MPF) && !defined(TEST_MPZ) && \ + !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPQ) \ + && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ + && !defined(TEST_PACKED_INT) +# define TEST_MPF +# define TEST_MPZ +# define TEST_MPFR +# define TEST_CPP_FLOAT +# define TEST_MPQ +# define TEST_TOMMATH +# define TEST_PACKED_INT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) || defined(TEST_MPZ_BOOST_RATIONAL) +#include +#include +#endif +#ifdef TEST_CPP_FLOAT +#include +#endif +#if defined(TEST_MPFR) +#include +#endif +#if defined(TEST_TOMMATH) || defined(TEST_TOMMATH_BOOST_RATIONAL) +#include +#include +#endif +#if defined(TEST_PACKED_INT) +#include +#endif + +#include +#include +#include +#include + +template +struct stopwatch +{ + typedef typename Clock::duration duration; + stopwatch() + { + m_start = Clock::now(); + } + duration elapsed() + { + return Clock::now() - m_start; + } + void reset() + { + m_start = Clock::now(); + } + +private: + typename Clock::time_point m_start; +}; + +unsigned bits_wanted; // for integer types + +template +struct tester +{ + tester() + { + a.assign(500, 0); + for(int i = 0; i < 500; ++i) + { + b.push_back(generate_random()); + c.push_back(generate_random()); + small.push_back(gen()); + } + } + double test_add() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] + c[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_subtract() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] - c[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_multiply() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] * c[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_divide() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] / c[i] + b[i] / small[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_str() + { + stopwatch w; + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i].str(); + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + // + // The following tests only work for ineteger types: + // + double test_mod() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] % c[i] + b[i] % small[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_or() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] | c[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_and() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] & c[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_xor() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] ^ c[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_complement() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = ~b[i]; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_left_shift() + { + int shift = std::numeric_limits::is_bounded ? std::numeric_limits::digits : bits_wanted; + shift /= 2; + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] << shift; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_right_shift() + { + int shift = std::numeric_limits::is_bounded ? std::numeric_limits::digits : bits_wanted; + shift /= 2; + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] >> shift; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } +private: + T generate_random() + { + return generate_random(boost::mpl::int_()); + } + T generate_random(const boost::mpl::int_&) + { + T val = gen(); + T prev_val = -1; + while(val != prev_val) + { + val *= (gen.max)(); + prev_val = val; + val += gen(); + } + int e; + val = frexp(val, &e); + + typedef typename T::backend_type::exponent_type e_type; + static boost::random::uniform_int_distribution ui(0, std::numeric_limits::max_exponent - 10); + return ldexp(val, ui(gen)); + } + T generate_random(const boost::mpl::int_&) + { + typedef boost::random::mt19937::result_type random_type; + + T max_val; + unsigned digits; + if(std::numeric_limits::is_bounded) + { + max_val = (std::numeric_limits::max)(); + digits = std::numeric_limits::digits; + } + else + { + max_val = T(1) << bits_wanted; + digits = bits_wanted; + } + + unsigned bits_per_r_val = std::numeric_limits::digits - 1; + while((random_type(1) << bits_per_r_val) > (gen.max)()) --bits_per_r_val; + + unsigned terms_needed = digits / bits_per_r_val + 1; + + T val = 0; + for(unsigned i = 0; i < terms_needed; ++i) + { + val *= (gen.max)(); + val += gen(); + } + val %= max_val; + return val; + } + std::vector a, b, c, small; + static boost::random::mt19937 gen; +}; + +template +boost::random::mt19937 tester::gen; + +template +void test_int_ops(tester& t, const char* type, unsigned precision, const boost::mpl::int_&) +{ + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "%" << t.test_mod() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "|" << t.test_or() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "&" << t.test_and() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "^" << t.test_xor() << std::endl; + //std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "~" << t.test_complement() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "<<" << t.test_left_shift() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << ">>" << t.test_right_shift() << std::endl; +} +template +void test_int_ops(tester& t, const char* type, unsigned precision, const U&) +{ +} + +template +void test(const char* type, unsigned precision) +{ + bits_wanted = precision; + tester::value> t; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "+" << t.test_add() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "-" << t.test_subtract() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "*" << t.test_multiply() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "/" << t.test_divide() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "str" << t.test_str() << std::endl; + + test_int_ops(t, type, precision, typename boost::multiprecision::number_category::type()); +} + + +int main() +{ +#ifdef TEST_MPF + test("gmp_float", 50); + test("gmp_float", 100); + test("gmp_float", 500); +#endif +#ifdef TEST_MPZ + test("gmp_int", 64); + test("gmp_int", 128); + test("gmp_int", 256); + test("gmp_int", 512); + test("gmp_int", 1024); +#endif +#ifdef TEST_TOMMATH + test("tommath_int", 64); + test("tommath_int", 128); + test("tommath_int", 256); + test("tommath_int", 512); + test("tommath_int", 1024); +#endif +#ifdef TEST_PACKED_INT + test("mp_int64_t", 64); + test("mp_int128_t", 128); + test("mp_int256_t", 256); + test("mp_int512_t", 512); + test > >("mp_int1024_t", 1024); +#endif +#ifdef TEST_CPP_FLOAT + test("cpp_float", 50); + test("cpp_float", 100); + test > >("cpp_float", 500); +#endif +#ifdef TEST_MPFR + test("mpfr_float", 50); + test("mpfr_float", 100); + test("mpfr_float", 500); +#endif + return 0; +} + From 99707d8925720d5f47baadae62f87a3d0b7aded2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 10 Jan 2012 13:20:29 +0000 Subject: [PATCH 093/256] Switch to faster division code and add better test case for packed int's. [SVN r76398] --- .../boost/multiprecision/packed_cpp_int.hpp | 166 +++++++++++++++++- test/Jamfile.v2 | 8 + test/packed_int_test.cpp | 151 ++++++++++++++++ 3 files changed, 324 insertions(+), 1 deletion(-) create mode 100644 test/packed_int_test.cpp diff --git a/include/boost/multiprecision/packed_cpp_int.hpp b/include/boost/multiprecision/packed_cpp_int.hpp index 3e0510e8..62082f70 100644 --- a/include/boost/multiprecision/packed_cpp_int.hpp +++ b/include/boost/multiprecision/packed_cpp_int.hpp @@ -504,7 +504,7 @@ boost::uint32_t bitcount(const packed_cpp_int& a) } return count; } - +/* template void divide_unsigned_helper(packed_cpp_int& result, const packed_cpp_int& x, const packed_cpp_int& y, packed_cpp_int& r) { @@ -588,6 +588,170 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c } BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed } +*/ +template +void divide_unsigned_helper(packed_cpp_int& result, const packed_cpp_int& x, const packed_cpp_int& y, packed_cpp_int& r) +{ + if((&result == &x) || (&r == &x)) + { + packed_cpp_int t(x); + divide_unsigned_helper(result, t, y, r); + return; + } + if((&result == &y) || (&r == &y)) + { + packed_cpp_int t(y); + divide_unsigned_helper(result, x, t, r); + return; + } + + + using default_ops::subtract; + + + if (is_zero(y)) + { + volatile int i = 0; + i /= i; + return; + } + + if (is_zero(x)) + { + r = y; + result = x; + return; + } + + if(&result == &r) + { + packed_cpp_int rem; + divide_unsigned_helper(result, x, y, rem); + r = rem; + return; + } + + r = x; + result = static_cast(0u); + if(x.compare(y) < 0) + { + return; // We already have the answer: zero. + } + + // + // Find the most significant words of numerator and denominator. + // Note that this code can't run past the end of the array because + // we know already that neither are all zero: + // + boost::uint32_t r_order = 0; + while(r.data()[r_order] == 0) + ++r_order; + boost::uint32_t y_order = 0; + while(y.data()[y_order] == 0) + ++y_order; + + packed_cpp_int t; + bool r_neg = false; + + // + // See if we can short-circuit long division, and use basic arithmetic instead: + // + if(r_order == packed_cpp_int::limb_count - 1) + { + result = r.data()[packed_cpp_int::limb_count - 1] / y.data()[packed_cpp_int::limb_count - 1]; + r = x.data()[packed_cpp_int::limb_count - 1] % y.data()[packed_cpp_int::limb_count - 1]; + return; + } + else if(r_order == packed_cpp_int::limb_count - 2) + { + unsigned long long a, b; + a = (static_cast(r.data()[r_order]) << packed_cpp_int::limb_bits) | r.data()[r_order + 1]; + b = y_order < packed_cpp_int::limb_count - 1 ? + (static_cast(y.data()[y_order]) << packed_cpp_int::limb_bits) | y.data()[y_order + 1] + : y.data()[y_order]; + result = a / b; + r = a % b; + return; + } + + do + { + // + // Update r_order, this can't run past the end as r must be non-zero at this point: + // + while(r.data()[r_order] == 0) + ++r_order; + // + // Calculate our best guess for how many times y divides into r: + // + boost::uint32_t guess; + if((r.data()[r_order] <= y.data()[y_order]) && (r_order < packed_cpp_int::limb_count - 1)) + { + unsigned long long a, b, v; + a = (static_cast(r.data()[r_order]) << packed_cpp_int::limb_bits) | r.data()[r_order + 1]; + b = y.data()[y_order]; + v = a / b; + if(v > packed_cpp_int::max_limb_value) + guess = 1; + else + { + guess = static_cast(v); + ++r_order; + } + } + else + { + guess = r.data()[r_order] / y.data()[y_order]; + } + // + // Update result: + // + boost::uint32_t shift = y_order - r_order; + t = boost::uint32_t(0); + t.data()[packed_cpp_int::limb_count - 1 - shift] = guess; + if(r_neg) + subtract(result, t); + else + add(result, t); + // + // Calculate guess * y, we use a fused mutiply-shift O(N) for this + // rather than a full O(N^2) multiply: + // + boost::uintmax_t carry = 0; + for(unsigned i = packed_cpp_int::limb_count - 1; i > packed_cpp_int::limb_count - shift - 1; --i) + t.data()[i] = 0; + for(int i = packed_cpp_int::limb_count - 1; i >= static_cast(shift); --i) + { + boost::uintmax_t v = static_cast(y.data()[i]) * static_cast(guess) + carry; + t.data()[i - shift] = static_cast::limb_type>(v); + carry = v >> sizeof(packed_cpp_int::limb_type) * CHAR_BIT; + } + t.data()[0] &= packed_cpp_int::upper_limb_mask; + // + // Update r: + // + subtract(r, t); + if(r.data()[0] & packed_cpp_int::sign_bit_mask) + { + r.negate(); + r_neg = !r_neg; + } + } + while(r.compare(y) > 0); + + // + // We now just have to normalise the result: + // + if(r_neg) + { + // We have one too many in the result: + decrement(result); + r.negate(); + add(r, y); + } + + BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed +} template inline void divide(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3f028183..9fed404a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -595,6 +595,14 @@ run test_int_io.cpp TEST_PACKED_INT2 : test_int_io_packed_int2 ; +run packed_int_test.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] + release # otherwise runtime is too slow!! + : packed_int_test.cpp ; + run test_rational_io.cpp $(TOMMATH) : # command line : # input files diff --git a/test/packed_int_test.cpp b/test/packed_int_test.cpp new file mode 100644 index 00000000..68314b9f --- /dev/null +++ b/test/packed_int_test.cpp @@ -0,0 +1,151 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +// +// Compare arithmetic results using packed_cpp_int to GMP results. +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#define BOOST_CHRONO_HEADER_ONLY + +#include +#include +#include +#include +#include +#include "test.hpp" + +template +struct stopwatch +{ + typedef typename Clock::duration duration; + stopwatch() + { + m_start = Clock::now(); + } + duration elapsed() + { + return Clock::now() - m_start; + } + void reset() + { + m_start = Clock::now(); + } + +private: + typename Clock::time_point m_start; +}; + +template +T generate_random(unsigned bits_wanted) +{ + static boost::random::mt19937 gen; + typedef boost::random::mt19937::result_type random_type; + + T max_val; + unsigned digits; + if(std::numeric_limits::is_bounded && (bits_wanted == std::numeric_limits::digits)) + { + max_val = (std::numeric_limits::max)(); + digits = std::numeric_limits::digits; + } + else + { + max_val = T(1) << bits_wanted; + digits = bits_wanted; + } + + unsigned bits_per_r_val = std::numeric_limits::digits - 1; + while((random_type(1) << bits_per_r_val) > (gen.max)()) --bits_per_r_val; + + unsigned terms_needed = digits / bits_per_r_val + 1; + + T val = 0; + for(unsigned i = 0; i < terms_needed; ++i) + { + val *= (gen.max)(); + val += gen(); + } + val %= max_val; + return val; +} + +int main() +{ + using namespace boost::multiprecision; + typedef mp_number > packed_type; + stopwatch w; + unsigned last_error_count = 0; + for(int i = 0; i < 1000; ++i) + { + mpz_int a = generate_random(1000); + mpz_int b = generate_random(512); + mpz_int c = generate_random(256); + mpz_int d = generate_random(32); + + packed_type a1 = a.str(); + packed_type b1 = b.str(); + packed_type c1 = c.str(); + packed_type d1 = d.str(); + + BOOST_CHECK_EQUAL(a.str(), a1.str()); + BOOST_CHECK_EQUAL(b.str(), b1.str()); + BOOST_CHECK_EQUAL(c.str(), c1.str()); + BOOST_CHECK_EQUAL(d.str(), d1.str()); + BOOST_CHECK_EQUAL(mpz_int(a+b).str(), packed_type(a1 + b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a-b).str(), packed_type(a1 - b1).str()); + BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)+b).str(), packed_type(packed_type(-a1) + b1).str()); + BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)-b).str(), packed_type(packed_type(-a1) - b1).str()); + BOOST_CHECK_EQUAL(mpz_int(c * d).str(), packed_type(c1 * d1).str()); + BOOST_CHECK_EQUAL(mpz_int(b * c).str(), packed_type(b1 * c1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / b).str(), packed_type(a1 / b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / d).str(), packed_type(a1 / d1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % b).str(), packed_type(a1 % b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % d).str(), packed_type(a1 % d1).str()); + + if(last_error_count != boost::detail::test_errors()) + { + last_error_count = boost::detail::test_errors(); + std::cout << std::hex << std::showbase; + + std::cout << "a = " << a << std::endl; + std::cout << "a1 = " << a1 << std::endl; + std::cout << "b = " << b << std::endl; + std::cout << "b1 = " << b1 << std::endl; + std::cout << "c = " << c << std::endl; + std::cout << "c1 = " << c1 << std::endl; + std::cout << "d = " << d << std::endl; + std::cout << "d1 = " << d1 << std::endl; + std::cout << "a + b = " << a+b << std::endl; + std::cout << "a1 + b1 = " << a1+b1 << std::endl; + std::cout << "a - b = " << a-b << std::endl; + std::cout << "a1 - b1 = " << a1-b1 << std::endl; + std::cout << "-a + b = " << mpz_int(-a)+b << std::endl; + std::cout << "-a1 + b1 = " << packed_type(-a1)+b1 << std::endl; + std::cout << "-a - b = " << mpz_int(-a)-b << std::endl; + std::cout << "-a1 - b1 = " << packed_type(-a1)-b1 << std::endl; + std::cout << "c*d = " << c*d << std::endl; + std::cout << "c1*d1 = " << c1*d1 << std::endl; + std::cout << "b*c = " << b*c << std::endl; + std::cout << "b1*c1 = " << b1*c1 << std::endl; + std::cout << "a/b = " << a/b << std::endl; + std::cout << "a1/b1 = " << a1/b1 << std::endl; + std::cout << "a/d = " << a/d << std::endl; + std::cout << "a1/d1 = " << a1/d1 << std::endl; + std::cout << "a%b = " << a%b << std::endl; + std::cout << "a1%b1 = " << a1%b1 << std::endl; + std::cout << "a%d = " << a%d << std::endl; + std::cout << "a1%d1 = " << a1%d1 << std::endl; + } + } + std::cout << w.elapsed() << std::endl; + return boost::report_errors(); +} + + + From 8c28b89dfcb52a6a6c82d7b58057f1df73f72797 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 11 Jan 2012 11:53:49 +0000 Subject: [PATCH 094/256] Fix GCC failures and generally improve performance of packed_cpp_int. [SVN r76409] --- .../boost/multiprecision/packed_cpp_int.hpp | 105 +++++++++++------- performance/performance_test.cpp | 22 ++++ test/Jamfile.v2 | 4 +- test/packed_int_test.cpp | 26 ----- test/test_float_io.cpp | 4 + test/test_int_io.cpp | 4 + test/test_rational_io.cpp | 4 + 7 files changed, 100 insertions(+), 69 deletions(-) diff --git a/include/boost/multiprecision/packed_cpp_int.hpp b/include/boost/multiprecision/packed_cpp_int.hpp index 62082f70..6dbc8657 100644 --- a/include/boost/multiprecision/packed_cpp_int.hpp +++ b/include/boost/multiprecision/packed_cpp_int.hpp @@ -97,7 +97,7 @@ struct packed_cpp_int } packed_cpp_int& operator = (long double a) { - BOOST_STATIC_ASSERT(Bits >= std::numeric_limits::digits); + BOOST_STATIC_ASSERT(Bits >= (unsigned)std::numeric_limits::digits); using std::frexp; using std::ldexp; using std::floor; @@ -306,10 +306,14 @@ struct packed_cpp_int } void negate() { - using default_ops::increment; - // complement and add 1: - complement(*this, *this); - increment(*this); + boost::uintmax_t carry = 1; + for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + { + carry += static_cast(~m_value[i]); + m_value[i] = static_cast(carry); + carry >>= limb_bits; + } + m_value[0] &= packed_cpp_int::upper_limb_mask; } int compare(const packed_cpp_int& o)const { @@ -318,7 +322,7 @@ struct packed_cpp_int { return m_value[0] & sign_bit_mask ? -1 : 1; } - for(data_type::size_type i = 0; i < limb_count; ++i) + for(typename data_type::size_type i = 0; i < limb_count; ++i) { if(m_value[i] != o.data()[i]) { @@ -344,15 +348,20 @@ private: template inline void add(packed_cpp_int& result, const packed_cpp_int& o) +{ + add(result, result, o); +} +template +inline void add(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: boost::uintmax_t carry = 0; for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) { - boost::uintmax_t v = static_cast(result.data()[i]) + static_cast(o.data()[i]) + carry; - result.data()[i] = static_cast::limb_type>(v); - carry = v > packed_cpp_int::max_limb_value ? 1 : 0; + carry += static_cast(a.data()[i]) + static_cast(b.data()[i]); + result.data()[i] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; } result.data()[0] &= packed_cpp_int::upper_limb_mask; } @@ -364,9 +373,9 @@ inline void add(packed_cpp_int& result, const boost::uint32_t& o) boost::uintmax_t carry = o; for(int i = packed_cpp_int::limb_count - 1; carry && i >= 0; --i) { - boost::uintmax_t v = static_cast(result.data()[i]) + carry; - result.data()[i] = static_cast::limb_type>(v); - carry = v > packed_cpp_int::max_limb_value ? 1 : 0; + carry += static_cast(result.data()[i]); + result.data()[i] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; } result.data()[0] &= packed_cpp_int::upper_limb_mask; } @@ -381,16 +390,19 @@ inline void add(packed_cpp_int& result, const boost::int32_t& o) template inline void subtract(packed_cpp_int& result, const boost::uint32_t& o) { - if(o) + // Subtract using modular arithmatic. + // This is the same code as for addition, with the twist that we negate o "on the fly": + boost::uintmax_t carry = static_cast(result.data()[packed_cpp_int::limb_count - 1]) + + 1uLL + static_cast(~o); + result.data()[packed_cpp_int::limb_count - 1] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; + for(int i = packed_cpp_int::limb_count - 2; i >= 0; --i) { - packed_cpp_int t; - t.data()[packed_cpp_int::limb_count - 1] = ~o + 1; - for(int i = packed_cpp_int::limb_count - 2; i >= 0; --i) - { - t.data()[i] = packed_cpp_int::max_limb_value; - } - add(result, t); + carry += static_cast(result.data()[i]) + 0xFFFFFFFF; + result.data()[i] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; } + result.data()[0] &= packed_cpp_int::upper_limb_mask; } template inline void subtract(packed_cpp_int& result, const boost::int32_t& o) @@ -418,10 +430,21 @@ inline void decrement(packed_cpp_int& result) template inline void subtract(packed_cpp_int& result, const packed_cpp_int& o) { - // Negate and add: - packed_cpp_int t(o); - t.negate(); - add(result, t); + subtract(result, result, o); +} +template +inline void subtract(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +{ + // Subtract using modular arithmatic. + // This is the same code as for addition, with the twist that we negate b "on the fly": + boost::uintmax_t carry = 1; + for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + { + carry += static_cast(a.data()[i]) + static_cast(~b.data()[i]); + result.data()[i] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; + } + result.data()[0] &= packed_cpp_int::upper_limb_mask; } template inline void multiply(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) @@ -447,10 +470,10 @@ inline void multiply(packed_cpp_int& result, const packed_cpp_int< { for(int j = packed_cpp_int::limb_count - 1; j >= static_cast(packed_cpp_int::limb_count) - i - 1; --j) { - boost::uintmax_t v = static_cast(a.data()[i]) * static_cast(b.data()[j]) + carry; - v += result.data()[i + j + 1 - packed_cpp_int::limb_count]; - result.data()[i + j + 1 - packed_cpp_int::limb_count] = static_cast::limb_type>(v); - carry = v >> sizeof(packed_cpp_int::limb_type) * CHAR_BIT; + carry += static_cast(a.data()[i]) * static_cast(b.data()[j]); + carry += result.data()[i + j + 1 - packed_cpp_int::limb_count]; + result.data()[i + j + 1 - packed_cpp_int::limb_count] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; } carry = 0; } @@ -469,9 +492,9 @@ inline void multiply(packed_cpp_int& result, const boost::uint32_t boost::uintmax_t carry = 0; for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) { - boost::uintmax_t v = static_cast(result.data()[i]) * static_cast(a) + carry; - result.data()[i] = static_cast::limb_type>(v); - carry = v >> sizeof(packed_cpp_int::limb_type) * CHAR_BIT; + carry += static_cast(result.data()[i]) * static_cast(a); + result.data()[i] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; } result.data()[0] &= packed_cpp_int::upper_limb_mask; } @@ -487,6 +510,7 @@ inline void multiply(packed_cpp_int& result, const boost::int32_t& } } +/* template boost::uint32_t bitcount(const packed_cpp_int& a) { @@ -504,7 +528,6 @@ boost::uint32_t bitcount(const packed_cpp_int& a) } return count; } -/* template void divide_unsigned_helper(packed_cpp_int& result, const packed_cpp_int& x, const packed_cpp_int& y, packed_cpp_int& r) { @@ -722,9 +745,9 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c t.data()[i] = 0; for(int i = packed_cpp_int::limb_count - 1; i >= static_cast(shift); --i) { - boost::uintmax_t v = static_cast(y.data()[i]) * static_cast(guess) + carry; - t.data()[i - shift] = static_cast::limb_type>(v); - carry = v >> sizeof(packed_cpp_int::limb_type) * CHAR_BIT; + carry += static_cast(y.data()[i]) * static_cast(guess); + t.data()[i - shift] = static_cast::limb_type>(carry); + carry >>= packed_cpp_int::limb_bits; } t.data()[0] &= packed_cpp_int::upper_limb_mask; // @@ -837,26 +860,26 @@ inline void modulus(packed_cpp_int& result, const packed_cpp_int inline void bitwise_and(packed_cpp_int& result, const packed_cpp_int& o) { - for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) result.data()[i] &= o.data()[i]; } template inline void bitwise_or(packed_cpp_int& result, const packed_cpp_int& o) { - for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) result.data()[i] |= o.data()[i]; } template inline void bitwise_xor(packed_cpp_int& result, const packed_cpp_int& o) { - for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) result.data()[i] ^= o.data()[i]; result.data()[0] &= packed_cpp_int::upper_limb_mask; } template inline void complement(packed_cpp_int& result, const packed_cpp_int& o) { - for(packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) result.data()[i] = ~o.data()[i]; result.data()[0] &= packed_cpp_int::upper_limb_mask; } @@ -1073,8 +1096,8 @@ public: }; template -typename numeric_limits > >::initializer - typename numeric_limits > >::init; +typename numeric_limits > >::initializer const + numeric_limits > >::init; } #endif diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index b02ac616..1d53c89c 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -109,6 +109,26 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_add_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] + 1; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_subtract_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] - 1; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } double test_multiply() { stopwatch w; @@ -296,6 +316,8 @@ void test(const char* type, unsigned precision) tester::value> t; std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "+" << t.test_add() << std::endl; std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "-" << t.test_subtract() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "+ (int)" << t.test_add_int() << std::endl; + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "- (int)" << t.test_subtract_int() << std::endl; std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "*" << t.test_multiply() << std::endl; std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "/" << t.test_divide() << std::endl; std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "str" << t.test_str() << std::endl; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 9fed404a..b3f0be1c 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -600,8 +600,8 @@ run packed_int_test.cpp gmp : # input files : # requirements [ check-target-builds ../config//has_gmp : : no ] - release # otherwise runtime is too slow!! - : packed_int_test.cpp ; + release # otherwise runtime is too slow!! + ; run test_rational_io.cpp $(TOMMATH) : # command line diff --git a/test/packed_int_test.cpp b/test/packed_int_test.cpp index 68314b9f..f895c142 100644 --- a/test/packed_int_test.cpp +++ b/test/packed_int_test.cpp @@ -11,36 +11,12 @@ # define _SCL_SECURE_NO_WARNINGS #endif -#define BOOST_CHRONO_HEADER_ONLY - #include #include #include #include -#include #include "test.hpp" -template -struct stopwatch -{ - typedef typename Clock::duration duration; - stopwatch() - { - m_start = Clock::now(); - } - duration elapsed() - { - return Clock::now() - m_start; - } - void reset() - { - m_start = Clock::now(); - } - -private: - typename Clock::time_point m_start; -}; - template T generate_random(unsigned bits_wanted) { @@ -79,7 +55,6 @@ int main() { using namespace boost::multiprecision; typedef mp_number > packed_type; - stopwatch w; unsigned last_error_count = 0; for(int i = 0; i < 1000; ++i) { @@ -143,7 +118,6 @@ int main() std::cout << "a1%d1 = " << a1%d1 << std::endl; } } - std::cout << w.elapsed() << std::endl; return boost::report_errors(); } diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 59afe975..fb098b31 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -212,7 +212,11 @@ template void do_round_trip(const T& val, std::ios_base::fmtflags f) { std::stringstream ss; +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST ss << std::setprecision(std::numeric_limits::max_digits10); +#else + ss << std::setprecision(std::numeric_limits::digits10 + 5); +#endif ss.flags(f); ss << val; T new_val = ss.str(); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 93a33fb3..ffd7d063 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -60,7 +60,11 @@ template void do_round_trip(const T& val, std::ios_base::fmtflags f) { std::stringstream ss; +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST ss << std::setprecision(std::numeric_limits::max_digits10); +#else + ss << std::setprecision(std::numeric_limits::digits10 + 5); +#endif ss.flags(f); ss << val; T new_val = ss.str(); diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index 7b1d4290..05c037c7 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -64,7 +64,11 @@ template void do_round_trip(const T& val, std::ios_base::fmtflags f, const boost::mpl::true_&) { std::stringstream ss; +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST ss << std::setprecision(std::numeric_limits::max_digits10); +#else + ss << std::setprecision(std::numeric_limits::digits10 + 5); +#endif ss.flags(f); ss << val; T new_val = ss.str(); From 44d5a3e3942b65167dae35a0c918dfcb3ce41257 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 11 Jan 2012 19:09:49 +0000 Subject: [PATCH 095/256] Change tests for faster compile times. [SVN r76412] --- test/Jamfile.v2 | 4 +- test/test_atan.cpp | 108 ++--- test/test_cos.cpp | 316 +++++++------- test/test_cosh.cpp | 108 ++--- test/test_exp.cpp | 108 ++--- test/test_log.cpp | 212 +++++----- test/test_pow.cpp | 1006 ++++++++++++++++++++++---------------------- test/test_sin.cpp | 316 +++++++------- test/test_sinh.cpp | 114 ++--- test/test_sqrt.cpp | 206 ++++----- test/test_tanh.cpp | 106 ++--- 11 files changed, 1302 insertions(+), 1302 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index b3f0be1c..c06d453b 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -25,7 +25,7 @@ project : requirements msvc:static ; -local disable-specfun = [ MATCH (--disable-specfun) : [ modules.peek : ARGV ] ] ; +local enable-specfun = [ MATCH (--enable-specfun) : [ modules.peek : ARGV ] ] ; local disable-concepts = [ MATCH (--disable-concepts) : [ modules.peek : ARGV ] ] ; @@ -640,7 +640,7 @@ run ../example/tommath_snips.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] ; -if ! $(disable-specfun) +if $(enable-specfun) { for local source in [ glob math/*.cpp ] diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 2c0bf6ee..7dadf291 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -68,59 +68,59 @@ struct is_mpfr_type void test() { - static const boost::array data = + static const boost::array data = {{ - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-101"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666667e-97"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666667e-93"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666667e-89"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666667e-85"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666667e-81"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-77"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-73"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-69"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238e-65"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238e-61"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238e-57"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238e-53"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238095238096349206349206349e-49"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349e-45"), - T("9.999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349206349206349206349206349e-41"), - T("9.99999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920634920634920634920634920544011544011544011544011544011544011544e-37"), - T("9.999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349206349206349206340115440115440115440115440115440115440115440115440115440115440116209346209346209e-33"), - T("9.999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349115440115440115440115440115440115440115440115440115440116209346209346209346209346209346209346209346209346209346202679543e-29"), - T("9.99999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920544011544011544011544011544011544011544011544011620934620934620934620934620934620934620934620934554267954267954267954267954267954267954267954268013091483679719e-25"), - T("9.999999999999999999999999999999999999999666666666666666666666666666666666666666686666666666666666666666666666666666666665238095238095238095238095238095238095238206349206349206349206349206349206349206340115440115440115440115440115440115440116209346209346209346209346209346209346209279542679542679542679542679542679542679548561895620719150130914836797189738366208428128459088211410192834341441152586663e-21"), - T("9.999999999999999999999999999999966666666666666666666666666666666866666666666666666666666666666665238095238095238095238095238095249206349206349206349206349206349115440115440115440115440115440116209346209346209346209346209346202679542679542679542679542679542738366208954444248561895620719149604599047323505527839893164970569113274066834438351466215243304983108499463325146458811824271509689681318218133e-17"), - T("9.999999999999999999999996666666666666666666666668666666666666666666666665238095238095238095238096349206349206349206349205440115440115440115440116209346209346209346209345542679542679542679542680130914836797189738366208428128459088211410192834817631628777139613052925311641589740930163598087002528653948764327011735444703713649735994600714288656350334489593033695272837185114343249547095046272603174268e-13"), - T("9.999999999999999666666666666666686666666666666665238095238095238206349206349206340115440115440116209346209346209279542679542679548561895620719149604599047323505575458940784018179051162265592202726621494746410579611835097095566286199717626418813764642659343446728207455753397291482030056516178836684094391777365260695851470017381944166954115569576329193296454393446430574957840819236721213626802085619e-9"), - T("0.00009999999966666666866666665238095249206349115440116209346202679542738366208428128463850116128619335776637836253560167434464812879197215298894881707269927081030999737549925482008672363799937606915962379247584324159094536421375755997513179578610677454920512897850953612762990732913046921088456079984429888220262137400213929962691532176198436788640624698990926490105259050461938357510947570244880435664081"), - T("0.78539816339744830961566084581987572104929234984377645524373614807695410157155224965700870633552926699553702162832057666177346115238764555793133985203212027936257102567548463027638991115573723873259549110720274391648336153211891205844669579131780047728641214173086508715261358166205334840181506228531843114675165157889704372038023024070731352292884109197314759000283263263720511663034603673798537790236"), - T("1.5706963267952299525626550249873704896065212085331517483940102693584808194810202180293789115097723406333076648941055516492022741759833189628737308869915412879148320539754700057326930986734751013960313584219296445913757777000240665569182597868494941800236191544832206381775972559949762275927455637707925634113006817837919481411335451596526426779712759369563859151046126747697908496855825977735219514481"), - T("1.5707963167948966192313220249730847754318980330208862438222342009158129649367552929648110725556184185509578339104318071142673796252326115673007840833450909541260947278453938016119958041324233151995987794877839930865561434524027270213271053829179745357590596408023867275770197075707094053216000680544580256094089113804288267449089904640326828789035666143699659867092108718279796583028512542392495421779"), - T("1.5707963267938966192313216916397514424319180330208862438208054294872415364764378326474936031472490101815502336217205184029120016698547471043186681600526965471042074304163483259318452680435202095109230279463923963492870040904012032740805456738144599352893425202988524603439218707929425378295371082108281620406379082813613862672159901100496534463976107550806601465567059619048829495421806391510160463001"), - T("1.5707963267948965192313216916397514420985846996878862438208056294872415364764378306473507460043918673244073765899887723711659699238229101634817272120007484952330785592874771970616254211570733230640365810600043257395046296021443620234312981206088055277773974880349347475097997796620171523611445056144296707974573126845590321623615288317089359131170138395627805178532322154433252386274406088878525130896"), - T("1.5707963267948966192213216916397514420985846996875529104874726294872415364764378326473507460043918673044073765899744866568802556381086244491974416088261453206299039561128740224575416159622681282588417758651991386266175167241223840014532761425201608391327088433455208280958809539778973505942839152244275827508237604782514078980809178018719474972957865632271450490908284680846718670522639450168825443945"), - T("1.5707963267948966192313206916397514420985846996875529104874722961539082034764378326473507460043918673244073765899744866566802556381086244491960130373975738920584753846844454510289702985019506679413814584048816783091570881436029034819727566620006803196521893628268096302936831517800951527920861130266253182819592915368594665061395258604800061112367475630116742454513973110064559653064241192080164878504"), - T("1.5707963267948966192313216915397514420985846996875529104874722961539082031431044993143507460043918673244073765899744866568802556381086244491940130373975738920584753846843025938861131556448078107985386012620245354520143421118568717359410106302546485736203322199696666822417350998320432047401380610785733702300121487566396862863593060802602258914565277827918940256045031718123167711672299800138772937113"), - T("1.5707963267948966192313216916397414420985846996875529104874722961539082031431044993140174126710588673244073765899744866568802556381086244491960130373975738920584553846843025938861131556448078107985243155477388211663000563975725860216552963445403628593347290453664920790671319252288686015654237753642876559442969539514448810915541112750654206966513329776061797398902251498342947931452519580358553156893"), - T("1.5707963267948966192313216916397514410985846996875529104874722961539082031431044993140174126710585339910740435899744866568802556381086244491960130373975738920584753846843025938861129556448078107985243155477388211663000563975711574502267249159689342879063004739379206504957033538002971729941063150468273384839794936339845636311255398464939921252227615490256602593707446303537753126257714385553358352607"), - T("1.5707963267948966192313216916397514420984846996875529104874722961539082031431044993140174126710585339910740432566411533238802556381086244491960130373975738920584753846843025938861131556448078107985243135477388211663000563975711574502267249159689342879061576167950635076385604966574543158512491721896844813411223507768417064883795081004622460934767298029939142275136017732109181697686285814124786923127"), - T("1.5707963267948966192313216916397514420985846896875529104874722961539082031431044993140174126710585339910740432566411533235469223047756244491960130373975738920584753846843025938861131556448078107985243155477388211663000563775711574502267249159689342879061576167950635076385604966574400301369634579039701956268380650625559922026652223861765318077624440887081999419104271700363149951654539782378755175984"), - T("1.5707963267948966192313216916397514420985846996865529104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626800373975738920584753846843025938861131556448078107985243155477388211663000563975711574502267249157689342879061576167950635076385604966574400301369634579039701956268366364911274207740937938147481032363338726601367713704818557414648864237368825496664469462809"), - T("1.5707963267948966192313216916397514420985846996875528104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405590584753846843025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167930635076385604966574400301369634579039701956268366364911274207740937938147479603791910155172796285133390128843220292808797396925235898034238"), - T("1.5707963267948966192313216916397514420985846996875529104774722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405587251420513513025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167950635076385604966574200301369634579039701956268366364911274207740937938147479603791910155172796285133389985986077435665940254068093055177095"), - T("1.570796326794896619231321691639751442098584699687552910487471296153908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552780155644807810798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903969995626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296053908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127418774093793814747960379191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153898203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960359191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908202143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832967056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513138998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908203143004499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566592025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104489314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499313017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954573157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017312671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412661058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671057533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), - T("1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671058533891074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803630124570637195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138"), + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-101", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666667e-97", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666667e-93", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666667e-89", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666667e-85", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666667e-81", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-77", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-73", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-69", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238e-65", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238e-61", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238e-57", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238e-53", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238095238096349206349206349e-49", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349e-45", + "9.999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349206349206349206349206349e-41", + "9.99999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920634920634920634920634920544011544011544011544011544011544011544e-37", + "9.999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349206349206349206340115440115440115440115440115440115440115440115440115440115440116209346209346209e-33", + "9.999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349115440115440115440115440115440115440115440115440115440116209346209346209346209346209346209346209346209346209346202679543e-29", + "9.99999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920544011544011544011544011544011544011544011544011620934620934620934620934620934620934620934620934554267954267954267954267954267954267954267954268013091483679719e-25", + "9.999999999999999999999999999999999999999666666666666666666666666666666666666666686666666666666666666666666666666666666665238095238095238095238095238095238095238206349206349206349206349206349206349206340115440115440115440115440115440115440116209346209346209346209346209346209346209279542679542679542679542679542679542679548561895620719150130914836797189738366208428128459088211410192834341441152586663e-21", + "9.999999999999999999999999999999966666666666666666666666666666666866666666666666666666666666666665238095238095238095238095238095249206349206349206349206349206349115440115440115440115440115440116209346209346209346209346209346202679542679542679542679542679542738366208954444248561895620719149604599047323505527839893164970569113274066834438351466215243304983108499463325146458811824271509689681318218133e-17", + "9.999999999999999999999996666666666666666666666668666666666666666666666665238095238095238095238096349206349206349206349205440115440115440115440116209346209346209346209345542679542679542679542680130914836797189738366208428128459088211410192834817631628777139613052925311641589740930163598087002528653948764327011735444703713649735994600714288656350334489593033695272837185114343249547095046272603174268e-13", + "9.999999999999999666666666666666686666666666666665238095238095238206349206349206340115440115440116209346209346209279542679542679548561895620719149604599047323505575458940784018179051162265592202726621494746410579611835097095566286199717626418813764642659343446728207455753397291482030056516178836684094391777365260695851470017381944166954115569576329193296454393446430574957840819236721213626802085619e-9", + "0.00009999999966666666866666665238095249206349115440116209346202679542738366208428128463850116128619335776637836253560167434464812879197215298894881707269927081030999737549925482008672363799937606915962379247584324159094536421375755997513179578610677454920512897850953612762990732913046921088456079984429888220262137400213929962691532176198436788640624698990926490105259050461938357510947570244880435664081", + "0.78539816339744830961566084581987572104929234984377645524373614807695410157155224965700870633552926699553702162832057666177346115238764555793133985203212027936257102567548463027638991115573723873259549110720274391648336153211891205844669579131780047728641214173086508715261358166205334840181506228531843114675165157889704372038023024070731352292884109197314759000283263263720511663034603673798537790236", + "1.5706963267952299525626550249873704896065212085331517483940102693584808194810202180293789115097723406333076648941055516492022741759833189628737308869915412879148320539754700057326930986734751013960313584219296445913757777000240665569182597868494941800236191544832206381775972559949762275927455637707925634113006817837919481411335451596526426779712759369563859151046126747697908496855825977735219514481", + "1.5707963167948966192313220249730847754318980330208862438222342009158129649367552929648110725556184185509578339104318071142673796252326115673007840833450909541260947278453938016119958041324233151995987794877839930865561434524027270213271053829179745357590596408023867275770197075707094053216000680544580256094089113804288267449089904640326828789035666143699659867092108718279796583028512542392495421779", + "1.5707963267938966192313216916397514424319180330208862438208054294872415364764378326474936031472490101815502336217205184029120016698547471043186681600526965471042074304163483259318452680435202095109230279463923963492870040904012032740805456738144599352893425202988524603439218707929425378295371082108281620406379082813613862672159901100496534463976107550806601465567059619048829495421806391510160463001", + "1.5707963267948965192313216916397514420985846996878862438208056294872415364764378306473507460043918673244073765899887723711659699238229101634817272120007484952330785592874771970616254211570733230640365810600043257395046296021443620234312981206088055277773974880349347475097997796620171523611445056144296707974573126845590321623615288317089359131170138395627805178532322154433252386274406088878525130896", + "1.5707963267948966192213216916397514420985846996875529104874726294872415364764378326473507460043918673044073765899744866568802556381086244491974416088261453206299039561128740224575416159622681282588417758651991386266175167241223840014532761425201608391327088433455208280958809539778973505942839152244275827508237604782514078980809178018719474972957865632271450490908284680846718670522639450168825443945", + "1.5707963267948966192313206916397514420985846996875529104874722961539082034764378326473507460043918673244073765899744866566802556381086244491960130373975738920584753846844454510289702985019506679413814584048816783091570881436029034819727566620006803196521893628268096302936831517800951527920861130266253182819592915368594665061395258604800061112367475630116742454513973110064559653064241192080164878504", + "1.5707963267948966192313216915397514420985846996875529104874722961539082031431044993143507460043918673244073765899744866568802556381086244491940130373975738920584753846843025938861131556448078107985386012620245354520143421118568717359410106302546485736203322199696666822417350998320432047401380610785733702300121487566396862863593060802602258914565277827918940256045031718123167711672299800138772937113", + "1.5707963267948966192313216916397414420985846996875529104874722961539082031431044993140174126710588673244073765899744866568802556381086244491960130373975738920584553846843025938861131556448078107985243155477388211663000563975725860216552963445403628593347290453664920790671319252288686015654237753642876559442969539514448810915541112750654206966513329776061797398902251498342947931452519580358553156893", + "1.5707963267948966192313216916397514410985846996875529104874722961539082031431044993140174126710585339910740435899744866568802556381086244491960130373975738920584753846843025938861129556448078107985243155477388211663000563975711574502267249159689342879063004739379206504957033538002971729941063150468273384839794936339845636311255398464939921252227615490256602593707446303537753126257714385553358352607", + "1.5707963267948966192313216916397514420984846996875529104874722961539082031431044993140174126710585339910740432566411533238802556381086244491960130373975738920584753846843025938861131556448078107985243135477388211663000563975711574502267249159689342879061576167950635076385604966574543158512491721896844813411223507768417064883795081004622460934767298029939142275136017732109181697686285814124786923127", + "1.5707963267948966192313216916397514420985846896875529104874722961539082031431044993140174126710585339910740432566411533235469223047756244491960130373975738920584753846843025938861131556448078107985243155477388211663000563775711574502267249159689342879061576167950635076385604966574400301369634579039701956268380650625559922026652223861765318077624440887081999419104271700363149951654539782378755175984", + "1.5707963267948966192313216916397514420985846996865529104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626800373975738920584753846843025938861131556448078107985243155477388211663000563975711574502267249157689342879061576167950635076385604966574400301369634579039701956268366364911274207740937938147481032363338726601367713704818557414648864237368825496664469462809", + "1.5707963267948966192313216916397514420985846996875528104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405590584753846843025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167930635076385604966574400301369634579039701956268366364911274207740937938147479603791910155172796285133390128843220292808797396925235898034238", + "1.5707963267948966192313216916397514420985846996875529104774722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405587251420513513025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167950635076385604966574200301369634579039701956268366364911274207740937938147479603791910155172796285133389985986077435665940254068093055177095", + "1.570796326794896619231321691639751442098584699687552910487471296153908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552780155644807810798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903969995626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296053908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127418774093793814747960379191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153898203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960359191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908202143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832967056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513138998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908203143004499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566592025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908203143104489314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499313017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954573157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017312671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412661058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671057533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", + "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671058533891074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803630124570637195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", }}; T arg = "1e-100"; @@ -129,12 +129,12 @@ void test() for(unsigned k = 0; k < data.size(); k++) { T val = atan(arg); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = atan(-arg); - e = relative_error(val, T(-data[k])); + e = relative_error(val, T(-T(data[k]))); err = e.template convert_to(); if(err > max_err) { diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 1ce8baaa..1bc55918 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -47,109 +47,109 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ - T("-2.37609908807915949996042688873953402912174184373388399043229539427530802169622688886435380890546981798452174137747437590e-1"), - T("8.03406366226813589517543567844755380935198206635917017883860879215939165740799963435747185200486086864198723786516760875e-1"), - T("8.60219386510802105228997694366289682807721120146423711696179175800635220710279361583231346318224971127450760223168489952e-1"), - T("-1.36768951513839774357595871594675554406872039078811749027554673949684004409484639336417431285061889554892096426752261915e-1"), - T("-9.66210139195431691033548069227792927999642647449593184440815029076272297050360196975341458076547426373476590671462150981e-1"), - T("-6.12007278553856790723803948280976098970972124581361775428331444376106018942231526074915731012122426588769327127413045994e-1"), - T("4.91927698740873688392439262912409276430264703350691359723802294639643655296838880236042651349290074585311025856549893171e-1"), - T("9.93232596718899824059271235487971663771012607519717340071654721877802691370866768064059943491135925674950430467047724563e-1"), - T("2.77789911520199551017947550534057049374212876971194676010301098598339529915403722848373365985645657342475739669568931563e-1"), - T("-7.77955945956221239101360662190442739163791527953499629555756394261998892874934847131138921705713935365505245406994428077e-1"), - T("-8.80676278306736581575818642341143682410874043182925227659938804267878718513212454821032629378618345485453587099696563832e-1"), - T("9.54652155963865007116798560589970996367213754762169439269792747771200843006278637115722685610960738675814993576019945344e-2"), - T("9.54658201427917718824191302196929158303422390793460018465335986921801519149657723689322277773550748806000948225466432438e-1"), - T("6.44358700620889799575033272322899136331490664925359198096632560532437137894857803619177106562399406351419810452110265174e-1"), - T("-4.55304635273050571206400777159475409897339683148730716647371922365967582339285347105376503917296765204188604297021364549e-1"), - T("-9.97202532932553753622481171186283382950122646390227670693679248197349800205205290898290539070732778341271049474946533154e-1"), - T("-3.17489525058325500707686194437148362752290391406825231198381521862930317513649081353670386166519524315810546189268634469e-1"), - T("7.51160186640147504067744846462384089742696250681200524524912647858645140367792164416711871535116761744380912486921554617e-1"), - T("8.99610194168373157174515848193119670768490559799348397680196213249921436405001710937402190319584272526657508442591319630e-1"), - T("-5.39963892484342940823660554048696208293700871414984387094529796385334086703752106515008832585578915389731907422242902573e-2"), - T("-9.41455348900839346761557896365239742769987576963330061702397697388879776230596944312519157729410022380228287314835345969e-1"), - T("-6.75595816763857390859268297670835380459024839344154743310231115864242050771191159334664874097564054770066166961642073448e-1"), - T("4.17894201894880415042381733708896725748531223743344790054523182948440843948904650988733732381978194392219295696279423635e-1"), - T("9.99447981389824371458566861195586395552622718284098766856978062347139060489410032781030191080200904443096549587568037683e-1"), - T("3.56640095868759075150409032448421838265699043643228482503057299699740924345262819242042067863780263400092250418388628640e-1"), - T("-7.23065426868134142613141384486526262450487633432466529798821958977732347646832059032382447792655111641456570392189752211e-1"), - T("-9.16988391192434436877664999042786024703848714036221388727578305299843547352325574309860356272561772723624753484063972217e-1"), - T("1.24341855683226931265962750806821531283439413068694552738675989282017066737438591268502070364982899342633928417210588531e-2"), - T("9.26624413643579136646620112107410908114766812511471130116341925013001661546817531064974089666536893346764523464250445838e-1"), - T("7.05664607841658050248613256866289182754229289446384595719719495272020558391145537620968819401219414243210529013148958366e-1"), - T("-3.79761093422301890838671114556341706055562482358183402807224298533060188038450560241345615647754569347252101282386222173e-1"), - T("-9.99965058979463689113370264378210962384824970050865061898892508056811665771886385589295806419278045318841717598003331419e-1"), - T("-3.95173919871548266286836251448043149039940610894391718791244019288314418437411707835924620250473697245151743147215758686e-1"), - T("6.93720251624319621941983929806434090162802383400620564454074825718151625795576680427510026452063593762417421561201654156e-1"), - T("9.32780816819880202610269817418700102084277332259524791943833699964920012022753227823298655560837271746316929623378078695e-1"), - T("2.91495208658083070508005579692813621670878962971611104453227900103973434149303469066898102622556226584993895360896300290e-2"), - T("-9.10191043170480685360743788297835112117551819731152897291272407935139876953384666161532187572493791297095784055525159185e-1"), - T("-7.34513075127503122343910106816656237074878218180284276449954797048122379869002663646507706411949095015624141821039453971e-1"), - T("3.40971254411713599427147477626159847871020791931107106418841144080445813896332252160005593096670674809345703079384115052e-1"), - T("9.98752871506016936810666998588493462933191829230756181478046320353377054175122206889047094521687205093218701141334147081e-1"), - T("4.33024359542714849537532946954507232835434973891665238942502273464321666207117525270650546741831354943253652514490075246e-1"), - T("-6.63175408268187738636594884921931867786416057472876635147295424128144233911929585327601381618059327766986981109409782838e-1"), - T("-9.46960160806563725719808910991708075372282242401645009270517113290439792088443109178772446465191984149998211903724560065e-1"), - T("-7.06828182905581345108929510344440443421290640066613022421187316650733628538705972455891575947230299102119854983197703150e-2"), - T("8.92183656127948379886438402777950080111433733329436790239129260607557296960582455582584117031260710927499215646838011844e-1"), - T("7.62091330231640362984555508176991632755732840163230620595759320390970951235395195394649584713540498911356433919369698423e-1"), - T("-3.01591765120371930643555588643712101466544136366607065361801475091335195383846047491935017919396438040414024941341524187e-1"), - T("-9.95813515236177554177387795413035497724212540625760091518605741283184405719984044075159457509720410668598540884613985023e-1"), - T("-4.70125959152223022135690700550251564040118601846181392455764893020377582359429013073566263451488554529709131439092909247e-1"), - T("6.31483718775865440843182928017874708719203714677143270278178885379757350754752477512514449375355491054871712891789652146e-1"), - T("1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - T("3.87481045630097871028201331640164477694000480353342897357083794605539506785023570062767753819472037935010414476627195076e-1"), - T("-6.99716878554812023132822640034166338740077082416915046841339368979161296335086955803240899441098534898926193252558848693e-1"), - T("-9.29735101124991407032113033015438177585645722877060262785796302722011806301680288369763295777635760805579255008366302180e-1"), - T("-2.07925797310208845709174899248298159909010721767168338004516304026594885686024530923209628704670627250569637267490913462e-2"), - T("9.13621640053945104047985280883096238900189007462190433514805702721127019097915088259906184736442916334750420359005079959e-1"), - T("7.28814716527795995795780587639833705107995825167970668466246348938821997240383021826681253777014938636567626203524137506e-1"), - T("-3.48817863192357573536083313907744269588018702862402502601699983054718835012048372083235768555953613790431700360695537918e-1"), - T("-9.99135337256258278958854200595331742602280601557283993231562055717063052179292021052372510863057206152466386086657442382e-1"), - T("-4.25474147219713305654097901385832164424798803616095278869643928816776198489330071073326518019520590535564717523756486665e-1"), - T("6.69409002349720857726983952566596052122726437391092096671257338244059819036586172017092390651026654050631669646310910927e-1"), - T("9.44240747589054266930136705015787520728797286842746645573763175559132491628984502333043316023599487896169049499868916865e-1"), - T("6.23417820549832676844933182722733277887833220127638406914080428946880981800946578131712749910941183940944526141109771339e-2"), - T("-8.95928229794837090592434136137683839101829890460754766346170956577979909285084363961363023377587044303560652568203578379e-1"), - T("-7.56652196635835430995109388017590459596111729342964992503572530290981857981790620732129221157071082788019187787999930361e-1"), - T("3.09551461133309219674309651201007026752336319933918953736299690287371505733386433918863300129026763968979930342098019300e-1"), - T("9.96542844308353945757715814452637400116215448012622700698887257177706625278927018059066920597035660000571997275705962011e-1"), - T("4.62731465522276407764000677957978862104808823938378826581864482071733508960062598574638347814740748458034065235894523010e-1"), - T("-6.37943500095315456672541800050589670140910744260281868746767523730582697622604545933849801882909439609368258115114388202e-1"), - T("-9.57113494461990955768932962010819183910065445494138937651443249061391692258872250121438832853873660881630205561168895590e-1"), - T("-1.03783175146302830356973378710923690121182237844646430783773333188328606275124873219756415071202025673009660963930966273e-1"), - T("8.76685468012988943166112725030293740012198666616661362437433807594683780986916439696374569274720383546275206733493672834e-1"), - T("7.83181178815072182812568575402104911406191663934571600092749188502783771503475038116599065276589122015600004250624262132e-1"), - T("-2.69749743842835294071354429049113807280228918034124159074991560056663623624511602063409428877143567459307323934051784210e-1"), - T("-9.92227004420417932443416371636723983768124774541445787394585828303853075015733744933294181104002649816119116502663362907e-1"), - T("-4.99188570507651271652464431008309802023236218596632956064119419694573621896525872847587264755853127438644874992889777436e-1"), - T("6.05374785886620830935500306718810628353011877048386199574451402773468315797082901705593423724389976967865835641164117478e-1"), - T("9.68331080574540181354402420018944004334504868848934676984951546671476956051983469715128604348963016773169794077158289730e-1"), - T("1.45045093347669933436797325432376656017480150281100519869038554695618054318368975927557872948037203212941966706926758604e-1"), - T("-8.55926631706799584065153976496431313099942493164544290051315786450857575707615522517293656706329757352795226750189755758e-1"), - T("-8.08355785820466703104647317116964786017731181599256098405978700298563758509572188640629418770593008092680980412866065299e-1"), - T("2.29481541445091823694157468006983283649885473964756916206813927875661041834620526229807744443043682778028709792615798955e-1"), - T("9.86195281084368344446227722442335005500018635181693920385626820970119467136148305491035657795704047666385553672680209923e-1"), - T("5.34782415974986828906369231191245075731384342252264783019973387059318216570499447505623911253042567598873910043381675873e-1"), - T("-5.71759181631212640256161075896307515511612057247572886814941945052483422285718810088660759708176904381865453799197101481e-1"), - T("-9.77874107069129472007009478090869879295520839405452365411822873037906082086100232576241983901051327761231156641104065497e-1"), - T("-1.86056181372276495846711248156316208757691570931906856005697361080864028851991674077024223201008430626166447144444086146e-1"), - T("8.33687619660983803179149188531271900120055171980951416163724579833511897001564116810390933587615557717585362295882429826e-1"), - T("8.32132482562487183916482822112362004641509381783438374175226355792137053285527706239574867923387554339582561002247202518e-1"), - T("-1.88816490768820368180947188938258919466912959009058295775702554895970560887437777994365295452696990115940651570073217522e-1"), - T("-9.78458105113103660973458641126689066610890753079836635611789969774219913050456840122278188955139015473252491612410972950e-1"), - T("-5.69451448580118869157805059117807250106203230622762838051154208713065707949727035884250775206017528612930773233017928006e-1"), - T("5.37154819650306918873973169624898539483418364490295996462663218848771864764982600193558748568095521886456306061269765631e-1"), - T("9.85726070946814004698231423834505649751779161578718404221294527194525251740198034173542003704080544827976936213857653517e-1"), - T("2.26745517700332138489400566746499809209783385009289423848083137846668382711005704387134606000570923556980021574851618566e-1"), - T("-8.10006890365888881023982873786181048364505748637138923322482323010218991062084191379116946709356002103893071903481540337e-1"), - T("-8.54470151393449484710948210543666267680196067632693416660536443330720708402601669617638569732848938319544250428600991723e-1"), - T("1.47824914922605209542648603104533928946885824995208478684499907657728115943168395067575842431291755277452367320596435067e-1"), - T("9.69028856602232134498324179654622883463820270279077886397861028881882684131282848087869087883519707948141915733221980948e-1"), - T("6.03135714281336943093251136556365407562473924416812270469171432809743173719168209727199952532489544254928975940518615351e-1"), - T("-5.01621542149055350065079347615664213658089623368745676779267390227688581807037821041573344917735076902116221444127518632e-1"), + "-2.37609908807915949996042688873953402912174184373388399043229539427530802169622688886435380890546981798452174137747437590e-1", + "8.03406366226813589517543567844755380935198206635917017883860879215939165740799963435747185200486086864198723786516760875e-1", + "8.60219386510802105228997694366289682807721120146423711696179175800635220710279361583231346318224971127450760223168489952e-1", + "-1.36768951513839774357595871594675554406872039078811749027554673949684004409484639336417431285061889554892096426752261915e-1", + "-9.66210139195431691033548069227792927999642647449593184440815029076272297050360196975341458076547426373476590671462150981e-1", + "-6.12007278553856790723803948280976098970972124581361775428331444376106018942231526074915731012122426588769327127413045994e-1", + "4.91927698740873688392439262912409276430264703350691359723802294639643655296838880236042651349290074585311025856549893171e-1", + "9.93232596718899824059271235487971663771012607519717340071654721877802691370866768064059943491135925674950430467047724563e-1", + "2.77789911520199551017947550534057049374212876971194676010301098598339529915403722848373365985645657342475739669568931563e-1", + "-7.77955945956221239101360662190442739163791527953499629555756394261998892874934847131138921705713935365505245406994428077e-1", + "-8.80676278306736581575818642341143682410874043182925227659938804267878718513212454821032629378618345485453587099696563832e-1", + "9.54652155963865007116798560589970996367213754762169439269792747771200843006278637115722685610960738675814993576019945344e-2", + "9.54658201427917718824191302196929158303422390793460018465335986921801519149657723689322277773550748806000948225466432438e-1", + "6.44358700620889799575033272322899136331490664925359198096632560532437137894857803619177106562399406351419810452110265174e-1", + "-4.55304635273050571206400777159475409897339683148730716647371922365967582339285347105376503917296765204188604297021364549e-1", + "-9.97202532932553753622481171186283382950122646390227670693679248197349800205205290898290539070732778341271049474946533154e-1", + "-3.17489525058325500707686194437148362752290391406825231198381521862930317513649081353670386166519524315810546189268634469e-1", + "7.51160186640147504067744846462384089742696250681200524524912647858645140367792164416711871535116761744380912486921554617e-1", + "8.99610194168373157174515848193119670768490559799348397680196213249921436405001710937402190319584272526657508442591319630e-1", + "-5.39963892484342940823660554048696208293700871414984387094529796385334086703752106515008832585578915389731907422242902573e-2", + "-9.41455348900839346761557896365239742769987576963330061702397697388879776230596944312519157729410022380228287314835345969e-1", + "-6.75595816763857390859268297670835380459024839344154743310231115864242050771191159334664874097564054770066166961642073448e-1", + "4.17894201894880415042381733708896725748531223743344790054523182948440843948904650988733732381978194392219295696279423635e-1", + "9.99447981389824371458566861195586395552622718284098766856978062347139060489410032781030191080200904443096549587568037683e-1", + "3.56640095868759075150409032448421838265699043643228482503057299699740924345262819242042067863780263400092250418388628640e-1", + "-7.23065426868134142613141384486526262450487633432466529798821958977732347646832059032382447792655111641456570392189752211e-1", + "-9.16988391192434436877664999042786024703848714036221388727578305299843547352325574309860356272561772723624753484063972217e-1", + "1.24341855683226931265962750806821531283439413068694552738675989282017066737438591268502070364982899342633928417210588531e-2", + "9.26624413643579136646620112107410908114766812511471130116341925013001661546817531064974089666536893346764523464250445838e-1", + "7.05664607841658050248613256866289182754229289446384595719719495272020558391145537620968819401219414243210529013148958366e-1", + "-3.79761093422301890838671114556341706055562482358183402807224298533060188038450560241345615647754569347252101282386222173e-1", + "-9.99965058979463689113370264378210962384824970050865061898892508056811665771886385589295806419278045318841717598003331419e-1", + "-3.95173919871548266286836251448043149039940610894391718791244019288314418437411707835924620250473697245151743147215758686e-1", + "6.93720251624319621941983929806434090162802383400620564454074825718151625795576680427510026452063593762417421561201654156e-1", + "9.32780816819880202610269817418700102084277332259524791943833699964920012022753227823298655560837271746316929623378078695e-1", + "2.91495208658083070508005579692813621670878962971611104453227900103973434149303469066898102622556226584993895360896300290e-2", + "-9.10191043170480685360743788297835112117551819731152897291272407935139876953384666161532187572493791297095784055525159185e-1", + "-7.34513075127503122343910106816656237074878218180284276449954797048122379869002663646507706411949095015624141821039453971e-1", + "3.40971254411713599427147477626159847871020791931107106418841144080445813896332252160005593096670674809345703079384115052e-1", + "9.98752871506016936810666998588493462933191829230756181478046320353377054175122206889047094521687205093218701141334147081e-1", + "4.33024359542714849537532946954507232835434973891665238942502273464321666207117525270650546741831354943253652514490075246e-1", + "-6.63175408268187738636594884921931867786416057472876635147295424128144233911929585327601381618059327766986981109409782838e-1", + "-9.46960160806563725719808910991708075372282242401645009270517113290439792088443109178772446465191984149998211903724560065e-1", + "-7.06828182905581345108929510344440443421290640066613022421187316650733628538705972455891575947230299102119854983197703150e-2", + "8.92183656127948379886438402777950080111433733329436790239129260607557296960582455582584117031260710927499215646838011844e-1", + "7.62091330231640362984555508176991632755732840163230620595759320390970951235395195394649584713540498911356433919369698423e-1", + "-3.01591765120371930643555588643712101466544136366607065361801475091335195383846047491935017919396438040414024941341524187e-1", + "-9.95813515236177554177387795413035497724212540625760091518605741283184405719984044075159457509720410668598540884613985023e-1", + "-4.70125959152223022135690700550251564040118601846181392455764893020377582359429013073566263451488554529709131439092909247e-1", + "6.31483718775865440843182928017874708719203714677143270278178885379757350754752477512514449375355491054871712891789652146e-1", + "1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "3.87481045630097871028201331640164477694000480353342897357083794605539506785023570062767753819472037935010414476627195076e-1", + "-6.99716878554812023132822640034166338740077082416915046841339368979161296335086955803240899441098534898926193252558848693e-1", + "-9.29735101124991407032113033015438177585645722877060262785796302722011806301680288369763295777635760805579255008366302180e-1", + "-2.07925797310208845709174899248298159909010721767168338004516304026594885686024530923209628704670627250569637267490913462e-2", + "9.13621640053945104047985280883096238900189007462190433514805702721127019097915088259906184736442916334750420359005079959e-1", + "7.28814716527795995795780587639833705107995825167970668466246348938821997240383021826681253777014938636567626203524137506e-1", + "-3.48817863192357573536083313907744269588018702862402502601699983054718835012048372083235768555953613790431700360695537918e-1", + "-9.99135337256258278958854200595331742602280601557283993231562055717063052179292021052372510863057206152466386086657442382e-1", + "-4.25474147219713305654097901385832164424798803616095278869643928816776198489330071073326518019520590535564717523756486665e-1", + "6.69409002349720857726983952566596052122726437391092096671257338244059819036586172017092390651026654050631669646310910927e-1", + "9.44240747589054266930136705015787520728797286842746645573763175559132491628984502333043316023599487896169049499868916865e-1", + "6.23417820549832676844933182722733277887833220127638406914080428946880981800946578131712749910941183940944526141109771339e-2", + "-8.95928229794837090592434136137683839101829890460754766346170956577979909285084363961363023377587044303560652568203578379e-1", + "-7.56652196635835430995109388017590459596111729342964992503572530290981857981790620732129221157071082788019187787999930361e-1", + "3.09551461133309219674309651201007026752336319933918953736299690287371505733386433918863300129026763968979930342098019300e-1", + "9.96542844308353945757715814452637400116215448012622700698887257177706625278927018059066920597035660000571997275705962011e-1", + "4.62731465522276407764000677957978862104808823938378826581864482071733508960062598574638347814740748458034065235894523010e-1", + "-6.37943500095315456672541800050589670140910744260281868746767523730582697622604545933849801882909439609368258115114388202e-1", + "-9.57113494461990955768932962010819183910065445494138937651443249061391692258872250121438832853873660881630205561168895590e-1", + "-1.03783175146302830356973378710923690121182237844646430783773333188328606275124873219756415071202025673009660963930966273e-1", + "8.76685468012988943166112725030293740012198666616661362437433807594683780986916439696374569274720383546275206733493672834e-1", + "7.83181178815072182812568575402104911406191663934571600092749188502783771503475038116599065276589122015600004250624262132e-1", + "-2.69749743842835294071354429049113807280228918034124159074991560056663623624511602063409428877143567459307323934051784210e-1", + "-9.92227004420417932443416371636723983768124774541445787394585828303853075015733744933294181104002649816119116502663362907e-1", + "-4.99188570507651271652464431008309802023236218596632956064119419694573621896525872847587264755853127438644874992889777436e-1", + "6.05374785886620830935500306718810628353011877048386199574451402773468315797082901705593423724389976967865835641164117478e-1", + "9.68331080574540181354402420018944004334504868848934676984951546671476956051983469715128604348963016773169794077158289730e-1", + "1.45045093347669933436797325432376656017480150281100519869038554695618054318368975927557872948037203212941966706926758604e-1", + "-8.55926631706799584065153976496431313099942493164544290051315786450857575707615522517293656706329757352795226750189755758e-1", + "-8.08355785820466703104647317116964786017731181599256098405978700298563758509572188640629418770593008092680980412866065299e-1", + "2.29481541445091823694157468006983283649885473964756916206813927875661041834620526229807744443043682778028709792615798955e-1", + "9.86195281084368344446227722442335005500018635181693920385626820970119467136148305491035657795704047666385553672680209923e-1", + "5.34782415974986828906369231191245075731384342252264783019973387059318216570499447505623911253042567598873910043381675873e-1", + "-5.71759181631212640256161075896307515511612057247572886814941945052483422285718810088660759708176904381865453799197101481e-1", + "-9.77874107069129472007009478090869879295520839405452365411822873037906082086100232576241983901051327761231156641104065497e-1", + "-1.86056181372276495846711248156316208757691570931906856005697361080864028851991674077024223201008430626166447144444086146e-1", + "8.33687619660983803179149188531271900120055171980951416163724579833511897001564116810390933587615557717585362295882429826e-1", + "8.32132482562487183916482822112362004641509381783438374175226355792137053285527706239574867923387554339582561002247202518e-1", + "-1.88816490768820368180947188938258919466912959009058295775702554895970560887437777994365295452696990115940651570073217522e-1", + "-9.78458105113103660973458641126689066610890753079836635611789969774219913050456840122278188955139015473252491612410972950e-1", + "-5.69451448580118869157805059117807250106203230622762838051154208713065707949727035884250775206017528612930773233017928006e-1", + "5.37154819650306918873973169624898539483418364490295996462663218848771864764982600193558748568095521886456306061269765631e-1", + "9.85726070946814004698231423834505649751779161578718404221294527194525251740198034173542003704080544827976936213857653517e-1", + "2.26745517700332138489400566746499809209783385009289423848083137846668382711005704387134606000570923556980021574851618566e-1", + "-8.10006890365888881023982873786181048364505748637138923322482323010218991062084191379116946709356002103893071903481540337e-1", + "-8.54470151393449484710948210543666267680196067632693416660536443330720708402601669617638569732848938319544250428600991723e-1", + "1.47824914922605209542648603104533928946885824995208478684499907657728115943168395067575842431291755277452367320596435067e-1", + "9.69028856602232134498324179654622883463820270279077886397861028881882684131282848087869087883519707948141915733221980948e-1", + "6.03135714281336943093251136556365407562473924416812270469171432809743173719168209727199952532489544254928975940518615351e-1", + "-5.01621542149055350065079347615664213658089623368745676779267390227688581807037821041573344917735076902116221444127518632e-1", }}; boost::uintmax_t max_err = 0; @@ -157,12 +157,12 @@ void test() { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = cos(euler_gamma * ((100 * k) - 5000)); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = cos(-euler_gamma * ((100 * k) - 5000)); - e = relative_error(val, data[k]); + e = relative_error(val, T(data[k])); err = e.template convert_to(); if(err > max_err) max_err = err; @@ -170,59 +170,59 @@ void test() std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 5000000000ULL); - static const boost::array near_one = + static const boost::array near_one = {{ - T("0.001103662615143147017601393734232421549156847219973314118949247990939859507971857976111288683988415478257878902917354105871236439563170045857810738102729287303674642020538722348587741395785016549139854168605590336633274890874911975139498047488076101124170425114828336211817830671418321600962996502656221412102902998671173649312277667706874059520046508702908872747388744526457997404065469953155187340837"), - T("0.0030157041572432190019717764776322147049224887913331212054173669461673516770769148735558540290915754514269097799280330158745508542936966046640795712691698490758472574837678659161855207596563250546269614348515005196657786359646020537231301121492728577410212550350070502426482802490452572415879214994201864402901595309726458026672888041860289772080407882673424767232857435141510615538430445535588448032261"), - T("0.0049277346741750694119109616231402901360500185022482787362616412856233338679208830974124749830793778323997684640684587346403570647040211088376986993615001420565608501262335822815041623056442245053684626079448221530207757672939048030945164948521320401574074802966260975904478775314730002799895049652983052125151436511589335123254582883803928373794668948878049089088843407672795237410750365571990834236348"), - T("0.0068397471757112108044544339281399968563253858411528016363900245610068161564091499398024110635089866212789583403491711476788985949178019078796740862827299289838108117219486357027460681238178010067475221327133396780718266880540272936860185783976937569903778160170225166328920201699827472893824363838439627437187765159770262282930293057633886299749088561182830982345936603553661004526800797082995898813903"), - T("0.008751734671690018552720976028788304981263251327799787402847843531098338033456389098956160956160597460869666211569183483587979772678557230743050583975270977754518475970489741156524119378847305446845331098526962579804361960647344836744631465315238254178161716870409320747176674142306881908614436607977326507761331050644035013756409444911127742401762647885817361924274132830920030936589562922803846509607"), - T("0.010663690172041286306192948782895990881227033104763005629047563262531418373465237876680529005058533981010793759446966868628480908709812402179047774888094761104238131843239037167212206469894485599085717216855637620318723457013401360290343196462723174177342294339229792213396006286331141933952648238459364417067676760977202812721209681621184724443514062993874571816382775241753902032787099435678672474841"), - T("0.012575606686811781116778815864446643746718166744927923785139233710240017201737625088406861185781739628293213436323314376708933534933748436720721568462267317026688561438144113855290140925120435317506169856461386623828941531577425811393721991195661429557079268566156800689149725770186985872449679872155877537432897653904213375816262709009448220490217917537801655330411526526290708967440087145630462068976"), - T("0.014487477226190798137230457835664944872810802211308342685055637400305474021552028493778559102552025380880477103065187688337931713540557562373991431880251553620947836940726544553647739994157300967262941976933375115946629204615918888689039777423610894099269527633757403818072000860056651445780074486612843419789636984117740884711882675016016919064788076097669389652323393864660933705259163296837955978748"), - T("0.016399294800535714798489384358524900105286836154421890562438917862501411947245037986455919696365301666112414890097246479762149456962809638588245466988584093380263545543023411087203351948681559905336010066900667101787138862856447778428938265451537422367650992162004154495705878092019403922006152498705687706013973674800621422751806347308220226407830977673540994341535381202679482907460136241543505771361"), - T("0.018311052420397544372537858201001145083914223029622271478159852925692124442640247100336262041440360412392318902558295108452513123454103504516607498763863728284797202978975409264141138861738184468257576157204552383675442780049333490201800526935793000727771598103735596829143729912656158790924063286176336412427525710457367751437348230246446466833498557166002214984255422115833828533909144072330080184872"), - T("0.020222743096546488827333191237246591760639730704704148795009602627175281013458865557238240830203973690492882935553111519759474835556686812553430134442713057622274348510526931333124437928482001301214776111358848026164688447150395879262705323533149853785508106018564787140458587165768350143018847840661371060583295055600185059031740386698369796694993301139380463919242175430688496936048982929502368583755"), - T("0.022134359839997490880406060727014362125793630864951833270601574861700025448109186301755833862830343973100181180995751924514611578149687732808840212399134735559355116816700346196685057916461444889179117142807858883574426062415931319905031345377305247124198345242221848293630112578508459623098934259229893301963120289071135120089672338617200639338087265986570094025605269870532431816151660553037324591448"), - T("0.024045895662035785157706623778569329505432699504171659064296747761761946910295074291838826981712792368282349553905175996858645967280135417577488810651594776626562252686758463813820791031580579721782251705600570838044158357396828391251385978824608388341556751951593319015721256942139947235672567093309227673005475237474351604086627391812539914665025071874865132198040631867741985556198082915821590691115"), - T("0.025957343574242448364285479040344211549214421772336408904791690210449825580868841229728937909141136116652894475476991471494524501035809956288247010861464302066154254736425460468024350571584780489213056428098560686376999562953811729945811217829999284678155635497607933780499844559793793320393174691097636750027421158473345884329284455326733063073401001936304522649050748641723222539485352644237494855455"), - T("0.027868696588519948373400137317728007608587427701668964330844960393232962659347088604492706251530487148805683505883152882204177723404307465324383408418716579280515871949790204586171885981761699066301009410176801635003961167315448162116236938093263170474354430610732127054993766008385425707409224417795873645410443727472246508894027549288331903202127478347028519320691939639175445464091747341289465807076"), - T("0.029779947717117692140641616959423088975059158964671307393654571763491553590582559015283533532986018614029995854278748039155177088839414450454409571267110720713374288363670804692289394770804051182510495900322915294613479146430103948686457060129295537542317247965142780968717375277053102667416124807987527429828758851341378395347636356414345553353015296944031211364374602764176767114282660874356057979248"), - T("0.03169108997265757234968007548831539092664261419258315028339932724609641378752993073240305448323210275610250474048387518003293691429670190316839718892647475151605557113852966925288722557261748981001717642661075734993748510506277165730472207647763678204813714194082852502621623007244214605646094787730992510318924772328958129857640953691466395972638014259980360897599169526022683004620965496473543834477"), - T("0.033602116368159512696233026049065446239504816931754722314316906991719894135599777826750609185018647633748023602662568553364455253741994701511752478506175671449029859193583332380924298164350627023797218098539441228986492601142199774579432202424360114528105854714450548265654769162069979862894518829365029262734944196495563243510942310738160350648115273816371164862001848102516957052031698646996790510953"), - T("0.035513019917067011716864665791693591701266221069066142988726516832036728613300457006403299601385922973285573124147669717618486570986860008564309641657943172757912451506572783449830586163814477502720341010870119231030511664725149033496023356743601581035789746158436049009960920433265660001864258067191594425969638702851317416487965304378219676062220223886417078628342731900948906319081697480745936074075"), - T("0.037423793633272685069230163289099410548201460485083250584815890545695501760634737348027106921155349564805321222282824709072582234185849564440670000847571561359324629877368620222775856068569278590582843550096096627510109210574429458414697641703261368397349100700647508781941466979105505468662952228018391181441110331804231754679360190526351574820397399161022517352576803713854137820941977691824804918229"), - T("0.039334430531143806170384413477273936914540782490679532559795199052084263353981243128408259086619593938946158294175465792633584421592350011455198124846778194417281005620258982615227234871780679327289232072858751285307955384102986030326321993554199425677956531006546270705693578070953933490084008156062047268010604414954653769711129551190023978078265436680151306319349753427763894284339669614362603225399"), - T("0.041244923625547845099780771389235760645292527949481044094490883777921290140650504322516472637184803214130714431279474404434513167088543202171922178874118967991301744186858054508473413647148744260057423931033177973119110921967581379650616945061418716237102199971097086754171168500651650526166023618723542873290120298640370217463634503988257867984189842393302366909916756244585593509804376197012137137735"), - T("0.043155265931878005673591620105503250213648422568500347993529171942176855000247082147052189275394127432389966427668413127665366489709229602926384588361071126297040547180622989395253518259197742053810419372452372506534313264090033740095357809571640645325965973975968081307185286025492280541542290934505383760407808393490207181258819590768103829347539943429968533891105456889889207923129412409325200337396"), - T("0.045065450466078760596989313842010956972889269629840996618541471076456145341576346037140737554087089598232657340541865108389258265511462307708855932308284610805209084413460614598570062354088931179587984702006847566162492414964136182928014974554852612762940578089297583097434972291633301329615187665009664697057933900728259220674217919826618275818024987757805509580781060051826778978395144370327934582031"), - T("0.046975470244671384601033063916347240271496301008030038885300525267985292259051299166038486168462131096926077920611254966322965395673221324506213593415263189667393727124978454125104192236004303056348320706091018781990803164595039969574510002737990997634364247271320535459089400357647302806652831431190979518269432197656547265417669309719787317687585776029758282182901563328846367691507505917911626458378"), - T("0.048885318284779485470814703449342779874157141188272539012461507790598796169844054420701400747288103863351008593834375336008952419161297787680355981672505884405645257094616683497040471721980241679616912483788844007649447969703512155758482444019770785766752697959554691538291379700303132353876869628124563105576278585509058450081192711918856522653293896204836307264696289474219755720645459588331890558889"), - T("0.050794987604154532871523976044438688478988546522275702591135165295075684834775069782087540212155311599924632216878717363279038406203747968637573994688146329296755023729170505930935028107359530042909822369245609091696704070694133386183688825674952803613566914142157159664703170379754943610785780639205752343103591085978554489192416588288410803225066825839880971435465232206429722600557780654218330146221"), - T("0.052704471221201384879102044313723519214541830844294339002006150295000261803629777930668202713875629368914012613840180174156598399096984605842000917709330893871365961242812860633022132663435078869433262371062200555333508565564704972551921154864927879748108180002977668648111714062992755985320189721615088748697314805428967770533095416911693326757965362169171309026356339280576158225848771071227224373815"), - T("0.054613762155003812122160305957618147686113745063989650607179163157398820817715079449268802189362998719256947035541552524839497119721884536865240705017403409053301625152685151644761334409897199810093505097528650897729279062117617766845257388412635800174656504897022571125534403010151970450307624961920347280823962725005822339087173498538012712497715370388872960900453285934131578336748483622553313648565"), - T("0.056522853425350019441850338124226420404372628229474954730316461224029279793449121148941830155705856364290655296696008865349058650396297667951745639266344993911111272076019522476315254920931469406381088740392436352997178777214659473302034620137440843681809428909274912969436139312159105442160243076856936138443854294531618433726198293972487505166088883354213979143973990964298454127970039847456893860203"), - T("0.058431738052758164976379864942430396555977098734986011309321413104802080798824039565461521608355122102022725461220269967251619843394860641070621951433765763369761658916816880868188275032453137184211673934079277285593935159478757148621410070196500221526968060556586710920750728824112282461003224923995158937905479480579208549847478185757177039153501786271361921802927586114942206193581554801605680183774"), - T("0.060340409058501876576879058406717550375449897922866349024612531373677724965692896763451690034750214807393086060232183962741893455630800282528706094634312497867863194252914455062127544671909424505367559503649890477570116767021509485710626043408265846213906257952113003324887350087083283630715857354116849013376841533857321740197047217435805280085872071354373524395263864933170034771001607559366437835689"), - T("0.06224885946463576546133123915706193746686049729742751789281333411875145041642253752249398319274836506892916659694331849766284472811963607782488993959669913942440995816339529777656740297867471191540909520680122909159182411803441391065468297111274482089347737322313334144161837035757661055283810143238846811496286086926075008068489724098160672664550444107807861952850135669761489736449089327971794824585"), - T("0.064157082294020937013292141108273585068933185681722806586173136512969086561151000586083228827704474922133659368208499428517560937267711287558275856325851735527047525549135602809953924346232393575354505341516408877034795144989051337120442048812961016500803766780090428411925756071299228254760633032932651170483895163866111455935100454818941073761804284777739005007991141161823471943803047351369535073521"), - T("0.066065070570350498632132342303164932774411476452581548988386145454309844170784631219900687545375669726062411278210148833761887075889382631711319762066717518842787273543143969874177059386003262516941215168234997245420735913778365997498382320917159517052861653706668051150014889560865161606396037665048820655743861710636504450723955435275019348223982732095398949832565423361714391500479155224225613768011"), - T("0.067972817318175064541548243754498015429928588516517183822313264446879635682093113384264993280408482780193047687370305892309106748875519486540879020142902362307237689684697063792225838111742241714789823601251998299331254097504567214769822096812914869886418586879378868131071702869283011709161582762527864014863950459121468893761825841337802563429112718615110803469902519051203360473993644451463303576859"), - T("0.069880315562928257463098098362562671709183706398122146969098129179472379455539984270317889382725678551314678030902515782188203802362460214070192378666311369730755912670660970378408284876465192356340335277225457776091515934608751710356445501169982098020701963512215973413220903547301855847279762573955110834619967590588317288171580291576756417265600792610005176888567344924086299458709493921684370833814"), - T("0.071787558330952207061531053207739391124226218288071373402959685303573894071937999096931283415397385296306228484128726125223568292760110763075739612174182840148193517540379302896938375357744754831885570482299802985278525692833941172622048860945698352794727105726197891701070706523197225463566498764869186174536278875440544967870368440256565084805804998877012238900798874720340885805165811704445925369809"), - T("0.07369453864952304506868897057861922170414313661538863465614770246556638808351254050794164760581857499175318127117745597595046399453737415234966090460819383278338184265518294393589316067434296307320873514873375534499000895507092920123162793722742278902956263178675873980121089525814840115300730124457959632013360479776554262210801798434607194598511786777350540581826836696200671400628870250659962729555"), - T("0.075601249546876396992772935963040077834759122887264324876826746597298507042570795315940378957369646666545616927930046677179646722187557860442506025110541968257406052679604681892086517951648112201767029044637142334937786145563391280677987040697732028896674786378870229133792190093646530752257521390201161387698590619925316803401938362974478273195688740273778224688121208296858072701246429755713258468481"), - T("0.077507684052232870319778844857360483087988665809157375994805235390695227945273826842335916971262245322463861698987988491433092759415620685754813456247989287157909601376742141647886684380473379403067343977633347655683745871434202230624968375294472571053679501320680048739346844244553807193670436672857163839591129928936603341033670518982144557944158002407590669543043048232580344768659176122645763500513"), - T("0.079413835195823539113919284592789131508074280056913456617148863190077260584186476150168101766032692499585019572300009477107342325731806003539645749720998260074894005503243715777788187754550286488316966320623707403846973934258796072434720381188302956748572794547906591019552569722211941807674118070825610462581312695693650893380241875873254675082431417454526920871842555422162216221640850141209989864308"), - T("0.081319696008915424923862092389736899811819511475112310887916890436246797704730704673729056088324784096921353721791055102563812592375189346816348952621603248827528923433998597558478366712658235656924601774921095079356565867874041683517103417362062033545480747089630436317004907748679995334911923789802669273406449877710501792905734235548100216242648355048174292232350538531258791292074224222773259366265"), - T("0.083225259523836973901629476483826882570495097409722948211156651871411915926347698443317606324912095013846386144848076019334983060323996364575622231284156371311209803383868297666027142776492604713451401116304951916037351315288808149328656282592946622481248077426878390562084748274992526750980236994304445617883874613002677387890383751048690275480465558930319669630406765794141303531112767626885032234711"), - T("0.085130518774003530041015433371012162123590338565297712899451572274044870858132401685294989726432756808251618198809497117031428754224182463768189333992610411750324249283786647605964593556580841488686189374310703328490638378071341189999989736919850819640255203388192531225871093915262442913255553964348789674386732423763999398384843950222967487918049677831350991752153610543052586794779289758903475438463"), - T("0.087035466793942804442393380943589773874807384137701777807755858606555806090045313793349743667697666495784828540247587627381581545620918795107877715086227932192756144780086856515641298195558204484728115519445514732755572178929839231921546119143469647706999890259163924570037168105911942268212237224359201159897493303064534985539474450028748960081579369980283792804593122976296597796047722827878891322393"), - T("0.088940096619320340510800454481897179643787714504988904779549430422905882044782054375828906100456879992313640144934242418129400679706865644316664458061953684856607341811667576418163339843372041295322709797007871604740491453013916791024918954258557372755707588171502529270934617054742841996068375532958173787119651672031238405892943090742861150287144368470297356054911834742041692715934237148148936307154"), - T("0.090844401286964974994199780075024285173534240616972938308566124002318176156233343333797652771250228033597767340846476094210813299723066344955542455246897302945908336756464582189829335315055318509171623072382573656172991307091055717376996812421994002305994837615827430425975713541786272473174908117299253875064746541808768776888139494200307162476704515967971265236163183394620211890252072718610942571965"), - T("0.092748373834894294768837248013614869545920040757666771889792264347367335922283987944081370356939214799510822558638935486112190359701790662792925773186897671244831971450474952036618937833706899006048469791213129922302798462311426294239282200248625552430083292818594731518350634587677158329361662244008606299358410273467156168469937529868888478684257396004386633746334360279683178784117372066095688934486"), - T("0.094652007302340089278624856973167138217258137565762699413364163993950641989798336903224059425798872308451866930780842878435503832366316245159154044350517727312654980455290163514021860802028251981954724580292247887851185639950862672925642859475325430465650514258094310141033116303195908372018392349011340787373492402788283020594141795669947097771918542864972570255253465754192708165241608041715996375567"), - T("0.09655529472977379853549858833033074225823562054271495313739665642376685099661084023094270272485976247900824483810911634635819558334630910267353320029261330296977292720266655308513559530586843550229208517388789783011887450865488554143475302590353915732321663418057567573042594801866258948380684000769091353165879953111046260532796891917772727185993569684246844052518121013717183610828519193371796413317"), + "0.001103662615143147017601393734232421549156847219973314118949247990939859507971857976111288683988415478257878902917354105871236439563170045857810738102729287303674642020538722348587741395785016549139854168605590336633274890874911975139498047488076101124170425114828336211817830671418321600962996502656221412102902998671173649312277667706874059520046508702908872747388744526457997404065469953155187340837", + "0.0030157041572432190019717764776322147049224887913331212054173669461673516770769148735558540290915754514269097799280330158745508542936966046640795712691698490758472574837678659161855207596563250546269614348515005196657786359646020537231301121492728577410212550350070502426482802490452572415879214994201864402901595309726458026672888041860289772080407882673424767232857435141510615538430445535588448032261", + "0.0049277346741750694119109616231402901360500185022482787362616412856233338679208830974124749830793778323997684640684587346403570647040211088376986993615001420565608501262335822815041623056442245053684626079448221530207757672939048030945164948521320401574074802966260975904478775314730002799895049652983052125151436511589335123254582883803928373794668948878049089088843407672795237410750365571990834236348", + "0.0068397471757112108044544339281399968563253858411528016363900245610068161564091499398024110635089866212789583403491711476788985949178019078796740862827299289838108117219486357027460681238178010067475221327133396780718266880540272936860185783976937569903778160170225166328920201699827472893824363838439627437187765159770262282930293057633886299749088561182830982345936603553661004526800797082995898813903", + "0.008751734671690018552720976028788304981263251327799787402847843531098338033456389098956160956160597460869666211569183483587979772678557230743050583975270977754518475970489741156524119378847305446845331098526962579804361960647344836744631465315238254178161716870409320747176674142306881908614436607977326507761331050644035013756409444911127742401762647885817361924274132830920030936589562922803846509607", + "0.010663690172041286306192948782895990881227033104763005629047563262531418373465237876680529005058533981010793759446966868628480908709812402179047774888094761104238131843239037167212206469894485599085717216855637620318723457013401360290343196462723174177342294339229792213396006286331141933952648238459364417067676760977202812721209681621184724443514062993874571816382775241753902032787099435678672474841", + "0.012575606686811781116778815864446643746718166744927923785139233710240017201737625088406861185781739628293213436323314376708933534933748436720721568462267317026688561438144113855290140925120435317506169856461386623828941531577425811393721991195661429557079268566156800689149725770186985872449679872155877537432897653904213375816262709009448220490217917537801655330411526526290708967440087145630462068976", + "0.014487477226190798137230457835664944872810802211308342685055637400305474021552028493778559102552025380880477103065187688337931713540557562373991431880251553620947836940726544553647739994157300967262941976933375115946629204615918888689039777423610894099269527633757403818072000860056651445780074486612843419789636984117740884711882675016016919064788076097669389652323393864660933705259163296837955978748", + "0.016399294800535714798489384358524900105286836154421890562438917862501411947245037986455919696365301666112414890097246479762149456962809638588245466988584093380263545543023411087203351948681559905336010066900667101787138862856447778428938265451537422367650992162004154495705878092019403922006152498705687706013973674800621422751806347308220226407830977673540994341535381202679482907460136241543505771361", + "0.018311052420397544372537858201001145083914223029622271478159852925692124442640247100336262041440360412392318902558295108452513123454103504516607498763863728284797202978975409264141138861738184468257576157204552383675442780049333490201800526935793000727771598103735596829143729912656158790924063286176336412427525710457367751437348230246446466833498557166002214984255422115833828533909144072330080184872", + "0.020222743096546488827333191237246591760639730704704148795009602627175281013458865557238240830203973690492882935553111519759474835556686812553430134442713057622274348510526931333124437928482001301214776111358848026164688447150395879262705323533149853785508106018564787140458587165768350143018847840661371060583295055600185059031740386698369796694993301139380463919242175430688496936048982929502368583755", + "0.022134359839997490880406060727014362125793630864951833270601574861700025448109186301755833862830343973100181180995751924514611578149687732808840212399134735559355116816700346196685057916461444889179117142807858883574426062415931319905031345377305247124198345242221848293630112578508459623098934259229893301963120289071135120089672338617200639338087265986570094025605269870532431816151660553037324591448", + "0.024045895662035785157706623778569329505432699504171659064296747761761946910295074291838826981712792368282349553905175996858645967280135417577488810651594776626562252686758463813820791031580579721782251705600570838044158357396828391251385978824608388341556751951593319015721256942139947235672567093309227673005475237474351604086627391812539914665025071874865132198040631867741985556198082915821590691115", + "0.025957343574242448364285479040344211549214421772336408904791690210449825580868841229728937909141136116652894475476991471494524501035809956288247010861464302066154254736425460468024350571584780489213056428098560686376999562953811729945811217829999284678155635497607933780499844559793793320393174691097636750027421158473345884329284455326733063073401001936304522649050748641723222539485352644237494855455", + "0.027868696588519948373400137317728007608587427701668964330844960393232962659347088604492706251530487148805683505883152882204177723404307465324383408418716579280515871949790204586171885981761699066301009410176801635003961167315448162116236938093263170474354430610732127054993766008385425707409224417795873645410443727472246508894027549288331903202127478347028519320691939639175445464091747341289465807076", + "0.029779947717117692140641616959423088975059158964671307393654571763491553590582559015283533532986018614029995854278748039155177088839414450454409571267110720713374288363670804692289394770804051182510495900322915294613479146430103948686457060129295537542317247965142780968717375277053102667416124807987527429828758851341378395347636356414345553353015296944031211364374602764176767114282660874356057979248", + "0.03169108997265757234968007548831539092664261419258315028339932724609641378752993073240305448323210275610250474048387518003293691429670190316839718892647475151605557113852966925288722557261748981001717642661075734993748510506277165730472207647763678204813714194082852502621623007244214605646094787730992510318924772328958129857640953691466395972638014259980360897599169526022683004620965496473543834477", + "0.033602116368159512696233026049065446239504816931754722314316906991719894135599777826750609185018647633748023602662568553364455253741994701511752478506175671449029859193583332380924298164350627023797218098539441228986492601142199774579432202424360114528105854714450548265654769162069979862894518829365029262734944196495563243510942310738160350648115273816371164862001848102516957052031698646996790510953", + "0.035513019917067011716864665791693591701266221069066142988726516832036728613300457006403299601385922973285573124147669717618486570986860008564309641657943172757912451506572783449830586163814477502720341010870119231030511664725149033496023356743601581035789746158436049009960920433265660001864258067191594425969638702851317416487965304378219676062220223886417078628342731900948906319081697480745936074075", + "0.037423793633272685069230163289099410548201460485083250584815890545695501760634737348027106921155349564805321222282824709072582234185849564440670000847571561359324629877368620222775856068569278590582843550096096627510109210574429458414697641703261368397349100700647508781941466979105505468662952228018391181441110331804231754679360190526351574820397399161022517352576803713854137820941977691824804918229", + "0.039334430531143806170384413477273936914540782490679532559795199052084263353981243128408259086619593938946158294175465792633584421592350011455198124846778194417281005620258982615227234871780679327289232072858751285307955384102986030326321993554199425677956531006546270705693578070953933490084008156062047268010604414954653769711129551190023978078265436680151306319349753427763894284339669614362603225399", + "0.041244923625547845099780771389235760645292527949481044094490883777921290140650504322516472637184803214130714431279474404434513167088543202171922178874118967991301744186858054508473413647148744260057423931033177973119110921967581379650616945061418716237102199971097086754171168500651650526166023618723542873290120298640370217463634503988257867984189842393302366909916756244585593509804376197012137137735", + "0.043155265931878005673591620105503250213648422568500347993529171942176855000247082147052189275394127432389966427668413127665366489709229602926384588361071126297040547180622989395253518259197742053810419372452372506534313264090033740095357809571640645325965973975968081307185286025492280541542290934505383760407808393490207181258819590768103829347539943429968533891105456889889207923129412409325200337396", + "0.045065450466078760596989313842010956972889269629840996618541471076456145341576346037140737554087089598232657340541865108389258265511462307708855932308284610805209084413460614598570062354088931179587984702006847566162492414964136182928014974554852612762940578089297583097434972291633301329615187665009664697057933900728259220674217919826618275818024987757805509580781060051826778978395144370327934582031", + "0.046975470244671384601033063916347240271496301008030038885300525267985292259051299166038486168462131096926077920611254966322965395673221324506213593415263189667393727124978454125104192236004303056348320706091018781990803164595039969574510002737990997634364247271320535459089400357647302806652831431190979518269432197656547265417669309719787317687585776029758282182901563328846367691507505917911626458378", + "0.048885318284779485470814703449342779874157141188272539012461507790598796169844054420701400747288103863351008593834375336008952419161297787680355981672505884405645257094616683497040471721980241679616912483788844007649447969703512155758482444019770785766752697959554691538291379700303132353876869628124563105576278585509058450081192711918856522653293896204836307264696289474219755720645459588331890558889", + "0.050794987604154532871523976044438688478988546522275702591135165295075684834775069782087540212155311599924632216878717363279038406203747968637573994688146329296755023729170505930935028107359530042909822369245609091696704070694133386183688825674952803613566914142157159664703170379754943610785780639205752343103591085978554489192416588288410803225066825839880971435465232206429722600557780654218330146221", + "0.052704471221201384879102044313723519214541830844294339002006150295000261803629777930668202713875629368914012613840180174156598399096984605842000917709330893871365961242812860633022132663435078869433262371062200555333508565564704972551921154864927879748108180002977668648111714062992755985320189721615088748697314805428967770533095416911693326757965362169171309026356339280576158225848771071227224373815", + "0.054613762155003812122160305957618147686113745063989650607179163157398820817715079449268802189362998719256947035541552524839497119721884536865240705017403409053301625152685151644761334409897199810093505097528650897729279062117617766845257388412635800174656504897022571125534403010151970450307624961920347280823962725005822339087173498538012712497715370388872960900453285934131578336748483622553313648565", + "0.056522853425350019441850338124226420404372628229474954730316461224029279793449121148941830155705856364290655296696008865349058650396297667951745639266344993911111272076019522476315254920931469406381088740392436352997178777214659473302034620137440843681809428909274912969436139312159105442160243076856936138443854294531618433726198293972487505166088883354213979143973990964298454127970039847456893860203", + "0.058431738052758164976379864942430396555977098734986011309321413104802080798824039565461521608355122102022725461220269967251619843394860641070621951433765763369761658916816880868188275032453137184211673934079277285593935159478757148621410070196500221526968060556586710920750728824112282461003224923995158937905479480579208549847478185757177039153501786271361921802927586114942206193581554801605680183774", + "0.060340409058501876576879058406717550375449897922866349024612531373677724965692896763451690034750214807393086060232183962741893455630800282528706094634312497867863194252914455062127544671909424505367559503649890477570116767021509485710626043408265846213906257952113003324887350087083283630715857354116849013376841533857321740197047217435805280085872071354373524395263864933170034771001607559366437835689", + "0.06224885946463576546133123915706193746686049729742751789281333411875145041642253752249398319274836506892916659694331849766284472811963607782488993959669913942440995816339529777656740297867471191540909520680122909159182411803441391065468297111274482089347737322313334144161837035757661055283810143238846811496286086926075008068489724098160672664550444107807861952850135669761489736449089327971794824585", + "0.064157082294020937013292141108273585068933185681722806586173136512969086561151000586083228827704474922133659368208499428517560937267711287558275856325851735527047525549135602809953924346232393575354505341516408877034795144989051337120442048812961016500803766780090428411925756071299228254760633032932651170483895163866111455935100454818941073761804284777739005007991141161823471943803047351369535073521", + "0.066065070570350498632132342303164932774411476452581548988386145454309844170784631219900687545375669726062411278210148833761887075889382631711319762066717518842787273543143969874177059386003262516941215168234997245420735913778365997498382320917159517052861653706668051150014889560865161606396037665048820655743861710636504450723955435275019348223982732095398949832565423361714391500479155224225613768011", + "0.067972817318175064541548243754498015429928588516517183822313264446879635682093113384264993280408482780193047687370305892309106748875519486540879020142902362307237689684697063792225838111742241714789823601251998299331254097504567214769822096812914869886418586879378868131071702869283011709161582762527864014863950459121468893761825841337802563429112718615110803469902519051203360473993644451463303576859", + "0.069880315562928257463098098362562671709183706398122146969098129179472379455539984270317889382725678551314678030902515782188203802362460214070192378666311369730755912670660970378408284876465192356340335277225457776091515934608751710356445501169982098020701963512215973413220903547301855847279762573955110834619967590588317288171580291576756417265600792610005176888567344924086299458709493921684370833814", + "0.071787558330952207061531053207739391124226218288071373402959685303573894071937999096931283415397385296306228484128726125223568292760110763075739612174182840148193517540379302896938375357744754831885570482299802985278525692833941172622048860945698352794727105726197891701070706523197225463566498764869186174536278875440544967870368440256565084805804998877012238900798874720340885805165811704445925369809", + "0.07369453864952304506868897057861922170414313661538863465614770246556638808351254050794164760581857499175318127117745597595046399453737415234966090460819383278338184265518294393589316067434296307320873514873375534499000895507092920123162793722742278902956263178675873980121089525814840115300730124457959632013360479776554262210801798434607194598511786777350540581826836696200671400628870250659962729555", + "0.075601249546876396992772935963040077834759122887264324876826746597298507042570795315940378957369646666545616927930046677179646722187557860442506025110541968257406052679604681892086517951648112201767029044637142334937786145563391280677987040697732028896674786378870229133792190093646530752257521390201161387698590619925316803401938362974478273195688740273778224688121208296858072701246429755713258468481", + "0.077507684052232870319778844857360483087988665809157375994805235390695227945273826842335916971262245322463861698987988491433092759415620685754813456247989287157909601376742141647886684380473379403067343977633347655683745871434202230624968375294472571053679501320680048739346844244553807193670436672857163839591129928936603341033670518982144557944158002407590669543043048232580344768659176122645763500513", + "0.079413835195823539113919284592789131508074280056913456617148863190077260584186476150168101766032692499585019572300009477107342325731806003539645749720998260074894005503243715777788187754550286488316966320623707403846973934258796072434720381188302956748572794547906591019552569722211941807674118070825610462581312695693650893380241875873254675082431417454526920871842555422162216221640850141209989864308", + "0.081319696008915424923862092389736899811819511475112310887916890436246797704730704673729056088324784096921353721791055102563812592375189346816348952621603248827528923433998597558478366712658235656924601774921095079356565867874041683517103417362062033545480747089630436317004907748679995334911923789802669273406449877710501792905734235548100216242648355048174292232350538531258791292074224222773259366265", + "0.083225259523836973901629476483826882570495097409722948211156651871411915926347698443317606324912095013846386144848076019334983060323996364575622231284156371311209803383868297666027142776492604713451401116304951916037351315288808149328656282592946622481248077426878390562084748274992526750980236994304445617883874613002677387890383751048690275480465558930319669630406765794141303531112767626885032234711", + "0.085130518774003530041015433371012162123590338565297712899451572274044870858132401685294989726432756808251618198809497117031428754224182463768189333992610411750324249283786647605964593556580841488686189374310703328490638378071341189999989736919850819640255203388192531225871093915262442913255553964348789674386732423763999398384843950222967487918049677831350991752153610543052586794779289758903475438463", + "0.087035466793942804442393380943589773874807384137701777807755858606555806090045313793349743667697666495784828540247587627381581545620918795107877715086227932192756144780086856515641298195558204484728115519445514732755572178929839231921546119143469647706999890259163924570037168105911942268212237224359201159897493303064534985539474450028748960081579369980283792804593122976296597796047722827878891322393", + "0.088940096619320340510800454481897179643787714504988904779549430422905882044782054375828906100456879992313640144934242418129400679706865644316664458061953684856607341811667576418163339843372041295322709797007871604740491453013916791024918954258557372755707588171502529270934617054742841996068375532958173787119651672031238405892943090742861150287144368470297356054911834742041692715934237148148936307154", + "0.090844401286964974994199780075024285173534240616972938308566124002318176156233343333797652771250228033597767340846476094210813299723066344955542455246897302945908336756464582189829335315055318509171623072382573656172991307091055717376996812421994002305994837615827430425975713541786272473174908117299253875064746541808768776888139494200307162476704515967971265236163183394620211890252072718610942571965", + "0.092748373834894294768837248013614869545920040757666771889792264347367335922283987944081370356939214799510822558638935486112190359701790662792925773186897671244831971450474952036618937833706899006048469791213129922302798462311426294239282200248625552430083292818594731518350634587677158329361662244008606299358410273467156168469937529868888478684257396004386633746334360279683178784117372066095688934486", + "0.094652007302340089278624856973167138217258137565762699413364163993950641989798336903224059425798872308451866930780842878435503832366316245159154044350517727312654980455290163514021860802028251981954724580292247887851185639950862672925642859475325430465650514258094310141033116303195908372018392349011340787373492402788283020594141795669947097771918542864972570255253465754192708165241608041715996375567", + "0.09655529472977379853549858833033074225823562054271495313739665642376685099661084023094270272485976247900824483810911634635819558334630910267353320029261330296977292720266655308513559530586843550229208517388789783011887450865488554143475302590353915732321663418057567573042594801866258948380684000769091353165879953111046260532796891917772727185993569684246844052518121013717183610828519193371796413317", }}; T half_pi = "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"; @@ -232,12 +232,12 @@ void test() { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = cos(half_pi - (euler_gamma + k) / 523); - T e = relative_error(val, near_one[k]); + T e = relative_error(val, T(near_one[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = cos(-half_pi + (euler_gamma + k) / 523); - e = relative_error(val, near_one[k]); + e = relative_error(val, T(near_one[k])); err = e.template convert_to(); if(err > max_err) max_err = err; diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index b4dc8601..a107e4ce 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -47,59 +47,59 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ - T("1.0560191127459844751259038114395241283965590525302917878166464679729562764239266483419824023679041866569431842053263976225991679105269492268050148624443706785607467750929028856273183654547152707568642275917435773104050171284580773949313906303074811586096214771879801872225500237540725592288167903987152007171391207680034517664218965133028298959753155835975555361514087618679892905973726581183754237665"), - T("6.0577917650974496023981039346694689204850927958941226507775366589415588030232830758139222010716099059155799853188868489737439396141346120898610181630988217093945337280471788812956307352429914669334599644412036010014302812555700905490062030666482387008384856645533100266205122930455496234252478878949675888122615795451076521244771554025667181070733415815608287241160724578541982548132473721865287585003"), - T("383.32956577005424506758441449272199796616394738942294350035763341369127219359132618750028176886177362785452836065735889720098699937365992620246167965376788963171659530350198190156275836547285437366012371175910490835823389352716981464503672749829183569550509561579181434088407652213421105693358960196044447948190823567291153397039759820680087749250557665869797605969680417240900163183563482342795870741"), - T("180470.88335034971169904627554690213669106779370247753503772451628313223853228134148123711258586005038324156900626143047383382773083164188515409766952843294484598668304799186411411329575367546332731190431166613267871177008493921416649792646568096789971466064344922873643120446759328638447781504932928745974584136039698220604099816877847080168890581112550484205291341188894903342677757367415636409890558"), - T("6.2781497954189513287619297175142770025826052476955600323495790530946900406209789437212923381830889846578651793922971071825731424267985994598149826652782605981764572599129753631344305259620294513472869937699509893247230674850025066547664563263958672029867981296029855675095947587305949634130736118694040608573981560192569935477462121110619100122692626135788198431038121227062383110684489973794745342204e8"), - T("1.613783114750852113223226710244634574082654363427931747177970610142560035434819323665197978270795707611590961019502906079030261920109649748962125930850198625621792763842224096823299250338750953491004408731082880660125641628213970297576817341593254767125933119462446651783267917469179893016103516988279473907996009458208097272806046395206212403180775656514566222835047724943633607736647735739948551096e13"), - T("3.0651210048650948869531196671342477415226643123350617715268971834881834615138925908518703584506447138436613632341330640449725016173384960626760387649747643297918807083363913015806893683786389067836005832038060734248371426886808175554210317756018846109627572546314172492701544345965940408777570519312837860014177872754358662463423939942202520475422342889660750666147940146262635303938752019875745307992e18"), - T("4.3016893602106215864771434464025735547192956887050537014696231526954713331351791376069506688795159316625154458115179050297716224800318064110052445970764898870599885508391064218065806885129697936678362276766771902589638957537168339190488273555753876162633237990462617955892238424402124353124736879474651977422350856642986446591941163073842974714357745162365700428610167249762162775568692443158879770006e24"), - T("4.4608685929681360001024935791890661655506049487122331222491789277138083092507844933483858468341107613657448783043064935174812965310544903547535217357996429824403225005261842368679242972243707736489629610256554995236901040773902962370130989883960298987808008001651650799892267761089302132749037069497452309074389846493140222931714618697738906019885122076310868220596765753447232222740129365498326869428e31"), - T("3.4181315955816806472569357441100390029536003312981931954091744304974491527743601285017456624487264929971022746516079644284683284072159616291298593217459064246713801084801182706805865477209408120733740982340972570739267039630582468876075574706187115643861449939429503730606743466086010115127464706315791765264572070452800816054590653675962889901898843712936126341807733200610910325052666512334161414655e39"), - T("1.935294628272790810141453021278524976364077691905248015888165919062516673344977091262644262832934899971824373171672037249361491844419302323587942915162859665992916625636813244576210109931852761921719987632855596663907494303248513195744818730879742963301327852160193919379798462926667740594397712731448572837824802330973561570848397758210619453310032286208701226098998940360395267237151018055781640126e48"), - T("8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696411023621632714191313583360826598468217983223558130595633054971338824192327248896500337050246640453410159732184419096917171044075711156867804851018388576371530520943696439917673720450911725466781235347212700849702742625663288687644090935756560022610000629006347244369388824818661974220426e57"), - T("2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636307131078699799472622998437404149614292337267153201903296102921815263736653035269935857816159086496594269187082442244280898258397047045746728729079796167987895368614037770286371191530575814695859433478185016171380286325273493350193132538052551497175771289873181595171e68"), - T("5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887832891095928020095581695527354104986223411349657526888924224926675682032043363279774947976053895819671003276400297758359779703605970507328706064692923481168676751999124073697599262277247814864401196929320497117521176016017349797292609303756215e79"), - T("9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667380623792736661655695464087154725768656507603378053220212067894914686147301550764045337512361478831034999674296837635744344039906734109560908793921568633128400104314078575159786136202769893309913175064586488844295321363e91"), - T("1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120466881600981869890379917878811691555316448842731085218988710571211956972016424649758226606500603194972966032036214213759991156778846329137084961334557845326183588274571457361004704490747798678e105"), - T("1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155601275526921302332118009966650991624878227108265079219497366770219141098050965023005919495048022616553249266192057652205987267068584616625670961423579715954410508985e119"), - T("7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004829725273067921443635526965673971412049693552004259820173389681647135125678701502084190660111860351299407405357314966388044340723077086e133"), - T("3.7985363580067976240250330165300706958269826851549371732460220923459822809007918495780412109700378352703982899561570150646963751463572075768540297484136809462018052149545042828665345287117150392150513078663739946623681053685054650372595872914400423446635806806461783139586204378680585507446218544068845246753010850565341852111017728985713047360191412931479535524815646071456825031827933342626130249175e149"), - T("1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174689070525154077366030192931540897742543089509897490703511310531249977e166"), - T("3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531488383930867055908047961915279983259e183"), - T("7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201"), - T("1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221"), - T("1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241"), - T("1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262"), - T("6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283"), - T("2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306"), - T("9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329"), - T("2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354"), - T("4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379"), - T("5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405"), - T("5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432"), - T("4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460"), - T("2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489"), - T("8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518"), - T("2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549"), - T("5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580"), - T("8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612"), - T("1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646"), - T("9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679"), - T("5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714"), - T("2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750"), - T("9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786"), - T("2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824"), - T("4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862"), - T("7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901"), - T("7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941"), - T("5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982"), - T("3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024"), - T("1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067"), - T("4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110"), + "1.0560191127459844751259038114395241283965590525302917878166464679729562764239266483419824023679041866569431842053263976225991679105269492268050148624443706785607467750929028856273183654547152707568642275917435773104050171284580773949313906303074811586096214771879801872225500237540725592288167903987152007171391207680034517664218965133028298959753155835975555361514087618679892905973726581183754237665", + "6.0577917650974496023981039346694689204850927958941226507775366589415588030232830758139222010716099059155799853188868489737439396141346120898610181630988217093945337280471788812956307352429914669334599644412036010014302812555700905490062030666482387008384856645533100266205122930455496234252478878949675888122615795451076521244771554025667181070733415815608287241160724578541982548132473721865287585003", + "383.32956577005424506758441449272199796616394738942294350035763341369127219359132618750028176886177362785452836065735889720098699937365992620246167965376788963171659530350198190156275836547285437366012371175910490835823389352716981464503672749829183569550509561579181434088407652213421105693358960196044447948190823567291153397039759820680087749250557665869797605969680417240900163183563482342795870741", + "180470.88335034971169904627554690213669106779370247753503772451628313223853228134148123711258586005038324156900626143047383382773083164188515409766952843294484598668304799186411411329575367546332731190431166613267871177008493921416649792646568096789971466064344922873643120446759328638447781504932928745974584136039698220604099816877847080168890581112550484205291341188894903342677757367415636409890558", + "6.2781497954189513287619297175142770025826052476955600323495790530946900406209789437212923381830889846578651793922971071825731424267985994598149826652782605981764572599129753631344305259620294513472869937699509893247230674850025066547664563263958672029867981296029855675095947587305949634130736118694040608573981560192569935477462121110619100122692626135788198431038121227062383110684489973794745342204e8", + "1.613783114750852113223226710244634574082654363427931747177970610142560035434819323665197978270795707611590961019502906079030261920109649748962125930850198625621792763842224096823299250338750953491004408731082880660125641628213970297576817341593254767125933119462446651783267917469179893016103516988279473907996009458208097272806046395206212403180775656514566222835047724943633607736647735739948551096e13", + "3.0651210048650948869531196671342477415226643123350617715268971834881834615138925908518703584506447138436613632341330640449725016173384960626760387649747643297918807083363913015806893683786389067836005832038060734248371426886808175554210317756018846109627572546314172492701544345965940408777570519312837860014177872754358662463423939942202520475422342889660750666147940146262635303938752019875745307992e18", + "4.3016893602106215864771434464025735547192956887050537014696231526954713331351791376069506688795159316625154458115179050297716224800318064110052445970764898870599885508391064218065806885129697936678362276766771902589638957537168339190488273555753876162633237990462617955892238424402124353124736879474651977422350856642986446591941163073842974714357745162365700428610167249762162775568692443158879770006e24", + "4.4608685929681360001024935791890661655506049487122331222491789277138083092507844933483858468341107613657448783043064935174812965310544903547535217357996429824403225005261842368679242972243707736489629610256554995236901040773902962370130989883960298987808008001651650799892267761089302132749037069497452309074389846493140222931714618697738906019885122076310868220596765753447232222740129365498326869428e31", + "3.4181315955816806472569357441100390029536003312981931954091744304974491527743601285017456624487264929971022746516079644284683284072159616291298593217459064246713801084801182706805865477209408120733740982340972570739267039630582468876075574706187115643861449939429503730606743466086010115127464706315791765264572070452800816054590653675962889901898843712936126341807733200610910325052666512334161414655e39", + "1.935294628272790810141453021278524976364077691905248015888165919062516673344977091262644262832934899971824373171672037249361491844419302323587942915162859665992916625636813244576210109931852761921719987632855596663907494303248513195744818730879742963301327852160193919379798462926667740594397712731448572837824802330973561570848397758210619453310032286208701226098998940360395267237151018055781640126e48", + "8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696411023621632714191313583360826598468217983223558130595633054971338824192327248896500337050246640453410159732184419096917171044075711156867804851018388576371530520943696439917673720450911725466781235347212700849702742625663288687644090935756560022610000629006347244369388824818661974220426e57", + "2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636307131078699799472622998437404149614292337267153201903296102921815263736653035269935857816159086496594269187082442244280898258397047045746728729079796167987895368614037770286371191530575814695859433478185016171380286325273493350193132538052551497175771289873181595171e68", + "5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887832891095928020095581695527354104986223411349657526888924224926675682032043363279774947976053895819671003276400297758359779703605970507328706064692923481168676751999124073697599262277247814864401196929320497117521176016017349797292609303756215e79", + "9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667380623792736661655695464087154725768656507603378053220212067894914686147301550764045337512361478831034999674296837635744344039906734109560908793921568633128400104314078575159786136202769893309913175064586488844295321363e91", + "1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120466881600981869890379917878811691555316448842731085218988710571211956972016424649758226606500603194972966032036214213759991156778846329137084961334557845326183588274571457361004704490747798678e105", + "1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155601275526921302332118009966650991624878227108265079219497366770219141098050965023005919495048022616553249266192057652205987267068584616625670961423579715954410508985e119", + "7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004829725273067921443635526965673971412049693552004259820173389681647135125678701502084190660111860351299407405357314966388044340723077086e133", + "3.7985363580067976240250330165300706958269826851549371732460220923459822809007918495780412109700378352703982899561570150646963751463572075768540297484136809462018052149545042828665345287117150392150513078663739946623681053685054650372595872914400423446635806806461783139586204378680585507446218544068845246753010850565341852111017728985713047360191412931479535524815646071456825031827933342626130249175e149", + "1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174689070525154077366030192931540897742543089509897490703511310531249977e166", + "3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531488383930867055908047961915279983259e183", + "7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201", + "1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221", + "1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241", + "1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262", + "6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283", + "2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306", + "9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329", + "2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354", + "4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379", + "5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405", + "5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432", + "4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460", + "2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489", + "8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518", + "2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549", + "5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580", + "8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612", + "1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646", + "9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679", + "5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714", + "2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750", + "9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786", + "2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824", + "4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862", + "7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901", + "7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941", + "5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982", + "3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024", + "1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067", + "4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110", }}; T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; @@ -109,12 +109,12 @@ void test() { const T x = eg + k; T val = boost::multiprecision::cosh(x * x); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = boost::multiprecision::cosh(-x * x); - e = relative_error(val, data[k]); + e = relative_error(val, T(data[k])); err = e.template convert_to(); if(err > max_err) max_err = err; diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 9582cb58..cd677c24 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -47,59 +47,59 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ - T("1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - T("9.47747587596218770242116751705184563668845029215054154915126374673142219159548534317576897266130328412495991561490384353e76"), - T("8.98225489794452370997623936390755615068333094834545092387689795875746440121970819499035111276893290879203289092353747850e153"), - T("8.51291041070124257524798251795398355552294928156627848633073113916721592074889256105483993631579761345100284245144410506e230"), - T("8.06809030516483860484254925989129017112482132468761563276276594763374886826841745433660192438855214332469192411759402790e307"), - T("7.64651312322841630493169711336894888932951818957138997327518186691187347879142222644283389432604713409023263917264358401e384"), - T("7.24696436606255985380192585665173794455118215150711210905481870053193336336731228464367470327868286988180495111406609690e461"), - T("6.86829299533155197480610865771404565313986987801060270120621935139741577246731459024227828759564450034267891072352816870e538"), - T("6.50940811722948585242669672360741252715012399316164518226061001845519670701239429603657927628755169479689062519606799624e615"), - T("6.16927583978348964454665652571294215251327375137123272041877979478545511090085756858225302357977159539777447847855503405e692"), - T("5.84691629437043896753869572004324228849833391140408095171257918435296982661233664069534601413835876272500275725690968474e769"), - T("5.54140081286660645835370762406928689330724181979654545550204201113926269281603301564114980528619942840737770415885783439e846"), - T("5.25184925229805200184933663459660562493261505058724212670923083643709964294855282715531768162298567379648573804433968486e923"), - T("4.97742745928448409225535325233998957076879979440190164347796593390995994951755710667491911026476108957070504003155645761e1000"), - T("4.71734486697204622371883518659702954552385115723942808636490157561056417525827884479573988899517566587636669779645610803e1077"), - T("4.47085221753216236037602345430121605512330975424643767098987010800161616413051148037751552110081034066081309007796182114e1154"), - T("4.23723940366531198300986713567588008777043812458400705569721660157434941774066620870256745107265536124077734836797938268e1231"), - T("4.01583342289144005397455901781647949754375366066998182220342540048111140676724909947493787596336610499122085983712119281e1308"), - T("3.80599643873362813900306284477369187319506389058898599816705625750135796510808933786432614186155972485637939057212164098e1385"), - T("3.60712394320959592074309301816510372687695286650188776957291994751966018917404878612237961367128638199290387601511358836e1462"), - T("3.41864301533745457066062991907289263038319874930395315315257927161138360206596116102724713069518697248463965164712972907e1539"), - T("3.24001067063873569456703204286462007769933831045558617578289414699244767403736057931834775727420762410328297596596814910e1616"), - T("3.07071229688386868087623659761166306563170839771162347830514606977592027644137144160294469813988158463967740978461420862e1693"), - T("2.91026017157373047094077218552378456052150304677863670611408570458991015300131731261787644801415538043027268185097710615e1770"), - T("2.75819205688636078700279174380111581147323147951670302427494196210176478494486073721584055059489736040565979466551070179e1847"), - T("2.61406986804110104534167739704643351039975992759905579635058824027507742375380077276380178376470686987855503581867681046e1924"), - T("2.47747841124391945459619002346303925269640785743990333362087223895627681769816204236257960940497519376881830373722711456e2001"), - T("2.34802418757813746316913800667907927718925648696508255347624141597281474683823345136640610924639820192825966082309575303e2078"), - T("2.22533425939475124828943430510333464605535146852848680647615867629953075390889821397228584866395924176189346073006180260e2155"), - T("2.10905517593659363154553947631071808925462553114068144748077359132255993441363479041540672158497404660986163617828972963e2232"), - T("1.99885195510122536266653916064141606295420554580140619900425370702471778604391774578696867899999534265169574306808906810e2309"), - T("1.89440711840917173277691572886942144916664047407963356271198286654087884646102070148271284410118233470318337745546895603e2386"), - T("1.79541977639739687088375911648976940254141946934175300605485966288703931992861387257771264702798405630917098672594899744e2463"), - T("1.70160476180317540861346545791118106171203487587101437710693054174454895160403997508137760007058856854991413121389834429e2540"), - T("1.61269180804119796097157014527479883521656118500417752963675677684343588976915851637637232001139108420659882326614772004e2617"), - T("1.52842477060722969066998464046690349841548269556677423378408183476489015878816585045578141383463708674469365281537792914e2694"), - T("1.44856088916530600122626623629347336702026699647293500058111037526381692645547938577338582002157148103479049071921438452e2771"), - T("1.37287008819265239873777879432333192404914357037749380145412895230166352318128978403808382142784030558123748263528360645e2848"), - T("1.30113431416759441771790128053911040907207490879890145597562380328956450092799014856149474809345424672958343296615764490e2925"), - T("1.23314690739099822369963411660419632130352733806319401863570442920347696015409870236230656305563674376063778482449716744e3002"), - T("1.16871200663155636468514484039368694043851858077879103221831997264419096417014996945143145495038265243932745953706526253e3079"), - T("1.10764398487979357804590117089134596938734185016144401218934115168561552640448889215089150481162977776214124397487013110e3156"), - T("1.04976691458528698318220729857405616816444374000182094405930946710168752954926612218474430081526312018810817657409158490e3233"), - T("9.94914060836531582868347569174220216007647278536863127198023584205669825317884219144692385409156165042162234017403353704e3309"), - T("9.42927401023380446961314339401657458785389811652244742482194123119943160577946366372207045050095290781679375214307398844e3386"), - T("8.93657169598281164656322298275337750103095739790107943666668184304335665562867744740310577868880098719252549186849812451e3463"), - T("8.46961426624835911826517103631490619655296714141872141145089865045804196205328364155921945616925875458926717336478525196e3540"), - T("8.02705648870740089929294815816002943860908317454595055392168733404583122074223427054310572378841634984243492063192095337e3617"), - T("7.60762342267101369970765191988545810374824800500875923752736467467657167098026707905341603949108433696304383346239333297e3694"), - T("7.21010674617694221027190468649359000420209460539838589305387835463807416706224777302997789297329446308541513638035437482e3771"), - T("6.83336127500041943234365059231968669406267422759442985746460610830503287734479988530512309065240678799786759250323660701e3848"), + "1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "9.47747587596218770242116751705184563668845029215054154915126374673142219159548534317576897266130328412495991561490384353e76", + "8.98225489794452370997623936390755615068333094834545092387689795875746440121970819499035111276893290879203289092353747850e153", + "8.51291041070124257524798251795398355552294928156627848633073113916721592074889256105483993631579761345100284245144410506e230", + "8.06809030516483860484254925989129017112482132468761563276276594763374886826841745433660192438855214332469192411759402790e307", + "7.64651312322841630493169711336894888932951818957138997327518186691187347879142222644283389432604713409023263917264358401e384", + "7.24696436606255985380192585665173794455118215150711210905481870053193336336731228464367470327868286988180495111406609690e461", + "6.86829299533155197480610865771404565313986987801060270120621935139741577246731459024227828759564450034267891072352816870e538", + "6.50940811722948585242669672360741252715012399316164518226061001845519670701239429603657927628755169479689062519606799624e615", + "6.16927583978348964454665652571294215251327375137123272041877979478545511090085756858225302357977159539777447847855503405e692", + "5.84691629437043896753869572004324228849833391140408095171257918435296982661233664069534601413835876272500275725690968474e769", + "5.54140081286660645835370762406928689330724181979654545550204201113926269281603301564114980528619942840737770415885783439e846", + "5.25184925229805200184933663459660562493261505058724212670923083643709964294855282715531768162298567379648573804433968486e923", + "4.97742745928448409225535325233998957076879979440190164347796593390995994951755710667491911026476108957070504003155645761e1000", + "4.71734486697204622371883518659702954552385115723942808636490157561056417525827884479573988899517566587636669779645610803e1077", + "4.47085221753216236037602345430121605512330975424643767098987010800161616413051148037751552110081034066081309007796182114e1154", + "4.23723940366531198300986713567588008777043812458400705569721660157434941774066620870256745107265536124077734836797938268e1231", + "4.01583342289144005397455901781647949754375366066998182220342540048111140676724909947493787596336610499122085983712119281e1308", + "3.80599643873362813900306284477369187319506389058898599816705625750135796510808933786432614186155972485637939057212164098e1385", + "3.60712394320959592074309301816510372687695286650188776957291994751966018917404878612237961367128638199290387601511358836e1462", + "3.41864301533745457066062991907289263038319874930395315315257927161138360206596116102724713069518697248463965164712972907e1539", + "3.24001067063873569456703204286462007769933831045558617578289414699244767403736057931834775727420762410328297596596814910e1616", + "3.07071229688386868087623659761166306563170839771162347830514606977592027644137144160294469813988158463967740978461420862e1693", + "2.91026017157373047094077218552378456052150304677863670611408570458991015300131731261787644801415538043027268185097710615e1770", + "2.75819205688636078700279174380111581147323147951670302427494196210176478494486073721584055059489736040565979466551070179e1847", + "2.61406986804110104534167739704643351039975992759905579635058824027507742375380077276380178376470686987855503581867681046e1924", + "2.47747841124391945459619002346303925269640785743990333362087223895627681769816204236257960940497519376881830373722711456e2001", + "2.34802418757813746316913800667907927718925648696508255347624141597281474683823345136640610924639820192825966082309575303e2078", + "2.22533425939475124828943430510333464605535146852848680647615867629953075390889821397228584866395924176189346073006180260e2155", + "2.10905517593659363154553947631071808925462553114068144748077359132255993441363479041540672158497404660986163617828972963e2232", + "1.99885195510122536266653916064141606295420554580140619900425370702471778604391774578696867899999534265169574306808906810e2309", + "1.89440711840917173277691572886942144916664047407963356271198286654087884646102070148271284410118233470318337745546895603e2386", + "1.79541977639739687088375911648976940254141946934175300605485966288703931992861387257771264702798405630917098672594899744e2463", + "1.70160476180317540861346545791118106171203487587101437710693054174454895160403997508137760007058856854991413121389834429e2540", + "1.61269180804119796097157014527479883521656118500417752963675677684343588976915851637637232001139108420659882326614772004e2617", + "1.52842477060722969066998464046690349841548269556677423378408183476489015878816585045578141383463708674469365281537792914e2694", + "1.44856088916530600122626623629347336702026699647293500058111037526381692645547938577338582002157148103479049071921438452e2771", + "1.37287008819265239873777879432333192404914357037749380145412895230166352318128978403808382142784030558123748263528360645e2848", + "1.30113431416759441771790128053911040907207490879890145597562380328956450092799014856149474809345424672958343296615764490e2925", + "1.23314690739099822369963411660419632130352733806319401863570442920347696015409870236230656305563674376063778482449716744e3002", + "1.16871200663155636468514484039368694043851858077879103221831997264419096417014996945143145495038265243932745953706526253e3079", + "1.10764398487979357804590117089134596938734185016144401218934115168561552640448889215089150481162977776214124397487013110e3156", + "1.04976691458528698318220729857405616816444374000182094405930946710168752954926612218474430081526312018810817657409158490e3233", + "9.94914060836531582868347569174220216007647278536863127198023584205669825317884219144692385409156165042162234017403353704e3309", + "9.42927401023380446961314339401657458785389811652244742482194123119943160577946366372207045050095290781679375214307398844e3386", + "8.93657169598281164656322298275337750103095739790107943666668184304335665562867744740310577868880098719252549186849812451e3463", + "8.46961426624835911826517103631490619655296714141872141145089865045804196205328364155921945616925875458926717336478525196e3540", + "8.02705648870740089929294815816002943860908317454595055392168733404583122074223427054310572378841634984243492063192095337e3617", + "7.60762342267101369970765191988545810374824800500875923752736467467657167098026707905341603949108433696304383346239333297e3694", + "7.21010674617694221027190468649359000420209460539838589305387835463807416706224777302997789297329446308541513638035437482e3771", + "6.83336127500041943234365059231968669406267422759442985746460610830503287734479988530512309065240678799786759250323660701e3848", }}; T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; @@ -108,14 +108,14 @@ void test() for(unsigned k = 0; k < data.size(); k++) { T val = exp(sqrt((pi * (100 * k)) * (100 * k))); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) { max_err = err; } val = exp(-sqrt((pi * (100 * k)) * (100 * k))); - e = relative_error(val, T(1/data[k])); + e = relative_error(val, T(1/T(data[k]))); err = e.template convert_to(); if(err > max_err) { diff --git a/test/test_log.cpp b/test/test_log.cpp index e965e6d0..f7b3e2d0 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -47,109 +47,109 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ - T("-2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806"), - T("10.355073440919378699690477472036470469315794905372650461119520557405966250191554948388847794306923706128373152780234988638443954821327953543032075228882306893901540038156503265416950932549208174713640840670002321534598356631953006304821201484830902632165858733357596733427094375150860310219829690440417223992885533566388118595248523193740778052893647271700612136670114224280374211626787106078693643289"), - T("11.741365414719872359995630593475834957852130639032528348910839621576752378207582766840832626901446337859064321328454096088656817987112409176281442608184950888327275070356290649885618053367245169005379545357345645235094776018156840041023694466493107510640907700621694994008944652785168884717808235919056023540605910031676977750466679901495978099025342154131430098841939052890393197699093697421676686108"), - T("12.552295188839391064403078983058501313786961042419051509346988474726615643710688192053158471717695991904853941837387256340073310064341282022830248452137946273986542713154937759697687656073485311102053666502633006429446632794099471395918827441203897096147814416727830805903830888831170139661499031930347916453836121200110772307492771615813954882033814741470466415076136175748560866462690250372712624427"), - T("13.12765917900902322346243585913156826327069465639834188399662474212182724479008698347907678965083909936781641397385483495362268256360763444317213586059490467781653518008717313901614800566992248144716374322429987750723867821114358979404591879648104388637035609754399283274014767545593886580941165664957384975221949645055255781874944374229417864853289321901220692566918330756199433299461690335766708584"), - T("13.573946210017730027239177097297058651455670148127333215055495986565964988037166389618503523561570994165268599045375753512400565200059790703280760252213714757212213525833556727462647729566258301490115414864748436290794191111843775262434063842232241185107471214859854864335150887423144285468856056851239653315249148749701603523173627966758652109489308872414194066451074827802642589890222384815709071028"), - T("13.938589284701101831675037903832444894846690407420628610481163937380536465305805316181768586604603341197033655576371082304146219991693253987043452241307224478718013872459287813264283001906622959681872321576087143975972033651747378310838673897181549722528073649569290162541997276292708638316653324605571398691171391912961431088832002969546541039753774950645926800096854799942237644831671997679785482847"), - T("14.246890620897408672445451566098178524763429935510610216690355229695078778430708804421870639655370744549370273426124295240527401708361100923871708589722651960428863955835558634640426846383161118062310502176054546468600516588908689567134867002953229862887953032595529925511011383644740837050282379317993152702704798000312156694502691021267028423979454580574052732764336948692001989411724963233511159783"), - T("14.51395339092117324610526432755496036199337959182144260442491096061930765841595850793460014941610881052330595683873016973224744403781498772061971443926277312865243350174522677227134957935047605429941424114476598970997223505479765426888886686275495180653025817201214478249415383537946915840293549927935267010481189550187682053892807264533011114305883442850485847010726074555176479027986850883182954118"), - T("14.749519451795537716462643672888549370666057639128212044001868590062813335472483708120056955187220713486931180221186191741860718823347399129280491176499608998857949407351247432513825095161942372289203657231256344909997480732110798704027258108845584594081552703009126596026870753341888414903979390651641367952487019992866762344920748102417282166652161104367292712971759633790964534907923779335451109079"), - T("14.960240475644662390024535772058360495972689995692264619118050620984863397335883147741001175137837088856196207660064061839685086120444324885420172384357780225067863432546453923434326358834374021700709153791633034800554630092122384413882780201869241166113270104158152592921242256738530713688528178980864650875690860545577283508963373084295388766350046816560200649161822618828666606722223620871032632611"), - T("15.150860829728925816270269964092673433542841210964830162793225770535551518840933315190406262273098573795238063523955485390896001670839635976377071048140363687808579387495186737492639543519534774851635101169579614712607935494886581440494071142193798729857001548284675533558490478467589884332536443679208006567281631805562767928329937083844501800478013385969649342207304490375728237042482944784544838254"), - T("15.324883579506436493570233597448883519693351814374549397498489035148221882270042436654099306811313261346823941672888447313628931256927773946985727814886420570056552118783468127543676769633344136209500636666830026098080195180498059221494203817961212365532443050015541947762494604799890429565189588245725920948145579035449699519788465993549043152027361890729572024195346130030456992216388648768722394836"), - T("15.484968991583560712862164152602532972505596882865402498065644250737301955125596006515274461619204302558285733320299957799185995441209009451408808376560872924206710117585718578727591708553957297729203457443101522435265312291388453827953066056871634785359329503731609907767433693085428240202927311226115616775436485821324503901092891486358733365244513748729928672060637178808283856096451123227237766837"), - T("15.633184933296400322886411216914351313442169047575854720677392808712745585778888867637029115450088924031428350724038141381219620588274493330817678181565157141965018413952386880843987389414299029950277357119925470077396582940505069596480801954154029286187951921181728705116872415271634077604874063371227144842898712603028462623610688275714711124501733417572553751110494225479183571648948845731888607993"), - T("15.771170674177108994750017157264759379388540187789301748807798065200414118407271774235601089093934343495795521812477515931432709195503245641975701807702026215615357450518151317247119115864533992757135781852491298348627270712291588580073932563653614422839620206266586292520948221873093053975823776289996754936187304352159896156876771015468496811587576227636095095473566772184717633945339405330371627545"), - T("15.900247714739125237305645451417508966665591345786220672552302840334525160137723176098165167253830541655084109190400464710649206788771240950251243759258268060695212680017248831015574286848979270728739089100870231114250075432989803029255029492399141798408644860336753530942734586654467728627658977642688053752033223720047083446705808444218983029996407752310091763448795485193086044050699179075227514085"), - T("16.021496956952197922992283502641894579962626483154818954043789565712934054541190510263229676242727892630672492409948339732534439120465067507199758379167701667321617794907607307728874859663168072318224068053703928672394393376652024298292046951118253912008558176064907492479298408285769067404165601995001682495873893492451380569168665052480684672167775365328449822100602627386235888117607629689989295358"), - T("16.135813783442291449575041100809653925479234724736343542177079039059170241908162244448865517513646317913575323823536275208044355623776985732503939829900060864487127004364547143183319169525031486430688761890355067541570726092642869160866842639424318480923069734468346837396224375681293323049896437786794370196393419740684520457519876260717581058279975484300455393801884203407282602155622048760192869731"), - T("16.243948224975912162101874242338089698927747514172297963501304802721456885123447742525917146000081948350317670558217990170315910524955950657647628011646020228669505156094231753926456488583104510177838897523717492728937537629972877557426292386450904986250829454391823373783104867874948543639133365724217397301073161382317429508046689262594057712721480553629716238053162259132557499326959178271755311819"), - T("16.346534812891312020017737390565972522861639520956794183631801030677318559517349930264816297286373068267542772472219372292428845683416042271115312027071601889325060155482892443418582095080544516697369324049179348198348320350032057951783059238791085449471373733253488008998200818236407442435705194113745206455080467406424910471012832247972967952311217374959559350158619575075500673005632848486334892081"), - T("16.444115140490340128500589643685615592593325439192231430163649023292793816677629077048173396104592590442505550803932707806677495894373323443853064668488945973357469342360809555842080876327526869093152265593359032627507962690981132695345232937664935403696772586286371082469152648334224734697834132478315542287352614722743239776066558016553826776123247656549922477370984130115175375533899599151832866777"), - T("16.537155171118865136534989063582757364253199496897225305411818162632163606557745471767961160436879104964882723479325928591604518246962419687548390063992529356693298596378658322800277364077966826234091623459656551097008920549618056923279473982070326894236928331513682937597704431571923632859325944958271156630648510192786810276479282782233678225160061893949554276261365074478039201200141096034185340788"), - T("16.626058695701082390621404187251773798561764113151150041596109882112467488919141098521165822165293765039118029510544981683905860141438867442019067534265891760023149100317968826679154566584457042877767867250357368225093921585968539417839705388349710086788853906351301543791493808667435475597486845630653110450254081800953162013336880338884388603160347478448669890791767227275369657780841518987171046251"), - T("16.711177924047687436041681081297469757517395732698719962499711839818824068470368594816509809165130772248099176990649818696451892735033114399817499272685517472929769530848678764490613732856699010061350335113220658748043901782349324603111802594973838523650919828685995473213566914734286172266839140529583990377667556754261878256224596588519392559788652514828861263680954096492024398529162625680677258884"), - T("16.792821912654942574589969785414406627855177803111176492774370259331640542125643510644899208865670120639893723574191986313708664152776559897034386961403215067476041927571306948209653637016541256814370701598681758297129259567548154765775910932763810160923332344469835976310776610418278334876476195529920021337399751846302536974621623453741347064741080510495703994896565552519309503521053051550623483165"), - T("16.871263338577273117049933407315211807184894736082799946337588399915643695388836578819581481279897851015095335198849942961931601540668917787952832251688896660707943869197097893837964754891796695592066084995854170120209827918603483811654385230282025426754327077293929504883381435192439219366582495078959939830875435944938000044089717015334115741229281828493468876793032191535756728196375330663180727281"), - T("16.946743994200631806033476403925371852051109645526740171061759524387799979304956484613870531865187139791227191840781754383935422487885452369507952721547705027535773654885832127821314459521240798742974634464887793874048016231828535132695506414037947185201173465247385982934992490469404967587724592554548395276895353595409898385619478502390678687463962622836411208115179925881515699871702165077675857036"), - T("17.019479282236065828727803356580529388797042464710975507911282243104151862598751845439937481303609237769338953879291798328663979939210753132559510492288100384177867237190989151135211416672909332732482371326996189543048703303285313799031214641216166381411885795576234361808712082618702464622338883787915216150436372783047860816587095332458688921705641277515576461385290501276378977328383137813013202605"), - T("17.089661921583428533920885090473894674921519340994685086552627218992626938319872359613748323826158856027837200411438668460410538403836237956276065714403575420148736981655027235218177614075251822388622713232585428029969533906061654341819894513492491624632974192525592636008127939368987600981961744622054023981036109865947530952316809705151315101400446930619393266624895135955182323721805890693892489067"), - T("17.157465024686670167940702199808038440453826682770881229464136716214305217066325160993039686330328188786987064692354236198505670650108871009195717920051441546822338399371747349503874711833721760676087218038457960626001087951737722106836691584985009357268276351001658789309901363541541142239028890280836555429745898638761562947010206765922958485242984359891337645169887782296197402533921841201821435322"), - T("17.223044670108153088406971612680579462250390145455205711423224535559905829397735171751863831903325186673310251936245608147861310604382786127429364616442074955520795624793164764110780962566943990430036624945190166480864873260501647262851147587875798742974124100786387378932173276365815649310057053480347330487890156980245097594505867694166591312545929965230291418670445516669557156689966248314016354044"), - T("17.286542066533530981819924644041556546839394128235306235416269038138274222049809140847092268150839206354707638710275634022335650694777681817694798501418812448888688173373947001904190184008892957674606496333161081431327984331509197841574297574788702287443502123119313877415278877304866456565176360773848651195816021879148876985173267277031263646152871873014441183590471141901167533828621963866651938359"), - T("17.348085383681499172852340212837946913681349503319833895379599364916346996678774115472356552172467728498192423708290186696353892633802275272186862935888864564436104200250553583802585096479988444811879111645109656880728153108808638274341978968354895482288870990505393394330150686285205409461910256828313237800771316014620729111128197408712519655232673726993167731090657784157432284844410962540306871812"), - T("17.407791309811451413991402934776587727274692304168979758129844486195147501475844430031581045491342304862802756719012802717759227086944920237646742600183730387935914237410099970497154963215669635477250725760034883360834134873909027143784365748082991457136260982918509631214089379283854791699127985575276751950639814381413022404340898037317031344649130788109442934133748721229332612763230675387867060167"), - T("17.465766383402858316731575043043871754932551869660069657366289253587674381952187793692876332186097637634087898052217367730831337525450143144735163993701984235559102178727289467801811444923511321849112339058962832869205150513708620081533545907748750224381419445198858131583714181742840318906599828122743306582674187117835956409356596804579817623463035229848008072471150460106195548408352347746742847561"), - T("17.522108137193897711249955720342223562404817078270264273905715197834637314555104238731504974899534359198079882854402652102198388084110484760619705504323190957788898675675472299192322756141627162323541713415099172067523105704142354142286507565791349450889277448545966302507723270185283899864397011417078910276215036241179611950839739662625626455044878609357243901835302874736030320059872773022839076998"), - T("17.576906085439158795399613853863097303860835367703382634217979275105020336999327656009595436350031662565840865227976662242781789960872250051998481804897622287887086985238091438506085053631982050247194140738539987379268409303934286420729479452837709138518786355198810012076646196653084861659638299340083440855659993917810136693887499673110592919880225890667600561450738971059427382635508450091570097859"), - T("17.630242579482716539323837128846626753956194314343736063283695118187974605321998609676585457221722093540967455603842712855190915316171267768551204188316976169082878976713161041600921069589708836776259260899700342542761959107817464710887483018031112156977258240064220687983570300417350906046032596793701224117336432612122346984445322343505811317200044404325245524587348610225714892960184376194438742903"), - T("17.682193552177642930469311075041540632454794315173833851548924954045201903733019976720709429894183669091622069055829864963447674638381460850277690319942206492046322144914184638283615681017449686491773099947404077379395563267125512703092895031616346899622091168324459335139948282486097513426616067084251033517363717148785943762510534333490466778398817865864252996839848563898275763467374270388303474531"), - T("17.732829168042892302590066897013224260526349617442757064898532827287653373154374250085440081248759495538523122114463120786358068331952209807684385821625688206899889794184992102701935895298679767555036775735985597715341448247873700759325978422207409167388561946150223833135803435044691082980471455256218231653367433009869225710546713847446382266908465706428817510556416763430212167661925983678317689559"), - T("17.782214393127773091907390576928321922818609345162469668288248606737448584265787291899115365824350981071781548351963523796289812496283393676088371363622146243894946956855177324929267339605228930435844698103907214217720043808120931206339233299438914243909015437719067832873971853535761149326746352476616918607787268605165583917095714007024394600276277913067861955743579281638075879563801550521361400101"), - T("17.830409496196797333256263738087407756305793204876426547866274663003566432384680240879632999625725708300091127739268764655234592101254713785942646078437589939733647676861210608435791914827456291767449764007558390614584486670558546409061408823289149666666818024559557140308187730981247373784664587280435856629009596287509432264978977660915985852234235063815941899607957940727152099219426925372856581083"), - T("17.877470490934232288852811743259662703350866532641876235327240424382634438025700311951299570329496669487738366928514133455422447732866797861412283887178678146519925852345567722230587799483201967913067391020608007825990349366451164476805546339769760220805534987675878347990806759564468339408725207557557011408435539499579334714364702076041798486860978860009676392441269681660376828431489832998763783258"), - T("17.923449527306267869903426070004616586122783729793624019886904269965872168854615384174781325332961537402467089754136043237824345234828497017675462013908498436584882632257634259557543282397560432131425953734774375224901224027834174376390115551172850840545446370919691863863162138436779349056977625063368614038926314141157758995633570593909444840439875814859101692914284555504462737973961801589348562421"), - T("17.968395238938123096275003449517382823058653367901994410453731720353712579214128295617333869516953666517153266184450063833611730223713367177888956257642697863674682557764474491249664869634869467450632518845976225157445436929203774807794710993549169067538180609230496568688211520386012533845072853251411123534511690847284034061828924979836346301147669327210040586682352268581578885354613616677879192008"), - T("18.012353052308072938755867264876761138384940766536728123219303502872235608220456049765985905816906980541771912193578395286636524639567005562096644259687421270993689984646487799760867557580378976263785987858028882916593402367582926712749625025395229096162602944095765767003293442756802839571379406129666952518296572179431801499117577022831811590456125422748646995266409456422225586206021840322692382857"), - T("18.055365462686668331727160748231009519565746647193730385530909331597852334952578425145279427250887034166658709337134491235522678908221793937220809954557808901763389178392831492051282059480629151432246720826269576988663211852119754955967569929315382922357289706041278636253185833298598511399638105081736687620508948263244525471222947804257016135464845038301780535378180021273347494295813215232102999649"), - T("18.097472281022918092839876166164329437973263728374666387409900363304423095913608188979786368122872685324785740303523457754035383735336598870745063200445496969465305638435393742921093080855121166597064087151732410717510776813994536867846471600876935467557239720329955864393503091522335217308468551898804050931884864074974187930869095426636541733964836470414482229854405996155347764481217202728996408614"), - T("18.138710855372574931023279730094645378686287349356676919424498204049762635832652703081045863264164065707461503608812437952726945167389204858679677978907656542126675434222486013764292798698974541262372833651362936600851261171024940667498778746253799866490414715539561648775214507198558445051277115507846030240001071535504590488750762226492938922487331198045407471864288427126708589240674067562104543957"), - T("18.179116269955114571377487963612019905652085216126618591531831326851631273535837433851652060806307371522002942828348086254592323263632131183438294055667010855067061587674644272103122258118876651912890486407250279668447142712674562099014392095571206458285314302909409592642841502932705416119595372330139185232535836986175505626716905102551635720868328845059106716603941432470493828723765413424721976223"), - T("18.218721524498032554193215680552580137491683034589488437319060302272592206508827557611431375182704552154497537575444766904464774327453349109721410510507102426285778233008253433639863695380913463970388673098705619991229471182831382051550803100625573309055088036785775202381313835883262855970305798706681563291905495590616431781211404743717763365778127660253455212146746026811363929209719531660648504082"), - T("18.25755769616561915104320634671335949819923250838247367135480870103002754055972575277617781066800125225275977232426410882766773084485826986957597205108505829168630501177398318211279559799848433615486396320080576991739828304477785924273653352846964138446264644904849824507615174857436913763769835408524950658917536946876135419383532210821743200063786350760207420579200676223678007228393958258720083932"), - T("18.295654086063005239961930900603578763176327716162022442528659338478895027684612801134718048445578078864512023650622689532231640803798279071247213212940626166721703242773412064293396910008891332614727995930235839898502680907757808722725076622433926254807390507349193089487065273859422711581690536923283818694448490391002663699373577479984089586448960986922914070154319198856799480586814831572660049059"), - T("18.333038352045729366070360053860247416881993539906325936417001019639836810235521744851872438194534698737793818113182566661284551265375926400252096198917463166081789346386579278436021220544269108158036360716265068681920333271695665204550361645092770414267870574761534021576748772414710332296686656677922105572480136623006540318287771752403257225484193416375374630295739694584359181669584822144217946089"), - T("18.369736629342788833545154829965612197972030184654204521583836723612431388284128470120361520079152081604731214550025504583810749093225662462708297813392905679444268263153178673045591535099590243771860299493196201337328463166245762316637806913270164277457975112426005180292583426915918675383435395598215385153247994877265654873384456838948090969392401887506081626510459117637684719849016393221041720966"), - T("18.405773640310900146133080088261946202976690317466294344672811637024889157611521518848738302063682147953709444704912322724498748005402509152494514057803322060491136048741666988817114427555111210963923209356023892097003244960804568051496345885676927757469123572277620624446804627512970828422692616021227425852662243212443997074981005547833762050079432581680067106949297497692327125068990077901522226957"), - T("18.441172794474399698182030074721740031645602552534420544604120821167467838337449892992771747357276011553142091110875268371883702350672621604391781630952792517951394285585851496086739721764180588422789463043949353454011941863375479066641639870318143091000764755109263681792932398864353035859720611512874738125344871434992639512151401272538083058455878170262156351968871089395179837425273523581266914745"), - T("18.47595627986464597709414934346663732189241252367556916529377819718435871713823800089497791390570676646849082185155969226893554048129639509679051447135722658187695404706235925157146425104283059827944524324932672824661552843990966903508121362067629390223781365207266998003720499319458536728358620338853555386727837290179454339519141841532839938596761951045619471589862830891354308681626977577420483375"), - T("18.510145146551442627414905806735913567003712650812295077443330836708330498077617580007887630002806998527489958357928811323358164284670780912045286972377274734553167811143903532773133805470585887337986897779623231393980154689146471547983633489101760043708991315746940120025902341173853793429617026275691215584867628750464940410772709161351434979639911956946479201132978330304672548030931942250342827294"), - T("18.54375938315397840777373858913955248239941847920328667581513228848814216209238117867823746808674105485439472281080229047484288277191323337476914908731578203036561093352990739771860442165984753982600021729206737097284114048195126812337180690412756158211962923840645830361425158816448002373708570542607328640280411811505735178290827333249222248570577590327817428193141575383830773736064963674654660788"), - T("18.576817987027647186937851258336640937668818840595786321214115700990580993937301728456982569596955182509352640277092493549853424411966677818012248002654715239100874590037738307469713048325570874520232570867464224788639656453937494219294174471955373301736672685268384577575584576576899158917424074434177408506824723823546414342198182263466224674661649356568188397290822447447185825387180657594093708751"), - T("18.609339028743835443520046961477709286939310853034399826433866146117641838882532805452792636721283076369348347017617290496488517658040508081002292362699460963188796636919359563770588812590411785597112719721757265655201721601867128800954165396591923271771796713301912904158675092529178443570927414653982088273331584295588174225100793199329706639345162173054259175639620324704962515101988919574683797276"), - T("18.641339711410638424722499047013449967887089663871032284600678326435618587023360889502435665997102476809993062067289899429492640057255987173558009597289702007868879986681400023832856533473923548707096670227832737339287908558274044368146372966754230837592655179154123960009424338853507410779228164259856997555111697864450713171508666161000757176178710802248263025585993364498172063037657704404452535503"), - T("18.672836425322050368486113163967894536152542145032787472779137579977190277914128508177973702344749215422866489255932015284354044054928123475206880037062819389112504714106095639732288437854189846017324055713142277768438434138800721340366655917386856186887417022606078557020556496094324427190459240576788558291551699271849591355480496655647717244614207638067307680084952591605729876523430439516165337322"), - T("18.703844798370253311556748128890196309240890383998201893987314003630502067675284072677315790931434159739316058047067634433988116165753705089479010402482501330164866808933095532965233351834719435836698735379881853925522288987702030512098787246242665060494288818182785084700362957305908534097737840396555283267034806128689898134337131513408714563437722088348519474128730338455257510535561818243515295123"), - T("18.734379742609172948695846511449581634565683544125106511957075355113091757584835040550323433523983103087395353257534872811737536865777209110758107808331702363999663358869296693765232701087487872606287651215678117982769333263424530048349886338191672000649776344735688777038908317935895545479771750928675097454702913124841960320021274672197296187088995346243239131294305233657221950357770047779041168948"), - T("18.764455497316603659697964676682244441947566581055018250974850982088974686459881812049067093753928158863642280317022246479491132048354932411165733919156970301233277913734990931824860100667882748928084034147822613522025142522120240087012670818451468498896073922908905983528384054249374818979283244638542138214163225714979901542761366770616662189716515808719831023436094002277345660650710470976214503432"), - T("18.794085668866182740204823781307373749785233327862921970091261536522099678420128101122831261188800902247301052497120590553831148856384993334702795779266689462427228385943774192181671843132138022659399715350825905060669445319905454600530058604054055511420322690455781203696250448217551628254838303648547201462249630753150471851402187751539728462449395082445265630322991793425964521071134426892761087686"), - T("18.82328326768867946516209716586995768024335839807194833176766112965627616145648993732694510000805245875257813926012495009414082293067923695618654400188454857448056930551075037023425200611189368317293241290052197494133870263300149851324237139757643613913686228545143709137199633423670636305032456696459165988858650794045361585281861601603030153235699981659298052458840307661288883784791255308752353561"), - T("18.852060742573912900871064645288864648159675216435305629278797553184221367993840166607573470069267053513735624040087819326415506386854437946403720812228284865900153407303755694944652909440890918000505344963394853809579466102995490946923404655914747241389209313457700354163158136320973199396402856713949800424774426208733366034958384913000571799639761622099679737940788622933241370717844146251711932128"), - T("18.880430012539655701065719740012642650514689061888847292472446317260576484360479108374318422256748212928421929786176000015552730066213309405093412502424231235041703778572229968621812094224953783751727048234887878221529796434400738059144871066371011576734445290684672478932371976691435646196856591582073749970279840730554499319160664075936135140351358832332481792115613668240634181554442075595951874232"), - T("18.908402496471717232311467781165733233171140941896760455553034330908971709296619686804159498334964006649119069488646486948675866965781697617293443993292894960273992948681816600748607581132058645469709895004815813032481899164996133398853203604094641445335770040577643758444125343960451089873183667195183097301272165939070294009329717796749663916249651314647264543061678516229808974080105230884519025421"), - T("18.935989140719681524355183827184271883117018713616424044375161718824065979531438908152091359516789236304421957752893530968312896089478807820652680723918795442056690234785900341761515097938048245785367391810983836804772037480360220145546699221066508593371664219887047644628393373836620900288539062774663891696384999640649150431067240627749142322666676970274474792135970231868616050929898319819448939034"), - T("18.963200444815204167404888798469665227431788358892299847438551435971105813566329353339851076750530262901184430318825907802984559086828099838800823075902608236275943927671387049630228757166718632225359114181378374769186216486342164672374303171089906235756037703334480067642792992542669516647312965086899057259968955796081732571906843773036664256360263051447703790357359429377002031207739864979999279347"), - T("18.990046485464088033353325238570094871523592746407402454864447659438418650897352188003827603659585905257296788261872980663015351591030286798753545075312871886708540373690732957230479307213846083134185408782477823043603415914158563765104431367119681516469558190435321626296408405773925785846797696565762444462069369032104851518168840362055319574446706630124442642806832354006488607879109906061011225994"), - T("19.016536938949335590921908878972071081608578803308502271146163132935001206102423418117835863551157682291011036313549071538079474102791095379250735204641651869626255407971202952320707788423726057706822543117840676308428340234652209177652929619836857962138281947043694787969753375808877555756525156889419987622193160096718082756877689454214937644538436622120458515758071395625444960838247998451767464267"), - T("19.042681102069820040323211057777714109150558076228575985448688497208727928412122242888431932498284067180966108960090928128416538326586163291672353531766027111567123306015724614143020205136706498507055346813817986209642505418179828757157587146552894936306186818734849750397304488535715134906592464324381660408650130874094490704788761416060096501351661608424222204094369103147551037672603814369634649173"), - T("19.068487911727958175697030382906549671323284692477975980792892280404995909757933182996822232452584791269433004172376138676679805214029937405307084300414313959313789831600985178255638111559270519906326622715617717964168412002699242926437873012736620082535900009120622005729068876661407020205549742970102634687260159098231611555026386636952356914915597529253373429394903680674472796958663494038067669179"), - T("19.093965963269656159901801532857652686731313095114787279282350143184060615248880952958892345276101741792959203039945279273255821413683057071718873479055914318955623580559627285483449590741119271240498698177664589148961791164562328382134513604070535948997556425774535241433839196056647337630745324677877037589790564832932809741759428622931327986353687891898499439791429917840804474313864245639140963876"), - T("19.119123527670705331793258647026174473061813878914781070641605073424527485626683566355878191198143709838509389044950724156590593262994411423265514055870555330957166471517671117689943118929441254707396532385048466111853801352620946858612646592880180562600210076019427990165200479741063391057955342589569972650353707736819649707138135073772494722116787681314798945037658461538374603477221825614061123586"), - T("19.143968567655614969812922707872905228504499895574401195919290684664632292543319151929670686365568982588326143748358606442800755409560708661213139514248609009613770051771501624762852458893105259920477327438788243371302722213272226600736522283567127277667156871770413468147870394343816746792945999572244176333552811712447483231232773171106511438260175071145300046115843401710072061507331123043607901766"), - T("19.168508752827482780609154136923082745746771414212427034681109262302000645968087085215520638009496537393752178754873475983837687377025695010556483691979309217953419255985001727184619660158435191823702770674175581797631578786818852604111682506864006199186805540809913091091561814668081471402749434233431033452441548505582706019452955567976154397574205270457372773342241946969622998755580434262211071558"), - T("19.192751473880834042563713562225153433521577940186973776803866639536641104273721851582869330116346851241224039623128541122821371810756925681002641212419779923811384320279466454221232217629041792882431116499214977303106306157966687858071257893713340199820635963233697984370035461108601863346164084264967404520613456100656965925875472210769471793070984755357524002396981276686789870757739219539841324669"), - T("19.216703855963329593992083348877341510356872855419154524286060224198192164950344042194924570763041352943159776496534086655621090662648765929073480563926604513272233491262353914647091955902924297702861031248271549558718609763974479507490837350364617085882753391176792131259310397149374028556893735115741447201974608383790314541221313482249282941830681505989160209022143487123591182161037084387107577471"), - T("19.240372771246783136336288622974117018573581443774444767997147210768023102387819846722491865244820295698055584478151667485670300985795814036287612086238394489310685917822308982062485897587424683040075624404469719368214374255580054164790522993745386564072906888203344350441788631572056395846260169628655731587443716443908470481602481327796867951175756539602824534024677208143458306390998693538144276002"), - T("19.263764850762979509196317705761686108092922892356892210254799469999751475179529646750512177469718303426094538082717842694993912366018532429385996195100165328675330327321101942399890523238950583083919577089467043577581159099371618262297126999910295820866611740582812686480215151994304295620401944519281853807987442610790122820927006439539980791908595120476521299636624843377591628005484740938263373595"), - T("19.286886495555294522450851525927489255646333848651043717882790718796769943763203547772413744395083720600670009266257171342692898145198064660758379840502214228374875168690401725272168814130387964227940171355345107459707413634435078254467165459318134413588306046635342334572072865760417877208230914828250259039270224031775041480686581149991980042698893384296012208438178584526032640636530664689171174514"), - T("19.309743887193036513569909003754932688390195189494409126081957694707453295769725463252527373922995550848707616892717734716346726926003376949988744940329952938435722400261306789658518736487435455592323288866363564460056999876237001095092480820045715217327131479089102764865100373961878408215166685028270522348153253852064527393390794401890890932406298166622224431486187051653736399833197687524233000392"), - T("19.332342997691718269365647851051829244300572144237799985690236148794296859647334840581772744190077146167636205171422529047782401411481872480699008041273574144705390909628455554205882856537701103044535844002047328262877230706418721410147702147287802942241134713881576962004492246225067150128745210304021219616585555420191917418786300056829952680702638022710700076784220324428140020802898115083347702904"), - T("19.354689598879088211883278917315015191222443867565368209411861608347893184500809153071123456883339348988675265028178228103174790923741638364554293709103213239495123865898742141584076941660965692453426480770865774436380303703020587851939728834028918714275983773159730132531253761589283704592841895713231304417993106469276962707965968679020792759185611101812841427933459395519877074670185732532077876915"), - T("19.376789271243668798743209719830951710660724013826759987563467708214368337563307069810449676142525612003499201086112645501159094078378318648014400550345870757023544381773094826620272453238529286555419097429861755219673554476395943490245768513403194721941361801918811127988057063915654267554707302094460700078255016831241731287084620030531370389406858605301314913503432729894455360413554796057743624785"), - T("19.398647412299738536733101983020344760416543000933452586938357216391679714568872063480206587627849607725892049860100424409512218327903976557192129920072602449053963631370720893361294311430877864798057636106390383386608343478253049758287190639090148001663846660919016228401517981946486814580501445191763231914170223651871543954569563229752867364010807484149328122287932691728836607206296504503654291916"), - T("19.420269244500125639443026886412358511499173347101740173789245348545649777799992933455717128782979425999232096035698012165274922488616903998818326535687811364645463339885951676665882203155018792792505473796600843314336576346118972683035247786115152970665197263535031125663311669153219106967873840911780618890220192918885584791820817380351857621444438732170662912318105800373867459654881916254806601924"), - T("19.441659822725832764853886827062860938003360575287073851586808019473777348197590834815623551815029267586554639358825375063360984210103069003729612683914916394217674289812465439813541316938870999354861402160375582810342455043995730819816948505547453029096197833928688735935982538915244747599958654970407704104602569366784225221531104839626781845870092648147888203880688567605208831444945817857785153427"), - T("19.462824041379362514202453738329145059871795167945778128620896576209292571177865023083134487492542931078517939464890630420523665550799939651548618906955780515811541533057671943504991862669514142328738958049297858093270685582461594213632344682911288013670395835728596839923778216755784200501989248577166652556656745561631320914185098036550279972269808563352717494278133064808018424486494613581670904697"), - T("19.483766641106643718481178395114340475919752681994355643610181441860832131581914604665304968112958314746911243491535376957183544987386808635080341126118126364286470448001964590403332961518317007864293940732767763315935539659300785943459751426720740528037173390794501709108627539732588206226415399674048608843262175783293190807110169521287571898125826758063922707869247389042070537305271065057452360137"), - T("19.504492215170652185153425611551614568097792837031617515988255748353971463776213613651972980845739009653411602074763823583486335276886222365741099356087975815479321535979397651959714956358141934399110351847826398926624666313434326948757230737160647513320407575743953348133831681915668076630219831345596329489041495050445409516995558844346940248424949708046529076568535423815692145534030368195098701895"), - T("19.52500521549816144973266072401605164852396136071234571245810367391072812166019661923143396972741343266046339927362413412251126099193801965681827360699083448218860273549526903661234475357554150017778848244185893299525191263899191588797634058235164494448438674653809951435022502560679429105527325418829543863756825670476364629140951247734867887985343458291386040322597855003211338820555010939867273248"), - T("19.545309958419535630089123088329455125777373731767323301911891787605488456921558805681207304272616222501167615837357366396904683096528060072684210523189673108467018417135186800678628444987751206147451054525963839562634340820804697604369657105969423354842149829173951943549166420900709500398322624130365195674097282456714104812933002700523506427441210494461469512180706693823193924457440917371176532034"), - T("19.565410630120075532420489068555321524954362381908007338302983473268528473151341321768804731192210840056455228388636731122203200610869021021871133154865620432257415783302175345843898977949742849569372169004904667621738405749986270376895267386643049526766451459390277406632576412790748533372863644721976845168460840162066672290292749672668879524315410824251032084115058493720402881895485689493165441193"), + "-2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806", + "10.355073440919378699690477472036470469315794905372650461119520557405966250191554948388847794306923706128373152780234988638443954821327953543032075228882306893901540038156503265416950932549208174713640840670002321534598356631953006304821201484830902632165858733357596733427094375150860310219829690440417223992885533566388118595248523193740778052893647271700612136670114224280374211626787106078693643289", + "11.741365414719872359995630593475834957852130639032528348910839621576752378207582766840832626901446337859064321328454096088656817987112409176281442608184950888327275070356290649885618053367245169005379545357345645235094776018156840041023694466493107510640907700621694994008944652785168884717808235919056023540605910031676977750466679901495978099025342154131430098841939052890393197699093697421676686108", + "12.552295188839391064403078983058501313786961042419051509346988474726615643710688192053158471717695991904853941837387256340073310064341282022830248452137946273986542713154937759697687656073485311102053666502633006429446632794099471395918827441203897096147814416727830805903830888831170139661499031930347916453836121200110772307492771615813954882033814741470466415076136175748560866462690250372712624427", + "13.12765917900902322346243585913156826327069465639834188399662474212182724479008698347907678965083909936781641397385483495362268256360763444317213586059490467781653518008717313901614800566992248144716374322429987750723867821114358979404591879648104388637035609754399283274014767545593886580941165664957384975221949645055255781874944374229417864853289321901220692566918330756199433299461690335766708584", + "13.573946210017730027239177097297058651455670148127333215055495986565964988037166389618503523561570994165268599045375753512400565200059790703280760252213714757212213525833556727462647729566258301490115414864748436290794191111843775262434063842232241185107471214859854864335150887423144285468856056851239653315249148749701603523173627966758652109489308872414194066451074827802642589890222384815709071028", + "13.938589284701101831675037903832444894846690407420628610481163937380536465305805316181768586604603341197033655576371082304146219991693253987043452241307224478718013872459287813264283001906622959681872321576087143975972033651747378310838673897181549722528073649569290162541997276292708638316653324605571398691171391912961431088832002969546541039753774950645926800096854799942237644831671997679785482847", + "14.246890620897408672445451566098178524763429935510610216690355229695078778430708804421870639655370744549370273426124295240527401708361100923871708589722651960428863955835558634640426846383161118062310502176054546468600516588908689567134867002953229862887953032595529925511011383644740837050282379317993152702704798000312156694502691021267028423979454580574052732764336948692001989411724963233511159783", + "14.51395339092117324610526432755496036199337959182144260442491096061930765841595850793460014941610881052330595683873016973224744403781498772061971443926277312865243350174522677227134957935047605429941424114476598970997223505479765426888886686275495180653025817201214478249415383537946915840293549927935267010481189550187682053892807264533011114305883442850485847010726074555176479027986850883182954118", + "14.749519451795537716462643672888549370666057639128212044001868590062813335472483708120056955187220713486931180221186191741860718823347399129280491176499608998857949407351247432513825095161942372289203657231256344909997480732110798704027258108845584594081552703009126596026870753341888414903979390651641367952487019992866762344920748102417282166652161104367292712971759633790964534907923779335451109079", + "14.960240475644662390024535772058360495972689995692264619118050620984863397335883147741001175137837088856196207660064061839685086120444324885420172384357780225067863432546453923434326358834374021700709153791633034800554630092122384413882780201869241166113270104158152592921242256738530713688528178980864650875690860545577283508963373084295388766350046816560200649161822618828666606722223620871032632611", + "15.150860829728925816270269964092673433542841210964830162793225770535551518840933315190406262273098573795238063523955485390896001670839635976377071048140363687808579387495186737492639543519534774851635101169579614712607935494886581440494071142193798729857001548284675533558490478467589884332536443679208006567281631805562767928329937083844501800478013385969649342207304490375728237042482944784544838254", + "15.324883579506436493570233597448883519693351814374549397498489035148221882270042436654099306811313261346823941672888447313628931256927773946985727814886420570056552118783468127543676769633344136209500636666830026098080195180498059221494203817961212365532443050015541947762494604799890429565189588245725920948145579035449699519788465993549043152027361890729572024195346130030456992216388648768722394836", + "15.484968991583560712862164152602532972505596882865402498065644250737301955125596006515274461619204302558285733320299957799185995441209009451408808376560872924206710117585718578727591708553957297729203457443101522435265312291388453827953066056871634785359329503731609907767433693085428240202927311226115616775436485821324503901092891486358733365244513748729928672060637178808283856096451123227237766837", + "15.633184933296400322886411216914351313442169047575854720677392808712745585778888867637029115450088924031428350724038141381219620588274493330817678181565157141965018413952386880843987389414299029950277357119925470077396582940505069596480801954154029286187951921181728705116872415271634077604874063371227144842898712603028462623610688275714711124501733417572553751110494225479183571648948845731888607993", + "15.771170674177108994750017157264759379388540187789301748807798065200414118407271774235601089093934343495795521812477515931432709195503245641975701807702026215615357450518151317247119115864533992757135781852491298348627270712291588580073932563653614422839620206266586292520948221873093053975823776289996754936187304352159896156876771015468496811587576227636095095473566772184717633945339405330371627545", + "15.900247714739125237305645451417508966665591345786220672552302840334525160137723176098165167253830541655084109190400464710649206788771240950251243759258268060695212680017248831015574286848979270728739089100870231114250075432989803029255029492399141798408644860336753530942734586654467728627658977642688053752033223720047083446705808444218983029996407752310091763448795485193086044050699179075227514085", + "16.021496956952197922992283502641894579962626483154818954043789565712934054541190510263229676242727892630672492409948339732534439120465067507199758379167701667321617794907607307728874859663168072318224068053703928672394393376652024298292046951118253912008558176064907492479298408285769067404165601995001682495873893492451380569168665052480684672167775365328449822100602627386235888117607629689989295358", + "16.135813783442291449575041100809653925479234724736343542177079039059170241908162244448865517513646317913575323823536275208044355623776985732503939829900060864487127004364547143183319169525031486430688761890355067541570726092642869160866842639424318480923069734468346837396224375681293323049896437786794370196393419740684520457519876260717581058279975484300455393801884203407282602155622048760192869731", + "16.243948224975912162101874242338089698927747514172297963501304802721456885123447742525917146000081948350317670558217990170315910524955950657647628011646020228669505156094231753926456488583104510177838897523717492728937537629972877557426292386450904986250829454391823373783104867874948543639133365724217397301073161382317429508046689262594057712721480553629716238053162259132557499326959178271755311819", + "16.346534812891312020017737390565972522861639520956794183631801030677318559517349930264816297286373068267542772472219372292428845683416042271115312027071601889325060155482892443418582095080544516697369324049179348198348320350032057951783059238791085449471373733253488008998200818236407442435705194113745206455080467406424910471012832247972967952311217374959559350158619575075500673005632848486334892081", + "16.444115140490340128500589643685615592593325439192231430163649023292793816677629077048173396104592590442505550803932707806677495894373323443853064668488945973357469342360809555842080876327526869093152265593359032627507962690981132695345232937664935403696772586286371082469152648334224734697834132478315542287352614722743239776066558016553826776123247656549922477370984130115175375533899599151832866777", + "16.537155171118865136534989063582757364253199496897225305411818162632163606557745471767961160436879104964882723479325928591604518246962419687548390063992529356693298596378658322800277364077966826234091623459656551097008920549618056923279473982070326894236928331513682937597704431571923632859325944958271156630648510192786810276479282782233678225160061893949554276261365074478039201200141096034185340788", + "16.626058695701082390621404187251773798561764113151150041596109882112467488919141098521165822165293765039118029510544981683905860141438867442019067534265891760023149100317968826679154566584457042877767867250357368225093921585968539417839705388349710086788853906351301543791493808667435475597486845630653110450254081800953162013336880338884388603160347478448669890791767227275369657780841518987171046251", + "16.711177924047687436041681081297469757517395732698719962499711839818824068470368594816509809165130772248099176990649818696451892735033114399817499272685517472929769530848678764490613732856699010061350335113220658748043901782349324603111802594973838523650919828685995473213566914734286172266839140529583990377667556754261878256224596588519392559788652514828861263680954096492024398529162625680677258884", + "16.792821912654942574589969785414406627855177803111176492774370259331640542125643510644899208865670120639893723574191986313708664152776559897034386961403215067476041927571306948209653637016541256814370701598681758297129259567548154765775910932763810160923332344469835976310776610418278334876476195529920021337399751846302536974621623453741347064741080510495703994896565552519309503521053051550623483165", + "16.871263338577273117049933407315211807184894736082799946337588399915643695388836578819581481279897851015095335198849942961931601540668917787952832251688896660707943869197097893837964754891796695592066084995854170120209827918603483811654385230282025426754327077293929504883381435192439219366582495078959939830875435944938000044089717015334115741229281828493468876793032191535756728196375330663180727281", + "16.946743994200631806033476403925371852051109645526740171061759524387799979304956484613870531865187139791227191840781754383935422487885452369507952721547705027535773654885832127821314459521240798742974634464887793874048016231828535132695506414037947185201173465247385982934992490469404967587724592554548395276895353595409898385619478502390678687463962622836411208115179925881515699871702165077675857036", + "17.019479282236065828727803356580529388797042464710975507911282243104151862598751845439937481303609237769338953879291798328663979939210753132559510492288100384177867237190989151135211416672909332732482371326996189543048703303285313799031214641216166381411885795576234361808712082618702464622338883787915216150436372783047860816587095332458688921705641277515576461385290501276378977328383137813013202605", + "17.089661921583428533920885090473894674921519340994685086552627218992626938319872359613748323826158856027837200411438668460410538403836237956276065714403575420148736981655027235218177614075251822388622713232585428029969533906061654341819894513492491624632974192525592636008127939368987600981961744622054023981036109865947530952316809705151315101400446930619393266624895135955182323721805890693892489067", + "17.157465024686670167940702199808038440453826682770881229464136716214305217066325160993039686330328188786987064692354236198505670650108871009195717920051441546822338399371747349503874711833721760676087218038457960626001087951737722106836691584985009357268276351001658789309901363541541142239028890280836555429745898638761562947010206765922958485242984359891337645169887782296197402533921841201821435322", + "17.223044670108153088406971612680579462250390145455205711423224535559905829397735171751863831903325186673310251936245608147861310604382786127429364616442074955520795624793164764110780962566943990430036624945190166480864873260501647262851147587875798742974124100786387378932173276365815649310057053480347330487890156980245097594505867694166591312545929965230291418670445516669557156689966248314016354044", + "17.286542066533530981819924644041556546839394128235306235416269038138274222049809140847092268150839206354707638710275634022335650694777681817694798501418812448888688173373947001904190184008892957674606496333161081431327984331509197841574297574788702287443502123119313877415278877304866456565176360773848651195816021879148876985173267277031263646152871873014441183590471141901167533828621963866651938359", + "17.348085383681499172852340212837946913681349503319833895379599364916346996678774115472356552172467728498192423708290186696353892633802275272186862935888864564436104200250553583802585096479988444811879111645109656880728153108808638274341978968354895482288870990505393394330150686285205409461910256828313237800771316014620729111128197408712519655232673726993167731090657784157432284844410962540306871812", + "17.407791309811451413991402934776587727274692304168979758129844486195147501475844430031581045491342304862802756719012802717759227086944920237646742600183730387935914237410099970497154963215669635477250725760034883360834134873909027143784365748082991457136260982918509631214089379283854791699127985575276751950639814381413022404340898037317031344649130788109442934133748721229332612763230675387867060167", + "17.465766383402858316731575043043871754932551869660069657366289253587674381952187793692876332186097637634087898052217367730831337525450143144735163993701984235559102178727289467801811444923511321849112339058962832869205150513708620081533545907748750224381419445198858131583714181742840318906599828122743306582674187117835956409356596804579817623463035229848008072471150460106195548408352347746742847561", + "17.522108137193897711249955720342223562404817078270264273905715197834637314555104238731504974899534359198079882854402652102198388084110484760619705504323190957788898675675472299192322756141627162323541713415099172067523105704142354142286507565791349450889277448545966302507723270185283899864397011417078910276215036241179611950839739662625626455044878609357243901835302874736030320059872773022839076998", + "17.576906085439158795399613853863097303860835367703382634217979275105020336999327656009595436350031662565840865227976662242781789960872250051998481804897622287887086985238091438506085053631982050247194140738539987379268409303934286420729479452837709138518786355198810012076646196653084861659638299340083440855659993917810136693887499673110592919880225890667600561450738971059427382635508450091570097859", + "17.630242579482716539323837128846626753956194314343736063283695118187974605321998609676585457221722093540967455603842712855190915316171267768551204188316976169082878976713161041600921069589708836776259260899700342542761959107817464710887483018031112156977258240064220687983570300417350906046032596793701224117336432612122346984445322343505811317200044404325245524587348610225714892960184376194438742903", + "17.682193552177642930469311075041540632454794315173833851548924954045201903733019976720709429894183669091622069055829864963447674638381460850277690319942206492046322144914184638283615681017449686491773099947404077379395563267125512703092895031616346899622091168324459335139948282486097513426616067084251033517363717148785943762510534333490466778398817865864252996839848563898275763467374270388303474531", + "17.732829168042892302590066897013224260526349617442757064898532827287653373154374250085440081248759495538523122114463120786358068331952209807684385821625688206899889794184992102701935895298679767555036775735985597715341448247873700759325978422207409167388561946150223833135803435044691082980471455256218231653367433009869225710546713847446382266908465706428817510556416763430212167661925983678317689559", + "17.782214393127773091907390576928321922818609345162469668288248606737448584265787291899115365824350981071781548351963523796289812496283393676088371363622146243894946956855177324929267339605228930435844698103907214217720043808120931206339233299438914243909015437719067832873971853535761149326746352476616918607787268605165583917095714007024394600276277913067861955743579281638075879563801550521361400101", + "17.830409496196797333256263738087407756305793204876426547866274663003566432384680240879632999625725708300091127739268764655234592101254713785942646078437589939733647676861210608435791914827456291767449764007558390614584486670558546409061408823289149666666818024559557140308187730981247373784664587280435856629009596287509432264978977660915985852234235063815941899607957940727152099219426925372856581083", + "17.877470490934232288852811743259662703350866532641876235327240424382634438025700311951299570329496669487738366928514133455422447732866797861412283887178678146519925852345567722230587799483201967913067391020608007825990349366451164476805546339769760220805534987675878347990806759564468339408725207557557011408435539499579334714364702076041798486860978860009676392441269681660376828431489832998763783258", + "17.923449527306267869903426070004616586122783729793624019886904269965872168854615384174781325332961537402467089754136043237824345234828497017675462013908498436584882632257634259557543282397560432131425953734774375224901224027834174376390115551172850840545446370919691863863162138436779349056977625063368614038926314141157758995633570593909444840439875814859101692914284555504462737973961801589348562421", + "17.968395238938123096275003449517382823058653367901994410453731720353712579214128295617333869516953666517153266184450063833611730223713367177888956257642697863674682557764474491249664869634869467450632518845976225157445436929203774807794710993549169067538180609230496568688211520386012533845072853251411123534511690847284034061828924979836346301147669327210040586682352268581578885354613616677879192008", + "18.012353052308072938755867264876761138384940766536728123219303502872235608220456049765985905816906980541771912193578395286636524639567005562096644259687421270993689984646487799760867557580378976263785987858028882916593402367582926712749625025395229096162602944095765767003293442756802839571379406129666952518296572179431801499117577022831811590456125422748646995266409456422225586206021840322692382857", + "18.055365462686668331727160748231009519565746647193730385530909331597852334952578425145279427250887034166658709337134491235522678908221793937220809954557808901763389178392831492051282059480629151432246720826269576988663211852119754955967569929315382922357289706041278636253185833298598511399638105081736687620508948263244525471222947804257016135464845038301780535378180021273347494295813215232102999649", + "18.097472281022918092839876166164329437973263728374666387409900363304423095913608188979786368122872685324785740303523457754035383735336598870745063200445496969465305638435393742921093080855121166597064087151732410717510776813994536867846471600876935467557239720329955864393503091522335217308468551898804050931884864074974187930869095426636541733964836470414482229854405996155347764481217202728996408614", + "18.138710855372574931023279730094645378686287349356676919424498204049762635832652703081045863264164065707461503608812437952726945167389204858679677978907656542126675434222486013764292798698974541262372833651362936600851261171024940667498778746253799866490414715539561648775214507198558445051277115507846030240001071535504590488750762226492938922487331198045407471864288427126708589240674067562104543957", + "18.179116269955114571377487963612019905652085216126618591531831326851631273535837433851652060806307371522002942828348086254592323263632131183438294055667010855067061587674644272103122258118876651912890486407250279668447142712674562099014392095571206458285314302909409592642841502932705416119595372330139185232535836986175505626716905102551635720868328845059106716603941432470493828723765413424721976223", + "18.218721524498032554193215680552580137491683034589488437319060302272592206508827557611431375182704552154497537575444766904464774327453349109721410510507102426285778233008253433639863695380913463970388673098705619991229471182831382051550803100625573309055088036785775202381313835883262855970305798706681563291905495590616431781211404743717763365778127660253455212146746026811363929209719531660648504082", + "18.25755769616561915104320634671335949819923250838247367135480870103002754055972575277617781066800125225275977232426410882766773084485826986957597205108505829168630501177398318211279559799848433615486396320080576991739828304477785924273653352846964138446264644904849824507615174857436913763769835408524950658917536946876135419383532210821743200063786350760207420579200676223678007228393958258720083932", + "18.295654086063005239961930900603578763176327716162022442528659338478895027684612801134718048445578078864512023650622689532231640803798279071247213212940626166721703242773412064293396910008891332614727995930235839898502680907757808722725076622433926254807390507349193089487065273859422711581690536923283818694448490391002663699373577479984089586448960986922914070154319198856799480586814831572660049059", + "18.333038352045729366070360053860247416881993539906325936417001019639836810235521744851872438194534698737793818113182566661284551265375926400252096198917463166081789346386579278436021220544269108158036360716265068681920333271695665204550361645092770414267870574761534021576748772414710332296686656677922105572480136623006540318287771752403257225484193416375374630295739694584359181669584822144217946089", + "18.369736629342788833545154829965612197972030184654204521583836723612431388284128470120361520079152081604731214550025504583810749093225662462708297813392905679444268263153178673045591535099590243771860299493196201337328463166245762316637806913270164277457975112426005180292583426915918675383435395598215385153247994877265654873384456838948090969392401887506081626510459117637684719849016393221041720966", + "18.405773640310900146133080088261946202976690317466294344672811637024889157611521518848738302063682147953709444704912322724498748005402509152494514057803322060491136048741666988817114427555111210963923209356023892097003244960804568051496345885676927757469123572277620624446804627512970828422692616021227425852662243212443997074981005547833762050079432581680067106949297497692327125068990077901522226957", + "18.441172794474399698182030074721740031645602552534420544604120821167467838337449892992771747357276011553142091110875268371883702350672621604391781630952792517951394285585851496086739721764180588422789463043949353454011941863375479066641639870318143091000764755109263681792932398864353035859720611512874738125344871434992639512151401272538083058455878170262156351968871089395179837425273523581266914745", + "18.47595627986464597709414934346663732189241252367556916529377819718435871713823800089497791390570676646849082185155969226893554048129639509679051447135722658187695404706235925157146425104283059827944524324932672824661552843990966903508121362067629390223781365207266998003720499319458536728358620338853555386727837290179454339519141841532839938596761951045619471589862830891354308681626977577420483375", + "18.510145146551442627414905806735913567003712650812295077443330836708330498077617580007887630002806998527489958357928811323358164284670780912045286972377274734553167811143903532773133805470585887337986897779623231393980154689146471547983633489101760043708991315746940120025902341173853793429617026275691215584867628750464940410772709161351434979639911956946479201132978330304672548030931942250342827294", + "18.54375938315397840777373858913955248239941847920328667581513228848814216209238117867823746808674105485439472281080229047484288277191323337476914908731578203036561093352990739771860442165984753982600021729206737097284114048195126812337180690412756158211962923840645830361425158816448002373708570542607328640280411811505735178290827333249222248570577590327817428193141575383830773736064963674654660788", + "18.576817987027647186937851258336640937668818840595786321214115700990580993937301728456982569596955182509352640277092493549853424411966677818012248002654715239100874590037738307469713048325570874520232570867464224788639656453937494219294174471955373301736672685268384577575584576576899158917424074434177408506824723823546414342198182263466224674661649356568188397290822447447185825387180657594093708751", + "18.609339028743835443520046961477709286939310853034399826433866146117641838882532805452792636721283076369348347017617290496488517658040508081002292362699460963188796636919359563770588812590411785597112719721757265655201721601867128800954165396591923271771796713301912904158675092529178443570927414653982088273331584295588174225100793199329706639345162173054259175639620324704962515101988919574683797276", + "18.641339711410638424722499047013449967887089663871032284600678326435618587023360889502435665997102476809993062067289899429492640057255987173558009597289702007868879986681400023832856533473923548707096670227832737339287908558274044368146372966754230837592655179154123960009424338853507410779228164259856997555111697864450713171508666161000757176178710802248263025585993364498172063037657704404452535503", + "18.672836425322050368486113163967894536152542145032787472779137579977190277914128508177973702344749215422866489255932015284354044054928123475206880037062819389112504714106095639732288437854189846017324055713142277768438434138800721340366655917386856186887417022606078557020556496094324427190459240576788558291551699271849591355480496655647717244614207638067307680084952591605729876523430439516165337322", + "18.703844798370253311556748128890196309240890383998201893987314003630502067675284072677315790931434159739316058047067634433988116165753705089479010402482501330164866808933095532965233351834719435836698735379881853925522288987702030512098787246242665060494288818182785084700362957305908534097737840396555283267034806128689898134337131513408714563437722088348519474128730338455257510535561818243515295123", + "18.734379742609172948695846511449581634565683544125106511957075355113091757584835040550323433523983103087395353257534872811737536865777209110758107808331702363999663358869296693765232701087487872606287651215678117982769333263424530048349886338191672000649776344735688777038908317935895545479771750928675097454702913124841960320021274672197296187088995346243239131294305233657221950357770047779041168948", + "18.764455497316603659697964676682244441947566581055018250974850982088974686459881812049067093753928158863642280317022246479491132048354932411165733919156970301233277913734990931824860100667882748928084034147822613522025142522120240087012670818451468498896073922908905983528384054249374818979283244638542138214163225714979901542761366770616662189716515808719831023436094002277345660650710470976214503432", + "18.794085668866182740204823781307373749785233327862921970091261536522099678420128101122831261188800902247301052497120590553831148856384993334702795779266689462427228385943774192181671843132138022659399715350825905060669445319905454600530058604054055511420322690455781203696250448217551628254838303648547201462249630753150471851402187751539728462449395082445265630322991793425964521071134426892761087686", + "18.82328326768867946516209716586995768024335839807194833176766112965627616145648993732694510000805245875257813926012495009414082293067923695618654400188454857448056930551075037023425200611189368317293241290052197494133870263300149851324237139757643613913686228545143709137199633423670636305032456696459165988858650794045361585281861601603030153235699981659298052458840307661288883784791255308752353561", + "18.852060742573912900871064645288864648159675216435305629278797553184221367993840166607573470069267053513735624040087819326415506386854437946403720812228284865900153407303755694944652909440890918000505344963394853809579466102995490946923404655914747241389209313457700354163158136320973199396402856713949800424774426208733366034958384913000571799639761622099679737940788622933241370717844146251711932128", + "18.880430012539655701065719740012642650514689061888847292472446317260576484360479108374318422256748212928421929786176000015552730066213309405093412502424231235041703778572229968621812094224953783751727048234887878221529796434400738059144871066371011576734445290684672478932371976691435646196856591582073749970279840730554499319160664075936135140351358832332481792115613668240634181554442075595951874232", + "18.908402496471717232311467781165733233171140941896760455553034330908971709296619686804159498334964006649119069488646486948675866965781697617293443993292894960273992948681816600748607581132058645469709895004815813032481899164996133398853203604094641445335770040577643758444125343960451089873183667195183097301272165939070294009329717796749663916249651314647264543061678516229808974080105230884519025421", + "18.935989140719681524355183827184271883117018713616424044375161718824065979531438908152091359516789236304421957752893530968312896089478807820652680723918795442056690234785900341761515097938048245785367391810983836804772037480360220145546699221066508593371664219887047644628393373836620900288539062774663891696384999640649150431067240627749142322666676970274474792135970231868616050929898319819448939034", + "18.963200444815204167404888798469665227431788358892299847438551435971105813566329353339851076750530262901184430318825907802984559086828099838800823075902608236275943927671387049630228757166718632225359114181378374769186216486342164672374303171089906235756037703334480067642792992542669516647312965086899057259968955796081732571906843773036664256360263051447703790357359429377002031207739864979999279347", + "18.990046485464088033353325238570094871523592746407402454864447659438418650897352188003827603659585905257296788261872980663015351591030286798753545075312871886708540373690732957230479307213846083134185408782477823043603415914158563765104431367119681516469558190435321626296408405773925785846797696565762444462069369032104851518168840362055319574446706630124442642806832354006488607879109906061011225994", + "19.016536938949335590921908878972071081608578803308502271146163132935001206102423418117835863551157682291011036313549071538079474102791095379250735204641651869626255407971202952320707788423726057706822543117840676308428340234652209177652929619836857962138281947043694787969753375808877555756525156889419987622193160096718082756877689454214937644538436622120458515758071395625444960838247998451767464267", + "19.042681102069820040323211057777714109150558076228575985448688497208727928412122242888431932498284067180966108960090928128416538326586163291672353531766027111567123306015724614143020205136706498507055346813817986209642505418179828757157587146552894936306186818734849750397304488535715134906592464324381660408650130874094490704788761416060096501351661608424222204094369103147551037672603814369634649173", + "19.068487911727958175697030382906549671323284692477975980792892280404995909757933182996822232452584791269433004172376138676679805214029937405307084300414313959313789831600985178255638111559270519906326622715617717964168412002699242926437873012736620082535900009120622005729068876661407020205549742970102634687260159098231611555026386636952356914915597529253373429394903680674472796958663494038067669179", + "19.093965963269656159901801532857652686731313095114787279282350143184060615248880952958892345276101741792959203039945279273255821413683057071718873479055914318955623580559627285483449590741119271240498698177664589148961791164562328382134513604070535948997556425774535241433839196056647337630745324677877037589790564832932809741759428622931327986353687891898499439791429917840804474313864245639140963876", + "19.119123527670705331793258647026174473061813878914781070641605073424527485626683566355878191198143709838509389044950724156590593262994411423265514055870555330957166471517671117689943118929441254707396532385048466111853801352620946858612646592880180562600210076019427990165200479741063391057955342589569972650353707736819649707138135073772494722116787681314798945037658461538374603477221825614061123586", + "19.143968567655614969812922707872905228504499895574401195919290684664632292543319151929670686365568982588326143748358606442800755409560708661213139514248609009613770051771501624762852458893105259920477327438788243371302722213272226600736522283567127277667156871770413468147870394343816746792945999572244176333552811712447483231232773171106511438260175071145300046115843401710072061507331123043607901766", + "19.168508752827482780609154136923082745746771414212427034681109262302000645968087085215520638009496537393752178754873475983837687377025695010556483691979309217953419255985001727184619660158435191823702770674175581797631578786818852604111682506864006199186805540809913091091561814668081471402749434233431033452441548505582706019452955567976154397574205270457372773342241946969622998755580434262211071558", + "19.192751473880834042563713562225153433521577940186973776803866639536641104273721851582869330116346851241224039623128541122821371810756925681002641212419779923811384320279466454221232217629041792882431116499214977303106306157966687858071257893713340199820635963233697984370035461108601863346164084264967404520613456100656965925875472210769471793070984755357524002396981276686789870757739219539841324669", + "19.216703855963329593992083348877341510356872855419154524286060224198192164950344042194924570763041352943159776496534086655621090662648765929073480563926604513272233491262353914647091955902924297702861031248271549558718609763974479507490837350364617085882753391176792131259310397149374028556893735115741447201974608383790314541221313482249282941830681505989160209022143487123591182161037084387107577471", + "19.240372771246783136336288622974117018573581443774444767997147210768023102387819846722491865244820295698055584478151667485670300985795814036287612086238394489310685917822308982062485897587424683040075624404469719368214374255580054164790522993745386564072906888203344350441788631572056395846260169628655731587443716443908470481602481327796867951175756539602824534024677208143458306390998693538144276002", + "19.263764850762979509196317705761686108092922892356892210254799469999751475179529646750512177469718303426094538082717842694993912366018532429385996195100165328675330327321101942399890523238950583083919577089467043577581159099371618262297126999910295820866611740582812686480215151994304295620401944519281853807987442610790122820927006439539980791908595120476521299636624843377591628005484740938263373595", + "19.286886495555294522450851525927489255646333848651043717882790718796769943763203547772413744395083720600670009266257171342692898145198064660758379840502214228374875168690401725272168814130387964227940171355345107459707413634435078254467165459318134413588306046635342334572072865760417877208230914828250259039270224031775041480686581149991980042698893384296012208438178584526032640636530664689171174514", + "19.309743887193036513569909003754932688390195189494409126081957694707453295769725463252527373922995550848707616892717734716346726926003376949988744940329952938435722400261306789658518736487435455592323288866363564460056999876237001095092480820045715217327131479089102764865100373961878408215166685028270522348153253852064527393390794401890890932406298166622224431486187051653736399833197687524233000392", + "19.332342997691718269365647851051829244300572144237799985690236148794296859647334840581772744190077146167636205171422529047782401411481872480699008041273574144705390909628455554205882856537701103044535844002047328262877230706418721410147702147287802942241134713881576962004492246225067150128745210304021219616585555420191917418786300056829952680702638022710700076784220324428140020802898115083347702904", + "19.354689598879088211883278917315015191222443867565368209411861608347893184500809153071123456883339348988675265028178228103174790923741638364554293709103213239495123865898742141584076941660965692453426480770865774436380303703020587851939728834028918714275983773159730132531253761589283704592841895713231304417993106469276962707965968679020792759185611101812841427933459395519877074670185732532077876915", + "19.376789271243668798743209719830951710660724013826759987563467708214368337563307069810449676142525612003499201086112645501159094078378318648014400550345870757023544381773094826620272453238529286555419097429861755219673554476395943490245768513403194721941361801918811127988057063915654267554707302094460700078255016831241731287084620030531370389406858605301314913503432729894455360413554796057743624785", + "19.398647412299738536733101983020344760416543000933452586938357216391679714568872063480206587627849607725892049860100424409512218327903976557192129920072602449053963631370720893361294311430877864798057636106390383386608343478253049758287190639090148001663846660919016228401517981946486814580501445191763231914170223651871543954569563229752867364010807484149328122287932691728836607206296504503654291916", + "19.420269244500125639443026886412358511499173347101740173789245348545649777799992933455717128782979425999232096035698012165274922488616903998818326535687811364645463339885951676665882203155018792792505473796600843314336576346118972683035247786115152970665197263535031125663311669153219106967873840911780618890220192918885584791820817380351857621444438732170662912318105800373867459654881916254806601924", + "19.441659822725832764853886827062860938003360575287073851586808019473777348197590834815623551815029267586554639358825375063360984210103069003729612683914916394217674289812465439813541316938870999354861402160375582810342455043995730819816948505547453029096197833928688735935982538915244747599958654970407704104602569366784225221531104839626781845870092648147888203880688567605208831444945817857785153427", + "19.462824041379362514202453738329145059871795167945778128620896576209292571177865023083134487492542931078517939464890630420523665550799939651548618906955780515811541533057671943504991862669514142328738958049297858093270685582461594213632344682911288013670395835728596839923778216755784200501989248577166652556656745561631320914185098036550279972269808563352717494278133064808018424486494613581670904697", + "19.483766641106643718481178395114340475919752681994355643610181441860832131581914604665304968112958314746911243491535376957183544987386808635080341126118126364286470448001964590403332961518317007864293940732767763315935539659300785943459751426720740528037173390794501709108627539732588206226415399674048608843262175783293190807110169521287571898125826758063922707869247389042070537305271065057452360137", + "19.504492215170652185153425611551614568097792837031617515988255748353971463776213613651972980845739009653411602074763823583486335276886222365741099356087975815479321535979397651959714956358141934399110351847826398926624666313434326948757230737160647513320407575743953348133831681915668076630219831345596329489041495050445409516995558844346940248424949708046529076568535423815692145534030368195098701895", + "19.52500521549816144973266072401605164852396136071234571245810367391072812166019661923143396972741343266046339927362413412251126099193801965681827360699083448218860273549526903661234475357554150017778848244185893299525191263899191588797634058235164494448438674653809951435022502560679429105527325418829543863756825670476364629140951247734867887985343458291386040322597855003211338820555010939867273248", + "19.545309958419535630089123088329455125777373731767323301911891787605488456921558805681207304272616222501167615837357366396904683096528060072684210523189673108467018417135186800678628444987751206147451054525963839562634340820804697604369657105969423354842149829173951943549166420900709500398322624130365195674097282456714104812933002700523506427441210494461469512180706693823193924457440917371176532034", + "19.565410630120075532420489068555321524954362381908007338302983473268528473151341321768804731192210840056455228388636731122203200610869021021871133154865620432257415783302175345843898977949742849569372169004904667621738405749986270376895267386643049526766451459390277406632576412790748533372863644721976845168460840162066672290292749672668879524315410824251032084115058493720402881895485689493165441193", }}; T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; @@ -161,13 +161,13 @@ void test() for(unsigned k = 0; k < data.size(); k++) { T val = boost::multiprecision::log(tenth + pi * (100 * k) * (100 * k)); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = boost::multiprecision::log(1 / (tenth + pi * (100 * k) * (100 * k))); - e = relative_error(val, T(-data[k])); + e = relative_error(val, T(-T(data[k]))); err = e.template convert_to(); if(err > max_err) { @@ -175,13 +175,13 @@ void test() } val = boost::multiprecision::log10(tenth + pi * (100 * k) * (100 * k)); - e = relative_error(val, T(data[k] / logten)); + e = relative_error(val, T(T(data[k]) / logten)); err = e.template convert_to(); if(err > max_err) max_err = err; val = boost::multiprecision::log10(1 / (tenth + pi * (100 * k) * (100 * k))); - e = relative_error(val, T(-data[k] / logten)); + e = relative_error(val, T(-T(data[k]) / logten)); err = e.template convert_to(); if(err > max_err) max_err = err; diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 680db5de..69811e57 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -48,515 +48,515 @@ template void test() { - static const boost::array, 500> data = + static const boost::array, 500> data = {{ - {{ static_cast("9.85291419463953934609889984130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.41670862661703722551465034484863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66781019918879108354226292713799369912745098619466567318041467361236175866573114777000418440761829061824953361563557580935951901405814080757565313129904800947783606850513184296612628910656615168927761935861462770335134108408073175949783551491164949747086136599355880600420490275164555515512645668845e4202") }}, - {{ static_cast("1.65291435510970359246130101382732391357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.93652894786225093781695250072516500949859619140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14852190138491736562279120519668390081141778746743826681517181158751264571350304943298501284647564489716027476004029804110782430201351750715968215799574772058637701195873519618784612525011353325208230847515250406858209757415407239793739704829281917272032288615255140733409015874140869835291148547238") }}, - {{ static_cast("2.95673953882856110908505797851830720901489257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.30915509717990971694234758615493774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.16137091634529046709182958669115589757019722367818747705232600776240821857227718551873067599347313641575272826830417174591636547915061517391300131065931465784194067711359196329143298499263726513131614582697830908424187934868152998838921216586737465291051289708299364409624364999366486746226077050764e249") }}, - {{ static_cast("6.08581487679821513288314083212071636808104813098907470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.65778516457987279864028096199035644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.27056224622668410282266686919173718609676411389459024877282902746284033954589536288634973757568176464096389580016576960309487231057438455595655805167665817497028295657665023126747065443986739792258870082022889306909488139458069146748438042701949551909468708242176394539901613782225328586614222105675e-3229") }}, - {{ static_cast("2.72264614486854572561469467473216354846954345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.86954434555903360043460637029966164845973253250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99366682241962146368589809577120011723198308450433185299366732500677873637460155970547267099719914327909694930518383012498797681761846242526638144261306834523078708261122471803832490341687603813336927181436827534082878781252668704774445437548691251936499670077735883150461534069270846997649139259014e-1") }}, - {{ static_cast("1.15866069758449596882599053060403093695640563964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.91253262757665787319183436920866370201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.46868982488456565751167443881314840659743514173491612010770748877346398177489343237604160804413931931718223750314831998907846386274396179552445359933868165880372381338724806279781831953896898649659594755834925976964179275873971118494605322798850925802574178528777014182338769959249415096934378557388e-1") }}, - {{ static_cast("4.72825938314130529761314392089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.22893132739781236750786774791777133941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.47245157077269889091085696140795527282280334677569169487973419233796250189843816560261965111196061138868370890204338231535198008079068304184762140493830719955323588998399173073261634891767823614143691840392792367527470000847416054709559319143615840412839768396194451923527439592939735228732869467965e69") }}, - {{ static_cast("1.29556572255334176588803529739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.81521083299418428680382930906489491462707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.91729899451736210436889587963352494969987265352294254442114149825297350300933403119961677078224257818567229354512108221647637427508041941647518586565006416113534560289731038664091154857692367872604020422463457596747145816854139701847749519264660326361171185139298113322096978245544144264234481020815e7") }}, - {{ static_cast("1.74305909145137593441177159547805786132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.55727459709495003048473904527781996876001358032226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12324923143821767715038683964417533829057341785931080679952341815408539775130405061465897612861320390765996927155081774925717154208894105154455487856335006846587865128269477586014136390788140643457017602926503892493119037260205017744346004538379559837051387829449807650507431889923695496342461088404") }}, - {{ static_cast("5.94723096329786358182900585234165191650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.47960584914021491681479503199625469278544187545776367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00101355895664265703253905800820834352012946978175213925289823900262226487475877307647753894219794796436589570196875943062842928843129407133278574235943906905626144071246066853301987332156463703818534415183682692042219695734377740067313312425523058170350486981674302932951851973390826740834796342180") }}, - {{ static_cast("1.68908811949766600121487086783034214931831229478120803833007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.31583500510190560817136429250240325927734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.06485337562137503941405427253471002412719863672407294570575625371322654317127374055512455786988091092329605000808871766177184698431732837248355728401235010135527651826220232715652024742668291949645619992685612328535253252695622896976648954823150769316159100729259724133493553742448044299816541989455e-423") }}, - {{ static_cast("4.72470471679805708838453814912838879536138847470283508300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.93150097545414496380544733256101608276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.36613880262643802742756290736395850668317512466586871167321608424137867570108690626258507320043808302565319397131444616166042735793688809613906106252620462557968555895414582976985576875374557668514391264049547180886976991031038592004458693177738810104222966751846844587127740341157319952915743398285e-103") }}, - {{ static_cast("5.42042332941097132481544917936844285577535629272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.51174849138805500459170616522897034883499145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.77171703127754502681310204125715941650801721154976863870699221072355335125966565182666925044598746890911836338141033359039531496488403405876863230608143768785806156629534985369811294999635059473513624761915818310578096052710097713441725036078711101258417410421951107958524860020565804089659046743943e-1") }}, - {{ static_cast("1.03814929656497190180175493878778070211410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.02775539432865528274851918411059159552678465843200683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99908769642175788386137778958539300137602918424410284952085874015336769726750047569734816766197409755257562872230833189101650544474710424482558254479079319860825174137124403380959665595507587367668848404286717760343524270837960434045414179621713212480893218438355518348995643697164109731552178914851e-1") }}, - {{ static_cast("3.82635641630229656584560871124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.04696645144304778529686927868169732391834259033203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02545504718938094372102791727911930176506035001600018053644429991055918696319033730794852043021666923875675436795843500904336366408589219201909169612259476814126333181168932741070039124737361896932592045285182764869916877379718622220890978571031406624988992549594836404906978120992311725853941493659") }}, - {{ static_cast("1.33672486906479148771609288814943283796310424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.20701621203230615719803608953952789306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.82608741435940656086722594561546646099634760918110959565977761208896418216166536561903222226214939613599640463597249764023513875896636280664458251642404729724932181291845871312202787897768372355186920789243514016890287945724482698867187289280837997988218972650355222505584789955736058952829050123955e-11") }}, - {{ static_cast("7.88803854908014727698173373937606811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.46278561425722486433187441434711217880249023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72840141730863663391876877521764355960382145920572562742914162972208384723706307292705275033115082012368548682595775882643927894139786449383322664316773126131611883398659050539189893838100041408464889082404113404032943316931275847874983317572290683797208861989532362102600980996636385789799495020849e4") }}, - {{ static_cast("6.02908445011699427595885936170816421508789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.73159824509963122807221225230023264884948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06403097260563050081855800637166449495962164712719263330810086375883439970326530663445685346228862337912240907582664457942174627433334293660419014781254710335542481599007896808711916825623070383641755045318205803207383228319360990374222920104547227487223738392731388028498147565624523546346417715655") }}, - {{ static_cast("5.21882079270016063787807070184499025344848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.00797343550563134328967862529680132865905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.36552325485277806964373331313098838333278330423455390715861973295876349888773267892681165876113176797510574847645252615081953879524429911159719101193921387688552351634752458416166446355778230365755243829643708299147847893065939954861919388676503519612640610354931769525373202729617723199328630093636e-1") }}, - {{ static_cast("6.21172003041995424155174987390637397766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.60919435020819194006019142717534009534574579447507858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000157241706535645559625081132898066253320364132991765749046567536915342813631920409642832019004224458248512335711478395060579077427182783938451114029622700384959716532968625901664719629811957905865676402174328291417935322613778738659214041802729741480722967793087943757739011593472415850478420639") }}, - {{ static_cast("8.93348943116835901567807098899720585905015468597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.15322293979125788609962910413742065429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.91021563983953636397848520840523223624643742835964326188016961937573012460753870407293657436708430593126320103796954182972032017026192445957161066771807675200884423939605981304732630092257312925408813941089831976477439943114677798839623996214029155361569909503935179401196449493080818512569086682097e-1267") }}, - {{ static_cast("5.55105519395504379644989967346191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.20561294990389011871911861817352473735809326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11282177288045201072507504088709286277978249266318510332909847928909226338145185595245293917086320817076726850666066198249106037631163063795831697507293260413136608221812252367908447186422344164553977681855896096040438700902356349275031836676568495994537852124264298684105398360497193752327260914137e1") }}, - {{ static_cast("2.64139377644600310476863391784263512818142771720886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.78537344498752810831310178230069141136482357978820800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99179632299559171314926709030763809736309139005374052895886931807671532458904052556141342139885810036321222015645710865315806166952058325774560966552187527103940189373824279065702873017246336399071137612269219545181070886990906061668084063703411460250321467244169857420435253409159030432098292621067e-1") }}, - {{ static_cast("1.04207364225271594477817416191101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.49096324860676521240065994788892567157745361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00881927761618177965011845644574187803759898330801723609976606642566910129111150781463974721119043760111173993259232795682413324213317011846206782754096089290427628991647487342082014619699610677423897602146820644840945077548746946762791624180147374361784328110343084702444523109612274014821745626982") }}, - {{ static_cast("3.31519320566263809429985442989163857419043779373168945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.69130350190431280252290058285780105507001280784606933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99544126695324189746630737456946723361046661345027805407888971023026631339988056392642825478722792254481831582440796961181158845762815786131168245934078509438401554967954057934563178474479427510608187860234090448388699710858468168174057416883471915845617321874136073232354461932587707630236256378020e-1") }}, - {{ static_cast("1.88337177923367888807137937590141518739983439445495605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.32540268863411711208755150437355041503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75229630554212330195665922771148699451829771147200356624805857657236782065140481467338634818457146889580617522654929450001033313425457042558128784684181381335537144806647956114444609625124141647264003246426211941949785732284342909061255617831919446477154897012961652269654460432165747451828975060062e-1612") }}, - {{ static_cast("3.95459290525709050712066527921706438064575195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.67791671378427392183514677004296800078009255230426788330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99997515679857005761440503886095927815406391244413835291624899797364615653895949902813000744851723242602512239539568754651988070279277456656779917196036522934849059282355864096704432345340316634144618927930200708582994637711792811242475638942101629267185320507818308058050356385241284795438747530570e-1") }}, - {{ static_cast("4.18765706320910169324633898213505744934082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.16291806714740175721090054139494895935058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.21448401185251170746394861880464242649255630391558005989017991140563422704674077045117022763467561974222030061746655113958910240758539727055748249625892285904547489203480154655618632992990390332430221914382681227157928848406067945057161854616129785541408035327136685741399621377579757754012545382969e1") }}, - {{ static_cast("1.28834086985551640736069600734481355175375938415527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.50705923255961032891647732867568265646696090698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.76932835372685523370171735287063726416767225734834615849134547109660778793799398169080725972094573408844765674179657286895933198717192952354877012591779343412877647689917686841315165602494901218010719779271020694334581849406783713948998204010537229621398578990055098138781426451663477493080600789821e-1") }}, - {{ static_cast("2.09720612044679288743509459891356527805328369140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.58040082173553630973117378744063898921012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.37769288971832154015429547694831033608424622845142547611771987181607855769209591840464089347717993026475816138178319620101164703046235086673631394869476080594839931563796671833715053698127488579638544943331524253087769152813629459325853986427109398088052746438762088357925061124187186100435982047033e-1") }}, - {{ static_cast("2.86348409095251425380765364359092473023338243365287780761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.66147340815298694138846258283592760562896728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.19957610695947876947018322120150143406142221469373757924519795345150006977773403730313023369079301615734601162566867121616810596830759956044509310651071485457850172811241087990683705383118703983140409701647142571470333867908682196499347683237058377349085352136214854181401946343510795949868835711429e-1") }}, - {{ static_cast("1.43297873345568077638745307922363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41681240009364082165985165850941029930254444479942321777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016822776212044529668140515271000711944889104836686684000447554242511520504646895662976301872271981369559245931879055379226726537073846553544561947637792091890791964244339592472180091648456672557297620691698497967178088487062658421331764320606009571740080394934111049676474128724114098218934644280") }}, - {{ static_cast("3.60098653144944158555063040694221854209899902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.03376339210932499668160744477063417434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.25275538744154336055615419863736730746930928726962752118772852620054361808569416481449220736645770958820155429279907622983889720952174836443567087662689941130263300184594808723215176724531461369529244321399979413684112346655770810116945662086924599874483949305102682382993398648882273436739947930631e-1") }}, - {{ static_cast("5.29540201171499924810703863187200113316066563129425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.56136148696097143417915731333778239786624908447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56082033932816309081231125453071826327896674917466727856568147854623107132514590973229074834141556000908164346345063684708226886531162257152516511661460364047957606893852284251293056880030888612998267350454535860387161852393199580592248818623376237183284153405740445167284591706260229351268548628924e-1") }}, - {{ static_cast("1.44301800298425852986383688403293490409851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.14308392953894662376346236243307430413551628589630126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000261963485792416853927136569198682383793838454319729684734973539039182323306199235318171814360855994012568229358281529883676852371448365509202038288834881570383584403906835594533516647281713968932211752518665238323196577224701747937440185305151190908616249351775361542696295892178890063882257116") }}, - {{ static_cast("6.22803809629584627372000937839402467943727970123291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.25094187232484732597015408828156068921089172363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.86658469541403998034943500870243069476823132486007751990824694615782893644279173776512596334159142603325455113617967643461939139102971978114976150505918018758878971981207590718138194009315889095960072548673588879789986017926322494375432269097377546556386620403909103214427884440798206932883636297352e-1") }}, - {{ static_cast("9.85553619558515492826700210571289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.19375835372379413001908687874674797058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.69327012293708811121144971175263370083910101169553278058859848877086709080419562447585355719348842415619132355236627485649548952876411849102018675375354238273102815474095986357261970461229247085634624604985094330242448976955585994530902647027597520370418448678147789523361182103563378206595110636366e6") }}, - {{ static_cast("3.58793922164308502070761974778179137501865625381469726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.91828844531360287462007363501470535993576049804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77635990889125108309690852819112724262223736693646969131631611067612444282401471024845889526676870050656945639578159737127915466435929600368572355785708484463627825178182883323088006398240693308602881027224033181200011330121428663774743869527395379215026638702157803494202819893449358544841576526785e-1") }}, - {{ static_cast("4.96146848614257760345935821533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.36919182658175953015700088144512847065925598144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57915370211935194723362359441601671775858730114448762856923579370262681814508708674839371719677055754578289843591415190008400693094242195743768201495967775525358591358166609121796030602701836084062498854380733868656008519376928763241674707747769169741392588580100945268376807756367217092609019332523") }}, - {{ static_cast("4.24495621335822494657116776828331694559892639517784118652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.41273133041338017079624478355981409549713134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.05650148888948869811331120941963319541414375806822687983830138205938420862200064078576598469877831249406211581526927963122105281131255004573845222711684347603254852806653766035434125383812586900316395999300527269121533046942253679078218107723668449508163238533047093749711627477323541829484653131292e-2") }}, - {{ static_cast("4.48640427032238338142633438110351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.57545512531989570200255390552968037809478119015693664550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00002050314697607659431018359659361183713303212753613120902527904331498111603138394334757418054814218670389608976827498549914166555768752494414195237102560486571709642923543196007200071132086884670852209514113439317507321835737223329599950365222037362534859303381396326717532288233329927808913598785") }}, - {{ static_cast("6.49749570902381674386560916900634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67233186866778105184039304731413722038269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.37780724079840208711014533649991541109470796504084314835156759344214993302863952807171583660778803863957191115559320339273255056520571556246744533838811694006166732957726755945662570959533321672076547914911635593118101608294069731654269467619949055336628326621660012876406202543146880009002104821553e6") }}, - {{ static_cast("6.09674367112420512171411246526986360549926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.57044841435982965565515412365016345574986189603805541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995606813099499267634389464438683850041060806908350269346321155672893761130577244819124593817984249660934044363638948086248241297434338993626965911693249278796597285537898160766381999495115463474497883772569241592760426493272254012575287314033420480717621539078495596903806489817283498263020744184e-1") }}, - {{ static_cast("7.57503455130639213876975190942175686359405517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.25659927896368083096931278497265793703263625502586364746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99967576340235983529748322865757677186118554170023614050204881657758768441183672920424294568610952334609747551908015545068832481235294176033402023954402315837530793201944548984799957607361928025651266738940647431602585783131780321746876553060340085541214977820888348264644079307051095179685852079945e-1") }}, - {{ static_cast("7.23094922542264449683013793901409371756017208099365234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.59957635240683257102367598179171181982383131980895996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98843860017333489092110505899347130551976013147438321970353479326257793437223848104429707854561661175450570835038515201752789245106905767296900600611401551754756721658819816241278926439311942572630487380703760937536160330693843537976099522621025621041857521661138411993182809798954282325807746896512e-1") }}, - {{ static_cast("2.22347866336470469832420349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.67574314969844628819828358246013522148132324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.45597650920700334896440864288586774552136744768533970151074149218272851829624764505239431335468131476208480181217427109189696065749387968903474055278714181692867425657254225967806378137696550459591101296481511902742572646395696145586249150843548288850238158312747067673295059110101209836587291678717e1") }}, - {{ static_cast("1.61969754204121987178899289006039907690137624740600585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.98433649539913870007978857756825163960456848144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.77061455335439039778043359172467746025200146785630273407892949860314031306268447375871357416922980298986141833641561954857127992214135487677696097641048847861017455164355255934271546462888696419881919311556223441720520985938735112636787538160901409982382930452852563601752376961873325250302513132303e-1") }}, - {{ static_cast("1.10785802837759378425275258450710680335760116577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18652221207551884308087353225857896177330985665321350097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99946575396258084502018839446238846584110705812867877643924485585779113197512036317728340100285410504878437697437320927763146715271389949541429089452281046460116468251613835907291530307473134875676645637754443536935426771393775580503285493873005924313301673550096584687732186248324962291699197441007e-1") }}, - {{ static_cast("4.00900856150933880290426758463695477985311299562454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.51532437768501453796091832382231245901493821293115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981169291887424157759932262067246066753044936086128253970315838989839817149914187581608688565806547274970455207936904774502513857569845689591879527047150474914557088218340646463900082270385606124499095033110795779754466447281328092278318076549095302554108789079991538595665731579745334006426859960e-1") }}, - {{ static_cast("1.19021350263737038868705475636033952469006180763244628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.68290288542928294646117137745022773742675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.04852417540620009944566041453719467211390230149498516011819535440728246929538100576552383464173953438153608848998091884909329517100819960017904887302473398843345408874822800579053111675353115760245493436345787702548498655314405766561270926511701674435330529881522800583133171192665005622617374333010e-67") }}, - {{ static_cast("3.24276265467208501549166432820214822640991769731044769287109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.45408954542178808083674468321078165899962186813354492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.94386254687686946963322383552185492075977337531973213930838015838274376322044860137122810561067818353529641305366066211688682157075369267213623551618566522232634253178245524174116891287095569137130501326353904791232655125453161983083517758472031555434930112729665552915867163490039363051308443099856e-1") }}, - {{ static_cast("6.15810616566200508259498747065663337707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.16615056291079111083774932922096922993659973144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.84767212442093730437806115126470445228033445461780019945996712538430276008229376762120777978183512697217805509135802054380845495119030204478634136438561790634012659775242132306345870420149133737299397362388964674004273429551607587049902912378874846355087545159480302396357641147726629312485985544367e-1") }}, - {{ static_cast("4.98639800075090606696903705596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.77610720170316863455745731714685575752810109406709671020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001921243238237193183827489311170506446717993399056537282384027062526108337893488664380391849139457202726524784919352515463921911589077429652463880766791641171380378763553978844617450998857121720620679684506344842701809891676387117033562056914974016308650056416678855410514380179891286420315463385") }}, - {{ static_cast("1.39829478131476389535237103700637817382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43499530583138337064275091847775911446660757064819335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00024882796344591385461239880845260384691776851307067376321212831043330119768926261152601978474535337925904198175128520020096443925386965960197623129024285407478015708065567539370247164906581380771634920314388644089046167410745320267558557473972499677590220735439622489041126850128421653983634543138") }}, - {{ static_cast("5.53823542724402595460730935883475467562675476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.89513503025480504506072865211763200932182371616363525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99887300842861835164017418113429559930804468019069798605482088141983665217815479503166341320807290829070352700865762573462007338287440579346738382811838185553843038382146930720875234411175792603385681200743384496310942148612050283753172718455515566946341846284557394785250850393323918755270713010620e-1") }}, - {{ static_cast("1.41121361373833846300840377807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.98754187978802221437035768758505582809448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.39052029796505087174799036572060834290339669936231503015871931355721722463161747207749930806516332386763841930651054884331973674982367750538370231486178766251016302345689298357523496706436693633349722362506875465430935461687316908940273568043577086452494403668755303085058972545116855832701160169233e5") }}, - {{ static_cast("2.89668134268413328424353336831842398169101215898990631103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.15865345460021584855780929501634091138839721679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.28205556117411408113652874564375329933423424935399606070975188165013549346043442272013469493594176280229509402715241333520310808546934629428072668916547032154136142048364995378685732366063433675907163954131129548865718748066808278449447269502355535592014434886553141414017802588692926998785625006881e-1") }}, - {{ static_cast("6.80370452266789652639999985694885253906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.55585667546695538554502036276971921324729919433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02281231404359612151527353897929180348478744328820333025332541070807332704656155540376559985312945856024293947964716753864592850899748540597581561259020876390111605898100116321942106603048757052249826147692127068934907088939143183343054183800841834132202006495897859489577613318023621649632711626369") }}, - {{ static_cast("4.62504113144313121035178237860918670776300132274627685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.52163427846739888679716834474220377160236239433288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98482342652643471998471847918276729621115291527655407478347392440646810723671728307137559792389469491363165496772939188998042052370839020230988405367662374022902953797332354477989367493245470167443057076807839721016298819277997067517609396627866901281229526562169916899579412733467953808761281274902e-1") }}, - {{ static_cast("4.50822932159575771038362290710210800170898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06839470475542444583005874392256373539566993713378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00407725957483558818239220892424948692876561612077691060007144800995480352451729509031292920021843587131856132257906499443064130817064638818765366250131236399994854411601609832821870319397908684888708832193783247348840517389795509100198832759307607589651546707827898198086014636944156848700425178047") }}, - {{ static_cast("2.97403319008989266980513832550059305503964424133300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.86474774881857552344399664434604346752166748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05563040619657475424023632617553458144221260647471757349470769600263284068856263065983919485584722356671096360406091314847188039821446085937501687228128412834520625095444394738723676139779119999762553228944695777339743845083698817002881418226410778165865331625883646946752393289471811888730325566680e-1") }}, - {{ static_cast("2.38325080784211650097859092056751251220703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.66302465811868707690202029425563523545861244201660156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00914434741735633383477956146627482536171366958054332840551181784200344603582400731522959980543848217816660950109678863255860871237640121402147335369863635255623422637578873942180607947824451388135749116333642343887949089848641558138185462358132315292011403950110303162349396320495083970574820485984") }}, - {{ static_cast("1.71423190201370800878066802397370338439941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.22776453453089651191021403064951300621032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.41715373496456388539324810858409600194977863833255435782643057881295200486872481370727134110261522844531904021514609023835218872201273620577170073750362820523072032985530745444647038907617563505404059737966630343043214665700476103118304785807103469358517871674775523305518419709923690374745267779192") }}, - {{ static_cast("2.24202183750390773639082908630371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.88606137138923326407313751928995770867913961410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00356204426464651318381353366766656275190463831503522239513652128295092897680949875433153708401966246976000272332294389517143726474038495934684353460128449357504408039179941027444904612222505017810534008770086553370099204575810832664720970035523251219105643922854038752127247330051903230606763080754") }}, - {{ static_cast("6.68254924276967532392745852121151983737945556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.37453434835288135218434035778045654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.23884289615444976971058885660437787480627352137562427420631247881049437291942148842029267007686370097695430731343288589752635360722257432905786816202418979845289181427172830309982121527477449228884669859681103900842455539708329644639171581286590973017189366587396069226010533102477610964537380565038e-6") }}, - {{ static_cast("7.08735989603501259637141629355028271675109863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.93170577274373727050260640680789947509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.22994581178880428430588361219833883540463488675474104323353907511764504539625188516288826354093370529125373667749527512470360034116957923611728143647053700596011110669882224710437210488847861184277118067955181730553186100384807049379684590737156995709498402541295775367296456895644229479101255193586e-8") }}, - {{ static_cast("2.32014942323958166525699198246002197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44810310131192876426098337105941027402877807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.41156739924941071144222113991630683194620198146427652318978812945951687592217439817665385168004660248141475796965481088709894832854582569992290051260681221672250427616673943995167609515610097891251991676291118804434690243303234426750763059520585143335380969303297852505455054177640936866538646738978") }}, - {{ static_cast("5.53282998141260031843557953834533691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.84121602625912601070012897253036499023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.58373770974866315239700400474362989477383658235694014601763955308120813900734144800418886820772189374330395186134971653113939250757648994415649668842051891937875262317539557069792723676293862948593761228728392700591159530165592758768030540795599964339740660316188438257430600649159884119157424191581e1437") }}, - {{ static_cast("1.85718777739859418943524360656738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22760764621501818278162532216413183050462976098060607910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000634214788464577855189457084479231510812185767194037441581727975561469887723538341241488476848396809344125019310357146729535769441778199276860378224675705997700022744347653159656289098028240954603207536444605258988369343538458427994444681579339406242882282677673848923548267602318784029338545299") }}, - {{ static_cast("2.26509465497761368624196620658040046691894531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.03762510179397637877229954028734937310218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.03290580019042823129797947218377400320349309579887379648069219653044521496312022139633395975447973076157177628011296170468228189168841156259900536323684747126636993787966799478738521263932697630770091216225209592893137197359045523997671979624680066252774430678393930591603773849047796785558663064178") }}, - {{ static_cast("3.00476295219746433740048985328030539676547050476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.02409308153823985776398330926895141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.14136997855533491337740509094908136487500777275671775674006769752964040924959289897651192452522290539206601428332553008348132654735739834724305690164751538343877568881013821199733121651153278576916744941958595422652696891642421407236449964345890318648778746090208231400439749942969896805715062234843e-203") }}, - {{ static_cast("9.70798896667321969289332628250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.44245980458260469880826804001117125153541564941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04162803810086699019811359451605453492327199203637588333443087016790236547076001612983024940969264195708947484110311219661303765376669460085704437741732903824466154100734799424439147057676949660911617676769474501254927589549167841876728171722481679869607753266592648983928705022178056753619502736504") }}, - {{ static_cast("4.66389224589813756668976729713449458358809351921081542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.41598683219974930125317769125103950500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.53382042139791789590459891074340066702060120383660058981707324170432197791546635984529280576877432127625617337120709804544743161881268886942872653531280982977576133511801284796672543413476367564502976743587063883733930418435751755822485352709171649159924126024328941448624940766411726855902924670549e-37") }}, - {{ static_cast("3.59808415633625783280891141657775733619928359985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.89106070923696201191432919586077332496643066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.11957324795765157901703029938063916662894000731995996196921601505519523032651152137148283098242267387419838627536448762986353433569901640648734154364900058234967711292575255307936095926242393050569604396410567616604312846123878721000606629431359673384574670669906697802557686478096291498804903738631e-1") }}, - {{ static_cast("8.29546112810515936034083672723227209644392132759094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.58324466499312066503080131951719522476196289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.86659658288740565122000959721270284304946720479579271651550103638161205367495371607443353257219806398111103943515458202894485596325631197266478165244814107159447017816960534609382148164169335790367935277372018345236031109996214855557877416239874683021494253068006756484498147004540748744410389570461e-11") }}, - {{ static_cast("8.63334593891555979183749514049850404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53080323158965114771490334533154964447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.35233729973545869852697007160756749812975339497681040282999017995032382608550729201580422775220111291799102420635253476809267746237352183450521514570985348430714476644398637263228584608977432119909919809882847191196859131282077491115028311403034792745466352775458252803189617423439193439791933123479e-2") }}, - {{ static_cast("4.96802530016260956990947761369170621037483215332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.02519683572433439877613636781461536884307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.79130174131074712614824707606461473196424333567411409743609116414751816130489331857231684597817414740294362613028844768413127008896909984819847802879905875872491406317289520166024819440680050252863090346899246519659384416734528764367429297819383807550500609868490474715994290375146313368129823880737e-1") }}, - {{ static_cast("1.24702033554851823282660916447639465332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.71070595755497723185201142115374750574119389057159423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00004316789477874277620263489613820769653924396429221925198065527832144152145855155330213971456389989525794479500052652310504867952437063466242776820964127214900733034755428153463014611408545155223418498794841462940237893200540509678171081868776875097700422657888013910264387140255547155547751726595") }}, - {{ static_cast("8.14130989781463318757936953318221640074625611305236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.47674360353472167162180994637310504913330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63199095965818056903859668356569903606584619352293451010588563431807635376986054905897873784109387681218165026966672415089273447045333707684197569751029547891913778442699838628510300753325723159251992398807517774034918042863197611983714480066975243968618918488213538490759809651966026386013669113012e-3") }}, - {{ static_cast("9.48316047562641761814461460744496434926986694335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.87318705342295180847622670938790179206989705562591552734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986164907695049446699147999970503354260553000953839878275159076458261755428730763560216631851642537174133195419034054495238529976374508256949441111167727864128507860277033299044051865971449902820004978297018651282279654117307535005136847959876138249613275046667240315151303933181873427450473536424e-1") }}, - {{ static_cast("6.72439622398628665533859560810014954768121242523193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.25371945127648842799317208118736743927001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74287216286274945633266572714083322962101975717027023442493643122162512912802620909159732325958549010615659395950026917825109006470507725724883444926417334797999132724229966674370457592343778072797597317430071335665732334697884217471229705559230148495486170835726019893708870900510074940623722192258e-24") }}, - {{ static_cast("2.30442309265876887366175651550292968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.10077615004599603520940576117936871014535427093505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00006298512189780533426621327292231284630240394286315128868176668180396156679505765231684868863847590833570938788465357619602169740491681317033999860409913654411707265663879954547321897801703570651803262843624273611588702980486012373865440788314427239276089286730821085936329475836740228791493079509") }}, - {{ static_cast("5.67608898683707252530439291149377822875976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.07683021912563162914011627435684204101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.67068196412266823466861212116241893055807436102731155140415238019317223182255528301301262470626159261154640191153443230288813541880287940859066915763205210708548641176944414442344483827370453800486623574896474317715521007693847769491979549043149389934860292588058888100428936865217794693086764880012e458") }}, - {{ static_cast("2.81337246606456581503152847290039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.76344844070871521052312758115476754028350114822387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00084899099059737772913859365556118027581054407285954758329055990529529377511066455820790791091871502993434775634942750452313898053395589443975739777882392931281046995883876066279980856281434476038018812014179817821871586805042023183706725376177160577170143175806815414662475357051404586743878413781") }}, - {{ static_cast("3.34983523837648674431610729129715764429420232772827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20852082105692326674528658259077928960323333740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74653990782509243550836183201075823369159155519692846798314436930630346572690178245424014813711682670551067058906680367646181984756645025448347553573937829174199564122446362713993201587207768412845129431576839987405545810458778769778400165994012026984577717831659943902405397254874487260228557294263e-1") }}, - {{ static_cast("1.17365003664101777758332900702953338623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.78053489600925995972602322581224143505096435546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.05893503437891990856263354837986270829833882333366791751057714437977103925035624856886729661425365010268503431934637684230477655839134293793513971115798026793973457123299079643692631311303731259185411381265912635677151301389868547814580071368806352687212447229499485791883769033890017890187866384697") }}, - {{ static_cast("6.35473191480731591582298278808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("8.15332646258649447190691716969013214111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.39785593586175436998336047723152633390674636830187065022507274459265394076960202352145842758484227495355755965560336623550772098175134115092702375767668586879200691996181864401350579269221993542974245130770033239773182375358583651870979382999043883377805409110023459275245515025837447884289450716490e473") }}, - {{ static_cast("1.20953010742292040959000587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.81528620999166889760090271010994911193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.36836082188852137389175804388074236213762814888145199618983165421342520318145120542719392963440700570926350816427711317556249274733873103430368341047528787950522843632555485443202700694068291761260828423023146529348899979040923182831897371799138328552240635790031739904574931369069808189107688786563") }}, - {{ static_cast("5.02826864423656406943852203994538285769522190093994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.49148497614115050149963259684682270744815468788146972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99886724184991506266822294352662914256716265702852450641368490227402118731911016182228523518485801671330942930187800995820804252420406598640376923122551567922827288661396415930336442260706727249870079649992447995120206397679683465259479974096061438201134430443691684817587750638183840953282722156209e-1") }}, - {{ static_cast("1.77623605706485581789272343300467582594137638807296752929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.16881559843790408872998831668610364431515336036682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99216151571584206550599285631558723279674057106881165894202136106399680298454020164284514110193651012658901118782805914666290560642145072003861919887611842296547047036059520963486973019219177746829500434614825844519776793639037139709040279058532565912742721673028532604681375807832044191447365386410e-1") }}, - {{ static_cast("5.44470752993507289829722139984369277954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.89424994358623844748022030382017533156613353639841079711914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000315551756552929413349733123431754994533967419962917545562731445729245526256276165331606875912022797791137395975129631042701829381104269734643785979371368397149024305719491289967486350643357572991392648348784068298353851347894101762457227438358667841811859357203913787202416700523836489423208926") }}, - {{ static_cast("3.47952865539182312204502522945404052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.70647055379554400678099312926860875450074672698974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01003641035516199003729871729172100472722683758579980406598003587323081240911466133797745466321375213116846128724578817241014105529656120259049841543565831847323023771528373536119517374544673647922841984354734790648175557634969225996223997613913923117328699599574593399806697328078695200917124733876") }}, - {{ static_cast("4.89683247131728754952817439516365993767976760864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.96528625490362656162875165666292787136626429855823516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989546369402488423594127072150976413227845609208465040224219805251052465526350038203035493184013561718362361567469358800995276604754108514280603768744650567983276404672018483263585666869718723877857972643772304671740644914409892158811218430582592069739462405196179208350796857344173822141379782399e-1") }}, - {{ static_cast("1.46846575134083542901741736841358942911028861999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.13961295777929194628086406737565994262695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.25155431004176641664360564432608271749851863826540763464893400702786658931519008803678187122457752047812131114041410952546777155616546380522319343918668230249104290662019435519965989945104554644065424460926764956490748710036580200886547368376656130754697653950693222962392418484839778727280176131769e-7") }}, - {{ static_cast("4.92258328635518438431972754187881946563720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.16701285749932963387021089829431730322539806365966796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99846424401823072211356827414998110501335375349159811161820098061831954942111055007312660415928636319873898347702590642507419097876493991759663677610295879480797600223758201686500279349159643821096880668703139199785910150322740521690695804135686666464835791331742866153491003010427701847514162106732e-1") }}, - {{ static_cast("2.08891842024441984904115088284015655517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37451123552204679256760755379218608140945434570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.51853459491101499462028153198307960464036529321862426769066486207166171296494170498179583135034855145454026518293079000045567402865046530341818676848400774327944796661350087157800975247279219703171839848135584471839442165788564723636737356977396947188532339857132058951624239309379955278406455872013") }}, - {{ static_cast("6.59693951898326247373915975913405418395996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.58390504285117244415159731829589873086661100387573242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00016195756688330761491474273615136423552556614577036197755742996689336001512360595235890000441982158893267294826116899101351409093661584157256387065246323209052057870928088601548025462625595893993027794606583868972654751596093207938303600634384394989635869479864226583469214082919105133232859648980") }}, - {{ static_cast("4.72190302282203920185565948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.36872614795644276242114756314549595117568969726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.36273289377674003549552956596428296006868194528902491172931330043916572933784595495824585583342079403134944318241053700848989680616524963231553615168899405338957973320487490472555612135391925458093520067531657179731576065041675903036737870428047782297012296101361469066116145701281560378942697624754") }}, - {{ static_cast("4.82034977757478931038870317848932245397008955478668212890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.20114163951150231847420091213507475913502275943756103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98806768192609411674337267672424056960083232464271360229113542018960233572696008296128150338304172594110837781004501757127999427554595909914289685513812993265024374119615672800606621652602006481141937435665444874495693840170640030665928027259502446424921700891997624978473239252852217099622859393453e-1") }}, - {{ static_cast("9.54197957425642506734675407642498612403869628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.34304142023469919031697372702183201909065246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99984326565139803772938990236401058117431661922045573846220380640349699832779123098058540753008622857674232899802697126593866411818203678224123515319186907350469596960547397261912465753250671926347546302198056587430826863955515669743258039245240360599418185587449465990312391796474083173534248199413e-1") }}, - {{ static_cast("6.40960699263738433728576637804508209228515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.00816732049831557560537476092576980590820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.44157504422123306075307680246115279780269010737951173392922320903011026254261224810748434749033392788723902179648854339741924679540874536758451693815806813776859218948113244848659597589114467756894234559650445795659560796369660440795499707193716216403592941616722628011042403021580672267269382135734e182") }}, - {{ static_cast("1.22311589009840382402671821182593703269958496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.10469349157712311976231589483177231159061193466186523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00004238976442526402787977257335501538186147626008780569692886964327726967250839556988250363044075945205489441982444641281650300897861533023502296756146804366735904879346020295258735438264424281840920414740589412010520817925020516062766522452589181209496869654998063536725728358771467633669371863258") }}, - {{ static_cast("6.39291118430208007339388132095336914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.28391975830675164615968242287635803222656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.69505481296349945509651870173004703548467117826619443587513918127052944692060859604078331125022112009253571107992368448403956917792261351644585277417570509975725723863004283151424512684410008159602519982839123505049564570077423370661622862250195728714873045142974264003278199036815752137105673556433e4") }}, - {{ static_cast("9.83190653233646116859745234251022338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.16849063361153184814611449837684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.25770980590636267172342833096299211879468172398651157530921609762966193936659345808702337762714296668889853763786019297633422123145533613492472992798929637639386760407400078511978818609469799050619387136981965857651597610392961103496543359101531210986834447630570812748220097342632073167798940478519e830") }}, - {{ static_cast("5.47317500559057634745840914547443389892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.25569401906009264768826483305019792169332504272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.05154283217149739996322394073132732110285973177101672144476243536792403202554641841303821681674178605013975392578098758039213562899690576014988268448654777051869934823936115258309781471880324840875908371004233345043851515355481534420805940488435409518654838065662552503310797307929345306698760361427") }}, - {{ static_cast("6.49123836382549113110940197657328099012374877929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.85020261717664669109950636993744410574436187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.50660946670306311914365279482095005173354041210571854577128244379583503141132158648667793122314902465794942399303782457347308120094047863238127874892080844189140303644281120192942849585627941033052970332875969503978268193734299765207776684899260119431935484734340685682552324678913617232469193989216e-1") }}, - {{ static_cast("2.24692705476482810621891017532902878883760422468185424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.52982695718321792810456827282905578613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.90763013958916250310703922628537395346144248614383500040096138375431039104002049367585390738671354254176978486242291556216285278163895739264649656370403930009408842065500683071987767757954595210907449882232438368368764844630512751091553559176805208777768953085505825846870225770460080538105432353809e-17") }}, - {{ static_cast("1.03776311938838771311566233634948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.67758461032731062689826728728803573176264762878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03459301282359622046275858130909175858605738103500377882461906122638713902728757596922241637837677972497613038491667511030599129584893938038824302224512570610802632172627579650514542361582967805126424931338365938119495726516045340017819117717607391845493489250022446019685368890472485823905828290701") }}, - {{ static_cast("5.44463531752032992017120704986155033111572265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.08467925444702359527582302689552307128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09056011709343327076534816446309237286970058275834540830372719698670511928227959632093780315386474610345825780828956917908117330975173563693122316666283875774232598613235043753932040992980072681882395580571647274880789017536786697004043527146342091119566202577901703268215449281872604307112909919335e-264") }}, - {{ static_cast("4.32141091390930114357615821063518524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.79962553627032728620349644188536331057548522949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07012654071632775332556853428357456635166481137753650401618414453228087751942869456669180112375507267782856652222749904765639096915852769878278766680206962666525967341796532563009425557062229126958039051450556007688280632610398536337196273409572525834486954342631282999563123455233960154445776600968") }}, - {{ static_cast("8.85195395209329438657164246251340955495834350585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.32014972604017088997352402657270431518554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.71305713463862717236321613646893663926389070764619904563621824742856237889605485601780242185666715109642520925666586793175066523791156636682971412268154170045092095602942426637119803498838588967096817482914325839210531169438704998222940708453881877588305201012231120626503012557840854056737490425114e-25") }}, - {{ static_cast("5.11800358239917845513955452219079234055243432521820068359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.53194625802088957300384208792820572853088378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.78675898815841251401603750577856756795950441245444722873452268896478608982683458941926503132911522781757532432483294128491039729829837206496101278313685758061174666050134299787052246310316361371623036791254936884792176693736621135978412809784428098496835040268753660201880757384305210529998116341854e-1") }}, - {{ static_cast("2.32741466149031985682915646407309395726770162582397460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.38640739832896395418437851532189597492106258869171142578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99549497162550438458304414161333920701781715268855145062033883882900750111819551249273252859663946257284929221986573479403421187776431235203160677411657816941834327558315579342010850796902138914924928940560282841455433144115320935123004884062392612303227832917659972351800421646517607120651251528968e-1") }}, - {{ static_cast("2.88820917341887019574642181396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.72679079374876875974109680100809782743453979492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04797427152199505899776613380207153019163891696040089708565511495563600355422445163531206665239877024907641710076156338867860992891601417074486301976244681251883409289427117509266966735400170413169626794460003914944960446253186507533452481416547111722260834345331494363350198444447590272333886931493") }}, - {{ static_cast("9.11769074488846854364965111017227172851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.34287283617854882322717458009719848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.61412399451200792430940441597911814328017657658519351363425803166936981320098511499093754150499459010245435176020174953699548406222107608392288974835149178057255386825625780361600243592099112823611022187187648569904297395013151014275208089987059198137284635106672418842688183845527005332642735224166e1877") }}, - {{ static_cast("2.99902079785064756833889987319707870483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.68497592645624978853480246954177346196956932544708251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001063692844088210456002419855074011148005470079145471634788112628295771788190807123424233524759763995207569368229563514564551401717941193555837507092120724642714186373549513618453183103215293207086254916107790393722326161402579919794484826396299503609272588338890824693538523484869461094064640920") }}, - {{ static_cast("7.72854459904651157557964324951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.48978348521208037863461370875484135467559099197387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00610574384563796400321310101756992783528974702739913146260646865660943239706104030906315422031586966995536370399679280585793557349882649609015460449277306668457058524687099432479479161198093426061867258598346229732606275929747805949435342506588647203249401335413541148238532118555631296171613732580") }}, - {{ static_cast("9.29770372877305817382875829935073852539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.35261872461758123759034688760038989130407571792602539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00037864179461996490975401602514900577512361928909810135170262283211442500106334885446423595314421485481346967556782507370070595069946883492382064486384013379235733594798086474310298773717536986583185147038897974675666723220012717870637206407697176312759927758943687773764377471241445265488722941855") }}, - {{ static_cast("1.08593927041971596736402716487646102905273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.54205328509148672372353061632566095795482397079467773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00119232709184950657347355900529943667776581936561333029642844322931651851922987396688070423513516427393233449332830940932893802869470044377136541346608056612546712420915411514501773616973022311857494372432610405714927103499401270099666054931681878021711299630772502630342850129330691538468637467235") }}, - {{ static_cast("6.08955210127030499279499053955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.93997641600216752522101160138845443725585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.18201219777662049133348544929685038145294798461233898669466368271726917449741209374562376908881805268589020897308399041338055306698995074087125055703556791502100679603522120055594862139867723186128435543540272128120797808148788656196331354569711892744404054200303870971480027638854018077003767037387e22") }}, - {{ static_cast("4.17002058199641822966441395692527294158935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.27638775324770278722132099691322082435362972319126129150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000325050709508111108865304342178215954684414490544574201155545551225580135488259163273316494247157849444894518301320733204512003009459708444645141220074915996395890189435364804366091830247042355490183040883445209891891864651638351487974364904897430627412415757188029347485931227191708441175016047") }}, - {{ static_cast("7.67550081598081896869234519442670716671273112297058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.09358860541564251178670019726268947124481201171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.33361058888703312937877266409714100834748582910004102998779521040115944440359724219966898465717158230452195981198500825979353396690326287544928081118745655488492150353523103453131904616559184005975246310430624687681784477200062656846973772093687820868635241069192671298954998139357716654945366635020e-2") }}, - {{ static_cast("9.11928851435624994337558746337890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.77150273145831363419411275117454351857304573059082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.01072215443565297495212875757828431150173416786594077990011283253611684077171961857977658555772993227256701225998130851047810587496804030395055038866276482446366864045774522304245866613460132889356389785400787106849829332460233953000396006079677394660376277801825929937944079178448460996666434091599") }}, - {{ static_cast("5.41420122645918127091135829687118530273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.89522592882503256809384462044931751734111458063125610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00007565289778675652984140979321399062757791371437603651125252179594586538728496280877795475718254343845999376499222253067347916841829323365254311918387151598991472092918535912843066893311920458448486904240767256448921472261918689220109607027673999114234655407258002618927723100761498362332050377153") }}, - {{ static_cast("8.00879921885989665142346893844660371541976928710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.65125145484174709054059349000453948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.51542106881981491731489464208722559455080283729538316329978070693260585378415308395373558536702307332302792317627310748549719761801156867236663991267318247059438589418271824484275577584765219427298744283723772247523591169183694405713456066811755471408195734266771535080425449850856084868376311119689e-106") }}, - {{ static_cast("1.09156997362350409730424871668219566345214843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.10878062686337663933500152779743075370788574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01957066747628902940966302510092960488528925253540221172663471275503400990771789589916604068584334436432589666410671717466013196522730609847023637947764642131621149159485396625786863911618319465245064605684158683676154002669412578226202367577007287146331656090836085181386754790207143710478024828107") }}, - {{ static_cast("5.27981737437816178726279758848249912261962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.41970852096179633861083857482299208641052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.43686253241293502543031164235680564280493113934425702290586259672655229919415634458697404687915141160074152506872313697917935113169212018685900336128740210227144508079482606408290248099236632255964024354639101204012497824568760884660053718968331056137812934970479251589590682389747704367113989950745") }}, - {{ static_cast("2.97632424685030514410755131393671035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.12458361916200374253094196319580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.69742603562041824153926447786929280716116286355510132564473072728789802885515779796188477871744149730979853211785348379587523589298115735526488355106077778856284664084128422453984824424076757383964141778964343798745285559893404942252682634909106936299245602255752362338032501973165524906979409622054e1344") }}, - {{ static_cast("8.12277007629636675119400024414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("4.92673741168140821855558897368609905242919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.30484996489149406381687564563779425178418692009670007244171321324888859123491778857160269626310259110411696125879945417306210294026918965107428093516365217530286177050990880067424193779915234192484015646474192080157981645949288654940510168136275269591421630149209078542082633232345605476593203338075e29") }}, - {{ static_cast("6.75063843580995381898901541717350482940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.02748489106749621435632491284195566549897193908691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00196404947416174365030420006016203648060565955934806957206111637856432455172895201651727892958586584412299635092294986305134023877029915464080887124975616815060819276759381700802994334432976763795102196206567937500407359464356440088544622676160266170981561234435498384331071158546292310523236254753") }}, - {{ static_cast("3.50174444164054002612829208374023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.80282755451220007281154522615906898863613605499267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00819798888901128629632317940565742032581044787310510298394051237610722547925779466083057852335930819436022531750188258730486171674268778076637531078630844955462136795806889121317307097195981029957098770479755079052235805500969330960373439119072852284817639069793570751583988153638659438922106591664") }}, - {{ static_cast("1.26564950853483537684951443225145339965820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.55352677703511933278261725188684749809908680617809295654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000394312365539989563625486331626137964273811834798695005780013495760538177217100805072673596190622159320905648378255454000218262505715454699578920413495174693604468418384665870032433868756106543653906692751058614669494849726609491390952522788637204327400613561970408136313418894648226391505731573") }}, - {{ static_cast("2.15745882397261681817646206127392360940575599670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.37905683348865193416088459343882277607917785644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.64117851649613850769514625497977880278916078343037571542452910699608639199334716242087257033679813405503457913766626678856765747940796988239184619492044398845847330875248279377691256718144764352787323595310916665202454075432835782224634142882556904024349917556799442289975480861859420905292552431968e-1") }}, - {{ static_cast("1.04145372167880889691105039673857390880584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.37802182325172850596572970971465110778808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.88526852493738132239113873166539203263138672058127955706951262195153797473038707601101237196070886256644090185553908945280688151557324839521372121066434881841798255953853902832020964805296391060444306684398308798244411237112095640393380398474592654522034844007881900667824504043884214270458892007901e-9") }}, - {{ static_cast("3.07012551115110277066833077697083353996276855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.68879194147396471947786267264746129512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.27959056811329343392664000245431816256252125501370190635108304735068414726869009253945094404747463601079257760616120868020903017002340732110943618640264478113302579667971697324950504699622151612181100300886867598913337113652973737056690812163582367071363756081204514554722838161602803979904270771466e-1") }}, - {{ static_cast("3.87855552747419096704106777906417846679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.68123953003118842275398492347449064254760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.14414942990692656452341784125767590353064260907248467847740571016135049928321189261126610028098851785915087403250818786340815261171401002033061136458109120291157079359913768807250954139969052510045722307049663169894534742927788300920701107994896596920105547258658675585904959114220585301112702429345") }}, - {{ static_cast("7.26004581866997872330315999533922877162694931030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.06413410745037140259228181093931198120117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.21086963011262781557962916039162488992600789192717542131434452153601149170623279185807445011140592247466432290015786700658875253434281122713288249913633617033214856219833669907164464033302015146556043425711342744639683355773156696931162767677537366527811567871143970446954952970890842842464186617910e-1") }}, - {{ static_cast("4.11288422352877880427968193544074892997741699218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.51736412939929010690320865251123905181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.24565288563751822331299972603179488550349468370067144446751898852644002616709216207408151506565589257442807820798232055968358812640290558093447292295273379034573533601586226697268290915360691120466719143962043078879323957769794563236709847407432551615445562560818926972156677354022231138620495943375e-4") }}, - {{ static_cast("3.83413786726422607898712158203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.00384576840691153165607829578220844268798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.70586881100241909365086281828106615321437784717557599878404325717613404517722842063862151116432421295729131945352592123500947115034261116251456345076603582494211858526398683989440066160175940760838173788310914276938532934671434380694237696835717084352874743706871899256563045584501545107582617433574e27") }}, - {{ static_cast("1.45287638810286156079709662947152537526562809944152832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.12685751933480298196330049442792642366839572787284851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99976308406201382296511195677454028213966050559386949061001176100458674306535766658075727649858861936143578824990999294178518894376297296437371242014351633015801209221765213206140971726863151455918302666401442029878834264175629251102478211077868646609228275473662440136138981614575523961652841689231e-1") }}, - {{ static_cast("1.06060778784217379921983592794276773929595947265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.66538555043448722320365007476539176423102617263793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99991775850777769594805464682102392095766388724998006545282885743063065509840288039071353911521871815954556155694843177720505424196812072094678443706799908575637539974472545844157811962504294140635183658965312242832638263593804028788156476482121148602286677141129409544764834011834242854688050032534e-1") }}, - {{ static_cast("5.88086377090030459208191970787993341218680143356323242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.28950414823927278495929726886970456689596176147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97772228399557115917897595553123200059617745525398631036747902716221825268917059130877148214691312502174434355597848183024102187672671321353149180399633699090375168044589993636218162674313714376215322688591337150653523844732601246528148296899452660176207080310884559549441104143585753370139662688312e-1") }}, - {{ static_cast("1.82088437442942030486392468446865677833557128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.18170819309718790101129681779923430440248921513557434082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000130754723378331003328108523077660890480086159377400421770916129060299296337133805493313328717117334983973342138421022906982702012383037259191961910456959250943670084798790257349266900179703918444391347033677458675178576414635996649806132816647233201959427396166295868642002149628537093670669003") }}, - {{ static_cast("1.81790864213692415773948596324771642684936523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.11112317505943991591266239993274211883544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.16716616089260899158634927691311476940264689424270830038830803482761816779192664467113169986590716888439242048069862364270415910055880132349242712046577768880635878273030333655678293456983297487516817843334720432032181949191565525929129951842591644277698817197191950932369312197425519306770280944742e1") }}, - {{ static_cast("3.11682213641562033444643020629882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.94098588905476396315741283160605235025286674499511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03790338780611240821364394096187689009151442337723127625883997000112224823851501188946812750320424873330954741819494803462494193607811995436113951374495986635400485180461374008937550605117989616259238001766980179462154007176099462553721961527948038831707776585902099492828100272597482214965326918683") }}, - {{ static_cast("1.39087864126595343872150323250025394372642040252685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.30102723808126441440435883123427629470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.14022877396721831842223346046335424470246823884137406233750859143164782910052273120452909159294424816461360814736670369100321052363875210113861850087708357854957657313512898387152990311841659387594066789695419982631901574195401313785030478101180804642923588217360853722001240454059693137169086797197e-1") }}, - {{ static_cast("2.70245297975474845853308125676051076879957690834999084472656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.27192418381639527069637551903724670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.66297652134236153231549630311782646457435806521553869102045806271290140313907532572617601088189845177879703715370369231877915346831429034626669722739550299919960838955152823532091259662956246982857242736145549200749997723311019597549168518852317671248226020048798842889139150504890040937192852486477e-1266") }}, - {{ static_cast("1.24917144681230411151773296296596527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15140916555233019380466430447995662689208984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.38260599513773427745927397841453042338248242456988517458147773019568704658853879515960004076402277283883489795069346406439823839016514254977654510204974986928186171239215823810556312920621087546486393810430469767985081698483192169492133075210737954383435371131440185644678524564816434215238704654516e24") }}, - {{ static_cast("3.11836231019214392290450632572174072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.07745884054014173791813391289906576275825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.18191130436089764539875276066824383600066278177797976268794231640866698789531115667856789828761726794355968881132857750694814866048339710833375629295256557712732385065863487440162509225900966765667937759713986800012768351783498265785505802770202831716066805035224331887004845557896771449008224340669") }}, - {{ static_cast("1.49079206164313831095569184981286525726318359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.42373605503094040614087134599685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.27012834121533023666785182346229437241289754499051958039863912420351581912036946871768101343922573098899177777951053704877386501476998681242293961635818871027535060307630949907397555951449420495765047830618356183657814571149049220337636474144629773918060565875711712572574729922979876342390263324772e1105") }}, - {{ static_cast("6.66620618596326164947279968586713039258029311895370483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.21273515382789454086776004260173067450523376464843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("8.77204862888219369744788573660770287170392769001738688402155865708513288003188496251740638940642992963657767448328425353472870578497253649660611575851476001092271122636729433601460150801906619434951209083981408041494135365768470816162930615684520542260356335965614720676272646217323394466315267451500e-1") }}, - {{ static_cast("1.38078986432311534571226729894988238811492919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.93562727297856326913461089134216308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.09060418138444387424424059062331178711979043905828333720448765913252697584689444873629369083510366476460104106313375773568706388071930121668811178870306890980290075045537520987441428335324653171796426529164093528427568372203611999068229147036397950044150945977202609787933363721956655499688121770967e-511") }}, - {{ static_cast("2.16771050432941410690546035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.11416271213217389808580737309284813818521797657012939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00085620226622470905732844417905757963463091991631468675045664887604696934739150514381777470211904644648980514762573227291787791600677422794047913591269830095072415283470532919592193733010388187339828883232881043401853930198928232094973120867346831075681954343729371567448461485192448773328157967492") }}, - {{ static_cast("8.66129276411148731409928025470890133874490857124328613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.63230476162026535980054120500426506623625755310058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.75677926316087201992937434104172212635183402081845367050961907386982900528845357336855433020027701890844425355924313158894887243517734179729721860852203216211626732274220956786288208809210677612308603888585509873354794360927290410971415768734554863757722931375046183502833124862440220040682623894401e-1") }}, - {{ static_cast("3.35057580340428966085564166377253059181384742259979248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.16747650803829827736990409903228282928466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.69762726818915994102636669640248641695258916516178220951615332541358403169898089796085534108216181605452622185779736827460245748311614902401628390881069582094010945399117381574868399439034359201699565625835678615787458358138834274021214751543009200113868243044350923559610553355961511493945076046223e-15") }}, - {{ static_cast("6.53381930771882064867828177057162974961102008819580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.88128239916411388321648701094090938568115234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.44239576906295172295161064728901353975092629051590219076800377900713837403284136783431262977433666893756151770251819781412876948522321366628456614260642901179077056688683539196520237460889892611407142177331136348438247424975172992629120895139251739138531630904163246094893508737465346231066931419052e-25") }}, - {{ static_cast("9.58824111169796669855713844299316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.76775888223340871263644658029079437255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29079715270199960942963556473318847100392035825806894633874834481890517355918139252275167622132083673533042352315135079499274198112245747602316235108479674713674202663546893395644195003527204518806401402778881498713093151993690595544754136969841959488665417573929913679381495568123074940059218587082e237") }}, - {{ static_cast("9.80462544807249748030075764404500660020858049392700195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.92380061818621106439763934758957475423812866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.69367957215417366534795032414092044927898150798664469523819577887485052498975506353682229088031835479896261249192998498541269057857290594440231095317424708287026045610877468508170913712129807960043309223866462243177903185979844369471346406937023243553333556543631914530281862882346915332974736594434e-1") }}, - {{ static_cast("4.22715824828159014714401564560830593109130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.73237473383745509636355563998222351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.85142181625610748727512967615608623642319089823180852116567338775155480625397140714648406228861247464456116191851444571000366236244452154069748412545940070600491678946250810802096421175871317523376451483012224450957973158915531091130907648484702974041033736125577265886371493322366154555363836169078e108") }}, - {{ static_cast("6.96647127037580693453833191597368568181991577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.57526947921747250802582129836082458496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21776552625627356590336877317582904052748969026951170943346144361121751863809186842688158978930311760773848599440472082708351294025960471667864592532594991999006914698692274398613842119283225752843571850040859177332114176284555447226936581391382855150937157990431287391269415649433263516860035782138e-414") }}, - {{ static_cast("8.87031657211726951572927646338939666748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.34070958469201997331765596754848957061767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.30679204065692425620221532321916410120280977665891018935099692677903142836365793713310074103183167526509810778546217793360039724544105606790669360053805611269103519872268834740224972933178750433774433912507891375768945267742879488012985036171398185645729556921004734943776799979369402749984084043452e26") }}, - {{ static_cast("1.38894800193875870772397540520159964216873049736022949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("8.28834370250225660470277944114059209823608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.35222056499059860815119534190744388049132560559707635179974362835024292102863415735162094842301916959003527949486946878329851243593307281685479130665725517616797588026104563060365221513904192277451172225341242860418605162130720263571624685346061029050164764398879401328940031001593736913742594656342e-4") }}, - {{ static_cast("1.09816947397275884975090254336294037784682586789131164550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.58183945899629990446480509724835883389459922909736633300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99936261439304212269593793274631621066678586897953594510473482514688267255174393243589871913940083113695300948318689338051222055912287552167309726448706279958229666015743107592418824002439360290161725288760084420735569321637244499982204153705684126108823317986930400592132185032791247608619277879575e-1") }}, - {{ static_cast("2.31096996516865660353801104065496474504470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.05549814372709782617221208056434988975524902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.07259003265165794231974650932471010325197411080114721904301457157547097334313567798534807882346741414784333355642286915364891740931795753032224983168581398136163731017251242792429565442336378918505638415347606482959367519064678452374991852143987534832456623394400259546622175052847902597251732867983e-1") }}, - {{ static_cast("8.49670416441904163828979790196171961724758148193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.06998079666728116224327926886417117202654480934143066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99758288631873273226282145885741739757443924805027385096536700548341955223394388330738555808413815209906793614975662061712919602993250011794563507497959691981853673962928960543216580974445772540799559436678586781978389593065105455927885069982188267742598791601651598840088278986439446428992363728811e-1") }}, - {{ static_cast("1.57311385387133050244301557540893554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.28071775496995989116096048565651699391310103237628936767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003170338187821543987107336746662729109295981087069294808638827112958850528655867141095917778641007871411889107729782401763128246612168904257048743190385169980528080025389670873111442583914650963121405799362630066123464254273948242629742051351814124726982856264616340030151043214382406894418159834") }}, - {{ static_cast("2.39202138047558889866195386275649070739746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.49118181918548543762881308794021606445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.27339014094927962826314328575939814304054781018385168289190485168514741352754753149678911930165646861374735328175462043586928267957865268734389479790773849220996848074070389175534751472812216991107745875007249116250242613067032470443930894251972922681126465003519414999032823440924453088711434009253e757") }}, - {{ static_cast("1.64634850170019781216979026794433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.58052312996124176558421225990969105623662471771240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01546348252503362826107105198333600916123885616351929759095090370675683807853397698537671019348523544289454424258903395372242729481623263158900841743559291226322042608326721672299094222138476822715326186152957264351608036142453170432188932360709929281850323115131827188070509946087921486355921396837") }}, - {{ static_cast("1.29984771123733180422585298252613483782624825835227966308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.48673306853607149757845462545446935109794139862060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99382895797564405052408771210317692764125583490813721738650031785719409851796983570805688722349822979681595897622086712994137349075757656980372150545265412692073900115244181782170626388308672797472118433651575906690160786295103594530704832482562910548180219532761382129979082146445301288761331520852e-1") }}, - {{ static_cast("3.34499410762214122172508723451755940914154052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.70362841707174993644002825021743774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.40485852822901975442109716898610918193900542520961776863305069906497895793489542547982159745108266280524490077140951661552295048439266934614559790866489193897427949324691009938697269495988925070011169411841665487299534902136008055662912091113639828368592572760704050198717640286295766255031666140310e-272") }}, - {{ static_cast("4.58769266685160914676089305430650711059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.94008884841098259987912655333275324665009975433349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00265878013514519296809865295705868217393246867225559245606227172893223522667583594724300322356488286875380629025637162385262938162022625886814529504008804417980773476428819488610083450291142913844379562656183905757559036430981251862699509205398028210683848825112302095809741897956564300820095580866") }}, - {{ static_cast("1.83659034529005538161072763614356517791748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.28717719818835121259326115250587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.53726930767980134628351414040002163694004937538301878071492381306637265403593248974390687238745936146996356402451151949754817939176416474547668969917407094657482938942615901000965138448816198787619804034435155352704149778316444976717855180409986287616695020212770570197624985971189801426264668362739e113") }}, - {{ static_cast("8.69656197110674742973418505087579433165956288576126098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.53470532471532833396210548926319461315870285034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.36245700894899388555856775460955394048641742342223378203581109445790321544636857502869379407622931929904915591813410010543421311751441003345169506628319334514393326009523930245673734273160199057057608984977895920935149203153332718973184503752228376603699406900321208889195409621350940486281346111426e-1") }}, - {{ static_cast("4.77866412699338716230101908877259120345115661621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16847487332184418740155251725809648633003234863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.00939095440309291336847802488312895385004430053772751642212203497067924870860269568166321148643247526572505972984054880543549485653717067216843154655077419087852705718322510631592242331848706588637404925586365121042986696317386544833327481602868949385627978856713298735650783856235081147982296346628e-1") }}, - {{ static_cast("1.54963799196492800547275692224502563476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.11204960957075971172969275357900187373161315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16782897318171377990330689886402903355059628193684114132825684051875757607797689933491076299185969963004000061078683006351157287011440524301691431503915118755080894616168235485089522630543579349054155603272650786560006738889360398191602249883148592535791585897969899944427735543027279681332101510149") }}, - {{ static_cast("2.47000679471161216497421264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.52499082730789443929086957041363348253071308135986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01911645804528060285295007365522901933244353571254108413776362642912835636609229733378877024828901273387523484327765744744502840827542422973162779826478327376782490303695679704814420712110588844007646988152318154340574171527693080085147287526207828218450010980129801914952299876654249129807403026665") }}, - {{ static_cast("3.03723549186705435616595583070420616422779858112335205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("4.51110323265247643576003611087799072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.62158625261315621796784260963880908165199570383258880752909601743905724906716730454255511124675934144867399204404978430279501754463613692043192608111413253272638040513583589571469911855611383025946828382761211165356334768347578605666178294674917101334371471550226399719868797818976469869780054171828e-204") }}, - {{ static_cast("1.79856395286417303225334762828424572944641113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.32059115576763366967701779364219305534788873046636581420898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077517217823836935248077849892691299847903424265238524662417641027601052147271170002075034613200815926835872160958521395863660559755851166354980024967551112970300127247095245969854003499125350435566412954660499861774431261483707515396163088724936940160199016889915664585852452649068941190636190") }}, - {{ static_cast("4.41355937354146021789347287267446517944335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.42641018144159374969603959470987319946289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74548555036519520791276201322845305843766995125882533366758793048355043544777974793130718057932582612619627280143295972890756755586060864163343519807569602024123450673829021330095007485505005460893008699595178496760510808546265795771516348135206769564722897763853591915237047669941031110007831969575e-13") }}, - {{ static_cast("5.69171991829923172190319746732711791992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.98043102542145899036540868110023438930511474609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35629700595091638395832213480888201727086153567756638562745744247364577078732772888391063571800696941049290536498639573875131887930844892410621248852158649248884548273739508794634953342193256645662324249539648039244590505104994015484168576899587920875428234320711411322714373060714140422162212909132e1") }}, - {{ static_cast("5.76954356011381364402468285845770878950133919715881347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.25111872914564514758239965885877609252929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.94463304445870155806025859667737584217029774659090091223865132706141204011793568374081383686497430278169952431756767677964164234313821914580067310902314296078439102264644178954457549643252195734243656729528702645014237867821529512634908260975861471735012585206572278726071364924835281322609605715766e-3") }}, - {{ static_cast("1.05123768089208714283672857492391017331101465970277786254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.80326412933219444312271662056446075439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.01096635654174895730364890004274506998670967372315294988820585742497849923309225303695080415166238118944235696360277258545630995713146996451284285658251097270549397299546887024456736142173128664145649440632706184379221313274424739352233838868194748496986549948050292922466160812395403732938083994855e-1079") }}, - {{ static_cast("1.28163238607435392424349629436619579792022705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16524102155253899582021404057741165161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.07879719574926016494490747415323778012199705593394831943581938296777477488312425323506097154699459156568032482136467971947677672762383992541647262353219851774496336332221673599562229050781431336707003943210680119687255794953033119424826346843688505841414943672869216307940977860809662475253945553141e-104") }}, - {{ static_cast("7.87202251453049029805697500705718994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.39760572205021471603458849131129682064056396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53207555977032989055018208938771579303277505887799197079806149426805566503858217166434829573392590992745607709024458374528640995879305116834709101892580164791296787623750765678369128997876794757719509455355831607218534572758406336319858307548393197701741434159035106328532033366541994641153056109739") }}, - {{ static_cast("1.85413190872573295564507134258747100830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.69406846692120716113549860892817378044128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.95656735368615067592522859512955039643574891198504549379998394284320814651945584264960315505975008311532240586619468218955713277820799989277348072854744621874725681637220043518336051308494199906438625737004480910828551371454866506648373987268921256736551339157313351536645840751017335445520822528269e1") }}, - {{ static_cast("3.99959450842199415454558675264706835150718688964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.86709578350118121647938096430152654647827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.05340685717906270754605609530501932449443307474519553599524954021671059012176997891604734383935653924096296837478833892286774229478680952581431502458132810484806788952807655375243507984165689501659897282979828575230799553474262829100370309746639962529485962944150334131789310986002849666502428526895e-1") }}, - {{ static_cast("1.84674139572777286713578526189394324319437146186828613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.25571659299317051061706251857685856521129608154296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.23722070622293990830799081708429380180065314114356604329745073190591014971022286949735867992102290979570786194665670044964971913376468986554402193499702945966888241927569660743521069322430532256408138686743620372490125687831732257527068587575688326301178711197108267406944507908002982504230542257301e-1") }}, - {{ static_cast("3.58473911190903163515031337738037109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.60245302222975851691444404423236846923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.78031144785764416938612223102409855040299356306284612439958299013225825622202999580381834230141933121841779061836895061770649393695477680433223418771879979265527918578121214616513115300315506936777567650603403724811526574832706041635294702581230395655527148395841553708668562384577527922279281988840e346") }}, - {{ static_cast("3.71269374692093090395417220861418172717094421386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.32704198530596029974130967143963744092616252601146697998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998245586875139489901271639028340713779059130027015276766418411283294006537627833255021572845938748168207820412482122290518617722205438714506223415635135045747382101925106285222804464701875561904552995223695133038388901912278020591663993121292169965721308487953050363811103359158918910384771899011e-1") }}, - {{ static_cast("1.70108553436059684038639261416392400860786437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16607504683781455865482223899221025931183248758316040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978954129792622644650032269094574319631975777438486754903659150962464082118122945419410503323172656817200054190506282421527117453082829189458035945776425795407971906137471812197621061779135748565507246203908206485915975691199432826508885650310574999400116127525787480206412253878273855862615753183e-1") }}, - {{ static_cast("2.09225836667166789993643760681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.85669374483343502246768252916808705776929855346679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00843563284699754528712961596450017035453860350588570410059871012011253379813933654529429045301434484839481489237559065322374683637748571974104032389976926103159187339564349254244671809494052575105796625285810628759847430784136996879048594191371809811836063684074535025913318716848524590469577859424") }}, - {{ static_cast("1.21714727542868383913798879802925512194633483886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.04024274981674075615800667549137870082631707191467285156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99851738180285989619013743122680620229360476738383672375457223596142024538032582334141363701685216531955627726353087504478019029760906182307020379318817894422274668875967247480704625723584657033632048027924110460864147683431850155444025526123837240535234902995892523890236573378473187948012001689440e-1") }}, - {{ static_cast("5.07736820771065972511537633948819348006509244441986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.97089812664133678943301219987915828824043273925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61496103531524292145269969904333508188364139708137329208759077302004651060803860997069231846146525416244529356233531058823752839075298907756560474430217361656059248345442657322781131236619023757967452575027788503647455091630937116588678330308533380860226144011143233073363114955647590755520397783133e-1") }}, - {{ static_cast("1.05107095024027863416904438054189085960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.03411347779367872590228216722607612609863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.75435618440696236423847758785039217191601787351549036022831398969378880644344551767328463505949691251600586393797511528994909897140379260738080763330267660481025359227717949542759648019166102411005065795694130304853332521480946507674204615568889856249883941530835820527992056685661760535222848429821") }}, - {{ static_cast("6.04991801259759207250177315273731437628157436847686767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.18837713372669895761646330356597900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.65759593884760895858132938458504295554865358684199156580525629386190771627069601339728387260476959873950047671147626130674714736942807728977752816985626622779230687686049014608462755984076183185977629942323400832151270339085974963175219245006492664764899739861651980200882059489983917901390447959952e-3455") }}, - {{ static_cast("6.51744748140962656179908663034439086914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.07710216336688000492681493991398156140348874032497406005859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000328979143507415685697811442096253363291297955720636385496027164054688294193762566482130745852122932064218776073663482596744861678935376393042841878114830402198126626873661961854660156517253426476105318520395463096676472118157780746408448524800033381676594338617857965937768629354079942055143731") }}, - {{ static_cast("4.63884491638627549647821979306172579526901245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.58892435788971937427049851976335048675537109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.33715260820791317269987064747412391800309849955602033217225409481400578667858265909262657939940738177907804353137088637745857746470695800199690029742037073210058760217313184489359114691758908649867287570270285365266943814797806817843515342646282514312200010453327035336204860831498248439822619093280e-38") }}, - {{ static_cast("1.49058285795790606154814783579354298126418143510818481445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.70317518258870839037433242424413037952035665512084960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98108922622050827087546461298822670842973092479525322691759952475540660272868395330655428828449033553950251437644999243615808527145214868010990354809843842150796169597464947831412602935689456012651060606674408759590837715937317107067113406559618224088301687347090716482594166112826991011166298362788e-1") }}, - {{ static_cast("7.50315265219419380571252986555919051170349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.06222517749687384025492065120488405227661132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.40175419689520964937445314051307565108961445693694723005043311860973648366068520257018285775532813235354539177271941463790001972938524250513944002301467776271129144936307452041012641877576914077850978415809262774052418002232753061586235460151777159128199018488311311211799819289180487350061980646390e-1") }}, - {{ static_cast("4.26847036788872134273342684451790773891843855381011962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.25843044022171965845742491740821833445806987583637237548828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99967215285852515192073395540137950482554540502668958238310575910483321879481952698928091493628164541705483350832773369892703138436296385686888980010809861693571807457349075609182274750398269557656870778473684116326560067055000556274923680535552295628380182973673412404308833575096574012516864815095e-1") }}, - {{ static_cast("2.62667296496937296979012899100780487060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.98943432793326180699211569447015790501609444618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000067498249093796554190906335150484537007905333805853084798522029363004660855846859261868482180160316566139837296027351379815963628562093199672797915615284584800543052123602981811247334355647141931097257473080865200634384690696676990980451941954802180365065774462909125574737179287520936788897430") }}, - {{ static_cast("6.70966669446914210084287333302199840545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.16310384563290541287683410587305843364447355270385742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001744257181843369125556914164986065767377720999640888705793438430385027106235014113094055738186706162642114104415940235112867181288621050157885040444050793876376258047873939583048138039901310315757778797936384132441774545886210926930901727852204521859059543099653693673834002390277355781829097039") }}, - {{ static_cast("7.41203371899830177426338195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.08045243497875006967630373555522282913443632423877716064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001460353450390109753320201848917579634289514937879484407258848004890744776169944597998175250117503923620359242409184317540187082543653993640048666001395047165769964336795615132413269257911431079896523695358479509374941248440346987424514128254145411471716437568325046246372300034330801593929796699") }}, - {{ static_cast("1.69159255637993624077353160828351974487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.18026386927718329733494329047971405088901519775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763302348245649415440222014057755125288511751974439494118531238495212343084716356590900135150471489029857630623786718849006602487868725615880115082270216521029606377055101314827010471252021762724425333126829904634616800319752383603387644619737656819562990847546393907303039685961266007323499371276") }}, - {{ static_cast("4.71460529249768889314964326331391930580139160156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.65188827816496541345259174704551696777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.57039862156640741370099717884062397571736028728524050580037613318788846117662035095375103738860527021001943141141148597120492387251375648252287053831107964249223144395667696166786054472499439767489130687268705183565392558321079668035341534647161063188715235627145576677691259556611945549071489064974e-120") }}, - {{ static_cast("6.64982363517832908428317750804126262664794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.04124859899293669557307495665554597508162260055541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99916721594674747376600569188805403610749202879145587384797447934876298553391460440217614450811626491475153827239769211949770987067539929764774811195211928780393852025574440532735397207179531706592529705918782911567387089221968997852275611755107175151890770337885129722749288992344581262036121822096e-1") }}, - {{ static_cast("1.16893441744004085194319486618041992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.15678606859390242789231706410646438598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.51388885705521092082676462955313303770964042418254877907252507964234420916080103781270109330079123766686738994000772870583969928581773756873588657991143050640555136731739608625215812170605441235916882843841833089297543893622016574335981753027769495373907938555110085958780955474425308783814139862813e33") }}, - {{ static_cast("9.76400625826371292015348757331594242714345455169677734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.86442986632989526896153620327822864055633544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.74623224798347601232565592691979711045580692330641567994756260200814740060669606546590062265074708542429821154943403107394779336685935160305728814542562226163058396994725320974264154815235226634053969860486205541938719842224052325659161610602552591765080618174794519808159266445853952938084827117419e-1") }}, - {{ static_cast("1.87868482843651634084380930289626121520996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.16929872732812327740248292684555053710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.12028119371494031430335044645564708556145176065304647173808454044697019950167941050283479818252925468559303066000892193796628006878431527857608384081735638513924751307741786259324802053021768713537078672257166368405154064404708746524318561350343547073960189134086007775921344634528456932868446419630e91") }}, - {{ static_cast("6.10956934891920536756515502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.61245994668030334651120938360691070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.65700792854128829481158381754556960783201446467603874396477753649899987199726050381764154587841579338454205142269277734568001743334867145801385330344031718733980559420806485323497734470145803167224651985614888601581616073332671350983075972830731246525865989689804085186895425350117377876021236432000e41") }}, - {{ static_cast("5.12940713132187653400251292623579502105712890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.28564435019894255014284711879923861488350667059421539306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000373701282973747520930655159796229096921541589463952802693848825441766023480118817224366828254246104620872707491850843628745742807472462411859435943238658855518813616022964453910564185237673973654468864102738810104394810487407665604967406614750596030541491730666890517480494969397423025082726828") }}, - {{ static_cast("5.96919527975153832953774529768153911390982102602720260620117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.57180582106150705794678917870399459388863760977983474731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977473944483761872828387581066184030968843746303338716635967128051482967926885604187120298468309076374477372898167140591203610593108721399453839682426096478159671434202750765691646383078954275710747248498138805135910075991839124150638583040898450493059066421550145802666193053679045930003027645237e-1") }}, - {{ static_cast("3.68606214248608399230988652561791241168975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.49260037966346908013329231046384393266635015606880187988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99985103565493113484475922183999881089207789606742350698567516671823393925981239943259423556444582299741676725651226703123182719333272364174176377120721866858898501279006570635020422790273788959353152995392898746327367860857986758594342210926743928260938298323338805513021194833182527623776519608700e-1") }}, - {{ static_cast("2.75108139709647048221086151897907257080078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.50370430827189238698338158428668975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.22207684654158090072166193557643641149481975652647701708530399277363664695064351610680468504557225898194931419933867113331640493326162327026706800979963281990313857552256767561246682453632232432467037080629483164984556210425989798928121976072588554960434306958147259366170108308967342505596481568498e19") }}, - {{ static_cast("1.81162455673292015490005724132061004638671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.55260000441009051353087599967039977855165489017963409423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000739442221122260724005033635770725844741914207974197964181739354726511926916714698090584379202017604302885037125163720681613028683344989131816590462063741786918631523895090976438946284620031268598318287495015673164204411596879025777677083658398098322196424671094954029116891354161564494388093193") }}, - {{ static_cast("8.96493500879970817152297968277707695960998535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.56875157541190674237441271543502807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.18186472758714615747935532618938695169587522725634994323764763361322541875338494379271005378981383706775962465651100098009942121578720737172235160080858098630748438403135919432305006360154000115695658966205609995229485314131439314904570801339124033312271333615588491334684665719513845178970476180503e-41") }}, - {{ static_cast("1.26612879808979481716102455379768798593431711196899414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.90879340262861951771355961682274937629699707031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.56902896481771879143877379682638527882901861190229819789042792546979238367054331337767498254741605069110970147845996240165269976456347023401814558426675219095881612725781553874494895757386564444732770552998856125193687086542254594118439921159929235553297916239134941949770234940282427408194492643353e-1") }}, - {{ static_cast("1.05179746109396965946490565269044736851355992257595062255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("6.59374100718207543231352829593561182264238595962524414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99092782662380324729163640655313848714756101648128347661760755472309885143398472302956067855710190800993042892779094559399021527010697359107101541167758299014549008387517426503427862359734988159027154498990787998696863714462719474369182220777439814743092111459144669908819231194636468040015004769487e-1") }}, - {{ static_cast("2.26677931802150922635519236791878938674926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.01284500605095928449372877366840839385986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.04799524981909743425238268974274974124170089470250115095198088233403741098790024678291238778471336000887693628348108623078030852501843027636021269414992355439834109447548416843301419510567977485938290387496561912410461657784176868621026947292962832450377901755820567805673466030070278228671530695195e1") }}, - {{ static_cast("1.47645383833588006439185846829786896705627441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.34770445962486519420053809881210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.81864953170833366001029957686457080479745389229343183507996187270256012032168347753440691289295163599099444007484206082939466510290612710007371495952373847856242772883552123786185299979765598455416935895627334117098932505280856391911876837712397381549095944110724452719067485663398985307194410072346e141") }}, - {{ static_cast("6.83690460562575097469562024343758821487426757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.83530767198103986204138493576465407386422157287597656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98542687144721504190991783229244229904437024428948393594123834827455412276977464755147963505927618995184986289919531376928027005710396398910486083058794955925781790662773364003988254537015097017811287414007455159323257827799204950099119284414629154584347927772687791013118617040392415483793228615528e-1") }}, - {{ static_cast("1.00205353905587213336758622972411103546619415283203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.21472319667746432969579473137855529785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("9.08953646324319429602818744612054042909432561532126770140572825180403651664408870454180981154606920328617475099247353850589948028434533205453640961164641456021776839621300753911422835934782850338468313312210488559936609343534193099022841479411388023651172446221865345603921529386692401675022261632417e-1265") }}, - {{ static_cast("5.15232802831238245744316373020410537719726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.60510257181055615571807493324740789830684661865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01431289853951002532506377614168990948051280337886607436878494527645645147723859636940385995419356184615086203041458176935646525562258868511947236909026624331932959131571326296466151873473074426347666272446566573176007728397599624815497760954111152173140369195400219514948443921717606923360226206339") }}, - {{ static_cast("1.50327863210486480966210365295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.25928705204024481645319610834121704101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21705224525603686559675227491858310594380597690754424568785114801297385692314088399732454361300955075549296567427255869777962816305497530312793581969492733775461667703068826501146498955373099052386164214730524062952781381010426318671419140310052915928431939434595652675036589780009141539593357125642e1687") }}, - {{ static_cast("2.52103950481096059522273522546242929820436984300613403320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.04572569600166157249149234687024545564781874418258666992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99677562816744661723525153627124442052964231793875730324917063167910023632186323828596851920875156111103787347156093646859907405739307639598484356543171131155872282222202848608366838457688692164646235280817749009555765844448651859985081286265963272205351701235959915053427147246220456364075290757788e-1") }}, - {{ static_cast("6.69572868673203203115917858667671680450439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.16763271218019875231225457312689286482054740190505981445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001172763619213033390863469162514923787137097731257478379858496528955583730797624990721270466292542630978166836841730894536953419182253636303821927335171827673847960943549331513055995583023583227615832251837950408037083523512010882821232754743304332778547391577736073428707081283889265580574098969") }}, - {{ static_cast("3.90611154895943855080986395478248596191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.09392819734250876240189143118186620995402336120605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01257436238989364436740053785780748984877719711041249303794530677616720891994615335093220833940115128861191606642103642393403535957041953141054150817528925853538686389534782202437853737346681413564667163289005149907512827692491679645604032151505662903966426036149340526908388743360309704155643902314") }}, - {{ static_cast("1.85738968908478855155408382415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.34900449082321379629112456655093410518020391464233398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007223974053029723271350039259412141636069806425386754509098025549121050837680692710943206684686658573776447604596802766176331791002163659401284496154417281082333498905606330772551902793976098371405853098920109852460783688567109865594724989116482969799710457089092798143235841330467446343910216945") }}, - {{ static_cast("1.76070615176634455565363168716430664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.74889370868937987779645482078194618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.45316765019878240189602403680427223818770335223288608146347951094991305163036799974448576646914163732716464031107846083674367407256925355345653200850687798959392811940414372053909694215614805160729642095127896071955737496902022738055554549005006428357198315347861922794020063710653902271293794797134e20") }}, - {{ static_cast("8.59257176966675461152189718916361016454175114631652832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.23640678060561270967809832654893398284912109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.75626791055079856222412335079669380796397627500002019826921615591957724636638189051537678939438100683331885757581588353701345439775420172078880839292692181866988352748585676000159933320197094086021294353349620582341779917757035411891306338495037492064154895428084541796948375617939605049956389592963e-4") }}, - {{ static_cast("1.18373366744053128780857914170709932477620895951986312866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.67326277601629289126013849786644982486905064433813095092773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99977165516365318634154013098062676051482936340600676508115018286371174310194281664961388300484701624347701999911368618575116158865905431420415090042447533719781066713262060337264603666364847020671540664275635449461141562032657119830142469510330575908700332922190579477083626027776803818572001718803e-1") }}, - {{ static_cast("2.79297046837543444519624813437985721975564956665039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.97135089362066378421145529387104033958166837692260742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98254178388410952430693242810343707992963411946313883778028696826023938537768767830025754426281554000607392763511414140886618834915773502093937010404359418681811029932841236322654028803608283276794373781000755359892344545988755782370138251235941283542297935477464591913844965660089628462450619495872e-1") }}, - {{ static_cast("3.38113855762533148663351312279701232910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.09301666014966266347874235265180686837993562221527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00010890478594524709067739908022368917088132812449962876399165997211946438304504899291487317819472340328330375585022333633583894340550549675803507677712058170618442005704437605073252304959372965881786681685588681179433355904579852317919540925268445449423495866437480095339165546614783853750408452453") }}, - {{ static_cast("2.06425930083115716229258396197110414505004882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.22320068732874709382940636714920401573181152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.56994381329744106645164401249639056164129850194015191524774235721349310749300345652229762055800940290782810800288250321003967654939060262541583665184611869025848444849240326580936044484294913651408991979990620894378054306407392449503735235963890733618686812461995281192108663576402590588669671991241") }}, - {{ static_cast("1.34087695405307183449394869967363774776458740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.48273418616638036349186791085230652242898941040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.97025233069613645577452155667707700431529405119046003459330154763708616924139333978711947517286910376855122315920165412886432318792826535847675162918439845483335638190760733366507881163660357422897573743052858674336878106847554903297760383077263299654131223242076136517464708165444087161451001347315e-1") }}, - {{ static_cast("1.13795829837500036774144973605871200561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.03500201236379312419617904073021463773329742252826690673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000963457189792748049744783509653303667431326364869818483704842948351380610875652979437988682746278703117572921123081696661945181740330111308085604188704279357002138744426600265673193487995475006875655840336689027158444662492494587307695412667171074545903613666004574014189607190377465209019809696") }}, - {{ static_cast("1.43733943515224175686145757779854648106265813112258911132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.32214836393443135875713778659701347351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.69028929542482647910462333162857910188985784876407542387662931701295222184216133407420608557785163630976401541135533394749225188544894532723554319205860877128881077879568220494222775086397987960274421371074192662130785663013334009285908262792624635778476059436229937151198221859566242280319019160525e-12") }}, - {{ static_cast("1.40044272789335991546977311372756958007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.53744104780148727051880541694117709994316101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763558978681810389405573088195138451898513946030420888756116873548356901540068272802595421797514887115185086583712361722645481445016465906573909064890341678510048829617311165144452645678278211232399208153808746476971992206798944801345917584439323122735213774632862994806449009371980892407850308879") }}, - {{ static_cast("3.33770615636067580211943095491733402013778686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.16340691059281198249664157629013061523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.74932879103617263287699269441230578657539752277509100498121992886363492927534654879230172186557771810338441534937330485904491247273189306610489852019997049552119104082607943340924820476508529648819831797793990936006114678588935819382061714015089476930073162215255275726210879447826384500950556498380e-77") }}, - {{ static_cast("4.28996264268685627030208706855773925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.55843482735151467322154417161073070019483566284179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04758858160148749573207693865097611258682532053580644741708378607626299571741454781489071163331961478583318303704887429698138745438016282037356465726871543404600493318018423949357845164509841052287336032095968547544265578409278441961772371247405527391823186341452132702680834735192488255543508774968") }}, - {{ static_cast("1.28110344596063102651228859940601978451013565063476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.43418931353877687762121695413952693343162536621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.61015280162581259611603041281312219714750672075712379519625520748837900282815093599469657102449329452585522609992906027038154076071639645146113938200595344162570525215006263974571317023675884323716943933613404725430584249433688012398115002318410911938391274174242791011414117839535968615208469771466e-1") }}, - {{ static_cast("5.16672517946984571901580807207210455089807510375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.80381185032818629470231092115639626172196585685014724731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99990502044552423124036840709042864832582112050272720529614683113869481837430803897286965523406403026476324601866776220157395635334324411401951420003880457537783083750584239021034205680737146324172685990190142433894632845319189846259349630351570776916287281796804645673831673367339618359511691534945e-1") }}, - {{ static_cast("1.27899907316783210262656211853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("5.22536024090327483326845481315103825181722640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00616341899333551359328361392752162344577264467244472586370749414301840554961173829121346442368844768868155278219296270614015234651325697529392935793355916715136924941286676982861345063267744784667777743656327428634674404454023683239192093835032100591051537658643852513812450455406749057692109035777") }}, - {{ static_cast("7.11730850188353797420859336853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("9.60788079495505627572460305430013249861076474189758300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00107405241322382059953913596876333435454811871669131165966566428674069591664017854016649566117750922070455790150785398980453750449040916943909541516125417685189264145037334413362116738563574347465747605135946915752491452923545893529316360034715492483804067411471432361687478500733144787639791290510") }}, - {{ static_cast("7.25343826567665018956176936626434326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.29954091776851328177144750952720642089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.04970290589109038711395049954355776776342381310886782453562200726034000844667284742622588171082170563883520775218082400856123793786048177341878726458251943347876583569178437736653743701492064380769184875657546923031668880530296652280260428229230807500261114316496980898463695380987245993698126306466e943") }}, - {{ static_cast("1.05425305597257192857796326279640197753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.41211561689230674643269480839080642908811569213867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00221940552517387456904940935153668768677803438018028587024892341085297549561710698873774378670329922261139925263482590967131460066291169951663366614190003024630959832086281000186573153943388176622129526851339850140935108594752581778544126368342198113455082270613501744317697800189856112116044092035") }}, - {{ static_cast("2.06616686835977376654471804329205042449757456779479980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.69516133890853029630996218202199088409543037414550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.85720096393058346372084885893839606320554663169456270644249004310463500725457211657627998908535169742871675934174757999843761965159654941281377745862394591058408452525449223020548106433276286869407305925521861569746775217097838170535894284575048909646530082294345563168457886536304399266956794807072e-1") }}, - {{ static_cast("3.64402451110348510332492821817140793427824974060058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("3.20455824353290882888778412507235771045088768005371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.74947852438644348963594070779458486239729374924703758041706549021145269914102751629698949629550481353884433142728878758835488685283460683679637491539837448325034596988851330419929610091798061933767303224300754233414005420110971299300889653323675957445130038468323617573447274322484402694978713617040e-1") }}, - {{ static_cast("9.29240918436359104014016924155683341268741060048341751098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.10041539819032330171921785222366452217102050781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.30375096076042540689175588676000039497925847630595558133397707131285132566953633275113891277016515974090275087097707081223643727147456085023753621384884096242056199349318008502416132788061805089253485591443085259511013177192516510953942353610198267062490629651968866334656113567343023162640866499116e-7") }}, - {{ static_cast("4.70374294317859518955657338601383798959432169795036315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.29316103610866321105277165770530700683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15122965827666394521150958097124834553922749706241413675626621322918765539817839286128014659593143570942315119838489669350005299860384297452971974330427527438060831168176929743817135707477251203472467806027668891154074309800997369457141925072379579611854152032663703570089179850821080592817602489379e-689") }}, - {{ static_cast("7.90111168678090834346927628928369813365861773490905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.50142935632569063386654306668788194656372070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.72554973148662694166759157160166169303284736393781157514352684466477860400705537599392645875431865905681445772161441577785663278326674184262006684080907675404076284363331862467589217294540329968481020258307213288969704999028809892457240851077890832023610976308448700744934847296072460694151132193050e-13") }}, - {{ static_cast("2.19470224538514946388545467925723642110824584960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.55402946608165493103115295525640249252319335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.15537644035230762511257501642891052274838428807882763659106583075479589103986905326616108567723817554261320425463998387402938492727716723367633134645452074625478383896044161060182209094299460842378984988424538062120485203568234956869861031978112571715328186447068917826940102237728367749115256994036e-2") }}, - {{ static_cast("9.59375752767912236013830851177885961078573018312454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.70600447818681459466461092233657836914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.34074971005352694977724271428304704379730503069979006543824421982543154474277701862893673330086806692863058917258547615336829675716810145864841475235135109391399496144355613620559781473891279309689200469472005874869702401500915898827498117462493418903426151104912981808366378491461635507492430973906e-2833") }}, - {{ static_cast("2.20730165021212201281741727143526077270507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06815138837059212754271309009368451370391994714736938476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00003305295163452281794976529673484400203041012190269638476184821369788032078572490628055955783906515975070132315405678121749687518303529356301281556543290455691541229667405975677836660331331546866945589821129205572181796808319706436826468956587053252695087454167269382499127173288396374118362076812") }}, - {{ static_cast("1.85780789842078593210317194461822509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.30823413709633314283564686775207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59033859659617126254628613087390514142443448071790104857905386498498208916927300817260750485505223182216712213534955208892328370772179606978553650153083374335774046910050899642665243305280141884413167811281876091816572586748238812963621916941228650345907682195313189327181720960131248296641667634950e427") }}, - {{ static_cast("1.28002693604745983830747735332522552198497578501701354980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.28203848010336862728308915393427014350891113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.86706798756547273034023259748332998697114154360428093064398895642136945343512222443801509462788398508116083101485126653725181025691107909977090006260480711914768000641955268595050193784354949171562687163857371073429271907026305099383798868693635018067191669439164014101281294813574568021616736489720e-5") }}, - {{ static_cast("2.00223379702332143770249217595846857875585556030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.62365481395694466471013583941385149955749511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05235460797399961706826012566932005845504749468248264540170967631534913675307979194267567883423064423939335134422258880838785383291061227375243059330869736175934549938928557322841085452000578723759590054565129213090997527802918663825422738502966602188020267614510519712792292721325579607440137453800e-1") }}, - {{ static_cast("1.46975278087147759168741567581406570752733387053012847900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.86458989513311337860024252677249023690819740295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.92154549068701501199366439766982295808371482320630816324433379463381296202639580495789257638722760912167367897485745357403740992265341544963450873213458100774396760614353635868165234585261876587876465994053070011062897736386668244554072898747895651881702386350638799402464850863950102149208151366166e-1") }}, - {{ static_cast("1.69869769328567166155607992550358176231384277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.09451664353347934838245336663931084331125020980834960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00005799594795372584357977768556944656253178249587480331145989344864034282666379944361611058467140259982713730781408566683105999320504528967383185252941819780496432948156779669264240460517640856647134097150209519411486934323027426354907715934579141058953345456267906766103552413735697517517849566921") }}, - {{ static_cast("3.15183975929332882515154778957366943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.02384029084149653920920997052235179580748081207275390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00828189958217090945616829239889322422890752450091752768664294850744665096849748731214361917701488824218313674215416049035608435896320044761285630475680013499593324921963112908846599652343142683769107300940314664453753090942709855630290654440762603604322610449245678270429752911593206005276375357381") }}, - {{ static_cast("3.55087476619042874403930909465998411178588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.98956931787756730045657604932785034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("9.32018908151418417859876732852718049962350652342105850490583184901223805273843023839695354873994074279947349253543933474250055215956442663452932535132575000870445343325403706967004656960749057879238157659107219147411710899538754744145348815414311088777452109665676822468399972746650501593917415911950e43") }}, - {{ static_cast("1.26775488796815989189781248569488525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.00502285798295979898919760842090909136459231376647949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00071834700218288240776940900136375146363527699090847426981092022769405513480212911323057036382071349683106853880233005923304991341200308955960878969600681793506999384869035120625501911973134511693383019876699301926591009688967553141397068289179934328294897849913598948019612426308123680588484240861") }}, - {{ static_cast("8.15220048105761634360533207654953002929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.75025311305504219921980180174614361021667718887329101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00038554010810039170759525901230037332621377704113376782308969416671995519944631372963790226541075839243378526551356024850278824940678165140037685990966568856425831851096416371162933528342527414028064433797747326021549595783932074419350022816349807211737168691836224208314746714465025589975731455428") }}, - {{ static_cast("2.65027968976974648285249713808298110961914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.00316549124626845923557993955910205841064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.76325996094662828651112161237788953415887952374670102134300653855113287125254830377423982732034899162480399742930099350206403828614662703257591959653574878666923823464038672614887656376458325931158457664475267311806542914278433869759036943522883194636568041344283954333960707999807543121267715345128e4") }}, - {{ static_cast("3.65182751295248817768879234790802001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.67556451265639907433069311082363128662109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92218138915478317609234268428449378609898504811886050861657038624663939529613919692032879990877291035109701590929770282532279774612429349026418707716959296859399988519535881353467118924067126621065164445440389423581971051504964356883522778929468170495170856030672143818408689238481847643503940756672e59") }}, - {{ static_cast("3.06064234847405454518348699721741468238178640604019165039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.20328027949478477687250688177300617098808288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.55974238261708442675674596584944622380379860666888634356645875331625278958028151760326676909826129760886331850336797218123658397234427228603106790759796963957806080469839015421053939928057033567772138680185158581228274260396763090865346625773393191666291620910582819221973998350912562080963747333068e-1") }}, - {{ static_cast("2.04040793254407122731208801269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.86284726793166655056666058953851461410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.58821325525680163465105847555152044190569200388116750112228338962598195492329497459385020613020256287552717930952139248724578086838832538138376726496296560875204247514233017557960719338882649967806582509446295835645176351140001109236587197833843059204085625918013701386357232953416141714287393580849e15") }}, - {{ static_cast("3.02716069476693064643768593668937683105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.04039959726672404105585201250505633652210235595703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03510986044313446578771317219744132510998690381352607017246273580247626695630046904160285453167383058665284858123740052884532347981837364373948718495188424769656549948930405672217230120189497151355681193015659186537151773454794215525893522934864014682466868462268390720016762737891468184834184088104") }}, - {{ static_cast("4.47552570179789768189948517829179763793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42494522046174552087904885411262512207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.11929646387532568976168597828914488086907276576025509760458985730962224619833220482536328707584889009590311478709195034015122056954215000823555978179815671349373291996702460104546989380293121918158085134301955237814810326108959984625471199876172816491246653847194071812034535823558646590118729075911e73") }}, - {{ static_cast("7.89920944916936605295632034540176391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.04372395393338365465751849114894866943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.67759107384668464385278885844815795751161179367906982405379998416580527424480738041217566954239691080320039512890036456504748798096287871747642118148076943027438116523332662829876900574449886819108021138850402281937549768122792675121441618853423616832699349260369305453263152392638804725787763327554e302") }}, - {{ static_cast("2.54801173789754968612708552200274425558745861053466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.15927661277336413458982633528648875653743743896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.58205367007949169809279999461100360912902896399937272021332641770690450812544971532999275755132753113048328902348279538087441845456071781043743985319802898282971020600433571724744632298362925010469603804610543751544460798372376992115798540860563907814359172789945116001784572399034814979737998689779e-1") }}, - {{ static_cast("1.89928750500089372508227825164794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.41078495521190028227920265635475516319274902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.06563424507714690167714042623337538555278963530996591844954713364193688715643758076458567982650781640747670966188519005031306885869355129425908043628325745338231076914378682618756362764508582923824741998110533664940173863055464267380496758389944654061554957122449256611900453680459384297799878623896e2") }}, - {{ static_cast("2.91020477415979972324322488930192776024341583251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.10728022839575198851824744394889421528205275535583496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99890103192413085441074667861315652249320196657611339570482857071941674209639709864703891665811884603908304481549592842627180817065779143546842079140388383757073035382383336415119892457712538117493661547669850819233137331852231641783994865993482070326235283184181541427573679758103030801595943776744e-1") }}, - {{ static_cast("3.14872001537003598059527575969696044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.43125111933481261039524667921796208247542381286621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02802334347014804115203210525086340106221839607209085819487247743041255274944512485633547164774253058201682853956553615818500164452268935135547407521495805328007119673698391733155607980906430692803512122247717040507439060960157575458288088753689807084410223837216910150868125550872659514690258206478") }}, - {{ static_cast("7.57561563668409548074483828017378073127474635839462280273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.50776874093542589960748045996297150850296020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.22360322691615293009344442522576915365414410103567546362459956848539698481031529793394942148327475172323264893580159766513287240943753652400314434832413344966940876720610075372213401767379175382193046077868122711719538872402153088637192089166340900530573304907112834730373371836607562222448960151481e-1") }}, - {{ static_cast("2.62745508969974561619409314516815356910228729248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.54116524398034698606352321803569793701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.65627927121210139869453772647172972010233396005753285235163657937204725700240182301143436917519389589272478600896823141333467649759723515447005854045233682059842082604402664004516169590843725236432591088329366055949159027684989904142732333954835416376354569871287255391194720780011944013876616447352e-244") }}, - {{ static_cast("4.80817610372865829049260355532169342041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.83678291961692252698412630707025527954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.41928564331678515981471338829811408659000181192686008443981749115702769340722053174798292070290561882896008338642826088125297911559295342634515669888076588557229523820060662923011009955171952757056636448724507715649589034168433634032429475749149003931613573665241664071010924406015748971161354696738e64") }}, - {{ static_cast("3.20537873291325013269670307636260986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.12063633247133534681996835935535727912792935967445373535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000736273879463173771441699203291296246037525214803383466819484064993717806192280443913585501602480713195981402804796752564583674811227808842648414027111557663920686825861938638104671353044668858964832448138218436863850713355695690765716750462185486284733337309942715764828383697583139810455212638") }}, - {{ static_cast("3.61912176346828890621809549088538915384560823440551757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.52277102882139392207860861816470787744037806987762451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99641674908429772727741716066692522684337586976236285526703123104244360091941899419901468194625324926731894302874406101537005325420303987745335631550541398216024526757166654981325659490102941309976706722307972204026369136295841549401634445497494285259254938938876164197916350437289297642860805084296e-1") }}, - {{ static_cast("5.47727150864758538517662600497715175151824951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54622621028518670346224572753612847009208053350448608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989699815221047195237797415460745692681672883768835967449812852073485700626675461871958759788593113792388910307095890907937872017129700062714402629139690850899327106043179965950904385626167111246937006767223675683130961170323257583625795510235931710927527056466356951973276658601609644129515473818e-1") }}, - {{ static_cast("3.15637438341709639644250273704528808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.72407848923734441370925196679309010505676269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.49825547286670319702380922050187415294618434375837006137892453203122331928047047306492172079078511814726958266726273319242885369558258257128888847286538356045014816657847217085941522774109065130033471139571270092091883178037417387674630454737070888538218688730956097543661382768897165490297639608102e1") }}, - {{ static_cast("3.43503294936064165085554122924804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27250150145350989297488020213222625898197293281555175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00162336779090582285668555617540990956375149416793870895822616882369079038963730293631724525621870732184904017056404166569755879690536542415147024291651047693012257723344966042105272046767388935297934745863474716190137901174215179659999117641456704254362366255369408392878120515423933846401645588741") }}, - {{ static_cast("1.05074245129533483122941106557846069335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.44512744072382729528143674446738486949470825493335723876953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00001005416673874970641874885661095503816717227379033676876612730865335989893449582345456543451081149107465171659175604293715962189257810117721711365871006508720993220186972724366817623975260748578680835030711473739357905906032894783455531711583331359705157662673931729626022752940417931688341732378") }}, - {{ static_cast("8.18657910086106118275478538137690520670730620622634887695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("5.69535439208307230074534999175739358179271221160888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93351224746448996937113594504910401882994345207771800323049779691276470148213924723483955246436042747455629177564845224233210837232201105509371449087604601761437328836060853287056217115691403748052298316839138971392756481564106383080155540424716692745736592178985310629391299501759133150627938918074e-1") }}, - {{ static_cast("6.94796213109996792234301921098449383862316608428955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.01032189649519636986951809376478195190429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.23006490342279217571806140077665886981099414044595093418295957860943720284086984665743578056568297229139299500245761284073691802977046208070538242215508979634862568996291341587581554469156573033924350089621252836592701785348565193758908337598409016657851371246098654329684058361927838809573986193758e-127") }}, - {{ static_cast("1.10592794589664117665961384773254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.25260821850983816716507135424762964248657226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.77248676688621920044634297401786442645385941311525110002800741928600473067163385046961591455772161080604895545524410628330763921136911631698147157554500689676133210576592147935248743333122279013651774018515939625427205237675732186795164784795174668611013924030393724917154265078516887725307445272803") }}, - {{ static_cast("1.25391642141006403698803850499388090611319057643413543701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.33579604520485872853896580636501312255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.68392795308248572652843135364969720382138943730339914636303299072150410868121378543408470390954010868594468316840003936924097765196715356527524435528061810352989069642830612407823386666008449194429503821925534277567874494596141278120854458833913072506701454712189004957264318701887957792196559450829e-5") }}, - {{ static_cast("1.43124739542791035162849766493309289216995239257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.20942048850905869983307638904079794883728027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.99052723424150661886931649071103918452644460542298398165637531920915224385808227208964029010419121462212498905692527594903577506198009266794868206489817939747878141799591393368960481067737790483228614343187263432824490432996787531286395390254093241449602142598445964130129975312810018929887788198701e-1") }}, - {{ static_cast("3.43751575420593244447609038161317585036158561706542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.51206687051705870317164226435124874114990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.57663597564430277353448388417312985615626273703902768815220625590828356254147933705830400685411299593103143556639123246778758775852967467852603984265071153374722320323459885871194691907711626373620710017973655475923376123554952810313797438555025227910644691182176423627488188876492434022067149277036e-38") }}, - {{ static_cast("2.17472395590978127746101256079214181227143853902816772460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.91971825175046888034557923674583435058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.50169709235325052632986882192448754882997090613648358141414144591089112598426944965520244801106015239482741658118850562377407270011579313225688643981938806077750575133252661340927273680933994486522267294226372481412223764992202845720067257372057887189374997685336348698935086839444322249450808054944e-1362") }}, - {{ static_cast("5.61856815780757930039405328992430099788180086761713027954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.29876093753134198849341629511400242336094379425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.81481816351315594384727007893186507859436644672331091167617928065788693663352781510746621160037607384076966766971591864898782687655354341611390803359295084395315487119152362491516158659729010541073082819881189326119491997777097209681555255784910126963441436697354364542857530552913114970532656768045e-1") }}, - {{ static_cast("2.69252008622562698292313143610954284667968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.15330514334751887961516558789298869669437408447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.06666279730568497198113724274678005155752498157046477782004178363192374164474721840040331312046115275560496984877594971350062701246211629447728806246316863840490103633689163217579393790965785864180257773316151663393300617519826348688668218517932804149442470238145344903593621930871763066878050548745") }}, - {{ static_cast("3.16092590727489834989683004096150398254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.48064997212848559193787423282628878951072692871093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12772520348616005115304677929962056919100702599904589876944000234727659228749834981600423100421009690523247572724398560756474248595294433046382239886297029833469577515642633205214954504439619606667497183510745512915018311469959758235733226013623764492488909973197069967553629996698907871574676780407") }}, - {{ static_cast("1.11417522478442774288426297957244059944059699773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.07515622779491204497048784105572849512100219726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.37919294955190238371406645550683331410621638917073656116684574199081255090910984115004225393137968138900076398279876623105976571541314203892497339063273916638860131717065142379547629145053297558185567155580289078804833133323155623898592227362901992618266649001082738287327625009340169715002810953003e-2") }}, - {{ static_cast("1.54818678360652516035056436294325976632535457611083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("5.62060471994897832819643168633660934574436396360397338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99950690212005897959136097299917160482075781519044088208212676575453006587694459400083447882136665068803314657182010357110987268971672741796887858729353234727108572424227132082469362733286450718291677866426969142840900462763239110268260519434037322501413834614893396154343681850902784948541773957467e-1") }}, - {{ static_cast("2.28067710108071286176367742370985070010647177696228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22516467629786623624865704584863124182447791099548339843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99645746030268443121474912265456530387059240825775542503945117534294341852612112033263023994402497137577664903179947031417093395690539107266054577344864123860512144985801819409282408928976825661093887120497669159146596001826170808186934642139325551337232119779982282458342982953928951761806573163414e-1") }}, - {{ static_cast("2.20739083812885155566618777811527252197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.63635428348883159158696359858353730487579014152288436889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000883141260854728883702175584015782702915499431300231183450474406119123947650012070542489465023521252692179702983050986429423066780728766911719282820886407479657520041375764406817735028802434658714254220988205387649994799335160542734586791578044041036401530550092162441750788372567864862832251789") }}, - {{ static_cast("2.11115639194152252336444952618421666556969285011291503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.91611178791150109645968768745660781860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.03851749220927707096105838017357917405034340382528308320810037826391303266735158295669708446462859180309945589089175400795292926848603356140832744578280150360981737396616217244331933441226205091493168502347016694353942358220609837333188158011389094568440922575728826317171755408132992139505746448351e-181") }}, - {{ static_cast("2.38633916347037029481725767254829406738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.47350156205279176901967730373144149780273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.50492562190358454748346649100342667975057580840217621906828483604765156733043048058740688210262627421835218492853562454601684989325985386603026971417507963657922417960947826930994787046883004260577743222590669257927836671693436821127356903028204248621426323317746936948905014560414890048500518981483e58") }}, - {{ static_cast("4.16496490135696059015080194853908324148505926132202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.07526112190653293509967625141143798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.95708970459274514353705613356165057031575229424640773311770967490560575262481854947938662630918869775857057855329254545872812061129308665775656748897011265399787487814796202063476887242748791769330372489092700441649278984973352735989854637536188114328280137258357850310518955976767163293227505459553e-135") }}, - {{ static_cast("5.60807874972006062050389196826927218353375792503356933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.70244506350627981296208535155756180756725370883941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99735500279497094553640363695299701240525058593455541261394700469821111611056791299453732067954961427582921898800842237144105286658409494042658058247679724238096009700396852983653186891371272750369926281385138909360300419604531575348226930671075101518323161673992501032516753200240811209353821343888e-1") }}, - {{ static_cast("5.00853676861336616008002486921668605646118521690368652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.00645550345715264484169892966747283935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.42868005311869594653291738037482789532744928595938052618021862026535850449639612018073258671047578104461913132613998217526422325806836712765473733283115693708797988431341752008408657974271055896785613419004497755473106128411938210880970972796033569804407750025332012993610194266901383355037197031359e-213") }}, - {{ static_cast("5.35323167813788168132305145263671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.62778514750403147104407253209501504898071289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.05603230256580909333512613256181086069213372778044080861620436376260245170503316441303581724403388552683668422287401763124771418367914789920284987220255387646685601968642931765033670724000770308127910918065433865509022691461489073952236533017504964013454255542118759406756885123664390687006240095440e20") }}, - {{ static_cast("3.22976764266951800463889554748675436712801456451416015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.89050305023335795340244658291339874267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.01732691727954660011725367716319147371899471036670702622303272300897410300692262400537048572027256759129565470020582895602617924506137374758437886475976576037363655165839084170315722377939735400391371695808916328159137254265306017499308291350722410467152148965233006027461767679652965168830636324127e-849") }}, - {{ static_cast("1.09048941423813448636792600154876708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.65254774353689448673776496434584259986877441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.58980988503590960516637371738014660727349100194484396379725478994088734700803526572947540745308063381145664972855458934861597057007568531182327714420486870282357356343021375166932444789575430439279485545025094851301007569967666444995213425647227644871269194317170084391746473828083433195180432304317e1") }}, - {{ static_cast("2.44743479435021299650543369352817535400390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.82995112549842228050200887423670792486518621444702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00266010667859458204491495940561046268243246346579041029260554228176172232635197593622622290922199036969298596977304010218474771392718302157017833152484401953670784025973565870850532277945591072432075029519001358625355897190571211275599240174542923282378185576537237233948130696870807231732661924935") }}, - {{ static_cast("1.51488749663457274436950683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.02354275702668705760531309145733303012093529105186462402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000985234516448019885473896561732145157443536520866911511897918118736186775473199587722487758817093449012349451559620294147840372481518705271731392645893056248771116553702829600792931868987911801336627246125357506584399976395776801325943965572049289654345210028541577738692060413098304903948601150") }}, - {{ static_cast("2.67331385687573711007480881107767345383763313293457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.37764930215238656785459170350804924964904785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47571438862309533743624874136133366541454712127562663177399504286662183346894197246880043192629661657584457838166576178504996182224295507635623850476949534360416194135273172780271343507597813231256012656614579448387095352094197763495149376101171772035626900389244626161777607049448871411562278802652e-2") }}, - {{ static_cast("1.01808534444340903490910932305268943309783935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72211847836940634692837193142622709274291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.82611384964605354323505795669056920339301763307089989948479130915805719954810517867370884785746904749334148062069679398152101779177523464996450923425943206891878509254410570738031307822715129842441609577961369156460374327926946469260053825787159767563643637983753386908235973617270978178126680100594e-1") }}, - {{ static_cast("1.00731276656660706514401226741028949618339538574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.18228984435489814508457584452116861939430236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.88175560346904726742930639398687086396036352224271818500936901685374885901648764892385495076288151387225190990418969616688304224966648010000551417499596854632379457426863173605879611399961688292945890600044144991480340984880181190619092493192482621545694847376381337620163394916517599662918605010835e-1") }}, - {{ static_cast("9.87804687799645529753395090111212084593717008829116821289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("8.48295760044814414868596941232681274414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.06922896545426989764243576324057040501874322165012440675766666713649225255160119756183042369835830558457195704471707778294936068250116736974227601059618844500705991834404101497665868066256287785153513125539305523985206318973305432078184236844170690028706643163133079135912179653756316354134757605909e-5095") }}, - {{ static_cast("4.41825747491548099787905812263488769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.79827462222631995203414589923340827226638793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.34369652134197483793288072833308732535658609465509415675669768410932243039179437886058214288267645007975345260332874670014492568423533076540783205684921434471069515293441857790677592200203989418352589897685209311617733829289352336172155226574531882652742067029068005584363117523423189997997484568014") }}, - {{ static_cast("1.52968448456620720321552653331309556961059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.63460821261542546913893281246288324837223626673221588134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99996930989216600191785450269008898634303181250066938686025190496179003638914112281154344493820093586185759774048968741774280050131382009162499732926045936023057461223555387483027406180587409400576483490119308402153097647327397891029914779646839934539999749442740222968027612552511977099477561837845e-1") }}, - {{ static_cast("1.54590681969825345731806010007858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.80711944432144022698594199027866125106811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.53179160234960851931903141810390484338949709737193408192930930410912781308171727424842710235568081208824229115859793069399719735722193263870374052840504012604354910230724690998586625239385836126384899034476217672957422789468436133936022499041037971795682906772214055897416212584774512114169944288303") }}, - {{ static_cast("1.06149875426708788185223286681946319731650874018669128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("7.82539004163816664938480016644462011754512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.14272969225465289903926091127128136862591595250320697667906487225773277795209213908946435749298160698748843670986774816760975159538180372090105486573778335998950914987159909756145213525174507361115992516851061441846585401483368166991251261491681595295047033029078105940961946982855869715287402727788e-1") }}, - {{ static_cast("1.70942859622804244762450665007236239034682512283325195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.45014151369056887470876393564367390354163944721221923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99874220008245006855542326558513156408919554643242887993818629193137080289456989925446796371679686209603602304321606023129900225876158421172053263787015124593801332165057745276555467837973732533352070833078756655605565367486807321355073518225701436176826535604183999704696382097767183866284922545237e-1") }}, - {{ static_cast("6.89165129121799887451649269110021123196929693222045898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.03300713262715859741547319572418928146362304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("8.04313106664538570098839747789552148131626561809170196746678563650616413426296764086879429552165570381706960290576103965119389999281879292911019435355504974691551612891938410889406352256775463548603589074490341705913775216055301816238813657180725380061984870607389371696477377291283392196645786369100e-3") }}, - {{ static_cast("4.27946433404347626492381095886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("6.70089369397394089659936167180376287433318793773651123046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00007146201085226752984788738357625307865767014027631803309640949680577376696724418376175136252913773532105485594068985474036691750060444806287575074228772867146937453568465581121950409526897590340390497454647087617789150538474509489560078795836109491866150406233412810302502603589419003168433407796") }}, - {{ static_cast("5.40162932367991470775092643918924295576289296150207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.23362153160343446245406084926798939704895019531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06423742747299574139652654980590788059822860773454214351500321781043318590458743790589432652553137712034307825892416077869655718345307052092676953436188880309769835515354046500269913785918625489459139881331406660934866445646807527177908193314853725313276753369974838311556362819425625446719126859340e-4") }}, - {{ static_cast("6.98480482930233392835361883044242858886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.82423550256237437978967808049901577760465443134307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00020487356414235503163915728935712973913169358041240146118411664231468676920896629650395007895636986611826729763726166983962518312776000911959157822099221405201493001705233813919293314432879950393142137203274049451871519519207057550355386892818843802770417350657588091700213982000763521441126819299") }}, - {{ static_cast("1.01174486687951502972282469272613525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.80096038819214743220697982906131073832511901855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21386628363111930567875501391228231832773971221469956618940994372919354601446271218977478634940587702534597215097311823723977361204234536761437991482874205192547888855528921579052205936359371957155208181288324241439984156409711039174371275245144079425493549183603159162251977135775037801563222969321") }}, - {{ static_cast("4.58527642677075686350463001872412860393524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.20426803030317546711058795949611521791666746139526367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98276019906690498641979219227000354726256121309260540509550375256349346398739094196651394582546860191649946783658447448964727247382391275461932541094336719168645988397711787831199214881092736264632640564846015317413042211277375865471754751928875230345189863352333606975129830522964976988522205012182e-1") }}, - {{ static_cast("7.60517875978827806449089621310122311115264892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.47867011136062753706710282131098210811614990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.91022318181765750138709868330053023824369950588567785742389327678334961200987486582852651651749970246817747258718976307116965890616698349626417133054222982034680094324870404036435780314465221090580409266996951521555820905007542674615310907131989836681135988524628981589839950536317534105789412104573e-1") }}, - {{ static_cast("8.74441787592109604670184003216704127225966658443212509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.16721737539795736814107751655456013395451009273529052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99872128426369981492114383609632051952305521589536821086005990494116094292173923739983506376030713210025133335713606540746004193037337306885070775500980783374129579854971973151969528024543815880504327167057351706595072153954661171897742253459693134310482723707663819212838281958152922341896338434956e-1") }}, - {{ static_cast("1.91138738236028468236327171325683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.41870493681337528357744304230436682701110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.61393719165089070084284302313399424679983675134163509852591590498735859530953368982681984829992497504960254661066913076235623948356021050016415986014420596315994017260378613566207333104954408470522228787617243604128057260092817202582188202107977088110567991555379686212833460754614025473450009263444") }}, - {{ static_cast("3.95935805094525858294218778610229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("9.66342798237554857082587389527361665386706590652465820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00080082312808327988582209522378397852005304579172107085124537382297137225033557828343923139785908077173538670582197264674005612125502043965115623737220659926592486850580770115661984729610019606048664824477525628872443957605574420631353398611478369946179434030057548832782863477926163435959118485879") }}, - {{ static_cast("9.52749482248151265129099130035683629103004932403564453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.36644237252481737243670067982748150825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.99043290744436080750367189311776962864514898582236218043546095145053426015403970275978470316955018068268507145854768132371105755976745328665490014149700831691054362640281890694866429566348288921720874015164835895723114083232661342953621394611916380955923119767515256749281015210664840084139488728470e-1") }}, - {{ static_cast("2.48422895630792811018892896068877007564879022538661956787109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.55993124989414910785967549600172787904739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.91195173359063670429359403048505978785219394151399979472770021116863735850753993687072273831783588580026886709426140199445066463954822741869299289627867228462101496659941594784834735871174181621098355725481647468654367330416914560339262972917390166297854884128515599346578674725441419457079115897184e-1") }}, - {{ static_cast("4.94911189808764902409166097640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.00486277593047912404244925710372626781463623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.45161540440045450223953783783894469144373503171768310299316311211396701039652476264548018632004490940551121650475174226555299061745541449779441170912616150358121670452871969103360706271231784736206842228875578338918267487091360709713844820843854370488212897734417544669039756642667411365232861750622") }}, - {{ static_cast("5.86830898821921187469285996485268697142601013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.15714500475533861589827466787028242833912372589111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98538706799650092346821769070662036641738082636479009372539733284347573229317564170016552698886694627816395005478215973507005929122925461962335439146679105934195547032542346569150966461707254588652749552262131982196536881226818665443124490222705261425197752741794319954946333545210933092733146260794e-1") }}, - {{ static_cast("7.83501026710203586844727396965026855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.38788040794881645245695267476548906415700912475585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03084303369653734759444079184018763110189145271757350290747789171120440011979438908956047437954061198621891331998729346005011749200857634828740000563446280260144290233886419978479827799434112209614567540357757105949708290107985650241181647155069956615108211465282807906696708079090952998142539773200") }}, - {{ static_cast("7.24040157384670202134202554589137434959411621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.21397503061749550967718391802918631583452224731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.98962718742601158545306104847042012373529894592940838744141601234699871358047935296869274717524339141323620050266212255881930805755665793284647269071772742030623661802389270250239007055699061760303889999391509361560603832488400525248124730452423718749922363976939807153833465852271516354356322016570e-1") }}, - {{ static_cast("2.37737491856019333980043484189081937074661254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.16670398708927525177614370477385818958282470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.49589428217805567802447379970866851398217501608629580197067814528656191899243702632356211673360505654178344944705028006574948563210523891802606219873940153904076904718577079606890006710252221715434732369471615966209956056482424699085238332051063676105524207191799310422842401999054890360978090765282e-1") }}, - {{ static_cast("3.01647874000722708842658903449773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.92136460953186087863286957144737243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.67051217459346602496477010560417251705712700254048639078839264060325224717762633346441800378240849611262512392424682983226473649608304764571881449403455973384432668551726106109236708017847884189936294979084049530151497877322166267026808199785689058092334141134841250691148642129989881676444005953065e28") }}, - {{ static_cast("2.63540555826397102784364179228759894613176584243774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.22820432867716089475607077474705874919891357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.06662853666315384518454771688957273896640018166337060934230580664851581626370131366235045252515485872195142490483479220526746937459904335480861408290098145258297721984393013560504944686230699800648442282165588666276252945193146150539010418085408269547841393316042913883904363908615604194055289620194e-2") }}, - {{ static_cast("2.26046063075346914672536513535305857658386230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36270389219972226646504509517399128526449203491210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.49669691356986597021713215820093379236513850713669538194655152931335203737791678558428932820631859896635045077055245394317491407809178976243739664980597540207413635355482092381212167318467695663002155241642388129246468412919845420697165678187848016391630764936016535264450983179524692369001196616367e-1") }}, - {{ static_cast("7.44369864652441037833341397345066070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.92138014336919438207473831425886601209640502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.14010675669123183496921521116811427733135459824631474903189627969592690975861278168724266785431509343760131532834105760648359541103464859507378780843287835638142981311936553660415847409900494706845746029735940277531884780112929935900839635096070137371899495277565868989524061668633390669303733877713e-1") }}, - {{ static_cast("2.58707365843879599776045097314636223018169403076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.94714110472695892894989810883998870849609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.94285469588168562425042075510651649105332456874498432065780910860149873485515925490595348642217083245456881656394030092730262652761300876175697759058061470631341983801941103052127203347591729319027059625352617883993869442078699806792081819748879905962225386908139580991345038356748418452094703929970e-310") }}, - {{ static_cast("5.98084615325454649337189039215445518493652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.54141705573080567892238490479428492108127102255821228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000134883014846657688131845485191611848674206835683154280061306464539283951337684813473177431132125670490032207511582839375165363167348982592154407605611359695341748966890300250815981718309647127029989133813099179248600056821756358657145575917892530126627067999467459186401635829661375435200555943") }}, - {{ static_cast("6.95026071869872530406553323700791224837303161621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("7.31225239711935908609730105922608345281332731246948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99946829922765932774347186827261089119719545372876939189761602548364480617029835514052044796339343249676137993597737045638155557799285710458997819509839368231591299591459306098956962406996519241338464726435617191918273092870466980318418139849371272285377732672340181070589663937610591450209282798517e-1") }}, - {{ static_cast("2.24073444824900158689473528283997438848018646240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.72011372485644930879419844949040907522430643439292907714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99978273147710365618565727465750018434266860028552780634511158239820481200127637360576082082285493761515451879661983436902590331857062933298024957408602175417434650700857480478630047039957552639826605254005583176460691229891227955796802817287827361621819443402008175782397464338976239485836367013797e-1") }}, - {{ static_cast("1.02696336152198410170133247021340139326639473438262939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.11791001950321867638993289517657103715464472770690917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.98056858099165538580460452287541225753365554206313892868475688098072267264713973803329319240088967254425048329384938932204820454762680502689447633583472338302047491675207245782389326788006117820440333632657775030341985234164850042741621548603372080092391251779877542034296864156086357253603371919108e-1") }}, - {{ static_cast("8.67037052863078860909240574983414262533187866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.52133920341677693691129213959811750100925564765930175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99277952718489198651035604747543743540115676651768417733688848831717723612326298765655588890670608573536137096893609251918929861039853578444897886108139617036413401117695629638378951997111811960041138307910848973294872108144596558607179052633028242671568000242144929604511881481654385461936722413631e-1") }}, - {{ static_cast("2.52535597921406917976128170266747474670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.67545906951556844433071091771125793457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("8.98282264364143312494924261974141234695472294090992155155562018911995536275433125782292778674260525238398016330461123980463532873852775335243553615531641077025771609462191107211129184970987736565747180479720790198029098762244705019025351383419378700872375798060833692002857187730789356240125924455777e234") }}, - {{ static_cast("2.61640599122827916289679706096649169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.04737226836765842108434299007058143615722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25310610377006493866619672909110501466370730517133791833746014957247005356303121141646462034804208859942897670276612700251850886627624409691966399085604959689485003780186276442904234165384933316935452289326908453230024435075360037297385764282630607352032826861327915100978947458904222670931759368924e35") }}, - {{ static_cast("2.82002594439443032836578595379251055419445037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.28903360394438468768812944276191956305410712957382202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99981126663120663978315445418195178347518855090095327320928958000002380082757914082726230053423120527749961157170801907113926659877545130473348116514066094356797962151622116993547396704816898570832090901788549840104993042307779674567777216024811187461718618588120530554820575895739988590245022632269e-1") }}, - {{ static_cast("1.05597237376428054744792461860924959182739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.74456803510535429779793048510327935218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.05450439582280470237419243848514333965208787934652393730167951372955494178606431812200728304139567804628971230701860498398849175230634941866518705534394558725303044357497118657164159909944927143807152603979711611331658711835035945317940163428557910521645089962892594811777021284923659424445609434015") }}, - {{ static_cast("1.92238907809509029789296619128435850143432617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08349612860076613971363479471676782850408926606178283691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99982133131096723846335477747571205458555360592772378989843831769539959961315480174186773210831188200236203659966289556452394505676789152783853641019895730138295352465651299769502538786481056285110475730395967855975688507419189456451422446526295567348482093213471867865722148473015661603656725132323e-1") }}, - {{ static_cast("1.04631933860085252672433853149414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e6"), static_cast("7.47628658058347578263536092890717554837465286254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.10918690854877106790971565776367526216180983995819057803660864422406143847654780992569076690586240873186597255294638451033694659817944978005382660886521706741399259776875547778479274738700590433170032223482808245749786294093246294856718197278358866518098957741521257199802713807166809120449267805013") }}, - {{ static_cast("6.36259548895734333359697210141803225269541144371032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.22809772788395861198296188376843929290771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.52598782338450286286135450458954573598472802663327374811636800203700927786701774385033841837545251692421774984587119423266677067201879737268514092791650544542213882071172025510515697098553107823303332247548034598510867132891098061561608401432719775239528846321974734634143406918807796517003534735158e-64") }}, - {{ static_cast("2.13062266921418196562697244811346308779320679605007171630859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("2.38534614031968601466360269114375114440917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.19098455118066498520013706754490677591984461696830181149035955535619874262474066374087254218809585126187088590005269981305550987677753928730521021427525334082765124171365549957770314171493849134109885501003714622689267145862269434956103582260650590467252136804225198053437675495933201621005291059680e-136") }}, - {{ static_cast("1.40290401591987802021321840584278106689453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.13722689335705595681247359607368707656860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.76476316747050528850692000246200519522360470716902181350858525854503943786512297020242024222896565430817144786078487939900580658865175044648134728561580288938753166434593435107710997858417174150763109875175878816362192204521588377137231081824131646740939989148534654273494711671253618986609286323224e2") }}, - {{ static_cast("4.37201757312766858376562595367431640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("5.50898368829070932406466454267501831054687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.50016375413563777673770541325000240347503109832508653488647336857427144256430628344920480322962866090482161278435394130795573385145704869750655237320185554045574687208211132875092396633526114578443250901360527371315672281676871350085960576744972765455104647558784495896122434499365424664074824652372e2556") }}, - {{ static_cast("2.82657718261440410630058739371861520339734852313995361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.01065835722450432997924357758634528181573841720819473266601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99989414562934374733570123984537478193847375990023521202992404597564318809152441993727777418090556514104681985844118458823465596529403699968559686663737740106923387493303105200565503166558779713221587331443491180025140468746214432126679720477339697928392369627582889524402889778083449486287091857918e-1") }}, - {{ static_cast("1.82131588065436497009264016355700732674449682235717773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.66518199450072917899845492684107739478349685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.40207373373989750079079577094631199620167306803671706440022399491116271902378455342284164919251165911009699545436187010204381502830971843813249510091499154307328869929569251004649662529059388775244320275509563520973233815719214546857449027774185623555318990471004404713606927167122651605783870374832e-1") }}, - {{ static_cast("1.46755915364810964092612266540527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.89043697836551700675045140087604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.64484232464543513497888195163429809804134777698713994865506287396508104602871734408178720046618390944324170991778876210342419644694461221793882529660281950244593440074231456401876196827229747637594809904497759425267031152839358279700896103069795279548051852526590187125738047135851503597639320208298e407") }}, - {{ static_cast("8.30433287676949054002761840820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.52637571399967619800719376144115813076496124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.03503345548731106338710812130725055986503423501253010837510324365889248445099107670056377581266593900575457325985155519568071726317821696776190852210129272438899726884098324950090040468317646989831449979292183766681690581501814228892321721246601040936202160676525600474705308542633568308584316650080") }}, - {{ static_cast("8.81076109807957895100116729736328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("7.33372790631923177073758779442869126796722412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.72892191263152309368418398483858745615162148917317277888912958706672096823639413941816735201743610855503568372158123380568416223942437204395543055191166267974357638190306465483077702922759360128463612732981531386413914170095452050612671264384868877433570747466951378322325020744405691770060335633788") }}, - {{ static_cast("7.53729022560753492143703624606132507324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.44997674051331170439263495985926510911667719483375549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000626746844722828444925305995099577313805301524404103686494009081743532235207019307339151083010194102029079910572707461595043287395038108777455456317947638812268175715959797135803525856300281211049078122806988241700281453385528141559419083370029575853474851945010647429584718991721854559935746944") }}, - {{ static_cast("9.29196125311857485939981415867805480957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.87364075941672677400040569750672148074954748153686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00130310607123242618493657884019907082179077698498276221909900016213891825242765534255421206798520599892641330780794108614272121210817595736511473642012182311222406630247676600611837624670300497417793849558413334183751618128852678982366003027694097779362865347129226028454653385495003448455051752341") }}, - {{ static_cast("1.43727353532569850358413532376289367675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.29608176142756548188117449171841144561767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("4.54783993491495810650470280449947427623348347028981499281421336796280567779408506141109574684107695839213640033321254129078108321583824176685378348816016878194065833488610016432724082665467588150668096361892027109844713789484964974482948538692616206482165899790288506924374902752205806598101379280087e2") }}, - {{ static_cast("2.70759640224985531631318735890090465545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("7.30536731556413743149391848419327288866043090820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.07547877767428083419096142604570911700485352561609679581466039671852713698452759329634869067401784752327384511745999840407965753203664746748858043080448574928987130431330974864221970333531951352649388383982665219131905566066113253186390249711325528920747650049981618690921655600270254173866304929129") }}, - {{ static_cast("4.86911459659213416298687016059432153269881382584571838378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("4.64415295518658677309531412902288138866424560546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.41012673791647055159490710611797984019709597197766274319967811180940457128047417078813260208344264234412901043623761003849931025905704896535929048868960146432780155662155674231586473433894529344683868489738341572805069281662400777414260520026876565570790884943500995948410148791343831009292038245400e-3") }}, - {{ static_cast("7.84854690434243218444265721700503490865230560302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.46294874434749200275973635143600404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.31540724563669307320322491667157973956200661651434919571593303846115863894103669513415833366999982869469042192760040827577397824232012793869428364179080549290195624467934132481201575233560543620306283174662613044511585064238810137330925608875093333350849757044686376810419383361338035393598016327803e-1") }}, - {{ static_cast("3.72120262782922945916652679443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.94908530795382262112980242818593978881835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.12206584334504219728846621264973553250302703946785171831645645721830894010675262018545815052840050758849380777393422282576480781495344500008748097426459462508969278927821357065182790433439566919608820582252667225317461885443234193297904549706413625058399088149505555110903375380342716569207812657836e18") }}, - {{ static_cast("2.37172835747338208930989900125041458522900938987731933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("6.40757764503378617060302957497697207145392894744873046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99465320336479719185464362393617871174305860472162937262848024567759736497677820188393809529906684006391677099787283285239332531375600773760223206100883246634220752238455329498878968166316454533321577818353913376078773928516840980584615525022113173652501922620733886925072518116022140332545581471584e-1") }}, - {{ static_cast("3.53605103337158652720972895622253417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.84582476913116806827019900083541870117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.83532969791885885135620378353794410619553188299174712267165316998085251325072529407513466403156971688912550231810700054288873685181499788137652636209514628912399831379317778239395084315052983947372535292000124065735878003968456173427606734312841500343489942261612441073694733682134245803236657004841e725") }}, - {{ static_cast("8.31048089824369333293314215937996891625516582280397415161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.15539351718839655713821912286221049726009368896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.43482075927723057531497663442495255886217925614713738709933378320005101165593393456330280592636199704470243210249220699112677280162135519833702952111992891673206729843009842099688221317242192847449764385413153153282253151503752131156497992327652425308884952829049613144312048128169217759285595530627e-1") }}, - {{ static_cast("1.14666020001788820081856101751327514648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("3.34127651548888934485148638486862182617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.74479451169065114507177142090694649425184490446641781570460948781576584635840991601731927655494758023459925015377386019778946251375096661299820054396659345784163916943122911769409035509491324432205386045800229510005976694475685559497072577311014446199955236237444975977941360792089045512126998703937e1022") }}, - {{ static_cast("1.59284463946466757988673634827136993408203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.37368596141571408519865826747263781726360321044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.12790541394790276732931574594592716168427963234746835691403175587826006982488095536822241070760245600803352183137207993347315747261870544496930500337717553335079860285134922718636682581363247953489931749833309595523465412068635376914524529775388476847978990731073661981262435307448746968442209991247") }}, - {{ static_cast("1.01037463548088457532259099025395698845386505126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("3.83350084750183555115654598921537399291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.46827959515471898774763024079995706113716782750728469166998382738205474672874505408339070961454993286360763402251395607969974201963555866889613983970569781895238062738547839409015372756811222082668539050479266568911339662981230077013588037391296361362960017408451588351832195207411208108858157498757e-115") }}, - {{ static_cast("1.66695565004290529032004997134208679199218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.71804015666434395370743004605174064636230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.16219309185108283690353246115834277672387666007297244563945515894098174972467389980428784832971321037184548414733298149740082669071577857913503517445753714679820984984835536300423998074680014379718142053804437180632038614386541542054507333387434066222641647278889877313111291185910035634611028423893e1") }}, - {{ static_cast("1.28464602296116354409605264663696289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("2.32457638429370376798033248633146286010742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.24945391385140670639469572823424256394544549042741674612450176003078448450232834405677926416541827735839125915448795224664876170676948629996836691342006517593947756961464160491430339434651171508096026536520981556090838358776179831242252299597098299062165399439487062435923683313278394249407345431587e95") }}, - {{ static_cast("1.04339649065651030425752598951305571972625330090522766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.57348570830582303869960014708340167999267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.13059686908080605126564483508274490473647130063580548021629986277623406548383789633827569651948273474979014022501027829260141472868965231700274633764760142846471542740886183449424861759202613481741450387488820213753956013540876031520080117102079251759436887925675362188501650887210343405664270909838e-79") }}, - {{ static_cast("5.98527292754746476077798433834686875343322753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.92842618905841398438405498438896756852045655250549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99969570850103897852254602475534171540024098089888531491644885537022647868647455296214377097624078476427734613966180360314627711193584708132475074727707481960045949327090840155765239976195485323033627665295521041657350135494380406033384926325020170964497589858453537791112107981125863527921983931294e-1") }}, - {{ static_cast("1.20170821629471988138682103652854493702761828899383544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.83573171858579975435077358270063996315002441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.28605001646404799122123246583375017811401439409264242217956456924187147921073178601773640157007541107990624712528914809901097933653148466740296742087373566926721281981068789281547799916665066119657434350735735616423796448248252402292977828214490771898387468010213868209841336736006316556313401379158e-10") }}, - {{ static_cast("1.79027858130276217707432806491851806640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.03754584982387711988849332556128501892089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.63044664995037750836987820374386953646551425036186940515842751543311970070428773125366390621088048509415536569966741084563251083225715464442813762547476523458275835451374563942157742199280762833831415410370539590912680755089996665637460577287883121257390441169299493248423283996313182295602073608455e33") }}, - {{ static_cast("7.71075177335318884264125927074928767979145050048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.64182056353383813984692096710205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.43972399050369154988520798910605088410360743083682368257478281007222478749780386934407011016164443028717189065642983648339942330570417348717676304330188520673656075843370307967688074309785894752170432378373350782687762813282030251151752809306457995236444306078641839344649086096494148698382826630683e-559") }}, - {{ static_cast("1.22585961723861284554004669189453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.01372669446815572924860959780346547631779685616493225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011878102928302779143036441761880708224532433147368168056931216968198406137164127175122694955536795144107173837990207593653143943257391177552069467355860858316175819319731322452047752960070552385154812027281420138955970684262089648831370958477699568344849874652831370849460274952408206982772881433") }}, - {{ static_cast("5.82595149644963838930777910718461498618125915527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.85058768638723995477498446282638155935273971408605575561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99998621052671820010209082288722125377109323080442152434584440919377662337625060557131747020218413297035621822998191924210038600199853200536989949496907248450515440309961142400248274163420688419892365590086355187405743025995286488853302886303794885670413483577122364857720736276931131470386157699818e-1") }}, - {{ static_cast("9.01125395544224438992841896833851933479309082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.21806070291085433154876227490603923797607421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.38368157061396129371090614663532617206257134398324144105974743560347038187851945959992361814602150755480311739774866352614225040566667708793196627370259194113771020229764238603211377558658426209396490633521450588911944454397547213176293597692411663128824894095155297793732492904564527595779976674988e-1") }}, - {{ static_cast("4.40965439472245090968272052123211324214935302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.02453990431700336927178796031512320041656494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.19534075097294910062427312364961024864527797483767863624171403928319226867976521096128692940847528103007338680691678979870596291215052686966371603169090630798213135736273205172476019108353742027081191692977102801637543740660392501627319952653856947188066651067307484842658131091249553304134437847486e-1") }}, - {{ static_cast("1.93717944386320728433759086328791454434394836425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.08574263216941169218898721737787127494812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.56194064144518235667018224449588679976819296337783156090494451036523029483949448332763991177580492553296509263765798810431727918219796862387760870580577134565230417714219352767669331762365217747400655499790736729474440290141888015988952364748907315410294417222286566628219298383793200309754712308589e-1") }}, - {{ static_cast("3.66479892681643832474946975708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.71145011595037033202970633283257484436035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.92304236247268349096312573893392045307545699411902317264880124837981164329935084560551082257778103184407170649203234984204658334295355705120603551098245781624244872037069412927213696722873101986921044921101077821551960590243440000669839151585453297946266135519928259442687204452169702512081165606273e19") }}, - {{ static_cast("1.32708985351551091298460960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.56531833894015816668887630669360078172758221626281738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00077473925602097877583679698815018000110220247989590351745049914772258652489667683543311902850183669682134777670514222872443151397469262756195899010288195180434965887160900063533882057343026426147190468334739066751949659071732450855977621834587152702675615140712006936143437739732339126497413250346") }}, - {{ static_cast("3.52775045264896220942318905144929885864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.20207441294177685975341773882973939180374145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.19164668712694362712251058826210564533792000244902438405631163228898011483361552530774835675890492313952004188178746361986328169935055931569379688204574777223286241370824460769287348812931304022631646073013552253933784290828875633916987679684918077103703055564642008994164871305721849760321403415697") }}, - {{ static_cast("5.26721150567696895450353622436523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.02594021105445992042559666401757567655295133590698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00252610964243996116042029581448234570507107619387893463104238190901401098561255564385433004137657583567661490188312636640964083001255112695679226528406143723662756570159800308402030438165398677929717369572388554610405821138849352686065896479954227526563362385890018562652478441542017212666618852941") }}, - {{ static_cast("2.85382232656423795447153679560869932174682617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.21622084331017621394721572869457304477691650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.13603045090195516704596534175318401579207918841598587146324536013529784552205952203801294482696233870522877138037982641276177183524409958004888324787356863626406890600708780844863240402886258989044381114275612277702992295412653204859730899096318397139691123133990243168861782693287239971524166152533") }}, - {{ static_cast("3.93381694633284512141457867073768284171819686889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02640519319720624480396509170532226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.39863675434390989723351064011214037513398262547140577736762821607782111942948883337093856726075063500818067573716198405459606323946322650536233861891286348318106161892821504014313663700097828008365436512713907896457061009150442887680100088324705807016079909429412724343222986472982422270499720872159e-3") }}, - {{ static_cast("1.90723973215819387405645102262496948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("5.12980954046070617650260325959266083373222500085830688476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003874831722429751496737922917004435479965257235816453591525868492670813319281541168275796018004391940278219820598993631669244673032352035813333397881915928790424205764915135090114218540888704442481908590391442502493189810976009897523082978954781479402200004590037271385433077485827559023806478611") }}, - {{ static_cast("2.08352376339207012279075570404529571533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.77328372265651944869168515905855088021780829876661300659179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000308249415661310193935943862153702303875909245307529450912006821815453371252563642757366042171762708256721399309832054533722706035892679765533583739735266608823632317266441068592608135365434098808509810551746075126687287986572543900322800829577692516676548344312574211742425657072976921014511642") }}, - {{ static_cast("9.71724513689399464055895805358886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.53600001609863927917037917936227131576742976903915405273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00014104020491665960642725547509974756116986496973147973056122194845971531406444606607453003866992922578566310810305178136382912507500272971783788119308610688740112803511843108270710764262658648334376396166426766278251188688321297859103006142315969456950763638190401996565523343208463418705191958244") }}, - {{ static_cast("1.39802629394119207304099383737394646232132799923419952392578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.51936644048749802671238740003900602459907531738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("6.22241870897130620142553713444278896319414844301127628403550478555392596780554049192378201563747768162180873879073883732945738916895322915439456198565943172406197196260279982663959045275534018807122490359500452521705604768928620538202140216274727339329295923594705918674314862791990908520063913560002e-1") }}, - {{ static_cast("1.82765007732204644297357987170471460558474063873291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.84318950269757237947487737983465194702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.44507161334831975914976330209249902713146345349963201960249788428960802366282255229864854849664361912073985037641790912699757539023105844864929631975643935921225809946412808629805438733741027621604921419911409131275740749522537202228860884159853851509071131465735369871648912668689687943767400944117e-133") }}, - {{ static_cast("2.49872242289261521364096552133560180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.70475708243581758338791587448213249444961547851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.16348084392128872602170011561254935010976642009637548196335495165701186585536416597718806964461847864028617635977334329848073696152520245124091137376311572172062522206250814543168673719325221226847866492589752767830775399781911226358430095279351842770613889036173222279808875420192058143269430231674") }}, - {{ static_cast("9.73728711278181032710149489517448273545596748590469360351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.49131637906343872401748740230686962604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.07165047632947683093273589058329846367047057355046748020009102510780065766705586588667687646255828190502946698129852184038457736930348397388946238687402139213354445146888181529201139114650892414118512134805367250310852437034078342906915160983796227481872425495472151960083249503055095175373933146792e-1") }}, - {{ static_cast("4.41558345670632190066440259101909759920090436935424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("4.02580267030248754346610784438098562532104551792144775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99968900351231822950433739312428495072856038776486153703336951900488129027691896751286362525813536862927182360156159008954621569331770038862723809677808006540779343891491372231781933232571078612298233285052166498857617406809139173150092488738015228536389093793575323664246229233166651636689627818170e-1") }}, - {{ static_cast("1.69439965482008625397014611735357902944087982177734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.70724294373208412833875513570092152804136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.82874963902734961145255850699575978876746826231267390332055952052622176060893943203741788304684214781121351119738947541263489494899175563981247061980860747331222509426652450764505228926170316851952179492921780437496906593243321687842665376169899786546461700589626075813241454757704572169462564574837e-1") }}, - {{ static_cast("1.03376346181700355373322963714599609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.28989017209520627493812838793019182048738002777099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01199452382152846374481951076631164582584661608322894290555407864227990207508639820617740715279797178581146570337346215682655494757376897027306747771093102874076785395996716253897920655609144243672317898938847395985100637001354712944101351050038536687079382428227717980685264632621156939159222226580") }}, - {{ static_cast("3.11283305234331397759461879104492254555225372314453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.01353477046427009958251552745878143468871712684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99986074588519454560640521673442935641990554362956049271045530697088039943872329332770296441408515271037076808977915428133116228156704302455915102356256867263136007644093137679299480159178566422686424390921886424606676712277018147908640199369062110318937373042728100659267805929813035245614797996696e-1") }}, - {{ static_cast("5.28149186098080924978148686932399868965148925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("9.16657975145258205884601920843124389648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.28853014056156731737794697397317103994217559431541111572375406126519183769444357872853226505354592130101907012445487770770781129901235873025553849331106253792412404560306141938477978026852566898693906386886543485615404988699045603447639500571979436388663669239796393481965967462640474331680310932353e-255") }}, - {{ static_cast("2.22250599362956213767006374837365001440048217773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("4.64204894849468473694287240505218505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.32843078440077439221637641999286892206805235377727400014747144482178933184733036820827184969102097810334387052048590277206436733653974464975608297721942370810634826788083279979408768576378602999295622590369226553818034587114239802440932660296228167167346743576531361276267309223102513376997022773121e-304") }}, - {{ static_cast("2.64401597631773445755243301391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.48515468216955248692556779133155941963195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.22595558957063988125039996231413212457799685089809815878697787456948885300739760428233740293311835672030485009491199517382307607053064251483492857230753137256332086797523013500249415836024187602707789116720162609479623122987122977570646771495383250532455162474303561808394969890452286012410188771582e1") }}, - {{ static_cast("1.09582116879168154355284059420228004455566406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.12062729806059380166516348253935575485229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("3.40731230607113577867418131365007953849097556433032366687124266265609534681297061468250410931194577479128955229993084028648709681104213544161468193428670594705798621530529153971465865443890890717329532471903443507290510241292018220973611927868861647858691705199882686680328023542042496509604517393163") }}, - {{ static_cast("2.87650329232355375097540672868490219116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.29636994307592203767853789031505584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.22908880787878338117870181426636174855444573322349359087228723914632875946311491878034980145023441888073390972797385266938998183475968716718276000295270333868881283934630328911650991709812223171518435502540229986453603655260898220094106548795285001784222894626512051690586979041086530161063766088286e48") }}, - {{ static_cast("5.43192335581155216501364479952940200746525079011917114257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("7.05490815336499605694119130472330425618565641343593597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991447218133598413920881391105179265568552579320617946001886143605253717825160221002770761833078341617996929941439664383856515269642825892255570319730959451798678974258583863414985420861854967974576953145352608585972242996479479728931155364675877878808323939895254383920003458645959690646207544957e-1") }}, - {{ static_cast("4.24450620737656849484897847446518426295369863510131835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.42617657776718897988388334852061234414577484130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.28295177297287815001307142572162153750668927480049029937221930255174310738192949066940496577252702629998657734311395912708887847618250337367575924375521236807234588840327753338387239581722861162855798729933237542178055913633273793008757291901196363208416962469352000552707123078294608807586649015685e-1") }}, - {{ static_cast("1.30733273631510917012210626353407860733568668365478515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.28858724063975630660591753517962843034183606505393981933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99964885633207072968580726334787422174518544602461721143383625224899368056665861649907581709049484723249000855383620986446956783244965088674964206494776757278305799759524067667215395257158003498553463221431113016348494389058271382782227321845047125985119505752219731349818937084514014330356212827292e-1") }}, - {{ static_cast("5.05693319148356598344284940083070978289470076560974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("3.71295988486159203589842547899024793878197669982910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.63937121881680868303835544307084885674388908256423717510775350630463810161245157254316013064889945722190309457613724784742119883122943867724213022530021363225255978426044946346577578461808416905152263622045415849140604671011655772958990313726815312540544848648362428160986497782665450731113127323529e-1") }}, - {{ static_cast("4.84423969203509041108191013336181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.98413458911828048669701018980049411766231060028076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00430738669558002031403659131744896728312485313631409231096866927631637993851247415735380222493024677897434245013356617271278547792035688620287749522586547267897264556329014249359221662180556496497208175354676304526200770138492165863545577626683932270268515447259703077574615595169323328662157853185") }}, - {{ static_cast("3.70784803656541983585270827461499720811843872070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.52501708992864104530440272355917841196060180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.33573197351168666887962631201029384882638323647836131662987813863879776215233605661322116050262224430353678691583537529582375506359810080440891529163886160078411813398386404062767305381544566179454141780145518165423921596307439563187082576279320332050551415851387221311994490392675793780232895364275e-1") }}, - {{ static_cast("9.71655514772415699553675949573516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.59166384187756904111665789969265460968017578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.35377653844658353569031679679735299370922232948810544763027212743048187579990164187893014793934410534408779634667801500692064187926463087757507629287841868368096408503740782370080191376158895711024144836742418575636184986247750729343991462010937031402061673932392367262371858670977341473615463130359e1") }}, - {{ static_cast("2.19264585936548201061668805778026580810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("6.96729316179001942387419288316152687912108376622200012207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00003755636032301823537943813016356575902489314188145066916221494580392625081472816947024292161874513732270899683702071327371665141574567958235034154797657204764921080200596842458370044167411926333595258330617813605034939486089552138840272033589961004832483480269032835319807553392086565465392533307") }}, - {{ static_cast("3.07913249304984926180139837015303783118724822998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("5.05463804011641570923529798164963722229003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.01796919571840276681288861157787148204747502682382876961304668410493347723226232435621763407251840958497596600197906374696494268910490419389807332560043086656936398322936521311486726743408171670806339766715147358441693728848925652781609216889389399280179459317545232154188799226490332505068768929180e-13") }}, - {{ static_cast("2.72793625008602248271927237510681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.45107876494454290927649253717390820384025573730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.21356364414706225993709314217781803611734556534595777181951409142649823132949473277169982486320740015805393683502787636048469072138860871755431959907851351864995912275227191432009279405103766593019141570051245200073079914866268809278471723253071227068595740039873872137154853304817823898235004618070") }}, - {{ static_cast("7.23608622250063859837609925307333469390869140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("9.31713845716947162145515903830528259277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.20546015073919711264373148066122758661068546232444031541084969085534241548251886930568813690809866385000095984750691172127616802373754602142656508934912781801862005537086317665378844206989588374435568687107987862008034665185792976330120721552229886514045101504253350965371418298181204870517230728955e80") }}, - {{ static_cast("2.57072303536429899395443499088287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.69790274993758974475532852466130862012505531311035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02140974620888944930305959435799702728843289682449376214925750857783066006891649041158724227299321084257799199351924992147805951706584524451302681812312203333848599297059927350897068391576429287666840858314350106940048605718179391844174140189607359928083054157216235380992076831905704302805940691484") }}, - {{ static_cast("6.27071378772734664380550384521484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("9.77213705199215154541952932376602802833076566457748413085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00013045496457016358902387902369248820481792505684604793782357003458740283012026953971512527832247937686018956926918760579827820618149654974789601261789353438501933209142889274324701479760186259188286221595702693452369288516143444427753506877231697874469255361407264955531595418134590240336559943863") }}, - {{ static_cast("1.22109376852135853575020973948994651436805725097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.11543635047828820815521422282756702770711854100227355957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99995551589729160336804918676630911396340574056049766519068518427735361038006808700598379055737548489964622176597729664945550621782605173209704608243388212974829930345797712949588621847644770093271093043600103623962707878170666514346008821208975619634087411931268385031450753049330763535153583731711e-1") }}, - {{ static_cast("1.52900990354010689331598626949926256202161312103271484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.07910792856703210418345406651496887207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.09437152552687759915144210042422837004776738858769798785362828201158918075365450163702134968526881164477730298716543350719085306748967317190021537573795780001155496528795641888775374745803795044275135632851107711558035622505495812638847592959079891240357223230602055612544312975892640303394964825816e-1149") }}, - {{ static_cast("3.33574880350019498109759297221899032592773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.22409910922928020227118395268917083740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("7.53927322890034742368017335227292720005783821228941858003370629012694382557138392281089806659775813675293365836774015539525201899124038456550795641920581579865504101847353382339574548922971435920120403286201070202878099356466592276232925556211910029587973272230882852354333961947656943741233580547242e33") }}, - {{ static_cast("2.93886093222884170472752884961664676666259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.83152139210962529736886894582426066335756331682205200195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("9.99965326837122789351065801513643019379691746234431978717545032882563543159129029000520238088911519893688798595680083260598269929340163335960195938697476035130411906261845669886681524297055544969116053569875568029319976030656002722062158836225698022385486930605555120535915405105091329811282147529892e-1") }}, - {{ static_cast("1.05363900341240332636516541242599487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("4.51733416318811920042719521006802096962928771972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.36944656525417845173858897538026176879580880507614615066496128471220543538723767528991906038383446820702565624708556443997649629495841259671527437077527127938789704415913380536996498286764720566639200198900869760387706475703380674649201567096875423075710829719565752777057995176317511826228555593581") }}, - {{ static_cast("7.04420993592731428016920358636809851304860785603523254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.83514384888353143665540301299188286066055297851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.42999851704960956730922360017793140547106959683768718211070193339741510527923658661871542385815054985958418322575081567325471819065963185600217971978825670497003073742499873659741487280818814513977323524960437583297927902838999554519027556228317521167236540123085211060151247184818776639943050911394e-2") }}, - {{ static_cast("1.36453344822830520570278167724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("3.64161706602405751964646185570018133148550987243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.04399795038635921897857958256316651977445152567453727222518284598769789391999595233661749274120961391885225992798836625746470159354169324537076101684572935560321844745400772917299981122731280255675880379891143456808614768985468915540339803333726839718219814716863124296189939533443325484535601906033") }}, - {{ static_cast("2.96565824250737205147743225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.51611044873741196425953603466041386127471923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("7.47522068392867838732450708572135930567101005550555468267204809080882851453167258980507378379243415338266777301093835073449659828508711197010120745211201439735694186362327003324753635700543968787946652069972776477402704033680932298818937199049452926851734709666219333409709557278942834445272506685923") }}, - {{ static_cast("3.49571885007329983636736869812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.05030442875070617603228129155468195676803588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00424637003637001346519445137047903985527298734444205998841513031143713650570988838061609722582515075163633719319500702266902153041674931227041528924269656845803454259997891649918404783522081199789884938037449889035577760958358376931686006190221056227385652828889051574541455553647177469994824093880") }}, - {{ static_cast("3.48704350707848789170384407043457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.94470451369696548105103772741131251677870750427246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00348622623956426654419790365515385008204532308719120294458056691444071691627567637464093877906643804041743573926720499607391861016395825332249134843376717727039444569339034648222083969616342813466476442089528251404075917497087087133158228565604726619218594367232783173627524996497743616209681950686") }}, - {{ static_cast("1.56866354052483725212141507654450833797454833984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.92382444394148101329822253546808497048914432525634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.99458548775941655985641049562781270043468152203580071617312952591624765716886645437516907451083025631663787001723138256606416990037410952933773901687094742927210507959414283830075225958048767485241813607677989510714884949211624158456814965576504829085206941026015695802504061055800475236320588403791e-1") }}, - {{ static_cast("3.02555496695998127343329997529508545994758605957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.43476200926107111399687710218131542205810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.07162439112148019358772224877510168973399161717373536875684406796915754460308189843582561832996734392043166689610197386058626738901780367190433337506557349349095623450517180395264699151519926104197461968535179024894054340573408793813826035189319052898390671701445304365679647915192850527101155372317e-12") }}, - {{ static_cast("1.13301057369715999811887741088867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.63391498739915612750661644270167016657069325447082519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00152645922689671305334533143447522531808487470636607472600090062282095427316474560067944838274073843864628772883486893974636361201579261003896147984190781801313303984627253458134496161410984325183430174864002871499528387099093919980953756534711057395376377803880481128200568335684903772454493560544") }}, - {{ static_cast("2.00289080215499270707368850708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("8.63919332962040243728552013635635375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.92699766759603617897105296135509926340232009672802063778499835631207758035200425882438232730073541633716557508264570905405926283429555595877466543065569320408150504538307810614249593452939955155496934950121411097262064539453295031460705244148452908856502571794692573823194011760644101511653087442625e3716") }}, - {{ static_cast("1.32507839540064445080225219442127126967534422874450683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.51887862883488423904054798185825347900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.03647722584318600030967144335207527953463651392633257231597431308252840118498779108498324584815641015064709374407448575779770810144009458027431983385495055750280990347720737478088901276233575808268895728220588756650828610378844764861577519796740508015409537773234457412772265295624580311112182954835e-589") }}, - {{ static_cast("3.57603431414909023189352410554420202970504760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.25925527701659852259155614184749083506176248192787170410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99982482017295343923291140868824543861889706024267738325920940955163642168596277387382324596268313941030962899361898533933991225186157467591500415565798572470081783136017764613428509329263882432996891459823007909353566621634663513526224023265569627278594547455316883257611223218894909706813593928661e-1") }}, - {{ static_cast("6.37895215316995745524764060974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.33606864421000417781498770253278962627518922090530395507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00011705660623425091805720617137318115223118739797033368829524572193511821979599497313069101487866374165387923697805554918674050522785359139471078208862147954503878603840716656103170817064574728416607854591674468869938491395161398773239010400175784333016262331344116781579064223044329496394945074676") }}, - {{ static_cast("7.38104343240080229548993884236551821231842041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.78526096140715813593603800146780713475891388952732086181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992740925564330652806516420746938988010148239633275154076421571630454719695668630175026322867662102076692387029189869547293172340508820534949790931051258505036554857756821592275590340005422029182367955076901146714768419205676755504470790282646601620852828276821380880075367804416790635127471984294e-1") }}, - {{ static_cast("2.24606666462972934823483228683471679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.56224853001515953110356349498033523559570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.01973918494886267810001894567464669163247766970377570638787946610322435627850446066260492108701967988500602281478606685233882133420407449502588207373547970434356681888963673609480451591224779378429762251379481389292664486026843607177275521955621777327928762357765933587555111806380884809909558908126e155") }}, - {{ static_cast("9.00800182710125019180935623808181844651699066162109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.64432725765355242097953691882139537483453750610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.93259995118943779913113450886803213157300236441759177808360979990670369813799397673229074691051859756881735508284831070803950318509897851789286938821324800564473083981421925321740139076048924264684734691750703913517330543410997193207195299362629750503027996358069377923999788650279477370768077765657e-1") }}, - {{ static_cast("9.41820034138939809054136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("7.77419300288664260104552761188045906237675808370113372802734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("1.00000890381075384949081595209139696411199492416870417459364082687864113657489926105641478106668362778068330268736600393352152923274282322515415108939987073582719187381060734722668227714154297709452559911296248629890116220184188866083605360898785001127921221360852853375996265543887873427220880943937") }}, - {{ static_cast("3.73692731999517979007974233240929606836289167404174804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.54122149350758519403825630433857440948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.92632813942166735469252865298175146289395053013193471532530902730842579927583105349449489218906918310069151271847219223504300355763614013961247019308729802033635205970100220700085021558381217246935232153985446384879850169504304149149649141113162707552300166988589633450196697040655835196191118606631e-25") }}, - {{ static_cast("1.36207381223418886456721921263124386314302682876586914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("2.62468618182947011518990620970726013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.23349312978912488484797519539255018773821880984944037182332190114599517402131412348320914129812507474815113624208263309735483442308554370722059051755362465566371079854655405434396337539491832247301779055162543337811300162664812836135792078898777055591459214033387458633919871456241380657515870584905e-1015") }}, - {{ static_cast("4.99439352691324893385171890258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("3.82669140887688854490988887846469879150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.25800762575108176129137940894321369236803059535403474287787709049193999989553876351149791249607106743078893765328229169808063556877194151113548299740103775991789375636892691914854010648529483996498522632062568652379746122433944483375027665116468292026500341138320088041194003298397510386237462266236e179") }}, - {{ static_cast("6.48539296127664783853106200695037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.19081769830710604285428644288913346827030181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01763841928646063179945311430619776672100366204545937731495139936077193534063748395270846081233643612207997993464082794803985613863394615181696471224069637239381759785944556677466232970035407360811317566511537057177507901702757204703329800142152099723806486139061978862458791045685416916469263617024") }}, - {{ static_cast("1.26185358741126574244617586373351514339447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("4.18707874563769861381290482427175447810441255569458007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97208954505633083962348848418154736485944843062550245347612203304547965531131555025237286475690843458460809325029245321285039436520603179307117618768371875438665250167675789128497710216048233584274468422162333906486838232593986287174975031846178589748114260487176217087771250070897293526267935699686e-1") }}, - {{ static_cast("4.35488942342848749831318855285644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.98678835531215099763358011841773986816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.28936120581079817550967747499324146341809782859497306106568788729215792440868081012592482836115918565108733027645928062811796100015424546044055914594061783213133483941275372186699846142681689537346156745852091720729474664315028859269079769914368203114147150204153490030106741528606576208240181832379e2313") }}, - {{ static_cast("9.52079140369027854262640175875276327133178710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.08107909706786978198955750940513098612427711486816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99946912731466247972527890006754510895764819973853843000662583785640845446566388520861934833991540886888853432324685563515222422612660717906957938307798158191679485565611171204322088502967506340693425660800080176478497228519680488062210430869030836704176100634086409155754383655120084467598988079204e-1") }}, - {{ static_cast("1.04090684013030454480031039565801620483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.93673921485533583108917810022830963134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.11210338662691592819619664979726597449100163292683513479170961681889868927958630114518483290408310841588879531996056535646660865328863109763975044243074863201932805945130071457158971557983161341534770079019284360491414192422030250649176833692020314068650401152520803465262499102820988511235853988648e197") }}, - {{ static_cast("1.97149801027129978336915883119218051433563232421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("5.08739590531112617632913952547824010252952575683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.91773157361409781701715493663763866515090466561690289420891165770114164193580683686846646130438934752909209919079027125210567061374829822112866779201464446464651026659338435230202216580437945262368984290532688736997482187636274012593325315635831427955296981578931251003363149110123293975764983649974e-1") }}, - {{ static_cast("2.79971511541740710526937618851661682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.78721875202228321077857486898210481740534305572509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00326623969490901566461359485954800182836515927200276988639325398663724684484176518830065683294723102506600723636309590040090118084917994679575687454329398419185701984750026134555302778342008308134679599723649132979721129657717437355628051914400727321111879908949789141417261266151891576137055521720") }}, - {{ static_cast("6.47180277522192426431502099148929119110107421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("3.54396046637904049703138298355042934417724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("6.11393159288848940315388484390073955173736785149894558116032886653088516351969818186256818732041463123159800744120590173108691581334056179094211775690837141959813271450679799058611736101514220405786918675156348944553549256908731766892776136986705072991002327432436231317606705791658862062772822668961e-5") }}, - {{ static_cast("4.68478493824730685446411371231079101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("8.08503458490309867556788958609104156494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.97762155395492793734284548790084346203097684458052431296538227291993735975496781864258983550151454075639982388971649044469779839674940147551147838593024539580668837295332526092577626791361518961708496544368414553255175123291725694241746786254191457634438577633532650001615818789185478534006606741407e296") }}, - {{ static_cast("1.54391459551929816074178347662382293492555618286132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("9.30291502045438312151759419066365808248519897460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.61942064374907006758472323953419672912600288860094391695046538452658427001421356899386802781741233841276963853691331000772213773371503948038327239870459585412114416103967368390201886001946927622637207918880459451317082626408706757400699845882572764664471363683650469561537447695573432201521718527705e-1") }}, - {{ static_cast("6.48003875925739691865601344034075736999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.26121082452632900412770045051047418382950127124786376953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00006094496769763278820872383817879036100529479018908630432836412716347076273911182394224909321200839758060396148281450949863621182268008379068612869939290370399199699187329868380547441347229000962054100848350577521278040241049817698210922858722233509600098748764436396006044192563867258556456726002") }}, - {{ static_cast("1.02255146268133501052943756803870201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("5.89932691098755263015007699323177803307771682739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00013156917767091552599892235129254853484398955770015153844565825349128084659104946293310766324345122756751921898192510410177121820174080396618577123202206891707775599129806431636068338328182197155856712217515198962725685962829886150997851437588418591804207516238583892908865355284748545102405714042") }}, - {{ static_cast("2.81888129121324254811042919754981994628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("4.07352602363188209810829221169115044176578521728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02324693289074461806065314601130588099455748535483252525100029761881094483032981058215632709470546862166291555062468221229877852679809354657976457141823806639541535849041446001105725715917762334478759524935613974359759936992996718201195710259035985781666122257084622777055529931477121573215140197696") }}, - {{ static_cast("2.07185404527926539820087414867089137260336428880691528320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.35292300705978618680092040449380874633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("8.48850440195174823298359540121818302112603372945421421598869878434979555804675505735326375593302973038814914197710751833892726619856756218734694899102028024355384042325664532283875944124268902285546831042825514027899847395159917919088321233227951525026080119430650746383889735094027434636578283016912e-26") }}, - {{ static_cast("4.31935286049695476781606906513388821622356772422790527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.67446027602891164636454701675205569699755869805812835693359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99973122517169758868298611393816315674468708382437784046013092517874934197350186005397961789565235843871109955511656116413964407693637441952651815512224774438246717669200447114406421198392169132912944363201879586414171509537947822165122722681222879324770937027844102716000158168894762456660415032672e-1") }}, - {{ static_cast("5.60728659565255868472196526530737514804059173911809921264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.38030853130188620203101790284705430167377926409244537353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99990816207746297627000228090032149940299388165914304992280548917955938225443662692605137525666097388080408339273626056667955459490552137971306327684500228508064672496432612203803093818358636762048072433804065084080756285538210846111127149390742779965190790248566867146590543170273767758612958658971e-1") }}, - {{ static_cast("4.94365872790929563630746290670003872946836054325103759765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("6.08107286586160853403271175920963287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.41889634080305711655291544430541860422410170311666966191109605478799772032330347327796646352426019590688459329571978188218768772574725991603534645626444629132445446486278236532522655245444099755490849273965885852698636839519891473821647868673766453693048753250768728056307822453273785810806442880557e-262") }}, - {{ static_cast("4.57863041241061873733997344970703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.27996139284958445614392985589802265167236328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.85252911535679891073378835901479886089967576299789401385670015780551662533990060451545346245206661914640102653229509656129118798311517873586006356564037704026911300448200277564257378774264510533411693099418541902845247573044373703549276907520323049567611007543654341177174512295005876331502328496351e72") }}, - {{ static_cast("2.08423524510303792567356140352785587310791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.35070210371325316600632504560053348541259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.69650994818884808551478851790421398330849110943521821889862054443832715742450095948994740658527477301306542925058870703929885411081233767845292798598894899925369153906803097693018622562446710881324699679389099964263723003154543262693904642747226514772235244787350437914151428906711221635213885798789") }}, - {{ static_cast("7.03507355339941797822689295571763068437576293945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.66736311094788106856867671012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("7.68909935340978860422757035820741960584342288164122209394216788923406587897458745269054408633969378408300698489680800368145152233150125878615072546588959342193206959268161227822392820692595901101440058139059566058188384350410226233241151749648406111214064140648607944967440645591239738930953785109368e-1000") }}, - {{ static_cast("4.44777561798017704859375953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("4.37314005329937316446375916711986064910888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.12314549862845492717877595964768115546325186339715764453604920761210996544623734651949041265076846799054130789000520895961692269440989421981634150513113011053879079524507516981642085862682964932699084859566571367826867471772759871670601934760070910316789800074922999274803369631048113774053097073929e20") }}, - {{ static_cast("4.78949184649386006640270352363586425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("1.79183351174304107189527712762355804443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.79637132177375382162263956935980813855595791264327736518378404210637984016731507340572257630052502643907564502937056932274446805895054500000116906646009851736492937513833076602489625307279653461589071484812740516746714953908730424736460829219077432204380475346934742691432944334479643432469277088306e659") }}, - {{ static_cast("6.22325830215437599690631031990051269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("2.25225952793516384642380501190928043797612190246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01987069469372759270453628912642728954230513534833089604954661995171725801656380902963421144934906141234552439696120736550210382743489449329697576830407056888118360526079463661066722214220114165138840831176499526985462507289995825151030297233511088604059436353741508088143154130210563278515547311543") }}, - {{ static_cast("9.12400440701637786139466257395724824164062738418579101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("2.34400553054916376341521022652614192338660359382629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("9.97821977486950583166084719161557689663568325790003522306021158417755185644936647878316368235185593329253132043532554677812935724747863173935255764658313396824835230126055857216828346612262350441572667853382236006603976105644273478945602579828808105896550462847104108659412377316272488653010471184196e-1") }}, - {{ static_cast("1.33795627811531119277788093313574790954589843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.48183812852515298791582915027831290899484883993864059448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000384349299045776862801360403732363545774843774701655200272080627739941386437175886379606902727479191090187794979610761904053274682140855025508483613322969568848488035529156236560186742600966591613965074184599845133474883618868818832890976311295886503114503738779326119140373893527826165039256344") }}, - {{ static_cast("7.06939041310026368591934442520141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("7.52070113177227312917239032685756683349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.16601617096668251300410633861451144300904853213668949893514704576723535839139585890152639279492333481781656085682222252609689619088940700517823681224990153082715763605916833922234577262387169239662906567674441665483003247288718595609022710170750805174093013421029787059183231600348513197446175716344e289") }}, - {{ static_cast("1.46809474819978857951241479895543307065963745117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("6.55150258058036227826192998691112734377384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.87508829078291473496350060709599928627355203095913409392108636898471105714839831302147923025254259824329731513966469918955762532776229610929533035120642195606951641982085398951090528368050382553009140996960228822308531093162518295270230167711636888797942089811261515649759631850124542086583338696866e-1") }}, - {{ static_cast("2.13403424835757107302924850955605506896972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("6.74881959702026967828913939229096285998821258544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.02087023232278898673025082821180943357336233310089987611387411667231521549575677239762600896132782138671932320359043850059141855317509884880628897347559802452573752440941620827448739200875424446592178873469737214134752340014718109265906882735838254335143242217171430272779729156476847140495477447567") }}, - {{ static_cast("7.95233844752690766100045038911048322916030883789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("2.84851678481346848315070019452832639217376708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.52320441273088937482705455163451804728010853035570734024869989669472225400000323970014547943529070869582874785761555559916107563529628329435884632549334664560080647778917243975126257892837384804686623525333256233581024540617818741704180357848449262419278792476592443919338009722004675820379508226554e-1") }}, - {{ static_cast("4.86469155616132400629658683044453937327489256858825683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("5.22877434444638661270587931539921555668115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.49398596693121402232511551773946216238940594887656584112333721649128338309222255715733045830942439483758414668436262063880698192055748811167639524982228502529443333539688201437948685066022343441584667892362197265423697997073104183476242310932155094648160217817878533689247152065556146288540676206268e-1") }}, - {{ static_cast("9.97061023610679164619341463549062609672546386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("5.88064355210892131253785919398069381713867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.31339250305317586137103280435203540286641209041963686984564977317675267872546421630007855518104235103746292194256810045376453068069833982650717834727768128915903290190711155087191155109113681049655966851631090461344965018352997694452739029417934674832819743056725077543693812469593253205921308221308e-59") }}, - {{ static_cast("9.25067228877758662708430392740410752594470977783203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("6.58041095700439004900772488326765596866607666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("7.34794411703227640768834559037146678081237450497151808641284692857257405073921261445846307144839876248119821368257643009964194784066475970698686506948363255089072439573285741549161564675949811535766568038690509602693098394199576228057991570285009737564027696021280582562413585412543950911326853262100e-1") }}, - {{ static_cast("1.27144511159262219734955579042434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3"), static_cast("6.18836319449928007330186119361314922571182250976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.55634262177085310455272777009125596103461766420555774353254576944288801886851836915203973701385795773437574206488784269131348804974222211728133676956373754063980028710578189114584286886146802067657659439377822750677886486205610448378645450751753499248735236114037268909383185086028320044219137753422") }}, - {{ static_cast("1.42205871841051475712447427213191986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.49175822061007323782177991233766078948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.31499443769464065089935605375459683035642863575091614297392875457512297919442473147075015935528487370816930373009973708163470195938036050657595355692444453780282744702410807810566482106290630446087507470829783752836539009991223629616484834464198297022741851935670638283977884632514115384409382379451e5") }}, - {{ static_cast("1.79830846471683798881713300943374633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("5.15740741801222002740900940409574104705825448036193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.00026780930725147708425182905646433452420215464014520968261578887024273841780021979940791064143678705875846798937060716374571767664452465951073901977576420551043883735274454852404885141087100496560513919957329201186421887438051030917217421635429456043545707951122601188323754670287140035060211268236") }}, - {{ static_cast("1.41617493747205998033678042702376842498779296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.06659473408631241819755075539433164522051811218261718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.00214037426842670551611147350147052752193345171802567422360034056719592273707967867550926051192650203531759829732673928643729296057128383914827597014066465351929167430158631190618779931772000386360976972135737607634338444086468691888473748375182457345550820744493891034677687786078596412978684852640") }}, - {{ static_cast("3.03620445696295947202170140144517063163220882415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4"), static_cast("1.77755559529355344761114565699244849383831024169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.65907453809699509460147409829901675941527854788885630333979265214696163822247505595008528776776735251807610239492515526114770917079309768787319965003601255566849812163333057688474056980168539317656182802355025321396669769362336327872219770789870937515083196007462468888621524361865732646086424336453e-1") }}, - {{ static_cast("1.88150796984490007162094116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.96075222779542400530772283673286437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.33268783679377583213014321394305562443708551652324893198731298378098553656636607906131354129802125769805603337990709647117721910862833606977379369954861887407787985331605230823250624512728814254652735899657072127956911865541366861599183456838203731048557393074731179271410020592240238165188774584943e838") }}, - {{ static_cast("8.89727582886910006720881938235834240913391113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("1.04127996077174773958962106235048850066959857940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("9.99878344302358244722248144111222437762654865779811772935718213218215174416593116585765566781129897695750076434329093650632173287168263229734935010362448649517261601361617830618010680773234135778887817284697256494192909633866400288905649938277337678717548098982509457693289514879908537721749577461800e-1") }}, - {{ static_cast("1.83083205221824460440238624414632795378565788269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("8.51305815268083279079291969537734985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("5.08759465190948202575969824985581134108808966132826957045953621966485495100532942367792704772987024490520063202480279983957515910756497430137889290866515761789926914423548570454774810411630371091100113544891279153106437138536746735808516608107152208446229082973737250416694137957514739571766896873306e-404") }}, - {{ static_cast("3.34665340825903966375139131361748923154664225876331329345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.78685988588032159896101802587509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("3.52212078787830927194297643296251781134291925779877466674871728836105722487573580131785145484495276918545575844013070305855330551951353365366550132397674036846629030890995284036782751533644901503503905390007269189142085867922573306793968734446410118933272999821289312420310855129959801669881803865858e-2074") }}, - {{ static_cast("5.33927735030905274151661471515595280834531877189874649047851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("6.20766189867572767122939902950662371949874795973300933837890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("9.99991034310800110010707678195555035460840436574922962233018600570397473321611757701145927433415065972844383465094874922585959664097551124468322387734536918015102243687653110114625528443011692213994065730522520240541725522418247328328568974843758308408263849244150678651666777627782107985602066092068e-1") }}, - {{ static_cast("2.19994195074324068173154955729842185974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.06707480325778616969678580517211230471730232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.00952545862365855685219042115608145190455235613268820530406120489310419092421063376518661644406509494089174786391890344365290616699827245940846567812410266752069452669091303167176618868615804832415636793311353407444727299687139263635273616648724056070625009496090575286667611858626054037393426920940") }}, - {{ static_cast("9.49426131626506853745939285005306373932398855686187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("3.33658593189578134285966370953246951103210449218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1"), static_cast("2.10953513637051167906362488703903898283324995313357160919327331939686921714903739192273840983847338772103005796728222224591772689334463276313863779738778665022741134644128703431090827473653846081611135627094959784765932765625500258444912393296945910143335619574776807349923037475968356403544804516261e-2") }}, - {{ static_cast("1.58204381201744226359551248606294393539428710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("1.69967088875234341601404286503651519524282775819301605224609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("1.00000077966919198536118506000604021848342587459233214812502825319036185927111842640720441778472762148840769009480654434988580516960635247026640481971290957649218368276357248615028690535272593446475039055115505472342603119011692356413204456935489635677140077206818440909527541341514742179392759484948") }}, - {{ static_cast("7.89159836081502775182242026552614788670325651764869689941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), static_cast("4.81696106146368038025684654712677001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("1.94147359401180853490618926342983857830809890106752620847948172427377774972592621604834694930262822082783398795004418901297871494637794539318032606545630879764294273346094400196886499691750495365869112152459387957968585556903274684614177896724684391146995388586545846815713970966406314356957705636188e-2940") }}, - {{ static_cast("1.28909708384213387034833431243896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("6.93039877413820920581954965200566221028566360473632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.08496647090160629262865176257751429047729744058064486558757367783712447981236338124011887293782800275409466363098994983981904989007840757365461380428739706364354348918768376442904733609028311603151255847131247523710764847675936168535507206845244124708518371354311381017836653040028826211975497871572") }}, - {{ static_cast("1.88979339146257488413205294364161090925335884094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.50746279790036936674368917010724544525146484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("8.76918423991144038304021445193438173201942067819279237648900596695575024236585474624026460405210909663314261583560910578839787952809598740673148266220449752385049510413309645447866767727463403580780664879153239139760411591518829772808581212853680494395035365090735562853954119264286528501466090236373e-42") }}, - {{ static_cast("8.41517212362860789198748534545302391052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("3.64690954096749919699504971504211425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.36385641555849335879047779054573450503531219143280186506059811952516602814802026798922317458022305556248077861115239238036534162971730930403784483407045473794360984711531633071954017599185535725837014265828161774595330813847033913388549400091383297967089159291617295023155265969142242902513558326176e3") }}, - {{ static_cast("7.79453915372945402850746177136898040771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.37570185974411316465193522162735462188720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("1.06022076559461302576262215724290203547920286581395364873074659478022575993646868223512587189711310741927159850526321306597320278985726000202501743927791980296512242522543006053260060771089791556404973296770985910119125940674256012428243689156025466514102435785983398909290409351186888763744330929933e26") }}, - {{ static_cast("1.53996830801468109712004661560058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("1.55753945580631575351659989792096894234418869018554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("1.20447431374301175187511662239775886280442123057569989101048717965641664163683965122530380365781626549245733448495292659434928101251174655724999866929500920292760069066534315397658186379331270528348085084759405281722204998903474609597521346801285181467380964556686904383585877178604246579963496131145") }}, - {{ static_cast("1.58292085642406949773430824279785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5"), static_cast("2.39839658341223938009534322191029787063598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.95369184630899349835322600435195771430552393938403392920497743251505007693757163085390208500076347439614593692001276141903681987497427879862172599262551403341684739246319058993775975522937386429303489479759146923528741632009619169067978673180741577543638362298805900307916877489621750277562246056785e12") }}, - {{ static_cast("1.34007962789787852670997381210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4"), static_cast("1.93078487352859630432622140006060362793505191802978515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3"), static_cast("1.01851774851557016267678896947673493426952146980838508956199625705868791978344101642179134412654468177801448310465798049263061832294449615311708734175434429497593168411288076223275335865898358255932555661831601275564405349791579099870920484601878548075981946266790952650050188664408833668093366337128") }}, - {{ static_cast("6.57565090460510646153124980628490447998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("2.95349579102368409166956553235650062561035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("4.92883670959819008737323351550818895693909971573197862669756297233542900030950953480711710193053129535412775508169382249001427538228339649766961919628309117712145393012207284297044617755253176225355208718450804357511545954540599873761726532747435308616642768909463909723766874135347528684022648860560e53") }}, - {{ static_cast("7.73401481707858096115160151384770870208740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), static_cast("2.49148120277696079938323237001895904541015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2"), static_cast("2.21022119284238444262099118632640694751857489911985882302778583637174384391251394588072250813144879442061174245455228341031066580984347413608919792407019123272438031870871777573323381609534176617167457318208979616222032754767955294734636001910121462806120247278470491361024670390806812831433737112379e221") }}, - {{ static_cast("1.10978898863228390113400134708854238851927220821380615234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5"), static_cast("1.32219377403916382718307431787252426147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1"), static_cast("3.07947867569658321194458380597181231565685445537647073748124994390202466909582021155440785847623999110729024670271166064504654713592331835440877924887265726281088902886492996205474623955394661696347608605548560131153946508949187941058346142181719469523416895370937975489878692955467549849494731965625e-66") }}, - {{ static_cast("6.01388538493091151515557157836155965924263000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("2.60022931107700908527451122420615092778461985290050506591796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), static_cast("9.99992690524283092045041727666257712294170472055655983655789156306985603524706361035867762480294454684826579379760817381252880474747063748101481751389649370586878847928039436815138481244723824252557644191693486953238362877605577315573573222917218930477592061427550313462645068276263623663297863327092e-1") }}, - {{ static_cast("2.15534801432384071073755649194936268031597137451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("4.05812814671632215990371150837745517492294311523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2"), static_cast("8.55799445393602464144976083125961944702079982479924287374752573999342183140040918969698718557087349720031284500593972794455976395816766982409031253828819168807248785638632014800512514311905184872890032777260194266023572565329278809193542262172193713145497824126566400120337339261082686915643720103934e-1") }}, + {{ "9.85291419463953934609889984130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "8.41670862661703722551465034484863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "8.66781019918879108354226292713799369912745098619466567318041467361236175866573114777000418440761829061824953361563557580935951901405814080757565313129904800947783606850513184296612628910656615168927761935861462770335134108408073175949783551491164949747086136599355880600420490275164555515512645668845e4202" }}, + {{ "1.65291435510970359246130101382732391357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.93652894786225093781695250072516500949859619140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.14852190138491736562279120519668390081141778746743826681517181158751264571350304943298501284647564489716027476004029804110782430201351750715968215799574772058637701195873519618784612525011353325208230847515250406858209757415407239793739704829281917272032288615255140733409015874140869835291148547238" }}, + {{ "2.95673953882856110908505797851830720901489257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.30915509717990971694234758615493774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "9.16137091634529046709182958669115589757019722367818747705232600776240821857227718551873067599347313641575272826830417174591636547915061517391300131065931465784194067711359196329143298499263726513131614582697830908424187934868152998838921216586737465291051289708299364409624364999366486746226077050764e249" }}, + {{ "6.08581487679821513288314083212071636808104813098907470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "7.65778516457987279864028096199035644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.27056224622668410282266686919173718609676411389459024877282902746284033954589536288634973757568176464096389580016576960309487231057438455595655805167665817497028295657665023126747065443986739792258870082022889306909488139458069146748438042701949551909468708242176394539901613782225328586614222105675e-3229" }}, + {{ "2.72264614486854572561469467473216354846954345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.86954434555903360043460637029966164845973253250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.99366682241962146368589809577120011723198308450433185299366732500677873637460155970547267099719914327909694930518383012498797681761846242526638144261306834523078708261122471803832490341687603813336927181436827534082878781252668704774445437548691251936499670077735883150461534069270846997649139259014e-1" }}, + {{ "1.15866069758449596882599053060403093695640563964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.91253262757665787319183436920866370201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.46868982488456565751167443881314840659743514173491612010770748877346398177489343237604160804413931931718223750314831998907846386274396179552445359933868165880372381338724806279781831953896898649659594755834925976964179275873971118494605322798850925802574178528777014182338769959249415096934378557388e-1" }}, + {{ "4.72825938314130529761314392089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.22893132739781236750786774791777133941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.47245157077269889091085696140795527282280334677569169487973419233796250189843816560261965111196061138868370890204338231535198008079068304184762140493830719955323588998399173073261634891767823614143691840392792367527470000847416054709559319143615840412839768396194451923527439592939735228732869467965e69" }}, + {{ "1.29556572255334176588803529739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.81521083299418428680382930906489491462707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.91729899451736210436889587963352494969987265352294254442114149825297350300933403119961677078224257818567229354512108221647637427508041941647518586565006416113534560289731038664091154857692367872604020422463457596747145816854139701847749519264660326361171185139298113322096978245544144264234481020815e7" }}, + {{ "1.74305909145137593441177159547805786132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.55727459709495003048473904527781996876001358032226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.12324923143821767715038683964417533829057341785931080679952341815408539775130405061465897612861320390765996927155081774925717154208894105154455487856335006846587865128269477586014136390788140643457017602926503892493119037260205017744346004538379559837051387829449807650507431889923695496342461088404" }}, + {{ "5.94723096329786358182900585234165191650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.47960584914021491681479503199625469278544187545776367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00101355895664265703253905800820834352012946978175213925289823900262226487475877307647753894219794796436589570196875943062842928843129407133278574235943906905626144071246066853301987332156463703818534415183682692042219695734377740067313312425523058170350486981674302932951851973390826740834796342180" }}, + {{ "1.68908811949766600121487086783034214931831229478120803833007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "7.31583500510190560817136429250240325927734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.06485337562137503941405427253471002412719863672407294570575625371322654317127374055512455786988091092329605000808871766177184698431732837248355728401235010135527651826220232715652024742668291949645619992685612328535253252695622896976648954823150769316159100729259724133493553742448044299816541989455e-423" }}, + {{ "4.72470471679805708838453814912838879536138847470283508300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.93150097545414496380544733256101608276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.36613880262643802742756290736395850668317512466586871167321608424137867570108690626258507320043808302565319397131444616166042735793688809613906106252620462557968555895414582976985576875374557668514391264049547180886976991031038592004458693177738810104222966751846844587127740341157319952915743398285e-103" }}, + {{ "5.42042332941097132481544917936844285577535629272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "2.51174849138805500459170616522897034883499145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.77171703127754502681310204125715941650801721154976863870699221072355335125966565182666925044598746890911836338141033359039531496488403405876863230608143768785806156629534985369811294999635059473513624761915818310578096052710097713441725036078711101258417410421951107958524860020565804089659046743943e-1" }}, + {{ "1.03814929656497190180175493878778070211410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.02775539432865528274851918411059159552678465843200683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99908769642175788386137778958539300137602918424410284952085874015336769726750047569734816766197409755257562872230833189101650544474710424482558254479079319860825174137124403380959665595507587367668848404286717760343524270837960434045414179621713212480893218438355518348995643697164109731552178914851e-1" }}, + {{ "3.82635641630229656584560871124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "3.04696645144304778529686927868169732391834259033203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.02545504718938094372102791727911930176506035001600018053644429991055918696319033730794852043021666923875675436795843500904336366408589219201909169612259476814126333181168932741070039124737361896932592045285182764869916877379718622220890978571031406624988992549594836404906978120992311725853941493659" }}, + {{ "1.33672486906479148771609288814943283796310424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.20701621203230615719803608953952789306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.82608741435940656086722594561546646099634760918110959565977761208896418216166536561903222226214939613599640463597249764023513875896636280664458251642404729724932181291845871312202787897768372355186920789243514016890287945724482698867187289280837997988218972650355222505584789955736058952829050123955e-11" }}, + {{ "7.88803854908014727698173373937606811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.46278561425722486433187441434711217880249023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.72840141730863663391876877521764355960382145920572562742914162972208384723706307292705275033115082012368548682595775882643927894139786449383322664316773126131611883398659050539189893838100041408464889082404113404032943316931275847874983317572290683797208861989532362102600980996636385789799495020849e4" }}, + {{ "6.02908445011699427595885936170816421508789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.73159824509963122807221225230023264884948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.06403097260563050081855800637166449495962164712719263330810086375883439970326530663445685346228862337912240907582664457942174627433334293660419014781254710335542481599007896808711916825623070383641755045318205803207383228319360990374222920104547227487223738392731388028498147565624523546346417715655" }}, + {{ "5.21882079270016063787807070184499025344848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.00797343550563134328967862529680132865905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "9.36552325485277806964373331313098838333278330423455390715861973295876349888773267892681165876113176797510574847645252615081953879524429911159719101193921387688552351634752458416166446355778230365755243829643708299147847893065939954861919388676503519612640610354931769525373202729617723199328630093636e-1" }}, + {{ "6.21172003041995424155174987390637397766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.60919435020819194006019142717534009534574579447507858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000157241706535645559625081132898066253320364132991765749046567536915342813631920409642832019004224458248512335711478395060579077427182783938451114029622700384959716532968625901664719629811957905865676402174328291417935322613778738659214041802729741480722967793087943757739011593472415850478420639" }}, + {{ "8.93348943116835901567807098899720585905015468597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.15322293979125788609962910413742065429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.91021563983953636397848520840523223624643742835964326188016961937573012460753870407293657436708430593126320103796954182972032017026192445957161066771807675200884423939605981304732630092257312925408813941089831976477439943114677798839623996214029155361569909503935179401196449493080818512569086682097e-1267" }}, + {{ "5.55105519395504379644989967346191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "2.20561294990389011871911861817352473735809326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.11282177288045201072507504088709286277978249266318510332909847928909226338145185595245293917086320817076726850666066198249106037631163063795831697507293260413136608221812252367908447186422344164553977681855896096040438700902356349275031836676568495994537852124264298684105398360497193752327260914137e1" }}, + {{ "2.64139377644600310476863391784263512818142771720886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "7.78537344498752810831310178230069141136482357978820800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99179632299559171314926709030763809736309139005374052895886931807671532458904052556141342139885810036321222015645710865315806166952058325774560966552187527103940189373824279065702873017246336399071137612269219545181070886990906061668084063703411460250321467244169857420435253409159030432098292621067e-1" }}, + {{ "1.04207364225271594477817416191101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "9.49096324860676521240065994788892567157745361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00881927761618177965011845644574187803759898330801723609976606642566910129111150781463974721119043760111173993259232795682413324213317011846206782754096089290427628991647487342082014619699610677423897602146820644840945077548746946762791624180147374361784328110343084702444523109612274014821745626982" }}, + {{ "3.31519320566263809429985442989163857419043779373168945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "5.69130350190431280252290058285780105507001280784606933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99544126695324189746630737456946723361046661345027805407888971023026631339988056392642825478722792254481831582440796961181158845762815786131168245934078509438401554967954057934563178474479427510608187860234090448388699710858468168174057416883471915845617321874136073232354461932587707630236256378020e-1" }}, + {{ "1.88337177923367888807137937590141518739983439445495605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.32540268863411711208755150437355041503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.75229630554212330195665922771148699451829771147200356624805857657236782065140481467338634818457146889580617522654929450001033313425457042558128784684181381335537144806647956114444609625124141647264003246426211941949785732284342909061255617831919446477154897012961652269654460432165747451828975060062e-1612" }}, + {{ "3.95459290525709050712066527921706438064575195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.67791671378427392183514677004296800078009255230426788330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99997515679857005761440503886095927815406391244413835291624899797364615653895949902813000744851723242602512239539568754651988070279277456656779917196036522934849059282355864096704432345340316634144618927930200708582994637711792811242475638942101629267185320507818308058050356385241284795438747530570e-1" }}, + {{ "4.18765706320910169324633898213505744934082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.16291806714740175721090054139494895935058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.21448401185251170746394861880464242649255630391558005989017991140563422704674077045117022763467561974222030061746655113958910240758539727055748249625892285904547489203480154655618632992990390332430221914382681227157928848406067945057161854616129785541408035327136685741399621377579757754012545382969e1" }}, + {{ "1.28834086985551640736069600734481355175375938415527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.50705923255961032891647732867568265646696090698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.76932835372685523370171735287063726416767225734834615849134547109660778793799398169080725972094573408844765674179657286895933198717192952354877012591779343412877647689917686841315165602494901218010719779271020694334581849406783713948998204010537229621398578990055098138781426451663477493080600789821e-1" }}, + {{ "2.09720612044679288743509459891356527805328369140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "4.58040082173553630973117378744063898921012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.37769288971832154015429547694831033608424622845142547611771987181607855769209591840464089347717993026475816138178319620101164703046235086673631394869476080594839931563796671833715053698127488579638544943331524253087769152813629459325853986427109398088052746438762088357925061124187186100435982047033e-1" }}, + {{ "2.86348409095251425380765364359092473023338243365287780761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.66147340815298694138846258283592760562896728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.19957610695947876947018322120150143406142221469373757924519795345150006977773403730313023369079301615734601162566867121616810596830759956044509310651071485457850172811241087990683705383118703983140409701647142571470333867908682196499347683237058377349085352136214854181401946343510795949868835711429e-1" }}, + {{ "1.43297873345568077638745307922363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.41681240009364082165985165850941029930254444479942321777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00016822776212044529668140515271000711944889104836686684000447554242511520504646895662976301872271981369559245931879055379226726537073846553544561947637792091890791964244339592472180091648456672557297620691698497967178088487062658421331764320606009571740080394934111049676474128724114098218934644280" }}, + {{ "3.60098653144944158555063040694221854209899902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.03376339210932499668160744477063417434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.25275538744154336055615419863736730746930928726962752118772852620054361808569416481449220736645770958820155429279907622983889720952174836443567087662689941130263300184594808723215176724531461369529244321399979413684112346655770810116945662086924599874483949305102682382993398648882273436739947930631e-1" }}, + {{ "5.29540201171499924810703863187200113316066563129425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "4.56136148696097143417915731333778239786624908447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.56082033932816309081231125453071826327896674917466727856568147854623107132514590973229074834141556000908164346345063684708226886531162257152516511661460364047957606893852284251293056880030888612998267350454535860387161852393199580592248818623376237183284153405740445167284591706260229351268548628924e-1" }}, + {{ "1.44301800298425852986383688403293490409851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.14308392953894662376346236243307430413551628589630126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000261963485792416853927136569198682383793838454319729684734973539039182323306199235318171814360855994012568229358281529883676852371448365509202038288834881570383584403906835594533516647281713968932211752518665238323196577224701747937440185305151190908616249351775361542696295892178890063882257116" }}, + {{ "6.22803809629584627372000937839402467943727970123291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "3.25094187232484732597015408828156068921089172363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.86658469541403998034943500870243069476823132486007751990824694615782893644279173776512596334159142603325455113617967643461939139102971978114976150505918018758878971981207590718138194009315889095960072548673588879789986017926322494375432269097377546556386620403909103214427884440798206932883636297352e-1" }}, + {{ "9.85553619558515492826700210571289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.19375835372379413001908687874674797058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.69327012293708811121144971175263370083910101169553278058859848877086709080419562447585355719348842415619132355236627485649548952876411849102018675375354238273102815474095986357261970461229247085634624604985094330242448976955585994530902647027597520370418448678147789523361182103563378206595110636366e6" }}, + {{ "3.58793922164308502070761974778179137501865625381469726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "6.91828844531360287462007363501470535993576049804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.77635990889125108309690852819112724262223736693646969131631611067612444282401471024845889526676870050656945639578159737127915466435929600368572355785708484463627825178182883323088006398240693308602881027224033181200011330121428663774743869527395379215026638702157803494202819893449358544841576526785e-1" }}, + {{ "4.96146848614257760345935821533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "5.36919182658175953015700088144512847065925598144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.57915370211935194723362359441601671775858730114448762856923579370262681814508708674839371719677055754578289843591415190008400693094242195743768201495967775525358591358166609121796030602701836084062498854380733868656008519376928763241674707747769169741392588580100945268376807756367217092609019332523" }}, + {{ "4.24495621335822494657116776828331694559892639517784118652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "2.41273133041338017079624478355981409549713134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.05650148888948869811331120941963319541414375806822687983830138205938420862200064078576598469877831249406211581526927963122105281131255004573845222711684347603254852806653766035434125383812586900316395999300527269121533046942253679078218107723668449508163238533047093749711627477323541829484653131292e-2" }}, + {{ "4.48640427032238338142633438110351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.57545512531989570200255390552968037809478119015693664550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00002050314697607659431018359659361183713303212753613120902527904331498111603138394334757418054814218670389608976827498549914166555768752494414195237102560486571709642923543196007200071132086884670852209514113439317507321835737223329599950365222037362534859303381396326717532288233329927808913598785" }}, + {{ "6.49749570902381674386560916900634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.67233186866778105184039304731413722038269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.37780724079840208711014533649991541109470796504084314835156759344214993302863952807171583660778803863957191115559320339273255056520571556246744533838811694006166732957726755945662570959533321672076547914911635593118101608294069731654269467619949055336628326621660012876406202543146880009002104821553e6" }}, + {{ "6.09674367112420512171411246526986360549926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.57044841435982965565515412365016345574986189603805541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99995606813099499267634389464438683850041060806908350269346321155672893761130577244819124593817984249660934044363638948086248241297434338993626965911693249278796597285537898160766381999495115463474497883772569241592760426493272254012575287314033420480717621539078495596903806489817283498263020744184e-1" }}, + {{ "7.57503455130639213876975190942175686359405517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.25659927896368083096931278497265793703263625502586364746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99967576340235983529748322865757677186118554170023614050204881657758768441183672920424294568610952334609747551908015545068832481235294176033402023954402315837530793201944548984799957607361928025651266738940647431602585783131780321746876553060340085541214977820888348264644079307051095179685852079945e-1" }}, + {{ "7.23094922542264449683013793901409371756017208099365234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.59957635240683257102367598179171181982383131980895996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98843860017333489092110505899347130551976013147438321970353479326257793437223848104429707854561661175450570835038515201752789245106905767296900600611401551754756721658819816241278926439311942572630487380703760937536160330693843537976099522621025621041857521661138411993182809798954282325807746896512e-1" }}, + {{ "2.22347866336470469832420349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "2.67574314969844628819828358246013522148132324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.45597650920700334896440864288586774552136744768533970151074149218272851829624764505239431335468131476208480181217427109189696065749387968903474055278714181692867425657254225967806378137696550459591101296481511902742572646395696145586249150843548288850238158312747067673295059110101209836587291678717e1" }}, + {{ "1.61969754204121987178899289006039907690137624740600585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "4.98433649539913870007978857756825163960456848144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.77061455335439039778043359172467746025200146785630273407892949860314031306268447375871357416922980298986141833641561954857127992214135487677696097641048847861017455164355255934271546462888696419881919311556223441720520985938735112636787538160901409982382930452852563601752376961873325250302513132303e-1" }}, + {{ "1.10785802837759378425275258450710680335760116577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.18652221207551884308087353225857896177330985665321350097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99946575396258084502018839446238846584110705812867877643924485585779113197512036317728340100285410504878437697437320927763146715271389949541429089452281046460116468251613835907291530307473134875676645637754443536935426771393775580503285493873005924313301673550096584687732186248324962291699197441007e-1" }}, + {{ "4.00900856150933880290426758463695477985311299562454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.51532437768501453796091832382231245901493821293115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99981169291887424157759932262067246066753044936086128253970315838989839817149914187581608688565806547274970455207936904774502513857569845689591879527047150474914557088218340646463900082270385606124499095033110795779754466447281328092278318076549095302554108789079991538595665731579745334006426859960e-1" }}, + {{ "1.19021350263737038868705475636033952469006180763244628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.68290288542928294646117137745022773742675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "9.04852417540620009944566041453719467211390230149498516011819535440728246929538100576552383464173953438153608848998091884909329517100819960017904887302473398843345408874822800579053111675353115760245493436345787702548498655314405766561270926511701674435330529881522800583133171192665005622617374333010e-67" }}, + {{ "3.24276265467208501549166432820214822640991769731044769287109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "4.45408954542178808083674468321078165899962186813354492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.94386254687686946963322383552185492075977337531973213930838015838274376322044860137122810561067818353529641305366066211688682157075369267213623551618566522232634253178245524174116891287095569137130501326353904791232655125453161983083517758472031555434930112729665552915867163490039363051308443099856e-1" }}, + {{ "6.15810616566200508259498747065663337707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.16615056291079111083774932922096922993659973144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "9.84767212442093730437806115126470445228033445461780019945996712538430276008229376762120777978183512697217805509135802054380845495119030204478634136438561790634012659775242132306345870420149133737299397362388964674004273429551607587049902912378874846355087545159480302396357641147726629312485985544367e-1" }}, + {{ "4.98639800075090606696903705596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.77610720170316863455745731714685575752810109406709671020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00001921243238237193183827489311170506446717993399056537282384027062526108337893488664380391849139457202726524784919352515463921911589077429652463880766791641171380378763553978844617450998857121720620679684506344842701809891676387117033562056914974016308650056416678855410514380179891286420315463385" }}, + {{ "1.39829478131476389535237103700637817382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "3.43499530583138337064275091847775911446660757064819335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00024882796344591385461239880845260384691776851307067376321212831043330119768926261152601978474535337925904198175128520020096443925386965960197623129024285407478015708065567539370247164906581380771634920314388644089046167410745320267558557473972499677590220735439622489041126850128421653983634543138" }}, + {{ "5.53823542724402595460730935883475467562675476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "3.89513503025480504506072865211763200932182371616363525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99887300842861835164017418113429559930804468019069798605482088141983665217815479503166341320807290829070352700865762573462007338287440579346738382811838185553843038382146930720875234411175792603385681200743384496310942148612050283753172718455515566946341846284557394785250850393323918755270713010620e-1" }}, + {{ "1.41121361373833846300840377807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "9.98754187978802221437035768758505582809448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.39052029796505087174799036572060834290339669936231503015871931355721722463161747207749930806516332386763841930651054884331973674982367750538370231486178766251016302345689298357523496706436693633349722362506875465430935461687316908940273568043577086452494403668755303085058972545116855832701160169233e5" }}, + {{ "2.89668134268413328424353336831842398169101215898990631103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.15865345460021584855780929501634091138839721679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.28205556117411408113652874564375329933423424935399606070975188165013549346043442272013469493594176280229509402715241333520310808546934629428072668916547032154136142048364995378685732366063433675907163954131129548865718748066808278449447269502355535592014434886553141414017802588692926998785625006881e-1" }}, + {{ "6.80370452266789652639999985694885253906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "2.55585667546695538554502036276971921324729919433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.02281231404359612151527353897929180348478744328820333025332541070807332704656155540376559985312945856024293947964716753864592850899748540597581561259020876390111605898100116321942106603048757052249826147692127068934907088939143183343054183800841834132202006495897859489577613318023621649632711626369" }}, + {{ "4.62504113144313121035178237860918670776300132274627685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.52163427846739888679716834474220377160236239433288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98482342652643471998471847918276729621115291527655407478347392440646810723671728307137559792389469491363165496772939188998042052370839020230988405367662374022902953797332354477989367493245470167443057076807839721016298819277997067517609396627866901281229526562169916899579412733467953808761281274902e-1" }}, + {{ "4.50822932159575771038362290710210800170898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.06839470475542444583005874392256373539566993713378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.00407725957483558818239220892424948692876561612077691060007144800995480352451729509031292920021843587131856132257906499443064130817064638818765366250131236399994854411601609832821870319397908684888708832193783247348840517389795509100198832759307607589651546707827898198086014636944156848700425178047" }}, + {{ "2.97403319008989266980513832550059305503964424133300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.86474774881857552344399664434604346752166748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.05563040619657475424023632617553458144221260647471757349470769600263284068856263065983919485584722356671096360406091314847188039821446085937501687228128412834520625095444394738723676139779119999762553228944695777339743845083698817002881418226410778165865331625883646946752393289471811888730325566680e-1" }}, + {{ "2.38325080784211650097859092056751251220703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.66302465811868707690202029425563523545861244201660156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.00914434741735633383477956146627482536171366958054332840551181784200344603582400731522959980543848217816660950109678863255860871237640121402147335369863635255623422637578873942180607947824451388135749116333642343887949089848641558138185462358132315292011403950110303162349396320495083970574820485984" }}, + {{ "1.71423190201370800878066802397370338439941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.22776453453089651191021403064951300621032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.41715373496456388539324810858409600194977863833255435782643057881295200486872481370727134110261522844531904021514609023835218872201273620577170073750362820523072032985530745444647038907617563505404059737966630343043214665700476103118304785807103469358517871674775523305518419709923690374745267779192" }}, + {{ "2.24202183750390773639082908630371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "2.88606137138923326407313751928995770867913961410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00356204426464651318381353366766656275190463831503522239513652128295092897680949875433153708401966246976000272332294389517143726474038495934684353460128449357504408039179941027444904612222505017810534008770086553370099204575810832664720970035523251219105643922854038752127247330051903230606763080754" }}, + {{ "6.68254924276967532392745852121151983737945556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "4.37453434835288135218434035778045654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.23884289615444976971058885660437787480627352137562427420631247881049437291942148842029267007686370097695430731343288589752635360722257432905786816202418979845289181427172830309982121527477449228884669859681103900842455539708329644639171581286590973017189366587396069226010533102477610964537380565038e-6" }}, + {{ "7.08735989603501259637141629355028271675109863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.93170577274373727050260640680789947509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.22994581178880428430588361219833883540463488675474104323353907511764504539625188516288826354093370529125373667749527512470360034116957923611728143647053700596011110669882224710437210488847861184277118067955181730553186100384807049379684590737156995709498402541295775367296456895644229479101255193586e-8" }}, + {{ "2.32014942323958166525699198246002197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "4.44810310131192876426098337105941027402877807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.41156739924941071144222113991630683194620198146427652318978812945951687592217439817665385168004660248141475796965481088709894832854582569992290051260681221672250427616673943995167609515610097891251991676291118804434690243303234426750763059520585143335380969303297852505455054177640936866538646738978" }}, + {{ "5.53282998141260031843557953834533691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "3.84121602625912601070012897253036499023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.58373770974866315239700400474362989477383658235694014601763955308120813900734144800418886820772189374330395186134971653113939250757648994415649668842051891937875262317539557069792723676293862948593761228728392700591159530165592758768030540795599964339740660316188438257430600649159884119157424191581e1437" }}, + {{ "1.85718777739859418943524360656738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "5.22760764621501818278162532216413183050462976098060607910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000634214788464577855189457084479231510812185767194037441581727975561469887723538341241488476848396809344125019310357146729535769441778199276860378224675705997700022744347653159656289098028240954603207536444605258988369343538458427994444681579339406242882282677673848923548267602318784029338545299" }}, + {{ "2.26509465497761368624196620658040046691894531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.03762510179397637877229954028734937310218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.03290580019042823129797947218377400320349309579887379648069219653044521496312022139633395975447973076157177628011296170468228189168841156259900536323684747126636993787966799478738521263932697630770091216225209592893137197359045523997671979624680066252774430678393930591603773849047796785558663064178" }}, + {{ "3.00476295219746433740048985328030539676547050476074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "8.02409308153823985776398330926895141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.14136997855533491337740509094908136487500777275671775674006769752964040924959289897651192452522290539206601428332553008348132654735739834724305690164751538343877568881013821199733121651153278576916744941958595422652696891642421407236449964345890318648778746090208231400439749942969896805715062234843e-203" }}, + {{ "9.70798896667321969289332628250122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "4.44245980458260469880826804001117125153541564941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.04162803810086699019811359451605453492327199203637588333443087016790236547076001612983024940969264195708947484110311219661303765376669460085704437741732903824466154100734799424439147057676949660911617676769474501254927589549167841876728171722481679869607753266592648983928705022178056753619502736504" }}, + {{ "4.66389224589813756668976729713449458358809351921081542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "8.41598683219974930125317769125103950500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.53382042139791789590459891074340066702060120383660058981707324170432197791546635984529280576877432127625617337120709804544743161881268886942872653531280982977576133511801284796672543413476367564502976743587063883733930418435751755822485352709171649159924126024328941448624940766411726855902924670549e-37" }}, + {{ "3.59808415633625783280891141657775733619928359985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.89106070923696201191432919586077332496643066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.11957324795765157901703029938063916662894000731995996196921601505519523032651152137148283098242267387419838627536448762986353433569901640648734154364900058234967711292575255307936095926242393050569604396410567616604312846123878721000606629431359673384574670669906697802557686478096291498804903738631e-1" }}, + {{ "8.29546112810515936034083672723227209644392132759094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.58324466499312066503080131951719522476196289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.86659658288740565122000959721270284304946720479579271651550103638161205367495371607443353257219806398111103943515458202894485596325631197266478165244814107159447017816960534609382148164169335790367935277372018345236031109996214855557877416239874683021494253068006756484498147004540748744410389570461e-11" }}, + {{ "8.63334593891555979183749514049850404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.53080323158965114771490334533154964447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.35233729973545869852697007160756749812975339497681040282999017995032382608550729201580422775220111291799102420635253476809267746237352183450521514570985348430714476644398637263228584608977432119909919809882847191196859131282077491115028311403034792745466352775458252803189617423439193439791933123479e-2" }}, + {{ "4.96802530016260956990947761369170621037483215332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.02519683572433439877613636781461536884307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.79130174131074712614824707606461473196424333567411409743609116414751816130489331857231684597817414740294362613028844768413127008896909984819847802879905875872491406317289520166024819440680050252863090346899246519659384416734528764367429297819383807550500609868490474715994290375146313368129823880737e-1" }}, + {{ "1.24702033554851823282660916447639465332031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.71070595755497723185201142115374750574119389057159423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00004316789477874277620263489613820769653924396429221925198065527832144152145855155330213971456389989525794479500052652310504867952437063466242776820964127214900733034755428153463014611408545155223418498794841462940237893200540509678171081868776875097700422657888013910264387140255547155547751726595" }}, + {{ "8.14130989781463318757936953318221640074625611305236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "5.47674360353472167162180994637310504913330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.63199095965818056903859668356569903606584619352293451010588563431807635376986054905897873784109387681218165026966672415089273447045333707684197569751029547891913778442699838628510300753325723159251992398807517774034918042863197611983714480066975243968618918488213538490759809651966026386013669113012e-3" }}, + {{ "9.48316047562641761814461460744496434926986694335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.87318705342295180847622670938790179206989705562591552734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99986164907695049446699147999970503354260553000953839878275159076458261755428730763560216631851642537174133195419034054495238529976374508256949441111167727864128507860277033299044051865971449902820004978297018651282279654117307535005136847959876138249613275046667240315151303933181873427450473536424e-1" }}, + {{ "6.72439622398628665533859560810014954768121242523193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "7.25371945127648842799317208118736743927001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.74287216286274945633266572714083322962101975717027023442493643122162512912802620909159732325958549010615659395950026917825109006470507725724883444926417334797999132724229966674370457592343778072797597317430071335665732334697884217471229705559230148495486170835726019893708870900510074940623722192258e-24" }}, + {{ "2.30442309265876887366175651550292968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "5.10077615004599603520940576117936871014535427093505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00006298512189780533426621327292231284630240394286315128868176668180396156679505765231684868863847590833570938788465357619602169740491681317033999860409913654411707265663879954547321897801703570651803262843624273611588702980486012373865440788314427239276089286730821085936329475836740228791493079509" }}, + {{ "5.67608898683707252530439291149377822875976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.07683021912563162914011627435684204101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.67068196412266823466861212116241893055807436102731155140415238019317223182255528301301262470626159261154640191153443230288813541880287940859066915763205210708548641176944414442344483827370453800486623574896474317715521007693847769491979549043149389934860292588058888100428936865217794693086764880012e458" }}, + {{ "2.81337246606456581503152847290039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "6.76344844070871521052312758115476754028350114822387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00084899099059737772913859365556118027581054407285954758329055990529529377511066455820790791091871502993434775634942750452313898053395589443975739777882392931281046995883876066279980856281434476038018812014179817821871586805042023183706725376177160577170143175806815414662475357051404586743878413781" }}, + {{ "3.34983523837648674431610729129715764429420232772827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "3.20852082105692326674528658259077928960323333740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.74653990782509243550836183201075823369159155519692846798314436930630346572690178245424014813711682670551067058906680367646181984756645025448347553573937829174199564122446362713993201587207768412845129431576839987405545810458778769778400165994012026984577717831659943902405397254874487260228557294263e-1" }}, + {{ "1.17365003664101777758332900702953338623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.78053489600925995972602322581224143505096435546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "6.05893503437891990856263354837986270829833882333366791751057714437977103925035624856886729661425365010268503431934637684230477655839134293793513971115798026793973457123299079643692631311303731259185411381265912635677151301389868547814580071368806352687212447229499485791883769033890017890187866384697" }}, + {{ "6.35473191480731591582298278808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "8.15332646258649447190691716969013214111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.39785593586175436998336047723152633390674636830187065022507274459265394076960202352145842758484227495355755965560336623550772098175134115092702375767668586879200691996181864401350579269221993542974245130770033239773182375358583651870979382999043883377805409110023459275245515025837447884289450716490e473" }}, + {{ "1.20953010742292040959000587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.81528620999166889760090271010994911193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "8.36836082188852137389175804388074236213762814888145199618983165421342520318145120542719392963440700570926350816427711317556249274733873103430368341047528787950522843632555485443202700694068291761260828423023146529348899979040923182831897371799138328552240635790031739904574931369069808189107688786563" }}, + {{ "5.02826864423656406943852203994538285769522190093994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.49148497614115050149963259684682270744815468788146972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99886724184991506266822294352662914256716265702852450641368490227402118731911016182228523518485801671330942930187800995820804252420406598640376923122551567922827288661396415930336442260706727249870079649992447995120206397679683465259479974096061438201134430443691684817587750638183840953282722156209e-1" }}, + {{ "1.77623605706485581789272343300467582594137638807296752929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "7.16881559843790408872998831668610364431515336036682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99216151571584206550599285631558723279674057106881165894202136106399680298454020164284514110193651012658901118782805914666290560642145072003861919887611842296547047036059520963486973019219177746829500434614825844519776793639037139709040279058532565912742721673028532604681375807832044191447365386410e-1" }}, + {{ "5.44470752993507289829722139984369277954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "7.89424994358623844748022030382017533156613353639841079711914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000315551756552929413349733123431754994533967419962917545562731445729245526256276165331606875912022797791137395975129631042701829381104269734643785979371368397149024305719491289967486350643357572991392648348784068298353851347894101762457227438358667841811859357203913787202416700523836489423208926" }}, + {{ "3.47952865539182312204502522945404052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.70647055379554400678099312926860875450074672698974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01003641035516199003729871729172100472722683758579980406598003587323081240911466133797745466321375213116846128724578817241014105529656120259049841543565831847323023771528373536119517374544673647922841984354734790648175557634969225996223997613913923117328699599574593399806697328078695200917124733876" }}, + {{ "4.89683247131728754952817439516365993767976760864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.96528625490362656162875165666292787136626429855823516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99989546369402488423594127072150976413227845609208465040224219805251052465526350038203035493184013561718362361567469358800995276604754108514280603768744650567983276404672018483263585666869718723877857972643772304671740644914409892158811218430582592069739462405196179208350796857344173822141379782399e-1" }}, + {{ "1.46846575134083542901741736841358942911028861999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.13961295777929194628086406737565994262695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.25155431004176641664360564432608271749851863826540763464893400702786658931519008803678187122457752047812131114041410952546777155616546380522319343918668230249104290662019435519965989945104554644065424460926764956490748710036580200886547368376656130754697653950693222962392418484839778727280176131769e-7" }}, + {{ "4.92258328635518438431972754187881946563720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.16701285749932963387021089829431730322539806365966796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.99846424401823072211356827414998110501335375349159811161820098061831954942111055007312660415928636319873898347702590642507419097876493991759663677610295879480797600223758201686500279349159643821096880668703139199785910150322740521690695804135686666464835791331742866153491003010427701847514162106732e-1" }}, + {{ "2.08891842024441984904115088284015655517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.37451123552204679256760755379218608140945434570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.51853459491101499462028153198307960464036529321862426769066486207166171296494170498179583135034855145454026518293079000045567402865046530341818676848400774327944796661350087157800975247279219703171839848135584471839442165788564723636737356977396947188532339857132058951624239309379955278406455872013" }}, + {{ "6.59693951898326247373915975913405418395996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.58390504285117244415159731829589873086661100387573242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00016195756688330761491474273615136423552556614577036197755742996689336001512360595235890000441982158893267294826116899101351409093661584157256387065246323209052057870928088601548025462625595893993027794606583868972654751596093207938303600634384394989635869479864226583469214082919105133232859648980" }}, + {{ "4.72190302282203920185565948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.36872614795644276242114756314549595117568969726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.36273289377674003549552956596428296006868194528902491172931330043916572933784595495824585583342079403134944318241053700848989680616524963231553615168899405338957973320487490472555612135391925458093520067531657179731576065041675903036737870428047782297012296101361469066116145701281560378942697624754" }}, + {{ "4.82034977757478931038870317848932245397008955478668212890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.20114163951150231847420091213507475913502275943756103515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98806768192609411674337267672424056960083232464271360229113542018960233572696008296128150338304172594110837781004501757127999427554595909914289685513812993265024374119615672800606621652602006481141937435665444874495693840170640030665928027259502446424921700891997624978473239252852217099622859393453e-1" }}, + {{ "9.54197957425642506734675407642498612403869628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.34304142023469919031697372702183201909065246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.99984326565139803772938990236401058117431661922045573846220380640349699832779123098058540753008622857674232899802697126593866411818203678224123515319186907350469596960547397261912465753250671926347546302198056587430826863955515669743258039245240360599418185587449465990312391796474083173534248199413e-1" }}, + {{ "6.40960699263738433728576637804508209228515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.00816732049831557560537476092576980590820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.44157504422123306075307680246115279780269010737951173392922320903011026254261224810748434749033392788723902179648854339741924679540874536758451693815806813776859218948113244848659597589114467756894234559650445795659560796369660440795499707193716216403592941616722628011042403021580672267269382135734e182" }}, + {{ "1.22311589009840382402671821182593703269958496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.10469349157712311976231589483177231159061193466186523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00004238976442526402787977257335501538186147626008780569692886964327726967250839556988250363044075945205489441982444641281650300897861533023502296756146804366735904879346020295258735438264424281840920414740589412010520817925020516062766522452589181209496869654998063536725728358771467633669371863258" }}, + {{ "6.39291118430208007339388132095336914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.28391975830675164615968242287635803222656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.69505481296349945509651870173004703548467117826619443587513918127052944692060859604078331125022112009253571107992368448403956917792261351644585277417570509975725723863004283151424512684410008159602519982839123505049564570077423370661622862250195728714873045142974264003278199036815752137105673556433e4" }}, + {{ "9.83190653233646116859745234251022338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.16849063361153184814611449837684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.25770980590636267172342833096299211879468172398651157530921609762966193936659345808702337762714296668889853763786019297633422123145533613492472992798929637639386760407400078511978818609469799050619387136981965857651597610392961103496543359101531210986834447630570812748220097342632073167798940478519e830" }}, + {{ "5.47317500559057634745840914547443389892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.25569401906009264768826483305019792169332504272460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.05154283217149739996322394073132732110285973177101672144476243536792403202554641841303821681674178605013975392578098758039213562899690576014988268448654777051869934823936115258309781471880324840875908371004233345043851515355481534420805940488435409518654838065662552503310797307929345306698760361427" }}, + {{ "6.49123836382549113110940197657328099012374877929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.85020261717664669109950636993744410574436187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "9.50660946670306311914365279482095005173354041210571854577128244379583503141132158648667793122314902465794942399303782457347308120094047863238127874892080844189140303644281120192942849585627941033052970332875969503978268193734299765207776684899260119431935484734340685682552324678913617232469193989216e-1" }}, + {{ "2.24692705476482810621891017532902878883760422468185424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.52982695718321792810456827282905578613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.90763013958916250310703922628537395346144248614383500040096138375431039104002049367585390738671354254176978486242291556216285278163895739264649656370403930009408842065500683071987767757954595210907449882232438368368764844630512751091553559176805208777768953085505825846870225770460080538105432353809e-17" }}, + {{ "1.03776311938838771311566233634948730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "3.67758461032731062689826728728803573176264762878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.03459301282359622046275858130909175858605738103500377882461906122638713902728757596922241637837677972497613038491667511030599129584893938038824302224512570610802632172627579650514542361582967805126424931338365938119495726516045340017819117717607391845493489250022446019685368890472485823905828290701" }}, + {{ "5.44463531752032992017120704986155033111572265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.08467925444702359527582302689552307128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.09056011709343327076534816446309237286970058275834540830372719698670511928227959632093780315386474610345825780828956917908117330975173563693122316666283875774232598613235043753932040992980072681882395580571647274880789017536786697004043527146342091119566202577901703268215449281872604307112909919335e-264" }}, + {{ "4.32141091390930114357615821063518524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.79962553627032728620349644188536331057548522949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.07012654071632775332556853428357456635166481137753650401618414453228087751942869456669180112375507267782856652222749904765639096915852769878278766680206962666525967341796532563009425557062229126958039051450556007688280632610398536337196273409572525834486954342631282999563123455233960154445776600968" }}, + {{ "8.85195395209329438657164246251340955495834350585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.32014972604017088997352402657270431518554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.71305713463862717236321613646893663926389070764619904563621824742856237889605485601780242185666715109642520925666586793175066523791156636682971412268154170045092095602942426637119803498838588967096817482914325839210531169438704998222940708453881877588305201012231120626503012557840854056737490425114e-25" }}, + {{ "5.11800358239917845513955452219079234055243432521820068359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.53194625802088957300384208792820572853088378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.78675898815841251401603750577856756795950441245444722873452268896478608982683458941926503132911522781757532432483294128491039729829837206496101278313685758061174666050134299787052246310316361371623036791254936884792176693736621135978412809784428098496835040268753660201880757384305210529998116341854e-1" }}, + {{ "2.32741466149031985682915646407309395726770162582397460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "5.38640739832896395418437851532189597492106258869171142578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99549497162550438458304414161333920701781715268855145062033883882900750111819551249273252859663946257284929221986573479403421187776431235203160677411657816941834327558315579342010850796902138914924928940560282841455433144115320935123004884062392612303227832917659972351800421646517607120651251528968e-1" }}, + {{ "2.88820917341887019574642181396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "3.72679079374876875974109680100809782743453979492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.04797427152199505899776613380207153019163891696040089708565511495563600355422445163531206665239877024907641710076156338867860992891601417074486301976244681251883409289427117509266966735400170413169626794460003914944960446253186507533452481416547111722260834345331494363350198444447590272333886931493" }}, + {{ "9.11769074488846854364965111017227172851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "6.34287283617854882322717458009719848632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.61412399451200792430940441597911814328017657658519351363425803166936981320098511499093754150499459010245435176020174953699548406222107608392288974835149178057255386825625780361600243592099112823611022187187648569904297395013151014275208089987059198137284635106672418842688183845527005332642735224166e1877" }}, + {{ "2.99902079785064756833889987319707870483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.68497592645624978853480246954177346196956932544708251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00001063692844088210456002419855074011148005470079145471634788112628295771788190807123424233524759763995207569368229563514564551401717941193555837507092120724642714186373549513618453183103215293207086254916107790393722326161402579919794484826396299503609272588338890824693538523484869461094064640920" }}, + {{ "7.72854459904651157557964324951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "4.48978348521208037863461370875484135467559099197387695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00610574384563796400321310101756992783528974702739913146260646865660943239706104030906315422031586966995536370399679280585793557349882649609015460449277306668457058524687099432479479161198093426061867258598346229732606275929747805949435342506588647203249401335413541148238532118555631296171613732580" }}, + {{ "9.29770372877305817382875829935073852539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "8.35261872461758123759034688760038989130407571792602539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00037864179461996490975401602514900577512361928909810135170262283211442500106334885446423595314421485481346967556782507370070595069946883492382064486384013379235733594798086474310298773717536986583185147038897974675666723220012717870637206407697176312759927758943687773764377471241445265488722941855" }}, + {{ "1.08593927041971596736402716487646102905273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.54205328509148672372353061632566095795482397079467773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00119232709184950657347355900529943667776581936561333029642844322931651851922987396688070423513516427393233449332830940932893802869470044377136541346608056612546712420915411514501773616973022311857494372432610405714927103499401270099666054931681878021711299630772502630342850129330691538468637467235" }}, + {{ "6.08955210127030499279499053955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "3.93997641600216752522101160138845443725585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.18201219777662049133348544929685038145294798461233898669466368271726917449741209374562376908881805268589020897308399041338055306698995074087125055703556791502100679603522120055594862139867723186128435543540272128120797808148788656196331354569711892744404054200303870971480027638854018077003767037387e22" }}, + {{ "4.17002058199641822966441395692527294158935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.27638775324770278722132099691322082435362972319126129150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000325050709508111108865304342178215954684414490544574201155545551225580135488259163273316494247157849444894518301320733204512003009459708444645141220074915996395890189435364804366091830247042355490183040883445209891891864651638351487974364904897430627412415757188029347485931227191708441175016047" }}, + {{ "7.67550081598081896869234519442670716671273112297058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.09358860541564251178670019726268947124481201171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.33361058888703312937877266409714100834748582910004102998779521040115944440359724219966898465717158230452195981198500825979353396690326287544928081118745655488492150353523103453131904616559184005975246310430624687681784477200062656846973772093687820868635241069192671298954998139357716654945366635020e-2" }}, + {{ "9.11928851435624994337558746337890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "7.77150273145831363419411275117454351857304573059082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.01072215443565297495212875757828431150173416786594077990011283253611684077171961857977658555772993227256701225998130851047810587496804030395055038866276482446366864045774522304245866613460132889356389785400787106849829332460233953000396006079677394660376277801825929937944079178448460996666434091599" }}, + {{ "5.41420122645918127091135829687118530273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.89522592882503256809384462044931751734111458063125610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00007565289778675652984140979321399062757791371437603651125252179594586538728496280877795475718254343845999376499222253067347916841829323365254311918387151598991472092918535912843066893311920458448486904240767256448921472261918689220109607027673999114234655407258002618927723100761498362332050377153" }}, + {{ "8.00879921885989665142346893844660371541976928710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "9.65125145484174709054059349000453948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.51542106881981491731489464208722559455080283729538316329978070693260585378415308395373558536702307332302792317627310748549719761801156867236663991267318247059438589418271824484275577584765219427298744283723772247523591169183694405713456066811755471408195734266771535080425449850856084868376311119689e-106" }}, + {{ "1.09156997362350409730424871668219566345214843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "8.10878062686337663933500152779743075370788574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01957066747628902940966302510092960488528925253540221172663471275503400990771789589916604068584334436432589666410671717466013196522730609847023637947764642131621149159485396625786863911618319465245064605684158683676154002669412578226202367577007287146331656090836085181386754790207143710478024828107" }}, + {{ "5.27981737437816178726279758848249912261962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.41970852096179633861083857482299208641052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.43686253241293502543031164235680564280493113934425702290586259672655229919415634458697404687915141160074152506872313697917935113169212018685900336128740210227144508079482606408290248099236632255964024354639101204012497824568760884660053718968331056137812934970479251589590682389747704367113989950745" }}, + {{ "2.97632424685030514410755131393671035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "9.12458361916200374253094196319580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.69742603562041824153926447786929280716116286355510132564473072728789802885515779796188477871744149730979853211785348379587523589298115735526488355106077778856284664084128422453984824424076757383964141778964343798745285559893404942252682634909106936299245602255752362338032501973165524906979409622054e1344" }}, + {{ "8.12277007629636675119400024414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "4.92673741168140821855558897368609905242919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.30484996489149406381687564563779425178418692009670007244171321324888859123491778857160269626310259110411696125879945417306210294026918965107428093516365217530286177050990880067424193779915234192484015646474192080157981645949288654940510168136275269591421630149209078542082633232345605476593203338075e29" }}, + {{ "6.75063843580995381898901541717350482940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.02748489106749621435632491284195566549897193908691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.00196404947416174365030420006016203648060565955934806957206111637856432455172895201651727892958586584412299635092294986305134023877029915464080887124975616815060819276759381700802994334432976763795102196206567937500407359464356440088544622676160266170981561234435498384331071158546292310523236254753" }}, + {{ "3.50174444164054002612829208374023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "7.80282755451220007281154522615906898863613605499267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00819798888901128629632317940565742032581044787310510298394051237610722547925779466083057852335930819436022531750188258730486171674268778076637531078630844955462136795806889121317307097195981029957098770479755079052235805500969330960373439119072852284817639069793570751583988153638659438922106591664" }}, + {{ "1.26564950853483537684951443225145339965820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.55352677703511933278261725188684749809908680617809295654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000394312365539989563625486331626137964273811834798695005780013495760538177217100805072673596190622159320905648378255454000218262505715454699578920413495174693604468418384665870032433868756106543653906692751058614669494849726609491390952522788637204327400613561970408136313418894648226391505731573" }}, + {{ "2.15745882397261681817646206127392360940575599670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "2.37905683348865193416088459343882277607917785644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.64117851649613850769514625497977880278916078343037571542452910699608639199334716242087257033679813405503457913766626678856765747940796988239184619492044398845847330875248279377691256718144764352787323595310916665202454075432835782224634142882556904024349917556799442289975480861859420905292552431968e-1" }}, + {{ "1.04145372167880889691105039673857390880584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "8.37802182325172850596572970971465110778808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.88526852493738132239113873166539203263138672058127955706951262195153797473038707601101237196070886256644090185553908945280688151557324839521372121066434881841798255953853902832020964805296391060444306684398308798244411237112095640393380398474592654522034844007881900667824504043884214270458892007901e-9" }}, + {{ "3.07012551115110277066833077697083353996276855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.68879194147396471947786267264746129512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "7.27959056811329343392664000245431816256252125501370190635108304735068414726869009253945094404747463601079257760616120868020903017002340732110943618640264478113302579667971697324950504699622151612181100300886867598913337113652973737056690812163582367071363756081204514554722838161602803979904270771466e-1" }}, + {{ "3.87855552747419096704106777906417846679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.68123953003118842275398492347449064254760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.14414942990692656452341784125767590353064260907248467847740571016135049928321189261126610028098851785915087403250818786340815261171401002033061136458109120291157079359913768807250954139969052510045722307049663169894534742927788300920701107994896596920105547258658675585904959114220585301112702429345" }}, + {{ "7.26004581866997872330315999533922877162694931030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.06413410745037140259228181093931198120117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.21086963011262781557962916039162488992600789192717542131434452153601149170623279185807445011140592247466432290015786700658875253434281122713288249913633617033214856219833669907164464033302015146556043425711342744639683355773156696931162767677537366527811567871143970446954952970890842842464186617910e-1" }}, + {{ "4.11288422352877880427968193544074892997741699218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.51736412939929010690320865251123905181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.24565288563751822331299972603179488550349468370067144446751898852644002616709216207408151506565589257442807820798232055968358812640290558093447292295273379034573533601586226697268290915360691120466719143962043078879323957769794563236709847407432551615445562560818926972156677354022231138620495943375e-4" }}, + {{ "3.83413786726422607898712158203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "5.00384576840691153165607829578220844268798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.70586881100241909365086281828106615321437784717557599878404325717613404517722842063862151116432421295729131945352592123500947115034261116251456345076603582494211858526398683989440066160175940760838173788310914276938532934671434380694237696835717084352874743706871899256563045584501545107582617433574e27" }}, + {{ "1.45287638810286156079709662947152537526562809944152832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.12685751933480298196330049442792642366839572787284851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99976308406201382296511195677454028213966050559386949061001176100458674306535766658075727649858861936143578824990999294178518894376297296437371242014351633015801209221765213206140971726863151455918302666401442029878834264175629251102478211077868646609228275473662440136138981614575523961652841689231e-1" }}, + {{ "1.06060778784217379921983592794276773929595947265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.66538555043448722320365007476539176423102617263793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99991775850777769594805464682102392095766388724998006545282885743063065509840288039071353911521871815954556155694843177720505424196812072094678443706799908575637539974472545844157811962504294140635183658965312242832638263593804028788156476482121148602286677141129409544764834011834242854688050032534e-1" }}, + {{ "5.88086377090030459208191970787993341218680143356323242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.28950414823927278495929726886970456689596176147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.97772228399557115917897595553123200059617745525398631036747902716221825268917059130877148214691312502174434355597848183024102187672671321353149180399633699090375168044589993636218162674313714376215322688591337150653523844732601246528148296899452660176207080310884559549441104143585753370139662688312e-1" }}, + {{ "1.82088437442942030486392468446865677833557128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.18170819309718790101129681779923430440248921513557434082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000130754723378331003328108523077660890480086159377400421770916129060299296337133805493313328717117334983973342138421022906982702012383037259191961910456959250943670084798790257349266900179703918444391347033677458675178576414635996649806132816647233201959427396166295868642002149628537093670669003" }}, + {{ "1.81790864213692415773948596324771642684936523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.11112317505943991591266239993274211883544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.16716616089260899158634927691311476940264689424270830038830803482761816779192664467113169986590716888439242048069862364270415910055880132349242712046577768880635878273030333655678293456983297487516817843334720432032181949191565525929129951842591644277698817197191950932369312197425519306770280944742e1" }}, + {{ "3.11682213641562033444643020629882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "2.94098588905476396315741283160605235025286674499511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.03790338780611240821364394096187689009151442337723127625883997000112224823851501188946812750320424873330954741819494803462494193607811995436113951374495986635400485180461374008937550605117989616259238001766980179462154007176099462553721961527948038831707776585902099492828100272597482214965326918683" }}, + {{ "1.39087864126595343872150323250025394372642040252685546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.30102723808126441440435883123427629470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.14022877396721831842223346046335424470246823884137406233750859143164782910052273120452909159294424816461360814736670369100321052363875210113861850087708357854957657313512898387152990311841659387594066789695419982631901574195401313785030478101180804642923588217360853722001240454059693137169086797197e-1" }}, + {{ "2.70245297975474845853308125676051076879957690834999084472656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "2.27192418381639527069637551903724670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "8.66297652134236153231549630311782646457435806521553869102045806271290140313907532572617601088189845177879703715370369231877915346831429034626669722739550299919960838955152823532091259662956246982857242736145549200749997723311019597549168518852317671248226020048798842889139150504890040937192852486477e-1266" }}, + {{ "1.24917144681230411151773296296596527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.15140916555233019380466430447995662689208984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.38260599513773427745927397841453042338248242456988517458147773019568704658853879515960004076402277283883489795069346406439823839016514254977654510204974986928186171239215823810556312920621087546486393810430469767985081698483192169492133075210737954383435371131440185644678524564816434215238704654516e24" }}, + {{ "3.11836231019214392290450632572174072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "2.07745884054014173791813391289906576275825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.18191130436089764539875276066824383600066278177797976268794231640866698789531115667856789828761726794355968881132857750694814866048339710833375629295256557712732385065863487440162509225900966765667937759713986800012768351783498265785505802770202831716066805035224331887004845557896771449008224340669" }}, + {{ "1.49079206164313831095569184981286525726318359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "9.42373605503094040614087134599685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "6.27012834121533023666785182346229437241289754499051958039863912420351581912036946871768101343922573098899177777951053704877386501476998681242293961635818871027535060307630949907397555951449420495765047830618356183657814571149049220337636474144629773918060565875711712572574729922979876342390263324772e1105" }}, + {{ "6.66620618596326164947279968586713039258029311895370483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "9.21273515382789454086776004260173067450523376464843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "8.77204862888219369744788573660770287170392769001738688402155865708513288003188496251740638940642992963657767448328425353472870578497253649660611575851476001092271122636729433601460150801906619434951209083981408041494135365768470816162930615684520542260356335965614720676272646217323394466315267451500e-1" }}, + {{ "1.38078986432311534571226729894988238811492919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.93562727297856326913461089134216308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.09060418138444387424424059062331178711979043905828333720448765913252697584689444873629369083510366476460104106313375773568706388071930121668811178870306890980290075045537520987441428335324653171796426529164093528427568372203611999068229147036397950044150945977202609787933363721956655499688121770967e-511" }}, + {{ "2.16771050432941410690546035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.11416271213217389808580737309284813818521797657012939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00085620226622470905732844417905757963463091991631468675045664887604696934739150514381777470211904644648980514762573227291787791600677422794047913591269830095072415283470532919592193733010388187339828883232881043401853930198928232094973120867346831075681954343729371567448461485192448773328157967492" }}, + {{ "8.66129276411148731409928025470890133874490857124328613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.63230476162026535980054120500426506623625755310058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.75677926316087201992937434104172212635183402081845367050961907386982900528845357336855433020027701890844425355924313158894887243517734179729721860852203216211626732274220956786288208809210677612308603888585509873354794360927290410971415768734554863757722931375046183502833124862440220040682623894401e-1" }}, + {{ "3.35057580340428966085564166377253059181384742259979248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.16747650803829827736990409903228282928466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.69762726818915994102636669640248641695258916516178220951615332541358403169898089796085534108216181605452622185779736827460245748311614902401628390881069582094010945399117381574868399439034359201699565625835678615787458358138834274021214751543009200113868243044350923559610553355961511493945076046223e-15" }}, + {{ "6.53381930771882064867828177057162974961102008819580078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.88128239916411388321648701094090938568115234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.44239576906295172295161064728901353975092629051590219076800377900713837403284136783431262977433666893756151770251819781412876948522321366628456614260642901179077056688683539196520237460889892611407142177331136348438247424975172992629120895139251739138531630904163246094893508737465346231066931419052e-25" }}, + {{ "9.58824111169796669855713844299316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "4.76775888223340871263644658029079437255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.29079715270199960942963556473318847100392035825806894633874834481890517355918139252275167622132083673533042352315135079499274198112245747602316235108479674713674202663546893395644195003527204518806401402778881498713093151993690595544754136969841959488665417573929913679381495568123074940059218587082e237" }}, + {{ "9.80462544807249748030075764404500660020858049392700195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.92380061818621106439763934758957475423812866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.69367957215417366534795032414092044927898150798664469523819577887485052498975506353682229088031835479896261249192998498541269057857290594440231095317424708287026045610877468508170913712129807960043309223866462243177903185979844369471346406937023243553333556543631914530281862882346915332974736594434e-1" }}, + {{ "4.22715824828159014714401564560830593109130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.73237473383745509636355563998222351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.85142181625610748727512967615608623642319089823180852116567338775155480625397140714648406228861247464456116191851444571000366236244452154069748412545940070600491678946250810802096421175871317523376451483012224450957973158915531091130907648484702974041033736125577265886371493322366154555363836169078e108" }}, + {{ "6.96647127037580693453833191597368568181991577148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "3.57526947921747250802582129836082458496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.21776552625627356590336877317582904052748969026951170943346144361121751863809186842688158978930311760773848599440472082708351294025960471667864592532594991999006914698692274398613842119283225752843571850040859177332114176284555447226936581391382855150937157990431287391269415649433263516860035782138e-414" }}, + {{ "8.87031657211726951572927646338939666748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.34070958469201997331765596754848957061767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.30679204065692425620221532321916410120280977665891018935099692677903142836365793713310074103183167526509810778546217793360039724544105606790669360053805611269103519872268834740224972933178750433774433912507891375768945267742879488012985036171398185645729556921004734943776799979369402749984084043452e26" }}, + {{ "1.38894800193875870772397540520159964216873049736022949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "8.28834370250225660470277944114059209823608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "6.35222056499059860815119534190744388049132560559707635179974362835024292102863415735162094842301916959003527949486946878329851243593307281685479130665725517616797588026104563060365221513904192277451172225341242860418605162130720263571624685346061029050164764398879401328940031001593736913742594656342e-4" }}, + {{ "1.09816947397275884975090254336294037784682586789131164550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.58183945899629990446480509724835883389459922909736633300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99936261439304212269593793274631621066678586897953594510473482514688267255174393243589871913940083113695300948318689338051222055912287552167309726448706279958229666015743107592418824002439360290161725288760084420735569321637244499982204153705684126108823317986930400592132185032791247608619277879575e-1" }}, + {{ "2.31096996516865660353801104065496474504470825195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "8.05549814372709782617221208056434988975524902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.07259003265165794231974650932471010325197411080114721904301457157547097334313567798534807882346741414784333355642286915364891740931795753032224983168581398136163731017251242792429565442336378918505638415347606482959367519064678452374991852143987534832456623394400259546622175052847902597251732867983e-1" }}, + {{ "8.49670416441904163828979790196171961724758148193359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "5.06998079666728116224327926886417117202654480934143066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99758288631873273226282145885741739757443924805027385096536700548341955223394388330738555808413815209906793614975662061712919602993250011794563507497959691981853673962928960543216580974445772540799559436678586781978389593065105455927885069982188267742598791601651598840088278986439446428992363728811e-1" }}, + {{ "1.57311385387133050244301557540893554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "3.28071775496995989116096048565651699391310103237628936767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00003170338187821543987107336746662729109295981087069294808638827112958850528655867141095917778641007871411889107729782401763128246612168904257048743190385169980528080025389670873111442583914650963121405799362630066123464254273948242629742051351814124726982856264616340030151043214382406894418159834" }}, + {{ "2.39202138047558889866195386275649070739746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.49118181918548543762881308794021606445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.27339014094927962826314328575939814304054781018385168289190485168514741352754753149678911930165646861374735328175462043586928267957865268734389479790773849220996848074070389175534751472812216991107745875007249116250242613067032470443930894251972922681126465003519414999032823440924453088711434009253e757" }}, + {{ "1.64634850170019781216979026794433593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.58052312996124176558421225990969105623662471771240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01546348252503362826107105198333600916123885616351929759095090370675683807853397698537671019348523544289454424258903395372242729481623263158900841743559291226322042608326721672299094222138476822715326186152957264351608036142453170432188932360709929281850323115131827188070509946087921486355921396837" }}, + {{ "1.29984771123733180422585298252613483782624825835227966308593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.48673306853607149757845462545446935109794139862060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99382895797564405052408771210317692764125583490813721738650031785719409851796983570805688722349822979681595897622086712994137349075757656980372150545265412692073900115244181782170626388308672797472118433651575906690160786295103594530704832482562910548180219532761382129979082146445301288761331520852e-1" }}, + {{ "3.34499410762214122172508723451755940914154052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.70362841707174993644002825021743774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.40485852822901975442109716898610918193900542520961776863305069906497895793489542547982159745108266280524490077140951661552295048439266934614559790866489193897427949324691009938697269495988925070011169411841665487299534902136008055662912091113639828368592572760704050198717640286295766255031666140310e-272" }}, + {{ "4.58769266685160914676089305430650711059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.94008884841098259987912655333275324665009975433349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00265878013514519296809865295705868217393246867225559245606227172893223522667583594724300322356488286875380629025637162385262938162022625886814529504008804417980773476428819488610083450291142913844379562656183905757559036430981251862699509205398028210683848825112302095809741897956564300820095580866" }}, + {{ "1.83659034529005538161072763614356517791748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.28717719818835121259326115250587463378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.53726930767980134628351414040002163694004937538301878071492381306637265403593248974390687238745936146996356402451151949754817939176416474547668969917407094657482938942615901000965138448816198787619804034435155352704149778316444976717855180409986287616695020212770570197624985971189801426264668362739e113" }}, + {{ "8.69656197110674742973418505087579433165956288576126098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.53470532471532833396210548926319461315870285034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.36245700894899388555856775460955394048641742342223378203581109445790321544636857502869379407622931929904915591813410010543421311751441003345169506628319334514393326009523930245673734273160199057057608984977895920935149203153332718973184503752228376603699406900321208889195409621350940486281346111426e-1" }}, + {{ "4.77866412699338716230101908877259120345115661621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.16847487332184418740155251725809648633003234863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "7.00939095440309291336847802488312895385004430053772751642212203497067924870860269568166321148643247526572505972984054880543549485653717067216843154655077419087852705718322510631592242331848706588637404925586365121042986696317386544833327481602868949385627978856713298735650783856235081147982296346628e-1" }}, + {{ "1.54963799196492800547275692224502563476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "2.11204960957075971172969275357900187373161315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.16782897318171377990330689886402903355059628193684114132825684051875757607797689933491076299185969963004000061078683006351157287011440524301691431503915118755080894616168235485089522630543579349054155603272650786560006738889360398191602249883148592535791585897969899944427735543027279681332101510149" }}, + {{ "2.47000679471161216497421264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.52499082730789443929086957041363348253071308135986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01911645804528060285295007365522901933244353571254108413776362642912835636609229733378877024828901273387523484327765744744502840827542422973162779826478327376782490303695679704814420712110588844007646988152318154340574171527693080085147287526207828218450010980129801914952299876654249129807403026665" }}, + {{ "3.03723549186705435616595583070420616422779858112335205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "4.51110323265247643576003611087799072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.62158625261315621796784260963880908165199570383258880752909601743905724906716730454255511124675934144867399204404978430279501754463613692043192608111413253272638040513583589571469911855611383025946828382761211165356334768347578605666178294674917101334371471550226399719868797818976469869780054171828e-204" }}, + {{ "1.79856395286417303225334762828424572944641113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.32059115576763366967701779364219305534788873046636581420898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000077517217823836935248077849892691299847903424265238524662417641027601052147271170002075034613200815926835872160958521395863660559755851166354980024967551112970300127247095245969854003499125350435566412954660499861774431261483707515396163088724936940160199016889915664585852452649068941190636190" }}, + {{ "4.41355937354146021789347287267446517944335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.42641018144159374969603959470987319946289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.74548555036519520791276201322845305843766995125882533366758793048355043544777974793130718057932582612619627280143295972890756755586060864163343519807569602024123450673829021330095007485505005460893008699595178496760510808546265795771516348135206769564722897763853591915237047669941031110007831969575e-13" }}, + {{ "5.69171991829923172190319746732711791992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.98043102542145899036540868110023438930511474609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.35629700595091638395832213480888201727086153567756638562745744247364577078732772888391063571800696941049290536498639573875131887930844892410621248852158649248884548273739508794634953342193256645662324249539648039244590505104994015484168576899587920875428234320711411322714373060714140422162212909132e1" }}, + {{ "5.76954356011381364402468285845770878950133919715881347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.25111872914564514758239965885877609252929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.94463304445870155806025859667737584217029774659090091223865132706141204011793568374081383686497430278169952431756767677964164234313821914580067310902314296078439102264644178954457549643252195734243656729528702645014237867821529512634908260975861471735012585206572278726071364924835281322609605715766e-3" }}, + {{ "1.05123768089208714283672857492391017331101465970277786254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.80326412933219444312271662056446075439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "9.01096635654174895730364890004274506998670967372315294988820585742497849923309225303695080415166238118944235696360277258545630995713146996451284285658251097270549397299546887024456736142173128664145649440632706184379221313274424739352233838868194748496986549948050292922466160812395403732938083994855e-1079" }}, + {{ "1.28163238607435392424349629436619579792022705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.16524102155253899582021404057741165161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.07879719574926016494490747415323778012199705593394831943581938296777477488312425323506097154699459156568032482136467971947677672762383992541647262353219851774496336332221673599562229050781431336707003943210680119687255794953033119424826346843688505841414943672869216307940977860809662475253945553141e-104" }}, + {{ "7.87202251453049029805697500705718994140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "6.39760572205021471603458849131129682064056396484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.53207555977032989055018208938771579303277505887799197079806149426805566503858217166434829573392590992745607709024458374528640995879305116834709101892580164791296787623750765678369128997876794757719509455355831607218534572758406336319858307548393197701741434159035106328532033366541994641153056109739" }}, + {{ "1.85413190872573295564507134258747100830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.69406846692120716113549860892817378044128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.95656735368615067592522859512955039643574891198504549379998394284320814651945584264960315505975008311532240586619468218955713277820799989277348072854744621874725681637220043518336051308494199906438625737004480910828551371454866506648373987268921256736551339157313351536645840751017335445520822528269e1" }}, + {{ "3.99959450842199415454558675264706835150718688964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "2.86709578350118121647938096430152654647827148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.05340685717906270754605609530501932449443307474519553599524954021671059012176997891604734383935653924096296837478833892286774229478680952581431502458132810484806788952807655375243507984165689501659897282979828575230799553474262829100370309746639962529485962944150334131789310986002849666502428526895e-1" }}, + {{ "1.84674139572777286713578526189394324319437146186828613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "2.25571659299317051061706251857685856521129608154296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.23722070622293990830799081708429380180065314114356604329745073190591014971022286949735867992102290979570786194665670044964971913376468986554402193499702945966888241927569660743521069322430532256408138686743620372490125687831732257527068587575688326301178711197108267406944507908002982504230542257301e-1" }}, + {{ "3.58473911190903163515031337738037109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "7.60245302222975851691444404423236846923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.78031144785764416938612223102409855040299356306284612439958299013225825622202999580381834230141933121841779061836895061770649393695477680433223418771879979265527918578121214616513115300315506936777567650603403724811526574832706041635294702581230395655527148395841553708668562384577527922279281988840e346" }}, + {{ "3.71269374692093090395417220861418172717094421386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.32704198530596029974130967143963744092616252601146697998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "9.99998245586875139489901271639028340713779059130027015276766418411283294006537627833255021572845938748168207820412482122290518617722205438714506223415635135045747382101925106285222804464701875561904552995223695133038388901912278020591663993121292169965721308487953050363811103359158918910384771899011e-1" }}, + {{ "1.70108553436059684038639261416392400860786437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.16607504683781455865482223899221025931183248758316040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99978954129792622644650032269094574319631975777438486754903659150962464082118122945419410503323172656817200054190506282421527117453082829189458035945776425795407971906137471812197621061779135748565507246203908206485915975691199432826508885650310574999400116127525787480206412253878273855862615753183e-1" }}, + {{ "2.09225836667166789993643760681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "6.85669374483343502246768252916808705776929855346679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00843563284699754528712961596450017035453860350588570410059871012011253379813933654529429045301434484839481489237559065322374683637748571974104032389976926103159187339564349254244671809494052575105796625285810628759847430784136996879048594191371809811836063684074535025913318716848524590469577859424" }}, + {{ "1.21714727542868383913798879802925512194633483886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "7.04024274981674075615800667549137870082631707191467285156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99851738180285989619013743122680620229360476738383672375457223596142024538032582334141363701685216531955627726353087504478019029760906182307020379318817894422274668875967247480704625723584657033632048027924110460864147683431850155444025526123837240535234902995892523890236573378473187948012001689440e-1" }}, + {{ "5.07736820771065972511537633948819348006509244441986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.97089812664133678943301219987915828824043273925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.61496103531524292145269969904333508188364139708137329208759077302004651060803860997069231846146525416244529356233531058823752839075298907756560474430217361656059248345442657322781131236619023757967452575027788503647455091630937116588678330308533380860226144011143233073363114955647590755520397783133e-1" }}, + {{ "1.05107095024027863416904438054189085960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.03411347779367872590228216722607612609863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.75435618440696236423847758785039217191601787351549036022831398969378880644344551767328463505949691251600586393797511528994909897140379260738080763330267660481025359227717949542759648019166102411005065795694130304853332521480946507674204615568889856249883941530835820527992056685661760535222848429821" }}, + {{ "6.04991801259759207250177315273731437628157436847686767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "8.18837713372669895761646330356597900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "8.65759593884760895858132938458504295554865358684199156580525629386190771627069601339728387260476959873950047671147626130674714736942807728977752816985626622779230687686049014608462755984076183185977629942323400832151270339085974963175219245006492664764899739861651980200882059489983917901390447959952e-3455" }}, + {{ "6.51744748140962656179908663034439086914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.07710216336688000492681493991398156140348874032497406005859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000328979143507415685697811442096253363291297955720636385496027164054688294193762566482130745852122932064218776073663482596744861678935376393042841878114830402198126626873661961854660156517253426476105318520395463096676472118157780746408448524800033381676594338617857965937768629354079942055143731" }}, + {{ "4.63884491638627549647821979306172579526901245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.58892435788971937427049851976335048675537109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "8.33715260820791317269987064747412391800309849955602033217225409481400578667858265909262657939940738177907804353137088637745857746470695800199690029742037073210058760217313184489359114691758908649867287570270285365266943814797806817843515342646282514312200010453327035336204860831498248439822619093280e-38" }}, + {{ "1.49058285795790606154814783579354298126418143510818481445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.70317518258870839037433242424413037952035665512084960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98108922622050827087546461298822670842973092479525322691759952475540660272868395330655428828449033553950251437644999243615808527145214868010990354809843842150796169597464947831412602935689456012651060606674408759590837715937317107067113406559618224088301687347090716482594166112826991011166298362788e-1" }}, + {{ "7.50315265219419380571252986555919051170349121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "6.06222517749687384025492065120488405227661132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "8.40175419689520964937445314051307565108961445693694723005043311860973648366068520257018285775532813235354539177271941463790001972938524250513944002301467776271129144936307452041012641877576914077850978415809262774052418002232753061586235460151777159128199018488311311211799819289180487350061980646390e-1" }}, + {{ "4.26847036788872134273342684451790773891843855381011962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.25843044022171965845742491740821833445806987583637237548828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99967215285852515192073395540137950482554540502668958238310575910483321879481952698928091493628164541705483350832773369892703138436296385686888980010809861693571807457349075609182274750398269557656870778473684116326560067055000556274923680535552295628380182973673412404308833575096574012516864815095e-1" }}, + {{ "2.62667296496937296979012899100780487060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.98943432793326180699211569447015790501609444618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000067498249093796554190906335150484537007905333805853084798522029363004660855846859261868482180160316566139837296027351379815963628562093199672797915615284584800543052123602981811247334355647141931097257473080865200634384690696676990980451941954802180365065774462909125574737179287520936788897430" }}, + {{ "6.70966669446914210084287333302199840545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.16310384563290541287683410587305843364447355270385742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00001744257181843369125556914164986065767377720999640888705793438430385027106235014113094055738186706162642114104415940235112867181288621050157885040444050793876376258047873939583048138039901310315757778797936384132441774545886210926930901727852204521859059543099653693673834002390277355781829097039" }}, + {{ "7.41203371899830177426338195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.08045243497875006967630373555522282913443632423877716064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00001460353450390109753320201848917579634289514937879484407258848004890744776169944597998175250117503923620359242409184317540187082543653993640048666001395047165769964336795615132413269257911431079896523695358479509374941248440346987424514128254145411471716437568325046246372300034330801593929796699" }}, + {{ "1.69159255637993624077353160828351974487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.18026386927718329733494329047971405088901519775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01763302348245649415440222014057755125288511751974439494118531238495212343084716356590900135150471489029857630623786718849006602487868725615880115082270216521029606377055101314827010471252021762724425333126829904634616800319752383603387644619737656819562990847546393907303039685961266007323499371276" }}, + {{ "4.71460529249768889314964326331391930580139160156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.65188827816496541345259174704551696777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.57039862156640741370099717884062397571736028728524050580037613318788846117662035095375103738860527021001943141141148597120492387251375648252287053831107964249223144395667696166786054472499439767489130687268705183565392558321079668035341534647161063188715235627145576677691259556611945549071489064974e-120" }}, + {{ "6.64982363517832908428317750804126262664794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.04124859899293669557307495665554597508162260055541992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.99916721594674747376600569188805403610749202879145587384797447934876298553391460440217614450811626491475153827239769211949770987067539929764774811195211928780393852025574440532735397207179531706592529705918782911567387089221968997852275611755107175151890770337885129722749288992344581262036121822096e-1" }}, + {{ "1.16893441744004085194319486618041992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "8.15678606859390242789231706410646438598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.51388885705521092082676462955313303770964042418254877907252507964234420916080103781270109330079123766686738994000772870583969928581773756873588657991143050640555136731739608625215812170605441235916882843841833089297543893622016574335981753027769495373907938555110085958780955474425308783814139862813e33" }}, + {{ "9.76400625826371292015348757331594242714345455169677734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.86442986632989526896153620327822864055633544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.74623224798347601232565592691979711045580692330641567994756260200814740060669606546590062265074708542429821154943403107394779336685935160305728814542562226163058396994725320974264154815235226634053969860486205541938719842224052325659161610602552591765080618174794519808159266445853952938084827117419e-1" }}, + {{ "1.87868482843651634084380930289626121520996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "7.16929872732812327740248292684555053710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.12028119371494031430335044645564708556145176065304647173808454044697019950167941050283479818252925468559303066000892193796628006878431527857608384081735638513924751307741786259324802053021768713537078672257166368405154064404708746524318561350343547073960189134086007775921344634528456932868446419630e91" }}, + {{ "6.10956934891920536756515502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "8.61245994668030334651120938360691070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.65700792854128829481158381754556960783201446467603874396477753649899987199726050381764154587841579338454205142269277734568001743334867145801385330344031718733980559420806485323497734470145803167224651985614888601581616073332671350983075972830731246525865989689804085186895425350117377876021236432000e41" }}, + {{ "5.12940713132187653400251292623579502105712890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.28564435019894255014284711879923861488350667059421539306640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000373701282973747520930655159796229096921541589463952802693848825441766023480118817224366828254246104620872707491850843628745742807472462411859435943238658855518813616022964453910564185237673973654468864102738810104394810487407665604967406614750596030541491730666890517480494969397423025082726828" }}, + {{ "5.96919527975153832953774529768153911390982102602720260620117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.57180582106150705794678917870399459388863760977983474731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99977473944483761872828387581066184030968843746303338716635967128051482967926885604187120298468309076374477372898167140591203610593108721399453839682426096478159671434202750765691646383078954275710747248498138805135910075991839124150638583040898450493059066421550145802666193053679045930003027645237e-1" }}, + {{ "3.68606214248608399230988652561791241168975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.49260037966346908013329231046384393266635015606880187988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99985103565493113484475922183999881089207789606742350698567516671823393925981239943259423556444582299741676725651226703123182719333272364174176377120721866858898501279006570635020422790273788959353152995392898746327367860857986758594342210926743928260938298323338805513021194833182527623776519608700e-1" }}, + {{ "2.75108139709647048221086151897907257080078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.50370430827189238698338158428668975830078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.22207684654158090072166193557643641149481975652647701708530399277363664695064351610680468504557225898194931419933867113331640493326162327026706800979963281990313857552256767561246682453632232432467037080629483164984556210425989798928121976072588554960434306958147259366170108308967342505596481568498e19" }}, + {{ "1.81162455673292015490005724132061004638671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.55260000441009051353087599967039977855165489017963409423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000739442221122260724005033635770725844741914207974197964181739354726511926916714698090584379202017604302885037125163720681613028683344989131816590462063741786918631523895090976438946284620031268598318287495015673164204411596879025777677083658398098322196424671094954029116891354161564494388093193" }}, + {{ "8.96493500879970817152297968277707695960998535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "8.56875157541190674237441271543502807617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.18186472758714615747935532618938695169587522725634994323764763361322541875338494379271005378981383706775962465651100098009942121578720737172235160080858098630748438403135919432305006360154000115695658966205609995229485314131439314904570801339124033312271333615588491334684665719513845178970476180503e-41" }}, + {{ "1.26612879808979481716102455379768798593431711196899414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.90879340262861951771355961682274937629699707031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.56902896481771879143877379682638527882901861190229819789042792546979238367054331337767498254741605069110970147845996240165269976456347023401814558426675219095881612725781553874494895757386564444732770552998856125193687086542254594118439921159929235553297916239134941949770234940282427408194492643353e-1" }}, + {{ "1.05179746109396965946490565269044736851355992257595062255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "6.59374100718207543231352829593561182264238595962524414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99092782662380324729163640655313848714756101648128347661760755472309885143398472302956067855710190800993042892779094559399021527010697359107101541167758299014549008387517426503427862359734988159027154498990787998696863714462719474369182220777439814743092111459144669908819231194636468040015004769487e-1" }}, + {{ "2.26677931802150922635519236791878938674926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.01284500605095928449372877366840839385986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.04799524981909743425238268974274974124170089470250115095198088233403741098790024678291238778471336000887693628348108623078030852501843027636021269414992355439834109447548416843301419510567977485938290387496561912410461657784176868621026947292962832450377901755820567805673466030070278228671530695195e1" }}, + {{ "1.47645383833588006439185846829786896705627441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.34770445962486519420053809881210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.81864953170833366001029957686457080479745389229343183507996187270256012032168347753440691289295163599099444007484206082939466510290612710007371495952373847856242772883552123786185299979765598455416935895627334117098932505280856391911876837712397381549095944110724452719067485663398985307194410072346e141" }}, + {{ "6.83690460562575097469562024343758821487426757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.83530767198103986204138493576465407386422157287597656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.98542687144721504190991783229244229904437024428948393594123834827455412276977464755147963505927618995184986289919531376928027005710396398910486083058794955925781790662773364003988254537015097017811287414007455159323257827799204950099119284414629154584347927772687791013118617040392415483793228615528e-1" }}, + {{ "1.00205353905587213336758622972411103546619415283203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "4.21472319667746432969579473137855529785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "9.08953646324319429602818744612054042909432561532126770140572825180403651664408870454180981154606920328617475099247353850589948028434533205453640961164641456021776839621300753911422835934782850338468313312210488559936609343534193099022841479411388023651172446221865345603921529386692401675022261632417e-1265" }}, + {{ "5.15232802831238245744316373020410537719726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.60510257181055615571807493324740789830684661865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01431289853951002532506377614168990948051280337886607436878494527645645147723859636940385995419356184615086203041458176935646525562258868511947236909026624331932959131571326296466151873473074426347666272446566573176007728397599624815497760954111152173140369195400219514948443921717606923360226206339" }}, + {{ "1.50327863210486480966210365295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "3.25928705204024481645319610834121704101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.21705224525603686559675227491858310594380597690754424568785114801297385692314088399732454361300955075549296567427255869777962816305497530312793581969492733775461667703068826501146498955373099052386164214730524062952781381010426318671419140310052915928431939434595652675036589780009141539593357125642e1687" }}, + {{ "2.52103950481096059522273522546242929820436984300613403320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.04572569600166157249149234687024545564781874418258666992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99677562816744661723525153627124442052964231793875730324917063167910023632186323828596851920875156111103787347156093646859907405739307639598484356543171131155872282222202848608366838457688692164646235280817749009555765844448651859985081286265963272205351701235959915053427147246220456364075290757788e-1" }}, + {{ "6.69572868673203203115917858667671680450439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.16763271218019875231225457312689286482054740190505981445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00001172763619213033390863469162514923787137097731257478379858496528955583730797624990721270466292542630978166836841730894536953419182253636303821927335171827673847960943549331513055995583023583227615832251837950408037083523512010882821232754743304332778547391577736073428707081283889265580574098969" }}, + {{ "3.90611154895943855080986395478248596191406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.09392819734250876240189143118186620995402336120605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01257436238989364436740053785780748984877719711041249303794530677616720891994615335093220833940115128861191606642103642393403535957041953141054150817528925853538686389534782202437853737346681413564667163289005149907512827692491679645604032151505662903966426036149340526908388743360309704155643902314" }}, + {{ "1.85738968908478855155408382415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "7.34900449082321379629112456655093410518020391464233398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00007223974053029723271350039259412141636069806425386754509098025549121050837680692710943206684686658573776447604596802766176331791002163659401284496154417281082333498905606330772551902793976098371405853098920109852460783688567109865594724989116482969799710457089092798143235841330467446343910216945" }}, + {{ "1.76070615176634455565363168716430664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "4.74889370868937987779645482078194618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.45316765019878240189602403680427223818770335223288608146347951094991305163036799974448576646914163732716464031107846083674367407256925355345653200850687798959392811940414372053909694215614805160729642095127896071955737496902022738055554549005006428357198315347861922794020063710653902271293794797134e20" }}, + {{ "8.59257176966675461152189718916361016454175114631652832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.23640678060561270967809832654893398284912109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.75626791055079856222412335079669380796397627500002019826921615591957724636638189051537678939438100683331885757581588353701345439775420172078880839292692181866988352748585676000159933320197094086021294353349620582341779917757035411891306338495037492064154895428084541796948375617939605049956389592963e-4" }}, + {{ "1.18373366744053128780857914170709932477620895951986312866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.67326277601629289126013849786644982486905064433813095092773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99977165516365318634154013098062676051482936340600676508115018286371174310194281664961388300484701624347701999911368618575116158865905431420415090042447533719781066713262060337264603666364847020671540664275635449461141562032657119830142469510330575908700332922190579477083626027776803818572001718803e-1" }}, + {{ "2.79297046837543444519624813437985721975564956665039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "2.97135089362066378421145529387104033958166837692260742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98254178388410952430693242810343707992963411946313883778028696826023938537768767830025754426281554000607392763511414140886618834915773502093937010404359418681811029932841236322654028803608283276794373781000755359892344545988755782370138251235941283542297935477464591913844965660089628462450619495872e-1" }}, + {{ "3.38113855762533148663351312279701232910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.09301666014966266347874235265180686837993562221527099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00010890478594524709067739908022368917088132812449962876399165997211946438304504899291487317819472340328330375585022333633583894340550549675803507677712058170618442005704437605073252304959372965881786681685588681179433355904579852317919540925268445449423495866437480095339165546614783853750408452453" }}, + {{ "2.06425930083115716229258396197110414505004882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.22320068732874709382940636714920401573181152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.56994381329744106645164401249639056164129850194015191524774235721349310749300345652229762055800940290782810800288250321003967654939060262541583665184611869025848444849240326580936044484294913651408991979990620894378054306407392449503735235963890733618686812461995281192108663576402590588669671991241" }}, + {{ "1.34087695405307183449394869967363774776458740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.48273418616638036349186791085230652242898941040039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.97025233069613645577452155667707700431529405119046003459330154763708616924139333978711947517286910376855122315920165412886432318792826535847675162918439845483335638190760733366507881163660357422897573743052858674336878106847554903297760383077263299654131223242076136517464708165444087161451001347315e-1" }}, + {{ "1.13795829837500036774144973605871200561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.03500201236379312419617904073021463773329742252826690673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000963457189792748049744783509653303667431326364869818483704842948351380610875652979437988682746278703117572921123081696661945181740330111308085604188704279357002138744426600265673193487995475006875655840336689027158444662492494587307695412667171074545903613666004574014189607190377465209019809696" }}, + {{ "1.43733943515224175686145757779854648106265813112258911132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.32214836393443135875713778659701347351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.69028929542482647910462333162857910188985784876407542387662931701295222184216133407420608557785163630976401541135533394749225188544894532723554319205860877128881077879568220494222775086397987960274421371074192662130785663013334009285908262792624635778476059436229937151198221859566242280319019160525e-12" }}, + {{ "1.40044272789335991546977311372756958007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.53744104780148727051880541694117709994316101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01763558978681810389405573088195138451898513946030420888756116873548356901540068272802595421797514887115185086583712361722645481445016465906573909064890341678510048829617311165144452645678278211232399208153808746476971992206798944801345917584439323122735213774632862994806449009371980892407850308879" }}, + {{ "3.33770615636067580211943095491733402013778686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.16340691059281198249664157629013061523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.74932879103617263287699269441230578657539752277509100498121992886363492927534654879230172186557771810338441534937330485904491247273189306610489852019997049552119104082607943340924820476508529648819831797793990936006114678588935819382061714015089476930073162215255275726210879447826384500950556498380e-77" }}, + {{ "4.28996264268685627030208706855773925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "5.55843482735151467322154417161073070019483566284179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.04758858160148749573207693865097611258682532053580644741708378607626299571741454781489071163331961478583318303704887429698138745438016282037356465726871543404600493318018423949357845164509841052287336032095968547544265578409278441961772371247405527391823186341452132702680834735192488255543508774968" }}, + {{ "1.28110344596063102651228859940601978451013565063476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "3.43418931353877687762121695413952693343162536621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.61015280162581259611603041281312219714750672075712379519625520748837900282815093599469657102449329452585522609992906027038154076071639645146113938200595344162570525215006263974571317023675884323716943933613404725430584249433688012398115002318410911938391274174242791011414117839535968615208469771466e-1" }}, + {{ "5.16672517946984571901580807207210455089807510375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.80381185032818629470231092115639626172196585685014724731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99990502044552423124036840709042864832582112050272720529614683113869481837430803897286965523406403026476324601866776220157395635334324411401951420003880457537783083750584239021034205680737146324172685990190142433894632845319189846259349630351570776916287281796804645673831673367339618359511691534945e-1" }}, + {{ "1.27899907316783210262656211853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "5.22536024090327483326845481315103825181722640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00616341899333551359328361392752162344577264467244472586370749414301840554961173829121346442368844768868155278219296270614015234651325697529392935793355916715136924941286676982861345063267744784667777743656327428634674404454023683239192093835032100591051537658643852513812450455406749057692109035777" }}, + {{ "7.11730850188353797420859336853027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "9.60788079495505627572460305430013249861076474189758300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00107405241322382059953913596876333435454811871669131165966566428674069591664017854016649566117750922070455790150785398980453750449040916943909541516125417685189264145037334413362116738563574347465747605135946915752491452923545893529316360034715492483804067411471432361687478500733144787639791290510" }}, + {{ "7.25343826567665018956176936626434326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.29954091776851328177144750952720642089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "7.04970290589109038711395049954355776776342381310886782453562200726034000844667284742622588171082170563883520775218082400856123793786048177341878726458251943347876583569178437736653743701492064380769184875657546923031668880530296652280260428229230807500261114316496980898463695380987245993698126306466e943" }}, + {{ "1.05425305597257192857796326279640197753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "9.41211561689230674643269480839080642908811569213867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00221940552517387456904940935153668768677803438018028587024892341085297549561710698873774378670329922261139925263482590967131460066291169951663366614190003024630959832086281000186573153943388176622129526851339850140935108594752581778544126368342198113455082270613501744317697800189856112116044092035" }}, + {{ "2.06616686835977376654471804329205042449757456779479980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.69516133890853029630996218202199088409543037414550781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.85720096393058346372084885893839606320554663169456270644249004310463500725457211657627998908535169742871675934174757999843761965159654941281377745862394591058408452525449223020548106433276286869407305925521861569746775217097838170535894284575048909646530082294345563168457886536304399266956794807072e-1" }}, + {{ "3.64402451110348510332492821817140793427824974060058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "3.20455824353290882888778412507235771045088768005371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.74947852438644348963594070779458486239729374924703758041706549021145269914102751629698949629550481353884433142728878758835488685283460683679637491539837448325034596988851330419929610091798061933767303224300754233414005420110971299300889653323675957445130038468323617573447274322484402694978713617040e-1" }}, + {{ "9.29240918436359104014016924155683341268741060048341751098632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.10041539819032330171921785222366452217102050781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.30375096076042540689175588676000039497925847630595558133397707131285132566953633275113891277016515974090275087097707081223643727147456085023753621384884096242056199349318008502416132788061805089253485591443085259511013177192516510953942353610198267062490629651968866334656113567343023162640866499116e-7" }}, + {{ "4.70374294317859518955657338601383798959432169795036315917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.29316103610866321105277165770530700683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.15122965827666394521150958097124834553922749706241413675626621322918765539817839286128014659593143570942315119838489669350005299860384297452971974330427527438060831168176929743817135707477251203472467806027668891154074309800997369457141925072379579611854152032663703570089179850821080592817602489379e-689" }}, + {{ "7.90111168678090834346927628928369813365861773490905761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "2.50142935632569063386654306668788194656372070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.72554973148662694166759157160166169303284736393781157514352684466477860400705537599392645875431865905681445772161441577785663278326674184262006684080907675404076284363331862467589217294540329968481020258307213288969704999028809892457240851077890832023610976308448700744934847296072460694151132193050e-13" }}, + {{ "2.19470224538514946388545467925723642110824584960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "4.55402946608165493103115295525640249252319335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "6.15537644035230762511257501642891052274838428807882763659106583075479589103986905326616108567723817554261320425463998387402938492727716723367633134645452074625478383896044161060182209094299460842378984988424538062120485203568234956869861031978112571715328186447068917826940102237728367749115256994036e-2" }}, + {{ "9.59375752767912236013830851177885961078573018312454223632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "4.70600447818681459466461092233657836914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "8.34074971005352694977724271428304704379730503069979006543824421982543154474277701862893673330086806692863058917258547615336829675716810145864841475235135109391399496144355613620559781473891279309689200469472005874869702401500915898827498117462493418903426151104912981808366378491461635507492430973906e-2833" }}, + {{ "2.20730165021212201281741727143526077270507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.06815138837059212754271309009368451370391994714736938476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00003305295163452281794976529673484400203041012190269638476184821369788032078572490628055955783906515975070132315405678121749687518303529356301281556543290455691541229667405975677836660331331546866945589821129205572181796808319706436826468956587053252695087454167269382499127173288396374118362076812" }}, + {{ "1.85780789842078593210317194461822509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.30823413709633314283564686775207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.59033859659617126254628613087390514142443448071790104857905386498498208916927300817260750485505223182216712213534955208892328370772179606978553650153083374335774046910050899642665243305280141884413167811281876091816572586748238812963621916941228650345907682195313189327181720960131248296641667634950e427" }}, + {{ "1.28002693604745983830747735332522552198497578501701354980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "8.28203848010336862728308915393427014350891113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "8.86706798756547273034023259748332998697114154360428093064398895642136945343512222443801509462788398508116083101485126653725181025691107909977090006260480711914768000641955268595050193784354949171562687163857371073429271907026305099383798868693635018067191669439164014101281294813574568021616736489720e-5" }}, + {{ "2.00223379702332143770249217595846857875585556030273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.62365481395694466471013583941385149955749511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.05235460797399961706826012566932005845504749468248264540170967631534913675307979194267567883423064423939335134422258880838785383291061227375243059330869736175934549938928557322841085452000578723759590054565129213090997527802918663825422738502966602188020267614510519712792292721325579607440137453800e-1" }}, + {{ "1.46975278087147759168741567581406570752733387053012847900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "5.86458989513311337860024252677249023690819740295410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.92154549068701501199366439766982295808371482320630816324433379463381296202639580495789257638722760912167367897485745357403740992265341544963450873213458100774396760614353635868165234585261876587876465994053070011062897736386668244554072898747895651881702386350638799402464850863950102149208151366166e-1" }}, + {{ "1.69869769328567166155607992550358176231384277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.09451664353347934838245336663931084331125020980834960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00005799594795372584357977768556944656253178249587480331145989344864034282666379944361611058467140259982713730781408566683105999320504528967383185252941819780496432948156779669264240460517640856647134097150209519411486934323027426354907715934579141058953345456267906766103552413735697517517849566921" }}, + {{ "3.15183975929332882515154778957366943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.02384029084149653920920997052235179580748081207275390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.00828189958217090945616829239889322422890752450091752768664294850744665096849748731214361917701488824218313674215416049035608435896320044761285630475680013499593324921963112908846599652343142683769107300940314664453753090942709855630290654440762603604322610449245678270429752911593206005276375357381" }}, + {{ "3.55087476619042874403930909465998411178588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.98956931787756730045657604932785034179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "9.32018908151418417859876732852718049962350652342105850490583184901223805273843023839695354873994074279947349253543933474250055215956442663452932535132575000870445343325403706967004656960749057879238157659107219147411710899538754744145348815414311088777452109665676822468399972746650501593917415911950e43" }}, + {{ "1.26775488796815989189781248569488525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.00502285798295979898919760842090909136459231376647949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00071834700218288240776940900136375146363527699090847426981092022769405513480212911323057036382071349683106853880233005923304991341200308955960878969600681793506999384869035120625501911973134511693383019876699301926591009688967553141397068289179934328294897849913598948019612426308123680588484240861" }}, + {{ "8.15220048105761634360533207654953002929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.75025311305504219921980180174614361021667718887329101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00038554010810039170759525901230037332621377704113376782308969416671995519944631372963790226541075839243378526551356024850278824940678165140037685990966568856425831851096416371162933528342527414028064433797747326021549595783932074419350022816349807211737168691836224208314746714465025589975731455428" }}, + {{ "2.65027968976974648285249713808298110961914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.00316549124626845923557993955910205841064453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.76325996094662828651112161237788953415887952374670102134300653855113287125254830377423982732034899162480399742930099350206403828614662703257591959653574878666923823464038672614887656376458325931158457664475267311806542914278433869759036943522883194636568041344283954333960707999807543121267715345128e4" }}, + {{ "3.65182751295248817768879234790802001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.67556451265639907433069311082363128662109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.92218138915478317609234268428449378609898504811886050861657038624663939529613919692032879990877291035109701590929770282532279774612429349026418707716959296859399988519535881353467118924067126621065164445440389423581971051504964356883522778929468170495170856030672143818408689238481847643503940756672e59" }}, + {{ "3.06064234847405454518348699721741468238178640604019165039062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "2.20328027949478477687250688177300617098808288574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.55974238261708442675674596584944622380379860666888634356645875331625278958028151760326676909826129760886331850336797218123658397234427228603106790759796963957806080469839015421053939928057033567772138680185158581228274260396763090865346625773393191666291620910582819221973998350912562080963747333068e-1" }}, + {{ "2.04040793254407122731208801269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "2.86284726793166655056666058953851461410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.58821325525680163465105847555152044190569200388116750112228338962598195492329497459385020613020256287552717930952139248724578086838832538138376726496296560875204247514233017557960719338882649967806582509446295835645176351140001109236587197833843059204085625918013701386357232953416141714287393580849e15" }}, + {{ "3.02716069476693064643768593668937683105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "6.04039959726672404105585201250505633652210235595703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.03510986044313446578771317219744132510998690381352607017246273580247626695630046904160285453167383058665284858123740052884532347981837364373948718495188424769656549948930405672217230120189497151355681193015659186537151773454794215525893522934864014682466868462268390720016762737891468184834184088104" }}, + {{ "4.47552570179789768189948517829179763793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.42494522046174552087904885411262512207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.11929646387532568976168597828914488086907276576025509760458985730962224619833220482536328707584889009590311478709195034015122056954215000823555978179815671349373291996702460104546989380293121918158085134301955237814810326108959984625471199876172816491246653847194071812034535823558646590118729075911e73" }}, + {{ "7.89920944916936605295632034540176391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.04372395393338365465751849114894866943359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.67759107384668464385278885844815795751161179367906982405379998416580527424480738041217566954239691080320039512890036456504748798096287871747642118148076943027438116523332662829876900574449886819108021138850402281937549768122792675121441618853423616832699349260369305453263152392638804725787763327554e302" }}, + {{ "2.54801173789754968612708552200274425558745861053466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "5.15927661277336413458982633528648875653743743896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.58205367007949169809279999461100360912902896399937272021332641770690450812544971532999275755132753113048328902348279538087441845456071781043743985319802898282971020600433571724744632298362925010469603804610543751544460798372376992115798540860563907814359172789945116001784572399034814979737998689779e-1" }}, + {{ "1.89928750500089372508227825164794921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "5.41078495521190028227920265635475516319274902343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.06563424507714690167714042623337538555278963530996591844954713364193688715643758076458567982650781640747670966188519005031306885869355129425908043628325745338231076914378682618756362764508582923824741998110533664940173863055464267380496758389944654061554957122449256611900453680459384297799878623896e2" }}, + {{ "2.91020477415979972324322488930192776024341583251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "3.10728022839575198851824744394889421528205275535583496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99890103192413085441074667861315652249320196657611339570482857071941674209639709864703891665811884603908304481549592842627180817065779143546842079140388383757073035382383336415119892457712538117493661547669850819233137331852231641783994865993482070326235283184181541427573679758103030801595943776744e-1" }}, + {{ "3.14872001537003598059527575969696044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "3.43125111933481261039524667921796208247542381286621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.02802334347014804115203210525086340106221839607209085819487247743041255274944512485633547164774253058201682853956553615818500164452268935135547407521495805328007119673698391733155607980906430692803512122247717040507439060960157575458288088753689807084410223837216910150868125550872659514690258206478" }}, + {{ "7.57561563668409548074483828017378073127474635839462280273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "5.50776874093542589960748045996297150850296020507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.22360322691615293009344442522576915365414410103567546362459956848539698481031529793394942148327475172323264893580159766513287240943753652400314434832413344966940876720610075372213401767379175382193046077868122711719538872402153088637192089166340900530573304907112834730373371836607562222448960151481e-1" }}, + {{ "2.62745508969974561619409314516815356910228729248046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.54116524398034698606352321803569793701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.65627927121210139869453772647172972010233396005753285235163657937204725700240182301143436917519389589272478600896823141333467649759723515447005854045233682059842082604402664004516169590843725236432591088329366055949159027684989904142732333954835416376354569871287255391194720780011944013876616447352e-244" }}, + {{ "4.80817610372865829049260355532169342041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.83678291961692252698412630707025527954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.41928564331678515981471338829811408659000181192686008443981749115702769340722053174798292070290561882896008338642826088125297911559295342634515669888076588557229523820060662923011009955171952757056636448724507715649589034168433634032429475749149003931613573665241664071010924406015748971161354696738e64" }}, + {{ "3.20537873291325013269670307636260986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "9.12063633247133534681996835935535727912792935967445373535156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000736273879463173771441699203291296246037525214803383466819484064993717806192280443913585501602480713195981402804796752564583674811227808842648414027111557663920686825861938638104671353044668858964832448138218436863850713355695690765716750462185486284733337309942715764828383697583139810455212638" }}, + {{ "3.61912176346828890621809549088538915384560823440551757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.52277102882139392207860861816470787744037806987762451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99641674908429772727741716066692522684337586976236285526703123104244360091941899419901468194625324926731894302874406101537005325420303987745335631550541398216024526757166654981325659490102941309976706722307972204026369136295841549401634445497494285259254938938876164197916350437289297642860805084296e-1" }}, + {{ "5.47727150864758538517662600497715175151824951171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "3.54622621028518670346224572753612847009208053350448608398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99989699815221047195237797415460745692681672883768835967449812852073485700626675461871958759788593113792388910307095890907937872017129700062714402629139690850899327106043179965950904385626167111246937006767223675683130961170323257583625795510235931710927527056466356951973276658601609644129515473818e-1" }}, + {{ "3.15637438341709639644250273704528808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "4.72407848923734441370925196679309010505676269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.49825547286670319702380922050187415294618434375837006137892453203122331928047047306492172079078511814726958266726273319242885369558258257128888847286538356045014816657847217085941522774109065130033471139571270092091883178037417387674630454737070888538218688730956097543661382768897165490297639608102e1" }}, + {{ "3.43503294936064165085554122924804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.27250150145350989297488020213222625898197293281555175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00162336779090582285668555617540990956375149416793870895822616882369079038963730293631724525621870732184904017056404166569755879690536542415147024291651047693012257723344966042105272046767388935297934745863474716190137901174215179659999117641456704254362366255369408392878120515423933846401645588741" }}, + {{ "1.05074245129533483122941106557846069335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.44512744072382729528143674446738486949470825493335723876953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00001005416673874970641874885661095503816717227379033676876612730865335989893449582345456543451081149107465171659175604293715962189257810117721711365871006508720993220186972724366817623975260748578680835030711473739357905906032894783455531711583331359705157662673931729626022752940417931688341732378" }}, + {{ "8.18657910086106118275478538137690520670730620622634887695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "5.69535439208307230074534999175739358179271221160888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.93351224746448996937113594504910401882994345207771800323049779691276470148213924723483955246436042747455629177564845224233210837232201105509371449087604601761437328836060853287056217115691403748052298316839138971392756481564106383080155540424716692745736592178985310629391299501759133150627938918074e-1" }}, + {{ "6.94796213109996792234301921098449383862316608428955078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.01032189649519636986951809376478195190429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.23006490342279217571806140077665886981099414044595093418295957860943720284086984665743578056568297229139299500245761284073691802977046208070538242215508979634862568996291341587581554469156573033924350089621252836592701785348565193758908337598409016657851371246098654329684058361927838809573986193758e-127" }}, + {{ "1.10592794589664117665961384773254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "3.25260821850983816716507135424762964248657226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "9.77248676688621920044634297401786442645385941311525110002800741928600473067163385046961591455772161080604895545524410628330763921136911631698147157554500689676133210576592147935248743333122279013651774018515939625427205237675732186795164784795174668611013924030393724917154265078516887725307445272803" }}, + {{ "1.25391642141006403698803850499388090611319057643413543701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "7.33579604520485872853896580636501312255859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.68392795308248572652843135364969720382138943730339914636303299072150410868121378543408470390954010868594468316840003936924097765196715356527524435528061810352989069642830612407823386666008449194429503821925534277567874494596141278120854458833913072506701454712189004957264318701887957792196559450829e-5" }}, + {{ "1.43124739542791035162849766493309289216995239257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "6.20942048850905869983307638904079794883728027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.99052723424150661886931649071103918452644460542298398165637531920915224385808227208964029010419121462212498905692527594903577506198009266794868206489817939747878141799591393368960481067737790483228614343187263432824490432996787531286395390254093241449602142598445964130129975312810018929887788198701e-1" }}, + {{ "3.43751575420593244447609038161317585036158561706542968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.51206687051705870317164226435124874114990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.57663597564430277353448388417312985615626273703902768815220625590828356254147933705830400685411299593103143556639123246778758775852967467852603984265071153374722320323459885871194691907711626373620710017973655475923376123554952810313797438555025227910644691182176423627488188876492434022067149277036e-38" }}, + {{ "2.17472395590978127746101256079214181227143853902816772460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.91971825175046888034557923674583435058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.50169709235325052632986882192448754882997090613648358141414144591089112598426944965520244801106015239482741658118850562377407270011579313225688643981938806077750575133252661340927273680933994486522267294226372481412223764992202845720067257372057887189374997685336348698935086839444322249450808054944e-1362" }}, + {{ "5.61856815780757930039405328992430099788180086761713027954101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.29876093753134198849341629511400242336094379425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.81481816351315594384727007893186507859436644672331091167617928065788693663352781510746621160037607384076966766971591864898782687655354341611390803359295084395315487119152362491516158659729010541073082819881189326119491997777097209681555255784910126963441436697354364542857530552913114970532656768045e-1" }}, + {{ "2.69252008622562698292313143610954284667968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.15330514334751887961516558789298869669437408447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.06666279730568497198113724274678005155752498157046477782004178363192374164474721840040331312046115275560496984877594971350062701246211629447728806246316863840490103633689163217579393790965785864180257773316151663393300617519826348688668218517932804149442470238145344903593621930871763066878050548745" }}, + {{ "3.16092590727489834989683004096150398254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.48064997212848559193787423282628878951072692871093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.12772520348616005115304677929962056919100702599904589876944000234727659228749834981600423100421009690523247572724398560756474248595294433046382239886297029833469577515642633205214954504439619606667497183510745512915018311469959758235733226013623764492488909973197069967553629996698907871574676780407" }}, + {{ "1.11417522478442774288426297957244059944059699773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.07515622779491204497048784105572849512100219726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "9.37919294955190238371406645550683331410621638917073656116684574199081255090910984115004225393137968138900076398279876623105976571541314203892497339063273916638860131717065142379547629145053297558185567155580289078804833133323155623898592227362901992618266649001082738287327625009340169715002810953003e-2" }}, + {{ "1.54818678360652516035056436294325976632535457611083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "5.62060471994897832819643168633660934574436396360397338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99950690212005897959136097299917160482075781519044088208212676575453006587694459400083447882136665068803314657182010357110987268971672741796887858729353234727108572424227132082469362733286450718291677866426969142840900462763239110268260519434037322501413834614893396154343681850902784948541773957467e-1" }}, + {{ "2.28067710108071286176367742370985070010647177696228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.22516467629786623624865704584863124182447791099548339843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99645746030268443121474912265456530387059240825775542503945117534294341852612112033263023994402497137577664903179947031417093395690539107266054577344864123860512144985801819409282408928976825661093887120497669159146596001826170808186934642139325551337232119779982282458342982953928951761806573163414e-1" }}, + {{ "2.20739083812885155566618777811527252197265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.63635428348883159158696359858353730487579014152288436889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000883141260854728883702175584015782702915499431300231183450474406119123947650012070542489465023521252692179702983050986429423066780728766911719282820886407479657520041375764406817735028802434658714254220988205387649994799335160542734586791578044041036401530550092162441750788372567864862832251789" }}, + {{ "2.11115639194152252336444952618421666556969285011291503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.91611178791150109645968768745660781860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.03851749220927707096105838017357917405034340382528308320810037826391303266735158295669708446462859180309945589089175400795292926848603356140832744578280150360981737396616217244331933441226205091493168502347016694353942358220609837333188158011389094568440922575728826317171755408132992139505746448351e-181" }}, + {{ "2.38633916347037029481725767254829406738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.47350156205279176901967730373144149780273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.50492562190358454748346649100342667975057580840217621906828483604765156733043048058740688210262627421835218492853562454601684989325985386603026971417507963657922417960947826930994787046883004260577743222590669257927836671693436821127356903028204248621426323317746936948905014560414890048500518981483e58" }}, + {{ "4.16496490135696059015080194853908324148505926132202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.07526112190653293509967625141143798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.95708970459274514353705613356165057031575229424640773311770967490560575262481854947938662630918869775857057855329254545872812061129308665775656748897011265399787487814796202063476887242748791769330372489092700441649278984973352735989854637536188114328280137258357850310518955976767163293227505459553e-135" }}, + {{ "5.60807874972006062050389196826927218353375792503356933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.70244506350627981296208535155756180756725370883941650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99735500279497094553640363695299701240525058593455541261394700469821111611056791299453732067954961427582921898800842237144105286658409494042658058247679724238096009700396852983653186891371272750369926281385138909360300419604531575348226930671075101518323161673992501032516753200240811209353821343888e-1" }}, + {{ "5.00853676861336616008002486921668605646118521690368652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "4.00645550345715264484169892966747283935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.42868005311869594653291738037482789532744928595938052618021862026535850449639612018073258671047578104461913132613998217526422325806836712765473733283115693708797988431341752008408657974271055896785613419004497755473106128411938210880970972796033569804407750025332012993610194266901383355037197031359e-213" }}, + {{ "5.35323167813788168132305145263671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "3.62778514750403147104407253209501504898071289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.05603230256580909333512613256181086069213372778044080861620436376260245170503316441303581724403388552683668422287401763124771418367914789920284987220255387646685601968642931765033670724000770308127910918065433865509022691461489073952236533017504964013454255542118759406756885123664390687006240095440e20" }}, + {{ "3.22976764266951800463889554748675436712801456451416015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.89050305023335795340244658291339874267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.01732691727954660011725367716319147371899471036670702622303272300897410300692262400537048572027256759129565470020582895602617924506137374758437886475976576037363655165839084170315722377939735400391371695808916328159137254265306017499308291350722410467152148965233006027461767679652965168830636324127e-849" }}, + {{ "1.09048941423813448636792600154876708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "4.65254774353689448673776496434584259986877441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.58980988503590960516637371738014660727349100194484396379725478994088734700803526572947540745308063381145664972855458934861597057007568531182327714420486870282357356343021375166932444789575430439279485545025094851301007569967666444995213425647227644871269194317170084391746473828083433195180432304317e1" }}, + {{ "2.44743479435021299650543369352817535400390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.82995112549842228050200887423670792486518621444702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00266010667859458204491495940561046268243246346579041029260554228176172232635197593622622290922199036969298596977304010218474771392718302157017833152484401953670784025973565870850532277945591072432075029519001358625355897190571211275599240174542923282378185576537237233948130696870807231732661924935" }}, + {{ "1.51488749663457274436950683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.02354275702668705760531309145733303012093529105186462402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000985234516448019885473896561732145157443536520866911511897918118736186775473199587722487758817093449012349451559620294147840372481518705271731392645893056248771116553702829600792931868987911801336627246125357506584399976395776801325943965572049289654345210028541577738692060413098304903948601150" }}, + {{ "2.67331385687573711007480881107767345383763313293457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "4.37764930215238656785459170350804924964904785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "7.47571438862309533743624874136133366541454712127562663177399504286662183346894197246880043192629661657584457838166576178504996182224295507635623850476949534360416194135273172780271343507597813231256012656614579448387095352094197763495149376101171772035626900389244626161777607049448871411562278802652e-2" }}, + {{ "1.01808534444340903490910932305268943309783935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.72211847836940634692837193142622709274291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.82611384964605354323505795669056920339301763307089989948479130915805719954810517867370884785746904749334148062069679398152101779177523464996450923425943206891878509254410570738031307822715129842441609577961369156460374327926946469260053825787159767563643637983753386908235973617270978178126680100594e-1" }}, + {{ "1.00731276656660706514401226741028949618339538574218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.18228984435489814508457584452116861939430236816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.88175560346904726742930639398687086396036352224271818500936901685374885901648764892385495076288151387225190990418969616688304224966648010000551417499596854632379457426863173605879611399961688292945890600044144991480340984880181190619092493192482621545694847376381337620163394916517599662918605010835e-1" }}, + {{ "9.87804687799645529753395090111212084593717008829116821289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "8.48295760044814414868596941232681274414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.06922896545426989764243576324057040501874322165012440675766666713649225255160119756183042369835830558457195704471707778294936068250116736974227601059618844500705991834404101497665868066256287785153513125539305523985206318973305432078184236844170690028706643163133079135912179653756316354134757605909e-5095" }}, + {{ "4.41825747491548099787905812263488769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "7.79827462222631995203414589923340827226638793945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.34369652134197483793288072833308732535658609465509415675669768410932243039179437886058214288267645007975345260332874670014492568423533076540783205684921434471069515293441857790677592200203989418352589897685209311617733829289352336172155226574531882652742067029068005584363117523423189997997484568014" }}, + {{ "1.52968448456620720321552653331309556961059570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.63460821261542546913893281246288324837223626673221588134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99996930989216600191785450269008898634303181250066938686025190496179003638914112281154344493820093586185759774048968741774280050131382009162499732926045936023057461223555387483027406180587409400576483490119308402153097647327397891029914779646839934539999749442740222968027612552511977099477561837845e-1" }}, + {{ "1.54590681969825345731806010007858276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "5.80711944432144022698594199027866125106811523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.53179160234960851931903141810390484338949709737193408192930930410912781308171727424842710235568081208824229115859793069399719735722193263870374052840504012604354910230724690998586625239385836126384899034476217672957422789468436133936022499041037971795682906772214055897416212584774512114169944288303" }}, + {{ "1.06149875426708788185223286681946319731650874018669128417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "7.82539004163816664938480016644462011754512786865234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.14272969225465289903926091127128136862591595250320697667906487225773277795209213908946435749298160698748843670986774816760975159538180372090105486573778335998950914987159909756145213525174507361115992516851061441846585401483368166991251261491681595295047033029078105940961946982855869715287402727788e-1" }}, + {{ "1.70942859622804244762450665007236239034682512283325195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.45014151369056887470876393564367390354163944721221923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99874220008245006855542326558513156408919554643242887993818629193137080289456989925446796371679686209603602304321606023129900225876158421172053263787015124593801332165057745276555467837973732533352070833078756655605565367486807321355073518225701436176826535604183999704696382097767183866284922545237e-1" }}, + {{ "6.89165129121799887451649269110021123196929693222045898437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.03300713262715859741547319572418928146362304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "8.04313106664538570098839747789552148131626561809170196746678563650616413426296764086879429552165570381706960290576103965119389999281879292911019435355504974691551612891938410889406352256775463548603589074490341705913775216055301816238813657180725380061984870607389371696477377291283392196645786369100e-3" }}, + {{ "4.27946433404347626492381095886230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "6.70089369397394089659936167180376287433318793773651123046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00007146201085226752984788738357625307865767014027631803309640949680577376696724418376175136252913773532105485594068985474036691750060444806287575074228772867146937453568465581121950409526897590340390497454647087617789150538474509489560078795836109491866150406233412810302502603589419003168433407796" }}, + {{ "5.40162932367991470775092643918924295576289296150207519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "8.23362153160343446245406084926798939704895019531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.06423742747299574139652654980590788059822860773454214351500321781043318590458743790589432652553137712034307825892416077869655718345307052092676953436188880309769835515354046500269913785918625489459139881331406660934866445646807527177908193314853725313276753369974838311556362819425625446719126859340e-4" }}, + {{ "6.98480482930233392835361883044242858886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.82423550256237437978967808049901577760465443134307861328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00020487356414235503163915728935712973913169358041240146118411664231468676920896629650395007895636986611826729763726166983962518312776000911959157822099221405201493001705233813919293314432879950393142137203274049451871519519207057550355386892818843802770417350657588091700213982000763521441126819299" }}, + {{ "1.01174486687951502972282469272613525390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "2.80096038819214743220697982906131073832511901855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.21386628363111930567875501391228231832773971221469956618940994372919354601446271218977478634940587702534597215097311823723977361204234536761437991482874205192547888855528921579052205936359371957155208181288324241439984156409711039174371275245144079425493549183603159162251977135775037801563222969321" }}, + {{ "4.58527642677075686350463001872412860393524169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.20426803030317546711058795949611521791666746139526367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98276019906690498641979219227000354726256121309260540509550375256349346398739094196651394582546860191649946783658447448964727247382391275461932541094336719168645988397711787831199214881092736264632640564846015317413042211277375865471754751928875230345189863352333606975129830522964976988522205012182e-1" }}, + {{ "7.60517875978827806449089621310122311115264892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "4.47867011136062753706710282131098210811614990234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.91022318181765750138709868330053023824369950588567785742389327678334961200987486582852651651749970246817747258718976307116965890616698349626417133054222982034680094324870404036435780314465221090580409266996951521555820905007542674615310907131989836681135988524628981589839950536317534105789412104573e-1" }}, + {{ "8.74441787592109604670184003216704127225966658443212509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "9.16721737539795736814107751655456013395451009273529052734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99872128426369981492114383609632051952305521589536821086005990494116094292173923739983506376030713210025133335713606540746004193037337306885070775500980783374129579854971973151969528024543815880504327167057351706595072153954661171897742253459693134310482723707663819212838281958152922341896338434956e-1" }}, + {{ "1.91138738236028468236327171325683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.41870493681337528357744304230436682701110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.61393719165089070084284302313399424679983675134163509852591590498735859530953368982681984829992497504960254661066913076235623948356021050016415986014420596315994017260378613566207333104954408470522228787617243604128057260092817202582188202107977088110567991555379686212833460754614025473450009263444" }}, + {{ "3.95935805094525858294218778610229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "9.66342798237554857082587389527361665386706590652465820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00080082312808327988582209522378397852005304579172107085124537382297137225033557828343923139785908077173538670582197264674005612125502043965115623737220659926592486850580770115661984729610019606048664824477525628872443957605574420631353398611478369946179434030057548832782863477926163435959118485879" }}, + {{ "9.52749482248151265129099130035683629103004932403564453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "7.36644237252481737243670067982748150825500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.99043290744436080750367189311776962864514898582236218043546095145053426015403970275978470316955018068268507145854768132371105755976745328665490014149700831691054362640281890694866429566348288921720874015164835895723114083232661342953621394611916380955923119767515256749281015210664840084139488728470e-1" }}, + {{ "2.48422895630792811018892896068877007564879022538661956787109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.55993124989414910785967549600172787904739379882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.91195173359063670429359403048505978785219394151399979472770021116863735850753993687072273831783588580026886709426140199445066463954822741869299289627867228462101496659941594784834735871174181621098355725481647468654367330416914560339262972917390166297854884128515599346578674725441419457079115897184e-1" }}, + {{ "4.94911189808764902409166097640991210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.00486277593047912404244925710372626781463623046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "6.45161540440045450223953783783894469144373503171768310299316311211396701039652476264548018632004490940551121650475174226555299061745541449779441170912616150358121670452871969103360706271231784736206842228875578338918267487091360709713844820843854370488212897734417544669039756642667411365232861750622" }}, + {{ "5.86830898821921187469285996485268697142601013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.15714500475533861589827466787028242833912372589111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98538706799650092346821769070662036641738082636479009372539733284347573229317564170016552698886694627816395005478215973507005929122925461962335439146679105934195547032542346569150966461707254588652749552262131982196536881226818665443124490222705261425197752741794319954946333545210933092733146260794e-1" }}, + {{ "7.83501026710203586844727396965026855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "3.38788040794881645245695267476548906415700912475585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.03084303369653734759444079184018763110189145271757350290747789171120440011979438908956047437954061198621891331998729346005011749200857634828740000563446280260144290233886419978479827799434112209614567540357757105949708290107985650241181647155069956615108211465282807906696708079090952998142539773200" }}, + {{ "7.24040157384670202134202554589137434959411621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.21397503061749550967718391802918631583452224731445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.98962718742601158545306104847042012373529894592940838744141601234699871358047935296869274717524339141323620050266212255881930805755665793284647269071772742030623661802389270250239007055699061760303889999391509361560603832488400525248124730452423718749922363976939807153833465852271516354356322016570e-1" }}, + {{ "2.37737491856019333980043484189081937074661254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.16670398708927525177614370477385818958282470703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.49589428217805567802447379970866851398217501608629580197067814528656191899243702632356211673360505654178344944705028006574948563210523891802606219873940153904076904718577079606890006710252221715434732369471615966209956056482424699085238332051063676105524207191799310422842401999054890360978090765282e-1" }}, + {{ "3.01647874000722708842658903449773788452148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.92136460953186087863286957144737243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.67051217459346602496477010560417251705712700254048639078839264060325224717762633346441800378240849611262512392424682983226473649608304764571881449403455973384432668551726106109236708017847884189936294979084049530151497877322166267026808199785689058092334141134841250691148642129989881676444005953065e28" }}, + {{ "2.63540555826397102784364179228759894613176584243774414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.22820432867716089475607077474705874919891357421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.06662853666315384518454771688957273896640018166337060934230580664851581626370131366235045252515485872195142490483479220526746937459904335480861408290098145258297721984393013560504944686230699800648442282165588666276252945193146150539010418085408269547841393316042913883904363908615604194055289620194e-2" }}, + {{ "2.26046063075346914672536513535305857658386230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.36270389219972226646504509517399128526449203491210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "9.49669691356986597021713215820093379236513850713669538194655152931335203737791678558428932820631859896635045077055245394317491407809178976243739664980597540207413635355482092381212167318467695663002155241642388129246468412919845420697165678187848016391630764936016535264450983179524692369001196616367e-1" }}, + {{ "7.44369864652441037833341397345066070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.92138014336919438207473831425886601209640502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.14010675669123183496921521116811427733135459824631474903189627969592690975861278168724266785431509343760131532834105760648359541103464859507378780843287835638142981311936553660415847409900494706845746029735940277531884780112929935900839635096070137371899495277565868989524061668633390669303733877713e-1" }}, + {{ "2.58707365843879599776045097314636223018169403076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.94714110472695892894989810883998870849609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "8.94285469588168562425042075510651649105332456874498432065780910860149873485515925490595348642217083245456881656394030092730262652761300876175697759058061470631341983801941103052127203347591729319027059625352617883993869442078699806792081819748879905962225386908139580991345038356748418452094703929970e-310" }}, + {{ "5.98084615325454649337189039215445518493652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.54141705573080567892238490479428492108127102255821228027343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000134883014846657688131845485191611848674206835683154280061306464539283951337684813473177431132125670490032207511582839375165363167348982592154407605611359695341748966890300250815981718309647127029989133813099179248600056821756358657145575917892530126627067999467459186401635829661375435200555943" }}, + {{ "6.95026071869872530406553323700791224837303161621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "7.31225239711935908609730105922608345281332731246948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99946829922765932774347186827261089119719545372876939189761602548364480617029835514052044796339343249676137993597737045638155557799285710458997819509839368231591299591459306098956962406996519241338464726435617191918273092870466980318418139849371272285377732672340181070589663937610591450209282798517e-1" }}, + {{ "2.24073444824900158689473528283997438848018646240234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.72011372485644930879419844949040907522430643439292907714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99978273147710365618565727465750018434266860028552780634511158239820481200127637360576082082285493761515451879661983436902590331857062933298024957408602175417434650700857480478630047039957552639826605254005583176460691229891227955796802817287827361621819443402008175782397464338976239485836367013797e-1" }}, + {{ "1.02696336152198410170133247021340139326639473438262939453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "2.11791001950321867638993289517657103715464472770690917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.98056858099165538580460452287541225753365554206313892868475688098072267264713973803329319240088967254425048329384938932204820454762680502689447633583472338302047491675207245782389326788006117820440333632657775030341985234164850042741621548603372080092391251779877542034296864156086357253603371919108e-1" }}, + {{ "8.67037052863078860909240574983414262533187866210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.52133920341677693691129213959811750100925564765930175781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.99277952718489198651035604747543743540115676651768417733688848831717723612326298765655588890670608573536137096893609251918929861039853578444897886108139617036413401117695629638378951997111811960041138307910848973294872108144596558607179052633028242671568000242144929604511881481654385461936722413631e-1" }}, + {{ "2.52535597921406917976128170266747474670410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.67545906951556844433071091771125793457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "8.98282264364143312494924261974141234695472294090992155155562018911995536275433125782292778674260525238398016330461123980463532873852775335243553615531641077025771609462191107211129184970987736565747180479720790198029098762244705019025351383419378700872375798060833692002857187730789356240125924455777e234" }}, + {{ "2.61640599122827916289679706096649169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.04737226836765842108434299007058143615722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.25310610377006493866619672909110501466370730517133791833746014957247005356303121141646462034804208859942897670276612700251850886627624409691966399085604959689485003780186276442904234165384933316935452289326908453230024435075360037297385764282630607352032826861327915100978947458904222670931759368924e35" }}, + {{ "2.82002594439443032836578595379251055419445037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.28903360394438468768812944276191956305410712957382202148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99981126663120663978315445418195178347518855090095327320928958000002380082757914082726230053423120527749961157170801907113926659877545130473348116514066094356797962151622116993547396704816898570832090901788549840104993042307779674567777216024811187461718618588120530554820575895739988590245022632269e-1" }}, + {{ "1.05597237376428054744792461860924959182739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.74456803510535429779793048510327935218811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.05450439582280470237419243848514333965208787934652393730167951372955494178606431812200728304139567804628971230701860498398849175230634941866518705534394558725303044357497118657164159909944927143807152603979711611331658711835035945317940163428557910521645089962892594811777021284923659424445609434015" }}, + {{ "1.92238907809509029789296619128435850143432617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.08349612860076613971363479471676782850408926606178283691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99982133131096723846335477747571205458555360592772378989843831769539959961315480174186773210831188200236203659966289556452394505676789152783853641019895730138295352465651299769502538786481056285110475730395967855975688507419189456451422446526295567348482093213471867865722148473015661603656725132323e-1" }}, + {{ "1.04631933860085252672433853149414062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e6", "7.47628658058347578263536092890717554837465286254882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.10918690854877106790971565776367526216180983995819057803660864422406143847654780992569076690586240873186597255294638451033694659817944978005382660886521706741399259776875547778479274738700590433170032223482808245749786294093246294856718197278358866518098957741521257199802713807166809120449267805013" }}, + {{ "6.36259548895734333359697210141803225269541144371032714843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.22809772788395861198296188376843929290771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.52598782338450286286135450458954573598472802663327374811636800203700927786701774385033841837545251692421774984587119423266677067201879737268514092791650544542213882071172025510515697098553107823303332247548034598510867132891098061561608401432719775239528846321974734634143406918807796517003534735158e-64" }}, + {{ "2.13062266921418196562697244811346308779320679605007171630859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "2.38534614031968601466360269114375114440917968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.19098455118066498520013706754490677591984461696830181149035955535619874262474066374087254218809585126187088590005269981305550987677753928730521021427525334082765124171365549957770314171493849134109885501003714622689267145862269434956103582260650590467252136804225198053437675495933201621005291059680e-136" }}, + {{ "1.40290401591987802021321840584278106689453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.13722689335705595681247359607368707656860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.76476316747050528850692000246200519522360470716902181350858525854503943786512297020242024222896565430817144786078487939900580658865175044648134728561580288938753166434593435107710997858417174150763109875175878816362192204521588377137231081824131646740939989148534654273494711671253618986609286323224e2" }}, + {{ "4.37201757312766858376562595367431640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "5.50898368829070932406466454267501831054687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.50016375413563777673770541325000240347503109832508653488647336857427144256430628344920480322962866090482161278435394130795573385145704869750655237320185554045574687208211132875092396633526114578443250901360527371315672281676871350085960576744972765455104647558784495896122434499365424664074824652372e2556" }}, + {{ "2.82657718261440410630058739371861520339734852313995361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.01065835722450432997924357758634528181573841720819473266601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99989414562934374733570123984537478193847375990023521202992404597564318809152441993727777418090556514104681985844118458823465596529403699968559686663737740106923387493303105200565503166558779713221587331443491180025140468746214432126679720477339697928392369627582889524402889778083449486287091857918e-1" }}, + {{ "1.82131588065436497009264016355700732674449682235717773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "4.66518199450072917899845492684107739478349685668945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.40207373373989750079079577094631199620167306803671706440022399491116271902378455342284164919251165911009699545436187010204381502830971843813249510091499154307328869929569251004649662529059388775244320275509563520973233815719214546857449027774185623555318990471004404713606927167122651605783870374832e-1" }}, + {{ "1.46755915364810964092612266540527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "7.89043697836551700675045140087604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.64484232464543513497888195163429809804134777698713994865506287396508104602871734408178720046618390944324170991778876210342419644694461221793882529660281950244593440074231456401876196827229747637594809904497759425267031152839358279700896103069795279548051852526590187125738047135851503597639320208298e407" }}, + {{ "8.30433287676949054002761840820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "2.52637571399967619800719376144115813076496124267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.03503345548731106338710812130725055986503423501253010837510324365889248445099107670056377581266593900575457325985155519568071726317821696776190852210129272438899726884098324950090040468317646989831449979292183766681690581501814228892321721246601040936202160676525600474705308542633568308584316650080" }}, + {{ "8.81076109807957895100116729736328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "7.33372790631923177073758779442869126796722412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.72892191263152309368418398483858745615162148917317277888912958706672096823639413941816735201743610855503568372158123380568416223942437204395543055191166267974357638190306465483077702922759360128463612732981531386413914170095452050612671264384868877433570747466951378322325020744405691770060335633788" }}, + {{ "7.53729022560753492143703624606132507324218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.44997674051331170439263495985926510911667719483375549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000626746844722828444925305995099577313805301524404103686494009081743532235207019307339151083010194102029079910572707461595043287395038108777455456317947638812268175715959797135803525856300281211049078122806988241700281453385528141559419083370029575853474851945010647429584718991721854559935746944" }}, + {{ "9.29196125311857485939981415867805480957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.87364075941672677400040569750672148074954748153686523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00130310607123242618493657884019907082179077698498276221909900016213891825242765534255421206798520599892641330780794108614272121210817595736511473642012182311222406630247676600611837624670300497417793849558413334183751618128852678982366003027694097779362865347129226028454653385495003448455051752341" }}, + {{ "1.43727353532569850358413532376289367675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.29608176142756548188117449171841144561767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.54783993491495810650470280449947427623348347028981499281421336796280567779408506141109574684107695839213640033321254129078108321583824176685378348816016878194065833488610016432724082665467588150668096361892027109844713789484964974482948538692616206482165899790288506924374902752205806598101379280087e2" }}, + {{ "2.70759640224985531631318735890090465545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.30536731556413743149391848419327288866043090820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.07547877767428083419096142604570911700485352561609679581466039671852713698452759329634869067401784752327384511745999840407965753203664746748858043080448574928987130431330974864221970333531951352649388383982665219131905566066113253186390249711325528920747650049981618690921655600270254173866304929129" }}, + {{ "4.86911459659213416298687016059432153269881382584571838378906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "4.64415295518658677309531412902288138866424560546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.41012673791647055159490710611797984019709597197766274319967811180940457128047417078813260208344264234412901043623761003849931025905704896535929048868960146432780155662155674231586473433894529344683868489738341572805069281662400777414260520026876565570790884943500995948410148791343831009292038245400e-3" }}, + {{ "7.84854690434243218444265721700503490865230560302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.46294874434749200275973635143600404262542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "9.31540724563669307320322491667157973956200661651434919571593303846115863894103669513415833366999982869469042192760040827577397824232012793869428364179080549290195624467934132481201575233560543620306283174662613044511585064238810137330925608875093333350849757044686376810419383361338035393598016327803e-1" }}, + {{ "3.72120262782922945916652679443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "3.94908530795382262112980242818593978881835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.12206584334504219728846621264973553250302703946785171831645645721830894010675262018545815052840050758849380777393422282576480781495344500008748097426459462508969278927821357065182790433439566919608820582252667225317461885443234193297904549706413625058399088149505555110903375380342716569207812657836e18" }}, + {{ "2.37172835747338208930989900125041458522900938987731933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "6.40757764503378617060302957497697207145392894744873046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99465320336479719185464362393617871174305860472162937262848024567759736497677820188393809529906684006391677099787283285239332531375600773760223206100883246634220752238455329498878968166316454533321577818353913376078773928516840980584615525022113173652501922620733886925072518116022140332545581471584e-1" }}, + {{ "3.53605103337158652720972895622253417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.84582476913116806827019900083541870117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.83532969791885885135620378353794410619553188299174712267165316998085251325072529407513466403156971688912550231810700054288873685181499788137652636209514628912399831379317778239395084315052983947372535292000124065735878003968456173427606734312841500343489942261612441073694733682134245803236657004841e725" }}, + {{ "8.31048089824369333293314215937996891625516582280397415161132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "4.15539351718839655713821912286221049726009368896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.43482075927723057531497663442495255886217925614713738709933378320005101165593393456330280592636199704470243210249220699112677280162135519833702952111992891673206729843009842099688221317242192847449764385413153153282253151503752131156497992327652425308884952829049613144312048128169217759285595530627e-1" }}, + {{ "1.14666020001788820081856101751327514648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "3.34127651548888934485148638486862182617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.74479451169065114507177142090694649425184490446641781570460948781576584635840991601731927655494758023459925015377386019778946251375096661299820054396659345784163916943122911769409035509491324432205386045800229510005976694475685559497072577311014446199955236237444975977941360792089045512126998703937e1022" }}, + {{ "1.59284463946466757988673634827136993408203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.37368596141571408519865826747263781726360321044921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.12790541394790276732931574594592716168427963234746835691403175587826006982488095536822241070760245600803352183137207993347315747261870544496930500337717553335079860285134922718636682581363247953489931749833309595523465412068635376914524529775388476847978990731073661981262435307448746968442209991247" }}, + {{ "1.01037463548088457532259099025395698845386505126953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "3.83350084750183555115654598921537399291992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.46827959515471898774763024079995706113716782750728469166998382738205474672874505408339070961454993286360763402251395607969974201963555866889613983970569781895238062738547839409015372756811222082668539050479266568911339662981230077013588037391296361362960017408451588351832195207411208108858157498757e-115" }}, + {{ "1.66695565004290529032004997134208679199218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "8.71804015666434395370743004605174064636230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.16219309185108283690353246115834277672387666007297244563945515894098174972467389980428784832971321037184548414733298149740082669071577857913503517445753714679820984984835536300423998074680014379718142053804437180632038614386541542054507333387434066222641647278889877313111291185910035634611028423893e1" }}, + {{ "1.28464602296116354409605264663696289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "2.32457638429370376798033248633146286010742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.24945391385140670639469572823424256394544549042741674612450176003078448450232834405677926416541827735839125915448795224664876170676948629996836691342006517593947756961464160491430339434651171508096026536520981556090838358776179831242252299597098299062165399439487062435923683313278394249407345431587e95" }}, + {{ "1.04339649065651030425752598951305571972625330090522766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.57348570830582303869960014708340167999267578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.13059686908080605126564483508274490473647130063580548021629986277623406548383789633827569651948273474979014022501027829260141472868965231700274633764760142846471542740886183449424861759202613481741450387488820213753956013540876031520080117102079251759436887925675362188501650887210343405664270909838e-79" }}, + {{ "5.98527292754746476077798433834686875343322753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.92842618905841398438405498438896756852045655250549316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99969570850103897852254602475534171540024098089888531491644885537022647868647455296214377097624078476427734613966180360314627711193584708132475074727707481960045949327090840155765239976195485323033627665295521041657350135494380406033384926325020170964497589858453537791112107981125863527921983931294e-1" }}, + {{ "1.20170821629471988138682103652854493702761828899383544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.83573171858579975435077358270063996315002441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.28605001646404799122123246583375017811401439409264242217956456924187147921073178601773640157007541107990624712528914809901097933653148466740296742087373566926721281981068789281547799916665066119657434350735735616423796448248252402292977828214490771898387468010213868209841336736006316556313401379158e-10" }}, + {{ "1.79027858130276217707432806491851806640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.03754584982387711988849332556128501892089843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.63044664995037750836987820374386953646551425036186940515842751543311970070428773125366390621088048509415536569966741084563251083225715464442813762547476523458275835451374563942157742199280762833831415410370539590912680755089996665637460577287883121257390441169299493248423283996313182295602073608455e33" }}, + {{ "7.71075177335318884264125927074928767979145050048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "2.64182056353383813984692096710205078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "6.43972399050369154988520798910605088410360743083682368257478281007222478749780386934407011016164443028717189065642983648339942330570417348717676304330188520673656075843370307967688074309785894752170432378373350782687762813282030251151752809306457995236444306078641839344649086096494148698382826630683e-559" }}, + {{ "1.22585961723861284554004669189453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.01372669446815572924860959780346547631779685616493225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00011878102928302779143036441761880708224532433147368168056931216968198406137164127175122694955536795144107173837990207593653143943257391177552069467355860858316175819319731322452047752960070552385154812027281420138955970684262089648831370958477699568344849874652831370849460274952408206982772881433" }}, + {{ "5.82595149644963838930777910718461498618125915527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "4.85058768638723995477498446282638155935273971408605575561523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "9.99998621052671820010209082288722125377109323080442152434584440919377662337625060557131747020218413297035621822998191924210038600199853200536989949496907248450515440309961142400248274163420688419892365590086355187405743025995286488853302886303794885670413483577122364857720736276931131470386157699818e-1" }}, + {{ "9.01125395544224438992841896833851933479309082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.21806070291085433154876227490603923797607421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.38368157061396129371090614663532617206257134398324144105974743560347038187851945959992361814602150755480311739774866352614225040566667708793196627370259194113771020229764238603211377558658426209396490633521450588911944454397547213176293597692411663128824894095155297793732492904564527595779976674988e-1" }}, + {{ "4.40965439472245090968272052123211324214935302734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.02453990431700336927178796031512320041656494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "9.19534075097294910062427312364961024864527797483767863624171403928319226867976521096128692940847528103007338680691678979870596291215052686966371603169090630798213135736273205172476019108353742027081191692977102801637543740660392501627319952653856947188066651067307484842658131091249553304134437847486e-1" }}, + {{ "1.93717944386320728433759086328791454434394836425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.08574263216941169218898721737787127494812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.56194064144518235667018224449588679976819296337783156090494451036523029483949448332763991177580492553296509263765798810431727918219796862387760870580577134565230417714219352767669331762365217747400655499790736729474440290141888015988952364748907315410294417222286566628219298383793200309754712308589e-1" }}, + {{ "3.66479892681643832474946975708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "7.71145011595037033202970633283257484436035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.92304236247268349096312573893392045307545699411902317264880124837981164329935084560551082257778103184407170649203234984204658334295355705120603551098245781624244872037069412927213696722873101986921044921101077821551960590243440000669839151585453297946266135519928259442687204452169702512081165606273e19" }}, + {{ "1.32708985351551091298460960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "6.56531833894015816668887630669360078172758221626281738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00077473925602097877583679698815018000110220247989590351745049914772258652489667683543311902850183669682134777670514222872443151397469262756195899010288195180434965887160900063533882057343026426147190468334739066751949659071732450855977621834587152702675615140712006936143437739732339126497413250346" }}, + {{ "3.52775045264896220942318905144929885864257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.20207441294177685975341773882973939180374145507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.19164668712694362712251058826210564533792000244902438405631163228898011483361552530774835675890492313952004188178746361986328169935055931569379688204574777223286241370824460769287348812931304022631646073013552253933784290828875633916987679684918077103703055564642008994164871305721849760321403415697" }}, + {{ "5.26721150567696895450353622436523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.02594021105445992042559666401757567655295133590698242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00252610964243996116042029581448234570507107619387893463104238190901401098561255564385433004137657583567661490188312636640964083001255112695679226528406143723662756570159800308402030438165398677929717369572388554610405821138849352686065896479954227526563362385890018562652478441542017212666618852941" }}, + {{ "2.85382232656423795447153679560869932174682617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.21622084331017621394721572869457304477691650390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.13603045090195516704596534175318401579207918841598587146324536013529784552205952203801294482696233870522877138037982641276177183524409958004888324787356863626406890600708780844863240402886258989044381114275612277702992295412653204859730899096318397139691123133990243168861782693287239971524166152533" }}, + {{ "3.93381694633284512141457867073768284171819686889648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.02640519319720624480396509170532226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.39863675434390989723351064011214037513398262547140577736762821607782111942948883337093856726075063500818067573716198405459606323946322650536233861891286348318106161892821504014313663700097828008365436512713907896457061009150442887680100088324705807016079909429412724343222986472982422270499720872159e-3" }}, + {{ "1.90723973215819387405645102262496948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "5.12980954046070617650260325959266083373222500085830688476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00003874831722429751496737922917004435479965257235816453591525868492670813319281541168275796018004391940278219820598993631669244673032352035813333397881915928790424205764915135090114218540888704442481908590391442502493189810976009897523082978954781479402200004590037271385433077485827559023806478611" }}, + {{ "2.08352376339207012279075570404529571533203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.77328372265651944869168515905855088021780829876661300659179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000308249415661310193935943862153702303875909245307529450912006821815453371252563642757366042171762708256721399309832054533722706035892679765533583739735266608823632317266441068592608135365434098808509810551746075126687287986572543900322800829577692516676548344312574211742425657072976921014511642" }}, + {{ "9.71724513689399464055895805358886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.53600001609863927917037917936227131576742976903915405273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00014104020491665960642725547509974756116986496973147973056122194845971531406444606607453003866992922578566310810305178136382912507500272971783788119308610688740112803511843108270710764262658648334376396166426766278251188688321297859103006142315969456950763638190401996565523343208463418705191958244" }}, + {{ "1.39802629394119207304099383737394646232132799923419952392578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "3.51936644048749802671238740003900602459907531738281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "6.22241870897130620142553713444278896319414844301127628403550478555392596780554049192378201563747768162180873879073883732945738916895322915439456198565943172406197196260279982663959045275534018807122490359500452521705604768928620538202140216274727339329295923594705918674314862791990908520063913560002e-1" }}, + {{ "1.82765007732204644297357987170471460558474063873291015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "4.84318950269757237947487737983465194702148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.44507161334831975914976330209249902713146345349963201960249788428960802366282255229864854849664361912073985037641790912699757539023105844864929631975643935921225809946412808629805438733741027621604921419911409131275740749522537202228860884159853851509071131465735369871648912668689687943767400944117e-133" }}, + {{ "2.49872242289261521364096552133560180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.70475708243581758338791587448213249444961547851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.16348084392128872602170011561254935010976642009637548196335495165701186585536416597718806964461847864028617635977334329848073696152520245124091137376311572172062522206250814543168673719325221226847866492589752767830775399781911226358430095279351842770613889036173222279808875420192058143269430231674" }}, + {{ "9.73728711278181032710149489517448273545596748590469360351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "6.49131637906343872401748740230686962604522705078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "4.07165047632947683093273589058329846367047057355046748020009102510780065766705586588667687646255828190502946698129852184038457736930348397388946238687402139213354445146888181529201139114650892414118512134805367250310852437034078342906915160983796227481872425495472151960083249503055095175373933146792e-1" }}, + {{ "4.41558345670632190066440259101909759920090436935424804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "4.02580267030248754346610784438098562532104551792144775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99968900351231822950433739312428495072856038776486153703336951900488129027691896751286362525813536862927182360156159008954621569331770038862723809677808006540779343891491372231781933232571078612298233285052166498857617406809139173150092488738015228536389093793575323664246229233166651636689627818170e-1" }}, + {{ "1.69439965482008625397014611735357902944087982177734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "2.70724294373208412833875513570092152804136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.82874963902734961145255850699575978876746826231267390332055952052622176060893943203741788304684214781121351119738947541263489494899175563981247061980860747331222509426652450764505228926170316851952179492921780437496906593243321687842665376169899786546461700589626075813241454757704572169462564574837e-1" }}, + {{ "1.03376346181700355373322963714599609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.28989017209520627493812838793019182048738002777099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01199452382152846374481951076631164582584661608322894290555407864227990207508639820617740715279797178581146570337346215682655494757376897027306747771093102874076785395996716253897920655609144243672317898938847395985100637001354712944101351050038536687079382428227717980685264632621156939159222226580" }}, + {{ "3.11283305234331397759461879104492254555225372314453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "4.01353477046427009958251552745878143468871712684631347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99986074588519454560640521673442935641990554362956049271045530697088039943872329332770296441408515271037076808977915428133116228156704302455915102356256867263136007644093137679299480159178566422686424390921886424606676712277018147908640199369062110318937373042728100659267805929813035245614797996696e-1" }}, + {{ "5.28149186098080924978148686932399868965148925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "9.16657975145258205884601920843124389648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "7.28853014056156731737794697397317103994217559431541111572375406126519183769444357872853226505354592130101907012445487770770781129901235873025553849331106253792412404560306141938477978026852566898693906386886543485615404988699045603447639500571979436388663669239796393481965967462640474331680310932353e-255" }}, + {{ "2.22250599362956213767006374837365001440048217773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "4.64204894849468473694287240505218505859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "6.32843078440077439221637641999286892206805235377727400014747144482178933184733036820827184969102097810334387052048590277206436733653974464975608297721942370810634826788083279979408768576378602999295622590369226553818034587114239802440932660296228167167346743576531361276267309223102513376997022773121e-304" }}, + {{ "2.64401597631773445755243301391601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "2.48515468216955248692556779133155941963195800781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.22595558957063988125039996231413212457799685089809815878697787456948885300739760428233740293311835672030485009491199517382307607053064251483492857230753137256332086797523013500249415836024187602707789116720162609479623122987122977570646771495383250532455162474303561808394969890452286012410188771582e1" }}, + {{ "1.09582116879168154355284059420228004455566406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.12062729806059380166516348253935575485229492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "3.40731230607113577867418131365007953849097556433032366687124266265609534681297061468250410931194577479128955229993084028648709681104213544161468193428670594705798621530529153971465865443890890717329532471903443507290510241292018220973611927868861647858691705199882686680328023542042496509604517393163" }}, + {{ "2.87650329232355375097540672868490219116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.29636994307592203767853789031505584716796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.22908880787878338117870181426636174855444573322349359087228723914632875946311491878034980145023441888073390972797385266938998183475968716718276000295270333868881283934630328911650991709812223171518435502540229986453603655260898220094106548795285001784222894626512051690586979041086530161063766088286e48" }}, + {{ "5.43192335581155216501364479952940200746525079011917114257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "7.05490815336499605694119130472330425618565641343593597412109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "9.99991447218133598413920881391105179265568552579320617946001886143605253717825160221002770761833078341617996929941439664383856515269642825892255570319730959451798678974258583863414985420861854967974576953145352608585972242996479479728931155364675877878808323939895254383920003458645959690646207544957e-1" }}, + {{ "4.24450620737656849484897847446518426295369863510131835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "2.42617657776718897988388334852061234414577484130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.28295177297287815001307142572162153750668927480049029937221930255174310738192949066940496577252702629998657734311395912708887847618250337367575924375521236807234588840327753338387239581722861162855798729933237542178055913633273793008757291901196363208416962469352000552707123078294608807586649015685e-1" }}, + {{ "1.30733273631510917012210626353407860733568668365478515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "5.28858724063975630660591753517962843034183606505393981933593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99964885633207072968580726334787422174518544602461721143383625224899368056665861649907581709049484723249000855383620986446956783244965088674964206494776757278305799759524067667215395257158003498553463221431113016348494389058271382782227321845047125985119505752219731349818937084514014330356212827292e-1" }}, + {{ "5.05693319148356598344284940083070978289470076560974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "3.71295988486159203589842547899024793878197669982910156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.63937121881680868303835544307084885674388908256423717510775350630463810161245157254316013064889945722190309457613724784742119883122943867724213022530021363225255978426044946346577578461808416905152263622045415849140604671011655772958990313726815312540544848648362428160986497782665450731113127323529e-1" }}, + {{ "4.84423969203509041108191013336181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "3.98413458911828048669701018980049411766231060028076171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00430738669558002031403659131744896728312485313631409231096866927631637993851247415735380222493024677897434245013356617271278547792035688620287749522586547267897264556329014249359221662180556496497208175354676304526200770138492165863545577626683932270268515447259703077574615595169323328662157853185" }}, + {{ "3.70784803656541983585270827461499720811843872070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.52501708992864104530440272355917841196060180664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.33573197351168666887962631201029384882638323647836131662987813863879776215233605661322116050262224430353678691583537529582375506359810080440891529163886160078411813398386404062767305381544566179454141780145518165423921596307439563187082576279320332050551415851387221311994490392675793780232895364275e-1" }}, + {{ "9.71655514772415699553675949573516845703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.59166384187756904111665789969265460968017578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.35377653844658353569031679679735299370922232948810544763027212743048187579990164187893014793934410534408779634667801500692064187926463087757507629287841868368096408503740782370080191376158895711024144836742418575636184986247750729343991462010937031402061673932392367262371858670977341473615463130359e1" }}, + {{ "2.19264585936548201061668805778026580810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "6.96729316179001942387419288316152687912108376622200012207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00003755636032301823537943813016356575902489314188145066916221494580392625081472816947024292161874513732270899683702071327371665141574567958235034154797657204764921080200596842458370044167411926333595258330617813605034939486089552138840272033589961004832483480269032835319807553392086565465392533307" }}, + {{ "3.07913249304984926180139837015303783118724822998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "5.05463804011641570923529798164963722229003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.01796919571840276681288861157787148204747502682382876961304668410493347723226232435621763407251840958497596600197906374696494268910490419389807332560043086656936398322936521311486726743408171670806339766715147358441693728848925652781609216889389399280179459317545232154188799226490332505068768929180e-13" }}, + {{ "2.72793625008602248271927237510681152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.45107876494454290927649253717390820384025573730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.21356364414706225993709314217781803611734556534595777181951409142649823132949473277169982486320740015805393683502787636048469072138860871755431959907851351864995912275227191432009279405103766593019141570051245200073079914866268809278471723253071227068595740039873872137154853304817823898235004618070" }}, + {{ "7.23608622250063859837609925307333469390869140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.31713845716947162145515903830528259277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.20546015073919711264373148066122758661068546232444031541084969085534241548251886930568813690809866385000095984750691172127616802373754602142656508934912781801862005537086317665378844206989588374435568687107987862008034665185792976330120721552229886514045101504253350965371418298181204870517230728955e80" }}, + {{ "2.57072303536429899395443499088287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "2.69790274993758974475532852466130862012505531311035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.02140974620888944930305959435799702728843289682449376214925750857783066006891649041158724227299321084257799199351924992147805951706584524451302681812312203333848599297059927350897068391576429287666840858314350106940048605718179391844174140189607359928083054157216235380992076831905704302805940691484" }}, + {{ "6.27071378772734664380550384521484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "9.77213705199215154541952932376602802833076566457748413085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00013045496457016358902387902369248820481792505684604793782357003458740283012026953971512527832247937686018956926918760579827820618149654974789601261789353438501933209142889274324701479760186259188286221595702693452369288516143444427753506877231697874469255361407264955531595418134590240336559943863" }}, + {{ "1.22109376852135853575020973948994651436805725097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.11543635047828820815521422282756702770711854100227355957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99995551589729160336804918676630911396340574056049766519068518427735361038006808700598379055737548489964622176597729664945550621782605173209704608243388212974829930345797712949588621847644770093271093043600103623962707878170666514346008821208975619634087411931268385031450753049330763535153583731711e-1" }}, + {{ "1.52900990354010689331598626949926256202161312103271484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "4.07910792856703210418345406651496887207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.09437152552687759915144210042422837004776738858769798785362828201158918075365450163702134968526881164477730298716543350719085306748967317190021537573795780001155496528795641888775374745803795044275135632851107711558035622505495812638847592959079891240357223230602055612544312975892640303394964825816e-1149" }}, + {{ "3.33574880350019498109759297221899032592773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.22409910922928020227118395268917083740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "7.53927322890034742368017335227292720005783821228941858003370629012694382557138392281089806659775813675293365836774015539525201899124038456550795641920581579865504101847353382339574548922971435920120403286201070202878099356466592276232925556211910029587973272230882852354333961947656943741233580547242e33" }}, + {{ "2.93886093222884170472752884961664676666259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.83152139210962529736886894582426066335756331682205200195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "9.99965326837122789351065801513643019379691746234431978717545032882563543159129029000520238088911519893688798595680083260598269929340163335960195938697476035130411906261845669886681524297055544969116053569875568029319976030656002722062158836225698022385486930605555120535915405105091329811282147529892e-1" }}, + {{ "1.05363900341240332636516541242599487304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "4.51733416318811920042719521006802096962928771972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.36944656525417845173858897538026176879580880507614615066496128471220543538723767528991906038383446820702565624708556443997649629495841259671527437077527127938789704415913380536996498286764720566639200198900869760387706475703380674649201567096875423075710829719565752777057995176317511826228555593581" }}, + {{ "7.04420993592731428016920358636809851304860785603523254394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.83514384888353143665540301299188286066055297851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "7.42999851704960956730922360017793140547106959683768718211070193339741510527923658661871542385815054985958418322575081567325471819065963185600217971978825670497003073742499873659741487280818814513977323524960437583297927902838999554519027556228317521167236540123085211060151247184818776639943050911394e-2" }}, + {{ "1.36453344822830520570278167724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "3.64161706602405751964646185570018133148550987243652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.04399795038635921897857958256316651977445152567453727222518284598769789391999595233661749274120961391885225992798836625746470159354169324537076101684572935560321844745400772917299981122731280255675880379891143456808614768985468915540339803333726839718219814716863124296189939533443325484535601906033" }}, + {{ "2.96565824250737205147743225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "2.51611044873741196425953603466041386127471923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "7.47522068392867838732450708572135930567101005550555468267204809080882851453167258980507378379243415338266777301093835073449659828508711197010120745211201439735694186362327003324753635700543968787946652069972776477402704033680932298818937199049452926851734709666219333409709557278942834445272506685923" }}, + {{ "3.49571885007329983636736869812011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "4.05030442875070617603228129155468195676803588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00424637003637001346519445137047903985527298734444205998841513031143713650570988838061609722582515075163633719319500702266902153041674931227041528924269656845803454259997891649918404783522081199789884938037449889035577760958358376931686006190221056227385652828889051574541455553647177469994824093880" }}, + {{ "3.48704350707848789170384407043457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.94470451369696548105103772741131251677870750427246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00348622623956426654419790365515385008204532308719120294458056691444071691627567637464093877906643804041743573926720499607391861016395825332249134843376717727039444569339034648222083969616342813466476442089528251404075917497087087133158228565604726619218594367232783173627524996497743616209681950686" }}, + {{ "1.56866354052483725212141507654450833797454833984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.92382444394148101329822253546808497048914432525634765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.99458548775941655985641049562781270043468152203580071617312952591624765716886645437516907451083025631663787001723138256606416990037410952933773901687094742927210507959414283830075225958048767485241813607677989510714884949211624158456814965576504829085206941026015695802504061055800475236320588403791e-1" }}, + {{ "3.02555496695998127343329997529508545994758605957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.43476200926107111399687710218131542205810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.07162439112148019358772224877510168973399161717373536875684406796915754460308189843582561832996734392043166689610197386058626738901780367190433337506557349349095623450517180395264699151519926104197461968535179024894054340573408793813826035189319052898390671701445304365679647915192850527101155372317e-12" }}, + {{ "1.13301057369715999811887741088867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.63391498739915612750661644270167016657069325447082519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00152645922689671305334533143447522531808487470636607472600090062282095427316474560067944838274073843864628772883486893974636361201579261003896147984190781801313303984627253458134496161410984325183430174864002871499528387099093919980953756534711057395376377803880481128200568335684903772454493560544" }}, + {{ "2.00289080215499270707368850708007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "8.63919332962040243728552013635635375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.92699766759603617897105296135509926340232009672802063778499835631207758035200425882438232730073541633716557508264570905405926283429555595877466543065569320408150504538307810614249593452939955155496934950121411097262064539453295031460705244148452908856502571794692573823194011760644101511653087442625e3716" }}, + {{ "1.32507839540064445080225219442127126967534422874450683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.51887862883488423904054798185825347900390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.03647722584318600030967144335207527953463651392633257231597431308252840118498779108498324584815641015064709374407448575779770810144009458027431983385495055750280990347720737478088901276233575808268895728220588756650828610378844764861577519796740508015409537773234457412772265295624580311112182954835e-589" }}, + {{ "3.57603431414909023189352410554420202970504760742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.25925527701659852259155614184749083506176248192787170410156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99982482017295343923291140868824543861889706024267738325920940955163642168596277387382324596268313941030962899361898533933991225186157467591500415565798572470081783136017764613428509329263882432996891459823007909353566621634663513526224023265569627278594547455316883257611223218894909706813593928661e-1" }}, + {{ "6.37895215316995745524764060974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.33606864421000417781498770253278962627518922090530395507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00011705660623425091805720617137318115223118739797033368829524572193511821979599497313069101487866374165387923697805554918674050522785359139471078208862147954503878603840716656103170817064574728416607854591674468869938491395161398773239010400175784333016262331344116781579064223044329496394945074676" }}, + {{ "7.38104343240080229548993884236551821231842041015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.78526096140715813593603800146780713475891388952732086181640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99992740925564330652806516420746938988010148239633275154076421571630454719695668630175026322867662102076692387029189869547293172340508820534949790931051258505036554857756821592275590340005422029182367955076901146714768419205676755504470790282646601620852828276821380880075367804416790635127471984294e-1" }}, + {{ "2.24606666462972934823483228683471679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "3.56224853001515953110356349498033523559570312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.01973918494886267810001894567464669163247766970377570638787946610322435627850446066260492108701967988500602281478606685233882133420407449502588207373547970434356681888963673609480451591224779378429762251379481389292664486026843607177275521955621777327928762357765933587555111806380884809909558908126e155" }}, + {{ "9.00800182710125019180935623808181844651699066162109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.64432725765355242097953691882139537483453750610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.93259995118943779913113450886803213157300236441759177808360979990670369813799397673229074691051859756881735508284831070803950318509897851789286938821324800564473083981421925321740139076048924264684734691750703913517330543410997193207195299362629750503027996358069377923999788650279477370768077765657e-1" }}, + {{ "9.41820034138939809054136276245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "7.77419300288664260104552761188045906237675808370113372802734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "1.00000890381075384949081595209139696411199492416870417459364082687864113657489926105641478106668362778068330268736600393352152923274282322515415108939987073582719187381060734722668227714154297709452559911296248629890116220184188866083605360898785001127921221360852853375996265543887873427220880943937" }}, + {{ "3.73692731999517979007974233240929606836289167404174804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.54122149350758519403825630433857440948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.92632813942166735469252865298175146289395053013193471532530902730842579927583105349449489218906918310069151271847219223504300355763614013961247019308729802033635205970100220700085021558381217246935232153985446384879850169504304149149649141113162707552300166988589633450196697040655835196191118606631e-25" }}, + {{ "1.36207381223418886456721921263124386314302682876586914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "2.62468618182947011518990620970726013183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.23349312978912488484797519539255018773821880984944037182332190114599517402131412348320914129812507474815113624208263309735483442308554370722059051755362465566371079854655405434396337539491832247301779055162543337811300162664812836135792078898777055591459214033387458633919871456241380657515870584905e-1015" }}, + {{ "4.99439352691324893385171890258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "3.82669140887688854490988887846469879150390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.25800762575108176129137940894321369236803059535403474287787709049193999989553876351149791249607106743078893765328229169808063556877194151113548299740103775991789375636892691914854010648529483996498522632062568652379746122433944483375027665116468292026500341138320088041194003298397510386237462266236e179" }}, + {{ "6.48539296127664783853106200695037841796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.19081769830710604285428644288913346827030181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01763841928646063179945311430619776672100366204545937731495139936077193534063748395270846081233643612207997993464082794803985613863394615181696471224069637239381759785944556677466232970035407360811317566511537057177507901702757204703329800142152099723806486139061978862458791045685416916469263617024" }}, + {{ "1.26185358741126574244617586373351514339447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "4.18707874563769861381290482427175447810441255569458007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.97208954505633083962348848418154736485944843062550245347612203304547965531131555025237286475690843458460809325029245321285039436520603179307117618768371875438665250167675789128497710216048233584274468422162333906486838232593986287174975031846178589748114260487176217087771250070897293526267935699686e-1" }}, + {{ "4.35488942342848749831318855285644531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "4.98678835531215099763358011841773986816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.28936120581079817550967747499324146341809782859497306106568788729215792440868081012592482836115918565108733027645928062811796100015424546044055914594061783213133483941275372186699846142681689537346156745852091720729474664315028859269079769914368203114147150204153490030106741528606576208240181832379e2313" }}, + {{ "9.52079140369027854262640175875276327133178710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.08107909706786978198955750940513098612427711486816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.99946912731466247972527890006754510895764819973853843000662583785640845446566388520861934833991540886888853432324685563515222422612660717906957938307798158191679485565611171204322088502967506340693425660800080176478497228519680488062210430869030836704176100634086409155754383655120084467598988079204e-1" }}, + {{ "1.04090684013030454480031039565801620483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.93673921485533583108917810022830963134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.11210338662691592819619664979726597449100163292683513479170961681889868927958630114518483290408310841588879531996056535646660865328863109763975044243074863201932805945130071457158971557983161341534770079019284360491414192422030250649176833692020314068650401152520803465262499102820988511235853988648e197" }}, + {{ "1.97149801027129978336915883119218051433563232421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "5.08739590531112617632913952547824010252952575683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.91773157361409781701715493663763866515090466561690289420891165770114164193580683686846646130438934752909209919079027125210567061374829822112866779201464446464651026659338435230202216580437945262368984290532688736997482187636274012593325315635831427955296981578931251003363149110123293975764983649974e-1" }}, + {{ "2.79971511541740710526937618851661682128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.78721875202228321077857486898210481740534305572509765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00326623969490901566461359485954800182836515927200276988639325398663724684484176518830065683294723102506600723636309590040090118084917994679575687454329398419185701984750026134555302778342008308134679599723649132979721129657717437355628051914400727321111879908949789141417261266151891576137055521720" }}, + {{ "6.47180277522192426431502099148929119110107421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "3.54396046637904049703138298355042934417724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.11393159288848940315388484390073955173736785149894558116032886653088516351969818186256818732041463123159800744120590173108691581334056179094211775690837141959813271450679799058611736101514220405786918675156348944553549256908731766892776136986705072991002327432436231317606705791658862062772822668961e-5" }}, + {{ "4.68478493824730685446411371231079101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "8.08503458490309867556788958609104156494140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.97762155395492793734284548790084346203097684458052431296538227291993735975496781864258983550151454075639982388971649044469779839674940147551147838593024539580668837295332526092577626791361518961708496544368414553255175123291725694241746786254191457634438577633532650001615818789185478534006606741407e296" }}, + {{ "1.54391459551929816074178347662382293492555618286132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "9.30291502045438312151759419066365808248519897460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.61942064374907006758472323953419672912600288860094391695046538452658427001421356899386802781741233841276963853691331000772213773371503948038327239870459585412114416103967368390201886001946927622637207918880459451317082626408706757400699845882572764664471363683650469561537447695573432201521718527705e-1" }}, + {{ "6.48003875925739691865601344034075736999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.26121082452632900412770045051047418382950127124786376953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00006094496769763278820872383817879036100529479018908630432836412716347076273911182394224909321200839758060396148281450949863621182268008379068612869939290370399199699187329868380547441347229000962054100848350577521278040241049817698210922858722233509600098748764436396006044192563867258556456726002" }}, + {{ "1.02255146268133501052943756803870201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.89932691098755263015007699323177803307771682739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.00013156917767091552599892235129254853484398955770015153844565825349128084659104946293310766324345122756751921898192510410177121820174080396618577123202206891707775599129806431636068338328182197155856712217515198962725685962829886150997851437588418591804207516238583892908865355284748545102405714042" }}, + {{ "2.81888129121324254811042919754981994628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "4.07352602363188209810829221169115044176578521728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.02324693289074461806065314601130588099455748535483252525100029761881094483032981058215632709470546862166291555062468221229877852679809354657976457141823806639541535849041446001105725715917762334478759524935613974359759936992996718201195710259035985781666122257084622777055529931477121573215140197696" }}, + {{ "2.07185404527926539820087414867089137260336428880691528320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.35292300705978618680092040449380874633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.48850440195174823298359540121818302112603372945421421598869878434979555804675505735326375593302973038814914197710751833892726619856756218734694899102028024355384042325664532283875944124268902285546831042825514027899847395159917919088321233227951525026080119430650746383889735094027434636578283016912e-26" }}, + {{ "4.31935286049695476781606906513388821622356772422790527343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.67446027602891164636454701675205569699755869805812835693359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99973122517169758868298611393816315674468708382437784046013092517874934197350186005397961789565235843871109955511656116413964407693637441952651815512224774438246717669200447114406421198392169132912944363201879586414171509537947822165122722681222879324770937027844102716000158168894762456660415032672e-1" }}, + {{ "5.60728659565255868472196526530737514804059173911809921264648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "6.38030853130188620203101790284705430167377926409244537353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "9.99990816207746297627000228090032149940299388165914304992280548917955938225443662692605137525666097388080408339273626056667955459490552137971306327684500228508064672496432612203803093818358636762048072433804065084080756285538210846111127149390742779965190790248566867146590543170273767758612958658971e-1" }}, + {{ "4.94365872790929563630746290670003872946836054325103759765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "6.08107286586160853403271175920963287353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.41889634080305711655291544430541860422410170311666966191109605478799772032330347327796646352426019590688459329571978188218768772574725991603534645626444629132445446486278236532522655245444099755490849273965885852698636839519891473821647868673766453693048753250768728056307822453273785810806442880557e-262" }}, + {{ "4.57863041241061873733997344970703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.27996139284958445614392985589802265167236328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.85252911535679891073378835901479886089967576299789401385670015780551662533990060451545346245206661914640102653229509656129118798311517873586006356564037704026911300448200277564257378774264510533411693099418541902845247573044373703549276907520323049567611007543654341177174512295005876331502328496351e72" }}, + {{ "2.08423524510303792567356140352785587310791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.35070210371325316600632504560053348541259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.69650994818884808551478851790421398330849110943521821889862054443832715742450095948994740658527477301306542925058870703929885411081233767845292798598894899925369153906803097693018622562446710881324699679389099964263723003154543262693904642747226514772235244787350437914151428906711221635213885798789" }}, + {{ "7.03507355339941797822689295571763068437576293945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.66736311094788106856867671012878417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "7.68909935340978860422757035820741960584342288164122209394216788923406587897458745269054408633969378408300698489680800368145152233150125878615072546588959342193206959268161227822392820692595901101440058139059566058188384350410226233241151749648406111214064140648607944967440645591239738930953785109368e-1000" }}, + {{ "4.44777561798017704859375953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "4.37314005329937316446375916711986064910888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.12314549862845492717877595964768115546325186339715764453604920761210996544623734651949041265076846799054130789000520895961692269440989421981634150513113011053879079524507516981642085862682964932699084859566571367826867471772759871670601934760070910316789800074922999274803369631048113774053097073929e20" }}, + {{ "4.78949184649386006640270352363586425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "1.79183351174304107189527712762355804443359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.79637132177375382162263956935980813855595791264327736518378404210637984016731507340572257630052502643907564502937056932274446805895054500000116906646009851736492937513833076602489625307279653461589071484812740516746714953908730424736460829219077432204380475346934742691432944334479643432469277088306e659" }}, + {{ "6.22325830215437599690631031990051269531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "2.25225952793516384642380501190928043797612190246582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01987069469372759270453628912642728954230513534833089604954661995171725801656380902963421144934906141234552439696120736550210382743489449329697576830407056888118360526079463661066722214220114165138840831176499526985462507289995825151030297233511088604059436353741508088143154130210563278515547311543" }}, + {{ "9.12400440701637786139466257395724824164062738418579101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "2.34400553054916376341521022652614192338660359382629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "9.97821977486950583166084719161557689663568325790003522306021158417755185644936647878316368235185593329253132043532554677812935724747863173935255764658313396824835230126055857216828346612262350441572667853382236006603976105644273478945602579828808105896550462847104108659412377316272488653010471184196e-1" }}, + {{ "1.33795627811531119277788093313574790954589843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.48183812852515298791582915027831290899484883993864059448242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000384349299045776862801360403732363545774843774701655200272080627739941386437175886379606902727479191090187794979610761904053274682140855025508483613322969568848488035529156236560186742600966591613965074184599845133474883618868818832890976311295886503114503738779326119140373893527826165039256344" }}, + {{ "7.06939041310026368591934442520141601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "7.52070113177227312917239032685756683349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.16601617096668251300410633861451144300904853213668949893514704576723535839139585890152639279492333481781656085682222252609689619088940700517823681224990153082715763605916833922234577262387169239662906567674441665483003247288718595609022710170750805174093013421029787059183231600348513197446175716344e289" }}, + {{ "1.46809474819978857951241479895543307065963745117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "6.55150258058036227826192998691112734377384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.87508829078291473496350060709599928627355203095913409392108636898471105714839831302147923025254259824329731513966469918955762532776229610929533035120642195606951641982085398951090528368050382553009140996960228822308531093162518295270230167711636888797942089811261515649759631850124542086583338696866e-1" }}, + {{ "2.13403424835757107302924850955605506896972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "6.74881959702026967828913939229096285998821258544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.02087023232278898673025082821180943357336233310089987611387411667231521549575677239762600896132782138671932320359043850059141855317509884880628897347559802452573752440941620827448739200875424446592178873469737214134752340014718109265906882735838254335143242217171430272779729156476847140495477447567" }}, + {{ "7.95233844752690766100045038911048322916030883789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "2.84851678481346848315070019452832639217376708984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.52320441273088937482705455163451804728010853035570734024869989669472225400000323970014547943529070869582874785761555559916107563529628329435884632549334664560080647778917243975126257892837384804686623525333256233581024540617818741704180357848449262419278792476592443919338009722004675820379508226554e-1" }}, + {{ "4.86469155616132400629658683044453937327489256858825683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "5.22877434444638661270587931539921555668115615844726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.49398596693121402232511551773946216238940594887656584112333721649128338309222255715733045830942439483758414668436262063880698192055748811167639524982228502529443333539688201437948685066022343441584667892362197265423697997073104183476242310932155094648160217817878533689247152065556146288540676206268e-1" }}, + {{ "9.97061023610679164619341463549062609672546386718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "5.88064355210892131253785919398069381713867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.31339250305317586137103280435203540286641209041963686984564977317675267872546421630007855518104235103746292194256810045376453068069833982650717834727768128915903290190711155087191155109113681049655966851631090461344965018352997694452739029417934674832819743056725077543693812469593253205921308221308e-59" }}, + {{ "9.25067228877758662708430392740410752594470977783203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "6.58041095700439004900772488326765596866607666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "7.34794411703227640768834559037146678081237450497151808641284692857257405073921261445846307144839876248119821368257643009964194784066475970698686506948363255089072439573285741549161564675949811535766568038690509602693098394199576228057991570285009737564027696021280582562413585412543950911326853262100e-1" }}, + {{ "1.27144511159262219734955579042434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e3", "6.18836319449928007330186119361314922571182250976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.55634262177085310455272777009125596103461766420555774353254576944288801886851836915203973701385795773437574206488784269131348804974222211728133676956373754063980028710578189114584286886146802067657659439377822750677886486205610448378645450751753499248735236114037268909383185086028320044219137753422" }}, + {{ "1.42205871841051475712447427213191986083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.49175822061007323782177991233766078948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.31499443769464065089935605375459683035642863575091614297392875457512297919442473147075015935528487370816930373009973708163470195938036050657595355692444453780282744702410807810566482106290630446087507470829783752836539009991223629616484834464198297022741851935670638283977884632514115384409382379451e5" }}, + {{ "1.79830846471683798881713300943374633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "5.15740741801222002740900940409574104705825448036193847656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.00026780930725147708425182905646433452420215464014520968261578887024273841780021979940791064143678705875846798937060716374571767664452465951073901977576420551043883735274454852404885141087100496560513919957329201186421887438051030917217421635429456043545707951122601188323754670287140035060211268236" }}, + {{ "1.41617493747205998033678042702376842498779296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "8.06659473408631241819755075539433164522051811218261718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.00214037426842670551611147350147052752193345171802567422360034056719592273707967867550926051192650203531759829732673928643729296057128383914827597014066465351929167430158631190618779931772000386360976972135737607634338444086468691888473748375182457345550820744493891034677687786078596412978684852640" }}, + {{ "3.03620445696295947202170140144517063163220882415771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-4", "1.77755559529355344761114565699244849383831024169921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.65907453809699509460147409829901675941527854788885630333979265214696163822247505595008528776776735251807610239492515526114770917079309768787319965003601255566849812163333057688474056980168539317656182802355025321396669769362336327872219770789870937515083196007462468888621524361865732646086424336453e-1" }}, + {{ "1.88150796984490007162094116210937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.96075222779542400530772283673286437988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.33268783679377583213014321394305562443708551652324893198731298378098553656636607906131354129802125769805603337990709647117721910862833606977379369954861887407787985331605230823250624512728814254652735899657072127956911865541366861599183456838203731048557393074731179271410020592240238165188774584943e838" }}, + {{ "8.89727582886910006720881938235834240913391113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "1.04127996077174773958962106235048850066959857940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "9.99878344302358244722248144111222437762654865779811772935718213218215174416593116585765566781129897695750076434329093650632173287168263229734935010362448649517261601361617830618010680773234135778887817284697256494192909633866400288905649938277337678717548098982509457693289514879908537721749577461800e-1" }}, + {{ "1.83083205221824460440238624414632795378565788269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "8.51305815268083279079291969537734985351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "5.08759465190948202575969824985581134108808966132826957045953621966485495100532942367792704772987024490520063202480279983957515910756497430137889290866515761789926914423548570454774810411630371091100113544891279153106437138536746735808516608107152208446229082973737250416694137957514739571766896873306e-404" }}, + {{ "3.34665340825903966375139131361748923154664225876331329345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "3.78685988588032159896101802587509155273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "3.52212078787830927194297643296251781134291925779877466674871728836105722487573580131785145484495276918545575844013070305855330551951353365366550132397674036846629030890995284036782751533644901503503905390007269189142085867922573306793968734446410118933272999821289312420310855129959801669881803865858e-2074" }}, + {{ "5.33927735030905274151661471515595280834531877189874649047851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "6.20766189867572767122939902950662371949874795973300933837890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "9.99991034310800110010707678195555035460840436574922962233018600570397473321611757701145927433415065972844383465094874922585959664097551124468322387734536918015102243687653110114625528443011692213994065730522520240541725522418247328328568974843758308408263849244150678651666777627782107985602066092068e-1" }}, + {{ "2.19994195074324068173154955729842185974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.06707480325778616969678580517211230471730232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.00952545862365855685219042115608145190455235613268820530406120489310419092421063376518661644406509494089174786391890344365290616699827245940846567812410266752069452669091303167176618868615804832415636793311353407444727299687139263635273616648724056070625009496090575286667611858626054037393426920940" }}, + {{ "9.49426131626506853745939285005306373932398855686187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "3.33658593189578134285966370953246951103210449218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1", "2.10953513637051167906362488703903898283324995313357160919327331939686921714903739192273840983847338772103005796728222224591772689334463276313863779738778665022741134644128703431090827473653846081611135627094959784765932765625500258444912393296945910143335619574776807349923037475968356403544804516261e-2" }}, + {{ "1.58204381201744226359551248606294393539428710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.69967088875234341601404286503651519524282775819301605224609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "1.00000077966919198536118506000604021848342587459233214812502825319036185927111842640720441778472762148840769009480654434988580516960635247026640481971290957649218368276357248615028690535272593446475039055115505472342603119011692356413204456935489635677140077206818440909527541341514742179392759484948" }}, + {{ "7.89159836081502775182242026552614788670325651764869689941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7", "4.81696106146368038025684654712677001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "1.94147359401180853490618926342983857830809890106752620847948172427377774972592621604834694930262822082783398795004418901297871494637794539318032606545630879764294273346094400196886499691750495365869112152459387957968585556903274684614177896724684391146995388586545846815713970966406314356957705636188e-2940" }}, + {{ "1.28909708384213387034833431243896484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "6.93039877413820920581954965200566221028566360473632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.08496647090160629262865176257751429047729744058064486558757367783712447981236338124011887293782800275409466363098994983981904989007840757365461380428739706364354348918768376442904733609028311603151255847131247523710764847675936168535507206845244124708518371354311381017836653040028826211975497871572" }}, + {{ "1.88979339146257488413205294364161090925335884094238281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.50746279790036936674368917010724544525146484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "8.76918423991144038304021445193438173201942067819279237648900596695575024236585474624026460405210909663314261583560910578839787952809598740673148266220449752385049510413309645447866767727463403580780664879153239139760411591518829772808581212853680494395035365090735562853954119264286528501466090236373e-42" }}, + {{ "8.41517212362860789198748534545302391052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.64690954096749919699504971504211425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.36385641555849335879047779054573450503531219143280186506059811952516602814802026798922317458022305556248077861115239238036534162971730930403784483407045473794360984711531633071954017599185535725837014265828161774595330813847033913388549400091383297967089159291617295023155265969142242902513558326176e3" }}, + {{ "7.79453915372945402850746177136898040771484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.37570185974411316465193522162735462188720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "1.06022076559461302576262215724290203547920286581395364873074659478022575993646868223512587189711310741927159850526321306597320278985726000202501743927791980296512242522543006053260060771089791556404973296770985910119125940674256012428243689156025466514102435785983398909290409351186888763744330929933e26" }}, + {{ "1.53996830801468109712004661560058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "1.55753945580631575351659989792096894234418869018554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "1.20447431374301175187511662239775886280442123057569989101048717965641664163683965122530380365781626549245733448495292659434928101251174655724999866929500920292760069066534315397658186379331270528348085084759405281722204998903474609597521346801285181467380964556686904383585877178604246579963496131145" }}, + {{ "1.58292085642406949773430824279785156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5", "2.39839658341223938009534322191029787063598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.95369184630899349835322600435195771430552393938403392920497743251505007693757163085390208500076347439614593692001276141903681987497427879862172599262551403341684739246319058993775975522937386429303489479759146923528741632009619169067978673180741577543638362298805900307916877489621750277562246056785e12" }}, + {{ "1.34007962789787852670997381210327148437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "1.93078487352859630432622140006060362793505191802978515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-3", "1.01851774851557016267678896947673493426952146980838508956199625705868791978344101642179134412654468177801448310465798049263061832294449615311708734175434429497593168411288076223275335865898358255932555661831601275564405349791579099870920484601878548075981946266790952650050188664408833668093366337128" }}, + {{ "6.57565090460510646153124980628490447998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "2.95349579102368409166956553235650062561035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "4.92883670959819008737323351550818895693909971573197862669756297233542900030950953480711710193053129535412775508169382249001427538228339649766961919628309117712145393012207284297044617755253176225355208718450804357511545954540599873761726532747435308616642768909463909723766874135347528684022648860560e53" }}, + {{ "7.73401481707858096115160151384770870208740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.49148120277696079938323237001895904541015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "2.21022119284238444262099118632640694751857489911985882302778583637174384391251394588072250813144879442061174245455228341031066580984347413608919792407019123272438031870871777573323381609534176617167457318208979616222032754767955294734636001910121462806120247278470491361024670390806812831433737112379e221" }}, + {{ "1.10978898863228390113400134708854238851927220821380615234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-5", "1.32219377403916382718307431787252426147460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1", "3.07947867569658321194458380597181231565685445537647073748124994390202466909582021155440785847623999110729024670271166064504654713592331835440877924887265726281088902886492996205474623955394661696347608605548560131153946508949187941058346142181719469523416895370937975489878692955467549849494731965625e-66" }}, + {{ "6.01388538493091151515557157836155965924263000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "2.60022931107700908527451122420615092778461985290050506591796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6", "9.99992690524283092045041727666257712294170472055655983655789156306985603524706361035867762480294454684826579379760817381252880474747063748101481751389649370586878847928039436815138481244723824252557644191693486953238362877605577315573573222917218930477592061427550313462645068276263623663297863327092e-1" }}, + {{ "2.15534801432384071073755649194936268031597137451171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "4.05812814671632215990371150837745517492294311523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-2", "8.55799445393602464144976083125961944702079982479924287374752573999342183140040918969698718557087349720031284500593972794455976395816766982409031253828819168807248785638632014800512514311905184872890032777260194266023572565329278809193542262172193713145497824126566400120337339261082686915643720103934e-1" }}, }}; unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) { - T val = pow(data[k][0], data[k][1]); - T e = relative_error(val, data[k][2]); + T val = pow(T(data[k][0]), T(data[k][1])); + T e = relative_error(val, T(data[k][2])); unsigned err = e.template convert_to(); if(err > max_err) { diff --git a/test/test_sin.cpp b/test/test_sin.cpp index d5c0a850..49d91ec3 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -47,109 +47,109 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ -T("-9.71360659712083391437631022096936715962104815777147739346439739644168480837178969413799829610404829247283169084501281105e-1"), -T("-5.95431113317256105006804890684659010940293672390817519158205264611725147142085353698349092164137652363446368483953564682e-1"), -T("5.09924118934356013545988500545586843463766955556781588535384546070893806324487181574368899833574915659357543038822935347e-1"), -T("9.90602974910637417521410554344955057938063175873799034495811832851567842600306335485818201417146475654562543760051881571e-1"), -T("2.57755634110962773819397192502372718147953063328591480930319110437537556577887190430547163274290595074462686853519200826e-1"), -T("-7.90852129665907861812449876176102241731921451584589870529143390612597378289323905030142878920134443274067663564142249906e-1"), -T("-8.70636054394434218558219672958497111094237434037462776135170928197514857325641761722162169311905082223410873872693125021e-1"), -T("1.16142192225871586802402588799179588339908282696987123538816621894316618250692422106879105583060486278819650782761165055e-1"), -T("9.60641850565339311654365605083646127348817546384991780755200411966145627086231307074524787693440076802209868233548778731e-1"), -T("6.28318825240308217440049590303028869715272770671179428040549526344092598897275498972932981684079339892035243316790587027e-1"), -T("-4.73718579778960595001132927360485548840577209745936881040433718918629103032639945353908537818475936329314134212199346978e-1"), -T("-9.95432766494621395340223548609251497842694553405493731879049259799325119533316838972006879914623359183523219011870805961e-1"), -T("-2.97704078652633309130390182393607392013126109733352620573058826659738026681661456497779386104992235762190242017128767206e-1"), -T("7.64723391125286889782047394187107836056829439952009227196240883193721606229047061163517791688110517783506991004016374431e-1"), -T("8.90335717074674250432504838435892622513509178529392798127561987551398090841490265311069534613651712468228001675091153605e-1"), -T("-7.47469618974513669394515485690188234127771130501791709462887130373371023385813212165673231177548426835629029005547008861e-2"), -T("-9.48261778982069330544079494960981900232314056127899219497335245577354566418258722147558010380033694835705634428764954401e-1"), -T("-6.60119969404606610211922488494059074732492583049845598285779387022002845776084527598443564095143849120847643366330179739e-1"), -T("4.36693827009658961576344650626557410722590226545637608661764593658572210930294024902150766064738444736422263939746970132e-1"), -T("9.98541130824430070642243744636010968399851408459030982248969144276197147611376115185206245742327729890090526273555800490e-1"), -T("3.37137695943362070360548307779555944485385294617304662646987679063953108310365389494460188124285214040163147170304540339e-1"), -T("-7.37272196933518190054375156317136276073182897209685319124536092629865074949247291797880288692223977281455156619510259042e-1"), -T("-9.08495699506960201290293288218820500948312195353635174830883006841931398581001427066173033535720385301624330783999899511e-1"), -T("3.32224697427099307204044509056982627738295866011152619834749776109067529453431741767996787924292629814505731320175556430e-2"), -T("9.34241854135599266375493853147210486293657026766576383005045752264274587199837314096798394557243705656211732557069413970e-1"), -T("6.90779551281016826784976005137338585011513089446563025258584317423906941741640583083551185645679047405447557105684226754e-1"), -T("-3.98913888475082839741071010629509607776766095858433376450534753556286110518195743624946499527251336022805096741714382999e-1"), -T("-9.99922692526403520897313527841668431397204867244750030781062964701898557028332255650446046614062333174844253917288331438e-1"), -T("-3.75988292423704532504216998833472116186771022412627192871974303806891208635376610998425108046077306043945435504842144332e-1"), -T("7.08546019140379445669962535829318394094758212505515423960726677977484727061149949358051741627739138448760095710063342839e-1"), -T("9.25084597170819667485373176055260044057716794391569156042799693611964098948722923916237050181882167134906470192542857299e-1"), -T("8.35947487571472125423673177137150279693224632368449469153892167972732129345714981936363891382927399742266512920038864004e-3"), -T("-9.18606321039298722214219289469027246078943851192917449117591801249272620492502932760495762195965214412326830491755901723e-1"), -T("-7.20244550473164405555518647469765134103488938825118543602681358279149452868549672550326500728323814331193184035259160414e-1"), -T("3.60444097985855629825697367385029316833790934188475151408740160657889784929257301330229580694580194294034115152177674537e-1"), -T("9.99575062430677992414643463029115424067356090568060307410717467085018957489304987413609313388961297483138454662118061646e-1"), -T("4.14188682766963304833862149212585018360876819555612195218295874225032162838027842720351664698295767693697842043579048219e-1"), -T("-6.78594534657286312316409269272929566493548786915986771929001823358451551885758307761400157853363173388867780400090112946e-1"), -T("-9.40073722462713282312837596921874850901167502371739429501407718251639587081137893231736511487958940802467918593519005653e-1"), -T("-4.99269632411748222821310824324558181913141458235676771744322439351386139493233963671531219603373207564905654915871172017e-2"), -T("9.01382218619061521491363679812206948759377256420255657634443270431495336446996377562469573885297156497163691224107230524e-1"), -T("7.48464012406957686684753003872919309910943477238245908909177973105841950470333390670719219379167068809799710776770734833e-1"), -T("-3.21350982331168500558883709193541886146178412146971245706190880193067020283050714591560922441331235332970961845050217575e-1"), -T("-9.97498841702838239659412520756556451623238132913559678626409839807628110807613195403956929948379909495726426243705794281e-1"), -T("-4.51672806064485973599605876288778011355969815150135195358334589946828629430271875346142404286368814526016297993583170592e-1"), -T("6.47469539349743367777844577149239337681085253251300560380374646379682072633705733561446355539618404778987844138766238618e-1"), -T("9.53437154306238691456130012770111782377503876017231780889420296856266641153714110120975772709549811845909173386912105405e-1"), -T("9.14081116365893107669584386407698218216480671014671832303147213716318806206478591012619084058741626713939006968851852873e-2"), -T("-8.82599332954202005638662236444958997569939600897565089251125658458817750203393016337212996488633688567918453254294067039e-1"), -T("-7.75389136447631492669594511701990356678047393586968390929688701894781023967621486245394406725747074772996680491766725244e-1"), -T("0"), -T("9.21877670451674413245307018032333288624288893879527153976730741889055419244554390143014969580425598422296522787223865492e-1"), -T("7.14420247379307162288182477560228852605155250738051326022559557923361829606843109334201812861061126243914893718333771523e-1"), -T("-3.68229061503980158220203193441625324286779814470455045264018328963975686564161509474566417124652588774892207244798533238e-1"), -T("-9.99783810945210864429782835782052003838999970584938136857974918523615732378678641269300999292060748749245257644847852880e-1"), -T("-4.06565491434208630299086167510578859920684132980243005899494321151205958987020300473732138517681916554185382528057861016e-1"), -T("6.84710967469127345624707128760638003100107237269026812211460044517359789036617753689648451870956943571853410785082804567e-1"), -T("9.37190534692875414284475879207349713030454322911019395907169592096165438597133651606167760904128838721803617281109050826e-1"), -T("4.15761692057244148543310701200534576325308397337003695681679007540324069366547327722258885686349619359915993749152386902e-2"), -T("-9.04970579658619470380865991258110513843850446973806499697900678159194774744593408797468966041695053471205276923200577190e-1"), -T("-7.42894062146919717307486895770712177633720181625852464705801879158549930143011385755502810839808877188169347497140463278e-1"), -T("3.29255843672460745277513964057060067396377984587222455665841087186879420769340447084849343957766905952270152874052907066e-1"), -T("9.98054859318969984153930327705164465077718593220578997216979734167429154849012382322757855259404199572095265136279871773e-1"), -T("4.44198837297768694342150710437773511448850303134514239359160353596186338967438818161771076138440975975069051604632938785e-1"), -T("-6.53817599431343721060913145888825198919543068369083977787231740776950274433927919565042681494795499030972133972973154991e-1"), -T("-9.50882691455803790808811011811129940528171185220498569922200361836899859377942311459807744784166538095896117442350480286e-1"), -T("-8.30804396823694462619418608693397504202900045660409997788297791645107264729830105800672434941805906654953509298579082883e-2"), -T("8.86498500176738212245618093138553877114943127333459437678466772704535139826656179981455385901664422134192971441152486596e-1"), -T("7.70083171278361495868782270594413506070341191348346709317329019377797940394556787220273230008072684372906392335068211595e-1"), -T("-2.89713235318575682157337623325710322388267200178020040738121279630672170355171163891332847251952971324782327373734923025e-1"), -T("-9.94599945986602107902462030221489305674036413322184167100620086215068494963807086265519051279456167270901961176645890910e-1"), -T("-4.81064018790479216363003919039401079745827607566793090566247167201506427394383426836725220489510187378030886775425254046e-1"), -T("6.21793567954698234151923123976248746751871911018984490371928031737872104124834908200003970971778452547150523318639635937e-1"), -T("9.62930462544790791995256817531759605974030310743258985429278608944994805716203043054967792555227147404499205611680348343e-1"), -T("1.24441037037160425420824052419427892644210865386492893504553391973646623439822770473194845274620957661128504291608680469e-1"), -T("-8.66493376243885476034533210550037276824055111358129259572484897399197578809821587005093985112028866251515011805996119334e-1"), -T("-7.95940555954229526911811786010975888490876487056728372525209250018208474961217211282867562886053609351620626802054272020e-1"), -T("2.49669618482792917975718339302754781070461300705127317300546100189317933291972223791458678771914034385073586648459580423e-1"), -T("9.89425045617789945796335206411736550560149597573171983909624851636680028232543261568285131480585113303281176722731984359e-1"), -T("5.17097284014384149171097163430722725596083616428334032893201431916692899725128152827282357887267679461332587145165393473e-1"), -T("-5.88694253013035419947972745515246684318073372460957150709985237608958241550865774225576562359889367149484593966586261944e-1"), -T("-9.73313013442224866478107643999632554759604190263325143130961313777287157745245701134838602677190253924612391775436901182e-1"), -T("-1.65586435334914172055850479429458408174448669771862313204835451683387762284114799645762688524058144409210946183564694437e-1"), -T("8.44989803230758608979729460217254170202748876564967551526138387646760352687916491884649142029664716335759879232648284164e-1"), -T("8.20421500340164168068753907367027481963552257850283600606773656660614708517253273174848291641569969886126754639035754147e-1"), -T("-2.09194241612317592929856274655591551278574667482924447651723415490434554354833563537792618079275726893013991849104465053e-1"), -T("-9.82539107299636472172005507105476251789057582568202763534005396813858490465264145708502581273803767931004018272989858624e-1"), -T("-5.52236319725534543207688775430217404447704139560595336544456138148662731976576062425879410116209671353021251780801885578e-1"), -T("5.54576894095302137473562870411642498454159878739464625116831971740997730359915227524075717328436463081497500485416831879e-1"), -T("9.82012389338213987427432686899213579991770436451929205950504261612336440523069987734051927060071228336651935114247230018e-1"), -T("2.06445480789661722781085666935934466710665000093111315471318244086154187788240397407764949071589419997001126229699279918e-1"), -T("-8.22024967814241172490083350373664443948382772873119098939533117836179462362265599942085298240078400862839510315401568501e-1"), -T("-8.43483668915081157881609334416452212500481988371373212797897630926101856989377353686006695443683562952698091745372956064e-1"), -T("1.68357099807987317797633647903674089665368628422558854222230995142941489911909308417314277825877040168111682241442337249e-1"), -T("9.73954039060780508698548127540108987785881109985102169990241290387386676882934112332475075476604334818263785540220696343e-1"), -T("5.86420359093869515237687266954561200160006212641211187483350874672859136679499954407470935299385535928011115437979374327e-1"), -T("-5.19500491219840443397382144913775579016253538466887540765306393159738082663675375499840773403952929977354698339617261390e-1"), -T("-9.89013546180296021750901758474634735102493497248279924875522015911873550276888689676425102442986261848126775556194306727e-1"), -T("-2.46947514812703938169894550153319655995779907820829748198209521180129269232387596803077057086642606505827139155491603712e-1"), -T("7.97638583669534812597149574893980942155226403291812660315816507318428697361476484505958849067790885048775312980075497096e-1"), -T("8.65087179683067252708187359165577777305998628817518314353161876891989239932835217904989326717355654871984067712207255166e-1"), + "-9.71360659712083391437631022096936715962104815777147739346439739644168480837178969413799829610404829247283169084501281105e-1", + "-5.95431113317256105006804890684659010940293672390817519158205264611725147142085353698349092164137652363446368483953564682e-1", + "5.09924118934356013545988500545586843463766955556781588535384546070893806324487181574368899833574915659357543038822935347e-1", + "9.90602974910637417521410554344955057938063175873799034495811832851567842600306335485818201417146475654562543760051881571e-1", + "2.57755634110962773819397192502372718147953063328591480930319110437537556577887190430547163274290595074462686853519200826e-1", + "-7.90852129665907861812449876176102241731921451584589870529143390612597378289323905030142878920134443274067663564142249906e-1", + "-8.70636054394434218558219672958497111094237434037462776135170928197514857325641761722162169311905082223410873872693125021e-1", + "1.16142192225871586802402588799179588339908282696987123538816621894316618250692422106879105583060486278819650782761165055e-1", + "9.60641850565339311654365605083646127348817546384991780755200411966145627086231307074524787693440076802209868233548778731e-1", + "6.28318825240308217440049590303028869715272770671179428040549526344092598897275498972932981684079339892035243316790587027e-1", + "-4.73718579778960595001132927360485548840577209745936881040433718918629103032639945353908537818475936329314134212199346978e-1", + "-9.95432766494621395340223548609251497842694553405493731879049259799325119533316838972006879914623359183523219011870805961e-1", + "-2.97704078652633309130390182393607392013126109733352620573058826659738026681661456497779386104992235762190242017128767206e-1", + "7.64723391125286889782047394187107836056829439952009227196240883193721606229047061163517791688110517783506991004016374431e-1", + "8.90335717074674250432504838435892622513509178529392798127561987551398090841490265311069534613651712468228001675091153605e-1", + "-7.47469618974513669394515485690188234127771130501791709462887130373371023385813212165673231177548426835629029005547008861e-2", + "-9.48261778982069330544079494960981900232314056127899219497335245577354566418258722147558010380033694835705634428764954401e-1", + "-6.60119969404606610211922488494059074732492583049845598285779387022002845776084527598443564095143849120847643366330179739e-1", + "4.36693827009658961576344650626557410722590226545637608661764593658572210930294024902150766064738444736422263939746970132e-1", + "9.98541130824430070642243744636010968399851408459030982248969144276197147611376115185206245742327729890090526273555800490e-1", + "3.37137695943362070360548307779555944485385294617304662646987679063953108310365389494460188124285214040163147170304540339e-1", + "-7.37272196933518190054375156317136276073182897209685319124536092629865074949247291797880288692223977281455156619510259042e-1", + "-9.08495699506960201290293288218820500948312195353635174830883006841931398581001427066173033535720385301624330783999899511e-1", + "3.32224697427099307204044509056982627738295866011152619834749776109067529453431741767996787924292629814505731320175556430e-2", + "9.34241854135599266375493853147210486293657026766576383005045752264274587199837314096798394557243705656211732557069413970e-1", + "6.90779551281016826784976005137338585011513089446563025258584317423906941741640583083551185645679047405447557105684226754e-1", + "-3.98913888475082839741071010629509607776766095858433376450534753556286110518195743624946499527251336022805096741714382999e-1", + "-9.99922692526403520897313527841668431397204867244750030781062964701898557028332255650446046614062333174844253917288331438e-1", + "-3.75988292423704532504216998833472116186771022412627192871974303806891208635376610998425108046077306043945435504842144332e-1", + "7.08546019140379445669962535829318394094758212505515423960726677977484727061149949358051741627739138448760095710063342839e-1", + "9.25084597170819667485373176055260044057716794391569156042799693611964098948722923916237050181882167134906470192542857299e-1", + "8.35947487571472125423673177137150279693224632368449469153892167972732129345714981936363891382927399742266512920038864004e-3", + "-9.18606321039298722214219289469027246078943851192917449117591801249272620492502932760495762195965214412326830491755901723e-1", + "-7.20244550473164405555518647469765134103488938825118543602681358279149452868549672550326500728323814331193184035259160414e-1", + "3.60444097985855629825697367385029316833790934188475151408740160657889784929257301330229580694580194294034115152177674537e-1", + "9.99575062430677992414643463029115424067356090568060307410717467085018957489304987413609313388961297483138454662118061646e-1", + "4.14188682766963304833862149212585018360876819555612195218295874225032162838027842720351664698295767693697842043579048219e-1", + "-6.78594534657286312316409269272929566493548786915986771929001823358451551885758307761400157853363173388867780400090112946e-1", + "-9.40073722462713282312837596921874850901167502371739429501407718251639587081137893231736511487958940802467918593519005653e-1", + "-4.99269632411748222821310824324558181913141458235676771744322439351386139493233963671531219603373207564905654915871172017e-2", + "9.01382218619061521491363679812206948759377256420255657634443270431495336446996377562469573885297156497163691224107230524e-1", + "7.48464012406957686684753003872919309910943477238245908909177973105841950470333390670719219379167068809799710776770734833e-1", + "-3.21350982331168500558883709193541886146178412146971245706190880193067020283050714591560922441331235332970961845050217575e-1", + "-9.97498841702838239659412520756556451623238132913559678626409839807628110807613195403956929948379909495726426243705794281e-1", + "-4.51672806064485973599605876288778011355969815150135195358334589946828629430271875346142404286368814526016297993583170592e-1", + "6.47469539349743367777844577149239337681085253251300560380374646379682072633705733561446355539618404778987844138766238618e-1", + "9.53437154306238691456130012770111782377503876017231780889420296856266641153714110120975772709549811845909173386912105405e-1", + "9.14081116365893107669584386407698218216480671014671832303147213716318806206478591012619084058741626713939006968851852873e-2", + "-8.82599332954202005638662236444958997569939600897565089251125658458817750203393016337212996488633688567918453254294067039e-1", + "-7.75389136447631492669594511701990356678047393586968390929688701894781023967621486245394406725747074772996680491766725244e-1", + "0", + "9.21877670451674413245307018032333288624288893879527153976730741889055419244554390143014969580425598422296522787223865492e-1", + "7.14420247379307162288182477560228852605155250738051326022559557923361829606843109334201812861061126243914893718333771523e-1", + "-3.68229061503980158220203193441625324286779814470455045264018328963975686564161509474566417124652588774892207244798533238e-1", + "-9.99783810945210864429782835782052003838999970584938136857974918523615732378678641269300999292060748749245257644847852880e-1", + "-4.06565491434208630299086167510578859920684132980243005899494321151205958987020300473732138517681916554185382528057861016e-1", + "6.84710967469127345624707128760638003100107237269026812211460044517359789036617753689648451870956943571853410785082804567e-1", + "9.37190534692875414284475879207349713030454322911019395907169592096165438597133651606167760904128838721803617281109050826e-1", + "4.15761692057244148543310701200534576325308397337003695681679007540324069366547327722258885686349619359915993749152386902e-2", + "-9.04970579658619470380865991258110513843850446973806499697900678159194774744593408797468966041695053471205276923200577190e-1", + "-7.42894062146919717307486895770712177633720181625852464705801879158549930143011385755502810839808877188169347497140463278e-1", + "3.29255843672460745277513964057060067396377984587222455665841087186879420769340447084849343957766905952270152874052907066e-1", + "9.98054859318969984153930327705164465077718593220578997216979734167429154849012382322757855259404199572095265136279871773e-1", + "4.44198837297768694342150710437773511448850303134514239359160353596186338967438818161771076138440975975069051604632938785e-1", + "-6.53817599431343721060913145888825198919543068369083977787231740776950274433927919565042681494795499030972133972973154991e-1", + "-9.50882691455803790808811011811129940528171185220498569922200361836899859377942311459807744784166538095896117442350480286e-1", + "-8.30804396823694462619418608693397504202900045660409997788297791645107264729830105800672434941805906654953509298579082883e-2", + "8.86498500176738212245618093138553877114943127333459437678466772704535139826656179981455385901664422134192971441152486596e-1", + "7.70083171278361495868782270594413506070341191348346709317329019377797940394556787220273230008072684372906392335068211595e-1", + "-2.89713235318575682157337623325710322388267200178020040738121279630672170355171163891332847251952971324782327373734923025e-1", + "-9.94599945986602107902462030221489305674036413322184167100620086215068494963807086265519051279456167270901961176645890910e-1", + "-4.81064018790479216363003919039401079745827607566793090566247167201506427394383426836725220489510187378030886775425254046e-1", + "6.21793567954698234151923123976248746751871911018984490371928031737872104124834908200003970971778452547150523318639635937e-1", + "9.62930462544790791995256817531759605974030310743258985429278608944994805716203043054967792555227147404499205611680348343e-1", + "1.24441037037160425420824052419427892644210865386492893504553391973646623439822770473194845274620957661128504291608680469e-1", + "-8.66493376243885476034533210550037276824055111358129259572484897399197578809821587005093985112028866251515011805996119334e-1", + "-7.95940555954229526911811786010975888490876487056728372525209250018208474961217211282867562886053609351620626802054272020e-1", + "2.49669618482792917975718339302754781070461300705127317300546100189317933291972223791458678771914034385073586648459580423e-1", + "9.89425045617789945796335206411736550560149597573171983909624851636680028232543261568285131480585113303281176722731984359e-1", + "5.17097284014384149171097163430722725596083616428334032893201431916692899725128152827282357887267679461332587145165393473e-1", + "-5.88694253013035419947972745515246684318073372460957150709985237608958241550865774225576562359889367149484593966586261944e-1", + "-9.73313013442224866478107643999632554759604190263325143130961313777287157745245701134838602677190253924612391775436901182e-1", + "-1.65586435334914172055850479429458408174448669771862313204835451683387762284114799645762688524058144409210946183564694437e-1", + "8.44989803230758608979729460217254170202748876564967551526138387646760352687916491884649142029664716335759879232648284164e-1", + "8.20421500340164168068753907367027481963552257850283600606773656660614708517253273174848291641569969886126754639035754147e-1", + "-2.09194241612317592929856274655591551278574667482924447651723415490434554354833563537792618079275726893013991849104465053e-1", + "-9.82539107299636472172005507105476251789057582568202763534005396813858490465264145708502581273803767931004018272989858624e-1", + "-5.52236319725534543207688775430217404447704139560595336544456138148662731976576062425879410116209671353021251780801885578e-1", + "5.54576894095302137473562870411642498454159878739464625116831971740997730359915227524075717328436463081497500485416831879e-1", + "9.82012389338213987427432686899213579991770436451929205950504261612336440523069987734051927060071228336651935114247230018e-1", + "2.06445480789661722781085666935934466710665000093111315471318244086154187788240397407764949071589419997001126229699279918e-1", + "-8.22024967814241172490083350373664443948382772873119098939533117836179462362265599942085298240078400862839510315401568501e-1", + "-8.43483668915081157881609334416452212500481988371373212797897630926101856989377353686006695443683562952698091745372956064e-1", + "1.68357099807987317797633647903674089665368628422558854222230995142941489911909308417314277825877040168111682241442337249e-1", + "9.73954039060780508698548127540108987785881109985102169990241290387386676882934112332475075476604334818263785540220696343e-1", + "5.86420359093869515237687266954561200160006212641211187483350874672859136679499954407470935299385535928011115437979374327e-1", + "-5.19500491219840443397382144913775579016253538466887540765306393159738082663675375499840773403952929977354698339617261390e-1", + "-9.89013546180296021750901758474634735102493497248279924875522015911873550276888689676425102442986261848126775556194306727e-1", + "-2.46947514812703938169894550153319655995779907820829748198209521180129269232387596803077057086642606505827139155491603712e-1", + "7.97638583669534812597149574893980942155226403291812660315816507318428697361476484505958849067790885048775312980075497096e-1", + "8.65087179683067252708187359165577777305998628817518314353161876891989239932835217904989326717355654871984067712207255166e-1", }}; boost::uintmax_t max_err = 0; @@ -157,12 +157,12 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = sin(euler_gamma * ((100 * k) - 5000)); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = sin(-euler_gamma * ((100 * k) - 5000)); - e = relative_error(val, T(-data[k])); + e = relative_error(val, T(-T(data[k]))); err = e.template convert_to(); if(err > max_err) max_err = err; @@ -170,59 +170,59 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 std::cout << "Max error was: " << max_err << std::endl; BOOST_TEST(max_err < 5000000000uLL); - static const boost::array small_data = + static const boost::array small_data = {{ - T("0.010890646307437399028563191160252839599929232814970922208664909237494716181484215717644776933044418903207919912063594159099133490979634344811936925144447725948305353257042599564404885434349760121009797816724142318243738364307036155852011004353462651092012819894667485840322627440332163428546845499107471983896711023161969130462687924045508477090891879273259947713367290982391204265694893491531721581439"), - T("0.029754394000520972141380267705677256353702996169858414168445272181777338962866552847084800544086743338130195210005002660881957584567978770485056322086472328896988088721899728258224129935989180857437073412730903070983582129359565450458299328041955729258476583848159389714290107649243089149974776893563078190705561325124542669960182002956940545214147678093802442811362846262655415145897575707676223535749"), - T("0.04860754948595027759689273751438643634234576398271158524070718139962965653841137425728738193533514318422431877217110239554743968609870039776938201724688048349972662394084789924867267405853696017478160702683117974766657840965270625814482422398422216605490620054574252910928068433847115132429726072853170339113804838625536981361490008602432476302086066307320875870985443111858828925332085101376920451257"), - T("0.067443401266329792365583268418977022587089806595860818790246293104463576184436096833111903064801552379988362224633198052490234517656318474005568709048710308123967082103235230201516378834855764348740505470176912466587139988300259624310153055247378188811239571439869254255368050758213303082097176168650573121101094016896349982672715603054645687782535250201448606757920212668324401846105554332382154705308"), - T("0.086255244004175604199645786226683865650130764638142939010554245919172299560583634262067769465886944689883333394099120765964771092069938753689253686543017871063587988437235057514131760587649504670117933814486942187589706655157340717185354058186603027300571692666150552274324933749082047517987509942119060274537912867956274549119040817359639741746006374702951412541338483858389306953539029174581171144916"), - T("0.10503638090893519164596691292161072193010174143933600597680115817738720676321226654184308409972393036413684625874294713490753271261380987552528236660688624108474124469034444076627315674234385578608111398112242272762722849083801773818689342174907858373883192220827687618321085007917387951532673599267211035785307947515638810735621964273183425401191468313574763898720597251843424536611952986478638938787"), - T("0.12378012612096459891996422671239906394195356627713556749926735466337892925173796651675302282473738808218327028589606894825728784823540605065317506645900565980161901287116410208049542818796994171203890952761651470187834173644651508025088970034800067245131759655003164127161058084682831906406941473650395873577925901419536540828468001386512234321890242266327761400155849351025221609783793228816606096155"), - T("0.14247980709161433833827358255114404185333478069639957369769805221957506649654851981837061160249376538785737485777248817812720592537597263252706422066438137522011148566625861552209380620325080441618503257506798981598559897331754555335688284111417797211888381141445522536739542765207936516297907076923899840216864191777039028622886076254231994264908278499537587536902686114072117102531777746791366147472"), - T("0.16112876695857673825462942280040873226725445145336882995544646098546697397681955191516861690559627281570477802647683153249828731761062718487424104325152088763220776831248566486363299448443795266104568555186977695939803420793575204146124697832793773870449082377964029658283741910741804550762511379894890589132658450368609377005630322641674351408014813725947288936865021810537922503050280596331958949813"), - T("0.17972036691564914131189073707203611766536704952071818203835281740755093560444625679032703078557333645546302532200674729781663838075105196332695024246509042831095553050804767663788014113177991938252225120228302734228632787082072480689719322299247090887229731260135165819595797392665106642595359433094386743214852929965104946276195924300495453775467378376551444126292108291215861133471208854009513721707"), - T("0.19824798857606934571352609051549058593435535174283382080060738672122306773474119459815363636791069253463660528114022041674780565798655265640072669329819802234483545444085426470661233958030668844326674768815456315879868376252722369574694411591080512527683145774214215193268992508938562109669843137270238454905091555179756374512457742554641355319960601765568460966738628365652972463731882673979926092423"), - T("0.2167050363285819704223187876642169717474346025766606244643176750460657731203611217470241676182041675112171974414875203007374497968642376196256262296063879827128970901451226217571636202438144440234868076467587220541438440149682254317134405302648426790500751310485432990930185087578150399032543990173811106465656404530116032387260432178319507278340110997943206401370789106214680733463126804159766688178"), - T("0.23508493968539701289801441539326267060915175918342580386836036980227948313782327655061004506711767031388143537081826986030990557707922203603349984851809173788402101756510017046639631528282698404857654444279509591873678208318484036337040837844539190863615310872984455261973647897667843302241773795592355085118273592671348602240382153223466391512738221253451636183066773121830262978729780866153048605159"), - T("0.2533811556212047542679161173582151227103672187769971543582388259784795155332622779547839459016647290250036005712168909799523370471647322112833886051217950625710683025675691585734514265087749450457714578451290681140064635291501640395753290532318406110106892218388811781561305402570000283806458134435822529043797962340420841850011846648265787470508569124672250211852546600514370101687713861131209463861"), - T("0.27158717090241435065755609312085387589073221253701701142877476904254125053252466469600403650634482409879186635717002370089097070045821182432642232618427944489732133359996899812980722107011126957850576210476679069162561257167921627603536603943342268770727524690332400255408587654094512383349857596775777725888982277559281982571487656535560758087235441872907962373375423740325723506626374882319859924962"), - T("0.28969650440578692965912855479777150523900698183973110358010443581781966348171378962307935462457921708108325003566673849851640304571019200113280406744551445148200341554501141174444530008329262826786160080931309057528673711507934822659456861163197618813727062179453555460400169858233923358238607875306523866767536243361049306545596678120228677505849040202788510059415993219975440657979707947898632705847"), - T("0.30770270942563778634443222550824378057595253208974144909939396933701715445493088586920897452838893301853350676955400357197838773823140696209649573828382477454711986806154497998912926265388494228459988323524548750870702083339285969468391846533348589851520262990720843670148790211009236063622194282315540801467216625666505663699480592080398449845511909092071640909885054719301078547683325662349532658001"), - T("0.32559937596878634249263192973385963275552570142977727375619908690982968889531407133936548327912894149757305868454394002531385820341045863161146695151908269553629121372700695833373968533510661265854738947940689721812230819575490874211279007289828369964583273676393398981064015459284982970048174649094549631109312941188691838118955683939990881732219088392629316401227525790752712758279892546851835776728"), - T("0.34338013303643689435259984865624959352259286039436985939426483729323987764837568376066164703227630278807584950278626035763399164177429894322425866236150336898079573258157833074772287354310049676029566569737995054499018518699450946056626536479822852758163848528920078247789349605898976290484284018984355696648190967701849464571286257873661615051036433297599097073117151941857301740816310919312668936753"), - T("0.36103865089217782674224266392907326208964452822379102503439414768728197653534265911503054023760783622236800804794470785631737993143180071550223728801984904852623160397230839644629077782630949486339104760008566935013234195735777070582106661423219379374522941522832331186147905332977726043795737008218909226025962294880541867964419424128310806148008435847967256901208159302482322730929744194185143496647"), - T("0.37856864331529191294683302986737462527422720295203122486985051910813389831630458742420433021640718832999264813674938157273375290592788753133996741859965258034273428657399863159488519434113093863042179261649202584979828347495161391780592433454809420632605178105958049630938532568156789806946629309375790343585791884755866400295470651281289167454617624179556306285775538273640784278475358303871406797294"), - T("0.3959638698385755489557710011250921602780605301308457595569865098132061251227321128681128349835212212508810246299921462519655630208347321575504292305860152320513799100372630595769065936291506594220617567642210250680560302662459931036815131767702563357378794733903424219866581554015722958062178902473414883933807190920961687912191470152974845756609418554739641361171541363409996648143043979357302190703"), - T("0.41321813796987028521091431473013916161596830805293649687424341688961507413716621591649879163383882641673238540682782626959358955002216003316726344623613626809950993449214457071292961126188761860214007662067345193545393653191742497646193189677890657992964660139924463087072704096969748995358605459064076775540679952182100013584273877612509536257834358450242426357122974687246428904315337788603554112487"), - T("0.43032530539651581726649227346608528709372859200683817125277384462849187532000288969537766724897319030479860713591459932866508254904869456423088312945970943686450425589907227275358186473310644458353392107693439475272544181726520566221333846008220008702070460626739342310039148106649726719665728169819714333172605016313499067227953767878741853545763313707499816244740855778447731454065384788859848319503"), - T("0.44727928217193967651655712666040617006236300257644793444619887007723922383970962870988815495150987337761018019128790177957898245520422485269324604484642139354461290347689315448558082058132330317789105861674569680430563377440355102600184370927625450804550114009478901349833826102470780452480255838220723171955252412104006070322080932915859579006653276371401264439817338080069936810866666557553662506811"), - T("0.46407403288360522126660904671571257203469668709200603873826642103612288853249598361813813213381052968904786566929537791978751985511297321991996818974870946807510786919602279514706154473236597480481149516597293844121405001964448599792635426082163120478756812832932606227610137817312140031064078333902425335570730565173883252754294319888872518149175050583958244086010074110878967984441526026195572046031"), - T("0.48070357880154616464768530714893198018226307768872832018696934136162055774617690112915494983829868655926209174893609677823844628976682666861087174925649829592164380174433963170047900751735818142724368678683601091750819984658303806035572915499999180599872513173096429390456178642478189724903758698238722978406369084171804020040246631229610021517925007543961283845124822740019511921386188934760298241688"), - T("0.49716200000672278683141570737786924159326600032981923078600441023882683095816876734389429898823686013764499093454507915253215528870989821318738227798745591597923864925733083640574132559603114206682739488541451077277291582357627881380008066440685837422009543184722898767087492264154499861112499590934108906196324393034778681622285346845867860458748417916763883649390228287689107774312170267691257606116"), - T("0.51344343749844216224309565441486087365890516381683759696704839526386373494321578458551193514743669178342420835082611868891019193801223760604220552152028015878259509179672236586872004169442377393342941368136686044214656339879518691219516228434732537186028321245942076903928921929607502848888640267094590400556200402256089794954485061564115688273804254406706725374971267431122825004095102239220991848356"), - T("0.52954209528009218542956877037980380998240467111773187487177084701668417706002935457309027480414979338624119758863233287969233845786459113619958146654397106933375312089626001011352424174223416515118670901639015699899005014886945323983797633471828049323917701068414699189471811508040323789047713536270617216249222074877291822920747392986535291960399633972613345908694327479738445245500914715996152461985"), - T("0.54545224242244689926647810432697721723945987179773365856990386707254353534614807468692870318816991084937065603191754270239773531928848863926268254420020634174904439920465735399587679402503040251639815041072160696029528969373711375024524059535996077596844557011786411865071706766713049961515353664484996577751962474564968659755104983468313555304855249829815310291744255989014492588353749587481644931913"), - T("0.56116821510380861353700162760755101727268623115746212675907859515911800480855365905235006799852352328451502804871577600277181740574994973635138803211912076695967558806493981733454148905054449991651227073996616835900542604367257843601995979944175684600136575098939764120745952964355353589317556067474680987527548079297833539998258342242865222215681747969549869015697939554127499557081626950060916329896"), - T("0.57668441862626054773920164705882295031880435874490231795930393597704964539534854834250638055542815083463738683146430082379073149079998953871974990605030531115748567904948229002538680465351816034414085890696196467615521969543006224204433997063527288514443404935419253943724579872472854300703798475966107579038880496698051818375532546368197809806544115496171522444187250876233927302975709248591908972346"), - T("0.59199532940731223634617420193837196766186356068263223313261061480558639436412180991021350240470913092271149633483820904350945127229180169976070379470147429711011056203078210298313829635000565303787641997857930629432231274870246836108452732993007541125359738273485061324228778750531830069944570036169084871305329515261365955383178502917713214334808810726412625844210978481512366368025275438632291862785"), - T("0.60709549694622869462483067245797028399468956070763942538530335526853282815406226053099893555611232739741099281199863420254333016184720313024881100010161759837083928797224725640021095785125988238992410296927225409984765886863313873892022531648958451940083661715815760806237878803609330649695132473889046508160482887768573723088361332267243452286610176948724186843039692112797106039213976473403724518188"), - T("0.62197954576434335539696684219824327976988998993669475584026026679831221725774460365328908947620452777457191790806959938899059379387140391128845696987642418506611453321626607869801717870254836897328796165084605948086983949944714226464644755644542238083403302661596239269476252222614109836597348873471190787660391585694078779921390758232910639208518119325492789999941075221166054973249356136808607130253"), - T("0.6366421773186640485920116318191204083389644098160828009666722635549477083039305904975813615643101060893999315509501318081025137289051787335454356108133761354485193083183997634369795655283340428506642872565827559825155045924936470784378552800563136355526499002558162019410271880717338646318471375684163442601830537613691628498474632262547856029932241457937391840960919415488213025664314613747543749464"), - T("0.65107817188809080279752785471799265973958362274943758073000075578938519480042543196041314945170036193559782763524413154927612489597355144799562963417455961310886431794132437757357185377007718709790504976900339191552944965308823754898079933186431693664015814010551367365293786806527034958873669211570906132849013497458819941168651227792824572805777219160376304646562062564773441718051418178414899683019"), - T("0.6652823904315739978766556052897347198651017349760138699519597733553278561013395851136458951983261597283585391502588949649092379467069209284755289821255744166256794329589771465045421874634188329764638118238723545310838064785644468083837991172367935880462068347034222894524074808990476036821633127927532229213401486467496527893691588255513769781016943243185567913995336109327864083859254466073492381187"), - T("0.67924977641755138662041086036801948989088186294785002709809874961811116536667286127777672928127306388394020078452402417993836722984523906631302047812425809759286220237826357465064765092612104224837992075711035615650942777454297235908308024053950635657488001916036801234116581671119069849133344664024677517075723660642709275823456343659009540444032487248071553674961012055521740306092600444870718199652"), - T("0.69297535762401272778114932738244728669670875114228232862389083194872888693112134130021641463393969624412179768291914405554577080353247136859984307940401373940521815913274464950964347624918449081645304540343160683388727015489772202472645406318288749244334156857814927405528763108558137488794292057315715995191324964500528600378291562277858608403425720078390497455476055579003286296442406491998525563297"), - T("0.70645424790855122905182233963742667718470686911515869065744744473731249895412640632516625097411541437953942564566468313798077366853928608154168668667806938130662439220702019172328936889436324187304262248463334787504456805683070026006307765178787997020889111556678907849442591478755800698808480163225125777511828352357189284217101098738405458071150544253514248561787426067001460586251699075230390564367"), - T("0.71968164894777168289159927814596788937422432901416956306230349431557362414856173295064125294878325237342190029914430775648665560145040598898117000971783978541799092281781000633902779626437866517288284324732827083065703448279654800632624171861777710582293639879819116932680545313562525074940809403693475624332169458744562386580074420532959714281903926902622613852892104465683714186704831143197300465955"), - T("0.73265285194543608674851404628602868786755398311878599262050209465658337331457767882450516660833910207846986678480603058221329185506983962144302950162737505562091432645466997334653618075359372680522922578429510783107155224742867979206003853893418268095936450823867623873015528453108944563276576646508412198497923383466470895808777876544429706485835161864475122029711660543090876323595451165397047981956"), - T("0.74536323930873866831066285008063416514858255428941319323031554151661731879818806472410911187787504167842137286019020264008471692607030872105020489874402631524823767448432915438225335869622093354538021006314536198469136634364850042715775621307965524560308901397550829610851125072518884822515926626213581949190024268711827023522012804341871590177804438418738255381261594827085100659777173578154500251787"), - T("0.75780828629211358196731753685850074775187628883294491833833279769413437275246840580617185041212744084038976069700142887035937511309419495512390089087847775651833369173386038513330257480188204696687136231267595399438343156895032682495327740328291738325217778497473260463740600852973600297913238958828132336080624048815574113414592522918778477418427876829087439774857073733879539765547872800792711360592"), - T("0.76998356260799010064124325420889481428942836988785464918451704687709959533402569414853910266075223008145347866420469852220997470992987183595134711278161994827010482478666523199914707457365681979989417199177427808129308850228595726632468139527316915481709465938257650120793934685421343443942356060396291075752713480402305699120964704579260218579751719693291565685728074939857101460901984240449471777639"), - T("0.78188473400392189344901888012886357289691591193533323711550248487573232160560048524966536928562079994581390209192526509899176077393862245482807165569409036943146775931090958041945317489351020506180957959482939768275851398130892970557450783138983566392455270904228057175489097967314871299150832712632639718878702471658606369540854496281803565819545728647765960328269135853132407415684491934581417388002"), - T("0.79350756380552895006859336306152006552993066088382163294295016384877329185292344719536879395060919553184640006473875955257330264813115929942877156894433233876161573894628944452740080653935089289153173836334040374431360850336851424574668632837338016740333716530963434291489645017931035529052587483629111178971917421121398732580060101294617212337648611654041575132820234403350225337355214099696493406567"), - T("0.80484791442470288298134387731514331459831415420391927496917008531718727007136925375073869996549995938671025493755987802316807560672754205522916341547950527416285009447065632296220924964603370109747266700136618832767813938243784759073035555035361911772169687111972294262096081393656654067512785827139608367560009298721819281091010743363153063005841441400130721362346287552727162527118465104052539630019"), - T("0.81590174883253870457705586780548750833668862852238889952372206236774966573191832400412494946116015154305873210759963247859431688393192829248700535837612167242633896627292821666890819736549652534738107012873094812825219601489880060491958385552979476621004236099490018887651186347086675381603801017940808290855340870383683075409122477045713172106217670870448929077822708030574128623585863036730829850118"), + "0.010890646307437399028563191160252839599929232814970922208664909237494716181484215717644776933044418903207919912063594159099133490979634344811936925144447725948305353257042599564404885434349760121009797816724142318243738364307036155852011004353462651092012819894667485840322627440332163428546845499107471983896711023161969130462687924045508477090891879273259947713367290982391204265694893491531721581439", + "0.029754394000520972141380267705677256353702996169858414168445272181777338962866552847084800544086743338130195210005002660881957584567978770485056322086472328896988088721899728258224129935989180857437073412730903070983582129359565450458299328041955729258476583848159389714290107649243089149974776893563078190705561325124542669960182002956940545214147678093802442811362846262655415145897575707676223535749", + "0.04860754948595027759689273751438643634234576398271158524070718139962965653841137425728738193533514318422431877217110239554743968609870039776938201724688048349972662394084789924867267405853696017478160702683117974766657840965270625814482422398422216605490620054574252910928068433847115132429726072853170339113804838625536981361490008602432476302086066307320875870985443111858828925332085101376920451257", + "0.067443401266329792365583268418977022587089806595860818790246293104463576184436096833111903064801552379988362224633198052490234517656318474005568709048710308123967082103235230201516378834855764348740505470176912466587139988300259624310153055247378188811239571439869254255368050758213303082097176168650573121101094016896349982672715603054645687782535250201448606757920212668324401846105554332382154705308", + "0.086255244004175604199645786226683865650130764638142939010554245919172299560583634262067769465886944689883333394099120765964771092069938753689253686543017871063587988437235057514131760587649504670117933814486942187589706655157340717185354058186603027300571692666150552274324933749082047517987509942119060274537912867956274549119040817359639741746006374702951412541338483858389306953539029174581171144916", + "0.10503638090893519164596691292161072193010174143933600597680115817738720676321226654184308409972393036413684625874294713490753271261380987552528236660688624108474124469034444076627315674234385578608111398112242272762722849083801773818689342174907858373883192220827687618321085007917387951532673599267211035785307947515638810735621964273183425401191468313574763898720597251843424536611952986478638938787", + "0.12378012612096459891996422671239906394195356627713556749926735466337892925173796651675302282473738808218327028589606894825728784823540605065317506645900565980161901287116410208049542818796994171203890952761651470187834173644651508025088970034800067245131759655003164127161058084682831906406941473650395873577925901419536540828468001386512234321890242266327761400155849351025221609783793228816606096155", + "0.14247980709161433833827358255114404185333478069639957369769805221957506649654851981837061160249376538785737485777248817812720592537597263252706422066438137522011148566625861552209380620325080441618503257506798981598559897331754555335688284111417797211888381141445522536739542765207936516297907076923899840216864191777039028622886076254231994264908278499537587536902686114072117102531777746791366147472", + "0.16112876695857673825462942280040873226725445145336882995544646098546697397681955191516861690559627281570477802647683153249828731761062718487424104325152088763220776831248566486363299448443795266104568555186977695939803420793575204146124697832793773870449082377964029658283741910741804550762511379894890589132658450368609377005630322641674351408014813725947288936865021810537922503050280596331958949813", + "0.17972036691564914131189073707203611766536704952071818203835281740755093560444625679032703078557333645546302532200674729781663838075105196332695024246509042831095553050804767663788014113177991938252225120228302734228632787082072480689719322299247090887229731260135165819595797392665106642595359433094386743214852929965104946276195924300495453775467378376551444126292108291215861133471208854009513721707", + "0.19824798857606934571352609051549058593435535174283382080060738672122306773474119459815363636791069253463660528114022041674780565798655265640072669329819802234483545444085426470661233958030668844326674768815456315879868376252722369574694411591080512527683145774214215193268992508938562109669843137270238454905091555179756374512457742554641355319960601765568460966738628365652972463731882673979926092423", + "0.2167050363285819704223187876642169717474346025766606244643176750460657731203611217470241676182041675112171974414875203007374497968642376196256262296063879827128970901451226217571636202438144440234868076467587220541438440149682254317134405302648426790500751310485432990930185087578150399032543990173811106465656404530116032387260432178319507278340110997943206401370789106214680733463126804159766688178", + "0.23508493968539701289801441539326267060915175918342580386836036980227948313782327655061004506711767031388143537081826986030990557707922203603349984851809173788402101756510017046639631528282698404857654444279509591873678208318484036337040837844539190863615310872984455261973647897667843302241773795592355085118273592671348602240382153223466391512738221253451636183066773121830262978729780866153048605159", + "0.2533811556212047542679161173582151227103672187769971543582388259784795155332622779547839459016647290250036005712168909799523370471647322112833886051217950625710683025675691585734514265087749450457714578451290681140064635291501640395753290532318406110106892218388811781561305402570000283806458134435822529043797962340420841850011846648265787470508569124672250211852546600514370101687713861131209463861", + "0.27158717090241435065755609312085387589073221253701701142877476904254125053252466469600403650634482409879186635717002370089097070045821182432642232618427944489732133359996899812980722107011126957850576210476679069162561257167921627603536603943342268770727524690332400255408587654094512383349857596775777725888982277559281982571487656535560758087235441872907962373375423740325723506626374882319859924962", + "0.28969650440578692965912855479777150523900698183973110358010443581781966348171378962307935462457921708108325003566673849851640304571019200113280406744551445148200341554501141174444530008329262826786160080931309057528673711507934822659456861163197618813727062179453555460400169858233923358238607875306523866767536243361049306545596678120228677505849040202788510059415993219975440657979707947898632705847", + "0.30770270942563778634443222550824378057595253208974144909939396933701715445493088586920897452838893301853350676955400357197838773823140696209649573828382477454711986806154497998912926265388494228459988323524548750870702083339285969468391846533348589851520262990720843670148790211009236063622194282315540801467216625666505663699480592080398449845511909092071640909885054719301078547683325662349532658001", + "0.32559937596878634249263192973385963275552570142977727375619908690982968889531407133936548327912894149757305868454394002531385820341045863161146695151908269553629121372700695833373968533510661265854738947940689721812230819575490874211279007289828369964583273676393398981064015459284982970048174649094549631109312941188691838118955683939990881732219088392629316401227525790752712758279892546851835776728", + "0.34338013303643689435259984865624959352259286039436985939426483729323987764837568376066164703227630278807584950278626035763399164177429894322425866236150336898079573258157833074772287354310049676029566569737995054499018518699450946056626536479822852758163848528920078247789349605898976290484284018984355696648190967701849464571286257873661615051036433297599097073117151941857301740816310919312668936753", + "0.36103865089217782674224266392907326208964452822379102503439414768728197653534265911503054023760783622236800804794470785631737993143180071550223728801984904852623160397230839644629077782630949486339104760008566935013234195735777070582106661423219379374522941522832331186147905332977726043795737008218909226025962294880541867964419424128310806148008435847967256901208159302482322730929744194185143496647", + "0.37856864331529191294683302986737462527422720295203122486985051910813389831630458742420433021640718832999264813674938157273375290592788753133996741859965258034273428657399863159488519434113093863042179261649202584979828347495161391780592433454809420632605178105958049630938532568156789806946629309375790343585791884755866400295470651281289167454617624179556306285775538273640784278475358303871406797294", + "0.3959638698385755489557710011250921602780605301308457595569865098132061251227321128681128349835212212508810246299921462519655630208347321575504292305860152320513799100372630595769065936291506594220617567642210250680560302662459931036815131767702563357378794733903424219866581554015722958062178902473414883933807190920961687912191470152974845756609418554739641361171541363409996648143043979357302190703", + "0.41321813796987028521091431473013916161596830805293649687424341688961507413716621591649879163383882641673238540682782626959358955002216003316726344623613626809950993449214457071292961126188761860214007662067345193545393653191742497646193189677890657992964660139924463087072704096969748995358605459064076775540679952182100013584273877612509536257834358450242426357122974687246428904315337788603554112487", + "0.43032530539651581726649227346608528709372859200683817125277384462849187532000288969537766724897319030479860713591459932866508254904869456423088312945970943686450425589907227275358186473310644458353392107693439475272544181726520566221333846008220008702070460626739342310039148106649726719665728169819714333172605016313499067227953767878741853545763313707499816244740855778447731454065384788859848319503", + "0.44727928217193967651655712666040617006236300257644793444619887007723922383970962870988815495150987337761018019128790177957898245520422485269324604484642139354461290347689315448558082058132330317789105861674569680430563377440355102600184370927625450804550114009478901349833826102470780452480255838220723171955252412104006070322080932915859579006653276371401264439817338080069936810866666557553662506811", + "0.46407403288360522126660904671571257203469668709200603873826642103612288853249598361813813213381052968904786566929537791978751985511297321991996818974870946807510786919602279514706154473236597480481149516597293844121405001964448599792635426082163120478756812832932606227610137817312140031064078333902425335570730565173883252754294319888872518149175050583958244086010074110878967984441526026195572046031", + "0.48070357880154616464768530714893198018226307768872832018696934136162055774617690112915494983829868655926209174893609677823844628976682666861087174925649829592164380174433963170047900751735818142724368678683601091750819984658303806035572915499999180599872513173096429390456178642478189724903758698238722978406369084171804020040246631229610021517925007543961283845124822740019511921386188934760298241688", + "0.49716200000672278683141570737786924159326600032981923078600441023882683095816876734389429898823686013764499093454507915253215528870989821318738227798745591597923864925733083640574132559603114206682739488541451077277291582357627881380008066440685837422009543184722898767087492264154499861112499590934108906196324393034778681622285346845867860458748417916763883649390228287689107774312170267691257606116", + "0.51344343749844216224309565441486087365890516381683759696704839526386373494321578458551193514743669178342420835082611868891019193801223760604220552152028015878259509179672236586872004169442377393342941368136686044214656339879518691219516228434732537186028321245942076903928921929607502848888640267094590400556200402256089794954485061564115688273804254406706725374971267431122825004095102239220991848356", + "0.52954209528009218542956877037980380998240467111773187487177084701668417706002935457309027480414979338624119758863233287969233845786459113619958146654397106933375312089626001011352424174223416515118670901639015699899005014886945323983797633471828049323917701068414699189471811508040323789047713536270617216249222074877291822920747392986535291960399633972613345908694327479738445245500914715996152461985", + "0.54545224242244689926647810432697721723945987179773365856990386707254353534614807468692870318816991084937065603191754270239773531928848863926268254420020634174904439920465735399587679402503040251639815041072160696029528969373711375024524059535996077596844557011786411865071706766713049961515353664484996577751962474564968659755104983468313555304855249829815310291744255989014492588353749587481644931913", + "0.56116821510380861353700162760755101727268623115746212675907859515911800480855365905235006799852352328451502804871577600277181740574994973635138803211912076695967558806493981733454148905054449991651227073996616835900542604367257843601995979944175684600136575098939764120745952964355353589317556067474680987527548079297833539998258342242865222215681747969549869015697939554127499557081626950060916329896", + "0.57668441862626054773920164705882295031880435874490231795930393597704964539534854834250638055542815083463738683146430082379073149079998953871974990605030531115748567904948229002538680465351816034414085890696196467615521969543006224204433997063527288514443404935419253943724579872472854300703798475966107579038880496698051818375532546368197809806544115496171522444187250876233927302975709248591908972346", + "0.59199532940731223634617420193837196766186356068263223313261061480558639436412180991021350240470913092271149633483820904350945127229180169976070379470147429711011056203078210298313829635000565303787641997857930629432231274870246836108452732993007541125359738273485061324228778750531830069944570036169084871305329515261365955383178502917713214334808810726412625844210978481512366368025275438632291862785", + "0.60709549694622869462483067245797028399468956070763942538530335526853282815406226053099893555611232739741099281199863420254333016184720313024881100010161759837083928797224725640021095785125988238992410296927225409984765886863313873892022531648958451940083661715815760806237878803609330649695132473889046508160482887768573723088361332267243452286610176948724186843039692112797106039213976473403724518188", + "0.62197954576434335539696684219824327976988998993669475584026026679831221725774460365328908947620452777457191790806959938899059379387140391128845696987642418506611453321626607869801717870254836897328796165084605948086983949944714226464644755644542238083403302661596239269476252222614109836597348873471190787660391585694078779921390758232910639208518119325492789999941075221166054973249356136808607130253", + "0.6366421773186640485920116318191204083389644098160828009666722635549477083039305904975813615643101060893999315509501318081025137289051787335454356108133761354485193083183997634369795655283340428506642872565827559825155045924936470784378552800563136355526499002558162019410271880717338646318471375684163442601830537613691628498474632262547856029932241457937391840960919415488213025664314613747543749464", + "0.65107817188809080279752785471799265973958362274943758073000075578938519480042543196041314945170036193559782763524413154927612489597355144799562963417455961310886431794132437757357185377007718709790504976900339191552944965308823754898079933186431693664015814010551367365293786806527034958873669211570906132849013497458819941168651227792824572805777219160376304646562062564773441718051418178414899683019", + "0.6652823904315739978766556052897347198651017349760138699519597733553278561013395851136458951983261597283585391502588949649092379467069209284755289821255744166256794329589771465045421874634188329764638118238723545310838064785644468083837991172367935880462068347034222894524074808990476036821633127927532229213401486467496527893691588255513769781016943243185567913995336109327864083859254466073492381187", + "0.67924977641755138662041086036801948989088186294785002709809874961811116536667286127777672928127306388394020078452402417993836722984523906631302047812425809759286220237826357465064765092612104224837992075711035615650942777454297235908308024053950635657488001916036801234116581671119069849133344664024677517075723660642709275823456343659009540444032487248071553674961012055521740306092600444870718199652", + "0.69297535762401272778114932738244728669670875114228232862389083194872888693112134130021641463393969624412179768291914405554577080353247136859984307940401373940521815913274464950964347624918449081645304540343160683388727015489772202472645406318288749244334156857814927405528763108558137488794292057315715995191324964500528600378291562277858608403425720078390497455476055579003286296442406491998525563297", + "0.70645424790855122905182233963742667718470686911515869065744744473731249895412640632516625097411541437953942564566468313798077366853928608154168668667806938130662439220702019172328936889436324187304262248463334787504456805683070026006307765178787997020889111556678907849442591478755800698808480163225125777511828352357189284217101098738405458071150544253514248561787426067001460586251699075230390564367", + "0.71968164894777168289159927814596788937422432901416956306230349431557362414856173295064125294878325237342190029914430775648665560145040598898117000971783978541799092281781000633902779626437866517288284324732827083065703448279654800632624171861777710582293639879819116932680545313562525074940809403693475624332169458744562386580074420532959714281903926902622613852892104465683714186704831143197300465955", + "0.73265285194543608674851404628602868786755398311878599262050209465658337331457767882450516660833910207846986678480603058221329185506983962144302950162737505562091432645466997334653618075359372680522922578429510783107155224742867979206003853893418268095936450823867623873015528453108944563276576646508412198497923383466470895808777876544429706485835161864475122029711660543090876323595451165397047981956", + "0.74536323930873866831066285008063416514858255428941319323031554151661731879818806472410911187787504167842137286019020264008471692607030872105020489874402631524823767448432915438225335869622093354538021006314536198469136634364850042715775621307965524560308901397550829610851125072518884822515926626213581949190024268711827023522012804341871590177804438418738255381261594827085100659777173578154500251787", + "0.75780828629211358196731753685850074775187628883294491833833279769413437275246840580617185041212744084038976069700142887035937511309419495512390089087847775651833369173386038513330257480188204696687136231267595399438343156895032682495327740328291738325217778497473260463740600852973600297913238958828132336080624048815574113414592522918778477418427876829087439774857073733879539765547872800792711360592", + "0.76998356260799010064124325420889481428942836988785464918451704687709959533402569414853910266075223008145347866420469852220997470992987183595134711278161994827010482478666523199914707457365681979989417199177427808129308850228595726632468139527316915481709465938257650120793934685421343443942356060396291075752713480402305699120964704579260218579751719693291565685728074939857101460901984240449471777639", + "0.78188473400392189344901888012886357289691591193533323711550248487573232160560048524966536928562079994581390209192526509899176077393862245482807165569409036943146775931090958041945317489351020506180957959482939768275851398130892970557450783138983566392455270904228057175489097967314871299150832712632639718878702471658606369540854496281803565819545728647765960328269135853132407415684491934581417388002", + "0.79350756380552895006859336306152006552993066088382163294295016384877329185292344719536879395060919553184640006473875955257330264813115929942877156894433233876161573894628944452740080653935089289153173836334040374431360850336851424574668632837338016740333716530963434291489645017931035529052587483629111178971917421121398732580060101294617212337648611654041575132820234403350225337355214099696493406567", + "0.80484791442470288298134387731514331459831415420391927496917008531718727007136925375073869996549995938671025493755987802316807560672754205522916341547950527416285009447065632296220924964603370109747266700136618832767813938243784759073035555035361911772169687111972294262096081393656654067512785827139608367560009298721819281091010743363153063005841441400130721362346287552727162527118465104052539630019", + "0.81590174883253870457705586780548750833668862852238889952372206236774966573191832400412494946116015154305873210759963247859431688393192829248700535837612167242633896627292821666890819736549652534738107012873094812825219601489880060491958385552979476621004236099490018887651186347086675381603801017940808290855340870383683075409122477045713172106217670870448929077822708030574128623585863036730829850118", }}; max_err = 0; @@ -230,14 +230,14 @@ T("8.650871796830672527081873591655777773059986288175183143531618768919892399328 { static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; T val = sin((euler_gamma + k) / 53); - T e = relative_error(val, small_data[k]); + T e = relative_error(val, T(small_data[k])); unsigned err = e.template convert_to(); if(err > max_err) { max_err = err; } val = sin(-(euler_gamma + k) / 53); - e = relative_error(val, T(-small_data[k])); + e = relative_error(val, T(-T(small_data[k]))); err = e.template convert_to(); if(err > max_err) max_err = err; diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 04dc679b..cae2e70e 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -47,59 +47,59 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ - T("0.33937643772780730649735035088117439284797964277099188367427256402032493952288848579083622213428182842627923924487560393743204013166230906610274533504451302298480596207257724471359936027198954417317381228420986152562253196896619001418292769103034561794393400788635610424360775622370491149170501475453034747306600304507650361914904138327962144190354572359428689767990353722392457982930942617983634601752"), - T("5.9746833446871871874685235810964396457491766537010251792063372398172074828151074989468673672535421045923659313715467371148678693662985453590831122722616951299822923837410906027605763677066945998696776562438704017846907508677186762421899376364636371743116519071733413775650991880222096045615827530741679305666041641331859757012015389431793705875600863391408448065773828563483223117178640044499399723744"), - T("383.32826140718915582837967448860824902040431804683461630967288341613741467095168380744762629948507973653220772087887989292128183196493611623766470283358542341824134250511562240487252437079958429586344329111208041197054162309164204144237855212391474938076935722386012246677813568519769393617755607372817372398764101401294149353978426057544810680225593132066193858006901125069663362991172745649465725272"), - T("180470.88334757918167934673473709881208559849920820465419382707969109187448281704429118605409224039018180517847684905660962429505828088398660499158213746722168139372781263849989865384042531846290813274318773753295025006473736660333640052386121946183935053629928496714560749082485275242374067168149435272169334475060524974384307351757201698786200303374802146857634893509516262245925287553380389076772488"), - T("6.2781497954189513207977998975338639259302378413658035459603622432839117790845430762753614618299222131433987986511235061633658516824123179660244932375967566163895461895213509376427850290780942550513918615228886566287592461085762554208269169000672149592375451149457664991726947185145469263932975075681560662428417041932848357447220175607720561540370653825438750168143857523868718856189519864027430308779e8"), - T("1.6137831147508521132232267071463247985636947830692243664921522457394294988129666666745854084767325882717254318322908201512400243137564101564235450151960593110176457803621675408660678871179456625850704076654060872094257085919134755925910859520026379969099492921728083639989029675808598278170215911879751320574053132699172028082102336989338403081942130794464992491330850160862146024982135931859868176809e13"), - T("3.065121004865094886953119667134247741359538615435533822684602797608029400610449009335078883525336625519599034934744634528257351124420564267197918749480389135525897886434344884370577475363556341414615470556433033106705280531443046669163916446454890662947185057748542735928453570069226294801221403438864013368364219717148075652123561545773399076318560221173734215703610924057158101731263882232550297741e18"), - T("4.3016893602106215864771434464025735547192956887049374680649926707919814241961779812200280749930256501997849507695395125441756421661413154730888574483309057229943886742437071251707738990393977398403536175642762242808350076543018009682725019125106175929448866428526984370017465117236484653179596869643117790492866002064306593104169410537341890174831622159415936125041593936992634719906123727028419057537e24"), - T("4.4608685929681360001024935791890661655506049487122331222491789265929503651540405036031990380918459104583255735620288691363060079360758406339887417913286769718423759522832754263499878135869223253358698774066131403822428286318351390574838877307934317251880890827523325360658275060099119902102399714992704146743744108968362755624325107486994088414126705458507082103811086372240878942983212662081104875997e31"), - T("3.4181315955816806472569357441100390029536003312981931954091744304974491527743599822230006760631204302243855667216955365986192324833652299336285826148922073950348547795494738267861098328516497599288314822606511466743212319770180141969147554023326883651348621187276823849839283609071336923316655316828855943689100621619083822127788284160652232283630351386798636794979234576432977468152969056493038423561e39"), - T("1.9352946282727908101414530212785249763640776919052480158881659190625166733449770912626442628329346416132299268886589920690636914906717492301836773331460154604580407945460359957380672599434023197425489039882987443681919056322268437224184910074985583829184831034293865504101338027818555871946080687710035062238789949143319550108801094190098446234092310048150477274502060870736716324117412815209633124145e48"), - T("8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696410406066640351065195237123718468440597743167713019447544827353458477844468727834630038609140168354634397475741840053079910210908251252223665806813131724262334693137656218010287981601097259534068903471812189212459231851835393208367369054618963204727992168556204168791513644815218096463093e57"), - T("2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636306931304501320694017061891400181233108050930610234076339285157392030024769366663118692571469493256243952018705693924919037621083041696227375589264811876761430035546270312014570431860268644276406457398485042029556392894799022733858611415899182421526634018060028309384e68"), - T("5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887824145000873531937856827299256489358571593850210528248202703396455363364446996158929674989959483681393263782486430231288067231095140919741928337466492665857902913114664767450432510739209971738097074002526312039248809036478310948111740897528204e79"), - T("9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667375441761513692598664419973302444660838882173718713387158013802112502169254860961105745895124415352002289485483908952674562396552790441656755711709645516914188860464353624992313010889765422981069429049436524222321550149e91"), - T("1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120462726353510147373798347292650122930289404816748193194907382572774906323766342758092979989633448828636445074016110331338699464788279882402189027828261039788079556739180915346692779065476431369e105"), - T("1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155600824601418042452138211549248837967344874095248283887929145923103153332810091693393888809653081365270947112297406471162377655179657693898463736926911943490619163092e119"), - T("7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004823102746037654096845266998518623332118892916505020627868405618942429551700207476696585635930562973459491424179233918050890206232214765e133"), - T("3.798536358006797624025033016530070695826982685154937173246022092345982280900791849578041210970037835270398289956157015064696375146357207576854029748413680946201805214954504282866534528711715039215051307866373994662368105368505465037259587291440042344663580680646178313958620437868058550744621854406871361710599007951099013146571208384054250556080476992977623024059268095813712424244902009427293468485e149"), - T("1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174653663068675983237955855108059376913611877439522917217336109804190399e166"), - T("3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531487094949084263218956635085585632719e183"), - T("7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201"), - T("1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221"), - T("1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241"), - T("1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262"), - T("6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283"), - T("2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306"), - T("9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329"), - T("2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354"), - T("4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379"), - T("5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405"), - T("5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432"), - T("4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460"), - T("2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489"), - T("8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518"), - T("2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549"), - T("5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580"), - T("8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612"), - T("1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646"), - T("9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679"), - T("5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714"), - T("2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750"), - T("9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786"), - T("2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824"), - T("4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862"), - T("7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901"), - T("7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941"), - T("5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982"), - T("3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024"), - T("1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067"), - T("4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110"), + "0.33937643772780730649735035088117439284797964277099188367427256402032493952288848579083622213428182842627923924487560393743204013166230906610274533504451302298480596207257724471359936027198954417317381228420986152562253196896619001418292769103034561794393400788635610424360775622370491149170501475453034747306600304507650361914904138327962144190354572359428689767990353722392457982930942617983634601752", + "5.9746833446871871874685235810964396457491766537010251792063372398172074828151074989468673672535421045923659313715467371148678693662985453590831122722616951299822923837410906027605763677066945998696776562438704017846907508677186762421899376364636371743116519071733413775650991880222096045615827530741679305666041641331859757012015389431793705875600863391408448065773828563483223117178640044499399723744", + "383.32826140718915582837967448860824902040431804683461630967288341613741467095168380744762629948507973653220772087887989292128183196493611623766470283358542341824134250511562240487252437079958429586344329111208041197054162309164204144237855212391474938076935722386012246677813568519769393617755607372817372398764101401294149353978426057544810680225593132066193858006901125069663362991172745649465725272", + "180470.88334757918167934673473709881208559849920820465419382707969109187448281704429118605409224039018180517847684905660962429505828088398660499158213746722168139372781263849989865384042531846290813274318773753295025006473736660333640052386121946183935053629928496714560749082485275242374067168149435272169334475060524974384307351757201698786200303374802146857634893509516262245925287553380389076772488", + "6.2781497954189513207977998975338639259302378413658035459603622432839117790845430762753614618299222131433987986511235061633658516824123179660244932375967566163895461895213509376427850290780942550513918615228886566287592461085762554208269169000672149592375451149457664991726947185145469263932975075681560662428417041932848357447220175607720561540370653825438750168143857523868718856189519864027430308779e8", + "1.6137831147508521132232267071463247985636947830692243664921522457394294988129666666745854084767325882717254318322908201512400243137564101564235450151960593110176457803621675408660678871179456625850704076654060872094257085919134755925910859520026379969099492921728083639989029675808598278170215911879751320574053132699172028082102336989338403081942130794464992491330850160862146024982135931859868176809e13", + "3.065121004865094886953119667134247741359538615435533822684602797608029400610449009335078883525336625519599034934744634528257351124420564267197918749480389135525897886434344884370577475363556341414615470556433033106705280531443046669163916446454890662947185057748542735928453570069226294801221403438864013368364219717148075652123561545773399076318560221173734215703610924057158101731263882232550297741e18", + "4.3016893602106215864771434464025735547192956887049374680649926707919814241961779812200280749930256501997849507695395125441756421661413154730888574483309057229943886742437071251707738990393977398403536175642762242808350076543018009682725019125106175929448866428526984370017465117236484653179596869643117790492866002064306593104169410537341890174831622159415936125041593936992634719906123727028419057537e24", + "4.4608685929681360001024935791890661655506049487122331222491789265929503651540405036031990380918459104583255735620288691363060079360758406339887417913286769718423759522832754263499878135869223253358698774066131403822428286318351390574838877307934317251880890827523325360658275060099119902102399714992704146743744108968362755624325107486994088414126705458507082103811086372240878942983212662081104875997e31", + "3.4181315955816806472569357441100390029536003312981931954091744304974491527743599822230006760631204302243855667216955365986192324833652299336285826148922073950348547795494738267861098328516497599288314822606511466743212319770180141969147554023326883651348621187276823849839283609071336923316655316828855943689100621619083822127788284160652232283630351386798636794979234576432977468152969056493038423561e39", + "1.9352946282727908101414530212785249763640776919052480158881659190625166733449770912626442628329346416132299268886589920690636914906717492301836773331460154604580407945460359957380672599434023197425489039882987443681919056322268437224184910074985583829184831034293865504101338027818555871946080687710035062238789949143319550108801094190098446234092310048150477274502060870736716324117412815209633124145e48", + "8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696410406066640351065195237123718468440597743167713019447544827353458477844468727834630038609140168354634397475741840053079910210908251252223665806813131724262334693137656218010287981601097259534068903471812189212459231851835393208367369054618963204727992168556204168791513644815218096463093e57", + "2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636306931304501320694017061891400181233108050930610234076339285157392030024769366663118692571469493256243952018705693924919037621083041696227375589264811876761430035546270312014570431860268644276406457398485042029556392894799022733858611415899182421526634018060028309384e68", + "5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887824145000873531937856827299256489358571593850210528248202703396455363364446996158929674989959483681393263782486430231288067231095140919741928337466492665857902913114664767450432510739209971738097074002526312039248809036478310948111740897528204e79", + "9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667375441761513692598664419973302444660838882173718713387158013802112502169254860961105745895124415352002289485483908952674562396552790441656755711709645516914188860464353624992313010889765422981069429049436524222321550149e91", + "1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120462726353510147373798347292650122930289404816748193194907382572774906323766342758092979989633448828636445074016110331338699464788279882402189027828261039788079556739180915346692779065476431369e105", + "1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155600824601418042452138211549248837967344874095248283887929145923103153332810091693393888809653081365270947112297406471162377655179657693898463736926911943490619163092e119", + "7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004823102746037654096845266998518623332118892916505020627868405618942429551700207476696585635930562973459491424179233918050890206232214765e133", + "3.798536358006797624025033016530070695826982685154937173246022092345982280900791849578041210970037835270398289956157015064696375146357207576854029748413680946201805214954504282866534528711715039215051307866373994662368105368505465037259587291440042344663580680646178313958620437868058550744621854406871361710599007951099013146571208384054250556080476992977623024059268095813712424244902009427293468485e149", + "1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174653663068675983237955855108059376913611877439522917217336109804190399e166", + "3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531487094949084263218956635085585632719e183", + "7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201", + "1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221", + "1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241", + "1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262", + "6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283", + "2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306", + "9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329", + "2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354", + "4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379", + "5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405", + "5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432", + "4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460", + "2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489", + "8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518", + "2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549", + "5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580", + "8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612", + "1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646", + "9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679", + "5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714", + "2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750", + "9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786", + "2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824", + "4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862", + "7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901", + "7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941", + "5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982", + "3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024", + "1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067", + "4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110", }}; T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; @@ -109,18 +109,18 @@ void test() { const T x = eg + k; T val = boost::multiprecision::sinh(x * x); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; val = boost::multiprecision::sinh(-x * x); - e = relative_error(val, T(-data[k])); + e = relative_error(val, T(-T(data[k]))); err = e.template convert_to(); if(err > max_err) max_err = err; } - boost::array small_values = + boost::array small_values = {{ "8.223167319358299807036616344469138485821440027829633696917375433348917938654659351596020080036406671343718039863220496616e-01", "2.526123168081683079141251505420579055197542874276608074880949653019810769068593790606537020961198741487692473633089323967e-01", @@ -179,14 +179,14 @@ void test() for(unsigned k = 0; k < small_values.size(); ++k) { T val = boost::multiprecision::sinh(v); - T e = relative_error(val, small_values[k]); + T e = relative_error(val, T(small_values[k])); unsigned err = e.template convert_to(); if(err > max_err) { max_err = err; } val = boost::multiprecision::sinh(-v); - e = relative_error(val, T(-small_values[k])); + e = relative_error(val, T(-T(small_values[k]))); err = e.template convert_to(); if(err > max_err) { diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index adc27efc..e8b76c54 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -47,109 +47,109 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ - T("0"), - T("1.7724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021"), - T("2.506628274631000502415765284811045253006986740609938316629923576342293654607841974946595838378057266116009972665203879644866323618126736180957855655966147931913435480458123731137327804313019938802647150234465504898425802329413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739697252377702538748247848633488642597506589513095738763427251926880402"), - T("3.0699801238394654654386548746677945821221293132529234536092078633942877416889511494096190816646754176075937074244926190270345429405099416216417975877667492169521054332143197658279274969526803993603118331066475990710709664118358901594985707262626428113026982211562266383695623138538180531502756293265592878111781185072888638355377253555018107077854544789544383440520575813285321747411416665951698336554"), - T("3.5449077018110320545963349666822903655950989122447742564276155797058225691820643627499013134770893308324536472485651413324723057314488452050501874192055741369240753973062102456998503460579016524578641907585359256003492780307029594410334003803704680371708939489898252806278435510518124328108386650018127968152274669549503068673359795787317036728175909023303234775201181347868635826656197096924963698041"), - T("3.9633272976060110133450287651201830315223597563961947927072580621967387180265716572287741878596340312327405647932953536228865576823564748759947646553751734998345995939694212511640273087471173966245241872854466233365203399138209787201764302154653389399844478265349330231414848625437655715466042970013389483751348124861944502103329498799507208968519689075130370544887031405163197191213743249921794351351"), - T("4.3416075273496059561780877637447746072326533687072755618572739666222092317177743715006976894086930825786781544103546196765147228208117261527925650444366222660658062788515204204290333579229705891625284205192508929083683171545403426350581368076912529151526695869265253040752801155830676216390514320781159868843187117008896251829228661529973809619044473853320316190549204385101682005396209108634347068051"), - T("4.6894720998347514072224884956178300284641581320824106981633983758453256799744598320502835518976559264849872655758786968460389643339445673551269229241587961003379434250163073293499620997874074698516457801989721178630024470871191608919926005831108426583129390228179129584616970283973090935125037470398636450816554023533350528106738423929159432353981681442386558251657700009494385592281294126884159744657"), - T("5.0132565492620010048315305696220905060139734812198766332598471526845873092156839498931916767561145322320199453304077592897326472362534723619157113119322958638268709609162474622746556086260398776052943004689310097968516046588277255593373672260673516476883623121569801912000827503005505833029224516877237298413981218533281823760314793945047554050774964956972669772851950131790261914775268545038537608041"), - T("5.3173615527165480818945024500234355483926483683671613846414233695587338537730965441248519702156339962486804708728477119987084585971732678075752811288083612053861130959593153685497755190868524786867962861378038884005239170460544391615501005705557020557563409234847379209417653265777186492162579975027191952228412004324254603010039693680975555092263863534954852162801772021802953739984295645387445547062"), - T("5.6049912163979286993112824338688008938543237752107832649583533936522833776518879743363843375245853739417146705744562990455542075539831517566644946677745451618612727648966621311978378350382925082779759505143787044093893128068035895930171543641983336476166511254286056162309665822553855728700099730566135263229310482770603702313599779589939672325828370865928422053430400072831171741334547285379289682272"), - T("5.8785643816741282350544208778970709719984349210386743751731421071573245581781685524668778017649261234929950374883647452602146761146149358621791392549585140581629668270696079138391334037573962811189827061481326675520008356479940776678802748553233235202402722469819906081593819717286567095640228930465862438974894553668787148856578760128886389981154414656617912505436134549129966633314429654846358015259"), - T("6.1399602476789309308773097493355891642442586265058469072184157267885754833779022988192381633293508352151874148489852380540690858810198832432835951755334984339042108664286395316558549939053607987206236662132951981421419328236717803189971414525252856226053964423124532767391246277076361063005512586531185756223562370145777276710754507110036214155709089579088766881041151626570643494822833331903396673108"), - T("6.3906732428334428261259345606683697744186991536295350856572952536792334275205803679271798801956028881370696845677932311660934936022581339690170211061979607805733455201951479794666965209869986063436354009130926493418080814534089804341799659379279227089093453978416225274321462755382516029668891204905799575745973313377842838152883214737404214320108342272339141901742347633007754961396966894396055218335"), - T("6.6319150439565422209346322551709504425716735849288353552017602534239577421171265746820083094212110964436394134010761548512808504941585541646833262349861354253649509838599508444233906260858397863860491814334791305676062694775880372125594128993954478298062410594772628739424601593453063666245276274089103412069272086098919187261711687627099337914569206834456380008016156884529727902326858088262113926506"), - T("6.8646842464782674501407002511771796402482345158456677029870019960868679981055033418327138403618402473871307535713830436350072970119200914833099051433782215491766416984101933198510637348024255711982258019646531673420782186308197017640254188794990907965118086055013577841433086632978528558423768612444566483278359963402485448887021894326224663275495307768561423891711354763179723690983043995316901267288"), - T("7.0898154036220641091926699333645807311901978244895485128552311594116451383641287254998026269541786616649072944971302826649446114628976904101003748384111482738481507946124204913997006921158033049157283815170718512006985560614059188820668007607409360743417878979796505612556871021036248656216773300036255936304549339099006137346719591574634073456351818046606469550402362695737271653312394193849927396082"), - T("7.3080144438162192957641041416982527245725757227305100451197343989892588739821761414808182301620094920283430190134112374199876901202971502696155007476535432232511740870601931279580970011543206100142223236655886609010356942017275197137478321035055972286226075962614582069104333896744606536872975969818688237536119023271082556121464860312141980207823280639488597150891408230800059272527978401067077953752"), - T("7.5198848238930015072472958544331357590209602218298149498897707290268809638235259248397875151341717983480299179956116389345989708543802085428735669678984437957403064413743711934119834129390598164079414507033965146952774069882415883390060508391010274715325434682354702868001241254508258749543836775315855947620971827799922735640472190917571331076162447435459004659277925197685392872162902817557806412061"), - T("7.7259472181866523240047447857321216411382058048896371981452984461525717139136608383759839184128073783247516939318227254188667186252920148976230121738172757350696910761931890703374371352358496474852223543486038624030825959222662530865956553207195355499692117829480399491662056117052329890340838528765941430191040119361471649248115254864172681901246179411702783591299133670884083665071028145395467905989"), - T("7.9266545952120220266900575302403660630447195127923895854145161243934774360531433144575483757192680624654811295865907072457731153647129497519895293107503469996691991879388425023280546174942347932490483745708932466730406798276419574403528604309306778799688956530698660462829697250875311430932085940026778967502696249723889004206658997599014417937039378150260741089774062810326394382427486499843588702701"), - T("8.1224039375904999377505608579034490537406469390188453967144182984533857877290325940614418824321939803516927684051300838316226942055451781105993601208197552034439458355062514914010489070985895267530389722733907460105781807411858969857115513607918067972038272323523153845863300953401051857105777813389049407583848705460609239380620914585791645607237224057116980335542916058764975650602331697086068450513"), - T("8.3135454758469596794056637871226727528862453946735918624095026138842010906353046929837281458679232254339472365667835656180555764317605853990925880640952695214325626531682928857436719230013491132666257954067248287299135662202926101799336433744666850543864886828346127739925910374766049639016834422078705626669128492094502607019895812459974265416556762885336564093974655530945349099945854007412027682568"), - T("8.5003900517896968140560669406685714433987187446432157683182522591265374787311356353957620692173960349646676819100596310150960821656523158016643597684118372232800409169139557083780710669356964332570202113507421938631568719639718297731072485795933970567341061565566173805049809290766392136448216369341299035269967401098236132846311584581915310373661351551853853444420939639104451552704753437006616697649"), - T("8.6832150546992119123561755274895492144653067374145511237145479332444184634355487430013953788173861651573563088207092393530294456416234523055851300888732445321316125577030408408580667158459411783250568410385017858167366343090806852701162736153825058303053391738530506081505602311661352432781028641562319737686374234017792503658457323059947619238088947706640632381098408770203364010792418217268694136103"), - T("8.8622692545275801364908374167057259139877472806119356410690389492645564229551609068747532836927233270811341181214128533311807643286221130126254685480139353423101884932655256142496258651447541311446604768963398140008731950767573986025835009509261700929272348724745632015696088776295310820270966625045319920380686673873757671683399489468292591820439772558258086938002953369671589566640492742312409245103"), - T("9.0377767727099026972694942617286283519638707297067360423044656369897256312879279757777821069900749950044557425089876204493377875035177412255299561756483293212989442985024715332632332359674718551451382911466759962124284189582809463459910475239066062631635959736116080550697706078586467289296679727180578661286024444872547183386534308509666500269688916003034333222621461052151120014437539157953639737316"), - T("9.2099403715183963963159646240033837463663879397587703608276235901828632250668534482288572449940262528227811222734778570811036288215298248649253927633002476508563162996429592974837824908580411980809354993199427972132128992355076704784957121787879284339080946634686799151086869415614541594508268879796778634335343555218665915066131760665054321233563634368633150321561727439855965242234249997855095009663"), - T("9.3789441996695028144449769912356600569283162641648213963267967516906513599489196641005671037953118529699745311517573936920779286678891347102538458483175922006758868500326146586999241995748149397032915603979442357260048941742383217839852011662216853166258780456358259169233940567946181870250074940797272901633108047066701056213476847858318864707963362884773116503315400018988771184562588253768319489314"), - T("9.5449561001664121805331805088802752995271020253115319957577421074579216968677586712228633689301398077088311039352276247681835887608812952471054772558240075235037900668496782095699528477874731344527911180393401955463971510372217637805322797423365420146482689917834696038570131901274302300283422182521267833006285359393142295438279095927378336768120882908112575029657358394527378572761652822503523073037"), - T("9.7081295627784962702001300843202309014239162997075295338190725567740867768360828377797213369985222605738422125153205809614310720383763405854578937000465002140881359434675879559012762493638090947752116234678266669492794549428222971705363614488937056614823310418806119084118208768665243016864006604622872546517235887590814184637647435563763625009597343962143998069332678679995949595625752510047376769469"), - T("9.8686053858325691182072112788747533886058057201411380476476456712628079750259677966540684132469441944845346447517503807626845356172247759078119619345186680215080975949071260888809391129195428784313017526586710196446975545314396408422675567403935100395356341294811788475428908479858626488242639666149638195038312462497821769798554375186844561183275752651214811690182399175358793738641461618652775991586"), - T("10.026513098524002009663061139244181012027946962439753266519694305369174618431367899786383353512229064464039890660815518579465294472506944723831422623864591727653741921832494924549311217252079755210588600937862019593703209317655451118674734452134703295376724624313960382400165500601101166605844903375447459682796243706656364752062958789009510810154992991394533954570390026358052382955053709007707521608"), - T("10.181972184624311615821119525392646566614334777981507304797991128872845411935855045687447106020270650309180533858862699802452616670765042577313665825807440090307057847512919113426271458183092072699581551465382478938467355504032255882264015569014213825098166114446059843169833192986444108942840506996523623715072210566481161204920674164962676130998460012958025127031857745585310129294054842583903606686"), - T("10.335093140463368369194743647270744470970869361548018260412395037033434954444302167923137950092164921880086359392676052875666101107812632184449266829146247839347650312553659121907050973521042894776187579282867330188754139851333707822660813843642659379040498993205802303976963038480061139480627996652519324110663045988145350403266422896739974552818525729859458145898707780132492595810710069483709616997"), - T("10.485978393819184450541593598855581216998391038666955618731153780797160148941518448029432453424375096293506458743106555413233965573260145046667734677176640468352558693946707494977637683951611790027770744751949296502577300781357035084119423389099318378785160701550868259776821786756050171108775480133925239818616956336860985197400338717780301525607287576543821416712628079932173339130152141281524936833"), - T("10.634723105433096163789004900046871096785296736734322769282846739117467707546193088249703940431267992497360941745695423997416917194346535615150562257616722410772226191918630737099551038173704957373592572275607776801047834092108878323100201141111404111512681846969475841883530653155437298432515995005438390445682400864850920602007938736195111018452772706990970432560354404360590747996859129077489109412"), - T("10.781415870970860097347086002569754013483313106913200202187513520048043712278512261111348167752270787807827044005214735609272769552792030217118319247865527486947266834539351039872232355517952920779295855320877662434434089302868383880854490418955953060861828833022956166078549446407677882309027526266764943581836604667447009735143063508187804312221807902016203318428080812848859262617506901631056404484"), - T("10.926139338138249418394948518774535514239264300129320003780439933689850327924622206216861373106327795446382986541097387057719208036647206296404050944003327874361582341281080807890889880787061319999797409840564399938369028699154596465019693581401702995072256439155901828510666479433850274478604710483110368760249425996181639834293503287006547476391343675449556976797862780800361545757368573258815323922"), - T("11.06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602611864735807868417839407991190718628442039357569977371968270131812518244771818655226966561256042843867368054126790999954427565212628829680859010057375985048181200629605336234528792323216018627284394365650824130654190684379749960413601595348763566769123659605593998962030711530297996631109"), - T("11.209982432795857398622564867737601787708647550421566529916706787304566755303775948672768675049170747883429341148912598091108415107966303513328989335549090323722545529793324262395675670076585016555951901028757408818778625613607179186034308728396667295233302250857211232461933164510771145740019946113227052645862096554120740462719955917987934465165674173185684410686080014566234348266909457075857936454"), - T("11.349242212464298392610285658298501528539506746683292704338035654856239080485360828460205074304281603179304760097806255228463147327169830108042093067800293527086021375553337641095043483168312926670841786279105684958531871509131651122477280457930695269239120342802270691155290589721502201125592305692096859835744595168676715800717585850328384113754784770216906888175704141625668202687511966586138689496"), - T("11.486813807613115307809355167215211082379289672043820620858981542835886683139127150291615174043283349892373335303488265357426140211488562306351746628698313560931134742861605848764176458004039113239912373535418892499572608431667264556464452240410101014511349682690566153385156486931102628456780783577079308426737658296507891772476075136809898570922049321898908119541008410725370277134653232606047953378"), - T("11.622757164475265300727734810950869136366250850775675675103670116706112045368165235882961201344951218672069233183763229866495319155659488490374792371109115979803795182321120105254011624290383337645277922708894963432033544765028110116592451203025661365050867782024140543770476276220678204795976767514166142764541148954132005264256215811527038353628432725649155000008199699094629246514703895814051248301"), - T("11.757128763348256470108841755794141943996869842077348750346284214314649116356337104933755603529852246985990074976729490520429352229229871724358278509917028116325933654139215827678266807514792562237965412296265335104001671295988155335760549710646647040480544493963981216318763943457313419128045786093172487794978910733757429771315752025777277996230882931323582501087226909825993326662885930969271603052"), - T("11.889981892818033040035086295360549094567079269188584378121774186590216154079714971686322563578902093698221694379886060868659673047069424627984293966125520499503798781908263753492081926241352189873572561856339870009561019741462936160529290646396016819953343479604799069424454587631296714639812891004016845125404437458583350630998849639852162690555906722539111163466109421548959157364122974976538305405"), - T("12.021366896702325047512148370523129868500863831336365554094968238961326486689613290630609864218702661853221321521170144826739118836804766785357157269477553635675326417440397275525273224383182704417613920902492439425058136861846204626155795604149515361113916782624367244364805538377594330304168849066367137313615505351036054026784342300533235365305626284568959522499820909662710078078441813899168007885"), - T("12.151331396958947321546025714556865120149751887789792242805026251328834724212197338975462680992513495564542856143237780070708286761588671182939823052704607214915211775783314118543447776586990218385020548327676785144266827587041679291236998809169833652034346885774675107188363717375427120958548330331469713644263714560973379556087401639283796742412962466979669807549620252885888038363577488350118588327"), - T("12.279920495357861861754619498671178328488517253011693814436831453577150966755804597638476326658701670430374829697970476108138171762039766486567190351066996867808421732857279063311709987810721597441247332426590396284283865647343560637994282905050571245210792884624906553478249255415272212601102517306237151244712474029155455342150901422007242831141817915817753376208230325314128698964566666380679334622"), - T("12.407176956338612191087172383388016279582846192856709897496654528970378992137225269624654597169812657913587765369977994663653070060070958217675655967219509479234263890571735859949476211202655783602524667654875739601222473107460358043616901331296638130098128821464388482197452428681343514837935327506344788853296134342326074035675928525560962854861568158156132171320413471754022539329668983923737294314"), - T("12.53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332601939822433161809063368090478927827983073965956717740229061865568663902156509969401323575117232752449212901164706931389834341806516837911922090578039245047800020687575137645825730612921930932460349530463332045594007869848626188851269374123924316744321298753294756547869381713625963440201"), - T("12.657852319136902268774845164792088421135161808965517945523128473136824363883193009269209734457043707990147945768735771850922659087939277511584226597559704972434156306141869703126860783026363074957510823322218307776858151286948305635221192680870601025159853336795122235254709338570514335130167369800379884747089903762281584689350599843615480943120877060478385159492967618565239777860563171974700594693"), - T("12.781346485666885652251869121336739548837398307259070171314590507358466855041160735854359760391205776274139369135586462332186987204516267938034042212395921561146691040390295958933393041973997212687270801826185298683616162906817960868359931875855845417818690795683245054864292551076503205933778240981159915149194662675568567630576642947480842864021668454467828380348469526601550992279393378879211043667"), - T("12.903658808270584524837154363200375169745690840774169241078436884878608872508906572537587380452008766699694274634572683484063997575550636271724653470644222116629862120750427362283465850548658876022606030340287534831876059275988640705535030144354363210242251009786303368432070884750488539702567688880560860857563258835290820838217726051097677070824752411130297718422198873037383148768947802251879541624"), - T("13.024822582048817868534263291234323821697960106121826685571821899866627695153323114502093068226079247736034463231063859029544168462435178458377695133309866798197418836554561261287100073768911767487585261557752678725104951463621027905174410423073758745458008760779575912225840346749202864917154296234347960652956135102668875548768598458992142885713342155996094857164761315530504601618862732590304120415"), - T("13.144869567532369703435413653931342518067740699025339623141355353215828472920177249101100071067765021905490369373865624919713235361781704313989935557374066820403290956743429603874630415006274130921897795214176147246606564445416505741569346364219413607323060794720326291947944072987907139328701736835753824779102737278004452916595869434574114960991640537914399673850290672639531054905749913587677194565"), - T("13.263830087913084441869264510341900885143347169857670710403520506847915484234253149364016618842422192887278826802152309702561700988317108329366652469972270850729901967719901688846781252171679572772098362866958261135212538955176074425118825798790895659612482118954525747884920318690612733249055254817820682413854417219783837452342337525419867582913841366891276001603231376905945580465371617652422785301"), - T("13.381733118494712177838769415668363136693460917853586922473464683953085883088277884543132016555752708286716738574100724123397234966834133579930312055894987491473163259667229253648684025236934307557806266139484672929088612080633523093147067612558483695818827536275063195935514841373590920865965312578548954529988065057157198978981673627647254889933136041368681534023007231776113961710869320159667705337"), - T("13.49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174297398771305025250783532430038321980650780572061258675589431807213585169525934929261000167914426347007424971894853755903478955153674190248106782011276139620636507795882584271293035478532473175580070278864979183505217356484769621601133034831695071383225633005792357284236385529593207735858"), - T("13.614476360176244437992652165124010849348942994806267539289974901165636798182245517885383466885359131822710017177747823047886229391043506105903448210261769449935362361092960808325221972886007181477749623755496282578986043666471300738088582325762070505557101653785908332333215528357372693553823245805882631589902970439410267849152146509417834583229229656869363779274739391530153058374399344402589683807"), - T("13.729368492956534900281400502354359280496469031691335405974003992173735996211006683665427680723680494774261507142766087270014594023840182966619810286756443098353283396820386639702127469604851142396451603929306334684156437261639403528050837758998181593023617211002715568286617326595705711684753722488913296655671992680497089777404378865244932655099061553712284778342270952635944738196608799063380253458"), - T("13.843307114594308080228438262394272564345963431637029583240249081158469052183791491684039537760243230438634632151602246770081706304258619208947181121555949109643060376549010534247946473402803168501401798859700886609956343474750915165635990740345802222770885528894449519285586683416492340458031775111481023344097481374008848545235590455121882858118351182839281932280042314361125165296526825458755105679"), - T("13.956315578352589716302829873401945109198453712022825800945047218826731843806713506320236853413543088508394629854930633075647798955617836866562243675418009347632488093795950654785453808337001941625657577694831670791784231090389461985759139354822791165710146844931160825962396468466501611937704664704804958138610109693667041306322225916233920219127362826337256387581504195730954720065862316612737195428"), - T("14.068416299504254221667465486853490085392474396247232094490195127535977039923379496150850655692967779454961796727636090538116893001833702065380768772476388301013830275048921988049886299362222409554937340596916353589007341261357482675977801749332527974938817068453738875385091085191927280537511241119590935244966207060005158432021527178747829706194504432715967475497310002848315677684388238065247923397"), - T("14.179630807244128218385339866729161462380395648979097025710462318823290276728257450999605253908357323329814588994260565329889222925795380820200749676822296547696301589224840982799401384231606609831456763034143702401397112122811837764133601521481872148683575795959301122511374204207249731243354660007251187260909867819801227469343918314926814691270363609321293910080472539147454330662478838769985479216"), - T("14.289979792964598888046537025443929046349268690964636578475665109896668898160471038052184926128242082008071899344418492114005094607229573377783255206983187149713770987548494300509284453832960172186602825751752512740011206822965310731878663221408732182835419428674418921388428247682017853292902641094633654925031641157363239954497643638130492825559275734408219193654081845577502824457995610506588347991"), - T("14.399483155201312771128205693735119100150409368172849193283383259397943499400343097146699820101799211280532901097982868866065091616972220786072353233159181246251291666898296600872888597521470039336674892211278156066944280526085074727923215099315369244314973758177163795161905224659231453738958954759692535888585135313785224088858851114397375930143280080631232806768837383757811100735506790734241356142"), - T("14.508160041525463782196810772461415937984681525001596663279698630294663935908428439756213479497787337122567348801168744730052437263877739149127104404701300967284676515346229296805236190281514801622180654355551641687098356104648569744546852559008969056173614451568235018709148732753388030273661774352691760355549492167313040490929262056910773064824444033384277728019069474988708219182391801225541693935"), - T("14.61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802682247483997538024059430053923100149530708644650234817412038625591619400230864122002844464733117732180207138840345503942749566420701119445724521519252291641382086677934892130737459519396373764750722380465421651122429297206242839604156465612789771943017828164616001185450559568021341559075"), - T("14.723107453852795047660891850891348521019392896043801015617971628447783989965629640672866077356179147930039264054884436242337612281568551505460575065987584693479589826744627929483999892320528426925051155319040406737336570522942634239674703047310686338476335923532963117635039796288802156148141351666029297701497040980317238592980791463337224993212730297458845130688595199892451695017449401650874288673"), - T("14.829412859290334246310862079120981116215413675054277728460153169122428030531791551314608952543420254520474051699795429624440231166188714141339453291154149160307170860994018007001626101791576255751027842245708752403881346737835127200458159845732446774737303087761617897753731524877979274694284246989924515961238107617606034599749358785428854546203389668405763983263427124792153857226338962692134292775"), - T("14.934961613773077251874220527850221390835466676976882941215420887391409941569982643090524050005551945256610875794604586439205076677328137831885915476923937188476319884303388028434778637885660437004576928003169458451279164932299027997584048683596586922839913541602495362116464353240069317035849303355081215425573060479512202737316638230608336142262048918028633468554185638406802946342865126132844574834"), - T("15.039769647786003014494591708866271518041920443659629899779541458053761927647051849679575030268343596696059835991223277869197941708760417085747133935796887591480612882748742386823966825878119632815882901406793029390554813976483176678012101678202054943065086936470940573600248250901651749908767355063171189524194365559984547128094438183514266215232489487091800931855585039537078574432580563511561282412"), - T("15.143852340539209919669694152668075754802130564520529114229055107020254596987080606065177179266558949005546167801108989466486322639120015544612100116126475848822295714630667404278002543054087765126012369520774988292980482378607240819831183403574109472290470399416907492752726605411715253325510753261994252828188462682810154109677323956353529409565238339361711344464981722604499214446881247473198801415"), - T("15.247224546311525337004063635408328366688778670871498563977766898883017695500718397562791377885264468934146929755054408018559707733171577715334636002100724249512539221477485126428071589422606639367264374525385748313792960737408667516619228196176535880477098918773859144321945753279661701266364778960943177407574056743200803896101394393730713481442086031230604416350429704383528396355475201590099114842"), - T("15.349900619197327327193274373338972910610646566264617268046039316971438708444755747048095408323377088037968537122463095135172714702549708108208987938833746084760527166071598829139637484763401996801559165533237995355354832059179450797492853631313214056513491105781133191847811569269090265751378146632796439055890592536444319177688626777509053538927272394772191720260287906642660873705708332975849168277"), - T("15.451894436373304648009489571464243282276411609779274396290596892305143427827321676751967836825614756649503387863645450837733437250584029795246024347634551470139382152386378140674874270471699294970444708697207724806165191844532506173191310641439071099938423565896079898332411223410465978068167705753188286038208023872294329849623050972834536380249235882340556718259826734176816733014205629079093581198"), - T("15.553219419991929097391447827110150978276147342755611087132612856263542587794892243906527633373900129242231785993922632274254453378155136866947691413591367716787056987199223748707467009025071039158554274945537967635091771197351723187066327453183887178046363960719814297174200677165073465692725493619076089149843317017809607596662107883796994364174947841232638766495324678472146142625602614264235678696"), - T("15.653888557799428533661532247337596699165609502143573736324609963676016536620219650233947025955941767418394468430088744792011863372700125171657152344359691884844467537973207254356056413344833677019845894722403336263492187594473529648820105313588218738589863121077164638145443372177511689907229285786639401142720480840361807890924894118341348723302140201727278896670612158646957973089749997574886849052"), - T("15.753914422567924620983011231186756248927500048298297966046797894473026288195693602724718689673345950533773458261077009361447048732755177208182393190558955000510862906901264875534878251422852119708834699869325135138115458649625715331447841946651213506247785763655954618727631238085210998597640478337632316374699558747521521322958958007061686783767533791960628390158818930229551073161600125867700021792"), - T("15.85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917318141449154623072942589950397905862150069399933839837587768500465610923498846958649809674914178649334608135965528391488070572086186135575993779130613973209256593945017506228618641718800535579350053924994477780084133179951980288358740787563005214821795481256206527887648549729996871774054"), - T("15.952084658149644245683507350070306645177945105101484153924270108676201561319289632374555910646901988746041412618543135996125375791519803422725843386425083616158339287877946105649326557260557436060388858413411665201571751138163317484650301711667106167269022770454213762825295979733155947648773992508157585668523601297276380903011908104292666527679159060486455648840531606540886121995288693616233664118"), - T("16.050252259524242304765819675794450638017457570575983927825323032144525082963948191096147193145311656453873849743947855717510860973988659112083956949050053482287530484973632648820968563125979705559716208799062595086459726936476696439381910220384322311324311842667158228425675297979222265812106596748979173989790155646435957100594433524698909367347330792212795303074381195611252785521380020853492164213"), - T("16.147823080773235880405791115635997557864326968336419500556329380232598367900898497414264871456444239647173004031647690209887509450260015358377350981847404025422287378732373648981765201137038640626625054151148020200007297959878815562787393121096595035600314225225829183114125474497018547223659528472930900422571056329570935652356761026639723378971526771480442539666833071774260326796995470405776697508"), - T("16.244807875180999875501121715806898107481293878037690793428836596906771575458065188122883764864387960703385536810260167663245388411090356221198720241639510406887891671012502982802097814197179053506077944546781492021156361482371793971423102721583613594407654464704630769172660190680210371421155562677809881516769741092121847876124182917158329121447444811423396067108583211752995130120466339417213690103"), - T("16.341217076923383960696369420161248669121212808135654273983491452937095658109553619994922766756319666975188172033084786774938321749356282450853819283481043653079525140374828081598688868309044496356854434283025399835051607515358702243412387084009896448573365043827048092425743953483386894323518311923913690941609208424884900176315736258863356896904842838787088633319141807219561302676306271570497938951"), - T("16.437060814169977953327247404361277316133609673377048855107248395882567096603010277067169202635116275806042691595212970108586780272931810640625169517986388546454661584514822804714353912243137592516024763283438958227839402433048048710441109095172462035564435115216917054500940736255985371596025417460999236751644500293733791545234403402763313780467186900924301219121627362814381042265364554244922063244"), - T("16.532348921502715844688082576333627653976665425427208876480987568125771090198651469125133728158959771903048097921398391233385160724013876315451069276292964513405939027110844786864417344898464954584607502706435338641340198705784007825954758491636479758251565454590803621730664169376188515867591916106130400067381048724859197544495864321744604824010272768413212368063633927635680949445491291877351894002"), - T("16.627090951693919358811327574245345505772490789347183724819005227768402181270609385967456291735846450867894473133567131236111152863521170798185176128190539042865125306336585771487343846002698226533251590813449657459827132440585220359867286748933370108772977365669225547985182074953209927803366884415741125333825698418900521403979162491994853083311352577067312818794931106189069819989170801482405536514"), - T("16.721296186883706959605742705233010783899326523984270864686085184270332637146646055028529386107385333643018392715062510774480808240365813021854787737722340862660933836784188253900670608552564136025173808090739064412712504259523027988063714336820233104689334204836546487559659633964043151984340548060532718923362128881432934135325567300871046043987974739750202594174747157312786841203825015000569906569"), - T("16.814973649193786097933847301606402681562971325632349794875060180956850132955663923009153012573756121825144011723368897136662622661949455269993484003323635485583818294689986393593513505114877524833927851543136113228167938420410768779051463092595000942849953376285816848692899746766156718610029919169840578968793144831181110694079933876981901697748511259778526616029120021849351522400364185613786904682"), - T("16.908132110811980070323724133825443669074486306220411933324368366059977522675356589320971338976776616316134235802112798127138113465084701628640560443298729802233609863856357626793535493930184649436981665533778324622620988007501131586355391858595913504065552289654660238871963950906549509361444433014511210945609775277269846879360970012281095853461600076871591771412527553822562541374853347368516919083"), - T("17.00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382011926203019216433130463160332871953682367444656008183382791141675614213387139286651404042270148438772631374392794365954621449715918679411346821231311323476100996185815327842728964327386825980705399348021964722656926231691638306207473227031037077068888418792782089031054095068740132333953"), - T("17.092925928109873230856890966518170609049635890295121605225309418908275818470576879572890960685410581830840991105430126130887790543881945170122581670877506416385845881122034595711744339948691879348516227414909772352427723381307136312192527194398703992339257139025461873121242339773525646882099071218455368070360012094043767404721710936020967834426862977103157516068354293085070758241766981055235066209"), - T("17.184577662469350439927855242766012175901435587217348622500720382402437284043691040754973131531272064166131201551424433897942349835349079351126685371244284352588634150544638769966985677717022600144009093735325965072805119643341927076098445506587163233137151789343227901578709257933753169161253949701854384420333694583107005741557086141652266134114205529376278344127778702038153204605578398292401917015"), - T("17.275743170440754085190445015394979038018668745865422068491523038650327582540706316060451728873454611950564439169497072829566902102398394981985975990083088007962977970505915486567012863555181572053681584109963952561485141768953808491468086742419682163408958624144213019203883451244657001188829080210013359418255598633772348738641653443346826322446562330527464133013054079541191939171126793437194110759"), - T("17.366430109398423824712351054979098428930613474829102247429095866488836926871097486002790757634772330314712617641418478706058891283246904611170260177746489064263225115406081681716133431691882356650113682077003571633473268618161370540232547230765011660610678347706101216301120462332270486556205728312463947537274846803558500731691464611989523847617789541328126476219681754040672802158483643453738827221"), - T("17.456645937814341319169222501542608627403113623558293524363238531385820187770170403648403252074964213113377845095534227202560251082915822197277767058606166170134732818652676480521208063952545598229201593834632528912430284433244772566961770292191780850052527418760053662080114781916361358783723872887199722599102508052518044253446686455582486241466233995573362181026486277618737441990128524043149017597"), - T("17.546397922417003516910356993677316771048907184269568216409465034396055582254893824626170868646400862812069808656427157514064265326887153266704989591763035523394048363206866117961294630191139571618530051641258534288980616305897039457680785291235730766909268092549430669200289626051927041560228580907033054444893426486648638316110177880766643917771237734940434420498182546126591670171343990763488162814"), - T("17.635693145022384705163262633691212915995304763116023125519426321471973674534505657400633405294778370478985112465094235780644028343844807586537417764875542174488900481208823741517400211272188843356948118444398002656002506943982233003640824565969970560720816740945971824478145915185970128692068679139758731692468366100636144656973628038665916994346324396985373751630840364738989989994328896453907404578"), - T("17.724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021"), + "0", + "1.7724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021", + "2.506628274631000502415765284811045253006986740609938316629923576342293654607841974946595838378057266116009972665203879644866323618126736180957855655966147931913435480458123731137327804313019938802647150234465504898425802329413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739697252377702538748247848633488642597506589513095738763427251926880402", + "3.0699801238394654654386548746677945821221293132529234536092078633942877416889511494096190816646754176075937074244926190270345429405099416216417975877667492169521054332143197658279274969526803993603118331066475990710709664118358901594985707262626428113026982211562266383695623138538180531502756293265592878111781185072888638355377253555018107077854544789544383440520575813285321747411416665951698336554", + "3.5449077018110320545963349666822903655950989122447742564276155797058225691820643627499013134770893308324536472485651413324723057314488452050501874192055741369240753973062102456998503460579016524578641907585359256003492780307029594410334003803704680371708939489898252806278435510518124328108386650018127968152274669549503068673359795787317036728175909023303234775201181347868635826656197096924963698041", + "3.9633272976060110133450287651201830315223597563961947927072580621967387180265716572287741878596340312327405647932953536228865576823564748759947646553751734998345995939694212511640273087471173966245241872854466233365203399138209787201764302154653389399844478265349330231414848625437655715466042970013389483751348124861944502103329498799507208968519689075130370544887031405163197191213743249921794351351", + "4.3416075273496059561780877637447746072326533687072755618572739666222092317177743715006976894086930825786781544103546196765147228208117261527925650444366222660658062788515204204290333579229705891625284205192508929083683171545403426350581368076912529151526695869265253040752801155830676216390514320781159868843187117008896251829228661529973809619044473853320316190549204385101682005396209108634347068051", + "4.6894720998347514072224884956178300284641581320824106981633983758453256799744598320502835518976559264849872655758786968460389643339445673551269229241587961003379434250163073293499620997874074698516457801989721178630024470871191608919926005831108426583129390228179129584616970283973090935125037470398636450816554023533350528106738423929159432353981681442386558251657700009494385592281294126884159744657", + "5.0132565492620010048315305696220905060139734812198766332598471526845873092156839498931916767561145322320199453304077592897326472362534723619157113119322958638268709609162474622746556086260398776052943004689310097968516046588277255593373672260673516476883623121569801912000827503005505833029224516877237298413981218533281823760314793945047554050774964956972669772851950131790261914775268545038537608041", + "5.3173615527165480818945024500234355483926483683671613846414233695587338537730965441248519702156339962486804708728477119987084585971732678075752811288083612053861130959593153685497755190868524786867962861378038884005239170460544391615501005705557020557563409234847379209417653265777186492162579975027191952228412004324254603010039693680975555092263863534954852162801772021802953739984295645387445547062", + "5.6049912163979286993112824338688008938543237752107832649583533936522833776518879743363843375245853739417146705744562990455542075539831517566644946677745451618612727648966621311978378350382925082779759505143787044093893128068035895930171543641983336476166511254286056162309665822553855728700099730566135263229310482770603702313599779589939672325828370865928422053430400072831171741334547285379289682272", + "5.8785643816741282350544208778970709719984349210386743751731421071573245581781685524668778017649261234929950374883647452602146761146149358621791392549585140581629668270696079138391334037573962811189827061481326675520008356479940776678802748553233235202402722469819906081593819717286567095640228930465862438974894553668787148856578760128886389981154414656617912505436134549129966633314429654846358015259", + "6.1399602476789309308773097493355891642442586265058469072184157267885754833779022988192381633293508352151874148489852380540690858810198832432835951755334984339042108664286395316558549939053607987206236662132951981421419328236717803189971414525252856226053964423124532767391246277076361063005512586531185756223562370145777276710754507110036214155709089579088766881041151626570643494822833331903396673108", + "6.3906732428334428261259345606683697744186991536295350856572952536792334275205803679271798801956028881370696845677932311660934936022581339690170211061979607805733455201951479794666965209869986063436354009130926493418080814534089804341799659379279227089093453978416225274321462755382516029668891204905799575745973313377842838152883214737404214320108342272339141901742347633007754961396966894396055218335", + "6.6319150439565422209346322551709504425716735849288353552017602534239577421171265746820083094212110964436394134010761548512808504941585541646833262349861354253649509838599508444233906260858397863860491814334791305676062694775880372125594128993954478298062410594772628739424601593453063666245276274089103412069272086098919187261711687627099337914569206834456380008016156884529727902326858088262113926506", + "6.8646842464782674501407002511771796402482345158456677029870019960868679981055033418327138403618402473871307535713830436350072970119200914833099051433782215491766416984101933198510637348024255711982258019646531673420782186308197017640254188794990907965118086055013577841433086632978528558423768612444566483278359963402485448887021894326224663275495307768561423891711354763179723690983043995316901267288", + "7.0898154036220641091926699333645807311901978244895485128552311594116451383641287254998026269541786616649072944971302826649446114628976904101003748384111482738481507946124204913997006921158033049157283815170718512006985560614059188820668007607409360743417878979796505612556871021036248656216773300036255936304549339099006137346719591574634073456351818046606469550402362695737271653312394193849927396082", + "7.3080144438162192957641041416982527245725757227305100451197343989892588739821761414808182301620094920283430190134112374199876901202971502696155007476535432232511740870601931279580970011543206100142223236655886609010356942017275197137478321035055972286226075962614582069104333896744606536872975969818688237536119023271082556121464860312141980207823280639488597150891408230800059272527978401067077953752", + "7.5198848238930015072472958544331357590209602218298149498897707290268809638235259248397875151341717983480299179956116389345989708543802085428735669678984437957403064413743711934119834129390598164079414507033965146952774069882415883390060508391010274715325434682354702868001241254508258749543836775315855947620971827799922735640472190917571331076162447435459004659277925197685392872162902817557806412061", + "7.7259472181866523240047447857321216411382058048896371981452984461525717139136608383759839184128073783247516939318227254188667186252920148976230121738172757350696910761931890703374371352358496474852223543486038624030825959222662530865956553207195355499692117829480399491662056117052329890340838528765941430191040119361471649248115254864172681901246179411702783591299133670884083665071028145395467905989", + "7.9266545952120220266900575302403660630447195127923895854145161243934774360531433144575483757192680624654811295865907072457731153647129497519895293107503469996691991879388425023280546174942347932490483745708932466730406798276419574403528604309306778799688956530698660462829697250875311430932085940026778967502696249723889004206658997599014417937039378150260741089774062810326394382427486499843588702701", + "8.1224039375904999377505608579034490537406469390188453967144182984533857877290325940614418824321939803516927684051300838316226942055451781105993601208197552034439458355062514914010489070985895267530389722733907460105781807411858969857115513607918067972038272323523153845863300953401051857105777813389049407583848705460609239380620914585791645607237224057116980335542916058764975650602331697086068450513", + "8.3135454758469596794056637871226727528862453946735918624095026138842010906353046929837281458679232254339472365667835656180555764317605853990925880640952695214325626531682928857436719230013491132666257954067248287299135662202926101799336433744666850543864886828346127739925910374766049639016834422078705626669128492094502607019895812459974265416556762885336564093974655530945349099945854007412027682568", + "8.5003900517896968140560669406685714433987187446432157683182522591265374787311356353957620692173960349646676819100596310150960821656523158016643597684118372232800409169139557083780710669356964332570202113507421938631568719639718297731072485795933970567341061565566173805049809290766392136448216369341299035269967401098236132846311584581915310373661351551853853444420939639104451552704753437006616697649", + "8.6832150546992119123561755274895492144653067374145511237145479332444184634355487430013953788173861651573563088207092393530294456416234523055851300888732445321316125577030408408580667158459411783250568410385017858167366343090806852701162736153825058303053391738530506081505602311661352432781028641562319737686374234017792503658457323059947619238088947706640632381098408770203364010792418217268694136103", + "8.8622692545275801364908374167057259139877472806119356410690389492645564229551609068747532836927233270811341181214128533311807643286221130126254685480139353423101884932655256142496258651447541311446604768963398140008731950767573986025835009509261700929272348724745632015696088776295310820270966625045319920380686673873757671683399489468292591820439772558258086938002953369671589566640492742312409245103", + "9.0377767727099026972694942617286283519638707297067360423044656369897256312879279757777821069900749950044557425089876204493377875035177412255299561756483293212989442985024715332632332359674718551451382911466759962124284189582809463459910475239066062631635959736116080550697706078586467289296679727180578661286024444872547183386534308509666500269688916003034333222621461052151120014437539157953639737316", + "9.2099403715183963963159646240033837463663879397587703608276235901828632250668534482288572449940262528227811222734778570811036288215298248649253927633002476508563162996429592974837824908580411980809354993199427972132128992355076704784957121787879284339080946634686799151086869415614541594508268879796778634335343555218665915066131760665054321233563634368633150321561727439855965242234249997855095009663", + "9.3789441996695028144449769912356600569283162641648213963267967516906513599489196641005671037953118529699745311517573936920779286678891347102538458483175922006758868500326146586999241995748149397032915603979442357260048941742383217839852011662216853166258780456358259169233940567946181870250074940797272901633108047066701056213476847858318864707963362884773116503315400018988771184562588253768319489314", + "9.5449561001664121805331805088802752995271020253115319957577421074579216968677586712228633689301398077088311039352276247681835887608812952471054772558240075235037900668496782095699528477874731344527911180393401955463971510372217637805322797423365420146482689917834696038570131901274302300283422182521267833006285359393142295438279095927378336768120882908112575029657358394527378572761652822503523073037", + "9.7081295627784962702001300843202309014239162997075295338190725567740867768360828377797213369985222605738422125153205809614310720383763405854578937000465002140881359434675879559012762493638090947752116234678266669492794549428222971705363614488937056614823310418806119084118208768665243016864006604622872546517235887590814184637647435563763625009597343962143998069332678679995949595625752510047376769469", + "9.8686053858325691182072112788747533886058057201411380476476456712628079750259677966540684132469441944845346447517503807626845356172247759078119619345186680215080975949071260888809391129195428784313017526586710196446975545314396408422675567403935100395356341294811788475428908479858626488242639666149638195038312462497821769798554375186844561183275752651214811690182399175358793738641461618652775991586", + "10.026513098524002009663061139244181012027946962439753266519694305369174618431367899786383353512229064464039890660815518579465294472506944723831422623864591727653741921832494924549311217252079755210588600937862019593703209317655451118674734452134703295376724624313960382400165500601101166605844903375447459682796243706656364752062958789009510810154992991394533954570390026358052382955053709007707521608", + "10.181972184624311615821119525392646566614334777981507304797991128872845411935855045687447106020270650309180533858862699802452616670765042577313665825807440090307057847512919113426271458183092072699581551465382478938467355504032255882264015569014213825098166114446059843169833192986444108942840506996523623715072210566481161204920674164962676130998460012958025127031857745585310129294054842583903606686", + "10.335093140463368369194743647270744470970869361548018260412395037033434954444302167923137950092164921880086359392676052875666101107812632184449266829146247839347650312553659121907050973521042894776187579282867330188754139851333707822660813843642659379040498993205802303976963038480061139480627996652519324110663045988145350403266422896739974552818525729859458145898707780132492595810710069483709616997", + "10.485978393819184450541593598855581216998391038666955618731153780797160148941518448029432453424375096293506458743106555413233965573260145046667734677176640468352558693946707494977637683951611790027770744751949296502577300781357035084119423389099318378785160701550868259776821786756050171108775480133925239818616956336860985197400338717780301525607287576543821416712628079932173339130152141281524936833", + "10.634723105433096163789004900046871096785296736734322769282846739117467707546193088249703940431267992497360941745695423997416917194346535615150562257616722410772226191918630737099551038173704957373592572275607776801047834092108878323100201141111404111512681846969475841883530653155437298432515995005438390445682400864850920602007938736195111018452772706990970432560354404360590747996859129077489109412", + "10.781415870970860097347086002569754013483313106913200202187513520048043712278512261111348167752270787807827044005214735609272769552792030217118319247865527486947266834539351039872232355517952920779295855320877662434434089302868383880854490418955953060861828833022956166078549446407677882309027526266764943581836604667447009735143063508187804312221807902016203318428080812848859262617506901631056404484", + "10.926139338138249418394948518774535514239264300129320003780439933689850327924622206216861373106327795446382986541097387057719208036647206296404050944003327874361582341281080807890889880787061319999797409840564399938369028699154596465019693581401702995072256439155901828510666479433850274478604710483110368760249425996181639834293503287006547476391343675449556976797862780800361545757368573258815323922", + "11.06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602611864735807868417839407991190718628442039357569977371968270131812518244771818655226966561256042843867368054126790999954427565212628829680859010057375985048181200629605336234528792323216018627284394365650824130654190684379749960413601595348763566769123659605593998962030711530297996631109", + "11.209982432795857398622564867737601787708647550421566529916706787304566755303775948672768675049170747883429341148912598091108415107966303513328989335549090323722545529793324262395675670076585016555951901028757408818778625613607179186034308728396667295233302250857211232461933164510771145740019946113227052645862096554120740462719955917987934465165674173185684410686080014566234348266909457075857936454", + "11.349242212464298392610285658298501528539506746683292704338035654856239080485360828460205074304281603179304760097806255228463147327169830108042093067800293527086021375553337641095043483168312926670841786279105684958531871509131651122477280457930695269239120342802270691155290589721502201125592305692096859835744595168676715800717585850328384113754784770216906888175704141625668202687511966586138689496", + "11.486813807613115307809355167215211082379289672043820620858981542835886683139127150291615174043283349892373335303488265357426140211488562306351746628698313560931134742861605848764176458004039113239912373535418892499572608431667264556464452240410101014511349682690566153385156486931102628456780783577079308426737658296507891772476075136809898570922049321898908119541008410725370277134653232606047953378", + "11.622757164475265300727734810950869136366250850775675675103670116706112045368165235882961201344951218672069233183763229866495319155659488490374792371109115979803795182321120105254011624290383337645277922708894963432033544765028110116592451203025661365050867782024140543770476276220678204795976767514166142764541148954132005264256215811527038353628432725649155000008199699094629246514703895814051248301", + "11.757128763348256470108841755794141943996869842077348750346284214314649116356337104933755603529852246985990074976729490520429352229229871724358278509917028116325933654139215827678266807514792562237965412296265335104001671295988155335760549710646647040480544493963981216318763943457313419128045786093172487794978910733757429771315752025777277996230882931323582501087226909825993326662885930969271603052", + "11.889981892818033040035086295360549094567079269188584378121774186590216154079714971686322563578902093698221694379886060868659673047069424627984293966125520499503798781908263753492081926241352189873572561856339870009561019741462936160529290646396016819953343479604799069424454587631296714639812891004016845125404437458583350630998849639852162690555906722539111163466109421548959157364122974976538305405", + "12.021366896702325047512148370523129868500863831336365554094968238961326486689613290630609864218702661853221321521170144826739118836804766785357157269477553635675326417440397275525273224383182704417613920902492439425058136861846204626155795604149515361113916782624367244364805538377594330304168849066367137313615505351036054026784342300533235365305626284568959522499820909662710078078441813899168007885", + "12.151331396958947321546025714556865120149751887789792242805026251328834724212197338975462680992513495564542856143237780070708286761588671182939823052704607214915211775783314118543447776586990218385020548327676785144266827587041679291236998809169833652034346885774675107188363717375427120958548330331469713644263714560973379556087401639283796742412962466979669807549620252885888038363577488350118588327", + "12.279920495357861861754619498671178328488517253011693814436831453577150966755804597638476326658701670430374829697970476108138171762039766486567190351066996867808421732857279063311709987810721597441247332426590396284283865647343560637994282905050571245210792884624906553478249255415272212601102517306237151244712474029155455342150901422007242831141817915817753376208230325314128698964566666380679334622", + "12.407176956338612191087172383388016279582846192856709897496654528970378992137225269624654597169812657913587765369977994663653070060070958217675655967219509479234263890571735859949476211202655783602524667654875739601222473107460358043616901331296638130098128821464388482197452428681343514837935327506344788853296134342326074035675928525560962854861568158156132171320413471754022539329668983923737294314", + "12.53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332601939822433161809063368090478927827983073965956717740229061865568663902156509969401323575117232752449212901164706931389834341806516837911922090578039245047800020687575137645825730612921930932460349530463332045594007869848626188851269374123924316744321298753294756547869381713625963440201", + "12.657852319136902268774845164792088421135161808965517945523128473136824363883193009269209734457043707990147945768735771850922659087939277511584226597559704972434156306141869703126860783026363074957510823322218307776858151286948305635221192680870601025159853336795122235254709338570514335130167369800379884747089903762281584689350599843615480943120877060478385159492967618565239777860563171974700594693", + "12.781346485666885652251869121336739548837398307259070171314590507358466855041160735854359760391205776274139369135586462332186987204516267938034042212395921561146691040390295958933393041973997212687270801826185298683616162906817960868359931875855845417818690795683245054864292551076503205933778240981159915149194662675568567630576642947480842864021668454467828380348469526601550992279393378879211043667", + "12.903658808270584524837154363200375169745690840774169241078436884878608872508906572537587380452008766699694274634572683484063997575550636271724653470644222116629862120750427362283465850548658876022606030340287534831876059275988640705535030144354363210242251009786303368432070884750488539702567688880560860857563258835290820838217726051097677070824752411130297718422198873037383148768947802251879541624", + "13.024822582048817868534263291234323821697960106121826685571821899866627695153323114502093068226079247736034463231063859029544168462435178458377695133309866798197418836554561261287100073768911767487585261557752678725104951463621027905174410423073758745458008760779575912225840346749202864917154296234347960652956135102668875548768598458992142885713342155996094857164761315530504601618862732590304120415", + "13.144869567532369703435413653931342518067740699025339623141355353215828472920177249101100071067765021905490369373865624919713235361781704313989935557374066820403290956743429603874630415006274130921897795214176147246606564445416505741569346364219413607323060794720326291947944072987907139328701736835753824779102737278004452916595869434574114960991640537914399673850290672639531054905749913587677194565", + "13.263830087913084441869264510341900885143347169857670710403520506847915484234253149364016618842422192887278826802152309702561700988317108329366652469972270850729901967719901688846781252171679572772098362866958261135212538955176074425118825798790895659612482118954525747884920318690612733249055254817820682413854417219783837452342337525419867582913841366891276001603231376905945580465371617652422785301", + "13.381733118494712177838769415668363136693460917853586922473464683953085883088277884543132016555752708286716738574100724123397234966834133579930312055894987491473163259667229253648684025236934307557806266139484672929088612080633523093147067612558483695818827536275063195935514841373590920865965312578548954529988065057157198978981673627647254889933136041368681534023007231776113961710869320159667705337", + "13.49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174297398771305025250783532430038321980650780572061258675589431807213585169525934929261000167914426347007424971894853755903478955153674190248106782011276139620636507795882584271293035478532473175580070278864979183505217356484769621601133034831695071383225633005792357284236385529593207735858", + "13.614476360176244437992652165124010849348942994806267539289974901165636798182245517885383466885359131822710017177747823047886229391043506105903448210261769449935362361092960808325221972886007181477749623755496282578986043666471300738088582325762070505557101653785908332333215528357372693553823245805882631589902970439410267849152146509417834583229229656869363779274739391530153058374399344402589683807", + "13.729368492956534900281400502354359280496469031691335405974003992173735996211006683665427680723680494774261507142766087270014594023840182966619810286756443098353283396820386639702127469604851142396451603929306334684156437261639403528050837758998181593023617211002715568286617326595705711684753722488913296655671992680497089777404378865244932655099061553712284778342270952635944738196608799063380253458", + "13.843307114594308080228438262394272564345963431637029583240249081158469052183791491684039537760243230438634632151602246770081706304258619208947181121555949109643060376549010534247946473402803168501401798859700886609956343474750915165635990740345802222770885528894449519285586683416492340458031775111481023344097481374008848545235590455121882858118351182839281932280042314361125165296526825458755105679", + "13.956315578352589716302829873401945109198453712022825800945047218826731843806713506320236853413543088508394629854930633075647798955617836866562243675418009347632488093795950654785453808337001941625657577694831670791784231090389461985759139354822791165710146844931160825962396468466501611937704664704804958138610109693667041306322225916233920219127362826337256387581504195730954720065862316612737195428", + "14.068416299504254221667465486853490085392474396247232094490195127535977039923379496150850655692967779454961796727636090538116893001833702065380768772476388301013830275048921988049886299362222409554937340596916353589007341261357482675977801749332527974938817068453738875385091085191927280537511241119590935244966207060005158432021527178747829706194504432715967475497310002848315677684388238065247923397", + "14.179630807244128218385339866729161462380395648979097025710462318823290276728257450999605253908357323329814588994260565329889222925795380820200749676822296547696301589224840982799401384231606609831456763034143702401397112122811837764133601521481872148683575795959301122511374204207249731243354660007251187260909867819801227469343918314926814691270363609321293910080472539147454330662478838769985479216", + "14.289979792964598888046537025443929046349268690964636578475665109896668898160471038052184926128242082008071899344418492114005094607229573377783255206983187149713770987548494300509284453832960172186602825751752512740011206822965310731878663221408732182835419428674418921388428247682017853292902641094633654925031641157363239954497643638130492825559275734408219193654081845577502824457995610506588347991", + "14.399483155201312771128205693735119100150409368172849193283383259397943499400343097146699820101799211280532901097982868866065091616972220786072353233159181246251291666898296600872888597521470039336674892211278156066944280526085074727923215099315369244314973758177163795161905224659231453738958954759692535888585135313785224088858851114397375930143280080631232806768837383757811100735506790734241356142", + "14.508160041525463782196810772461415937984681525001596663279698630294663935908428439756213479497787337122567348801168744730052437263877739149127104404701300967284676515346229296805236190281514801622180654355551641687098356104648569744546852559008969056173614451568235018709148732753388030273661774352691760355549492167313040490929262056910773064824444033384277728019069474988708219182391801225541693935", + "14.61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802682247483997538024059430053923100149530708644650234817412038625591619400230864122002844464733117732180207138840345503942749566420701119445724521519252291641382086677934892130737459519396373764750722380465421651122429297206242839604156465612789771943017828164616001185450559568021341559075", + "14.723107453852795047660891850891348521019392896043801015617971628447783989965629640672866077356179147930039264054884436242337612281568551505460575065987584693479589826744627929483999892320528426925051155319040406737336570522942634239674703047310686338476335923532963117635039796288802156148141351666029297701497040980317238592980791463337224993212730297458845130688595199892451695017449401650874288673", + "14.829412859290334246310862079120981116215413675054277728460153169122428030531791551314608952543420254520474051699795429624440231166188714141339453291154149160307170860994018007001626101791576255751027842245708752403881346737835127200458159845732446774737303087761617897753731524877979274694284246989924515961238107617606034599749358785428854546203389668405763983263427124792153857226338962692134292775", + "14.934961613773077251874220527850221390835466676976882941215420887391409941569982643090524050005551945256610875794604586439205076677328137831885915476923937188476319884303388028434778637885660437004576928003169458451279164932299027997584048683596586922839913541602495362116464353240069317035849303355081215425573060479512202737316638230608336142262048918028633468554185638406802946342865126132844574834", + "15.039769647786003014494591708866271518041920443659629899779541458053761927647051849679575030268343596696059835991223277869197941708760417085747133935796887591480612882748742386823966825878119632815882901406793029390554813976483176678012101678202054943065086936470940573600248250901651749908767355063171189524194365559984547128094438183514266215232489487091800931855585039537078574432580563511561282412", + "15.143852340539209919669694152668075754802130564520529114229055107020254596987080606065177179266558949005546167801108989466486322639120015544612100116126475848822295714630667404278002543054087765126012369520774988292980482378607240819831183403574109472290470399416907492752726605411715253325510753261994252828188462682810154109677323956353529409565238339361711344464981722604499214446881247473198801415", + "15.247224546311525337004063635408328366688778670871498563977766898883017695500718397562791377885264468934146929755054408018559707733171577715334636002100724249512539221477485126428071589422606639367264374525385748313792960737408667516619228196176535880477098918773859144321945753279661701266364778960943177407574056743200803896101394393730713481442086031230604416350429704383528396355475201590099114842", + "15.349900619197327327193274373338972910610646566264617268046039316971438708444755747048095408323377088037968537122463095135172714702549708108208987938833746084760527166071598829139637484763401996801559165533237995355354832059179450797492853631313214056513491105781133191847811569269090265751378146632796439055890592536444319177688626777509053538927272394772191720260287906642660873705708332975849168277", + "15.451894436373304648009489571464243282276411609779274396290596892305143427827321676751967836825614756649503387863645450837733437250584029795246024347634551470139382152386378140674874270471699294970444708697207724806165191844532506173191310641439071099938423565896079898332411223410465978068167705753188286038208023872294329849623050972834536380249235882340556718259826734176816733014205629079093581198", + "15.553219419991929097391447827110150978276147342755611087132612856263542587794892243906527633373900129242231785993922632274254453378155136866947691413591367716787056987199223748707467009025071039158554274945537967635091771197351723187066327453183887178046363960719814297174200677165073465692725493619076089149843317017809607596662107883796994364174947841232638766495324678472146142625602614264235678696", + "15.653888557799428533661532247337596699165609502143573736324609963676016536620219650233947025955941767418394468430088744792011863372700125171657152344359691884844467537973207254356056413344833677019845894722403336263492187594473529648820105313588218738589863121077164638145443372177511689907229285786639401142720480840361807890924894118341348723302140201727278896670612158646957973089749997574886849052", + "15.753914422567924620983011231186756248927500048298297966046797894473026288195693602724718689673345950533773458261077009361447048732755177208182393190558955000510862906901264875534878251422852119708834699869325135138115458649625715331447841946651213506247785763655954618727631238085210998597640478337632316374699558747521521322958958007061686783767533791960628390158818930229551073161600125867700021792", + "15.85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917318141449154623072942589950397905862150069399933839837587768500465610923498846958649809674914178649334608135965528391488070572086186135575993779130613973209256593945017506228618641718800535579350053924994477780084133179951980288358740787563005214821795481256206527887648549729996871774054", + "15.952084658149644245683507350070306645177945105101484153924270108676201561319289632374555910646901988746041412618543135996125375791519803422725843386425083616158339287877946105649326557260557436060388858413411665201571751138163317484650301711667106167269022770454213762825295979733155947648773992508157585668523601297276380903011908104292666527679159060486455648840531606540886121995288693616233664118", + "16.050252259524242304765819675794450638017457570575983927825323032144525082963948191096147193145311656453873849743947855717510860973988659112083956949050053482287530484973632648820968563125979705559716208799062595086459726936476696439381910220384322311324311842667158228425675297979222265812106596748979173989790155646435957100594433524698909367347330792212795303074381195611252785521380020853492164213", + "16.147823080773235880405791115635997557864326968336419500556329380232598367900898497414264871456444239647173004031647690209887509450260015358377350981847404025422287378732373648981765201137038640626625054151148020200007297959878815562787393121096595035600314225225829183114125474497018547223659528472930900422571056329570935652356761026639723378971526771480442539666833071774260326796995470405776697508", + "16.244807875180999875501121715806898107481293878037690793428836596906771575458065188122883764864387960703385536810260167663245388411090356221198720241639510406887891671012502982802097814197179053506077944546781492021156361482371793971423102721583613594407654464704630769172660190680210371421155562677809881516769741092121847876124182917158329121447444811423396067108583211752995130120466339417213690103", + "16.341217076923383960696369420161248669121212808135654273983491452937095658109553619994922766756319666975188172033084786774938321749356282450853819283481043653079525140374828081598688868309044496356854434283025399835051607515358702243412387084009896448573365043827048092425743953483386894323518311923913690941609208424884900176315736258863356896904842838787088633319141807219561302676306271570497938951", + "16.437060814169977953327247404361277316133609673377048855107248395882567096603010277067169202635116275806042691595212970108586780272931810640625169517986388546454661584514822804714353912243137592516024763283438958227839402433048048710441109095172462035564435115216917054500940736255985371596025417460999236751644500293733791545234403402763313780467186900924301219121627362814381042265364554244922063244", + "16.532348921502715844688082576333627653976665425427208876480987568125771090198651469125133728158959771903048097921398391233385160724013876315451069276292964513405939027110844786864417344898464954584607502706435338641340198705784007825954758491636479758251565454590803621730664169376188515867591916106130400067381048724859197544495864321744604824010272768413212368063633927635680949445491291877351894002", + "16.627090951693919358811327574245345505772490789347183724819005227768402181270609385967456291735846450867894473133567131236111152863521170798185176128190539042865125306336585771487343846002698226533251590813449657459827132440585220359867286748933370108772977365669225547985182074953209927803366884415741125333825698418900521403979162491994853083311352577067312818794931106189069819989170801482405536514", + "16.721296186883706959605742705233010783899326523984270864686085184270332637146646055028529386107385333643018392715062510774480808240365813021854787737722340862660933836784188253900670608552564136025173808090739064412712504259523027988063714336820233104689334204836546487559659633964043151984340548060532718923362128881432934135325567300871046043987974739750202594174747157312786841203825015000569906569", + "16.814973649193786097933847301606402681562971325632349794875060180956850132955663923009153012573756121825144011723368897136662622661949455269993484003323635485583818294689986393593513505114877524833927851543136113228167938420410768779051463092595000942849953376285816848692899746766156718610029919169840578968793144831181110694079933876981901697748511259778526616029120021849351522400364185613786904682", + "16.908132110811980070323724133825443669074486306220411933324368366059977522675356589320971338976776616316134235802112798127138113465084701628640560443298729802233609863856357626793535493930184649436981665533778324622620988007501131586355391858595913504065552289654660238871963950906549509361444433014511210945609775277269846879360970012281095853461600076871591771412527553822562541374853347368516919083", + "17.00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382011926203019216433130463160332871953682367444656008183382791141675614213387139286651404042270148438772631374392794365954621449715918679411346821231311323476100996185815327842728964327386825980705399348021964722656926231691638306207473227031037077068888418792782089031054095068740132333953", + "17.092925928109873230856890966518170609049635890295121605225309418908275818470576879572890960685410581830840991105430126130887790543881945170122581670877506416385845881122034595711744339948691879348516227414909772352427723381307136312192527194398703992339257139025461873121242339773525646882099071218455368070360012094043767404721710936020967834426862977103157516068354293085070758241766981055235066209", + "17.184577662469350439927855242766012175901435587217348622500720382402437284043691040754973131531272064166131201551424433897942349835349079351126685371244284352588634150544638769966985677717022600144009093735325965072805119643341927076098445506587163233137151789343227901578709257933753169161253949701854384420333694583107005741557086141652266134114205529376278344127778702038153204605578398292401917015", + "17.275743170440754085190445015394979038018668745865422068491523038650327582540706316060451728873454611950564439169497072829566902102398394981985975990083088007962977970505915486567012863555181572053681584109963952561485141768953808491468086742419682163408958624144213019203883451244657001188829080210013359418255598633772348738641653443346826322446562330527464133013054079541191939171126793437194110759", + "17.366430109398423824712351054979098428930613474829102247429095866488836926871097486002790757634772330314712617641418478706058891283246904611170260177746489064263225115406081681716133431691882356650113682077003571633473268618161370540232547230765011660610678347706101216301120462332270486556205728312463947537274846803558500731691464611989523847617789541328126476219681754040672802158483643453738827221", + "17.456645937814341319169222501542608627403113623558293524363238531385820187770170403648403252074964213113377845095534227202560251082915822197277767058606166170134732818652676480521208063952545598229201593834632528912430284433244772566961770292191780850052527418760053662080114781916361358783723872887199722599102508052518044253446686455582486241466233995573362181026486277618737441990128524043149017597", + "17.546397922417003516910356993677316771048907184269568216409465034396055582254893824626170868646400862812069808656427157514064265326887153266704989591763035523394048363206866117961294630191139571618530051641258534288980616305897039457680785291235730766909268092549430669200289626051927041560228580907033054444893426486648638316110177880766643917771237734940434420498182546126591670171343990763488162814", + "17.635693145022384705163262633691212915995304763116023125519426321471973674534505657400633405294778370478985112465094235780644028343844807586537417764875542174488900481208823741517400211272188843356948118444398002656002506943982233003640824565969970560720816740945971824478145915185970128692068679139758731692468366100636144656973628038665916994346324396985373751630840364738989989994328896453907404578", + "17.724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021", }}; T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; @@ -158,7 +158,7 @@ void test() for(unsigned k = 0; k < data.size(); k++) { T val = sqrt(pi * k); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) { diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 4e5ca6c8..7b2b3412 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -47,59 +47,59 @@ template void test() { - static const boost::array data = + static const boost::array data = {{ - T("0.32137338579537729992840434899278935725496267444911714908205287462634251052210833615032073534299473485492692600156322137421801432333125051088723502425037485776412801577568405892077585206768190530859883094571475323319480739773193974206966728764224286661945738178210577326172938196062277314761537881936346874075881338768208490193827960565412814349738654540520356903367084438822830345189856017860672463017"), - T("0.98628073997374759901559180515206275902189609982907214282364143439537215491113710345866034807991101303183938339561499559327886956280789743287824488269072297413440935381715378233031399015496124706604318545539544610760151756970229801074280545428642122005982857974921606264103186878499260552388713716032507770319550435738767597150644370033277228635793175246197730488375240713357827246166262087899961098648"), - T("0.99999659728082161113542951278514830809677661658635225532792520501703544628367875293677270218317428676793098034276042396396797568103263882451732810190507733063467333056356770774002596898762991629653041854653269824642873291146068535300466473399592751219449187768646625229500705182676930009096545254478199838990703077597971823456671241141900968900216742636822174010867343154474773040184900973368250708724"), - T("0.9999999999846483268200051609594321550129159997920576480976206867496512752486590660437091205989616108531910897733432934135954788151766561209164605337537937873588006552145390152387235783207736999759875845070169747521389728857476525437483543080651125798739562649414879487621858466223255239845627205850217328574865852922872737234283038190096982410137471391847466112651349436875974689271288261759782261321"), - T("0.9999999999999999987314527242099750648171958211319474558707792311593804963057878814487720997303512134007272111464990650500302215773762906820778949397525329109311974741708703536680512747226155618703318739024344621256722269608969415280035337052044425138281821760268269187377517243951584969175035549994883451471918693502477485385682884154959809285569290940740978684264145737164182111806308430952867505356"), - T("0.9999999999999999999999999980800953069847308586840237590563929855339557065536765765234844240789584487443451033349994294426525006157530320529970966048109743850154174651033567146346966529198814047607015842020039899630884318521543225160212193994911746894335846264878066530266737005606770102869237101848445559941638381625615207320468184414917265299980278164193202897754476112968080358662232635784904263624"), - T("0.9999999999999999999999999999999999999467800140220866754762922747687784133233134010432889959570821554455247528344437918197518545105332713456859236726383195243056599177018396579766073961540714510399202497404647103138524118065391185503678895059096790300665805648569647351935897874460587855127436472608470703384261586158923066272124216158518232588330799027603391275039552776308636189531809031683723259525"), - T("0.9999999999999999999999999999999999999999999999999729795912960133359928587562229512337339217831178574875626619226954752643039860388090399659478676726654102118545764943682017611574275691203710439707807193180604656837503862242700430179591666329131728631752773789406064618682879167351725013888294859467540832310795515139677375807407622028485242969471516812171475098378942187864794497220152019202351747432"), - T("0.9999999999999999999999999999999999999999999999999999999999999997487354938310440650220692519525261552411539996830587326435051159231522052011310872619940247463640019105467860778515384738650636054646551611609757125760437266415865214306396520500343113189907306851418957620080971645943305760132385139924583154317156560414548076370893360020924960120441059315311380109752919823616149973862196846266297710225"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999572050575304159358359221596743379014313563214857593401545331495211888415913558896516895286943572966865708195832339959764445194449615969154689769557903166971249521898883489362426386924297872088925852892350150865941427355319827260914834268754732102528105919811851193667193380541054520023003326858641189063542651960743457613"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998665016733514821204959171836698281165918083005790816030823236096080522860514417075411055633676502699904415882389102672678124683084429720879962355892225321369091298491658349178472270952759208443767848312111069127329160464884932271685986610697222434145553035947750809388321614695213754318979469071722942883"), - T("0.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999992372516628147584832950728021842198359205201519966391076994594773600474674435473005118571751514446148292787696117866094991476340344341061706866751156257825144909115117822189019766805825304055482958970512463798453229341693148012213183553546720540880444569824125592343803193018989122964"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999920180539244323143459416025663362517256166793900312667214543096238752838226369161775531456005541374878274529461511286842988937830155704737448202558382612829022464635400289328916240002670783433827234852858267621807568393874737879853500598862298495727481132883728328"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998470116425957155787153557938061034698436461173594805292722874130433614266475136267606498346730583487791266503943659174886554170377537630914770998114573340081594827150737005158607830579000912020838690230498119348251553312722575955142752845289"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999462931048083476382670449719737943481963930626760625326765703815392249622625483433043363664396638162612437367800102332819699131841317348173451308570776544874933173719394861336636728378134900422312720743996219523365098"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996546783689748726752364896615532860288057097437452774779386074906915819380531729493071959232887620213723607155628959529584572083388979892309086717786559916703004365603135284141639480887703759"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999593332381019647939423999969519583099837564321056588766269967853479478603122899456262904869063959564274215899007623362296377022418464303752396325625838280378647335"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999122842714667567128203355585346559126606029196080721845292399104475997315344844970601651757832506169948906646054332493537761143729664"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999965347272050374435790597917065458623422102880662825928396981295898014081371503733411536311258910851858"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999974926240515037403282500845454464621558236030794140169313830052413917"), - T("0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999667705192725716176070161727364499"), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), - T("1."), + "0.32137338579537729992840434899278935725496267444911714908205287462634251052210833615032073534299473485492692600156322137421801432333125051088723502425037485776412801577568405892077585206768190530859883094571475323319480739773193974206966728764224286661945738178210577326172938196062277314761537881936346874075881338768208490193827960565412814349738654540520356903367084438822830345189856017860672463017", + "0.98628073997374759901559180515206275902189609982907214282364143439537215491113710345866034807991101303183938339561499559327886956280789743287824488269072297413440935381715378233031399015496124706604318545539544610760151756970229801074280545428642122005982857974921606264103186878499260552388713716032507770319550435738767597150644370033277228635793175246197730488375240713357827246166262087899961098648", + "0.99999659728082161113542951278514830809677661658635225532792520501703544628367875293677270218317428676793098034276042396396797568103263882451732810190507733063467333056356770774002596898762991629653041854653269824642873291146068535300466473399592751219449187768646625229500705182676930009096545254478199838990703077597971823456671241141900968900216742636822174010867343154474773040184900973368250708724", + "0.9999999999846483268200051609594321550129159997920576480976206867496512752486590660437091205989616108531910897733432934135954788151766561209164605337537937873588006552145390152387235783207736999759875845070169747521389728857476525437483543080651125798739562649414879487621858466223255239845627205850217328574865852922872737234283038190096982410137471391847466112651349436875974689271288261759782261321", + "0.9999999999999999987314527242099750648171958211319474558707792311593804963057878814487720997303512134007272111464990650500302215773762906820778949397525329109311974741708703536680512747226155618703318739024344621256722269608969415280035337052044425138281821760268269187377517243951584969175035549994883451471918693502477485385682884154959809285569290940740978684264145737164182111806308430952867505356", + "0.9999999999999999999999999980800953069847308586840237590563929855339557065536765765234844240789584487443451033349994294426525006157530320529970966048109743850154174651033567146346966529198814047607015842020039899630884318521543225160212193994911746894335846264878066530266737005606770102869237101848445559941638381625615207320468184414917265299980278164193202897754476112968080358662232635784904263624", + "0.9999999999999999999999999999999999999467800140220866754762922747687784133233134010432889959570821554455247528344437918197518545105332713456859236726383195243056599177018396579766073961540714510399202497404647103138524118065391185503678895059096790300665805648569647351935897874460587855127436472608470703384261586158923066272124216158518232588330799027603391275039552776308636189531809031683723259525", + "0.9999999999999999999999999999999999999999999999999729795912960133359928587562229512337339217831178574875626619226954752643039860388090399659478676726654102118545764943682017611574275691203710439707807193180604656837503862242700430179591666329131728631752773789406064618682879167351725013888294859467540832310795515139677375807407622028485242969471516812171475098378942187864794497220152019202351747432", + "0.9999999999999999999999999999999999999999999999999999999999999997487354938310440650220692519525261552411539996830587326435051159231522052011310872619940247463640019105467860778515384738650636054646551611609757125760437266415865214306396520500343113189907306851418957620080971645943305760132385139924583154317156560414548076370893360020924960120441059315311380109752919823616149973862196846266297710225", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999572050575304159358359221596743379014313563214857593401545331495211888415913558896516895286943572966865708195832339959764445194449615969154689769557903166971249521898883489362426386924297872088925852892350150865941427355319827260914834268754732102528105919811851193667193380541054520023003326858641189063542651960743457613", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998665016733514821204959171836698281165918083005790816030823236096080522860514417075411055633676502699904415882389102672678124683084429720879962355892225321369091298491658349178472270952759208443767848312111069127329160464884932271685986610697222434145553035947750809388321614695213754318979469071722942883", + "0.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999992372516628147584832950728021842198359205201519966391076994594773600474674435473005118571751514446148292787696117866094991476340344341061706866751156257825144909115117822189019766805825304055482958970512463798453229341693148012213183553546720540880444569824125592343803193018989122964", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999920180539244323143459416025663362517256166793900312667214543096238752838226369161775531456005541374878274529461511286842988937830155704737448202558382612829022464635400289328916240002670783433827234852858267621807568393874737879853500598862298495727481132883728328", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998470116425957155787153557938061034698436461173594805292722874130433614266475136267606498346730583487791266503943659174886554170377537630914770998114573340081594827150737005158607830579000912020838690230498119348251553312722575955142752845289", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999462931048083476382670449719737943481963930626760625326765703815392249622625483433043363664396638162612437367800102332819699131841317348173451308570776544874933173719394861336636728378134900422312720743996219523365098", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996546783689748726752364896615532860288057097437452774779386074906915819380531729493071959232887620213723607155628959529584572083388979892309086717786559916703004365603135284141639480887703759", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999593332381019647939423999969519583099837564321056588766269967853479478603122899456262904869063959564274215899007623362296377022418464303752396325625838280378647335", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999122842714667567128203355585346559126606029196080721845292399104475997315344844970601651757832506169948906646054332493537761143729664", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999965347272050374435790597917065458623422102880662825928396981295898014081371503733411536311258910851858", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999974926240515037403282500845454464621558236030794140169313830052413917", + "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999667705192725716176070161727364499", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", + "1.", }}; T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; @@ -109,7 +109,7 @@ void test() { const T x = eg + k; T val = boost::multiprecision::tanh(x * x); - T e = relative_error(val, data[k]); + T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); if(err > max_err) max_err = err; From db83a1c4add6f8124a4113d46a54564bd3766044 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Jan 2012 11:55:09 +0000 Subject: [PATCH 096/256] Tentative rename of packed_cpp_int to fixed_int. [SVN r76428] --- .../boost/multiprecision/packed_cpp_int.hpp | 399 +++++++++--------- performance/performance_test.cpp | 12 +- test/Jamfile.v2 | 18 +- test/packed_int_test.cpp | 6 +- test/test_arithmetic.cpp | 18 +- test/test_int_io.cpp | 22 +- 6 files changed, 249 insertions(+), 226 deletions(-) diff --git a/include/boost/multiprecision/packed_cpp_int.hpp b/include/boost/multiprecision/packed_cpp_int.hpp index 6dbc8657..0bbc2fa7 100644 --- a/include/boost/multiprecision/packed_cpp_int.hpp +++ b/include/boost/multiprecision/packed_cpp_int.hpp @@ -18,7 +18,7 @@ namespace boost{ namespace multiprecision{ template -struct packed_cpp_int +struct fixed_int { typedef mpl::list signed_types; typedef mpl::list unsigned_types; @@ -33,37 +33,37 @@ struct packed_cpp_int BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1 << ((Bits % limb_bits ? Bits % limb_bits : limb_bits) - 1)); typedef boost::array data_type; - packed_cpp_int(){} - packed_cpp_int(const packed_cpp_int& o) + fixed_int(){} + fixed_int(const fixed_int& o) { m_value = o.m_value; } #ifndef BOOST_NO_RVALUE_REFERENCES - packed_cpp_int(packed_cpp_int&& o) : m_value(o.m_value) {} + fixed_int(fixed_int&& o) : m_value(o.m_value) {} #endif - packed_cpp_int& operator = (const packed_cpp_int& o) + fixed_int& operator = (const fixed_int& o) { m_value = o.m_value; return *this; } - packed_cpp_int& operator = (boost::uint32_t i) + fixed_int& operator = (boost::uint32_t i) { m_value[limb_count - 1] = i; for(int j = limb_count - 2; j >= 0; --j) m_value[j] = 0; - m_value[0] &= packed_cpp_int::upper_limb_mask; + m_value[0] &= fixed_int::upper_limb_mask; return *this; } - packed_cpp_int& operator = (boost::int32_t i) + fixed_int& operator = (boost::int32_t i) { m_value[limb_count - 1] = i; // sign extend: for(int j = limb_count - 2; j >= 0; --j) m_value[j] = i < 0 ? max_limb_value : 0; - m_value[0] &= packed_cpp_int::upper_limb_mask; + m_value[0] &= fixed_int::upper_limb_mask; return *this; } - packed_cpp_int& operator = (boost::uintmax_t i) + fixed_int& operator = (boost::uintmax_t i) { BOOST_STATIC_ASSERT(sizeof(i) % sizeof(limb_type) == 0); boost::uintmax_t mask = max_limb_value; @@ -76,10 +76,10 @@ struct packed_cpp_int } for(int j = static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)) - 1; j >= 0; --j) m_value[j] = 0; - m_value[0] &= packed_cpp_int::upper_limb_mask; + m_value[0] &= fixed_int::upper_limb_mask; return *this; } - packed_cpp_int& operator = (boost::intmax_t i) + fixed_int& operator = (boost::intmax_t i) { BOOST_STATIC_ASSERT(sizeof(i) % sizeof(limb_type) == 0); boost::uintmax_t mask = max_limb_value; @@ -92,10 +92,10 @@ struct packed_cpp_int } for(int j = static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)) - 1; j >= 0; --j) m_value[j] = i < 0 ? max_limb_value : 0; - m_value[0] &= packed_cpp_int::upper_limb_mask; + m_value[0] &= fixed_int::upper_limb_mask; return *this; } - packed_cpp_int& operator = (long double a) + fixed_int& operator = (long double a) { BOOST_STATIC_ASSERT(Bits >= (unsigned)std::numeric_limits::digits); using std::frexp; @@ -138,10 +138,10 @@ struct packed_cpp_int left_shift(*this, e); else if(e < 0) right_shift(*this, -e); - data()[0] &= packed_cpp_int::upper_limb_mask; + data()[0] &= fixed_int::upper_limb_mask; return *this; } - packed_cpp_int& operator = (const char* s) + fixed_int& operator = (const char* s) { std::size_t n = s ? std::strlen(s) : 0; *this = static_cast(0u); @@ -186,7 +186,7 @@ struct packed_cpp_int val = max_limb_value; if(val > radix) { - m_value[0] &= packed_cpp_int::upper_limb_mask; + m_value[0] &= fixed_int::upper_limb_mask; return *this; // TODO raise an exception here? } m_value[limb_count - 1] |= val; @@ -210,12 +210,12 @@ struct packed_cpp_int } } } - m_value[0] &= packed_cpp_int::upper_limb_mask; + m_value[0] &= fixed_int::upper_limb_mask; if(isneg) negate(); return *this; } - void swap(packed_cpp_int& o) + void swap(fixed_int& o) { std::swap(m_value, o.m_value); } @@ -232,7 +232,7 @@ struct packed_cpp_int { boost::uint32_t shift = base == 8 ? 3 : 4; boost::uint32_t mask = static_cast((1u << shift) - 1); - packed_cpp_int t(*this); + fixed_int t(*this); for(unsigned i = 0; i < Bits / shift; ++i) { char c = '0' + (t.data()[limb_count-1] & mask); @@ -264,8 +264,8 @@ struct packed_cpp_int } else { - packed_cpp_int t(*this); - packed_cpp_int ten, r; + fixed_int t(*this); + fixed_int ten, r; ten = boost::uint32_t(1000000000); bool neg = false; if(Signed && (t.data()[0] & sign_bit_mask)) @@ -281,7 +281,7 @@ struct packed_cpp_int { while(get_sign(t) != 0) { - packed_cpp_int t2; + fixed_int t2; divide_unsigned_helper(t2, t, ten, r); t = t2; boost::uint32_t v = r.data()[limb_count - 1]; @@ -307,15 +307,15 @@ struct packed_cpp_int void negate() { boost::uintmax_t carry = 1; - for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + for(int i = fixed_int::limb_count - 1; i >= 0; --i) { carry += static_cast(~m_value[i]); m_value[i] = static_cast(carry); carry >>= limb_bits; } - m_value[0] &= packed_cpp_int::upper_limb_mask; + m_value[0] &= fixed_int::upper_limb_mask; } - int compare(const packed_cpp_int& o)const + int compare(const fixed_int& o)const { int result = 0; if(Signed && ((m_value[0] & sign_bit_mask) != (o.data()[0] & sign_bit_mask))) @@ -336,7 +336,7 @@ struct packed_cpp_int typename enable_if, int>::type compare(Arithmatic i)const { // braindead version: - packed_cpp_int t; + fixed_int t; t = i; return compare(t); } @@ -347,40 +347,40 @@ private: }; template -inline void add(packed_cpp_int& result, const packed_cpp_int& o) +inline void add(fixed_int& result, const fixed_int& o) { add(result, result, o); } template -inline void add(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +inline void add(fixed_int& result, const fixed_int& a, const fixed_int& b) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: boost::uintmax_t carry = 0; - for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + for(int i = fixed_int::limb_count - 1; i >= 0; --i) { carry += static_cast(a.data()[i]) + static_cast(b.data()[i]); - result.data()[i] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; + result.data()[i] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void add(packed_cpp_int& result, const boost::uint32_t& o) +inline void add(fixed_int& result, const boost::uint32_t& o) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: boost::uintmax_t carry = o; - for(int i = packed_cpp_int::limb_count - 1; carry && i >= 0; --i) + for(int i = fixed_int::limb_count - 1; carry && i >= 0; --i) { carry += static_cast(result.data()[i]); - result.data()[i] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; + result.data()[i] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void add(packed_cpp_int& result, const boost::int32_t& o) +inline void add(fixed_int& result, const boost::int32_t& o) { if(o < 0) subtract(result, static_cast(-o)); @@ -388,24 +388,24 @@ inline void add(packed_cpp_int& result, const boost::int32_t& o) add(result, static_cast(o)); } template -inline void subtract(packed_cpp_int& result, const boost::uint32_t& o) +inline void subtract(fixed_int& result, const boost::uint32_t& o) { // Subtract using modular arithmatic. // This is the same code as for addition, with the twist that we negate o "on the fly": - boost::uintmax_t carry = static_cast(result.data()[packed_cpp_int::limb_count - 1]) + boost::uintmax_t carry = static_cast(result.data()[fixed_int::limb_count - 1]) + 1uLL + static_cast(~o); - result.data()[packed_cpp_int::limb_count - 1] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; - for(int i = packed_cpp_int::limb_count - 2; i >= 0; --i) + result.data()[fixed_int::limb_count - 1] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; + for(int i = fixed_int::limb_count - 2; i >= 0; --i) { carry += static_cast(result.data()[i]) + 0xFFFFFFFF; - result.data()[i] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; + result.data()[i] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void subtract(packed_cpp_int& result, const boost::int32_t& o) +inline void subtract(fixed_int& result, const boost::int32_t& o) { if(o) { @@ -416,90 +416,90 @@ inline void subtract(packed_cpp_int& result, const boost::int32_t& } } template -inline void increment(packed_cpp_int& result) +inline void increment(fixed_int& result) { static const boost::uint32_t one = 1; add(result, one); } template -inline void decrement(packed_cpp_int& result) +inline void decrement(fixed_int& result) { static const boost::uint32_t one = 1; subtract(result, one); } template -inline void subtract(packed_cpp_int& result, const packed_cpp_int& o) +inline void subtract(fixed_int& result, const fixed_int& o) { subtract(result, result, o); } template -inline void subtract(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +inline void subtract(fixed_int& result, const fixed_int& a, const fixed_int& b) { // Subtract using modular arithmatic. // This is the same code as for addition, with the twist that we negate b "on the fly": boost::uintmax_t carry = 1; - for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + for(int i = fixed_int::limb_count - 1; i >= 0; --i) { carry += static_cast(a.data()[i]) + static_cast(~b.data()[i]); - result.data()[i] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; + result.data()[i] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void multiply(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +inline void multiply(fixed_int& result, const fixed_int& a, const fixed_int& b) { // Very simple long multiplication, only usable for small numbers of limb_type's // but that's the typical use case for this type anyway: if(&result == &a) { - packed_cpp_int t(a); + fixed_int t(a); multiply(result, t, b); return; } if(&result == &b) { - packed_cpp_int t(b); + fixed_int t(b); multiply(result, a, t); return; } boost::uintmax_t carry = 0; - for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + for(unsigned i = 0; i < fixed_int::limb_count; ++i) result.data()[i] = 0; - for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + for(int i = fixed_int::limb_count - 1; i >= 0; --i) { - for(int j = packed_cpp_int::limb_count - 1; j >= static_cast(packed_cpp_int::limb_count) - i - 1; --j) + for(int j = fixed_int::limb_count - 1; j >= static_cast(fixed_int::limb_count) - i - 1; --j) { carry += static_cast(a.data()[i]) * static_cast(b.data()[j]); - carry += result.data()[i + j + 1 - packed_cpp_int::limb_count]; - result.data()[i + j + 1 - packed_cpp_int::limb_count] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; + carry += result.data()[i + j + 1 - fixed_int::limb_count]; + result.data()[i + j + 1 - fixed_int::limb_count] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; } carry = 0; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void multiply(packed_cpp_int& result, const packed_cpp_int& a) +inline void multiply(fixed_int& result, const fixed_int& a) { // There is no in-place multiply: - packed_cpp_int b(result); + fixed_int b(result); multiply(result, b, a); } template -inline void multiply(packed_cpp_int& result, const boost::uint32_t& a) +inline void multiply(fixed_int& result, const boost::uint32_t& a) { boost::uintmax_t carry = 0; - for(int i = packed_cpp_int::limb_count - 1; i >= 0; --i) + for(int i = fixed_int::limb_count - 1; i >= 0; --i) { carry += static_cast(result.data()[i]) * static_cast(a); - result.data()[i] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; + result.data()[i] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void multiply(packed_cpp_int& result, const boost::int32_t& a) +inline void multiply(fixed_int& result, const boost::int32_t& a) { if(a > 0) multiply(result, static_cast(a)); @@ -512,15 +512,15 @@ inline void multiply(packed_cpp_int& result, const boost::int32_t& /* template -boost::uint32_t bitcount(const packed_cpp_int& a) +boost::uint32_t bitcount(const fixed_int& a) { // returns the location of the MSB in a: boost::uint32_t i = 0; - for(; (i < packed_cpp_int::limb_count) && (a.data()[i] == 0); ++i){} - boost::uint32_t count = (packed_cpp_int::limb_count - i) * packed_cpp_int::limb_bits; + for(; (i < fixed_int::limb_count) && (a.data()[i] == 0); ++i){} + boost::uint32_t count = (fixed_int::limb_count - i) * fixed_int::limb_bits; if(!count) return count; // no bits are set, value is zero - boost::uint32_t mask = static_cast(1u) << (packed_cpp_int::limb_bits - 1); + boost::uint32_t mask = static_cast(1u) << (fixed_int::limb_bits - 1); while((a.data()[i] & mask) == 0) { --count; @@ -529,17 +529,17 @@ boost::uint32_t bitcount(const packed_cpp_int& a) return count; } template -void divide_unsigned_helper(packed_cpp_int& result, const packed_cpp_int& x, const packed_cpp_int& y, packed_cpp_int& r) +void divide_unsigned_helper(fixed_int& result, const fixed_int& x, const fixed_int& y, fixed_int& r) { if((&result == &x) || (&r == &x)) { - packed_cpp_int t(x); + fixed_int t(x); divide_unsigned_helper(result, t, y, r); return; } if((&result == &y) || (&r == &y)) { - packed_cpp_int t(y); + fixed_int t(y); divide_unsigned_helper(result, x, t, r); return; } @@ -564,7 +564,7 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c if(&result == &r) { - packed_cpp_int rem; + fixed_int rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -588,11 +588,11 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c } // Together mask_index and mask give us the bit we may be about to set in the result: - boost::uint32_t mask_index = packed_cpp_int::limb_count - 1 - n / packed_cpp_int::limb_bits; - boost::uint32_t mask = static_cast(1u) << n % packed_cpp_int::limb_bits; - packed_cpp_int t(y); + boost::uint32_t mask_index = fixed_int::limb_count - 1 - n / fixed_int::limb_bits; + boost::uint32_t mask = static_cast(1u) << n % fixed_int::limb_bits; + fixed_int t(y); left_shift(t, n); - while(mask_index < packed_cpp_int::limb_count) + while(mask_index < fixed_int::limb_count) { int comp = r.compare(t); if(comp >= 0) @@ -606,28 +606,46 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c if(0 == (mask >>= 1)) { ++mask_index; - mask = static_cast(1u) << (packed_cpp_int::limb_bits - 1); + mask = static_cast(1u) << (fixed_int::limb_bits - 1); } } BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed } */ template -void divide_unsigned_helper(packed_cpp_int& result, const packed_cpp_int& x, const packed_cpp_int& y, packed_cpp_int& r) +void divide_unsigned_helper(fixed_int& result, const fixed_int& x, const fixed_int& y, fixed_int& r) { if((&result == &x) || (&r == &x)) { - packed_cpp_int t(x); + fixed_int t(x); divide_unsigned_helper(result, t, y, r); return; } if((&result == &y) || (&r == &y)) { - packed_cpp_int t(y); + fixed_int t(y); divide_unsigned_helper(result, x, t, r); return; } + /* + Very simple, fairly braindead long division. + Start by setting the remainder equal to x, and the + result equal to 0. Then in each loop we calculate our + "best guess" for how many times y divides into r, + add our guess to the result, and subtract guess*y + from the remainder r. One wrinckle is that the remainder + may go negative, in which case we subtract the current guess + from the result rather than adding. The value of the guess + is determined by dividing the most-significant-limb of the + current remainder by the most-significant-limb of y. + + Note that there are more efficient algorithms than this + available, in particular see Knuth Vol 2. However for small + numbers of limbs this generally outperforms the alternatives + and avoids the normalisation step which would require extra storage. + */ + using default_ops::subtract; @@ -648,7 +666,7 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c if(&result == &r) { - packed_cpp_int rem; + fixed_int rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -673,24 +691,24 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c while(y.data()[y_order] == 0) ++y_order; - packed_cpp_int t; + fixed_int t; bool r_neg = false; // // See if we can short-circuit long division, and use basic arithmetic instead: // - if(r_order == packed_cpp_int::limb_count - 1) + if(r_order == fixed_int::limb_count - 1) { - result = r.data()[packed_cpp_int::limb_count - 1] / y.data()[packed_cpp_int::limb_count - 1]; - r = x.data()[packed_cpp_int::limb_count - 1] % y.data()[packed_cpp_int::limb_count - 1]; + result = r.data()[fixed_int::limb_count - 1] / y.data()[fixed_int::limb_count - 1]; + r = x.data()[fixed_int::limb_count - 1] % y.data()[fixed_int::limb_count - 1]; return; } - else if(r_order == packed_cpp_int::limb_count - 2) + else if(r_order == fixed_int::limb_count - 2) { unsigned long long a, b; - a = (static_cast(r.data()[r_order]) << packed_cpp_int::limb_bits) | r.data()[r_order + 1]; - b = y_order < packed_cpp_int::limb_count - 1 ? - (static_cast(y.data()[y_order]) << packed_cpp_int::limb_bits) | y.data()[y_order + 1] + a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; + b = y_order < fixed_int::limb_count - 1 ? + (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] : y.data()[y_order]; result = a / b; r = a % b; @@ -708,13 +726,13 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c // Calculate our best guess for how many times y divides into r: // boost::uint32_t guess; - if((r.data()[r_order] <= y.data()[y_order]) && (r_order < packed_cpp_int::limb_count - 1)) + if((r.data()[r_order] <= y.data()[y_order]) && (r_order < fixed_int::limb_count - 1)) { unsigned long long a, b, v; - a = (static_cast(r.data()[r_order]) << packed_cpp_int::limb_bits) | r.data()[r_order + 1]; + a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; b = y.data()[y_order]; v = a / b; - if(v > packed_cpp_int::max_limb_value) + if(v > fixed_int::max_limb_value) guess = 1; else { @@ -724,14 +742,19 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c } else { - guess = r.data()[r_order] / y.data()[y_order]; + unsigned long long a, b, v; + a = (r_order < fixed_int::limb_count - 1) ? (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1] : r.data()[r_order]; + b = (y_order < fixed_int::limb_count - 1) ? (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] : (static_cast(y.data()[y_order]) << fixed_int::limb_bits); + v = a / b; + guess = static_cast::limb_type>(v); + //guess = r.data()[r_order] / y.data()[y_order]; } // // Update result: // boost::uint32_t shift = y_order - r_order; t = boost::uint32_t(0); - t.data()[packed_cpp_int::limb_count - 1 - shift] = guess; + t.data()[fixed_int::limb_count - 1 - shift] = guess; if(r_neg) subtract(result, t); else @@ -741,20 +764,20 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c // rather than a full O(N^2) multiply: // boost::uintmax_t carry = 0; - for(unsigned i = packed_cpp_int::limb_count - 1; i > packed_cpp_int::limb_count - shift - 1; --i) + for(unsigned i = fixed_int::limb_count - 1; i > fixed_int::limb_count - shift - 1; --i) t.data()[i] = 0; - for(int i = packed_cpp_int::limb_count - 1; i >= static_cast(shift); --i) + for(int i = fixed_int::limb_count - 1; i >= static_cast(shift); --i) { carry += static_cast(y.data()[i]) * static_cast(guess); - t.data()[i - shift] = static_cast::limb_type>(carry); - carry >>= packed_cpp_int::limb_bits; + t.data()[i - shift] = static_cast::limb_type>(carry); + carry >>= fixed_int::limb_bits; } - t.data()[0] &= packed_cpp_int::upper_limb_mask; + t.data()[0] &= fixed_int::upper_limb_mask; // // Update r: // subtract(r, t); - if(r.data()[0] & packed_cpp_int::sign_bit_mask) + if(r.data()[0] & fixed_int::sign_bit_mask) { r.negate(); r_neg = !r_neg; @@ -777,29 +800,29 @@ void divide_unsigned_helper(packed_cpp_int& result, const packed_c } template -inline void divide(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +inline void divide(fixed_int& result, const fixed_int& a, const fixed_int& b) { - packed_cpp_int r; - if(Signed && (a.data()[0] & packed_cpp_int::sign_bit_mask)) + fixed_int r; + if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) { - if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + if(Signed && (b.data()[0] & fixed_int::sign_bit_mask)) { - packed_cpp_int t1(a), t2(b); + fixed_int t1(a), t2(b); t1.negate(); t2.negate(); divide_unsigned_helper(result, t1, t2, r); } else { - packed_cpp_int t(a); + fixed_int t(a); t.negate(); divide_unsigned_helper(result, t, b, r); result.negate(); } } - else if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + else if(Signed && (b.data()[0] & fixed_int::sign_bit_mask)) { - packed_cpp_int t(b); + fixed_int t(b); t.negate(); divide_unsigned_helper(result, a, t, r); result.negate(); @@ -810,21 +833,21 @@ inline void divide(packed_cpp_int& result, const packed_cpp_int -inline void divide(packed_cpp_int& result, const packed_cpp_int& b) +inline void divide(fixed_int& result, const fixed_int& b) { // There is no in place divide: - packed_cpp_int a(result); + fixed_int a(result); divide(result, a, b); } template -inline void modulus(packed_cpp_int& result, const packed_cpp_int& a, const packed_cpp_int& b) +inline void modulus(fixed_int& result, const fixed_int& a, const fixed_int& b) { - packed_cpp_int r; - if(Signed && (a.data()[0] & packed_cpp_int::sign_bit_mask)) + fixed_int r; + if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) { - if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + if(Signed && (b.data()[0] & fixed_int::sign_bit_mask)) { - packed_cpp_int t1(a), t2(b); + fixed_int t1(a), t2(b); t1.negate(); t2.negate(); divide_unsigned_helper(r, t1, t2, result); @@ -832,15 +855,15 @@ inline void modulus(packed_cpp_int& result, const packed_cpp_int t(a); + fixed_int t(a); t.negate(); divide_unsigned_helper(r, t, b, result); result.negate(); } } - else if(Signed && (b.data()[0] & packed_cpp_int::sign_bit_mask)) + else if(Signed && (b.data()[0] & fixed_int::sign_bit_mask)) { - packed_cpp_int t(b); + fixed_int t(b); t.negate(); divide_unsigned_helper(r, a, t, result); } @@ -850,100 +873,100 @@ inline void modulus(packed_cpp_int& result, const packed_cpp_int -inline void modulus(packed_cpp_int& result, const packed_cpp_int& b) +inline void modulus(fixed_int& result, const fixed_int& b) { // There is no in place divide: - packed_cpp_int a(result); + fixed_int a(result); modulus(result, a, b); } template -inline void bitwise_and(packed_cpp_int& result, const packed_cpp_int& o) +inline void bitwise_and(fixed_int& result, const fixed_int& o) { - for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] &= o.data()[i]; } template -inline void bitwise_or(packed_cpp_int& result, const packed_cpp_int& o) +inline void bitwise_or(fixed_int& result, const fixed_int& o) { - for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] |= o.data()[i]; } template -inline void bitwise_xor(packed_cpp_int& result, const packed_cpp_int& o) +inline void bitwise_xor(fixed_int& result, const fixed_int& o) { - for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] ^= o.data()[i]; - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void complement(packed_cpp_int& result, const packed_cpp_int& o) +inline void complement(fixed_int& result, const fixed_int& o) { - for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] = ~o.data()[i]; - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void left_shift(packed_cpp_int& result, boost::uintmax_t s) +inline void left_shift(fixed_int& result, boost::uintmax_t s) { if(s >= Bits) { result = static_cast(0); return; } - boost::uint32_t offset = static_cast(s / packed_cpp_int::limb_bits); - boost::uint32_t shift = static_cast(s % packed_cpp_int::limb_bits); + boost::uint32_t offset = static_cast(s / fixed_int::limb_bits); + boost::uint32_t shift = static_cast(s % fixed_int::limb_bits); unsigned i = 0; if(shift) { // This code only works when shift is non-zero, otherwise we invoke undefined behaviour! - for(; i + offset + 1 < packed_cpp_int::limb_count; ++i) + for(; i + offset + 1 < fixed_int::limb_count; ++i) { result.data()[i] = result.data()[i+offset] << shift; - result.data()[i] |= result.data()[i+offset+1] >> (packed_cpp_int::limb_bits - shift); + result.data()[i] |= result.data()[i+offset+1] >> (fixed_int::limb_bits - shift); } result.data()[i] = result.data()[i+offset] << shift; ++i; - for(; i < packed_cpp_int::limb_count; ++i) + for(; i < fixed_int::limb_count; ++i) result.data()[i] = 0; } else { - for(; i + offset < packed_cpp_int::limb_count; ++i) + for(; i + offset < fixed_int::limb_count; ++i) result.data()[i] = result.data()[i+offset]; - for(; i < packed_cpp_int::limb_count; ++i) + for(; i < fixed_int::limb_count; ++i) result.data()[i] = 0; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void right_shift(packed_cpp_int& result, boost::uintmax_t s) +inline void right_shift(fixed_int& result, boost::uintmax_t s) { - boost::uint32_t fill = (Signed && (result.data()[0] & packed_cpp_int::sign_bit_mask)) ? packed_cpp_int::max_limb_value : 0u; + boost::uint32_t fill = (Signed && (result.data()[0] & fixed_int::sign_bit_mask)) ? fixed_int::max_limb_value : 0u; if(s >= Bits) { - for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + for(unsigned i = 0; i < fixed_int::limb_count; ++i) result.data()[i] = fill; return; } - boost::uint32_t offset = static_cast(s / packed_cpp_int::limb_bits); - boost::uint32_t shift = static_cast(s % packed_cpp_int::limb_bits); - int i = packed_cpp_int::limb_count - 1; + boost::uint32_t offset = static_cast(s / fixed_int::limb_bits); + boost::uint32_t shift = static_cast(s % fixed_int::limb_bits); + int i = fixed_int::limb_count - 1; if(shift) { // This code only works for non-zero shift, otherwise we invoke undefined behaviour! - if(fill && (Bits % packed_cpp_int::limb_bits)) + if(fill && (Bits % fixed_int::limb_bits)) { // We need to sign extend the leftmost bits, otherwise we may shift zeros into the result: - result.data()[0] |= fill << (Bits % packed_cpp_int::limb_bits); + result.data()[0] |= fill << (Bits % fixed_int::limb_bits); } for(; i - offset > 0; --i) { result.data()[i] = result.data()[i-offset] >> shift; - result.data()[i] |= result.data()[i-offset-1] << (packed_cpp_int::limb_bits - shift); + result.data()[i] |= result.data()[i-offset-1] << (fixed_int::limb_bits - shift); } result.data()[i] = result.data()[i+offset] >> shift; - result.data()[i] |= fill << (packed_cpp_int::limb_bits - shift); + result.data()[i] |= fill << (fixed_int::limb_bits - shift); --i; for(; i >= 0; --i) result.data()[i] = fill; @@ -955,37 +978,37 @@ inline void right_shift(packed_cpp_int& result, boost::uintmax_t s for(; i >= 0; --i) result.data()[i] = fill; } - result.data()[0] &= packed_cpp_int::upper_limb_mask; + result.data()[0] &= fixed_int::upper_limb_mask; } template -inline typename enable_if, void>::type convert_to(R* result, const packed_cpp_int& backend) +inline typename enable_if, void>::type convert_to(R* result, const fixed_int& backend) { - unsigned shift = (packed_cpp_int::limb_count - 1) * packed_cpp_int::limb_bits; + unsigned shift = (fixed_int::limb_count - 1) * fixed_int::limb_bits; *result = 0; - for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + for(unsigned i = 0; i < fixed_int::limb_count; ++i) { *result += static_cast(backend.data()[i]) << shift; - shift -= packed_cpp_int::limb_bits; + shift -= fixed_int::limb_bits; } } template -inline typename enable_if, void>::type convert_to(R* result, const packed_cpp_int& backend) +inline typename enable_if, void>::type convert_to(R* result, const fixed_int& backend) { - unsigned shift = (packed_cpp_int::limb_count - 1) * packed_cpp_int::limb_bits; + unsigned shift = (fixed_int::limb_count - 1) * fixed_int::limb_bits; *result = 0; - for(unsigned i = 0; i < packed_cpp_int::limb_count; ++i) + for(unsigned i = 0; i < fixed_int::limb_count; ++i) { *result += static_cast(std::ldexp(static_cast(backend.data()[i]), shift)); - shift -= packed_cpp_int::limb_bits; + shift -= fixed_int::limb_bits; } } template -inline bool is_zero(const packed_cpp_int& val) +inline bool is_zero(const fixed_int& val) { - for(typename packed_cpp_int::data_type::size_type i = 0; i < packed_cpp_int::limb_count; ++i) + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) { if(val.data()[i]) return false; @@ -993,28 +1016,28 @@ inline bool is_zero(const packed_cpp_int& val) return true; } template -inline int get_sign(const packed_cpp_int& val) +inline int get_sign(const fixed_int& val) { return is_zero(val) ? 0 : 1; } template -inline int get_sign(const packed_cpp_int& val) +inline int get_sign(const fixed_int& val) { - return is_zero(val) ? 0 : val.data()[0] & packed_cpp_int::sign_bit_mask ? -1 : 1; + return is_zero(val) ? 0 : val.data()[0] & fixed_int::sign_bit_mask ? -1 : 1; } template -struct number_category > : public mpl::int_{}; +struct number_category > : public mpl::int_{}; -typedef mp_number > mp_uint64_t; -typedef mp_number > mp_uint128_t; -typedef mp_number > mp_uint256_t; -typedef mp_number > mp_uint512_t; +typedef mp_number > mp_uint64_t; +typedef mp_number > mp_uint128_t; +typedef mp_number > mp_uint256_t; +typedef mp_number > mp_uint512_t; -typedef mp_number > mp_int64_t; -typedef mp_number > mp_int128_t; -typedef mp_number > mp_int256_t; -typedef mp_number > mp_int512_t; +typedef mp_number > mp_int64_t; +typedef mp_number > mp_int128_t; +typedef mp_number > mp_int256_t; +typedef mp_number > mp_int512_t; }} // namespaces @@ -1022,16 +1045,16 @@ typedef mp_number > mp_int512_t; namespace std{ template -class numeric_limits > > +class numeric_limits > > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; struct initializer { initializer() { - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); } void do_nothing()const{} }; @@ -1096,8 +1119,8 @@ public: }; template -typename numeric_limits > >::initializer const - numeric_limits > >::init; +typename numeric_limits > >::initializer const + numeric_limits > >::init; } #endif diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 1d53c89c..1eecb5d7 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -12,14 +12,14 @@ #if !defined(TEST_MPF) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_PACKED_INT) + && !defined(TEST_FIXED_INT) # define TEST_MPF # define TEST_MPZ # define TEST_MPFR # define TEST_CPP_FLOAT # define TEST_MPQ # define TEST_TOMMATH -# define TEST_PACKED_INT +# define TEST_FIXED_INT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -44,8 +44,8 @@ #include #include #endif -#if defined(TEST_PACKED_INT) -#include +#if defined(TEST_FIXED_INT) +#include #endif #include @@ -347,12 +347,12 @@ int main() test("tommath_int", 512); test("tommath_int", 1024); #endif -#ifdef TEST_PACKED_INT +#ifdef TEST_FIXED_INT test("mp_int64_t", 64); test("mp_int128_t", 128); test("mp_int256_t", 256); test("mp_int512_t", 512); - test > >("mp_int1024_t", 1024); + test > >("mp_int1024_t", 1024); #endif #ifdef TEST_CPP_FLOAT test("cpp_float", 50); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index c06d453b..c74c7f1f 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -132,15 +132,15 @@ run test_arithmetic.cpp : # command line : # input files : # requirements - TEST_PACKED_INT1 - : test_arithmetic_packed_int1 ; + TEST_FIXED_INT1 + : test_arithmetic_fixed_int1 ; run test_arithmetic.cpp : # command line : # input files : # requirements - TEST_PACKED_INT2 - : test_arithmetic_packed_int2 ; + TEST_FIXED_INT2 + : test_arithmetic_fixed_int2 ; run test_numeric_limits.cpp : # command line @@ -585,17 +585,17 @@ run test_int_io.cpp : # command line : # input files : # requirements - TEST_PACKED_INT1 - : test_int_io_packed_int1 ; + TEST_FIXED_INT1 + : test_int_io_fixed_int1 ; run test_int_io.cpp : # command line : # input files : # requirements - TEST_PACKED_INT2 - : test_int_io_packed_int2 ; + TEST_FIXED_INT2 + : test_int_io_fixed_int2 ; -run packed_int_test.cpp gmp +run fixed_int_test.cpp gmp : # command line : # input files : # requirements diff --git a/test/packed_int_test.cpp b/test/packed_int_test.cpp index f895c142..02bed7cb 100644 --- a/test/packed_int_test.cpp +++ b/test/packed_int_test.cpp @@ -4,7 +4,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ // -// Compare arithmetic results using packed_cpp_int to GMP results. +// Compare arithmetic results using fixed_int to GMP results. // #ifdef _MSC_VER @@ -12,7 +12,7 @@ #endif #include -#include +#include #include #include #include "test.hpp" @@ -54,7 +54,7 @@ T generate_random(unsigned bits_wanted) int main() { using namespace boost::multiprecision; - typedef mp_number > packed_type; + typedef mp_number > packed_type; unsigned last_error_count = 0; for(int i = 0; i < 1000; ++i) { diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 5339152a..e4fd33ae 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -13,7 +13,7 @@ #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_PACKED_INT1) && !defined(TEST_PACKED_INT2) + && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -23,8 +23,8 @@ # define TEST_CPP_FLOAT # define TEST_MPQ # define TEST_TOMMATH -# define TEST_PACKED_INT1 -# define TEST_PACKED_INT2 +# define TEST_FIXED_INT1 +# define TEST_FIXED_INT2 #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -52,8 +52,8 @@ #include #include #endif -#if defined(TEST_PACKED_INT1) || defined(TEST_PACKED_INT2) -#include +#if defined(TEST_FIXED_INT1) || defined(TEST_FIXED_INT2) +#include #endif #if defined(TEST_TOMMATH_BOOST_RATIONAL) || defined(TEST_MPZ_BOOST_RATIONAL) #include @@ -999,13 +999,13 @@ int main() #ifdef TEST_MPZ_BOOST_RATIONAL test >(); #endif -#ifdef TEST_PACKED_INT1 +#ifdef TEST_FIXED_INT1 test(); test(); test(); - test > >(); + test > >(); #endif -#ifdef TEST_PACKED_INT2 +#ifdef TEST_FIXED_INT2 // // Can't test 64-bit signed ints - they don't have enough bits // to interoperate with uint64_t without loss: @@ -1013,7 +1013,7 @@ int main() //test(); test(); test(); - test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index ffd7d063..d091521d 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -9,11 +9,11 @@ # define _SCL_SECURE_NO_WARNINGS #endif -#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_PACKED_INT1) && !defined(TEST_PACKED_INT2) +#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) # define TEST_TOMMATH # define TEST_MPZ -# define TEST_PACKED_INT1 -# define TEST_PACKED_INT2 +# define TEST_FIXED_INT1 +# define TEST_FIXED_INT2 #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -30,8 +30,8 @@ #if defined(TEST_TOMMATH) #include #endif -#if defined(TEST_PACKED_INT1) || defined(TEST_PACKED_INT2) -#include +#if defined(TEST_FIXED_INT1) || defined(TEST_FIXED_INT2) +#include #endif #include @@ -123,19 +123,19 @@ int main() #ifdef TEST_TOMMATH test_round_trip(); #endif -#ifdef TEST_PACKED_INT1 +#ifdef TEST_FIXED_INT1 test_round_trip(); test_round_trip(); test_round_trip(); - test_round_trip > >(); - test_round_trip > >(); + test_round_trip > >(); + test_round_trip > >(); #endif -#ifdef TEST_PACKED_INT2 +#ifdef TEST_FIXED_INT2 test_round_trip(); test_round_trip(); test_round_trip(); - test_round_trip > >(); - test_round_trip > >(); + test_round_trip > >(); + test_round_trip > >(); #endif return boost::report_errors(); } From 036dc2bacc516253e17136b0d37c1f9d4c3eb136 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Jan 2012 12:06:27 +0000 Subject: [PATCH 097/256] Rename files. [SVN r76429] --- .../boost/multiprecision/{packed_cpp_int.hpp => fixed_int.hpp} | 0 test/Jamfile.v2 | 2 +- test/{packed_int_test.cpp => test_fixed_int.cpp} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename include/boost/multiprecision/{packed_cpp_int.hpp => fixed_int.hpp} (100%) rename test/{packed_int_test.cpp => test_fixed_int.cpp} (100%) diff --git a/include/boost/multiprecision/packed_cpp_int.hpp b/include/boost/multiprecision/fixed_int.hpp similarity index 100% rename from include/boost/multiprecision/packed_cpp_int.hpp rename to include/boost/multiprecision/fixed_int.hpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index c74c7f1f..04133118 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -595,7 +595,7 @@ run test_int_io.cpp TEST_FIXED_INT2 : test_int_io_fixed_int2 ; -run fixed_int_test.cpp gmp +run test_fixed_int.cpp gmp : # command line : # input files : # requirements diff --git a/test/packed_int_test.cpp b/test/test_fixed_int.cpp similarity index 100% rename from test/packed_int_test.cpp rename to test/test_fixed_int.cpp From e5c5802d9f2c32ec3231be3c71c0a72ac72cbdc4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Jan 2012 12:29:52 +0000 Subject: [PATCH 098/256] Tidy up type usage. [SVN r76431] --- include/boost/multiprecision/fixed_int.hpp | 189 +++++++++++---------- 1 file changed, 97 insertions(+), 92 deletions(-) diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 0bbc2fa7..4a4f8643 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -17,14 +17,19 @@ namespace boost{ namespace multiprecision{ +typedef boost::uint32_t limb_type; +typedef boost::int32_t signed_limb_type; +typedef boost::uint64_t double_limb_type; +typedef boost::int64_t signed_double_limb_type; + template struct fixed_int { - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; typedef mpl::list float_types; - typedef boost::uint32_t limb_type; + typedef limb_type limb_type; BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(unsigned, limb_count = Bits / limb_bits + (Bits % limb_bits ? 1 : 0)); BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); @@ -46,7 +51,7 @@ struct fixed_int m_value = o.m_value; return *this; } - fixed_int& operator = (boost::uint32_t i) + fixed_int& operator = (limb_type i) { m_value[limb_count - 1] = i; for(int j = limb_count - 2; j >= 0; --j) @@ -54,7 +59,7 @@ struct fixed_int m_value[0] &= fixed_int::upper_limb_mask; return *this; } - fixed_int& operator = (boost::int32_t i) + fixed_int& operator = (signed_limb_type i) { m_value[limb_count - 1] = i; // sign extend: @@ -63,34 +68,34 @@ struct fixed_int m_value[0] &= fixed_int::upper_limb_mask; return *this; } - fixed_int& operator = (boost::uintmax_t i) + fixed_int& operator = (double_limb_type i) { BOOST_STATIC_ASSERT(sizeof(i) % sizeof(limb_type) == 0); - boost::uintmax_t mask = max_limb_value; + double_limb_type mask = max_limb_value; unsigned shift = 0; - for(int j = limb_count - 1; j >= static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)); --j) + for(int j = limb_count - 1; j >= static_cast(limb_count) - static_cast(sizeof(signed_double_limb_type) / sizeof(limb_type)); --j) { m_value[j] = static_cast((i & mask) >> shift); mask <<= limb_bits; shift += limb_bits; } - for(int j = static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)) - 1; j >= 0; --j) + for(int j = static_cast(limb_count) - static_cast(sizeof(signed_double_limb_type) / sizeof(limb_type)) - 1; j >= 0; --j) m_value[j] = 0; m_value[0] &= fixed_int::upper_limb_mask; return *this; } - fixed_int& operator = (boost::intmax_t i) + fixed_int& operator = (signed_double_limb_type i) { BOOST_STATIC_ASSERT(sizeof(i) % sizeof(limb_type) == 0); - boost::uintmax_t mask = max_limb_value; + double_limb_type mask = max_limb_value; unsigned shift = 0; - for(int j = limb_count - 1; j >= static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)); --j) + for(int j = limb_count - 1; j >= static_cast(limb_count) - static_cast(sizeof(signed_double_limb_type) / sizeof(limb_type)); --j) { m_value[j] = static_cast((i & mask) >> shift); mask <<= limb_bits; shift += limb_bits; } - for(int j = static_cast(limb_count) - static_cast(sizeof(boost::intmax_t) / sizeof(limb_type)) - 1; j >= 0; --j) + for(int j = static_cast(limb_count) - static_cast(sizeof(signed_double_limb_type) / sizeof(limb_type)) - 1; j >= 0; --j) m_value[j] = i < 0 ? max_limb_value : 0; m_value[0] &= fixed_int::upper_limb_mask; return *this; @@ -103,11 +108,11 @@ struct fixed_int using std::floor; if (a == 0) { - return *this = static_cast(0u); + return *this = static_cast(0u); } if (a == 1) { - return *this = static_cast(1u); + return *this = static_cast(1u); } BOOST_ASSERT(!(boost::math::isinf)(a)); @@ -115,11 +120,11 @@ struct fixed_int int e; long double f, term; - *this = static_cast(0u); + *this = static_cast(0u); f = frexp(a, &e); - static const boost::uint32_t shift = std::numeric_limits::digits; + static const limb_type shift = std::numeric_limits::digits; while(f) { @@ -129,9 +134,9 @@ struct fixed_int e -= shift; left_shift(*this, shift); if(term > 0) - add(*this, static_cast(term)); + add(*this, static_cast(term)); else - subtract(*this, static_cast(-term)); + subtract(*this, static_cast(-term)); f -= term; } if(e > 0) @@ -144,7 +149,7 @@ struct fixed_int fixed_int& operator = (const char* s) { std::size_t n = s ? std::strlen(s) : 0; - *this = static_cast(0u); + *this = static_cast(0u); unsigned radix = 10; bool isneg = false; if(n && (*s == '-')) @@ -172,7 +177,7 @@ struct fixed_int if(radix == 8 || radix == 16) { unsigned shift = radix == 8 ? 3 : 4; - boost::uint32_t val = max_limb_value; + limb_type val = max_limb_value; while(*s) { left_shift(*this, shift); @@ -199,8 +204,8 @@ struct fixed_int while(*s) { // TODO: this implementation is brain dead, Fix Me! - multiply(*this, static_cast(10)); - boost::uint32_t val; + multiply(*this, static_cast(10)); + limb_type val; if(*s >= '0' && *s <= '9') val = *s - '0'; else @@ -230,8 +235,8 @@ struct fixed_int if(base == 8 || base == 16) { - boost::uint32_t shift = base == 8 ? 3 : 4; - boost::uint32_t mask = static_cast((1u << shift) - 1); + limb_type shift = base == 8 ? 3 : 4; + limb_type mask = static_cast((1u << shift) - 1); fixed_int t(*this); for(unsigned i = 0; i < Bits / shift; ++i) { @@ -243,7 +248,7 @@ struct fixed_int } if(Bits % shift) { - mask = static_cast((1u << (Bits % shift)) - 1); + mask = static_cast((1u << (Bits % shift)) - 1); char c = '0' + (t.data()[limb_count-1] & mask); if(c > '9') c += 'A' - '9'; @@ -266,7 +271,7 @@ struct fixed_int { fixed_int t(*this); fixed_int ten, r; - ten = boost::uint32_t(1000000000); + ten = limb_type(1000000000); bool neg = false; if(Signed && (t.data()[0] & sign_bit_mask)) { @@ -284,7 +289,7 @@ struct fixed_int fixed_int t2; divide_unsigned_helper(t2, t, ten, r); t = t2; - boost::uint32_t v = r.data()[limb_count - 1]; + limb_type v = r.data()[limb_count - 1]; for(unsigned i = 0; i < 9; ++i) { char c = '0' + v % 10; @@ -306,10 +311,10 @@ struct fixed_int } void negate() { - boost::uintmax_t carry = 1; + double_limb_type carry = 1; for(int i = fixed_int::limb_count - 1; i >= 0; --i) { - carry += static_cast(~m_value[i]); + carry += static_cast(~m_value[i]); m_value[i] = static_cast(carry); carry >>= limb_bits; } @@ -356,75 +361,75 @@ inline void add(fixed_int& result, const fixed_int& { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: - boost::uintmax_t carry = 0; + double_limb_type carry = 0; for(int i = fixed_int::limb_count - 1; i >= 0; --i) { - carry += static_cast(a.data()[i]) + static_cast(b.data()[i]); + carry += static_cast(a.data()[i]) + static_cast(b.data()[i]); result.data()[i] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void add(fixed_int& result, const boost::uint32_t& o) +inline void add(fixed_int& result, const limb_type& o) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: - boost::uintmax_t carry = o; + double_limb_type carry = o; for(int i = fixed_int::limb_count - 1; carry && i >= 0; --i) { - carry += static_cast(result.data()[i]); + carry += static_cast(result.data()[i]); result.data()[i] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void add(fixed_int& result, const boost::int32_t& o) +inline void add(fixed_int& result, const signed_limb_type& o) { if(o < 0) - subtract(result, static_cast(-o)); + subtract(result, static_cast(-o)); else if(o > 0) - add(result, static_cast(o)); + add(result, static_cast(o)); } template -inline void subtract(fixed_int& result, const boost::uint32_t& o) +inline void subtract(fixed_int& result, const limb_type& o) { // Subtract using modular arithmatic. // This is the same code as for addition, with the twist that we negate o "on the fly": - boost::uintmax_t carry = static_cast(result.data()[fixed_int::limb_count - 1]) - + 1uLL + static_cast(~o); + double_limb_type carry = static_cast(result.data()[fixed_int::limb_count - 1]) + + 1uLL + static_cast(~o); result.data()[fixed_int::limb_count - 1] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; for(int i = fixed_int::limb_count - 2; i >= 0; --i) { - carry += static_cast(result.data()[i]) + 0xFFFFFFFF; + carry += static_cast(result.data()[i]) + 0xFFFFFFFF; result.data()[i] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void subtract(fixed_int& result, const boost::int32_t& o) +inline void subtract(fixed_int& result, const signed_limb_type& o) { if(o) { if(o < 0) - add(result, static_cast(-o)); + add(result, static_cast(-o)); else - subtract(result, static_cast(o)); + subtract(result, static_cast(o)); } } template inline void increment(fixed_int& result) { - static const boost::uint32_t one = 1; + static const limb_type one = 1; add(result, one); } template inline void decrement(fixed_int& result) { - static const boost::uint32_t one = 1; + static const limb_type one = 1; subtract(result, one); } template @@ -437,10 +442,10 @@ inline void subtract(fixed_int& result, const fixed_int::limb_count - 1; i >= 0; --i) { - carry += static_cast(a.data()[i]) + static_cast(~b.data()[i]); + carry += static_cast(a.data()[i]) + static_cast(~b.data()[i]); result.data()[i] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; } @@ -463,14 +468,14 @@ inline void multiply(fixed_int& result, const fixed_int::limb_count; ++i) result.data()[i] = 0; for(int i = fixed_int::limb_count - 1; i >= 0; --i) { for(int j = fixed_int::limb_count - 1; j >= static_cast(fixed_int::limb_count) - i - 1; --j) { - carry += static_cast(a.data()[i]) * static_cast(b.data()[j]); + carry += static_cast(a.data()[i]) * static_cast(b.data()[j]); carry += result.data()[i + j + 1 - fixed_int::limb_count]; result.data()[i + j + 1 - fixed_int::limb_count] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; @@ -487,40 +492,40 @@ inline void multiply(fixed_int& result, const fixed_int -inline void multiply(fixed_int& result, const boost::uint32_t& a) +inline void multiply(fixed_int& result, const limb_type& a) { - boost::uintmax_t carry = 0; + double_limb_type carry = 0; for(int i = fixed_int::limb_count - 1; i >= 0; --i) { - carry += static_cast(result.data()[i]) * static_cast(a); + carry += static_cast(result.data()[i]) * static_cast(a); result.data()[i] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void multiply(fixed_int& result, const boost::int32_t& a) +inline void multiply(fixed_int& result, const signed_limb_type& a) { if(a > 0) - multiply(result, static_cast(a)); + multiply(result, static_cast(a)); else { - multiply(result, static_cast(-a)); + multiply(result, static_cast(-a)); result.negate(); } } /* template -boost::uint32_t bitcount(const fixed_int& a) +limb_type bitcount(const fixed_int& a) { // returns the location of the MSB in a: - boost::uint32_t i = 0; + limb_type i = 0; for(; (i < fixed_int::limb_count) && (a.data()[i] == 0); ++i){} - boost::uint32_t count = (fixed_int::limb_count - i) * fixed_int::limb_bits; + limb_type count = (fixed_int::limb_count - i) * fixed_int::limb_bits; if(!count) return count; // no bits are set, value is zero - boost::uint32_t mask = static_cast(1u) << (fixed_int::limb_bits - 1); + limb_type mask = static_cast(1u) << (fixed_int::limb_bits - 1); while((a.data()[i] & mask) == 0) { --count; @@ -571,25 +576,25 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int(0u); + result = static_cast(0u); if(x.compare(y) < 0) { return; // We already have the answer: zero. } - boost::uint32_t n = bitcount(x) - bitcount(y); + limb_type n = bitcount(x) - bitcount(y); if(n == 0) { // result is exactly 1: - result = static_cast(1u); + result = static_cast(1u); subtract(r, y); return; } // Together mask_index and mask give us the bit we may be about to set in the result: - boost::uint32_t mask_index = fixed_int::limb_count - 1 - n / fixed_int::limb_bits; - boost::uint32_t mask = static_cast(1u) << n % fixed_int::limb_bits; + limb_type mask_index = fixed_int::limb_count - 1 - n / fixed_int::limb_bits; + limb_type mask = static_cast(1u) << n % fixed_int::limb_bits; fixed_int t(y); left_shift(t, n); while(mask_index < fixed_int::limb_count) @@ -606,7 +611,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int>= 1)) { ++mask_index; - mask = static_cast(1u) << (fixed_int::limb_bits - 1); + mask = static_cast(1u) << (fixed_int::limb_bits - 1); } } BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed @@ -673,7 +678,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int(0u); + result = static_cast(0u); if(x.compare(y) < 0) { return; // We already have the answer: zero. @@ -684,10 +689,10 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int& result, const fixed_int::limb_count - 2) { - unsigned long long a, b; - a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; + double_limb_type a, b; + a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; b = y_order < fixed_int::limb_count - 1 ? - (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] + (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] : y.data()[y_order]; result = a / b; r = a % b; @@ -725,26 +730,26 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1)) { - unsigned long long a, b, v; - a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; + double_limb_type a, b, v; + a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; b = y.data()[y_order]; v = a / b; if(v > fixed_int::max_limb_value) guess = 1; else { - guess = static_cast(v); + guess = static_cast(v); ++r_order; } } else { - unsigned long long a, b, v; - a = (r_order < fixed_int::limb_count - 1) ? (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1] : r.data()[r_order]; - b = (y_order < fixed_int::limb_count - 1) ? (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] : (static_cast(y.data()[y_order]) << fixed_int::limb_bits); + double_limb_type a, b, v; + a = (r_order < fixed_int::limb_count - 1) ? (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1] : r.data()[r_order]; + b = (y_order < fixed_int::limb_count - 1) ? (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] : (static_cast(y.data()[y_order]) << fixed_int::limb_bits); v = a / b; guess = static_cast::limb_type>(v); //guess = r.data()[r_order] / y.data()[y_order]; @@ -752,8 +757,8 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1 - shift] = guess; if(r_neg) subtract(result, t); @@ -763,12 +768,12 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1; i > fixed_int::limb_count - shift - 1; --i) t.data()[i] = 0; for(int i = fixed_int::limb_count - 1; i >= static_cast(shift); --i) { - carry += static_cast(y.data()[i]) * static_cast(guess); + carry += static_cast(y.data()[i]) * static_cast(guess); t.data()[i - shift] = static_cast::limb_type>(carry); carry >>= fixed_int::limb_bits; } @@ -907,15 +912,15 @@ inline void complement(fixed_int& result, const fixed_int::upper_limb_mask; } template -inline void left_shift(fixed_int& result, boost::uintmax_t s) +inline void left_shift(fixed_int& result, double_limb_type s) { if(s >= Bits) { - result = static_cast(0); + result = static_cast(0); return; } - boost::uint32_t offset = static_cast(s / fixed_int::limb_bits); - boost::uint32_t shift = static_cast(s % fixed_int::limb_bits); + limb_type offset = static_cast(s / fixed_int::limb_bits); + limb_type shift = static_cast(s % fixed_int::limb_bits); unsigned i = 0; if(shift) { @@ -940,17 +945,17 @@ inline void left_shift(fixed_int& result, boost::uintmax_t s) result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void right_shift(fixed_int& result, boost::uintmax_t s) +inline void right_shift(fixed_int& result, double_limb_type s) { - boost::uint32_t fill = (Signed && (result.data()[0] & fixed_int::sign_bit_mask)) ? fixed_int::max_limb_value : 0u; + limb_type fill = (Signed && (result.data()[0] & fixed_int::sign_bit_mask)) ? fixed_int::max_limb_value : 0u; if(s >= Bits) { for(unsigned i = 0; i < fixed_int::limb_count; ++i) result.data()[i] = fill; return; } - boost::uint32_t offset = static_cast(s / fixed_int::limb_bits); - boost::uint32_t shift = static_cast(s % fixed_int::limb_bits); + limb_type offset = static_cast(s / fixed_int::limb_bits); + limb_type shift = static_cast(s % fixed_int::limb_bits); int i = fixed_int::limb_count - 1; if(shift) { From a97c3bd8962fd43f78d8b395a5d01447513ce1d6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Jan 2012 13:56:22 +0000 Subject: [PATCH 099/256] Update docs to include fixed_int.hpp. Remove 64-bit versions of fixed_int typedefs - better to use boost::int64_t instead. [SVN r76433] --- doc/html/boost_multiprecision/intro.html | 2 +- doc/html/boost_multiprecision/map.html | 2 +- doc/html/boost_multiprecision/map/hist.html | 2 +- doc/html/boost_multiprecision/map/todo.html | 2 +- doc/html/boost_multiprecision/ref.html | 2 +- .../boost_multiprecision/ref/backendconc.html | 2 +- .../boost_multiprecision/ref/mp_number.html | 2 +- doc/html/boost_multiprecision/tut.html | 2 +- doc/html/boost_multiprecision/tut/ints.html | 87 ++++++++++++++++++- .../boost_multiprecision/tut/rational.html | 2 +- doc/html/boost_multiprecision/tut/reals.html | 2 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 29 +++++++ example/fixed_int_snips.cpp | 34 ++++++++ include/boost/multiprecision/fixed_int.hpp | 2 - performance/performance_test.cpp | 2 +- test/test_arithmetic.cpp | 2 +- test/test_int_io.cpp | 4 +- 18 files changed, 164 insertions(+), 18 deletions(-) create mode 100644 example/fixed_int_snips.cpp diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 90451449..fadcea1c 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html index 0587898f..d528688d 100644 --- a/doc/html/boost_multiprecision/map.html +++ b/doc/html/boost_multiprecision/map.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index 4701f08a..8c480119 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -

    + diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index fadf395e..b780d2da 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -12,7 +12,7 @@
    PrevUpHome
    -
    +
    diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index 4634199e..d909f999 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index c6e86a15..3d7a2998 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index be7d53ba..af55cb6a 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index 4c86cbe3..896c5a8d 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index c1612d16..6439bd4b 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    @@ -126,6 +126,38 @@

    + + + + + + + +
    +

    + fixed_int +

    +
    +

    + boost/multiprecision/fixed_int.hpp +

    +
    +

    + 2 +

    +
    +

    + None +

    +
    +

    + Boost licenced fixed precision modular arithmetic integer. +

    +
    +

    + Slower than GMP. +

    +

    @@ -286,6 +318,59 @@ std::cout << e.what() << std::endl; } +
    +

    +

    +
    + + fixed_int +
    +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits, bool Signed>
    +class fixed_int;
    +
    +typedef mp_number<fixed_int<128, false> > mp_uint128_t;
    +typedef mp_number<fixed_int<256, false> > mp_uint256_t;
    +typedef mp_number<fixed_int<512, false> > mp_uint512_t;
    +
    +typedef mp_number<fixed_int<128, true> > mp_int128_t;
    +typedef mp_number<fixed_int<256, true> > mp_int256_t;
    +typedef mp_number<fixed_int<512, true> > mp_int512_t;
    +
    +}} // namespaces
    +
    +

    + The fixed_int backend is + used via one of the typedefs boost::multiprecision::mp_uint128_t, + boost::multiprecision::mp_uint256_t, boost::multiprecision::mp_uint512_t, + boost::multiprecision::mp_int128_t, boost::multiprecision::mp_int256_t + or boost::multiprecision::mp_int512_t. It provides both signed and + unsigned integer types with a fixed precision and modular arithmetic with + a 2's complement representation for negative values. In other words it's + designed to work just like a typical built in integer type, but with larger + precision. +

    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/fixed_int.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mp_int128_t v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 20; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 20!
    +v = -v;
    +std::cout << std::hex << v << std::endl; // prints 2's complement representation
    +
     

    diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 8fe67803..ff68aa78 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html index 5fd1090c..9451d5f0 100644 --- a/doc/html/boost_multiprecision/tut/reals.html +++ b/doc/html/boost_multiprecision/tut/reals.html @@ -13,7 +13,7 @@
    PrevUpHomeNext
    -
    +
    diff --git a/doc/html/index.html b/doc/html/index.html index 35e62118..5bccd937 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -48,7 +48,7 @@
    - +

    Last revised: December 24, 2011 at 13:13:53 GMT

    Last revised: January 12, 2012 at 13:44:32 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index b2107616..290e8f42 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -22,6 +22,7 @@ [import ../example/mpfr_snips.cpp] [import ../example/cpp_float_snips.cpp] [import ../example/tommath_snips.cpp] +[import ../example/fixed_int_snips.cpp] [section:intro Introduction] @@ -201,6 +202,7 @@ The following backends provide integer arithmetic: [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_int`][boost/multiprecision/gmp.hpp][2][GMP][Very fast and efficient backend.][Dependency on GNU licenced GMP library.]] [[`mp_int`][boost/multiprecision/tommath.hpp][2][libtommath][Public domain backend with no licence restrictions.][Slower than GMP.]] +[[`fixed_int`][boost/multiprecision/fixed_int.hpp][2][None][Boost licenced fixed precision modular arithmetic integer.][Slower than GMP.]] ] [h4 gmp_int] @@ -257,6 +259,33 @@ as a result performing formatted output on this type when the argument is negati [tommath_eg] +[h4 fixed_int] + + namespace boost{ namespace multiprecision{ + + template + class fixed_int; + + typedef mp_number > mp_uint128_t; + typedef mp_number > mp_uint256_t; + typedef mp_number > mp_uint512_t; + + typedef mp_number > mp_int128_t; + typedef mp_number > mp_int256_t; + typedef mp_number > mp_int512_t; + + }} // namespaces + +The `fixed_int` backend is used via one of the typedefs `boost::multiprecision::mp_uint128_t`, `boost::multiprecision::mp_uint256_t`, +`boost::multiprecision::mp_uint512_t`, `boost::multiprecision::mp_int128_t`, `boost::multiprecision::mp_int256_t` +or `boost::multiprecision::mp_int512_t`. It provides both signed and unsigned integer types with a fixed precision +and modular arithmetic with a 2's complement representation for negative values. In other words it's designed to work just +like a typical built in integer type, but with larger precision. + +[h5 Example:] + +[fixed_int_eg] + [endsect] [section:reals Real Numbers] diff --git a/example/fixed_int_snips.cpp b/example/fixed_int_snips.cpp new file mode 100644 index 00000000..e076b60f --- /dev/null +++ b/example/fixed_int_snips.cpp @@ -0,0 +1,34 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include + +void t1() +{ + //[fixed_int_eg + //=#include + + using namespace boost::multiprecision; + + mp_int128_t v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 20; ++i) + v *= i; + + std::cout << v << std::endl; // prints 20! + v = -v; + std::cout << std::hex << v << std::endl; // prints 2's complement representation + + //] +} + +int main() +{ + t1(); + return 0; +} + diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 4a4f8643..a99f8570 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -1034,12 +1034,10 @@ inline int get_sign(const fixed_int& val) template struct number_category > : public mpl::int_{}; -typedef mp_number > mp_uint64_t; typedef mp_number > mp_uint128_t; typedef mp_number > mp_uint256_t; typedef mp_number > mp_uint512_t; -typedef mp_number > mp_int64_t; typedef mp_number > mp_int128_t; typedef mp_number > mp_int256_t; typedef mp_number > mp_int512_t; diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 1eecb5d7..ee1eb0ea 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -348,7 +348,7 @@ int main() test("tommath_int", 1024); #endif #ifdef TEST_FIXED_INT - test("mp_int64_t", 64); + test > >("mp_int64_t", 64); test("mp_int128_t", 128); test("mp_int256_t", 256); test("mp_int512_t", 512); diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index e4fd33ae..282baac6 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1000,7 +1000,7 @@ int main() test >(); #endif #ifdef TEST_FIXED_INT1 - test(); + test > >(); test(); test(); test > >(); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index d091521d..1078ac8e 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -124,14 +124,14 @@ int main() test_round_trip(); #endif #ifdef TEST_FIXED_INT1 - test_round_trip(); + test_round_trip > >(); test_round_trip(); test_round_trip(); test_round_trip > >(); test_round_trip > >(); #endif #ifdef TEST_FIXED_INT2 - test_round_trip(); + test_round_trip > >(); test_round_trip(); test_round_trip(); test_round_trip > >(); From a7d480c438af23d20fc8f8a467434414e745eb72 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Jan 2012 17:03:27 +0000 Subject: [PATCH 100/256] Optimize increment and decrement. [SVN r76434] --- include/boost/multiprecision/fixed_int.hpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index a99f8570..c5eebfa4 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -424,13 +424,19 @@ template inline void increment(fixed_int& result) { static const limb_type one = 1; - add(result, one); + if(result.data().elems[fixed_int::limb_count - 1] < fixed_int::max_limb_value) + ++result.data().elems[fixed_int::limb_count - 1]; + else + add(result, one); } template inline void decrement(fixed_int& result) { static const limb_type one = 1; - subtract(result, one); + if(result.data().elems[fixed_int::limb_count - 1]) + --result.data().elems[fixed_int::limb_count - 1]; + else + subtract(result, one); } template inline void subtract(fixed_int& result, const fixed_int& o) @@ -720,6 +726,8 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int last_r; + //bool last_neg; do { // @@ -731,6 +739,8 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1)) { double_limb_type a, b, v; From c98f15f30d5ba968fef823d27223ac845d21c986 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 14 Jan 2012 13:24:52 +0000 Subject: [PATCH 101/256] Update docs with performance results. Add component based initialization of rationals. [SVN r76486] --- doc/html/boost_multiprecision/map.html | 6 +- doc/html/boost_multiprecision/map/todo.html | 3 - doc/html/boost_multiprecision/perf.html | 41 + .../perf/float_performance.html | 757 +++++++ .../perf/integer_performance.html | 1909 +++++++++++++++++ .../boost_multiprecision/perf/realworld.html | 276 +++ .../boost_multiprecision/ref/backendconc.html | 83 +- .../boost_multiprecision/ref/mp_number.html | 58 +- .../boost_multiprecision/tut/rational.html | 6 + doc/html/index.html | 10 +- doc/multiprecision.qbk | 234 +- example/gmp_snips.cpp | 3 + example/tommath_snips.cpp | 3 + .../multiprecision/detail/default_ops.hpp | 15 + .../multiprecision/detail/mp_number_base.hpp | 7 + include/boost/multiprecision/gmp.hpp | 23 + include/boost/multiprecision/mp_number.hpp | 42 + .../boost/multiprecision/rational_adapter.hpp | 21 +- performance/performance_test-msvc-10.log | 447 ++++ performance/performance_test.cpp | 219 +- performance/sf_performance-msvc-10.log | 60 +- 21 files changed, 4155 insertions(+), 68 deletions(-) create mode 100644 doc/html/boost_multiprecision/perf.html create mode 100644 doc/html/boost_multiprecision/perf/float_performance.html create mode 100644 doc/html/boost_multiprecision/perf/integer_performance.html create mode 100644 doc/html/boost_multiprecision/perf/realworld.html create mode 100644 performance/performance_test-msvc-10.log diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html index d528688d..891900e9 100644 --- a/doc/html/boost_multiprecision/map.html +++ b/doc/html/boost_multiprecision/map.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -32,7 +32,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index b780d2da..3f92de36 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -27,9 +27,6 @@
  • Add an adapter backend for complex number types.
  • -
  • - Adapt libtommath code to make an all C++ fixed precision integer type. -
  • diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html new file mode 100644 index 00000000..e62c527a --- /dev/null +++ b/doc/html/boost_multiprecision/perf.html @@ -0,0 +1,41 @@ + + + +Performance Comparison + + + + + + + + +
    +PrevUpHomeNext +
    + +
    + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html new file mode 100644 index 00000000..c746b939 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/float_performance.html @@ -0,0 +1,757 @@ + + + +Float Algorithm Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticsm, and real-world + peformance may vary widely depending upon the specifics of the program. In + each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on + 32-bit Windows Vista machine. +

    +
    +

    Table 1.8. Operator *

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1.0826 (0.287216s) +

    +
    +

    + 1.48086 (0.586363s) +

    +
    +

    + 1.57545 (5.05269s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.265302s) +

    +
    +

    + 1 (0.395962s) +

    +
    +

    + 1 (3.20714s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.24249 (0.329636s) +

    +
    +

    + 1.15432 (0.457067s) +

    +
    +

    + 1.16182 (3.72612s) +

    +
    +
    +
    +

    Table 1.9. Operator +

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1 (0.0242151s) +

    +
    +

    + 1 (0.029252s) +

    +
    +

    + 1 (0.0584099s) +

    +
    +

    + gmp_float +

    +
    +

    + 4.55194 (0.110226s) +

    +
    +

    + 3.67516 (0.107506s) +

    +
    +

    + 2.42489 (0.141638s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.45362 (0.0594147s) +

    +
    +

    + 2.18552 (0.0639309s) +

    +
    +

    + 1.32099 (0.0771588s) +

    +
    +
    +
    +

    Table 1.10. Operator +(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1.51995 (0.0484155s) +

    +
    +

    + 1.78781 (0.0611055s) +

    +
    +

    + 1.8309 (0.104123s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0318533s) +

    +
    +

    + 1 (0.0341789s) +

    +
    +

    + 1 (0.0568699s) +

    +
    +

    + mpfr_float +

    +
    +

    + 3.39055 (0.108s) +

    +
    +

    + 3.30142 (0.112839s) +

    +
    +

    + 2.05293 (0.11675s) +

    +
    +
    +
    +

    Table 1.11. Operator -

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1 (0.0261498s) +

    +
    +

    + 1 (0.030946s) +

    +
    +

    + 1 (0.0606388s) +

    +
    +

    + gmp_float +

    +
    +

    + 4.48753 (0.117348s) +

    +
    +

    + 3.75823 (0.116302s) +

    +
    +

    + 2.4823 (0.150524s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.96057 (0.0774183s) +

    +
    +

    + 2.61897 (0.0810465s) +

    +
    +

    + 1.56236 (0.0947396s) +

    +
    +
    +
    +

    Table 1.12. Operator -(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1 (0.0567601s) +

    +
    +

    + 1 (0.0626685s) +

    +
    +

    + 1 (0.111692s) +

    +
    +

    + gmp_float +

    +
    +

    + 2.27932 (0.129374s) +

    +
    +

    + 2.04821 (0.128358s) +

    +
    +

    + 1.48297 (0.165635s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.43199 (0.13804s) +

    +
    +

    + 2.32131 (0.145473s) +

    +
    +

    + 1.38152 (0.154304s) +

    +
    +
    +
    +

    Table 1.13. Operator /

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 3.2662 (3.98153s) +

    +
    +

    + 5.07021 (8.11948s) +

    +
    +

    + 6.78872 (53.6099s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (1.21901s) +

    +
    +

    + 1 (1.60141s) +

    +
    +

    + 1 (7.89691s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.33238 (1.62419s) +

    +
    +

    + 1.39529 (2.23443s) +

    +
    +

    + 1.70882 (13.4944s) +

    +
    +
    +
    +

    Table 1.14. Operator str

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1.46076 (0.0192656s) +

    +
    +

    + 1.59438 (0.0320398s) +

    +
    +

    + 1 (0.134302s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0131888s) +

    +
    +

    + 1 (0.0200954s) +

    +
    +

    + 1.01007 (0.135655s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.19174 (0.0289065s) +

    +
    +

    + 1.86101 (0.0373977s) +

    +
    +

    + 1.15842 (0.155578s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html new file mode 100644 index 00000000..fdd2c062 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -0,0 +1,1909 @@ + + + +Integer Algorithm Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticsm, and real-world + peformance may vary widely depending upon the specifics of the program. In + each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on + 32-bit Windows Vista machine. +

    +
    +

    Table 1.15. Operator +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.0031173s) +

    +
    +

    + 1 (0.00696555s) +

    +
    +

    + 1 (0.0163707s) +

    +
    +

    + 1 (0.0314806s) +

    +
    +

    + 1 (0.0596158s) +

    +
    +

    + gmp_int +

    +
    +

    + 12.7096 (0.0396194s) +

    +
    +

    + 5.89178 (0.0410395s) +

    +
    +

    + 2.66402 (0.0436119s) +

    +
    +

    + 1.59356 (0.0501664s) +

    +
    +

    + 1.11155 (0.0662662s) +

    +
    +

    + tommath_int +

    +
    +

    + 6.14357 (0.0191513s) +

    +
    +

    + 3.16177 (0.0220235s) +

    +
    +

    + 1.85441 (0.030358s) +

    +
    +

    + 1.45895 (0.0459287s) +

    +
    +

    + 1.26576 (0.0754591s) +

    +
    +
    +
    +

    Table 1.16. Operator +(int)

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00329336s) +

    +
    +

    + 1 (0.00370718s) +

    +
    +

    + 1 (0.00995385s) +

    +
    +

    + 1 (0.0117467s) +

    +
    +

    + 1 (0.0233483s) +

    +
    +

    + gmp_int +

    +
    +

    + 9.56378 (0.031497s) +

    +
    +

    + 8.0588 (0.0298754s) +

    +
    +

    + 4.15824 (0.0413905s) +

    +
    +

    + 5.47974 (0.0643691s) +

    +
    +

    + 4.46265 (0.104195s) +

    +
    +

    + tommath_int +

    +
    +

    + 76.2624 (0.25116s) +

    +
    +

    + 71.3973 (0.264682s) +

    +
    +

    + 28.0238 (0.278945s) +

    +
    +

    + 25.9035 (0.304282s) +

    +
    +

    + 13.1635 (0.307346s) +

    +
    +
    +
    +

    Table 1.17. Operator -

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00359417s) +

    +
    +

    + 1 (0.00721041s) +

    +
    +

    + 1 (0.0168213s) +

    +
    +

    + 1 (0.0323563s) +

    +
    +

    + 1 (0.061385s) +

    +
    +

    + gmp_int +

    +
    +

    + 10.6794 (0.0383836s) +

    +
    +

    + 5.65517 (0.0407761s) +

    +
    +

    + 2.63634 (0.0443466s) +

    +
    +

    + 1.59979 (0.0517632s) +

    +
    +

    + 1.13379 (0.0695978s) +

    +
    +

    + tommath_int +

    +
    +

    + 6.43615 (0.0231326s) +

    +
    +

    + 3.6161 (0.0260736s) +

    +
    +

    + 2.2585 (0.0379908s) +

    +
    +

    + 1.52006 (0.0491835s) +

    +
    +

    + 1.24231 (0.0762591s) +

    +
    +
    +
    +

    Table 1.18. Operator -(int)

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00353606s) +

    +
    +

    + 1 (0.00577573s) +

    +
    +

    + 1 (0.0155184s) +

    +
    +

    + 1 (0.029385s) +

    +
    +

    + 1 (0.0586271s) +

    +
    +

    + gmp_int +

    +
    +

    + 9.04434 (0.0319814s) +

    +
    +

    + 5.12393 (0.0295945s) +

    +
    +

    + 2.50743 (0.0389112s) +

    +
    +

    + 2.01898 (0.0593277s) +

    +
    +

    + 1.68381 (0.098717s) +

    +
    +

    + tommath_int +

    +
    +

    + 60.2486 (0.213043s) +

    +
    +

    + 38.3032 (0.221229s) +

    +
    +

    + 15.8792 (0.24642s) +

    +
    +

    + 8.71166 (0.255992s) +

    +
    +

    + 4.85236 (0.28448s) +

    +
    +
    +
    +

    Table 1.19. Operator *

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.0175309s) +

    +
    +

    + 1 (0.0388232s) +

    +
    +

    + 1 (0.123609s) +

    +
    +

    + 1 (0.427489s) +

    +
    +

    + 1 (1.46312s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.93263 (0.0514117s) +

    +
    +

    + 1.70358 (0.0661383s) +

    +
    +

    + 1.01811 (0.125848s) +

    +
    +

    + 1.20692 (0.515943s) +

    +
    +

    + 1.03248 (1.51064s) +

    +
    +

    + tommath_int +

    +
    +

    + 3.82476 (0.0670515s) +

    +
    +

    + 2.87425 (0.111587s) +

    +
    +

    + 2.74339 (0.339108s) +

    +
    +

    + 2.26768 (0.969408s) +

    +
    +

    + 2.1233 (3.10664s) +

    +
    +
    +
    +

    Table 1.20. Operator /

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.0973696s) +

    +
    +

    + 1 (0.260936s) +

    +
    +

    + 1 (0.845628s) +

    +
    +

    + 2.4597 (2.51371s) +

    +
    +

    + 6.21836 (7.93136s) +

    +
    +

    + gmp_int +

    +
    +

    + 7.66851 (0.74668s) +

    +
    +

    + 3.17732 (0.829077s) +

    +
    +

    + 1.05006 (0.887961s) +

    +
    +

    + 1 (1.02196s) +

    +
    +

    + 1 (1.27547s) +

    +
    +

    + tommath_int +

    +
    +

    + 18.3945 (1.79107s) +

    +
    +

    + 8.11201 (2.11671s) +

    +
    +

    + 3.49119 (2.95225s) +

    +
    +

    + 4.55727 (4.65733s) +

    +
    +

    + 9.06813 (11.5662s) +

    +
    +
    +
    +

    Table 1.21. Operator %

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.098458s) +

    +
    +

    + 1 (0.269155s) +

    +
    +

    + 1.10039 (0.849272s) +

    +
    +

    + 2.92096 (2.55909s) +

    +
    +

    + 7.47157 (7.99106s) +

    +
    +

    + gmp_int +

    +
    +

    + 6.63934 (0.653697s) +

    +
    +

    + 2.6753 (0.72007s) +

    +
    +

    + 1 (0.771794s) +

    +
    +

    + 1 (0.87611s) +

    +
    +

    + 1 (1.06953s) +

    +
    +

    + tommath_int +

    +
    +

    + 18.5522 (1.82661s) +

    +
    +

    + 8.00831 (2.15548s) +

    +
    +

    + 3.89737 (3.00797s) +

    +
    +

    + 5.38078 (4.71416s) +

    +
    +

    + 10.7885 (11.5386s) +

    +
    +
    +
    +

    Table 1.22. Operator <<

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.0120907s) +

    +
    +

    + 1 (0.0129147s) +

    +
    +

    + 1 (0.0214412s) +

    +
    +

    + 1 (0.0249208s) +

    +
    +

    + 1 (0.0341293s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.93756 (0.0234265s) +

    +
    +

    + 1.97785 (0.0255433s) +

    +
    +

    + 1.43607 (0.0307911s) +

    +
    +

    + 1.815 (0.0452311s) +

    +
    +

    + 2.00167 (0.0683156s) +

    +
    +

    + tommath_int +

    +
    +

    + 3.42859 (0.0414542s) +

    +
    +

    + 3.04951 (0.0393836s) +

    +
    +

    + 3.04202 (0.0652246s) +

    +
    +

    + 3.81169 (0.0949903s) +

    +
    +

    + 4.93896 (0.168563s) +

    +
    +
    +
    +

    Table 1.23. Operator >>

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.0064833s) +

    +
    +

    + 1 (0.00772857s) +

    +
    +

    + 1 (0.0186871s) +

    +
    +

    + 1 (0.0218303s) +

    +
    +

    + 1 (0.0326372s) +

    +
    +

    + gmp_int +

    +
    +

    + 4.212 (0.0273077s) +

    +
    +

    + 3.72696 (0.0288041s) +

    +
    +

    + 1.55046 (0.0289735s) +

    +
    +

    + 1.51403 (0.0330518s) +

    +
    +

    + 1.13695 (0.037107s) +

    +
    +

    + tommath_int +

    +
    +

    + 33.9418 (0.220055s) +

    +
    +

    + 29.104 (0.224932s) +

    +
    +

    + 13.8407 (0.258642s) +

    +
    +

    + 13.1488 (0.287043s) +

    +
    +

    + 15.1741 (0.495242s) +

    +
    +
    +
    +

    Table 1.24. Operator &

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.0028732s) +

    +
    +

    + 1 (0.00552933s) +

    +
    +

    + 1 (0.0125148s) +

    +
    +

    + 1 (0.020299s) +

    +
    +

    + 1 (0.034856s) +

    +
    +

    + gmp_int +

    +
    +

    + 16.3018 (0.0468383s) +

    +
    +

    + 9.51109 (0.05259s) +

    +
    +

    + 5.20026 (0.0650802s) +

    +
    +

    + 4.46545 (0.0906443s) +

    +
    +

    + 3.99377 (0.139207s) +

    +
    +

    + tommath_int +

    +
    +

    + 42.221 (0.121309s) +

    +
    +

    + 22.2471 (0.123011s) +

    +
    +

    + 11.3587 (0.142151s) +

    +
    +

    + 7.3475 (0.149147s) +

    +
    +

    + 11.4043 (0.397507s) +

    +
    +
    +
    +

    Table 1.25. Operator ^

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00287983s) +

    +
    +

    + 1 (0.00543128s) +

    +
    +

    + 1 (0.0125726s) +

    +
    +

    + 1 (0.019987s) +

    +
    +

    + 1 (0.034697s) +

    +
    +

    + gmp_int +

    +
    +

    + 14.938 (0.0430189s) +

    +
    +

    + 9.00973 (0.0489344s) +

    +
    +

    + 4.83803 (0.0608267s) +

    +
    +

    + 4.33359 (0.0866154s) +

    +
    +

    + 3.89518 (0.135151s) +

    +
    +

    + tommath_int +

    +
    +

    + 41.6898 (0.12006s) +

    +
    +

    + 22.4393 (0.121874s) +

    +
    +

    + 10.7513 (0.135172s) +

    +
    +

    + 7.2632 (0.145169s) +

    +
    +

    + 11.5765 (0.401671s) +

    +
    +
    +
    +

    Table 1.26. Operator |

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00314803s) +

    +
    +

    + 1 (0.00548233s) +

    +
    +

    + 1 (0.0125434s) +

    +
    +

    + 1 (0.0198161s) +

    +
    +

    + 1 (0.034957s) +

    +
    +

    + gmp_int +

    +
    +

    + 13.0622 (0.0411201s) +

    +
    +

    + 8.63936 (0.0473638s) +

    +
    +

    + 4.6932 (0.0588688s) +

    +
    +

    + 4.25792 (0.0843755s) +

    +
    +

    + 3.78236 (0.13222s) +

    +
    +

    + tommath_int +

    +
    +

    + 38.5896 (0.121481s) +

    +
    +

    + 22.3609 (0.12259s) +

    +
    +

    + 10.9015 (0.136742s) +

    +
    +

    + 7.68521 (0.152291s) +

    +
    +

    + 11.6322 (0.406628s) +

    +
    +
    +
    +

    Table 1.27. Operator str

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1.03557 (0.00143356s) +

    +
    +

    + 1.39844 (0.00290281s) +

    +
    +

    + 3.14081 (0.0099558s) +

    +
    +

    + 6.28067 (0.0372769s) +

    +
    +

    + 13.2101 (0.188878s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.00138432s) +

    +
    +

    + 1 (0.00207575s) +

    +
    +

    + 1 (0.00316982s) +

    +
    +

    + 1 (0.00593518s) +

    +
    +

    + 1 (0.014298s) +

    +
    +

    + tommath_int +

    +
    +

    + 5.31194 (0.00735345s) +

    +
    +

    + 7.90724 (0.0164135s) +

    +
    +

    + 15.8581 (0.0502673s) +

    +
    +

    + 19.7526 (0.117235s) +

    +
    +

    + 26.6031 (0.380373s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html new file mode 100644 index 00000000..9762e244 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -0,0 +1,276 @@ + + + +Real World Tests + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + These tests test the total time taken to execute all of Boost.Math's test + cases for these functions. In each case the best performing library gets + a relative score of 1, with the total execution time given in brackets. The + first three libraries listed are the various floating point types provided + by this library, while for comparison, two popular C++ frontends to MPFR + (mpfr_class and mpreal) are also shown. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on + 32-bit Windows Vista machine. +

    +
    +

    Table 1.6. Bessel Function Performance

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + mpfr_float +

    +
    +

    + 1.0 (6.472s) +

    +
    +

    + 1.193 (10.154s) +

    +
    +

    + mpf_float +

    +
    +

    + 1.801 (11.662s) +

    +
    +

    + 1.0(8.511s) +

    +
    +

    + cpp_float +

    +
    +

    + 3.13 (20.285s) +

    +
    +

    + 2.46 (21.019s) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.001 (6.480s) +

    +
    +

    + 1.15(9.805s) +

    +
    +

    + mpreal +

    +
    +

    + 1.542 (9.981s) +

    +
    +

    + 1.61 (13.702s) +

    +
    +
    +
    +

    Table 1.7. Non-Central T Distribution Performance

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + mpfr_float +

    +
    +

    + 1.308 (258.09s) +

    +
    +

    + 1.30 (516.74s) +

    +
    +

    + mpf_float +

    +
    +

    + 1.0 (197.30s) +

    +
    +

    + 1.0(397.30s) +

    +
    +

    + cpp_float +

    +
    +

    + 1.695 (334.50s) +

    +
    +

    + 2.68 (1064.53s) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.35 (266.39s) +

    +
    +

    + 1.323 (525.74s) +

    +
    +

    + mpreal +

    +
    +

    + 1.75 (346.64s) +

    +
    +

    + 1.635 (649.94s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index 3d7a2998..95fe4403 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -7,11 +7,11 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -34,7 +34,9 @@ pa is a variable of type pointer-to-arithmetic-type, exp is a variable of type B::exp_type, pexp - is a variable of type B::exp_type*. + is a variable of type B::exp_type*, + B2 is another type that meets these requirements, b2 is a variable of type + B2.

    Table 1.4. Compulsory Requirements on the Backend type.

    @@ -730,6 +732,79 @@ + +

    + B(b2) +

    + + +

    + B +

    + + +

    + Copy constructor from a different backend type. +

    + + + + +

    + b = + b2 +

    + + +

    + b& +

    + + +

    + Assignment operator from a different backend type. +

    + + + + +

    + assign_components(b, a, a) +

    + + +

    + void +

    + + +

    + Assigns to b the + two components in the following arguments. Only applies to rational + and complex number types. +

    + + + + +

    + assign_components(b, b2, b2) +

    + + +

    + void +

    + + +

    + Assigns to b the + two components in the following arguments. Only applies to rational + and complex number types. +

    + + +

    add(b, @@ -2039,7 +2114,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index af55cb6a..87f856a8 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -137,6 +137,16 @@ unmentionable-expression-template-type fmod (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&); unmentionable-expression-template-type atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&); +// Traits support: +template <class T> +struct component_type; +template <class T> +struct number_category; + +// Rational number support: +typename component_type<mp_number-or-expression-template-type>::type numerator (const mp_number-or-expression-template-type&); +typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&); + }} // namespaces namespace boost{ namespace math{ @@ -191,6 +201,16 @@ Any type that the Backend is constructible or assignable from.
    +

    + In addition, if the type has multiple components (for example rational or + complex number types), then there is a two argument constructor: +

    +
    mp_number(arg1, arg2);
    +
    +

    + Where the two args must either be arithmetic types, or types that are convertible + to the two components of this. +

    mp_number& operator+=(const see-below&);
     mp_number& operator-=(const see-below&);
     mp_number& operator*=(const see-below&);
    @@ -457,6 +477,42 @@
           

    + Traits + Class Support +
    +
    template <class T>
    +struct component_type;
    +
    +

    + If this is a type with mutiple components (for example rational or complex + types), then this trait has a single member type + that is the type of those components. +

    +
    template <class T>
    +struct number_category;
    +
    +

    + A traits class that inherits from mpl::int_<N> + where N is one of the enumerated + values number_kind_integer, + number_kind_floating_point, + number_kind_rational or + number_kind_fixed_point. +

    +
    + + Rational + Number Functions +
    +
    typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    +typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    +
    +

    + These functions return the numerator and denominator of a rational number + respectively. +

    +
    + Boost.Math Interoperability Support
    @@ -479,7 +535,7 @@ to ensure interoperability.

    - + std::numeric_limits support
    diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index ff68aa78..184beae4 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -263,6 +263,9 @@ std::cout << numerator(v) << std::endl; std::cout << denominator(v) << std::endl; +mpq_rational w(2, 3); // component wise constructor +std::cout << w << std::endl; // prints 2/3 + // Access the underlying data: mpq_t q; mpq_init(q); @@ -322,6 +325,9 @@ std::cout << numerator(v) << std::endl; std::cout << denominator(v) << std::endl; +mp_rational w(2, 3); // Component wise constructor +std::cout << w << std::endl; // prints 2/3 +

    diff --git a/doc/html/index.html b/doc/html/index.html index 5bccd937..f35eb4ab 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -39,6 +39,14 @@
    mp_number
    Backend Requirements
    +
    Performance Comparison
    +
    +
    Real World Tests
    +
    Float Algorithm + Perfomance
    +
    Integer + Algorithm Perfomance
    +
    Roadmap
    History
    @@ -48,7 +56,7 @@

    - +

    Last revised: January 12, 2012 at 13:44:32 GMT

    Last revised: January 14, 2012 at 13:20:36 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 290e8f42..ccd74dd4 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -632,6 +632,16 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would ``['unmentionable-expression-template-type]`` fmod (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); ``['unmentionable-expression-template-type]`` atan2 (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + // Traits support: + template + struct component_type; + template + struct number_category; + + // Rational number support: + typename component_type<``['mp_number-or-expression-template-type]``>::type numerator (const ``['mp_number-or-expression-template-type]``&); + typename component_type<``['mp_number-or-expression-template-type]``>::type denominator(const ``['mp_number-or-expression-template-type]``&); + }} // namespaces namespace boost{ namespace math{ @@ -670,6 +680,13 @@ Type `mp_number` is default constructible, and both copy constructible and assig * A `std::string` or any type which is convertible to `const char*`. * Any type that the Backend is constructible or assignable from. +In addition, if the type has multiple components (for example rational or complex number types), then there is a +two argument constructor: + + mp_number(arg1, arg2); + +Where the two args must either be arithmetic types, or types that are convertible to the two components of `this`. + mp_number& operator+=(const ``['see-below]``&); mp_number& operator-=(const ``['see-below]``&); mp_number& operator*=(const ``['see-below]``&); @@ -857,6 +874,27 @@ used at variable precision. Also note that with the exception of `abs` that these functions can only be used with floating-point Backend types. +[h4 Traits Class Support] + + template + struct component_type; + +If this is a type with mutiple components (for example rational or complex types), then this trait has a single member +`type` that is the type of those components. + + template + struct number_category; + +A traits class that inherits from `mpl::int_` where `N` is one of the enumerated values `number_kind_integer`, `number_kind_floating_point`, +`number_kind_rational` or `number_kind_fixed_point`. + +[h4 Rational Number Functions] + + typename component_type<``['mp_number-or-expression-template-type]``>::type numerator (const ``['mp_number-or-expression-template-type]``&); + typename component_type<``['mp_number-or-expression-template-type]``>::type denominator(const ``['mp_number-or-expression-template-type]``&); + +These functions return the numerator and denominator of a rational number respectively. + [h4 Boost.Math Interoperability Support] namespace boost{ namespace math{ @@ -904,7 +942,8 @@ In the following tables, type B is the `Backend` template arument to `mp_number` a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a variable of Arithmetic type, `s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, `pa` is a variable of type pointer-to-arithmetic-type, `exp` is a variable of type `B::exp_type`, -`pexp` is a variable of type `B::exp_type*`. +`pexp` is a variable of type `B::exp_type*`, B2 is another type that meets these requirements, b2 is a variable +of type B2. [table Compulsory Requirements on the Backend type. [[Expression][Return Type][Comments]] @@ -956,6 +995,12 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia [table Optional Requirements on the Backend Type [[Expression][Returns][Comments]] +[[`B(b2)`][`B`][Copy constructor from a different backend type.]] +[[`b = b2`][`b&`][Assignment operator from a different backend type.]] +[[`assign_components(b, a, a)`][`void`][Assigns to `b` the two components in the following arguments. + Only applies to rational and complex number types.]] +[[`assign_components(b, b2, b2)`][`void`][Assigns to `b` the two components in the following arguments. + Only applies to rational and complex number types.]] [[`add(b, a)`][`void`][Adds `a` to `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] [[`subtract(b, a)`][`void`][Subtracts `a` from `b`. The type of `a` shall be listed in one of the type lists @@ -1044,6 +1089,192 @@ a variable of B, `cb` and `cb2` are constant variables of type B, `a` is a varia [endsect] +[section:perf Performance Comparison] + +[section:realworld Real World Tests] + +These tests test the total time taken to execute all of Boost.Math's test cases for these functions. +In each case the best performing library gets a relative score of 1, with the total execution time +given in brackets. The first three libraries listed are the various floating point types provided +by this library, while for comparison, two popular C++ frontends to MPFR (mpfr_class and mpreal) +are also shown. + +Test code was compiled with Microsoft Visual Studio 2010 with all optimisations +turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on 32-bit +Windows Vista machine. + +[table Bessel Function Performance +[[Library][50 Decimal Digits][100 Decimal Digits]] +[[mpfr_float][[*1.0] (6.472s)][1.193 (10.154s)]] +[[mpf_float][1.801 (11.662s)][[*1.0](8.511s)]] +[[cpp_float][3.13 (20.285s)][2.46 (21.019s)]] +[[mpfr_class][1.001 (6.480s)][1.15(9.805s)]] +[[mpreal][1.542 (9.981s)][1.61 (13.702s)]] +] + +[table Non-Central T Distribution Performance +[[Library][50 Decimal Digits][100 Decimal Digits]] +[[mpfr_float][1.308 (258.09s)][1.30 (516.74s)]] +[[mpf_float][[*1.0] (197.30s)][[*1.0](397.30s)]] +[[cpp_float][1.695 (334.50s)][2.68 (1064.53s)]] +[[mpfr_class][1.35 (266.39s)][1.323 (525.74s)]] +[[mpreal][1.75 (346.64s)][1.635 (649.94s)]] +] + +[endsect] + +[section:float_performance Float Algorithm Perfomance] + +Note that these tests are carefully designed to test performance of the underlying algorithms +and not memory allocation or variable copying. As usual, performance results should be taken +with a healthy dose of scepticsm, and real-world peformance may vary widely depending upon the +specifics of the program. In each table relative times are given first, with the best performer +given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 +operations. + +Test code was compiled with Microsoft Visual Studio 2010 with all optimisations +turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on 32-bit +Windows Vista machine. + +[table Operator * +[[Backend][50 Decimal Digits][100 Decimal Digits][500 Decimal Digits]] +[[cpp_float][1.0826 (0.287216s)][1.48086 (0.586363s)][1.57545 (5.05269s)]] +[[gmp_float][[*1] (0.265302s)][[*1] (0.395962s)][[*1] (3.20714s)]] +[[mpfr_float][1.24249 (0.329636s)][1.15432 (0.457067s)][1.16182 (3.72612s)]] +] +[table Operator + +[[Backend][50 Decimal Digits][100 Decimal Digits][500 Decimal Digits]] +[[cpp_float][[*1] (0.0242151s)][[*1] (0.029252s)][[*1] (0.0584099s)]] +[[gmp_float][4.55194 (0.110226s)][3.67516 (0.107506s)][2.42489 (0.141638s)]] +[[mpfr_float][2.45362 (0.0594147s)][2.18552 (0.0639309s)][1.32099 (0.0771588s)]] +] +[table Operator +(int) +[[Backend][50 Decimal Digits][100 Decimal Digits][500 Decimal Digits]] +[[cpp_float][1.51995 (0.0484155s)][1.78781 (0.0611055s)][1.8309 (0.104123s)]] +[[gmp_float][[*1] (0.0318533s)][[*1] (0.0341789s)][[*1] (0.0568699s)]] +[[mpfr_float][3.39055 (0.108s)][3.30142 (0.112839s)][2.05293 (0.11675s)]] +] +[table Operator - +[[Backend][50 Decimal Digits][100 Decimal Digits][500 Decimal Digits]] +[[cpp_float][[*1] (0.0261498s)][[*1] (0.030946s)][[*1] (0.0606388s)]] +[[gmp_float][4.48753 (0.117348s)][3.75823 (0.116302s)][2.4823 (0.150524s)]] +[[mpfr_float][2.96057 (0.0774183s)][2.61897 (0.0810465s)][1.56236 (0.0947396s)]] +] +[table Operator -(int) +[[Backend][50 Decimal Digits][100 Decimal Digits][500 Decimal Digits]] +[[cpp_float][[*1] (0.0567601s)][[*1] (0.0626685s)][[*1] (0.111692s)]] +[[gmp_float][2.27932 (0.129374s)][2.04821 (0.128358s)][1.48297 (0.165635s)]] +[[mpfr_float][2.43199 (0.13804s)][2.32131 (0.145473s)][1.38152 (0.154304s)]] +] +[table Operator / +[[Backend][50 Decimal Digits][100 Decimal Digits][500 Decimal Digits]] +[[cpp_float][3.2662 (3.98153s)][5.07021 (8.11948s)][6.78872 (53.6099s)]] +[[gmp_float][[*1] (1.21901s)][[*1] (1.60141s)][[*1] (7.89691s)]] +[[mpfr_float][1.33238 (1.62419s)][1.39529 (2.23443s)][1.70882 (13.4944s)]] +] +[table Operator str +[[Backend][50 Decimal Digits][100 Decimal Digits][500 Decimal Digits]] +[[cpp_float][1.46076 (0.0192656s)][1.59438 (0.0320398s)][[*1] (0.134302s)]] +[[gmp_float][[*1] (0.0131888s)][[*1] (0.0200954s)][1.01007 (0.135655s)]] +[[mpfr_float][2.19174 (0.0289065s)][1.86101 (0.0373977s)][1.15842 (0.155578s)]] +] +[endsect] + +[section:integer_performance Integer Algorithm Perfomance] + +Note that these tests are carefully designed to test performance of the underlying algorithms +and not memory allocation or variable copying. As usual, performance results should be taken +with a healthy dose of scepticsm, and real-world peformance may vary widely depending upon the +specifics of the program. In each table relative times are given first, with the best performer +given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 +operations. + +Test code was compiled with Microsoft Visual Studio 2010 with all optimisations +turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on 32-bit +Windows Vista machine. + +[table Operator + +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0031173s)][[*1] (0.00696555s)][[*1] (0.0163707s)][[*1] (0.0314806s)][[*1] (0.0596158s)]] +[[gmp_int][12.7096 (0.0396194s)][5.89178 (0.0410395s)][2.66402 (0.0436119s)][1.59356 (0.0501664s)][1.11155 (0.0662662s)]] +[[tommath_int][6.14357 (0.0191513s)][3.16177 (0.0220235s)][1.85441 (0.030358s)][1.45895 (0.0459287s)][1.26576 (0.0754591s)]] +] +[table Operator +(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00329336s)][[*1] (0.00370718s)][[*1] (0.00995385s)][[*1] (0.0117467s)][[*1] (0.0233483s)]] +[[gmp_int][9.56378 (0.031497s)][8.0588 (0.0298754s)][4.15824 (0.0413905s)][5.47974 (0.0643691s)][4.46265 (0.104195s)]] +[[tommath_int][76.2624 (0.25116s)][71.3973 (0.264682s)][28.0238 (0.278945s)][25.9035 (0.304282s)][13.1635 (0.307346s)]] +] +[table Operator - +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00359417s)][[*1] (0.00721041s)][[*1] (0.0168213s)][[*1] (0.0323563s)][[*1] (0.061385s)]] +[[gmp_int][10.6794 (0.0383836s)][5.65517 (0.0407761s)][2.63634 (0.0443466s)][1.59979 (0.0517632s)][1.13379 (0.0695978s)]] +[[tommath_int][6.43615 (0.0231326s)][3.6161 (0.0260736s)][2.2585 (0.0379908s)][1.52006 (0.0491835s)][1.24231 (0.0762591s)]] +] +[table Operator -(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00353606s)][[*1] (0.00577573s)][[*1] (0.0155184s)][[*1] (0.029385s)][[*1] (0.0586271s)]] +[[gmp_int][9.04434 (0.0319814s)][5.12393 (0.0295945s)][2.50743 (0.0389112s)][2.01898 (0.0593277s)][1.68381 (0.098717s)]] +[[tommath_int][60.2486 (0.213043s)][38.3032 (0.221229s)][15.8792 (0.24642s)][8.71166 (0.255992s)][4.85236 (0.28448s)]] +] +[table Operator * +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0175309s)][[*1] (0.0388232s)][[*1] (0.123609s)][[*1] (0.427489s)][[*1] (1.46312s)]] +[[gmp_int][2.93263 (0.0514117s)][1.70358 (0.0661383s)][1.01811 (0.125848s)][1.20692 (0.515943s)][1.03248 (1.51064s)]] +[[tommath_int][3.82476 (0.0670515s)][2.87425 (0.111587s)][2.74339 (0.339108s)][2.26768 (0.969408s)][2.1233 (3.10664s)]] +] +[table Operator / +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0973696s)][[*1] (0.260936s)][[*1] (0.845628s)][2.4597 (2.51371s)][6.21836 (7.93136s)]] +[[gmp_int][7.66851 (0.74668s)][3.17732 (0.829077s)][1.05006 (0.887961s)][[*1] (1.02196s)][[*1] (1.27547s)]] +[[tommath_int][18.3945 (1.79107s)][8.11201 (2.11671s)][3.49119 (2.95225s)][4.55727 (4.65733s)][9.06813 (11.5662s)]] +] +[table Operator % +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.098458s)][[*1] (0.269155s)][1.10039 (0.849272s)][2.92096 (2.55909s)][7.47157 (7.99106s)]] +[[gmp_int][6.63934 (0.653697s)][2.6753 (0.72007s)][[*1] (0.771794s)][[*1] (0.87611s)][[*1] (1.06953s)]] +[[tommath_int][18.5522 (1.82661s)][8.00831 (2.15548s)][3.89737 (3.00797s)][5.38078 (4.71416s)][10.7885 (11.5386s)]] +] +[table Operator << +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0120907s)][[*1] (0.0129147s)][[*1] (0.0214412s)][[*1] (0.0249208s)][[*1] (0.0341293s)]] +[[gmp_int][1.93756 (0.0234265s)][1.97785 (0.0255433s)][1.43607 (0.0307911s)][1.815 (0.0452311s)][2.00167 (0.0683156s)]] +[[tommath_int][3.42859 (0.0414542s)][3.04951 (0.0393836s)][3.04202 (0.0652246s)][3.81169 (0.0949903s)][4.93896 (0.168563s)]] +] +[table Operator >> +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0064833s)][[*1] (0.00772857s)][[*1] (0.0186871s)][[*1] (0.0218303s)][[*1] (0.0326372s)]] +[[gmp_int][4.212 (0.0273077s)][3.72696 (0.0288041s)][1.55046 (0.0289735s)][1.51403 (0.0330518s)][1.13695 (0.037107s)]] +[[tommath_int][33.9418 (0.220055s)][29.104 (0.224932s)][13.8407 (0.258642s)][13.1488 (0.287043s)][15.1741 (0.495242s)]] +] +[table Operator & +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0028732s)][[*1] (0.00552933s)][[*1] (0.0125148s)][[*1] (0.020299s)][[*1] (0.034856s)]] +[[gmp_int][16.3018 (0.0468383s)][9.51109 (0.05259s)][5.20026 (0.0650802s)][4.46545 (0.0906443s)][3.99377 (0.139207s)]] +[[tommath_int][42.221 (0.121309s)][22.2471 (0.123011s)][11.3587 (0.142151s)][7.3475 (0.149147s)][11.4043 (0.397507s)]] +] +[table Operator ^ +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00287983s)][[*1] (0.00543128s)][[*1] (0.0125726s)][[*1] (0.019987s)][[*1] (0.034697s)]] +[[gmp_int][14.938 (0.0430189s)][9.00973 (0.0489344s)][4.83803 (0.0608267s)][4.33359 (0.0866154s)][3.89518 (0.135151s)]] +[[tommath_int][41.6898 (0.12006s)][22.4393 (0.121874s)][10.7513 (0.135172s)][7.2632 (0.145169s)][11.5765 (0.401671s)]] +] +[table Operator | +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00314803s)][[*1] (0.00548233s)][[*1] (0.0125434s)][[*1] (0.0198161s)][[*1] (0.034957s)]] +[[gmp_int][13.0622 (0.0411201s)][8.63936 (0.0473638s)][4.6932 (0.0588688s)][4.25792 (0.0843755s)][3.78236 (0.13222s)]] +[[tommath_int][38.5896 (0.121481s)][22.3609 (0.12259s)][10.9015 (0.136742s)][7.68521 (0.152291s)][11.6322 (0.406628s)]] +] +[table Operator str +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][1.03557 (0.00143356s)][1.39844 (0.00290281s)][3.14081 (0.0099558s)][6.28067 (0.0372769s)][13.2101 (0.188878s)]] +[[gmp_int][[*1] (0.00138432s)][[*1] (0.00207575s)][[*1] (0.00316982s)][[*1] (0.00593518s)][[*1] (0.014298s)]] +[[tommath_int][5.31194 (0.00735345s)][7.90724 (0.0164135s)][15.8581 (0.0502673s)][19.7526 (0.117235s)][26.6031 (0.380373s)]] +] +[endsect] + +[endsect] + [section:map Roadmap] [section:hist History] @@ -1056,7 +1287,6 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Add backend support for libdecNumber. * Add an adapter backend for complex number types. -* Adapt libtommath code to make an all C++ fixed precision integer type. [endsect] diff --git a/example/gmp_snips.cpp b/example/gmp_snips.cpp index cf763fa2..511a2894 100644 --- a/example/gmp_snips.cpp +++ b/example/gmp_snips.cpp @@ -71,6 +71,9 @@ void t3() std::cout << numerator(v) << std::endl; std::cout << denominator(v) << std::endl; + mpq_rational w(2, 3); // component wise constructor + std::cout << w << std::endl; // prints 2/3 + // Access the underlying data: mpq_t q; mpq_init(q); diff --git a/example/tommath_snips.cpp b/example/tommath_snips.cpp index 793aa5f6..92fbaeed 100644 --- a/example/tommath_snips.cpp +++ b/example/tommath_snips.cpp @@ -59,6 +59,9 @@ void t3() std::cout << numerator(v) << std::endl; std::cout << denominator(v) << std::endl; + mp_rational w(2, 3); // Component wise constructor + std::cout << w << std::endl; // prints 2/3 + //] } diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index e6b18a7a..1ed7aacf 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -277,6 +277,21 @@ inline int get_sign(const T& val) return val.compare(static_cast(0)); } +template +inline void assign_components_imp(T& result, const V& v1, const V& v2, const mpl::int_&) +{ + result = v1; + T t; + t = v2; + divide(result, t); +} + +template +inline void assign_components(T& result, const V& v1, const V& v2) +{ + return assign_components_imp(result, v1, v2, typename number_category::type()); +} + template struct has_enough_bits { diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 781f8f71..6d183709 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -1139,6 +1139,13 @@ struct number_category > : public number_category{}; template struct number_category > : public number_category::result_type>{}; +template +struct component_type; +template +struct component_type > : public component_type{}; +template +struct component_type > : public component_type::result_type>{}; + }} // namespaces namespace boost{ namespace math{ namespace tools{ diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index b5d71181..90cf2fb7 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1603,6 +1603,12 @@ inline mp_number denominator(const mp_number& val) return result; } +template <> +struct component_type > +{ + typedef mp_number type; +}; + inline void add(gmp_rational& t, const gmp_rational& o) { mpq_add(t.data(), t.data(), o.data()); @@ -1668,6 +1674,23 @@ inline void eval_abs(gmp_rational& result, const gmp_rational& val) mpq_abs(result.data(), val.data()); } +inline void assign_components(gmp_rational& result, unsigned long v1, unsigned long v2) +{ + mpq_set_ui(result.data(), v1, v2); + mpq_canonicalize(result.data()); +} +inline void assign_components(gmp_rational& result, long v1, long v2) +{ + mpq_set_si(result.data(), v1, v2); + mpq_canonicalize(result.data()); +} +inline void assign_components(gmp_rational& result, gmp_int const& v1, gmp_int const& v2) +{ + mpz_set(mpq_numref(result.data()), v1.data()); + mpz_set(mpq_denref(result.data()), v2.data()); + mpq_canonicalize(result.data()); +} + // // Some member functions that are dependent upon previous code go here: // diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 2c8b9d4d..bb48f629 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -37,17 +37,35 @@ public: m_backend = canonical_value(v); } mp_number(const mp_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} + /* + // + // This conflicts with component based initialization (for rational and complex types) + // which is arguably more useful. Disabled for now. + // template mp_number(V v, unsigned digits10, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) { m_backend.precision(digits10); m_backend = canonical_value(v); } + */ template mp_number(const mp_number& val, typename enable_if >::type* dummy1 = 0) { m_backend = val.backend(); } + template + mp_number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + { + using default_ops::assign_components; + assign_components(m_backend, canonical_value(v1), canonical_value(v2)); + } + template + mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* dummy1 = 0) + { + using default_ops::assign_components; + assign_components(m_backend, v1.backend(), v2.backend()); + } template mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* dummy1 = 0) @@ -322,6 +340,7 @@ public: mp_number& operator&=(const self_type& e) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); do_bitwise_and(detail::mp_exp(e), detail::terminal()); return *this; } @@ -329,6 +348,7 @@ public: template mp_number& operator&=(const detail::mp_exp& e) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); // Create a temporary if the RHS references *this, but not // if we're just doing an x &= x; if(contains_self(e) && !is_self(e)) @@ -347,6 +367,7 @@ public: typename enable_if, mp_number& >::type operator&=(const V& v) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); using default_ops::bitwise_and; bitwise_and(m_backend, canonical_value(v)); return *this; @@ -354,6 +375,7 @@ public: mp_number& operator|=(const self_type& e) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); do_bitwise_or(detail::mp_exp(e), detail::terminal()); return *this; } @@ -361,6 +383,7 @@ public: template mp_number& operator|=(const detail::mp_exp& e) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); // Create a temporary if the RHS references *this, but not // if we're just doing an x |= x; if(contains_self(e) && !is_self(e)) @@ -379,6 +402,7 @@ public: typename enable_if, mp_number& >::type operator|=(const V& v) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); using default_ops::bitwise_or; bitwise_or(m_backend, canonical_value(v)); return *this; @@ -386,6 +410,7 @@ public: mp_number& operator^=(const self_type& e) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); do_bitwise_xor(detail::mp_exp(e), detail::terminal()); return *this; } @@ -393,6 +418,7 @@ public: template mp_number& operator^=(const detail::mp_exp& e) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); if(contains_self(e)) { self_type temp(e); @@ -409,6 +435,7 @@ public: typename enable_if, mp_number& >::type operator^=(const V& v) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); using default_ops::bitwise_xor; bitwise_xor(m_backend, canonical_value(v)); return *this; @@ -924,6 +951,7 @@ private: template void do_assign(const Exp& e, const detail::bitwise_complement&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ~ operation is only valid for integer types"); using default_ops::complement; self_type temp(e.left()); complement(m_backend, temp.backend()); @@ -932,6 +960,7 @@ private: template void do_assign(const Exp& e, const detail::complement_immediates&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ~ operation is only valid for integer types"); using default_ops::complement; complement(m_backend, canonical_value(e.left().value())); } @@ -939,6 +968,7 @@ private: template void do_assign_right_shift(const Exp& e, const Val& val, const detail::terminal&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right shift operation is only valid for integer types"); using default_ops::right_shift; right_shift(m_backend, canonical_value(e.value()), val); } @@ -946,6 +976,7 @@ private: template void do_assign_left_shift(const Exp& e, const Val& val, const detail::terminal&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left shift operation is only valid for integer types"); using default_ops::left_shift; left_shift(m_backend, canonical_value(e.value()), val); } @@ -953,6 +984,7 @@ private: template void do_assign_right_shift(const Exp& e, const Val& val, const Tag&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right shift operation is only valid for integer types"); using default_ops::right_shift; self_type temp(e); right_shift(m_backend, temp.backend(), val); @@ -961,6 +993,7 @@ private: template void do_assign_left_shift(const Exp& e, const Val& val, const Tag&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left shift operation is only valid for integer types"); using default_ops::left_shift; self_type temp(e); left_shift(m_backend, temp.backend(), val); @@ -1263,12 +1296,14 @@ private: template void do_bitwise_and(const Exp& e, const detail::terminal&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); using default_ops::bitwise_and; bitwise_and(m_backend, canonical_value(e.value())); } template void do_bitwise_and(const Exp& e, const detail::bitwise_and&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); typedef typename Exp::left_type left_type; typedef typename Exp::right_type right_type; do_bitwise_and(e.left(), typename left_type::tag_type()); @@ -1277,6 +1312,7 @@ private: template void do_bitwise_and(const Exp& e, const unknown&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); using default_ops::bitwise_and; self_type temp(e); bitwise_and(m_backend, temp.m_backend); @@ -1285,12 +1321,14 @@ private: template void do_bitwise_or(const Exp& e, const detail::terminal&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); using default_ops::bitwise_or; bitwise_or(m_backend, canonical_value(e.value())); } template void do_bitwise_or(const Exp& e, const detail::bitwise_or&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); typedef typename Exp::left_type left_type; typedef typename Exp::right_type right_type; do_bitwise_or(e.left(), typename left_type::tag_type()); @@ -1299,6 +1337,7 @@ private: template void do_bitwise_or(const Exp& e, const unknown&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); using default_ops::bitwise_or; self_type temp(e); bitwise_or(m_backend, temp.m_backend); @@ -1307,12 +1346,14 @@ private: template void do_bitwise_xor(const Exp& e, const detail::terminal&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); using default_ops::bitwise_xor; bitwise_xor(m_backend, canonical_value(e.value())); } template void do_bitwise_xor(const Exp& e, const detail::bitwise_xor&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); typedef typename Exp::left_type left_type; typedef typename Exp::right_type right_type; do_bitwise_xor(e.left(), typename left_type::tag_type()); @@ -1321,6 +1362,7 @@ private: template void do_bitwise_xor(const Exp& e, const unknown&) { + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); using default_ops::bitwise_xor; self_type temp(e); bitwise_xor(m_backend, temp.m_backend); diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index e417653d..cc0e786b 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -42,6 +42,11 @@ struct rational_adapter m_value = o.m_value; return *this; } + rational_adapter& operator = (const IntBackend& o) + { + m_value = o; + return *this; + } template typename enable_if, rational_adapter&>::type operator = (Arithmetic i) { @@ -167,18 +172,30 @@ inline mp_number denominator(const mp_number +inline void assign_components(rational_adapter& result, const V& v1, const V& v2) +{ + result.data().assign(v1, v2); +} + template struct number_category > : public mpl::int_{}; +template +struct component_type > +{ + typedef mp_number type; +}; + }} // namespaces namespace std{ template -class numeric_limits > > : public std::numeric_limits +class numeric_limits > > : public std::numeric_limits > { - typedef std::numeric_limits base_type; + typedef std::numeric_limits > base_type; typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_integer = false; diff --git a/performance/performance_test-msvc-10.log b/performance/performance_test-msvc-10.log new file mode 100644 index 00000000..d6ed1e17 --- /dev/null +++ b/performance/performance_test-msvc-10.log @@ -0,0 +1,447 @@ +gmp_float 50 + 0.110226 +gmp_float 50 - 0.117348 +gmp_float 50 +(int)0.0318533 +gmp_float 50 -(int)0.129374 +gmp_float 50 * 0.265302 +gmp_float 50 / 1.21901 +gmp_float 50 str 0.0131888 +gmp_float 100 + 0.107506 +gmp_float 100 - 0.116302 +gmp_float 100 +(int)0.0341789 +gmp_float 100 -(int)0.128358 +gmp_float 100 * 0.395962 +gmp_float 100 / 1.60141 +gmp_float 100 str 0.0200954 +gmp_float 500 + 0.141638 +gmp_float 500 - 0.150524 +gmp_float 500 +(int)0.0568699 +gmp_float 500 -(int)0.165635 +gmp_float 500 * 3.20714 +gmp_float 500 / 7.89691 +gmp_float 500 str 0.135655 +gmp_int 64 + 0.0396194 +gmp_int 64 - 0.0383836 +gmp_int 64 +(int)0.031497 +gmp_int 64 -(int)0.0319814 +gmp_int 64 * 0.0514117 +gmp_int 64 / 0.74668 +gmp_int 64 str 0.00138432 +gmp_int 64 % 0.653697 +gmp_int 64 | 0.0411201 +gmp_int 64 & 0.0468383 +gmp_int 64 ^ 0.0430189 +gmp_int 64 << 0.0234265 +gmp_int 64 >> 0.0273077 +gmp_int 128 + 0.0410395 +gmp_int 128 - 0.0407761 +gmp_int 128 +(int)0.0298754 +gmp_int 128 -(int)0.0295945 +gmp_int 128 * 0.0661383 +gmp_int 128 / 0.829077 +gmp_int 128 str 0.00207575 +gmp_int 128 % 0.72007 +gmp_int 128 | 0.0473638 +gmp_int 128 & 0.05259 +gmp_int 128 ^ 0.0489344 +gmp_int 128 << 0.0255433 +gmp_int 128 >> 0.0288041 +gmp_int 256 + 0.0436119 +gmp_int 256 - 0.0443466 +gmp_int 256 +(int)0.0413905 +gmp_int 256 -(int)0.0389112 +gmp_int 256 * 0.125848 +gmp_int 256 / 0.887961 +gmp_int 256 str 0.00316982 +gmp_int 256 % 0.771794 +gmp_int 256 | 0.0588688 +gmp_int 256 & 0.0650802 +gmp_int 256 ^ 0.0608267 +gmp_int 256 << 0.0307911 +gmp_int 256 >> 0.0289735 +gmp_int 512 + 0.0501664 +gmp_int 512 - 0.0517632 +gmp_int 512 +(int)0.0643691 +gmp_int 512 -(int)0.0593277 +gmp_int 512 * 0.515943 +gmp_int 512 / 1.02196 +gmp_int 512 str 0.00593518 +gmp_int 512 % 0.87611 +gmp_int 512 | 0.0843755 +gmp_int 512 & 0.0906443 +gmp_int 512 ^ 0.0866154 +gmp_int 512 << 0.0452311 +gmp_int 512 >> 0.0330518 +gmp_int 1024 + 0.0662662 +gmp_int 1024 - 0.0695978 +gmp_int 1024 +(int)0.104195 +gmp_int 1024 -(int)0.098717 +gmp_int 1024 * 1.51064 +gmp_int 1024 / 1.27547 +gmp_int 1024 str 0.014298 +gmp_int 1024 % 1.06953 +gmp_int 1024 | 0.13222 +gmp_int 1024 & 0.139207 +gmp_int 1024 ^ 0.135151 +gmp_int 1024 << 0.0683156 +gmp_int 1024 >> 0.037107 +mpq_rational 64 + 1.47058 +mpq_rational 64 - 1.47214 +mpq_rational 64 +(int)0.654198 +mpq_rational 64 -(int)0.646626 +mpq_rational 64 * 2.63854 +mpq_rational 64 / 9.24093 +mpq_rational 64 str 0.00265152 +mpq_rational 128 + 3.18485 +mpq_rational 128 - 3.1691 +mpq_rational 128 +(int)0.66159 +mpq_rational 128 -(int)0.657712 +mpq_rational 128 * 5.8426 +mpq_rational 128 / 14.6415 +mpq_rational 128 str 0.00372512 +mpq_rational 256 + 6.67422 +mpq_rational 256 - 6.67532 +mpq_rational 256 +(int)0.705687 +mpq_rational 256 -(int)0.704919 +mpq_rational 256 * 12.6093 +mpq_rational 256 / 26.2341 +mpq_rational 256 str 0.00573139 +mpq_rational 512 + 15.5117 +mpq_rational 512 - 15.6279 +mpq_rational 512 +(int)0.817714 +mpq_rational 512 -(int)0.818141 +mpq_rational 512 * 28.654 +mpq_rational 512 / 52.808 +mpq_rational 512 str 0.011966 +mpq_rational 1024 + 37.688 +mpq_rational 1024 - 37.6616 +mpq_rational 1024 +(int)0.925526 +mpq_rational 1024 -(int)0.935657 +mpq_rational 1024 * 68.7938 +mpq_rational 1024 / 119.722 +mpq_rational 1024 str 0.0288116 +tommath_int 64 + 0.0191513 +tommath_int 64 - 0.0231326 +tommath_int 64 +(int)0.25116 +tommath_int 64 -(int)0.213043 +tommath_int 64 * 0.0670515 +tommath_int 64 / 1.79107 +tommath_int 64 str 0.00735345 +tommath_int 64 % 1.82661 +tommath_int 64 | 0.121481 +tommath_int 64 & 0.121309 +tommath_int 64 ^ 0.12006 +tommath_int 64 << 0.0414542 +tommath_int 64 >> 0.220055 +tommath_int 128 + 0.0220235 +tommath_int 128 - 0.0260736 +tommath_int 128 +(int)0.264682 +tommath_int 128 -(int)0.221229 +tommath_int 128 * 0.111587 +tommath_int 128 / 2.11671 +tommath_int 128 str 0.0164135 +tommath_int 128 % 2.15548 +tommath_int 128 | 0.12259 +tommath_int 128 & 0.123011 +tommath_int 128 ^ 0.121874 +tommath_int 128 << 0.0393836 +tommath_int 128 >> 0.224932 +tommath_int 256 + 0.030358 +tommath_int 256 - 0.0379908 +tommath_int 256 +(int)0.278945 +tommath_int 256 -(int)0.24642 +tommath_int 256 * 0.339108 +tommath_int 256 / 2.95225 +tommath_int 256 str 0.0502673 +tommath_int 256 % 3.00797 +tommath_int 256 | 0.136742 +tommath_int 256 & 0.142151 +tommath_int 256 ^ 0.135172 +tommath_int 256 << 0.0652246 +tommath_int 256 >> 0.258642 +tommath_int 512 + 0.0459287 +tommath_int 512 - 0.0491835 +tommath_int 512 +(int)0.304282 +tommath_int 512 -(int)0.255992 +tommath_int 512 * 0.969408 +tommath_int 512 / 4.65733 +tommath_int 512 str 0.117235 +tommath_int 512 % 4.71416 +tommath_int 512 | 0.152291 +tommath_int 512 & 0.149147 +tommath_int 512 ^ 0.145169 +tommath_int 512 << 0.0949903 +tommath_int 512 >> 0.287043 +tommath_int 1024 + 0.0754591 +tommath_int 1024 - 0.0762591 +tommath_int 1024 +(int)0.307346 +tommath_int 1024 -(int)0.28448 +tommath_int 1024 * 3.10664 +tommath_int 1024 / 11.5662 +tommath_int 1024 str 0.380373 +tommath_int 1024 % 11.5386 +tommath_int 1024 | 0.406628 +tommath_int 1024 & 0.397507 +tommath_int 1024 ^ 0.401671 +tommath_int 1024 << 0.168563 +tommath_int 1024 >> 0.495242 +fixed_int 64 + 0.0031173 +fixed_int 64 - 0.00359417 +fixed_int 64 +(int)0.00329336 +fixed_int 64 -(int)0.00353606 +fixed_int 64 * 0.0175309 +fixed_int 64 / 0.0973696 +fixed_int 64 str 0.00143356 +fixed_int 64 % 0.098458 +fixed_int 64 | 0.00314803 +fixed_int 64 & 0.0028732 +fixed_int 64 ^ 0.00287983 +fixed_int 64 << 0.0120907 +fixed_int 64 >> 0.0064833 +fixed_int 128 + 0.00696555 +fixed_int 128 - 0.00721041 +fixed_int 128 +(int)0.00370718 +fixed_int 128 -(int)0.00577573 +fixed_int 128 * 0.0388232 +fixed_int 128 / 0.260936 +fixed_int 128 str 0.00290281 +fixed_int 128 % 0.269155 +fixed_int 128 | 0.00548233 +fixed_int 128 & 0.00552933 +fixed_int 128 ^ 0.00543128 +fixed_int 128 << 0.0129147 +fixed_int 128 >> 0.00772857 +fixed_int 256 + 0.0163707 +fixed_int 256 - 0.0168213 +fixed_int 256 +(int)0.00995385 +fixed_int 256 -(int)0.0155184 +fixed_int 256 * 0.123609 +fixed_int 256 / 0.845628 +fixed_int 256 str 0.0099558 +fixed_int 256 % 0.849272 +fixed_int 256 | 0.0125434 +fixed_int 256 & 0.0125148 +fixed_int 256 ^ 0.0125726 +fixed_int 256 << 0.0214412 +fixed_int 256 >> 0.0186871 +fixed_int 512 + 0.0314806 +fixed_int 512 - 0.0323563 +fixed_int 512 +(int)0.0117467 +fixed_int 512 -(int)0.029385 +fixed_int 512 * 0.427489 +fixed_int 512 / 2.51371 +fixed_int 512 str 0.0372769 +fixed_int 512 % 2.55909 +fixed_int 512 | 0.0198161 +fixed_int 512 & 0.020299 +fixed_int 512 ^ 0.019987 +fixed_int 512 << 0.0249208 +fixed_int 512 >> 0.0218303 +fixed_int 1024 + 0.0596158 +fixed_int 1024 - 0.061385 +fixed_int 1024 +(int)0.0233483 +fixed_int 1024 -(int)0.0586271 +fixed_int 1024 * 1.46312 +fixed_int 1024 / 7.93136 +fixed_int 1024 str 0.188878 +fixed_int 1024 % 7.99106 +fixed_int 1024 | 0.034957 +fixed_int 1024 & 0.034856 +fixed_int 1024 ^ 0.034697 +fixed_int 1024 << 0.0341293 +fixed_int 1024 >> 0.0326372 +cpp_float 50 + 0.0242151 +cpp_float 50 - 0.0261498 +cpp_float 50 +(int)0.0484155 +cpp_float 50 -(int)0.0567601 +cpp_float 50 * 0.287216 +cpp_float 50 / 3.98153 +cpp_float 50 str 0.0192656 +cpp_float 100 + 0.029252 +cpp_float 100 - 0.030946 +cpp_float 100 +(int)0.0611055 +cpp_float 100 -(int)0.0626685 +cpp_float 100 * 0.586363 +cpp_float 100 / 8.11948 +cpp_float 100 str 0.0320398 +cpp_float 500 + 0.0584099 +cpp_float 500 - 0.0606388 +cpp_float 500 +(int)0.104123 +cpp_float 500 -(int)0.111692 +cpp_float 500 * 5.05269 +cpp_float 500 / 53.6099 +cpp_float 500 str 0.134302 +mpfr_float 50 + 0.0594147 +mpfr_float 50 - 0.0774183 +mpfr_float 50 +(int)0.108 +mpfr_float 50 -(int)0.13804 +mpfr_float 50 * 0.329636 +mpfr_float 50 / 1.62419 +mpfr_float 50 str 0.0289065 +mpfr_float 100 + 0.0639309 +mpfr_float 100 - 0.0810465 +mpfr_float 100 +(int)0.112839 +mpfr_float 100 -(int)0.145473 +mpfr_float 100 * 0.457067 +mpfr_float 100 / 2.23443 +mpfr_float 100 str 0.0373977 +mpfr_float 500 + 0.0771588 +mpfr_float 500 - 0.0947396 +mpfr_float 500 +(int)0.11675 +mpfr_float 500 -(int)0.154304 +mpfr_float 500 * 3.72612 +mpfr_float 500 / 13.4944 +mpfr_float 500 str 0.155578 +[section:float_performance Float Type Perfomance] +[table Operator * +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][1.0826 (0.287216s)][1.48086 (0.586363s)][1.57545 (5.05269s)]] +[[gmp_float][[*1] (0.265302s)][[*1] (0.395962s)][[*1] (3.20714s)]] +[[mpfr_float][1.24249 (0.329636s)][1.15432 (0.457067s)][1.16182 (3.72612s)]] +] +[table Operator + +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][[*1] (0.0242151s)][[*1] (0.029252s)][[*1] (0.0584099s)]] +[[gmp_float][4.55194 (0.110226s)][3.67516 (0.107506s)][2.42489 (0.141638s)]] +[[mpfr_float][2.45362 (0.0594147s)][2.18552 (0.0639309s)][1.32099 (0.0771588s)]] +] +[table Operator +(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][1.51995 (0.0484155s)][1.78781 (0.0611055s)][1.8309 (0.104123s)]] +[[gmp_float][[*1] (0.0318533s)][[*1] (0.0341789s)][[*1] (0.0568699s)]] +[[mpfr_float][3.39055 (0.108s)][3.30142 (0.112839s)][2.05293 (0.11675s)]] +] +[table Operator - +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][[*1] (0.0261498s)][[*1] (0.030946s)][[*1] (0.0606388s)]] +[[gmp_float][4.48753 (0.117348s)][3.75823 (0.116302s)][2.4823 (0.150524s)]] +[[mpfr_float][2.96057 (0.0774183s)][2.61897 (0.0810465s)][1.56236 (0.0947396s)]] +] +[table Operator -(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][[*1] (0.0567601s)][[*1] (0.0626685s)][[*1] (0.111692s)]] +[[gmp_float][2.27932 (0.129374s)][2.04821 (0.128358s)][1.48297 (0.165635s)]] +[[mpfr_float][2.43199 (0.13804s)][2.32131 (0.145473s)][1.38152 (0.154304s)]] +] +[table Operator / +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][3.2662 (3.98153s)][5.07021 (8.11948s)][6.78872 (53.6099s)]] +[[gmp_float][[*1] (1.21901s)][[*1] (1.60141s)][[*1] (7.89691s)]] +[[mpfr_float][1.33238 (1.62419s)][1.39529 (2.23443s)][1.70882 (13.4944s)]] +] +[table Operator str +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][1.46076 (0.0192656s)][1.59438 (0.0320398s)][[*1] (0.134302s)]] +[[gmp_float][[*1] (0.0131888s)][[*1] (0.0200954s)][1.01007 (0.135655s)]] +[[mpfr_float][2.19174 (0.0289065s)][1.86101 (0.0373977s)][1.15842 (0.155578s)]] +] +[endsect] +[section:integer_performance Integer Type Perfomance] +[table Operator % +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.098458s)][[*1] (0.269155s)][1.10039 (0.849272s)][2.92096 (2.55909s)][7.47157 (7.99106s)]] +[[gmp_int][6.63934 (0.653697s)][2.6753 (0.72007s)][[*1] (0.771794s)][[*1] (0.87611s)][[*1] (1.06953s)]] +[[tommath_int][18.5522 (1.82661s)][8.00831 (2.15548s)][3.89737 (3.00797s)][5.38078 (4.71416s)][10.7885 (11.5386s)]] +] +[table Operator & +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0028732s)][[*1] (0.00552933s)][[*1] (0.0125148s)][[*1] (0.020299s)][[*1] (0.034856s)]] +[[gmp_int][16.3018 (0.0468383s)][9.51109 (0.05259s)][5.20026 (0.0650802s)][4.46545 (0.0906443s)][3.99377 (0.139207s)]] +[[tommath_int][42.221 (0.121309s)][22.2471 (0.123011s)][11.3587 (0.142151s)][7.3475 (0.149147s)][11.4043 (0.397507s)]] +] +[table Operator * +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0175309s)][[*1] (0.0388232s)][[*1] (0.123609s)][[*1] (0.427489s)][[*1] (1.46312s)]] +[[gmp_int][2.93263 (0.0514117s)][1.70358 (0.0661383s)][1.01811 (0.125848s)][1.20692 (0.515943s)][1.03248 (1.51064s)]] +[[tommath_int][3.82476 (0.0670515s)][2.87425 (0.111587s)][2.74339 (0.339108s)][2.26768 (0.969408s)][2.1233 (3.10664s)]] +] +[table Operator + +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0031173s)][[*1] (0.00696555s)][[*1] (0.0163707s)][[*1] (0.0314806s)][[*1] (0.0596158s)]] +[[gmp_int][12.7096 (0.0396194s)][5.89178 (0.0410395s)][2.66402 (0.0436119s)][1.59356 (0.0501664s)][1.11155 (0.0662662s)]] +[[tommath_int][6.14357 (0.0191513s)][3.16177 (0.0220235s)][1.85441 (0.030358s)][1.45895 (0.0459287s)][1.26576 (0.0754591s)]] +] +[table Operator +(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00329336s)][[*1] (0.00370718s)][[*1] (0.00995385s)][[*1] (0.0117467s)][[*1] (0.0233483s)]] +[[gmp_int][9.56378 (0.031497s)][8.0588 (0.0298754s)][4.15824 (0.0413905s)][5.47974 (0.0643691s)][4.46265 (0.104195s)]] +[[tommath_int][76.2624 (0.25116s)][71.3973 (0.264682s)][28.0238 (0.278945s)][25.9035 (0.304282s)][13.1635 (0.307346s)]] +] +[table Operator - +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00359417s)][[*1] (0.00721041s)][[*1] (0.0168213s)][[*1] (0.0323563s)][[*1] (0.061385s)]] +[[gmp_int][10.6794 (0.0383836s)][5.65517 (0.0407761s)][2.63634 (0.0443466s)][1.59979 (0.0517632s)][1.13379 (0.0695978s)]] +[[tommath_int][6.43615 (0.0231326s)][3.6161 (0.0260736s)][2.2585 (0.0379908s)][1.52006 (0.0491835s)][1.24231 (0.0762591s)]] +] +[table Operator -(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00353606s)][[*1] (0.00577573s)][[*1] (0.0155184s)][[*1] (0.029385s)][[*1] (0.0586271s)]] +[[gmp_int][9.04434 (0.0319814s)][5.12393 (0.0295945s)][2.50743 (0.0389112s)][2.01898 (0.0593277s)][1.68381 (0.098717s)]] +[[tommath_int][60.2486 (0.213043s)][38.3032 (0.221229s)][15.8792 (0.24642s)][8.71166 (0.255992s)][4.85236 (0.28448s)]] +] +[table Operator / +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0973696s)][[*1] (0.260936s)][[*1] (0.845628s)][2.4597 (2.51371s)][6.21836 (7.93136s)]] +[[gmp_int][7.66851 (0.74668s)][3.17732 (0.829077s)][1.05006 (0.887961s)][[*1] (1.02196s)][[*1] (1.27547s)]] +[[tommath_int][18.3945 (1.79107s)][8.11201 (2.11671s)][3.49119 (2.95225s)][4.55727 (4.65733s)][9.06813 (11.5662s)]] +] +[table Operator << +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0120907s)][[*1] (0.0129147s)][[*1] (0.0214412s)][[*1] (0.0249208s)][[*1] (0.0341293s)]] +[[gmp_int][1.93756 (0.0234265s)][1.97785 (0.0255433s)][1.43607 (0.0307911s)][1.815 (0.0452311s)][2.00167 (0.0683156s)]] +[[tommath_int][3.42859 (0.0414542s)][3.04951 (0.0393836s)][3.04202 (0.0652246s)][3.81169 (0.0949903s)][4.93896 (0.168563s)]] +] +[table Operator >> +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0064833s)][[*1] (0.00772857s)][[*1] (0.0186871s)][[*1] (0.0218303s)][[*1] (0.0326372s)]] +[[gmp_int][4.212 (0.0273077s)][3.72696 (0.0288041s)][1.55046 (0.0289735s)][1.51403 (0.0330518s)][1.13695 (0.037107s)]] +[[tommath_int][33.9418 (0.220055s)][29.104 (0.224932s)][13.8407 (0.258642s)][13.1488 (0.287043s)][15.1741 (0.495242s)]] +] +[table Operator ^ +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00287983s)][[*1] (0.00543128s)][[*1] (0.0125726s)][[*1] (0.019987s)][[*1] (0.034697s)]] +[[gmp_int][14.938 (0.0430189s)][9.00973 (0.0489344s)][4.83803 (0.0608267s)][4.33359 (0.0866154s)][3.89518 (0.135151s)]] +[[tommath_int][41.6898 (0.12006s)][22.4393 (0.121874s)][10.7513 (0.135172s)][7.2632 (0.145169s)][11.5765 (0.401671s)]] +] +[table Operator str +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][1.03557 (0.00143356s)][1.39844 (0.00290281s)][3.14081 (0.0099558s)][6.28067 (0.0372769s)][13.2101 (0.188878s)]] +[[gmp_int][[*1] (0.00138432s)][[*1] (0.00207575s)][[*1] (0.00316982s)][[*1] (0.00593518s)][[*1] (0.014298s)]] +[[tommath_int][5.31194 (0.00735345s)][7.90724 (0.0164135s)][15.8581 (0.0502673s)][19.7526 (0.117235s)][26.6031 (0.380373s)]] +] +[table Operator | +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00314803s)][[*1] (0.00548233s)][[*1] (0.0125434s)][[*1] (0.0198161s)][[*1] (0.034957s)]] +[[gmp_int][13.0622 (0.0411201s)][8.63936 (0.0473638s)][4.6932 (0.0588688s)][4.25792 (0.0843755s)][3.78236 (0.13222s)]] +[[tommath_int][38.5896 (0.121481s)][22.3609 (0.12259s)][10.9015 (0.136742s)][7.68521 (0.152291s)][11.6322 (0.406628s)]] +] +[endsect] +[section:rational_performance Rational Type Perfomance] +[table Operator * +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (2.63854s)][[*1] (5.8426s)][[*1] (12.6093s)][[*1] (28.654s)][[*1] (68.7938s)]] +] +[table Operator + +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (1.47058s)][[*1] (3.18485s)][[*1] (6.67422s)][[*1] (15.5117s)][[*1] (37.688s)]] +] +[table Operator +(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.654198s)][[*1] (0.66159s)][[*1] (0.705687s)][[*1] (0.817714s)][[*1] (0.925526s)]] +] +[table Operator - +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (1.47214s)][[*1] (3.1691s)][[*1] (6.67532s)][[*1] (15.6279s)][[*1] (37.6616s)]] +] +[table Operator -(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.646626s)][[*1] (0.657712s)][[*1] (0.704919s)][[*1] (0.818141s)][[*1] (0.935657s)]] +] +[table Operator / +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (9.24093s)][[*1] (14.6415s)][[*1] (26.2341s)][[*1] (52.808s)][[*1] (119.722s)]] +] +[table Operator str +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.00265152s)][[*1] (0.00372512s)][[*1] (0.00573139s)][[*1] (0.011966s)][[*1] (0.0288116s)]] +] +[endsect] diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index ee1eb0ea..f151ec8d 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -50,6 +50,12 @@ #include #include +#include +#include +#include +#include +#include +#include #include #include @@ -134,8 +140,8 @@ struct tester stopwatch w; for(unsigned i = 0; i < 1000; ++i) { - for(unsigned i = 0; i < b.size(); ++i) - a[i] = b[i] * c[i]; + for(unsigned k = 0; k < b.size(); ++k) + a[k] = b[k] * c[k]; } return boost::chrono::duration_cast >(w.elapsed()).count(); } @@ -253,7 +259,7 @@ private: typedef typename T::backend_type::exponent_type e_type; static boost::random::uniform_int_distribution ui(0, std::numeric_limits::max_exponent - 10); - return ldexp(val, ui(gen)); + return ldexp(val, static_cast(ui(gen))); } T generate_random(const boost::mpl::int_&) { @@ -286,6 +292,47 @@ private: val %= max_val; return val; } + T generate_random(const boost::mpl::int_&) + { + typedef boost::random::mt19937::result_type random_type; + typedef typename boost::multiprecision::component_type::type IntType; + + IntType max_val; + unsigned digits; + if(std::numeric_limits::is_bounded) + { + max_val = (std::numeric_limits::max)(); + digits = std::numeric_limits::digits; + } + else + { + max_val = IntType(1) << bits_wanted; + digits = bits_wanted; + } + + unsigned bits_per_r_val = std::numeric_limits::digits - 1; + while((random_type(1) << bits_per_r_val) > (gen.max)()) --bits_per_r_val; + + unsigned terms_needed = digits / bits_per_r_val + 1; + + IntType val = 0; + IntType denom = 0; + for(unsigned i = 0; i < terms_needed; ++i) + { + val *= (gen.max)(); + val += gen(); + } + for(unsigned i = 0; i < terms_needed; ++i) + { + denom *= (gen.max)(); + denom += gen(); + } + if(denom == 0) + denom = 1; + val %= max_val; + denom %= max_val; + return T(val, denom); + } std::vector a, b, c, small; static boost::random::mt19937 gen; }; @@ -293,16 +340,46 @@ private: template boost::random::mt19937 tester::gen; +const char* category_name(const boost::mpl::int_&) +{ + return "integer"; +} +const char* category_name(const boost::mpl::int_&) +{ + return "float"; +} +const char* category_name(const boost::mpl::int_&) +{ + return "rational"; +} + +// +// Keys in order are: +// Category +// Operator +// Type +// Precision +// Time +// +std::map > > > result_table; + +void report_result(const char* cat, const char* type, const char* op, unsigned precision, double time) +{ + std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << op << time << std::endl; + result_table[cat][op][type][precision] = time; +} + template void test_int_ops(tester& t, const char* type, unsigned precision, const boost::mpl::int_&) { - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "%" << t.test_mod() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "|" << t.test_or() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "&" << t.test_and() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "^" << t.test_xor() << std::endl; - //std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "~" << t.test_complement() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "<<" << t.test_left_shift() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << ">>" << t.test_right_shift() << std::endl; + const char* cat = "integer"; + report_result(cat, type, "%", precision, t.test_mod()); + report_result(cat, type, "|", precision, t.test_or()); + report_result(cat, type, "&", precision, t.test_and()); + report_result(cat, type, "^", precision, t.test_xor()); + //report_result(cat, type, "~", precision, t.test_complement()); + report_result(cat, type, "<<", precision, t.test_left_shift()); + report_result(cat, type, ">>", precision, t.test_right_shift()); } template void test_int_ops(tester& t, const char* type, unsigned precision, const U&) @@ -314,17 +391,98 @@ void test(const char* type, unsigned precision) { bits_wanted = precision; tester::value> t; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "+" << t.test_add() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "-" << t.test_subtract() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "+ (int)" << t.test_add_int() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "- (int)" << t.test_subtract_int() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "*" << t.test_multiply() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "/" << t.test_divide() << std::endl; - std::cout << std::left << std::setw(15) << type << std::setw(10) << precision << std::setw(5) << "str" << t.test_str() << std::endl; + const char* cat = category_name(typename boost::multiprecision::number_category::type()); + // + // call t.test_multiply() first so that the destination operands are + // forced to perform whatever memory allocation may be needed. That way + // we measure only algorithm performance, and not memory allocation effects. + // + t.test_multiply(); + // + // Now the actual tests: + // + report_result(cat, type, "+", precision, t.test_add()); + report_result(cat, type, "-", precision, t.test_subtract()); + report_result(cat, type, "+(int)", precision, t.test_add_int()); + report_result(cat, type, "-(int)", precision, t.test_subtract_int()); + report_result(cat, type, "*", precision, t.test_multiply()); + report_result(cat, type, "/", precision, t.test_divide()); + report_result(cat, type, "str", precision, t.test_str()); test_int_ops(t, type, precision, typename boost::multiprecision::number_category::type()); } +void quickbook_results() +{ + // + // Keys in order are: + // Category + // Operator + // Type + // Precision + // Time + // + typedef std::map > > >::const_iterator category_iterator; + typedef std::map > >::const_iterator operator_iterator; + typedef std::map >::const_iterator type_iterator; + typedef std::map::const_iterator precision_iterator; + + for(category_iterator i = result_table.begin(); i != result_table.end(); ++i) + { + std::string cat = i->first; + cat[0] = std::toupper(cat[0]); + std::cout << "[section:" << i->first << "_performance " << cat << " Type Perfomance]" << std::endl; + + for(operator_iterator j = i->second.begin(); j != i->second.end(); ++j) + { + std::string op = j->first; + std::cout << "[table Operator " << op << std::endl; + std::cout << "[[Backend]"; + + for(precision_iterator k = j->second.begin()->second.begin(); k != j->second.begin()->second.end(); ++k) + { + std::cout << "[" << k->first << " Bits]"; + } + std::cout << "]\n"; + + std::vector best_times(j->second.begin()->second.size(), (std::numeric_limits::max)()); + for(unsigned m = 0; m < j->second.begin()->second.size(); ++m) + { + for(type_iterator k = j->second.begin(); k != j->second.end(); ++k) + { + precision_iterator l = k->second.begin(); + std::advance(l, m); + if(best_times[m] > l->second) + best_times[m] = l->second; + } + } + + for(type_iterator k = j->second.begin(); k != j->second.end(); ++k) + { + std::cout << "[[" << k->first << "]"; + + unsigned m = 0; + for(precision_iterator l = k->second.begin(); l != k->second.end(); ++l) + { + double rel_time = l->second / best_times[m]; + if(rel_time == 1) + std::cout << "[[*" << rel_time << "]"; + else + std::cout << "[" << rel_time; + std::cout << " (" << l->second << "s)]"; + ++m; + } + + std::cout << "]\n"; + } + + std::cout << "]\n"; + } + + std::cout << "[endsect]" << std::endl; + } +} + int main() { @@ -339,6 +497,12 @@ int main() test("gmp_int", 256); test("gmp_int", 512); test("gmp_int", 1024); + + test("mpq_rational", 64); + test("mpq_rational", 128); + test("mpq_rational", 256); + test("mpq_rational", 512); + test("mpq_rational", 1024); #endif #ifdef TEST_TOMMATH test("tommath_int", 64); @@ -346,13 +510,23 @@ int main() test("tommath_int", 256); test("tommath_int", 512); test("tommath_int", 1024); + /* + // + // These are actually too slow to test!!! + // + test("mp_rational", 64); + test("mp_rational", 128); + test("mp_rational", 256); + test("mp_rational", 512); + test("mp_rational", 1024); + */ #endif #ifdef TEST_FIXED_INT - test > >("mp_int64_t", 64); - test("mp_int128_t", 128); - test("mp_int256_t", 256); - test("mp_int512_t", 512); - test > >("mp_int1024_t", 1024); + test > >("fixed_int", 64); + test("fixed_int", 128); + test("fixed_int", 256); + test("fixed_int", 512); + test > >("fixed_int", 1024); #endif #ifdef TEST_CPP_FLOAT test("cpp_float", 50); @@ -364,6 +538,7 @@ int main() test("mpfr_float", 100); test("mpfr_float", 500); #endif + quickbook_results(); return 0; } diff --git a/performance/sf_performance-msvc-10.log b/performance/sf_performance-msvc-10.log index 82722d81..9dc8de7b 100644 --- a/performance/sf_performance-msvc-10.log +++ b/performance/sf_performance-msvc-10.log @@ -5,65 +5,65 @@ 13 27 Testing Bessel Functions..... -Time for mpfr_float_50 = 6.2742 seconds +Time for mpfr_float_50 = 6.47208 seconds Total allocations for mpfr_float_50 = 2684348 -Time for mpf_float_50 = 11.2255 seconds +Time for mpf_float_50 = 11.6627 seconds Total allocations for mpf_float_50 = 2601366 -Time for cpp_float_50 = 19.5712 seconds +Time for cpp_float_50 = 20.2855 seconds Total allocations for cpp_float_50 = 0 -Time for mpfr_class (50 digits) = 6.11757 seconds +Time for mpfr_class (50 digits) = 6.48063 seconds Total allocations for mpfr_class (50 digits) = 3946031 -Time for mpreal (50 digits) = 9.38756 seconds +Time for mpreal (50 digits) = 9.98151 seconds Total allocations for mpreal (50 digits) = 13223017 -Time for mpfr_float_100 = 9.61944 seconds +Time for mpfr_float_100 = 10.154 seconds Total allocations for mpfr_float_50 = 3671485 -Time for mpf_float_100 = 8.29211 seconds +Time for mpf_float_100 = 8.51179 seconds Total allocations for mpf_float_100 = 3593669 -Time for cpp_float_100 = 20.4485 seconds +Time for cpp_float_100 = 21.0198 seconds Total allocations for cpp_float_100 = 0 -Time for mpfr_class (100 digits) = 9.88427 seconds +Time for mpfr_class (100 digits) = 9.80571 seconds Total allocations for mpfr_class (100 digits) = 5447348 -Time for mpreal (100 digits) = 13.7811 seconds +Time for mpreal (100 digits) = 13.7021 seconds Total allocations for mpreal (100 digits) = 16671065 Testing Polynomial Evaluation..... -Time for mpfr_float_50 = 0.00839464 seconds +Time for mpfr_float_50 = 0.00823841 seconds Total allocations for mpfr_float_50 = 2996 -Time for mpf_float_50 = 0.0042138 seconds +Time for mpf_float_50 = 0.00401608 seconds Total allocations for mpf_float_50 = 2996 -Time for cpp_float_50 = 0.0046054 seconds +Time for cpp_float_50 = 0.00492116 seconds Total allocations for cpp_float_50 = 0 -Time for mpfr_class (50 digits) = 0.00990538 seconds +Time for mpfr_class (50 digits) = 0.00935629 seconds Total allocations for mpfr_class (50 digits) = 12976 -Time for mpreal (50 digits) = 0.0152955 seconds +Time for mpreal (50 digits) = 0.0148374 seconds Total allocations for mpreal (50 digits = 27947 -Time for mpfr_float_100 = 0.00957098 seconds +Time for mpfr_float_100 = 0.00948452 seconds Total allocations for mpfr_float_100 = 2996 -Time for mpf_float_100 = 0.00418726 seconds +Time for mpf_float_100 = 0.00390071 seconds Total allocations for mpf_float_100 = 2996 -Time for cpp_float_100 = 0.0090742 seconds +Time for cpp_float_100 = 0.00893563 seconds Total allocations for cpp_float_100 = 0 -Time for mpfr_class (100 digits) = 0.011094 seconds +Time for mpfr_class (100 digits) = 0.0106166 seconds Total allocations for mpfr_class (100 digits) = 12976 -Time for mpreal (100 digits) = 0.0172028 seconds +Time for mpreal (100 digits) = 0.0162364 seconds Total allocations for mpreal (100 digits) = 27947 Testing Non-Central T..... -Time for mpfr_float_50 = 260.324 seconds +Time for mpfr_float_50 = 258.087 seconds Total allocations for mpfr_float_50 = 139149049 -Time for mpf_float_50 = 201.95 seconds +Time for mpf_float_50 = 197.303 seconds Total allocations for mpf_float_50 = 134600354 -Time for cpp_float_50 = 340.292 seconds +Time for cpp_float_50 = 334.503 seconds Total allocations for cpp_float_50 = 0 -Time for mpfr_class (50 digits) = 269.03 seconds +Time for mpfr_class (50 digits) = 266.389 seconds Total allocations for mpfr_class (50 digits) = 252401115 -Time for mpreal (50 digits) = 350.758 seconds +Time for mpreal (50 digits) = 346.641 seconds Total allocations for mpreal (50 digits) = 447009420 -Time for mpfr_float_100 = 519.421 seconds +Time for mpfr_float_100 = 516.741 seconds Total allocations for mpfr_float_100 = 220400854 -Time for mpf_float_100 = 404.593 seconds +Time for mpf_float_100 = 397.302 seconds Total allocations for mpf_float_100 = 212307349 -Time for cpp_float_100 = 1118.91 seconds +Time for cpp_float_100 = 1064.53 seconds Total allocations for cpp_float_100 = 0 -Time for mpfr_class (100 digits) = 541.35 seconds +Time for mpfr_class (100 digits) = 525.74 seconds Total allocations for mpfr_class (100 digits) = 407154781 -Time for mpreal (100 digits) = 677.265 seconds +Time for mpreal (100 digits) = 649.941 seconds Total allocations for mpreal (100 digits) = 724581024 From 66b67a1c095acd485ee75e4ded68822f9664ab98 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 16 Jan 2012 18:26:50 +0000 Subject: [PATCH 102/256] Refactor SF tests for much faster compile times. [SVN r76545] --- test/Jamfile.v2 | 3 +++ test/math/test_bessel_i.cpp | 3 ++- test/math/test_bessel_j.cpp | 3 ++- test/math/test_bessel_k.cpp | 3 ++- test/math/test_bessel_y.cpp | 3 ++- test/math/test_beta.cpp | 3 ++- test/math/test_binomial_coeff.cpp | 3 ++- test/math/test_carlson.cpp | 6 +++++- test/math/test_cbrt.cpp | 3 ++- test/math/test_digamma.cpp | 3 ++- test/math/test_ellint_1.cpp | 3 ++- test/math/test_ellint_2.cpp | 3 ++- test/math/test_ellint_3.cpp | 3 ++- test/math/test_erf.cpp | 3 ++- test/math/test_expint.cpp | 3 ++- test/math/test_gamma.cpp | 3 ++- test/math/test_hermite.cpp | 3 ++- test/math/test_ibeta.cpp | 3 ++- test/math/test_ibeta_2.cpp | 3 ++- test/math/test_ibeta_3.cpp | 3 ++- test/math/test_ibeta_4.cpp | 3 ++- test/math/test_ibeta_inv_1.cpp | 3 ++- test/math/test_ibeta_inv_ab_4.cpp | 3 ++- test/math/test_igamma.cpp | 3 ++- test/math/test_igamma_inv.cpp | 3 ++- test/math/test_igamma_inva.cpp | 3 ++- test/math/test_laguerre.cpp | 3 ++- test/math/test_legendre.cpp | 3 ++- test/math/test_tgamma_ratio.cpp | 3 ++- test/math/test_zeta.cpp | 3 ++- 30 files changed, 64 insertions(+), 29 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 04133118..3e547c5b 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -654,6 +654,7 @@ if $(enable-specfun) speed BOOST_ALL_NO_LIB msvc:-bigobj + release : $(source:B)_mpfr ; run $(source) gmp /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static : # command line @@ -664,6 +665,7 @@ if $(enable-specfun) TEST_MPF_50 BOOST_ALL_NO_LIB msvc:-bigobj + release : $(source:B)_mpf ; run $(source) /boost/test//boost_test_exec_monitor/static /boost/regex//boost_regex/static : # command line @@ -673,6 +675,7 @@ if $(enable-specfun) BOOST_ALL_NO_LIB speed msvc:-bigobj + release : $(source:B)_cpp_float ; } } diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index 168563e2..d210de6a 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -41,8 +41,9 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) +#include #include "libs/math/test/test_bessel_i.hpp" void expected_results() diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index b2e6b936..5be8f196 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -41,8 +41,9 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) +#include #include "libs/math/test/test_bessel_j.hpp" void expected_results() diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp index 1432a4e3..f1adb73a 100644 --- a/test/math/test_bessel_k.cpp +++ b/test/math/test_bessel_k.cpp @@ -42,8 +42,9 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) +#include #include "libs/math/test/test_bessel_k.hpp" void expected_results() diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index e224865a..7dde570a 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -41,8 +41,9 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) +#include #include "libs/math/test/test_bessel_y.hpp" void expected_results() diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index 83849258..cfd8848d 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -41,8 +41,9 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) +#include #include "libs/math/test/test_beta.hpp" void expected_results() diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index 6272d647..67923858 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -41,8 +41,9 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) +#include #include "libs/math/test/test_binomial_coeff.hpp" void expected_results() diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp index b698bd0c..353380ed 100644 --- a/test/math/test_carlson.cpp +++ b/test/math/test_carlson.cpp @@ -36,9 +36,13 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include +#include +#include +#include #include "libs/math/test/test_carlson.hpp" void expected_results() diff --git a/test/math/test_cbrt.cpp b/test/math/test_cbrt.cpp index 5c3b6906..7c21cd3e 100644 --- a/test/math/test_cbrt.cpp +++ b/test/math/test_cbrt.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_cbrt.hpp" void expected_results() diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp index 1098ae6e..6aae7dd8 100644 --- a/test/math/test_digamma.cpp +++ b/test/math/test_digamma.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_digamma.hpp" void expected_results() diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp index a9b88450..b5ce8e4d 100644 --- a/test/math/test_ellint_1.cpp +++ b/test/math/test_ellint_1.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_ellint_1.hpp" void expected_results() diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp index 4accc451..67300ff5 100644 --- a/test/math/test_ellint_2.cpp +++ b/test/math/test_ellint_2.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_ellint_2.hpp" void expected_results() diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp index 880d4743..feffa5ed 100644 --- a/test/math/test_ellint_3.cpp +++ b/test/math/test_ellint_3.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_ellint_3.hpp" void expected_results() diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp index f056d2bd..878b70c6 100644 --- a/test/math/test_erf.cpp +++ b/test/math/test_erf.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_erf.hpp" void expected_results() diff --git a/test/math/test_expint.cpp b/test/math/test_expint.cpp index 4f19cb0c..8758fca2 100644 --- a/test/math/test_expint.cpp +++ b/test/math/test_expint.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_expint.hpp" void expected_results() diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index 9e6528e5..65ae04bd 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_gamma.hpp" void expected_results() diff --git a/test/math/test_hermite.cpp b/test/math/test_hermite.cpp index bd776eb4..82fafd9b 100644 --- a/test/math/test_hermite.cpp +++ b/test/math/test_hermite.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_hermite.hpp" void expected_results() diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index 4cf95bb1..a3da2063 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -37,11 +37,12 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT #define TEST_DATA 1 +#include #include "libs/math/test/test_ibeta.hpp" void expected_results() diff --git a/test/math/test_ibeta_2.cpp b/test/math/test_ibeta_2.cpp index a149c837..21f9b840 100644 --- a/test/math/test_ibeta_2.cpp +++ b/test/math/test_ibeta_2.cpp @@ -37,11 +37,12 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT #define TEST_DATA 2 +#include #include "libs/math/test/test_ibeta.hpp" void expected_results() diff --git a/test/math/test_ibeta_3.cpp b/test/math/test_ibeta_3.cpp index 6f42b026..89181669 100644 --- a/test/math/test_ibeta_3.cpp +++ b/test/math/test_ibeta_3.cpp @@ -37,11 +37,12 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT #define TEST_DATA 3 +#include #include "libs/math/test/test_ibeta.hpp" void expected_results() diff --git a/test/math/test_ibeta_4.cpp b/test/math/test_ibeta_4.cpp index d5c665bd..5d0783c7 100644 --- a/test/math/test_ibeta_4.cpp +++ b/test/math/test_ibeta_4.cpp @@ -37,11 +37,12 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT #define TEST_DATA 4 +#include #include "libs/math/test/test_ibeta.hpp" void expected_results() diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index 2b3b616d..8171686a 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -37,11 +37,12 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT #define TEST_DATA 4 +#include #include "libs/math/test/test_ibeta_inv.hpp" void expected_results() diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index 4ff6dbca..6caba045 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -36,12 +36,13 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT #define TEST_DATA 4 #define FULL_TEST +#include #include "libs/math/test/test_ibeta_inv_ab.hpp" void expected_results() diff --git a/test/math/test_igamma.cpp b/test/math/test_igamma.cpp index ee60a91b..6f9da83c 100644 --- a/test/math/test_igamma.cpp +++ b/test/math/test_igamma.cpp @@ -37,8 +37,9 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) +#include #include "libs/math/test/test_igamma.hpp" void expected_results() diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index 44c5a718..2b530a9f 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -37,9 +37,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_igamma_inv.hpp" void expected_results() diff --git a/test/math/test_igamma_inva.cpp b/test/math/test_igamma_inva.cpp index 7cca029c..2f6dfe5e 100644 --- a/test/math/test_igamma_inva.cpp +++ b/test/math/test_igamma_inva.cpp @@ -37,9 +37,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_igamma_inva.hpp" void expected_results() diff --git a/test/math/test_laguerre.cpp b/test/math/test_laguerre.cpp index da304c5d..32890c32 100644 --- a/test/math/test_laguerre.cpp +++ b/test/math/test_laguerre.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_laguerre.hpp" void expected_results() diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp index 2c0a6787..1311d4f7 100644 --- a/test/math/test_legendre.cpp +++ b/test/math/test_legendre.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_legendre.hpp" void expected_results() diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp index 71d45a79..8e5d8629 100644 --- a/test/math/test_tgamma_ratio.cpp +++ b/test/math/test_tgamma_ratio.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_tgamma_ratio.hpp" void expected_results() diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index b4503eb1..78800950 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -36,9 +36,10 @@ #include #endif -#define SC_(x) T(BOOST_STRINGIZE(x)) +#define SC_(x) BOOST_STRINGIZE(x) #define TEST_UDT +#include #include "libs/math/test/test_zeta.hpp" void expected_results() From ca5a793b3dcf2c373cce7b9718a9c8b04319dde1 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 17 Jan 2012 13:06:33 +0000 Subject: [PATCH 103/256] Rejig intmax_t and long long usage to be much more consistent. [SVN r76550] --- .../multiprecision/arithmetic_backend.hpp | 8 +++---- .../concepts/mp_number_architypes.hpp | 16 ++++++------- include/boost/multiprecision/cpp_float.hpp | 6 ++--- include/boost/multiprecision/fixed_int.hpp | 23 +++++++++--------- include/boost/multiprecision/gmp.hpp | 24 +++++++++---------- include/boost/multiprecision/mpfr.hpp | 10 ++++---- include/boost/multiprecision/tommath.hpp | 8 +++---- 7 files changed, 47 insertions(+), 48 deletions(-) diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index b213c819..8225bd0e 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -39,12 +39,12 @@ struct arithmetic_backend m_value = o.m_value; return *this; } - arithmetic_backend& operator = (boost::uintmax_t i) + arithmetic_backend& operator = (unsigned long long i) { m_value = i; return *this; } - arithmetic_backend& operator = (boost::intmax_t i) + arithmetic_backend& operator = (long long i) { m_value = i; return *this; @@ -78,11 +78,11 @@ struct arithmetic_backend { return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); } - int compare(boost::intmax_t i)const + int compare(long long i)const { return m_value > i ? 1 : (m_value < i ? -1 : 0); } - int compare(boost::uintmax_t i)const + int compare(unsigned long long i)const { return m_value > i ? 1 : (m_value < i ? -1 : 0); } diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index d8380e93..bfa941be 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -45,13 +45,13 @@ struct mp_number_backend_float_architype std::cout << "Assignment (" << m_value << ")" << std::endl; return *this; } - mp_number_backend_float_architype& operator = (boost::uintmax_t i) + mp_number_backend_float_architype& operator = (unsigned long long i) { m_value = i; std::cout << "UInt Assignment (" << i << ")" << std::endl; return *this; } - mp_number_backend_float_architype& operator = (boost::intmax_t i) + mp_number_backend_float_architype& operator = (long long i) { m_value = i; std::cout << "Int Assignment (" << i << ")" << std::endl; @@ -104,12 +104,12 @@ struct mp_number_backend_float_architype std::cout << "Comparison" << std::endl; return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); } - int compare(boost::intmax_t i)const + int compare(long long i)const { std::cout << "Comparison with int" << std::endl; return m_value > i ? 1 : (m_value < i ? -1 : 0); } - int compare(boost::uintmax_t i)const + int compare(unsigned long long i)const { std::cout << "Comparison with unsigned" << std::endl; return m_value > i ? 1 : (m_value < i ? -1 : 0); @@ -143,13 +143,13 @@ inline void divide(mp_number_backend_float_architype& result, const mp_number_ba result.m_value /= o.m_value; } -inline void convert_to(boost::uintmax_t* result, const mp_number_backend_float_architype& val) +inline void convert_to(unsigned long long* result, const mp_number_backend_float_architype& val) { - *result = static_cast(val.m_value); + *result = static_cast(val.m_value); } -inline void convert_to(boost::intmax_t* result, const mp_number_backend_float_architype& val) +inline void convert_to(long long* result, const mp_number_backend_float_architype& val) { - *result = static_cast(val.m_value); + *result = static_cast(val.m_value); } inline void convert_to(long double* result, mp_number_backend_float_architype& val) { diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 968e29c1..12cde7b4 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1815,7 +1815,7 @@ bool cpp_float::rd_string(const char* const s) ) { // Remove the exponent part from the string. - exp = boost::lexical_cast(static_cast(str.c_str() + (pos + 1u))); + exp = boost::lexical_cast(static_cast(str.c_str() + (pos + 1u))); str = str.substr(static_cast(0u), pos); } @@ -2059,7 +2059,7 @@ bool cpp_float::rd_string(const char* const s) } template -cpp_float::cpp_float(const double mantissa, const boost::int64_t exponent) +cpp_float::cpp_float(const double mantissa, const long long exponent) : data (), exp (static_cast(0)), neg (false), @@ -2245,7 +2245,7 @@ boost::uint32_t cpp_float::div_loop_n(boost::uint32_t* const u, boost: } template -cpp_float cpp_float::pow2(const boost::int64_t p) +cpp_float cpp_float::pow2(const long long p) { // Create a static const table of p^2 for -128 < p < +128. // Note: The size of this table must be odd-numbered and diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index c5eebfa4..7dda8ff5 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -26,10 +26,9 @@ template struct fixed_int { typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list float_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; - typedef limb_type limb_type; BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(unsigned, limb_count = Bits / limb_bits + (Bits % limb_bits ? 1 : 0)); BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); @@ -365,7 +364,7 @@ inline void add(fixed_int& result, const fixed_int& for(int i = fixed_int::limb_count - 1; i >= 0; --i) { carry += static_cast(a.data()[i]) + static_cast(b.data()[i]); - result.data()[i] = static_cast::limb_type>(carry); + result.data()[i] = static_cast(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; @@ -379,7 +378,7 @@ inline void add(fixed_int& result, const limb_type& o) for(int i = fixed_int::limb_count - 1; carry && i >= 0; --i) { carry += static_cast(result.data()[i]); - result.data()[i] = static_cast::limb_type>(carry); + result.data()[i] = static_cast(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; @@ -399,12 +398,12 @@ inline void subtract(fixed_int& result, const limb_type& o) // This is the same code as for addition, with the twist that we negate o "on the fly": double_limb_type carry = static_cast(result.data()[fixed_int::limb_count - 1]) + 1uLL + static_cast(~o); - result.data()[fixed_int::limb_count - 1] = static_cast::limb_type>(carry); + result.data()[fixed_int::limb_count - 1] = static_cast(carry); carry >>= fixed_int::limb_bits; for(int i = fixed_int::limb_count - 2; i >= 0; --i) { carry += static_cast(result.data()[i]) + 0xFFFFFFFF; - result.data()[i] = static_cast::limb_type>(carry); + result.data()[i] = static_cast(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; @@ -452,7 +451,7 @@ inline void subtract(fixed_int& result, const fixed_int::limb_count - 1; i >= 0; --i) { carry += static_cast(a.data()[i]) + static_cast(~b.data()[i]); - result.data()[i] = static_cast::limb_type>(carry); + result.data()[i] = static_cast(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; @@ -483,7 +482,7 @@ inline void multiply(fixed_int& result, const fixed_int(a.data()[i]) * static_cast(b.data()[j]); carry += result.data()[i + j + 1 - fixed_int::limb_count]; - result.data()[i + j + 1 - fixed_int::limb_count] = static_cast::limb_type>(carry); + result.data()[i + j + 1 - fixed_int::limb_count] = static_cast(carry); carry >>= fixed_int::limb_bits; } carry = 0; @@ -504,7 +503,7 @@ inline void multiply(fixed_int& result, const limb_type& a) for(int i = fixed_int::limb_count - 1; i >= 0; --i) { carry += static_cast(result.data()[i]) * static_cast(a); - result.data()[i] = static_cast::limb_type>(carry); + result.data()[i] = static_cast(carry); carry >>= fixed_int::limb_bits; } result.data()[0] &= fixed_int::upper_limb_mask; @@ -761,7 +760,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1) ? (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1] : r.data()[r_order]; b = (y_order < fixed_int::limb_count - 1) ? (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] : (static_cast(y.data()[y_order]) << fixed_int::limb_bits); v = a / b; - guess = static_cast::limb_type>(v); + guess = static_cast(v); //guess = r.data()[r_order] / y.data()[y_order]; } // @@ -784,7 +783,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1; i >= static_cast(shift); --i) { carry += static_cast(y.data()[i]) * static_cast(guess); - t.data()[i - shift] = static_cast::limb_type>(carry); + t.data()[i - shift] = static_cast(carry); carry >>= fixed_int::limb_bits; } t.data()[0] &= fixed_int::upper_limb_mask; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 90cf2fb7..d4bdb350 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -63,9 +63,9 @@ struct gmp_float_imp return *this; } #endif - gmp_float_imp& operator = (boost::uintmax_t i) + gmp_float_imp& operator = (unsigned long long i) { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpf_t t; mpf_init2(t, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); @@ -82,11 +82,11 @@ struct gmp_float_imp mpf_clear(t); return *this; } - gmp_float_imp& operator = (boost::intmax_t i) + gmp_float_imp& operator = (long long i) { BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(abs(i)); + *this = static_cast(abs(i)); if(neg) mpf_neg(m_data, m_data); return *this; @@ -891,9 +891,9 @@ struct gmp_int mpz_set(m_data, o.m_data); return *this; } - gmp_int& operator = (boost::uintmax_t i) + gmp_int& operator = (unsigned long long i) { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpz_t t; mpz_init(m_data); @@ -910,11 +910,11 @@ struct gmp_int mpz_clear(t); return *this; } - gmp_int& operator = (boost::intmax_t i) + gmp_int& operator = (long long i) { BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(abs(i)); + *this = static_cast(abs(i)); if(neg) mpz_neg(m_data, m_data); return *this; @@ -1430,9 +1430,9 @@ struct gmp_rational mpq_set(m_data, o.m_data); return *this; } - gmp_rational& operator = (boost::uintmax_t i) + gmp_rational& operator = (unsigned long long i) { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpq_t t; mpq_init(m_data); @@ -1449,11 +1449,11 @@ struct gmp_rational mpq_clear(t); return *this; } - gmp_rational& operator = (boost::intmax_t i) + gmp_rational& operator = (long long i) { BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(abs(i)); + *this = static_cast(abs(i)); if(neg) mpq_neg(m_data, m_data); return *this; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index c0c497ce..74b9a614 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -59,12 +59,12 @@ struct mpfr_float_imp return *this; } #endif - mpfr_float_imp& operator = (boost::uintmax_t i) + mpfr_float_imp& operator = (unsigned long long i) { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpfr_t t; - mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(((digits10 + 1) * 1000L) / 301L))); + mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(((digits10 + 1) * 1000L) / 301L))); mpfr_set_ui(m_data, 0, GMP_RNDN); while(i) { @@ -78,11 +78,11 @@ struct mpfr_float_imp mpfr_clear(t); return *this; } - mpfr_float_imp& operator = (boost::intmax_t i) + mpfr_float_imp& operator = (long long i) { BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(abs(i)); + *this = static_cast(abs(i)); if(neg) mpfr_neg(m_data, m_data, GMP_RNDN); return *this; diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 95e035b4..86ecea9e 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -50,9 +50,9 @@ struct tommath_int detail::check_tommath_result(mp_copy(const_cast< ::mp_int*>(&o.m_data), &m_data)); return *this; } - tommath_int& operator = (boost::uintmax_t i) + tommath_int& operator = (unsigned long long i) { - boost::uintmax_t mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; ::mp_int t; detail::check_tommath_result(mp_init(&t)); @@ -69,11 +69,11 @@ struct tommath_int mp_clear(&t); return *this; } - tommath_int& operator = (boost::intmax_t i) + tommath_int& operator = (long long i) { BOOST_MP_USING_ABS bool neg = i < 0; - *this = static_cast(abs(i)); + *this = static_cast(abs(i)); if(neg) detail::check_tommath_result(mp_neg(&m_data, &m_data)); return *this; From 3c13b7a4d1f1793ce1b1c5d79a39e53792360b08 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 18 Jan 2012 12:16:20 +0000 Subject: [PATCH 104/256] Add missing file. Fix some inconsistent uses of long long and intmax_t. [SVN r76573] --- include/boost/multiprecision/cpp_float.hpp | 2 +- .../multiprecision/detail/functions/pow.hpp | 4 +- test/string_data.ipp | 40 +++++++++++++++++++ test/test_float_io.cpp | 2 +- 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 test/string_data.ipp diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 12cde7b4..ce78f659 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -32,7 +32,7 @@ public: typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list float_types; - typedef boost::int64_t exponent_type; + typedef long long exponent_type; static const boost::int32_t mp_radix = 10; diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 91b1a084..444f7f64 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -268,7 +268,7 @@ void eval_exp(T& result, const T& x) } // Check for pure-integer arguments which can be either signed or unsigned. - boost::intmax_t ll; + long long ll; eval_trunc(exp_series, x); convert_to(&ll, exp_series); if(x.compare(ll) == 0) @@ -458,7 +458,7 @@ inline void eval_pow(T& result, const T& x, const T& a) return; } - boost::intmax_t an; + long long an; convert_to(&an, a); const bool bo_a_isint = a.compare(an) == 0; diff --git a/test/string_data.ipp b/test/string_data.ipp new file mode 100644 index 00000000..824940ad --- /dev/null +++ b/test/string_data.ipp @@ -0,0 +1,40 @@ + {{ "1e+08", "1.e+08", "+1e+08", "1.2e+08", "+1.2e+08", "1.2e+08", "123456789.0", "123456789.0", "+123456789.0", "1.2e+08", "1.2e+08", "+1.2e+08", "1.23e+08", "+1.23e+08", "1.23e+08", "123456789.00", "123456789.00", "+123456789.00", "1.23e+08", "1.23e+08", "+1.23e+08", "1.235e+08", "+1.235e+08", "1.235e+08", "123456789.000", "123456789.000", "+123456789.000", "1.235e+08", "1.235e+08", "+1.235e+08", "1.2346e+08", "+1.2346e+08", "1.2346e+08", "123456789.0000", "123456789.0000", "+123456789.0000", "1.2346e+08", "1.2346e+08", "+1.2346e+08", "1.23457e+08", "+1.23457e+08", "1.23457e+08", "123456789.00000", "123456789.00000", "+123456789.00000", "1.23457e+08", "1.23457e+08", "+1.23457e+08", "1.234568e+08", "+1.234568e+08", "1.234568e+08", "123456789.000000", "123456789.000000", "+123456789.000000", "1.234568e+08", "1.234568e+08", "+1.234568e+08", "1.2345679e+08", "+1.2345679e+08", "1.2345679e+08", "123456789.0000000", "123456789.0000000", "+123456789.0000000", "1.2345679e+08", "1.2345679e+08", "+1.2345679e+08", "1.23456789e+08", "+1.23456789e+08", "1.23456789e+08", "123456789.00000000", "123456789.00000000", "+123456789.00000000", "123456789", "123456789.", "+123456789", "1.234567890e+08", "+1.234567890e+08", "1.234567890e+08", "123456789.000000000", "123456789.000000000", "+123456789.000000000", "123456789", "123456789.0", "+123456789", "1.2345678900e+08", "+1.2345678900e+08", "1.2345678900e+08", "123456789.0000000000", "123456789.0000000000", "+123456789.0000000000", "123456789", "123456789.00", "+123456789", "1.23456789000e+08", "+1.23456789000e+08", "1.23456789000e+08", "123456789.00000000000", "123456789.00000000000", "+123456789.00000000000", "123456789", "123456789.000", "+123456789", "1.234567890000e+08", "+1.234567890000e+08", "1.234567890000e+08", "123456789.000000000000", "123456789.000000000000", "+123456789.000000000000", "123456789", "123456789.0000", "+123456789", "1.2345678900000e+08", "+1.2345678900000e+08", "1.2345678900000e+08", "123456789.0000000000000", "123456789.0000000000000", "+123456789.0000000000000", }}, + {{ "-1e+08", "-1.e+08", "-1e+08", "-1.2e+08", "-1.2e+08", "-1.2e+08", "-123456789.0", "-123456789.0", "-123456789.0", "-1.2e+08", "-1.2e+08", "-1.2e+08", "-1.23e+08", "-1.23e+08", "-1.23e+08", "-123456789.00", "-123456789.00", "-123456789.00", "-1.23e+08", "-1.23e+08", "-1.23e+08", "-1.235e+08", "-1.235e+08", "-1.235e+08", "-123456789.000", "-123456789.000", "-123456789.000", "-1.235e+08", "-1.235e+08", "-1.235e+08", "-1.2346e+08", "-1.2346e+08", "-1.2346e+08", "-123456789.0000", "-123456789.0000", "-123456789.0000", "-1.2346e+08", "-1.2346e+08", "-1.2346e+08", "-1.23457e+08", "-1.23457e+08", "-1.23457e+08", "-123456789.00000", "-123456789.00000", "-123456789.00000", "-1.23457e+08", "-1.23457e+08", "-1.23457e+08", "-1.234568e+08", "-1.234568e+08", "-1.234568e+08", "-123456789.000000", "-123456789.000000", "-123456789.000000", "-1.234568e+08", "-1.234568e+08", "-1.234568e+08", "-1.2345679e+08", "-1.2345679e+08", "-1.2345679e+08", "-123456789.0000000", "-123456789.0000000", "-123456789.0000000", "-1.2345679e+08", "-1.2345679e+08", "-1.2345679e+08", "-1.23456789e+08", "-1.23456789e+08", "-1.23456789e+08", "-123456789.00000000", "-123456789.00000000", "-123456789.00000000", "-123456789", "-123456789.", "-123456789", "-1.234567890e+08", "-1.234567890e+08", "-1.234567890e+08", "-123456789.000000000", "-123456789.000000000", "-123456789.000000000", "-123456789", "-123456789.0", "-123456789", "-1.2345678900e+08", "-1.2345678900e+08", "-1.2345678900e+08", "-123456789.0000000000", "-123456789.0000000000", "-123456789.0000000000", "-123456789", "-123456789.00", "-123456789", "-1.23456789000e+08", "-1.23456789000e+08", "-1.23456789000e+08", "-123456789.00000000000", "-123456789.00000000000", "-123456789.00000000000", "-123456789", "-123456789.000", "-123456789", "-1.234567890000e+08", "-1.234567890000e+08", "-1.234567890000e+08", "-123456789.000000000000", "-123456789.000000000000", "-123456789.000000000000", "-123456789", "-123456789.0000", "-123456789", "-1.2345678900000e+08", "-1.2345678900000e+08", "-1.2345678900000e+08", "-123456789.0000000000000", "-123456789.0000000000000", "-123456789.0000000000000", }}, + {{ "2e+07", "2.e+07", "+2e+07", "1.5e+07", "+1.5e+07", "1.5e+07", "15432098.6", "15432098.6", "+15432098.6", "1.5e+07", "1.5e+07", "+1.5e+07", "1.54e+07", "+1.54e+07", "1.54e+07", "15432098.62", "15432098.62", "+15432098.62", "1.54e+07", "1.54e+07", "+1.54e+07", "1.543e+07", "+1.543e+07", "1.543e+07", "15432098.625", "15432098.625", "+15432098.625", "1.543e+07", "1.543e+07", "+1.543e+07", "1.5432e+07", "+1.5432e+07", "1.5432e+07", "15432098.6250", "15432098.6250", "+15432098.6250", "1.5432e+07", "1.5432e+07", "+1.5432e+07", "1.54321e+07", "+1.54321e+07", "1.54321e+07", "15432098.62500", "15432098.62500", "+15432098.62500", "1.54321e+07", "1.54321e+07", "+1.54321e+07", "1.543210e+07", "+1.543210e+07", "1.543210e+07", "15432098.625000", "15432098.625000", "+15432098.625000", "1.54321e+07", "1.543210e+07", "+1.54321e+07", "1.5432099e+07", "+1.5432099e+07", "1.5432099e+07", "15432098.6250000", "15432098.6250000", "+15432098.6250000", "15432099", "15432099.", "+15432099", "1.54320986e+07", "+1.54320986e+07", "1.54320986e+07", "15432098.62500000", "15432098.62500000", "+15432098.62500000", "15432098.6", "15432098.6", "+15432098.6", "1.543209862e+07", "+1.543209862e+07", "1.543209862e+07", "15432098.625000000", "15432098.625000000", "+15432098.625000000", "15432098.62", "15432098.62", "+15432098.62", "1.5432098625e+07", "+1.5432098625e+07", "1.5432098625e+07", "15432098.6250000000", "15432098.6250000000", "+15432098.6250000000", "15432098.625", "15432098.625", "+15432098.625", "1.54320986250e+07", "+1.54320986250e+07", "1.54320986250e+07", "15432098.62500000000", "15432098.62500000000", "+15432098.62500000000", "15432098.625", "15432098.6250", "+15432098.625", "1.543209862500e+07", "+1.543209862500e+07", "1.543209862500e+07", "15432098.625000000000", "15432098.625000000000", "+15432098.625000000000", "15432098.625", "15432098.62500", "+15432098.625", "1.5432098625000e+07", "+1.5432098625000e+07", "1.5432098625000e+07", "15432098.6250000000000", "15432098.6250000000000", "+15432098.6250000000000", }}, + {{ "-2e+07", "-2.e+07", "-2e+07", "-1.5e+07", "-1.5e+07", "-1.5e+07", "-15432098.6", "-15432098.6", "-15432098.6", "-1.5e+07", "-1.5e+07", "-1.5e+07", "-1.54e+07", "-1.54e+07", "-1.54e+07", "-15432098.62", "-15432098.62", "-15432098.62", "-1.54e+07", "-1.54e+07", "-1.54e+07", "-1.543e+07", "-1.543e+07", "-1.543e+07", "-15432098.625", "-15432098.625", "-15432098.625", "-1.543e+07", "-1.543e+07", "-1.543e+07", "-1.5432e+07", "-1.5432e+07", "-1.5432e+07", "-15432098.6250", "-15432098.6250", "-15432098.6250", "-1.5432e+07", "-1.5432e+07", "-1.5432e+07", "-1.54321e+07", "-1.54321e+07", "-1.54321e+07", "-15432098.62500", "-15432098.62500", "-15432098.62500", "-1.54321e+07", "-1.54321e+07", "-1.54321e+07", "-1.543210e+07", "-1.543210e+07", "-1.543210e+07", "-15432098.625000", "-15432098.625000", "-15432098.625000", "-1.54321e+07", "-1.543210e+07", "-1.54321e+07", "-1.5432099e+07", "-1.5432099e+07", "-1.5432099e+07", "-15432098.6250000", "-15432098.6250000", "-15432098.6250000", "-15432099", "-15432099.", "-15432099", "-1.54320986e+07", "-1.54320986e+07", "-1.54320986e+07", "-15432098.62500000", "-15432098.62500000", "-15432098.62500000", "-15432098.6", "-15432098.6", "-15432098.6", "-1.543209862e+07", "-1.543209862e+07", "-1.543209862e+07", "-15432098.625000000", "-15432098.625000000", "-15432098.625000000", "-15432098.62", "-15432098.62", "-15432098.62", "-1.5432098625e+07", "-1.5432098625e+07", "-1.5432098625e+07", "-15432098.6250000000", "-15432098.6250000000", "-15432098.6250000000", "-15432098.625", "-15432098.625", "-15432098.625", "-1.54320986250e+07", "-1.54320986250e+07", "-1.54320986250e+07", "-15432098.62500000000", "-15432098.62500000000", "-15432098.62500000000", "-15432098.625", "-15432098.6250", "-15432098.625", "-1.543209862500e+07", "-1.543209862500e+07", "-1.543209862500e+07", "-15432098.625000000000", "-15432098.625000000000", "-15432098.625000000000", "-15432098.625", "-15432098.62500", "-15432098.625", "-1.5432098625000e+07", "-1.5432098625000e+07", "-1.5432098625000e+07", "-15432098.6250000000000", "-15432098.6250000000000", "-15432098.6250000000000", }}, + {{ "2e+06", "2.e+06", "+2e+06", "1.9e+06", "+1.9e+06", "1.9e+06", "1929012.3", "1929012.3", "+1929012.3", "1.9e+06", "1.9e+06", "+1.9e+06", "1.93e+06", "+1.93e+06", "1.93e+06", "1929012.33", "1929012.33", "+1929012.33", "1.93e+06", "1.93e+06", "+1.93e+06", "1.929e+06", "+1.929e+06", "1.929e+06", "1929012.328", "1929012.328", "+1929012.328", "1.929e+06", "1.929e+06", "+1.929e+06", "1.9290e+06", "+1.9290e+06", "1.9290e+06", "1929012.3281", "1929012.3281", "+1929012.3281", "1.929e+06", "1.9290e+06", "+1.929e+06", "1.92901e+06", "+1.92901e+06", "1.92901e+06", "1929012.32812", "1929012.32812", "+1929012.32812", "1.92901e+06", "1.92901e+06", "+1.92901e+06", "1.929012e+06", "+1.929012e+06", "1.929012e+06", "1929012.328125", "1929012.328125", "+1929012.328125", "1929012", "1929012.", "+1929012", "1.9290123e+06", "+1.9290123e+06", "1.9290123e+06", "1929012.3281250", "1929012.3281250", "+1929012.3281250", "1929012.3", "1929012.3", "+1929012.3", "1.92901233e+06", "+1.92901233e+06", "1.92901233e+06", "1929012.32812500", "1929012.32812500", "+1929012.32812500", "1929012.33", "1929012.33", "+1929012.33", "1.929012328e+06", "+1.929012328e+06", "1.929012328e+06", "1929012.328125000", "1929012.328125000", "+1929012.328125000", "1929012.328", "1929012.328", "+1929012.328", "1.9290123281e+06", "+1.9290123281e+06", "1.9290123281e+06", "1929012.3281250000", "1929012.3281250000", "+1929012.3281250000", "1929012.3281", "1929012.3281", "+1929012.3281", "1.92901232812e+06", "+1.92901232812e+06", "1.92901232812e+06", "1929012.32812500000", "1929012.32812500000", "+1929012.32812500000", "1929012.32812", "1929012.32812", "+1929012.32812", "1.929012328125e+06", "+1.929012328125e+06", "1.929012328125e+06", "1929012.328125000000", "1929012.328125000000", "+1929012.328125000000", "1929012.328125", "1929012.328125", "+1929012.328125", "1.9290123281250e+06", "+1.9290123281250e+06", "1.9290123281250e+06", "1929012.3281250000000", "1929012.3281250000000", "+1929012.3281250000000", }}, + {{ "-2e+06", "-2.e+06", "-2e+06", "-1.9e+06", "-1.9e+06", "-1.9e+06", "-1929012.3", "-1929012.3", "-1929012.3", "-1.9e+06", "-1.9e+06", "-1.9e+06", "-1.93e+06", "-1.93e+06", "-1.93e+06", "-1929012.33", "-1929012.33", "-1929012.33", "-1.93e+06", "-1.93e+06", "-1.93e+06", "-1.929e+06", "-1.929e+06", "-1.929e+06", "-1929012.328", "-1929012.328", "-1929012.328", "-1.929e+06", "-1.929e+06", "-1.929e+06", "-1.9290e+06", "-1.9290e+06", "-1.9290e+06", "-1929012.3281", "-1929012.3281", "-1929012.3281", "-1.929e+06", "-1.9290e+06", "-1.929e+06", "-1.92901e+06", "-1.92901e+06", "-1.92901e+06", "-1929012.32812", "-1929012.32812", "-1929012.32812", "-1.92901e+06", "-1.92901e+06", "-1.92901e+06", "-1.929012e+06", "-1.929012e+06", "-1.929012e+06", "-1929012.328125", "-1929012.328125", "-1929012.328125", "-1929012", "-1929012.", "-1929012", "-1.9290123e+06", "-1.9290123e+06", "-1.9290123e+06", "-1929012.3281250", "-1929012.3281250", "-1929012.3281250", "-1929012.3", "-1929012.3", "-1929012.3", "-1.92901233e+06", "-1.92901233e+06", "-1.92901233e+06", "-1929012.32812500", "-1929012.32812500", "-1929012.32812500", "-1929012.33", "-1929012.33", "-1929012.33", "-1.929012328e+06", "-1.929012328e+06", "-1.929012328e+06", "-1929012.328125000", "-1929012.328125000", "-1929012.328125000", "-1929012.328", "-1929012.328", "-1929012.328", "-1.9290123281e+06", "-1.9290123281e+06", "-1.9290123281e+06", "-1929012.3281250000", "-1929012.3281250000", "-1929012.3281250000", "-1929012.3281", "-1929012.3281", "-1929012.3281", "-1.92901232812e+06", "-1.92901232812e+06", "-1.92901232812e+06", "-1929012.32812500000", "-1929012.32812500000", "-1929012.32812500000", "-1929012.32812", "-1929012.32812", "-1929012.32812", "-1.929012328125e+06", "-1.929012328125e+06", "-1.929012328125e+06", "-1929012.328125000000", "-1929012.328125000000", "-1929012.328125000000", "-1929012.328125", "-1929012.328125", "-1929012.328125", "-1.9290123281250e+06", "-1.9290123281250e+06", "-1.9290123281250e+06", "-1929012.3281250000000", "-1929012.3281250000000", "-1929012.3281250000000", }}, + {{ "2e+05", "2.e+05", "+2e+05", "2.4e+05", "+2.4e+05", "2.4e+05", "241126.5", "241126.5", "+241126.5", "2.4e+05", "2.4e+05", "+2.4e+05", "2.41e+05", "+2.41e+05", "2.41e+05", "241126.54", "241126.54", "+241126.54", "2.41e+05", "2.41e+05", "+2.41e+05", "2.411e+05", "+2.411e+05", "2.411e+05", "241126.541", "241126.541", "+241126.541", "2.411e+05", "2.411e+05", "+2.411e+05", "2.4113e+05", "+2.4113e+05", "2.4113e+05", "241126.5410", "241126.5410", "+241126.5410", "2.4113e+05", "2.4113e+05", "+2.4113e+05", "2.41127e+05", "+2.41127e+05", "2.41127e+05", "241126.54102", "241126.54102", "+241126.54102", "241127", "241127.", "+241127", "2.411265e+05", "+2.411265e+05", "2.411265e+05", "241126.541016", "241126.541016", "+241126.541016", "241126.5", "241126.5", "+241126.5", "2.4112654e+05", "+2.4112654e+05", "2.4112654e+05", "241126.5410156", "241126.5410156", "+241126.5410156", "241126.54", "241126.54", "+241126.54", "2.41126541e+05", "+2.41126541e+05", "2.41126541e+05", "241126.54101562", "241126.54101562", "+241126.54101562", "241126.541", "241126.541", "+241126.541", "2.411265410e+05", "+2.411265410e+05", "2.411265410e+05", "241126.541015625", "241126.541015625", "+241126.541015625", "241126.541", "241126.5410", "+241126.541", "2.4112654102e+05", "+2.4112654102e+05", "2.4112654102e+05", "241126.5410156250", "241126.5410156250", "+241126.5410156250", "241126.54102", "241126.54102", "+241126.54102", "2.41126541016e+05", "+2.41126541016e+05", "2.41126541016e+05", "241126.54101562500", "241126.54101562500", "+241126.54101562500", "241126.541016", "241126.541016", "+241126.541016", "2.411265410156e+05", "+2.411265410156e+05", "2.411265410156e+05", "241126.541015625000", "241126.541015625000", "+241126.541015625000", "241126.5410156", "241126.5410156", "+241126.5410156", "2.4112654101562e+05", "+2.4112654101562e+05", "2.4112654101562e+05", "241126.5410156250000", "241126.5410156250000", "+241126.5410156250000", }}, + {{ "-2e+05", "-2.e+05", "-2e+05", "-2.4e+05", "-2.4e+05", "-2.4e+05", "-241126.5", "-241126.5", "-241126.5", "-2.4e+05", "-2.4e+05", "-2.4e+05", "-2.41e+05", "-2.41e+05", "-2.41e+05", "-241126.54", "-241126.54", "-241126.54", "-2.41e+05", "-2.41e+05", "-2.41e+05", "-2.411e+05", "-2.411e+05", "-2.411e+05", "-241126.541", "-241126.541", "-241126.541", "-2.411e+05", "-2.411e+05", "-2.411e+05", "-2.4113e+05", "-2.4113e+05", "-2.4113e+05", "-241126.5410", "-241126.5410", "-241126.5410", "-2.4113e+05", "-2.4113e+05", "-2.4113e+05", "-2.41127e+05", "-2.41127e+05", "-2.41127e+05", "-241126.54102", "-241126.54102", "-241126.54102", "-241127", "-241127.", "-241127", "-2.411265e+05", "-2.411265e+05", "-2.411265e+05", "-241126.541016", "-241126.541016", "-241126.541016", "-241126.5", "-241126.5", "-241126.5", "-2.4112654e+05", "-2.4112654e+05", "-2.4112654e+05", "-241126.5410156", "-241126.5410156", "-241126.5410156", "-241126.54", "-241126.54", "-241126.54", "-2.41126541e+05", "-2.41126541e+05", "-2.41126541e+05", "-241126.54101562", "-241126.54101562", "-241126.54101562", "-241126.541", "-241126.541", "-241126.541", "-2.411265410e+05", "-2.411265410e+05", "-2.411265410e+05", "-241126.541015625", "-241126.541015625", "-241126.541015625", "-241126.541", "-241126.5410", "-241126.541", "-2.4112654102e+05", "-2.4112654102e+05", "-2.4112654102e+05", "-241126.5410156250", "-241126.5410156250", "-241126.5410156250", "-241126.54102", "-241126.54102", "-241126.54102", "-2.41126541016e+05", "-2.41126541016e+05", "-2.41126541016e+05", "-241126.54101562500", "-241126.54101562500", "-241126.54101562500", "-241126.541016", "-241126.541016", "-241126.541016", "-2.411265410156e+05", "-2.411265410156e+05", "-2.411265410156e+05", "-241126.541015625000", "-241126.541015625000", "-241126.541015625000", "-241126.5410156", "-241126.5410156", "-241126.5410156", "-2.4112654101562e+05", "-2.4112654101562e+05", "-2.4112654101562e+05", "-241126.5410156250000", "-241126.5410156250000", "-241126.5410156250000", }}, + {{ "3e+04", "3.e+04", "+3e+04", "3.0e+04", "+3.0e+04", "3.0e+04", "30140.8", "30140.8", "+30140.8", "3e+04", "3.0e+04", "+3e+04", "3.01e+04", "+3.01e+04", "3.01e+04", "30140.82", "30140.82", "+30140.82", "3.01e+04", "3.01e+04", "+3.01e+04", "3.014e+04", "+3.014e+04", "3.014e+04", "30140.818", "30140.818", "+30140.818", "3.014e+04", "3.014e+04", "+3.014e+04", "3.0141e+04", "+3.0141e+04", "3.0141e+04", "30140.8176", "30140.8176", "+30140.8176", "30141", "30141.", "+30141", "3.01408e+04", "+3.01408e+04", "3.01408e+04", "30140.81763", "30140.81763", "+30140.81763", "30140.8", "30140.8", "+30140.8", "3.014082e+04", "+3.014082e+04", "3.014082e+04", "30140.817627", "30140.817627", "+30140.817627", "30140.82", "30140.82", "+30140.82", "3.0140818e+04", "+3.0140818e+04", "3.0140818e+04", "30140.8176270", "30140.8176270", "+30140.8176270", "30140.818", "30140.818", "+30140.818", "3.01408176e+04", "+3.01408176e+04", "3.01408176e+04", "30140.81762695", "30140.81762695", "+30140.81762695", "30140.8176", "30140.8176", "+30140.8176", "3.014081763e+04", "+3.014081763e+04", "3.014081763e+04", "30140.817626953", "30140.817626953", "+30140.817626953", "30140.81763", "30140.81763", "+30140.81763", "3.0140817627e+04", "+3.0140817627e+04", "3.0140817627e+04", "30140.8176269531", "30140.8176269531", "+30140.8176269531", "30140.817627", "30140.817627", "+30140.817627", "3.01408176270e+04", "+3.01408176270e+04", "3.01408176270e+04", "30140.81762695312", "30140.81762695312", "+30140.81762695312", "30140.817627", "30140.8176270", "+30140.817627", "3.014081762695e+04", "+3.014081762695e+04", "3.014081762695e+04", "30140.817626953125", "30140.817626953125", "+30140.817626953125", "30140.81762695", "30140.81762695", "+30140.81762695", "3.0140817626953e+04", "+3.0140817626953e+04", "3.0140817626953e+04", "30140.8176269531250", "30140.8176269531250", "+30140.8176269531250", }}, + {{ "-3e+04", "-3.e+04", "-3e+04", "-3.0e+04", "-3.0e+04", "-3.0e+04", "-30140.8", "-30140.8", "-30140.8", "-3e+04", "-3.0e+04", "-3e+04", "-3.01e+04", "-3.01e+04", "-3.01e+04", "-30140.82", "-30140.82", "-30140.82", "-3.01e+04", "-3.01e+04", "-3.01e+04", "-3.014e+04", "-3.014e+04", "-3.014e+04", "-30140.818", "-30140.818", "-30140.818", "-3.014e+04", "-3.014e+04", "-3.014e+04", "-3.0141e+04", "-3.0141e+04", "-3.0141e+04", "-30140.8176", "-30140.8176", "-30140.8176", "-30141", "-30141.", "-30141", "-3.01408e+04", "-3.01408e+04", "-3.01408e+04", "-30140.81763", "-30140.81763", "-30140.81763", "-30140.8", "-30140.8", "-30140.8", "-3.014082e+04", "-3.014082e+04", "-3.014082e+04", "-30140.817627", "-30140.817627", "-30140.817627", "-30140.82", "-30140.82", "-30140.82", "-3.0140818e+04", "-3.0140818e+04", "-3.0140818e+04", "-30140.8176270", "-30140.8176270", "-30140.8176270", "-30140.818", "-30140.818", "-30140.818", "-3.01408176e+04", "-3.01408176e+04", "-3.01408176e+04", "-30140.81762695", "-30140.81762695", "-30140.81762695", "-30140.8176", "-30140.8176", "-30140.8176", "-3.014081763e+04", "-3.014081763e+04", "-3.014081763e+04", "-30140.817626953", "-30140.817626953", "-30140.817626953", "-30140.81763", "-30140.81763", "-30140.81763", "-3.0140817627e+04", "-3.0140817627e+04", "-3.0140817627e+04", "-30140.8176269531", "-30140.8176269531", "-30140.8176269531", "-30140.817627", "-30140.817627", "-30140.817627", "-3.01408176270e+04", "-3.01408176270e+04", "-3.01408176270e+04", "-30140.81762695312", "-30140.81762695312", "-30140.81762695312", "-30140.817627", "-30140.8176270", "-30140.817627", "-3.014081762695e+04", "-3.014081762695e+04", "-3.014081762695e+04", "-30140.817626953125", "-30140.817626953125", "-30140.817626953125", "-30140.81762695", "-30140.81762695", "-30140.81762695", "-3.0140817626953e+04", "-3.0140817626953e+04", "-3.0140817626953e+04", "-30140.8176269531250", "-30140.8176269531250", "-30140.8176269531250", }}, + {{ "4e+03", "4.e+03", "+4e+03", "3.8e+03", "+3.8e+03", "3.8e+03", "3767.6", "3767.6", "+3767.6", "3.8e+03", "3.8e+03", "+3.8e+03", "3.77e+03", "+3.77e+03", "3.77e+03", "3767.60", "3767.60", "+3767.60", "3.77e+03", "3.77e+03", "+3.77e+03", "3.768e+03", "+3.768e+03", "3.768e+03", "3767.602", "3767.602", "+3767.602", "3768", "3768.", "+3768", "3.7676e+03", "+3.7676e+03", "3.7676e+03", "3767.6022", "3767.6022", "+3767.6022", "3767.6", "3767.6", "+3767.6", "3.76760e+03", "+3.76760e+03", "3.76760e+03", "3767.60220", "3767.60220", "+3767.60220", "3767.6", "3767.60", "+3767.6", "3.767602e+03", "+3.767602e+03", "3.767602e+03", "3767.602203", "3767.602203", "+3767.602203", "3767.602", "3767.602", "+3767.602", "3.7676022e+03", "+3.7676022e+03", "3.7676022e+03", "3767.6022034", "3767.6022034", "+3767.6022034", "3767.6022", "3767.6022", "+3767.6022", "3.76760220e+03", "+3.76760220e+03", "3.76760220e+03", "3767.60220337", "3767.60220337", "+3767.60220337", "3767.6022", "3767.60220", "+3767.6022", "3.767602203e+03", "+3.767602203e+03", "3.767602203e+03", "3767.602203369", "3767.602203369", "+3767.602203369", "3767.602203", "3767.602203", "+3767.602203", "3.7676022034e+03", "+3.7676022034e+03", "3.7676022034e+03", "3767.6022033691", "3767.6022033691", "+3767.6022033691", "3767.6022034", "3767.6022034", "+3767.6022034", "3.76760220337e+03", "+3.76760220337e+03", "3.76760220337e+03", "3767.60220336914", "3767.60220336914", "+3767.60220336914", "3767.60220337", "3767.60220337", "+3767.60220337", "3.767602203369e+03", "+3.767602203369e+03", "3.767602203369e+03", "3767.602203369141", "3767.602203369141", "+3767.602203369141", "3767.602203369", "3767.602203369", "+3767.602203369", "3.7676022033691e+03", "+3.7676022033691e+03", "3.7676022033691e+03", "3767.6022033691406", "3767.6022033691406", "+3767.6022033691406", }}, + {{ "-4e+03", "-4.e+03", "-4e+03", "-3.8e+03", "-3.8e+03", "-3.8e+03", "-3767.6", "-3767.6", "-3767.6", "-3.8e+03", "-3.8e+03", "-3.8e+03", "-3.77e+03", "-3.77e+03", "-3.77e+03", "-3767.60", "-3767.60", "-3767.60", "-3.77e+03", "-3.77e+03", "-3.77e+03", "-3.768e+03", "-3.768e+03", "-3.768e+03", "-3767.602", "-3767.602", "-3767.602", "-3768", "-3768.", "-3768", "-3.7676e+03", "-3.7676e+03", "-3.7676e+03", "-3767.6022", "-3767.6022", "-3767.6022", "-3767.6", "-3767.6", "-3767.6", "-3.76760e+03", "-3.76760e+03", "-3.76760e+03", "-3767.60220", "-3767.60220", "-3767.60220", "-3767.6", "-3767.60", "-3767.6", "-3.767602e+03", "-3.767602e+03", "-3.767602e+03", "-3767.602203", "-3767.602203", "-3767.602203", "-3767.602", "-3767.602", "-3767.602", "-3.7676022e+03", "-3.7676022e+03", "-3.7676022e+03", "-3767.6022034", "-3767.6022034", "-3767.6022034", "-3767.6022", "-3767.6022", "-3767.6022", "-3.76760220e+03", "-3.76760220e+03", "-3.76760220e+03", "-3767.60220337", "-3767.60220337", "-3767.60220337", "-3767.6022", "-3767.60220", "-3767.6022", "-3.767602203e+03", "-3.767602203e+03", "-3.767602203e+03", "-3767.602203369", "-3767.602203369", "-3767.602203369", "-3767.602203", "-3767.602203", "-3767.602203", "-3.7676022034e+03", "-3.7676022034e+03", "-3.7676022034e+03", "-3767.6022033691", "-3767.6022033691", "-3767.6022033691", "-3767.6022034", "-3767.6022034", "-3767.6022034", "-3.76760220337e+03", "-3.76760220337e+03", "-3.76760220337e+03", "-3767.60220336914", "-3767.60220336914", "-3767.60220336914", "-3767.60220337", "-3767.60220337", "-3767.60220337", "-3.767602203369e+03", "-3.767602203369e+03", "-3.767602203369e+03", "-3767.602203369141", "-3767.602203369141", "-3767.602203369141", "-3767.602203369", "-3767.602203369", "-3767.602203369", "-3.7676022033691e+03", "-3.7676022033691e+03", "-3.7676022033691e+03", "-3767.6022033691406", "-3767.6022033691406", "-3767.6022033691406", }}, + {{ "5e+02", "5.e+02", "+5e+02", "4.7e+02", "+4.7e+02", "4.7e+02", "471.0", "471.0", "+471.0", "4.7e+02", "4.7e+02", "+4.7e+02", "4.71e+02", "+4.71e+02", "4.71e+02", "470.95", "470.95", "+470.95", "471", "471.", "+471", "4.710e+02", "+4.710e+02", "4.710e+02", "470.950", "470.950", "+470.950", "471", "471.0", "+471", "4.7095e+02", "+4.7095e+02", "4.7095e+02", "470.9503", "470.9503", "+470.9503", "470.95", "470.95", "+470.95", "4.70950e+02", "+4.70950e+02", "4.70950e+02", "470.95028", "470.95028", "+470.95028", "470.95", "470.950", "+470.95", "4.709503e+02", "+4.709503e+02", "4.709503e+02", "470.950275", "470.950275", "+470.950275", "470.9503", "470.9503", "+470.9503", "4.7095028e+02", "+4.7095028e+02", "4.7095028e+02", "470.9502754", "470.9502754", "+470.9502754", "470.95028", "470.95028", "+470.95028", "4.70950275e+02", "+4.70950275e+02", "4.70950275e+02", "470.95027542", "470.95027542", "+470.95027542", "470.950275", "470.950275", "+470.950275", "4.709502754e+02", "+4.709502754e+02", "4.709502754e+02", "470.950275421", "470.950275421", "+470.950275421", "470.9502754", "470.9502754", "+470.9502754", "4.7095027542e+02", "+4.7095027542e+02", "4.7095027542e+02", "470.9502754211", "470.9502754211", "+470.9502754211", "470.95027542", "470.95027542", "+470.95027542", "4.70950275421e+02", "+4.70950275421e+02", "4.70950275421e+02", "470.95027542114", "470.95027542114", "+470.95027542114", "470.950275421", "470.950275421", "+470.950275421", "4.709502754211e+02", "+4.709502754211e+02", "4.709502754211e+02", "470.950275421143", "470.950275421143", "+470.950275421143", "470.9502754211", "470.9502754211", "+470.9502754211", "4.7095027542114e+02", "+4.7095027542114e+02", "4.7095027542114e+02", "470.9502754211426", "470.9502754211426", "+470.9502754211426", }}, + {{ "-5e+02", "-5.e+02", "-5e+02", "-4.7e+02", "-4.7e+02", "-4.7e+02", "-471.0", "-471.0", "-471.0", "-4.7e+02", "-4.7e+02", "-4.7e+02", "-4.71e+02", "-4.71e+02", "-4.71e+02", "-470.95", "-470.95", "-470.95", "-471", "-471.", "-471", "-4.710e+02", "-4.710e+02", "-4.710e+02", "-470.950", "-470.950", "-470.950", "-471", "-471.0", "-471", "-4.7095e+02", "-4.7095e+02", "-4.7095e+02", "-470.9503", "-470.9503", "-470.9503", "-470.95", "-470.95", "-470.95", "-4.70950e+02", "-4.70950e+02", "-4.70950e+02", "-470.95028", "-470.95028", "-470.95028", "-470.95", "-470.950", "-470.95", "-4.709503e+02", "-4.709503e+02", "-4.709503e+02", "-470.950275", "-470.950275", "-470.950275", "-470.9503", "-470.9503", "-470.9503", "-4.7095028e+02", "-4.7095028e+02", "-4.7095028e+02", "-470.9502754", "-470.9502754", "-470.9502754", "-470.95028", "-470.95028", "-470.95028", "-4.70950275e+02", "-4.70950275e+02", "-4.70950275e+02", "-470.95027542", "-470.95027542", "-470.95027542", "-470.950275", "-470.950275", "-470.950275", "-4.709502754e+02", "-4.709502754e+02", "-4.709502754e+02", "-470.950275421", "-470.950275421", "-470.950275421", "-470.9502754", "-470.9502754", "-470.9502754", "-4.7095027542e+02", "-4.7095027542e+02", "-4.7095027542e+02", "-470.9502754211", "-470.9502754211", "-470.9502754211", "-470.95027542", "-470.95027542", "-470.95027542", "-4.70950275421e+02", "-4.70950275421e+02", "-4.70950275421e+02", "-470.95027542114", "-470.95027542114", "-470.95027542114", "-470.950275421", "-470.950275421", "-470.950275421", "-4.709502754211e+02", "-4.709502754211e+02", "-4.709502754211e+02", "-470.950275421143", "-470.950275421143", "-470.950275421143", "-470.9502754211", "-470.9502754211", "-470.9502754211", "-4.7095027542114e+02", "-4.7095027542114e+02", "-4.7095027542114e+02", "-470.9502754211426", "-470.9502754211426", "-470.9502754211426", }}, + {{ "6e+01", "6.e+01", "+6e+01", "5.9e+01", "+5.9e+01", "5.9e+01", "58.9", "58.9", "+58.9", "59", "59.", "+59", "5.89e+01", "+5.89e+01", "5.89e+01", "58.87", "58.87", "+58.87", "58.9", "58.9", "+58.9", "5.887e+01", "+5.887e+01", "5.887e+01", "58.869", "58.869", "+58.869", "58.87", "58.87", "+58.87", "5.8869e+01", "+5.8869e+01", "5.8869e+01", "58.8688", "58.8688", "+58.8688", "58.869", "58.869", "+58.869", "5.88688e+01", "+5.88688e+01", "5.88688e+01", "58.86878", "58.86878", "+58.86878", "58.8688", "58.8688", "+58.8688", "5.886878e+01", "+5.886878e+01", "5.886878e+01", "58.868784", "58.868784", "+58.868784", "58.86878", "58.86878", "+58.86878", "5.8868784e+01", "+5.8868784e+01", "5.8868784e+01", "58.8687844", "58.8687844", "+58.8687844", "58.868784", "58.868784", "+58.868784", "5.88687844e+01", "+5.88687844e+01", "5.88687844e+01", "58.86878443", "58.86878443", "+58.86878443", "58.8687844", "58.8687844", "+58.8687844", "5.886878443e+01", "+5.886878443e+01", "5.886878443e+01", "58.868784428", "58.868784428", "+58.868784428", "58.86878443", "58.86878443", "+58.86878443", "5.8868784428e+01", "+5.8868784428e+01", "5.8868784428e+01", "58.8687844276", "58.8687844276", "+58.8687844276", "58.868784428", "58.868784428", "+58.868784428", "5.88687844276e+01", "+5.88687844276e+01", "5.88687844276e+01", "58.86878442764", "58.86878442764", "+58.86878442764", "58.8687844276", "58.8687844276", "+58.8687844276", "5.886878442764e+01", "+5.886878442764e+01", "5.886878442764e+01", "58.868784427643", "58.868784427643", "+58.868784427643", "58.86878442764", "58.86878442764", "+58.86878442764", "5.8868784427643e+01", "+5.8868784427643e+01", "5.8868784427643e+01", "58.8687844276428", "58.8687844276428", "+58.8687844276428", }}, + {{ "-6e+01", "-6.e+01", "-6e+01", "-5.9e+01", "-5.9e+01", "-5.9e+01", "-58.9", "-58.9", "-58.9", "-59", "-59.", "-59", "-5.89e+01", "-5.89e+01", "-5.89e+01", "-58.87", "-58.87", "-58.87", "-58.9", "-58.9", "-58.9", "-5.887e+01", "-5.887e+01", "-5.887e+01", "-58.869", "-58.869", "-58.869", "-58.87", "-58.87", "-58.87", "-5.8869e+01", "-5.8869e+01", "-5.8869e+01", "-58.8688", "-58.8688", "-58.8688", "-58.869", "-58.869", "-58.869", "-5.88688e+01", "-5.88688e+01", "-5.88688e+01", "-58.86878", "-58.86878", "-58.86878", "-58.8688", "-58.8688", "-58.8688", "-5.886878e+01", "-5.886878e+01", "-5.886878e+01", "-58.868784", "-58.868784", "-58.868784", "-58.86878", "-58.86878", "-58.86878", "-5.8868784e+01", "-5.8868784e+01", "-5.8868784e+01", "-58.8687844", "-58.8687844", "-58.8687844", "-58.868784", "-58.868784", "-58.868784", "-5.88687844e+01", "-5.88687844e+01", "-5.88687844e+01", "-58.86878443", "-58.86878443", "-58.86878443", "-58.8687844", "-58.8687844", "-58.8687844", "-5.886878443e+01", "-5.886878443e+01", "-5.886878443e+01", "-58.868784428", "-58.868784428", "-58.868784428", "-58.86878443", "-58.86878443", "-58.86878443", "-5.8868784428e+01", "-5.8868784428e+01", "-5.8868784428e+01", "-58.8687844276", "-58.8687844276", "-58.8687844276", "-58.868784428", "-58.868784428", "-58.868784428", "-5.88687844276e+01", "-5.88687844276e+01", "-5.88687844276e+01", "-58.86878442764", "-58.86878442764", "-58.86878442764", "-58.8687844276", "-58.8687844276", "-58.8687844276", "-5.886878442764e+01", "-5.886878442764e+01", "-5.886878442764e+01", "-58.868784427643", "-58.868784427643", "-58.868784427643", "-58.86878442764", "-58.86878442764", "-58.86878442764", "-5.8868784427643e+01", "-5.8868784427643e+01", "-5.8868784427643e+01", "-58.8687844276428", "-58.8687844276428", "-58.8687844276428", }}, + {{ "7", "7.", "+7", "7.4e+00", "+7.4e+00", "7.4e+00", "7.4", "7.4", "+7.4", "7.4", "7.4", "+7.4", "7.36e+00", "+7.36e+00", "7.36e+00", "7.36", "7.36", "+7.36", "7.36", "7.36", "+7.36", "7.359e+00", "+7.359e+00", "7.359e+00", "7.359", "7.359", "+7.359", "7.359", "7.359", "+7.359", "7.3586e+00", "+7.3586e+00", "7.3586e+00", "7.3586", "7.3586", "+7.3586", "7.3586", "7.3586", "+7.3586", "7.35860e+00", "+7.35860e+00", "7.35860e+00", "7.35860", "7.35860", "+7.35860", "7.3586", "7.35860", "+7.3586", "7.358598e+00", "+7.358598e+00", "7.358598e+00", "7.358598", "7.358598", "+7.358598", "7.358598", "7.358598", "+7.358598", "7.3585981e+00", "+7.3585981e+00", "7.3585981e+00", "7.3585981", "7.3585981", "+7.3585981", "7.3585981", "7.3585981", "+7.3585981", "7.35859805e+00", "+7.35859805e+00", "7.35859805e+00", "7.35859805", "7.35859805", "+7.35859805", "7.35859805", "7.35859805", "+7.35859805", "7.358598053e+00", "+7.358598053e+00", "7.358598053e+00", "7.358598053", "7.358598053", "+7.358598053", "7.358598053", "7.358598053", "+7.358598053", "7.3585980535e+00", "+7.3585980535e+00", "7.3585980535e+00", "7.3585980535", "7.3585980535", "+7.3585980535", "7.3585980535", "7.3585980535", "+7.3585980535", "7.35859805346e+00", "+7.35859805346e+00", "7.35859805346e+00", "7.35859805346", "7.35859805346", "+7.35859805346", "7.35859805346", "7.35859805346", "+7.35859805346", "7.358598053455e+00", "+7.358598053455e+00", "7.358598053455e+00", "7.358598053455", "7.358598053455", "+7.358598053455", "7.358598053455", "7.358598053455", "+7.358598053455", "7.3585980534554e+00", "+7.3585980534554e+00", "7.3585980534554e+00", "7.3585980534554", "7.3585980534554", "+7.3585980534554", }}, + {{ "-7", "-7.", "-7", "-7.4e+00", "-7.4e+00", "-7.4e+00", "-7.4", "-7.4", "-7.4", "-7.4", "-7.4", "-7.4", "-7.36e+00", "-7.36e+00", "-7.36e+00", "-7.36", "-7.36", "-7.36", "-7.36", "-7.36", "-7.36", "-7.359e+00", "-7.359e+00", "-7.359e+00", "-7.359", "-7.359", "-7.359", "-7.359", "-7.359", "-7.359", "-7.3586e+00", "-7.3586e+00", "-7.3586e+00", "-7.3586", "-7.3586", "-7.3586", "-7.3586", "-7.3586", "-7.3586", "-7.35860e+00", "-7.35860e+00", "-7.35860e+00", "-7.35860", "-7.35860", "-7.35860", "-7.3586", "-7.35860", "-7.3586", "-7.358598e+00", "-7.358598e+00", "-7.358598e+00", "-7.358598", "-7.358598", "-7.358598", "-7.358598", "-7.358598", "-7.358598", "-7.3585981e+00", "-7.3585981e+00", "-7.3585981e+00", "-7.3585981", "-7.3585981", "-7.3585981", "-7.3585981", "-7.3585981", "-7.3585981", "-7.35859805e+00", "-7.35859805e+00", "-7.35859805e+00", "-7.35859805", "-7.35859805", "-7.35859805", "-7.35859805", "-7.35859805", "-7.35859805", "-7.358598053e+00", "-7.358598053e+00", "-7.358598053e+00", "-7.358598053", "-7.358598053", "-7.358598053", "-7.358598053", "-7.358598053", "-7.358598053", "-7.3585980535e+00", "-7.3585980535e+00", "-7.3585980535e+00", "-7.3585980535", "-7.3585980535", "-7.3585980535", "-7.3585980535", "-7.3585980535", "-7.3585980535", "-7.35859805346e+00", "-7.35859805346e+00", "-7.35859805346e+00", "-7.35859805346", "-7.35859805346", "-7.35859805346", "-7.35859805346", "-7.35859805346", "-7.35859805346", "-7.358598053455e+00", "-7.358598053455e+00", "-7.358598053455e+00", "-7.358598053455", "-7.358598053455", "-7.358598053455", "-7.358598053455", "-7.358598053455", "-7.358598053455", "-7.3585980534554e+00", "-7.3585980534554e+00", "-7.3585980534554e+00", "-7.3585980534554", "-7.3585980534554", "-7.3585980534554", }}, + {{ "0.9", "0.9", "+0.9", "9.2e-01", "+9.2e-01", "9.2e-01", "0.9", "0.9", "+0.9", "0.92", "0.92", "+0.92", "9.20e-01", "+9.20e-01", "9.20e-01", "0.92", "0.92", "+0.92", "0.92", "0.920", "+0.92", "9.198e-01", "+9.198e-01", "9.198e-01", "0.920", "0.920", "+0.920", "0.9198", "0.9198", "+0.9198", "9.1982e-01", "+9.1982e-01", "9.1982e-01", "0.9198", "0.9198", "+0.9198", "0.91982", "0.91982", "+0.91982", "9.19825e-01", "+9.19825e-01", "9.19825e-01", "0.91982", "0.91982", "+0.91982", "0.919825", "0.919825", "+0.919825", "9.198248e-01", "+9.198248e-01", "9.198248e-01", "0.919825", "0.919825", "+0.919825", "0.9198248", "0.9198248", "+0.9198248", "9.1982476e-01", "+9.1982476e-01", "9.1982476e-01", "0.9198248", "0.9198248", "+0.9198248", "0.91982476", "0.91982476", "+0.91982476", "9.19824757e-01", "+9.19824757e-01", "9.19824757e-01", "0.91982476", "0.91982476", "+0.91982476", "0.919824757", "0.919824757", "+0.919824757", "9.198247567e-01", "+9.198247567e-01", "9.198247567e-01", "0.919824757", "0.919824757", "+0.919824757", "0.9198247567", "0.9198247567", "+0.9198247567", "9.1982475668e-01", "+9.1982475668e-01", "9.1982475668e-01", "0.9198247567", "0.9198247567", "+0.9198247567", "0.91982475668", "0.91982475668", "+0.91982475668", "9.19824756682e-01", "+9.19824756682e-01", "9.19824756682e-01", "0.91982475668", "0.91982475668", "+0.91982475668", "0.919824756682", "0.919824756682", "+0.919824756682", "9.198247566819e-01", "+9.198247566819e-01", "9.198247566819e-01", "0.919824756682", "0.919824756682", "+0.919824756682", "0.9198247566819", "0.9198247566819", "+0.9198247566819", "9.1982475668192e-01", "+9.1982475668192e-01", "9.1982475668192e-01", "0.9198247566819", "0.9198247566819", "+0.9198247566819", }}, + {{ "-0.9", "-0.9", "-0.9", "-9.2e-01", "-9.2e-01", "-9.2e-01", "-0.9", "-0.9", "-0.9", "-0.92", "-0.92", "-0.92", "-9.20e-01", "-9.20e-01", "-9.20e-01", "-0.92", "-0.92", "-0.92", "-0.92", "-0.920", "-0.92", "-9.198e-01", "-9.198e-01", "-9.198e-01", "-0.920", "-0.920", "-0.920", "-0.9198", "-0.9198", "-0.9198", "-9.1982e-01", "-9.1982e-01", "-9.1982e-01", "-0.9198", "-0.9198", "-0.9198", "-0.91982", "-0.91982", "-0.91982", "-9.19825e-01", "-9.19825e-01", "-9.19825e-01", "-0.91982", "-0.91982", "-0.91982", "-0.919825", "-0.919825", "-0.919825", "-9.198248e-01", "-9.198248e-01", "-9.198248e-01", "-0.919825", "-0.919825", "-0.919825", "-0.9198248", "-0.9198248", "-0.9198248", "-9.1982476e-01", "-9.1982476e-01", "-9.1982476e-01", "-0.9198248", "-0.9198248", "-0.9198248", "-0.91982476", "-0.91982476", "-0.91982476", "-9.19824757e-01", "-9.19824757e-01", "-9.19824757e-01", "-0.91982476", "-0.91982476", "-0.91982476", "-0.919824757", "-0.919824757", "-0.919824757", "-9.198247567e-01", "-9.198247567e-01", "-9.198247567e-01", "-0.919824757", "-0.919824757", "-0.919824757", "-0.9198247567", "-0.9198247567", "-0.9198247567", "-9.1982475668e-01", "-9.1982475668e-01", "-9.1982475668e-01", "-0.9198247567", "-0.9198247567", "-0.9198247567", "-0.91982475668", "-0.91982475668", "-0.91982475668", "-9.19824756682e-01", "-9.19824756682e-01", "-9.19824756682e-01", "-0.91982475668", "-0.91982475668", "-0.91982475668", "-0.919824756682", "-0.919824756682", "-0.919824756682", "-9.198247566819e-01", "-9.198247566819e-01", "-9.198247566819e-01", "-0.919824756682", "-0.919824756682", "-0.919824756682", "-0.9198247566819", "-0.9198247566819", "-0.9198247566819", "-9.1982475668192e-01", "-9.1982475668192e-01", "-9.1982475668192e-01", "-0.9198247566819", "-0.9198247566819", "-0.9198247566819", }}, + {{ "0.1", "0.1", "+0.1", "1.1e-01", "+1.1e-01", "1.1e-01", "0.1", "0.1", "+0.1", "0.11", "0.11", "+0.11", "1.15e-01", "+1.15e-01", "1.15e-01", "0.11", "0.11", "+0.11", "0.115", "0.115", "+0.115", "1.150e-01", "+1.150e-01", "1.150e-01", "0.115", "0.115", "+0.115", "0.115", "0.1150", "+0.115", "1.1498e-01", "+1.1498e-01", "1.1498e-01", "0.1150", "0.1150", "+0.1150", "0.11498", "0.11498", "+0.11498", "1.14978e-01", "+1.14978e-01", "1.14978e-01", "0.11498", "0.11498", "+0.11498", "0.114978", "0.114978", "+0.114978", "1.149781e-01", "+1.149781e-01", "1.149781e-01", "0.114978", "0.114978", "+0.114978", "0.1149781", "0.1149781", "+0.1149781", "1.1497809e-01", "+1.1497809e-01", "1.1497809e-01", "0.1149781", "0.1149781", "+0.1149781", "0.11497809", "0.11497809", "+0.11497809", "1.14978095e-01", "+1.14978095e-01", "1.14978095e-01", "0.11497809", "0.11497809", "+0.11497809", "0.114978095", "0.114978095", "+0.114978095", "1.149780946e-01", "+1.149780946e-01", "1.149780946e-01", "0.114978095", "0.114978095", "+0.114978095", "0.1149780946", "0.1149780946", "+0.1149780946", "1.1497809459e-01", "+1.1497809459e-01", "1.1497809459e-01", "0.1149780946", "0.1149780946", "+0.1149780946", "0.11497809459", "0.11497809459", "+0.11497809459", "1.14978094585e-01", "+1.14978094585e-01", "1.14978094585e-01", "0.11497809459", "0.11497809459", "+0.11497809459", "0.114978094585", "0.114978094585", "+0.114978094585", "1.149780945852e-01", "+1.149780945852e-01", "1.149780945852e-01", "0.114978094585", "0.114978094585", "+0.114978094585", "0.1149780945852", "0.1149780945852", "+0.1149780945852", "1.1497809458524e-01", "+1.1497809458524e-01", "1.1497809458524e-01", "0.1149780945852", "0.1149780945852", "+0.1149780945852", }}, + {{ "-0.1", "-0.1", "-0.1", "-1.1e-01", "-1.1e-01", "-1.1e-01", "-0.1", "-0.1", "-0.1", "-0.11", "-0.11", "-0.11", "-1.15e-01", "-1.15e-01", "-1.15e-01", "-0.11", "-0.11", "-0.11", "-0.115", "-0.115", "-0.115", "-1.150e-01", "-1.150e-01", "-1.150e-01", "-0.115", "-0.115", "-0.115", "-0.115", "-0.1150", "-0.115", "-1.1498e-01", "-1.1498e-01", "-1.1498e-01", "-0.1150", "-0.1150", "-0.1150", "-0.11498", "-0.11498", "-0.11498", "-1.14978e-01", "-1.14978e-01", "-1.14978e-01", "-0.11498", "-0.11498", "-0.11498", "-0.114978", "-0.114978", "-0.114978", "-1.149781e-01", "-1.149781e-01", "-1.149781e-01", "-0.114978", "-0.114978", "-0.114978", "-0.1149781", "-0.1149781", "-0.1149781", "-1.1497809e-01", "-1.1497809e-01", "-1.1497809e-01", "-0.1149781", "-0.1149781", "-0.1149781", "-0.11497809", "-0.11497809", "-0.11497809", "-1.14978095e-01", "-1.14978095e-01", "-1.14978095e-01", "-0.11497809", "-0.11497809", "-0.11497809", "-0.114978095", "-0.114978095", "-0.114978095", "-1.149780946e-01", "-1.149780946e-01", "-1.149780946e-01", "-0.114978095", "-0.114978095", "-0.114978095", "-0.1149780946", "-0.1149780946", "-0.1149780946", "-1.1497809459e-01", "-1.1497809459e-01", "-1.1497809459e-01", "-0.1149780946", "-0.1149780946", "-0.1149780946", "-0.11497809459", "-0.11497809459", "-0.11497809459", "-1.14978094585e-01", "-1.14978094585e-01", "-1.14978094585e-01", "-0.11497809459", "-0.11497809459", "-0.11497809459", "-0.114978094585", "-0.114978094585", "-0.114978094585", "-1.149780945852e-01", "-1.149780945852e-01", "-1.149780945852e-01", "-0.114978094585", "-0.114978094585", "-0.114978094585", "-0.1149780945852", "-0.1149780945852", "-0.1149780945852", "-1.1497809458524e-01", "-1.1497809458524e-01", "-1.1497809458524e-01", "-0.1149780945852", "-0.1149780945852", "-0.1149780945852", }}, + {{ "0.01", "0.01", "+0.01", "1.4e-02", "+1.4e-02", "1.4e-02", "0.0", "0.0", "+0.0", "0.014", "0.014", "+0.014", "1.44e-02", "+1.44e-02", "1.44e-02", "0.01", "0.01", "+0.01", "0.0144", "0.0144", "+0.0144", "1.437e-02", "+1.437e-02", "1.437e-02", "0.014", "0.014", "+0.014", "0.01437", "0.01437", "+0.01437", "1.4372e-02", "+1.4372e-02", "1.4372e-02", "0.0144", "0.0144", "+0.0144", "0.014372", "0.014372", "+0.014372", "1.43723e-02", "+1.43723e-02", "1.43723e-02", "0.01437", "0.01437", "+0.01437", "0.0143723", "0.0143723", "+0.0143723", "1.437226e-02", "+1.437226e-02", "1.437226e-02", "0.014372", "0.014372", "+0.014372", "0.01437226", "0.01437226", "+0.01437226", "1.4372262e-02", "+1.4372262e-02", "1.4372262e-02", "0.0143723", "0.0143723", "+0.0143723", "0.014372262", "0.014372262", "+0.014372262", "1.43722618e-02", "+1.43722618e-02", "1.43722618e-02", "0.01437226", "0.01437226", "+0.01437226", "0.0143722618", "0.0143722618", "+0.0143722618", "1.437226182e-02", "+1.437226182e-02", "1.437226182e-02", "0.014372262", "0.014372262", "+0.014372262", "0.01437226182", "0.01437226182", "+0.01437226182", "1.4372261823e-02", "+1.4372261823e-02", "1.4372261823e-02", "0.0143722618", "0.0143722618", "+0.0143722618", "0.014372261823", "0.014372261823", "+0.014372261823", "1.43722618232e-02", "+1.43722618232e-02", "1.43722618232e-02", "0.01437226182", "0.01437226182", "+0.01437226182", "0.0143722618232", "0.0143722618232", "+0.0143722618232", "1.437226182315e-02", "+1.437226182315e-02", "1.437226182315e-02", "0.014372261823", "0.014372261823", "+0.014372261823", "0.01437226182315", "0.01437226182315", "+0.01437226182315", "1.4372261823155e-02", "+1.4372261823155e-02", "1.4372261823155e-02", "0.0143722618232", "0.0143722618232", "+0.0143722618232", }}, + {{ "-0.01", "-0.01", "-0.01", "-1.4e-02", "-1.4e-02", "-1.4e-02", "-0.0", "-0.0", "-0.0", "-0.014", "-0.014", "-0.014", "-1.44e-02", "-1.44e-02", "-1.44e-02", "-0.01", "-0.01", "-0.01", "-0.0144", "-0.0144", "-0.0144", "-1.437e-02", "-1.437e-02", "-1.437e-02", "-0.014", "-0.014", "-0.014", "-0.01437", "-0.01437", "-0.01437", "-1.4372e-02", "-1.4372e-02", "-1.4372e-02", "-0.0144", "-0.0144", "-0.0144", "-0.014372", "-0.014372", "-0.014372", "-1.43723e-02", "-1.43723e-02", "-1.43723e-02", "-0.01437", "-0.01437", "-0.01437", "-0.0143723", "-0.0143723", "-0.0143723", "-1.437226e-02", "-1.437226e-02", "-1.437226e-02", "-0.014372", "-0.014372", "-0.014372", "-0.01437226", "-0.01437226", "-0.01437226", "-1.4372262e-02", "-1.4372262e-02", "-1.4372262e-02", "-0.0143723", "-0.0143723", "-0.0143723", "-0.014372262", "-0.014372262", "-0.014372262", "-1.43722618e-02", "-1.43722618e-02", "-1.43722618e-02", "-0.01437226", "-0.01437226", "-0.01437226", "-0.0143722618", "-0.0143722618", "-0.0143722618", "-1.437226182e-02", "-1.437226182e-02", "-1.437226182e-02", "-0.014372262", "-0.014372262", "-0.014372262", "-0.01437226182", "-0.01437226182", "-0.01437226182", "-1.4372261823e-02", "-1.4372261823e-02", "-1.4372261823e-02", "-0.0143722618", "-0.0143722618", "-0.0143722618", "-0.014372261823", "-0.014372261823", "-0.014372261823", "-1.43722618232e-02", "-1.43722618232e-02", "-1.43722618232e-02", "-0.01437226182", "-0.01437226182", "-0.01437226182", "-0.0143722618232", "-0.0143722618232", "-0.0143722618232", "-1.437226182315e-02", "-1.437226182315e-02", "-1.437226182315e-02", "-0.014372261823", "-0.014372261823", "-0.014372261823", "-0.01437226182315", "-0.01437226182315", "-0.01437226182315", "-1.4372261823155e-02", "-1.4372261823155e-02", "-1.4372261823155e-02", "-0.0143722618232", "-0.0143722618232", "-0.0143722618232", }}, + {{ "0.002", "0.002", "+0.002", "1.8e-03", "+1.8e-03", "1.8e-03", "0.0", "0.0", "+0.0", "0.0018", "0.0018", "+0.0018", "1.80e-03", "+1.80e-03", "1.80e-03", "0.00", "0.00", "+0.00", "0.0018", "0.00180", "+0.0018", "1.797e-03", "+1.797e-03", "1.797e-03", "0.002", "0.002", "+0.002", "0.001797", "0.001797", "+0.001797", "1.7965e-03", "+1.7965e-03", "1.7965e-03", "0.0018", "0.0018", "+0.0018", "0.0017965", "0.0017965", "+0.0017965", "1.79653e-03", "+1.79653e-03", "1.79653e-03", "0.00180", "0.00180", "+0.00180", "0.00179653", "0.00179653", "+0.00179653", "1.796533e-03", "+1.796533e-03", "1.796533e-03", "0.001797", "0.001797", "+0.001797", "0.001796533", "0.001796533", "+0.001796533", "1.7965327e-03", "+1.7965327e-03", "1.7965327e-03", "0.0017965", "0.0017965", "+0.0017965", "0.0017965327", "0.0017965327", "+0.0017965327", "1.79653273e-03", "+1.79653273e-03", "1.79653273e-03", "0.00179653", "0.00179653", "+0.00179653", "0.00179653273", "0.00179653273", "+0.00179653273", "1.796532728e-03", "+1.796532728e-03", "1.796532728e-03", "0.001796533", "0.001796533", "+0.001796533", "0.001796532728", "0.001796532728", "+0.001796532728", "1.7965327279e-03", "+1.7965327279e-03", "1.7965327279e-03", "0.0017965327", "0.0017965327", "+0.0017965327", "0.0017965327279", "0.0017965327279", "+0.0017965327279", "1.79653272789e-03", "+1.79653272789e-03", "1.79653272789e-03", "0.00179653273", "0.00179653273", "+0.00179653273", "0.00179653272789", "0.00179653272789", "+0.00179653272789", "1.796532727894e-03", "+1.796532727894e-03", "1.796532727894e-03", "0.001796532728", "0.001796532728", "+0.001796532728", "0.001796532727894", "0.001796532727894", "+0.001796532727894", "1.7965327278944e-03", "+1.7965327278944e-03", "1.7965327278944e-03", "0.0017965327279", "0.0017965327279", "+0.0017965327279", }}, + {{ "-0.002", "-0.002", "-0.002", "-1.8e-03", "-1.8e-03", "-1.8e-03", "-0.0", "-0.0", "-0.0", "-0.0018", "-0.0018", "-0.0018", "-1.80e-03", "-1.80e-03", "-1.80e-03", "-0.00", "-0.00", "-0.00", "-0.0018", "-0.00180", "-0.0018", "-1.797e-03", "-1.797e-03", "-1.797e-03", "-0.002", "-0.002", "-0.002", "-0.001797", "-0.001797", "-0.001797", "-1.7965e-03", "-1.7965e-03", "-1.7965e-03", "-0.0018", "-0.0018", "-0.0018", "-0.0017965", "-0.0017965", "-0.0017965", "-1.79653e-03", "-1.79653e-03", "-1.79653e-03", "-0.00180", "-0.00180", "-0.00180", "-0.00179653", "-0.00179653", "-0.00179653", "-1.796533e-03", "-1.796533e-03", "-1.796533e-03", "-0.001797", "-0.001797", "-0.001797", "-0.001796533", "-0.001796533", "-0.001796533", "-1.7965327e-03", "-1.7965327e-03", "-1.7965327e-03", "-0.0017965", "-0.0017965", "-0.0017965", "-0.0017965327", "-0.0017965327", "-0.0017965327", "-1.79653273e-03", "-1.79653273e-03", "-1.79653273e-03", "-0.00179653", "-0.00179653", "-0.00179653", "-0.00179653273", "-0.00179653273", "-0.00179653273", "-1.796532728e-03", "-1.796532728e-03", "-1.796532728e-03", "-0.001796533", "-0.001796533", "-0.001796533", "-0.001796532728", "-0.001796532728", "-0.001796532728", "-1.7965327279e-03", "-1.7965327279e-03", "-1.7965327279e-03", "-0.0017965327", "-0.0017965327", "-0.0017965327", "-0.0017965327279", "-0.0017965327279", "-0.0017965327279", "-1.79653272789e-03", "-1.79653272789e-03", "-1.79653272789e-03", "-0.00179653273", "-0.00179653273", "-0.00179653273", "-0.00179653272789", "-0.00179653272789", "-0.00179653272789", "-1.796532727894e-03", "-1.796532727894e-03", "-1.796532727894e-03", "-0.001796532728", "-0.001796532728", "-0.001796532728", "-0.001796532727894", "-0.001796532727894", "-0.001796532727894", "-1.7965327278944e-03", "-1.7965327278944e-03", "-1.7965327278944e-03", "-0.0017965327279", "-0.0017965327279", "-0.0017965327279", }}, + {{ "0.0002", "0.0002", "+0.0002", "2.2e-04", "+2.2e-04", "2.2e-04", "0.0", "0.0", "+0.0", "0.00022", "0.00022", "+0.00022", "2.25e-04", "+2.25e-04", "2.25e-04", "0.00", "0.00", "+0.00", "0.000225", "0.000225", "+0.000225", "2.246e-04", "+2.246e-04", "2.246e-04", "0.000", "0.000", "+0.000", "0.0002246", "0.0002246", "+0.0002246", "2.2457e-04", "+2.2457e-04", "2.2457e-04", "0.0002", "0.0002", "+0.0002", "0.00022457", "0.00022457", "+0.00022457", "2.24567e-04", "+2.24567e-04", "2.24567e-04", "0.00022", "0.00022", "+0.00022", "0.000224567", "0.000224567", "+0.000224567", "2.245666e-04", "+2.245666e-04", "2.245666e-04", "0.000225", "0.000225", "+0.000225", "0.0002245666", "0.0002245666", "+0.0002245666", "2.2456659e-04", "+2.2456659e-04", "2.2456659e-04", "0.0002246", "0.0002246", "+0.0002246", "0.00022456659", "0.00022456659", "+0.00022456659", "2.24566591e-04", "+2.24566591e-04", "2.24566591e-04", "0.00022457", "0.00022457", "+0.00022457", "0.000224566591", "0.000224566591", "+0.000224566591", "2.245665910e-04", "+2.245665910e-04", "2.245665910e-04", "0.000224567", "0.000224567", "+0.000224567", "0.000224566591", "0.0002245665910", "+0.000224566591", "2.2456659099e-04", "+2.2456659099e-04", "2.2456659099e-04", "0.0002245666", "0.0002245666", "+0.0002245666", "0.00022456659099", "0.00022456659099", "+0.00022456659099", "2.24566590987e-04", "+2.24566590987e-04", "2.24566590987e-04", "0.00022456659", "0.00022456659", "+0.00022456659", "0.000224566590987", "0.000224566590987", "+0.000224566590987", "2.245665909868e-04", "+2.245665909868e-04", "2.245665909868e-04", "0.000224566591", "0.000224566591", "+0.000224566591", "0.0002245665909868", "0.0002245665909868", "+0.0002245665909868", "2.2456659098680e-04", "+2.2456659098680e-04", "2.2456659098680e-04", "0.0002245665910", "0.0002245665910", "+0.0002245665910", }}, + {{ "-0.0002", "-0.0002", "-0.0002", "-2.2e-04", "-2.2e-04", "-2.2e-04", "-0.0", "-0.0", "-0.0", "-0.00022", "-0.00022", "-0.00022", "-2.25e-04", "-2.25e-04", "-2.25e-04", "-0.00", "-0.00", "-0.00", "-0.000225", "-0.000225", "-0.000225", "-2.246e-04", "-2.246e-04", "-2.246e-04", "-0.000", "-0.000", "-0.000", "-0.0002246", "-0.0002246", "-0.0002246", "-2.2457e-04", "-2.2457e-04", "-2.2457e-04", "-0.0002", "-0.0002", "-0.0002", "-0.00022457", "-0.00022457", "-0.00022457", "-2.24567e-04", "-2.24567e-04", "-2.24567e-04", "-0.00022", "-0.00022", "-0.00022", "-0.000224567", "-0.000224567", "-0.000224567", "-2.245666e-04", "-2.245666e-04", "-2.245666e-04", "-0.000225", "-0.000225", "-0.000225", "-0.0002245666", "-0.0002245666", "-0.0002245666", "-2.2456659e-04", "-2.2456659e-04", "-2.2456659e-04", "-0.0002246", "-0.0002246", "-0.0002246", "-0.00022456659", "-0.00022456659", "-0.00022456659", "-2.24566591e-04", "-2.24566591e-04", "-2.24566591e-04", "-0.00022457", "-0.00022457", "-0.00022457", "-0.000224566591", "-0.000224566591", "-0.000224566591", "-2.245665910e-04", "-2.245665910e-04", "-2.245665910e-04", "-0.000224567", "-0.000224567", "-0.000224567", "-0.000224566591", "-0.0002245665910", "-0.000224566591", "-2.2456659099e-04", "-2.2456659099e-04", "-2.2456659099e-04", "-0.0002245666", "-0.0002245666", "-0.0002245666", "-0.00022456659099", "-0.00022456659099", "-0.00022456659099", "-2.24566590987e-04", "-2.24566590987e-04", "-2.24566590987e-04", "-0.00022456659", "-0.00022456659", "-0.00022456659", "-0.000224566590987", "-0.000224566590987", "-0.000224566590987", "-2.245665909868e-04", "-2.245665909868e-04", "-2.245665909868e-04", "-0.000224566591", "-0.000224566591", "-0.000224566591", "-0.0002245665909868", "-0.0002245665909868", "-0.0002245665909868", "-2.2456659098680e-04", "-2.2456659098680e-04", "-2.2456659098680e-04", "-0.0002245665910", "-0.0002245665910", "-0.0002245665910", }}, + {{ "3e-05", "3.e-05", "+3e-05", "2.8e-05", "+2.8e-05", "2.8e-05", "0.0", "0.0", "+0.0", "2.8e-05", "2.8e-05", "+2.8e-05", "2.81e-05", "+2.81e-05", "2.81e-05", "0.00", "0.00", "+0.00", "2.81e-05", "2.81e-05", "+2.81e-05", "2.807e-05", "+2.807e-05", "2.807e-05", "0.000", "0.000", "+0.000", "2.807e-05", "2.807e-05", "+2.807e-05", "2.8071e-05", "+2.8071e-05", "2.8071e-05", "0.0000", "0.0000", "+0.0000", "2.8071e-05", "2.8071e-05", "+2.8071e-05", "2.80708e-05", "+2.80708e-05", "2.80708e-05", "0.00003", "0.00003", "+0.00003", "2.80708e-05", "2.80708e-05", "+2.80708e-05", "2.807082e-05", "+2.807082e-05", "2.807082e-05", "0.000028", "0.000028", "+0.000028", "2.807082e-05", "2.807082e-05", "+2.807082e-05", "2.8070824e-05", "+2.8070824e-05", "2.8070824e-05", "0.0000281", "0.0000281", "+0.0000281", "2.8070824e-05", "2.8070824e-05", "+2.8070824e-05", "2.80708239e-05", "+2.80708239e-05", "2.80708239e-05", "0.00002807", "0.00002807", "+0.00002807", "2.80708239e-05", "2.80708239e-05", "+2.80708239e-05", "2.807082387e-05", "+2.807082387e-05", "2.807082387e-05", "0.000028071", "0.000028071", "+0.000028071", "2.807082387e-05", "2.807082387e-05", "+2.807082387e-05", "2.8070823873e-05", "+2.8070823873e-05", "2.8070823873e-05", "0.0000280708", "0.0000280708", "+0.0000280708", "2.8070823873e-05", "2.8070823873e-05", "+2.8070823873e-05", "2.80708238733e-05", "+2.80708238733e-05", "2.80708238733e-05", "0.00002807082", "0.00002807082", "+0.00002807082", "2.80708238733e-05", "2.80708238733e-05", "+2.80708238733e-05", "2.807082387335e-05", "+2.807082387335e-05", "2.807082387335e-05", "0.000028070824", "0.000028070824", "+0.000028070824", "2.807082387335e-05", "2.807082387335e-05", "+2.807082387335e-05", "2.8070823873350e-05", "+2.8070823873350e-05", "2.8070823873350e-05", "0.0000280708239", "0.0000280708239", "+0.0000280708239", }}, + {{ "-3e-05", "-3.e-05", "-3e-05", "-2.8e-05", "-2.8e-05", "-2.8e-05", "-0.0", "-0.0", "-0.0", "-2.8e-05", "-2.8e-05", "-2.8e-05", "-2.81e-05", "-2.81e-05", "-2.81e-05", "-0.00", "-0.00", "-0.00", "-2.81e-05", "-2.81e-05", "-2.81e-05", "-2.807e-05", "-2.807e-05", "-2.807e-05", "-0.000", "-0.000", "-0.000", "-2.807e-05", "-2.807e-05", "-2.807e-05", "-2.8071e-05", "-2.8071e-05", "-2.8071e-05", "-0.0000", "-0.0000", "-0.0000", "-2.8071e-05", "-2.8071e-05", "-2.8071e-05", "-2.80708e-05", "-2.80708e-05", "-2.80708e-05", "-0.00003", "-0.00003", "-0.00003", "-2.80708e-05", "-2.80708e-05", "-2.80708e-05", "-2.807082e-05", "-2.807082e-05", "-2.807082e-05", "-0.000028", "-0.000028", "-0.000028", "-2.807082e-05", "-2.807082e-05", "-2.807082e-05", "-2.8070824e-05", "-2.8070824e-05", "-2.8070824e-05", "-0.0000281", "-0.0000281", "-0.0000281", "-2.8070824e-05", "-2.8070824e-05", "-2.8070824e-05", "-2.80708239e-05", "-2.80708239e-05", "-2.80708239e-05", "-0.00002807", "-0.00002807", "-0.00002807", "-2.80708239e-05", "-2.80708239e-05", "-2.80708239e-05", "-2.807082387e-05", "-2.807082387e-05", "-2.807082387e-05", "-0.000028071", "-0.000028071", "-0.000028071", "-2.807082387e-05", "-2.807082387e-05", "-2.807082387e-05", "-2.8070823873e-05", "-2.8070823873e-05", "-2.8070823873e-05", "-0.0000280708", "-0.0000280708", "-0.0000280708", "-2.8070823873e-05", "-2.8070823873e-05", "-2.8070823873e-05", "-2.80708238733e-05", "-2.80708238733e-05", "-2.80708238733e-05", "-0.00002807082", "-0.00002807082", "-0.00002807082", "-2.80708238733e-05", "-2.80708238733e-05", "-2.80708238733e-05", "-2.807082387335e-05", "-2.807082387335e-05", "-2.807082387335e-05", "-0.000028070824", "-0.000028070824", "-0.000028070824", "-2.807082387335e-05", "-2.807082387335e-05", "-2.807082387335e-05", "-2.8070823873350e-05", "-2.8070823873350e-05", "-2.8070823873350e-05", "-0.0000280708239", "-0.0000280708239", "-0.0000280708239", }}, + {{ "4e-06", "4.e-06", "+4e-06", "3.5e-06", "+3.5e-06", "3.5e-06", "0.0", "0.0", "+0.0", "3.5e-06", "3.5e-06", "+3.5e-06", "3.51e-06", "+3.51e-06", "3.51e-06", "0.00", "0.00", "+0.00", "3.51e-06", "3.51e-06", "+3.51e-06", "3.509e-06", "+3.509e-06", "3.509e-06", "0.000", "0.000", "+0.000", "3.509e-06", "3.509e-06", "+3.509e-06", "3.5089e-06", "+3.5089e-06", "3.5089e-06", "0.0000", "0.0000", "+0.0000", "3.5089e-06", "3.5089e-06", "+3.5089e-06", "3.50885e-06", "+3.50885e-06", "3.50885e-06", "0.00000", "0.00000", "+0.00000", "3.50885e-06", "3.50885e-06", "+3.50885e-06", "3.508853e-06", "+3.508853e-06", "3.508853e-06", "0.000004", "0.000004", "+0.000004", "3.508853e-06", "3.508853e-06", "+3.508853e-06", "3.5088530e-06", "+3.5088530e-06", "3.5088530e-06", "0.0000035", "0.0000035", "+0.0000035", "3.508853e-06", "3.5088530e-06", "+3.508853e-06", "3.50885298e-06", "+3.50885298e-06", "3.50885298e-06", "0.00000351", "0.00000351", "+0.00000351", "3.50885298e-06", "3.50885298e-06", "+3.50885298e-06", "3.508852984e-06", "+3.508852984e-06", "3.508852984e-06", "0.000003509", "0.000003509", "+0.000003509", "3.508852984e-06", "3.508852984e-06", "+3.508852984e-06", "3.5088529842e-06", "+3.5088529842e-06", "3.5088529842e-06", "0.0000035089", "0.0000035089", "+0.0000035089", "3.5088529842e-06", "3.5088529842e-06", "+3.5088529842e-06", "3.50885298417e-06", "+3.50885298417e-06", "3.50885298417e-06", "0.00000350885", "0.00000350885", "+0.00000350885", "3.50885298417e-06", "3.50885298417e-06", "+3.50885298417e-06", "3.508852984169e-06", "+3.508852984169e-06", "3.508852984169e-06", "0.000003508853", "0.000003508853", "+0.000003508853", "3.508852984169e-06", "3.508852984169e-06", "+3.508852984169e-06", "3.5088529841687e-06", "+3.5088529841687e-06", "3.5088529841687e-06", "0.0000035088530", "0.0000035088530", "+0.0000035088530", }}, + {{ "-4e-06", "-4.e-06", "-4e-06", "-3.5e-06", "-3.5e-06", "-3.5e-06", "-0.0", "-0.0", "-0.0", "-3.5e-06", "-3.5e-06", "-3.5e-06", "-3.51e-06", "-3.51e-06", "-3.51e-06", "-0.00", "-0.00", "-0.00", "-3.51e-06", "-3.51e-06", "-3.51e-06", "-3.509e-06", "-3.509e-06", "-3.509e-06", "-0.000", "-0.000", "-0.000", "-3.509e-06", "-3.509e-06", "-3.509e-06", "-3.5089e-06", "-3.5089e-06", "-3.5089e-06", "-0.0000", "-0.0000", "-0.0000", "-3.5089e-06", "-3.5089e-06", "-3.5089e-06", "-3.50885e-06", "-3.50885e-06", "-3.50885e-06", "-0.00000", "-0.00000", "-0.00000", "-3.50885e-06", "-3.50885e-06", "-3.50885e-06", "-3.508853e-06", "-3.508853e-06", "-3.508853e-06", "-0.000004", "-0.000004", "-0.000004", "-3.508853e-06", "-3.508853e-06", "-3.508853e-06", "-3.5088530e-06", "-3.5088530e-06", "-3.5088530e-06", "-0.0000035", "-0.0000035", "-0.0000035", "-3.508853e-06", "-3.5088530e-06", "-3.508853e-06", "-3.50885298e-06", "-3.50885298e-06", "-3.50885298e-06", "-0.00000351", "-0.00000351", "-0.00000351", "-3.50885298e-06", "-3.50885298e-06", "-3.50885298e-06", "-3.508852984e-06", "-3.508852984e-06", "-3.508852984e-06", "-0.000003509", "-0.000003509", "-0.000003509", "-3.508852984e-06", "-3.508852984e-06", "-3.508852984e-06", "-3.5088529842e-06", "-3.5088529842e-06", "-3.5088529842e-06", "-0.0000035089", "-0.0000035089", "-0.0000035089", "-3.5088529842e-06", "-3.5088529842e-06", "-3.5088529842e-06", "-3.50885298417e-06", "-3.50885298417e-06", "-3.50885298417e-06", "-0.00000350885", "-0.00000350885", "-0.00000350885", "-3.50885298417e-06", "-3.50885298417e-06", "-3.50885298417e-06", "-3.508852984169e-06", "-3.508852984169e-06", "-3.508852984169e-06", "-0.000003508853", "-0.000003508853", "-0.000003508853", "-3.508852984169e-06", "-3.508852984169e-06", "-3.508852984169e-06", "-3.5088529841687e-06", "-3.5088529841687e-06", "-3.5088529841687e-06", "-0.0000035088530", "-0.0000035088530", "-0.0000035088530", }}, + {{ "4e-07", "4.e-07", "+4e-07", "4.4e-07", "+4.4e-07", "4.4e-07", "0.0", "0.0", "+0.0", "4.4e-07", "4.4e-07", "+4.4e-07", "4.39e-07", "+4.39e-07", "4.39e-07", "0.00", "0.00", "+0.00", "4.39e-07", "4.39e-07", "+4.39e-07", "4.386e-07", "+4.386e-07", "4.386e-07", "0.000", "0.000", "+0.000", "4.386e-07", "4.386e-07", "+4.386e-07", "4.3861e-07", "+4.3861e-07", "4.3861e-07", "0.0000", "0.0000", "+0.0000", "4.3861e-07", "4.3861e-07", "+4.3861e-07", "4.38607e-07", "+4.38607e-07", "4.38607e-07", "0.00000", "0.00000", "+0.00000", "4.38607e-07", "4.38607e-07", "+4.38607e-07", "4.386066e-07", "+4.386066e-07", "4.386066e-07", "0.000000", "0.000000", "+0.000000", "4.386066e-07", "4.386066e-07", "+4.386066e-07", "4.3860662e-07", "+4.3860662e-07", "4.3860662e-07", "0.0000004", "0.0000004", "+0.0000004", "4.3860662e-07", "4.3860662e-07", "+4.3860662e-07", "4.38606623e-07", "+4.38606623e-07", "4.38606623e-07", "0.00000044", "0.00000044", "+0.00000044", "4.38606623e-07", "4.38606623e-07", "+4.38606623e-07", "4.386066230e-07", "+4.386066230e-07", "4.386066230e-07", "0.000000439", "0.000000439", "+0.000000439", "4.38606623e-07", "4.386066230e-07", "+4.38606623e-07", "4.3860662302e-07", "+4.3860662302e-07", "4.3860662302e-07", "0.0000004386", "0.0000004386", "+0.0000004386", "4.3860662302e-07", "4.3860662302e-07", "+4.3860662302e-07", "4.38606623021e-07", "+4.38606623021e-07", "4.38606623021e-07", "0.00000043861", "0.00000043861", "+0.00000043861", "4.38606623021e-07", "4.38606623021e-07", "+4.38606623021e-07", "4.386066230211e-07", "+4.386066230211e-07", "4.386066230211e-07", "0.000000438607", "0.000000438607", "+0.000000438607", "4.386066230211e-07", "4.386066230211e-07", "+4.386066230211e-07", "4.3860662302109e-07", "+4.3860662302109e-07", "4.3860662302109e-07", "0.0000004386066", "0.0000004386066", "+0.0000004386066", }}, + {{ "-4e-07", "-4.e-07", "-4e-07", "-4.4e-07", "-4.4e-07", "-4.4e-07", "-0.0", "-0.0", "-0.0", "-4.4e-07", "-4.4e-07", "-4.4e-07", "-4.39e-07", "-4.39e-07", "-4.39e-07", "-0.00", "-0.00", "-0.00", "-4.39e-07", "-4.39e-07", "-4.39e-07", "-4.386e-07", "-4.386e-07", "-4.386e-07", "-0.000", "-0.000", "-0.000", "-4.386e-07", "-4.386e-07", "-4.386e-07", "-4.3861e-07", "-4.3861e-07", "-4.3861e-07", "-0.0000", "-0.0000", "-0.0000", "-4.3861e-07", "-4.3861e-07", "-4.3861e-07", "-4.38607e-07", "-4.38607e-07", "-4.38607e-07", "-0.00000", "-0.00000", "-0.00000", "-4.38607e-07", "-4.38607e-07", "-4.38607e-07", "-4.386066e-07", "-4.386066e-07", "-4.386066e-07", "-0.000000", "-0.000000", "-0.000000", "-4.386066e-07", "-4.386066e-07", "-4.386066e-07", "-4.3860662e-07", "-4.3860662e-07", "-4.3860662e-07", "-0.0000004", "-0.0000004", "-0.0000004", "-4.3860662e-07", "-4.3860662e-07", "-4.3860662e-07", "-4.38606623e-07", "-4.38606623e-07", "-4.38606623e-07", "-0.00000044", "-0.00000044", "-0.00000044", "-4.38606623e-07", "-4.38606623e-07", "-4.38606623e-07", "-4.386066230e-07", "-4.386066230e-07", "-4.386066230e-07", "-0.000000439", "-0.000000439", "-0.000000439", "-4.38606623e-07", "-4.386066230e-07", "-4.38606623e-07", "-4.3860662302e-07", "-4.3860662302e-07", "-4.3860662302e-07", "-0.0000004386", "-0.0000004386", "-0.0000004386", "-4.3860662302e-07", "-4.3860662302e-07", "-4.3860662302e-07", "-4.38606623021e-07", "-4.38606623021e-07", "-4.38606623021e-07", "-0.00000043861", "-0.00000043861", "-0.00000043861", "-4.38606623021e-07", "-4.38606623021e-07", "-4.38606623021e-07", "-4.386066230211e-07", "-4.386066230211e-07", "-4.386066230211e-07", "-0.000000438607", "-0.000000438607", "-0.000000438607", "-4.386066230211e-07", "-4.386066230211e-07", "-4.386066230211e-07", "-4.3860662302109e-07", "-4.3860662302109e-07", "-4.3860662302109e-07", "-0.0000004386066", "-0.0000004386066", "-0.0000004386066", }}, + {{ "5e-08", "5.e-08", "+5e-08", "5.5e-08", "+5.5e-08", "5.5e-08", "0.0", "0.0", "+0.0", "5.5e-08", "5.5e-08", "+5.5e-08", "5.48e-08", "+5.48e-08", "5.48e-08", "0.00", "0.00", "+0.00", "5.48e-08", "5.48e-08", "+5.48e-08", "5.483e-08", "+5.483e-08", "5.483e-08", "0.000", "0.000", "+0.000", "5.483e-08", "5.483e-08", "+5.483e-08", "5.4826e-08", "+5.4826e-08", "5.4826e-08", "0.0000", "0.0000", "+0.0000", "5.4826e-08", "5.4826e-08", "+5.4826e-08", "5.48258e-08", "+5.48258e-08", "5.48258e-08", "0.00000", "0.00000", "+0.00000", "5.48258e-08", "5.48258e-08", "+5.48258e-08", "5.482583e-08", "+5.482583e-08", "5.482583e-08", "0.000000", "0.000000", "+0.000000", "5.482583e-08", "5.482583e-08", "+5.482583e-08", "5.4825828e-08", "+5.4825828e-08", "5.4825828e-08", "0.0000001", "0.0000001", "+0.0000001", "5.4825828e-08", "5.4825828e-08", "+5.4825828e-08", "5.48258279e-08", "+5.48258279e-08", "5.48258279e-08", "0.00000005", "0.00000005", "+0.00000005", "5.48258279e-08", "5.48258279e-08", "+5.48258279e-08", "5.482582788e-08", "+5.482582788e-08", "5.482582788e-08", "0.000000055", "0.000000055", "+0.000000055", "5.482582788e-08", "5.482582788e-08", "+5.482582788e-08", "5.4825827878e-08", "+5.4825827878e-08", "5.4825827878e-08", "0.0000000548", "0.0000000548", "+0.0000000548", "5.4825827878e-08", "5.4825827878e-08", "+5.4825827878e-08", "5.48258278776e-08", "+5.48258278776e-08", "5.48258278776e-08", "0.00000005483", "0.00000005483", "+0.00000005483", "5.48258278776e-08", "5.48258278776e-08", "+5.48258278776e-08", "5.482582787764e-08", "+5.482582787764e-08", "5.482582787764e-08", "0.000000054826", "0.000000054826", "+0.000000054826", "5.482582787764e-08", "5.482582787764e-08", "+5.482582787764e-08", "5.4825827877636e-08", "+5.4825827877636e-08", "5.4825827877636e-08", "0.0000000548258", "0.0000000548258", "+0.0000000548258", }}, + {{ "-5e-08", "-5.e-08", "-5e-08", "-5.5e-08", "-5.5e-08", "-5.5e-08", "-0.0", "-0.0", "-0.0", "-5.5e-08", "-5.5e-08", "-5.5e-08", "-5.48e-08", "-5.48e-08", "-5.48e-08", "-0.00", "-0.00", "-0.00", "-5.48e-08", "-5.48e-08", "-5.48e-08", "-5.483e-08", "-5.483e-08", "-5.483e-08", "-0.000", "-0.000", "-0.000", "-5.483e-08", "-5.483e-08", "-5.483e-08", "-5.4826e-08", "-5.4826e-08", "-5.4826e-08", "-0.0000", "-0.0000", "-0.0000", "-5.4826e-08", "-5.4826e-08", "-5.4826e-08", "-5.48258e-08", "-5.48258e-08", "-5.48258e-08", "-0.00000", "-0.00000", "-0.00000", "-5.48258e-08", "-5.48258e-08", "-5.48258e-08", "-5.482583e-08", "-5.482583e-08", "-5.482583e-08", "-0.000000", "-0.000000", "-0.000000", "-5.482583e-08", "-5.482583e-08", "-5.482583e-08", "-5.4825828e-08", "-5.4825828e-08", "-5.4825828e-08", "-0.0000001", "-0.0000001", "-0.0000001", "-5.4825828e-08", "-5.4825828e-08", "-5.4825828e-08", "-5.48258279e-08", "-5.48258279e-08", "-5.48258279e-08", "-0.00000005", "-0.00000005", "-0.00000005", "-5.48258279e-08", "-5.48258279e-08", "-5.48258279e-08", "-5.482582788e-08", "-5.482582788e-08", "-5.482582788e-08", "-0.000000055", "-0.000000055", "-0.000000055", "-5.482582788e-08", "-5.482582788e-08", "-5.482582788e-08", "-5.4825827878e-08", "-5.4825827878e-08", "-5.4825827878e-08", "-0.0000000548", "-0.0000000548", "-0.0000000548", "-5.4825827878e-08", "-5.4825827878e-08", "-5.4825827878e-08", "-5.48258278776e-08", "-5.48258278776e-08", "-5.48258278776e-08", "-0.00000005483", "-0.00000005483", "-0.00000005483", "-5.48258278776e-08", "-5.48258278776e-08", "-5.48258278776e-08", "-5.482582787764e-08", "-5.482582787764e-08", "-5.482582787764e-08", "-0.000000054826", "-0.000000054826", "-0.000000054826", "-5.482582787764e-08", "-5.482582787764e-08", "-5.482582787764e-08", "-5.4825827877636e-08", "-5.4825827877636e-08", "-5.4825827877636e-08", "-0.0000000548258", "-0.0000000548258", "-0.0000000548258", }}, + {{ "7e-09", "7.e-09", "+7e-09", "6.9e-09", "+6.9e-09", "6.9e-09", "0.0", "0.0", "+0.0", "6.9e-09", "6.9e-09", "+6.9e-09", "6.85e-09", "+6.85e-09", "6.85e-09", "0.00", "0.00", "+0.00", "6.85e-09", "6.85e-09", "+6.85e-09", "6.853e-09", "+6.853e-09", "6.853e-09", "0.000", "0.000", "+0.000", "6.853e-09", "6.853e-09", "+6.853e-09", "6.8532e-09", "+6.8532e-09", "6.8532e-09", "0.0000", "0.0000", "+0.0000", "6.8532e-09", "6.8532e-09", "+6.8532e-09", "6.85323e-09", "+6.85323e-09", "6.85323e-09", "0.00000", "0.00000", "+0.00000", "6.85323e-09", "6.85323e-09", "+6.85323e-09", "6.853228e-09", "+6.853228e-09", "6.853228e-09", "0.000000", "0.000000", "+0.000000", "6.853228e-09", "6.853228e-09", "+6.853228e-09", "6.8532285e-09", "+6.8532285e-09", "6.8532285e-09", "0.0000000", "0.0000000", "+0.0000000", "6.8532285e-09", "6.8532285e-09", "+6.8532285e-09", "6.85322848e-09", "+6.85322848e-09", "6.85322848e-09", "0.00000001", "0.00000001", "+0.00000001", "6.85322848e-09", "6.85322848e-09", "+6.85322848e-09", "6.853228485e-09", "+6.853228485e-09", "6.853228485e-09", "0.000000007", "0.000000007", "+0.000000007", "6.853228485e-09", "6.853228485e-09", "+6.853228485e-09", "6.8532284847e-09", "+6.8532284847e-09", "6.8532284847e-09", "0.0000000069", "0.0000000069", "+0.0000000069", "6.8532284847e-09", "6.8532284847e-09", "+6.8532284847e-09", "6.85322848470e-09", "+6.85322848470e-09", "6.85322848470e-09", "0.00000000685", "0.00000000685", "+0.00000000685", "6.8532284847e-09", "6.85322848470e-09", "+6.8532284847e-09", "6.853228484704e-09", "+6.853228484704e-09", "6.853228484704e-09", "0.000000006853", "0.000000006853", "+0.000000006853", "6.853228484704e-09", "6.853228484704e-09", "+6.853228484704e-09", "6.8532284847045e-09", "+6.8532284847045e-09", "6.8532284847045e-09", "0.0000000068532", "0.0000000068532", "+0.0000000068532", }}, + {{ "-7e-09", "-7.e-09", "-7e-09", "-6.9e-09", "-6.9e-09", "-6.9e-09", "-0.0", "-0.0", "-0.0", "-6.9e-09", "-6.9e-09", "-6.9e-09", "-6.85e-09", "-6.85e-09", "-6.85e-09", "-0.00", "-0.00", "-0.00", "-6.85e-09", "-6.85e-09", "-6.85e-09", "-6.853e-09", "-6.853e-09", "-6.853e-09", "-0.000", "-0.000", "-0.000", "-6.853e-09", "-6.853e-09", "-6.853e-09", "-6.8532e-09", "-6.8532e-09", "-6.8532e-09", "-0.0000", "-0.0000", "-0.0000", "-6.8532e-09", "-6.8532e-09", "-6.8532e-09", "-6.85323e-09", "-6.85323e-09", "-6.85323e-09", "-0.00000", "-0.00000", "-0.00000", "-6.85323e-09", "-6.85323e-09", "-6.85323e-09", "-6.853228e-09", "-6.853228e-09", "-6.853228e-09", "-0.000000", "-0.000000", "-0.000000", "-6.853228e-09", "-6.853228e-09", "-6.853228e-09", "-6.8532285e-09", "-6.8532285e-09", "-6.8532285e-09", "-0.0000000", "-0.0000000", "-0.0000000", "-6.8532285e-09", "-6.8532285e-09", "-6.8532285e-09", "-6.85322848e-09", "-6.85322848e-09", "-6.85322848e-09", "-0.00000001", "-0.00000001", "-0.00000001", "-6.85322848e-09", "-6.85322848e-09", "-6.85322848e-09", "-6.853228485e-09", "-6.853228485e-09", "-6.853228485e-09", "-0.000000007", "-0.000000007", "-0.000000007", "-6.853228485e-09", "-6.853228485e-09", "-6.853228485e-09", "-6.8532284847e-09", "-6.8532284847e-09", "-6.8532284847e-09", "-0.0000000069", "-0.0000000069", "-0.0000000069", "-6.8532284847e-09", "-6.8532284847e-09", "-6.8532284847e-09", "-6.85322848470e-09", "-6.85322848470e-09", "-6.85322848470e-09", "-0.00000000685", "-0.00000000685", "-0.00000000685", "-6.8532284847e-09", "-6.85322848470e-09", "-6.8532284847e-09", "-6.853228484704e-09", "-6.853228484704e-09", "-6.853228484704e-09", "-0.000000006853", "-0.000000006853", "-0.000000006853", "-6.853228484704e-09", "-6.853228484704e-09", "-6.853228484704e-09", "-6.8532284847045e-09", "-6.8532284847045e-09", "-6.8532284847045e-09", "-0.0000000068532", "-0.0000000068532", "-0.0000000068532", }}, + {{ "9e-10", "9.e-10", "+9e-10", "8.6e-10", "+8.6e-10", "8.6e-10", "0.0", "0.0", "+0.0", "8.6e-10", "8.6e-10", "+8.6e-10", "8.57e-10", "+8.57e-10", "8.57e-10", "0.00", "0.00", "+0.00", "8.57e-10", "8.57e-10", "+8.57e-10", "8.567e-10", "+8.567e-10", "8.567e-10", "0.000", "0.000", "+0.000", "8.567e-10", "8.567e-10", "+8.567e-10", "8.5665e-10", "+8.5665e-10", "8.5665e-10", "0.0000", "0.0000", "+0.0000", "8.5665e-10", "8.5665e-10", "+8.5665e-10", "8.56654e-10", "+8.56654e-10", "8.56654e-10", "0.00000", "0.00000", "+0.00000", "8.56654e-10", "8.56654e-10", "+8.56654e-10", "8.566536e-10", "+8.566536e-10", "8.566536e-10", "0.000000", "0.000000", "+0.000000", "8.566536e-10", "8.566536e-10", "+8.566536e-10", "8.5665356e-10", "+8.5665356e-10", "8.5665356e-10", "0.0000000", "0.0000000", "+0.0000000", "8.5665356e-10", "8.5665356e-10", "+8.5665356e-10", "8.56653561e-10", "+8.56653561e-10", "8.56653561e-10", "0.00000000", "0.00000000", "+0.00000000", "8.56653561e-10", "8.56653561e-10", "+8.56653561e-10", "8.566535606e-10", "+8.566535606e-10", "8.566535606e-10", "0.000000001", "0.000000001", "+0.000000001", "8.566535606e-10", "8.566535606e-10", "+8.566535606e-10", "8.5665356059e-10", "+8.5665356059e-10", "8.5665356059e-10", "0.0000000009", "0.0000000009", "+0.0000000009", "8.5665356059e-10", "8.5665356059e-10", "+8.5665356059e-10", "8.56653560588e-10", "+8.56653560588e-10", "8.56653560588e-10", "0.00000000086", "0.00000000086", "+0.00000000086", "8.56653560588e-10", "8.56653560588e-10", "+8.56653560588e-10", "8.566535605881e-10", "+8.566535605881e-10", "8.566535605881e-10", "0.000000000857", "0.000000000857", "+0.000000000857", "8.566535605881e-10", "8.566535605881e-10", "+8.566535605881e-10", "8.5665356058806e-10", "+8.5665356058806e-10", "8.5665356058806e-10", "0.0000000008567", "0.0000000008567", "+0.0000000008567", }}, + {{ "-9e-10", "-9.e-10", "-9e-10", "-8.6e-10", "-8.6e-10", "-8.6e-10", "-0.0", "-0.0", "-0.0", "-8.6e-10", "-8.6e-10", "-8.6e-10", "-8.57e-10", "-8.57e-10", "-8.57e-10", "-0.00", "-0.00", "-0.00", "-8.57e-10", "-8.57e-10", "-8.57e-10", "-8.567e-10", "-8.567e-10", "-8.567e-10", "-0.000", "-0.000", "-0.000", "-8.567e-10", "-8.567e-10", "-8.567e-10", "-8.5665e-10", "-8.5665e-10", "-8.5665e-10", "-0.0000", "-0.0000", "-0.0000", "-8.5665e-10", "-8.5665e-10", "-8.5665e-10", "-8.56654e-10", "-8.56654e-10", "-8.56654e-10", "-0.00000", "-0.00000", "-0.00000", "-8.56654e-10", "-8.56654e-10", "-8.56654e-10", "-8.566536e-10", "-8.566536e-10", "-8.566536e-10", "-0.000000", "-0.000000", "-0.000000", "-8.566536e-10", "-8.566536e-10", "-8.566536e-10", "-8.5665356e-10", "-8.5665356e-10", "-8.5665356e-10", "-0.0000000", "-0.0000000", "-0.0000000", "-8.5665356e-10", "-8.5665356e-10", "-8.5665356e-10", "-8.56653561e-10", "-8.56653561e-10", "-8.56653561e-10", "-0.00000000", "-0.00000000", "-0.00000000", "-8.56653561e-10", "-8.56653561e-10", "-8.56653561e-10", "-8.566535606e-10", "-8.566535606e-10", "-8.566535606e-10", "-0.000000001", "-0.000000001", "-0.000000001", "-8.566535606e-10", "-8.566535606e-10", "-8.566535606e-10", "-8.5665356059e-10", "-8.5665356059e-10", "-8.5665356059e-10", "-0.0000000009", "-0.0000000009", "-0.0000000009", "-8.5665356059e-10", "-8.5665356059e-10", "-8.5665356059e-10", "-8.56653560588e-10", "-8.56653560588e-10", "-8.56653560588e-10", "-0.00000000086", "-0.00000000086", "-0.00000000086", "-8.56653560588e-10", "-8.56653560588e-10", "-8.56653560588e-10", "-8.566535605881e-10", "-8.566535605881e-10", "-8.566535605881e-10", "-0.000000000857", "-0.000000000857", "-0.000000000857", "-8.566535605881e-10", "-8.566535605881e-10", "-8.566535605881e-10", "-8.5665356058806e-10", "-8.5665356058806e-10", "-8.5665356058806e-10", "-0.0000000008567", "-0.0000000008567", "-0.0000000008567", }}, diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index fb098b31..1141375a 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -93,7 +93,7 @@ void test() }}; boost::array, 40> string_data = {{ -#include "libs/multiprecision/string_data.ipp" +#include "libs/multiprecision/libs/string_data.ipp" }}; double num = 123456789.0; From a53f46637ef0a9cfc2110507c8d15f7ab971010c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 20 Jan 2012 17:15:22 +0000 Subject: [PATCH 105/256] Fix Linux 64 failures [SVN r76593] --- .../multiprecision/detail/mp_number_base.hpp | 4 ++-- include/boost/multiprecision/fixed_int.hpp | 10 +++++----- include/boost/multiprecision/gmp.hpp | 9 +++++++-- include/boost/multiprecision/mpfr.hpp | 4 ++-- include/boost/multiprecision/tommath.hpp | 17 +++++++++++------ test/test_float_io.cpp | 2 +- 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 6d183709..4178c8f4 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -439,14 +439,14 @@ void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, if(fixed || (!scientific && (my_exp >= -4) && (my_exp < digits))) { - if(1 + my_exp > str.size()) + if(1 + my_exp > static_cast(str.size())) { // Just pad out the end with zeros: str.append(static_cast(1 + my_exp - str.size()), '0'); if(showpoint || fixed) str.append("."); } - else if(my_exp + 1 < str.size()) + else if(my_exp + 1 < static_cast(str.size())) { if(my_exp < 0) { diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 7dda8ff5..9c9a47d7 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -34,7 +34,7 @@ struct fixed_int BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); BOOST_STATIC_CONSTANT(limb_type, upper_limb_mask = (Bits % limb_bits ? (1 << (Bits % limb_bits)) - 1 : max_limb_value)); BOOST_STATIC_CONSTANT(limb_type, upper_limb_not_mask = ~upper_limb_mask); - BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1 << ((Bits % limb_bits ? Bits % limb_bits : limb_bits) - 1)); + BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << ((Bits % limb_bits ? Bits % limb_bits : limb_bits) - 1)); typedef boost::array data_type; fixed_int(){} @@ -53,7 +53,7 @@ struct fixed_int fixed_int& operator = (limb_type i) { m_value[limb_count - 1] = i; - for(int j = limb_count - 2; j >= 0; --j) + for(int j = static_cast(limb_count) - 2; j >= 0; --j) m_value[j] = 0; m_value[0] &= fixed_int::upper_limb_mask; return *this; @@ -62,7 +62,7 @@ struct fixed_int { m_value[limb_count - 1] = i; // sign extend: - for(int j = limb_count - 2; j >= 0; --j) + for(int j = static_cast(limb_count) - 2; j >= 0; --j) m_value[j] = i < 0 ? max_limb_value : 0; m_value[0] &= fixed_int::upper_limb_mask; return *this; @@ -400,7 +400,7 @@ inline void subtract(fixed_int& result, const limb_type& o) + 1uLL + static_cast(~o); result.data()[fixed_int::limb_count - 1] = static_cast(carry); carry >>= fixed_int::limb_bits; - for(int i = fixed_int::limb_count - 2; i >= 0; --i) + for(int i = static_cast(fixed_int::limb_count) - 2; i >= 0; --i) { carry += static_cast(result.data()[i]) + 0xFFFFFFFF; result.data()[i] = static_cast(carry); @@ -713,7 +713,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1] % y.data()[fixed_int::limb_count - 1]; return; } - else if(r_order == fixed_int::limb_count - 2) + else if(r_order == static_cast(fixed_int::limb_count) - 2) { double_limb_type a, b; a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index d4bdb350..d246b07b 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1790,6 +1790,11 @@ class numeric_limits > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // min and max values chosen so as to not cause segfaults when calling + // mpf_get_str on 64-bit Linux builds. Possibly we could use larger + // exponent values elsewhere. + // BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { initializer.do_nothing(); @@ -1798,7 +1803,7 @@ public: { value.first = true; value.second = 1; - mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX); + mpf_div_2exp(value.second.backend().data(), value.second.backend().data(), (std::numeric_limits::max)() / 64 + 1); } return value.second; } @@ -1810,7 +1815,7 @@ public: { value.first = true; value.second = 1; - mpf_mul_2exp(value.second.backend().data(), value.second.backend().data(), LONG_MAX - 1); + mpf_mul_2exp(value.second.backend().data(), value.second.backend().data(), (std::numeric_limits::max)() / 64 + 1); } return value.second; } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 74b9a614..aed383e2 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -800,12 +800,12 @@ inline void convert_to(long* result, const mpfr_float_backend& val) } #ifdef _MPFR_H_HAVE_INTMAX_T template -inline void convert_to(boost::uintmax_t* result, const mpfr_float_backend& val) +inline void convert_to(unsigned long long* result, const mpfr_float_backend& val) { *result = mpfr_get_uj(val.data(), GMP_RNDN); } template -inline void convert_to(boost::intmax_t* result, const mpfr_float_backend& val) +inline void convert_to(long long* result, const mpfr_float_backend& val) { *result = mpfr_get_sj(val.data(), GMP_RNDN); } diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 86ecea9e..41757e32 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -33,9 +33,9 @@ inline void check_tommath_result(unsigned v) struct tommath_int { - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list float_types; + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; tommath_int() { @@ -78,15 +78,20 @@ struct tommath_int detail::check_tommath_result(mp_neg(&m_data, &m_data)); return *this; } - tommath_int& operator = (unsigned long i) + // + // Note that although mp_set_int takes an unsigned long as an argument + // it only sets the first 32-bits to the result, and ignores the rest. + // So use uint32_t as the largest type to pass to this function. + // + tommath_int& operator = (boost::uint32_t i) { detail::check_tommath_result((mp_set_int(&m_data, i))); return *this; } - tommath_int& operator = (long i) + tommath_int& operator = (boost::int32_t i) { bool neg = i < 0; - *this = static_cast(std::abs(i)); + *this = static_cast(std::abs(i)); if(neg) detail::check_tommath_result(mp_neg(&m_data, &m_data)); return *this; diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 1141375a..17c0e02b 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -93,7 +93,7 @@ void test() }}; boost::array, 40> string_data = {{ -#include "libs/multiprecision/libs/string_data.ipp" +#include "libs/multiprecision/test/string_data.ipp" }}; double num = 123456789.0; From a7d4ab19fbacc059eda70632a89959ea1ba6c48f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 21 Jan 2012 13:12:56 +0000 Subject: [PATCH 106/256] Tweak division and string conversion routines for better performance - sadly we're still way behind GMP on these (though better than libtommath). [SVN r76609] --- include/boost/multiprecision/fixed_int.hpp | 121 +++++++++++++++------ 1 file changed, 88 insertions(+), 33 deletions(-) diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 9c9a47d7..6cf8c308 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -21,6 +21,16 @@ typedef boost::uint32_t limb_type; typedef boost::int32_t signed_limb_type; typedef boost::uint64_t double_limb_type; typedef boost::int64_t signed_double_limb_type; +static const limb_type max_block_10 = 1000000000; +static const limb_type digits_per_block_10 = 9; + +inline limb_type block_multiplier(int count) +{ + static const limb_type values[digits_per_block_10] + = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; + BOOST_ASSERT(count < digits_per_block_10); + return values[count]; +} template struct fixed_int @@ -176,41 +186,65 @@ struct fixed_int if(radix == 8 || radix == 16) { unsigned shift = radix == 8 ? 3 : 4; - limb_type val = max_limb_value; + unsigned block_count = limb_bits / shift; + unsigned block_shift = shift * block_count; + limb_type val, block; while(*s) { - left_shift(*this, shift); - if(*s >= '0' && *s <= '9') - val = *s - '0'; - else if(*s >= 'a' && *s <= 'f') - val = 10 + *s - 'a'; - else if(*s >= 'A' && *s <= 'F') - val = 10 + *s - 'A'; - else - val = max_limb_value; - if(val > radix) + block = 0; + for(unsigned i = 0; (i < block_count); ++i) { - m_value[0] &= fixed_int::upper_limb_mask; - return *this; // TODO raise an exception here? + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else if(*s >= 'a' && *s <= 'f') + val = 10 + *s - 'a'; + else if(*s >= 'A' && *s <= 'F') + val = 10 + *s - 'A'; + else + val = max_limb_value; + if(val > radix) + { + m_value[0] &= fixed_int::upper_limb_mask; + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); + } + block <<= shift; + block |= val; + if(!*++s) + { + // final shift is different: + block_shift = (i + 1) * shift; + break; + } } - m_value[limb_count - 1] |= val; - ++s; + left_shift(*this, block_shift); + m_value[limb_count - 1] |= block; } } else { - // Base 10: + // Base 10, we extract blocks of size 10^9 at a time, that way + // the number of multiplications is kept to a minimum: + limb_type block_mult = max_block_10; while(*s) { - // TODO: this implementation is brain dead, Fix Me! - multiply(*this, static_cast(10)); - limb_type val; - if(*s >= '0' && *s <= '9') - val = *s - '0'; - else - return *this; // TODO raise an exception here? - add(*this, val); - ++s; + limb_type block = 0; + for(unsigned i = 0; i < digits_per_block_10; ++i) + { + limb_type val; + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected character encountered in input.")); + block *= 10; + block += val; + if(!*++s) + { + block_mult = block_multiplier(i); + break; + } + } + multiply(*this, block_mult); + add(*this, block); } } } @@ -237,12 +271,14 @@ struct fixed_int limb_type shift = base == 8 ? 3 : 4; limb_type mask = static_cast((1u << shift) - 1); fixed_int t(*this); + result.assign(Bits / shift + (Bits % shift ? 1 : 0), '0'); + int pos = result.size() - 1; for(unsigned i = 0; i < Bits / shift; ++i) { char c = '0' + (t.data()[limb_count-1] & mask); if(c > '9') c += 'A' - '9' - 1; - result.insert(0, 1, c); + result[pos--] = c; right_shift(t, shift); } if(Bits % shift) @@ -251,7 +287,7 @@ struct fixed_int char c = '0' + (t.data()[limb_count-1] & mask); if(c > '9') c += 'A' - '9'; - result.insert(0, 1, c); + result[pos] = c; } // // Get rid of leading zeros: @@ -268,9 +304,11 @@ struct fixed_int } else { + result.assign(Bits / 3 + 1, '0'); + int pos = result.size() - 1; fixed_int t(*this); fixed_int ten, r; - ten = limb_type(1000000000); + ten = limb_type(max_block_10); bool neg = false; if(Signed && (t.data()[0] & sign_bit_mask)) { @@ -289,11 +327,13 @@ struct fixed_int divide_unsigned_helper(t2, t, ten, r); t = t2; limb_type v = r.data()[limb_count - 1]; - for(unsigned i = 0; i < 9; ++i) + for(unsigned i = 0; i < digits_per_block_10; ++i) { char c = '0' + v % 10; v /= 10; - result.insert(0, 1, c); + result[pos] = c; + if(pos-- == 0) + break; } } } @@ -767,12 +807,27 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1 - shift] = guess; + //t = limb_type(0); + //t.data()[fixed_int::limb_count - 1 - shift] = guess; if(r_neg) - subtract(result, t); + { + if(result.data()[fixed_int::limb_count - 1 - shift] > guess) + result.data()[fixed_int::limb_count - 1 - shift] -= guess; + else + { + t = limb_type(0); + t.data()[fixed_int::limb_count - 1 - shift] = guess; + subtract(result, t); + } + } + else if(fixed_int::max_limb_value - result.data()[fixed_int::limb_count - 1 - shift] > guess) + result.data()[fixed_int::limb_count - 1 - shift] += guess; else + { + t = limb_type(0); + t.data()[fixed_int::limb_count - 1 - shift] = guess; add(result, t); + } // // Calculate guess * y, we use a fused mutiply-shift O(N) for this // rather than a full O(N^2) multiply: From 4b844fc60cb86d2ef9f217a50624dd87103b69ea Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 22 Jan 2012 19:12:37 +0000 Subject: [PATCH 107/256] Improve performance of fixed_int divide and string conversion. Add mixed integer ops to fixed_int. Improve fixed_int test cases. Add improved default forwarding functions that preserve arithmetic type arguments. Fix some operator overloads. Update performance tests. [SVN r76639] --- .../multiprecision/detail/default_ops.hpp | 33 ++ .../multiprecision/detail/mp_number_base.hpp | 4 +- include/boost/multiprecision/fixed_int.hpp | 358 ++++++++++++++++-- performance/Jamfile.v2 | 106 ++++++ performance/performance_test.cpp | 75 +++- performance/sf_performance.cpp | 119 +++++- test/Jamfile.v2 | 2 +- test/test_fixed_int.cpp | 37 ++ 8 files changed, 683 insertions(+), 51 deletions(-) create mode 100644 performance/Jamfile.v2 diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 1ed7aacf..25010500 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -131,6 +131,12 @@ inline void add(T& t, const U& u, const V& v) add(t, v); } } +template +inline typename disable_if >::type add(T& t, const U& a, const T& b) +{ + return add(t, b, a); +} + template inline void subtract(T& t, const U& u, const V& v) { @@ -147,6 +153,13 @@ inline void subtract(T& t, const U& u, const V& v) subtract(t, v); } } +template +inline typename disable_if >::type subtract(T& t, const U& a, const T& b) +{ + subtract(t, b, a); + t.negate(); +} + template inline void multiply(T& t, const U& u, const V& v) { @@ -160,6 +173,11 @@ inline void multiply(T& t, const U& u, const V& v) multiply(t, v); } } +template +inline typename disable_if >::type multiply(T& t, const U& a, const T& b) +{ + multiply(t, b, a); +} template inline void divide(T& t, const U& u, const V& v) { @@ -207,6 +225,11 @@ inline void bitwise_and(T& t, const U& u, const V& v) bitwise_and(t, v); } } +template +inline typename disable_if >::type bitwise_and(T& t, const U& a, const T& b) +{ + bitwise_and(t, b, a); +} template inline void bitwise_or(T& t, const U& u, const V& v) @@ -221,6 +244,11 @@ inline void bitwise_or(T& t, const U& u, const V& v) bitwise_or(t, v); } } +template +inline typename disable_if >::type bitwise_or(T& t, const U& a, const T& b) +{ + bitwise_or(t, b, a); +} template inline void bitwise_xor(T& t, const U& u, const V& v) @@ -235,6 +263,11 @@ inline void bitwise_xor(T& t, const U& u, const V& v) bitwise_xor(t, v); } } +template +inline typename disable_if >::type bitwise_xor(T& t, const U& a, const T& b) +{ + bitwise_xor(t, b, a); +} template inline void increment(T& val) diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 4178c8f4..870adace 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -591,7 +591,7 @@ inline detail::mp_exp, mp_number > return detail::mp_exp, mp_number >(b, a.left_ref()); } template -inline typename enable_if, detail::mp_exp, V > >::type +inline typename enable_if, detail::mp_exp > >::type operator + (const detail::mp_exp >& a, const V& b) { return detail::mp_exp >(b, a.left_ref()); @@ -686,7 +686,7 @@ template inline typename enable_if, detail::mp_exp, V > > >::type operator - (const detail::mp_exp >& a, const V& b) { - return detail::mp_exp >(b, a.left_ref()); + return detail::mp_exp, V > >(detail::mp_exp, V >(a.left_ref(), b)); } template inline typename enable_if, detail::mp_exp > >::type diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 6cf8c308..449c90d2 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -307,8 +307,7 @@ struct fixed_int result.assign(Bits / 3 + 1, '0'); int pos = result.size() - 1; fixed_int t(*this); - fixed_int ten, r; - ten = limb_type(max_block_10); + fixed_int r; bool neg = false; if(Signed && (t.data()[0] & sign_bit_mask)) { @@ -324,7 +323,7 @@ struct fixed_int while(get_sign(t) != 0) { fixed_int t2; - divide_unsigned_helper(t2, t, ten, r); + divide_unsigned_helper(t2, t, max_block_10, r); t = t2; limb_type v = r.data()[limb_count - 1]; for(unsigned i = 0; i < digits_per_block_10; ++i) @@ -440,7 +439,7 @@ inline void subtract(fixed_int& result, const limb_type& o) + 1uLL + static_cast(~o); result.data()[fixed_int::limb_count - 1] = static_cast(carry); carry >>= fixed_int::limb_bits; - for(int i = static_cast(fixed_int::limb_count) - 2; i >= 0; --i) + for(int i = static_cast(fixed_int::limb_count) - 2; (carry != 1) && (i >= 0); --i) { carry += static_cast(result.data()[i]) + 0xFFFFFFFF; result.data()[i] = static_cast(carry); @@ -684,7 +683,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int& result, const fixed_int rem; @@ -722,25 +706,50 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int(0u); - if(x.compare(y) < 0) - { - return; // We already have the answer: zero. - } - // // Find the most significant words of numerator and denominator. - // Note that this code can't run past the end of the array because - // we know already that neither are all zero: // - limb_type r_order = 0; - while(r.data()[r_order] == 0) - ++r_order; limb_type y_order = 0; - while(y.data()[y_order] == 0) + while((y.data()[y_order] == 0) && (y_order < fixed_int::limb_count)) ++y_order; + if(y_order >= fixed_int::limb_count - 1) + { + // + // Only a single non-zero limb in the denominator, in this case + // we can use a specialized divide-by-single-limb routine which is + // much faster. This also handles division by zero: + // + divide_unsigned_helper(result, x, y.data()[y_order], r); + return; + } + + limb_type r_order = 0; + while((x.data()[r_order] == 0) && (r_order < fixed_int::limb_count)) + ++r_order; + if(r_order == fixed_int::limb_count) + { + // x is zero, so is the result: + r = y; + result = x; + return; + } + + r = x; + result = static_cast(0u); + // + // Check if the remainder is already less than the divisor, if so + // we already have the result. Note we try and avoid a full compare + // if we can: + // + if(r_order >= y_order) + { + if((r_order > y_order) || (r.compare(y) < 0)) + { + return; + } + } + fixed_int t; bool r_neg = false; @@ -765,8 +774,6 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int last_r; - //bool last_neg; do { // @@ -778,8 +785,6 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1)) { double_limb_type a, b, v; @@ -794,15 +799,19 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1) + { + guess = r.data()[r_order] / y.data()[y_order]; + } else { double_limb_type a, b, v; - a = (r_order < fixed_int::limb_count - 1) ? (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1] : r.data()[r_order]; + a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; b = (y_order < fixed_int::limb_count - 1) ? (static_cast(y.data()[y_order]) << fixed_int::limb_bits) | y.data()[y_order + 1] : (static_cast(y.data()[y_order]) << fixed_int::limb_bits); v = a / b; guess = static_cast(v); - //guess = r.data()[r_order] / y.data()[y_order]; } + BOOST_ASSERT(guess); // If the guess ever gets to zero we go on forever.... // // Update result: // @@ -842,7 +851,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int>= fixed_int::limb_bits; } t.data()[0] &= fixed_int::upper_limb_mask; - // + // // Update r: // subtract(r, t); @@ -852,7 +861,9 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int 0); + // Termination condition is really just a check that r > y, but with two common + // short-circuit cases handled first: + while((r_order < y_order) || (r.data()[r_order] > y.data()[y_order]) || (r.compare(y) > 0)); // // We now just have to normalise the result: @@ -868,6 +879,110 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int +void divide_unsigned_helper(fixed_int& result, const fixed_int& x, limb_type y, fixed_int& r) +{ + if((&result == &x) || (&r == &x)) + { + fixed_int t(x); + divide_unsigned_helper(result, t, y, r); + return; + } + + if(&result == &r) + { + fixed_int rem; + divide_unsigned_helper(result, x, y, rem); + r = rem; + return; + } + + // As above, but simplified for integer divisor: + + using default_ops::subtract; + + if(y == 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Integer Division by zero.")); + } + // + // Find the most significant word of numerator. + // + limb_type r_order = 0; + while((x.data()[r_order] == 0) && (r_order < fixed_int::limb_count)) + ++r_order; + + // + // Set remainder and result to their initial values: + // + r = x; + result = static_cast(0u); + + if(r_order == fixed_int::limb_count) + { + // All the limbs in x are zero, so is the result: + return; + } + // + // check for x < y, try to do this without actually having to + // do a full comparison: + // + if((r_order == fixed_int::limb_count - 1) && (r.data()[r_order] < y)) + { + return; + } + + // + // See if we can short-circuit long division, and use basic arithmetic instead: + // + if(r_order == fixed_int::limb_count - 1) + { + result = r.data()[fixed_int::limb_count - 1] / y; + r = x.data()[fixed_int::limb_count - 1] % y; + return; + } + else if(r_order == static_cast(fixed_int::limb_count) - 2) + { + double_limb_type a; + a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; + result = a / y; + r = a % y; + return; + } + + do + { + // + // Update r_order, this can't run past the end as r must be non-zero at this point: + // + while(r.data()[r_order] == 0) + ++r_order; + // + // Calculate our best guess for how many times y divides into r: + // + if((r.data()[r_order] < y) && (r_order < fixed_int::limb_count - 1)) + { + double_limb_type a, b; + a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; + b = a % y; + r.data()[r_order] = 0; + ++r_order; + r.data()[r_order] = static_cast(b); + result.data()[r_order] = static_cast(a / y); + } + else + { + result.data()[r_order] = r.data()[r_order] / y; + r.data()[r_order] %= y; + } + } + // Termination condition is really just a check that r > y, but with two common + // short-circuit cases handled first: + while((r_order < fixed_int::limb_count - 1) || (r.data()[r_order] > y)); + + BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed +} + template inline void divide(fixed_int& result, const fixed_int& a, const fixed_int& b) { @@ -902,6 +1017,52 @@ inline void divide(fixed_int& result, const fixed_int +inline void divide(fixed_int& result, const fixed_int& a, limb_type& b) +{ + fixed_int r; + if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) + { + fixed_int t(a); + t.negate(); + divide_unsigned_helper(result, t, b, r); + result.negate(); + } + else + { + divide_unsigned_helper(result, a, b, r); + } +} +template +inline void divide(fixed_int& result, const fixed_int& a, signed_limb_type& b) +{ + fixed_int r; + if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) + { + if(b < 0) + { + fixed_int t(a); + t.negate(); + divide_unsigned_helper(result, t, static_cast(-b), r); + } + else + { + fixed_int t(a); + t.negate(); + divide_unsigned_helper(result, t, b, r); + result.negate(); + } + } + else if(b < 0) + { + divide_unsigned_helper(result, a, static_cast(-b), r); + result.negate(); + } + else + { + divide_unsigned_helper(result, a, static_cast(b), r); + } +} +template inline void divide(fixed_int& result, const fixed_int& b) { // There is no in place divide: @@ -909,6 +1070,20 @@ inline void divide(fixed_int& result, const fixed_int +inline void divide(fixed_int& result, limb_type b) +{ + // There is no in place divide: + fixed_int a(result); + divide(result, a, b); +} +template +inline void divide(fixed_int& result, signed_limb_type b) +{ + // There is no in place divide: + fixed_int a(result); + divide(result, a, b); +} +template inline void modulus(fixed_int& result, const fixed_int& a, const fixed_int& b) { fixed_int r; @@ -942,12 +1117,72 @@ inline void modulus(fixed_int& result, const fixed_int +inline void modulus(fixed_int& result, const fixed_int& a, limb_type b) +{ + fixed_int r; + if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) + { + fixed_int t(a); + t.negate(); + divide_unsigned_helper(r, t, b, result); + result.negate(); + } + else + { + divide_unsigned_helper(r, a, b, result); + } +} +template +inline void modulus(fixed_int& result, const fixed_int& a, signed_limb_type b) +{ + fixed_int r; + if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) + { + if(b < 0) + { + fixed_int t1(a); + t1.negate(); + divide_unsigned_helper(r, t1, static_cast(-b), result); + result.negate(); + } + else + { + fixed_int t(a); + t.negate(); + divide_unsigned_helper(r, t, b, result); + result.negate(); + } + } + else if(b < 0) + { + divide_unsigned_helper(r, a, static_cast(-b), result); + } + else + { + divide_unsigned_helper(r, a, static_cast(b), result); + } +} +template inline void modulus(fixed_int& result, const fixed_int& b) { // There is no in place divide: fixed_int a(result); modulus(result, a, b); } +template +inline void modulus(fixed_int& result, limb_type b) +{ + // There is no in place divide: + fixed_int a(result); + modulus(result, a, b); +} +template +inline void modulus(fixed_int& result, signed_limb_type b) +{ + // There is no in place divide: + fixed_int a(result); + modulus(result, a, b); +} template inline void bitwise_and(fixed_int& result, const fixed_int& o) @@ -956,12 +1191,40 @@ inline void bitwise_and(fixed_int& result, const fixed_int +inline void bitwise_and(fixed_int& result, limb_type o) +{ + result.data()[fixed_int::limb_count - 1] &= o; + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count - 1; ++i) + result.data()[i] = 0; +} +template +inline void bitwise_and(fixed_int& result, signed_limb_type o) +{ + result.data()[fixed_int::limb_count - 1] &= o; + limb_type mask = o < 0 ? fixed_int::max_limb_value : 0; + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count - 1; ++i) + result.data()[i] &= mask; +} +template inline void bitwise_or(fixed_int& result, const fixed_int& o) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] |= o.data()[i]; } template +inline void bitwise_or(fixed_int& result, limb_type o) +{ + result.data()[fixed_int::limb_count - 1] |= o; +} +template +inline void bitwise_or(fixed_int& result, signed_limb_type o) +{ + result.data()[fixed_int::limb_count - 1] |= o; + limb_type mask = o < 0 ? fixed_int::max_limb_value : 0; + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count - 1; ++i) + result.data()[i] |= mask; +} +template inline void bitwise_xor(fixed_int& result, const fixed_int& o) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) @@ -969,6 +1232,19 @@ inline void bitwise_xor(fixed_int& result, const fixed_int::upper_limb_mask; } template +inline void bitwise_xor(fixed_int& result, limb_type o) +{ + result.data()[fixed_int::limb_count - 1] ^= o; +} +template +inline void bitwise_xor(fixed_int& result, signed_limb_type o) +{ + result.data()[fixed_int::limb_count - 1] ^= o; + limb_type mask = o < 0 ? fixed_int::max_limb_value : 0; + for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count - 1; ++i) + result.data()[i] ^= mask; +} +template inline void complement(fixed_int& result, const fixed_int& o) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 new file mode 100644 index 00000000..d141a9af --- /dev/null +++ b/performance/Jamfile.v2 @@ -0,0 +1,106 @@ +# copyright John Maddock 2012 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt. + +import modules ; +import path ; + +local ntl-path = [ modules.peek : NTL_PATH ] ; +local gmp_path = [ modules.peek : GMP_PATH ] ; +local mpfr_path = [ modules.peek : MPFR_PATH ] ; +local tommath_path = [ modules.peek : TOMMATH_PATH ] ; + +project : requirements + $(gmp_path) + $(gmp_path)/mpfr + $(gmp_path)/gmpfrxx + $(mpfr_path) + $(tommath_path) + ../../.. + $(gmp_path) + $(mpfr_path) + $(mpfr_path)/build.vc10/lib/Win32/Debug + $(tommath_path) + static + BOOST_ALL_NO_LIB + off + ; + + +lib gmp ; +lib mpfr ; + +if $(tommath_path) +{ + TOMMATH = [ GLOB $(tommath_path) : *.c ] ; +} +else +{ + lib tommath ; + TOMMATH = tommath ; +} + +exe performance_test : performance_test.cpp /boost/system//boost_system + : release + [ check-target-builds ../config//has_gmp : TEST_MPF TEST_MPZ gmp : ] + [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] + [ check-target-builds ../config//has_tommath : TEST_TOMMATH $(TOMMATH) : ] + TEST_CPP_FLOAT + TEST_FIXED_INT + ; + +exe sf_performance : sf_performance.cpp + : release + [ check-target-builds ../config//has_gmp : TEST_MPF TEST_MPZ gmp : ] + [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] + TEST_CPP_FLOAT + msvc:-bigobj + ; + +obj obj_linpack_benchmark_mpfr : linpack-benchmark.cpp + : release + [ check-target-builds ../config//has_mpfr : : no ] + TEST_MPFR_50 + ; + +obj obj_linpack_benchmark_mpf : linpack-benchmark.cpp + : release + [ check-target-builds ../config//has_gmp : : no ] + TEST_MPF_50 + ; + +obj obj_linpack_benchmark_cpp_float : linpack-benchmark.cpp + : release + TEST_CPP_FLOAT + ; + +obj obj_linpack_benchmark_double : linpack-benchmark.cpp + : release + ; + +obj obj_f2c : f2c.c : release ; + +exe linpack_benchmark_mpfr : obj_linpack_benchmark_mpfr mpfr obj_f2c + : release + [ check-target-builds ../config//has_mpfr : : no ] + TEST_MPFR_50 + ; + +exe linpack_benchmark_mpf : obj_linpack_benchmark_mpf gmp obj_f2c + : release + [ check-target-builds ../config//has_gmp : : no ] + TEST_MPF_50 + ; + +exe linpack_benchmark_cpp_float : obj_linpack_benchmark_cpp_float obj_f2c + : release + TEST_CPP_FLOAT + ; + +exe linpack_benchmark_double : obj_linpack_benchmark_double obj_f2c + : release + ; + +install . : performance_test sf_performance linpack_benchmark_double linpack_benchmark_cpp_float linpack_benchmark_mpf linpack_benchmark_mpfr ; + diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index f151ec8d..a365ee82 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -145,6 +145,16 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_multiply_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] * 3; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } double test_divide() { stopwatch w; @@ -155,6 +165,16 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_divide_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] / 3; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } double test_str() { stopwatch w; @@ -163,7 +183,7 @@ struct tester return boost::chrono::duration_cast >(w.elapsed()).count(); } // - // The following tests only work for ineteger types: + // The following tests only work for integer types: // double test_mod() { @@ -175,6 +195,16 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_mod_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] % 254; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } double test_or() { stopwatch w; @@ -185,6 +215,16 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_or_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] | 234; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } double test_and() { stopwatch w; @@ -195,6 +235,16 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_and_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] & 234; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } double test_xor() { stopwatch w; @@ -205,6 +255,16 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_xor_int() + { + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] ^ 234; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } double test_complement() { stopwatch w; @@ -380,6 +440,11 @@ void test_int_ops(tester& t, const char* type, unsigned precision, co //report_result(cat, type, "~", precision, t.test_complement()); report_result(cat, type, "<<", precision, t.test_left_shift()); report_result(cat, type, ">>", precision, t.test_right_shift()); + // integer ops: + report_result(cat, type, "%(int)", precision, t.test_mod_int()); + report_result(cat, type, "|(int)", precision, t.test_or_int()); + report_result(cat, type, "&(int)", precision, t.test_and_int()); + report_result(cat, type, "^(int)", precision, t.test_xor_int()); } template void test_int_ops(tester& t, const char* type, unsigned precision, const U&) @@ -403,12 +468,14 @@ void test(const char* type, unsigned precision) // report_result(cat, type, "+", precision, t.test_add()); report_result(cat, type, "-", precision, t.test_subtract()); - report_result(cat, type, "+(int)", precision, t.test_add_int()); - report_result(cat, type, "-(int)", precision, t.test_subtract_int()); report_result(cat, type, "*", precision, t.test_multiply()); report_result(cat, type, "/", precision, t.test_divide()); report_result(cat, type, "str", precision, t.test_str()); - + // integer ops: + report_result(cat, type, "+(int)", precision, t.test_add_int()); + report_result(cat, type, "-(int)", precision, t.test_subtract_int()); + report_result(cat, type, "*(int)", precision, t.test_multiply_int()); + report_result(cat, type, "/(int)", precision, t.test_divide_int()); test_int_ops(t, type, precision, typename boost::multiprecision::number_category::type()); } diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 5b2d0fbf..750f668d 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -6,14 +6,31 @@ #define BOOST_CHRONO_HEADER_ONLY #define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 500 +#if !defined(TEST_MPFR) && !defined(TEST_MP_REAL) && !defined(TEST_MPF) +# define TEST_MPFR +# define TEST_MPF +# define TEST_MPF +# define TEST_CPP_FLOAT +# define TEST_MPFR_CLASS +#endif + +#ifdef TEST_MPFR #include -#include #include +#endif +#ifdef TEST_MP_REAL +#include +#endif +#ifdef TEST_MPF #include +#endif +#ifdef TEST_CPP_FLOAT #include +#endif #include #include #include +#include #include #include @@ -149,29 +166,40 @@ int main() static const unsigned a[] = { 2, 3, 4, 5, 6, 7, 8 }; +#ifdef TEST_MPFR boost::multiprecision::mpfr_float_50 result, x(2); allocation_count = 0; result = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; std::cout << allocation_count << std::endl; +#endif +#ifdef TEST_MPFR_CLASS mpfr_class r, x2(2); allocation_count = 0; r = (((((a[6] * x2 + a[5]) * x2 + a[4]) * x2 + a[3]) * x2 + a[2]) * x2 + a[1]) * x2 + a[0]; std::cout << allocation_count << std::endl; +#endif +#ifdef TEST_MPREAL mpfr::mpreal r2, x3(2); allocation_count = 0; r2 = (((((a[6] * x3 + a[5]) * x3 + a[4]) * x3 + a[3]) * x3 + a[2]) * x3 + a[1]) * x3 + a[0]; std::cout << allocation_count << std::endl; +#endif allocation_count = 0; +#ifdef TEST_MPFR result = boost::math::tools::evaluate_polynomial(a, x); std::cout << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPFR_CLASS r = boost::math::tools::evaluate_polynomial(a, x2); std::cout << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPREAL r2 = boost::math::tools::evaluate_polynomial(a, x3); std::cout << allocation_count << std::endl; - +#endif boost::chrono::duration time; stopwatch c; @@ -179,216 +207,301 @@ int main() // 50 digits first: // std::cout << "Testing Bessel Functions....." << std::endl; +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) mpfr_set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL mpfr::mpreal::set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPFR c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpfr_float_50 = " << time << std::endl; std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPF + c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpf_float_50 = " << time << std::endl; std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_CPP_FLOAT + c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for cpp_float_50 = " << time << std::endl; std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPFR_CLASS c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MP_REAL c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpreal (50 digits) = " << time << std::endl; std::cout << "Total allocations for mpreal (50 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif // // Then 100 digits: // +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) mpfr_set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL mpfr::mpreal::set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPFR c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpfr_float_100 = " << time << std::endl; std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPF c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpf_float_100 = " << time << std::endl; std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_CPP_FLOAT c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for cpp_float_100 = " << time << std::endl; std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPFR_CLASS c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPREAL c.reset(); test_bessel(); time = c.elapsed(); std::cout << "Time for mpreal (100 digits) = " << time << std::endl; std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif // // 50 digits first: // c.reset(); std::cout << "Testing Polynomial Evaluation....." << std::endl; +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) mpfr_set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL mpfr::mpreal::set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPFR c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpfr_float_50 = " << time << std::endl; std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPF c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpf_float_50 = " << time << std::endl; std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_CPP_FLOAT c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for cpp_float_50 = " << time << std::endl; std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPFR_CLASS c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPREAL c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpreal (50 digits) = " << time << std::endl; std::cout << "Total allocations for mpreal (50 digits = " << allocation_count << std::endl; allocation_count = 0; +#endif // // Then 100 digits: // +#ifdef TEST_MPFR_CLASS mpfr_set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL mpfr::mpreal::set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPFR c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpfr_float_100 = " << time << std::endl; std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPF c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpf_float_100 = " << time << std::endl; std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_CPP_FLOAT c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for cpp_float_100 = " << time << std::endl; std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPFR_CLASS c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPREAL c.reset(); test_polynomial(); time = c.elapsed(); std::cout << "Time for mpreal (100 digits) = " << time << std::endl; std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; allocation_count = 0; - +#endif // // 50 digits first: // c.reset(); std::cout << "Testing Non-Central T....." << std::endl; +#ifdef TEST_MPFR_CLASS mpfr_set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL mpfr::mpreal::set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPFR c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpfr_float_50 = " << time << std::endl; std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPF c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpf_float_50 = " << time << std::endl; std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_CPP_FLOAT c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for cpp_float_50 = " << time << std::endl; std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPFR_CLASS c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MP_REAL c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpreal (50 digits) = " << time << std::endl; std::cout << "Total allocations for mpreal (50 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif // // Then 100 digits: // +#ifdef TEST_MPFR_CLASS mpfr_set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL mpfr::mpreal::set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPFR c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpfr_float_100 = " << time << std::endl; std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPF c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpf_float_100 = " << time << std::endl; std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_CPP_FLOAT c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for cpp_float_100 = " << time << std::endl; std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPFR_CLASS c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif +#ifdef TEST_MPREAL c.reset(); test_nct(); time = c.elapsed(); std::cout << "Time for mpreal (100 digits) = " << time << std::endl; std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; allocation_count = 0; +#endif } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3e547c5b..336d1cb9 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -1,4 +1,4 @@ -# copyright John Maddock 2008 +# copyright John Maddock 2011 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt. diff --git a/test/test_fixed_int.cpp b/test/test_fixed_int.cpp index 02bed7cb..cbf2458e 100644 --- a/test/test_fixed_int.cpp +++ b/test/test_fixed_int.cpp @@ -63,6 +63,8 @@ int main() mpz_int c = generate_random(256); mpz_int d = generate_random(32); + int si = d.convert_to(); + packed_type a1 = a.str(); packed_type b1 = b.str(); packed_type c1 = c.str(); @@ -77,11 +79,46 @@ int main() BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)+b).str(), packed_type(packed_type(-a1) + b1).str()); BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)-b).str(), packed_type(packed_type(-a1) - b1).str()); BOOST_CHECK_EQUAL(mpz_int(c * d).str(), packed_type(c1 * d1).str()); + BOOST_CHECK_EQUAL(mpz_int(c * -d).str(), packed_type(c1 * -d1).str()); + BOOST_CHECK_EQUAL(mpz_int(-c * d).str(), packed_type(-c1 * d1).str()); BOOST_CHECK_EQUAL(mpz_int(b * c).str(), packed_type(b1 * c1).str()); BOOST_CHECK_EQUAL(mpz_int(a / b).str(), packed_type(a1 / b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / -b).str(), packed_type(a1 / -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a / b).str(), packed_type(-a1 / b1).str()); BOOST_CHECK_EQUAL(mpz_int(a / d).str(), packed_type(a1 / d1).str()); BOOST_CHECK_EQUAL(mpz_int(a % b).str(), packed_type(a1 % b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % -b).str(), packed_type(a1 % -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a % b).str(), packed_type(-a1 % b1).str()); BOOST_CHECK_EQUAL(mpz_int(a % d).str(), packed_type(a1 % d1).str()); + // bitwise ops: + BOOST_CHECK_EQUAL(mpz_int(a|b).str(), packed_type(a1 | b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a&b).str(), packed_type(a1 & b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a^b).str(), packed_type(a1 ^ b1).str()); + // Now check operations involving integers: + BOOST_CHECK_EQUAL(mpz_int(a + si).str(), packed_type(a1 + si).str()); + BOOST_CHECK_EQUAL(mpz_int(a + -si).str(), packed_type(a1 + -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a + si).str(), packed_type(-a1 + si).str()); + BOOST_CHECK_EQUAL(mpz_int(si + a).str(), packed_type(si + a1).str()); + BOOST_CHECK_EQUAL(mpz_int(a - si).str(), packed_type(a1 - si).str()); + BOOST_CHECK_EQUAL(mpz_int(a - -si).str(), packed_type(a1 - -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a - si).str(), packed_type(-a1 - si).str()); + BOOST_CHECK_EQUAL(mpz_int(si - a).str(), packed_type(si - a1).str()); + BOOST_CHECK_EQUAL(mpz_int(b * si).str(), packed_type(b1 * si).str()); + BOOST_CHECK_EQUAL(mpz_int(b * -si).str(), packed_type(b1 * -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-b * si).str(), packed_type(-b1 * si).str()); + BOOST_CHECK_EQUAL(mpz_int(si * b).str(), packed_type(si * b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / si).str(), packed_type(a1 / si).str()); + BOOST_CHECK_EQUAL(mpz_int(a / -si).str(), packed_type(a1 / -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a / si).str(), packed_type(-a1 / si).str()); + BOOST_CHECK_EQUAL(mpz_int(a % si).str(), packed_type(a1 % si).str()); + BOOST_CHECK_EQUAL(mpz_int(a % -si).str(), packed_type(a1 % -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a % si).str(), packed_type(-a1 % si).str()); + BOOST_CHECK_EQUAL(mpz_int(a|si).str(), packed_type(a1 | si).str()); + BOOST_CHECK_EQUAL(mpz_int(a&si).str(), packed_type(a1 & si).str()); + BOOST_CHECK_EQUAL(mpz_int(a^si).str(), packed_type(a1 ^ si).str()); + BOOST_CHECK_EQUAL(mpz_int(si|a).str(), packed_type(si|a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si&a).str(), packed_type(si&a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si^a).str(), packed_type(si^a1).str()); if(last_error_count != boost::detail::test_errors()) { From 57612b470388079ee9f9f2b11c376d8ed67ea4c2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 23 Jan 2012 11:23:54 +0000 Subject: [PATCH 108/256] Fix performance Jamfile. [SVN r76649] --- performance/Jamfile.v2 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index d141a9af..f7b81703 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -50,7 +50,7 @@ exe performance_test : performance_test.cpp /boost/system//boost_system TEST_FIXED_INT ; -exe sf_performance : sf_performance.cpp +exe sf_performance : sf_performance.cpp /boost/system//boost_system : release [ check-target-builds ../config//has_gmp : TEST_MPF TEST_MPZ gmp : ] [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] @@ -79,26 +79,26 @@ obj obj_linpack_benchmark_double : linpack-benchmark.cpp : release ; -obj obj_f2c : f2c.c : release ; +lib f2c ; -exe linpack_benchmark_mpfr : obj_linpack_benchmark_mpfr mpfr obj_f2c +exe linpack_benchmark_mpfr : obj_linpack_benchmark_mpfr mpfr f2c : release [ check-target-builds ../config//has_mpfr : : no ] TEST_MPFR_50 ; -exe linpack_benchmark_mpf : obj_linpack_benchmark_mpf gmp obj_f2c +exe linpack_benchmark_mpf : obj_linpack_benchmark_mpf gmp f2c : release [ check-target-builds ../config//has_gmp : : no ] TEST_MPF_50 ; -exe linpack_benchmark_cpp_float : obj_linpack_benchmark_cpp_float obj_f2c +exe linpack_benchmark_cpp_float : obj_linpack_benchmark_cpp_float f2c : release TEST_CPP_FLOAT ; -exe linpack_benchmark_double : obj_linpack_benchmark_double obj_f2c +exe linpack_benchmark_double : obj_linpack_benchmark_double f2c : release ; From fc280b359e6046587d6110183466938a8d600b0e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 23 Jan 2012 17:07:35 +0000 Subject: [PATCH 109/256] Linux performance results and fixes. [SVN r76652] --- performance/Jamfile.v2 | 5 +- performance/performance_test-gcc-linux.log | 621 +++++++++++++++++++ performance/performance_test-intel-linux.log | 507 +++++++++++++++ performance/sf_performance.cpp | 4 +- 4 files changed, 1135 insertions(+), 2 deletions(-) create mode 100644 performance/performance_test-gcc-linux.log create mode 100644 performance/performance_test-intel-linux.log diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index f7b81703..9ab22e91 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -12,6 +12,9 @@ local mpfr_path = [ modules.peek : MPFR_PATH ] ; local tommath_path = [ modules.peek : TOMMATH_PATH ] ; project : requirements + freebsd:"-lrt" + linux:"-lrt" + pgi:"-lrt" $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx @@ -81,7 +84,7 @@ obj obj_linpack_benchmark_double : linpack-benchmark.cpp lib f2c ; -exe linpack_benchmark_mpfr : obj_linpack_benchmark_mpfr mpfr f2c +exe linpack_benchmark_mpfr : obj_linpack_benchmark_mpfr mpfr f2c gmp : release [ check-target-builds ../config//has_mpfr : : no ] TEST_MPFR_50 diff --git a/performance/performance_test-gcc-linux.log b/performance/performance_test-gcc-linux.log new file mode 100644 index 00000000..8ef6ee7b --- /dev/null +++ b/performance/performance_test-gcc-linux.log @@ -0,0 +1,621 @@ +gmp_float 50 + 0.0172634 +gmp_float 50 - 0.0190593 +gmp_float 50 * 0.0496313 +gmp_float 50 / 0.270376 +gmp_float 50 str 0.00338283 +gmp_float 50 +(int)0.0107627 +gmp_float 50 -(int)0.0189185 +gmp_float 50 *(int)0.0161546 +gmp_float 50 /(int)0.0751156 +gmp_float 100 + 0.0189236 +gmp_float 100 - 0.0210418 +gmp_float 100 * 0.0892922 +gmp_float 100 / 0.376385 +gmp_float 100 str 0.00695061 +gmp_float 100 +(int)0.0120513 +gmp_float 100 -(int)0.0198354 +gmp_float 100 *(int)0.0195997 +gmp_float 100 /(int)0.0947924 +gmp_float 500 + 0.0301919 +gmp_float 500 - 0.0323239 +gmp_float 500 * 0.870235 +gmp_float 500 / 1.42311 +gmp_float 500 str 0.0313911 +gmp_float 500 +(int)0.0179283 +gmp_float 500 -(int)0.0258331 +gmp_float 500 *(int)0.0407228 +gmp_float 500 /(int)0.231398 +gmp_int 64 + 0.0169318 +gmp_int 64 - 0.0173731 +gmp_int 64 * 0.0113175 +gmp_int 64 / 0.169581 +gmp_int 64 str 0.000400819 +gmp_int 64 +(int)0.00684333 +gmp_int 64 -(int)0.00707918 +gmp_int 64 *(int)0.00855311 +gmp_int 64 /(int)0.0451154 +gmp_int 64 % 0.157075 +gmp_int 64 | 0.00932794 +gmp_int 64 & 0.00932918 +gmp_int 64 ^ 0.00974691 +gmp_int 64 << 0.00891992 +gmp_int 64 >> 0.00890735 +gmp_int 64 %(int)0.0278521 +gmp_int 64 |(int)0.0381401 +gmp_int 64 &(int)0.039882 +gmp_int 64 ^(int)0.0387007 +gmp_int 128 + 0.0187076 +gmp_int 128 - 0.0183551 +gmp_int 128 * 0.0156906 +gmp_int 128 / 0.191252 +gmp_int 128 str 0.000364851 +gmp_int 128 +(int)0.0102801 +gmp_int 128 -(int)0.00860256 +gmp_int 128 *(int)0.0114853 +gmp_int 128 /(int)0.0523559 +gmp_int 128 % 0.15528 +gmp_int 128 | 0.0103394 +gmp_int 128 & 0.0110643 +gmp_int 128 ^ 0.0109019 +gmp_int 128 << 0.00971087 +gmp_int 128 >> 0.00747274 +gmp_int 128 %(int)0.0344314 +gmp_int 128 |(int)0.0397332 +gmp_int 128 &(int)0.0413597 +gmp_int 128 ^(int)0.0404831 +gmp_int 256 + 0.022606 +gmp_int 256 - 0.0247961 +gmp_int 256 * 0.0417861 +gmp_int 256 / 0.234977 +gmp_int 256 str 0.00059847 +gmp_int 256 +(int)0.0109994 +gmp_int 256 -(int)0.0115691 +gmp_int 256 *(int)0.0135361 +gmp_int 256 /(int)0.0654383 +gmp_int 256 % 0.186922 +gmp_int 256 | 0.0128787 +gmp_int 256 & 0.0126536 +gmp_int 256 ^ 0.0133999 +gmp_int 256 << 0.01177 +gmp_int 256 >> 0.00803845 +gmp_int 256 %(int)0.0470174 +gmp_int 256 |(int)0.0405797 +gmp_int 256 &(int)0.0422895 +gmp_int 256 ^(int)0.0411956 +gmp_int 512 + 0.0277407 +gmp_int 512 - 0.0314653 +gmp_int 512 * 0.09803 +gmp_int 512 / 0.267598 +gmp_int 512 str 0.00121866 +gmp_int 512 +(int)0.0135739 +gmp_int 512 -(int)0.0143368 +gmp_int 512 *(int)0.0181278 +gmp_int 512 /(int)0.0892225 +gmp_int 512 % 0.217246 +gmp_int 512 | 0.0173872 +gmp_int 512 & 0.016516 +gmp_int 512 ^ 0.0185213 +gmp_int 512 << 0.0143127 +gmp_int 512 >> 0.00949988 +gmp_int 512 %(int)0.0599828 +gmp_int 512 |(int)0.0437876 +gmp_int 512 &(int)0.0454139 +gmp_int 512 ^(int)0.0443687 +gmp_int 1024 + 0.0398652 +gmp_int 1024 - 0.0416822 +gmp_int 1024 * 0.316471 +gmp_int 1024 / 0.352869 +gmp_int 1024 str 0.00278974 +gmp_int 1024 +(int)0.0188639 +gmp_int 1024 -(int)0.0194421 +gmp_int 1024 *(int)0.0265822 +gmp_int 1024 /(int)0.140502 +gmp_int 1024 % 0.281408 +gmp_int 1024 | 0.0243975 +gmp_int 1024 & 0.0233641 +gmp_int 1024 ^ 0.0248742 +gmp_int 1024 << 0.0205595 +gmp_int 1024 >> 0.012374 +gmp_int 1024 %(int)0.075892 +gmp_int 1024 |(int)0.0475998 +gmp_int 1024 &(int)0.0492285 +gmp_int 1024 ^(int)0.0488719 +mpq_rational 64 + 0.248703 +mpq_rational 64 - 0.248085 +mpq_rational 64 * 0.415269 +mpq_rational 64 / 1.34308 +mpq_rational 64 str 0.000573396 +mpq_rational 64 +(int)0.287841 +mpq_rational 64 -(int)0.28346 +mpq_rational 64 *(int)0.310676 +mpq_rational 64 /(int)0.311221 +mpq_rational 128 + 0.525318 +mpq_rational 128 - 0.53016 +mpq_rational 128 * 0.933404 +mpq_rational 128 / 2.63133 +mpq_rational 128 str 0.000723346 +mpq_rational 128 +(int)0.144307 +mpq_rational 128 -(int)0.14385 +mpq_rational 128 *(int)0.172035 +mpq_rational 128 /(int)0.175494 +mpq_rational 256 + 2.26207 +mpq_rational 256 - 2.26907 +mpq_rational 256 * 4.28222 +mpq_rational 256 / 8.12755 +mpq_rational 256 str 0.00120085 +mpq_rational 256 +(int)0.162372 +mpq_rational 256 -(int)0.160533 +mpq_rational 256 *(int)0.192923 +mpq_rational 256 /(int)0.197356 +mpq_rational 512 + 5.07193 +mpq_rational 512 - 5.07942 +mpq_rational 512 * 9.65569 +mpq_rational 512 / 16.8657 +mpq_rational 512 str 0.00233842 +mpq_rational 512 +(int)0.197738 +mpq_rational 512 -(int)0.198744 +mpq_rational 512 *(int)0.240048 +mpq_rational 512 /(int)0.250338 +mpq_rational 1024 + 11.2925 +mpq_rational 1024 - 11.3536 +mpq_rational 1024 * 21.0382 +mpq_rational 1024 / 35.6477 +mpq_rational 1024 str 0.00549707 +mpq_rational 1024 +(int)0.269222 +mpq_rational 1024 -(int)0.267056 +mpq_rational 1024 *(int)0.324096 +mpq_rational 1024 /(int)0.338966 +tommath_int 64 + 0.0159939 +tommath_int 64 - 0.0250036 +tommath_int 64 * 0.0363444 +tommath_int 64 / 0.977073 +tommath_int 64 str 0.00445496 +tommath_int 64 +(int)0.164295 +tommath_int 64 -(int)0.162629 +tommath_int 64 *(int)0.179095 +tommath_int 64 /(int)0.842398 +tommath_int 64 % 0.977861 +tommath_int 64 | 0.0691489 +tommath_int 64 & 0.073788 +tommath_int 64 ^ 0.0709205 +tommath_int 64 << 0.0193922 +tommath_int 64 >> 0.124706 +tommath_int 64 %(int)0.727338 +tommath_int 64 |(int)0.239311 +tommath_int 64 &(int)0.217949 +tommath_int 64 ^(int)0.239579 +tommath_int 128 + 0.0164327 +tommath_int 128 - 0.0232398 +tommath_int 128 * 0.0548361 +tommath_int 128 / 1.08958 +tommath_int 128 str 0.00876306 +tommath_int 128 +(int)0.165193 +tommath_int 128 -(int)0.165879 +tommath_int 128 *(int)0.183198 +tommath_int 128 /(int)0.912304 +tommath_int 128 % 1.08174 +tommath_int 128 | 0.0704018 +tommath_int 128 & 0.0720242 +tommath_int 128 ^ 0.0707622 +tommath_int 128 << 0.0307909 +tommath_int 128 >> 0.135357 +tommath_int 128 %(int)0.838173 +tommath_int 128 |(int)0.239724 +tommath_int 128 &(int)0.216927 +tommath_int 128 ^(int)0.241914 +tommath_int 256 + 0.0186154 +tommath_int 256 - 0.0251722 +tommath_int 256 * 0.0904396 +tommath_int 256 / 1.35539 +tommath_int 256 str 0.0211627 +tommath_int 256 +(int)0.171325 +tommath_int 256 -(int)0.171589 +tommath_int 256 *(int)0.195625 +tommath_int 256 /(int)1.16415 +tommath_int 256 % 1.30947 +tommath_int 256 | 0.0732898 +tommath_int 256 & 0.0736961 +tommath_int 256 ^ 0.0734515 +tommath_int 256 << 0.038933 +tommath_int 256 >> 0.138079 +tommath_int 256 %(int)1.18164 +tommath_int 256 |(int)0.243102 +tommath_int 256 &(int)0.223836 +tommath_int 256 ^(int)0.245577 +tommath_int 512 + 0.0235136 +tommath_int 512 - 0.0288817 +tommath_int 512 * 0.192319 +tommath_int 512 / 1.91905 +tommath_int 512 str 0.0619139 +tommath_int 512 +(int)0.168344 +tommath_int 512 -(int)0.165763 +tommath_int 512 *(int)0.213072 +tommath_int 512 /(int)1.6709 +tommath_int 512 % 1.91623 +tommath_int 512 | 0.0782698 +tommath_int 512 & 0.0785497 +tommath_int 512 ^ 0.0787174 +tommath_int 512 << 0.0445723 +tommath_int 512 >> 0.148176 +tommath_int 512 %(int)1.724 +tommath_int 512 |(int)0.247972 +tommath_int 512 &(int)0.227986 +tommath_int 512 ^(int)0.245992 +tommath_int 1024 + 0.0353819 +tommath_int 1024 - 0.0411398 +tommath_int 1024 * 0.548938 +tommath_int 1024 / 3.19059 +tommath_int 1024 str 0.186976 +tommath_int 1024 +(int)0.179688 +tommath_int 1024 -(int)0.177946 +tommath_int 1024 *(int)0.257986 +tommath_int 1024 /(int)2.90617 +tommath_int 1024 % 3.17595 +tommath_int 1024 | 0.0928142 +tommath_int 1024 & 0.0989265 +tommath_int 1024 ^ 0.096274 +tommath_int 1024 << 0.0663455 +tommath_int 1024 >> 0.164607 +tommath_int 1024 %(int)2.83798 +tommath_int 1024 |(int)0.256182 +tommath_int 1024 &(int)0.241025 +tommath_int 1024 ^(int)0.258545 +fixed_int 64 + 0.00139124 +fixed_int 64 - 0.00164434 +fixed_int 64 * 0.00699488 +fixed_int 64 / 0.0516797 +fixed_int 64 str 0.000232222 +fixed_int 64 +(int)0.002316 +fixed_int 64 -(int)0.00191233 +fixed_int 64 *(int)0.00233361 +fixed_int 64 /(int)0.0232935 +fixed_int 64 % 0.0534904 +fixed_int 64 | 0.00176279 +fixed_int 64 & 0.00177991 +fixed_int 64 ^ 0.00173416 +fixed_int 64 << 0.000672222 +fixed_int 64 >> 0.000779919 +fixed_int 64 %(int)0.022105 +fixed_int 64 |(int)0.00108065 +fixed_int 64 &(int)0.00120958 +fixed_int 64 ^(int)0.00107863 +fixed_int 128 + 0.00260327 +fixed_int 128 - 0.00292914 +fixed_int 128 * 0.017405 +fixed_int 128 / 0.10547 +fixed_int 128 str 0.000458298 +fixed_int 128 +(int)0.00202532 +fixed_int 128 -(int)0.00163065 +fixed_int 128 *(int)0.0029341 +fixed_int 128 /(int)0.086585 +fixed_int 128 % 0.104705 +fixed_int 128 | 0.00262583 +fixed_int 128 & 0.00263365 +fixed_int 128 ^ 0.00261842 +fixed_int 128 << 0.00180218 +fixed_int 128 >> 0.00195989 +fixed_int 128 %(int)0.076707 +fixed_int 128 |(int)0.00127991 +fixed_int 128 &(int)0.00221857 +fixed_int 128 ^(int)0.00129423 +fixed_int 256 + 0.00544189 +fixed_int 256 - 0.00594733 +fixed_int 256 * 0.0716955 +fixed_int 256 / 0.18658 +fixed_int 256 str 0.0011329 +fixed_int 256 +(int)0.00239115 +fixed_int 256 -(int)0.00196589 +fixed_int 256 *(int)0.00536465 +fixed_int 256 /(int)0.177415 +fixed_int 256 % 0.18577 +fixed_int 256 | 0.00654441 +fixed_int 256 & 0.00658456 +fixed_int 256 ^ 0.00653302 +fixed_int 256 << 0.00366541 +fixed_int 256 >> 0.00345938 +fixed_int 256 %(int)0.146564 +fixed_int 256 |(int)0.00179758 +fixed_int 256 &(int)0.00406972 +fixed_int 256 ^(int)0.00174107 +fixed_int 512 + 0.0119663 +fixed_int 512 - 0.0122849 +fixed_int 512 * 0.250144 +fixed_int 512 / 0.362685 +fixed_int 512 str 0.00353655 +fixed_int 512 +(int)0.00525298 +fixed_int 512 -(int)0.0054428 +fixed_int 512 *(int)0.0104665 +fixed_int 512 /(int)0.35372 +fixed_int 512 % 0.364137 +fixed_int 512 | 0.0133848 +fixed_int 512 & 0.0134244 +fixed_int 512 ^ 0.0133775 +fixed_int 512 << 0.0111573 +fixed_int 512 >> 0.0104619 +fixed_int 512 %(int)0.293131 +fixed_int 512 |(int)0.00511566 +fixed_int 512 &(int)0.00944583 +fixed_int 512 ^(int)0.00520143 +fixed_int 1024 + 0.0265669 +fixed_int 1024 - 0.0305353 +fixed_int 1024 * 0.792037 +fixed_int 1024 / 0.758868 +fixed_int 1024 str 0.0137457 +fixed_int 1024 +(int)0.0101279 +fixed_int 1024 -(int)0.00950205 +fixed_int 1024 *(int)0.026544 +fixed_int 1024 /(int)0.709808 +fixed_int 1024 % 0.760095 +fixed_int 1024 | 0.0258782 +fixed_int 1024 & 0.0244113 +fixed_int 1024 ^ 0.0258119 +fixed_int 1024 << 0.0193046 +fixed_int 1024 >> 0.0195598 +fixed_int 1024 %(int)0.591454 +fixed_int 1024 |(int)0.010103 +fixed_int 1024 &(int)0.0249342 +fixed_int 1024 ^(int)0.0100668 +cpp_float 50 + 0.0135692 +cpp_float 50 - 0.014813 +cpp_float 50 * 0.121949 +cpp_float 50 / 1.86438 +cpp_float 50 str 0.00921786 +cpp_float 50 +(int)0.0231423 +cpp_float 50 -(int)0.0245803 +cpp_float 50 *(int)0.036823 +cpp_float 50 /(int)0.200073 +cpp_float 100 + 0.0194008 +cpp_float 100 - 0.0179391 +cpp_float 100 * 0.237444 +cpp_float 100 / 3.67594 +cpp_float 100 str 0.0156382 +cpp_float 100 +(int)0.032027 +cpp_float 100 -(int)0.0355546 +cpp_float 100 *(int)0.0596723 +cpp_float 100 /(int)0.341129 +cpp_float 500 + 0.0431376 +cpp_float 500 - 0.0441081 +cpp_float 500 * 2.11624 +cpp_float 500 / 25.3672 +cpp_float 500 str 0.0619948 +cpp_float 500 +(int)0.0717688 +cpp_float 500 -(int)0.0737847 +cpp_float 500 *(int)0.240091 +cpp_float 500 /(int)1.39098 +mpfr_float 50 + 0.018534 +mpfr_float 50 - 0.0219753 +mpfr_float 50 * 0.0573856 +mpfr_float 50 / 0.318134 +mpfr_float 50 str 0.00683453 +mpfr_float 50 +(int)0.0267235 +mpfr_float 50 -(int)0.0449984 +mpfr_float 50 *(int)0.0345749 +mpfr_float 50 /(int)0.0856313 +mpfr_float 100 + 0.0203895 +mpfr_float 100 - 0.023673 +mpfr_float 100 * 0.0922367 +mpfr_float 100 / 0.455272 +mpfr_float 100 str 0.00688747 +mpfr_float 100 +(int)0.0280739 +mpfr_float 100 -(int)0.048047 +mpfr_float 100 *(int)0.039831 +mpfr_float 100 /(int)0.107712 +mpfr_float 500 + 0.032386 +mpfr_float 500 - 0.0362805 +mpfr_float 500 * 0.853213 +mpfr_float 500 / 2.82089 +mpfr_float 500 str 0.0336548 +mpfr_float 500 +(int)0.0383341 +mpfr_float 500 -(int)0.0587852 +mpfr_float 500 *(int)0.0845355 +mpfr_float 500 /(int)0.252175 +[section:float_performance Float Type Perfomance] +[table Operator * +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.45709 (0.121949s)][2.65918 (0.237444s)][2.48032 (2.11624s)]] +[[gmp_float][[*1] (0.0496313s)][[*1] (0.0892922s)][1.01995 (0.870235s)]] +[[mpfr_float][1.15624 (0.0573856s)][1.03298 (0.0922367s)][[*1] (0.853213s)]] +] +[table Operator *(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.27942 (0.036823s)][3.04455 (0.0596723s)][5.89573 (0.240091s)]] +[[gmp_float][[*1] (0.0161546s)][[*1] (0.0195997s)][[*1] (0.0407228s)]] +[[mpfr_float][2.14025 (0.0345749s)][2.03222 (0.039831s)][2.07588 (0.0845355s)]] +] +[table Operator + +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][[*1] (0.0135692s)][1.02522 (0.0194008s)][1.42878 (0.0431376s)]] +[[gmp_float][1.27225 (0.0172634s)][[*1] (0.0189236s)][[*1] (0.0301919s)]] +[[mpfr_float][1.36589 (0.018534s)][1.07746 (0.0203895s)][1.07267 (0.032386s)]] +] +[table Operator +(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.15023 (0.0231423s)][2.65755 (0.032027s)][4.0031 (0.0717688s)]] +[[gmp_float][[*1] (0.0107627s)][[*1] (0.0120513s)][[*1] (0.0179283s)]] +[[mpfr_float][2.48298 (0.0267235s)][2.32953 (0.0280739s)][2.13819 (0.0383341s)]] +] +[table Operator - +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][[*1] (0.014813s)][[*1] (0.0179391s)][1.36457 (0.0441081s)]] +[[gmp_float][1.28666 (0.0190593s)][1.17296 (0.0210418s)][[*1] (0.0323239s)]] +[[mpfr_float][1.48351 (0.0219753s)][1.31963 (0.023673s)][1.12241 (0.0362805s)]] +] +[table Operator -(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][1.29928 (0.0245803s)][1.79248 (0.0355546s)][2.85621 (0.0737847s)]] +[[gmp_float][[*1] (0.0189185s)][[*1] (0.0198354s)][[*1] (0.0258331s)]] +[[mpfr_float][2.37854 (0.0449984s)][2.42229 (0.048047s)][2.27558 (0.0587852s)]] +] +[table Operator / +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][6.89549 (1.86438s)][9.76642 (3.67594s)][17.8252 (25.3672s)]] +[[gmp_float][[*1] (0.270376s)][[*1] (0.376385s)][[*1] (1.42311s)]] +[[mpfr_float][1.17664 (0.318134s)][1.20959 (0.455272s)][1.9822 (2.82089s)]] +] +[table Operator /(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.66353 (0.200073s)][3.59869 (0.341129s)][6.01121 (1.39098s)]] +[[gmp_float][[*1] (0.0751156s)][[*1] (0.0947924s)][[*1] (0.231398s)]] +[[mpfr_float][1.13999 (0.0856313s)][1.1363 (0.107712s)][1.08979 (0.252175s)]] +] +[table Operator str +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.72489 (0.00921786s)][2.27053 (0.0156382s)][1.97491 (0.0619948s)]] +[[gmp_float][[*1] (0.00338283s)][1.00917 (0.00695061s)][[*1] (0.0313911s)]] +[[mpfr_float][2.02036 (0.00683453s)][[*1] (0.00688747s)][1.07211 (0.0336548s)]] +] +[endsect] +[section:integer_performance Integer Type Perfomance] +[table Operator % +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0534904s)][[*1] (0.104705s)][[*1] (0.18577s)][1.67615 (0.364137s)][2.70105 (0.760095s)]] +[[gmp_int][2.93651 (0.157075s)][1.48303 (0.15528s)][1.0062 (0.186922s)][[*1] (0.217246s)][[*1] (0.281408s)]] +[[tommath_int][18.2811 (0.977861s)][10.3314 (1.08174s)][7.04886 (1.30947s)][8.82054 (1.91623s)][11.2859 (3.17595s)]] +] +[table Operator %(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.022105s)][2.22782 (0.076707s)][3.11723 (0.146564s)][4.88691 (0.293131s)][7.79337 (0.591454s)]] +[[gmp_int][1.25999 (0.0278521s)][[*1] (0.0344314s)][[*1] (0.0470174s)][[*1] (0.0599828s)][[*1] (0.075892s)]] +[[tommath_int][32.9037 (0.727338s)][24.3433 (0.838173s)][25.1319 (1.18164s)][28.7415 (1.724s)][37.3949 (2.83798s)]] +] +[table Operator & +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00177991s)][[*1] (0.00263365s)][[*1] (0.00658456s)][[*1] (0.0134244s)][1.04482 (0.0244113s)]] +[[gmp_int][5.24139 (0.00932918s)][4.20114 (0.0110643s)][1.9217 (0.0126536s)][1.2303 (0.016516s)][[*1] (0.0233641s)]] +[[tommath_int][41.4562 (0.073788s)][27.3477 (0.0720242s)][11.1923 (0.0736961s)][5.85126 (0.0785497s)][4.23413 (0.0989265s)]] +] +[table Operator &(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00120958s)][[*1] (0.00221857s)][[*1] (0.00406972s)][[*1] (0.00944583s)][[*1] (0.0249342s)]] +[[gmp_int][32.9717 (0.039882s)][18.6425 (0.0413597s)][10.3913 (0.0422895s)][4.80782 (0.0454139s)][1.97433 (0.0492285s)]] +[[tommath_int][180.185 (0.217949s)][97.7774 (0.216927s)][55.0003 (0.223836s)][24.1362 (0.227986s)][9.6664 (0.241025s)]] +] +[table Operator * +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00699488s)][1.10926 (0.017405s)][1.71577 (0.0716955s)][2.55171 (0.250144s)][2.50272 (0.792037s)]] +[[gmp_int][1.61797 (0.0113175s)][[*1] (0.0156906s)][[*1] (0.0417861s)][[*1] (0.09803s)][[*1] (0.316471s)]] +[[tommath_int][5.19586 (0.0363444s)][3.49483 (0.0548361s)][2.16435 (0.0904396s)][1.96183 (0.192319s)][1.73456 (0.548938s)]] +] +[table Operator *(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00233361s)][[*1] (0.0029341s)][[*1] (0.00536465s)][[*1] (0.0104665s)][[*1] (0.026544s)]] +[[gmp_int][3.66519 (0.00855311s)][3.9144 (0.0114853s)][2.52321 (0.0135361s)][1.73199 (0.0181278s)][1.00144 (0.0265822s)]] +[[tommath_int][76.7461 (0.179095s)][62.4375 (0.183198s)][36.4656 (0.195625s)][20.3576 (0.213072s)][9.71918 (0.257986s)]] +] +[table Operator + +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00139124s)][[*1] (0.00260327s)][[*1] (0.00544189s)][[*1] (0.0119663s)][[*1] (0.0265669s)]] +[[gmp_int][12.1703 (0.0169318s)][7.18621 (0.0187076s)][4.15407 (0.022606s)][2.31823 (0.0277407s)][1.50056 (0.0398652s)]] +[[tommath_int][11.4962 (0.0159939s)][6.31236 (0.0164327s)][3.42075 (0.0186154s)][1.96498 (0.0235136s)][1.33181 (0.0353819s)]] +] +[table Operator +(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.002316s)][[*1] (0.00202532s)][[*1] (0.00239115s)][[*1] (0.00525298s)][[*1] (0.0101279s)]] +[[gmp_int][2.9548 (0.00684333s)][5.07577 (0.0102801s)][4.60003 (0.0109994s)][2.58403 (0.0135739s)][1.86257 (0.0188639s)]] +[[tommath_int][70.9391 (0.164295s)][81.5638 (0.165193s)][71.6493 (0.171325s)][32.0474 (0.168344s)][17.7419 (0.179688s)]] +] +[table Operator - +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00164434s)][[*1] (0.00292914s)][[*1] (0.00594733s)][[*1] (0.0122849s)][[*1] (0.0305353s)]] +[[gmp_int][10.5654 (0.0173731s)][6.26638 (0.0183551s)][4.16928 (0.0247961s)][2.56129 (0.0314653s)][1.36505 (0.0416822s)]] +[[tommath_int][15.2058 (0.0250036s)][7.934 (0.0232398s)][4.23252 (0.0251722s)][2.35098 (0.0288817s)][1.34729 (0.0411398s)]] +] +[table Operator -(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00191233s)][[*1] (0.00163065s)][[*1] (0.00196589s)][[*1] (0.0054428s)][[*1] (0.00950205s)]] +[[gmp_int][3.70187 (0.00707918s)][5.27553 (0.00860256s)][5.88489 (0.0115691s)][2.63409 (0.0143368s)][2.04609 (0.0194421s)]] +[[tommath_int][85.0424 (0.162629s)][101.726 (0.165879s)][87.2831 (0.171589s)][30.4554 (0.165763s)][18.7271 (0.177946s)]] +] +[table Operator / +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0516797s)][[*1] (0.10547s)][[*1] (0.18658s)][1.35534 (0.362685s)][2.15056 (0.758868s)]] +[[gmp_int][3.28139 (0.169581s)][1.81332 (0.191252s)][1.25939 (0.234977s)][[*1] (0.267598s)][[*1] (0.352869s)]] +[[tommath_int][18.9063 (0.977073s)][10.3307 (1.08958s)][7.26443 (1.35539s)][7.17138 (1.91905s)][9.04185 (3.19059s)]] +] +[table Operator /(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0232935s)][1.65378 (0.086585s)][2.71117 (0.177415s)][3.96447 (0.35372s)][5.05194 (0.709808s)]] +[[gmp_int][1.93682 (0.0451154s)][[*1] (0.0523559s)][[*1] (0.0654383s)][[*1] (0.0892225s)][[*1] (0.140502s)]] +[[tommath_int][36.1645 (0.842398s)][17.4251 (0.912304s)][17.7901 (1.16415s)][18.7273 (1.6709s)][20.6842 (2.90617s)]] +] +[table Operator << +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.000672222s)][[*1] (0.00180218s)][[*1] (0.00366541s)][[*1] (0.0111573s)][[*1] (0.0193046s)]] +[[gmp_int][13.2693 (0.00891992s)][5.38839 (0.00971087s)][3.2111 (0.01177s)][1.28281 (0.0143127s)][1.06501 (0.0205595s)]] +[[tommath_int][28.8479 (0.0193922s)][17.0853 (0.0307909s)][10.6217 (0.038933s)][3.99491 (0.0445723s)][3.43678 (0.0663455s)]] +] +[table Operator >> +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.000779919s)][[*1] (0.00195989s)][[*1] (0.00345938s)][1.10127 (0.0104619s)][1.58072 (0.0195598s)]] +[[gmp_int][11.4209 (0.00890735s)][3.81284 (0.00747274s)][2.32367 (0.00803845s)][[*1] (0.00949988s)][[*1] (0.012374s)]] +[[tommath_int][159.896 (0.124706s)][69.0639 (0.135357s)][39.9143 (0.138079s)][15.5977 (0.148176s)][13.3026 (0.164607s)]] +] +[table Operator ^ +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00173416s)][[*1] (0.00261842s)][[*1] (0.00653302s)][[*1] (0.0133775s)][1.0377 (0.0258119s)]] +[[gmp_int][5.62054 (0.00974691s)][4.16356 (0.0109019s)][2.0511 (0.0133999s)][1.38452 (0.0185213s)][[*1] (0.0248742s)]] +[[tommath_int][40.8962 (0.0709205s)][27.0248 (0.0707622s)][11.2431 (0.0734515s)][5.88433 (0.0787174s)][3.87044 (0.096274s)]] +] +[table Operator ^(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00107863s)][[*1] (0.00129423s)][[*1] (0.00174107s)][[*1] (0.00520143s)][[*1] (0.0100668s)]] +[[gmp_int][35.8795 (0.0387007s)][31.2797 (0.0404831s)][23.661 (0.0411956s)][8.5301 (0.0443687s)][4.85477 (0.0488719s)]] +[[tommath_int][222.114 (0.239579s)][186.918 (0.241914s)][141.049 (0.245577s)][47.2931 (0.245992s)][25.683 (0.258545s)]] +] +[table Operator str +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.000232222s)][1.25612 (0.000458298s)][1.89299 (0.0011329s)][2.90199 (0.00353655s)][4.92723 (0.0137457s)]] +[[gmp_int][1.72602 (0.000400819s)][[*1] (0.000364851s)][[*1] (0.00059847s)][[*1] (0.00121866s)][[*1] (0.00278974s)]] +[[tommath_int][19.1841 (0.00445496s)][24.0182 (0.00876306s)][35.3614 (0.0211627s)][50.8048 (0.0619139s)][67.0227 (0.186976s)]] +] +[table Operator | +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00176279s)][[*1] (0.00262583s)][[*1] (0.00654441s)][[*1] (0.0133848s)][1.06069 (0.0258782s)]] +[[gmp_int][5.29157 (0.00932794s)][3.93757 (0.0103394s)][1.96789 (0.0128787s)][1.29902 (0.0173872s)][[*1] (0.0243975s)]] +[[tommath_int][39.2269 (0.0691489s)][26.8113 (0.0704018s)][11.1988 (0.0732898s)][5.84766 (0.0782698s)][3.80426 (0.0928142s)]] +] +[table Operator |(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00108065s)][[*1] (0.00127991s)][[*1] (0.00179758s)][[*1] (0.00511566s)][[*1] (0.010103s)]] +[[gmp_int][35.2935 (0.0381401s)][31.0437 (0.0397332s)][22.5747 (0.0405797s)][8.55952 (0.0437876s)][4.71147 (0.0475998s)]] +[[tommath_int][221.45 (0.239311s)][187.298 (0.239724s)][135.239 (0.243102s)][48.473 (0.247972s)][25.3571 (0.256182s)]] +] +[endsect] +[section:rational_performance Rational Type Perfomance] +[table Operator * +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.415269s)][[*1] (0.933404s)][[*1] (4.28222s)][[*1] (9.65569s)][[*1] (21.0382s)]] +] +[table Operator *(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.310676s)][[*1] (0.172035s)][[*1] (0.192923s)][[*1] (0.240048s)][[*1] (0.324096s)]] +] +[table Operator + +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.248703s)][[*1] (0.525318s)][[*1] (2.26207s)][[*1] (5.07193s)][[*1] (11.2925s)]] +] +[table Operator +(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.287841s)][[*1] (0.144307s)][[*1] (0.162372s)][[*1] (0.197738s)][[*1] (0.269222s)]] +] +[table Operator - +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.248085s)][[*1] (0.53016s)][[*1] (2.26907s)][[*1] (5.07942s)][[*1] (11.3536s)]] +] +[table Operator -(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.28346s)][[*1] (0.14385s)][[*1] (0.160533s)][[*1] (0.198744s)][[*1] (0.267056s)]] +] +[table Operator / +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (1.34308s)][[*1] (2.63133s)][[*1] (8.12755s)][[*1] (16.8657s)][[*1] (35.6477s)]] +] +[table Operator /(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.311221s)][[*1] (0.175494s)][[*1] (0.197356s)][[*1] (0.250338s)][[*1] (0.338966s)]] +] +[table Operator str +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.000573396s)][[*1] (0.000723346s)][[*1] (0.00120085s)][[*1] (0.00233842s)][[*1] (0.00549707s)]] +] +[endsect] diff --git a/performance/performance_test-intel-linux.log b/performance/performance_test-intel-linux.log new file mode 100644 index 00000000..cacc4056 --- /dev/null +++ b/performance/performance_test-intel-linux.log @@ -0,0 +1,507 @@ +gmp_float 50 + 0.0180644 +gmp_float 50 - 0.0194673 +gmp_float 50 * 0.0505578 +gmp_float 50 / 0.278179 +gmp_float 50 str 0.00357972 +gmp_float 50 +(int)0.0115205 +gmp_float 50 -(int)0.0197263 +gmp_float 50 *(int)0.0165976 +gmp_float 50 /(int)0.0758893 +gmp_float 100 + 0.019475 +gmp_float 100 - 0.0218422 +gmp_float 100 * 0.090686 +gmp_float 100 / 0.378055 +gmp_float 100 str 0.00557522 +gmp_float 100 +(int)0.0127856 +gmp_float 100 -(int)0.0205184 +gmp_float 100 *(int)0.0200577 +gmp_float 100 /(int)0.0948556 +gmp_float 500 + 0.0317241 +gmp_float 500 - 0.0335304 +gmp_float 500 * 0.947017 +gmp_float 500 / 1.5881 +gmp_float 500 str 0.0313793 +gmp_float 500 +(int)0.0187639 +gmp_float 500 -(int)0.0265882 +gmp_float 500 *(int)0.0415067 +gmp_float 500 /(int)0.232493 +gmp_int 64 + 0.0167521 +gmp_int 64 - 0.0188881 +gmp_int 64 * 0.011645 +gmp_int 64 / 0.1697 +gmp_int 64 str 0.000336635 +gmp_int 64 +(int)0.00723269 +gmp_int 64 -(int)0.00741945 +gmp_int 64 *(int)0.0120496 +gmp_int 64 /(int)0.0501068 +gmp_int 64 % 0.16582 +gmp_int 64 | 0.0115873 +gmp_int 64 & 0.0125951 +gmp_int 64 ^ 0.0129732 +gmp_int 64 << 0.00969083 +gmp_int 64 >> 0.0130601 +gmp_int 64 %(int)0.034786 +gmp_int 64 |(int)0.0424747 +gmp_int 64 &(int)0.0441868 +gmp_int 64 ^(int)0.0442481 +gmp_int 128 + 0.0192114 +gmp_int 128 - 0.0219479 +gmp_int 128 * 0.0182506 +gmp_int 128 / 0.196561 +gmp_int 128 str 0.00232097 +gmp_int 128 +(int)0.00871277 +gmp_int 128 -(int)0.0130434 +gmp_int 128 *(int)0.0127078 +gmp_int 128 /(int)0.0568248 +gmp_int 128 % 0.164977 +gmp_int 128 | 0.0134681 +gmp_int 128 & 0.01436 +gmp_int 128 ^ 0.0140653 +gmp_int 128 << 0.0131179 +gmp_int 128 >> 0.0107065 +gmp_int 128 %(int)0.0405959 +gmp_int 128 |(int)0.0440289 +gmp_int 128 &(int)0.0453998 +gmp_int 128 ^(int)0.0468496 +gmp_int 256 + 0.0230482 +gmp_int 256 - 0.0289896 +gmp_int 256 * 0.0476911 +gmp_int 256 / 0.240552 +gmp_int 256 str 0.000971703 +gmp_int 256 +(int)0.0145101 +gmp_int 256 -(int)0.0148337 +gmp_int 256 *(int)0.0170638 +gmp_int 256 /(int)0.0686065 +gmp_int 256 % 0.197103 +gmp_int 256 | 0.0159192 +gmp_int 256 & 0.015575 +gmp_int 256 ^ 0.0166751 +gmp_int 256 << 0.0148945 +gmp_int 256 >> 0.0111136 +gmp_int 256 %(int)0.0516333 +gmp_int 256 |(int)0.0474723 +gmp_int 256 &(int)0.0466442 +gmp_int 256 ^(int)0.0465869 +gmp_int 512 + 0.028268 +gmp_int 512 - 0.0352221 +gmp_int 512 * 0.103105 +gmp_int 512 / 0.281226 +gmp_int 512 str 0.00167382 +gmp_int 512 +(int)0.0170154 +gmp_int 512 -(int)0.0179625 +gmp_int 512 *(int)0.021358 +gmp_int 512 /(int)0.0950571 +gmp_int 512 % 0.230214 +gmp_int 512 | 0.0208511 +gmp_int 512 & 0.019777 +gmp_int 512 ^ 0.025011 +gmp_int 512 << 0.0182795 +gmp_int 512 >> 0.0121814 +gmp_int 512 %(int)0.0651899 +gmp_int 512 |(int)0.0493584 +gmp_int 512 &(int)0.0498514 +gmp_int 512 ^(int)0.049668 +gmp_int 1024 + 0.0408966 +gmp_int 1024 - 0.0463151 +gmp_int 1024 * 0.326898 +gmp_int 1024 / 0.36922 +gmp_int 1024 str 0.00297363 +gmp_int 1024 +(int)0.0197647 +gmp_int 1024 -(int)0.0199956 +gmp_int 1024 *(int)0.0300116 +gmp_int 1024 /(int)0.144581 +gmp_int 1024 % 0.302132 +gmp_int 1024 | 0.0284821 +gmp_int 1024 & 0.0266602 +gmp_int 1024 ^ 0.0299441 +gmp_int 1024 << 0.0247868 +gmp_int 1024 >> 0.0162548 +gmp_int 1024 %(int)0.0799406 +gmp_int 1024 |(int)0.0525727 +gmp_int 1024 &(int)0.0539474 +gmp_int 1024 ^(int)0.0539722 +mpq_rational 64 + 0.254473 +mpq_rational 64 - 0.260331 +mpq_rational 64 * 0.426868 +mpq_rational 64 / 1.50105 +mpq_rational 64 str 0.000927423 +mpq_rational 64 +(int)0.309729 +mpq_rational 64 -(int)0.306598 +mpq_rational 64 *(int)0.344178 +mpq_rational 64 /(int)0.32842 +mpq_rational 128 + 0.542374 +mpq_rational 128 - 0.545764 +mpq_rational 128 * 0.968054 +mpq_rational 128 / 2.78757 +mpq_rational 128 str 0.00111655 +mpq_rational 128 +(int)0.154116 +mpq_rational 128 -(int)0.151187 +mpq_rational 128 *(int)0.179899 +mpq_rational 128 /(int)0.184167 +mpq_rational 256 + 2.34795 +mpq_rational 256 - 2.3565 +mpq_rational 256 * 4.39195 +mpq_rational 256 / 8.9203 +mpq_rational 256 str 0.00175742 +mpq_rational 256 +(int)0.177483 +mpq_rational 256 -(int)0.16783 +mpq_rational 256 *(int)0.200539 +mpq_rational 256 /(int)0.206129 +mpq_rational 512 + 5.10523 +mpq_rational 512 - 5.08802 +mpq_rational 512 * 9.6344 +mpq_rational 512 / 16.8502 +mpq_rational 512 str 0.00246714 +mpq_rational 512 +(int)0.212807 +mpq_rational 512 -(int)0.212048 +mpq_rational 512 *(int)0.254142 +mpq_rational 512 /(int)0.262442 +mpq_rational 1024 + 11.2331 +mpq_rational 1024 - 11.2446 +mpq_rational 1024 * 20.9879 +mpq_rational 1024 / 35.6472 +mpq_rational 1024 str 0.00550783 +mpq_rational 1024 +(int)0.27756 +mpq_rational 1024 -(int)0.271845 +mpq_rational 1024 *(int)0.328602 +mpq_rational 1024 /(int)0.350883 +fixed_int 64 + 0.00207163 +fixed_int 64 - 0.00216403 +fixed_int 64 * 0.00392745 +fixed_int 64 / 0.0556903 +fixed_int 64 str 0.000302762 +fixed_int 64 +(int)0.00358307 +fixed_int 64 -(int)0.00354668 +fixed_int 64 *(int)0.00294381 +fixed_int 64 /(int)0.0169012 +fixed_int 64 % 0.054413 +fixed_int 64 | 0.00257616 +fixed_int 64 & 0.00259593 +fixed_int 64 ^ 0.00256688 +fixed_int 64 << 0.00115455 +fixed_int 64 >> 0.00147407 +fixed_int 64 %(int)0.0243407 +fixed_int 64 |(int)0.00208078 +fixed_int 64 &(int)0.00209559 +fixed_int 64 ^(int)0.00202777 +fixed_int 128 + 0.00326026 +fixed_int 128 - 0.00372498 +fixed_int 128 * 0.0104772 +fixed_int 128 / 0.105756 +fixed_int 128 str 0.000500691 +fixed_int 128 +(int)0.00359962 +fixed_int 128 -(int)0.00360689 +fixed_int 128 *(int)0.00422148 +fixed_int 128 /(int)0.0634475 +fixed_int 128 % 0.106105 +fixed_int 128 | 0.00363433 +fixed_int 128 & 0.00361924 +fixed_int 128 ^ 0.00361813 +fixed_int 128 << 0.00632357 +fixed_int 128 >> 0.00238745 +fixed_int 128 %(int)0.0811764 +fixed_int 128 |(int)0.00190869 +fixed_int 128 &(int)0.00245967 +fixed_int 128 ^(int)0.00237775 +fixed_int 256 + 0.00834722 +fixed_int 256 - 0.00653903 +fixed_int 256 * 0.0324122 +fixed_int 256 / 0.198305 +fixed_int 256 str 0.00111683 +fixed_int 256 +(int)0.00405163 +fixed_int 256 -(int)0.00385712 +fixed_int 256 *(int)0.00849409 +fixed_int 256 /(int)0.127666 +fixed_int 256 % 0.19685 +fixed_int 256 | 0.0108232 +fixed_int 256 & 0.0108415 +fixed_int 256 ^ 0.0108455 +fixed_int 256 << 0.00826823 +fixed_int 256 >> 0.00854822 +fixed_int 256 %(int)0.15306 +fixed_int 256 |(int)0.00275195 +fixed_int 256 &(int)0.00419648 +fixed_int 256 ^(int)0.0027653 +fixed_int 512 + 0.0128543 +fixed_int 512 - 0.0120433 +fixed_int 512 * 0.201059 +fixed_int 512 / 0.385977 +fixed_int 512 str 0.00286314 +fixed_int 512 +(int)0.00694047 +fixed_int 512 -(int)0.00681002 +fixed_int 512 *(int)0.015882 +fixed_int 512 /(int)0.244657 +fixed_int 512 % 0.385184 +fixed_int 512 | 0.0131341 +fixed_int 512 & 0.013122 +fixed_int 512 ^ 0.013116 +fixed_int 512 << 0.0150546 +fixed_int 512 >> 0.0134889 +fixed_int 512 %(int)0.303051 +fixed_int 512 |(int)0.00618124 +fixed_int 512 &(int)0.00836021 +fixed_int 512 ^(int)0.00608555 +fixed_int 1024 + 0.0330379 +fixed_int 1024 - 0.0311489 +fixed_int 1024 * 0.701951 +fixed_int 1024 / 0.708393 +fixed_int 1024 str 0.00872206 +fixed_int 1024 +(int)0.0116939 +fixed_int 1024 -(int)0.0116182 +fixed_int 1024 *(int)0.0346698 +fixed_int 1024 /(int)0.692818 +fixed_int 1024 % 0.711308 +fixed_int 1024 | 0.0176472 +fixed_int 1024 & 0.0176585 +fixed_int 1024 ^ 0.0177043 +fixed_int 1024 << 0.0242721 +fixed_int 1024 >> 0.0248274 +fixed_int 1024 %(int)0.584615 +fixed_int 1024 |(int)0.0107899 +fixed_int 1024 &(int)0.0166854 +fixed_int 1024 ^(int)0.0108555 +cpp_float 50 + 0.0142302 +cpp_float 50 - 0.0153931 +cpp_float 50 * 0.137722 +cpp_float 50 / 2.0214 +cpp_float 50 str 0.00924301 +cpp_float 50 +(int)0.0240351 +cpp_float 50 -(int)0.0252498 +cpp_float 50 *(int)0.0387713 +cpp_float 50 /(int)0.199003 +cpp_float 100 + 0.0178132 +cpp_float 100 - 0.0189367 +cpp_float 100 * 0.293407 +cpp_float 100 / 4.24891 +cpp_float 100 str 0.0160219 +cpp_float 100 +(int)0.0334828 +cpp_float 100 -(int)0.0326407 +cpp_float 100 *(int)0.063236 +cpp_float 100 /(int)0.341837 +cpp_float 500 + 0.044608 +cpp_float 500 - 0.0457737 +cpp_float 500 * 2.88591 +cpp_float 500 / 31.8072 +cpp_float 500 str 0.0639606 +cpp_float 500 +(int)0.0947227 +cpp_float 500 -(int)0.0966926 +cpp_float 500 *(int)0.224258 +cpp_float 500 /(int)1.39765 +mpfr_float 50 + 0.0194724 +mpfr_float 50 - 0.0228715 +mpfr_float 50 * 0.0587051 +mpfr_float 50 / 0.319258 +mpfr_float 50 str 0.00735177 +mpfr_float 50 +(int)0.0285879 +mpfr_float 50 -(int)0.0468028 +mpfr_float 50 *(int)0.03626 +mpfr_float 50 /(int)0.0889091 +mpfr_float 100 + 0.0211419 +mpfr_float 100 - 0.0251794 +mpfr_float 100 * 0.0946069 +mpfr_float 100 / 0.464237 +mpfr_float 100 str 0.00743083 +mpfr_float 100 +(int)0.0302544 +mpfr_float 100 -(int)0.0478439 +mpfr_float 100 *(int)0.0407275 +mpfr_float 100 /(int)0.109517 +mpfr_float 500 + 0.0338 +mpfr_float 500 - 0.037242 +mpfr_float 500 * 0.852196 +mpfr_float 500 / 2.80673 +mpfr_float 500 str 0.0339866 +mpfr_float 500 +(int)0.0427411 +mpfr_float 500 -(int)0.060913 +mpfr_float 500 *(int)0.0814603 +mpfr_float 500 /(int)0.254409 +[section:float_performance Float Type Perfomance] +[table Operator * +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.72405 (0.137722s)][3.23542 (0.293407s)][3.38644 (2.88591s)]] +[[gmp_float][[*1] (0.0505578s)][[*1] (0.090686s)][1.11127 (0.947017s)]] +[[mpfr_float][1.16115 (0.0587051s)][1.04324 (0.0946069s)][[*1] (0.852196s)]] +] +[table Operator *(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.33595 (0.0387713s)][3.1527 (0.063236s)][5.40294 (0.224258s)]] +[[gmp_float][[*1] (0.0165976s)][[*1] (0.0200577s)][[*1] (0.0415067s)]] +[[mpfr_float][2.18465 (0.03626s)][2.03052 (0.0407275s)][1.96258 (0.0814603s)]] +] +[table Operator + +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][[*1] (0.0142302s)][[*1] (0.0178132s)][1.40612 (0.044608s)]] +[[gmp_float][1.26944 (0.0180644s)][1.09329 (0.019475s)][[*1] (0.0317241s)]] +[[mpfr_float][1.36838 (0.0194724s)][1.18686 (0.0211419s)][1.06543 (0.0338s)]] +] +[table Operator +(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.08629 (0.0240351s)][2.61878 (0.0334828s)][5.04813 (0.0947227s)]] +[[gmp_float][[*1] (0.0115205s)][[*1] (0.0127856s)][[*1] (0.0187639s)]] +[[mpfr_float][2.48148 (0.0285879s)][2.36628 (0.0302544s)][2.27784 (0.0427411s)]] +] +[table Operator - +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][[*1] (0.0153931s)][[*1] (0.0189367s)][1.36514 (0.0457737s)]] +[[gmp_float][1.26468 (0.0194673s)][1.15343 (0.0218422s)][[*1] (0.0335304s)]] +[[mpfr_float][1.48583 (0.0228715s)][1.32966 (0.0251794s)][1.11069 (0.037242s)]] +] +[table Operator -(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][1.28001 (0.0252498s)][1.5908 (0.0326407s)][3.63667 (0.0966926s)]] +[[gmp_float][[*1] (0.0197263s)][[*1] (0.0205184s)][[*1] (0.0265882s)]] +[[mpfr_float][2.37262 (0.0468028s)][2.33176 (0.0478439s)][2.29098 (0.060913s)]] +] +[table Operator / +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][7.26654 (2.0214s)][11.2389 (4.24891s)][20.0284 (31.8072s)]] +[[gmp_float][[*1] (0.278179s)][[*1] (0.378055s)][[*1] (1.5881s)]] +[[mpfr_float][1.14767 (0.319258s)][1.22796 (0.464237s)][1.76735 (2.80673s)]] +] +[table Operator /(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.62228 (0.199003s)][3.60376 (0.341837s)][6.01157 (1.39765s)]] +[[gmp_float][[*1] (0.0758893s)][[*1] (0.0948556s)][[*1] (0.232493s)]] +[[mpfr_float][1.17156 (0.0889091s)][1.15457 (0.109517s)][1.09427 (0.254409s)]] +] +[table Operator str +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_float][2.58205 (0.00924301s)][2.87378 (0.0160219s)][2.03831 (0.0639606s)]] +[[gmp_float][[*1] (0.00357972s)][[*1] (0.00557522s)][[*1] (0.0313793s)]] +[[mpfr_float][2.05373 (0.00735177s)][1.33283 (0.00743083s)][1.08309 (0.0339866s)]] +] +[endsect] +[section:integer_performance Integer Type Perfomance] +[table Operator % +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.054413s)][[*1] (0.106105s)][[*1] (0.19685s)][1.67316 (0.385184s)][2.3543 (0.711308s)]] +[[gmp_int][3.04743 (0.16582s)][1.55485 (0.164977s)][1.00128 (0.197103s)][[*1] (0.230214s)][[*1] (0.302132s)]] +] +[table Operator %(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0243407s)][1.99962 (0.0811764s)][2.96437 (0.15306s)][4.64875 (0.303051s)][7.31311 (0.584615s)]] +[[gmp_int][1.42913 (0.034786s)][[*1] (0.0405959s)][[*1] (0.0516333s)][[*1] (0.0651899s)][[*1] (0.0799406s)]] +] +[table Operator & +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00259593s)][[*1] (0.00361924s)][[*1] (0.0108415s)][[*1] (0.013122s)][[*1] (0.0176585s)]] +[[gmp_int][4.85187 (0.0125951s)][3.96768 (0.01436s)][1.43661 (0.015575s)][1.50716 (0.019777s)][1.50977 (0.0266602s)]] +] +[table Operator &(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00209559s)][[*1] (0.00245967s)][[*1] (0.00419648s)][[*1] (0.00836021s)][[*1] (0.0166854s)]] +[[gmp_int][21.0856 (0.0441868s)][18.4577 (0.0453998s)][11.1151 (0.0466442s)][5.96293 (0.0498514s)][3.23322 (0.0539474s)]] +] +[table Operator * +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00392745s)][[*1] (0.0104772s)][[*1] (0.0324122s)][1.95004 (0.201059s)][2.14731 (0.701951s)]] +[[gmp_int][2.96502 (0.011645s)][1.74194 (0.0182506s)][1.4714 (0.0476911s)][[*1] (0.103105s)][[*1] (0.326898s)]] +] +[table Operator *(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00294381s)][[*1] (0.00422148s)][[*1] (0.00849409s)][[*1] (0.015882s)][1.15522 (0.0346698s)]] +[[gmp_int][4.09319 (0.0120496s)][3.01026 (0.0127078s)][2.0089 (0.0170638s)][1.34479 (0.021358s)][[*1] (0.0300116s)]] +] +[table Operator + +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00207163s)][[*1] (0.00326026s)][[*1] (0.00834722s)][[*1] (0.0128543s)][[*1] (0.0330379s)]] +[[gmp_int][8.08642 (0.0167521s)][5.89259 (0.0192114s)][2.76118 (0.0230482s)][2.19911 (0.028268s)][1.23787 (0.0408966s)]] +] +[table Operator +(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00358307s)][[*1] (0.00359962s)][[*1] (0.00405163s)][[*1] (0.00694047s)][[*1] (0.0116939s)]] +[[gmp_int][2.01857 (0.00723269s)][2.42047 (0.00871277s)][3.5813 (0.0145101s)][2.45162 (0.0170154s)][1.69017 (0.0197647s)]] +] +[table Operator - +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00216403s)][[*1] (0.00372498s)][[*1] (0.00653903s)][[*1] (0.0120433s)][[*1] (0.0311489s)]] +[[gmp_int][8.72818 (0.0188881s)][5.89208 (0.0219479s)][4.43331 (0.0289896s)][2.92463 (0.0352221s)][1.48689 (0.0463151s)]] +] +[table Operator -(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00354668s)][[*1] (0.00360689s)][[*1] (0.00385712s)][[*1] (0.00681002s)][[*1] (0.0116182s)]] +[[gmp_int][2.09194 (0.00741945s)][3.61625 (0.0130434s)][3.8458 (0.0148337s)][2.63767 (0.0179625s)][1.72107 (0.0199956s)]] +] +[table Operator / +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0556903s)][[*1] (0.105756s)][[*1] (0.198305s)][1.37248 (0.385977s)][1.91862 (0.708393s)]] +[[gmp_int][3.04721 (0.1697s)][1.85862 (0.196561s)][1.21304 (0.240552s)][[*1] (0.281226s)][[*1] (0.36922s)]] +] +[table Operator /(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.0169012s)][1.11654 (0.0634475s)][1.86084 (0.127666s)][2.57379 (0.244657s)][4.79191 (0.692818s)]] +[[gmp_int][2.96468 (0.0501068s)][[*1] (0.0568248s)][[*1] (0.0686065s)][[*1] (0.0950571s)][[*1] (0.144581s)]] +] +[table Operator << +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00115455s)][[*1] (0.00632357s)][[*1] (0.00826823s)][[*1] (0.0150546s)][[*1] (0.0242721s)]] +[[gmp_int][8.39362 (0.00969083s)][2.07445 (0.0131179s)][1.80141 (0.0148945s)][1.21421 (0.0182795s)][1.02121 (0.0247868s)]] +] +[table Operator >> +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00147407s)][[*1] (0.00238745s)][[*1] (0.00854822s)][1.10734 (0.0134889s)][1.52739 (0.0248274s)]] +[[gmp_int][8.85991 (0.0130601s)][4.4845 (0.0107065s)][1.30011 (0.0111136s)][[*1] (0.0121814s)][[*1] (0.0162548s)]] +] +[table Operator ^ +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00256688s)][[*1] (0.00361813s)][[*1] (0.0108455s)][[*1] (0.013116s)][[*1] (0.0177043s)]] +[[gmp_int][5.05409 (0.0129732s)][3.88746 (0.0140653s)][1.53751 (0.0166751s)][1.90691 (0.025011s)][1.69135 (0.0299441s)]] +] +[table Operator ^(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00202777s)][[*1] (0.00237775s)][[*1] (0.0027653s)][[*1] (0.00608555s)][[*1] (0.0108555s)]] +[[gmp_int][21.821 (0.0442481s)][19.7034 (0.0468496s)][16.847 (0.0465869s)][8.16164 (0.049668s)][4.97188 (0.0539722s)]] +] +[table Operator str +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.000302762s)][[*1] (0.000500691s)][1.14936 (0.00111683s)][1.71055 (0.00286314s)][2.93313 (0.00872206s)]] +[[gmp_int][1.11188 (0.000336635s)][4.63553 (0.00232097s)][[*1] (0.000971703s)][[*1] (0.00167382s)][[*1] (0.00297363s)]] +] +[table Operator | +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00257616s)][[*1] (0.00363433s)][[*1] (0.0108232s)][[*1] (0.0131341s)][[*1] (0.0176472s)]] +[[gmp_int][4.49789 (0.0115873s)][3.7058 (0.0134681s)][1.47085 (0.0159192s)][1.58756 (0.0208511s)][1.61398 (0.0284821s)]] +] +[table Operator |(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[fixed_int][[*1] (0.00208078s)][[*1] (0.00190869s)][[*1] (0.00275195s)][[*1] (0.00618124s)][[*1] (0.0107899s)]] +[[gmp_int][20.4129 (0.0424747s)][23.0676 (0.0440289s)][17.2504 (0.0474723s)][7.98521 (0.0493584s)][4.87243 (0.0525727s)]] +] +[endsect] +[section:rational_performance Rational Type Perfomance] +[table Operator * +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.426868s)][[*1] (0.968054s)][[*1] (4.39195s)][[*1] (9.6344s)][[*1] (20.9879s)]] +] +[table Operator *(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.344178s)][[*1] (0.179899s)][[*1] (0.200539s)][[*1] (0.254142s)][[*1] (0.328602s)]] +] +[table Operator + +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.254473s)][[*1] (0.542374s)][[*1] (2.34795s)][[*1] (5.10523s)][[*1] (11.2331s)]] +] +[table Operator +(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.309729s)][[*1] (0.154116s)][[*1] (0.177483s)][[*1] (0.212807s)][[*1] (0.27756s)]] +] +[table Operator - +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.260331s)][[*1] (0.545764s)][[*1] (2.3565s)][[*1] (5.08802s)][[*1] (11.2446s)]] +] +[table Operator -(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.306598s)][[*1] (0.151187s)][[*1] (0.16783s)][[*1] (0.212048s)][[*1] (0.271845s)]] +] +[table Operator / +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (1.50105s)][[*1] (2.78757s)][[*1] (8.9203s)][[*1] (16.8502s)][[*1] (35.6472s)]] +] +[table Operator /(int) +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.32842s)][[*1] (0.184167s)][[*1] (0.206129s)][[*1] (0.262442s)][[*1] (0.350883s)]] +] +[table Operator str +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[mpq_rational][[*1] (0.000927423s)][[*1] (0.00111655s)][[*1] (0.00175742s)][[*1] (0.00246714s)][[*1] (0.00550783s)]] +] +[endsect] diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 750f668d..8dff3baa 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -14,8 +14,10 @@ # define TEST_MPFR_CLASS #endif -#ifdef TEST_MPFR +#ifdef TEST_MPFR_CLASS #include +#endif +#ifdef TEST_MPFR #include #endif #ifdef TEST_MP_REAL From 4472a37b0e3676e69c2826c1f7b571853bfab6bb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 23 Jan 2012 19:01:43 +0000 Subject: [PATCH 110/256] Update docs with latest performance results. [SVN r76653] --- doc/html/boost_multiprecision/intro.html | 45 +- .../perf/float_performance.html | 532 ++-- .../perf/integer_performance.html | 2299 ++++++++++++----- .../boost_multiprecision/perf/realworld.html | 17 +- .../boost_multiprecision/ref/mp_number.html | 4 +- doc/html/boost_multiprecision/tut/ints.html | 139 +- .../boost_multiprecision/tut/rational.html | 62 +- doc/html/boost_multiprecision/tut/reals.html | 127 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 377 ++- performance/performance_test-msvc-10.log | 894 ++++--- 11 files changed, 3023 insertions(+), 1475 deletions(-) diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index fadcea1c..59d5fc82 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -33,9 +33,9 @@

    - The library is often used by using one of the predefined typedefs: for example - if you wanted an arbitrary precision integer type using GMP as the underlying - implementation then you could use: + The library is often used via one of the predefined typedefs: for example if + you wanted an arbitrary precision integer type using GMP + as the underlying implementation then you could use:

    #include <boost/multiprecision/gmp.hpp>  // Defines the wrappers around the GMP library's types
     
    @@ -45,8 +45,9 @@
           Alternatively, you can compose your own multiprecision type, by combining
           mp_number with one of the predefined
           backend types. For example, suppose you wanted a 300 decimal digit floating-point
    -      type based on the MPFR library. In this case, there's no predefined typedef
    -      with that level of precision, so instead we compose our own:
    +      type based on the MPFR library. In
    +      this case, there's no predefined typedef with that level of precision, so instead
    +      we compose our own:
         

    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
     
    @@ -102,11 +103,13 @@
     

    If type T is an mp_number, then this expression is evaluated without creating a single temporary value. In contrast, - if we were using the C++ wrapper that ships with GMP - mpf_class + if we were using the C++ wrapper that ships with GMP + - mpfr_class - then this expression would result in no less than 11 temporaries (this is - true even though mpf_class + true even though mpfr_class does use expression templates to reduce the number of temporaries somewhat). - Had we used an even simpler wrapper around GMP or MPFR like mpclass + Had we used an even simpler wrapper around GMP + or MPFR like mpclass things would have been even worse and no less that 24 temporaries are created for this simple expression (note - we actually measure the number of memory allocations performed rather than the number of temporaries directly). @@ -192,10 +195,11 @@

    And finally... the performance improvements from an expression template library like this are often not as dramatic as the reduction in number of temporaries - would suggest. For example if we compare this library with mpfr_class - and mpreal, with all three - using the underlying MPFR library at 50 decimal digits precision then we see - the following typical results for polynomial execution: + would suggest. For example if we compare this library with mpfr_class + and mpreal, with + all three using the underlying MPFR + library at 50 decimal digits precision then we see the following typical results + for polynomial execution:

    Table 1.1. Evaluation of Order 6 Polynomial.

    @@ -243,7 +247,7 @@

    - mpfr_class + mpfr_class

    @@ -260,7 +264,7 @@

    - mpreal + mpreal

    @@ -301,8 +305,9 @@

    We'll conclude this section by providing some more performance comparisons - between these three libraries, again, all are using MPFR to carry out the underlying - arithmetic, and all are operating at the same precision (50 decimal digits): + between these three libraries, again, all are using MPFR + to carry out the underlying arithmetic, and all are operating at the same precision + (50 decimal digits):

    Table 1.2. Evaluation of Boost.Math's Bessel function test data

    @@ -350,7 +355,7 @@

    - mpfr_class + mpfr_class

    @@ -367,7 +372,7 @@

    - mpreal + mpreal

    @@ -430,7 +435,7 @@

    - mpfr_class + mpfr_class

    @@ -447,7 +452,7 @@

    - mpreal + mpreal

    diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html index c746b939..0483f675 100644 --- a/doc/html/boost_multiprecision/perf/float_performance.html +++ b/doc/html/boost_multiprecision/perf/float_performance.html @@ -29,112 +29,11 @@

    Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on - 32-bit Windows Vista machine. + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine.

    -

    Table 1.8. Operator *

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_float -

    -
    -

    - 1.0826 (0.287216s) -

    -
    -

    - 1.48086 (0.586363s) -

    -
    -

    - 1.57545 (5.05269s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.265302s) -

    -
    -

    - 1 (0.395962s) -

    -
    -

    - 1 (3.20714s) -

    -
    -

    - mpfr_float -

    -
    -

    - 1.24249 (0.329636s) -

    -
    -

    - 1.15432 (0.457067s) -

    -
    -

    - 1.16182 (3.72612s) -

    -
    -
    -
    -

    Table 1.9. Operator +

    +

    Table 1.8. Operator +

    @@ -173,17 +72,17 @@ @@ -195,17 +94,17 @@ @@ -217,17 +116,17 @@ @@ -235,7 +134,7 @@

    - 1 (0.0242151s) + 1 (0.02382s)

    - 1 (0.029252s) + 1 (0.0294619s)

    - 1 (0.0584099s) + 1 (0.058466s)

    - 4.55194 (0.110226s) + 4.55086 (0.108402s)

    - 3.67516 (0.107506s) + 3.86443 (0.113853s)

    - 2.42489 (0.141638s) + 2.6241 (0.15342s)

    - 2.45362 (0.0594147s) + 2.52036 (0.060035s)

    - 2.18552 (0.0639309s) + 2.1833 (0.0643242s)

    - 1.32099 (0.0771588s) + 1.37736 (0.0805287s)


    -

    Table 1.10. Operator +(int)

    +

    Table 1.9. Operator +(int)

    @@ -274,17 +173,17 @@ @@ -296,17 +195,17 @@ @@ -318,17 +217,17 @@ @@ -336,7 +235,7 @@

    - 1.51995 (0.0484155s) + 1.56759 (0.0527023s)

    - 1.78781 (0.0611055s) + 1.74629 (0.0618102s)

    - 1.8309 (0.104123s) + 1.68077 (0.105927s)

    - 1 (0.0318533s) + 1 (0.0336201s)

    - 1 (0.0341789s) + 1 (0.0353951s)

    - 1 (0.0568699s) + 1 (0.0630232s)

    - 3.39055 (0.108s) + 3.14875 (0.105861s)

    - 3.30142 (0.112839s) + 3.15499 (0.111671s)

    - 2.05293 (0.11675s) + 1.92831 (0.121528s)


    -

    Table 1.11. Operator -

    +

    Table 1.10. Operator -

    @@ -375,17 +274,17 @@ @@ -397,17 +296,17 @@ @@ -419,17 +318,17 @@ @@ -437,7 +336,7 @@

    - 1 (0.0261498s) + 1 (0.0265783s)

    - 1 (0.030946s) + 1 (0.031465s)

    - 1 (0.0606388s) + 1 (0.0619405s)

    - 4.48753 (0.117348s) + 4.66954 (0.124108s)

    - 3.75823 (0.116302s) + 3.72645 (0.117253s)

    - 2.4823 (0.150524s) + 2.67536 (0.165713s)

    - 2.96057 (0.0774183s) + 2.7909 (0.0741774s)

    - 2.61897 (0.0810465s) + 2.48557 (0.0782083s)

    - 1.56236 (0.0947396s) + 1.50944 (0.0934957s)


    -

    Table 1.12. Operator -(int)

    +

    Table 1.11. Operator -(int)

    @@ -476,17 +375,17 @@ @@ -498,17 +397,17 @@ @@ -520,17 +419,17 @@ @@ -538,7 +437,209 @@

    - 1 (0.0567601s) + 1 (0.0577674s)

    - 1 (0.0626685s) + 1 (0.0633795s)

    - 1 (0.111692s) + 1 (0.11146s)

    - 2.27932 (0.129374s) + 2.31811 (0.133911s)

    - 2.04821 (0.128358s) + 2.07251 (0.131355s)

    - 1.48297 (0.165635s) + 1.67161 (0.186319s)

    - 2.43199 (0.13804s) + 2.45081 (0.141577s)

    - 2.32131 (0.145473s) + 2.29174 (0.145249s)

    - 1.38152 (0.154304s) + 1.395 (0.155487s)


    -

    Table 1.13. Operator /

    +

    Table 1.12. Operator *

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1.07276 (0.287898s) +

    +
    +

    + 1.47724 (0.584569s) +

    +
    +

    + 1.55145 (5.09969s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.268372s) +

    +
    +

    + 1 (0.395718s) +

    +
    +

    + 1 (3.28705s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.27302 (0.341642s) +

    +
    +

    + 1.17649 (0.465557s) +

    +
    +

    + 1.14029 (3.7482s) +

    +
    +
    +
    +

    Table 1.13. Operator *(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 2.89945 (0.11959s) +

    +
    +

    + 4.56335 (0.197945s) +

    +
    +

    + 9.03602 (0.742044s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0412457s) +

    +
    +

    + 1 (0.0433772s) +

    +
    +

    + 1 (0.0821206s) +

    +
    +

    + mpfr_float +

    +
    +

    + 3.6951 (0.152407s) +

    +
    +

    + 3.71977 (0.161353s) +

    +
    +

    + 3.30958 (0.271785s) +

    +
    +
    +
    +

    Table 1.14. Operator /

    @@ -577,17 +678,17 @@ @@ -599,17 +700,17 @@ @@ -621,17 +722,17 @@ @@ -639,7 +740,108 @@

    - 3.2662 (3.98153s) + 3.24327 (4.00108s)

    - 5.07021 (8.11948s) + 5.00532 (8.12985s)

    - 6.78872 (53.6099s) + 6.79566 (54.2796s)

    - 1 (1.21901s) + 1 (1.23366s)

    - 1 (1.60141s) + 1 (1.62424s)

    - 1 (7.89691s) + 1 (7.9874s)

    - 1.33238 (1.62419s) + 1.32521 (1.63486s)

    - 1.39529 (2.23443s) + 1.38967 (2.25716s)

    - 1.70882 (13.4944s) + 1.72413 (13.7713s)


    -

    Table 1.14. Operator str

    +

    Table 1.15. Operator /(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_float +

    +
    +

    + 1.45093 (0.253675s) +

    +
    +

    + 1.83306 (0.419569s) +

    +
    +

    + 2.3644 (1.64187s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.174836s) +

    +
    +

    + 1 (0.22889s) +

    +
    +

    + 1 (0.694411s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.16731 (0.204088s) +

    +
    +

    + 1.13211 (0.259127s) +

    +
    +

    + 1.02031 (0.708513s) +

    +
    +
    +
    +

    Table 1.16. Operator str

    @@ -678,17 +880,17 @@ @@ -700,17 +902,17 @@ @@ -722,24 +924,26 @@

    - 1.46076 (0.0192656s) + 1.4585 (0.0188303s)

    - 1.59438 (0.0320398s) + 1.55515 (0.03172s)

    - 1 (0.134302s) + 1 (0.131962s)

    - 1 (0.0131888s) + 1 (0.0129107s)

    - 1 (0.0200954s) + 1 (0.0203967s)

    - 1.01007 (0.135655s) + 1.04632 (0.138075s)

    - 2.19174 (0.0289065s) + 2.19015 (0.0282764s)

    - 1.86101 (0.0373977s) + 1.84679 (0.0376683s)

    - 1.15842 (0.155578s) + 1.20295 (0.158743s)

    -
    +

    + ] +

    diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html index fdd2c062..4cca438f 100644 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -29,11 +29,16 @@

    Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on - 32-bit Windows Vista machine. + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +

    + Note that Linux x64 tests showed significantly worse performance for fixed_int division than on Win32 (or possibly + GMP behaves much better in that case). + Otherwise the results are much the same.

    -

    Table 1.15. Operator +

    +

    Table 1.17. Operator +

    @@ -84,27 +89,27 @@ @@ -116,27 +121,27 @@ @@ -148,27 +153,27 @@ @@ -176,7 +181,7 @@

    - 1 (0.0031173s) + 1 (0.0031291s)

    - 1 (0.00696555s) + 1 (0.00703043s)

    - 1 (0.0163707s) + 1 (0.0163669s)

    - 1 (0.0314806s) + 1 (0.0326567s)

    - 1 (0.0596158s) + 1 (0.0603087s)

    - 12.7096 (0.0396194s) + 12.4866 (0.0390717s)

    - 5.89178 (0.0410395s) + 6.01034 (0.0422553s)

    - 2.66402 (0.0436119s) + 2.65628 (0.0434751s)

    - 1.59356 (0.0501664s) + 1.54295 (0.0503875s)

    - 1.11155 (0.0662662s) + 1.16477 (0.0702458s)

    - 6.14357 (0.0191513s) + 6.03111 (0.018872s)

    - 3.16177 (0.0220235s) + 3.08173 (0.0216659s)

    - 1.85441 (0.030358s) + 1.84243 (0.0301548s)

    - 1.45895 (0.0459287s) + 1.30199 (0.0425188s)

    - 1.26576 (0.0754591s) + 1.18909 (0.0717123s)


    -

    Table 1.16. Operator +(int)

    +

    Table 1.18. Operator +(int)

    @@ -227,27 +232,27 @@ @@ -259,27 +264,27 @@ @@ -291,27 +296,27 @@ @@ -319,7 +324,7 @@

    - 1 (0.00329336s) + 1 (0.00335294s)

    - 1 (0.00370718s) + 1 (0.00376116s)

    - 1 (0.00995385s) + 1 (0.00985174s)

    - 1 (0.0117467s) + 1 (0.0119345s)

    - 1 (0.0233483s) + 1 (0.0170918s)

    - 9.56378 (0.031497s) + 9.47407 (0.031766s)

    - 8.0588 (0.0298754s) + 8.44794 (0.0317741s)

    - 4.15824 (0.0413905s) + 4.23857 (0.0417573s)

    - 5.47974 (0.0643691s) + 5.40856 (0.0645488s)

    - 4.46265 (0.104195s) + 6.31314 (0.107903s)

    - 76.2624 (0.25116s) + 67.0025 (0.224655s)

    - 71.3973 (0.264682s) + 60.4203 (0.22725s)

    - 28.0238 (0.278945s) + 25.1834 (0.2481s)

    - 25.9035 (0.304282s) + 23.2996 (0.27807s)

    - 13.1635 (0.307346s) + 17.1743 (0.293538s)


    -

    Table 1.17. Operator -

    +

    Table 1.19. Operator -

    @@ -370,27 +375,27 @@ @@ -402,27 +407,27 @@ @@ -434,27 +439,27 @@ @@ -462,7 +467,7 @@

    - 1 (0.00359417s) + 1 (0.00339191s)

    - 1 (0.00721041s) + 1 (0.0073172s)

    - 1 (0.0168213s) + 1 (0.0166428s)

    - 1 (0.0323563s) + 1 (0.0349375s)

    - 1 (0.061385s) + 1 (0.0600083s)

    - 10.6794 (0.0383836s) + 12.5182 (0.0424608s)

    - 5.65517 (0.0407761s) + 5.57936 (0.0408253s)

    - 2.63634 (0.0443466s) + 2.78496 (0.0463496s)

    - 1.59979 (0.0517632s) + 1.48373 (0.051838s)

    - 1.13379 (0.0695978s) + 1.29928 (0.0779673s)

    - 6.43615 (0.0231326s) + 7.00782 (0.0237699s)

    - 3.6161 (0.0260736s) + 3.69919 (0.0270677s)

    - 2.2585 (0.0379908s) + 2.29645 (0.0382195s)

    - 1.52006 (0.0491835s) + 1.39777 (0.0488346s)

    - 1.24231 (0.0762591s) + 1.28243 (0.0769566s)


    -

    Table 1.18. Operator -(int)

    +

    Table 1.20. Operator -(int)

    @@ -513,27 +518,27 @@ @@ -545,27 +550,27 @@ @@ -577,27 +582,27 @@ @@ -605,7 +610,7 @@

    - 1 (0.00353606s) + 1 (0.00250933s)

    - 1 (0.00577573s) + 1 (0.00358055s)

    - 1 (0.0155184s) + 1 (0.0103282s)

    - 1 (0.029385s) + 1 (0.0119127s)

    - 1 (0.0586271s) + 1 (0.0176089s)

    - 9.04434 (0.0319814s) + 12.093 (0.0303454s)

    - 5.12393 (0.0295945s) + 8.50898 (0.0304669s)

    - 2.50743 (0.0389112s) + 3.9284 (0.0405733s)

    - 2.01898 (0.0593277s) + 5.03037 (0.0599252s)

    - 1.68381 (0.098717s) + 5.96617 (0.105058s)

    - 60.2486 (0.213043s) + 80.8477 (0.202873s)

    - 38.3032 (0.221229s) + 57.8371 (0.207089s)

    - 15.8792 (0.24642s) + 21.3372 (0.220375s)

    - 8.71166 (0.255992s) + 23.526 (0.280258s)

    - 4.85236 (0.28448s) + 14.793 (0.260488s)


    -

    Table 1.19. Operator *

    +

    Table 1.21. Operator *

    @@ -656,27 +661,27 @@ @@ -688,27 +693,27 @@ @@ -720,27 +725,27 @@ @@ -748,7 +753,150 @@

    - 1 (0.0175309s) + 1 (0.0223481s)

    - 1 (0.0388232s) + 1 (0.0375288s)

    - 1 (0.123609s) + 1 (0.120353s)

    - 1 (0.427489s) + 1 (0.439147s)

    - 1 (1.46312s) + 1 (1.46969s)

    - 2.93263 (0.0514117s) + 2.50746 (0.0560369s)

    - 1.70358 (0.0661383s) + 1.76676 (0.0663044s)

    - 1.01811 (0.125848s) + 1.06052 (0.127636s)

    - 1.20692 (0.515943s) + 1.22558 (0.53821s)

    - 1.03248 (1.51064s) + 1.03538 (1.52168s)

    - 3.82476 (0.0670515s) + 3.00028 (0.0670506s)

    - 2.87425 (0.111587s) + 2.97696 (0.111722s)

    - 2.74339 (0.339108s) + 2.86257 (0.34452s)

    - 2.26768 (0.969408s) + 2.26661 (0.995374s)

    - 2.1233 (3.10664s) + 2.12926 (3.12935s)


    -

    Table 1.20. Operator /

    +

    Table 1.22. Operator *(int)

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00444316s) +

    +
    +

    + 1 (0.0135739s) +

    +
    +

    + 1 (0.0192615s) +

    +
    +

    + 1 (0.0328339s) +

    +
    +

    + 1.18198 (0.0567364s) +

    +
    +

    + gmp_int +

    +
    +

    + 4.57776 (0.0203397s) +

    +
    +

    + 1.79901 (0.0244196s) +

    +
    +

    + 1.32814 (0.025582s) +

    +
    +

    + 1.01453 (0.033311s) +

    +
    +

    + 1 (0.048001s) +

    +
    +

    + tommath_int +

    +
    +

    + 53.8709 (0.239357s) +

    +
    +

    + 18.3773 (0.249452s) +

    +
    +

    + 14.2088 (0.273682s) +

    +
    +

    + 14.0907 (0.462652s) +

    +
    +

    + 9.10761 (0.437175s) +

    +
    +
    +
    +

    Table 1.23. Operator /

    @@ -799,27 +947,27 @@ @@ -831,27 +979,27 @@ @@ -863,27 +1011,27 @@ @@ -891,7 +1039,150 @@

    - 1 (0.0973696s) + 1 (0.0991632s)

    - 1 (0.260936s) + 1 (0.172328s)

    - 1 (0.845628s) + 1 (0.309492s)

    - 2.4597 (2.51371s) + 1 (0.573815s)

    - 6.21836 (7.93136s) + 1 (1.06356s)

    - 7.66851 (0.74668s) + 7.81859 (0.775316s)

    - 3.17732 (0.829077s) + 5.11069 (0.880715s)

    - 1.05006 (0.887961s) + 2.93514 (0.908404s)

    - 1 (1.02196s) + 1.80497 (1.03572s)

    - 1 (1.27547s) + 1.21878 (1.29625s)

    - 18.3945 (1.79107s) + 18.0766 (1.79253s)

    - 8.11201 (2.11671s) + 12.3939 (2.13582s)

    - 3.49119 (2.95225s) + 9.80438 (3.03438s)

    - 4.55727 (4.65733s) + 8.74047 (5.01541s)

    - 9.06813 (11.5662s) + 10.8288 (11.517s)


    -

    Table 1.21. Operator %

    +

    Table 1.24. Operator /(int)

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1.04098 (0.0443082s) +

    +
    +

    + 1.61317 (0.110308s) +

    +
    +

    + 2.18324 (0.229148s) +

    +
    +

    + 2.36331 (0.442167s) +

    +
    +

    + 2.45159 (0.866172s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.042564s) +

    +
    +

    + 1 (0.06838s) +

    +
    +

    + 1 (0.104957s) +

    +
    +

    + 1 (0.187096s) +

    +
    +

    + 1 (0.35331s) +

    +
    +

    + tommath_int +

    +
    +

    + 32.4072 (1.37938s) +

    +
    +

    + 23.7471 (1.62383s) +

    +
    +

    + 22.1907 (2.32908s) +

    +
    +

    + 19.9054 (3.72421s) +

    +
    +

    + 24.2219 (8.55783s) +

    +
    +
    +
    +

    Table 1.25. Operator %

    @@ -942,27 +1233,27 @@ @@ -974,27 +1265,27 @@ @@ -1006,27 +1297,27 @@ @@ -1034,8 +1325,8 @@

    - 1 (0.098458s) + 1 (0.0946529s)

    - 1 (0.269155s) + 1 (0.170561s)

    - 1.10039 (0.849272s) + 1 (0.328458s)

    - 2.92096 (2.55909s) + 1 (0.575884s)

    - 7.47157 (7.99106s) + 1 (1.05006s)

    - 6.63934 (0.653697s) + 7.77525 (0.73595s)

    - 2.6753 (0.72007s) + 4.39387 (0.749422s)

    - 1 (0.771794s) + 2.35075 (0.772122s)

    - 1 (0.87611s) + 1.51922 (0.874894s)

    - 1 (1.06953s) + 1.02263 (1.07382s)

    - 18.5522 (1.82661s) + 27.1503 (2.56986s)

    - 8.00831 (2.15548s) + 12.8743 (2.19585s)

    - 3.89737 (3.00797s) + 9.43965 (3.10053s)

    - 5.38078 (4.71416s) + 8.24936 (4.75068s)

    - 10.7885 (11.5386s) + 10.9719 (11.5211s)


    -

    Table 1.22. Operator <<

    -
    +

    Table 1.26. Operator %(int)

    +
    @@ -1085,27 +1376,27 @@ @@ -1117,27 +1408,27 @@ @@ -1149,599 +1440,27 @@ - - -

    - 1 (0.0120907s) + 1.25034 (0.0425984s)

    - 1 (0.0129147s) + 1.91617 (0.106226s)

    - 1 (0.0214412s) + 2.02166 (0.195577s)

    - 1 (0.0249208s) + 2.14437 (0.387067s)

    - 1 (0.0341293s) + 2.23514 (0.776075s)

    - 1.93756 (0.0234265s) + 1 (0.0340695s)

    - 1.97785 (0.0255433s) + 1 (0.0554367s)

    - 1.43607 (0.0307911s) + 1 (0.0967406s)

    - 1.815 (0.0452311s) + 1 (0.180504s)

    - 2.00167 (0.0683156s) + 1 (0.347216s)

    - 3.42859 (0.0414542s) + 42.8781 (1.46083s)

    - 3.04951 (0.0393836s) + 29.879 (1.65639s)

    - 3.04202 (0.0652246s) + 23.4323 (2.26685s)

    - 3.81169 (0.0949903s) + 19.932 (3.5978s)

    - 4.93896 (0.168563s) -

    -
    -
    -
    -

    Table 1.23. Operator >>

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 64 Bits -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - fixed_int -

    -
    -

    - 1 (0.0064833s) -

    -
    -

    - 1 (0.00772857s) -

    -
    -

    - 1 (0.0186871s) -

    -
    -

    - 1 (0.0218303s) -

    -
    -

    - 1 (0.0326372s) -

    -
    -

    - gmp_int -

    -
    -

    - 4.212 (0.0273077s) -

    -
    -

    - 3.72696 (0.0288041s) -

    -
    -

    - 1.55046 (0.0289735s) -

    -
    -

    - 1.51403 (0.0330518s) -

    -
    -

    - 1.13695 (0.037107s) -

    -
    -

    - tommath_int -

    -
    -

    - 33.9418 (0.220055s) -

    -
    -

    - 29.104 (0.224932s) -

    -
    -

    - 13.8407 (0.258642s) -

    -
    -

    - 13.1488 (0.287043s) -

    -
    -

    - 15.1741 (0.495242s) -

    -
    -
    -
    -

    Table 1.24. Operator &

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 64 Bits -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - fixed_int -

    -
    -

    - 1 (0.0028732s) -

    -
    -

    - 1 (0.00552933s) -

    -
    -

    - 1 (0.0125148s) -

    -
    -

    - 1 (0.020299s) -

    -
    -

    - 1 (0.034856s) -

    -
    -

    - gmp_int -

    -
    -

    - 16.3018 (0.0468383s) -

    -
    -

    - 9.51109 (0.05259s) -

    -
    -

    - 5.20026 (0.0650802s) -

    -
    -

    - 4.46545 (0.0906443s) -

    -
    -

    - 3.99377 (0.139207s) -

    -
    -

    - tommath_int -

    -
    -

    - 42.221 (0.121309s) -

    -
    -

    - 22.2471 (0.123011s) -

    -
    -

    - 11.3587 (0.142151s) -

    -
    -

    - 7.3475 (0.149147s) -

    -
    -

    - 11.4043 (0.397507s) -

    -
    -
    -
    -

    Table 1.25. Operator ^

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 64 Bits -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - fixed_int -

    -
    -

    - 1 (0.00287983s) -

    -
    -

    - 1 (0.00543128s) -

    -
    -

    - 1 (0.0125726s) -

    -
    -

    - 1 (0.019987s) -

    -
    -

    - 1 (0.034697s) -

    -
    -

    - gmp_int -

    -
    -

    - 14.938 (0.0430189s) -

    -
    -

    - 9.00973 (0.0489344s) -

    -
    -

    - 4.83803 (0.0608267s) -

    -
    -

    - 4.33359 (0.0866154s) -

    -
    -

    - 3.89518 (0.135151s) -

    -
    -

    - tommath_int -

    -
    -

    - 41.6898 (0.12006s) -

    -
    -

    - 22.4393 (0.121874s) -

    -
    -

    - 10.7513 (0.135172s) -

    -
    -

    - 7.2632 (0.145169s) -

    -
    -

    - 11.5765 (0.401671s) -

    -
    -
    -
    -

    Table 1.26. Operator |

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1800,27 +1519,27 @@ @@ -1832,27 +1551,27 @@ @@ -1864,27 +1583,1171 @@ + + +
    -

    - Backend -

    -
    -

    - 64 Bits -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - fixed_int -

    -
    -

    - 1 (0.00314803s) -

    -
    -

    - 1 (0.00548233s) -

    -
    -

    - 1 (0.0125434s) -

    -
    -

    - 1 (0.0198161s) -

    -
    -

    - 1 (0.034957s) -

    -
    -

    - gmp_int -

    -
    -

    - 13.0622 (0.0411201s) -

    -
    -

    - 8.63936 (0.0473638s) -

    -
    -

    - 4.6932 (0.0588688s) -

    -
    -

    - 4.25792 (0.0843755s) -

    -
    -

    - 3.78236 (0.13222s) -

    -
    -

    - tommath_int -

    -
    -

    - 38.5896 (0.121481s) -

    -
    -

    - 22.3609 (0.12259s) -

    -
    -

    - 10.9015 (0.136742s) -

    -
    -

    - 7.68521 (0.152291s) -

    -
    -

    - 11.6322 (0.406628s) + 25.0046 (8.682s)

    - 1.03557 (0.00143356s) + 1 (0.000465841s)

    - 1.39844 (0.00290281s) + 1 (0.00102073s)

    - 3.14081 (0.0099558s) + 1 (0.00207212s)

    - 6.28067 (0.0372769s) + 1.02618 (0.0062017s)

    - 13.2101 (0.188878s) + 1.32649 (0.0190043s)

    - 1 (0.00138432s) + 2.83823 (0.00132216s)

    - 1 (0.00207575s) + 2.17537 (0.00222046s)

    - 1 (0.00316982s) + 1.46978 (0.00304557s)

    - 1 (0.00593518s) + 1 (0.00604351s)

    - 1 (0.014298s) + 1 (0.0143268s)

    - 5.31194 (0.00735345s) + 15.76 (0.00734164s)

    - 7.90724 (0.0164135s) + 15.9879 (0.0163193s)

    - 15.8581 (0.0502673s) + 21.7337 (0.0450349s)

    - 19.7526 (0.117235s) + 19.7183 (0.119168s)

    - 26.6031 (0.380373s) + 26.3445 (0.377431s) +

    +
    +
    +
    +

    Table 1.28. Operator <<

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.0119095s) +

    +
    +

    + 1 (0.0131746s) +

    +
    +

    + 1 (0.0213483s) +

    +
    +

    + 1 (0.0247552s) +

    +
    +

    + 1 (0.0339579s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.9355 (0.0230509s) +

    +
    +

    + 1.94257 (0.0255925s) +

    +
    +

    + 1.49684 (0.031955s) +

    +
    +

    + 1.79202 (0.0443618s) +

    +
    +

    + 2.0846 (0.0707887s) +

    +
    +

    + tommath_int +

    +
    +

    + 2.64273 (0.0314737s) +

    +
    +

    + 2.95612 (0.0389456s) +

    +
    +

    + 3.05842 (0.065292s) +

    +
    +

    + 3.79496 (0.0939451s) +

    +
    +

    + 4.82142 (0.163725s) +

    +
    +
    +
    +

    Table 1.29. Operator >>

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.006361s) +

    +
    +

    + 1 (0.00880189s) +

    +
    +

    + 1 (0.0180295s) +

    +
    +

    + 1 (0.0220786s) +

    +
    +

    + 1 (0.0325312s) +

    +
    +

    + gmp_int +

    +
    +

    + 4.26889 (0.0271544s) +

    +
    +

    + 3.14669 (0.0276968s) +

    +
    +

    + 1.74396 (0.0314426s) +

    +
    +

    + 1.45928 (0.0322188s) +

    +
    +

    + 1.24596 (0.0405327s) +

    +
    +

    + tommath_int +

    +
    +

    + 39.4379 (0.250865s) +

    +
    +

    + 28.6225 (0.251932s) +

    +
    +

    + 16.4543 (0.296661s) +

    +
    +

    + 14.2167 (0.313884s) +

    +
    +

    + 15.5842 (0.506974s) +

    +
    +
    +
    +

    Table 1.30. Operator &

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00298048s) +

    +
    +

    + 1 (0.00546222s) +

    +
    +

    + 1 (0.0127546s) +

    +
    +

    + 1 (0.01985s) +

    +
    +

    + 1 (0.0349286s) +

    +
    +

    + gmp_int +

    +
    +

    + 16.0105 (0.0477189s) +

    +
    +

    + 9.67027 (0.0528211s) +

    +
    +

    + 5.12678 (0.0653902s) +

    +
    +

    + 4.62316 (0.0917698s) +

    +
    +

    + 4.00837 (0.140007s) +

    +
    +

    + tommath_int +

    +
    +

    + 43.6665 (0.130147s) +

    +
    +

    + 23.8003 (0.130002s) +

    +
    +

    + 11.4242 (0.145711s) +

    +
    +

    + 7.83416 (0.155508s) +

    +
    +

    + 9.50103 (0.331858s) +

    +
    +
    +
    +

    Table 1.31. Operator &(int)

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00222291s) +

    +
    +

    + 1 (0.0035522s) +

    +
    +

    + 1 (0.0110247s) +

    +
    +

    + 1 (0.0154281s) +

    +
    +

    + 1 (0.0275044s) +

    +
    +

    + gmp_int +

    +
    +

    + 70.8538 (0.157502s) +

    +
    +

    + 42.1478 (0.149717s) +

    +
    +

    + 13.9023 (0.153268s) +

    +
    +

    + 10.3271 (0.159328s) +

    +
    +

    + 6.0529 (0.166481s) +

    +
    +

    + tommath_int +

    +
    +

    + 154.134 (0.342626s) +

    +
    +

    + 93.2035 (0.331077s) +

    +
    +

    + 31.9151 (0.351853s) +

    +
    +

    + 23.6515 (0.364899s) +

    +
    +

    + 22.0042 (0.605213s) +

    +
    +
    +
    +

    Table 1.32. Operator ^

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00307714s) +

    +
    +

    + 1 (0.00538197s) +

    +
    +

    + 1 (0.0127717s) +

    +
    +

    + 1 (0.0198304s) +

    +
    +

    + 1 (0.0345822s) +

    +
    +

    + gmp_int +

    +
    +

    + 13.9543 (0.0429392s) +

    +
    +

    + 9.92785 (0.0534314s) +

    +
    +

    + 4.80398 (0.0613552s) +

    +
    +

    + 4.35864 (0.0864335s) +

    +
    +

    + 3.887 (0.134421s) +

    +
    +

    + tommath_int +

    +
    +

    + 41.5958 (0.127996s) +

    +
    +

    + 24.2396 (0.130457s) +

    +
    +

    + 11.3666 (0.145171s) +

    +
    +

    + 8.01016 (0.158845s) +

    +
    +

    + 9.84853 (0.340584s) +

    +
    +
    +
    +

    Table 1.33. Operator ^(int)

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00236664s) +

    +
    +

    + 1 (0.0035339s) +

    +
    +

    + 1 (0.0100442s) +

    +
    +

    + 1 (0.0155814s) +

    +
    +

    + 1 (0.0293253s) +

    +
    +

    + gmp_int +

    +
    +

    + 61.4272 (0.145376s) +

    +
    +

    + 41.6319 (0.147123s) +

    +
    +

    + 14.9744 (0.150405s) +

    +
    +

    + 9.64857 (0.150338s) +

    +
    +

    + 5.46649 (0.160306s) +

    +
    +

    + tommath_int +

    +
    +

    + 145.509 (0.344367s) +

    +
    +

    + 93.9055 (0.331853s) +

    +
    +

    + 35.0456 (0.352003s) +

    +
    +

    + 22.7371 (0.354275s) +

    +
    +

    + 19.1373 (0.561207s) +

    +
    +
    +
    +

    Table 1.34. Operator |

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00295261s) +

    +
    +

    + 1 (0.00560832s) +

    +
    +

    + 1 (0.0127056s) +

    +
    +

    + 1 (0.0200759s) +

    +
    +

    + 1 (0.034651s) +

    +
    +

    + gmp_int +

    +
    +

    + 14.1091 (0.0416586s) +

    +
    +

    + 8.52475 (0.0478096s) +

    +
    +

    + 4.74593 (0.0602998s) +

    +
    +

    + 4.19694 (0.0842575s) +

    +
    +

    + 3.85525 (0.133588s) +

    +
    +

    + tommath_int +

    +
    +

    + 44.8889 (0.132539s) +

    +
    +

    + 25.2503 (0.141612s) +

    +
    +

    + 11.0488 (0.140382s) +

    +
    +

    + 7.39273 (0.148416s) +

    +
    +

    + 9.75809 (0.338127s) +

    +
    +
    +
    +

    Table 1.35. Operator |(int)

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html index 9762e244..b1186c41 100644 --- a/doc/html/boost_multiprecision/perf/realworld.html +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -22,13 +22,14 @@ cases for these functions. In each case the best performing library gets a relative score of 1, with the total execution time given in brackets. The first three libraries listed are the various floating point types provided - by this library, while for comparison, two popular C++ frontends to MPFR - (mpfr_class and mpreal) are also shown. + by this library, while for comparison, two popular C++ frontends to MPFR ( mpfr_class + and mpreal) are + also shown.

    Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on - 32-bit Windows Vista machine. + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine.

    Table 1.6. Bessel Function Performance

    @@ -110,7 +111,7 @@
    @@ -122,7 +123,7 @@ @@ -154,7 +155,7 @@ @@ -175,9 +176,9 @@

    The gmp_int backend is used via the typedef boost::multiprecision::mpz_int. It acts as a thin wrapper around - the GMP mpz_t to provide - an integer type that is a drop-in replacement for the native C++ integer - types, but with unlimited precision. + the GMP mpz_t + to provide an integer type that is a drop-in replacement for the native C++ + integer types, but with unlimited precision.

    As well as the usual conversions from arithmetic and string types, type @@ -186,8 +187,8 @@

    • - The GMP native types: mpf_t, - mpz_t, mpq_t. + The GMP native types: mpf_t, mpz_t, + mpq_t.
    • Instances of mp_number<T> that are wrappers around those types: @@ -199,18 +200,36 @@ via the data() member function of gmp_int.

      -
    +

    + Backend +

    +
    +

    + 64 Bits +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + fixed_int +

    +
    +

    + 1 (0.00244005s) +

    +
    +

    + 1 (0.0040142s) +

    +
    +

    + 1 (0.00983777s) +

    +
    +

    + 1 (0.0155223s) +

    +
    +

    + 1 (0.0293444s) +

    +
    +

    + gmp_int +

    +
    +

    + 64.6148 (0.157663s) +

    +
    +

    + 34.5827 (0.138822s) +

    +
    +

    + 14.2764 (0.140448s) +

    +
    +

    + 10.3248 (0.160264s) +

    +
    +

    + 5.33565 (0.156572s) +

    +
    +

    + tommath_int +

    +
    +

    + 137.825 (0.3363s) +

    +
    +

    + 81.1074 (0.325581s) +

    +
    +

    + 34.8737 (0.343079s) +

    +
    +

    + 22.3727 (0.347276s) +

    +
    +

    + 18.912 (0.554963s)

    - mpfr_class + mpfr_class

    @@ -127,7 +128,7 @@

    - mpreal + mpreal

    @@ -224,7 +225,7 @@

    - mpfr_class + mpfr_class

    @@ -241,7 +242,7 @@

    - mpreal + mpreal

    diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index 87f856a8..f039c147 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -468,8 +468,8 @@ versions are provided for Backend types that don't have native support for these functions. Please note however, that this default support requires the precision of the type to be a compile time constant - this means for - example that the GMP MPF Backend will not work with these functions when - that type is used at variable precision. + example that the GMP MPF Backend will + not work with these functions when that type is used at variable precision.

    Also note that with the exception of abs diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index 6439bd4b..c59d3f9a 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -80,7 +80,7 @@

    - GMP + GMP

    @@ -90,7 +90,8 @@

    - Dependency on GNU licenced GMP library. + Dependency on GNU licenced GMP + library.

    - Slower than GMP. + Slower than GMP.

    - Slower than GMP. + Slower than GMP.

    - - - - - -
    [Note]Note

    - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this type - when the argument is negative and either of the flags std::ios_base::oct - or std::ios_base::hex are set, will result in a std::runtime_error will be thrown. -

    +

    + Things you should know when using this type: +

    +
      +
    • + No changes are made to the GMP library's global settings - so you can + safely mix this type with existing code that uses GMP. +
    • +
    • + Default constructed gmp_int's + have the value zero (this is GMP's default behavior). +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero is handled by the GMP + library - it will trigger a division by zero signal. +
    • +
    • + Although this type is a wrapper around GMP + it will work equally well with MPIR. + Indeed use of MPIR is recomended + on Win32. +
    • +
    Example: @@ -255,34 +274,34 @@ to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision.

    -
    - - - - - -
    [Caution]Caution

    - Although mp_int is mostly - a drop in replacement for the builtin integer types, it should be noted - that it is a rather strange beast as it's a signed type that is not a 2's - complement type. As a result the bitwise operations | - & ^ - will throw a std::runtime_error exception if either of - the arguments is negative. Similarly the complement operator~ is deliberately not implemented for this - type. -

    -
    - - - - - -
    [Note]Note

    - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this type - when the argument is negative and either of the flags std::ios_base::oct - or std::ios_base::hex are set, will result in a std::runtime_error will be thrown. -

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed objects have the value zero (this is libtommath's + default behavior). +
    • +
    • + Although mp_int is mostly + a drop in replacement for the builtin integer types, it should be noted + that it is a rather strange beast as it's a signed type that is not a + 2's complement type. As a result the bitwise operations | & ^ will throw a std::runtime_error + exception if either of the arguments is negative. Similarly the complement + operator~ is deliberately + not implemented for this type. +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero will result in a hardware signal being raised by libtommath. +
    • +
    Example: @@ -351,6 +370,28 @@ designed to work just like a typical built in integer type, but with larger precision.

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed fixed_int's + have indeterminate value - just like normal built in integers. +
    • +
    • + Division by zero results in a std::runtime_error + being thrown. +
    • +
    • + Construction from a string that contains invalid non-numeric characters + results in a std::runtime_error being thrown. +
    • +
    • + Since the precision of fixed_int + is necessarily limited, care should be taken to avoid numeric overflow + when using this type unless you actually want modulo-arithmetic behavior. +
    • +
    Example: diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 184beae4..13d4cbb0 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -80,7 +80,7 @@

    - GMP + GMP

    @@ -90,7 +90,8 @@

    - Dependency on GNU licenced GMP library. + Dependency on GNU licenced GMP + library.

    @@ -122,7 +123,7 @@

    - Slower than GMP. + Slower than GMP.

    @@ -210,9 +211,10 @@

    The gmp_rational backend is used via the typedef boost::multiprecision::mpq_rational. - It acts as a thin wrapper around the GMP mpq_t - to provide a rational number type that is a drop-in replacement for the native - C++ number types, but with unlimited precision. + It acts as a thin wrapper around the GMP + mpq_t to provide a rational + number type that is a drop-in replacement for the native C++ number types, + but with unlimited precision.

    As well as the usual conversions from arithmetic and string types, instances @@ -221,8 +223,7 @@

    - +

    Last revised: January 23, 2012 at 18:58:32 GMT

    Last revised: February 15, 2012 at 18:08:37 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index c484f28b..3c18dd73 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -20,7 +20,7 @@ [import ../example/gmp_snips.cpp] [import ../example/mpfr_snips.cpp] -[import ../example/cpp_float_snips.cpp] +[import ../example/cpp_dec_float_snips.cpp] [import ../example/tommath_snips.cpp] [import ../example/fixed_int_snips.cpp] @@ -434,8 +434,8 @@ Things you should know when using this type: template class cpp_dec_float; - typedef mp_number > cpp_float_50; - typedef mp_number > cpp_float_100; + typedef mp_number > cpp_dec_float_50; + typedef mp_number > cpp_dec_float_100; }} // namespaces @@ -444,7 +444,7 @@ real-number type that is a drop-in replacement for the native C++ floating-point much greater precision. Type `cpp_dec_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. -The typedefs cpp_float_50 and cpp_float_100 provide arithmetic types at 50 and 100 decimal digits precision +The typedefs cpp_dec_float_50 and cpp_dec_float_100 provide arithmetic types at 50 and 100 decimal digits precision respectively. There is full standard library and `numeric_limits` support available for this type. @@ -460,7 +460,7 @@ Normally these should not be visible to the user. [h5 cpp_dec_float example:] -[cpp_float_eg] +[cpp_dec_float_eg] [endsect] diff --git a/example/cpp_float_snips.cpp b/example/cpp_dec_float_snips.cpp similarity index 82% rename from example/cpp_float_snips.cpp rename to example/cpp_dec_float_snips.cpp index c16b78c3..7794c5fe 100644 --- a/example/cpp_float_snips.cpp +++ b/example/cpp_dec_float_snips.cpp @@ -8,14 +8,14 @@ void t1() { - //[cpp_float_eg + //[cpp_dec_float_eg //=#include using namespace boost::multiprecision; // Operations at fixed precision and full numeric_limits support: - cpp_float_100 b = 2; - std::cout << std::numeric_limits::digits << std::endl; + cpp_dec_float_100 b = 2; + std::cout << std::numeric_limits::digits << std::endl; std::cout << log(b) << std::endl; // print log(2) //] } diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index b4c85dae..dfe947ae 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -36,29 +36,29 @@ public: static const boost::int32_t mp_radix = 10; - static const boost::int32_t cpp_float_digits = Digits10; + static const boost::int32_t cpp_dec_float_digits = Digits10; - static const boost::int32_t cpp_float_digits10_setting = Digits10; - static const boost::int32_t cpp_float_digits10_limit = boost::integer_traits::const_max; - static const boost::int32_t cpp_float_digits10 = ((cpp_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_float_digits10_setting > cpp_float_digits10_limit) ? cpp_float_digits10_limit : cpp_float_digits10_setting)); - static const boost::int32_t cpp_float_digits10_extra = static_cast(((static_cast(cpp_float_digits10) * 15LL) + 50LL) / 100LL); - static const boost::int32_t cpp_float_max_digits10 = static_cast(cpp_float_digits10 + ((cpp_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_float_digits10_extra))); - static const boost::int64_t cpp_float_max_exp10 = 2776234983093287512; - static const boost::int64_t cpp_float_min_exp10 = -2776234983093287512; - static const boost::int64_t cpp_float_max_exp = (cpp_float_max_exp10 / 301LL) * 1000LL; - static const boost::int64_t cpp_float_min_exp = (cpp_float_min_exp10 / 301LL) * 1000LL; + static const boost::int32_t cpp_dec_float_digits10_setting = Digits10; + static const boost::int32_t cpp_dec_float_digits10_limit = boost::integer_traits::const_max; + static const boost::int32_t cpp_dec_float_digits10 = ((cpp_dec_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_dec_float_digits10_setting > cpp_dec_float_digits10_limit) ? cpp_dec_float_digits10_limit : cpp_dec_float_digits10_setting)); + static const boost::int32_t cpp_dec_float_digits10_extra = static_cast(((static_cast(cpp_dec_float_digits10) * 15LL) + 50LL) / 100LL); + static const boost::int32_t cpp_dec_float_max_digits10 = static_cast(cpp_dec_float_digits10 + ((cpp_dec_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_dec_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_dec_float_digits10_extra))); + static const boost::int64_t cpp_dec_float_max_exp10 = 2776234983093287512; + static const boost::int64_t cpp_dec_float_min_exp10 = -2776234983093287512; + static const boost::int64_t cpp_dec_float_max_exp = (cpp_dec_float_max_exp10 / 301LL) * 1000LL; + static const boost::int64_t cpp_dec_float_min_exp = (cpp_dec_float_min_exp10 / 301LL) * 1000LL; static const boost::int32_t mp_elem_digits10 = static_cast(8); - BOOST_STATIC_ASSERT(0 == cpp_float_max_exp10 % mp_elem_digits10); - BOOST_STATIC_ASSERT(cpp_float_max_exp10 == -cpp_float_min_exp10); + BOOST_STATIC_ASSERT(0 == cpp_dec_float_max_exp10 % mp_elem_digits10); + BOOST_STATIC_ASSERT(cpp_dec_float_max_exp10 == -cpp_dec_float_min_exp10); private: - static const boost::int32_t cpp_float_digits10_num_base = static_cast((cpp_float_max_digits10 / mp_elem_digits10) + (((cpp_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); - static const boost::int32_t mp_elem_number = static_cast(cpp_float_digits10_num_base + 2); + static const boost::int32_t cpp_dec_float_digits10_num_base = static_cast((cpp_dec_float_max_digits10 / mp_elem_digits10) + (((cpp_dec_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); + static const boost::int32_t mp_elem_number = static_cast(cpp_dec_float_digits10_num_base + 2); static const boost::int32_t mp_elem_mask = static_cast(100000000); public: - static const boost::int32_t cpp_float_total_digits10 = mp_elem_number * mp_elem_digits10; + static const boost::int32_t cpp_dec_float_total_digits10 = mp_elem_number * mp_elem_digits10; private: @@ -214,8 +214,8 @@ public: { init.do_nothing(); static bool init = false; - static const std::string str_max = std::string("9." + std::string(static_cast(cpp_float_max_digits10), static_cast('9'))) - + std::string("e+" + boost::lexical_cast(cpp_float_max_exp10)); + static const std::string str_max = std::string("9." + std::string(static_cast(cpp_dec_float_max_digits10), static_cast('9'))) + + std::string("e+" + boost::lexical_cast(cpp_dec_float_max_exp10)); static cpp_dec_float val_max; if(!init) { @@ -233,7 +233,7 @@ public: if(!init) { init = true; - val_min = std::string("1.0e" + boost::lexical_cast(cpp_float_min_exp10)).c_str(); + val_min = std::string("1.0e" + boost::lexical_cast(cpp_dec_float_min_exp10)).c_str(); } return val_min; } @@ -433,7 +433,7 @@ public: cpp_dec_float extract_integer_part (void) const; void precision(const boost::int32_t prec_digits) { - if(prec_digits >= cpp_float_digits10) + if(prec_digits >= cpp_dec_float_digits10) { prec_elem = mp_elem_number; } @@ -524,29 +524,29 @@ typename cpp_dec_float::initializer cpp_dec_float::init; template const boost::int32_t cpp_dec_float::mp_radix; template -const boost::int32_t cpp_dec_float::cpp_float_digits; +const boost::int32_t cpp_dec_float::cpp_dec_float_digits; template -const boost::int32_t cpp_dec_float::cpp_float_digits10_setting; +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_setting; template -const boost::int32_t cpp_dec_float::cpp_float_digits10_limit; +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit; template -const boost::int32_t cpp_dec_float::cpp_float_digits10; +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10; template -const boost::int32_t cpp_dec_float::cpp_float_digits10_extra; +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_extra; template -const boost::int32_t cpp_dec_float::cpp_float_max_digits10; +const boost::int32_t cpp_dec_float::cpp_dec_float_max_digits10; template -const boost::int64_t cpp_dec_float::cpp_float_max_exp; +const boost::int64_t cpp_dec_float::cpp_dec_float_max_exp; template -const boost::int64_t cpp_dec_float::cpp_float_min_exp; +const boost::int64_t cpp_dec_float::cpp_dec_float_min_exp; template -const boost::int64_t cpp_dec_float::cpp_float_max_exp10; +const boost::int64_t cpp_dec_float::cpp_dec_float_max_exp10; template -const boost::int64_t cpp_dec_float::cpp_float_min_exp10; +const boost::int64_t cpp_dec_float::cpp_dec_float_min_exp10; template const boost::int32_t cpp_dec_float::mp_elem_digits10; template -const boost::int32_t cpp_dec_float::cpp_float_digits10_num_base; +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_num_base; template const boost::int32_t cpp_dec_float::mp_elem_number; template @@ -744,8 +744,8 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float return *this = zero(); } - bool overflow = exp >= cpp_float_max_exp10; - if(exp == cpp_float_max_exp10) + bool overflow = exp >= cpp_dec_float_max_exp10; + if(exp == cpp_dec_float_max_exp10) { // Check to see if we really truely have an overflow or not... if(isneg()) @@ -831,7 +831,7 @@ cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float const boost::int64_t v_exp = ((!v_exp_is_neg) ? v.exp : static_cast(-v.exp)); // Check the range of the upcoming multiplication. - const bool b_result_is_out_of_range = (v_exp >= static_cast(cpp_float_max_exp10 - u_exp)); + const bool b_result_is_out_of_range = (v_exp >= static_cast(cpp_dec_float_max_exp10 - u_exp)); if(b_result_is_out_of_range) { @@ -975,8 +975,8 @@ cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const u data.front() = static_cast(carry); } - bool overflow = exp >= cpp_float_max_exp10; - if(exp == cpp_float_max_exp10) + bool overflow = exp >= cpp_dec_float_max_exp10; + if(exp == cpp_dec_float_max_exp10) { // Check to see if we really truely have an overflow or not... if(isneg()) @@ -1147,7 +1147,7 @@ cpp_dec_float& cpp_dec_float::calculate_inv() static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; - for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= static_cast(2)) + for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_dec_float_max_digits10; digits *= static_cast(2)) { // Adjust precision of the terms. precision(static_cast(digits * static_cast(2))); @@ -1222,7 +1222,7 @@ cpp_dec_float& cpp_dec_float::calculate_sqrt(void) static const boost::uint32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; - for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_float_max_digits10; digits *= 2u) + for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_dec_float_max_digits10; digits *= 2u) { // Adjust precision of the terms. precision(digits * 2); @@ -1668,7 +1668,7 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: boost::intmax_t org_digits(number_of_digits); boost::int64_t my_exp = order(); if(number_of_digits == 0) - number_of_digits = cpp_float_max_digits10; + number_of_digits = cpp_dec_float_max_digits10; if(f & std::ios_base::fixed) { number_of_digits += my_exp + 1; @@ -2025,7 +2025,7 @@ bool cpp_dec_float::rd_string(const char* const s) } // Check for overflow... - if(exp > cpp_float_max_exp10) + if(exp > cpp_dec_float_max_exp10) { const bool b_result_is_neg = neg; @@ -2035,9 +2035,9 @@ bool cpp_dec_float::rd_string(const char* const s) } // ...and check for underflow. - if(exp <= cpp_float_min_exp10) + if(exp <= cpp_dec_float_min_exp10) { - if(exp == cpp_float_min_exp10) + if(exp == cpp_dec_float_min_exp10) { // Check for identity with the minimum value. cpp_dec_float test = *this; @@ -2810,8 +2810,8 @@ inline int get_sign(const cpp_dec_float& val) } -typedef mp_number > cpp_float_50; -typedef mp_number > cpp_float_100; +typedef mp_number > cpp_dec_float_50; +typedef mp_number > cpp_dec_float_100; }} @@ -2829,12 +2829,12 @@ namespace std static const bool is_modulo = false; static const bool is_iec559 = false; static const int digits = Digits10; - static const int digits10 = boost::multiprecision::cpp_dec_float::cpp_float_digits10; - static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_float_max_digits10; - static const boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_float_min_exp; // Type differs from int. - static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_float_min_exp10; // Type differs from int. - static const boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_float_max_exp; // Type differs from int. - static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_dec_float::cpp_float_max_exp10; // Type differs from int. + static const int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; + static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_digits10; + static const boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. + static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. + static const boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. + static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp10; // Type differs from int. static const int radix = boost::multiprecision::cpp_dec_float::mp_radix; static const std::float_round_style round_style = std::round_to_nearest; static const bool has_infinity = true; diff --git a/performance/linpack-benchmark.cpp b/performance/linpack-benchmark.cpp index fea8a598..8db9b096 100644 --- a/performance/linpack-benchmark.cpp +++ b/performance/linpack-benchmark.cpp @@ -27,7 +27,7 @@ typedef mpf_class real_type; typedef mpfr_class real_type; #elif defined(TEST_CPP_DEC_FLOAT) #include -typedef boost::multiprecision::cpp_float_50 real_type; +typedef boost::multiprecision::cpp_dec_float_50 real_type; #elif defined(TEST_MPFR_50) #include typedef boost::multiprecision::mpfr_float_50 real_type; @@ -912,7 +912,7 @@ real_type epslon_(real_type *x) #if defined(TEST_MPF_100) || defined(TEST_MPFR_100) || defined(TEST_GMPXX) || defined(TEST_MPFRXX) return std::ldexp(1.0, 1 - ((100 + 1) * 1000L) / 301L); #elif defined(TEST_CPP_DEC_FLOAT_BN) - return std::pow(10.0, 1-std::numeric_limits::digits10); + return std::pow(10.0, 1-std::numeric_limits::digits10); #else return CAST_TO_RT(std::numeric_limits::epsilon()); #endif @@ -1234,7 +1234,7 @@ mp_number >: times for array with leading dimension of1001 279.96 0.84 280.8 2.3813 0.83988 5014.3 -boost::multiprecision::ef::cpp_float_50: +boost::multiprecision::ef::cpp_dec_float_50: ~~~~~~~~~~~~~~~~~~~~~~~~~ norm. resid resid machep x(1) x(n) diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 734fb8bd..c98059f9 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -609,8 +609,8 @@ int main() test > >("fixed_int", 1024); #endif #ifdef TEST_CPP_DEC_FLOAT - test("cpp_dec_float", 50); - test("cpp_dec_float", 100); + test("cpp_dec_float", 50); + test("cpp_dec_float", 100); test > >("cpp_dec_float", 500); #endif #ifdef TEST_MPFR diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index cd2ea692..195b991c 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -233,10 +233,10 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT c.reset(); - test_bessel(); + test_bessel(); time = c.elapsed(); - std::cout << "Time for cpp_float_50 = " << time << std::endl; - std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; + std::cout << "Time for cpp_dec_float_50 = " << time << std::endl; + std::cout << "Total allocations for cpp_dec_float_50 = " << allocation_count << std::endl; allocation_count = 0; #endif #ifdef TEST_MPFR_CLASS @@ -282,10 +282,10 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT c.reset(); - test_bessel(); + test_bessel(); time = c.elapsed(); - std::cout << "Time for cpp_float_100 = " << time << std::endl; - std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; + std::cout << "Time for cpp_dec_float_100 = " << time << std::endl; + std::cout << "Total allocations for cpp_dec_float_100 = " << allocation_count << std::endl; allocation_count = 0; #endif #ifdef TEST_MPFR_CLASS @@ -334,10 +334,10 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT c.reset(); - test_polynomial(); + test_polynomial(); time = c.elapsed(); - std::cout << "Time for cpp_float_50 = " << time << std::endl; - std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; + std::cout << "Time for cpp_dec_float_50 = " << time << std::endl; + std::cout << "Total allocations for cpp_dec_float_50 = " << allocation_count << std::endl; allocation_count = 0; #endif #ifdef TEST_MPFR_CLASS @@ -383,10 +383,10 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT c.reset(); - test_polynomial(); + test_polynomial(); time = c.elapsed(); - std::cout << "Time for cpp_float_100 = " << time << std::endl; - std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; + std::cout << "Time for cpp_dec_float_100 = " << time << std::endl; + std::cout << "Total allocations for cpp_dec_float_100 = " << allocation_count << std::endl; allocation_count = 0; #endif #ifdef TEST_MPFR_CLASS @@ -434,10 +434,10 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT c.reset(); - test_nct(); + test_nct(); time = c.elapsed(); - std::cout << "Time for cpp_float_50 = " << time << std::endl; - std::cout << "Total allocations for cpp_float_50 = " << allocation_count << std::endl; + std::cout << "Time for cpp_dec_float_50 = " << time << std::endl; + std::cout << "Total allocations for cpp_dec_float_50 = " << allocation_count << std::endl; allocation_count = 0; #endif #ifdef TEST_MPFR_CLASS @@ -483,10 +483,10 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT c.reset(); - test_nct(); + test_nct(); time = c.elapsed(); - std::cout << "Time for cpp_float_100 = " << time << std::endl; - std::cout << "Total allocations for cpp_float_100 = " << allocation_count << std::endl; + std::cout << "Time for cpp_dec_float_100 = " << time << std::endl; + std::cout << "Total allocations for cpp_dec_float_100 = " << allocation_count << std::endl; allocation_count = 0; #endif #ifdef TEST_MPFR_CLASS diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2026ad79..9b7d1c23 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -54,7 +54,7 @@ run test_arithmetic.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_arithmetic_cpp_float ; + : test_arithmetic_cpp_dec_float ; run test_arithmetic.cpp gmp : # command line @@ -203,7 +203,7 @@ run test_numeric_limits.cpp : # requirements TEST_CPP_DEC_FLOAT [ check-target-builds ../config//has_mpfr : : no ] - : test_numeric_limits_cpp_float ; + : test_numeric_limits_cpp_dec_float ; run test_numeric_limits.cpp $(TOMMATH) : # command line @@ -314,49 +314,49 @@ run test_exp.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_exp_cpp_float ; + : test_exp_cpp_dec_float ; run test_log.cpp : # command line : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_log_cpp_float ; + : test_log_cpp_dec_float ; run test_pow.cpp : # command line : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_pow_cpp_float ; + : test_pow_cpp_dec_float ; run test_sinh.cpp : # command line : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_sinh_cpp_float ; + : test_sinh_cpp_dec_float ; run test_cosh.cpp : # command line : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_cosh_cpp_float ; + : test_cosh_cpp_dec_float ; run test_tanh.cpp : # command line : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_tanh_cpp_float ; + : test_tanh_cpp_dec_float ; run test_sin.cpp : # command line : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_sin_cpp_float ; + : test_sin_cpp_dec_float ; run test_sin.cpp gmp : # command line @@ -379,7 +379,7 @@ run test_cos.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_cos_cpp_float ; + : test_cos_cpp_dec_float ; run test_cos.cpp gmp : # command line @@ -402,7 +402,7 @@ run test_asin.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_asin_cpp_float ; + : test_asin_cpp_dec_float ; run test_asin.cpp gmp : # command line @@ -425,7 +425,7 @@ run test_acos.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_acos_cpp_float ; + : test_acos_cpp_dec_float ; run test_acos.cpp gmp : # command line @@ -456,7 +456,7 @@ run test_atan.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_atan_cpp_float ; + : test_atan_cpp_dec_float ; run test_atan.cpp mpfr : # command line @@ -507,7 +507,7 @@ run test_round.cpp : # requirements TEST_CPP_DEC_FLOAT [ check-target-builds ../config//has_mpfr : : no ] - : test_round_cpp_float ; + : test_round_cpp_dec_float ; run test_fpclassify.cpp : # command line @@ -537,7 +537,7 @@ run test_fpclassify.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_fpclassify_cpp_float ; + : test_fpclassify_cpp_dec_float ; run test_test.cpp ; @@ -547,7 +547,7 @@ run test_float_io.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - : test_float_io_cpp_float ; + : test_float_io_cpp_dec_float ; run test_float_io.cpp gmp : # command line @@ -631,7 +631,7 @@ run ../example/mpfr_snips.cpp mpfr : # requirements [ check-target-builds ../config//has_mpfr : : no ] ; -run ../example/cpp_float_snips.cpp ; +run ../example/cpp_dec_float_snips.cpp ; run ../example/tommath_snips.cpp $(TOMMATH) : # command line @@ -676,7 +676,7 @@ if $(enable-specfun) speed msvc:-bigobj release - : $(source:B)_cpp_float ; + : $(source:B)_cpp_dec_float ; } } @@ -735,7 +735,7 @@ if ! $(disable-concepts) : # input files : # requirements TEST_CPP_DEC_FLOAT - : mp_number_concept_check_cpp_float ; + : mp_number_concept_check_cpp_dec_float ; run mp_number_concept_check.cpp : # command line diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index c339969d..f2983d8e 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -58,7 +58,7 @@ void expected_results() ".*", // platform ".*gmp.*", // test type(s) "Beta Function: Medium.*", // test data group - "boost::math::beta", 2200, 1000); // test function + "boost::math::beta", 2300, 1000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 120c6285..15d56a27 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -4,7 +4,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // -// This tests two things: that cpp_float_50 meets our +// This tests two things: that cpp_dec_float_50 meets our // conceptual requirements, and that we can instantiate // all our distributions and special functions on this type. // @@ -82,7 +82,7 @@ void foo() instantiate(boost::multiprecision::mp_number >()); #endif #ifdef TEST_CPP_DEC_FLOAT - instantiate(boost::multiprecision::cpp_float_50()); + instantiate(boost::multiprecision::cpp_dec_float_50()); #endif } @@ -113,7 +113,7 @@ int main() BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_CPP_DEC_FLOAT - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif } diff --git a/test/test_acos.cpp b/test/test_acos.cpp index b9141907..de5957c1 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -100,8 +100,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 9d5fb9b7..14d3da67 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1003,7 +1003,7 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); + test(); #endif #ifdef TEST_MPFR test(); diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 0e27b21c..ac6b4541 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -96,8 +96,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 33eed7b7..ae0886d0 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -242,8 +242,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 5bdc516c..81138810 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -296,8 +296,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index 97c4b945..ef6b372c 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -138,8 +138,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index a39fa411..34a19a35 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -178,8 +178,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 936a9b21..caeb2c02 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -257,13 +257,13 @@ int main() test_round_trip(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); /* // cpp_dec_float has extra guard digits that messes this up: - test_round_trip(); - test_round_trip(); + test_round_trip(); + test_round_trip(); */ #endif #ifdef TEST_MPF_50 diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp index a1cdb99e..732a2069 100644 --- a/test/test_fpclassify.cpp +++ b/test/test_fpclassify.cpp @@ -310,8 +310,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif #ifdef TEST_BACKEND test >(); diff --git a/test/test_log.cpp b/test/test_log.cpp index c1f5c52c..a8a743d3 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -206,8 +206,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 32d126d2..6cc53374 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -195,8 +195,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif #ifdef TEST_MPFR test(); diff --git a/test/test_pow.cpp b/test/test_pow.cpp index a56483ba..3c909653 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -581,8 +581,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_round.cpp b/test/test_round.cpp index 593a3335..4efa024a 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -387,8 +387,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif #ifdef TEST_BACKEND test >(); diff --git a/test/test_sin.cpp b/test/test_sin.cpp index b17edda4..23470635 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -290,7 +290,7 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 4dd8b8ad..cfa84bdb 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -214,8 +214,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index a1fd03fa..ec801267 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -184,8 +184,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index b80ae9a9..71a05174 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -133,8 +133,8 @@ int main() test(); #endif #ifdef TEST_CPP_DEC_FLOAT - test(); - test(); + test(); + test(); #endif return boost::report_errors(); } diff --git a/test/test_test.cpp b/test/test_test.cpp index e62a9c57..68a277f4 100644 --- a/test/test_test.cpp +++ b/test/test_test.cpp @@ -17,7 +17,7 @@ void proc_that_throws() int main() { - boost::multiprecision::cpp_float_50 a1(1), a2(1), b(3), c(-2); + boost::multiprecision::cpp_dec_float_50 a1(1), a2(1), b(3), c(-2); BOOST_WARN(a1); BOOST_WARN(a1 == b); @@ -26,8 +26,8 @@ int main() BOOST_CHECK(boost::detail::test_errors() == 1); --boost::detail::test_errors(); - boost::multiprecision::cpp_float_50 a_tol = a1 + a1 * 100 * std::numeric_limits::epsilon(); - boost::multiprecision::cpp_float_50 tol = 100 * std::numeric_limits::epsilon(); + boost::multiprecision::cpp_dec_float_50 a_tol = a1 + a1 * 100 * std::numeric_limits::epsilon(); + boost::multiprecision::cpp_dec_float_50 tol = 100 * std::numeric_limits::epsilon(); BOOST_CHECK_CLOSE(a1, a_tol, tol * 102); // Passes BOOST_WARN_CLOSE(a1, a_tol, tol * 98); // fails From 1b73913249b34ad999bfa65c7af7a40073935422 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 21 Feb 2012 18:19:02 +0000 Subject: [PATCH 114/256] Fix some C++0x errors. [SVN r77088] --- include/boost/multiprecision/gmp.hpp | 54 ++++++++++++------------ include/boost/multiprecision/tommath.hpp | 18 ++++---- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 4311e5b0..b5e6c8d0 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1926,9 +1926,9 @@ class numeric_limits > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type lowest() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; BOOST_STATIC_CONSTEXPR int max_digits10 = 0; @@ -1936,8 +1936,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 0; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1947,10 +1947,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1969,15 +1969,15 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = INT_MAX; BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; @@ -1985,8 +1985,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1996,10 +1996,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -2018,15 +2018,15 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } // Digits are unbounded, use zero for now: BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; @@ -2035,8 +2035,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -2046,10 +2046,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 41eeaf76..1f697a5e 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -463,15 +463,15 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = INT_MAX; BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; @@ -479,8 +479,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -490,10 +490,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; From eb631b8291bd36dd50f8651c0a577e502874234a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 27 Feb 2012 17:10:46 +0000 Subject: [PATCH 115/256] Fix some multiple initializations of mpz_t. [SVN r77128] --- include/boost/multiprecision/gmp.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index b5e6c8d0..308607c7 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -896,8 +896,8 @@ struct gmp_int unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpz_t t; - mpz_init(m_data); - mpz_init(t); + mpz_set_ui(m_data, 0); + mpz_init_set_ui(t, 0); while(i) { mpz_set_ui(t, static_cast(i & mask)); @@ -955,7 +955,7 @@ struct gmp_int int e; long double f, term; - mpz_init_set_ui(m_data, 0u); + mpz_set_ui(m_data, 0u); f = frexp(a, &e); From fda499be4378add9aa4a763f7ac3c1be3df21742 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 29 Feb 2012 10:42:23 +0000 Subject: [PATCH 116/256] Fix memory leaks / bugs in mpq_t and tommath support. [SVN r77140] --- include/boost/multiprecision/gmp.hpp | 4 ++-- include/boost/multiprecision/tommath.hpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 308607c7..648d60c5 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1460,7 +1460,7 @@ struct gmp_rational unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpq_t t; - mpq_init(m_data); + mpq_set_ui(m_data, 0, 1); mpq_init(t); while(i) { @@ -1521,7 +1521,7 @@ struct gmp_rational int e; long double f, term; - mpq_init(m_data); + mpq_set_ui(m_data, 0, 1); mpq_set_ui(m_data, 0u, 1); gmp_rational t; diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 1f697a5e..683d5e5b 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -117,7 +117,7 @@ struct tommath_int int e; long double f, term; - detail::check_tommath_result(mp_init_set_int(&m_data, 0u)); + detail::check_tommath_result(mp_set_int(&m_data, 0u)); ::mp_int t; detail::check_tommath_result(mp_init(&t)); @@ -151,6 +151,7 @@ struct tommath_int tommath_int t2; detail::check_tommath_result(mp_div_2d(&m_data, -e, &m_data, &t2.data())); } + mp_clear(&t); return *this; } tommath_int& operator = (const char* s) From bea370732635d76c824c10b7ef664a233e82cd28 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 29 Feb 2012 13:05:51 +0000 Subject: [PATCH 117/256] Add initial version of an arbitrary precision integer type. Hook up some more fixed_int tests. [SVN r77141] --- include/boost/multiprecision/cpp_int.hpp | 1915 ++++++++++++++++++++ include/boost/multiprecision/fixed_int.hpp | 2 +- performance/performance_test.cpp | 13 +- test/Jamfile.v2 | 37 +- test/test_arithmetic.cpp | 18 +- test/test_cpp_int.cpp | 179 ++ test/test_numeric_limits.cpp | 21 +- 7 files changed, 2179 insertions(+), 6 deletions(-) create mode 100644 include/boost/multiprecision/cpp_int.hpp create mode 100644 test/test_cpp_int.cpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp new file mode 100644 index 00000000..6ffe9f8a --- /dev/null +++ b/include/boost/multiprecision/cpp_int.hpp @@ -0,0 +1,1915 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_CPP_INT_HPP +#define BOOST_MP_CPP_INT_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace multiprecision{ + + /* +typedef boost::uint32_t limb_type; +typedef boost::int32_t signed_limb_type; +typedef boost::uint64_t double_limb_type; +typedef boost::int64_t signed_double_limb_type; +static const limb_type max_block_10 = 1000000000; +static const limb_type digits_per_block_10 = 9; + +inline limb_type block_multiplier(int count) +{ + static const limb_type values[digits_per_block_10] + = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; + BOOST_ASSERT(count < digits_per_block_10); + return values[count]; +} +*/ +template +inline void minmax(const T& a, const T& b, T& aa, T& bb) +{ + if(a < b) + { + aa = a; + bb = b; + } + else + { + aa = b; + bb = a; + } +} + +template > +struct cpp_int_backend : private Allocator::template rebind::other +{ + typedef typename Allocator::template rebind::other allocator_type; + typedef typename allocator_type::pointer limb_pointer; + typedef typename allocator_type::const_pointer const_limb_pointer; + +private: + struct limb_data + { + unsigned capacity; + limb_pointer data; + }; + +public: + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); + BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = InternalLimbs ? InternalLimbs : sizeof(limb_data) / sizeof(limb_type)); + +private: + + union data_type + { + limb_data ld; + limb_type la[internal_limb_count]; + }; + + data_type m_data; + unsigned m_limbs; + bool m_sign, m_internal; + +public: + + // + // Helper functions for getting at our internal data, and manipulating storage: + // + allocator_type& allocator(){ return *this; } + const allocator_type& allocator()const{ return *this; } + unsigned size()const { return m_limbs; } + limb_pointer limbs() { return m_internal ? m_data.la : m_data.ld.data; } + const_limb_pointer limbs()const { return m_internal ? m_data.la : m_data.ld.data; } + unsigned capacity()const { return m_internal ? internal_limb_count : m_data.ld.capacity; } + bool sign()const { return m_sign; } + void sign(bool b) + { + m_sign = b; + // Check for zero value: + if(m_sign && (m_limbs == 1)) + { + if(limbs()[0] == 0) + m_sign = false; + } + } + void resize(unsigned new_size) + { + unsigned cap = capacity(); + if(new_size > cap) + { + cap = (std::max)(cap * 4, new_size); + limb_pointer pl = allocator().allocate(cap); + std::memcpy(pl, limbs(), size() * sizeof(limb_type)); + if(!m_internal) + allocator().deallocate(limbs(), capacity()); + else + m_internal = false; + m_limbs = new_size; + m_data.ld.capacity = cap; + m_data.ld.data = pl; + } + else + { + m_limbs = new_size; + } + } + + cpp_int_backend() : m_limbs(1), m_internal(true), m_sign(false) + { + *limbs() = 0; + } + cpp_int_backend(const cpp_int_backend& o) : m_limbs(0), m_internal(true) + { + resize(o.size()); + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + m_sign = o.m_sign; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + cpp_int_backend(cpp_int_backend&& o) : m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) + { + if(m_internal) + { + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + } + else + { + data.ld = o.data.ld; + o.m_limbs = 0; + o.m_internal = true; + } + } +#endif + ~cpp_int_backend() + { + if(!m_internal) + allocator().deallocate(limbs(), capacity()); + } + cpp_int_backend& operator = (const cpp_int_backend& o) + { + if(this != &o) + { + m_limbs = 0; + resize(o.size()); + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + m_sign = o.m_sign; + } + return *this; + } + cpp_int_backend& operator = (limb_type i) + { + m_limbs = 1; + *limbs() = i; + m_sign = false; + return *this; + } + cpp_int_backend& operator = (signed_limb_type i) + { + m_limbs = 1; + *limbs() = static_cast(std::abs(i)); + m_sign = i < 0; + return *this; + } + cpp_int_backend& operator = (double_limb_type i) + { + BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); + BOOST_STATIC_ASSERT(internal_limb_count >= 2); + limb_pointer p = limbs(); + *p = static_cast(i); + p[1] = static_cast(i >> limb_bits); + m_limbs = p[1] ? 2 : 1; + m_sign = false; + return *this; + } + cpp_int_backend& operator = (signed_double_limb_type i) + { + BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); + BOOST_STATIC_ASSERT(internal_limb_count >= 2); + if(i < 0) + { + m_sign = true; + i = -i; + } + else + m_sign = false; + limb_pointer p = limbs(); + *p = static_cast(i); + p[1] = static_cast(i >> limb_bits); + m_limbs = p[1] ? 2 : 1; + return *this; + } + + cpp_int_backend& operator = (long double a) + { + using default_ops::add; + using default_ops::subtract; + using std::frexp; + using std::ldexp; + using std::floor; + + if (a == 0) { + return *this = static_cast(0u); + } + + if (a == 1) { + return *this = static_cast(1u); + } + + BOOST_ASSERT(!(boost::math::isinf)(a)); + BOOST_ASSERT(!(boost::math::isnan)(a)); + + int e; + long double f, term; + *this = static_cast(0u); + + f = frexp(a, &e); + + static const limb_type shift = std::numeric_limits::digits; + + while(f) + { + // extract int sized bits from f: + f = ldexp(f, shift); + term = floor(f); + e -= shift; + left_shift(*this, shift); + if(term > 0) + add(*this, static_cast(term)); + else + subtract(*this, static_cast(-term)); + f -= term; + } + if(e > 0) + left_shift(*this, e); + else if(e < 0) + right_shift(*this, -e); + return *this; + } + cpp_int_backend& operator = (const char* s) + { + using default_ops::multiply; + using default_ops::add; + std::size_t n = s ? std::strlen(s) : 0; + *this = static_cast(0u); + unsigned radix = 10; + bool isneg = false; + if(n && (*s == '-')) + { + --n; + ++s; + isneg = true; + } + if(n && (*s == '0')) + { + if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) + { + radix = 16; + s +=2; + n -= 2; + } + else + { + radix = 8; + n -= 1; + } + } + if(n) + { + if(radix == 8 || radix == 16) + { + unsigned shift = radix == 8 ? 3 : 4; + unsigned block_count = limb_bits / shift; + unsigned block_shift = shift * block_count; + limb_type val, block; + while(*s) + { + block = 0; + for(unsigned i = 0; (i < block_count); ++i) + { + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else if(*s >= 'a' && *s <= 'f') + val = 10 + *s - 'a'; + else if(*s >= 'A' && *s <= 'F') + val = 10 + *s - 'A'; + else + val = max_limb_value; + if(val > radix) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); + } + block <<= shift; + block |= val; + if(!*++s) + { + // final shift is different: + block_shift = (i + 1) * shift; + break; + } + } + left_shift(*this, block_shift); + limbs()[0] |= block; + } + } + else + { + // Base 10, we extract blocks of size 10^9 at a time, that way + // the number of multiplications is kept to a minimum: + limb_type block_mult = max_block_10; + while(*s) + { + limb_type block = 0; + for(unsigned i = 0; i < digits_per_block_10; ++i) + { + limb_type val; + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected character encountered in input.")); + block *= 10; + block += val; + if(!*++s) + { + block_mult = block_multiplier(i); + break; + } + } + multiply(*this, block_mult); + add(*this, block); + } + } + } + if(isneg) + negate(); + return *this; + } + void swap(cpp_int_backend& o) + { + std::swap(m_data, o.m_data); + std::swap(m_sign, o.m_sign); + std::swap(m_internal, o.m_internal); + std::swap(m_limbs, o.m_limbs); + } + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const + { + int base = 10; + if((f & std::ios_base::oct) == std::ios_base::oct) + base = 8; + else if((f & std::ios_base::hex) == std::ios_base::hex) + base = 16; + std::string result; + + unsigned Bits = size() * limb_bits; + + if(base == 8 || base == 16) + { + limb_type shift = base == 8 ? 3 : 4; + limb_type mask = static_cast((1u << shift) - 1); + cpp_int_backend t(*this); + result.assign(Bits / shift + (Bits % shift ? 1 : 0), '0'); + int pos = result.size() - 1; + for(unsigned i = 0; i < Bits / shift; ++i) + { + char c = '0' + (t.limbs()[0] & mask); + if(c > '9') + c += 'A' - '9' - 1; + result[pos--] = c; + right_shift(t, shift); + } + if(Bits % shift) + { + mask = static_cast((1u << (Bits % shift)) - 1); + char c = '0' + (t.limbs()[0] & mask); + if(c > '9') + c += 'A' - '9'; + result[pos] = c; + } + // + // Get rid of leading zeros: + // + std::string::size_type n = result.find_first_not_of('0'); + if(!result.empty() && (n == std::string::npos)) + n = result.size() - 1; + result.erase(0, n); + if(f & std::ios_base::showbase) + { + const char* pp = base == 8 ? "0" : "0x"; + result.insert(0, pp); + } + } + else + { + result.assign(Bits / 3 + 1, '0'); + int pos = result.size() - 1; + cpp_int_backend t(*this); + cpp_int_backend r; + bool neg = false; + if(t.sign()) + { + t.negate(); + neg = true; + } + if(size() == 1) + { + result = boost::lexical_cast(t.limbs()[0]); + } + else + { + cpp_int_backend block10; + block10 = max_block_10; + while(get_sign(t) != 0) + { + cpp_int_backend t2; + divide_unsigned_helper(t2, t, block10, r); + t = t2; + limb_type v = r.limbs()[0]; + for(unsigned i = 0; i < digits_per_block_10; ++i) + { + char c = '0' + v % 10; + v /= 10; + result[pos] = c; + if(pos-- == 0) + break; + } + } + } + unsigned n = result.find_first_not_of('0'); + result.erase(0, n); + if(result.empty()) + result = "0"; + if(neg) + result.insert(0, 1, '-'); + else if(f & std::ios_base::showpos) + result.insert(0, 1, '+'); + } + return result; + } + void negate() + { + m_sign = !m_sign; + // Check for zero value: + if(m_sign && (m_limbs == 1)) + { + if(limbs()[0] == 0) + m_sign = false; + } + } + bool isneg()const + { + return m_sign; + } + int compare(const cpp_int_backend& o)const + { + if(m_sign != o.m_sign) + return m_sign ? -1 : 1; + int result = 0; + // Only do the compare if the same sign: + result = compare_unsigned(o); + + if(m_sign) + result = -result; + return result; + } + int compare_unsigned(const cpp_int_backend& o)const + { + if(m_limbs != o.m_limbs) + { + return m_limbs > o.m_limbs ? 1 : -1; + } + const_limb_pointer pa = limbs(); + const_limb_pointer pb = o.limbs(); + for(int i = m_limbs - 1; i >= 0; --i) + { + if(pa[i] != pb[i]) + return pa[i] > pb[i] ? 1 : -1; + } + return 0; + } + template + typename enable_if, int>::type compare(Arithmatic i)const + { + // braindead version: + cpp_int_backend t; + t = i; + return compare(t); + } +}; + +template +const unsigned cpp_int_backend::limb_bits; +template +const limb_type cpp_int_backend::max_limb_value; +template +const limb_type cpp_int_backend::sign_bit_mask; +template +const unsigned cpp_int_backend::internal_limb_count; + + +template +inline void add(cpp_int_backend& result, const cpp_int_backend& o) +{ + add(result, result, o); +} +template +inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + using std::swap; + + // Nothing fancy, just let uintmax_t take the strain: + double_limb_type carry = 0; + unsigned m, x; + minmax(a.size(), b.size(), m, x); + if(x == 1) + { + bool s = a.sign(); + result = static_cast(*a.limbs()) + static_cast(*b.limbs()); + result.sign(s); + return; + } + result.resize(x); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr_end = pr + m; + + if(a.size() < b.size()) + swap(pa, pb); + + // First where a and b overlap: + while(pr != pr_end) + { + carry += static_cast(*pa) + static_cast(*pb); + *pr = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + ++pr, ++pa, ++pb; + } + pr_end += x - m; + // Now where only a has digits: + while(pr != pr_end) + { + if(!carry) + { + if(pa != pr) + std::memcpy(pr, pa, (pr_end - pr) * sizeof(limb_type)); + break; + } + carry += static_cast(*pa); + *pr = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + ++pr, ++pa; + } + if(carry) + { + result.resize(x + 1); + // We overflowed, need to add one more limb: + result.limbs()[x] = static_cast(carry); + } + result.sign(a.sign()); +} +template +inline void add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + if(a.sign() != b.sign()) + { + subtract_unsigned(result, a, b); + return; + } + add_unsigned(result, a, b); +} + +template +inline void add_unsigned(cpp_int_backend& result, const limb_type& o) +{ + // Addition using modular arithmatic. + // Nothing fancy, just let uintmax_t take the strain: + double_limb_type carry = o; + typename cpp_int_backend::limb_pointer pr = result.limbs(); + for(unsigned i = 0; carry && (i < result.size()); ++i) + { + carry += static_cast(pr[i]); + pr[i] = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + } +} +template +inline void add(cpp_int_backend& result, const limb_type& o) +{ + if(result.sign()) + { + subtract_unsigned(result, o); + } + else + add_unsigned(result, o); +} +template +inline void add(cpp_int_backend& result, const signed_limb_type& o) +{ + if(o < 0) + subtract(result, static_cast(-o)); + else if(o > 0) + add(result, static_cast(o)); +} + +template +inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) +{ + // Subtract one limb. + // Nothing fancy, just let uintmax_t take the strain: + BOOST_STATIC_CONSTANT(double_limb_type, borrow = static_cast(cpp_int_backend::max_limb_value) + 1); + typename cpp_int_backend::limb_pointer p = result.limbs(); + if(*p > o) + { + *p -= o; + } + else if(result.size() == 1) + { + *p = o - *p; + result.negate(); + } + else + { + *p = static_cast((borrow + *p) - o); + ++p; + while(!*p) + { + *p = cpp_int_backend::max_limb_value; + ++p; + } + --*p; + if(!result.limbs()[result.size() - 1]) + result.resize(result.size() - 1); + } +} +template +inline void subtract(cpp_int_backend& result, const limb_type& o) +{ + if(result.sign()) + add_unsigned(result, o); + else + subtract_unsigned(result, o); +} +template +inline void subtract(cpp_int_backend& result, const signed_limb_type& o) +{ + if(o) + { + if(o < 0) + add(result, static_cast(-o)); + else + subtract(result, static_cast(o)); + } +} +template +inline void increment(cpp_int_backend& result) +{ + static const limb_type one = 1; + if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + ++result.limbs()[0]; + else if(result.sign() && result.limbs()[0]) + --result.limbs()[0]; + else + add(result, one); +} +template +inline void decrement(cpp_int_backend& result) +{ + static const limb_type one = 1; + if(!result.sign() && result.limbs()[0]) + --result.limbs()[0]; + else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + ++result.limbs()[0]; + else + subtract(result, one); +} +template +inline void subtract(cpp_int_backend& result, const cpp_int_backend& o) +{ + subtract(result, result, o); +} +template +inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + using std::swap; + + // Nothing fancy, just let uintmax_t take the strain: + double_limb_type borrow = 0; + unsigned m, x; + minmax(a.size(), b.size(), m, x); + // + // special cases for small limb counts: + // + if(x == 1) + { + bool s = a.sign(); + limb_type al = *a.limbs(); + limb_type bl = *b.limbs(); + if(bl > al) + { + std::swap(al, bl); + s = !s; + } + result = al - bl; + result.sign(s); + return; + }/* + else if(m == 1) + { + if(b.size() == 1) + { + result = a; + subtract_unsigned(result, *b.limbs()); + } + else + { + result = b; + subtract_unsigned(result, *a.limbs()); + result.negate(); + } + return; + }*/ + result.resize(x); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + bool swapped = false; + int c = a.compare_unsigned(b); + if(c < 0) + { + swap(pa, pb); + swapped = true; + } + else if(c == 0) + { + result = 0; + return; + } + + unsigned i = 0; + BOOST_STATIC_CONSTANT(double_limb_type, borrow_value = static_cast(cpp_int_backend::max_limb_value) + 1); + // First where a and b overlap: + while(i < m) + { + borrow += pb[i]; + borrow = (borrow_value + static_cast(pa[i])) - borrow; + pr[i] = static_cast(borrow); + borrow = borrow & borrow_value ? 0 : 1; + ++i; + } + // Now where only a has digits, only as long as we've borrowed: + while(borrow && (i < x)) + { + borrow = (borrow_value + static_cast(pa[i])) - borrow; + pr[i] = static_cast(borrow); + borrow = borrow & borrow_value ? 0 : 1; + ++i; + } + // Any remaining digits are the same as those in pa: + if((x != i) && (pa != pr)) + std::memcpy(pr + i, pa + i, (x - i) * sizeof(limb_type)); + BOOST_ASSERT(0 == borrow); + + // + // We may have lost digits, if so update limb usage count: + // + i = result.size() - 1; + while(!pr[i] && i) + { + --i; + } + result.resize(i + 1); + result.sign(a.sign()); + if(swapped) + result.negate(); +} +template +inline void subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + if(a.sign() != b.sign()) + { + add_unsigned(result, a, b); + return; + } + subtract_unsigned(result, a, b); +} +template +inline void multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + // Very simple long multiplication, only usable for small numbers of limb_type's + // but that's the typical use case for this type anyway: + // + // Special cases first: + // + unsigned as = a.size(); + unsigned bs = b.size(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + if(as == 1) + { + bool s = b.sign() != a.sign(); + if(bs == 1) + { + result = static_cast(*pa) * static_cast(*pb); + } + else + { + limb_type l = *pa; + result = b; + multiply(result, l); + } + result.sign(s); + return; + } + if(bs == 1) + { + limb_type l = *pb; + bool s = b.sign() != a.sign(); + result = a; + multiply(result, l); + result.sign(s); + return; + } + + if(&result == &a) + { + cpp_int_backend t(a); + multiply(result, t, b); + return; + } + if(&result == &b) + { + cpp_int_backend t(b); + multiply(result, a, t); + return; + } + + result.resize(as + bs); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + + double_limb_type carry = 0; + std::memset(pr, 0, (as + bs) * sizeof(limb_type)); + for(unsigned i = 0; i < as; ++i) + { + for(unsigned j = 0; j < bs; ++j) + { + carry += static_cast(pa[i]) * static_cast(pb[j]); + carry += pr[i + j]; + pr[i + j] = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + } + pr[i + bs] = static_cast(carry); + carry = 0; + } + // + // We may not have filled all the digits, if so update limb usage count: + // + unsigned i = result.size() - 1; + while(!pr[i] && i) + { + --i; + } + result.resize(i + 1); + // + // Set the sign of the result: + // + result.sign(a.sign() != b.sign()); +} +template +inline void multiply(cpp_int_backend& result, const cpp_int_backend& a) +{ + multiply(result, result, a); +} +template +inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) +{ + if(!val) + { + result = 0; + return; + } + double_limb_type carry = 0; + typename cpp_int_backend::limb_pointer p = result.limbs(); + typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); + typename cpp_int_backend::limb_pointer pa = a.limbs(); + while(p != pe) + { + carry += static_cast(*pa * static_cast(val)); + *p = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + ++p, ++pa; + } + if(carry) + { + result.resize(result.size() + 1); + result.limbs()[result.size() - 1] = static_cast(carry); + } +} +template +inline void multiply(cpp_int_backend& result, const limb_type& val) +{ + multiply(result, result, val); +} +template +inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) +{ + if(val > 0) + multiply(result, a, static_cast(val)); + else + { + multiply(result, a, static_cast(-val)); + result.negate(); + } +} +template +inline void multiply(cpp_int_backend& result, const signed_limb_type& val) +{ + multiply(result, result, val); +} +template +void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) +{ + if((&result == &x) || (&r == &x)) + { + cpp_int_backend t(x); + divide_unsigned_helper(result, t, y, r); + return; + } + if((&result == &y) || (&r == &y)) + { + cpp_int_backend t(y); + divide_unsigned_helper(result, x, t, r); + return; + } + + /* + Very simple, fairly braindead long division. + Start by setting the remainder equal to x, and the + result equal to 0. Then in each loop we calculate our + "best guess" for how many times y divides into r, + add our guess to the result, and subtract guess*y + from the remainder r. One wrinkle is that the remainder + may go negative, in which case we subtract the current guess + from the result rather than adding. The value of the guess + is determined by dividing the most-significant-limb of the + current remainder by the most-significant-limb of y. + + Note that there are more efficient algorithms than this + available, in particular see Knuth Vol 2. However for small + numbers of limbs this generally outperforms the alternatives + and avoids the normalisation step which would require extra storage. + */ + + + using default_ops::subtract; + + if(&result == &r) + { + cpp_int_backend rem; + divide_unsigned_helper(result, x, y, rem); + r = rem; + return; + } + + // + // Find the most significant words of numerator and denominator. + // + limb_type y_order = y.size() - 1; + + if(y_order == 0) + { + // + // Only a single non-zero limb in the denominator, in this case + // we can use a specialized divide-by-single-limb routine which is + // much faster. This also handles division by zero: + // + divide_unsigned_helper(result, x, y.limbs()[y_order], r); + return; + } + + typename cpp_int_backend::const_limb_pointer px = x.limbs(); + typename cpp_int_backend::const_limb_pointer py = y.limbs(); + + limb_type r_order = x.size() - 1; + if((r_order == 0) && (*px == 0)) + { + // x is zero, so is the result: + r = y; + result = x; + return; + } + + r = x; + r.sign(false); + result = static_cast(0u); + // + // Check if the remainder is already less than the divisor, if so + // we already have the result. Note we try and avoid a full compare + // if we can: + // + if(r_order <= y_order) + { + if((r_order < y_order) || (r.compare(y) < 0)) + { + return; + } + } + + cpp_int_backend t; + bool r_neg = false; + + // + // See if we can short-circuit long division, and use basic arithmetic instead: + // + if(r_order == 0) + { + result = px[0] / py[0]; + r = px[0] % py[0]; + return; + } + else if(r_order == 1) + { + double_limb_type a, b; + a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; + b = y_order > 1 ? + (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] + : py[0]; + result = a / b; + r = a % b; + return; + } + // + // prepare result: + // + result.resize(1 + r_order - y_order); + typename cpp_int_backend::const_limb_pointer prem = r.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + for(unsigned i = 1; i < 1 + r_order - y_order; ++i) + pr[i] = 0; + bool first_pass = true; + + do + { + // + // Update r_order, this can't run past the end as r must be non-zero at this point: + // + r_order = r.size() - 1; + // + // Calculate our best guess for how many times y divides into r: + // + limb_type guess; + if((prem[r_order] <= py[y_order]) && (r_order > 0)) + { + double_limb_type a, b, v; + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + b = py[y_order]; + v = a / b; + if(v > cpp_int_backend::max_limb_value) + guess = 1; + else + { + guess = static_cast(v); + --r_order; + } + } + else if(r_order == 0) + { + guess = prem[0] / py[y_order]; + } + else + { + double_limb_type a, b, v; + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); + v = a / b; + guess = static_cast(v); + } + BOOST_ASSERT(guess); // If the guess ever gets to zero we go on forever.... + // + // Update result: + // + limb_type shift = r_order - y_order; + if(r_neg) + { + if(pr[shift] > guess) + pr[shift] -= guess; + else + { + t.resize(shift + 1); + t.limbs()[shift] = guess; + for(unsigned i = 0; i < shift; ++i) + t.limbs()[i] = 0; + subtract(result, t); + } + } + else if(cpp_int_backend::max_limb_value - pr[shift] > guess) + pr[shift] += guess; + else + { + t.resize(shift + 1); + t.limbs()[shift] = guess; + for(unsigned i = 0; i < shift; ++i) + t.limbs()[i] = 0; + add(result, t); + } + // + // Calculate guess * y, we use a fused mutiply-shift O(N) for this + // rather than a full O(N^2) multiply: + // + double_limb_type carry = 0; + t.resize(y.size() + shift + 1); + typename cpp_int_backend::limb_pointer pt = t.limbs(); + for(unsigned i = 0; i < shift; ++i) + pt[i] = 0; + for(unsigned i = 0; i < y.size(); ++i) + { + carry += static_cast(py[i]) * static_cast(guess); + pt[i + shift] = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + } + if(carry) + { + pt[t.size() - 1] = static_cast(carry); + } + else + { + t.resize(t.size() - 1); + } + // + // Update r: + // + subtract(r, t); + if(r.isneg()) + { + r.negate(); + r_neg = !r_neg; + } + // + // First time through we need to strip any leading zero, otherwise + // the termination condition goes belly-up: + // + if(first_pass) + { + first_pass = false; + while(pr[result.size() - 1] == 0) + result.resize(result.size() - 1); + } + } + // Termination condition is really just a check that r > y, but with two common + // short-circuit cases handled first: + while((r_order > y_order) || (prem[r_order] > py[y_order]) || (r.compare_unsigned(y) > 0)); + + // + // We now just have to normalise the result: + // + if(r_neg) + { + // We have one too many in the result: + decrement(result); + r.negate(); + if(y.sign()) + subtract(r, y); + else + add(r, y); + } + + BOOST_ASSERT(r.compare_unsigned(y) < 0); // remainder must be less than the divisor or our code has failed +} + +template +void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) +{ + if((&result == &x) || (&r == &x)) + { + cpp_int_backend t(x); + divide_unsigned_helper(result, t, y, r); + return; + } + + if(&result == &r) + { + cpp_int_backend rem; + divide_unsigned_helper(result, x, y, rem); + r = rem; + return; + } + + // As above, but simplified for integer divisor: + + using default_ops::subtract; + + if(y == 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Integer Division by zero.")); + } + // + // Find the most significant word of numerator. + // + limb_type r_order = x.size() - 1; + + // + // Set remainder and result to their initial values: + // + r = x; + r.sign(false); + typename cpp_int_backend::limb_pointer pr = r.limbs(); + + if((r_order == 0) && (*pr == 0)) + { + // All the limbs in x are zero, so is the result: + return; + } + // + // check for x < y, try to do this without actually having to + // do a full comparison: + // + if((r_order == 0) && (*pr < y)) + { + result = static_cast(0u); + return; + } + + // + // See if we can short-circuit long division, and use basic arithmetic instead: + // + if(r_order == 0) + { + result = *pr / y; + result.sign(x.sign()); + r.sign(x.sign()); + *pr %= y; + return; + } + else if(r_order == 1) + { + double_limb_type a; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; + result = a / y; + result.sign(x.sign()); + r = a % y; + r.sign(x.sign()); + return; + } + + result.resize(r_order + 1); + typename cpp_int_backend::limb_pointer pres = result.limbs(); + pres[r_order] = 0; // just in case we don't set the most significant limb below. + + do + { + // + // Calculate our best guess for how many times y divides into r: + // + if((pr[r_order] < y) && r_order) + { + double_limb_type a, b; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; + b = a % y; + r.resize(r.size() - 1); + --r_order; + pr[r_order] = static_cast(b); + pres[r_order] = static_cast(a / y); + } + else + { + pres[r_order] = pr[r_order] / y; + pr[r_order] %= y; + } + } + // Termination condition is really just a check that r > y, but with two common + // short-circuit cases handled first: + while(r_order || (pr[r_order] > y)); + + if(pres[result.size() - 1] == 0) + result.resize(result.size() - 1); + + result.sign(x.sign()); + r.sign(x.sign()); + + BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed +} + +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + cpp_int_backend r; + divide_unsigned_helper(result, a, b, r); + result.sign(a.sign() != b.sign()); +} +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) +{ + cpp_int_backend r; + divide_unsigned_helper(result, a, b, r); +} +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) +{ + cpp_int_backend r; + divide_unsigned_helper(result, a, std::abs(b), r); + if(b < 0) + result.negate(); +} +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& b) +{ + // There is no in place divide: + cpp_int_backend a(result); + divide(result, a, b); +} +template +inline void divide(cpp_int_backend& result, limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + divide(result, a, b); +} +template +inline void divide(cpp_int_backend& result, signed_limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + divide(result, a, b); +} +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + cpp_int_backend r; + divide_unsigned_helper(r, a, b, result); + result.sign(a.sign()); +} +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) +{ + cpp_int_backend r; + divide_unsigned_helper(r, a, b, result); +} +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) +{ + cpp_int_backend r; + divide_unsigned_helper(r, a, static_cast(std::abs(b)), result); +} +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& b) +{ + // There is no in place divide: + cpp_int_backend a(result); + modulus(result, a, b); +} +template +inline void modulus(cpp_int_backend& result, limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + modulus(result, a, b); +} +template +inline void modulus(cpp_int_backend& result, signed_limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + modulus(result, a, b); +} +template +void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) +{ + // + // There are 4 cases: + // * Both positive. + // * result negative, o positive. + // * o negative, result positive. + // * Both negative. + // + // When one arg is negative we convert to 2's complement form "on the fly", + // and then convert back to signed-magnitude form at the end. + // + // First figure out how big the result needs to be and set up some data: + // + unsigned rs = result.size(); + unsigned os = o.size(); + unsigned m, x; + minmax(rs, os, m, x); + result.resize(x); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer po = o.limbs(); + for(unsigned i = rs; i < x; ++i) + pr[i] = 0; + + limb_type next_limb = 0; + + if(!result.sign()) + { + if(!o.sign()) + { + for(unsigned i = 0; i < os; ++i) + pr[i] = op(pr[i], po[i]); + for(unsigned i = os; i < x; ++i) + pr[i] = op(pr[i], limb_type(0)); + } + else + { + // "o" is negative: + double_limb_type carry = 1; + for(unsigned i = 0; i < os; ++i) + { + carry += static_cast(~po[i]); + pr[i] = op(pr[i], static_cast(carry)); + carry >>= cpp_int_backend::limb_bits; + } + for(unsigned i = os; i < x; ++i) + { + carry += static_cast(~limb_type(0)); + pr[i] = op(pr[i], static_cast(carry)); + carry >>= cpp_int_backend::limb_bits; + } + // Set the overflow into the "extra" limb: + carry += static_cast(~limb_type(0)); + next_limb = op(limb_type(0), static_cast(carry)); + } + } + else + { + if(!o.sign()) + { + // "result" is negative: + double_limb_type carry = 1; + for(unsigned i = 0; i < os; ++i) + { + carry += static_cast(~pr[i]); + pr[i] = op(static_cast(carry), po[i]); + carry >>= cpp_int_backend::limb_bits; + } + for(unsigned i = os; i < x; ++i) + { + carry += static_cast(~pr[i]); + pr[i] = op(static_cast(carry), limb_type(0)); + carry >>= cpp_int_backend::limb_bits; + } + // Set the overflow into the "extra" limb: + carry += static_cast(~limb_type(0)); + next_limb = op(static_cast(carry), limb_type(0)); + } + else + { + // both are negative: + double_limb_type r_carry = 1; + double_limb_type o_carry = 1; + for(unsigned i = 0; i < os; ++i) + { + r_carry += static_cast(~pr[i]); + o_carry += static_cast(~po[i]); + pr[i] = op(static_cast(r_carry), static_cast(o_carry)); + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; + } + for(unsigned i = os; i < x; ++i) + { + r_carry += static_cast(~pr[i]); + o_carry += static_cast(~limb_type(0)); + pr[i] = op(static_cast(r_carry), static_cast(o_carry)); + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; + } + // Set the overflow into the "extra" limb: + r_carry += static_cast(~limb_type(0)); + o_carry += static_cast(~limb_type(0)); + next_limb = op(static_cast(r_carry), static_cast(o_carry)); + } + } + // + // See if the result is negative or not: + // + if(static_cast(next_limb) < 0) + { + result.sign(true); + double_limb_type carry = 1; + for(unsigned i = 0; i < x; ++i) + { + carry += static_cast(~pr[i]); + pr[i] = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + } + } + else + result.sign(false); + // + // Strip leading zeros: + // + while(result.limbs()[result.size()-1] == 0) + result.resize(result.size()-1); +} + +struct bit_and{ limb_type operator()(limb_type a, limb_type b)const{ return a & b; } }; +struct bit_or{ limb_type operator()(limb_type a, limb_type b)const{ return a | b; } }; +struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const{ return a ^ b; } }; + +template +inline void bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) +{ + bitwise_op(result, o, bit_and()); +} +#if 0 +template +inline void bitwise_and(cpp_int_backend& result, limb_type o) +{ + result.data()[cpp_int_backend::limb_count - 1] &= o; + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) + result.data()[i] = 0; +} +template +inline void bitwise_and(cpp_int_backend& result, signed_limb_type o) +{ + result.data()[cpp_int_backend::limb_count - 1] &= o; + limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) + result.data()[i] &= mask; +} +template +inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) +{ + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count; ++i) + result.data()[i] |= o.data()[i]; +} +template +inline void bitwise_or(cpp_int_backend& result, limb_type o) +{ + result.data()[cpp_int_backend::limb_count - 1] |= o; +} +#endif +template +inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) +{ + bitwise_op(result, o, bit_or()); +} +template +inline void bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) +{ + bitwise_op(result, o, bit_xor()); +} +#if 0 +template +inline void bitwise_xor(cpp_int_backend& result, limb_type o) +{ + result.data()[cpp_int_backend::limb_count - 1] ^= o; +} +template +inline void bitwise_xor(cpp_int_backend& result, signed_limb_type o) +{ + result.data()[cpp_int_backend::limb_count - 1] ^= o; + limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) + result.data()[i] ^= mask; +} +#endif +template +inline void complement(cpp_int_backend& result, const cpp_int_backend& o) +{ + // Increment and negate: + result = o; + increment(result); + result.negate(); +} +template +inline void left_shift(cpp_int_backend& result, double_limb_type s) +{ + if(!s) + return; + + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + + unsigned ors = result.size(); + if((ors == 1) && (!*result.limbs())) + return; // shifting zero yields zero. + unsigned rs = ors; + if(shift && (result.limbs()[rs - 1] >> (cpp_int_backend::limb_bits - shift))) + ++rs; // Most significant limb will overflow when shifted + rs += offset; + result.resize(rs); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + + unsigned i = 0; + if(shift) + { + // This code only works when shift is non-zero, otherwise we invoke undefined behaviour! + i = 0; + if(rs > ors) + { + pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); + --rs; + } + else + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + if(ors > 1) + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + ++i; + } + for(; ors > 1 + i; ++i) + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + } + if(ors >= 1 + i) + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + ++i; + } + for(; i < rs; ++i) + pr[rs - 1 - i] = 0; + } + else + { + for(; i < ors; ++i) + pr[rs - 1 - i] = pr[ors - 1 - i]; + for(; i < rs; ++i) + pr[rs - 1 - i] = 0; + } +} +template +inline void right_shift(cpp_int_backend& result, double_limb_type s) +{ + if(!s) + return; + + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + unsigned ors = result.size(); + unsigned rs = ors; + if(offset >= rs) + { + result = limb_type(0); + return; + } + rs -= offset; + typename cpp_int_backend::limb_pointer pr = result.limbs(); + if((pr[ors - 1] >> shift) == 0) + --rs; + if(rs == 0) + { + result = limb_type(0); + return; + } + unsigned i = 0; + if(shift) + { + // This code only works for non-zero shift, otherwise we invoke undefined behaviour! + for(; i + offset + 1 < ors; ++i) + { + pr[i] = pr[i + offset] >> shift; + pr[i] |= pr[i + offset + 1] << (cpp_int_backend::limb_bits - shift); + } + pr[i] = pr[i + offset] >> shift; + } + else + { + for(; i < rs; ++i) + pr[i] = pr[i + offset]; + } + result.resize(rs); +} + +template +inline Integer negate_integer(Integer i, const mpl::true_&) +{ + return -i; +} +template +inline Integer negate_integer(Integer i, const mpl::false_&) +{ + return ~--i; +} + +template +inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) +{ + *result = static_cast(backend.limbs()[0]); + unsigned shift = cpp_int_backend::limb_bits; + for(unsigned i = 1; i < backend.size(); ++i) + { + *result += static_cast(backend.limbs()[i]) << shift; + shift += cpp_int_backend::limb_bits; + if(shift > std::numeric_limits::digits) + break; + } + if(backend.sign()) + { + *result = negate_integer(*result, mpl::bool_::is_signed>()); + } +} + +template +inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) +{ + typename cpp_int_backend::const_limb_pointer p = backend.limbs(); + unsigned shift = cpp_int_backend::limb_bits; + *result = static_cast(*p); + for(unsigned i = 1; i < backend.size(); ++i) + { + *result += static_cast(std::ldexp(static_cast(p[i]), shift)); + shift += cpp_int_backend::limb_bits; + } + if(backend.sign()) + *result = -*result; +} + +template +inline bool is_zero(const cpp_int_backend& val) +{ + return (val.size() == 1) && (val.limbs()[0] == 0); +} +template +inline int get_sign(const cpp_int_backend& val) +{ + return is_zero(val) ? 0 : val.sign() ? -1 : 1; +} + +namespace detail{ +// +// Get the location of the least-significant-bit: +// +template +inline unsigned get_lsb(const cpp_int_backend& a) +{ + BOOST_ASSERT(get_sign(a) != 0); + + unsigned result = 0; + // + // Find the index of the least significant limb that is non-zero: + // + unsigned index = 0; + while(!a.limbs()[index] && (index < a.size())) + ++index; + // + // Find the index of the least significant bit within that limb: + // + limb_type l = a.limbs()[index]; + while(!(l & 1u)) + { + l >>= 1; + ++result; + } + + return result + index * cpp_int_backend::limb_bits; +} + +} + +template +inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + int shift; + + cpp_int_backend u(a), v(b); + + int s = get_sign(u); + + /* GCD(0,x) := x */ + if(s < 0) + { + u.negate(); + } + else if(s == 0) + { + result = v; + return; + } + s = get_sign(v); + if(s < 0) + { + v.negate(); + } + else if(s == 0) + { + result = u; + return; + } + + /* Let shift := lg K, where K is the greatest power of 2 + dividing both u and v. */ + + unsigned us = detail::get_lsb(u); + unsigned vs = detail::get_lsb(v); + shift = (std::min)(us, vs); + right_shift(u, us); + right_shift(v, vs); + + do + { + /* Now u and v are both odd, so diff(u, v) is even. + Let u = min(u, v), v = diff(u, v)/2. */ + if(u.compare(v) > 0) + u.swap(v); + subtract(v, u); + // Termination condition tries not to do a full compare if possible: + if(!v.limbs()[0] && is_zero(v)) + break; + vs = detail::get_lsb(v); + right_shift(v, vs); + BOOST_ASSERT((v.limbs()[0] & 1)); + BOOST_ASSERT((u.limbs()[0] & 1)); + } + while(true); + + result = u; + left_shift(result, shift); +} + +template +inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +{ + cpp_int_backend t; + eval_gcd(t, a, b); + + if(is_zero(t)) + { + result = 0; + } + else + { + divide(result, a, t); + multiply(result, b); + } + if(get_sign(result) < 0) + result.negate(); +} + +template +struct number_category > : public mpl::int_{}; + +typedef mp_number > cpp_int; +typedef rational_adapter > cpp_rational_backend; +typedef mp_number cpp_rational; + +}} // namespaces + + +namespace std{ + +template +class numeric_limits > > +{ + typedef boost::multiprecision::mp_number > number_type; + +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + static number_type (min)() BOOST_MP_NOEXCEPT + { + return number_type(0); + } + static number_type (max)() BOOST_MP_NOEXCEPT + { + return number_type(0); + } + static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR int digits = 0; + BOOST_STATIC_CONSTEXPR int digits10 = 0; + BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + static number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } + static number_type round_error() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + static number_type infinity() BOOST_MP_NOEXCEPT { return 0; } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = false; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +} + +#endif diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index a8b99318..5ea5be09 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -1559,7 +1559,7 @@ public: if(!init) { init = true; - val = Signed ? number_type(1) << Bits - 1 : 0; + val = Signed ? number_type(number_type(1) << (Bits - 1)) : 0; } return val; } diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index c98059f9..72ef2938 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -12,7 +12,7 @@ #if !defined(TEST_MPF) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_FIXED_INT) + && !defined(TEST_FIXED_INT) && !defined(TEST_CPP_INT) # define TEST_MPF # define TEST_MPZ # define TEST_MPQ @@ -21,6 +21,7 @@ # define TEST_MPQ # define TEST_TOMMATH # define TEST_FIXED_INT +# define TEST_CPP_INT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -48,6 +49,9 @@ #if defined(TEST_FIXED_INT) #include #endif +#if defined(TEST_CPP_INT) +#include +#endif #include #include @@ -577,6 +581,13 @@ int main() test("gmp_int", 512); test("gmp_int", 1024); #endif +#ifdef TEST_CPP_INT + test("cpp_int", 64); + test("cpp_int", 128); + test("cpp_int", 256); + test("cpp_int", 512); + test("cpp_int", 1024); +#endif #ifdef TEST_MPQ test("mpq_rational", 64); test("mpq_rational", 128); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 9b7d1c23..47dc5082 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -142,6 +142,20 @@ run test_arithmetic.cpp TEST_FIXED_INT2 : test_arithmetic_fixed_int2 ; +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT + : test_arithmetic_fixed_cpp_int ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT_BR + : test_arithmetic_cpp_int_br ; + run test_numeric_limits.cpp : # command line : # input files @@ -202,7 +216,6 @@ run test_numeric_limits.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - [ check-target-builds ../config//has_mpfr : : no ] : test_numeric_limits_cpp_dec_float ; run test_numeric_limits.cpp $(TOMMATH) @@ -213,6 +226,20 @@ run test_numeric_limits.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] : test_numeric_limits_tommath ; +run test_numeric_limits.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT + : test_numeric_limits_cpp_int ; + +run test_numeric_limits.cpp + : # command line + : # input files + : # requirements + TEST_FIXED_INT + : test_numeric_limits_fixed_int ; + run test_exp.cpp gmp : # command line : # input files @@ -603,6 +630,14 @@ run test_fixed_int.cpp gmp release # otherwise runtime is too slow!! ; +run test_cpp_int.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] + release # otherwise runtime is too slow!! + ; + run test_rational_io.cpp $(TOMMATH) : # command line : # input files diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 14d3da67..eb2a7de0 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -7,6 +7,10 @@ # define _SCL_SECURE_NO_WARNINGS #endif +#ifdef TEST_VLD +#include +#endif + #include #include #include @@ -14,7 +18,7 @@ #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) + && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_BR) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -26,6 +30,8 @@ # define TEST_TOMMATH # define TEST_FIXED_INT1 # define TEST_FIXED_INT2 +# define TEST_CPP_INT +# define TEST_CPP_INT_BR #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -56,6 +62,9 @@ #if defined(TEST_FIXED_INT1) || defined(TEST_FIXED_INT2) #include #endif +#if defined(TEST_CPP_INT) || defined(TEST_CPP_INT_BR) +#include +#endif #if defined(TEST_TOMMATH_BOOST_RATIONAL) || defined(TEST_MPZ_BOOST_RATIONAL) #include @@ -364,7 +373,6 @@ void test_integer_ops(const boost::mpl::int_(); test(); test > >(); +#endif +#ifdef TEST_CPP_INT + test(); +#endif +#ifdef TEST_CPP_INT_BR + test(); #endif return boost::report_errors(); } diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp new file mode 100644 index 00000000..ee6bcde2 --- /dev/null +++ b/test/test_cpp_int.cpp @@ -0,0 +1,179 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +// +// Compare arithmetic results using fixed_int to GMP results. +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include +#include +#include +#include "test.hpp" + +template +T generate_random(unsigned bits_wanted) +{ + static boost::random::mt19937 gen; + typedef boost::random::mt19937::result_type random_type; + + T max_val; + unsigned digits; + if(std::numeric_limits::is_bounded && (bits_wanted == std::numeric_limits::digits)) + { + max_val = (std::numeric_limits::max)(); + digits = std::numeric_limits::digits; + } + else + { + max_val = T(1) << bits_wanted; + digits = bits_wanted; + } + + unsigned bits_per_r_val = std::numeric_limits::digits - 1; + while((random_type(1) << bits_per_r_val) > (gen.max)()) --bits_per_r_val; + + unsigned terms_needed = digits / bits_per_r_val + 1; + + T val = 0; + for(unsigned i = 0; i < terms_needed; ++i) + { + val *= (gen.max)(); + val += gen(); + } + val %= max_val; + return val; +} + +int main() +{ + using namespace boost::multiprecision; + typedef cpp_int packed_type; + unsigned last_error_count = 0; + for(int i = 0; i < 1000; ++i) + { + mpz_int a = generate_random(1000); + mpz_int b = generate_random(512); + mpz_int c = generate_random(256); + mpz_int d = generate_random(32); + + int si = d.convert_to(); + + packed_type a1 = a.str(); + packed_type b1 = b.str(); + packed_type c1 = c.str(); + packed_type d1 = d.str(); + + BOOST_CHECK_EQUAL(a.str(), a1.str()); + BOOST_CHECK_EQUAL(b.str(), b1.str()); + BOOST_CHECK_EQUAL(c.str(), c1.str()); + BOOST_CHECK_EQUAL(d.str(), d1.str()); + BOOST_CHECK_EQUAL(mpz_int(a+b).str(), packed_type(a1 + b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a-b).str(), packed_type(a1 - b1).str()); + BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)+b).str(), packed_type(packed_type(-a1) + b1).str()); + BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)-b).str(), packed_type(packed_type(-a1) - b1).str()); + BOOST_CHECK_EQUAL(mpz_int(c * d).str(), packed_type(c1 * d1).str()); + BOOST_CHECK_EQUAL(mpz_int(c * -d).str(), packed_type(c1 * -d1).str()); + BOOST_CHECK_EQUAL(mpz_int(-c * d).str(), packed_type(-c1 * d1).str()); + BOOST_CHECK_EQUAL(mpz_int(b * c).str(), packed_type(b1 * c1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / b).str(), packed_type(a1 / b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / -b).str(), packed_type(a1 / -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a / b).str(), packed_type(-a1 / b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / d).str(), packed_type(a1 / d1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % b).str(), packed_type(a1 % b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % -b).str(), packed_type(a1 % -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a % b).str(), packed_type(-a1 % b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % d).str(), packed_type(a1 % d1).str()); + // bitwise ops: + BOOST_CHECK_EQUAL(mpz_int(a|b).str(), packed_type(a1 | b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a|b).str(), packed_type(-a1 | b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a|-b).str(), packed_type(a1 | -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a|-b).str(), packed_type(-a1 | -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a&b).str(), packed_type(a1 & b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a&b).str(), packed_type(-a1 & b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a&-b).str(), packed_type(a1 & -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a&-b).str(), packed_type(-a1 & -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a^b).str(), packed_type(a1 ^ b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a^b).str(), packed_type(-a1 ^ b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a^-b).str(), packed_type(a1 ^ -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a^-b).str(), packed_type(-a1 ^ -b1).str()); + // Now check operations involving integers: + BOOST_CHECK_EQUAL(mpz_int(a + si).str(), packed_type(a1 + si).str()); + BOOST_CHECK_EQUAL(mpz_int(a + -si).str(), packed_type(a1 + -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a + si).str(), packed_type(-a1 + si).str()); + BOOST_CHECK_EQUAL(mpz_int(si + a).str(), packed_type(si + a1).str()); + BOOST_CHECK_EQUAL(mpz_int(a - si).str(), packed_type(a1 - si).str()); + BOOST_CHECK_EQUAL(mpz_int(a - -si).str(), packed_type(a1 - -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a - si).str(), packed_type(-a1 - si).str()); + BOOST_CHECK_EQUAL(mpz_int(si - a).str(), packed_type(si - a1).str()); + BOOST_CHECK_EQUAL(mpz_int(b * si).str(), packed_type(b1 * si).str()); + BOOST_CHECK_EQUAL(mpz_int(b * -si).str(), packed_type(b1 * -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-b * si).str(), packed_type(-b1 * si).str()); + BOOST_CHECK_EQUAL(mpz_int(si * b).str(), packed_type(si * b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / si).str(), packed_type(a1 / si).str()); + BOOST_CHECK_EQUAL(mpz_int(a / -si).str(), packed_type(a1 / -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a / si).str(), packed_type(-a1 / si).str()); + BOOST_CHECK_EQUAL(mpz_int(a % si).str(), packed_type(a1 % si).str()); + BOOST_CHECK_EQUAL(mpz_int(a % -si).str(), packed_type(a1 % -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a % si).str(), packed_type(-a1 % si).str()); + BOOST_CHECK_EQUAL(mpz_int(a|si).str(), packed_type(a1 | si).str()); + BOOST_CHECK_EQUAL(mpz_int(a&si).str(), packed_type(a1 & si).str()); + BOOST_CHECK_EQUAL(mpz_int(a^si).str(), packed_type(a1 ^ si).str()); + BOOST_CHECK_EQUAL(mpz_int(si|a).str(), packed_type(si|a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si&a).str(), packed_type(si&a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si^a).str(), packed_type(si^a1).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(a, b)).str(), packed_type(gcd(a1, b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(c, d)).str(), packed_type(lcm(c1, d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(-a, b)).str(), packed_type(gcd(-a1, b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(-c, d)).str(), packed_type(lcm(-c1, d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(-a, -b)).str(), packed_type(gcd(-a1, -b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(-c, -d)).str(), packed_type(lcm(-c1, -d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(a, -b)).str(), packed_type(gcd(a1, -b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(c, -d)).str(), packed_type(lcm(c1, -d1)).str()); + if(last_error_count != boost::detail::test_errors()) + { + last_error_count = boost::detail::test_errors(); + std::cout << std::hex << std::showbase; + + std::cout << "a = " << a << std::endl; + std::cout << "a1 = " << a1 << std::endl; + std::cout << "b = " << b << std::endl; + std::cout << "b1 = " << b1 << std::endl; + std::cout << "c = " << c << std::endl; + std::cout << "c1 = " << c1 << std::endl; + std::cout << "d = " << d << std::endl; + std::cout << "d1 = " << d1 << std::endl; + std::cout << "a + b = " << a+b << std::endl; + std::cout << "a1 + b1 = " << a1+b1 << std::endl; + std::cout << std::dec; + std::cout << "a - b = " << a-b << std::endl; + std::cout << "a1 - b1 = " << a1-b1 << std::endl; + std::cout << "-a + b = " << mpz_int(-a)+b << std::endl; + std::cout << "-a1 + b1 = " << packed_type(-a1)+b1 << std::endl; + std::cout << "-a - b = " << mpz_int(-a)-b << std::endl; + std::cout << "-a1 - b1 = " << packed_type(-a1)-b1 << std::endl; + std::cout << "c*d = " << c*d << std::endl; + std::cout << "c1*d1 = " << c1*d1 << std::endl; + std::cout << "b*c = " << b*c << std::endl; + std::cout << "b1*c1 = " << b1*c1 << std::endl; + std::cout << "a/b = " << a/b << std::endl; + std::cout << "a1/b1 = " << a1/b1 << std::endl; + std::cout << "a/d = " << a/d << std::endl; + std::cout << "a1/d1 = " << a1/d1 << std::endl; + std::cout << "a%b = " << a%b << std::endl; + std::cout << "a1%b1 = " << a1%b1 << std::endl; + std::cout << "a%d = " << a%d << std::endl; + std::cout << "a1%d1 = " << a1%d1 << std::endl; + } + } + return boost::report_errors(); +} + + + diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 6cc53374..ddec4db1 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -9,7 +9,9 @@ #include "test.hpp" -#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_TOMMATH) +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ + !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && \ + !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_FIXED_INT) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -19,6 +21,8 @@ # define TEST_CPP_DEC_FLOAT # define TEST_MPQ # define TEST_TOMMATH +# define TEST_FIXED_INT +# define TEST_CPP_INT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -44,6 +48,12 @@ #ifdef TEST_TOMMATH #include #endif +#ifdef TEST_FIXED_INT +#include +#endif +#ifdef TEST_CPP_INT +#include +#endif #define PRINT(x)\ std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; @@ -206,6 +216,15 @@ int main() #endif #ifdef TEST_TOMMATH test(); +#endif +#ifdef TEST_FIXED_INT + test(); + test(); + test(); + test(); +#endif +#ifdef TEST_CPP_INT + test(); #endif return boost::report_errors(); } From f2cb591accfdfa4c196cda8f9f085562ab2bbf8c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 29 Feb 2012 18:26:34 +0000 Subject: [PATCH 118/256] Fix a few GCC C++0x warnings and errors [SVN r77143] --- .../concepts/mp_number_architypes.hpp | 18 +++++++++--------- include/boost/multiprecision/cpp_int.hpp | 6 +++--- include/boost/multiprecision/fixed_int.hpp | 4 ++-- include/boost/multiprecision/mpfr.hpp | 18 +++++++++--------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index bfa941be..61de59c7 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -198,15 +198,15 @@ class numeric_limits typedef std::numeric_limits base_type; typedef boost::multiprecision::concepts::mp_number_float_architype number_type; public: - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } + static number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } + static number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } + static number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } + static number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } + static number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } + static number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } }; } diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 6ffe9f8a..e68c7a93 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -130,7 +130,7 @@ public: } } - cpp_int_backend() : m_limbs(1), m_internal(true), m_sign(false) + cpp_int_backend() : m_limbs(1), m_sign(false), m_internal(true) { *limbs() = 0; } @@ -149,7 +149,7 @@ public: } else { - data.ld = o.data.ld; + m_data.ld = o.m_data.ld; o.m_limbs = 0; o.m_internal = true; } @@ -1703,7 +1703,7 @@ inline typename enable_if, void>::type convert_to(R* result, cons { *result += static_cast(backend.limbs()[i]) << shift; shift += cpp_int_backend::limb_bits; - if(shift > std::numeric_limits::digits) + if(shift > static_cast(std::numeric_limits::digits)) break; } if(backend.sign()) diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 5ea5be09..051fab4f 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -24,7 +24,7 @@ typedef boost::int64_t signed_double_limb_type; static const limb_type max_block_10 = 1000000000; static const limb_type digits_per_block_10 = 9; -inline limb_type block_multiplier(int count) +inline limb_type block_multiplier(unsigned count) { static const limb_type values[digits_per_block_10] = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; @@ -941,7 +941,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1] % y; return; } - else if(r_order == static_cast(fixed_int::limb_count) - 2) + else if(r_order == static_cast(fixed_int::limb_count) - 2) { double_limb_type a; a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index aed383e2..fc7e7f05 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1156,9 +1156,9 @@ class numeric_limits > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type (max)() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type lowest() BOOST_MP_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; BOOST_STATIC_CONSTEXPR int max_digits10 = 0; @@ -1166,8 +1166,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 0; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1177,10 +1177,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; From d45e66bc36c6c29e1298ce1c051a886dfd444b68 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 2 Mar 2012 18:41:33 +0000 Subject: [PATCH 119/256] Improve subtract performance. [SVN r77156] --- include/boost/multiprecision/cpp_int.hpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index e68c7a93..ef485f4f 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -760,22 +760,20 @@ inline void subtract_unsigned(cpp_int_backend& result, } unsigned i = 0; - BOOST_STATIC_CONSTANT(double_limb_type, borrow_value = static_cast(cpp_int_backend::max_limb_value) + 1); // First where a and b overlap: while(i < m) { - borrow += pb[i]; - borrow = (borrow_value + static_cast(pa[i])) - borrow; + borrow = static_cast(pa[i]) - static_cast(pb[i]) - borrow; pr[i] = static_cast(borrow); - borrow = borrow & borrow_value ? 0 : 1; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Now where only a has digits, only as long as we've borrowed: while(borrow && (i < x)) { - borrow = (borrow_value + static_cast(pa[i])) - borrow; + borrow = static_cast(pa[i]) - borrow; pr[i] = static_cast(borrow); - borrow = borrow & borrow_value ? 0 : 1; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Any remaining digits are the same as those in pa: From 8f0e6e12b2c373df487cef6d4cba54e1d5d389e6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 3 Mar 2012 15:25:35 +0000 Subject: [PATCH 120/256] Fix range error [SVN r77175] --- include/boost/multiprecision/cpp_int.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index ef485f4f..2b55369b 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1507,7 +1507,7 @@ void bitwise_op(cpp_int_backend& result, const cpp_int // // Strip leading zeros: // - while(result.limbs()[result.size()-1] == 0) + while((result.size() > 1) && (result.limbs()[result.size()-1] == 0)) result.resize(result.size()-1); } From 6e494e59fdbe9acded02f61588a919f5d193aa3b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 3 Mar 2012 18:39:37 +0000 Subject: [PATCH 121/256] Begin refactoring cpp_int code. [SVN r77180] --- include/boost/multiprecision/cpp_int.hpp | 33 +------------- .../multiprecision/detail/cpp_int_core.hpp | 44 +++++++++++++++++++ include/boost/multiprecision/fixed_int.hpp | 16 +------ 3 files changed, 46 insertions(+), 47 deletions(-) create mode 100644 include/boost/multiprecision/detail/cpp_int_core.hpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 2b55369b..63c47bc9 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -13,43 +13,12 @@ #include #include #include -#include +#include #include namespace boost{ namespace multiprecision{ - /* -typedef boost::uint32_t limb_type; -typedef boost::int32_t signed_limb_type; -typedef boost::uint64_t double_limb_type; -typedef boost::int64_t signed_double_limb_type; -static const limb_type max_block_10 = 1000000000; -static const limb_type digits_per_block_10 = 9; - -inline limb_type block_multiplier(int count) -{ - static const limb_type values[digits_per_block_10] - = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; - BOOST_ASSERT(count < digits_per_block_10); - return values[count]; -} -*/ -template -inline void minmax(const T& a, const T& b, T& aa, T& bb) -{ - if(a < b) - { - aa = a; - bb = b; - } - else - { - aa = b; - bb = a; - } -} - template > struct cpp_int_backend : private Allocator::template rebind::other { diff --git a/include/boost/multiprecision/detail/cpp_int_core.hpp b/include/boost/multiprecision/detail/cpp_int_core.hpp new file mode 100644 index 00000000..338eab26 --- /dev/null +++ b/include/boost/multiprecision/detail/cpp_int_core.hpp @@ -0,0 +1,44 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_CPP_INT_CORE_HPP +#define BOOST_MP_CPP_INT_CORE_HPP + +namespace boost{ namespace multiprecision{ + +typedef boost::uint32_t limb_type; +typedef boost::int32_t signed_limb_type; +typedef boost::uint64_t double_limb_type; +typedef boost::int64_t signed_double_limb_type; +static const limb_type max_block_10 = 1000000000; +static const limb_type digits_per_block_10 = 9; + +inline limb_type block_multiplier(unsigned count) +{ + static const limb_type values[digits_per_block_10] + = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; + BOOST_ASSERT(count < digits_per_block_10); + return values[count]; +} + +template +inline void minmax(const T& a, const T& b, T& aa, T& bb) +{ + if(a < b) + { + aa = a; + bb = b; + } + else + { + aa = b; + bb = a; + } +} + +}} + +#endif // BOOST_MP_CPP_INT_CORE_HPP + diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 051fab4f..d183b6dd 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -17,21 +18,6 @@ namespace boost{ namespace multiprecision{ -typedef boost::uint32_t limb_type; -typedef boost::int32_t signed_limb_type; -typedef boost::uint64_t double_limb_type; -typedef boost::int64_t signed_double_limb_type; -static const limb_type max_block_10 = 1000000000; -static const limb_type digits_per_block_10 = 9; - -inline limb_type block_multiplier(unsigned count) -{ - static const limb_type values[digits_per_block_10] - = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; - BOOST_ASSERT(count < digits_per_block_10); - return values[count]; -} - template struct fixed_int { From 5500ad3ea86cd187fc5f743066bfbaab6f75f112 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 8 Mar 2012 10:34:37 +0000 Subject: [PATCH 122/256] Add support for fixed precision and unsigned cpp_int's. [SVN r77260] --- include/boost/multiprecision/cpp_int.hpp | 1074 +++++++++++++++------- test/test_arithmetic.cpp | 2 + test/test_cpp_int.cpp | 144 +-- test/test_numeric_limits.cpp | 13 +- 4 files changed, 846 insertions(+), 387 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 63c47bc9..9efa5147 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -19,8 +19,11 @@ namespace boost{ namespace multiprecision{ -template > -struct cpp_int_backend : private Allocator::template rebind::other +template > +struct cpp_int_backend; + +template > +struct cpp_int_base : private Allocator::template rebind::other { typedef typename Allocator::template rebind::other allocator_type; typedef typename allocator_type::pointer limb_pointer; @@ -34,17 +37,18 @@ private: }; public: - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list float_types; - BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); - BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = InternalLimbs ? InternalLimbs : sizeof(limb_data) / sizeof(limb_type)); + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = + MinBits + ? MinBits / limb_bits + (MinBits % limb_bits ? 1 : 0) + : sizeof(limb_data) / sizeof(limb_type)); + BOOST_STATIC_CONSTANT(bool, variable = true); + + BOOST_STATIC_ASSERT_MESSAGE(Signed, "There is curently no support for unsigned arbitrary precision integers."); private: - union data_type { limb_data ld; @@ -56,7 +60,6 @@ private: bool m_sign, m_internal; public: - // // Helper functions for getting at our internal data, and manipulating storage: // @@ -98,19 +101,24 @@ public: m_limbs = new_size; } } + void normalize() + { + limb_pointer p = limbs(); + while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; + } - cpp_int_backend() : m_limbs(1), m_sign(false), m_internal(true) + cpp_int_base() : m_limbs(1), m_sign(false), m_internal(true) { *limbs() = 0; } - cpp_int_backend(const cpp_int_backend& o) : m_limbs(0), m_internal(true) + cpp_int_base(const cpp_int_base& o) : m_limbs(0), m_internal(true) { resize(o.size()); std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_backend(cpp_int_backend&& o) : m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) + cpp_int_base(cpp_int_base&& o) : m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) { if(m_internal) { @@ -124,12 +132,12 @@ public: } } #endif - ~cpp_int_backend() + ~cpp_int_base() { if(!m_internal) allocator().deallocate(limbs(), capacity()); } - cpp_int_backend& operator = (const cpp_int_backend& o) + void assign(const cpp_int_base& o) { if(this != &o) { @@ -138,20 +146,242 @@ public: std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); m_sign = o.m_sign; } + } + void negate() + { + m_sign = !m_sign; + // Check for zero value: + if(m_sign && (m_limbs == 1)) + { + if(limbs()[0] == 0) + m_sign = false; + } + } + bool isneg()const + { + return m_sign; + } + void do_swap(cpp_int_base& o) + { + std::swap(m_data, o.m_data); + std::swap(m_sign, o.m_sign); + std::swap(m_internal, o.m_internal); + std::swap(m_limbs, o.m_limbs); + } +}; + +template +struct cpp_int_base +{ + typedef limb_type* limb_pointer; + typedef const limb_type* const_limb_pointer; + +public: + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); + BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = MinBits / limb_bits + (MinBits % limb_bits ? 1 : 0)); + BOOST_STATIC_CONSTANT(bool, variable = false); + BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); + +private: + limb_type m_data[internal_limb_count]; + boost::uint16_t m_limbs; + bool m_sign; + +public: + // + // Helper functions for getting at our internal data, and manipulating storage: + // + unsigned size()const { return m_limbs; } + limb_pointer limbs() { return m_data; } + const_limb_pointer limbs()const { return m_data; } + bool sign()const { return m_sign; } + void sign(bool b) + { + m_sign = b; + // Check for zero value: + if(m_sign && (m_limbs == 1)) + { + if(limbs()[0] == 0) + m_sign = false; + } + } + void resize(unsigned new_size) + { + m_limbs = (std::min)(new_size, internal_limb_count); + } + void normalize() + { + limb_pointer p = limbs(); + while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; + } + + cpp_int_base() : m_limbs(1), m_sign(false) + { + *limbs() = 0; + } + cpp_int_base(const cpp_int_base& o) : m_limbs(0) + { + resize(o.size()); + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + m_sign = o.m_sign; + } +#ifndef BOOST_NO_RVALUE_REFERENCES + cpp_int_base(cpp_int_base&& o) : m_limbs(o.m_limbs), m_sign(o.m_sign) + { + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + } +#endif + ~cpp_int_base() {} + void assign(const cpp_int_base& o) + { + if(this != &o) + { + resize(o.size()); + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + m_sign = o.m_sign; + } + } + void negate() + { + m_sign = !m_sign; + // Check for zero value: + if(m_sign && (m_limbs == 1)) + { + if(limbs()[0] == 0) + m_sign = false; + } + } + bool isneg()const + { + return m_sign; + } + void do_swap(cpp_int_base& o) + { + for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) + std::swap(m_data[i], o.m_data[i]); + std::swap(m_sign, o.m_sign); + std::swap(m_limbs, o.m_limbs); + } +}; + +template +struct cpp_int_base +{ + typedef limb_type* limb_pointer; + typedef const limb_type* const_limb_pointer; + +public: + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); + BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = MinBits / limb_bits + (MinBits % limb_bits ? 1 : 0)); + BOOST_STATIC_CONSTANT(bool, variable = false); + BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); + +private: + limb_type m_data[internal_limb_count]; + limb_type m_limbs; + +public: + // + // Helper functions for getting at our internal data, and manipulating storage: + // + unsigned size()const { return m_limbs; } + limb_pointer limbs() { return m_data; } + const_limb_pointer limbs()const { return m_data; } + bool sign()const { return false; } + void sign(bool b) { if(b) negate(); } + void resize(unsigned new_size) + { + m_limbs = (std::min)(new_size, internal_limb_count); + } + void normalize() + { + limb_pointer p = limbs(); + while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; + } + + cpp_int_base() : m_limbs(1) + { + *limbs() = 0; + } + cpp_int_base(const cpp_int_base& o) : m_limbs(0) + { + resize(o.size()); + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + } +#ifndef BOOST_NO_RVALUE_REFERENCES + cpp_int_base(cpp_int_base&& o) : m_limbs(o.m_limbs) + { + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + } +#endif + ~cpp_int_base() {} + void assign(const cpp_int_base& o) + { + if(this != &o) + { + resize(o.size()); + std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + } + } + void negate() + { + // Not so much a negate as a complement - this gets called when subtraction + // would result in a "negative" number: + unsigned i; + for(i = m_limbs; i < internal_limb_count; ++i) + m_data[i] = 0; + m_limbs = internal_limb_count; + for(i = 0; i < internal_limb_count; ++i) + m_data[i] = ~m_data[i]; + normalize(); + increment(static_cast& >(*this)); + } + bool isneg()const + { + return false; + } + void do_swap(cpp_int_base& o) + { + for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) + std::swap(m_data[i], o.m_data[i]); + std::swap(m_limbs, o.m_limbs); + } +}; + +template +struct cpp_int_backend : public cpp_int_base +{ +public: + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + + cpp_int_backend(){} + cpp_int_backend(const cpp_int_backend& o) : cpp_int_base(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + cpp_int_backend(cpp_int_backend&& o) : cpp_int_base(o) {} +#endif + cpp_int_backend& operator = (const cpp_int_backend& o) + { + this->assign(o); return *this; } cpp_int_backend& operator = (limb_type i) { - m_limbs = 1; - *limbs() = i; - m_sign = false; + this->resize(1); + *this->limbs() = i; + this->sign(false); return *this; } cpp_int_backend& operator = (signed_limb_type i) { - m_limbs = 1; - *limbs() = static_cast(std::abs(i)); - m_sign = i < 0; + this->resize(1); + *this->limbs() = static_cast(std::abs(i)); + this->sign(i < 0); return *this; } cpp_int_backend& operator = (double_limb_type i) @@ -161,25 +391,27 @@ public: limb_pointer p = limbs(); *p = static_cast(i); p[1] = static_cast(i >> limb_bits); - m_limbs = p[1] ? 2 : 1; - m_sign = false; + this->resize(p[1] ? 2 : 1); + this->sign(false); return *this; } cpp_int_backend& operator = (signed_double_limb_type i) { BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); BOOST_STATIC_ASSERT(internal_limb_count >= 2); + bool s = false; if(i < 0) { - m_sign = true; + s = true; i = -i; } else - m_sign = false; - limb_pointer p = limbs(); + this->sign(false); + limb_pointer p = this->limbs(); *p = static_cast(i); p[1] = static_cast(i >> limb_bits); - m_limbs = p[1] ? 2 : 1; + resize(p[1] ? 2 : 1); + this->sign(s); return *this; } @@ -329,10 +561,7 @@ public: } void swap(cpp_int_backend& o) { - std::swap(m_data, o.m_data); - std::swap(m_sign, o.m_sign); - std::swap(m_internal, o.m_internal); - std::swap(m_limbs, o.m_limbs); + this->do_swap(o); } std::string str(std::streamsize digits, std::ios_base::fmtflags f)const { @@ -347,6 +576,8 @@ public: if(base == 8 || base == 16) { + if(this->sign()) + BOOST_THROW_EXCEPTION(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported.")); limb_type shift = base == 8 ? 3 : 4; limb_type mask = static_cast((1u << shift) - 1); cpp_int_backend t(*this); @@ -428,41 +659,27 @@ public: } return result; } - void negate() - { - m_sign = !m_sign; - // Check for zero value: - if(m_sign && (m_limbs == 1)) - { - if(limbs()[0] == 0) - m_sign = false; - } - } - bool isneg()const - { - return m_sign; - } int compare(const cpp_int_backend& o)const { - if(m_sign != o.m_sign) - return m_sign ? -1 : 1; + if(sign() != o.sign()) + return sign() ? -1 : 1; int result = 0; // Only do the compare if the same sign: result = compare_unsigned(o); - if(m_sign) + if(sign()) result = -result; return result; } int compare_unsigned(const cpp_int_backend& o)const { - if(m_limbs != o.m_limbs) + if(size() != o.size()) { - return m_limbs > o.m_limbs ? 1 : -1; + return size() > o.size() ? 1 : -1; } const_limb_pointer pa = limbs(); const_limb_pointer pb = o.limbs(); - for(int i = m_limbs - 1; i >= 0; --i) + for(int i = size() - 1; i >= 0; --i) { if(pa[i] != pb[i]) return pa[i] > pb[i] ? 1 : -1; @@ -479,23 +696,23 @@ public: } }; -template -const unsigned cpp_int_backend::limb_bits; -template -const limb_type cpp_int_backend::max_limb_value; -template -const limb_type cpp_int_backend::sign_bit_mask; -template -const unsigned cpp_int_backend::internal_limb_count; +template +const unsigned cpp_int_backend::limb_bits; +template +const limb_type cpp_int_backend::max_limb_value; +template +const limb_type cpp_int_backend::sign_bit_mask; +template +const unsigned cpp_int_backend::internal_limb_count; -template -inline void add(cpp_int_backend& result, const cpp_int_backend& o) +template +inline void add(cpp_int_backend& result, const cpp_int_backend& o) { add(result, result, o); } -template -inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { using std::swap; @@ -511,10 +728,10 @@ inline void add_unsigned(cpp_int_backend& result, cons return; } result.resize(x); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::limb_pointer pr_end = pr + m; + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr_end = pr + m; if(a.size() < b.size()) swap(pa, pb); @@ -524,7 +741,7 @@ inline void add_unsigned(cpp_int_backend& result, cons { carry += static_cast(*pa) + static_cast(*pb); *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++pr, ++pa, ++pb; } pr_end += x - m; @@ -539,19 +756,21 @@ inline void add_unsigned(cpp_int_backend& result, cons } carry += static_cast(*pa); *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++pr, ++pa; } if(carry) { result.resize(x + 1); // We overflowed, need to add one more limb: - result.limbs()[x] = static_cast(carry); + if(cpp_int_backend::variable || (result.size() > x)) + result.limbs()[x] = static_cast(carry); } + result.normalize(); result.sign(a.sign()); } -template -inline void add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { if(a.sign() != b.sign()) { @@ -561,22 +780,31 @@ inline void add(cpp_int_backend& result, const cpp_int add_unsigned(result, a, b); } -template -inline void add_unsigned(cpp_int_backend& result, const limb_type& o) +template +inline void add_unsigned(cpp_int_backend& result, const limb_type& o) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: double_limb_type carry = o; - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); for(unsigned i = 0; carry && (i < result.size()); ++i) { carry += static_cast(pr[i]); pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } + if(carry) + { + unsigned x = result.size(); + result.resize(x + 1); + // We overflowed, need to add one more limb: + if(cpp_int_backend::variable || (result.size() > x)) + result.limbs()[x] = static_cast(carry); + } + result.normalize(); } -template -inline void add(cpp_int_backend& result, const limb_type& o) +template +inline void add(cpp_int_backend& result, const limb_type& o) { if(result.sign()) { @@ -585,8 +813,8 @@ inline void add(cpp_int_backend& result, const limb_ty else add_unsigned(result, o); } -template -inline void add(cpp_int_backend& result, const signed_limb_type& o) +template +inline void add(cpp_int_backend& result, const signed_limb_type& o) { if(o < 0) subtract(result, static_cast(-o)); @@ -594,13 +822,13 @@ inline void add(cpp_int_backend& result, const signed_ add(result, static_cast(o)); } -template -inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) +template +inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) { // Subtract one limb. // Nothing fancy, just let uintmax_t take the strain: - BOOST_STATIC_CONSTANT(double_limb_type, borrow = static_cast(cpp_int_backend::max_limb_value) + 1); - typename cpp_int_backend::limb_pointer p = result.limbs(); + BOOST_STATIC_CONSTANT(double_limb_type, borrow = static_cast(cpp_int_backend::max_limb_value) + 1); + typename cpp_int_backend::limb_pointer p = result.limbs(); if(*p > o) { *p -= o; @@ -616,24 +844,23 @@ inline void subtract_unsigned(cpp_int_backend& result, ++p; while(!*p) { - *p = cpp_int_backend::max_limb_value; + *p = cpp_int_backend::max_limb_value; ++p; } --*p; - if(!result.limbs()[result.size() - 1]) - result.resize(result.size() - 1); + result.normalize(); } } -template -inline void subtract(cpp_int_backend& result, const limb_type& o) +template +inline void subtract(cpp_int_backend& result, const limb_type& o) { if(result.sign()) add_unsigned(result, o); else subtract_unsigned(result, o); } -template -inline void subtract(cpp_int_backend& result, const signed_limb_type& o) +template +inline void subtract(cpp_int_backend& result, const signed_limb_type& o) { if(o) { @@ -643,35 +870,35 @@ inline void subtract(cpp_int_backend& result, const si subtract(result, static_cast(o)); } } -template -inline void increment(cpp_int_backend& result) +template +inline void increment(cpp_int_backend& result) { static const limb_type one = 1; - if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) ++result.limbs()[0]; else if(result.sign() && result.limbs()[0]) --result.limbs()[0]; else add(result, one); } -template -inline void decrement(cpp_int_backend& result) +template +inline void decrement(cpp_int_backend& result) { static const limb_type one = 1; if(!result.sign() && result.limbs()[0]) --result.limbs()[0]; - else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) ++result.limbs()[0]; else subtract(result, one); } -template -inline void subtract(cpp_int_backend& result, const cpp_int_backend& o) +template +inline void subtract(cpp_int_backend& result, const cpp_int_backend& o) { subtract(result, result, o); } -template -inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { using std::swap; @@ -695,26 +922,11 @@ inline void subtract_unsigned(cpp_int_backend& result, result = al - bl; result.sign(s); return; - }/* - else if(m == 1) - { - if(b.size() == 1) - { - result = a; - subtract_unsigned(result, *b.limbs()); - } - else - { - result = b; - subtract_unsigned(result, *a.limbs()); - result.negate(); - } - return; - }*/ + } result.resize(x); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); bool swapped = false; int c = a.compare_unsigned(b); if(c < 0) @@ -734,7 +946,7 @@ inline void subtract_unsigned(cpp_int_backend& result, { borrow = static_cast(pa[i]) - static_cast(pb[i]) - borrow; pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Now where only a has digits, only as long as we've borrowed: @@ -742,7 +954,7 @@ inline void subtract_unsigned(cpp_int_backend& result, { borrow = static_cast(pa[i]) - borrow; pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Any remaining digits are the same as those in pa: @@ -753,18 +965,13 @@ inline void subtract_unsigned(cpp_int_backend& result, // // We may have lost digits, if so update limb usage count: // - i = result.size() - 1; - while(!pr[i] && i) - { - --i; - } - result.resize(i + 1); + result.normalize(); result.sign(a.sign()); if(swapped) result.negate(); } -template -inline void subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { if(a.sign() != b.sign()) { @@ -773,8 +980,8 @@ inline void subtract(cpp_int_backend& result, const cp } subtract_unsigned(result, a, b); } -template -inline void multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { // Very simple long multiplication, only usable for small numbers of limb_type's // but that's the typical use case for this type anyway: @@ -783,8 +990,8 @@ inline void multiply(cpp_int_backend& result, const cp // unsigned as = a.size(); unsigned bs = b.size(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); if(as == 1) { bool s = b.sign() != a.sign(); @@ -813,55 +1020,50 @@ inline void multiply(cpp_int_backend& result, const cp if(&result == &a) { - cpp_int_backend t(a); + cpp_int_backend t(a); multiply(result, t, b); return; } if(&result == &b) { - cpp_int_backend t(b); + cpp_int_backend t(b); multiply(result, a, t); return; } result.resize(as + bs); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); double_limb_type carry = 0; std::memset(pr, 0, (as + bs) * sizeof(limb_type)); + unsigned inner_limit = result.size() - as; for(unsigned i = 0; i < as; ++i) { - for(unsigned j = 0; j < bs; ++j) + for(unsigned j = 0; j < inner_limit; ++j) { + BOOST_ASSERT(i+j < result.size()); carry += static_cast(pa[i]) * static_cast(pb[j]); carry += pr[i + j]; pr[i + j] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } - pr[i + bs] = static_cast(carry); + if(cpp_int_backend::variable || (i + bs < result.size())) + pr[i + bs] = static_cast(carry); carry = 0; } - // - // We may not have filled all the digits, if so update limb usage count: - // - unsigned i = result.size() - 1; - while(!pr[i] && i) - { - --i; - } - result.resize(i + 1); + result.normalize(); // // Set the sign of the result: // result.sign(a.sign() != b.sign()); } -template -inline void multiply(cpp_int_backend& result, const cpp_int_backend& a) +template +inline void multiply(cpp_int_backend& result, const cpp_int_backend& a) { multiply(result, result, a); } -template -inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) +template +inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) { if(!val) { @@ -869,29 +1071,33 @@ inline void multiply(cpp_int_backend& result, cpp_int_ return; } double_limb_type carry = 0; - typename cpp_int_backend::limb_pointer p = result.limbs(); - typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); - typename cpp_int_backend::limb_pointer pa = a.limbs(); + typename cpp_int_backend::limb_pointer p = result.limbs(); + typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); + typename cpp_int_backend::limb_pointer pa = a.limbs(); while(p != pe) { carry += static_cast(*pa * static_cast(val)); *p = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++p, ++pa; } if(carry) { - result.resize(result.size() + 1); - result.limbs()[result.size() - 1] = static_cast(carry); + unsigned i = result.size(); + result.resize(i + 1); + if(cpp_int_backend::variable || (result.size() > i)) + result.limbs()[i] = static_cast(carry); } + if(!cpp_int_backend::variable) + result.normalize(); } -template -inline void multiply(cpp_int_backend& result, const limb_type& val) +template +inline void multiply(cpp_int_backend& result, const limb_type& val) { multiply(result, result, val); } -template -inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) +template +inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) { if(val > 0) multiply(result, a, static_cast(val)); @@ -901,23 +1107,23 @@ inline void multiply(cpp_int_backend& result, cpp_int_ result.negate(); } } -template -inline void multiply(cpp_int_backend& result, const signed_limb_type& val) +template +inline void multiply(cpp_int_backend& result, const signed_limb_type& val) { multiply(result, result, val); } -template -void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) +template +void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) { if((&result == &x) || (&r == &x)) { - cpp_int_backend t(x); + cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } if((&result == &y) || (&r == &y)) { - cpp_int_backend t(y); + cpp_int_backend t(y); divide_unsigned_helper(result, x, t, r); return; } @@ -945,7 +1151,7 @@ void divide_unsigned_helper(cpp_int_backend& result, c if(&result == &r) { - cpp_int_backend rem; + cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -967,8 +1173,8 @@ void divide_unsigned_helper(cpp_int_backend& result, c return; } - typename cpp_int_backend::const_limb_pointer px = x.limbs(); - typename cpp_int_backend::const_limb_pointer py = y.limbs(); + typename cpp_int_backend::const_limb_pointer px = x.limbs(); + typename cpp_int_backend::const_limb_pointer py = y.limbs(); limb_type r_order = x.size() - 1; if((r_order == 0) && (*px == 0)) @@ -995,7 +1201,7 @@ void divide_unsigned_helper(cpp_int_backend& result, c } } - cpp_int_backend t; + cpp_int_backend t; bool r_neg = false; // @@ -1010,9 +1216,9 @@ void divide_unsigned_helper(cpp_int_backend& result, c else if(r_order == 1) { double_limb_type a, b; - a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; + a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; b = y_order > 1 ? - (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] + (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] : py[0]; result = a / b; r = a % b; @@ -1022,8 +1228,8 @@ void divide_unsigned_helper(cpp_int_backend& result, c // prepare result: // result.resize(1 + r_order - y_order); - typename cpp_int_backend::const_limb_pointer prem = r.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer prem = r.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); for(unsigned i = 1; i < 1 + r_order - y_order; ++i) pr[i] = 0; bool first_pass = true; @@ -1041,10 +1247,10 @@ void divide_unsigned_helper(cpp_int_backend& result, c if((prem[r_order] <= py[y_order]) && (r_order > 0)) { double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; b = py[y_order]; v = a / b; - if(v > cpp_int_backend::max_limb_value) + if(v > cpp_int_backend::max_limb_value) guess = 1; else { @@ -1059,8 +1265,8 @@ void divide_unsigned_helper(cpp_int_backend& result, c else { double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; - b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); v = a / b; guess = static_cast(v); } @@ -1082,7 +1288,7 @@ void divide_unsigned_helper(cpp_int_backend& result, c subtract(result, t); } } - else if(cpp_int_backend::max_limb_value - pr[shift] > guess) + else if(cpp_int_backend::max_limb_value - pr[shift] > guess) pr[shift] += guess; else { @@ -1098,14 +1304,14 @@ void divide_unsigned_helper(cpp_int_backend& result, c // double_limb_type carry = 0; t.resize(y.size() + shift + 1); - typename cpp_int_backend::limb_pointer pt = t.limbs(); + typename cpp_int_backend::limb_pointer pt = t.limbs(); for(unsigned i = 0; i < shift; ++i) pt[i] = 0; for(unsigned i = 0; i < y.size(); ++i) { carry += static_cast(py[i]) * static_cast(guess); pt[i + shift] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } if(carry) { @@ -1156,19 +1362,19 @@ void divide_unsigned_helper(cpp_int_backend& result, c BOOST_ASSERT(r.compare_unsigned(y) < 0); // remainder must be less than the divisor or our code has failed } -template -void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) +template +void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) { if((&result == &x) || (&r == &x)) { - cpp_int_backend t(x); + cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } if(&result == &r) { - cpp_int_backend rem; + cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -1192,7 +1398,7 @@ void divide_unsigned_helper(cpp_int_backend& result, c // r = x; r.sign(false); - typename cpp_int_backend::limb_pointer pr = r.limbs(); + typename cpp_int_backend::limb_pointer pr = r.limbs(); if((r_order == 0) && (*pr == 0)) { @@ -1223,7 +1429,7 @@ void divide_unsigned_helper(cpp_int_backend& result, c else if(r_order == 1) { double_limb_type a; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; result = a / y; result.sign(x.sign()); r = a % y; @@ -1232,7 +1438,7 @@ void divide_unsigned_helper(cpp_int_backend& result, c } result.resize(r_order + 1); - typename cpp_int_backend::limb_pointer pres = result.limbs(); + typename cpp_int_backend::limb_pointer pres = result.limbs(); pres[r_order] = 0; // just in case we don't set the most significant limb below. do @@ -1243,7 +1449,7 @@ void divide_unsigned_helper(cpp_int_backend& result, c if((pr[r_order] < y) && r_order) { double_limb_type a, b; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; b = a % y; r.resize(r.size() - 1); --r_order; @@ -1269,90 +1475,90 @@ void divide_unsigned_helper(cpp_int_backend& result, c BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed } -template -inline void divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(result, a, b, r); result.sign(a.sign() != b.sign()); } -template -inline void divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(result, a, b, r); } -template -inline void divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(result, a, std::abs(b), r); if(b < 0) result.negate(); } -template -inline void divide(cpp_int_backend& result, const cpp_int_backend& b) +template +inline void divide(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); divide(result, a, b); } -template -inline void divide(cpp_int_backend& result, limb_type b) +template +inline void divide(cpp_int_backend& result, limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); divide(result, a, b); } -template -inline void divide(cpp_int_backend& result, signed_limb_type b) +template +inline void divide(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); divide(result, a, b); } -template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(r, a, b, result); result.sign(a.sign()); } -template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(r, a, b, result); } -template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(r, a, static_cast(std::abs(b)), result); } -template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& b) +template +inline void modulus(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); modulus(result, a, b); } -template -inline void modulus(cpp_int_backend& result, limb_type b) +template +inline void modulus(cpp_int_backend& result, limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); modulus(result, a, b); } -template -inline void modulus(cpp_int_backend& result, signed_limb_type b) +template +inline void modulus(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); modulus(result, a, b); } -template -void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) +template +void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) { // // There are 4 cases: @@ -1371,8 +1577,8 @@ void bitwise_op(cpp_int_backend& result, const cpp_int unsigned m, x; minmax(rs, os, m, x); result.resize(x); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::const_limb_pointer po = o.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer po = o.limbs(); for(unsigned i = rs; i < x; ++i) pr[i] = 0; @@ -1395,13 +1601,13 @@ void bitwise_op(cpp_int_backend& result, const cpp_int { carry += static_cast(~po[i]); pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { carry += static_cast(~limb_type(0)); pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: carry += static_cast(~limb_type(0)); @@ -1418,13 +1624,13 @@ void bitwise_op(cpp_int_backend& result, const cpp_int { carry += static_cast(~pr[i]); pr[i] = op(static_cast(carry), po[i]); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { carry += static_cast(~pr[i]); pr[i] = op(static_cast(carry), limb_type(0)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: carry += static_cast(~limb_type(0)); @@ -1440,16 +1646,16 @@ void bitwise_op(cpp_int_backend& result, const cpp_int r_carry += static_cast(~pr[i]); o_carry += static_cast(~po[i]); pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { r_carry += static_cast(~pr[i]); o_carry += static_cast(~limb_type(0)); pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: r_carry += static_cast(~limb_type(0)); @@ -1468,106 +1674,179 @@ void bitwise_op(cpp_int_backend& result, const cpp_int { carry += static_cast(~pr[i]); pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } } else result.sign(false); - // - // Strip leading zeros: - // - while((result.size() > 1) && (result.limbs()[result.size()-1] == 0)) - result.resize(result.size()-1); + + result.normalize(); } struct bit_and{ limb_type operator()(limb_type a, limb_type b)const{ return a & b; } }; struct bit_or{ limb_type operator()(limb_type a, limb_type b)const{ return a | b; } }; struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const{ return a ^ b; } }; -template -inline void bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) +template +inline void bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) { bitwise_op(result, o, bit_and()); } #if 0 -template -inline void bitwise_and(cpp_int_backend& result, limb_type o) +template +inline void bitwise_and(cpp_int_backend& result, limb_type o) { - result.data()[cpp_int_backend::limb_count - 1] &= o; - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) + result.data()[cpp_int_backend::limb_count - 1] &= o; + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) result.data()[i] = 0; } -template -inline void bitwise_and(cpp_int_backend& result, signed_limb_type o) +template +inline void bitwise_and(cpp_int_backend& result, signed_limb_type o) { - result.data()[cpp_int_backend::limb_count - 1] &= o; - limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) + result.data()[cpp_int_backend::limb_count - 1] &= o; + limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) result.data()[i] &= mask; } -template -inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) +template +inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) { - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count; ++i) + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count; ++i) result.data()[i] |= o.data()[i]; } -template -inline void bitwise_or(cpp_int_backend& result, limb_type o) +template +inline void bitwise_or(cpp_int_backend& result, limb_type o) { - result.data()[cpp_int_backend::limb_count - 1] |= o; + result.data()[cpp_int_backend::limb_count - 1] |= o; } #endif -template -inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) +template +inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) { bitwise_op(result, o, bit_or()); } -template -inline void bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) +template +inline void bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) { bitwise_op(result, o, bit_xor()); } #if 0 -template -inline void bitwise_xor(cpp_int_backend& result, limb_type o) +template +inline void bitwise_xor(cpp_int_backend& result, limb_type o) { - result.data()[cpp_int_backend::limb_count - 1] ^= o; + result.data()[cpp_int_backend::limb_count - 1] ^= o; } -template -inline void bitwise_xor(cpp_int_backend& result, signed_limb_type o) +template +inline void bitwise_xor(cpp_int_backend& result, signed_limb_type o) { - result.data()[cpp_int_backend::limb_count - 1] ^= o; - limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) + result.data()[cpp_int_backend::limb_count - 1] ^= o; + limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; + for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) result.data()[i] ^= mask; } #endif -template -inline void complement(cpp_int_backend& result, const cpp_int_backend& o) +template +inline void complement(cpp_int_backend& result, const cpp_int_backend& o) { // Increment and negate: result = o; increment(result); result.negate(); } -template -inline void left_shift(cpp_int_backend& result, double_limb_type s) +template +inline void left_shift(cpp_int_backend& result, double_limb_type s) { if(!s) return; - limb_type offset = static_cast(s / cpp_int_backend::limb_bits); - limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + + if(offset > cpp_int_backend::internal_limb_count) + { + result = static_cast(0); + return; + } unsigned ors = result.size(); if((ors == 1) && (!*result.limbs())) return; // shifting zero yields zero. unsigned rs = ors; - if(shift && (result.limbs()[rs - 1] >> (cpp_int_backend::limb_bits - shift))) + if(shift && (result.limbs()[rs - 1] >> (cpp_int_backend::limb_bits - shift))) ++rs; // Most significant limb will overflow when shifted rs += offset; result.resize(rs); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + bool truncated = result.size() != rs; + if(truncated) + rs = result.size(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + + unsigned i = 0; + if(shift) + { + // This code only works when shift is non-zero, otherwise we invoke undefined behaviour! + i = 0; + if(!truncated) + { + if(rs > ors) + { + pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); + --rs; + } + else + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + if(ors > 1) + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + ++i; + } + } + for(; ors > 1 + i; ++i) + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + } + if(ors >= 1 + i) + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + ++i; + } + for(; i < rs; ++i) + pr[rs - 1 - i] = 0; + } + else + { + for(; i < ors; ++i) + pr[rs - 1 - i] = pr[ors - 1 - i]; + for(; i < rs; ++i) + pr[rs - 1 - i] = 0; + } + // + // We may have shifted off the end and have leading zeros: + // + if(truncated) + { + result.normalize(); + } +} +template +inline void left_shift(cpp_int_backend& result, double_limb_type s) +{ + if(!s) + return; + + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + + unsigned ors = result.size(); + if((ors == 1) && (!*result.limbs())) + return; // shifting zero yields zero. + unsigned rs = ors; + if(shift && (result.limbs()[rs - 1] >> (cpp_int_backend::limb_bits - shift))) + ++rs; // Most significant limb will overflow when shifted + rs += offset; + result.resize(rs); + typename cpp_int_backend::limb_pointer pr = result.limbs(); unsigned i = 0; if(shift) @@ -1576,20 +1855,20 @@ inline void left_shift(cpp_int_backend& result, double i = 0; if(rs > ors) { - pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); + pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); --rs; } else { pr[rs - 1 - i] = pr[ors - 1 - i] << shift; if(ors > 1) - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); ++i; } for(; ors > 1 + i; ++i) { pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); } if(ors >= 1 + i) { @@ -1607,14 +1886,14 @@ inline void left_shift(cpp_int_backend& result, double pr[rs - 1 - i] = 0; } } -template -inline void right_shift(cpp_int_backend& result, double_limb_type s) +template +inline void right_shift(cpp_int_backend& result, double_limb_type s) { if(!s) return; - limb_type offset = static_cast(s / cpp_int_backend::limb_bits); - limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); unsigned ors = result.size(); unsigned rs = ors; if(offset >= rs) @@ -1623,7 +1902,7 @@ inline void right_shift(cpp_int_backend& result, doubl return; } rs -= offset; - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); if((pr[ors - 1] >> shift) == 0) --rs; if(rs == 0) @@ -1638,7 +1917,7 @@ inline void right_shift(cpp_int_backend& result, doubl for(; i + offset + 1 < ors; ++i) { pr[i] = pr[i + offset] >> shift; - pr[i] |= pr[i + offset + 1] << (cpp_int_backend::limb_bits - shift); + pr[i] |= pr[i + offset + 1] << (cpp_int_backend::limb_bits - shift); } pr[i] = pr[i + offset] >> shift; } @@ -1661,15 +1940,15 @@ inline Integer negate_integer(Integer i, const mpl::false_&) return ~--i; } -template -inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) +template +inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) { *result = static_cast(backend.limbs()[0]); - unsigned shift = cpp_int_backend::limb_bits; + unsigned shift = cpp_int_backend::limb_bits; for(unsigned i = 1; i < backend.size(); ++i) { *result += static_cast(backend.limbs()[i]) << shift; - shift += cpp_int_backend::limb_bits; + shift += cpp_int_backend::limb_bits; if(shift > static_cast(std::numeric_limits::digits)) break; } @@ -1679,28 +1958,28 @@ inline typename enable_if, void>::type convert_to(R* result, cons } } -template -inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) +template +inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) { - typename cpp_int_backend::const_limb_pointer p = backend.limbs(); - unsigned shift = cpp_int_backend::limb_bits; + typename cpp_int_backend::const_limb_pointer p = backend.limbs(); + unsigned shift = cpp_int_backend::limb_bits; *result = static_cast(*p); for(unsigned i = 1; i < backend.size(); ++i) { *result += static_cast(std::ldexp(static_cast(p[i]), shift)); - shift += cpp_int_backend::limb_bits; + shift += cpp_int_backend::limb_bits; } if(backend.sign()) *result = -*result; } -template -inline bool is_zero(const cpp_int_backend& val) +template +inline bool is_zero(const cpp_int_backend& val) { return (val.size() == 1) && (val.limbs()[0] == 0); } -template -inline int get_sign(const cpp_int_backend& val) +template +inline int get_sign(const cpp_int_backend& val) { return is_zero(val) ? 0 : val.sign() ? -1 : 1; } @@ -1709,8 +1988,8 @@ namespace detail{ // // Get the location of the least-significant-bit: // -template -inline unsigned get_lsb(const cpp_int_backend& a) +template +inline unsigned get_lsb(const cpp_int_backend& a) { BOOST_ASSERT(get_sign(a) != 0); @@ -1731,17 +2010,17 @@ inline unsigned get_lsb(const cpp_int_backend& a) ++result; } - return result + index * cpp_int_backend::limb_bits; + return result + index * cpp_int_backend::limb_bits; } } -template -inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { int shift; - cpp_int_backend u(a), v(b); + cpp_int_backend u(a), v(b); int s = get_sign(u); @@ -1796,10 +2075,10 @@ inline void eval_gcd(cpp_int_backend& result, const cp left_shift(result, shift); } -template -inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { - cpp_int_backend t; + cpp_int_backend t; eval_gcd(t, a, b); if(is_zero(t)) @@ -1815,8 +2094,8 @@ inline void eval_lcm(cpp_int_backend& result, const cp result.negate(); } -template -struct number_category > : public mpl::int_{}; +template +struct number_category > : public mpl::int_{}; typedef mp_number > cpp_int; typedef rational_adapter > cpp_rational_backend; @@ -1827,10 +2106,10 @@ typedef mp_number cpp_rational; namespace std{ -template -class numeric_limits > > +template +class numeric_limits > > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; @@ -1877,6 +2156,165 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +template +class numeric_limits > > +{ + typedef boost::multiprecision::mp_number > number_type; + + struct inititializer + { + inititializer() + { + (std::numeric_limits::max)(); + (std::numeric_limits::min)(); + } + void do_nothing()const{} + }; + + static const inititializer init; + +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + static number_type (min)() BOOST_MP_NOEXCEPT + { + return -(max)(); + } + static number_type (max)() BOOST_MP_NOEXCEPT + { + typedef typename number_type::backend_type backend_type; + init.do_nothing(); + static bool init = false; + static number_type val; + if(!init) + { + boost::multiprecision::limb_type l = ~static_cast(0); + unsigned c = MinBits / backend_type::limb_bits + (MinBits % backend_type::limb_bits ? 1 : 0); + for(unsigned i = 0; i < c; ++i) + { + val <<= backend_type::limb_bits; + val |= l; + } + init = true; + } + return val; + } + static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR int digits = MinBits; + BOOST_STATIC_CONSTEXPR int digits10 = static_cast(MinBits * 301L / 1000L); + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + static number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } + static number_type round_error() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + static number_type infinity() BOOST_MP_NOEXCEPT { return 0; } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = true; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +template +const typename numeric_limits > >::inititializer numeric_limits > >::init; + +template +class numeric_limits > > +{ + typedef boost::multiprecision::mp_number > number_type; + + struct inititializer + { + inititializer() + { + (std::numeric_limits::max)(); + } + void do_nothing()const{} + }; + + static const inititializer init; + +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + static number_type (min)() BOOST_MP_NOEXCEPT + { + return number_type(0); + } + static number_type (max)() BOOST_MP_NOEXCEPT + { + typedef typename number_type::backend_type backend_type; + init.do_nothing(); + static bool init = false; + static number_type val(0); + if(!init) + { + boost::multiprecision::limb_type l = ~static_cast(0); + unsigned c = MinBits / backend_type::limb_bits + (MinBits % backend_type::limb_bits ? 1 : 0); + for(unsigned i = 0; i < c; ++i) + { + val <<= backend_type::limb_bits; + val |= l; + } + init = true; + } + return val; + } + static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR int digits = MinBits; + BOOST_STATIC_CONSTEXPR int digits10 = static_cast(MinBits * 301L / 1000L); + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; + BOOST_STATIC_CONSTEXPR bool is_signed = false; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + static number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } + static number_type round_error() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + static number_type infinity() BOOST_MP_NOEXCEPT { return 0; } + static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } + static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } + static number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = true; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +template +const typename numeric_limits > >::inititializer numeric_limits > >::init; + } #endif diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index eb2a7de0..5d5d47ea 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1047,6 +1047,8 @@ int main() #endif #ifdef TEST_CPP_INT test(); + test > >(); + test > >(); #endif #ifdef TEST_CPP_INT_BR test(); diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index ee6bcde2..ee83b641 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -51,10 +51,11 @@ T generate_random(unsigned bits_wanted) return val; } -int main() +template +void test() { using namespace boost::multiprecision; - typedef cpp_int packed_type; + typedef Number test_type; unsigned last_error_count = 0; for(int i = 0; i < 1000; ++i) { @@ -65,77 +66,77 @@ int main() int si = d.convert_to(); - packed_type a1 = a.str(); - packed_type b1 = b.str(); - packed_type c1 = c.str(); - packed_type d1 = d.str(); + test_type a1 = a.str(); + test_type b1 = b.str(); + test_type c1 = c.str(); + test_type d1 = d.str(); BOOST_CHECK_EQUAL(a.str(), a1.str()); BOOST_CHECK_EQUAL(b.str(), b1.str()); BOOST_CHECK_EQUAL(c.str(), c1.str()); BOOST_CHECK_EQUAL(d.str(), d1.str()); - BOOST_CHECK_EQUAL(mpz_int(a+b).str(), packed_type(a1 + b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a-b).str(), packed_type(a1 - b1).str()); - BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)+b).str(), packed_type(packed_type(-a1) + b1).str()); - BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)-b).str(), packed_type(packed_type(-a1) - b1).str()); - BOOST_CHECK_EQUAL(mpz_int(c * d).str(), packed_type(c1 * d1).str()); - BOOST_CHECK_EQUAL(mpz_int(c * -d).str(), packed_type(c1 * -d1).str()); - BOOST_CHECK_EQUAL(mpz_int(-c * d).str(), packed_type(-c1 * d1).str()); - BOOST_CHECK_EQUAL(mpz_int(b * c).str(), packed_type(b1 * c1).str()); - BOOST_CHECK_EQUAL(mpz_int(a / b).str(), packed_type(a1 / b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a / -b).str(), packed_type(a1 / -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a / b).str(), packed_type(-a1 / b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a / d).str(), packed_type(a1 / d1).str()); - BOOST_CHECK_EQUAL(mpz_int(a % b).str(), packed_type(a1 % b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a % -b).str(), packed_type(a1 % -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a % b).str(), packed_type(-a1 % b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a % d).str(), packed_type(a1 % d1).str()); + BOOST_CHECK_EQUAL(mpz_int(a+b).str(), test_type(a1 + b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a-b).str(), test_type(a1 - b1).str()); + BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)+b).str(), test_type(test_type(-a1) + b1).str()); + BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)-b).str(), test_type(test_type(-a1) - b1).str()); + BOOST_CHECK_EQUAL(mpz_int(c * d).str(), test_type(c1 * d1).str()); + BOOST_CHECK_EQUAL(mpz_int(c * -d).str(), test_type(c1 * -d1).str()); + BOOST_CHECK_EQUAL(mpz_int(-c * d).str(), test_type(-c1 * d1).str()); + BOOST_CHECK_EQUAL(mpz_int(b * c).str(), test_type(b1 * c1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / b).str(), test_type(a1 / b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / -b).str(), test_type(a1 / -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a / b).str(), test_type(-a1 / b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / d).str(), test_type(a1 / d1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % b).str(), test_type(a1 % b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % -b).str(), test_type(a1 % -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a % b).str(), test_type(-a1 % b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a % d).str(), test_type(a1 % d1).str()); // bitwise ops: - BOOST_CHECK_EQUAL(mpz_int(a|b).str(), packed_type(a1 | b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a|b).str(), packed_type(-a1 | b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a|-b).str(), packed_type(a1 | -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a|-b).str(), packed_type(-a1 | -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a&b).str(), packed_type(a1 & b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a&b).str(), packed_type(-a1 & b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a&-b).str(), packed_type(a1 & -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a&-b).str(), packed_type(-a1 & -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a^b).str(), packed_type(a1 ^ b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a^b).str(), packed_type(-a1 ^ b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a^-b).str(), packed_type(a1 ^ -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a^-b).str(), packed_type(-a1 ^ -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a|b).str(), test_type(a1 | b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a|b).str(), test_type(-a1 | b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a|-b).str(), test_type(a1 | -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a|-b).str(), test_type(-a1 | -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a&b).str(), test_type(a1 & b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a&b).str(), test_type(-a1 & b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a&-b).str(), test_type(a1 & -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a&-b).str(), test_type(-a1 & -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a^b).str(), test_type(a1 ^ b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a^b).str(), test_type(-a1 ^ b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a^-b).str(), test_type(a1 ^ -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a^-b).str(), test_type(-a1 ^ -b1).str()); // Now check operations involving integers: - BOOST_CHECK_EQUAL(mpz_int(a + si).str(), packed_type(a1 + si).str()); - BOOST_CHECK_EQUAL(mpz_int(a + -si).str(), packed_type(a1 + -si).str()); - BOOST_CHECK_EQUAL(mpz_int(-a + si).str(), packed_type(-a1 + si).str()); - BOOST_CHECK_EQUAL(mpz_int(si + a).str(), packed_type(si + a1).str()); - BOOST_CHECK_EQUAL(mpz_int(a - si).str(), packed_type(a1 - si).str()); - BOOST_CHECK_EQUAL(mpz_int(a - -si).str(), packed_type(a1 - -si).str()); - BOOST_CHECK_EQUAL(mpz_int(-a - si).str(), packed_type(-a1 - si).str()); - BOOST_CHECK_EQUAL(mpz_int(si - a).str(), packed_type(si - a1).str()); - BOOST_CHECK_EQUAL(mpz_int(b * si).str(), packed_type(b1 * si).str()); - BOOST_CHECK_EQUAL(mpz_int(b * -si).str(), packed_type(b1 * -si).str()); - BOOST_CHECK_EQUAL(mpz_int(-b * si).str(), packed_type(-b1 * si).str()); - BOOST_CHECK_EQUAL(mpz_int(si * b).str(), packed_type(si * b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a / si).str(), packed_type(a1 / si).str()); - BOOST_CHECK_EQUAL(mpz_int(a / -si).str(), packed_type(a1 / -si).str()); - BOOST_CHECK_EQUAL(mpz_int(-a / si).str(), packed_type(-a1 / si).str()); - BOOST_CHECK_EQUAL(mpz_int(a % si).str(), packed_type(a1 % si).str()); - BOOST_CHECK_EQUAL(mpz_int(a % -si).str(), packed_type(a1 % -si).str()); - BOOST_CHECK_EQUAL(mpz_int(-a % si).str(), packed_type(-a1 % si).str()); - BOOST_CHECK_EQUAL(mpz_int(a|si).str(), packed_type(a1 | si).str()); - BOOST_CHECK_EQUAL(mpz_int(a&si).str(), packed_type(a1 & si).str()); - BOOST_CHECK_EQUAL(mpz_int(a^si).str(), packed_type(a1 ^ si).str()); - BOOST_CHECK_EQUAL(mpz_int(si|a).str(), packed_type(si|a1).str()); - BOOST_CHECK_EQUAL(mpz_int(si&a).str(), packed_type(si&a1).str()); - BOOST_CHECK_EQUAL(mpz_int(si^a).str(), packed_type(si^a1).str()); - BOOST_CHECK_EQUAL(mpz_int(gcd(a, b)).str(), packed_type(gcd(a1, b1)).str()); - BOOST_CHECK_EQUAL(mpz_int(lcm(c, d)).str(), packed_type(lcm(c1, d1)).str()); - BOOST_CHECK_EQUAL(mpz_int(gcd(-a, b)).str(), packed_type(gcd(-a1, b1)).str()); - BOOST_CHECK_EQUAL(mpz_int(lcm(-c, d)).str(), packed_type(lcm(-c1, d1)).str()); - BOOST_CHECK_EQUAL(mpz_int(gcd(-a, -b)).str(), packed_type(gcd(-a1, -b1)).str()); - BOOST_CHECK_EQUAL(mpz_int(lcm(-c, -d)).str(), packed_type(lcm(-c1, -d1)).str()); - BOOST_CHECK_EQUAL(mpz_int(gcd(a, -b)).str(), packed_type(gcd(a1, -b1)).str()); - BOOST_CHECK_EQUAL(mpz_int(lcm(c, -d)).str(), packed_type(lcm(c1, -d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(a + si).str(), test_type(a1 + si).str()); + BOOST_CHECK_EQUAL(mpz_int(a + -si).str(), test_type(a1 + -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a + si).str(), test_type(-a1 + si).str()); + BOOST_CHECK_EQUAL(mpz_int(si + a).str(), test_type(si + a1).str()); + BOOST_CHECK_EQUAL(mpz_int(a - si).str(), test_type(a1 - si).str()); + BOOST_CHECK_EQUAL(mpz_int(a - -si).str(), test_type(a1 - -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a - si).str(), test_type(-a1 - si).str()); + BOOST_CHECK_EQUAL(mpz_int(si - a).str(), test_type(si - a1).str()); + BOOST_CHECK_EQUAL(mpz_int(b * si).str(), test_type(b1 * si).str()); + BOOST_CHECK_EQUAL(mpz_int(b * -si).str(), test_type(b1 * -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-b * si).str(), test_type(-b1 * si).str()); + BOOST_CHECK_EQUAL(mpz_int(si * b).str(), test_type(si * b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a / si).str(), test_type(a1 / si).str()); + BOOST_CHECK_EQUAL(mpz_int(a / -si).str(), test_type(a1 / -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a / si).str(), test_type(-a1 / si).str()); + BOOST_CHECK_EQUAL(mpz_int(a % si).str(), test_type(a1 % si).str()); + BOOST_CHECK_EQUAL(mpz_int(a % -si).str(), test_type(a1 % -si).str()); + BOOST_CHECK_EQUAL(mpz_int(-a % si).str(), test_type(-a1 % si).str()); + BOOST_CHECK_EQUAL(mpz_int(a|si).str(), test_type(a1 | si).str()); + BOOST_CHECK_EQUAL(mpz_int(a&si).str(), test_type(a1 & si).str()); + BOOST_CHECK_EQUAL(mpz_int(a^si).str(), test_type(a1 ^ si).str()); + BOOST_CHECK_EQUAL(mpz_int(si|a).str(), test_type(si|a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si&a).str(), test_type(si&a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si^a).str(), test_type(si^a1).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(a, b)).str(), test_type(gcd(a1, b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(c, d)).str(), test_type(lcm(c1, d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(-a, b)).str(), test_type(gcd(-a1, b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(-c, d)).str(), test_type(lcm(-c1, d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(-a, -b)).str(), test_type(gcd(-a1, -b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(-c, -d)).str(), test_type(lcm(-c1, -d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(a, -b)).str(), test_type(gcd(a1, -b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(c, -d)).str(), test_type(lcm(c1, -d1)).str()); if(last_error_count != boost::detail::test_errors()) { last_error_count = boost::detail::test_errors(); @@ -155,9 +156,9 @@ int main() std::cout << "a - b = " << a-b << std::endl; std::cout << "a1 - b1 = " << a1-b1 << std::endl; std::cout << "-a + b = " << mpz_int(-a)+b << std::endl; - std::cout << "-a1 + b1 = " << packed_type(-a1)+b1 << std::endl; + std::cout << "-a1 + b1 = " << test_type(-a1)+b1 << std::endl; std::cout << "-a - b = " << mpz_int(-a)-b << std::endl; - std::cout << "-a1 - b1 = " << packed_type(-a1)-b1 << std::endl; + std::cout << "-a1 - b1 = " << test_type(-a1)-b1 << std::endl; std::cout << "c*d = " << c*d << std::endl; std::cout << "c1*d1 = " << c1*d1 << std::endl; std::cout << "b*c = " << b*c << std::endl; @@ -172,6 +173,13 @@ int main() std::cout << "a1%d1 = " << a1%d1 << std::endl; } } +} + +int main() +{ + using namespace boost::multiprecision; + test(); + test > >(); return boost::report_errors(); } diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index ddec4db1..3d988fc1 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -134,8 +134,17 @@ void test() std::cout << "numeric_limits values for type " << typeid(Number).name() << std::endl; PRINT(is_specialized); - PRINT(min()); + if(std::numeric_limits::is_integer) + { + std::cout << std::hex << std::showbase; + } PRINT(max()); + if(std::numeric_limits::is_integer) + { + std::cout << std::dec; + } + PRINT(max()); + PRINT(min()); #ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST PRINT(lowest()); #endif @@ -225,6 +234,8 @@ int main() #endif #ifdef TEST_CPP_INT test(); + test > >(); + test > >(); #endif return boost::report_errors(); } From c82710fee6e49074bd4ca912e60ba21eaa6b9f37 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 8 Mar 2012 13:01:36 +0000 Subject: [PATCH 123/256] Fix gcc compiler errors. [SVN r77261] --- include/boost/multiprecision/cpp_int.hpp | 89 +++++++++++++++--------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 9efa5147..f46e574b 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -46,7 +46,7 @@ public: : sizeof(limb_data) / sizeof(limb_type)); BOOST_STATIC_CONSTANT(bool, variable = true); - BOOST_STATIC_ASSERT_MESSAGE(Signed, "There is curently no support for unsigned arbitrary precision integers."); + BOOST_STATIC_ASSERT_MSG(Signed, "There is curently no support for unsigned arbitrary precision integers."); private: union data_type @@ -352,18 +352,52 @@ public: } }; +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + template struct cpp_int_backend : public cpp_int_base { + typedef cpp_int_base base_type; public: typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list float_types; cpp_int_backend(){} - cpp_int_backend(const cpp_int_backend& o) : cpp_int_base(o) {} + cpp_int_backend(const cpp_int_backend& o) : base_type(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_backend(cpp_int_backend&& o) : cpp_int_base(o) {} + cpp_int_backend(cpp_int_backend&& o) : base_type(o) {} #endif cpp_int_backend& operator = (const cpp_int_backend& o) { @@ -387,10 +421,10 @@ public: cpp_int_backend& operator = (double_limb_type i) { BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); - BOOST_STATIC_ASSERT(internal_limb_count >= 2); - limb_pointer p = limbs(); + BOOST_STATIC_ASSERT(base_type::internal_limb_count >= 2); + typename base_type::limb_pointer p = this->limbs(); *p = static_cast(i); - p[1] = static_cast(i >> limb_bits); + p[1] = static_cast(i >> base_type::limb_bits); this->resize(p[1] ? 2 : 1); this->sign(false); return *this; @@ -398,7 +432,7 @@ public: cpp_int_backend& operator = (signed_double_limb_type i) { BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); - BOOST_STATIC_ASSERT(internal_limb_count >= 2); + BOOST_STATIC_ASSERT(base_type::internal_limb_count >= 2); bool s = false; if(i < 0) { @@ -407,9 +441,9 @@ public: } else this->sign(false); - limb_pointer p = this->limbs(); + typename base_type::limb_pointer p = this->limbs(); *p = static_cast(i); - p[1] = static_cast(i >> limb_bits); + p[1] = static_cast(i >> base_type::limb_bits); resize(p[1] ? 2 : 1); this->sign(s); return *this; @@ -494,7 +528,7 @@ public: if(radix == 8 || radix == 16) { unsigned shift = radix == 8 ? 3 : 4; - unsigned block_count = limb_bits / shift; + unsigned block_count = base_type::limb_bits / shift; unsigned block_shift = shift * block_count; limb_type val, block; while(*s) @@ -509,7 +543,7 @@ public: else if(*s >= 'A' && *s <= 'F') val = 10 + *s - 'A'; else - val = max_limb_value; + val = base_type::max_limb_value; if(val > radix) { BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); @@ -524,7 +558,7 @@ public: } } left_shift(*this, block_shift); - limbs()[0] |= block; + this->limbs()[0] |= block; } } else @@ -556,7 +590,7 @@ public: } } if(isneg) - negate(); + this->negate(); return *this; } void swap(cpp_int_backend& o) @@ -572,7 +606,7 @@ public: base = 16; std::string result; - unsigned Bits = size() * limb_bits; + unsigned Bits = this->size() * base_type::limb_bits; if(base == 8 || base == 16) { @@ -624,7 +658,7 @@ public: t.negate(); neg = true; } - if(size() == 1) + if(this->size() == 1) { result = boost::lexical_cast(t.limbs()[0]); } @@ -661,25 +695,25 @@ public: } int compare(const cpp_int_backend& o)const { - if(sign() != o.sign()) - return sign() ? -1 : 1; + if(this->sign() != o.sign()) + return this->sign() ? -1 : 1; int result = 0; // Only do the compare if the same sign: result = compare_unsigned(o); - if(sign()) + if(this->sign()) result = -result; return result; } int compare_unsigned(const cpp_int_backend& o)const { - if(size() != o.size()) + if(this->size() != o.size()) { - return size() > o.size() ? 1 : -1; + return this->size() > o.size() ? 1 : -1; } - const_limb_pointer pa = limbs(); - const_limb_pointer pb = o.limbs(); - for(int i = size() - 1; i >= 0; --i) + typename base_type::const_limb_pointer pa = this->limbs(); + typename base_type::const_limb_pointer pb = o.limbs(); + for(int i = this->size() - 1; i >= 0; --i) { if(pa[i] != pb[i]) return pa[i] > pb[i] ? 1 : -1; @@ -696,15 +730,6 @@ public: } }; -template -const unsigned cpp_int_backend::limb_bits; -template -const limb_type cpp_int_backend::max_limb_value; -template -const limb_type cpp_int_backend::sign_bit_mask; -template -const unsigned cpp_int_backend::internal_limb_count; - template inline void add(cpp_int_backend& result, const cpp_int_backend& o) From 78cfa00b07fb4bad113a85e8e1df620d0c6590b5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 8 Mar 2012 13:17:13 +0000 Subject: [PATCH 124/256] Fix Clang failure. [SVN r77262] --- include/boost/multiprecision/cpp_int.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index f46e574b..20dab2ee 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -444,7 +444,7 @@ public: typename base_type::limb_pointer p = this->limbs(); *p = static_cast(i); p[1] = static_cast(i >> base_type::limb_bits); - resize(p[1] ? 2 : 1); + this->resize(p[1] ? 2 : 1); this->sign(s); return *this; } From b680077687ad6a13055e19e3610d0830362452de Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 8 Mar 2012 16:56:32 +0000 Subject: [PATCH 125/256] enable 128-bit arithmetic on x64 systems. [SVN r77265] --- include/boost/multiprecision/cpp_int.hpp | 6 +- .../multiprecision/detail/cpp_int_core.hpp | 21 + include/boost/multiprecision/fixed_int.hpp | 12 +- performance/performance_test-gcc-linux.log | 1045 ++++++++--------- performance/performance_test-intel-linux.log | 811 ++++++------- performance/performance_test.cpp | 5 + 6 files changed, 881 insertions(+), 1019 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 20dab2ee..6c0addf1 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -961,7 +961,7 @@ inline void subtract_unsigned(cpp_int_backend& resul } else if(c == 0) { - result = 0; + result = static_cast(0); return; } @@ -1092,7 +1092,7 @@ inline void multiply(cpp_int_backend& result, cpp_in { if(!val) { - result = 0; + result = static_cast(0); return; } double_limb_type carry = 0; @@ -2108,7 +2108,7 @@ inline void eval_lcm(cpp_int_backend& result, const if(is_zero(t)) { - result = 0; + result = static_cast(0); } else { diff --git a/include/boost/multiprecision/detail/cpp_int_core.hpp b/include/boost/multiprecision/detail/cpp_int_core.hpp index 338eab26..63d9efbf 100644 --- a/include/boost/multiprecision/detail/cpp_int_core.hpp +++ b/include/boost/multiprecision/detail/cpp_int_core.hpp @@ -8,6 +8,25 @@ namespace boost{ namespace multiprecision{ +#if defined(__GNUC__) && !defined(BOOST_INTEL) && defined(__x86_64__) + +typedef boost::uint64_t limb_type; +typedef boost::int64_t signed_limb_type; +typedef unsigned __int128 double_limb_type; +typedef __int128 signed_double_limb_type; +static const limb_type max_block_10 = 1000000000000000000uLL; +static const limb_type digits_per_block_10 = 18; + +inline limb_type block_multiplier(unsigned count) +{ + static const limb_type values[digits_per_block_10] + = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000, 100000000000000000, 1000000000000000000 }; + BOOST_ASSERT(count < digits_per_block_10); + return values[count]; +} + +#else + typedef boost::uint32_t limb_type; typedef boost::int32_t signed_limb_type; typedef boost::uint64_t double_limb_type; @@ -23,6 +42,8 @@ inline limb_type block_multiplier(unsigned count) return values[count]; } +#endif + template inline void minmax(const T& a, const T& b, T& aa, T& bb) { diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index d183b6dd..1127079d 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -30,7 +30,7 @@ struct fixed_int BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); BOOST_STATIC_CONSTANT(limb_type, upper_limb_mask = (Bits % limb_bits ? (1 << (Bits % limb_bits)) - 1 : max_limb_value)); BOOST_STATIC_CONSTANT(limb_type, upper_limb_not_mask = ~upper_limb_mask); - BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << ((Bits % limb_bits ? Bits % limb_bits : limb_bits) - 1)); + BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = limb_type(1u) << ((Bits % limb_bits ? Bits % limb_bits : limb_bits) - 1)); typedef boost::array data_type; fixed_int(){} @@ -427,7 +427,7 @@ inline void subtract(fixed_int& result, const limb_type& o) carry >>= fixed_int::limb_bits; for(int i = static_cast(fixed_int::limb_count) - 2; (carry != 1) && (i >= 0); --i) { - carry += static_cast(result.data()[i]) + 0xFFFFFFFF; + carry += static_cast(result.data()[i]) + fixed_int::max_limb_value; result.data()[i] = static_cast(carry); carry >>= fixed_int::limb_bits; } @@ -748,7 +748,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1] % y.data()[fixed_int::limb_count - 1]; return; } - else if(r_order == static_cast(fixed_int::limb_count) - 2) + else if(r_order == static_cast(fixed_int::limb_count) - 2) { double_limb_type a, b; a = (static_cast(r.data()[r_order]) << fixed_int::limb_bits) | r.data()[r_order + 1]; @@ -1335,7 +1335,7 @@ template inline typename enable_if, void>::type convert_to(R* result, const fixed_int& backend, const mpl::false_&) { unsigned shift = (fixed_int::limb_count - 1) * fixed_int::limb_bits; - *result = 0; + *result = static_cast(0); for(unsigned i = 0; i < fixed_int::limb_count; ++i) { *result += static_cast(backend.data()[i]) << shift; @@ -1362,7 +1362,7 @@ inline typename enable_if, void>::type convert_to(R* result return; } unsigned shift = (fixed_int::limb_count - 1) * fixed_int::limb_bits; - *result = 0; + *result = static_cast(0); for(unsigned i = 0; i < fixed_int::limb_count; ++i) { *result += static_cast(std::ldexp(static_cast(backend.data()[i]), shift)); @@ -1490,7 +1490,7 @@ inline void eval_lcm(fixed_int& result, const fixed_int(0); } else { diff --git a/performance/performance_test-gcc-linux.log b/performance/performance_test-gcc-linux.log index 8ef6ee7b..4fc1d067 100644 --- a/performance/performance_test-gcc-linux.log +++ b/performance/performance_test-gcc-linux.log @@ -1,621 +1,542 @@ -gmp_float 50 + 0.0172634 -gmp_float 50 - 0.0190593 -gmp_float 50 * 0.0496313 -gmp_float 50 / 0.270376 -gmp_float 50 str 0.00338283 -gmp_float 50 +(int)0.0107627 -gmp_float 50 -(int)0.0189185 -gmp_float 50 *(int)0.0161546 -gmp_float 50 /(int)0.0751156 -gmp_float 100 + 0.0189236 -gmp_float 100 - 0.0210418 -gmp_float 100 * 0.0892922 -gmp_float 100 / 0.376385 -gmp_float 100 str 0.00695061 -gmp_float 100 +(int)0.0120513 -gmp_float 100 -(int)0.0198354 -gmp_float 100 *(int)0.0195997 -gmp_float 100 /(int)0.0947924 -gmp_float 500 + 0.0301919 -gmp_float 500 - 0.0323239 -gmp_float 500 * 0.870235 -gmp_float 500 / 1.42311 -gmp_float 500 str 0.0313911 -gmp_float 500 +(int)0.0179283 -gmp_float 500 -(int)0.0258331 -gmp_float 500 *(int)0.0407228 -gmp_float 500 /(int)0.231398 -gmp_int 64 + 0.0169318 -gmp_int 64 - 0.0173731 -gmp_int 64 * 0.0113175 -gmp_int 64 / 0.169581 -gmp_int 64 str 0.000400819 -gmp_int 64 +(int)0.00684333 -gmp_int 64 -(int)0.00707918 -gmp_int 64 *(int)0.00855311 -gmp_int 64 /(int)0.0451154 -gmp_int 64 % 0.157075 -gmp_int 64 | 0.00932794 -gmp_int 64 & 0.00932918 -gmp_int 64 ^ 0.00974691 -gmp_int 64 << 0.00891992 -gmp_int 64 >> 0.00890735 -gmp_int 64 %(int)0.0278521 -gmp_int 64 |(int)0.0381401 -gmp_int 64 &(int)0.039882 -gmp_int 64 ^(int)0.0387007 -gmp_int 128 + 0.0187076 -gmp_int 128 - 0.0183551 -gmp_int 128 * 0.0156906 -gmp_int 128 / 0.191252 -gmp_int 128 str 0.000364851 -gmp_int 128 +(int)0.0102801 -gmp_int 128 -(int)0.00860256 -gmp_int 128 *(int)0.0114853 -gmp_int 128 /(int)0.0523559 -gmp_int 128 % 0.15528 -gmp_int 128 | 0.0103394 -gmp_int 128 & 0.0110643 -gmp_int 128 ^ 0.0109019 -gmp_int 128 << 0.00971087 -gmp_int 128 >> 0.00747274 -gmp_int 128 %(int)0.0344314 -gmp_int 128 |(int)0.0397332 -gmp_int 128 &(int)0.0413597 -gmp_int 128 ^(int)0.0404831 -gmp_int 256 + 0.022606 -gmp_int 256 - 0.0247961 -gmp_int 256 * 0.0417861 -gmp_int 256 / 0.234977 -gmp_int 256 str 0.00059847 -gmp_int 256 +(int)0.0109994 -gmp_int 256 -(int)0.0115691 -gmp_int 256 *(int)0.0135361 -gmp_int 256 /(int)0.0654383 -gmp_int 256 % 0.186922 -gmp_int 256 | 0.0128787 -gmp_int 256 & 0.0126536 -gmp_int 256 ^ 0.0133999 -gmp_int 256 << 0.01177 -gmp_int 256 >> 0.00803845 -gmp_int 256 %(int)0.0470174 -gmp_int 256 |(int)0.0405797 -gmp_int 256 &(int)0.0422895 -gmp_int 256 ^(int)0.0411956 -gmp_int 512 + 0.0277407 -gmp_int 512 - 0.0314653 -gmp_int 512 * 0.09803 -gmp_int 512 / 0.267598 -gmp_int 512 str 0.00121866 -gmp_int 512 +(int)0.0135739 -gmp_int 512 -(int)0.0143368 -gmp_int 512 *(int)0.0181278 -gmp_int 512 /(int)0.0892225 -gmp_int 512 % 0.217246 -gmp_int 512 | 0.0173872 -gmp_int 512 & 0.016516 -gmp_int 512 ^ 0.0185213 -gmp_int 512 << 0.0143127 -gmp_int 512 >> 0.00949988 -gmp_int 512 %(int)0.0599828 -gmp_int 512 |(int)0.0437876 -gmp_int 512 &(int)0.0454139 -gmp_int 512 ^(int)0.0443687 -gmp_int 1024 + 0.0398652 -gmp_int 1024 - 0.0416822 -gmp_int 1024 * 0.316471 -gmp_int 1024 / 0.352869 -gmp_int 1024 str 0.00278974 -gmp_int 1024 +(int)0.0188639 -gmp_int 1024 -(int)0.0194421 -gmp_int 1024 *(int)0.0265822 -gmp_int 1024 /(int)0.140502 -gmp_int 1024 % 0.281408 -gmp_int 1024 | 0.0243975 -gmp_int 1024 & 0.0233641 -gmp_int 1024 ^ 0.0248742 -gmp_int 1024 << 0.0205595 -gmp_int 1024 >> 0.012374 -gmp_int 1024 %(int)0.075892 -gmp_int 1024 |(int)0.0475998 -gmp_int 1024 &(int)0.0492285 -gmp_int 1024 ^(int)0.0488719 -mpq_rational 64 + 0.248703 -mpq_rational 64 - 0.248085 -mpq_rational 64 * 0.415269 -mpq_rational 64 / 1.34308 -mpq_rational 64 str 0.000573396 -mpq_rational 64 +(int)0.287841 -mpq_rational 64 -(int)0.28346 -mpq_rational 64 *(int)0.310676 -mpq_rational 64 /(int)0.311221 -mpq_rational 128 + 0.525318 -mpq_rational 128 - 0.53016 -mpq_rational 128 * 0.933404 -mpq_rational 128 / 2.63133 -mpq_rational 128 str 0.000723346 -mpq_rational 128 +(int)0.144307 -mpq_rational 128 -(int)0.14385 -mpq_rational 128 *(int)0.172035 -mpq_rational 128 /(int)0.175494 -mpq_rational 256 + 2.26207 -mpq_rational 256 - 2.26907 -mpq_rational 256 * 4.28222 -mpq_rational 256 / 8.12755 -mpq_rational 256 str 0.00120085 -mpq_rational 256 +(int)0.162372 -mpq_rational 256 -(int)0.160533 -mpq_rational 256 *(int)0.192923 -mpq_rational 256 /(int)0.197356 -mpq_rational 512 + 5.07193 -mpq_rational 512 - 5.07942 -mpq_rational 512 * 9.65569 -mpq_rational 512 / 16.8657 -mpq_rational 512 str 0.00233842 -mpq_rational 512 +(int)0.197738 -mpq_rational 512 -(int)0.198744 -mpq_rational 512 *(int)0.240048 -mpq_rational 512 /(int)0.250338 -mpq_rational 1024 + 11.2925 -mpq_rational 1024 - 11.3536 -mpq_rational 1024 * 21.0382 -mpq_rational 1024 / 35.6477 -mpq_rational 1024 str 0.00549707 -mpq_rational 1024 +(int)0.269222 -mpq_rational 1024 -(int)0.267056 -mpq_rational 1024 *(int)0.324096 -mpq_rational 1024 /(int)0.338966 -tommath_int 64 + 0.0159939 -tommath_int 64 - 0.0250036 -tommath_int 64 * 0.0363444 -tommath_int 64 / 0.977073 -tommath_int 64 str 0.00445496 -tommath_int 64 +(int)0.164295 -tommath_int 64 -(int)0.162629 -tommath_int 64 *(int)0.179095 -tommath_int 64 /(int)0.842398 -tommath_int 64 % 0.977861 -tommath_int 64 | 0.0691489 -tommath_int 64 & 0.073788 -tommath_int 64 ^ 0.0709205 -tommath_int 64 << 0.0193922 -tommath_int 64 >> 0.124706 -tommath_int 64 %(int)0.727338 -tommath_int 64 |(int)0.239311 -tommath_int 64 &(int)0.217949 -tommath_int 64 ^(int)0.239579 -tommath_int 128 + 0.0164327 -tommath_int 128 - 0.0232398 -tommath_int 128 * 0.0548361 -tommath_int 128 / 1.08958 -tommath_int 128 str 0.00876306 -tommath_int 128 +(int)0.165193 -tommath_int 128 -(int)0.165879 -tommath_int 128 *(int)0.183198 -tommath_int 128 /(int)0.912304 -tommath_int 128 % 1.08174 -tommath_int 128 | 0.0704018 -tommath_int 128 & 0.0720242 -tommath_int 128 ^ 0.0707622 -tommath_int 128 << 0.0307909 -tommath_int 128 >> 0.135357 -tommath_int 128 %(int)0.838173 -tommath_int 128 |(int)0.239724 -tommath_int 128 &(int)0.216927 -tommath_int 128 ^(int)0.241914 -tommath_int 256 + 0.0186154 -tommath_int 256 - 0.0251722 -tommath_int 256 * 0.0904396 -tommath_int 256 / 1.35539 -tommath_int 256 str 0.0211627 -tommath_int 256 +(int)0.171325 -tommath_int 256 -(int)0.171589 -tommath_int 256 *(int)0.195625 -tommath_int 256 /(int)1.16415 -tommath_int 256 % 1.30947 -tommath_int 256 | 0.0732898 -tommath_int 256 & 0.0736961 -tommath_int 256 ^ 0.0734515 -tommath_int 256 << 0.038933 -tommath_int 256 >> 0.138079 -tommath_int 256 %(int)1.18164 -tommath_int 256 |(int)0.243102 -tommath_int 256 &(int)0.223836 -tommath_int 256 ^(int)0.245577 -tommath_int 512 + 0.0235136 -tommath_int 512 - 0.0288817 -tommath_int 512 * 0.192319 -tommath_int 512 / 1.91905 -tommath_int 512 str 0.0619139 -tommath_int 512 +(int)0.168344 -tommath_int 512 -(int)0.165763 -tommath_int 512 *(int)0.213072 -tommath_int 512 /(int)1.6709 -tommath_int 512 % 1.91623 -tommath_int 512 | 0.0782698 -tommath_int 512 & 0.0785497 -tommath_int 512 ^ 0.0787174 -tommath_int 512 << 0.0445723 -tommath_int 512 >> 0.148176 -tommath_int 512 %(int)1.724 -tommath_int 512 |(int)0.247972 -tommath_int 512 &(int)0.227986 -tommath_int 512 ^(int)0.245992 -tommath_int 1024 + 0.0353819 -tommath_int 1024 - 0.0411398 -tommath_int 1024 * 0.548938 -tommath_int 1024 / 3.19059 -tommath_int 1024 str 0.186976 -tommath_int 1024 +(int)0.179688 -tommath_int 1024 -(int)0.177946 -tommath_int 1024 *(int)0.257986 -tommath_int 1024 /(int)2.90617 -tommath_int 1024 % 3.17595 -tommath_int 1024 | 0.0928142 -tommath_int 1024 & 0.0989265 -tommath_int 1024 ^ 0.096274 -tommath_int 1024 << 0.0663455 -tommath_int 1024 >> 0.164607 -tommath_int 1024 %(int)2.83798 -tommath_int 1024 |(int)0.256182 -tommath_int 1024 &(int)0.241025 -tommath_int 1024 ^(int)0.258545 -fixed_int 64 + 0.00139124 -fixed_int 64 - 0.00164434 -fixed_int 64 * 0.00699488 -fixed_int 64 / 0.0516797 -fixed_int 64 str 0.000232222 -fixed_int 64 +(int)0.002316 -fixed_int 64 -(int)0.00191233 -fixed_int 64 *(int)0.00233361 -fixed_int 64 /(int)0.0232935 -fixed_int 64 % 0.0534904 -fixed_int 64 | 0.00176279 -fixed_int 64 & 0.00177991 -fixed_int 64 ^ 0.00173416 -fixed_int 64 << 0.000672222 -fixed_int 64 >> 0.000779919 -fixed_int 64 %(int)0.022105 -fixed_int 64 |(int)0.00108065 -fixed_int 64 &(int)0.00120958 -fixed_int 64 ^(int)0.00107863 -fixed_int 128 + 0.00260327 -fixed_int 128 - 0.00292914 -fixed_int 128 * 0.017405 -fixed_int 128 / 0.10547 -fixed_int 128 str 0.000458298 -fixed_int 128 +(int)0.00202532 -fixed_int 128 -(int)0.00163065 -fixed_int 128 *(int)0.0029341 -fixed_int 128 /(int)0.086585 -fixed_int 128 % 0.104705 -fixed_int 128 | 0.00262583 -fixed_int 128 & 0.00263365 -fixed_int 128 ^ 0.00261842 -fixed_int 128 << 0.00180218 -fixed_int 128 >> 0.00195989 -fixed_int 128 %(int)0.076707 -fixed_int 128 |(int)0.00127991 -fixed_int 128 &(int)0.00221857 -fixed_int 128 ^(int)0.00129423 -fixed_int 256 + 0.00544189 -fixed_int 256 - 0.00594733 -fixed_int 256 * 0.0716955 -fixed_int 256 / 0.18658 -fixed_int 256 str 0.0011329 -fixed_int 256 +(int)0.00239115 -fixed_int 256 -(int)0.00196589 -fixed_int 256 *(int)0.00536465 -fixed_int 256 /(int)0.177415 -fixed_int 256 % 0.18577 -fixed_int 256 | 0.00654441 -fixed_int 256 & 0.00658456 -fixed_int 256 ^ 0.00653302 -fixed_int 256 << 0.00366541 -fixed_int 256 >> 0.00345938 -fixed_int 256 %(int)0.146564 -fixed_int 256 |(int)0.00179758 -fixed_int 256 &(int)0.00406972 -fixed_int 256 ^(int)0.00174107 -fixed_int 512 + 0.0119663 -fixed_int 512 - 0.0122849 -fixed_int 512 * 0.250144 -fixed_int 512 / 0.362685 -fixed_int 512 str 0.00353655 -fixed_int 512 +(int)0.00525298 -fixed_int 512 -(int)0.0054428 -fixed_int 512 *(int)0.0104665 -fixed_int 512 /(int)0.35372 -fixed_int 512 % 0.364137 -fixed_int 512 | 0.0133848 -fixed_int 512 & 0.0134244 -fixed_int 512 ^ 0.0133775 -fixed_int 512 << 0.0111573 -fixed_int 512 >> 0.0104619 -fixed_int 512 %(int)0.293131 -fixed_int 512 |(int)0.00511566 -fixed_int 512 &(int)0.00944583 -fixed_int 512 ^(int)0.00520143 -fixed_int 1024 + 0.0265669 -fixed_int 1024 - 0.0305353 -fixed_int 1024 * 0.792037 -fixed_int 1024 / 0.758868 -fixed_int 1024 str 0.0137457 -fixed_int 1024 +(int)0.0101279 -fixed_int 1024 -(int)0.00950205 -fixed_int 1024 *(int)0.026544 -fixed_int 1024 /(int)0.709808 -fixed_int 1024 % 0.760095 -fixed_int 1024 | 0.0258782 -fixed_int 1024 & 0.0244113 -fixed_int 1024 ^ 0.0258119 -fixed_int 1024 << 0.0193046 -fixed_int 1024 >> 0.0195598 -fixed_int 1024 %(int)0.591454 -fixed_int 1024 |(int)0.010103 -fixed_int 1024 &(int)0.0249342 -fixed_int 1024 ^(int)0.0100668 -cpp_float 50 + 0.0135692 -cpp_float 50 - 0.014813 -cpp_float 50 * 0.121949 -cpp_float 50 / 1.86438 -cpp_float 50 str 0.00921786 -cpp_float 50 +(int)0.0231423 -cpp_float 50 -(int)0.0245803 -cpp_float 50 *(int)0.036823 -cpp_float 50 /(int)0.200073 -cpp_float 100 + 0.0194008 -cpp_float 100 - 0.0179391 -cpp_float 100 * 0.237444 -cpp_float 100 / 3.67594 -cpp_float 100 str 0.0156382 -cpp_float 100 +(int)0.032027 -cpp_float 100 -(int)0.0355546 -cpp_float 100 *(int)0.0596723 -cpp_float 100 /(int)0.341129 -cpp_float 500 + 0.0431376 -cpp_float 500 - 0.0441081 -cpp_float 500 * 2.11624 -cpp_float 500 / 25.3672 -cpp_float 500 str 0.0619948 -cpp_float 500 +(int)0.0717688 -cpp_float 500 -(int)0.0737847 -cpp_float 500 *(int)0.240091 -cpp_float 500 /(int)1.39098 -mpfr_float 50 + 0.018534 -mpfr_float 50 - 0.0219753 -mpfr_float 50 * 0.0573856 -mpfr_float 50 / 0.318134 -mpfr_float 50 str 0.00683453 -mpfr_float 50 +(int)0.0267235 -mpfr_float 50 -(int)0.0449984 -mpfr_float 50 *(int)0.0345749 -mpfr_float 50 /(int)0.0856313 -mpfr_float 100 + 0.0203895 -mpfr_float 100 - 0.023673 -mpfr_float 100 * 0.0922367 -mpfr_float 100 / 0.455272 -mpfr_float 100 str 0.00688747 -mpfr_float 100 +(int)0.0280739 -mpfr_float 100 -(int)0.048047 -mpfr_float 100 *(int)0.039831 -mpfr_float 100 /(int)0.107712 -mpfr_float 500 + 0.032386 -mpfr_float 500 - 0.0362805 -mpfr_float 500 * 0.853213 -mpfr_float 500 / 2.82089 -mpfr_float 500 str 0.0336548 -mpfr_float 500 +(int)0.0383341 -mpfr_float 500 -(int)0.0587852 -mpfr_float 500 *(int)0.0845355 -mpfr_float 500 /(int)0.252175 -[section:float_performance Float Type Perfomance] -[table Operator * -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.45709 (0.121949s)][2.65918 (0.237444s)][2.48032 (2.11624s)]] -[[gmp_float][[*1] (0.0496313s)][[*1] (0.0892922s)][1.01995 (0.870235s)]] -[[mpfr_float][1.15624 (0.0573856s)][1.03298 (0.0922367s)][[*1] (0.853213s)]] -] -[table Operator *(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.27942 (0.036823s)][3.04455 (0.0596723s)][5.89573 (0.240091s)]] -[[gmp_float][[*1] (0.0161546s)][[*1] (0.0195997s)][[*1] (0.0407228s)]] -[[mpfr_float][2.14025 (0.0345749s)][2.03222 (0.039831s)][2.07588 (0.0845355s)]] -] -[table Operator + -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][[*1] (0.0135692s)][1.02522 (0.0194008s)][1.42878 (0.0431376s)]] -[[gmp_float][1.27225 (0.0172634s)][[*1] (0.0189236s)][[*1] (0.0301919s)]] -[[mpfr_float][1.36589 (0.018534s)][1.07746 (0.0203895s)][1.07267 (0.032386s)]] -] -[table Operator +(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.15023 (0.0231423s)][2.65755 (0.032027s)][4.0031 (0.0717688s)]] -[[gmp_float][[*1] (0.0107627s)][[*1] (0.0120513s)][[*1] (0.0179283s)]] -[[mpfr_float][2.48298 (0.0267235s)][2.32953 (0.0280739s)][2.13819 (0.0383341s)]] -] -[table Operator - -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][[*1] (0.014813s)][[*1] (0.0179391s)][1.36457 (0.0441081s)]] -[[gmp_float][1.28666 (0.0190593s)][1.17296 (0.0210418s)][[*1] (0.0323239s)]] -[[mpfr_float][1.48351 (0.0219753s)][1.31963 (0.023673s)][1.12241 (0.0362805s)]] -] -[table Operator -(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][1.29928 (0.0245803s)][1.79248 (0.0355546s)][2.85621 (0.0737847s)]] -[[gmp_float][[*1] (0.0189185s)][[*1] (0.0198354s)][[*1] (0.0258331s)]] -[[mpfr_float][2.37854 (0.0449984s)][2.42229 (0.048047s)][2.27558 (0.0587852s)]] -] -[table Operator / -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][6.89549 (1.86438s)][9.76642 (3.67594s)][17.8252 (25.3672s)]] -[[gmp_float][[*1] (0.270376s)][[*1] (0.376385s)][[*1] (1.42311s)]] -[[mpfr_float][1.17664 (0.318134s)][1.20959 (0.455272s)][1.9822 (2.82089s)]] -] -[table Operator /(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.66353 (0.200073s)][3.59869 (0.341129s)][6.01121 (1.39098s)]] -[[gmp_float][[*1] (0.0751156s)][[*1] (0.0947924s)][[*1] (0.231398s)]] -[[mpfr_float][1.13999 (0.0856313s)][1.1363 (0.107712s)][1.08979 (0.252175s)]] -] -[table Operator str -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.72489 (0.00921786s)][2.27053 (0.0156382s)][1.97491 (0.0619948s)]] -[[gmp_float][[*1] (0.00338283s)][1.00917 (0.00695061s)][[*1] (0.0313911s)]] -[[mpfr_float][2.02036 (0.00683453s)][[*1] (0.00688747s)][1.07211 (0.0336548s)]] -] -[endsect] +gmp_int 64 + 0.0168195 +gmp_int 64 - 0.0186168 +gmp_int 64 * 0.0114224 +gmp_int 64 / 0.168483 +gmp_int 64 str 0.000337753 +gmp_int 64 +(int)0.00683062 +gmp_int 64 -(int)0.00706193 +gmp_int 64 *(int)0.00869587 +gmp_int 64 /(int)0.0453323 +gmp_int 64 % 0.157804 +gmp_int 64 | 0.00932423 +gmp_int 64 & 0.00944499 +gmp_int 64 ^ 0.00996572 +gmp_int 64 << 0.00922261 +gmp_int 64 >> 0.00918099 +gmp_int 64 %(int)0.0281261 +gmp_int 64 |(int)0.0397808 +gmp_int 64 &(int)0.0415959 +gmp_int 64 ^(int)0.0404741 +gmp_int 64 gcd 0.176988 +gmp_int 128 + 0.0179677 +gmp_int 128 - 0.0189371 +gmp_int 128 * 0.0161959 +gmp_int 128 / 0.190813 +gmp_int 128 str 0.000372045 +gmp_int 128 +(int)0.00848258 +gmp_int 128 -(int)0.00875216 +gmp_int 128 *(int)0.0113487 +gmp_int 128 /(int)0.0525228 +gmp_int 128 % 0.15826 +gmp_int 128 | 0.0106091 +gmp_int 128 & 0.0112477 +gmp_int 128 ^ 0.0113254 +gmp_int 128 << 0.0100071 +gmp_int 128 >> 0.00769246 +gmp_int 128 %(int)0.0347099 +gmp_int 128 |(int)0.0407317 +gmp_int 128 &(int)0.0426387 +gmp_int 128 ^(int)0.041833 +gmp_int 128 gcd 0.432692 +gmp_int 256 + 0.0228276 +gmp_int 256 - 0.0253604 +gmp_int 256 * 0.0424289 +gmp_int 256 / 0.232371 +gmp_int 256 str 0.000590578 +gmp_int 256 +(int)0.0111117 +gmp_int 256 -(int)0.0119104 +gmp_int 256 *(int)0.0138547 +gmp_int 256 /(int)0.0658471 +gmp_int 256 % 0.189604 +gmp_int 256 | 0.0128476 +gmp_int 256 & 0.0148126 +gmp_int 256 ^ 0.0134169 +gmp_int 256 << 0.0117499 +gmp_int 256 >> 0.00808343 +gmp_int 256 %(int)0.0471351 +gmp_int 256 |(int)0.0423473 +gmp_int 256 &(int)0.0436809 +gmp_int 256 ^(int)0.0426564 +gmp_int 256 gcd 2.06786 +gmp_int 512 + 0.0274004 +gmp_int 512 - 0.0318076 +gmp_int 512 * 0.097384 +gmp_int 512 / 0.272392 +gmp_int 512 str 0.0012598 +gmp_int 512 +(int)0.0142198 +gmp_int 512 -(int)0.0148327 +gmp_int 512 *(int)0.0179982 +gmp_int 512 /(int)0.0906272 +gmp_int 512 % 0.22163 +gmp_int 512 | 0.0211022 +gmp_int 512 & 0.0165864 +gmp_int 512 ^ 0.0218245 +gmp_int 512 << 0.0145569 +gmp_int 512 >> 0.00978776 +gmp_int 512 %(int)0.0601084 +gmp_int 512 |(int)0.0460084 +gmp_int 512 &(int)0.0466719 +gmp_int 512 ^(int)0.045828 +gmp_int 512 gcd 4.69155 +gmp_int 1024 + 0.038508 +gmp_int 1024 - 0.0417826 +gmp_int 1024 * 0.315222 +gmp_int 1024 / 0.352494 +gmp_int 1024 str 0.00274057 +gmp_int 1024 +(int)0.0187457 +gmp_int 1024 -(int)0.0194778 +gmp_int 1024 *(int)0.0259764 +gmp_int 1024 /(int)0.140287 +gmp_int 1024 % 0.284404 +gmp_int 1024 | 0.0242278 +gmp_int 1024 & 0.0235658 +gmp_int 1024 ^ 0.0249122 +gmp_int 1024 << 0.0202809 +gmp_int 1024 >> 0.0127441 +gmp_int 1024 %(int)0.0758432 +gmp_int 1024 |(int)0.0495155 +gmp_int 1024 &(int)0.0503542 +gmp_int 1024 ^(int)0.0510615 +gmp_int 1024 gcd 10.1136 +cpp_int 64 + 0.0157994 +cpp_int 64 - 0.0256769 +cpp_int 64 * 0.0226198 +cpp_int 64 / 0.102281 +cpp_int 64 str 0.000380146 +cpp_int 64 +(int)0.0103873 +cpp_int 64 -(int)0.00898962 +cpp_int 64 *(int)0.0159193 +cpp_int 64 /(int)0.0522854 +cpp_int 64 % 0.0999552 +cpp_int 64 | 0.0203489 +cpp_int 64 & 0.0202989 +cpp_int 64 ^ 0.020334 +cpp_int 64 << 0.0166545 +cpp_int 64 >> 0.0143805 +cpp_int 64 %(int)0.0389361 +cpp_int 64 |(int)0.0198498 +cpp_int 64 &(int)0.024074 +cpp_int 64 ^(int)0.0198061 +cpp_int 64 gcd 1.72384 +cpp_int 128 + 0.0182643 +cpp_int 128 - 0.0271678 +cpp_int 128 * 0.0408988 +cpp_int 128 / 0.172852 +cpp_int 128 str 0.000693873 +cpp_int 128 +(int)0.0116175 +cpp_int 128 -(int)0.0104572 +cpp_int 128 *(int)0.0187569 +cpp_int 128 /(int)0.108782 +cpp_int 128 % 0.179562 +cpp_int 128 | 0.0245406 +cpp_int 128 & 0.0245186 +cpp_int 128 ^ 0.0247923 +cpp_int 128 << 0.0196597 +cpp_int 128 >> 0.0157968 +cpp_int 128 %(int)0.0940069 +cpp_int 128 |(int)0.0210111 +cpp_int 128 &(int)0.0322746 +cpp_int 128 ^(int)0.0210955 +cpp_int 128 gcd 3.97787 +cpp_int 256 + 0.0236538 +cpp_int 256 - 0.0339319 +cpp_int 256 * 0.107568 +cpp_int 256 / 0.376559 +cpp_int 256 str 0.00192567 +cpp_int 256 +(int)0.0156148 +cpp_int 256 -(int)0.0125633 +cpp_int 256 *(int)0.0227126 +cpp_int 256 /(int)0.240023 +cpp_int 256 % 0.324919 +cpp_int 256 | 0.0273651 +cpp_int 256 & 0.0268812 +cpp_int 256 ^ 0.027153 +cpp_int 256 << 0.0240014 +cpp_int 256 >> 0.0178114 +cpp_int 256 %(int)0.196223 +cpp_int 256 |(int)0.0238206 +cpp_int 256 &(int)0.0518555 +cpp_int 256 ^(int)0.0237059 +cpp_int 256 gcd 9.44724 +cpp_int 512 + 0.0286286 +cpp_int 512 - 0.0473463 +cpp_int 512 * 0.36983 +cpp_int 512 / 0.53608 +cpp_int 512 str 0.00489147 +cpp_int 512 +(int)0.0165983 +cpp_int 512 -(int)0.0157028 +cpp_int 512 *(int)0.0327202 +cpp_int 512 /(int)0.39506 +cpp_int 512 % 0.484383 +cpp_int 512 | 0.0336779 +cpp_int 512 & 0.0332565 +cpp_int 512 ^ 0.033731 +cpp_int 512 << 0.032593 +cpp_int 512 >> 0.0249415 +cpp_int 512 %(int)0.347801 +cpp_int 512 |(int)0.0270701 +cpp_int 512 &(int)0.0847243 +cpp_int 512 ^(int)0.0270095 +cpp_int 512 gcd 22.6824 +cpp_int 1024 + 0.041093 +cpp_int 1024 - 0.065839 +cpp_int 1024 * 1.36107 +cpp_int 1024 / 0.91127 +cpp_int 1024 str 0.0150341 +cpp_int 1024 +(int)0.0212673 +cpp_int 1024 -(int)0.0207903 +cpp_int 1024 *(int)0.0482894 +cpp_int 1024 /(int)0.711756 +cpp_int 1024 % 0.853306 +cpp_int 1024 | 0.0459271 +cpp_int 1024 & 0.0455113 +cpp_int 1024 ^ 0.0457905 +cpp_int 1024 << 0.053456 +cpp_int 1024 >> 0.0339107 +cpp_int 1024 %(int)0.653379 +cpp_int 1024 |(int)0.0323199 +cpp_int 1024 &(int)0.152555 +cpp_int 1024 ^(int)0.032137 +cpp_int 1024 gcd 59.7424 +tommath_int 64 + 0.0166687 +tommath_int 64 - 0.0270094 +tommath_int 64 * 0.0386521 +tommath_int 64 / 0.98286 +tommath_int 64 str 0.00413258 +tommath_int 64 +(int)0.174336 +tommath_int 64 -(int)0.174454 +tommath_int 64 *(int)0.191871 +tommath_int 64 /(int)0.886522 +tommath_int 64 % 0.980074 +tommath_int 64 | 0.0716826 +tommath_int 64 & 0.0777977 +tommath_int 64 ^ 0.0730863 +tommath_int 64 << 0.0200111 +tommath_int 64 >> 0.124855 +tommath_int 64 %(int)0.734449 +tommath_int 64 |(int)0.254639 +tommath_int 64 &(int)0.226047 +tommath_int 64 ^(int)0.252631 +tommath_int 64 gcd 3.80432 +tommath_int 128 + 0.0169388 +tommath_int 128 - 0.0247515 +tommath_int 128 * 0.0588799 +tommath_int 128 / 1.11408 +tommath_int 128 str 0.00853237 +tommath_int 128 +(int)0.17465 +tommath_int 128 -(int)0.169003 +tommath_int 128 *(int)0.193938 +tommath_int 128 /(int)0.901904 +tommath_int 128 % 1.09735 +tommath_int 128 | 0.0714914 +tommath_int 128 & 0.0734869 +tommath_int 128 ^ 0.0724281 +tommath_int 128 << 0.0315817 +tommath_int 128 >> 0.137548 +tommath_int 128 %(int)0.835579 +tommath_int 128 |(int)0.25282 +tommath_int 128 &(int)0.22947 +tommath_int 128 ^(int)0.253212 +tommath_int 128 gcd 7.29351 +tommath_int 256 + 0.0191982 +tommath_int 256 - 0.0260308 +tommath_int 256 * 0.0850765 +tommath_int 256 / 1.3375 +tommath_int 256 str 0.0217479 +tommath_int 256 +(int)0.173229 +tommath_int 256 -(int)0.17296 +tommath_int 256 *(int)0.201834 +tommath_int 256 /(int)1.153 +tommath_int 256 % 1.34044 +tommath_int 256 | 0.074755 +tommath_int 256 & 0.0755475 +tommath_int 256 ^ 0.0805466 +tommath_int 256 << 0.0382785 +tommath_int 256 >> 0.141309 +tommath_int 256 %(int)1.19796 +tommath_int 256 |(int)0.255801 +tommath_int 256 &(int)0.233997 +tommath_int 256 ^(int)0.25474 +tommath_int 256 gcd 15.3331 +tommath_int 512 + 0.0240257 +tommath_int 512 - 0.0303227 +tommath_int 512 * 0.195612 +tommath_int 512 / 1.96548 +tommath_int 512 str 0.0563537 +tommath_int 512 +(int)0.174848 +tommath_int 512 -(int)0.176184 +tommath_int 512 *(int)0.223672 +tommath_int 512 /(int)1.68054 +tommath_int 512 % 1.95689 +tommath_int 512 | 0.0801272 +tommath_int 512 & 0.0806169 +tommath_int 512 ^ 0.080112 +tommath_int 512 << 0.0451545 +tommath_int 512 >> 0.151606 +tommath_int 512 %(int)1.74812 +tommath_int 512 |(int)0.260477 +tommath_int 512 &(int)0.237892 +tommath_int 512 ^(int)0.259232 +tommath_int 512 gcd 31.9471 +tommath_int 1024 + 0.035905 +tommath_int 1024 - 0.0429664 +tommath_int 1024 * 0.564578 +tommath_int 1024 / 3.17298 +tommath_int 1024 str 0.187413 +tommath_int 1024 +(int)0.190852 +tommath_int 1024 -(int)0.189438 +tommath_int 1024 *(int)0.271175 +tommath_int 1024 /(int)2.92342 +tommath_int 1024 % 3.20126 +tommath_int 1024 | 0.0939085 +tommath_int 1024 & 0.10264 +tommath_int 1024 ^ 0.0957583 +tommath_int 1024 << 0.0670281 +tommath_int 1024 >> 0.166781 +tommath_int 1024 %(int)2.88178 +tommath_int 1024 |(int)0.267844 +tommath_int 1024 &(int)0.252612 +tommath_int 1024 ^(int)0.270201 +tommath_int 1024 gcd 68.3106 +fixed_int 64 + 0.00139312 +fixed_int 64 - 0.00162339 +fixed_int 64 * 0.00699782 +fixed_int 64 / 0.0526074 +fixed_int 64 str 0.000220769 +fixed_int 64 +(int)0.00224121 +fixed_int 64 -(int)0.00194005 +fixed_int 64 *(int)0.0023299 +fixed_int 64 /(int)0.0222776 +fixed_int 64 % 0.0533221 +fixed_int 64 | 0.00173919 +fixed_int 64 & 0.00172375 +fixed_int 64 ^ 0.00173786 +fixed_int 64 << 0.000542177 +fixed_int 64 >> 0.000774259 +fixed_int 64 %(int)0.0213357 +fixed_int 64 |(int)0.00111648 +fixed_int 64 &(int)0.00122907 +fixed_int 64 ^(int)0.00107255 +fixed_int 64 gcd 0.694716 +fixed_int 128 + 0.00257987 +fixed_int 128 - 0.00292488 +fixed_int 128 * 0.0224222 +fixed_int 128 / 0.104045 +fixed_int 128 str 0.000463955 +fixed_int 128 +(int)0.00201262 +fixed_int 128 -(int)0.00162514 +fixed_int 128 *(int)0.0029339 +fixed_int 128 /(int)0.0854855 +fixed_int 128 % 0.104704 +fixed_int 128 | 0.00262052 +fixed_int 128 & 0.00263811 +fixed_int 128 ^ 0.00262317 +fixed_int 128 << 0.00169023 +fixed_int 128 >> 0.00194871 +fixed_int 128 %(int)0.0765247 +fixed_int 128 |(int)0.0012695 +fixed_int 128 &(int)0.00213023 +fixed_int 128 ^(int)0.00126692 +fixed_int 128 gcd 1.94748 +fixed_int 256 + 0.00534754 +fixed_int 256 - 0.0057397 +fixed_int 256 * 0.0746728 +fixed_int 256 / 0.188237 +fixed_int 256 str 0.00110489 +fixed_int 256 +(int)0.00239737 +fixed_int 256 -(int)0.00190618 +fixed_int 256 *(int)0.00532854 +fixed_int 256 /(int)0.176302 +fixed_int 256 % 0.185671 +fixed_int 256 | 0.00635312 +fixed_int 256 & 0.00641492 +fixed_int 256 ^ 0.00637518 +fixed_int 256 << 0.00364634 +fixed_int 256 >> 0.00339513 +fixed_int 256 %(int)0.148628 +fixed_int 256 |(int)0.00172278 +fixed_int 256 &(int)0.00394582 +fixed_int 256 ^(int)0.0017306 +fixed_int 256 gcd 5.69938 +fixed_int 512 + 0.0104641 +fixed_int 512 - 0.0108643 +fixed_int 512 * 0.244289 +fixed_int 512 / 0.361312 +fixed_int 512 str 0.00355548 +fixed_int 512 +(int)0.00521225 +fixed_int 512 -(int)0.00508137 +fixed_int 512 *(int)0.0104497 +fixed_int 512 /(int)0.347573 +fixed_int 512 % 0.359133 +fixed_int 512 | 0.0127562 +fixed_int 512 & 0.0127079 +fixed_int 512 ^ 0.0128838 +fixed_int 512 << 0.00909235 +fixed_int 512 >> 0.0100095 +fixed_int 512 %(int)0.294967 +fixed_int 512 |(int)0.00510309 +fixed_int 512 &(int)0.0108019 +fixed_int 512 ^(int)0.00519878 +fixed_int 512 gcd 18.0766 +fixed_int 1024 + 0.0269036 +fixed_int 1024 - 0.0307375 +fixed_int 1024 * 0.794034 +fixed_int 1024 / 0.761903 +fixed_int 1024 str 0.0139069 +fixed_int 1024 +(int)0.0107717 +fixed_int 1024 -(int)0.0107214 +fixed_int 1024 *(int)0.0264201 +fixed_int 1024 /(int)0.710635 +fixed_int 1024 % 0.762693 +fixed_int 1024 | 0.0266044 +fixed_int 1024 & 0.0265946 +fixed_int 1024 ^ 0.0266218 +fixed_int 1024 << 0.0208209 +fixed_int 1024 >> 0.0199434 +fixed_int 1024 %(int)0.591732 +fixed_int 1024 |(int)0.0107572 +fixed_int 1024 &(int)0.0279165 +fixed_int 1024 ^(int)0.0107153 +fixed_int 1024 gcd 72.0083 [section:integer_performance Integer Type Perfomance] [table Operator % [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0534904s)][[*1] (0.104705s)][[*1] (0.18577s)][1.67615 (0.364137s)][2.70105 (0.760095s)]] -[[gmp_int][2.93651 (0.157075s)][1.48303 (0.15528s)][1.0062 (0.186922s)][[*1] (0.217246s)][[*1] (0.281408s)]] -[[tommath_int][18.2811 (0.977861s)][10.3314 (1.08174s)][7.04886 (1.30947s)][8.82054 (1.91623s)][11.2859 (3.17595s)]] +[[cpp_int][1.87455 (0.0999552s)][1.71496 (0.179562s)][1.74997 (0.324919s)][2.18555 (0.484383s)][3.00033 (0.853306s)]] +[[fixed_int][[*1] (0.0533221s)][[*1] (0.104704s)][[*1] (0.185671s)][1.62042 (0.359133s)][2.68172 (0.762693s)]] +[[gmp_int][2.95944 (0.157804s)][1.51151 (0.15826s)][1.02118 (0.189604s)][[*1] (0.22163s)][[*1] (0.284404s)]] +[[tommath_int][18.3802 (0.980074s)][10.4805 (1.09735s)][7.21942 (1.34044s)][8.82954 (1.95689s)][11.256 (3.20126s)]] ] [table Operator %(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.022105s)][2.22782 (0.076707s)][3.11723 (0.146564s)][4.88691 (0.293131s)][7.79337 (0.591454s)]] -[[gmp_int][1.25999 (0.0278521s)][[*1] (0.0344314s)][[*1] (0.0470174s)][[*1] (0.0599828s)][[*1] (0.075892s)]] -[[tommath_int][32.9037 (0.727338s)][24.3433 (0.838173s)][25.1319 (1.18164s)][28.7415 (1.724s)][37.3949 (2.83798s)]] +[[cpp_int][1.82492 (0.0389361s)][2.70836 (0.0940069s)][4.16298 (0.196223s)][5.78623 (0.347801s)][8.61488 (0.653379s)]] +[[fixed_int][[*1] (0.0213357s)][2.2047 (0.0765247s)][3.15324 (0.148628s)][4.90725 (0.294967s)][7.80205 (0.591732s)]] +[[gmp_int][1.31826 (0.0281261s)][[*1] (0.0347099s)][[*1] (0.0471351s)][[*1] (0.0601084s)][[*1] (0.0758432s)]] +[[tommath_int][34.4234 (0.734449s)][24.0732 (0.835579s)][25.4154 (1.19796s)][29.0828 (1.74812s)][37.9966 (2.88178s)]] ] [table Operator & [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00177991s)][[*1] (0.00263365s)][[*1] (0.00658456s)][[*1] (0.0134244s)][1.04482 (0.0244113s)]] -[[gmp_int][5.24139 (0.00932918s)][4.20114 (0.0110643s)][1.9217 (0.0126536s)][1.2303 (0.016516s)][[*1] (0.0233641s)]] -[[tommath_int][41.4562 (0.073788s)][27.3477 (0.0720242s)][11.1923 (0.0736961s)][5.85126 (0.0785497s)][4.23413 (0.0989265s)]] +[[cpp_int][11.776 (0.0202989s)][9.29397 (0.0245186s)][4.19042 (0.0268812s)][2.61699 (0.0332565s)][1.93124 (0.0455113s)]] +[[fixed_int][[*1] (0.00172375s)][[*1] (0.00263811s)][[*1] (0.00641492s)][[*1] (0.0127079s)][1.12853 (0.0265946s)]] +[[gmp_int][5.47931 (0.00944499s)][4.26352 (0.0112477s)][2.30908 (0.0148126s)][1.3052 (0.0165864s)][[*1] (0.0235658s)]] +[[tommath_int][45.1327 (0.0777977s)][27.8558 (0.0734869s)][11.7768 (0.0755475s)][6.34384 (0.0806169s)][4.35544 (0.10264s)]] ] [table Operator &(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00120958s)][[*1] (0.00221857s)][[*1] (0.00406972s)][[*1] (0.00944583s)][[*1] (0.0249342s)]] -[[gmp_int][32.9717 (0.039882s)][18.6425 (0.0413597s)][10.3913 (0.0422895s)][4.80782 (0.0454139s)][1.97433 (0.0492285s)]] -[[tommath_int][180.185 (0.217949s)][97.7774 (0.216927s)][55.0003 (0.223836s)][24.1362 (0.227986s)][9.6664 (0.241025s)]] +[[cpp_int][19.5872 (0.024074s)][15.1507 (0.0322746s)][13.1419 (0.0518555s)][7.84344 (0.0847243s)][5.46467 (0.152555s)]] +[[fixed_int][[*1] (0.00122907s)][[*1] (0.00213023s)][[*1] (0.00394582s)][[*1] (0.0108019s)][[*1] (0.0279165s)]] +[[gmp_int][33.8435 (0.0415959s)][20.016 (0.0426387s)][11.0702 (0.0436809s)][4.3207 (0.0466719s)][1.80374 (0.0503542s)]] +[[tommath_int][183.918 (0.226047s)][107.721 (0.22947s)][59.3026 (0.233997s)][22.0231 (0.237892s)][9.04882 (0.252612s)]] ] [table Operator * [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00699488s)][1.10926 (0.017405s)][1.71577 (0.0716955s)][2.55171 (0.250144s)][2.50272 (0.792037s)]] -[[gmp_int][1.61797 (0.0113175s)][[*1] (0.0156906s)][[*1] (0.0417861s)][[*1] (0.09803s)][[*1] (0.316471s)]] -[[tommath_int][5.19586 (0.0363444s)][3.49483 (0.0548361s)][2.16435 (0.0904396s)][1.96183 (0.192319s)][1.73456 (0.548938s)]] +[[cpp_int][3.2324 (0.0226198s)][2.52526 (0.0408988s)][2.53525 (0.107568s)][3.79765 (0.36983s)][4.31781 (1.36107s)]] +[[fixed_int][[*1] (0.00699782s)][1.38444 (0.0224222s)][1.75995 (0.0746728s)][2.50851 (0.244289s)][2.51897 (0.794034s)]] +[[gmp_int][1.63228 (0.0114224s)][[*1] (0.0161959s)][[*1] (0.0424289s)][[*1] (0.097384s)][[*1] (0.315222s)]] +[[tommath_int][5.52344 (0.0386521s)][3.63548 (0.0588799s)][2.00515 (0.0850765s)][2.00866 (0.195612s)][1.79105 (0.564578s)]] ] [table Operator *(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00233361s)][[*1] (0.0029341s)][[*1] (0.00536465s)][[*1] (0.0104665s)][[*1] (0.026544s)]] -[[gmp_int][3.66519 (0.00855311s)][3.9144 (0.0114853s)][2.52321 (0.0135361s)][1.73199 (0.0181278s)][1.00144 (0.0265822s)]] -[[tommath_int][76.7461 (0.179095s)][62.4375 (0.183198s)][36.4656 (0.195625s)][20.3576 (0.213072s)][9.71918 (0.257986s)]] +[[cpp_int][6.83259 (0.0159193s)][6.39316 (0.0187569s)][4.26244 (0.0227126s)][3.13123 (0.0327202s)][1.85897 (0.0482894s)]] +[[fixed_int][[*1] (0.0023299s)][[*1] (0.0029339s)][[*1] (0.00532854s)][[*1] (0.0104497s)][1.01708 (0.0264201s)]] +[[gmp_int][3.73229 (0.00869587s)][3.86814 (0.0113487s)][2.60009 (0.0138547s)][1.72238 (0.0179982s)][[*1] (0.0259764s)]] +[[tommath_int][82.3516 (0.191871s)][66.1027 (0.193938s)][37.8779 (0.201834s)][21.4047 (0.223672s)][10.4393 (0.271175s)]] ] [table Operator + [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00139124s)][[*1] (0.00260327s)][[*1] (0.00544189s)][[*1] (0.0119663s)][[*1] (0.0265669s)]] -[[gmp_int][12.1703 (0.0169318s)][7.18621 (0.0187076s)][4.15407 (0.022606s)][2.31823 (0.0277407s)][1.50056 (0.0398652s)]] -[[tommath_int][11.4962 (0.0159939s)][6.31236 (0.0164327s)][3.42075 (0.0186154s)][1.96498 (0.0235136s)][1.33181 (0.0353819s)]] +[[cpp_int][11.341 (0.0157994s)][7.07953 (0.0182643s)][4.42331 (0.0236538s)][2.73588 (0.0286286s)][1.52741 (0.041093s)]] +[[fixed_int][[*1] (0.00139312s)][[*1] (0.00257987s)][[*1] (0.00534754s)][[*1] (0.0104641s)][[*1] (0.0269036s)]] +[[gmp_int][12.0732 (0.0168195s)][6.96456 (0.0179677s)][4.26881 (0.0228276s)][2.61851 (0.0274004s)][1.43133 (0.038508s)]] +[[tommath_int][11.965 (0.0166687s)][6.56577 (0.0169388s)][3.5901 (0.0191982s)][2.29601 (0.0240257s)][1.33458 (0.035905s)]] ] [table Operator +(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.002316s)][[*1] (0.00202532s)][[*1] (0.00239115s)][[*1] (0.00525298s)][[*1] (0.0101279s)]] -[[gmp_int][2.9548 (0.00684333s)][5.07577 (0.0102801s)][4.60003 (0.0109994s)][2.58403 (0.0135739s)][1.86257 (0.0188639s)]] -[[tommath_int][70.9391 (0.164295s)][81.5638 (0.165193s)][71.6493 (0.171325s)][32.0474 (0.168344s)][17.7419 (0.179688s)]] +[[cpp_int][4.63468 (0.0103873s)][5.77235 (0.0116175s)][6.51328 (0.0156148s)][3.18449 (0.0165983s)][1.97437 (0.0212673s)]] +[[fixed_int][[*1] (0.00224121s)][[*1] (0.00201262s)][[*1] (0.00239737s)][[*1] (0.00521225s)][[*1] (0.0107717s)]] +[[gmp_int][3.04774 (0.00683062s)][4.2147 (0.00848258s)][4.63494 (0.0111117s)][2.72815 (0.0142198s)][1.74027 (0.0187457s)]] +[[tommath_int][77.7866 (0.174336s)][86.7776 (0.17465s)][72.258 (0.173229s)][33.5455 (0.174848s)][17.718 (0.190852s)]] ] [table Operator - [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00164434s)][[*1] (0.00292914s)][[*1] (0.00594733s)][[*1] (0.0122849s)][[*1] (0.0305353s)]] -[[gmp_int][10.5654 (0.0173731s)][6.26638 (0.0183551s)][4.16928 (0.0247961s)][2.56129 (0.0314653s)][1.36505 (0.0416822s)]] -[[tommath_int][15.2058 (0.0250036s)][7.934 (0.0232398s)][4.23252 (0.0251722s)][2.35098 (0.0288817s)][1.34729 (0.0411398s)]] +[[cpp_int][15.8168 (0.0256769s)][9.28853 (0.0271678s)][5.91179 (0.0339319s)][4.35797 (0.0473463s)][2.14198 (0.065839s)]] +[[fixed_int][[*1] (0.00162339s)][[*1] (0.00292488s)][[*1] (0.0057397s)][[*1] (0.0108643s)][[*1] (0.0307375s)]] +[[gmp_int][11.4678 (0.0186168s)][6.47449 (0.0189371s)][4.41843 (0.0253604s)][2.92772 (0.0318076s)][1.35934 (0.0417826s)]] +[[tommath_int][16.6376 (0.0270094s)][8.46239 (0.0247515s)][4.53521 (0.0260308s)][2.79104 (0.0303227s)][1.39785 (0.0429664s)]] ] [table Operator -(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00191233s)][[*1] (0.00163065s)][[*1] (0.00196589s)][[*1] (0.0054428s)][[*1] (0.00950205s)]] -[[gmp_int][3.70187 (0.00707918s)][5.27553 (0.00860256s)][5.88489 (0.0115691s)][2.63409 (0.0143368s)][2.04609 (0.0194421s)]] -[[tommath_int][85.0424 (0.162629s)][101.726 (0.165879s)][87.2831 (0.171589s)][30.4554 (0.165763s)][18.7271 (0.177946s)]] +[[cpp_int][4.63371 (0.00898962s)][6.43466 (0.0104572s)][6.59084 (0.0125633s)][3.09026 (0.0157028s)][1.93914 (0.0207903s)]] +[[fixed_int][[*1] (0.00194005s)][[*1] (0.00162514s)][[*1] (0.00190618s)][[*1] (0.00508137s)][[*1] (0.0107214s)]] +[[gmp_int][3.64008 (0.00706193s)][5.38549 (0.00875216s)][6.2483 (0.0119104s)][2.91903 (0.0148327s)][1.81672 (0.0194778s)]] +[[tommath_int][89.9224 (0.174454s)][103.993 (0.169003s)][90.7363 (0.17296s)][34.6724 (0.176184s)][17.6692 (0.189438s)]] ] [table Operator / [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0516797s)][[*1] (0.10547s)][[*1] (0.18658s)][1.35534 (0.362685s)][2.15056 (0.758868s)]] -[[gmp_int][3.28139 (0.169581s)][1.81332 (0.191252s)][1.25939 (0.234977s)][[*1] (0.267598s)][[*1] (0.352869s)]] -[[tommath_int][18.9063 (0.977073s)][10.3307 (1.08958s)][7.26443 (1.35539s)][7.17138 (1.91905s)][9.04185 (3.19059s)]] +[[cpp_int][1.94422 (0.102281s)][1.66132 (0.172852s)][2.00045 (0.376559s)][1.96804 (0.53608s)][2.58521 (0.91127s)]] +[[fixed_int][[*1] (0.0526074s)][[*1] (0.104045s)][[*1] (0.188237s)][1.32644 (0.361312s)][2.16146 (0.761903s)]] +[[gmp_int][3.20265 (0.168483s)][1.83394 (0.190813s)][1.23446 (0.232371s)][[*1] (0.272392s)][[*1] (0.352494s)]] +[[tommath_int][18.6829 (0.98286s)][10.7076 (1.11408s)][7.10542 (1.3375s)][7.21562 (1.96548s)][9.00151 (3.17298s)]] ] [table Operator /(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0232935s)][1.65378 (0.086585s)][2.71117 (0.177415s)][3.96447 (0.35372s)][5.05194 (0.709808s)]] -[[gmp_int][1.93682 (0.0451154s)][[*1] (0.0523559s)][[*1] (0.0654383s)][[*1] (0.0892225s)][[*1] (0.140502s)]] -[[tommath_int][36.1645 (0.842398s)][17.4251 (0.912304s)][17.7901 (1.16415s)][18.7273 (1.6709s)][20.6842 (2.90617s)]] +[[cpp_int][2.34699 (0.0522854s)][2.07114 (0.108782s)][3.64515 (0.240023s)][4.35917 (0.39506s)][5.07357 (0.711756s)]] +[[fixed_int][[*1] (0.0222776s)][1.62759 (0.0854855s)][2.67744 (0.176302s)][3.83519 (0.347573s)][5.06558 (0.710635s)]] +[[gmp_int][2.03488 (0.0453323s)][[*1] (0.0525228s)][[*1] (0.0658471s)][[*1] (0.0906272s)][[*1] (0.140287s)]] +[[tommath_int][39.7943 (0.886522s)][17.1717 (0.901904s)][17.5103 (1.153s)][18.5434 (1.68054s)][20.8389 (2.92342s)]] ] [table Operator << [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.000672222s)][[*1] (0.00180218s)][[*1] (0.00366541s)][[*1] (0.0111573s)][[*1] (0.0193046s)]] -[[gmp_int][13.2693 (0.00891992s)][5.38839 (0.00971087s)][3.2111 (0.01177s)][1.28281 (0.0143127s)][1.06501 (0.0205595s)]] -[[tommath_int][28.8479 (0.0193922s)][17.0853 (0.0307909s)][10.6217 (0.038933s)][3.99491 (0.0445723s)][3.43678 (0.0663455s)]] +[[cpp_int][30.7178 (0.0166545s)][11.6314 (0.0196597s)][6.58232 (0.0240014s)][3.58466 (0.032593s)][2.63577 (0.053456s)]] +[[fixed_int][[*1] (0.000542177s)][[*1] (0.00169023s)][[*1] (0.00364634s)][[*1] (0.00909235s)][1.02663 (0.0208209s)]] +[[gmp_int][17.0103 (0.00922261s)][5.92058 (0.0100071s)][3.22238 (0.0117499s)][1.601 (0.0145569s)][[*1] (0.0202809s)]] +[[tommath_int][36.9087 (0.0200111s)][18.6848 (0.0315817s)][10.4978 (0.0382785s)][4.9662 (0.0451545s)][3.30498 (0.0670281s)]] ] [table Operator >> [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.000779919s)][[*1] (0.00195989s)][[*1] (0.00345938s)][1.10127 (0.0104619s)][1.58072 (0.0195598s)]] -[[gmp_int][11.4209 (0.00890735s)][3.81284 (0.00747274s)][2.32367 (0.00803845s)][[*1] (0.00949988s)][[*1] (0.012374s)]] -[[tommath_int][159.896 (0.124706s)][69.0639 (0.135357s)][39.9143 (0.138079s)][15.5977 (0.148176s)][13.3026 (0.164607s)]] +[[cpp_int][18.5732 (0.0143805s)][8.1063 (0.0157968s)][5.24617 (0.0178114s)][2.54823 (0.0249415s)][2.66089 (0.0339107s)]] +[[fixed_int][[*1] (0.000774259s)][[*1] (0.00194871s)][[*1] (0.00339513s)][1.02266 (0.0100095s)][1.56491 (0.0199434s)]] +[[gmp_int][11.8578 (0.00918099s)][3.94746 (0.00769246s)][2.38089 (0.00808343s)][[*1] (0.00978776s)][[*1] (0.0127441s)]] +[[tommath_int][161.257 (0.124855s)][70.5839 (0.137548s)][41.6211 (0.141309s)][15.4893 (0.151606s)][13.0869 (0.166781s)]] ] [table Operator ^ [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00173416s)][[*1] (0.00261842s)][[*1] (0.00653302s)][[*1] (0.0133775s)][1.0377 (0.0258119s)]] -[[gmp_int][5.62054 (0.00974691s)][4.16356 (0.0109019s)][2.0511 (0.0133999s)][1.38452 (0.0185213s)][[*1] (0.0248742s)]] -[[tommath_int][40.8962 (0.0709205s)][27.0248 (0.0707622s)][11.2431 (0.0734515s)][5.88433 (0.0787174s)][3.87044 (0.096274s)]] +[[cpp_int][11.7006 (0.020334s)][9.45127 (0.0247923s)][4.25917 (0.027153s)][2.6181 (0.033731s)][1.83807 (0.0457905s)]] +[[fixed_int][[*1] (0.00173786s)][[*1] (0.00262317s)][[*1] (0.00637518s)][[*1] (0.0128838s)][1.06862 (0.0266218s)]] +[[gmp_int][5.73448 (0.00996572s)][4.31745 (0.0113254s)][2.10455 (0.0134169s)][1.69395 (0.0218245s)][[*1] (0.0249122s)]] +[[tommath_int][42.0554 (0.0730863s)][27.6109 (0.0724281s)][12.6344 (0.0805466s)][6.21806 (0.080112s)][3.84383 (0.0957583s)]] ] [table Operator ^(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00107863s)][[*1] (0.00129423s)][[*1] (0.00174107s)][[*1] (0.00520143s)][[*1] (0.0100668s)]] -[[gmp_int][35.8795 (0.0387007s)][31.2797 (0.0404831s)][23.661 (0.0411956s)][8.5301 (0.0443687s)][4.85477 (0.0488719s)]] -[[tommath_int][222.114 (0.239579s)][186.918 (0.241914s)][141.049 (0.245577s)][47.2931 (0.245992s)][25.683 (0.258545s)]] +[[cpp_int][18.4664 (0.0198061s)][16.651 (0.0210955s)][13.6981 (0.0237059s)][5.19536 (0.0270095s)][2.99916 (0.032137s)]] +[[fixed_int][[*1] (0.00107255s)][[*1] (0.00126692s)][[*1] (0.0017306s)][[*1] (0.00519878s)][[*1] (0.0107153s)]] +[[gmp_int][37.7363 (0.0404741s)][33.0195 (0.041833s)][24.6483 (0.0426564s)][8.81514 (0.045828s)][4.76527 (0.0510615s)]] +[[tommath_int][235.542 (0.252631s)][199.864 (0.253212s)][147.197 (0.25474s)][49.864 (0.259232s)][25.2164 (0.270201s)]] +] +[table Operator gcd +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][9.7399 (1.72384s)][9.19332 (3.97787s)][4.5686 (9.44724s)][4.83474 (22.6824s)][5.90712 (59.7424s)]] +[[fixed_int][3.92522 (0.694716s)][4.50085 (1.94748s)][2.75617 (5.69938s)][3.85301 (18.0766s)][7.11994 (72.0083s)]] +[[gmp_int][[*1] (0.176988s)][[*1] (0.432692s)][[*1] (2.06786s)][[*1] (4.69155s)][[*1] (10.1136s)]] +[[tommath_int][21.4948 (3.80432s)][16.8561 (7.29351s)][7.41497 (15.3331s)][6.8095 (31.9471s)][6.75432 (68.3106s)]] ] [table Operator str [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.000232222s)][1.25612 (0.000458298s)][1.89299 (0.0011329s)][2.90199 (0.00353655s)][4.92723 (0.0137457s)]] -[[gmp_int][1.72602 (0.000400819s)][[*1] (0.000364851s)][[*1] (0.00059847s)][[*1] (0.00121866s)][[*1] (0.00278974s)]] -[[tommath_int][19.1841 (0.00445496s)][24.0182 (0.00876306s)][35.3614 (0.0211627s)][50.8048 (0.0619139s)][67.0227 (0.186976s)]] +[[cpp_int][1.72192 (0.000380146s)][1.86502 (0.000693873s)][3.26065 (0.00192567s)][3.88275 (0.00489147s)][5.48576 (0.0150341s)]] +[[fixed_int][[*1] (0.000220769s)][1.24704 (0.000463955s)][1.87086 (0.00110489s)][2.82227 (0.00355548s)][5.07444 (0.0139069s)]] +[[gmp_int][1.52989 (0.000337753s)][[*1] (0.000372045s)][[*1] (0.000590578s)][[*1] (0.0012598s)][[*1] (0.00274057s)]] +[[tommath_int][18.719 (0.00413258s)][22.9337 (0.00853237s)][36.8247 (0.0217479s)][44.7324 (0.0563537s)][68.3845 (0.187413s)]] ] [table Operator | [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00176279s)][[*1] (0.00262583s)][[*1] (0.00654441s)][[*1] (0.0133848s)][1.06069 (0.0258782s)]] -[[gmp_int][5.29157 (0.00932794s)][3.93757 (0.0103394s)][1.96789 (0.0128787s)][1.29902 (0.0173872s)][[*1] (0.0243975s)]] -[[tommath_int][39.2269 (0.0691489s)][26.8113 (0.0704018s)][11.1988 (0.0732898s)][5.84766 (0.0782698s)][3.80426 (0.0928142s)]] +[[cpp_int][11.7002 (0.0203489s)][9.3648 (0.0245406s)][4.30735 (0.0273651s)][2.64011 (0.0336779s)][1.89563 (0.0459271s)]] +[[fixed_int][[*1] (0.00173919s)][[*1] (0.00262052s)][[*1] (0.00635312s)][[*1] (0.0127562s)][1.0981 (0.0266044s)]] +[[gmp_int][5.36125 (0.00932423s)][4.04848 (0.0106091s)][2.02225 (0.0128476s)][1.65427 (0.0211022s)][[*1] (0.0242278s)]] +[[tommath_int][41.2161 (0.0716826s)][27.2814 (0.0714914s)][11.7667 (0.074755s)][6.28141 (0.0801272s)][3.87606 (0.0939085s)]] ] [table Operator |(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00108065s)][[*1] (0.00127991s)][[*1] (0.00179758s)][[*1] (0.00511566s)][[*1] (0.010103s)]] -[[gmp_int][35.2935 (0.0381401s)][31.0437 (0.0397332s)][22.5747 (0.0405797s)][8.55952 (0.0437876s)][4.71147 (0.0475998s)]] -[[tommath_int][221.45 (0.239311s)][187.298 (0.239724s)][135.239 (0.243102s)][48.473 (0.247972s)][25.3571 (0.256182s)]] -] -[endsect] -[section:rational_performance Rational Type Perfomance] -[table Operator * -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.415269s)][[*1] (0.933404s)][[*1] (4.28222s)][[*1] (9.65569s)][[*1] (21.0382s)]] -] -[table Operator *(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.310676s)][[*1] (0.172035s)][[*1] (0.192923s)][[*1] (0.240048s)][[*1] (0.324096s)]] -] -[table Operator + -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.248703s)][[*1] (0.525318s)][[*1] (2.26207s)][[*1] (5.07193s)][[*1] (11.2925s)]] -] -[table Operator +(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.287841s)][[*1] (0.144307s)][[*1] (0.162372s)][[*1] (0.197738s)][[*1] (0.269222s)]] -] -[table Operator - -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.248085s)][[*1] (0.53016s)][[*1] (2.26907s)][[*1] (5.07942s)][[*1] (11.3536s)]] -] -[table Operator -(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.28346s)][[*1] (0.14385s)][[*1] (0.160533s)][[*1] (0.198744s)][[*1] (0.267056s)]] -] -[table Operator / -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (1.34308s)][[*1] (2.63133s)][[*1] (8.12755s)][[*1] (16.8657s)][[*1] (35.6477s)]] -] -[table Operator /(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.311221s)][[*1] (0.175494s)][[*1] (0.197356s)][[*1] (0.250338s)][[*1] (0.338966s)]] -] -[table Operator str -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.000573396s)][[*1] (0.000723346s)][[*1] (0.00120085s)][[*1] (0.00233842s)][[*1] (0.00549707s)]] +[[cpp_int][17.7789 (0.0198498s)][16.5506 (0.0210111s)][13.8268 (0.0238206s)][5.30465 (0.0270701s)][3.00448 (0.0323199s)]] +[[fixed_int][[*1] (0.00111648s)][[*1] (0.0012695s)][[*1] (0.00172278s)][[*1] (0.00510309s)][[*1] (0.0107572s)]] +[[gmp_int][35.6305 (0.0397808s)][32.0847 (0.0407317s)][24.5808 (0.0423473s)][9.0158 (0.0460084s)][4.603 (0.0495155s)]] +[[tommath_int][228.073 (0.254639s)][199.149 (0.25282s)][148.482 (0.255801s)][51.0429 (0.260477s)][24.899 (0.267844s)]] ] [endsect] diff --git a/performance/performance_test-intel-linux.log b/performance/performance_test-intel-linux.log index cacc4056..e721729e 100644 --- a/performance/performance_test-intel-linux.log +++ b/performance/performance_test-intel-linux.log @@ -1,507 +1,422 @@ -gmp_float 50 + 0.0180644 -gmp_float 50 - 0.0194673 -gmp_float 50 * 0.0505578 -gmp_float 50 / 0.278179 -gmp_float 50 str 0.00357972 -gmp_float 50 +(int)0.0115205 -gmp_float 50 -(int)0.0197263 -gmp_float 50 *(int)0.0165976 -gmp_float 50 /(int)0.0758893 -gmp_float 100 + 0.019475 -gmp_float 100 - 0.0218422 -gmp_float 100 * 0.090686 -gmp_float 100 / 0.378055 -gmp_float 100 str 0.00557522 -gmp_float 100 +(int)0.0127856 -gmp_float 100 -(int)0.0205184 -gmp_float 100 *(int)0.0200577 -gmp_float 100 /(int)0.0948556 -gmp_float 500 + 0.0317241 -gmp_float 500 - 0.0335304 -gmp_float 500 * 0.947017 -gmp_float 500 / 1.5881 -gmp_float 500 str 0.0313793 -gmp_float 500 +(int)0.0187639 -gmp_float 500 -(int)0.0265882 -gmp_float 500 *(int)0.0415067 -gmp_float 500 /(int)0.232493 -gmp_int 64 + 0.0167521 -gmp_int 64 - 0.0188881 -gmp_int 64 * 0.011645 -gmp_int 64 / 0.1697 -gmp_int 64 str 0.000336635 -gmp_int 64 +(int)0.00723269 -gmp_int 64 -(int)0.00741945 -gmp_int 64 *(int)0.0120496 -gmp_int 64 /(int)0.0501068 -gmp_int 64 % 0.16582 -gmp_int 64 | 0.0115873 -gmp_int 64 & 0.0125951 -gmp_int 64 ^ 0.0129732 -gmp_int 64 << 0.00969083 -gmp_int 64 >> 0.0130601 -gmp_int 64 %(int)0.034786 -gmp_int 64 |(int)0.0424747 -gmp_int 64 &(int)0.0441868 -gmp_int 64 ^(int)0.0442481 -gmp_int 128 + 0.0192114 -gmp_int 128 - 0.0219479 -gmp_int 128 * 0.0182506 -gmp_int 128 / 0.196561 -gmp_int 128 str 0.00232097 -gmp_int 128 +(int)0.00871277 -gmp_int 128 -(int)0.0130434 -gmp_int 128 *(int)0.0127078 -gmp_int 128 /(int)0.0568248 -gmp_int 128 % 0.164977 -gmp_int 128 | 0.0134681 -gmp_int 128 & 0.01436 -gmp_int 128 ^ 0.0140653 -gmp_int 128 << 0.0131179 -gmp_int 128 >> 0.0107065 -gmp_int 128 %(int)0.0405959 -gmp_int 128 |(int)0.0440289 -gmp_int 128 &(int)0.0453998 -gmp_int 128 ^(int)0.0468496 -gmp_int 256 + 0.0230482 -gmp_int 256 - 0.0289896 -gmp_int 256 * 0.0476911 -gmp_int 256 / 0.240552 -gmp_int 256 str 0.000971703 -gmp_int 256 +(int)0.0145101 -gmp_int 256 -(int)0.0148337 -gmp_int 256 *(int)0.0170638 -gmp_int 256 /(int)0.0686065 -gmp_int 256 % 0.197103 -gmp_int 256 | 0.0159192 -gmp_int 256 & 0.015575 -gmp_int 256 ^ 0.0166751 -gmp_int 256 << 0.0148945 -gmp_int 256 >> 0.0111136 -gmp_int 256 %(int)0.0516333 -gmp_int 256 |(int)0.0474723 -gmp_int 256 &(int)0.0466442 -gmp_int 256 ^(int)0.0465869 -gmp_int 512 + 0.028268 -gmp_int 512 - 0.0352221 -gmp_int 512 * 0.103105 -gmp_int 512 / 0.281226 -gmp_int 512 str 0.00167382 -gmp_int 512 +(int)0.0170154 -gmp_int 512 -(int)0.0179625 -gmp_int 512 *(int)0.021358 -gmp_int 512 /(int)0.0950571 -gmp_int 512 % 0.230214 -gmp_int 512 | 0.0208511 -gmp_int 512 & 0.019777 -gmp_int 512 ^ 0.025011 -gmp_int 512 << 0.0182795 -gmp_int 512 >> 0.0121814 -gmp_int 512 %(int)0.0651899 -gmp_int 512 |(int)0.0493584 -gmp_int 512 &(int)0.0498514 -gmp_int 512 ^(int)0.049668 -gmp_int 1024 + 0.0408966 -gmp_int 1024 - 0.0463151 -gmp_int 1024 * 0.326898 -gmp_int 1024 / 0.36922 -gmp_int 1024 str 0.00297363 -gmp_int 1024 +(int)0.0197647 -gmp_int 1024 -(int)0.0199956 -gmp_int 1024 *(int)0.0300116 -gmp_int 1024 /(int)0.144581 -gmp_int 1024 % 0.302132 -gmp_int 1024 | 0.0284821 -gmp_int 1024 & 0.0266602 -gmp_int 1024 ^ 0.0299441 -gmp_int 1024 << 0.0247868 -gmp_int 1024 >> 0.0162548 -gmp_int 1024 %(int)0.0799406 -gmp_int 1024 |(int)0.0525727 -gmp_int 1024 &(int)0.0539474 -gmp_int 1024 ^(int)0.0539722 -mpq_rational 64 + 0.254473 -mpq_rational 64 - 0.260331 -mpq_rational 64 * 0.426868 -mpq_rational 64 / 1.50105 -mpq_rational 64 str 0.000927423 -mpq_rational 64 +(int)0.309729 -mpq_rational 64 -(int)0.306598 -mpq_rational 64 *(int)0.344178 -mpq_rational 64 /(int)0.32842 -mpq_rational 128 + 0.542374 -mpq_rational 128 - 0.545764 -mpq_rational 128 * 0.968054 -mpq_rational 128 / 2.78757 -mpq_rational 128 str 0.00111655 -mpq_rational 128 +(int)0.154116 -mpq_rational 128 -(int)0.151187 -mpq_rational 128 *(int)0.179899 -mpq_rational 128 /(int)0.184167 -mpq_rational 256 + 2.34795 -mpq_rational 256 - 2.3565 -mpq_rational 256 * 4.39195 -mpq_rational 256 / 8.9203 -mpq_rational 256 str 0.00175742 -mpq_rational 256 +(int)0.177483 -mpq_rational 256 -(int)0.16783 -mpq_rational 256 *(int)0.200539 -mpq_rational 256 /(int)0.206129 -mpq_rational 512 + 5.10523 -mpq_rational 512 - 5.08802 -mpq_rational 512 * 9.6344 -mpq_rational 512 / 16.8502 -mpq_rational 512 str 0.00246714 -mpq_rational 512 +(int)0.212807 -mpq_rational 512 -(int)0.212048 -mpq_rational 512 *(int)0.254142 -mpq_rational 512 /(int)0.262442 -mpq_rational 1024 + 11.2331 -mpq_rational 1024 - 11.2446 -mpq_rational 1024 * 20.9879 -mpq_rational 1024 / 35.6472 -mpq_rational 1024 str 0.00550783 -mpq_rational 1024 +(int)0.27756 -mpq_rational 1024 -(int)0.271845 -mpq_rational 1024 *(int)0.328602 -mpq_rational 1024 /(int)0.350883 -fixed_int 64 + 0.00207163 -fixed_int 64 - 0.00216403 -fixed_int 64 * 0.00392745 -fixed_int 64 / 0.0556903 -fixed_int 64 str 0.000302762 -fixed_int 64 +(int)0.00358307 -fixed_int 64 -(int)0.00354668 -fixed_int 64 *(int)0.00294381 -fixed_int 64 /(int)0.0169012 -fixed_int 64 % 0.054413 -fixed_int 64 | 0.00257616 -fixed_int 64 & 0.00259593 -fixed_int 64 ^ 0.00256688 -fixed_int 64 << 0.00115455 -fixed_int 64 >> 0.00147407 -fixed_int 64 %(int)0.0243407 -fixed_int 64 |(int)0.00208078 -fixed_int 64 &(int)0.00209559 -fixed_int 64 ^(int)0.00202777 -fixed_int 128 + 0.00326026 -fixed_int 128 - 0.00372498 -fixed_int 128 * 0.0104772 -fixed_int 128 / 0.105756 -fixed_int 128 str 0.000500691 -fixed_int 128 +(int)0.00359962 -fixed_int 128 -(int)0.00360689 -fixed_int 128 *(int)0.00422148 -fixed_int 128 /(int)0.0634475 -fixed_int 128 % 0.106105 -fixed_int 128 | 0.00363433 -fixed_int 128 & 0.00361924 -fixed_int 128 ^ 0.00361813 -fixed_int 128 << 0.00632357 -fixed_int 128 >> 0.00238745 -fixed_int 128 %(int)0.0811764 -fixed_int 128 |(int)0.00190869 -fixed_int 128 &(int)0.00245967 -fixed_int 128 ^(int)0.00237775 -fixed_int 256 + 0.00834722 -fixed_int 256 - 0.00653903 -fixed_int 256 * 0.0324122 -fixed_int 256 / 0.198305 -fixed_int 256 str 0.00111683 -fixed_int 256 +(int)0.00405163 -fixed_int 256 -(int)0.00385712 -fixed_int 256 *(int)0.00849409 -fixed_int 256 /(int)0.127666 -fixed_int 256 % 0.19685 -fixed_int 256 | 0.0108232 -fixed_int 256 & 0.0108415 -fixed_int 256 ^ 0.0108455 -fixed_int 256 << 0.00826823 -fixed_int 256 >> 0.00854822 -fixed_int 256 %(int)0.15306 -fixed_int 256 |(int)0.00275195 -fixed_int 256 &(int)0.00419648 -fixed_int 256 ^(int)0.0027653 -fixed_int 512 + 0.0128543 -fixed_int 512 - 0.0120433 -fixed_int 512 * 0.201059 -fixed_int 512 / 0.385977 -fixed_int 512 str 0.00286314 -fixed_int 512 +(int)0.00694047 -fixed_int 512 -(int)0.00681002 -fixed_int 512 *(int)0.015882 -fixed_int 512 /(int)0.244657 -fixed_int 512 % 0.385184 -fixed_int 512 | 0.0131341 -fixed_int 512 & 0.013122 -fixed_int 512 ^ 0.013116 -fixed_int 512 << 0.0150546 -fixed_int 512 >> 0.0134889 -fixed_int 512 %(int)0.303051 -fixed_int 512 |(int)0.00618124 -fixed_int 512 &(int)0.00836021 -fixed_int 512 ^(int)0.00608555 -fixed_int 1024 + 0.0330379 -fixed_int 1024 - 0.0311489 -fixed_int 1024 * 0.701951 -fixed_int 1024 / 0.708393 -fixed_int 1024 str 0.00872206 -fixed_int 1024 +(int)0.0116939 -fixed_int 1024 -(int)0.0116182 -fixed_int 1024 *(int)0.0346698 -fixed_int 1024 /(int)0.692818 -fixed_int 1024 % 0.711308 -fixed_int 1024 | 0.0176472 -fixed_int 1024 & 0.0176585 -fixed_int 1024 ^ 0.0177043 -fixed_int 1024 << 0.0242721 -fixed_int 1024 >> 0.0248274 -fixed_int 1024 %(int)0.584615 -fixed_int 1024 |(int)0.0107899 -fixed_int 1024 &(int)0.0166854 -fixed_int 1024 ^(int)0.0108555 -cpp_float 50 + 0.0142302 -cpp_float 50 - 0.0153931 -cpp_float 50 * 0.137722 -cpp_float 50 / 2.0214 -cpp_float 50 str 0.00924301 -cpp_float 50 +(int)0.0240351 -cpp_float 50 -(int)0.0252498 -cpp_float 50 *(int)0.0387713 -cpp_float 50 /(int)0.199003 -cpp_float 100 + 0.0178132 -cpp_float 100 - 0.0189367 -cpp_float 100 * 0.293407 -cpp_float 100 / 4.24891 -cpp_float 100 str 0.0160219 -cpp_float 100 +(int)0.0334828 -cpp_float 100 -(int)0.0326407 -cpp_float 100 *(int)0.063236 -cpp_float 100 /(int)0.341837 -cpp_float 500 + 0.044608 -cpp_float 500 - 0.0457737 -cpp_float 500 * 2.88591 -cpp_float 500 / 31.8072 -cpp_float 500 str 0.0639606 -cpp_float 500 +(int)0.0947227 -cpp_float 500 -(int)0.0966926 -cpp_float 500 *(int)0.224258 -cpp_float 500 /(int)1.39765 -mpfr_float 50 + 0.0194724 -mpfr_float 50 - 0.0228715 -mpfr_float 50 * 0.0587051 -mpfr_float 50 / 0.319258 -mpfr_float 50 str 0.00735177 -mpfr_float 50 +(int)0.0285879 -mpfr_float 50 -(int)0.0468028 -mpfr_float 50 *(int)0.03626 -mpfr_float 50 /(int)0.0889091 -mpfr_float 100 + 0.0211419 -mpfr_float 100 - 0.0251794 -mpfr_float 100 * 0.0946069 -mpfr_float 100 / 0.464237 -mpfr_float 100 str 0.00743083 -mpfr_float 100 +(int)0.0302544 -mpfr_float 100 -(int)0.0478439 -mpfr_float 100 *(int)0.0407275 -mpfr_float 100 /(int)0.109517 -mpfr_float 500 + 0.0338 -mpfr_float 500 - 0.037242 -mpfr_float 500 * 0.852196 -mpfr_float 500 / 2.80673 -mpfr_float 500 str 0.0339866 -mpfr_float 500 +(int)0.0427411 -mpfr_float 500 -(int)0.060913 -mpfr_float 500 *(int)0.0814603 -mpfr_float 500 /(int)0.254409 -[section:float_performance Float Type Perfomance] -[table Operator * -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.72405 (0.137722s)][3.23542 (0.293407s)][3.38644 (2.88591s)]] -[[gmp_float][[*1] (0.0505578s)][[*1] (0.090686s)][1.11127 (0.947017s)]] -[[mpfr_float][1.16115 (0.0587051s)][1.04324 (0.0946069s)][[*1] (0.852196s)]] -] -[table Operator *(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.33595 (0.0387713s)][3.1527 (0.063236s)][5.40294 (0.224258s)]] -[[gmp_float][[*1] (0.0165976s)][[*1] (0.0200577s)][[*1] (0.0415067s)]] -[[mpfr_float][2.18465 (0.03626s)][2.03052 (0.0407275s)][1.96258 (0.0814603s)]] -] -[table Operator + -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][[*1] (0.0142302s)][[*1] (0.0178132s)][1.40612 (0.044608s)]] -[[gmp_float][1.26944 (0.0180644s)][1.09329 (0.019475s)][[*1] (0.0317241s)]] -[[mpfr_float][1.36838 (0.0194724s)][1.18686 (0.0211419s)][1.06543 (0.0338s)]] -] -[table Operator +(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.08629 (0.0240351s)][2.61878 (0.0334828s)][5.04813 (0.0947227s)]] -[[gmp_float][[*1] (0.0115205s)][[*1] (0.0127856s)][[*1] (0.0187639s)]] -[[mpfr_float][2.48148 (0.0285879s)][2.36628 (0.0302544s)][2.27784 (0.0427411s)]] -] -[table Operator - -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][[*1] (0.0153931s)][[*1] (0.0189367s)][1.36514 (0.0457737s)]] -[[gmp_float][1.26468 (0.0194673s)][1.15343 (0.0218422s)][[*1] (0.0335304s)]] -[[mpfr_float][1.48583 (0.0228715s)][1.32966 (0.0251794s)][1.11069 (0.037242s)]] -] -[table Operator -(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][1.28001 (0.0252498s)][1.5908 (0.0326407s)][3.63667 (0.0966926s)]] -[[gmp_float][[*1] (0.0197263s)][[*1] (0.0205184s)][[*1] (0.0265882s)]] -[[mpfr_float][2.37262 (0.0468028s)][2.33176 (0.0478439s)][2.29098 (0.060913s)]] -] -[table Operator / -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][7.26654 (2.0214s)][11.2389 (4.24891s)][20.0284 (31.8072s)]] -[[gmp_float][[*1] (0.278179s)][[*1] (0.378055s)][[*1] (1.5881s)]] -[[mpfr_float][1.14767 (0.319258s)][1.22796 (0.464237s)][1.76735 (2.80673s)]] -] -[table Operator /(int) -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.62228 (0.199003s)][3.60376 (0.341837s)][6.01157 (1.39765s)]] -[[gmp_float][[*1] (0.0758893s)][[*1] (0.0948556s)][[*1] (0.232493s)]] -[[mpfr_float][1.17156 (0.0889091s)][1.15457 (0.109517s)][1.09427 (0.254409s)]] -] -[table Operator str -[[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.58205 (0.00924301s)][2.87378 (0.0160219s)][2.03831 (0.0639606s)]] -[[gmp_float][[*1] (0.00357972s)][[*1] (0.00557522s)][[*1] (0.0313793s)]] -[[mpfr_float][2.05373 (0.00735177s)][1.33283 (0.00743083s)][1.08309 (0.0339866s)]] -] -[endsect] +gmp_int 64 + 0.016582 +gmp_int 64 - 0.0174517 +gmp_int 64 * 0.0112253 +gmp_int 64 / 0.170951 +gmp_int 64 str 0.000343689 +gmp_int 64 +(int)0.00688382 +gmp_int 64 -(int)0.00734613 +gmp_int 64 *(int)0.00881438 +gmp_int 64 /(int)0.0465651 +gmp_int 64 % 0.164576 +gmp_int 64 | 0.0101555 +gmp_int 64 & 0.00955666 +gmp_int 64 ^ 0.00987346 +gmp_int 64 << 0.0106043 +gmp_int 64 >> 0.0093887 +gmp_int 64 %(int)0.0297463 +gmp_int 64 |(int)0.0403338 +gmp_int 64 &(int)0.0417288 +gmp_int 64 ^(int)0.0405779 +gmp_int 64 gcd 0.173816 +gmp_int 128 + 0.0183088 +gmp_int 128 - 0.0189266 +gmp_int 128 * 0.0161084 +gmp_int 128 / 0.191775 +gmp_int 128 str 0.000374699 +gmp_int 128 +(int)0.00866339 +gmp_int 128 -(int)0.0089443 +gmp_int 128 *(int)0.0114143 +gmp_int 128 /(int)0.0534638 +gmp_int 128 % 0.161212 +gmp_int 128 | 0.0107201 +gmp_int 128 & 0.0113559 +gmp_int 128 ^ 0.0112116 +gmp_int 128 << 0.0103295 +gmp_int 128 >> 0.00813413 +gmp_int 128 %(int)0.03692 +gmp_int 128 |(int)0.0412168 +gmp_int 128 &(int)0.0428359 +gmp_int 128 ^(int)0.0418522 +gmp_int 128 gcd 0.43131 +gmp_int 256 + 0.0224834 +gmp_int 256 - 0.025062 +gmp_int 256 * 0.0417471 +gmp_int 256 / 0.233656 +gmp_int 256 str 0.00059903 +gmp_int 256 +(int)0.0112071 +gmp_int 256 -(int)0.0116302 +gmp_int 256 *(int)0.0137181 +gmp_int 256 /(int)0.0667669 +gmp_int 256 % 0.191884 +gmp_int 256 | 0.0129489 +gmp_int 256 & 0.012778 +gmp_int 256 ^ 0.0134548 +gmp_int 256 << 0.0121471 +gmp_int 256 >> 0.00832878 +gmp_int 256 %(int)0.0474363 +gmp_int 256 |(int)0.0425591 +gmp_int 256 &(int)0.0436742 +gmp_int 256 ^(int)0.0425636 +gmp_int 256 gcd 2.06855 +gmp_int 512 + 0.0277439 +gmp_int 512 - 0.0318874 +gmp_int 512 * 0.0991032 +gmp_int 512 / 0.274993 +gmp_int 512 str 0.00129458 +gmp_int 512 +(int)0.014283 +gmp_int 512 -(int)0.0149874 +gmp_int 512 *(int)0.0180512 +gmp_int 512 /(int)0.0906691 +gmp_int 512 % 0.222477 +gmp_int 512 | 0.0217103 +gmp_int 512 & 0.0165285 +gmp_int 512 ^ 0.0208848 +gmp_int 512 << 0.014839 +gmp_int 512 >> 0.00988994 +gmp_int 512 %(int)0.0605682 +gmp_int 512 |(int)0.0462909 +gmp_int 512 &(int)0.046599 +gmp_int 512 ^(int)0.0456608 +gmp_int 512 gcd 4.68499 +gmp_int 1024 + 0.0397479 +gmp_int 1024 - 0.042232 +gmp_int 1024 * 0.31703 +gmp_int 1024 / 0.345984 +gmp_int 1024 str 0.00271592 +gmp_int 1024 +(int)0.0189969 +gmp_int 1024 -(int)0.0195046 +gmp_int 1024 *(int)0.0260306 +gmp_int 1024 /(int)0.140151 +gmp_int 1024 % 0.286399 +gmp_int 1024 | 0.0261953 +gmp_int 1024 & 0.023083 +gmp_int 1024 ^ 0.0248084 +gmp_int 1024 << 0.0202635 +gmp_int 1024 >> 0.0127909 +gmp_int 1024 %(int)0.0761102 +gmp_int 1024 |(int)0.049175 +gmp_int 1024 &(int)0.0499195 +gmp_int 1024 ^(int)0.0487102 +gmp_int 1024 gcd 10.1127 +cpp_int 64 + 0.0152915 +cpp_int 64 - 0.0191821 +cpp_int 64 * 0.0326218 +cpp_int 64 / 0.0951094 +cpp_int 64 str 0.000428547 +cpp_int 64 +(int)0.0132027 +cpp_int 64 -(int)0.0126144 +cpp_int 64 *(int)0.0151037 +cpp_int 64 /(int)0.0491116 +cpp_int 64 % 0.0951581 +cpp_int 64 | 0.0199629 +cpp_int 64 & 0.0196969 +cpp_int 64 ^ 0.0208608 +cpp_int 64 << 0.0179372 +cpp_int 64 >> 0.0146206 +cpp_int 64 %(int)0.0229261 +cpp_int 64 |(int)0.0185797 +cpp_int 64 &(int)0.0225055 +cpp_int 64 ^(int)0.0191337 +cpp_int 64 gcd 1.50205 +cpp_int 128 + 0.0170788 +cpp_int 128 - 0.0228373 +cpp_int 128 * 0.0375831 +cpp_int 128 / 0.163958 +cpp_int 128 str 0.000744647 +cpp_int 128 +(int)0.0144833 +cpp_int 128 -(int)0.013922 +cpp_int 128 *(int)0.0176402 +cpp_int 128 /(int)0.0972057 +cpp_int 128 % 0.169015 +cpp_int 128 | 0.0229631 +cpp_int 128 & 0.023126 +cpp_int 128 ^ 0.0229278 +cpp_int 128 << 0.0215749 +cpp_int 128 >> 0.0149198 +cpp_int 128 %(int)0.0476063 +cpp_int 128 |(int)0.0194697 +cpp_int 128 &(int)0.0270183 +cpp_int 128 ^(int)0.0194481 +cpp_int 128 gcd 3.36986 +cpp_int 256 + 0.0231877 +cpp_int 256 - 0.0293424 +cpp_int 256 * 0.113247 +cpp_int 256 / 0.336287 +cpp_int 256 str 0.00190436 +cpp_int 256 +(int)0.0161733 +cpp_int 256 -(int)0.0173225 +cpp_int 256 *(int)0.0199426 +cpp_int 256 /(int)0.229286 +cpp_int 256 % 0.306542 +cpp_int 256 | 0.0257191 +cpp_int 256 & 0.0254172 +cpp_int 256 ^ 0.0259082 +cpp_int 256 << 0.0253994 +cpp_int 256 >> 0.0172635 +cpp_int 256 %(int)0.116093 +cpp_int 256 |(int)0.0233559 +cpp_int 256 &(int)0.0367792 +cpp_int 256 ^(int)0.0232914 +cpp_int 256 gcd 7.88882 +cpp_int 512 + 0.0291058 +cpp_int 512 - 0.0380025 +cpp_int 512 * 0.337161 +cpp_int 512 / 0.487075 +cpp_int 512 str 0.00494162 +cpp_int 512 +(int)0.0201989 +cpp_int 512 -(int)0.0200688 +cpp_int 512 *(int)0.0311497 +cpp_int 512 /(int)0.375279 +cpp_int 512 % 0.459737 +cpp_int 512 | 0.0297101 +cpp_int 512 & 0.0297235 +cpp_int 512 ^ 0.0296913 +cpp_int 512 << 0.0328422 +cpp_int 512 >> 0.0234706 +cpp_int 512 %(int)0.194709 +cpp_int 512 |(int)0.0258992 +cpp_int 512 &(int)0.0529542 +cpp_int 512 ^(int)0.0258749 +cpp_int 512 gcd 19.7141 +cpp_int 1024 + 0.0410101 +cpp_int 1024 - 0.0576733 +cpp_int 1024 * 1.19319 +cpp_int 1024 / 0.850798 +cpp_int 1024 str 0.0149378 +cpp_int 1024 +(int)0.0222435 +cpp_int 1024 -(int)0.0219408 +cpp_int 1024 *(int)0.0435058 +cpp_int 1024 /(int)0.6795 +cpp_int 1024 % 0.800961 +cpp_int 1024 | 0.0369613 +cpp_int 1024 & 0.0368423 +cpp_int 1024 ^ 0.0371252 +cpp_int 1024 << 0.0474759 +cpp_int 1024 >> 0.0297527 +cpp_int 1024 %(int)0.360619 +cpp_int 1024 |(int)0.0326194 +cpp_int 1024 &(int)0.0801744 +cpp_int 1024 ^(int)0.0319848 +cpp_int 1024 gcd 53.3224 +fixed_int 64 + 0.00207275 +fixed_int 64 - 0.00214524 +fixed_int 64 * 0.00391097 +fixed_int 64 / 0.0608466 +fixed_int 64 str 0.000292286 +fixed_int 64 +(int)0.00357336 +fixed_int 64 -(int)0.00352796 +fixed_int 64 *(int)0.00292725 +fixed_int 64 /(int)0.0243018 +fixed_int 64 % 0.0603067 +fixed_int 64 | 0.00258063 +fixed_int 64 & 0.00257379 +fixed_int 64 ^ 0.00258525 +fixed_int 64 << 0.00134947 +fixed_int 64 >> 0.00560378 +fixed_int 64 %(int)0.0241499 +fixed_int 64 |(int)0.00201939 +fixed_int 64 &(int)0.00206716 +fixed_int 64 ^(int)0.00201848 +fixed_int 64 gcd 0.82127 +fixed_int 128 + 0.00325349 +fixed_int 128 - 0.00366953 +fixed_int 128 * 0.010445 +fixed_int 128 / 0.113697 +fixed_int 128 str 0.000564877 +fixed_int 128 +(int)0.00377625 +fixed_int 128 -(int)0.00360179 +fixed_int 128 *(int)0.00418426 +fixed_int 128 /(int)0.091141 +fixed_int 128 % 0.113804 +fixed_int 128 | 0.00360961 +fixed_int 128 & 0.00359913 +fixed_int 128 ^ 0.00361317 +fixed_int 128 << 0.0065905 +fixed_int 128 >> 0.00654308 +fixed_int 128 %(int)0.0809135 +fixed_int 128 |(int)0.00237125 +fixed_int 128 &(int)0.00231056 +fixed_int 128 ^(int)0.00190464 +fixed_int 128 gcd 2.05126 +fixed_int 256 + 0.00785776 +fixed_int 256 - 0.00635884 +fixed_int 256 * 0.0323875 +fixed_int 256 / 0.203194 +fixed_int 256 str 0.0013816 +fixed_int 256 +(int)0.00413397 +fixed_int 256 -(int)0.00379699 +fixed_int 256 *(int)0.00852456 +fixed_int 256 /(int)0.183053 +fixed_int 256 % 0.200368 +fixed_int 256 | 0.0105747 +fixed_int 256 & 0.0105856 +fixed_int 256 ^ 0.0105755 +fixed_int 256 << 0.00874545 +fixed_int 256 >> 0.00906624 +fixed_int 256 %(int)0.152826 +fixed_int 256 |(int)0.00261619 +fixed_int 256 &(int)0.00424202 +fixed_int 256 ^(int)0.00263274 +fixed_int 256 gcd 5.42715 +fixed_int 512 + 0.0131311 +fixed_int 512 - 0.0122513 +fixed_int 512 * 0.205979 +fixed_int 512 / 0.383601 +fixed_int 512 str 0.0043558 +fixed_int 512 +(int)0.00639746 +fixed_int 512 -(int)0.00641876 +fixed_int 512 *(int)0.0152369 +fixed_int 512 /(int)0.363289 +fixed_int 512 % 0.38201 +fixed_int 512 | 0.0131075 +fixed_int 512 & 0.0131292 +fixed_int 512 ^ 0.01314 +fixed_int 512 << 0.0130248 +fixed_int 512 >> 0.0131451 +fixed_int 512 %(int)0.304714 +fixed_int 512 |(int)0.00574368 +fixed_int 512 &(int)0.00810836 +fixed_int 512 ^(int)0.00576694 +fixed_int 512 gcd 16.6269 +fixed_int 1024 + 0.0322386 +fixed_int 1024 - 0.0312142 +fixed_int 1024 * 0.716002 +fixed_int 1024 / 0.728338 +fixed_int 1024 str 0.0135445 +fixed_int 1024 +(int)0.011986 +fixed_int 1024 -(int)0.0119838 +fixed_int 1024 *(int)0.0349878 +fixed_int 1024 /(int)0.708856 +fixed_int 1024 % 0.723622 +fixed_int 1024 | 0.0181468 +fixed_int 1024 & 0.0182648 +fixed_int 1024 ^ 0.018185 +fixed_int 1024 << 0.0252997 +fixed_int 1024 >> 0.0257832 +fixed_int 1024 %(int)0.597535 +fixed_int 1024 |(int)0.0116417 +fixed_int 1024 &(int)0.0172111 +fixed_int 1024 ^(int)0.011526 +fixed_int 1024 gcd 70.6396 [section:integer_performance Integer Type Perfomance] [table Operator % [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.054413s)][[*1] (0.106105s)][[*1] (0.19685s)][1.67316 (0.385184s)][2.3543 (0.711308s)]] -[[gmp_int][3.04743 (0.16582s)][1.55485 (0.164977s)][1.00128 (0.197103s)][[*1] (0.230214s)][[*1] (0.302132s)]] +[[cpp_int][1.5779 (0.0951581s)][1.48514 (0.169015s)][1.59753 (0.306542s)][2.06645 (0.459737s)][2.79666 (0.800961s)]] +[[fixed_int][[*1] (0.0603067s)][[*1] (0.113804s)][1.04421 (0.200368s)][1.71708 (0.38201s)][2.52662 (0.723622s)]] +[[gmp_int][2.72898 (0.164576s)][1.41658 (0.161212s)][[*1] (0.191884s)][[*1] (0.222477s)][[*1] (0.286399s)]] ] [table Operator %(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0243407s)][1.99962 (0.0811764s)][2.96437 (0.15306s)][4.64875 (0.303051s)][7.31311 (0.584615s)]] -[[gmp_int][1.42913 (0.034786s)][[*1] (0.0405959s)][[*1] (0.0516333s)][[*1] (0.0651899s)][[*1] (0.0799406s)]] +[[cpp_int][[*1] (0.0229261s)][1.28944 (0.0476063s)][2.44735 (0.116093s)][3.21471 (0.194709s)][4.73812 (0.360619s)]] +[[fixed_int][1.05338 (0.0241499s)][2.19159 (0.0809135s)][3.22171 (0.152826s)][5.03092 (0.304714s)][7.85093 (0.597535s)]] +[[gmp_int][1.29749 (0.0297463s)][[*1] (0.03692s)][[*1] (0.0474363s)][[*1] (0.0605682s)][[*1] (0.0761102s)]] ] [table Operator & [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00259593s)][[*1] (0.00361924s)][[*1] (0.0108415s)][[*1] (0.013122s)][[*1] (0.0176585s)]] -[[gmp_int][4.85187 (0.0125951s)][3.96768 (0.01436s)][1.43661 (0.015575s)][1.50716 (0.019777s)][1.50977 (0.0266602s)]] +[[cpp_int][7.65289 (0.0196969s)][6.42545 (0.023126s)][2.4011 (0.0254172s)][2.26393 (0.0297235s)][2.01712 (0.0368423s)]] +[[fixed_int][[*1] (0.00257379s)][[*1] (0.00359913s)][[*1] (0.0105856s)][[*1] (0.0131292s)][[*1] (0.0182648s)]] +[[gmp_int][3.71307 (0.00955666s)][3.15518 (0.0113559s)][1.2071 (0.012778s)][1.25891 (0.0165285s)][1.2638 (0.023083s)]] ] [table Operator &(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00209559s)][[*1] (0.00245967s)][[*1] (0.00419648s)][[*1] (0.00836021s)][[*1] (0.0166854s)]] -[[gmp_int][21.0856 (0.0441868s)][18.4577 (0.0453998s)][11.1151 (0.0466442s)][5.96293 (0.0498514s)][3.23322 (0.0539474s)]] +[[cpp_int][10.8871 (0.0225055s)][11.6934 (0.0270183s)][8.67021 (0.0367792s)][6.53082 (0.0529542s)][4.65829 (0.0801744s)]] +[[fixed_int][[*1] (0.00206716s)][[*1] (0.00231056s)][[*1] (0.00424202s)][[*1] (0.00810836s)][[*1] (0.0172111s)]] +[[gmp_int][20.1865 (0.0417288s)][18.5392 (0.0428359s)][10.2956 (0.0436742s)][5.74703 (0.046599s)][2.90042 (0.0499195s)]] ] [table Operator * [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00392745s)][[*1] (0.0104772s)][[*1] (0.0324122s)][1.95004 (0.201059s)][2.14731 (0.701951s)]] -[[gmp_int][2.96502 (0.011645s)][1.74194 (0.0182506s)][1.4714 (0.0476911s)][[*1] (0.103105s)][[*1] (0.326898s)]] +[[cpp_int][8.34111 (0.0326218s)][3.59818 (0.0375831s)][3.49662 (0.113247s)][3.40211 (0.337161s)][3.76364 (1.19319s)]] +[[fixed_int][[*1] (0.00391097s)][[*1] (0.010445s)][[*1] (0.0323875s)][2.07843 (0.205979s)][2.25847 (0.716002s)]] +[[gmp_int][2.87022 (0.0112253s)][1.54221 (0.0161084s)][1.28899 (0.0417471s)][[*1] (0.0991032s)][[*1] (0.31703s)]] ] [table Operator *(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00294381s)][[*1] (0.00422148s)][[*1] (0.00849409s)][[*1] (0.015882s)][1.15522 (0.0346698s)]] -[[gmp_int][4.09319 (0.0120496s)][3.01026 (0.0127078s)][2.0089 (0.0170638s)][1.34479 (0.021358s)][[*1] (0.0300116s)]] +[[cpp_int][5.15967 (0.0151037s)][4.21584 (0.0176402s)][2.33943 (0.0199426s)][2.04436 (0.0311497s)][1.67133 (0.0435058s)]] +[[fixed_int][[*1] (0.00292725s)][[*1] (0.00418426s)][[*1] (0.00852456s)][[*1] (0.0152369s)][1.3441 (0.0349878s)]] +[[gmp_int][3.01114 (0.00881438s)][2.72791 (0.0114143s)][1.60924 (0.0137181s)][1.1847 (0.0180512s)][[*1] (0.0260306s)]] ] [table Operator + [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00207163s)][[*1] (0.00326026s)][[*1] (0.00834722s)][[*1] (0.0128543s)][[*1] (0.0330379s)]] -[[gmp_int][8.08642 (0.0167521s)][5.89259 (0.0192114s)][2.76118 (0.0230482s)][2.19911 (0.028268s)][1.23787 (0.0408966s)]] +[[cpp_int][7.37741 (0.0152915s)][5.2494 (0.0170788s)][2.95092 (0.0231877s)][2.21655 (0.0291058s)][1.27208 (0.0410101s)]] +[[fixed_int][[*1] (0.00207275s)][[*1] (0.00325349s)][[*1] (0.00785776s)][[*1] (0.0131311s)][[*1] (0.0322386s)]] +[[gmp_int][7.99998 (0.016582s)][5.62745 (0.0183088s)][2.86129 (0.0224834s)][2.11283 (0.0277439s)][1.23293 (0.0397479s)]] ] [table Operator +(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00358307s)][[*1] (0.00359962s)][[*1] (0.00405163s)][[*1] (0.00694047s)][[*1] (0.0116939s)]] -[[gmp_int][2.01857 (0.00723269s)][2.42047 (0.00871277s)][3.5813 (0.0145101s)][2.45162 (0.0170154s)][1.69017 (0.0197647s)]] +[[cpp_int][3.69474 (0.0132027s)][3.83536 (0.0144833s)][3.91229 (0.0161733s)][3.15733 (0.0201989s)][1.85579 (0.0222435s)]] +[[fixed_int][[*1] (0.00357336s)][[*1] (0.00377625s)][[*1] (0.00413397s)][[*1] (0.00639746s)][[*1] (0.011986s)]] +[[gmp_int][1.92643 (0.00688382s)][2.29418 (0.00866339s)][2.71097 (0.0112071s)][2.23261 (0.014283s)][1.58492 (0.0189969s)]] ] [table Operator - [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00216403s)][[*1] (0.00372498s)][[*1] (0.00653903s)][[*1] (0.0120433s)][[*1] (0.0311489s)]] -[[gmp_int][8.72818 (0.0188881s)][5.89208 (0.0219479s)][4.43331 (0.0289896s)][2.92463 (0.0352221s)][1.48689 (0.0463151s)]] +[[cpp_int][8.94166 (0.0191821s)][6.22351 (0.0228373s)][4.61443 (0.0293424s)][3.10192 (0.0380025s)][1.84766 (0.0576733s)]] +[[fixed_int][[*1] (0.00214524s)][[*1] (0.00366953s)][[*1] (0.00635884s)][[*1] (0.0122513s)][[*1] (0.0312142s)]] +[[gmp_int][8.13505 (0.0174517s)][5.15777 (0.0189266s)][3.94128 (0.025062s)][2.60278 (0.0318874s)][1.35297 (0.042232s)]] ] [table Operator -(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00354668s)][[*1] (0.00360689s)][[*1] (0.00385712s)][[*1] (0.00681002s)][[*1] (0.0116182s)]] -[[gmp_int][2.09194 (0.00741945s)][3.61625 (0.0130434s)][3.8458 (0.0148337s)][2.63767 (0.0179625s)][1.72107 (0.0199956s)]] +[[cpp_int][3.57555 (0.0126144s)][3.86529 (0.013922s)][4.56215 (0.0173225s)][3.12658 (0.0200688s)][1.83087 (0.0219408s)]] +[[fixed_int][[*1] (0.00352796s)][[*1] (0.00360179s)][[*1] (0.00379699s)][[*1] (0.00641876s)][[*1] (0.0119838s)]] +[[gmp_int][2.08226 (0.00734613s)][2.4833 (0.0089443s)][3.063 (0.0116302s)][2.33493 (0.0149874s)][1.62759 (0.0195046s)]] ] [table Operator / [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0556903s)][[*1] (0.105756s)][[*1] (0.198305s)][1.37248 (0.385977s)][1.91862 (0.708393s)]] -[[gmp_int][3.04721 (0.1697s)][1.85862 (0.196561s)][1.21304 (0.240552s)][[*1] (0.281226s)][[*1] (0.36922s)]] +[[cpp_int][1.5631 (0.0951094s)][1.44205 (0.163958s)][1.655 (0.336287s)][1.77123 (0.487075s)][2.45907 (0.850798s)]] +[[fixed_int][[*1] (0.0608466s)][[*1] (0.113697s)][[*1] (0.203194s)][1.39495 (0.383601s)][2.10512 (0.728338s)]] +[[gmp_int][2.80954 (0.170951s)][1.68671 (0.191775s)][1.14992 (0.233656s)][[*1] (0.274993s)][[*1] (0.345984s)]] ] [table Operator /(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0169012s)][1.11654 (0.0634475s)][1.86084 (0.127666s)][2.57379 (0.244657s)][4.79191 (0.692818s)]] -[[gmp_int][2.96468 (0.0501068s)][[*1] (0.0568248s)][[*1] (0.0686065s)][[*1] (0.0950571s)][[*1] (0.144581s)]] +[[cpp_int][2.0209 (0.0491116s)][1.81816 (0.0972057s)][3.43412 (0.229286s)][4.13899 (0.375279s)][4.84836 (0.6795s)]] +[[fixed_int][[*1] (0.0243018s)][1.70472 (0.091141s)][2.74167 (0.183053s)][4.00675 (0.363289s)][5.05782 (0.708856s)]] +[[gmp_int][1.91611 (0.0465651s)][[*1] (0.0534638s)][[*1] (0.0667669s)][[*1] (0.0906691s)][[*1] (0.140151s)]] ] [table Operator << [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00115455s)][[*1] (0.00632357s)][[*1] (0.00826823s)][[*1] (0.0150546s)][[*1] (0.0242721s)]] -[[gmp_int][8.39362 (0.00969083s)][2.07445 (0.0131179s)][1.80141 (0.0148945s)][1.21421 (0.0182795s)][1.02121 (0.0247868s)]] +[[cpp_int][13.292 (0.0179372s)][3.27363 (0.0215749s)][2.9043 (0.0253994s)][2.52151 (0.0328422s)][2.34293 (0.0474759s)]] +[[fixed_int][[*1] (0.00134947s)][[*1] (0.0065905s)][[*1] (0.00874545s)][[*1] (0.0130248s)][1.24854 (0.0252997s)]] +[[gmp_int][7.85814 (0.0106043s)][1.56732 (0.0103295s)][1.38897 (0.0121471s)][1.13928 (0.014839s)][[*1] (0.0202635s)]] ] [table Operator >> [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00147407s)][[*1] (0.00238745s)][[*1] (0.00854822s)][1.10734 (0.0134889s)][1.52739 (0.0248274s)]] -[[gmp_int][8.85991 (0.0130601s)][4.4845 (0.0107065s)][1.30011 (0.0111136s)][[*1] (0.0121814s)][[*1] (0.0162548s)]] +[[cpp_int][2.60907 (0.0146206s)][2.28025 (0.0149198s)][2.07275 (0.0172635s)][2.37318 (0.0234706s)][2.32609 (0.0297527s)]] +[[fixed_int][[*1] (0.00560378s)][[*1] (0.00654308s)][1.08854 (0.00906624s)][1.32914 (0.0131451s)][2.01575 (0.0257832s)]] +[[gmp_int][1.67542 (0.0093887s)][1.24317 (0.00813413s)][[*1] (0.00832878s)][[*1] (0.00988994s)][[*1] (0.0127909s)]] ] [table Operator ^ [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00256688s)][[*1] (0.00361813s)][[*1] (0.0108455s)][[*1] (0.013116s)][[*1] (0.0177043s)]] -[[gmp_int][5.05409 (0.0129732s)][3.88746 (0.0140653s)][1.53751 (0.0166751s)][1.90691 (0.025011s)][1.69135 (0.0299441s)]] +[[cpp_int][8.06918 (0.0208608s)][6.34562 (0.0229278s)][2.44983 (0.0259082s)][2.25961 (0.0296913s)][2.04153 (0.0371252s)]] +[[fixed_int][[*1] (0.00258525s)][[*1] (0.00361317s)][[*1] (0.0105755s)][[*1] (0.01314s)][[*1] (0.018185s)]] +[[gmp_int][3.81916 (0.00987346s)][3.10299 (0.0112116s)][1.27226 (0.0134548s)][1.5894 (0.0208848s)][1.36422 (0.0248084s)]] ] [table Operator ^(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00202777s)][[*1] (0.00237775s)][[*1] (0.0027653s)][[*1] (0.00608555s)][[*1] (0.0108555s)]] -[[gmp_int][21.821 (0.0442481s)][19.7034 (0.0468496s)][16.847 (0.0465869s)][8.16164 (0.049668s)][4.97188 (0.0539722s)]] +[[cpp_int][9.47925 (0.0191337s)][10.2109 (0.0194481s)][8.84686 (0.0232914s)][4.48677 (0.0258749s)][2.775 (0.0319848s)]] +[[fixed_int][[*1] (0.00201848s)][[*1] (0.00190464s)][[*1] (0.00263274s)][[*1] (0.00576694s)][[*1] (0.011526s)]] +[[gmp_int][20.1032 (0.0405779s)][21.9738 (0.0418522s)][16.1671 (0.0425636s)][7.91768 (0.0456608s)][4.2261 (0.0487102s)]] +] +[table Operator gcd +[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][8.64165 (1.50205s)][7.81307 (3.36986s)][3.81369 (7.88882s)][4.20792 (19.7141s)][5.27284 (53.3224s)]] +[[fixed_int][4.72495 (0.82127s)][4.75589 (2.05126s)][2.62364 (5.42715s)][3.54898 (16.6269s)][6.98527 (70.6396s)]] +[[gmp_int][[*1] (0.173816s)][[*1] (0.43131s)][[*1] (2.06855s)][[*1] (4.68499s)][[*1] (10.1127s)]] ] [table Operator str [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.000302762s)][[*1] (0.000500691s)][1.14936 (0.00111683s)][1.71055 (0.00286314s)][2.93313 (0.00872206s)]] -[[gmp_int][1.11188 (0.000336635s)][4.63553 (0.00232097s)][[*1] (0.000971703s)][[*1] (0.00167382s)][[*1] (0.00297363s)]] +[[cpp_int][1.46619 (0.000428547s)][1.98732 (0.000744647s)][3.17907 (0.00190436s)][3.81717 (0.00494162s)][5.50009 (0.0149378s)]] +[[fixed_int][[*1] (0.000292286s)][1.50755 (0.000564877s)][2.30639 (0.0013816s)][3.36465 (0.0043558s)][4.98706 (0.0135445s)]] +[[gmp_int][1.17587 (0.000343689s)][[*1] (0.000374699s)][[*1] (0.00059903s)][[*1] (0.00129458s)][[*1] (0.00271592s)]] ] [table Operator | [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00257616s)][[*1] (0.00363433s)][[*1] (0.0108232s)][[*1] (0.0131341s)][[*1] (0.0176472s)]] -[[gmp_int][4.49789 (0.0115873s)][3.7058 (0.0134681s)][1.47085 (0.0159192s)][1.58756 (0.0208511s)][1.61398 (0.0284821s)]] +[[cpp_int][7.73565 (0.0199629s)][6.36166 (0.0229631s)][2.43214 (0.0257191s)][2.26665 (0.0297101s)][2.0368 (0.0369613s)]] +[[fixed_int][[*1] (0.00258063s)][[*1] (0.00360961s)][[*1] (0.0105747s)][[*1] (0.0131075s)][[*1] (0.0181468s)]] +[[gmp_int][3.9353 (0.0101555s)][2.96987 (0.0107201s)][1.22452 (0.0129489s)][1.65632 (0.0217103s)][1.44352 (0.0261953s)]] ] [table Operator |(int) [[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00208078s)][[*1] (0.00190869s)][[*1] (0.00275195s)][[*1] (0.00618124s)][[*1] (0.0107899s)]] -[[gmp_int][20.4129 (0.0424747s)][23.0676 (0.0440289s)][17.2504 (0.0474723s)][7.98521 (0.0493584s)][4.87243 (0.0525727s)]] -] -[endsect] -[section:rational_performance Rational Type Perfomance] -[table Operator * -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.426868s)][[*1] (0.968054s)][[*1] (4.39195s)][[*1] (9.6344s)][[*1] (20.9879s)]] -] -[table Operator *(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.344178s)][[*1] (0.179899s)][[*1] (0.200539s)][[*1] (0.254142s)][[*1] (0.328602s)]] -] -[table Operator + -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.254473s)][[*1] (0.542374s)][[*1] (2.34795s)][[*1] (5.10523s)][[*1] (11.2331s)]] -] -[table Operator +(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.309729s)][[*1] (0.154116s)][[*1] (0.177483s)][[*1] (0.212807s)][[*1] (0.27756s)]] -] -[table Operator - -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.260331s)][[*1] (0.545764s)][[*1] (2.3565s)][[*1] (5.08802s)][[*1] (11.2446s)]] -] -[table Operator -(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.306598s)][[*1] (0.151187s)][[*1] (0.16783s)][[*1] (0.212048s)][[*1] (0.271845s)]] -] -[table Operator / -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (1.50105s)][[*1] (2.78757s)][[*1] (8.9203s)][[*1] (16.8502s)][[*1] (35.6472s)]] -] -[table Operator /(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.32842s)][[*1] (0.184167s)][[*1] (0.206129s)][[*1] (0.262442s)][[*1] (0.350883s)]] -] -[table Operator str -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.000927423s)][[*1] (0.00111655s)][[*1] (0.00175742s)][[*1] (0.00246714s)][[*1] (0.00550783s)]] +[[cpp_int][9.20066 (0.0185797s)][8.21071 (0.0194697s)][8.92746 (0.0233559s)][4.50916 (0.0258992s)][2.80194 (0.0326194s)]] +[[fixed_int][[*1] (0.00201939s)][[*1] (0.00237125s)][[*1] (0.00261619s)][[*1] (0.00574368s)][[*1] (0.0116417s)]] +[[gmp_int][19.9733 (0.0403338s)][17.3819 (0.0412168s)][16.2676 (0.0425591s)][8.05945 (0.0462909s)][4.22404 (0.049175s)]] ] [endsect] diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 72ef2938..dbf6b539 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -587,6 +587,11 @@ int main() test("cpp_int", 256); test("cpp_int", 512); test("cpp_int", 1024); + + test > >("cpp_int(fixed)", 128); + test > >("cpp_int(fixed)", 256); + test > >("cpp_int(fixed)", 512); + test > >("cpp_int(fixed)", 1024); #endif #ifdef TEST_MPQ test("mpq_rational", 64); From 2178bef843a0b12e6247339181b0828f4ab58911 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 8 Mar 2012 17:54:28 +0000 Subject: [PATCH 126/256] Fix some bugs in division and addition code [SVN r77266] --- include/boost/multiprecision/cpp_int.hpp | 4 +- performance/performance_test-gcc-linux.log | 665 ++++----------------- performance/performance_test.cpp | 3 +- 3 files changed, 127 insertions(+), 545 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 6c0addf1..548c0e33 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1060,7 +1060,7 @@ inline void multiply(cpp_int_backend& result, const typename cpp_int_backend::limb_pointer pr = result.limbs(); double_limb_type carry = 0; - std::memset(pr, 0, (as + bs) * sizeof(limb_type)); + std::memset(pr, 0, result.size() * sizeof(limb_type)); unsigned inner_limit = result.size() - as; for(unsigned i = 0; i < as; ++i) { @@ -1242,7 +1242,7 @@ void divide_unsigned_helper(cpp_int_backend& result, { double_limb_type a, b; a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; - b = y_order > 1 ? + b = y_order ? (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] : py[0]; result = a / b; diff --git a/performance/performance_test-gcc-linux.log b/performance/performance_test-gcc-linux.log index 4fc1d067..6df495e4 100644 --- a/performance/performance_test-gcc-linux.log +++ b/performance/performance_test-gcc-linux.log @@ -1,542 +1,123 @@ -gmp_int 64 + 0.0168195 -gmp_int 64 - 0.0186168 -gmp_int 64 * 0.0114224 -gmp_int 64 / 0.168483 -gmp_int 64 str 0.000337753 -gmp_int 64 +(int)0.00683062 -gmp_int 64 -(int)0.00706193 -gmp_int 64 *(int)0.00869587 -gmp_int 64 /(int)0.0453323 -gmp_int 64 % 0.157804 -gmp_int 64 | 0.00932423 -gmp_int 64 & 0.00944499 -gmp_int 64 ^ 0.00996572 -gmp_int 64 << 0.00922261 -gmp_int 64 >> 0.00918099 -gmp_int 64 %(int)0.0281261 -gmp_int 64 |(int)0.0397808 -gmp_int 64 &(int)0.0415959 -gmp_int 64 ^(int)0.0404741 -gmp_int 64 gcd 0.176988 -gmp_int 128 + 0.0179677 -gmp_int 128 - 0.0189371 -gmp_int 128 * 0.0161959 -gmp_int 128 / 0.190813 -gmp_int 128 str 0.000372045 -gmp_int 128 +(int)0.00848258 -gmp_int 128 -(int)0.00875216 -gmp_int 128 *(int)0.0113487 -gmp_int 128 /(int)0.0525228 -gmp_int 128 % 0.15826 -gmp_int 128 | 0.0106091 -gmp_int 128 & 0.0112477 -gmp_int 128 ^ 0.0113254 -gmp_int 128 << 0.0100071 -gmp_int 128 >> 0.00769246 -gmp_int 128 %(int)0.0347099 -gmp_int 128 |(int)0.0407317 -gmp_int 128 &(int)0.0426387 -gmp_int 128 ^(int)0.041833 -gmp_int 128 gcd 0.432692 -gmp_int 256 + 0.0228276 -gmp_int 256 - 0.0253604 -gmp_int 256 * 0.0424289 -gmp_int 256 / 0.232371 -gmp_int 256 str 0.000590578 -gmp_int 256 +(int)0.0111117 -gmp_int 256 -(int)0.0119104 -gmp_int 256 *(int)0.0138547 -gmp_int 256 /(int)0.0658471 -gmp_int 256 % 0.189604 -gmp_int 256 | 0.0128476 -gmp_int 256 & 0.0148126 -gmp_int 256 ^ 0.0134169 -gmp_int 256 << 0.0117499 -gmp_int 256 >> 0.00808343 -gmp_int 256 %(int)0.0471351 -gmp_int 256 |(int)0.0423473 -gmp_int 256 &(int)0.0436809 -gmp_int 256 ^(int)0.0426564 -gmp_int 256 gcd 2.06786 -gmp_int 512 + 0.0274004 -gmp_int 512 - 0.0318076 -gmp_int 512 * 0.097384 -gmp_int 512 / 0.272392 -gmp_int 512 str 0.0012598 -gmp_int 512 +(int)0.0142198 -gmp_int 512 -(int)0.0148327 -gmp_int 512 *(int)0.0179982 -gmp_int 512 /(int)0.0906272 -gmp_int 512 % 0.22163 -gmp_int 512 | 0.0211022 -gmp_int 512 & 0.0165864 -gmp_int 512 ^ 0.0218245 -gmp_int 512 << 0.0145569 -gmp_int 512 >> 0.00978776 -gmp_int 512 %(int)0.0601084 -gmp_int 512 |(int)0.0460084 -gmp_int 512 &(int)0.0466719 -gmp_int 512 ^(int)0.045828 -gmp_int 512 gcd 4.69155 -gmp_int 1024 + 0.038508 -gmp_int 1024 - 0.0417826 -gmp_int 1024 * 0.315222 -gmp_int 1024 / 0.352494 -gmp_int 1024 str 0.00274057 -gmp_int 1024 +(int)0.0187457 -gmp_int 1024 -(int)0.0194778 -gmp_int 1024 *(int)0.0259764 -gmp_int 1024 /(int)0.140287 -gmp_int 1024 % 0.284404 -gmp_int 1024 | 0.0242278 -gmp_int 1024 & 0.0235658 -gmp_int 1024 ^ 0.0249122 -gmp_int 1024 << 0.0202809 -gmp_int 1024 >> 0.0127441 -gmp_int 1024 %(int)0.0758432 -gmp_int 1024 |(int)0.0495155 -gmp_int 1024 &(int)0.0503542 -gmp_int 1024 ^(int)0.0510615 -gmp_int 1024 gcd 10.1136 -cpp_int 64 + 0.0157994 -cpp_int 64 - 0.0256769 -cpp_int 64 * 0.0226198 -cpp_int 64 / 0.102281 -cpp_int 64 str 0.000380146 -cpp_int 64 +(int)0.0103873 -cpp_int 64 -(int)0.00898962 -cpp_int 64 *(int)0.0159193 -cpp_int 64 /(int)0.0522854 -cpp_int 64 % 0.0999552 -cpp_int 64 | 0.0203489 -cpp_int 64 & 0.0202989 -cpp_int 64 ^ 0.020334 -cpp_int 64 << 0.0166545 -cpp_int 64 >> 0.0143805 -cpp_int 64 %(int)0.0389361 -cpp_int 64 |(int)0.0198498 -cpp_int 64 &(int)0.024074 -cpp_int 64 ^(int)0.0198061 -cpp_int 64 gcd 1.72384 -cpp_int 128 + 0.0182643 -cpp_int 128 - 0.0271678 -cpp_int 128 * 0.0408988 -cpp_int 128 / 0.172852 -cpp_int 128 str 0.000693873 -cpp_int 128 +(int)0.0116175 -cpp_int 128 -(int)0.0104572 -cpp_int 128 *(int)0.0187569 -cpp_int 128 /(int)0.108782 -cpp_int 128 % 0.179562 -cpp_int 128 | 0.0245406 -cpp_int 128 & 0.0245186 -cpp_int 128 ^ 0.0247923 -cpp_int 128 << 0.0196597 -cpp_int 128 >> 0.0157968 -cpp_int 128 %(int)0.0940069 -cpp_int 128 |(int)0.0210111 -cpp_int 128 &(int)0.0322746 -cpp_int 128 ^(int)0.0210955 -cpp_int 128 gcd 3.97787 -cpp_int 256 + 0.0236538 -cpp_int 256 - 0.0339319 -cpp_int 256 * 0.107568 -cpp_int 256 / 0.376559 -cpp_int 256 str 0.00192567 -cpp_int 256 +(int)0.0156148 -cpp_int 256 -(int)0.0125633 -cpp_int 256 *(int)0.0227126 -cpp_int 256 /(int)0.240023 -cpp_int 256 % 0.324919 -cpp_int 256 | 0.0273651 -cpp_int 256 & 0.0268812 -cpp_int 256 ^ 0.027153 -cpp_int 256 << 0.0240014 -cpp_int 256 >> 0.0178114 -cpp_int 256 %(int)0.196223 -cpp_int 256 |(int)0.0238206 -cpp_int 256 &(int)0.0518555 -cpp_int 256 ^(int)0.0237059 -cpp_int 256 gcd 9.44724 -cpp_int 512 + 0.0286286 -cpp_int 512 - 0.0473463 -cpp_int 512 * 0.36983 -cpp_int 512 / 0.53608 -cpp_int 512 str 0.00489147 -cpp_int 512 +(int)0.0165983 -cpp_int 512 -(int)0.0157028 -cpp_int 512 *(int)0.0327202 -cpp_int 512 /(int)0.39506 -cpp_int 512 % 0.484383 -cpp_int 512 | 0.0336779 -cpp_int 512 & 0.0332565 -cpp_int 512 ^ 0.033731 -cpp_int 512 << 0.032593 -cpp_int 512 >> 0.0249415 -cpp_int 512 %(int)0.347801 -cpp_int 512 |(int)0.0270701 -cpp_int 512 &(int)0.0847243 -cpp_int 512 ^(int)0.0270095 -cpp_int 512 gcd 22.6824 -cpp_int 1024 + 0.041093 -cpp_int 1024 - 0.065839 -cpp_int 1024 * 1.36107 -cpp_int 1024 / 0.91127 -cpp_int 1024 str 0.0150341 -cpp_int 1024 +(int)0.0212673 -cpp_int 1024 -(int)0.0207903 -cpp_int 1024 *(int)0.0482894 -cpp_int 1024 /(int)0.711756 -cpp_int 1024 % 0.853306 -cpp_int 1024 | 0.0459271 -cpp_int 1024 & 0.0455113 -cpp_int 1024 ^ 0.0457905 -cpp_int 1024 << 0.053456 -cpp_int 1024 >> 0.0339107 -cpp_int 1024 %(int)0.653379 -cpp_int 1024 |(int)0.0323199 -cpp_int 1024 &(int)0.152555 -cpp_int 1024 ^(int)0.032137 -cpp_int 1024 gcd 59.7424 -tommath_int 64 + 0.0166687 -tommath_int 64 - 0.0270094 -tommath_int 64 * 0.0386521 -tommath_int 64 / 0.98286 -tommath_int 64 str 0.00413258 -tommath_int 64 +(int)0.174336 -tommath_int 64 -(int)0.174454 -tommath_int 64 *(int)0.191871 -tommath_int 64 /(int)0.886522 -tommath_int 64 % 0.980074 -tommath_int 64 | 0.0716826 -tommath_int 64 & 0.0777977 -tommath_int 64 ^ 0.0730863 -tommath_int 64 << 0.0200111 -tommath_int 64 >> 0.124855 -tommath_int 64 %(int)0.734449 -tommath_int 64 |(int)0.254639 -tommath_int 64 &(int)0.226047 -tommath_int 64 ^(int)0.252631 -tommath_int 64 gcd 3.80432 -tommath_int 128 + 0.0169388 -tommath_int 128 - 0.0247515 -tommath_int 128 * 0.0588799 -tommath_int 128 / 1.11408 -tommath_int 128 str 0.00853237 -tommath_int 128 +(int)0.17465 -tommath_int 128 -(int)0.169003 -tommath_int 128 *(int)0.193938 -tommath_int 128 /(int)0.901904 -tommath_int 128 % 1.09735 -tommath_int 128 | 0.0714914 -tommath_int 128 & 0.0734869 -tommath_int 128 ^ 0.0724281 -tommath_int 128 << 0.0315817 -tommath_int 128 >> 0.137548 -tommath_int 128 %(int)0.835579 -tommath_int 128 |(int)0.25282 -tommath_int 128 &(int)0.22947 -tommath_int 128 ^(int)0.253212 -tommath_int 128 gcd 7.29351 -tommath_int 256 + 0.0191982 -tommath_int 256 - 0.0260308 -tommath_int 256 * 0.0850765 -tommath_int 256 / 1.3375 -tommath_int 256 str 0.0217479 -tommath_int 256 +(int)0.173229 -tommath_int 256 -(int)0.17296 -tommath_int 256 *(int)0.201834 -tommath_int 256 /(int)1.153 -tommath_int 256 % 1.34044 -tommath_int 256 | 0.074755 -tommath_int 256 & 0.0755475 -tommath_int 256 ^ 0.0805466 -tommath_int 256 << 0.0382785 -tommath_int 256 >> 0.141309 -tommath_int 256 %(int)1.19796 -tommath_int 256 |(int)0.255801 -tommath_int 256 &(int)0.233997 -tommath_int 256 ^(int)0.25474 -tommath_int 256 gcd 15.3331 -tommath_int 512 + 0.0240257 -tommath_int 512 - 0.0303227 -tommath_int 512 * 0.195612 -tommath_int 512 / 1.96548 -tommath_int 512 str 0.0563537 -tommath_int 512 +(int)0.174848 -tommath_int 512 -(int)0.176184 -tommath_int 512 *(int)0.223672 -tommath_int 512 /(int)1.68054 -tommath_int 512 % 1.95689 -tommath_int 512 | 0.0801272 -tommath_int 512 & 0.0806169 -tommath_int 512 ^ 0.080112 -tommath_int 512 << 0.0451545 -tommath_int 512 >> 0.151606 -tommath_int 512 %(int)1.74812 -tommath_int 512 |(int)0.260477 -tommath_int 512 &(int)0.237892 -tommath_int 512 ^(int)0.259232 -tommath_int 512 gcd 31.9471 -tommath_int 1024 + 0.035905 -tommath_int 1024 - 0.0429664 -tommath_int 1024 * 0.564578 -tommath_int 1024 / 3.17298 -tommath_int 1024 str 0.187413 -tommath_int 1024 +(int)0.190852 -tommath_int 1024 -(int)0.189438 -tommath_int 1024 *(int)0.271175 -tommath_int 1024 /(int)2.92342 -tommath_int 1024 % 3.20126 -tommath_int 1024 | 0.0939085 -tommath_int 1024 & 0.10264 -tommath_int 1024 ^ 0.0957583 -tommath_int 1024 << 0.0670281 -tommath_int 1024 >> 0.166781 -tommath_int 1024 %(int)2.88178 -tommath_int 1024 |(int)0.267844 -tommath_int 1024 &(int)0.252612 -tommath_int 1024 ^(int)0.270201 -tommath_int 1024 gcd 68.3106 -fixed_int 64 + 0.00139312 -fixed_int 64 - 0.00162339 -fixed_int 64 * 0.00699782 -fixed_int 64 / 0.0526074 -fixed_int 64 str 0.000220769 -fixed_int 64 +(int)0.00224121 -fixed_int 64 -(int)0.00194005 -fixed_int 64 *(int)0.0023299 -fixed_int 64 /(int)0.0222776 -fixed_int 64 % 0.0533221 -fixed_int 64 | 0.00173919 -fixed_int 64 & 0.00172375 -fixed_int 64 ^ 0.00173786 -fixed_int 64 << 0.000542177 -fixed_int 64 >> 0.000774259 -fixed_int 64 %(int)0.0213357 -fixed_int 64 |(int)0.00111648 -fixed_int 64 &(int)0.00122907 -fixed_int 64 ^(int)0.00107255 -fixed_int 64 gcd 0.694716 -fixed_int 128 + 0.00257987 -fixed_int 128 - 0.00292488 -fixed_int 128 * 0.0224222 -fixed_int 128 / 0.104045 -fixed_int 128 str 0.000463955 -fixed_int 128 +(int)0.00201262 -fixed_int 128 -(int)0.00162514 -fixed_int 128 *(int)0.0029339 -fixed_int 128 /(int)0.0854855 -fixed_int 128 % 0.104704 -fixed_int 128 | 0.00262052 -fixed_int 128 & 0.00263811 -fixed_int 128 ^ 0.00262317 -fixed_int 128 << 0.00169023 -fixed_int 128 >> 0.00194871 -fixed_int 128 %(int)0.0765247 -fixed_int 128 |(int)0.0012695 -fixed_int 128 &(int)0.00213023 -fixed_int 128 ^(int)0.00126692 -fixed_int 128 gcd 1.94748 -fixed_int 256 + 0.00534754 -fixed_int 256 - 0.0057397 -fixed_int 256 * 0.0746728 -fixed_int 256 / 0.188237 -fixed_int 256 str 0.00110489 -fixed_int 256 +(int)0.00239737 -fixed_int 256 -(int)0.00190618 -fixed_int 256 *(int)0.00532854 -fixed_int 256 /(int)0.176302 -fixed_int 256 % 0.185671 -fixed_int 256 | 0.00635312 -fixed_int 256 & 0.00641492 -fixed_int 256 ^ 0.00637518 -fixed_int 256 << 0.00364634 -fixed_int 256 >> 0.00339513 -fixed_int 256 %(int)0.148628 -fixed_int 256 |(int)0.00172278 -fixed_int 256 &(int)0.00394582 -fixed_int 256 ^(int)0.0017306 -fixed_int 256 gcd 5.69938 -fixed_int 512 + 0.0104641 -fixed_int 512 - 0.0108643 -fixed_int 512 * 0.244289 -fixed_int 512 / 0.361312 -fixed_int 512 str 0.00355548 -fixed_int 512 +(int)0.00521225 -fixed_int 512 -(int)0.00508137 -fixed_int 512 *(int)0.0104497 -fixed_int 512 /(int)0.347573 -fixed_int 512 % 0.359133 -fixed_int 512 | 0.0127562 -fixed_int 512 & 0.0127079 -fixed_int 512 ^ 0.0128838 -fixed_int 512 << 0.00909235 -fixed_int 512 >> 0.0100095 -fixed_int 512 %(int)0.294967 -fixed_int 512 |(int)0.00510309 -fixed_int 512 &(int)0.0108019 -fixed_int 512 ^(int)0.00519878 -fixed_int 512 gcd 18.0766 -fixed_int 1024 + 0.0269036 -fixed_int 1024 - 0.0307375 -fixed_int 1024 * 0.794034 -fixed_int 1024 / 0.761903 -fixed_int 1024 str 0.0139069 -fixed_int 1024 +(int)0.0107717 -fixed_int 1024 -(int)0.0107214 -fixed_int 1024 *(int)0.0264201 -fixed_int 1024 /(int)0.710635 -fixed_int 1024 % 0.762693 -fixed_int 1024 | 0.0266044 -fixed_int 1024 & 0.0265946 -fixed_int 1024 ^ 0.0266218 -fixed_int 1024 << 0.0208209 -fixed_int 1024 >> 0.0199434 -fixed_int 1024 %(int)0.591732 -fixed_int 1024 |(int)0.0107572 -fixed_int 1024 &(int)0.0279165 -fixed_int 1024 ^(int)0.0107153 -fixed_int 1024 gcd 72.0083 -[section:integer_performance Integer Type Perfomance] -[table Operator % -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.87455 (0.0999552s)][1.71496 (0.179562s)][1.74997 (0.324919s)][2.18555 (0.484383s)][3.00033 (0.853306s)]] -[[fixed_int][[*1] (0.0533221s)][[*1] (0.104704s)][[*1] (0.185671s)][1.62042 (0.359133s)][2.68172 (0.762693s)]] -[[gmp_int][2.95944 (0.157804s)][1.51151 (0.15826s)][1.02118 (0.189604s)][[*1] (0.22163s)][[*1] (0.284404s)]] -[[tommath_int][18.3802 (0.980074s)][10.4805 (1.09735s)][7.21942 (1.34044s)][8.82954 (1.95689s)][11.256 (3.20126s)]] -] -[table Operator %(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.82492 (0.0389361s)][2.70836 (0.0940069s)][4.16298 (0.196223s)][5.78623 (0.347801s)][8.61488 (0.653379s)]] -[[fixed_int][[*1] (0.0213357s)][2.2047 (0.0765247s)][3.15324 (0.148628s)][4.90725 (0.294967s)][7.80205 (0.591732s)]] -[[gmp_int][1.31826 (0.0281261s)][[*1] (0.0347099s)][[*1] (0.0471351s)][[*1] (0.0601084s)][[*1] (0.0758432s)]] -[[tommath_int][34.4234 (0.734449s)][24.0732 (0.835579s)][25.4154 (1.19796s)][29.0828 (1.74812s)][37.9966 (2.88178s)]] -] -[table Operator & -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][11.776 (0.0202989s)][9.29397 (0.0245186s)][4.19042 (0.0268812s)][2.61699 (0.0332565s)][1.93124 (0.0455113s)]] -[[fixed_int][[*1] (0.00172375s)][[*1] (0.00263811s)][[*1] (0.00641492s)][[*1] (0.0127079s)][1.12853 (0.0265946s)]] -[[gmp_int][5.47931 (0.00944499s)][4.26352 (0.0112477s)][2.30908 (0.0148126s)][1.3052 (0.0165864s)][[*1] (0.0235658s)]] -[[tommath_int][45.1327 (0.0777977s)][27.8558 (0.0734869s)][11.7768 (0.0755475s)][6.34384 (0.0806169s)][4.35544 (0.10264s)]] -] -[table Operator &(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][19.5872 (0.024074s)][15.1507 (0.0322746s)][13.1419 (0.0518555s)][7.84344 (0.0847243s)][5.46467 (0.152555s)]] -[[fixed_int][[*1] (0.00122907s)][[*1] (0.00213023s)][[*1] (0.00394582s)][[*1] (0.0108019s)][[*1] (0.0279165s)]] -[[gmp_int][33.8435 (0.0415959s)][20.016 (0.0426387s)][11.0702 (0.0436809s)][4.3207 (0.0466719s)][1.80374 (0.0503542s)]] -[[tommath_int][183.918 (0.226047s)][107.721 (0.22947s)][59.3026 (0.233997s)][22.0231 (0.237892s)][9.04882 (0.252612s)]] -] -[table Operator * -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][3.2324 (0.0226198s)][2.52526 (0.0408988s)][2.53525 (0.107568s)][3.79765 (0.36983s)][4.31781 (1.36107s)]] -[[fixed_int][[*1] (0.00699782s)][1.38444 (0.0224222s)][1.75995 (0.0746728s)][2.50851 (0.244289s)][2.51897 (0.794034s)]] -[[gmp_int][1.63228 (0.0114224s)][[*1] (0.0161959s)][[*1] (0.0424289s)][[*1] (0.097384s)][[*1] (0.315222s)]] -[[tommath_int][5.52344 (0.0386521s)][3.63548 (0.0588799s)][2.00515 (0.0850765s)][2.00866 (0.195612s)][1.79105 (0.564578s)]] -] -[table Operator *(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][6.83259 (0.0159193s)][6.39316 (0.0187569s)][4.26244 (0.0227126s)][3.13123 (0.0327202s)][1.85897 (0.0482894s)]] -[[fixed_int][[*1] (0.0023299s)][[*1] (0.0029339s)][[*1] (0.00532854s)][[*1] (0.0104497s)][1.01708 (0.0264201s)]] -[[gmp_int][3.73229 (0.00869587s)][3.86814 (0.0113487s)][2.60009 (0.0138547s)][1.72238 (0.0179982s)][[*1] (0.0259764s)]] -[[tommath_int][82.3516 (0.191871s)][66.1027 (0.193938s)][37.8779 (0.201834s)][21.4047 (0.223672s)][10.4393 (0.271175s)]] -] -[table Operator + -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][11.341 (0.0157994s)][7.07953 (0.0182643s)][4.42331 (0.0236538s)][2.73588 (0.0286286s)][1.52741 (0.041093s)]] -[[fixed_int][[*1] (0.00139312s)][[*1] (0.00257987s)][[*1] (0.00534754s)][[*1] (0.0104641s)][[*1] (0.0269036s)]] -[[gmp_int][12.0732 (0.0168195s)][6.96456 (0.0179677s)][4.26881 (0.0228276s)][2.61851 (0.0274004s)][1.43133 (0.038508s)]] -[[tommath_int][11.965 (0.0166687s)][6.56577 (0.0169388s)][3.5901 (0.0191982s)][2.29601 (0.0240257s)][1.33458 (0.035905s)]] -] -[table Operator +(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][4.63468 (0.0103873s)][5.77235 (0.0116175s)][6.51328 (0.0156148s)][3.18449 (0.0165983s)][1.97437 (0.0212673s)]] -[[fixed_int][[*1] (0.00224121s)][[*1] (0.00201262s)][[*1] (0.00239737s)][[*1] (0.00521225s)][[*1] (0.0107717s)]] -[[gmp_int][3.04774 (0.00683062s)][4.2147 (0.00848258s)][4.63494 (0.0111117s)][2.72815 (0.0142198s)][1.74027 (0.0187457s)]] -[[tommath_int][77.7866 (0.174336s)][86.7776 (0.17465s)][72.258 (0.173229s)][33.5455 (0.174848s)][17.718 (0.190852s)]] -] -[table Operator - -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][15.8168 (0.0256769s)][9.28853 (0.0271678s)][5.91179 (0.0339319s)][4.35797 (0.0473463s)][2.14198 (0.065839s)]] -[[fixed_int][[*1] (0.00162339s)][[*1] (0.00292488s)][[*1] (0.0057397s)][[*1] (0.0108643s)][[*1] (0.0307375s)]] -[[gmp_int][11.4678 (0.0186168s)][6.47449 (0.0189371s)][4.41843 (0.0253604s)][2.92772 (0.0318076s)][1.35934 (0.0417826s)]] -[[tommath_int][16.6376 (0.0270094s)][8.46239 (0.0247515s)][4.53521 (0.0260308s)][2.79104 (0.0303227s)][1.39785 (0.0429664s)]] -] -[table Operator -(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][4.63371 (0.00898962s)][6.43466 (0.0104572s)][6.59084 (0.0125633s)][3.09026 (0.0157028s)][1.93914 (0.0207903s)]] -[[fixed_int][[*1] (0.00194005s)][[*1] (0.00162514s)][[*1] (0.00190618s)][[*1] (0.00508137s)][[*1] (0.0107214s)]] -[[gmp_int][3.64008 (0.00706193s)][5.38549 (0.00875216s)][6.2483 (0.0119104s)][2.91903 (0.0148327s)][1.81672 (0.0194778s)]] -[[tommath_int][89.9224 (0.174454s)][103.993 (0.169003s)][90.7363 (0.17296s)][34.6724 (0.176184s)][17.6692 (0.189438s)]] -] -[table Operator / -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.94422 (0.102281s)][1.66132 (0.172852s)][2.00045 (0.376559s)][1.96804 (0.53608s)][2.58521 (0.91127s)]] -[[fixed_int][[*1] (0.0526074s)][[*1] (0.104045s)][[*1] (0.188237s)][1.32644 (0.361312s)][2.16146 (0.761903s)]] -[[gmp_int][3.20265 (0.168483s)][1.83394 (0.190813s)][1.23446 (0.232371s)][[*1] (0.272392s)][[*1] (0.352494s)]] -[[tommath_int][18.6829 (0.98286s)][10.7076 (1.11408s)][7.10542 (1.3375s)][7.21562 (1.96548s)][9.00151 (3.17298s)]] -] -[table Operator /(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][2.34699 (0.0522854s)][2.07114 (0.108782s)][3.64515 (0.240023s)][4.35917 (0.39506s)][5.07357 (0.711756s)]] -[[fixed_int][[*1] (0.0222776s)][1.62759 (0.0854855s)][2.67744 (0.176302s)][3.83519 (0.347573s)][5.06558 (0.710635s)]] -[[gmp_int][2.03488 (0.0453323s)][[*1] (0.0525228s)][[*1] (0.0658471s)][[*1] (0.0906272s)][[*1] (0.140287s)]] -[[tommath_int][39.7943 (0.886522s)][17.1717 (0.901904s)][17.5103 (1.153s)][18.5434 (1.68054s)][20.8389 (2.92342s)]] -] -[table Operator << -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][30.7178 (0.0166545s)][11.6314 (0.0196597s)][6.58232 (0.0240014s)][3.58466 (0.032593s)][2.63577 (0.053456s)]] -[[fixed_int][[*1] (0.000542177s)][[*1] (0.00169023s)][[*1] (0.00364634s)][[*1] (0.00909235s)][1.02663 (0.0208209s)]] -[[gmp_int][17.0103 (0.00922261s)][5.92058 (0.0100071s)][3.22238 (0.0117499s)][1.601 (0.0145569s)][[*1] (0.0202809s)]] -[[tommath_int][36.9087 (0.0200111s)][18.6848 (0.0315817s)][10.4978 (0.0382785s)][4.9662 (0.0451545s)][3.30498 (0.0670281s)]] -] -[table Operator >> -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][18.5732 (0.0143805s)][8.1063 (0.0157968s)][5.24617 (0.0178114s)][2.54823 (0.0249415s)][2.66089 (0.0339107s)]] -[[fixed_int][[*1] (0.000774259s)][[*1] (0.00194871s)][[*1] (0.00339513s)][1.02266 (0.0100095s)][1.56491 (0.0199434s)]] -[[gmp_int][11.8578 (0.00918099s)][3.94746 (0.00769246s)][2.38089 (0.00808343s)][[*1] (0.00978776s)][[*1] (0.0127441s)]] -[[tommath_int][161.257 (0.124855s)][70.5839 (0.137548s)][41.6211 (0.141309s)][15.4893 (0.151606s)][13.0869 (0.166781s)]] -] -[table Operator ^ -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][11.7006 (0.020334s)][9.45127 (0.0247923s)][4.25917 (0.027153s)][2.6181 (0.033731s)][1.83807 (0.0457905s)]] -[[fixed_int][[*1] (0.00173786s)][[*1] (0.00262317s)][[*1] (0.00637518s)][[*1] (0.0128838s)][1.06862 (0.0266218s)]] -[[gmp_int][5.73448 (0.00996572s)][4.31745 (0.0113254s)][2.10455 (0.0134169s)][1.69395 (0.0218245s)][[*1] (0.0249122s)]] -[[tommath_int][42.0554 (0.0730863s)][27.6109 (0.0724281s)][12.6344 (0.0805466s)][6.21806 (0.080112s)][3.84383 (0.0957583s)]] -] -[table Operator ^(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][18.4664 (0.0198061s)][16.651 (0.0210955s)][13.6981 (0.0237059s)][5.19536 (0.0270095s)][2.99916 (0.032137s)]] -[[fixed_int][[*1] (0.00107255s)][[*1] (0.00126692s)][[*1] (0.0017306s)][[*1] (0.00519878s)][[*1] (0.0107153s)]] -[[gmp_int][37.7363 (0.0404741s)][33.0195 (0.041833s)][24.6483 (0.0426564s)][8.81514 (0.045828s)][4.76527 (0.0510615s)]] -[[tommath_int][235.542 (0.252631s)][199.864 (0.253212s)][147.197 (0.25474s)][49.864 (0.259232s)][25.2164 (0.270201s)]] -] -[table Operator gcd -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][9.7399 (1.72384s)][9.19332 (3.97787s)][4.5686 (9.44724s)][4.83474 (22.6824s)][5.90712 (59.7424s)]] -[[fixed_int][3.92522 (0.694716s)][4.50085 (1.94748s)][2.75617 (5.69938s)][3.85301 (18.0766s)][7.11994 (72.0083s)]] -[[gmp_int][[*1] (0.176988s)][[*1] (0.432692s)][[*1] (2.06786s)][[*1] (4.69155s)][[*1] (10.1136s)]] -[[tommath_int][21.4948 (3.80432s)][16.8561 (7.29351s)][7.41497 (15.3331s)][6.8095 (31.9471s)][6.75432 (68.3106s)]] -] -[table Operator str -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.72192 (0.000380146s)][1.86502 (0.000693873s)][3.26065 (0.00192567s)][3.88275 (0.00489147s)][5.48576 (0.0150341s)]] -[[fixed_int][[*1] (0.000220769s)][1.24704 (0.000463955s)][1.87086 (0.00110489s)][2.82227 (0.00355548s)][5.07444 (0.0139069s)]] -[[gmp_int][1.52989 (0.000337753s)][[*1] (0.000372045s)][[*1] (0.000590578s)][[*1] (0.0012598s)][[*1] (0.00274057s)]] -[[tommath_int][18.719 (0.00413258s)][22.9337 (0.00853237s)][36.8247 (0.0217479s)][44.7324 (0.0563537s)][68.3845 (0.187413s)]] -] -[table Operator | -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][11.7002 (0.0203489s)][9.3648 (0.0245406s)][4.30735 (0.0273651s)][2.64011 (0.0336779s)][1.89563 (0.0459271s)]] -[[fixed_int][[*1] (0.00173919s)][[*1] (0.00262052s)][[*1] (0.00635312s)][[*1] (0.0127562s)][1.0981 (0.0266044s)]] -[[gmp_int][5.36125 (0.00932423s)][4.04848 (0.0106091s)][2.02225 (0.0128476s)][1.65427 (0.0211022s)][[*1] (0.0242278s)]] -[[tommath_int][41.2161 (0.0716826s)][27.2814 (0.0714914s)][11.7667 (0.074755s)][6.28141 (0.0801272s)][3.87606 (0.0939085s)]] -] -[table Operator |(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][17.7789 (0.0198498s)][16.5506 (0.0210111s)][13.8268 (0.0238206s)][5.30465 (0.0270701s)][3.00448 (0.0323199s)]] -[[fixed_int][[*1] (0.00111648s)][[*1] (0.0012695s)][[*1] (0.00172278s)][[*1] (0.00510309s)][[*1] (0.0107572s)]] -[[gmp_int][35.6305 (0.0397808s)][32.0847 (0.0407317s)][24.5808 (0.0423473s)][9.0158 (0.0460084s)][4.603 (0.0495155s)]] -[[tommath_int][228.073 (0.254639s)][199.149 (0.25282s)][148.482 (0.255801s)][51.0429 (0.260477s)][24.899 (0.267844s)]] -] -[endsect] +gmp_int 64 + 0.0168163 +gmp_int 64 - 0.0186614 +gmp_int 64 * 0.0117134 +gmp_int 64 / 0.169732 +gmp_int 64 str 0.000328882 +gmp_int 64 +(int)0.00662982 +gmp_int 64 -(int)0.00709197 +gmp_int 64 *(int)0.0088044 +gmp_int 64 /(int)0.0460225 +gmp_int 64 % 0.158198 +gmp_int 64 | 0.00933212 +gmp_int 64 & 0.00941153 +gmp_int 64 ^ 0.0100066 +gmp_int 64 << 0.00917854 +gmp_int 64 >> 0.00925083 +gmp_int 64 %(int)0.0280589 +gmp_int 64 |(int)0.0400043 +gmp_int 64 &(int)0.0417312 +gmp_int 64 ^(int)0.040751 +gmp_int 64 gcd 0.176467 +gmp_int 128 + 0.0178204 +gmp_int 128 - 0.0189183 +gmp_int 128 * 0.0162167 +gmp_int 128 / 0.188989 +gmp_int 128 str 0.00036981 +gmp_int 128 +(int)0.00848453 +gmp_int 128 -(int)0.00871131 +gmp_int 128 *(int)0.0113603 +gmp_int 128 /(int)0.0532432 +gmp_int 128 % 0.156838 +gmp_int 128 | 0.0106143 +gmp_int 128 & 0.0112662 +gmp_int 128 ^ 0.0113 +gmp_int 128 << 0.0100873 +gmp_int 128 >> 0.0078452 +gmp_int 128 %(int)0.0347183 +gmp_int 128 |(int)0.0411793 +gmp_int 128 &(int)0.0429282 +gmp_int 128 ^(int)0.0423867 +gmp_int 128 gcd 0.433341 +gmp_int 256 + 0.0227099 +gmp_int 256 - 0.0253696 +gmp_int 256 * 0.0419669 +gmp_int 256 / 0.231062 +gmp_int 256 str 0.00059791 +gmp_int 256 +(int)0.011126 +gmp_int 256 -(int)0.0118753 +gmp_int 256 *(int)0.0134931 +gmp_int 256 /(int)0.0656163 +gmp_int 256 % 0.188537 +gmp_int 256 | 0.0128192 +gmp_int 256 & 0.0127349 +gmp_int 256 ^ 0.0133922 +gmp_int 256 << 0.0118988 +gmp_int 256 >> 0.00811877 +gmp_int 256 %(int)0.0471091 +gmp_int 256 |(int)0.042799 +gmp_int 256 &(int)0.0458343 +gmp_int 256 ^(int)0.043002 +gmp_int 256 gcd 2.06647 +gmp_int 512 + 0.0273102 +gmp_int 512 - 0.0317526 +gmp_int 512 * 0.0977565 +gmp_int 512 / 0.271981 +gmp_int 512 str 0.0012591 +gmp_int 512 +(int)0.0141478 +gmp_int 512 -(int)0.0148129 +gmp_int 512 *(int)0.0180329 +gmp_int 512 /(int)0.0904515 +gmp_int 512 % 0.22083 +gmp_int 512 | 0.020649 +gmp_int 512 & 0.0165353 +gmp_int 512 ^ 0.0222088 +gmp_int 512 << 0.0146297 +gmp_int 512 >> 0.0098618 +gmp_int 512 %(int)0.0601431 +gmp_int 512 |(int)0.0461385 +gmp_int 512 &(int)0.0469244 +gmp_int 512 ^(int)0.0460041 +gmp_int 512 gcd 4.68119 +gmp_int 1024 + 0.0392733 +gmp_int 1024 - 0.0423657 +gmp_int 1024 * 0.314956 +gmp_int 1024 / 0.351788 +gmp_int 1024 str 0.00268616 +gmp_int 1024 +(int)0.0187891 +gmp_int 1024 -(int)0.0194118 +gmp_int 1024 *(int)0.0259443 +gmp_int 1024 /(int)0.140347 +gmp_int 1024 % 0.283657 +gmp_int 1024 | 0.0242247 +gmp_int 1024 & 0.023592 +gmp_int 1024 ^ 0.0249 +gmp_int 1024 << 0.0204313 +gmp_int 1024 >> 0.0128395 +gmp_int 1024 %(int)0.0758694 +gmp_int 1024 |(int)0.0495895 +gmp_int 1024 &(int)0.0506897 +gmp_int 1024 ^(int)0.049433 +gmp_int 1024 gcd 10.1293 +cpp_int(fixed) 128 + 0.0181676 +cpp_int(fixed) 128 - 0.0184343 +cpp_int(fixed) 128 * 0.014376 +cpp_int(fixed) 128 / 0.202558 +cpp_int(fixed) 128 str 0.000652736 +cpp_int(fixed) 128 +(int)0.00948536 +cpp_int(fixed) 128 -(int)0.00886251 +cpp_int(fixed) 128 *(int)0.0173963 +cpp_int(fixed) 128 /(int)0.106251 +cpp_int(fixed) 128 % 0.20362 +cpp_int(fixed) 128 | 0.0137212 +cpp_int(fixed) 128 & 0.0144157 +cpp_int(fixed) 128 ^ 0.0137219 +cpp_int(fixed) 128 << 0.0125872 +cpp_int(fixed) 128 >> 0.00905059 +cpp_int(fixed) 128 %(int)0.109447 +cpp_int(fixed) 128 |(int)0.014533 +cpp_int(fixed) 128 &(int)0.0162133 +cpp_int(fixed) 128 ^(int)0.0131589 +cpp_int(fixed) 128 gcd 2.86508 +cpp_int(fixed) 256 + 0.0216349 +cpp_int(fixed) 256 - 0.0208758 +cpp_int(fixed) 256 * 0.0210219 diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index dbf6b539..c615e19f 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -582,12 +582,13 @@ int main() test("gmp_int", 1024); #endif #ifdef TEST_CPP_INT +/* test("cpp_int", 64); test("cpp_int", 128); test("cpp_int", 256); test("cpp_int", 512); test("cpp_int", 1024); - +*/ test > >("cpp_int(fixed)", 128); test > >("cpp_int(fixed)", 256); test > >("cpp_int(fixed)", 512); From 5cf1ff427a7008a76f0791bff73c33c61d349827 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 8 Mar 2012 17:55:54 +0000 Subject: [PATCH 127/256] Ooops committed too much in last commit, revert. [SVN r77267] --- performance/performance_test.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index c615e19f..dbf6b539 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -582,13 +582,12 @@ int main() test("gmp_int", 1024); #endif #ifdef TEST_CPP_INT -/* test("cpp_int", 64); test("cpp_int", 128); test("cpp_int", 256); test("cpp_int", 512); test("cpp_int", 1024); -*/ + test > >("cpp_int(fixed)", 128); test > >("cpp_int(fixed)", 256); test > >("cpp_int(fixed)", 512); From b42208c5df62c39354a8f78552a36ccd3be335f9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 11 Mar 2012 16:43:31 +0000 Subject: [PATCH 128/256] Fix several division algorithm bugs. Add cpp_rational to performance tests. Add modular arithmetic test to test cases. [SVN r77303] --- include/boost/multiprecision/cpp_int.hpp | 39 ++++++++++++++++-------- performance/performance_test.cpp | 15 ++++----- test/test_cpp_int.cpp | 18 +++++++++++ 3 files changed, 52 insertions(+), 20 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 548c0e33..a6f38a98 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1061,9 +1061,9 @@ inline void multiply(cpp_int_backend& result, const double_limb_type carry = 0; std::memset(pr, 0, result.size() * sizeof(limb_type)); - unsigned inner_limit = result.size() - as; for(unsigned i = 0; i < as; ++i) { + unsigned inner_limit = (std::min)(result.size() - i, b.size()); for(unsigned j = 0; j < inner_limit; ++j) { BOOST_ASSERT(i+j < result.size()); @@ -1261,10 +1261,6 @@ void divide_unsigned_helper(cpp_int_backend& result, do { - // - // Update r_order, this can't run past the end as r must be non-zero at this point: - // - r_order = r.size() - 1; // // Calculate our best guess for how many times y divides into r: // @@ -1329,6 +1325,7 @@ void divide_unsigned_helper(cpp_int_backend& result, // double_limb_type carry = 0; t.resize(y.size() + shift + 1); + bool truncated_t = !cpp_int_backend::variable && (t.size() != y.size() + shift + 1); typename cpp_int_backend::limb_pointer pt = t.limbs(); for(unsigned i = 0; i < shift; ++i) pt[i] = 0; @@ -1338,11 +1335,11 @@ void divide_unsigned_helper(cpp_int_backend& result, pt[i + shift] = static_cast(carry); carry >>= cpp_int_backend::limb_bits; } - if(carry) + if(carry && !truncated_t) { pt[t.size() - 1] = static_cast(carry); } - else + else if(!truncated_t) { t.resize(t.size() - 1); } @@ -1365,15 +1362,21 @@ void divide_unsigned_helper(cpp_int_backend& result, while(pr[result.size() - 1] == 0) result.resize(result.size() - 1); } + // + // Update r_order: + // + r_order = r.size() - 1; + if(r_order < y_order) + break; } - // Termination condition is really just a check that r > y, but with two common - // short-circuit cases handled first: - while((r_order > y_order) || (prem[r_order] > py[y_order]) || (r.compare_unsigned(y) > 0)); + // Termination condition is really just a check that r > y, but with a common + // short-circuit case handled first: + while((r_order > y_order) || (r.compare_unsigned(y) >= 0)); // // We now just have to normalise the result: // - if(r_neg) + if(r_neg && get_sign(r)) { // We have one too many in the result: decrement(result); @@ -1480,19 +1483,29 @@ void divide_unsigned_helper(cpp_int_backend& result, --r_order; pr[r_order] = static_cast(b); pres[r_order] = static_cast(a / y); + if(r_order && pr[r_order] == 0) + { + --r_order; // No remainder, division was exact. + r.resize(r.size() - 1); + } } else { pres[r_order] = pr[r_order] / y; pr[r_order] %= y; + if(r_order && pr[r_order] == 0) + { + --r_order; // No remainder, division was exact. + r.resize(r.size() - 1); + } } } // Termination condition is really just a check that r > y, but with two common // short-circuit cases handled first: while(r_order || (pr[r_order] > y)); - if(pres[result.size() - 1] == 0) - result.resize(result.size() - 1); + result.normalize(); + r.normalize(); result.sign(x.sign()); r.sign(x.sign()); diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index dbf6b539..7a541b02 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -12,7 +12,7 @@ #if !defined(TEST_MPF) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_FIXED_INT) && !defined(TEST_CPP_INT) + && !defined(TEST_FIXED_INT) && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_RATIONAL) # define TEST_MPF # define TEST_MPZ # define TEST_MPQ @@ -22,6 +22,7 @@ # define TEST_TOMMATH # define TEST_FIXED_INT # define TEST_CPP_INT +# define TEST_CPP_INT_RATIONAL #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -575,14 +576,12 @@ int main() test("gmp_float", 500); #endif #ifdef TEST_MPZ - test("gmp_int", 64); test("gmp_int", 128); test("gmp_int", 256); test("gmp_int", 512); test("gmp_int", 1024); #endif #ifdef TEST_CPP_INT - test("cpp_int", 64); test("cpp_int", 128); test("cpp_int", 256); test("cpp_int", 512); @@ -593,15 +592,19 @@ int main() test > >("cpp_int(fixed)", 512); test > >("cpp_int(fixed)", 1024); #endif +#ifdef TEST_CPP_INT_RATIONAL + test("cpp_rational", 128); + test("cpp_rational", 256); + test("cpp_rational", 512); + test("cpp_rational", 1024); +#endif #ifdef TEST_MPQ - test("mpq_rational", 64); test("mpq_rational", 128); test("mpq_rational", 256); test("mpq_rational", 512); test("mpq_rational", 1024); #endif #ifdef TEST_TOMMATH - test("tommath_int", 64); test("tommath_int", 128); test("tommath_int", 256); test("tommath_int", 512); @@ -610,7 +613,6 @@ int main() // // These are actually too slow to test!!! // - test("mp_rational", 64); test("mp_rational", 128); test("mp_rational", 256); test("mp_rational", 512); @@ -618,7 +620,6 @@ int main() */ #endif #ifdef TEST_FIXED_INT - test > >("fixed_int", 64); test("fixed_int", 128); test("fixed_int", 256); test("fixed_int", 512); diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index ee83b641..6cc69def 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -137,6 +137,24 @@ void test() BOOST_CHECK_EQUAL(mpz_int(lcm(-c, -d)).str(), test_type(lcm(-c1, -d1)).str()); BOOST_CHECK_EQUAL(mpz_int(gcd(a, -b)).str(), test_type(gcd(a1, -b1)).str()); BOOST_CHECK_EQUAL(mpz_int(lcm(c, -d)).str(), test_type(lcm(c1, -d1)).str()); + + if(std::numeric_limits::is_modulo) + { + static mpz_int m = mpz_int(1) << std::numeric_limits::digits; + mpz_int t(a); + test_type t1(a1); + for(unsigned i = 0; i < 10; ++i) + { + t *= a; + t %= m; + t += a; + t %= m; + t1 *= a1; + t1 += a1; + } + BOOST_CHECK_EQUAL(t.str(), t1.str()); + } + if(last_error_count != boost::detail::test_errors()) { last_error_count = boost::detail::test_errors(); From 5caa15f798456c1c8260c8f66cb2f2fcd536423f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 12 Mar 2012 09:18:44 +0000 Subject: [PATCH 129/256] Reorganisation: rename methods "eval_foo" rather than "foo" to avoid conflict with classes of the same name (GCC bug). Move backends into sub-namespaces to avoid namespace pollution. [SVN r77312] --- doc/multiprecision.qbk | 108 ++++---- .../multiprecision/arithmetic_backend.hpp | 13 +- .../concepts/mp_number_architypes.hpp | 14 +- .../boost/multiprecision/cpp_dec_float.hpp | 39 +-- include/boost/multiprecision/cpp_int.hpp | 230 ++++++++--------- .../multiprecision/detail/default_ops.hpp | 170 ++++++------- .../detail/functions/constants.hpp | 46 ++-- .../multiprecision/detail/functions/pow.hpp | 160 ++++++------ .../multiprecision/detail/functions/trig.hpp | 224 ++++++++--------- include/boost/multiprecision/fixed_int.hpp | 214 ++++++++-------- include/boost/multiprecision/gmp.hpp | 235 ++++++++--------- include/boost/multiprecision/mp_number.hpp | 238 +++++++++--------- include/boost/multiprecision/mpfr.hpp | 92 +++---- .../boost/multiprecision/rational_adapter.hpp | 23 +- include/boost/multiprecision/tommath.hpp | 75 +++--- test/test_arithmetic.cpp | 1 + 16 files changed, 958 insertions(+), 924 deletions(-) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 3c18dd73..677a5336 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -621,13 +621,13 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would // swap: void swap(mp_number& other); // Sign: - bool is_zero()const; + bool eval_is_zero()const; int sign()const; // string conversion: std::string str()const; // Generic conversion mechanism template - T convert_to()const; + T eval_convert_to()const; // precision control: static unsigned default_precision(); static void default_precision(unsigned digits10); @@ -801,7 +801,7 @@ This operator also enables the use of `mp_number` with any of the following oper Swaps `*this` with `other`. - bool is_zero()const; + bool eval_is_zero()const; Returns `true` is `*this` is zero, otherwise `false`. @@ -816,7 +816,7 @@ Returns the number formatted as a string, with at least /precision/ digits, and if /scientific/ is true. template - T convert_to()const; + T eval_convert_to()const; Provides a generic conversion mechanism to convert `*this` to type `T`. Type `T` may be any arithmetic type. Optionally other types may also be supported by specific `Backend` types. @@ -1043,18 +1043,18 @@ of type B2. [[`cb.compare(a)`][`int`][Compares `cb` and `a`, returns a value less than zero if `cb < a`, a value greater than zero if `cb > a` and zero if `cb == a`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`add(b, cb)`][`void`][Adds `cb` to `b`.]] -[[`subtract(b, cb)`][`void`][Subtracts `cb` from `b`.]] -[[`multiply(b, cb)`][`void`][Multiplies `b` by `cb`.]] -[[`divide(b, cb)`][`void`][Divides `b` by `cb`.]] -[[`modulus(b, cb)`][`void`][Computes `b %= cb`, only required when `B` is an integer type.]] -[[`bitwise_and(b, cb)`][`void`][Computes `b &= cb`, only required when `B` is an integer type.]] -[[`bitwise_or(b, cb)`][`void`][Computes `b |= cb`, only required when `B` is an integer type.]] -[[`bitwise_xor(b, cb)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type.]] -[[`complement(b, cb)`][`void`][Computes the ones-complement of `cb` and stores the result in `b`, only required when `B` is an integer type.]] -[[`left_shift(b, ui)`][`void`][Computes `b <<= ui`, only required when `B` is an integer type.]] -[[`right_shift(b, ui)`][`void`][Computes `b >>= ui`, only required when `B` is an integer type.]] -[[`convert_to(pa, cb)`][`void`][Converts `cb` to the type of `*pa` and store the result in `*pa`. Type `B` shall support +[[`eval_add(b, cb)`][`void`][Adds `cb` to `b`.]] +[[`eval_subtract(b, cb)`][`void`][Subtracts `cb` from `b`.]] +[[`eval_multiply(b, cb)`][`void`][Multiplies `b` by `cb`.]] +[[`eval_divide(b, cb)`][`void`][Divides `b` by `cb`.]] +[[`eval_modulus(b, cb)`][`void`][Computes `b %= cb`, only required when `B` is an integer type.]] +[[`eval_bitwise_and(b, cb)`][`void`][Computes `b &= cb`, only required when `B` is an integer type.]] +[[`eval_bitwise_or(b, cb)`][`void`][Computes `b |= cb`, only required when `B` is an integer type.]] +[[`eval_bitwise_xor(b, cb)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type.]] +[[`eval_complement(b, cb)`][`void`][Computes the ones-complement of `cb` and stores the result in `b`, only required when `B` is an integer type.]] +[[`eval_left_shift(b, ui)`][`void`][Computes `b <<= ui`, only required when `B` is an integer type.]] +[[`eval_right_shift(b, ui)`][`void`][Computes `b >>= ui`, only required when `B` is an integer type.]] +[[`eval_convert_to(pa, cb)`][`void`][Converts `cb` to the type of `*pa` and store the result in `*pa`. Type `B` shall support conversion to at least types `std::intmax_t`, `std::uintmax_t` and `long long`. Conversion to other arithmetic types can then be synthesised using other operations. Conversions to other types are entirely optional.]] @@ -1075,68 +1075,68 @@ of type B2. Only applies to rational and complex number types.]] [[`assign_components(b, b2, b2)`][`void`][Assigns to `b` the two components in the following arguments. Only applies to rational and complex number types.]] -[[`add(b, a)`][`void`][Adds `a` to `b`. The type of `a` shall be listed in one of the type lists +[[`eval_add(b, a)`][`void`][Adds `a` to `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`subtract(b, a)`][`void`][Subtracts `a` from `b`. The type of `a` shall be listed in one of the type lists +[[`eval_subtract(b, a)`][`void`][Subtracts `a` from `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`multiply(b, a)`][`void`][Multiplies `b` by `a`. The type of `a` shall be listed in one of the type lists +[[`eval_multiply(b, a)`][`void`][Multiplies `b` by `a`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`divide(b, a)`][`void`][Divides `b` by `a`. The type of `a` shall be listed in one of the type lists +[[`eval_divide(b, a)`][`void`][Divides `b` by `a`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`modulus(b, a)`][`void`][Computes `b %= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_modulus(b, a)`][`void`][Computes `b %= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_and(b, a)`][`void`][Computes `b &= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_and(b, a)`][`void`][Computes `b &= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_or(b, a)`][`void`][Computes `b |= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_or(b, a)`][`void`][Computes `b |= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_xor(b, a)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_xor(b, a)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`add(b, cb, cb2)`][`void`][Add `cb` to `cb2` and stores the result in `b`.]] -[[`subtract(b, cb, cb2)`][`void`][Subtracts `cb2` from `cb` and stores the result in `b`.]] -[[`multiply(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and stores the result in `b`.]] -[[`divide(b, cb, cb2)`][`void`][Divides `cb` by `cb2` and stores the result in `b`.]] -[[`add(b, cb, a)`][`void`][Add `cb` to `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_add(b, cb, cb2)`][`void`][Add `cb` to `cb2` and stores the result in `b`.]] +[[`eval_subtract(b, cb, cb2)`][`void`][Subtracts `cb2` from `cb` and stores the result in `b`.]] +[[`eval_multiply(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and stores the result in `b`.]] +[[`eval_divide(b, cb, cb2)`][`void`][Divides `cb` by `cb2` and stores the result in `b`.]] +[[`eval_add(b, cb, a)`][`void`][Add `cb` to `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`subtract(b, cb, a)`][`void`][Subtracts `a` from `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_subtract(b, cb, a)`][`void`][Subtracts `a` from `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`multiply(b, cb, a)`][`void`][Multiplies `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_multiply(b, cb, a)`][`void`][Multiplies `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`divide(b, cb, a)`][`void`][Divides `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_divide(b, cb, a)`][`void`][Divides `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`modulus(b, cb, cb2)`][`void`][Computes `cb % cb2` and stores the result in `b`, only required when `B` is an integer type.]] -[[`bitwise_and(b, cb, cb2)`][`void`][Computes `cb & cb2` and stores the result in `b`, only required when `B` is an integer type.]] -[[`bitwise_or(b, cb, cb2)`][`void`][Computes `cb | cb2` and stores the result in `b`, only required when `B` is an integer type.]] -[[`bitwise_xor(b, cb, cb2)`][`void`][Computes `cb ^ cb2` and stores the result in `b`, only required when `B` is an integer type.]] -[[`add(b, a, cb)`][`void`][Add `a` to `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_modulus(b, cb, cb2)`][`void`][Computes `cb % cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`eval_bitwise_and(b, cb, cb2)`][`void`][Computes `cb & cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`eval_bitwise_or(b, cb, cb2)`][`void`][Computes `cb | cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`eval_bitwise_xor(b, cb, cb2)`][`void`][Computes `cb ^ cb2` and stores the result in `b`, only required when `B` is an integer type.]] +[[`eval_add(b, a, cb)`][`void`][Add `a` to `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`subtract(b, a, cb)`][`void`][Subtracts `cb` from `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_subtract(b, a, cb)`][`void`][Subtracts `cb` from `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`multiply(b, a, cb)`][`void`][Multiplies `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_multiply(b, a, cb)`][`void`][Multiplies `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`divide(b, a, cb)`][`void`][Divides `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists +[[`eval_divide(b, a, cb)`][`void`][Divides `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`modulus(b, cb, a)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_modulus(b, cb, a)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_and(b, cb, a)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_and(b, cb, a)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_or(b, cb, a)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_or(b, cb, a)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_xor(b, cb, a)`][`void`][Computes `cb ^ a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_xor(b, cb, a)`][`void`][Computes `cb ^ a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`modulus(b, a, cb)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_modulus(b, a, cb)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_and(b, a, cb)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_and(b, a, cb)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_or(b, a, cb)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_or(b, a, cb)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`bitwise_xor(b, a, cb)`][`void`][Computes `a ^ cb` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists +[[`eval_bitwise_xor(b, a, cb)`][`void`][Computes `a ^ cb` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`left_shift(b, cb, ui)`][`void`][Computes `cb << ui` and stores the result in `b`, only required when `B` is an integer type.]] -[[`right_shift(b, cb, ui)`][`void`][Computes `cb >> ui` and stores the result in `b`, only required when `B` is an integer type.]] -[[`increment(b)`][void][Increments the value of `b` by one.]] -[[`decrement(b)`][void][Decrements the value of `b` by one.]] -[[`is_zero(cb)`][`bool`][Returns `true` if `cb` is zero, otherwise `false`]] -[[`get_sign(cb)`][`int`][Returns a value < zero if `cb` is negative, a value > zero if `cb` is positive, and zero if `cb` is zero.]] +[[`eval_left_shift(b, cb, ui)`][`void`][Computes `cb << ui` and stores the result in `b`, only required when `B` is an integer type.]] +[[`eval_right_shift(b, cb, ui)`][`void`][Computes `cb >> ui` and stores the result in `b`, only required when `B` is an integer type.]] +[[`eval_increment(b)`][void][Increments the value of `b` by one.]] +[[`eval_decrement(b)`][void][Decrements the value of `b` by one.]] +[[`eval_is_zero(cb)`][`bool`][Returns `true` if `cb` is zero, otherwise `false`]] +[[`eval_get_sign(cb)`][`int`][Returns a value < zero if `cb` is negative, a value > zero if `cb` is positive, and zero if `cb` is zero.]] [[`eval_abs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] [[`eval_fabs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] [[`eval_fpclassify(cb)`][`int`][Returns one of the same values returned by `std::fpclassify`. Only required when `B` is an floating-point type.]] diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index 8225bd0e..5d9111b2 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -15,6 +15,7 @@ namespace boost{ namespace multiprecision{ +namespace backends{ template struct arithmetic_backend @@ -97,26 +98,30 @@ private: }; template -inline void add(arithmetic_backend& result, const arithmetic_backend& o) +inline void eval_add(arithmetic_backend& result, const arithmetic_backend& o) { result.data() += o.data(); } template -inline void subtract(arithmetic_backend& result, const arithmetic_backend& o) +inline void eval_subtract(arithmetic_backend& result, const arithmetic_backend& o) { result.data() -= o.data(); } template -inline void multiply(arithmetic_backend& result, const arithmetic_backend& o) +inline void eval_multiply(arithmetic_backend& result, const arithmetic_backend& o) { result.data() *= o.data(); } template -inline void divide(arithmetic_backend& result, const arithmetic_backend& o) +inline void eval_divide(arithmetic_backend& result, const arithmetic_backend& o) { result.data() /= o.data(); } +} // namespace backends + +using boost::multiprecision::backends::arithmetic_backend; + }} // namespaces diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index 61de59c7..72e97842 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -122,36 +122,36 @@ struct mp_number_backend_float_architype long double m_value; }; -inline void add(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_add(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Addition (" << result.m_value << " += " << o.m_value << ")" << std::endl; result.m_value += o.m_value; } -inline void subtract(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_subtract(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Subtraction (" << result.m_value << " -= " << o.m_value << ")" << std::endl; result.m_value -= o.m_value; } -inline void multiply(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_multiply(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Multiplication (" << result.m_value << " *= " << o.m_value << ")" << std::endl; result.m_value *= o.m_value; } -inline void divide(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_divide(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) { std::cout << "Division (" << result.m_value << " /= " << o.m_value << ")" << std::endl; result.m_value /= o.m_value; } -inline void convert_to(unsigned long long* result, const mp_number_backend_float_architype& val) +inline void eval_convert_to(unsigned long long* result, const mp_number_backend_float_architype& val) { *result = static_cast(val.m_value); } -inline void convert_to(long long* result, const mp_number_backend_float_architype& val) +inline void eval_convert_to(long long* result, const mp_number_backend_float_architype& val) { *result = static_cast(val.m_value); } -inline void convert_to(long double* result, mp_number_backend_float_architype& val) +inline void eval_convert_to(long double* result, mp_number_backend_float_architype& val) { *result = val.m_value; } diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index dfe947ae..a77dcc3b 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -24,6 +24,7 @@ namespace boost{ namespace multiprecision{ +namespace backends{ template class cpp_dec_float @@ -2535,49 +2536,49 @@ cpp_dec_float cpp_dec_float::pow2(const long long p) template -inline void add(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_add(cpp_dec_float& result, const cpp_dec_float& o) { result += o; } template -inline void subtract(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_subtract(cpp_dec_float& result, const cpp_dec_float& o) { result -= o; } template -inline void multiply(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_multiply(cpp_dec_float& result, const cpp_dec_float& o) { result *= o; } template -inline void divide(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_divide(cpp_dec_float& result, const cpp_dec_float& o) { result /= o; } template -inline void add(cpp_dec_float& result, const unsigned long long& o) +inline void eval_add(cpp_dec_float& result, const unsigned long long& o) { result.add_unsigned_long_long(o); } template -inline void subtract(cpp_dec_float& result, const unsigned long long& o) +inline void eval_subtract(cpp_dec_float& result, const unsigned long long& o) { result.sub_unsigned_long_long(o); } template -inline void multiply(cpp_dec_float& result, const unsigned long long& o) +inline void eval_multiply(cpp_dec_float& result, const unsigned long long& o) { result.mul_unsigned_long_long(o); } template -inline void divide(cpp_dec_float& result, const unsigned long long& o) +inline void eval_divide(cpp_dec_float& result, const unsigned long long& o) { result.div_unsigned_long_long(o); } template -inline void add(cpp_dec_float& result, long long o) +inline void eval_add(cpp_dec_float& result, long long o) { if(o < 0) result.sub_unsigned_long_long(-o); @@ -2585,7 +2586,7 @@ inline void add(cpp_dec_float& result, long long o) result.add_unsigned_long_long(o); } template -inline void subtract(cpp_dec_float& result, long long o) +inline void eval_subtract(cpp_dec_float& result, long long o) { if(o < 0) result.add_unsigned_long_long(-o); @@ -2593,7 +2594,7 @@ inline void subtract(cpp_dec_float& result, long long o) result.sub_unsigned_long_long(o); } template -inline void multiply(cpp_dec_float& result, long long o) +inline void eval_multiply(cpp_dec_float& result, long long o) { if(o < 0) { @@ -2604,7 +2605,7 @@ inline void multiply(cpp_dec_float& result, long long o) result.mul_unsigned_long_long(o); } template -inline void divide(cpp_dec_float& result, long long o) +inline void eval_divide(cpp_dec_float& result, long long o) { if(o < 0) { @@ -2616,17 +2617,17 @@ inline void divide(cpp_dec_float& result, long long o) } template -inline void convert_to(unsigned long long* result, const cpp_dec_float& val) +inline void eval_convert_to(unsigned long long* result, const cpp_dec_float& val) { *result = val.extract_unsigned_long_long(); } template -inline void convert_to(long long* result, const cpp_dec_float& val) +inline void eval_convert_to(long long* result, const cpp_dec_float& val) { *result = val.extract_signed_long_long(); } template -inline void convert_to(long double* result, cpp_dec_float& val) +inline void eval_convert_to(long double* result, cpp_dec_float& val) { *result = val.extract_long_double(); } @@ -2799,16 +2800,20 @@ inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float -inline bool is_zero(const cpp_dec_float& val) +inline bool eval_is_zero(const cpp_dec_float& val) { return val.iszero(); } template -inline int get_sign(const cpp_dec_float& val) +inline int eval_get_sign(const cpp_dec_float& val) { return val.iszero() ? 0 : val.isneg() ? -1 : 1; } +} // namespace backends + +using boost::multiprecision::backends::cpp_dec_float; + typedef mp_number > cpp_dec_float_50; typedef mp_number > cpp_dec_float_100; diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index a6f38a98..65f5eb3b 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -18,6 +18,7 @@ namespace boost{ namespace multiprecision{ +namespace backends{ template > struct cpp_int_backend; @@ -338,7 +339,7 @@ public: for(i = 0; i < internal_limb_count; ++i) m_data[i] = ~m_data[i]; normalize(); - increment(static_cast& >(*this)); + eval_increment(static_cast& >(*this)); } bool isneg()const { @@ -451,8 +452,8 @@ public: cpp_int_backend& operator = (long double a) { - using default_ops::add; - using default_ops::subtract; + using default_ops::eval_add; + using default_ops::eval_subtract; using std::frexp; using std::ldexp; using std::floor; @@ -482,23 +483,23 @@ public: f = ldexp(f, shift); term = floor(f); e -= shift; - left_shift(*this, shift); + eval_left_shift(*this, shift); if(term > 0) - add(*this, static_cast(term)); + eval_add(*this, static_cast(term)); else - subtract(*this, static_cast(-term)); + eval_subtract(*this, static_cast(-term)); f -= term; } if(e > 0) - left_shift(*this, e); + eval_left_shift(*this, e); else if(e < 0) - right_shift(*this, -e); + eval_right_shift(*this, -e); return *this; } cpp_int_backend& operator = (const char* s) { - using default_ops::multiply; - using default_ops::add; + using default_ops::eval_multiply; + using default_ops::eval_add; std::size_t n = s ? std::strlen(s) : 0; *this = static_cast(0u); unsigned radix = 10; @@ -557,7 +558,7 @@ public: break; } } - left_shift(*this, block_shift); + eval_left_shift(*this, block_shift); this->limbs()[0] |= block; } } @@ -584,8 +585,8 @@ public: break; } } - multiply(*this, block_mult); - add(*this, block); + eval_multiply(*this, block_mult); + eval_add(*this, block); } } } @@ -623,7 +624,7 @@ public: if(c > '9') c += 'A' - '9' - 1; result[pos--] = c; - right_shift(t, shift); + eval_right_shift(t, shift); } if(Bits % shift) { @@ -666,7 +667,7 @@ public: { cpp_int_backend block10; block10 = max_block_10; - while(get_sign(t) != 0) + while(eval_get_sign(t) != 0) { cpp_int_backend t2; divide_unsigned_helper(t2, t, block10, r); @@ -732,9 +733,9 @@ public: template -inline void add(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) { - add(result, result, o); + eval_add(result, result, o); } template inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) @@ -795,7 +796,7 @@ inline void add_unsigned(cpp_int_backend& result, co result.sign(a.sign()); } template -inline void add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { if(a.sign() != b.sign()) { @@ -829,7 +830,7 @@ inline void add_unsigned(cpp_int_backend& result, co result.normalize(); } template -inline void add(cpp_int_backend& result, const limb_type& o) +inline void eval_add(cpp_int_backend& result, const limb_type& o) { if(result.sign()) { @@ -839,12 +840,12 @@ inline void add(cpp_int_backend& result, const limb_ add_unsigned(result, o); } template -inline void add(cpp_int_backend& result, const signed_limb_type& o) +inline void eval_add(cpp_int_backend& result, const signed_limb_type& o) { if(o < 0) - subtract(result, static_cast(-o)); + eval_subtract(result, static_cast(-o)); else if(o > 0) - add(result, static_cast(o)); + eval_add(result, static_cast(o)); } template @@ -877,7 +878,7 @@ inline void subtract_unsigned(cpp_int_backend& resul } } template -inline void subtract(cpp_int_backend& result, const limb_type& o) +inline void eval_subtract(cpp_int_backend& result, const limb_type& o) { if(result.sign()) add_unsigned(result, o); @@ -885,18 +886,18 @@ inline void subtract(cpp_int_backend& result, const subtract_unsigned(result, o); } template -inline void subtract(cpp_int_backend& result, const signed_limb_type& o) +inline void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) { if(o) { if(o < 0) - add(result, static_cast(-o)); + eval_add(result, static_cast(-o)); else - subtract(result, static_cast(o)); + eval_subtract(result, static_cast(o)); } } template -inline void increment(cpp_int_backend& result) +inline void eval_increment(cpp_int_backend& result) { static const limb_type one = 1; if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) @@ -904,10 +905,10 @@ inline void increment(cpp_int_backend& result) else if(result.sign() && result.limbs()[0]) --result.limbs()[0]; else - add(result, one); + eval_add(result, one); } template -inline void decrement(cpp_int_backend& result) +inline void eval_decrement(cpp_int_backend& result) { static const limb_type one = 1; if(!result.sign() && result.limbs()[0]) @@ -915,12 +916,12 @@ inline void decrement(cpp_int_backend& result) else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) ++result.limbs()[0]; else - subtract(result, one); + eval_subtract(result, one); } template -inline void subtract(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) { - subtract(result, result, o); + eval_subtract(result, result, o); } template inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) @@ -996,7 +997,7 @@ inline void subtract_unsigned(cpp_int_backend& resul result.negate(); } template -inline void subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { if(a.sign() != b.sign()) { @@ -1006,7 +1007,7 @@ inline void subtract(cpp_int_backend& result, const subtract_unsigned(result, a, b); } template -inline void multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { // Very simple long multiplication, only usable for small numbers of limb_type's // but that's the typical use case for this type anyway: @@ -1028,7 +1029,7 @@ inline void multiply(cpp_int_backend& result, const { limb_type l = *pa; result = b; - multiply(result, l); + eval_multiply(result, l); } result.sign(s); return; @@ -1038,7 +1039,7 @@ inline void multiply(cpp_int_backend& result, const limb_type l = *pb; bool s = b.sign() != a.sign(); result = a; - multiply(result, l); + eval_multiply(result, l); result.sign(s); return; } @@ -1046,13 +1047,13 @@ inline void multiply(cpp_int_backend& result, const if(&result == &a) { cpp_int_backend t(a); - multiply(result, t, b); + eval_multiply(result, t, b); return; } if(&result == &b) { cpp_int_backend t(b); - multiply(result, a, t); + eval_multiply(result, a, t); return; } @@ -1063,7 +1064,7 @@ inline void multiply(cpp_int_backend& result, const std::memset(pr, 0, result.size() * sizeof(limb_type)); for(unsigned i = 0; i < as; ++i) { - unsigned inner_limit = (std::min)(result.size() - i, b.size()); + unsigned inner_limit = cpp_int_backend::variable ? bs : (std::min)(result.size() - i, bs); for(unsigned j = 0; j < inner_limit; ++j) { BOOST_ASSERT(i+j < result.size()); @@ -1083,12 +1084,12 @@ inline void multiply(cpp_int_backend& result, const result.sign(a.sign() != b.sign()); } template -inline void multiply(cpp_int_backend& result, const cpp_int_backend& a) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) { - multiply(result, result, a); + eval_multiply(result, result, a); } template -inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) +inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) { if(!val) { @@ -1117,25 +1118,25 @@ inline void multiply(cpp_int_backend& result, cpp_in result.normalize(); } template -inline void multiply(cpp_int_backend& result, const limb_type& val) +inline void eval_multiply(cpp_int_backend& result, const limb_type& val) { - multiply(result, result, val); + eval_multiply(result, result, val); } template -inline void multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) +inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) { if(val > 0) - multiply(result, a, static_cast(val)); + eval_multiply(result, a, static_cast(val)); else { - multiply(result, a, static_cast(-val)); + eval_multiply(result, a, static_cast(-val)); result.negate(); } } template -inline void multiply(cpp_int_backend& result, const signed_limb_type& val) +inline void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) { - multiply(result, result, val); + eval_multiply(result, result, val); } template void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) @@ -1172,7 +1173,7 @@ void divide_unsigned_helper(cpp_int_backend& result, */ - using default_ops::subtract; + using default_ops::eval_subtract; if(&result == &r) { @@ -1306,7 +1307,7 @@ void divide_unsigned_helper(cpp_int_backend& result, t.limbs()[shift] = guess; for(unsigned i = 0; i < shift; ++i) t.limbs()[i] = 0; - subtract(result, t); + eval_subtract(result, t); } } else if(cpp_int_backend::max_limb_value - pr[shift] > guess) @@ -1317,7 +1318,7 @@ void divide_unsigned_helper(cpp_int_backend& result, t.limbs()[shift] = guess; for(unsigned i = 0; i < shift; ++i) t.limbs()[i] = 0; - add(result, t); + eval_add(result, t); } // // Calculate guess * y, we use a fused mutiply-shift O(N) for this @@ -1346,7 +1347,7 @@ void divide_unsigned_helper(cpp_int_backend& result, // // Update r: // - subtract(r, t); + eval_subtract(r, t); if(r.isneg()) { r.negate(); @@ -1376,15 +1377,15 @@ void divide_unsigned_helper(cpp_int_backend& result, // // We now just have to normalise the result: // - if(r_neg && get_sign(r)) + if(r_neg && eval_get_sign(r)) { // We have one too many in the result: - decrement(result); + eval_decrement(result); r.negate(); if(y.sign()) - subtract(r, y); + eval_subtract(r, y); else - add(r, y); + eval_add(r, y); } BOOST_ASSERT(r.compare_unsigned(y) < 0); // remainder must be less than the divisor or our code has failed @@ -1410,7 +1411,7 @@ void divide_unsigned_helper(cpp_int_backend& result, // As above, but simplified for integer divisor: - using default_ops::subtract; + using default_ops::eval_subtract; if(y == 0) { @@ -1514,20 +1515,20 @@ void divide_unsigned_helper(cpp_int_backend& result, } template -inline void divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { cpp_int_backend r; divide_unsigned_helper(result, a, b, r); result.sign(a.sign() != b.sign()); } template -inline void divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) { cpp_int_backend r; divide_unsigned_helper(result, a, b, r); } template -inline void divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) { cpp_int_backend r; divide_unsigned_helper(result, a, std::abs(b), r); @@ -1535,65 +1536,65 @@ inline void divide(cpp_int_backend& result, const cp result.negate(); } template -inline void divide(cpp_int_backend& result, const cpp_int_backend& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: cpp_int_backend a(result); - divide(result, a, b); + eval_divide(result, a, b); } template -inline void divide(cpp_int_backend& result, limb_type b) +inline void eval_divide(cpp_int_backend& result, limb_type b) { // There is no in place divide: cpp_int_backend a(result); - divide(result, a, b); + eval_divide(result, a, b); } template -inline void divide(cpp_int_backend& result, signed_limb_type b) +inline void eval_divide(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: cpp_int_backend a(result); - divide(result, a, b); + eval_divide(result, a, b); } template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { cpp_int_backend r; divide_unsigned_helper(r, a, b, result); result.sign(a.sign()); } template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) { cpp_int_backend r; divide_unsigned_helper(r, a, b, result); } template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) { cpp_int_backend r; divide_unsigned_helper(r, a, static_cast(std::abs(b)), result); } template -inline void modulus(cpp_int_backend& result, const cpp_int_backend& b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: cpp_int_backend a(result); - modulus(result, a, b); + eval_modulus(result, a, b); } template -inline void modulus(cpp_int_backend& result, limb_type b) +inline void eval_modulus(cpp_int_backend& result, limb_type b) { // There is no in place divide: cpp_int_backend a(result); - modulus(result, a, b); + eval_modulus(result, a, b); } template -inline void modulus(cpp_int_backend& result, signed_limb_type b) +inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: cpp_int_backend a(result); - modulus(result, a, b); + eval_modulus(result, a, b); } template void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) @@ -1726,20 +1727,20 @@ struct bit_or{ limb_type operator()(limb_type a, limb_type b)const{ return a | b struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const{ return a ^ b; } }; template -inline void bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) { bitwise_op(result, o, bit_and()); } #if 0 template -inline void bitwise_and(cpp_int_backend& result, limb_type o) +inline void eval_bitwise_and(cpp_int_backend& result, limb_type o) { result.data()[cpp_int_backend::limb_count - 1] &= o; for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) result.data()[i] = 0; } template -inline void bitwise_and(cpp_int_backend& result, signed_limb_type o) +inline void eval_bitwise_and(cpp_int_backend& result, signed_limb_type o) { result.data()[cpp_int_backend::limb_count - 1] &= o; limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; @@ -1747,35 +1748,35 @@ inline void bitwise_and(cpp_int_backend& result, sig result.data()[i] &= mask; } template -inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) { for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count; ++i) result.data()[i] |= o.data()[i]; } template -inline void bitwise_or(cpp_int_backend& result, limb_type o) +inline void eval_bitwise_or(cpp_int_backend& result, limb_type o) { result.data()[cpp_int_backend::limb_count - 1] |= o; } #endif template -inline void bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) { bitwise_op(result, o, bit_or()); } template -inline void bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) { bitwise_op(result, o, bit_xor()); } #if 0 template -inline void bitwise_xor(cpp_int_backend& result, limb_type o) +inline void eval_bitwise_xor(cpp_int_backend& result, limb_type o) { result.data()[cpp_int_backend::limb_count - 1] ^= o; } template -inline void bitwise_xor(cpp_int_backend& result, signed_limb_type o) +inline void eval_bitwise_xor(cpp_int_backend& result, signed_limb_type o) { result.data()[cpp_int_backend::limb_count - 1] ^= o; limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; @@ -1784,15 +1785,15 @@ inline void bitwise_xor(cpp_int_backend& result, sig } #endif template -inline void complement(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) { // Increment and negate: result = o; - increment(result); + eval_increment(result); result.negate(); } template -inline void left_shift(cpp_int_backend& result, double_limb_type s) +inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) { if(!s) return; @@ -1868,7 +1869,7 @@ inline void left_shift(cpp_int_backend& result, double_li } } template -inline void left_shift(cpp_int_backend& result, double_limb_type s) +inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) { if(!s) return; @@ -1925,7 +1926,7 @@ inline void left_shift(cpp_int_backend& result, doub } } template -inline void right_shift(cpp_int_backend& result, double_limb_type s) +inline void eval_right_shift(cpp_int_backend& result, double_limb_type s) { if(!s) return; @@ -1979,7 +1980,7 @@ inline Integer negate_integer(Integer i, const mpl::false_&) } template -inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) +inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) { *result = static_cast(backend.limbs()[0]); unsigned shift = cpp_int_backend::limb_bits; @@ -1997,7 +1998,7 @@ inline typename enable_if, void>::type convert_to(R* result, cons } template -inline typename enable_if, void>::type convert_to(R* result, const cpp_int_backend& backend) +inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) { typename cpp_int_backend::const_limb_pointer p = backend.limbs(); unsigned shift = cpp_int_backend::limb_bits; @@ -2012,24 +2013,23 @@ inline typename enable_if, void>::type convert_to(R* result } template -inline bool is_zero(const cpp_int_backend& val) +inline bool eval_is_zero(const cpp_int_backend& val) { return (val.size() == 1) && (val.limbs()[0] == 0); } template -inline int get_sign(const cpp_int_backend& val) +inline int eval_get_sign(const cpp_int_backend& val) { - return is_zero(val) ? 0 : val.sign() ? -1 : 1; + return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1; } -namespace detail{ // // Get the location of the least-significant-bit: // template inline unsigned get_lsb(const cpp_int_backend& a) { - BOOST_ASSERT(get_sign(a) != 0); + BOOST_ASSERT(eval_get_sign(a) != 0); unsigned result = 0; // @@ -2051,8 +2051,6 @@ inline unsigned get_lsb(const cpp_int_backend& a) return result + index * cpp_int_backend::limb_bits; } -} - template inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { @@ -2060,7 +2058,7 @@ inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend u(a), v(b); - int s = get_sign(u); + int s = eval_get_sign(u); /* GCD(0,x) := x */ if(s < 0) @@ -2072,7 +2070,7 @@ inline void eval_gcd(cpp_int_backend& result, const result = v; return; } - s = get_sign(v); + s = eval_get_sign(v); if(s < 0) { v.negate(); @@ -2086,11 +2084,11 @@ inline void eval_gcd(cpp_int_backend& result, const /* Let shift := lg K, where K is the greatest power of 2 dividing both u and v. */ - unsigned us = detail::get_lsb(u); - unsigned vs = detail::get_lsb(v); + unsigned us = get_lsb(u); + unsigned vs = get_lsb(v); shift = (std::min)(us, vs); - right_shift(u, us); - right_shift(v, vs); + eval_right_shift(u, us); + eval_right_shift(v, vs); do { @@ -2098,19 +2096,19 @@ inline void eval_gcd(cpp_int_backend& result, const Let u = min(u, v), v = diff(u, v)/2. */ if(u.compare(v) > 0) u.swap(v); - subtract(v, u); + eval_subtract(v, u); // Termination condition tries not to do a full compare if possible: - if(!v.limbs()[0] && is_zero(v)) + if(!v.limbs()[0] && eval_is_zero(v)) break; - vs = detail::get_lsb(v); - right_shift(v, vs); + vs = get_lsb(v); + eval_right_shift(v, vs); BOOST_ASSERT((v.limbs()[0] & 1)); BOOST_ASSERT((u.limbs()[0] & 1)); } while(true); result = u; - left_shift(result, shift); + eval_left_shift(result, shift); } template @@ -2119,19 +2117,23 @@ inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend t; eval_gcd(t, a, b); - if(is_zero(t)) + if(eval_is_zero(t)) { result = static_cast(0); } else { - divide(result, a, t); - multiply(result, b); + eval_divide(result, a, t); + eval_multiply(result, b); } - if(get_sign(result) < 0) + if(eval_get_sign(result) < 0) result.negate(); } +} // namespace backends; + +using boost::multiprecision::backends::cpp_int_backend; + template struct number_category > : public mpl::int_{}; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 4f098147..6a7dfc67 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -32,76 +32,76 @@ namespace boost{ namespace multiprecision{ namespace default_ops{ // template inline typename enable_if, is_convertible, is_same > >::type - add(T& result, V const& v) + eval_add(T& result, V const& v) { T t; t = v; - add(result, t); + eval_add(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - subtract(T& result, V const& v) + eval_subtract(T& result, V const& v) { T t; t = v; - subtract(result, t); + eval_subtract(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - multiply(T& result, V const& v) + eval_multiply(T& result, V const& v) { T t; t = v; - multiply(result, t); + eval_multiply(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - divide(T& result, V const& v) + eval_divide(T& result, V const& v) { T t; t = v; - divide(result, t); + eval_divide(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - modulus(T& result, V const& v) + eval_modulus(T& result, V const& v) { T t; t = v; - modulus(result, t); + eval_modulus(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - bitwise_and(T& result, V const& v) + eval_bitwise_and(T& result, V const& v) { T t; t = v; - bitwise_and(result, t); + eval_bitwise_and(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - bitwise_or(T& result, V const& v) + eval_bitwise_or(T& result, V const& v) { T t; t = v; - bitwise_or(result, t); + eval_bitwise_or(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - bitwise_xor(T& result, V const& v) + eval_bitwise_xor(T& result, V const& v) { T t; t = v; - bitwise_xor(result, t); + eval_bitwise_xor(result, t); } template inline typename enable_if, is_convertible, is_same > >::type - complement(T& result, V const& v) + eval_complement(T& result, V const& v) { T t; t = v; - complement(result, t); + eval_complement(result, t); } template @@ -115,196 +115,196 @@ inline bool is_same_object(const T& u, const U&v) // Default versions of 3-arg arithmetic functions, these just forward to the 2 arg versions: // template -inline void add(T& t, const U& u, const V& v) +inline void eval_add(T& t, const U& u, const V& v) { if(is_same_object(t, v)) { - add(t, u); + eval_add(t, u); } else if(is_same_object(t, u)) { - add(t, v); + eval_add(t, v); } else { t = u; - add(t, v); + eval_add(t, v); } } template -inline typename disable_if >::type add(T& t, const U& a, const T& b) +inline typename disable_if >::type eval_add(T& t, const U& a, const T& b) { - return add(t, b, a); + return eval_add(t, b, a); } template -inline void subtract(T& t, const U& u, const V& v) +inline void eval_subtract(T& t, const U& u, const V& v) { if(is_same_object(t, u)) - subtract(t, v); + eval_subtract(t, v); else if(is_same_object(t, v)) { - subtract(t, u); + eval_subtract(t, u); t.negate(); } else { t = u; - subtract(t, v); + eval_subtract(t, v); } } template -inline typename disable_if >::type subtract(T& t, const U& a, const T& b) +inline typename disable_if >::type eval_subtract(T& t, const U& a, const T& b) { - subtract(t, b, a); + eval_subtract(t, b, a); t.negate(); } template -inline void multiply(T& t, const U& u, const V& v) +inline void eval_multiply(T& t, const U& u, const V& v) { if(is_same_object(t, u)) - multiply(t, v); + eval_multiply(t, v); else if(is_same_object(t, v)) - multiply(t, u); + eval_multiply(t, u); else { t = u; - multiply(t, v); + eval_multiply(t, v); } } template -inline typename disable_if >::type multiply(T& t, const U& a, const T& b) +inline typename disable_if >::type eval_multiply(T& t, const U& a, const T& b) { - multiply(t, b, a); + eval_multiply(t, b, a); } template -inline void divide(T& t, const U& u, const V& v) +inline void eval_divide(T& t, const U& u, const V& v) { if(is_same_object(t, u)) - divide(t, v); + eval_divide(t, v); else if(is_same_object(t, v)) { T temp = t; - divide(temp, u, v); + eval_divide(temp, u, v); temp.swap(t); } else { t = u; - divide(t, v); + eval_divide(t, v); } } template -inline void modulus(T& t, const U& u, const V& v) +inline void eval_modulus(T& t, const U& u, const V& v) { if(is_same_object(t, u)) - modulus(t, v); + eval_modulus(t, v); else if(is_same_object(t, v)) { T temp; - modulus(temp, u, v); + eval_modulus(temp, u, v); temp.swap(t); } else { t = u; - modulus(t, v); + eval_modulus(t, v); } } template -inline void bitwise_and(T& t, const U& u, const V& v) +inline void eval_bitwise_and(T& t, const U& u, const V& v) { if(is_same_object(t, u)) - bitwise_and(t, v); + eval_bitwise_and(t, v); else if(is_same_object(t, v)) - bitwise_and(t, u); + eval_bitwise_and(t, u); else { t = u; - bitwise_and(t, v); + eval_bitwise_and(t, v); } } template -inline typename disable_if >::type bitwise_and(T& t, const U& a, const T& b) +inline typename disable_if >::type eval_bitwise_and(T& t, const U& a, const T& b) { - bitwise_and(t, b, a); + eval_bitwise_and(t, b, a); } template -inline void bitwise_or(T& t, const U& u, const V& v) +inline void eval_bitwise_or(T& t, const U& u, const V& v) { if(is_same_object(t, u)) - bitwise_or(t, v); + eval_bitwise_or(t, v); else if(is_same_object(t, v)) - bitwise_or(t, u); + eval_bitwise_or(t, u); else { t = u; - bitwise_or(t, v); + eval_bitwise_or(t, v); } } template -inline typename disable_if >::type bitwise_or(T& t, const U& a, const T& b) +inline typename disable_if >::type eval_bitwise_or(T& t, const U& a, const T& b) { - bitwise_or(t, b, a); + eval_bitwise_or(t, b, a); } template -inline void bitwise_xor(T& t, const U& u, const V& v) +inline void eval_bitwise_xor(T& t, const U& u, const V& v) { if(is_same_object(t, u)) - bitwise_xor(t, v); + eval_bitwise_xor(t, v); else if(is_same_object(t, v)) - bitwise_xor(t, u); + eval_bitwise_xor(t, u); else { t = u; - bitwise_xor(t, v); + eval_bitwise_xor(t, v); } } template -inline typename disable_if >::type bitwise_xor(T& t, const U& a, const T& b) +inline typename disable_if >::type eval_bitwise_xor(T& t, const U& a, const T& b) { - bitwise_xor(t, b, a); + eval_bitwise_xor(t, b, a); } template -inline void increment(T& val) +inline void eval_increment(T& val) { typedef typename mpl::front::type ui_type; - add(val, static_cast(1u)); + eval_add(val, static_cast(1u)); } template -inline void decrement(T& val) +inline void eval_decrement(T& val) { typedef typename mpl::front::type ui_type; - subtract(val, static_cast(1u)); + eval_subtract(val, static_cast(1u)); } template -inline void left_shift(T& result, const T& arg, const V val) +inline void eval_left_shift(T& result, const T& arg, const V val) { result = arg; - left_shift(result, val); + eval_left_shift(result, val); } template -inline void right_shift(T& result, const T& arg, const V val) +inline void eval_right_shift(T& result, const T& arg, const V val) { result = arg; - right_shift(result, val); + eval_right_shift(result, val); } template -inline bool is_zero(const T& val) +inline bool eval_is_zero(const T& val) { typedef typename mpl::front::type ui_type; return val.compare(static_cast(0)) == 0; } template -inline int get_sign(const T& val) +inline int eval_get_sign(const T& val) { typedef typename mpl::front::type ui_type; return val.compare(static_cast(0)); @@ -316,7 +316,7 @@ inline void assign_components_imp(T& result, const V& v1, const V& v2, const mpl result = v1; T t; t = v2; - divide(result, t); + eval_divide(result, t); } template @@ -367,11 +367,11 @@ struct calculate_next_larger_type }; template -inline void convert_to(R* result, const B& backend) +inline void eval_convert_to(R* result, const B& backend) { typedef typename calculate_next_larger_type::type next_type; next_type n; - convert_to(&n, backend); + eval_convert_to(&n, backend); if(std::numeric_limits::is_specialized && (n > (std::numeric_limits::max)())) { *result = (std::numeric_limits::max)(); @@ -381,7 +381,7 @@ inline void convert_to(R* result, const B& backend) } template -inline void convert_to(terminal* result, const B& backend) +inline void eval_convert_to(terminal* result, const B& backend) { // // We ran out of types to try for the convertion, try @@ -417,7 +417,7 @@ template inline int eval_fpclassify(const Backend& arg) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The fpclassify function is only valid for floating point types."); - return is_zero(arg) ? FP_ZERO : FP_NORMAL; + return eval_is_zero(arg) ? FP_ZERO : FP_NORMAL; } template @@ -432,13 +432,13 @@ inline void eval_fmod(T& result, const T& a, const T& b) return; } T n; - divide(result, a, b); - if(get_sign(a) < 0) + eval_divide(result, a, b); + if(eval_get_sign(a) < 0) eval_ceil(n, result); else eval_floor(n, result); - multiply(n, b); - subtract(result, a, n); + eval_multiply(n, b); + eval_subtract(result, a, n); } template inline void eval_trunc(T& result, const T& a) @@ -450,7 +450,7 @@ inline void eval_trunc(T& result, const T& a) result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number(a), 0, boost::math::policies::policy<>()).backend(); return; } - if(get_sign(a) < 0) + if(eval_get_sign(a) < 0) eval_ceil(result, a); else eval_floor(result, a); @@ -467,14 +467,14 @@ inline void eval_round(T& result, const T& a) result = boost::math::policies::raise_rounding_error("boost::multiprecision::round<%1%>(%1%)", 0, mp_number(a), 0, boost::math::policies::policy<>()).backend(); return; } - if(get_sign(a) < 0) + if(eval_get_sign(a) < 0) { - subtract(result, a, fp_type(0.5f)); + eval_subtract(result, a, fp_type(0.5f)); eval_ceil(result, result); } else { - add(result, a, fp_type(0.5f)); + eval_add(result, a, fp_type(0.5f)); eval_floor(result, result); } } diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index dab1e2c3..677ed49d 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -28,21 +28,21 @@ void calc_log2(T& num, unsigned digits) for(ui_type n = 6; n < limit; ++n) { temp = static_cast(2); - multiply(temp, ui_type(2 * n)); - multiply(temp, ui_type(2 * n + 1)); - multiply(num, temp); - multiply(denom, temp); + eval_multiply(temp, ui_type(2 * n)); + eval_multiply(temp, ui_type(2 * n + 1)); + eval_multiply(num, temp); + eval_multiply(denom, temp); sign = -sign; - multiply(next_term, n); - multiply(temp, next_term, next_term); - multiply(temp, sign); - add(num, temp); + eval_multiply(next_term, n); + eval_multiply(temp, next_term, next_term); + eval_multiply(temp, sign); + eval_add(num, temp); } - multiply(denom, ui_type(4)); - multiply(num, ui_type(3)); + eval_multiply(denom, ui_type(4)); + eval_multiply(num, ui_type(3)); INSTRUMENT_BACKEND(denom); INSTRUMENT_BACKEND(num); - divide(num, denom); + eval_divide(num, denom); INSTRUMENT_BACKEND(num); } @@ -60,12 +60,12 @@ void calc_e(T& result, unsigned digits) denom = ui_type(1); ui_type i = 2; do{ - multiply(denom, i); - multiply(result, i); - add(result, ui_type(1)); + eval_multiply(denom, i); + eval_multiply(result, i); + eval_add(result, ui_type(1)); ++i; }while(denom.compare(lim) <= 0); - divide(result, denom); + eval_divide(result, denom); } template @@ -91,16 +91,16 @@ void calc_pi(T& result, unsigned digits) do { - add(result, A, B); + eval_add(result, A, B); eval_ldexp(result, result, -2); eval_sqrt(b, B); - add(a, b); + eval_add(a, b); eval_ldexp(a, a, -1); - multiply(A, a, a); - subtract(B, A, result); + eval_multiply(A, a, a); + eval_subtract(B, A, result); eval_ldexp(B, B, 1); - subtract(result, A, B); - bool neg = get_sign(result) < 0; + eval_subtract(result, A, B); + bool neg = eval_get_sign(result) < 0; if(neg) result.negate(); if(result.compare(lim) <= 0) @@ -108,13 +108,13 @@ void calc_pi(T& result, unsigned digits) if(neg) result.negate(); eval_ldexp(result, result, k - 1); - subtract(D, result); + eval_subtract(D, result); ++k; eval_ldexp(lim, lim, 1); } while(true); - divide(result, B, D); + eval_divide(result, B, D); } template diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 23ee1895..f9f2e37b 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -35,7 +35,7 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) temp = static_cast(1); T denom; pow_imp(denom, t, -p, mpl::true_()); - divide(result, temp, denom); + eval_divide(result, temp, denom); return; } @@ -48,15 +48,15 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) result = t; break; case 2: - multiply(result, t, t); + eval_multiply(result, t, t); break; case 3: - multiply(result, t, t); - multiply(result, t); + eval_multiply(result, t, t); + eval_multiply(result, t); break; case 4: - multiply(result, t, t); - multiply(result, result); + eval_multiply(result, t, t); + eval_multiply(result, result); break; default: { @@ -65,7 +65,7 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) for(n = static_cast(1); n <= static_cast(p / static_cast(2)); n *= static_cast(2)) { - multiply(result, result); + eval_multiply(result, result); } const U p_minus_n = static_cast(p - n); @@ -75,7 +75,7 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) { T temp; pow_imp(temp, t, p_minus_n, mpl::true_()); - multiply(result, temp); + eval_multiply(result, temp); } } } @@ -106,11 +106,11 @@ void hyp0F0(T& H0F0, const T& x) T x_pow_n_div_n_fact(x); - add(H0F0, x_pow_n_div_n_fact, ui_type(1)); + eval_add(H0F0, x_pow_n_div_n_fact, ui_type(1)); T lim; eval_ldexp(lim, H0F0, 1 - tol); - if(get_sign(lim) < 0) + if(eval_get_sign(lim) < 0) lim.negate(); ui_type n; @@ -118,10 +118,10 @@ void hyp0F0(T& H0F0, const T& x) // Series expansion of hyperg_0f0(; ; x). for(n = 2; n < 300; ++n) { - multiply(x_pow_n_div_n_fact, x); - divide(x_pow_n_div_n_fact, n); - add(H0F0, x_pow_n_div_n_fact); - bool neg = get_sign(x_pow_n_div_n_fact) < 0; + eval_multiply(x_pow_n_div_n_fact, x); + eval_divide(x_pow_n_div_n_fact, n); + eval_add(H0F0, x_pow_n_div_n_fact); + bool neg = eval_get_sign(x_pow_n_div_n_fact) < 0; if(neg) x_pow_n_div_n_fact.negate(); if(lim.compare(x_pow_n_div_n_fact) > 0) @@ -154,11 +154,11 @@ void hyp1F0(T& H1F0, const T& a, const T& x) T pochham_a (a); T ap (a); - multiply(H1F0, pochham_a, x_pow_n_div_n_fact); - add(H1F0, si_type(1)); + eval_multiply(H1F0, pochham_a, x_pow_n_div_n_fact); + eval_add(H1F0, si_type(1)); T lim; eval_ldexp(lim, H1F0, 1 - boost::multiprecision::detail::digits2 >::value); - if(get_sign(lim) < 0) + if(eval_get_sign(lim) < 0) lim.negate(); si_type n; @@ -167,13 +167,13 @@ void hyp1F0(T& H1F0, const T& a, const T& x) // Series expansion of hyperg_1f0(a; ; x). for(n = 2; n < boost::multiprecision::detail::digits2 >::value + 10; n++) { - multiply(x_pow_n_div_n_fact, x); - divide(x_pow_n_div_n_fact, n); - increment(ap); - multiply(pochham_a, ap); - multiply(term, pochham_a, x_pow_n_div_n_fact); - add(H1F0, term); - if(get_sign(term) < 0) + eval_multiply(x_pow_n_div_n_fact, x); + eval_divide(x_pow_n_div_n_fact, n); + eval_increment(ap); + eval_multiply(pochham_a, ap); + eval_multiply(term, pochham_a, x_pow_n_div_n_fact); + eval_add(H1F0, term); + if(eval_get_sign(term) < 0) term.negate(); if(lim.compare(term) >= 0) break; @@ -201,7 +201,7 @@ void eval_exp(T& result, const T& x) // Handle special arguments. int type = eval_fpclassify(x); - bool isneg = get_sign(x) < 0; + bool isneg = eval_get_sign(x) < 0; if(type == FP_NAN) { result = std::numeric_limits >::quiet_NaN().backend(); @@ -250,21 +250,21 @@ void eval_exp(T& result, const T& x) exp_series = xx; result = si_type(1); if(isneg) - subtract(result, exp_series); + eval_subtract(result, exp_series); else - add(result, exp_series); - multiply(exp_series, xx); - divide(exp_series, ui_type(k)); - add(result, exp_series); + eval_add(result, exp_series); + eval_multiply(exp_series, xx); + eval_divide(exp_series, ui_type(k)); + eval_add(result, exp_series); while(exp_series.compare(lim) > 0) { ++k; - multiply(exp_series, xx); - divide(exp_series, ui_type(k)); + eval_multiply(exp_series, xx); + eval_divide(exp_series, ui_type(k)); if(isneg && (k&1)) - subtract(result, exp_series); + eval_subtract(result, exp_series); else - add(result, exp_series); + eval_add(result, exp_series); } return; } @@ -272,7 +272,7 @@ void eval_exp(T& result, const T& x) // Check for pure-integer arguments which can be either signed or unsigned. long long ll; eval_trunc(exp_series, x); - convert_to(&ll, exp_series); + eval_convert_to(&ll, exp_series); if(x.compare(ll) == 0) { detail::pow_imp(result, get_constant_e(), ll, mpl::true_()); @@ -293,23 +293,23 @@ void eval_exp(T& result, const T& x) if(b_scale) { - divide(result, xx, get_constant_ln2()); + eval_divide(result, xx, get_constant_ln2()); exp_type n; - convert_to(&n, result); + eval_convert_to(&n, result); // The scaling is 2^11 = 2048. static const si_type p2 = static_cast(si_type(1) << 11); - multiply(exp_series, get_constant_ln2(), static_cast(n)); - subtract(exp_series, xx); - divide(exp_series, p2); + eval_multiply(exp_series, get_constant_ln2(), static_cast(n)); + eval_subtract(exp_series, xx); + eval_divide(exp_series, p2); exp_series.negate(); hyp0F0(result, exp_series); detail::pow_imp(exp_series, result, p2, mpl::true_()); result = ui_type(1); eval_ldexp(result, result, n); - multiply(exp_series, result); + eval_multiply(exp_series, result); } else { @@ -317,7 +317,7 @@ void eval_exp(T& result, const T& x) } if(isneg) - divide(result, ui_type(1), exp_series); + eval_divide(result, ui_type(1), exp_series); else result = exp_series; } @@ -358,9 +358,9 @@ void eval_log(T& result, const T& arg) --e; } - multiply(result, get_constant_ln2(), canonical_exp_type(e)); + eval_multiply(result, get_constant_ln2(), canonical_exp_type(e)); INSTRUMENT_BACKEND(result); - subtract(t, ui_type(1)); /* -0.3 <= t <= 0.3 */ + eval_subtract(t, ui_type(1)); /* -0.3 <= t <= 0.3 */ if(!alternate) t.negate(); /* 0 <= t <= 0.33333 */ T pow = t; @@ -368,12 +368,12 @@ void eval_log(T& result, const T& arg) T t2; if(alternate) - add(result, t); + eval_add(result, t); else - subtract(result, t); + eval_subtract(result, t); - multiply(lim, result, std::numeric_limits >::epsilon().backend()); - if(get_sign(lim) < 0) + eval_multiply(lim, result, std::numeric_limits >::epsilon().backend()); + if(eval_get_sign(lim) < 0) lim.negate(); INSTRUMENT_BACKEND(lim); @@ -381,13 +381,13 @@ void eval_log(T& result, const T& arg) do { ++k; - multiply(pow, t); - divide(t2, pow, k); + eval_multiply(pow, t); + eval_divide(t2, pow, k); INSTRUMENT_BACKEND(t2); if(alternate && ((k & 1) != 0)) - add(result, t2); + eval_add(result, t2); else - subtract(result, t2); + eval_subtract(result, t2); INSTRUMENT_BACKEND(result); }while(lim.compare(t2) < 0); } @@ -415,7 +415,7 @@ void eval_log10(T& result, const T& arg) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The fabs function is only valid for floating point types."); eval_log(result, arg); - divide(result, get_constant_log10()); + eval_divide(result, get_constant_log10()); } template @@ -457,35 +457,35 @@ inline void eval_pow(T& result, const T& x, const T& a) default: ; } - if(get_sign(a) == 0) + if(eval_get_sign(a) == 0) { result = si_type(1); return; } long long an; - convert_to(&an, a); + eval_convert_to(&an, a); const bool bo_a_isint = a.compare(an) == 0; - if((get_sign(x) < 0) && !bo_a_isint) + if((eval_get_sign(x) < 0) && !bo_a_isint) { result = std::numeric_limits >::quiet_NaN().backend(); } T t; T da(a); - subtract(da, an); + eval_subtract(da, an); if(a.compare(si_type(-1)) < 0) { t = a; t.negate(); eval_pow(da, x, t); - divide(result, si_type(1), da); + eval_divide(result, si_type(1), da); return; } - subtract(da, a, an); + eval_subtract(da, a, an); if(bo_a_isint) { @@ -493,13 +493,13 @@ inline void eval_pow(T& result, const T& x, const T& a) return; } - if((get_sign(x) > 0) && (x.compare(fp_type(0.5)) >= 0) && (x.compare(fp_type(0.9)) < 0)) + if((eval_get_sign(x) > 0) && (x.compare(fp_type(0.5)) >= 0) && (x.compare(fp_type(0.9)) < 0)) { if(a.compare(fp_type(1e-5f)) <= 0) { // Series expansion for small a. eval_log(t, x); - multiply(t, a); + eval_multiply(t, a); hyp0F0(result, t); return; } @@ -511,17 +511,17 @@ inline void eval_pow(T& result, const T& x, const T& a) { da.negate(); t = si_type(1); - subtract(t, x); + eval_subtract(t, x); hyp1F0(result, da, t); detail::pow_imp(t, x, an, mpl::true_()); - multiply(result, t); + eval_multiply(result, t); } else { da = a; da.negate(); t = si_type(1); - subtract(t, x); + eval_subtract(t, x); hyp1F0(result, da, t); } } @@ -533,15 +533,15 @@ inline void eval_pow(T& result, const T& x, const T& a) if(an) { eval_log(t, x); - multiply(t, da); + eval_multiply(t, da); eval_exp(result, t); detail::pow_imp(t, x, an, mpl::true_()); - multiply(result, t); + eval_multiply(result, t); } else { eval_log(t, x); - multiply(t, a); + eval_multiply(t, a); eval_exp(result, t); } } @@ -553,12 +553,12 @@ namespace detail{ void small_sinh_series(T x, T& result) { typedef typename boost::multiprecision::detail::canonical::type ui_type; - bool neg = get_sign(x) < 0; + bool neg = eval_get_sign(x) < 0; if(neg) x.negate(); T p(x); T mult(x); - multiply(mult, x); + eval_multiply(mult, x); result = x; ui_type k = 1; @@ -567,10 +567,10 @@ namespace detail{ do { - multiply(p, mult); - divide(p, ++k); - divide(p, ++k); - add(result, p); + eval_multiply(p, mult); + eval_divide(p, ++k); + eval_divide(p, ++k); + eval_add(result, p); }while(p.compare(lim) >= 0); if(neg) result.negate(); @@ -605,12 +605,12 @@ namespace detail{ T e_px, e_mx; - bool small_sinh = get_sign(x) < 0 ? e_px.compare(fp_type(-0.5)) > 0 : e_px.compare(fp_type(0.5)) < 0; + bool small_sinh = eval_get_sign(x) < 0 ? e_px.compare(fp_type(-0.5)) > 0 : e_px.compare(fp_type(0.5)) < 0; if(p_cosh || !small_sinh) { eval_exp(e_px, x); - divide(e_mx, ui_type(1), e_px); + eval_divide(e_mx, ui_type(1), e_px); if(p_sinh) { @@ -620,14 +620,14 @@ namespace detail{ } else { - subtract(*p_sinh, e_px, e_mx); - divide(*p_sinh, ui_type(2)); + eval_subtract(*p_sinh, e_px, e_mx); + eval_divide(*p_sinh, ui_type(2)); } } if(p_cosh) { - add(*p_cosh, e_px, e_mx); - divide(*p_cosh, ui_type(2)); + eval_add(*p_cosh, e_px, e_mx); + eval_divide(*p_cosh, ui_type(2)); } } else @@ -658,6 +658,6 @@ inline void eval_tanh(T& result, const T& x) BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The tanh function is only valid for floating point types."); T c; detail::sinhcosh(x, &result, &c); - divide(result, c); + eval_divide(result, c); } diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index 58c24cd4..dbe134fd 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -29,31 +29,31 @@ void hyp0F1(T& result, const T& b, const T& x) T pochham_b (b); T bp (b); - divide(result, x_pow_n_div_n_fact, pochham_b); - add(result, ui_type(1)); + eval_divide(result, x_pow_n_div_n_fact, pochham_b); + eval_add(result, ui_type(1)); si_type n; T tol; tol = ui_type(1); eval_ldexp(tol, tol, 1 - boost::multiprecision::detail::digits2 >::value); - multiply(tol, result); - if(get_sign(tol) < 0) + eval_multiply(tol, result); + if(eval_get_sign(tol) < 0) tol.negate(); T term; // Series expansion of hyperg_0f1(; b; x). for(n = 2; n < 300; ++n) { - multiply(x_pow_n_div_n_fact, x); - divide(x_pow_n_div_n_fact, n); - increment(bp); - multiply(pochham_b, bp); + eval_multiply(x_pow_n_div_n_fact, x); + eval_divide(x_pow_n_div_n_fact, n); + eval_increment(bp); + eval_multiply(pochham_b, bp); - divide(term, x_pow_n_div_n_fact, pochham_b); - add(result, term); + eval_divide(term, x_pow_n_div_n_fact, pochham_b); + eval_add(result, term); - bool neg_term = get_sign(term) < 0; + bool neg_term = eval_get_sign(term) < 0; if(neg_term) term.negate(); if(term.compare(tol) <= 0) @@ -103,7 +103,7 @@ void eval_sin(T& result, const T& x) // The argument xx will be reduced to 0 <= xx <= pi/2. bool b_negate_sin = false; - if(get_sign(x) < 0) + if(eval_get_sign(x) < 0) { xx.negate(); b_negate_sin = !b_negate_sin; @@ -113,13 +113,13 @@ void eval_sin(T& result, const T& x) // Remove even multiples of pi. if(xx.compare(get_constant_pi()) > 0) { - divide(n_pi, xx, get_constant_pi()); + eval_divide(n_pi, xx, get_constant_pi()); eval_trunc(n_pi, n_pi); t = ui_type(2); eval_fmod(t, n_pi, t); - const bool b_n_pi_is_even = get_sign(t) == 0; - multiply(n_pi, get_constant_pi()); - subtract(xx, n_pi); + const bool b_n_pi_is_even = eval_get_sign(t) == 0; + eval_multiply(n_pi, get_constant_pi()); + eval_subtract(xx, n_pi); BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); BOOST_MATH_INSTRUMENT_CODE(n_pi.str(0, std::ios_base::scientific)); @@ -135,13 +135,13 @@ void eval_sin(T& result, const T& x) eval_ldexp(t, get_constant_pi(), -1); if(xx.compare(t) > 0) { - subtract(xx, get_constant_pi(), xx); + eval_subtract(xx, get_constant_pi(), xx); BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); } - subtract(t, xx); - const bool b_zero = get_sign(xx) == 0; - const bool b_pi_half = get_sign(t) == 0; + eval_subtract(t, xx); + const bool b_zero = eval_get_sign(xx) == 0; + const bool b_pi_half = eval_get_sign(t) == 0; // Check if the reduced argument is very close to 0 or pi/2. const bool b_near_zero = xx.compare(fp_type(1e-1)) < 0; @@ -157,18 +157,18 @@ void eval_sin(T& result, const T& x) } else if(b_near_zero) { - multiply(t, xx, xx); - divide(t, si_type(-4)); + eval_multiply(t, xx, xx); + eval_divide(t, si_type(-4)); T t2; t2 = fp_type(1.5); hyp0F1(result, t2, t); BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); - multiply(result, xx); + eval_multiply(result, xx); } else if(b_near_pi_half) { - multiply(t, t); - divide(t, si_type(-4)); + eval_multiply(t, t); + eval_divide(t, si_type(-4)); T t2; t2 = fp_type(0.5); hyp0F1(result, t2, t); @@ -184,26 +184,26 @@ void eval_sin(T& result, const T& x) static const si_type n_scale = 9; static const si_type n_three_pow_scale = static_cast(19683L); - divide(xx, n_three_pow_scale); + eval_divide(xx, n_three_pow_scale); // Now with small arguments, we are ready for a series expansion. - multiply(t, xx, xx); - divide(t, si_type(-4)); + eval_multiply(t, xx, xx); + eval_divide(t, si_type(-4)); T t2; t2 = fp_type(1.5); hyp0F1(result, t2, t); BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); - multiply(result, xx); + eval_multiply(result, xx); // Convert back using multiple angle identity. for(boost::int32_t k = static_cast(0); k < n_scale; k++) { // Rescale the cosine value using the multiple angle identity. - multiply(t2, result, ui_type(3)); - multiply(t, result, result); - multiply(t, result); - multiply(t, ui_type(4)); - subtract(result, t2, t); + eval_multiply(t2, result, ui_type(3)); + eval_multiply(t, result, result); + eval_multiply(t, result); + eval_multiply(t, ui_type(4)); + eval_subtract(result, t2, t); } } @@ -249,7 +249,7 @@ void eval_cos(T& result, const T& x) // The argument xx will be reduced to 0 <= xx <= pi/2. bool b_negate_cos = false; - if(get_sign(x) < 0) + if(eval_get_sign(x) < 0) { xx.negate(); } @@ -258,18 +258,18 @@ void eval_cos(T& result, const T& x) // Remove even multiples of pi. if(xx.compare(get_constant_pi()) > 0) { - divide(t, xx, get_constant_pi()); + eval_divide(t, xx, get_constant_pi()); eval_trunc(n_pi, t); BOOST_MATH_INSTRUMENT_CODE(n_pi.str(0, std::ios_base::scientific)); - multiply(t, n_pi, get_constant_pi()); + eval_multiply(t, n_pi, get_constant_pi()); BOOST_MATH_INSTRUMENT_CODE(t.str(0, std::ios_base::scientific)); - subtract(xx, t); + eval_subtract(xx, t); BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); // Adjust signs if the multiple of pi is not even. t = ui_type(2); eval_fmod(t, n_pi, t); - const bool b_n_pi_is_even = get_sign(t) == 0; + const bool b_n_pi_is_even = eval_get_sign(t) == 0; if(!b_n_pi_is_even) { @@ -282,17 +282,17 @@ void eval_cos(T& result, const T& x) int com = xx.compare(t); if(com > 0) { - subtract(xx, get_constant_pi(), xx); + eval_subtract(xx, get_constant_pi(), xx); b_negate_cos = !b_negate_cos; BOOST_MATH_INSTRUMENT_CODE(xx.str(0, std::ios_base::scientific)); } - const bool b_zero = get_sign(xx) == 0; + const bool b_zero = eval_get_sign(xx) == 0; const bool b_pi_half = com == 0; // Check if the reduced argument is very close to 0 or pi/2. const bool b_near_zero = xx.compare(fp_type(1e-4)) < 0; - subtract(t, xx); + eval_subtract(t, xx); const bool b_near_pi_half = t.compare(fp_type(1e-4)) < 0; if(b_zero) @@ -305,8 +305,8 @@ void eval_cos(T& result, const T& x) } else if(b_near_zero) { - multiply(t, xx, xx); - divide(t, si_type(-4)); + eval_multiply(t, xx, xx); + eval_divide(t, si_type(-4)); n_pi = fp_type(0.5f); hyp0F1(result, n_pi, t); BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); @@ -314,11 +314,11 @@ void eval_cos(T& result, const T& x) else if(b_near_pi_half) { T t2(t); - multiply(t, t); - divide(t, si_type(-4)); + eval_multiply(t, t); + eval_divide(t, si_type(-4)); n_pi = fp_type(1.5f); hyp0F1(result, n_pi, t); - multiply(result, t2); + eval_multiply(result, t2); BOOST_MATH_INSTRUMENT_CODE(result.str(0, std::ios_base::scientific)); } else @@ -330,10 +330,10 @@ void eval_cos(T& result, const T& x) static const ui_type n_scale = 9; static const ui_type n_three_pow_scale = 19683; - divide(xx, n_three_pow_scale); + eval_divide(xx, n_three_pow_scale); - multiply(t, xx, xx); - divide(t, si_type(-4)); + eval_multiply(t, xx, xx); + eval_divide(t, si_type(-4)); n_pi = fp_type(0.5f); // Now with small arguments, we are ready for a series expansion. @@ -343,11 +343,11 @@ void eval_cos(T& result, const T& x) // Convert back using multiple angle identity. for(ui_type k = 0; k < n_scale; k++) { - multiply(t, result, result); - multiply(t, result); - multiply(t, ui_type(4)); - multiply(result, si_type(-3)); - add(result, t); + eval_multiply(t, result, result); + eval_multiply(t, result); + eval_multiply(t, ui_type(4)); + eval_multiply(result, si_type(-3)); + eval_add(result, t); } } if(b_negate_cos) @@ -361,7 +361,7 @@ void eval_tan(T& result, const T& x) T t; eval_sin(result, x); eval_cos(t, x); - divide(result, t); + eval_divide(result, t); } template @@ -385,15 +385,15 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) T bp (b); T cp (c); - multiply(result, pochham_a, pochham_b); - divide(result, pochham_c); - multiply(result, x_pow_n_div_n_fact); - add(result, ui_type(1)); + eval_multiply(result, pochham_a, pochham_b); + eval_divide(result, pochham_c); + eval_multiply(result, x_pow_n_div_n_fact); + eval_add(result, ui_type(1)); T lim; eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); - if(get_sign(lim) < 0) + if(eval_get_sign(lim) < 0) lim.negate(); ui_type n; @@ -402,22 +402,22 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) // Series expansion of hyperg_2f1(a, b; c; x). for(n = 2; n < 300; ++n) { - multiply(x_pow_n_div_n_fact, x); - divide(x_pow_n_div_n_fact, n); + eval_multiply(x_pow_n_div_n_fact, x); + eval_divide(x_pow_n_div_n_fact, n); - increment(ap); - multiply(pochham_a, ap); - increment(bp); - multiply(pochham_b, bp); - increment(cp); - multiply(pochham_c, cp); + eval_increment(ap); + eval_multiply(pochham_a, ap); + eval_increment(bp); + eval_multiply(pochham_b, bp); + eval_increment(cp); + eval_multiply(pochham_c, cp); - multiply(term, pochham_a, pochham_b); - divide(term, pochham_c); - multiply(term, x_pow_n_div_n_fact); - add(result, term); + eval_multiply(term, pochham_a, pochham_b); + eval_divide(term, pochham_c); + eval_multiply(term, x_pow_n_div_n_fact); + eval_add(result, term); - if(get_sign(term) < 0) + if(eval_get_sign(term) < 0) term.negate(); if(lim.compare(term) >= 0) break; @@ -455,7 +455,7 @@ void eval_asin(T& result, const T& x) default: ; } - const bool b_neg = get_sign(x) < 0; + const bool b_neg = eval_get_sign(x) < 0; T xx(x); if(b_neg) @@ -479,29 +479,29 @@ void eval_asin(T& result, const T& x) if(xx.compare(fp_type(1e-4)) < 0) { // http://functions.wolfram.com/ElementaryFunctions/ArcSin/26/01/01/ - multiply(xx, xx); + eval_multiply(xx, xx); T t1, t2; t1 = fp_type(0.5f); t2 = fp_type(1.5f); hyp2F1(result, t1, t1, t2, xx); - multiply(result, x); + eval_multiply(result, x); return; } else if(xx.compare(fp_type(1 - 1e-4f)) > 0) { T dx1; T t1, t2; - subtract(dx1, ui_type(1), xx); + eval_subtract(dx1, ui_type(1), xx); t1 = fp_type(0.5f); t2 = fp_type(1.5f); eval_ldexp(dx1, dx1, -1); hyp2F1(result, t1, t1, t2, dx1); eval_ldexp(dx1, dx1, 2); eval_sqrt(t1, dx1); - multiply(result, t1); + eval_multiply(result, t1); eval_ldexp(t1, get_constant_pi(), -1); result.negate(); - add(result, t1); + eval_add(result, t1); if(b_neg) result.negate(); return; @@ -509,7 +509,7 @@ void eval_asin(T& result, const T& x) // Get initial estimate using standard math function asin. double dd; - convert_to(&dd, xx); + eval_convert_to(&dd, xx); result = fp_type(std::asin(dd)); @@ -519,15 +519,15 @@ void eval_asin(T& result, const T& x) T s, c; eval_sin(s, result); eval_cos(c, result); - subtract(s, xx); - divide(s, c); - subtract(result, s); + eval_subtract(s, xx); + eval_divide(s, c); + eval_subtract(result, s); T lim; eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); - if(get_sign(s) < 0) + if(eval_get_sign(s) < 0) s.negate(); - if(get_sign(lim) < 0) + if(eval_get_sign(lim) < 0) lim.negate(); if(lim.compare(s) >= 0) break; @@ -564,7 +564,7 @@ inline void eval_acos(T& result, const T& x) } else if(c == 0) { - if(get_sign(x) < 0) + if(eval_get_sign(x) < 0) result = get_constant_pi(); else result = ui_type(0); @@ -574,7 +574,7 @@ inline void eval_acos(T& result, const T& x) eval_asin(result, x); T t; eval_ldexp(t, get_constant_pi(), -1); - subtract(result, t); + eval_subtract(result, t); result.negate(); } @@ -597,7 +597,7 @@ void eval_atan(T& result, const T& x) result = ui_type(0); return; case FP_INFINITE: - if(get_sign(x) < 0) + if(eval_get_sign(x) < 0) { eval_ldexp(result, get_constant_pi(), -1); result.negate(); @@ -608,7 +608,7 @@ void eval_atan(T& result, const T& x) default: ; } - const bool b_neg = get_sign(x) < 0; + const bool b_neg = eval_get_sign(x) < 0; T xx(x); if(b_neg) @@ -620,10 +620,10 @@ void eval_atan(T& result, const T& x) t1 = ui_type(1); t2 = fp_type(0.5f); t3 = fp_type(1.5f); - multiply(xx, xx); + eval_multiply(xx, xx); xx.negate(); hyp2F1(result, t1, t2, t3, xx); - multiply(result, x); + eval_multiply(result, x); return; } @@ -633,14 +633,14 @@ void eval_atan(T& result, const T& x) t1 = fp_type(0.5f); t2 = ui_type(1u); t3 = fp_type(1.5f); - multiply(xx, xx); - divide(xx, si_type(-1), xx); + eval_multiply(xx, xx); + eval_divide(xx, si_type(-1), xx); hyp2F1(result, t1, t2, t3, xx); - divide(result, x); + eval_divide(result, x); if(!b_neg) result.negate(); eval_ldexp(t1, get_constant_pi(), -1); - add(result, t1); + eval_add(result, t1); if(b_neg) result.negate(); return; @@ -649,7 +649,7 @@ void eval_atan(T& result, const T& x) // Get initial estimate using standard math function atan. fp_type d; - convert_to(&d, xx); + eval_convert_to(&d, xx); result = fp_type(std::atan(d)); // Newton-Raphson iteration @@ -660,10 +660,10 @@ void eval_atan(T& result, const T& x) { eval_sin(s, result); eval_cos(c, result); - multiply(t, xx, c); - subtract(t, s); - multiply(s, t, c); - add(result, s); + eval_multiply(t, xx, c); + eval_subtract(t, s); + eval_multiply(s, t, c); + eval_add(result, s); } if(b_neg) result.negate(); @@ -699,7 +699,7 @@ void eval_atan2(T& result, const T& y, const T& x) return; case FP_ZERO: { - int c = get_sign(x); + int c = eval_get_sign(x); if(c < 0) result = get_constant_pi(); else if(c >= 0) @@ -715,7 +715,7 @@ void eval_atan2(T& result, const T& y, const T& x) else { eval_ldexp(result, get_constant_pi(), -1); - if(get_sign(y) < 0) + if(eval_get_sign(y) < 0) result.negate(); } return; @@ -730,30 +730,30 @@ void eval_atan2(T& result, const T& y, const T& x) case FP_ZERO: { eval_ldexp(result, get_constant_pi(), -1); - if(get_sign(y) < 0) + if(eval_get_sign(y) < 0) result.negate(); return; } case FP_INFINITE: - if(get_sign(x) > 0) + if(eval_get_sign(x) > 0) result = ui_type(0); else result = get_constant_pi(); - if(get_sign(y) < 0) + if(eval_get_sign(y) < 0) result.negate(); return; } T xx; - divide(xx, y, x); - if(get_sign(xx) < 0) + eval_divide(xx, y, x); + if(eval_get_sign(xx) < 0) xx.negate(); eval_atan(result, xx); // Determine quadrant (sign) based on signs of x, y - const bool y_neg = get_sign(y) < 0; - const bool x_neg = get_sign(x) < 0; + const bool y_neg = eval_get_sign(y) < 0; + const bool x_neg = eval_get_sign(x) < 0; if(y_neg != x_neg) result.negate(); @@ -761,9 +761,9 @@ void eval_atan2(T& result, const T& y, const T& x) if(x_neg) { if(y_neg) - subtract(result, get_constant_pi()); + eval_subtract(result, get_constant_pi()); else - add(result, get_constant_pi()); + eval_add(result, get_constant_pi()); } } diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 1127079d..85a6d339 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -127,17 +127,17 @@ struct fixed_int f = ldexp(f, shift); term = floor(f); e -= shift; - left_shift(*this, shift); + eval_left_shift(*this, shift); if(term > 0) - add(*this, static_cast(term)); + eval_add(*this, static_cast(term)); else - subtract(*this, static_cast(-term)); + eval_subtract(*this, static_cast(-term)); f -= term; } if(e > 0) - left_shift(*this, e); + eval_left_shift(*this, e); else if(e < 0) - right_shift(*this, -e); + eval_right_shift(*this, -e); data()[0] &= fixed_int::upper_limb_mask; return *this; } @@ -202,7 +202,7 @@ struct fixed_int break; } } - left_shift(*this, block_shift); + eval_left_shift(*this, block_shift); m_value[limb_count - 1] |= block; } } @@ -229,8 +229,8 @@ struct fixed_int break; } } - multiply(*this, block_mult); - add(*this, block); + eval_multiply(*this, block_mult); + eval_add(*this, block); } } } @@ -265,7 +265,7 @@ struct fixed_int if(c > '9') c += 'A' - '9' - 1; result[pos--] = c; - right_shift(t, shift); + eval_right_shift(t, shift); } if(Bits % shift) { @@ -306,7 +306,7 @@ struct fixed_int } else { - while(get_sign(t) != 0) + while(eval_get_sign(t) != 0) { fixed_int t2; divide_unsigned_helper(t2, t, max_block_10, r); @@ -376,12 +376,12 @@ private: }; template -inline void add(fixed_int& result, const fixed_int& o) +inline void eval_add(fixed_int& result, const fixed_int& o) { - add(result, result, o); + eval_add(result, result, o); } template -inline void add(fixed_int& result, const fixed_int& a, const fixed_int& b) +inline void eval_add(fixed_int& result, const fixed_int& a, const fixed_int& b) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: @@ -395,7 +395,7 @@ inline void add(fixed_int& result, const fixed_int& result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void add(fixed_int& result, const limb_type& o) +inline void eval_add(fixed_int& result, const limb_type& o) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: @@ -409,15 +409,15 @@ inline void add(fixed_int& result, const limb_type& o) result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void add(fixed_int& result, const signed_limb_type& o) +inline void eval_add(fixed_int& result, const signed_limb_type& o) { if(o < 0) - subtract(result, static_cast(-o)); + eval_subtract(result, static_cast(-o)); else if(o > 0) - add(result, static_cast(o)); + eval_add(result, static_cast(o)); } template -inline void subtract(fixed_int& result, const limb_type& o) +inline void eval_subtract(fixed_int& result, const limb_type& o) { // Subtract using modular arithmatic. // This is the same code as for addition, with the twist that we negate o "on the fly": @@ -434,41 +434,41 @@ inline void subtract(fixed_int& result, const limb_type& o) result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void subtract(fixed_int& result, const signed_limb_type& o) +inline void eval_subtract(fixed_int& result, const signed_limb_type& o) { if(o) { if(o < 0) - add(result, static_cast(-o)); + eval_add(result, static_cast(-o)); else - subtract(result, static_cast(o)); + eval_subtract(result, static_cast(o)); } } template -inline void increment(fixed_int& result) +inline void eval_increment(fixed_int& result) { static const limb_type one = 1; if(result.data().elems[fixed_int::limb_count - 1] < fixed_int::max_limb_value) ++result.data().elems[fixed_int::limb_count - 1]; else - add(result, one); + eval_add(result, one); } template -inline void decrement(fixed_int& result) +inline void eval_decrement(fixed_int& result) { static const limb_type one = 1; if(result.data().elems[fixed_int::limb_count - 1]) --result.data().elems[fixed_int::limb_count - 1]; else - subtract(result, one); + eval_subtract(result, one); } template -inline void subtract(fixed_int& result, const fixed_int& o) +inline void eval_subtract(fixed_int& result, const fixed_int& o) { - subtract(result, result, o); + eval_subtract(result, result, o); } template -inline void subtract(fixed_int& result, const fixed_int& a, const fixed_int& b) +inline void eval_subtract(fixed_int& result, const fixed_int& a, const fixed_int& b) { // Subtract using modular arithmatic. // This is the same code as for addition, with the twist that we negate b "on the fly": @@ -482,20 +482,20 @@ inline void subtract(fixed_int& result, const fixed_int::upper_limb_mask; } template -inline void multiply(fixed_int& result, const fixed_int& a, const fixed_int& b) +inline void eval_multiply(fixed_int& result, const fixed_int& a, const fixed_int& b) { // Very simple long multiplication, only usable for small numbers of limb_type's // but that's the typical use case for this type anyway: if(&result == &a) { fixed_int t(a); - multiply(result, t, b); + eval_multiply(result, t, b); return; } if(&result == &b) { fixed_int t(b); - multiply(result, a, t); + eval_multiply(result, a, t); return; } double_limb_type carry = 0; @@ -515,14 +515,14 @@ inline void multiply(fixed_int& result, const fixed_int::upper_limb_mask; } template -inline void multiply(fixed_int& result, const fixed_int& a) +inline void eval_multiply(fixed_int& result, const fixed_int& a) { // There is no in-place multiply: fixed_int b(result); - multiply(result, b, a); + eval_multiply(result, b, a); } template -inline void multiply(fixed_int& result, const limb_type& a) +inline void eval_multiply(fixed_int& result, const limb_type& a) { double_limb_type carry = 0; for(int i = fixed_int::limb_count - 1; i >= 0; --i) @@ -534,13 +534,13 @@ inline void multiply(fixed_int& result, const limb_type& a) result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void multiply(fixed_int& result, const signed_limb_type& a) +inline void eval_multiply(fixed_int& result, const signed_limb_type& a) { if(a > 0) - multiply(result, static_cast(a)); + eval_multiply(result, static_cast(a)); else { - multiply(result, static_cast(-a)); + eval_multiply(result, static_cast(-a)); result.negate(); } } @@ -580,17 +580,17 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int& result, const fixed_int(1u); - subtract(r, y); + eval_subtract(r, y); return; } @@ -626,18 +626,18 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1 - n / fixed_int::limb_bits; limb_type mask = static_cast(1u) << n % fixed_int::limb_bits; fixed_int t(y); - left_shift(t, n); + eval_left_shift(t, n); while(mask_index < fixed_int::limb_count) { int comp = r.compare(t); if(comp >= 0) { result.data()[mask_index] |= mask; - subtract(r, t); + eval_subtract(r, t); if(comp == 0) break; // no remainder left - we have an exact result! } - right_shift(t, 1u); + eval_right_shift(t, 1u); if(0 == (mask >>= 1)) { ++mask_index; @@ -682,7 +682,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int& result, const fixed_int::limb_count - 1 - shift] = guess; - subtract(result, t); + eval_subtract(result, t); } } else if(fixed_int::max_limb_value - result.data()[fixed_int::limb_count - 1 - shift] > guess) @@ -821,7 +821,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::limb_count - 1 - shift] = guess; - add(result, t); + eval_add(result, t); } // // Calculate guess * y, we use a fused mutiply-shift O(N) for this @@ -840,7 +840,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int::sign_bit_mask) { r.negate(); @@ -857,9 +857,9 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int& result, const fixed_int& result, const fixed_int -inline void divide(fixed_int& result, const fixed_int& a, const fixed_int& b) +inline void eval_divide(fixed_int& result, const fixed_int& a, const fixed_int& b) { fixed_int r; if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) @@ -1003,7 +1003,7 @@ inline void divide(fixed_int& result, const fixed_int -inline void divide(fixed_int& result, const fixed_int& a, limb_type& b) +inline void eval_divide(fixed_int& result, const fixed_int& a, limb_type& b) { fixed_int r; if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) @@ -1019,7 +1019,7 @@ inline void divide(fixed_int& result, const fixed_int -inline void divide(fixed_int& result, const fixed_int& a, signed_limb_type& b) +inline void eval_divide(fixed_int& result, const fixed_int& a, signed_limb_type& b) { fixed_int r; if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) @@ -1049,28 +1049,28 @@ inline void divide(fixed_int& result, const fixed_int -inline void divide(fixed_int& result, const fixed_int& b) +inline void eval_divide(fixed_int& result, const fixed_int& b) { // There is no in place divide: fixed_int a(result); - divide(result, a, b); + eval_divide(result, a, b); } template -inline void divide(fixed_int& result, limb_type b) +inline void eval_divide(fixed_int& result, limb_type b) { // There is no in place divide: fixed_int a(result); - divide(result, a, b); + eval_divide(result, a, b); } template -inline void divide(fixed_int& result, signed_limb_type b) +inline void eval_divide(fixed_int& result, signed_limb_type b) { // There is no in place divide: fixed_int a(result); - divide(result, a, b); + eval_divide(result, a, b); } template -inline void modulus(fixed_int& result, const fixed_int& a, const fixed_int& b) +inline void eval_modulus(fixed_int& result, const fixed_int& a, const fixed_int& b) { fixed_int r; if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) @@ -1103,7 +1103,7 @@ inline void modulus(fixed_int& result, const fixed_int -inline void modulus(fixed_int& result, const fixed_int& a, limb_type b) +inline void eval_modulus(fixed_int& result, const fixed_int& a, limb_type b) { fixed_int r; if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) @@ -1119,7 +1119,7 @@ inline void modulus(fixed_int& result, const fixed_int -inline void modulus(fixed_int& result, const fixed_int& a, signed_limb_type b) +inline void eval_modulus(fixed_int& result, const fixed_int& a, signed_limb_type b) { fixed_int r; if(Signed && (a.data()[0] & fixed_int::sign_bit_mask)) @@ -1149,42 +1149,42 @@ inline void modulus(fixed_int& result, const fixed_int -inline void modulus(fixed_int& result, const fixed_int& b) +inline void eval_modulus(fixed_int& result, const fixed_int& b) { // There is no in place divide: fixed_int a(result); - modulus(result, a, b); + eval_modulus(result, a, b); } template -inline void modulus(fixed_int& result, limb_type b) +inline void eval_modulus(fixed_int& result, limb_type b) { // There is no in place divide: fixed_int a(result); - modulus(result, a, b); + eval_modulus(result, a, b); } template -inline void modulus(fixed_int& result, signed_limb_type b) +inline void eval_modulus(fixed_int& result, signed_limb_type b) { // There is no in place divide: fixed_int a(result); - modulus(result, a, b); + eval_modulus(result, a, b); } template -inline void bitwise_and(fixed_int& result, const fixed_int& o) +inline void eval_bitwise_and(fixed_int& result, const fixed_int& o) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] &= o.data()[i]; } template -inline void bitwise_and(fixed_int& result, limb_type o) +inline void eval_bitwise_and(fixed_int& result, limb_type o) { result.data()[fixed_int::limb_count - 1] &= o; for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count - 1; ++i) result.data()[i] = 0; } template -inline void bitwise_and(fixed_int& result, signed_limb_type o) +inline void eval_bitwise_and(fixed_int& result, signed_limb_type o) { result.data()[fixed_int::limb_count - 1] &= o; limb_type mask = o < 0 ? fixed_int::max_limb_value : 0; @@ -1192,18 +1192,18 @@ inline void bitwise_and(fixed_int& result, signed_limb_type o) result.data()[i] &= mask; } template -inline void bitwise_or(fixed_int& result, const fixed_int& o) +inline void eval_bitwise_or(fixed_int& result, const fixed_int& o) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] |= o.data()[i]; } template -inline void bitwise_or(fixed_int& result, limb_type o) +inline void eval_bitwise_or(fixed_int& result, limb_type o) { result.data()[fixed_int::limb_count - 1] |= o; } template -inline void bitwise_or(fixed_int& result, signed_limb_type o) +inline void eval_bitwise_or(fixed_int& result, signed_limb_type o) { result.data()[fixed_int::limb_count - 1] |= o; limb_type mask = o < 0 ? fixed_int::max_limb_value : 0; @@ -1211,19 +1211,19 @@ inline void bitwise_or(fixed_int& result, signed_limb_type o) result.data()[i] |= mask; } template -inline void bitwise_xor(fixed_int& result, const fixed_int& o) +inline void eval_bitwise_xor(fixed_int& result, const fixed_int& o) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] ^= o.data()[i]; result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void bitwise_xor(fixed_int& result, limb_type o) +inline void eval_bitwise_xor(fixed_int& result, limb_type o) { result.data()[fixed_int::limb_count - 1] ^= o; } template -inline void bitwise_xor(fixed_int& result, signed_limb_type o) +inline void eval_bitwise_xor(fixed_int& result, signed_limb_type o) { result.data()[fixed_int::limb_count - 1] ^= o; limb_type mask = o < 0 ? fixed_int::max_limb_value : 0; @@ -1231,14 +1231,14 @@ inline void bitwise_xor(fixed_int& result, signed_limb_type o) result.data()[i] ^= mask; } template -inline void complement(fixed_int& result, const fixed_int& o) +inline void eval_complement(fixed_int& result, const fixed_int& o) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) result.data()[i] = ~o.data()[i]; result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void left_shift(fixed_int& result, double_limb_type s) +inline void eval_left_shift(fixed_int& result, double_limb_type s) { if(!s) return; @@ -1273,7 +1273,7 @@ inline void left_shift(fixed_int& result, double_limb_type s) result.data()[0] &= fixed_int::upper_limb_mask; } template -inline void right_shift(fixed_int& result, double_limb_type s) +inline void eval_right_shift(fixed_int& result, double_limb_type s) { if(!s) return; @@ -1317,22 +1317,22 @@ inline void right_shift(fixed_int& result, double_limb_type s) } template -inline typename enable_if, void>::type convert_to(R* result, const fixed_int& backend, const mpl::true_&) +inline typename enable_if, void>::type eval_convert_to(R* result, const fixed_int& backend, const mpl::true_&) { if(backend.data()[0] & fixed_int::sign_bit_mask) { fixed_int t(backend); t.negate(); - convert_to(result, t, mpl::false_()); + eval_convert_to(result, t, mpl::false_()); *result = -*result; return; } else - convert_to(result, backend, mpl::false_()); + eval_convert_to(result, backend, mpl::false_()); } template -inline typename enable_if, void>::type convert_to(R* result, const fixed_int& backend, const mpl::false_&) +inline typename enable_if, void>::type eval_convert_to(R* result, const fixed_int& backend, const mpl::false_&) { unsigned shift = (fixed_int::limb_count - 1) * fixed_int::limb_bits; *result = static_cast(0); @@ -1344,20 +1344,20 @@ inline typename enable_if, void>::type convert_to(R* result, cons } template -inline typename enable_if, void>::type convert_to(R* result, const fixed_int& backend) +inline typename enable_if, void>::type eval_convert_to(R* result, const fixed_int& backend) { typedef mpl::bool_::is_signed> tag_type; - convert_to(result, backend, tag_type()); + eval_convert_to(result, backend, tag_type()); } template -inline typename enable_if, void>::type convert_to(R* result, const fixed_int& backend) +inline typename enable_if, void>::type eval_convert_to(R* result, const fixed_int& backend) { if(Signed && (backend.data()[0] & fixed_int::sign_bit_mask)) { fixed_int t(backend); t.negate(); - convert_to(result, t); + eval_convert_to(result, t); *result = -*result; return; } @@ -1371,7 +1371,7 @@ inline typename enable_if, void>::type convert_to(R* result } template -inline bool is_zero(const fixed_int& val) +inline bool eval_is_zero(const fixed_int& val) { for(typename fixed_int::data_type::size_type i = 0; i < fixed_int::limb_count; ++i) { @@ -1381,14 +1381,14 @@ inline bool is_zero(const fixed_int& val) return true; } template -inline int get_sign(const fixed_int& val) +inline int eval_get_sign(const fixed_int& val) { - return is_zero(val) ? 0 : 1; + return eval_is_zero(val) ? 0 : 1; } template -inline int get_sign(const fixed_int& val) +inline int eval_get_sign(const fixed_int& val) { - return is_zero(val) ? 0 : val.data()[0] & fixed_int::sign_bit_mask ? -1 : 1; + return eval_is_zero(val) ? 0 : val.data()[0] & fixed_int::sign_bit_mask ? -1 : 1; } namespace detail{ @@ -1398,7 +1398,7 @@ namespace detail{ template inline unsigned get_lsb(const fixed_int& a) { - BOOST_ASSERT(get_sign(a) != 0); + BOOST_ASSERT(eval_get_sign(a) != 0); unsigned result = 0; // @@ -1429,7 +1429,7 @@ inline void eval_gcd(fixed_int& result, const fixed_int u(a), v(b); - int s = get_sign(u); + int s = eval_get_sign(u); /* GCD(0,x) := x */ if(s < 0) @@ -1441,7 +1441,7 @@ inline void eval_gcd(fixed_int& result, const fixed_int& result, const fixed_int& result, const fixed_int 0) u.swap(v); - subtract(v, u); + eval_subtract(v, u); // Termination condition tries not to do a full compare if possible: - if(!v.data()[fixed_int::limb_count - 1] && is_zero(v)) + if(!v.data()[fixed_int::limb_count - 1] && eval_is_zero(v)) break; vs = detail::get_lsb(v); - right_shift(v, vs); + eval_right_shift(v, vs); BOOST_ASSERT((v.data()[fixed_int::limb_count - 1] & 1)); BOOST_ASSERT((u.data()[fixed_int::limb_count - 1] & 1)); } while(true); result = u; - left_shift(result, shift); + eval_left_shift(result, shift); } template @@ -1488,16 +1488,16 @@ inline void eval_lcm(fixed_int& result, const fixed_int t; eval_gcd(t, a, b); - if(is_zero(t)) + if(eval_is_zero(t)) { result = static_cast(0); } else { - divide(result, a, t); - multiply(result, b); + eval_divide(result, a, t); + eval_multiply(result, b); } - if(get_sign(result) < 0) + if(eval_get_sign(result) < 0) result.negate(); } diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 648d60c5..f2104de9 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -16,7 +16,9 @@ #include #include -namespace boost{ namespace multiprecision{ +namespace boost{ +namespace multiprecision{ +namespace backends{ template struct gmp_float; @@ -473,47 +475,47 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> }; template -inline void add(gmp_float& result, const gmp_float& o) +inline void eval_add(gmp_float& result, const gmp_float& o) { mpf_add(result.data(), result.data(), o.data()); } template -inline void subtract(gmp_float& result, const gmp_float& o) +inline void eval_subtract(gmp_float& result, const gmp_float& o) { mpf_sub(result.data(), result.data(), o.data()); } template -inline void multiply(gmp_float& result, const gmp_float& o) +inline void eval_multiply(gmp_float& result, const gmp_float& o) { mpf_mul(result.data(), result.data(), o.data()); } template -inline void divide(gmp_float& result, const gmp_float& o) +inline void eval_divide(gmp_float& result, const gmp_float& o) { mpf_div(result.data(), result.data(), o.data()); } template -inline void add(gmp_float& result, unsigned long i) +inline void eval_add(gmp_float& result, unsigned long i) { mpf_add_ui(result.data(), result.data(), i); } template -inline void subtract(gmp_float& result, unsigned long i) +inline void eval_subtract(gmp_float& result, unsigned long i) { mpf_sub_ui(result.data(), result.data(), i); } template -inline void multiply(gmp_float& result, unsigned long i) +inline void eval_multiply(gmp_float& result, unsigned long i) { mpf_mul_ui(result.data(), result.data(), i); } template -inline void divide(gmp_float& result, unsigned long i) +inline void eval_divide(gmp_float& result, unsigned long i) { mpf_div_ui(result.data(), result.data(), i); } template -inline void add(gmp_float& result, long i) +inline void eval_add(gmp_float& result, long i) { if(i > 0) mpf_add_ui(result.data(), result.data(), i); @@ -521,7 +523,7 @@ inline void add(gmp_float& result, long i) mpf_sub_ui(result.data(), result.data(), std::abs(i)); } template -inline void subtract(gmp_float& result, long i) +inline void eval_subtract(gmp_float& result, long i) { if(i > 0) mpf_sub_ui(result.data(), result.data(), i); @@ -529,14 +531,14 @@ inline void subtract(gmp_float& result, long i) mpf_add_ui(result.data(), result.data(), std::abs(i)); } template -inline void multiply(gmp_float& result, long i) +inline void eval_multiply(gmp_float& result, long i) { mpf_mul_ui(result.data(), result.data(), std::abs(i)); if(i < 0) mpf_neg(result.data(), result.data()); } template -inline void divide(gmp_float& result, long i) +inline void eval_divide(gmp_float& result, long i) { mpf_div_ui(result.data(), result.data(), std::abs(i)); if(i < 0) @@ -546,17 +548,17 @@ inline void divide(gmp_float& result, long i) // Specialised 3 arg versions of the basic operators: // template -inline void add(gmp_float& a, const gmp_float& x, const gmp_float& y) +inline void eval_add(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_add(a.data(), x.data(), y.data()); } template -inline void add(gmp_float& a, const gmp_float& x, unsigned long y) +inline void eval_add(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_add_ui(a.data(), x.data(), y); } template -inline void add(gmp_float& a, const gmp_float& x, long y) +inline void eval_add(gmp_float& a, const gmp_float& x, long y) { if(y < 0) mpf_sub_ui(a.data(), x.data(), -y); @@ -564,12 +566,12 @@ inline void add(gmp_float& a, const gmp_float& x, long y) mpf_add_ui(a.data(), x.data(), y); } template -inline void add(gmp_float& a, unsigned long x, const gmp_float& y) +inline void eval_add(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_add_ui(a.data(), y.data(), x); } template -inline void add(gmp_float& a, long x, const gmp_float& y) +inline void eval_add(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -580,17 +582,17 @@ inline void add(gmp_float& a, long x, const gmp_float& y) mpf_add_ui(a.data(), y.data(), x); } template -inline void subtract(gmp_float& a, const gmp_float& x, const gmp_float& y) +inline void eval_subtract(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_sub(a.data(), x.data(), y.data()); } template -inline void subtract(gmp_float& a, const gmp_float& x, unsigned long y) +inline void eval_subtract(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_sub_ui(a.data(), x.data(), y); } template -inline void subtract(gmp_float& a, const gmp_float& x, long y) +inline void eval_subtract(gmp_float& a, const gmp_float& x, long y) { if(y < 0) mpf_add_ui(a.data(), x.data(), -y); @@ -598,12 +600,12 @@ inline void subtract(gmp_float& a, const gmp_float& x, long mpf_sub_ui(a.data(), x.data(), y); } template -inline void subtract(gmp_float& a, unsigned long x, const gmp_float& y) +inline void eval_subtract(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_ui_sub(a.data(), x, y.data()); } template -inline void subtract(gmp_float& a, long x, const gmp_float& y) +inline void eval_subtract(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -615,17 +617,17 @@ inline void subtract(gmp_float& a, long x, const gmp_float& } template -inline void multiply(gmp_float& a, const gmp_float& x, const gmp_float& y) +inline void eval_multiply(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_mul(a.data(), x.data(), y.data()); } template -inline void multiply(gmp_float& a, const gmp_float& x, unsigned long y) +inline void eval_multiply(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_mul_ui(a.data(), x.data(), y); } template -inline void multiply(gmp_float& a, const gmp_float& x, long y) +inline void eval_multiply(gmp_float& a, const gmp_float& x, long y) { if(y < 0) { @@ -636,12 +638,12 @@ inline void multiply(gmp_float& a, const gmp_float& x, long mpf_mul_ui(a.data(), x.data(), y); } template -inline void multiply(gmp_float& a, unsigned long x, const gmp_float& y) +inline void eval_multiply(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_mul_ui(a.data(), y.data(), x); } template -inline void multiply(gmp_float& a, long x, const gmp_float& y) +inline void eval_multiply(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -653,17 +655,17 @@ inline void multiply(gmp_float& a, long x, const gmp_float& } template -inline void divide(gmp_float& a, const gmp_float& x, const gmp_float& y) +inline void eval_divide(gmp_float& a, const gmp_float& x, const gmp_float& y) { mpf_div(a.data(), x.data(), y.data()); } template -inline void divide(gmp_float& a, const gmp_float& x, unsigned long y) +inline void eval_divide(gmp_float& a, const gmp_float& x, unsigned long y) { mpf_div_ui(a.data(), x.data(), y); } template -inline void divide(gmp_float& a, const gmp_float& x, long y) +inline void eval_divide(gmp_float& a, const gmp_float& x, long y) { if(y < 0) { @@ -674,12 +676,12 @@ inline void divide(gmp_float& a, const gmp_float& x, long y) mpf_div_ui(a.data(), x.data(), y); } template -inline void divide(gmp_float& a, unsigned long x, const gmp_float& y) +inline void eval_divide(gmp_float& a, unsigned long x, const gmp_float& y) { mpf_ui_div(a.data(), x, y.data()); } template -inline void divide(gmp_float& a, long x, const gmp_float& y) +inline void eval_divide(gmp_float& a, long x, const gmp_float& y) { if(x < 0) { @@ -691,18 +693,18 @@ inline void divide(gmp_float& a, long x, const gmp_float& y) } template -inline bool is_zero(const gmp_float& val) +inline bool eval_is_zero(const gmp_float& val) { return mpf_sgn(val.data()) == 0; } template -inline int get_sign(const gmp_float& val) +inline int eval_get_sign(const gmp_float& val) { return mpf_sgn(val.data()); } template -inline void convert_to(unsigned long* result, const gmp_float& val) +inline void eval_convert_to(unsigned long* result, const gmp_float& val) { if(0 == mpf_fits_ulong_p(val.data())) *result = (std::numeric_limits::max)(); @@ -710,7 +712,7 @@ inline void convert_to(unsigned long* result, const gmp_float& val) *result = mpf_get_ui(val.data()); } template -inline void convert_to(long* result, const gmp_float& val) +inline void eval_convert_to(long* result, const gmp_float& val) { if(0 == mpf_fits_slong_p(val.data())) { @@ -721,16 +723,16 @@ inline void convert_to(long* result, const gmp_float& val) *result = mpf_get_si(val.data()); } template -inline void convert_to(double* result, const gmp_float& val) +inline void eval_convert_to(double* result, const gmp_float& val) { *result = mpf_get_d(val.data()); } #ifdef BOOST_HAS_LONG_LONG template -inline void convert_to(long long* result, const gmp_float& val) +inline void eval_convert_to(long long* result, const gmp_float& val) { gmp_float t(val); - if(get_sign(t) < 0) + if(eval_get_sign(t) < 0) t.negate(); long digits = std::numeric_limits::digits - std::numeric_limits::digits; @@ -740,7 +742,7 @@ inline void convert_to(long long* result, const gmp_float& val) if(!mpf_fits_slong_p(t.data())) { - if(get_sign(val) < 0) + if(eval_get_sign(val) < 0) *result = (std::numeric_limits::min)(); else *result = (std::numeric_limits::max)(); @@ -758,11 +760,11 @@ inline void convert_to(long long* result, const gmp_float& val) l >>= -digits; *result |= l; } - if(get_sign(val) < 0) + if(eval_get_sign(val) < 0) *result = -*result; } template -inline void convert_to(unsigned long long* result, const gmp_float& val) +inline void eval_convert_to(unsigned long long* result, const gmp_float& val) { gmp_float t(val); @@ -1094,23 +1096,23 @@ protected: mpz_t m_data; }; -inline void add(gmp_int& t, const gmp_int& o) +inline void eval_add(gmp_int& t, const gmp_int& o) { mpz_add(t.data(), t.data(), o.data()); } -inline void subtract(gmp_int& t, const gmp_int& o) +inline void eval_subtract(gmp_int& t, const gmp_int& o) { mpz_sub(t.data(), t.data(), o.data()); } -inline void multiply(gmp_int& t, const gmp_int& o) +inline void eval_multiply(gmp_int& t, const gmp_int& o) { mpz_mul(t.data(), t.data(), o.data()); } -inline void divide(gmp_int& t, const gmp_int& o) +inline void eval_divide(gmp_int& t, const gmp_int& o) { mpz_div(t.data(), t.data(), o.data()); } -inline void modulus(gmp_int& t, const gmp_int& o) +inline void eval_modulus(gmp_int& t, const gmp_int& o) { bool neg = mpz_sgn(t.data()) < 0; bool neg2 = mpz_sgn(o.data()) < 0; @@ -1124,19 +1126,19 @@ inline void modulus(gmp_int& t, const gmp_int& o) t.negate(); } } -inline void add(gmp_int& t, unsigned long i) +inline void eval_add(gmp_int& t, unsigned long i) { mpz_add_ui(t.data(), t.data(), i); } -inline void subtract(gmp_int& t, unsigned long i) +inline void eval_subtract(gmp_int& t, unsigned long i) { mpz_sub_ui(t.data(), t.data(), i); } -inline void multiply(gmp_int& t, unsigned long i) +inline void eval_multiply(gmp_int& t, unsigned long i) { mpz_mul_ui(t.data(), t.data(), i); } -inline void modulus(gmp_int& t, unsigned long i) +inline void eval_modulus(gmp_int& t, unsigned long i) { bool neg = mpz_sgn(t.data()) < 0; mpz_mod_ui(t.data(), t.data(), i); @@ -1147,31 +1149,31 @@ inline void modulus(gmp_int& t, unsigned long i) t.negate(); } } -inline void divide(gmp_int& t, unsigned long i) +inline void eval_divide(gmp_int& t, unsigned long i) { mpz_div_ui(t.data(), t.data(), i); } -inline void add(gmp_int& t, long i) +inline void eval_add(gmp_int& t, long i) { if(i > 0) mpz_add_ui(t.data(), t.data(), i); else mpz_sub_ui(t.data(), t.data(), -i); } -inline void subtract(gmp_int& t, long i) +inline void eval_subtract(gmp_int& t, long i) { if(i > 0) mpz_sub_ui(t.data(), t.data(), i); else mpz_add_ui(t.data(), t.data(), -i); } -inline void multiply(gmp_int& t, long i) +inline void eval_multiply(gmp_int& t, long i) { mpz_mul_ui(t.data(), t.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); } -inline void modulus(gmp_int& t, long i) +inline void eval_modulus(gmp_int& t, long i) { bool neg = mpz_sgn(t.data()) < 0; bool neg2 = i < 0; @@ -1190,65 +1192,65 @@ inline void modulus(gmp_int& t, long i) } } } -inline void divide(gmp_int& t, long i) +inline void eval_divide(gmp_int& t, long i) { mpz_div_ui(t.data(), t.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); } template -inline void left_shift(gmp_int& t, UI i) +inline void eval_left_shift(gmp_int& t, UI i) { mpz_mul_2exp(t.data(), t.data(), static_cast(i)); } template -inline void right_shift(gmp_int& t, UI i) +inline void eval_right_shift(gmp_int& t, UI i) { mpz_fdiv_q_2exp(t.data(), t.data(), static_cast(i)); } template -inline void left_shift(gmp_int& t, const gmp_int& v, UI i) +inline void eval_left_shift(gmp_int& t, const gmp_int& v, UI i) { mpz_mul_2exp(t.data(), v.data(), static_cast(i)); } template -inline void right_shift(gmp_int& t, const gmp_int& v, UI i) +inline void eval_right_shift(gmp_int& t, const gmp_int& v, UI i) { mpz_fdiv_q_2exp(t.data(), v.data(), static_cast(i)); } -inline void bitwise_and(gmp_int& result, const gmp_int& v) +inline void eval_bitwise_and(gmp_int& result, const gmp_int& v) { mpz_and(result.data(), result.data(), v.data()); } -inline void bitwise_or(gmp_int& result, const gmp_int& v) +inline void eval_bitwise_or(gmp_int& result, const gmp_int& v) { mpz_ior(result.data(), result.data(), v.data()); } -inline void bitwise_xor(gmp_int& result, const gmp_int& v) +inline void eval_bitwise_xor(gmp_int& result, const gmp_int& v) { mpz_xor(result.data(), result.data(), v.data()); } -inline void add(gmp_int& t, const gmp_int& p, const gmp_int& o) +inline void eval_add(gmp_int& t, const gmp_int& p, const gmp_int& o) { mpz_add(t.data(), p.data(), o.data()); } -inline void subtract(gmp_int& t, const gmp_int& p, const gmp_int& o) +inline void eval_subtract(gmp_int& t, const gmp_int& p, const gmp_int& o) { mpz_sub(t.data(), p.data(), o.data()); } -inline void multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) +inline void eval_multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) { mpz_mul(t.data(), p.data(), o.data()); } -inline void divide(gmp_int& t, const gmp_int& p, const gmp_int& o) +inline void eval_divide(gmp_int& t, const gmp_int& p, const gmp_int& o) { mpz_div(t.data(), p.data(), o.data()); } -inline void modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) +inline void eval_modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) { bool neg = mpz_sgn(p.data()) < 0; bool neg2 = mpz_sgn(o.data()) < 0; @@ -1262,19 +1264,19 @@ inline void modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) t.negate(); } } -inline void add(gmp_int& t, const gmp_int& p, unsigned long i) +inline void eval_add(gmp_int& t, const gmp_int& p, unsigned long i) { mpz_add_ui(t.data(), p.data(), i); } -inline void subtract(gmp_int& t, const gmp_int& p, unsigned long i) +inline void eval_subtract(gmp_int& t, const gmp_int& p, unsigned long i) { mpz_sub_ui(t.data(), p.data(), i); } -inline void multiply(gmp_int& t, const gmp_int& p, unsigned long i) +inline void eval_multiply(gmp_int& t, const gmp_int& p, unsigned long i) { mpz_mul_ui(t.data(), p.data(), i); } -inline void modulus(gmp_int& t, const gmp_int& p, unsigned long i) +inline void eval_modulus(gmp_int& t, const gmp_int& p, unsigned long i) { bool neg = mpz_sgn(p.data()) < 0; mpz_mod_ui(t.data(), p.data(), i); @@ -1285,31 +1287,31 @@ inline void modulus(gmp_int& t, const gmp_int& p, unsigned long i) t.negate(); } } -inline void divide(gmp_int& t, const gmp_int& p, unsigned long i) +inline void eval_divide(gmp_int& t, const gmp_int& p, unsigned long i) { mpz_div_ui(t.data(), p.data(), i); } -inline void add(gmp_int& t, const gmp_int& p, long i) +inline void eval_add(gmp_int& t, const gmp_int& p, long i) { if(i > 0) mpz_add_ui(t.data(), p.data(), i); else mpz_sub_ui(t.data(), p.data(), -i); } -inline void subtract(gmp_int& t, const gmp_int& p, long i) +inline void eval_subtract(gmp_int& t, const gmp_int& p, long i) { if(i > 0) mpz_sub_ui(t.data(), p.data(), i); else mpz_add_ui(t.data(), p.data(), -i); } -inline void multiply(gmp_int& t, const gmp_int& p, long i) +inline void eval_multiply(gmp_int& t, const gmp_int& p, long i) { mpz_mul_ui(t.data(), p.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); } -inline void modulus(gmp_int& t, const gmp_int& p, long i) +inline void eval_modulus(gmp_int& t, const gmp_int& p, long i) { bool neg = mpz_sgn(p.data()) < 0; bool neg2 = i < 0; @@ -1328,42 +1330,42 @@ inline void modulus(gmp_int& t, const gmp_int& p, long i) } } } -inline void divide(gmp_int& t, const gmp_int& p, long i) +inline void eval_divide(gmp_int& t, const gmp_int& p, long i) { mpz_div_ui(t.data(), p.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); } -inline void bitwise_and(gmp_int& result, const gmp_int& u, const gmp_int& v) +inline void eval_bitwise_and(gmp_int& result, const gmp_int& u, const gmp_int& v) { mpz_and(result.data(), u.data(), v.data()); } -inline void bitwise_or(gmp_int& result, const gmp_int& u, const gmp_int& v) +inline void eval_bitwise_or(gmp_int& result, const gmp_int& u, const gmp_int& v) { mpz_ior(result.data(), u.data(), v.data()); } -inline void bitwise_xor(gmp_int& result, const gmp_int& u, const gmp_int& v) +inline void eval_bitwise_xor(gmp_int& result, const gmp_int& u, const gmp_int& v) { mpz_xor(result.data(), u.data(), v.data()); } -inline void complement(gmp_int& result, const gmp_int& u) +inline void eval_complement(gmp_int& result, const gmp_int& u) { mpz_com(result.data(), u.data()); } -inline bool is_zero(const gmp_int& val) +inline bool eval_is_zero(const gmp_int& val) { return mpz_sgn(val.data()) == 0; } -inline int get_sign(const gmp_int& val) +inline int eval_get_sign(const gmp_int& val) { return mpz_sgn(val.data()); } -inline void convert_to(unsigned long* result, const gmp_int& val) +inline void eval_convert_to(unsigned long* result, const gmp_int& val) { if(0 == mpz_fits_ulong_p(val.data())) { @@ -1372,7 +1374,7 @@ inline void convert_to(unsigned long* result, const gmp_int& val) else *result = mpz_get_ui(val.data()); } -inline void convert_to(long* result, const gmp_int& val) +inline void eval_convert_to(long* result, const gmp_int& val) { if(0 == mpz_fits_slong_p(val.data())) { @@ -1382,7 +1384,7 @@ inline void convert_to(long* result, const gmp_int& val) else *result = mpz_get_si(val.data()); } -inline void convert_to(double* result, const gmp_int& val) +inline void eval_convert_to(double* result, const gmp_int& val) { *result = mpz_get_d(val.data()); } @@ -1418,7 +1420,7 @@ inline void eval_lcm(gmp_int& result, const gmp_int& a, const long b) } struct gmp_rational; -void add(gmp_rational& t, const gmp_rational& o); +void eval_add(gmp_rational& t, const gmp_rational& o); struct gmp_rational { @@ -1503,8 +1505,8 @@ struct gmp_rational using std::frexp; using std::ldexp; using std::floor; - using default_ops::add; - using default_ops::subtract; + using default_ops::eval_add; + using default_ops::eval_subtract; if (a == 0) { mpq_set_si(m_data, 0, 1); @@ -1537,7 +1539,7 @@ struct gmp_rational e -= shift; mpq_mul_2exp(m_data, m_data, shift); t = static_cast(term); - add(*this, t); + eval_add(*this, t); f -= term; } if(e > 0) @@ -1628,69 +1630,63 @@ inline mp_number denominator(const mp_number& val) return result; } -template <> -struct component_type > -{ - typedef mp_number type; -}; - -inline void add(gmp_rational& t, const gmp_rational& o) +inline void eval_add(gmp_rational& t, const gmp_rational& o) { mpq_add(t.data(), t.data(), o.data()); } -inline void subtract(gmp_rational& t, const gmp_rational& o) +inline void eval_subtract(gmp_rational& t, const gmp_rational& o) { mpq_sub(t.data(), t.data(), o.data()); } -inline void multiply(gmp_rational& t, const gmp_rational& o) +inline void eval_multiply(gmp_rational& t, const gmp_rational& o) { mpq_mul(t.data(), t.data(), o.data()); } -inline void divide(gmp_rational& t, const gmp_rational& o) +inline void eval_divide(gmp_rational& t, const gmp_rational& o) { mpq_div(t.data(), t.data(), o.data()); } -inline void add(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +inline void eval_add(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) { mpq_add(t.data(), p.data(), o.data()); } -inline void subtract(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +inline void eval_subtract(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) { mpq_sub(t.data(), p.data(), o.data()); } -inline void multiply(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +inline void eval_multiply(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) { mpq_mul(t.data(), p.data(), o.data()); } -inline void divide(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) +inline void eval_divide(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) { mpq_div(t.data(), p.data(), o.data()); } -inline bool is_zero(const gmp_rational& val) +inline bool eval_is_zero(const gmp_rational& val) { return mpq_sgn(val.data()) == 0; } -inline int get_sign(const gmp_rational& val) +inline int eval_get_sign(const gmp_rational& val) { return mpq_sgn(val.data()); } -inline void convert_to(double* result, const gmp_rational& val) +inline void eval_convert_to(double* result, const gmp_rational& val) { *result = mpq_get_d(val.data()); } -inline void convert_to(long* result, const gmp_rational& val) +inline void eval_convert_to(long* result, const gmp_rational& val) { double r; - convert_to(&r, val); + eval_convert_to(&r, val); *result = static_cast(r); } -inline void convert_to(unsigned long* result, const gmp_rational& val) +inline void eval_convert_to(unsigned long* result, const gmp_rational& val) { double r; - convert_to(&r, val); + eval_convert_to(&r, val); *result = static_cast(r); } @@ -1788,6 +1784,17 @@ inline gmp_int& gmp_int::operator=(const gmp_rational& o) return *this; } +} //namespace backends + +using boost::multiprecision::backends::gmp_int; +using boost::multiprecision::backends::gmp_rational; +using boost::multiprecision::backends::gmp_float; + +template <> +struct component_type > +{ + typedef mp_number type; +}; template<> struct number_category : public mpl::int_{}; diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index bb48f629..22e18403 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -150,8 +150,8 @@ public: typename enable_if, mp_number& >::type operator+=(const V& v) { - using default_ops::add; - add(m_backend, canonical_value(v)); + using default_ops::eval_add; + eval_add(m_backend, canonical_value(v)); return *this; } @@ -181,8 +181,8 @@ public: typename enable_if, mp_number& >::type operator-=(const V& v) { - using default_ops::subtract; - subtract(m_backend, canonical_value(v)); + using default_ops::eval_subtract; + eval_subtract(m_backend, canonical_value(v)); return *this; } @@ -214,8 +214,8 @@ public: typename enable_if, mp_number& >::type operator*=(const V& v) { - using default_ops::multiply; - multiply(m_backend, canonical_value(v)); + using default_ops::eval_multiply; + eval_multiply(m_backend, canonical_value(v)); return *this; } @@ -246,8 +246,8 @@ public: operator%=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using default_ops::modulus; - modulus(m_backend, canonical_value(v)); + using default_ops::eval_modulus; + eval_modulus(m_backend, canonical_value(v)); return *this; } @@ -261,31 +261,31 @@ public: // mp_number& operator++() { - using default_ops::increment; - increment(m_backend); + using default_ops::eval_increment; + eval_increment(m_backend); return *this; } mp_number& operator--() { - using default_ops::decrement; - decrement(m_backend); + using default_ops::eval_decrement; + eval_decrement(m_backend); return *this; } mp_number operator++(int) { - using default_ops::increment; + using default_ops::eval_increment; self_type temp(*this); - increment(m_backend); + eval_increment(m_backend); return temp; } mp_number operator--(int) { - using default_ops::decrement; + using default_ops::eval_decrement; self_type temp(*this); - decrement(m_backend); + eval_decrement(m_backend); return temp; } @@ -294,7 +294,7 @@ public: { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); - left_shift(m_backend, canonical_value(val)); + eval_left_shift(m_backend, canonical_value(val)); return *this; } @@ -303,7 +303,7 @@ public: { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); - right_shift(m_backend, canonical_value(val)); + eval_right_shift(m_backend, canonical_value(val)); return *this; } @@ -333,8 +333,8 @@ public: typename enable_if, mp_number& >::type operator/=(const V& v) { - using default_ops::divide; - divide(m_backend, canonical_value(v)); + using default_ops::eval_divide; + eval_divide(m_backend, canonical_value(v)); return *this; } @@ -368,8 +368,8 @@ public: operator&=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); - using default_ops::bitwise_and; - bitwise_and(m_backend, canonical_value(v)); + using default_ops::eval_bitwise_and; + eval_bitwise_and(m_backend, canonical_value(v)); return *this; } @@ -403,8 +403,8 @@ public: operator|=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); - using default_ops::bitwise_or; - bitwise_or(m_backend, canonical_value(v)); + using default_ops::eval_bitwise_or; + eval_bitwise_or(m_backend, canonical_value(v)); return *this; } @@ -436,8 +436,8 @@ public: operator^=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); - using default_ops::bitwise_xor; - bitwise_xor(m_backend, canonical_value(v)); + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(m_backend, canonical_value(v)); return *this; } // @@ -462,13 +462,13 @@ public: // bool is_zero()const { - using default_ops::is_zero; - return is_zero(m_backend); + using default_ops::eval_is_zero; + return eval_is_zero(m_backend); } int sign()const { - using default_ops::get_sign; - return get_sign(m_backend); + using default_ops::eval_get_sign; + return eval_get_sign(m_backend); } // // String conversion functions: @@ -480,9 +480,9 @@ public: template T convert_to()const { - using default_ops::convert_to; + using default_ops::eval_convert_to; T result; - convert_to(&result, m_backend); + eval_convert_to(&result, m_backend); return result; } // @@ -514,9 +514,9 @@ public: template typename enable_if, int>::type compare(const V& o)const { - using default_ops::get_sign; + using default_ops::eval_get_sign; if(o == 0) - return get_sign(m_backend); + return eval_get_sign(m_backend); return m_backend.compare(canonical_value(o)); } Backend& backend() @@ -554,36 +554,36 @@ private: template void do_assign(const Exp& e, const detail::add_immediates&) { - using default_ops::add; - add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_add; + eval_add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } /* template void do_assign(const Exp& e, const detail::add_and_negate_immediates&) { - using default_ops::add; - add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_add; + eval_add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); m_backend.negate(); } */ template void do_assign(const Exp& e, const detail::subtract_immediates&) { - using default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_subtract; + eval_subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template void do_assign(const Exp& e, const detail::multiply_immediates&) { - using default_ops::multiply; - multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_multiply; + eval_multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template void do_assign(const Exp& e, const detail::divide_immediates&) { - using default_ops::divide; - divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_divide; + eval_divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template @@ -768,8 +768,8 @@ private: void do_assign(const Exp& e, const detail::modulus_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using default_ops::modulus; - modulus(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_modulus; + eval_modulus(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template @@ -813,8 +813,8 @@ private: void do_assign(const Exp& e, const detail::bitwise_and_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using default_ops::bitwise_and; - bitwise_and(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_bitwise_and; + eval_bitwise_and(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template @@ -858,8 +858,8 @@ private: void do_assign(const Exp& e, const detail::bitwise_or_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using default_ops::bitwise_or; - bitwise_or(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_bitwise_or; + eval_bitwise_or(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template @@ -903,8 +903,8 @@ private: void do_assign(const Exp& e, const detail::bitwise_xor_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "Bitwise operations are only valid for integer types"); - using default_ops::bitwise_xor; - bitwise_xor(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } template void do_assign(const Exp& e, const detail::terminal&) @@ -952,51 +952,51 @@ private: void do_assign(const Exp& e, const detail::bitwise_complement&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ~ operation is only valid for integer types"); - using default_ops::complement; + using default_ops::eval_complement; self_type temp(e.left()); - complement(m_backend, temp.backend()); + eval_complement(m_backend, temp.backend()); } template void do_assign(const Exp& e, const detail::complement_immediates&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ~ operation is only valid for integer types"); - using default_ops::complement; - complement(m_backend, canonical_value(e.left().value())); + using default_ops::eval_complement; + eval_complement(m_backend, canonical_value(e.left().value())); } template void do_assign_right_shift(const Exp& e, const Val& val, const detail::terminal&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right shift operation is only valid for integer types"); - using default_ops::right_shift; - right_shift(m_backend, canonical_value(e.value()), val); + using default_ops::eval_right_shift; + eval_right_shift(m_backend, canonical_value(e.value()), val); } template void do_assign_left_shift(const Exp& e, const Val& val, const detail::terminal&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left shift operation is only valid for integer types"); - using default_ops::left_shift; - left_shift(m_backend, canonical_value(e.value()), val); + using default_ops::eval_left_shift; + eval_left_shift(m_backend, canonical_value(e.value()), val); } template void do_assign_right_shift(const Exp& e, const Val& val, const Tag&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right shift operation is only valid for integer types"); - using default_ops::right_shift; + using default_ops::eval_right_shift; self_type temp(e); - right_shift(m_backend, temp.backend(), val); + eval_right_shift(m_backend, temp.backend(), val); } template void do_assign_left_shift(const Exp& e, const Val& val, const Tag&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left shift operation is only valid for integer types"); - using default_ops::left_shift; + using default_ops::eval_left_shift; self_type temp(e); - left_shift(m_backend, temp.backend(), val); + eval_left_shift(m_backend, temp.backend(), val); } template @@ -1059,8 +1059,8 @@ private: template void do_add(const Exp& e, const detail::terminal&) { - using default_ops::add; - add(m_backend, canonical_value(e.value())); + using default_ops::eval_add; + eval_add(m_backend, canonical_value(e.value())); } template @@ -1098,23 +1098,23 @@ private: template void do_add(const Exp& e, const detail::add_immediates&) { - using default_ops::add; - add(m_backend, canonical_value(e.left().value())); - add(m_backend, canonical_value(e.right().value())); + using default_ops::eval_add; + eval_add(m_backend, canonical_value(e.left().value())); + eval_add(m_backend, canonical_value(e.right().value())); } template void do_add(const Exp& e, const detail::subtract_immediates&) { - using default_ops::add; - using default_ops::subtract; - add(m_backend, canonical_value(e.left().value())); - subtract(m_backend, canonical_value(e.right().value())); + using default_ops::eval_add; + using default_ops::eval_subtract; + eval_add(m_backend, canonical_value(e.left().value())); + eval_subtract(m_backend, canonical_value(e.right().value())); } template void do_subtract(const Exp& e, const detail::terminal&) { - using default_ops::subtract; - subtract(m_backend, canonical_value(e.value())); + using default_ops::eval_subtract; + eval_subtract(m_backend, canonical_value(e.value())); } template @@ -1144,17 +1144,17 @@ private: template void do_subtract(const Exp& e, const detail::add_immediates&) { - using default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value())); - subtract(m_backend, canonical_value(e.right().value())); + using default_ops::eval_subtract; + eval_subtract(m_backend, canonical_value(e.left().value())); + eval_subtract(m_backend, canonical_value(e.right().value())); } template void do_subtract(const Exp& e, const detail::subtract_immediates&) { - using default_ops::add; - using default_ops::subtract; - subtract(m_backend, canonical_value(e.left().value())); - add(m_backend, canonical_value(e.right().value())); + using default_ops::eval_add; + using default_ops::eval_subtract; + eval_subtract(m_backend, canonical_value(e.left().value())); + eval_add(m_backend, canonical_value(e.right().value())); } template void do_subtract(const Exp& e, const unknown&) @@ -1166,8 +1166,8 @@ private: template void do_multiplies(const Exp& e, const detail::terminal&) { - using default_ops::multiply; - multiply(m_backend, canonical_value(e.value())); + using default_ops::eval_multiply; + eval_multiply(m_backend, canonical_value(e.value())); } template @@ -1199,31 +1199,31 @@ private: template void do_multiplies(const Exp& e, const detail::multiply_immediates&) { - using default_ops::multiply; - multiply(m_backend, canonical_value(e.left().value())); - multiply(m_backend, canonical_value(e.right().value())); + using default_ops::eval_multiply; + eval_multiply(m_backend, canonical_value(e.left().value())); + eval_multiply(m_backend, canonical_value(e.right().value())); } template void do_multiplies(const Exp& e, const detail::divide_immediates&) { - using default_ops::multiply; - using default_ops::divide; - multiply(m_backend, canonical_value(e.left().value())); - divide(m_backend, canonical_value(e.right().value())); + using default_ops::eval_multiply; + using default_ops::eval_divide; + eval_multiply(m_backend, canonical_value(e.left().value())); + eval_divide(m_backend, canonical_value(e.right().value())); } template void do_multiplies(const Exp& e, const unknown&) { - using default_ops::multiply; + using default_ops::eval_multiply; self_type temp(e); - multiply(m_backend, temp.m_backend); + eval_multiply(m_backend, temp.m_backend); } template void do_divide(const Exp& e, const detail::terminal&) { - using default_ops::divide; - divide(m_backend, canonical_value(e.value())); + using default_ops::eval_divide; + eval_divide(m_backend, canonical_value(e.value())); } template @@ -1255,50 +1255,50 @@ private: template void do_divides(const Exp& e, const detail::multiply_immediates&) { - using default_ops::divide; - divide(m_backend, canonical_value(e.left().value())); - divide(m_backend, canonical_value(e.right().value())); + using default_ops::eval_divide; + eval_divide(m_backend, canonical_value(e.left().value())); + eval_divide(m_backend, canonical_value(e.right().value())); } template void do_divides(const Exp& e, const detail::divide_immediates&) { - using default_ops::multiply; - using default_ops::divide; - divide(m_backend, canonical_value(e.left().value())); + using default_ops::eval_multiply; + using default_ops::eval_divide; + eval_divide(m_backend, canonical_value(e.left().value())); mutiply(m_backend, canonical_value(e.right().value())); } template void do_divide(const Exp& e, const unknown&) { - using default_ops::multiply; + using default_ops::eval_multiply; self_type temp(e); - divide(m_backend, temp.m_backend); + eval_divide(m_backend, temp.m_backend); } template void do_modulus(const Exp& e, const detail::terminal&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using default_ops::modulus; - modulus(m_backend, canonical_value(e.value())); + using default_ops::eval_modulus; + eval_modulus(m_backend, canonical_value(e.value())); } template void do_modulus(const Exp& e, const Unknown&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - using default_ops::modulus; + using default_ops::eval_modulus; self_type temp(e); - modulus(m_backend, canonical_value(temp)); + eval_modulus(m_backend, canonical_value(temp)); } template void do_bitwise_and(const Exp& e, const detail::terminal&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); - using default_ops::bitwise_and; - bitwise_and(m_backend, canonical_value(e.value())); + using default_ops::eval_bitwise_and; + eval_bitwise_and(m_backend, canonical_value(e.value())); } template void do_bitwise_and(const Exp& e, const detail::bitwise_and&) @@ -1313,17 +1313,17 @@ private: void do_bitwise_and(const Exp& e, const unknown&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); - using default_ops::bitwise_and; + using default_ops::eval_bitwise_and; self_type temp(e); - bitwise_and(m_backend, temp.m_backend); + eval_bitwise_and(m_backend, temp.m_backend); } template void do_bitwise_or(const Exp& e, const detail::terminal&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); - using default_ops::bitwise_or; - bitwise_or(m_backend, canonical_value(e.value())); + using default_ops::eval_bitwise_or; + eval_bitwise_or(m_backend, canonical_value(e.value())); } template void do_bitwise_or(const Exp& e, const detail::bitwise_or&) @@ -1338,17 +1338,17 @@ private: void do_bitwise_or(const Exp& e, const unknown&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); - using default_ops::bitwise_or; + using default_ops::eval_bitwise_or; self_type temp(e); - bitwise_or(m_backend, temp.m_backend); + eval_bitwise_or(m_backend, temp.m_backend); } template void do_bitwise_xor(const Exp& e, const detail::terminal&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); - using default_ops::bitwise_xor; - bitwise_xor(m_backend, canonical_value(e.value())); + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(m_backend, canonical_value(e.value())); } template void do_bitwise_xor(const Exp& e, const detail::bitwise_xor&) @@ -1363,9 +1363,9 @@ private: void do_bitwise_xor(const Exp& e, const unknown&) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); - using default_ops::bitwise_xor; + using default_ops::eval_bitwise_xor; self_type temp(e); - bitwise_xor(m_backend, temp.m_backend); + eval_bitwise_xor(m_backend, temp.m_backend); } // Tests if the expression contains a reference to *this: diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index fc7e7f05..9f5e3ce1 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -16,7 +16,9 @@ #include #include -namespace boost{ namespace multiprecision{ +namespace boost{ +namespace multiprecision{ +namespace backends{ template struct mpfr_float_backend; @@ -560,47 +562,47 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> }; template -inline void add(mpfr_float_backend& result, const mpfr_float_backend& o) +inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void subtract(mpfr_float_backend& result, const mpfr_float_backend& o) +inline void eval_subtract(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void multiply(mpfr_float_backend& result, const mpfr_float_backend& o) +inline void eval_multiply(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void divide(mpfr_float_backend& result, const mpfr_float_backend& o) +inline void eval_divide(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void add(mpfr_float_backend& result, unsigned long i) +inline void eval_add(mpfr_float_backend& result, unsigned long i) { mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void subtract(mpfr_float_backend& result, unsigned long i) +inline void eval_subtract(mpfr_float_backend& result, unsigned long i) { mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void multiply(mpfr_float_backend& result, unsigned long i) +inline void eval_multiply(mpfr_float_backend& result, unsigned long i) { mpfr_mul_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void divide(mpfr_float_backend& result, unsigned long i) +inline void eval_divide(mpfr_float_backend& result, unsigned long i) { mpfr_div_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void add(mpfr_float_backend& result, long i) +inline void eval_add(mpfr_float_backend& result, long i) { if(i > 0) mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); @@ -608,7 +610,7 @@ inline void add(mpfr_float_backend& result, long i) mpfr_sub_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template -inline void subtract(mpfr_float_backend& result, long i) +inline void eval_subtract(mpfr_float_backend& result, long i) { if(i > 0) mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); @@ -616,14 +618,14 @@ inline void subtract(mpfr_float_backend& result, long i) mpfr_add_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template -inline void multiply(mpfr_float_backend& result, long i) +inline void eval_multiply(mpfr_float_backend& result, long i) { mpfr_mul_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) mpfr_neg(result.data(), result.data(), GMP_RNDN); } template -inline void divide(mpfr_float_backend& result, long i) +inline void eval_divide(mpfr_float_backend& result, long i) { mpfr_div_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) @@ -633,17 +635,17 @@ inline void divide(mpfr_float_backend& result, long i) // Specialised 3 arg versions of the basic operators: // template -inline void add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); @@ -651,12 +653,12 @@ inline void add(mpfr_float_backend& a, const mpfr_float_backend -inline void add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +inline void eval_add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -667,17 +669,17 @@ inline void add(mpfr_float_backend& a, long x, const mpfr_float_backen mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); @@ -685,12 +687,12 @@ inline void subtract(mpfr_float_backend& a, const mpfr_float_backend -inline void subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +inline void eval_subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } template -inline void subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -702,17 +704,17 @@ inline void subtract(mpfr_float_backend& a, long x, const mpfr_float_b } template -inline void multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) { @@ -723,12 +725,12 @@ inline void multiply(mpfr_float_backend& a, const mpfr_float_backend -inline void multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +inline void eval_multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -740,17 +742,17 @@ inline void multiply(mpfr_float_backend& a, long x, const mpfr_float_b } template -inline void divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void divide(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void divide(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) { @@ -761,12 +763,12 @@ inline void divide(mpfr_float_backend& a, const mpfr_float_backend -inline void divide(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +inline void eval_divide(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); } template -inline void divide(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +inline void eval_divide(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -778,45 +780,45 @@ inline void divide(mpfr_float_backend& a, long x, const mpfr_float_bac } template -inline bool is_zero(const mpfr_float_backend& val) +inline bool eval_is_zero(const mpfr_float_backend& val) { return 0 != mpfr_zero_p(val.data()); } template -inline int get_sign(const mpfr_float_backend& val) +inline int eval_get_sign(const mpfr_float_backend& val) { return mpfr_sgn(val.data()); } template -inline void convert_to(unsigned long* result, const mpfr_float_backend& val) +inline void eval_convert_to(unsigned long* result, const mpfr_float_backend& val) { *result = mpfr_get_ui(val.data(), GMP_RNDN); } template -inline void convert_to(long* result, const mpfr_float_backend& val) +inline void eval_convert_to(long* result, const mpfr_float_backend& val) { *result = mpfr_get_si(val.data(), GMP_RNDN); } #ifdef _MPFR_H_HAVE_INTMAX_T template -inline void convert_to(unsigned long long* result, const mpfr_float_backend& val) +inline void eval_convert_to(unsigned long long* result, const mpfr_float_backend& val) { *result = mpfr_get_uj(val.data(), GMP_RNDN); } template -inline void convert_to(long long* result, const mpfr_float_backend& val) +inline void eval_convert_to(long long* result, const mpfr_float_backend& val) { *result = mpfr_get_sj(val.data(), GMP_RNDN); } #endif template -inline void convert_to(double* result, const mpfr_float_backend& val) +inline void eval_convert_to(double* result, const mpfr_float_backend& val) { *result = mpfr_get_d(val.data(), GMP_RNDN); } template -inline void convert_to(long double* result, const mpfr_float_backend& val) +inline void eval_convert_to(long double* result, const mpfr_float_backend& val) { *result = mpfr_get_ld(val.data(), GMP_RNDN); } @@ -988,13 +990,17 @@ inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_bac mpfr_tanh(result.data(), arg.data(), GMP_RNDN); } +} // namespace backends + +using boost::multiprecision::backends::mpfr_float_backend; + typedef mp_number > mpfr_float_50; typedef mp_number > mpfr_float_100; typedef mp_number > mpfr_float_500; typedef mp_number > mpfr_float_1000; typedef mp_number > mpfr_float; -} // namespace boost +} // namespace multiprecision namespace math{ @@ -1003,7 +1009,7 @@ namespace tools{ template <> inline int digits() { - return boost::multiprecision::detail::get_default_precision(); + return boost::multiprecision::backends::detail::get_default_precision(); } } diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index cc0e786b..2436147f 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -16,6 +16,7 @@ namespace boost{ namespace multiprecision{ +namespace backends{ template struct rational_adapter @@ -123,42 +124,42 @@ private: }; template -inline void add(rational_adapter& result, const rational_adapter& o) +inline void eval_add(rational_adapter& result, const rational_adapter& o) { result.data() += o.data(); } template -inline void subtract(rational_adapter& result, const rational_adapter& o) +inline void eval_subtract(rational_adapter& result, const rational_adapter& o) { result.data() -= o.data(); } template -inline void multiply(rational_adapter& result, const rational_adapter& o) +inline void eval_multiply(rational_adapter& result, const rational_adapter& o) { result.data() *= o.data(); } template -inline void divide(rational_adapter& result, const rational_adapter& o) +inline void eval_divide(rational_adapter& result, const rational_adapter& o) { result.data() /= o.data(); } template -inline void convert_to(R* result, const rational_adapter& backend) +inline void eval_convert_to(R* result, const rational_adapter& backend) { *result = backend.data().numerator().template convert_to(); *result /= backend.data().denominator().template convert_to(); } template -inline bool is_zero(const rational_adapter& val) +inline bool eval_is_zero(const rational_adapter& val) { - return is_zero(val.data().numerator().backend()); + return eval_is_zero(val.data().numerator().backend()); } template -inline int get_sign(const rational_adapter& val) +inline int eval_get_sign(const rational_adapter& val) { - return get_sign(val.data().numerator().backend()); + return eval_get_sign(val.data().numerator().backend()); } template @@ -181,6 +182,10 @@ inline void assign_components(rational_adapter& result, const V& v1, template struct number_category > : public mpl::int_{}; +} // namespace backends + +using boost::multiprecision::backends::rational_adapter; + template struct component_type > { diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 683d5e5b..a30a3868 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -17,7 +17,7 @@ #include #include -namespace boost{ namespace multiprecision{ +namespace boost{ namespace multiprecision{ namespace backends{ namespace detail{ @@ -241,31 +241,31 @@ protected: if(SIGN(&x.data()))\ BOOST_THROW_EXCEPTION(std::runtime_error("Bitwise operations on libtommath negative valued integers are disabled as they produce unpredictable results")) -int get_sign(const tommath_int& val); +int eval_get_sign(const tommath_int& val); -inline void add(tommath_int& t, const tommath_int& o) +inline void eval_add(tommath_int& t, const tommath_int& o) { detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); } -inline void subtract(tommath_int& t, const tommath_int& o) +inline void eval_subtract(tommath_int& t, const tommath_int& o) { detail::check_tommath_result(mp_sub(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); } -inline void multiply(tommath_int& t, const tommath_int& o) +inline void eval_multiply(tommath_int& t, const tommath_int& o) { detail::check_tommath_result(mp_mul(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); } -inline void divide(tommath_int& t, const tommath_int& o) +inline void eval_divide(tommath_int& t, const tommath_int& o) { tommath_int temp; detail::check_tommath_result(mp_div(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data(), &temp.data())); } -inline void modulus(tommath_int& t, const tommath_int& o) +inline void eval_modulus(tommath_int& t, const tommath_int& o) { - bool neg = get_sign(t) < 0; - bool neg2 = get_sign(o) < 0; + bool neg = eval_get_sign(t) < 0; + bool neg2 = eval_get_sign(o) < 0; detail::check_tommath_result(mp_mod(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); - if((neg != neg2) && (get_sign(t) != 0)) + if((neg != neg2) && (eval_get_sign(t) != 0)) { t.negate(); detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); @@ -277,72 +277,72 @@ inline void modulus(tommath_int& t, const tommath_int& o) } } template -inline void left_shift(tommath_int& t, UI i) +inline void eval_left_shift(tommath_int& t, UI i) { detail::check_tommath_result(mp_mul_2d(&t.data(), static_cast(i), &t.data())); } template -inline void right_shift(tommath_int& t, UI i) +inline void eval_right_shift(tommath_int& t, UI i) { tommath_int d; detail::check_tommath_result(mp_div_2d(&t.data(), static_cast(i), &t.data(), &d.data())); } template -inline void left_shift(tommath_int& t, const tommath_int& v, UI i) +inline void eval_left_shift(tommath_int& t, const tommath_int& v, UI i) { detail::check_tommath_result(mp_mul_2d(const_cast< ::mp_int*>(&v.data()), static_cast(i), &t.data())); } template -inline void right_shift(tommath_int& t, const tommath_int& v, UI i) +inline void eval_right_shift(tommath_int& t, const tommath_int& v, UI i) { tommath_int d; detail::check_tommath_result(mp_div_2d(const_cast< ::mp_int*>(&v.data()), static_cast(i), &t.data(), &d.data())); } -inline void bitwise_and(tommath_int& result, const tommath_int& v) +inline void eval_bitwise_and(tommath_int& result, const tommath_int& v) { BOOST_MP_TOMMATH_BIT_OP_CHECK(result); BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_and(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } -inline void bitwise_or(tommath_int& result, const tommath_int& v) +inline void eval_bitwise_or(tommath_int& result, const tommath_int& v) { BOOST_MP_TOMMATH_BIT_OP_CHECK(result); BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_or(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } -inline void bitwise_xor(tommath_int& result, const tommath_int& v) +inline void eval_bitwise_xor(tommath_int& result, const tommath_int& v) { BOOST_MP_TOMMATH_BIT_OP_CHECK(result); BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_xor(&result.data(), const_cast< ::mp_int*>(&v.data()), &result.data())); } -inline void add(tommath_int& t, const tommath_int& p, const tommath_int& o) +inline void eval_add(tommath_int& t, const tommath_int& p, const tommath_int& o) { detail::check_tommath_result(mp_add(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); } -inline void subtract(tommath_int& t, const tommath_int& p, const tommath_int& o) +inline void eval_subtract(tommath_int& t, const tommath_int& p, const tommath_int& o) { detail::check_tommath_result(mp_sub(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); } -inline void multiply(tommath_int& t, const tommath_int& p, const tommath_int& o) +inline void eval_multiply(tommath_int& t, const tommath_int& p, const tommath_int& o) { detail::check_tommath_result(mp_mul(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); } -inline void divide(tommath_int& t, const tommath_int& p, const tommath_int& o) +inline void eval_divide(tommath_int& t, const tommath_int& p, const tommath_int& o) { tommath_int d; detail::check_tommath_result(mp_div(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data(), &d.data())); } -inline void modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) +inline void eval_modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) { - bool neg = get_sign(p) < 0; - bool neg2 = get_sign(o) < 0; + bool neg = eval_get_sign(p) < 0; + bool neg2 = eval_get_sign(o) < 0; detail::check_tommath_result(mp_mod(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); - if((neg != neg2) && (get_sign(t) != 0)) + if((neg != neg2) && (eval_get_sign(t) != 0)) { t.negate(); detail::check_tommath_result(mp_add(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); @@ -354,28 +354,28 @@ inline void modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) } } -inline void bitwise_and(tommath_int& result, const tommath_int& u, const tommath_int& v) +inline void eval_bitwise_and(tommath_int& result, const tommath_int& u, const tommath_int& v) { BOOST_MP_TOMMATH_BIT_OP_CHECK(u); BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_and(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } -inline void bitwise_or(tommath_int& result, const tommath_int& u, const tommath_int& v) +inline void eval_bitwise_or(tommath_int& result, const tommath_int& u, const tommath_int& v) { BOOST_MP_TOMMATH_BIT_OP_CHECK(u); BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_or(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } -inline void bitwise_xor(tommath_int& result, const tommath_int& u, const tommath_int& v) +inline void eval_bitwise_xor(tommath_int& result, const tommath_int& u, const tommath_int& v) { BOOST_MP_TOMMATH_BIT_OP_CHECK(u); BOOST_MP_TOMMATH_BIT_OP_CHECK(v); detail::check_tommath_result(mp_xor(const_cast< ::mp_int*>(&u.data()), const_cast< ::mp_int*>(&v.data()), &result.data())); } /* -inline void complement(tommath_int& result, const tommath_int& u) +inline void eval_complement(tommath_int& result, const tommath_int& u) { // // Although this code works, it doesn't really do what the user might expect.... @@ -400,32 +400,32 @@ inline void complement(tommath_int& result, const tommath_int& u) // Create a mask providing the extra bits we need and add to result: tommath_int mask; mask = static_cast((1u << padding) - 1); - left_shift(mask, shift); + eval_left_shift(mask, shift); add(result, mask); } */ -inline bool is_zero(const tommath_int& val) +inline bool eval_is_zero(const tommath_int& val) { return mp_iszero(&val.data()); } -inline int get_sign(const tommath_int& val) +inline int eval_get_sign(const tommath_int& val) { return mp_iszero(&val.data()) ? 0 : SIGN(&val.data()) ? -1 : 1; } template -inline void convert_to(A* result, const tommath_int& val) +inline void eval_convert_to(A* result, const tommath_int& val) { *result = boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0))); } -inline void convert_to(char* result, const tommath_int& val) +inline void eval_convert_to(char* result, const tommath_int& val) { *result = static_cast(boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0)))); } -inline void convert_to(unsigned char* result, const tommath_int& val) +inline void eval_convert_to(unsigned char* result, const tommath_int& val) { *result = static_cast(boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0)))); } -inline void convert_to(signed char* result, const tommath_int& val) +inline void eval_convert_to(signed char* result, const tommath_int& val) { *result = static_cast(boost::lexical_cast(val.str(0, std::ios_base::fmtflags(0)))); } @@ -442,6 +442,9 @@ inline void eval_lcm(tommath_int& result, const tommath_int& a, const tommath_in detail::check_tommath_result(mp_lcm(const_cast< ::mp_int*>(&a.data()), const_cast< ::mp_int*>(&b.data()), const_cast< ::mp_int*>(&result.data()))); } +} // namespace backends + +using boost::multiprecision::backends::tommath_int; template<> struct number_category : public mpl::int_{}; diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 5d5d47ea..b7e53e1d 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1049,6 +1049,7 @@ int main() test(); test > >(); test > >(); + test(); #endif #ifdef TEST_CPP_INT_BR test(); From 7bed8d02f9170590d2e903cd011d7e8268f0eedd Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 13 Mar 2012 18:30:18 +0000 Subject: [PATCH 130/256] Add support for disabling expression templates via a second template parameter to mp_number. Begin to update docs to reflect new cpp_int code. [SVN r77323] --- doc/multiprecision.qbk | 193 ++++++-- .../multiprecision/arithmetic_backend.hpp | 6 +- .../concepts/mp_number_architypes.hpp | 6 +- .../boost/multiprecision/cpp_dec_float.hpp | 26 +- include/boost/multiprecision/cpp_int.hpp | 26 +- .../multiprecision/detail/big_lanczos.hpp | 6 +- .../multiprecision/detail/default_ops.hpp | 201 +++++--- .../multiprecision/detail/mp_number_base.hpp | 468 +++++++++--------- include/boost/multiprecision/fixed_int.hpp | 12 +- include/boost/multiprecision/gmp.hpp | 28 +- include/boost/multiprecision/mp_number.hpp | 128 ++--- include/boost/multiprecision/mpfr.hpp | 21 +- .../boost/multiprecision/rational_adapter.hpp | 6 +- include/boost/multiprecision/tommath.hpp | 6 +- test/Jamfile.v2 | 49 +- test/mp_number_concept_check.cpp | 8 +- test/test_arithmetic.cpp | 2 + test/test_int_io.cpp | 11 +- 18 files changed, 677 insertions(+), 526 deletions(-) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 677a5336..d7c313d7 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -60,6 +60,17 @@ so instead we compose our own: my_float a, b, c; // These variables have 300 decimal digits precision +We can repeat the above example, but with the expression templates disabled (for faster compile times, but slower runtimes) +by passing a second template argument to `mp_number`: + + #include // Defines the Backend type that wraps MPFR + + namespace mp = boost::multiprecision; // Reduce the typing a bit later... + + typedef mp::mp_number, false> my_float; + + my_float a, b, c; // These variables have 300 decimal digits precision + [h4 Expression Templates] Class `mp_number` is expression-template-enabled: that means that rather than having a multiplication @@ -176,6 +187,9 @@ magic by converting out-of-place operators to in-place ones, we necessarily take transformation is more efficient than creating the extra temporary variable, just not by as much as one would hope. +Finally, note that `mp_number` takes a second template argument, which, when set to `false` disables all +the expression template machinary. The result is much faster to compile, but slower at runtime. + We'll conclude this section by providing some more performance comparisons between these three libraries, again, all are using [mpfr] to carry out the underlying arithmetic, and all are operating at the same precision (50 decimal digits): @@ -209,7 +223,8 @@ The following backends provide integer arithmetic: [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] [[`mp_int`][boost/multiprecision/tommath.hpp][2][libtommath][Public domain backend with no licence restrictions.][Slower than [gmp].]] -[[`fixed_int`][boost/multiprecision/fixed_int.hpp][2][None][Boost licenced fixed precision modular arithmetic integer.][Slower than [gmp].]] +[[`cpp_int`][boost/multiprecision/cpp_int.hpp][2][None] + [Very versatile, Boost licenced, all C++ integer type which support both arbitrary precision and fixed precision integer types.][Slower than [gmp].]] ] [h4 gmp_int] @@ -277,46 +292,76 @@ as a result performing formatted output on this type when the argument is negati [tommath_eg] -[h4 fixed_int] +[h4 cpp_int] namespace boost{ namespace multiprecision{ - template - class fixed_int; + typedef unspecified-type limb_type; - typedef mp_number > mp_uint128_t; - typedef mp_number > mp_uint256_t; - typedef mp_number > mp_uint512_t; + template > + class cpp_int_backend; - typedef mp_number > mp_int128_t; - typedef mp_number > mp_int256_t; - typedef mp_number > mp_int512_t; + typedef mp_number > cpp_int; // arbitrary precision integer + typedef rational_adapter > cpp_rational_backend; + typedef mp_number cpp_rational; // arbitrary precision rational number + + // Fixed precision unsigned types: + typedef mp_number > mp_uint128_t; + typedef mp_number > mp_uint256_t; + typedef mp_number > mp_uint512_t; + + // Fixed precision signed types: + typedef mp_number > mp_int128_t; + typedef mp_number > mp_int256_t; + typedef mp_number > mp_int512_t; }} // namespaces -The `fixed_int` backend is used via one of the typedefs `boost::multiprecision::mp_uint128_t`, `boost::multiprecision::mp_uint256_t`, +The `cpp_int_backend` type is used via one of the typedefs `boost::multiprecision::cpp_int`, +`boost::multiprecision::mp_uint128_t`, `boost::multiprecision::mp_uint256_t`, `boost::multiprecision::mp_uint512_t`, `boost::multiprecision::mp_int128_t`, `boost::multiprecision::mp_int256_t` -or `boost::multiprecision::mp_int512_t`. It provides both signed and unsigned integer types with a fixed precision -and modular arithmetic with a 2's complement representation for negative values. In other words it's designed to work just -like a typical built in integer type, but with larger precision. +or `boost::multiprecision::mp_int512_t`. + +This backend is the "Swiss Army Knife" of integer types as it can represent both fixed and arbitrary precision +integer types, and both signed and unsigned types. There are three template arguments: + +[variablelist +[[MinBits][Determines the number of Bits to store directly within the object before resorting to dynamic memory + allocation. When zero, this field is determined automatically based on how many bits can be stored + in union with the dynamic storage header: setting a larger value may improve performance as larger integer + values will be stored internally before memory allocation is required. + When the Allocator parameter is type `void`, then this field + determines the total number of bits in the resulting fixed precision type.]] +[[Signed][Determines whether the resulting type is signed or not. Note that for arbitrary precision types + (where the Allocator parameter is non-void), then this parameter must be `true`. For fixed precision + types then this type may be either `true` (type is signed), or `false` (type is unsigned).]] +[[Allocator][The allocator to use for dymamic memory allocation, or type `void` if this is to be a fixed precision type.]] +] Things you should know when using this type: -* Default constructed `fixed_int`'s have indeterminate value - just like normal built in integers. +* Default constructed `cpp_int_backend`'s have the value zero. * Division by zero results in a `std::runtime_error` being thrown. * Construction from a string that contains invalid non-numeric characters results in a `std::runtime_error` being thrown. -* Since the precision of `fixed_int` is necessarily limited, care should be taken to avoid numeric overflow when using this type +* Since the precision of `cpp_int_backend` is necessarily limited when the allocator parameter is void, +care should be taken to avoid numeric overflow when using this type unless you actually want modulo-arithmetic behavior. +* The type uses a sign-magnitude representation internally, so type `mp_int128_t` has 128-bits of precision plus an extra sign bit. +In this respect the behaviour of these types differs from built-in 2's complement types. In might be tempting to use a +127-bit type instead, and indeed this does work, but behaviour is still slightly different from a 2's complement built-in type +as the min and max values are identical (apart from the sign), where as they differ by one for a true 2's complement type. +That said it should be noted that there's no requirement for built-in types to be 2's complement either - it's simply that this +is the most common format by far. [h5 Example:] -[fixed_int_eg] +[cpp_int_eg] [endsect] -[section:reals Real Numbers] +[section:reals Floating Point Numbers] -The following backends provide real number arithmetic: +The following backends provide floating point arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] @@ -471,7 +516,8 @@ The following backends provide rational number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] -[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][libtommath][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] +[[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licenced implementation.][[Slower than [gmp].]] +[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][libtommath][All C/C++ implementation that's Boost Software Licence compatible.] [[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger backend type to be used as a rational type.][Requires an underlying integer backend type.]] [[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] @@ -516,6 +562,38 @@ Things you should know when using this type: [mpq_eg] +[h4 cpp_rational] + + namespace boost{ namespace multiprecision{ + + typedef rational_adapter > cpp_rational_backend; + + typedef mp_number cpp_rational; + + }} // namespaces + +The `cpp_rational_backend` type is used via the typedef `boost::multiprecision::cpp_rational`. It provides +a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. + +As well as the usual conversions from arithmetic and string types, instances of `cpp_rational` are copy constructible +and assignable from type `cpp_int`. + +There are also non-member functions: + + cpp_int numerator(const cpp_rational&); + cpp_int denominator(const cpp_rational&); + +which return the numerator and denominator of the number. + +Things you should know when using this type: + +* Default constructed `cpp_rational`'s have the value zero. +* Division by zero results in a `std::rumtime_error` being thrown. + +[h5 Example:] + +[cpp_rational_eg] + [h4 tommath_rational] namespace boost{ namespace multiprecision{ @@ -592,7 +670,7 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would namespace boost{ namespace multiprecision{ - template + template class mp_number { mp_number(); @@ -621,13 +699,13 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would // swap: void swap(mp_number& other); // Sign: - bool eval_is_zero()const; + bool is_zero()const; int sign()const; // string conversion: std::string str()const; // Generic conversion mechanism template - T eval_convert_to()const; + T convert_to()const; // precision control: static unsigned default_precision(); static void default_precision(unsigned digits10); @@ -663,15 +741,15 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would bool operator>=(const ``['see-below]``&, const ``['see-below]``&); // Swap: - template - void swap(mp_number& a, mp_number& b); + template + void swap(mp_number& a, mp_number& b); // iostream support: - template - std::ostream& operator << (std::ostream& os, const mp_number& r); + template + std::ostream& operator << (std::ostream& os, const mp_number& r); std::ostream& operator << (std::ostream& os, const ``['unmentionable-expression-template-type]``& r); - template - std::istream& operator >> (std::istream& is, mp_number& r); + template + std::istream& operator >> (std::istream& is, mp_number& r); // Non-member function standard library support: ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); @@ -732,8 +810,8 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would // numeric_limits support: namespace std{ - template - struct numeric_limits > + template + struct numeric_limits > { /* Usual members here */ }; @@ -742,6 +820,16 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would [h4 Description] + template + class mp_number; + +Class `mp_number` has two template arguments: + +[variablelist +[[Backend][The actual arithmetic backend that does all the work.]] +[[ExpressionTemplates][A boolean value: when true, then expression templates are enabled, otherwise they are disabled.]] +] + mp_number(); mp_number(see-below); mp_number& operator=(see-below); @@ -781,7 +869,7 @@ These operators all take their usual arithmetic meanings. The arguments to these operators is either: -* Another `mp_number`. +* Another `mp_number`. * A builtin arithmetic type. * An expression template derived from `mp_number`. @@ -801,7 +889,7 @@ This operator also enables the use of `mp_number` with any of the following oper Swaps `*this` with `other`. - bool eval_is_zero()const; + bool is_zero()const; Returns `true` is `*this` is zero, otherwise `false`. @@ -816,7 +904,7 @@ Returns the number formatted as a string, with at least /precision/ digits, and if /scientific/ is true. template - T eval_convert_to()const; + T convert_to()const; Provides a generic conversion mechanism to convert `*this` to type `T`. Type `T` may be any arithmetic type. Optionally other types may also be supported by specific `Backend` types. @@ -830,7 +918,7 @@ Optionally other types may also be supported by specific `Backend` types. These functions are only available if the Backend template parameter supports runtime changes to precision. They get and set the default precision and the precision of `*this` respectively. - int compare(const mp_number& o)const; + int compare(const mp_number& o)const; template typename enable_if, int>::type compare(const V& other)const; @@ -876,28 +964,30 @@ The arguments to these functions must contain at least one of the following: In addition, one of the two arguments may be a builtin arithmetic type. -With the exception of the comparison operators (which always evaluate their arguments and return a `bool` result), -these operators return an "unmentionable" expression template type which defers evaluation of the operator -until the result is actually required. +The return type of these operators is either: + +* An ['unmentionable-type] expression template type when `ExpressionTemplates` is `true`. +* Type `mp_number` when `ExpressionTemplates` is `false`. +* Type `bool` if the operator is a comparison operator. Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative arguments result in a `std::runtime_error` being thrown). [h4 swap] - template - void swap(mp_number& a, mp_number& b); + template + void swap(mp_number& a, mp_number& b); Swaps `a` and `b`. [h4 Iostream Support] - template - std::ostream& operator << (std::ostream& os, const mp_number& r); - template + template + std::ostream& operator << (std::ostream& os, const mp_number& r); + template std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r); - template - inline std::istream& operator >> (std::istream& is, mp_number& r) + template + inline std::istream& operator >> (std::istream& is, mp_number& r) These operators provided formatted input-output operations on `mp_number` types, and expression templates derived from them. @@ -939,7 +1029,8 @@ this library support all of the iostream formatting flags, field width and preci ``['unmentionable-expression-template-type]`` atan2 (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); These functions all behave exactly as their standard library counterparts do: their argument is either an instance of `mp_number` or -an expression template derived from it; their return value is always an expression template. +an expression template derived from it; If the argument is of type `mp_number,Backend, false>` then that is also the return type, +otherwise the return type is an expression template. These functions are normally implemented by the Backend type. However, default versions are provided for Backend types that don't have native support for these functions. Please note however, that this default support requires the precision of the type @@ -990,8 +1081,8 @@ specialized or overloaded to ensure interoperability. namespace std{ - template - struct numeric_limits > + template + struct numeric_limits > { /* Usual members here */ }; @@ -1159,6 +1250,10 @@ of type B2. [[`eval_atan2(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::atan` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] ] +[note +The non-member functions are all named with an "eval_" prefix to avoid conflicts with template classes of the same name - +in point of fact this naming convension shouldn't be necessary, but rather works around some compiler bugs.] + [endsect] [endsect] @@ -1417,4 +1512,4 @@ More a list of what ['could] be done, rather than what ['should] be done (which [endsect] -[endsect] \ No newline at end of file +[endsect] diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/arithmetic_backend.hpp index 5d9111b2..af26b1ca 100644 --- a/include/boost/multiprecision/arithmetic_backend.hpp +++ b/include/boost/multiprecision/arithmetic_backend.hpp @@ -127,11 +127,11 @@ using boost::multiprecision::backends::arithmetic_backend; namespace std{ -template -class numeric_limits > > : public std::numeric_limits +template +class numeric_limits, ExpressionTemplates > > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index 72e97842..ea29ecde 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -192,11 +192,11 @@ typedef boost::multiprecision::mp_number mp_n namespace std{ -template <> -class numeric_limits : public std::numeric_limits +template +class numeric_limits > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::concepts::mp_number_float_architype number_type; + typedef boost::multiprecision::mp_number number_type; public: static number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } static number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index a77dcc3b..da5dfe56 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -2822,8 +2822,8 @@ typedef mp_number > cpp_dec_float_100; namespace std { - template - class numeric_limits > > + template + class numeric_limits, ExpressionTemplates> > { public: static const bool is_specialized = true; @@ -2850,15 +2850,15 @@ namespace std static const bool traps = false; static const bool tinyness_before = false; - static const boost::multiprecision::mp_number > (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } - static const boost::multiprecision::mp_number > (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } - static const boost::multiprecision::mp_number > lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } - static const boost::multiprecision::mp_number > epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } - static const boost::multiprecision::mp_number > round_error (void) { return 0.5L; } - static const boost::multiprecision::mp_number > infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } - static const boost::multiprecision::mp_number > quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } - static const boost::multiprecision::mp_number > signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } - static const boost::multiprecision::mp_number > denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> round_error (void) { return 0.5L; } + static const boost::multiprecision::mp_number, ExpressionTemplates> infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } + static const boost::multiprecision::mp_number, ExpressionTemplates> denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } }; } @@ -2866,8 +2866,8 @@ namespace boost{ namespace math{ namespace policies{ -template -struct precision< boost::multiprecision::mp_number >, Policy> +template +struct precision< boost::multiprecision::mp_number, ExpressionTemplates>, Policy> { typedef typename Policy::precision_type precision_type; typedef digits2<((Digits10 + 1) * 1000L) / 301L> digits_2; diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 65f5eb3b..b087fe5f 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2146,10 +2146,10 @@ typedef mp_number cpp_rational; namespace std{ -template -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; @@ -2196,10 +2196,10 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; struct inititializer { @@ -2273,13 +2273,13 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template -const typename numeric_limits > >::inititializer numeric_limits > >::init; +template +const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; -template -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; struct inititializer { @@ -2352,8 +2352,8 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template -const typename numeric_limits > >::inititializer numeric_limits > >::init; +template +const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; } diff --git a/include/boost/multiprecision/detail/big_lanczos.hpp b/include/boost/multiprecision/detail/big_lanczos.hpp index a3dd8cb2..998d5dca 100644 --- a/include/boost/multiprecision/detail/big_lanczos.hpp +++ b/include/boost/multiprecision/detail/big_lanczos.hpp @@ -16,10 +16,10 @@ namespace lanczos{ template struct lanczos; -template -struct lanczos, Policy> +template +struct lanczos, Policy> { - typedef typename boost::math::policies::precision, Policy>::type precision_type; + typedef typename boost::math::policies::precision, Policy>::type precision_type; typedef typename mpl::if_c< precision_type::value <= 73, lanczos13UDT, diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 6a7dfc67..6fcf64f7 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -531,16 +531,13 @@ typename enable_if_c::type eval_frexp(); } -template -class mp_number; - } // namespace multiprecision namespace math{ // // Default versions of floating point classification routines: // -template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +template +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { using multiprecision::default_ops::eval_fpclassify; return eval_fpclassify(arg.backend()); @@ -551,8 +548,8 @@ inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::det typedef typename multiprecision::detail::mp_exp::result_type value_type; return fpclassify(value_type(arg)); } -template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +template +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { int v = fpclassify(arg); return (v != FP_INFINITE) && (v != FP_NAN); @@ -563,8 +560,8 @@ inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::deta typedef typename multiprecision::detail::mp_exp::result_type value_type; return isfinite(value_type(arg)); } -template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +template +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { return fpclassify(arg) == FP_NAN; } @@ -574,8 +571,8 @@ inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail: typedef typename multiprecision::detail::mp_exp::result_type value_type; return isnan(value_type(arg)); } -template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +template +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { return fpclassify(arg) == FP_INFINITE; } @@ -585,8 +582,8 @@ inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail: typedef typename multiprecision::detail::mp_exp::result_type value_type; return isinf(value_type(arg)); } -template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +template +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) { return fpclassify(arg) == FP_NORMAL; } @@ -607,11 +604,11 @@ inline typename detail::mp_exp::result_type trunc(const detail: return trunc(number_type(v), pol); } -template -inline mp_number trunc(const mp_number& v, const Policy& pol) +template +inline mp_number trunc(const mp_number& v, const Policy& pol) { using default_ops::eval_trunc; - mp_number result; + mp_number result; eval_trunc(result.backend(), v.backend()); return result; } @@ -630,16 +627,16 @@ inline int itrunc(const detail::mp_exp& v) { return itrunc(v, boost::math::policies::policy<>()); } -template -inline int itrunc(const mp_number& v, const Policy& pol) +template +inline int itrunc(const mp_number& v, const Policy& pol) { - mp_number r = trunc(v, pol); + mp_number r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } -template -inline int itrunc(const mp_number& v) +template +inline int itrunc(const mp_number& v) { return itrunc(v, boost::math::policies::policy<>()); } @@ -657,16 +654,16 @@ inline long ltrunc(const detail::mp_exp& v) { return ltrunc(v, boost::math::policies::policy<>()); } -template -inline long ltrunc(const mp_number& v, const Policy& pol) +template +inline long ltrunc(const mp_number& v, const Policy& pol) { - mp_number r = trunc(v, pol); + mp_number r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } -template -inline long ltrunc(const mp_number& v) +template +inline long ltrunc(const mp_number& v) { return ltrunc(v, boost::math::policies::policy<>()); } @@ -685,16 +682,16 @@ inline long long lltrunc(const detail::mp_exp& v) { return lltrunc(v, boost::math::policies::policy<>()); } -template -inline long long lltrunc(const mp_number& v, const Policy& pol) +template +inline long long lltrunc(const mp_number& v, const Policy& pol) { - mp_number r = trunc(v, pol); + mp_number r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } -template -inline long long lltrunc(const mp_number& v) +template +inline long long lltrunc(const mp_number& v) { return lltrunc(v, boost::math::policies::policy<>()); } @@ -705,11 +702,11 @@ inline typename detail::mp_exp::result_type round(const detail: typedef typename detail::mp_exp::result_type number_type; return round(static_cast(v), pol); } -template -inline mp_number round(const mp_number& v, const Policy& pol) +template +inline mp_number round(const mp_number& v, const Policy& pol) { using default_ops::eval_round; - mp_number result; + mp_number result; eval_round(result.backend(), v.backend()); return result; } @@ -728,16 +725,16 @@ inline int iround(const detail::mp_exp& v) { return iround(v, boost::math::policies::policy<>()); } -template -inline int iround(const mp_number& v, const Policy& pol) +template +inline int iround(const mp_number& v, const Policy& pol) { - mp_number r = round(v, pol); + mp_number r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } -template -inline int iround(const mp_number& v) +template +inline int iround(const mp_number& v) { return iround(v, boost::math::policies::policy<>()); } @@ -755,16 +752,16 @@ inline long lround(const detail::mp_exp& v) { return lround(v, boost::math::policies::policy<>()); } -template -inline long lround(const mp_number& v, const Policy& pol) +template +inline long lround(const mp_number& v, const Policy& pol) { - mp_number r = round(v, pol); + mp_number r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } -template -inline long lround(const mp_number& v) +template +inline long lround(const mp_number& v) { return lround(v, boost::math::policies::policy<>()); } @@ -783,16 +780,16 @@ inline long long llround(const detail::mp_exp& v) { return llround(v, boost::math::policies::policy<>()); } -template -inline long long llround(const mp_number& v, const Policy& pol) +template +inline long long llround(const mp_number& v, const Policy& pol) { - mp_number r = round(v, pol); + mp_number r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } -template -inline long long llround(const mp_number& v) +template +inline long long llround(const mp_number& v) { return llround(v, boost::math::policies::policy<>()); } @@ -813,7 +810,7 @@ struct BOOST_JOIN(func, _funct)\ }\ \ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ , detail::mp_exp \ @@ -830,7 +827,7 @@ func(const detail::mp_exp& arg)\ );\ }\ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ @@ -845,6 +842,15 @@ func(const mp_number& arg)\ detail::BOOST_JOIN(func, _funct)() \ , arg \ );\ +}\ +template \ +inline mp_number \ +func(const mp_number& arg)\ +{\ + mp_number result;\ + using default_ops::BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result.backend(), arg.backend());\ + return result;\ } #define BINARY_OP_FUNCTOR(func)\ @@ -873,7 +879,7 @@ struct BOOST_JOIN(func, _funct)\ \ }\ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ @@ -893,7 +899,7 @@ func(const mp_number& arg, const mp_number& a)\ );\ }\ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ @@ -913,7 +919,7 @@ func(const mp_number& arg, const detail::mp_exp& a)\ );\ }\ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , detail::mp_exp \ @@ -933,7 +939,7 @@ func(const detail::mp_exp& arg, const mp_number& a)\ );\ }\ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ , detail::mp_exp \ @@ -953,7 +959,7 @@ func(const detail::mp_exp& arg, const detail::mp_exp \ -typename enable_if<\ +inline typename enable_if<\ is_arithmetic,\ detail::mp_exp<\ detail::function\ @@ -976,7 +982,7 @@ func(const mp_number& arg, const Arithmetic& a)\ );\ }\ template \ -typename enable_if<\ +inline typename enable_if<\ is_arithmetic,\ detail::mp_exp<\ detail::function\ @@ -999,13 +1005,13 @@ func(const detail::mp_exp& arg, const Arithmetic& a)\ );\ }\ template \ -typename enable_if<\ +inline typename enable_if<\ is_arithmetic,\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , Arithmetic \ - , mp_number\ + , mp_number \ > \ >::type \ func(const Arithmetic& arg, const mp_number& a)\ @@ -1014,7 +1020,7 @@ func(const Arithmetic& arg, const mp_number& a)\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , Arithmetic \ - , mp_number\ + , mp_number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1022,13 +1028,13 @@ func(const Arithmetic& arg, const mp_number& a)\ );\ }\ template \ -typename enable_if<\ +inline typename enable_if<\ is_arithmetic,\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ , Arithmetic \ - , detail::mp_exp\ + , detail::mp_exp \ > \ >::type \ func(const Arithmetic& arg, const detail::mp_exp& a)\ @@ -1037,13 +1043,48 @@ func(const Arithmetic& arg, const detail::mp_exp& a)\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ , Arithmetic \ - , detail::mp_exp\ + , detail::mp_exp \ >(\ detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ }\ +template \ +inline mp_number \ +func(const mp_number& arg, const mp_number& a)\ +{\ + mp_number result;\ + using default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a.backend());\ + return result;\ +}\ +template \ +inline typename enable_if<\ + is_arithmetic,\ + mp_number \ +>::type \ +func(const mp_number& arg, const Arithmetic& a)\ +{\ + typedef typename detail::canonical::type canonical_type;\ + mp_number result;\ + using default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), static_cast(a));\ + return result;\ +}\ +template \ +inline typename enable_if<\ + is_arithmetic,\ + mp_number \ +>::type \ +func(const Arithmetic& a, const mp_number& arg)\ +{\ + typedef typename detail::canonical::type canonical_type;\ + mp_number result;\ + using default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result.backend(), static_cast(a), arg.backend());\ + return result;\ +}\ #define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\ @@ -1061,7 +1102,7 @@ struct BOOST_JOIN(func, _funct)\ }\ \ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ , detail::mp_exp \ @@ -1080,7 +1121,7 @@ func(const detail::mp_exp& arg, Arg2 const& a)\ );\ }\ template \ -detail::mp_exp<\ +inline detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ @@ -1099,6 +1140,15 @@ func(const mp_number& arg, Arg2 const& a)\ a\ );\ }\ +template \ +inline mp_number \ +func(const mp_number& arg, Arg2 const& a)\ +{\ + mp_number result;\ + using default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a);\ + return result;\ +}\ UNARY_OP_FUNCTOR(abs) UNARY_OP_FUNCTOR(fabs) @@ -1146,26 +1196,26 @@ namespace detail{ template T sinc_pi_imp(T); template T sinhc_pi_imp(T); } -template -inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x) +template +inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x) { return detail::sinc_pi_imp(x); } -template -inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x, const Policy&) +template +inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x, const Policy&) { return detail::sinc_pi_imp(x); } -template -inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x) +template +inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x) { return detail::sinhc_pi_imp(x); } -template -inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x, const Policy&) +template +inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x, const Policy&) { return boost::math::sinhc_pi(x); } @@ -1173,5 +1223,10 @@ inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_numb } // namespace math } // namespace boost +// +// This has to come last of all: +// +#include + #endif diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 870adace..ba349fe4 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -19,7 +19,7 @@ namespace boost{ namespace multiprecision{ -template +template class mp_number; namespace detail{ @@ -138,8 +138,8 @@ struct function{}; template struct backend_type; -template -struct backend_type > +template +struct backend_type > { typedef T type; }; @@ -153,8 +153,8 @@ struct backend_type > template struct is_mp_number : public mpl::false_{}; -template -struct is_mp_number > : public mpl::true_{}; +template +struct is_mp_number > : public mpl::true_{}; template struct is_mp_number_exp : public mpl::false_{}; template @@ -163,22 +163,22 @@ struct is_mp_number_exp struct combine_expression; -template -struct combine_expression, T2> +template +struct combine_expression, T2> { - typedef mp_number type; + typedef mp_number type; }; -template -struct combine_expression > +template +struct combine_expression > { - typedef mp_number type; + typedef mp_number type; }; -template -struct combine_expression, mp_number > +template +struct combine_expression, mp_number > { - typedef mp_number type; + typedef mp_number type; }; template @@ -500,50 +500,50 @@ void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, // // Unary operators first: // -template -inline const mp_number& operator + (const mp_number& v) { return v; } +template +inline const mp_number& operator + (const mp_number& v) { return v; } template inline const detail::mp_exp& operator + (const detail::mp_exp& v) { return v; } template -inline detail::mp_exp > operator - (const mp_number& v) { return detail::mp_exp >(v); } +inline detail::mp_exp > operator - (const mp_number& v) { return detail::mp_exp >(v); } template inline detail::mp_exp > operator - (const detail::mp_exp& v) { return detail::mp_exp >(v); } template -inline detail::mp_exp > operator ~ (const mp_number& v) { return detail::mp_exp >(v); } +inline detail::mp_exp > operator ~ (const mp_number& v) { return detail::mp_exp >(v); } template inline detail::mp_exp > operator ~ (const detail::mp_exp& v) { return detail::mp_exp >(v); } // // Then addition: // template -inline detail::mp_exp, mp_number > - operator + (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator + (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator + (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator + (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator + (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator + (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator + (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator + (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator + (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator + (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -567,73 +567,73 @@ inline typename enable_if, detail::mp_exp -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator + (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator + (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); } template -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator + (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator + (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); } template -inline detail::mp_exp, mp_number > - operator + (const mp_number& a, const detail::mp_exp >& b) +inline detail::mp_exp, mp_number > + operator + (const mp_number& a, const detail::mp_exp >& b) { - return detail::mp_exp, mp_number >(a, b.left_ref()); + return detail::mp_exp, mp_number >(a, b.left_ref()); } template -inline detail::mp_exp, mp_number > - operator + (const detail::mp_exp >& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator + (const detail::mp_exp >& a, const mp_number& b) { - return detail::mp_exp, mp_number >(b, a.left_ref()); + return detail::mp_exp, mp_number >(b, a.left_ref()); } template -inline typename enable_if, detail::mp_exp > >::type - operator + (const detail::mp_exp >& a, const V& b) +inline typename enable_if, detail::mp_exp > >::type + operator + (const detail::mp_exp >& a, const V& b) { - return detail::mp_exp >(b, a.left_ref()); + return detail::mp_exp >(b, a.left_ref()); } template -inline typename enable_if, detail::mp_exp > >::type - operator + (const V& a, const detail::mp_exp >& b) +inline typename enable_if, detail::mp_exp > >::type + operator + (const V& a, const detail::mp_exp >& b) { - return detail::mp_exp, mp_number >(a, b.left_ref()); + return detail::mp_exp, mp_number >(a, b.left_ref()); } // // Subtraction: // template -inline detail::mp_exp, mp_number > - operator - (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator - (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator - (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator - (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator - (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator - (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator - (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator - (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator - (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator - (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -657,75 +657,75 @@ inline typename enable_if, detail::mp_exp -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator - (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator - (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); } template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator - (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator - (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); } template -inline detail::mp_exp, mp_number > - operator - (const mp_number& a, const detail::mp_exp >& b) +inline detail::mp_exp, mp_number > + operator - (const mp_number& a, const detail::mp_exp >& b) { - return detail::mp_exp, mp_number >(a, b.left_ref()); + return detail::mp_exp, mp_number >(a, b.left_ref()); } template -inline detail::mp_exp, mp_number > > - operator - (const detail::mp_exp >& a, const mp_number& b) +inline detail::mp_exp, mp_number > > + operator - (const detail::mp_exp >& a, const mp_number& b) { - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(b, a.left_ref())); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(b, a.left_ref())); } template -inline typename enable_if, detail::mp_exp, V > > >::type - operator - (const detail::mp_exp >& a, const V& b) +inline typename enable_if, detail::mp_exp, V > > >::type + operator - (const detail::mp_exp >& a, const V& b) { - return detail::mp_exp, V > >(detail::mp_exp, V >(a.left_ref(), b)); + return detail::mp_exp, V > >(detail::mp_exp, V >(a.left_ref(), b)); } template -inline typename enable_if, detail::mp_exp > >::type - operator - (const V& a, const detail::mp_exp >& b) +inline typename enable_if, detail::mp_exp > >::type + operator - (const V& a, const detail::mp_exp >& b) { - return detail::mp_exp >(a, b.left_ref()); + return detail::mp_exp >(a, b.left_ref()); } // // Multiplication: // template -inline detail::mp_exp, mp_number > - operator * (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator * (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator * (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator * (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator * (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator * (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator * (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator * (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator * (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator * (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -749,79 +749,79 @@ inline typename enable_if, detail::mp_exp -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator * (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator * (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref())); } template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator * (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator * (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); } template -inline detail::mp_exp, mp_number > > - operator * (const mp_number& a, const detail::mp_exp >& b) +inline detail::mp_exp, mp_number > > + operator * (const mp_number& a, const detail::mp_exp >& b) { - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(a, b.left_ref())); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(a, b.left_ref())); } template -inline detail::mp_exp, mp_number > > - operator * (const detail::mp_exp >& a, const mp_number& b) +inline detail::mp_exp, mp_number > > + operator * (const detail::mp_exp >& a, const mp_number& b) { - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(b, a.left_ref())); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(b, a.left_ref())); } template -inline typename enable_if, detail::mp_exp, V > > >::type - operator * (const detail::mp_exp >& a, const V& b) +inline typename enable_if, detail::mp_exp, V > > >::type + operator * (const detail::mp_exp >& a, const V& b) { - return detail::mp_exp, V > > ( - detail::mp_exp, V >(a.left_ref(), b)); + return detail::mp_exp, V > > ( + detail::mp_exp, V >(a.left_ref(), b)); } template -inline typename enable_if, detail::mp_exp, V > > >::type - operator * (const V& a, const detail::mp_exp >& b) +inline typename enable_if, detail::mp_exp, V > > >::type + operator * (const V& a, const detail::mp_exp >& b) { - return detail::mp_exp, V > >( - detail::mp_exp, V >(b.left_ref(), a)); + return detail::mp_exp, V > >( + detail::mp_exp, V >(b.left_ref(), a)); } // // Division: // template -inline detail::mp_exp, mp_number > - operator / (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator / (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator / (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator / (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator / (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator / (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator / (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator / (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator / (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator / (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -845,79 +845,79 @@ inline typename enable_if, detail::mp_exp -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator / (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator / (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref())); } template -inline detail::mp_exp::left_type, mp_number > > - operator / (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp::left_type, mp_number > > + operator / (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp::left_type, mp_number > >( - detail::mp_exp::left_type, mp_number >(a.left_ref(), b)); + return detail::mp_exp::left_type, mp_number > >( + detail::mp_exp::left_type, mp_number >(a.left_ref(), b)); } template -inline detail::mp_exp, mp_number > > - operator / (const mp_number& a, const detail::mp_exp >& b) +inline detail::mp_exp, mp_number > > + operator / (const mp_number& a, const detail::mp_exp >& b) { - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(a, b.left_ref())); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(a, b.left_ref())); } template -inline detail::mp_exp, mp_number > > - operator / (const detail::mp_exp >& a, const mp_number& b) +inline detail::mp_exp, mp_number > > + operator / (const detail::mp_exp >& a, const mp_number& b) { - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(a.left_ref(), b)); + return detail::mp_exp, mp_number > >( + detail::mp_exp, mp_number >(a.left_ref(), b)); } template -inline typename enable_if, detail::mp_exp, V > > >::type - operator / (const detail::mp_exp >& a, const V& b) +inline typename enable_if, detail::mp_exp, V > > >::type + operator / (const detail::mp_exp >& a, const V& b) { - return detail::mp_exp, V > >( - detail::mp_exp, V>(a.left_ref(), b)); + return detail::mp_exp, V > >( + detail::mp_exp, V>(a.left_ref(), b)); } template -inline typename enable_if, detail::mp_exp > > >::type - operator / (const V& a, const detail::mp_exp >& b) +inline typename enable_if, detail::mp_exp > > >::type + operator / (const V& a, const detail::mp_exp >& b) { - return detail::mp_exp > >( - detail::mp_exp >(a, b.left_ref())); + return detail::mp_exp > >( + detail::mp_exp >(a, b.left_ref())); } // // Modulus: // template -inline detail::mp_exp, mp_number > - operator % (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator % (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator % (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator % (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator % (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator % (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator % (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator % (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator % (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator % (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -941,10 +941,10 @@ inline typename enable_if, detail::mp_exp -inline typename enable_if, detail::mp_exp, I > >::type - operator << (const mp_number& a, const I& b) +inline typename enable_if, detail::mp_exp, I > >::type + operator << (const mp_number& a, const I& b) { - return detail::mp_exp, I>(a, b); + return detail::mp_exp, I>(a, b); } template inline typename enable_if, detail::mp_exp, I> >::type @@ -956,10 +956,10 @@ inline typename enable_if, detail::mp_exp -inline typename enable_if, detail::mp_exp, I > >::type - operator >> (const mp_number& a, const I& b) +inline typename enable_if, detail::mp_exp, I > >::type + operator >> (const mp_number& a, const I& b) { - return detail::mp_exp, I>(a, b); + return detail::mp_exp, I>(a, b); } template inline typename enable_if, detail::mp_exp, I> >::type @@ -971,34 +971,34 @@ inline typename enable_if, detail::mp_exp -inline detail::mp_exp, mp_number > - operator & (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator & (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator & (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator & (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator & (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator & (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator & (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator & (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator & (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator & (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -1022,34 +1022,34 @@ inline typename enable_if, detail::mp_exp -inline detail::mp_exp, mp_number > - operator| (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator| (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator| (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator| (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator| (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator| (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator| (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator| (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator| (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator| (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -1073,34 +1073,34 @@ inline typename enable_if, detail::mp_exp -inline detail::mp_exp, mp_number > - operator^ (const mp_number& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator^ (const mp_number& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template -inline typename enable_if, detail::mp_exp, V > >::type - operator^ (const mp_number& a, const V& b) +inline typename enable_if, detail::mp_exp, V > >::type + operator^ (const mp_number& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } template -inline typename enable_if, detail::mp_exp > >::type - operator^ (const V& a, const mp_number& b) +inline typename enable_if, detail::mp_exp > >::type + operator^ (const V& a, const mp_number& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } template -inline detail::mp_exp, detail::mp_exp > - operator^ (const mp_number& a, const detail::mp_exp& b) +inline detail::mp_exp, detail::mp_exp > + operator^ (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } template -inline detail::mp_exp, mp_number > - operator^ (const detail::mp_exp& a, const mp_number& b) +inline detail::mp_exp, mp_number > + operator^ (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } template inline detail::mp_exp, detail::mp_exp > @@ -1134,15 +1134,15 @@ enum number_category_type template struct number_category : public mpl::int_ {}; -template -struct number_category > : public number_category{}; +template +struct number_category > : public number_category{}; template struct number_category > : public number_category::result_type>{}; template struct component_type; -template -struct component_type > : public component_type{}; +template +struct component_type > : public component_type{}; template struct component_type > : public component_type::result_type>{}; diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/fixed_int.hpp index 85a6d339..ff59dbef 100644 --- a/include/boost/multiprecision/fixed_int.hpp +++ b/include/boost/multiprecision/fixed_int.hpp @@ -1517,10 +1517,10 @@ typedef mp_number > mp_int512_t; namespace std{ -template -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; struct initializer { @@ -1591,9 +1591,9 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template -typename numeric_limits > >::initializer const - numeric_limits > >::init; +template +typename numeric_limits, ExpressionTemplates> >::initializer const + numeric_limits, ExpressionTemplates> >::init; } #endif diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index f2104de9..47eb5f1b 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1816,10 +1816,10 @@ namespace std{ // // numeric_limits [partial] specializations for the types declared in this header: // -template -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // @@ -1924,13 +1924,13 @@ private: static const data_initializer initializer; }; -template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; +template +const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; -template<> -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } @@ -1966,10 +1966,10 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template<> -class numeric_limits +template +class numeric_limits > { - typedef boost::multiprecision::mpz_int number_type; + typedef boost::multiprecision::mp_number number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // @@ -2015,10 +2015,10 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template<> -class numeric_limits +template +class numeric_limits > { - typedef boost::multiprecision::mpq_rational number_type; + typedef boost::multiprecision::mp_number number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 22e18403..2c139de8 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -23,10 +23,10 @@ namespace boost{ namespace multiprecision{ -template +template class mp_number { - typedef mp_number self_type; + typedef mp_number self_type; public: typedef Backend backend_type; mp_number(){} @@ -49,8 +49,11 @@ public: m_backend = canonical_value(v); } */ - template - mp_number(const mp_number& val, typename enable_if >::type* dummy1 = 0) + template + mp_number(const mp_number& val) : m_backend(val.m_backend) {} + + template + mp_number(const mp_number& val, typename enable_if >::type* dummy1 = 0) { m_backend = val.backend(); } @@ -60,8 +63,8 @@ public: using default_ops::assign_components; assign_components(m_backend, canonical_value(v1), canonical_value(v2)); } - template - mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* dummy1 = 0) + template + mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* dummy1 = 0) { using default_ops::assign_components; assign_components(m_backend, v1.backend(), v2.backend()); @@ -85,7 +88,7 @@ public: } template - typename enable_if, is_same, is_convertible >, mp_number& >::type + typename enable_if, is_same, is_convertible >, mp_number& >::type operator=(const V& v) { m_backend = canonical_value(v); @@ -93,15 +96,22 @@ public: } template - typename enable_if, mpl::not_, is_same, is_convertible > > >, mp_number& >::type + typename enable_if, mpl::not_, is_same, is_convertible > > >, mp_number& >::type operator=(const V& v) { m_backend = v; return *this; } + template + mp_number& operator=(const mp_number& v) + { + m_backend = v.backend(); + return *this; + } + template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator=(const mp_number& v) { m_backend = v.backend(); @@ -147,7 +157,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator+=(const V& v) { using default_ops::eval_add; @@ -178,7 +188,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator-=(const V& v) { using default_ops::eval_subtract; @@ -211,7 +221,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator*=(const V& v) { using default_ops::eval_multiply; @@ -242,7 +252,7 @@ public: return *this; } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator%=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); @@ -330,7 +340,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator/=(const V& v) { using default_ops::eval_divide; @@ -364,7 +374,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator&=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); @@ -399,7 +409,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator|=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); @@ -432,7 +442,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, mp_number& >::type operator^=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); @@ -507,7 +517,7 @@ public: // // Comparison: // - int compare(const mp_number& o)const + int compare(const mp_number& o)const { return m_backend.compare(o.m_backend); } @@ -1377,7 +1387,7 @@ private: template bool contains_self(const Exp& e, mpl::int_<0> const&)const { - return is_floatly_self(e.value()); + return is_realy_self(e.value()); } template bool contains_self(const Exp& e, mpl::int_<1> const&)const @@ -1413,7 +1423,7 @@ private: template bool is_self(const Exp& e, mpl::int_<0> const&)const { - return is_floatly_self(e.value()); + return is_realy_self(e.value()); } template bool is_self(const Exp& e, mpl::int_ const&)const @@ -1422,8 +1432,8 @@ private: } template - bool is_floatly_self(const Val&)const { return false; } - bool is_floatly_self(const self_type& v)const { return &v == this; } + bool is_realy_self(const Val&)const { return false; } + bool is_realy_self(const self_type& v)const { return &v == this; } static const Backend& canonical_value(const self_type& v){ return v.m_backend; } template @@ -1439,32 +1449,32 @@ private: namespace detail { -template -inline int mp_number_compare(const mp_number& a, const mp_number& b) +template +inline int mp_number_compare(const mp_number& a, const mp_number& b) { return a.compare(b); } -template -inline int mp_number_compare(const mp_number& a, const mp_exp& b) +template +inline int mp_number_compare(const mp_number& a, const mp_exp& b) { - return a.compare(mp_number(b)); + return a.compare(mp_number(b)); } -template -inline int mp_number_compare(const mp_exp& a, const mp_number& b) +template +inline int mp_number_compare(const mp_exp& a, const mp_number& b) { - return -b.compare(mp_number(a)); + return -b.compare(mp_number(a)); } -template -inline int mp_number_compare(const mp_number& a, const Val b) +template +inline int mp_number_compare(const mp_number& a, const Val b) { return a.compare(b); } -template -inline int mp_number_compare(const Val a, const mp_number& b) +template +inline int mp_number_compare(const Val a, const mp_number& b) { return -b.compare(a); } @@ -1569,8 +1579,8 @@ inline typename boost::enable_if, bool>: return 0 < detail::mp_number_compare(a, b); } -template -inline std::ostream& operator << (std::ostream& os, const mp_number& r) +template +inline std::ostream& operator << (std::ostream& os, const mp_number& r) { std::streamsize d = os.precision(); std::string s = r.str(d, os.flags()); @@ -1598,8 +1608,8 @@ inline std::ostream& operator << (std::ostream& os, const mp_exp -inline std::istream& operator >> (std::istream& is, mp_number& r) +template +inline std::istream& operator >> (std::istream& is, mp_number& r) { std::string s; is >> s; @@ -1607,8 +1617,8 @@ inline std::istream& operator >> (std::istream& is, mp_number& r) return is; } -template -inline void swap(mp_number& a, mp_number& b) +template +inline void swap(mp_number& a, mp_number& b) { a.swap(b); } @@ -1618,11 +1628,11 @@ inline void swap(mp_number& a, mp_number& b) template class rational; -template -inline std::istream& operator >> (std::istream& is, rational >& r) +template +inline std::istream& operator >> (std::istream& is, rational >& r) { std::string s1; - multiprecision::mp_number v1, v2; + multiprecision::mp_number v1, v2; char c; bool have_hex = false; @@ -1653,38 +1663,38 @@ inline std::istream& operator >> (std::istream& is, rational -typename enable_if, bool>::type operator == (const rational >& a, const Arithmetic& b) +template +typename enable_if, bool>::type operator == (const rational >& a, const Arithmetic& b) { - return a == multiprecision::mp_number(b); + return a == multiprecision::mp_number(b); } -template -typename enable_if, bool>::type operator == (const Arithmetic& b, const rational >& a) +template +typename enable_if, bool>::type operator == (const Arithmetic& b, const rational >& a) { - return a == multiprecision::mp_number(b); + return a == multiprecision::mp_number(b); } -template -typename enable_if, bool>::type operator != (const rational >& a, const Arithmetic& b) +template +typename enable_if, bool>::type operator != (const rational >& a, const Arithmetic& b) { - return a != multiprecision::mp_number(b); + return a != multiprecision::mp_number(b); } -template -typename enable_if, bool>::type operator != (const Arithmetic& b, const rational >& a) +template +typename enable_if, bool>::type operator != (const Arithmetic& b, const rational >& a) { - return a != multiprecision::mp_number(b); + return a != multiprecision::mp_number(b); } -template -inline multiprecision::mp_number numerator(const rational >& a) +template +inline multiprecision::mp_number numerator(const rational >& a) { return a.numerator(); } -template -inline multiprecision::mp_number denominator(const rational >& a) +template +inline multiprecision::mp_number denominator(const rational >& a) { return a.denominator(); } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 9f5e3ce1..cdb38d26 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1011,6 +1011,11 @@ inline int digits() { return boost::multiprecision::backends::detail::get_default_precision(); } +template <> +inline int digits, false> >() +{ + return boost::multiprecision::backends::detail::get_default_precision(); +} } @@ -1021,10 +1026,10 @@ namespace std{ // // numeric_limits [partial] specializations for the types declared in this header: // -template -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT @@ -1153,13 +1158,13 @@ private: static const data_initializer initializer; }; -template -const typename numeric_limits > >::data_initializer numeric_limits > >::initializer; +template +const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; -template<> -class numeric_limits > > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number > number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(0); } diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 2436147f..c01af0fd 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -179,11 +179,11 @@ inline void assign_components(rational_adapter& result, const V& v1, result.data().assign(v1, v2); } -template -struct number_category > : public mpl::int_{}; - } // namespace backends +template +struct number_category > : public mpl::int_{}; + using boost::multiprecision::backends::rational_adapter; template diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index a30a3868..50bc1785 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -457,10 +457,10 @@ typedef mp_number mp_rational; namespace std{ -template<> -class numeric_limits +template +class numeric_limits > { - typedef boost::multiprecision::mp_int number_type; + typedef boost::multiprecision::mp_number number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 47dc5082..31d1bf74 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -128,26 +128,12 @@ run test_arithmetic.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] : test_arithmetic_tommath_br ; -run test_arithmetic.cpp - : # command line - : # input files - : # requirements - TEST_FIXED_INT1 - : test_arithmetic_fixed_int1 ; - -run test_arithmetic.cpp - : # command line - : # input files - : # requirements - TEST_FIXED_INT2 - : test_arithmetic_fixed_int2 ; - run test_arithmetic.cpp : # command line : # input files : # requirements TEST_CPP_INT - : test_arithmetic_fixed_cpp_int ; + : test_arithmetic_cpp_int ; run test_arithmetic.cpp : # command line @@ -233,13 +219,6 @@ run test_numeric_limits.cpp TEST_CPP_INT : test_numeric_limits_cpp_int ; -run test_numeric_limits.cpp - : # command line - : # input files - : # requirements - TEST_FIXED_INT - : test_numeric_limits_fixed_int ; - run test_exp.cpp gmp : # command line : # input files @@ -612,23 +591,8 @@ run test_int_io.cpp : # command line : # input files : # requirements - TEST_FIXED_INT1 - : test_int_io_fixed_int1 ; - -run test_int_io.cpp - : # command line - : # input files - : # requirements - TEST_FIXED_INT2 - : test_int_io_fixed_int2 ; - -run test_fixed_int.cpp gmp - : # command line - : # input files - : # requirements - [ check-target-builds ../config//has_gmp : : no ] - release # otherwise runtime is too slow!! - ; + TEST_CPP_INT + : test_int_io_cpp_int ; run test_cpp_int.cpp gmp : # command line @@ -772,6 +736,13 @@ if ! $(disable-concepts) TEST_CPP_DEC_FLOAT : mp_number_concept_check_cpp_dec_float ; + run mp_number_concept_check.cpp + : # command line + : # input files + : # requirements + TEST_CPP_DEC_FLOAT_NO_ET + : mp_number_concept_check_cpp_dec_float_no_et ; + run mp_number_concept_check.cpp : # command line : # input files diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 15d56a27..07c6861a 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -22,7 +22,7 @@ #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\ - && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) + && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) # define TEST_MPF_50 # define TEST_BACKEND # define TEST_MPZ @@ -32,6 +32,7 @@ # define TEST_MPFR_17 # define TEST_MPFR_30 # define TEST_CPP_DEC_FLOAT +# define TEST_CPP_DEC_FLOAT_NO_ET #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -48,7 +49,7 @@ #ifdef TEST_BACKEND #include #endif -#ifdef TEST_CPP_DEC_FLOAT +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) #include #endif #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) @@ -84,6 +85,9 @@ void foo() #ifdef TEST_CPP_DEC_FLOAT instantiate(boost::multiprecision::cpp_dec_float_50()); #endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + instantiate(boost::multiprecision::mp_number, false>()); +#endif } int main() diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index b7e53e1d..ea66d0cf 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1012,6 +1012,7 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT test(); + test, false> >(); #endif #ifdef TEST_MPFR test(); @@ -1050,6 +1051,7 @@ int main() test > >(); test > >(); test(); + test, false> >(); #endif #ifdef TEST_CPP_INT_BR test(); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 1078ac8e..704ec26c 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -9,11 +9,12 @@ # define _SCL_SECURE_NO_WARNINGS #endif -#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) +#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) && !defined(TEST_CPP_INT) # define TEST_TOMMATH # define TEST_MPZ # define TEST_FIXED_INT1 # define TEST_FIXED_INT2 +# define TEST_CPP_INT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -33,6 +34,9 @@ #if defined(TEST_FIXED_INT1) || defined(TEST_FIXED_INT2) #include #endif +#ifdef TEST_CPP_INT +#include +#endif #include #include @@ -136,6 +140,11 @@ int main() test_round_trip(); test_round_trip > >(); test_round_trip > >(); +#endif +#ifdef TEST_CPP_INT + test_round_trip > >(); + test_round_trip > >(); + test_round_trip > >(); #endif return boost::report_errors(); } From e1b23af8f5b903a5925aea8d1ed36dccc2892de1 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 13 Mar 2012 18:40:52 +0000 Subject: [PATCH 131/256] Add files missing from last commit, and add new examples to tests. [SVN r77324] --- doc/multiprecision.qbk | 2 +- example/cpp_int_snips.cpp | 64 ++++ example/fixed_int_snips.cpp | 34 -- .../boost/multiprecision/detail/no_et_ops.hpp | 303 ++++++++++++++++++ test/Jamfile.v2 | 1 + 5 files changed, 369 insertions(+), 35 deletions(-) create mode 100644 example/cpp_int_snips.cpp delete mode 100644 example/fixed_int_snips.cpp create mode 100644 include/boost/multiprecision/detail/no_et_ops.hpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index d7c313d7..52f85764 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -22,7 +22,7 @@ [import ../example/mpfr_snips.cpp] [import ../example/cpp_dec_float_snips.cpp] [import ../example/tommath_snips.cpp] -[import ../example/fixed_int_snips.cpp] +[import ../example/cpp_int_snips.cpp] [template mpfr[] [@http://www.mpfr.org MPFR]] [template gmp[] [@http://gmplib.org GMP]] diff --git a/example/cpp_int_snips.cpp b/example/cpp_int_snips.cpp new file mode 100644 index 00000000..eb2827c7 --- /dev/null +++ b/example/cpp_int_snips.cpp @@ -0,0 +1,64 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include + +void t1() +{ + //[cpp_int_eg + //=#include + + using namespace boost::multiprecision; + + mp_int128_t v = 1; + + // Do some fixed precision arithmetic: + for(unsigned i = 1; i <= 20; ++i) + v *= i; + + std::cout << v << std::endl; // prints 20! + + // Try again at arbitrary precision: + cpp_int u = 1; + for(unsigned i = 1; i <= 100; ++i) + u *= i; + + std::cout << u << std::endl; // prints 100! + + //] +} + +void t3() +{ + //[cpp_rat_eg + //=#include + + using namespace boost::multiprecision; + + cpp_rational v = 1; + + // Do some arithmetic: + for(unsigned i = 1; i <= 1000; ++i) + v *= i; + v /= 10; + + std::cout << v << std::endl; // prints 1000! / 10 + std::cout << numerator(v) << std::endl; + std::cout << denominator(v) << std::endl; + + cpp_rational w(2, 3); // component wise constructor + std::cout << w << std::endl; // prints 2/3 + //] +} + + +int main() +{ + t1(); + t3(); + return 0; +} + diff --git a/example/fixed_int_snips.cpp b/example/fixed_int_snips.cpp deleted file mode 100644 index e076b60f..00000000 --- a/example/fixed_int_snips.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ - -#include -#include - -void t1() -{ - //[fixed_int_eg - //=#include - - using namespace boost::multiprecision; - - mp_int128_t v = 1; - - // Do some arithmetic: - for(unsigned i = 1; i <= 20; ++i) - v *= i; - - std::cout << v << std::endl; // prints 20! - v = -v; - std::cout << std::hex << v << std::endl; // prints 2's complement representation - - //] -} - -int main() -{ - t1(); - return 0; -} - diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp new file mode 100644 index 00000000..3710c644 --- /dev/null +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -0,0 +1,303 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_NO_ET_OPS_HPP +#define BOOST_MP_NO_ET_OPS_HPP + +namespace boost{ +namespace multiprecision{ + +// +// Operators for non-expression template enabled mp_number. +// NOTE: this is not a complete header - really just a suffix to default_ops.hpp. +// NOTE: these operators have to be defined after the methods in default_ops.hpp. +// +template +inline mp_number operator - (const mp_number& v) +{ + mp_number result(v); + result.backend().negate(); + return result; +} +template +inline mp_number operator ~ (const mp_number& v) +{ + mp_number result; + eval_complement(result.backend(), v.backend()); + return result; +} +// +// Addition: +// +template +inline mp_number operator + (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_add; + eval_add(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator + (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_add; + eval_add(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator + (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_add; + eval_add(result.backend(), b.backend(), static_cast(a)); + return result; +} +// +// Subtraction: +// +template +inline mp_number operator - (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_subtract; + eval_subtract(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator - (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_subtract; + eval_subtract(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator - (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_subtract; + eval_subtract(result.backend(), static_cast(a), b.backend()); + return result; +} +// +// Multiply: +// +template +inline mp_number operator * (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_multiply; + eval_multiply(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator * (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_multiply; + eval_multiply(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator * (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_multiply; + eval_multiply(result.backend(), b.backend(), static_cast(a)); + return result; +} +// +// divide: +// +template +inline mp_number operator / (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_divide; + eval_divide(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator / (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_divide; + eval_divide(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator / (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_divide; + eval_divide(result.backend(), static_cast(a), b.backend()); + return result; +} +// +// modulus: +// +template +inline mp_number operator % (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_modulus; + eval_modulus(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator % (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_modulus; + eval_modulus(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator % (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_modulus; + eval_modulus(result.backend(), static_cast(a), b.backend()); + return result; +} +// +// Bitwise or: +// +template +inline mp_number operator | (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_bitwise_or; + eval_bitwise_or(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator | (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_bitwise_or; + eval_bitwise_or(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator | (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_bitwise_or; + eval_bitwise_or(result.backend(), b.backend(), static_cast(a)); + return result; +} +// +// Bitwise xor: +// +template +inline mp_number operator ^ (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator ^ (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator ^ (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(result.backend(), b.backend(), static_cast(a)); + return result; +} +// +// Bitwise and: +// +template +inline mp_number operator & (const mp_number& a, const mp_number& b) +{ + mp_number result; + using default_ops::eval_bitwise_and; + eval_bitwise_and(result.backend(), a.backend(), b.backend()); + return result; +} +template +inline typename enable_if, mp_number >::type + operator & (const mp_number& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_bitwise_and; + eval_bitwise_and(result.backend(), a.backend(), static_cast(b)); + return result; +} +template +inline typename enable_if, mp_number >::type + operator & (const V& a, const mp_number& b) +{ + typedef typename detail::canonical::type canonical_type; + mp_number result; + using default_ops::eval_bitwise_and; + eval_bitwise_and(result.backend(), b.backend(), static_cast(a)); + return result; +} +// +// shifts: +// +template +inline typename enable_if, mp_number >::type + operator << (const mp_number& a, const I& b) +{ + mp_number result(a); + using default_ops::eval_left_shift; + eval_left_shift(result.backend(), b); + return result; +} +template +inline typename enable_if, mp_number >::type + operator >> (const mp_number& a, const I& b) +{ + mp_number result(a); + using default_ops::eval_right_shift; + eval_right_shift(result.backend(), b); + return result; +} + +}} // namespaces + +#endif // BOOST_MP_NO_ET_OPS_HPP diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 31d1bf74..511e14fb 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -631,6 +631,7 @@ run ../example/mpfr_snips.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] ; run ../example/cpp_dec_float_snips.cpp ; +run ../example/cpp_int_snips.cpp ; run ../example/tommath_snips.cpp $(TOMMATH) : # command line From d82fa61c8131166436783f6694868ee337b047ea Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 14 Mar 2012 18:23:44 +0000 Subject: [PATCH 132/256] Mostly remove references to fixed_int. Update docs. [SVN r77335] --- doc/html/boost_multiprecision/intro.html | 19 +++ .../boost_multiprecision/ref/backendconc.html | 145 ++++++++---------- .../boost_multiprecision/ref/mp_number.html | 90 +++++++---- doc/html/boost_multiprecision/tut.html | 2 +- doc/html/boost_multiprecision/tut/ints.html | 122 +++++++++++---- .../boost_multiprecision/tut/rational.html | 122 ++++++++++++++- doc/html/boost_multiprecision/tut/reals.html | 6 +- doc/html/index.html | 4 +- doc/multiprecision.qbk | 24 +-- example/cpp_int_snips.cpp | 2 +- include/boost/multiprecision/cpp_int.hpp | 11 ++ performance/Jamfile.v2 | 2 +- performance/performance_test.cpp | 12 +- test/test_arithmetic.cpp | 27 +--- test/test_int_io.cpp | 21 +-- test/test_numeric_limits.cpp | 16 +- 16 files changed, 392 insertions(+), 233 deletions(-) diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 59d5fc82..25367098 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -55,6 +55,19 @@ typedef mp::mp_number<mp::mpfr_float_backend<300> > my_float; +my_float a, b, c; // These variables have 300 decimal digits precision + +

    + We can repeat the above example, but with the expression templates disabled + (for faster compile times, but slower runtimes) by passing a second template + argument to mp_number: +

    +
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    +
    +namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    +
    +typedef mp::mp_number<mp::mpfr_float_backend<300>, false>  my_float;
    +
     my_float a, b, c; // These variables have 300 decimal digits precision
     
    @@ -303,6 +316,12 @@ as one would hope.
    +

    + Finally, note that mp_number + takes a second template argument, which, when set to false + disables all the expression template machinary. The result is much faster to + compile, but slower at runtime. +

    We'll conclude this section by providing some more performance comparisons between these three libraries, again, all are using MPFR diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index 95fe4403..d9633266 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -330,7 +330,7 @@

    - add(b, + eval_add(b, cb)

    @@ -348,7 +348,7 @@

    - subtract(b, + eval_subtract(b, cb)

    @@ -367,7 +367,7 @@

    - multiply(b, + eval_multiply(b, cb)

    @@ -386,7 +386,7 @@

    - divide(b, + eval_divide(b, cb)

    @@ -404,7 +404,7 @@

    - modulus(b, + eval_modulus(b, cb)

    @@ -425,8 +425,7 @@

    - bitwise_and(b, - cb) + eval_bitwise_and(b, cb)

    @@ -446,8 +445,7 @@

    - bitwise_or(b, - cb) + eval_bitwise_or(b, cb)

    @@ -467,8 +465,7 @@

    - bitwise_xor(b, - cb) + eval_bitwise_xor(b, cb)

    @@ -488,8 +485,7 @@

    - complement(b, - cb) + eval_complement(b, cb)

    @@ -509,8 +505,7 @@

    - left_shift(b, - ui) + eval_left_shift(b, ui)

    @@ -530,8 +525,7 @@

    - right_shift(b, - ui) + eval_right_shift(b, ui)

    @@ -551,8 +545,7 @@

    - convert_to(pa, - cb) + eval_convert_to(pa, cb)

    @@ -807,7 +800,7 @@

    - add(b, + eval_add(b, a)

    @@ -827,7 +820,7 @@

    - subtract(b, + eval_subtract(b, a)

    @@ -849,7 +842,7 @@

    - multiply(b, + eval_multiply(b, a)

    @@ -871,7 +864,7 @@

    - divide(b, + eval_divide(b, a)

    @@ -891,7 +884,7 @@

    - modulus(b, + eval_modulus(b, a)

    @@ -914,8 +907,7 @@

    - bitwise_and(b, - a) + eval_bitwise_and(b, a)

    @@ -937,8 +929,7 @@

    - bitwise_or(b, - a) + eval_bitwise_or(b, a)

    @@ -960,8 +951,7 @@

    - bitwise_xor(b, - a) + eval_bitwise_xor(b, a)

    @@ -983,7 +973,7 @@

    - add(b, + eval_add(b, cb, cb2)

    @@ -1003,7 +993,7 @@

    - subtract(b, + eval_subtract(b, cb, cb2)

    @@ -1024,7 +1014,7 @@

    - multiply(b, + eval_multiply(b, cb, cb2)

    @@ -1045,7 +1035,7 @@

    - divide(b, + eval_divide(b, cb, cb2)

    @@ -1066,7 +1056,7 @@

    - add(b, + eval_add(b, cb, a)

    @@ -1087,7 +1077,7 @@

    - subtract(b, + eval_subtract(b, cb, a)

    @@ -1111,7 +1101,7 @@

    - multiply(b, + eval_multiply(b, cb, a)

    @@ -1135,7 +1125,7 @@

    - divide(b, + eval_divide(b, cb, a)

    @@ -1159,7 +1149,7 @@

    - modulus(b, + eval_modulus(b, cb, cb2)

    @@ -1182,9 +1172,7 @@

    - bitwise_and(b, - cb, - cb2) + eval_bitwise_and(b, cb, cb2)

    @@ -1205,9 +1193,7 @@

    - bitwise_or(b, - cb, - cb2) + eval_bitwise_or(b, cb, cb2)

    @@ -1228,9 +1214,7 @@

    - bitwise_xor(b, - cb, - cb2) + eval_bitwise_xor(b, cb, cb2)

    @@ -1251,7 +1235,7 @@

    - add(b, + eval_add(b, a, cb)

    @@ -1274,7 +1258,7 @@

    - subtract(b, + eval_subtract(b, a, cb)

    @@ -1298,7 +1282,7 @@

    - multiply(b, + eval_multiply(b, a, cb)

    @@ -1322,7 +1306,7 @@

    - divide(b, + eval_divide(b, a, cb)

    @@ -1345,7 +1329,7 @@

    - modulus(b, + eval_modulus(b, cb, a)

    @@ -1370,9 +1354,7 @@

    - bitwise_and(b, - cb, - a) + eval_bitwise_and(b, cb, a)

    @@ -1395,9 +1377,7 @@

    - bitwise_or(b, - cb, - a) + eval_bitwise_or(b, cb, a)

    @@ -1420,9 +1400,7 @@

    - bitwise_xor(b, - cb, - a) + eval_bitwise_xor(b, cb, a)

    @@ -1445,7 +1423,7 @@

    - modulus(b, + eval_modulus(b, a, cb)

    @@ -1470,9 +1448,7 @@

    - bitwise_and(b, - a, - cb) + eval_bitwise_and(b, a, cb)

    @@ -1495,9 +1471,7 @@

    - bitwise_or(b, - a, - cb) + eval_bitwise_or(b, a, cb)

    @@ -1520,9 +1494,7 @@

    - bitwise_xor(b, - a, - cb) + eval_bitwise_xor(b, a, cb)

    @@ -1545,9 +1517,7 @@

    - left_shift(b, - cb, - ui) + eval_left_shift(b, cb, ui)

    @@ -1568,9 +1538,7 @@

    - right_shift(b, - cb, - ui) + eval_right_shift(b, cb, ui)

    @@ -1591,7 +1559,7 @@

    - increment(b) + eval_increment(b)

    @@ -1609,7 +1577,7 @@

    - decrement(b) + eval_decrement(b)

    @@ -1627,7 +1595,7 @@

    - is_zero(cb) + eval_is_zero(cb)

    @@ -1644,7 +1612,7 @@

    - get_sign(cb) + eval_get_sign(cb)

    @@ -2102,7 +2070,18 @@
    -
    +
    + + + + + +
    [Note]Note

    + The non-member functions are all named with an "eval_" prefix + to avoid conflicts with template classes of the same name - in point of + fact this naming convension shouldn't be necessary, but rather works around + some compiler bugs. +

    diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index f039c147..a68c1649 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -23,7 +23,7 @@
    namespace boost{ namespace multiprecision{
     
    -template <class Backend>
    +template <class Backend, bool ExpressionTemplates = true>
     class mp_number
     {
        mp_number();
    @@ -94,15 +94,15 @@
     bool operator>=(const see-below&, const see-below&);
     
     // Swap:
    -template <class Backend>
    -void swap(mp_number<Backend>& a, mp_number<Backend>& b);
    +template <class Backend, bool ExpressionTemplates>
    +void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
     
     // iostream support:
    -template <class Backend>
    -std::ostream& operator << (std::ostream& os, const mp_number<Backend>& r);
    +template <class Backend, bool ExpressionTemplates>
    +std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
     std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
    -template <class Backend>
    -std::istream& operator >> (std::istream& is, mp_number<Backend>& r);
    +template <class Backend, bool ExpressionTemplates>
    +std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r);
     
     // Non-member function standard library support:
     unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    @@ -163,8 +163,8 @@
     // numeric_limits support:
     namespace std{
     
    -template <class Backend>
    -struct numeric_limits<boost::multiprecision<Backend> >
    +template <class Backend, bool ExpressionTemplates>
    +struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
     {
        /* Usual members here */
     };
    @@ -175,6 +175,27 @@
     
             Description
           
    +
    template <class Backend, bool ExpressionTemplates = true>
    +class mp_number;
    +
    +

    + Class mp_number has two template + arguments: +

    +
    +

    +
    +
    Backend
    +

    + The actual arithmetic backend that does all the work. +

    +
    ExpressionTemplates
    +

    + A boolean value: when true, then expression templates are enabled, + otherwise they are disabled. +

    +
    +
    mp_number();
     mp_number(see-below);
     mp_number& operator=(see-below);
    @@ -235,7 +256,8 @@
           

    • - Another mp_number<Backend>. + Another mp_number<Backend, + ExpressionTemplates>.
    • A builtin arithmetic type. @@ -309,7 +331,7 @@ the precision of *this respectively.

      -
      int compare(const mp_number<Backend>& o)const;
      +
      int compare(const mp_number<Backend, ExpressionTemplates>& o)const;
       template <class V>
       typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
       
      @@ -377,12 +399,25 @@ In addition, one of the two arguments may be a builtin arithmetic type.

      - With the exception of the comparison operators (which always evaluate their - arguments and return a bool - result), these operators return an "unmentionable" expression template - type which defers evaluation of the operator until the result is actually - required. + The return type of these operators is either:

      +
        +
      • + An unmentionable-type expression template type when + ExpressionTemplates is + true. +
      • +
      • + Type mp_number<Backend, + false> + when ExpressionTemplates + is false. +
      • +
      • + Type bool if the operator + is a comparison operator. +
      • +

      Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative @@ -393,8 +428,8 @@ swap -

      template <class Backend>
      -void swap(mp_number<Backend>& a, mp_number<Backend>& b);
      +
      template <class Backend, ExpressionTemplates>
      +void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
       

      Swaps a and b. @@ -404,12 +439,12 @@ Iostream Support -

      template <class Backend>
      -std::ostream& operator << (std::ostream& os, const mp_number<Backend>& r);
      -template <class Backend>
      +
      template <class Backend, bool ExpressionTemplates>
      +std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
      +template <class Unspecified...>
       std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
      -template <class Backend>
      -inline std::istream& operator >> (std::istream& is, mp_number<Backend>& r)
      +template <class Backend, bool ExpressionTemplates>
      +inline std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r)
       

      These operators provided formatted input-output operations on mp_number types, and expression templates @@ -460,8 +495,9 @@

      These functions all behave exactly as their standard library counterparts do: their argument is either an instance of mp_number - or an expression template derived from it; their return value is always an - expression template. + or an expression template derived from it; If the argument is of type mp_number<Backend, false> + then that is also the return type, otherwise the return type is an expression + template.

      These functions are normally implemented by the Backend type. However, default @@ -541,8 +577,8 @@

      namespace std{
       
      -template <class Backend>
      -struct numeric_limits<boost::multiprecision<Backend> >
      +template <class Backend, ExpressionTemplates>
      +struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
       {
          /* Usual members here */
       };
      diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html
      index 896c5a8d..cb05f329 100644
      --- a/doc/html/boost_multiprecision/tut.html
      +++ b/doc/html/boost_multiprecision/tut.html
      @@ -19,7 +19,7 @@
       

    diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index c59d3f9a..e0b55bd3 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -7,7 +7,7 @@ - +

    @@ -130,12 +130,12 @@
    + + + + + + + +

    - fixed_int + cpp_int

    - boost/multiprecision/fixed_int.hpp + boost/multiprecision/cpp_int.hpp

    @@ -150,7 +150,8 @@

    - Boost licenced fixed precision modular arithmetic integer. + Very versatile, Boost licenced, all C++ integer type which support + both arbitrary precision and fixed precision integer types.

    @@ -336,47 +337,83 @@ { std::cout << e.what() << std::endl; } -

    - fixed_int + cpp_int
    namespace boost{ namespace multiprecision{
     
    -template <unsigned Digits, bool Signed>
    -class fixed_int;
    +typedef unspecified-type limb_type;
     
    -typedef mp_number<fixed_int<128, false> > mp_uint128_t;
    -typedef mp_number<fixed_int<256, false> > mp_uint256_t;
    -typedef mp_number<fixed_int<512, false> > mp_uint512_t;
    +template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    +class cpp_int_backend;
     
    -typedef mp_number<fixed_int<128, true> > mp_int128_t;
    -typedef mp_number<fixed_int<256, true> > mp_int256_t;
    -typedef mp_number<fixed_int<512, true> > mp_int512_t;
    +typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    +
    +// Fixed precision unsigned types:
    +typedef mp_number<cpp_int_backend<128, false, void> >   mp_uint128_t;
    +typedef mp_number<cpp_int_backend<256, false, void> >   mp_uint256_t;
    +typedef mp_number<cpp_int_backend<512, false, void> >   mp_uint512_t;
    +
    +// Fixed precision signed types:
    +typedef mp_number<cpp_int_backend<128, true, void> >    mp_int128_t;
    +typedef mp_number<cpp_int_backend<256, true, void> >    mp_int256_t;
    +typedef mp_number<cpp_int_backend<512, true, void> >    mp_int512_t;
     
     }} // namespaces
     

    - The fixed_int backend is - used via one of the typedefs boost::multiprecision::mp_uint128_t, - boost::multiprecision::mp_uint256_t, boost::multiprecision::mp_uint512_t, - boost::multiprecision::mp_int128_t, boost::multiprecision::mp_int256_t - or boost::multiprecision::mp_int512_t. It provides both signed and - unsigned integer types with a fixed precision and modular arithmetic with - a 2's complement representation for negative values. In other words it's - designed to work just like a typical built in integer type, but with larger - precision. + The cpp_int_backend type + is used via one of the typedefs boost::multiprecision::cpp_int, + boost::multiprecision::mp_uint128_t, boost::multiprecision::mp_uint256_t, + boost::multiprecision::mp_uint512_t, boost::multiprecision::mp_int128_t, + boost::multiprecision::mp_int256_t or boost::multiprecision::mp_int512_t.

    +

    + This backend is the "Swiss Army Knife" of integer types as it can + represent both fixed and arbitrary precision integer types, and both signed + and unsigned types. There are three template arguments: +

    +
    +

    +
    +
    MinBits
    +

    + Determines the number of Bits to store directly within the object before + resorting to dynamic memory allocation. When zero, this field is determined + automatically based on how many bits can be stored in union with the + dynamic storage header: setting a larger value may improve performance + as larger integer values will be stored internally before memory allocation + is required. When the Allocator parameter is type void, + then this field determines the total number of bits in the resulting + fixed precision type. +

    +
    Signed
    +

    + Determines whether the resulting type is signed or not. Note that for + arbitrary precision types (where the Allocator parameter is non-void), + then this parameter must be true. + For fixed precision types then this type may be either true (type is signed), or false (type is unsigned). +

    +
    Allocator
    +

    + The allocator to use for dymamic memory allocation, or type void if this is to be a fixed precision + type. +

    +
    +

    Things you should know when using this type:

    • - Default constructed fixed_int's - have indeterminate value - just like normal built in integers. + Default constructed cpp_int_backend's + have the value zero.
    • Division by zero results in a std::runtime_error @@ -387,9 +424,26 @@ results in a std::runtime_error being thrown.
    • - Since the precision of fixed_int - is necessarily limited, care should be taken to avoid numeric overflow - when using this type unless you actually want modulo-arithmetic behavior. + Since the precision of cpp_int_backend + is necessarily limited when the allocator parameter is void, care should + be taken to avoid numeric overflow when using this type unless you actually + want modulo-arithmetic behavior. +
    • +
    • + The type uses a sign-magnitude representation internally, so type mp_int128_t has 128-bits of precision + plus an extra sign bit. In this respect the behaviour of these types + differs from built-in 2's complement types. In might be tempting to use + a 127-bit type instead, and indeed this does work, but behaviour is still + slightly different from a 2's complement built-in type as the min and + max values are identical (apart from the sign), where as they differ + by one for a true 2's complement type. That said it should be noted that + there's no requirement for built-in types to be 2's complement either + - it's simply that this is the most common format by far. +
    • +
    • + Attempting to print negative values as either an Octal or Hexadecimal + string results in a std::runtime_error + being thrown, this is a direct consequence of the sign-magnitude representation.
    @@ -398,20 +452,24 @@

    -
    #include <boost/multiprecision/fixed_int.hpp>
    +
    #include <boost/multiprecision/cpp_int.hpp>
     
     using namespace boost::multiprecision;
     
     mp_int128_t v = 1;
     
    -// Do some arithmetic:
    +// Do some fixed precision arithmetic:
     for(unsigned i = 1; i <= 20; ++i)
        v *= i;
     
     std::cout << v << std::endl; // prints 20!
    -v = -v;
    -std::cout << std::hex << v << std::endl; // prints 2's complement representation
     
    +// Try again at arbitrary precision:
    +cpp_int u = 1;
    +for(unsigned i = 1; i <= 100; ++i)
    +   u *= i;
    +
    +std::cout << u << std::endl; // prints 100!
     

    diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 13d4cbb0..505e9393 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -6,7 +6,7 @@ - + @@ -96,6 +96,38 @@
    +

    + cpp_rational +

    +
    +

    + boost/multiprecision/cpp_int.hpp +

    +
    +

    + 2 +

    +
    +

    + None +

    +
    +

    + An all C++ Boost-licenced implementation. +

    +
    +

    + Slower than GMP. +

    +

    tommath_rational @@ -229,6 +261,10 @@ mp_number<gmp_int>. +

    + There is also a two-argument constructor that accepts a numerator and denominator + (both of type mp_number<gmp_int>). +

    There are also non-member functions:

    @@ -298,6 +334,81 @@

    + cpp_rational +
    +
    namespace boost{ namespace multiprecision{
    +
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +
    +typedef mp_number<cpp_rational_backend>         cpp_rational;
    +
    +}} // namespaces
    +
    +

    + The cpp_rational_backend + type is used via the typedef boost::multiprecision::cpp_rational. + It provides a rational number type that is a drop-in replacement for the + native C++ number types, but with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of cpp_rational are copy + constructible and assignable from type cpp_int. +

    +

    + There is also a two argument constructor that accepts a numerator and denominator: + both of type cpp_int. +

    +

    + There are also non-member functions: +

    +
    cpp_int numerator(const cpp_rational&);
    +cpp_int denominator(const cpp_rational&);
    +
    +

    + which return the numerator and denominator of the number. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed cpp_rational's + have the value zero. +
    • +
    • + Division by zero results in a std::rumtime_error + being thrown. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +cpp_rational v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +v /= 10;
    +
    +std::cout << v << std::endl; // prints 1000! / 10
    +std::cout << numerator(v) << std::endl;
    +std::cout << denominator(v) << std::endl;
    +
    +cpp_rational w(2, 3);  // component wise constructor
    +std::cout << w << std::endl; // prints 2/3
    +
    +

    +

    +
    + tommath_rational
    namespace boost{ namespace multiprecision{
    @@ -351,8 +462,8 @@
               
     
     
    - - Example: + + Example:

    @@ -373,12 +484,11 @@ mp_rational w(2, 3); // Component wise constructor std::cout << w << std::endl; // prints 2/3 -

    - + Use With Boost.Rational
    @@ -391,7 +501,7 @@ expression templates in mp_number.

    - + rational_adapter
    namespace boost{ namespace multiprecision{
    diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html
    index fee37a92..fe118cb9 100644
    --- a/doc/html/boost_multiprecision/tut/reals.html
    +++ b/doc/html/boost_multiprecision/tut/reals.html
    @@ -1,7 +1,7 @@
     
     
     
    -Real Numbers
    +Floating Point Numbers
     
     
     
    @@ -15,10 +15,10 @@
     
     

    - The following backends provide real number arithmetic: + The following backends provide floating point arithmetic:

    diff --git a/doc/html/index.html b/doc/html/index.html index 19da3604..1d74c1b0 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -31,7 +31,7 @@
    Tutorial
    Integer Types
    -
    Real Numbers
    +
    Floating Point Numbers
    Rational Number Types
    Reference
    @@ -56,7 +56,7 @@
    - +

    Last revised: February 15, 2012 at 18:08:37 GMT

    Last revised: March 13, 2012 at 19:12:03 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 52f85764..7b7ee9ff 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -306,14 +306,14 @@ as a result performing formatted output on this type when the argument is negati typedef mp_number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef mp_number > mp_uint128_t; - typedef mp_number > mp_uint256_t; - typedef mp_number > mp_uint512_t; + typedef mp_number > mp_uint128_t; + typedef mp_number > mp_uint256_t; + typedef mp_number > mp_uint512_t; // Fixed precision signed types: - typedef mp_number > mp_int128_t; - typedef mp_number > mp_int256_t; - typedef mp_number > mp_int512_t; + typedef mp_number > mp_int128_t; + typedef mp_number > mp_int256_t; + typedef mp_number > mp_int512_t; }} // namespaces @@ -352,6 +352,8 @@ In this respect the behaviour of these types differs from built-in 2's complemen as the min and max values are identical (apart from the sign), where as they differ by one for a true 2's complement type. That said it should be noted that there's no requirement for built-in types to be 2's complement either - it's simply that this is the most common format by far. +* Attempting to print negative values as either an Octal or Hexadecimal string results in a `std::runtime_error` being thrown, +this is a direct consequence of the sign-magnitude representation. [h5 Example:] @@ -516,8 +518,8 @@ The following backends provide rational number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] -[[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licenced implementation.][[Slower than [gmp].]] -[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][libtommath][All C/C++ implementation that's Boost Software Licence compatible.] +[[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licenced implementation.][Slower than [gmp].]] +[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][libtommath][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] [[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger backend type to be used as a rational type.][Requires an underlying integer backend type.]] [[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] @@ -541,6 +543,8 @@ and assignable from: * The [gmp] native types: `mpz_t`, `mpq_t`. * `mp_number`. +There is also a two-argument constructor that accepts a numerator and denominator (both of type `mp_number`). + There are also non-member functions: mpz_int numerator(const mpq_rational&); @@ -578,6 +582,8 @@ a rational number type that is a drop-in replacement for the native C++ number t As well as the usual conversions from arithmetic and string types, instances of `cpp_rational` are copy constructible and assignable from type `cpp_int`. +There is also a two argument constructor that accepts a numerator and denominator: both of type `cpp_int`. + There are also non-member functions: cpp_int numerator(const cpp_rational&); @@ -1029,7 +1035,7 @@ this library support all of the iostream formatting flags, field width and preci ``['unmentionable-expression-template-type]`` atan2 (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); These functions all behave exactly as their standard library counterparts do: their argument is either an instance of `mp_number` or -an expression template derived from it; If the argument is of type `mp_number,Backend, false>` then that is also the return type, +an expression template derived from it; If the argument is of type `mp_number` then that is also the return type, otherwise the return type is an expression template. These functions are normally implemented by the Backend type. However, default versions are provided for Backend types that diff --git a/example/cpp_int_snips.cpp b/example/cpp_int_snips.cpp index eb2827c7..942f27d6 100644 --- a/example/cpp_int_snips.cpp +++ b/example/cpp_int_snips.cpp @@ -33,7 +33,7 @@ void t1() void t3() { - //[cpp_rat_eg + //[cpp_rational_eg //=#include using namespace boost::multiprecision; diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index b087fe5f..60d9cc50 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2141,6 +2141,17 @@ typedef mp_number > cpp_int; typedef rational_adapter > cpp_rational_backend; typedef mp_number cpp_rational; +// Fixed precision unsigned types: +typedef mp_number > mp_uint128_t; +typedef mp_number > mp_uint256_t; +typedef mp_number > mp_uint512_t; + +// Fixed precision signed types: +typedef mp_number > mp_int128_t; +typedef mp_number > mp_int256_t; +typedef mp_number > mp_int512_t; + + }} // namespaces diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index 37c1017c..54fd7e52 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -50,7 +50,7 @@ exe performance_test : performance_test.cpp /boost/system//boost_system [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] [ check-target-builds ../config//has_tommath : TEST_TOMMATH $(TOMMATH) : ] TEST_CPP_DEC_FLOAT - TEST_FIXED_INT + TEST_CPP_INT ; exe sf_performance : sf_performance.cpp /boost/system//boost_system diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 7a541b02..6fc2d9cf 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -12,7 +12,7 @@ #if !defined(TEST_MPF) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_FIXED_INT) && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_RATIONAL) + && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_RATIONAL) # define TEST_MPF # define TEST_MPZ # define TEST_MPQ @@ -20,7 +20,6 @@ # define TEST_CPP_DEC_FLOAT # define TEST_MPQ # define TEST_TOMMATH -# define TEST_FIXED_INT # define TEST_CPP_INT # define TEST_CPP_INT_RATIONAL @@ -47,9 +46,6 @@ #include #include #endif -#if defined(TEST_FIXED_INT) -#include -#endif #if defined(TEST_CPP_INT) #include #endif @@ -619,12 +615,6 @@ int main() test("mp_rational", 1024); */ #endif -#ifdef TEST_FIXED_INT - test("fixed_int", 128); - test("fixed_int", 256); - test("fixed_int", 512); - test > >("fixed_int", 1024); -#endif #ifdef TEST_CPP_DEC_FLOAT test("cpp_dec_float", 50); test("cpp_dec_float", 100); diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index ea66d0cf..e22c8a1c 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -18,7 +18,7 @@ #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_BR) + && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_BR) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -28,8 +28,6 @@ # define TEST_CPP_DEC_FLOAT # define TEST_MPQ # define TEST_TOMMATH -# define TEST_FIXED_INT1 -# define TEST_FIXED_INT2 # define TEST_CPP_INT # define TEST_CPP_INT_BR @@ -59,9 +57,6 @@ #include #include #endif -#if defined(TEST_FIXED_INT1) || defined(TEST_FIXED_INT2) -#include -#endif #if defined(TEST_CPP_INT) || defined(TEST_CPP_INT_BR) #include #endif @@ -1030,26 +1025,10 @@ int main() #ifdef TEST_MPZ_BOOST_RATIONAL test >(); #endif -#ifdef TEST_FIXED_INT1 - test > >(); - test(); - test(); - test > >(); -#endif -#ifdef TEST_FIXED_INT2 - // - // Can't test 64-bit signed ints - they don't have enough bits - // to interoperate with uint64_t without loss: - // - //test(); - test(); - test(); - test > >(); -#endif #ifdef TEST_CPP_INT test(); - test > >(); - test > >(); + test(); + test(); test(); test, false> >(); #endif diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 704ec26c..9fac176d 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -9,11 +9,9 @@ # define _SCL_SECURE_NO_WARNINGS #endif -#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_FIXED_INT1) && !defined(TEST_FIXED_INT2) && !defined(TEST_CPP_INT) +#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) # define TEST_TOMMATH # define TEST_MPZ -# define TEST_FIXED_INT1 -# define TEST_FIXED_INT2 # define TEST_CPP_INT #ifdef _MSC_VER @@ -31,9 +29,6 @@ #if defined(TEST_TOMMATH) #include #endif -#if defined(TEST_FIXED_INT1) || defined(TEST_FIXED_INT2) -#include -#endif #ifdef TEST_CPP_INT #include #endif @@ -127,20 +122,6 @@ int main() #ifdef TEST_TOMMATH test_round_trip(); #endif -#ifdef TEST_FIXED_INT1 - test_round_trip > >(); - test_round_trip(); - test_round_trip(); - test_round_trip > >(); - test_round_trip > >(); -#endif -#ifdef TEST_FIXED_INT2 - test_round_trip > >(); - test_round_trip(); - test_round_trip(); - test_round_trip > >(); - test_round_trip > >(); -#endif #ifdef TEST_CPP_INT test_round_trip > >(); test_round_trip > >(); diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 3d988fc1..bb2d64c6 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -11,7 +11,7 @@ #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && \ - !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_FIXED_INT) + !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -21,7 +21,6 @@ # define TEST_CPP_DEC_FLOAT # define TEST_MPQ # define TEST_TOMMATH -# define TEST_FIXED_INT # define TEST_CPP_INT #ifdef _MSC_VER @@ -48,9 +47,6 @@ #ifdef TEST_TOMMATH #include #endif -#ifdef TEST_FIXED_INT -#include -#endif #ifdef TEST_CPP_INT #include #endif @@ -226,16 +222,10 @@ int main() #ifdef TEST_TOMMATH test(); #endif -#ifdef TEST_FIXED_INT - test(); - test(); - test(); - test(); -#endif #ifdef TEST_CPP_INT test(); - test > >(); - test > >(); + test(); + test(); #endif return boost::report_errors(); } From fe94baae5077a8b30b696571258ef47ebbef1c68 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 15 Mar 2012 10:47:48 +0000 Subject: [PATCH 133/256] Allow construction/assignment from expression templates that yield a different type to *this. [SVN r77340] --- include/boost/multiprecision/mp_number.hpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 2c139de8..33c3c9ba 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -77,7 +77,8 @@ public: template mp_number& operator=(const detail::mp_exp& e) { - do_assign(e, tag()); + typedef typename is_same::result_type>::type tag_type; + do_assign(e, tag_type()); return *this; } @@ -121,7 +122,7 @@ public: template mp_number(const detail::mp_exp& e) { - do_assign(e, tag()); + *this = e; } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -538,6 +539,22 @@ public: return m_backend; } private: + template + void do_assign(const detail::mp_exp& e, const mpl::true_&) + { + do_assign(e, tag()); + } + template + void do_assign(const detail::mp_exp& e, const mpl::false_&) + { + // The result of the expression isn't the same type as this - + // create a temporary result and assign it to *this: + typedef typename detail::mp_exp::result_type temp_type; + temp_type t(e); + *this = t; + } + + template void check_shift_range(V val, const mpl::true_&, const mpl::true_&) { From 0f6a527ceee411617ac98ad6b8cce6cbb9941ad5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 15 Mar 2012 18:41:00 +0000 Subject: [PATCH 134/256] Add random number support. [SVN r77344] --- doc/html/boost_multiprecision/ref.html | 6 +- doc/html/boost_multiprecision/tut.html | 1 + .../boost_multiprecision/tut/rational.html | 6 +- doc/html/index.html | 3 +- doc/multiprecision.qbk | 32 + example/random_snips.cpp | 118 +++ include/boost/multiprecision/random.hpp | 559 ++++++++++++ performance/performance_test-gcc-linux.log | 841 +++++++++++++++--- 8 files changed, 1436 insertions(+), 130 deletions(-) create mode 100644 example/random_snips.cpp create mode 100644 include/boost/multiprecision/random.hpp diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index d909f999..d975490b 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -32,7 +32,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index cb05f329..0ac5b703 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -21,6 +21,7 @@
    Integer Types
    Floating Point Numbers
    Rational Number Types
    +
    Generating Random Numbers

    In order to use this library you need to make two choices: what kind of number diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 505e9393..3c2cefcf 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -7,11 +7,11 @@ - +

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -539,7 +539,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/index.html b/doc/html/index.html index 1d74c1b0..5d80f737 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -33,6 +33,7 @@
    Integer Types
    Floating Point Numbers
    Rational Number Types
    +
    Generating Random Numbers
    Reference
    @@ -56,7 +57,7 @@

    - +

    Last revised: March 13, 2012 at 19:12:03 GMT

    Last revised: March 15, 2012 at 18:34:52 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 7b7ee9ff..fe1cd9d4 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -23,6 +23,7 @@ [import ../example/cpp_dec_float_snips.cpp] [import ../example/tommath_snips.cpp] [import ../example/cpp_int_snips.cpp] +[import ../example/random_snips.cpp] [template mpfr[] [@http://www.mpfr.org MPFR]] [template gmp[] [@http://gmplib.org GMP]] @@ -664,6 +665,37 @@ So for example, given an integer backend type `MyIntegerBackend`, the use would assert(i == 2); +[endsect] + +[section:random Generating Random Numbers] + +Random numbers are generated in conjunction with Boost.Random. However, since Boost.Random is unaware +of arbitrary precision numbers, it's necessary to include the header: + + #include + +In order to act as a bridge between the two libraries. + +Integers with /N/ random bits are generated using `independent_bits_engine`: + +[random_eg1] + +Alternatively we can generate integers in a given range using `uniform_int_distribution`, this will +invoke the underlying engine multiple times to build up the required number of bits in the result: + +[random_eg2] + +Floating point values in \[0,1) are generated using `uniform_01`, the trick here is to ensure +that the underlying generator produces as many random bits as there are digits in the floating +point type. As above `independent_bits_engine` can be used for this purpose, note that we also have to +convert decimal digits (in the floating point type) to bits (in the random number generator): + +[random_eg3] + +Finally, we can modify the above example to produce numbers distributed according to some distribution: + +[random_eg4] + [endsect] [endsect] diff --git a/example/random_snips.cpp b/example/random_snips.cpp new file mode 100644 index 00000000..8880f06e --- /dev/null +++ b/example/random_snips.cpp @@ -0,0 +1,118 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include +#include +#include + +void t1() +{ + //[random_eg1 + //=#include + //=#include + + using namespace boost::multiprecision; + using namespace boost::random; + + // + // Declare our random number generator type, the underlying generator + // is the Mersenne twister mt19937 engine, and 256 bits are generated: + // + typedef independent_bits_engine generator_type; + generator_type gen; + // + // Generate some values: + // + std::cout << std::hex << std::showbase; + for(unsigned i = 0; i < 10; ++i) + std::cout << gen() << std::endl; + //] +} + +void t2() +{ + //[random_eg2 + //=#include + //=#include + + using namespace boost::multiprecision; + using namespace boost::random; + + // + // Generate integers in a given range using uniform_int, + // the underlying generator is invoked multiple times + // to generate enough bits: + // + mt19937 mt; + uniform_int_distribution ui(0, mpz_int(1) << 256); + // + // Generate the numbers: + // + std::cout << std::hex << std::showbase; + for(unsigned i = 0; i < 10; ++i) + std::cout << ui(mt) << std::endl; + + //] +} + +void t3() +{ + //[random_eg3 + //=#include + //=#include + + using namespace boost::multiprecision; + using namespace boost::random; + // + // We need an underlying generator with at least as many bits as the + // floating point type to generate numbers in [0, 1) with all the bits + // in the floating point type randomly filled: + // + uniform_01 uf; + independent_bits_engine gen; + // + // Generate the values: + // + std::cout << std::setprecision(50); + for(unsigned i = 0; i < 20; ++i) + std::cout << uf(gen) << std::endl; + //] +} + +void t4() +{ + //[random_eg4 + //=#include + //=#include + + using namespace boost::multiprecision; + using namespace boost::random; + // + // We can repeat the above example, with other distributions: + // + uniform_real_distribution ur(-20, 20); + gamma_distribution gd(20); + independent_bits_engine gen; + // + // Generate some values: + // + std::cout << std::setprecision(50); + for(unsigned i = 0; i < 20; ++i) + std::cout << ur(gen) << std::endl; + for(unsigned i = 0; i < 20; ++i) + std::cout << gd(gen) << std::endl; + //] +} + +int main() +{ + t1(); + t2(); + t3(); + t4(); + return 0; +} + diff --git a/include/boost/multiprecision/random.hpp b/include/boost/multiprecision/random.hpp new file mode 100644 index 00000000..096ab8f1 --- /dev/null +++ b/include/boost/multiprecision/random.hpp @@ -0,0 +1,559 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_RANDOM_HPP +#define BOOST_MP_RANDOM_HPP + +#include +#include +#include + +namespace boost{ +namespace random{ +namespace detail{ + +template +struct subtract, true> +{ + typedef boost::multiprecision::mp_number result_type; + result_type operator()(result_type const& x, result_type const& y) { return x - y; } +}; + +} + +template +class independent_bits_engine > +{ +public: + typedef Engine base_type; + typedef boost::multiprecision::mp_number result_type; + + static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () + { return 0; } + // This is the only function we modify compared to the primary template: + static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () + { return (result_type(1) << w) - 1; } + + independent_bits_engine() { } + + BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(independent_bits_engine, + result_type, seed_arg) + { + _base.seed(seed_arg); + } + + BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(independent_bits_engine, + SeedSeq, seq) + { _base.seed(seq); } + + independent_bits_engine(const base_type& base_arg) : _base(base_arg) {} + + template + independent_bits_engine(It& first, It last) : _base(first, last) { } + + void seed() { _base.seed(); } + + BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(independent_bits_engine, + result_type, seed_arg) + { _base.seed(seed_arg); } + + BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(independent_bits_engine, + SeedSeq, seq) + { _base.seed(seq); } + + template void seed(It& first, It last) + { _base.seed(first, last); } + + result_type operator()() + { + // While it may seem wasteful to recalculate this + // every time, both msvc and gcc can propagate + // constants, resolving this at compile time. + base_unsigned range = + detail::subtract()((_base.max)(), (_base.min)()); + std::size_t m = + (range == (std::numeric_limits::max)()) ? + std::numeric_limits::digits : + detail::integer_log2(range + 1); + std::size_t n = (w + m - 1) / m; + std::size_t w0, n0; + base_unsigned y0, y1; + base_unsigned y0_mask, y1_mask; + calc_params(n, range, w0, n0, y0, y1, y0_mask, y1_mask); + if(base_unsigned(range - y0 + 1) > y0 / n) { + // increment n and try again. + ++n; + calc_params(n, range, w0, n0, y0, y1, y0_mask, y1_mask); + } + + BOOST_ASSERT(n0*w0 + (n - n0)*(w0 + 1) == w); + + result_type S = 0; + for(std::size_t k = 0; k < n0; ++k) { + base_unsigned u; + do { + u = detail::subtract()(_base(), (_base.min)()); + } while(u > base_unsigned(y0 - 1)); + S = (S << w0) + (u & y0_mask); + } + for(std::size_t k = 0; k < (n - n0); ++k) { + base_unsigned u; + do { + u = detail::subtract()(_base(), (_base.min)()); + } while(u > base_unsigned(y1 - 1)); + S = (S << (w0 + 1)) + (u & y1_mask); + } + return S; + } + + /** Fills a range with random values */ + template + void generate(Iter first, Iter last) + { detail::generate_from_int(*this, first, last); } + + /** Advances the state of the generator by @c z. */ + void discard(boost::uintmax_t z) + { + for(boost::uintmax_t i = 0; i < z; ++i) { + (*this)(); + } + } + + const base_type& base() const { return _base; } + + /** + * Writes the textual representation if the generator to a @c std::ostream. + * The textual representation of the engine is the textual representation + * of the base engine. + */ + BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, independent_bits_engine, r) + { + os << r._base; + return os; + } + + /** + * Reads the state of an @c independent_bits_engine from a + * @c std::istream. + */ + BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, independent_bits_engine, r) + { + is >> r._base; + return is; + } + + /** + * Returns: true iff the two @c independent_bits_engines will + * produce the same sequence of values. + */ + BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(independent_bits_engine, x, y) + { return x._base == y._base; } + /** + * Returns: true iff the two @c independent_bits_engines will + * produce different sequences of values. + */ + BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(independent_bits_engine) + +private: + + /// \cond show_private + typedef typename base_type::result_type base_result; + typedef typename make_unsigned::type base_unsigned; + + void calc_params( + std::size_t n, base_unsigned range, + std::size_t& w0, std::size_t& n0, + base_unsigned& y0, base_unsigned& y1, + base_unsigned& y0_mask, base_unsigned& y1_mask) + { + BOOST_ASSERT(w >= n); + w0 = w/n; + n0 = n - w % n; + y0_mask = (base_unsigned(2) << (w0 - 1)) - 1; + y1_mask = (y0_mask << 1) | 1; + y0 = (range + 1) & ~y0_mask; + y1 = (range + 1) & ~y1_mask; + BOOST_ASSERT(y0 != 0 || base_unsigned(range + 1) == 0); + } + /// \endcond + + Engine _base; +}; + +template +class uniform_smallint > +{ +public: + typedef boost::multiprecision::mp_number input_type; + typedef boost::multiprecision::mp_number result_type; + + class param_type + { + public: + + typedef uniform_smallint distribution_type; + + /** constructs the parameters of a @c uniform_smallint distribution. */ + param_type(result_type const& min_arg = 0, result_type const& max_arg = 9) + : _min(min_arg), _max(max_arg) + { + BOOST_ASSERT(_min <= _max); + } + + /** Returns the minimum value. */ + result_type a() const { return _min; } + /** Returns the maximum value. */ + result_type b() const { return _max; } + + + /** Writes the parameters to a @c std::ostream. */ + BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm) + { + os << parm._min << " " << parm._max; + return os; + } + + /** Reads the parameters from a @c std::istream. */ + BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm) + { + is >> parm._min >> std::ws >> parm._max; + return is; + } + + /** Returns true if the two sets of parameters are equal. */ + BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs) + { return lhs._min == rhs._min && lhs._max == rhs._max; } + + /** Returns true if the two sets of parameters are different. */ + BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type) + + private: + result_type _min; + result_type _max; + }; + + /** + * Constructs a @c uniform_smallint. @c min and @c max are the + * lower and upper bounds of the output range, respectively. + */ + explicit uniform_smallint(result_type const& min_arg = 0, result_type const& max_arg = 9) + : _min(min_arg), _max(max_arg) {} + + /** + * Constructs a @c uniform_smallint from its parameters. + */ + explicit uniform_smallint(const param_type& parm) + : _min(parm.a()), _max(parm.b()) {} + + /** Returns the minimum value of the distribution. */ + result_type a() const { return _min; } + /** Returns the maximum value of the distribution. */ + result_type b() const { return _max; } + /** Returns the minimum value of the distribution. */ + result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; } + /** Returns the maximum value of the distribution. */ + result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; } + + /** Returns the parameters of the distribution. */ + param_type param() const { return param_type(_min, _max); } + /** Sets the parameters of the distribution. */ + void param(const param_type& parm) + { + _min = parm.a(); + _max = parm.b(); + } + + /** + * Effects: Subsequent uses of the distribution do not depend + * on values produced by any engine prior to invoking reset. + */ + void reset() { } + + /** Returns a value uniformly distributed in the range [min(), max()]. */ + template + result_type operator()(Engine& eng) const + { + typedef typename Engine::result_type base_result; + return generate(eng, boost::is_integral()); + } + + /** Returns a value uniformly distributed in the range [param.a(), param.b()]. */ + template + result_type operator()(Engine& eng, const param_type& parm) const + { return uniform_smallint(parm)(eng); } + + /** Writes the distribution to a @c std::ostream. */ + BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, uniform_smallint, ud) + { + os << ud._min << " " << ud._max; + return os; + } + + /** Reads the distribution from a @c std::istream. */ + BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, uniform_smallint, ud) + { + is >> ud._min >> std::ws >> ud._max; + return is; + } + + /** + * Returns true if the two distributions will produce identical + * sequences of values given equal generators. + */ + BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(uniform_smallint, lhs, rhs) + { return lhs._min == rhs._min && lhs._max == rhs._max; } + + /** + * Returns true if the two distributions may produce different + * sequences of values given equal generators. + */ + BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(uniform_smallint) + +private: + + // \cond show_private + template + result_type generate(Engine& eng, boost::mpl::true_) const + { + // equivalent to (eng() - eng.min()) % (_max - _min + 1) + _min, + // but guarantees no overflow. + typedef typename Engine::result_type base_result; + typedef typename boost::make_unsigned::type base_unsigned; + typedef result_type range_type; + range_type range = random::detail::subtract()(_max, _min); + base_unsigned base_range = + random::detail::subtract()((eng.max)(), (eng.min)()); + base_unsigned val = + random::detail::subtract()(eng(), (eng.min)()); + if(range >= base_range) { + return boost::random::detail::add()( + static_cast(val), _min); + } else { + base_unsigned modulus = static_cast(range) + 1; + return boost::random::detail::add()( + static_cast(val % modulus), _min); + } + } + + template + result_type generate(Engine& eng, boost::mpl::false_) const + { + typedef typename Engine::result_type base_result; + typedef result_type range_type; + range_type range = random::detail::subtract()(_max, _min); + base_result val = boost::uniform_01()(eng); + // what is the worst that can possibly happen here? + // base_result may not be able to represent all the values in [0, range] + // exactly. If this happens, it will cause round off error and we + // won't be able to produce all the values in the range. We don't + // care about this because the user has already told us not to by + // using uniform_smallint. However, we do need to be careful + // to clamp the result, or floating point rounding can produce + // an out of range result. + range_type offset = static_cast(val * (range + 1)); + if(offset > range) return _max; + return boost::random::detail::add()(offset , _min); + } + // \endcond + + result_type _min; + result_type _max; +}; + + +namespace detail{ + +template +struct select_uniform_01 > +{ + template + struct apply + { + typedef new_uniform_01 > type; + }; +}; + +template +boost::multiprecision::mp_number + generate_uniform_int( + Engine& eng, const boost::multiprecision::mp_number& min_value, const boost::multiprecision::mp_number& max_value, + boost::mpl::true_ /** is_integral */) +{ + typedef boost::multiprecision::mp_number result_type; + // Since we're using big-numbers, use the result type for all internal calculations: + typedef result_type range_type; + typedef result_type base_result; + typedef result_type base_unsigned; + const range_type range = random::detail::subtract()(max_value, min_value); + const base_result bmin = (eng.min)(); + const base_unsigned brange = + random::detail::subtract()((eng.max)(), (eng.min)()); + + if(range == 0) { + return min_value; + } else if(brange == range) { + // this will probably never happen in real life + // basically nothing to do; just take care we don't overflow / underflow + base_unsigned v = random::detail::subtract()(eng(), bmin); + return random::detail::add()(v, min_value); + } else if(brange < range) { + // use rejection method to handle things like 0..3 --> 0..4 + for(;;) { + // concatenate several invocations of the base RNG + // take extra care to avoid overflows + + // limit == floor((range+1)/(brange+1)) + // Therefore limit*(brange+1) <= range+1 + range_type limit; + if(std::numeric_limits::is_bounded && (range == (std::numeric_limits::max)())) { + limit = range/(range_type(brange)+1); + if(range % (range_type(brange)+1) == range_type(brange)) + ++limit; + } else { + limit = (range+1)/(range_type(brange)+1); + } + + // We consider "result" as expressed to base (brange+1): + // For every power of (brange+1), we determine a random factor + range_type result = range_type(0); + range_type mult = range_type(1); + + // loop invariants: + // result < mult + // mult <= range + while(mult <= limit) { + // Postcondition: result <= range, thus no overflow + // + // limit*(brange+1)<=range+1 def. of limit (1) + // eng()-bmin<=brange eng() post. (2) + // and mult<=limit. loop condition (3) + // Therefore mult*(eng()-bmin+1)<=range+1 by (1),(2),(3) (4) + // Therefore mult*(eng()-bmin)+mult<=range+1 rearranging (4) (5) + // result(random::detail::subtract()(eng(), bmin) * mult); + + // equivalent to (mult * (brange+1)) == range+1, but avoids overflow. + if(mult * range_type(brange) == range - mult + 1) { + // The destination range is an integer power of + // the generator's range. + return(result); + } + + // Postcondition: mult <= range + // + // limit*(brange+1)<=range+1 def. of limit (1) + // mult<=limit loop condition (2) + // Therefore mult*(brange+1)<=range+1 by (1), (2) (3) + // mult*(brange+1)!=range+1 preceding if (4) + // Therefore mult*(brange+1) limit loop condition (1) + // Suppose range/mult >= brange+1 Assumption (2) + // range >= mult*(brange+1) by (2) (3) + // range+1 > mult*(brange+1) by (3) (4) + // range+1 > (limit+1)*(brange+1) by (1), (4) (5) + // (range+1)/(brange+1) > limit+1 by (5) (6) + // limit < floor((range+1)/(brange+1)) by (6) (7) + // limit==floor((range+1)/(brange+1)) def. of limit (8) + // not (2) reductio (9) + // + // loop postcondition: (range/mult)*mult+(mult-1) >= range + // + // (range/mult)*mult + range%mult == range identity (1) + // range%mult < mult def. of % (2) + // (range/mult)*mult+mult > range by (1), (2) (3) + // (range/mult)*mult+(mult-1) >= range by (3) (4) + // + // Note that the maximum value of result at this point is (mult-1), + // so after this final step, we generate numbers that can be + // at least as large as range. We have to really careful to avoid + // overflow in this final addition and in the rejection. Anything + // that overflows is larger than range and can thus be rejected. + + // range/mult < brange+1 -> no endless loop + range_type result_increment = + generate_uniform_int( + eng, + static_cast(0), + static_cast(range/mult), + boost::mpl::true_()); + if(std::numeric_limits::is_bounded && ((std::numeric_limits::max)() / mult < result_increment)) { + // The multiplcation would overflow. Reject immediately. + continue; + } + result_increment *= mult; + // unsigned integers are guaranteed to wrap on overflow. + result += result_increment; + if(result < result_increment) { + // The addition overflowed. Reject. + continue; + } + if(result > range) { + // Too big. Reject. + continue; + } + return random::detail::add()(result, min_value); + } + } else { // brange > range + range_type bucket_size; + // it's safe to add 1 to range, as long as we cast it first, + // because we know that it is less than brange. However, + // we do need to be careful not to cause overflow by adding 1 + // to brange. + if(std::numeric_limits::is_bounded && (brange == (std::numeric_limits::max)())) { + bucket_size = brange / (range+1); + if(brange % (range+1) == range) { + ++bucket_size; + } + } else { + bucket_size = (brange+1) / (range+1); + } + for(;;) { + range_type result = + random::detail::subtract()(eng(), bmin); + result /= bucket_size; + // result and range are non-negative, and result is possibly larger + // than range, so the cast is safe + if(result <= range) + return result + min_value; + } + } +} + +template +inline boost::multiprecision::mp_number + generate_uniform_int(Engine& eng, const boost::multiprecision::mp_number& min_value, const boost::multiprecision::mp_number& max_value) +{ + typedef typename Engine::result_type base_result; + typedef typename mpl::or_, mpl::bool_::value == boost::multiprecision::number_kind_integer> >::type tag_type; + return generate_uniform_int(eng, min_value, max_value, + tag_type()); +} + +} // detail + + +}} // namespaces + +#endif diff --git a/performance/performance_test-gcc-linux.log b/performance/performance_test-gcc-linux.log index 6df495e4..83b15004 100644 --- a/performance/performance_test-gcc-linux.log +++ b/performance/performance_test-gcc-linux.log @@ -1,123 +1,718 @@ -gmp_int 64 + 0.0168163 -gmp_int 64 - 0.0186614 -gmp_int 64 * 0.0117134 -gmp_int 64 / 0.169732 -gmp_int 64 str 0.000328882 -gmp_int 64 +(int)0.00662982 -gmp_int 64 -(int)0.00709197 -gmp_int 64 *(int)0.0088044 -gmp_int 64 /(int)0.0460225 -gmp_int 64 % 0.158198 -gmp_int 64 | 0.00933212 -gmp_int 64 & 0.00941153 -gmp_int 64 ^ 0.0100066 -gmp_int 64 << 0.00917854 -gmp_int 64 >> 0.00925083 -gmp_int 64 %(int)0.0280589 -gmp_int 64 |(int)0.0400043 -gmp_int 64 &(int)0.0417312 -gmp_int 64 ^(int)0.040751 -gmp_int 64 gcd 0.176467 -gmp_int 128 + 0.0178204 -gmp_int 128 - 0.0189183 -gmp_int 128 * 0.0162167 -gmp_int 128 / 0.188989 -gmp_int 128 str 0.00036981 -gmp_int 128 +(int)0.00848453 -gmp_int 128 -(int)0.00871131 -gmp_int 128 *(int)0.0113603 -gmp_int 128 /(int)0.0532432 -gmp_int 128 % 0.156838 -gmp_int 128 | 0.0106143 -gmp_int 128 & 0.0112662 -gmp_int 128 ^ 0.0113 -gmp_int 128 << 0.0100873 -gmp_int 128 >> 0.0078452 -gmp_int 128 %(int)0.0347183 -gmp_int 128 |(int)0.0411793 -gmp_int 128 &(int)0.0429282 -gmp_int 128 ^(int)0.0423867 -gmp_int 128 gcd 0.433341 -gmp_int 256 + 0.0227099 -gmp_int 256 - 0.0253696 -gmp_int 256 * 0.0419669 -gmp_int 256 / 0.231062 -gmp_int 256 str 0.00059791 -gmp_int 256 +(int)0.011126 -gmp_int 256 -(int)0.0118753 -gmp_int 256 *(int)0.0134931 -gmp_int 256 /(int)0.0656163 -gmp_int 256 % 0.188537 -gmp_int 256 | 0.0128192 -gmp_int 256 & 0.0127349 -gmp_int 256 ^ 0.0133922 -gmp_int 256 << 0.0118988 -gmp_int 256 >> 0.00811877 -gmp_int 256 %(int)0.0471091 -gmp_int 256 |(int)0.042799 -gmp_int 256 &(int)0.0458343 -gmp_int 256 ^(int)0.043002 -gmp_int 256 gcd 2.06647 -gmp_int 512 + 0.0273102 -gmp_int 512 - 0.0317526 -gmp_int 512 * 0.0977565 -gmp_int 512 / 0.271981 -gmp_int 512 str 0.0012591 -gmp_int 512 +(int)0.0141478 -gmp_int 512 -(int)0.0148129 -gmp_int 512 *(int)0.0180329 -gmp_int 512 /(int)0.0904515 -gmp_int 512 % 0.22083 -gmp_int 512 | 0.020649 -gmp_int 512 & 0.0165353 -gmp_int 512 ^ 0.0222088 -gmp_int 512 << 0.0146297 -gmp_int 512 >> 0.0098618 -gmp_int 512 %(int)0.0601431 -gmp_int 512 |(int)0.0461385 -gmp_int 512 &(int)0.0469244 -gmp_int 512 ^(int)0.0460041 -gmp_int 512 gcd 4.68119 -gmp_int 1024 + 0.0392733 -gmp_int 1024 - 0.0423657 -gmp_int 1024 * 0.314956 -gmp_int 1024 / 0.351788 -gmp_int 1024 str 0.00268616 -gmp_int 1024 +(int)0.0187891 -gmp_int 1024 -(int)0.0194118 -gmp_int 1024 *(int)0.0259443 -gmp_int 1024 /(int)0.140347 -gmp_int 1024 % 0.283657 -gmp_int 1024 | 0.0242247 -gmp_int 1024 & 0.023592 -gmp_int 1024 ^ 0.0249 -gmp_int 1024 << 0.0204313 -gmp_int 1024 >> 0.0128395 -gmp_int 1024 %(int)0.0758694 -gmp_int 1024 |(int)0.0495895 -gmp_int 1024 &(int)0.0506897 -gmp_int 1024 ^(int)0.049433 -gmp_int 1024 gcd 10.1293 -cpp_int(fixed) 128 + 0.0181676 -cpp_int(fixed) 128 - 0.0184343 -cpp_int(fixed) 128 * 0.014376 -cpp_int(fixed) 128 / 0.202558 -cpp_int(fixed) 128 str 0.000652736 -cpp_int(fixed) 128 +(int)0.00948536 -cpp_int(fixed) 128 -(int)0.00886251 -cpp_int(fixed) 128 *(int)0.0173963 -cpp_int(fixed) 128 /(int)0.106251 -cpp_int(fixed) 128 % 0.20362 -cpp_int(fixed) 128 | 0.0137212 -cpp_int(fixed) 128 & 0.0144157 -cpp_int(fixed) 128 ^ 0.0137219 -cpp_int(fixed) 128 << 0.0125872 -cpp_int(fixed) 128 >> 0.00905059 -cpp_int(fixed) 128 %(int)0.109447 -cpp_int(fixed) 128 |(int)0.014533 -cpp_int(fixed) 128 &(int)0.0162133 -cpp_int(fixed) 128 ^(int)0.0131589 -cpp_int(fixed) 128 gcd 2.86508 -cpp_int(fixed) 256 + 0.0216349 -cpp_int(fixed) 256 - 0.0208758 -cpp_int(fixed) 256 * 0.0210219 +gmp_float 50 + 0.0180885 +gmp_float 50 - 0.0227712 +gmp_float 50 * 0.0567584 +gmp_float 50 / 0.289062 +gmp_float 50 str 0.00354863 +gmp_float 50 +(int)0.0129337 +gmp_float 50 -(int)0.0256267 +gmp_float 50 *(int)0.0197258 +gmp_float 50 /(int)0.087785 +gmp_float 100 + 0.0196977 +gmp_float 100 - 0.024745 +gmp_float 100 * 0.0972 +gmp_float 100 / 0.393792 +gmp_float 100 str 0.00528245 +gmp_float 100 +(int)0.0154802 +gmp_float 100 -(int)0.0242376 +gmp_float 100 *(int)0.0251239 +gmp_float 100 /(int)0.100588 +gmp_float 500 + 0.034133 +gmp_float 500 - 0.0411447 +gmp_float 500 * 0.938779 +gmp_float 500 / 1.5973 +gmp_float 500 str 0.0406575 +gmp_float 500 +(int)0.0220839 +gmp_float 500 -(int)0.0310849 +gmp_float 500 *(int)0.046899 +gmp_float 500 /(int)0.240511 +gmp_int 128 + 0.0236625 +gmp_int 128 - 0.0255431 +gmp_int 128 * 0.0164612 +gmp_int 128 / 0.20205 +gmp_int 128 str 0.000397397 +gmp_int 128 +(int)0.00907029 +gmp_int 128 -(int)0.0120936 +gmp_int 128 *(int)0.0139764 +gmp_int 128 /(int)0.061181 +gmp_int 128 % 0.167724 +gmp_int 128 | 0.0126627 +gmp_int 128 & 0.0129377 +gmp_int 128 ^ 0.0136018 +gmp_int 128 << 0.0109566 +gmp_int 128 >> 0.0107283 +gmp_int 128 %(int)0.0408971 +gmp_int 128 |(int)0.0463637 +gmp_int 128 &(int)0.0502028 +gmp_int 128 ^(int)0.047593 +gmp_int 128 gcd 0.452707 +gmp_int 256 + 0.0257277 +gmp_int 256 - 0.0314085 +gmp_int 256 * 0.0495293 +gmp_int 256 / 0.242695 +gmp_int 256 str 0.000617745 +gmp_int 256 +(int)0.0129046 +gmp_int 256 -(int)0.0163165 +gmp_int 256 *(int)0.0153128 +gmp_int 256 /(int)0.0730963 +gmp_int 256 % 0.203102 +gmp_int 256 | 0.0149383 +gmp_int 256 & 0.0170717 +gmp_int 256 ^ 0.0160796 +gmp_int 256 << 0.0146023 +gmp_int 256 >> 0.010293 +gmp_int 256 %(int)0.0525884 +gmp_int 256 |(int)0.0501017 +gmp_int 256 &(int)0.0508389 +gmp_int 256 ^(int)0.0498771 +gmp_int 256 gcd 2.17179 +gmp_int 512 + 0.0283556 +gmp_int 512 - 0.0398509 +gmp_int 512 * 0.104633 +gmp_int 512 / 0.294206 +gmp_int 512 str 0.00125749 +gmp_int 512 +(int)0.0156938 +gmp_int 512 -(int)0.0204795 +gmp_int 512 *(int)0.0190714 +gmp_int 512 /(int)0.09638 +gmp_int 512 % 0.23687 +gmp_int 512 | 0.0244134 +gmp_int 512 & 0.0209509 +gmp_int 512 ^ 0.0266707 +gmp_int 512 << 0.0178981 +gmp_int 512 >> 0.0122496 +gmp_int 512 %(int)0.0655264 +gmp_int 512 |(int)0.0536497 +gmp_int 512 &(int)0.0532932 +gmp_int 512 ^(int)0.0540655 +gmp_int 512 gcd 4.86569 +gmp_int 1024 + 0.0417292 +gmp_int 1024 - 0.0504965 +gmp_int 1024 * 0.330741 +gmp_int 1024 / 0.376529 +gmp_int 1024 str 0.00295526 +gmp_int 1024 +(int)0.0258726 +gmp_int 1024 -(int)0.0235972 +gmp_int 1024 *(int)0.0326542 +gmp_int 1024 /(int)0.148103 +gmp_int 1024 % 0.301177 +gmp_int 1024 | 0.0262977 +gmp_int 1024 & 0.0235786 +gmp_int 1024 ^ 0.0254182 +gmp_int 1024 << 0.0206225 +gmp_int 1024 >> 0.012848 +gmp_int 1024 %(int)0.0765616 +gmp_int 1024 |(int)0.0495613 +gmp_int 1024 &(int)0.0512979 +gmp_int 1024 ^(int)0.0491785 +gmp_int 1024 gcd 10.2899 +cpp_int 128 + 0.0226262 +cpp_int 128 - 0.0256171 +cpp_int 128 * 0.0363846 +cpp_int 128 / 0.227187 +cpp_int 128 str 0.000703371 +cpp_int 128 +(int)0.0156956 +cpp_int 128 -(int)0.0122229 +cpp_int 128 *(int)0.0257193 +cpp_int 128 /(int)0.129609 +cpp_int 128 % 0.226534 +cpp_int 128 | 0.0242976 +cpp_int 128 & 0.0244482 +cpp_int 128 ^ 0.0243197 +cpp_int 128 << 0.0182175 +cpp_int 128 >> 0.0215535 +cpp_int 128 %(int)0.181554 +cpp_int 128 |(int)0.0454215 +cpp_int 128 &(int)0.0426893 +cpp_int 128 ^(int)0.0404509 +cpp_int 128 gcd 4.16823 +cpp_int 256 + 0.0275581 +cpp_int 256 - 0.0305114 +cpp_int 256 * 0.100083 +cpp_int 256 / 0.467116 +cpp_int 256 str 0.00181769 +cpp_int 256 +(int)0.017033 +cpp_int 256 -(int)0.0143035 +cpp_int 256 *(int)0.0294836 +cpp_int 256 /(int)0.303922 +cpp_int 256 % 0.435207 +cpp_int 256 | 0.0281237 +cpp_int 256 & 0.028049 +cpp_int 256 ^ 0.0280192 +cpp_int 256 << 0.0210768 +cpp_int 256 >> 0.0175781 +cpp_int 256 %(int)0.279274 +cpp_int 256 |(int)0.0323883 +cpp_int 256 &(int)0.0338674 +cpp_int 256 ^(int)0.0299941 +cpp_int 256 gcd 8.51244 +cpp_int 512 + 0.033691 +cpp_int 512 - 0.0422701 +cpp_int 512 * 0.343683 +cpp_int 512 / 0.755608 +cpp_int 512 str 0.00434022 +cpp_int 512 +(int)0.0196755 +cpp_int 512 -(int)0.0171212 +cpp_int 512 *(int)0.039305 +cpp_int 512 /(int)0.535727 +cpp_int 512 % 0.719958 +cpp_int 512 | 0.0339623 +cpp_int 512 & 0.0342017 +cpp_int 512 ^ 0.033929 +cpp_int 512 << 0.0269161 +cpp_int 512 >> 0.0216914 +cpp_int 512 %(int)0.53345 +cpp_int 512 |(int)0.0324562 +cpp_int 512 &(int)0.0424884 +cpp_int 512 ^(int)0.0323887 +cpp_int 512 gcd 19.489 +cpp_int 1024 + 0.0456764 +cpp_int 1024 - 0.0574919 +cpp_int 1024 * 1.28548 +cpp_int 1024 / 1.30086 +cpp_int 1024 str 0.0122363 +cpp_int 1024 +(int)0.0241476 +cpp_int 1024 -(int)0.0212992 +cpp_int 1024 *(int)0.0540818 +cpp_int 1024 /(int)1.00179 +cpp_int 1024 % 1.27181 +cpp_int 1024 | 0.0457886 +cpp_int 1024 & 0.0456006 +cpp_int 1024 ^ 0.0456494 +cpp_int 1024 << 0.0394128 +cpp_int 1024 >> 0.0294462 +cpp_int 1024 %(int)0.962651 +cpp_int 1024 |(int)0.0372077 +cpp_int 1024 &(int)0.0577198 +cpp_int 1024 ^(int)0.0372218 +cpp_int 1024 gcd 47.7651 +cpp_int(fixed) 128 + 0.0183948 +cpp_int(fixed) 128 - 0.0182905 +cpp_int(fixed) 128 * 0.0201727 +cpp_int(fixed) 128 / 0.206852 +cpp_int(fixed) 128 str 0.000630107 +cpp_int(fixed) 128 +(int)0.00967714 +cpp_int(fixed) 128 -(int)0.00810627 +cpp_int(fixed) 128 *(int)0.0183201 +cpp_int(fixed) 128 /(int)0.111309 +cpp_int(fixed) 128 % 0.204164 +cpp_int(fixed) 128 | 0.0136789 +cpp_int(fixed) 128 & 0.0143848 +cpp_int(fixed) 128 ^ 0.0137773 +cpp_int(fixed) 128 << 0.0131154 +cpp_int(fixed) 128 >> 0.00912176 +cpp_int(fixed) 128 %(int)0.115583 +cpp_int(fixed) 128 |(int)0.0164462 +cpp_int(fixed) 128 &(int)0.0169816 +cpp_int(fixed) 128 ^(int)0.014607 +cpp_int(fixed) 128 gcd 2.87326 +cpp_int(fixed) 256 + 0.0217614 +cpp_int(fixed) 256 - 0.0208437 +cpp_int(fixed) 256 * 0.0385279 +cpp_int(fixed) 256 / 0.321272 +cpp_int(fixed) 256 str 0.00149991 +cpp_int(fixed) 256 +(int)0.0102395 +cpp_int(fixed) 256 -(int)0.00923316 +cpp_int(fixed) 256 *(int)0.021549 +cpp_int(fixed) 256 /(int)0.219146 +cpp_int(fixed) 256 % 0.321039 +cpp_int(fixed) 256 | 0.0154596 +cpp_int(fixed) 256 & 0.0156443 +cpp_int(fixed) 256 ^ 0.015493 +cpp_int(fixed) 256 << 0.0169546 +cpp_int(fixed) 256 >> 0.0114138 +cpp_int(fixed) 256 %(int)0.238857 +cpp_int(fixed) 256 |(int)0.015725 +cpp_int(fixed) 256 &(int)0.021641 +cpp_int(fixed) 256 ^(int)0.0163443 +cpp_int(fixed) 256 gcd 6.68597 +cpp_int(fixed) 512 + 0.0284799 +cpp_int(fixed) 512 - 0.028304 +cpp_int(fixed) 512 * 0.119904 +cpp_int(fixed) 512 / 0.616699 +cpp_int(fixed) 512 str 0.00415653 +cpp_int(fixed) 512 +(int)0.0122821 +cpp_int(fixed) 512 -(int)0.0110103 +cpp_int(fixed) 512 *(int)0.0283635 +cpp_int(fixed) 512 /(int)0.451373 +cpp_int(fixed) 512 % 0.620217 +cpp_int(fixed) 512 | 0.0189862 +cpp_int(fixed) 512 & 0.0192657 +cpp_int(fixed) 512 ^ 0.018973 +cpp_int(fixed) 512 << 0.0188263 +cpp_int(fixed) 512 >> 0.0152103 +cpp_int(fixed) 512 %(int)0.491398 +cpp_int(fixed) 512 |(int)0.0182191 +cpp_int(fixed) 512 &(int)0.0277722 +cpp_int(fixed) 512 ^(int)0.0182565 +cpp_int(fixed) 512 gcd 16.1788 +cpp_int(fixed) 1024 + 0.0396571 +cpp_int(fixed) 1024 - 0.0413187 +cpp_int(fixed) 1024 * 0.371065 +cpp_int(fixed) 1024 / 1.09072 +cpp_int(fixed) 1024 str 0.011546 +cpp_int(fixed) 1024 +(int)0.0254102 +cpp_int(fixed) 1024 -(int)0.020939 +cpp_int(fixed) 1024 *(int)0.0494233 +cpp_int(fixed) 1024 /(int)0.870306 +cpp_int(fixed) 1024 % 1.09888 +cpp_int(fixed) 1024 | 0.0393824 +cpp_int(fixed) 1024 & 0.0397966 +cpp_int(fixed) 1024 ^ 0.0394082 +cpp_int(fixed) 1024 << 0.0392477 +cpp_int(fixed) 1024 >> 0.0214742 +cpp_int(fixed) 1024 %(int)0.941513 +cpp_int(fixed) 1024 |(int)0.0304613 +cpp_int(fixed) 1024 &(int)0.0497983 +cpp_int(fixed) 1024 ^(int)0.0333848 +cpp_int(fixed) 1024 gcd 41.9178 +cpp_rational 128 + 8.33358 +cpp_rational 128 - 8.3543 +cpp_rational 128 * 15.3196 +cpp_rational 128 / 31.794 +cpp_rational 128 str 0.00980984 +cpp_rational 128 +(int)1.14042 +cpp_rational 128 -(int)1.13947 +cpp_rational 128 *(int)1.3425 +cpp_rational 128 /(int)1.35276 +cpp_rational 256 + 24.5753 +cpp_rational 256 - 24.3831 +cpp_rational 256 * 45.9283 +cpp_rational 256 / 80.7871 +cpp_rational 256 str 0.0288878 +cpp_rational 256 +(int)1.54697 +cpp_rational 256 -(int)1.55711 +cpp_rational 256 *(int)2.05921 +cpp_rational 256 /(int)2.12933 +cpp_rational 512 + 58.1983 +cpp_rational 512 - 58.3044 +cpp_rational 512 * 111.528 +cpp_rational 512 / 184.73 +cpp_rational 512 str 0.067039 +cpp_rational 512 +(int)1.83113 +cpp_rational 512 -(int)1.82889 +cpp_rational 512 *(int)2.75206 +cpp_rational 512 /(int)2.75885 +cpp_rational 1024 + 139.884 +cpp_rational 1024 - 139.665 +cpp_rational 1024 * 270.253 +cpp_rational 1024 / 436.471 +cpp_rational 1024 str 0.165057 +cpp_rational 1024 +(int)2.65768 +cpp_rational 1024 -(int)2.68279 +cpp_rational 1024 *(int)4.26866 +cpp_rational 1024 /(int)4.27228 +mpq_rational 128 + 0.518878 +mpq_rational 128 - 0.520249 +mpq_rational 128 * 0.940549 +mpq_rational 128 / 2.63335 +mpq_rational 128 str 0.000732008 +mpq_rational 128 +(int)0.145745 +mpq_rational 128 -(int)0.142505 +mpq_rational 128 *(int)0.173305 +mpq_rational 128 /(int)0.178914 +mpq_rational 256 + 2.2747 +mpq_rational 256 - 2.27886 +mpq_rational 256 * 4.27402 +mpq_rational 256 / 8.07149 +mpq_rational 256 str 0.00123256 +mpq_rational 256 +(int)0.164417 +mpq_rational 256 -(int)0.161741 +mpq_rational 256 *(int)0.193095 +mpq_rational 256 /(int)0.202255 +mpq_rational 512 + 5.09463 +mpq_rational 512 - 5.09757 +mpq_rational 512 * 9.6481 +mpq_rational 512 / 16.9064 +mpq_rational 512 str 0.00244388 +mpq_rational 512 +(int)0.202901 +mpq_rational 512 -(int)0.200644 +mpq_rational 512 *(int)0.248942 +mpq_rational 512 /(int)0.251928 +mpq_rational 1024 + 11.2492 +mpq_rational 1024 - 11.2528 +mpq_rational 1024 * 21.0227 +mpq_rational 1024 / 35.7647 +mpq_rational 1024 str 0.00559869 +mpq_rational 1024 +(int)0.287349 +mpq_rational 1024 -(int)0.28136 +mpq_rational 1024 *(int)0.337805 +mpq_rational 1024 /(int)0.351164 +tommath_int 128 + 0.0169999 +tommath_int 128 - 0.025088 +tommath_int 128 * 0.0608098 +tommath_int 128 / 1.14807 +tommath_int 128 str 0.00864677 +tommath_int 128 +(int)0.170239 +tommath_int 128 -(int)0.169805 +tommath_int 128 *(int)0.18998 +tommath_int 128 /(int)0.936106 +tommath_int 128 % 1.10993 +tommath_int 128 | 0.0742258 +tommath_int 128 & 0.0747022 +tommath_int 128 ^ 0.0734074 +tommath_int 128 << 0.0316344 +tommath_int 128 >> 0.139155 +tommath_int 128 %(int)0.871093 +tommath_int 128 |(int)0.249135 +tommath_int 128 &(int)0.224394 +tommath_int 128 ^(int)0.248407 +tommath_int 128 gcd 7.6073 +tommath_int 256 + 0.0191462 +tommath_int 256 - 0.0267191 +tommath_int 256 * 0.0843842 +tommath_int 256 / 1.34052 +tommath_int 256 str 0.0212684 +tommath_int 256 +(int)0.173633 +tommath_int 256 -(int)0.173084 +tommath_int 256 *(int)0.20074 +tommath_int 256 /(int)1.17192 +tommath_int 256 % 1.33781 +tommath_int 256 | 0.0740269 +tommath_int 256 & 0.0747001 +tommath_int 256 ^ 0.0741847 +tommath_int 256 << 0.0379471 +tommath_int 256 >> 0.14164 +tommath_int 256 %(int)1.52193 +tommath_int 256 |(int)0.251418 +tommath_int 256 &(int)0.230435 +tommath_int 256 ^(int)0.249516 +tommath_int 256 gcd 15.8851 +tommath_int 512 + 0.0241933 +tommath_int 512 - 0.032154 +tommath_int 512 * 0.195855 +tommath_int 512 / 2.061 +tommath_int 512 str 0.0827649 +tommath_int 512 +(int)0.25223 +tommath_int 512 -(int)0.25482 +tommath_int 512 *(int)0.305608 +tommath_int 512 /(int)1.76155 +tommath_int 512 % 1.97453 +tommath_int 512 | 0.0795209 +tommath_int 512 & 0.0815029 +tommath_int 512 ^ 0.0793004 +tommath_int 512 << 0.0449753 +tommath_int 512 >> 0.149597 +tommath_int 512 %(int)1.74258 +tommath_int 512 |(int)0.253519 +tommath_int 512 &(int)0.235246 +tommath_int 512 ^(int)0.261762 +tommath_int 512 gcd 33.8904 +tommath_int 1024 + 0.0356467 +tommath_int 1024 - 0.0426379 +tommath_int 1024 * 0.563154 +tommath_int 1024 / 3.3106 +tommath_int 1024 str 0.200351 +tommath_int 1024 +(int)0.183982 +tommath_int 1024 -(int)0.182348 +tommath_int 1024 *(int)0.265242 +tommath_int 1024 /(int)2.99248 +tommath_int 1024 % 3.36442 +tommath_int 1024 | 0.0935681 +tommath_int 1024 & 0.0990244 +tommath_int 1024 ^ 0.0948247 +tommath_int 1024 << 0.0671463 +tommath_int 1024 >> 0.167341 +tommath_int 1024 %(int)2.8911 +tommath_int 1024 |(int)0.26358 +tommath_int 1024 &(int)0.244976 +tommath_int 1024 ^(int)0.261357 +tommath_int 1024 gcd 67.1657 +cpp_dec_float 50 + 0.0139248 +cpp_dec_float 50 - 0.0142418 +cpp_dec_float 50 * 0.118247 +cpp_dec_float 50 / 1.82747 +cpp_dec_float 50 str 0.00932849 +cpp_dec_float 50 +(int)0.0253923 +cpp_dec_float 50 -(int)0.0248418 +cpp_dec_float 50 *(int)0.0371704 +cpp_dec_float 50 /(int)0.199883 +cpp_dec_float 100 + 0.0171021 +cpp_dec_float 100 - 0.0176287 +cpp_dec_float 100 * 0.237033 +cpp_dec_float 100 / 3.63766 +cpp_dec_float 100 str 0.0201057 +cpp_dec_float 100 +(int)0.0330663 +cpp_dec_float 100 -(int)0.0332922 +cpp_dec_float 100 *(int)0.0606472 +cpp_dec_float 100 /(int)0.343778 +cpp_dec_float 500 + 0.043194 +cpp_dec_float 500 - 0.0443422 +cpp_dec_float 500 * 2.12299 +cpp_dec_float 500 / 25.7245 +cpp_dec_float 500 str 0.0655127 +cpp_dec_float 500 +(int)0.0706977 +cpp_dec_float 500 -(int)0.0727089 +cpp_dec_float 500 *(int)0.239796 +cpp_dec_float 500 /(int)1.39609 +mpfr_float 50 + 0.019179 +mpfr_float 50 - 0.0225632 +mpfr_float 50 * 0.0588765 +mpfr_float 50 / 0.317276 +mpfr_float 50 str 0.00725414 +mpfr_float 50 +(int)0.0286079 +mpfr_float 50 -(int)0.0465151 +mpfr_float 50 *(int)0.0362579 +mpfr_float 50 /(int)0.0888645 +mpfr_float 100 + 0.0210236 +mpfr_float 100 - 0.0250703 +mpfr_float 100 * 0.0946262 +mpfr_float 100 / 0.456375 +mpfr_float 100 str 0.00900848 +mpfr_float 100 +(int)0.0320443 +mpfr_float 100 -(int)0.0487733 +mpfr_float 100 *(int)0.0437034 +mpfr_float 100 /(int)0.154203 +mpfr_float 500 + 0.033691 +mpfr_float 500 - 0.0371954 +mpfr_float 500 * 0.851721 +mpfr_float 500 / 2.7946 +mpfr_float 500 str 0.0342011 +mpfr_float 500 +(int)0.0414774 +mpfr_float 500 -(int)0.0616173 +mpfr_float 500 *(int)0.0826485 +mpfr_float 500 /(int)0.254227 +[section:float_performance Float Type Perfomance] +[table Operator * +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][2.08334 (0.118247s)][2.50494 (0.237033s)][2.49259 (2.12299s)]] +[[gmp_float][[*1] (0.0567584s)][1.0272 (0.0972s)][1.10221 (0.938779s)]] +[[mpfr_float][1.03732 (0.0588765s)][[*1] (0.0946262s)][[*1] (0.851721s)]] +] +[table Operator *(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][1.88436 (0.0371704s)][2.41392 (0.0606472s)][5.11303 (0.239796s)]] +[[gmp_float][[*1] (0.0197258s)][[*1] (0.0251239s)][[*1] (0.046899s)]] +[[mpfr_float][1.8381 (0.0362579s)][1.73951 (0.0437034s)][1.76227 (0.0826485s)]] +] +[table Operator + +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][[*1] (0.0139248s)][[*1] (0.0171021s)][1.28206 (0.043194s)]] +[[gmp_float][1.29901 (0.0180885s)][1.15177 (0.0196977s)][1.01312 (0.034133s)]] +[[mpfr_float][1.37732 (0.019179s)][1.2293 (0.0210236s)][[*1] (0.033691s)]] +] +[table Operator +(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][1.96327 (0.0253923s)][2.13604 (0.0330663s)][3.20133 (0.0706977s)]] +[[gmp_float][[*1] (0.0129337s)][[*1] (0.0154802s)][[*1] (0.0220839s)]] +[[mpfr_float][2.21189 (0.0286079s)][2.07002 (0.0320443s)][1.87818 (0.0414774s)]] +] +[table Operator - +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][[*1] (0.0142418s)][[*1] (0.0176287s)][1.19214 (0.0443422s)]] +[[gmp_float][1.5989 (0.0227712s)][1.40368 (0.024745s)][1.10618 (0.0411447s)]] +[[mpfr_float][1.5843 (0.0225632s)][1.42213 (0.0250703s)][[*1] (0.0371954s)]] +] +[table Operator -(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][[*1] (0.0248418s)][1.37357 (0.0332922s)][2.33904 (0.0727089s)]] +[[gmp_float][1.03159 (0.0256267s)][[*1] (0.0242376s)][[*1] (0.0310849s)]] +[[mpfr_float][1.87245 (0.0465151s)][2.0123 (0.0487733s)][1.98223 (0.0616173s)]] +] +[table Operator / +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][6.32206 (1.82747s)][9.23752 (3.63766s)][16.1049 (25.7245s)]] +[[gmp_float][[*1] (0.289062s)][[*1] (0.393792s)][[*1] (1.5973s)]] +[[mpfr_float][1.09761 (0.317276s)][1.15892 (0.456375s)][1.74957 (2.7946s)]] +] +[table Operator /(int) +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][2.27696 (0.199883s)][3.41769 (0.343778s)][5.8047 (1.39609s)]] +[[gmp_float][[*1] (0.087785s)][[*1] (0.100588s)][[*1] (0.240511s)]] +[[mpfr_float][1.0123 (0.0888645s)][1.53302 (0.154203s)][1.05703 (0.254227s)]] +] +[table Operator str +[[Backend][50 Bits][100 Bits][500 Bits]] +[[cpp_dec_float][2.62876 (0.00932849s)][3.80613 (0.0201057s)][1.91552 (0.0655127s)]] +[[gmp_float][[*1] (0.00354863s)][[*1] (0.00528245s)][1.18878 (0.0406575s)]] +[[mpfr_float][2.04421 (0.00725414s)][1.70536 (0.00900848s)][[*1] (0.0342011s)]] +] +[endsect] +[section:integer_performance Integer Type Perfomance] +[table Operator % +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.35064 (0.226534s)][2.1428 (0.435207s)][3.03946 (0.719958s)][4.22281 (1.27181s)]] +[[cpp_int(fixed)][1.21726 (0.204164s)][1.58068 (0.321039s)][2.61838 (0.620217s)][3.6486 (1.09888s)]] +[[gmp_int][[*1] (0.167724s)][[*1] (0.203102s)][[*1] (0.23687s)][[*1] (0.301177s)]] +[[tommath_int][6.61759 (1.10993s)][6.58689 (1.33781s)][8.33593 (1.97453s)][11.1709 (3.36442s)]] +] +[table Operator %(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][4.43928 (0.181554s)][5.31056 (0.279274s)][8.141 (0.53345s)][12.5735 (0.962651s)]] +[[cpp_int(fixed)][2.82619 (0.115583s)][4.54202 (0.238857s)][7.49924 (0.491398s)][12.2974 (0.941513s)]] +[[gmp_int][[*1] (0.0408971s)][[*1] (0.0525884s)][[*1] (0.0655264s)][[*1] (0.0765616s)]] +[[tommath_int][21.2996 (0.871093s)][28.9405 (1.52193s)][26.5936 (1.74258s)][37.7618 (2.8911s)]] +] +[table Operator & +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.88968 (0.0244482s)][1.79292 (0.028049s)][1.77526 (0.0342017s)][1.93398 (0.0456006s)]] +[[cpp_int(fixed)][1.11185 (0.0143848s)][[*1] (0.0156443s)][[*1] (0.0192657s)][1.68783 (0.0397966s)]] +[[gmp_int][[*1] (0.0129377s)][1.09124 (0.0170717s)][1.08747 (0.0209509s)][[*1] (0.0235786s)]] +[[tommath_int][5.77397 (0.0747022s)][4.7749 (0.0747001s)][4.23046 (0.0815029s)][4.19976 (0.0990244s)]] +] +[table Operator &(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.51385 (0.0426893s)][1.56497 (0.0338674s)][1.52989 (0.0424884s)][1.15907 (0.0577198s)]] +[[cpp_int(fixed)][[*1] (0.0169816s)][[*1] (0.021641s)][[*1] (0.0277722s)][[*1] (0.0497983s)]] +[[gmp_int][2.9563 (0.0502028s)][2.3492 (0.0508389s)][1.91894 (0.0532932s)][1.03011 (0.0512979s)]] +[[tommath_int][13.2139 (0.224394s)][10.6481 (0.230435s)][8.47057 (0.235246s)][4.91936 (0.244976s)]] +] +[table Operator * +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.21032 (0.0363846s)][2.59769 (0.100083s)][3.28466 (0.343683s)][3.88666 (1.28548s)]] +[[cpp_int(fixed)][1.22547 (0.0201727s)][[*1] (0.0385279s)][1.14595 (0.119904s)][1.12192 (0.371065s)]] +[[gmp_int][[*1] (0.0164612s)][1.28554 (0.0495293s)][[*1] (0.104633s)][[*1] (0.330741s)]] +[[tommath_int][3.69412 (0.0608098s)][2.19021 (0.0843842s)][1.87184 (0.195855s)][1.70271 (0.563154s)]] +] +[table Operator *(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.8402 (0.0257193s)][1.92542 (0.0294836s)][2.06094 (0.039305s)][1.6562 (0.0540818s)]] +[[cpp_int(fixed)][1.3108 (0.0183201s)][1.40725 (0.021549s)][1.48723 (0.0283635s)][1.51354 (0.0494233s)]] +[[gmp_int][[*1] (0.0139764s)][[*1] (0.0153128s)][[*1] (0.0190714s)][[*1] (0.0326542s)]] +[[tommath_int][13.593 (0.18998s)][13.1093 (0.20074s)][16.0244 (0.305608s)][8.12274 (0.265242s)]] +] +[table Operator + +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.33096 (0.0226262s)][1.43935 (0.0275581s)][1.39258 (0.033691s)][1.28136 (0.0456764s)]] +[[cpp_int(fixed)][1.08205 (0.0183948s)][1.13659 (0.0217614s)][1.17718 (0.0284799s)][1.1125 (0.0396571s)]] +[[gmp_int][1.39192 (0.0236625s)][1.34375 (0.0257277s)][1.17204 (0.0283556s)][1.17063 (0.0417292s)]] +[[tommath_int][[*1] (0.0169999s)][[*1] (0.0191462s)][[*1] (0.0241933s)][[*1] (0.0356467s)]] +] +[table Operator +(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.73044 (0.0156956s)][1.66346 (0.017033s)][1.60196 (0.0196755s)][[*1] (0.0241476s)]] +[[cpp_int(fixed)][1.06691 (0.00967714s)][[*1] (0.0102395s)][[*1] (0.0122821s)][1.05229 (0.0254102s)]] +[[gmp_int][[*1] (0.00907029s)][1.26028 (0.0129046s)][1.27777 (0.0156938s)][1.07144 (0.0258726s)]] +[[tommath_int][18.7688 (0.170239s)][16.9572 (0.173633s)][20.5363 (0.25223s)][7.61905 (0.183982s)]] +] +[table Operator - +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.40057 (0.0256171s)][1.46382 (0.0305114s)][1.49343 (0.0422701s)][1.39142 (0.0574919s)]] +[[cpp_int(fixed)][[*1] (0.0182905s)][[*1] (0.0208437s)][[*1] (0.028304s)][[*1] (0.0413187s)]] +[[gmp_int][1.39653 (0.0255431s)][1.50686 (0.0314085s)][1.40796 (0.0398509s)][1.22212 (0.0504965s)]] +[[tommath_int][1.37164 (0.025088s)][1.28188 (0.0267191s)][1.13602 (0.032154s)][1.03193 (0.0426379s)]] +] +[table Operator -(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.50784 (0.0122229s)][1.54914 (0.0143035s)][1.55501 (0.0171212s)][1.0172 (0.0212992s)]] +[[cpp_int(fixed)][[*1] (0.00810627s)][[*1] (0.00923316s)][[*1] (0.0110103s)][[*1] (0.020939s)]] +[[gmp_int][1.49189 (0.0120936s)][1.76716 (0.0163165s)][1.86002 (0.0204795s)][1.12695 (0.0235972s)]] +[[tommath_int][20.9474 (0.169805s)][18.7459 (0.173084s)][23.1437 (0.25482s)][8.70855 (0.182348s)]] +] +[table Operator / +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.12441 (0.227187s)][1.92471 (0.467116s)][2.5683 (0.755608s)][3.45487 (1.30086s)]] +[[cpp_int(fixed)][1.02377 (0.206852s)][1.32377 (0.321272s)][2.09615 (0.616699s)][2.89679 (1.09072s)]] +[[gmp_int][[*1] (0.20205s)][[*1] (0.242695s)][[*1] (0.294206s)][[*1] (0.376529s)]] +[[tommath_int][5.68214 (1.14807s)][5.52349 (1.34052s)][7.00529 (2.061s)][8.79242 (3.3106s)]] +] +[table Operator /(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.11845 (0.129609s)][4.15783 (0.303922s)][5.55849 (0.535727s)][6.76415 (1.00179s)]] +[[cpp_int(fixed)][1.81934 (0.111309s)][2.99804 (0.219146s)][4.68327 (0.451373s)][5.87635 (0.870306s)]] +[[gmp_int][[*1] (0.061181s)][[*1] (0.0730963s)][[*1] (0.09638s)][[*1] (0.148103s)]] +[[tommath_int][15.3006 (0.936106s)][16.0325 (1.17192s)][18.2771 (1.76155s)][20.2054 (2.99248s)]] +] +[table Operator << +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.66271 (0.0182175s)][1.44338 (0.0210768s)][1.50386 (0.0269161s)][1.91115 (0.0394128s)]] +[[cpp_int(fixed)][1.19703 (0.0131154s)][1.16109 (0.0169546s)][1.05186 (0.0188263s)][1.90315 (0.0392477s)]] +[[gmp_int][[*1] (0.0109566s)][[*1] (0.0146023s)][[*1] (0.0178981s)][[*1] (0.0206225s)]] +[[tommath_int][2.88726 (0.0316344s)][2.5987 (0.0379471s)][2.51285 (0.0449753s)][3.25597 (0.0671463s)]] +] +[table Operator >> +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.36287 (0.0215535s)][1.70778 (0.0175781s)][1.77078 (0.0216914s)][2.29189 (0.0294462s)]] +[[cpp_int(fixed)][[*1] (0.00912176s)][1.10889 (0.0114138s)][1.2417 (0.0152103s)][1.6714 (0.0214742s)]] +[[gmp_int][1.17612 (0.0107283s)][[*1] (0.010293s)][[*1] (0.0122496s)][[*1] (0.012848s)]] +[[tommath_int][15.2553 (0.139155s)][13.7608 (0.14164s)][12.2124 (0.149597s)][13.0247 (0.167341s)]] +] +[table Operator ^ +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.78798 (0.0243197s)][1.8085 (0.0280192s)][1.78828 (0.033929s)][1.79594 (0.0456494s)]] +[[cpp_int(fixed)][1.0129 (0.0137773s)][[*1] (0.015493s)][[*1] (0.018973s)][1.5504 (0.0394082s)]] +[[gmp_int][[*1] (0.0136018s)][1.03786 (0.0160796s)][1.40572 (0.0266707s)][[*1] (0.0254182s)]] +[[tommath_int][5.39689 (0.0734074s)][4.78827 (0.0741847s)][4.17964 (0.0793004s)][3.73059 (0.0948247s)]] +] +[table Operator ^(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.76928 (0.0404509s)][1.83515 (0.0299941s)][1.77409 (0.0323887s)][1.11493 (0.0372218s)]] +[[cpp_int(fixed)][[*1] (0.014607s)][[*1] (0.0163443s)][[*1] (0.0182565s)][[*1] (0.0333848s)]] +[[gmp_int][3.25823 (0.047593s)][3.05166 (0.0498771s)][2.96144 (0.0540655s)][1.47308 (0.0491785s)]] +[[tommath_int][17.006 (0.248407s)][15.2663 (0.249516s)][14.338 (0.261762s)][7.82864 (0.261357s)]] +] +[table Operator gcd +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][9.20736 (4.16823s)][3.91955 (8.51244s)][4.00539 (19.489s)][4.64192 (47.7651s)]] +[[cpp_int(fixed)][6.34685 (2.87326s)][3.07855 (6.68597s)][3.32507 (16.1788s)][4.07366 (41.9178s)]] +[[gmp_int][[*1] (0.452707s)][[*1] (2.17179s)][[*1] (4.86569s)][[*1] (10.2899s)]] +[[tommath_int][16.804 (7.6073s)][7.31428 (15.8851s)][6.96518 (33.8904s)][6.52732 (67.1657s)]] +] +[table Operator str +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.76995 (0.000703371s)][2.94246 (0.00181769s)][3.45149 (0.00434022s)][4.14052 (0.0122363s)]] +[[cpp_int(fixed)][1.58559 (0.000630107s)][2.42804 (0.00149991s)][3.30542 (0.00415653s)][3.90693 (0.011546s)]] +[[gmp_int][[*1] (0.000397397s)][[*1] (0.000617745s)][[*1] (0.00125749s)][[*1] (0.00295526s)]] +[[tommath_int][21.7585 (0.00864677s)][34.4291 (0.0212684s)][65.8175 (0.0827649s)][67.7946 (0.200351s)]] +] +[table Operator | +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.91883 (0.0242976s)][1.88265 (0.0281237s)][1.78879 (0.0339623s)][1.74117 (0.0457886s)]] +[[cpp_int(fixed)][1.08025 (0.0136789s)][1.03489 (0.0154596s)][[*1] (0.0189862s)][1.49756 (0.0393824s)]] +[[gmp_int][[*1] (0.0126627s)][[*1] (0.0149383s)][1.28585 (0.0244134s)][[*1] (0.0262977s)]] +[[tommath_int][5.86177 (0.0742258s)][4.9555 (0.0740269s)][4.18835 (0.0795209s)][3.55804 (0.0935681s)]] +] +[table Operator |(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.76183 (0.0454215s)][2.05967 (0.0323883s)][1.78143 (0.0324562s)][1.22147 (0.0372077s)]] +[[cpp_int(fixed)][[*1] (0.0164462s)][[*1] (0.015725s)][[*1] (0.0182191s)][[*1] (0.0304613s)]] +[[gmp_int][2.81912 (0.0463637s)][3.18611 (0.0501017s)][2.94469 (0.0536497s)][1.62702 (0.0495613s)]] +[[tommath_int][15.1485 (0.249135s)][15.9884 (0.251418s)][13.915 (0.253519s)][8.65293 (0.26358s)]] +] +[endsect] +[section:rational_performance Rational Type Perfomance] +[table Operator * +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][16.2879 (15.3196s)][10.7459 (45.9283s)][11.5596 (111.528s)][12.8553 (270.253s)]] +[[mpq_rational][[*1] (0.940549s)][[*1] (4.27402s)][[*1] (9.6481s)][[*1] (21.0227s)]] +] +[table Operator *(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][7.7465 (1.3425s)][10.6643 (2.05921s)][11.055 (2.75206s)][12.6365 (4.26866s)]] +[[mpq_rational][[*1] (0.173305s)][[*1] (0.193095s)][[*1] (0.248942s)][[*1] (0.337805s)]] +] +[table Operator + +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][16.0608 (8.33358s)][10.8037 (24.5753s)][11.4235 (58.1983s)][12.435 (139.884s)]] +[[mpq_rational][[*1] (0.518878s)][[*1] (2.2747s)][[*1] (5.09463s)][[*1] (11.2492s)]] +] +[table Operator +(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][7.82472 (1.14042s)][9.40883 (1.54697s)][9.02478 (1.83113s)][9.24894 (2.65768s)]] +[[mpq_rational][[*1] (0.145745s)][[*1] (0.164417s)][[*1] (0.202901s)][[*1] (0.287349s)]] +] +[table Operator - +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][16.0583 (8.3543s)][10.6997 (24.3831s)][11.4377 (58.3044s)][12.4116 (139.665s)]] +[[mpq_rational][[*1] (0.520249s)][[*1] (2.27886s)][[*1] (5.09757s)][[*1] (11.2528s)]] +] +[table Operator -(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][7.99602 (1.13947s)][9.62717 (1.55711s)][9.1151 (1.82889s)][9.53508 (2.68279s)]] +[[mpq_rational][[*1] (0.142505s)][[*1] (0.161741s)][[*1] (0.200644s)][[*1] (0.28136s)]] +] +[table Operator / +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][12.0736 (31.794s)][10.0089 (80.7871s)][10.9267 (184.73s)][12.204 (436.471s)]] +[[mpq_rational][[*1] (2.63335s)][[*1] (8.07149s)][[*1] (16.9064s)][[*1] (35.7647s)]] +] +[table Operator /(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][7.56092 (1.35276s)][10.5279 (2.12933s)][10.9509 (2.75885s)][12.166 (4.27228s)]] +[[mpq_rational][[*1] (0.178914s)][[*1] (0.202255s)][[*1] (0.251928s)][[*1] (0.351164s)]] +] +[table Operator str +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][13.4013 (0.00980984s)][23.4372 (0.0288878s)][27.4314 (0.067039s)][29.4814 (0.165057s)]] +[[mpq_rational][[*1] (0.000732008s)][[*1] (0.00123256s)][[*1] (0.00244388s)][[*1] (0.00559869s)]] +] +[endsect] From 45a08da90e7d1e6d58e17e587773fe599da10ac8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 17 Mar 2012 09:18:20 +0000 Subject: [PATCH 135/256] Add simple version of the Miller Rabin test [SVN r77353] --- doc/html/boost_multiprecision/ref.html | 6 +- doc/html/boost_multiprecision/tut.html | 1 + doc/html/index.html | 3 +- doc/multiprecision.qbk | 28 +++++ example/safe_prime.cpp | 45 ++++++++ include/boost/multiprecision/miller_rabin.hpp | 106 ++++++++++++++++++ include/boost/multiprecision/random.hpp | 2 + test/Jamfile.v2 | 8 ++ test/test_miller_rabin.cpp | 47 ++++++++ 9 files changed, 242 insertions(+), 4 deletions(-) create mode 100644 example/safe_prime.cpp create mode 100644 include/boost/multiprecision/miller_rabin.hpp create mode 100644 test/test_miller_rabin.cpp diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index d975490b..a31f61bb 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -32,7 +32,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index 0ac5b703..4d71a28e 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -22,6 +22,7 @@
    Floating Point Numbers
    Rational Number Types
    Generating Random Numbers
    +
    Primality Testing

    In order to use this library you need to make two choices: what kind of number diff --git a/doc/html/index.html b/doc/html/index.html index 5d80f737..abfa54c5 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -34,6 +34,7 @@

    Floating Point Numbers
    Rational Number Types
    Generating Random Numbers
    +
    Primality Testing
    Reference
    @@ -57,7 +58,7 @@
    - +

    Last revised: March 15, 2012 at 18:34:52 GMT

    Last revised: March 17, 2012 at 09:04:10 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index fe1cd9d4..9f174569 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -24,6 +24,7 @@ [import ../example/tommath_snips.cpp] [import ../example/cpp_int_snips.cpp] [import ../example/random_snips.cpp] +[import ../example/safe_prime.cpp] [template mpfr[] [@http://www.mpfr.org MPFR]] [template gmp[] [@http://gmplib.org GMP]] @@ -698,6 +699,33 @@ Finally, we can modify the above example to produce numbers distributed accordin [endsect] +[section:primetest Primality Testing] + +The library implements a fairly basic (meaning unoptimized, and possibly slow) Miller-Rabin test for primality: + + #include + + template + bool miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen); + + template + bool miller_rabin_test(const mp_number& n, unsigned trials); + +These functions perform a Miller-Rabin test for primality, if the result is `false` then /n/ is definitely composite, +while if the result is `true` then /n/ is prime with probability 0.25^trials. The algorithm used is straight out of +Knuth Vol 2, which recomends 25 trials for a pretty strong likelyhood that /n/ is prime. + +The third optional argument is for a Uniform Random Number Generator from Boost.Random. When not provided the `mt19937` +generator is used. Note that when producing random primes then you should probably use a different random number generator +to produce possible primes, than used internally for testing whether the value is prime. It also helps of course to seed the +generators with some source of randomness. + +The following example searches for a prime `p` for which `(p-1)/2` is also probably prime: + +[safe_prime] + +[endsect] + [endsect] [section:ref Reference] diff --git a/example/safe_prime.cpp b/example/safe_prime.cpp new file mode 100644 index 00000000..12684659 --- /dev/null +++ b/example/safe_prime.cpp @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +//[safe_prime + +#include +#include +#include +#include + +int main() +{ + using namespace boost::random; + using namespace boost::multiprecision; + + typedef mpz_int int_type; + mt11213b base_gen(clock()); + independent_bits_engine gen(base_gen); + // + // We must use a different generator for the tests and number generation, otherwise + // we get false positives. + // + mt19937 gen2(clock()); + + for(unsigned i = 0; i < 100000; ++i) + { + int_type n = gen(); + if(miller_rabin_test(n, 25, gen2)) + { + // Value n is probably prime, see if (n-1)/2 is also prime: + std::cout << "We have a probable prime with value: " << std::hex << std::showbase << n << std::endl; + if(miller_rabin_test((n-1)/2, 25, gen2)) + { + std::cout << "We have a safe prime with value: " << std::hex << std::showbase << n << std::endl; + return 0; + } + } + } + std::cout << "Ooops, no safe primes were found" << std::endl; + return 1; +} + +//] diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp new file mode 100644 index 00000000..f95713db --- /dev/null +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -0,0 +1,106 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_MR_HPP +#define BOOST_MP_MR_HPP + +#include + +namespace boost{ +namespace multiprecision{ +// +// Calculate (a^b)%c: +// +template +void expmod(const mp_number& a, mp_number b, const mp_number& c, mp_number& result) +{ + typedef mp_number number_type; + number_type x(1), y(a); + while(b > 0) + { + if(b & 1) + { + x = (x * y) % c; + } + y = (y * y) % c; + b /= 2; + } + result = x % c; +} + +template +bool miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen) +{ + typedef mp_number number_type; + + static const unsigned small_factors[] = { + 3u, 5u, 7u, 11u, 13u, 17u, 19u, 23u, 29u, 31u, 37u, 41u, 43u, 47u, 53u }; + + if(n < 2) + return false; + if((n & 1) == 0) + return false; + // + // Sanity check for small factors: + // + + number_type q = (n - 1) >> 1; + unsigned k = 1; + while((q & 1) == 0) + { + q >>= 1; + ++k; + } + // Declare our random number generator: + boost::random::uniform_int_distribution dist(0, n); + number_type nm1 = n - 1; + // + // Execute the trials: + // + for(unsigned i = 0; i < trials; ++i) + { + number_type x = dist(gen); + number_type y; + expmod(x, q, n, y); + unsigned j = 0; + while(true) + { + if((y == nm1) || ((y == 1) && (j == 0))) + break; + if(y == 1) + return false; // test failed + if(++j == k) + return false; // failed + y = (y * y) % n; + } + } + return true; // Yeheh! probably prime. +} + +template +bool miller_rabin_test(const mp_number& x, unsigned trials) +{ + static mt19937 gen; + return miller_rabin_test(x, trials, gen); +} + +template +bool miller_rabin_test(const detail::mp_exp & n, unsigned trials, Engine& gen) +{ + typedef typename detail::mp_exp::result_type number_type; + return miller_rabin_test(number_type(n), trials, gen); +} + +template +bool miller_rabin_test(const detail::mp_exp & n, unsigned trials) +{ + typedef typename detail::mp_exp::result_type number_type; + return miller_rabin_test(number_type(n), trials); +} + +}} // namespaces + +#endif + diff --git a/include/boost/multiprecision/random.hpp b/include/boost/multiprecision/random.hpp index 096ab8f1..4d82fedb 100644 --- a/include/boost/multiprecision/random.hpp +++ b/include/boost/multiprecision/random.hpp @@ -1,4 +1,6 @@ /////////////////////////////////////////////////////////////// +// Copyright Jens Maurer 2006-1011 +// Copyright Steven Watanabe 2011 // Copyright 2012 John Maddock. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 511e14fb..eeed5577 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -602,6 +602,14 @@ run test_cpp_int.cpp gmp release # otherwise runtime is too slow!! ; +run test_miller_rabin.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] + release # otherwise runtime is too slow!! + ; + run test_rational_io.cpp $(TOMMATH) : # command line : # input files diff --git a/test/test_miller_rabin.cpp b/test/test_miller_rabin.cpp new file mode 100644 index 00000000..084d1ffb --- /dev/null +++ b/test/test_miller_rabin.cpp @@ -0,0 +1,47 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include +#include +#include +#include "test.hpp" + +int main() +{ + // + // Very simple test program to verify that the GMP's Miller-Rabin + // implementation and this one agree on whether some random numbers + // are prime or not. Of course these are probabilistic tests so there's + // no reason why they should actually agree - except the probability of + // disagreement for 25 trials is almost infinitely small. + // + using namespace boost::random; + using namespace boost::multiprecision; + independent_bits_engine gen; + // + // We must use a different generator for the tests and number generation, otherwise + // we get false positives. Further we use the same random number engine for the + // Miller Rabin test as GMP uses internally: + // + mt19937 gen2; + + for(unsigned i = 0; i < 10000; ++i) + { + mpz_int n = gen(); + bool is_prime_boost = miller_rabin_test(n, 25, gen2); + bool is_gmp_prime = mpz_probab_prime_p(n.backend().data(), 25); + if(is_prime_boost && is_gmp_prime) + { + std::cout << "We have a prime: " << std::hex << std::showbase << n << std::endl; + } + if(is_prime_boost != is_gmp_prime) + std::cout << std::hex << std::showbase << "n = " << n << std::endl; + BOOST_CHECK_EQUAL(is_prime_boost, is_gmp_prime); + } + return 0; +} + + From 6deafa525bafcfee27611a53eec9b1e809087bef Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 17 Mar 2012 13:23:32 +0000 Subject: [PATCH 136/256] Fix bug in cpp_int shown up by random number generations and change example to use it. [SVN r77359] --- doc/html/index.html | 2 +- example/safe_prime.cpp | 4 ++-- include/boost/multiprecision/cpp_int.hpp | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/html/index.html b/doc/html/index.html index abfa54c5..bc91e441 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -58,7 +58,7 @@
    - +

    Last revised: March 17, 2012 at 09:04:10 GMT

    Last revised: March 17, 2012 at 13:19:03 GMT


    diff --git a/example/safe_prime.cpp b/example/safe_prime.cpp index 12684659..71adf4f3 100644 --- a/example/safe_prime.cpp +++ b/example/safe_prime.cpp @@ -5,7 +5,7 @@ //[safe_prime -#include +#include #include #include #include @@ -15,7 +15,7 @@ int main() using namespace boost::random; using namespace boost::multiprecision; - typedef mpz_int int_type; + typedef cpp_int int_type; mt11213b base_gen(clock()); independent_bits_engine gen(base_gen); // diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 60d9cc50..667bd3d8 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -745,7 +745,9 @@ inline void add_unsigned(cpp_int_backend& result, co // Nothing fancy, just let uintmax_t take the strain: double_limb_type carry = 0; unsigned m, x; - minmax(a.size(), b.size(), m, x); + unsigned as = a.size(); + unsigned bs = b.size(); + minmax(as, bs, m, x); if(x == 1) { bool s = a.sign(); @@ -759,7 +761,7 @@ inline void add_unsigned(cpp_int_backend& result, co typename cpp_int_backend::limb_pointer pr = result.limbs(); typename cpp_int_backend::limb_pointer pr_end = pr + m; - if(a.size() < b.size()) + if(as < bs) swap(pa, pb); // First where a and b overlap: From 2349943cdb2487a547ba5c508016f40280beda92 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 17 Mar 2012 19:43:26 +0000 Subject: [PATCH 137/256] Fix some GMP int errors, and simplify modulus code. Fix some cpp_int errors. Improve cpp_int tests. [SVN r77362] --- include/boost/multiprecision/cpp_int.hpp | 2 +- include/boost/multiprecision/gmp.hpp | 88 +++------------------- test/test_cpp_int.cpp | 94 +++++++++++++++++++++++- 3 files changed, 105 insertions(+), 79 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 667bd3d8..b022d658 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1104,7 +1104,7 @@ inline void eval_multiply(cpp_int_backend& result, c typename cpp_int_backend::limb_pointer pa = a.limbs(); while(p != pe) { - carry += static_cast(*pa * static_cast(val)); + carry += static_cast(*pa) * static_cast(val); *p = static_cast(carry); carry >>= cpp_int_backend::limb_bits; ++p, ++pa; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 47eb5f1b..f59b198f 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1110,21 +1110,11 @@ inline void eval_multiply(gmp_int& t, const gmp_int& o) } inline void eval_divide(gmp_int& t, const gmp_int& o) { - mpz_div(t.data(), t.data(), o.data()); + mpz_tdiv_q(t.data(), t.data(), o.data()); } inline void eval_modulus(gmp_int& t, const gmp_int& o) { - bool neg = mpz_sgn(t.data()) < 0; - bool neg2 = mpz_sgn(o.data()) < 0; - mpz_mod(t.data(), t.data(), o.data()); - if(neg && mpz_sgn(t.data()) != 0) - { - if(!neg2) - t.negate(); - mpz_add(t.data(), t.data(), o.data()); - if(!neg2) - t.negate(); - } + mpz_tdiv_r(t.data(), t.data(), o.data()); } inline void eval_add(gmp_int& t, unsigned long i) { @@ -1140,18 +1130,11 @@ inline void eval_multiply(gmp_int& t, unsigned long i) } inline void eval_modulus(gmp_int& t, unsigned long i) { - bool neg = mpz_sgn(t.data()) < 0; - mpz_mod_ui(t.data(), t.data(), i); - if(neg && mpz_sgn(t.data()) != 0) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), i); - t.negate(); - } + mpz_tdiv_r_ui(t.data(), t.data(), i); } inline void eval_divide(gmp_int& t, unsigned long i) { - mpz_div_ui(t.data(), t.data(), i); + mpz_tdiv_q_ui(t.data(), t.data(), i); } inline void eval_add(gmp_int& t, long i) { @@ -1175,26 +1158,11 @@ inline void eval_multiply(gmp_int& t, long i) } inline void eval_modulus(gmp_int& t, long i) { - bool neg = mpz_sgn(t.data()) < 0; - bool neg2 = i < 0; - mpz_mod_ui(t.data(), t.data(), std::abs(i)); - if(neg && mpz_sgn(t.data()) != 0) - { - if(!neg2) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), std::abs(i)); - t.negate(); - } - else - { - mpz_sub_ui(t.data(), t.data(), std::abs(i)); - } - } + mpz_tdiv_r_ui(t.data(), t.data(), std::abs(i)); } inline void eval_divide(gmp_int& t, long i) { - mpz_div_ui(t.data(), t.data(), std::abs(i)); + mpz_tdiv_q_ui(t.data(), t.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); } @@ -1248,21 +1216,11 @@ inline void eval_multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) } inline void eval_divide(gmp_int& t, const gmp_int& p, const gmp_int& o) { - mpz_div(t.data(), p.data(), o.data()); + mpz_tdiv_q(t.data(), p.data(), o.data()); } inline void eval_modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) { - bool neg = mpz_sgn(p.data()) < 0; - bool neg2 = mpz_sgn(o.data()) < 0; - mpz_mod(t.data(), p.data(), o.data()); - if(neg && mpz_sgn(t.data()) != 0) - { - if(!neg2) - t.negate(); - mpz_add(t.data(), t.data(), o.data()); - if(!neg2) - t.negate(); - } + mpz_tdiv_r(t.data(), p.data(), o.data()); } inline void eval_add(gmp_int& t, const gmp_int& p, unsigned long i) { @@ -1278,18 +1236,11 @@ inline void eval_multiply(gmp_int& t, const gmp_int& p, unsigned long i) } inline void eval_modulus(gmp_int& t, const gmp_int& p, unsigned long i) { - bool neg = mpz_sgn(p.data()) < 0; - mpz_mod_ui(t.data(), p.data(), i); - if(neg && mpz_sgn(t.data()) != 0) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), i); - t.negate(); - } + mpz_tdiv_r_ui(t.data(), p.data(), i); } inline void eval_divide(gmp_int& t, const gmp_int& p, unsigned long i) { - mpz_div_ui(t.data(), p.data(), i); + mpz_tdiv_q_ui(t.data(), p.data(), i); } inline void eval_add(gmp_int& t, const gmp_int& p, long i) { @@ -1313,26 +1264,11 @@ inline void eval_multiply(gmp_int& t, const gmp_int& p, long i) } inline void eval_modulus(gmp_int& t, const gmp_int& p, long i) { - bool neg = mpz_sgn(p.data()) < 0; - bool neg2 = i < 0; - mpz_mod_ui(t.data(), p.data(), std::abs(i)); - if(neg && mpz_sgn(t.data()) != 0) - { - if(!neg2) - { - t.negate(); - mpz_add_ui(t.data(), t.data(), std::abs(i)); - t.negate(); - } - else - { - mpz_sub_ui(t.data(), t.data(), std::abs(i)); - } - } + mpz_tdiv_r_ui(t.data(), p.data(), std::abs(i)); } inline void eval_divide(gmp_int& t, const gmp_int& p, long i) { - mpz_div_ui(t.data(), p.data(), std::abs(i)); + mpz_tdiv_q_ui(t.data(), p.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); } diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index 6cc69def..f806f125 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -65,6 +65,7 @@ void test() mpz_int d = generate_random(32); int si = d.convert_to(); + unsigned ui = si; test_type a1 = a.str(); test_type b1 = b.str(); @@ -76,56 +77,104 @@ void test() BOOST_CHECK_EQUAL(c.str(), c1.str()); BOOST_CHECK_EQUAL(d.str(), d1.str()); BOOST_CHECK_EQUAL(mpz_int(a+b).str(), test_type(a1 + b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)+=b).str(), (test_type(a1) += b1).str()); + BOOST_CHECK_EQUAL((mpz_int(b)+=a).str(), (test_type(b1) += a1).str()); BOOST_CHECK_EQUAL(mpz_int(a-b).str(), test_type(a1 - b1).str()); BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)+b).str(), test_type(test_type(-a1) + b1).str()); BOOST_CHECK_EQUAL(mpz_int(mpz_int(-a)-b).str(), test_type(test_type(-a1) - b1).str()); BOOST_CHECK_EQUAL(mpz_int(c * d).str(), test_type(c1 * d1).str()); + BOOST_CHECK_EQUAL((mpz_int(c)*=d).str(), (test_type(c1) *= d1).str()); + BOOST_CHECK_EQUAL((mpz_int(d)*=c).str(), (test_type(d1) *= c1).str()); BOOST_CHECK_EQUAL(mpz_int(c * -d).str(), test_type(c1 * -d1).str()); BOOST_CHECK_EQUAL(mpz_int(-c * d).str(), test_type(-c1 * d1).str()); + BOOST_CHECK_EQUAL((mpz_int(c)*=-d).str(), (test_type(c1) *= -d1).str()); + BOOST_CHECK_EQUAL((mpz_int(-d)*=c).str(), (test_type(-d1) *= c1).str()); BOOST_CHECK_EQUAL(mpz_int(b * c).str(), test_type(b1 * c1).str()); BOOST_CHECK_EQUAL(mpz_int(a / b).str(), test_type(a1 / b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)/=b).str(), (test_type(a1) /= b1).str()); BOOST_CHECK_EQUAL(mpz_int(a / -b).str(), test_type(a1 / -b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a / b).str(), test_type(-a1 / b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)/=-b).str(), (test_type(a1) /= -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)/=b).str(), (test_type(-a1) /= b1).str()); BOOST_CHECK_EQUAL(mpz_int(a / d).str(), test_type(a1 / d1).str()); BOOST_CHECK_EQUAL(mpz_int(a % b).str(), test_type(a1 % b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)%=b).str(), (test_type(a1) %= b1).str()); BOOST_CHECK_EQUAL(mpz_int(a % -b).str(), test_type(a1 % -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)%=-b).str(), (test_type(a1) %= -b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a % b).str(), test_type(-a1 % b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)%=b).str(), (test_type(-a1) %= b1).str()); BOOST_CHECK_EQUAL(mpz_int(a % d).str(), test_type(a1 % d1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)%=d).str(), (test_type(a1) %= d1).str()); // bitwise ops: BOOST_CHECK_EQUAL(mpz_int(a|b).str(), test_type(a1 | b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)|=b).str(), (test_type(a1) |= b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a|b).str(), test_type(-a1 | b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)|=b).str(), (test_type(-a1) |= b1).str()); BOOST_CHECK_EQUAL(mpz_int(a|-b).str(), test_type(a1 | -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)|=-b).str(), (test_type(a1) |= -b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a|-b).str(), test_type(-a1 | -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)|=-b).str(), (test_type(-a1) |= -b1).str()); BOOST_CHECK_EQUAL(mpz_int(a&b).str(), test_type(a1 & b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)&=b).str(), (test_type(a1) &= b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a&b).str(), test_type(-a1 & b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)&=b).str(), (test_type(-a1) &= b1).str()); BOOST_CHECK_EQUAL(mpz_int(a&-b).str(), test_type(a1 & -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)&=-b).str(), (test_type(a1) &= -b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a&-b).str(), test_type(-a1 & -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)&=-b).str(), (test_type(-a1) &= -b1).str()); BOOST_CHECK_EQUAL(mpz_int(a^b).str(), test_type(a1 ^ b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)^=b).str(), (test_type(a1) ^= b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a^b).str(), test_type(-a1 ^ b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)^=b).str(), (test_type(-a1) ^= b1).str()); BOOST_CHECK_EQUAL(mpz_int(a^-b).str(), test_type(a1 ^ -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)^=-b).str(), (test_type(a1) ^= -b1).str()); BOOST_CHECK_EQUAL(mpz_int(-a^-b).str(), test_type(-a1 ^ -b1).str()); - // Now check operations involving integers: + BOOST_CHECK_EQUAL((mpz_int(-a)^=-b).str(), (test_type(-a1) ^= -b1).str()); + // Now check operations involving signed integers: BOOST_CHECK_EQUAL(mpz_int(a + si).str(), test_type(a1 + si).str()); BOOST_CHECK_EQUAL(mpz_int(a + -si).str(), test_type(a1 + -si).str()); BOOST_CHECK_EQUAL(mpz_int(-a + si).str(), test_type(-a1 + si).str()); BOOST_CHECK_EQUAL(mpz_int(si + a).str(), test_type(si + a1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)+=si).str(), (test_type(a1) += si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)+=-si).str(), (test_type(a1) += -si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)+=si).str(), (test_type(-a1) += si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)+=-si).str(), (test_type(-a1) += -si).str()); BOOST_CHECK_EQUAL(mpz_int(a - si).str(), test_type(a1 - si).str()); BOOST_CHECK_EQUAL(mpz_int(a - -si).str(), test_type(a1 - -si).str()); BOOST_CHECK_EQUAL(mpz_int(-a - si).str(), test_type(-a1 - si).str()); BOOST_CHECK_EQUAL(mpz_int(si - a).str(), test_type(si - a1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)-=si).str(), (test_type(a1) -= si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)-=-si).str(), (test_type(a1) -= -si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)-=si).str(), (test_type(-a1) -= si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)-=-si).str(), (test_type(-a1) -= -si).str()); BOOST_CHECK_EQUAL(mpz_int(b * si).str(), test_type(b1 * si).str()); BOOST_CHECK_EQUAL(mpz_int(b * -si).str(), test_type(b1 * -si).str()); BOOST_CHECK_EQUAL(mpz_int(-b * si).str(), test_type(-b1 * si).str()); BOOST_CHECK_EQUAL(mpz_int(si * b).str(), test_type(si * b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)*=si).str(), (test_type(a1) *= si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)*=-si).str(), (test_type(a1) *= -si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)*=si).str(), (test_type(-a1) *= si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)*=-si).str(), (test_type(-a1) *= -si).str()); BOOST_CHECK_EQUAL(mpz_int(a / si).str(), test_type(a1 / si).str()); BOOST_CHECK_EQUAL(mpz_int(a / -si).str(), test_type(a1 / -si).str()); BOOST_CHECK_EQUAL(mpz_int(-a / si).str(), test_type(-a1 / si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)/=si).str(), (test_type(a1) /= si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)/=-si).str(), (test_type(a1) /= -si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)/=si).str(), (test_type(-a1) /= si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)/=-si).str(), (test_type(-a1) /= -si).str()); BOOST_CHECK_EQUAL(mpz_int(a % si).str(), test_type(a1 % si).str()); BOOST_CHECK_EQUAL(mpz_int(a % -si).str(), test_type(a1 % -si).str()); BOOST_CHECK_EQUAL(mpz_int(-a % si).str(), test_type(-a1 % si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)%=si).str(), (test_type(a1) %= si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)%=-si).str(), (test_type(a1) %= -si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)%=si).str(), (test_type(-a1) %= si).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)%=-si).str(), (test_type(-a1) %= -si).str()); BOOST_CHECK_EQUAL(mpz_int(a|si).str(), test_type(a1 | si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)|=si).str(), (test_type(a1) |= si).str()); BOOST_CHECK_EQUAL(mpz_int(a&si).str(), test_type(a1 & si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)&=si).str(), (test_type(a1) &= si).str()); BOOST_CHECK_EQUAL(mpz_int(a^si).str(), test_type(a1 ^ si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)^=si).str(), (test_type(a1) ^= si).str()); BOOST_CHECK_EQUAL(mpz_int(si|a).str(), test_type(si|a1).str()); BOOST_CHECK_EQUAL(mpz_int(si&a).str(), test_type(si&a1).str()); BOOST_CHECK_EQUAL(mpz_int(si^a).str(), test_type(si^a1).str()); @@ -137,6 +186,47 @@ void test() BOOST_CHECK_EQUAL(mpz_int(lcm(-c, -d)).str(), test_type(lcm(-c1, -d1)).str()); BOOST_CHECK_EQUAL(mpz_int(gcd(a, -b)).str(), test_type(gcd(a1, -b1)).str()); BOOST_CHECK_EQUAL(mpz_int(lcm(c, -d)).str(), test_type(lcm(c1, -d1)).str()); + // Now check operations involving unsigned integers: + BOOST_CHECK_EQUAL(mpz_int(a + ui).str(), test_type(a1 + ui).str()); + BOOST_CHECK_EQUAL(mpz_int(-a + ui).str(), test_type(-a1 + ui).str()); + BOOST_CHECK_EQUAL(mpz_int(ui + a).str(), test_type(ui + a1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)+=ui).str(), (test_type(a1) += ui).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)+=ui).str(), (test_type(-a1) += ui).str()); + BOOST_CHECK_EQUAL(mpz_int(a - ui).str(), test_type(a1 - ui).str()); + BOOST_CHECK_EQUAL(mpz_int(-a - ui).str(), test_type(-a1 - ui).str()); + BOOST_CHECK_EQUAL(mpz_int(ui - a).str(), test_type(ui - a1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)-=ui).str(), (test_type(a1) -= ui).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)-=ui).str(), (test_type(-a1) -= ui).str()); + BOOST_CHECK_EQUAL(mpz_int(b * ui).str(), test_type(b1 * ui).str()); + BOOST_CHECK_EQUAL(mpz_int(-b * ui).str(), test_type(-b1 * ui).str()); + BOOST_CHECK_EQUAL(mpz_int(ui * b).str(), test_type(ui * b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)*=ui).str(), (test_type(a1) *= ui).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)*=ui).str(), (test_type(-a1) *= ui).str()); + BOOST_CHECK_EQUAL(mpz_int(a / ui).str(), test_type(a1 / ui).str()); + BOOST_CHECK_EQUAL(mpz_int(-a / ui).str(), test_type(-a1 / ui).str()); + BOOST_CHECK_EQUAL((mpz_int(a)/=ui).str(), (test_type(a1) /= ui).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)/=ui).str(), (test_type(-a1) /= ui).str()); + BOOST_CHECK_EQUAL(mpz_int(a % ui).str(), test_type(a1 % ui).str()); + BOOST_CHECK_EQUAL(mpz_int(-a % ui).str(), test_type(-a1 % ui).str()); + BOOST_CHECK_EQUAL((mpz_int(a)%=ui).str(), (test_type(a1) %= ui).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)%=ui).str(), (test_type(-a1) %= ui).str()); + BOOST_CHECK_EQUAL(mpz_int(a|ui).str(), test_type(a1 | ui).str()); + BOOST_CHECK_EQUAL((mpz_int(a)|=ui).str(), (test_type(a1) |= ui).str()); + BOOST_CHECK_EQUAL(mpz_int(a&ui).str(), test_type(a1 & ui).str()); + BOOST_CHECK_EQUAL((mpz_int(a)&=ui).str(), (test_type(a1) &= ui).str()); + BOOST_CHECK_EQUAL(mpz_int(a^ui).str(), test_type(a1 ^ ui).str()); + BOOST_CHECK_EQUAL((mpz_int(a)^=ui).str(), (test_type(a1) ^= ui).str()); + BOOST_CHECK_EQUAL(mpz_int(ui|a).str(), test_type(ui|a1).str()); + BOOST_CHECK_EQUAL(mpz_int(ui&a).str(), test_type(ui&a1).str()); + BOOST_CHECK_EQUAL(mpz_int(ui^a).str(), test_type(ui^a1).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(a, b)).str(), test_type(gcd(a1, b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(c, d)).str(), test_type(lcm(c1, d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(-a, b)).str(), test_type(gcd(-a1, b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(-c, d)).str(), test_type(lcm(-c1, d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(-a, -b)).str(), test_type(gcd(-a1, -b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(-c, -d)).str(), test_type(lcm(-c1, -d1)).str()); + BOOST_CHECK_EQUAL(mpz_int(gcd(a, -b)).str(), test_type(gcd(a1, -b1)).str()); + BOOST_CHECK_EQUAL(mpz_int(lcm(c, -d)).str(), test_type(lcm(c1, -d1)).str()); if(std::numeric_limits::is_modulo) { @@ -197,7 +287,7 @@ int main() { using namespace boost::multiprecision; test(); - test > >(); + test > >(); return boost::report_errors(); } From 24cff33935d13b3ad9d362c083376f162c24a79c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 21 Mar 2012 09:19:57 +0000 Subject: [PATCH 138/256] Update Miller Rabin test to use small prime filtering. Add some new integer type operations. Update performance tests to match. [SVN r77451] --- doc/html/boost_multiprecision/map.html | 6 +- doc/html/boost_multiprecision/perf.html | 9 +- .../perf/float_performance.html | 6 +- .../perf/int_real_world.html | 217 +++ .../perf/integer_performance.html | 1648 ++++++++++------- .../perf/rational_performance.html | 905 +++++++++ .../boost_multiprecision/perf/realworld.html | 11 +- doc/html/boost_multiprecision/tut/ints.html | 15 +- .../boost_multiprecision/tut/primetest.html | 107 ++ doc/html/boost_multiprecision/tut/random.html | 157 ++ .../boost_multiprecision/tut/rational.html | 7 +- doc/html/index.html | 9 +- doc/multiprecision.qbk | 296 ++- include/boost/multiprecision/cpp_int.hpp | 176 +- include/boost/multiprecision/gmp.hpp | 27 + include/boost/multiprecision/integer_ops.hpp | 62 + include/boost/multiprecision/miller_rabin.hpp | 79 +- include/boost/multiprecision/tommath.hpp | 29 + performance/miller_rabin_performance.cpp | 164 ++ performance/performance_test-msvc-10.log | 1161 ++++++------ test/test_arithmetic.cpp | 19 + test/test_cpp_int.cpp | 17 +- 22 files changed, 3727 insertions(+), 1400 deletions(-) create mode 100644 doc/html/boost_multiprecision/perf/int_real_world.html create mode 100644 doc/html/boost_multiprecision/perf/rational_performance.html create mode 100644 doc/html/boost_multiprecision/tut/primetest.html create mode 100644 doc/html/boost_multiprecision/tut/random.html create mode 100644 include/boost/multiprecision/integer_ops.hpp create mode 100644 performance/miller_rabin_performance.cpp diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html index 891900e9..4f482f06 100644 --- a/doc/html/boost_multiprecision/map.html +++ b/doc/html/boost_multiprecision/map.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -32,7 +32,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html index e62c527a..d36eb092 100644 --- a/doc/html/boost_multiprecision/perf.html +++ b/doc/html/boost_multiprecision/perf.html @@ -7,7 +7,7 @@ - +
    @@ -18,11 +18,16 @@ Performance Comparison

    diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html index 2b46f507..61490d94 100644 --- a/doc/html/boost_multiprecision/perf/float_performance.html +++ b/doc/html/boost_multiprecision/perf/float_performance.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -955,7 +955,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html new file mode 100644 index 00000000..5705e869 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/int_real_world.html @@ -0,0 +1,217 @@ + + + +Integer Real World Tests + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + These tests + measure the time taken to generate 1000 128-bit random numbers and test for + primality using the Miller Rabin test. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and libtommath-0.42.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Integer Type +

    +
    +

    + Relative (and Absolute) Times +

    +
    +

    + cpp_int +

    +
    +

    + 1.45089(0.481248s) +

    +
    +

    + cpp_int (no Expression templates) +

    +
    +

    + 1.61489(0.535646s) +

    +
    +

    + cpp_int (64-bit cache) +

    +
    +

    + 1.39273(0.461956s) +

    +
    +

    + cpp_int (256-bit cache) +

    +
    +

    + 1.37743(0.456884s) +

    +
    +

    + cpp_int (512-bit cache) +

    +
    +

    + 1.0919(0.362175s) +

    +
    +

    + cpp_int (1024-bit cache) +

    +
    +

    + 1.10864(0.367726s) +

    +
    +

    + mp_int +

    +
    +

    + 3.92956(1.3034s) +

    +
    +

    + mp_int (no Expression templates) +

    +
    +

    + 4.02496(1.33505s) +

    +
    +

    + mp_int1024_t +

    +
    +

    + 1.01094(0.335322s) +

    +
    +

    + mp_int1024_t (no Expression templates) +

    +
    +

    + 1(0.331692s) +

    +
    +

    + mpz_int +

    +
    +

    + 1.08472(0.359793s) +

    +
    +

    + mpz_int (no Expression templates) +

    +
    +

    + 1.20865(0.400901s) +

    +
    +

    + It's interesting to note that expression templates have little effect here + - perhaps because the actual expressions involved are relatively trivial + in this case - so the time taken for multiplication and division tends to + dominate. Also note how increasing the internal cache size used by cpp_int is quite effective in this case + in cutting out memory allocations altogether - cutting about a third off + the total runtime. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html index 4cca438f..b5cc5574 100644 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -7,11 +7,11 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -33,9 +33,8 @@ The tests were run on 32-bit Windows Vista machine.

    - Note that Linux x64 tests showed significantly worse performance for fixed_int division than on Win32 (or possibly - GMP behaves much better in that case). - Otherwise the results are much the same. + Linux x86_64 results are broadly similar, except that libtommath performs + much better there.

    Table 1.17. Operator +

    @@ -46,7 +45,6 @@ - @@ -54,11 +52,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -84,32 +77,54 @@

    - fixed_int + cpp_int

    - 1 (0.0031291s) + 1.24574 (0.0270133s)

    - 1 (0.00703043s) + 1.09665 (0.0352319s)

    - 1 (0.0163669s) + 1.25708 (0.0524047s)

    - 1 (0.0326567s) + 1.31488 (0.08777s) +

    + + + + +

    + cpp_int(fixed)

    - 1 (0.0603087s) + 1.05787 (0.0229394s) +

    + + +

    + 1 (0.0321268s) +

    + + +

    + 1.16171 (0.0484289s) +

    + + +

    + 1.24017 (0.0827832s)

    @@ -121,27 +136,22 @@

    - 12.4866 (0.0390717s) + 2.08016 (0.0451073s)

    - 6.01034 (0.0422553s) + 1.33792 (0.042983s)

    - 2.65628 (0.0434751s) + 1.19676 (0.0498904s)

    - 1.54295 (0.0503875s) -

    - - -

    - 1.16477 (0.0702458s) + 1 (0.0667514s)

    @@ -153,27 +163,22 @@

    - 6.03111 (0.018872s) + 1 (0.0216845s)

    - 3.08173 (0.0216659s) + 1.07779 (0.0346258s)

    - 1.84243 (0.0301548s) + 1 (0.0416877s)

    - 1.30199 (0.0425188s) -

    - - -

    - 1.18909 (0.0717123s) + 1.06344 (0.0709863s)

    @@ -189,7 +194,6 @@ - @@ -197,11 +201,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -227,32 +226,54 @@

    - fixed_int + cpp_int

    - 1 (0.00335294s) + 1.46244 (0.0202077s)

    - 1 (0.00376116s) + 1.20665 (0.0238576s)

    - 1 (0.00985174s) + 1.17647 (0.0258293s)

    - 1 (0.0119345s) + 1.12424 (0.0317931s) +

    + + + + +

    + cpp_int(fixed)

    - 1 (0.0170918s) + 1 (0.0138178s) +

    + + +

    + 1 (0.0197719s) +

    + + +

    + 1 (0.0219548s) +

    + + +

    + 1 (0.0282796s)

    @@ -264,27 +285,22 @@

    - 9.47407 (0.031766s) + 2.15321 (0.0297527s)

    - 8.44794 (0.0317741s) + 2.09834 (0.041488s)

    - 4.23857 (0.0417573s) + 2.89935 (0.0636546s)

    - 5.40856 (0.0645488s) -

    - - -

    - 6.31314 (0.107903s) + 3.70262 (0.104709s)

    @@ -296,27 +312,22 @@

    - 67.0025 (0.224655s) + 17.1419 (0.236864s)

    - 60.4203 (0.22725s) + 12.9762 (0.256563s)

    - 25.1834 (0.2481s) + 12.3275 (0.270648s)

    - 23.2996 (0.27807s) -

    - - -

    - 17.1743 (0.293538s) + 10.7373 (0.303648s)

    @@ -332,7 +343,6 @@ - @@ -340,11 +350,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -370,32 +375,54 @@

    - fixed_int + cpp_int

    - 1 (0.00339191s) + 1.15385 (0.029665s)

    - 1 (0.0073172s) + 1.08217 (0.0369886s)

    - 1 (0.0166428s) + 1.05882 (0.051534s)

    - 1 (0.0349375s) + 1.12132 (0.0822725s) +

    + + + + +

    + cpp_int(fixed)

    - 1 (0.0600083s) + 1 (0.0257095s) +

    + + +

    + 1 (0.0341801s) +

    + + +

    + 1 (0.0486711s) +

    + + +

    + 1.08659 (0.0797242s)

    @@ -407,27 +434,22 @@

    - 12.5182 (0.0424608s) + 1.56685 (0.040283s)

    - 5.57936 (0.0408253s) + 1.32917 (0.0454312s)

    - 2.78496 (0.0463496s) + 1.06917 (0.0520378s)

    - 1.48373 (0.051838s) -

    - - -

    - 1.29928 (0.0779673s) + 1 (0.0733708s)

    @@ -439,27 +461,22 @@

    - 7.00782 (0.0237699s) + 1.059 (0.0272264s)

    - 3.69919 (0.0270677s) + 1.16974 (0.0399818s)

    - 2.29645 (0.0382195s) + 1.01303 (0.0493054s)

    - 1.39777 (0.0488346s) -

    - - -

    - 1.28243 (0.0769566s) + 1.03375 (0.0758472s)

    @@ -475,7 +492,6 @@ - @@ -483,11 +499,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -513,32 +524,54 @@

    - fixed_int + cpp_int

    - 1 (0.00250933s) + 1.51665 (0.0157196s)

    - 1 (0.00358055s) + 1.31513 (0.0200533s)

    - 1 (0.0103282s) + 1.29599 (0.0235066s)

    - 1 (0.0119127s) + 1.21534 (0.0266136s) +

    + + + + +

    + cpp_int(fixed)

    - 1 (0.0176089s) + 1 (0.0103647s) +

    + + +

    + 1 (0.0152482s) +

    + + +

    + 1 (0.018138s) +

    + + +

    + 1 (0.021898s)

    @@ -550,27 +583,22 @@

    - 12.093 (0.0303454s) + 2.7938 (0.0289568s)

    - 8.50898 (0.0304669s) + 2.55493 (0.038958s)

    - 3.9284 (0.0405733s) + 3.12248 (0.0566356s)

    - 5.03037 (0.0599252s) -

    - - -

    - 5.96617 (0.105058s) + 4.48855 (0.0982904s)

    @@ -582,27 +610,22 @@

    - 80.8477 (0.202873s) + 20.8695 (0.216305s)

    - 57.8371 (0.207089s) + 15.0705 (0.229797s)

    - 21.3372 (0.220375s) + 13.4093 (0.243217s)

    - 23.526 (0.280258s) -

    - - -

    - 14.793 (0.260488s) + 12.2599 (0.268468s)

    @@ -618,7 +641,6 @@ - @@ -626,11 +648,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -656,32 +673,54 @@

    - fixed_int + cpp_int

    - 1 (0.0223481s) + 1.29504 (0.0731032s)

    - 1 (0.0375288s) + 1.55431 (0.196132s)

    - 1 (0.120353s) + 1.4363 (0.656569s)

    - 1 (0.439147s) + 1.63701 (2.47859s) +

    + + + + +

    + cpp_int(fixed)

    - 1 (1.46969s) + 1 (0.0564485s) +

    + + +

    + 1.16604 (0.147138s) +

    + + +

    + 1 (0.457124s) +

    + + +

    + 1 (1.5141s)

    @@ -693,27 +732,22 @@

    - 2.50746 (0.0560369s) + 1.19574 (0.0674975s)

    - 1.76676 (0.0663044s) + 1 (0.126186s)

    - 1.06052 (0.127636s) + 1.16627 (0.53313s)

    - 1.22558 (0.53821s) -

    - - -

    - 1.03538 (1.52168s) + 1.02906 (1.5581s)

    @@ -725,27 +759,22 @@

    - 3.00028 (0.0670506s) + 1.97229 (0.111333s)

    - 2.97696 (0.111722s) + 2.67087 (0.337027s)

    - 2.86257 (0.34452s) + 2.13031 (0.973817s)

    - 2.26661 (0.995374s) -

    - - -

    - 2.12926 (3.12935s) + 2.05869 (3.11706s)

    @@ -761,7 +790,6 @@ - @@ -769,11 +797,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -799,32 +822,54 @@

    - fixed_int + cpp_int

    - 1 (0.00444316s) + 1.34609 (0.030315s)

    - 1 (0.0135739s) + 1.57086 (0.0407838s)

    - 1 (0.0192615s) + 1.60154 (0.0542267s)

    - 1 (0.0328339s) + 1.67808 (0.0804984s) +

    + + + + +

    + cpp_int(fixed)

    - 1.18198 (0.0567364s) + 1.29783 (0.0292279s) +

    + + +

    + 1.58263 (0.0410894s) +

    + + +

    + 1.61543 (0.054697s) +

    + + +

    + 1.66841 (0.0800346s)

    @@ -836,27 +881,22 @@

    - 4.57776 (0.0203397s) + 1 (0.0225207s)

    - 1.79901 (0.0244196s) + 1 (0.0259628s)

    - 1.32814 (0.025582s) + 1 (0.033859s)

    - 1.01453 (0.033311s) -

    - - -

    - 1 (0.048001s) + 1 (0.0479706s)

    @@ -868,27 +908,22 @@

    - 53.8709 (0.239357s) + 12.4278 (0.279882s)

    - 18.3773 (0.249452s) + 11.9045 (0.309074s)

    - 14.2088 (0.273682s) + 10.5973 (0.358813s)

    - 14.0907 (0.462652s) -

    - - -

    - 9.10761 (0.437175s) + 9.47384 (0.454466s)

    @@ -904,7 +939,6 @@ - @@ -912,11 +946,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -942,32 +971,54 @@

    - fixed_int + cpp_int

    - 1 (0.0991632s) + 2.86387 (0.593314s)

    - 1 (0.172328s) + 2.18375 (0.69965s)

    - 1 (0.309492s) + 1.72571 (0.918294s)

    - 1 (0.573815s) + 1.39251 (1.33801s) +

    + + + + +

    + cpp_int(fixed)

    - 1 (1.06356s) + 1 (0.207172s) +

    + + +

    + 1 (0.320389s) +

    + + +

    + 1 (0.532127s) +

    + + +

    + 1 (0.960856s)

    @@ -979,27 +1030,22 @@

    - 7.81859 (0.775316s) + 3.89115 (0.806137s)

    - 5.11069 (0.880715s) + 2.87573 (0.921352s)

    - 2.93514 (0.908404s) + 1.96635 (1.04635s)

    - 1.80497 (1.03572s) -

    - - -

    - 1.21878 (1.29625s) + 1.29618 (1.24544s)

    @@ -1011,27 +1057,22 @@

    - 18.0766 (1.79253s) + 11.9483 (2.47535s)

    - 12.3939 (2.13582s) + 9.35941 (2.99865s)

    - 9.80438 (3.03438s) + 8.79014 (4.67747s)

    - 8.74047 (5.01541s) -

    - - -

    - 10.8288 (11.517s) + 11.8316 (11.3684s)

    @@ -1047,7 +1088,6 @@ - @@ -1055,11 +1095,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -1085,32 +1120,54 @@

    - fixed_int + cpp_int

    - 1.04098 (0.0443082s) + 5.77003 (0.313196s)

    - 1.61317 (0.110308s) + 4.38067 (0.431864s)

    - 2.18324 (0.229148s) + 3.55054 (0.634559s)

    - 2.36331 (0.442167s) + 2.97898 (1.03205s) +

    + + + + +

    + cpp_int(fixed)

    - 2.45159 (0.866172s) + 2.48952 (0.135131s) +

    + + +

    + 2.59188 (0.255519s) +

    + + +

    + 2.56716 (0.458808s) +

    + + +

    + 2.52368 (0.874313s)

    @@ -1122,27 +1179,22 @@

    - 1 (0.042564s) + 1 (0.0542797s)

    - 1 (0.06838s) + 1 (0.0985842s)

    - 1 (0.104957s) + 1 (0.178722s)

    - 1 (0.187096s) -

    - - -

    - 1 (0.35331s) + 1 (0.346443s)

    @@ -1154,27 +1206,22 @@

    - 32.4072 (1.37938s) + 31.6477 (1.71783s)

    - 23.7471 (1.62383s) + 22.8727 (2.25489s)

    - 22.1907 (2.32908s) + 19.9248 (3.56101s)

    - 19.9054 (3.72421s) -

    - - -

    - 24.2219 (8.55783s) + 24.3266 (8.42779s)

    @@ -1190,7 +1237,6 @@ - @@ -1198,11 +1244,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -1228,32 +1269,54 @@

    - fixed_int + cpp_int

    - 1 (0.0946529s) + 1.9813 (0.357541s)

    - 1 (0.170561s) + 1.55667 (0.460146s)

    - 1 (0.328458s) + 1.35341 (0.681144s)

    - 1 (0.575884s) + 1.19906 (1.10138s) +

    + + + + +

    + cpp_int(fixed)

    - 1 (1.05006s) + 1 (0.180457s) +

    + + +

    + 1 (0.295597s) +

    + + +

    + 1 (0.503278s) +

    + + +

    + 1 (0.918538s)

    @@ -1265,27 +1328,22 @@

    - 7.77525 (0.73595s) + 3.50213 (0.631985s)

    - 4.39387 (0.749422s) + 2.33312 (0.689662s)

    - 2.35075 (0.772122s) + 1.57264 (0.791475s)

    - 1.51922 (0.874894s) -

    - - -

    - 1.02263 (1.07382s) + 1.07795 (0.99014s)

    @@ -1297,27 +1355,22 @@

    - 27.1503 (2.56986s) + 12.2393 (2.20868s)

    - 12.8743 (2.19585s) + 10.1123 (2.98915s)

    - 9.43965 (3.10053s) + 9.46676 (4.76442s)

    - 8.24936 (4.75068s) -

    - - -

    - 10.9719 (11.5211s) + 12.1795 (11.1873s)

    @@ -1333,7 +1386,6 @@ - @@ -1341,11 +1393,6 @@ Backend

    - -

    - 64 Bits -

    -

    128 Bits @@ -1371,32 +1418,54 @@

    - fixed_int + cpp_int

    - 1.25034 (0.0425984s) + 1.88485 (0.105552s)

    - 1.91617 (0.106226s) + 2.00194 (0.203711s)

    - 2.02166 (0.195577s) + 2.08202 (0.380096s)

    - 2.14437 (0.387067s) + 2.12794 (0.752068s) +

    + + + + +

    + cpp_int(fixed)

    - 2.23514 (0.776075s) + 1.7474 (0.0978544s) +

    + + +

    + 1.88457 (0.191768s) +

    + + +

    + 2.0306 (0.37071s) +

    + + +

    + 2.0851 (0.736929s)

    @@ -1408,27 +1477,22 @@

    - 1 (0.0340695s) + 1 (0.0560001s)

    - 1 (0.0554367s) + 1 (0.101757s)

    - 1 (0.0967406s) + 1 (0.182561s)

    - 1 (0.180504s) -

    - - -

    - 1 (0.347216s) + 1 (0.353426s)

    @@ -1440,27 +1504,22 @@

    - 42.8781 (1.46083s) + 30.4466 (1.70501s)

    - 29.879 (1.65639s) + 22.2997 (2.26915s)

    - 23.4323 (2.26685s) + 19.6199 (3.58184s)

    - 19.932 (3.5978s) -

    - - -

    - 25.0046 (8.682s) + 24.0694 (8.50676s)

    @@ -1468,150 +1527,7 @@


    -

    Table 1.27. Operator str

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 64 Bits -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - fixed_int -

    -
    -

    - 1 (0.000465841s) -

    -
    -

    - 1 (0.00102073s) -

    -
    -

    - 1 (0.00207212s) -

    -
    -

    - 1.02618 (0.0062017s) -

    -
    -

    - 1.32649 (0.0190043s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.83823 (0.00132216s) -

    -
    -

    - 2.17537 (0.00222046s) -

    -
    -

    - 1.46978 (0.00304557s) -

    -
    -

    - 1 (0.00604351s) -

    -
    -

    - 1 (0.0143268s) -

    -
    -

    - tommath_int -

    -
    -

    - 15.76 (0.00734164s) -

    -
    -

    - 15.9879 (0.0163193s) -

    -
    -

    - 21.7337 (0.0450349s) -

    -
    -

    - 19.7183 (0.119168s) -

    -
    -

    - 26.3445 (0.377431s) -

    -
    -
    -
    -

    Table 1.28. Operator <<

    +

    Table 1.27. Operator <<

    @@ -1619,7 +1535,6 @@ - - + + + + + + @@ -1694,27 +1626,22 @@ - @@ -1726,27 +1653,22 @@ - @@ -1754,7 +1676,7 @@
    @@ -1627,11 +1542,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -1657,32 +1567,54 @@

    - fixed_int + cpp_int

    - 1 (0.0119095s) + 1.20362 (0.0224696s)

    - 1 (0.0131746s) + 1.08555 (0.0294403s)

    - 1 (0.0213483s) + 1 (0.0360516s)

    - 1 (0.0247552s) + 1.07177 (0.0523935s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.0339579s) + 1 (0.0186683s) +

    +
    +

    + 1 (0.0271201s) +

    +
    +

    + 1.02126 (0.036818s) +

    +
    +

    + 1 (0.0488848s)

    - 1.9355 (0.0230509s) + 1.36706 (0.0255207s)

    - 1.94257 (0.0255925s) + 1.12042 (0.0303858s)

    - 1.49684 (0.031955s) + 1.24359 (0.0448335s)

    - 1.79202 (0.0443618s) -

    -
    -

    - 2.0846 (0.0707887s) + 1.40143 (0.0685085s)

    - 2.64273 (0.0314737s) + 2.09357 (0.0390833s)

    - 2.95612 (0.0389456s) + 2.4569 (0.0666312s)

    - 3.05842 (0.065292s) + 2.63592 (0.0950291s)

    - 3.79496 (0.0939451s) -

    -
    -

    - 4.82142 (0.163725s) + 3.43638 (0.167987s)


    -

    Table 1.29. Operator >>

    +

    Table 1.28. Operator >>

    @@ -1762,7 +1684,6 @@ - - + + + + + + @@ -1837,27 +1775,22 @@ - @@ -1869,27 +1802,22 @@ - @@ -1897,7 +1825,7 @@
    @@ -1770,11 +1691,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -1800,32 +1716,54 @@

    - fixed_int + cpp_int

    - 1 (0.006361s) + 1.33649 (0.0210319s)

    - 1 (0.00880189s) + 1.12919 (0.0266135s)

    - 1 (0.0180295s) + 1.10413 (0.0307184s)

    - 1 (0.0220786s) + 1.09267 (0.0399373s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.0325312s) + 1 (0.0157367s) +

    +
    +

    + 1 (0.0235686s) +

    +
    +

    + 1 (0.0278214s) +

    +
    +

    + 1.05198 (0.0384501s)

    - 4.26889 (0.0271544s) + 1.72135 (0.0270884s)

    - 3.14669 (0.0276968s) + 1.2078 (0.0284661s)

    - 1.74396 (0.0314426s) + 1.16066 (0.0322912s)

    - 1.45928 (0.0322188s) -

    -
    -

    - 1.24596 (0.0405327s) + 1 (0.0365503s)

    - 39.4379 (0.250865s) + 15.4381 (0.242945s)

    - 28.6225 (0.251932s) + 11.8797 (0.279987s)

    - 16.4543 (0.296661s) + 10.9043 (0.303374s)

    - 14.2167 (0.313884s) -

    -
    -

    - 15.5842 (0.506974s) + 14.0762 (0.514491s)


    -

    Table 1.30. Operator &

    +

    Table 1.29. Operator &

    @@ -1905,7 +1833,6 @@ - - + + + + + + @@ -1980,27 +1924,22 @@ - @@ -2012,27 +1951,22 @@ - @@ -2040,7 +1974,7 @@
    @@ -1913,11 +1840,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -1943,32 +1865,54 @@

    - fixed_int + cpp_int

    - 1 (0.00298048s) + 1.65829 (0.0314059s)

    - 1 (0.00546222s) + 1.42198 (0.0390384s)

    - 1 (0.0127546s) + 1.48578 (0.0498903s)

    - 1 (0.01985s) + 1.51243 (0.0770342s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.0349286s) + 1 (0.0189387s) +

    +
    +

    + 1 (0.0274536s) +

    +
    +

    + 1 (0.0335786s) +

    +
    +

    + 1 (0.0509341s)

    - 16.0105 (0.0477189s) + 2.80248 (0.0530755s)

    - 9.67027 (0.0528211s) + 2.39752 (0.0658206s)

    - 5.12678 (0.0653902s) + 2.66009 (0.089322s)

    - 4.62316 (0.0917698s) -

    -
    -

    - 4.00837 (0.140007s) + 2.73942 (0.13953s)

    - 43.6665 (0.130147s) + 6.95432 (0.131706s)

    - 23.8003 (0.130002s) + 5.4059 (0.148412s)

    - 11.4242 (0.145711s) + 4.56887 (0.153417s)

    - 7.83416 (0.155508s) -

    -
    -

    - 9.50103 (0.331858s) + 6.5696 (0.334616s)


    -

    Table 1.31. Operator &(int)

    +

    Table 1.30. Operator &(int)

    @@ -2048,7 +1982,6 @@ - - + + + + + + @@ -2123,27 +2073,22 @@ - @@ -2155,27 +2100,22 @@ - @@ -2183,7 +2123,7 @@
    @@ -2056,11 +1989,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -2086,32 +2014,54 @@

    - fixed_int + cpp_int

    - 1 (0.00222291s) + 1.63285 (0.0472296s)

    - 1 (0.0035522s) + 1.43344 (0.0588492s)

    - 1 (0.0110247s) + 1.33141 (0.0724386s)

    - 1 (0.0154281s) + 1.21353 (0.104144s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.0275044s) + 1 (0.0289247s) +

    +
    +

    + 1 (0.0410546s) +

    +
    +

    + 1 (0.0544075s) +

    +
    +

    + 1 (0.0858187s)

    - 70.8538 (0.157502s) + 5.24478 (0.151704s)

    - 42.1478 (0.149717s) + 3.81907 (0.15679s)

    - 13.9023 (0.153268s) + 2.77979 (0.151242s)

    - 10.3271 (0.159328s) -

    -
    -

    - 6.0529 (0.166481s) + 1.84209 (0.158086s)

    - 154.134 (0.342626s) + 11.7257 (0.339163s)

    - 93.2035 (0.331077s) + 8.6379 (0.354625s)

    - 31.9151 (0.351853s) + 6.90411 (0.375636s)

    - 23.6515 (0.364899s) -

    -
    -

    - 22.0042 (0.605213s) + 7.63253 (0.655013s)


    -

    Table 1.32. Operator ^

    +

    Table 1.31. Operator ^

    @@ -2191,7 +2131,6 @@ - - + + + + + + @@ -2266,27 +2222,22 @@ - @@ -2298,27 +2249,22 @@ - @@ -2326,7 +2272,7 @@
    @@ -2199,11 +2138,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -2229,32 +2163,54 @@

    - fixed_int + cpp_int

    - 1 (0.00307714s) + 1.39325 (0.0297525s)

    - 1 (0.00538197s) + 1.28821 (0.0385005s)

    - 1 (0.0127717s) + 1.18843 (0.0492426s)

    - 1 (0.0198304s) + 1.07724 (0.0758668s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.0345822s) + 1 (0.0213547s) +

    +
    +

    + 1 (0.0298868s) +

    +
    +

    + 1 (0.041435s) +

    +
    +

    + 1 (0.070427s)

    - 13.9543 (0.0429392s) + 2.28582 (0.048813s)

    - 9.92785 (0.0534314s) + 2.03478 (0.0608129s)

    - 4.80398 (0.0613552s) + 2.05655 (0.0852131s)

    - 4.35864 (0.0864335s) -

    -
    -

    - 3.887 (0.134421s) + 1.92381 (0.135488s)

    - 41.5958 (0.127996s) + 6.17078 (0.131775s)

    - 24.2396 (0.130457s) + 4.8567 (0.145151s)

    - 11.3666 (0.145171s) + 3.64659 (0.151097s)

    - 8.01016 (0.158845s) -

    -
    -

    - 9.84853 (0.340584s) + 4.78192 (0.336776s)


    -

    Table 1.33. Operator ^(int)

    +

    Table 1.32. Operator ^(int)

    @@ -2334,7 +2280,6 @@ - - + + + + + + @@ -2409,27 +2371,22 @@ - @@ -2441,27 +2398,22 @@ - @@ -2469,7 +2421,7 @@
    @@ -2342,11 +2287,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -2372,32 +2312,54 @@

    - fixed_int + cpp_int

    - 1 (0.00236664s) + 1.89396 (0.0383127s)

    - 1 (0.0035339s) + 1.64269 (0.043417s)

    - 1 (0.0100442s) + 1.5386 (0.0477162s)

    - 1 (0.0155814s) + 1.32247 (0.0568053s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.0293253s) + 1 (0.0202288s) +

    +
    +

    + 1 (0.0264305s) +

    +
    +

    + 1 (0.0310128s) +

    +
    +

    + 1 (0.0429539s)

    - 61.4272 (0.145376s) + 7.01953 (0.141997s)

    - 41.6319 (0.147123s) + 5.47513 (0.14471s)

    - 14.9744 (0.150405s) + 4.6627 (0.144603s)

    - 9.64857 (0.150338s) -

    -
    -

    - 5.46649 (0.160306s) + 3.59601 (0.154463s)

    - 145.509 (0.344367s) + 16.2706 (0.329134s)

    - 93.9055 (0.331853s) + 12.9494 (0.342258s)

    - 35.0456 (0.352003s) + 11.3305 (0.35139s)

    - 22.7371 (0.354275s) -

    -
    -

    - 19.1373 (0.561207s) + 14.1712 (0.608709s)


    -

    Table 1.34. Operator |

    +

    Table 1.33. Operator |

    @@ -2477,7 +2429,6 @@ - - + + + + + + @@ -2552,27 +2520,22 @@ - @@ -2584,27 +2547,22 @@ - @@ -2612,7 +2570,7 @@
    @@ -2485,11 +2436,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -2515,32 +2461,54 @@

    - fixed_int + cpp_int

    - 1 (0.00295261s) + 1.34742 (0.0296944s)

    - 1 (0.00560832s) + 1.25923 (0.0384846s)

    - 1 (0.0127056s) + 1.20517 (0.0493908s)

    - 1 (0.0200759s) + 1.10536 (0.0761343s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.034651s) + 1 (0.0220379s) +

    +
    +

    + 1 (0.030562s) +

    +
    +

    + 1 (0.0409823s) +

    +
    +

    + 1 (0.0688775s)

    - 14.1091 (0.0416586s) + 2.14429 (0.0472558s)

    - 8.52475 (0.0478096s) + 1.95901 (0.0598712s)

    - 4.74593 (0.0602998s) + 2.07584 (0.0850728s)

    - 4.19694 (0.0842575s) -

    -
    -

    - 3.85525 (0.133588s) + 1.94265 (0.133805s)

    - 44.8889 (0.132539s) + 5.98286 (0.13185s)

    - 25.2503 (0.141612s) + 4.65705 (0.142329s)

    - 11.0488 (0.140382s) + 3.85812 (0.158115s)

    - 7.39273 (0.148416s) -

    -
    -

    - 9.75809 (0.338127s) + 4.81524 (0.331662s)


    -

    Table 1.35. Operator |(int)

    +

    Table 1.34. Operator |(int)

    @@ -2620,7 +2578,6 @@ - - + + + + + + @@ -2695,27 +2669,22 @@ - @@ -2727,27 +2696,320 @@ + + +
    @@ -2628,11 +2585,6 @@ Backend

    -

    - 64 Bits -

    -

    128 Bits @@ -2658,32 +2610,54 @@

    - fixed_int + cpp_int

    - 1 (0.00244005s) + 1.40808 (0.0389721s)

    - 1 (0.0040142s) + 1.65035 (0.0437872s)

    - 1 (0.00983777s) + 1.51667 (0.0466144s)

    - 1 (0.0155223s) + 1.37806 (0.0582842s) +

    +
    +

    + cpp_int(fixed)

    - 1 (0.0293444s) + 1 (0.0276775s) +

    +
    +

    + 1 (0.026532s) +

    +
    +

    + 1 (0.0307348s) +

    +
    +

    + 1 (0.0422945s)

    - 64.6148 (0.157663s) + 5.31451 (0.147092s)

    - 34.5827 (0.138822s) + 5.37333 (0.142565s)

    - 14.2764 (0.140448s) + 4.86508 (0.149527s)

    - 10.3248 (0.160264s) -

    -
    -

    - 5.33565 (0.156572s) + 3.74364 (0.158335s)

    - 137.825 (0.3363s) + 11.9312 (0.330226s)

    - 81.1074 (0.325581s) + 12.943 (0.343403s)

    - 34.8737 (0.343079s) + 11.4457 (0.35178s)

    - 22.3727 (0.347276s) + 14.4462 (0.610997s) +

    +
    +
    +
    +

    Table 1.35. Operator gcd

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int

    - 18.912 (0.554963s) + 1.82514 (4.45586s) +

    +
    +

    + 1.75955 (10.1748s) +

    +
    +

    + 1.87025 (25.23s) +

    +
    +

    + 2.11453 (68.8556s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.57965 (3.85654s) +

    +
    +

    + 1.67404 (9.68027s) +

    +
    +

    + 1.8405 (24.8287s) +

    +
    +

    + 2.27588 (74.1096s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (2.44138s) +

    +
    +

    + 1 (5.78259s) +

    +
    +

    + 1 (13.4902s) +

    +
    +

    + 1 (32.5631s) +

    +
    +

    + tommath_int +

    +
    +

    + 5.01357 (12.24s) +

    +
    +

    + 4.38161 (25.337s) +

    +
    +

    + 4.08681 (55.1319s) +

    +
    +

    + 4.01045 (130.593s) +

    +
    +
    +
    +

    Table 1.36. Operator str

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2766,7 +3028,7 @@
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.46421 (0.00195137s) +

    +
    +

    + 1.21669 (0.00319216s) +

    +
    +

    + 1.25041 (0.00765237s) +

    +
    +

    + 1.53339 (0.0218096s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.00133271s) +

    +
    +

    + 1 (0.00262366s) +

    +
    +

    + 1.0109 (0.00618661s) +

    +
    +

    + 1.24429 (0.0176978s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.7777 (0.00236916s) +

    +
    +

    + 1.27408 (0.00334274s) +

    +
    +

    + 1 (0.00611991s) +

    +
    +

    + 1 (0.0142232s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.9797 (0.0159654s) +

    +
    +

    + 18.3349 (0.0481046s) +

    +
    +

    + 18.3681 (0.112411s) +

    +
    +

    + 25.0355 (0.356085s)


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html new file mode 100644 index 00000000..fd98e028 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/rational_performance.html @@ -0,0 +1,905 @@ + + + +Rational Type Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticsm, and real-world + peformance may vary widely depending upon the specifics of the program. In + each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    +

    Table 1.37. Operator +

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.91758 (18.1263s) +

    +
    +

    + 6.60754 (44.1182s) +

    +
    +

    + 6.65334 (103.169s) +

    +
    +

    + 6.44717 (244.055s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (3.06312s) +

    +
    +

    + 1 (6.67695s) +

    +
    +

    + 1 (15.5064s) +

    +
    +

    + 1 (37.8546s) +

    +
    +
    +
    +

    Table 1.38. Operator +(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 3.98512 (2.67249s) +

    +
    +

    + 4.24335 (3.04309s) +

    +
    +

    + 4.65009 (3.83046s) +

    +
    +

    + 5.45832 (5.08346s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.670618s) +

    +
    +

    + 1 (0.717144s) +

    +
    +

    + 1 (0.823739s) +

    +
    +

    + 1 (0.931322s) +

    +
    +
    +
    +

    Table 1.39. Operator -

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.91504 (18.2374s) +

    +
    +

    + 6.55676 (43.8659s) +

    +
    +

    + 6.66239 (103.481s) +

    +
    +

    + 6.47224 (244.887s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (3.08322s) +

    +
    +

    + 1 (6.69018s) +

    +
    +

    + 1 (15.5321s) +

    +
    +

    + 1 (37.8365s) +

    +
    +
    +
    +

    Table 1.40. Operator -(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 3.96173 (2.66785s) +

    +
    +

    + 4.36532 (3.09023s) +

    +
    +

    + 4.59363 (3.74494s) +

    +
    +

    + 5.43075 (5.09156s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.673405s) +

    +
    +

    + 1 (0.707904s) +

    +
    +

    + 1 (0.815246s) +

    +
    +

    + 1 (0.937541s) +

    +
    +
    +
    +

    Table 1.41. Operator *

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.59286 (32.3559s) +

    +
    +

    + 6.54125 (82.4247s) +

    +
    +

    + 6.8815 (197.198s) +

    +
    +

    + 6.84066 (473.057s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (5.78521s) +

    +
    +

    + 1 (12.6008s) +

    +
    +

    + 1 (28.6562s) +

    +
    +

    + 1 (69.1537s) +

    +
    +
    +
    +

    Table 1.42. Operator *(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 2.70193 (3.1466s) +

    +
    +

    + 3.10134 (3.79056s) +

    +
    +

    + 3.659 (4.93935s) +

    +
    +

    + 4.61372 (6.89845s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (1.16457s) +

    +
    +

    + 1 (1.22223s) +

    +
    +

    + 1 (1.34992s) +

    +
    +

    + 1 (1.4952s) +

    +
    +
    +
    +

    Table 1.43. Operator /

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 4.36846 (63.9498s) +

    +
    +

    + 5.52565 (145.045s) +

    +
    +

    + 6.18331 (328.069s) +

    +
    +

    + 6.49822 (784.806s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (14.639s) +

    +
    +

    + 1 (26.2494s) +

    +
    +

    + 1 (53.0571s) +

    +
    +

    + 1 (120.772s) +

    +
    +
    +
    +

    Table 1.44. Operator /(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 2.26643 (3.13785s) +

    +
    +

    + 2.57125 (3.76931s) +

    +
    +

    + 3.20872 (5.06758s) +

    +
    +

    + 4.02177 (7.17803s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (1.38449s) +

    +
    +

    + 1 (1.46594s) +

    +
    +

    + 1 (1.57931s) +

    +
    +

    + 1 (1.78479s) +

    +
    +
    +
    +

    Table 1.45. Operator str

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.40493 (0.0199393s) +

    +
    +

    + 8.55089 (0.0511907s) +

    +
    +

    + 9.91026 (0.118839s) +

    +
    +

    + 9.93546 (0.285367s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.00368909s) +

    +
    +

    + 1 (0.00598659s) +

    +
    +

    + 1 (0.0119915s) +

    +
    +

    + 1 (0.028722s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html index 8c880e2e..68464c8d 100644 --- a/doc/html/boost_multiprecision/perf/realworld.html +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -1,21 +1,22 @@ -Real World Tests +Floating Point Real World Tests - +
    -PrevUpHomeNext +PrevUpHomeNext

    These tests test the total time taken to execute all of Boost.Math's test @@ -271,7 +272,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index e0b55bd3..2cc70776 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -113,7 +113,7 @@

    - libtommath + libtommath

    @@ -271,16 +271,17 @@

    The tommath_int backend is used via the typedef boost::multiprecision::mp_int. - It acts as a thin wrapper around the libtommath mp_int - to provide an integer type that is a drop-in replacement for the native C++ - integer types, but with unlimited precision. + It acts as a thin wrapper around the libtommath + mp_int to provide an integer + type that is a drop-in replacement for the native C++ integer types, but + with unlimited precision.

    Things you should know when using this type:

    • - Default constructed objects have the value zero (this is libtommath's + Default constructed objects have the value zero (this is libtommath's default behavior).
    • @@ -300,7 +301,7 @@ will be thrown.
    • - Division by zero will result in a hardware signal being raised by libtommath. + Division by zero will result in a hardware signal being raised by libtommath.
    @@ -359,11 +360,13 @@ typedef mp_number<cpp_int_backend<128, false, void> > mp_uint128_t; typedef mp_number<cpp_int_backend<256, false, void> > mp_uint256_t; typedef mp_number<cpp_int_backend<512, false, void> > mp_uint512_t; +typedef mp_number<cpp_int_backend<1024, false, void> > mp_uint1024_t; // Fixed precision signed types: typedef mp_number<cpp_int_backend<128, true, void> > mp_int128_t; typedef mp_number<cpp_int_backend<256, true, void> > mp_int256_t; typedef mp_number<cpp_int_backend<512, true, void> > mp_int512_t; +typedef mp_number<cpp_int_backend<1024, true, void> > mp_int1024_t; }} // namespaces diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html new file mode 100644 index 00000000..32a761ea --- /dev/null +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -0,0 +1,107 @@ + + + +Primality Testing + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + The library implements a fairly basic (meaning unoptimized, and possibly + slow) Miller-Rabin test for primality: +

    +
    #include <boost/multiprecision/miller_rabin.hpp>
    +
    +template <class Backend, bool ExpressionTemplates, class Engine>
    +bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
    +
    +template <class Backend, bool ExpressionTemplates, class Engine>
    +bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials);
    +
    +

    + These functions perform a Miller-Rabin test for primality, if the result + is false then n + is definitely composite, while if the result is true + then n is prime with probability 0.25^trials. The algorithm + used is straight out of Knuth Vol 2, which recomends 25 trials for a pretty + strong likelyhood that n is prime. +

    +

    + The third optional argument is for a Uniform Random Number Generator from + Boost.Random. When not provided the mt19937 + generator is used. Note that when producing random primes then you should + probably use a different random number generator to produce possible primes, + than used internally for testing whether the value is prime. It also helps + of course to seed the generators with some source of randomness. +

    +

    + The following example searches for a prime p + for which (p-1)/2 is also probably prime: +

    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +#include <boost/multiprecision/miller_rabin.hpp>
    +#include <iostream>
    +#include <iomanip>
    +
    +int main()
    +{
    +   using namespace boost::random;
    +   using namespace boost::multiprecision;
    +
    +   typedef cpp_int int_type;
    +   mt11213b base_gen(clock());
    +   independent_bits_engine<mt11213b, 256, int_type> gen(base_gen);
    +   //
    +   // We must use a different generator for the tests and number generation, otherwise
    +   // we get false positives.
    +   //
    +   mt19937 gen2(clock());
    +
    +   for(unsigned i = 0; i < 100000; ++i)
    +   {
    +      int_type n = gen();
    +      if(miller_rabin_test(n, 25, gen2))
    +      {
    +         // Value n is probably prime, see if (n-1)/2 is also prime:
    +         std::cout << "We have a probable prime with value: " << std::hex << std::showbase << n << std::endl;
    +         if(miller_rabin_test((n-1)/2, 25, gen2))
    +         {
    +            std::cout << "We have a safe prime with value: " << std::hex << std::showbase << n << std::endl;
    +            return 0;
    +         }
    +      }
    +   }
    +   std::cout << "Ooops, no safe primes were found" << std::endl;
    +   return 1;
    +}
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/random.html b/doc/html/boost_multiprecision/tut/random.html new file mode 100644 index 00000000..5c383672 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/random.html @@ -0,0 +1,157 @@ + + + +Generating Random Numbers + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Random numbers are generated in conjunction with Boost.Random. However, since + Boost.Random is unaware of arbitrary precision numbers, it's necessary to + include the header: +

    +
    #include <boost/multiprecision/random.hpp>
    +
    +

    + In order to act as a bridge between the two libraries. +

    +

    + Integers with N random bits are generated using independent_bits_engine: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +
    +//
    +// Declare our random number generator type, the underlying generator
    +// is the Mersenne twister mt19937 engine, and 256 bits are generated:
    +//
    +typedef independent_bits_engine<mt19937, 256, mpz_int> generator_type;
    +generator_type gen;
    +//
    +// Generate some values:
    +//
    +std::cout << std::hex << std::showbase;
    +for(unsigned i = 0; i < 10; ++i)
    +   std::cout << gen() << std::endl;
    +
    +

    +

    +

    + Alternatively we can generate integers in a given range using uniform_int_distribution, this will invoke + the underlying engine multiple times to build up the required number of bits + in the result: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +
    +//
    +// Generate integers in a given range using uniform_int,
    +// the underlying generator is invoked multiple times
    +// to generate enough bits:
    +//
    +mt19937 mt;
    +uniform_int_distribution<mpz_int> ui(0, mpz_int(1) << 256);
    +//
    +// Generate the numbers:
    +//
    +std::cout << std::hex << std::showbase;
    +for(unsigned i = 0; i < 10; ++i)
    +   std::cout << ui(mt) << std::endl;
    +
    +

    +

    +

    + Floating point values in [0,1) are generated using uniform_01, + the trick here is to ensure that the underlying generator produces as many + random bits as there are digits in the floating point type. As above independent_bits_engine can be used for + this purpose, note that we also have to convert decimal digits (in the floating + point type) to bits (in the random number generator): +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +//
    +// We need an underlying generator with at least as many bits as the
    +// floating point type to generate numbers in [0, 1) with all the bits
    +// in the floating point type randomly filled:
    +//
    +uniform_01<mpf_float_50> uf;
    +independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    +//
    +// Generate the values:
    +//
    +std::cout << std::setprecision(50);
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << uf(gen) << std::endl;
    +
    +

    +

    +

    + Finally, we can modify the above example to produce numbers distributed according + to some distribution: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +//
    +// We can repeat the above example, with other distributions:
    +//
    +uniform_real_distribution<mpf_float_50> ur(-20, 20);
    +gamma_distribution<mpf_float_50> gd(20);
    +independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    +//
    +// Generate some values:
    +//
    +std::cout << std::setprecision(50);
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << ur(gen) << std::endl;
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << gd(gen) << std::endl;
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 3c2cefcf..b3cba087 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -145,7 +145,7 @@

    - libtommath + libtommath

    @@ -452,8 +452,9 @@ information).
  • - No changes are made to libtommath's global state, so this type can safely - coexist with other libtommath code. + No changes are made to libtommath's + global state, so this type can safely coexist with other libtommath + code.
  • Performance of this type has been found to be pretty poor - this need diff --git a/doc/html/index.html b/doc/html/index.html index bc91e441..cf7ed306 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -43,11 +43,16 @@
    Performance Comparison
    -
    Real World Tests
    +
    Floating Point Real + World Tests
    +
    Integer Real + World Tests
    Float Algorithm Perfomance
    Integer Algorithm Perfomance
    +
    Rational + Type Perfomance
    Roadmap
    @@ -58,7 +63,7 @@
  • - +

    Last revised: March 17, 2012 at 13:19:03 GMT

    Last revised: March 20, 2012 at 19:02:47 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 9f174569..5d9597ae 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -32,6 +32,8 @@ [template mpfr_class[] [@http://math.berkeley.edu/~wilken/code/gmpfrxx/ mpfr_class]] [template mpreal[] [@http://www.holoborodko.com/pavel/mpfr/ mpreal]] [template mpir[] [@http://mpir.org/ MPIR]] +[template tommath[] [@http://libtom.org/?page=features&newsitems=5&whatfile=ltm libtommath]] + [section:intro Introduction] @@ -224,7 +226,7 @@ The following backends provide integer arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] -[[`mp_int`][boost/multiprecision/tommath.hpp][2][libtommath][Public domain backend with no licence restrictions.][Slower than [gmp].]] +[[`mp_int`][boost/multiprecision/tommath.hpp][2][[tommath]][Public domain backend with no licence restrictions.][Slower than [gmp].]] [[`cpp_int`][boost/multiprecision/cpp_int.hpp][2][None] [Very versatile, Boost licenced, all C++ integer type which support both arbitrary precision and fixed precision integer types.][Slower than [gmp].]] ] @@ -275,12 +277,12 @@ is recomended on Win32. }} // namespaces -The `tommath_int` backend is used via the typedef `boost::multiprecision::mp_int`. It acts as a thin wrapper around the libtommath `mp_int` +The `tommath_int` backend is used via the typedef `boost::multiprecision::mp_int`. It acts as a thin wrapper around the [tommath] `mp_int` to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. Things you should know when using this type: -* Default constructed objects have the value zero (this is libtommath's default behavior). +* Default constructed objects have the value zero (this is [tommath]'s default behavior). * Although `mp_int` is mostly a drop in replacement for the builtin integer types, it should be noted that it is a rather strange beast as it's a signed type that is not a 2's complement type. As a result the bitwise operations `| & ^` will throw a `std::runtime_error` exception if either of the arguments is negative. Similarly the complement @@ -288,7 +290,7 @@ operator`~` is deliberately not implemented for this type. * Formatted IO for this type does not support octal or hexadecimal notation for negative values, as a result performing formatted output on this type when the argument is negative and either of the flags `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. -* Division by zero will result in a hardware signal being raised by libtommath. +* Division by zero will result in a hardware signal being raised by [tommath]. [h5 Example:] @@ -311,11 +313,13 @@ as a result performing formatted output on this type when the argument is negati typedef mp_number > mp_uint128_t; typedef mp_number > mp_uint256_t; typedef mp_number > mp_uint512_t; + typedef mp_number > mp_uint1024_t; // Fixed precision signed types: typedef mp_number > mp_int128_t; typedef mp_number > mp_int256_t; typedef mp_number > mp_int512_t; + typedef mp_number > mp_int1024_t; }} // namespaces @@ -521,7 +525,7 @@ The following backends provide rational number arithmetic: [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] [[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licenced implementation.][Slower than [gmp].]] -[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][libtommath][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] +[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][[tommath]][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] [[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger backend type to be used as a rational type.][Requires an underlying integer backend type.]] [[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] @@ -629,7 +633,7 @@ Things you should know when using this type: * Default constructed `mp_rational`'s have the value zero (this the inherited Boost.Rational behavior). * Division by zero results in a `boost::bad_rational` exception being thrown (see the rational number library's docs for more information). -* No changes are made to libtommath's global state, so this type can safely coexist with other libtommath code. +* No changes are made to [tommath]'s global state, so this type can safely coexist with other [tommath] code. * Performance of this type has been found to be pretty poor - this need further investigation - but it appears that Boost.Rational needs some improvement in this area. @@ -1326,7 +1330,7 @@ in point of fact this naming convension shouldn't be necessary, but rather works [section:perf Performance Comparison] -[section:realworld Real World Tests] +[section:realworld Floating Point Real World Tests] These tests test the total time taken to execute all of Boost.Math's test cases for these functions. In each case the best performing library gets a relative score of 1, with the total execution time @@ -1358,6 +1362,38 @@ Windows Vista machine. [endsect] +[section:int_real_world Integer Real World Tests] + +These [@../../performance/miller_rabin_performance.cpp tests] measure the time taken to generate 1000 128-bit +random numbers and test for primality using the Miller Rabin test. + +Test code was compiled with Microsoft Visual Studio 2010 with all optimisations +turned on (/Ox), and used MPIR-2.3.0 and [tommath]-0.42.0. The tests were run on 32-bit +Windows Vista machine. + +[table +[[Integer Type][Relative (and Absolute) Times]] +[[cpp_int][1.45089(0.481248s)]] +[[cpp_int (no Expression templates)][1.61489(0.535646s)]] +[[cpp_int (64-bit cache)][1.39273(0.461956s)]] +[[cpp_int (256-bit cache)][1.37743(0.456884s)]] +[[cpp_int (512-bit cache)][1.0919(0.362175s)]] +[[cpp_int (1024-bit cache)][1.10864(0.367726s)]] +[[mp_int][3.92956(1.3034s)]] +[[mp_int (no Expression templates)][4.02496(1.33505s)]] +[[mp_int1024_t][1.01094(0.335322s)]] +[[mp_int1024_t (no Expression templates)][1(0.331692s)]] +[[mpz_int][1.08472(0.359793s)]] +[[mpz_int (no Expression templates)][1.20865(0.400901s)]] +] + +It's interesting to note that expression templates have little effect here - perhaps because the actual expressions involved +are relatively trivial in this case - so the time taken for multiplication and division tends to dominate. Also note +how increasing the internal cache size used by `cpp_int` is quite effective in this case in cutting out memory allocations +altogether - cutting about a third off the total runtime. + +[endsect] + [section:float_performance Float Algorithm Perfomance] Note that these tests are carefully designed to test performance of the underlying algorithms @@ -1441,123 +1477,207 @@ Test code was compiled with Microsoft Visual Studio 2010 with all optimisations turned on (/Ox), and used MPIR-2.3.0 and [mpfr]-3.0.0. The tests were run on 32-bit Windows Vista machine. -Note that Linux x64 tests showed significantly worse performance for `fixed_int` division -than on Win32 (or possibly [gmp] behaves much better in that case). Otherwise the results -are much the same. +Linux x86_64 results are broadly similar, except that libtommath performs much better there. [table Operator + -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0031291s)][[*1] (0.00703043s)][[*1] (0.0163669s)][[*1] (0.0326567s)][[*1] (0.0603087s)]] -[[gmp_int][12.4866 (0.0390717s)][6.01034 (0.0422553s)][2.65628 (0.0434751s)][1.54295 (0.0503875s)][1.16477 (0.0702458s)]] -[[tommath_int][6.03111 (0.018872s)][3.08173 (0.0216659s)][1.84243 (0.0301548s)][1.30199 (0.0425188s)][1.18909 (0.0717123s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.24574 (0.0270133s)][1.09665 (0.0352319s)][1.25708 (0.0524047s)][1.31488 (0.08777s)]] +[[cpp_int(fixed)][1.05787 (0.0229394s)][[*1] (0.0321268s)][1.16171 (0.0484289s)][1.24017 (0.0827832s)]] +[[gmp_int][2.08016 (0.0451073s)][1.33792 (0.042983s)][1.19676 (0.0498904s)][[*1] (0.0667514s)]] +[[tommath_int][[*1] (0.0216845s)][1.07779 (0.0346258s)][[*1] (0.0416877s)][1.06344 (0.0709863s)]] ] [table Operator +(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00335294s)][[*1] (0.00376116s)][[*1] (0.00985174s)][[*1] (0.0119345s)][[*1] (0.0170918s)]] -[[gmp_int][9.47407 (0.031766s)][8.44794 (0.0317741s)][4.23857 (0.0417573s)][5.40856 (0.0645488s)][6.31314 (0.107903s)]] -[[tommath_int][67.0025 (0.224655s)][60.4203 (0.22725s)][25.1834 (0.2481s)][23.2996 (0.27807s)][17.1743 (0.293538s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.46244 (0.0202077s)][1.20665 (0.0238576s)][1.17647 (0.0258293s)][1.12424 (0.0317931s)]] +[[cpp_int(fixed)][[*1] (0.0138178s)][[*1] (0.0197719s)][[*1] (0.0219548s)][[*1] (0.0282796s)]] +[[gmp_int][2.15321 (0.0297527s)][2.09834 (0.041488s)][2.89935 (0.0636546s)][3.70262 (0.104709s)]] +[[tommath_int][17.1419 (0.236864s)][12.9762 (0.256563s)][12.3275 (0.270648s)][10.7373 (0.303648s)]] ] [table Operator - -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00339191s)][[*1] (0.0073172s)][[*1] (0.0166428s)][[*1] (0.0349375s)][[*1] (0.0600083s)]] -[[gmp_int][12.5182 (0.0424608s)][5.57936 (0.0408253s)][2.78496 (0.0463496s)][1.48373 (0.051838s)][1.29928 (0.0779673s)]] -[[tommath_int][7.00782 (0.0237699s)][3.69919 (0.0270677s)][2.29645 (0.0382195s)][1.39777 (0.0488346s)][1.28243 (0.0769566s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.15385 (0.029665s)][1.08217 (0.0369886s)][1.05882 (0.051534s)][1.12132 (0.0822725s)]] +[[cpp_int(fixed)][[*1] (0.0257095s)][[*1] (0.0341801s)][[*1] (0.0486711s)][1.08659 (0.0797242s)]] +[[gmp_int][1.56685 (0.040283s)][1.32917 (0.0454312s)][1.06917 (0.0520378s)][[*1] (0.0733708s)]] +[[tommath_int][1.059 (0.0272264s)][1.16974 (0.0399818s)][1.01303 (0.0493054s)][1.03375 (0.0758472s)]] ] [table Operator -(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00250933s)][[*1] (0.00358055s)][[*1] (0.0103282s)][[*1] (0.0119127s)][[*1] (0.0176089s)]] -[[gmp_int][12.093 (0.0303454s)][8.50898 (0.0304669s)][3.9284 (0.0405733s)][5.03037 (0.0599252s)][5.96617 (0.105058s)]] -[[tommath_int][80.8477 (0.202873s)][57.8371 (0.207089s)][21.3372 (0.220375s)][23.526 (0.280258s)][14.793 (0.260488s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.51665 (0.0157196s)][1.31513 (0.0200533s)][1.29599 (0.0235066s)][1.21534 (0.0266136s)]] +[[cpp_int(fixed)][[*1] (0.0103647s)][[*1] (0.0152482s)][[*1] (0.018138s)][[*1] (0.021898s)]] +[[gmp_int][2.7938 (0.0289568s)][2.55493 (0.038958s)][3.12248 (0.0566356s)][4.48855 (0.0982904s)]] +[[tommath_int][20.8695 (0.216305s)][15.0705 (0.229797s)][13.4093 (0.243217s)][12.2599 (0.268468s)]] ] [table Operator * -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0223481s)][[*1] (0.0375288s)][[*1] (0.120353s)][[*1] (0.439147s)][[*1] (1.46969s)]] -[[gmp_int][2.50746 (0.0560369s)][1.76676 (0.0663044s)][1.06052 (0.127636s)][1.22558 (0.53821s)][1.03538 (1.52168s)]] -[[tommath_int][3.00028 (0.0670506s)][2.97696 (0.111722s)][2.86257 (0.34452s)][2.26661 (0.995374s)][2.12926 (3.12935s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.29504 (0.0731032s)][1.55431 (0.196132s)][1.4363 (0.656569s)][1.63701 (2.47859s)]] +[[cpp_int(fixed)][[*1] (0.0564485s)][1.16604 (0.147138s)][[*1] (0.457124s)][[*1] (1.5141s)]] +[[gmp_int][1.19574 (0.0674975s)][[*1] (0.126186s)][1.16627 (0.53313s)][1.02906 (1.5581s)]] +[[tommath_int][1.97229 (0.111333s)][2.67087 (0.337027s)][2.13031 (0.973817s)][2.05869 (3.11706s)]] ] [table Operator *(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00444316s)][[*1] (0.0135739s)][[*1] (0.0192615s)][[*1] (0.0328339s)][1.18198 (0.0567364s)]] -[[gmp_int][4.57776 (0.0203397s)][1.79901 (0.0244196s)][1.32814 (0.025582s)][1.01453 (0.033311s)][[*1] (0.048001s)]] -[[tommath_int][53.8709 (0.239357s)][18.3773 (0.249452s)][14.2088 (0.273682s)][14.0907 (0.462652s)][9.10761 (0.437175s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.34609 (0.030315s)][1.57086 (0.0407838s)][1.60154 (0.0542267s)][1.67808 (0.0804984s)]] +[[cpp_int(fixed)][1.29783 (0.0292279s)][1.58263 (0.0410894s)][1.61543 (0.054697s)][1.66841 (0.0800346s)]] +[[gmp_int][[*1] (0.0225207s)][[*1] (0.0259628s)][[*1] (0.033859s)][[*1] (0.0479706s)]] +[[tommath_int][12.4278 (0.279882s)][11.9045 (0.309074s)][10.5973 (0.358813s)][9.47384 (0.454466s)]] ] [table Operator / -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0991632s)][[*1] (0.172328s)][[*1] (0.309492s)][[*1] (0.573815s)][[*1] (1.06356s)]] -[[gmp_int][7.81859 (0.775316s)][5.11069 (0.880715s)][2.93514 (0.908404s)][1.80497 (1.03572s)][1.21878 (1.29625s)]] -[[tommath_int][18.0766 (1.79253s)][12.3939 (2.13582s)][9.80438 (3.03438s)][8.74047 (5.01541s)][10.8288 (11.517s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.86387 (0.593314s)][2.18375 (0.69965s)][1.72571 (0.918294s)][1.39251 (1.33801s)]] +[[cpp_int(fixed)][[*1] (0.207172s)][[*1] (0.320389s)][[*1] (0.532127s)][[*1] (0.960856s)]] +[[gmp_int][3.89115 (0.806137s)][2.87573 (0.921352s)][1.96635 (1.04635s)][1.29618 (1.24544s)]] +[[tommath_int][11.9483 (2.47535s)][9.35941 (2.99865s)][8.79014 (4.67747s)][11.8316 (11.3684s)]] ] [table Operator /(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][1.04098 (0.0443082s)][1.61317 (0.110308s)][2.18324 (0.229148s)][2.36331 (0.442167s)][2.45159 (0.866172s)]] -[[gmp_int][[*1] (0.042564s)][[*1] (0.06838s)][[*1] (0.104957s)][[*1] (0.187096s)][[*1] (0.35331s)]] -[[tommath_int][32.4072 (1.37938s)][23.7471 (1.62383s)][22.1907 (2.32908s)][19.9054 (3.72421s)][24.2219 (8.55783s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][5.77003 (0.313196s)][4.38067 (0.431864s)][3.55054 (0.634559s)][2.97898 (1.03205s)]] +[[cpp_int(fixed)][2.48952 (0.135131s)][2.59188 (0.255519s)][2.56716 (0.458808s)][2.52368 (0.874313s)]] +[[gmp_int][[*1] (0.0542797s)][[*1] (0.0985842s)][[*1] (0.178722s)][[*1] (0.346443s)]] +[[tommath_int][31.6477 (1.71783s)][22.8727 (2.25489s)][19.9248 (3.56101s)][24.3266 (8.42779s)]] ] [table Operator % -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0946529s)][[*1] (0.170561s)][[*1] (0.328458s)][[*1] (0.575884s)][[*1] (1.05006s)]] -[[gmp_int][7.77525 (0.73595s)][4.39387 (0.749422s)][2.35075 (0.772122s)][1.51922 (0.874894s)][1.02263 (1.07382s)]] -[[tommath_int][27.1503 (2.56986s)][12.8743 (2.19585s)][9.43965 (3.10053s)][8.24936 (4.75068s)][10.9719 (11.5211s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.9813 (0.357541s)][1.55667 (0.460146s)][1.35341 (0.681144s)][1.19906 (1.10138s)]] +[[cpp_int(fixed)][[*1] (0.180457s)][[*1] (0.295597s)][[*1] (0.503278s)][[*1] (0.918538s)]] +[[gmp_int][3.50213 (0.631985s)][2.33312 (0.689662s)][1.57264 (0.791475s)][1.07795 (0.99014s)]] +[[tommath_int][12.2393 (2.20868s)][10.1123 (2.98915s)][9.46676 (4.76442s)][12.1795 (11.1873s)]] ] [table Operator %(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][1.25034 (0.0425984s)][1.91617 (0.106226s)][2.02166 (0.195577s)][2.14437 (0.387067s)][2.23514 (0.776075s)]] -[[gmp_int][[*1] (0.0340695s)][[*1] (0.0554367s)][[*1] (0.0967406s)][[*1] (0.180504s)][[*1] (0.347216s)]] -[[tommath_int][42.8781 (1.46083s)][29.879 (1.65639s)][23.4323 (2.26685s)][19.932 (3.5978s)][25.0046 (8.682s)]] -] -[table Operator str -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.000465841s)][[*1] (0.00102073s)][[*1] (0.00207212s)][1.02618 (0.0062017s)][1.32649 (0.0190043s)]] -[[gmp_int][2.83823 (0.00132216s)][2.17537 (0.00222046s)][1.46978 (0.00304557s)][[*1] (0.00604351s)][[*1] (0.0143268s)]] -[[tommath_int][15.76 (0.00734164s)][15.9879 (0.0163193s)][21.7337 (0.0450349s)][19.7183 (0.119168s)][26.3445 (0.377431s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.88485 (0.105552s)][2.00194 (0.203711s)][2.08202 (0.380096s)][2.12794 (0.752068s)]] +[[cpp_int(fixed)][1.7474 (0.0978544s)][1.88457 (0.191768s)][2.0306 (0.37071s)][2.0851 (0.736929s)]] +[[gmp_int][[*1] (0.0560001s)][[*1] (0.101757s)][[*1] (0.182561s)][[*1] (0.353426s)]] +[[tommath_int][30.4466 (1.70501s)][22.2997 (2.26915s)][19.6199 (3.58184s)][24.0694 (8.50676s)]] ] [table Operator << -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0119095s)][[*1] (0.0131746s)][[*1] (0.0213483s)][[*1] (0.0247552s)][[*1] (0.0339579s)]] -[[gmp_int][1.9355 (0.0230509s)][1.94257 (0.0255925s)][1.49684 (0.031955s)][1.79202 (0.0443618s)][2.0846 (0.0707887s)]] -[[tommath_int][2.64273 (0.0314737s)][2.95612 (0.0389456s)][3.05842 (0.065292s)][3.79496 (0.0939451s)][4.82142 (0.163725s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.20362 (0.0224696s)][1.08555 (0.0294403s)][[*1] (0.0360516s)][1.07177 (0.0523935s)]] +[[cpp_int(fixed)][[*1] (0.0186683s)][[*1] (0.0271201s)][1.02126 (0.036818s)][[*1] (0.0488848s)]] +[[gmp_int][1.36706 (0.0255207s)][1.12042 (0.0303858s)][1.24359 (0.0448335s)][1.40143 (0.0685085s)]] +[[tommath_int][2.09357 (0.0390833s)][2.4569 (0.0666312s)][2.63592 (0.0950291s)][3.43638 (0.167987s)]] ] [table Operator >> -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.006361s)][[*1] (0.00880189s)][[*1] (0.0180295s)][[*1] (0.0220786s)][[*1] (0.0325312s)]] -[[gmp_int][4.26889 (0.0271544s)][3.14669 (0.0276968s)][1.74396 (0.0314426s)][1.45928 (0.0322188s)][1.24596 (0.0405327s)]] -[[tommath_int][39.4379 (0.250865s)][28.6225 (0.251932s)][16.4543 (0.296661s)][14.2167 (0.313884s)][15.5842 (0.506974s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.33649 (0.0210319s)][1.12919 (0.0266135s)][1.10413 (0.0307184s)][1.09267 (0.0399373s)]] +[[cpp_int(fixed)][[*1] (0.0157367s)][[*1] (0.0235686s)][[*1] (0.0278214s)][1.05198 (0.0384501s)]] +[[gmp_int][1.72135 (0.0270884s)][1.2078 (0.0284661s)][1.16066 (0.0322912s)][[*1] (0.0365503s)]] +[[tommath_int][15.4381 (0.242945s)][11.8797 (0.279987s)][10.9043 (0.303374s)][14.0762 (0.514491s)]] ] [table Operator & -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00298048s)][[*1] (0.00546222s)][[*1] (0.0127546s)][[*1] (0.01985s)][[*1] (0.0349286s)]] -[[gmp_int][16.0105 (0.0477189s)][9.67027 (0.0528211s)][5.12678 (0.0653902s)][4.62316 (0.0917698s)][4.00837 (0.140007s)]] -[[tommath_int][43.6665 (0.130147s)][23.8003 (0.130002s)][11.4242 (0.145711s)][7.83416 (0.155508s)][9.50103 (0.331858s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.65829 (0.0314059s)][1.42198 (0.0390384s)][1.48578 (0.0498903s)][1.51243 (0.0770342s)]] +[[cpp_int(fixed)][[*1] (0.0189387s)][[*1] (0.0274536s)][[*1] (0.0335786s)][[*1] (0.0509341s)]] +[[gmp_int][2.80248 (0.0530755s)][2.39752 (0.0658206s)][2.66009 (0.089322s)][2.73942 (0.13953s)]] +[[tommath_int][6.95432 (0.131706s)][5.4059 (0.148412s)][4.56887 (0.153417s)][6.5696 (0.334616s)]] ] [table Operator &(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00222291s)][[*1] (0.0035522s)][[*1] (0.0110247s)][[*1] (0.0154281s)][[*1] (0.0275044s)]] -[[gmp_int][70.8538 (0.157502s)][42.1478 (0.149717s)][13.9023 (0.153268s)][10.3271 (0.159328s)][6.0529 (0.166481s)]] -[[tommath_int][154.134 (0.342626s)][93.2035 (0.331077s)][31.9151 (0.351853s)][23.6515 (0.364899s)][22.0042 (0.605213s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.63285 (0.0472296s)][1.43344 (0.0588492s)][1.33141 (0.0724386s)][1.21353 (0.104144s)]] +[[cpp_int(fixed)][[*1] (0.0289247s)][[*1] (0.0410546s)][[*1] (0.0544075s)][[*1] (0.0858187s)]] +[[gmp_int][5.24478 (0.151704s)][3.81907 (0.15679s)][2.77979 (0.151242s)][1.84209 (0.158086s)]] +[[tommath_int][11.7257 (0.339163s)][8.6379 (0.354625s)][6.90411 (0.375636s)][7.63253 (0.655013s)]] ] [table Operator ^ -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00307714s)][[*1] (0.00538197s)][[*1] (0.0127717s)][[*1] (0.0198304s)][[*1] (0.0345822s)]] -[[gmp_int][13.9543 (0.0429392s)][9.92785 (0.0534314s)][4.80398 (0.0613552s)][4.35864 (0.0864335s)][3.887 (0.134421s)]] -[[tommath_int][41.5958 (0.127996s)][24.2396 (0.130457s)][11.3666 (0.145171s)][8.01016 (0.158845s)][9.84853 (0.340584s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.39325 (0.0297525s)][1.28821 (0.0385005s)][1.18843 (0.0492426s)][1.07724 (0.0758668s)]] +[[cpp_int(fixed)][[*1] (0.0213547s)][[*1] (0.0298868s)][[*1] (0.041435s)][[*1] (0.070427s)]] +[[gmp_int][2.28582 (0.048813s)][2.03478 (0.0608129s)][2.05655 (0.0852131s)][1.92381 (0.135488s)]] +[[tommath_int][6.17078 (0.131775s)][4.8567 (0.145151s)][3.64659 (0.151097s)][4.78192 (0.336776s)]] ] [table Operator ^(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00236664s)][[*1] (0.0035339s)][[*1] (0.0100442s)][[*1] (0.0155814s)][[*1] (0.0293253s)]] -[[gmp_int][61.4272 (0.145376s)][41.6319 (0.147123s)][14.9744 (0.150405s)][9.64857 (0.150338s)][5.46649 (0.160306s)]] -[[tommath_int][145.509 (0.344367s)][93.9055 (0.331853s)][35.0456 (0.352003s)][22.7371 (0.354275s)][19.1373 (0.561207s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.89396 (0.0383127s)][1.64269 (0.043417s)][1.5386 (0.0477162s)][1.32247 (0.0568053s)]] +[[cpp_int(fixed)][[*1] (0.0202288s)][[*1] (0.0264305s)][[*1] (0.0310128s)][[*1] (0.0429539s)]] +[[gmp_int][7.01953 (0.141997s)][5.47513 (0.14471s)][4.6627 (0.144603s)][3.59601 (0.154463s)]] +[[tommath_int][16.2706 (0.329134s)][12.9494 (0.342258s)][11.3305 (0.35139s)][14.1712 (0.608709s)]] ] [table Operator | -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00295261s)][[*1] (0.00560832s)][[*1] (0.0127056s)][[*1] (0.0200759s)][[*1] (0.034651s)]] -[[gmp_int][14.1091 (0.0416586s)][8.52475 (0.0478096s)][4.74593 (0.0602998s)][4.19694 (0.0842575s)][3.85525 (0.133588s)]] -[[tommath_int][44.8889 (0.132539s)][25.2503 (0.141612s)][11.0488 (0.140382s)][7.39273 (0.148416s)][9.75809 (0.338127s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.34742 (0.0296944s)][1.25923 (0.0384846s)][1.20517 (0.0493908s)][1.10536 (0.0761343s)]] +[[cpp_int(fixed)][[*1] (0.0220379s)][[*1] (0.030562s)][[*1] (0.0409823s)][[*1] (0.0688775s)]] +[[gmp_int][2.14429 (0.0472558s)][1.95901 (0.0598712s)][2.07584 (0.0850728s)][1.94265 (0.133805s)]] +[[tommath_int][5.98286 (0.13185s)][4.65705 (0.142329s)][3.85812 (0.158115s)][4.81524 (0.331662s)]] ] [table Operator |(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00244005s)][[*1] (0.0040142s)][[*1] (0.00983777s)][[*1] (0.0155223s)][[*1] (0.0293444s)]] -[[gmp_int][64.6148 (0.157663s)][34.5827 (0.138822s)][14.2764 (0.140448s)][10.3248 (0.160264s)][5.33565 (0.156572s)]] -[[tommath_int][137.825 (0.3363s)][81.1074 (0.325581s)][34.8737 (0.343079s)][22.3727 (0.347276s)][18.912 (0.554963s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.40808 (0.0389721s)][1.65035 (0.0437872s)][1.51667 (0.0466144s)][1.37806 (0.0582842s)]] +[[cpp_int(fixed)][[*1] (0.0276775s)][[*1] (0.026532s)][[*1] (0.0307348s)][[*1] (0.0422945s)]] +[[gmp_int][5.31451 (0.147092s)][5.37333 (0.142565s)][4.86508 (0.149527s)][3.74364 (0.158335s)]] +[[tommath_int][11.9312 (0.330226s)][12.943 (0.343403s)][11.4457 (0.35178s)][14.4462 (0.610997s)]] +] +[table Operator gcd +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.82514 (4.45586s)][1.75955 (10.1748s)][1.87025 (25.23s)][2.11453 (68.8556s)]] +[[cpp_int(fixed)][1.57965 (3.85654s)][1.67404 (9.68027s)][1.8405 (24.8287s)][2.27588 (74.1096s)]] +[[gmp_int][[*1] (2.44138s)][[*1] (5.78259s)][[*1] (13.4902s)][[*1] (32.5631s)]] +[[tommath_int][5.01357 (12.24s)][4.38161 (25.337s)][4.08681 (55.1319s)][4.01045 (130.593s)]] +] +[table Operator str +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.46421 (0.00195137s)][1.21669 (0.00319216s)][1.25041 (0.00765237s)][1.53339 (0.0218096s)]] +[[cpp_int(fixed)][[*1] (0.00133271s)][[*1] (0.00262366s)][1.0109 (0.00618661s)][1.24429 (0.0176978s)]] +[[gmp_int][1.7777 (0.00236916s)][1.27408 (0.00334274s)][[*1] (0.00611991s)][[*1] (0.0142232s)]] +[[tommath_int][11.9797 (0.0159654s)][18.3349 (0.0481046s)][18.3681 (0.112411s)][25.0355 (0.356085s)]] +] +[endsect] + +[section:rational_performance Rational Type Perfomance] + +Note that these tests are carefully designed to test performance of the underlying algorithms +and not memory allocation or variable copying. As usual, performance results should be taken +with a healthy dose of scepticsm, and real-world peformance may vary widely depending upon the +specifics of the program. In each table relative times are given first, with the best performer +given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 +operations. + +Test code was compiled with Microsoft Visual Studio 2010 with all optimisations +turned on (/Ox), and used MPIR-2.3.0 and [mpfr]-3.0.0. The tests were run on 32-bit +Windows Vista machine. + +[table Operator + +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.91758 (18.1263s)][6.60754 (44.1182s)][6.65334 (103.169s)][6.44717 (244.055s)]] +[[mpq_rational][[*1] (3.06312s)][[*1] (6.67695s)][[*1] (15.5064s)][[*1] (37.8546s)]] +] +[table Operator +(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][3.98512 (2.67249s)][4.24335 (3.04309s)][4.65009 (3.83046s)][5.45832 (5.08346s)]] +[[mpq_rational][[*1] (0.670618s)][[*1] (0.717144s)][[*1] (0.823739s)][[*1] (0.931322s)]] +] +[table Operator - +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.91504 (18.2374s)][6.55676 (43.8659s)][6.66239 (103.481s)][6.47224 (244.887s)]] +[[mpq_rational][[*1] (3.08322s)][[*1] (6.69018s)][[*1] (15.5321s)][[*1] (37.8365s)]] +] +[table Operator -(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][3.96173 (2.66785s)][4.36532 (3.09023s)][4.59363 (3.74494s)][5.43075 (5.09156s)]] +[[mpq_rational][[*1] (0.673405s)][[*1] (0.707904s)][[*1] (0.815246s)][[*1] (0.937541s)]] +] +[table Operator * +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.59286 (32.3559s)][6.54125 (82.4247s)][6.8815 (197.198s)][6.84066 (473.057s)]] +[[mpq_rational][[*1] (5.78521s)][[*1] (12.6008s)][[*1] (28.6562s)][[*1] (69.1537s)]] +] +[table Operator *(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][2.70193 (3.1466s)][3.10134 (3.79056s)][3.659 (4.93935s)][4.61372 (6.89845s)]] +[[mpq_rational][[*1] (1.16457s)][[*1] (1.22223s)][[*1] (1.34992s)][[*1] (1.4952s)]] +] +[table Operator / +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][4.36846 (63.9498s)][5.52565 (145.045s)][6.18331 (328.069s)][6.49822 (784.806s)]] +[[mpq_rational][[*1] (14.639s)][[*1] (26.2494s)][[*1] (53.0571s)][[*1] (120.772s)]] +] +[table Operator /(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][2.26643 (3.13785s)][2.57125 (3.76931s)][3.20872 (5.06758s)][4.02177 (7.17803s)]] +[[mpq_rational][[*1] (1.38449s)][[*1] (1.46594s)][[*1] (1.57931s)][[*1] (1.78479s)]] +] +[table Operator str +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.40493 (0.0199393s)][8.55089 (0.0511907s)][9.91026 (0.118839s)][9.93546 (0.285367s)]] +[[mpq_rational][[*1] (0.00368909s)][[*1] (0.00598659s)][[*1] (0.0119915s)][[*1] (0.028722s)]] ] [endsect] diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index b022d658..43ddbe28 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -670,7 +671,7 @@ public: while(eval_get_sign(t) != 0) { cpp_int_backend t2; - divide_unsigned_helper(t2, t, block10, r); + divide_unsigned_helper(&t2, t, block10, r); t = t2; limb_type v = r.limbs()[0]; for(unsigned i = 0; i < digits_per_block_10; ++i) @@ -1141,15 +1142,15 @@ inline void eval_multiply(cpp_int_backend& result, c eval_multiply(result, result, val); } template -void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) { - if((&result == &x) || (&r == &x)) + if((result == &x) || (&r == &x)) { cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } - if((&result == &y) || (&r == &y)) + if((result == &y) || (&r == &y)) { cpp_int_backend t(y); divide_unsigned_helper(result, x, t, r); @@ -1177,7 +1178,7 @@ void divide_unsigned_helper(cpp_int_backend& result, using default_ops::eval_subtract; - if(&result == &r) + if(result == &r) { cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); @@ -1209,13 +1210,15 @@ void divide_unsigned_helper(cpp_int_backend& result, { // x is zero, so is the result: r = y; - result = x; + if(result) + *result = x; return; } r = x; r.sign(false); - result = static_cast(0u); + if(result) + *result = static_cast(0u); // // Check if the remainder is already less than the divisor, if so // we already have the result. Note we try and avoid a full compare @@ -1237,7 +1240,8 @@ void divide_unsigned_helper(cpp_int_backend& result, // if(r_order == 0) { - result = px[0] / py[0]; + if(result) + *result = px[0] / py[0]; r = px[0] % py[0]; return; } @@ -1248,18 +1252,24 @@ void divide_unsigned_helper(cpp_int_backend& result, b = y_order ? (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] : py[0]; - result = a / b; + if(result) + *result = a / b; r = a % b; return; } // // prepare result: // - result.resize(1 + r_order - y_order); + if(result) + result->resize(1 + r_order - y_order); typename cpp_int_backend::const_limb_pointer prem = r.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - for(unsigned i = 1; i < 1 + r_order - y_order; ++i) - pr[i] = 0; + typename cpp_int_backend::limb_pointer pr; + if(result) + { + pr = result->limbs(); + for(unsigned i = 1; i < 1 + r_order - y_order; ++i) + pr[i] = 0; + } bool first_pass = true; do @@ -1299,29 +1309,32 @@ void divide_unsigned_helper(cpp_int_backend& result, // Update result: // limb_type shift = r_order - y_order; - if(r_neg) + if(result) { - if(pr[shift] > guess) - pr[shift] -= guess; + if(r_neg) + { + if(pr[shift] > guess) + pr[shift] -= guess; + else + { + t.resize(shift + 1); + t.limbs()[shift] = guess; + for(unsigned i = 0; i < shift; ++i) + t.limbs()[i] = 0; + eval_subtract(*result, t); + } + } + else if(cpp_int_backend::max_limb_value - pr[shift] > guess) + pr[shift] += guess; else { t.resize(shift + 1); t.limbs()[shift] = guess; for(unsigned i = 0; i < shift; ++i) t.limbs()[i] = 0; - eval_subtract(result, t); + eval_add(*result, t); } } - else if(cpp_int_backend::max_limb_value - pr[shift] > guess) - pr[shift] += guess; - else - { - t.resize(shift + 1); - t.limbs()[shift] = guess; - for(unsigned i = 0; i < shift; ++i) - t.limbs()[i] = 0; - eval_add(result, t); - } // // Calculate guess * y, we use a fused mutiply-shift O(N) for this // rather than a full O(N^2) multiply: @@ -1359,11 +1372,11 @@ void divide_unsigned_helper(cpp_int_backend& result, // First time through we need to strip any leading zero, otherwise // the termination condition goes belly-up: // - if(first_pass) + if(result && first_pass) { first_pass = false; - while(pr[result.size() - 1] == 0) - result.resize(result.size() - 1); + while(pr[result->size() - 1] == 0) + result->resize(result->size() - 1); } // // Update r_order: @@ -1382,7 +1395,8 @@ void divide_unsigned_helper(cpp_int_backend& result, if(r_neg && eval_get_sign(r)) { // We have one too many in the result: - eval_decrement(result); + if(result) + eval_decrement(*result); r.negate(); if(y.sign()) eval_subtract(r, y); @@ -1394,16 +1408,16 @@ void divide_unsigned_helper(cpp_int_backend& result, } template -void divide_unsigned_helper(cpp_int_backend& result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) { - if((&result == &x) || (&r == &x)) + if((result == &x) || (&r == &x)) { cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } - if(&result == &r) + if(result == &r) { cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); @@ -1442,7 +1456,8 @@ void divide_unsigned_helper(cpp_int_backend& result, // if((r_order == 0) && (*pr < y)) { - result = static_cast(0u); + if(result) + *result = static_cast(0u); return; } @@ -1451,8 +1466,11 @@ void divide_unsigned_helper(cpp_int_backend& result, // if(r_order == 0) { - result = *pr / y; - result.sign(x.sign()); + if(result) + { + *result = *pr / y; + result->sign(x.sign()); + } r.sign(x.sign()); *pr %= y; return; @@ -1461,16 +1479,23 @@ void divide_unsigned_helper(cpp_int_backend& result, { double_limb_type a; a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; - result = a / y; - result.sign(x.sign()); + if(result) + { + *result = a / y; + result->sign(x.sign()); + } r = a % y; r.sign(x.sign()); return; } - result.resize(r_order + 1); - typename cpp_int_backend::limb_pointer pres = result.limbs(); - pres[r_order] = 0; // just in case we don't set the most significant limb below. + typename cpp_int_backend::limb_pointer pres; + if(result) + { + result->resize(r_order + 1); + pres = result->limbs(); + pres[r_order] = 0; // just in case we don't set the most significant limb below. + } do { @@ -1485,7 +1510,8 @@ void divide_unsigned_helper(cpp_int_backend& result, r.resize(r.size() - 1); --r_order; pr[r_order] = static_cast(b); - pres[r_order] = static_cast(a / y); + if(result) + pres[r_order] = static_cast(a / y); if(r_order && pr[r_order] == 0) { --r_order; // No remainder, division was exact. @@ -1494,7 +1520,8 @@ void divide_unsigned_helper(cpp_int_backend& result, } else { - pres[r_order] = pr[r_order] / y; + if(result) + pres[r_order] = pr[r_order] / y; pr[r_order] %= y; if(r_order && pr[r_order] == 0) { @@ -1507,10 +1534,12 @@ void divide_unsigned_helper(cpp_int_backend& result, // short-circuit cases handled first: while(r_order || (pr[r_order] > y)); - result.normalize(); + if(result) + { + result->normalize(); + result->sign(x.sign()); + } r.normalize(); - - result.sign(x.sign()); r.sign(x.sign()); BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed @@ -1520,20 +1549,20 @@ template inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { cpp_int_backend r; - divide_unsigned_helper(result, a, b, r); + divide_unsigned_helper(&result, a, b, r); result.sign(a.sign() != b.sign()); } template inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) { cpp_int_backend r; - divide_unsigned_helper(result, a, b, r); + divide_unsigned_helper(&result, a, b, r); } template inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) { cpp_int_backend r; - divide_unsigned_helper(result, a, std::abs(b), r); + divide_unsigned_helper(&result, a, std::abs(b), r); if(b < 0) result.negate(); } @@ -1561,21 +1590,18 @@ inline void eval_divide(cpp_int_backend& result, sig template inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { - cpp_int_backend r; - divide_unsigned_helper(r, a, b, result); + divide_unsigned_helper(static_cast* >(0), a, b, result); result.sign(a.sign()); } template inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) { - cpp_int_backend r; - divide_unsigned_helper(r, a, b, result); + divide_unsigned_helper(static_cast* >(0), a, b, result); } template inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) { - cpp_int_backend r; - divide_unsigned_helper(r, a, static_cast(std::abs(b)), result); + divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); } template inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) @@ -2024,6 +2050,12 @@ inline int eval_get_sign(const cpp_int_backend& val) { return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1; } +template +inline void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) +{ + result = val; + result.sign(false); +} // // Get the location of the least-significant-bit: @@ -2132,6 +2164,36 @@ inline void eval_lcm(cpp_int_backend& result, const result.negate(); } +template +inline void eval_qr(const cpp_int_backend& x, const cpp_int_backend& y, + cpp_int_backend& q, cpp_int_backend& r) +{ + divide_unsigned_helper(&q, x, y, r); + q.sign(x.sign() != y.sign()); + r.sign(x.sign()); +} + +template +inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) +{ + if((sizeof(Integer) <= sizeof(limb_type)) || (val <= (std::numeric_limits::max)())) + { + cpp_int_backend d; + divide_unsigned_helper(static_cast*>(0), x, val, d); + return d.limbs()[0]; + } + else + { + return default_ops::eval_integer_modulus(x, val); + } +} +template +inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) +{ + typedef typename make_unsigned::type unsigned_type; + return eval_integer_modulus(x, static_cast(std::abs(val))); +} + } // namespace backends; using boost::multiprecision::backends::cpp_int_backend; @@ -2147,11 +2209,13 @@ typedef mp_number cpp_rational; typedef mp_number > mp_uint128_t; typedef mp_number > mp_uint256_t; typedef mp_number > mp_uint512_t; +typedef mp_number > mp_uint1024_t; // Fixed precision signed types: typedef mp_number > mp_int128_t; typedef mp_number > mp_int256_t; typedef mp_number > mp_int512_t; +typedef mp_number > mp_int1024_t; }} // namespaces diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index f59b198f..2b7dc8cf 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -7,6 +7,7 @@ #define BOOST_MATH_ER_GMP_BACKEND_HPP #include +#include #include #include #include @@ -1355,6 +1356,32 @@ inline void eval_lcm(gmp_int& result, const gmp_int& a, const long b) mpz_lcm_ui(result.data(), a.data(), std::abs(b)); } +inline void eval_qr(const gmp_int& x, const gmp_int& y, + gmp_int& q, gmp_int& r) +{ + mpz_tdiv_qr(q.data(), r.data(), x.data(), y.data()); +} + +template +inline typename enable_if, Integer>::type eval_integer_modulus(const gmp_int& x, Integer val) +{ + if((sizeof(Integer) <= sizeof(long)) || (val <= (std::numeric_limits::max)())) + { + gmp_int r; + return mpz_tdiv_r_ui(r.data(), x.data(), val); + } + else + { + return default_ops::eval_integer_modulus(x, val); + } +} +template +inline typename enable_if, Integer>::type eval_integer_modulus(const gmp_int& x, Integer val) +{ + typedef typename make_unsigned::type unsigned_type; + return eval_integer_modulus(x, static_cast(std::abs(val))); +} + struct gmp_rational; void eval_add(gmp_rational& t, const gmp_rational& o); diff --git a/include/boost/multiprecision/integer_ops.hpp b/include/boost/multiprecision/integer_ops.hpp new file mode 100644 index 00000000..7bd1e6c8 --- /dev/null +++ b/include/boost/multiprecision/integer_ops.hpp @@ -0,0 +1,62 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_INT_FUNC_HPP +#define BOOST_MP_INT_FUNC_HPP + +#include + +namespace boost{ namespace multiprecision{ + +namespace default_ops +{ + +template +inline void eval_qr(const Backend& x, const Backend& y, Backend& q, Backend& r) +{ + eval_divide(q, x, y); + eval_modulus(r, x, y); +} + +template +inline typename enable_if, Integer>::type maybe_abs(Integer i) { return std::abs(i); } +template +inline typename enable_if, Integer>::type maybe_abs(Integer i) { return i; } + +template +inline Integer eval_integer_modulus(const Backend& x, Integer val) +{ + using default_ops::eval_modulus; + using default_ops::eval_convert_to; + typedef typename boost::multiprecision::detail::canonical::type int_type; + Backend t; + eval_modulus(t, x, static_cast(val)); + Integer result; + eval_convert_to(&result, t); + return maybe_abs(result); +} + +} + +template +inline void divide_qr(const mp_number& x, const mp_number& y, + mp_number& q, mp_number& r) +{ + using default_ops::eval_qr; + eval_qr(x.backend(), y.backend(), q.backend(), r.backend()); +} + +template +inline typename enable_if, Integer>::type integer_modulus(const mp_number& x, Integer val) +{ + using default_ops::eval_integer_modulus; + return eval_integer_modulus(x.backend(), val); +} + +}} //namespaces + +#endif + + diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index f95713db..506e9022 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -30,21 +30,88 @@ void expmod(const mp_number& a, mp_number +bool check_small_factors(const mp_number& n) +{ + static const boost::uint32_t small_factors1[] = { + 3u, 5u, 7u, 11u, 13u, 17u, 19u, 23u }; + static const boost::uint32_t pp1 = 223092870u; + + boost::uint32_t m1 = integer_modulus(n, pp1); + + for(unsigned i = 0; i < sizeof(small_factors1) / sizeof(small_factors1[0]); ++i) + { + BOOST_ASSERT(pp1 % small_factors1[i] == 0); + if(m1 % small_factors1[i] == 0) + return false; + } + + static const boost::uint32_t small_factors2[] = { + 29u, 31u, 37u, 41u, 43u, 47u }; + static const boost::uint32_t pp2 = 2756205443u; + + m1 = integer_modulus(n, pp2); + + for(unsigned i = 0; i < sizeof(small_factors2) / sizeof(small_factors2[0]); ++i) + { + BOOST_ASSERT(pp2 % small_factors2[i] == 0); + if(m1 % small_factors2[i] == 0) + return false; + } + + static const boost::uint32_t small_factors3[] = { + 53u, 59u, 61u, 67u, 71u }; + static const boost::uint32_t pp3 = 907383479u; + + m1 = integer_modulus(n, pp3); + + for(unsigned i = 0; i < sizeof(small_factors3) / sizeof(small_factors3[0]); ++i) + { + BOOST_ASSERT(pp3 % small_factors3[i] == 0); + if(m1 % small_factors3[i] == 0) + return false; + } + + static const boost::uint32_t small_factors4[] = { + 73u, 79u, 83u, 89u, 97u }; + static const boost::uint32_t pp4 = 4132280413u; + + m1 = integer_modulus(n, pp4); + + for(unsigned i = 0; i < sizeof(small_factors4) / sizeof(small_factors4[0]); ++i) + { + BOOST_ASSERT(pp4 % small_factors4[i] == 0); + if(m1 % small_factors4[i] == 0) + return false; + } + + static const boost::uint32_t small_factors5[] = { + 101u, 103u, 107u, 109u }; + static const boost::uint32_t pp5 = 121330189u; + + m1 = integer_modulus(n, pp5); + + for(unsigned i = 0; i < sizeof(small_factors5) / sizeof(small_factors5[0]); ++i) + { + BOOST_ASSERT(pp5 % small_factors5[i] == 0); + if(m1 % small_factors5[i] == 0) + return false; + } + return true; +} + template bool miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen) { typedef mp_number number_type; - static const unsigned small_factors[] = { - 3u, 5u, 7u, 11u, 13u, 17u, 19u, 23u, 29u, 31u, 37u, 41u, 43u, 47u, 53u }; - if(n < 2) return false; if((n & 1) == 0) return false; - // - // Sanity check for small factors: - // + + if(!check_small_factors(n)) + return false; number_type q = (n - 1) >> 1; unsigned k = 1; diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 50bc1785..5a948940 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -442,6 +443,34 @@ inline void eval_lcm(tommath_int& result, const tommath_int& a, const tommath_in detail::check_tommath_result(mp_lcm(const_cast< ::mp_int*>(&a.data()), const_cast< ::mp_int*>(&b.data()), const_cast< ::mp_int*>(&result.data()))); } +inline void eval_qr(const tommath_int& x, const tommath_int& y, + tommath_int& q, tommath_int& r) +{ + detail::check_tommath_result(mp_div(const_cast< ::mp_int*>(&x.data()), const_cast< ::mp_int*>(&y.data()), &q.data(), &r.data())); +} + +template +inline typename enable_if, Integer>::type eval_integer_modulus(const tommath_int& x, Integer val) +{ + static const mp_digit m = (static_cast(1) << DIGIT_BIT) - 1; + if(val <= m) + { + mp_digit d; + detail::check_tommath_result(mp_mod_d(const_cast< ::mp_int*>(&x.data()), static_cast(val), &d)); + return d; + } + else + { + return default_ops::eval_integer_modulus(x, val); + } +} +template +inline typename enable_if, Integer>::type eval_integer_modulus(const tommath_int& x, Integer val) +{ + typedef typename make_unsigned::type unsigned_type; + return eval_integer_modulus(x, static_cast(std::abs(val))); +} + } // namespace backends using boost::multiprecision::backends::tommath_int; diff --git a/performance/miller_rabin_performance.cpp b/performance/miller_rabin_performance.cpp new file mode 100644 index 00000000..1fbed9b7 --- /dev/null +++ b/performance/miller_rabin_performance.cpp @@ -0,0 +1,164 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#define BOOST_CHRONO_HEADER_ONLY + +#if !defined(TEST_MPZ) && !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) +# define TEST_MPZ +# define TEST_TOMMATH +# define TEST_CPP_INT +#endif + +#ifdef TEST_MPZ +#include +#endif +#ifdef TEST_TOMMATH +#include +#endif +#ifdef TEST_CPP_INT +#include +#endif +#include +#include +#include + +template +struct stopwatch +{ + typedef typename Clock::duration duration; + stopwatch() + { + m_start = Clock::now(); + } + duration elapsed() + { + return Clock::now() - m_start; + } + void reset() + { + m_start = Clock::now(); + } + +private: + typename Clock::time_point m_start; +}; + +unsigned allocation_count = 0; + +void *(*alloc_func_ptr) (size_t); +void *(*realloc_func_ptr) (void *, size_t, size_t); +void (*free_func_ptr) (void *, size_t); + +void *alloc_func(size_t n) +{ + ++allocation_count; + return (*alloc_func_ptr)(n); +} + +void free_func(void * p, size_t n) +{ + (*free_func_ptr)(p, n); +} + +void * realloc_func(void * p, size_t old, size_t n) +{ + ++allocation_count; + return (*realloc_func_ptr)(p, old, n); +} + +boost::chrono::duration test_miller_rabin_gmp() +{ + using namespace boost::random; + using namespace boost::multiprecision; + + stopwatch c; + + independent_bits_engine gen; + + for(unsigned i = 0; i < 1000; ++i) + { + mpz_int n = gen(); + mpz_probab_prime_p(n.backend().data(), 25); + } + return c.elapsed(); +} + +std::map results; +double min_time = (std::numeric_limits::max)(); + +template +boost::chrono::duration test_miller_rabin(const char* name) +{ + using namespace boost::random; + + stopwatch c; + + independent_bits_engine gen; + // + // We must use a different generator for the tests and number generation, otherwise + // we get false positives. + // + mt19937 gen2; + + for(unsigned i = 0; i < 1000; ++i) + { + IntType n = gen(); + miller_rabin_test(n, 25, gen2); + } + boost::chrono::duration t = c.elapsed(); + double d = t.count(); + if(d < min_time) + min_time = d; + results[name] = d; + std::cout << "Time for " << std::setw(30) << std::left << name << " = " << d << std::endl; + return t; +} + +void generate_quickbook() +{ + std::cout << "[table\n"; + + std::map::const_iterator i(results.begin()), j(results.end()); + + while(i != j) + { + double rel = i->second / min_time; + std::cout << "[[" << i->first << "][" << rel << "(" << i->second << "s)]]\n"; + ++i; + } + + std::cout << "]\n"; +} + +int main() +{ + using namespace boost::multiprecision; +#ifdef TEST_CPP_INT + test_miller_rabin, false> >("cpp_int (no Expression templates)"); + test_miller_rabin("cpp_int"); + test_miller_rabin, false> >("cpp_int (64-bit cache)"); + test_miller_rabin, false> >("cpp_int (256-bit cache)"); + test_miller_rabin, false> >("cpp_int (512-bit cache)"); + test_miller_rabin, false> >("cpp_int (1024-bit cache)"); + test_miller_rabin, false> >("mp_int1024_t (no Expression templates)"); + test_miller_rabin("mp_int1024_t"); +#endif +#ifdef TEST_MPZ + test_miller_rabin >("mpz_int (no Expression templates)"); + test_miller_rabin("mpz_int"); + std::cout << "Time for mpz_int (native Miller Rabin Test) = " << test_miller_rabin_gmp() << std::endl; +#endif +#ifdef TEST_TOMMATH + test_miller_rabin >("mp_int (no Expression templates)"); + test_miller_rabin("mp_int"); +#endif + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + mp_set_memory_functions(&alloc_func, &realloc_func, &free_func); + + generate_quickbook(); + + return 0; +} + diff --git a/performance/performance_test-msvc-10.log b/performance/performance_test-msvc-10.log index 86435ab4..a7a8386a 100644 --- a/performance/performance_test-msvc-10.log +++ b/performance/performance_test-msvc-10.log @@ -1,621 +1,718 @@ -gmp_float 50 + 0.108402 -gmp_float 50 - 0.124108 -gmp_float 50 * 0.268372 -gmp_float 50 / 1.23366 -gmp_float 50 str 0.0129107 -gmp_float 50 +(int)0.0336201 -gmp_float 50 -(int)0.133911 -gmp_float 50 *(int)0.0412457 -gmp_float 50 /(int)0.174836 -gmp_float 100 + 0.113853 -gmp_float 100 - 0.117253 -gmp_float 100 * 0.395718 -gmp_float 100 / 1.62424 -gmp_float 100 str 0.0203967 -gmp_float 100 +(int)0.0353951 -gmp_float 100 -(int)0.131355 -gmp_float 100 *(int)0.0433772 -gmp_float 100 /(int)0.22889 -gmp_float 500 + 0.15342 -gmp_float 500 - 0.165713 -gmp_float 500 * 3.28705 -gmp_float 500 / 7.9874 -gmp_float 500 str 0.138075 -gmp_float 500 +(int)0.0630232 -gmp_float 500 -(int)0.186319 -gmp_float 500 *(int)0.0821206 -gmp_float 500 /(int)0.694411 -gmp_int 64 + 0.0390717 -gmp_int 64 - 0.0424608 -gmp_int 64 * 0.0560369 -gmp_int 64 / 0.775316 -gmp_int 64 str 0.00132216 -gmp_int 64 +(int)0.031766 -gmp_int 64 -(int)0.0303454 -gmp_int 64 *(int)0.0203397 -gmp_int 64 /(int)0.042564 -gmp_int 64 % 0.73595 -gmp_int 64 | 0.0416586 -gmp_int 64 & 0.0477189 -gmp_int 64 ^ 0.0429392 -gmp_int 64 << 0.0230509 -gmp_int 64 >> 0.0271544 -gmp_int 64 %(int)0.0340695 -gmp_int 64 |(int)0.157663 -gmp_int 64 &(int)0.157502 -gmp_int 64 ^(int)0.145376 -gmp_int 128 + 0.0422553 -gmp_int 128 - 0.0408253 -gmp_int 128 * 0.0663044 -gmp_int 128 / 0.880715 -gmp_int 128 str 0.00222046 -gmp_int 128 +(int)0.0317741 -gmp_int 128 -(int)0.0304669 -gmp_int 128 *(int)0.0244196 -gmp_int 128 /(int)0.06838 -gmp_int 128 % 0.749422 -gmp_int 128 | 0.0478096 -gmp_int 128 & 0.0528211 -gmp_int 128 ^ 0.0534314 -gmp_int 128 << 0.0255925 -gmp_int 128 >> 0.0276968 -gmp_int 128 %(int)0.0554367 -gmp_int 128 |(int)0.138822 -gmp_int 128 &(int)0.149717 -gmp_int 128 ^(int)0.147123 -gmp_int 256 + 0.0434751 -gmp_int 256 - 0.0463496 -gmp_int 256 * 0.127636 -gmp_int 256 / 0.908404 -gmp_int 256 str 0.00304557 -gmp_int 256 +(int)0.0417573 -gmp_int 256 -(int)0.0405733 -gmp_int 256 *(int)0.025582 -gmp_int 256 /(int)0.104957 -gmp_int 256 % 0.772122 -gmp_int 256 | 0.0602998 -gmp_int 256 & 0.0653902 -gmp_int 256 ^ 0.0613552 -gmp_int 256 << 0.031955 -gmp_int 256 >> 0.0314426 -gmp_int 256 %(int)0.0967406 -gmp_int 256 |(int)0.140448 -gmp_int 256 &(int)0.153268 -gmp_int 256 ^(int)0.150405 -gmp_int 512 + 0.0503875 -gmp_int 512 - 0.051838 -gmp_int 512 * 0.53821 -gmp_int 512 / 1.03572 -gmp_int 512 str 0.00604351 -gmp_int 512 +(int)0.0645488 -gmp_int 512 -(int)0.0599252 -gmp_int 512 *(int)0.033311 -gmp_int 512 /(int)0.187096 -gmp_int 512 % 0.874894 -gmp_int 512 | 0.0842575 -gmp_int 512 & 0.0917698 -gmp_int 512 ^ 0.0864335 -gmp_int 512 << 0.0443618 -gmp_int 512 >> 0.0322188 -gmp_int 512 %(int)0.180504 -gmp_int 512 |(int)0.160264 -gmp_int 512 &(int)0.159328 -gmp_int 512 ^(int)0.150338 -gmp_int 1024 + 0.0702458 -gmp_int 1024 - 0.0779673 -gmp_int 1024 * 1.52168 -gmp_int 1024 / 1.29625 -gmp_int 1024 str 0.0143268 -gmp_int 1024 +(int)0.107903 -gmp_int 1024 -(int)0.105058 -gmp_int 1024 *(int)0.048001 -gmp_int 1024 /(int)0.35331 -gmp_int 1024 % 1.07382 -gmp_int 1024 | 0.133588 -gmp_int 1024 & 0.140007 -gmp_int 1024 ^ 0.134421 -gmp_int 1024 << 0.0707887 -gmp_int 1024 >> 0.0405327 -gmp_int 1024 %(int)0.347216 -gmp_int 1024 |(int)0.156572 -gmp_int 1024 &(int)0.166481 -gmp_int 1024 ^(int)0.160306 -mpq_rational 64 + 1.47032 -mpq_rational 64 - 1.48169 -mpq_rational 64 * 2.67402 -mpq_rational 64 / 9.26405 -mpq_rational 64 str 0.00265159 -mpq_rational 64 +(int)0.639153 -mpq_rational 64 -(int)0.650283 -mpq_rational 64 *(int)1.15673 -mpq_rational 64 /(int)1.40596 -mpq_rational 128 + 3.1599 -mpq_rational 128 - 3.17694 -mpq_rational 128 * 5.89806 -mpq_rational 128 / 14.7461 -mpq_rational 128 str 0.00363964 -mpq_rational 128 +(int)0.683218 -mpq_rational 128 -(int)0.669498 -mpq_rational 128 *(int)1.20559 -mpq_rational 128 /(int)1.42215 -mpq_rational 256 + 6.74926 -mpq_rational 256 - 6.75317 -mpq_rational 256 * 12.7524 -mpq_rational 256 / 26.4939 -mpq_rational 256 str 0.00677698 -mpq_rational 256 +(int)0.725686 -mpq_rational 256 -(int)0.707811 -mpq_rational 256 *(int)1.25776 -mpq_rational 256 /(int)1.50342 -mpq_rational 512 + 16.7334 -mpq_rational 512 - 15.9167 -mpq_rational 512 * 29.4044 -mpq_rational 512 / 54.0641 -mpq_rational 512 str 0.0117945 -mpq_rational 512 +(int)0.895283 -mpq_rational 512 -(int)0.83232 -mpq_rational 512 *(int)1.41413 -mpq_rational 512 /(int)1.62326 -mpq_rational 1024 + 38.5739 -mpq_rational 1024 - 39.0541 -mpq_rational 1024 * 70.1615 -mpq_rational 1024 / 126.261 -mpq_rational 1024 str 0.0283447 -mpq_rational 1024 +(int)0.931053 -mpq_rational 1024 -(int)1.06134 -mpq_rational 1024 *(int)1.59151 -mpq_rational 1024 /(int)1.7796 -tommath_int 64 + 0.018872 -tommath_int 64 - 0.0237699 -tommath_int 64 * 0.0670506 -tommath_int 64 / 1.79253 -tommath_int 64 str 0.00734164 -tommath_int 64 +(int)0.224655 -tommath_int 64 -(int)0.202873 -tommath_int 64 *(int)0.239357 -tommath_int 64 /(int)1.37938 -tommath_int 64 % 2.56986 -tommath_int 64 | 0.132539 -tommath_int 64 & 0.130147 -tommath_int 64 ^ 0.127996 -tommath_int 64 << 0.0314737 -tommath_int 64 >> 0.250865 -tommath_int 64 %(int)1.46083 -tommath_int 64 |(int)0.3363 -tommath_int 64 &(int)0.342626 -tommath_int 64 ^(int)0.344367 -tommath_int 128 + 0.0216659 -tommath_int 128 - 0.0270677 -tommath_int 128 * 0.111722 -tommath_int 128 / 2.13582 -tommath_int 128 str 0.0163193 -tommath_int 128 +(int)0.22725 -tommath_int 128 -(int)0.207089 -tommath_int 128 *(int)0.249452 -tommath_int 128 /(int)1.62383 -tommath_int 128 % 2.19585 -tommath_int 128 | 0.141612 -tommath_int 128 & 0.130002 -tommath_int 128 ^ 0.130457 -tommath_int 128 << 0.0389456 -tommath_int 128 >> 0.251932 -tommath_int 128 %(int)1.65639 -tommath_int 128 |(int)0.325581 -tommath_int 128 &(int)0.331077 -tommath_int 128 ^(int)0.331853 -tommath_int 256 + 0.0301548 -tommath_int 256 - 0.0382195 -tommath_int 256 * 0.34452 -tommath_int 256 / 3.03438 -tommath_int 256 str 0.0450349 -tommath_int 256 +(int)0.2481 -tommath_int 256 -(int)0.220375 -tommath_int 256 *(int)0.273682 -tommath_int 256 /(int)2.32908 -tommath_int 256 % 3.10053 -tommath_int 256 | 0.140382 -tommath_int 256 & 0.145711 -tommath_int 256 ^ 0.145171 -tommath_int 256 << 0.065292 -tommath_int 256 >> 0.296661 -tommath_int 256 %(int)2.26685 -tommath_int 256 |(int)0.343079 -tommath_int 256 &(int)0.351853 -tommath_int 256 ^(int)0.352003 -tommath_int 512 + 0.0425188 -tommath_int 512 - 0.0488346 -tommath_int 512 * 0.995374 -tommath_int 512 / 5.01541 -tommath_int 512 str 0.119168 -tommath_int 512 +(int)0.27807 -tommath_int 512 -(int)0.280258 -tommath_int 512 *(int)0.462652 -tommath_int 512 /(int)3.72421 -tommath_int 512 % 4.75068 -tommath_int 512 | 0.148416 -tommath_int 512 & 0.155508 -tommath_int 512 ^ 0.158845 -tommath_int 512 << 0.0939451 -tommath_int 512 >> 0.313884 -tommath_int 512 %(int)3.5978 -tommath_int 512 |(int)0.347276 -tommath_int 512 &(int)0.364899 -tommath_int 512 ^(int)0.354275 -tommath_int 1024 + 0.0717123 -tommath_int 1024 - 0.0769566 -tommath_int 1024 * 3.12935 -tommath_int 1024 / 11.517 -tommath_int 1024 str 0.377431 -tommath_int 1024 +(int)0.293538 -tommath_int 1024 -(int)0.260488 -tommath_int 1024 *(int)0.437175 -tommath_int 1024 /(int)8.55783 -tommath_int 1024 % 11.5211 -tommath_int 1024 | 0.338127 -tommath_int 1024 & 0.331858 -tommath_int 1024 ^ 0.340584 -tommath_int 1024 << 0.163725 -tommath_int 1024 >> 0.506974 -tommath_int 1024 %(int)8.682 -tommath_int 1024 |(int)0.554963 -tommath_int 1024 &(int)0.605213 -tommath_int 1024 ^(int)0.561207 -fixed_int 64 + 0.0031291 -fixed_int 64 - 0.00339191 -fixed_int 64 * 0.0223481 -fixed_int 64 / 0.0991632 -fixed_int 64 str 0.000465841 -fixed_int 64 +(int)0.00335294 -fixed_int 64 -(int)0.00250933 -fixed_int 64 *(int)0.00444316 -fixed_int 64 /(int)0.0443082 -fixed_int 64 % 0.0946529 -fixed_int 64 | 0.00295261 -fixed_int 64 & 0.00298048 -fixed_int 64 ^ 0.00307714 -fixed_int 64 << 0.0119095 -fixed_int 64 >> 0.006361 -fixed_int 64 %(int)0.0425984 -fixed_int 64 |(int)0.00244005 -fixed_int 64 &(int)0.00222291 -fixed_int 64 ^(int)0.00236664 -fixed_int 128 + 0.00703043 -fixed_int 128 - 0.0073172 -fixed_int 128 * 0.0375288 -fixed_int 128 / 0.172328 -fixed_int 128 str 0.00102073 -fixed_int 128 +(int)0.00376116 -fixed_int 128 -(int)0.00358055 -fixed_int 128 *(int)0.0135739 -fixed_int 128 /(int)0.110308 -fixed_int 128 % 0.170561 -fixed_int 128 | 0.00560832 -fixed_int 128 & 0.00546222 -fixed_int 128 ^ 0.00538197 -fixed_int 128 << 0.0131746 -fixed_int 128 >> 0.00880189 -fixed_int 128 %(int)0.106226 -fixed_int 128 |(int)0.0040142 -fixed_int 128 &(int)0.0035522 -fixed_int 128 ^(int)0.0035339 -fixed_int 256 + 0.0163669 -fixed_int 256 - 0.0166428 -fixed_int 256 * 0.120353 -fixed_int 256 / 0.309492 -fixed_int 256 str 0.00207212 -fixed_int 256 +(int)0.00985174 -fixed_int 256 -(int)0.0103282 -fixed_int 256 *(int)0.0192615 -fixed_int 256 /(int)0.229148 -fixed_int 256 % 0.328458 -fixed_int 256 | 0.0127056 -fixed_int 256 & 0.0127546 -fixed_int 256 ^ 0.0127717 -fixed_int 256 << 0.0213483 -fixed_int 256 >> 0.0180295 -fixed_int 256 %(int)0.195577 -fixed_int 256 |(int)0.00983777 -fixed_int 256 &(int)0.0110247 -fixed_int 256 ^(int)0.0100442 -fixed_int 512 + 0.0326567 -fixed_int 512 - 0.0349375 -fixed_int 512 * 0.439147 -fixed_int 512 / 0.573815 -fixed_int 512 str 0.0062017 -fixed_int 512 +(int)0.0119345 -fixed_int 512 -(int)0.0119127 -fixed_int 512 *(int)0.0328339 -fixed_int 512 /(int)0.442167 -fixed_int 512 % 0.575884 -fixed_int 512 | 0.0200759 -fixed_int 512 & 0.01985 -fixed_int 512 ^ 0.0198304 -fixed_int 512 << 0.0247552 -fixed_int 512 >> 0.0220786 -fixed_int 512 %(int)0.387067 -fixed_int 512 |(int)0.0155223 -fixed_int 512 &(int)0.0154281 -fixed_int 512 ^(int)0.0155814 -fixed_int 1024 + 0.0603087 -fixed_int 1024 - 0.0600083 -fixed_int 1024 * 1.46969 -fixed_int 1024 / 1.06356 -fixed_int 1024 str 0.0190043 -fixed_int 1024 +(int)0.0170918 -fixed_int 1024 -(int)0.0176089 -fixed_int 1024 *(int)0.0567364 -fixed_int 1024 /(int)0.866172 -fixed_int 1024 % 1.05006 -fixed_int 1024 | 0.034651 -fixed_int 1024 & 0.0349286 -fixed_int 1024 ^ 0.0345822 -fixed_int 1024 << 0.0339579 -fixed_int 1024 >> 0.0325312 -fixed_int 1024 %(int)0.776075 -fixed_int 1024 |(int)0.0293444 -fixed_int 1024 &(int)0.0275044 -fixed_int 1024 ^(int)0.0293253 -cpp_float 50 + 0.02382 -cpp_float 50 - 0.0265783 -cpp_float 50 * 0.287898 -cpp_float 50 / 4.00108 -cpp_float 50 str 0.0188303 -cpp_float 50 +(int)0.0527023 -cpp_float 50 -(int)0.0577674 -cpp_float 50 *(int)0.11959 -cpp_float 50 /(int)0.253675 -cpp_float 100 + 0.0294619 -cpp_float 100 - 0.031465 -cpp_float 100 * 0.584569 -cpp_float 100 / 8.12985 -cpp_float 100 str 0.03172 -cpp_float 100 +(int)0.0618102 -cpp_float 100 -(int)0.0633795 -cpp_float 100 *(int)0.197945 -cpp_float 100 /(int)0.419569 -cpp_float 500 + 0.058466 -cpp_float 500 - 0.0619405 -cpp_float 500 * 5.09969 -cpp_float 500 / 54.2796 -cpp_float 500 str 0.131962 -cpp_float 500 +(int)0.105927 -cpp_float 500 -(int)0.11146 -cpp_float 500 *(int)0.742044 -cpp_float 500 /(int)1.64187 -mpfr_float 50 + 0.060035 -mpfr_float 50 - 0.0741774 -mpfr_float 50 * 0.341642 -mpfr_float 50 / 1.63486 -mpfr_float 50 str 0.0282764 -mpfr_float 50 +(int)0.105861 -mpfr_float 50 -(int)0.141577 -mpfr_float 50 *(int)0.152407 -mpfr_float 50 /(int)0.204088 -mpfr_float 100 + 0.0643242 -mpfr_float 100 - 0.0782083 -mpfr_float 100 * 0.465557 -mpfr_float 100 / 2.25716 -mpfr_float 100 str 0.0376683 -mpfr_float 100 +(int)0.111671 -mpfr_float 100 -(int)0.145249 -mpfr_float 100 *(int)0.161353 -mpfr_float 100 /(int)0.259127 -mpfr_float 500 + 0.0805287 -mpfr_float 500 - 0.0934957 -mpfr_float 500 * 3.7482 -mpfr_float 500 / 13.7713 -mpfr_float 500 str 0.158743 -mpfr_float 500 +(int)0.121528 -mpfr_float 500 -(int)0.155487 -mpfr_float 500 *(int)0.271785 -mpfr_float 500 /(int)0.708513 +gmp_float 50 + 0.111016 +gmp_float 50 - 0.119562 +gmp_float 50 * 0.266947 +gmp_float 50 / 1.23608 +gmp_float 50 str 0.0299824 +gmp_float 50 +(int)0.0320709 +gmp_float 50 -(int)0.130453 +gmp_float 50 *(int)0.0391224 +gmp_float 50 /(int)0.178268 +gmp_float 100 + 0.108884 +gmp_float 100 - 0.118595 +gmp_float 100 * 0.401792 +gmp_float 100 / 1.60879 +gmp_float 100 str 0.0207461 +gmp_float 100 +(int)0.0346436 +gmp_float 100 -(int)0.131897 +gmp_float 100 *(int)0.0435089 +gmp_float 100 /(int)0.23715 +gmp_float 500 + 0.143065 +gmp_float 500 - 0.151427 +gmp_float 500 * 3.22591 +gmp_float 500 / 8.09281 +gmp_float 500 str 0.136249 +gmp_float 500 +(int)0.0567182 +gmp_float 500 -(int)0.164247 +gmp_float 500 *(int)0.0824826 +gmp_float 500 /(int)0.693418 +gmp_int 128 + 0.0416325 +gmp_int 128 - 0.0409536 +gmp_int 128 * 0.0673622 +gmp_int 128 / 0.8304 +gmp_int 128 str 0.00202218 +gmp_int 128 +(int)0.0297328 +gmp_int 128 -(int)0.0296573 +gmp_int 128 *(int)0.0225369 +gmp_int 128 /(int)0.0545672 +gmp_int 128 % 0.626244 +gmp_int 128 | 0.0491246 +gmp_int 128 & 0.0530007 +gmp_int 128 ^ 0.0485553 +gmp_int 128 << 0.0260055 +gmp_int 128 >> 0.0275053 +gmp_int 128 %(int)0.0553103 +gmp_int 128 |(int)0.14092 +gmp_int 128 &(int)0.146717 +gmp_int 128 ^(int)0.141446 +gmp_int 128 gcd 2.4583 +gmp_int 256 + 0.0437202 +gmp_int 256 - 0.0449331 +gmp_int 256 * 0.128456 +gmp_int 256 / 0.91168 +gmp_int 256 str 0.00293026 +gmp_int 256 +(int)0.0421762 +gmp_int 256 -(int)0.0392365 +gmp_int 256 *(int)0.0260961 +gmp_int 256 /(int)0.101468 +gmp_int 256 % 0.686075 +gmp_int 256 | 0.0605797 +gmp_int 256 & 0.0657431 +gmp_int 256 ^ 0.0628266 +gmp_int 256 << 0.0309127 +gmp_int 256 >> 0.028966 +gmp_int 256 %(int)0.0997194 +gmp_int 256 |(int)0.141959 +gmp_int 256 &(int)0.148873 +gmp_int 256 ^(int)0.145267 +gmp_int 256 gcd 5.7433 +gmp_int 512 + 0.0502054 +gmp_int 512 - 0.053661 +gmp_int 512 * 0.517967 +gmp_int 512 / 1.04166 +gmp_int 512 str 0.00589914 +gmp_int 512 +(int)0.0648096 +gmp_int 512 -(int)0.0579614 +gmp_int 512 *(int)0.0336047 +gmp_int 512 /(int)0.18882 +gmp_int 512 % 0.792461 +gmp_int 512 | 0.0862186 +gmp_int 512 & 0.0910233 +gmp_int 512 ^ 0.086449 +gmp_int 512 << 0.0480825 +gmp_int 512 >> 0.0323891 +gmp_int 512 %(int)0.183615 +gmp_int 512 |(int)0.150229 +gmp_int 512 &(int)0.154253 +gmp_int 512 ^(int)0.156314 +gmp_int 512 gcd 13.5018 +gmp_int 1024 + 0.065979 +gmp_int 1024 - 0.0703067 +gmp_int 1024 * 1.51138 +gmp_int 1024 / 1.26397 +gmp_int 1024 str 0.0145211 +gmp_int 1024 +(int)0.105223 +gmp_int 1024 -(int)0.0997431 +gmp_int 1024 *(int)0.0487139 +gmp_int 1024 /(int)0.374919 +gmp_int 1024 % 1.02412 +gmp_int 1024 | 0.134887 +gmp_int 1024 & 0.148173 +gmp_int 1024 ^ 0.136369 +gmp_int 1024 << 0.0702549 +gmp_int 1024 >> 0.037103 +gmp_int 1024 %(int)0.351263 +gmp_int 1024 |(int)0.155137 +gmp_int 1024 &(int)0.163801 +gmp_int 1024 ^(int)0.15826 +gmp_int 1024 gcd 32.5205 +cpp_int 128 + 0.0271391 +cpp_int 128 - 0.0302204 +cpp_int 128 * 0.0764199 +cpp_int 128 / 0.601063 +cpp_int 128 str 0.00186546 +cpp_int 128 +(int)0.0203604 +cpp_int 128 -(int)0.0155424 +cpp_int 128 *(int)0.0306376 +cpp_int 128 /(int)0.318461 +cpp_int 128 % 0.488484 +cpp_int 128 | 0.0295702 +cpp_int 128 & 0.0299046 +cpp_int 128 ^ 0.0300509 +cpp_int 128 << 0.0220286 +cpp_int 128 >> 0.0208765 +cpp_int 128 %(int)0.197942 +cpp_int 128 |(int)0.0385046 +cpp_int 128 &(int)0.0463351 +cpp_int 128 ^(int)0.0381023 +cpp_int 128 gcd 4.48165 +cpp_int 256 + 0.0354288 +cpp_int 256 - 0.03826 +cpp_int 256 * 0.193581 +cpp_int 256 / 0.694115 +cpp_int 256 str 0.00327905 +cpp_int 256 +(int)0.0238597 +cpp_int 256 -(int)0.0199724 +cpp_int 256 *(int)0.040404 +cpp_int 256 /(int)0.433035 +cpp_int 256 % 0.597931 +cpp_int 256 | 0.0378751 +cpp_int 256 & 0.0389208 +cpp_int 256 ^ 0.0381634 +cpp_int 256 << 0.0294239 +cpp_int 256 >> 0.0265325 +cpp_int 256 %(int)0.298382 +cpp_int 256 |(int)0.0425891 +cpp_int 256 &(int)0.0550224 +cpp_int 256 ^(int)0.0432356 +cpp_int 256 gcd 10.1686 +cpp_int 512 + 0.0536949 +cpp_int 512 - 0.0529947 +cpp_int 512 * 0.656832 +cpp_int 512 / 0.915068 +cpp_int 512 str 0.0076685 +cpp_int 512 +(int)0.0262742 +cpp_int 512 -(int)0.0223562 +cpp_int 512 *(int)0.0537717 +cpp_int 512 /(int)0.641615 +cpp_int 512 % 0.807811 +cpp_int 512 | 0.0523944 +cpp_int 512 & 0.04981 +cpp_int 512 ^ 0.0494246 +cpp_int 512 << 0.0365532 +cpp_int 512 >> 0.0304931 +cpp_int 512 %(int)0.478772 +cpp_int 512 |(int)0.0479629 +cpp_int 512 &(int)0.0697964 +cpp_int 512 ^(int)0.0466764 +cpp_int 512 gcd 25.1877 +cpp_int 1024 + 0.0884854 +cpp_int 1024 - 0.0822931 +cpp_int 1024 * 2.47851 +cpp_int 1024 / 1.36697 +cpp_int 1024 str 0.0217405 +cpp_int 1024 +(int)0.0296193 +cpp_int 1024 -(int)0.0246399 +cpp_int 1024 *(int)0.0790137 +cpp_int 1024 /(int)1.05122 +cpp_int 1024 % 1.24204 +cpp_int 1024 | 0.0751774 +cpp_int 1024 & 0.0745785 +cpp_int 1024 ^ 0.075182 +cpp_int 1024 << 0.0522035 +cpp_int 1024 >> 0.0383751 +cpp_int 1024 %(int)0.85137 +cpp_int 1024 |(int)0.0549147 +cpp_int 1024 &(int)0.101779 +cpp_int 1024 ^(int)0.0550852 +cpp_int 1024 gcd 69.0626 +cpp_int(fixed) 128 + 0.023195 +cpp_int(fixed) 128 - 0.0255758 +cpp_int(fixed) 128 * 0.0560495 +cpp_int(fixed) 128 / 0.20335 +cpp_int(fixed) 128 str 0.00107409 +cpp_int(fixed) 128 +(int)0.013729 +cpp_int(fixed) 128 -(int)0.0103816 +cpp_int(fixed) 128 *(int)0.0290285 +cpp_int(fixed) 128 /(int)0.134603 +cpp_int(fixed) 128 % 0.193104 +cpp_int(fixed) 128 | 0.0211746 +cpp_int(fixed) 128 & 0.0234269 +cpp_int(fixed) 128 ^ 0.0214753 +cpp_int(fixed) 128 << 0.0189966 +cpp_int(fixed) 128 >> 0.0164431 +cpp_int(fixed) 128 %(int)0.111723 +cpp_int(fixed) 128 |(int)0.020319 +cpp_int(fixed) 128 &(int)0.0281931 +cpp_int(fixed) 128 ^(int)0.0205145 +cpp_int(fixed) 128 gcd 3.69729 +cpp_int(fixed) 256 + 0.0316591 +cpp_int(fixed) 256 - 0.0387139 +cpp_int(fixed) 256 * 0.162173 +cpp_int(fixed) 256 / 0.313292 +cpp_int(fixed) 256 str 0.00227396 +cpp_int(fixed) 256 +(int)0.0195617 +cpp_int(fixed) 256 -(int)0.0153586 +cpp_int(fixed) 256 *(int)0.0403434 +cpp_int(fixed) 256 /(int)0.256092 +cpp_int(fixed) 256 % 0.314303 +cpp_int(fixed) 256 | 0.0329594 +cpp_int(fixed) 256 & 0.026925 +cpp_int(fixed) 256 ^ 0.0297291 +cpp_int(fixed) 256 << 0.0262879 +cpp_int(fixed) 256 >> 0.0222577 +cpp_int(fixed) 256 %(int)0.207915 +cpp_int(fixed) 256 |(int)0.0258999 +cpp_int(fixed) 256 &(int)0.0409067 +cpp_int(fixed) 256 ^(int)0.0260211 +cpp_int(fixed) 256 gcd 9.22552 +cpp_int(fixed) 512 + 0.0515755 +cpp_int(fixed) 512 - 0.0475007 +cpp_int(fixed) 512 * 0.462871 +cpp_int(fixed) 512 / 0.52874 +cpp_int(fixed) 512 str 0.00597122 +cpp_int(fixed) 512 +(int)0.0212179 +cpp_int(fixed) 512 -(int)0.0179683 +cpp_int(fixed) 512 *(int)0.0542558 +cpp_int(fixed) 512 /(int)0.459431 +cpp_int(fixed) 512 % 0.512737 +cpp_int(fixed) 512 | 0.0398115 +cpp_int(fixed) 512 & 0.032775 +cpp_int(fixed) 512 ^ 0.0394438 +cpp_int(fixed) 512 << 0.0317039 +cpp_int(fixed) 512 >> 0.0275545 +cpp_int(fixed) 512 %(int)0.38701 +cpp_int(fixed) 512 |(int)0.0306217 +cpp_int(fixed) 512 &(int)0.0539505 +cpp_int(fixed) 512 ^(int)0.0308272 +cpp_int(fixed) 512 gcd 24.8643 +cpp_int(fixed) 1024 + 0.0833072 +cpp_int(fixed) 1024 - 0.0864345 +cpp_int(fixed) 1024 * 1.61211 +cpp_int(fixed) 1024 / 0.965347 +cpp_int(fixed) 1024 str 0.0174989 +cpp_int(fixed) 1024 +(int)0.0286337 +cpp_int(fixed) 1024 -(int)0.0219173 +cpp_int(fixed) 1024 *(int)0.0826023 +cpp_int(fixed) 1024 /(int)0.855435 +cpp_int(fixed) 1024 % 0.944678 +cpp_int(fixed) 1024 | 0.071698 +cpp_int(fixed) 1024 & 0.0503183 +cpp_int(fixed) 1024 ^ 0.0721252 +cpp_int(fixed) 1024 << 0.0488381 +cpp_int(fixed) 1024 >> 0.0382038 +cpp_int(fixed) 1024 %(int)0.760262 +cpp_int(fixed) 1024 |(int)0.0426336 +cpp_int(fixed) 1024 &(int)0.0863606 +cpp_int(fixed) 1024 ^(int)0.0429944 +cpp_int(fixed) 1024 gcd 73.4335 +cpp_rational 128 + 18.1263 +cpp_rational 128 - 18.2374 +cpp_rational 128 * 32.3559 +cpp_rational 128 / 63.9498 +cpp_rational 128 str 0.0199393 +cpp_rational 128 +(int)2.67249 +cpp_rational 128 -(int)2.66785 +cpp_rational 128 *(int)3.1466 +cpp_rational 128 /(int)3.13785 +cpp_rational 256 + 44.1182 +cpp_rational 256 - 43.8659 +cpp_rational 256 * 82.4247 +cpp_rational 256 / 145.045 +cpp_rational 256 str 0.0511907 +cpp_rational 256 +(int)3.04309 +cpp_rational 256 -(int)3.09023 +cpp_rational 256 *(int)3.79056 +cpp_rational 256 /(int)3.76931 +cpp_rational 512 + 103.169 +cpp_rational 512 - 103.481 +cpp_rational 512 * 197.198 +cpp_rational 512 / 328.069 +cpp_rational 512 str 0.118839 +cpp_rational 512 +(int)3.83046 +cpp_rational 512 -(int)3.74494 +cpp_rational 512 *(int)4.93935 +cpp_rational 512 /(int)5.06758 +cpp_rational 1024 + 244.055 +cpp_rational 1024 - 244.887 +cpp_rational 1024 * 473.057 +cpp_rational 1024 / 784.806 +cpp_rational 1024 str 0.285367 +cpp_rational 1024 +(int)5.08346 +cpp_rational 1024 -(int)5.09156 +cpp_rational 1024 *(int)6.89845 +cpp_rational 1024 /(int)7.17803 +mpq_rational 128 + 3.06312 +mpq_rational 128 - 3.08322 +mpq_rational 128 * 5.78521 +mpq_rational 128 / 14.639 +mpq_rational 128 str 0.00368909 +mpq_rational 128 +(int)0.670618 +mpq_rational 128 -(int)0.673405 +mpq_rational 128 *(int)1.16457 +mpq_rational 128 /(int)1.38449 +mpq_rational 256 + 6.67695 +mpq_rational 256 - 6.69018 +mpq_rational 256 * 12.6008 +mpq_rational 256 / 26.2494 +mpq_rational 256 str 0.00598659 +mpq_rational 256 +(int)0.717144 +mpq_rational 256 -(int)0.707904 +mpq_rational 256 *(int)1.22223 +mpq_rational 256 /(int)1.46594 +mpq_rational 512 + 15.5064 +mpq_rational 512 - 15.5321 +mpq_rational 512 * 28.6562 +mpq_rational 512 / 53.0571 +mpq_rational 512 str 0.0119915 +mpq_rational 512 +(int)0.823739 +mpq_rational 512 -(int)0.815246 +mpq_rational 512 *(int)1.34992 +mpq_rational 512 /(int)1.57931 +mpq_rational 1024 + 37.8546 +mpq_rational 1024 - 37.8365 +mpq_rational 1024 * 69.1537 +mpq_rational 1024 / 120.772 +mpq_rational 1024 str 0.028722 +mpq_rational 1024 +(int)0.931322 +mpq_rational 1024 -(int)0.937541 +mpq_rational 1024 *(int)1.4952 +mpq_rational 1024 /(int)1.78479 +tommath_int 128 + 0.0217192 +tommath_int 128 - 0.0291902 +tommath_int 128 * 0.111627 +tommath_int 128 / 2.08463 +tommath_int 128 str 0.0168021 +tommath_int 128 +(int)0.257132 +tommath_int 128 -(int)0.203455 +tommath_int 128 *(int)0.238829 +tommath_int 128 /(int)1.59094 +tommath_int 128 % 2.85844 +tommath_int 128 | 0.129637 +tommath_int 128 & 0.131309 +tommath_int 128 ^ 0.130689 +tommath_int 128 << 0.0401547 +tommath_int 128 >> 0.23176 +tommath_int 128 %(int)1.79288 +tommath_int 128 |(int)0.335087 +tommath_int 128 &(int)0.340397 +tommath_int 128 ^(int)0.336121 +tommath_int 128 gcd 12.105 +tommath_int 256 + 0.0314797 +tommath_int 256 - 0.0397314 +tommath_int 256 * 0.339525 +tommath_int 256 / 2.90357 +tommath_int 256 str 0.0507118 +tommath_int 256 +(int)0.27657 +tommath_int 256 -(int)0.218347 +tommath_int 256 *(int)0.272846 +tommath_int 256 /(int)2.23033 +tommath_int 256 % 3.05431 +tommath_int 256 | 0.14062 +tommath_int 256 & 0.149703 +tommath_int 256 ^ 0.143938 +tommath_int 256 << 0.0663968 +tommath_int 256 >> 0.261181 +tommath_int 256 %(int)2.19631 +tommath_int 256 |(int)0.344931 +tommath_int 256 &(int)0.354773 +tommath_int 256 ^(int)0.337315 +tommath_int 256 gcd 25.2396 +tommath_int 512 + 0.0423742 +tommath_int 512 - 0.0520296 +tommath_int 512 * 0.974058 +tommath_int 512 / 4.55815 +tommath_int 512 str 0.123612 +tommath_int 512 +(int)0.293832 +tommath_int 512 -(int)0.23252 +tommath_int 512 *(int)0.325472 +tommath_int 512 /(int)3.45058 +tommath_int 512 % 4.64676 +tommath_int 512 | 0.149674 +tommath_int 512 & 0.15487 +tommath_int 512 ^ 0.150772 +tommath_int 512 << 0.0938596 +tommath_int 512 >> 0.289806 +tommath_int 512 %(int)3.43906 +tommath_int 512 |(int)0.350645 +tommath_int 512 &(int)0.364622 +tommath_int 512 ^(int)0.347472 +tommath_int 512 gcd 54.7712 +tommath_int 1024 + 0.0724498 +tommath_int 1024 - 0.0774105 +tommath_int 1024 * 3.11813 +tommath_int 1024 / 11.2594 +tommath_int 1024 str 0.380528 +tommath_int 1024 +(int)0.329666 +tommath_int 1024 -(int)0.261392 +tommath_int 1024 *(int)0.41516 +tommath_int 1024 /(int)8.38249 +tommath_int 1024 % 11.2704 +tommath_int 1024 | 0.414581 +tommath_int 1024 & 0.417234 +tommath_int 1024 ^ 0.419285 +tommath_int 1024 << 0.161738 +tommath_int 1024 >> 0.495316 +tommath_int 1024 %(int)8.45761 +tommath_int 1024 |(int)0.587063 +tommath_int 1024 &(int)0.613817 +tommath_int 1024 ^(int)0.587566 +tommath_int 1024 gcd 128.781 +cpp_dec_float 50 + 0.0238412 +cpp_dec_float 50 - 0.026085 +cpp_dec_float 50 * 0.292488 +cpp_dec_float 50 / 3.99158 +cpp_dec_float 50 str 0.0185371 +cpp_dec_float 50 +(int)0.0522868 +cpp_dec_float 50 -(int)0.0588879 +cpp_dec_float 50 *(int)0.118517 +cpp_dec_float 50 /(int)0.246362 +cpp_dec_float 100 + 0.0293132 +cpp_dec_float 100 - 0.0304546 +cpp_dec_float 100 * 0.583535 +cpp_dec_float 100 / 8.1132 +cpp_dec_float 100 str 0.0318154 +cpp_dec_float 100 +(int)0.0626744 +cpp_dec_float 100 -(int)0.0638241 +cpp_dec_float 100 *(int)0.191461 +cpp_dec_float 100 /(int)0.412828 +cpp_dec_float 500 + 0.0605518 +cpp_dec_float 500 - 0.0625459 +cpp_dec_float 500 * 5.08004 +cpp_dec_float 500 / 53.775 +cpp_dec_float 500 str 0.131303 +cpp_dec_float 500 +(int)0.105128 +cpp_dec_float 500 -(int)0.113107 +cpp_dec_float 500 *(int)0.736865 +cpp_dec_float 500 /(int)1.62534 +mpfr_float 50 + 0.0604351 +mpfr_float 50 - 0.073623 +mpfr_float 50 * 0.332216 +mpfr_float 50 / 1.65596 +mpfr_float 50 str 0.0292843 +mpfr_float 50 +(int)0.107103 +mpfr_float 50 -(int)0.141072 +mpfr_float 50 *(int)0.151189 +mpfr_float 50 /(int)0.202945 +mpfr_float 100 + 0.0651951 +mpfr_float 100 - 0.078328 +mpfr_float 100 * 0.462025 +mpfr_float 100 / 2.28108 +mpfr_float 100 str 0.0379418 +mpfr_float 100 +(int)0.112256 +mpfr_float 100 -(int)0.146486 +mpfr_float 100 *(int)0.160234 +mpfr_float 100 /(int)0.256434 +mpfr_float 500 + 0.0777324 +mpfr_float 500 - 0.089375 +mpfr_float 500 * 3.71393 +mpfr_float 500 / 13.6039 +mpfr_float 500 str 0.156426 +mpfr_float 500 +(int)0.123967 +mpfr_float 500 -(int)0.158239 +mpfr_float 500 *(int)0.265474 +mpfr_float 500 /(int)0.709137 [section:float_performance Float Type Perfomance] [table Operator * [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][1.07276 (0.287898s)][1.47724 (0.584569s)][1.55145 (5.09969s)]] -[[gmp_float][[*1] (0.268372s)][[*1] (0.395718s)][[*1] (3.28705s)]] -[[mpfr_float][1.27302 (0.341642s)][1.17649 (0.465557s)][1.14029 (3.7482s)]] +[[cpp_dec_float][1.09568 (0.292488s)][1.45233 (0.583535s)][1.57476 (5.08004s)]] +[[gmp_float][[*1] (0.266947s)][[*1] (0.401792s)][[*1] (3.22591s)]] +[[mpfr_float][1.2445 (0.332216s)][1.14991 (0.462025s)][1.15128 (3.71393s)]] ] [table Operator *(int) [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][2.89945 (0.11959s)][4.56335 (0.197945s)][9.03602 (0.742044s)]] -[[gmp_float][[*1] (0.0412457s)][[*1] (0.0433772s)][[*1] (0.0821206s)]] -[[mpfr_float][3.6951 (0.152407s)][3.71977 (0.161353s)][3.30958 (0.271785s)]] +[[cpp_dec_float][3.02939 (0.118517s)][4.40051 (0.191461s)][8.93358 (0.736865s)]] +[[gmp_float][[*1] (0.0391224s)][[*1] (0.0435089s)][[*1] (0.0824826s)]] +[[mpfr_float][3.8645 (0.151189s)][3.6828 (0.160234s)][3.21855 (0.265474s)]] ] [table Operator + [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][[*1] (0.02382s)][[*1] (0.0294619s)][[*1] (0.058466s)]] -[[gmp_float][4.55086 (0.108402s)][3.86443 (0.113853s)][2.6241 (0.15342s)]] -[[mpfr_float][2.52036 (0.060035s)][2.1833 (0.0643242s)][1.37736 (0.0805287s)]] +[[cpp_dec_float][[*1] (0.0238412s)][[*1] (0.0293132s)][[*1] (0.0605518s)]] +[[gmp_float][4.65648 (0.111016s)][3.71451 (0.108884s)][2.36269 (0.143065s)]] +[[mpfr_float][2.5349 (0.0604351s)][2.22408 (0.0651951s)][1.28374 (0.0777324s)]] ] [table Operator +(int) [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][1.56759 (0.0527023s)][1.74629 (0.0618102s)][1.68077 (0.105927s)]] -[[gmp_float][[*1] (0.0336201s)][[*1] (0.0353951s)][[*1] (0.0630232s)]] -[[mpfr_float][3.14875 (0.105861s)][3.15499 (0.111671s)][1.92831 (0.121528s)]] +[[cpp_dec_float][1.63035 (0.0522868s)][1.80912 (0.0626744s)][1.85351 (0.105128s)]] +[[gmp_float][[*1] (0.0320709s)][[*1] (0.0346436s)][[*1] (0.0567182s)]] +[[mpfr_float][3.33957 (0.107103s)][3.24031 (0.112256s)][2.18567 (0.123967s)]] ] [table Operator - [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][[*1] (0.0265783s)][[*1] (0.031465s)][[*1] (0.0619405s)]] -[[gmp_float][4.66954 (0.124108s)][3.72645 (0.117253s)][2.67536 (0.165713s)]] -[[mpfr_float][2.7909 (0.0741774s)][2.48557 (0.0782083s)][1.50944 (0.0934957s)]] +[[cpp_dec_float][[*1] (0.026085s)][[*1] (0.0304546s)][[*1] (0.0625459s)]] +[[gmp_float][4.58354 (0.119562s)][3.89415 (0.118595s)][2.42105 (0.151427s)]] +[[mpfr_float][2.82243 (0.073623s)][2.57196 (0.078328s)][1.42895 (0.089375s)]] ] [table Operator -(int) [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][[*1] (0.0577674s)][[*1] (0.0633795s)][[*1] (0.11146s)]] -[[gmp_float][2.31811 (0.133911s)][2.07251 (0.131355s)][1.67161 (0.186319s)]] -[[mpfr_float][2.45081 (0.141577s)][2.29174 (0.145249s)][1.395 (0.155487s)]] +[[cpp_dec_float][[*1] (0.0588879s)][[*1] (0.0638241s)][[*1] (0.113107s)]] +[[gmp_float][2.21528 (0.130453s)][2.06656 (0.131897s)][1.45214 (0.164247s)]] +[[mpfr_float][2.3956 (0.141072s)][2.29515 (0.146486s)][1.39903 (0.158239s)]] ] [table Operator / [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][3.24327 (4.00108s)][5.00532 (8.12985s)][6.79566 (54.2796s)]] -[[gmp_float][[*1] (1.23366s)][[*1] (1.62424s)][[*1] (7.9874s)]] -[[mpfr_float][1.32521 (1.63486s)][1.38967 (2.25716s)][1.72413 (13.7713s)]] +[[cpp_dec_float][3.22921 (3.99158s)][5.04305 (8.1132s)][6.64479 (53.775s)]] +[[gmp_float][[*1] (1.23608s)][[*1] (1.60879s)][[*1] (8.09281s)]] +[[mpfr_float][1.33968 (1.65596s)][1.41789 (2.28108s)][1.68098 (13.6039s)]] ] [table Operator /(int) [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][1.45093 (0.253675s)][1.83306 (0.419569s)][2.3644 (1.64187s)]] -[[gmp_float][[*1] (0.174836s)][[*1] (0.22889s)][[*1] (0.694411s)]] -[[mpfr_float][1.16731 (0.204088s)][1.13211 (0.259127s)][1.02031 (0.708513s)]] +[[cpp_dec_float][1.38197 (0.246362s)][1.74079 (0.412828s)][2.34395 (1.62534s)]] +[[gmp_float][[*1] (0.178268s)][[*1] (0.23715s)][[*1] (0.693418s)]] +[[mpfr_float][1.13843 (0.202945s)][1.08131 (0.256434s)][1.02267 (0.709137s)]] ] [table Operator str [[Backend][50 Bits][100 Bits][500 Bits]] -[[cpp_float][1.4585 (0.0188303s)][1.55515 (0.03172s)][[*1] (0.131962s)]] -[[gmp_float][[*1] (0.0129107s)][[*1] (0.0203967s)][1.04632 (0.138075s)]] -[[mpfr_float][2.19015 (0.0282764s)][1.84679 (0.0376683s)][1.20295 (0.158743s)]] +[[cpp_dec_float][[*1] (0.0185371s)][1.53356 (0.0318154s)][[*1] (0.131303s)]] +[[gmp_float][1.61743 (0.0299824s)][[*1] (0.0207461s)][1.03767 (0.136249s)]] +[[mpfr_float][1.57977 (0.0292843s)][1.82886 (0.0379418s)][1.19134 (0.156426s)]] ] [endsect] [section:integer_performance Integer Type Perfomance] [table Operator % -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0946529s)][[*1] (0.170561s)][[*1] (0.328458s)][[*1] (0.575884s)][[*1] (1.05006s)]] -[[gmp_int][7.77525 (0.73595s)][4.39387 (0.749422s)][2.35075 (0.772122s)][1.51922 (0.874894s)][1.02263 (1.07382s)]] -[[tommath_int][27.1503 (2.56986s)][12.8743 (2.19585s)][9.43965 (3.10053s)][8.24936 (4.75068s)][10.9719 (11.5211s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.52964 (0.488484s)][1.9024 (0.597931s)][1.57549 (0.807811s)][1.31477 (1.24204s)]] +[[cpp_int(fixed)][[*1] (0.193104s)][[*1] (0.314303s)][[*1] (0.512737s)][[*1] (0.944678s)]] +[[gmp_int][3.24303 (0.626244s)][2.18285 (0.686075s)][1.54555 (0.792461s)][1.0841 (1.02412s)]] +[[tommath_int][14.8026 (2.85844s)][9.7177 (3.05431s)][9.06266 (4.64676s)][11.9304 (11.2704s)]] ] [table Operator %(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][1.25034 (0.0425984s)][1.91617 (0.106226s)][2.02166 (0.195577s)][2.14437 (0.387067s)][2.23514 (0.776075s)]] -[[gmp_int][[*1] (0.0340695s)][[*1] (0.0554367s)][[*1] (0.0967406s)][[*1] (0.180504s)][[*1] (0.347216s)]] -[[tommath_int][42.8781 (1.46083s)][29.879 (1.65639s)][23.4323 (2.26685s)][19.932 (3.5978s)][25.0046 (8.682s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][3.57875 (0.197942s)][2.99222 (0.298382s)][2.60748 (0.478772s)][2.42374 (0.85137s)]] +[[cpp_int(fixed)][2.01994 (0.111723s)][2.085 (0.207915s)][2.10772 (0.38701s)][2.16437 (0.760262s)]] +[[gmp_int][[*1] (0.0553103s)][[*1] (0.0997194s)][[*1] (0.183615s)][[*1] (0.351263s)]] +[[tommath_int][32.4149 (1.79288s)][22.0249 (2.19631s)][18.7297 (3.43906s)][24.0777 (8.45761s)]] ] [table Operator & -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00298048s)][[*1] (0.00546222s)][[*1] (0.0127546s)][[*1] (0.01985s)][[*1] (0.0349286s)]] -[[gmp_int][16.0105 (0.0477189s)][9.67027 (0.0528211s)][5.12678 (0.0653902s)][4.62316 (0.0917698s)][4.00837 (0.140007s)]] -[[tommath_int][43.6665 (0.130147s)][23.8003 (0.130002s)][11.4242 (0.145711s)][7.83416 (0.155508s)][9.50103 (0.331858s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.27651 (0.0299046s)][1.44553 (0.0389208s)][1.51976 (0.04981s)][1.48214 (0.0745785s)]] +[[cpp_int(fixed)][[*1] (0.0234269s)][[*1] (0.026925s)][[*1] (0.032775s)][[*1] (0.0503183s)]] +[[gmp_int][2.26238 (0.0530007s)][2.44171 (0.0657431s)][2.77722 (0.0910233s)][2.94472 (0.148173s)]] +[[tommath_int][5.60505 (0.131309s)][5.56001 (0.149703s)][4.72526 (0.15487s)][8.2919 (0.417234s)]] ] [table Operator &(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00222291s)][[*1] (0.0035522s)][[*1] (0.0110247s)][[*1] (0.0154281s)][[*1] (0.0275044s)]] -[[gmp_int][70.8538 (0.157502s)][42.1478 (0.149717s)][13.9023 (0.153268s)][10.3271 (0.159328s)][6.0529 (0.166481s)]] -[[tommath_int][154.134 (0.342626s)][93.2035 (0.331077s)][31.9151 (0.351853s)][23.6515 (0.364899s)][22.0042 (0.605213s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.64349 (0.0463351s)][1.34507 (0.0550224s)][1.29371 (0.0697964s)][1.17854 (0.101779s)]] +[[cpp_int(fixed)][[*1] (0.0281931s)][[*1] (0.0409067s)][[*1] (0.0539505s)][[*1] (0.0863606s)]] +[[gmp_int][5.204 (0.146717s)][3.63933 (0.148873s)][2.85915 (0.154253s)][1.8967 (0.163801s)]] +[[tommath_int][12.0738 (0.340397s)][8.67273 (0.354773s)][6.75845 (0.364622s)][7.1076 (0.613817s)]] ] [table Operator * -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0223481s)][[*1] (0.0375288s)][[*1] (0.120353s)][[*1] (0.439147s)][[*1] (1.46969s)]] -[[gmp_int][2.50746 (0.0560369s)][1.76676 (0.0663044s)][1.06052 (0.127636s)][1.22558 (0.53821s)][1.03538 (1.52168s)]] -[[tommath_int][3.00028 (0.0670506s)][2.97696 (0.111722s)][2.86257 (0.34452s)][2.26661 (0.995374s)][2.12926 (3.12935s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.36344 (0.0764199s)][1.50698 (0.193581s)][1.41904 (0.656832s)][1.6399 (2.47851s)]] +[[cpp_int(fixed)][[*1] (0.0560495s)][1.26247 (0.162173s)][[*1] (0.462871s)][1.06665 (1.61211s)]] +[[gmp_int][1.20183 (0.0673622s)][[*1] (0.128456s)][1.11903 (0.517967s)][[*1] (1.51138s)]] +[[tommath_int][1.99157 (0.111627s)][2.64312 (0.339525s)][2.10438 (0.974058s)][2.0631 (3.11813s)]] ] [table Operator *(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00444316s)][[*1] (0.0135739s)][[*1] (0.0192615s)][[*1] (0.0328339s)][1.18198 (0.0567364s)]] -[[gmp_int][4.57776 (0.0203397s)][1.79901 (0.0244196s)][1.32814 (0.025582s)][1.01453 (0.033311s)][[*1] (0.048001s)]] -[[tommath_int][53.8709 (0.239357s)][18.3773 (0.249452s)][14.2088 (0.273682s)][14.0907 (0.462652s)][9.10761 (0.437175s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.35944 (0.0306376s)][1.54828 (0.040404s)][1.60013 (0.0537717s)][1.62199 (0.0790137s)]] +[[cpp_int(fixed)][1.28804 (0.0290285s)][1.54595 (0.0403434s)][1.61453 (0.0542558s)][1.69566 (0.0826023s)]] +[[gmp_int][[*1] (0.0225369s)][[*1] (0.0260961s)][[*1] (0.0336047s)][[*1] (0.0487139s)]] +[[tommath_int][10.5972 (0.238829s)][10.4554 (0.272846s)][9.6853 (0.325472s)][8.5224 (0.41516s)]] ] [table Operator + -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0031291s)][[*1] (0.00703043s)][[*1] (0.0163669s)][[*1] (0.0326567s)][[*1] (0.0603087s)]] -[[gmp_int][12.4866 (0.0390717s)][6.01034 (0.0422553s)][2.65628 (0.0434751s)][1.54295 (0.0503875s)][1.16477 (0.0702458s)]] -[[tommath_int][6.03111 (0.018872s)][3.08173 (0.0216659s)][1.84243 (0.0301548s)][1.30199 (0.0425188s)][1.18909 (0.0717123s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.24954 (0.0271391s)][1.12545 (0.0354288s)][1.26716 (0.0536949s)][1.34112 (0.0884854s)]] +[[cpp_int(fixed)][1.06795 (0.023195s)][1.0057 (0.0316591s)][1.21714 (0.0515755s)][1.26263 (0.0833072s)]] +[[gmp_int][1.91685 (0.0416325s)][1.38884 (0.0437202s)][1.18481 (0.0502054s)][[*1] (0.065979s)]] +[[tommath_int][[*1] (0.0217192s)][[*1] (0.0314797s)][[*1] (0.0423742s)][1.09807 (0.0724498s)]] ] [table Operator +(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00335294s)][[*1] (0.00376116s)][[*1] (0.00985174s)][[*1] (0.0119345s)][[*1] (0.0170918s)]] -[[gmp_int][9.47407 (0.031766s)][8.44794 (0.0317741s)][4.23857 (0.0417573s)][5.40856 (0.0645488s)][6.31314 (0.107903s)]] -[[tommath_int][67.0025 (0.224655s)][60.4203 (0.22725s)][25.1834 (0.2481s)][23.2996 (0.27807s)][17.1743 (0.293538s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.48302 (0.0203604s)][1.21971 (0.0238597s)][1.2383 (0.0262742s)][1.03442 (0.0296193s)]] +[[cpp_int(fixed)][[*1] (0.013729s)][[*1] (0.0195617s)][[*1] (0.0212179s)][[*1] (0.0286337s)]] +[[gmp_int][2.16569 (0.0297328s)][2.15606 (0.0421762s)][3.05447 (0.0648096s)][3.67481 (0.105223s)]] +[[tommath_int][18.7291 (0.257132s)][14.1384 (0.27657s)][13.8483 (0.293832s)][11.5132 (0.329666s)]] ] [table Operator - -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00339191s)][[*1] (0.0073172s)][[*1] (0.0166428s)][[*1] (0.0349375s)][[*1] (0.0600083s)]] -[[gmp_int][12.5182 (0.0424608s)][5.57936 (0.0408253s)][2.78496 (0.0463496s)][1.48373 (0.051838s)][1.29928 (0.0779673s)]] -[[tommath_int][7.00782 (0.0237699s)][3.69919 (0.0270677s)][2.29645 (0.0382195s)][1.39777 (0.0488346s)][1.28243 (0.0769566s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.1816 (0.0302204s)][[*1] (0.03826s)][1.11566 (0.0529947s)][1.17049 (0.0822931s)]] +[[cpp_int(fixed)][[*1] (0.0255758s)][1.01186 (0.0387139s)][[*1] (0.0475007s)][1.22939 (0.0864345s)]] +[[gmp_int][1.60126 (0.0409536s)][1.17441 (0.0449331s)][1.12969 (0.053661s)][[*1] (0.0703067s)]] +[[tommath_int][1.14132 (0.0291902s)][1.03846 (0.0397314s)][1.09534 (0.0520296s)][1.10104 (0.0774105s)]] ] [table Operator -(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00250933s)][[*1] (0.00358055s)][[*1] (0.0103282s)][[*1] (0.0119127s)][[*1] (0.0176089s)]] -[[gmp_int][12.093 (0.0303454s)][8.50898 (0.0304669s)][3.9284 (0.0405733s)][5.03037 (0.0599252s)][5.96617 (0.105058s)]] -[[tommath_int][80.8477 (0.202873s)][57.8371 (0.207089s)][21.3372 (0.220375s)][23.526 (0.280258s)][14.793 (0.260488s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.49712 (0.0155424s)][1.3004 (0.0199724s)][1.2442 (0.0223562s)][1.12422 (0.0246399s)]] +[[cpp_int(fixed)][[*1] (0.0103816s)][[*1] (0.0153586s)][[*1] (0.0179683s)][[*1] (0.0219173s)]] +[[gmp_int][2.85673 (0.0296573s)][2.55469 (0.0392365s)][3.22576 (0.0579614s)][4.55088 (0.0997431s)]] +[[tommath_int][19.5977 (0.203455s)][14.2166 (0.218347s)][12.9406 (0.23252s)][11.9263 (0.261392s)]] ] [table Operator / -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0991632s)][[*1] (0.172328s)][[*1] (0.309492s)][[*1] (0.573815s)][[*1] (1.06356s)]] -[[gmp_int][7.81859 (0.775316s)][5.11069 (0.880715s)][2.93514 (0.908404s)][1.80497 (1.03572s)][1.21878 (1.29625s)]] -[[tommath_int][18.0766 (1.79253s)][12.3939 (2.13582s)][9.80438 (3.03438s)][8.74047 (5.01541s)][10.8288 (11.517s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][2.9558 (0.601063s)][2.21555 (0.694115s)][1.73066 (0.915068s)][1.41604 (1.36697s)]] +[[cpp_int(fixed)][[*1] (0.20335s)][[*1] (0.313292s)][[*1] (0.52874s)][[*1] (0.965347s)]] +[[gmp_int][4.08359 (0.8304s)][2.91 (0.91168s)][1.97009 (1.04166s)][1.30934 (1.26397s)]] +[[tommath_int][10.2514 (2.08463s)][9.26794 (2.90357s)][8.62079 (4.55815s)][11.6636 (11.2594s)]] ] [table Operator /(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][1.04098 (0.0443082s)][1.61317 (0.110308s)][2.18324 (0.229148s)][2.36331 (0.442167s)][2.45159 (0.866172s)]] -[[gmp_int][[*1] (0.042564s)][[*1] (0.06838s)][[*1] (0.104957s)][[*1] (0.187096s)][[*1] (0.35331s)]] -[[tommath_int][32.4072 (1.37938s)][23.7471 (1.62383s)][22.1907 (2.32908s)][19.9054 (3.72421s)][24.2219 (8.55783s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][5.83613 (0.318461s)][4.26769 (0.433035s)][3.39803 (0.641615s)][2.80387 (1.05122s)]] +[[cpp_int(fixed)][2.46673 (0.134603s)][2.52386 (0.256092s)][2.43318 (0.459431s)][2.28165 (0.855435s)]] +[[gmp_int][[*1] (0.0545672s)][[*1] (0.101468s)][[*1] (0.18882s)][[*1] (0.374919s)]] +[[tommath_int][29.1556 (1.59094s)][21.9806 (2.23033s)][18.2745 (3.45058s)][22.3582 (8.38249s)]] ] [table Operator << -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.0119095s)][[*1] (0.0131746s)][[*1] (0.0213483s)][[*1] (0.0247552s)][[*1] (0.0339579s)]] -[[gmp_int][1.9355 (0.0230509s)][1.94257 (0.0255925s)][1.49684 (0.031955s)][1.79202 (0.0443618s)][2.0846 (0.0707887s)]] -[[tommath_int][2.64273 (0.0314737s)][2.95612 (0.0389456s)][3.05842 (0.065292s)][3.79496 (0.0939451s)][4.82142 (0.163725s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.1596 (0.0220286s)][1.11929 (0.0294239s)][1.15296 (0.0365532s)][1.06891 (0.0522035s)]] +[[cpp_int(fixed)][[*1] (0.0189966s)][[*1] (0.0262879s)][[*1] (0.0317039s)][[*1] (0.0488381s)]] +[[gmp_int][1.36896 (0.0260055s)][1.17593 (0.0309127s)][1.51661 (0.0480825s)][1.43853 (0.0702549s)]] +[[tommath_int][2.11378 (0.0401547s)][2.52576 (0.0663968s)][2.96051 (0.0938596s)][3.31171 (0.161738s)]] ] [table Operator >> -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.006361s)][[*1] (0.00880189s)][[*1] (0.0180295s)][[*1] (0.0220786s)][[*1] (0.0325312s)]] -[[gmp_int][4.26889 (0.0271544s)][3.14669 (0.0276968s)][1.74396 (0.0314426s)][1.45928 (0.0322188s)][1.24596 (0.0405327s)]] -[[tommath_int][39.4379 (0.250865s)][28.6225 (0.251932s)][16.4543 (0.296661s)][14.2167 (0.313884s)][15.5842 (0.506974s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.26962 (0.0208765s)][1.19206 (0.0265325s)][1.10665 (0.0304931s)][1.03429 (0.0383751s)]] +[[cpp_int(fixed)][[*1] (0.0164431s)][[*1] (0.0222577s)][[*1] (0.0275545s)][1.02967 (0.0382038s)]] +[[gmp_int][1.67276 (0.0275053s)][1.30139 (0.028966s)][1.17546 (0.0323891s)][[*1] (0.037103s)]] +[[tommath_int][14.0947 (0.23176s)][11.7344 (0.261181s)][10.5175 (0.289806s)][13.3498 (0.495316s)]] ] [table Operator ^ -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00307714s)][[*1] (0.00538197s)][[*1] (0.0127717s)][[*1] (0.0198304s)][[*1] (0.0345822s)]] -[[gmp_int][13.9543 (0.0429392s)][9.92785 (0.0534314s)][4.80398 (0.0613552s)][4.35864 (0.0864335s)][3.887 (0.134421s)]] -[[tommath_int][41.5958 (0.127996s)][24.2396 (0.130457s)][11.3666 (0.145171s)][8.01016 (0.158845s)][9.84853 (0.340584s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.39932 (0.0300509s)][1.28371 (0.0381634s)][1.25304 (0.0494246s)][1.04238 (0.075182s)]] +[[cpp_int(fixed)][[*1] (0.0214753s)][[*1] (0.0297291s)][[*1] (0.0394438s)][[*1] (0.0721252s)]] +[[gmp_int][2.26098 (0.0485553s)][2.11331 (0.0628266s)][2.1917 (0.086449s)][1.89072 (0.136369s)]] +[[tommath_int][6.08557 (0.130689s)][4.84167 (0.143938s)][3.82246 (0.150772s)][5.8133 (0.419285s)]] ] [table Operator ^(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00236664s)][[*1] (0.0035339s)][[*1] (0.0100442s)][[*1] (0.0155814s)][[*1] (0.0293253s)]] -[[gmp_int][61.4272 (0.145376s)][41.6319 (0.147123s)][14.9744 (0.150405s)][9.64857 (0.150338s)][5.46649 (0.160306s)]] -[[tommath_int][145.509 (0.344367s)][93.9055 (0.331853s)][35.0456 (0.352003s)][22.7371 (0.354275s)][19.1373 (0.561207s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.85734 (0.0381023s)][1.66156 (0.0432356s)][1.51413 (0.0466764s)][1.28122 (0.0550852s)]] +[[cpp_int(fixed)][[*1] (0.0205145s)][[*1] (0.0260211s)][[*1] (0.0308272s)][[*1] (0.0429944s)]] +[[gmp_int][6.89492 (0.141446s)][5.58265 (0.145267s)][5.07065 (0.156314s)][3.68095 (0.15826s)]] +[[tommath_int][16.3846 (0.336121s)][12.9631 (0.337315s)][11.2716 (0.347472s)][13.6661 (0.587566s)]] +] +[table Operator gcd +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.82307 (4.48165s)][1.77052 (10.1686s)][1.8655 (25.1877s)][2.12367 (69.0626s)]] +[[cpp_int(fixed)][1.504 (3.69729s)][1.60631 (9.22552s)][1.84155 (24.8643s)][2.25807 (73.4335s)]] +[[gmp_int][[*1] (2.4583s)][[*1] (5.7433s)][[*1] (13.5018s)][[*1] (32.5205s)]] +[[tommath_int][4.92412 (12.105s)][4.39462 (25.2396s)][4.05657 (54.7712s)][3.96001 (128.781s)]] ] [table Operator str -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.000465841s)][[*1] (0.00102073s)][[*1] (0.00207212s)][1.02618 (0.0062017s)][1.32649 (0.0190043s)]] -[[gmp_int][2.83823 (0.00132216s)][2.17537 (0.00222046s)][1.46978 (0.00304557s)][[*1] (0.00604351s)][[*1] (0.0143268s)]] -[[tommath_int][15.76 (0.00734164s)][15.9879 (0.0163193s)][21.7337 (0.0450349s)][19.7183 (0.119168s)][26.3445 (0.377431s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.73678 (0.00186546s)][1.442 (0.00327905s)][1.29994 (0.0076685s)][1.49716 (0.0217405s)]] +[[cpp_int(fixed)][[*1] (0.00107409s)][[*1] (0.00227396s)][1.01222 (0.00597122s)][1.20506 (0.0174989s)]] +[[gmp_int][1.8827 (0.00202218s)][1.28861 (0.00293026s)][[*1] (0.00589914s)][[*1] (0.0145211s)]] +[[tommath_int][15.6431 (0.0168021s)][22.3011 (0.0507118s)][20.9541 (0.123612s)][26.2052 (0.380528s)]] ] [table Operator | -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00295261s)][[*1] (0.00560832s)][[*1] (0.0127056s)][[*1] (0.0200759s)][[*1] (0.034651s)]] -[[gmp_int][14.1091 (0.0416586s)][8.52475 (0.0478096s)][4.74593 (0.0602998s)][4.19694 (0.0842575s)][3.85525 (0.133588s)]] -[[tommath_int][44.8889 (0.132539s)][25.2503 (0.141612s)][11.0488 (0.140382s)][7.39273 (0.148416s)][9.75809 (0.338127s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.39649 (0.0295702s)][1.14915 (0.0378751s)][1.31606 (0.0523944s)][1.04853 (0.0751774s)]] +[[cpp_int(fixed)][[*1] (0.0211746s)][[*1] (0.0329594s)][[*1] (0.0398115s)][[*1] (0.071698s)]] +[[gmp_int][2.31998 (0.0491246s)][1.83801 (0.0605797s)][2.16567 (0.0862186s)][1.88132 (0.134887s)]] +[[tommath_int][6.12227 (0.129637s)][4.26647 (0.14062s)][3.75956 (0.149674s)][5.78233 (0.414581s)]] ] [table Operator |(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[fixed_int][[*1] (0.00244005s)][[*1] (0.0040142s)][[*1] (0.00983777s)][[*1] (0.0155223s)][[*1] (0.0293444s)]] -[[gmp_int][64.6148 (0.157663s)][34.5827 (0.138822s)][14.2764 (0.140448s)][10.3248 (0.160264s)][5.33565 (0.156572s)]] -[[tommath_int][137.825 (0.3363s)][81.1074 (0.325581s)][34.8737 (0.343079s)][22.3727 (0.347276s)][18.912 (0.554963s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.89501 (0.0385046s)][1.64437 (0.0425891s)][1.56631 (0.0479629s)][1.28806 (0.0549147s)]] +[[cpp_int(fixed)][[*1] (0.020319s)][[*1] (0.0258999s)][[*1] (0.0306217s)][[*1] (0.0426336s)]] +[[gmp_int][6.93537 (0.14092s)][5.48104 (0.141959s)][4.90595 (0.150229s)][3.63885 (0.155137s)]] +[[tommath_int][16.4913 (0.335087s)][13.3178 (0.344931s)][11.4509 (0.350645s)][13.7699 (0.587063s)]] ] [endsect] [section:rational_performance Rational Type Perfomance] [table Operator * -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (2.67402s)][[*1] (5.89806s)][[*1] (12.7524s)][[*1] (29.4044s)][[*1] (70.1615s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.59286 (32.3559s)][6.54125 (82.4247s)][6.8815 (197.198s)][6.84066 (473.057s)]] +[[mpq_rational][[*1] (5.78521s)][[*1] (12.6008s)][[*1] (28.6562s)][[*1] (69.1537s)]] ] [table Operator *(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (1.15673s)][[*1] (1.20559s)][[*1] (1.25776s)][[*1] (1.41413s)][[*1] (1.59151s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][2.70193 (3.1466s)][3.10134 (3.79056s)][3.659 (4.93935s)][4.61372 (6.89845s)]] +[[mpq_rational][[*1] (1.16457s)][[*1] (1.22223s)][[*1] (1.34992s)][[*1] (1.4952s)]] ] [table Operator + -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (1.47032s)][[*1] (3.1599s)][[*1] (6.74926s)][[*1] (16.7334s)][[*1] (38.5739s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.91758 (18.1263s)][6.60754 (44.1182s)][6.65334 (103.169s)][6.44717 (244.055s)]] +[[mpq_rational][[*1] (3.06312s)][[*1] (6.67695s)][[*1] (15.5064s)][[*1] (37.8546s)]] ] [table Operator +(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.639153s)][[*1] (0.683218s)][[*1] (0.725686s)][[*1] (0.895283s)][[*1] (0.931053s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][3.98512 (2.67249s)][4.24335 (3.04309s)][4.65009 (3.83046s)][5.45832 (5.08346s)]] +[[mpq_rational][[*1] (0.670618s)][[*1] (0.717144s)][[*1] (0.823739s)][[*1] (0.931322s)]] ] [table Operator - -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (1.48169s)][[*1] (3.17694s)][[*1] (6.75317s)][[*1] (15.9167s)][[*1] (39.0541s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.91504 (18.2374s)][6.55676 (43.8659s)][6.66239 (103.481s)][6.47224 (244.887s)]] +[[mpq_rational][[*1] (3.08322s)][[*1] (6.69018s)][[*1] (15.5321s)][[*1] (37.8365s)]] ] [table Operator -(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.650283s)][[*1] (0.669498s)][[*1] (0.707811s)][[*1] (0.83232s)][[*1] (1.06134s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][3.96173 (2.66785s)][4.36532 (3.09023s)][4.59363 (3.74494s)][5.43075 (5.09156s)]] +[[mpq_rational][[*1] (0.673405s)][[*1] (0.707904s)][[*1] (0.815246s)][[*1] (0.937541s)]] ] [table Operator / -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (9.26405s)][[*1] (14.7461s)][[*1] (26.4939s)][[*1] (54.0641s)][[*1] (126.261s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][4.36846 (63.9498s)][5.52565 (145.045s)][6.18331 (328.069s)][6.49822 (784.806s)]] +[[mpq_rational][[*1] (14.639s)][[*1] (26.2494s)][[*1] (53.0571s)][[*1] (120.772s)]] ] [table Operator /(int) -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (1.40596s)][[*1] (1.42215s)][[*1] (1.50342s)][[*1] (1.62326s)][[*1] (1.7796s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][2.26643 (3.13785s)][2.57125 (3.76931s)][3.20872 (5.06758s)][4.02177 (7.17803s)]] +[[mpq_rational][[*1] (1.38449s)][[*1] (1.46594s)][[*1] (1.57931s)][[*1] (1.78479s)]] ] [table Operator str -[[Backend][64 Bits][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[mpq_rational][[*1] (0.00265159s)][[*1] (0.00363964s)][[*1] (0.00677698s)][[*1] (0.0117945s)][[*1] (0.0283447s)]] +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_rational][5.40493 (0.0199393s)][8.55089 (0.0511907s)][9.91026 (0.118839s)][9.93546 (0.285367s)]] +[[mpq_rational][[*1] (0.00368909s)][[*1] (0.00598659s)][[*1] (0.0119915s)][[*1] (0.028722s)]] ] [endsect] diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index e22c8a1c..237760dd 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -358,6 +358,11 @@ void test_integer_ops(const boost::mpl::int_::is_signed) { a = -20; @@ -376,6 +381,20 @@ void test_integer_ops(const boost::mpl::int_ #include #include +#include #include "test.hpp" template @@ -57,7 +58,9 @@ void test() using namespace boost::multiprecision; typedef Number test_type; unsigned last_error_count = 0; - for(int i = 0; i < 1000; ++i) + boost::timer tim; + + for(int i = 0; i < 10000; ++i) { mpz_int a = generate_random(1000); mpz_int b = generate_random(512); @@ -280,6 +283,18 @@ void test() std::cout << "a%d = " << a%d << std::endl; std::cout << "a1%d1 = " << a1%d1 << std::endl; } + + // + // Check to see if test is taking too long. + // Tests run on the compiler farm time out after 300 seconds, + // so don't get too close to that: + // + if(tim.elapsed() > 100) + { + std::cout << "Timeout reached, aborting tests now....\n"; + break; + } + } } From 8433c691750535dc9505b7ce0a5e3e0e7e08889a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 22 Mar 2012 10:29:30 +0000 Subject: [PATCH 139/256] Disable expression templates for fixed precision types. Restrict integer functions to integer types. Improve Miller Rabin performance by filtering out small primes etc. Improve Miller Rabin tests. Change mp_int to tom_int to avoid conflict with global ::mp_Int type. [SVN r77471] --- .../perf/int_real_world.html | 132 +---- .../boost_multiprecision/ref/mp_number.html | 48 +- doc/html/boost_multiprecision/tut/ints.html | 453 +++++++++--------- .../boost_multiprecision/tut/rational.html | 18 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 226 +++++---- example/tommath_snips.cpp | 6 +- include/boost/multiprecision/cpp_int.hpp | 16 +- include/boost/multiprecision/integer_ops.hpp | 38 +- include/boost/multiprecision/miller_rabin.hpp | 77 ++- include/boost/multiprecision/tommath.hpp | 10 +- performance/miller_rabin_performance.cpp | 4 +- performance/performance_test.cpp | 16 +- test/test_arithmetic.cpp | 17 +- test/test_int_io.cpp | 2 +- test/test_miller_rabin.cpp | 12 + test/test_numeric_limits.cpp | 2 +- test/test_rational_io.cpp | 4 +- 18 files changed, 579 insertions(+), 504 deletions(-) diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html index 5705e869..6033685c 100644 --- a/doc/html/boost_multiprecision/perf/int_real_world.html +++ b/doc/html/boost_multiprecision/perf/int_real_world.html @@ -47,126 +47,6 @@ - -

    - cpp_int -

    - - -

    - 1.45089(0.481248s) -

    - - - - -

    - cpp_int (no Expression templates) -

    - - -

    - 1.61489(0.535646s) -

    - - - - -

    - cpp_int (64-bit cache) -

    - - -

    - 1.39273(0.461956s) -

    - - - - -

    - cpp_int (256-bit cache) -

    - - -

    - 1.37743(0.456884s) -

    - - - - -

    - cpp_int (512-bit cache) -

    - - -

    - 1.0919(0.362175s) -

    - - - - -

    - cpp_int (1024-bit cache) -

    - - -

    - 1.10864(0.367726s) -

    - - - - -

    - mp_int -

    - - -

    - 3.92956(1.3034s) -

    - - - - -

    - mp_int (no Expression templates) -

    - - -

    - 4.02496(1.33505s) -

    - - - - -

    - mp_int1024_t -

    - - -

    - 1.01094(0.335322s) -

    - - - - -

    - mp_int1024_t (no Expression templates) -

    - - -

    - 1(0.331692s) -

    - - -

    mpz_int @@ -174,7 +54,7 @@

    - 1.08472(0.359793s) + 1.08279(0.370326s)

    @@ -186,12 +66,20 @@

    - 1.20865(0.400901s) + 1.1702(0.400222s)

    +

    + [[cpp_int][1.3612(0.465547s)]] [[cpp_int (no Expression templates)][1.33286(0.455854s)]] + [[cpp_int (64-bit cache)][1.33134(0.455333s)]] [[cpp_int (256-bit cache)][1.29367(0.442451s)]] + [[cpp_int (512-bit cache)][1.08821(0.37218s)]] [[cpp_int (1024-bit cache)][1.07902(0.369037s)]] + [[mp_int1024_t][1.02616(0.35096s)]] [[mp_int1024_t (no Expression templates)][1(0.342011s)]] + [[tom_int][3.74233(1.27992s)]] [[tom_int (no Expression templates)][3.97646(1.35999s)]] + ] +

    It's interesting to note that expression templates have little effect here - perhaps because the actual expressions involved are relatively trivial diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index a68c1649..e1a98ef1 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -143,6 +143,16 @@ template <class T> struct number_category; +// Integer specific functions: +template <class Backend, bool ExpressionTemplates> +bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y, + mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r); +template <class Integer> +Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val); +template <class Engine> +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen); +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials); + // Rational number support: typename component_type<mp_number-or-expression-template-type>::type numerator (const mp_number-or-expression-template-type&); typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&); @@ -537,6 +547,40 @@

    + Integer functions +
    +
    template <class Backend, bool ExpressionTemplates>
    +bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    +               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    +
    +

    + Divides x by y and returns both the quotient and remainder. After the call + q = + x / y and r + = x % y. +

    +
    template <class Integer>
    +Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    +
    +

    + Returns the absolute value of x + % val. +

    +
    template <class Engine>
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    +
    +

    + Tests to see if the number n is probably prime - the + test excludes the vast majority of composite numbers by excluding small prime + factors and performing a single Fermat test. Then performs trials + Miller-Rabin tests. Returns false + if n is definitely composite, or true + if n is probably prime with the probability of it being + composite less than 0.25^trials. +

    +
    + Rational Number Functions
    @@ -548,7 +592,7 @@ respectively.

    - + Boost.Math Interoperability Support
    @@ -571,7 +615,7 @@ to ensure interoperability.

    - + std::numeric_limits support
    diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index 2cc70776..3c0e3371 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -63,6 +63,40 @@ + +

    + cpp_int +

    + + +

    + boost/multiprecision/cpp_int.hpp +

    + + +

    + 2 +

    + + +

    + None +

    + + +

    + Very versatile, Boost licenced, all C++ integer type which support + both arbitrary precision and fixed precision integer types. +

    + + +

    + Slower than GMP, though + typically not as slow as libtommath +

    + + +

    gmp_int @@ -98,7 +132,7 @@

    - mp_int + tom_int

    @@ -127,222 +161,10 @@

    - - -

    - cpp_int -

    - - -

    - boost/multiprecision/cpp_int.hpp -

    - - -

    - 2 -

    - - -

    - None -

    - - -

    - Very versatile, Boost licenced, all C++ integer type which support - both arbitrary precision and fixed precision integer types. -

    - - -

    - Slower than GMP. -

    - -
    - gmp_int -
    -
    namespace boost{ namespace multiprecision{
    -
    -class gmp_int;
    -
    -typedef mp_number<gmp_int >         mpz_int;
    -
    -}} // namespaces
    -
    -

    - The gmp_int backend is used - via the typedef boost::multiprecision::mpz_int. It acts as a thin wrapper around - the GMP mpz_t - to provide an integer type that is a drop-in replacement for the native C++ - integer types, but with unlimited precision. -

    -

    - As well as the usual conversions from arithmetic and string types, type - mpz_int is copy constructible - and assignable from: -

    -
      -
    • - The GMP native types: mpf_t, mpz_t, - mpq_t. -
    • -
    • - Instances of mp_number<T> that are wrappers around those types: - mp_number<gmp_float<N> >, mp_number<gmp_rational>. -
    • -
    -

    - It's also possible to access the underlying mpz_t - via the data() - member function of gmp_int. -

    -

    - Things you should know when using this type: -

    -
      -
    • - No changes are made to the GMP library's global settings - so you can - safely mix this type with existing code that uses GMP. -
    • -
    • - Default constructed gmp_int's - have the value zero (this is GMP's default behavior). -
    • -
    • - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this - type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex - are set, will result in a std::runtime_error - will be thrown. -
    • -
    • - Division by zero is handled by the GMP - library - it will trigger a division by zero signal. -
    • -
    • - Although this type is a wrapper around GMP - it will work equally well with MPIR. - Indeed use of MPIR is recomended - on Win32. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -mpz_int v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 1000!
    -
    -// Access the underlying representation:
    -mpz_t z;
    -mpz_init(z);
    -mpz_set(z, v.backend().data());
    -
    -

    -

    -
    - - mp_int -
    -
    namespace boost{ namespace multiprecision{
    -
    -class tommath_int;
    -
    -typedef mp_number<tommath_int >         mp_int;
    -
    -}} // namespaces
    -
    -

    - The tommath_int backend is - used via the typedef boost::multiprecision::mp_int. - It acts as a thin wrapper around the libtommath - mp_int to provide an integer - type that is a drop-in replacement for the native C++ integer types, but - with unlimited precision. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed objects have the value zero (this is libtommath's - default behavior). -
    • -
    • - Although mp_int is mostly - a drop in replacement for the builtin integer types, it should be noted - that it is a rather strange beast as it's a signed type that is not a - 2's complement type. As a result the bitwise operations | & ^ will throw a std::runtime_error - exception if either of the arguments is negative. Similarly the complement - operator~ is deliberately - not implemented for this type. -
    • -
    • - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this - type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex - are set, will result in a std::runtime_error - will be thrown. -
    • -
    • - Division by zero will result in a hardware signal being raised by libtommath. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/tommath.hpp>
    -
    -boost::multiprecision::mp_int v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 1000!
    -std::cout << std::hex << v << std::endl; // prints 1000! in hex format
    -
    -try{
    -   std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
    -}
    -catch(const std::runtime_error& e)
    -{
    -   std::cout << e.what() << std::endl;
    -}
    -
    -try{
    -   // v is not a 2's complement type, bitwise operations are only supported
    -   // on positive values:
    -   v = -v & 2;
    -}
    -catch(const std::runtime_error& e)
    -{
    -   std::cout << e.what() << std::endl;
    -}
    -
    -

    -

    -
    - cpp_int
    namespace boost{ namespace multiprecision{
    @@ -357,16 +179,16 @@
     typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
     
     // Fixed precision unsigned types:
    -typedef mp_number<cpp_int_backend<128, false, void> >   mp_uint128_t;
    -typedef mp_number<cpp_int_backend<256, false, void> >   mp_uint256_t;
    -typedef mp_number<cpp_int_backend<512, false, void> >   mp_uint512_t;
    -typedef mp_number<cpp_int_backend<1024, false, void> >  mp_uint1024_t;
    +typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    +typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    +typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    +typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
     
     // Fixed precision signed types:
    -typedef mp_number<cpp_int_backend<128, true, void> >    mp_int128_t;
    -typedef mp_number<cpp_int_backend<256, true, void> >    mp_int256_t;
    -typedef mp_number<cpp_int_backend<512, true, void> >    mp_int512_t;
    -typedef mp_number<cpp_int_backend<1024, true, void> >   mp_int1024_t;
    +typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    +typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    +typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    +typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
     
     }} // namespaces
     
    @@ -448,10 +270,16 @@ string results in a std::runtime_error being thrown, this is a direct consequence of the sign-magnitude representation. +
  • + The fixed precision types mp_[u]intXXX_t + have expression template support turned off - it seems to make little + difference to the performance of these types either way - so we may as + well have the faster compile times by turning the feature off. +
  • - - Example: + + Example:

    @@ -474,6 +302,185 @@ std::cout << u << std::endl; // prints 100! +

    +

    +
    + + gmp_int +
    +
    namespace boost{ namespace multiprecision{
    +
    +class gmp_int;
    +
    +typedef mp_number<gmp_int >         mpz_int;
    +
    +}} // namespaces
    +
    +

    + The gmp_int backend is used + via the typedef boost::multiprecision::mpz_int. It acts as a thin wrapper around + the GMP mpz_t + to provide an integer type that is a drop-in replacement for the native C++ + integer types, but with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, type + mpz_int is copy constructible + and assignable from: +

    +
      +
    • + The GMP native types: mpf_t, mpz_t, + mpq_t. +
    • +
    • + Instances of mp_number<T> that are wrappers around those types: + mp_number<gmp_float<N> >, mp_number<gmp_rational>. +
    • +
    +

    + It's also possible to access the underlying mpz_t + via the data() + member function of gmp_int. +

    +

    + Things you should know when using this type: +

    +
      +
    • + No changes are made to the GMP library's global settings - so you can + safely mix this type with existing code that uses GMP. +
    • +
    • + Default constructed gmp_int's + have the value zero (this is GMP's default behavior). +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero is handled by the GMP + library - it will trigger a division by zero signal. +
    • +
    • + Although this type is a wrapper around GMP + it will work equally well with MPIR. + Indeed use of MPIR is recomended + on Win32. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mpz_int v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 1000!
    +
    +// Access the underlying representation:
    +mpz_t z;
    +mpz_init(z);
    +mpz_set(z, v.backend().data());
    +
    +

    +

    +
    + + tom_int +
    +
    namespace boost{ namespace multiprecision{
    +
    +class tommath_int;
    +
    +typedef mp_number<tommath_int >         tom_int;
    +
    +}} // namespaces
    +
    +

    + The tommath_int backend is + used via the typedef boost::multiprecision::tom_int. + It acts as a thin wrapper around the libtommath + tom_int to provide an integer + type that is a drop-in replacement for the native C++ integer types, but + with unlimited precision. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed objects have the value zero (this is libtommath's + default behavior). +
    • +
    • + Although tom_int is mostly + a drop in replacement for the builtin integer types, it should be noted + that it is a rather strange beast as it's a signed type that is not a + 2's complement type. As a result the bitwise operations | & ^ will throw a std::runtime_error + exception if either of the arguments is negative. Similarly the complement + operator~ is deliberately + not implemented for this type. +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero will result in a hardware signal being raised by libtommath. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/tommath.hpp>
    +
    +boost::multiprecision::tom_int v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 1000!
    +std::cout << std::hex << v << std::endl; // prints 1000! in hex format
    +
    +try{
    +   std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +
    +try{
    +   // v is not a 2's complement type, bitwise operations are only supported
    +   // on positive values:
    +   v = -v & 2;
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +

    diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index b3cba087..2584d7db 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -414,26 +414,26 @@
    namespace boost{ namespace multiprecision{
     
     typedef rational_adpater<tommath_int>        tommath_rational;
    -typedef mp_number<tommath_rational >         mp_rational;
    +typedef mp_number<tommath_rational >         tom_rational;
     
     }} // namespaces
     

    The tommath_rational backend - is used via the typedef boost::multiprecision::mp_rational. - It acts as a thin wrapper around boost::rational<mp_int> to provide a rational number type that + is used via the typedef boost::multiprecision::tom_rational. + It acts as a thin wrapper around boost::rational<tom_int> to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision.

    - The advantage of using this type rather than boost::rational<mp_int> directly, is that it is expression-template + The advantage of using this type rather than boost::rational<tom_int> directly, is that it is expression-template enabled, greatly reducing the number of temporaries created in complex expressions.

    There are also non-member functions:

    -
    mp_int numerator(const mp_rational&);
    -mp_int denominator(const mp_rational&);
    +
    tom_int numerator(const tom_rational&);
    +tom_int denominator(const tom_rational&);
     

    which return the numerator and denominator of the number. @@ -443,7 +443,7 @@

    • - Default constructed mp_rational's + Default constructed tom_rational's have the value zero (this the inherited Boost.Rational behavior).
    • @@ -472,7 +472,7 @@ using namespace boost::multiprecision; -mp_rational v = 1; +tom_rational v = 1; // Do some arithmetic: for(unsigned i = 1; i <= 1000; ++i) @@ -483,7 +483,7 @@ std::cout << numerator(v) << std::endl; std::cout << denominator(v) << std::endl; -mp_rational w(2, 3); // Component wise constructor +tom_rational w(2, 3); // Component wise constructor std::cout << w << std::endl; // prints 2/3

    diff --git a/doc/html/index.html b/doc/html/index.html index cf7ed306..a81e493e 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -63,7 +63,7 @@

    - +

    Last revised: March 20, 2012 at 19:02:47 GMT

    Last revised: March 22, 2012 at 08:59:33 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 5d9597ae..c790c76e 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -225,77 +225,12 @@ The following backends provide integer arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] -[[`mp_int`][boost/multiprecision/tommath.hpp][2][[tommath]][Public domain backend with no licence restrictions.][Slower than [gmp].]] [[`cpp_int`][boost/multiprecision/cpp_int.hpp][2][None] - [Very versatile, Boost licenced, all C++ integer type which support both arbitrary precision and fixed precision integer types.][Slower than [gmp].]] + [Very versatile, Boost licenced, all C++ integer type which support both arbitrary precision and fixed precision integer types.][Slower than [gmp], though typically not as slow as [tommath]]] +[[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] +[[`tom_int`][boost/multiprecision/tommath.hpp][2][[tommath]][Public domain backend with no licence restrictions.][Slower than [gmp].]] ] -[h4 gmp_int] - - namespace boost{ namespace multiprecision{ - - class gmp_int; - - typedef mp_number mpz_int; - - }} // namespaces - -The `gmp_int` backend is used via the typedef `boost::multiprecision::mpz_int`. It acts as a thin wrapper around the [gmp] `mpz_t` -to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. - -As well as the usual conversions from arithmetic and string types, type `mpz_int` is copy constructible and assignable from: - -* The [gmp] native types: `mpf_t`, `mpz_t`, `mpq_t`. -* Instances of `mp_number` that are wrappers around those types: `mp_number >`, `mp_number`. - -It's also possible to access the underlying `mpz_t` via the `data()` member function of `gmp_int`. - -Things you should know when using this type: - -* No changes are made to the GMP library's global settings - so you can safely mix this type with -existing code that uses [gmp]. -* Default constructed `gmp_int`'s have the value zero (this is GMP's default behavior). -* Formatted IO for this type does not support octal or hexadecimal notation for negative values, -as a result performing formatted output on this type when the argument is negative and either of the flags -`std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. -* Division by zero is handled by the [gmp] library - it will trigger a division by zero signal. -* Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir] -is recomended on Win32. - -[h5 Example:] - -[mpz_eg] - -[h4 mp_int] - - namespace boost{ namespace multiprecision{ - - class tommath_int; - - typedef mp_number mp_int; - - }} // namespaces - -The `tommath_int` backend is used via the typedef `boost::multiprecision::mp_int`. It acts as a thin wrapper around the [tommath] `mp_int` -to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. - -Things you should know when using this type: - -* Default constructed objects have the value zero (this is [tommath]'s default behavior). -* Although `mp_int` is mostly a drop in replacement for the builtin integer types, it should be noted that it is a -rather strange beast as it's a signed type that is not a 2's complement type. As a result the bitwise operations -`| & ^` will throw a `std::runtime_error` exception if either of the arguments is negative. Similarly the complement -operator`~` is deliberately not implemented for this type. -* Formatted IO for this type does not support octal or hexadecimal notation for negative values, -as a result performing formatted output on this type when the argument is negative and either of the flags -`std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. -* Division by zero will result in a hardware signal being raised by [tommath]. - -[h5 Example:] - -[tommath_eg] - [h4 cpp_int] namespace boost{ namespace multiprecision{ @@ -310,16 +245,16 @@ as a result performing formatted output on this type when the argument is negati typedef mp_number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef mp_number > mp_uint128_t; - typedef mp_number > mp_uint256_t; - typedef mp_number > mp_uint512_t; - typedef mp_number > mp_uint1024_t; + typedef mp_number, false> mp_uint128_t; + typedef mp_number, false> mp_uint256_t; + typedef mp_number, false> mp_uint512_t; + typedef mp_number, false> mp_uint1024_t; // Fixed precision signed types: - typedef mp_number > mp_int128_t; - typedef mp_number > mp_int256_t; - typedef mp_number > mp_int512_t; - typedef mp_number > mp_int1024_t; + typedef mp_number, false> mp_int128_t; + typedef mp_number, false> mp_int256_t; + typedef mp_number, false> mp_int512_t; + typedef mp_number, false> mp_int1024_t; }} // namespaces @@ -360,11 +295,79 @@ That said it should be noted that there's no requirement for built-in types to b is the most common format by far. * Attempting to print negative values as either an Octal or Hexadecimal string results in a `std::runtime_error` being thrown, this is a direct consequence of the sign-magnitude representation. +* The fixed precision types `mp_[u]intXXX_t` have expression template support turned off - it seems to make little +difference to the performance of these types either way - so we may as well have the faster compile times by turning +the feature off. [h5 Example:] [cpp_int_eg] +[h4 gmp_int] + + namespace boost{ namespace multiprecision{ + + class gmp_int; + + typedef mp_number mpz_int; + + }} // namespaces + +The `gmp_int` backend is used via the typedef `boost::multiprecision::mpz_int`. It acts as a thin wrapper around the [gmp] `mpz_t` +to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. + +As well as the usual conversions from arithmetic and string types, type `mpz_int` is copy constructible and assignable from: + +* The [gmp] native types: `mpf_t`, `mpz_t`, `mpq_t`. +* Instances of `mp_number` that are wrappers around those types: `mp_number >`, `mp_number`. + +It's also possible to access the underlying `mpz_t` via the `data()` member function of `gmp_int`. + +Things you should know when using this type: + +* No changes are made to the GMP library's global settings - so you can safely mix this type with +existing code that uses [gmp]. +* Default constructed `gmp_int`'s have the value zero (this is GMP's default behavior). +* Formatted IO for this type does not support octal or hexadecimal notation for negative values, +as a result performing formatted output on this type when the argument is negative and either of the flags +`std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. +* Division by zero is handled by the [gmp] library - it will trigger a division by zero signal. +* Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir] +is recomended on Win32. + +[h5 Example:] + +[mpz_eg] + +[h4 tom_int] + + namespace boost{ namespace multiprecision{ + + class tommath_int; + + typedef mp_number tom_int; + + }} // namespaces + +The `tommath_int` backend is used via the typedef `boost::multiprecision::tom_int`. It acts as a thin wrapper around the [tommath] `tom_int` +to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. + +Things you should know when using this type: + +* Default constructed objects have the value zero (this is [tommath]'s default behavior). +* Although `tom_int` is mostly a drop in replacement for the builtin integer types, it should be noted that it is a +rather strange beast as it's a signed type that is not a 2's complement type. As a result the bitwise operations +`| & ^` will throw a `std::runtime_error` exception if either of the arguments is negative. Similarly the complement +operator`~` is deliberately not implemented for this type. +* Formatted IO for this type does not support octal or hexadecimal notation for negative values, +as a result performing formatted output on this type when the argument is negative and either of the flags +`std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. +* Division by zero will result in a hardware signal being raised by [tommath]. + +[h5 Example:] + +[tommath_eg] + [endsect] [section:reals Floating Point Numbers] @@ -611,27 +614,27 @@ Things you should know when using this type: namespace boost{ namespace multiprecision{ typedef rational_adpater tommath_rational; - typedef mp_number mp_rational; + typedef mp_number tom_rational; }} // namespaces -The `tommath_rational` backend is used via the typedef `boost::multiprecision::mp_rational`. It acts as a thin wrapper around -`boost::rational` +The `tommath_rational` backend is used via the typedef `boost::multiprecision::tom_rational`. It acts as a thin wrapper around +`boost::rational` to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. -The advantage of using this type rather than `boost::rational` directly, is that it is expression-template enabled, +The advantage of using this type rather than `boost::rational` directly, is that it is expression-template enabled, greatly reducing the number of temporaries created in complex expressions. There are also non-member functions: - mp_int numerator(const mp_rational&); - mp_int denominator(const mp_rational&); + tom_int numerator(const tom_rational&); + tom_int denominator(const tom_rational&); which return the numerator and denominator of the number. Things you should know when using this type: -* Default constructed `mp_rational`'s have the value zero (this the inherited Boost.Rational behavior). +* Default constructed `tom_rational`'s have the value zero (this the inherited Boost.Rational behavior). * Division by zero results in a `boost::bad_rational` exception being thrown (see the rational number library's docs for more information). * No changes are made to [tommath]'s global state, so this type can safely coexist with other [tommath] code. * Performance of this type has been found to be pretty poor - this need further investigation - but it appears that Boost.Rational @@ -860,6 +863,16 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba template struct number_category; + // Integer specific functions: + template + bool divide_qr(const ``['mp_number-or-expression-template-type]``& x, const ``['mp_number-or-expression-template-type]``& y, + mp_number& q, mp_number& r); + template + Integer integer_modulus(const ``['mp_number-or-expression-template-type]``& x, Integer val); + template + bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials, Engine& gen); + bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials); + // Rational number support: typename component_type<``['mp_number-or-expression-template-type]``>::type numerator (const ``['mp_number-or-expression-template-type]``&); typename component_type<``['mp_number-or-expression-template-type]``>::type denominator(const ``['mp_number-or-expression-template-type]``&); @@ -1123,6 +1136,29 @@ If this is a type with mutiple components (for example rational or complex types A traits class that inherits from `mpl::int_` where `N` is one of the enumerated values `number_kind_integer`, `number_kind_floating_point`, `number_kind_rational` or `number_kind_fixed_point`. + +[h4 Integer functions] + + template + bool divide_qr(const ``['mp_number-or-expression-template-type]``& x, const ``['mp_number-or-expression-template-type]``& y, + mp_number& q, mp_number& r); + +Divides x by y and returns both the quotient and remainder. After the call `q = x / y` and `r = x % y`. + + template + Integer integer_modulus(const ``['mp_number-or-expression-template-type]``& x, Integer val); + +Returns the absolute value of `x % val`. + + template + bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials, Engine& gen); + bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials); + +Tests to see if the number /n/ is probably prime - the test excludes the vast majority of composite numbers +by excluding small prime factors and performing a single Fermat test. Then performs /trials/ Miller-Rabin +tests. Returns `false` if /n/ is definitely composite, or `true` if /n/ is probably prime with the +probability of it being composite less than 0.25^trials. + [h4 Rational Number Functions] typename component_type<``['mp_number-or-expression-template-type]``>::type numerator (const ``['mp_number-or-expression-template-type]``&); @@ -1373,18 +1409,18 @@ Windows Vista machine. [table [[Integer Type][Relative (and Absolute) Times]] -[[cpp_int][1.45089(0.481248s)]] -[[cpp_int (no Expression templates)][1.61489(0.535646s)]] -[[cpp_int (64-bit cache)][1.39273(0.461956s)]] -[[cpp_int (256-bit cache)][1.37743(0.456884s)]] -[[cpp_int (512-bit cache)][1.0919(0.362175s)]] -[[cpp_int (1024-bit cache)][1.10864(0.367726s)]] -[[mp_int][3.92956(1.3034s)]] -[[mp_int (no Expression templates)][4.02496(1.33505s)]] -[[mp_int1024_t][1.01094(0.335322s)]] -[[mp_int1024_t (no Expression templates)][1(0.331692s)]] -[[mpz_int][1.08472(0.359793s)]] -[[mpz_int (no Expression templates)][1.20865(0.400901s)]] +[[mpz_int][1.08279(0.370326s)]] +[[mpz_int (no Expression templates)][1.1702(0.400222s)]]] +[[cpp_int][1.3612(0.465547s)]] +[[cpp_int (no Expression templates)][1.33286(0.455854s)]] +[[cpp_int (64-bit cache)][1.33134(0.455333s)]] +[[cpp_int (256-bit cache)][1.29367(0.442451s)]] +[[cpp_int (512-bit cache)][1.08821(0.37218s)]] +[[cpp_int (1024-bit cache)][1.07902(0.369037s)]] +[[mp_int1024_t][1.02616(0.35096s)]] +[[mp_int1024_t (no Expression templates)][1(0.342011s)]] +[[tom_int][3.74233(1.27992s)]] +[[tom_int (no Expression templates)][3.97646(1.35999s)]] ] It's interesting to note that expression templates have little effect here - perhaps because the actual expressions involved diff --git a/example/tommath_snips.cpp b/example/tommath_snips.cpp index 92fbaeed..6c0f73d2 100644 --- a/example/tommath_snips.cpp +++ b/example/tommath_snips.cpp @@ -11,7 +11,7 @@ void t1() //[tommath_eg //=#include - boost::multiprecision::mp_int v = 1; + boost::multiprecision::tom_int v = 1; // Do some arithmetic: for(unsigned i = 1; i <= 1000; ++i) @@ -48,7 +48,7 @@ void t3() using namespace boost::multiprecision; - mp_rational v = 1; + tom_rational v = 1; // Do some arithmetic: for(unsigned i = 1; i <= 1000; ++i) @@ -59,7 +59,7 @@ void t3() std::cout << numerator(v) << std::endl; std::cout << denominator(v) << std::endl; - mp_rational w(2, 3); // Component wise constructor + tom_rational w(2, 3); // Component wise constructor std::cout << w << std::endl; // prints 2/3 //] diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 43ddbe28..65923f7a 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2206,16 +2206,16 @@ typedef rational_adapter > cpp_rational_backend; typedef mp_number cpp_rational; // Fixed precision unsigned types: -typedef mp_number > mp_uint128_t; -typedef mp_number > mp_uint256_t; -typedef mp_number > mp_uint512_t; -typedef mp_number > mp_uint1024_t; +typedef mp_number, false> mp_uint128_t; +typedef mp_number, false> mp_uint256_t; +typedef mp_number, false> mp_uint512_t; +typedef mp_number, false> mp_uint1024_t; // Fixed precision signed types: -typedef mp_number > mp_int128_t; -typedef mp_number > mp_int256_t; -typedef mp_number > mp_int512_t; -typedef mp_number > mp_int1024_t; +typedef mp_number, false> mp_int128_t; +typedef mp_number, false> mp_int256_t; +typedef mp_number, false> mp_int512_t; +typedef mp_number, false> mp_int1024_t; }} // namespaces diff --git a/include/boost/multiprecision/integer_ops.hpp b/include/boost/multiprecision/integer_ops.hpp index 7bd1e6c8..a98524b4 100644 --- a/include/boost/multiprecision/integer_ops.hpp +++ b/include/boost/multiprecision/integer_ops.hpp @@ -41,20 +41,54 @@ inline Integer eval_integer_modulus(const Backend& x, Integer val) } template -inline void divide_qr(const mp_number& x, const mp_number& y, +inline typename enable_if_c::value == number_kind_integer>::type + divide_qr(const mp_number& x, const mp_number& y, mp_number& q, mp_number& r) { using default_ops::eval_qr; eval_qr(x.backend(), y.backend(), q.backend(), r.backend()); } +template +inline typename enable_if_c::value == number_kind_integer>::type + divide_qr(const mp_number& x, const multiprecision::detail::mp_exp& y, + mp_number& q, mp_number& r) +{ + divide_qr(x, mp_number(y), q, r); +} + +template +inline typename enable_if_c::value == number_kind_integer>::type + divide_qr(const multiprecision::detail::mp_exp& x, const mp_number& y, + mp_number& q, mp_number& r) +{ + divide_qr(mp_number(x), y, q, r); +} + +template +inline typename enable_if_c::value == number_kind_integer>::type + divide_qr(const multiprecision::detail::mp_exp& x, const multiprecision::detail::mp_exp& y, + mp_number& q, mp_number& r) +{ + divide_qr(mp_number(x), mp_number(y), q, r); +} + template -inline typename enable_if, Integer>::type integer_modulus(const mp_number& x, Integer val) +inline typename enable_if, mpl::bool_::value == number_kind_integer> >, Integer>::type + integer_modulus(const mp_number& x, Integer val) { using default_ops::eval_integer_modulus; return eval_integer_modulus(x.backend(), val); } +template +inline typename enable_if, mpl::bool_::result_type>::value == number_kind_integer> >, Integer>::type + integer_modulus(const multiprecision::detail::mp_exp& x, Integer val) +{ + typedef typename multiprecision::detail::mp_exp::result_type result_type; + return integer_modulus(result_type(x), val); +} + }} //namespaces #endif diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index 506e9022..d804df38 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -85,35 +85,81 @@ bool check_small_factors(const mp_number& n) return false; } - static const boost::uint32_t small_factors5[] = { - 101u, 103u, 107u, 109u }; - static const boost::uint32_t pp5 = 121330189u; + static const boost::uint32_t small_factors5[6][4] = { + { 101u, 103u, 107u, 109u }, + { 113u, 127u, 131u, 137u }, + { 139u, 149u, 151u, 157u }, + { 163u, 167u, 173u, 179u }, + { 181u, 191u, 193u, 197u }, + { 199u, 211u, 223u, 227u } + }; + static const boost::uint32_t pp5[6] = + { + 121330189u, + 113u * 127u * 131u * 137u, + 139u * 149u * 151u * 157u, + 163u * 167u * 173u * 179u, + 181u * 191u * 193u * 197u, + 199u * 211u * 223u * 227u + }; - m1 = integer_modulus(n, pp5); - - for(unsigned i = 0; i < sizeof(small_factors5) / sizeof(small_factors5[0]); ++i) + for(unsigned k = 0; k < sizeof(pp5) / sizeof(*pp5); ++k) { - BOOST_ASSERT(pp5 % small_factors5[i] == 0); - if(m1 % small_factors5[i] == 0) - return false; + m1 = integer_modulus(n, pp5[k]); + + for(unsigned i = 0; i < 4; ++i) + { + BOOST_ASSERT(pp5[k] % small_factors5[k][i] == 0); + if(m1 % small_factors5[k][i] == 0) + return false; + } } return true; } +inline bool is_small_prime(unsigned n) +{ + static const unsigned char p[] = + { + 3u, 5u, 7u, 11u, 13u, 17u, 19u, 23u, 29u, 31u, + 37u, 41u, 43u, 47u, 53u, 59u, 61u, 67u, 71u, 73u, + 79u, 83u, 89u, 97u, 101u, 103u, 107u, 109u, 113u, + 127u, 131u, 137u, 139u, 149u, 151u, 157u, 163u, + 167u, 173u, 179u, 181u, 191u, 193u, 197u, 199u, + 211u, 223u, 227u + }; + for(unsigned i = 0; i < sizeof(p) / sizeof(*p); ++i) + { + if(n == p[i]) + return true; + } + return false; +} + template -bool miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen) +typename enable_if_c::value == number_kind_integer, bool>::type + miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen) { typedef mp_number number_type; - if(n < 2) - return false; + if(n <= 227) + return is_small_prime(n.template convert_to()); if((n & 1) == 0) return false; if(!check_small_factors(n)) return false; - number_type q = (n - 1) >> 1; + number_type nm1 = n - 1; + // + // Begin with a single Fermat test - it excludes a lot of candidates: + // + number_type q(228), x, y; // We know n is greater than this, as we've excluded small factors + expmod(q, nm1, n, x); + if(x != 1u) + return false; + + q = (n - 1) >> 1; unsigned k = 1; while((q & 1) == 0) { @@ -122,14 +168,13 @@ bool miller_rabin_test(const mp_number& n, unsigne } // Declare our random number generator: boost::random::uniform_int_distribution dist(0, n); - number_type nm1 = n - 1; // // Execute the trials: // for(unsigned i = 0; i < trials; ++i) { - number_type x = dist(gen); - number_type y; + x = dist(gen); + y; expmod(x, q, n, y); unsigned j = 0; while(true) diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 5a948940..f40043b3 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -228,14 +228,14 @@ struct tommath_int d = v; return t.compare(d); } - mp_int& data() { return m_data; } - const mp_int& data()const { return m_data; } + ::mp_int& data() { return m_data; } + const ::mp_int& data()const { return m_data; } void swap(tommath_int& o) { mp_exch(&m_data, &o.data()); } protected: - mp_int m_data; + ::mp_int m_data; }; #define BOOST_MP_TOMMATH_BIT_OP_CHECK(x)\ @@ -478,9 +478,9 @@ using boost::multiprecision::backends::tommath_int; template<> struct number_category : public mpl::int_{}; -typedef mp_number mp_int; +typedef mp_number tom_int; typedef rational_adapter tommath_rational; -typedef mp_number mp_rational; +typedef mp_number tom_rational; }} // namespaces diff --git a/performance/miller_rabin_performance.cpp b/performance/miller_rabin_performance.cpp index 1fbed9b7..e0c32dc3 100644 --- a/performance/miller_rabin_performance.cpp +++ b/performance/miller_rabin_performance.cpp @@ -151,8 +151,8 @@ int main() std::cout << "Time for mpz_int (native Miller Rabin Test) = " << test_miller_rabin_gmp() << std::endl; #endif #ifdef TEST_TOMMATH - test_miller_rabin >("mp_int (no Expression templates)"); - test_miller_rabin("mp_int"); + test_miller_rabin >("tom_int (no Expression templates)"); + test_miller_rabin("tom_int"); #endif mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); mp_set_memory_functions(&alloc_func, &realloc_func, &free_func); diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 6fc2d9cf..da143eb9 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -601,18 +601,18 @@ int main() test("mpq_rational", 1024); #endif #ifdef TEST_TOMMATH - test("tommath_int", 128); - test("tommath_int", 256); - test("tommath_int", 512); - test("tommath_int", 1024); + test("tommath_int", 128); + test("tommath_int", 256); + test("tommath_int", 512); + test("tommath_int", 1024); /* // // These are actually too slow to test!!! // - test("mp_rational", 128); - test("mp_rational", 256); - test("mp_rational", 512); - test("mp_rational", 1024); + test("tom_rational", 128); + test("tom_rational", 256); + test("tom_rational", 512); + test("tom_rational", 1024); */ #endif #ifdef TEST_CPP_DEC_FLOAT diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 237760dd..62103ada 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -69,7 +69,7 @@ namespace boost{ namespace multiprecision{ #ifdef TEST_TOMMATH_BOOST_RATIONAL template<> -struct number_category > : public mpl::int_ {}; +struct number_category > : public mpl::int_ {}; #endif #ifdef TEST_MPZ_BOOST_RATIONAL template<> @@ -117,7 +117,7 @@ struct is_twos_complement_integer : public boost::mpl::true_ {}; #ifdef TEST_TOMMATH template <> -struct is_twos_complement_integer : public boost::mpl::false_ {}; +struct is_twos_complement_integer : public boost::mpl::false_ {}; #endif template @@ -362,6 +362,15 @@ void test_integer_ops(const boost::mpl::int_::is_signed) { @@ -1035,11 +1044,11 @@ int main() test(); #endif #ifdef TEST_TOMMATH - test(); + test(); test > >(); #endif #ifdef TEST_TOMMATH_BOOST_RATIONAL - test >(); + test >(); #endif #ifdef TEST_MPZ_BOOST_RATIONAL test >(); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 9fac176d..87c79ec7 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -120,7 +120,7 @@ int main() test_round_trip(); #endif #ifdef TEST_TOMMATH - test_round_trip(); + test_round_trip(); #endif #ifdef TEST_CPP_INT test_round_trip > >(); diff --git a/test/test_miller_rabin.cpp b/test/test_miller_rabin.cpp index 084d1ffb..d8f9f9a2 100644 --- a/test/test_miller_rabin.cpp +++ b/test/test_miller_rabin.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include #include "test.hpp" @@ -20,6 +21,7 @@ int main() // using namespace boost::random; using namespace boost::multiprecision; + independent_bits_engine gen; // // We must use a different generator for the tests and number generation, otherwise @@ -28,6 +30,16 @@ int main() // mt19937 gen2; + // + // Begin by testing the primes in our table as all these should return true: + // + for(unsigned i = 1; i < boost::math::max_prime; ++i) + { + BOOST_TEST(miller_rabin_test(mpz_int(boost::math::prime(i)), 25, gen)); + } + // + // Now test some random values and compare GMP's native routine with ours. + // for(unsigned i = 0; i < 10000; ++i) { mpz_int n = gen(); diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index bb2d64c6..73c1fe7f 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -220,7 +220,7 @@ int main() test(); #endif #ifdef TEST_TOMMATH - test(); + test(); #endif #ifdef TEST_CPP_INT test(); diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index 05c037c7..4d629fb7 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -130,8 +130,8 @@ int main() test_round_trip > >(); #endif #ifdef TEST_TOMMATH - test_round_trip >(); - test_round_trip(); + test_round_trip >(); + test_round_trip(); #endif return boost::report_errors(); } From 6ead74422337cb69c98b915a3f02bfb6688fd4dc Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 22 Mar 2012 11:54:15 +0000 Subject: [PATCH 140/256] Fix fixed precision ints to work with non obvious bit counts. [SVN r77473] --- include/boost/multiprecision/cpp_int.hpp | 5 +++++ test/test_arithmetic.cpp | 1 + test/test_numeric_limits.cpp | 21 ++++++++++++++++++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 65923f7a..77fca771 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -184,6 +184,7 @@ public: BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = MinBits / limb_bits + (MinBits % limb_bits ? 1 : 0)); BOOST_STATIC_CONSTANT(bool, variable = false); + BOOST_STATIC_CONSTANT(limb_type, upper_limb_mask = MinBits % limb_bits ? (limb_type(1) << (MinBits % limb_bits)) -1 : (~limb_type(0))); BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); private: @@ -216,7 +217,9 @@ public: void normalize() { limb_pointer p = limbs(); + p[internal_limb_count-1] &= upper_limb_mask; while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; + if((m_limbs == 1) && (!*p)) m_sign = false; // zero is always unsigned } cpp_int_base() : m_limbs(1), m_sign(false) @@ -280,6 +283,7 @@ public: BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = MinBits / limb_bits + (MinBits % limb_bits ? 1 : 0)); BOOST_STATIC_CONSTANT(bool, variable = false); + BOOST_STATIC_CONSTANT(limb_type, upper_limb_mask = MinBits % limb_bits ? (limb_type(1) << (MinBits % limb_bits)) -1 : (~limb_type(0))); BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); private: @@ -302,6 +306,7 @@ public: void normalize() { limb_pointer p = limbs(); + p[internal_limb_count-1] &= upper_limb_mask; while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 62103ada..eeb43056 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1059,6 +1059,7 @@ int main() test(); test(); test, false> >(); + test > >(); #endif #ifdef TEST_CPP_INT_BR test(); diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 73c1fe7f..da557a47 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -55,7 +55,7 @@ std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; template -void test_fp(const boost::mpl::int_&) +void test_specific(const boost::mpl::int_&) { Number minv, maxv; minv = (std::numeric_limits::min)(); @@ -116,8 +116,21 @@ void test_fp(const boost::mpl::int_ +void test_specific(const boost::mpl::int_&) +{ + if(std::numeric_limits::is_modulo) + { + if(!std::numeric_limits::is_signed) + { + BOOST_TEST(1 + (std::numeric_limits::max)() == 0); + BOOST_TEST(--Number(0) == (std::numeric_limits::max)()); + } + } +} + template -void test_fp(const T&) +void test_specific(const T&) { } @@ -181,7 +194,7 @@ void test() boost::mpl::int_<500> // not a number type >::type fp_test_type; - test_fp(fp_test_type()); + test_specific(fp_test_type()); } @@ -226,6 +239,8 @@ int main() test(); test(); test(); + test > >(); + test > >(); #endif return boost::report_errors(); } From f657a2fd592111a971acf0a2b08c70b1ad55b306 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 22 Mar 2012 13:27:12 +0000 Subject: [PATCH 141/256] Remove dead statement [SVN r77475] --- include/boost/multiprecision/miller_rabin.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index d804df38..1e6bbe98 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -174,7 +174,6 @@ typename enable_if_c::value == number_kind_integer, boo for(unsigned i = 0; i < trials; ++i) { x = dist(gen); - y; expmod(x, q, n, y); unsigned j = 0; while(true) From 366ec67ddc8775eb611bd3fdb3f460521bacd613 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 22 Mar 2012 17:32:43 +0000 Subject: [PATCH 142/256] Fix GCC Random number and Miller Rabin build errors. [SVN r77478] --- include/boost/multiprecision/random.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/boost/multiprecision/random.hpp b/include/boost/multiprecision/random.hpp index 4d82fedb..a76372a5 100644 --- a/include/boost/multiprecision/random.hpp +++ b/include/boost/multiprecision/random.hpp @@ -9,6 +9,20 @@ #define BOOST_MP_RANDOM_HPP #include + +namespace boost{ namespace random{ namespace detail{ +// +// This is a horrible hack: this declaration has to appear before the definition of +// uniform_int_distribution, otherwise it won't be used... +// Need to find a better solution, like make Boost.Random safe to use with +// UDT's and depricate/remove this header altogether. +// +template +boost::multiprecision::mp_number + generate_uniform_int(Engine& eng, const boost::multiprecision::mp_number& min_value, const boost::multiprecision::mp_number& max_value); + +}}} + #include #include From 4c6065717b9f4d3b9318322d4540a1edad2763c2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 27 Mar 2012 11:45:01 +0000 Subject: [PATCH 143/256] Add a few more integer specific bit-fiddling functions. Fix some bugs in cpp_int left shift code. Document some missing backend API's, and update docs. [SVN r77583] --- doc/html/boost_multiprecision/intro.html | 2 +- doc/html/boost_multiprecision/map.html | 2 +- doc/html/boost_multiprecision/map/hist.html | 2 +- doc/html/boost_multiprecision/map/todo.html | 14 +- doc/html/boost_multiprecision/perf.html | 2 +- .../perf/float_performance.html | 2 +- .../perf/int_real_world.html | 2 +- .../perf/integer_performance.html | 2 +- .../perf/rational_performance.html | 2 +- .../boost_multiprecision/perf/realworld.html | 2 +- doc/html/boost_multiprecision/ref.html | 2 +- .../boost_multiprecision/ref/backendconc.html | 126 ++++++++++++++++-- .../boost_multiprecision/ref/mp_number.html | 44 +++++- doc/html/boost_multiprecision/tut.html | 2 +- doc/html/boost_multiprecision/tut/ints.html | 2 +- .../boost_multiprecision/tut/primetest.html | 2 +- doc/html/boost_multiprecision/tut/random.html | 2 +- .../boost_multiprecision/tut/rational.html | 2 +- doc/html/boost_multiprecision/tut/reals.html | 2 +- doc/html/index.html | 9 +- doc/multiprecision.qbk | 54 +++++++- include/boost/multiprecision/cpp_int.hpp | 74 +++++++++- .../multiprecision/detail/default_ops.hpp | 65 +++++++++ include/boost/multiprecision/gmp.hpp | 25 ++++ include/boost/multiprecision/integer_ops.hpp | 63 +++++++++ include/boost/multiprecision/tommath.hpp | 5 + test/test_arithmetic.cpp | 14 ++ test/test_cpp_int.cpp | 9 ++ 28 files changed, 494 insertions(+), 40 deletions(-) diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 25367098..9c1f2b6f 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -492,7 +492,7 @@ -
    -
    -
    -
    -
    - + + + + + + + + - - - - - - - -
    -
    -
    -
    -+ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -809,7 +1098,13 @@ + @@ -828,7 +1123,13 @@

    Assigns to b the two components in the following arguments. Only applies to rational - and complex number types. + and complex number types. When not provided, arithmetic operations + are used to synthesise the result from the two values. +

    + + @@ -847,9 +1148,324 @@

    Assigns to b the two components in the following arguments. Only applies to rational - and complex number types. + and complex number types. When not provided, arithmetic operations + are used to synthesise the result from the two values.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1040,70 +1509,14 @@ - - - - - - - - - - - - - - @@ -1124,165 +1537,13 @@

    Add cb to a and stores the result in b. The type of a shall be listed in one of the type lists B::signed_types, B::unsigned_types - or B::float_types. -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1305,7 +1566,99 @@ b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_add(b, cb, a). +

    + + + + + + + + + + + + + + + + + + + + @@ -1329,7 +1682,99 @@ result in b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_subtract(b, cb, a); b.negate();. +

    + + + + + + + + + + + + + + + + + + + + @@ -1353,7 +1798,104 @@ result in b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_multiply(b, cb, a). +

    + + + + + + + + + + + + + + + + + + + + @@ -1376,7 +1918,137 @@ b. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_divide(b, B(a), cb). +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1401,76 +2073,13 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    - - - - - - - - - - - - - - - @@ -1495,7 +2104,97 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_modulus(b, B(a), cb). +

    + + + + + + + + + + + + + + + + + + + + @@ -1518,7 +2217,97 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_bitwise_and(b, cb, a). +

    + + + + + + + + + + + + + + + + + + + + @@ -1541,7 +2330,97 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_bitwise_or(b, cb, a). +

    + + + + + + + + + + + + + + + + + + + + @@ -1564,7 +2443,13 @@ when B is an integer type. The type of a shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_bitwise_xor(b, cb, a). +

    + + @@ -1585,7 +2470,13 @@ ui and stores the result in b, only required when B is an integer - type. + type. When not provided, does the equivalent of b + = cb; eval_left_shift(b, a);. +

    + + @@ -1606,517 +2497,13 @@ ui and stores the result in b, only required when B is an integer - type. + type. When not provided, does the equivalent of b + = cb; eval_right_shift(b, a);.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2141,7 +2528,13 @@ cb2 and b2 to the result of cb % cb2. Only required when B is an integer - type. + type. The default version of this function is synthesised from + other operations above. +

    + + @@ -2161,7 +2554,13 @@ Returns the result of cb % ui. Only required when B - is an integer type. + is an integer type. The default version of this function is synthesised + from other operations above. +

    + + @@ -2180,7 +2579,13 @@

    Returns the index of the least significant bit that is set. Only required when B - is an integer type. + is an integer type. The default version of this function is synthesised + from other operations above. +

    + + @@ -2201,7 +2606,13 @@ Returns true if cb has bit ui set. Only required when B - is an integer type. + is an integer type. The default version of this function is synthesised + from other operations above. +

    + + @@ -2222,7 +2633,13 @@ Sets the bit at index ui in b. Only required when B is an integer - type. + type. The default version of this function is synthesised from + other operations above. +

    + + @@ -2242,7 +2659,13 @@ Unsets the bit at index ui in b. Only required when B is an integer - type. + type. The default version of this function is synthesised from + other operations above. +

    + + @@ -2263,7 +2686,13 @@ Flips the bit at index ui in b. Only required when B is an integer - type. + type. The default version of this function is synthesised from + other operations above. +

    + + @@ -2286,7 +2715,13 @@ common divisor of cb and cb2. Only required when B is an integer - type. + type. The default version of this function is synthesised from + other operations above. +

    + + @@ -2309,7 +2744,836 @@ common multiple of cb and cb2. Only required when B is an integer - type. + type. The default version of this function is synthesised from + other operations above. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2317,8 +3581,8 @@
    - + + + + + + + + + + + + + + +
    +

    + eval_qr(cb, + cb2, + b, + b2) +

    +
    +

    + void +

    +
    +

    + Sets b to the result + of cb / + cb2 and b2 to the result of cb % + cb2. Only required when + B is an integer + type. +

    +
    +

    + eval_integer_modulus(cb, ui) +

    +
    +

    + unsigned +

    +
    +

    + Returns the result of cb + % ui. + Only required when B + is an integer type. +

    +
    +

    + eval_lsb(cb) +

    +
    +

    + unsigned +

    +
    +

    + Returns the index of the least significant bit that is set. + Only required + when B is an + integer type.]] [[eval_bit_test(cb, + ui)][bool][Returns + true if + cb has bit ui set. Only + required when + B is an + integer type.]] [[eval_bit_set(b, + ui)][void][Sets + the bit + at index + ui in b. Only + required when + B is an + integer type.]] [[eval_bit_unset(b, + ui)][void][Unsets + the bit + at index + ui in b. Only + required when + B is an + integer type.]] [[eval_bit_flip(b, + ui)][void][Flips + the bit + at index + ui in b. Only + required when + B is an + integer type.]] [[eval_gcd(b, + cb, cb2)][void][Sets + b to the + greatest common + divisor of + cb and cb2. Only + required when + B is an + integer type.]] [[eval_lcm(b, + cb, cb2)][void][Sets + b to the + least common + multiple of + cb and cb2. Only + required when + B` is an integer type. +

    +
    @@ -2085,7 +2195,7 @@ -+ + @@ -92,6 +106,11 @@ shall terminate in the type that is std::intmax_t.

    + + + + @@ -161,6 +196,11 @@ Default constructor.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    - @@ -166,7 +166,7 @@ diff --git a/doc/html/boost_multiprecision/ref/mpf_ref.html b/doc/html/boost_multiprecision/ref/mpf_ref.html index 1eb8aad6..02f8e03b 100644 --- a/doc/html/boost_multiprecision/ref/mpf_ref.html +++ b/doc/html/boost_multiprecision/ref/mpf_ref.html @@ -22,11 +22,11 @@ template<unsignedDigits10>classgmp_float; -typedefmp_number<gmp_float<50>>mpf_float_50; -typedefmp_number<gmp_float<100>>mpf_float_100; -typedefmp_number<gmp_float<500>>mpf_float_500; -typedefmp_number<gmp_float<1000>>mpf_float_1000; -typedefmp_number<gmp_float<0>>mpf_float; +typedefnumber<gmp_float<50>>mpf_float_50; +typedefnumber<gmp_float<100>>mpf_float_100; +typedefnumber<gmp_float<500>>mpf_float_500; +typedefnumber<gmp_float<1000>>mpf_float_1000; +typedefnumber<gmp_float<0>>mpf_float;}}// namespaces @@ -40,7 +40,7 @@ The class takes a single template parameter - Digits10 - which is the number of decimal digits precision the type should support. When this parameter is zero, then the precision can be set at runtime via - mp_number::default_precision and mp_number::precision. + number::default_precision and number::precision. Note that this type does not in any way change the GMP library's global state (for example it does not change the default precision of the mpf_t data type), therefore you can safely mix this type with existing code that uses GMP, diff --git a/doc/html/boost_multiprecision/ref/mpfr_ref.html b/doc/html/boost_multiprecision/ref/mpfr_ref.html index a60f9563..a5e0ba30 100644 --- a/doc/html/boost_multiprecision/ref/mpfr_ref.html +++ b/doc/html/boost_multiprecision/ref/mpfr_ref.html @@ -22,11 +22,11 @@ template<unsignedDigits10>classmpfr_float_backend; -typedefmp_number<mpfr_float_backend<50>>mpfr_float_50; -typedefmp_number<mpfr_float_backend<100>>mpfr_float_100; -typedefmp_number<mpfr_float_backend<500>>mpfr_float_500; -typedefmp_number<mpfr_float_backend<1000>>mpfr_float_1000; -typedefmp_number<mpfr_float_backend<0>>mpfr_float; +typedefnumber<mpfr_float_backend<50>>mpfr_float_50; +typedefnumber<mpfr_float_backend<100>>mpfr_float_100; +typedefnumber<mpfr_float_backend<500>>mpfr_float_500; +typedefnumber<mpfr_float_backend<1000>>mpfr_float_1000; +typedefnumber<mpfr_float_backend<0>>mpfr_float;}}// namespaces @@ -40,7 +40,7 @@ The class takes a single template parameter - Digits10 - which is the number of decimal digits precision the type should support. When this parameter is zero, then the precision can be set at runtime via - mp_number::default_precision and mp_number::precision. + number::default_precision and number::precision. Note that this type does not in any way change the GMP or MPFR library's global state (for example it does not change the default precision of the mpfr_t data type), therefore you can safely mix this type with existing code diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/number.html similarity index 67% rename from doc/html/boost_multiprecision/ref/mp_number.html rename to doc/html/boost_multiprecision/ref/number.html index 5f2605b4..bf6d8b24 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -1,7 +1,7 @@ -mp_number +number @@ -13,44 +13,44 @@
    PrevUpHomeNext
    -
    +
    - - Synopsis + + Synopsis
    namespace boost{ namespace multiprecision{
     
     template <class Backend, bool ExpressionTemplates = true>
    -class mp_number
    +class number
     {
    -   mp_number();
    -   mp_number(see-below);
    -   mp_number& operator=(see-below);
    +   number();
    +   number(see-below);
    +   number& operator=(see-below);
     
        // Member operators
    -   mp_number& operator+=(const see-below&);
    -   mp_number& operator-=(const see-below&);
    -   mp_number& operator*=(const see-below&);
    -   mp_number& operator/=(const see-below&);
    -   mp_number& operator++();
    -   mp_number& operator--();
    -   mp_number  operator++(int);
    -   mp_number  operator--(int);
    +   number& operator+=(const see-below&);
    +   number& operator-=(const see-below&);
    +   number& operator*=(const see-below&);
    +   number& operator/=(const see-below&);
    +   number& operator++();
    +   number& operator--();
    +   number  operator++(int);
    +   number  operator--(int);
     
    -   mp_number& operator%=(const see-below&);
    -   mp_number& operator&=(const see-below&);
    -   mp_number& operator|=(const see-below&);
    -   mp_number& operator^=(const see-below&);
    -   mp_number& operator<<=(const integer-type&);
    -   mp_number& operator>>=(const integer-type&);
    +   number& operator%=(const see-below&);
    +   number& operator&=(const see-below&);
    +   number& operator|=(const see-below&);
    +   number& operator^=(const see-below&);
    +   number& operator<<=(const integer-type&);
    +   number& operator>>=(const integer-type&);
     
        // Use in Boolean context:
        operator convertible-to-bool-type()const;
        // swap:
    -   void swap(mp_number& other);
    +   void swap(number& other);
        // Sign:
        bool is_zero()const;
        int sign()const;
    @@ -59,13 +59,15 @@
        // Generic conversion mechanism
        template <class T>
        T convert_to()const;
    +   template <class T>
    +   explicit operator T ()const;
        // precision control:
        static unsigned default_precision();
        static void default_precision(unsigned digits10);
        unsigned precision()const;
        void precision(unsigned digits10);
        // Comparison:
    -   int compare(const mp_number<Backend>& o)const;
    +   int compare(const number<Backend>& o)const;
        template <class V>
        typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
        // Access to the underlying implementation:
    @@ -97,47 +99,47 @@
     
     // Swap:
     template <class Backend, bool ExpressionTemplates>
    -void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    +void swap(number<Backend, ExpressionTemplates>& a, number<Backend, ExpressionTemplates>& b);
     
     // iostream support:
     template <class Backend, bool ExpressionTemplates>
    -std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    +std::ostream& operator << (std::ostream& os, const number<Backend, ExpressionTemplates>& r);
     std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
     template <class Backend, bool ExpressionTemplates>
    -std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r);
    +std::istream& operator >> (std::istream& is, number<Backend, ExpressionTemplates>& r);
     
     // Non-member function standard library support:
    -unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    abs    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    fabs   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    sqrt   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    floor  (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    ceil   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    trunc  (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    itrunc (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    ltrunc (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    lltrunc(const number-or-expression-template-type&);
    +unmentionable-expression-template-type    round  (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    iround (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    lround (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    llround(const number-or-expression-template-type&);
    +unmentionable-expression-template-type    exp    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    log    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    log10    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    cos    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    sin    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    tan    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    acos   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    asin   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    cosh   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    sinh   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    tanh   (const number-or-expression-template-type&);
     
    -unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    -unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    -unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ldexp (const number-or-expression-template-type&, int);
    +unmentionable-expression-template-type    frexp (const number-or-expression-template-type&, int*);
    +unmentionable-expression-template-type    pow   (const number-or-expression-template-type&, const number-or-expression-template-type&);
    +unmentionable-expression-template-type    fmod  (const number-or-expression-template-type&, const number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan2 (const number-or-expression-template-type&, const number-or-expression-template-type&);
     
     // Traits support:
     template <class T>
    @@ -146,40 +148,40 @@
     struct number_category;
     
     // Integer specific functions:
    -unmentionable-expression-template-type    pow(const mp_number-or-expression-template-type&, unsigned);
    -unmentionable-expression-template-type    powm(const mp_number-or-expression-template-type& b, const mp_number-or-expression-template-type& p, const mp_number-or-expression-template-type& m);
    +unmentionable-expression-template-type    pow(const number-or-expression-template-type&, unsigned);
    +unmentionable-expression-template-type    powm(const number-or-expression-template-type& b, const number-or-expression-template-type& p, const number-or-expression-template-type& m);
     template <class Backend, bool ExpressionTemplates>
    -void divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    -               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    +void divide_qr(const number-or-expression-template-type& x, const number-or-expression-template-type& y,
    +               number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r);
     template <class Integer>
    -Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    -unsigned lsb(const mp_number-or-expression-template-type& x);
    +Integer integer_modulus(const number-or-expression-template-type& x, Integer val);
    +unsigned lsb(const number-or-expression-template-type& x);
     template <class Backend, class ExpressionTemplates>
    -bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +bool bit_test(const number<Backend, ExpressionTemplates>& val, unsigned index);
     template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +number<Backend, ExpressionTemplates>& bit_set(number<Backend, ExpressionTemplates>& val, unsigned index);
     template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +number<Backend, ExpressionTemplates>& bit_unset(number<Backend, ExpressionTemplates>& val, unsigned index);
     template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +number<Backend, ExpressionTemplates>& bit_flip(number<Backend, ExpressionTemplates>& val, unsigned index);
     template <class Engine>
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    +bool miller_rabin_test(const number-or-expression-template-type& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const number-or-expression-template-type& n, unsigned trials);
     
     // Rational number support:
    -typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    -typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    +typename component_type<number-or-expression-template-type>::type numerator  (const number-or-expression-template-type&);
    +typename component_type<number-or-expression-template-type>::type denominator(const number-or-expression-template-type&);
     
     }} // namespaces
     
     namespace boost{ namespace math{
     
     // Boost.Math interoperability functions:
    -int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
    -bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
    -bool                                             isnan          (const mp_number-or-expression-template-type&, int);
    -bool                                             isinf          (const mp_number-or-expression-template-type&, int);
    -bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
    +int                                              fpclassify     (const number-or-expression-template-type&, int);
    +bool                                             isfinite       (const number-or-expression-template-type&, int);
    +bool                                             isnan          (const number-or-expression-template-type&, int);
    +bool                                             isinf          (const number-or-expression-template-type&, int);
    +bool                                             isnormal       (const number-or-expression-template-type&, int);
     
     }} // namespaces
     
    @@ -195,14 +197,14 @@
     }
     
    - - Description + + Description
    template <class Backend, bool ExpressionTemplates = true>
    -class mp_number;
    +class number;
     

    - Class mp_number has two template + Class number has two template arguments:

    @@ -219,13 +221,13 @@

    -
    mp_number();
    -mp_number(see-below);
    -mp_number& operator=(see-below);
    +
    number();
    +number(see-below);
    +number& operator=(see-below);
     

    - Type mp_number is default - constructible, and both copy constructible and assignable from: + Type number is default constructible, + and both copy constructible and assignable from:

    • @@ -245,7 +247,7 @@ Any type that the Backend is constructible or assignable from.
    • - An rvalue reference to another mp_number. + An rvalue reference to another number. Move-semantics are used for construction if the backend also supports rvalue reference construction. In the case of assignment, move semantics are always supported when the argument is an rvalue reference irrespective @@ -256,27 +258,27 @@ In addition, if the type has multiple components (for example rational or complex number types), then there is a two argument constructor:

      -
      mp_number(arg1, arg2);
      +
      number(arg1, arg2);
       

      Where the two args must either be arithmetic types, or types that are convertible to the two components of this.

      -
      mp_number& operator+=(const see-below&);
      -mp_number& operator-=(const see-below&);
      -mp_number& operator*=(const see-below&);
      -mp_number& operator/=(const see-below&);
      -mp_number& operator++();
      -mp_number& operator--();
      -mp_number  operator++(int);
      -mp_number  operator--(int);
      +
      number& operator+=(const see-below&);
      +number& operator-=(const see-below&);
      +number& operator*=(const see-below&);
      +number& operator/=(const see-below&);
      +number& operator++();
      +number& operator--();
      +number  operator++(int);
      +number  operator--(int);
       // Integer only operations:
      -mp_number& operator%=(const see-below&);
      -mp_number& operator&=(const see-below&);
      -mp_number& operator|=(const see-below&);
      -mp_number& operator^=(const see-below&);
      -mp_number& operator<<=(const integer-type&);
      -mp_number& operator>>=(const integer-type&);
      +number& operator%=(const see-below&);
      +number& operator&=(const see-below&);
      +number& operator|=(const see-below&);
      +number& operator^=(const see-below&);
      +number& operator<<=(const integer-type&);
      +number& operator>>=(const integer-type&);
       

      These operators all take their usual arithmetic meanings. @@ -286,14 +288,14 @@

      • - Another mp_number<Backend, + Another number<Backend, ExpressionTemplates>.
      • A builtin arithmetic type.
      • - An expression template derived from mp_number<Backend>. + An expression template derived from number<Backend>.

      @@ -303,24 +305,24 @@

      Note that all the types involved in the expression must evaluate to the same - type - which is to say we cannot mix an mp_number<B1> with an mp_number<B2> where B1 and B2 are different types. + type - which is to say we cannot mix a number<B1> with a number<B2> where B1 and B2 are different types.

      operator convertible-to-bool-type()const;
       

      Returns an unmentionable-type that is usable in Boolean - contexts (this allows mp_number + contexts (this allows number to be used in any Boolean context - if statements, conditional statements, - or as an argument to a logical operator - without type mp_number + or as an argument to a logical operator - without type number being convertible to type bool.

      - This operator also enables the use of mp_number + This operator also enables the use of number with any of the following operators: !, ||, && and ?:.

      -
      void swap(mp_number& other);
      +
      void swap(number& other);
       

      Swaps *this @@ -348,6 +350,9 @@

      template <class T>
       T convert_to()const;
      +
      +template <class T>
      +explicit operator T ()const;
       

      Provides a generic conversion mechanism to convert *this to type T. @@ -365,7 +370,7 @@ the precision of *this respectively.

      -
      int compare(const mp_number<Backend, ExpressionTemplates>& o)const;
      +
      int compare(const number<Backend, ExpressionTemplates>& o)const;
       template <class V>
       typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
       
      @@ -391,8 +396,8 @@ Returns the underlying back-end instance used by *this.

      - - Non-member + + Non-member operators
      // Non member operators:
      @@ -425,10 +430,10 @@
             

      • - An mp_number. + A number.
      • - An expression template type derived from mp_number. + An expression template type derived from number.

      @@ -444,7 +449,7 @@ true.

    • - Type mp_number<Backend, + Type number<Backend, false> when ExpressionTemplates is false. @@ -456,7 +461,7 @@

    Note that all the types involved in the expression must evaluate to the same - type - which is to say we cannot mix an mp_number<B1> with an mp_number<B2> where B1 and B2 are different types. + type - which is to say we cannot mix a number<B1> with a number<B2> where B1 and B2 are different types.

    Finally note that the second argument to the left and right shift operations @@ -465,29 +470,29 @@ being thrown).

    - - swap + + swap
    template <class Backend, ExpressionTemplates>
    -void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    +void swap(number<Backend, ExpressionTemplates>& a, number<Backend, ExpressionTemplates>& b);
     

    Swaps a and b.

    - - Iostream + + Iostream Support
    template <class Backend, bool ExpressionTemplates>
    -std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    +std::ostream& operator << (std::ostream& os, const number<Backend, ExpressionTemplates>& r);
     template <class Unspecified...>
     std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
     template <class Backend, bool ExpressionTemplates>
    -inline std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r)
    +inline std::istream& operator >> (std::istream& is, number<Backend, ExpressionTemplates>& r)
     

    - These operators provided formatted input-output operations on mp_number types, and expression templates + These operators provided formatted input-output operations on number types, and expression templates derived from them.

    @@ -496,46 +501,46 @@ flags, field width and precision settings.

    - - Non-member + + Non-member standard library function support
    -
    unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    +
    unmentionable-expression-template-type    abs    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    fabs   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    sqrt   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    floor  (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    ceil   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    trunc  (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    itrunc (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    ltrunc (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    lltrunc(const number-or-expression-template-type&);
    +unmentionable-expression-template-type    round  (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    iround (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    lround (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    llround(const number-or-expression-template-type&);
    +unmentionable-expression-template-type    exp    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    log    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    log10    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    cos    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    sin    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    tan    (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    acos   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    asin   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    cosh   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    sinh   (const number-or-expression-template-type&);
    +unmentionable-expression-template-type    tanh   (const number-or-expression-template-type&);
     
    -unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    -unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    -unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ldexp (const number-or-expression-template-type&, int);
    +unmentionable-expression-template-type    frexp (const number-or-expression-template-type&, int*);
    +unmentionable-expression-template-type    pow   (const number-or-expression-template-type&, const number-or-expression-template-type&);
    +unmentionable-expression-template-type    fmod  (const number-or-expression-template-type&, const number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan2 (const number-or-expression-template-type&, const number-or-expression-template-type&);
     

    These functions all behave exactly as their standard library counterparts - do: their argument is either an instance of mp_number - or an expression template derived from it; If the argument is of type mp_number<Backend, false> + do: their argument is either an instance of number + or an expression template derived from it; If the argument is of type number<Backend, false> then that is also the return type, otherwise the return type is an expression template.

    @@ -555,9 +560,9 @@ types).

    - - Traits - Class Support + + Traits Class + Support
    template <class T>
     struct component_type;
    @@ -579,10 +584,11 @@
             number_kind_fixed_point.
           

    - - Integer functions + + Integer + functions
    -
    unmentionable-expression-template-type    pow(const mp_number-or-expression-template-type& b, unsigned p);
    +
    unmentionable-expression-template-type    pow(const number-or-expression-template-type& b, unsigned p);
     

    Returns bp as an expression template. Note that this @@ -590,14 +596,14 @@ as to take "effectively forever" to compute, or else simply run the host machine out of memory.

    -
    unmentionable-expression-template-type    powm(const mp_number-or-expression-template-type& b, const mp_number-or-expression-template-type& p, const mp_number-or-expression-template-type& m);
    +
    unmentionable-expression-template-type    powm(const number-or-expression-template-type& b, const number-or-expression-template-type& p, const number-or-expression-template-type& m);
     

    Returns bp mod m as an expression template.

    template <class Backend, bool ExpressionTemplates>
    -bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    -               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    +bool divide_qr(const number-or-expression-template-type& x, const number-or-expression-template-type& y,
    +               number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r);
     

    Divides x by y and returns both the quotient and remainder. After the call @@ -606,48 +612,48 @@ = x % y.

    template <class Integer>
    -Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    +Integer integer_modulus(const number-or-expression-template-type& x, Integer val);
     

    Returns the absolute value of x % val.

    -
    unsigned lsb(const mp_number-or-expression-template-type& x);
    +
    unsigned lsb(const number-or-expression-template-type& x);
     

    Returns the index of the least significant bit that is set to 1.

    template <class Backend, class ExpressionTemplates>
    -bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +bool bit_test(const number<Backend, ExpressionTemplates>& val, unsigned index);
     

    Returns true if the bit at index in val is set.

    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +number<Backend, ExpressionTemplates>& bit_set(number<Backend, ExpressionTemplates>& val, unsigned index);
     

    Sets the bit at index in val, and returns val.

    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +number<Backend, ExpressionTemplates>& bit_unset(number<Backend, ExpressionTemplates>& val, unsigned index);
     

    Unsets the bit at index in val, and returns val.

    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +number<Backend, ExpressionTemplates>& bit_flip(number<Backend, ExpressionTemplates>& val, unsigned index);
     

    Flips the bit at index in val, and returns val.

    template <class Engine>
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    +bool miller_rabin_test(const number-or-expression-template-type& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const number-or-expression-template-type& n, unsigned trials);
     

    Tests to see if the number n is probably prime - the @@ -659,29 +665,29 @@ composite less than 0.25^trials.

    - - Rational + + Rational Number Functions
    -
    typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    -typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    +
    typename component_type<number-or-expression-template-type>::type numerator  (const number-or-expression-template-type&);
    +typename component_type<number-or-expression-template-type>::type denominator(const number-or-expression-template-type&);
     

    These functions return the numerator and denominator of a rational number respectively.

    - - Boost.Math + + Boost.Math Interoperability Support
    namespace boost{ namespace math{
     
    -int  fpclassify     (const mp_number-or-expression-template-type&, int);
    -bool isfinite       (const mp_number-or-expression-template-type&, int);
    -bool isnan          (const mp_number-or-expression-template-type&, int);
    -bool isinf          (const mp_number-or-expression-template-type&, int);
    -bool isnormal       (const mp_number-or-expression-template-type&, int);
    +int  fpclassify     (const number-or-expression-template-type&, int);
    +bool isfinite       (const number-or-expression-template-type&, int);
    +bool isnan          (const number-or-expression-template-type&, int);
    +bool isinf          (const number-or-expression-template-type&, int);
    +bool isnormal       (const number-or-expression-template-type&, int);
     
     }} // namespaces
     
    @@ -694,8 +700,8 @@ to ensure interoperability.

    - - std::numeric_limits + + std::numeric_limits support
    namespace std{
    @@ -710,7 +716,7 @@
     

    Class template std::numeric_limits is specialized for all instantiations - of mp_number whose precision + of number whose precision is known at compile time, plus those types whose precision is unlimited (though it is much less useful in those cases). It is not specialized for types whose precision can vary at compile time (such as mpf_float). diff --git a/doc/html/boost_multiprecision/ref/tom_int_ref.html b/doc/html/boost_multiprecision/ref/tom_int_ref.html index c95e2112..5d7cf7bd 100644 --- a/doc/html/boost_multiprecision/ref/tom_int_ref.html +++ b/doc/html/boost_multiprecision/ref/tom_int_ref.html @@ -21,7 +21,7 @@ class tommath_int; -typedef mp_number<tommath_int > tom_int; +typedef number<tommath_int > tom_int; }} // namespaces

    diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html index 81632bc8..c288abe4 100644 --- a/doc/html/boost_multiprecision/tut/conversions.html +++ b/doc/html/boost_multiprecision/tut/conversions.html @@ -19,7 +19,7 @@ Interconverting Between Number Types

    - All of the number types that are based on mp_number + All of the number types that are based on number have certain conversion rules in common. In particular:

    • @@ -29,6 +29,27 @@
      cpp_dec_float_50 df(0.5); // OK construction from double
       cpp_int          i(450);  // OK constructs from signed int
       
      +
      • + A number can be converted + to any built in type, via the convert_to + member function: +
      +
      mpz_int z(2);
      +int i = z.template convert_to<int>(); // sets i to 2
      +
      +

      + Additional conversions may be supported by particular backends. +

      +
      • + A number can be converted + to any built in type, via an explicit conversion operator: this functionality + is only available on compilers supporting C++11's explicit conversion + syntax. +
      +
      mpz_int z(2);
      +int i = z;  // Error, implicit conversion not allowed.
      +int j = static_cast<int>(z);  // OK explicit conversion.
      +
      • Any number type can be constructed (or assigned) from a const char* or a std::string:
      @@ -93,17 +114,6 @@ More information on what additional types a backend supports conversions from are given in the tutorial for each backend.

      -
      • - An mp_number can be converted - to any built in type, via the convert_to - member function: -
      -
      mpz_int z(2);
      -int i = z.template convert_to<int>(); // sets i to 2
      -
      -

      - Additional conversions may be supported by particular backends. -

    - diff --git a/doc/html/index.html b/doc/html/index.html index 4e0ab81c..55b45c32 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -118,7 +118,7 @@
    -
    -
    -
    - @@ -758,7 +758,7 @@ @@ -2128,52 +2128,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index 2a8ca1b3..f3c1ecf5 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -206,7 +206,7 @@
    Backend

    - The actual arithmetic backend that does all the work. + The actual arithmetic back-end that does all the work.

    ExpressionTemplates

    @@ -373,7 +373,7 @@ const Backend& backend()const;

    - Returns the underlying backend instance used by *this. + Returns the underlying back-end instance used by *this.

    @@ -470,8 +470,8 @@ derived from them.

    - It's down to the backend type to actually implement string conversion. However, - the backends provided with this library support all of the iostream formatting + It's down to the back-end type to actually implement string conversion. However, + the back-ends provided with this library support all of the iostream formatting flags, field width and precision settings.

    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index 94671163..ea39c242 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -26,7 +26,7 @@

    In order to use this library you need to make two choices: what kind of number - do I want, and which backend do I want to perform the actual arithmetic? + do I want, and which back-end do I want to perform the actual arithmetic?

    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + cpp_int +

    +
    +

    + 1.3612(0.465547s) +

    +
    +

    + cpp_int (no Expression templates) +

    +
    +

    + 1.33286(0.455854s) +

    +
    +

    + cpp_int (64-bit cache) +

    +
    +

    + 1.33134(0.455333s) +

    +
    +

    + cpp_int (256-bit cache) +

    +
    +

    + 1.29367(0.442451s) +

    +
    +

    + cpp_int (512-bit cache) +

    +
    +

    + 1.08821(0.37218s) +

    +
    +

    + cpp_int (1024-bit cache) +

    +
    +

    + 1.07902(0.369037s) +

    +
    +

    + mp_int1024_t +

    +
    +

    + 1.02616(0.35096s) +

    +
    +

    + mp_int1024_t (no Expression templates) +

    +
    +

    + 1(0.342011s) +

    +
    +

    + tom_int +

    +
    +

    + 3.74233(1.27992s) +

    +
    +

    + tom_int (no Expression templates) +

    +
    +

    + 3.97646(1.35999s) +

    +
    -

    - [[cpp_int][1.3612(0.465547s)]] [[cpp_int (no Expression templates)][1.33286(0.455854s)]] - [[cpp_int (64-bit cache)][1.33134(0.455333s)]] [[cpp_int (256-bit cache)][1.29367(0.442451s)]] - [[cpp_int (512-bit cache)][1.08821(0.37218s)]] [[cpp_int (1024-bit cache)][1.07902(0.369037s)]] - [[mp_int1024_t][1.02616(0.35096s)]] [[mp_int1024_t (no Expression templates)][1(0.342011s)]] - [[tom_int][3.74233(1.27992s)]] [[tom_int (no Expression templates)][3.97646(1.35999s)]] - ] -

    It's interesting to note that expression templates have little effect here - perhaps because the actual expressions involved are relatively trivial diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html index 23fdd44c..6ad820a4 100644 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -21,7 +21,7 @@

    Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticsm, and real-world + results should be taken with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html index eab8d539..6754381e 100644 --- a/doc/html/boost_multiprecision/perf/rational_performance.html +++ b/doc/html/boost_multiprecision/perf/rational_performance.html @@ -21,7 +21,7 @@

    Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticsm, and real-world + results should be taken with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html index 9137d2d1..4dd0d5ef 100644 --- a/doc/html/boost_multiprecision/perf/realworld.html +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -23,7 +23,7 @@ cases for these functions. In each case the best performing library gets a relative score of 1, with the total execution time given in brackets. The first three libraries listed are the various floating point types provided - by this library, while for comparison, two popular C++ frontends to MPFR ( mpfr_class + by this library, while for comparison, two popular C++ front-ends to MPFR ( mpfr_class and mpreal) are also shown.

    diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index c5507f4e..e56abc3b 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -740,7 +740,7 @@

    - Copy constructor from a different backend type. + Copy constructor from a different back-end type.

    - Assignment operator from a different backend type. + Assignment operator from a different back-end type.

    - Returns the index of the least significant bit that is set. - Only required - when B is an - integer type.]] [[eval_bit_test(cb, - ui)][bool][Returns - true if - cb has bit ui set. Only - required when - B is an - integer type.]] [[eval_bit_set(b, - ui)][void][Sets - the bit - at index - ui in b. Only - required when - B is an - integer type.]] [[eval_bit_unset(b, - ui)][void][Unsets - the bit - at index - ui in b. Only - required when - B is an - integer type.]] [[eval_bit_flip(b, - ui)][void][Flips - the bit - at index - ui in b. Only - required when - B is an - integer type.]] [[eval_gcd(b, - cb, cb2)][void][Sets - b to the - greatest common - divisor of - cb and cb2. Only - required when - B is an - integer type.]] [[eval_lcm(b, - cb, cb2)][void][Sets - b to the - least common - multiple of - cb and cb2. Only - required when - B` is an integer type. + Returns the index of the least significant bit that is set. Only + required when B + is an integer type. +

    +
    +

    + eval_bit_test(cb, + ui) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb + has bit ui set. + Only required when B + is an integer type. +

    +
    +

    + eval_bit_set(b, + ui) +

    +
    +

    + void +

    +
    +

    + Sets the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_bit_unset(b, ui) +

    +
    +

    + void +

    +
    +

    + Unsets the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_bit_flip(b, + ui) +

    +
    +

    + void +

    +
    +

    + Flips the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_gcd(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Sets b to the greatest + common divisor of cb + and cb2. Only required + when B is an integer + type. +

    +
    +

    + eval_lcm(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Sets b to the least + common multiple of cb + and cb2. Only required + when B is an integer + type.

    diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index a1a715d4..591ab4be 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -18,7 +18,7 @@ Integer Types

    - The following backends provide integer arithmetic: + The following back-ends provide integer arithmetic:

    @@ -119,7 +119,7 @@

    - Very fast and efficient backend. + Very fast and efficient back-end.

    @@ -152,7 +152,7 @@

    - Public domain backend with no licence restrictions. + Public domain back-end with no licence restrictions.

    @@ -200,9 +200,9 @@ boost::multiprecision::mp_int256_t or boost::multiprecision::mp_int512_t.

    - This backend is the "Swiss Army Knife" of integer types as it can - represent both fixed and arbitrary precision integer types, and both signed - and unsigned types. There are three template arguments: + This back-end is the "Swiss Army Knife" of integer types as it + can represent both fixed and arbitrary precision integer types, and both + signed and unsigned types. There are three template arguments:

    @@ -237,7 +237,7 @@

    • - Default constructed cpp_int_backend's + Default constructed cpp_int_backends have the value zero.
    • @@ -317,7 +317,7 @@ }} // namespaces

      - The gmp_int backend is used + The gmp_int back-end is used via the typedef boost::multiprecision::mpz_int. It acts as a thin wrapper around the GMP mpz_t to provide an integer type that is a drop-in replacement for the native C++ @@ -352,7 +352,7 @@ safely mix this type with existing code that uses GMP.

    • - Default constructed gmp_int's + Default constructed gmp_ints have the value zero (this is GMP's default behavior).
    • @@ -411,8 +411,8 @@ }} // namespaces

      - The tommath_int backend is - used via the typedef boost::multiprecision::tom_int. + The tommath_int back-end + is used via the typedef boost::multiprecision::tom_int. It acts as a thin wrapper around the libtommath tom_int to provide an integer type that is a drop-in replacement for the native C++ integer types, but diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html index 336c4d1f..f1dac222 100644 --- a/doc/html/boost_multiprecision/tut/primetest.html +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -33,17 +33,18 @@ These functions perform a Miller-Rabin test for primality, if the result is false then n is definitely composite, while if the result is true - then n is prime with probability 0.25^trials. The algorithm - used is straight out of Knuth Vol 2, which recomends 25 trials for a pretty - strong likelyhood that n is prime. + then n is prime with probability 0.25^trials. + The algorithm used is straight out of Knuth Vol 2, which recomends 25 trials + for a pretty strong likelyhood that n is prime.

      The third optional argument is for a Uniform Random Number Generator from Boost.Random. When not provided the mt19937 generator is used. Note that when producing random primes then you should - probably use a different random number generator to produce possible primes, - than used internally for testing whether the value is prime. It also helps - of course to seed the generators with some source of randomness. + probably use a different random number generator to produce candidate prime + numbers for testing, than is used internally by miller_rabin_test + for determining whether the value is prime. It also helps of course to seed + the generators with some source of randomness.

      The following example searches for a prime p diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 5b386e55..65eca5a3 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -18,7 +18,7 @@ Rational Number Types

    - The following backends provide rational number arithmetic: + The following back-ends provide rational number arithmetic:

    @@ -85,7 +85,7 @@ @@ -241,7 +241,7 @@ }}// namespaces

    - The gmp_rational backend + The gmp_rational back-end is used via the typedef boost::multiprecision::mpq_rational. It acts as a thin wrapper around the GMP mpq_t to provide a rational @@ -284,7 +284,7 @@

    • - Default constructed mpq_rational's + Default constructed mpq_rationals have the value zero (this is the GMP default behavior).
    • @@ -373,7 +373,7 @@

      • - Default constructed cpp_rational's + Default constructed cpp_rationals have the value zero.
      • @@ -419,7 +419,7 @@ }} // namespaces

        - The tommath_rational backend + The tommath_rational back-end is used via the typedef boost::multiprecision::tom_rational. It acts as a thin wrapper around boost::rational<tom_int> to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited @@ -443,7 +443,7 @@

        • - Default constructed tom_rational's + Default constructed tom_rationals have the value zero (this the inherited Boost.Rational behavior).
        • @@ -494,7 +494,7 @@ Boost.Rational

          - All of the inetger types in this library can be used as template arguments + All of the integer types in this library can be used as template arguments to boost::rational<IntType>.

          @@ -514,11 +514,11 @@

          The class template rational_adapter - is a backend for mp_number - which converts any existing integer backend into a rational-number backend. + is a back-end for mp_number + which converts any existing integer back-end into a rational-number back-end.

          - So for example, given an integer backend type MyIntegerBackend, + So for example, given an integer back-end type MyIntegerBackend, the use would be something like:

          typedef mp_number<MyIntegerBackend>                    MyInt;
          diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html
          index 58c5cf14..23ea5d72 100644
          --- a/doc/html/boost_multiprecision/tut/reals.html
          +++ b/doc/html/boost_multiprecision/tut/reals.html
          @@ -18,7 +18,7 @@
           Floating Point Numbers
           

    - The following backends provide floating point arithmetic: + The following back-ends provide floating point arithmetic:

    - Very fast and efficient backend. + Very fast and efficient back-end.

    @@ -182,13 +182,13 @@

    - All C++ adapter that allows any inetger backend type to be used + All C++ adapter that allows any inetger back-end type to be used as a rational type.

    - Requires an underlying integer backend type. + Requires an underlying integer back-end type.

    @@ -85,7 +85,7 @@ @@ -182,7 +182,7 @@ }}// namespaces

    - The gmp_float backend is + The gmp_float back-end is used in conjunction with mp_number : it acts as a thin wrapper around the GMP mpf_t to provide an real-number @@ -196,7 +196,7 @@ to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpf_float provides a variable precision type whose - precision can be controlled via the mp_number's + precision can be controlled via the mp_numbers member functions.

    - Very fast and efficient backend. + Very fast and efficient back-end.

    @@ -118,7 +118,7 @@

    - Very fast and efficient backend, with its own standard library + Very fast and efficient back-end, with its own standard library implementation.

    @@ -236,7 +236,7 @@

    • - Default constructed gmp_float's + Default constructed gmp_floats have the value zero (this is the GMP library's default behavior).
    • @@ -327,7 +327,7 @@ to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpfr_float provides a variable precision type whose - precision can be controlled via the mp_number's + precision can be controlled via the mp_numbers member functions.

    @@ -431,7 +431,7 @@ }}// namespaces

    - The cpp_dec_float backend + The cpp_dec_float back-end is used in conjunction with mp_number: It acts as an entirely C++ (header only and dependency free) real-number type that is a drop-in replacement for the native C++ floating-point types, @@ -440,7 +440,8 @@

    Type cpp_dec_float can be used at fixed precision by specifying a non-zero Digits10 - template parameter. The typedefs cpp_dec_float_50 and cpp_dec_float_100 provide + template parameter. The typedefs cpp_dec_float_50 + and cpp_dec_float_100 provide arithmetic types at 50 and 100 decimal digits precision respectively.

    @@ -452,7 +453,7 @@

    • - Default constructed cpp_dec_float's + Default constructed cpp_dec_floats have a value of zero.
    • diff --git a/doc/html/index.html b/doc/html/index.html index 77a81cd9..9b369d6c 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -66,7 +66,7 @@
    - +

    Last revised: March 26, 2012 at 17:54:45 GMT

    Last revised: March 28, 2012 at 17:05:42 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 97db0938..8cc647ac 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -37,12 +37,24 @@ [section:intro Introduction] +The Multiprecision Library provides ['User-defined] integer, rational and floating-point C++ types which +try to emulate as closely as practicable the C++ built-in types, but provide for more range and +precision. Depending upon the number type, precision may be arbitrarily large (limited only by available memory), +fixed at compile time values, for example 50 decimal +digits, or a variable controlled at run-time by member functions. The types are +expression-template-enabled for better performance than naive user-defined types. + The Multiprecision library comes in two distinct parts: -* An expression-template-enabled front end `mp_number` +* An expression-template-enabled front-end `mp_number` that handles all the operator overloading, expression evaluation optimization, and code reduction. -* A selection of backends that implement the actual arithmetic operations, and need conform only to the -reduced interface requirements of the front end. +* A selection of back-ends that implement the actual arithmetic operations, and need conform only to the +reduced interface requirements of the front-end. + +Separation of front-end and back-end allows use of highly refined, but restricted license libraries +where possible, but provides Boost license alternatives for users who must have a portable +unconstrained license. Which is to say some back-ends rely on 3rd party libraries, but a header-only Boost license version is always +available (if somewhat slower). The library is often used via one of the predefined typedefs: for example if you wanted an arbitrary precision integer type using [gmp] as the underlying implementation then you could use: @@ -52,7 +64,7 @@ integer type using [gmp] as the underlying implementation then you could use: boost::multiprecision::mpz_int myint; // Arbitrary precision integer type. Alternatively, you can compose your own multiprecision type, by combining `mp_number` with one of the -predefined backend types. For example, suppose you wanted a 300 decimal digit floating-point type +predefined back-end types. For example, suppose you wanted a 300 decimal digit floating-point type based on the [mpfr] library. In this case, there's no predefined typedef with that level of precision, so instead we compose our own: @@ -135,7 +147,7 @@ Given the comments above, you might be forgiven for thinking that expression-tem sadly though, all tricks like this have their downsides. For one thing, expression template libraries like this one, tend to be slower to compile than their simpler cousins, they're also harder to debug (should you actually want to step through our code!), and rely on compiler optimizations being turned -on to give really good performance. Also, since the return type from expressions involving `mp_number`'s +on to give really good performance. Also, since the return type from expressions involving `mp_number`s is an "unmentionable implementation detail", you have to be careful to cast the result of an expression to the actual number type when passing an expression to a template function. For example, given: @@ -217,18 +229,18 @@ again, all are using [mpfr] to carry out the underlying arithmetic, and all are [section:tut Tutorial] In order to use this library you need to make two choices: what kind of number do I want, and -which backend do I want to perform the actual arithmetic? +which back-end do I want to perform the actual arithmetic? [section:ints Integer Types] -The following backends provide integer arithmetic: +The following back-ends provide integer arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`cpp_int`][boost/multiprecision/cpp_int.hpp][2][None] [Very versatile, Boost licenced, all C++ integer type which support both arbitrary precision and fixed precision integer types.][Slower than [gmp], though typically not as slow as [tommath]]] -[[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] -[[`tom_int`][boost/multiprecision/tommath.hpp][2][[tommath]][Public domain backend with no licence restrictions.][Slower than [gmp].]] +[[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licenced [gmp] library.]] +[[`tom_int`][boost/multiprecision/tommath.hpp][2][[tommath]][Public domain back-end with no licence restrictions.][Slower than [gmp].]] ] [h4 cpp_int] @@ -263,7 +275,7 @@ The `cpp_int_backend` type is used via one of the typedefs `boost::multiprecisio `boost::multiprecision::mp_uint512_t`, `boost::multiprecision::mp_int128_t`, `boost::multiprecision::mp_int256_t` or `boost::multiprecision::mp_int512_t`. -This backend is the "Swiss Army Knife" of integer types as it can represent both fixed and arbitrary precision +This back-end is the "Swiss Army Knife" of integer types as it can represent both fixed and arbitrary precision integer types, and both signed and unsigned types. There are three template arguments: [variablelist @@ -281,7 +293,7 @@ integer types, and both signed and unsigned types. There are three template arg Things you should know when using this type: -* Default constructed `cpp_int_backend`'s have the value zero. +* Default constructed `cpp_int_backend`s have the value zero. * Division by zero results in a `std::runtime_error` being thrown. * Construction from a string that contains invalid non-numeric characters results in a `std::runtime_error` being thrown. * Since the precision of `cpp_int_backend` is necessarily limited when the allocator parameter is void, @@ -313,7 +325,7 @@ the feature off. }} // namespaces -The `gmp_int` backend is used via the typedef `boost::multiprecision::mpz_int`. It acts as a thin wrapper around the [gmp] `mpz_t` +The `gmp_int` back-end is used via the typedef `boost::multiprecision::mpz_int`. It acts as a thin wrapper around the [gmp] `mpz_t` to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. As well as the usual conversions from arithmetic and string types, type `mpz_int` is copy constructible and assignable from: @@ -327,7 +339,7 @@ Things you should know when using this type: * No changes are made to the GMP library's global settings - so you can safely mix this type with existing code that uses [gmp]. -* Default constructed `gmp_int`'s have the value zero (this is GMP's default behavior). +* Default constructed `gmp_int`s have the value zero (this is GMP's default behavior). * Formatted IO for this type does not support octal or hexadecimal notation for negative values, as a result performing formatted output on this type when the argument is negative and either of the flags `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. @@ -349,7 +361,7 @@ is recomended on Win32. }} // namespaces -The `tommath_int` backend is used via the typedef `boost::multiprecision::tom_int`. It acts as a thin wrapper around the [tommath] `tom_int` +The `tommath_int` back-end is used via the typedef `boost::multiprecision::tom_int`. It acts as a thin wrapper around the [tommath] `tom_int` to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. Things you should know when using this type: @@ -372,12 +384,12 @@ as a result performing formatted output on this type when the argument is negati [section:reals Floating Point Numbers] -The following backends provide floating point arithmetic: +The following back-ends provide floating point arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`mpf_float`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] -[[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][[gmp] and [mpfr]][Very fast and efficient backend, with its own standard library implementation.][Dependency on GNU licenced [gmp] and [mpfr] libraries.]] +[[`mpf_float`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licenced [gmp] library.]] +[[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][[gmp] and [mpfr]][Very fast and efficient back-end, with its own standard library implementation.][Dependency on GNU licenced [gmp] and [mpfr] libraries.]] [[`cpp_dec_float`][boost/multiprecision/cpp_dec_float.hpp][10][None][Header only, all C++ implementation. Boost licence.][Approximately 2x slower than the [mpfr] or [gmp] libraries.]] ] @@ -396,7 +408,7 @@ The following backends provide floating point arithmetic: }} // namespaces -The `gmp_float` backend is used in conjunction with `mp_number` : it acts as a thin wrapper around the [gmp] `mpf_t` +The `gmp_float` back-end is used in conjunction with `mp_number` : it acts as a thin wrapper around the [gmp] `mpf_t` to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. @@ -404,7 +416,7 @@ Type `gmp_float` can be used at fixed precision by specifying a non-zero `Digits at variable precision by setting the template argument to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpf_float provides a variable precision type whose precision can be controlled via the -`mp_number`'s member functions. +`mp_number`s member functions. [note This type only provides standard library and `numeric_limits` support when the precision is fixed at compile time.] @@ -418,7 +430,7 @@ It's also possible to access the underlying `mpf_t` via the `data()` member func Things you should know when using this type: -* Default constructed `gmp_float`'s have the value zero (this is the [gmp] library's default behavior). +* Default constructed `gmp_float`s have the value zero (this is the [gmp] library's default behavior). * No changes are made to the [gmp] library's global settings, so this type can be safely mixed with existing [gmp] code. * It is not possible to round-trip objects of this type to and from a string and get back @@ -458,7 +470,7 @@ Type `mpfr_float_backend` can be used at fixed precision by specifying a non-zer at variable precision by setting the template argument to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpfr_float provides a variable precision type whose precision can be controlled via the -`mp_number`'s member functions. +`mp_number`s member functions. [note This type only provides `numeric_limits` support when the precision is fixed at compile time.] @@ -495,19 +507,19 @@ Things you should know when using this type: }} // namespaces -The `cpp_dec_float` backend is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free) +The `cpp_dec_float` back-end is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free) real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. Type `cpp_dec_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. -The typedefs cpp_dec_float_50 and cpp_dec_float_100 provide arithmetic types at 50 and 100 decimal digits precision +The typedefs `cpp_dec_float_50` and `cpp_dec_float_100` provide arithmetic types at 50 and 100 decimal digits precision respectively. There is full standard library and `numeric_limits` support available for this type. Things you should know when using this type: -* Default constructed `cpp_dec_float`'s have a value of zero. +* Default constructed `cpp_dec_float`s have a value of zero. * The radix of this type is 10. As a result it can behave subtly differently from base-2 types. * It is not possible to round-trip this type to and from a string and get back to exactly the same value (this is a result of the type having some hidden internal guard digits). @@ -522,14 +534,14 @@ Normally these should not be visible to the user. [section:rational Rational Number Types] -The following backends provide rational number arithmetic: +The following back-ends provide rational number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient backend.][Dependency on GNU licenced [gmp] library.]] +[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licenced [gmp] library.]] [[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licenced implementation.][Slower than [gmp].]] [[`tommath_rational`][boost/multiprecision/tommath.hpp][2][[tommath]][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] -[[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger backend type to be used as a rational type.][Requires an underlying integer backend type.]] +[[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger back-end type to be used as a rational type.][Requires an underlying integer back-end type.]] [[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] @@ -543,7 +555,7 @@ The following backends provide rational number arithmetic: }} // namespaces -The `gmp_rational` backend is used via the typedef `boost::multiprecision::mpq_rational`. It acts as a thin wrapper around the [gmp] `mpq_t` +The `gmp_rational` back-end is used via the typedef `boost::multiprecision::mpq_rational`. It acts as a thin wrapper around the [gmp] `mpq_t` to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. As well as the usual conversions from arithmetic and string types, instances of `mp_number` are copy constructible @@ -565,7 +577,7 @@ It's also possible to access the underlying `mpq_t` via the `data()` member func Things you should know when using this type: -* Default constructed `mpq_rational`'s have the value zero (this is the [gmp] default behavior). +* Default constructed `mpq_rational`s have the value zero (this is the [gmp] default behavior). * Division by zero results in a hardware exception inside the [gmp] library. * No changes are made to the [gmp] library's global settings, so this type can coexist with existing [gmp] code. @@ -602,7 +614,7 @@ which return the numerator and denominator of the number. Things you should know when using this type: -* Default constructed `cpp_rational`'s have the value zero. +* Default constructed `cpp_rational`s have the value zero. * Division by zero results in a `std::rumtime_error` being thrown. [h5 Example:] @@ -618,7 +630,7 @@ Things you should know when using this type: }} // namespaces -The `tommath_rational` backend is used via the typedef `boost::multiprecision::tom_rational`. It acts as a thin wrapper around +The `tommath_rational` back-end is used via the typedef `boost::multiprecision::tom_rational`. It acts as a thin wrapper around `boost::rational` to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. @@ -634,7 +646,7 @@ which return the numerator and denominator of the number. Things you should know when using this type: -* Default constructed `tom_rational`'s have the value zero (this the inherited Boost.Rational behavior). +* Default constructed `tom_rational`s have the value zero (this the inherited Boost.Rational behavior). * Division by zero results in a `boost::bad_rational` exception being thrown (see the rational number library's docs for more information). * No changes are made to [tommath]'s global state, so this type can safely coexist with other [tommath] code. * Performance of this type has been found to be pretty poor - this need further investigation - but it appears that Boost.Rational @@ -646,7 +658,7 @@ needs some improvement in this area. [h4 Use With Boost.Rational] -All of the inetger types in this library can be used as template arguments to `boost::rational`. +All of the integer types in this library can be used as template arguments to `boost::rational`. Note that using the library in this way largely negates the effect of the expression templates in `mp_number`. @@ -659,10 +671,10 @@ Note that using the library in this way largely negates the effect of the expres }} -The class template `rational_adapter` is a backend for `mp_number` which converts any existing integer backend -into a rational-number backend. +The class template `rational_adapter` is a back-end for `mp_number` which converts any existing integer back-end +into a rational-number back-end. -So for example, given an integer backend type `MyIntegerBackend`, the use would be something like: +So for example, given an integer back-end type `MyIntegerBackend`, the use would be something like: typedef mp_number MyInt; typedef mp_number > MyRational; @@ -719,13 +731,13 @@ The library implements a fairly basic (meaning unoptimized, and possibly slow) M bool miller_rabin_test(const mp_number& n, unsigned trials); These functions perform a Miller-Rabin test for primality, if the result is `false` then /n/ is definitely composite, -while if the result is `true` then /n/ is prime with probability 0.25^trials. The algorithm used is straight out of +while if the result is `true` then /n/ is prime with probability ['0.25^trials]. The algorithm used is straight out of Knuth Vol 2, which recomends 25 trials for a pretty strong likelyhood that /n/ is prime. The third optional argument is for a Uniform Random Number Generator from Boost.Random. When not provided the `mt19937` generator is used. Note that when producing random primes then you should probably use a different random number generator -to produce possible primes, than used internally for testing whether the value is prime. It also helps of course to seed the -generators with some source of randomness. +to produce candidate prime numbers for testing, than is used internally by `miller_rabin_test` for determining +whether the value is prime. It also helps of course to seed the generators with some source of randomness. The following example searches for a prime `p` for which `(p-1)/2` is also probably prime: @@ -918,7 +930,7 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba Class `mp_number` has two template arguments: [variablelist -[[Backend][The actual arithmetic backend that does all the work.]] +[[Backend][The actual arithmetic back-end that does all the work.]] [[ExpressionTemplates][A boolean value: when true, then expression templates are enabled, otherwise they are disabled.]] ] @@ -1023,7 +1035,7 @@ Returns: Backend& backend(); const Backend& backend()const; -Returns the underlying backend instance used by `*this`. +Returns the underlying back-end instance used by `*this`. [h4 Non-member operators] @@ -1083,7 +1095,7 @@ Swaps `a` and `b`. These operators provided formatted input-output operations on `mp_number` types, and expression templates derived from them. -It's down to the backend type to actually implement string conversion. However, the backends provided with +It's down to the back-end type to actually implement string conversion. However, the back-ends provided with this library support all of the iostream formatting flags, field width and precision settings. [h4 Non-member standard library function support] @@ -1299,8 +1311,8 @@ of type B2. [table Optional Requirements on the Backend Type [[Expression][Returns][Comments]] -[[`B(b2)`][`B`][Copy constructor from a different backend type.]] -[[`b = b2`][`b&`][Assignment operator from a different backend type.]] +[[`B(b2)`][`B`][Copy constructor from a different back-end type.]] +[[`b = b2`][`b&`][Assignment operator from a different back-end type.]] [[`assign_components(b, a, a)`][`void`][Assigns to `b` the two components in the following arguments. Only applies to rational and complex number types.]] [[`assign_components(b, b2, b2)`][`void`][Assigns to `b` the two components in the following arguments. @@ -1389,13 +1401,13 @@ of type B2. [[`eval_atan2(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::atan` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] [[`eval_qr(cb, cb2, b, b2)`][`void`][Sets `b` to the result of `cb / cb2` and `b2` to the result of `cb % cb2`. Only required when `B` is an integer type.]] [[`eval_integer_modulus(cb, ui)`][`unsigned`][Returns the result of `cb % ui`. Only required when `B` is an integer type.]] -[[`eval_lsb(cb)`][`unsigned`][Returns the index of the least significant bit that is set.` Only required when `B` is an integer type.]] -[[`eval_bit_test(cb, ui)`][`bool`][Returns true if `cb` has bit `ui` set. Only required when `B` is an integer type.]] +[[`eval_lsb(cb)`][`unsigned`][Returns the index of the least significant bit that is set. Only required when `B` is an integer type.]] +[[`eval_bit_test(cb, ui)`][`bool`][Returns true if `cb` has bit `ui` set. Only required when `B` is an integer type.]] [[`eval_bit_set(b, ui)`][`void`][Sets the bit at index `ui` in `b`. Only required when `B` is an integer type.]] [[`eval_bit_unset(b, ui)`][`void`][Unsets the bit at index `ui` in `b`. Only required when `B` is an integer type.]] [[`eval_bit_flip(b, ui)`][`void`][Flips the bit at index `ui` in `b`. Only required when `B` is an integer type.]] -[[`eval_gcd(b, cb, cb2)`][`void`][Sets `b` to the greatest common divisor of `cb` and `cb2`. Only required when `B` is an integer type.]] -[[`eval_lcm(b, cb, cb2)`][`void`][Sets `b` to the least common multiple of `cb` and `cb2`. Only required when `B` is an integer type.]] +[[`eval_gcd(b, cb, cb2)`][`void`][Sets `b` to the greatest common divisor of `cb` and `cb2`. Only required when `B` is an integer type.]] +[[`eval_lcm(b, cb, cb2)`][`void`][Sets `b` to the least common multiple of `cb` and `cb2`. Only required when `B` is an integer type.]] ] [note @@ -1413,7 +1425,7 @@ in point of fact this naming convension shouldn't be necessary, but rather works These tests test the total time taken to execute all of Boost.Math's test cases for these functions. In each case the best performing library gets a relative score of 1, with the total execution time given in brackets. The first three libraries listed are the various floating point types provided -by this library, while for comparison, two popular C++ frontends to [mpfr] ([mpfr_class] and [mpreal]) +by this library, while for comparison, two popular C++ front-ends to [mpfr] ([mpfr_class] and [mpreal]) are also shown. Test code was compiled with Microsoft Visual Studio 2010 with all optimisations @@ -1452,7 +1464,7 @@ Windows Vista machine. [table [[Integer Type][Relative (and Absolute) Times]] [[mpz_int][1.08279(0.370326s)]] -[[mpz_int (no Expression templates)][1.1702(0.400222s)]]] +[[mpz_int (no Expression templates)][1.1702(0.400222s)]] [[cpp_int][1.3612(0.465547s)]] [[cpp_int (no Expression templates)][1.33286(0.455854s)]] [[cpp_int (64-bit cache)][1.33134(0.455333s)]] @@ -1476,7 +1488,7 @@ altogether - cutting about a third off the total runtime. Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance results should be taken -with a healthy dose of scepticsm, and real-world peformance may vary widely depending upon the +with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 operations. @@ -1546,7 +1558,7 @@ Windows Vista machine. Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance results should be taken -with a healthy dose of scepticsm, and real-world peformance may vary widely depending upon the +with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 operations. @@ -1703,7 +1715,7 @@ Linux x86_64 results are broadly similar, except that libtommath performs much b Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance results should be taken -with a healthy dose of scepticsm, and real-world peformance may vary widely depending upon the +with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 operations. @@ -1771,9 +1783,9 @@ Windows Vista machine. More a list of what ['could] be done, rather than what ['should] be done (which may be a much smaller list!). -* Add backend support for libdecNumber. -* Add an adapter backend for complex number types. -* Add a backend for MPFR interval arithmetic. +* Add back-end support for libdecNumber. +* Add an adapter back-end for complex number types. +* Add a back-end for MPFR interval arithmetic. * Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend. * Add assembly level routines to cpp_int_backend. * Add an all C++ binary floating point type. From 1cfbf792a38f08f9c21a7b00b63498e1046ef7e4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 28 Mar 2012 17:35:38 +0000 Subject: [PATCH 145/256] Fix comment. [SVN r77606] --- example/cpp_int_snips.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/cpp_int_snips.cpp b/example/cpp_int_snips.cpp index 942f27d6..191fcecb 100644 --- a/example/cpp_int_snips.cpp +++ b/example/cpp_int_snips.cpp @@ -21,7 +21,7 @@ void t1() std::cout << v << std::endl; // prints 20! - // Try again at arbitrary precision: + // Repeat at arbitrary precision: cpp_int u = 1; for(unsigned i = 1; i <= 100; ++i) u *= i; From e47eee1e5e2d324fe972d8865759a772ed09c89b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 28 Mar 2012 17:47:41 +0000 Subject: [PATCH 146/256] Update floating point examples to show Boost.Math usage. [SVN r77607] --- doc/html/boost_multiprecision/tut/ints.html | 2 +- doc/html/boost_multiprecision/tut/reals.html | 15 +++++++++++++++ doc/html/index.html | 2 +- example/cpp_dec_float_snips.cpp | 6 ++++++ example/gmp_snips.cpp | 6 ++++++ example/mpfr_snips.cpp | 6 ++++++ 6 files changed, 35 insertions(+), 2 deletions(-) diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index 591ab4be..8f4c69d7 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -295,7 +295,7 @@ std::cout << v << std::endl; // prints 20! -// Try again at arbitrary precision: +// Repeat at arbitrary precision: cpp_int u = 1; for(unsigned i = 1; i <= 100; ++i) u *= i; diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html index 23ea5d72..02d1064f 100644 --- a/doc/html/boost_multiprecision/tut/reals.html +++ b/doc/html/boost_multiprecision/tut/reals.html @@ -286,7 +286,12 @@ // Operations at fixed precision and full standard library support: mpf_float_100 b = 2; std::cout << std::numeric_limits<mpf_float_100>::digits << std::endl; +// We can use any C++ std lib function: std::cout << log(b) << std::endl; // print log(2) +// We can also use any function from Boost.Math: +std::cout << boost::math::tgamma(b) << std::endl; +// These even work when the argument is an expression template: +std::cout << boost::math::tgamma(b * b) << std::endl; // Access the underlying representation: mpf_t f; @@ -407,7 +412,12 @@ // Operations at fixed precision and full numeric_limits support: mpfr_float_100 b = 2; std::cout << std::numeric_limits<mpfr_float_100>::digits << std::endl; +// We can use any C++ std lib function: std::cout << log(b) << std::endl; // print log(2) +// We can also use any function from Boost.Math: +std::cout << boost::math::tgamma(b) << std::endl; +// These even work when the argument is an expression template: +std::cout << boost::math::tgamma(b * b) << std::endl; // Access the underlying data: mpfr_t r; @@ -485,7 +495,12 @@ // Operations at fixed precision and full numeric_limits support: cpp_dec_float_100 b = 2; std::cout << std::numeric_limits<cpp_dec_float_100>::digits << std::endl; +// We can use any C++ std lib function: std::cout << log(b) << std::endl; // print log(2) +// We can also use any function from Boost.Math: +std::cout << boost::math::tgamma(b) << std::endl; +// These even work when the argument is an expression template: +std::cout << boost::math::tgamma(b * b) << std::endl;

    diff --git a/doc/html/index.html b/doc/html/index.html index 9b369d6c..75c23b24 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -66,7 +66,7 @@
    - +

    Last revised: March 28, 2012 at 17:05:42 GMT

    Last revised: March 28, 2012 at 17:43:15 GMT


    diff --git a/example/cpp_dec_float_snips.cpp b/example/cpp_dec_float_snips.cpp index 7794c5fe..7f1ec443 100644 --- a/example/cpp_dec_float_snips.cpp +++ b/example/cpp_dec_float_snips.cpp @@ -4,6 +4,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ #include +#include #include void t1() @@ -16,7 +17,12 @@ void t1() // Operations at fixed precision and full numeric_limits support: cpp_dec_float_100 b = 2; std::cout << std::numeric_limits::digits << std::endl; + // We can use any C++ std lib function: std::cout << log(b) << std::endl; // print log(2) + // We can also use any function from Boost.Math: + std::cout << boost::math::tgamma(b) << std::endl; + // These even work when the argument is an expression template: + std::cout << boost::math::tgamma(b * b) << std::endl; //] } diff --git a/example/gmp_snips.cpp b/example/gmp_snips.cpp index 511a2894..4ea36103 100644 --- a/example/gmp_snips.cpp +++ b/example/gmp_snips.cpp @@ -4,6 +4,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ #include +#include #include void t1() @@ -44,7 +45,12 @@ void t2() // Operations at fixed precision and full standard library support: mpf_float_100 b = 2; std::cout << std::numeric_limits::digits << std::endl; + // We can use any C++ std lib function: std::cout << log(b) << std::endl; // print log(2) + // We can also use any function from Boost.Math: + std::cout << boost::math::tgamma(b) << std::endl; + // These even work when the argument is an expression template: + std::cout << boost::math::tgamma(b * b) << std::endl; // Access the underlying representation: mpf_t f; diff --git a/example/mpfr_snips.cpp b/example/mpfr_snips.cpp index 3eaf6f31..dfecf5e9 100644 --- a/example/mpfr_snips.cpp +++ b/example/mpfr_snips.cpp @@ -4,6 +4,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ #include +#include #include void t1() @@ -22,7 +23,12 @@ void t1() // Operations at fixed precision and full numeric_limits support: mpfr_float_100 b = 2; std::cout << std::numeric_limits::digits << std::endl; + // We can use any C++ std lib function: std::cout << log(b) << std::endl; // print log(2) + // We can also use any function from Boost.Math: + std::cout << boost::math::tgamma(b) << std::endl; + // These even work when the argument is an expression template: + std::cout << boost::math::tgamma(b * b) << std::endl; // Access the underlying data: mpfr_t r; From ada7aced0ad4962a99d932cb439a2cf9cccf5aa5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 28 Mar 2012 17:53:35 +0000 Subject: [PATCH 147/256] Add links to arbitary precision definition. [SVN r77608] --- doc/html/boost_multiprecision/intro.html | 3 ++- doc/html/boost_multiprecision/tut/ints.html | 11 +++++++---- doc/html/boost_multiprecision/tut/random.html | 4 ++-- doc/html/index.html | 2 +- doc/multiprecision.qbk | 12 +++++++----- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 134f9fea..5e4dfde1 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -49,7 +49,8 @@

    The library is often used via one of the predefined typedefs: for example if - you wanted an arbitrary precision integer type using GMP + you wanted an arbitrary + precision integer type using GMP as the underlying implementation then you could use:

    #include <boost/multiprecision/gmp.hpp>  // Defines the wrappers around the GMP library's types
    diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html
    index 8f4c69d7..41862d34 100644
    --- a/doc/html/boost_multiprecision/tut/ints.html
    +++ b/doc/html/boost_multiprecision/tut/ints.html
    @@ -86,7 +86,8 @@
     

    Very versatile, Boost licenced, all C++ integer type which support - both arbitrary precision and fixed precision integer types. + both arbitrary + precision and fixed precision integer types.

    @@ -201,8 +202,9 @@

    This back-end is the "Swiss Army Knife" of integer types as it - can represent both fixed and arbitrary precision integer types, and both - signed and unsigned types. There are three template arguments: + can represent both fixed and arbitrary + precision integer types, and both signed and unsigned types. There + are three template arguments:

    @@ -221,7 +223,8 @@
    Signed

    Determines whether the resulting type is signed or not. Note that for - arbitrary precision types (where the Allocator parameter is non-void), + arbitrary + precision types (where the Allocator parameter is non-void), then this parameter must be true. For fixed precision types then this type may be either true (type is signed), or false (type is unsigned).

    diff --git a/doc/html/boost_multiprecision/tut/random.html b/doc/html/boost_multiprecision/tut/random.html index 6739f77a..5b7928ff 100644 --- a/doc/html/boost_multiprecision/tut/random.html +++ b/doc/html/boost_multiprecision/tut/random.html @@ -19,8 +19,8 @@

    Random numbers are generated in conjunction with Boost.Random. However, since - Boost.Random is unaware of arbitrary precision numbers, it's necessary to - include the header: + Boost.Random is unaware of arbitrary + precision numbers, it's necessary to include the header:

    #include <boost/multiprecision/random.hpp>
     
    diff --git a/doc/html/index.html b/doc/html/index.html index 75c23b24..d6b3fc03 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -66,7 +66,7 @@ - +

    Last revised: March 28, 2012 at 17:43:15 GMT

    Last revised: March 28, 2012 at 17:52:12 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 8cc647ac..c31531b3 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -56,7 +56,7 @@ where possible, but provides Boost license alternatives for users who must have unconstrained license. Which is to say some back-ends rely on 3rd party libraries, but a header-only Boost license version is always available (if somewhat slower). -The library is often used via one of the predefined typedefs: for example if you wanted an arbitrary precision +The library is often used via one of the predefined typedefs: for example if you wanted an [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] integer type using [gmp] as the underlying implementation then you could use: #include // Defines the wrappers around the GMP library's types @@ -238,7 +238,7 @@ The following back-ends provide integer arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`cpp_int`][boost/multiprecision/cpp_int.hpp][2][None] - [Very versatile, Boost licenced, all C++ integer type which support both arbitrary precision and fixed precision integer types.][Slower than [gmp], though typically not as slow as [tommath]]] + [Very versatile, Boost licenced, all C++ integer type which support both [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] and fixed precision integer types.][Slower than [gmp], though typically not as slow as [tommath]]] [[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licenced [gmp] library.]] [[`tom_int`][boost/multiprecision/tommath.hpp][2][[tommath]][Public domain back-end with no licence restrictions.][Slower than [gmp].]] ] @@ -275,7 +275,8 @@ The `cpp_int_backend` type is used via one of the typedefs `boost::multiprecisio `boost::multiprecision::mp_uint512_t`, `boost::multiprecision::mp_int128_t`, `boost::multiprecision::mp_int256_t` or `boost::multiprecision::mp_int512_t`. -This back-end is the "Swiss Army Knife" of integer types as it can represent both fixed and arbitrary precision +This back-end is the "Swiss Army Knife" of integer types as it can represent both fixed and +[@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] integer types, and both signed and unsigned types. There are three template arguments: [variablelist @@ -285,7 +286,8 @@ integer types, and both signed and unsigned types. There are three template arg values will be stored internally before memory allocation is required. When the Allocator parameter is type `void`, then this field determines the total number of bits in the resulting fixed precision type.]] -[[Signed][Determines whether the resulting type is signed or not. Note that for arbitrary precision types +[[Signed][Determines whether the resulting type is signed or not. Note that for +[@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] types (where the Allocator parameter is non-void), then this parameter must be `true`. For fixed precision types then this type may be either `true` (type is signed), or `false` (type is unsigned).]] [[Allocator][The allocator to use for dymamic memory allocation, or type `void` if this is to be a fixed precision type.]] @@ -690,7 +692,7 @@ So for example, given an integer back-end type `MyIntegerBackend`, the use would [section:random Generating Random Numbers] Random numbers are generated in conjunction with Boost.Random. However, since Boost.Random is unaware -of arbitrary precision numbers, it's necessary to include the header: +of [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] numbers, it's necessary to include the header: #include From ead32b95631e93d70b792bc6a6f60f6d0015d778 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 29 Mar 2012 09:12:08 +0000 Subject: [PATCH 148/256] Squash some MSVC level 4 compiler warnings. [SVN r77623] --- include/boost/multiprecision/cpp_int.hpp | 23 ++++++++++++++----- .../multiprecision/detail/default_ops.hpp | 14 +++++++---- .../multiprecision/detail/mp_number_base.hpp | 4 ++++ include/boost/multiprecision/gmp.hpp | 12 +++++++++- include/boost/multiprecision/mp_number.hpp | 20 ++++++++++++---- test/test_arithmetic.cpp | 17 ++++++++++---- 6 files changed, 69 insertions(+), 21 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 1681a445..c1024a75 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -21,6 +21,12 @@ namespace boost{ namespace multiprecision{ namespace backends{ +#ifdef BOOST_MSVC +// warning C4127: conditional expression is constant +#pragma warning(push) +#pragma warning(disable:4127) +#endif + template > struct cpp_int_backend; @@ -212,7 +218,7 @@ public: } void resize(unsigned new_size) { - m_limbs = (std::min)(new_size, internal_limb_count); + m_limbs = static_cast((std::min)(new_size, internal_limb_count)); } void normalize() { @@ -604,7 +610,7 @@ public: { this->do_swap(o); } - std::string str(std::streamsize digits, std::ios_base::fmtflags f)const + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const { int base = 10; if((f & std::ios_base::oct) == std::ios_base::oct) @@ -626,7 +632,7 @@ public: int pos = result.size() - 1; for(unsigned i = 0; i < Bits / shift; ++i) { - char c = '0' + (t.limbs()[0] & mask); + char c = '0' + static_cast(t.limbs()[0] & mask); if(c > '9') c += 'A' - '9' - 1; result[pos--] = c; @@ -635,7 +641,7 @@ public: if(Bits % shift) { mask = static_cast((1u << (Bits % shift)) - 1); - char c = '0' + (t.limbs()[0] & mask); + char c = '0' + static_cast(t.limbs()[0] & mask); if(c > '9') c += 'A' - '9'; result[pos] = c; @@ -1268,7 +1274,8 @@ void divide_unsigned_helper(cpp_int_backend* result, if(result) result->resize(1 + r_order - y_order); typename cpp_int_backend::const_limb_pointer prem = r.limbs(); - typename cpp_int_backend::limb_pointer pr; + // This is initialised just to keep the compiler from emitting useless warnings later on: + typename cpp_int_backend::limb_pointer pr = typename cpp_int_backend::limb_pointer(); if(result) { pr = result->limbs(); @@ -1494,7 +1501,8 @@ void divide_unsigned_helper(cpp_int_backend* result, return; } - typename cpp_int_backend::limb_pointer pres; + // This is initialised just to keep the compiler from emitting useless warnings later on: + typename cpp_int_backend::limb_pointer pres = typename cpp_int_backend::limb_pointer(); if(result) { result->resize(r_order + 1); @@ -2282,6 +2290,9 @@ typedef mp_number, false> mp_int256_t; typedef mp_number, false> mp_int512_t; typedef mp_number, false> mp_int1024_t; +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif }} // namespaces diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 9bd53ba7..f85e8194 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -26,6 +26,11 @@ namespace boost{ namespace multiprecision{ namespace default_ops{ +#ifdef BOOST_MSVC +// warning C4127: conditional expression is constant +#pragma warning(push) +#pragma warning(disable:4127) +#endif // // Default versions of mixed arithmetic, these just construct a temporary // from the arithmetic value and then do the arithmetic on that: @@ -108,7 +113,7 @@ template inline bool is_same_object(const T& u, const T&v) { return &u == &v; } template -inline bool is_same_object(const T& u, const U&v) +inline bool is_same_object(const T&, const U&) { return false; } // @@ -528,7 +533,6 @@ template inline bool eval_bit_test(const T& val, unsigned index) { typedef typename boost::multiprecision::detail::canonical::type ui_type; - unsigned result = 0; T mask, t; mask = ui_type(1); eval_left_shift(mask, index); @@ -540,7 +544,6 @@ template inline void eval_bit_set(T& val, unsigned index) { typedef typename boost::multiprecision::detail::canonical::type ui_type; - unsigned result = 0; T mask; mask = ui_type(1); eval_left_shift(mask, index); @@ -551,7 +554,6 @@ template inline void eval_bit_flip(T& val, unsigned index) { typedef typename boost::multiprecision::detail::canonical::type ui_type; - unsigned result = 0; T mask; mask = ui_type(1); eval_left_shift(mask, index); @@ -562,7 +564,6 @@ template inline void eval_bit_unset(T& val, unsigned index) { typedef typename boost::multiprecision::detail::canonical::type ui_type; - unsigned result = 0; T mask, t; mask = ui_type(1); eval_left_shift(mask, index); @@ -1285,6 +1286,9 @@ inline multiprecision::mp_number sinhc_pi(const mu return boost::math::sinhc_pi(x); } +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif } // namespace math } // namespace boost diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index ba349fe4..317462dd 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -249,6 +249,7 @@ struct mp_exp private: typename mp_exp_storage::type arg; + mp_exp& operator=(const mp_exp&); }; template @@ -271,6 +272,7 @@ struct mp_exp private: typename mp_exp_storage::type arg; + mp_exp& operator=(const mp_exp&); }; template @@ -303,6 +305,7 @@ struct mp_exp private: typename mp_exp_storage::type arg1; typename mp_exp_storage::type arg2; + mp_exp& operator=(const mp_exp&); }; template @@ -344,6 +347,7 @@ private: typename mp_exp_storage::type arg1; typename mp_exp_storage::type arg2; typename mp_exp_storage::type arg3; + mp_exp& operator=(const mp_exp&); }; template diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 314fc4cd..a4014cdd 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -21,6 +21,12 @@ namespace boost{ namespace multiprecision{ namespace backends{ +#ifdef BOOST_MSVC +// warning C4127: conditional expression is constant +#pragma warning(push) +#pragma warning(disable:4127) +#endif + template struct gmp_float; @@ -1560,7 +1566,7 @@ struct gmp_rational { mpq_swap(m_data, o.m_data); } - std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags /*f*/)const { // TODO make a better job of this including handling of f!! void *(*alloc_func_ptr) (size_t); @@ -2053,6 +2059,10 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + } // namespace std #endif diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 33c3c9ba..98df86ec 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -23,6 +23,12 @@ namespace boost{ namespace multiprecision{ +#ifdef BOOST_MSVC +// warning C4127: conditional expression is constant +#pragma warning(push) +#pragma warning(disable:4127) +#endif + template class mp_number { @@ -32,7 +38,7 @@ public: mp_number(){} mp_number(const mp_number& e) : m_backend(e.m_backend){} template - mp_number(V v, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + mp_number(V v, typename enable_if, is_same, is_convertible > >::type* = 0) { m_backend = canonical_value(v); } @@ -71,7 +77,7 @@ public: } template - mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* dummy1 = 0) + mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) : m_backend(v){} template @@ -576,7 +582,7 @@ private: BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); } template - void check_shift_range(V val, const mpl::false_&, const mpl::false_&){} + void check_shift_range(V, const mpl::false_&, const mpl::false_&){} template void do_assign(const Exp& e, const detail::add_immediates&) @@ -1443,7 +1449,7 @@ private: return is_realy_self(e.value()); } template - bool is_self(const Exp& e, mpl::int_ const&)const + bool is_self(const Exp&, mpl::int_ const&)const { return false; } @@ -1454,7 +1460,7 @@ private: static const Backend& canonical_value(const self_type& v){ return v.m_backend; } template - static typename detail::canonical::type canonical_value(const V& v){ return v; } + static typename detail::canonical::type canonical_value(const V& v){ return static_cast::type>(v); } static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } static const Backend& function_arg_value(const self_type& v) { return v.backend(); } @@ -1716,6 +1722,10 @@ inline multiprecision::mp_number denominator(const ratio return a.denominator(); } +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + } // namespaces #endif diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 4b3da0a8..ca7a39c1 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -80,6 +80,11 @@ struct number_category > : public mpl::int_ Date: Thu, 29 Mar 2012 12:15:05 +0000 Subject: [PATCH 149/256] Add licence and copyright. [SVN r77624] --- test/test.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/test.hpp b/test/test.hpp index b4d21e1c..2214491f 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -1,3 +1,8 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// #ifndef BOOST_MULTIPRECISION_TEST_HPP #define BOOST_MULTIPRECISION_TEST_HPP From 0cc1c727d831d717a6b92993c9625ce2042db72f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 29 Mar 2012 12:28:16 +0000 Subject: [PATCH 150/256] Squash some more MSVC level 4 warnings. [SVN r77625] --- include/boost/multiprecision/detail/default_ops.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index f85e8194..ee90315a 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -671,7 +671,7 @@ inline typename detail::mp_exp::result_type trunc(const detail: } template -inline mp_number trunc(const mp_number& v, const Policy& pol) +inline mp_number trunc(const mp_number& v, const Policy&) { using default_ops::eval_trunc; mp_number result; @@ -769,7 +769,7 @@ inline typename detail::mp_exp::result_type round(const detail: return round(static_cast(v), pol); } template -inline mp_number round(const mp_number& v, const Policy& pol) +inline mp_number round(const mp_number& v, const Policy&) { using default_ops::eval_round; mp_number result; From 43975488162e679e870e30e66f6224b7d6b8dec1 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 29 Mar 2012 12:28:31 +0000 Subject: [PATCH 151/256] Extend examples using Paul Bristow's comments. [SVN r77626] --- example/cpp_dec_float_snips.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/example/cpp_dec_float_snips.cpp b/example/cpp_dec_float_snips.cpp index 7f1ec443..012ad0ec 100644 --- a/example/cpp_dec_float_snips.cpp +++ b/example/cpp_dec_float_snips.cpp @@ -17,12 +17,18 @@ void t1() // Operations at fixed precision and full numeric_limits support: cpp_dec_float_100 b = 2; std::cout << std::numeric_limits::digits << std::endl; - // We can use any C++ std lib function: - std::cout << log(b) << std::endl; // print log(2) + // Note that digits10 is the same as digits, since we're base 10! : + std::cout << std::numeric_limits::digits10 << std::endl; + // We can use any C++ std lib function, lets print all the digits as well: + std::cout << std::setprecision(std::numeric_limits::max_digits10) + << log(b) << std::endl; // print log(2) // We can also use any function from Boost.Math: std::cout << boost::math::tgamma(b) << std::endl; // These even work when the argument is an expression template: std::cout << boost::math::tgamma(b * b) << std::endl; + // And since we have an extended exponent range we can generate some really large + // numbers here (4.0238726007709377354370243e+2564): + std::cout << boost::math::tgamma(cpp_dec_float_100(1000)) << std::endl; //] } From 3913771ea0984d7bbd43d00a27afb520ad615743 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 29 Mar 2012 18:00:06 +0000 Subject: [PATCH 152/256] Change cpp_dec_float string conversion to generate a better error message when conversion fails. Add generic inter-conversions and tests for them. Fix bug in cpp_int convert_to. [SVN r77630] --- .../boost/multiprecision/cpp_dec_float.hpp | 14 +- include/boost/multiprecision/cpp_int.hpp | 4 +- .../detail/generic_interconvert.hpp | 221 ++++++++++++++++++ include/boost/multiprecision/mp_number.hpp | 21 +- test/Jamfile.v2 | 11 + test/test_generic_conv.cpp | 148 ++++++++++++ 6 files changed, 414 insertions(+), 5 deletions(-) create mode 100644 include/boost/multiprecision/detail/generic_interconvert.hpp create mode 100644 test/test_generic_conv.cpp diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index da5dfe56..91a82f24 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -1804,6 +1804,8 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: template bool cpp_dec_float::rd_string(const char* const s) { + try{ + std::string str(s); // Get a possible exponent and remove it. @@ -1849,7 +1851,7 @@ bool cpp_dec_float::rd_string(const char* const s) *this = this->inf(); return true; } - if((str.size() >= 3) && ((str.substr(0, 3) == "nan") || (str.substr(0, 3) == "NAN"))) + if((str.size() >= 3) && ((str.substr(0, 3) == "nan") || (str.substr(0, 3) == "NAN") || (str.substr(0, 3) == "NaN"))) { *this = this->nan(); return true; @@ -2056,6 +2058,16 @@ bool cpp_dec_float::rd_string(const char* const s) } } + } + catch(const bad_lexical_cast&) + { + // Rethrow with better error message: + std::string msg = "Unable to parse the string \""; + msg += s; + msg += "\" as a floating point value."; + throw std::runtime_error(msg); + } + return true; } diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index c1024a75..a72008c4 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2025,12 +2025,10 @@ inline typename enable_if, void>::type eval_convert_to(R* result, { *result = static_cast(backend.limbs()[0]); unsigned shift = cpp_int_backend::limb_bits; - for(unsigned i = 1; i < backend.size(); ++i) + for(unsigned i = 1; (i < backend.size()) && (shift < static_cast(std::numeric_limits::digits)); ++i) { *result += static_cast(backend.limbs()[i]) << shift; shift += cpp_int_backend::limb_bits; - if(shift > static_cast(std::numeric_limits::digits)) - break; } if(backend.sign()) { diff --git a/include/boost/multiprecision/detail/generic_interconvert.hpp b/include/boost/multiprecision/detail/generic_interconvert.hpp new file mode 100644 index 00000000..4356e522 --- /dev/null +++ b/include/boost/multiprecision/detail/generic_interconvert.hpp @@ -0,0 +1,221 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_GENERIC_INTERCONVERT_HPP +#define BOOST_MP_GENERIC_INTERCONVERT_HPP + +#include + +namespace boost{ namespace multiprecision{ namespace detail{ + +template +void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) +{ + using default_ops::eval_get_sign; + using default_ops::eval_bitwise_and; + using default_ops::eval_convert_to; + using default_ops::eval_right_shift; + using default_ops::eval_ldexp; + using default_ops::eval_add; + // smallest unsigned type handled natively by "From" is likely to be it's limb_type: + typedef typename canonical::type limb_type; + // get the corresponding type that we can assign to "To": + typedef typename canonical::type to_type; + From t(from); + bool is_neg = eval_get_sign(t) < 0; + if(is_neg) + t.negate(); + // Pick off the first limb: + limb_type limb; + limb_type mask = ~static_cast(0); + From fl; + eval_bitwise_and(fl, t, mask); + eval_convert_to(&limb, fl); + to = static_cast(limb); + eval_right_shift(t, std::numeric_limits::digits); + // + // Then keep picking off more limbs until "t" is zero: + // + To l; + unsigned shift = std::numeric_limits::digits; + while(!eval_is_zero(t)) + { + eval_bitwise_and(fl, t, mask); + eval_convert_to(&limb, fl); + l = static_cast(limb); + eval_right_shift(t, std::numeric_limits::digits); + eval_ldexp(l, l, shift); + eval_add(to, l); + shift += std::numeric_limits::digits; + } + // + // Finish off by setting the sign: + // + if(is_neg) + to.negate(); +} + +template +void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) +{ + using default_ops::eval_get_sign; + using default_ops::eval_bitwise_and; + using default_ops::eval_convert_to; + using default_ops::eval_right_shift; + using default_ops::eval_left_shift; + using default_ops::eval_bitwise_or; + // smallest unsigned type handled natively by "From" is likely to be it's limb_type: + typedef typename canonical::type limb_type; + // get the corresponding type that we can assign to "To": + typedef typename canonical::type to_type; + From t(from); + bool is_neg = eval_get_sign(t) < 0; + if(is_neg) + t.negate(); + // Pick off the first limb: + limb_type limb; + limb_type mask = ~static_cast(0); + From fl; + eval_bitwise_and(fl, t, mask); + eval_convert_to(&limb, fl); + to = static_cast(limb); + eval_right_shift(t, std::numeric_limits::digits); + // + // Then keep picking off more limbs until "t" is zero: + // + To l; + unsigned shift = std::numeric_limits::digits; + while(!eval_is_zero(t)) + { + eval_bitwise_and(fl, t, mask); + eval_convert_to(&limb, fl); + l = static_cast(limb); + eval_right_shift(t, std::numeric_limits::digits); + eval_left_shift(l, shift); + eval_bitwise_or(to, l); + shift += std::numeric_limits::digits; + } + // + // Finish off by setting the sign: + // + if(is_neg) + to.negate(); +} + +template +void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) +{ + // + // The code here only works when the radix of "From" is 2, we could try shifting by other + // radixes but it would complicate things.... use a string convertion when the radix is other + // than 2: + // + if(std::numeric_limits >::radix != 2) + { + to = from.str(0, std::ios_base::fmtflags()).c_str(); + return; + } + + + typedef typename canonical::type ui_type; + + using default_ops::eval_fpclassify; + using default_ops::eval_add; + using default_ops::eval_subtract; + using default_ops::eval_convert_to; + + // + // First classify the input, then handle the special cases: + // + int c = eval_fpclassify(from); + + if(c == FP_ZERO) + { + to = ui_type(0); + return; + } + else if(c == FP_NAN) + { + to = "nan"; + return; + } + else if(c == FP_INFINITE) + { + to = "inf"; + if(eval_get_sign(from) < 0) + to.negate(); + return; + } + + typename From::exponent_type e; + From f, term; + to = ui_type(0); + + eval_frexp(f, from, &e); + + static const int shift = std::numeric_limits::digits - 1; + + while(!eval_is_zero(f)) + { + // extract int sized bits from f: + eval_ldexp(f, f, shift); + eval_floor(term, f); + e -= shift; + eval_ldexp(to, to, shift); + long long ll; + eval_convert_to(&ll, term); + eval_add(to, ll); + eval_subtract(f, term); + } + typedef typename To::exponent_type to_exponent; + if((e > (std::numeric_limits::max)()) || (e < (std::numeric_limits::min)())) + { + to = "inf"; + if(eval_get_sign(from) < 0) + to.negate(); + return; + } + eval_ldexp(to, to, static_cast(e)); +} + +template +void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) +{ + typedef typename component_type >::type from_component_type; + typedef typename component_type >::type to_component_type; + + mp_number t(from); + to_component_type n(numerator(t)), d(denominator(t)); + using default_ops::assign_components; + assign_components(to, n.backend(), d.backend()); +} + +template +void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) +{ + typedef typename component_type >::type to_component_type; + + mp_number t(from); + to_component_type n(t), d(1); + using default_ops::assign_components; + assign_components(to, n.backend(), d.backend()); +} + +template +void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) +{ + typedef typename component_type >::type from_component_type; + using default_ops::eval_divide; + + mp_number t(from); + from_component_type n(numerator(t)), d(denominator(t)); + mp_number fn(n), fd(d); + eval_divide(to, fn.backend(), fd.backend()); +} + +}}} // namespaces + +#endif // BOOST_MP_GENERIC_INTERCONVERT_HPP + diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 98df86ec..41f9106c 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include namespace boost{ namespace multiprecision{ @@ -63,6 +63,14 @@ public: { m_backend = val.backend(); } + template + mp_number(const mp_number& val, typename disable_if >::type* dummy1 = 0) + { + // + // Attempt a generic interconvertion: + // + detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); + } template mp_number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) { @@ -125,6 +133,17 @@ public: return *this; } + template + typename disable_if, mp_number& >::type + operator=(const mp_number& v) + { + // + // Attempt a generic interconvertion: + // + detail::generic_interconvert(backend(), v.backend(), number_category(), number_category()); + return *this; + } + template mp_number(const detail::mp_exp& e) { diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index eeed5577..1e3087ee 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -626,6 +626,17 @@ run test_rational_io.cpp gmp [ check-target-builds ../config//has_gmp : : no ] : test_rational_io_mpz ; +run test_generic_conv.cpp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : TEST_GMP gmp : ] + [ check-target-builds ../config//has_tommath : TEST_TOMMATH $(TOMMATH) : ] + [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] + release + ; + + run ../example/gmp_snips.cpp gmp : # command line : # input files diff --git a/test/test_generic_conv.cpp b/test/test_generic_conv.cpp new file mode 100644 index 00000000..df033f83 --- /dev/null +++ b/test/test_generic_conv.cpp @@ -0,0 +1,148 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include +#include "test.hpp" + +#include +#include +#include + +#ifdef TEST_GMP +#include +#endif +#ifdef TEST_TOMMATH +#include +#endif +#ifdef TEST_MPFR +#include +#endif + +int main() +{ + using namespace boost::multiprecision; + using namespace boost::random; + + independent_bits_engine gen; + + for(unsigned i = 0; i < 100; ++i) + { + cpp_int c = gen(); + // + // Integer to integer conversions first: + // +#ifdef TEST_GMP + mpz_int z(c); + cpp_int t(z); + BOOST_CHECK_EQUAL(t, c); + z = -c; + t = -z; + BOOST_CHECK_EQUAL(t, c); +#endif +#ifdef TEST_TOMMATH + tom_int tom(c); + cpp_int t2(tom); + BOOST_CHECK_EQUAL(t2, c); + tom = -c; + t2 = -tom; + BOOST_CHECK_EQUAL(t2, c); +#endif + // + // Now integer to float: + // + typedef mp_number > dec_float_500; + dec_float_500 df(c); + dec_float_500 df2(c.str()); + BOOST_CHECK_EQUAL(df, df2); + df = -c; + df2 = -df2; + BOOST_CHECK_EQUAL(df, df2); +#ifdef TEST_GMP + typedef mp_number > mpf_type; + mpf_type mpf(c); + mpf_type mpf2(c.str()); + BOOST_CHECK_EQUAL(mpf, mpf2); + mpf = -c; + mpf2 = -mpf2; + BOOST_CHECK_EQUAL(mpf, mpf2); +#endif +#ifdef TEST_MPFR + typedef mp_number > mpfr_type; + mpfr_type mpfr(c); + mpfr_type mpfr2(c.str()); + BOOST_CHECK_EQUAL(mpfr, mpfr2); + mpfr = -c; + mpfr2 = -mpfr2; + BOOST_CHECK_EQUAL(mpfr, mpfr2); +#endif + // + // Now float to float: + // + df = c; + df /= dec_float_500(gen()); + dec_float_500 tol("1e-500"); +#ifdef TEST_GMP + mpf = df; + mpf2 = df.str(); + BOOST_CHECK_EQUAL(mpf, mpf2); + df = mpf; + df2 = mpf.str(); + BOOST_CHECK(fabs((df - df2) / df) < tol); +#endif +#ifdef TEST_MPFR + mpfr = df; + mpfr2 = df.str(); + BOOST_CHECK_EQUAL(mpfr, mpfr2); + df = mpfr; + df2 = mpfr.str(); + BOOST_CHECK(fabs((df - df2) / df) < tol); +#endif + // + // Rational to rational conversions: + // + cpp_rational cppr(c, gen()); +#ifdef TEST_GMP + mpq_rational mpq(cppr); + cpp_rational cppr2(mpq); + BOOST_CHECK_EQUAL(cppr, cppr2); +#endif +#ifdef TEST_TOMMATH + tom_rational tr(cppr); + cpp_rational cppr3(tr); + BOOST_CHECK_EQUAL(cppr, cppr3); +#endif + // + // Integer to rational conversions: + // +#ifdef TEST_GMP + mpq = c; + mpq_rational mpq2 = c.str(); + BOOST_CHECK_EQUAL(mpq, mpq2); +#endif +#ifdef TEST_TOMMATH + tr = c; + tom_rational tr2 = c.str(); + BOOST_CHECK_EQUAL(tr, tr2); +#endif + // + // Rational to float: + // + df = cppr; + df2 = numerator(cppr); + df2 /= dec_float_500(denominator(cppr)); + BOOST_CHECK(fabs(df - df2) / df2 < tol); + } + + return boost::report_errors(); +} + + + From 0e71a0c55e877e9eca523642feb86877fc4cc45d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 30 Mar 2012 18:33:27 +0000 Subject: [PATCH 153/256] Documentation update, temporarily remove the HTML docs. [SVN r77651] --- doc/Jamfile.v2 | 10 + doc/html/boost_multiprecision/intro.html | 522 --- doc/html/boost_multiprecision/map.html | 38 - doc/html/boost_multiprecision/map/hist.html | 32 - doc/html/boost_multiprecision/map/todo.html | 57 - doc/html/boost_multiprecision/perf.html | 46 - .../perf/float_performance.html | 961 ------ .../perf/int_real_world.html | 217 -- .../perf/integer_performance.html | 3034 ----------------- .../perf/rational_performance.html | 905 ----- .../boost_multiprecision/perf/realworld.html | 278 -- doc/html/boost_multiprecision/ref.html | 38 - .../boost_multiprecision/ref/backendconc.html | 2295 ------------- .../boost_multiprecision/ref/mp_number.html | 695 ---- doc/html/boost_multiprecision/tut.html | 45 - doc/html/boost_multiprecision/tut/ints.html | 503 --- .../boost_multiprecision/tut/primetest.html | 108 - doc/html/boost_multiprecision/tut/random.html | 157 - .../boost_multiprecision/tut/rational.html | 546 --- doc/html/boost_multiprecision/tut/reals.html | 521 --- doc/html/index.html | 75 - doc/index.idx | 11 + doc/multiprecision.qbk | 360 +- 23 files changed, 353 insertions(+), 11101 deletions(-) delete mode 100644 doc/html/boost_multiprecision/intro.html delete mode 100644 doc/html/boost_multiprecision/map.html delete mode 100644 doc/html/boost_multiprecision/map/hist.html delete mode 100644 doc/html/boost_multiprecision/map/todo.html delete mode 100644 doc/html/boost_multiprecision/perf.html delete mode 100644 doc/html/boost_multiprecision/perf/float_performance.html delete mode 100644 doc/html/boost_multiprecision/perf/int_real_world.html delete mode 100644 doc/html/boost_multiprecision/perf/integer_performance.html delete mode 100644 doc/html/boost_multiprecision/perf/rational_performance.html delete mode 100644 doc/html/boost_multiprecision/perf/realworld.html delete mode 100644 doc/html/boost_multiprecision/ref.html delete mode 100644 doc/html/boost_multiprecision/ref/backendconc.html delete mode 100644 doc/html/boost_multiprecision/ref/mp_number.html delete mode 100644 doc/html/boost_multiprecision/tut.html delete mode 100644 doc/html/boost_multiprecision/tut/ints.html delete mode 100644 doc/html/boost_multiprecision/tut/primetest.html delete mode 100644 doc/html/boost_multiprecision/tut/random.html delete mode 100644 doc/html/boost_multiprecision/tut/rational.html delete mode 100644 doc/html/boost_multiprecision/tut/reals.html delete mode 100644 doc/html/index.html create mode 100644 doc/index.idx diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 7cae9abc..c8568858 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -4,8 +4,10 @@ # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) using quickbook ; +using auto-index ; path-constant images_location : html ; +path-constant here : . ; xml big_number : multiprecision.qbk ; boostbook standalone @@ -62,6 +64,14 @@ boostbook standalone pdf:img.src.path=$(images_location)/ pdf:draft.mode="no" pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/math/doc/sf_and_dist/html + # Index generation: + on + $(here)/index.idx + $(here)/../../.. + on + html:on + enable_index + pdf:index.on.type=1 ; install pdf-install : standalone : . PDF ; diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html deleted file mode 100644 index 5e4dfde1..00000000 --- a/doc/html/boost_multiprecision/intro.html +++ /dev/null @@ -1,522 +0,0 @@ - - - -Introduction - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The Multiprecision Library provides User-defined integer, - rational and floating-point C++ types which try to emulate as closely as practicable - the C++ built-in types, but provide for more range and precision. Depending - upon the number type, precision may be arbitrarily large (limited only by available - memory), fixed at compile time values, for example 50 decimal digits, or a - variable controlled at run-time by member functions. The types are expression-template-enabled - for better performance than naive user-defined types. -

    -

    - The Multiprecision library comes in two distinct parts: -

    -
      -
    • - An expression-template-enabled front-end mp_number - that handles all the operator overloading, expression evaluation optimization, - and code reduction. -
    • -
    • - A selection of back-ends that implement the actual arithmetic operations, - and need conform only to the reduced interface requirements of the front-end. -
    • -
    -

    - Separation of front-end and back-end allows use of highly refined, but restricted - license libraries where possible, but provides Boost license alternatives for - users who must have a portable unconstrained license. Which is to say some - back-ends rely on 3rd party libraries, but a header-only Boost license version - is always available (if somewhat slower). -

    -

    - The library is often used via one of the predefined typedefs: for example if - you wanted an arbitrary - precision integer type using GMP - as the underlying implementation then you could use: -

    -
    #include <boost/multiprecision/gmp.hpp>  // Defines the wrappers around the GMP library's types
    -
    -boost::multiprecision::mpz_int myint;    // Arbitrary precision integer type.
    -
    -

    - Alternatively, you can compose your own multiprecision type, by combining - mp_number with one of the predefined - back-end types. For example, suppose you wanted a 300 decimal digit floating-point - type based on the MPFR library. In - this case, there's no predefined typedef with that level of precision, so instead - we compose our own: -

    -
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    -
    -namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    -
    -typedef mp::mp_number<mp::mpfr_float_backend<300> >  my_float;
    -
    -my_float a, b, c; // These variables have 300 decimal digits precision
    -
    -

    - We can repeat the above example, but with the expression templates disabled - (for faster compile times, but slower runtimes) by passing a second template - argument to mp_number: -

    -
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    -
    -namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    -
    -typedef mp::mp_number<mp::mpfr_float_backend<300>, false>  my_float;
    -
    -my_float a, b, c; // These variables have 300 decimal digits precision
    -
    -
    - - Expression - Templates -
    -

    - Class mp_number is expression-template-enabled: - that means that rather than having a multiplication operator that looks like - this: -

    -
    template <class Backend>
    -mp_number<Backend> operator * (const mp_number<Backend>& a, const mp_number<Backend>& b)
    -{
    -   mp_number<Backend> result(a);
    -   result *= b;
    -   return result;
    -}
    -
    -

    - Instead the operator looks more like this: -

    -
    template <class Backend>
    -unmentionable-type operator * (const mp_number<Backend>& a, const mp_number<Backend>& b);
    -
    -

    - Where the "unmentionable" return type is an implementation detail - that, rather than containing the result of the multiplication, contains instructions - on how to compute the result. In effect it's just a pair of references to the - arguments of the function, plus some compile-time information that stores what - the operation is. -

    -

    - The great advantage of this method is the elimination of temporaries: - for example the "naive" implementation of operator* above, requires one temporary for computing - the result, and at least another one to return it. It's true that sometimes - this overhead can be reduced by using move-semantics, but it can't be eliminated - completely. For example, lets suppose we're evaluating a polynomial via Horners - method, something like this: -

    -
    T a[7] = { /* some values */ };
    -//....
    -y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0];
    -
    -

    - If type T is an mp_number, then this expression is evaluated - without creating a single temporary value. In contrast, - if we were using the C++ wrapper that ships with GMP - - mpfr_class - - then this expression would result in no less than 11 temporaries (this is - true even though mpfr_class - does use expression templates to reduce the number of temporaries somewhat). - Had we used an even simpler wrapper around GMP - or MPFR like mpclass - things would have been even worse and no less that 24 temporaries are created - for this simple expression (note - we actually measure the number of memory - allocations performed rather than the number of temporaries directly). -

    -

    - This library also extends expression template support to standard library functions - like abs or sin - with mp_number arguments. This - means that an expression such as: -

    -
    y = abs(x);
    -
    -

    - can be evaluated without a single temporary being calculated. Even expressions - like: -

    -
    y = sin(x);
    -
    -

    - get this treatment, so that variable 'y' is used as "working storage" - within the implementation of sin, - thus reducing the number of temporaries used by one. Of course, should you - write: -

    -
    x = sin(x);
    -
    -

    - Then we clearly can't use x - as working storage during the calculation, so then a temporary variable is - created in this case. -

    -

    - Given the comments above, you might be forgiven for thinking that expression-templates - are some kind of universal-panacea: sadly though, all tricks like this have - their downsides. For one thing, expression template libraries like this one, - tend to be slower to compile than their simpler cousins, they're also harder - to debug (should you actually want to step through our code!), and rely on - compiler optimizations being turned on to give really good performance. Also, - since the return type from expressions involving mp_numbers - is an "unmentionable implementation detail", you have to be careful - to cast the result of an expression to the actual number type when passing - an expression to a template function. For example, given: -

    -
    template <class T>
    -void my_proc(const T&);
    -
    -

    - Then calling: -

    -
    my_proc(a+b);
    -
    -

    - Will very likely result in obscure error messages inside the body of my_proc - since we've passed it an expression - template type, and not a number type. Instead we probably need: -

    -
    my_proc(my_mp_number_type(a+b));
    -
    -

    - Having said that, these situations don't occur that often - or indeed not at - all for non-template functions. In addition, all the functions in the Boost.Math - library will automatically convert expression-template arguments to the underlying - number type without you having to do anything, so: -

    -
    mpfr_float_100 a(20), delta(0.125);
    -boost::math::gamma_p(a, a + delta);
    -
    -

    - Will work just fine, with the a + delta expression - template argument getting converted to an mpfr_float_100 - internally by the Boost.Math library. -

    -

    - One other potential pitfall that's only possible in C++11: you should never - store an expression template using: -

    -
    auto my_expression = a + b - c;
    -
    -

    - unless you're absolutely sure that the lifetimes of a, - b and c - will outlive that of my_expression. -

    -

    - And finally... the performance improvements from an expression template library - like this are often not as dramatic as the reduction in number of temporaries - would suggest. For example if we compare this library with mpfr_class - and mpreal, with - all three using the underlying MPFR - library at 50 decimal digits precision then we see the following typical results - for polynomial execution: -

    -
    -

    Table 1.1. Evaluation of Order 6 Polynomial.

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - Relative Time -

    -
    -

    - Relative number of memory allocations -

    -
    -

    - mp_number -

    -
    -

    - 1.0 (0.00793s) -

    -
    -

    - 1.0 (2996 total) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.2 (0.00931s) -

    -
    -

    - 4.3 (12976 total) -

    -
    -

    - mpreal -

    -
    -

    - 1.9 (0.0148s) -

    -
    -

    - 9.3 (27947 total) -

    -
    -
    -

    - As you can see, the execution time increases a lot more slowly than the number - of memory allocations. There are a number of reasons for this: -

    -
      -
    • - The cost of extended-precision multiplication and division is so great, - that the times taken for these tend to swamp everything else. -
    • -
    • - The cost of an in-place multiplication (using operator*=) tends to be more than an out-of-place - operator* - (typically operator *= - has to create a temporary workspace to carry out the multiplication, where - as operator* - can use the target variable as workspace). Since the expression templates - carry out their magic by converting out-of-place operators to in-place - ones, we necessarily take this hit. Even so the transformation is more - efficient than creating the extra temporary variable, just not by as much - as one would hope. -
    • -
    -

    - Finally, note that mp_number - takes a second template argument, which, when set to false - disables all the expression template machinary. The result is much faster to - compile, but slower at runtime. -

    -

    - We'll conclude this section by providing some more performance comparisons - between these three libraries, again, all are using MPFR - to carry out the underlying arithmetic, and all are operating at the same precision - (50 decimal digits): -

    -
    -

    Table 1.2. Evaluation of Boost.Math's Bessel function test data

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - Relative Time -

    -
    -

    - Relative Number of Memory Allocations -

    -
    -

    - mp_number -

    -
    -

    - 1.0 (6.21s) -

    -
    -

    - 1.0 (2685469) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.04 (6.45s) -

    -
    -

    - 1.47 (3946007) -

    -
    -

    - mpreal -

    -
    -

    - 1.53 (9.52s) -

    -
    -

    - 4.92 (13222940) -

    -
    -
    -
    -

    Table 1.3. Evaluation of Boost.Math's Non-Central T distribution test data

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - Relative Time -

    -
    -

    - Relative Number of Memory Allocations -

    -
    -

    - mp_number -

    -
    -

    - 1.0 (269s) -

    -
    -

    - 1.0 (139082551) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.04 (278s) -

    -
    -

    - 1.81 (252400791) -

    -
    -

    - mpreal -

    -
    -

    - 1.49 (401s) -

    -
    -

    - 3.22 (447009280) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html deleted file mode 100644 index d2f2120d..00000000 --- a/doc/html/boost_multiprecision/map.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -Roadmap - - - - - - - - -
    -PrevUpHomeNext -
    -
    - - -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html deleted file mode 100644 index 28b46cd6..00000000 --- a/doc/html/boost_multiprecision/map/hist.html +++ /dev/null @@ -1,32 +0,0 @@ - - - -History - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html deleted file mode 100644 index e849897d..00000000 --- a/doc/html/boost_multiprecision/map/todo.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -TODO - - - - - - - -
    -PrevUpHome -
    -
    -

    -TODO -

    -

    - More a list of what could be done, rather than what - should be done (which may be a much smaller list!). -

    -
      -
    • - Add back-end support for libdecNumber. -
    • -
    • - Add an adapter back-end for complex number types. -
    • -
    • - Add a back-end for MPFR interval arithmetic. -
    • -
    • - Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend. -
    • -
    • - Add assembly level routines to cpp_int_backend. -
    • -
    • - Add an all C++ binary floating point type. -
    • -
    -
    - - - -
    -
    -
    -PrevUpHome -
    - - diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html deleted file mode 100644 index 7460f077..00000000 --- a/doc/html/boost_multiprecision/perf.html +++ /dev/null @@ -1,46 +0,0 @@ - - - -Performance Comparison - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html deleted file mode 100644 index 90f06dcc..00000000 --- a/doc/html/boost_multiprecision/perf/float_performance.html +++ /dev/null @@ -1,961 +0,0 @@ - - - -Float Algorithm Perfomance - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Note that these tests are carefully designed to test performance of the underlying - algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticism, and real-world - peformance may vary widely depending upon the specifics of the program. In - each table relative times are given first, with the best performer given - a score of 1. Total actual times are given in brackets, measured in seconds - for 500000 operations. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    -

    Table 1.8. Operator +

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1 (0.02382s) -

    -
    -

    - 1 (0.0294619s) -

    -
    -

    - 1 (0.058466s) -

    -
    -

    - gmp_float -

    -
    -

    - 4.55086 (0.108402s) -

    -
    -

    - 3.86443 (0.113853s) -

    -
    -

    - 2.6241 (0.15342s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.52036 (0.060035s) -

    -
    -

    - 2.1833 (0.0643242s) -

    -
    -

    - 1.37736 (0.0805287s) -

    -
    -
    -
    -

    Table 1.9. Operator +(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.56759 (0.0527023s) -

    -
    -

    - 1.74629 (0.0618102s) -

    -
    -

    - 1.68077 (0.105927s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.0336201s) -

    -
    -

    - 1 (0.0353951s) -

    -
    -

    - 1 (0.0630232s) -

    -
    -

    - mpfr_float -

    -
    -

    - 3.14875 (0.105861s) -

    -
    -

    - 3.15499 (0.111671s) -

    -
    -

    - 1.92831 (0.121528s) -

    -
    -
    -
    -

    Table 1.10. Operator -

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1 (0.0265783s) -

    -
    -

    - 1 (0.031465s) -

    -
    -

    - 1 (0.0619405s) -

    -
    -

    - gmp_float -

    -
    -

    - 4.66954 (0.124108s) -

    -
    -

    - 3.72645 (0.117253s) -

    -
    -

    - 2.67536 (0.165713s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.7909 (0.0741774s) -

    -
    -

    - 2.48557 (0.0782083s) -

    -
    -

    - 1.50944 (0.0934957s) -

    -
    -
    -
    -

    Table 1.11. Operator -(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1 (0.0577674s) -

    -
    -

    - 1 (0.0633795s) -

    -
    -

    - 1 (0.11146s) -

    -
    -

    - gmp_float -

    -
    -

    - 2.31811 (0.133911s) -

    -
    -

    - 2.07251 (0.131355s) -

    -
    -

    - 1.67161 (0.186319s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.45081 (0.141577s) -

    -
    -

    - 2.29174 (0.145249s) -

    -
    -

    - 1.395 (0.155487s) -

    -
    -
    -
    -

    Table 1.12. Operator *

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.07276 (0.287898s) -

    -
    -

    - 1.47724 (0.584569s) -

    -
    -

    - 1.55145 (5.09969s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.268372s) -

    -
    -

    - 1 (0.395718s) -

    -
    -

    - 1 (3.28705s) -

    -
    -

    - mpfr_float -

    -
    -

    - 1.27302 (0.341642s) -

    -
    -

    - 1.17649 (0.465557s) -

    -
    -

    - 1.14029 (3.7482s) -

    -
    -
    -
    -

    Table 1.13. Operator *(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 2.89945 (0.11959s) -

    -
    -

    - 4.56335 (0.197945s) -

    -
    -

    - 9.03602 (0.742044s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.0412457s) -

    -
    -

    - 1 (0.0433772s) -

    -
    -

    - 1 (0.0821206s) -

    -
    -

    - mpfr_float -

    -
    -

    - 3.6951 (0.152407s) -

    -
    -

    - 3.71977 (0.161353s) -

    -
    -

    - 3.30958 (0.271785s) -

    -
    -
    -
    -

    Table 1.14. Operator /

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 3.24327 (4.00108s) -

    -
    -

    - 5.00532 (8.12985s) -

    -
    -

    - 6.79566 (54.2796s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (1.23366s) -

    -
    -

    - 1 (1.62424s) -

    -
    -

    - 1 (7.9874s) -

    -
    -

    - mpfr_float -

    -
    -

    - 1.32521 (1.63486s) -

    -
    -

    - 1.38967 (2.25716s) -

    -
    -

    - 1.72413 (13.7713s) -

    -
    -
    -
    -

    Table 1.15. Operator /(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.45093 (0.253675s) -

    -
    -

    - 1.83306 (0.419569s) -

    -
    -

    - 2.3644 (1.64187s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.174836s) -

    -
    -

    - 1 (0.22889s) -

    -
    -

    - 1 (0.694411s) -

    -
    -

    - mpfr_float -

    -
    -

    - 1.16731 (0.204088s) -

    -
    -

    - 1.13211 (0.259127s) -

    -
    -

    - 1.02031 (0.708513s) -

    -
    -
    -
    -

    Table 1.16. Operator str

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.4585 (0.0188303s) -

    -
    -

    - 1.55515 (0.03172s) -

    -
    -

    - 1 (0.131962s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.0129107s) -

    -
    -

    - 1 (0.0203967s) -

    -
    -

    - 1.04632 (0.138075s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.19015 (0.0282764s) -

    -
    -

    - 1.84679 (0.0376683s) -

    -
    -

    - 1.20295 (0.158743s) -

    -
    -
    -

    - ] -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html deleted file mode 100644 index 89278b58..00000000 --- a/doc/html/boost_multiprecision/perf/int_real_world.html +++ /dev/null @@ -1,217 +0,0 @@ - - - -Integer Real World Tests - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - These tests - measure the time taken to generate 1000 128-bit random numbers and test for - primality using the Miller Rabin test. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and libtommath-0.42.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Integer Type -

    -
    -

    - Relative (and Absolute) Times -

    -
    -

    - mpz_int -

    -
    -

    - 1.08279(0.370326s) -

    -
    -

    - mpz_int (no Expression templates) -

    -
    -

    - 1.1702(0.400222s) -

    -
    -

    - cpp_int -

    -
    -

    - 1.3612(0.465547s) -

    -
    -

    - cpp_int (no Expression templates) -

    -
    -

    - 1.33286(0.455854s) -

    -
    -

    - cpp_int (64-bit cache) -

    -
    -

    - 1.33134(0.455333s) -

    -
    -

    - cpp_int (256-bit cache) -

    -
    -

    - 1.29367(0.442451s) -

    -
    -

    - cpp_int (512-bit cache) -

    -
    -

    - 1.08821(0.37218s) -

    -
    -

    - cpp_int (1024-bit cache) -

    -
    -

    - 1.07902(0.369037s) -

    -
    -

    - mp_int1024_t -

    -
    -

    - 1.02616(0.35096s) -

    -
    -

    - mp_int1024_t (no Expression templates) -

    -
    -

    - 1(0.342011s) -

    -
    -

    - tom_int -

    -
    -

    - 3.74233(1.27992s) -

    -
    -

    - tom_int (no Expression templates) -

    -
    -

    - 3.97646(1.35999s) -

    -
    -

    - It's interesting to note that expression templates have little effect here - - perhaps because the actual expressions involved are relatively trivial - in this case - so the time taken for multiplication and division tends to - dominate. Also note how increasing the internal cache size used by cpp_int is quite effective in this case - in cutting out memory allocations altogether - cutting about a third off - the total runtime. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html deleted file mode 100644 index 6ad820a4..00000000 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ /dev/null @@ -1,3034 +0,0 @@ - - - -Integer Algorithm Perfomance - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Note that these tests are carefully designed to test performance of the underlying - algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticism, and real-world - peformance may vary widely depending upon the specifics of the program. In - each table relative times are given first, with the best performer given - a score of 1. Total actual times are given in brackets, measured in seconds - for 500000 operations. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -

    - Linux x86_64 results are broadly similar, except that libtommath performs - much better there. -

    -
    -

    Table 1.17. Operator +

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.24574 (0.0270133s) -

    -
    -

    - 1.09665 (0.0352319s) -

    -
    -

    - 1.25708 (0.0524047s) -

    -
    -

    - 1.31488 (0.08777s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.05787 (0.0229394s) -

    -
    -

    - 1 (0.0321268s) -

    -
    -

    - 1.16171 (0.0484289s) -

    -
    -

    - 1.24017 (0.0827832s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.08016 (0.0451073s) -

    -
    -

    - 1.33792 (0.042983s) -

    -
    -

    - 1.19676 (0.0498904s) -

    -
    -

    - 1 (0.0667514s) -

    -
    -

    - tommath_int -

    -
    -

    - 1 (0.0216845s) -

    -
    -

    - 1.07779 (0.0346258s) -

    -
    -

    - 1 (0.0416877s) -

    -
    -

    - 1.06344 (0.0709863s) -

    -
    -
    -
    -

    Table 1.18. Operator +(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.46244 (0.0202077s) -

    -
    -

    - 1.20665 (0.0238576s) -

    -
    -

    - 1.17647 (0.0258293s) -

    -
    -

    - 1.12424 (0.0317931s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0138178s) -

    -
    -

    - 1 (0.0197719s) -

    -
    -

    - 1 (0.0219548s) -

    -
    -

    - 1 (0.0282796s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.15321 (0.0297527s) -

    -
    -

    - 2.09834 (0.041488s) -

    -
    -

    - 2.89935 (0.0636546s) -

    -
    -

    - 3.70262 (0.104709s) -

    -
    -

    - tommath_int -

    -
    -

    - 17.1419 (0.236864s) -

    -
    -

    - 12.9762 (0.256563s) -

    -
    -

    - 12.3275 (0.270648s) -

    -
    -

    - 10.7373 (0.303648s) -

    -
    -
    -
    -

    Table 1.19. Operator -

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.15385 (0.029665s) -

    -
    -

    - 1.08217 (0.0369886s) -

    -
    -

    - 1.05882 (0.051534s) -

    -
    -

    - 1.12132 (0.0822725s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0257095s) -

    -
    -

    - 1 (0.0341801s) -

    -
    -

    - 1 (0.0486711s) -

    -
    -

    - 1.08659 (0.0797242s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.56685 (0.040283s) -

    -
    -

    - 1.32917 (0.0454312s) -

    -
    -

    - 1.06917 (0.0520378s) -

    -
    -

    - 1 (0.0733708s) -

    -
    -

    - tommath_int -

    -
    -

    - 1.059 (0.0272264s) -

    -
    -

    - 1.16974 (0.0399818s) -

    -
    -

    - 1.01303 (0.0493054s) -

    -
    -

    - 1.03375 (0.0758472s) -

    -
    -
    -
    -

    Table 1.20. Operator -(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.51665 (0.0157196s) -

    -
    -

    - 1.31513 (0.0200533s) -

    -
    -

    - 1.29599 (0.0235066s) -

    -
    -

    - 1.21534 (0.0266136s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0103647s) -

    -
    -

    - 1 (0.0152482s) -

    -
    -

    - 1 (0.018138s) -

    -
    -

    - 1 (0.021898s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.7938 (0.0289568s) -

    -
    -

    - 2.55493 (0.038958s) -

    -
    -

    - 3.12248 (0.0566356s) -

    -
    -

    - 4.48855 (0.0982904s) -

    -
    -

    - tommath_int -

    -
    -

    - 20.8695 (0.216305s) -

    -
    -

    - 15.0705 (0.229797s) -

    -
    -

    - 13.4093 (0.243217s) -

    -
    -

    - 12.2599 (0.268468s) -

    -
    -
    -
    -

    Table 1.21. Operator *

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.29504 (0.0731032s) -

    -
    -

    - 1.55431 (0.196132s) -

    -
    -

    - 1.4363 (0.656569s) -

    -
    -

    - 1.63701 (2.47859s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0564485s) -

    -
    -

    - 1.16604 (0.147138s) -

    -
    -

    - 1 (0.457124s) -

    -
    -

    - 1 (1.5141s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.19574 (0.0674975s) -

    -
    -

    - 1 (0.126186s) -

    -
    -

    - 1.16627 (0.53313s) -

    -
    -

    - 1.02906 (1.5581s) -

    -
    -

    - tommath_int -

    -
    -

    - 1.97229 (0.111333s) -

    -
    -

    - 2.67087 (0.337027s) -

    -
    -

    - 2.13031 (0.973817s) -

    -
    -

    - 2.05869 (3.11706s) -

    -
    -
    -
    -

    Table 1.22. Operator *(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.34609 (0.030315s) -

    -
    -

    - 1.57086 (0.0407838s) -

    -
    -

    - 1.60154 (0.0542267s) -

    -
    -

    - 1.67808 (0.0804984s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.29783 (0.0292279s) -

    -
    -

    - 1.58263 (0.0410894s) -

    -
    -

    - 1.61543 (0.054697s) -

    -
    -

    - 1.66841 (0.0800346s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (0.0225207s) -

    -
    -

    - 1 (0.0259628s) -

    -
    -

    - 1 (0.033859s) -

    -
    -

    - 1 (0.0479706s) -

    -
    -

    - tommath_int -

    -
    -

    - 12.4278 (0.279882s) -

    -
    -

    - 11.9045 (0.309074s) -

    -
    -

    - 10.5973 (0.358813s) -

    -
    -

    - 9.47384 (0.454466s) -

    -
    -
    -
    -

    Table 1.23. Operator /

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 2.86387 (0.593314s) -

    -
    -

    - 2.18375 (0.69965s) -

    -
    -

    - 1.72571 (0.918294s) -

    -
    -

    - 1.39251 (1.33801s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.207172s) -

    -
    -

    - 1 (0.320389s) -

    -
    -

    - 1 (0.532127s) -

    -
    -

    - 1 (0.960856s) -

    -
    -

    - gmp_int -

    -
    -

    - 3.89115 (0.806137s) -

    -
    -

    - 2.87573 (0.921352s) -

    -
    -

    - 1.96635 (1.04635s) -

    -
    -

    - 1.29618 (1.24544s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.9483 (2.47535s) -

    -
    -

    - 9.35941 (2.99865s) -

    -
    -

    - 8.79014 (4.67747s) -

    -
    -

    - 11.8316 (11.3684s) -

    -
    -
    -
    -

    Table 1.24. Operator /(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 5.77003 (0.313196s) -

    -
    -

    - 4.38067 (0.431864s) -

    -
    -

    - 3.55054 (0.634559s) -

    -
    -

    - 2.97898 (1.03205s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 2.48952 (0.135131s) -

    -
    -

    - 2.59188 (0.255519s) -

    -
    -

    - 2.56716 (0.458808s) -

    -
    -

    - 2.52368 (0.874313s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (0.0542797s) -

    -
    -

    - 1 (0.0985842s) -

    -
    -

    - 1 (0.178722s) -

    -
    -

    - 1 (0.346443s) -

    -
    -

    - tommath_int -

    -
    -

    - 31.6477 (1.71783s) -

    -
    -

    - 22.8727 (2.25489s) -

    -
    -

    - 19.9248 (3.56101s) -

    -
    -

    - 24.3266 (8.42779s) -

    -
    -
    -
    -

    Table 1.25. Operator %

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.9813 (0.357541s) -

    -
    -

    - 1.55667 (0.460146s) -

    -
    -

    - 1.35341 (0.681144s) -

    -
    -

    - 1.19906 (1.10138s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.180457s) -

    -
    -

    - 1 (0.295597s) -

    -
    -

    - 1 (0.503278s) -

    -
    -

    - 1 (0.918538s) -

    -
    -

    - gmp_int -

    -
    -

    - 3.50213 (0.631985s) -

    -
    -

    - 2.33312 (0.689662s) -

    -
    -

    - 1.57264 (0.791475s) -

    -
    -

    - 1.07795 (0.99014s) -

    -
    -

    - tommath_int -

    -
    -

    - 12.2393 (2.20868s) -

    -
    -

    - 10.1123 (2.98915s) -

    -
    -

    - 9.46676 (4.76442s) -

    -
    -

    - 12.1795 (11.1873s) -

    -
    -
    -
    -

    Table 1.26. Operator %(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.88485 (0.105552s) -

    -
    -

    - 2.00194 (0.203711s) -

    -
    -

    - 2.08202 (0.380096s) -

    -
    -

    - 2.12794 (0.752068s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.7474 (0.0978544s) -

    -
    -

    - 1.88457 (0.191768s) -

    -
    -

    - 2.0306 (0.37071s) -

    -
    -

    - 2.0851 (0.736929s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (0.0560001s) -

    -
    -

    - 1 (0.101757s) -

    -
    -

    - 1 (0.182561s) -

    -
    -

    - 1 (0.353426s) -

    -
    -

    - tommath_int -

    -
    -

    - 30.4466 (1.70501s) -

    -
    -

    - 22.2997 (2.26915s) -

    -
    -

    - 19.6199 (3.58184s) -

    -
    -

    - 24.0694 (8.50676s) -

    -
    -
    -
    -

    Table 1.27. Operator <<

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.20362 (0.0224696s) -

    -
    -

    - 1.08555 (0.0294403s) -

    -
    -

    - 1 (0.0360516s) -

    -
    -

    - 1.07177 (0.0523935s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0186683s) -

    -
    -

    - 1 (0.0271201s) -

    -
    -

    - 1.02126 (0.036818s) -

    -
    -

    - 1 (0.0488848s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.36706 (0.0255207s) -

    -
    -

    - 1.12042 (0.0303858s) -

    -
    -

    - 1.24359 (0.0448335s) -

    -
    -

    - 1.40143 (0.0685085s) -

    -
    -

    - tommath_int -

    -
    -

    - 2.09357 (0.0390833s) -

    -
    -

    - 2.4569 (0.0666312s) -

    -
    -

    - 2.63592 (0.0950291s) -

    -
    -

    - 3.43638 (0.167987s) -

    -
    -
    -
    -

    Table 1.28. Operator >>

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.33649 (0.0210319s) -

    -
    -

    - 1.12919 (0.0266135s) -

    -
    -

    - 1.10413 (0.0307184s) -

    -
    -

    - 1.09267 (0.0399373s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0157367s) -

    -
    -

    - 1 (0.0235686s) -

    -
    -

    - 1 (0.0278214s) -

    -
    -

    - 1.05198 (0.0384501s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.72135 (0.0270884s) -

    -
    -

    - 1.2078 (0.0284661s) -

    -
    -

    - 1.16066 (0.0322912s) -

    -
    -

    - 1 (0.0365503s) -

    -
    -

    - tommath_int -

    -
    -

    - 15.4381 (0.242945s) -

    -
    -

    - 11.8797 (0.279987s) -

    -
    -

    - 10.9043 (0.303374s) -

    -
    -

    - 14.0762 (0.514491s) -

    -
    -
    -
    -

    Table 1.29. Operator &

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.65829 (0.0314059s) -

    -
    -

    - 1.42198 (0.0390384s) -

    -
    -

    - 1.48578 (0.0498903s) -

    -
    -

    - 1.51243 (0.0770342s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0189387s) -

    -
    -

    - 1 (0.0274536s) -

    -
    -

    - 1 (0.0335786s) -

    -
    -

    - 1 (0.0509341s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.80248 (0.0530755s) -

    -
    -

    - 2.39752 (0.0658206s) -

    -
    -

    - 2.66009 (0.089322s) -

    -
    -

    - 2.73942 (0.13953s) -

    -
    -

    - tommath_int -

    -
    -

    - 6.95432 (0.131706s) -

    -
    -

    - 5.4059 (0.148412s) -

    -
    -

    - 4.56887 (0.153417s) -

    -
    -

    - 6.5696 (0.334616s) -

    -
    -
    -
    -

    Table 1.30. Operator &(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.63285 (0.0472296s) -

    -
    -

    - 1.43344 (0.0588492s) -

    -
    -

    - 1.33141 (0.0724386s) -

    -
    -

    - 1.21353 (0.104144s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0289247s) -

    -
    -

    - 1 (0.0410546s) -

    -
    -

    - 1 (0.0544075s) -

    -
    -

    - 1 (0.0858187s) -

    -
    -

    - gmp_int -

    -
    -

    - 5.24478 (0.151704s) -

    -
    -

    - 3.81907 (0.15679s) -

    -
    -

    - 2.77979 (0.151242s) -

    -
    -

    - 1.84209 (0.158086s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.7257 (0.339163s) -

    -
    -

    - 8.6379 (0.354625s) -

    -
    -

    - 6.90411 (0.375636s) -

    -
    -

    - 7.63253 (0.655013s) -

    -
    -
    -
    -

    Table 1.31. Operator ^

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.39325 (0.0297525s) -

    -
    -

    - 1.28821 (0.0385005s) -

    -
    -

    - 1.18843 (0.0492426s) -

    -
    -

    - 1.07724 (0.0758668s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0213547s) -

    -
    -

    - 1 (0.0298868s) -

    -
    -

    - 1 (0.041435s) -

    -
    -

    - 1 (0.070427s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.28582 (0.048813s) -

    -
    -

    - 2.03478 (0.0608129s) -

    -
    -

    - 2.05655 (0.0852131s) -

    -
    -

    - 1.92381 (0.135488s) -

    -
    -

    - tommath_int -

    -
    -

    - 6.17078 (0.131775s) -

    -
    -

    - 4.8567 (0.145151s) -

    -
    -

    - 3.64659 (0.151097s) -

    -
    -

    - 4.78192 (0.336776s) -

    -
    -
    -
    -

    Table 1.32. Operator ^(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.89396 (0.0383127s) -

    -
    -

    - 1.64269 (0.043417s) -

    -
    -

    - 1.5386 (0.0477162s) -

    -
    -

    - 1.32247 (0.0568053s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0202288s) -

    -
    -

    - 1 (0.0264305s) -

    -
    -

    - 1 (0.0310128s) -

    -
    -

    - 1 (0.0429539s) -

    -
    -

    - gmp_int -

    -
    -

    - 7.01953 (0.141997s) -

    -
    -

    - 5.47513 (0.14471s) -

    -
    -

    - 4.6627 (0.144603s) -

    -
    -

    - 3.59601 (0.154463s) -

    -
    -

    - tommath_int -

    -
    -

    - 16.2706 (0.329134s) -

    -
    -

    - 12.9494 (0.342258s) -

    -
    -

    - 11.3305 (0.35139s) -

    -
    -

    - 14.1712 (0.608709s) -

    -
    -
    -
    -

    Table 1.33. Operator |

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.34742 (0.0296944s) -

    -
    -

    - 1.25923 (0.0384846s) -

    -
    -

    - 1.20517 (0.0493908s) -

    -
    -

    - 1.10536 (0.0761343s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0220379s) -

    -
    -

    - 1 (0.030562s) -

    -
    -

    - 1 (0.0409823s) -

    -
    -

    - 1 (0.0688775s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.14429 (0.0472558s) -

    -
    -

    - 1.95901 (0.0598712s) -

    -
    -

    - 2.07584 (0.0850728s) -

    -
    -

    - 1.94265 (0.133805s) -

    -
    -

    - tommath_int -

    -
    -

    - 5.98286 (0.13185s) -

    -
    -

    - 4.65705 (0.142329s) -

    -
    -

    - 3.85812 (0.158115s) -

    -
    -

    - 4.81524 (0.331662s) -

    -
    -
    -
    -

    Table 1.34. Operator |(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.40808 (0.0389721s) -

    -
    -

    - 1.65035 (0.0437872s) -

    -
    -

    - 1.51667 (0.0466144s) -

    -
    -

    - 1.37806 (0.0582842s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0276775s) -

    -
    -

    - 1 (0.026532s) -

    -
    -

    - 1 (0.0307348s) -

    -
    -

    - 1 (0.0422945s) -

    -
    -

    - gmp_int -

    -
    -

    - 5.31451 (0.147092s) -

    -
    -

    - 5.37333 (0.142565s) -

    -
    -

    - 4.86508 (0.149527s) -

    -
    -

    - 3.74364 (0.158335s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.9312 (0.330226s) -

    -
    -

    - 12.943 (0.343403s) -

    -
    -

    - 11.4457 (0.35178s) -

    -
    -

    - 14.4462 (0.610997s) -

    -
    -
    -
    -

    Table 1.35. Operator gcd

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.82514 (4.45586s) -

    -
    -

    - 1.75955 (10.1748s) -

    -
    -

    - 1.87025 (25.23s) -

    -
    -

    - 2.11453 (68.8556s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.57965 (3.85654s) -

    -
    -

    - 1.67404 (9.68027s) -

    -
    -

    - 1.8405 (24.8287s) -

    -
    -

    - 2.27588 (74.1096s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (2.44138s) -

    -
    -

    - 1 (5.78259s) -

    -
    -

    - 1 (13.4902s) -

    -
    -

    - 1 (32.5631s) -

    -
    -

    - tommath_int -

    -
    -

    - 5.01357 (12.24s) -

    -
    -

    - 4.38161 (25.337s) -

    -
    -

    - 4.08681 (55.1319s) -

    -
    -

    - 4.01045 (130.593s) -

    -
    -
    -
    -

    Table 1.36. Operator str

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.46421 (0.00195137s) -

    -
    -

    - 1.21669 (0.00319216s) -

    -
    -

    - 1.25041 (0.00765237s) -

    -
    -

    - 1.53339 (0.0218096s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.00133271s) -

    -
    -

    - 1 (0.00262366s) -

    -
    -

    - 1.0109 (0.00618661s) -

    -
    -

    - 1.24429 (0.0176978s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.7777 (0.00236916s) -

    -
    -

    - 1.27408 (0.00334274s) -

    -
    -

    - 1 (0.00611991s) -

    -
    -

    - 1 (0.0142232s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.9797 (0.0159654s) -

    -
    -

    - 18.3349 (0.0481046s) -

    -
    -

    - 18.3681 (0.112411s) -

    -
    -

    - 25.0355 (0.356085s) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html deleted file mode 100644 index 6754381e..00000000 --- a/doc/html/boost_multiprecision/perf/rational_performance.html +++ /dev/null @@ -1,905 +0,0 @@ - - - -Rational Type Perfomance - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Note that these tests are carefully designed to test performance of the underlying - algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticism, and real-world - peformance may vary widely depending upon the specifics of the program. In - each table relative times are given first, with the best performer given - a score of 1. Total actual times are given in brackets, measured in seconds - for 500000 operations. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    -

    Table 1.37. Operator +

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.91758 (18.1263s) -

    -
    -

    - 6.60754 (44.1182s) -

    -
    -

    - 6.65334 (103.169s) -

    -
    -

    - 6.44717 (244.055s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (3.06312s) -

    -
    -

    - 1 (6.67695s) -

    -
    -

    - 1 (15.5064s) -

    -
    -

    - 1 (37.8546s) -

    -
    -
    -
    -

    Table 1.38. Operator +(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 3.98512 (2.67249s) -

    -
    -

    - 4.24335 (3.04309s) -

    -
    -

    - 4.65009 (3.83046s) -

    -
    -

    - 5.45832 (5.08346s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (0.670618s) -

    -
    -

    - 1 (0.717144s) -

    -
    -

    - 1 (0.823739s) -

    -
    -

    - 1 (0.931322s) -

    -
    -
    -
    -

    Table 1.39. Operator -

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.91504 (18.2374s) -

    -
    -

    - 6.55676 (43.8659s) -

    -
    -

    - 6.66239 (103.481s) -

    -
    -

    - 6.47224 (244.887s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (3.08322s) -

    -
    -

    - 1 (6.69018s) -

    -
    -

    - 1 (15.5321s) -

    -
    -

    - 1 (37.8365s) -

    -
    -
    -
    -

    Table 1.40. Operator -(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 3.96173 (2.66785s) -

    -
    -

    - 4.36532 (3.09023s) -

    -
    -

    - 4.59363 (3.74494s) -

    -
    -

    - 5.43075 (5.09156s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (0.673405s) -

    -
    -

    - 1 (0.707904s) -

    -
    -

    - 1 (0.815246s) -

    -
    -

    - 1 (0.937541s) -

    -
    -
    -
    -

    Table 1.41. Operator *

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.59286 (32.3559s) -

    -
    -

    - 6.54125 (82.4247s) -

    -
    -

    - 6.8815 (197.198s) -

    -
    -

    - 6.84066 (473.057s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (5.78521s) -

    -
    -

    - 1 (12.6008s) -

    -
    -

    - 1 (28.6562s) -

    -
    -

    - 1 (69.1537s) -

    -
    -
    -
    -

    Table 1.42. Operator *(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 2.70193 (3.1466s) -

    -
    -

    - 3.10134 (3.79056s) -

    -
    -

    - 3.659 (4.93935s) -

    -
    -

    - 4.61372 (6.89845s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (1.16457s) -

    -
    -

    - 1 (1.22223s) -

    -
    -

    - 1 (1.34992s) -

    -
    -

    - 1 (1.4952s) -

    -
    -
    -
    -

    Table 1.43. Operator /

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 4.36846 (63.9498s) -

    -
    -

    - 5.52565 (145.045s) -

    -
    -

    - 6.18331 (328.069s) -

    -
    -

    - 6.49822 (784.806s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (14.639s) -

    -
    -

    - 1 (26.2494s) -

    -
    -

    - 1 (53.0571s) -

    -
    -

    - 1 (120.772s) -

    -
    -
    -
    -

    Table 1.44. Operator /(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 2.26643 (3.13785s) -

    -
    -

    - 2.57125 (3.76931s) -

    -
    -

    - 3.20872 (5.06758s) -

    -
    -

    - 4.02177 (7.17803s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (1.38449s) -

    -
    -

    - 1 (1.46594s) -

    -
    -

    - 1 (1.57931s) -

    -
    -

    - 1 (1.78479s) -

    -
    -
    -
    -

    Table 1.45. Operator str

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.40493 (0.0199393s) -

    -
    -

    - 8.55089 (0.0511907s) -

    -
    -

    - 9.91026 (0.118839s) -

    -
    -

    - 9.93546 (0.285367s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (0.00368909s) -

    -
    -

    - 1 (0.00598659s) -

    -
    -

    - 1 (0.0119915s) -

    -
    -

    - 1 (0.028722s) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html deleted file mode 100644 index 4dd0d5ef..00000000 --- a/doc/html/boost_multiprecision/perf/realworld.html +++ /dev/null @@ -1,278 +0,0 @@ - - - -Floating Point Real World Tests - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - These tests test the total time taken to execute all of Boost.Math's test - cases for these functions. In each case the best performing library gets - a relative score of 1, with the total execution time given in brackets. The - first three libraries listed are the various floating point types provided - by this library, while for comparison, two popular C++ front-ends to MPFR ( mpfr_class - and mpreal) are - also shown. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    -

    Table 1.6. Bessel Function Performance

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - mpfr_float -

    -
    -

    - 1.0 (6.472s) -

    -
    -

    - 1.193 (10.154s) -

    -
    -

    - mpf_float -

    -
    -

    - 1.801 (11.662s) -

    -
    -

    - 1.0(8.511s) -

    -
    -

    - cpp_dec_float -

    -
    -

    - 3.13 (20.285s) -

    -
    -

    - 2.46 (21.019s) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.001 (6.480s) -

    -
    -

    - 1.15(9.805s) -

    -
    -

    - mpreal -

    -
    -

    - 1.542 (9.981s) -

    -
    -

    - 1.61 (13.702s) -

    -
    -
    -
    -

    Table 1.7. Non-Central T Distribution Performance

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - mpfr_float -

    -
    -

    - 1.308 (258.09s) -

    -
    -

    - 1.30 (516.74s) -

    -
    -

    - mpf_float -

    -
    -

    - 1.0 (197.30s) -

    -
    -

    - 1.0(397.30s) -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.695 (334.50s) -

    -
    -

    - 2.68 (1064.53s) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.35 (266.39s) -

    -
    -

    - 1.323 (525.74s) -

    -
    -

    - mpreal -

    -
    -

    - 1.75 (346.64s) -

    -
    -

    - 1.635 (649.94s) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html deleted file mode 100644 index 12b46354..00000000 --- a/doc/html/boost_multiprecision/ref.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -Reference - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html deleted file mode 100644 index e56abc3b..00000000 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ /dev/null @@ -1,2295 +0,0 @@ - - - -Backend Requirements - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The requirements on the Backend - template argument to mp_number - are split up into compulsory requirements, and optional requirements that - are either to improve performance or provide optional features. -

    -

    - In the following tables, type B is the Backend - template arument to mp_number, - b and b2 - are a variables of type B, cb - and cb2 are constant variables - of type B, a is a variable - of Arithmetic type, s is - a variable of type const char*, ui - is a variable of type unsigned, - bb is a variable of type - bool, pa - is a variable of type pointer-to-arithmetic-type, exp - is a variable of type B::exp_type, pexp - is a variable of type B::exp_type*, - B2 is another type that meets these requirements, b2 is a variable of type - B2. -

    -
    -

    Table 1.4. Compulsory Requirements on the Backend type.

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Expression -

    -
    -

    - Return Type -

    -
    -

    - Comments -

    -
    -

    - B::signed_types -

    -
    -

    - mpl::list<type-list> -

    -
    -

    - A list of signed integral types that can be assigned to type B. - The types shall be listed in order of size, smallest first, and - shall terminate in the type that is std::intmax_t. -

    -
    -

    - B::unsigned_types -

    -
    -

    - mpl::list<type-list> -

    -
    -

    - A list of unsigned integral types that can be assigned to type - B. The types shall be listed in order of size, smallest first, - and shall terminate in the type that is std::uintmax_t. -

    -
    -

    - B::float_types -

    -
    -

    - mpl::list<type-list> -

    -
    -

    - A list of floating-point types that can be assigned to type B.The - types shall be listed in order of size, smallest first, and shall - terminate in type long double. -

    -
    -

    - B::exponent_type -

    -
    -

    - A signed integral type. -

    -
    -

    - The type of the exponent of type B. -

    -
    -

    - B() -

    -
    - -

    - Default constructor. -

    -
    -

    - B(cb) -

    -
    - -

    - Copy Constructor. -

    -
    -

    - b = - b -

    -
    -

    - B& -

    -
    -

    - Assignment operator. -

    -
    -

    - b = - a -

    -
    -

    - B& -

    -
    -

    - Assignment from an Arithmetic type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - b = - s -

    -
    -

    - B& -

    -
    -

    - Assignment from a string. -

    -
    -

    - b.swap(b) -

    -
    -

    - void -

    -
    -

    - Swaps the contents of its arguments. -

    -
    -

    - cb.str(ui, - bb) -

    -
    -

    - std::string -

    -
    -

    - Returns the string representation of b - with ui digits - and in scientific format if bb - is true. If ui is zero, then returns as many - digits as are required to reconstruct the original value. -

    -
    -

    - b.negate() -

    -
    -

    - void -

    -
    -

    - Negates b. -

    -
    -

    - cb.compare(cb2) -

    -
    -

    - int -

    -
    -

    - Compares cb and - cb2, returns a - value less than zero if cb - < cb2, - a value greater than zero if cb - > cb2 - and zero if cb == cb2. -

    -
    -

    - cb.compare(a) -

    -
    -

    - int -

    -
    -

    - Compares cb and - a, returns a value - less than zero if cb - < a, - a value greater than zero if cb - > a - and zero if cb == a. - The type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_add(b, - cb) -

    -
    -

    - void -

    -
    -

    - Adds cb to b. -

    -
    -

    - eval_subtract(b, - cb) -

    -
    -

    - void -

    -
    -

    - Subtracts cb from - b. -

    -
    -

    - eval_multiply(b, - cb) -

    -
    -

    - void -

    -
    -

    - Multiplies b by - cb. -

    -
    -

    - eval_divide(b, - cb) -

    -
    -

    - void -

    -
    -

    - Divides b by cb. -

    -
    -

    - eval_modulus(b, - cb) -

    -
    -

    - void -

    -
    -

    - Computes b %= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_bitwise_and(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes b &= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_bitwise_or(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes b |= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_bitwise_xor(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes b ^= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_complement(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes the ones-complement of cb - and stores the result in b, - only required when B - is an integer type. -

    -
    -

    - eval_left_shift(b, ui) -

    -
    -

    - void -

    -
    -

    - Computes b <<= - ui, only required when - B is an integer - type. -

    -
    -

    - eval_right_shift(b, ui) -

    -
    -

    - void -

    -
    -

    - Computes b >>= - ui, only required when - B is an integer - type. -

    -
    -

    - eval_convert_to(pa, cb) -

    -
    -

    - void -

    -
    -

    - Converts cb to - the type of *pa - and store the result in *pa. Type B - shall support conversion to at least types std::intmax_t, - std::uintmax_t and long - long. Conversion to other - arithmetic types can then be synthesised using other operations. - Conversions to other types are entirely optional. -

    -
    -

    - eval_frexp(b, - cb, - pexp) -

    -
    -

    - void -

    -
    -

    - Stores values in b - and *pexp - such that the value of cb - is b * 2*pexp, only required when B - is a floating-point type. -

    -
    -

    - eval_ldexp(b, - cb, - exp) -

    -
    -

    - void -

    -
    -

    - Stores a value in b - that is cb * 2exp, only required when B - is a floating-point type. -

    -
    -

    - eval_floor(b, - cb) -

    -
    -

    - void -

    -
    -

    - Stores the floor of cb - in b, only required - when B is a floating-point - type. -

    -
    -

    - eval_ceil(b, - cb) -

    -
    -

    - void -

    -
    -

    - Stores the ceiling of cb - in b, only required - when B is a floating-point - type. -

    -
    -

    - eval_sqrt(b, - cb) -

    -
    -

    - void -

    -
    -

    - Stores the square root of cb - in b, only required - when B is a floating-point - type. -

    -
    -

    - boost::multiprecision::number_category<B>::type -

    -
    -

    - mpl::int_<N> -

    -
    -

    - N is one of the - values number_kind_integer, - number_kind_floating_point, - number_kind_rational - or number_kind_fixed_point. - Defaults to number_kind_floating_point. -

    -
    -
    -
    -

    Table 1.5. Optional Requirements on the Backend Type

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Expression -

    -
    -

    - Returns -

    -
    -

    - Comments -

    -
    -

    - B(b2) -

    -
    -

    - B -

    -
    -

    - Copy constructor from a different back-end type. -

    -
    -

    - b = - b2 -

    -
    -

    - b& -

    -
    -

    - Assignment operator from a different back-end type. -

    -
    -

    - assign_components(b, a, a) -

    -
    -

    - void -

    -
    -

    - Assigns to b the - two components in the following arguments. Only applies to rational - and complex number types. -

    -
    -

    - assign_components(b, b2, b2) -

    -
    -

    - void -

    -
    -

    - Assigns to b the - two components in the following arguments. Only applies to rational - and complex number types. -

    -
    -

    - eval_add(b, - a) -

    -
    -

    - void -

    -
    -

    - Adds a to b. The type of a shall be listed in one of the - type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_subtract(b, - a) -

    -
    -

    - void -

    -
    -

    - Subtracts a from - b. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - a) -

    -
    -

    - void -

    -
    -

    - Multiplies b by - a. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - a) -

    -
    -

    - void -

    -
    -

    - Divides b by a. The type of a shall be listed in one of the - type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_modulus(b, - a) -

    -
    -

    - void -

    -
    -

    - Computes b %= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_and(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b &= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b |= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b ^= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_add(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Add cb to cb2 and stores the result in - b. -

    -
    -

    - eval_subtract(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Subtracts cb2 from - cb and stores the - result in b. -

    -
    -

    - eval_multiply(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Multiplies cb by - cb2 and stores - the result in b. -

    -
    -

    - eval_divide(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Divides cb by - cb2 and stores - the result in b. -

    -
    -

    - eval_add(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Add cb to a and stores the result in b. The type of a shall be listed in one of the - type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_subtract(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Subtracts a from - cb and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Multiplies cb by - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Divides cb by - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_modulus(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb % - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_and(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb & - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_or(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb | - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_xor(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb ^ - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_add(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Add a to cb and stores the result in - b. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_subtract(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Subtracts cb from - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Multiplies a by - cb and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Divides a by cb and stores the result in - b. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_modulus(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Computes cb % - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_and(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb & - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb | - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb ^ - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_modulus(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Computes cb % - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_and(b, a, cb) -

    -
    -

    - void -

    -
    -

    - Computes cb & - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, a, cb) -

    -
    -

    - void -

    -
    -

    - Computes cb | - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, a, cb) -

    -
    -

    - void -

    -
    -

    - Computes a ^ - cb and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_left_shift(b, cb, ui) -

    -
    -

    - void -

    -
    -

    - Computes cb << - ui and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_right_shift(b, cb, ui) -

    -
    -

    - void -

    -
    -

    - Computes cb >> - ui and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_increment(b) -

    -
    -

    - void -

    -
    -

    - Increments the value of b - by one. -

    -
    -

    - eval_decrement(b) -

    -
    -

    - void -

    -
    -

    - Decrements the value of b - by one. -

    -
    -

    - eval_is_zero(cb) -

    -
    -

    - bool -

    -
    -

    - Returns true if cb is zero, otherwise false -

    -
    -

    - eval_get_sign(cb) -

    -
    -

    - int -

    -
    -

    - Returns a value < zero if cb - is negative, a value > zero if cb - is positive, and zero if cb - is zero. -

    -
    -

    - eval_abs(b, - cb) -

    -
    -

    - void -

    -
    -

    - Set b to the absolute - value of cb. -

    -
    -

    - eval_fabs(b, - cb) -

    -
    -

    - void -

    -
    -

    - Set b to the absolute - value of cb. -

    -
    -

    - eval_fpclassify(cb) -

    -
    -

    - int -

    -
    -

    - Returns one of the same values returned by std::fpclassify. - Only required when B - is an floating-point type. -

    -
    -

    - eval_trunc(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::trunc - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_round(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::round - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_exp(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::exp - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_log(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::log - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_log10(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::log10 - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_sin(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::sin - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_cos(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::cos - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_tan(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::exp - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_asin(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::asin - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_acos(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::acos - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_atan(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::atan - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_sinh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::sinh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_cosh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::cosh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_tanh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::tanh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_fmod(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::fmod - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_pow(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::pow - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_atan2(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::atan - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_qr(cb, - cb2, - b, - b2) -

    -
    -

    - void -

    -
    -

    - Sets b to the result - of cb / - cb2 and b2 to the result of cb % - cb2. Only required when - B is an integer - type. -

    -
    -

    - eval_integer_modulus(cb, ui) -

    -
    -

    - unsigned -

    -
    -

    - Returns the result of cb - % ui. - Only required when B - is an integer type. -

    -
    -

    - eval_lsb(cb) -

    -
    -

    - unsigned -

    -
    -

    - Returns the index of the least significant bit that is set. Only - required when B - is an integer type. -

    -
    -

    - eval_bit_test(cb, - ui) -

    -
    -

    - bool -

    -
    -

    - Returns true if cb - has bit ui set. - Only required when B - is an integer type. -

    -
    -

    - eval_bit_set(b, - ui) -

    -
    -

    - void -

    -
    -

    - Sets the bit at index ui - in b. Only required - when B is an integer - type. -

    -
    -

    - eval_bit_unset(b, ui) -

    -
    -

    - void -

    -
    -

    - Unsets the bit at index ui - in b. Only required - when B is an integer - type. -

    -
    -

    - eval_bit_flip(b, - ui) -

    -
    -

    - void -

    -
    -

    - Flips the bit at index ui - in b. Only required - when B is an integer - type. -

    -
    -

    - eval_gcd(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Sets b to the greatest - common divisor of cb - and cb2. Only required - when B is an integer - type. -

    -
    -

    - eval_lcm(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Sets b to the least - common multiple of cb - and cb2. Only required - when B is an integer - type. -

    -
    -
    -
    - - - - - -
    [Note]Note

    - The non-member functions are all named with an "eval_" prefix - to avoid conflicts with template classes of the same name - in point of - fact this naming convension shouldn't be necessary, but rather works around - some compiler bugs. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html deleted file mode 100644 index f3c1ecf5..00000000 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ /dev/null @@ -1,695 +0,0 @@ - - - -mp_number - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    - - Synopsis -
    -
    namespace boost{ namespace multiprecision{
    -
    -template <class Backend, bool ExpressionTemplates = true>
    -class mp_number
    -{
    -   mp_number();
    -   mp_number(see-below);
    -   mp_number& operator=(see-below);
    -
    -   // Member operators
    -   mp_number& operator+=(const see-below&);
    -   mp_number& operator-=(const see-below&);
    -   mp_number& operator*=(const see-below&);
    -   mp_number& operator/=(const see-below&);
    -   mp_number& operator++();
    -   mp_number& operator--();
    -   mp_number  operator++(int);
    -   mp_number  operator--(int);
    -
    -   mp_number& operator%=(const see-below&);
    -   mp_number& operator&=(const see-below&);
    -   mp_number& operator|=(const see-below&);
    -   mp_number& operator^=(const see-below&);
    -   mp_number& operator<<=(const integer-type&);
    -   mp_number& operator>>=(const integer-type&);
    -
    -   // Use in Boolean context:
    -   operator convertible-to-bool-type()const;
    -   // swap:
    -   void swap(mp_number& other);
    -   // Sign:
    -   bool is_zero()const;
    -   int sign()const;
    -   // string conversion:
    -   std::string str()const;
    -   // Generic conversion mechanism
    -   template <class T>
    -   T convert_to()const;
    -   // precision control:
    -   static unsigned default_precision();
    -   static void default_precision(unsigned digits10);
    -   unsigned precision()const;
    -   void precision(unsigned digits10);
    -   // Comparison:
    -   int compare(const mp_number<Backend>& o)const;
    -   template <class V>
    -   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
    -   // Access to the underlying implementation:
    -   Backend& backend();
    -   const Backend& backend()const;
    -};
    -
    -// Non member operators:
    -unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    -// Integer only operations:
    -unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    -unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    -// Comparison operators:
    -bool operator==(const see-below&, const see-below&);
    -bool operator!=(const see-below&, const see-below&);
    -bool operator< (const see-below&, const see-below&);
    -bool operator> (const see-below&, const see-below&);
    -bool operator<=(const see-below&, const see-below&);
    -bool operator>=(const see-below&, const see-below&);
    -
    -// Swap:
    -template <class Backend, bool ExpressionTemplates>
    -void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    -
    -// iostream support:
    -template <class Backend, bool ExpressionTemplates>
    -std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    -std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
    -template <class Backend, bool ExpressionTemplates>
    -std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r);
    -
    -// Non-member function standard library support:
    -unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    -
    -unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    -unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    -unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -
    -// Traits support:
    -template <class T>
    -struct component_type;
    -template <class T>
    -struct number_category;
    -
    -// Integer specific functions:
    -template <class Backend, bool ExpressionTemplates>
    -bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    -               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    -template <class Integer>
    -Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    -unsigned lsb(const mp_number-or-expression-template-type& x);
    -template <class Backend, class ExpressionTemplates>
    -bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Engine>
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    -
    -// Rational number support:
    -typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    -typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    -
    -}} // namespaces
    -
    -namespace boost{ namespace math{
    -
    -// Boost.Math interoperability functions:
    -int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
    -bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
    -bool                                             isnan          (const mp_number-or-expression-template-type&, int);
    -bool                                             isinf          (const mp_number-or-expression-template-type&, int);
    -bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
    -
    -}} // namespaces
    -
    -// numeric_limits support:
    -namespace std{
    -
    -template <class Backend, bool ExpressionTemplates>
    -struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    -{
    -   /* Usual members here */
    -};
    -
    -}
    -
    -
    - - Description -
    -
    template <class Backend, bool ExpressionTemplates = true>
    -class mp_number;
    -
    -

    - Class mp_number has two template - arguments: -

    -
    -

    -
    -
    Backend
    -

    - The actual arithmetic back-end that does all the work. -

    -
    ExpressionTemplates
    -

    - A boolean value: when true, then expression templates are enabled, - otherwise they are disabled. -

    -
    -
    -
    mp_number();
    -mp_number(see-below);
    -mp_number& operator=(see-below);
    -
    -

    - Type mp_number is default - constructible, and both copy constructible and assignable from: -

    -
      -
    • - Itself. -
    • -
    • - An expression template which is the result of one of the arithmetic operators. -
    • -
    • - Any builtin arithmetic type. -
    • -
    • - A std::string or any type which is convertible - to const char*. -
    • -
    • - Any type that the Backend is constructible or assignable from. -
    • -
    -

    - In addition, if the type has multiple components (for example rational or - complex number types), then there is a two argument constructor: -

    -
    mp_number(arg1, arg2);
    -
    -

    - Where the two args must either be arithmetic types, or types that are convertible - to the two components of this. -

    -
    mp_number& operator+=(const see-below&);
    -mp_number& operator-=(const see-below&);
    -mp_number& operator*=(const see-below&);
    -mp_number& operator/=(const see-below&);
    -mp_number& operator++();
    -mp_number& operator--();
    -mp_number  operator++(int);
    -mp_number  operator--(int);
    -// Integer only operations:
    -mp_number& operator%=(const see-below&);
    -mp_number& operator&=(const see-below&);
    -mp_number& operator|=(const see-below&);
    -mp_number& operator^=(const see-below&);
    -mp_number& operator<<=(const integer-type&);
    -mp_number& operator>>=(const integer-type&);
    -
    -

    - These operators all take their usual arithmetic meanings. -

    -

    - The arguments to these operators is either: -

    -
      -
    • - Another mp_number<Backend, - ExpressionTemplates>. -
    • -
    • - A builtin arithmetic type. -
    • -
    • - An expression template derived from mp_number<Backend>. -
    • -
    -

    - For the left and right shift operations, the argument must be a builtin integer - type with a positive value (negative values result in a std::runtime_error - being thrown). -

    -
    operator convertible-to-bool-type()const;
    -
    -

    - Returns an unmentionable-type that is usable in Boolean - contexts (this allows mp_number - to be used in any Boolean context - if statements, conditional statements, - or as an argument to a logical operator - without type mp_number - being convertible to type bool. -

    -

    - This operator also enables the use of mp_number - with any of the following operators: !, - ||, && - and ?:. -

    -
    void swap(mp_number& other);
    -
    -

    - Swaps *this - with other. -

    -
    bool is_zero()const;
    -
    -

    - Returns true is *this is zero, - otherwise false. -

    -
    int sign()const;
    -
    -

    - Returns a value less than zero if *this is negative, a value greater than zero - if *this - is positive, and zero if *this - is zero. -

    -
    std::string str(unsigned precision, bool scientific = true)const;
    -
    -

    - Returns the number formatted as a string, with at least precision - digits, and in scientific format if scientific is true. -

    -
    template <class T>
    -T convert_to()const;
    -
    -

    - Provides a generic conversion mechanism to convert *this to type T. - Type T may be any arithmetic - type. Optionally other types may also be supported by specific Backend types. -

    -
    static unsigned default_precision();
    -static void default_precision(unsigned digits10);
    -unsigned precision()const;
    -void precision(unsigned digits10);
    -
    -

    - These functions are only available if the Backend template parameter supports - runtime changes to precision. They get and set the default precision and - the precision of *this - respectively. -

    -
    int compare(const mp_number<Backend, ExpressionTemplates>& o)const;
    -template <class V>
    -typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
    -
    -

    - Returns: -

    -
      -
    • - A value less that 0 for *this < other -
    • -
    • - A value greater that 0 for *this > other -
    • -
    • - Zero for *this - == other -
    • -
    -
    Backend& backend();
    -const Backend& backend()const;
    -
    -

    - Returns the underlying back-end instance used by *this. -

    -
    - - Non-member - operators -
    -
    // Non member operators:
    -unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    -// Integer only operations:
    -unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    -unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    -// Comparison operators:
    -bool operator==(const see-below&, const see-below&);
    -bool operator!=(const see-below&, const see-below&);
    -bool operator< (const see-below&, const see-below&);
    -bool operator> (const see-below&, const see-below&);
    -bool operator<=(const see-below&, const see-below&);
    -bool operator>=(const see-below&, const see-below&);
    -
    -

    - These operators all take their usual arithmetic meanings. -

    -

    - The arguments to these functions must contain at least one of the following: -

    -
      -
    • - An mp_number. -
    • -
    • - An expression template type derived from mp_number. -
    • -
    -

    - In addition, one of the two arguments may be a builtin arithmetic type. -

    -

    - The return type of these operators is either: -

    -
      -
    • - An unmentionable-type expression template type when - ExpressionTemplates is - true. -
    • -
    • - Type mp_number<Backend, - false> - when ExpressionTemplates - is false. -
    • -
    • - Type bool if the operator - is a comparison operator. -
    • -
    -

    - Finally note that the second argument to the left and right shift operations - must be a builtin integer type, and that the argument must be positive (negative - arguments result in a std::runtime_error - being thrown). -

    -
    - - swap -
    -
    template <class Backend, ExpressionTemplates>
    -void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    -
    -

    - Swaps a and b. -

    -
    - - Iostream - Support -
    -
    template <class Backend, bool ExpressionTemplates>
    -std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    -template <class Unspecified...>
    -std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
    -template <class Backend, bool ExpressionTemplates>
    -inline std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r)
    -
    -

    - These operators provided formatted input-output operations on mp_number types, and expression templates - derived from them. -

    -

    - It's down to the back-end type to actually implement string conversion. However, - the back-ends provided with this library support all of the iostream formatting - flags, field width and precision settings. -

    -
    - - Non-member - standard library function support -
    -
    unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    -
    -unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    -unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    -unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -
    -

    - These functions all behave exactly as their standard library counterparts - do: their argument is either an instance of mp_number - or an expression template derived from it; If the argument is of type mp_number<Backend, false> - then that is also the return type, otherwise the return type is an expression - template. -

    -

    - These functions are normally implemented by the Backend type. However, default - versions are provided for Backend types that don't have native support for - these functions. Please note however, that this default support requires - the precision of the type to be a compile time constant - this means for - example that the GMP MPF Backend will - not work with these functions when that type is used at variable precision. -

    -

    - Also note that with the exception of abs - that these functions can only be used with floating-point Backend types. -

    -
    - - Traits - Class Support -
    -
    template <class T>
    -struct component_type;
    -
    -

    - If this is a type with mutiple components (for example rational or complex - types), then this trait has a single member type - that is the type of those components. -

    -
    template <class T>
    -struct number_category;
    -
    -

    - A traits class that inherits from mpl::int_<N> - where N is one of the enumerated - values number_kind_integer, - number_kind_floating_point, - number_kind_rational or - number_kind_fixed_point. -

    -
    - - Integer functions -
    -
    template <class Backend, bool ExpressionTemplates>
    -bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    -               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    -
    -

    - Divides x by y and returns both the quotient and remainder. After the call - q = - x / y and r - = x % y. -

    -
    template <class Integer>
    -Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    -
    -

    - Returns the absolute value of x - % val. -

    -
    unsigned lsb(const mp_number-or-expression-template-type& x);
    -
    -

    - Returns the index of the least significant bit that is set to 1. -

    -
    template <class Backend, class ExpressionTemplates>
    -bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Returns true if the bit at - index in val is set. -

    -
    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Sets the bit at index in val, and - returns val. -

    -
    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Unsets the bit at index in val, - and returns val. -

    -
    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Flips the bit at index in val, - and returns val. -

    -
    template <class Engine>
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    -
    -

    - Tests to see if the number n is probably prime - the - test excludes the vast majority of composite numbers by excluding small prime - factors and performing a single Fermat test. Then performs trials - Miller-Rabin tests. Returns false - if n is definitely composite, or true - if n is probably prime with the probability of it being - composite less than 0.25^trials. -

    -
    - - Rational - Number Functions -
    -
    typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    -typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    -
    -

    - These functions return the numerator and denominator of a rational number - respectively. -

    -
    - - Boost.Math - Interoperability Support -
    -
    namespace boost{ namespace math{
    -
    -int  fpclassify     (const mp_number-or-expression-template-type&, int);
    -bool isfinite       (const mp_number-or-expression-template-type&, int);
    -bool isnan          (const mp_number-or-expression-template-type&, int);
    -bool isinf          (const mp_number-or-expression-template-type&, int);
    -bool isnormal       (const mp_number-or-expression-template-type&, int);
    -
    -}} // namespaces
    -
    -

    - These floating-point classification functions behave exactly as their Boost.Math - equivalents. -

    -

    - Other Boost.Math functions and templates may also be specialized or overloaded - to ensure interoperability. -

    -
    - - std::numeric_limits - support -
    -
    namespace std{
    -
    -template <class Backend, ExpressionTemplates>
    -struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    -{
    -   /* Usual members here */
    -};
    -
    -}
    -
    -

    - Class template std::numeric_limits is specialized for all instantiations - of mp_number whose precision - is known at compile time, plus those types whose precision is unlimited (though - it is much less useful in those cases). It is not specialized for types whose - precision can vary at compile time (such as mpf_float). -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html deleted file mode 100644 index ea39c242..00000000 --- a/doc/html/boost_multiprecision/tut.html +++ /dev/null @@ -1,45 +0,0 @@ - - - -Tutorial - - - - - - - - -
    -PrevUpHomeNext -
    -
    - - -

    - In order to use this library you need to make two choices: what kind of number - do I want, and which back-end do I want to perform the actual arithmetic? -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html deleted file mode 100644 index 41862d34..00000000 --- a/doc/html/boost_multiprecision/tut/ints.html +++ /dev/null @@ -1,503 +0,0 @@ - - - -Integer Types - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The following back-ends provide integer arithmetic: -

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend Type -

    -
    -

    - Header -

    -
    -

    - Radix -

    -
    -

    - Dependencies -

    -
    -

    - Pros -

    -
    -

    - Cons -

    -
    -

    - cpp_int -

    -
    -

    - boost/multiprecision/cpp_int.hpp -

    -
    -

    - 2 -

    -
    -

    - None -

    -
    -

    - Very versatile, Boost licenced, all C++ integer type which support - both arbitrary - precision and fixed precision integer types. -

    -
    -

    - Slower than GMP, though - typically not as slow as libtommath -

    -
    -

    - gmp_int -

    -
    -

    - boost/multiprecision/gmp.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP -

    -
    -

    - Very fast and efficient back-end. -

    -
    -

    - Dependency on GNU licenced GMP - library. -

    -
    -

    - tom_int -

    -
    -

    - boost/multiprecision/tommath.hpp -

    -
    -

    - 2 -

    -
    -

    - libtommath -

    -
    -

    - Public domain back-end with no licence restrictions. -

    -
    -

    - Slower than GMP. -

    -
    -
    - - cpp_int -
    -
    namespace boost{ namespace multiprecision{
    -
    -typedef unspecified-type limb_type;
    -
    -template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    -class cpp_int_backend;
    -
    -typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    -typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    -typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    -
    -// Fixed precision unsigned types:
    -typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    -typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    -typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    -typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
    -
    -// Fixed precision signed types:
    -typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    -typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    -typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    -typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
    -
    -}} // namespaces
    -
    -

    - The cpp_int_backend type - is used via one of the typedefs boost::multiprecision::cpp_int, - boost::multiprecision::mp_uint128_t, boost::multiprecision::mp_uint256_t, - boost::multiprecision::mp_uint512_t, boost::multiprecision::mp_int128_t, - boost::multiprecision::mp_int256_t or boost::multiprecision::mp_int512_t. -

    -

    - This back-end is the "Swiss Army Knife" of integer types as it - can represent both fixed and arbitrary - precision integer types, and both signed and unsigned types. There - are three template arguments: -

    -
    -

    -
    -
    MinBits
    -

    - Determines the number of Bits to store directly within the object before - resorting to dynamic memory allocation. When zero, this field is determined - automatically based on how many bits can be stored in union with the - dynamic storage header: setting a larger value may improve performance - as larger integer values will be stored internally before memory allocation - is required. When the Allocator parameter is type void, - then this field determines the total number of bits in the resulting - fixed precision type. -

    -
    Signed
    -

    - Determines whether the resulting type is signed or not. Note that for - arbitrary - precision types (where the Allocator parameter is non-void), - then this parameter must be true. - For fixed precision types then this type may be either true (type is signed), or false (type is unsigned). -

    -
    Allocator
    -

    - The allocator to use for dymamic memory allocation, or type void if this is to be a fixed precision - type. -

    -
    -
    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed cpp_int_backends - have the value zero. -
    • -
    • - Division by zero results in a std::runtime_error - being thrown. -
    • -
    • - Construction from a string that contains invalid non-numeric characters - results in a std::runtime_error being thrown. -
    • -
    • - Since the precision of cpp_int_backend - is necessarily limited when the allocator parameter is void, care should - be taken to avoid numeric overflow when using this type unless you actually - want modulo-arithmetic behavior. -
    • -
    • - The type uses a sign-magnitude representation internally, so type mp_int128_t has 128-bits of precision - plus an extra sign bit. In this respect the behaviour of these types - differs from built-in 2's complement types. In might be tempting to use - a 127-bit type instead, and indeed this does work, but behaviour is still - slightly different from a 2's complement built-in type as the min and - max values are identical (apart from the sign), where as they differ - by one for a true 2's complement type. That said it should be noted that - there's no requirement for built-in types to be 2's complement either - - it's simply that this is the most common format by far. -
    • -
    • - Attempting to print negative values as either an Octal or Hexadecimal - string results in a std::runtime_error - being thrown, this is a direct consequence of the sign-magnitude representation. -
    • -
    • - The fixed precision types mp_[u]intXXX_t - have expression template support turned off - it seems to make little - difference to the performance of these types either way - so we may as - well have the faster compile times by turning the feature off. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/cpp_int.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -mp_int128_t v = 1;
    -
    -// Do some fixed precision arithmetic:
    -for(unsigned i = 1; i <= 20; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 20!
    -
    -// Repeat at arbitrary precision:
    -cpp_int u = 1;
    -for(unsigned i = 1; i <= 100; ++i)
    -   u *= i;
    -
    -std::cout << u << std::endl; // prints 100!
    -
    -

    -

    -
    - - gmp_int -
    -
    namespace boost{ namespace multiprecision{
    -
    -class gmp_int;
    -
    -typedef mp_number<gmp_int >         mpz_int;
    -
    -}} // namespaces
    -
    -

    - The gmp_int back-end is used - via the typedef boost::multiprecision::mpz_int. It acts as a thin wrapper around - the GMP mpz_t - to provide an integer type that is a drop-in replacement for the native C++ - integer types, but with unlimited precision. -

    -

    - As well as the usual conversions from arithmetic and string types, type - mpz_int is copy constructible - and assignable from: -

    -
      -
    • - The GMP native types: mpf_t, mpz_t, - mpq_t. -
    • -
    • - Instances of mp_number<T> that are wrappers around those types: - mp_number<gmp_float<N> >, mp_number<gmp_rational>. -
    • -
    -

    - It's also possible to access the underlying mpz_t - via the data() - member function of gmp_int. -

    -

    - Things you should know when using this type: -

    -
      -
    • - No changes are made to the GMP library's global settings - so you can - safely mix this type with existing code that uses GMP. -
    • -
    • - Default constructed gmp_ints - have the value zero (this is GMP's default behavior). -
    • -
    • - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this - type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex - are set, will result in a std::runtime_error - will be thrown. -
    • -
    • - Division by zero is handled by the GMP - library - it will trigger a division by zero signal. -
    • -
    • - Although this type is a wrapper around GMP - it will work equally well with MPIR. - Indeed use of MPIR is recomended - on Win32. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -mpz_int v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 1000!
    -
    -// Access the underlying representation:
    -mpz_t z;
    -mpz_init(z);
    -mpz_set(z, v.backend().data());
    -
    -

    -

    -
    - - tom_int -
    -
    namespace boost{ namespace multiprecision{
    -
    -class tommath_int;
    -
    -typedef mp_number<tommath_int >         tom_int;
    -
    -}} // namespaces
    -
    -

    - The tommath_int back-end - is used via the typedef boost::multiprecision::tom_int. - It acts as a thin wrapper around the libtommath - tom_int to provide an integer - type that is a drop-in replacement for the native C++ integer types, but - with unlimited precision. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed objects have the value zero (this is libtommath's - default behavior). -
    • -
    • - Although tom_int is mostly - a drop in replacement for the builtin integer types, it should be noted - that it is a rather strange beast as it's a signed type that is not a - 2's complement type. As a result the bitwise operations | & ^ will throw a std::runtime_error - exception if either of the arguments is negative. Similarly the complement - operator~ is deliberately - not implemented for this type. -
    • -
    • - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this - type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex - are set, will result in a std::runtime_error - will be thrown. -
    • -
    • - Division by zero will result in a hardware signal being raised by libtommath. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/tommath.hpp>
    -
    -boost::multiprecision::tom_int v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 1000!
    -std::cout << std::hex << v << std::endl; // prints 1000! in hex format
    -
    -try{
    -   std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
    -}
    -catch(const std::runtime_error& e)
    -{
    -   std::cout << e.what() << std::endl;
    -}
    -
    -try{
    -   // v is not a 2's complement type, bitwise operations are only supported
    -   // on positive values:
    -   v = -v & 2;
    -}
    -catch(const std::runtime_error& e)
    -{
    -   std::cout << e.what() << std::endl;
    -}
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html deleted file mode 100644 index f1dac222..00000000 --- a/doc/html/boost_multiprecision/tut/primetest.html +++ /dev/null @@ -1,108 +0,0 @@ - - - -Primality Testing - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The library implements a fairly basic (meaning unoptimized, and possibly - slow) Miller-Rabin test for primality: -

    -
    #include <boost/multiprecision/miller_rabin.hpp>
    -
    -template <class Backend, bool ExpressionTemplates, class Engine>
    -bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
    -
    -template <class Backend, bool ExpressionTemplates, class Engine>
    -bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials);
    -
    -

    - These functions perform a Miller-Rabin test for primality, if the result - is false then n - is definitely composite, while if the result is true - then n is prime with probability 0.25^trials. - The algorithm used is straight out of Knuth Vol 2, which recomends 25 trials - for a pretty strong likelyhood that n is prime. -

    -

    - The third optional argument is for a Uniform Random Number Generator from - Boost.Random. When not provided the mt19937 - generator is used. Note that when producing random primes then you should - probably use a different random number generator to produce candidate prime - numbers for testing, than is used internally by miller_rabin_test - for determining whether the value is prime. It also helps of course to seed - the generators with some source of randomness. -

    -

    - The following example searches for a prime p - for which (p-1)/2 is also probably prime: -

    -

    -

    -
    #include <boost/multiprecision/cpp_int.hpp>
    -#include <boost/multiprecision/miller_rabin.hpp>
    -#include <iostream>
    -#include <iomanip>
    -
    -int main()
    -{
    -   using namespace boost::random;
    -   using namespace boost::multiprecision;
    -
    -   typedef cpp_int int_type;
    -   mt11213b base_gen(clock());
    -   independent_bits_engine<mt11213b, 256, int_type> gen(base_gen);
    -   //
    -   // We must use a different generator for the tests and number generation, otherwise
    -   // we get false positives.
    -   //
    -   mt19937 gen2(clock());
    -
    -   for(unsigned i = 0; i < 100000; ++i)
    -   {
    -      int_type n = gen();
    -      if(miller_rabin_test(n, 25, gen2))
    -      {
    -         // Value n is probably prime, see if (n-1)/2 is also prime:
    -         std::cout << "We have a probable prime with value: " << std::hex << std::showbase << n << std::endl;
    -         if(miller_rabin_test((n-1)/2, 25, gen2))
    -         {
    -            std::cout << "We have a safe prime with value: " << std::hex << std::showbase << n << std::endl;
    -            return 0;
    -         }
    -      }
    -   }
    -   std::cout << "Ooops, no safe primes were found" << std::endl;
    -   return 1;
    -}
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/random.html b/doc/html/boost_multiprecision/tut/random.html deleted file mode 100644 index 5b7928ff..00000000 --- a/doc/html/boost_multiprecision/tut/random.html +++ /dev/null @@ -1,157 +0,0 @@ - - - -Generating Random Numbers - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Random numbers are generated in conjunction with Boost.Random. However, since - Boost.Random is unaware of arbitrary - precision numbers, it's necessary to include the header: -

    -
    #include <boost/multiprecision/random.hpp>
    -
    -

    - In order to act as a bridge between the two libraries. -

    -

    - Integers with N random bits are generated using independent_bits_engine: -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -
    -//
    -// Declare our random number generator type, the underlying generator
    -// is the Mersenne twister mt19937 engine, and 256 bits are generated:
    -//
    -typedef independent_bits_engine<mt19937, 256, mpz_int> generator_type;
    -generator_type gen;
    -//
    -// Generate some values:
    -//
    -std::cout << std::hex << std::showbase;
    -for(unsigned i = 0; i < 10; ++i)
    -   std::cout << gen() << std::endl;
    -
    -

    -

    -

    - Alternatively we can generate integers in a given range using uniform_int_distribution, this will invoke - the underlying engine multiple times to build up the required number of bits - in the result: -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -
    -//
    -// Generate integers in a given range using uniform_int,
    -// the underlying generator is invoked multiple times
    -// to generate enough bits:
    -//
    -mt19937 mt;
    -uniform_int_distribution<mpz_int> ui(0, mpz_int(1) << 256);
    -//
    -// Generate the numbers:
    -//
    -std::cout << std::hex << std::showbase;
    -for(unsigned i = 0; i < 10; ++i)
    -   std::cout << ui(mt) << std::endl;
    -
    -

    -

    -

    - Floating point values in [0,1) are generated using uniform_01, - the trick here is to ensure that the underlying generator produces as many - random bits as there are digits in the floating point type. As above independent_bits_engine can be used for - this purpose, note that we also have to convert decimal digits (in the floating - point type) to bits (in the random number generator): -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -//
    -// We need an underlying generator with at least as many bits as the
    -// floating point type to generate numbers in [0, 1) with all the bits
    -// in the floating point type randomly filled:
    -//
    -uniform_01<mpf_float_50> uf;
    -independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    -//
    -// Generate the values:
    -//
    -std::cout << std::setprecision(50);
    -for(unsigned i = 0; i < 20; ++i)
    -   std::cout << uf(gen) << std::endl;
    -
    -

    -

    -

    - Finally, we can modify the above example to produce numbers distributed according - to some distribution: -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -//
    -// We can repeat the above example, with other distributions:
    -//
    -uniform_real_distribution<mpf_float_50> ur(-20, 20);
    -gamma_distribution<mpf_float_50> gd(20);
    -independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    -//
    -// Generate some values:
    -//
    -std::cout << std::setprecision(50);
    -for(unsigned i = 0; i < 20; ++i)
    -   std::cout << ur(gen) << std::endl;
    -for(unsigned i = 0; i < 20; ++i)
    -   std::cout << gd(gen) << std::endl;
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html deleted file mode 100644 index 65eca5a3..00000000 --- a/doc/html/boost_multiprecision/tut/rational.html +++ /dev/null @@ -1,546 +0,0 @@ - - - -Rational Number Types - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The following back-ends provide rational number arithmetic: -

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend Type -

    -
    -

    - Header -

    -
    -

    - Radix -

    -
    -

    - Dependencies -

    -
    -

    - Pros -

    -
    -

    - Cons -

    -
    -

    - gmp_rational -

    -
    -

    - boost/multiprecision/gmp.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP -

    -
    -

    - Very fast and efficient back-end. -

    -
    -

    - Dependency on GNU licenced GMP - library. -

    -
    -

    - cpp_rational -

    -
    -

    - boost/multiprecision/cpp_int.hpp -

    -
    -

    - 2 -

    -
    -

    - None -

    -
    -

    - An all C++ Boost-licenced implementation. -

    -
    -

    - Slower than GMP. -

    -
    -

    - tommath_rational -

    -
    -

    - boost/multiprecision/tommath.hpp -

    -
    -

    - 2 -

    -
    -

    - libtommath -

    -
    -

    - All C/C++ implementation that's Boost Software Licence compatible. -

    -
    -

    - Slower than GMP. -

    -
    -

    - rational_adapter -

    -
    -

    - boost/multiprecision/rational_adapter.hpp -

    -
    -

    - N/A -

    -
    -

    - none -

    -
    -

    - All C++ adapter that allows any inetger back-end type to be used - as a rational type. -

    -
    -

    - Requires an underlying integer back-end type. -

    -
    -

    - boost::rational -

    -
    -

    - boost/rational.hpp -

    -
    -

    - N/A -

    -
    -

    - None -

    -
    -

    - A C++ rational number type that can used with any mp_number integer type. -

    -
    -

    - The expression templates used by mp_number - end up being "hidden" inside boost::rational: - performance may well suffer as a result. -

    -
    -
    - - gmp_rational -
    -
    namespace boost{ namespace multiprecision{
    -
    -class gmp_rational;
    -
    -typedef mp_number<gmp_rational >         mpq_rational;
    -
    -}} // namespaces
    -
    -

    - The gmp_rational back-end - is used via the typedef boost::multiprecision::mpq_rational. - It acts as a thin wrapper around the GMP - mpq_t to provide a rational - number type that is a drop-in replacement for the native C++ number types, - but with unlimited precision. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of mp_number<gmp_rational> - are copy constructible and assignable from: -

    -
      -
    • - The GMP native types: mpz_t, mpq_t. -
    • -
    • - mp_number<gmp_int>. -
    • -
    -

    - There is also a two-argument constructor that accepts a numerator and denominator - (both of type mp_number<gmp_int>). -

    -

    - There are also non-member functions: -

    -
    mpz_int numerator(const mpq_rational&);
    -mpz_int denominator(const mpq_rational&);
    -
    -

    - which return the numerator and denominator of the number. -

    -

    - It's also possible to access the underlying mpq_t - via the data() - member function of mpq_rational. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed mpq_rationals - have the value zero (this is the GMP - default behavior). -
    • -
    • - Division by zero results in a hardware exception inside the GMP - library. -
    • -
    • - No changes are made to the GMP - library's global settings, so this type can coexist with existing GMP code. -
    • -
    • - The code can equally be used with MPIR - as the underlying library - indeed that is the prefered option on Win32. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -mpq_rational v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -v /= 10;
    -
    -std::cout << v << std::endl; // prints 1000! / 10
    -std::cout << numerator(v) << std::endl;
    -std::cout << denominator(v) << std::endl;
    -
    -mpq_rational w(2, 3);  // component wise constructor
    -std::cout << w << std::endl; // prints 2/3
    -
    -// Access the underlying data:
    -mpq_t q;
    -mpq_init(q);
    -mpq_set(q, v.backend().data());
    -
    -

    -

    -
    - - cpp_rational -
    -
    namespace boost{ namespace multiprecision{
    -
    -typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    -
    -typedef mp_number<cpp_rational_backend>         cpp_rational;
    -
    -}} // namespaces
    -
    -

    - The cpp_rational_backend - type is used via the typedef boost::multiprecision::cpp_rational. - It provides a rational number type that is a drop-in replacement for the - native C++ number types, but with unlimited precision. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of cpp_rational are copy - constructible and assignable from type cpp_int. -

    -

    - There is also a two argument constructor that accepts a numerator and denominator: - both of type cpp_int. -

    -

    - There are also non-member functions: -

    -
    cpp_int numerator(const cpp_rational&);
    -cpp_int denominator(const cpp_rational&);
    -
    -

    - which return the numerator and denominator of the number. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed cpp_rationals - have the value zero. -
    • -
    • - Division by zero results in a std::rumtime_error - being thrown. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/cpp_int.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -cpp_rational v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -v /= 10;
    -
    -std::cout << v << std::endl; // prints 1000! / 10
    -std::cout << numerator(v) << std::endl;
    -std::cout << denominator(v) << std::endl;
    -
    -cpp_rational w(2, 3);  // component wise constructor
    -std::cout << w << std::endl; // prints 2/3
    -
    -

    -

    -
    - - tommath_rational -
    -
    namespace boost{ namespace multiprecision{
    -
    -typedef rational_adpater<tommath_int>        tommath_rational;
    -typedef mp_number<tommath_rational >         tom_rational;
    -
    -}} // namespaces
    -
    -

    - The tommath_rational back-end - is used via the typedef boost::multiprecision::tom_rational. - It acts as a thin wrapper around boost::rational<tom_int> to provide a rational number type that - is a drop-in replacement for the native C++ number types, but with unlimited - precision. -

    -

    - The advantage of using this type rather than boost::rational<tom_int> directly, is that it is expression-template - enabled, greatly reducing the number of temporaries created in complex expressions. -

    -

    - There are also non-member functions: -

    -
    tom_int numerator(const tom_rational&);
    -tom_int denominator(const tom_rational&);
    -
    -

    - which return the numerator and denominator of the number. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed tom_rationals - have the value zero (this the inherited Boost.Rational behavior). -
    • -
    • - Division by zero results in a boost::bad_rational - exception being thrown (see the rational number library's docs for more - information). -
    • -
    • - No changes are made to libtommath's - global state, so this type can safely coexist with other libtommath - code. -
    • -
    • - Performance of this type has been found to be pretty poor - this need - further investigation - but it appears that Boost.Rational needs some - improvement in this area. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/tommath.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -tom_rational v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -v /= 10;
    -
    -std::cout << v << std::endl; // prints 1000! / 10
    -std::cout << numerator(v) << std::endl;
    -std::cout << denominator(v) << std::endl;
    -
    -tom_rational w(2, 3); // Component wise constructor
    -std::cout << w << std::endl; // prints 2/3
    -
    -

    -

    -
    - - Use With - Boost.Rational -
    -

    - All of the integer types in this library can be used as template arguments - to boost::rational<IntType>. -

    -

    - Note that using the library in this way largely negates the effect of the - expression templates in mp_number. -

    -
    - - rational_adapter -
    -
    namespace boost{ namespace multiprecision{
    -
    -template <class IntBackend>
    -class rational_adpater;
    -
    -}}
    -
    -

    - The class template rational_adapter - is a back-end for mp_number - which converts any existing integer back-end into a rational-number back-end. -

    -

    - So for example, given an integer back-end type MyIntegerBackend, - the use would be something like: -

    -
    typedef mp_number<MyIntegerBackend>                    MyInt;
    -typedef mp_number<rational_adapter<MyIntegerBackend> > MyRational;
    -
    -MyRational r = 2;
    -r /= 3;
    -MyInt i = numerator(r);
    -assert(i == 2);
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/reals.html b/doc/html/boost_multiprecision/tut/reals.html deleted file mode 100644 index 02d1064f..00000000 --- a/doc/html/boost_multiprecision/tut/reals.html +++ /dev/null @@ -1,521 +0,0 @@ - - - -Floating Point Numbers - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The following back-ends provide floating point arithmetic: -

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend Type -

    -
    -

    - Header -

    -
    -

    - Radix -

    -
    -

    - Dependencies -

    -
    -

    - Pros -

    -
    -

    - Cons -

    -
    -

    - mpf_float<N> -

    -
    -

    - boost/multiprecision/gmp.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP -

    -
    -

    - Very fast and efficient back-end. -

    -
    -

    - Dependency on GNU licenced GMP - library. -

    -
    -

    - mpfr_float<N> -

    -
    -

    - boost/multiprecision/mpfr.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP and MPFR -

    -
    -

    - Very fast and efficient back-end, with its own standard library - implementation. -

    -
    -

    - Dependency on GNU licenced GMP - and MPFR libraries. -

    -
    -

    - cpp_dec_float<N> -

    -
    -

    - boost/multiprecision/cpp_dec_float.hpp -

    -
    -

    - 10 -

    -
    -

    - None -

    -
    -

    - Header only, all C++ implementation. Boost licence. -

    -
    -

    - Approximately 2x slower than the MPFR - or GMP libraries. -

    -
    -
    - - gmp_float -
    -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class gmp_float;
    -
    -typedef mp_number<gmp_float<50> >    mpf_float_50;
    -typedef mp_number<gmp_float<100> >   mpf_float_100;
    -typedef mp_number<gmp_float<500> >   mpf_float_500;
    -typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    -typedef mp_number<gmp_float<0> >     mpf_float;
    -
    -}} // namespaces
    -
    -

    - The gmp_float back-end is - used in conjunction with mp_number - : it acts as a thin wrapper around the GMP - mpf_t to provide an real-number - type that is a drop-in replacement for the native C++ floating-point types, - but with much greater precision. -

    -

    - Type gmp_float can be used - at fixed precision by specifying a non-zero Digits10 - template parameter, or at variable precision by setting the template argument - to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 - provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision - respectively. The typedef mpf_float provides a variable precision type whose - precision can be controlled via the mp_numbers - member functions. -

    -
    - - - - - -
    [Note]Note

    - This type only provides standard library and numeric_limits - support when the precision is fixed at compile time. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of mp_number<mpf_float<N> > are copy constructible and assignable - from: -

    -
      -
    • - The GMP native types mpf_t, mpz_t, - mpq_t. -
    • -
    • - The mp_number wrappers - around those types: mp_number<mpf_float<M> >, - mp_number<gmp_int>, - mp_number<gmp_rational>. -
    • -
    -

    - It's also possible to access the underlying mpf_t - via the data() - member function of gmp_float. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed gmp_floats - have the value zero (this is the GMP - library's default behavior). -
    • -
    • - No changes are made to the GMP - library's global settings, so this type can be safely mixed with existing - GMP code. -
    • -
    • - It is not possible to round-trip objects of this type to and from a string - and get back exactly the same value. This appears to be a limitation - of GMP. -
    • -
    • - Since the underlying GMP types - have no notion of infinities or NaN's, care should be taken to avoid - numeric overflow or division by zero. That latter will trigger a hardware - exception, while generating excessively large exponents may result in - instability of the underlying GMP - library (in testing, converting a number with an excessively large or - small exponent to a string caused GMP - to segfault). -
    • -
    • - This type can equally be used with MPIR - as the underlying implementation - indeed that is the recommended option - on Win32. -
    • -
    -
    - - - GMP example: -
    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -// Operations at variable precision and limited standard library support:
    -mpf_float a = 2;
    -mpf_float::default_precision(1000);
    -std::cout << mpf_float::default_precision() << std::endl;
    -std::cout << sqrt(a) << std::endl; // print root-2
    -
    -// Operations at fixed precision and full standard library support:
    -mpf_float_100 b = 2;
    -std::cout << std::numeric_limits<mpf_float_100>::digits << std::endl;
    -// We can use any C++ std lib function:
    -std::cout << log(b) << std::endl; // print log(2)
    -// We can also use any function from Boost.Math:
    -std::cout << boost::math::tgamma(b) << std::endl;
    -// These even work when the argument is an expression template:
    -std::cout << boost::math::tgamma(b * b) << std::endl;
    -
    -// Access the underlying representation:
    -mpf_t f;
    -mpf_init(f);
    -mpf_set(f, a.backend().data());
    -
    -

    -

    -
    - - mpfr_float -
    -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class mpfr_float_backend;
    -
    -typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
    -typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
    -typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
    -typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
    -typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
    -
    -}} // namespaces
    -
    -

    - The mpfr_float_backend type - is used in conjunction with mp_number: - It acts as a thin wrapper around the MPFR - mpfr_t to provide an real-number - type that is a drop-in replacement for the native C++ floating-point types, - but with much greater precision. -

    -

    - Type mpfr_float_backend can - be used at fixed precision by specifying a non-zero Digits10 - template parameter, or at variable precision by setting the template argument - to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 - provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision - respectively. The typedef mpfr_float provides a variable precision type whose - precision can be controlled via the mp_numbers - member functions. -

    -
    - - - - - -
    [Note]Note

    - This type only provides numeric_limits - support when the precision is fixed at compile time. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of mp_number<mpfr_float_backend<N> > are copy constructible and assignable - from: -

    -
      -
    • - The GMP native types mpf_t, mpz_t, - mpq_t. -
    • -
    • - The MPFR native type mpfr_t. -
    • -
    • - The mp_number wrappers - around those types: mp_number<mpfr_float_backend<M> >, - mp_number<mpf_float<M> >, mp_number<gmp_int>, mp_number<gmp_rational>. -
    • -
    -

    - It's also possible to access the underlying mpf_t - via the data() member function of gmp_float. -

    -

    - Things you should know when using this type: -

    -
      -
    • - A default constructed mpfr_float_backend - is set to a NaN (this is the default MPFR - behavior). -
    • -
    • - All operations use round to nearest. -
    • -
    • - No changes are made to GMP or - MPFR global settings, so this - type can coexist with existing MPFR - or GMP code. -
    • -
    • - The code can equally use MPIR in - place of GMP - indeed that is - the prefered option on Win32. -
    • -
    -
    - - - MPFR example: -
    -

    -

    -
    #include <boost/multiprecision/mpfr.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -// Operations at variable precision and no numeric_limits support:
    -mpfr_float a = 2;
    -mpfr_float::default_precision(1000);
    -std::cout << mpfr_float::default_precision() << std::endl;
    -std::cout << sqrt(a) << std::endl; // print root-2
    -
    -// Operations at fixed precision and full numeric_limits support:
    -mpfr_float_100 b = 2;
    -std::cout << std::numeric_limits<mpfr_float_100>::digits << std::endl;
    -// We can use any C++ std lib function:
    -std::cout << log(b) << std::endl; // print log(2)
    -// We can also use any function from Boost.Math:
    -std::cout << boost::math::tgamma(b) << std::endl;
    -// These even work when the argument is an expression template:
    -std::cout << boost::math::tgamma(b * b) << std::endl;
    -
    -// Access the underlying data:
    -mpfr_t r;
    -mpfr_init(r);
    -mpfr_set(r, b.backend().data(), GMP_RNDN);
    -
    -

    -

    -
    - - cpp_dec_float -
    -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class cpp_dec_float;
    -
    -typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50;
    -typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100;
    -
    -}} // namespaces
    -
    -

    - The cpp_dec_float back-end - is used in conjunction with mp_number: - It acts as an entirely C++ (header only and dependency free) real-number - type that is a drop-in replacement for the native C++ floating-point types, - but with much greater precision. -

    -

    - Type cpp_dec_float can be - used at fixed precision by specifying a non-zero Digits10 - template parameter. The typedefs cpp_dec_float_50 - and cpp_dec_float_100 provide - arithmetic types at 50 and 100 decimal digits precision respectively. -

    -

    - There is full standard library and numeric_limits - support available for this type. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed cpp_dec_floats - have a value of zero. -
    • -
    • - The radix of this type is 10. As a result it can behave subtly differently - from base-2 types. -
    • -
    • - It is not possible to round-trip this type to and from a string and get - back to exactly the same value (this is a result of the type having some - hidden internal guard digits). -
    • -
    • - The type has a number of internal guard digits over and above those specified - in the template argument. Normally these should not be visible to the - user. -
    • -
    -
    - - cpp_dec_float - example: -
    -

    -

    -
    #include <boost/multiprecision/cpp_dec_float.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -// Operations at fixed precision and full numeric_limits support:
    -cpp_dec_float_100 b = 2;
    -std::cout << std::numeric_limits<cpp_dec_float_100>::digits << std::endl;
    -// We can use any C++ std lib function:
    -std::cout << log(b) << std::endl; // print log(2)
    -// We can also use any function from Boost.Math:
    -std::cout << boost::math::tgamma(b) << std::endl;
    -// These even work when the argument is an expression template:
    -std::cout << boost::math::tgamma(b * b) << std::endl;
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index d6b3fc03..00000000 --- a/doc/html/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -Chapter 1. Boost.Multiprecision - - - - - - -
    Next
    -
    -
    -

    -Chapter 1. Boost.Multiprecision

    -

    -John Maddock -

    -

    -Christopher Kormanyos -

    -
    -
    -

    - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -

    -
    -
    - -
    - - - -

    Last revised: March 28, 2012 at 17:52:12 GMT

    -
    -
    Next
    - - diff --git a/doc/index.idx b/doc/index.idx new file mode 100644 index 00000000..fc9adc82 --- /dev/null +++ b/doc/index.idx @@ -0,0 +1,11 @@ + +!scan-path boost/multiprecision .*\.hpp true + + + + + + + + + diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index c31531b3..97cf9fad 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -204,7 +204,7 @@ transformation is more efficient than creating the extra temporary variable, jus one would hope. Finally, note that `mp_number` takes a second template argument, which, when set to `false` disables all -the expression template machinary. The result is much faster to compile, but slower at runtime. +the expression template machinery. The result is much faster to compile, but slower at runtime. We'll conclude this section by providing some more performance comparisons between these three libraries, again, all are using [mpfr] to carry out the underlying arithmetic, and all are operating at the same precision @@ -238,12 +238,14 @@ The following back-ends provide integer arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] [[`cpp_int`][boost/multiprecision/cpp_int.hpp][2][None] - [Very versatile, Boost licenced, all C++ integer type which support both [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] and fixed precision integer types.][Slower than [gmp], though typically not as slow as [tommath]]] -[[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licenced [gmp] library.]] + [Very versatile, Boost licensed, all C++ integer type which support both [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] and fixed precision integer types.][Slower than [gmp], though typically not as slow as [tommath]]] +[[`gmp_int`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]] [[`tom_int`][boost/multiprecision/tommath.hpp][2][[tommath]][Public domain back-end with no licence restrictions.][Slower than [gmp].]] ] -[h4 cpp_int] +[section:cpp_int cpp_int] + +`#include ` namespace boost{ namespace multiprecision{ @@ -290,7 +292,7 @@ integer types, and both signed and unsigned types. There are three template arg [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] types (where the Allocator parameter is non-void), then this parameter must be `true`. For fixed precision types then this type may be either `true` (type is signed), or `false` (type is unsigned).]] -[[Allocator][The allocator to use for dymamic memory allocation, or type `void` if this is to be a fixed precision type.]] +[[Allocator][The allocator to use for dynamic memory allocation, or type `void` if this is to be a fixed precision type.]] ] Things you should know when using this type: @@ -317,7 +319,11 @@ the feature off. [cpp_int_eg] -[h4 gmp_int] +[endsect] + +[section:gmp_int gmp_int] + +`#include ` namespace boost{ namespace multiprecision{ @@ -347,13 +353,17 @@ as a result performing formatted output on this type when the argument is negati `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. * Division by zero is handled by the [gmp] library - it will trigger a division by zero signal. * Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir] -is recomended on Win32. +is recommended on Win32. [h5 Example:] [mpz_eg] -[h4 tom_int] +[endsect] + +[section:tom_int tom_int] + +`#include ` namespace boost{ namespace multiprecision{ @@ -384,18 +394,22 @@ as a result performing formatted output on this type when the argument is negati [endsect] -[section:reals Floating Point Numbers] +[endsect] + +[section:floats Floating Point Numbers] The following back-ends provide floating point arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`mpf_float`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licenced [gmp] library.]] -[[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][[gmp] and [mpfr]][Very fast and efficient back-end, with its own standard library implementation.][Dependency on GNU licenced [gmp] and [mpfr] libraries.]] +[[`mpf_float`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]] +[[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][[gmp] and [mpfr]][Very fast and efficient back-end, with its own standard library implementation.][Dependency on GNU licensed [gmp] and [mpfr] libraries.]] [[`cpp_dec_float`][boost/multiprecision/cpp_dec_float.hpp][10][None][Header only, all C++ implementation. Boost licence.][Approximately 2x slower than the [mpfr] or [gmp] libraries.]] ] -[h4 gmp_float] +[section:gmp_float gmp_float] + +`#include ` namespace boost{ namespace multiprecision{ @@ -449,7 +463,11 @@ the recommended option on Win32. [mpf_eg] -[h4 mpfr_float] +[endsect] + +[section:mpfr_float mpfr_float] + +`#include ` namespace boost{ namespace multiprecision{ @@ -491,13 +509,17 @@ Things you should know when using this type: * All operations use round to nearest. * No changes are made to [gmp] or [mpfr] global settings, so this type can coexist with existing [mpfr] or [gmp] code. -* The code can equally use [mpir] in place of [gmp] - indeed that is the prefered option on Win32. +* The code can equally use [mpir] in place of [gmp] - indeed that is the preferred option on Win32. [h5 [mpfr] example:] [mpfr_eg] -[h4 cpp_dec_float] +[endsect] + +[section:cpp_dec_float cpp_dec_float] + +`#include ` namespace boost{ namespace multiprecision{ @@ -534,20 +556,24 @@ Normally these should not be visible to the user. [endsect] +[endsect] + [section:rational Rational Number Types] The following back-ends provide rational number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licenced [gmp] library.]] -[[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licenced implementation.][Slower than [gmp].]] +[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]] +[[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licensed implementation.][Slower than [gmp].]] [[`tommath_rational`][boost/multiprecision/tommath.hpp][2][[tommath]][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] [[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger back-end type to be used as a rational type.][Requires an underlying integer back-end type.]] [[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] -[h4 gmp_rational] +[section:gmp_rational gmp_rational] + +`#include ` namespace boost{ namespace multiprecision{ @@ -583,13 +609,17 @@ Things you should know when using this type: * Division by zero results in a hardware exception inside the [gmp] library. * No changes are made to the [gmp] library's global settings, so this type can coexist with existing [gmp] code. -* The code can equally be used with [mpir] as the underlying library - indeed that is the prefered option on Win32. +* The code can equally be used with [mpir] as the underlying library - indeed that is the preferred option on Win32. [h5 Example:] [mpq_eg] -[h4 cpp_rational] +[endsect] + +[section:cpp_rational cpp_rational] + +`#include ` namespace boost{ namespace multiprecision{ @@ -623,7 +653,11 @@ Things you should know when using this type: [cpp_rational_eg] -[h4 tommath_rational] +[endsect] + +[section:tommath_rational tommath_rational] + +`#include ` namespace boost{ namespace multiprecision{ @@ -658,13 +692,17 @@ needs some improvement in this area. [mp_rat_eg] -[h4 Use With Boost.Rational] +[endsect] + +[section:br Use With Boost.Rational] All of the integer types in this library can be used as template arguments to `boost::rational`. Note that using the library in this way largely negates the effect of the expression templates in `mp_number`. -[h4 rational_adapter] +[endsect] + +[section:rational_adapter rational_adapter] namespace boost{ namespace multiprecision{ @@ -686,6 +724,72 @@ So for example, given an integer back-end type `MyIntegerBackend`, the use would MyInt i = numerator(r); assert(i == 2); +[endsect] + +[endsect] + +[section:conversions Constructing and Interconverting Between Number Types] + +All of the number types that are based on `mp_number` have certain conversion rules in common. +In particular: + +* Any number type can be constructed (or assigned) from any builtin arithmetic type: + + cpp_dec_float_50 df(0.5); // OK construction from double + cpp_int i(450); // OK constructs from signed int + +* Any number type can be constructed (or assigned) from a `const char*` or a `std::string`: + + // pi to 50 places from a string: + cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510"; + // Integer type will automatically detect "0x" and "0" prefixes and parse the string accordingly: + cpp_int i = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000"; + // Invalid input always results in a std::runtime_error being thrown: + i = std::string("3.14"); + +* Any number type will interoperate with the builtin type in arithmetic expressions: + + // pi to 50 places from a string: + cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510"; + // Multiply by 2 - using an integer literal here is usually more efficient + // than constructing a temporary: + df *= 2; + + // There is a need to be careful with integer types though: + cpp_int i = 2; + // Ooops, this really just multiplies by 3: + i *= 3.14; + +* Any number type can be streamed to and from the C++ iostreams: + + + cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510"; + // Now print at full precision: + std::cout << std::setprecision(std::numeric_limits::max_digits10) + << df << std::endl + cpp_int i = 1; + i <<= 256; + // Now print in hex format with prefix: + std::cout << std::hex << std::showbase << i << std::endl; + +* Some intercomnversions between number types are completely generic, and are always available: + + cpp_int cppi(2); + // We can always convert between numbers of the same category - + // int to int, rational to rational, or float to float, so this is OK: + mpz_int z = cppi; + // We can always promote from int to rational, int to float, or rational to float: + cpp_rational cppr = cppi; // OK, int to rational + cpp_dec_float_50 df = cppi; // OK, int to float + df = cppr; // OK, rational to float + // However narrowing conversions always fail: + cppi = df; // Compiler error, conversion not allowed + +* Other interconversions may be allowed as special cases, whenever the backend allows it: + + mpf_t m; // Native GMP type. + mpf_init_set_ui(m, 0); // set to a value; + mpf_float i(m); // copies the value of the native type. [endsect] @@ -933,7 +1037,7 @@ Class `mp_number` has two template arguments: [variablelist [[Backend][The actual arithmetic back-end that does all the work.]] -[[ExpressionTemplates][A boolean value: when true, then expression templates are enabled, otherwise they are disabled.]] +[[ExpressionTemplates][A Boolean value: when true, then expression templates are enabled, otherwise they are disabled.]] ] mp_number(); @@ -1248,6 +1352,172 @@ whose precision can vary at compile time (such as `mpf_float`). [endsect] +[section:cpp_int_ref cpp_int] + + namespace boost{ namespace multiprecision{ + + template > + struct cpp_int_backend; + + typedef mp_number > cpp_int; // arbitrary precision integer + typedef rational_adapter > cpp_rational_backend; + typedef mp_number cpp_rational; // arbitrary precision rational number + + // Fixed precision unsigned types: + typedef mp_number, false> mp_uint128_t; + typedef mp_number, false> mp_uint256_t; + typedef mp_number, false> mp_uint512_t; + typedef mp_number, false> mp_uint1024_t; + + // Fixed precision signed types: + typedef mp_number, false> mp_int128_t; + typedef mp_number, false> mp_int256_t; + typedef mp_number, false> mp_int512_t; + typedef mp_number, false> mp_int1024_t; + + }} // namespaces + +Class template `cpp_int_backend` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. +It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +to change. + +The template arguments are: + +[variablelist +[[Argument][Meaning]] +[[MinBits] + [The number of Bits to reserve inside the class's internal cache. When constructing a value, + the object will use this internal cache if possible before resorting to dynamic memory allocation. + When this value is zero, then the size of the internal cache is `2*sizeof(void*)*CHAR_BIT`. + When the Allocator argument is `void`, then this parameter determines the precision of the type.]] +[[Signed][When `true` the type is signed, otherwise unsigned. Note that unsigned types are currently only + supported when the Allocator parameter is `void`.]] +[[Allocator][The allocator used for dynamic memory allocation. This parameter can be `void`, in which case + no dymanic memory will ever be allocated.]] +] + +More information on this type can be found in the [link boost_multiprecision.tut.ints.cpp_int tutorial]. + +[endsect] + +[section:gmp_int_ref gmp_int] + + namespace boost{ namespace multiprecision{ + + class gmp_int; + + typedef mp_number mpz_int; + + }} // namespaces + +Class template `gmp_int` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. +It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +to change. + +More information on this type can be found in the [link boost_multiprecision.tut.ints.gmp_int tutorial]. + +[endsect] + +[section:tom_int_ref tom_int] + + namespace boost{ namespace multiprecision{ + + class tommath_int; + + typedef mp_number tom_int; + + }} // namespaces + +Class template `tommath_int` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. +It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +to change. + +More information on this type can be found in the [link boost_multiprecision.tut.ints.tom_int tutorial]. + +[endsect] + +[section:mpf_ref gmp_float] + + namespace boost{ namespace multiprecision{ + + template + class gmp_float; + + typedef mp_number > mpf_float_50; + typedef mp_number > mpf_float_100; + typedef mp_number > mpf_float_500; + typedef mp_number > mpf_float_1000; + typedef mp_number > mpf_float; + + }} // namespaces + +Class template `gmp_float` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. +It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +to change. + +The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type +should support. When this parameter is zero, then the precision can be set at runtime via `mp_number::default_precision` +and `mp_number::precision`. Note that this type does not in any way change the GMP library's global state (for example +it does not change the default precision of the mpf_t data type), therefore you can safely mix this type with existing +code that uses GMP, and also mix `gmp_float`s of differing precision. + +More information on this type can be found in the [link boost_multiprecision.tut.floats.gmp_float tutorial]. + +[endsect] + +[section:mpfr_ref mpfr_float_backend] + + namespace boost{ namespace multiprecision{ + + template + class mpfr_float_backend; + + typedef mp_number > mpfr_float_50; + typedef mp_number > mpfr_float_100; + typedef mp_number > mpfr_float_500; + typedef mp_number > mpfr_float_1000; + typedef mp_number > mpfr_float; + + }} // namespaces + +Class template `mpfr_float_backend` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. +It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +to change. + +The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type +should support. When this parameter is zero, then the precision can be set at runtime via `mp_number::default_precision` +and `mp_number::precision`. Note that this type does not in any way change the GMP or MPFR library's global state (for example +it does not change the default precision of the mpfr_t data type), therefore you can safely mix this type with existing +code that uses GMP or MPFR, and also mix `mpfr_float_backend`s of differing precision. + +More information on this type can be found in the [link boost_multiprecision.tut.floats.mpfr_float tutorial]. + +[endsect] + +[section:cpp_dec_ref cpp_dec_float] + + namespace boost{ namespace multiprecision{ + + template + class cpp_dec_float; + + typedef mp_number > cpp_dec_float_50; + typedef mp_number > cpp_dec_float_100; + + }} // namespaces + +Class template `cpp_dec_float` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. +It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +to change. + +The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type +should support. Note that this type does not ever perform any dynamic memory allocation, as a result the `Digits10` +template argument should not be set too high or the classes size will grow unreasonably large. + +More information on this type can be found in the [link boost_multiprecision.tut.floats.cpp_dec_float tutorial]. + +[endsect] + [section:backendconc Backend Requirements] [template super[x]''''''[x]''''''] @@ -1414,7 +1684,7 @@ of type B2. [note The non-member functions are all named with an "eval_" prefix to avoid conflicts with template classes of the same name - -in point of fact this naming convension shouldn't be necessary, but rather works around some compiler bugs.] +in point of fact this naming convention shouldn't be necessary, but rather works around some compiler bugs.] [endsect] @@ -1490,7 +1760,7 @@ altogether - cutting about a third off the total runtime. Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance results should be taken -with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the +with a healthy dose of scepticism, and real-world performance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 operations. @@ -1560,7 +1830,7 @@ Windows Vista machine. Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance results should be taken -with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the +with a healthy dose of scepticism, and real-world performance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 operations. @@ -1717,7 +1987,7 @@ Linux x86_64 results are broadly similar, except that libtommath performs much b Note that these tests are carefully designed to test performance of the underlying algorithms and not memory allocation or variable copying. As usual, performance results should be taken -with a healthy dose of scepticism, and real-world peformance may vary widely depending upon the +with a healthy dose of scepticism, and real-world performance may vary widely depending upon the specifics of the program. In each table relative times are given first, with the best performer given a score of 1. Total actual times are given in brackets, measured in seconds for 500000 operations. @@ -1779,6 +2049,16 @@ Windows Vista machine. [section:hist History] +*2011-2012, John Maddock adds an expression template enabled front end to Christopher's code, +and adds support for other backends. +* 2011, Christopher Kormanyos publishes the decimal floating point code under the Boost +Software Licence. The code is published as: [@http://doi.acm.org/10.1145/1916461.1916469 +"Algorithm 910: A Portable C++ Multiple-Precision +System for Special-Function Calculations"], in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, +2011. +* 2002-2011, Christopher Kormanyos develops the all C++ decimal arithmetic floating point +code. + [endsect] [section:todo TODO] @@ -1794,4 +2074,28 @@ More a list of what ['could] be done, rather than what ['should] be done (which [endsect] +[section:ack Acknowledgements] + +This library would not have happened without: + +* Christopher Kormanyos' C++ decimal number code. +* Paul Bristow for patiently testing, and commenting on the library. +* All the folks at GMP, MPFR and libtommath, for providing the "guts" that makes this library work. +* [@http://www-cs-faculty.stanford.edu/~uno/taocp.html "The Art Of Computer Programming"], +Donald E. Knuth, Volume 2: Seminumerical Algorithms, Third Edition +(Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. ISBN 0-201-89684-2 + [endsect] + +[endsect] + +[section:indexes Indexes] + +[include ../../../../../trunk/tools/auto_index/include/auto_index_helpers.qbk] +[named_index function_name Function Index] +[named_index class_name Class Index] +[named_index typedef_name Typedef Index] +[index] + +[endsect] + From c984b2eaa7ddfdebf9ee6cd466dae9fcbca8b43c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 30 Mar 2012 18:35:38 +0000 Subject: [PATCH 154/256] Add updated HTML docs. [SVN r77652] --- doc/html/boost_multiprecision/indexes.html | 40 + .../boost_multiprecision/indexes/s01.html | 237 ++ .../boost_multiprecision/indexes/s02.html | 46 + .../boost_multiprecision/indexes/s03.html | 189 + .../boost_multiprecision/indexes/s04.html | 519 +++ doc/html/boost_multiprecision/intro.html | 522 +++ doc/html/boost_multiprecision/map.html | 39 + doc/html/boost_multiprecision/map/ack.html | 55 + doc/html/boost_multiprecision/map/hist.html | 50 + doc/html/boost_multiprecision/map/todo.html | 58 + doc/html/boost_multiprecision/perf.html | 46 + .../perf/float_performance.html | 961 ++++++ .../perf/int_real_world.html | 217 ++ .../perf/integer_performance.html | 3034 +++++++++++++++++ .../perf/rational_performance.html | 905 +++++ .../boost_multiprecision/perf/realworld.html | 278 ++ doc/html/boost_multiprecision/ref.html | 44 + .../boost_multiprecision/ref/backendconc.html | 2295 +++++++++++++ .../boost_multiprecision/ref/cpp_dec_ref.html | 61 + .../boost_multiprecision/ref/cpp_int_ref.html | 99 + .../boost_multiprecision/ref/gmp_int_ref.html | 51 + .../boost_multiprecision/ref/mp_number.html | 695 ++++ .../boost_multiprecision/ref/mpf_ref.html | 67 + .../boost_multiprecision/ref/mpfr_ref.html | 67 + .../boost_multiprecision/ref/tom_int_ref.html | 51 + doc/html/boost_multiprecision/tut.html | 64 + .../boost_multiprecision/tut/conversions.html | 106 + doc/html/boost_multiprecision/tut/floats.html | 186 + .../tut/floats/cpp_dec_float.html | 117 + .../tut/floats/gmp_float.html | 169 + .../tut/floats/mpfr_float.html | 159 + doc/html/boost_multiprecision/tut/ints.html | 186 + .../tut/ints/cpp_int.html | 179 + .../tut/ints/gmp_int.html | 128 + .../tut/ints/tom_int.html | 119 + .../boost_multiprecision/tut/primetest.html | 108 + doc/html/boost_multiprecision/tut/random.html | 157 + .../boost_multiprecision/tut/rational.html | 252 ++ .../boost_multiprecision/tut/rational/br.html | 42 + .../tut/rational/cpp_rational.html | 108 + .../tut/rational/gmp_rational.html | 138 + .../tut/rational/rational_adapter.html | 58 + .../tut/rational/tommath_rational.html | 115 + doc/html/index.html | 108 + 44 files changed, 13125 insertions(+) create mode 100644 doc/html/boost_multiprecision/indexes.html create mode 100644 doc/html/boost_multiprecision/indexes/s01.html create mode 100644 doc/html/boost_multiprecision/indexes/s02.html create mode 100644 doc/html/boost_multiprecision/indexes/s03.html create mode 100644 doc/html/boost_multiprecision/indexes/s04.html create mode 100644 doc/html/boost_multiprecision/intro.html create mode 100644 doc/html/boost_multiprecision/map.html create mode 100644 doc/html/boost_multiprecision/map/ack.html create mode 100644 doc/html/boost_multiprecision/map/hist.html create mode 100644 doc/html/boost_multiprecision/map/todo.html create mode 100644 doc/html/boost_multiprecision/perf.html create mode 100644 doc/html/boost_multiprecision/perf/float_performance.html create mode 100644 doc/html/boost_multiprecision/perf/int_real_world.html create mode 100644 doc/html/boost_multiprecision/perf/integer_performance.html create mode 100644 doc/html/boost_multiprecision/perf/rational_performance.html create mode 100644 doc/html/boost_multiprecision/perf/realworld.html create mode 100644 doc/html/boost_multiprecision/ref.html create mode 100644 doc/html/boost_multiprecision/ref/backendconc.html create mode 100644 doc/html/boost_multiprecision/ref/cpp_dec_ref.html create mode 100644 doc/html/boost_multiprecision/ref/cpp_int_ref.html create mode 100644 doc/html/boost_multiprecision/ref/gmp_int_ref.html create mode 100644 doc/html/boost_multiprecision/ref/mp_number.html create mode 100644 doc/html/boost_multiprecision/ref/mpf_ref.html create mode 100644 doc/html/boost_multiprecision/ref/mpfr_ref.html create mode 100644 doc/html/boost_multiprecision/ref/tom_int_ref.html create mode 100644 doc/html/boost_multiprecision/tut.html create mode 100644 doc/html/boost_multiprecision/tut/conversions.html create mode 100644 doc/html/boost_multiprecision/tut/floats.html create mode 100644 doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html create mode 100644 doc/html/boost_multiprecision/tut/floats/gmp_float.html create mode 100644 doc/html/boost_multiprecision/tut/floats/mpfr_float.html create mode 100644 doc/html/boost_multiprecision/tut/ints.html create mode 100644 doc/html/boost_multiprecision/tut/ints/cpp_int.html create mode 100644 doc/html/boost_multiprecision/tut/ints/gmp_int.html create mode 100644 doc/html/boost_multiprecision/tut/ints/tom_int.html create mode 100644 doc/html/boost_multiprecision/tut/primetest.html create mode 100644 doc/html/boost_multiprecision/tut/random.html create mode 100644 doc/html/boost_multiprecision/tut/rational.html create mode 100644 doc/html/boost_multiprecision/tut/rational/br.html create mode 100644 doc/html/boost_multiprecision/tut/rational/cpp_rational.html create mode 100644 doc/html/boost_multiprecision/tut/rational/gmp_rational.html create mode 100644 doc/html/boost_multiprecision/tut/rational/rational_adapter.html create mode 100644 doc/html/boost_multiprecision/tut/rational/tommath_rational.html create mode 100644 doc/html/index.html diff --git a/doc/html/boost_multiprecision/indexes.html b/doc/html/boost_multiprecision/indexes.html new file mode 100644 index 00000000..e3925a4f --- /dev/null +++ b/doc/html/boost_multiprecision/indexes.html @@ -0,0 +1,40 @@ + + + +Indexes + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html new file mode 100644 index 00000000..59767df1 --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -0,0 +1,237 @@ + + + +Function Index + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +Function Index

    +

    A B C D E F I L M P R S T Z

    +
    +
    +A +
    +
    +
    +B +
    +
    +
    +C +
    +
    +
    +D +
    +
    +
    +E +
    +
    +
    +F +
    +
    +
    +I +
    +
    +
    +L +
    +
    +
    +M +
    +
    +
    +P +
    +
    +
    +R +
    +
    +
    +S +
    +
    +
    +T +
    +
    +
    +Z +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html new file mode 100644 index 00000000..4cc5f7c9 --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -0,0 +1,46 @@ + + + +Class Index + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +Class Index

    +

    M

    +
    +
    +M +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html new file mode 100644 index 00000000..ce12f7c2 --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -0,0 +1,189 @@ + + + +Typedef Index + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +Typedef Index

    +

    C I L M T

    +
    +
    +C +
    +
    +
    +I +
    +
    +
    +L +
    +
    +
    +M +
    +
    +
    +T +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html new file mode 100644 index 00000000..3ac7ed2e --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -0,0 +1,519 @@ + + + +Index + + + + + + + +
    +PrevUpHome +
    +
    +

    +Index

    +

    A B C D E F G I L M O P R S T Z

    +
    +
    +A +
    +
    +
    +B +
    +
    +
    +C +
    +
    +
    +D +
    +
    +
    +E +
    +
    +
    +F +
    +
    +
    +G +
    +
    +
    +I +
    +
    +
    +L +
    +
    +
    +M +
    +
    +
    +O +
    +
    +
    +P +
    +
    +
    +R +
    +
    +
    +S +
    +
    +
    +T +
    +
    +
    +Z +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHome +
    + + diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html new file mode 100644 index 00000000..724a4e3a --- /dev/null +++ b/doc/html/boost_multiprecision/intro.html @@ -0,0 +1,522 @@ + + + +Introduction + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + The Multiprecision Library provides User-defined integer, + rational and floating-point C++ types which try to emulate as closely as practicable + the C++ built-in types, but provide for more range and precision. Depending + upon the number type, precision may be arbitrarily large (limited only by available + memory), fixed at compile time values, for example 50 decimal digits, or a + variable controlled at run-time by member functions. The types are expression-template-enabled + for better performance than naive user-defined types. +

    +

    + The Multiprecision library comes in two distinct parts: +

    +
      +
    • + An expression-template-enabled front-end mp_number + that handles all the operator overloading, expression evaluation optimization, + and code reduction. +
    • +
    • + A selection of back-ends that implement the actual arithmetic operations, + and need conform only to the reduced interface requirements of the front-end. +
    • +
    +

    + Separation of front-end and back-end allows use of highly refined, but restricted + license libraries where possible, but provides Boost license alternatives for + users who must have a portable unconstrained license. Which is to say some + back-ends rely on 3rd party libraries, but a header-only Boost license version + is always available (if somewhat slower). +

    +

    + The library is often used via one of the predefined typedefs: for example if + you wanted an arbitrary + precision integer type using GMP + as the underlying implementation then you could use: +

    +
    #include <boost/multiprecision/gmp.hpp>  // Defines the wrappers around the GMP library's types
    +
    +boost::multiprecision::mpz_int myint;    // Arbitrary precision integer type.
    +
    +

    + Alternatively, you can compose your own multiprecision type, by combining + mp_number with one of the predefined + back-end types. For example, suppose you wanted a 300 decimal digit floating-point + type based on the MPFR library. In + this case, there's no predefined typedef with that level of precision, so instead + we compose our own: +

    +
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    +
    +namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    +
    +typedef mp::mp_number<mp::mpfr_float_backend<300> >  my_float;
    +
    +my_float a, b, c; // These variables have 300 decimal digits precision
    +
    +

    + We can repeat the above example, but with the expression templates disabled + (for faster compile times, but slower runtimes) by passing a second template + argument to mp_number: +

    +
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    +
    +namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    +
    +typedef mp::mp_number<mp::mpfr_float_backend<300>, false>  my_float;
    +
    +my_float a, b, c; // These variables have 300 decimal digits precision
    +
    +
    + + Expression + Templates +
    +

    + Class mp_number is expression-template-enabled: + that means that rather than having a multiplication operator that looks like + this: +

    +
    template <class Backend>
    +mp_number<Backend> operator * (const mp_number<Backend>& a, const mp_number<Backend>& b)
    +{
    +   mp_number<Backend> result(a);
    +   result *= b;
    +   return result;
    +}
    +
    +

    + Instead the operator looks more like this: +

    +
    template <class Backend>
    +unmentionable-type operator * (const mp_number<Backend>& a, const mp_number<Backend>& b);
    +
    +

    + Where the "unmentionable" return type is an implementation detail + that, rather than containing the result of the multiplication, contains instructions + on how to compute the result. In effect it's just a pair of references to the + arguments of the function, plus some compile-time information that stores what + the operation is. +

    +

    + The great advantage of this method is the elimination of temporaries: + for example the "naive" implementation of operator* above, requires one temporary for computing + the result, and at least another one to return it. It's true that sometimes + this overhead can be reduced by using move-semantics, but it can't be eliminated + completely. For example, lets suppose we're evaluating a polynomial via Horners + method, something like this: +

    +
    T a[7] = { /* some values */ };
    +//....
    +y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0];
    +
    +

    + If type T is an mp_number, then this expression is evaluated + without creating a single temporary value. In contrast, + if we were using the C++ wrapper that ships with GMP + - mpfr_class + - then this expression would result in no less than 11 temporaries (this is + true even though mpfr_class + does use expression templates to reduce the number of temporaries somewhat). + Had we used an even simpler wrapper around GMP + or MPFR like mpclass + things would have been even worse and no less that 24 temporaries are created + for this simple expression (note - we actually measure the number of memory + allocations performed rather than the number of temporaries directly). +

    +

    + This library also extends expression template support to standard library functions + like abs or sin + with mp_number arguments. This + means that an expression such as: +

    +
    y = abs(x);
    +
    +

    + can be evaluated without a single temporary being calculated. Even expressions + like: +

    +
    y = sin(x);
    +
    +

    + get this treatment, so that variable 'y' is used as "working storage" + within the implementation of sin, + thus reducing the number of temporaries used by one. Of course, should you + write: +

    +
    x = sin(x);
    +
    +

    + Then we clearly can't use x + as working storage during the calculation, so then a temporary variable is + created in this case. +

    +

    + Given the comments above, you might be forgiven for thinking that expression-templates + are some kind of universal-panacea: sadly though, all tricks like this have + their downsides. For one thing, expression template libraries like this one, + tend to be slower to compile than their simpler cousins, they're also harder + to debug (should you actually want to step through our code!), and rely on + compiler optimizations being turned on to give really good performance. Also, + since the return type from expressions involving mp_numbers + is an "unmentionable implementation detail", you have to be careful + to cast the result of an expression to the actual number type when passing + an expression to a template function. For example, given: +

    +
    template <class T>
    +void my_proc(const T&);
    +
    +

    + Then calling: +

    +
    my_proc(a+b);
    +
    +

    + Will very likely result in obscure error messages inside the body of my_proc - since we've passed it an expression + template type, and not a number type. Instead we probably need: +

    +
    my_proc(my_mp_number_type(a+b));
    +
    +

    + Having said that, these situations don't occur that often - or indeed not at + all for non-template functions. In addition, all the functions in the Boost.Math + library will automatically convert expression-template arguments to the underlying + number type without you having to do anything, so: +

    +
    mpfr_float_100 a(20), delta(0.125);
    +boost::math::gamma_p(a, a + delta);
    +
    +

    + Will work just fine, with the a + delta expression + template argument getting converted to an mpfr_float_100 + internally by the Boost.Math library. +

    +

    + One other potential pitfall that's only possible in C++11: you should never + store an expression template using: +

    +
    auto my_expression = a + b - c;
    +
    +

    + unless you're absolutely sure that the lifetimes of a, + b and c + will outlive that of my_expression. +

    +

    + And finally... the performance improvements from an expression template library + like this are often not as dramatic as the reduction in number of temporaries + would suggest. For example if we compare this library with mpfr_class + and mpreal, with + all three using the underlying MPFR + library at 50 decimal digits precision then we see the following typical results + for polynomial execution: +

    +
    +

    Table 1.1. Evaluation of Order 6 Polynomial.

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + Relative Time +

    +
    +

    + Relative number of memory allocations +

    +
    +

    + mp_number +

    +
    +

    + 1.0 (0.00793s) +

    +
    +

    + 1.0 (2996 total) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.2 (0.00931s) +

    +
    +

    + 4.3 (12976 total) +

    +
    +

    + mpreal +

    +
    +

    + 1.9 (0.0148s) +

    +
    +

    + 9.3 (27947 total) +

    +
    +
    +

    + As you can see, the execution time increases a lot more slowly than the number + of memory allocations. There are a number of reasons for this: +

    +
      +
    • + The cost of extended-precision multiplication and division is so great, + that the times taken for these tend to swamp everything else. +
    • +
    • + The cost of an in-place multiplication (using operator*=) tends to be more than an out-of-place + operator* + (typically operator *= + has to create a temporary workspace to carry out the multiplication, where + as operator* + can use the target variable as workspace). Since the expression templates + carry out their magic by converting out-of-place operators to in-place + ones, we necessarily take this hit. Even so the transformation is more + efficient than creating the extra temporary variable, just not by as much + as one would hope. +
    • +
    +

    + Finally, note that mp_number + takes a second template argument, which, when set to false + disables all the expression template machinery. The result is much faster to + compile, but slower at runtime. +

    +

    + We'll conclude this section by providing some more performance comparisons + between these three libraries, again, all are using MPFR + to carry out the underlying arithmetic, and all are operating at the same precision + (50 decimal digits): +

    +
    +

    Table 1.2. Evaluation of Boost.Math's Bessel function test data

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + Relative Time +

    +
    +

    + Relative Number of Memory Allocations +

    +
    +

    + mp_number +

    +
    +

    + 1.0 (6.21s) +

    +
    +

    + 1.0 (2685469) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.04 (6.45s) +

    +
    +

    + 1.47 (3946007) +

    +
    +

    + mpreal +

    +
    +

    + 1.53 (9.52s) +

    +
    +

    + 4.92 (13222940) +

    +
    +
    +
    +

    Table 1.3. Evaluation of Boost.Math's Non-Central T distribution test data

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + Relative Time +

    +
    +

    + Relative Number of Memory Allocations +

    +
    +

    + mp_number +

    +
    +

    + 1.0 (269s) +

    +
    +

    + 1.0 (139082551) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.04 (278s) +

    +
    +

    + 1.81 (252400791) +

    +
    +

    + mpreal +

    +
    +

    + 1.49 (401s) +

    +
    +

    + 3.22 (447009280) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html new file mode 100644 index 00000000..8edb89d1 --- /dev/null +++ b/doc/html/boost_multiprecision/map.html @@ -0,0 +1,39 @@ + + + +Roadmap + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map/ack.html b/doc/html/boost_multiprecision/map/ack.html new file mode 100644 index 00000000..4de1bb82 --- /dev/null +++ b/doc/html/boost_multiprecision/map/ack.html @@ -0,0 +1,55 @@ + + + +Acknowledgements + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + This library would not have happened without: +

    +
      +
    • + Christopher Kormanyos' C++ decimal number code. +
    • +
    • + Paul Bristow for patiently testing, and commenting on the library. +
    • +
    • + All the folks at GMP, MPFR and libtommath, for providing the "guts" + that makes this library work. +
    • +
    • + "The + Art Of Computer Programming", Donald E. Knuth, Volume 2: + Seminumerical Algorithms, Third Edition (Reading, Massachusetts: Addison-Wesley, + 1997), xiv+762pp. ISBN 0-201-89684-2 +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html new file mode 100644 index 00000000..70462181 --- /dev/null +++ b/doc/html/boost_multiprecision/map/hist.html @@ -0,0 +1,50 @@ + + + +History + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
      +
    • + 2011-2012, John Maddock adds an expression template enabled front end + to Christopher's code, and adds support for other backends. +
    • +
    • + 2011, Christopher Kormanyos publishes the decimal floating point code + under the Boost Software Licence. The code is published as: "Algorithm + 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", + in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. +
    • +
    • + 2002-2011, Christopher Kormanyos develops the all C++ decimal arithmetic + floating point code. +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html new file mode 100644 index 00000000..1c188b18 --- /dev/null +++ b/doc/html/boost_multiprecision/map/todo.html @@ -0,0 +1,58 @@ + + + +TODO + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +TODO +

    +

    + More a list of what could be done, rather than what + should be done (which may be a much smaller list!). +

    +
      +
    • + Add back-end support for libdecNumber. +
    • +
    • + Add an adapter back-end for complex number types. +
    • +
    • + Add a back-end for MPFR interval arithmetic. +
    • +
    • + Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend. +
    • +
    • + Add assembly level routines to cpp_int_backend. +
    • +
    • + Add an all C++ binary floating point type. +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html new file mode 100644 index 00000000..7460f077 --- /dev/null +++ b/doc/html/boost_multiprecision/perf.html @@ -0,0 +1,46 @@ + + + +Performance Comparison + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html new file mode 100644 index 00000000..9e9b8217 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/float_performance.html @@ -0,0 +1,961 @@ + + + +Float Algorithm Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticism, and real-world + performance may vary widely depending upon the specifics of the program. + In each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    +

    Table 1.8. Operator +

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1 (0.02382s) +

    +
    +

    + 1 (0.0294619s) +

    +
    +

    + 1 (0.058466s) +

    +
    +

    + gmp_float +

    +
    +

    + 4.55086 (0.108402s) +

    +
    +

    + 3.86443 (0.113853s) +

    +
    +

    + 2.6241 (0.15342s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.52036 (0.060035s) +

    +
    +

    + 2.1833 (0.0643242s) +

    +
    +

    + 1.37736 (0.0805287s) +

    +
    +
    +
    +

    Table 1.9. Operator +(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.56759 (0.0527023s) +

    +
    +

    + 1.74629 (0.0618102s) +

    +
    +

    + 1.68077 (0.105927s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0336201s) +

    +
    +

    + 1 (0.0353951s) +

    +
    +

    + 1 (0.0630232s) +

    +
    +

    + mpfr_float +

    +
    +

    + 3.14875 (0.105861s) +

    +
    +

    + 3.15499 (0.111671s) +

    +
    +

    + 1.92831 (0.121528s) +

    +
    +
    +
    +

    Table 1.10. Operator -

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1 (0.0265783s) +

    +
    +

    + 1 (0.031465s) +

    +
    +

    + 1 (0.0619405s) +

    +
    +

    + gmp_float +

    +
    +

    + 4.66954 (0.124108s) +

    +
    +

    + 3.72645 (0.117253s) +

    +
    +

    + 2.67536 (0.165713s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.7909 (0.0741774s) +

    +
    +

    + 2.48557 (0.0782083s) +

    +
    +

    + 1.50944 (0.0934957s) +

    +
    +
    +
    +

    Table 1.11. Operator -(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1 (0.0577674s) +

    +
    +

    + 1 (0.0633795s) +

    +
    +

    + 1 (0.11146s) +

    +
    +

    + gmp_float +

    +
    +

    + 2.31811 (0.133911s) +

    +
    +

    + 2.07251 (0.131355s) +

    +
    +

    + 1.67161 (0.186319s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.45081 (0.141577s) +

    +
    +

    + 2.29174 (0.145249s) +

    +
    +

    + 1.395 (0.155487s) +

    +
    +
    +
    +

    Table 1.12. Operator *

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.07276 (0.287898s) +

    +
    +

    + 1.47724 (0.584569s) +

    +
    +

    + 1.55145 (5.09969s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.268372s) +

    +
    +

    + 1 (0.395718s) +

    +
    +

    + 1 (3.28705s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.27302 (0.341642s) +

    +
    +

    + 1.17649 (0.465557s) +

    +
    +

    + 1.14029 (3.7482s) +

    +
    +
    +
    +

    Table 1.13. Operator *(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 2.89945 (0.11959s) +

    +
    +

    + 4.56335 (0.197945s) +

    +
    +

    + 9.03602 (0.742044s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0412457s) +

    +
    +

    + 1 (0.0433772s) +

    +
    +

    + 1 (0.0821206s) +

    +
    +

    + mpfr_float +

    +
    +

    + 3.6951 (0.152407s) +

    +
    +

    + 3.71977 (0.161353s) +

    +
    +

    + 3.30958 (0.271785s) +

    +
    +
    +
    +

    Table 1.14. Operator /

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 3.24327 (4.00108s) +

    +
    +

    + 5.00532 (8.12985s) +

    +
    +

    + 6.79566 (54.2796s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (1.23366s) +

    +
    +

    + 1 (1.62424s) +

    +
    +

    + 1 (7.9874s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.32521 (1.63486s) +

    +
    +

    + 1.38967 (2.25716s) +

    +
    +

    + 1.72413 (13.7713s) +

    +
    +
    +
    +

    Table 1.15. Operator /(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.45093 (0.253675s) +

    +
    +

    + 1.83306 (0.419569s) +

    +
    +

    + 2.3644 (1.64187s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.174836s) +

    +
    +

    + 1 (0.22889s) +

    +
    +

    + 1 (0.694411s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.16731 (0.204088s) +

    +
    +

    + 1.13211 (0.259127s) +

    +
    +

    + 1.02031 (0.708513s) +

    +
    +
    +
    +

    Table 1.16. Operator str

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.4585 (0.0188303s) +

    +
    +

    + 1.55515 (0.03172s) +

    +
    +

    + 1 (0.131962s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0129107s) +

    +
    +

    + 1 (0.0203967s) +

    +
    +

    + 1.04632 (0.138075s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.19015 (0.0282764s) +

    +
    +

    + 1.84679 (0.0376683s) +

    +
    +

    + 1.20295 (0.158743s) +

    +
    +
    +

    + ] +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html new file mode 100644 index 00000000..89278b58 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/int_real_world.html @@ -0,0 +1,217 @@ + + + +Integer Real World Tests + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + These tests + measure the time taken to generate 1000 128-bit random numbers and test for + primality using the Miller Rabin test. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and libtommath-0.42.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Integer Type +

    +
    +

    + Relative (and Absolute) Times +

    +
    +

    + mpz_int +

    +
    +

    + 1.08279(0.370326s) +

    +
    +

    + mpz_int (no Expression templates) +

    +
    +

    + 1.1702(0.400222s) +

    +
    +

    + cpp_int +

    +
    +

    + 1.3612(0.465547s) +

    +
    +

    + cpp_int (no Expression templates) +

    +
    +

    + 1.33286(0.455854s) +

    +
    +

    + cpp_int (64-bit cache) +

    +
    +

    + 1.33134(0.455333s) +

    +
    +

    + cpp_int (256-bit cache) +

    +
    +

    + 1.29367(0.442451s) +

    +
    +

    + cpp_int (512-bit cache) +

    +
    +

    + 1.08821(0.37218s) +

    +
    +

    + cpp_int (1024-bit cache) +

    +
    +

    + 1.07902(0.369037s) +

    +
    +

    + mp_int1024_t +

    +
    +

    + 1.02616(0.35096s) +

    +
    +

    + mp_int1024_t (no Expression templates) +

    +
    +

    + 1(0.342011s) +

    +
    +

    + tom_int +

    +
    +

    + 3.74233(1.27992s) +

    +
    +

    + tom_int (no Expression templates) +

    +
    +

    + 3.97646(1.35999s) +

    +
    +

    + It's interesting to note that expression templates have little effect here + - perhaps because the actual expressions involved are relatively trivial + in this case - so the time taken for multiplication and division tends to + dominate. Also note how increasing the internal cache size used by cpp_int is quite effective in this case + in cutting out memory allocations altogether - cutting about a third off + the total runtime. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html new file mode 100644 index 00000000..b7bbe0e7 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -0,0 +1,3034 @@ + + + +Integer Algorithm Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticism, and real-world + performance may vary widely depending upon the specifics of the program. + In each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +

    + Linux x86_64 results are broadly similar, except that libtommath performs + much better there. +

    +
    +

    Table 1.17. Operator +

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.24574 (0.0270133s) +

    +
    +

    + 1.09665 (0.0352319s) +

    +
    +

    + 1.25708 (0.0524047s) +

    +
    +

    + 1.31488 (0.08777s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.05787 (0.0229394s) +

    +
    +

    + 1 (0.0321268s) +

    +
    +

    + 1.16171 (0.0484289s) +

    +
    +

    + 1.24017 (0.0827832s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.08016 (0.0451073s) +

    +
    +

    + 1.33792 (0.042983s) +

    +
    +

    + 1.19676 (0.0498904s) +

    +
    +

    + 1 (0.0667514s) +

    +
    +

    + tommath_int +

    +
    +

    + 1 (0.0216845s) +

    +
    +

    + 1.07779 (0.0346258s) +

    +
    +

    + 1 (0.0416877s) +

    +
    +

    + 1.06344 (0.0709863s) +

    +
    +
    +
    +

    Table 1.18. Operator +(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.46244 (0.0202077s) +

    +
    +

    + 1.20665 (0.0238576s) +

    +
    +

    + 1.17647 (0.0258293s) +

    +
    +

    + 1.12424 (0.0317931s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0138178s) +

    +
    +

    + 1 (0.0197719s) +

    +
    +

    + 1 (0.0219548s) +

    +
    +

    + 1 (0.0282796s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.15321 (0.0297527s) +

    +
    +

    + 2.09834 (0.041488s) +

    +
    +

    + 2.89935 (0.0636546s) +

    +
    +

    + 3.70262 (0.104709s) +

    +
    +

    + tommath_int +

    +
    +

    + 17.1419 (0.236864s) +

    +
    +

    + 12.9762 (0.256563s) +

    +
    +

    + 12.3275 (0.270648s) +

    +
    +

    + 10.7373 (0.303648s) +

    +
    +
    +
    +

    Table 1.19. Operator -

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.15385 (0.029665s) +

    +
    +

    + 1.08217 (0.0369886s) +

    +
    +

    + 1.05882 (0.051534s) +

    +
    +

    + 1.12132 (0.0822725s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0257095s) +

    +
    +

    + 1 (0.0341801s) +

    +
    +

    + 1 (0.0486711s) +

    +
    +

    + 1.08659 (0.0797242s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.56685 (0.040283s) +

    +
    +

    + 1.32917 (0.0454312s) +

    +
    +

    + 1.06917 (0.0520378s) +

    +
    +

    + 1 (0.0733708s) +

    +
    +

    + tommath_int +

    +
    +

    + 1.059 (0.0272264s) +

    +
    +

    + 1.16974 (0.0399818s) +

    +
    +

    + 1.01303 (0.0493054s) +

    +
    +

    + 1.03375 (0.0758472s) +

    +
    +
    +
    +

    Table 1.20. Operator -(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.51665 (0.0157196s) +

    +
    +

    + 1.31513 (0.0200533s) +

    +
    +

    + 1.29599 (0.0235066s) +

    +
    +

    + 1.21534 (0.0266136s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0103647s) +

    +
    +

    + 1 (0.0152482s) +

    +
    +

    + 1 (0.018138s) +

    +
    +

    + 1 (0.021898s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.7938 (0.0289568s) +

    +
    +

    + 2.55493 (0.038958s) +

    +
    +

    + 3.12248 (0.0566356s) +

    +
    +

    + 4.48855 (0.0982904s) +

    +
    +

    + tommath_int +

    +
    +

    + 20.8695 (0.216305s) +

    +
    +

    + 15.0705 (0.229797s) +

    +
    +

    + 13.4093 (0.243217s) +

    +
    +

    + 12.2599 (0.268468s) +

    +
    +
    +
    +

    Table 1.21. Operator *

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.29504 (0.0731032s) +

    +
    +

    + 1.55431 (0.196132s) +

    +
    +

    + 1.4363 (0.656569s) +

    +
    +

    + 1.63701 (2.47859s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0564485s) +

    +
    +

    + 1.16604 (0.147138s) +

    +
    +

    + 1 (0.457124s) +

    +
    +

    + 1 (1.5141s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.19574 (0.0674975s) +

    +
    +

    + 1 (0.126186s) +

    +
    +

    + 1.16627 (0.53313s) +

    +
    +

    + 1.02906 (1.5581s) +

    +
    +

    + tommath_int +

    +
    +

    + 1.97229 (0.111333s) +

    +
    +

    + 2.67087 (0.337027s) +

    +
    +

    + 2.13031 (0.973817s) +

    +
    +

    + 2.05869 (3.11706s) +

    +
    +
    +
    +

    Table 1.22. Operator *(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.34609 (0.030315s) +

    +
    +

    + 1.57086 (0.0407838s) +

    +
    +

    + 1.60154 (0.0542267s) +

    +
    +

    + 1.67808 (0.0804984s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.29783 (0.0292279s) +

    +
    +

    + 1.58263 (0.0410894s) +

    +
    +

    + 1.61543 (0.054697s) +

    +
    +

    + 1.66841 (0.0800346s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.0225207s) +

    +
    +

    + 1 (0.0259628s) +

    +
    +

    + 1 (0.033859s) +

    +
    +

    + 1 (0.0479706s) +

    +
    +

    + tommath_int +

    +
    +

    + 12.4278 (0.279882s) +

    +
    +

    + 11.9045 (0.309074s) +

    +
    +

    + 10.5973 (0.358813s) +

    +
    +

    + 9.47384 (0.454466s) +

    +
    +
    +
    +

    Table 1.23. Operator /

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 2.86387 (0.593314s) +

    +
    +

    + 2.18375 (0.69965s) +

    +
    +

    + 1.72571 (0.918294s) +

    +
    +

    + 1.39251 (1.33801s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.207172s) +

    +
    +

    + 1 (0.320389s) +

    +
    +

    + 1 (0.532127s) +

    +
    +

    + 1 (0.960856s) +

    +
    +

    + gmp_int +

    +
    +

    + 3.89115 (0.806137s) +

    +
    +

    + 2.87573 (0.921352s) +

    +
    +

    + 1.96635 (1.04635s) +

    +
    +

    + 1.29618 (1.24544s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.9483 (2.47535s) +

    +
    +

    + 9.35941 (2.99865s) +

    +
    +

    + 8.79014 (4.67747s) +

    +
    +

    + 11.8316 (11.3684s) +

    +
    +
    +
    +

    Table 1.24. Operator /(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 5.77003 (0.313196s) +

    +
    +

    + 4.38067 (0.431864s) +

    +
    +

    + 3.55054 (0.634559s) +

    +
    +

    + 2.97898 (1.03205s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 2.48952 (0.135131s) +

    +
    +

    + 2.59188 (0.255519s) +

    +
    +

    + 2.56716 (0.458808s) +

    +
    +

    + 2.52368 (0.874313s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.0542797s) +

    +
    +

    + 1 (0.0985842s) +

    +
    +

    + 1 (0.178722s) +

    +
    +

    + 1 (0.346443s) +

    +
    +

    + tommath_int +

    +
    +

    + 31.6477 (1.71783s) +

    +
    +

    + 22.8727 (2.25489s) +

    +
    +

    + 19.9248 (3.56101s) +

    +
    +

    + 24.3266 (8.42779s) +

    +
    +
    +
    +

    Table 1.25. Operator %

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.9813 (0.357541s) +

    +
    +

    + 1.55667 (0.460146s) +

    +
    +

    + 1.35341 (0.681144s) +

    +
    +

    + 1.19906 (1.10138s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.180457s) +

    +
    +

    + 1 (0.295597s) +

    +
    +

    + 1 (0.503278s) +

    +
    +

    + 1 (0.918538s) +

    +
    +

    + gmp_int +

    +
    +

    + 3.50213 (0.631985s) +

    +
    +

    + 2.33312 (0.689662s) +

    +
    +

    + 1.57264 (0.791475s) +

    +
    +

    + 1.07795 (0.99014s) +

    +
    +

    + tommath_int +

    +
    +

    + 12.2393 (2.20868s) +

    +
    +

    + 10.1123 (2.98915s) +

    +
    +

    + 9.46676 (4.76442s) +

    +
    +

    + 12.1795 (11.1873s) +

    +
    +
    +
    +

    Table 1.26. Operator %(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.88485 (0.105552s) +

    +
    +

    + 2.00194 (0.203711s) +

    +
    +

    + 2.08202 (0.380096s) +

    +
    +

    + 2.12794 (0.752068s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.7474 (0.0978544s) +

    +
    +

    + 1.88457 (0.191768s) +

    +
    +

    + 2.0306 (0.37071s) +

    +
    +

    + 2.0851 (0.736929s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.0560001s) +

    +
    +

    + 1 (0.101757s) +

    +
    +

    + 1 (0.182561s) +

    +
    +

    + 1 (0.353426s) +

    +
    +

    + tommath_int +

    +
    +

    + 30.4466 (1.70501s) +

    +
    +

    + 22.2997 (2.26915s) +

    +
    +

    + 19.6199 (3.58184s) +

    +
    +

    + 24.0694 (8.50676s) +

    +
    +
    +
    +

    Table 1.27. Operator <<

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.20362 (0.0224696s) +

    +
    +

    + 1.08555 (0.0294403s) +

    +
    +

    + 1 (0.0360516s) +

    +
    +

    + 1.07177 (0.0523935s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0186683s) +

    +
    +

    + 1 (0.0271201s) +

    +
    +

    + 1.02126 (0.036818s) +

    +
    +

    + 1 (0.0488848s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.36706 (0.0255207s) +

    +
    +

    + 1.12042 (0.0303858s) +

    +
    +

    + 1.24359 (0.0448335s) +

    +
    +

    + 1.40143 (0.0685085s) +

    +
    +

    + tommath_int +

    +
    +

    + 2.09357 (0.0390833s) +

    +
    +

    + 2.4569 (0.0666312s) +

    +
    +

    + 2.63592 (0.0950291s) +

    +
    +

    + 3.43638 (0.167987s) +

    +
    +
    +
    +

    Table 1.28. Operator >>

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.33649 (0.0210319s) +

    +
    +

    + 1.12919 (0.0266135s) +

    +
    +

    + 1.10413 (0.0307184s) +

    +
    +

    + 1.09267 (0.0399373s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0157367s) +

    +
    +

    + 1 (0.0235686s) +

    +
    +

    + 1 (0.0278214s) +

    +
    +

    + 1.05198 (0.0384501s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.72135 (0.0270884s) +

    +
    +

    + 1.2078 (0.0284661s) +

    +
    +

    + 1.16066 (0.0322912s) +

    +
    +

    + 1 (0.0365503s) +

    +
    +

    + tommath_int +

    +
    +

    + 15.4381 (0.242945s) +

    +
    +

    + 11.8797 (0.279987s) +

    +
    +

    + 10.9043 (0.303374s) +

    +
    +

    + 14.0762 (0.514491s) +

    +
    +
    +
    +

    Table 1.29. Operator &

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.65829 (0.0314059s) +

    +
    +

    + 1.42198 (0.0390384s) +

    +
    +

    + 1.48578 (0.0498903s) +

    +
    +

    + 1.51243 (0.0770342s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0189387s) +

    +
    +

    + 1 (0.0274536s) +

    +
    +

    + 1 (0.0335786s) +

    +
    +

    + 1 (0.0509341s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.80248 (0.0530755s) +

    +
    +

    + 2.39752 (0.0658206s) +

    +
    +

    + 2.66009 (0.089322s) +

    +
    +

    + 2.73942 (0.13953s) +

    +
    +

    + tommath_int +

    +
    +

    + 6.95432 (0.131706s) +

    +
    +

    + 5.4059 (0.148412s) +

    +
    +

    + 4.56887 (0.153417s) +

    +
    +

    + 6.5696 (0.334616s) +

    +
    +
    +
    +

    Table 1.30. Operator &(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.63285 (0.0472296s) +

    +
    +

    + 1.43344 (0.0588492s) +

    +
    +

    + 1.33141 (0.0724386s) +

    +
    +

    + 1.21353 (0.104144s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0289247s) +

    +
    +

    + 1 (0.0410546s) +

    +
    +

    + 1 (0.0544075s) +

    +
    +

    + 1 (0.0858187s) +

    +
    +

    + gmp_int +

    +
    +

    + 5.24478 (0.151704s) +

    +
    +

    + 3.81907 (0.15679s) +

    +
    +

    + 2.77979 (0.151242s) +

    +
    +

    + 1.84209 (0.158086s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.7257 (0.339163s) +

    +
    +

    + 8.6379 (0.354625s) +

    +
    +

    + 6.90411 (0.375636s) +

    +
    +

    + 7.63253 (0.655013s) +

    +
    +
    +
    +

    Table 1.31. Operator ^

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.39325 (0.0297525s) +

    +
    +

    + 1.28821 (0.0385005s) +

    +
    +

    + 1.18843 (0.0492426s) +

    +
    +

    + 1.07724 (0.0758668s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0213547s) +

    +
    +

    + 1 (0.0298868s) +

    +
    +

    + 1 (0.041435s) +

    +
    +

    + 1 (0.070427s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.28582 (0.048813s) +

    +
    +

    + 2.03478 (0.0608129s) +

    +
    +

    + 2.05655 (0.0852131s) +

    +
    +

    + 1.92381 (0.135488s) +

    +
    +

    + tommath_int +

    +
    +

    + 6.17078 (0.131775s) +

    +
    +

    + 4.8567 (0.145151s) +

    +
    +

    + 3.64659 (0.151097s) +

    +
    +

    + 4.78192 (0.336776s) +

    +
    +
    +
    +

    Table 1.32. Operator ^(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.89396 (0.0383127s) +

    +
    +

    + 1.64269 (0.043417s) +

    +
    +

    + 1.5386 (0.0477162s) +

    +
    +

    + 1.32247 (0.0568053s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0202288s) +

    +
    +

    + 1 (0.0264305s) +

    +
    +

    + 1 (0.0310128s) +

    +
    +

    + 1 (0.0429539s) +

    +
    +

    + gmp_int +

    +
    +

    + 7.01953 (0.141997s) +

    +
    +

    + 5.47513 (0.14471s) +

    +
    +

    + 4.6627 (0.144603s) +

    +
    +

    + 3.59601 (0.154463s) +

    +
    +

    + tommath_int +

    +
    +

    + 16.2706 (0.329134s) +

    +
    +

    + 12.9494 (0.342258s) +

    +
    +

    + 11.3305 (0.35139s) +

    +
    +

    + 14.1712 (0.608709s) +

    +
    +
    +
    +

    Table 1.33. Operator |

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.34742 (0.0296944s) +

    +
    +

    + 1.25923 (0.0384846s) +

    +
    +

    + 1.20517 (0.0493908s) +

    +
    +

    + 1.10536 (0.0761343s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0220379s) +

    +
    +

    + 1 (0.030562s) +

    +
    +

    + 1 (0.0409823s) +

    +
    +

    + 1 (0.0688775s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.14429 (0.0472558s) +

    +
    +

    + 1.95901 (0.0598712s) +

    +
    +

    + 2.07584 (0.0850728s) +

    +
    +

    + 1.94265 (0.133805s) +

    +
    +

    + tommath_int +

    +
    +

    + 5.98286 (0.13185s) +

    +
    +

    + 4.65705 (0.142329s) +

    +
    +

    + 3.85812 (0.158115s) +

    +
    +

    + 4.81524 (0.331662s) +

    +
    +
    +
    +

    Table 1.34. Operator |(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.40808 (0.0389721s) +

    +
    +

    + 1.65035 (0.0437872s) +

    +
    +

    + 1.51667 (0.0466144s) +

    +
    +

    + 1.37806 (0.0582842s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0276775s) +

    +
    +

    + 1 (0.026532s) +

    +
    +

    + 1 (0.0307348s) +

    +
    +

    + 1 (0.0422945s) +

    +
    +

    + gmp_int +

    +
    +

    + 5.31451 (0.147092s) +

    +
    +

    + 5.37333 (0.142565s) +

    +
    +

    + 4.86508 (0.149527s) +

    +
    +

    + 3.74364 (0.158335s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.9312 (0.330226s) +

    +
    +

    + 12.943 (0.343403s) +

    +
    +

    + 11.4457 (0.35178s) +

    +
    +

    + 14.4462 (0.610997s) +

    +
    +
    +
    +

    Table 1.35. Operator gcd

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.82514 (4.45586s) +

    +
    +

    + 1.75955 (10.1748s) +

    +
    +

    + 1.87025 (25.23s) +

    +
    +

    + 2.11453 (68.8556s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.57965 (3.85654s) +

    +
    +

    + 1.67404 (9.68027s) +

    +
    +

    + 1.8405 (24.8287s) +

    +
    +

    + 2.27588 (74.1096s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (2.44138s) +

    +
    +

    + 1 (5.78259s) +

    +
    +

    + 1 (13.4902s) +

    +
    +

    + 1 (32.5631s) +

    +
    +

    + tommath_int +

    +
    +

    + 5.01357 (12.24s) +

    +
    +

    + 4.38161 (25.337s) +

    +
    +

    + 4.08681 (55.1319s) +

    +
    +

    + 4.01045 (130.593s) +

    +
    +
    +
    +

    Table 1.36. Operator str

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.46421 (0.00195137s) +

    +
    +

    + 1.21669 (0.00319216s) +

    +
    +

    + 1.25041 (0.00765237s) +

    +
    +

    + 1.53339 (0.0218096s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.00133271s) +

    +
    +

    + 1 (0.00262366s) +

    +
    +

    + 1.0109 (0.00618661s) +

    +
    +

    + 1.24429 (0.0176978s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.7777 (0.00236916s) +

    +
    +

    + 1.27408 (0.00334274s) +

    +
    +

    + 1 (0.00611991s) +

    +
    +

    + 1 (0.0142232s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.9797 (0.0159654s) +

    +
    +

    + 18.3349 (0.0481046s) +

    +
    +

    + 18.3681 (0.112411s) +

    +
    +

    + 25.0355 (0.356085s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html new file mode 100644 index 00000000..6736d065 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/rational_performance.html @@ -0,0 +1,905 @@ + + + +Rational Type Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticism, and real-world + performance may vary widely depending upon the specifics of the program. + In each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    +

    Table 1.37. Operator +

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.91758 (18.1263s) +

    +
    +

    + 6.60754 (44.1182s) +

    +
    +

    + 6.65334 (103.169s) +

    +
    +

    + 6.44717 (244.055s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (3.06312s) +

    +
    +

    + 1 (6.67695s) +

    +
    +

    + 1 (15.5064s) +

    +
    +

    + 1 (37.8546s) +

    +
    +
    +
    +

    Table 1.38. Operator +(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 3.98512 (2.67249s) +

    +
    +

    + 4.24335 (3.04309s) +

    +
    +

    + 4.65009 (3.83046s) +

    +
    +

    + 5.45832 (5.08346s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.670618s) +

    +
    +

    + 1 (0.717144s) +

    +
    +

    + 1 (0.823739s) +

    +
    +

    + 1 (0.931322s) +

    +
    +
    +
    +

    Table 1.39. Operator -

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.91504 (18.2374s) +

    +
    +

    + 6.55676 (43.8659s) +

    +
    +

    + 6.66239 (103.481s) +

    +
    +

    + 6.47224 (244.887s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (3.08322s) +

    +
    +

    + 1 (6.69018s) +

    +
    +

    + 1 (15.5321s) +

    +
    +

    + 1 (37.8365s) +

    +
    +
    +
    +

    Table 1.40. Operator -(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 3.96173 (2.66785s) +

    +
    +

    + 4.36532 (3.09023s) +

    +
    +

    + 4.59363 (3.74494s) +

    +
    +

    + 5.43075 (5.09156s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.673405s) +

    +
    +

    + 1 (0.707904s) +

    +
    +

    + 1 (0.815246s) +

    +
    +

    + 1 (0.937541s) +

    +
    +
    +
    +

    Table 1.41. Operator *

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.59286 (32.3559s) +

    +
    +

    + 6.54125 (82.4247s) +

    +
    +

    + 6.8815 (197.198s) +

    +
    +

    + 6.84066 (473.057s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (5.78521s) +

    +
    +

    + 1 (12.6008s) +

    +
    +

    + 1 (28.6562s) +

    +
    +

    + 1 (69.1537s) +

    +
    +
    +
    +

    Table 1.42. Operator *(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 2.70193 (3.1466s) +

    +
    +

    + 3.10134 (3.79056s) +

    +
    +

    + 3.659 (4.93935s) +

    +
    +

    + 4.61372 (6.89845s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (1.16457s) +

    +
    +

    + 1 (1.22223s) +

    +
    +

    + 1 (1.34992s) +

    +
    +

    + 1 (1.4952s) +

    +
    +
    +
    +

    Table 1.43. Operator /

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 4.36846 (63.9498s) +

    +
    +

    + 5.52565 (145.045s) +

    +
    +

    + 6.18331 (328.069s) +

    +
    +

    + 6.49822 (784.806s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (14.639s) +

    +
    +

    + 1 (26.2494s) +

    +
    +

    + 1 (53.0571s) +

    +
    +

    + 1 (120.772s) +

    +
    +
    +
    +

    Table 1.44. Operator /(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 2.26643 (3.13785s) +

    +
    +

    + 2.57125 (3.76931s) +

    +
    +

    + 3.20872 (5.06758s) +

    +
    +

    + 4.02177 (7.17803s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (1.38449s) +

    +
    +

    + 1 (1.46594s) +

    +
    +

    + 1 (1.57931s) +

    +
    +

    + 1 (1.78479s) +

    +
    +
    +
    +

    Table 1.45. Operator str

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.40493 (0.0199393s) +

    +
    +

    + 8.55089 (0.0511907s) +

    +
    +

    + 9.91026 (0.118839s) +

    +
    +

    + 9.93546 (0.285367s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.00368909s) +

    +
    +

    + 1 (0.00598659s) +

    +
    +

    + 1 (0.0119915s) +

    +
    +

    + 1 (0.028722s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html new file mode 100644 index 00000000..4dd0d5ef --- /dev/null +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -0,0 +1,278 @@ + + + +Floating Point Real World Tests + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + These tests test the total time taken to execute all of Boost.Math's test + cases for these functions. In each case the best performing library gets + a relative score of 1, with the total execution time given in brackets. The + first three libraries listed are the various floating point types provided + by this library, while for comparison, two popular C++ front-ends to MPFR ( mpfr_class + and mpreal) are + also shown. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    +

    Table 1.6. Bessel Function Performance

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + mpfr_float +

    +
    +

    + 1.0 (6.472s) +

    +
    +

    + 1.193 (10.154s) +

    +
    +

    + mpf_float +

    +
    +

    + 1.801 (11.662s) +

    +
    +

    + 1.0(8.511s) +

    +
    +

    + cpp_dec_float +

    +
    +

    + 3.13 (20.285s) +

    +
    +

    + 2.46 (21.019s) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.001 (6.480s) +

    +
    +

    + 1.15(9.805s) +

    +
    +

    + mpreal +

    +
    +

    + 1.542 (9.981s) +

    +
    +

    + 1.61 (13.702s) +

    +
    +
    +
    +

    Table 1.7. Non-Central T Distribution Performance

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + mpfr_float +

    +
    +

    + 1.308 (258.09s) +

    +
    +

    + 1.30 (516.74s) +

    +
    +

    + mpf_float +

    +
    +

    + 1.0 (197.30s) +

    +
    +

    + 1.0(397.30s) +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.695 (334.50s) +

    +
    +

    + 2.68 (1064.53s) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.35 (266.39s) +

    +
    +

    + 1.323 (525.74s) +

    +
    +

    + mpreal +

    +
    +

    + 1.75 (346.64s) +

    +
    +

    + 1.635 (649.94s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html new file mode 100644 index 00000000..35ad59f4 --- /dev/null +++ b/doc/html/boost_multiprecision/ref.html @@ -0,0 +1,44 @@ + + + +Reference + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html new file mode 100644 index 00000000..3bf6b60f --- /dev/null +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -0,0 +1,2295 @@ + + + +Backend Requirements + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + The requirements on the Backend + template argument to mp_number + are split up into compulsory requirements, and optional requirements that + are either to improve performance or provide optional features. +

    +

    + In the following tables, type B is the Backend + template arument to mp_number, + b and b2 + are a variables of type B, cb + and cb2 are constant variables + of type B, a is a variable + of Arithmetic type, s is + a variable of type const char*, ui + is a variable of type unsigned, + bb is a variable of type + bool, pa + is a variable of type pointer-to-arithmetic-type, exp + is a variable of type B::exp_type, pexp + is a variable of type B::exp_type*, + B2 is another type that meets these requirements, b2 is a variable of type + B2. +

    +
    +

    Table 1.4. Compulsory Requirements on the Backend type.

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Return Type +

    +
    +

    + Comments +

    +
    +

    + B::signed_types +

    +
    +

    + mpl::list<type-list> +

    +
    +

    + A list of signed integral types that can be assigned to type B. + The types shall be listed in order of size, smallest first, and + shall terminate in the type that is std::intmax_t. +

    +
    +

    + B::unsigned_types +

    +
    +

    + mpl::list<type-list> +

    +
    +

    + A list of unsigned integral types that can be assigned to type + B. The types shall be listed in order of size, smallest first, + and shall terminate in the type that is std::uintmax_t. +

    +
    +

    + B::float_types +

    +
    +

    + mpl::list<type-list> +

    +
    +

    + A list of floating-point types that can be assigned to type B.The + types shall be listed in order of size, smallest first, and shall + terminate in type long double. +

    +
    +

    + B::exponent_type +

    +
    +

    + A signed integral type. +

    +
    +

    + The type of the exponent of type B. +

    +
    +

    + B() +

    +
    + +

    + Default constructor. +

    +
    +

    + B(cb) +

    +
    + +

    + Copy Constructor. +

    +
    +

    + b = + b +

    +
    +

    + B& +

    +
    +

    + Assignment operator. +

    +
    +

    + b = + a +

    +
    +

    + B& +

    +
    +

    + Assignment from an Arithmetic type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + b = + s +

    +
    +

    + B& +

    +
    +

    + Assignment from a string. +

    +
    +

    + b.swap(b) +

    +
    +

    + void +

    +
    +

    + Swaps the contents of its arguments. +

    +
    +

    + cb.str(ui, + bb) +

    +
    +

    + std::string +

    +
    +

    + Returns the string representation of b + with ui digits + and in scientific format if bb + is true. If ui is zero, then returns as many + digits as are required to reconstruct the original value. +

    +
    +

    + b.negate() +

    +
    +

    + void +

    +
    +

    + Negates b. +

    +
    +

    + cb.compare(cb2) +

    +
    +

    + int +

    +
    +

    + Compares cb and + cb2, returns a + value less than zero if cb + < cb2, + a value greater than zero if cb + > cb2 + and zero if cb == cb2. +

    +
    +

    + cb.compare(a) +

    +
    +

    + int +

    +
    +

    + Compares cb and + a, returns a value + less than zero if cb + < a, + a value greater than zero if cb + > a + and zero if cb == a. + The type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_add(b, + cb) +

    +
    +

    + void +

    +
    +

    + Adds cb to b. +

    +
    +

    + eval_subtract(b, + cb) +

    +
    +

    + void +

    +
    +

    + Subtracts cb from + b. +

    +
    +

    + eval_multiply(b, + cb) +

    +
    +

    + void +

    +
    +

    + Multiplies b by + cb. +

    +
    +

    + eval_divide(b, + cb) +

    +
    +

    + void +

    +
    +

    + Divides b by cb. +

    +
    +

    + eval_modulus(b, + cb) +

    +
    +

    + void +

    +
    +

    + Computes b %= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_bitwise_and(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes b &= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_bitwise_or(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes b |= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_bitwise_xor(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes b ^= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_complement(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes the ones-complement of cb + and stores the result in b, + only required when B + is an integer type. +

    +
    +

    + eval_left_shift(b, ui) +

    +
    +

    + void +

    +
    +

    + Computes b <<= + ui, only required when + B is an integer + type. +

    +
    +

    + eval_right_shift(b, ui) +

    +
    +

    + void +

    +
    +

    + Computes b >>= + ui, only required when + B is an integer + type. +

    +
    +

    + eval_convert_to(pa, cb) +

    +
    +

    + void +

    +
    +

    + Converts cb to + the type of *pa + and store the result in *pa. Type B + shall support conversion to at least types std::intmax_t, + std::uintmax_t and long + long. Conversion to other + arithmetic types can then be synthesised using other operations. + Conversions to other types are entirely optional. +

    +
    +

    + eval_frexp(b, + cb, + pexp) +

    +
    +

    + void +

    +
    +

    + Stores values in b + and *pexp + such that the value of cb + is b * 2*pexp, only required when B + is a floating-point type. +

    +
    +

    + eval_ldexp(b, + cb, + exp) +

    +
    +

    + void +

    +
    +

    + Stores a value in b + that is cb * 2exp, only required when B + is a floating-point type. +

    +
    +

    + eval_floor(b, + cb) +

    +
    +

    + void +

    +
    +

    + Stores the floor of cb + in b, only required + when B is a floating-point + type. +

    +
    +

    + eval_ceil(b, + cb) +

    +
    +

    + void +

    +
    +

    + Stores the ceiling of cb + in b, only required + when B is a floating-point + type. +

    +
    +

    + eval_sqrt(b, + cb) +

    +
    +

    + void +

    +
    +

    + Stores the square root of cb + in b, only required + when B is a floating-point + type. +

    +
    +

    + boost::multiprecision::number_category<B>::type +

    +
    +

    + mpl::int_<N> +

    +
    +

    + N is one of the + values number_kind_integer, + number_kind_floating_point, + number_kind_rational + or number_kind_fixed_point. + Defaults to number_kind_floating_point. +

    +
    +
    +
    +

    Table 1.5. Optional Requirements on the Backend Type

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Returns +

    +
    +

    + Comments +

    +
    +

    + B(b2) +

    +
    +

    + B +

    +
    +

    + Copy constructor from a different back-end type. +

    +
    +

    + b = + b2 +

    +
    +

    + b& +

    +
    +

    + Assignment operator from a different back-end type. +

    +
    +

    + assign_components(b, a, a) +

    +
    +

    + void +

    +
    +

    + Assigns to b the + two components in the following arguments. Only applies to rational + and complex number types. +

    +
    +

    + assign_components(b, b2, b2) +

    +
    +

    + void +

    +
    +

    + Assigns to b the + two components in the following arguments. Only applies to rational + and complex number types. +

    +
    +

    + eval_add(b, + a) +

    +
    +

    + void +

    +
    +

    + Adds a to b. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. +

    +
    +

    + eval_subtract(b, + a) +

    +
    +

    + void +

    +
    +

    + Subtracts a from + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_multiply(b, + a) +

    +
    +

    + void +

    +
    +

    + Multiplies b by + a. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_divide(b, + a) +

    +
    +

    + void +

    +
    +

    + Divides b by a. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. +

    +
    +

    + eval_modulus(b, + a) +

    +
    +

    + void +

    +
    +

    + Computes b %= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_and(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b &= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_or(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b |= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_xor(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b ^= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_add(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Add cb to cb2 and stores the result in + b. +

    +
    +

    + eval_subtract(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Subtracts cb2 from + cb and stores the + result in b. +

    +
    +

    + eval_multiply(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Multiplies cb by + cb2 and stores + the result in b. +

    +
    +

    + eval_divide(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Divides cb by + cb2 and stores + the result in b. +

    +
    +

    + eval_add(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Add cb to a and stores the result in b. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. +

    +
    +

    + eval_subtract(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Subtracts a from + cb and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_multiply(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Multiplies cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_divide(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Divides cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_modulus(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb % + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_bitwise_and(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb & + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_bitwise_or(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb | + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_bitwise_xor(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb ^ + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_add(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Add a to cb and stores the result in + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_subtract(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Subtracts cb from + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_multiply(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Multiplies a by + cb and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_divide(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Divides a by cb and stores the result in + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_modulus(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Computes cb % + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_and(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb & + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_or(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb | + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_xor(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb ^ + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_modulus(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Computes cb % + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_and(b, a, cb) +

    +
    +

    + void +

    +
    +

    + Computes cb & + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_or(b, a, cb) +

    +
    +

    + void +

    +
    +

    + Computes cb | + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_xor(b, a, cb) +

    +
    +

    + void +

    +
    +

    + Computes a ^ + cb and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_left_shift(b, cb, ui) +

    +
    +

    + void +

    +
    +

    + Computes cb << + ui and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_right_shift(b, cb, ui) +

    +
    +

    + void +

    +
    +

    + Computes cb >> + ui and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_increment(b) +

    +
    +

    + void +

    +
    +

    + Increments the value of b + by one. +

    +
    +

    + eval_decrement(b) +

    +
    +

    + void +

    +
    +

    + Decrements the value of b + by one. +

    +
    +

    + eval_is_zero(cb) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb is zero, otherwise false +

    +
    +

    + eval_get_sign(cb) +

    +
    +

    + int +

    +
    +

    + Returns a value < zero if cb + is negative, a value > zero if cb + is positive, and zero if cb + is zero. +

    +
    +

    + eval_abs(b, + cb) +

    +
    +

    + void +

    +
    +

    + Set b to the absolute + value of cb. +

    +
    +

    + eval_fabs(b, + cb) +

    +
    +

    + void +

    +
    +

    + Set b to the absolute + value of cb. +

    +
    +

    + eval_fpclassify(cb) +

    +
    +

    + int +

    +
    +

    + Returns one of the same values returned by std::fpclassify. + Only required when B + is an floating-point type. +

    +
    +

    + eval_trunc(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::trunc + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_round(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::round + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_exp(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_log(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::log + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_log10(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::log10 + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_sin(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::sin + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_cos(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::cos + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_tan(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_asin(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::asin + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_acos(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::acos + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_atan(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::atan + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_sinh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::sinh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_cosh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::cosh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_tanh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::tanh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_fmod(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::fmod + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_pow(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::pow + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_atan2(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::atan + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_qr(cb, + cb2, + b, + b2) +

    +
    +

    + void +

    +
    +

    + Sets b to the result + of cb / + cb2 and b2 to the result of cb % + cb2. Only required when + B is an integer + type. +

    +
    +

    + eval_integer_modulus(cb, ui) +

    +
    +

    + unsigned +

    +
    +

    + Returns the result of cb + % ui. + Only required when B + is an integer type. +

    +
    +

    + eval_lsb(cb) +

    +
    +

    + unsigned +

    +
    +

    + Returns the index of the least significant bit that is set. Only + required when B + is an integer type. +

    +
    +

    + eval_bit_test(cb, + ui) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb + has bit ui set. + Only required when B + is an integer type. +

    +
    +

    + eval_bit_set(b, + ui) +

    +
    +

    + void +

    +
    +

    + Sets the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_bit_unset(b, ui) +

    +
    +

    + void +

    +
    +

    + Unsets the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_bit_flip(b, + ui) +

    +
    +

    + void +

    +
    +

    + Flips the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_gcd(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Sets b to the greatest + common divisor of cb + and cb2. Only required + when B is an integer + type. +

    +
    +

    + eval_lcm(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Sets b to the least + common multiple of cb + and cb2. Only required + when B is an integer + type. +

    +
    +
    +
    + + + + + +
    [Note]Note

    + The non-member functions are all named with an "eval_" prefix + to avoid conflicts with template classes of the same name - in point of + fact this naming convention shouldn't be necessary, but rather works around + some compiler bugs. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html new file mode 100644 index 00000000..9d34b1e6 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html @@ -0,0 +1,61 @@ + + + +cpp_dec_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class cpp_dec_float;
    +
    +typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50;
    +typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100;
    +
    +}} // namespaces
    +
    +

    + Class template cpp_dec_float + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The class takes a single template parameter - Digits10 + - which is the number of decimal digits precision the type should support. + Note that this type does not ever perform any dynamic memory allocation, + as a result the Digits10 + template argument should not be set too high or the classes size will grow + unreasonably large. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html new file mode 100644 index 00000000..40530e86 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -0,0 +1,99 @@ + + + +cpp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned MinBits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    +struct cpp_int_backend;
    +
    +typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    +
    +// Fixed precision unsigned types:
    +typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    +typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    +typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    +typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
    +
    +// Fixed precision signed types:
    +typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    +typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    +typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    +typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
    +
    +}} // namespaces
    +
    +

    + Class template cpp_int_backend + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The template arguments are: +

    +
    +

    +
    +
    Argument
    +

    + Meaning +

    +
    MinBits
    +

    + The number of Bits to reserve inside the class's internal cache. When + constructing a value, the object will use this internal cache if possible + before resorting to dynamic memory allocation. When this value is zero, + then the size of the internal cache is 2*sizeof(void*)*CHAR_BIT. + When the Allocator argument is void, + then this parameter determines the precision of the type. +

    +
    Signed
    +

    + When true the type is + signed, otherwise unsigned. Note that unsigned types are currently + only supported when the Allocator parameter is void. +

    +
    Allocator
    +

    + The allocator used for dynamic memory allocation. This parameter can + be void, in which case + no dymanic memory will ever be allocated. +

    +
    +
    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/gmp_int_ref.html b/doc/html/boost_multiprecision/ref/gmp_int_ref.html new file mode 100644 index 00000000..71dfb0ae --- /dev/null +++ b/doc/html/boost_multiprecision/ref/gmp_int_ref.html @@ -0,0 +1,51 @@ + + + +gmp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +class gmp_int;
    +
    +typedef mp_number<gmp_int >         mpz_int;
    +
    +}} // namespaces
    +
    +

    + Class template gmp_int fulfills + all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html new file mode 100644 index 00000000..b883aa18 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -0,0 +1,695 @@ + + + +mp_number + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    + + Synopsis +
    +
    namespace boost{ namespace multiprecision{
    +
    +template <class Backend, bool ExpressionTemplates = true>
    +class mp_number
    +{
    +   mp_number();
    +   mp_number(see-below);
    +   mp_number& operator=(see-below);
    +
    +   // Member operators
    +   mp_number& operator+=(const see-below&);
    +   mp_number& operator-=(const see-below&);
    +   mp_number& operator*=(const see-below&);
    +   mp_number& operator/=(const see-below&);
    +   mp_number& operator++();
    +   mp_number& operator--();
    +   mp_number  operator++(int);
    +   mp_number  operator--(int);
    +
    +   mp_number& operator%=(const see-below&);
    +   mp_number& operator&=(const see-below&);
    +   mp_number& operator|=(const see-below&);
    +   mp_number& operator^=(const see-below&);
    +   mp_number& operator<<=(const integer-type&);
    +   mp_number& operator>>=(const integer-type&);
    +
    +   // Use in Boolean context:
    +   operator convertible-to-bool-type()const;
    +   // swap:
    +   void swap(mp_number& other);
    +   // Sign:
    +   bool is_zero()const;
    +   int sign()const;
    +   // string conversion:
    +   std::string str()const;
    +   // Generic conversion mechanism
    +   template <class T>
    +   T convert_to()const;
    +   // precision control:
    +   static unsigned default_precision();
    +   static void default_precision(unsigned digits10);
    +   unsigned precision()const;
    +   void precision(unsigned digits10);
    +   // Comparison:
    +   int compare(const mp_number<Backend>& o)const;
    +   template <class V>
    +   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
    +   // Access to the underlying implementation:
    +   Backend& backend();
    +   const Backend& backend()const;
    +};
    +
    +// Non member operators:
    +unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    +// Integer only operations:
    +unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    +unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    +// Comparison operators:
    +bool operator==(const see-below&, const see-below&);
    +bool operator!=(const see-below&, const see-below&);
    +bool operator< (const see-below&, const see-below&);
    +bool operator> (const see-below&, const see-below&);
    +bool operator<=(const see-below&, const see-below&);
    +bool operator>=(const see-below&, const see-below&);
    +
    +// Swap:
    +template <class Backend, bool ExpressionTemplates>
    +void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    +
    +// iostream support:
    +template <class Backend, bool ExpressionTemplates>
    +std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    +std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
    +template <class Backend, bool ExpressionTemplates>
    +std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r);
    +
    +// Non-member function standard library support:
    +unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    +
    +unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    +unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    +unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +
    +// Traits support:
    +template <class T>
    +struct component_type;
    +template <class T>
    +struct number_category;
    +
    +// Integer specific functions:
    +template <class Backend, bool ExpressionTemplates>
    +bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    +               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    +template <class Integer>
    +Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    +unsigned lsb(const mp_number-or-expression-template-type& x);
    +template <class Backend, class ExpressionTemplates>
    +bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Engine>
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    +
    +// Rational number support:
    +typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    +typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    +
    +}} // namespaces
    +
    +namespace boost{ namespace math{
    +
    +// Boost.Math interoperability functions:
    +int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
    +bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
    +bool                                             isnan          (const mp_number-or-expression-template-type&, int);
    +bool                                             isinf          (const mp_number-or-expression-template-type&, int);
    +bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
    +
    +}} // namespaces
    +
    +// numeric_limits support:
    +namespace std{
    +
    +template <class Backend, bool ExpressionTemplates>
    +struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    +{
    +   /* Usual members here */
    +};
    +
    +}
    +
    +
    + + Description +
    +
    template <class Backend, bool ExpressionTemplates = true>
    +class mp_number;
    +
    +

    + Class mp_number has two template + arguments: +

    +
    +

    +
    +
    Backend
    +

    + The actual arithmetic back-end that does all the work. +

    +
    ExpressionTemplates
    +

    + A Boolean value: when true, then expression templates are enabled, + otherwise they are disabled. +

    +
    +
    +
    mp_number();
    +mp_number(see-below);
    +mp_number& operator=(see-below);
    +
    +

    + Type mp_number is default + constructible, and both copy constructible and assignable from: +

    +
      +
    • + Itself. +
    • +
    • + An expression template which is the result of one of the arithmetic operators. +
    • +
    • + Any builtin arithmetic type. +
    • +
    • + A std::string or any type which is convertible + to const char*. +
    • +
    • + Any type that the Backend is constructible or assignable from. +
    • +
    +

    + In addition, if the type has multiple components (for example rational or + complex number types), then there is a two argument constructor: +

    +
    mp_number(arg1, arg2);
    +
    +

    + Where the two args must either be arithmetic types, or types that are convertible + to the two components of this. +

    +
    mp_number& operator+=(const see-below&);
    +mp_number& operator-=(const see-below&);
    +mp_number& operator*=(const see-below&);
    +mp_number& operator/=(const see-below&);
    +mp_number& operator++();
    +mp_number& operator--();
    +mp_number  operator++(int);
    +mp_number  operator--(int);
    +// Integer only operations:
    +mp_number& operator%=(const see-below&);
    +mp_number& operator&=(const see-below&);
    +mp_number& operator|=(const see-below&);
    +mp_number& operator^=(const see-below&);
    +mp_number& operator<<=(const integer-type&);
    +mp_number& operator>>=(const integer-type&);
    +
    +

    + These operators all take their usual arithmetic meanings. +

    +

    + The arguments to these operators is either: +

    +
      +
    • + Another mp_number<Backend, + ExpressionTemplates>. +
    • +
    • + A builtin arithmetic type. +
    • +
    • + An expression template derived from mp_number<Backend>. +
    • +
    +

    + For the left and right shift operations, the argument must be a builtin integer + type with a positive value (negative values result in a std::runtime_error + being thrown). +

    +
    operator convertible-to-bool-type()const;
    +
    +

    + Returns an unmentionable-type that is usable in Boolean + contexts (this allows mp_number + to be used in any Boolean context - if statements, conditional statements, + or as an argument to a logical operator - without type mp_number + being convertible to type bool. +

    +

    + This operator also enables the use of mp_number + with any of the following operators: !, + ||, && + and ?:. +

    +
    void swap(mp_number& other);
    +
    +

    + Swaps *this + with other. +

    +
    bool is_zero()const;
    +
    +

    + Returns true is *this is zero, + otherwise false. +

    +
    int sign()const;
    +
    +

    + Returns a value less than zero if *this is negative, a value greater than zero + if *this + is positive, and zero if *this + is zero. +

    +
    std::string str(unsigned precision, bool scientific = true)const;
    +
    +

    + Returns the number formatted as a string, with at least precision + digits, and in scientific format if scientific is true. +

    +
    template <class T>
    +T convert_to()const;
    +
    +

    + Provides a generic conversion mechanism to convert *this to type T. + Type T may be any arithmetic + type. Optionally other types may also be supported by specific Backend types. +

    +
    static unsigned default_precision();
    +static void default_precision(unsigned digits10);
    +unsigned precision()const;
    +void precision(unsigned digits10);
    +
    +

    + These functions are only available if the Backend template parameter supports + runtime changes to precision. They get and set the default precision and + the precision of *this + respectively. +

    +
    int compare(const mp_number<Backend, ExpressionTemplates>& o)const;
    +template <class V>
    +typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
    +
    +

    + Returns: +

    +
      +
    • + A value less that 0 for *this < other +
    • +
    • + A value greater that 0 for *this > other +
    • +
    • + Zero for *this + == other +
    • +
    +
    Backend& backend();
    +const Backend& backend()const;
    +
    +

    + Returns the underlying back-end instance used by *this. +

    +
    + + Non-member + operators +
    +
    // Non member operators:
    +unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    +// Integer only operations:
    +unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    +unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    +// Comparison operators:
    +bool operator==(const see-below&, const see-below&);
    +bool operator!=(const see-below&, const see-below&);
    +bool operator< (const see-below&, const see-below&);
    +bool operator> (const see-below&, const see-below&);
    +bool operator<=(const see-below&, const see-below&);
    +bool operator>=(const see-below&, const see-below&);
    +
    +

    + These operators all take their usual arithmetic meanings. +

    +

    + The arguments to these functions must contain at least one of the following: +

    +
      +
    • + An mp_number. +
    • +
    • + An expression template type derived from mp_number. +
    • +
    +

    + In addition, one of the two arguments may be a builtin arithmetic type. +

    +

    + The return type of these operators is either: +

    +
      +
    • + An unmentionable-type expression template type when + ExpressionTemplates is + true. +
    • +
    • + Type mp_number<Backend, + false> + when ExpressionTemplates + is false. +
    • +
    • + Type bool if the operator + is a comparison operator. +
    • +
    +

    + Finally note that the second argument to the left and right shift operations + must be a builtin integer type, and that the argument must be positive (negative + arguments result in a std::runtime_error + being thrown). +

    +
    + + swap +
    +
    template <class Backend, ExpressionTemplates>
    +void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    +
    +

    + Swaps a and b. +

    +
    + + Iostream + Support +
    +
    template <class Backend, bool ExpressionTemplates>
    +std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    +template <class Unspecified...>
    +std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
    +template <class Backend, bool ExpressionTemplates>
    +inline std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r)
    +
    +

    + These operators provided formatted input-output operations on mp_number types, and expression templates + derived from them. +

    +

    + It's down to the back-end type to actually implement string conversion. However, + the back-ends provided with this library support all of the iostream formatting + flags, field width and precision settings. +

    +
    + + Non-member + standard library function support +
    +
    unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    +
    +unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    +unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    +unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +
    +

    + These functions all behave exactly as their standard library counterparts + do: their argument is either an instance of mp_number + or an expression template derived from it; If the argument is of type mp_number<Backend, false> + then that is also the return type, otherwise the return type is an expression + template. +

    +

    + These functions are normally implemented by the Backend type. However, default + versions are provided for Backend types that don't have native support for + these functions. Please note however, that this default support requires + the precision of the type to be a compile time constant - this means for + example that the GMP MPF Backend will + not work with these functions when that type is used at variable precision. +

    +

    + Also note that with the exception of abs + that these functions can only be used with floating-point Backend types. +

    +
    + + Traits + Class Support +
    +
    template <class T>
    +struct component_type;
    +
    +

    + If this is a type with mutiple components (for example rational or complex + types), then this trait has a single member type + that is the type of those components. +

    +
    template <class T>
    +struct number_category;
    +
    +

    + A traits class that inherits from mpl::int_<N> + where N is one of the enumerated + values number_kind_integer, + number_kind_floating_point, + number_kind_rational or + number_kind_fixed_point. +

    +
    + + Integer functions +
    +
    template <class Backend, bool ExpressionTemplates>
    +bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    +               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    +
    +

    + Divides x by y and returns both the quotient and remainder. After the call + q = + x / y and r + = x % y. +

    +
    template <class Integer>
    +Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    +
    +

    + Returns the absolute value of x + % val. +

    +
    unsigned lsb(const mp_number-or-expression-template-type& x);
    +
    +

    + Returns the index of the least significant bit that is set to 1. +

    +
    template <class Backend, class ExpressionTemplates>
    +bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Returns true if the bit at + index in val is set. +

    +
    template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Sets the bit at index in val, and + returns val. +

    +
    template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Unsets the bit at index in val, + and returns val. +

    +
    template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Flips the bit at index in val, + and returns val. +

    +
    template <class Engine>
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    +
    +

    + Tests to see if the number n is probably prime - the + test excludes the vast majority of composite numbers by excluding small prime + factors and performing a single Fermat test. Then performs trials + Miller-Rabin tests. Returns false + if n is definitely composite, or true + if n is probably prime with the probability of it being + composite less than 0.25^trials. +

    +
    + + Rational + Number Functions +
    +
    typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    +typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    +
    +

    + These functions return the numerator and denominator of a rational number + respectively. +

    +
    + + Boost.Math + Interoperability Support +
    +
    namespace boost{ namespace math{
    +
    +int  fpclassify     (const mp_number-or-expression-template-type&, int);
    +bool isfinite       (const mp_number-or-expression-template-type&, int);
    +bool isnan          (const mp_number-or-expression-template-type&, int);
    +bool isinf          (const mp_number-or-expression-template-type&, int);
    +bool isnormal       (const mp_number-or-expression-template-type&, int);
    +
    +}} // namespaces
    +
    +

    + These floating-point classification functions behave exactly as their Boost.Math + equivalents. +

    +

    + Other Boost.Math functions and templates may also be specialized or overloaded + to ensure interoperability. +

    +
    + + std::numeric_limits + support +
    +
    namespace std{
    +
    +template <class Backend, ExpressionTemplates>
    +struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    +{
    +   /* Usual members here */
    +};
    +
    +}
    +
    +

    + Class template std::numeric_limits is specialized for all instantiations + of mp_number whose precision + is known at compile time, plus those types whose precision is unlimited (though + it is much less useful in those cases). It is not specialized for types whose + precision can vary at compile time (such as mpf_float). +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mpf_ref.html b/doc/html/boost_multiprecision/ref/mpf_ref.html new file mode 100644 index 00000000..fd2d8f50 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/mpf_ref.html @@ -0,0 +1,67 @@ + + + +gmp_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class gmp_float;
    +
    +typedef mp_number<gmp_float<50> >    mpf_float_50;
    +typedef mp_number<gmp_float<100> >   mpf_float_100;
    +typedef mp_number<gmp_float<500> >   mpf_float_500;
    +typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    +typedef mp_number<gmp_float<0> >     mpf_float;
    +
    +}} // namespaces
    +
    +

    + Class template gmp_float + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The class takes a single template parameter - Digits10 + - which is the number of decimal digits precision the type should support. + When this parameter is zero, then the precision can be set at runtime via + mp_number::default_precision and mp_number::precision. + Note that this type does not in any way change the GMP library's global state + (for example it does not change the default precision of the mpf_t data type), + therefore you can safely mix this type with existing code that uses GMP, + and also mix gmp_floats of + differing precision. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mpfr_ref.html b/doc/html/boost_multiprecision/ref/mpfr_ref.html new file mode 100644 index 00000000..7588f301 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/mpfr_ref.html @@ -0,0 +1,67 @@ + + + +mpfr_float_backend + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class mpfr_float_backend;
    +
    +typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
    +typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
    +typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
    +typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
    +typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
    +
    +}} // namespaces
    +
    +

    + Class template mpfr_float_backend + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The class takes a single template parameter - Digits10 + - which is the number of decimal digits precision the type should support. + When this parameter is zero, then the precision can be set at runtime via + mp_number::default_precision and mp_number::precision. + Note that this type does not in any way change the GMP or MPFR library's + global state (for example it does not change the default precision of the + mpfr_t data type), therefore you can safely mix this type with existing code + that uses GMP or MPFR, and also mix mpfr_float_backends + of differing precision. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/tom_int_ref.html b/doc/html/boost_multiprecision/ref/tom_int_ref.html new file mode 100644 index 00000000..95abdcbe --- /dev/null +++ b/doc/html/boost_multiprecision/ref/tom_int_ref.html @@ -0,0 +1,51 @@ + + + +tom_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +class tommath_int;
    +
    +typedef mp_number<tommath_int >         tom_int;
    +
    +}} // namespaces
    +
    +

    + Class template tommath_int + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html new file mode 100644 index 00000000..d42d37ac --- /dev/null +++ b/doc/html/boost_multiprecision/tut.html @@ -0,0 +1,64 @@ + + + +Tutorial + + + + + + + + +
    +PrevUpHomeNext +
    +
    + + +

    + In order to use this library you need to make two choices: what kind of number + do I want, and which back-end do I want to perform the actual arithmetic? +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html new file mode 100644 index 00000000..b34da26c --- /dev/null +++ b/doc/html/boost_multiprecision/tut/conversions.html @@ -0,0 +1,106 @@ + + + +Constructing and Interconverting Between Number Types + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + All of the number types that are based on mp_number + have certain conversion rules in common. In particular: +

    +
    • + Any number type can be constructed (or assigned) from any builtin arithmetic + type: +
    +
    cpp_dec_float_50 df(0.5); // OK construction from double
    +cpp_int          i(450);  // OK constructs from signed int
    +
    +
    • + Any number type can be constructed (or assigned) from a const char* or a std::string: +
    +
    // pi to 50 places from a string:
    +cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    +// Integer type will automatically detect "0x" and "0" prefixes and parse the string accordingly:
    +cpp_int          i  = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000";
    +// Invalid input always results in a std::runtime_error being thrown:
    +i = std::string("3.14");
    +
    +
    • + Any number type will interoperate with the builtin type in arithmetic + expressions: +
    +
    // pi to 50 places from a string:
    +cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    +// Multiply by 2 - using an integer literal here is usually more efficient
    +// than constructing a temporary:
    +df *= 2;
    +
    +// There is a need to be careful with integer types though:
    +cpp_int i = 2;
    +// Ooops, this really just multiplies by 3:
    +i *= 3.14;
    +
    +
    • + Any number type can be streamed to and from the C++ iostreams: +
    +
    cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    +// Now print at full precision:
    +std::cout << std::setprecision(std::numeric_limits<cpp_dec_float_50>::max_digits10)
    +   << df << std::endl
    +cpp_int i = 1;
    +i <<= 256;
    +// Now print in hex format with prefix:
    +std::cout << std::hex << std::showbase << i << std::endl;
    +
    +
    • + Some intercomnversions between number types are completely generic, and + are always available: +
    +
    cpp_int cppi(2);
    +// We can always convert between numbers of the same category - 
    +// int to int, rational to rational, or float to float, so this is OK:
    +mpz_int z = cppi;
    +// We can always promote from int to rational, int to float, or rational to float:
    +cpp_rational     cppr = cppi;  // OK, int to rational
    +cpp_dec_float_50 df =   cppi;  // OK, int to float
    +df                  =   cppr;  // OK, rational to float
    +// However narrowing conversions always fail:
    +cppi                =   df;    // Compiler error, conversion not allowed
    +
    +
    • + Other interconversions may be allowed as special cases, whenever the + backend allows it: +
    +
    mpf_t     m;           // Native GMP type.
    +mpf_init_set_ui(m, 0); // set to a value;
    +mpf_float i(m);        // copies the value of the native type.
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats.html b/doc/html/boost_multiprecision/tut/floats.html new file mode 100644 index 00000000..a3b605f0 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats.html @@ -0,0 +1,186 @@ + + + +Floating Point Numbers + + + + + + + + +
    +PrevUpHomeNext +
    +
    + + +

    + The following back-ends provide floating point arithmetic: +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend Type +

    +
    +

    + Header +

    +
    +

    + Radix +

    +
    +

    + Dependencies +

    +
    +

    + Pros +

    +
    +

    + Cons +

    +
    +

    + mpf_float<N> +

    +
    +

    + boost/multiprecision/gmp.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP +

    +
    +

    + Very fast and efficient back-end. +

    +
    +

    + Dependency on GNU licensed GMP + library. +

    +
    +

    + mpfr_float<N> +

    +
    +

    + boost/multiprecision/mpfr.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP and MPFR +

    +
    +

    + Very fast and efficient back-end, with its own standard library + implementation. +

    +
    +

    + Dependency on GNU licensed GMP + and MPFR libraries. +

    +
    +

    + cpp_dec_float<N> +

    +
    +

    + boost/multiprecision/cpp_dec_float.hpp +

    +
    +

    + 10 +

    +
    +

    + None +

    +
    +

    + Header only, all C++ implementation. Boost licence. +

    +
    +

    + Approximately 2x slower than the MPFR + or GMP libraries. +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html new file mode 100644 index 00000000..ca15017c --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -0,0 +1,117 @@ + + + +cpp_dec_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/cpp_dec_float.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class cpp_dec_float;
    +
    +typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50;
    +typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100;
    +
    +}} // namespaces
    +
    +

    + The cpp_dec_float back-end + is used in conjunction with mp_number: + It acts as an entirely C++ (header only and dependency free) real-number + type that is a drop-in replacement for the native C++ floating-point types, + but with much greater precision. +

    +

    + Type cpp_dec_float can + be used at fixed precision by specifying a non-zero Digits10 + template parameter. The typedefs cpp_dec_float_50 + and cpp_dec_float_100 provide + arithmetic types at 50 and 100 decimal digits precision respectively. +

    +

    + There is full standard library and numeric_limits + support available for this type. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed cpp_dec_floats + have a value of zero. +
    • +
    • + The radix of this type is 10. As a result it can behave subtly differently + from base-2 types. +
    • +
    • + It is not possible to round-trip this type to and from a string and + get back to exactly the same value (this is a result of the type having + some hidden internal guard digits). +
    • +
    • + The type has a number of internal guard digits over and above those + specified in the template argument. Normally these should not be visible + to the user. +
    • +
    +
    + + cpp_dec_float + example: +
    +

    +

    +
    #include <boost/multiprecision/cpp_dec_float.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +// Operations at fixed precision and full numeric_limits support:
    +cpp_dec_float_100 b = 2;
    +std::cout << std::numeric_limits<cpp_dec_float_100>::digits << std::endl;
    +// Note that digits10 is the same as digits, since we're base 10! :
    +std::cout << std::numeric_limits<cpp_dec_float_100>::digits10 << std::endl;
    +// We can use any C++ std lib function, lets print all the digits as well:
    +std::cout << std::setprecision(std::numeric_limits<cpp_dec_float_100>::max_digits10)
    +   << log(b) << std::endl; // print log(2)
    +// We can also use any function from Boost.Math:
    +std::cout << boost::math::tgamma(b) << std::endl;
    +// These even work when the argument is an expression template:
    +std::cout << boost::math::tgamma(b * b) << std::endl;
    +// And since we have an extended exponent range we can generate some really large 
    +// numbers here (4.0238726007709377354370243e+2564):
    +std::cout << boost::math::tgamma(cpp_dec_float_100(1000)) << std::endl;
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/gmp_float.html b/doc/html/boost_multiprecision/tut/floats/gmp_float.html new file mode 100644 index 00000000..3b104b2e --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/gmp_float.html @@ -0,0 +1,169 @@ + + + +gmp_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/gmp.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class gmp_float;
    +
    +typedef mp_number<gmp_float<50> >    mpf_float_50;
    +typedef mp_number<gmp_float<100> >   mpf_float_100;
    +typedef mp_number<gmp_float<500> >   mpf_float_500;
    +typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    +typedef mp_number<gmp_float<0> >     mpf_float;
    +
    +}} // namespaces
    +
    +

    + The gmp_float back-end + is used in conjunction with mp_number + : it acts as a thin wrapper around the GMP + mpf_t to provide an real-number + type that is a drop-in replacement for the native C++ floating-point types, + but with much greater precision. +

    +

    + Type gmp_float can be used + at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpf_float provides a variable precision type + whose precision can be controlled via the mp_numbers + member functions. +

    +
    + + + + + +
    [Note]Note

    + This type only provides standard library and numeric_limits + support when the precision is fixed at compile time. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of mp_number<mpf_float<N> > are copy constructible and assignable + from: +

    +
      +
    • + The GMP native types mpf_t, mpz_t, + mpq_t. +
    • +
    • + The mp_number wrappers + around those types: mp_number<mpf_float<M> >, + mp_number<gmp_int>, + mp_number<gmp_rational>. +
    • +
    +

    + It's also possible to access the underlying mpf_t + via the data() + member function of gmp_float. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed gmp_floats + have the value zero (this is the GMP + library's default behavior). +
    • +
    • + No changes are made to the GMP + library's global settings, so this type can be safely mixed with existing + GMP code. +
    • +
    • + It is not possible to round-trip objects of this type to and from a + string and get back exactly the same value. This appears to be a limitation + of GMP. +
    • +
    • + Since the underlying GMP types + have no notion of infinities or NaN's, care should be taken to avoid + numeric overflow or division by zero. That latter will trigger a hardware + exception, while generating excessively large exponents may result + in instability of the underlying GMP + library (in testing, converting a number with an excessively large + or small exponent to a string caused GMP + to segfault). +
    • +
    • + This type can equally be used with MPIR + as the underlying implementation - indeed that is the recommended option + on Win32. +
    • +
    +
    + + + GMP example: +
    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +// Operations at variable precision and limited standard library support:
    +mpf_float a = 2;
    +mpf_float::default_precision(1000);
    +std::cout << mpf_float::default_precision() << std::endl;
    +std::cout << sqrt(a) << std::endl; // print root-2
    +
    +// Operations at fixed precision and full standard library support:
    +mpf_float_100 b = 2;
    +std::cout << std::numeric_limits<mpf_float_100>::digits << std::endl;
    +// We can use any C++ std lib function:
    +std::cout << log(b) << std::endl; // print log(2)
    +// We can also use any function from Boost.Math:
    +std::cout << boost::math::tgamma(b) << std::endl;
    +// These even work when the argument is an expression template:
    +std::cout << boost::math::tgamma(b * b) << std::endl;
    +
    +// Access the underlying representation:
    +mpf_t f;
    +mpf_init(f);
    +mpf_set(f, a.backend().data());
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html new file mode 100644 index 00000000..595e9d2c --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -0,0 +1,159 @@ + + + +mpfr_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/mpfr_float.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class mpfr_float_backend;
    +
    +typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
    +typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
    +typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
    +typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
    +typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
    +
    +}} // namespaces
    +
    +

    + The mpfr_float_backend + type is used in conjunction with mp_number: + It acts as a thin wrapper around the MPFR + mpfr_t to provide an real-number + type that is a drop-in replacement for the native C++ floating-point types, + but with much greater precision. +

    +

    + Type mpfr_float_backend + can be used at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpfr_float provides a variable precision type + whose precision can be controlled via the mp_numbers + member functions. +

    +
    + + + + + +
    [Note]Note

    + This type only provides numeric_limits + support when the precision is fixed at compile time. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of mp_number<mpfr_float_backend<N> > are copy constructible and assignable + from: +

    +
      +
    • + The GMP native types mpf_t, mpz_t, + mpq_t. +
    • +
    • + The MPFR native type mpfr_t. +
    • +
    • + The mp_number wrappers + around those types: mp_number<mpfr_float_backend<M> >, + mp_number<mpf_float<M> >, mp_number<gmp_int>, mp_number<gmp_rational>. +
    • +
    +

    + It's also possible to access the underlying mpf_t + via the data() member function of gmp_float. +

    +

    + Things you should know when using this type: +

    +
      +
    • + A default constructed mpfr_float_backend + is set to a NaN (this is the default MPFR + behavior). +
    • +
    • + All operations use round to nearest. +
    • +
    • + No changes are made to GMP or + MPFR global settings, so this + type can coexist with existing MPFR + or GMP code. +
    • +
    • + The code can equally use MPIR + in place of GMP - indeed that + is the preferred option on Win32. +
    • +
    +
    + + + MPFR example: +
    +

    +

    +
    #include <boost/multiprecision/mpfr.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +// Operations at variable precision and no numeric_limits support:
    +mpfr_float a = 2;
    +mpfr_float::default_precision(1000);
    +std::cout << mpfr_float::default_precision() << std::endl;
    +std::cout << sqrt(a) << std::endl; // print root-2
    +
    +// Operations at fixed precision and full numeric_limits support:
    +mpfr_float_100 b = 2;
    +std::cout << std::numeric_limits<mpfr_float_100>::digits << std::endl;
    +// We can use any C++ std lib function:
    +std::cout << log(b) << std::endl; // print log(2)
    +// We can also use any function from Boost.Math:
    +std::cout << boost::math::tgamma(b) << std::endl;
    +// These even work when the argument is an expression template:
    +std::cout << boost::math::tgamma(b * b) << std::endl;
    +
    +// Access the underlying data:
    +mpfr_t r;
    +mpfr_init(r);
    +mpfr_set(r, b.backend().data(), GMP_RNDN);
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html new file mode 100644 index 00000000..b5504ee0 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -0,0 +1,186 @@ + + + +Integer Types + + + + + + + + +
    +PrevUpHomeNext +
    +
    + + +

    + The following back-ends provide integer arithmetic: +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend Type +

    +
    +

    + Header +

    +
    +

    + Radix +

    +
    +

    + Dependencies +

    +
    +

    + Pros +

    +
    +

    + Cons +

    +
    +

    + cpp_int +

    +
    +

    + boost/multiprecision/cpp_int.hpp +

    +
    +

    + 2 +

    +
    +

    + None +

    +
    +

    + Very versatile, Boost licensed, all C++ integer type which support + both arbitrary + precision and fixed precision integer types. +

    +
    +

    + Slower than GMP, though + typically not as slow as libtommath +

    +
    +

    + gmp_int +

    +
    +

    + boost/multiprecision/gmp.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP +

    +
    +

    + Very fast and efficient back-end. +

    +
    +

    + Dependency on GNU licensed GMP + library. +

    +
    +

    + tom_int +

    +
    +

    + boost/multiprecision/tommath.hpp +

    +
    +

    + 2 +

    +
    +

    + libtommath +

    +
    +

    + Public domain back-end with no licence restrictions. +

    +
    +

    + Slower than GMP. +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html new file mode 100644 index 00000000..98340475 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -0,0 +1,179 @@ + + + +cpp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/cpp_int.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +typedef unspecified-type limb_type;
    +
    +template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    +class cpp_int_backend;
    +
    +typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    +
    +// Fixed precision unsigned types:
    +typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    +typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    +typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    +typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
    +
    +// Fixed precision signed types:
    +typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    +typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    +typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    +typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
    +
    +}} // namespaces
    +
    +

    + The cpp_int_backend type + is used via one of the typedefs boost::multiprecision::cpp_int, + boost::multiprecision::mp_uint128_t, boost::multiprecision::mp_uint256_t, + boost::multiprecision::mp_uint512_t, boost::multiprecision::mp_int128_t, + boost::multiprecision::mp_int256_t or boost::multiprecision::mp_int512_t. +

    +

    + This back-end is the "Swiss Army Knife" of integer types as it + can represent both fixed and arbitrary + precision integer types, and both signed and unsigned types. There + are three template arguments: +

    +
    +

    +
    +
    MinBits
    +

    + Determines the number of Bits to store directly within the object + before resorting to dynamic memory allocation. When zero, this field + is determined automatically based on how many bits can be stored + in union with the dynamic storage header: setting a larger value + may improve performance as larger integer values will be stored internally + before memory allocation is required. When the Allocator parameter + is type void, then this + field determines the total number of bits in the resulting fixed + precision type. +

    +
    Signed
    +

    + Determines whether the resulting type is signed or not. Note that + for arbitrary + precision types (where the Allocator parameter is non-void), + then this parameter must be true. + For fixed precision types then this type may be either true (type is signed), or false (type is unsigned). +

    +
    Allocator
    +

    + The allocator to use for dynamic memory allocation, or type void if this is to be a fixed precision + type. +

    +
    +
    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed cpp_int_backends + have the value zero. +
    • +
    • + Division by zero results in a std::runtime_error + being thrown. +
    • +
    • + Construction from a string that contains invalid non-numeric characters + results in a std::runtime_error being thrown. +
    • +
    • + Since the precision of cpp_int_backend + is necessarily limited when the allocator parameter is void, care should + be taken to avoid numeric overflow when using this type unless you + actually want modulo-arithmetic behavior. +
    • +
    • + The type uses a sign-magnitude representation internally, so type + mp_int128_t has 128-bits + of precision plus an extra sign bit. In this respect the behaviour + of these types differs from built-in 2's complement types. In might + be tempting to use a 127-bit type instead, and indeed this does work, + but behaviour is still slightly different from a 2's complement built-in + type as the min and max values are identical (apart from the sign), + where as they differ by one for a true 2's complement type. That said + it should be noted that there's no requirement for built-in types to + be 2's complement either - it's simply that this is the most common + format by far. +
    • +
    • + Attempting to print negative values as either an Octal or Hexadecimal + string results in a std::runtime_error + being thrown, this is a direct consequence of the sign-magnitude representation. +
    • +
    • + The fixed precision types mp_[u]intXXX_t + have expression template support turned off - it seems to make little + difference to the performance of these types either way - so we may + as well have the faster compile times by turning the feature off. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mp_int128_t v = 1;
    +
    +// Do some fixed precision arithmetic:
    +for(unsigned i = 1; i <= 20; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 20!
    +
    +// Repeat at arbitrary precision:
    +cpp_int u = 1;
    +for(unsigned i = 1; i <= 100; ++i)
    +   u *= i;
    +
    +std::cout << u << std::endl; // prints 100!
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/gmp_int.html b/doc/html/boost_multiprecision/tut/ints/gmp_int.html new file mode 100644 index 00000000..1bf12605 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/gmp_int.html @@ -0,0 +1,128 @@ + + + +gmp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/gmp.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +class gmp_int;
    +
    +typedef mp_number<gmp_int >         mpz_int;
    +
    +}} // namespaces
    +
    +

    + The gmp_int back-end is + used via the typedef boost::multiprecision::mpz_int. + It acts as a thin wrapper around the GMP + mpz_t to provide an integer + type that is a drop-in replacement for the native C++ integer types, but + with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, type + mpz_int is copy constructible + and assignable from: +

    +
      +
    • + The GMP native types: mpf_t, mpz_t, + mpq_t. +
    • +
    • + Instances of mp_number<T> that are wrappers around those + types: mp_number<gmp_float<N> >, mp_number<gmp_rational>. +
    • +
    +

    + It's also possible to access the underlying mpz_t + via the data() + member function of gmp_int. +

    +

    + Things you should know when using this type: +

    +
      +
    • + No changes are made to the GMP library's global settings - so you can + safely mix this type with existing code that uses GMP. +
    • +
    • + Default constructed gmp_ints + have the value zero (this is GMP's default behavior). +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero is handled by the GMP + library - it will trigger a division by zero signal. +
    • +
    • + Although this type is a wrapper around GMP + it will work equally well with MPIR. + Indeed use of MPIR is recommended + on Win32. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mpz_int v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 1000!
    +
    +// Access the underlying representation:
    +mpz_t z;
    +mpz_init(z);
    +mpz_set(z, v.backend().data());
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/tom_int.html b/doc/html/boost_multiprecision/tut/ints/tom_int.html new file mode 100644 index 00000000..2ea5acf4 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/tom_int.html @@ -0,0 +1,119 @@ + + + +tom_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/tommath.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +class tommath_int;
    +
    +typedef mp_number<tommath_int >         tom_int;
    +
    +}} // namespaces
    +
    +

    + The tommath_int back-end + is used via the typedef boost::multiprecision::tom_int. + It acts as a thin wrapper around the libtommath + tom_int to provide an integer + type that is a drop-in replacement for the native C++ integer types, but + with unlimited precision. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed objects have the value zero (this is libtommath's + default behavior). +
    • +
    • + Although tom_int is + mostly a drop in replacement for the builtin integer types, it should + be noted that it is a rather strange beast as it's a signed type that + is not a 2's complement type. As a result the bitwise operations | & ^ will throw a std::runtime_error + exception if either of the arguments is negative. Similarly the complement + operator~ is deliberately + not implemented for this type. +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero will result in a hardware signal being raised by + libtommath. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/tommath.hpp>
    +
    +boost::multiprecision::tom_int v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 1000!
    +std::cout << std::hex << v << std::endl; // prints 1000! in hex format
    +
    +try{
    +   std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +
    +try{
    +   // v is not a 2's complement type, bitwise operations are only supported
    +   // on positive values:
    +   v = -v & 2;
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html new file mode 100644 index 00000000..f1dac222 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -0,0 +1,108 @@ + + + +Primality Testing + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + The library implements a fairly basic (meaning unoptimized, and possibly + slow) Miller-Rabin test for primality: +

    +
    #include <boost/multiprecision/miller_rabin.hpp>
    +
    +template <class Backend, bool ExpressionTemplates, class Engine>
    +bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
    +
    +template <class Backend, bool ExpressionTemplates, class Engine>
    +bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials);
    +
    +

    + These functions perform a Miller-Rabin test for primality, if the result + is false then n + is definitely composite, while if the result is true + then n is prime with probability 0.25^trials. + The algorithm used is straight out of Knuth Vol 2, which recomends 25 trials + for a pretty strong likelyhood that n is prime. +

    +

    + The third optional argument is for a Uniform Random Number Generator from + Boost.Random. When not provided the mt19937 + generator is used. Note that when producing random primes then you should + probably use a different random number generator to produce candidate prime + numbers for testing, than is used internally by miller_rabin_test + for determining whether the value is prime. It also helps of course to seed + the generators with some source of randomness. +

    +

    + The following example searches for a prime p + for which (p-1)/2 is also probably prime: +

    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +#include <boost/multiprecision/miller_rabin.hpp>
    +#include <iostream>
    +#include <iomanip>
    +
    +int main()
    +{
    +   using namespace boost::random;
    +   using namespace boost::multiprecision;
    +
    +   typedef cpp_int int_type;
    +   mt11213b base_gen(clock());
    +   independent_bits_engine<mt11213b, 256, int_type> gen(base_gen);
    +   //
    +   // We must use a different generator for the tests and number generation, otherwise
    +   // we get false positives.
    +   //
    +   mt19937 gen2(clock());
    +
    +   for(unsigned i = 0; i < 100000; ++i)
    +   {
    +      int_type n = gen();
    +      if(miller_rabin_test(n, 25, gen2))
    +      {
    +         // Value n is probably prime, see if (n-1)/2 is also prime:
    +         std::cout << "We have a probable prime with value: " << std::hex << std::showbase << n << std::endl;
    +         if(miller_rabin_test((n-1)/2, 25, gen2))
    +         {
    +            std::cout << "We have a safe prime with value: " << std::hex << std::showbase << n << std::endl;
    +            return 0;
    +         }
    +      }
    +   }
    +   std::cout << "Ooops, no safe primes were found" << std::endl;
    +   return 1;
    +}
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/random.html b/doc/html/boost_multiprecision/tut/random.html new file mode 100644 index 00000000..6f0d438b --- /dev/null +++ b/doc/html/boost_multiprecision/tut/random.html @@ -0,0 +1,157 @@ + + + +Generating Random Numbers + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Random numbers are generated in conjunction with Boost.Random. However, since + Boost.Random is unaware of arbitrary + precision numbers, it's necessary to include the header: +

    +
    #include <boost/multiprecision/random.hpp>
    +
    +

    + In order to act as a bridge between the two libraries. +

    +

    + Integers with N random bits are generated using independent_bits_engine: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +
    +//
    +// Declare our random number generator type, the underlying generator
    +// is the Mersenne twister mt19937 engine, and 256 bits are generated:
    +//
    +typedef independent_bits_engine<mt19937, 256, mpz_int> generator_type;
    +generator_type gen;
    +//
    +// Generate some values:
    +//
    +std::cout << std::hex << std::showbase;
    +for(unsigned i = 0; i < 10; ++i)
    +   std::cout << gen() << std::endl;
    +
    +

    +

    +

    + Alternatively we can generate integers in a given range using uniform_int_distribution, this will invoke + the underlying engine multiple times to build up the required number of bits + in the result: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +
    +//
    +// Generate integers in a given range using uniform_int,
    +// the underlying generator is invoked multiple times
    +// to generate enough bits:
    +//
    +mt19937 mt;
    +uniform_int_distribution<mpz_int> ui(0, mpz_int(1) << 256);
    +//
    +// Generate the numbers:
    +//
    +std::cout << std::hex << std::showbase;
    +for(unsigned i = 0; i < 10; ++i)
    +   std::cout << ui(mt) << std::endl;
    +
    +

    +

    +

    + Floating point values in [0,1) are generated using uniform_01, + the trick here is to ensure that the underlying generator produces as many + random bits as there are digits in the floating point type. As above independent_bits_engine can be used for + this purpose, note that we also have to convert decimal digits (in the floating + point type) to bits (in the random number generator): +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +//
    +// We need an underlying generator with at least as many bits as the
    +// floating point type to generate numbers in [0, 1) with all the bits
    +// in the floating point type randomly filled:
    +//
    +uniform_01<mpf_float_50> uf;
    +independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    +//
    +// Generate the values:
    +//
    +std::cout << std::setprecision(50);
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << uf(gen) << std::endl;
    +
    +

    +

    +

    + Finally, we can modify the above example to produce numbers distributed according + to some distribution: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +//
    +// We can repeat the above example, with other distributions:
    +//
    +uniform_real_distribution<mpf_float_50> ur(-20, 20);
    +gamma_distribution<mpf_float_50> gd(20);
    +independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    +//
    +// Generate some values:
    +//
    +std::cout << std::setprecision(50);
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << ur(gen) << std::endl;
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << gd(gen) << std::endl;
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html new file mode 100644 index 00000000..0336d8e2 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -0,0 +1,252 @@ + + + +Rational Number Types + + + + + + + + +
    +PrevUpHomeNext +
    +
    + + +

    + The following back-ends provide rational number arithmetic: +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend Type +

    +
    +

    + Header +

    +
    +

    + Radix +

    +
    +

    + Dependencies +

    +
    +

    + Pros +

    +
    +

    + Cons +

    +
    +

    + gmp_rational +

    +
    +

    + boost/multiprecision/gmp.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP +

    +
    +

    + Very fast and efficient back-end. +

    +
    +

    + Dependency on GNU licensed GMP + library. +

    +
    +

    + cpp_rational +

    +
    +

    + boost/multiprecision/cpp_int.hpp +

    +
    +

    + 2 +

    +
    +

    + None +

    +
    +

    + An all C++ Boost-licensed implementation. +

    +
    +

    + Slower than GMP. +

    +
    +

    + tommath_rational +

    +
    +

    + boost/multiprecision/tommath.hpp +

    +
    +

    + 2 +

    +
    +

    + libtommath +

    +
    +

    + All C/C++ implementation that's Boost Software Licence compatible. +

    +
    +

    + Slower than GMP. +

    +
    +

    + rational_adapter +

    +
    +

    + boost/multiprecision/rational_adapter.hpp +

    +
    +

    + N/A +

    +
    +

    + none +

    +
    +

    + All C++ adapter that allows any inetger back-end type to be used + as a rational type. +

    +
    +

    + Requires an underlying integer back-end type. +

    +
    +

    + boost::rational +

    +
    +

    + boost/rational.hpp +

    +
    +

    + N/A +

    +
    +

    + None +

    +
    +

    + A C++ rational number type that can used with any mp_number integer type. +

    +
    +

    + The expression templates used by mp_number + end up being "hidden" inside boost::rational: + performance may well suffer as a result. +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/br.html b/doc/html/boost_multiprecision/tut/rational/br.html new file mode 100644 index 00000000..a3efdfa6 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/br.html @@ -0,0 +1,42 @@ + + + +Use With Boost.Rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + All of the integer types in this library can be used as template arguments + to boost::rational<IntType>. +

    +

    + Note that using the library in this way largely negates the effect of the + expression templates in mp_number. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html new file mode 100644 index 00000000..ea6b42a8 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html @@ -0,0 +1,108 @@ + + + +cpp_rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/cpp_int.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +
    +typedef mp_number<cpp_rational_backend>         cpp_rational;
    +
    +}} // namespaces
    +
    +

    + The cpp_rational_backend + type is used via the typedef boost::multiprecision::cpp_rational. + It provides a rational number type that is a drop-in replacement for the + native C++ number types, but with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of cpp_rational are copy + constructible and assignable from type cpp_int. +

    +

    + There is also a two argument constructor that accepts a numerator and denominator: + both of type cpp_int. +

    +

    + There are also non-member functions: +

    +
    cpp_int numerator(const cpp_rational&);
    +cpp_int denominator(const cpp_rational&);
    +
    +

    + which return the numerator and denominator of the number. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed cpp_rationals + have the value zero. +
    • +
    • + Division by zero results in a std::rumtime_error + being thrown. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +cpp_rational v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +v /= 10;
    +
    +std::cout << v << std::endl; // prints 1000! / 10
    +std::cout << numerator(v) << std::endl;
    +std::cout << denominator(v) << std::endl;
    +
    +cpp_rational w(2, 3);  // component wise constructor
    +std::cout << w << std::endl; // prints 2/3
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html new file mode 100644 index 00000000..8f1f28fe --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html @@ -0,0 +1,138 @@ + + + +gmp_rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/gmp.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +class gmp_rational;
    +
    +typedef mp_number<gmp_rational >         mpq_rational;
    +
    +}} // namespaces
    +
    +

    + The gmp_rational back-end + is used via the typedef boost::multiprecision::mpq_rational. + It acts as a thin wrapper around the GMP + mpq_t to provide a rational + number type that is a drop-in replacement for the native C++ number types, + but with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of mp_number<gmp_rational> + are copy constructible and assignable from: +

    +
      +
    • + The GMP native types: mpz_t, mpq_t. +
    • +
    • + mp_number<gmp_int>. +
    • +
    +

    + There is also a two-argument constructor that accepts a numerator and denominator + (both of type mp_number<gmp_int>). +

    +

    + There are also non-member functions: +

    +
    mpz_int numerator(const mpq_rational&);
    +mpz_int denominator(const mpq_rational&);
    +
    +

    + which return the numerator and denominator of the number. +

    +

    + It's also possible to access the underlying mpq_t + via the data() + member function of mpq_rational. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed mpq_rationals + have the value zero (this is the GMP + default behavior). +
    • +
    • + Division by zero results in a hardware exception inside the GMP library. +
    • +
    • + No changes are made to the GMP + library's global settings, so this type can coexist with existing + GMP code. +
    • +
    • + The code can equally be used with MPIR + as the underlying library - indeed that is the preferred option on + Win32. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mpq_rational v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +v /= 10;
    +
    +std::cout << v << std::endl; // prints 1000! / 10
    +std::cout << numerator(v) << std::endl;
    +std::cout << denominator(v) << std::endl;
    +
    +mpq_rational w(2, 3);  // component wise constructor
    +std::cout << w << std::endl; // prints 2/3
    +
    +// Access the underlying data:
    +mpq_t q;
    +mpq_init(q);
    +mpq_set(q, v.backend().data());
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html new file mode 100644 index 00000000..6b4853f1 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html @@ -0,0 +1,58 @@ + + + +rational_adapter + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <class IntBackend>
    +class rational_adpater;
    +
    +}}
    +
    +

    + The class template rational_adapter + is a back-end for mp_number + which converts any existing integer back-end into a rational-number back-end. +

    +

    + So for example, given an integer back-end type MyIntegerBackend, + the use would be something like: +

    +
    typedef mp_number<MyIntegerBackend>                    MyInt;
    +typedef mp_number<rational_adapter<MyIntegerBackend> > MyRational;
    +
    +MyRational r = 2;
    +r /= 3;
    +MyInt i = numerator(r);
    +assert(i == 2);
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html new file mode 100644 index 00000000..25520372 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html @@ -0,0 +1,115 @@ + + + +tommath_rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/tommath.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +typedef rational_adpater<tommath_int>        tommath_rational;
    +typedef mp_number<tommath_rational >         tom_rational;
    +
    +}} // namespaces
    +
    +

    + The tommath_rational back-end + is used via the typedef boost::multiprecision::tom_rational. + It acts as a thin wrapper around boost::rational<tom_int> to provide a rational number type that + is a drop-in replacement for the native C++ number types, but with unlimited + precision. +

    +

    + The advantage of using this type rather than boost::rational<tom_int> directly, is that it is expression-template + enabled, greatly reducing the number of temporaries created in complex + expressions. +

    +

    + There are also non-member functions: +

    +
    tom_int numerator(const tom_rational&);
    +tom_int denominator(const tom_rational&);
    +
    +

    + which return the numerator and denominator of the number. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed tom_rationals + have the value zero (this the inherited Boost.Rational behavior). +
    • +
    • + Division by zero results in a boost::bad_rational + exception being thrown (see the rational number library's docs for + more information). +
    • +
    • + No changes are made to libtommath's + global state, so this type can safely coexist with other libtommath + code. +
    • +
    • + Performance of this type has been found to be pretty poor - this need + further investigation - but it appears that Boost.Rational needs some + improvement in this area. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/tommath.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +tom_rational v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +v /= 10;
    +
    +std::cout << v << std::endl; // prints 1000! / 10
    +std::cout << numerator(v) << std::endl;
    +std::cout << denominator(v) << std::endl;
    +
    +tom_rational w(2, 3); // Component wise constructor
    +std::cout << w << std::endl; // prints 2/3
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 00000000..3f79382c --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,108 @@ + + + +Chapter 1. Boost.Multiprecision + + + + + + +
    Next
    + + + + +

    Last revised: March 30, 2012 at 18:33:57 GMT

    +
    +
    Next
    + + From 3d3d58e04090445b90d5447765e207e0dd0737c6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 3 Apr 2012 16:20:11 +0000 Subject: [PATCH 155/256] Tidy up code, and add multi-threaded test case. [SVN r77741] --- performance/sf_performance.cpp | 376 ++++++++++++--------------------- 1 file changed, 135 insertions(+), 241 deletions(-) diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 195b991c..e2183f7f 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -3,15 +3,15 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ -#define BOOST_CHRONO_HEADER_ONLY #define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 500 -#if !defined(TEST_MPFR) && !defined(TEST_MP_REAL) && !defined(TEST_MPF) +#if !defined(TEST_MPFR) && !defined(TEST_MPREAL) && !defined(TEST_MPF) && !defined(TEST_MPREAL) \ + && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_CLASS) # define TEST_MPFR # define TEST_MPF -# define TEST_MPF # define TEST_CPP_DEC_FLOAT # define TEST_MPFR_CLASS +# define TEST_MPREAL #endif #ifdef TEST_MPFR_CLASS @@ -20,7 +20,7 @@ #ifdef TEST_MPFR #include #endif -#ifdef TEST_MP_REAL +#ifdef TEST_MPREAL #include #endif #ifdef TEST_MPF @@ -35,6 +35,7 @@ #include #include #include +#include template Real test_bessel(); @@ -63,48 +64,54 @@ private: template Real test_bessel() { + try{ # define T double # define SC_(x) x # include "libs/math/test/bessel_i_int_data.ipp" # include "libs/math/test/bessel_i_data.ipp" - Real r; + Real r; - for(unsigned i = 0; i < bessel_i_int_data.size(); ++i) - { - r += boost::math::cyl_bessel_i(Real(bessel_i_int_data[i][0]), Real(bessel_i_int_data[i][1])); - } - for(unsigned i = 0; i < bessel_i_data.size(); ++i) - { - r += boost::math::cyl_bessel_i(Real(bessel_i_data[i][0]), Real(bessel_i_data[i][1])); - } + for(unsigned i = 0; i < bessel_i_int_data.size(); ++i) + { + r += boost::math::cyl_bessel_i(Real(bessel_i_int_data[i][0]), Real(bessel_i_int_data[i][1])); + } + for(unsigned i = 0; i < bessel_i_data.size(); ++i) + { + r += boost::math::cyl_bessel_i(Real(bessel_i_data[i][0]), Real(bessel_i_data[i][1])); + } #include "libs/math/test/bessel_j_int_data.ipp" - for(unsigned i = 0; i < bessel_j_int_data.size(); ++i) - { - r += boost::math::cyl_bessel_j(Real(bessel_j_int_data[i][0]), Real(bessel_j_int_data[i][1])); - } + for(unsigned i = 0; i < bessel_j_int_data.size(); ++i) + { + r += boost::math::cyl_bessel_j(Real(bessel_j_int_data[i][0]), Real(bessel_j_int_data[i][1])); + } #include "libs/math/test/bessel_j_data.ipp" - for(unsigned i = 0; i < bessel_j_data.size(); ++i) - { - r += boost::math::cyl_bessel_j(Real(bessel_j_data[i][0]), Real(bessel_j_data[i][1])); - } + for(unsigned i = 0; i < bessel_j_data.size(); ++i) + { + r += boost::math::cyl_bessel_j(Real(bessel_j_data[i][0]), Real(bessel_j_data[i][1])); + } #include "libs/math/test/bessel_j_large_data.ipp" - for(unsigned i = 0; i < bessel_j_large_data.size(); ++i) - { - r += boost::math::cyl_bessel_j(Real(bessel_j_large_data[i][0]), Real(bessel_j_large_data[i][1])); - } + for(unsigned i = 0; i < bessel_j_large_data.size(); ++i) + { + r += boost::math::cyl_bessel_j(Real(bessel_j_large_data[i][0]), Real(bessel_j_large_data[i][1])); + } #include "libs/math/test/sph_bessel_data.ipp" - for(unsigned i = 0; i < sph_bessel_data.size(); ++i) - { - r += boost::math::sph_bessel(static_cast(sph_bessel_data[i][0]), Real(sph_bessel_data[i][1])); + for(unsigned i = 0; i < sph_bessel_data.size(); ++i) + { + r += boost::math::sph_bessel(static_cast(sph_bessel_data[i][0]), Real(sph_bessel_data[i][1])); + } + + return r; } - - - return r; + catch(const std::exception& e) + { + std::cout << e.what() << std::endl; + } + return 0; } template @@ -161,54 +168,89 @@ void * realloc_func(void * p, size_t old, size_t n) return (*realloc_func_ptr)(p, old, n); } +template +void basic_allocation_test(const char* name, Real x) +{ + static const unsigned a[] = { 2, 3, 4, 5, 6, 7, 8 }; + allocation_count = 0; + Real result = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; + std::cout << "Allocation count for type " << name << " = " << allocation_count << std::endl; +} + +template +void poly_allocation_test(const char* name, Real x) +{ + static const unsigned a[] = { 2, 3, 4, 5, 6, 7, 8 }; + allocation_count = 0; + Real result = boost::math::tools::evaluate_polynomial(a, x); + std::cout << "Allocation count for type " << name << " = " << allocation_count << std::endl; +} + +template +void time_proc(const char* name, Real (*proc)(), unsigned threads = 1) +{ + try{ + static Real total = 0; + allocation_count = 0; + boost::chrono::duration time; + stopwatch c; + total += proc(); + time = c.elapsed(); + std::cout << "Time for " << name << " = " << time << std::endl; + std::cout << "Total allocations for " << name << " = " << allocation_count << std::endl; + + for(unsigned thread_count = 1; thread_count < threads; ++thread_count) + { + c.reset(); + boost::thread_group g; + for(unsigned i = 0; i <= thread_count; ++i) + g.create_thread(proc); + g.join_all(); + time = c.elapsed(); + std::cout << "Time for " << name << " (" << (thread_count + 1) << " threads) = " << time << std::endl; + std::cout << "Total allocations for " << name << " = " << allocation_count << std::endl; + } + } + catch(const std::exception& e) + { + std::cout << e.what() << std::endl; + } +} + int main() { + using namespace boost::multiprecision; +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) || defined(TEST_MPREAL) mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); mp_set_memory_functions(&alloc_func, &realloc_func, &free_func); +#endif - static const unsigned a[] = { - 2, 3, 4, 5, 6, 7, 8 }; + std::cout << "Allocation Counts for Horner Evaluation:\n"; #ifdef TEST_MPFR - boost::multiprecision::mpfr_float_50 result, x(2); - allocation_count = 0; - result = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; - std::cout << allocation_count << std::endl; + basic_allocation_test("mpfr_float_50", mpfr_float_50(2)); #endif #ifdef TEST_MPFR_CLASS - mpfr_class r, x2(2); - allocation_count = 0; - r = (((((a[6] * x2 + a[5]) * x2 + a[4]) * x2 + a[3]) * x2 + a[2]) * x2 + a[1]) * x2 + a[0]; - std::cout << allocation_count << std::endl; + basic_allocation_test("mpfr_class", mpfr_class(2)); #endif #ifdef TEST_MPREAL - mpfr::mpreal r2, x3(2); - allocation_count = 0; - r2 = (((((a[6] * x3 + a[5]) * x3 + a[4]) * x3 + a[3]) * x3 + a[2]) * x3 + a[1]) * x3 + a[0]; - std::cout << allocation_count << std::endl; + basic_allocation_test("mpfr::mpreal", mpfr::mpreal(2)); #endif - allocation_count = 0; + std::cout << "Allocation Counts for boost::math::tools::evaluate_polynomial:\n"; #ifdef TEST_MPFR - result = boost::math::tools::evaluate_polynomial(a, x); - std::cout << allocation_count << std::endl; - allocation_count = 0; + poly_allocation_test("mpfr_float_50", mpfr_float_50(2)); #endif #ifdef TEST_MPFR_CLASS - r = boost::math::tools::evaluate_polynomial(a, x2); - std::cout << allocation_count << std::endl; - allocation_count = 0; + poly_allocation_test("mpfr_class", mpfr_class(2)); #endif #ifdef TEST_MPREAL - r2 = boost::math::tools::evaluate_polynomial(a, x3); - std::cout << allocation_count << std::endl; + poly_allocation_test("mpfr::mpreal", mpfr::mpreal(2)); #endif - boost::chrono::duration time; - stopwatch c; // // 50 digits first: // - std::cout << "Testing Bessel Functions....." << std::endl; + std::cout << "Testing Bessel Functions at 50 digits....." << std::endl; #if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) mpfr_set_default_prec(50 * 1000L / 301L); #endif @@ -216,48 +258,25 @@ int main() mpfr::mpreal::set_default_prec(50 * 1000L / 301L); #endif #ifdef TEST_MPFR - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpfr_float_50 = " << time << std::endl; - std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_float_50", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); #endif #ifdef TEST_MPF - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpf_float_50 = " << time << std::endl; - std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpf_float_50", test_bessel, 3); + time_proc("mpf_float_50 (no expression templates", test_bessel, false> >, 3); #endif #ifdef TEST_CPP_DEC_FLOAT - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for cpp_dec_float_50 = " << time << std::endl; - std::cout << "Total allocations for cpp_dec_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("cpp_dec_float_50", test_bessel, 3); #endif #ifdef TEST_MPFR_CLASS - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; - std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_class", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); #endif #ifdef TEST_MP_REAL - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpreal (50 digits) = " << time << std::endl; - std::cout << "Total allocations for mpreal (50 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr::mpreal", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); #endif // // Then 100 digits: // + std::cout << "Testing Bessel Functions at 100 digits....." << std::endl; #if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) mpfr_set_default_prec(100 * 1000L / 301L); #endif @@ -265,51 +284,25 @@ int main() mpfr::mpreal::set_default_prec(100 * 1000L / 301L); #endif #ifdef TEST_MPFR - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpfr_float_100 = " << time << std::endl; - std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_float_100", test_bessel); #endif #ifdef TEST_MPF - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpf_float_100 = " << time << std::endl; - std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpf_float_100", test_bessel); #endif #ifdef TEST_CPP_DEC_FLOAT - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for cpp_dec_float_100 = " << time << std::endl; - std::cout << "Total allocations for cpp_dec_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("cpp_dec_float_100", test_bessel); #endif #ifdef TEST_MPFR_CLASS - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; - std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_class", test_bessel); #endif #ifdef TEST_MPREAL - c.reset(); - test_bessel(); - time = c.elapsed(); - std::cout << "Time for mpreal (100 digits) = " << time << std::endl; - std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr::mpreal", test_bessel); #endif // // 50 digits first: // - c.reset(); - std::cout << "Testing Polynomial Evaluation....." << std::endl; + std::cout << "Testing Polynomial Evaluation at 50 digits....." << std::endl; #if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) mpfr_set_default_prec(50 * 1000L / 301L); #endif @@ -317,48 +310,24 @@ int main() mpfr::mpreal::set_default_prec(50 * 1000L / 301L); #endif #ifdef TEST_MPFR - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpfr_float_50 = " << time << std::endl; - std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_float_50", test_polynomial); #endif #ifdef TEST_MPF - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpf_float_50 = " << time << std::endl; - std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpf_float_50", test_polynomial); #endif #ifdef TEST_CPP_DEC_FLOAT - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for cpp_dec_float_50 = " << time << std::endl; - std::cout << "Total allocations for cpp_dec_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("cpp_dec_float_50", test_polynomial); #endif #ifdef TEST_MPFR_CLASS - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; - std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_class", test_polynomial); #endif #ifdef TEST_MPREAL - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpreal (50 digits) = " << time << std::endl; - std::cout << "Total allocations for mpreal (50 digits = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr::mpreal", test_polynomial); #endif // // Then 100 digits: // + std::cout << "Testing Polynomial Evaluation at 100 digits....." << std::endl; #ifdef TEST_MPFR_CLASS mpfr_set_default_prec(100 * 1000L / 301L); #endif @@ -366,50 +335,24 @@ int main() mpfr::mpreal::set_default_prec(100 * 1000L / 301L); #endif #ifdef TEST_MPFR - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpfr_float_100 = " << time << std::endl; - std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_float_100", test_polynomial); #endif #ifdef TEST_MPF - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpf_float_100 = " << time << std::endl; - std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpf_float_100", test_polynomial); #endif #ifdef TEST_CPP_DEC_FLOAT - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for cpp_dec_float_100 = " << time << std::endl; - std::cout << "Total allocations for cpp_dec_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("cpp_dec_float_100", test_polynomial); #endif #ifdef TEST_MPFR_CLASS - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; - std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_class", test_polynomial); #endif #ifdef TEST_MPREAL - c.reset(); - test_polynomial(); - time = c.elapsed(); - std::cout << "Time for mpreal (100 digits) = " << time << std::endl; - std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr::mpreal", test_polynomial); #endif // // 50 digits first: // - c.reset(); - std::cout << "Testing Non-Central T....." << std::endl; + std::cout << "Testing Non-Central T at 50 digits....." << std::endl; #ifdef TEST_MPFR_CLASS mpfr_set_default_prec(50 * 1000L / 301L); #endif @@ -417,48 +360,24 @@ int main() mpfr::mpreal::set_default_prec(50 * 1000L / 301L); #endif #ifdef TEST_MPFR - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpfr_float_50 = " << time << std::endl; - std::cout << "Total allocations for mpfr_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_float_50", test_nct); #endif #ifdef TEST_MPF - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpf_float_50 = " << time << std::endl; - std::cout << "Total allocations for mpf_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpf_float_50", test_nct); #endif #ifdef TEST_CPP_DEC_FLOAT - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for cpp_dec_float_50 = " << time << std::endl; - std::cout << "Total allocations for cpp_dec_float_50 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("cpp_dec_float_50", test_nct); #endif #ifdef TEST_MPFR_CLASS - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpfr_class (50 digits) = " << time << std::endl; - std::cout << "Total allocations for mpfr_class (50 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_class", test_nct); #endif #ifdef TEST_MP_REAL - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpreal (50 digits) = " << time << std::endl; - std::cout << "Total allocations for mpreal (50 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr::mpreal", test_nct); #endif // // Then 100 digits: // + std::cout << "Testing Non-Central T at 100 digits....." << std::endl; #ifdef TEST_MPFR_CLASS mpfr_set_default_prec(100 * 1000L / 301L); #endif @@ -466,44 +385,19 @@ int main() mpfr::mpreal::set_default_prec(100 * 1000L / 301L); #endif #ifdef TEST_MPFR - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpfr_float_100 = " << time << std::endl; - std::cout << "Total allocations for mpfr_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_float_100", test_nct); #endif #ifdef TEST_MPF - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpf_float_100 = " << time << std::endl; - std::cout << "Total allocations for mpf_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpf_float_100", test_nct); #endif #ifdef TEST_CPP_DEC_FLOAT - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for cpp_dec_float_100 = " << time << std::endl; - std::cout << "Total allocations for cpp_dec_float_100 = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("cpp_dec_float_100", test_nct); #endif #ifdef TEST_MPFR_CLASS - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpfr_class (100 digits) = " << time << std::endl; - std::cout << "Total allocations for mpfr_class (100 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr_class", test_nct); #endif #ifdef TEST_MPREAL - c.reset(); - test_nct(); - time = c.elapsed(); - std::cout << "Time for mpreal (100 digits) = " << time << std::endl; - std::cout << "Total allocations for mpreal (100 digits) = " << allocation_count << std::endl; - allocation_count = 0; + time_proc("mpfr::mpreal", test_nct); #endif } From 4a15673dd47a211fed9556733dabee4086c01390 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 3 Apr 2012 16:21:08 +0000 Subject: [PATCH 156/256] Update Jamfile to match new sf_performance.cpp code. [SVN r77742] --- performance/Jamfile.v2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index 54fd7e52..be2cc779 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -53,7 +53,7 @@ exe performance_test : performance_test.cpp /boost/system//boost_system TEST_CPP_INT ; -exe sf_performance : sf_performance.cpp /boost/system//boost_system +exe sf_performance : sf_performance.cpp /boost/system//boost_system /boost/system//boost_chrono /boost/system//boost_thread : release [ check-target-builds ../config//has_gmp : TEST_MPF TEST_MPZ gmp : ] [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] From 149af697bc4a091f575109c01abb2eaba96759f1 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 3 Apr 2012 16:22:27 +0000 Subject: [PATCH 157/256] Add log of comments. [SVN r77743] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- doc/html/boost_multiprecision/map/todo.html | 43 +++++++++++++++++++ doc/html/index.html | 2 +- doc/multiprecision.qbk | 15 +++++++ 7 files changed, 67 insertions(+), 9 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 59767df1..985e46bb 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 4cc5f7c9..730aadba 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    M

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index ce12f7c2..9208e9f5 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 3ac7ed2e..d7638e3e 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M O P R S T Z

    diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 1c188b18..315bd765 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -41,6 +41,49 @@ Add an all C++ binary floating point type.
    +
    + + Pre-Review + Comments +
    +
      +
    • + Make the exponent type for cpp_dec_float a templare parameter, maybe + include support for big-integer exponents. Open question - what should + be the default - int32_t or int64_t? +
    • +
    • + Document the size requirements of fixed precision ints. +
    • +
    • + Document std lib function accuracy. +
    • +
    • + Make fixed precision orthogonal to Allocator type in cpp_int. Possible + solution - add an additional MaxBits template argument that defaults + to 0 (meaning keep going till no more space/memory). +
    • +
    • + Add support for fused multiply add (and subtract). GMP mpz_t could use + this. +
    • +
    • + Be a bit clearer on the effects of sign-magnitude representation of cpp_int + - min == -max etc. +
    • +
    • + Document cpp_dec_float precision, rounding, and exponent size. +
    • +
    • + Can we be clearer in the docs that mixed arithmetic doesn't work? +
    • +
    • + Document round functions behaviour better (they behave as in C99). +
    • +
    • + Should there be a choice of rounding mode (probably MPFR specific)? +
    • +
    diff --git a/doc/html/index.html b/doc/html/index.html index 3f79382c..2609da49 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -99,7 +99,7 @@
    - +

    Last revised: March 30, 2012 at 18:33:57 GMT

    Last revised: April 03, 2012 at 15:58:48 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 97cf9fad..4b3e4dba 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -2072,6 +2072,21 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Add assembly level routines to cpp_int_backend. * Add an all C++ binary floating point type. +[h4 Pre-Review Comments] + +* Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. +Open question - what should be the default - int32_t or int64_t? +* Document the size requirements of fixed precision ints. +* Document std lib function accuracy. +* Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits +template argument that defaults to 0 (meaning keep going till no more space/memory). +* Add support for fused multiply add (and subtract). GMP mpz_t could use this. +* Be a bit clearer on the effects of sign-magnitude representation of cpp_int - min == -max etc. +* Document cpp_dec_float precision, rounding, and exponent size. +* Can we be clearer in the docs that mixed arithmetic doesn't work? +* Document round functions behaviour better (they behave as in C99). +* Should there be a choice of rounding mode (probably MPFR specific)? + [endsect] [section:ack Acknowledgements] From 0488e551b995ff2625cfe5840d0b55accb1817a0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 3 Apr 2012 18:20:35 +0000 Subject: [PATCH 158/256] Add extended floating point example. [SVN r77746] --- .../boost_multiprecision/indexes/s01.html | 8 +- .../boost_multiprecision/indexes/s02.html | 15 +- .../boost_multiprecision/indexes/s03.html | 16 +- .../boost_multiprecision/indexes/s04.html | 49 ++-- doc/html/boost_multiprecision/tut.html | 2 + doc/html/boost_multiprecision/tut/floats.html | 2 + .../tut/floats/cpp_dec_float.html | 6 +- .../boost_multiprecision/tut/floats/jel.html | 222 ++++++++++++++++++ .../boost_multiprecision/tut/rational.html | 6 +- doc/html/index.html | 4 +- doc/multiprecision.qbk | 8 + example/floating_point_examples.cpp | 194 +++++++++++++++ 12 files changed, 490 insertions(+), 42 deletions(-) create mode 100644 doc/html/boost_multiprecision/tut/floats/jel.html create mode 100644 example/floating_point_examples.cpp diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 985e46bb..5e18e6c7 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,10 +13,10 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    -

    A B C D E F I L M P R S T Z

    +Function Index
    +

    A B C D E F I L M P R S T Z

    A @@ -207,7 +207,7 @@
    -Z +Z
    • zero

      diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 730aadba..9207a2a7 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,13 +13,13 @@
      PrevUpHomeNext
      -
      +

      -Class Index

      -

      M

      +Class Index
    +

    M T

    -M +M
    +
    +T +
    +
    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 9208e9f5..9aecc85a 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,13 +13,13 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    -

    C I L M T

    +Typedef Index
    +

    C I L M T

    -C +C
    • @@ -47,21 +47,21 @@
    -I +I
    -L +L
    -M +M
    • @@ -161,7 +161,7 @@
    -T +T
    • tommath_rational

    • diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index d7638e3e..a079ef1a 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,20 +12,20 @@
      PrevUpHome
      -
      +

      -Index

      -

      A B C D E F G I L M O P R S T Z

      +Index
    +

    A B C D E F G I L M O P R S T W Z

    -A +A
    -B +B
    • @@ -50,7 +50,7 @@
    -C +C
    • @@ -106,7 +106,7 @@
    -D +D
    • @@ -128,21 +128,21 @@
    -E +E
    -F +F
    -G +G
    • @@ -175,7 +175,7 @@
    -I +I
    • @@ -223,7 +223,7 @@
    -L +L
    • @@ -252,7 +252,7 @@
    -M +M
    • @@ -410,14 +410,14 @@
    -O +O
    -P +P
    • @@ -437,14 +437,14 @@
    -R +R
    -S +S
    • @@ -461,7 +461,7 @@
    -T +T
    -Z +W +
    +
    • +

      Worked Example: defining a mathematical function.

      + +
    +
    +Z
    Rational Number Types
    diff --git a/doc/html/boost_multiprecision/tut/floats.html b/doc/html/boost_multiprecision/tut/floats.html index a3b605f0..f9b841f4 100644 --- a/doc/html/boost_multiprecision/tut/floats.html +++ b/doc/html/boost_multiprecision/tut/floats.html @@ -21,6 +21,8 @@
    gmp_float
    mpfr_float
    cpp_dec_float
    +
    Worked Example: + defining a mathematical function.

    The following back-ends provide floating point arithmetic: diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html index ca15017c..cc7b16ca 100644 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -7,11 +7,11 @@ - +

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -111,7 +111,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/floats/jel.html b/doc/html/boost_multiprecision/tut/floats/jel.html new file mode 100644 index 00000000..9a6a4ba8 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/jel.html @@ -0,0 +1,222 @@ + + + +Worked Example: defining a mathematical function. + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this example we'll show several implementations of the Jahnke + and Emden Lambda function, each implementation a little more sophisticated + than the last. +

    +

    + The Jahnke-Emden Lambda function is defined by the equation: +

    +

    + JahnkeEmden(v, z) = Gamma(v+1) * J[v](z) / (z / 2)^v +

    +

    + If we were to implement this at double precision using Boost.Math's facilities + for the Gamma and Bessel function calls it would look like this: +

    +

    +

    +
    double JEL1(double v, double z)
    +{
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / std::pow(z / 2, v);
    +}
    +
    +

    +

    +

    + Calling this function as: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    +std::cout << JEL1(2.5, 0.5) << std::endl;
    +
    +

    + Yields the output: +

    +
    9.822663964796047e-001
    +

    + Now lets implement the function again, but this time using the multiprecision + type cpp_dec_float_50 as + the argument type: +

    +

    +

    +
    boost::multiprecision::cpp_dec_float_50
    +   JEL2(boost::multiprecision::cpp_dec_float_50 v, boost::multiprecision::cpp_dec_float_50 z)
    +{
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / boost::multiprecision::pow(z / 2, v);
    +}
    +
    +

    +

    +

    + The implementation is almost the same as before, but with one key difference + - we can no longer call std::pow, + instead we must call the version inside the boost::multiprecision + namespace. In point of fact, we could have omitted the namespace prefix + on the call to pow since + the right overload would have been found via argument + dependent lookup in any case. +

    +

    + Note also that the first argument to pow + along with the argument to tgamma + in the above code are actually expression templates. The pow and tgamma + functions will handle these arguments just fine. +

    +

    + Here's an example of how the function may be called: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    +std::cout << JEL2(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    +
    +

    + Which outputs: +

    +
    9.82266396479604757017335009796882833995903762577173e-01
    +

    + Now that we've seen some non-template examples, lets repeat the code again, + but this time as a template that can be called either with a builtin type + (float, double + etc), or with a multiprecision type: +

    +

    +

    +
    template <class Float>
    +Float JEL3(Float v, Float z)
    +{
    +   using std::pow;
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    +}
    +
    +

    +

    +

    + Once again the code is almost the same as before, but the call to pow has changed yet again. We need the + call to resolve to either std::pow + (when the argument is a builtin type), or to boost::multiprecision::pow + (when the argument is a multiprecision type). We do that by making the + call unqualified so that versions of pow + defined in the same namespace as type Float + are found via argument dependent lookup, while the using + std::pow directive makes the standard library + versions visible for builtin floating point types. +

    +

    + Let's call the function with both double + and multiprecision arguments: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    +std::cout << JEL3(2.5, 0.5) << std::endl;
    +std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    +std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    +
    +

    + Which outputs: +

    +
    9.822663964796047e-001
    +9.82266396479604757017335009796882833995903762577173e-01
    +
    +

    + Unfortunately there is a problem with this version: if we were to call + it like this: +

    +
    boost::multiprecision::cpp_dec_float_50 v(2), z(0.5);
    +JEL3(v + 0.5, z);
    +
    +

    + Then we would get a long and inscrutable error message from the compiler: + the problem here is that the first argument to JEL3 + is not a number type, but an expression template. We could obviously add + a typecast to fix the issue: +

    +
    JEL(cpp_dec_float_50(v + 0.5), z);
    +
    +

    + However, if we want the function JEL to be truely reusable, then a better + solution might be preferred. To achieve this we can borrow some code from + Boost.Math which calculates the return type of mixed-argument functions, + here's how the new code looks now: +

    +

    +

    +
    template <class Float1, class Float2>
    +typename boost::math::tools::promote_args<Float1, Float2>::type
    +   JEL4(Float1 v, Float2 z)
    +{
    +   using std::pow;
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    +}
    +
    +

    +

    +

    + As you can see the two arguments to the function are now separate template + types, and the return type is computed using the promote_args + metafunction from Boost.Math. +

    +

    + Now we can call: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_100>::digits10);
    +std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl;
    +
    +

    + And get 100 digits of output: +

    +
    9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01
    +

    + As a bonus, we can now call the function not just with expression templates, + but with other mixed types as well: for example float + and double or int and double, + and the correct return type will be computed in each case. +

    +

    + Note that while in this case we didn't have to change the body of the function, + in the general case any function like this which creates local variables + internally would have to use promote_args + to work out what type those variables should be, for example: +

    +
    template <class Float1, class Float2>
    +typename boost::math::tools::promote_args<Float1, Float2>::type
    +   JEL5(Float1 v, Float2 z)
    +{
    +   using std::pow;
    +   typedef typename boost::math::tools::promote_args<Float1, Float2>::type variable_type;
    +   variable_type t = pow(z / 2, v);
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / t;
    +}
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 0336d8e2..318cba56 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -246,7 +246,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/index.html b/doc/html/index.html index 2609da49..013c47c5 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -44,6 +44,8 @@
    gmp_float
    mpfr_float
    cpp_dec_float
    +
    Worked Example: + defining a mathematical function.
    Rational Number Types
    @@ -99,7 +101,7 @@ - +

    Last revised: April 03, 2012 at 15:58:48 GMT

    Last revised: April 03, 2012 at 18:14:12 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 4b3e4dba..4d7e2a49 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -556,6 +556,14 @@ Normally these should not be visible to the user. [endsect] +[section:jel Worked Example: defining a mathematical function.] + +[import ../example/floating_point_examples.cpp] + +[JEL] + +[endsect] + [endsect] [section:rational Rational Number Types] diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp new file mode 100644 index 00000000..9aa134e9 --- /dev/null +++ b/example/floating_point_examples.cpp @@ -0,0 +1,194 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include +#include +#include +#include + +//[JEL + +/*` +In this example we'll show several implementations of the +[@http://mathworld.wolfram.com/LambdaFunction.html Jahnke and Emden Lambda function], +each implementation a little more sophisticated than the last. + +The Jahnke-Emden Lambda function is defined by the equation: + +JahnkeEmden(v, z) = Gamma(v+1) * J[v](z) / (z / 2)^v + +If we were to implement this at double precision using Boost.Math's facilities for the Gamma and Bessel +function calls it would look like this: + +*/ + +double JEL1(double v, double z) +{ + return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / std::pow(z / 2, v); +} + +/*` +Calling this function as: + + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL1(2.5, 0.5) << std::endl; + +Yields the output: + +[pre 9.822663964796047e-001] + +Now lets implement the function again, but this time using the multiprecision type +`cpp_dec_float_50` as the argument type: + +*/ + +boost::multiprecision::cpp_dec_float_50 + JEL2(boost::multiprecision::cpp_dec_float_50 v, boost::multiprecision::cpp_dec_float_50 z) +{ + return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / boost::multiprecision::pow(z / 2, v); +} + +/*` +The implementation is almost the same as before, but with one key difference - we can no longer call +`std::pow`, instead we must call the version inside the `boost::multiprecision` namespace. In point of +fact, we could have omitted the namespace prefix on the call to `pow` since the right overload would +have been found via [@http://en.wikipedia.org/wiki/Argument-dependent_name_lookup +argument dependent lookup] in any case. + +Note also that the first argument to `pow` along with the argument to `tgamma` in the above code +are actually expression templates. The `pow` and `tgamma` functions will handle these arguments +just fine. + +Here's an example of how the function may be called: + + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL2(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl; + +Which outputs: + +[pre 9.82266396479604757017335009796882833995903762577173e-01] + +Now that we've seen some non-template examples, lets repeat the code again, but this time as a template +that can be called either with a builtin type (`float`, `double` etc), or with a multiprecision type: + +*/ + +template +Float JEL3(Float v, Float z) +{ + using std::pow; + return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v); +} + +/*` + +Once again the code is almost the same as before, but the call to `pow` has changed yet again. +We need the call to resolve to either `std::pow` (when the argument is a builtin type), or +to `boost::multiprecision::pow` (when the argument is a multiprecision type). We do that by +making the call unqualified so that versions of `pow` defined in the same namespace as type +`Float` are found via argument dependent lookup, while the `using std::pow` directive makes +the standard library versions visible for builtin floating point types. + +Let's call the function with both `double` and multiprecision arguments: + + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL3(2.5, 0.5) << std::endl; + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl; + +Which outputs: + +[pre +9.822663964796047e-001 +9.82266396479604757017335009796882833995903762577173e-01 +] + +Unfortunately there is a problem with this version: if we were to call it like this: + + boost::multiprecision::cpp_dec_float_50 v(2), z(0.5); + JEL3(v + 0.5, z); + +Then we would get a long and inscrutable error message from the compiler: the problem here is that the first +argument to `JEL3` is not a number type, but an expression template. We could obviously add a typecast to +fix the issue: + + JEL(cpp_dec_float_50(v + 0.5), z); + +However, if we want the function JEL to be truely reusable, then a better solution might be preferred. +To achieve this we can borrow some code from Boost.Math which calculates the return type of mixed-argument +functions, here's how the new code looks now: + +*/ + +template +typename boost::math::tools::promote_args::type + JEL4(Float1 v, Float2 z) +{ + using std::pow; + return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v); +} + +/*` + +As you can see the two arguments to the function are now separate template types, and +the return type is computed using the `promote_args` metafunction from Boost.Math. + +Now we can call: + + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl; + +And get 100 digits of output: + +[pre 9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01] + +As a bonus, we can now call the function not just with expression templates, but with other mixed types as well: +for example `float` and `double` or `int` and `double`, and the correct return type will be computed in each case. + +Note that while in this case we didn't have to change the body of the function, in the general case +any function like this which creates local variables internally would have to use `promote_args` +to work out what type those variables should be, for example: + + template + typename boost::math::tools::promote_args::type + JEL5(Float1 v, Float2 z) + { + using std::pow; + typedef typename boost::math::tools::promote_args::type variable_type; + variable_type t = pow(z / 2, v); + return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / t; + } + +*/ + +//] + +int main() +{ + using namespace boost::multiprecision; + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL1(2.5, 0.5) << std::endl; + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL2(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl; + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL3(2.5, 0.5) << std::endl; + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl; + std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); + std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl; + return 0; +} + +/* + +Program output: + +9.822663964796047e-001 +9.82266396479604757017335009796882833995903762577173e-01 +9.822663964796047e-001 +9.82266396479604757017335009796882833995903762577173e-01 +9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01 +*/ \ No newline at end of file From 68a4a8743844348ce2a56aa85985a36e0355365e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 4 Apr 2012 17:04:00 +0000 Subject: [PATCH 159/256] Add string versions of constants for faster (and more accurate) constant initialization. [SVN r77758] --- .../detail/functions/constants.hpp | 70 +++++++++++++++++++ test/Jamfile.v2 | 12 +++- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 677ed49d..40a13fa6 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -17,6 +17,29 @@ void calc_log2(T& num, unsigned digits) typedef typename mpl::deref::type ui_type; typedef typename mpl::front::type si_type; + // + // String value with 1100 digits: + // + static const char* string_val = "0." + "6931471805599453094172321214581765680755001343602552541206800094933936219696947156058633269964186875" + "4200148102057068573368552023575813055703267075163507596193072757082837143519030703862389167347112335" + "0115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740" + "4303855008019441706416715186447128399681717845469570262716310645461502572074024816377733896385506952" + "6066834113727387372292895649354702576265209885969320196505855476470330679365443254763274495125040606" + "9438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608" + "2938031727143677826548775664850856740776484514644399404614226031930967354025744460703080960850474866" + "3852313818167675143866747664789088143714198549423151997354880375165861275352916610007105355824987941" + "4729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591" + "0708823683627589842589185353024363421436706118923678919237231467232172053401649256872747782344535347" + "6481149418642386776774406069562657379600867076257199184734022651462837904883062033061144630073719489"; + // + // Check if we can just construct from string: + // + if(digits * 1000L / 301 < 1100) + { + num = string_val; + return; + } num = static_cast(1180509120u); T denom, next_term, temp; denom = static_cast(1277337600u); @@ -51,6 +74,30 @@ void calc_e(T& result, unsigned digits) { typedef typename mpl::front::type ui_type; typedef typename mpl::front::type real_type; + // + // 1100 digits in string form: + // + const char* string_val = "2." + "7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274" + "2746639193200305992181741359662904357290033429526059563073813232862794349076323382988075319525101901" + "1573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069" + "5517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416" + "9283681902551510865746377211125238978442505695369677078544996996794686445490598793163688923009879312" + "7736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117" + "3012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509" + "9618188159304169035159888851934580727386673858942287922849989208680582574927961048419844436346324496" + "8487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016" + "7683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354" + "0212340784981933432106817012100562788023519303322474501585390473041995777709350366041699732972508869"; + // + // Check if we can just construct from string: + // + if(digits * 1000L / 301 < 1100) + { + result = string_val; + return; + } + T lim; lim = ui_type(1); eval_ldexp(lim, lim, digits); @@ -73,6 +120,29 @@ void calc_pi(T& result, unsigned digits) { typedef typename mpl::front::type ui_type; typedef typename mpl::front::type real_type; + // + // 1100 digits in string form: + // + const char* string_val = "3." + "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679" + "8214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196" + "4428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273" + "7245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094" + "3305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912" + "9833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132" + "0005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235" + "4201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859" + "5024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303" + "5982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989" + "3809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152"; + // + // Check if we can just construct from string: + // + if(digits * 1000L / 301 < 1100) + { + result = string_val; + return; + } T a; a = ui_type(1); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1e3087ee..7087da06 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -553,6 +553,7 @@ run test_float_io.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT + release # Otherwise runtime is slow : test_float_io_cpp_dec_float ; run test_float_io.cpp gmp @@ -560,6 +561,7 @@ run test_float_io.cpp gmp : # input files : # requirements TEST_MPF_50 + release # Otherwise runtime is slow [ check-target-builds ../config//has_gmp : : no ] : test_float_io_mpf ; @@ -568,6 +570,7 @@ run test_float_io.cpp mpfr gmp : # input files : # requirements TEST_MPFR_50 + release # Otherwise runtime is slow [ check-target-builds ../config//has_mpfr : : no ] : test_float_io_mpfr ; @@ -576,6 +579,7 @@ run test_int_io.cpp $(TOMMATH) : # input files : # requirements TEST_TOMMATH + release # Otherwise runtime is slow [ check-target-builds ../config//has_tommath : : no ] : test_int_io_tommath ; @@ -584,6 +588,7 @@ run test_int_io.cpp gmp : # input files : # requirements TEST_MPZ + release # Otherwise runtime is slow [ check-target-builds ../config//has_gmp : : no ] : test_int_io_mpz ; @@ -592,6 +597,7 @@ run test_int_io.cpp : # input files : # requirements TEST_CPP_INT + release # Otherwise runtime is slow : test_int_io_cpp_int ; run test_cpp_int.cpp gmp @@ -616,6 +622,7 @@ run test_rational_io.cpp $(TOMMATH) : # requirements TEST_TOMMATH [ check-target-builds ../config//has_tommath : : no ] + release # Otherwise runtime is slow : test_rational_io_tommath ; run test_rational_io.cpp gmp @@ -624,6 +631,7 @@ run test_rational_io.cpp gmp : # requirements TEST_MPQ [ check-target-builds ../config//has_gmp : : no ] + release # Otherwise runtime is slow : test_rational_io_mpz ; run test_generic_conv.cpp @@ -633,7 +641,7 @@ run test_generic_conv.cpp [ check-target-builds ../config//has_gmp : TEST_GMP gmp : ] [ check-target-builds ../config//has_tommath : TEST_TOMMATH $(TOMMATH) : ] [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] - release + release # Otherwise runtime is slow ; @@ -657,7 +665,7 @@ run ../example/tommath_snips.cpp $(TOMMATH) : # input files : # requirements [ check-target-builds ../config//has_tommath : : no ] ; - +run ../example/floating_point_examples.cpp ; if $(enable-specfun) { From d98d1ccf7d3ecd546c08a84d3a9222ba95eda9b0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 4 Apr 2012 17:10:39 +0000 Subject: [PATCH 160/256] Change max_digits10 to allow some headroom for subsequent calculations. [SVN r77759] --- include/boost/multiprecision/cpp_dec_float.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 91a82f24..5b08ee23 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -40,7 +40,7 @@ public: static const boost::int32_t cpp_dec_float_digits = Digits10; static const boost::int32_t cpp_dec_float_digits10_setting = Digits10; - static const boost::int32_t cpp_dec_float_digits10_limit = boost::integer_traits::const_max; + static const boost::int32_t cpp_dec_float_digits10_limit = boost::integer_traits::const_max - 100; static const boost::int32_t cpp_dec_float_digits10 = ((cpp_dec_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_dec_float_digits10_setting > cpp_dec_float_digits10_limit) ? cpp_dec_float_digits10_limit : cpp_dec_float_digits10_setting)); static const boost::int32_t cpp_dec_float_digits10_extra = static_cast(((static_cast(cpp_dec_float_digits10) * 15LL) + 50LL) / 100LL); static const boost::int32_t cpp_dec_float_max_digits10 = static_cast(cpp_dec_float_digits10 + ((cpp_dec_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_dec_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_dec_float_digits10_extra))); From d873049821ea8ec31ae34a2bc64e38b4a98dfc6c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 4 Apr 2012 17:14:00 +0000 Subject: [PATCH 161/256] Update notes on comments. [SVN r77760] --- doc/multiprecision.qbk | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 4d7e2a49..5f0f244c 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -2094,6 +2094,7 @@ template argument that defaults to 0 (meaning keep going till no more space/memo * Can we be clearer in the docs that mixed arithmetic doesn't work? * Document round functions behaviour better (they behave as in C99). * Should there be a choice of rounding mode (probably MPFR specific)? +* Document limits on size of cpp_dec_float. [endsect] From 19113e841a5840cfccb7d090c786ea5487de4413 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 5 Apr 2012 07:54:09 +0000 Subject: [PATCH 162/256] Correct logic to detect when string representation has enough bits. [SVN r77774] --- include/boost/multiprecision/detail/functions/constants.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 40a13fa6..685b04e0 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -35,7 +35,7 @@ void calc_log2(T& num, unsigned digits) // // Check if we can just construct from string: // - if(digits * 1000L / 301 < 1100) + if(digits < 3640) { num = string_val; return; @@ -92,7 +92,7 @@ void calc_e(T& result, unsigned digits) // // Check if we can just construct from string: // - if(digits * 1000L / 301 < 1100) + if(digits < 3640) { result = string_val; return; @@ -138,7 +138,7 @@ void calc_pi(T& result, unsigned digits) // // Check if we can just construct from string: // - if(digits * 1000L / 301 < 1100) + if(digits < 3640) { result = string_val; return; From cd398028e8af2c53f283407bf5562bbe0889e849 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 5 Apr 2012 08:22:20 +0000 Subject: [PATCH 163/256] Add static assert to protect multiplication algorithm from excessive limb counts. [SVN r77775] --- include/boost/multiprecision/cpp_dec_float.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 5b08ee23..cce91bc3 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -2208,6 +2208,14 @@ void cpp_dec_float::from_unsigned_long_long(const unsigned long long u template void cpp_dec_float::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p) { + // + // There is a limit on how many limbs this algorithm can handle without dropping digits + // due to overflow in the carry, it is: + // + // FLOOR( (2^64 - 1) / (10^8 * 10^8) ) == 1844 + // + BOOST_STATIC_ASSERT_MSG(mp_elem_number < 1800, "Too many limbs in the data type for the multiplication algorithm - unsupported precision in cpp_dec_float."); + boost::uint64_t carry = static_cast(0u); for(boost::int32_t j = static_cast(p - 1u); j >= static_cast(0); j--) From 426430a233922b452e92915e96dbc513d2ed7b62 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 5 Apr 2012 17:19:57 +0000 Subject: [PATCH 164/256] Fix MPFR error rates on Linux x86 64 [SVN r77782] --- test/math/test_bessel_j.cpp | 23 ++++++++++++++++++++++- test/math/test_bessel_y.cpp | 14 ++++++++++++++ test/math/test_beta.cpp | 11 +++++++++-- test/math/test_binomial_coeff.cpp | 2 +- test/math/test_digamma.cpp | 7 +++++++ test/math/test_ellint_1.cpp | 7 +++++++ test/math/test_ellint_2.cpp | 2 +- test/math/test_ellint_3.cpp | 7 +++++++ test/math/test_gamma.cpp | 2 +- test/math/test_ibeta.cpp | 7 +++++++ test/math/test_ibeta_inv_1.cpp | 7 +++++++ test/math/test_ibeta_inv_ab_4.cpp | 2 +- test/math/test_igamma_inv.cpp | 9 ++++++++- test/math/test_tgamma_ratio.cpp | 9 ++++++++- test/math/test_zeta.cpp | 2 +- 15 files changed, 101 insertions(+), 10 deletions(-) diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index c85bd12f..f5b70f1c 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -53,6 +53,13 @@ void expected_results() // various compilers and platforms. // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*J0.*Tricky.*", // test data group + ".*", 10000000000L, 5000000000L); // test function add_expected_result( ".*", // compiler ".*", // stdlib @@ -60,6 +67,13 @@ void expected_results() ".*", // test type(s) ".*J0.*Tricky.*", // test data group ".*", 400000000, 400000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*J1.*Tricky.*", // test data group + ".*", 1000000000L, 500000000L); // test function add_expected_result( ".*", // compiler ".*", // stdlib @@ -74,13 +88,20 @@ void expected_results() ".*", // test type(s) ".*JN.*Integer.*", // test data group ".*", 40000, 10000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*(JN|j).*|.*Tricky.*", // test data group + ".*", 70000, 7000); // test function add_expected_result( ".*", // compiler ".*", // stdlib ".*", // platform ".*", // test type(s) ".*(JN|j).*|.*Tricky.*", // test data group - ".*", 4000, 700); // test function + ".*", 7000, 3000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index 2ec7595c..68a94851 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -52,6 +52,13 @@ void expected_results() // Define the max and mean errors expected for // various compilers and platforms. // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*(Y[nv]|y).*Random.*", // test data group + ".*", 200000, 10000); // test function add_expected_result( ".*", // compiler ".*", // stdlib @@ -73,6 +80,13 @@ void expected_results() ".*", // test type(s) ".*Y0.*", // test data group ".*", 800, 400); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*Yn.*", // test data group + ".*", 200000, 70000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index f2983d8e..73e33f04 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -66,6 +66,13 @@ void expected_results() ".*gmp.*", // test type(s) "Beta Function: Divergent.*", // test data group "boost::math::beta", 2200, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + "Beta Function: Small.*", // test data group + "boost::math::beta", 200, 200); // test function add_expected_result( ".*", // compiler ".*", // stdlib @@ -79,14 +86,14 @@ void expected_results() ".*", // platform ".*", // test type(s) "Beta Function: Medium.*", // test data group - "boost::math::beta", 160, 35); // test function + "boost::math::beta", 260, 200); // test function add_expected_result( ".*", // compiler ".*", // stdlib ".*", // platform ".*", // test type(s) "Beta Function: Divergent.*", // test data group - "boost::math::beta", 30, 6); // test function + "boost::math::beta", 200, 200); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index 3a31939a..291361e3 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -65,7 +65,7 @@ void expected_results() ".*", // platform ".*mpfr_float_backend<18>.*", // test type(s) ".*", // test data group - ".*", 500, 100); // test function + ".*", 500, 150); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp index 2f687c64..7767b46c 100644 --- a/test/math/test_digamma.cpp +++ b/test/math/test_digamma.cpp @@ -48,6 +48,13 @@ void expected_results() // Define the max and mean errors expected for // various compilers and platforms. // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*Negative.*", // test data group + ".*", 20000, 2000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp index ebe1bb03..7ba717cf 100644 --- a/test/math/test_ellint_1.cpp +++ b/test/math/test_ellint_1.cpp @@ -48,6 +48,13 @@ void expected_results() // Define the max and mean errors expected for // various compilers and platforms. // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 1000, 200); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp index 2642dd03..534cbd84 100644 --- a/test/math/test_ellint_2.cpp +++ b/test/math/test_ellint_2.cpp @@ -54,7 +54,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*", // test data group - ".*", 60, 30); // test function + ".*", 300, 200); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp index 03d9c363..95fe73e1 100644 --- a/test/math/test_ellint_3.cpp +++ b/test/math/test_ellint_3.cpp @@ -55,6 +55,13 @@ void expected_results() ".*gmp_float<18>.*", // test type(s) ".*", // test data group ".*", 3000, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 10000, 3000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index 514a7f1f..42c2cb02 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -75,7 +75,7 @@ void expected_results() ".*", // platform ".*", // test type(s) "near.*", // test data group - "boost::math::tgamma", 80, 60); // test function + "boost::math::tgamma", 200, 100); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index 78493503..167b8f31 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -58,6 +58,13 @@ void expected_results() ".*gmp_float<18>.*", // test type(s) "(?i).*small.*", // test data group ".*", 3000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + "(?i).*small.*", // test data group + ".*", 400, 200); // test function add_expected_result( "[^|]*", // compiler "[^|]*", // stdlib diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index f4e87f83..fd2b3e5f 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -51,6 +51,13 @@ void expected_results() // Define the max and mean errors expected for // various compilers and platforms. // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 20000000, 2000000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index b4b41a02..eb91e02d 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -57,7 +57,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*", // test data group - ".*", 1000, 100); // test function + ".*", 2000, 200); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index 39d57132..010c3762 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -56,13 +56,20 @@ void expected_results() ".*gmp_float<18>.*", // test type(s) ".*small.*", // test data group ".*", 2000000000L, 300000000L); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*small.*", // test data group + ".*", 30000000L, 5000000L); // test function add_expected_result( ".*", // compiler ".*", // stdlib ".*", // platform ".*", // test type(s) ".*small.*", // test data group - ".*", 10000000L, 2000000L); // test function + ".*", 10000000L, 2500000L); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp index a37dd322..1084d843 100644 --- a/test/math/test_tgamma_ratio.cpp +++ b/test/math/test_tgamma_ratio.cpp @@ -55,13 +55,20 @@ void expected_results() ".*gmp_float<18>.*", // test type(s) ".*", // test data group ".*", 4000, 2000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*mpfr_float_backend<18>.*", // test type(s) + ".*", // test data group + ".*", 20000, 7000); // test function add_expected_result( ".*", // compiler ".*", // stdlib ".*", // platform ".*", // test type(s) ".*", // test data group - ".*", 1000, 200); // test function + ".*", 2000, 500); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index fccc7e65..e9db0af5 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -54,7 +54,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*Random values less than 1", // test data group - ".*", 5000, 2000); // test function + ".*", 6000, 3000); // test function add_expected_result( ".*", // compiler ".*", // stdlib From b424123c9d5344c67865f79e9f7dbc573bf88d5f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 5 Apr 2012 17:20:50 +0000 Subject: [PATCH 165/256] Fix GCC compile failure [SVN r77783] --- include/boost/multiprecision/tommath.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index a6c9256b..ece8e039 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -451,7 +451,7 @@ inline void eval_qr(const tommath_int& x, const tommath_int& y, inline unsigned eval_lsb(const tommath_int& val) { - return mp_cnt_lsb(const_cast<::mp_int*>(&val.data())); + return mp_cnt_lsb(const_cast< ::mp_int*>(&val.data())); } template From 43a86370a56bd49b858134a246988841b5e74083 Mon Sep 17 00:00:00 2001 From: Christopher Kormanyos Date: Fri, 6 Apr 2012 22:09:09 +0000 Subject: [PATCH 166/256] Added examples of generic numeric programming using built-in and MP types. [SVN r77794] --- .../generic_numerics/generic_numerics.pdf | Bin 0 -> 98380 bytes .../generic_area_of_a_circle.cpp | 45 ++++++++ .../generic_derivative.cpp | 79 +++++++++++++ .../generic_numerics_src/generic_integral.cpp | 104 ++++++++++++++++++ 4 files changed, 228 insertions(+) create mode 100644 example/generic_numerics_examples/generic_numerics/generic_numerics.pdf create mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_area_of_a_circle.cpp create mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp create mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp diff --git a/example/generic_numerics_examples/generic_numerics/generic_numerics.pdf b/example/generic_numerics_examples/generic_numerics/generic_numerics.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cee1fb74db16f8a5ea552fb10c32a77af1425982 GIT binary patch literal 98380 zcmeFZby!th*EdQ^clV}2x;v#irAt6Uy1S*j6{IDkrMp48L%I==?ml~a%cE~x-}k)l zxz2wFuDNEcF~%Ho%=*pPi&9BUf`NsR1Dqf?988U@;oatYG__(DI8l9842-gv z9F!g16Xpp~Xy?hGwW|yL1u6VVbxzB`^pZAhu*IJ|LqaG9WvLY!;qrpCPUV!cnd)2%j3WW!goFLS(S-m2Roa#EoOyjhd?ieM>D zApWVz;f(D0Q~EBXmxgmNPiElm6IXM_c;1tGw;wnM>IeyAja9|*9}l*+4iNSoyxt+@0z<*o&< zAiO&EugP?g-b!8YS56tu9#!cZewbaTWHuaZ#$MgeCMZUjP$L%)V$k{WMywyVPQ!WW z!XHvKY}Kxd5feR#yT04@ns)aHLPhQdfQ4Ydxa=HO9)4KH`Q1T?Lgsb-)n`nFjcM2Y zVxh7~^k#r@SDa=Ru4pY?`Eqkt1g4;-*x1;gvzLFcB1b&QBCFkNIF1d}3#1a>m z{3Ctd!aZ)YTM2;&-mIPOE7>gg@Szd}Sq#|_0q_*m?jU?U^f9>ilzr@M0XZ<=42rug zIV4SA$EcIcXUo=Mse>)4vm8LAFZru}8HEdx zr|J<`f3N!2UHC^;J`NbFxNa|fBwy$u$}vKDbi$)RJkrz?xUprG1f0dQ;@E6-BaY}G zD&JNgiy{1B{~zYP!U*j2hn(KlLVg~MhI5KuXH7HS7*dwr<1s%wGH+_7I^LZ@K6tlw zXIBX`j4LvoY;3=(w}*az-VTdlJNeFzNYy@(Kq||AYDzD~)_MoJ3>x;B9c-;qs75$4 z@;hPp_3Au^>>FsLcZl8I$So6JzBAHRCpG`js4WQOiHQs17$k+OlH)xZ)g&iVF`e^-Ez8<8b2nFNvo%*$iKY^vbG=#IrZm8`#4sonr;O62Ud zhf~d~^n4a9y#psaryFizI()u+LC2Xg3r>sLg`WuA3lgh-f=DfqQMVI$T&Nr~oDD-V zp9UGEt$75cE%h?A01B1vaQN@m%x7M6Tj^81H_pGYUcM8}4G=Nl+x-sdLCirm3&9hv z7&3GuYrP7gYY_zLl6VR}##4rXWtTRyMC7+)1JN#vFYI#EQEgw>gx@}ZZ&d5HMl6D# zEJR`_&|0S}`r!=m!xEt(`yQ>mK2$o4qgYH?@ZBd2>qALWRB(ONO%pdgeaaZh09B3$ zw_6Oc0_)xa|1zq$*T!4=$s1zd5=wYl3*F})EWofCDVUe0Cc!l8d)twAgxbq_rYJYH z-H|_kY^lN(s=Q<^I^BL!KFq!=DbO9A*c$A-`alY{sfd0>m~8fjIfxKkf3Jce>Q?E! zUy!u#hs`8^4)B|?3}co@0kD9Yq+)4J`jAcxl9vv`G5PGl6YNjXVy?+l$+g+we&F)O zJeUt)engBvaBmad;`rG?IG#X>`5CE**L+U;{ONOxGy|T9BvsJ&VkrKhMao*Cw7SP3 zn)Hvao4#kBasEsTUaQ1DtY$8F4^snn-YcfyCvKPuHA8yo<8VMcHY?fe^HI)@Jiub8 zEsH6Bc=^M{`u)Se4V_hG3a9K73NF2c)jVWXrav+LlD4)cz9oT5$9q4yHQCYkqeJ;D z4?=nWSc6-Dv&iU)^&fQ;JPV}LicG5I|Y0z<$#6rT03xm3;F&J@6;WMpOv&-BXH#>v#i z$q@jWY*pZyR7@RhogIu#9RV!=B*>eZSQv@gx&d^Ufe9Qu9E_}7oB(ci7DjF!J$RrL z2Ov9uzmG6T4u zgPZ`K-$7tLEFe8p0Kl1^Ny)+1Sk=@CpaU$8m;``H&D6~apa%p2|Iz}K+p`+KAp|Qk zJM+H_Ar7>)Vm5lwd@>C>>XbsK7p_?J?>hW(>p}5p_2F$v`ilLBhvy+~kI3Ih@Xmo?}bWo2kv4E`>+u>Zzt z#6EgawV}XHkvEMkfnb(O`H7pic1sxYoR#H?MfzY{>0fSmoYaByx!|FWsPXo8dvBHw!plyAwG&rG#SDTV zXw9{<)#C|cB$*jD2bGQYZdGa)Z$nt-XNdD<*R-pK!T0nb`OShL9Wjeuj?K-il{(X> zlneRt@?h~s^o1KZ}^uskDfa9d{$ew*U`-G%c( zlIt#hDfRDZ~k=F?PRx}5Cby+Zd|L^D!km%fn_HYP^}t|`szoO zkr(U~;@Iu%6`=U6`uljoQT55z#0(ZYdu5!* z{E;BgPzZ`qIPUemZ#y&{DmTjX{JJ|_&4QHiGpCXv=abYV!ZLNKg|{Emk!p}>Mj zfrVm7LUumsZ}_Bs7oHU>w?k*2%B^yOm{HJ65I?%A`z6WgcKk=Q7{tdzx0h~nUOsL# z2mPZNaQ7^b_>w!=e44fUjA1y0d^cb%-Ybm>uGOns>X`Ro4RL38mVmVU_K&I9t<<`M_~J4nP@ zy9BzQ1Xmn!?fI4|wM9RPZap+`THEHYSIT{tu(H9xY^PLtiPmax-KtG_X0Qysd>v78 zCHV}0RB>H>!$y>Qls{_17H^sR&MWHLn6tK1V&UYD!eqvHwB%MLgDXi#(ZGx0_ecft zM2v$d>3I>CZ#&UPLpp>&nA>gIM}wV0zS;jS(}IVLqb6)$U_@V1zqz#Pau6#D5E)SbpJ}|A3!BkPC>Y{-SLVtm&zYx^lxQZLV@{Fxf?@v&PO)(Fu>HGmsz*!O zmVgJl^-cqmIfPNZ&ipW9a<>bSSNQ5Pi}^}?B&qCHEtqxOKv-bM{nZVzRdI zs!3do*PZBI*9RKzM={dGHzT*5a3hIIJzn0ImjX=Kn)fa3YR5eVu#Jp~FAB4wiq}W0 zd_O&Goc_Fzx)e9;kkQdyUS%H6<9v^l!Lt!QD1K5~Lall*__Fq0b=hLi$;;ZRxmxBU zCSM_6V=MoIPAOg$gnT=6MYD%=fP@rM!b~-olhTblt2&x=x3^0_Sp)`QTsh4td8!Uos%eK50II!@Y2Tyt+WBwodLxG5l%{dBgFXxv0z-%Y%U zc1$8&Vc9Y@(-3o|NtwEF$ZSO}f~=glVU>Y3d4DQkj!K4Z0tb7*S{qj1*4{j3GV{87 zNk6f!vZp~GeFaxTtCQhu1QB*etFs1?0nr2>v7g(Vj7$tJyEK9IGos;Slt86Md>3Op zC6^f1*rd(v7u7n&C30aI;7Hap8rT#+^sW zMX!u0iQKVRwP><@#zIWVDE0lXn^tO9n=5>i0{F(bDl@r5LU0VrVX2=v< zQwra;rQISA-qEod^xq2;p5;i(m51kB#aTT8Wf+y2lRitf~gleN*-W(%6m8-WKme4kdmqr<(o4XxJEBKEXbA-u!r$`}>{F;jl^ z?ATQ5MfGo>sfLuBmvh7tW|9G5ewo0&9oB_T^DVI)|Mhs-Mhw)N9pQFI)-!vyX2j{r(Aky zs2Z`IADRZEVOg@K^+_Z&efq^7=f)y&hBOPB_Y~Gw(N>2*A9&fHc&hp2a~B_9I^`x6lvOg`{KPzU8N#-3`H0 zt8XSKZtK1LX8MzSS0+0nHnA+YHf0T!G9YWVfBDB(LK&(k0u?6KDT1)rTlJ}T*!RZ$ zwS1OREs>nNsbbvtV}n0RMcoP5LJl))^0LINSt`cM8-t>-2I3I#PyF~B=T+S9rx?38 z-K8R&5uVJ)dT$*PIPY)4ML4%!4ehbJ2L{<|JM|Rc+k}+AUf_g?`Am{Ez}UULjKd+S zjdOyt(6q0fG-#H7q3l$vMS)*lxA5wrt2^~{3>LYcq&iZy>()k{DQ+jf$(zG~7(GNg zxl&Ak!9O<7&0uuMwW(N~qpeZPzoYn&$3-ellDF0+)vDoLH8g!xEwgBiqdBwLJEo9` zWDm<-N{P|oNvcRKXJ!!m-5Qq zxx-C<*QmN+`o02%{!_|tG}2pOf!>uVkiT)*-63LzazrwC#Kx6LcA=zIpdg?+!+P(P zkVhorK@6k6)7F`jwfI3(2 z?9W;L!7hITmOn7&FYLnc7hw4d$Na%A9Dg>2{y-Nd2^IkB|6o&y^=~ludsB#qmGd7E z1Ngt6D=lft+7fV~w(e^j*Td(qte{L^kP3VKC@r*!Cgs*{&=W4#F0K}ids<#oYMK~W z)KuQ!{9($yJv6ePMoQb3hFE4(V+J0Olq^sDK?y&7cIX9UXQg!iVYnqXx-NEc^;Fkg zzoJH6FDr@yuCzfmI3up&?O=%Ig+Dq93y~XM)W5IRHR`WHBxFy9m zz!msh%gBAv?YWXh=C(jPE=q0bxjjE`Pp%3-FF_1@`+MuwXkyN3XJl{iWfD&~MqW6z zkE^*6tGE2Hv+G_MdZ_G)SL)hoi|%QbtC&)UO#nN@Q_g;O4F}g1RV*VBJjW^h@{sk+ z5HCR~V;k0S8n|EsM09v=D2CA=hEr$MJ)Zc{kuSH!SPXI_h)yhglTHfg?F!P&`!=k3 zF=<9g&}HVq>!`uKZMLYDjXsOObx5d)v|mt4l^}|Tg@A>{9ftZ)Gy-@>{o~WCbJblW z2mRx62#yDHx7tHy)-@#apzM5>?WCtq$opf+gyQd&ngA<1ec#R`hv+J11PNFe^)0$v zp)+<6@iHE@4Ulo(S_?;%r?cL9D}0yDGFk6Hz+;+yF*5vCd&F$Auje*9gX~f5)}e9H zsTbaM6R?=lyEirFgQ!qv@N<3~2DM_ky8EOe0VjGUKDpYwR>db5=a{ zO*T_*{C9zBDRLHSpF|?9}_(#n12j z1XIaS`W#EorKCxKC zsnVhA5WJCj1A%MI-)dd!lL{t2wyR>{nDXcxeo-ICYZkXd%eAT+9(3@oO1+A-FUiX$?ONRq?N<5_ROY@q@Gm->%v{p zr>B6**KD83hoE{&-=?FB@NF>{9{C@6KT@k>`dD@2BV9U7+TevNY;d+iLAQpT%vjV_ zFaJcHfjO#9Yj)ZwdR-}QdV2QebQUT*4=o}U)h{iqI}x zWtS5jJ(+b;Q=(1Y=Tmd-u5BBi{>cydQ&eD3 zzF}y*Ik35YjeFsA6mbgcpRDN?W@@c_H&x=5ycKLX!|PWtQXiaHZCe9}-fHMyQv`!4 zM(g531uXdG)vC3>kwSPYSHFK&m>W9IA2|&vMlSw9`Rd^Ww&Gy{T%hh@TJxJ_&YfzN z!+eVq$>m+rB+3SUkAsK`XLLK&T$sJfMw2cr38MM&^jw_Nkd;s8(1thzilh%QK-$(W zKQIwbiUBH|LX?+Os2)y+VyXw6h|BYUX(_}toLCY~c1;sq+7F7*F|3G8ozgbhcwt9K?kaZV)^C< zfkl<178XVThAWS75v^0r<7Gw9r2kUEXh_0&C6Qw5<@p!NC*Nvto=hmFF8Xf)i^4J} zjcplYDAA?cLCQCUm}}lM7rTqp1Zqs=#C;Z%Z;Q(52}c+@+{~ARax1gewAmu_%gdJg z8}z7L_L^iz~AxgF3}02zW`BySqbQY>Wyg+mS)t-I}c) zAG|CCw4NufxU4%E-kTZgP9rdpF{t||IberW*{So`Hz7AGsD00_LtCKkH4w^q(0~OC*?2VKZ%?y zER4Wo>R-=4seh5Oa&Z8Urh&?Ha&j_q{mV{lpoIy@kUIZZ=s(%%58ZE=0qGO z0sQm)({=u7X}@~&@80>`)c+m-@7DTPoBfmf?~(A=cmV+B@~hKw0y_aKaFGs*gM3yl z?tgXY|68sg9*_gccy=Hj9^l#@*zf*voLm6lIP|YLC=7BSK6Z9?VBg~cZ~(_ZZjhY6 zXrFn0=>UBH9REcJlnvqmIX2+!QjpFdpB*R{L=TevtUD+VP#EO@T{ch{_B?*02fHVY5-Wa zziSCpW>7lF{n7zwv0rq+@^SwTgW}J0&$SII|1%#CQ2uimln#>fY&UjJ;H3GxMnQT! z*TS<8qWx87AkDvY{~ZR|=K0;T|Ewd3_BrjBen1{j9Fzw;$ljnZ(C1(Wtt&zQ&pCl8 zeoY$B?4TF_B!F5YFaj#~-}U%QCXkB_Scf1c5b>Yp^RG!9WTJmH9iW+?O#l-4J9{pW z*xwECUuOC{tG~k_zF#K!-E=rOIQ~`SU;2XD4~Xd5{VEVJi~nug`Ij7^431|9EH4jm zLIv6Qx!pX6f3*Q%J^X6JK%0T`2Zcd&|7sJUIH;|F=zh1OzvcWY2AHPwT!oGoxtw(wTMd9OrmCyLLP zlVYJ@Dg99`f3yTjDaRp)vlqRT7lXot0tW{#n&6|!l4=?sJxV|O^klHVoKzG4Fv8Dv zCdhX7^Vk6|Ev&FpNx_Z*6P+9a8@eBI@5RR%LsT#b>Cgb-bV!05sKK5uofo&rz-$PoPxNMhMr;7Fk)5HD~; zA-I&K>QSJ}c?alFqwMT^R`>27V2@uxgH@!bM;;&92~T50O9+!nwSxuNzxP~!DN0K0 zhX)_-XAJQa7ho`s6?hVlgK>6sh4bF+HZ*69Q3j&ZPY7ZIKDE<()m(@h@md^@ImoT^ zNeScgD)f*ZnxHSwkkSaQFDyRtDk3o~4dHGe!ijk2syUbj5%c6UOl0%wx3>0MU+^G* zp<(d$oK@e?cNho6j2!s&K?D;gnS+FyX{-@aoMArcz=wf84z7b0%=>ok{iNM*wxrBZnZCNZMBua)i_ zGhaX;g{A4(+(q2FEg_4Vk5kI<$vLS-2sj`k3$^r zpx7s*h-t_S_DYz=4`UJ9KkwSrB^~eZeio0*mz@l(0&;Bz1<}vP`|)DaZ-E&Xei!Z9 z_WB4d;=_k`7TU#d583xj1t0NWg0+W-%0iH>J4^t;=xHh8zI_XYBz=-QFUP)@f2y0t z4Y+n}d6FuMaFPIb@U3jGIkKhl@qHcm6k`MB=lhyjYz-S9`S{86=|DsUKy!$2@B6yr zDE4XP^l9LTf_ z2&tFA(?W5C|EgF{xYNnC205Cbb|@J45U#&}<717a?!9w8ZF?{V{V2;XvWI?Hxat;tUNbpIu^VL;~igKLFp z5T6m7PoMm_m!TeS{Yrh~8dD=` z{ya}1FQVewWbcFF@iZI^Pe!@k4AJ-o+}0_lHj4g833vV3aC*79`hv z4u&vAR%)pei#xEO6HD~EV47=o(EMxzHc8$hgX_7p+)FsPp&`C?gKSPdo)~X2j{J!( z2QxgeVxKX>9gsjj{;7|`cWJibn}~JTJyrUp%I<2zO8+~bMy3-eR<0ALqMFF=&?Rf= zDLCQ=$wj0u%}g|^Zx8l&o>r06PdEDKNEm1P628zYxZ(z}e<@WPY~0zAAmFb3p5oCL zc?N+g<3=>*Uj6d(*>xUH5p=cqe4ZA^+1kQj_K1+JjD+og0-^B(YYifDxNp$I^=UdE zSG8plw{h2#zrl3M@_4-qVfKcilIc*ed4uNGI5g+ zU1Cb#I>Y0E9&|6-(>G}GVm9)93;a_Ds&czD7-9B)GpeVYWkrOSu5j5riq}qfA$4rN zE@N0Qf-!~r*s0Fv(+t__!}wIrBGxDI#AH<|lWuN`T2SXvnKPkmJ#BU#UY-#>q%an= z{I_R(57UJ%TusUnpKixr4B`eNa#4T(3Z7dLrZkjYI)4iJNb)Z9J?l;gnKhccOYi3V zXNXU0LN=&N`E&9gP*{n48aikDcJsf8S(l5m`izwmoa<32camyq+u z8Qcc)D|!QaUPz`Zc4AII;@sA+;#@*Ql;MC&JvI&Pb4@-KCv*D2k1NMTwhf$4+cZG!Tzt@oRZ z3%sa*)*q2kQ2)%0Tr=~xK^w{z-Yu1p*L&2N#CzeAvf~$biIcWHvgN|W#aDI?GhAYf zP{5RJG1b@ej@PPHq^;03PK?HSA*qvR}?i5t*WoDqgk(Lclx7T=wvn02503*E2nkWjWP=sX0ADr#wUIr?M<7V;OSH7lna=>H1xR$vNkkII7*V?r>hUK7s-K>Z86K@N+9;R`>}bsNnrgg z(mmv5HinPEI@q^bU8E*8Z82y90~>0zHuprmsyru%Z>c^Mvba;l@zVN$#w%KePgZUL z4U_2-Yt{$zuWMpInKaIGi8L2$5t%HQV?Zl-sg{V3zofVQcNkSPtT-ar@ zCD9;0SX%F*%EU*|Y_&yXP{A014zwbg8&*{5o$A3`h38Te92g?=6->&9eapa2xRHuI zlNUu}b&E$kH9K&3zF=+1@udSB&&OZ3l9~lP(qrO^O|iwm^+Wo>xaZI}w%J%AkDVVa z0{Hb2G}kT*g`1RdL%dx$kOF1MMcO`@NZ4jQg7TmNF(5Fs_pABktS3r#>V93-bW`~j)AlZ}x!mG@ zQOPQuLPRTDy=PuFk(tCPaBPsO$9YT&ul#|mV$l;ZO;VGc=edZ#PsC_^V;JmCHANGb z8vC>EV<_}zi?rrTDG1K}5K#`2U{1^87>PIfRLwsVUEh{f=X3l>U(R6+-z@MX3@3#{ zlJco?0b{`VVmIZ#taWO<>O;dW_N`|9YpTq*Ly@kW_Wf4QIk_H;5BKf15o!FV&_`y0 z)a7AnYt`w(dG#2~{-N750d*UMD(nE#SYF@krLouos|L;d)gf@3i!a2j!xX zncAb`dLWkq9p@Z+Q;6p#~VujXSAC6FSYkZ;KT)s-XR!MTR@w}Wmh|kt; zd8LNem0`Y$(4CzmHVfB)$tieqz+uDh@t$r!(@KHpr796Z1L~^xPYdr))=mtk4#!;0 zU(99MjM@q&CYKDvJV`TV1905&sFH#uTdfdMLyBBW-o`XKrYy#-nrMnm7sGzk_Ci-6 zN{Kd5Y3?My(T*Qt;StU?J325wyiX35DpCBt2<=__RbL?Q(3M81FW#4$0 zN4#^F{35pzctAUi>Jbp!?3tbRb1G?WfqeE8)!C=b+ke!IkPpz#PT@%C_2)Ng@`ELXo%2 z*n_Al@ZqUDHNE+#aHn98$^xxi;l)9dSE<6dSZ{p@Qqt?%XstP9^7Xw1KC7^D&8@0x zJS%LJksO^?ORiNI>kUf7Qmd1pb{AROj5r;~lu3y+#S0eBhr|%)=E98tE`m)-pLw78 zt0~3IZ}$`AuNzB{J?B3kJIx5QG+*r65+pBg&=do7exxWBp_bL$ZObtXBL&NEnta5= zDl$%?Z#gWmMfULFL)9WP_`x(3F5B?6y995R`=c&HieRsr8HBdnRu%#pHr@6}N!3T< zQ#;FCdWI}VPSd2}{RGn*xz}&mxhga&>X#ZyGBIXaoco8tIq)_*_3vNEe?2o2t6;yD zluRSIflQGbfPD`U1U%wD<9~=QE`32vxlBx-!_x#^-Ph7GA+xI!4};OVVa%_7NWc0u z7ad1B%Q_FoDODV;wfgkShsBcX8U5`wsbJ=U-BichnJUNO*~K& zL9dk3?+0so@TnBE)t=?1#65X%82$F#<6R4Qjc}pRMGGLGe=kFj%kRbV)cHy72=&(a zp>w0eDSZU}SEU!_7grzSG?>a61m0klI-u-Nx9G5;BsnP)8rYiZ--ZpF@-WcPSIxN>fB2`$2_ zfsop@8x>f0$3w+rO0aOVp=M1_}gS4T4HJSXDA>qW~vbd?U*lbliKt><1d-IA*KU37uY?a))`d;Jw9hCA7}nu8}9= z8LHBysCD9{#5ol_LF&4YDcUsCEdJ>K4D?o zh!`go9b{cTnqnB!ke~sF*ncT)W^lJn)T)jpFa#-4?W+Ro7UR&I+e^AC243L{JM)?xL&)i`JUMK|t-GzvmcO<-0% zmlC5jua)Z$Bzwr!-bc@*Wj@9JuyTD}o9K@H= zTGdlyT0LS{6$9d>aBc}7_?+zRJ)BpW+7v=$xSrMIv||UB=lorMQ(%{G{qo%@$$xsK zJ7Cbe&(XZ~jz3<6Q5l3-UnW&4T`aNO69~#ZV&We>mZDT+Yfje;WsDsr$SA7OLK24= zplqOWrn42+qdu!@@R4v7rNy-heVt$&8E-K!^c0jlL8K7kX5d3Bt{awt*0lKbJ41VqVK?Kzv|&FU}tR0_p&Ubz+QWXqpd@bP)nX2%%~2Eya_qXxhB z9g1lj=~XwJ-u4rn8l_5^(Q{AX4&V>UHCB~LK1?+p?-4WH@xP>hmsH*S;q0fmYVl3r zYmx4jrgAYk8IIEVV0QNXz~Ikbr|x3I((LW*`B^_cbbsN!NqEObDynSWaba0JRB^vZ zzJB~2AE6*R6^1r!Q1z zG81*#W2{GM)9;KJ%89=-1gXiT=oWY!yTV+i70W^m#f$6X)*W`2@$G%MTJANKpg>Y; zE_zEay&Y6eNgrVkNhpTKZ-Do0N39+Z`69hi!GL35_-^`B0~C24_JHDnKQwjPM9e{& z{fcw0jKG}(viPnC5u|1ty!@EtGS*dX619U)iDz|mC99!D`E;?;k2vr7GpP&G&!aQW zN2;EQuI{p5J`+^JwMP`j*~NToZwltWclp-YH|9*Pl^|IW(K#>?|FuQQb$L$AC4utZ z@FY^n!buQOgomnseN+1JW9<}%J$mhZ*3ni)VWn{kmbqc7;=K;Nxv3Yv?buQG%Bv~x zj7@uA8dj^c2e;sswBlYWYHAwS^rk0znRg>gPOFbql^v#Qdoa<52+h)0PTrpY1yXm8 zlSSMH*tq-jEYp7cZ?$jS50Zz;tEMuk#oxT1A(oTax0vEU{xs)M=M=8tJi?=OQistT zz?Q;gGl#!*d3pq|p3Y;l7pqz=rTkvdje7`<8q$%{Q+A9+f7kE^Z;_i5zvV)yIn_lf z(06R0Og0icSKbKPTYd zUlwy0xcTvl-m;H+X*@&?9L%MP2vO$KK{WI;Dlc=WhiuT4SExNiSp<;LT&$$1rQBY5 zGQBRF^4b5s4}Y7aTdN$_b~K3TeT5=T zj!cc5{qD)C*Y#X?RB5z!=`pWD1#{C&?wejcXHUUh#*s}pbE zyW9Juqo@5*+NXsyP+lOmg0G)%^z(|=1dJK#-=<%al=)f^Tlbgz_(R%qd2e zW8B!$!(lIq_~$GJSKLysIAvx$eF&8{SFSl&2WM~-;X>3AUF5yvaPOTjF& zqQ5!TC^*I~mT!g9RhGbA?oP8P)!WpgZ|!oEoT|z>Ex3dEev+A+Q^;7>g_GjV?UiAf zd`T}Wyle)yEX1|^?P3s<-q971z}q>=9j7m?Tn4Whm)hsE?Jan&cBbQw(RsSAzV=>c zwC}WFIEF1sHisJ#@+UE&-aL^<06%Ol$0IxR+nq`>qEos-^`uV+v5W!GOWtt>Z7nh5 z%l7fCg2QJx*u(D>H|#Aaiz1~3Nhabmy=q?7Q@c|g$(Fyp(SvrFHs_&c2)WDY_ekM? z09S*lmUq}dkf8qKh?TZ_F*UMet~6)oa7vog5-+H?>ey3>IPiV6vkZn752kl3`bQi^^ZvBzA-#EfDVAF2&bgbVZYvm z+;X!tQO`z_3V*otivLbC|JL~lP9kEiUv)VTJn3AY3zr2jZ8A?Nn>-{hsEp4KeKtfY zxTiy7Tq&sEyr-Ay;TG4b0DouSw>_USLo|Q97?gZw@j*{0+dU^MDp9GH7UDhTdgf_y zSF{IzXX|4Gg?&*SdxwLnR^#0U-t3p!H1Ju$5?m2NZ|NI~WYWD_IPzJixOx7IqHcX)_n_Ruq$nqcP|^ z802AkKrp=cS+!Uv-oQ zh}~qZDU4`(eQF~CZ$|b4t4N%(?l4#bqjbf^KLis2I|pc*rSi4rKz1V;MmqU*RR}&w zb8HMsm;D))x?_fZ=bySXkk>kDyz6=rp7b1l`Cq1kX8VjPW2d5gb z8?p^#nLyiz7U=?WdrzX1B(nH|i4$gt!y0<&-jYTGAgUp`ofM?z#Udc;SK zMxk*bj1IK608(URDOXIWHAqQraKbekW_cMp+Y8M0ss-KoCMHA232 zyaIp3E2D$heSiF*;}Ari6)j{We3a{#4_n{ootnHyLed<*zQRk5iw!`IZ)SK&i|pqP zX1I(z(w+$|=cQC(AaSh7K^)k|1Rn;$y>8TgzZT7WkMf@B#X20M;rNx&W9yT}b%7Z8 z3&<=x82WbNZ74~ldp9!J9tyEq zk`l)GWm5X&w3Do?Nbx@@1zwFVAA>(?iIRj-vm>_O**@y{cZ(oj1Ak26j^OkD{^{Ej z+u+l{)6@UM**!%G5`^1=F59jyTV1wo+qP}nwr$(CZQHh|&-I+06&hhhkpL>;%^Z*bJ!TQ;L7rqKJ2ECd7 z?9R|;>}kGh{y5|G>Fv;gN5CtJfv3x*Zp^h5T9ByF<}d53CtN=fK_lkx6Jjw~#crfs zD-_tvyfn$Qe}vl9bwo>s_B4#j-+Xmy?WqU-mmw*3MTzljm4G+qd_-JxgN%wX)cKp>$jhCLd zdK4wHiuCRsuXw{<)OE+(#tZ&Csv%r_Zo0D+Z_QgG_Eb@zeuZ_GTYPQei-}xxjoI}P zO@%F4NxC>&Lg~^zVb!vC5!j~>IOl>y12->q$sPT<+nw(92iPbfp-I{%! zfMeL7Yd?C`RHhDg?BwLLufgO*${LVZRxZnPj$pWw47lpW{Ch>zS?MB_7Bl-Kw0d?B z`^jOhkwVm+-xc5y?r@4qmHUm=raR=$5rW+Eqns_#SwPyCHr;xDi=i+#d7Q%N*@wlV zPh&ulezRplsLMcwy79-1pNi6B7&%AB+yiy(uKd>Fej8XfYt6mi#rVddIU6z!9Du(>_bSKUkWlMamnc5lkN zVI2|Y&nWTMALqyQDF@dh9#K$zuB1FE-rw_a9fZS79V0A%@?cYSxvO!s8>>h<28_34z(3G;QENq2o;|EBI2>GbI;v;87gw>yW!n0M(J+NmI_Xm<5lGy+bn zG0zK(K#-ofBf=Z&vN4%R)vBLI)5DC1&x)VV-7ymfB#)aCE$dGOU0|1XRm=k=m*gg3 ztKFT1YHhgtMoZTis%GE5*M&=)v6es*_%V`q&1%qo>s%r-s1GMolf#laAlwA-AEz?M z{Ceq83M_ylr-_t;&}C^D)0Xk+L#JTC57r0!%R#1^r^HExPUl!Xk zR7^gCMrGN?ToJ@(&q;W;p2aH8`lBWmc}}rTB@9nZCo7b=P zayDINvnMl11ufLeIEj6qJE(+Q?*J#S>^sKCaO!S1@jcMMgnX6;$F-i#bv+Z&1+8O> z_VId;cpsw|a5fLZuda$P>c-+VaLLuV*uOUF@M{r-c)JyB6MlQ}-j~Oy9KFOd2m^?q zR~n=Nw+Lb_v`tMt$A``wKZ@Tge9e47T&y<=@Qa>LuKRG{t*w2qBW9gB)~%$v!z3g8r8gDCs9;^mmWdX#R_cUx-^1DTe1w;gQC*J)D9zG32Y%@- zPB@+tYZ(jEyqL6~jIn5!6Ko^s2D#6cZ3?6zusvLtOyuhe`Tb#pLD7@-D`6FG%;gP2 zvvVAtuCEmlqj$VY4(sYoB>C&feh;7Fk&nu>5P7k@A20ina|`<5TjidLv@lBst>O~; zHu|vb1>-#n7NppvtG*jtnMJ(&MbY6*G^Un?kh)sTx-&)P*XYdj^v1N>e^lDSnt`z! zobX#b30kLrz_RbR7EMbg)o`86#s>I83Zk3GebCAbkD)FK0YSXin|vwd;BJWL_fDHSm4(LpsGR%BtUd)~Y# z?@-zA7%09Jo@}>W=or|_cA!7~_)}d7XsNR{USZnYvFvFn!$x1#GdO#zvT8+SbUJEL zs6M5`59LHBM&OuUQ7=vFw2|MNuCqrAW2CGuB|N5hC1Ao-uyh$rU{(Y)==v6tJ1!Lq z;Dc`N$+sRw=aau7x?uZi70^wggp!8+B#Tnp&TZ)n zWKq%8CzMKf|F3R;Yeb9qNHQ% zohJVwdO)jmn&9jQQq&aL=7fTT^#)#jR;FBydWIw2-%M03IaaJ$c!|LlsZpr*K|l6A zb(rj;5_MK|;101g-LfTn6-o4X8t9XAdSss*X|hR(x(0?S)30bjQ#G`-Sl#y7d6kN~ z5y8ED3Ju;!kqQTlQDhQQ2q>2&x!}=h1&XG9~G2jEqJASm3*R>(M0 zzq3Dt)miCYVhHfgnH6uc{v-SP{K(->_NeGOOz$(Y=!Ohd{)X9%HelcgOqPGXRGwPD zw48xe##~Z~AgvISX{6Ft(5TAPS8pF9$BfR1w2N)GMB_$2R75%~^=c)xHL5iVkIvT8 zne{Sl+kxoWJ|>LWfoMXi8vcpTv2D&!j5F6_qQ1Ff$3tP^dXnxNBakO3RsJ+JHQ5Lk z#5=!>I#6R;WUItmiQ0cG)9)1No^*#NcN$m1;Gr zbIXjVytA}NAmnrXr1S#g#Zu#C^d$cGL}E3xr7bR&Y~akj!GbVGn|YEk*VBnCF{R?@GE-i03} z+>^p5y;{7BIm*Bty0{B#H_37~$V_`Pr}gNiqyvriI-6&8zsxB%T`{YbTH(X;TKlwn zzVG#-?~%_>Y*lTlSvL zc41$n<06vH4>F`m!LywcbLXity6rOBsV?K}1`=-#^wFhz0AsREU( z(rT0=*`8(_k1nx#oz_Mk*oAgZ|WBQZ2I@!`D6TQK!|afr$k&g(aak$p_~ zdyAFRmO0~PqI~q37vCt~o`**ji7*ys812hZVY_1#-nba#)swH;${D<(n@+}+BH70Q zDZLC$T}78}?U5mlo&C*qTuuZXBk%r3RXRP?I7>EdQg1VNWaH&lg?5aedA`DR@r z=$2btyxj{Bw`>2Lo8s8Q&(|CbuePiyyqKzE-P?YPOz+x@20(=#tt=s-RB9v!w+dUK z%{vb-xOZJ;JfPM+pK}U2IwLbEhu(hfaKk;jvd-=xeC*`47BNK)uIXQWA37THW;yF; zpki7j(pmEjG;J9_kHyGY1PV2)$}Vp8j7)KAny;<;Ol*Z+_GH{j+@$58_(rAUm+qB*oCeNdk!+6S9?ybn{ zUiR^|I>^|SzS-S^MOE3EC_+H{yy1=kT}jrZ!pe$ga658?)_l;!*+h{NHHJK%3*vR3 zlW6>C{Vng8#tQypJS{8FOb4-RK@Iy9wl;=^>NQUS!=lC`<15Mp>Uq3e>^C7b z_IV&l`Q@+3(BSuFyFks|r$P2eA~5Few|631yZ_3L*tY5>^Ol$l(c!j2a&oz2`3v}X&jc6O()GVKdE z!IsQXMjgb<_81s%49l1q4~DXs??!=h45%!Rx9kN{8t+reL1v9kPQVfLEC&upbSR5a zOO7gabuMS1PWfOnDjGxwnn~AszFUeUGtT~%(aw@sDlP%BKW~uN5A%Lxp%O{62~s4U zpB{1dU*s^ToA;>A2f(bW3ZBA2`F%HWQSt(R30dhShD?dOBIut43wcK$owK7~IZQ|i zT5}{C{tlm%oX$>@hy<1_t%Xg+(uy?t0mZ@z7rq#FZu8W%1{Ag*5yxa)y zY}VlcYWr}?W}=OenVr8%`JKfyBF$7-7u$SJxAY8rETXnT*|2Wmk|QJey(blUhzjdU zjaJy(m`d|suecHot?5rpPm`=_I=Xv?M~u9a`D`S4p?hYi3{@4u`~-{}=9EBHG^l2>18Xe{IHR5)*d4bJK!o70fa_vCI2;uP6vm#OJHh^o+r<_ z)2Ja|{Z3|$m^6YVIj2YH?i*7rU&XY6T^jh3S$w^!PQ_y!NA{MpeGY5|MAv(;w z2E+D(#Z(L4xxI7r{``d z(0ZuPM@xEaiS~Y9N;-NkoCzL90y9FSnOK}mfYOJ`&s9+t&lyD|u2bjPdX$&`nX_Nt z?izYgDe#6lB3z!0j8&PmiT_YX#|F9&d@|61fV4bK%d?4ip`v)GdMEFB8+fzl!Vr`A zBeIqr0fNgl5Yr&%p;&Tt0}Vs}uxqomf?dzekhEA`gPQ`pBIkPNw=Dg&T-Dne&Z9%ld}4AqZ}}2V)m5pGBxU2oiOGq6jL82bDTp z*V-;DIS#L*Q1S_>%z3te5PGwmiLiL$Jq-G^xPWA$TX&ID7qpv0?o&cwSL;Y8%idx_ z&|#=plOC08Ne^uqZq4dCzTkW?>ax>tQ zoGU*Ak2OhoMwbFoa0%GXY^}Q5+dr1k?18BCo*{ z7!mq}KFd=bsDdzG#x2Hyvv+O);Ul}Dsp0g**D9ClAu1M zMro-l6)vD}nRzl=QBQgT=CW^PxH}XC+tuEM+|4`h;z5x_GLyY*7m5MTLq7(n@D3`Qm{vDiEaWn)4n2Q!^H?4 zyWDwFq^UEHfnsg9eGyCAnNO)Lf*>e~FfuLbmJT@3lvRA1?XE#!ZVniTUZ z#9;u{L~Y=`nfdBii4oE85MzYJn@Lw+%H~O9GNF~<<|XIfx~Cv4U`c7iDPT>Hl}Xp$b5Y5XZw~8S zh^t{UVovI_w|8q>Y4BgeRL9^2&Wv3BR7Lc=JO^ke5vUeA&wIqTb};d} zJtob^x@{9Ucq}7Q>2O^#*h8gXCUDNgIClT;;6GI3Q6Dkw<26Z~!}|&-6aapGp;ugW zBrC}z5k{(sSc$oNXa|vUgQAW{Io2H$QO-6J6P$LOFma^l2x;(#S#|%(hvpLk`qSBn z@yhO+WOQwDE8LHD?dnX3mViKwg@XljK+8KaDoPnJ zQ_BBok1TBeGJ*d?AL;+&PO zjUWHlmZks6kIerx^S`eCB{msY*#G?D4FDVk$4JM>1R(}R2oaHx03`?+fKNg}K(Q@GL?I^OWw_AjoL?Bh7o zc$j5+`>z?31=x_E#59NqB*?E2)L(#*0RUB-C=Y^9NJvUdNGK^NaS^?g`8jNc&`_Y^; zkPyHqL>W1Vjayv`x1+5&Gk8pWeLOrof`7e|5dKcdr>FpLeDgK{L=aE`Pa$l;K1g6^ z{@Vn->5%buKvG+IWxH+k1EANyA_4$v0AS7mee!D%v~7$akbSstbSq1MXP$g}|NPO1 z69V982@C)Q=qLL|_Gwl~?yXj@E)jWP8yMy_a6lW7Mh*ic4}Jkr;IjY}K(FmlR+J7V zxNjt|yI&4t4e|2s@6i_~id2MPQ7`tEKRo|wc0 z41NDT{Hg36xX8G`r(*uujrwh&pd#`D1PnMJ1mKs4L8_v$wm^9nBb{oB4zVjVgf2U;7%g>CQm+5+yKd!hru zv@G@0SCe^O@5+t5Ut8Zd6)^&c-C}G9bIu7q1-5Re}X0LX6*(mCYqCxL}e z4I+lmP!K@PgC77LB;m+Zl*AuEKdcnJ%@4*aFqZxEm6%vWv?@5z<-H)Obu zZVLJt`fYVMt1C{;_KEgf&-Q!uXY~=l|4krEj8p_sreWWeYTz<4`_YQ+2i|yai`%4+;L2>*i@UEwFG_H4Gx7&eHNHyM^z`fLYkrK6Vc7&cgW1H zJ;un(@5Rt}CuCvM#l(P=A9*;r&vBNoanAGY)}GhQ-o)KwyT>L@(D`byC-cvX^Y_q1UDyvMqGMWtix)m*V~?5*n{yeN#zQ%PeR@_ zTm2V6rThFS8PN~pFlj*|xLC@q@Z<0wh;1 zS{FeRX@&|Ib40LeYl`Qq6cbQtLk{3TyRA==h6E*TRY{9z!{uVq^7^Pk{^altf7)g&%! zv=)*Epk8h`%JPk6%PhPSjKFufjS%e+@e6GZAGe;)%+Wp4l9M>x@x<(sl`lF^mYhww z79a&?>=4AAY}$NO1?nfmWpS-IjNg_1c-orsoenOQ4OGL&zT2B{r<%DI^>B0T0HGR! z%>|Pxy;}`svr-2&q0FcJ$BhAf`S=E$X^w#_qt+oZjrPlXbma28tI%i>0@_Tu4~h$k zdbipbG*OLk99!#ja?i$g)zQSv%q@29D{Bwu6C%HPrQ@TS+&Sx2ozzIEtU4UkXGx7I7Hj*96XZ92-`f87o>aiySZQuJPB4 zdxW9@RYNDuZkn)sDhKjVJXetDn`;JQ7e8A#IimFFH1y1kB|H+ziBiYrgLnjvnc3W` zNw(V72*~*mheB1)1gaFp_f&GxMeCR)&GZ90hDn$1CaOD7)y7f$rKPE!P_$4XRXf))CGX2u@zVvxc+L2vSVR{AC0>YK> zqR`R(`xdZqgi>*T$=XpZSmrq9n&=rS=p7i%c~#o#J~_;$mP2uf@0oT^Gwqo~_12Ba z2jpsOn{U}E&hrMpT^%t0^2HDE6(mWvcR0UhPh2G4KdsZWZm(C}wI@6y6jW5O+Ag4U zU|^%X6eqBniC=p*Kvd;2-|W6H$038q(B1Cxzv5Z$NhKtXOO$lgLJC-T0-#BirHRbBOslFPpZf0)T&CXrxNkj@q9={8@xaoK4vfSloEh z?R3ioJzMH*2JV}uRGGL)hb8_y<)g^8YS`3Hq$&I?95R)YDq-=*&aTg=Di>`Pf^>db zlXcz}M$n_vAeIv&9HYr|q)mujJC`HnT@=UsnXU-Jjo{`IEwW|)bJl~T#7G!c@}YR; zzMIg}mVoL{SJKa%DqZPZO67ObN_gsz;_p0qruJ&;84^wK!0_m|^{#Ipq%@1yp9GZ) z_J*uyD#z%DqJEzdp~=GQ|uU zjadeMgA6Z?_R5HY8mo^6_0XedQ`cz=S|Fq@vGbOGwD=dVk=s`_S{goC!s28~pxm;} zxYpCl>K0`m&iEIP{`z4GsUXPI0;kgLJnmDXY+-mPrj+0KYTcq>Pd%QMlQX2a{@H+EYZP zn62KhhX!H`ql?cbM>_?TdAkNEv=<^2cFcstnN8?^r^zW?5Uz8<7f4;ov2Z$TXCK}I zT}%XH=q1^1mK={OsB-8GA)@0*Ocs;JYm2AO@(2DH`FP4s!<(#55+-xd-mV9HcBy>C zwDfvCnAG_F5zW&RFp$7FDGKWrmh3@sFy4}4-_c5^Fk6md-JfW(KSfF6$M+<2dU=jP zB(a9I_7TJ(uK~te)Qcl%TFG-XrW<;Fo1pUWyySsyG=u7h`MwQNH#Yj0qX6I0S0^Km zv+);-jT9fDGpf^EFqck1zith>6NUS#0}v@73frGI3+OI@&Mv|z9LWM)^PJ1=Z%Q5c znV!_Sh*c5hL*toJ5XClD@1pSyEff_ivg(5=31w>g-|lIOD)HF7Ju+ zIpI>u`+2!8kWZ0YYO1S?E4*hbK?axnr8Fb>B{e7ZY0F-kjiP=amW6ef3?Ca%v`a zWtKHb5+_^C?SG*krU4WGlb9O_`M9EJ9kr~Sns73=M2SJI_nd1Y*(#>&HJpC$|UH`Jc_I4sBlm*65&vHO|a4SDqYS>c37r+IXX*rRWDduRRrr> zCAEX%b#ikQ@C4^?MBU$Ms%;IAx)0g35t=?$`=lvbY?+6ZvGJd8l%MMcoXTvdV0g<< z5*jrU+&NOh(*y%n+@sb#`IXU$BXs5PNwIWhW||m95YQ)m#7uSY5#h^tm}0Twwi?6v zMTK_lIB1e;V=VEBCu9sBvX88s@`B(vvX$znklF(^#hdh*vqE;^5ub8s17G5*Y$3wa zu4R;7CWJgT7m}PhCp3+hy&mGr+m<^M-~~e(fWEa5)SyrSpw)@_jxr%XCnFnbdBDxAEbJZm08{oB{3~^;Jx}GzzcaL}Y zsa8Z+-v6DfhR?CD&eGpb@N|RPdYCDC#%cv+aC4&(#;}3+4XG_ol$MkjN~{u7sLyyd z$4@RQl89yJ!%|{qZMJl!owjcQ{dwlOP6?Dzuc4ktVVh;bdiD0~Q)eoE9f+CPa=Mm? zaa(ZRgO1UoEb3f1X1Tz0o*ez=Zd=CY(UsWF9w@X~>Zc)$-jJu?3*RNDK+KGQva|xo zMvjkjuUqb%#z{d%q%P`;!`zH5y8l#C$|oVd;N+TdKUH z!-;xfA?Y)EyRf={tGb6X@-f^au-@Cmd0~9yDi3E+n&3VaO+o zrF$uXteLBCyAO2vfI!+DzvLCNhSN?-3L_y!WNBAX_>1*jRJQK6+vwWrq-R{n~lzp*QXGR=3Ld_;x()?jblli%+x|z{;(&U zKy>?Rjq6p7Oh`o1Z-a37RSN;;t1NjvJ?I*~qL0+cJa(Qzk(L zX)&AFSF;|LCoEXheTuf_bI#_Qx-ku;Ah>|GHt;Hn?K*c1tue|EL+VkqeC&2H-1os# z0M7oXRiMYfj5Ubqh8s3?E3k=~h6`e0<&z^OuracZ4T?Er{RrhS6*5@N{3O8L84rm5{3+yUYv2>fo3()3I{Hb8uEw)YMy5 zMl=$^V&WclZEp6L%(o#|*4m3NEq|sh{~T#oU1=x@@9Nwof>!^zy}CrrZ&_>=Vs4R zXIrkdm1d8E?V|?1kzo%59k}aCm&CDXXVzCg?SDMBnoKrb2NwjR-p&M+b%a=+(7D<= ze*~yqj}M9Iv_9J%bR8?(kT1JEX zeXN=3t7amU5t0mR+I61t>V^ylz3%s0fb;!DcFe{*gTS2_oZ)KVdL~KDa)NrXUEYio zYYrMZG!UDXA8Gg}Vi7W*=3D>t)gmg0WdUxcyIqiDE1109Ga6k}>C%H#&&RatNkRPI zzxEeiM0qErsk2sfy_-t$HK9&bw$nq48PMxF5S#kTEbYmFr^Zx2)kx<{pS=zQ*ZNmb znP)68&UYB}kn(z@-%DdI#$B-#At0DksTP=ev=dF@PF8!sI_-#pj*w7C?R_e!}x zfDB)nmD3KVD+cu*1GpB&wqYSkMzmJB#HT4UsjHnj>zws%5U?v#`n@9Y??^`#?McYs z=?HG~)D{}vh)IAn-Q=|8`VZ9{H;x?}j`7^~4Qr)#1h0c(O5jGI_qeLd)Gnfyw0ekW zK5j39|D!g1n+}*_9p%$*toMpECY5fZhiBxnpqy!3CF3jjPfSZ7S6_aEU*j+VyQ$}i zAUaf`+~s%qO=0%*x?qn`#=PU;4K1ig3=QI!;&XK4emaE9L0kB0$~ju_^)Y zjku+Tm#ot`wG`fvZrc^_Z@(<_{e*z^qw_DJRB;Wfv_?Y`B7HUD z)mAp4;mHSAep88abgvo7$KWRi;e`0Vvhi_`^-1i69n_I1(i9YUTj}}K3$9+2ThH$9 zinx%)S?@OYB@ZN+0!J3bRZP@9-D2T+luF&B=}pL06c3daopX*MXU`=W9WMuiVTCKa z8jUcOE>ahed?{(q_7ct-a^FMG!?U$ z&8o>%gO5A^jhJa&OpiBd%%_IwX|dfwUYUHPx$3g2X@K=N&f1g2|6{9GYXa|QWD9X- zk7}pL4{c~Q@eGs6{K^#K*$ZFCLXkFRMG+I|a;EZ3BVPMQlW8_AX%h8urF}Xx7Ab@! ztg{QeT%~hZ7Bae*x&N@4krV^PDBSN8BpW(TMDu*PY#yd;&xe+iu$efTk-yVBcBrM#n1jv0S^75_;2iPM^_5pIn5h4vO6L;m?P+R zmj&c}>o{Ik`blZ-$6d-zhr+N|!98|Lx@(Uo)vxzDlXTOj@+{oK*OLcIfYe>L0bw{x zPlwVMp{ID>J|D^s)QJ`7L!!s(dn6rr2~u6 zVYoGRsDU=B{M&{+lM%mXr%aHM7Q}V3iZMe}HDqTe(pfae=(OGG*o*gue8<>zWx9%0 zS*xx765zOFuY94g!X=LHaBQUftT;~_b^Dl%&(zO#Wrx{Clm^5C-;IUVy}3oFlAg#f z7zE)o<6<=wEidru((ook!o6#$jH@dimjv25nIVMlX#><0^-hzm;kwVdOLerc5$W2N zwcrn~MY;FfH}G58mLrK|b5=#SSbrqlT=$*gHsj3S1HuBAn{+UwP*0LP()2^g$%bod zCpmN%&31Wu&LFzC{IMmv9=~994!_%A7HC+QjWx-}1eFo@%%RpnF}qp@<1EGfJk9jp zfzlP2m_QS@>?KM5plgzQ=3$LMwORI%-9A{sEGFxr zazI-;e-ZLq-ec%r1@_^c0Sjyqvk(_A=BiUy*Ja$H4#a*J11`iH;(gO8c@9w&{2Hde zdM*s*VUs>zw>y6_eQ+?egDPT&LL?S;N|JFOL_Y_FcOB(~DA8TI1F%=Al%^i;)-X5} zqmHQ2K4bJ4Dmrfdu%^-w*<}`~2xJvymzMtxW$cdpeF^FiBQ?ciW*5Gnrj4(f(us1D zs?Cx+K;=ZFWMAq3k}t$mCy`MigB`{VTovoCP0BA(TkdgSezJ7V48XFykro{y*7rXq`)0!)j*znaL?@NY|}0mXs>xgQ?P(eU{vn+ z9Yr@5&?ZJ~-Zh?&G(u$DbA#Bg*{En-E#wb5BSOMzwFM=-%GMiJ+n+4SSO z55}q>C_gu=on@q}93ErXI)3n4P8UcM_fOP8J`@$-cj{+dXp=Ri(IG2y zPB>m~z9Y1gtzrQ*dCX3WA0yT8OC*$*G#2yK&Fg;Y*E(k|6u6vUu1(X1z7!ZRp9kB( zK`!TXzLk6}_QWp276}{`b8{$sq?8Shq}gJx!p*=L*>A9^o_~JLrKfFms*mKfdkIxB z=cyUgZ7w(2B~=&2<}QwzYP7XlEy@#V1ZI1Jt_mZMC~jZa*YM+0E64`wA~erG3`Gf{clW5_pihF|3B0IkC5np*y(=~5;eAW z*0-Xy`;S5FR>mey|Mkt`KLV(@g|C`(X2h;vWX^S=i2|ML9HrJ7qg89V%&>Tad)WGrNCXlrErFPjSW-$u~8ZA80)Gi`qFwrnh^ zELoLt2X1)Yc9*B~hY=^QdB#?BQxrFsSGTPEwMbPEuGUzljG(+ue7W)d&HeoC`Ij0U zXCJ@y^gemU+&v14++LFs1C4U>HzP#EAduJ3`^z`oHzk4s0RS`{?9WH9Kttn*0S5Pu zMRwc}}Zj!3b7q<|hQ;)V&WNZ|_%DR8^Mr7XbnR7|8fXMaW|u zXerxUPtVVvjt@QDFHgLEDURHiHmwp14D0k(6o57i9-oqkh~#Y(JMRGUKEOW<5dhdU z3Tp@%3-JgBJdJ>#4r1h2m&WaQn+_wXDlDwFwzjU3OatTmxMGY9;x1T!3!nsnX=oB0 z2<)o>hR*3F=qsO8Y66tbH8B4dDUBc>L)VlR0sy*CA0GlJn)zPDk3a{&%E>Q1hNlk# zl>e)^>Nhn2e^1sPpkScjx9!vLdlC`mesc{IM8KmU3-O08hzbBIP!K>Q<6{7WHwwQG z6Y!__3`Ufw{$++|hOVs;@O|4tWM*r&ZeMI9JW zMbN`T00D#Py!LBJUk3r9<>rUbH{;Tu?}HHNmxo^;g6;_&wvJU|2newA6n0+zw=ghR z>^HDofDQmMFRG|0h#bHH9^f9hJ^Tww?bG0Z2Y?gb#Pq)@L z=c*nVOoVXn=U4uB+W^s;irE=f(w{f!7qOy(@EgEiz<>dO08<>FPf1A$37>=n5aOpb z*O&5+^>eqZp7Bc7<#)0W4k!X->`NF(v%5F^?JFH-hu3lt{LK|akk}=M0AS}g>Q_4t z1R=;9`TJKVV3+i_b^Z7F_?P|XH#@$B75hhX<}-ERm%#NUsQ>%dOz(6ZD{vbYnAk-S z;kViX^xZNa7GE!|_0(6=nQmqcN1ngU;8aWODTeNDMwbny8uBsFFIpcXZd14M$(6B= zevb}h2qQe?yTi3kg>TPyysi@bp>K!U%xcmn5`S&_!&M6w1OoD>IlurZ0l<`&*3?(w z3Pev9$&XL|swRNIr&kmkpD>EgppF#a@2DOC%DM1IWxW9s0HP_%1oSz0`)RZ_kjfht z`sjd}6}6rjyp`|PPk+687~fu;uH`#?NHCW^gzXb=AC9>n!~}Fm^*Qa4?t4I2cUN6Y zFF3U1$?fCqC-A@9hJIq`r}6mh*?rBdqYcsMl!hgzfobo&*|Klj-tq`N3B}q${qq=Ga@;7CxbH4s1E>RFA`I;^ z62_ypa=tRm`o&HSgRO_+tr@*hDHq7QJ|Fwz%J3eWDkgY)kmQ`j2D1huTyhjw>!aPa zgEQ?Rn9c2y$wG(5sfX4zhV<^io_HxvB^$|OZ_~bmG!(8*?(fF^b9yar^5HtZ*+$kd z)Q8ak+Ajn3P5L4oOF-MEX4p2$;fl=@Qz&pF3bPnDs9a>_$+wLpg4yMR2Rqa?Ar||q z(E>Wn9;^f;C#X=LDluxfGl98^+RkJ5b#}&YbSurPGHOQgp&xebRfDoA; zDL#Lu2q&p#te)(5TS$?Dg(5h;(mLF4p73dvm8N(U0cp6ue(EcV=(Av%!J0ihDRLq6 zj1LN!SNa)^Ty-CDJE_UPp6~IiHa=814vb2#jaSWduLu$zk*T(&+#;M^cYgYGE*Npb z7gv{3zWyYnfpxQv>4^3m4IHh@EfxrP9nRoVvuhfs2UEltN!m{sI9{-xd~C9@hY+(g z%v0(&Dxoyt=2EKX_Eg7vJ&O?(NE0Y>z+f~mIlD=39~m+z4~{q|_Sk~JQPAjw5*iG_ zc?fg2*vK6Jt1wODq^Mi@PMX9~&P=}(EPqcXT*gDok7+_BaE;7^?;-Qv<}rWQGOAuc zF@=tuJ{3f*`> z(C!M}j%)N;700Sq-K8?S9A{;a?__M}%-kmr%|;uXExT2IRaypQO5%c^XE?xW2GieS z@P9M1PszVH(k(V0%P!R*96CW9V6&N1S&(i^*wOq*@aCNPw1!-gM%O4CT=YpX-iQH1 z`&S$WFo&sQ9#rz=if4H5dMjKNO|1J-iSLQU6MSX6skv>a^6$W%EUK}+QNss&QAFDy zk?XZ$XhZE#?pMNUP`>Kh!`hQXfs-*#DXHH!pr&tKf6Fz4W$FZi6{mhZjXW5o+ zp_*5o9Wr-%f04Onxzf{e%_MVuZ?jhV2Y<~9y$8_((t1+&(W3kty>xjk#bJt; z2!G(f8mDl7S$_1xMNTL7@~#HsBSwidJcO6jG6TBAJ+#!)wiqUbNiq&7bm;jg6nQ7N z*%{uyYd)Kl9H%32ZOYQ^J(2EB#(LR^*8uQ3bLnnHyRRrMLGgF7CWUAt9MW@q-Qg4V zOo~kFrS_Q}H3z`)u{^X1WY-a!y|i`B=Z=`DRJW%Vq9a9%W3?EM#OFM?no!T;*~r)j zRws6iw1x;f)T1Dw#TqWE*Ava(nGVF4do!y-AyMH04rnOb4 zu{Sf}d)#=M)WXmLAIfk(YpYf{;dryXE3DuR5@l@p=)|`V!;QY|q-k#+VnXAA2K!?z zj@_a8G=@3b_8RCF4u7Bq!Qr=7+rLm0hFgyOi(bqBe??N6iT@P07 zCO$fVb#Xi2SNPHx-|25Orb~y*OPD|IY#3t<+K;lQByGX5 z8{HI8!wa>KK4d8?n$oG?#Dm2>?pJr!)4EKfl1{k%0i_)YSxOv22B^zDH7P95?j5-J`ZmUW&P?!LKa~%S^ATME#N1~iG zy3md{)}T8SOSh^I$ZW#Nz^qydy%Ph2Y*C|4sl%MZj7^7L( zl6X>t5Djoa?0qDlV0W%fX0_eL_)j_h?U;Evkm@tq%5L*A2fxh3ZlVT7NTzi*ZdsJJuyCc4l%*b~`36+7bdOsweI;IANzq zvr6Nr9!gV=;>ri1qGnZF++TbU*$@(e&vM7mXkO#uozsfjm52SmID5w?QNln;vu)e9 zZQHi{v~9aj+qP}nwr$%s_T1UQor#&4jr{`^Rqv;KD>I+8o!EFb*Sa9rV&&cQ;buQ4 zXz3FL9a3%Y`Z&W}4o~C|Y=?$_h!UCU`O@$Roj0!hTfrd~EHT-K>0d)OaN}^fwjOpHvEZu(Y>7jlnT%mQL$?XH5~g-| z1!0u6TgOPpTzP%U+;2WQ;FU$jTpx9FKP~h#pBzR?qcHmLJriG$AbH$mt^p56Ken}= zeSM}`^t~vII>8VJzT|^n+#X01-8YC`{Z*T)-_yeU063<#I27!!r!;Cm|MvIvBVN#J ztA;0>-xBCqV>fE~)}TrY=EhH!%Yw|4(X^Kb7%^akH-@3xK~Gh}U^`@2RpBSMge zqRX;Oao>p&uVe(GCq{)b7B%0`o?l-3E1o`W(kazEfRQbuwJI9B5Ag(i*>ZYz8O*m6c{j7NnhUua z#dF)g-c6TzaFuNh)Z9s;ll`~7CA z%z{w-$d7fsW*;O`fl;53ZgUcoz7;DaM8}&?{U>_Q9MQ-h{@sGEv{OvO@Y}+1X8J&&kzly~L8K%{rdWT2*7{}Gir__sXT46|Qe{zdte2{!B zVY=TlicU1_cdY9q9*hek{g2~U6CFF3j?ww#ZpS;cuzL6nIL=|8xfc(33hJJ>04 zbhh{$zEwvWp+ejec{2{%G4nn`x|SeuGNs(^sOaf- zW}ykdn_Z}1u^lhnP0{K2)tXHG&eI{^nJRbyOH1oM#u<&uOS+wY6h4~42X&|dx_&(Z z^4Z&+z~=QVL|^ml*XPW1q70qR1#on#;wz?wMMwEkV*B^9n3|TWjt1p3t3*Yhm4|?Z z2DXkkZ=ifbNmlk%a-`#!;Eq40rEkoL1s^Jr|H?PadajkE!(CYT-q5N+8v9dN4r(1o z3V(U<@E06A(Yg+rC|t$xwjGn{+V$E#Bw?OdvHIx|k0}=Q;Z|Yz-PrER{N+GvRa>Hk zQ_xc3hfrqViS1dr4kR%1L2!@l9}ZEEH&V>-JN2C%YZDLdedBcG-N!k_CAi|y^D2zx z(cE_H{@(hL#L#4Sg4*VLQ_K^?+BUcN_1V1>9ck9FG?e3-Y_?%1lj*nc2QLi;Fa6H` z=HmJiMrf*jD~PF3hTWx-emB2*>wFtrv|gfZliV(JPK0m2f1|TPbtWo1w4xo2)tFkm zeKwbqKIHyMQ_h#W6unx^=py^jJSa~^8N($Y=U>&9z_{^fG6YZbWR=|Q(!YCyhUfoY z=DlQiv$RhS1L{;C)VFzBY7(7z9De3=|0-}WxEy2Mqb_QqcW{@7s)WoIW`_k%B9>52UX?-Y@e#1I(-=u$#)~>hBO(*a>#!Or z0Vfiz1gSci<{=FUNKb!!$~@NL4Kvo8yW2Q}C?*-m&hh;wIb{)V{T4Kd(9mvqKQCm( zwoyZ$e@c0lyWa0(+Z{7h2G2a_5rYz35YNg$t!->tMvtXQPf`#U`B_}QW{*;DV?pI2 z{s;+GF@lswmyc|ILW|nY5Q53P-nerS!+kv%SPFxmJ_lAa%_G?)d1%zc3{Tx(&AKt@ zO=cB2b@Aw^SxMo{4wRLIpd=343E8QJDAZ#|dGt@=z$fl@DIUTPQMzWuf3LcJ&I!7p z)dWSun5qe*?w0gbu&_7&m0gKYya8*TtxhtpzyZ2+;S8i$*0vzIKVE4X9~iOXa+DIi zI*~sB7+B5CKj%Nl)>^aUi5V)`t3>1LX)>BF~e6q>5PER>Pt=|apcy1>FoLK}1$5V0B5Mh>rGD@of7=_7Cpr9WmJf?3|^XMb(AU-#Ij5}cX^4g z*Em_qyg@+xh&Q_y=V5mT3s-`iiC#)2v2E$WQMZ)be6O*2;&R5HGImP?G|n%bM$nsctTnd|pQYc&#D#gooG_VkCQ*pv z-a+Y_FuYtBeozH&L1E|n1^fV?2XPZvx1hP{AL9Ku&`uHW-(P+RABc?8WLC*>O2uPB1N=O*i_DXTXwZ9p|+g3GjrQXs%Jwc zG$n{>nkX^>VU(LcmN~A)x0TUFD1*FJbUaehRGki^RhRBW*!=Y=^XLi-&*R!j>^+P+ z2`l1(+o^MQ6hq~IP{$qZn3;XXGe+(-%mUAiL0F2g;9%Jy!=3uW7Xtpih==D~!;AjG ztcCZeY}rnN!JV@TDN74C&$I*teagWcpo} zLi`(S)nPd>I27J5dMGbR?pOgwHZGQYez5ELu38((F6v3lbCUBl2h)hzYV6i`ZH?||=Gs((U5o??2{sL)27urpt-kI&S z9OL!pVe#}(QyAz?1)q_|NA=k?5fs)Ts$-a+Dmp3G9<%5|r0OccXhI9k8-m#AUs)K?C|{meRCbDTn`F_1bJu&iVTTuXk4vA%klpF3i^^3TM_Uyg}P z{w!~)baGlOy!yh-WqEt*0ojK9e5(U(0VxTOx#}N@-f2{+qHI@m@wyQ^qB9WP&=+os zWxAx*rNW)HC|v>!etYWP9b0Nn7iO$cWqXs2X_>K!6tZ+6JE2#y*~X7X#o&l(x1JDf z_{^+*)rR}5Q!%8T|oASKl!J>^v;tE=LNuVEjUb zIqZFJc-p7_tc^9_H!+~_`PP3o8kWML=V9>m>`&>Z%#irwgp z?h|jzhin@y+25igj^^kc`q9)QA9+lxCeuwRK0tO42=S#7v5o_G8HLI$WWHm9^jWu> zM{T>yscSfa$Do&7VuChE9IbUUnHzYuO31=5WH?4XU#Es0gG3ciJ8i#F?C2ANn5T+S zI-pJZs6SWedoI4W9wa`oY$Vm#%VnO+&udX(82Up(j~=?oKG*psDeXo+u3q_spWy`= zyRPdv6ski$mJ%VW(GNbR7aCf_HSclpU^>?6t<^eFfas}qZCiZPy{4)7d;IBaqv7y~ z)tV1!iDO`y72eJVxKV0wGKvIutx8wCQJX4V64je8>OTx`joW{&1K(ctp}sd92lM)> zggyLJ(aWVcxLfrdM+pNQO|C9y(}#ri{(KeN-cEOSa`+s!;d3|&&ANB-M}y7RQ`3d} zfwS=&oZWg}F}$)IlI`l$DC{v89=&)L{+rUKT8!v1mFi99{v2vOkO2#q_g2*{Ra)(= znX2J}e&pOy>3`IPlLtQ9z;<;0I=!*%B6MeLL63c?xMLvjDv>GM0^j%jk>Ftl-{HrK zW#s;3=o`lJ?Q10tWWwds*YwsKc2KSw&SVh>P9SrjW2n=JrEBFqFeK`kpVRwcJ^gNx z&XOcv95?L7%qki4xkHH?7()>_8VnO|Mry$uAeE^^w_m*za}Zj3IUd369>I&>0~=DZ z4$=hkDx~ zgt6py1vgRIwAZic(bh;SlKp8bt)mxBG<0HaeSi8o-p|R40QsY0rpipHTqJP*pel5O z)!xml)wUkz*E!!+2+2U3_~6u~D%qc96LQWw8gokJUp?}?L0nrwjDOdVk8f&_xGJmQ zb8Pq%%{Lm+gNwi5@JmnAWW^~5)ETKJCE;DCqw%bqqIM&cmAXs?@A8q&Q-(bwkMPsu z`yQ1`1l~#F367UE4b`0!vUsrk$^RAaB^bjcIfuObRS*Qb;r`>|N}*)w*^1m}J-?eCaqkSvz{1nKF>+96fcTlYI~E^O4ab z7Q(sApkCeiJ$+7JjNIb>o&?WZK3~-ZR_WR<5Ccu`7;p)}OMe_u2b*Bekc}v(QG4tk1TxKKi zR1bAAP&Jt$PJ!u0H05GlscUijogy08&#U{-b<)7MPQzC#kPacmgm}URjo86(lWG)> zFTo8@eHH_rh6uB)s0~J-aJUKQg5;F^jzR6&$I~m+Dh_C(wMeO?!7BFrx~*;E7g!|L z(2*Id10b549d5z2Hr=;H$AL5M^7xVZaA9`Fa>fUUUZ~q{<^>PD2g!Qx><+&vbp0i1`1Eruf*ub-)YFK!p3cqT`<{R zTHj9(hzJc+!-YvZ^8&61&64IpxVT#jYnU&8_EzA4RUvtubgIjb8B1^mdWGt}$r|sQ zSOUWP&b779t1d%|%og)qOoxc| zSzAYKx(=TBBlJxT-ictWDG{U^fKD3Bd|~!!6mBNF#${HxH-^THY2+p%2gk5X*QOe9 z8wbY(;U(=MFzTTELA;Fi>n1_z0(mQ0&LCF`X*5cuJP3PTw8yb8pu9KcGxc*rktA}iY zAv&L+T@{Y!$ltN_eOo-ahH zdB8jw7?R7S={el23q2RdM_eGczB@b|8E^+ z33Xu+QMG^GwzB5`$=qh*B%u8-_+v)Ke}ld3tpB5f{LktB|JOnO4{q}R!QM8sw|BI2 z|9?$xL#KZ>vxSqDjiIwSy@|Dn%|Em83lKa1S-T!r5`M(^) zfA_kXnf?X`rQ5BlM3N;`TtE_pH*hUMah_yPbu+rnjK@3k-Q(5! z-oyL*tJT}Q^4q#%he?0;#ANbVFOc>(zl}0ms1XQH&lS%ZD{npx1uI&RiS0$q9+AhE z9J4mKmxjZ5VE+y2`!+r^yD$wg?%5|pi&Tcejo5aa9vv2*k6%8=tDw= znlCEQb+NERBx)+vd<6x9`lvw3zt*W~0HA@;faodx3k+%S|BMnU37A;L!nmk_R)qLy zt}X_^8vh~&0vMto@Iodck(dWVN`eYtdUUrsEug|egI7g=NDM2uJmoXw^N|A8a0C@x zn0xm$4WN7}5Lh4}5s<&jIBrmQF_{1m$CdtZ5+R893K&6Qc>+LrzFZ(2SF8X;7%}&W z_eEhKsfxy762tKoQo>E^h{u~oe;A_-`#vvjm!2pSX zz_KSH0)XsS1c8YH2CPFBN=)42?CnE5f9@Z9XO92@PDpX?W52O(xKA*UGz?T?3L{i1!%S930vE4; znts;D;nlp1EHt9`Dk_Gq;vaBaND_7vjSPvc4CY~Nlj2`XT{Qr~JLvzV`SZhq7A@|5 z_WO!dCj686qN@2*`qk@$C{Bk|{(Yp_xBC@`fk-Ki7~_aY^NqF#9a~cmJ|%v1VAoB@ zAz}@N4T~h(1Rw7ZXPqa*R>l{$+>f-;#N4`Cc2_dL52Fn$ zu@?!&u@23qIN8}2QxffIODc+V8VGClbuD(A;XSML&aC-!*XxZB0I~`AjOUg#FY)=_ z2E%dd#JQcA(Dd3YYhTKlZ+pErH7f^0cv0~}GEz81?EjlSvpG2uMmNS<;y?_-ZoY z)>I2Kg#^uw91oP3XrpGn#b!#5^6Hx#@&2wRpOo7dd%c#HF_77i!e`d$cv{FCJI(3! z%u5!@W5OBPP3WZXW1nKPjT#lU?T$>#wAM6bpIZ@}9%H-H3yRay*`Ej4xuJT_RsIh% zd_-2;p$TB00$!R=`Ha;k9O!Q0Sgsdil90ktS^m`x_~YxZ?-*Y-F++MQic{747Za(a zk9S~5TwrZ^FZFf1T65m}nYd*=WAp%5c&aK2;may``)|vVEsTvHe_lIY*9zwgBDF!c z4K}v(cl>NO(-4#3+un{yOsXNd2C3llL2T{ESe=wn8p9Wv=c%P8yszy?a^h5FbvsaS z6>}0^bJ)3P?^)dmNu9$6QtVr12#H!Q_kh)6VOfq<&IbpqID0!8`qoCR6<>#H zTj>b0XOVf1nbmzie$NZ#{yW~wp{ZTnH0HtSQ!q)x zIrG+QR#Q%!iOR3j zM-*|x@c7=6)y}~dO~g&V>kM9coc)Aa674pRPdalCp7*=ToRLP|@>4zw-stcr^L8HL zKqq)~n$4yS#LnE9xE6F-s2A+<|VqUeWiio9Y0fn z3t9bzPU#kCZ#FAzj@Ez5T@HGb+{)EaDOO$snxJmQSzypSPew*gKzd>9^iCO&4_sg?Z4Udm4fTr`f%x+M~4LBVx=@Pg9RM z7c6O4Bc{2KQNTitqQHp~Wcf)fYHz-;?L%J*gOcGR7&>LtOA*z&Vpz-z zet+Dnjx$59E}HYJq^!RCr$VMGS-oCuIr$pf{?exID$-=!XA^e%S}u_BE2OkI-8G3T zE+nsiO8fB%*sNN-TPde0+O2HIX#WBlyc?YSZ?qu$e+vBl-?X5jh>E(fIJK;@knI0S z3$n5j(6TTw5HK;bFcWYx{U;s`3)}y~qxqL2{BJy(e`@bP!)X3{%JF}afo%T(HveM^ zL+O9YG5&{?`=4@*|FMVhzvdX382;lC|1HPJ!Or^MmEM2m&v3GHGX8(fF*duJXrO3q z(h=e!5#>YLyScRn6)kv}-hTIJzw+(AyY=7? zvc4w1epi`Q2b=^)a7Cu2XG2PCzyTQnHZ(v3pk(RvN4O$z1H>f*Cx(atK{15{ToWXW zFvI}>+yGFla{~M00KmDr5|F_P49x7nLbcQdeZNHSB<;(y_YJ`kz_kFZueAf112(v_ zwGfE=;|wLC{){4mxiEbf))DtT`N=FPEdKfP=UY7VH`iq!YO1ew9SkR^qAub}D_zm6!0FAH5uYE@& zP_~+oKwKOE|1_5lVd!eNX&?HI+=9)5(F0eMwWRm9Ki3x3hymnfWEyYglphM^dg=$v zk0dg3vmJ;d8Bsd)fFd#2DbM9S|!U=(_)uVQ+f-uhEZ{ z&#xTVk4Xzy{}1Bq?0f6CKBWD5i6618yPYyO_8ZW*Z2TpBWc4*YrNCQzL;5$^KCNIc zRUbI?hd6i+{}-Ix2wQJ)pG)SiRDcsRIQOsGA$)5#@>45_d)RPognjQYz8%xqD*}h& zq<+)>VZC!>D~ODIkk z4ue*Ldu})E{N50*y=(o6*FXCq)D6GKA?S_lA%O(H971$^epSCb0(5OKZ+ZdOzS`7p zO;{}aM&|7kSy*xVBQ+ehf`(f-HgdtX)O z-&?cU_G+|W}T*~?0F5x*;v%6Hr z?nn`tGh|CgM-|=_|03N0(<`CnXZs73m2|6xh$o&1MIGzxvBuiE0;akQ^I)eq9*WJ8 ze2NX?~|jDyLsrDNv0}>%zEG>NKiJm{wasu>*OG}y1u%&z3dpc(DI%|NsRSZ zY%Xn$+wgYSD=ic8scGWO27cjjGN3A~N4aPp+wXMzQ;{2w^@Z8DbfzA*r`tLvt~c|V=96( zfLJQK2<^7$F6B)azVU;7vn~4x4eKO)0*-Db1#;t%;25A%o~&y3L~7w(&8!s3nTZHBl${#b7GcqJX;C&nbkPWKb*o)5RYoc|4O=*f>wuM<(OFEv%b0*h4mUYSz zG$n6771Gu9YD+SO2}FDc*7i|ZD%hEcr2ZtR2i(Bq{4d%a4S$+}gm zAZ)>E_3sJnJ&VKW*yDKvDd?8E-j+kY3{K+PIY{Y_JJf^H*VB0nYSFOM1 zMxa`4fh6swg+9Db?2@G5GU<$m8QnXf`4BO$Bn*;}Pw=D`>gCa-=Es3%uX0mxv?tr< zZJ&BCIdEg``UZAbJvQ711bO}3Byo*a69bRdo|AXcY#VYM+F#?DX?evtN4J&?Zr+k= zT{g<<}Xnj8Y!j=4Z}uT*U2}Vr?SIreD(2K*x^atN#2Ui1Wt0M>OA#@uBpad0V4MSLPdsH+pR`yXJ=6~%&E#iC%DNX7 z$EUX9gpu17b`iVf_vMc7!lEhVxJX*;{x+TLcnqgbki+MNkaNw`vO1(4K0}zQ`qbU_ ztDTWy=tjAhxqf!#Dri*2<#e!UKirriq~MteVm#fyi&XKeUTm!9OiE9qq?KF2Sm_sLVig8oGulVTW`*J0i31OGNkJL9a5#7+6qP6$ZPNbKX1F z!%tnoFFD3_zGd^?@Z8X`YGpH1PIT~4CUYinWai+KTC5iQ3~d^8CHPoVIhJIX3vye$ z_%Njx?I|kkey%c4pCcyStU^r5tgisyvYTV9D!x=KNhO`$e9caUk~e(xV2D7@l!&vf z)i;AaXQkYMWFw_-yGB@(hhh~8POPrKqlch*ku|m`f$6pN5ak(qV00iAe7&SXd8MVQG-_l)D@j z{;+c|R1H>yZHm~?Ek14=Lkkswc0Uh-$H5H{vXKee7Qg{AFrESDQ9g8~)%$GIVa zN4l%6(ivBi6^0Sv>^>`WFJ_%7=E+bg3OXn%4!>ss?Iye{p{w~$A_Z@#&*cxMkO+&N z8*Gh`$?CM9d;-A8upSc{HuMbeT{#RbL5`lUUN%i_+exDH1YlMeDhZ|p8=^hI4@en9Flq#4WW;;}omvCX|?DQBEYi*6>5Bq`N|PVo(~21uzvZ~$XTk_WEkZp zEVURyc<;l6_6FIcKKE^s|FQ*SPgvLGOYdD1)kj5!X|?fw0SvKMHA|}t2U{Wm4CrTFFmU$zZ&cG@1WPdo}L7;kaJ@>bO z^(+vY&=F4=kS9)E3O(CMA$9exoK>+~y)BtlM&m>ft|rE%>_X#$NEynltgMi5>Aa9g z83&E6In#x|2J~?(VyTCVFY%+K-a(khnOQN$5jRn3e-JP(rAf#&xE|F(px@rU3a`@A zwHFeb=g9BdL1@CmV_jg_%pp!MrdnaJ>D%r@x9`2sw-to05f0f+5XLWjrnU&TgYGf?OzdF1GSuNJQ!zXiBfCQm?B^yC zjo}kTf6b|o(b~DTy#gxTv#ulvKjbt@n`VlbK#0>Gi zI+H|m`YRx(Y;T*(?o-I zwKxwa8BJ@PTe}YsW<3(U++R=w?vJXaE&YT)1P{Wmow+CtJB(%*EA9en!0LWe8AdQr z=Hjsn!yBsX*HkJ^spvAN-HHGxF>qq0r19RvPevm_&&+PZ_qlE7br@l)6O@+FmJeoP z(i5hl7)JuWhQ>%lum+$G(b8^GSHZlVZ88-F`iEdYp}%CM}wzr#E63 zwD0l`!o@6X_#HXWPWn>)7eswF+PUQQKBGn&ysVn&))!l$;B!yY;-xTf#xMULg2PV z7g~*D!-fX|uZ6E!EM+%fy%W=^k*1Uw_0#6;_{eCpFr`NVkk;Q>72I#nP)2xwD;BaV zXeWxT8{u%CX;E;9Y?>J7O33#!{h{l`)7DD#udHNLc*;xf^4)rqYP}!3gA)V}y45g$ zN{rnjy&`C5PuvbN$veRgW+Qn!tm3L}g7I}NvXptO(6D~ATIl{q1rd;ClRO&ox4`i) zVW|ixu|kK1~BkKLAebhMc1Yl6ywc*?xZE1N}@ zS!haF%uRUjNxVCi3uEp!!U1a}_3TM9LV|CP)FY_GF2&&;KZNI*yy1uZem_yYMtIWh z%z=8Q{_6&|nZ>_ZnkcVd%$J9x;Mgg5)poQfx*ffQ1>!bgxy6-*5Z^Jvb3&+**UTWq zx<+VBP}Gybo3$v1iWJ01l+U((;Emmc zO{{EIzsj#?AOccQ6ft7;vWQ)*7O^#4d19?2A1e??aUFDLg4<9sB9yD93$b552cdBp zr#Ub;8F_w&kL;a?7FL_8G_MN%)g}6eOO{-7qNxEl!LF~VIDTJpb z`Sy1R;!(%<$8hve*TG>&i;F8sxRv=Mat0M3V5(3hV7YPje@M7c-t7|{}ox8(H=0(8GB zbb3p2;TeH1wR2oup=?Ld?G|5y$Ux{`D6>T6C6bkccag-}&D=R&nYiKVFRDc>-u&j# zj3Gf`JUs@dt4J;atp>=fk|F%CTGn~O=k*i}&XgMby_7AVIx$i|r4w70m#}O*MLE`b zM(UA-+{f@{qD|r0qv3TQhL46h#&RtyL66{g(CVHeyH@@z0d2B-p#iB)6)a$^yFwjn zT*4b|4xMP~JJ?b2cC!16{|h>5$S1r{iU?pMr#>VayymWbX+7wpG4J;bqDH$ZoAlhs-}9}#NQWY!QIi9l@hIsd7cO5ru7rV zD_CiI`%4>fY9-wb5Y=$Fl6=hHdhF+5a+Tf8Y__Vl776k~kK z%1|~f*D$WZ+({9-#PQS@zIVrBG&W~$dWh>S)+YGov*REM1A#5RC zG_KsbtJYfYYC1N3-G6iueVF`)%vXH!g@+4K1JdFTA;K-VO6~=nc-X!Eq=)-sss#|@ zwb{SAN?s^Jgj$~#&%kku%dX{5hDIarW=n}31rFhtPbcE*&t_INng%|qGL~irx@DS1 zVHCt^1!iYFr2TDH&wx<07Q;&9o4e?4os_hRM94>TYp+VYYwZ}V*Sr*G(fSUN+6%_l z^O`N0Fw(xIpu)g2ee|SW?B5Tu-n?>IIxkq9Y+AZZSpFazg!SaX&+L=d{-rc6N!ks}Z&W~lT$ z8y8Feg0FrJD*c0_LfD-1=iFnogsCA?_qhFR(9IK+tA;n5LMi&4!Binz7hWlHUb%wy zU32mtmRc?ADO2?0_%0Hr!tCp-ry`4L94nAveJ zW}^UEaw$X?-6_(;8tiiJVlWOioJxlkQJc80)?75I zpv}WDR7`5dOMM;gzalP4uNENVAu2ZLP*6k4+2By!lnakbVXL;J&m+NE1 z)!O6|^^xc-r!Z`#EkE2`(3z}(EvW=u!dF1}neweX$+~nI!7Pt}kGdhdGN?+LJri0h zyz}Nd1ILgwvG}Sxr8~h7SndvB=#fUSxmYwfuC3bJz~c}LtmwHaKb|%bWmIths@7^w zr-%<2eDT)+6%bp)+Ear`re8uNj7AP`e1M{jgWrB8%uG|OAU1w)M(`SU#-zm5eg0hN z8p*IZM@rrhnBAMf=vTLtle_7;o)nZ-IiczvG-I7E;ZoPE$amJFAI-=(+ z*LF(H#GNIK-g!0La_7E#>Kt zgsyiWkE;!7;1ZJ4K;{}QdSjcq3{K>Zp1_lCw2B=l%a0HAORF#|VCzrn2|C1|%G!?? zg>SB{H8Fquwne*7N01Y?R!q00rm`f^xp3SO;-pW(X$=vY3MVAK`s;lBUDsI}3clW! zQH{@ed8Q#4l9OU$7kWf1m3@48f0Mx%z~sUWELc1MM-Lj7{yf@YuPVM@toO@TOa{{N$g{fQS6*z>#7PuF%?I7${`o>xeZsHGFApQnaPozZGr%B{M7UUD#+B zH+}T@>2!fwd@e%mNgdy6BF&i~7qIeTMX_HEm@8oJ0<==T+ca*-|0 zT{Ff+HP|ilz!AD1yQc=-Iqk&PmU&cWXGIc9m=4;?EB6|`&~r7ecX;NgTF{%GKDo9t zu-iF$3<_uOUl`IET-{9^1>SAnLxL&EJPODa&rVl9Dr0;#OCdNUi#x6AOs|*Tv#%lY zFE^1r2xg^F?*kRM$vGNzpkO7QD2>+3e~YK&L@U#~WC?HI1-v-S)DFNj)GsiggCRey zqmZda3qH5w8Mtd4&aMNYsCQfo0JsLASqqaW#Iryp>-$n(^=jU&>F`jNR0n5=Qwl|n;hz1b_s2PiajGVVVpqTfy=w1alFSlA0pd`l$jx94Eg zmQB#)GRURY6Rc!;R-!WA)r_GIzi>vmIiV@eJqq)&gwDCNiHEn_ldDI4*8a`)qQ1n% zzETY?S!h^(Lg#?iY6S#vNUN`#OJdeQ+5QB8(fy1^Z%3rd%m9tqPmFsT4do8s!JLx3m z!KEP}_Et(6AwfBfhguj6$mesZK*jiMjb6(I&nO@oXA&w*BOOQtx zN3XcgM&JK-7%k$yY^T#?1QaQVIQ>Tg9&)N35O!s3e7Hg&hEG*L~VP=;$b%K($ha>)LlJrOfj< zTOlm4;NH#Dy;cOyfS{Z+vxDf^)&Q$9&4+{~Q7CkN&0dy(DW+;EHBe5 z8yOk30#$*ZSdw=i!KYfPo!F-+XUj~>EizjnU7qjNP>0~lLE8UkPnF;JWMc=9=&Fcf zW`AaAmm_aD|0eHXEJ%6$RR9r&^G_!&L_erruZB~=E9wk%fru@~7RImVc zVhu38@zJ_GSZoFKVddXJH9uP4DV`Z{F*VhTM0{eoZ3vrCD~iMR)n_Si^BD6%#$l>U zIxyI4c+0ZZNYOC1C!OJ0FimTG;>l_4s8xAysJ2vGPrWDtrk;a+@)<^&?Y4}v+IiGX z^jRI$R)Tv<(I=?X0bTS{CzOb!sIexPiYC>}C5VJ_RpqXknmb6|Pn|%|3$>~ih@#v> z4kFG$Y+a!Bt`!F7GB2AWE)B|jUh2Mc#z^_0Yg8_IL82EZlG)RN{W{Nnl&41CsHOSR zKJH{b!LvsptFmVix0S~#N`|HqU68MczmoDICQ2iURj|9ATk+HOIb@|DQNmRL+|_&I zY z@}nG3o(oZ<;bTA{x%xgVi1<*%!x^4V++t4X^b28!uo}=9XEzB^bH};VlGSpQEO{i# zI&4$4V$d$)dygmg$K*sp{9t0wknAt=VkCY!sd(l>FLsj+!f#i^N^%=0TL;T_F!fVK z4TQTYnP7wZ!m#}e;^+gf`}eDiXU<&D6>PB47~+8gY-<*&Wcfk?1p+k z#!MztI$`E}8pHK{r{1d|0$WQ%p85#OUFzJMzd@dL*rN_3ZO$^zFvz&hsE6Tc?Y_jV zJY#>cUt!u-^VH zn~{{>nHG2I@z^!t&J008k^4`1d%zJ0%TQh&oI#sn+ z;n&$!^*nobs$gv#+8JCyUy9f!Q#Mx8S^J(V(UzMdMAFm6D80sb5br)|*L20-h{*8R z8#7fNc6>j)n;lG5bz{Xs;D~(G!uHNhB%6aF>)Z`Zxb|&B);J78X}e`Sn{G)1#cgP? zmf_%>&6?VX2wF82)`4sOBL24Fp%WK|N}MS7kusJY0$*?kmQ9zftA~kS`|5Pg*1Ona ztPgybM%==!Xt)s@=G2AzuF28psksu|nFZJ}>qwAUk|0X*{g4r+QAXjm0KdwG|B&ep zS&^}_IM@M5MGsfktp(P$-WYp-y)5|a{Uo~9T%XJInNFnX-SM;rx0xzo6PP=r=&RAU za2`!@4Ne5H)a=Vv5462HDBQ`z!%}1$McGg9ro7R@kd>p&&lHm^JZ2&XEp6{xGnEY* z`?F^COvOF0bJMYz{RHM^^DHA>!9i9)TuJA~V8K_=2{)OWR8Uug$!2A36g5(#F~4*e zg}3v)`M`&us86k!`RS)(W6u_5*1eGjkGbBPhso>3QDjmsz!DmvdW&N4MIH|2bxMda z`dsR1y0`FEkYwcL6X8f8y!(HE@i_iQt^IE>o~VGNhKwS$w2QlijGe9BSLvR$fteHG z7i9NWQK6uqojak{U#)`-41}!o^n@H7On>t-*uLPq|J;USWBQtW`xlEx%kWp*-~Wi? zaeM)D|FSYznEp~b%nclsOq>b70|Wsg08xMhKn9=;PyrYK3~au(;+za@jRF61GysMG zLq`LnFH7UAlkgvB|Li3E>(t7``9JRdI{)VbMgSu_YdhPoqm7LLz!+cxF!@J`;Xl<6 zQ-G<3s|mo=&czX61~79p`Dz+;1egQNJ?za*YylPkOMn%?8enbW zvjeyQTx^ZMKCO|RqY1zj;12Krc$zrc{Trb87mxUNK=Es`@4o|z46F=)0~G(7^!pdC z_;)~&ft`iz{|YEpDtl?8sG&m$NRcc@gjd}=fP0`JBMXc3D-a7BAR)>tFYm^+NI;M? z&5a2E81CB*YO)<`?UbL10I|If`<1BJ4C|=mG}!{rM3VRP!JY*KY7wy)2_{H@IADMpQ|q3niUu7lXpAzs!@*8tOf-nZ zjOOn!4Jk~`La03mjDUnFL5iFWsxHo?nJoXEqlTFgLU_i}7H&|mS?z3i28Yxfj{U}u zr}{e-aB(odY#bsDY^*vGE;?9dP;YV|p|}7#i9j%U0I4xyVw`{^oQ{8{DKLjO5Mz4p zH=$We;N2TFP}mZz?c7>#wx*@(I23KaHuq*4v3Jra8Qz>mi9s*!*pVB zf~2rgBnW7|h#Fv(hx3fd`t1IBqF`X~M7k-51B7V2Sub(3u)R*jW7s4>W8pG8h`}M=i;YKDLgex9yQj!{TG9sxw*o}ufM!~pVG1UNPhQ)1s z^t%8*`QSh02*i95!u6$)oR4sO=pwJZt#8nCsbL4ldXdH+EqZo{Cb@aI# zd2Z))P(@+$QHNCPWmGbI40-0TDj?CmLTuJ3vt>6VPt z+j<8+Lg`S(O$1NP!!{y^rEJ_P_t}ru7yqx{y?<(Kh!$N5-{rPP5o@M&QvYe)A1*5% zVuhB(@yYfn?{EzJy5f3t{n1XMJtU(($?% z4_#kw1cAz$b@FMcm3z^*w%+nA`RKKuZ%4{VuKAiBvdXqaoWI&i^Iv>xW^TUbAj(hX zdl?Tbrm2I~xJ#JB_8AFsW%aw1e|d3hEBu7&{$FzaX<;s)Mr#BI$%+mG#b>QHP4BcD19eg#*V@|8v8SCQZCQrM5 z+7k2Y_*ucemQ706iK}FeEsNUHc@|IgLaFQm?mEN1rJAv3S=yV*r(Gq_^X*;ECUSch z_rcWC3&JH|Q&odBo>`WKWXSh=FWHQkbFD`!gK2Nb>zUP96LOvO#G8kXS;9Z~w|IN$ zvoB0aoX$QNHpS1p?MSxiKiAow2rt4Y^1W?RD#`Mir8?J|+njZ((wrU>AG1{mt~C;x zjCvPMcs0WCJrBX2RzkMvUcfUX+A&162B`C-!dXWRi=DQ151M;gSAK7v3d@BVZHG|s zR@L>2nLX;9f4<}+U_<)R!8c&K@zpl{Ia#M$IHiVLVv^yu3zq{!m&O>TW|@0?8(fCUdoPEKy~eV zy?jg%Po!#09(?TDsd;aZ_e7#WUNov{?s~*v2$pv>*Kp<(cqRsXQs1T)sw-*Re*FcI z2O1A%auZ~got9%`4YfwE)ZTH^KL3i|I9p_0^2_)!mX>X-JF{I%jI2w2m0nKgbZ-zh zXIE6$%8twrxURbieA94dza?4u==g`lt=-*F!&+*HGIC2+3(Hg41Sm_+pQ5+Y?dcYh zm`iDGYFoO`HP|@SnHLLF%ynZY9Gd24rO@~vtrK%y%r3mTUMzk_>!UK%t$SN_8_2#+ zs@PG(Hg}G)oGZ>txp{}@6G}Q1G;kAK{g+emj#x(3CJ05wHZ~SEKP4x{l6RgVv3+5j zaB!wJgd1@u+uN-9HXsqO6BTcJhZD8xH$H4lPvHpj^_7%SV%4{4= zUxU71iYWsrvH-KXul%fKL>sP=Fe6-pQhIT#qfUiF_w#or?e2glbM@&B<4y3*N2J<+F`PTUPjoXNkz znS*d+Bf=SuzJDA@D9D*j+%3#m@(4;?Trx~D%oz#_a?9=V{rnHl>s$TQ2&M-hB+BHBC%DMCm$hewOMFwm*K7>pW*O-Vi{YRPCRL>&ky{(a!Gv^3)+p%XhM z^iP(sAYmXoepMiiI5PiOgl-rxklHjLM)}lYrsY9&c>RSr-@d_~>s`HcJ~|+nsm}&( z(N=#OLZHJT0=76%)I+GiZUUvZYETz`LZEeYuo?(1e;`Kebi1T^G@uITQ%@jpM6iA9 z3!rJ|MtdMF5apg^!f=>yIDI%52=+HxAevl6>Z_bZ?cexL5-mXEz;yI+WKRsR`v%_v z-x)f9y7?z#^f6L~{D79h_4lmd1NbI^;KBWglHsdV{eZYnD|7vT1382UcyI}9Vn>*B z>FhD2%;;g^-7Cr{sXy6de^+w6$=P6BRy9MyC z_!?>Wfv9U>#(UOpYafglQ<T}2+>T3|NJ%=Cl)RKr+-~CgL>^hRD&-iR? z36HuU`d`eH9iJ|{D@h;2qXu$V5(T!o0bD(Ui+l19paZ`jdjAY4 z)F0pD-KqdcRu@0pZ`s+VC;1_c4-D$V21KCZP40Ybcu|YLp?95bycTQNMlm9#^OJn_)m+pC zZh=4i=>D)-fz~D=p36D?+SS)=JfE7?PqZ1tFa9Wn{>?49^xmNWFF0DfzcIw?bzFi= zErkZOFDM6bgTlN6M;VvHL0vlUaB7q6a;7WHE1e^UO?@+e_4xGFE&Tc%cJfGOOCcs)pLv9IyD6HA9z$gCg^#O&9+DyVmxSWVV{g07C&5iVf}zk^$NXf=-XgA(W+XX$t3Tn z0RRoHm@o^%@8bc_c1~l4)X;dbC^`?i^tfTx3IeT0TcR85lBf9GtFMd_T<>XUHUmF~ z^18zAeoZa$a%dUx(IP{3G#Z4t(5HB(0_3{A0nuhG;pM%NP;$TRJ z{+^9)9gJsQPYOlv{X-(tc(-6SkQdnc)Mv3vFgfTAZd{u^H9graHN8oSt8YQ7OnwT! zO9f>b$d62Ra!q#@?he)-ZS1T-)Lgi?R5FXaNEL@Alfj~n7@_H`g;SV}?*-~vf-#Ft zb@io<_Z+tSY%*e+XFqQ-2RDU8YCA4-Hu(;M`X&R{Fs-7$m_wRd8k^d)33eXh$KaZb z-l*1yV#J`mk9(!Dr7814L5g>PuhR-nL;rmp5Ga1mdEJt2bmRi$2|k)$YQWigl@2l1 z7EXUQ1@p7ZX<(f z+y35sZu`snAZ!O(O~p-aI((5Hvrw}+q4SYFWar2qFIIuoLxH$BrY!1V{D3 z%WQKoGV&hXKi-Yv&)PRe%?*>pk5y9e74y}RAA%6a7NdSY3W83$Vv-_YLn@5HJ5?&6 z81_GH+?8T)SWX`MVtH?DQR*6rskgvn>+7%82CJ1k zs!DWrBWoBV!7V4ETZAn&2w0OT^dA{d1l;=svcdUsQEV zExO@p#eUO_V7yVpk`N5Pho9*vH{eulk=r7+Y)(ymV-Vi#=o^cmN@=nzkE~L8jasSV z@RzVk)su7##+?(W6&Lly;@o}K8K0h`(*a7&G8wNpNTe8C6yN2mMBqJXDHxUG^zj+c z1g47$08b0<+SC|UeST8ee|=t5``MbFo~sOlBpq!n6Y_vL?iGir`H6s(CnW8j0L)gC zVJX*NH8&+gNSScNQ#B~6kjK{n^?^Uu0R#-vv=D&}nb_Z0K0ZQK>@ITp%1ylO>O(`r zG-i9Beriy{H7MP}?nKY(vidy2)P8Qa*;tGFwRg;(m4wu+nm#+Fa61^r z*k&tD{S1A>!RafCj$RZlm%{w5P$Tp3yFwv&^f#DmDo5L$sjYWWc(I4*B!`?iAwV-n z4+SBb4(A%`lAumJ46H{zNyN)!oEVjh~UyL!)sXR&n?q$n~$Mi5HWg66oh zK1W@RTYpv=!i;6MH6x3wTC%3KOyR?uOcf$GMpKT4YowPfjcDmjRdg*8F>mF&cS$A2 zuw-E>9?0q=t9scqvPo_;doV={z5Fm90V3fHvf_MQGERI7G>D9nvmY4slCDJ%EJCrV z){s4;U!s6%J#yUZ2ZgMg=nKUJJTdSD-t=N7k!Z*cWZlm=B0(20YQPc7L>U{3PI3B_ z!7pdih)DQ4E90VooIA%xW9k`^S3yNJnrrd5yi7_>a(UGBoh`fxN)$J;!c@&&C|J}4 zgyS?7HK&S)HRb9fZ_)*Z3-^$kkt9(+Ki9e2CR>s{KGkcG!88aQry)v-}12Jww&PE<;%)J)4Jm!CAn8Bk<>oN z8W^NGyhS6@sX>&yUZvUJImsSZOT21n?J?pG3_hJz1S2s=akws;$)`}wc$!R)Yqah}wnV2S2(iKCMnVU~)h+g7OvC6nuIQ21r1R<3GTB~@q4Hfqik~b*7`Pe= z8*xbPYC#Z#gthq+{x_n^#6376`_i@@qt0yH1km9x)9H#=ZH?BSs`VP#`QMN+ImZs> zg)?oJ*ajq-rz**DrO{Y=nj8!#{@x_aW1Vbhf7H$V-oy z_v5KqAX+?~T_|f>xMNRRb@aN}zYoH5!%9$Eh}K1S`KWWn+_wWw&dE|HNw!1lvuldv z&iO`vaAdEsq_|pTe_(j2qqr#;R(ax6e6oz~$_5+@Muxf(qrdn7c~o2+@vvDKZBiR>+X6Pu7y_90)^rX z_p$_fd48PScORW$^QnRw1Igotytk^PYe;cc2dLS8^>_P0OkM0NQrMo&sb6B9F+HvW zOR0~|i09KX!d(v^9%i=Ye@7u3K6IVxWB<;Gg_j$@P9GURxXS@~$D4-m+6!agsKK9( zg(x)H=u%%n5$H$tKhzSbeK#5*{uLMQi(eo?U1T-zhy^zKqn zNw(9Pl-il;khMqWEcdbhqRKe41W*kc1V@rn&CZq47R!bprG8RWpyh)$?99-mkLcrf zh>}1`7pLmy9D>63z#~I~+*jwFZlJX7$6o9NJ0bQ3gpBRKmdWwD#6H^1fi$6m43M!+ zC?~w5Kv@@1lSzs7Gc=RkG#fi*R9lWPTgp=n)ky^jACoyUEb&e}_+3Gg5>@1PPB6MF z8~Azraz^Cs8&h-1mTl2e+NSbsxF3hMMG%#wwlu&T1SHWV3vi*x85f zL}kF^om;NQQ>_v&s%9C5i1YT7sm;_nJUvq7ER(n|p&p1zZh;0hyWMK@VQqbJA>?H# zb>|2Fe;f+m%ijC^JMq|o5}iM*piCC4kSbTZ}ckG}sTUEnue>f+t< zOJ`9!84&sp(v%NJb=)?glwe?13ABvU&ZWLwo{`2;u06jRbscfzWR{YQ0mn!e9lVNV z-b~&HOS-W&#e0>>c<$O+$pvC;AyJ-Q-ai?c`P@F6?(meAD>w9xx0frd>?wibR_efogTl?C6-O&r9f1raHWP z1VdI^2|pbm zDSn>De6R(9x7rJo4TTCxLJ7PeAieti@%vdiLiYZK)EG#Vo;D*QoWS>YCM#6U+rJy9cz%}^5Hfan<$tEpg*xTBS(ykO3jq-Cp4xGs-p zs&}jr>squ4|>SvHNGEcJG+0LEAmjha>wOnz<%oQ{;XFNA2CE%0Kyx{J*rU&-*x{jPo@M_XXf%unkkTXKyk}R{ZONF@q4Cj>o9TQ_3N|sMHMk?MSht_pdR%`8 z_}Qhl1-;_DZ8P*$RKn0pIVjgBmMuY09-q4`SUs1FYfEhl5}iUJauaN+wK0kaxM9$G zp?uOP(4z?QQ2`!gsJzJ(xiJ;IZiy&(ze(p7SEk|Hei6PXyz-`UfjJz-_%z17POgN& z$D&MuYP^ZntP%zLqQ+T7gHaI~5!A`lATU)&B6g%G&vA7IbpvwC^w7OLpTZ`$#V`S1 z_S-t=YAu6+2F{%$*hxT18-8VD_!xMZk4;WlzMyi2E9u1Q8RnKzW&!Ra&J=%EKT(;) zZ;TlIlZoVClpzbD+O8_AVg40dba z9lJF!q=Ub256nBgu)W3%vXPW^A52b4lnWIcE}zpf1bw!x!O{@Q(w9l9!NPO zCD)G3TawX~mHAmuNFI&GDx}P(k2NfuWEczkdNMTRb{Tqn9Xd>x9dYUr4XBgda$!Lo*$Gf*@*2-< zY=7jEr9^3JOYlytNnnHlwxXWJV&QSIaP-bfx8Fk?W8hUZgjmC)2APxhMC$XlL{XWb zR2`=*lk$PR^wy6;2rC7(8pI66*gIAiMB@%v`w3GA$a0P>Nmy8O!F;X>4x9jy!O~4% zsR+fnjzN-{YwG3NKl7toLwW}8#Wt(x&?>S2mVse88K6CM;S*ntjMAweZM?zvsfg;G zwpvV~$Yl?8_Vy!^mQwI#6}CD*)6Mt-MY@*7^qA{_ZIkB+ExJP}Xv=Ie{j9kPuC%Td zn~4!c4LLWf5ytDhqJ*=X6|P+ksKGfpB7#2P^fGW!h^YZmGIA6Y4zW{(qsu;6DFk)y zJ~^~vxL@vmYe&qAq#MV`cWa6&T)!#EqaZf;o2xF)73Ob&u>2#Qyqd@^?%0L>Je$6F z?H#9c5l@7~Ku1{?r!HA^o@=W;fnKpqW$zh^ZVK*3)O0sjHZ8a#g3SPV5@fy$6pr-~ z&Ob?J(dCcJF*)BfEXo#2atGf&a8GaZz8%2;xFV}P*C3(`UsJdSFp5)GK&KBQ_n2~p zc8@wF92^73sFJ*tkS6)SNgRXd4_qhtstY!m-mZ*2SJgK3>?2+AE?^JO4yI>N-A=Q^ z-LSgL&NV&*tX3GrxaZ3~P6tDyv_1F>;OE#`0_AEmngeE5zlmgUSr)a~#?c%3>5u{8 z05zE`Rk&U|6K&+5jjInmu-0zX)IMZg(PQIQ2o3!xCF;$102DCSyNvIv@(Oe3OQrdI zY)aVG(zIi<1lX5AS&ixK>|Y^BSa$_fr;dyO*WM8CZ*E~f4b%MDsTN@Kq8r2u zd%9Og)BGoo_cs^QSGJ&uN(6RhTdg-g9V{`*N0WK1Wku;nrY|0b7OMANR^ zU$&o?bL9|FjKAScT7|WE+Q`se04uBZlnF5hB-#IHkj09nagH-JfyXuwveoq-le7=; zgw`Y6vWqlS+ka%!IUx&>SUuv{?bH%0#E1)*uu_PZQjo4aIUY*1ehr_AF`fhp2s{9QLi<32&QClU(R_nAR}pc#b~H01U|oxw+3+6!xb-F zc~|xQz1c5zvboJPk~cC9yJl=7QwII)Rd=}@U^vUM_=ZVcy?NI*KNi%?z^qeIHcwQ%7`Sr_(E#2D+EBMw(k4*9SBC8V16L1aoQ~GWfJ#rvu?$Uu#096Y=@<$!A z4r?~5Ud!o|sbPHVM%7s8oDLcmZ6bkhly))eagJrPRo;6rRRy+K4R2-7NRVEB>hFfN zYo#a|xtzU9<`k)e=s?PuYSj)abPdyzgCi{?ffDL*7O_nTdq2PE*sh(X@-CZMiecmZxci5S%eET} z42$RJsto@~y@84GH-DBvt?D)TOLxw->>mA}0f{|1L{hDCfTzvO;rVCYG!MH55lLcP zkhcPB)kzJM`jVX=BFhjvfzpe`J~uAAzp*cG8Mrp0xviawHYxl@hY`bq*eGKK`tg4S zSXb|0xq0P@>Ry%Ff1B2t!y+AvS-e$^x81gm9lEEo!mf|zd{8pn)2J`FhzX1P0DYlX z+%cP>RSkH=>W+k<;mB=;nBQxV`SBk18*`TDZkPeQAj&<|jd>H0=+RRsb$3bsWzH@ebyx+!kXo6wfT}*v4igt}rT<{@Q}+ zpAvb=2|$F${hngeSf6A$^-fa23Q42?^Mt(B{Iyk5Wya`nv49WR;GHbR@WZjhQT>JF zy=zNHmO12RC(K*HzTeJklm*7(LD?d++ zeqf(^SSUryY0~{>of&-Iaz6s(7eWC>e5BcV7_+1pmgGh--Jtjhgn(0*uD}WjRt29kDxWW{B@LF%&g8tTIhF%}sR>E@L^wFAg zKW-2(LW)aH49k;Re<=Z;+R&&a#JVsBzX7mqEAEw+uS8OyO0oR3vlWc(FO<+-Fgk#_ z(5ZGq-MjY452I0_O#B)zY>tDh;Z=B@s+(;X-VOUGZyi{P3% z(#cV0HB*N`i}i7Luo|Ab!k)#X;jlQ;%OzC^oTI;hvOWxy)8sao;rPu(_sf~%cMEnG zQ~p}Qu@_?jVu&2AR+~SJdgkFxQjhxDgCbD|Y>a~Uc}v>zD{%9VJEe&6n(Ji5eF-3% z8kkmH>PltQC>`_2N`rbNavF}=lXYebxv9j@L7`jee5r3z4SEUK>YK@!2jX&W>-(f1 z9|4f5t=~KjJ8^5TfE&6A)J(i`z8CQX?X0Ar04Ga$eoWiPK35Bpltv-&b>)uy?p?A? zYkK=di!ODyHO-`9?>dEJF?|=$O5JKpeibyWHVR3_*kHO#U>nN`DO=`gE7aPPc!5~D-lFX0goA=V zZNFwdj%aUR(3J-eI9sEHQ+USxwzJ}@zI@~p%)QF;?i*H>j4YwCF=bPkX+0=}!!6tC z(2jRcb;2njZT9(VT;gp)lm-7cjHrYB$;RQ#uSaf#TFj6V=fmn{UNddCSKOb3NaD{( zAx+<=P?7qW&73eg`)p00-TYAeG6n6jfL00cWqQ30nSW|W?y#A=zhJjyu5%Q$_p5!t zok{@Xux%Bk+c#S4-9b(&AVi=-M9|*3t*d?bLP25_lk6oX76oA)p2(%DGMXqxaUArQ zX`3=YlTh~sv3_j}!1-M>@@DSQ5RUQ#;&I&n6kzIQ7TeZsh67m?*hon6xayZD$=*b; zu>W=+{|I~D%*U~F14s3Zahi=?o&Eu5+k}ZG>>unLY4WIq_A>MSqCZXBiWGZc6rWEO zZcxkTnP4MRBlWHPr6;AWBP9h}0E6k$7R`p`aZvP@JwX+|6$1VOC(p$NJap(%Fa3li z##Utnx1BC0JQwxW2rvD@KmzwCZTAn-;FL;?l0gQV=InhBv2JAFpRrku&l)D$UT9q( zK9)%eX1F1Psr?}|jiPNQ!y?NVHw`R><5=P#$GpcnPXgGwxa3io;d|q9qQ<@+qNQZS zwOIT4N>LTWd8+8)@g}9nMiPwO`<41Wjw{$5gpo6u1sU3yav*=DAS3?&F@S zikcNwv)Ds~k0V3D0zL5z*wCi8ZH`g5(4PkMfv_Y^p8AwL*dI+AcC)gB(9KILJOi@E z#z1rKuvNB=kn2+7qa!qp`XUNRWE+;tF+bwXwjjFYHH$RV*$;`gPBD|%k#0HtxrdgHuyBJY?CllW(&?SfML;k#3izP< zA!A@R*DlTS0s`Mg!{R%)Y&E_aK3YqfqF8m`Q|;0`&6?cSQMDx)ChMdLE~c(-5EK{a zxZ-L}Cz9T1>A0tXymQyaz_(GA`g5btg0U`fMsiqS@$E{%n?nj#6Ik;7{K6rN z>{6N437grwO>lsFc4G+E8?QW?gPF+L16t=xN)D)&6prEwzUgtui6sU`IXSX5hX--~ z`5C874V|a`MKQ)Oau-V0qvuj2&I^S|Lpy}azTnBN>m!ckW7MaB{e1adK!Np=r_66* ze|k>NL^_#;d#PveC$#X3`}^C>dy`u>_E+1s8d5~-m;2b_)#I24Ecs&arMN3U#>+p;fIcSrZK}u zWz|r14Rz&9(uLT{KYI(w;)G${CsglEMb3BP>ke~m(8zc@u^ntQ#(yJc7FPE4M+{ca zkQ|Ic_Yy>>Yar{Lbg`mKGJ@9M}@Dy+SW7<4F08uoxaJT}DC4 zNewGbD=)J$uvXS1I>lwq_|T1x-0bGLbx}UTaY3cL#2pWzEGO|fN1SGNd^g2k@|USg zE3(udK5`0qzh$M-UE)mUa$c)olAyh1|55i~`1kr{ zhQIqBVgOly{Fmop2r&AGn(?J$SbupK=3nB)U)se#j0+bV!!Iks!p!zRyo18iU92;* zDDc)KhFCdWhX!x^WjUK{)a4!Q~QTxWZ(pV5JJ~Exz#W?+k?oLQ(8?=&&+(z-Karz55I5m5U}CV zP6Pmr#u8vC;lyQCQcj$w>$j1xHD22q6{WtgH2Q ziWB&=)KiFy3+J)RF6blX1pz);Hl~QxGzyBQf`B7Bi`Owj3j`_kBOT4+7Zy}^?;Aqf zkNSF;-j**z4`00zSQ0Lu@5wUk%O;QaJ?fw`)= z`uo$Z`GZBX?~cIv6Nlb{qA#`y3Uq?6z`)e_BWz|?p?7v-UU+79WEn)?)ckg)zU$nQ zA4LfgN9xx}Sd(8fT6cHv_#1#%1xCuqYFm%k{;kghn)!JNns@&tgD)ZcX{e-Z?i~Z> z;gWwKR={4-rTKOH!ERwVNcv;%3L`2UY8Y;Nq`UVSyu14)W_r!FPL|B|< zDeS3BGyEPrduXi6x11)gxJd0ALX>T3=H%bz{_C2|Y2;Kc?-!B|W{@it5Uy#yzbjI$$~{cjt3-!Na-9mfjoaqF29 zQ8{_1dqQswM{=UB$jw1x2`-~o;}0=R?^q4FBGJmA<=Z6i2`cy(P!ND$s;g?KD4l zj|&QFs`fM#|9q^O8Z|ka32gHQLmbJ7W+y&KP)%|YDxaGTyTO^IQ@V@$F?<^cG1v8iZ4&9Wy^a&wP|!NrEorg?o`?4J zr6Hj~Zc83L$`S$x=fs6L#<`gqipejW)XX`|>4N+Q*$n6cup+)+Op@nqX*+whz`n6QofDvuE zn8xqSb@&Wb3}!Z)LyGcIZp>2WIN z@V+T!fcP=w^4%Jd`g<6<1q8=(CuOlVHwT!SKEswVHDeSAB`{{EEz7(gxtmZqXqMcn zK7+yVX7ylf3WIY9GTtb#eG;CeA zk(|G2V?=;lSY_Abj-^bOEYAr^+a!z`i3p}rWkIKt-FzF1Ca@EnVwkFmFUFGTPuOM- z=83Uhrulx|3#t(3PsRNLR8wSzMuw--dVUn>vy zE|R;x)gpCZW(NQy@tB{kmrDCuQibqXOk)Na$d^J>lQb64>U3o8>*&*W*7LODS%q5a zZ5IuMxO{7H|C}&Py_T!`Tubo6?K?r61V!{Hr{hHNc>gqCfuTW}pZX{5XWca(oK?vY zb)@7qH$z=6Wp40Bx#D`yV)_K697VzDN+UZlfxp?2>W#w!hJIII&(pQOi%`7ccd5av zIiOb~y4aD;_Irx_>4|=<<{@m=P6+i0*f*b_lhxU3Mc2qr7|`CZ10?kEkw1sXv#T}b z#Qk>tCrPT~(2kIzSA~k%eP%<-M--627n)j~E~J%mzPC;2lX*<0tGf4-Gm|2B+gq#$ z-y-#1>unE18nH#G)-*yAsIo<*-nnuGKh_TUMM?>~E=hYEWlY<#a3x4;fhouQ_8`3y$_?vq~ZMeT%X!9&vO`7y98S1$Gcy{WLp4!DPF8jY9hTj z333s}tRkkYEF3;y`hO?xbG-zBXfar%vdwS_pD=CHm$KtvP!3 zXqHPXVFV{|@dlS_egMU=tN#6U%1ko%iK*;ttEwOO$II?T&*S~g-7k#DESR`SYYlpii&*Um-Yqe1}4#Gl#~B)Vom849QAdIIYi-?%|U@OZ1HY<;rCZ8KWS z4Y@)Ev;^Ze+u((M6V4 zfAh-SaOfchwn;ijMh>pYMHOf71#4k2evqNIapffRgpai1lT+HRpUO6gv%VikBi5~^ zY|ZKp%K_PLA0cXvZt)qklg*DACVLJ5giMx(4`wGeHy_JV8&($-hPB~pJ|NgF?AL&n zj<6I3voUL~?y$@U(MuWyT)z!drbo_4y`#bF8CWK!svSKap}EN+E2t*YGM^j@yU1Im zpAXD@sCE1*;sjqWc$GU5YS*Fs7Q>2-+je$G$LVRXNTtP`ar)y$3iwZI-{GICldOjR z`otn93!hMs71#6Xi|dw_>iXv~&4tRE= z{?-qNi%zV)h>wqXf`lRm^Q*3_S&Px_CAIy;X|Mhm6ob%okL5 zDC@_aZt;-1u&d1Y8{d?e;ow3W@}lhn23(i6jq7u3?k_^*N4L{Mv<};?-l5d0;{|0< z!}N+~!Kn#L`N{Wz3ZhQmN6qp5vFVk=5j{7DC8_XSSnpRdT6MmDM8-;h`P?yqKIoFy z*uEv7+7skmj6qxI4sE<2And5DYN%3@3C~Hd6gWi3eg|TJ4Z%9o536w(_(|)8J(O00 zw?`|lrzY48R$qU~GvSULV_Kutgu!j?1lhNxM$knzS^D3_HQCK4Iu*gKI$$}WXXVs-3IspaQdriP>1Lb&uR z-C=d|hN`EibM;ACv-q_Z0hgnraCM)gwzy4w)hzgXj;IwZaW^urnXLE6!4~PFx>M4x zOYPfKL$qRd^LNtMZ5;|`S2C8N=0qVyI^ugR4v&smvDiHUyhRPzSR+* z-uCg_b|~8@`iQE}wv>0WsrZ9M|KG<=^D*tRj)t{HX1SSzRahI(M(xjNX}{@B@J+bk zP?RrjKFsfB{g;^N-YMdD~189rcanQk{nzbW0Pp+1UocG*qoGGy;q88_j_4exqbU#*DskLA|WndJ23_q0NSEm zs0fZL1|w;n##cuckU4}Y`?MsRoY6kuL7mvSylPUX`4N59d|fdBRy12K3z*8y)F@Ha zfal9MjfNQvuOzlH#FB`wypV%F8CVhM8f*)C#62!ynNFNAN0`7Df6q5N#FewT%M?9* zlSj9Q$iO6LYnWy#4QiI1Vm5bK$9*UF-JE3&-Z#F%rIn)Q(nw6&WS_*gRumdtW9F)R z1W>$G?i#?k6JGK1iT^*w?lH)gFj~-bxlY-(ZQHhe%C>D=r)=A{ZQHi3soTEO9W(uF zNB-SAc0}fv>s?Q2IQ1J-*+e3=e~33vTsnxbxpHt|jgjG+yU1Ydm!5H8n`Fa_w*@2OcIE}dI-HMj`6GUbY#bb6$~fWMw|Y!+ zfcc5N%mI2z96WMM27VgxlE+V?zN!1;sh)59AGQIzHa)uSD)TedbcT|Mf-ZuTi1BPu z6gsKxNLX<|GGoBEz`CGe^ce$QbLH)_75?6CwXKrhQ=Q1}9eHy=)?P4UXoJ3e<7p4`y0TRRa*dy0*gT;%h}djqo*FD2V#GogwsHjt!HP8kPXd167_LBO`vTf<--K$+l@ptqOSwz6V zbS@JP56|z5ZQ4E+U-?w$H;DHv2xReaLe>_n$`g1|q zoH{r9+zm-S`oMBz)TSkDhnqq<4oy2$HTuv$)Xd!KhM`q^w&v`h#tbXenf(1;4o(si z(fSU_W87R<&2?H_wt@*E#FeBJRFUjiJc3{>O=IfvBH<>=8~57h9zh7Ls1uLh&-2VEzk6&zN*2@FNTT5;qtYLoq(m#;Y5T=V4q9_x9#d;vKNRq+)Wbt=OH7(nUa- zv+HSX(WAzPqmV91`&kPhD?i1*;*g44(swWByE)QKh@I@hFX)1$24v$S$pOQ>8GQ*< zF_cTV1J@L5#)_?G^I?osd<4FsKej?~)EY_)Me7`W@G|q7)w!xmAz*5Y19DQ6 zOBx}D?C>vE96R+@>-mr&AWl5oXvKE1*{nHC#WlQeqr;kb4$bdE?SrJm*5y0|48S1jB+SL(mQ21F4x`i z5_;2t1|_hMImN+Bz5P9VlMc98Y9+8XC}yVyPt+ zU=w5P=%zM}s!+B)_KN$W9C|gs@zyHQRTGk>*}_Va48uKHU>E>MwiS<_|#Oz?D8^%OTQ;axxT49Qb=$O z#U*9lu~vYt-tbUC)zb@sA?22Ggg(XhXC(!}R00i29Zevq^2l|%F{Pke^dyP)kxi`x zCTxc_+KnqeKXYIiw=TaMzk~OCJ)s6HBRa}fz&D=t{Gi%dEdmyJsVGxLug*1362nrW zH#z*vhGEPkF=#U%8(cVU!y3#2v3=e~xwxAgiyB}h{3J}F{(Y`8y-zf22vnBOn`1RH zm;#Q2RByvy0_EO3v!PEx+{ccbvnVvb)=TRjFvXq&4<{`jHH{UHPebhlb*>+`xl7`a zP+F)Z)LhV5vXI>i>r5iFmHex0%ovJilvy%IBtmFeGR{duXnre$#+hQiXvoWwT(P0= z&o+MeCWS0Lc6MQB>WpMaCvtV=jr53FB-vn7BWBCjQUy@RImxs7$w_j6A<3Q|jj0Bh z|L1A>+dGYv(FZA1;I>1sr7uiJ3I>^|KQ=s>x*Ysd01?`qxzrnl`H0N0@L`70Ckd|1 zi6?mR=Z3@LZ%2Pv1-kxoGHNum3F|(=p{Z1rwEbi7Q-5idf zznBjb!!jV~W5?olTyDKlE_Sn#asUOOyUyjy)oj#~G4gG2NDUD5r~lM`p~Z#FP^1Ub zNal#F;XqN=gbel^t*IUIMunMYoM?{s_aDjGVUKCPW03-!#Vde6UX&V4nrbF^C(-&am(e_w=u=ETY-fu${du%^JsTDoK-+XgH7qCbG6NfRdw+-(6x z7a5Sn_iR+Tk3$a+EjlX(K_TxQqvLT(&*4pNcpPyBWi@+`WE6;7=|EpFXHS0ZCvKj^ z0NiFu(hD%FoJ(Yq&x5WU)O__5&%?tvn^fiWt}XpfbbG?|DN4HLRog&5KgFj+WhlFHz4w5_*li^NFc`^R-gFP3(sT$%{e zqLOn$(xzf^ze zm3jt#Q)3s#HL)I}oZvwncrgl0M*bn{-AXBPWjYedHKn3|EYkAYSCm=-F-=0h&2vSH zqukthT)Oe-7NXAJ0Og(bQOn2g7k~Z5k902e%yAQs;|c!^H%I4}Zc!@?FwzpzIi&i# zvZb-(2k*Tw3YIXGj!1Pbb`y>)>VDXS8$wgWv|59fo+dqCYY4Yc%XA68M-sF}Urc!5GeJ%n&uL_gW(BA!NOsWuNXV0kSy9bdjMcNx zj#It@!_5}8*f(TAP)i6C(ky{uc*o@K6A2`_DMxvbadm;MH=31eUia- zAoTre--xBq>M~Jo9};0*?DdZ~gPtR&hrN=w$3PgWVxlE$is-#Tr%To-;{y8qLcjM3 zhWgxoS3nkD=6s~g3p~~(Ac3Rtcc_7NJ>*O7+oT=;Kh9MSNe@WXL8`X*7or@8y!3<( zWP|(@l?cNI6|czog0L3ppMR?TF_8<5c_i&j+eug!ELU znQvesB`8@mHE31azB2B?wF31!|BSoxfBw)2m3LJ~ z-%+l7UL%9kbFs4aQjsUKo14oq0;qT$@*7092Ys0}c=^8@3)t9DR=x199j{{Be1(Ut~YIJ@K6Zq8Nm1qqoT3?5dLyN z;JZRj=Xh}4vw7K>dC&(iM;jl4S}f**(su??f23#TxpbGGI=%&m%CRhIKf{mKWaYlO zxgkW%-6`ZYoKZ95i2hz2nm18{(6_IGsjD8_q&gLRY-w40DI|z?kbFAIe2*Bz)MGt- z(er6@^`HYJH1JTZITSRLOr6_K+}Gic?m{Zoa8_0VR@5Cm+9(Glz4pJSQVX_h)m|vk z6IW%JU{%xb(81QsAq^==J>JU(NFlhoLqJZqCsQQoD_0AO(Wg%|V+^HHx6kGw)l&W; zv-=%+?bjR&)JzG@x7`ajI`*5L7>}8yFxOCDaJLMz9$Q_4Ld*#8B;0bfQ8%hsP6U@z zfUOO^sYv53zme?CDC$Y5HEw+EUQKpi3=L8@R9kq}xp;?vq}8T%3e}=nI`G&dop{{7 zX1zgw5KeO)C1ip{BSNQf_ReUTC*%*~y=H39rgc33Nsf*h)Gh%UU0Tk9yKetAItna;>SupVMO2)?hM=UIuakSIMh$u0LH z>4-5IMT!bDPfo78QL~Xn%c&fBHN2PYb#N-FYiH!gwsMkzW)b~PK-&{`Iru2W1F4<8 zz+Rs#y@h+pP_lS_2#N2%qc>w@p&0)B-(Z2f%XchI%Ml z5UtQa3*@niK=qRVAobr#k9rqf!XDYZe{iVQYQF;<5e|<#by0T}|F~gAZT(#KR8=t# z-iLY`2w8g;5n&8(f_xR99hZ}&P_}l|P(659g@?O7rBO6m* zO{uMiKnnd>Z~Sh7IGx>NRgcDo2AaH34GBFzU&es8{rMZhDOdfhp#&QkPbG1f7j>_+ zeaI=kYhoy2CIFn`a&E-&Ttxh#kUdjvN2pv$((jxQ8F#9Hrb@wsm0u8d9t*=~nP*IR zbs~As_y{S@%j3i`{>5Y>v;r~6yZ#9_{?H@@*f4+*W!tkX=$!$2*o%m&hhn#j*$tj1 zK5r*rVmz9k7WTr{VVIUihA)Qax=Epdq|41 zp4N(QBB?@aS(p3wt$n#T4QFWz3G@A9SQ&0x^bjrwK{HI?5c6%W*h>IQ9Lz)jV-;G< zj-9{52kH}$N=i5Cw#9~!qxNg0(kSlHWZ=p>ZdP^yorL`GkqTckHupXR%ir!c1C^$a zm{pFjd1XF2wG2xqk1CN~48_8Ec@DQ8#ByG%?@FpxlytylwafGuFYGXFfvg0UWXGq9 zJS#G4>&_X%4=AVz0FB4-e*}**jTWEQAXJ^kF0LX1sFWx}&mLo=$PX>LT{0Tp#LPGm zD*li8avSEWN3Yvk_0!{LgPWp$;H?r6aKr2jN_u)L(K3Cu||0pKpUH;MBz*z)Z zUX@q+=tI=Z$XywnyRjl-v?pnZz;5Fxa3*nJqXM)>wosNzq0JZq3n{+1N6>z`kdU0y ztdMblcOG>+^HGRjb_)G%Ff=TzxsJ+~!i*24k?0EYhl6*Ahe^0e*~`7NUN&TmeV;8J z7$$QwfNi{&-*gKMO<2e7H*ZbCck$VPLW!;!2>X@$;Oz&BX^z#LMEon5a!ZF#+8;lli<82d~ZkoGpY_*xu0+Q<+jA)7;Xy_wEqYk{OXVlDcmZu?*3M^1s}Ytixv zYM~l`Xegg6hXObIH1W=?j1rwOlgFCyVJyqpUbzR}zzzW3#mS123eSf#@NKSdLNMV; z$z))fDBJsBs5v39j*F9q9*)UG+zdFRVySM(@^hsv6T{bAZkBW^E4I7-94gC@Q0h7^ z#}#d)D}@JbVwXTIo%a#BnspRn$r%_QC7PPR=Z^Em>u67VJ$Bk^GNq|7y7SG-^0uYT zR4sli`00E48G%1Us|G23WBt|g-B&PJfqo;qM)WMXxhB!TxOpAh*Yt-*3Zt8*F*~I| zbq|U4rVZI2FW#A5wI&$uPviCq=guZ$$pIk)X0@SZ-svfaHTaHl_B~K|voPVR+0jev z5G<3QwuI9E-FX}3W$6xSJ{8&N4qZ5F0mf7hEEmA+2zF9u1hV4H<@KCf8X36T0}tPa^6Qm zuMDV6rpJgF6<4i<+BHV%yZh0-!qO)dHl5G2R05yjIArmkWz1zrIzwTAW3B@JS(vGV z8(lgRngR95Wya$+;c|x)8C(4bG@C1Jo0HO15&f2N2-Rx@m6i}-#Xv=I_l6c8iUvIv zj4m5wsl^22JhGbXdliyuexWSkK{DE!))H$Y+T(`{HbLf13Ffj(_|8gHAx82bNxWX_ z=aStZ76!fHsdLyXq~&+q0WUfjp?VjIr*5V}h6Va4+kH=o7yCd7fmP;|9$U#1bO4&m z*T(E}E0mNkN5BogYKRk$;-y#IPbnniYnju`ZuyXAh_Ad)EtgAy?koc8l~!>^`jy8- zl55}__j4N6pfegICV$eVmjDi1q0ZD`G~;jj)gl3`sDO-@^tvM?xU~;0G~A)w1Z_5t zu%{|R(#KfiMDrLV!6s?_P(LRIsmI6C){bWtU5Dai0J5t^3JWLFA};QjIn)h?bsng= zmUk##T8!AqW*?>-6&nZBt_Q{ma=!zfw$shjt`z%6HZssrza>ioQX%?1mfU=a$#Qx~ z&p#w>{$aMhyFSfzXIv>-27-q{re}zmcCFHHY_6e^&y$%7WCdX^{L)ZqsB@dbdo?7_ zJgt~*!;W!R$zPxm$NNE9t}?1S{t?QlWk}wr5XCK;7>n03??sJU@cTK9!`a*{&^G$UJ55ZwRGFM;L%2<5hbjKu7N%8z1RpdN1Gt2!(oM zTm&<;S#S9yQ&fP|UcZ$4!0Lc#@eISgahLYUgA}}SZ_e)BVYEjEU(Y>{-*TouD_Hsz zB`KTz9b~Uxk{ueN0Q?qx`j#cKRB;AxKq}^g>Z#nNmBky=@o5#hCF%<8SU=t94Q6S^ zEowY2lSd6EM_N6mZOWr(zn^;<=?2loU$f`e-4L9ypFmdF>S@z(MVH3zKgnIw`=TZi z4N_n)&PC%jKaRA|pcA*LYaE`_9Q(H~VjEmqgGsk-cW}ZSMt09fA^A2x8&6Op(9rh& z7GJ*4tSKu5yLsduOJ_MB_^^RG0dfe$jiV8-n4a??2L1om;kld@bA^M!7QEb z78E4U;mvx81oMO?{P_n6N)YvMkK6^9!(2mWQIYsDDbR*6H}UBb8a%+3H{qD-^Sp^qB&WiFd3kC! zXHGwU16RqQKS05>wM83sXox%9_sjXt%Qp$%A5WAf3qaeL@A7QhNhkO?A$4rIt`R?> z8m<+=Rwg?CtmiL$IDh1ERsYGZoYaS|D83v!mzVYWkjtjnfbu5K^q?i)Lu#BF+fUy& zB!@bAd|Y{W2RtFg5E{}j8To25YN^~0?~W;uy8xnTi`l1GJmF)hqh`Oj0vG6lxfwN( zQ~&L?!pOJH*-kLAW| z#XB6;FwN^PhpBLR2WE}xw7a`OC#rmW0|3%%LsgF4sR1!EDt+4?aC1qd+-B>yQ(o#| zXsvQDDqU@_T*AxcilTlceI( zezm7X_|Em;LTAt(=!-xZAb1PaW2`_YGAH< z7>Kt5R(1zd!)|R^HeFJ-c{nr=*I8V`KY5n-hUd}OtzOx4!NJeWLWt#49-(JoQ7fhA zDg_LFy?dqDPsGy0E;J>Gg7mqAq6}@zIqLV(R#)Z1g!p+7fz@e1 zvfd8C_CSXNy;nl>51LQlTnaZO6z7#t`kE1BjU^Q|2isNqzAnkw>tj!Dpt>-FL4g@E z;c=VBHdk9~#z|@KAMd*b-(|kLt1qLD4l4;}iJg^ABAL}%geRl$?NU_sNTPIA!M&37 zW6Lv)bckG2+veU308I(*tQlgx6!;V!cid^bdxWhFkndD9(rLr<@ai3%Z^pvp*>@_Q zbeK6Vr@~xA0*3Az7}qjyf)J|#Jk=ZB>hcdMedgx!ud}hdVooXL9C~10@+V9~)~64f z`VkYHy0>?t3>im^$t;86%D}ai?P&^7a>Xm%p4e7XJX$ij5B`FKdX+Nf(IB{7a2_z| zKeil5Wz=J!f2{cc3R?RqhrUH=sULdJy5V^-xs4^C8+G)R?+lRUc`RoSHh8JaU+10( z*%J^ZW<0!hL_Q$b9U_u;c_U`EG0Z+BKHyKzT$vs$8ntOHDBGTrR7AmdF!H1R9xBuF zXSDtP(Q(!>t`ezJ5ZcZcy3sknPa=&RySq*I^Qs5r(xQ@!Rm3%FCONyc+CNw+IU{}4 zscO%~CH^Gt4-Pt&S_A(q6bkw0IrKyarBW6g$W^LFJG2STUI)!#X0l)&w1t)z_B5B- zKqs3e#Ht~9=iGTzpNOp_d(ePJWUKXhEr8=W0xEL(s3Ubb6>2Mt`OTbEWH#}CPcWRT z6pUnhGxDX+OUfMZ7D6J#9*k-Q3gN}&6l1$1hMFfBj$~-tPLc&Yp{h**K!pJBtY&(P zhD{e!&?deHH)A5FO4SQ*bES$|y`WvD+%7B$H=dQvheQkSq`+LiFSQb6@R48bgfF-% zh2EO}5l=MhN56j0>hQoSthHfUJQ`3jWzWF&v0UCi_MVd5e-COG1|@3uILxz4%wgJ0 z!Yk^1yA_ea*-_l|DzO57X<^yB9f* z=^-K5?MdX(VJ<9w4-ElHS&^h=X!xSjB6_YLCJWIrE-Hi<)cVNKfTn<%oET&A0g|2$ zuXLcy1gbZMAsqq&cGP8@aWz}2m`6QX{R&hIUHEZ!I}Q-7yjfPhKpda;opYtDCUMi- z*#q@09FQeuy=`8K2MD5dc$8c9A$T!?ud{MH%nBk-Qat6wh{+AQy=7wl^4mbyOU5Zv3sz@I+MT zETg4+o!3_juUUii8u6I;-bJT`_vO}{e9D_~vKdX5nSf zTh}>3cs6)1d%ch;S_Wx|%IXJ9Mr1;x>`3Us@&K-8_XyW?$Hi3}aOkZGH)JnzO_S+d z19QR`xarP1{~qygJyE|F*0y>!|7 zt}Kf4LEo!e9tnt6j3%>{o%;s2R05qmqsMw!Ls4tS*wEOefZ54Y_fPDd$(&po3?xp> zjRY9g0;I5)TFZ3V%O;1ZdIdN>tdA|lqdgxZ#8P!NyBA@LNsP*KyvpNhUAp&r^utb7 zi5)IihqBvgZXTKx)!T382y-KHoOB6IVRC}5&89Jy7e?uLuALTS{Q`Jx3T5nyIy=MM zo0S$WRoc&uN!jot9508O<;{PwF9{R2&@li$>oHV)49;wdqKf9zK!Y=aK^-$v<0lG} z0WZ7IsG(;Z$C{!I)P#f_V{NNv_KTao#WGDV-24zITIRD#=C-X~gm*;gG(pxBaPLrJ zqSX3Y#u$;}g%BxUVMKb+nBMry(Npkg54Za+Zm=H9&5D1#(NmH*W5S(Ui%s3XL=Z9Q ztYEk6?#dw?jj833|5`Tk)QaqMD!*?i27R|uC#%}u-yIok!8M)l)y)$4emtX>B3ela z2}gCZeUXz#>y4?;e9O`1bRf-iP<^H}RIx`vW5(;e|~GJdLLvh@m1>M@>F z6XBVrhE^tco_+I^+y$J!ZS(DRP>NA0{KJJL7)hroYbAqbuWB`Qygvzb$=XmxXp_F+ zYrmdyyIe4SMURFSq2mA=OW2y|PNk^haUxp^d=kv&QY{K9!qCz8(hB+`VQYf=on28+ zro~H5Rc6q^7PJ^kMwH}0Q$XAHS1E2@1Es`K;tesCoR1S(KN?$snqJ9H=ezS0=R0vC zvw{c8t6_y!GHc5w)&Pz!BItsQ32-^Sgn zq+p=$_q_#JR$5RHAaoqU=ZeAVNJ(p(FZyNKK|Woa@MBOjK9yZ(b_;l252ZbF z5?+XL8_N2*h$|5)SW2~u?o1~RsaLqNewzw`O1(bl9zl+(jH?dm{0vt}G-u6-3)M@m zWqomAq(M?+os6D6QoavnAP@z)R1~G|;@($FNOsidA5_Pzlr9@p4_qzgMGTi4@UCG8e`owz?}$u z7u*>*fkPY5nOe`E)rE56AY^ah-i049;Wn^tt){-=jkN0V+U>Sq5WU%%CV(>B73&>i_MHkUhm+a8hNZtOB0H2{+OP7D8>brot3BrkMdDO zn9cWq#m644m<`v|7ukVCCsAF0KVRP%`{8RBejv`UjqI}ztYZ|wy9BeaYw1KvO&v5g z1OY)F(L+=AF>HSa+@2=zw!jqRj(Hg6%8Dbh=HO23rG8L)AQuVRRGmeWoMfSh% za@L5(k`1ur+PH<7;lvNF;>V2|x`ti2;RF(nE}R>FaUh#DW{z$(VY<$?yF}L(Q)MUa zf@UlK(cBj`tYz=EKP!rMth{!X+fzi>A!?xsh*qF%aj#18j9(U)mnneL>H?*zK6Cx& zQx|qJLHO8QNYX@cV-ew}b?YD8fiBVWd{t>SG~RwMQ>3vdSwEPTBCcbY*; zq*>^jxN?fInR5Uo8^ zXsj{ObY$9>cy$Z@!OP=JWBNbTwJiTjH~Rlq*9wY=$*QRSzv@~=V^in zjLiQNQ)6ZOWxD>Cx|ZcPl>MJ|EyFLD@qesq*;)Q4rpC|?2@G^Ba~M>Mr{Mg3Ow$IgFksmZ3P5?64#X$ z*#Nfs7j&{_uoAG*AwD#99dMi81{o7mf-IK;1jHqdF&F?8fRi7}4|x{5w+~S7wG&s1^@8J63K6Y~&BiU(!Ols6Bbfe+)np$1&T7Ar4my!UcHw zZ4Zzdh(pcq+jKm6KTL8BO%KY>1vDjKtIzN1n0ufLkJO8BY6R!t;`0FmzyVyDDUE|~ z>k0q}%ny6)LW}B)a%<88@}m=1fb=>w@D1Zhqy)?*lsT2f9|Pa3rOHB)=DP?{#~S>Z zw1M#m2Hcx$n~kdHn9`&9j^$b4E<{j_4{izoatixKm4X4U2k79^$n@kk@g;hE3i93o zjb<7bxYR?b2gD9oC7nfm={G%X%WS*pyY*j8k(6s09Gole?-;P3tEU_mKm2KaE-6%G zmzb8!o?0MvfT z;+N)xTCYh|hHJutm| z&(OQpbE%vF+b%Ht5VtG!bxh7cpG|iB$3JSNWjv$P2fsJiuC_S4eC6M8)4riU@q(Lu z=Q0E)E;gvwzNrG!jQFm(!I*yxY+!1cn>;%@d#=`DQTfTZ;(%{u4ts81Xu_hecIas= zgEPTvRvbQckv9joQ%%&9X{v^ zLVpbKxVhl9EBTSR6Z0xRcD<=%HC}Z_eE?Ptlbo85a4P&Qd63Mod*`;odubV2Vu^~( zffpy+;K+)TwLSYP(|-7}FSW&H@S0M(FtF#M$I7j>gz~{zAjRF@_Il-IWM-fBhTZ89 zn@q)tlqNEZxXJj8B!t-4-*-~6{RaBk9lr=T54nEgy;=)Cj|4tat370!S@VSTZGTRf z=#>x(S3Y@1xd3CGS?Hs(l+dT-CzrTY;;eZ=OVcbze~61@n(X53yKuE49^*qtXMY=ozwFiKH*#b}C ztlMQjL0AH+>us(Fsxbu!4GDUWQ4XFvl8x%)fcw4f$=WKK9FNB!DE ztR*~2d46|yQIZT~+9VkFZ(M>J{ht!VLFK^GoVQHKhWwG{i9Y#>Rc<(Bs6Aoi=Ph(P zgk2k}!eb|?_>Cc2QML$3+(Wn}MEjKY6#bz}Okj``^fI4N#-5dF9@Id-sF7Mqh(dND zZA+I+y#+ngqt3XmI04Zp{{YfHgAH0JB-cD!YViA5>#Q63g8R}3Ag5pjvBSKN__?R8 zGhD(<(g9*5ba>Cmn?6EwXgwAuAHpQ})`D5v`HMvS0>!21)Daoa)+h+3o`_G4n9lN{ z5kmBR0=ceHMS$&I8;pt9|j(Y!c%A$@)Vc zS6we$2^;=6GZohMBS;_@#uZ5f_g`;i)72G1zVsAfzmQ8%)0G0h9Drv1eJ`EXhUr!MtVU}QemuE5>;%1XzW>vzY9vO@sQ#q zY2hIW^OvE1>Q^zqgz+-&vq*pqb3WquaV!k7C!i^gN$h;xRSgka{tSD}5{%99`dRvx z&;fDQ(j?&J)i#rEY^Tn?W)Ab*RyWvzPuh3?Eu?CM+gN<7;$)VY>c1&kR7|%+**R|u5l9=daH?eov@NAZ4Gl4_mYs9+M;^1)QK|R{{E7;w3;o_hXtxHfs9J; zwWcmv-=V@QLYz(VnND-n)StKUtl5vvfYZ6vMlZcSJ-iul1aBnZkM$9S2pC=us+h?p z3OeeYnMw4eZjZKA=*VS4)dw~1(T(E`>}Dt9CJ_)9zXWcimJ~4|>X#i(2O;k-Z}(|}`(esONmc4Or^$~MHuV-N$fE14u(+nQJ3ltzPG z2`po<`Hq?9_RZIGz)Jxq=~Y1Gb685@_ep}I;%VZ$Mbe>RptWlAIyyO-4y?z3TO_}4j(Wek|OpY=B= zktNs8zZ?(hgL$I9mmRqTE_PATsE!%fcT%O2UTjb1Mw7rGbiWDJXY26WENlzzTCMVU z94fgf9jlo00S~qBZz3x-^N%qj^1oxV$4Wb4!AZ0=tN=L9YwqCPUtt zP{@+PbZ71gVX_l?(*tQa>3`Fqx2&f|JxFkD?WNu!o=Gy(IR`N~=oH7WM>5sm|Ma|1 z6Oe#%Wr}JYBi{pnEaR)!LOOT^Iyjs}43A7rZ4C_C$VDV{?yzihv5zJ-3nyQPxM}U@ z3&TEtC%Cm8l5!5eIB5;SfsJrfH}2Dt#d5RHh)(HMLzD@P1Ve#^OYSO!`i({e2JN@f zlv43g7gGZXo?l{-yE~oqPmF3euiFfh*y06tb?d6pw+__OczffG>x<$}t(e_ew==o$ zl0qqW7+k`L?}FB_f$%72Dh`ygEk~;GULr4aiyc0I~Q5kXwY` zrU0ieQ01J=v;ZsSwj~6o;wen0Z>%okP|z_iHD~Vb&Pr9PuU zqk(>fKv)h`94nk6F2d9mKBbak$usQdh#krF`(p;c@G#g{$3sAtH@7iwU&Zo=i;TmJ z4&sZ0W9iw_rtJ4Q=<;B#2G0D+E=R`!k9P)_H`hn&L&Wf%c#v$(WkX}OEwDn!1Gc_a zkyR2~GK?D^AZ*cG>gcClIQ?}IPU<0e!tDqnKR)+|}{P zgmsCdbcuJ=i@kb`|10;9%3)1rgG{9QM0_>BIzdic!d(`UT?gfbd~v z&IgY=DDSDLbkS-aqh8|g3}AW$q45>;>eKw({4ycvgT}x&+>xs{&_`XSgQ1mFb4AfO zb-17ek;V<2@)*`=*Rdu&>7y@hRc#8PfkO_=Z#O7)d01*+G_3${gY9(-rO*U z=-QbSpmW>RXdfh`Ka4N+{G zg7)AQUM4rZFFCO^QPN+SHHxr1yhV z;b!ao!K&JZ?Y(k@X7wa(5?3gbHWhOeG3gThy>E?86A2yGAsM_jX1-hverAC?U@ciU8iz9{TIWl_NY|?r+eoLB}OtUb^OOWQdDb_G3D8zSgAQ;dF;5K z4{ICZ5j0bYX58ll9Q{n2&LrLm^gF074~Ytfk4tcaD1!sels5$7QYlPg;G|8j+Q@jX zlH3If3znn^87EHj+qka0&gS@`aV3~56>{4eBeFy@qDh%0U|5u+F>N*gQpkwgms_(r zRAIFgoU$o?Q&$@dn7!Y9uM>!SvBCSomU$CzOzRT*1P?xY^WDSiX479sAh-o4Z27Qo z?g3a5j9ss0f;O zi0n)D_B94n)y!Hrd#1!JmLI5QrxZb{VsYlw!)(JHVGSE>mgOoXDsqX|ISc25;#wXA za^A**t>0Q8ZKzaYtoqrUxmhaS{AE>_<8pFveFA&vS*u?`Pjx98i2Q*UpRvPox<(>vQHZw<(wrzkn(i`Melb9i>D z9iusXAnP1O{tcn_ZOvtLEBMOWuNj3}dgqAq*}>zVF;m~Za!+?{V+#zcj)-M`GtRd} zU4xtHdkn{^o?OJaxvCNAk#av`3jTR@6X<}LdhO(};L8=?j{_0U)LqCLqOq_7;xclJ z&+`#RmZpdPN}gZ0T8_0!IUIDT_Q5RNyHSBU?J4pA@djQ(-QA6m(PrR+K7wu6Qir#9 zs3?rQC7j%s$q5`SAv0kjl?m}n!HuPk?=d?WxlxlI%QE^{pBtEOBg%fXW}QiN{ECC| zzgP%jF3iCbRBJws;H3|etSCN@K>07TjI$aLxGVyA_;%4nxHM8ea!FB*ecTzXBY<)) zj3cOqU1+MZx*Duhce%bYLf=QU8&Sd6d)k~%oCJu*eP`1ak8&*iIaiGXT}x| zcXP5qJ_F8a)@SB*n~KI&6^28vP}F0T*fyC8R%Rl+SSh2omu_Z_7Pm>4C>^Q3l2`0U|{z$30 z9D#P!?;kN*=l2~((Ec?C8|pdTjRibHDx|H-atkdK5~-vKv`ZHG5s#TTh-Xh+ThUZ26`<|cxl=! z7=pBHevZA;#7vzMK>Kq)4?nGA1ZE81)r~oJd_&Nc8OWZm{8e6EVqA-r@TO~us~3!< zWDoSL$s1~Y1UB%zUn9+wT>eIvXyEF7${)B_mj+mVRpy4+|7o`@b}?vi$I)nmShj6f z^Hf4qX9syWEHb1&vYw`%qv#Y{$#>46Sir}cec30CUiV#>qY(OSanEd4<6FJ~UmW>% z-(Mb07m9OrgsmHqOaXsihQoFk;@ugM9>e8?agnD4GuMTo9(n} z>Qvl0)|A;QRK(VTG-_HbXn*V+)$Ec@*#s^;0Fhn6MxeiepIKQ9{EPaN81Ai-54xaA z8;MhQW|*@j&jbu7GC(U#y|Xk`78LEBUfDW7^gZnFLL7W}s3fG~8r~?A@T`&cgI&}B zn~aZMvKHr-3%bE`OsV3x1%Si&K9Hpn(C~T+49k8}>*RL^^pH*<;VCgj(=+t{RCXQk zRCoWs@kmIbAtKkv$hiAn7m-cK-l2;t^Agv}N@SHSqhybenUPsWWQGbE*?S~HM*4qm zJv|xyp5O29<@IvEALpL)KA&;U;q^ZEEh_*nJj%^KJ+j_&q@Q|@JDFGC>`{jvQ?C1? zn=4!$L9R1iEbHmimr%tm4c1RYctGukXI)Qn>XbPyjk+jh%fMzl`REp)K1#Z$a9v9@ zUr9?gY*xV0iavS|I)?B1P=ETXlv2Qpc3wf@R#u4cOCuIsLAx>D2oZEe>Ny!DW zul8ekvC^ON8DMc%eHl1dENQ+xix{>#K)`!yiZ{_<3(*mC9(EdVvqWeu=;39P#QhwrBdwh<0eSsCj}R zICLfxOI0I%)JGGPdS3Y;YCv((HLsJa1A_0Oa(9z6D5Rw{Ez?+}E?z9JTAsE>jfGSg zyoVi_7^V=4vDu6}nR~b1 zNiq9?=CV86XAT@oYGgYYfPA}B^ltoRx{|-c2e;w(lh>MsL_DD;aTla#!`VZv8IE2a zVzWDNX~uTx(9!$z=^P}Rx_!1cs}}NS-Tf+g2?kqak$ErOBIP*8KW-$B^-;qI5lwBr z;fW1X`Q8)E9kYLJ;B&ct1kw@J_>-Ql9XTZZupCAl=CKI{tXK`^ElsUj+sxUAIdPqt_vY~50%t>rl^yc_qw#)Z+N7Z zukcEeozQg6Q?pAi55-;jV5cmx+Ls}GhvMKRmx_~aaaqv{A88hDOVG+59$VRzq`t1$ z<13`W-{?Prk@M7?&^vc!ec^)wo$1?B10Qb|2|1?I5Ux6r+=+*4CgeF~MYMHOev~+a z)R&>GZ@6^AGl~Pyy$~a;C0BiYDPC*xN=P<> zaX5`!5tKG(l_^t_Ev^zU=o$5Gym(J7vB^$?oF?2Nsld>;z_o$nkmGlyhM2d7YL3?L%oQq^B~92xOO?S^0vgR z%1UNgJ-70XixxP`%t&)Fz(1A0crwA&uG%B4Ha8^2sh>n^5pseFMSgOT9AaFcbp*X) zELsuW&Bq?lqNIZ1+2gDChNvE?a~I$JsI(HoP5*$S zt|gc2Cq_=Zqjwvvw^x#LR6mP4ePL#8>*||~i(j_xjW8!|*3DN#ie)mGlPzD+756RH z8C}xLjuvI_$|*9j&uVoTbeWY=N}cbWxa?dcrq7o4cucXj?yux84~j^pmkKkY{7h>Zj({o;p3pi_F&baC2f|s!)(rKcFf;PqS80J9XufD_dOeO`$S} z(xC$yLo`((^odl(9#gQ$bROI7FgKNkjy5{2s;~8n4`h(A?x7fA)6cJt9^{Cr)oC&3 zeAr^L8S7*czShhqa;^O3T5t^u9%{;UYpSK`uEq$iiMQsV&d_O5y>`2KORhc}4evP9 z^!9)k>BDpdF1xneHgdHG!LqY?SIFkaRWm+MHaMydSfr$qzbMSqPB}#VX;7w7*jVPA z^I>^#(XCSNY_l^x_ccOtxQ;z(+3v|to}pZp{qXWO*Tr*vc@KlT6R#aoIBgj}%Pns+ z_)JhLmX|dF9V9jOQi|zj=D^ZTY$aPUPX!y4`H`hSE4O>uT`4&RLdus`+ffjOPkx?8 zqrG!Y5aDvD^s#AbyEtkaH7yn~Rg|pi*2RUKH@*$2wCHA^>tDYvL0LEzg$daAGiPfg zXx;dbXHl&0g?)HJBu}vF>M9-tw@#zlp_V6C*N@gEoHMQ0nACdfS56-m&!5;ecZ3Uh z^^DKe@w*Q!?3Qdk8>T1T8G)RP`r6sSsiqa%eP3Pk@wH-}+k&faiw-uMR#m2lJuhZc zw2*8lX@oOefI|&NgL3K5rSm#Foflbyf1LCNgG3vWIS-jWms{kMba3o6Wx923^y9(m zkIb>ESkJJ{$j7-feb29T)9WUo-C*xgq$MV$jmIGWS+jVqrB%Mp2htg9L79!Pu%H^8AoNR zjd3-`8ADZ2VQT5*sqyY)>{g>xvrl)7%G{^7Gj7PtFM`Z%F z`S+u1K?DW%x3WI{Nc$_@r-4kmU^`N8%lJ|;Vf9v8Z^*BY3*#kl0Er5$|7y241w3h~nK zU1iC6_km3`b3AhKbM9!atdjn~c2Y|9owQ?`IZID+k1OyhiG-bCJ_KkBHskO%JRBx* zT|y_urC(0bM&aH}8XQ?Gkl3!^y2Fwh->b&sH64w9k-o@U{Z02Q+0x0VPcoWZPfYXJ zUsL<>Dml$*`!;#w7wYM5-&_l4rqDbYrJl92I_E}kAFw$vQ)gsgsoYI5$)jWZEdVdp ztwEoD^A|C!x`Gq+{ZO(hJx)X0$ED62&nCBAZPq=#Yn1DZ)XTviC=Ese#g$uV#92Dt|g$2lHH--vPN za}nn?!A|MjqFNDXIKWZ3v}M5{qQmMk!}EUWr1)_s2BWXhtU^gLnzUNgUBl`jKJdE@ z%thqEZXX>SZ&!_RIJ$_oJ433JXs&9=o`W-9ZD+|RNSO1yqODs9rJlZU4ur+T4{{>n zgavcOTTcg24qCpaS(;Cf^N%37N4#2O(5aLpedM)-d0 zKO@PNzF}qVKU7Cr=lJ$uTrd^GnTvSVYbz$@R>ck zHHnCqpb$E*Zuc3LXFBkh|3$+$jS``@jgTG<{;(CYYJnTR_WHbI^lKmPq{BozSC=z} z*G7)KlXIwJ{aB$4V%9N3Q!?3(F=T>_ggO=?-(??h!+bvx(CSxdX#aQoGHmYo|CSmm`$@gV7hgn>4&&NfP^er3)}$00D<`~8?t={{ z_Kfq>QEC2%{0&b(ii!!cOEIR`5+PfkF?qw8Y#<^Hy*`&LD(<6XI_@RiY~6YJh+{#2 z0YAG>yCXwA#Hz{WO!YcS?IH(9p&a-N?Z+gxC6VQIUE1rxQL3Y&izL$1MLlU;Gft<3 z%g3KKlfLNm?72a8@cBmH(rVi|zqU_-5#-_U=N0k|USVNrrcd+y>+w~N^u6d{&%g2= z?+d3>_Zefma;EI&83zKo*8@yx$4x3IP*k;()MmjWG2D3nevOg(q)5kHG+BbY@yx~n z-_)jAa;D_q6XT5*<_7w~nwF2%HOjDqkQmi%p`1tryKqX%<(^@WTHkZo$Mk#Tb>{dP zx2i6ipAuC zj?zC5oHh_-U;9)a%>bm+pql`+mMC|bt-D|j1vAMK`^Lp~rB=3R`Jjlf^&W(@i3-S#{2ErU} z2U)55k02jJWuTJ{&dXO8$**4Aj5FeCJ5+-xl?H@#Gza|AxA99>$pr%5Bu0y(HLzR5 zc)3`+a*sqmCjWQy>x!e48#cm$k*uZVy$9=;qBNycAFf@c9iaBR);#`L2muHqw^_9zRLH9ShWTHcAF zQfL_2|JgL%UoZHfUSIDzKClEaY^?OmZ`1NQnG5Aa;2Ns2gd{-U{F!KON~HPxhsNh% zILn5}_3RJ&`K5!>@&1-0mn|eMD7g8bD$m~NlW)Da;evn4Vy$xhtu-vXx>_!~@UDm^ zguE*wX2z(A>aS$u{wQB2cuCJBM;XHhe|uFLw@7!*$eHacs)+=?1I8}zO11NDY$x~e zmn@`J7O)z^A%-L4+ip|6(Qw2xsV`2_U8Nw7db*FsiSbz@X5pQbVQs((9nY^t>DAxg zQ405@&)ZVRM@S#@`nF|JZzVz-913RDA73=9dp>eT^bE^vGDW3cM&e_XY)FT|(|*fO z2UZjdsYNU@AKJdsvngVEK59NB2n;pOZ?H)%U$`f9 zyfk|mrfZmD0DOQ(zV{UbjmLZv#KC_S@+IjD0Cg{}^r6`yzE36``ScutP)?PcTt)Ak=Smmj#;?}#T zW&3**F2qEiHYhVUndF`fnsQ@kQ%WCx$uw10diO*UG%QQ;ZD$cC{(W)%TM?Q>a*lr6 z>5sA0bWwb>Hy2vWER`w|GjP9GP1eVt9vcxiM%gMLM%t?Wl30#;x|8uskmb9}s@l!h zhs{(vQ7jLt3cEH%Z+9wfzAsPEpAWfok-vKxOd)2+TQ#eZP95P%S~_SSS-`d!J$t*s zPYZQvLXelk`NKh;d$e3OvV;j-CG$+?V(6yYAuKB=jVF&ZIq#>APnS(B=vfZ-Zg)3D zmRE4od3gp1`D|%+3r}#uhdMgOIcsxAPBYq2>F8CK98t=((>teZyw){uiudP8l(!3) z%D3>57}8Y%rD++o{T$m~1i8*OEfZ-4wr(HHSo{vK5lB5uYwE%+P|VIq&j2 z%R*20gi}K;sxh%0(6UR?|?$>{8kDsW(ebq%MdNEtI|eL z>8UlcZ_RrwQ&nL0tWUmD;_fg$SQzl_>>pSt^Lt!IACM!t$zpeywW_WHfBg;S^+0d| z@UQoUYL-OEHPP9SfV?ga#sT`0twZKcF%>G0v)nD` zUE5lV04Y@p$0+PT(OZ+t=&JHMnVc6gLXnBnPv#}=z2;ygB+ArVh2`+cl$oLU{MKG) zy>9FDddo6*x?uuFANO<_{&g0dubOt90kZL?O=x!AOB&8 zLotAe(N1wqS5nzO4?TpOKjLd9}?5)6twpb$z z9KjN2LiqLiCw2R$I@1r`rym4y2i$LJxY;kECNn(leQy{ z_f8f#9J((Sl6WI)V>A2>z%ynhCOBIh-Uw$0(uMsXv|EDUNHG2%Eh!M3AB?rK0feQn zc;lTUbsH@3z8?TF{QP}zYl%&d*UKWA|ZXZw>C zPjIvb6HIM!f4j-V3~(5c^lpbE(%*mj5l{4&k+r2Yz=y|Knf-iaiLZJ(GrxF6#{VaOi?{bc=vph(ECs|C0p7Y#sA0QOJs>5&TygMfPnfJzrR46-kv zQr36^kjM6h1ZNu@2u!RvAc4iOb~xg1KwwohDM>9cZgB-kEhupFfoLSwgsqtk!P*uC z$NWecu#}mt9YNd_YYT$H0O>Cvmj66xni&&J?LaVMUGGdTp!$AGhy5<}f5W1#sH3DN z2VhZ<{R0+2PmMUj4lGEZF8{%T0;csh7C3R}oml?7=KLEJX<1<9kp!Tq{0Rwg9bz{U zqCDFlk?g&A0sZsEn16#JqbV*SsR2My)&3I}Vu!oDvJ(pNGRv<3{S4*rWP$Fy1MWa%?@Sir!!IoSdjdp!{v|W_zd^YwEh8$e#H~sI)*h^_ zv8uC`Jg=%H7EdsMqJV2Fd-52$FL$836Pft*D|>!M_qU^VYT*5E;Qmc7aCd9XKgu;Fo1^n-6{b#Vms`>wArj+OvZ3Pu>d3z@_1#7(ZzFb7?TT|gX*D+va z|Lx14dW`?#OX&VBTnT#vX9pZ~tnGpI9XP|tnHdvzaAL)Qpg+0I!;)7N3;8rKKSjk0(M>Gc~gV0pCBN@&1Gcg7IMha7Y-4^A||2 z9UH5YEzX1-0zyH^0Y%Thzkss@638DD(BC#F1_L;f_yxlMW8>!sJiglofe<%=T{a97 zg8`~yw+#?*1y-ItHaHxJ*=`#WL5$-b8$WU9-fcr6A^XRL@$Y*t3bk)s2m<~G8;qFA zyT*XPps>9*3=)X~_TydcFh~?;Z#xJI1$b_EI|vHFzZWwEfrReEjD#Zg+8}6t^u96B z=>79Rp^53f3m*i7!0hV}14jc3%kFk)3~j|~XsKFk;tbRQNB3b8LYFqr*uL!kDL zi^1%h8x(@vHwIuMo|<-Hh60Y>I}a!zRJ#`+6p94oTlc&dMy!xMHVlNg6YU-Y14HiZ z4~Bxn_Rbdul+fNW;Bd^o`T(?aQG3TlK>7EzL%@Kj@4q4(wnKMb+2KYkehz8u0J_VVH1b{z!@g~+FVz`LMNLdMxt`Hg_j*>z^ zAmZY1xC9C&iUHCRA|` + +using boost::math::constants::pi; + +template +inline T area_of_a_circle(T r) +{ + return pi() * (r * r); +} + +#include +#include +#include + +using boost::multiprecision::cpp_dec_float_50; + +int main(int, char**) +{ + const float r_f(float(123) / 100); + const float a_f = area_of_a_circle(r_f); + + const double r_d(double(123) / 100); + const double a_d = area_of_a_circle(r_d); + + const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100); + const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp); + + // 4.75292 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_f + << std::endl; + + // 4.752915525616 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_d + << std::endl; + + // 4.7529155256159981904701331745635599135018975843146 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_mp + << std::endl; +} diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp new file mode 100644 index 00000000..ccf0ad97 --- /dev/null +++ b/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp @@ -0,0 +1,79 @@ +template +value_type derivative(const value_type x, + const value_type dx, + function_type func) +{ + // Compute d/dx[func(*first)] using a three-point + // central difference rule of O(dx^6). + + const value_type dx1 = dx; + const value_type dx2 = dx1 * 2; + const value_type dx3 = dx1 * 3; + + const value_type m1 = ( func(x + dx1) + - func(x - dx1)) / 2; + const value_type m2 = ( func(x + dx2) + - func(x - dx2)) / 4; + const value_type m3 = ( func(x + dx3) + - func(x - dx3)) / 6; + + const value_type fifteen_m1 = 15 * m1; + const value_type six_m2 = 6 * m2; + const value_type ten_dx1 = 10 * dx1; + + return ((fifteen_m1 - six_m2) + m3) / ten_dx1; +} + +#include +#include +#include +#include + +using boost::math::constants::pi; +using boost::multiprecision::cpp_dec_float_50; + +int main(int, char**) +{ + const float d_f = + derivative(float(pi() / 3), + 0.01F, + [](const float x) -> float + { + return ::sin(x); + }); + + const double d_d = + derivative(double(pi() / 3), + 0.001, + [](const double x) -> double + { + return ::sin(x); + }); + + const cpp_dec_float_50 d_mp = + derivative(cpp_dec_float_50(pi() / 3), + cpp_dec_float_50(1.0E-9), + [](const cpp_dec_float_50 x) -> cpp_dec_float_50 + { + return boost::multiprecision::sin(x); + }); + + // 0.500003 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_f + << std::endl; + + // 0.499999999999888 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_d + << std::endl; + + // 0.50000000000000000000000000000000000000000003925935 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_mp + << std::endl; +} diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp new file mode 100644 index 00000000..6e7495b1 --- /dev/null +++ b/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp @@ -0,0 +1,104 @@ +template +inline value_type integral(const value_type a, + const value_type b, + const value_type tol, + function_type func) +{ + unsigned n = 1U; + + value_type h = (b - a); + value_type I = (func(a) + func(b)) * (h / 2); + + for(unsigned k = 0U; k < 8U; k++) + { + h /= 2; + + value_type sum(0); + for(unsigned j = 1U; j <= n; j++) + { + sum += func(a + (value_type((j * 2) - 1) * h)); + } + + const value_type I0 = I; + I = (I / 2) + (h * sum); + + const value_type ratio = I0 / I; + const value_type delta = ratio - 1; + const value_type delta_abs = ((delta < 0) ? -delta : delta); + + if((k > 1U) && (delta_abs < tol)) + { + break; + } + + n *= 2U; + } + + return I; +} + +#include +#include +#include +#include + +template +class cyl_bessel_j_integral_rep +{ +public: + cyl_bessel_j_integral_rep(const unsigned N, + const value_type& X) : n(N), x(X) { } + + value_type operator()(const value_type& t) const + { + // pi * Jn(x) = Int_0^pi [cos(x * sin(t) - n*t) dt] + return cos(x * sin(t) - (n * t)); + } + +private: + const unsigned n; + const value_type x; +}; + +using boost::math::constants::pi; +typedef boost::multiprecision::cpp_dec_float_50 mp_type; + +int main(int, char**) +{ + const float j2_f = + integral(0.0F, + pi(), + 0.01F, + cyl_bessel_j_integral_rep(2U, 1.23F)) / pi(); + + const double j2_d = + integral(0.0, + pi(), + 0.0001, + cyl_bessel_j_integral_rep(2U, 1.23)) / pi(); + + const mp_type j2_mp = + integral(mp_type(0), + pi(), + mp_type(1.0E-20), + cyl_bessel_j_integral_rep(2U, mp_type(123) / 100)) / pi(); + + // 0.166369 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_f + << std::endl; + + // 0.166369383786814 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_d + << std::endl; + + // 0.16636938378681407351267852431513159437103348245333 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_mp + << std::endl; +} From 2b1f19fa2bda6edd6d14a7e9c2c7b50969f73a1c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 9 Apr 2012 16:58:30 +0000 Subject: [PATCH 167/256] Integrate Chris's FP examples into the docs. [SVN r77851] --- .../boost_multiprecision/indexes/s01.html | 8 +- .../boost_multiprecision/indexes/s02.html | 12 +- .../boost_multiprecision/indexes/s03.html | 16 +- .../boost_multiprecision/indexes/s04.html | 51 ++- doc/html/boost_multiprecision/map/todo.html | 3 + doc/html/boost_multiprecision/tut.html | 13 +- doc/html/boost_multiprecision/tut/floats.html | 13 +- .../tut/floats/cpp_dec_float.html | 6 +- .../tut/floats/fp_eg.html | 44 +++ .../tut/floats/fp_eg/GI.html | 161 ++++++++ .../tut/floats/fp_eg/aos.html | 118 ++++++ .../tut/floats/fp_eg/jel.html | 222 +++++++++++ .../tut/floats/fp_eg/nd.html | 202 ++++++++++ .../boost_multiprecision/tut/rational.html | 6 +- doc/html/index.html | 15 +- doc/html4_symbols.qbk | 215 ++++++++++ doc/multiprecision.qbk | 44 ++- example/floating_point_examples.cpp | 373 +++++++++++++++++- .../generic_numerics_src/generic_integral.cpp | 65 +-- 19 files changed, 1493 insertions(+), 94 deletions(-) create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html create mode 100644 doc/html4_symbols.qbk diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 5e18e6c7..a54c0f55 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,10 +13,10 @@ -
    +

    -Function Index

    -

    A B C D E F I L M P R S T Z

    +Function Index
    +

    A B C D E F I L M P R S T Z

    A @@ -207,7 +207,7 @@
    -Z +Z
    • zero

      diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 9207a2a7..a25a7a5b 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,13 +13,13 @@
      PrevUpHomeNext
      -
      +

      -Class Index

      -

      M T

      +Class Index
    +

    M T

    -M +M
    • mp_number

      @@ -29,11 +29,11 @@
    -T +T
    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 9aecc85a..9806196f 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,13 +13,13 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    -

    C I L M T

    +Typedef Index
    +

    C I L M T

    -C +C
    • @@ -47,21 +47,21 @@
    -I +I
    -L +L
    -M +M
    • @@ -161,7 +161,7 @@
    -T +T
    • tommath_rational

    • diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index a079ef1a..f6c4c3ed 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,20 +12,20 @@
      PrevUpHome
      -
      +

      -Index

      -

      A B C D E F G I L M O P R S T W Z

      +Index
    +

    A B C D E F G I L M O P R S T Z

    -A +A
    -B +B
    • @@ -50,7 +50,7 @@
    -C +C
    • @@ -106,7 +106,7 @@
    -D +D
    -E +E
    -F +F
    -G +G
    • @@ -175,7 +179,7 @@
    -I +I
    • @@ -223,7 +227,7 @@
    -L +L
    • @@ -252,7 +256,7 @@
    -M +M
    • @@ -410,14 +414,14 @@
    -O +O
    -P +P
    • @@ -437,14 +441,14 @@
    -R +R
    -S +S
    • @@ -461,7 +465,7 @@
    -T +T
    -W -
    -
    • -

      Worked Example: defining a mathematical function.

      - -
    -
    -Z +Z
    • zero

      diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 315bd765..00d93f94 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -83,6 +83,9 @@
    • Should there be a choice of rounding mode (probably MPFR specific)?
    • +
    • + Document limits on size of cpp_dec_float. +
    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index 621eb176..38896477 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -29,8 +29,17 @@
    gmp_float
    mpfr_float
    cpp_dec_float
    -
    Worked Example: - defining a mathematical function.
    +
    Examples
    +
    +
    Area of + Circle
    +
    Defining + a Lambda Function.
    +
    Calculating + a Derivative
    +
    Calculating + an Integral
    +
    Rational Number Types
    diff --git a/doc/html/boost_multiprecision/tut/floats.html b/doc/html/boost_multiprecision/tut/floats.html index f9b841f4..e441517f 100644 --- a/doc/html/boost_multiprecision/tut/floats.html +++ b/doc/html/boost_multiprecision/tut/floats.html @@ -21,8 +21,17 @@
    gmp_float
    mpfr_float
    cpp_dec_float
    -
    Worked Example: - defining a mathematical function.
    +
    Examples
    +
    +
    Area of + Circle
    +
    Defining + a Lambda Function.
    +
    Calculating + a Derivative
    +
    Calculating + an Integral
    +

    The following back-ends provide floating point arithmetic: diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html index cc7b16ca..aea653f8 100644 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -7,11 +7,11 @@ - +

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -111,7 +111,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg.html new file mode 100644 index 00000000..c5e07650 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg.html @@ -0,0 +1,44 @@ + + + +Examples + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html new file mode 100644 index 00000000..7b30997c --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html @@ -0,0 +1,161 @@ + + + +Calculating an Integral + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Similar to the generic derivative example, we can calculate integrals + in a similar manner: +

    +

    +

    +
    template<typename value_type, typename function_type>
    +inline value_type integral(const value_type a,
    +                           const value_type b,
    +                           const value_type tol,
    +                           function_type func)
    +{
    +   unsigned n = 1U;
    +
    +   value_type h = (b - a);
    +   value_type I = (func(a) + func(b)) * (h / 2);
    +
    +   for(unsigned k = 0U; k < 8U; k++)
    +   {
    +      h /= 2;
    +
    +      value_type sum(0);
    +      for(unsigned j = 1U; j <= n; j++)
    +      {
    +         sum += func(a + (value_type((j * 2) - 1) * h));
    +      }
    +
    +      const value_type I0 = I;
    +      I = (I / 2) + (h * sum);
    +
    +      const value_type ratio     = I0 / I;
    +      const value_type delta     = ratio - 1;
    +      const value_type delta_abs = ((delta < 0) ? -delta : delta);
    +
    +      if((k > 1U) && (delta_abs < tol))
    +      {
    +         break;
    +      }
    +
    +      n *= 2U;
    +   }
    +
    +   return I;
    +}
    +
    +

    +

    +

    + The following sample program shows how the function can be called, we + begin by defining a function object, which when integrated should yield + the Bessel J function: +

    +

    +

    +
    template<typename value_type>
    +class cyl_bessel_j_integral_rep
    +{
    +public:
    +   cyl_bessel_j_integral_rep(const unsigned N,
    +      const value_type& X) : n(N), x(X) { }
    +
    +   value_type operator()(const value_type& t) const
    +   {
    +      // pi * Jn(x) = Int_0^pi [cos(x * sin(t) - n*t) dt]
    +      return cos(x * sin(t) - (n * t));
    +   }
    +
    +private:
    +   const unsigned n;
    +   const value_type x;
    +};
    +
    +

    +

    +

    +

    +
       /* The function can now be called as follows: */
    +int main(int, char**)
    +{
    +   using boost::math::constants::pi;
    +   typedef boost::multiprecision::cpp_dec_float_50 mp_type;
    +
    +   const float j2_f =
    +      integral(0.0F,
    +      pi<float>(),
    +      0.01F,
    +      cyl_bessel_j_integral_rep<float>(2U, 1.23F)) / pi<float>();
    +
    +   const double j2_d =
    +      integral(0.0,
    +      pi<double>(),
    +      0.0001,
    +      cyl_bessel_j_integral_rep<double>(2U, 1.23)) / pi<double>();
    +
    +   const mp_type j2_mp =
    +      integral(mp_type(0),
    +      pi<mp_type>(),
    +      mp_type(1.0E-20),
    +      cyl_bessel_j_integral_rep<mp_type>(2U, mp_type(123) / 100)) / pi<mp_type>();
    +
    +   // 0.166369
    +   std::cout
    +      << std::setprecision(std::numeric_limits<float>::digits10)
    +      << j2_f
    +      << std::endl;
    +
    +   // 0.166369383786814
    +   std::cout
    +      << std::setprecision(std::numeric_limits<double>::digits10)
    +      << j2_d
    +      << std::endl;
    +
    +   // 0.16636938378681407351267852431513159437103348245333
    +   std::cout
    +      << std::setprecision(std::numeric_limits<mp_type>::digits10)
    +      << j2_mp
    +      << std::endl;
    +
    +   //
    +   // Print true value for comparison:
    +   // 0.166369383786814073512678524315131594371033482453329
    +   std::cout << boost::math::cyl_bessel_j(2, mp_type(123) / 100) << std::endl;
    +}
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html new file mode 100644 index 00000000..46500c20 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html @@ -0,0 +1,118 @@ + + + +Area of Circle + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Generic numeric programming employs templates to use the same code for + different floating-point types and functions. Consider the area of a + circle a of radius r, given by +

    +

    + a = π * r2 +

    +

    + The area of a circle can be computed in generic programming using Boost.Math + for the constant π as shown below: +

    +

    +

    +
    #include <boost/math/constants/constants.hpp>
    +
    +template<typename T>
    +inline T area_of_a_circle(T r)
    +{
    +   using boost::math::constants::pi;
    +   return pi<T>() * r * r;
    +}
    +
    +

    +

    +

    + It is possible to use area_of_a_circle() with built-in floating-point types + as well as floating-point types from Boost.Multiprecision. In particular, + consider a system with 4-byte single-precision float, 8-byte double-precision + double and also the cpp_dec_float_50 + data type from Boost.Multiprecision with 50 decimal digits of precision. +

    +

    + We can compute and print the approximate area of a circle with radius + 123/100 for float, double and cpp_dec_float_50 + with the program below. +

    +

    +

    +
    #include <iostream>
    +#include <iomanip>
    +#include <boost/multiprecision/cpp_dec_float.hpp>
    +
    +using boost::multiprecision::cpp_dec_float_50;
    +
    +int main(int, char**)
    +{
    +   const float r_f(float(123) / 100);
    +   const float a_f = area_of_a_circle(r_f);
    +
    +   const double r_d(double(123) / 100);
    +   const double a_d = area_of_a_circle(r_d);
    +
    +   const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100);
    +   const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp);
    +
    +   // 4.75292
    +   std::cout
    +      << std::setprecision(std::numeric_limits<float>::digits10)
    +      << a_f
    +      << std::endl;
    +
    +   // 4.752915525616
    +   std::cout
    +      << std::setprecision(std::numeric_limits<double>::digits10)
    +      << a_d
    +      << std::endl;
    +
    +   // 4.7529155256159981904701331745635599135018975843146
    +   std::cout
    +      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    +      << a_mp
    +      << std::endl;
    +}
    +
    +

    +

    +

    + In the next example we'll look at calling both standard library and Boost.Math + functions from within generic code. We'll also show how to cope with + template arguments which are expression-templates rather than number + types. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html new file mode 100644 index 00000000..981d684d --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html @@ -0,0 +1,222 @@ + + + +Defining a Lambda Function. + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this example we'll show several implementations of the Jahnke + and Emden Lambda function, each implementation a little more + sophisticated than the last. +

    +

    + The Jahnke-Emden Lambda function is defined by the equation: +

    +

    + JahnkeEmden(v, z) = Γ(v+1) * Jv(z) / (z / 2)v +

    +

    + If we were to implement this at double precision using Boost.Math's facilities + for the Gamma and Bessel function calls it would look like this: +

    +

    +

    +
    double JEL1(double v, double z)
    +{
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / std::pow(z / 2, v);
    +}
    +
    +

    +

    +

    + Calling this function as: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    +std::cout << JEL1(2.5, 0.5) << std::endl;
    +
    +

    + Yields the output: +

    +
    9.822663964796047e-001
    +

    + Now lets implement the function again, but this time using the multiprecision + type cpp_dec_float_50 + as the argument type: +

    +

    +

    +
    boost::multiprecision::cpp_dec_float_50
    +   JEL2(boost::multiprecision::cpp_dec_float_50 v, boost::multiprecision::cpp_dec_float_50 z)
    +{
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / boost::multiprecision::pow(z / 2, v);
    +}
    +
    +

    +

    +

    + The implementation is almost the same as before, but with one key difference + - we can no longer call std::pow, + instead we must call the version inside the boost::multiprecision + namespace. In point of fact, we could have omitted the namespace prefix + on the call to pow since + the right overload would have been found via argument + dependent lookup in any case. +

    +

    + Note also that the first argument to pow + along with the argument to tgamma + in the above code are actually expression templates. The pow and tgamma + functions will handle these arguments just fine. +

    +

    + Here's an example of how the function may be called: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    +std::cout << JEL2(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    +
    +

    + Which outputs: +

    +
    9.82266396479604757017335009796882833995903762577173e-01
    +

    + Now that we've seen some non-template examples, lets repeat the code + again, but this time as a template that can be called either with a builtin + type (float, double etc), or with a multiprecision + type: +

    +

    +

    +
    template <class Float>
    +Float JEL3(Float v, Float z)
    +{
    +   using std::pow;
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    +}
    +
    +

    +

    +

    + Once again the code is almost the same as before, but the call to pow has changed yet again. We need + the call to resolve to either std::pow + (when the argument is a builtin type), or to boost::multiprecision::pow + (when the argument is a multiprecision type). We do that by making the + call unqualified so that versions of pow + defined in the same namespace as type Float + are found via argument dependent lookup, while the using + std::pow directive makes the standard library + versions visible for builtin floating point types. +

    +

    + Let's call the function with both double + and multiprecision arguments: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    +std::cout << JEL3(2.5, 0.5) << std::endl;
    +std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    +std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    +
    +

    + Which outputs: +

    +
    9.822663964796047e-001
    +9.82266396479604757017335009796882833995903762577173e-01
    +
    +

    + Unfortunately there is a problem with this version: if we were to call + it like this: +

    +
    boost::multiprecision::cpp_dec_float_50 v(2), z(0.5);
    +JEL3(v + 0.5, z);
    +
    +

    + Then we would get a long and inscrutable error message from the compiler: + the problem here is that the first argument to JEL3 + is not a number type, but an expression template. We could obviously + add a typecast to fix the issue: +

    +
    JEL(cpp_dec_float_50(v + 0.5), z);
    +
    +

    + However, if we want the function JEL to be truely reusable, then a better + solution might be preferred. To achieve this we can borrow some code + from Boost.Math which calculates the return type of mixed-argument functions, + here's how the new code looks now: +

    +

    +

    +
    template <class Float1, class Float2>
    +typename boost::math::tools::promote_args<Float1, Float2>::type
    +   JEL4(Float1 v, Float2 z)
    +{
    +   using std::pow;
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    +}
    +
    +

    +

    +

    + As you can see the two arguments to the function are now separate template + types, and the return type is computed using the promote_args + metafunction from Boost.Math. +

    +

    + Now we can call: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_100>::digits10);
    +std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl;
    +
    +

    + And get 100 digits of output: +

    +
    9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01
    +

    + As a bonus, we can now call the function not just with expression templates, + but with other mixed types as well: for example float + and double or int and double, + and the correct return type will be computed in each case. +

    +

    + Note that while in this case we didn't have to change the body of the + function, in the general case any function like this which creates local + variables internally would have to use promote_args + to work out what type those variables should be, for example: +

    +
    template <class Float1, class Float2>
    +typename boost::math::tools::promote_args<Float1, Float2>::type
    +   JEL5(Float1 v, Float2 z)
    +{
    +   using std::pow;
    +   typedef typename boost::math::tools::promote_args<Float1, Float2>::type variable_type;
    +   variable_type t = pow(z / 2, v);
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / t;
    +}
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html new file mode 100644 index 00000000..460c86c4 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html @@ -0,0 +1,202 @@ + + + +Calculating a Derivative + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this example we'll add even more power to generic numeric programming + using not only different floating-point types but also function objects + as template parameters. Consider some well-known central difference rules + for numerically computing the first derivative of a function f′(x) + with x ∈ ℜ: +

    +

    + +

    +

    + Where the difference terms mn are given by: +

    +

    + +

    +

    + and dx is the step-size of the derivative. +

    +

    + The third formula in Equation 1 is a three-point central difference rule. + It calculates the first derivative of f′(x) to O(dx6), + where dx is the given step-size. For example, if + the step-size is 0.01 this derivative calculation has about 6 decimal + digits of precision - just about right for the 7 decimal digits of single-precision + float. Let's make a generic template subroutine using this three-point + central difference rule. In particular: +

    +

    +

    +
    template<typename value_type, typename function_type>
    +   value_type derivative(const value_type x, const value_type dx, function_type func)
    +{
    +   // Compute d/dx[func(*first)] using a three-point
    +   // central difference rule of O(dx^6).
    +
    +   const value_type dx1 = dx;
    +   const value_type dx2 = dx1 * 2;
    +   const value_type dx3 = dx1 * 3;
    +
    +   const value_type m1 = (func(x + dx1) - func(x - dx1)) / 2;
    +   const value_type m2 = (func(x + dx2) - func(x - dx2)) / 4;
    +   const value_type m3 = (func(x + dx3) - func(x - dx3)) / 6;
    +
    +   const value_type fifteen_m1 = 15 * m1;
    +   const value_type six_m2     =  6 * m2;
    +   const value_type ten_dx1    = 10 * dx1;
    +
    +   return ((fifteen_m1 - six_m2) + m3) / ten_dx1;
    +}
    +
    +

    +

    +

    + The derivative() + template function can be used to compute the first derivative of any + function to O(dx6). For example, consider the first + derivative of sin(x) evaluated at x = + π/3. In other words, +

    +

    + +

    +

    + The code below computes the derivative in Equation 3 for float, double + and boost's multiple-precision type cpp_dec_float_50. +

    +

    +

    +
    #include <iostream>
    +#include <iomanip>
    +#include <boost/multiprecision/cpp_dec_float.hpp>
    +#include <boost/math/constants/constants.hpp>
    +
    +
    +int main(int, char**)
    +{
    +   using boost::math::constants::pi;
    +   using boost::multiprecision::cpp_dec_float_50;
    +   //
    +   // We'll pass a function pointer for the function object passed to derivative,
    +   // the typecast is needed to select the correct overload of std::sin:
    +   //
    +   const float d_f = derivative(
    +      pi<float>() / 3,
    +      0.01F,
    +      static_cast<float(*)(float)>(std::sin)
    +   );
    +
    +   const double d_d = derivative(
    +      pi<double>() / 3,
    +      0.001,
    +      static_cast<double(*)(double)>(std::sin)
    +      );
    +   //
    +   // In the cpp_dec_float_50 case, the sin function is multiply overloaded
    +   // to handle expression templates etc.  As a result it's hard to take it's
    +   // address without knowing about its implementation details.  We'll use a 
    +   // C++11 lambda expression to capture the call.
    +   // We also need a typecast on the first argument so we don't accidently pass
    +   // an expression template to a template function:
    +   //
    +   const cpp_dec_float_50 d_mp = derivative(
    +      cpp_dec_float_50(pi<cpp_dec_float_50>() / 3),
    +      cpp_dec_float_50(1.0E-9),
    +      [](const cpp_dec_float_50& x) -> cpp_dec_float_50
    +      {
    +         return sin(x);
    +      }
    +      );
    +
    +   // 5.000029e-001
    +   std::cout
    +      << std::setprecision(std::numeric_limits<float>::digits10)
    +      << d_f
    +      << std::endl;
    +
    +   // 4.999999999998876e-001
    +   std::cout
    +      << std::setprecision(std::numeric_limits<double>::digits10)
    +      << d_d
    +      << std::endl;
    +
    +   // 4.99999999999999999999999999999999999999999999999999e-01
    +   std::cout
    +      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    +      << d_mp
    +      << std::endl;
    +}
    +
    +

    +

    +

    + The expected value of the derivative is 0.5. This central difference + rule in this example is ill-conditioned, meaning it suffers from slight + loss of precision. With that in mind, the results agree with the expected + value of 0.5. +

    +

    + We can take this a step further and use our derivative function to compute + a partial derivative. For example if we take the incomplete gamma function + P(a, z), and take the derivative with respect to + z at (2,2) then we can calculate + the result as shown below, for good measure we'll compare with the "correct" + result obtained from a call to gamma_p_derivative, + the results agree to approximately 44 digits: +

    +

    +

    +
    cpp_dec_float_50 gd = derivative(
    +   cpp_dec_float_50(2),
    +   cpp_dec_float_50(1.0E-9),
    +   [](const cpp_dec_float_50& x) ->cpp_dec_float_50
    +   {
    +      return boost::math::gamma_p(2, x);
    +   }
    +);
    +// 2.70670566473225383787998989944968806815263091819151e-01
    +std::cout
    +   << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    +   << gd
    +   << std::endl;
    +// 2.70670566473225383787998989944968806815253190143120e-01
    +std::cout << boost::math::gamma_p_derivative(cpp_dec_float_50(2), cpp_dec_float_50(2)) << std::endl;
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 318cba56..614d612e 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -246,7 +246,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/index.html b/doc/html/index.html index 013c47c5..4ed88ab7 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -44,8 +44,17 @@
    gmp_float
    mpfr_float
    cpp_dec_float
    -
    Worked Example: - defining a mathematical function.
    +
    Examples
    +
    +
    Area of + Circle
    +
    Defining + a Lambda Function.
    +
    Calculating + a Derivative
    +
    Calculating + an Integral
    +
    Rational Number Types
    @@ -101,7 +110,7 @@ - +

    Last revised: April 03, 2012 at 18:14:12 GMT

    Last revised: April 09, 2012 at 16:55:19 GMT


    diff --git a/doc/html4_symbols.qbk b/doc/html4_symbols.qbk new file mode 100644 index 00000000..55bf6588 --- /dev/null +++ b/doc/html4_symbols.qbk @@ -0,0 +1,215 @@ +[/ Symbols and Greek letters (about 120) from HTML4.] +[/ File HTML4_symbols.qbk] +[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html] +[/ See also http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references] +[/ http://www.alanwood.net/demos/ent4_frame.html] +[/ http://www.unicode.org/charts/PDF/U2200.pdf and others] +[/ All (except 2 angle brackets) show OK on Firefox 2.0] + +[/ See also Latin-1 aka Western (ISO-8859-1) in latin1_symbols.qbk] +[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html] +[/Unicode Latin extended http://www.unicode.org/charts/U0080.pdf] + +[/ Also some miscellaneous math charaters added to this list - see the end.] +[/ For others see also math_symbols.qbk] + +[/ To use, enclose the template name in square brackets.] + +[template fnof[]'''ƒ'''] [/ ƒ Latin small f with hook = function = florin] +[/ Capital Greek start with capital letter, lower case all small.] +[template Alpha[]'''Α'''] [/ ? Greek capital letter alpha] +[template Beta[]'''Β'''] [/ ? Greek capital letter beta] +[template Gamma[]'''Γ'''] [/ G Greek capital letter gamma] +[template Delta[]'''Δ'''] [/ ? Greek capital letter delta] +[template Epsilon[]'''Ε'''] [/ ? Greek capital letter epsilon] +[template Zeta[]'''Ζ'''] [/ ? Greek capital letter zeta] +[template Eta[]'''Η'''] [/ ? Greek capital letter eta] +[template Theta[]'''Θ'''] [/ T Greek capital letter theta] +[template Iota[]'''Ι'''] [/ ? Greek capital letter iota] +[template Kappa[]'''Κ'''] [/ ? Greek capital letter kappa] +[template Lambda[]'''Λ'''] [/ ? Greek capital letter lambda] +[template Mu[]'''Μ'''] [/ ? Greek capital letter mu] +[template Nu[]'''Ν'''] [/ ? Greek capital letter nu] +[template Xi[]'''Ξ'''] [/ ? Greek capital letter xi] +[template Omicron[]'''Ο'''] [/ ? Greek capital letter omicron] +[template Pi[]'''Π'''] [/ ? Greek capital letter pi] +[template Rho[]'''Ρ'''] [/ ? Greek capital letter rho] +[template Sigma[]'''Σ'''] [/ S Greek capital letter sigma] +[template Tau[]'''Τ'''] [/ ? Greek capital letter tau] +[template Upsilon[]'''Υ'''] [/ ? Greek capital letter upsilon] +[template Phi[]'''Φ'''] [/ F Greek capital letter phi] +[template Chi[]'''Χ'''] [/ ? Greek capital letter chi] +[template Psi[]'''Ψ'''] [/ ? Greek capital letter psi] +[template Omega[]'''Ω'''] [/ O Greek capital letter omega] +[template alpha[]'''α'''] [/ a Greek small letter alpha] +[template beta[]'''β'''] [/ ß Greek small letter beta] +[template gamma[]'''γ'''] [/ ? Greek small letter gamma] +[template delta[]'''δ'''] [/ d Greek small letter delta] +[template epsilon[]'''ε'''] [/ e Greek small letter epsilon] +[template zeta[]'''ζ'''] [/ ? Greek small letter zeta] +[template eta[]'''η'''] [/ ? Greek small letter eta] +[template theta[]'''θ'''] [/ ? Greek small letter theta] +[template iota[]'''ι'''] [/ ? Greek small letter iota] +[template kappa[]'''κ'''] [/ ? Greek small letter kappa] +[template lambda[]'''λ'''] [/ ? Greek small letter lambda] +[template mu[]'''μ'''] [/ µ Greek small letter mu] +[template nu[]'''ν'''] [/ ? Greek small letter nu] +[template xi[]'''ξ'''] [/ ? Greek small letter xi] +[template omicron[]'''ο'''] [/ ? Greek small letter omicron] +[template pi[]'''π'''] [/ p Greek small letter pi] +[template rho[]'''ρ'''] [/ ? Greek small letter rho] +[template sigmaf[]'''ς'''] [/ ? Greek small letter final sigma] +[template sigma[]'''σ'''] [/ s Greek small letter sigma] +[template tau[]'''τ'''] [/ t Greek small letter tau] +[template upsilon[]'''υ'''] [/ ? Greek small letter upsilon] +[template phi[]'''φ'''] [/ f Greek small letter phi] +[template chi[]'''χ'''] [/ ? Greek small letter chi] +[template psi[]'''ψ'''] [/ ? Greek small letter psi] +[template omega[]'''ω'''] [/ ? Greek small letter omega] +[template thetasym[]'''ϑ'''] [/ ? Greek small letter theta symbol] +[template upsih[]'''ϒ'''] [/ ? Greek upsilon with hook symbol] +[template piv[]'''ϖ'''] [/ ? Greek pi symbol] + +[template bull[]'''•'''] [/ • bullet = black small circle] +[template hellip[]'''…'''] [/ … horizontal ellipsis = three dot leader] +[template prime[]'''′'''] [/ ' prime = minutes = feet] +[template Prime[]'''″'''] [/ ? double prime = seconds = inches] +[template oline[]'''‾'''] [/ ? overline = spacing overscore] +[template frasl[]'''⁄'''] [/ / fraction slash] +[template weierp[]'''℘'''] [/ P script capital P = power set = Weierstrass p] +[template image[]'''ℑ'''] [/ I blackletter capital I = imaginary part] +[template real[]'''ℜ'''] [/ R blackletter capital R = real part symbol] +[template trade[]'''™'''] [/ ™ trade mark sign] +[template alefsym[]'''ℵ'''] [/ ? alef symbol = first transfinite cardinal] +[template larr[]'''←'''] [/ ? leftwards arrow] +[template uarr[]'''↑'''] [/ ? upwards arrow] +[template rarr[]'''→'''] [/ ? rightwards arrow] +[template darr[]'''↓'''] [/ ? downwards arrow] +[template harr[]'''↔'''] [/ ? left right arrow] +[template crarr[]'''↵'''] [/ ? downwards arrow with corner leftwards = CR] +[template lArr[]'''⇐'''] [/ ? leftwards double arrow] +[template uArr[]'''⇑'''] [/ ? upwards double arrow] +[template rArr[]'''⇒'''] [/ ? rightwards double arrow] +[template dArr[]'''⇓'''] [/ ? downwards double arrow] +[template hArr[]'''⇔'''] [/ ? left right double arrow] +[template forall[]'''∀'''] [/ ? for all] +[template part[]'''∂'''] [/ ? partial differential] +[template exist[]'''∃'''] [/ ? there exists] +[template empty[]'''∅'''] [/ Ø empty set = null set = diameter] +[template nabla[]'''∇'''] [/ ? nabla = backward difference] +[template isin[]'''∈'''] [/ ? element of] +[template notin[]'''∉'''] [/ ? not an element of] +[template ni[]'''∋'''] [/ ? contains as member] +[template prod[]'''∏'''] [/ ? n-ary product = product sign] +[template sum[]'''∑'''] [/ ? n-ary sumation] +[template minus[]'''−'''] [/ - minus sign] +[template lowast[]'''∗'''] [/ * asterisk operator] +[template radic[]'''√'''] [/ v square root = radical sign] +[template prop[]'''∝'''] [/ ? proportional to] +[template infin[]'''∞'''] [/ 8 infinity] +[template ang[]'''∠'''] [/ ? angle] +[template and[]'''∧'''] [/ ? logical and = wedge] +[template or[]'''∨'''] [/ ? logical or = vee] +[template cap[]'''∩'''] [/ n intersection = cap] +[template cup[]'''∪'''] [/ ? union = cup] +[template int[]'''∫'''] [/ ? integral] +[template there4[]'''∴'''] [/ ? therefore] +[template sim[]'''∼'''] [/ ~ tilde operator = varies with = similar to] +[template cong[]'''≅'''] [/ ? approximately equal to] +[template asymp[]'''≈'''] [/ ˜ almost equal to = asymptotic to] +[template ne[]'''≠'''] [/ ? not equal to] +[template equiv[]'''≡'''] [/ = identical to] +[template le[]'''≤'''] [/ = less-than or equal to] +[template ge[]'''≥'''] [/ = greater-than or equal to] +[template subset[]'''⊂'''] [/ ? subset of] +[template superset[]'''⊃'''] [/ ? superset of] +[template nsubset[]'''⊄'''] [/ ? not a subset of] +[template sube[]'''⊆'''] [/ ? subset of or equal to] +[template supe[]'''⊇'''] [/ ? superset of or equal to] +[template oplus[]'''⊕'''] [/ ? circled plus = direct sum] +[template otimes[]'''⊗'''] [/ ? circled times = vector product] +[template perp[]'''⊥'''] [/ ? up tack = orthogonal to = perpendicular] +[template sdot[]'''⋅'''] [/ · dot operator] +[template lceil[]'''⌈'''] [/ ? left ceiling = APL upstile] +[template rceil[]'''⌉'''] [/ ? right ceiling] +[template lfloor[]'''⌊'''] [/ ? left floor = APL downstile] +[template rfloor[]'''⌋'''] [/ ? right floor] +[template lang[]'''〈'''] [/ < left-pointing angle bracket = bra (Firefox shows ?)] +[template rang[]'''〉'''] [/ > right-pointing angle bracket = ket (Firefox shows ?)] +[template loz[]'''◊'''] [/ ? lozenge] +[template spades[]'''♠'''] [/ ? black spade suit] +[template clubs[]'''♣'''] [/ ? black club suit = shamrock] +[template hearts[]'''♥'''] [/ ? black heart suit = valentine] +[template diams[]'''♦'''] [/ ? black diamond suit] +[template euro[]'''€'''] [/ ? Euro currency symbol] +[template lchev[]'''⟨'''] [/ ? left chevron] +[template rchev[]'''⟩'''] [/ right chevron] +[template rflat[]'''⟮'''] [/ right flat bracket Misc Math Symbol A] +[template lflat[]'''⟮'''] [/ left flat bracket] +[/ U2000.pdf punctuation] +[template endash[]'''–'''] [/ em width dash] +[template emdash[]'''—'''] [/ en width dash] +[template hbar[]'''―'''] [/ ? horizontal bar - introducing quoted text] +[template vert2bar[]'''‖'''] [/ ? double vertical bar] +[template line2[]'''‖'''] [/ ? double low line bar] +[template dagger[]'''†'''] [/ ? dagger] +[template dagger2[]'''‡'''] [/ ? double dagger] +[template dot[]'''․'''] [/ dot leader] +[template dot2[]'''‥'''] [/ ? dots leader] +[template ellipsis[]'''…'''] [/ horizontal ellipsis] + +[template dotover[]'''̇'''] [/ dot over symbol] +[template recur[]''' ̇'''] [/ math recurring symbol, eg after 0.333] +[/ Note use of a thin space before digit, so that dot isn't placed directly over the digit.] +[/ Use:1[recur]] + +[/ Other symbols, not in the HTML4 list:] +[template enquad[] ''' '''] [/ en quad space] +[template emquad[] ''' '''] [/ em quad space] +[template enspace[] ''' '''] [/ em half en space] +[template emspace[] ''' '''] [/ em space type size in points] +[template thickspace[] ''' '''] [/ 3 per em space] +[template midspace[] ''' '''] [/ 4 per em space] +[template sixemspace[] ''' '''] [/ 6 em space] +[template figspace[] ''' '''] [/ space = width fixed font digit] +[template punctspace[] ''' '''] [/ space = width punctuation] +[template thin[] ''' '''] [/ thin space ] +[template hair[] ''' '''] [/ hair space] +[template nbsp[] ''' '''] [/ non-breaking space] +[template space[] ''' '''] [/ plain non-breaking space] + +[template nospace[] '''​'''] [/ zero width space] +[template wordjoin[] '''⁠'''] [/ word joiner - no line break either side] +[template narrownbsp[] ''' '''] [/ narrow non-breaking space] +[template hyphen[] '''‐'''] [/ soft hyphen] +[template nbhyphen[] '''‑'''] [/ non-breaking hyphen] + +[template plusminus[]'''±'''] [/ ? plus or minus sign] +[template sqrt[]'''√'''] [/ ? square root sqrt symbol] +[/template pow2[]'''⁳'''] [/ 2073 is NOT superscript 2 character] +[template pow2[]'''²'''] [/ superscript 2 character] +[template pow3[]'''³'''] [/ superscript 3 character] +[template pown[]'''ⁿ'''] [/ superscript n character] +[template frac12[]'''½'''] [/ fraction half] +[template frac14[]'''¼'''] [/ fraction quarter] +[template frac34[]'''¾'''] [/ fraction three quarter] +[template sup1[]'''¹'''] [/ superscript one = superscript digit one ] +[template sup2[]'''²'''] [/ superscript two = superscript digit two = squared ] +[template cubed[]'''³'''] [/ superscript three = superscript digit three = cubed ] +[template macron[]'''¯'''] [/ macron = spacing macron = overline = APL overbar ] +[template deg[]'''°'''] [/ degree sign ] +[template plusmn[]'''±'''] [/ plus-minus sign = plus-or-minus sign ] +[template micro[]'''µ'''] [/ micro sign ] +[template cedil[]'''¸'''] [/ cedilla = spacing cedilla ] +[template ordm[]'''º'''] [/ masculine ordinal indicator ] +[template ordf[]'''ª'''] [/ feminine ordinal indicator ] +[template laquo[]'''«'''] [/ left-pointing double angle quotation mark = left pointing guillemet ] +[template raquo[]'''»'''] [/ right-pointing double angle quotation mark = right pointing guillemet ] + +[/ +Copyright 2007, 2010 Paul A. Bristow. +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 5f0f244c..f1bf2c33 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -18,6 +18,7 @@ [/last-revision $Date: 2011-07-08 18:51:46 +0100 (Fri, 08 Jul 2011) $] ] +[include html4_symbols.qbk] [import ../example/gmp_snips.cpp] [import ../example/mpfr_snips.cpp] [import ../example/cpp_dec_float_snips.cpp] @@ -34,6 +35,18 @@ [template mpir[] [@http://mpir.org/ MPIR]] [template tommath[] [@http://libtom.org/?page=features&newsitems=5&whatfile=ltm libtommath]] +[template super[x]''''''[x]''''''] +[template sub[x]''''''[x]''''''] + +[template equation[name] ''' + + + + + + +'''] + [section:intro Introduction] @@ -556,14 +569,41 @@ Normally these should not be visible to the user. [endsect] -[section:jel Worked Example: defining a mathematical function.] +[section:fp_eg Examples] [import ../example/floating_point_examples.cpp] +[section:aos Area of Circle] + +[AOS1] +[AOS2] +[AOS3] + +[endsect] + +[section:jel Defining a Lambda Function.] + [JEL] [endsect] +[section:nd Calculating a Derivative] + +[ND1] +[ND2] +[ND3] + +[endsect] + +[section:GI Calculating an Integral] + +[GI1] +[GI2] + +[endsect] + +[endsect] + [endsect] [section:rational Rational Number Types] @@ -1528,8 +1568,6 @@ More information on this type can be found in the [link boost_multiprecision.tut [section:backendconc Backend Requirements] -[template super[x]''''''[x]''''''] - The requirements on the `Backend` template argument to `mp_number` are split up into compulsory requirements, and optional requirements that are either to improve performance or provide optional features. diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp index 9aa134e9..81fccd70 100644 --- a/example/floating_point_examples.cpp +++ b/example/floating_point_examples.cpp @@ -9,6 +9,48 @@ #include #include +//[AOS1 + +/*`Generic numeric programming employs templates to use the same code for different +floating-point types and functions. Consider the area of a circle a of radius r, given by + +[:['a = [pi] * r[super 2]]] + +The area of a circle can be computed in generic programming using Boost.Math +for the constant [pi] as shown below: + +*/ + +//=#include + +template +inline T area_of_a_circle(T r) +{ + using boost::math::constants::pi; + return pi() * r * r; +} + +/*` +It is possible to use `area_of_a_circle()` with built-in floating-point types as +well as floating-point types from Boost.Multiprecision. In particular, consider a +system with 4-byte single-precision float, 8-byte double-precision double and also the +`cpp_dec_float_50` data type from Boost.Multiprecision with 50 decimal digits +of precision. + +We can compute and print the approximate area of a circle with radius 123/100 for +`float`, `double` and `cpp_dec_float_50` with the program below. + +*/ + +//] + +//[AOS3 + +/*`In the next example we'll look at calling both standard library and Boost.Math functions from within generic code. +We'll also show how to cope with template arguments which are expression-templates rather than number types.*/ + +//] + //[JEL /*` @@ -18,7 +60,7 @@ each implementation a little more sophisticated than the last. The Jahnke-Emden Lambda function is defined by the equation: -JahnkeEmden(v, z) = Gamma(v+1) * J[v](z) / (z / 2)^v +[:['JahnkeEmden(v, z) = [Gamma](v+1) * J[sub v](z) / (z / 2)[super v]]] If we were to implement this at double precision using Boost.Math's facilities for the Gamma and Bessel function calls it would look like this: @@ -164,6 +206,136 @@ to work out what type those variables should be, for example: */ +//] + +//[ND1 + +/*` +In this example we'll add even more power to generic numeric programming using not only different +floating-point types but also function objects as template parameters. Consider +some well-known central difference rules for numerically computing the first derivative +of a function ['f[prime](x)] with ['x [isin] [real]]: + +[equation floating_point_eg1] + +Where the difference terms ['m[sub n]] are given by: + +[equation floating_point_eg2] + +and ['dx] is the step-size of the derivative. + +The third formula in Equation 1 is a three-point central difference rule. It calculates +the first derivative of ['f[prime](x)] to ['O(dx[super 6])], where ['dx] is the given step-size. +For example, if +the step-size is 0.01 this derivative calculation has about 6 decimal digits of precision - +just about right for the 7 decimal digits of single-precision float. +Let's make a generic template subroutine using this three-point central difference +rule. In particular: +*/ + +template + value_type derivative(const value_type x, const value_type dx, function_type func) +{ + // Compute d/dx[func(*first)] using a three-point + // central difference rule of O(dx^6). + + const value_type dx1 = dx; + const value_type dx2 = dx1 * 2; + const value_type dx3 = dx1 * 3; + + const value_type m1 = (func(x + dx1) - func(x - dx1)) / 2; + const value_type m2 = (func(x + dx2) - func(x - dx2)) / 4; + const value_type m3 = (func(x + dx3) - func(x - dx3)) / 6; + + const value_type fifteen_m1 = 15 * m1; + const value_type six_m2 = 6 * m2; + const value_type ten_dx1 = 10 * dx1; + + return ((fifteen_m1 - six_m2) + m3) / ten_dx1; +} + +/*`The `derivative()` template function can be used to compute the first derivative +of any function to ['O(dx[super 6])]. For example, consider the first derivative of ['sin(x)] evaluated +at ['x = [pi]/3]. In other words, + +[equation floating_point_eg3] + +The code below computes the derivative in Equation 3 for float, double and boost's +multiple-precision type cpp_dec_float_50. +*/ + +//] + +//[GI1 + +/*` +Similar to the generic derivative example, we can calculate integrals in a similar manner: +*/ + +template +inline value_type integral(const value_type a, + const value_type b, + const value_type tol, + function_type func) +{ + unsigned n = 1U; + + value_type h = (b - a); + value_type I = (func(a) + func(b)) * (h / 2); + + for(unsigned k = 0U; k < 8U; k++) + { + h /= 2; + + value_type sum(0); + for(unsigned j = 1U; j <= n; j++) + { + sum += func(a + (value_type((j * 2) - 1) * h)); + } + + const value_type I0 = I; + I = (I / 2) + (h * sum); + + const value_type ratio = I0 / I; + const value_type delta = ratio - 1; + const value_type delta_abs = ((delta < 0) ? -delta : delta); + + if((k > 1U) && (delta_abs < tol)) + { + break; + } + + n *= 2U; + } + + return I; +} + +/*` +The following sample program shows how the function can be called, we begin +by defining a function object, which when integrated should yield the Bessel J +function: +*/ + +template +class cyl_bessel_j_integral_rep +{ +public: + cyl_bessel_j_integral_rep(const unsigned N, + const value_type& X) : n(N), x(X) { } + + value_type operator()(const value_type& t) const + { + // pi * Jn(x) = Int_0^pi [cos(x * sin(t) - n*t) dt] + return cos(x * sin(t) - (n * t)); + } + +private: + const unsigned n; + const value_type x; +}; + + //] int main() @@ -179,6 +351,197 @@ int main() std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl; std::cout << std::scientific << std::setprecision(std::numeric_limits::digits10); std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl; + + //[AOS2 + +/*=#include +#include +#include + +using boost::multiprecision::cpp_dec_float_50; + +int main(int, char**) +{*/ + const float r_f(float(123) / 100); + const float a_f = area_of_a_circle(r_f); + + const double r_d(double(123) / 100); + const double a_d = area_of_a_circle(r_d); + + const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100); + const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp); + + // 4.75292 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_f + << std::endl; + + // 4.752915525616 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_d + << std::endl; + + // 4.7529155256159981904701331745635599135018975843146 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_mp + << std::endl; +/*=}*/ + + //] + + //[ND2 +/*= +#include +#include +#include +#include + + +int main(int, char**) +{*/ + using boost::math::constants::pi; + using boost::multiprecision::cpp_dec_float_50; + // + // We'll pass a function pointer for the function object passed to derivative, + // the typecast is needed to select the correct overload of std::sin: + // + const float d_f = derivative( + pi() / 3, + 0.01F, + static_cast(std::sin) + ); + + const double d_d = derivative( + pi() / 3, + 0.001, + static_cast(std::sin) + ); + // + // In the cpp_dec_float_50 case, the sin function is multiply overloaded + // to handle expression templates etc. As a result it's hard to take it's + // address without knowing about its implementation details. We'll use a + // C++11 lambda expression to capture the call. + // We also need a typecast on the first argument so we don't accidently pass + // an expression template to a template function: + // + const cpp_dec_float_50 d_mp = derivative( + cpp_dec_float_50(pi() / 3), + cpp_dec_float_50(1.0E-9), + [](const cpp_dec_float_50& x) -> cpp_dec_float_50 + { + return sin(x); + } + ); + + // 5.000029e-001 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_f + << std::endl; + + // 4.999999999998876e-001 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_d + << std::endl; + + // 4.99999999999999999999999999999999999999999999999999e-01 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_mp + << std::endl; +//=} + + /*` + The expected value of the derivative is 0.5. This central difference rule in this + example is ill-conditioned, meaning it suffers from slight loss of precision. With that + in mind, the results agree with the expected value of 0.5.*/ + + //] + + //[ND3 + + /*` + We can take this a step further and use our derivative function to compute + a partial derivative. For example if we take the incomplete gamma function + ['P(a, z)], and take the derivative with respect to /z/ at /(2,2)/ then we + can calculate the result as shown below, for good measure we'll compare with + the "correct" result obtained from a call to ['gamma_p_derivative], the results + agree to approximately 44 digits: + */ + + cpp_dec_float_50 gd = derivative( + cpp_dec_float_50(2), + cpp_dec_float_50(1.0E-9), + [](const cpp_dec_float_50& x) ->cpp_dec_float_50 + { + return boost::math::gamma_p(2, x); + } + ); + // 2.70670566473225383787998989944968806815263091819151e-01 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << gd + << std::endl; + // 2.70670566473225383787998989944968806815253190143120e-01 + std::cout << boost::math::gamma_p_derivative(cpp_dec_float_50(2), cpp_dec_float_50(2)) << std::endl; + //] + + //[GI2 + + /* The function can now be called as follows: */ +/*=int main(int, char**) +{*/ + using boost::math::constants::pi; + typedef boost::multiprecision::cpp_dec_float_50 mp_type; + + const float j2_f = + integral(0.0F, + pi(), + 0.01F, + cyl_bessel_j_integral_rep(2U, 1.23F)) / pi(); + + const double j2_d = + integral(0.0, + pi(), + 0.0001, + cyl_bessel_j_integral_rep(2U, 1.23)) / pi(); + + const mp_type j2_mp = + integral(mp_type(0), + pi(), + mp_type(1.0E-20), + cyl_bessel_j_integral_rep(2U, mp_type(123) / 100)) / pi(); + + // 0.166369 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_f + << std::endl; + + // 0.166369383786814 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_d + << std::endl; + + // 0.16636938378681407351267852431513159437103348245333 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_mp + << std::endl; + + // + // Print true value for comparison: + // 0.166369383786814073512678524315131594371033482453329 + std::cout << boost::math::cyl_bessel_j(2, mp_type(123) / 100) << std::endl; +//=} + + //] + return 0; } @@ -191,4 +554,12 @@ Program output: 9.822663964796047e-001 9.82266396479604757017335009796882833995903762577173e-01 9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01 +4.752916e+000 +4.752915525615998e+000 +4.75291552561599819047013317456355991350189758431460e+00 +5.000029e-001 +4.999999999998876e-001 +4.99999999999999999999999999999999999999999999999999e-01 +2.70670566473225383787998989944968806815263091819151e-01 +2.70670566473225383787998989944968806815253190143120e-01 */ \ No newline at end of file diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp index 6e7495b1..787de062 100644 --- a/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp +++ b/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp @@ -61,44 +61,45 @@ private: const value_type x; }; -using boost::math::constants::pi; -typedef boost::multiprecision::cpp_dec_float_50 mp_type; int main(int, char**) { - const float j2_f = - integral(0.0F, - pi(), - 0.01F, - cyl_bessel_j_integral_rep(2U, 1.23F)) / pi(); + using boost::math::constants::pi; + typedef boost::multiprecision::cpp_dec_float_50 mp_type; - const double j2_d = - integral(0.0, - pi(), - 0.0001, - cyl_bessel_j_integral_rep(2U, 1.23)) / pi(); + const float j2_f = + integral(0.0F, + pi(), + 0.01F, + cyl_bessel_j_integral_rep(2U, 1.23F)) / pi(); - const mp_type j2_mp = - integral(mp_type(0), - pi(), - mp_type(1.0E-20), - cyl_bessel_j_integral_rep(2U, mp_type(123) / 100)) / pi(); + const double j2_d = + integral(0.0, + pi(), + 0.0001, + cyl_bessel_j_integral_rep(2U, 1.23)) / pi(); - // 0.166369 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << j2_f - << std::endl; + const mp_type j2_mp = + integral(mp_type(0), + pi(), + mp_type(1.0E-20), + cyl_bessel_j_integral_rep(2U, mp_type(123) / 100)) / pi(); - // 0.166369383786814 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << j2_d - << std::endl; + // 0.166369 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_f + << std::endl; - // 0.16636938378681407351267852431513159437103348245333 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << j2_mp - << std::endl; + // 0.166369383786814 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_d + << std::endl; + + // 0.16636938378681407351267852431513159437103348245333 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_mp + << std::endl; } From d4a2c46ac6feae8c001358508e936d59fdec3e4d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 13 Apr 2012 15:38:28 +0000 Subject: [PATCH 168/256] Update examples, reorganise docs, temporarily remove HTML before rebuilding. Enhance test cases, including enabling loopback testing on cpp_dec_float io. [SVN r77948] --- doc/floating_point_eg1.mml | 154 + doc/floating_point_eg1.png | Bin 0 -> 10150 bytes doc/floating_point_eg1.svg | 2 + doc/floating_point_eg2.mml | 152 + doc/floating_point_eg2.png | Bin 0 -> 7972 bytes doc/floating_point_eg2.svg | 2 + doc/floating_point_eg3.mml | 53 + doc/floating_point_eg3.png | Bin 0 -> 3623 bytes doc/floating_point_eg3.svg | 2 + doc/generate.sh | 33 + doc/html/boost_multiprecision/indexes.html | 40 - .../boost_multiprecision/indexes/s01.html | 237 -- .../boost_multiprecision/indexes/s02.html | 53 - .../boost_multiprecision/indexes/s03.html | 189 - .../boost_multiprecision/indexes/s04.html | 527 --- doc/html/boost_multiprecision/intro.html | 522 --- doc/html/boost_multiprecision/map.html | 39 - doc/html/boost_multiprecision/map/ack.html | 55 - doc/html/boost_multiprecision/map/hist.html | 50 - doc/html/boost_multiprecision/map/todo.html | 104 - doc/html/boost_multiprecision/perf.html | 46 - .../perf/float_performance.html | 961 ------ .../perf/int_real_world.html | 217 -- .../perf/integer_performance.html | 3034 ----------------- .../perf/rational_performance.html | 905 ----- .../boost_multiprecision/perf/realworld.html | 278 -- doc/html/boost_multiprecision/ref.html | 44 - .../boost_multiprecision/ref/backendconc.html | 2295 ------------- .../boost_multiprecision/ref/cpp_dec_ref.html | 61 - .../boost_multiprecision/ref/cpp_int_ref.html | 99 - .../boost_multiprecision/ref/gmp_int_ref.html | 51 - .../boost_multiprecision/ref/mp_number.html | 695 ---- .../boost_multiprecision/ref/mpf_ref.html | 67 - .../boost_multiprecision/ref/mpfr_ref.html | 67 - .../boost_multiprecision/ref/tom_int_ref.html | 51 - doc/html/boost_multiprecision/tut.html | 75 - .../boost_multiprecision/tut/conversions.html | 106 - doc/html/boost_multiprecision/tut/floats.html | 197 -- .../tut/floats/cpp_dec_float.html | 117 - .../tut/floats/fp_eg.html | 44 - .../tut/floats/fp_eg/GI.html | 161 - .../tut/floats/fp_eg/aos.html | 118 - .../tut/floats/fp_eg/jel.html | 222 -- .../tut/floats/fp_eg/nd.html | 202 -- .../tut/floats/gmp_float.html | 169 - .../boost_multiprecision/tut/floats/jel.html | 222 -- .../tut/floats/mpfr_float.html | 159 - doc/html/boost_multiprecision/tut/ints.html | 186 - .../tut/ints/cpp_int.html | 179 - .../tut/ints/gmp_int.html | 128 - .../tut/ints/tom_int.html | 119 - .../boost_multiprecision/tut/primetest.html | 108 - doc/html/boost_multiprecision/tut/random.html | 157 - .../boost_multiprecision/tut/rational.html | 252 -- .../boost_multiprecision/tut/rational/br.html | 42 - .../tut/rational/cpp_rational.html | 108 - .../tut/rational/gmp_rational.html | 138 - .../tut/rational/rational_adapter.html | 58 - .../tut/rational/tommath_rational.html | 115 - doc/html/index.html | 119 - doc/multiprecision.qbk | 28 +- example/floating_point_examples.cpp | 121 + example/integer_examples.cpp | 231 ++ test/test_acos.cpp | 9 + test/test_arithmetic.cpp | 15 +- test/test_asin.cpp | 9 + test/test_atan.cpp | 9 + test/test_cos.cpp | 9 + test/test_cosh.cpp | 9 + test/test_exp.cpp | 9 + test/test_float_io.cpp | 8 +- test/test_log.cpp | 9 + test/test_pow.cpp | 9 + test/test_round.cpp | 9 + test/test_sin.cpp | 10 + test/test_sinh.cpp | 9 + test/test_sqrt.cpp | 9 + test/test_tanh.cpp | 9 + 78 files changed, 911 insertions(+), 14196 deletions(-) create mode 100644 doc/floating_point_eg1.mml create mode 100644 doc/floating_point_eg1.png create mode 100644 doc/floating_point_eg1.svg create mode 100644 doc/floating_point_eg2.mml create mode 100644 doc/floating_point_eg2.png create mode 100644 doc/floating_point_eg2.svg create mode 100644 doc/floating_point_eg3.mml create mode 100644 doc/floating_point_eg3.png create mode 100644 doc/floating_point_eg3.svg create mode 100755 doc/generate.sh delete mode 100644 doc/html/boost_multiprecision/indexes.html delete mode 100644 doc/html/boost_multiprecision/indexes/s01.html delete mode 100644 doc/html/boost_multiprecision/indexes/s02.html delete mode 100644 doc/html/boost_multiprecision/indexes/s03.html delete mode 100644 doc/html/boost_multiprecision/indexes/s04.html delete mode 100644 doc/html/boost_multiprecision/intro.html delete mode 100644 doc/html/boost_multiprecision/map.html delete mode 100644 doc/html/boost_multiprecision/map/ack.html delete mode 100644 doc/html/boost_multiprecision/map/hist.html delete mode 100644 doc/html/boost_multiprecision/map/todo.html delete mode 100644 doc/html/boost_multiprecision/perf.html delete mode 100644 doc/html/boost_multiprecision/perf/float_performance.html delete mode 100644 doc/html/boost_multiprecision/perf/int_real_world.html delete mode 100644 doc/html/boost_multiprecision/perf/integer_performance.html delete mode 100644 doc/html/boost_multiprecision/perf/rational_performance.html delete mode 100644 doc/html/boost_multiprecision/perf/realworld.html delete mode 100644 doc/html/boost_multiprecision/ref.html delete mode 100644 doc/html/boost_multiprecision/ref/backendconc.html delete mode 100644 doc/html/boost_multiprecision/ref/cpp_dec_ref.html delete mode 100644 doc/html/boost_multiprecision/ref/cpp_int_ref.html delete mode 100644 doc/html/boost_multiprecision/ref/gmp_int_ref.html delete mode 100644 doc/html/boost_multiprecision/ref/mp_number.html delete mode 100644 doc/html/boost_multiprecision/ref/mpf_ref.html delete mode 100644 doc/html/boost_multiprecision/ref/mpfr_ref.html delete mode 100644 doc/html/boost_multiprecision/ref/tom_int_ref.html delete mode 100644 doc/html/boost_multiprecision/tut.html delete mode 100644 doc/html/boost_multiprecision/tut/conversions.html delete mode 100644 doc/html/boost_multiprecision/tut/floats.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/gmp_float.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/jel.html delete mode 100644 doc/html/boost_multiprecision/tut/floats/mpfr_float.html delete mode 100644 doc/html/boost_multiprecision/tut/ints.html delete mode 100644 doc/html/boost_multiprecision/tut/ints/cpp_int.html delete mode 100644 doc/html/boost_multiprecision/tut/ints/gmp_int.html delete mode 100644 doc/html/boost_multiprecision/tut/ints/tom_int.html delete mode 100644 doc/html/boost_multiprecision/tut/primetest.html delete mode 100644 doc/html/boost_multiprecision/tut/random.html delete mode 100644 doc/html/boost_multiprecision/tut/rational.html delete mode 100644 doc/html/boost_multiprecision/tut/rational/br.html delete mode 100644 doc/html/boost_multiprecision/tut/rational/cpp_rational.html delete mode 100644 doc/html/boost_multiprecision/tut/rational/gmp_rational.html delete mode 100644 doc/html/boost_multiprecision/tut/rational/rational_adapter.html delete mode 100644 doc/html/boost_multiprecision/tut/rational/tommath_rational.html delete mode 100644 doc/html/index.html create mode 100644 example/integer_examples.cpp diff --git a/doc/floating_point_eg1.mml b/doc/floating_point_eg1.mml new file mode 100644 index 00000000..f98264f1 --- /dev/null +++ b/doc/floating_point_eg1.mml @@ -0,0 +1,154 @@ + +]> + +floating_point_eg1 + + + + + + + + 1 + + + + + + + + f + + + + x + + + + + + + + + m + 1 + + + + O + + + d + + x + 2 + + + + + + + + f + + + + x + + + + + + + + + 4 + 3 + + + m + 1 + + + + 1 + 3 + + + m + 2 + + + + O + + + d + + x + 4 + + + + + + + + f + + + + x + + + + + + + + + 3 + 2 + + + m + 1 + + + + 3 + 5 + + + m + 2 + + + + + 1 + 10 + + + m + 3 + + + + O + + + d + + x + 6 + + + + + + + + + + + + diff --git a/doc/floating_point_eg1.png b/doc/floating_point_eg1.png new file mode 100644 index 0000000000000000000000000000000000000000..b250bda458d1288bf4b35682c367e1150398d5c4 GIT binary patch literal 10150 zcmZ{q2T&7V^zRcwkuK7a-g^tu1;GNLND~l3M*@iS5~L<5C>xAc%yHgeX-E zpaH>911KF5loF-A{N_LN=FOY;c4l|)?wr}Zd)uDR_ndUwn`Z1RLM#9PfE{9f%^m;% zhSAE+j-e0$AP#_BGr1M}bo&{+UBqv9(0CzAoY{n6 zZki4>Wmb78WPT2a`WhcfXPSa|C@D^@l(M#~eU2y)zg}yfa?UPa+Wd)Rh9toxP?7NY z__Tz02Xpu|a!l`VHh!lA-ZO?7n>R2ZAC2x1pTXzR_ZOUDH*$paB5tuj$^dF5#EbQ| zhe9|Vq$45-Q8%*14dF)kk8F9igkZS7y_%={Ih0?yE53f-%T`H&tlIt?%h1lO%UU8- zEC$3X1zxM43BD%ZhKu|;WXCKW%w(mGk%HEoUP89vx9X{9_q>9@7kSSPK|7!r4U9AN zYT6Bxwm8;2DYKjbWR($44;NSeJq>-iP~tM<+w#s+WYrg>B_bGVnRDaHj;R7DLRk&s zSm0hoH}6q6Ss`V1aXE_Q4L*X)q)Mx(27XqY5oS$LyV}KZ+l=s2adYeZ5N|9vuURRK zv5|}NwrU5xxoJ_#ZBl%Xn2q#R3JA%n3S0!?^D9Th0}~;|kWOpD2uhXR8B$u!9|oY* zv24uQ5X2Ci2*ThOBs}T?~jtEB7Bl2+z0n_Wx9&*a{ z3>91!xGkt#J9~iN@`i{3+bpNQ;EnDfse1a%()D*?V~#GZ{9&q%d|{2~%VK-`$av{z zzOYsLBcA7+qUOr1uo!DDtBGUkepm=iE$Js#A~-l&0va3;a;Fn+L$O znW%yd;??x`b-Y9=ajDkXpdHS-4mV;aP!1r6Cdw(e3XK8Wk<7fqwPu{ZU`!A^x5R!#3Ne`lEOy`EmAkKC=7(WZI6fi<1?cgfAO5%yt?GMKE{( zP%(@#bRi*W(dQ|KVKy19aui;}A^W$d^Tf09$?FN?oPdRzLSr|=d)y)}jKm1ZwI~%* zaA7{6o3Fbb|4a}SC*9*ukK-S4BbR2sngA9rkw5Li4#K(0`y?0C=X*cm41V1bB`N|S zdGFKd)F>j#d}G@|xbw3Jy$iZ@&IF96qcnNrO~jpz$FzaNg8FCC$$H3~a(K#AAm2nE z1{<)Bpr`PI<8?*^#I~7H9`qhXTGDGrz)&C<9BrI+^fjokq2(od+XpsSO1z5`#o3bV zAaKY(nXfHO>D?geLtg?Rx zYDYo>V}F|9dGK4txK>m{<{3O7?aYNl{Fw}Su$%Dxh=r1rJ|S`2s2c<5jjcxzTDx}I}ZS+IKDGxjzt@Dys=iV1t* z+k{ROZ5r*vv?Efn4>otnBymV2vXDY18O!|qykv|kzS6TIV4z4F1p;M+2}xC^-etF_ zxcBI8$v|1r^FnuF4w;QukyXdqJgJ$LVw`cNTbWrc_psgNPr;3hM*Hy}(9dMo!*EN~ zS$sob6gOqnq7d$Nj1eiEQ`!`m0O``VQIlDZB`>z4-l=K4yG7DAgILjbf=^HPKd|`r8C|Ubkm649BL^eYm=N<+N=?`7&x& zcX&*NfPc`gR)W~qwEn-Rgd(kWO-?5Az>?;rSrCyT)W7y z4!SW7F>d7Q$ks2#VOgg?2p_gxyW9ce$Jv$>g;jrAehB5TrKsVzc)(@eup<&?DGBsc zc3p2a^emtq8gc890uBT#%9_{4jqmMfVfs=pF~iN2wLXC{K?vh!WL9$DoYI&6falE8 z*`H2+Vs<;ur`H8@q@IjGmsMZb*f;wkugjB+(zQE*zLe(yErE!1x@4@hGt-R*oWtXE za9JbHwU)v?|6j7>u%;MHTdgbNDLN4b(Tx^|!wey-Kp6t?M|F zbi%Daa<_*z61Y86Bn)F_H!x2D7Ln)NC26wStR^of+ijz86)!#j;u zF%YB+qR%aselP%9g)UX*-I;q{De1dXf1Bk%!mFFg;Z&>MXdo0jj6ZcXL35=3SHBSi z|HxLZ%9~|PuV2z*291V04qKtHDW+`>!}b=FjG}=RYS^)wN}i0_j5ma24~`dG@sB^g zn0r}zZItd;Oes2XvZ_eY3kG){I^&z~hysb`M-^5EAL5f25dXARip4;i0)Aw~~j(E?dUinE=gynAkUkSIWeiXe{S3);q)^#MRcpc zN}+2%S=;|)Cl-rbeEQSwoD8FFmm7pw@XR8*tiyOK#^JpXfJUgw{FCWLFxGtnZqfAysa zv$H@Fk$wo?iBUL=W#L2uC;QuxeTHrE)B5-FIji9Gn`BV&M5WWmDq+3a>sD_pS{IJ| zQ5`5LGli%)hH{$oB%GZwx?}n|pH@t}-teFIm0xL+uSB7_bw2}af3g_TO!S0!X!G?y z6UP6y$)nUNZxj|9s&^OpVH#-e>&&jq$Z&*bM z@f9v}zv$KFD+C7Im-_A!$1Ml_Q9$|!Jzd6jaqY>WZ{m3q4g_6Dmxb$P9|0FDhEx8{?P7;jTZnEb#C2FqHTv0OviZIPWQKtp<|RT} zkJ!|~=pgPyuEY;3YfI)hEd3A`V1AmncqBDXEV%qBgtvrv3~CqtA!W__ZwCj7&5emU zh@-GEmDBy>?VJx_qFi#*fQP1$dvGp-)4aGAm4NvBBu^Y+KZzqdfmAf>uwPV}cKFB4 zt0L}8e*Sud*S_L#Jt*OEmm-V17$AY!P~^;p^919Yy6u+Y|MpgV@&etCa>TYDi5O>e z_Lr}{>K%w1agkO2@5Mmbjk_>4pw6YisdJAF$H;VTWyIAHN;H$I)i);)mgBf;`d~!m zv}frV%vwCq1;S|&=Rl}OwW202^uAR?U? z?Cg_SccrANmZa)Q-KUk;q#g7mE*__d`qyHAGV+oYpSx4e?iTp1h3Cp-wC%YmAk=cY z`Nr=Sg->E|p3?`MEYq?w8Oo{9>CjgJk3jFrh@s$UOM*0HT;^Hc%R^?dVC^galt@7+ z#%59xLD%@sMdn!qw0g|)UqjV5lq|r&Z1tOj7fc83^5nB9SBZxi0f^#YpZ-b}IWXU4 z=X7<~CR_L7lR{vbWyA*9LGe~J1SD-;5OwGG2}DR~-3=1-nmS;qUs-O!1kY7Y?Gji} z`#8mZ=+4QMM!)^cp4ZaVg5Zt1S|AU+ z;2q){u47lY4fKx=4$1{M`%~eZ*pr|zPj_TD>(?VXCXg}HO;AzoVd&QzJ%4`Jz)!o{ zqYoWsd;V#J{J576O&6on`3_yt+zGr)s%@`krvP?%ca7#R7_QRwu$6b;od~(E%9F6X zq84V^`6gZyTMWNCnG|~g2|UT9!2ADT)EJ9!?1hJv_8}hy?5kzs2c}t}W^N=C(x0#p zDR>wWIi%I<(G#!vWlfv}CPlmEtRjPD_Q4p=(qAEF>KGe@3u+VqDXxRjKKrEr}2PK8c{2IAu08suA1?Y@AzhkXp{+l@&r5@(}v!##4- zg&oN3kH0LG40K}N@acx@!(>LI`$2MlcnF6wC;YK^{AsZ|nplUcT=2B z!I_qnL!FczsS?p<`nj1W)U5mBvO+9710)l;N$2lmXP7>qV@DFi_st2$^V`igUO{r! zo93kC+1Rf6!^pfH^So=`Mt6!4c?D-w zXVK6fAr-f}Ui@TT#|shc zv-NPlyf)k%ue&|p=^c`t<==9dZH09SNL#bX@m;j;S*5_$zMmXGBYzXkD@#W^#f#hN z@Y!NC(b%E*ASd!YUAp!WA?ZV$N%k1Z}%OYR1 z?QGP%gcUZO3HrEcTurRSmKDUZ?NhL{Iok*O%}(JA__gXXqLN9x=BNwE_lVT3BynwW z7>?+HA`zip?jItR_Sv-`A#qHw13T7@0Itr)E9(=AGZHS9ZB7~0^%`95V|b(bms`e5 zZhJ1n{&C%iReUb1>kAhj$iojZe5M4LGl|eA7YI`;CDQZ-9?=h5xvR~hlZ4g{cF5+U z$V3n|PCk{OC%0(QWa-e{Ct1O@A2n$3C-rUUpRCHVyQ;B)2_j=r>Ld-w3_l5-0!@Jf z9*)H-Q)tL56+5tqJZPp3IIzJq9<~^ca7IqLEiWI2&%gb89a0&V8OIUkv|-=$W&(wl z3>y49X6Ml!|C>9*YCfIp4K+kumQ_CWS@2e1s~Y7V>;#m1}%Lo zze~}g@S*($6&_xe*#}}nU^*o1q;;=aVpUZLx)ZhfV~Ka4wm$q}h-Gmv3x=(h5`($6 z?nQkFg~^o?IT25Gx3ZL9lb#rerlu;7&qy}1?&PeoAKxIfX^O#XE@|G)u+;{SY?*=$ z7{^>)-vP!}Vx6vE7%W9}(IuDq%$;j%T0k|cA<%QhZdpyapm(-L^B>(sel1-{D8O1D zq*Q6dKKcs~eQMp48%c2~Bo>TH+xc8euv}m~MGWS^Ao|j?%IQIjhMPa{9$(x7X0c9v zn=VNI%6mewD)=XnMD9Y2l|s;hX;1*ab}w9RCuI%#Zld%qr)t&JaebrB%wIK@A z;jw1-!TF5+DT~`yUTC`gr|FzJ@e@ZKS{uMER^g{FqCfHu-B+0A+l5+LedA!8?#4NT zqocBezDzBaH_+XH1zb!uyjUGjOsd>0S8)9u?2(sb>@d}}Xlc3^@+S%*>mm#AK+XrT@dK7qO>*wA_d} z%>>H_POiz$hJe1W&v>bVec;I^@M5XU`{u3~AjBW^2mdz2vLo%w zHdjKQL*38Zjl2!JR+>wW_GmRcT>AS* zDoDc8--wcx3P)H6xrJVKm#5KvXTznpkqo3C6KC%7KCh;ZaB{;ZLS(~DnO;5I&p2aN z%!H2L+$1cv`?0 zmRtDQK*+PaX{1S5Ur2gi)AND^`e%4G+PcB}B#{D<>{=Y&Q?#sqwjeY#J5HalmgLI5 zu}$apB_*qx{t!(hs?_&f;tE;##)rNZJh8HbYjQe$JMLu0&A@@(lc(fga^I{BlOgOZz*&!92i5Dgq3 z{D)@$f0KYqeNMp`8Fz)i!niNv_U5j)2=`It1yS}^^*c0iqNu8d=Dv5oR7rwEGA*Z- zTbZ`p@3lRrJv)HcTqu`(8gX9zaU9vr{^C~V!k``1b#d^!^V4amnAaUb3xB|7ET~R% zeWBY8g)>BcUCxE^KXwT!RLqlSsf3}B*wYF~MZU`>2y+Uua7I)?Zy z6G+=)nbGQPfhoELjMMDq6#_GLK>tWu3mk7oaKy2rIMgx8a#InkhGum*zWK*K3<*<( zX*X8N<3QVS{a8M6PkAK}7OyXn8hjMuY8US|?{qtlp10 z|4KaYI>dR|0K2+iBX{MkK@uO<(kW=^ju&5JcU487DkKmO7_gW&l=!LU1%8bCZi2!p z)O_X(M8%nxKAqmxk58OpnHCZ&(~sgwcu3Yvk_*eN;@woXQK2vz6`WoO;LrTG`bLyX z{Hb`LGen8k+kk^wi9W&L^?MWp;Shgw{Wo;sll{dUr-ImyJ!Qx;Die0V5XOxKYSF}e z6pcd{=I`;TGqpR}li6m{sXJ547(ba2fTBxgoOW13=cC{|G-(iakcGDHCkH>#&z$fn zAwGf~oNr`TwgWyd(vcTL@V%IPAN5bG;4ylg>oQfc}jpB~hPIE)@U)$SSUGH7u%$ZbmcXP;;(1a2#*n3?Cl?j%q2}<(^L%vMC`Mixhl6l4? z4BYaljN44TPGRrzr)hm_p)?81<#p**f-CNt*Coi44HX*|F7iP(u8unT+u92@1_-6Q zIB=*TsajZ%^JRLKPHjypB-whIL4wSu&rhlJDB})|8oedMlKQwfx8xJvgtlLpucALQ zpZ#}pya5MiAN$QhF02O0Rjnl=91xem$JI+o9l%SSZBT^ct_1OBtoRPYhe{!KD?rl3 zz*v`DBcGAU3e@C?C5$dCAR|;^w&M0)TYwrtrAAz<>f)1Bb?a6>2$3 z#uez#lFxf-hAFGd20TGVBDr>x`Mv65$Kog7%z2WY1<3gAWRT;kVboK>ga?R@UHAfQ zn2jkX$Jf5V#UMISD@;Ais4?~{z3};kxF!QvXD?PmkBM$`=$M@5_mk968z!UWK<*F4 zr@95xlnciof|ysq|1jv1nW2v8Y0L{N^1!30{~JLEEcYX6ie-&<(!3?efMik;v@1U9 zxNE3fPVU^znpfR(o0&nv%~u~D8-U7|(r`Tpvy@cVQ%C`V*(b2F~8mRTPoP472Ag+Tn(|XMj){3q9%$ zz!9(lz|Xk-2={K6I{lJ&*3!pI)%lPgds#HL@9#&N7Q(}MumYo&4E&_1N=~5gW1nEm5o;dV;R;$gcW}@6e4^CxFgnJ4eHpge2 zolDr$V%F6TP$QjwcSkDVPb$6|*Gncbcvb2gEK5jC9+pmGK*wpkK_c+f zD^U~#A1FtkFyS_1vx18id)~)i9pH*SBhi}C3~4OIW0vYy-S^e@w#P-) z=cObJFO47ygC=0z%3+I@m7B^7iGgu}_mofzw1(l-l*agi*t!&Q9`&rB z+G7Kpci7E|%;yPiAuY6+pFqrFOjvgkZ%(`q5be8{ksar zK~iKBYx62;(eJFDtVo&5O6#{FS2gc-ktQ9WJ}l*<`_1SR16j@b2TD5zBlkpi($;Ru z%2*QQAv%!h=h=R$ERb%>w{d4g5HebVmR!KZ|6eXZ%G00whXelONa*Uj65^klCa7hn zT+a5i#R{K~*3Q3;Oz0Bn@Bm0bqepIjOA3a0$}-4^CuT z3)yug#~j68!;CqF(axmZkE=U<(oec<`mpgJ^>rTr{Xv|J|QT>^1x9Ty9Zue`A>5tv$% z9pi;$wl&|#F(%95mD5{8({kxoN{N;xWe<;d&Po(#IK@iI*Lc_Od^aULkA)rfzlWvy z8SXH4;_;}Pu@O&0Th(8L=?oonKnR*t%88qyd9)eySG1+86+r_s?Y}Y|N7JC*G1#AT zSW19JwUT=Hscz?_*%@x+mv$%yf@jV3&ciEZSTHSl_?O33^kcj2Hu0S*w-04qj;cJ< z;0yl&sktkMt}rd0AjT8u3wE=~qJ^=A+4||}XOkXE|l&i}>GFaHmX!JBb zgUaPgu;uGrI<`j!@k$V0sJ4_myz_q&C{*@QOLP6LvdXZYWkbUUKRaxH1m1g?tFCJO z4JEPSs4y)}IxYC!i#Jlo%!CKksAv?Htgsm(j=aZ9vT|_^X@7gR`KafXzdf&KVe?z$ z>bJn%0+;#0%$AX}AShW|SYw7NJzGB|7a1Hp+Y-(3)!F{VM3(|?8K$i>%r>}cb3DuU zwzL?3&uW3}2JV`}m-l1BYfB3pfGBhUH>-Pr7SPjtg9B{Y6W^2hhsLgz;cfGlc36Y* z^Av{b1ST1k41ej9f`VPApGRts-}q{fOvG)Z@YJFr+#{X%TP_~$Hd}`bYnOL9e=a?L zCicNSY_lEu8gJAtS!YocCl+hlWO;nTYuJb}OIvkI7@>G5Ob6kv)|?e*tTq~#FA>2G zgHY5bKkkn4#o588PSP->cXtx@$U&aY9~|6-mr+-9j%S{XGO4 zebP?p@*^H~H5$q@$&paPBf2 z5`)T?RV(U{qUfLph%sa(c+c{7-u-cqCpx0~dGO=veAyagX5ZhV_V)z>3Y9PMk6Ctn zZ~gn*`p@orBkaB3y1xyG%wWS=H%Fa<5Z+? z{6!UgCiXJ0;RuXluQ_{C9J#=wa{p!z!=&QZn@~lHgK5#>uHE%1{QhEiVjIu)%$?tV zcew@)4d)u*`K>Uz2QwROl9jmdiuXW}Lvt~**WpYK`QzQ|060MH&PFm@g<{g(w0Sjb zwhkgaIILo3F|F@2RXAsV_x|}YF5nNzUr9G>9XO_AXMe~d z_9+Q!)*vRVc=7d}tZX{JfyL8*9)kZis0rB~yUEF)bjp|3xq9}U!G42)i%t?}_19va zxHRA}oU8AM{7u7gH>Lbsoa~Y$MTctRq`#JPc!hdBa;ohb;fZ}cH*$6T`yE-o+Iijp zS?3PkomY8u6)Xt_i)GeIBa{90dx_A>9ih)~5lXiH7xi;(2dnVfXZnv7Jio;6QfZPf z)k?()Z@{qTKGM|4Ri%5O?e^)6aB{pEeT$Per*4cu3Gp38>+6e_S}JSnOsJOOQ>^fv`bFFsaV-=6R(sO^|eOym?|G3Y?-&n?qZ|(I}&!pW= zPY&juW_Dd7l!dXqjydcKdC9gs&#&XzSMUA_KmW1#hAxEQGqO7+gyH};G~tUvAO+11 zri9^k&Mk-`9J9iCl^_6)e`_`W4To9TOwrLYyXunsg709#R+ck{{5B>Zm^jyHSxtVyNwzja@Ohy?m`#g!SuZ8E-s5gWJ(w1mtbb6F zO;s;9Egs;7#h8m+t7ZNqS&mqknS;gnKf8WcLwf%szf0#io75v@zbx;2x8Lqm`lq~< j&-yB8lak5-YVvsj^wXIy0oQ3cbpXiqo7Wmly;A-ctAy2q literal 0 HcmV?d00001 diff --git a/doc/floating_point_eg1.svg b/doc/floating_point_eg1.svg new file mode 100644 index 00000000..87f82ede --- /dev/null +++ b/doc/floating_point_eg1.svg @@ -0,0 +1,2 @@ + +(1)f′(x)≈m1+O(dx2)f′(x)≈43m1−13m2+O(dx4)f′(x)≈32m1−35m2+110m3+O(dx6) \ No newline at end of file diff --git a/doc/floating_point_eg2.mml b/doc/floating_point_eg2.mml new file mode 100644 index 00000000..9a87f93c --- /dev/null +++ b/doc/floating_point_eg2.mml @@ -0,0 +1,152 @@ + +]> + +floating_point_eg2 + + + + + + + + 2 + + + + + + + + + m + 1 + + + + = + + + + + f + + + x + + + d + x + + + + f + + + x + + d + x + + + + + 2 + d + x + + + + + + + + m + 2 + + + + = + + + + + f + + + x + + + 2 + d + x + + + + f + + + x + + 2 + d + x + + + + + 4 + d + x + + + + + + + + m + 3 + + + + = + + + + + f + + + x + + + 3 + d + x + + + + f + + + x + + 3 + d + x + + + + + 6 + d + x + + + + + + + + + + diff --git a/doc/floating_point_eg2.png b/doc/floating_point_eg2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb18e4ac92f567e6aa31ba737588d5510e30bfc5 GIT binary patch literal 7972 zcmai(cTf||^YBAL2~B!eff#x(N>Pe56ROgS^k#qnN(TvvQbj~U009BP0Md~XI^>~< zfQkl{5=yMp08)Ywfgj(Q_y6~1uI$a+?abZm-e>nRZd%{qWD{ir005kDn29X_z`%Ys z4g@owwL<)Xqh}psgb~~xd{*v*{nF25)^M0h1OUJr`M=7r7$6>dHYpNm>Ktho77!WZ zea{~d6BDD12n~+#^$zz}4!ajvym?I&0JvBVH@R*f`HmpQWEe(K}&Dcb~>sHHWHZ_n*BGEAC9Dsio|cpbH773l7VTkWqe00^#)b z%MV3FLvoDPT%$4`APPp23Af?1!U-YkhxC0B>-Hc?ud+#xIl!1Y|ke&pv z&ed$b)Y6`Y-{OAsotctjboh-pwNNR`I}IvkxGaF7vY-W^i7lVZT3g;mCW`}wW>M3$ zc0w8MGgl|S_5zLNLP!jUDgiW#KvWTHU?Z0i1cD#+nTVm zOC~L5;T6-D5NzRz-EU+VM$KI%r~_g%T^|mDy$vtrsfz%}Nft?86+%3n=K6HQqiRk# z;GV!x&9wA^+U$Q5vJy4W7$SnOq=3t2D(yH9y-p}Vw?ea6P|Wv7X>ygceCBga zmnKxuX$oSi2c3YwXSWY!jr~M3AnAyMo?zS9!`Z@d)M+;Ad*)ONSN++fAZ(s#fJY(t zxn1Rb1ZCu2IW-9$&;HD#L5;lZpl>0{qKKrA2SrU~h0Ce2Kg9D8Q;F5)4%H0H3*ivd)est_46+YbqzvR~ZN zI&V!^C>f_$BU+z<=j|(d*Y;tG@Q6m1Veaqd0Jtys*C%rqm?%Jz`ElL7e^2*L?kC8M zk3%$6EP;)+JNzllzK<0J@dm5Tlu=@`rghlc9gl~c=mIAs;`0k3TT zqfy&aB{GW9m!;f+y++proLD?yX8max_mCy?zw!4)oQE6qxSW_!?x(?5%+%-foqX$0 zZ78de`cNyJCP+Ahj;PQIS65S9t3>`-_D9=1y5Cxr8OGCVy<-y_e>qA@nTiw`#(%Q#2NADjJ@Uf8sJDeIddLVTi43U4c0@nfMW@eVHmKSIsZwk`wfjM3v_2W7j_! ziyWr65Y;<@9mnyj=bLcrg8erPD6PXA7HM$1Vhj9xsfC1 zJiJ1L{XEC>*%2SA#edGuX)eT1?h5A8e0y>J-U;3KO0fT3p=~8E7D^M5j(x+c_vkM1 z{NPY?oxg5l-Q*`QRv9060w`RZ3?UbPnVVhCGxZ7f*-QkMD<1LnrRQQUAj@PCx%M#u zlj$>;&Yx49nKJV0&N^79z8i-;Bes{EEJ^jAsPQZ-Fs%KR`L0Igr7mCb7P3>(nc<;=i#HtW7}jm zq(WH&nG0mFdQnZ|y&-8U!=Xq6`W~lQZ@n*)EVR-SwYDeH(gODXQ}FYFo6F-?T{&L+ zS`7?%;fj*dzS53k2fS#NAMtx#`^-H3GopA{zUuffz80>Rtghs`n&|3+uO5$eZHjsJ zd@+;f$rXqo`8*g`AP{&X?=Wp(wx5qk+Z}$;7|-5CUvJLL{>}%EyuM_wff)q`l-Q?`Xhezjzh+b$*v;go&;g=2YJ3`UTkL{G*TeJ!N{;rh(BiKtPxy ztLCn^OhR}xFMOT%KO50Mo$vN|ZJTy1$z@77D!4wFu5Ehl{WMxl+2nVAq{5%=&JkMH zf>MkPX*xl$uz$jPcu-3MNaqdKmmk9ZAtr{34W7Ds=?U#T*b_KvdtU+Pka*syzRQZ$ zw-^qOCEV;)P)qc9ZFAmge><`Q+5BDqx}#u;AxRdZcp?F}v+YG&s+f@)iFSljEMZg@ zdkG0=tiMh&@sa-7?c>+<(f{6e(fG5L3UM_{*kU zN4eC~D%tPryb}!1;~_)rJneMGGf$^pnELigrls^0_x}^dA-Q9kCTCb+StZ%h^43qC zGbhhfIv0_C_F@-W8vFU@)MVgOq!NutCu4{jTm4tu#Ll`8dbdfAa-J4_@e@)`bYpT& z2O>hMKK{vNC{+THW_xIkKo~leCX|?A6)lROtKo3Iwa+f)SkngBnW9>})ci8f#A}6H zmGZxqK$}}$JwtZ=r1+?Q6O(FPp;%YaPu(wN07quWkmb)!FkPS0GT{z71M0%Knd~&z& z2R1UBMOQ4irx#a$Jz>H$;U_`pOia%lVmAQdZ=A5a2%2eNZ~Rh01QF4;hik+X_kUNZ zjP?2Y*>H0TT6f=xxl}SPtYeCHNPIdTz3JjNCxHM#FyV0-v~%c%b~&IR5M}**MUPTV ztd-M=xa=Y%MUu9E-{8uY7^AbT2Olbyzss1=e|gO9XBx3`|6GXCo&JHjldEWIHG1im zfjxyl6fbGJesyQwQ1WTi*%>+Fl}~GiYbQ!9dbpUY^47K#SH-c>xotRnvD9(f%jJ&a zmStx1RB&Rj_IRe){WIZ5jrdV1PV0$ZWjSrA8|HK+0{rMov%#vQ1OkUI z!^eoao-Cigrx!Q;Tb_QMU3)0y9grUzI!V=u^p-hB9YVP-SsD zuWCRX#KrEH4Jw=3y7qR5okCx&ae+^SGdGv{ny!dv$ovvX@$ENfbSXv9akdFUfQXP& zoAMC;?GoLBpOzg@##}?fWOH5wB~x`$c5FZf9evJuz9-;$tJ^=83TRo({q8sN%Vtj8 zI9>9kD++AnaMV1%t9tFn!p+IlX%dRZ_>~1(40+lfz9B(DdR-tN?Ejt79*AFJj}>&T zv%m5<-LD^!ca#a(0!&=_80}tcTCrU0k=MCXS5OGL9dS=|`saoyvY%}uc)HmI=4yc0 z9*<6f*TLuTbFnr#n<~4KhNQJ*@7L$+ywCl?iP-*X9>EkKd^&aD3Jk$B{rH=-TZ5hP z5%Ncn?MKw4{BxekZ^@Q1|$kxPeXke}FBpF=-`u%ys^QL?& zANcm3O62gCzhfq*5CgEOHM!rIa&2c8X{(5y0en`v+?e@Fj{w}|J5=eGb~LwYQK#G$ zi)dWMr%=u9JApqH)Ob28%n$qQyBt@0j+vY-NwCY3nq`oxl?B3<4OyW&;kA^#*HN!< zxbYv13Ia*#Aev#B1%JVf>rLg6xCB8NP-{q8u{;+e3N#OQ9<+fDz7%IT@1pZot@J8i zrx}v%_@RwbO6%pR!mod{vR_|AnqwdpoUKbD%d&yWkLQz}Q=` zAqjJJBEgBNPfTu1fs^vA^}KQue@9X_BKs}^lv|H|u-~}hH+Z%F!Mq|UN^my|-HXC` zKTi{|ff%FR37%>FdxL^+q!ai=ol;uh#7~uK?-+eHj_mXPyzf9O6zd62G;PN53}w6E z{xPx9Z!k;?5IPw0Ez3-=^)W}=rV5b6yZ;v5JoE$>0~D$!#cZ2%x%F9$*_Zt5NT+cw zMz{8ZN&82N;YKCLX}qb<>B){{^=VWyfB9Qog`v^f+f5Fn{*?5zf0R9X2$$l`ze+Os zjdb}+LN@40(5!U|JFpcKmM`DrdGZ6Ft8b>A^r|f^(iZAQ+Y>h!(A^s)3(nM(=&~@l z?X}fk_=mc|XG05UKe*(Tqf4jr!Jl2NG)!1=Rf1^`x4-oeN!?&oWVmg@K-O@-r+K$+ zPu813IXk#ax?6w03Z>r10WXjnoLBLuuSM6EF+H|S{dk!Ab1J;Yu5rq`t+fTOA%z6} zdy}$CQa`u!^b#h~eu=5aDaVqP1(eoF*@ci{-C3%(N;e$=4x+r?t9pYp9S54HnPs*T zf?gSb%4jqrNmN5MMkZ5^K?`%FF}NE{*NJ3D%o*D` zvGB5vZ;I`9XYN&A&0Ua~(iwC9vba7N@O+ZSw_71gQrpd{0NhEffKg{?7ydVKcQ>U1 zJvSX>SmYxDwBKh_sBl*L%X!A?2Cr^WyY?0f2v+{y9hOja_(C zm5e2$orAZ*-a4lO+X90Ev6i*;gHrBh_Be)Dm47t~1(^W?J%j1dYZon`Px|^x;svDs zL*1h z>*GrT6R1&{t)?&_-BHI+grX$cjM?KQSZ$4nMXLX~fa2uwcoH5hr+mD?rcI)057ymf z8uV4w5SKt)hj+kS8?8%Nv856|343wO_=AabRo6N)>Q##!>2>lYcKZRZUdL zkM_I7W&~r0X_j{ieHVrQHY_WTA8LPNPI!oKM=r6MrAz9KIlSz%=ypcZI`8r%xqaeyPF#7Ac>4>$uuoe5eB@jP*sBITqk8K zJh?$QRnMkcF??uFjLH4AA@2wb;2m!nR3EnTd<@}a-4Pss#4{{^h^;mzl)Ogw^ z?47IoK=Yjq zzDG~uuYA~27)U5?j>kqzS5R+%48N3P{GHF_Z|mWBYf~$1PAK*x&0SB)qDo(Gb4Y_w zU3t+Yv*qS+VQ-Q1n{7k&`->LIFA|zQzR@Ax0FMq^Pu_oT)26mL({D>s#|p;OXM`np z=w4kiFo3MuCEwj^Z0ozWUDb2tD5~nmeXdw%(zleBUFb2|`NMJOf9E>5c#az9E&AD= zdz<9gUU{<;j^Fias*BIc7NtTS&vK!w2Y)>{AsTwM$B+8QkRDV{&u$k6RxvV49n|8H=Bv4tNhY~2M$JnQnNj% z2NZi=&x}K>s(MCX32?6ExDlc{r|_||9|uz^Am-f0lvF! zP;yEg?m#|GAKtE>??j8q>}~(KVl{1Xy?Cjud7!rb4CaF%2rjP}ub_Jgjkql%6R!2z z-6u~YYw;r3b2p(YjSew~xT#;`(M1bAe=ihe;Zy9u<8bWBO<8fQ&xqpJl;u+BY7o3Y zzUBRNT@NSE7;04aiy3^bDT{PR^S~Rm-yrn*?ONMjoRsYc3m?6A)w-WTEqs3HM)jNF z{r_rydvbgjy;jD4zYh~p#`<`rVtwBY0!c9N`eOezJN$z9V#>hOqvZ8NSCj8ePMH6q z)>Js&A#9`}VSnTr#^cu}pLzBjFmXUyvYK4wJ(**lTKh@L*t&(<2c81F$_Hs-WIIOU zz(mW}S6a-So$QU%j>NJ$oH*P4>dd6N@|4LTOvkz$5Rw}&<`Vo_FW;zY|14S6W<-jm z7(wRf_bL}WnNeFtS9IaU7P|H%EP~F5B~(6~K~2(%YZ_1{u%U>$w_V-%L?{)|i==?Px&?-boQX zE$I5j$#{i(Ts-t|ZrD&M^{#fdR0V`D1i@$W@rRn6pfoXpuqDSXiBN*1@4b+x_gf`{ zJD;W#6Ro@tsKo0;7VK~CPhDlQ8)ZzEuu+FOx8x%=`OTJNqpU3D4cY3{Dr z69?G@&Q7ss%B%Wbfe=2gi9}fhI7hO{+XajCj-i-*FA_N5lnMQ7oL>6PbT|y4Di$l; z=|R#XqK3IETka`zKQ#(4PM#8ahsEX{6_oaQl(WHq6&Jl3)!0?gx)vz zKW5vpf0mq;sQ`Cc5piH^i~Z3@DC`4Z?q@FHaP|n1QzV%vT_k^YB*W zspNiR74MZYA!rs{eWC1UoOq`(Nt43w#YGMi`k81->LDHxqs}bDHK#OW9n^t~=9CUC z(juSdr)8yJ=ymM~`fnpTWN>}ymd%q$K6m9+5lR(*eE{H7tBX#1yL2-fa>`-e6#Bc= zrE=9N9X~x1(Pu_)m1}z^zT!LYC$n_)XLN;B2enCR?E*5TOs^XuS;F^HXz& zgYx)uxSn)pe3;YhfhbRe=2>)){Hv|nI#Y*Uxz649C`e?w19B2x9EG{Y1?Z@(rU(-2 z_lDPR2y>r?&>Ki<#eA&wqYj8L#)dSh5`W&CN~c>74aM9{Z1XcgVo^C;BggM9_)v-S zH!%vpo?EtpHGu?G2UHJqDVzd7^DR^PaFf*Tpn3Mk^&zsrt4aK^BAxutWD&PVI-MUD zq~E>kz>i>(5gc4h#HdOb{ruz(6`>GhDk4tdq~QnG*15IT+To?FtIQ3mMa`{|MbID8 z_FJs;EF3mkm$1xm*9XGZC7^4-#|59|k_6y&u-d&gWhb&z9UbhKLW`l<(?d@X#F}^Q58p9HTSZMncugCewNZd=e$`s|bkMbMWXW*{ zK-{9tAir^PrtO%Cl7zWlg8PQvD=uO92X^jm4hy7MQ+8M57g$3IXjJQ;n-}s3*$mb) zrjr)_Jpd;MLWFalCHtdSUu9+&TdhknF(Bl?Vj}i33;Ze%3gn5jO&A4ege*Dxp4JkD zLd3s5-i^}2D$8&zXh?DytE2H_SV1UwL>9NbGTj826ftTAB< zg5}r%XCF7|X9;TT&+6Rj2Fx@9B>IT8||CrZQ%wsJV7k>?2&iGu{`Nmt8 zYI$`6z`|!XEcSc{*b(urdzj;2IurD{LavP4zu+{>@mP(v`+V%S2#*yqYg1$J^6zVVk>a{I9Xp(#HSs>XC6 z;8PoX?wi#a$iCh4b1HjDyw&Co!j83-Pby>%`}xcvo2i+(Tf{pMTWb~ zsB~R76W_$MJ3j<138CYpGxmA2j;~||bWQr{T9r8oCXbQ<6z9qPtTM}=gZ~8DV%Lzy zGrTbWU|x8XO>P@kct3ukNG-Wpui@CW@Waz<3Ne=iL){TQSxz;0*5RP{bx6;TeY`aN zosjg%i{BnxCD9TPzkirgtjPje-?K0S05?#K_E$JRS=dn6aC8Rs(rv&npfpGGoHmE{ z8=5iob0Y7|7_Dysa$80Es=ukqcQ*1?CDjUJn$GPn@CGE#tsrRN{xWMa(DV}>z7ADp z?w>O7cjMpVg2x#t8EW!Si0|FNENY=K|9^XuvN zAu~roD@dHXav**8e^953J;(S2;0Rij8vK?h>byvhy1+FboKTA&!32UkmZ#Z~mQoPA z3tyaYCMo)Q90>KWkMS$m)x`VBV1)z1rQrn^lXoAjph%!4LGSXH1%}S{@wGVwF(J|F zmZ78I1v4JgqZj=3{)x8F2TSu6>V3Jv7$&JKrl)PZ+pnlM!2YNAT;m6rUV8+X73oQSIn~b5 zymLoAy73cr=>^NGM*e)j53shI)=EfKj5mFxt>UjLe46)3G#$U-1h~OxHu+ +(2)m1=f(x+dx)−f(x−dx)2dxm2=f(x+2dx)−f(x−2dx)4dxm3=f(x+3dx)−f(x−3dx)6dx \ No newline at end of file diff --git a/doc/floating_point_eg3.mml b/doc/floating_point_eg3.mml new file mode 100644 index 00000000..cdf690d2 --- /dev/null +++ b/doc/floating_point_eg3.mml @@ -0,0 +1,53 @@ + +]> + +floating_point_eg3 + + + + + + + + 3 + + + + + + d + + d + x + + + sin + x + + | + + x + = + + π + 3 + + + + = + cos + + π + 3 + + = + + 1 + 2 + + + + + diff --git a/doc/floating_point_eg3.png b/doc/floating_point_eg3.png new file mode 100644 index 0000000000000000000000000000000000000000..2293fd40878c4c65fe521154ad700211b1aae2b9 GIT binary patch literal 3623 zcmV+?4%qRDP)Dqy+bcB=y@L_wx=fXU>^9 zGjnFnVL0FGI@dY#Z14TP@3Y+Z_r9NJWSctL21#22I|Ew*3vHiMWszEhq)mYnZ68@} zS?Z`fB&}!r<-+tH)exo|;Ge*oz&C)URhFe3Gyv;VTZlR;3rWKyT>(5=EWe?P<>?l% z{j#LKfPp_$Tb?>rKSY~swi3=T>wd60xkz$00sdIfj+<{L_Yv{ zwkpE4g8JZY0g~1N?gD1mo|e)U0n34zuKN+YHPXc17w8X+1@^Ulq@?43qiv6Z|5HGuKZ+COpe%1ERZNCRh0B%lM`{sVvEQ$_pNxdZXDYp?x11cv{ zZ9vi>;3(is+skuV-vr(PZmr<821puGsrKrqEF|><_5^O1^Z{TrtK#66^f6!x;ls_+ z_LFq2qy>_$kuT(l)@sz--%ZRq$HZ1CL8uvx05bQ8`Qj z?zO!P*n?oG@2###tz)IZoqT4;11F~&LDFHsVZeOirVavTRaJ{&>pB%M$_O< z@yC|}M`dbgasl+S-DrD??d^cufUPBs$~R>DLSS1-U+s)Lr~($G@3E3L1Evz>T3_HX z-~>rMD{&#)zp;HvCEBW^a*))6n0Vi0g&O`5;6IWYfTMwTt0Z2Aen9VH8Tpm_YG77g z-L$>P_5}rXeod(C&lhQL3UHpJ4Lc@pP2e}cbHM)r=Kzy|HHmva1UN4dEp>EXY)@!# z=i2^vN}BX1}3@4%q8g>f^-{Y`@v%E z)e-7R|x4lbFhP#1J*zT80y9wAEIK=i6n7DuNA5PDly?+ zl}nqKzK5_P^fANL!2X10FwvpfF6qb()F2K6`eXw;;a7zH`*`|$9I!s{P(j`QB?#jq ziGC~KbIHSVN_sEf%#}Y8SgQ@PwP;FI2w$N*(*_6?Fbke|v893zJMU^qw-U2wBgF@I z)}cO7B(LUR`?*fO#Pz^LV#Pg3(wRUZN%`+)wTh>`l)j5~y1NLqeU4kPSvv|zn-ha% z(}Ju^Z2!JQotuex?A9>D_76(reH3^lpWx7Y^NYwXgx&rUD`S4H4G2?oJTM8EDCsod zr@3~YEko9_An7xN`Be@+Z+l^}4BJn&<+=^5=tS$5Q^EGXB+VioVliZXw`Rw_tg1+6 z$yUG+=ZLU!VEa``p8}2nPA5#7&q~_cD;U_KRof_LeP)S8k z=;$a?to2yi3kU-5mR71%3Yk~uwB#y8(%M8Pe|jFs=n4EJ@9WMw&W(g4e5KV}(!r8m zlk`(b+ezAo*xP)(?K?_b_(KHi*qx3aY9wBKQG2osOqH~A`aJ@89r!K8szZ>Ez0-`G zG3p~z`7LtoWLpe}OWIh{97*2?1}BnfHsMw~4cN0#O{*YI2kuD&>wVx|NgwW{Yc;|4 zV}$LxKCx0gN@$)Rw0%P=Gna5Bj+gXZNxdcQNsz#e1-AHElD1F3w<36_8w)P`w(Ti7 z8U9WLIITq$c2%Yck%8yk8$oq2}v6OUne@)D@54k zO{EO}WS2Y*>|y)1&bhs=hotGiX0{7ey>jaAON1d28jn3dxN(6<9BeKgplOau#sCq(<9qK8PT#@;ef%&MFH@`w_0I zGYFF9cEXd8x3@PWX8g&(5x}TKoLxY;dmbfh;F^T(d6F{5dm&-7p4bX|kEE@M4uqt_ zyzJ)*&WAvD6C~~S0OFm$LquynTvee~#;1XE@_}VdgWI+xjRz)4dc*eJ<+iGbeVz&& z-UWXCzSN}NJuT^V;5tdW0sGq?*}T=-gzd$Wo*-7;#Q>6y zCZgPm;cvFjW)+{jJAeTMzc7zDEb)($cC#1KXDpWa4(!ltW<)T|$J`p$<>9!a=b?sj5^i{L2W1j6syDFGv$fP08I zgvZi-jRB^+9r5VNmA5%TGOad9{{7Lw6|I%+L>bNm?ssnITT1_G^5)c6?u5)gI|P~{ zzLpY)0o;&+cOJ6+yrkZa9YkLwY|cB0nC`KX-UhaCJG>2D1>27l{C$6W+DYD#bBTS` zO9`{4+d*-L;2yxmw(m$<-ellZ+xJvK9uY3f{eh85>w-AQV@X9LY(1!s=DFv)(K09 zNq@SeJBavzX|~U*l0178TH*pCN-q2KOtMbP3ThQF6T1YG)(1Wd{J-rbDQyC9n{%PG zitT%^Il>(Cb$14Cu0>)osgc{clcEMC{R!CJWkh$?(RHW~?m9Yzv|>-QJ+alob#y7} tHg_FuhNLTr-BULcWa9U#DNh~6@m~x5i08iX1|k3e002ovPDHLkV1gWY%pw2) literal 0 HcmV?d00001 diff --git a/doc/floating_point_eg3.svg b/doc/floating_point_eg3.svg new file mode 100644 index 00000000..0ff51462 --- /dev/null +++ b/doc/floating_point_eg3.svg @@ -0,0 +1,2 @@ + +(3)ddxsinx|x=Ï€3=cosÏ€3=12 \ No newline at end of file diff --git a/doc/generate.sh b/doc/generate.sh new file mode 100755 index 00000000..27d1d5ef --- /dev/null +++ b/doc/generate.sh @@ -0,0 +1,33 @@ +# Copyright John Maddock 2008. +# Use, modification and distribution are subject to the +# Boost Software License, Version 1.0. (See accompanying file +# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# +# Generates SVG and PNG files from the MML masters. +# +# Paths to tools come first, change these to match your system: +# +math2svg='m:\download\open\SVGMath-0.3.1\math2svg.py' +python=/cygdrive/c/Python26/python.exe +inkscape=/cygdrive/c/progra~1/Inkscape/inkscape +# Image DPI: +dpi=120 + +for mmlfile in $*; do + svgfile=$(basename $mmlfile .mml).svg + pngfile=$(basename $svgfile .svg).png + tempfile=temp.mml + # strip html wrappers put in by MathCast: + cat $mmlfile | tr -d "\r\n" | sed -e 's/.*\(]*>.*<\/math>\).*/\1/' > $tempfile + + echo Generating $svgfile + $python $math2svg $tempfile > $svgfile + echo Generating $pngfile + $inkscape -d $dpi -e $(cygpath -a -w $pngfile) $(cygpath -a -w $svgfile) + rm $tempfile +done + + + + + diff --git a/doc/html/boost_multiprecision/indexes.html b/doc/html/boost_multiprecision/indexes.html deleted file mode 100644 index e3925a4f..00000000 --- a/doc/html/boost_multiprecision/indexes.html +++ /dev/null @@ -1,40 +0,0 @@ - - - -Indexes - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html deleted file mode 100644 index a54c0f55..00000000 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ /dev/null @@ -1,237 +0,0 @@ - - - -Function Index - - - - - - - - -
    -PrevUpHomeNext -
    -
    -

    -Function Index

    -

    A B C D E F I L M P R S T Z

    -
    -
    -A -
    -
    -
    -B -
    -
    -
    -C -
    -
    -
    -D -
    -
    -
    -E -
    -
    -
    -F -
    -
    -
    -I -
    -
    -
    -L -
    -
    -
    -M -
    -
    -
    -P -
    -
    -
    -R -
    -
    -
    -S -
    -
    -
    -T -
    -
    -
    -Z -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html deleted file mode 100644 index a25a7a5b..00000000 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Class Index - - - - - - - - -
    -PrevUpHomeNext -
    -
    -

    -Class Index

    -

    M T

    -
    -
    -M -
    -
    -
    -T -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html deleted file mode 100644 index 9806196f..00000000 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ /dev/null @@ -1,189 +0,0 @@ - - - -Typedef Index - - - - - - - - -
    -PrevUpHomeNext -
    -
    -

    -Typedef Index

    -

    C I L M T

    -
    -
    -C -
    -
    -
    -I -
    -
    -
    -L -
    -
    -
    -M -
    -
    -
    -T -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html deleted file mode 100644 index f6c4c3ed..00000000 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ /dev/null @@ -1,527 +0,0 @@ - - - -Index - - - - - - - -
    -PrevUpHome -
    -
    -

    -Index

    -

    A B C D E F G I L M O P R S T Z

    -
    -
    -A -
    -
    -
    -B -
    -
    -
    -C -
    -
    -
    -D -
    -
    -
    -E -
    -
    -
    -F -
    -
    -
    -G -
    -
    -
    -I -
    -
    -
    -L -
    -
    -
    -M -
    -
    -
    -O -
    -
    -
    -P -
    -
    -
    -R -
    -
    -
    -S -
    -
    -
    -T -
    -
    -
    -Z -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHome -
    - - diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html deleted file mode 100644 index 724a4e3a..00000000 --- a/doc/html/boost_multiprecision/intro.html +++ /dev/null @@ -1,522 +0,0 @@ - - - -Introduction - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The Multiprecision Library provides User-defined integer, - rational and floating-point C++ types which try to emulate as closely as practicable - the C++ built-in types, but provide for more range and precision. Depending - upon the number type, precision may be arbitrarily large (limited only by available - memory), fixed at compile time values, for example 50 decimal digits, or a - variable controlled at run-time by member functions. The types are expression-template-enabled - for better performance than naive user-defined types. -

    -

    - The Multiprecision library comes in two distinct parts: -

    -
      -
    • - An expression-template-enabled front-end mp_number - that handles all the operator overloading, expression evaluation optimization, - and code reduction. -
    • -
    • - A selection of back-ends that implement the actual arithmetic operations, - and need conform only to the reduced interface requirements of the front-end. -
    • -
    -

    - Separation of front-end and back-end allows use of highly refined, but restricted - license libraries where possible, but provides Boost license alternatives for - users who must have a portable unconstrained license. Which is to say some - back-ends rely on 3rd party libraries, but a header-only Boost license version - is always available (if somewhat slower). -

    -

    - The library is often used via one of the predefined typedefs: for example if - you wanted an arbitrary - precision integer type using GMP - as the underlying implementation then you could use: -

    -
    #include <boost/multiprecision/gmp.hpp>  // Defines the wrappers around the GMP library's types
    -
    -boost::multiprecision::mpz_int myint;    // Arbitrary precision integer type.
    -
    -

    - Alternatively, you can compose your own multiprecision type, by combining - mp_number with one of the predefined - back-end types. For example, suppose you wanted a 300 decimal digit floating-point - type based on the MPFR library. In - this case, there's no predefined typedef with that level of precision, so instead - we compose our own: -

    -
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    -
    -namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    -
    -typedef mp::mp_number<mp::mpfr_float_backend<300> >  my_float;
    -
    -my_float a, b, c; // These variables have 300 decimal digits precision
    -
    -

    - We can repeat the above example, but with the expression templates disabled - (for faster compile times, but slower runtimes) by passing a second template - argument to mp_number: -

    -
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    -
    -namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    -
    -typedef mp::mp_number<mp::mpfr_float_backend<300>, false>  my_float;
    -
    -my_float a, b, c; // These variables have 300 decimal digits precision
    -
    -
    - - Expression - Templates -
    -

    - Class mp_number is expression-template-enabled: - that means that rather than having a multiplication operator that looks like - this: -

    -
    template <class Backend>
    -mp_number<Backend> operator * (const mp_number<Backend>& a, const mp_number<Backend>& b)
    -{
    -   mp_number<Backend> result(a);
    -   result *= b;
    -   return result;
    -}
    -
    -

    - Instead the operator looks more like this: -

    -
    template <class Backend>
    -unmentionable-type operator * (const mp_number<Backend>& a, const mp_number<Backend>& b);
    -
    -

    - Where the "unmentionable" return type is an implementation detail - that, rather than containing the result of the multiplication, contains instructions - on how to compute the result. In effect it's just a pair of references to the - arguments of the function, plus some compile-time information that stores what - the operation is. -

    -

    - The great advantage of this method is the elimination of temporaries: - for example the "naive" implementation of operator* above, requires one temporary for computing - the result, and at least another one to return it. It's true that sometimes - this overhead can be reduced by using move-semantics, but it can't be eliminated - completely. For example, lets suppose we're evaluating a polynomial via Horners - method, something like this: -

    -
    T a[7] = { /* some values */ };
    -//....
    -y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0];
    -
    -

    - If type T is an mp_number, then this expression is evaluated - without creating a single temporary value. In contrast, - if we were using the C++ wrapper that ships with GMP - - mpfr_class - - then this expression would result in no less than 11 temporaries (this is - true even though mpfr_class - does use expression templates to reduce the number of temporaries somewhat). - Had we used an even simpler wrapper around GMP - or MPFR like mpclass - things would have been even worse and no less that 24 temporaries are created - for this simple expression (note - we actually measure the number of memory - allocations performed rather than the number of temporaries directly). -

    -

    - This library also extends expression template support to standard library functions - like abs or sin - with mp_number arguments. This - means that an expression such as: -

    -
    y = abs(x);
    -
    -

    - can be evaluated without a single temporary being calculated. Even expressions - like: -

    -
    y = sin(x);
    -
    -

    - get this treatment, so that variable 'y' is used as "working storage" - within the implementation of sin, - thus reducing the number of temporaries used by one. Of course, should you - write: -

    -
    x = sin(x);
    -
    -

    - Then we clearly can't use x - as working storage during the calculation, so then a temporary variable is - created in this case. -

    -

    - Given the comments above, you might be forgiven for thinking that expression-templates - are some kind of universal-panacea: sadly though, all tricks like this have - their downsides. For one thing, expression template libraries like this one, - tend to be slower to compile than their simpler cousins, they're also harder - to debug (should you actually want to step through our code!), and rely on - compiler optimizations being turned on to give really good performance. Also, - since the return type from expressions involving mp_numbers - is an "unmentionable implementation detail", you have to be careful - to cast the result of an expression to the actual number type when passing - an expression to a template function. For example, given: -

    -
    template <class T>
    -void my_proc(const T&);
    -
    -

    - Then calling: -

    -
    my_proc(a+b);
    -
    -

    - Will very likely result in obscure error messages inside the body of my_proc - since we've passed it an expression - template type, and not a number type. Instead we probably need: -

    -
    my_proc(my_mp_number_type(a+b));
    -
    -

    - Having said that, these situations don't occur that often - or indeed not at - all for non-template functions. In addition, all the functions in the Boost.Math - library will automatically convert expression-template arguments to the underlying - number type without you having to do anything, so: -

    -
    mpfr_float_100 a(20), delta(0.125);
    -boost::math::gamma_p(a, a + delta);
    -
    -

    - Will work just fine, with the a + delta expression - template argument getting converted to an mpfr_float_100 - internally by the Boost.Math library. -

    -

    - One other potential pitfall that's only possible in C++11: you should never - store an expression template using: -

    -
    auto my_expression = a + b - c;
    -
    -

    - unless you're absolutely sure that the lifetimes of a, - b and c - will outlive that of my_expression. -

    -

    - And finally... the performance improvements from an expression template library - like this are often not as dramatic as the reduction in number of temporaries - would suggest. For example if we compare this library with mpfr_class - and mpreal, with - all three using the underlying MPFR - library at 50 decimal digits precision then we see the following typical results - for polynomial execution: -

    -
    -

    Table 1.1. Evaluation of Order 6 Polynomial.

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - Relative Time -

    -
    -

    - Relative number of memory allocations -

    -
    -

    - mp_number -

    -
    -

    - 1.0 (0.00793s) -

    -
    -

    - 1.0 (2996 total) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.2 (0.00931s) -

    -
    -

    - 4.3 (12976 total) -

    -
    -

    - mpreal -

    -
    -

    - 1.9 (0.0148s) -

    -
    -

    - 9.3 (27947 total) -

    -
    -
    -

    - As you can see, the execution time increases a lot more slowly than the number - of memory allocations. There are a number of reasons for this: -

    -
      -
    • - The cost of extended-precision multiplication and division is so great, - that the times taken for these tend to swamp everything else. -
    • -
    • - The cost of an in-place multiplication (using operator*=) tends to be more than an out-of-place - operator* - (typically operator *= - has to create a temporary workspace to carry out the multiplication, where - as operator* - can use the target variable as workspace). Since the expression templates - carry out their magic by converting out-of-place operators to in-place - ones, we necessarily take this hit. Even so the transformation is more - efficient than creating the extra temporary variable, just not by as much - as one would hope. -
    • -
    -

    - Finally, note that mp_number - takes a second template argument, which, when set to false - disables all the expression template machinery. The result is much faster to - compile, but slower at runtime. -

    -

    - We'll conclude this section by providing some more performance comparisons - between these three libraries, again, all are using MPFR - to carry out the underlying arithmetic, and all are operating at the same precision - (50 decimal digits): -

    -
    -

    Table 1.2. Evaluation of Boost.Math's Bessel function test data

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - Relative Time -

    -
    -

    - Relative Number of Memory Allocations -

    -
    -

    - mp_number -

    -
    -

    - 1.0 (6.21s) -

    -
    -

    - 1.0 (2685469) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.04 (6.45s) -

    -
    -

    - 1.47 (3946007) -

    -
    -

    - mpreal -

    -
    -

    - 1.53 (9.52s) -

    -
    -

    - 4.92 (13222940) -

    -
    -
    -
    -

    Table 1.3. Evaluation of Boost.Math's Non-Central T distribution test data

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - Relative Time -

    -
    -

    - Relative Number of Memory Allocations -

    -
    -

    - mp_number -

    -
    -

    - 1.0 (269s) -

    -
    -

    - 1.0 (139082551) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.04 (278s) -

    -
    -

    - 1.81 (252400791) -

    -
    -

    - mpreal -

    -
    -

    - 1.49 (401s) -

    -
    -

    - 3.22 (447009280) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html deleted file mode 100644 index 8edb89d1..00000000 --- a/doc/html/boost_multiprecision/map.html +++ /dev/null @@ -1,39 +0,0 @@ - - - -Roadmap - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/map/ack.html b/doc/html/boost_multiprecision/map/ack.html deleted file mode 100644 index 4de1bb82..00000000 --- a/doc/html/boost_multiprecision/map/ack.html +++ /dev/null @@ -1,55 +0,0 @@ - - - -Acknowledgements - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - This library would not have happened without: -

    -
      -
    • - Christopher Kormanyos' C++ decimal number code. -
    • -
    • - Paul Bristow for patiently testing, and commenting on the library. -
    • -
    • - All the folks at GMP, MPFR and libtommath, for providing the "guts" - that makes this library work. -
    • -
    • - "The - Art Of Computer Programming", Donald E. Knuth, Volume 2: - Seminumerical Algorithms, Third Edition (Reading, Massachusetts: Addison-Wesley, - 1997), xiv+762pp. ISBN 0-201-89684-2 -
    • -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html deleted file mode 100644 index 70462181..00000000 --- a/doc/html/boost_multiprecision/map/hist.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -History - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
      -
    • - 2011-2012, John Maddock adds an expression template enabled front end - to Christopher's code, and adds support for other backends. -
    • -
    • - 2011, Christopher Kormanyos publishes the decimal floating point code - under the Boost Software Licence. The code is published as: "Algorithm - 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", - in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. -
    • -
    • - 2002-2011, Christopher Kormanyos develops the all C++ decimal arithmetic - floating point code. -
    • -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html deleted file mode 100644 index 00d93f94..00000000 --- a/doc/html/boost_multiprecision/map/todo.html +++ /dev/null @@ -1,104 +0,0 @@ - - - -TODO - - - - - - - - -
    -PrevUpHomeNext -
    -
    -

    -TODO -

    -

    - More a list of what could be done, rather than what - should be done (which may be a much smaller list!). -

    -
      -
    • - Add back-end support for libdecNumber. -
    • -
    • - Add an adapter back-end for complex number types. -
    • -
    • - Add a back-end for MPFR interval arithmetic. -
    • -
    • - Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend. -
    • -
    • - Add assembly level routines to cpp_int_backend. -
    • -
    • - Add an all C++ binary floating point type. -
    • -
    -
    - - Pre-Review - Comments -
    -
      -
    • - Make the exponent type for cpp_dec_float a templare parameter, maybe - include support for big-integer exponents. Open question - what should - be the default - int32_t or int64_t? -
    • -
    • - Document the size requirements of fixed precision ints. -
    • -
    • - Document std lib function accuracy. -
    • -
    • - Make fixed precision orthogonal to Allocator type in cpp_int. Possible - solution - add an additional MaxBits template argument that defaults - to 0 (meaning keep going till no more space/memory). -
    • -
    • - Add support for fused multiply add (and subtract). GMP mpz_t could use - this. -
    • -
    • - Be a bit clearer on the effects of sign-magnitude representation of cpp_int - - min == -max etc. -
    • -
    • - Document cpp_dec_float precision, rounding, and exponent size. -
    • -
    • - Can we be clearer in the docs that mixed arithmetic doesn't work? -
    • -
    • - Document round functions behaviour better (they behave as in C99). -
    • -
    • - Should there be a choice of rounding mode (probably MPFR specific)? -
    • -
    • - Document limits on size of cpp_dec_float. -
    • -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html deleted file mode 100644 index 7460f077..00000000 --- a/doc/html/boost_multiprecision/perf.html +++ /dev/null @@ -1,46 +0,0 @@ - - - -Performance Comparison - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html deleted file mode 100644 index 9e9b8217..00000000 --- a/doc/html/boost_multiprecision/perf/float_performance.html +++ /dev/null @@ -1,961 +0,0 @@ - - - -Float Algorithm Perfomance - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Note that these tests are carefully designed to test performance of the underlying - algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticism, and real-world - performance may vary widely depending upon the specifics of the program. - In each table relative times are given first, with the best performer given - a score of 1. Total actual times are given in brackets, measured in seconds - for 500000 operations. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    -

    Table 1.8. Operator +

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1 (0.02382s) -

    -
    -

    - 1 (0.0294619s) -

    -
    -

    - 1 (0.058466s) -

    -
    -

    - gmp_float -

    -
    -

    - 4.55086 (0.108402s) -

    -
    -

    - 3.86443 (0.113853s) -

    -
    -

    - 2.6241 (0.15342s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.52036 (0.060035s) -

    -
    -

    - 2.1833 (0.0643242s) -

    -
    -

    - 1.37736 (0.0805287s) -

    -
    -
    -
    -

    Table 1.9. Operator +(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.56759 (0.0527023s) -

    -
    -

    - 1.74629 (0.0618102s) -

    -
    -

    - 1.68077 (0.105927s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.0336201s) -

    -
    -

    - 1 (0.0353951s) -

    -
    -

    - 1 (0.0630232s) -

    -
    -

    - mpfr_float -

    -
    -

    - 3.14875 (0.105861s) -

    -
    -

    - 3.15499 (0.111671s) -

    -
    -

    - 1.92831 (0.121528s) -

    -
    -
    -
    -

    Table 1.10. Operator -

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1 (0.0265783s) -

    -
    -

    - 1 (0.031465s) -

    -
    -

    - 1 (0.0619405s) -

    -
    -

    - gmp_float -

    -
    -

    - 4.66954 (0.124108s) -

    -
    -

    - 3.72645 (0.117253s) -

    -
    -

    - 2.67536 (0.165713s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.7909 (0.0741774s) -

    -
    -

    - 2.48557 (0.0782083s) -

    -
    -

    - 1.50944 (0.0934957s) -

    -
    -
    -
    -

    Table 1.11. Operator -(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1 (0.0577674s) -

    -
    -

    - 1 (0.0633795s) -

    -
    -

    - 1 (0.11146s) -

    -
    -

    - gmp_float -

    -
    -

    - 2.31811 (0.133911s) -

    -
    -

    - 2.07251 (0.131355s) -

    -
    -

    - 1.67161 (0.186319s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.45081 (0.141577s) -

    -
    -

    - 2.29174 (0.145249s) -

    -
    -

    - 1.395 (0.155487s) -

    -
    -
    -
    -

    Table 1.12. Operator *

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.07276 (0.287898s) -

    -
    -

    - 1.47724 (0.584569s) -

    -
    -

    - 1.55145 (5.09969s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.268372s) -

    -
    -

    - 1 (0.395718s) -

    -
    -

    - 1 (3.28705s) -

    -
    -

    - mpfr_float -

    -
    -

    - 1.27302 (0.341642s) -

    -
    -

    - 1.17649 (0.465557s) -

    -
    -

    - 1.14029 (3.7482s) -

    -
    -
    -
    -

    Table 1.13. Operator *(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 2.89945 (0.11959s) -

    -
    -

    - 4.56335 (0.197945s) -

    -
    -

    - 9.03602 (0.742044s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.0412457s) -

    -
    -

    - 1 (0.0433772s) -

    -
    -

    - 1 (0.0821206s) -

    -
    -

    - mpfr_float -

    -
    -

    - 3.6951 (0.152407s) -

    -
    -

    - 3.71977 (0.161353s) -

    -
    -

    - 3.30958 (0.271785s) -

    -
    -
    -
    -

    Table 1.14. Operator /

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 3.24327 (4.00108s) -

    -
    -

    - 5.00532 (8.12985s) -

    -
    -

    - 6.79566 (54.2796s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (1.23366s) -

    -
    -

    - 1 (1.62424s) -

    -
    -

    - 1 (7.9874s) -

    -
    -

    - mpfr_float -

    -
    -

    - 1.32521 (1.63486s) -

    -
    -

    - 1.38967 (2.25716s) -

    -
    -

    - 1.72413 (13.7713s) -

    -
    -
    -
    -

    Table 1.15. Operator /(int)

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.45093 (0.253675s) -

    -
    -

    - 1.83306 (0.419569s) -

    -
    -

    - 2.3644 (1.64187s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.174836s) -

    -
    -

    - 1 (0.22889s) -

    -
    -

    - 1 (0.694411s) -

    -
    -

    - mpfr_float -

    -
    -

    - 1.16731 (0.204088s) -

    -
    -

    - 1.13211 (0.259127s) -

    -
    -

    - 1.02031 (0.708513s) -

    -
    -
    -
    -

    Table 1.16. Operator str

    -
    ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - 500 Decimal Digits -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.4585 (0.0188303s) -

    -
    -

    - 1.55515 (0.03172s) -

    -
    -

    - 1 (0.131962s) -

    -
    -

    - gmp_float -

    -
    -

    - 1 (0.0129107s) -

    -
    -

    - 1 (0.0203967s) -

    -
    -

    - 1.04632 (0.138075s) -

    -
    -

    - mpfr_float -

    -
    -

    - 2.19015 (0.0282764s) -

    -
    -

    - 1.84679 (0.0376683s) -

    -
    -

    - 1.20295 (0.158743s) -

    -
    -
    -

    - ] -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html deleted file mode 100644 index 89278b58..00000000 --- a/doc/html/boost_multiprecision/perf/int_real_world.html +++ /dev/null @@ -1,217 +0,0 @@ - - - -Integer Real World Tests - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - These tests - measure the time taken to generate 1000 128-bit random numbers and test for - primality using the Miller Rabin test. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and libtommath-0.42.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Integer Type -

    -
    -

    - Relative (and Absolute) Times -

    -
    -

    - mpz_int -

    -
    -

    - 1.08279(0.370326s) -

    -
    -

    - mpz_int (no Expression templates) -

    -
    -

    - 1.1702(0.400222s) -

    -
    -

    - cpp_int -

    -
    -

    - 1.3612(0.465547s) -

    -
    -

    - cpp_int (no Expression templates) -

    -
    -

    - 1.33286(0.455854s) -

    -
    -

    - cpp_int (64-bit cache) -

    -
    -

    - 1.33134(0.455333s) -

    -
    -

    - cpp_int (256-bit cache) -

    -
    -

    - 1.29367(0.442451s) -

    -
    -

    - cpp_int (512-bit cache) -

    -
    -

    - 1.08821(0.37218s) -

    -
    -

    - cpp_int (1024-bit cache) -

    -
    -

    - 1.07902(0.369037s) -

    -
    -

    - mp_int1024_t -

    -
    -

    - 1.02616(0.35096s) -

    -
    -

    - mp_int1024_t (no Expression templates) -

    -
    -

    - 1(0.342011s) -

    -
    -

    - tom_int -

    -
    -

    - 3.74233(1.27992s) -

    -
    -

    - tom_int (no Expression templates) -

    -
    -

    - 3.97646(1.35999s) -

    -
    -

    - It's interesting to note that expression templates have little effect here - - perhaps because the actual expressions involved are relatively trivial - in this case - so the time taken for multiplication and division tends to - dominate. Also note how increasing the internal cache size used by cpp_int is quite effective in this case - in cutting out memory allocations altogether - cutting about a third off - the total runtime. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html deleted file mode 100644 index b7bbe0e7..00000000 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ /dev/null @@ -1,3034 +0,0 @@ - - - -Integer Algorithm Perfomance - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Note that these tests are carefully designed to test performance of the underlying - algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticism, and real-world - performance may vary widely depending upon the specifics of the program. - In each table relative times are given first, with the best performer given - a score of 1. Total actual times are given in brackets, measured in seconds - for 500000 operations. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -

    - Linux x86_64 results are broadly similar, except that libtommath performs - much better there. -

    -
    -

    Table 1.17. Operator +

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.24574 (0.0270133s) -

    -
    -

    - 1.09665 (0.0352319s) -

    -
    -

    - 1.25708 (0.0524047s) -

    -
    -

    - 1.31488 (0.08777s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.05787 (0.0229394s) -

    -
    -

    - 1 (0.0321268s) -

    -
    -

    - 1.16171 (0.0484289s) -

    -
    -

    - 1.24017 (0.0827832s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.08016 (0.0451073s) -

    -
    -

    - 1.33792 (0.042983s) -

    -
    -

    - 1.19676 (0.0498904s) -

    -
    -

    - 1 (0.0667514s) -

    -
    -

    - tommath_int -

    -
    -

    - 1 (0.0216845s) -

    -
    -

    - 1.07779 (0.0346258s) -

    -
    -

    - 1 (0.0416877s) -

    -
    -

    - 1.06344 (0.0709863s) -

    -
    -
    -
    -

    Table 1.18. Operator +(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.46244 (0.0202077s) -

    -
    -

    - 1.20665 (0.0238576s) -

    -
    -

    - 1.17647 (0.0258293s) -

    -
    -

    - 1.12424 (0.0317931s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0138178s) -

    -
    -

    - 1 (0.0197719s) -

    -
    -

    - 1 (0.0219548s) -

    -
    -

    - 1 (0.0282796s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.15321 (0.0297527s) -

    -
    -

    - 2.09834 (0.041488s) -

    -
    -

    - 2.89935 (0.0636546s) -

    -
    -

    - 3.70262 (0.104709s) -

    -
    -

    - tommath_int -

    -
    -

    - 17.1419 (0.236864s) -

    -
    -

    - 12.9762 (0.256563s) -

    -
    -

    - 12.3275 (0.270648s) -

    -
    -

    - 10.7373 (0.303648s) -

    -
    -
    -
    -

    Table 1.19. Operator -

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.15385 (0.029665s) -

    -
    -

    - 1.08217 (0.0369886s) -

    -
    -

    - 1.05882 (0.051534s) -

    -
    -

    - 1.12132 (0.0822725s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0257095s) -

    -
    -

    - 1 (0.0341801s) -

    -
    -

    - 1 (0.0486711s) -

    -
    -

    - 1.08659 (0.0797242s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.56685 (0.040283s) -

    -
    -

    - 1.32917 (0.0454312s) -

    -
    -

    - 1.06917 (0.0520378s) -

    -
    -

    - 1 (0.0733708s) -

    -
    -

    - tommath_int -

    -
    -

    - 1.059 (0.0272264s) -

    -
    -

    - 1.16974 (0.0399818s) -

    -
    -

    - 1.01303 (0.0493054s) -

    -
    -

    - 1.03375 (0.0758472s) -

    -
    -
    -
    -

    Table 1.20. Operator -(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.51665 (0.0157196s) -

    -
    -

    - 1.31513 (0.0200533s) -

    -
    -

    - 1.29599 (0.0235066s) -

    -
    -

    - 1.21534 (0.0266136s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0103647s) -

    -
    -

    - 1 (0.0152482s) -

    -
    -

    - 1 (0.018138s) -

    -
    -

    - 1 (0.021898s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.7938 (0.0289568s) -

    -
    -

    - 2.55493 (0.038958s) -

    -
    -

    - 3.12248 (0.0566356s) -

    -
    -

    - 4.48855 (0.0982904s) -

    -
    -

    - tommath_int -

    -
    -

    - 20.8695 (0.216305s) -

    -
    -

    - 15.0705 (0.229797s) -

    -
    -

    - 13.4093 (0.243217s) -

    -
    -

    - 12.2599 (0.268468s) -

    -
    -
    -
    -

    Table 1.21. Operator *

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.29504 (0.0731032s) -

    -
    -

    - 1.55431 (0.196132s) -

    -
    -

    - 1.4363 (0.656569s) -

    -
    -

    - 1.63701 (2.47859s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0564485s) -

    -
    -

    - 1.16604 (0.147138s) -

    -
    -

    - 1 (0.457124s) -

    -
    -

    - 1 (1.5141s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.19574 (0.0674975s) -

    -
    -

    - 1 (0.126186s) -

    -
    -

    - 1.16627 (0.53313s) -

    -
    -

    - 1.02906 (1.5581s) -

    -
    -

    - tommath_int -

    -
    -

    - 1.97229 (0.111333s) -

    -
    -

    - 2.67087 (0.337027s) -

    -
    -

    - 2.13031 (0.973817s) -

    -
    -

    - 2.05869 (3.11706s) -

    -
    -
    -
    -

    Table 1.22. Operator *(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.34609 (0.030315s) -

    -
    -

    - 1.57086 (0.0407838s) -

    -
    -

    - 1.60154 (0.0542267s) -

    -
    -

    - 1.67808 (0.0804984s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.29783 (0.0292279s) -

    -
    -

    - 1.58263 (0.0410894s) -

    -
    -

    - 1.61543 (0.054697s) -

    -
    -

    - 1.66841 (0.0800346s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (0.0225207s) -

    -
    -

    - 1 (0.0259628s) -

    -
    -

    - 1 (0.033859s) -

    -
    -

    - 1 (0.0479706s) -

    -
    -

    - tommath_int -

    -
    -

    - 12.4278 (0.279882s) -

    -
    -

    - 11.9045 (0.309074s) -

    -
    -

    - 10.5973 (0.358813s) -

    -
    -

    - 9.47384 (0.454466s) -

    -
    -
    -
    -

    Table 1.23. Operator /

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 2.86387 (0.593314s) -

    -
    -

    - 2.18375 (0.69965s) -

    -
    -

    - 1.72571 (0.918294s) -

    -
    -

    - 1.39251 (1.33801s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.207172s) -

    -
    -

    - 1 (0.320389s) -

    -
    -

    - 1 (0.532127s) -

    -
    -

    - 1 (0.960856s) -

    -
    -

    - gmp_int -

    -
    -

    - 3.89115 (0.806137s) -

    -
    -

    - 2.87573 (0.921352s) -

    -
    -

    - 1.96635 (1.04635s) -

    -
    -

    - 1.29618 (1.24544s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.9483 (2.47535s) -

    -
    -

    - 9.35941 (2.99865s) -

    -
    -

    - 8.79014 (4.67747s) -

    -
    -

    - 11.8316 (11.3684s) -

    -
    -
    -
    -

    Table 1.24. Operator /(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 5.77003 (0.313196s) -

    -
    -

    - 4.38067 (0.431864s) -

    -
    -

    - 3.55054 (0.634559s) -

    -
    -

    - 2.97898 (1.03205s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 2.48952 (0.135131s) -

    -
    -

    - 2.59188 (0.255519s) -

    -
    -

    - 2.56716 (0.458808s) -

    -
    -

    - 2.52368 (0.874313s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (0.0542797s) -

    -
    -

    - 1 (0.0985842s) -

    -
    -

    - 1 (0.178722s) -

    -
    -

    - 1 (0.346443s) -

    -
    -

    - tommath_int -

    -
    -

    - 31.6477 (1.71783s) -

    -
    -

    - 22.8727 (2.25489s) -

    -
    -

    - 19.9248 (3.56101s) -

    -
    -

    - 24.3266 (8.42779s) -

    -
    -
    -
    -

    Table 1.25. Operator %

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.9813 (0.357541s) -

    -
    -

    - 1.55667 (0.460146s) -

    -
    -

    - 1.35341 (0.681144s) -

    -
    -

    - 1.19906 (1.10138s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.180457s) -

    -
    -

    - 1 (0.295597s) -

    -
    -

    - 1 (0.503278s) -

    -
    -

    - 1 (0.918538s) -

    -
    -

    - gmp_int -

    -
    -

    - 3.50213 (0.631985s) -

    -
    -

    - 2.33312 (0.689662s) -

    -
    -

    - 1.57264 (0.791475s) -

    -
    -

    - 1.07795 (0.99014s) -

    -
    -

    - tommath_int -

    -
    -

    - 12.2393 (2.20868s) -

    -
    -

    - 10.1123 (2.98915s) -

    -
    -

    - 9.46676 (4.76442s) -

    -
    -

    - 12.1795 (11.1873s) -

    -
    -
    -
    -

    Table 1.26. Operator %(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.88485 (0.105552s) -

    -
    -

    - 2.00194 (0.203711s) -

    -
    -

    - 2.08202 (0.380096s) -

    -
    -

    - 2.12794 (0.752068s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.7474 (0.0978544s) -

    -
    -

    - 1.88457 (0.191768s) -

    -
    -

    - 2.0306 (0.37071s) -

    -
    -

    - 2.0851 (0.736929s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (0.0560001s) -

    -
    -

    - 1 (0.101757s) -

    -
    -

    - 1 (0.182561s) -

    -
    -

    - 1 (0.353426s) -

    -
    -

    - tommath_int -

    -
    -

    - 30.4466 (1.70501s) -

    -
    -

    - 22.2997 (2.26915s) -

    -
    -

    - 19.6199 (3.58184s) -

    -
    -

    - 24.0694 (8.50676s) -

    -
    -
    -
    -

    Table 1.27. Operator <<

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.20362 (0.0224696s) -

    -
    -

    - 1.08555 (0.0294403s) -

    -
    -

    - 1 (0.0360516s) -

    -
    -

    - 1.07177 (0.0523935s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0186683s) -

    -
    -

    - 1 (0.0271201s) -

    -
    -

    - 1.02126 (0.036818s) -

    -
    -

    - 1 (0.0488848s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.36706 (0.0255207s) -

    -
    -

    - 1.12042 (0.0303858s) -

    -
    -

    - 1.24359 (0.0448335s) -

    -
    -

    - 1.40143 (0.0685085s) -

    -
    -

    - tommath_int -

    -
    -

    - 2.09357 (0.0390833s) -

    -
    -

    - 2.4569 (0.0666312s) -

    -
    -

    - 2.63592 (0.0950291s) -

    -
    -

    - 3.43638 (0.167987s) -

    -
    -
    -
    -

    Table 1.28. Operator >>

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.33649 (0.0210319s) -

    -
    -

    - 1.12919 (0.0266135s) -

    -
    -

    - 1.10413 (0.0307184s) -

    -
    -

    - 1.09267 (0.0399373s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0157367s) -

    -
    -

    - 1 (0.0235686s) -

    -
    -

    - 1 (0.0278214s) -

    -
    -

    - 1.05198 (0.0384501s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.72135 (0.0270884s) -

    -
    -

    - 1.2078 (0.0284661s) -

    -
    -

    - 1.16066 (0.0322912s) -

    -
    -

    - 1 (0.0365503s) -

    -
    -

    - tommath_int -

    -
    -

    - 15.4381 (0.242945s) -

    -
    -

    - 11.8797 (0.279987s) -

    -
    -

    - 10.9043 (0.303374s) -

    -
    -

    - 14.0762 (0.514491s) -

    -
    -
    -
    -

    Table 1.29. Operator &

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.65829 (0.0314059s) -

    -
    -

    - 1.42198 (0.0390384s) -

    -
    -

    - 1.48578 (0.0498903s) -

    -
    -

    - 1.51243 (0.0770342s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0189387s) -

    -
    -

    - 1 (0.0274536s) -

    -
    -

    - 1 (0.0335786s) -

    -
    -

    - 1 (0.0509341s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.80248 (0.0530755s) -

    -
    -

    - 2.39752 (0.0658206s) -

    -
    -

    - 2.66009 (0.089322s) -

    -
    -

    - 2.73942 (0.13953s) -

    -
    -

    - tommath_int -

    -
    -

    - 6.95432 (0.131706s) -

    -
    -

    - 5.4059 (0.148412s) -

    -
    -

    - 4.56887 (0.153417s) -

    -
    -

    - 6.5696 (0.334616s) -

    -
    -
    -
    -

    Table 1.30. Operator &(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.63285 (0.0472296s) -

    -
    -

    - 1.43344 (0.0588492s) -

    -
    -

    - 1.33141 (0.0724386s) -

    -
    -

    - 1.21353 (0.104144s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0289247s) -

    -
    -

    - 1 (0.0410546s) -

    -
    -

    - 1 (0.0544075s) -

    -
    -

    - 1 (0.0858187s) -

    -
    -

    - gmp_int -

    -
    -

    - 5.24478 (0.151704s) -

    -
    -

    - 3.81907 (0.15679s) -

    -
    -

    - 2.77979 (0.151242s) -

    -
    -

    - 1.84209 (0.158086s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.7257 (0.339163s) -

    -
    -

    - 8.6379 (0.354625s) -

    -
    -

    - 6.90411 (0.375636s) -

    -
    -

    - 7.63253 (0.655013s) -

    -
    -
    -
    -

    Table 1.31. Operator ^

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.39325 (0.0297525s) -

    -
    -

    - 1.28821 (0.0385005s) -

    -
    -

    - 1.18843 (0.0492426s) -

    -
    -

    - 1.07724 (0.0758668s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0213547s) -

    -
    -

    - 1 (0.0298868s) -

    -
    -

    - 1 (0.041435s) -

    -
    -

    - 1 (0.070427s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.28582 (0.048813s) -

    -
    -

    - 2.03478 (0.0608129s) -

    -
    -

    - 2.05655 (0.0852131s) -

    -
    -

    - 1.92381 (0.135488s) -

    -
    -

    - tommath_int -

    -
    -

    - 6.17078 (0.131775s) -

    -
    -

    - 4.8567 (0.145151s) -

    -
    -

    - 3.64659 (0.151097s) -

    -
    -

    - 4.78192 (0.336776s) -

    -
    -
    -
    -

    Table 1.32. Operator ^(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.89396 (0.0383127s) -

    -
    -

    - 1.64269 (0.043417s) -

    -
    -

    - 1.5386 (0.0477162s) -

    -
    -

    - 1.32247 (0.0568053s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0202288s) -

    -
    -

    - 1 (0.0264305s) -

    -
    -

    - 1 (0.0310128s) -

    -
    -

    - 1 (0.0429539s) -

    -
    -

    - gmp_int -

    -
    -

    - 7.01953 (0.141997s) -

    -
    -

    - 5.47513 (0.14471s) -

    -
    -

    - 4.6627 (0.144603s) -

    -
    -

    - 3.59601 (0.154463s) -

    -
    -

    - tommath_int -

    -
    -

    - 16.2706 (0.329134s) -

    -
    -

    - 12.9494 (0.342258s) -

    -
    -

    - 11.3305 (0.35139s) -

    -
    -

    - 14.1712 (0.608709s) -

    -
    -
    -
    -

    Table 1.33. Operator |

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.34742 (0.0296944s) -

    -
    -

    - 1.25923 (0.0384846s) -

    -
    -

    - 1.20517 (0.0493908s) -

    -
    -

    - 1.10536 (0.0761343s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0220379s) -

    -
    -

    - 1 (0.030562s) -

    -
    -

    - 1 (0.0409823s) -

    -
    -

    - 1 (0.0688775s) -

    -
    -

    - gmp_int -

    -
    -

    - 2.14429 (0.0472558s) -

    -
    -

    - 1.95901 (0.0598712s) -

    -
    -

    - 2.07584 (0.0850728s) -

    -
    -

    - 1.94265 (0.133805s) -

    -
    -

    - tommath_int -

    -
    -

    - 5.98286 (0.13185s) -

    -
    -

    - 4.65705 (0.142329s) -

    -
    -

    - 3.85812 (0.158115s) -

    -
    -

    - 4.81524 (0.331662s) -

    -
    -
    -
    -

    Table 1.34. Operator |(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.40808 (0.0389721s) -

    -
    -

    - 1.65035 (0.0437872s) -

    -
    -

    - 1.51667 (0.0466144s) -

    -
    -

    - 1.37806 (0.0582842s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.0276775s) -

    -
    -

    - 1 (0.026532s) -

    -
    -

    - 1 (0.0307348s) -

    -
    -

    - 1 (0.0422945s) -

    -
    -

    - gmp_int -

    -
    -

    - 5.31451 (0.147092s) -

    -
    -

    - 5.37333 (0.142565s) -

    -
    -

    - 4.86508 (0.149527s) -

    -
    -

    - 3.74364 (0.158335s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.9312 (0.330226s) -

    -
    -

    - 12.943 (0.343403s) -

    -
    -

    - 11.4457 (0.35178s) -

    -
    -

    - 14.4462 (0.610997s) -

    -
    -
    -
    -

    Table 1.35. Operator gcd

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.82514 (4.45586s) -

    -
    -

    - 1.75955 (10.1748s) -

    -
    -

    - 1.87025 (25.23s) -

    -
    -

    - 2.11453 (68.8556s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1.57965 (3.85654s) -

    -
    -

    - 1.67404 (9.68027s) -

    -
    -

    - 1.8405 (24.8287s) -

    -
    -

    - 2.27588 (74.1096s) -

    -
    -

    - gmp_int -

    -
    -

    - 1 (2.44138s) -

    -
    -

    - 1 (5.78259s) -

    -
    -

    - 1 (13.4902s) -

    -
    -

    - 1 (32.5631s) -

    -
    -

    - tommath_int -

    -
    -

    - 5.01357 (12.24s) -

    -
    -

    - 4.38161 (25.337s) -

    -
    -

    - 4.08681 (55.1319s) -

    -
    -

    - 4.01045 (130.593s) -

    -
    -
    -
    -

    Table 1.36. Operator str

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_int -

    -
    -

    - 1.46421 (0.00195137s) -

    -
    -

    - 1.21669 (0.00319216s) -

    -
    -

    - 1.25041 (0.00765237s) -

    -
    -

    - 1.53339 (0.0218096s) -

    -
    -

    - cpp_int(fixed) -

    -
    -

    - 1 (0.00133271s) -

    -
    -

    - 1 (0.00262366s) -

    -
    -

    - 1.0109 (0.00618661s) -

    -
    -

    - 1.24429 (0.0176978s) -

    -
    -

    - gmp_int -

    -
    -

    - 1.7777 (0.00236916s) -

    -
    -

    - 1.27408 (0.00334274s) -

    -
    -

    - 1 (0.00611991s) -

    -
    -

    - 1 (0.0142232s) -

    -
    -

    - tommath_int -

    -
    -

    - 11.9797 (0.0159654s) -

    -
    -

    - 18.3349 (0.0481046s) -

    -
    -

    - 18.3681 (0.112411s) -

    -
    -

    - 25.0355 (0.356085s) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html deleted file mode 100644 index 6736d065..00000000 --- a/doc/html/boost_multiprecision/perf/rational_performance.html +++ /dev/null @@ -1,905 +0,0 @@ - - - -Rational Type Perfomance - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Note that these tests are carefully designed to test performance of the underlying - algorithms and not memory allocation or variable copying. As usual, performance - results should be taken with a healthy dose of scepticism, and real-world - performance may vary widely depending upon the specifics of the program. - In each table relative times are given first, with the best performer given - a score of 1. Total actual times are given in brackets, measured in seconds - for 500000 operations. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    -

    Table 1.37. Operator +

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.91758 (18.1263s) -

    -
    -

    - 6.60754 (44.1182s) -

    -
    -

    - 6.65334 (103.169s) -

    -
    -

    - 6.44717 (244.055s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (3.06312s) -

    -
    -

    - 1 (6.67695s) -

    -
    -

    - 1 (15.5064s) -

    -
    -

    - 1 (37.8546s) -

    -
    -
    -
    -

    Table 1.38. Operator +(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 3.98512 (2.67249s) -

    -
    -

    - 4.24335 (3.04309s) -

    -
    -

    - 4.65009 (3.83046s) -

    -
    -

    - 5.45832 (5.08346s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (0.670618s) -

    -
    -

    - 1 (0.717144s) -

    -
    -

    - 1 (0.823739s) -

    -
    -

    - 1 (0.931322s) -

    -
    -
    -
    -

    Table 1.39. Operator -

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.91504 (18.2374s) -

    -
    -

    - 6.55676 (43.8659s) -

    -
    -

    - 6.66239 (103.481s) -

    -
    -

    - 6.47224 (244.887s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (3.08322s) -

    -
    -

    - 1 (6.69018s) -

    -
    -

    - 1 (15.5321s) -

    -
    -

    - 1 (37.8365s) -

    -
    -
    -
    -

    Table 1.40. Operator -(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 3.96173 (2.66785s) -

    -
    -

    - 4.36532 (3.09023s) -

    -
    -

    - 4.59363 (3.74494s) -

    -
    -

    - 5.43075 (5.09156s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (0.673405s) -

    -
    -

    - 1 (0.707904s) -

    -
    -

    - 1 (0.815246s) -

    -
    -

    - 1 (0.937541s) -

    -
    -
    -
    -

    Table 1.41. Operator *

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.59286 (32.3559s) -

    -
    -

    - 6.54125 (82.4247s) -

    -
    -

    - 6.8815 (197.198s) -

    -
    -

    - 6.84066 (473.057s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (5.78521s) -

    -
    -

    - 1 (12.6008s) -

    -
    -

    - 1 (28.6562s) -

    -
    -

    - 1 (69.1537s) -

    -
    -
    -
    -

    Table 1.42. Operator *(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 2.70193 (3.1466s) -

    -
    -

    - 3.10134 (3.79056s) -

    -
    -

    - 3.659 (4.93935s) -

    -
    -

    - 4.61372 (6.89845s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (1.16457s) -

    -
    -

    - 1 (1.22223s) -

    -
    -

    - 1 (1.34992s) -

    -
    -

    - 1 (1.4952s) -

    -
    -
    -
    -

    Table 1.43. Operator /

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 4.36846 (63.9498s) -

    -
    -

    - 5.52565 (145.045s) -

    -
    -

    - 6.18331 (328.069s) -

    -
    -

    - 6.49822 (784.806s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (14.639s) -

    -
    -

    - 1 (26.2494s) -

    -
    -

    - 1 (53.0571s) -

    -
    -

    - 1 (120.772s) -

    -
    -
    -
    -

    Table 1.44. Operator /(int)

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 2.26643 (3.13785s) -

    -
    -

    - 2.57125 (3.76931s) -

    -
    -

    - 3.20872 (5.06758s) -

    -
    -

    - 4.02177 (7.17803s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (1.38449s) -

    -
    -

    - 1 (1.46594s) -

    -
    -

    - 1 (1.57931s) -

    -
    -

    - 1 (1.78479s) -

    -
    -
    -
    -

    Table 1.45. Operator str

    -
    ------- - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend -

    -
    -

    - 128 Bits -

    -
    -

    - 256 Bits -

    -
    -

    - 512 Bits -

    -
    -

    - 1024 Bits -

    -
    -

    - cpp_rational -

    -
    -

    - 5.40493 (0.0199393s) -

    -
    -

    - 8.55089 (0.0511907s) -

    -
    -

    - 9.91026 (0.118839s) -

    -
    -

    - 9.93546 (0.285367s) -

    -
    -

    - mpq_rational -

    -
    -

    - 1 (0.00368909s) -

    -
    -

    - 1 (0.00598659s) -

    -
    -

    - 1 (0.0119915s) -

    -
    -

    - 1 (0.028722s) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html deleted file mode 100644 index 4dd0d5ef..00000000 --- a/doc/html/boost_multiprecision/perf/realworld.html +++ /dev/null @@ -1,278 +0,0 @@ - - - -Floating Point Real World Tests - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - These tests test the total time taken to execute all of Boost.Math's test - cases for these functions. In each case the best performing library gets - a relative score of 1, with the total execution time given in brackets. The - first three libraries listed are the various floating point types provided - by this library, while for comparison, two popular C++ front-ends to MPFR ( mpfr_class - and mpreal) are - also shown. -

    -

    - Test code was compiled with Microsoft Visual Studio 2010 with all optimisations - turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. - The tests were run on 32-bit Windows Vista machine. -

    -
    -

    Table 1.6. Bessel Function Performance

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - mpfr_float -

    -
    -

    - 1.0 (6.472s) -

    -
    -

    - 1.193 (10.154s) -

    -
    -

    - mpf_float -

    -
    -

    - 1.801 (11.662s) -

    -
    -

    - 1.0(8.511s) -

    -
    -

    - cpp_dec_float -

    -
    -

    - 3.13 (20.285s) -

    -
    -

    - 2.46 (21.019s) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.001 (6.480s) -

    -
    -

    - 1.15(9.805s) -

    -
    -

    - mpreal -

    -
    -

    - 1.542 (9.981s) -

    -
    -

    - 1.61 (13.702s) -

    -
    -
    -
    -

    Table 1.7. Non-Central T Distribution Performance

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Library -

    -
    -

    - 50 Decimal Digits -

    -
    -

    - 100 Decimal Digits -

    -
    -

    - mpfr_float -

    -
    -

    - 1.308 (258.09s) -

    -
    -

    - 1.30 (516.74s) -

    -
    -

    - mpf_float -

    -
    -

    - 1.0 (197.30s) -

    -
    -

    - 1.0(397.30s) -

    -
    -

    - cpp_dec_float -

    -
    -

    - 1.695 (334.50s) -

    -
    -

    - 2.68 (1064.53s) -

    -
    -

    - mpfr_class -

    -
    -

    - 1.35 (266.39s) -

    -
    -

    - 1.323 (525.74s) -

    -
    -

    - mpreal -

    -
    -

    - 1.75 (346.64s) -

    -
    -

    - 1.635 (649.94s) -

    -
    -
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html deleted file mode 100644 index 35ad59f4..00000000 --- a/doc/html/boost_multiprecision/ref.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Reference - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html deleted file mode 100644 index 3bf6b60f..00000000 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ /dev/null @@ -1,2295 +0,0 @@ - - - -Backend Requirements - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The requirements on the Backend - template argument to mp_number - are split up into compulsory requirements, and optional requirements that - are either to improve performance or provide optional features. -

    -

    - In the following tables, type B is the Backend - template arument to mp_number, - b and b2 - are a variables of type B, cb - and cb2 are constant variables - of type B, a is a variable - of Arithmetic type, s is - a variable of type const char*, ui - is a variable of type unsigned, - bb is a variable of type - bool, pa - is a variable of type pointer-to-arithmetic-type, exp - is a variable of type B::exp_type, pexp - is a variable of type B::exp_type*, - B2 is another type that meets these requirements, b2 is a variable of type - B2. -

    -
    -

    Table 1.4. Compulsory Requirements on the Backend type.

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Expression -

    -
    -

    - Return Type -

    -
    -

    - Comments -

    -
    -

    - B::signed_types -

    -
    -

    - mpl::list<type-list> -

    -
    -

    - A list of signed integral types that can be assigned to type B. - The types shall be listed in order of size, smallest first, and - shall terminate in the type that is std::intmax_t. -

    -
    -

    - B::unsigned_types -

    -
    -

    - mpl::list<type-list> -

    -
    -

    - A list of unsigned integral types that can be assigned to type - B. The types shall be listed in order of size, smallest first, - and shall terminate in the type that is std::uintmax_t. -

    -
    -

    - B::float_types -

    -
    -

    - mpl::list<type-list> -

    -
    -

    - A list of floating-point types that can be assigned to type B.The - types shall be listed in order of size, smallest first, and shall - terminate in type long double. -

    -
    -

    - B::exponent_type -

    -
    -

    - A signed integral type. -

    -
    -

    - The type of the exponent of type B. -

    -
    -

    - B() -

    -
    - -

    - Default constructor. -

    -
    -

    - B(cb) -

    -
    - -

    - Copy Constructor. -

    -
    -

    - b = - b -

    -
    -

    - B& -

    -
    -

    - Assignment operator. -

    -
    -

    - b = - a -

    -
    -

    - B& -

    -
    -

    - Assignment from an Arithmetic type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - b = - s -

    -
    -

    - B& -

    -
    -

    - Assignment from a string. -

    -
    -

    - b.swap(b) -

    -
    -

    - void -

    -
    -

    - Swaps the contents of its arguments. -

    -
    -

    - cb.str(ui, - bb) -

    -
    -

    - std::string -

    -
    -

    - Returns the string representation of b - with ui digits - and in scientific format if bb - is true. If ui is zero, then returns as many - digits as are required to reconstruct the original value. -

    -
    -

    - b.negate() -

    -
    -

    - void -

    -
    -

    - Negates b. -

    -
    -

    - cb.compare(cb2) -

    -
    -

    - int -

    -
    -

    - Compares cb and - cb2, returns a - value less than zero if cb - < cb2, - a value greater than zero if cb - > cb2 - and zero if cb == cb2. -

    -
    -

    - cb.compare(a) -

    -
    -

    - int -

    -
    -

    - Compares cb and - a, returns a value - less than zero if cb - < a, - a value greater than zero if cb - > a - and zero if cb == a. - The type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_add(b, - cb) -

    -
    -

    - void -

    -
    -

    - Adds cb to b. -

    -
    -

    - eval_subtract(b, - cb) -

    -
    -

    - void -

    -
    -

    - Subtracts cb from - b. -

    -
    -

    - eval_multiply(b, - cb) -

    -
    -

    - void -

    -
    -

    - Multiplies b by - cb. -

    -
    -

    - eval_divide(b, - cb) -

    -
    -

    - void -

    -
    -

    - Divides b by cb. -

    -
    -

    - eval_modulus(b, - cb) -

    -
    -

    - void -

    -
    -

    - Computes b %= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_bitwise_and(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes b &= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_bitwise_or(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes b |= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_bitwise_xor(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes b ^= - cb, only required when - B is an integer - type. -

    -
    -

    - eval_complement(b, cb) -

    -
    -

    - void -

    -
    -

    - Computes the ones-complement of cb - and stores the result in b, - only required when B - is an integer type. -

    -
    -

    - eval_left_shift(b, ui) -

    -
    -

    - void -

    -
    -

    - Computes b <<= - ui, only required when - B is an integer - type. -

    -
    -

    - eval_right_shift(b, ui) -

    -
    -

    - void -

    -
    -

    - Computes b >>= - ui, only required when - B is an integer - type. -

    -
    -

    - eval_convert_to(pa, cb) -

    -
    -

    - void -

    -
    -

    - Converts cb to - the type of *pa - and store the result in *pa. Type B - shall support conversion to at least types std::intmax_t, - std::uintmax_t and long - long. Conversion to other - arithmetic types can then be synthesised using other operations. - Conversions to other types are entirely optional. -

    -
    -

    - eval_frexp(b, - cb, - pexp) -

    -
    -

    - void -

    -
    -

    - Stores values in b - and *pexp - such that the value of cb - is b * 2*pexp, only required when B - is a floating-point type. -

    -
    -

    - eval_ldexp(b, - cb, - exp) -

    -
    -

    - void -

    -
    -

    - Stores a value in b - that is cb * 2exp, only required when B - is a floating-point type. -

    -
    -

    - eval_floor(b, - cb) -

    -
    -

    - void -

    -
    -

    - Stores the floor of cb - in b, only required - when B is a floating-point - type. -

    -
    -

    - eval_ceil(b, - cb) -

    -
    -

    - void -

    -
    -

    - Stores the ceiling of cb - in b, only required - when B is a floating-point - type. -

    -
    -

    - eval_sqrt(b, - cb) -

    -
    -

    - void -

    -
    -

    - Stores the square root of cb - in b, only required - when B is a floating-point - type. -

    -
    -

    - boost::multiprecision::number_category<B>::type -

    -
    -

    - mpl::int_<N> -

    -
    -

    - N is one of the - values number_kind_integer, - number_kind_floating_point, - number_kind_rational - or number_kind_fixed_point. - Defaults to number_kind_floating_point. -

    -
    -
    -
    -

    Table 1.5. Optional Requirements on the Backend Type

    -
    ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Expression -

    -
    -

    - Returns -

    -
    -

    - Comments -

    -
    -

    - B(b2) -

    -
    -

    - B -

    -
    -

    - Copy constructor from a different back-end type. -

    -
    -

    - b = - b2 -

    -
    -

    - b& -

    -
    -

    - Assignment operator from a different back-end type. -

    -
    -

    - assign_components(b, a, a) -

    -
    -

    - void -

    -
    -

    - Assigns to b the - two components in the following arguments. Only applies to rational - and complex number types. -

    -
    -

    - assign_components(b, b2, b2) -

    -
    -

    - void -

    -
    -

    - Assigns to b the - two components in the following arguments. Only applies to rational - and complex number types. -

    -
    -

    - eval_add(b, - a) -

    -
    -

    - void -

    -
    -

    - Adds a to b. The type of a shall be listed in one of the - type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_subtract(b, - a) -

    -
    -

    - void -

    -
    -

    - Subtracts a from - b. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - a) -

    -
    -

    - void -

    -
    -

    - Multiplies b by - a. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - a) -

    -
    -

    - void -

    -
    -

    - Divides b by a. The type of a shall be listed in one of the - type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_modulus(b, - a) -

    -
    -

    - void -

    -
    -

    - Computes b %= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_and(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b &= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b |= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b ^= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_add(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Add cb to cb2 and stores the result in - b. -

    -
    -

    - eval_subtract(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Subtracts cb2 from - cb and stores the - result in b. -

    -
    -

    - eval_multiply(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Multiplies cb by - cb2 and stores - the result in b. -

    -
    -

    - eval_divide(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Divides cb by - cb2 and stores - the result in b. -

    -
    -

    - eval_add(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Add cb to a and stores the result in b. The type of a shall be listed in one of the - type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_subtract(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Subtracts a from - cb and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Multiplies cb by - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Divides cb by - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_modulus(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb % - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_and(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb & - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_or(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb | - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_xor(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb ^ - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_add(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Add a to cb and stores the result in - b. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_subtract(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Subtracts cb from - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Multiplies a by - cb and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Divides a by cb and stores the result in - b. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_modulus(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Computes cb % - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_and(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb & - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb | - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb ^ - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_modulus(b, - a, - cb) -

    -
    -

    - void -

    -
    -

    - Computes cb % - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_and(b, a, cb) -

    -
    -

    - void -

    -
    -

    - Computes cb & - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, a, cb) -

    -
    -

    - void -

    -
    -

    - Computes cb | - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, a, cb) -

    -
    -

    - void -

    -
    -

    - Computes a ^ - cb and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_left_shift(b, cb, ui) -

    -
    -

    - void -

    -
    -

    - Computes cb << - ui and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_right_shift(b, cb, ui) -

    -
    -

    - void -

    -
    -

    - Computes cb >> - ui and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_increment(b) -

    -
    -

    - void -

    -
    -

    - Increments the value of b - by one. -

    -
    -

    - eval_decrement(b) -

    -
    -

    - void -

    -
    -

    - Decrements the value of b - by one. -

    -
    -

    - eval_is_zero(cb) -

    -
    -

    - bool -

    -
    -

    - Returns true if cb is zero, otherwise false -

    -
    -

    - eval_get_sign(cb) -

    -
    -

    - int -

    -
    -

    - Returns a value < zero if cb - is negative, a value > zero if cb - is positive, and zero if cb - is zero. -

    -
    -

    - eval_abs(b, - cb) -

    -
    -

    - void -

    -
    -

    - Set b to the absolute - value of cb. -

    -
    -

    - eval_fabs(b, - cb) -

    -
    -

    - void -

    -
    -

    - Set b to the absolute - value of cb. -

    -
    -

    - eval_fpclassify(cb) -

    -
    -

    - int -

    -
    -

    - Returns one of the same values returned by std::fpclassify. - Only required when B - is an floating-point type. -

    -
    -

    - eval_trunc(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::trunc - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_round(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::round - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_exp(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::exp - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_log(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::log - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_log10(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::log10 - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_sin(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::sin - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_cos(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::cos - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_tan(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::exp - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_asin(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::asin - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_acos(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::acos - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_atan(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::atan - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_sinh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::sinh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_cosh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::cosh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_tanh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::tanh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_fmod(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::fmod - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_pow(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::pow - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_atan2(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::atan - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_qr(cb, - cb2, - b, - b2) -

    -
    -

    - void -

    -
    -

    - Sets b to the result - of cb / - cb2 and b2 to the result of cb % - cb2. Only required when - B is an integer - type. -

    -
    -

    - eval_integer_modulus(cb, ui) -

    -
    -

    - unsigned -

    -
    -

    - Returns the result of cb - % ui. - Only required when B - is an integer type. -

    -
    -

    - eval_lsb(cb) -

    -
    -

    - unsigned -

    -
    -

    - Returns the index of the least significant bit that is set. Only - required when B - is an integer type. -

    -
    -

    - eval_bit_test(cb, - ui) -

    -
    -

    - bool -

    -
    -

    - Returns true if cb - has bit ui set. - Only required when B - is an integer type. -

    -
    -

    - eval_bit_set(b, - ui) -

    -
    -

    - void -

    -
    -

    - Sets the bit at index ui - in b. Only required - when B is an integer - type. -

    -
    -

    - eval_bit_unset(b, ui) -

    -
    -

    - void -

    -
    -

    - Unsets the bit at index ui - in b. Only required - when B is an integer - type. -

    -
    -

    - eval_bit_flip(b, - ui) -

    -
    -

    - void -

    -
    -

    - Flips the bit at index ui - in b. Only required - when B is an integer - type. -

    -
    -

    - eval_gcd(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Sets b to the greatest - common divisor of cb - and cb2. Only required - when B is an integer - type. -

    -
    -

    - eval_lcm(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Sets b to the least - common multiple of cb - and cb2. Only required - when B is an integer - type. -

    -
    -
    -
    - - - - - -
    [Note]Note

    - The non-member functions are all named with an "eval_" prefix - to avoid conflicts with template classes of the same name - in point of - fact this naming convention shouldn't be necessary, but rather works around - some compiler bugs. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html deleted file mode 100644 index 9d34b1e6..00000000 --- a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html +++ /dev/null @@ -1,61 +0,0 @@ - - - -cpp_dec_float - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class cpp_dec_float;
    -
    -typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50;
    -typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100;
    -
    -}} // namespaces
    -
    -

    - Class template cpp_dec_float - fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: - these are considered implementation details that are subject to change. -

    -

    - The class takes a single template parameter - Digits10 - - which is the number of decimal digits precision the type should support. - Note that this type does not ever perform any dynamic memory allocation, - as a result the Digits10 - template argument should not be set too high or the classes size will grow - unreasonably large. -

    -

    - More information on this type can be found in the tutorial. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html deleted file mode 100644 index 40530e86..00000000 --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html +++ /dev/null @@ -1,99 +0,0 @@ - - - -cpp_int - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned MinBits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    -struct cpp_int_backend;
    -
    -typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    -typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    -typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    -
    -// Fixed precision unsigned types:
    -typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    -typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    -typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    -typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
    -
    -// Fixed precision signed types:
    -typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    -typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    -typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    -typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
    -
    -}} // namespaces
    -
    -

    - Class template cpp_int_backend - fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: - these are considered implementation details that are subject to change. -

    -

    - The template arguments are: -

    -
    -

    -
    -
    Argument
    -

    - Meaning -

    -
    MinBits
    -

    - The number of Bits to reserve inside the class's internal cache. When - constructing a value, the object will use this internal cache if possible - before resorting to dynamic memory allocation. When this value is zero, - then the size of the internal cache is 2*sizeof(void*)*CHAR_BIT. - When the Allocator argument is void, - then this parameter determines the precision of the type. -

    -
    Signed
    -

    - When true the type is - signed, otherwise unsigned. Note that unsigned types are currently - only supported when the Allocator parameter is void. -

    -
    Allocator
    -

    - The allocator used for dynamic memory allocation. This parameter can - be void, in which case - no dymanic memory will ever be allocated. -

    -
    -
    -

    - More information on this type can be found in the tutorial. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/gmp_int_ref.html b/doc/html/boost_multiprecision/ref/gmp_int_ref.html deleted file mode 100644 index 71dfb0ae..00000000 --- a/doc/html/boost_multiprecision/ref/gmp_int_ref.html +++ /dev/null @@ -1,51 +0,0 @@ - - - -gmp_int - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    namespace boost{ namespace multiprecision{
    -
    -class gmp_int;
    -
    -typedef mp_number<gmp_int >         mpz_int;
    -
    -}} // namespaces
    -
    -

    - Class template gmp_int fulfills - all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: - these are considered implementation details that are subject to change. -

    -

    - More information on this type can be found in the tutorial. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html deleted file mode 100644 index b883aa18..00000000 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ /dev/null @@ -1,695 +0,0 @@ - - - -mp_number - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    - - Synopsis -
    -
    namespace boost{ namespace multiprecision{
    -
    -template <class Backend, bool ExpressionTemplates = true>
    -class mp_number
    -{
    -   mp_number();
    -   mp_number(see-below);
    -   mp_number& operator=(see-below);
    -
    -   // Member operators
    -   mp_number& operator+=(const see-below&);
    -   mp_number& operator-=(const see-below&);
    -   mp_number& operator*=(const see-below&);
    -   mp_number& operator/=(const see-below&);
    -   mp_number& operator++();
    -   mp_number& operator--();
    -   mp_number  operator++(int);
    -   mp_number  operator--(int);
    -
    -   mp_number& operator%=(const see-below&);
    -   mp_number& operator&=(const see-below&);
    -   mp_number& operator|=(const see-below&);
    -   mp_number& operator^=(const see-below&);
    -   mp_number& operator<<=(const integer-type&);
    -   mp_number& operator>>=(const integer-type&);
    -
    -   // Use in Boolean context:
    -   operator convertible-to-bool-type()const;
    -   // swap:
    -   void swap(mp_number& other);
    -   // Sign:
    -   bool is_zero()const;
    -   int sign()const;
    -   // string conversion:
    -   std::string str()const;
    -   // Generic conversion mechanism
    -   template <class T>
    -   T convert_to()const;
    -   // precision control:
    -   static unsigned default_precision();
    -   static void default_precision(unsigned digits10);
    -   unsigned precision()const;
    -   void precision(unsigned digits10);
    -   // Comparison:
    -   int compare(const mp_number<Backend>& o)const;
    -   template <class V>
    -   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
    -   // Access to the underlying implementation:
    -   Backend& backend();
    -   const Backend& backend()const;
    -};
    -
    -// Non member operators:
    -unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    -// Integer only operations:
    -unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    -unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    -// Comparison operators:
    -bool operator==(const see-below&, const see-below&);
    -bool operator!=(const see-below&, const see-below&);
    -bool operator< (const see-below&, const see-below&);
    -bool operator> (const see-below&, const see-below&);
    -bool operator<=(const see-below&, const see-below&);
    -bool operator>=(const see-below&, const see-below&);
    -
    -// Swap:
    -template <class Backend, bool ExpressionTemplates>
    -void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    -
    -// iostream support:
    -template <class Backend, bool ExpressionTemplates>
    -std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    -std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
    -template <class Backend, bool ExpressionTemplates>
    -std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r);
    -
    -// Non-member function standard library support:
    -unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    -
    -unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    -unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    -unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -
    -// Traits support:
    -template <class T>
    -struct component_type;
    -template <class T>
    -struct number_category;
    -
    -// Integer specific functions:
    -template <class Backend, bool ExpressionTemplates>
    -bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    -               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    -template <class Integer>
    -Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    -unsigned lsb(const mp_number-or-expression-template-type& x);
    -template <class Backend, class ExpressionTemplates>
    -bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -template <class Engine>
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    -
    -// Rational number support:
    -typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    -typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    -
    -}} // namespaces
    -
    -namespace boost{ namespace math{
    -
    -// Boost.Math interoperability functions:
    -int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
    -bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
    -bool                                             isnan          (const mp_number-or-expression-template-type&, int);
    -bool                                             isinf          (const mp_number-or-expression-template-type&, int);
    -bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
    -
    -}} // namespaces
    -
    -// numeric_limits support:
    -namespace std{
    -
    -template <class Backend, bool ExpressionTemplates>
    -struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    -{
    -   /* Usual members here */
    -};
    -
    -}
    -
    -
    - - Description -
    -
    template <class Backend, bool ExpressionTemplates = true>
    -class mp_number;
    -
    -

    - Class mp_number has two template - arguments: -

    -
    -

    -
    -
    Backend
    -

    - The actual arithmetic back-end that does all the work. -

    -
    ExpressionTemplates
    -

    - A Boolean value: when true, then expression templates are enabled, - otherwise they are disabled. -

    -
    -
    -
    mp_number();
    -mp_number(see-below);
    -mp_number& operator=(see-below);
    -
    -

    - Type mp_number is default - constructible, and both copy constructible and assignable from: -

    -
      -
    • - Itself. -
    • -
    • - An expression template which is the result of one of the arithmetic operators. -
    • -
    • - Any builtin arithmetic type. -
    • -
    • - A std::string or any type which is convertible - to const char*. -
    • -
    • - Any type that the Backend is constructible or assignable from. -
    • -
    -

    - In addition, if the type has multiple components (for example rational or - complex number types), then there is a two argument constructor: -

    -
    mp_number(arg1, arg2);
    -
    -

    - Where the two args must either be arithmetic types, or types that are convertible - to the two components of this. -

    -
    mp_number& operator+=(const see-below&);
    -mp_number& operator-=(const see-below&);
    -mp_number& operator*=(const see-below&);
    -mp_number& operator/=(const see-below&);
    -mp_number& operator++();
    -mp_number& operator--();
    -mp_number  operator++(int);
    -mp_number  operator--(int);
    -// Integer only operations:
    -mp_number& operator%=(const see-below&);
    -mp_number& operator&=(const see-below&);
    -mp_number& operator|=(const see-below&);
    -mp_number& operator^=(const see-below&);
    -mp_number& operator<<=(const integer-type&);
    -mp_number& operator>>=(const integer-type&);
    -
    -

    - These operators all take their usual arithmetic meanings. -

    -

    - The arguments to these operators is either: -

    -
      -
    • - Another mp_number<Backend, - ExpressionTemplates>. -
    • -
    • - A builtin arithmetic type. -
    • -
    • - An expression template derived from mp_number<Backend>. -
    • -
    -

    - For the left and right shift operations, the argument must be a builtin integer - type with a positive value (negative values result in a std::runtime_error - being thrown). -

    -
    operator convertible-to-bool-type()const;
    -
    -

    - Returns an unmentionable-type that is usable in Boolean - contexts (this allows mp_number - to be used in any Boolean context - if statements, conditional statements, - or as an argument to a logical operator - without type mp_number - being convertible to type bool. -

    -

    - This operator also enables the use of mp_number - with any of the following operators: !, - ||, && - and ?:. -

    -
    void swap(mp_number& other);
    -
    -

    - Swaps *this - with other. -

    -
    bool is_zero()const;
    -
    -

    - Returns true is *this is zero, - otherwise false. -

    -
    int sign()const;
    -
    -

    - Returns a value less than zero if *this is negative, a value greater than zero - if *this - is positive, and zero if *this - is zero. -

    -
    std::string str(unsigned precision, bool scientific = true)const;
    -
    -

    - Returns the number formatted as a string, with at least precision - digits, and in scientific format if scientific is true. -

    -
    template <class T>
    -T convert_to()const;
    -
    -

    - Provides a generic conversion mechanism to convert *this to type T. - Type T may be any arithmetic - type. Optionally other types may also be supported by specific Backend types. -

    -
    static unsigned default_precision();
    -static void default_precision(unsigned digits10);
    -unsigned precision()const;
    -void precision(unsigned digits10);
    -
    -

    - These functions are only available if the Backend template parameter supports - runtime changes to precision. They get and set the default precision and - the precision of *this - respectively. -

    -
    int compare(const mp_number<Backend, ExpressionTemplates>& o)const;
    -template <class V>
    -typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
    -
    -

    - Returns: -

    -
      -
    • - A value less that 0 for *this < other -
    • -
    • - A value greater that 0 for *this > other -
    • -
    • - Zero for *this - == other -
    • -
    -
    Backend& backend();
    -const Backend& backend()const;
    -
    -

    - Returns the underlying back-end instance used by *this. -

    -
    - - Non-member - operators -
    -
    // Non member operators:
    -unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    -// Integer only operations:
    -unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    -unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    -unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    -// Comparison operators:
    -bool operator==(const see-below&, const see-below&);
    -bool operator!=(const see-below&, const see-below&);
    -bool operator< (const see-below&, const see-below&);
    -bool operator> (const see-below&, const see-below&);
    -bool operator<=(const see-below&, const see-below&);
    -bool operator>=(const see-below&, const see-below&);
    -
    -

    - These operators all take their usual arithmetic meanings. -

    -

    - The arguments to these functions must contain at least one of the following: -

    -
      -
    • - An mp_number. -
    • -
    • - An expression template type derived from mp_number. -
    • -
    -

    - In addition, one of the two arguments may be a builtin arithmetic type. -

    -

    - The return type of these operators is either: -

    -
      -
    • - An unmentionable-type expression template type when - ExpressionTemplates is - true. -
    • -
    • - Type mp_number<Backend, - false> - when ExpressionTemplates - is false. -
    • -
    • - Type bool if the operator - is a comparison operator. -
    • -
    -

    - Finally note that the second argument to the left and right shift operations - must be a builtin integer type, and that the argument must be positive (negative - arguments result in a std::runtime_error - being thrown). -

    -
    - - swap -
    -
    template <class Backend, ExpressionTemplates>
    -void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    -
    -

    - Swaps a and b. -

    -
    - - Iostream - Support -
    -
    template <class Backend, bool ExpressionTemplates>
    -std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    -template <class Unspecified...>
    -std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
    -template <class Backend, bool ExpressionTemplates>
    -inline std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r)
    -
    -

    - These operators provided formatted input-output operations on mp_number types, and expression templates - derived from them. -

    -

    - It's down to the back-end type to actually implement string conversion. However, - the back-ends provided with this library support all of the iostream formatting - flags, field width and precision settings. -

    -
    - - Non-member - standard library function support -
    -
    unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    -
    -unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    -unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    -unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    -
    -

    - These functions all behave exactly as their standard library counterparts - do: their argument is either an instance of mp_number - or an expression template derived from it; If the argument is of type mp_number<Backend, false> - then that is also the return type, otherwise the return type is an expression - template. -

    -

    - These functions are normally implemented by the Backend type. However, default - versions are provided for Backend types that don't have native support for - these functions. Please note however, that this default support requires - the precision of the type to be a compile time constant - this means for - example that the GMP MPF Backend will - not work with these functions when that type is used at variable precision. -

    -

    - Also note that with the exception of abs - that these functions can only be used with floating-point Backend types. -

    -
    - - Traits - Class Support -
    -
    template <class T>
    -struct component_type;
    -
    -

    - If this is a type with mutiple components (for example rational or complex - types), then this trait has a single member type - that is the type of those components. -

    -
    template <class T>
    -struct number_category;
    -
    -

    - A traits class that inherits from mpl::int_<N> - where N is one of the enumerated - values number_kind_integer, - number_kind_floating_point, - number_kind_rational or - number_kind_fixed_point. -

    -
    - - Integer functions -
    -
    template <class Backend, bool ExpressionTemplates>
    -bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    -               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    -
    -

    - Divides x by y and returns both the quotient and remainder. After the call - q = - x / y and r - = x % y. -

    -
    template <class Integer>
    -Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    -
    -

    - Returns the absolute value of x - % val. -

    -
    unsigned lsb(const mp_number-or-expression-template-type& x);
    -
    -

    - Returns the index of the least significant bit that is set to 1. -

    -
    template <class Backend, class ExpressionTemplates>
    -bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Returns true if the bit at - index in val is set. -

    -
    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Sets the bit at index in val, and - returns val. -

    -
    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Unsets the bit at index in val, - and returns val. -

    -
    template <class Backend, class ExpressionTemplates>
    -mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    -
    -

    - Flips the bit at index in val, - and returns val. -

    -
    template <class Engine>
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    -bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    -
    -

    - Tests to see if the number n is probably prime - the - test excludes the vast majority of composite numbers by excluding small prime - factors and performing a single Fermat test. Then performs trials - Miller-Rabin tests. Returns false - if n is definitely composite, or true - if n is probably prime with the probability of it being - composite less than 0.25^trials. -

    -
    - - Rational - Number Functions -
    -
    typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    -typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    -
    -

    - These functions return the numerator and denominator of a rational number - respectively. -

    -
    - - Boost.Math - Interoperability Support -
    -
    namespace boost{ namespace math{
    -
    -int  fpclassify     (const mp_number-or-expression-template-type&, int);
    -bool isfinite       (const mp_number-or-expression-template-type&, int);
    -bool isnan          (const mp_number-or-expression-template-type&, int);
    -bool isinf          (const mp_number-or-expression-template-type&, int);
    -bool isnormal       (const mp_number-or-expression-template-type&, int);
    -
    -}} // namespaces
    -
    -

    - These floating-point classification functions behave exactly as their Boost.Math - equivalents. -

    -

    - Other Boost.Math functions and templates may also be specialized or overloaded - to ensure interoperability. -

    -
    - - std::numeric_limits - support -
    -
    namespace std{
    -
    -template <class Backend, ExpressionTemplates>
    -struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    -{
    -   /* Usual members here */
    -};
    -
    -}
    -
    -

    - Class template std::numeric_limits is specialized for all instantiations - of mp_number whose precision - is known at compile time, plus those types whose precision is unlimited (though - it is much less useful in those cases). It is not specialized for types whose - precision can vary at compile time (such as mpf_float). -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/mpf_ref.html b/doc/html/boost_multiprecision/ref/mpf_ref.html deleted file mode 100644 index fd2d8f50..00000000 --- a/doc/html/boost_multiprecision/ref/mpf_ref.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -gmp_float - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class gmp_float;
    -
    -typedef mp_number<gmp_float<50> >    mpf_float_50;
    -typedef mp_number<gmp_float<100> >   mpf_float_100;
    -typedef mp_number<gmp_float<500> >   mpf_float_500;
    -typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    -typedef mp_number<gmp_float<0> >     mpf_float;
    -
    -}} // namespaces
    -
    -

    - Class template gmp_float - fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: - these are considered implementation details that are subject to change. -

    -

    - The class takes a single template parameter - Digits10 - - which is the number of decimal digits precision the type should support. - When this parameter is zero, then the precision can be set at runtime via - mp_number::default_precision and mp_number::precision. - Note that this type does not in any way change the GMP library's global state - (for example it does not change the default precision of the mpf_t data type), - therefore you can safely mix this type with existing code that uses GMP, - and also mix gmp_floats of - differing precision. -

    -

    - More information on this type can be found in the tutorial. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/mpfr_ref.html b/doc/html/boost_multiprecision/ref/mpfr_ref.html deleted file mode 100644 index 7588f301..00000000 --- a/doc/html/boost_multiprecision/ref/mpfr_ref.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -mpfr_float_backend - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class mpfr_float_backend;
    -
    -typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
    -typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
    -typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
    -typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
    -typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
    -
    -}} // namespaces
    -
    -

    - Class template mpfr_float_backend - fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: - these are considered implementation details that are subject to change. -

    -

    - The class takes a single template parameter - Digits10 - - which is the number of decimal digits precision the type should support. - When this parameter is zero, then the precision can be set at runtime via - mp_number::default_precision and mp_number::precision. - Note that this type does not in any way change the GMP or MPFR library's - global state (for example it does not change the default precision of the - mpfr_t data type), therefore you can safely mix this type with existing code - that uses GMP or MPFR, and also mix mpfr_float_backends - of differing precision. -

    -

    - More information on this type can be found in the tutorial. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/ref/tom_int_ref.html b/doc/html/boost_multiprecision/ref/tom_int_ref.html deleted file mode 100644 index 95abdcbe..00000000 --- a/doc/html/boost_multiprecision/ref/tom_int_ref.html +++ /dev/null @@ -1,51 +0,0 @@ - - - -tom_int - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    namespace boost{ namespace multiprecision{
    -
    -class tommath_int;
    -
    -typedef mp_number<tommath_int >         tom_int;
    -
    -}} // namespaces
    -
    -

    - Class template tommath_int - fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: - these are considered implementation details that are subject to change. -

    -

    - More information on this type can be found in the tutorial. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html deleted file mode 100644 index 38896477..00000000 --- a/doc/html/boost_multiprecision/tut.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -Tutorial - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html deleted file mode 100644 index b34da26c..00000000 --- a/doc/html/boost_multiprecision/tut/conversions.html +++ /dev/null @@ -1,106 +0,0 @@ - - - -Constructing and Interconverting Between Number Types - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - All of the number types that are based on mp_number - have certain conversion rules in common. In particular: -

    -
    • - Any number type can be constructed (or assigned) from any builtin arithmetic - type: -
    -
    cpp_dec_float_50 df(0.5); // OK construction from double
    -cpp_int          i(450);  // OK constructs from signed int
    -
    -
    • - Any number type can be constructed (or assigned) from a const char* or a std::string: -
    -
    // pi to 50 places from a string:
    -cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    -// Integer type will automatically detect "0x" and "0" prefixes and parse the string accordingly:
    -cpp_int          i  = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000";
    -// Invalid input always results in a std::runtime_error being thrown:
    -i = std::string("3.14");
    -
    -
    • - Any number type will interoperate with the builtin type in arithmetic - expressions: -
    -
    // pi to 50 places from a string:
    -cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    -// Multiply by 2 - using an integer literal here is usually more efficient
    -// than constructing a temporary:
    -df *= 2;
    -
    -// There is a need to be careful with integer types though:
    -cpp_int i = 2;
    -// Ooops, this really just multiplies by 3:
    -i *= 3.14;
    -
    -
    • - Any number type can be streamed to and from the C++ iostreams: -
    -
    cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    -// Now print at full precision:
    -std::cout << std::setprecision(std::numeric_limits<cpp_dec_float_50>::max_digits10)
    -   << df << std::endl
    -cpp_int i = 1;
    -i <<= 256;
    -// Now print in hex format with prefix:
    -std::cout << std::hex << std::showbase << i << std::endl;
    -
    -
    • - Some intercomnversions between number types are completely generic, and - are always available: -
    -
    cpp_int cppi(2);
    -// We can always convert between numbers of the same category - 
    -// int to int, rational to rational, or float to float, so this is OK:
    -mpz_int z = cppi;
    -// We can always promote from int to rational, int to float, or rational to float:
    -cpp_rational     cppr = cppi;  // OK, int to rational
    -cpp_dec_float_50 df =   cppi;  // OK, int to float
    -df                  =   cppr;  // OK, rational to float
    -// However narrowing conversions always fail:
    -cppi                =   df;    // Compiler error, conversion not allowed
    -
    -
    • - Other interconversions may be allowed as special cases, whenever the - backend allows it: -
    -
    mpf_t     m;           // Native GMP type.
    -mpf_init_set_ui(m, 0); // set to a value;
    -mpf_float i(m);        // copies the value of the native type.
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats.html b/doc/html/boost_multiprecision/tut/floats.html deleted file mode 100644 index e441517f..00000000 --- a/doc/html/boost_multiprecision/tut/floats.html +++ /dev/null @@ -1,197 +0,0 @@ - - - -Floating Point Numbers - - - - - - - - -
    -PrevUpHomeNext -
    -
    - - -

    - The following back-ends provide floating point arithmetic: -

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend Type -

    -
    -

    - Header -

    -
    -

    - Radix -

    -
    -

    - Dependencies -

    -
    -

    - Pros -

    -
    -

    - Cons -

    -
    -

    - mpf_float<N> -

    -
    -

    - boost/multiprecision/gmp.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP -

    -
    -

    - Very fast and efficient back-end. -

    -
    -

    - Dependency on GNU licensed GMP - library. -

    -
    -

    - mpfr_float<N> -

    -
    -

    - boost/multiprecision/mpfr.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP and MPFR -

    -
    -

    - Very fast and efficient back-end, with its own standard library - implementation. -

    -
    -

    - Dependency on GNU licensed GMP - and MPFR libraries. -

    -
    -

    - cpp_dec_float<N> -

    -
    -

    - boost/multiprecision/cpp_dec_float.hpp -

    -
    -

    - 10 -

    -
    -

    - None -

    -
    -

    - Header only, all C++ implementation. Boost licence. -

    -
    -

    - Approximately 2x slower than the MPFR - or GMP libraries. -

    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html deleted file mode 100644 index aea653f8..00000000 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -cpp_dec_float - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/cpp_dec_float.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class cpp_dec_float;
    -
    -typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50;
    -typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100;
    -
    -}} // namespaces
    -
    -

    - The cpp_dec_float back-end - is used in conjunction with mp_number: - It acts as an entirely C++ (header only and dependency free) real-number - type that is a drop-in replacement for the native C++ floating-point types, - but with much greater precision. -

    -

    - Type cpp_dec_float can - be used at fixed precision by specifying a non-zero Digits10 - template parameter. The typedefs cpp_dec_float_50 - and cpp_dec_float_100 provide - arithmetic types at 50 and 100 decimal digits precision respectively. -

    -

    - There is full standard library and numeric_limits - support available for this type. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed cpp_dec_floats - have a value of zero. -
    • -
    • - The radix of this type is 10. As a result it can behave subtly differently - from base-2 types. -
    • -
    • - It is not possible to round-trip this type to and from a string and - get back to exactly the same value (this is a result of the type having - some hidden internal guard digits). -
    • -
    • - The type has a number of internal guard digits over and above those - specified in the template argument. Normally these should not be visible - to the user. -
    • -
    -
    - - cpp_dec_float - example: -
    -

    -

    -
    #include <boost/multiprecision/cpp_dec_float.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -// Operations at fixed precision and full numeric_limits support:
    -cpp_dec_float_100 b = 2;
    -std::cout << std::numeric_limits<cpp_dec_float_100>::digits << std::endl;
    -// Note that digits10 is the same as digits, since we're base 10! :
    -std::cout << std::numeric_limits<cpp_dec_float_100>::digits10 << std::endl;
    -// We can use any C++ std lib function, lets print all the digits as well:
    -std::cout << std::setprecision(std::numeric_limits<cpp_dec_float_100>::max_digits10)
    -   << log(b) << std::endl; // print log(2)
    -// We can also use any function from Boost.Math:
    -std::cout << boost::math::tgamma(b) << std::endl;
    -// These even work when the argument is an expression template:
    -std::cout << boost::math::tgamma(b * b) << std::endl;
    -// And since we have an extended exponent range we can generate some really large 
    -// numbers here (4.0238726007709377354370243e+2564):
    -std::cout << boost::math::tgamma(cpp_dec_float_100(1000)) << std::endl;
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg.html deleted file mode 100644 index c5e07650..00000000 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Examples - - - - - - - - -
    -PrevUpHomeNext -
    - - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html deleted file mode 100644 index 7b30997c..00000000 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/GI.html +++ /dev/null @@ -1,161 +0,0 @@ - - - -Calculating an Integral - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Similar to the generic derivative example, we can calculate integrals - in a similar manner: -

    -

    -

    -
    template<typename value_type, typename function_type>
    -inline value_type integral(const value_type a,
    -                           const value_type b,
    -                           const value_type tol,
    -                           function_type func)
    -{
    -   unsigned n = 1U;
    -
    -   value_type h = (b - a);
    -   value_type I = (func(a) + func(b)) * (h / 2);
    -
    -   for(unsigned k = 0U; k < 8U; k++)
    -   {
    -      h /= 2;
    -
    -      value_type sum(0);
    -      for(unsigned j = 1U; j <= n; j++)
    -      {
    -         sum += func(a + (value_type((j * 2) - 1) * h));
    -      }
    -
    -      const value_type I0 = I;
    -      I = (I / 2) + (h * sum);
    -
    -      const value_type ratio     = I0 / I;
    -      const value_type delta     = ratio - 1;
    -      const value_type delta_abs = ((delta < 0) ? -delta : delta);
    -
    -      if((k > 1U) && (delta_abs < tol))
    -      {
    -         break;
    -      }
    -
    -      n *= 2U;
    -   }
    -
    -   return I;
    -}
    -
    -

    -

    -

    - The following sample program shows how the function can be called, we - begin by defining a function object, which when integrated should yield - the Bessel J function: -

    -

    -

    -
    template<typename value_type>
    -class cyl_bessel_j_integral_rep
    -{
    -public:
    -   cyl_bessel_j_integral_rep(const unsigned N,
    -      const value_type& X) : n(N), x(X) { }
    -
    -   value_type operator()(const value_type& t) const
    -   {
    -      // pi * Jn(x) = Int_0^pi [cos(x * sin(t) - n*t) dt]
    -      return cos(x * sin(t) - (n * t));
    -   }
    -
    -private:
    -   const unsigned n;
    -   const value_type x;
    -};
    -
    -

    -

    -

    -

    -
       /* The function can now be called as follows: */
    -int main(int, char**)
    -{
    -   using boost::math::constants::pi;
    -   typedef boost::multiprecision::cpp_dec_float_50 mp_type;
    -
    -   const float j2_f =
    -      integral(0.0F,
    -      pi<float>(),
    -      0.01F,
    -      cyl_bessel_j_integral_rep<float>(2U, 1.23F)) / pi<float>();
    -
    -   const double j2_d =
    -      integral(0.0,
    -      pi<double>(),
    -      0.0001,
    -      cyl_bessel_j_integral_rep<double>(2U, 1.23)) / pi<double>();
    -
    -   const mp_type j2_mp =
    -      integral(mp_type(0),
    -      pi<mp_type>(),
    -      mp_type(1.0E-20),
    -      cyl_bessel_j_integral_rep<mp_type>(2U, mp_type(123) / 100)) / pi<mp_type>();
    -
    -   // 0.166369
    -   std::cout
    -      << std::setprecision(std::numeric_limits<float>::digits10)
    -      << j2_f
    -      << std::endl;
    -
    -   // 0.166369383786814
    -   std::cout
    -      << std::setprecision(std::numeric_limits<double>::digits10)
    -      << j2_d
    -      << std::endl;
    -
    -   // 0.16636938378681407351267852431513159437103348245333
    -   std::cout
    -      << std::setprecision(std::numeric_limits<mp_type>::digits10)
    -      << j2_mp
    -      << std::endl;
    -
    -   //
    -   // Print true value for comparison:
    -   // 0.166369383786814073512678524315131594371033482453329
    -   std::cout << boost::math::cyl_bessel_j(2, mp_type(123) / 100) << std::endl;
    -}
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html deleted file mode 100644 index 46500c20..00000000 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html +++ /dev/null @@ -1,118 +0,0 @@ - - - -Area of Circle - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Generic numeric programming employs templates to use the same code for - different floating-point types and functions. Consider the area of a - circle a of radius r, given by -

    -

    - a = π * r2 -

    -

    - The area of a circle can be computed in generic programming using Boost.Math - for the constant π as shown below: -

    -

    -

    -
    #include <boost/math/constants/constants.hpp>
    -
    -template<typename T>
    -inline T area_of_a_circle(T r)
    -{
    -   using boost::math::constants::pi;
    -   return pi<T>() * r * r;
    -}
    -
    -

    -

    -

    - It is possible to use area_of_a_circle() with built-in floating-point types - as well as floating-point types from Boost.Multiprecision. In particular, - consider a system with 4-byte single-precision float, 8-byte double-precision - double and also the cpp_dec_float_50 - data type from Boost.Multiprecision with 50 decimal digits of precision. -

    -

    - We can compute and print the approximate area of a circle with radius - 123/100 for float, double and cpp_dec_float_50 - with the program below. -

    -

    -

    -
    #include <iostream>
    -#include <iomanip>
    -#include <boost/multiprecision/cpp_dec_float.hpp>
    -
    -using boost::multiprecision::cpp_dec_float_50;
    -
    -int main(int, char**)
    -{
    -   const float r_f(float(123) / 100);
    -   const float a_f = area_of_a_circle(r_f);
    -
    -   const double r_d(double(123) / 100);
    -   const double a_d = area_of_a_circle(r_d);
    -
    -   const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100);
    -   const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp);
    -
    -   // 4.75292
    -   std::cout
    -      << std::setprecision(std::numeric_limits<float>::digits10)
    -      << a_f
    -      << std::endl;
    -
    -   // 4.752915525616
    -   std::cout
    -      << std::setprecision(std::numeric_limits<double>::digits10)
    -      << a_d
    -      << std::endl;
    -
    -   // 4.7529155256159981904701331745635599135018975843146
    -   std::cout
    -      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    -      << a_mp
    -      << std::endl;
    -}
    -
    -

    -

    -

    - In the next example we'll look at calling both standard library and Boost.Math - functions from within generic code. We'll also show how to cope with - template arguments which are expression-templates rather than number - types. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html deleted file mode 100644 index 981d684d..00000000 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html +++ /dev/null @@ -1,222 +0,0 @@ - - - -Defining a Lambda Function. - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - In this example we'll show several implementations of the Jahnke - and Emden Lambda function, each implementation a little more - sophisticated than the last. -

    -

    - The Jahnke-Emden Lambda function is defined by the equation: -

    -

    - JahnkeEmden(v, z) = Γ(v+1) * Jv(z) / (z / 2)v -

    -

    - If we were to implement this at double precision using Boost.Math's facilities - for the Gamma and Bessel function calls it would look like this: -

    -

    -

    -
    double JEL1(double v, double z)
    -{
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / std::pow(z / 2, v);
    -}
    -
    -

    -

    -

    - Calling this function as: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    -std::cout << JEL1(2.5, 0.5) << std::endl;
    -
    -

    - Yields the output: -

    -
    9.822663964796047e-001
    -

    - Now lets implement the function again, but this time using the multiprecision - type cpp_dec_float_50 - as the argument type: -

    -

    -

    -
    boost::multiprecision::cpp_dec_float_50
    -   JEL2(boost::multiprecision::cpp_dec_float_50 v, boost::multiprecision::cpp_dec_float_50 z)
    -{
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / boost::multiprecision::pow(z / 2, v);
    -}
    -
    -

    -

    -

    - The implementation is almost the same as before, but with one key difference - - we can no longer call std::pow, - instead we must call the version inside the boost::multiprecision - namespace. In point of fact, we could have omitted the namespace prefix - on the call to pow since - the right overload would have been found via argument - dependent lookup in any case. -

    -

    - Note also that the first argument to pow - along with the argument to tgamma - in the above code are actually expression templates. The pow and tgamma - functions will handle these arguments just fine. -

    -

    - Here's an example of how the function may be called: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    -std::cout << JEL2(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    -
    -

    - Which outputs: -

    -
    9.82266396479604757017335009796882833995903762577173e-01
    -

    - Now that we've seen some non-template examples, lets repeat the code - again, but this time as a template that can be called either with a builtin - type (float, double etc), or with a multiprecision - type: -

    -

    -

    -
    template <class Float>
    -Float JEL3(Float v, Float z)
    -{
    -   using std::pow;
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    -}
    -
    -

    -

    -

    - Once again the code is almost the same as before, but the call to pow has changed yet again. We need - the call to resolve to either std::pow - (when the argument is a builtin type), or to boost::multiprecision::pow - (when the argument is a multiprecision type). We do that by making the - call unqualified so that versions of pow - defined in the same namespace as type Float - are found via argument dependent lookup, while the using - std::pow directive makes the standard library - versions visible for builtin floating point types. -

    -

    - Let's call the function with both double - and multiprecision arguments: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    -std::cout << JEL3(2.5, 0.5) << std::endl;
    -std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    -std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    -
    -

    - Which outputs: -

    -
    9.822663964796047e-001
    -9.82266396479604757017335009796882833995903762577173e-01
    -
    -

    - Unfortunately there is a problem with this version: if we were to call - it like this: -

    -
    boost::multiprecision::cpp_dec_float_50 v(2), z(0.5);
    -JEL3(v + 0.5, z);
    -
    -

    - Then we would get a long and inscrutable error message from the compiler: - the problem here is that the first argument to JEL3 - is not a number type, but an expression template. We could obviously - add a typecast to fix the issue: -

    -
    JEL(cpp_dec_float_50(v + 0.5), z);
    -
    -

    - However, if we want the function JEL to be truely reusable, then a better - solution might be preferred. To achieve this we can borrow some code - from Boost.Math which calculates the return type of mixed-argument functions, - here's how the new code looks now: -

    -

    -

    -
    template <class Float1, class Float2>
    -typename boost::math::tools::promote_args<Float1, Float2>::type
    -   JEL4(Float1 v, Float2 z)
    -{
    -   using std::pow;
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    -}
    -
    -

    -

    -

    - As you can see the two arguments to the function are now separate template - types, and the return type is computed using the promote_args - metafunction from Boost.Math. -

    -

    - Now we can call: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_100>::digits10);
    -std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl;
    -
    -

    - And get 100 digits of output: -

    -
    9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01
    -

    - As a bonus, we can now call the function not just with expression templates, - but with other mixed types as well: for example float - and double or int and double, - and the correct return type will be computed in each case. -

    -

    - Note that while in this case we didn't have to change the body of the - function, in the general case any function like this which creates local - variables internally would have to use promote_args - to work out what type those variables should be, for example: -

    -
    template <class Float1, class Float2>
    -typename boost::math::tools::promote_args<Float1, Float2>::type
    -   JEL5(Float1 v, Float2 z)
    -{
    -   using std::pow;
    -   typedef typename boost::math::tools::promote_args<Float1, Float2>::type variable_type;
    -   variable_type t = pow(z / 2, v);
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / t;
    -}
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html deleted file mode 100644 index 460c86c4..00000000 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html +++ /dev/null @@ -1,202 +0,0 @@ - - - -Calculating a Derivative - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - In this example we'll add even more power to generic numeric programming - using not only different floating-point types but also function objects - as template parameters. Consider some well-known central difference rules - for numerically computing the first derivative of a function f′(x) - with x ∈ ℜ: -

    -

    - -

    -

    - Where the difference terms mn are given by: -

    -

    - -

    -

    - and dx is the step-size of the derivative. -

    -

    - The third formula in Equation 1 is a three-point central difference rule. - It calculates the first derivative of f′(x) to O(dx6), - where dx is the given step-size. For example, if - the step-size is 0.01 this derivative calculation has about 6 decimal - digits of precision - just about right for the 7 decimal digits of single-precision - float. Let's make a generic template subroutine using this three-point - central difference rule. In particular: -

    -

    -

    -
    template<typename value_type, typename function_type>
    -   value_type derivative(const value_type x, const value_type dx, function_type func)
    -{
    -   // Compute d/dx[func(*first)] using a three-point
    -   // central difference rule of O(dx^6).
    -
    -   const value_type dx1 = dx;
    -   const value_type dx2 = dx1 * 2;
    -   const value_type dx3 = dx1 * 3;
    -
    -   const value_type m1 = (func(x + dx1) - func(x - dx1)) / 2;
    -   const value_type m2 = (func(x + dx2) - func(x - dx2)) / 4;
    -   const value_type m3 = (func(x + dx3) - func(x - dx3)) / 6;
    -
    -   const value_type fifteen_m1 = 15 * m1;
    -   const value_type six_m2     =  6 * m2;
    -   const value_type ten_dx1    = 10 * dx1;
    -
    -   return ((fifteen_m1 - six_m2) + m3) / ten_dx1;
    -}
    -
    -

    -

    -

    - The derivative() - template function can be used to compute the first derivative of any - function to O(dx6). For example, consider the first - derivative of sin(x) evaluated at x = - π/3. In other words, -

    -

    - -

    -

    - The code below computes the derivative in Equation 3 for float, double - and boost's multiple-precision type cpp_dec_float_50. -

    -

    -

    -
    #include <iostream>
    -#include <iomanip>
    -#include <boost/multiprecision/cpp_dec_float.hpp>
    -#include <boost/math/constants/constants.hpp>
    -
    -
    -int main(int, char**)
    -{
    -   using boost::math::constants::pi;
    -   using boost::multiprecision::cpp_dec_float_50;
    -   //
    -   // We'll pass a function pointer for the function object passed to derivative,
    -   // the typecast is needed to select the correct overload of std::sin:
    -   //
    -   const float d_f = derivative(
    -      pi<float>() / 3,
    -      0.01F,
    -      static_cast<float(*)(float)>(std::sin)
    -   );
    -
    -   const double d_d = derivative(
    -      pi<double>() / 3,
    -      0.001,
    -      static_cast<double(*)(double)>(std::sin)
    -      );
    -   //
    -   // In the cpp_dec_float_50 case, the sin function is multiply overloaded
    -   // to handle expression templates etc.  As a result it's hard to take it's
    -   // address without knowing about its implementation details.  We'll use a 
    -   // C++11 lambda expression to capture the call.
    -   // We also need a typecast on the first argument so we don't accidently pass
    -   // an expression template to a template function:
    -   //
    -   const cpp_dec_float_50 d_mp = derivative(
    -      cpp_dec_float_50(pi<cpp_dec_float_50>() / 3),
    -      cpp_dec_float_50(1.0E-9),
    -      [](const cpp_dec_float_50& x) -> cpp_dec_float_50
    -      {
    -         return sin(x);
    -      }
    -      );
    -
    -   // 5.000029e-001
    -   std::cout
    -      << std::setprecision(std::numeric_limits<float>::digits10)
    -      << d_f
    -      << std::endl;
    -
    -   // 4.999999999998876e-001
    -   std::cout
    -      << std::setprecision(std::numeric_limits<double>::digits10)
    -      << d_d
    -      << std::endl;
    -
    -   // 4.99999999999999999999999999999999999999999999999999e-01
    -   std::cout
    -      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    -      << d_mp
    -      << std::endl;
    -}
    -
    -

    -

    -

    - The expected value of the derivative is 0.5. This central difference - rule in this example is ill-conditioned, meaning it suffers from slight - loss of precision. With that in mind, the results agree with the expected - value of 0.5. -

    -

    - We can take this a step further and use our derivative function to compute - a partial derivative. For example if we take the incomplete gamma function - P(a, z), and take the derivative with respect to - z at (2,2) then we can calculate - the result as shown below, for good measure we'll compare with the "correct" - result obtained from a call to gamma_p_derivative, - the results agree to approximately 44 digits: -

    -

    -

    -
    cpp_dec_float_50 gd = derivative(
    -   cpp_dec_float_50(2),
    -   cpp_dec_float_50(1.0E-9),
    -   [](const cpp_dec_float_50& x) ->cpp_dec_float_50
    -   {
    -      return boost::math::gamma_p(2, x);
    -   }
    -);
    -// 2.70670566473225383787998989944968806815263091819151e-01
    -std::cout
    -   << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    -   << gd
    -   << std::endl;
    -// 2.70670566473225383787998989944968806815253190143120e-01
    -std::cout << boost::math::gamma_p_derivative(cpp_dec_float_50(2), cpp_dec_float_50(2)) << std::endl;
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/gmp_float.html b/doc/html/boost_multiprecision/tut/floats/gmp_float.html deleted file mode 100644 index 3b104b2e..00000000 --- a/doc/html/boost_multiprecision/tut/floats/gmp_float.html +++ /dev/null @@ -1,169 +0,0 @@ - - - -gmp_float - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/gmp.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class gmp_float;
    -
    -typedef mp_number<gmp_float<50> >    mpf_float_50;
    -typedef mp_number<gmp_float<100> >   mpf_float_100;
    -typedef mp_number<gmp_float<500> >   mpf_float_500;
    -typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    -typedef mp_number<gmp_float<0> >     mpf_float;
    -
    -}} // namespaces
    -
    -

    - The gmp_float back-end - is used in conjunction with mp_number - : it acts as a thin wrapper around the GMP - mpf_t to provide an real-number - type that is a drop-in replacement for the native C++ floating-point types, - but with much greater precision. -

    -

    - Type gmp_float can be used - at fixed precision by specifying a non-zero Digits10 - template parameter, or at variable precision by setting the template argument - to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 - provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision - respectively. The typedef mpf_float provides a variable precision type - whose precision can be controlled via the mp_numbers - member functions. -

    -
    - - - - - -
    [Note]Note

    - This type only provides standard library and numeric_limits - support when the precision is fixed at compile time. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of mp_number<mpf_float<N> > are copy constructible and assignable - from: -

    -
      -
    • - The GMP native types mpf_t, mpz_t, - mpq_t. -
    • -
    • - The mp_number wrappers - around those types: mp_number<mpf_float<M> >, - mp_number<gmp_int>, - mp_number<gmp_rational>. -
    • -
    -

    - It's also possible to access the underlying mpf_t - via the data() - member function of gmp_float. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed gmp_floats - have the value zero (this is the GMP - library's default behavior). -
    • -
    • - No changes are made to the GMP - library's global settings, so this type can be safely mixed with existing - GMP code. -
    • -
    • - It is not possible to round-trip objects of this type to and from a - string and get back exactly the same value. This appears to be a limitation - of GMP. -
    • -
    • - Since the underlying GMP types - have no notion of infinities or NaN's, care should be taken to avoid - numeric overflow or division by zero. That latter will trigger a hardware - exception, while generating excessively large exponents may result - in instability of the underlying GMP - library (in testing, converting a number with an excessively large - or small exponent to a string caused GMP - to segfault). -
    • -
    • - This type can equally be used with MPIR - as the underlying implementation - indeed that is the recommended option - on Win32. -
    • -
    -
    - - - GMP example: -
    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -// Operations at variable precision and limited standard library support:
    -mpf_float a = 2;
    -mpf_float::default_precision(1000);
    -std::cout << mpf_float::default_precision() << std::endl;
    -std::cout << sqrt(a) << std::endl; // print root-2
    -
    -// Operations at fixed precision and full standard library support:
    -mpf_float_100 b = 2;
    -std::cout << std::numeric_limits<mpf_float_100>::digits << std::endl;
    -// We can use any C++ std lib function:
    -std::cout << log(b) << std::endl; // print log(2)
    -// We can also use any function from Boost.Math:
    -std::cout << boost::math::tgamma(b) << std::endl;
    -// These even work when the argument is an expression template:
    -std::cout << boost::math::tgamma(b * b) << std::endl;
    -
    -// Access the underlying representation:
    -mpf_t f;
    -mpf_init(f);
    -mpf_set(f, a.backend().data());
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/jel.html b/doc/html/boost_multiprecision/tut/floats/jel.html deleted file mode 100644 index 9a6a4ba8..00000000 --- a/doc/html/boost_multiprecision/tut/floats/jel.html +++ /dev/null @@ -1,222 +0,0 @@ - - - -Worked Example: defining a mathematical function. - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - In this example we'll show several implementations of the Jahnke - and Emden Lambda function, each implementation a little more sophisticated - than the last. -

    -

    - The Jahnke-Emden Lambda function is defined by the equation: -

    -

    - JahnkeEmden(v, z) = Gamma(v+1) * J[v](z) / (z / 2)^v -

    -

    - If we were to implement this at double precision using Boost.Math's facilities - for the Gamma and Bessel function calls it would look like this: -

    -

    -

    -
    double JEL1(double v, double z)
    -{
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / std::pow(z / 2, v);
    -}
    -
    -

    -

    -

    - Calling this function as: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    -std::cout << JEL1(2.5, 0.5) << std::endl;
    -
    -

    - Yields the output: -

    -
    9.822663964796047e-001
    -

    - Now lets implement the function again, but this time using the multiprecision - type cpp_dec_float_50 as - the argument type: -

    -

    -

    -
    boost::multiprecision::cpp_dec_float_50
    -   JEL2(boost::multiprecision::cpp_dec_float_50 v, boost::multiprecision::cpp_dec_float_50 z)
    -{
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / boost::multiprecision::pow(z / 2, v);
    -}
    -
    -

    -

    -

    - The implementation is almost the same as before, but with one key difference - - we can no longer call std::pow, - instead we must call the version inside the boost::multiprecision - namespace. In point of fact, we could have omitted the namespace prefix - on the call to pow since - the right overload would have been found via argument - dependent lookup in any case. -

    -

    - Note also that the first argument to pow - along with the argument to tgamma - in the above code are actually expression templates. The pow and tgamma - functions will handle these arguments just fine. -

    -

    - Here's an example of how the function may be called: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    -std::cout << JEL2(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    -
    -

    - Which outputs: -

    -
    9.82266396479604757017335009796882833995903762577173e-01
    -

    - Now that we've seen some non-template examples, lets repeat the code again, - but this time as a template that can be called either with a builtin type - (float, double - etc), or with a multiprecision type: -

    -

    -

    -
    template <class Float>
    -Float JEL3(Float v, Float z)
    -{
    -   using std::pow;
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    -}
    -
    -

    -

    -

    - Once again the code is almost the same as before, but the call to pow has changed yet again. We need the - call to resolve to either std::pow - (when the argument is a builtin type), or to boost::multiprecision::pow - (when the argument is a multiprecision type). We do that by making the - call unqualified so that versions of pow - defined in the same namespace as type Float - are found via argument dependent lookup, while the using - std::pow directive makes the standard library - versions visible for builtin floating point types. -

    -

    - Let's call the function with both double - and multiprecision arguments: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    -std::cout << JEL3(2.5, 0.5) << std::endl;
    -std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    -std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    -
    -

    - Which outputs: -

    -
    9.822663964796047e-001
    -9.82266396479604757017335009796882833995903762577173e-01
    -
    -

    - Unfortunately there is a problem with this version: if we were to call - it like this: -

    -
    boost::multiprecision::cpp_dec_float_50 v(2), z(0.5);
    -JEL3(v + 0.5, z);
    -
    -

    - Then we would get a long and inscrutable error message from the compiler: - the problem here is that the first argument to JEL3 - is not a number type, but an expression template. We could obviously add - a typecast to fix the issue: -

    -
    JEL(cpp_dec_float_50(v + 0.5), z);
    -
    -

    - However, if we want the function JEL to be truely reusable, then a better - solution might be preferred. To achieve this we can borrow some code from - Boost.Math which calculates the return type of mixed-argument functions, - here's how the new code looks now: -

    -

    -

    -
    template <class Float1, class Float2>
    -typename boost::math::tools::promote_args<Float1, Float2>::type
    -   JEL4(Float1 v, Float2 z)
    -{
    -   using std::pow;
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    -}
    -
    -

    -

    -

    - As you can see the two arguments to the function are now separate template - types, and the return type is computed using the promote_args - metafunction from Boost.Math. -

    -

    - Now we can call: -

    -
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_100>::digits10);
    -std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl;
    -
    -

    - And get 100 digits of output: -

    -
    9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01
    -

    - As a bonus, we can now call the function not just with expression templates, - but with other mixed types as well: for example float - and double or int and double, - and the correct return type will be computed in each case. -

    -

    - Note that while in this case we didn't have to change the body of the function, - in the general case any function like this which creates local variables - internally would have to use promote_args - to work out what type those variables should be, for example: -

    -
    template <class Float1, class Float2>
    -typename boost::math::tools::promote_args<Float1, Float2>::type
    -   JEL5(Float1 v, Float2 z)
    -{
    -   using std::pow;
    -   typedef typename boost::math::tools::promote_args<Float1, Float2>::type variable_type;
    -   variable_type t = pow(z / 2, v);
    -   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / t;
    -}
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html deleted file mode 100644 index 595e9d2c..00000000 --- a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -mpfr_float - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/mpfr_float.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -template <unsigned Digits10>
    -class mpfr_float_backend;
    -
    -typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
    -typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
    -typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
    -typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
    -typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
    -
    -}} // namespaces
    -
    -

    - The mpfr_float_backend - type is used in conjunction with mp_number: - It acts as a thin wrapper around the MPFR - mpfr_t to provide an real-number - type that is a drop-in replacement for the native C++ floating-point types, - but with much greater precision. -

    -

    - Type mpfr_float_backend - can be used at fixed precision by specifying a non-zero Digits10 - template parameter, or at variable precision by setting the template argument - to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 - provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision - respectively. The typedef mpfr_float provides a variable precision type - whose precision can be controlled via the mp_numbers - member functions. -

    -
    - - - - - -
    [Note]Note

    - This type only provides numeric_limits - support when the precision is fixed at compile time. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of mp_number<mpfr_float_backend<N> > are copy constructible and assignable - from: -

    -
      -
    • - The GMP native types mpf_t, mpz_t, - mpq_t. -
    • -
    • - The MPFR native type mpfr_t. -
    • -
    • - The mp_number wrappers - around those types: mp_number<mpfr_float_backend<M> >, - mp_number<mpf_float<M> >, mp_number<gmp_int>, mp_number<gmp_rational>. -
    • -
    -

    - It's also possible to access the underlying mpf_t - via the data() member function of gmp_float. -

    -

    - Things you should know when using this type: -

    -
      -
    • - A default constructed mpfr_float_backend - is set to a NaN (this is the default MPFR - behavior). -
    • -
    • - All operations use round to nearest. -
    • -
    • - No changes are made to GMP or - MPFR global settings, so this - type can coexist with existing MPFR - or GMP code. -
    • -
    • - The code can equally use MPIR - in place of GMP - indeed that - is the preferred option on Win32. -
    • -
    -
    - - - MPFR example: -
    -

    -

    -
    #include <boost/multiprecision/mpfr.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -// Operations at variable precision and no numeric_limits support:
    -mpfr_float a = 2;
    -mpfr_float::default_precision(1000);
    -std::cout << mpfr_float::default_precision() << std::endl;
    -std::cout << sqrt(a) << std::endl; // print root-2
    -
    -// Operations at fixed precision and full numeric_limits support:
    -mpfr_float_100 b = 2;
    -std::cout << std::numeric_limits<mpfr_float_100>::digits << std::endl;
    -// We can use any C++ std lib function:
    -std::cout << log(b) << std::endl; // print log(2)
    -// We can also use any function from Boost.Math:
    -std::cout << boost::math::tgamma(b) << std::endl;
    -// These even work when the argument is an expression template:
    -std::cout << boost::math::tgamma(b * b) << std::endl;
    -
    -// Access the underlying data:
    -mpfr_t r;
    -mpfr_init(r);
    -mpfr_set(r, b.backend().data(), GMP_RNDN);
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html deleted file mode 100644 index b5504ee0..00000000 --- a/doc/html/boost_multiprecision/tut/ints.html +++ /dev/null @@ -1,186 +0,0 @@ - - - -Integer Types - - - - - - - - -
    -PrevUpHomeNext -
    -
    - - -

    - The following back-ends provide integer arithmetic: -

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend Type -

    -
    -

    - Header -

    -
    -

    - Radix -

    -
    -

    - Dependencies -

    -
    -

    - Pros -

    -
    -

    - Cons -

    -
    -

    - cpp_int -

    -
    -

    - boost/multiprecision/cpp_int.hpp -

    -
    -

    - 2 -

    -
    -

    - None -

    -
    -

    - Very versatile, Boost licensed, all C++ integer type which support - both arbitrary - precision and fixed precision integer types. -

    -
    -

    - Slower than GMP, though - typically not as slow as libtommath -

    -
    -

    - gmp_int -

    -
    -

    - boost/multiprecision/gmp.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP -

    -
    -

    - Very fast and efficient back-end. -

    -
    -

    - Dependency on GNU licensed GMP - library. -

    -
    -

    - tom_int -

    -
    -

    - boost/multiprecision/tommath.hpp -

    -
    -

    - 2 -

    -
    -

    - libtommath -

    -
    -

    - Public domain back-end with no licence restrictions. -

    -
    -

    - Slower than GMP. -

    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html deleted file mode 100644 index 98340475..00000000 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ /dev/null @@ -1,179 +0,0 @@ - - - -cpp_int - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/cpp_int.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -typedef unspecified-type limb_type;
    -
    -template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    -class cpp_int_backend;
    -
    -typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    -typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    -typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    -
    -// Fixed precision unsigned types:
    -typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    -typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    -typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    -typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
    -
    -// Fixed precision signed types:
    -typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    -typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    -typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    -typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
    -
    -}} // namespaces
    -
    -

    - The cpp_int_backend type - is used via one of the typedefs boost::multiprecision::cpp_int, - boost::multiprecision::mp_uint128_t, boost::multiprecision::mp_uint256_t, - boost::multiprecision::mp_uint512_t, boost::multiprecision::mp_int128_t, - boost::multiprecision::mp_int256_t or boost::multiprecision::mp_int512_t. -

    -

    - This back-end is the "Swiss Army Knife" of integer types as it - can represent both fixed and arbitrary - precision integer types, and both signed and unsigned types. There - are three template arguments: -

    -
    -

    -
    -
    MinBits
    -

    - Determines the number of Bits to store directly within the object - before resorting to dynamic memory allocation. When zero, this field - is determined automatically based on how many bits can be stored - in union with the dynamic storage header: setting a larger value - may improve performance as larger integer values will be stored internally - before memory allocation is required. When the Allocator parameter - is type void, then this - field determines the total number of bits in the resulting fixed - precision type. -

    -
    Signed
    -

    - Determines whether the resulting type is signed or not. Note that - for arbitrary - precision types (where the Allocator parameter is non-void), - then this parameter must be true. - For fixed precision types then this type may be either true (type is signed), or false (type is unsigned). -

    -
    Allocator
    -

    - The allocator to use for dynamic memory allocation, or type void if this is to be a fixed precision - type. -

    -
    -
    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed cpp_int_backends - have the value zero. -
    • -
    • - Division by zero results in a std::runtime_error - being thrown. -
    • -
    • - Construction from a string that contains invalid non-numeric characters - results in a std::runtime_error being thrown. -
    • -
    • - Since the precision of cpp_int_backend - is necessarily limited when the allocator parameter is void, care should - be taken to avoid numeric overflow when using this type unless you - actually want modulo-arithmetic behavior. -
    • -
    • - The type uses a sign-magnitude representation internally, so type - mp_int128_t has 128-bits - of precision plus an extra sign bit. In this respect the behaviour - of these types differs from built-in 2's complement types. In might - be tempting to use a 127-bit type instead, and indeed this does work, - but behaviour is still slightly different from a 2's complement built-in - type as the min and max values are identical (apart from the sign), - where as they differ by one for a true 2's complement type. That said - it should be noted that there's no requirement for built-in types to - be 2's complement either - it's simply that this is the most common - format by far. -
    • -
    • - Attempting to print negative values as either an Octal or Hexadecimal - string results in a std::runtime_error - being thrown, this is a direct consequence of the sign-magnitude representation. -
    • -
    • - The fixed precision types mp_[u]intXXX_t - have expression template support turned off - it seems to make little - difference to the performance of these types either way - so we may - as well have the faster compile times by turning the feature off. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/cpp_int.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -mp_int128_t v = 1;
    -
    -// Do some fixed precision arithmetic:
    -for(unsigned i = 1; i <= 20; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 20!
    -
    -// Repeat at arbitrary precision:
    -cpp_int u = 1;
    -for(unsigned i = 1; i <= 100; ++i)
    -   u *= i;
    -
    -std::cout << u << std::endl; // prints 100!
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/ints/gmp_int.html b/doc/html/boost_multiprecision/tut/ints/gmp_int.html deleted file mode 100644 index 1bf12605..00000000 --- a/doc/html/boost_multiprecision/tut/ints/gmp_int.html +++ /dev/null @@ -1,128 +0,0 @@ - - - -gmp_int - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/gmp.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -class gmp_int;
    -
    -typedef mp_number<gmp_int >         mpz_int;
    -
    -}} // namespaces
    -
    -

    - The gmp_int back-end is - used via the typedef boost::multiprecision::mpz_int. - It acts as a thin wrapper around the GMP - mpz_t to provide an integer - type that is a drop-in replacement for the native C++ integer types, but - with unlimited precision. -

    -

    - As well as the usual conversions from arithmetic and string types, type - mpz_int is copy constructible - and assignable from: -

    -
      -
    • - The GMP native types: mpf_t, mpz_t, - mpq_t. -
    • -
    • - Instances of mp_number<T> that are wrappers around those - types: mp_number<gmp_float<N> >, mp_number<gmp_rational>. -
    • -
    -

    - It's also possible to access the underlying mpz_t - via the data() - member function of gmp_int. -

    -

    - Things you should know when using this type: -

    -
      -
    • - No changes are made to the GMP library's global settings - so you can - safely mix this type with existing code that uses GMP. -
    • -
    • - Default constructed gmp_ints - have the value zero (this is GMP's default behavior). -
    • -
    • - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this - type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex - are set, will result in a std::runtime_error - will be thrown. -
    • -
    • - Division by zero is handled by the GMP - library - it will trigger a division by zero signal. -
    • -
    • - Although this type is a wrapper around GMP - it will work equally well with MPIR. - Indeed use of MPIR is recommended - on Win32. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -mpz_int v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 1000!
    -
    -// Access the underlying representation:
    -mpz_t z;
    -mpz_init(z);
    -mpz_set(z, v.backend().data());
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/ints/tom_int.html b/doc/html/boost_multiprecision/tut/ints/tom_int.html deleted file mode 100644 index 2ea5acf4..00000000 --- a/doc/html/boost_multiprecision/tut/ints/tom_int.html +++ /dev/null @@ -1,119 +0,0 @@ - - - -tom_int - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/tommath.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -class tommath_int;
    -
    -typedef mp_number<tommath_int >         tom_int;
    -
    -}} // namespaces
    -
    -

    - The tommath_int back-end - is used via the typedef boost::multiprecision::tom_int. - It acts as a thin wrapper around the libtommath - tom_int to provide an integer - type that is a drop-in replacement for the native C++ integer types, but - with unlimited precision. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed objects have the value zero (this is libtommath's - default behavior). -
    • -
    • - Although tom_int is - mostly a drop in replacement for the builtin integer types, it should - be noted that it is a rather strange beast as it's a signed type that - is not a 2's complement type. As a result the bitwise operations | & ^ will throw a std::runtime_error - exception if either of the arguments is negative. Similarly the complement - operator~ is deliberately - not implemented for this type. -
    • -
    • - Formatted IO for this type does not support octal or hexadecimal notation - for negative values, as a result performing formatted output on this - type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex - are set, will result in a std::runtime_error - will be thrown. -
    • -
    • - Division by zero will result in a hardware signal being raised by - libtommath. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/tommath.hpp>
    -
    -boost::multiprecision::tom_int v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -
    -std::cout << v << std::endl; // prints 1000!
    -std::cout << std::hex << v << std::endl; // prints 1000! in hex format
    -
    -try{
    -   std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
    -}
    -catch(const std::runtime_error& e)
    -{
    -   std::cout << e.what() << std::endl;
    -}
    -
    -try{
    -   // v is not a 2's complement type, bitwise operations are only supported
    -   // on positive values:
    -   v = -v & 2;
    -}
    -catch(const std::runtime_error& e)
    -{
    -   std::cout << e.what() << std::endl;
    -}
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html deleted file mode 100644 index f1dac222..00000000 --- a/doc/html/boost_multiprecision/tut/primetest.html +++ /dev/null @@ -1,108 +0,0 @@ - - - -Primality Testing - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - The library implements a fairly basic (meaning unoptimized, and possibly - slow) Miller-Rabin test for primality: -

    -
    #include <boost/multiprecision/miller_rabin.hpp>
    -
    -template <class Backend, bool ExpressionTemplates, class Engine>
    -bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
    -
    -template <class Backend, bool ExpressionTemplates, class Engine>
    -bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials);
    -
    -

    - These functions perform a Miller-Rabin test for primality, if the result - is false then n - is definitely composite, while if the result is true - then n is prime with probability 0.25^trials. - The algorithm used is straight out of Knuth Vol 2, which recomends 25 trials - for a pretty strong likelyhood that n is prime. -

    -

    - The third optional argument is for a Uniform Random Number Generator from - Boost.Random. When not provided the mt19937 - generator is used. Note that when producing random primes then you should - probably use a different random number generator to produce candidate prime - numbers for testing, than is used internally by miller_rabin_test - for determining whether the value is prime. It also helps of course to seed - the generators with some source of randomness. -

    -

    - The following example searches for a prime p - for which (p-1)/2 is also probably prime: -

    -

    -

    -
    #include <boost/multiprecision/cpp_int.hpp>
    -#include <boost/multiprecision/miller_rabin.hpp>
    -#include <iostream>
    -#include <iomanip>
    -
    -int main()
    -{
    -   using namespace boost::random;
    -   using namespace boost::multiprecision;
    -
    -   typedef cpp_int int_type;
    -   mt11213b base_gen(clock());
    -   independent_bits_engine<mt11213b, 256, int_type> gen(base_gen);
    -   //
    -   // We must use a different generator for the tests and number generation, otherwise
    -   // we get false positives.
    -   //
    -   mt19937 gen2(clock());
    -
    -   for(unsigned i = 0; i < 100000; ++i)
    -   {
    -      int_type n = gen();
    -      if(miller_rabin_test(n, 25, gen2))
    -      {
    -         // Value n is probably prime, see if (n-1)/2 is also prime:
    -         std::cout << "We have a probable prime with value: " << std::hex << std::showbase << n << std::endl;
    -         if(miller_rabin_test((n-1)/2, 25, gen2))
    -         {
    -            std::cout << "We have a safe prime with value: " << std::hex << std::showbase << n << std::endl;
    -            return 0;
    -         }
    -      }
    -   }
    -   std::cout << "Ooops, no safe primes were found" << std::endl;
    -   return 1;
    -}
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/random.html b/doc/html/boost_multiprecision/tut/random.html deleted file mode 100644 index 6f0d438b..00000000 --- a/doc/html/boost_multiprecision/tut/random.html +++ /dev/null @@ -1,157 +0,0 @@ - - - -Generating Random Numbers - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - Random numbers are generated in conjunction with Boost.Random. However, since - Boost.Random is unaware of arbitrary - precision numbers, it's necessary to include the header: -

    -
    #include <boost/multiprecision/random.hpp>
    -
    -

    - In order to act as a bridge between the two libraries. -

    -

    - Integers with N random bits are generated using independent_bits_engine: -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -
    -//
    -// Declare our random number generator type, the underlying generator
    -// is the Mersenne twister mt19937 engine, and 256 bits are generated:
    -//
    -typedef independent_bits_engine<mt19937, 256, mpz_int> generator_type;
    -generator_type gen;
    -//
    -// Generate some values:
    -//
    -std::cout << std::hex << std::showbase;
    -for(unsigned i = 0; i < 10; ++i)
    -   std::cout << gen() << std::endl;
    -
    -

    -

    -

    - Alternatively we can generate integers in a given range using uniform_int_distribution, this will invoke - the underlying engine multiple times to build up the required number of bits - in the result: -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -
    -//
    -// Generate integers in a given range using uniform_int,
    -// the underlying generator is invoked multiple times
    -// to generate enough bits:
    -//
    -mt19937 mt;
    -uniform_int_distribution<mpz_int> ui(0, mpz_int(1) << 256);
    -//
    -// Generate the numbers:
    -//
    -std::cout << std::hex << std::showbase;
    -for(unsigned i = 0; i < 10; ++i)
    -   std::cout << ui(mt) << std::endl;
    -
    -

    -

    -

    - Floating point values in [0,1) are generated using uniform_01, - the trick here is to ensure that the underlying generator produces as many - random bits as there are digits in the floating point type. As above independent_bits_engine can be used for - this purpose, note that we also have to convert decimal digits (in the floating - point type) to bits (in the random number generator): -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -//
    -// We need an underlying generator with at least as many bits as the
    -// floating point type to generate numbers in [0, 1) with all the bits
    -// in the floating point type randomly filled:
    -//
    -uniform_01<mpf_float_50> uf;
    -independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    -//
    -// Generate the values:
    -//
    -std::cout << std::setprecision(50);
    -for(unsigned i = 0; i < 20; ++i)
    -   std::cout << uf(gen) << std::endl;
    -
    -

    -

    -

    - Finally, we can modify the above example to produce numbers distributed according - to some distribution: -

    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -#include <boost/multiprecision/random.hpp>
    -
    -using namespace boost::multiprecision;
    -using namespace boost::random;
    -//
    -// We can repeat the above example, with other distributions:
    -//
    -uniform_real_distribution<mpf_float_50> ur(-20, 20);
    -gamma_distribution<mpf_float_50> gd(20);
    -independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    -//
    -// Generate some values:
    -//
    -std::cout << std::setprecision(50);
    -for(unsigned i = 0; i < 20; ++i)
    -   std::cout << ur(gen) << std::endl;
    -for(unsigned i = 0; i < 20; ++i)
    -   std::cout << gd(gen) << std::endl;
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html deleted file mode 100644 index 614d612e..00000000 --- a/doc/html/boost_multiprecision/tut/rational.html +++ /dev/null @@ -1,252 +0,0 @@ - - - -Rational Number Types - - - - - - - - -
    -PrevUpHomeNext -
    -
    - - -

    - The following back-ends provide rational number arithmetic: -

    -
    -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Backend Type -

    -
    -

    - Header -

    -
    -

    - Radix -

    -
    -

    - Dependencies -

    -
    -

    - Pros -

    -
    -

    - Cons -

    -
    -

    - gmp_rational -

    -
    -

    - boost/multiprecision/gmp.hpp -

    -
    -

    - 2 -

    -
    -

    - GMP -

    -
    -

    - Very fast and efficient back-end. -

    -
    -

    - Dependency on GNU licensed GMP - library. -

    -
    -

    - cpp_rational -

    -
    -

    - boost/multiprecision/cpp_int.hpp -

    -
    -

    - 2 -

    -
    -

    - None -

    -
    -

    - An all C++ Boost-licensed implementation. -

    -
    -

    - Slower than GMP. -

    -
    -

    - tommath_rational -

    -
    -

    - boost/multiprecision/tommath.hpp -

    -
    -

    - 2 -

    -
    -

    - libtommath -

    -
    -

    - All C/C++ implementation that's Boost Software Licence compatible. -

    -
    -

    - Slower than GMP. -

    -
    -

    - rational_adapter -

    -
    -

    - boost/multiprecision/rational_adapter.hpp -

    -
    -

    - N/A -

    -
    -

    - none -

    -
    -

    - All C++ adapter that allows any inetger back-end type to be used - as a rational type. -

    -
    -

    - Requires an underlying integer back-end type. -

    -
    -

    - boost::rational -

    -
    -

    - boost/rational.hpp -

    -
    -

    - N/A -

    -
    -

    - None -

    -
    -

    - A C++ rational number type that can used with any mp_number integer type. -

    -
    -

    - The expression templates used by mp_number - end up being "hidden" inside boost::rational: - performance may well suffer as a result. -

    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/rational/br.html b/doc/html/boost_multiprecision/tut/rational/br.html deleted file mode 100644 index a3efdfa6..00000000 --- a/doc/html/boost_multiprecision/tut/rational/br.html +++ /dev/null @@ -1,42 +0,0 @@ - - - -Use With Boost.Rational - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - All of the integer types in this library can be used as template arguments - to boost::rational<IntType>. -

    -

    - Note that using the library in this way largely negates the effect of the - expression templates in mp_number. -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html deleted file mode 100644 index ea6b42a8..00000000 --- a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html +++ /dev/null @@ -1,108 +0,0 @@ - - - -cpp_rational - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/cpp_int.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    -
    -typedef mp_number<cpp_rational_backend>         cpp_rational;
    -
    -}} // namespaces
    -
    -

    - The cpp_rational_backend - type is used via the typedef boost::multiprecision::cpp_rational. - It provides a rational number type that is a drop-in replacement for the - native C++ number types, but with unlimited precision. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of cpp_rational are copy - constructible and assignable from type cpp_int. -

    -

    - There is also a two argument constructor that accepts a numerator and denominator: - both of type cpp_int. -

    -

    - There are also non-member functions: -

    -
    cpp_int numerator(const cpp_rational&);
    -cpp_int denominator(const cpp_rational&);
    -
    -

    - which return the numerator and denominator of the number. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed cpp_rationals - have the value zero. -
    • -
    • - Division by zero results in a std::rumtime_error - being thrown. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/cpp_int.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -cpp_rational v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -v /= 10;
    -
    -std::cout << v << std::endl; // prints 1000! / 10
    -std::cout << numerator(v) << std::endl;
    -std::cout << denominator(v) << std::endl;
    -
    -cpp_rational w(2, 3);  // component wise constructor
    -std::cout << w << std::endl; // prints 2/3
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html deleted file mode 100644 index 8f1f28fe..00000000 --- a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -gmp_rational - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/gmp.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -class gmp_rational;
    -
    -typedef mp_number<gmp_rational >         mpq_rational;
    -
    -}} // namespaces
    -
    -

    - The gmp_rational back-end - is used via the typedef boost::multiprecision::mpq_rational. - It acts as a thin wrapper around the GMP - mpq_t to provide a rational - number type that is a drop-in replacement for the native C++ number types, - but with unlimited precision. -

    -

    - As well as the usual conversions from arithmetic and string types, instances - of mp_number<gmp_rational> - are copy constructible and assignable from: -

    -
      -
    • - The GMP native types: mpz_t, mpq_t. -
    • -
    • - mp_number<gmp_int>. -
    • -
    -

    - There is also a two-argument constructor that accepts a numerator and denominator - (both of type mp_number<gmp_int>). -

    -

    - There are also non-member functions: -

    -
    mpz_int numerator(const mpq_rational&);
    -mpz_int denominator(const mpq_rational&);
    -
    -

    - which return the numerator and denominator of the number. -

    -

    - It's also possible to access the underlying mpq_t - via the data() - member function of mpq_rational. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed mpq_rationals - have the value zero (this is the GMP - default behavior). -
    • -
    • - Division by zero results in a hardware exception inside the GMP library. -
    • -
    • - No changes are made to the GMP - library's global settings, so this type can coexist with existing - GMP code. -
    • -
    • - The code can equally be used with MPIR - as the underlying library - indeed that is the preferred option on - Win32. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/gmp.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -mpq_rational v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -v /= 10;
    -
    -std::cout << v << std::endl; // prints 1000! / 10
    -std::cout << numerator(v) << std::endl;
    -std::cout << denominator(v) << std::endl;
    -
    -mpq_rational w(2, 3);  // component wise constructor
    -std::cout << w << std::endl; // prints 2/3
    -
    -// Access the underlying data:
    -mpq_t q;
    -mpq_init(q);
    -mpq_set(q, v.backend().data());
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html deleted file mode 100644 index 6b4853f1..00000000 --- a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -rational_adapter - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -
    namespace boost{ namespace multiprecision{
    -
    -template <class IntBackend>
    -class rational_adpater;
    -
    -}}
    -
    -

    - The class template rational_adapter - is a back-end for mp_number - which converts any existing integer back-end into a rational-number back-end. -

    -

    - So for example, given an integer back-end type MyIntegerBackend, - the use would be something like: -

    -
    typedef mp_number<MyIntegerBackend>                    MyInt;
    -typedef mp_number<rational_adapter<MyIntegerBackend> > MyRational;
    -
    -MyRational r = 2;
    -r /= 3;
    -MyInt i = numerator(r);
    -assert(i == 2);
    -
    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html deleted file mode 100644 index 25520372..00000000 --- a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html +++ /dev/null @@ -1,115 +0,0 @@ - - - -tommath_rational - - - - - - - - -
    -PrevUpHomeNext -
    -
    - -

    - #include <boost/multiprecision/tommath.hpp> -

    -
    namespace boost{ namespace multiprecision{
    -
    -typedef rational_adpater<tommath_int>        tommath_rational;
    -typedef mp_number<tommath_rational >         tom_rational;
    -
    -}} // namespaces
    -
    -

    - The tommath_rational back-end - is used via the typedef boost::multiprecision::tom_rational. - It acts as a thin wrapper around boost::rational<tom_int> to provide a rational number type that - is a drop-in replacement for the native C++ number types, but with unlimited - precision. -

    -

    - The advantage of using this type rather than boost::rational<tom_int> directly, is that it is expression-template - enabled, greatly reducing the number of temporaries created in complex - expressions. -

    -

    - There are also non-member functions: -

    -
    tom_int numerator(const tom_rational&);
    -tom_int denominator(const tom_rational&);
    -
    -

    - which return the numerator and denominator of the number. -

    -

    - Things you should know when using this type: -

    -
      -
    • - Default constructed tom_rationals - have the value zero (this the inherited Boost.Rational behavior). -
    • -
    • - Division by zero results in a boost::bad_rational - exception being thrown (see the rational number library's docs for - more information). -
    • -
    • - No changes are made to libtommath's - global state, so this type can safely coexist with other libtommath - code. -
    • -
    • - Performance of this type has been found to be pretty poor - this need - further investigation - but it appears that Boost.Rational needs some - improvement in this area. -
    • -
    -
    - - Example: -
    -

    -

    -
    #include <boost/multiprecision/tommath.hpp>
    -
    -using namespace boost::multiprecision;
    -
    -tom_rational v = 1;
    -
    -// Do some arithmetic:
    -for(unsigned i = 1; i <= 1000; ++i)
    -   v *= i;
    -v /= 10;
    -
    -std::cout << v << std::endl; // prints 1000! / 10
    -std::cout << numerator(v) << std::endl;
    -std::cout << denominator(v) << std::endl;
    -
    -tom_rational w(2, 3); // Component wise constructor
    -std::cout << w << std::endl; // prints 2/3
    -
    -

    -

    -
    - - - -
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index 4ed88ab7..00000000 --- a/doc/html/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - -Chapter 1. Boost.Multiprecision - - - - - - -
    Next
    - - - - -

    Last revised: April 09, 2012 at 16:55:19 GMT

    -
    -
    Next
    - - diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index f1bf2c33..4804fd6d 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -407,6 +407,20 @@ as a result performing formatted output on this type when the argument is negati [endsect] +[section:egs Examples] + +[import ../example/integer_examples.cpp] + +[section:factorials Factorials] +[FAC1] +[endsect] + +[section:bitops Bit Operations] +[BITOPS] +[endsect] + +[endsect] + [endsect] [section:floats Floating Point Numbers] @@ -595,13 +609,19 @@ Normally these should not be visible to the user. [endsect] -[section:GI Calculating an Integral] +[section:gi Calculating an Integral] [GI1] [GI2] [endsect] +[section:poly_eg Polynomial Evaluation] + +[POLY] + +[endsect] + [endsect] [endsect] @@ -874,7 +894,7 @@ Finally, we can modify the above example to produce numbers distributed accordin [section:primetest Primality Testing] -The library implements a fairly basic (meaning unoptimized, and possibly slow) Miller-Rabin test for primality: +The library implements a Miller-Rabin test for primality: #include @@ -885,7 +905,9 @@ The library implements a fairly basic (meaning unoptimized, and possibly slow) M bool miller_rabin_test(const mp_number& n, unsigned trials); These functions perform a Miller-Rabin test for primality, if the result is `false` then /n/ is definitely composite, -while if the result is `true` then /n/ is prime with probability ['0.25^trials]. The algorithm used is straight out of +while if the result is `true` then /n/ is prime with probability ['0.25^trials]. The algorithm used performs some +trial divisions to exclude small prime factors, does one Fermat test to exclude many more composites, and then +uses the Miller-Rabin algorithm straight out of Knuth Vol 2, which recomends 25 trials for a pretty strong likelyhood that /n/ is prime. The third optional argument is for a Uniform Random Number Generator from Boost.Random. When not provided the `mt19937` diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp index 81fccd70..701d4b0b 100644 --- a/example/floating_point_examples.cpp +++ b/example/floating_point_examples.cpp @@ -8,6 +8,7 @@ #include #include #include +#include //[AOS1 @@ -338,6 +339,120 @@ private: //] +//[POLY + +/*` +In this example we'll look at polynomial evaluation, this is not only an important +use case, but it's one that `mp_number` performs particularly well at because the +expression templates ['completely eliminate all temporaries] from a +[@http://en.wikipedia.org/wiki/Horner%27s_method Horner polynomial +evaluation scheme]. + +The following code evaluates `sin(x)` as a polynomial, accurate to at least 64 decimal places: + +*/ + +using boost::multiprecision::cpp_dec_float; +typedef boost::multiprecision::mp_number > mp_type; + +mp_type mysin(const mp_type& x) +{ + // Approximation of sin(x * pi/2) for -1 <= x <= 1, using an order 63 polynomial. + static const std::array coefs = + {{ + mp_type("+1.5707963267948966192313216916397514420985846996875529104874722961539082031431044993140174126711"), //"), + mp_type("-0.64596409750624625365575656389794573337969351178927307696134454382929989411386887578263960484"), // ^3 + mp_type("+0.07969262624616704512050554949047802252091164235106119545663865720995702920146198554317279"), // ^5 + mp_type("-0.0046817541353186881006854639339534378594950280185010575749538605102665157913157426229824"), // ^7 + mp_type("+0.00016044118478735982187266087016347332970280754062061156858775174056686380286868007443"), // ^9 + mp_type("-3.598843235212085340458540018208389404888495232432127661083907575106196374913134E-6"), // ^11 + mp_type("+5.692172921967926811775255303592184372902829756054598109818158853197797542565E-8"), // ^13 + mp_type("-6.688035109811467232478226335783138689956270985704278659373558497256423498E-10"), // ^15 + mp_type("+6.066935731106195667101445665327140070166203261129845646380005577490472E-12"), // ^17 + mp_type("-4.377065467313742277184271313776319094862897030084226361576452003432E-14"), // ^19 + mp_type("+2.571422892860473866153865950420487369167895373255729246889168337E-16"), // ^21 + mp_type("-1.253899540535457665340073300390626396596970180355253776711660E-18"), // ^23 + mp_type("+5.15645517658028233395375998562329055050964428219501277474E-21"), // ^25 + mp_type("-1.812399312848887477410034071087545686586497030654642705E-23"), // ^27 + mp_type("+5.50728578652238583570585513920522536675023562254864E-26"), // ^29 + mp_type("-1.461148710664467988723468673933026649943084902958E-28"), // ^31 + mp_type("+3.41405297003316172502972039913417222912445427E-31"), // ^33 + mp_type("-7.07885550810745570069916712806856538290251E-34"), // ^35 + mp_type("+1.31128947968267628970845439024155655665E-36"), // ^37 + mp_type("-2.18318293181145698535113946654065918E-39"), // ^39 + mp_type("+3.28462680978498856345937578502923E-42"), // ^41 + mp_type("-4.48753699028101089490067137298E-45"), // ^43 + mp_type("+5.59219884208696457859353716E-48"), // ^45 + mp_type("-6.38214503973500471720565E-51"), // ^47 + mp_type("+6.69528558381794452556E-54"), // ^49 + mp_type("-6.47841373182350206E-57"), // ^51 + mp_type("+5.800016389666445E-60"), // ^53 + mp_type("-4.818507347289E-63"), // ^55 + mp_type("+3.724683686E-66"), // ^57 + mp_type("-2.6856479E-69"), // ^59 + mp_type("+1.81046E-72"), // ^61 + mp_type("-1.133E-75"), // ^63 + }}; + + const mp_type v = x * 2 / boost::math::constants::pi(); + const mp_type x2 = (v * v); + // + // Polynomial evaluation follows, if mp_type allocates memory then + // just one such allocation occurs - to initialize the variable "sum" - + // and no temporaries are created at all. + // + const mp_type sum = ((((((((((((((((((((((((((((((( + coefs[31U] + * x2 + coefs[30U]) + * x2 + coefs[29U]) + * x2 + coefs[28U]) + * x2 + coefs[27U]) + * x2 + coefs[26U]) + * x2 + coefs[25U]) + * x2 + coefs[24U]) + * x2 + coefs[23U]) + * x2 + coefs[22U]) + * x2 + coefs[21U]) + * x2 + coefs[20U]) + * x2 + coefs[19U]) + * x2 + coefs[18U]) + * x2 + coefs[17U]) + * x2 + coefs[16U]) + * x2 + coefs[15U]) + * x2 + coefs[14U]) + * x2 + coefs[13U]) + * x2 + coefs[12U]) + * x2 + coefs[11U]) + * x2 + coefs[10U]) + * x2 + coefs[9U]) + * x2 + coefs[8U]) + * x2 + coefs[7U]) + * x2 + coefs[6U]) + * x2 + coefs[5U]) + * x2 + coefs[4U]) + * x2 + coefs[3U]) + * x2 + coefs[2U]) + * x2 + coefs[1U]) + * x2 + coefs[0U]) + * v; + + return sum; +} + +/*` +Calling the function like so: + + std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific; + std::cout << mysin(mp_type(1)) << std::endl; + +Yields the expected output: + +[pre 7.0710678118654752440084436210484903928483593768847403658833986900e-01] + +*/ + +//] + + int main() { using namespace boost::multiprecision; @@ -542,6 +657,10 @@ int main(int, char**) //] + std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific; + std::cout << mysin(boost::math::constants::pi<::mp_type>() / 4) << std::endl; + std::cout << boost::multiprecision::sin(boost::math::constants::pi<::mp_type>() / 4) << std::endl; + return 0; } @@ -562,4 +681,6 @@ Program output: 4.99999999999999999999999999999999999999999999999999e-01 2.70670566473225383787998989944968806815263091819151e-01 2.70670566473225383787998989944968806815253190143120e-01 +7.0710678118654752440084436210484903928483593768847403658833986900e-01 +7.0710678118654752440084436210484903928483593768847403658833986900e-01 */ \ No newline at end of file diff --git a/example/integer_examples.cpp b/example/integer_examples.cpp new file mode 100644 index 00000000..68cb0653 --- /dev/null +++ b/example/integer_examples.cpp @@ -0,0 +1,231 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include +#include +#include +#include + +//[FAC1 + +/*` +In this simple example, we'll write a routine to print out all of the factorials +which will fit into a 128-bit integer. At the end of the routine we do some +fancy iostream formatting of the results: +*/ +/*= +#include +#include +#include +#include +*/ + +void print_factorials() +{ + using boost::multiprecision::cpp_int; + // + // Print all the factorials that will fit inside a 128-bit integer. + // + // Begin by building a big table of factorials, once we know just how + // large the largest is, we'll be able to "pretty format" the results. + // + // Calculate the largest number that will fit inside 128 bits, we could + // also have used numeric_limits::max() for this value: + cpp_int limit = (cpp_int(1) << 128) - 1; + // + // Our table of values: + std::vector results; + // + // Initial values: + unsigned i = 1; + cpp_int factorial = 1; + // + // Cycle through the factorials till we reach the limit: + while(factorial < limit) + { + results.push_back(factorial); + ++i; + factorial *= i; + } + // + // Lets see how many digits the largest factorial was: + unsigned digits = results.back().str().size(); + // + // Now print them out, using right justification, while we're at it + // we'll indicate the limit of each integer type, so begin by defining + // the limits for 16, 32, 64 etc bit integers: + cpp_int limits[] = { + (cpp_int(1) << 16) - 1, + (cpp_int(1) << 32) - 1, + (cpp_int(1) << 64) - 1, + (cpp_int(1) << 128) - 1, + }; + std::string bit_counts[] = { "16", "32", "64", "128" }; + unsigned current_limit = 0; + for(unsigned j = 0; j < results.size(); ++j) + { + if(limits[current_limit] < results[j]) + { + std::string message = "Limit of " + bit_counts[current_limit] + " bit integers"; + std::cout << std::setfill('.') << std::setw(digits+1) << std::right << message << std::setfill(' ') << std::endl; + ++current_limit; + } + std::cout << std::setw(digits + 1) << std::right << results[j] << std::endl; + } +} + +/*` +The output from this routine is: +[template nul[]] [# fix for quickbook bug] +[pre [nul] + 1 + 2 + 6 + 24 + 120 + 720 + 5040 + 40320 +................Limit of 16 bit integers + 362880 + 3628800 + 39916800 + 479001600 +................Limit of 32 bit integers + 6227020800 + 87178291200 + 1307674368000 + 20922789888000 + 355687428096000 + 6402373705728000 + 121645100408832000 + 2432902008176640000 +................Limit of 64 bit integers + 51090942171709440000 + 1124000727777607680000 + 25852016738884976640000 + 620448401733239439360000 + 15511210043330985984000000 + 403291461126605635584000000 + 10888869450418352160768000000 + 304888344611713860501504000000 + 8841761993739701954543616000000 + 265252859812191058636308480000000 + 8222838654177922817725562880000000 + 263130836933693530167218012160000000 + 8683317618811886495518194401280000000 + 295232799039604140847618609643520000000 +] +*/ + +//] + +//[BITOPS + +/*` +In this example we'll show how individual bits within an integer may be manipulated, +we'll start with an often needed calculation of ['2[super n] - 1], which we could obviously +implement like this: +*/ + +using boost::multiprecision::cpp_int; + +cpp_int b1(unsigned n) +{ + cpp_int r(1); + return (r << n) - 1; +} + +/*` +Calling: + + std::cout << std::hex << std::showbase << b1(200) << std::endl; + +Yields as expected: + +[pre 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] + +However, we could equally just set the n'th bit in the result, like this: +*/ + +cpp_int b2(unsigned n) +{ + cpp_int r(0); + return --bit_set(r, n); +} + +/*` +Note how the `bit_set` function sets the specified bit in it's argument and then returns a reference to the result - +which we can then simply decrement. The result from a call to `b2` is the same as that to `b1`. + +We can equally test bits, so for example the n'th bit of the result returned from `b2` shouldn't be set +unless we increment it first: + + assert(!bit_test(b1(200), 200)); // OK + assert(bit_test(++b1(200), 200)); // OK + +And of course if we flip the n'th bit after increment, then we should get back to zero: + + assert(!bit_flip(++b1(200), 200)); // OK +*/ + +//] + +int main() +{ + print_factorials(); + + std::cout << std::hex << std::showbase << b1(200) << std::endl; + std::cout << std::hex << std::showbase << b2(200) << std::endl; + assert(!bit_test(b1(200), 200)); // OK + assert(bit_test(++b1(200), 200)); // OK + assert(!bit_flip(++b1(200), 200)); // OK + return 0; +} + +/* + +Program output: + + 1 + 2 + 6 + 24 + 120 + 720 + 5040 + 40320 +................Limit of 16 bit integers + 362880 + 3628800 + 39916800 + 479001600 +................Limit of 32 bit integers + 6227020800 + 87178291200 + 1307674368000 + 20922789888000 + 355687428096000 + 6402373705728000 + 121645100408832000 + 2432902008176640000 +................Limit of 64 bit integers + 51090942171709440000 + 1124000727777607680000 + 25852016738884976640000 + 620448401733239439360000 + 15511210043330985984000000 + 403291461126605635584000000 + 10888869450418352160768000000 + 304888344611713860501504000000 + 8841761993739701954543616000000 + 265252859812191058636308480000000 + 8222838654177922817725562880000000 + 263130836933693530167218012160000000 + 8683317618811886495518194401280000000 + 295232799039604140847618609643520000000 + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + */ \ No newline at end of file diff --git a/test/test_acos.cpp b/test/test_acos.cpp index de5957c1..a827fc48 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -102,6 +102,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index ca7a39c1..c230a9cd 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -447,7 +447,7 @@ void test_float_ops(const boost::mpl::int_(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_atan.cpp b/test/test_atan.cpp index ae0886d0..d1ee181c 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -244,6 +244,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 81138810..71c0c9b3 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -298,6 +298,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index ef6b372c..ad609a88 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -140,6 +140,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 34a19a35..7bd32666 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -180,6 +180,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index caeb2c02..17bc33d5 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -191,6 +191,7 @@ void test() template T generate_random() { + typedef typename T::backend_type::exponent_type e_type; static boost::random::mt19937 gen; T val = gen(); T prev_val = -1; @@ -200,10 +201,9 @@ T generate_random() prev_val = val; val += gen(); } - int e; + e_type e; val = frexp(val, &e); - typedef typename T::backend_type::exponent_type e_type; static boost::random::uniform_int_distribution ui(0, std::numeric_limits::max_exponent - 10); return ldexp(val, ui(gen)); } @@ -260,11 +260,11 @@ int main() test(); test(); - /* + // cpp_dec_float has extra guard digits that messes this up: test_round_trip(); test_round_trip(); - */ + #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_log.cpp b/test/test_log.cpp index a8a743d3..fcd628f6 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -208,6 +208,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 3c909653..e98be847 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -583,6 +583,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_round.cpp b/test/test_round.cpp index 4efa024a..f6058668 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -389,6 +389,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif #ifdef TEST_BACKEND test >(); diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 23470635..708fe5e8 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -291,6 +291,16 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT test(); + test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index cfa84bdb..8ba7078b 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -216,6 +216,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index ec801267..df50cf9f 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -186,6 +186,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 71a05174..93052dd7 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -135,6 +135,15 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } From 5c9d22ae8e51cdc9fe5c76505c46f3c153c205e7 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 13 Apr 2012 15:40:50 +0000 Subject: [PATCH 169/256] Commit revised docs. [SVN r77949] --- doc/html/boost_multiprecision/indexes.html | 40 + .../boost_multiprecision/indexes/s01.html | 243 ++ .../boost_multiprecision/indexes/s02.html | 53 + .../boost_multiprecision/indexes/s03.html | 189 + .../boost_multiprecision/indexes/s04.html | 537 +++ doc/html/boost_multiprecision/intro.html | 522 +++ doc/html/boost_multiprecision/map.html | 39 + doc/html/boost_multiprecision/map/ack.html | 55 + doc/html/boost_multiprecision/map/hist.html | 50 + doc/html/boost_multiprecision/map/todo.html | 104 + doc/html/boost_multiprecision/perf.html | 46 + .../perf/float_performance.html | 961 ++++++ .../perf/int_real_world.html | 217 ++ .../perf/integer_performance.html | 3034 +++++++++++++++++ .../perf/rational_performance.html | 905 +++++ .../boost_multiprecision/perf/realworld.html | 278 ++ doc/html/boost_multiprecision/ref.html | 44 + .../boost_multiprecision/ref/backendconc.html | 2295 +++++++++++++ .../boost_multiprecision/ref/cpp_dec_ref.html | 61 + .../boost_multiprecision/ref/cpp_int_ref.html | 99 + .../boost_multiprecision/ref/gmp_int_ref.html | 51 + .../boost_multiprecision/ref/mp_number.html | 695 ++++ .../boost_multiprecision/ref/mpf_ref.html | 67 + .../boost_multiprecision/ref/mpfr_ref.html | 67 + .../boost_multiprecision/ref/tom_int_ref.html | 51 + doc/html/boost_multiprecision/tut.html | 82 + .../boost_multiprecision/tut/conversions.html | 106 + doc/html/boost_multiprecision/tut/floats.html | 199 ++ .../tut/floats/cpp_dec_float.html | 117 + .../tut/floats/fp_eg.html | 46 + .../tut/floats/fp_eg/aos.html | 118 + .../tut/floats/fp_eg/gi.html | 161 + .../tut/floats/fp_eg/jel.html | 222 ++ .../tut/floats/fp_eg/nd.html | 202 ++ .../tut/floats/fp_eg/poly_eg.html | 146 + .../tut/floats/gmp_float.html | 169 + .../tut/floats/mpfr_float.html | 159 + doc/html/boost_multiprecision/tut/ints.html | 191 ++ .../tut/ints/cpp_int.html | 179 + .../boost_multiprecision/tut/ints/egs.html | 38 + .../tut/ints/egs/bitops.html | 94 + .../tut/ints/egs/factorials.html | 145 + .../tut/ints/gmp_int.html | 128 + .../tut/ints/tom_int.html | 119 + .../boost_multiprecision/tut/primetest.html | 109 + doc/html/boost_multiprecision/tut/random.html | 157 + .../boost_multiprecision/tut/rational.html | 252 ++ .../boost_multiprecision/tut/rational/br.html | 42 + .../tut/rational/cpp_rational.html | 108 + .../tut/rational/gmp_rational.html | 138 + .../tut/rational/rational_adapter.html | 58 + .../tut/rational/tommath_rational.html | 115 + doc/html/index.html | 126 + 53 files changed, 14429 insertions(+) create mode 100644 doc/html/boost_multiprecision/indexes.html create mode 100644 doc/html/boost_multiprecision/indexes/s01.html create mode 100644 doc/html/boost_multiprecision/indexes/s02.html create mode 100644 doc/html/boost_multiprecision/indexes/s03.html create mode 100644 doc/html/boost_multiprecision/indexes/s04.html create mode 100644 doc/html/boost_multiprecision/intro.html create mode 100644 doc/html/boost_multiprecision/map.html create mode 100644 doc/html/boost_multiprecision/map/ack.html create mode 100644 doc/html/boost_multiprecision/map/hist.html create mode 100644 doc/html/boost_multiprecision/map/todo.html create mode 100644 doc/html/boost_multiprecision/perf.html create mode 100644 doc/html/boost_multiprecision/perf/float_performance.html create mode 100644 doc/html/boost_multiprecision/perf/int_real_world.html create mode 100644 doc/html/boost_multiprecision/perf/integer_performance.html create mode 100644 doc/html/boost_multiprecision/perf/rational_performance.html create mode 100644 doc/html/boost_multiprecision/perf/realworld.html create mode 100644 doc/html/boost_multiprecision/ref.html create mode 100644 doc/html/boost_multiprecision/ref/backendconc.html create mode 100644 doc/html/boost_multiprecision/ref/cpp_dec_ref.html create mode 100644 doc/html/boost_multiprecision/ref/cpp_int_ref.html create mode 100644 doc/html/boost_multiprecision/ref/gmp_int_ref.html create mode 100644 doc/html/boost_multiprecision/ref/mp_number.html create mode 100644 doc/html/boost_multiprecision/ref/mpf_ref.html create mode 100644 doc/html/boost_multiprecision/ref/mpfr_ref.html create mode 100644 doc/html/boost_multiprecision/ref/tom_int_ref.html create mode 100644 doc/html/boost_multiprecision/tut.html create mode 100644 doc/html/boost_multiprecision/tut/conversions.html create mode 100644 doc/html/boost_multiprecision/tut/floats.html create mode 100644 doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html create mode 100644 doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html create mode 100644 doc/html/boost_multiprecision/tut/floats/gmp_float.html create mode 100644 doc/html/boost_multiprecision/tut/floats/mpfr_float.html create mode 100644 doc/html/boost_multiprecision/tut/ints.html create mode 100644 doc/html/boost_multiprecision/tut/ints/cpp_int.html create mode 100644 doc/html/boost_multiprecision/tut/ints/egs.html create mode 100644 doc/html/boost_multiprecision/tut/ints/egs/bitops.html create mode 100644 doc/html/boost_multiprecision/tut/ints/egs/factorials.html create mode 100644 doc/html/boost_multiprecision/tut/ints/gmp_int.html create mode 100644 doc/html/boost_multiprecision/tut/ints/tom_int.html create mode 100644 doc/html/boost_multiprecision/tut/primetest.html create mode 100644 doc/html/boost_multiprecision/tut/random.html create mode 100644 doc/html/boost_multiprecision/tut/rational.html create mode 100644 doc/html/boost_multiprecision/tut/rational/br.html create mode 100644 doc/html/boost_multiprecision/tut/rational/cpp_rational.html create mode 100644 doc/html/boost_multiprecision/tut/rational/gmp_rational.html create mode 100644 doc/html/boost_multiprecision/tut/rational/rational_adapter.html create mode 100644 doc/html/boost_multiprecision/tut/rational/tommath_rational.html create mode 100644 doc/html/index.html diff --git a/doc/html/boost_multiprecision/indexes.html b/doc/html/boost_multiprecision/indexes.html new file mode 100644 index 00000000..e3925a4f --- /dev/null +++ b/doc/html/boost_multiprecision/indexes.html @@ -0,0 +1,40 @@ + + + +Indexes + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html new file mode 100644 index 00000000..e452e983 --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -0,0 +1,243 @@ + + + +Function Index + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +Function Index

    +

    A B C D E F I L M P R S T Z

    +
    +
    +A +
    +
    +
    +B +
    +
    +
    +C +
    +
    +
    +D +
    +
    +
    +E +
    +
    +
    +F +
    +
    +
    +I +
    +
    +
    +L +
    +
    +
    +M +
    +
    +
    +P +
    +
    +
    +R +
    +
    +
    +S +
    +
    +
    +T +
    +
    +
    +Z +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html new file mode 100644 index 00000000..34f35429 --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -0,0 +1,53 @@ + + + +Class Index + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +Class Index

    +

    M T

    +
    +
    +M +
    +
    +
    +T +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html new file mode 100644 index 00000000..e3dfc498 --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -0,0 +1,189 @@ + + + +Typedef Index + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +Typedef Index

    +

    C I L M T

    +
    +
    +C +
    +
    +
    +I +
    +
    +
    +L +
    +
    +
    +M +
    +
    +
    +T +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html new file mode 100644 index 00000000..0c8231f2 --- /dev/null +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -0,0 +1,537 @@ + + + +Index + + + + + + + +
    +PrevUpHome +
    +
    +

    +Index

    +

    A B C D E F G I L M O P R S T Z

    +
    +
    +A +
    +
    +
    +B +
    +
    +
    +C +
    +
    +
    +D +
    +
    +
    +E +
    +
    +
    +F +
    +
    +
    +G +
    +
    +
    +I +
    +
    +
    +L +
    +
    +
    +M +
    +
    +
    +O +
    +
    +
    +P +
    +
    +
    +R +
    +
    +
    +S +
    +
    +
    +T +
    +
    +
    +Z +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHome +
    + + diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html new file mode 100644 index 00000000..724a4e3a --- /dev/null +++ b/doc/html/boost_multiprecision/intro.html @@ -0,0 +1,522 @@ + + + +Introduction + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + The Multiprecision Library provides User-defined integer, + rational and floating-point C++ types which try to emulate as closely as practicable + the C++ built-in types, but provide for more range and precision. Depending + upon the number type, precision may be arbitrarily large (limited only by available + memory), fixed at compile time values, for example 50 decimal digits, or a + variable controlled at run-time by member functions. The types are expression-template-enabled + for better performance than naive user-defined types. +

    +

    + The Multiprecision library comes in two distinct parts: +

    +
      +
    • + An expression-template-enabled front-end mp_number + that handles all the operator overloading, expression evaluation optimization, + and code reduction. +
    • +
    • + A selection of back-ends that implement the actual arithmetic operations, + and need conform only to the reduced interface requirements of the front-end. +
    • +
    +

    + Separation of front-end and back-end allows use of highly refined, but restricted + license libraries where possible, but provides Boost license alternatives for + users who must have a portable unconstrained license. Which is to say some + back-ends rely on 3rd party libraries, but a header-only Boost license version + is always available (if somewhat slower). +

    +

    + The library is often used via one of the predefined typedefs: for example if + you wanted an arbitrary + precision integer type using GMP + as the underlying implementation then you could use: +

    +
    #include <boost/multiprecision/gmp.hpp>  // Defines the wrappers around the GMP library's types
    +
    +boost::multiprecision::mpz_int myint;    // Arbitrary precision integer type.
    +
    +

    + Alternatively, you can compose your own multiprecision type, by combining + mp_number with one of the predefined + back-end types. For example, suppose you wanted a 300 decimal digit floating-point + type based on the MPFR library. In + this case, there's no predefined typedef with that level of precision, so instead + we compose our own: +

    +
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    +
    +namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    +
    +typedef mp::mp_number<mp::mpfr_float_backend<300> >  my_float;
    +
    +my_float a, b, c; // These variables have 300 decimal digits precision
    +
    +

    + We can repeat the above example, but with the expression templates disabled + (for faster compile times, but slower runtimes) by passing a second template + argument to mp_number: +

    +
    #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
    +
    +namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    +
    +typedef mp::mp_number<mp::mpfr_float_backend<300>, false>  my_float;
    +
    +my_float a, b, c; // These variables have 300 decimal digits precision
    +
    +
    + + Expression + Templates +
    +

    + Class mp_number is expression-template-enabled: + that means that rather than having a multiplication operator that looks like + this: +

    +
    template <class Backend>
    +mp_number<Backend> operator * (const mp_number<Backend>& a, const mp_number<Backend>& b)
    +{
    +   mp_number<Backend> result(a);
    +   result *= b;
    +   return result;
    +}
    +
    +

    + Instead the operator looks more like this: +

    +
    template <class Backend>
    +unmentionable-type operator * (const mp_number<Backend>& a, const mp_number<Backend>& b);
    +
    +

    + Where the "unmentionable" return type is an implementation detail + that, rather than containing the result of the multiplication, contains instructions + on how to compute the result. In effect it's just a pair of references to the + arguments of the function, plus some compile-time information that stores what + the operation is. +

    +

    + The great advantage of this method is the elimination of temporaries: + for example the "naive" implementation of operator* above, requires one temporary for computing + the result, and at least another one to return it. It's true that sometimes + this overhead can be reduced by using move-semantics, but it can't be eliminated + completely. For example, lets suppose we're evaluating a polynomial via Horners + method, something like this: +

    +
    T a[7] = { /* some values */ };
    +//....
    +y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0];
    +
    +

    + If type T is an mp_number, then this expression is evaluated + without creating a single temporary value. In contrast, + if we were using the C++ wrapper that ships with GMP + - mpfr_class + - then this expression would result in no less than 11 temporaries (this is + true even though mpfr_class + does use expression templates to reduce the number of temporaries somewhat). + Had we used an even simpler wrapper around GMP + or MPFR like mpclass + things would have been even worse and no less that 24 temporaries are created + for this simple expression (note - we actually measure the number of memory + allocations performed rather than the number of temporaries directly). +

    +

    + This library also extends expression template support to standard library functions + like abs or sin + with mp_number arguments. This + means that an expression such as: +

    +
    y = abs(x);
    +
    +

    + can be evaluated without a single temporary being calculated. Even expressions + like: +

    +
    y = sin(x);
    +
    +

    + get this treatment, so that variable 'y' is used as "working storage" + within the implementation of sin, + thus reducing the number of temporaries used by one. Of course, should you + write: +

    +
    x = sin(x);
    +
    +

    + Then we clearly can't use x + as working storage during the calculation, so then a temporary variable is + created in this case. +

    +

    + Given the comments above, you might be forgiven for thinking that expression-templates + are some kind of universal-panacea: sadly though, all tricks like this have + their downsides. For one thing, expression template libraries like this one, + tend to be slower to compile than their simpler cousins, they're also harder + to debug (should you actually want to step through our code!), and rely on + compiler optimizations being turned on to give really good performance. Also, + since the return type from expressions involving mp_numbers + is an "unmentionable implementation detail", you have to be careful + to cast the result of an expression to the actual number type when passing + an expression to a template function. For example, given: +

    +
    template <class T>
    +void my_proc(const T&);
    +
    +

    + Then calling: +

    +
    my_proc(a+b);
    +
    +

    + Will very likely result in obscure error messages inside the body of my_proc - since we've passed it an expression + template type, and not a number type. Instead we probably need: +

    +
    my_proc(my_mp_number_type(a+b));
    +
    +

    + Having said that, these situations don't occur that often - or indeed not at + all for non-template functions. In addition, all the functions in the Boost.Math + library will automatically convert expression-template arguments to the underlying + number type without you having to do anything, so: +

    +
    mpfr_float_100 a(20), delta(0.125);
    +boost::math::gamma_p(a, a + delta);
    +
    +

    + Will work just fine, with the a + delta expression + template argument getting converted to an mpfr_float_100 + internally by the Boost.Math library. +

    +

    + One other potential pitfall that's only possible in C++11: you should never + store an expression template using: +

    +
    auto my_expression = a + b - c;
    +
    +

    + unless you're absolutely sure that the lifetimes of a, + b and c + will outlive that of my_expression. +

    +

    + And finally... the performance improvements from an expression template library + like this are often not as dramatic as the reduction in number of temporaries + would suggest. For example if we compare this library with mpfr_class + and mpreal, with + all three using the underlying MPFR + library at 50 decimal digits precision then we see the following typical results + for polynomial execution: +

    +
    +

    Table 1.1. Evaluation of Order 6 Polynomial.

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + Relative Time +

    +
    +

    + Relative number of memory allocations +

    +
    +

    + mp_number +

    +
    +

    + 1.0 (0.00793s) +

    +
    +

    + 1.0 (2996 total) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.2 (0.00931s) +

    +
    +

    + 4.3 (12976 total) +

    +
    +

    + mpreal +

    +
    +

    + 1.9 (0.0148s) +

    +
    +

    + 9.3 (27947 total) +

    +
    +
    +

    + As you can see, the execution time increases a lot more slowly than the number + of memory allocations. There are a number of reasons for this: +

    +
      +
    • + The cost of extended-precision multiplication and division is so great, + that the times taken for these tend to swamp everything else. +
    • +
    • + The cost of an in-place multiplication (using operator*=) tends to be more than an out-of-place + operator* + (typically operator *= + has to create a temporary workspace to carry out the multiplication, where + as operator* + can use the target variable as workspace). Since the expression templates + carry out their magic by converting out-of-place operators to in-place + ones, we necessarily take this hit. Even so the transformation is more + efficient than creating the extra temporary variable, just not by as much + as one would hope. +
    • +
    +

    + Finally, note that mp_number + takes a second template argument, which, when set to false + disables all the expression template machinery. The result is much faster to + compile, but slower at runtime. +

    +

    + We'll conclude this section by providing some more performance comparisons + between these three libraries, again, all are using MPFR + to carry out the underlying arithmetic, and all are operating at the same precision + (50 decimal digits): +

    +
    +

    Table 1.2. Evaluation of Boost.Math's Bessel function test data

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + Relative Time +

    +
    +

    + Relative Number of Memory Allocations +

    +
    +

    + mp_number +

    +
    +

    + 1.0 (6.21s) +

    +
    +

    + 1.0 (2685469) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.04 (6.45s) +

    +
    +

    + 1.47 (3946007) +

    +
    +

    + mpreal +

    +
    +

    + 1.53 (9.52s) +

    +
    +

    + 4.92 (13222940) +

    +
    +
    +
    +

    Table 1.3. Evaluation of Boost.Math's Non-Central T distribution test data

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + Relative Time +

    +
    +

    + Relative Number of Memory Allocations +

    +
    +

    + mp_number +

    +
    +

    + 1.0 (269s) +

    +
    +

    + 1.0 (139082551) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.04 (278s) +

    +
    +

    + 1.81 (252400791) +

    +
    +

    + mpreal +

    +
    +

    + 1.49 (401s) +

    +
    +

    + 3.22 (447009280) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html new file mode 100644 index 00000000..8edb89d1 --- /dev/null +++ b/doc/html/boost_multiprecision/map.html @@ -0,0 +1,39 @@ + + + +Roadmap + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map/ack.html b/doc/html/boost_multiprecision/map/ack.html new file mode 100644 index 00000000..4de1bb82 --- /dev/null +++ b/doc/html/boost_multiprecision/map/ack.html @@ -0,0 +1,55 @@ + + + +Acknowledgements + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + This library would not have happened without: +

    +
      +
    • + Christopher Kormanyos' C++ decimal number code. +
    • +
    • + Paul Bristow for patiently testing, and commenting on the library. +
    • +
    • + All the folks at GMP, MPFR and libtommath, for providing the "guts" + that makes this library work. +
    • +
    • + "The + Art Of Computer Programming", Donald E. Knuth, Volume 2: + Seminumerical Algorithms, Third Edition (Reading, Massachusetts: Addison-Wesley, + 1997), xiv+762pp. ISBN 0-201-89684-2 +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html new file mode 100644 index 00000000..70462181 --- /dev/null +++ b/doc/html/boost_multiprecision/map/hist.html @@ -0,0 +1,50 @@ + + + +History + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
      +
    • + 2011-2012, John Maddock adds an expression template enabled front end + to Christopher's code, and adds support for other backends. +
    • +
    • + 2011, Christopher Kormanyos publishes the decimal floating point code + under the Boost Software Licence. The code is published as: "Algorithm + 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", + in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. +
    • +
    • + 2002-2011, Christopher Kormanyos develops the all C++ decimal arithmetic + floating point code. +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html new file mode 100644 index 00000000..00d93f94 --- /dev/null +++ b/doc/html/boost_multiprecision/map/todo.html @@ -0,0 +1,104 @@ + + + +TODO + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +TODO +

    +

    + More a list of what could be done, rather than what + should be done (which may be a much smaller list!). +

    +
      +
    • + Add back-end support for libdecNumber. +
    • +
    • + Add an adapter back-end for complex number types. +
    • +
    • + Add a back-end for MPFR interval arithmetic. +
    • +
    • + Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend. +
    • +
    • + Add assembly level routines to cpp_int_backend. +
    • +
    • + Add an all C++ binary floating point type. +
    • +
    +
    + + Pre-Review + Comments +
    +
      +
    • + Make the exponent type for cpp_dec_float a templare parameter, maybe + include support for big-integer exponents. Open question - what should + be the default - int32_t or int64_t? +
    • +
    • + Document the size requirements of fixed precision ints. +
    • +
    • + Document std lib function accuracy. +
    • +
    • + Make fixed precision orthogonal to Allocator type in cpp_int. Possible + solution - add an additional MaxBits template argument that defaults + to 0 (meaning keep going till no more space/memory). +
    • +
    • + Add support for fused multiply add (and subtract). GMP mpz_t could use + this. +
    • +
    • + Be a bit clearer on the effects of sign-magnitude representation of cpp_int + - min == -max etc. +
    • +
    • + Document cpp_dec_float precision, rounding, and exponent size. +
    • +
    • + Can we be clearer in the docs that mixed arithmetic doesn't work? +
    • +
    • + Document round functions behaviour better (they behave as in C99). +
    • +
    • + Should there be a choice of rounding mode (probably MPFR specific)? +
    • +
    • + Document limits on size of cpp_dec_float. +
    • +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html new file mode 100644 index 00000000..7460f077 --- /dev/null +++ b/doc/html/boost_multiprecision/perf.html @@ -0,0 +1,46 @@ + + + +Performance Comparison + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html new file mode 100644 index 00000000..9e9b8217 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/float_performance.html @@ -0,0 +1,961 @@ + + + +Float Algorithm Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticism, and real-world + performance may vary widely depending upon the specifics of the program. + In each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    +

    Table 1.8. Operator +

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1 (0.02382s) +

    +
    +

    + 1 (0.0294619s) +

    +
    +

    + 1 (0.058466s) +

    +
    +

    + gmp_float +

    +
    +

    + 4.55086 (0.108402s) +

    +
    +

    + 3.86443 (0.113853s) +

    +
    +

    + 2.6241 (0.15342s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.52036 (0.060035s) +

    +
    +

    + 2.1833 (0.0643242s) +

    +
    +

    + 1.37736 (0.0805287s) +

    +
    +
    +
    +

    Table 1.9. Operator +(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.56759 (0.0527023s) +

    +
    +

    + 1.74629 (0.0618102s) +

    +
    +

    + 1.68077 (0.105927s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0336201s) +

    +
    +

    + 1 (0.0353951s) +

    +
    +

    + 1 (0.0630232s) +

    +
    +

    + mpfr_float +

    +
    +

    + 3.14875 (0.105861s) +

    +
    +

    + 3.15499 (0.111671s) +

    +
    +

    + 1.92831 (0.121528s) +

    +
    +
    +
    +

    Table 1.10. Operator -

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1 (0.0265783s) +

    +
    +

    + 1 (0.031465s) +

    +
    +

    + 1 (0.0619405s) +

    +
    +

    + gmp_float +

    +
    +

    + 4.66954 (0.124108s) +

    +
    +

    + 3.72645 (0.117253s) +

    +
    +

    + 2.67536 (0.165713s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.7909 (0.0741774s) +

    +
    +

    + 2.48557 (0.0782083s) +

    +
    +

    + 1.50944 (0.0934957s) +

    +
    +
    +
    +

    Table 1.11. Operator -(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1 (0.0577674s) +

    +
    +

    + 1 (0.0633795s) +

    +
    +

    + 1 (0.11146s) +

    +
    +

    + gmp_float +

    +
    +

    + 2.31811 (0.133911s) +

    +
    +

    + 2.07251 (0.131355s) +

    +
    +

    + 1.67161 (0.186319s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.45081 (0.141577s) +

    +
    +

    + 2.29174 (0.145249s) +

    +
    +

    + 1.395 (0.155487s) +

    +
    +
    +
    +

    Table 1.12. Operator *

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.07276 (0.287898s) +

    +
    +

    + 1.47724 (0.584569s) +

    +
    +

    + 1.55145 (5.09969s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.268372s) +

    +
    +

    + 1 (0.395718s) +

    +
    +

    + 1 (3.28705s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.27302 (0.341642s) +

    +
    +

    + 1.17649 (0.465557s) +

    +
    +

    + 1.14029 (3.7482s) +

    +
    +
    +
    +

    Table 1.13. Operator *(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 2.89945 (0.11959s) +

    +
    +

    + 4.56335 (0.197945s) +

    +
    +

    + 9.03602 (0.742044s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0412457s) +

    +
    +

    + 1 (0.0433772s) +

    +
    +

    + 1 (0.0821206s) +

    +
    +

    + mpfr_float +

    +
    +

    + 3.6951 (0.152407s) +

    +
    +

    + 3.71977 (0.161353s) +

    +
    +

    + 3.30958 (0.271785s) +

    +
    +
    +
    +

    Table 1.14. Operator /

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 3.24327 (4.00108s) +

    +
    +

    + 5.00532 (8.12985s) +

    +
    +

    + 6.79566 (54.2796s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (1.23366s) +

    +
    +

    + 1 (1.62424s) +

    +
    +

    + 1 (7.9874s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.32521 (1.63486s) +

    +
    +

    + 1.38967 (2.25716s) +

    +
    +

    + 1.72413 (13.7713s) +

    +
    +
    +
    +

    Table 1.15. Operator /(int)

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.45093 (0.253675s) +

    +
    +

    + 1.83306 (0.419569s) +

    +
    +

    + 2.3644 (1.64187s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.174836s) +

    +
    +

    + 1 (0.22889s) +

    +
    +

    + 1 (0.694411s) +

    +
    +

    + mpfr_float +

    +
    +

    + 1.16731 (0.204088s) +

    +
    +

    + 1.13211 (0.259127s) +

    +
    +

    + 1.02031 (0.708513s) +

    +
    +
    +
    +

    Table 1.16. Operator str

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + 500 Decimal Digits +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.4585 (0.0188303s) +

    +
    +

    + 1.55515 (0.03172s) +

    +
    +

    + 1 (0.131962s) +

    +
    +

    + gmp_float +

    +
    +

    + 1 (0.0129107s) +

    +
    +

    + 1 (0.0203967s) +

    +
    +

    + 1.04632 (0.138075s) +

    +
    +

    + mpfr_float +

    +
    +

    + 2.19015 (0.0282764s) +

    +
    +

    + 1.84679 (0.0376683s) +

    +
    +

    + 1.20295 (0.158743s) +

    +
    +
    +

    + ] +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html new file mode 100644 index 00000000..89278b58 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/int_real_world.html @@ -0,0 +1,217 @@ + + + +Integer Real World Tests + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + These tests + measure the time taken to generate 1000 128-bit random numbers and test for + primality using the Miller Rabin test. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and libtommath-0.42.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Integer Type +

    +
    +

    + Relative (and Absolute) Times +

    +
    +

    + mpz_int +

    +
    +

    + 1.08279(0.370326s) +

    +
    +

    + mpz_int (no Expression templates) +

    +
    +

    + 1.1702(0.400222s) +

    +
    +

    + cpp_int +

    +
    +

    + 1.3612(0.465547s) +

    +
    +

    + cpp_int (no Expression templates) +

    +
    +

    + 1.33286(0.455854s) +

    +
    +

    + cpp_int (64-bit cache) +

    +
    +

    + 1.33134(0.455333s) +

    +
    +

    + cpp_int (256-bit cache) +

    +
    +

    + 1.29367(0.442451s) +

    +
    +

    + cpp_int (512-bit cache) +

    +
    +

    + 1.08821(0.37218s) +

    +
    +

    + cpp_int (1024-bit cache) +

    +
    +

    + 1.07902(0.369037s) +

    +
    +

    + mp_int1024_t +

    +
    +

    + 1.02616(0.35096s) +

    +
    +

    + mp_int1024_t (no Expression templates) +

    +
    +

    + 1(0.342011s) +

    +
    +

    + tom_int +

    +
    +

    + 3.74233(1.27992s) +

    +
    +

    + tom_int (no Expression templates) +

    +
    +

    + 3.97646(1.35999s) +

    +
    +

    + It's interesting to note that expression templates have little effect here + - perhaps because the actual expressions involved are relatively trivial + in this case - so the time taken for multiplication and division tends to + dominate. Also note how increasing the internal cache size used by cpp_int is quite effective in this case + in cutting out memory allocations altogether - cutting about a third off + the total runtime. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html new file mode 100644 index 00000000..b7bbe0e7 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -0,0 +1,3034 @@ + + + +Integer Algorithm Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticism, and real-world + performance may vary widely depending upon the specifics of the program. + In each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +

    + Linux x86_64 results are broadly similar, except that libtommath performs + much better there. +

    +
    +

    Table 1.17. Operator +

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.24574 (0.0270133s) +

    +
    +

    + 1.09665 (0.0352319s) +

    +
    +

    + 1.25708 (0.0524047s) +

    +
    +

    + 1.31488 (0.08777s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.05787 (0.0229394s) +

    +
    +

    + 1 (0.0321268s) +

    +
    +

    + 1.16171 (0.0484289s) +

    +
    +

    + 1.24017 (0.0827832s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.08016 (0.0451073s) +

    +
    +

    + 1.33792 (0.042983s) +

    +
    +

    + 1.19676 (0.0498904s) +

    +
    +

    + 1 (0.0667514s) +

    +
    +

    + tommath_int +

    +
    +

    + 1 (0.0216845s) +

    +
    +

    + 1.07779 (0.0346258s) +

    +
    +

    + 1 (0.0416877s) +

    +
    +

    + 1.06344 (0.0709863s) +

    +
    +
    +
    +

    Table 1.18. Operator +(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.46244 (0.0202077s) +

    +
    +

    + 1.20665 (0.0238576s) +

    +
    +

    + 1.17647 (0.0258293s) +

    +
    +

    + 1.12424 (0.0317931s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0138178s) +

    +
    +

    + 1 (0.0197719s) +

    +
    +

    + 1 (0.0219548s) +

    +
    +

    + 1 (0.0282796s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.15321 (0.0297527s) +

    +
    +

    + 2.09834 (0.041488s) +

    +
    +

    + 2.89935 (0.0636546s) +

    +
    +

    + 3.70262 (0.104709s) +

    +
    +

    + tommath_int +

    +
    +

    + 17.1419 (0.236864s) +

    +
    +

    + 12.9762 (0.256563s) +

    +
    +

    + 12.3275 (0.270648s) +

    +
    +

    + 10.7373 (0.303648s) +

    +
    +
    +
    +

    Table 1.19. Operator -

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.15385 (0.029665s) +

    +
    +

    + 1.08217 (0.0369886s) +

    +
    +

    + 1.05882 (0.051534s) +

    +
    +

    + 1.12132 (0.0822725s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0257095s) +

    +
    +

    + 1 (0.0341801s) +

    +
    +

    + 1 (0.0486711s) +

    +
    +

    + 1.08659 (0.0797242s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.56685 (0.040283s) +

    +
    +

    + 1.32917 (0.0454312s) +

    +
    +

    + 1.06917 (0.0520378s) +

    +
    +

    + 1 (0.0733708s) +

    +
    +

    + tommath_int +

    +
    +

    + 1.059 (0.0272264s) +

    +
    +

    + 1.16974 (0.0399818s) +

    +
    +

    + 1.01303 (0.0493054s) +

    +
    +

    + 1.03375 (0.0758472s) +

    +
    +
    +
    +

    Table 1.20. Operator -(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.51665 (0.0157196s) +

    +
    +

    + 1.31513 (0.0200533s) +

    +
    +

    + 1.29599 (0.0235066s) +

    +
    +

    + 1.21534 (0.0266136s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0103647s) +

    +
    +

    + 1 (0.0152482s) +

    +
    +

    + 1 (0.018138s) +

    +
    +

    + 1 (0.021898s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.7938 (0.0289568s) +

    +
    +

    + 2.55493 (0.038958s) +

    +
    +

    + 3.12248 (0.0566356s) +

    +
    +

    + 4.48855 (0.0982904s) +

    +
    +

    + tommath_int +

    +
    +

    + 20.8695 (0.216305s) +

    +
    +

    + 15.0705 (0.229797s) +

    +
    +

    + 13.4093 (0.243217s) +

    +
    +

    + 12.2599 (0.268468s) +

    +
    +
    +
    +

    Table 1.21. Operator *

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.29504 (0.0731032s) +

    +
    +

    + 1.55431 (0.196132s) +

    +
    +

    + 1.4363 (0.656569s) +

    +
    +

    + 1.63701 (2.47859s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0564485s) +

    +
    +

    + 1.16604 (0.147138s) +

    +
    +

    + 1 (0.457124s) +

    +
    +

    + 1 (1.5141s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.19574 (0.0674975s) +

    +
    +

    + 1 (0.126186s) +

    +
    +

    + 1.16627 (0.53313s) +

    +
    +

    + 1.02906 (1.5581s) +

    +
    +

    + tommath_int +

    +
    +

    + 1.97229 (0.111333s) +

    +
    +

    + 2.67087 (0.337027s) +

    +
    +

    + 2.13031 (0.973817s) +

    +
    +

    + 2.05869 (3.11706s) +

    +
    +
    +
    +

    Table 1.22. Operator *(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.34609 (0.030315s) +

    +
    +

    + 1.57086 (0.0407838s) +

    +
    +

    + 1.60154 (0.0542267s) +

    +
    +

    + 1.67808 (0.0804984s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.29783 (0.0292279s) +

    +
    +

    + 1.58263 (0.0410894s) +

    +
    +

    + 1.61543 (0.054697s) +

    +
    +

    + 1.66841 (0.0800346s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.0225207s) +

    +
    +

    + 1 (0.0259628s) +

    +
    +

    + 1 (0.033859s) +

    +
    +

    + 1 (0.0479706s) +

    +
    +

    + tommath_int +

    +
    +

    + 12.4278 (0.279882s) +

    +
    +

    + 11.9045 (0.309074s) +

    +
    +

    + 10.5973 (0.358813s) +

    +
    +

    + 9.47384 (0.454466s) +

    +
    +
    +
    +

    Table 1.23. Operator /

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 2.86387 (0.593314s) +

    +
    +

    + 2.18375 (0.69965s) +

    +
    +

    + 1.72571 (0.918294s) +

    +
    +

    + 1.39251 (1.33801s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.207172s) +

    +
    +

    + 1 (0.320389s) +

    +
    +

    + 1 (0.532127s) +

    +
    +

    + 1 (0.960856s) +

    +
    +

    + gmp_int +

    +
    +

    + 3.89115 (0.806137s) +

    +
    +

    + 2.87573 (0.921352s) +

    +
    +

    + 1.96635 (1.04635s) +

    +
    +

    + 1.29618 (1.24544s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.9483 (2.47535s) +

    +
    +

    + 9.35941 (2.99865s) +

    +
    +

    + 8.79014 (4.67747s) +

    +
    +

    + 11.8316 (11.3684s) +

    +
    +
    +
    +

    Table 1.24. Operator /(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 5.77003 (0.313196s) +

    +
    +

    + 4.38067 (0.431864s) +

    +
    +

    + 3.55054 (0.634559s) +

    +
    +

    + 2.97898 (1.03205s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 2.48952 (0.135131s) +

    +
    +

    + 2.59188 (0.255519s) +

    +
    +

    + 2.56716 (0.458808s) +

    +
    +

    + 2.52368 (0.874313s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.0542797s) +

    +
    +

    + 1 (0.0985842s) +

    +
    +

    + 1 (0.178722s) +

    +
    +

    + 1 (0.346443s) +

    +
    +

    + tommath_int +

    +
    +

    + 31.6477 (1.71783s) +

    +
    +

    + 22.8727 (2.25489s) +

    +
    +

    + 19.9248 (3.56101s) +

    +
    +

    + 24.3266 (8.42779s) +

    +
    +
    +
    +

    Table 1.25. Operator %

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.9813 (0.357541s) +

    +
    +

    + 1.55667 (0.460146s) +

    +
    +

    + 1.35341 (0.681144s) +

    +
    +

    + 1.19906 (1.10138s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.180457s) +

    +
    +

    + 1 (0.295597s) +

    +
    +

    + 1 (0.503278s) +

    +
    +

    + 1 (0.918538s) +

    +
    +

    + gmp_int +

    +
    +

    + 3.50213 (0.631985s) +

    +
    +

    + 2.33312 (0.689662s) +

    +
    +

    + 1.57264 (0.791475s) +

    +
    +

    + 1.07795 (0.99014s) +

    +
    +

    + tommath_int +

    +
    +

    + 12.2393 (2.20868s) +

    +
    +

    + 10.1123 (2.98915s) +

    +
    +

    + 9.46676 (4.76442s) +

    +
    +

    + 12.1795 (11.1873s) +

    +
    +
    +
    +

    Table 1.26. Operator %(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.88485 (0.105552s) +

    +
    +

    + 2.00194 (0.203711s) +

    +
    +

    + 2.08202 (0.380096s) +

    +
    +

    + 2.12794 (0.752068s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.7474 (0.0978544s) +

    +
    +

    + 1.88457 (0.191768s) +

    +
    +

    + 2.0306 (0.37071s) +

    +
    +

    + 2.0851 (0.736929s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (0.0560001s) +

    +
    +

    + 1 (0.101757s) +

    +
    +

    + 1 (0.182561s) +

    +
    +

    + 1 (0.353426s) +

    +
    +

    + tommath_int +

    +
    +

    + 30.4466 (1.70501s) +

    +
    +

    + 22.2997 (2.26915s) +

    +
    +

    + 19.6199 (3.58184s) +

    +
    +

    + 24.0694 (8.50676s) +

    +
    +
    +
    +

    Table 1.27. Operator <<

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.20362 (0.0224696s) +

    +
    +

    + 1.08555 (0.0294403s) +

    +
    +

    + 1 (0.0360516s) +

    +
    +

    + 1.07177 (0.0523935s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0186683s) +

    +
    +

    + 1 (0.0271201s) +

    +
    +

    + 1.02126 (0.036818s) +

    +
    +

    + 1 (0.0488848s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.36706 (0.0255207s) +

    +
    +

    + 1.12042 (0.0303858s) +

    +
    +

    + 1.24359 (0.0448335s) +

    +
    +

    + 1.40143 (0.0685085s) +

    +
    +

    + tommath_int +

    +
    +

    + 2.09357 (0.0390833s) +

    +
    +

    + 2.4569 (0.0666312s) +

    +
    +

    + 2.63592 (0.0950291s) +

    +
    +

    + 3.43638 (0.167987s) +

    +
    +
    +
    +

    Table 1.28. Operator >>

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.33649 (0.0210319s) +

    +
    +

    + 1.12919 (0.0266135s) +

    +
    +

    + 1.10413 (0.0307184s) +

    +
    +

    + 1.09267 (0.0399373s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0157367s) +

    +
    +

    + 1 (0.0235686s) +

    +
    +

    + 1 (0.0278214s) +

    +
    +

    + 1.05198 (0.0384501s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.72135 (0.0270884s) +

    +
    +

    + 1.2078 (0.0284661s) +

    +
    +

    + 1.16066 (0.0322912s) +

    +
    +

    + 1 (0.0365503s) +

    +
    +

    + tommath_int +

    +
    +

    + 15.4381 (0.242945s) +

    +
    +

    + 11.8797 (0.279987s) +

    +
    +

    + 10.9043 (0.303374s) +

    +
    +

    + 14.0762 (0.514491s) +

    +
    +
    +
    +

    Table 1.29. Operator &

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.65829 (0.0314059s) +

    +
    +

    + 1.42198 (0.0390384s) +

    +
    +

    + 1.48578 (0.0498903s) +

    +
    +

    + 1.51243 (0.0770342s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0189387s) +

    +
    +

    + 1 (0.0274536s) +

    +
    +

    + 1 (0.0335786s) +

    +
    +

    + 1 (0.0509341s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.80248 (0.0530755s) +

    +
    +

    + 2.39752 (0.0658206s) +

    +
    +

    + 2.66009 (0.089322s) +

    +
    +

    + 2.73942 (0.13953s) +

    +
    +

    + tommath_int +

    +
    +

    + 6.95432 (0.131706s) +

    +
    +

    + 5.4059 (0.148412s) +

    +
    +

    + 4.56887 (0.153417s) +

    +
    +

    + 6.5696 (0.334616s) +

    +
    +
    +
    +

    Table 1.30. Operator &(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.63285 (0.0472296s) +

    +
    +

    + 1.43344 (0.0588492s) +

    +
    +

    + 1.33141 (0.0724386s) +

    +
    +

    + 1.21353 (0.104144s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0289247s) +

    +
    +

    + 1 (0.0410546s) +

    +
    +

    + 1 (0.0544075s) +

    +
    +

    + 1 (0.0858187s) +

    +
    +

    + gmp_int +

    +
    +

    + 5.24478 (0.151704s) +

    +
    +

    + 3.81907 (0.15679s) +

    +
    +

    + 2.77979 (0.151242s) +

    +
    +

    + 1.84209 (0.158086s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.7257 (0.339163s) +

    +
    +

    + 8.6379 (0.354625s) +

    +
    +

    + 6.90411 (0.375636s) +

    +
    +

    + 7.63253 (0.655013s) +

    +
    +
    +
    +

    Table 1.31. Operator ^

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.39325 (0.0297525s) +

    +
    +

    + 1.28821 (0.0385005s) +

    +
    +

    + 1.18843 (0.0492426s) +

    +
    +

    + 1.07724 (0.0758668s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0213547s) +

    +
    +

    + 1 (0.0298868s) +

    +
    +

    + 1 (0.041435s) +

    +
    +

    + 1 (0.070427s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.28582 (0.048813s) +

    +
    +

    + 2.03478 (0.0608129s) +

    +
    +

    + 2.05655 (0.0852131s) +

    +
    +

    + 1.92381 (0.135488s) +

    +
    +

    + tommath_int +

    +
    +

    + 6.17078 (0.131775s) +

    +
    +

    + 4.8567 (0.145151s) +

    +
    +

    + 3.64659 (0.151097s) +

    +
    +

    + 4.78192 (0.336776s) +

    +
    +
    +
    +

    Table 1.32. Operator ^(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.89396 (0.0383127s) +

    +
    +

    + 1.64269 (0.043417s) +

    +
    +

    + 1.5386 (0.0477162s) +

    +
    +

    + 1.32247 (0.0568053s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0202288s) +

    +
    +

    + 1 (0.0264305s) +

    +
    +

    + 1 (0.0310128s) +

    +
    +

    + 1 (0.0429539s) +

    +
    +

    + gmp_int +

    +
    +

    + 7.01953 (0.141997s) +

    +
    +

    + 5.47513 (0.14471s) +

    +
    +

    + 4.6627 (0.144603s) +

    +
    +

    + 3.59601 (0.154463s) +

    +
    +

    + tommath_int +

    +
    +

    + 16.2706 (0.329134s) +

    +
    +

    + 12.9494 (0.342258s) +

    +
    +

    + 11.3305 (0.35139s) +

    +
    +

    + 14.1712 (0.608709s) +

    +
    +
    +
    +

    Table 1.33. Operator |

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.34742 (0.0296944s) +

    +
    +

    + 1.25923 (0.0384846s) +

    +
    +

    + 1.20517 (0.0493908s) +

    +
    +

    + 1.10536 (0.0761343s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0220379s) +

    +
    +

    + 1 (0.030562s) +

    +
    +

    + 1 (0.0409823s) +

    +
    +

    + 1 (0.0688775s) +

    +
    +

    + gmp_int +

    +
    +

    + 2.14429 (0.0472558s) +

    +
    +

    + 1.95901 (0.0598712s) +

    +
    +

    + 2.07584 (0.0850728s) +

    +
    +

    + 1.94265 (0.133805s) +

    +
    +

    + tommath_int +

    +
    +

    + 5.98286 (0.13185s) +

    +
    +

    + 4.65705 (0.142329s) +

    +
    +

    + 3.85812 (0.158115s) +

    +
    +

    + 4.81524 (0.331662s) +

    +
    +
    +
    +

    Table 1.34. Operator |(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.40808 (0.0389721s) +

    +
    +

    + 1.65035 (0.0437872s) +

    +
    +

    + 1.51667 (0.0466144s) +

    +
    +

    + 1.37806 (0.0582842s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.0276775s) +

    +
    +

    + 1 (0.026532s) +

    +
    +

    + 1 (0.0307348s) +

    +
    +

    + 1 (0.0422945s) +

    +
    +

    + gmp_int +

    +
    +

    + 5.31451 (0.147092s) +

    +
    +

    + 5.37333 (0.142565s) +

    +
    +

    + 4.86508 (0.149527s) +

    +
    +

    + 3.74364 (0.158335s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.9312 (0.330226s) +

    +
    +

    + 12.943 (0.343403s) +

    +
    +

    + 11.4457 (0.35178s) +

    +
    +

    + 14.4462 (0.610997s) +

    +
    +
    +
    +

    Table 1.35. Operator gcd

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.82514 (4.45586s) +

    +
    +

    + 1.75955 (10.1748s) +

    +
    +

    + 1.87025 (25.23s) +

    +
    +

    + 2.11453 (68.8556s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1.57965 (3.85654s) +

    +
    +

    + 1.67404 (9.68027s) +

    +
    +

    + 1.8405 (24.8287s) +

    +
    +

    + 2.27588 (74.1096s) +

    +
    +

    + gmp_int +

    +
    +

    + 1 (2.44138s) +

    +
    +

    + 1 (5.78259s) +

    +
    +

    + 1 (13.4902s) +

    +
    +

    + 1 (32.5631s) +

    +
    +

    + tommath_int +

    +
    +

    + 5.01357 (12.24s) +

    +
    +

    + 4.38161 (25.337s) +

    +
    +

    + 4.08681 (55.1319s) +

    +
    +

    + 4.01045 (130.593s) +

    +
    +
    +
    +

    Table 1.36. Operator str

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_int +

    +
    +

    + 1.46421 (0.00195137s) +

    +
    +

    + 1.21669 (0.00319216s) +

    +
    +

    + 1.25041 (0.00765237s) +

    +
    +

    + 1.53339 (0.0218096s) +

    +
    +

    + cpp_int(fixed) +

    +
    +

    + 1 (0.00133271s) +

    +
    +

    + 1 (0.00262366s) +

    +
    +

    + 1.0109 (0.00618661s) +

    +
    +

    + 1.24429 (0.0176978s) +

    +
    +

    + gmp_int +

    +
    +

    + 1.7777 (0.00236916s) +

    +
    +

    + 1.27408 (0.00334274s) +

    +
    +

    + 1 (0.00611991s) +

    +
    +

    + 1 (0.0142232s) +

    +
    +

    + tommath_int +

    +
    +

    + 11.9797 (0.0159654s) +

    +
    +

    + 18.3349 (0.0481046s) +

    +
    +

    + 18.3681 (0.112411s) +

    +
    +

    + 25.0355 (0.356085s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html new file mode 100644 index 00000000..6736d065 --- /dev/null +++ b/doc/html/boost_multiprecision/perf/rational_performance.html @@ -0,0 +1,905 @@ + + + +Rational Type Perfomance + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Note that these tests are carefully designed to test performance of the underlying + algorithms and not memory allocation or variable copying. As usual, performance + results should be taken with a healthy dose of scepticism, and real-world + performance may vary widely depending upon the specifics of the program. + In each table relative times are given first, with the best performer given + a score of 1. Total actual times are given in brackets, measured in seconds + for 500000 operations. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    +

    Table 1.37. Operator +

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.91758 (18.1263s) +

    +
    +

    + 6.60754 (44.1182s) +

    +
    +

    + 6.65334 (103.169s) +

    +
    +

    + 6.44717 (244.055s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (3.06312s) +

    +
    +

    + 1 (6.67695s) +

    +
    +

    + 1 (15.5064s) +

    +
    +

    + 1 (37.8546s) +

    +
    +
    +
    +

    Table 1.38. Operator +(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 3.98512 (2.67249s) +

    +
    +

    + 4.24335 (3.04309s) +

    +
    +

    + 4.65009 (3.83046s) +

    +
    +

    + 5.45832 (5.08346s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.670618s) +

    +
    +

    + 1 (0.717144s) +

    +
    +

    + 1 (0.823739s) +

    +
    +

    + 1 (0.931322s) +

    +
    +
    +
    +

    Table 1.39. Operator -

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.91504 (18.2374s) +

    +
    +

    + 6.55676 (43.8659s) +

    +
    +

    + 6.66239 (103.481s) +

    +
    +

    + 6.47224 (244.887s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (3.08322s) +

    +
    +

    + 1 (6.69018s) +

    +
    +

    + 1 (15.5321s) +

    +
    +

    + 1 (37.8365s) +

    +
    +
    +
    +

    Table 1.40. Operator -(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 3.96173 (2.66785s) +

    +
    +

    + 4.36532 (3.09023s) +

    +
    +

    + 4.59363 (3.74494s) +

    +
    +

    + 5.43075 (5.09156s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.673405s) +

    +
    +

    + 1 (0.707904s) +

    +
    +

    + 1 (0.815246s) +

    +
    +

    + 1 (0.937541s) +

    +
    +
    +
    +

    Table 1.41. Operator *

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.59286 (32.3559s) +

    +
    +

    + 6.54125 (82.4247s) +

    +
    +

    + 6.8815 (197.198s) +

    +
    +

    + 6.84066 (473.057s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (5.78521s) +

    +
    +

    + 1 (12.6008s) +

    +
    +

    + 1 (28.6562s) +

    +
    +

    + 1 (69.1537s) +

    +
    +
    +
    +

    Table 1.42. Operator *(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 2.70193 (3.1466s) +

    +
    +

    + 3.10134 (3.79056s) +

    +
    +

    + 3.659 (4.93935s) +

    +
    +

    + 4.61372 (6.89845s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (1.16457s) +

    +
    +

    + 1 (1.22223s) +

    +
    +

    + 1 (1.34992s) +

    +
    +

    + 1 (1.4952s) +

    +
    +
    +
    +

    Table 1.43. Operator /

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 4.36846 (63.9498s) +

    +
    +

    + 5.52565 (145.045s) +

    +
    +

    + 6.18331 (328.069s) +

    +
    +

    + 6.49822 (784.806s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (14.639s) +

    +
    +

    + 1 (26.2494s) +

    +
    +

    + 1 (53.0571s) +

    +
    +

    + 1 (120.772s) +

    +
    +
    +
    +

    Table 1.44. Operator /(int)

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 2.26643 (3.13785s) +

    +
    +

    + 2.57125 (3.76931s) +

    +
    +

    + 3.20872 (5.06758s) +

    +
    +

    + 4.02177 (7.17803s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (1.38449s) +

    +
    +

    + 1 (1.46594s) +

    +
    +

    + 1 (1.57931s) +

    +
    +

    + 1 (1.78479s) +

    +
    +
    +
    +

    Table 1.45. Operator str

    +
    +++++++ + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + 128 Bits +

    +
    +

    + 256 Bits +

    +
    +

    + 512 Bits +

    +
    +

    + 1024 Bits +

    +
    +

    + cpp_rational +

    +
    +

    + 5.40493 (0.0199393s) +

    +
    +

    + 8.55089 (0.0511907s) +

    +
    +

    + 9.91026 (0.118839s) +

    +
    +

    + 9.93546 (0.285367s) +

    +
    +

    + mpq_rational +

    +
    +

    + 1 (0.00368909s) +

    +
    +

    + 1 (0.00598659s) +

    +
    +

    + 1 (0.0119915s) +

    +
    +

    + 1 (0.028722s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html new file mode 100644 index 00000000..4dd0d5ef --- /dev/null +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -0,0 +1,278 @@ + + + +Floating Point Real World Tests + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + These tests test the total time taken to execute all of Boost.Math's test + cases for these functions. In each case the best performing library gets + a relative score of 1, with the total execution time given in brackets. The + first three libraries listed are the various floating point types provided + by this library, while for comparison, two popular C++ front-ends to MPFR ( mpfr_class + and mpreal) are + also shown. +

    +

    + Test code was compiled with Microsoft Visual Studio 2010 with all optimisations + turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. + The tests were run on 32-bit Windows Vista machine. +

    +
    +

    Table 1.6. Bessel Function Performance

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + mpfr_float +

    +
    +

    + 1.0 (6.472s) +

    +
    +

    + 1.193 (10.154s) +

    +
    +

    + mpf_float +

    +
    +

    + 1.801 (11.662s) +

    +
    +

    + 1.0(8.511s) +

    +
    +

    + cpp_dec_float +

    +
    +

    + 3.13 (20.285s) +

    +
    +

    + 2.46 (21.019s) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.001 (6.480s) +

    +
    +

    + 1.15(9.805s) +

    +
    +

    + mpreal +

    +
    +

    + 1.542 (9.981s) +

    +
    +

    + 1.61 (13.702s) +

    +
    +
    +
    +

    Table 1.7. Non-Central T Distribution Performance

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Library +

    +
    +

    + 50 Decimal Digits +

    +
    +

    + 100 Decimal Digits +

    +
    +

    + mpfr_float +

    +
    +

    + 1.308 (258.09s) +

    +
    +

    + 1.30 (516.74s) +

    +
    +

    + mpf_float +

    +
    +

    + 1.0 (197.30s) +

    +
    +

    + 1.0(397.30s) +

    +
    +

    + cpp_dec_float +

    +
    +

    + 1.695 (334.50s) +

    +
    +

    + 2.68 (1064.53s) +

    +
    +

    + mpfr_class +

    +
    +

    + 1.35 (266.39s) +

    +
    +

    + 1.323 (525.74s) +

    +
    +

    + mpreal +

    +
    +

    + 1.75 (346.64s) +

    +
    +

    + 1.635 (649.94s) +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html new file mode 100644 index 00000000..35ad59f4 --- /dev/null +++ b/doc/html/boost_multiprecision/ref.html @@ -0,0 +1,44 @@ + + + +Reference + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html new file mode 100644 index 00000000..3bf6b60f --- /dev/null +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -0,0 +1,2295 @@ + + + +Backend Requirements + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + The requirements on the Backend + template argument to mp_number + are split up into compulsory requirements, and optional requirements that + are either to improve performance or provide optional features. +

    +

    + In the following tables, type B is the Backend + template arument to mp_number, + b and b2 + are a variables of type B, cb + and cb2 are constant variables + of type B, a is a variable + of Arithmetic type, s is + a variable of type const char*, ui + is a variable of type unsigned, + bb is a variable of type + bool, pa + is a variable of type pointer-to-arithmetic-type, exp + is a variable of type B::exp_type, pexp + is a variable of type B::exp_type*, + B2 is another type that meets these requirements, b2 is a variable of type + B2. +

    +
    +

    Table 1.4. Compulsory Requirements on the Backend type.

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Return Type +

    +
    +

    + Comments +

    +
    +

    + B::signed_types +

    +
    +

    + mpl::list<type-list> +

    +
    +

    + A list of signed integral types that can be assigned to type B. + The types shall be listed in order of size, smallest first, and + shall terminate in the type that is std::intmax_t. +

    +
    +

    + B::unsigned_types +

    +
    +

    + mpl::list<type-list> +

    +
    +

    + A list of unsigned integral types that can be assigned to type + B. The types shall be listed in order of size, smallest first, + and shall terminate in the type that is std::uintmax_t. +

    +
    +

    + B::float_types +

    +
    +

    + mpl::list<type-list> +

    +
    +

    + A list of floating-point types that can be assigned to type B.The + types shall be listed in order of size, smallest first, and shall + terminate in type long double. +

    +
    +

    + B::exponent_type +

    +
    +

    + A signed integral type. +

    +
    +

    + The type of the exponent of type B. +

    +
    +

    + B() +

    +
    + +

    + Default constructor. +

    +
    +

    + B(cb) +

    +
    + +

    + Copy Constructor. +

    +
    +

    + b = + b +

    +
    +

    + B& +

    +
    +

    + Assignment operator. +

    +
    +

    + b = + a +

    +
    +

    + B& +

    +
    +

    + Assignment from an Arithmetic type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + b = + s +

    +
    +

    + B& +

    +
    +

    + Assignment from a string. +

    +
    +

    + b.swap(b) +

    +
    +

    + void +

    +
    +

    + Swaps the contents of its arguments. +

    +
    +

    + cb.str(ui, + bb) +

    +
    +

    + std::string +

    +
    +

    + Returns the string representation of b + with ui digits + and in scientific format if bb + is true. If ui is zero, then returns as many + digits as are required to reconstruct the original value. +

    +
    +

    + b.negate() +

    +
    +

    + void +

    +
    +

    + Negates b. +

    +
    +

    + cb.compare(cb2) +

    +
    +

    + int +

    +
    +

    + Compares cb and + cb2, returns a + value less than zero if cb + < cb2, + a value greater than zero if cb + > cb2 + and zero if cb == cb2. +

    +
    +

    + cb.compare(a) +

    +
    +

    + int +

    +
    +

    + Compares cb and + a, returns a value + less than zero if cb + < a, + a value greater than zero if cb + > a + and zero if cb == a. + The type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_add(b, + cb) +

    +
    +

    + void +

    +
    +

    + Adds cb to b. +

    +
    +

    + eval_subtract(b, + cb) +

    +
    +

    + void +

    +
    +

    + Subtracts cb from + b. +

    +
    +

    + eval_multiply(b, + cb) +

    +
    +

    + void +

    +
    +

    + Multiplies b by + cb. +

    +
    +

    + eval_divide(b, + cb) +

    +
    +

    + void +

    +
    +

    + Divides b by cb. +

    +
    +

    + eval_modulus(b, + cb) +

    +
    +

    + void +

    +
    +

    + Computes b %= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_bitwise_and(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes b &= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_bitwise_or(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes b |= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_bitwise_xor(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes b ^= + cb, only required when + B is an integer + type. +

    +
    +

    + eval_complement(b, cb) +

    +
    +

    + void +

    +
    +

    + Computes the ones-complement of cb + and stores the result in b, + only required when B + is an integer type. +

    +
    +

    + eval_left_shift(b, ui) +

    +
    +

    + void +

    +
    +

    + Computes b <<= + ui, only required when + B is an integer + type. +

    +
    +

    + eval_right_shift(b, ui) +

    +
    +

    + void +

    +
    +

    + Computes b >>= + ui, only required when + B is an integer + type. +

    +
    +

    + eval_convert_to(pa, cb) +

    +
    +

    + void +

    +
    +

    + Converts cb to + the type of *pa + and store the result in *pa. Type B + shall support conversion to at least types std::intmax_t, + std::uintmax_t and long + long. Conversion to other + arithmetic types can then be synthesised using other operations. + Conversions to other types are entirely optional. +

    +
    +

    + eval_frexp(b, + cb, + pexp) +

    +
    +

    + void +

    +
    +

    + Stores values in b + and *pexp + such that the value of cb + is b * 2*pexp, only required when B + is a floating-point type. +

    +
    +

    + eval_ldexp(b, + cb, + exp) +

    +
    +

    + void +

    +
    +

    + Stores a value in b + that is cb * 2exp, only required when B + is a floating-point type. +

    +
    +

    + eval_floor(b, + cb) +

    +
    +

    + void +

    +
    +

    + Stores the floor of cb + in b, only required + when B is a floating-point + type. +

    +
    +

    + eval_ceil(b, + cb) +

    +
    +

    + void +

    +
    +

    + Stores the ceiling of cb + in b, only required + when B is a floating-point + type. +

    +
    +

    + eval_sqrt(b, + cb) +

    +
    +

    + void +

    +
    +

    + Stores the square root of cb + in b, only required + when B is a floating-point + type. +

    +
    +

    + boost::multiprecision::number_category<B>::type +

    +
    +

    + mpl::int_<N> +

    +
    +

    + N is one of the + values number_kind_integer, + number_kind_floating_point, + number_kind_rational + or number_kind_fixed_point. + Defaults to number_kind_floating_point. +

    +
    +
    +
    +

    Table 1.5. Optional Requirements on the Backend Type

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Expression +

    +
    +

    + Returns +

    +
    +

    + Comments +

    +
    +

    + B(b2) +

    +
    +

    + B +

    +
    +

    + Copy constructor from a different back-end type. +

    +
    +

    + b = + b2 +

    +
    +

    + b& +

    +
    +

    + Assignment operator from a different back-end type. +

    +
    +

    + assign_components(b, a, a) +

    +
    +

    + void +

    +
    +

    + Assigns to b the + two components in the following arguments. Only applies to rational + and complex number types. +

    +
    +

    + assign_components(b, b2, b2) +

    +
    +

    + void +

    +
    +

    + Assigns to b the + two components in the following arguments. Only applies to rational + and complex number types. +

    +
    +

    + eval_add(b, + a) +

    +
    +

    + void +

    +
    +

    + Adds a to b. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. +

    +
    +

    + eval_subtract(b, + a) +

    +
    +

    + void +

    +
    +

    + Subtracts a from + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_multiply(b, + a) +

    +
    +

    + void +

    +
    +

    + Multiplies b by + a. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_divide(b, + a) +

    +
    +

    + void +

    +
    +

    + Divides b by a. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. +

    +
    +

    + eval_modulus(b, + a) +

    +
    +

    + void +

    +
    +

    + Computes b %= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_and(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b &= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_or(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b |= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_xor(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b ^= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_add(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Add cb to cb2 and stores the result in + b. +

    +
    +

    + eval_subtract(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Subtracts cb2 from + cb and stores the + result in b. +

    +
    +

    + eval_multiply(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Multiplies cb by + cb2 and stores + the result in b. +

    +
    +

    + eval_divide(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Divides cb by + cb2 and stores + the result in b. +

    +
    +

    + eval_add(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Add cb to a and stores the result in b. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. +

    +
    +

    + eval_subtract(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Subtracts a from + cb and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_multiply(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Multiplies cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_divide(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Divides cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_modulus(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb % + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_bitwise_and(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb & + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_bitwise_or(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb | + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_bitwise_xor(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb ^ + cb2 and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_add(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Add a to cb and stores the result in + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_subtract(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Subtracts cb from + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_multiply(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Multiplies a by + cb and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_divide(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Divides a by cb and stores the result in + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_modulus(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Computes cb % + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_and(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb & + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_or(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb | + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_xor(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb ^ + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_modulus(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Computes cb % + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_and(b, a, cb) +

    +
    +

    + void +

    +
    +

    + Computes cb & + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_or(b, a, cb) +

    +
    +

    + void +

    +
    +

    + Computes cb | + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_bitwise_xor(b, a, cb) +

    +
    +

    + void +

    +
    +

    + Computes a ^ + cb and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    +
    +

    + eval_left_shift(b, cb, ui) +

    +
    +

    + void +

    +
    +

    + Computes cb << + ui and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_right_shift(b, cb, ui) +

    +
    +

    + void +

    +
    +

    + Computes cb >> + ui and stores the result + in b, only required + when B is an integer + type. +

    +
    +

    + eval_increment(b) +

    +
    +

    + void +

    +
    +

    + Increments the value of b + by one. +

    +
    +

    + eval_decrement(b) +

    +
    +

    + void +

    +
    +

    + Decrements the value of b + by one. +

    +
    +

    + eval_is_zero(cb) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb is zero, otherwise false +

    +
    +

    + eval_get_sign(cb) +

    +
    +

    + int +

    +
    +

    + Returns a value < zero if cb + is negative, a value > zero if cb + is positive, and zero if cb + is zero. +

    +
    +

    + eval_abs(b, + cb) +

    +
    +

    + void +

    +
    +

    + Set b to the absolute + value of cb. +

    +
    +

    + eval_fabs(b, + cb) +

    +
    +

    + void +

    +
    +

    + Set b to the absolute + value of cb. +

    +
    +

    + eval_fpclassify(cb) +

    +
    +

    + int +

    +
    +

    + Returns one of the same values returned by std::fpclassify. + Only required when B + is an floating-point type. +

    +
    +

    + eval_trunc(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::trunc + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_round(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::round + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_exp(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_log(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::log + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_log10(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::log10 + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_sin(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::sin + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_cos(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::cos + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_tan(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_asin(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::asin + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_acos(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::acos + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_atan(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::atan + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_sinh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::sinh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_cosh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::cosh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_tanh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::tanh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_fmod(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::fmod + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_pow(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::pow + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_atan2(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::atan + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. +

    +
    +

    + eval_qr(cb, + cb2, + b, + b2) +

    +
    +

    + void +

    +
    +

    + Sets b to the result + of cb / + cb2 and b2 to the result of cb % + cb2. Only required when + B is an integer + type. +

    +
    +

    + eval_integer_modulus(cb, ui) +

    +
    +

    + unsigned +

    +
    +

    + Returns the result of cb + % ui. + Only required when B + is an integer type. +

    +
    +

    + eval_lsb(cb) +

    +
    +

    + unsigned +

    +
    +

    + Returns the index of the least significant bit that is set. Only + required when B + is an integer type. +

    +
    +

    + eval_bit_test(cb, + ui) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb + has bit ui set. + Only required when B + is an integer type. +

    +
    +

    + eval_bit_set(b, + ui) +

    +
    +

    + void +

    +
    +

    + Sets the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_bit_unset(b, ui) +

    +
    +

    + void +

    +
    +

    + Unsets the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_bit_flip(b, + ui) +

    +
    +

    + void +

    +
    +

    + Flips the bit at index ui + in b. Only required + when B is an integer + type. +

    +
    +

    + eval_gcd(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Sets b to the greatest + common divisor of cb + and cb2. Only required + when B is an integer + type. +

    +
    +

    + eval_lcm(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Sets b to the least + common multiple of cb + and cb2. Only required + when B is an integer + type. +

    +
    +
    +
    + + + + + +
    [Note]Note

    + The non-member functions are all named with an "eval_" prefix + to avoid conflicts with template classes of the same name - in point of + fact this naming convention shouldn't be necessary, but rather works around + some compiler bugs. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html new file mode 100644 index 00000000..9d34b1e6 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html @@ -0,0 +1,61 @@ + + + +cpp_dec_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class cpp_dec_float;
    +
    +typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50;
    +typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100;
    +
    +}} // namespaces
    +
    +

    + Class template cpp_dec_float + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The class takes a single template parameter - Digits10 + - which is the number of decimal digits precision the type should support. + Note that this type does not ever perform any dynamic memory allocation, + as a result the Digits10 + template argument should not be set too high or the classes size will grow + unreasonably large. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html new file mode 100644 index 00000000..40530e86 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -0,0 +1,99 @@ + + + +cpp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned MinBits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    +struct cpp_int_backend;
    +
    +typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    +
    +// Fixed precision unsigned types:
    +typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    +typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    +typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    +typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
    +
    +// Fixed precision signed types:
    +typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    +typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    +typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    +typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
    +
    +}} // namespaces
    +
    +

    + Class template cpp_int_backend + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The template arguments are: +

    +
    +

    +
    +
    Argument
    +

    + Meaning +

    +
    MinBits
    +

    + The number of Bits to reserve inside the class's internal cache. When + constructing a value, the object will use this internal cache if possible + before resorting to dynamic memory allocation. When this value is zero, + then the size of the internal cache is 2*sizeof(void*)*CHAR_BIT. + When the Allocator argument is void, + then this parameter determines the precision of the type. +

    +
    Signed
    +

    + When true the type is + signed, otherwise unsigned. Note that unsigned types are currently + only supported when the Allocator parameter is void. +

    +
    Allocator
    +

    + The allocator used for dynamic memory allocation. This parameter can + be void, in which case + no dymanic memory will ever be allocated. +

    +
    +
    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/gmp_int_ref.html b/doc/html/boost_multiprecision/ref/gmp_int_ref.html new file mode 100644 index 00000000..71dfb0ae --- /dev/null +++ b/doc/html/boost_multiprecision/ref/gmp_int_ref.html @@ -0,0 +1,51 @@ + + + +gmp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +class gmp_int;
    +
    +typedef mp_number<gmp_int >         mpz_int;
    +
    +}} // namespaces
    +
    +

    + Class template gmp_int fulfills + all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html new file mode 100644 index 00000000..b883aa18 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -0,0 +1,695 @@ + + + +mp_number + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    + + Synopsis +
    +
    namespace boost{ namespace multiprecision{
    +
    +template <class Backend, bool ExpressionTemplates = true>
    +class mp_number
    +{
    +   mp_number();
    +   mp_number(see-below);
    +   mp_number& operator=(see-below);
    +
    +   // Member operators
    +   mp_number& operator+=(const see-below&);
    +   mp_number& operator-=(const see-below&);
    +   mp_number& operator*=(const see-below&);
    +   mp_number& operator/=(const see-below&);
    +   mp_number& operator++();
    +   mp_number& operator--();
    +   mp_number  operator++(int);
    +   mp_number  operator--(int);
    +
    +   mp_number& operator%=(const see-below&);
    +   mp_number& operator&=(const see-below&);
    +   mp_number& operator|=(const see-below&);
    +   mp_number& operator^=(const see-below&);
    +   mp_number& operator<<=(const integer-type&);
    +   mp_number& operator>>=(const integer-type&);
    +
    +   // Use in Boolean context:
    +   operator convertible-to-bool-type()const;
    +   // swap:
    +   void swap(mp_number& other);
    +   // Sign:
    +   bool is_zero()const;
    +   int sign()const;
    +   // string conversion:
    +   std::string str()const;
    +   // Generic conversion mechanism
    +   template <class T>
    +   T convert_to()const;
    +   // precision control:
    +   static unsigned default_precision();
    +   static void default_precision(unsigned digits10);
    +   unsigned precision()const;
    +   void precision(unsigned digits10);
    +   // Comparison:
    +   int compare(const mp_number<Backend>& o)const;
    +   template <class V>
    +   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
    +   // Access to the underlying implementation:
    +   Backend& backend();
    +   const Backend& backend()const;
    +};
    +
    +// Non member operators:
    +unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    +// Integer only operations:
    +unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    +unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    +// Comparison operators:
    +bool operator==(const see-below&, const see-below&);
    +bool operator!=(const see-below&, const see-below&);
    +bool operator< (const see-below&, const see-below&);
    +bool operator> (const see-below&, const see-below&);
    +bool operator<=(const see-below&, const see-below&);
    +bool operator>=(const see-below&, const see-below&);
    +
    +// Swap:
    +template <class Backend, bool ExpressionTemplates>
    +void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    +
    +// iostream support:
    +template <class Backend, bool ExpressionTemplates>
    +std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    +std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
    +template <class Backend, bool ExpressionTemplates>
    +std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r);
    +
    +// Non-member function standard library support:
    +unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    +
    +unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    +unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    +unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +
    +// Traits support:
    +template <class T>
    +struct component_type;
    +template <class T>
    +struct number_category;
    +
    +// Integer specific functions:
    +template <class Backend, bool ExpressionTemplates>
    +bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    +               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    +template <class Integer>
    +Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    +unsigned lsb(const mp_number-or-expression-template-type& x);
    +template <class Backend, class ExpressionTemplates>
    +bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +template <class Engine>
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    +
    +// Rational number support:
    +typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    +typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    +
    +}} // namespaces
    +
    +namespace boost{ namespace math{
    +
    +// Boost.Math interoperability functions:
    +int                                              fpclassify     (const mp_number-or-expression-template-type&, int);
    +bool                                             isfinite       (const mp_number-or-expression-template-type&, int);
    +bool                                             isnan          (const mp_number-or-expression-template-type&, int);
    +bool                                             isinf          (const mp_number-or-expression-template-type&, int);
    +bool                                             isnormal       (const mp_number-or-expression-template-type&, int);
    +
    +}} // namespaces
    +
    +// numeric_limits support:
    +namespace std{
    +
    +template <class Backend, bool ExpressionTemplates>
    +struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    +{
    +   /* Usual members here */
    +};
    +
    +}
    +
    +
    + + Description +
    +
    template <class Backend, bool ExpressionTemplates = true>
    +class mp_number;
    +
    +

    + Class mp_number has two template + arguments: +

    +
    +

    +
    +
    Backend
    +

    + The actual arithmetic back-end that does all the work. +

    +
    ExpressionTemplates
    +

    + A Boolean value: when true, then expression templates are enabled, + otherwise they are disabled. +

    +
    +
    +
    mp_number();
    +mp_number(see-below);
    +mp_number& operator=(see-below);
    +
    +

    + Type mp_number is default + constructible, and both copy constructible and assignable from: +

    +
      +
    • + Itself. +
    • +
    • + An expression template which is the result of one of the arithmetic operators. +
    • +
    • + Any builtin arithmetic type. +
    • +
    • + A std::string or any type which is convertible + to const char*. +
    • +
    • + Any type that the Backend is constructible or assignable from. +
    • +
    +

    + In addition, if the type has multiple components (for example rational or + complex number types), then there is a two argument constructor: +

    +
    mp_number(arg1, arg2);
    +
    +

    + Where the two args must either be arithmetic types, or types that are convertible + to the two components of this. +

    +
    mp_number& operator+=(const see-below&);
    +mp_number& operator-=(const see-below&);
    +mp_number& operator*=(const see-below&);
    +mp_number& operator/=(const see-below&);
    +mp_number& operator++();
    +mp_number& operator--();
    +mp_number  operator++(int);
    +mp_number  operator--(int);
    +// Integer only operations:
    +mp_number& operator%=(const see-below&);
    +mp_number& operator&=(const see-below&);
    +mp_number& operator|=(const see-below&);
    +mp_number& operator^=(const see-below&);
    +mp_number& operator<<=(const integer-type&);
    +mp_number& operator>>=(const integer-type&);
    +
    +

    + These operators all take their usual arithmetic meanings. +

    +

    + The arguments to these operators is either: +

    +
      +
    • + Another mp_number<Backend, + ExpressionTemplates>. +
    • +
    • + A builtin arithmetic type. +
    • +
    • + An expression template derived from mp_number<Backend>. +
    • +
    +

    + For the left and right shift operations, the argument must be a builtin integer + type with a positive value (negative values result in a std::runtime_error + being thrown). +

    +
    operator convertible-to-bool-type()const;
    +
    +

    + Returns an unmentionable-type that is usable in Boolean + contexts (this allows mp_number + to be used in any Boolean context - if statements, conditional statements, + or as an argument to a logical operator - without type mp_number + being convertible to type bool. +

    +

    + This operator also enables the use of mp_number + with any of the following operators: !, + ||, && + and ?:. +

    +
    void swap(mp_number& other);
    +
    +

    + Swaps *this + with other. +

    +
    bool is_zero()const;
    +
    +

    + Returns true is *this is zero, + otherwise false. +

    +
    int sign()const;
    +
    +

    + Returns a value less than zero if *this is negative, a value greater than zero + if *this + is positive, and zero if *this + is zero. +

    +
    std::string str(unsigned precision, bool scientific = true)const;
    +
    +

    + Returns the number formatted as a string, with at least precision + digits, and in scientific format if scientific is true. +

    +
    template <class T>
    +T convert_to()const;
    +
    +

    + Provides a generic conversion mechanism to convert *this to type T. + Type T may be any arithmetic + type. Optionally other types may also be supported by specific Backend types. +

    +
    static unsigned default_precision();
    +static void default_precision(unsigned digits10);
    +unsigned precision()const;
    +void precision(unsigned digits10);
    +
    +

    + These functions are only available if the Backend template parameter supports + runtime changes to precision. They get and set the default precision and + the precision of *this + respectively. +

    +
    int compare(const mp_number<Backend, ExpressionTemplates>& o)const;
    +template <class V>
    +typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
    +
    +

    + Returns: +

    +
      +
    • + A value less that 0 for *this < other +
    • +
    • + A value greater that 0 for *this > other +
    • +
    • + Zero for *this + == other +
    • +
    +
    Backend& backend();
    +const Backend& backend()const;
    +
    +

    + Returns the underlying back-end instance used by *this. +

    +
    + + Non-member + operators +
    +
    // Non member operators:
    +unmentionable-expression-template-type operator+(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator-(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator/(const see-below&, const see-below&);
    +// Integer only operations:
    +unmentionable-expression-template-type operator%(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator&(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator|(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator^(const see-below&, const see-below&);
    +unmentionable-expression-template-type operator<<(const see-below&, const integer-type&);
    +unmentionable-expression-template-type operator>>(const see-below&, const integer-type&);
    +// Comparison operators:
    +bool operator==(const see-below&, const see-below&);
    +bool operator!=(const see-below&, const see-below&);
    +bool operator< (const see-below&, const see-below&);
    +bool operator> (const see-below&, const see-below&);
    +bool operator<=(const see-below&, const see-below&);
    +bool operator>=(const see-below&, const see-below&);
    +
    +

    + These operators all take their usual arithmetic meanings. +

    +

    + The arguments to these functions must contain at least one of the following: +

    +
      +
    • + An mp_number. +
    • +
    • + An expression template type derived from mp_number. +
    • +
    +

    + In addition, one of the two arguments may be a builtin arithmetic type. +

    +

    + The return type of these operators is either: +

    +
      +
    • + An unmentionable-type expression template type when + ExpressionTemplates is + true. +
    • +
    • + Type mp_number<Backend, + false> + when ExpressionTemplates + is false. +
    • +
    • + Type bool if the operator + is a comparison operator. +
    • +
    +

    + Finally note that the second argument to the left and right shift operations + must be a builtin integer type, and that the argument must be positive (negative + arguments result in a std::runtime_error + being thrown). +

    +
    + + swap +
    +
    template <class Backend, ExpressionTemplates>
    +void swap(mp_number<Backend, ExpressionTemplates>& a, mp_number<Backend, ExpressionTemplates>& b);
    +
    +

    + Swaps a and b. +

    +
    + + Iostream + Support +
    +
    template <class Backend, bool ExpressionTemplates>
    +std::ostream& operator << (std::ostream& os, const mp_number<Backend, ExpressionTemplates>& r);
    +template <class Unspecified...>
    +std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
    +template <class Backend, bool ExpressionTemplates>
    +inline std::istream& operator >> (std::istream& is, mp_number<Backend, ExpressionTemplates>& r)
    +
    +

    + These operators provided formatted input-output operations on mp_number types, and expression templates + derived from them. +

    +

    + It's down to the back-end type to actually implement string conversion. However, + the back-ends provided with this library support all of the iostream formatting + flags, field width and precision settings. +

    +
    + + Non-member + standard library function support +
    +
    unmentionable-expression-template-type    abs    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fabs   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sqrt   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    floor  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ceil   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    trunc  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    itrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    ltrunc (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lltrunc(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    round  (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    iround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    lround (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    llround(const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    exp    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    log10    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cos    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sin    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tan    (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    acos   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    asin   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    cosh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    sinh   (const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    tanh   (const mp_number-or-expression-template-type&);
    +
    +unmentionable-expression-template-type    ldexp (const mp_number-or-expression-template-type&, int);
    +unmentionable-expression-template-type    frexp (const mp_number-or-expression-template-type&, int*);
    +unmentionable-expression-template-type    pow   (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    fmod  (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +unmentionable-expression-template-type    atan2 (const mp_number-or-expression-template-type&, const mp_number-or-expression-template-type&);
    +
    +

    + These functions all behave exactly as their standard library counterparts + do: their argument is either an instance of mp_number + or an expression template derived from it; If the argument is of type mp_number<Backend, false> + then that is also the return type, otherwise the return type is an expression + template. +

    +

    + These functions are normally implemented by the Backend type. However, default + versions are provided for Backend types that don't have native support for + these functions. Please note however, that this default support requires + the precision of the type to be a compile time constant - this means for + example that the GMP MPF Backend will + not work with these functions when that type is used at variable precision. +

    +

    + Also note that with the exception of abs + that these functions can only be used with floating-point Backend types. +

    +
    + + Traits + Class Support +
    +
    template <class T>
    +struct component_type;
    +
    +

    + If this is a type with mutiple components (for example rational or complex + types), then this trait has a single member type + that is the type of those components. +

    +
    template <class T>
    +struct number_category;
    +
    +

    + A traits class that inherits from mpl::int_<N> + where N is one of the enumerated + values number_kind_integer, + number_kind_floating_point, + number_kind_rational or + number_kind_fixed_point. +

    +
    + + Integer functions +
    +
    template <class Backend, bool ExpressionTemplates>
    +bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
    +               mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
    +
    +

    + Divides x by y and returns both the quotient and remainder. After the call + q = + x / y and r + = x % y. +

    +
    template <class Integer>
    +Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val);
    +
    +

    + Returns the absolute value of x + % val. +

    +
    unsigned lsb(const mp_number-or-expression-template-type& x);
    +
    +

    + Returns the index of the least significant bit that is set to 1. +

    +
    template <class Backend, class ExpressionTemplates>
    +bool bit_test(const mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Returns true if the bit at + index in val is set. +

    +
    template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_set(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Sets the bit at index in val, and + returns val. +

    +
    template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_unset(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Unsets the bit at index in val, + and returns val. +

    +
    template <class Backend, class ExpressionTemplates>
    +mp_number<Backend, ExpressionTemplates>& bit_flip(mp_number<Backend, ExpressionTemplates>& val, unsigned index);
    +
    +

    + Flips the bit at index in val, + and returns val. +

    +
    template <class Engine>
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const mp_number-or-expression-template-type& n, unsigned trials);
    +
    +

    + Tests to see if the number n is probably prime - the + test excludes the vast majority of composite numbers by excluding small prime + factors and performing a single Fermat test. Then performs trials + Miller-Rabin tests. Returns false + if n is definitely composite, or true + if n is probably prime with the probability of it being + composite less than 0.25^trials. +

    +
    + + Rational + Number Functions +
    +
    typename component_type<mp_number-or-expression-template-type>::type numerator  (const mp_number-or-expression-template-type&);
    +typename component_type<mp_number-or-expression-template-type>::type denominator(const mp_number-or-expression-template-type&);
    +
    +

    + These functions return the numerator and denominator of a rational number + respectively. +

    +
    + + Boost.Math + Interoperability Support +
    +
    namespace boost{ namespace math{
    +
    +int  fpclassify     (const mp_number-or-expression-template-type&, int);
    +bool isfinite       (const mp_number-or-expression-template-type&, int);
    +bool isnan          (const mp_number-or-expression-template-type&, int);
    +bool isinf          (const mp_number-or-expression-template-type&, int);
    +bool isnormal       (const mp_number-or-expression-template-type&, int);
    +
    +}} // namespaces
    +
    +

    + These floating-point classification functions behave exactly as their Boost.Math + equivalents. +

    +

    + Other Boost.Math functions and templates may also be specialized or overloaded + to ensure interoperability. +

    +
    + + std::numeric_limits + support +
    +
    namespace std{
    +
    +template <class Backend, ExpressionTemplates>
    +struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
    +{
    +   /* Usual members here */
    +};
    +
    +}
    +
    +

    + Class template std::numeric_limits is specialized for all instantiations + of mp_number whose precision + is known at compile time, plus those types whose precision is unlimited (though + it is much less useful in those cases). It is not specialized for types whose + precision can vary at compile time (such as mpf_float). +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mpf_ref.html b/doc/html/boost_multiprecision/ref/mpf_ref.html new file mode 100644 index 00000000..fd2d8f50 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/mpf_ref.html @@ -0,0 +1,67 @@ + + + +gmp_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class gmp_float;
    +
    +typedef mp_number<gmp_float<50> >    mpf_float_50;
    +typedef mp_number<gmp_float<100> >   mpf_float_100;
    +typedef mp_number<gmp_float<500> >   mpf_float_500;
    +typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    +typedef mp_number<gmp_float<0> >     mpf_float;
    +
    +}} // namespaces
    +
    +

    + Class template gmp_float + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The class takes a single template parameter - Digits10 + - which is the number of decimal digits precision the type should support. + When this parameter is zero, then the precision can be set at runtime via + mp_number::default_precision and mp_number::precision. + Note that this type does not in any way change the GMP library's global state + (for example it does not change the default precision of the mpf_t data type), + therefore you can safely mix this type with existing code that uses GMP, + and also mix gmp_floats of + differing precision. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mpfr_ref.html b/doc/html/boost_multiprecision/ref/mpfr_ref.html new file mode 100644 index 00000000..7588f301 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/mpfr_ref.html @@ -0,0 +1,67 @@ + + + +mpfr_float_backend + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class mpfr_float_backend;
    +
    +typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
    +typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
    +typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
    +typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
    +typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
    +
    +}} // namespaces
    +
    +

    + Class template mpfr_float_backend + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + The class takes a single template parameter - Digits10 + - which is the number of decimal digits precision the type should support. + When this parameter is zero, then the precision can be set at runtime via + mp_number::default_precision and mp_number::precision. + Note that this type does not in any way change the GMP or MPFR library's + global state (for example it does not change the default precision of the + mpfr_t data type), therefore you can safely mix this type with existing code + that uses GMP or MPFR, and also mix mpfr_float_backends + of differing precision. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/tom_int_ref.html b/doc/html/boost_multiprecision/ref/tom_int_ref.html new file mode 100644 index 00000000..95abdcbe --- /dev/null +++ b/doc/html/boost_multiprecision/ref/tom_int_ref.html @@ -0,0 +1,51 @@ + + + +tom_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +class tommath_int;
    +
    +typedef mp_number<tommath_int >         tom_int;
    +
    +}} // namespaces
    +
    +

    + Class template tommath_int + fulfills all of the requirements for a Backend + type. It's members and non-member functions are deliberately not documented: + these are considered implementation details that are subject to change. +

    +

    + More information on this type can be found in the tutorial. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html new file mode 100644 index 00000000..8b64cd8e --- /dev/null +++ b/doc/html/boost_multiprecision/tut.html @@ -0,0 +1,82 @@ + + + +Tutorial + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html new file mode 100644 index 00000000..b34da26c --- /dev/null +++ b/doc/html/boost_multiprecision/tut/conversions.html @@ -0,0 +1,106 @@ + + + +Constructing and Interconverting Between Number Types + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + All of the number types that are based on mp_number + have certain conversion rules in common. In particular: +

    +
    • + Any number type can be constructed (or assigned) from any builtin arithmetic + type: +
    +
    cpp_dec_float_50 df(0.5); // OK construction from double
    +cpp_int          i(450);  // OK constructs from signed int
    +
    +
    • + Any number type can be constructed (or assigned) from a const char* or a std::string: +
    +
    // pi to 50 places from a string:
    +cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    +// Integer type will automatically detect "0x" and "0" prefixes and parse the string accordingly:
    +cpp_int          i  = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000";
    +// Invalid input always results in a std::runtime_error being thrown:
    +i = std::string("3.14");
    +
    +
    • + Any number type will interoperate with the builtin type in arithmetic + expressions: +
    +
    // pi to 50 places from a string:
    +cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    +// Multiply by 2 - using an integer literal here is usually more efficient
    +// than constructing a temporary:
    +df *= 2;
    +
    +// There is a need to be careful with integer types though:
    +cpp_int i = 2;
    +// Ooops, this really just multiplies by 3:
    +i *= 3.14;
    +
    +
    • + Any number type can be streamed to and from the C++ iostreams: +
    +
    cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
    +// Now print at full precision:
    +std::cout << std::setprecision(std::numeric_limits<cpp_dec_float_50>::max_digits10)
    +   << df << std::endl
    +cpp_int i = 1;
    +i <<= 256;
    +// Now print in hex format with prefix:
    +std::cout << std::hex << std::showbase << i << std::endl;
    +
    +
    • + Some intercomnversions between number types are completely generic, and + are always available: +
    +
    cpp_int cppi(2);
    +// We can always convert between numbers of the same category - 
    +// int to int, rational to rational, or float to float, so this is OK:
    +mpz_int z = cppi;
    +// We can always promote from int to rational, int to float, or rational to float:
    +cpp_rational     cppr = cppi;  // OK, int to rational
    +cpp_dec_float_50 df =   cppi;  // OK, int to float
    +df                  =   cppr;  // OK, rational to float
    +// However narrowing conversions always fail:
    +cppi                =   df;    // Compiler error, conversion not allowed
    +
    +
    • + Other interconversions may be allowed as special cases, whenever the + backend allows it: +
    +
    mpf_t     m;           // Native GMP type.
    +mpf_init_set_ui(m, 0); // set to a value;
    +mpf_float i(m);        // copies the value of the native type.
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats.html b/doc/html/boost_multiprecision/tut/floats.html new file mode 100644 index 00000000..45d29397 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats.html @@ -0,0 +1,199 @@ + + + +Floating Point Numbers + + + + + + + + +
    +PrevUpHomeNext +
    +
    + + +

    + The following back-ends provide floating point arithmetic: +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend Type +

    +
    +

    + Header +

    +
    +

    + Radix +

    +
    +

    + Dependencies +

    +
    +

    + Pros +

    +
    +

    + Cons +

    +
    +

    + mpf_float<N> +

    +
    +

    + boost/multiprecision/gmp.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP +

    +
    +

    + Very fast and efficient back-end. +

    +
    +

    + Dependency on GNU licensed GMP + library. +

    +
    +

    + mpfr_float<N> +

    +
    +

    + boost/multiprecision/mpfr.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP and MPFR +

    +
    +

    + Very fast and efficient back-end, with its own standard library + implementation. +

    +
    +

    + Dependency on GNU licensed GMP + and MPFR libraries. +

    +
    +

    + cpp_dec_float<N> +

    +
    +

    + boost/multiprecision/cpp_dec_float.hpp +

    +
    +

    + 10 +

    +
    +

    + None +

    +
    +

    + Header only, all C++ implementation. Boost licence. +

    +
    +

    + Approximately 2x slower than the MPFR + or GMP libraries. +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html new file mode 100644 index 00000000..aea653f8 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -0,0 +1,117 @@ + + + +cpp_dec_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/cpp_dec_float.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class cpp_dec_float;
    +
    +typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50;
    +typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100;
    +
    +}} // namespaces
    +
    +

    + The cpp_dec_float back-end + is used in conjunction with mp_number: + It acts as an entirely C++ (header only and dependency free) real-number + type that is a drop-in replacement for the native C++ floating-point types, + but with much greater precision. +

    +

    + Type cpp_dec_float can + be used at fixed precision by specifying a non-zero Digits10 + template parameter. The typedefs cpp_dec_float_50 + and cpp_dec_float_100 provide + arithmetic types at 50 and 100 decimal digits precision respectively. +

    +

    + There is full standard library and numeric_limits + support available for this type. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed cpp_dec_floats + have a value of zero. +
    • +
    • + The radix of this type is 10. As a result it can behave subtly differently + from base-2 types. +
    • +
    • + It is not possible to round-trip this type to and from a string and + get back to exactly the same value (this is a result of the type having + some hidden internal guard digits). +
    • +
    • + The type has a number of internal guard digits over and above those + specified in the template argument. Normally these should not be visible + to the user. +
    • +
    +
    + + cpp_dec_float + example: +
    +

    +

    +
    #include <boost/multiprecision/cpp_dec_float.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +// Operations at fixed precision and full numeric_limits support:
    +cpp_dec_float_100 b = 2;
    +std::cout << std::numeric_limits<cpp_dec_float_100>::digits << std::endl;
    +// Note that digits10 is the same as digits, since we're base 10! :
    +std::cout << std::numeric_limits<cpp_dec_float_100>::digits10 << std::endl;
    +// We can use any C++ std lib function, lets print all the digits as well:
    +std::cout << std::setprecision(std::numeric_limits<cpp_dec_float_100>::max_digits10)
    +   << log(b) << std::endl; // print log(2)
    +// We can also use any function from Boost.Math:
    +std::cout << boost::math::tgamma(b) << std::endl;
    +// These even work when the argument is an expression template:
    +std::cout << boost::math::tgamma(b * b) << std::endl;
    +// And since we have an extended exponent range we can generate some really large 
    +// numbers here (4.0238726007709377354370243e+2564):
    +std::cout << boost::math::tgamma(cpp_dec_float_100(1000)) << std::endl;
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg.html new file mode 100644 index 00000000..90d9d20f --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg.html @@ -0,0 +1,46 @@ + + + +Examples + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html new file mode 100644 index 00000000..46500c20 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html @@ -0,0 +1,118 @@ + + + +Area of Circle + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Generic numeric programming employs templates to use the same code for + different floating-point types and functions. Consider the area of a + circle a of radius r, given by +

    +

    + a = π * r2 +

    +

    + The area of a circle can be computed in generic programming using Boost.Math + for the constant π as shown below: +

    +

    +

    +
    #include <boost/math/constants/constants.hpp>
    +
    +template<typename T>
    +inline T area_of_a_circle(T r)
    +{
    +   using boost::math::constants::pi;
    +   return pi<T>() * r * r;
    +}
    +
    +

    +

    +

    + It is possible to use area_of_a_circle() with built-in floating-point types + as well as floating-point types from Boost.Multiprecision. In particular, + consider a system with 4-byte single-precision float, 8-byte double-precision + double and also the cpp_dec_float_50 + data type from Boost.Multiprecision with 50 decimal digits of precision. +

    +

    + We can compute and print the approximate area of a circle with radius + 123/100 for float, double and cpp_dec_float_50 + with the program below. +

    +

    +

    +
    #include <iostream>
    +#include <iomanip>
    +#include <boost/multiprecision/cpp_dec_float.hpp>
    +
    +using boost::multiprecision::cpp_dec_float_50;
    +
    +int main(int, char**)
    +{
    +   const float r_f(float(123) / 100);
    +   const float a_f = area_of_a_circle(r_f);
    +
    +   const double r_d(double(123) / 100);
    +   const double a_d = area_of_a_circle(r_d);
    +
    +   const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100);
    +   const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp);
    +
    +   // 4.75292
    +   std::cout
    +      << std::setprecision(std::numeric_limits<float>::digits10)
    +      << a_f
    +      << std::endl;
    +
    +   // 4.752915525616
    +   std::cout
    +      << std::setprecision(std::numeric_limits<double>::digits10)
    +      << a_d
    +      << std::endl;
    +
    +   // 4.7529155256159981904701331745635599135018975843146
    +   std::cout
    +      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    +      << a_mp
    +      << std::endl;
    +}
    +
    +

    +

    +

    + In the next example we'll look at calling both standard library and Boost.Math + functions from within generic code. We'll also show how to cope with + template arguments which are expression-templates rather than number + types. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html new file mode 100644 index 00000000..b7621a91 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html @@ -0,0 +1,161 @@ + + + +Calculating an Integral + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Similar to the generic derivative example, we can calculate integrals + in a similar manner: +

    +

    +

    +
    template<typename value_type, typename function_type>
    +inline value_type integral(const value_type a,
    +                           const value_type b,
    +                           const value_type tol,
    +                           function_type func)
    +{
    +   unsigned n = 1U;
    +
    +   value_type h = (b - a);
    +   value_type I = (func(a) + func(b)) * (h / 2);
    +
    +   for(unsigned k = 0U; k < 8U; k++)
    +   {
    +      h /= 2;
    +
    +      value_type sum(0);
    +      for(unsigned j = 1U; j <= n; j++)
    +      {
    +         sum += func(a + (value_type((j * 2) - 1) * h));
    +      }
    +
    +      const value_type I0 = I;
    +      I = (I / 2) + (h * sum);
    +
    +      const value_type ratio     = I0 / I;
    +      const value_type delta     = ratio - 1;
    +      const value_type delta_abs = ((delta < 0) ? -delta : delta);
    +
    +      if((k > 1U) && (delta_abs < tol))
    +      {
    +         break;
    +      }
    +
    +      n *= 2U;
    +   }
    +
    +   return I;
    +}
    +
    +

    +

    +

    + The following sample program shows how the function can be called, we + begin by defining a function object, which when integrated should yield + the Bessel J function: +

    +

    +

    +
    template<typename value_type>
    +class cyl_bessel_j_integral_rep
    +{
    +public:
    +   cyl_bessel_j_integral_rep(const unsigned N,
    +      const value_type& X) : n(N), x(X) { }
    +
    +   value_type operator()(const value_type& t) const
    +   {
    +      // pi * Jn(x) = Int_0^pi [cos(x * sin(t) - n*t) dt]
    +      return cos(x * sin(t) - (n * t));
    +   }
    +
    +private:
    +   const unsigned n;
    +   const value_type x;
    +};
    +
    +

    +

    +

    +

    +
       /* The function can now be called as follows: */
    +int main(int, char**)
    +{
    +   using boost::math::constants::pi;
    +   typedef boost::multiprecision::cpp_dec_float_50 mp_type;
    +
    +   const float j2_f =
    +      integral(0.0F,
    +      pi<float>(),
    +      0.01F,
    +      cyl_bessel_j_integral_rep<float>(2U, 1.23F)) / pi<float>();
    +
    +   const double j2_d =
    +      integral(0.0,
    +      pi<double>(),
    +      0.0001,
    +      cyl_bessel_j_integral_rep<double>(2U, 1.23)) / pi<double>();
    +
    +   const mp_type j2_mp =
    +      integral(mp_type(0),
    +      pi<mp_type>(),
    +      mp_type(1.0E-20),
    +      cyl_bessel_j_integral_rep<mp_type>(2U, mp_type(123) / 100)) / pi<mp_type>();
    +
    +   // 0.166369
    +   std::cout
    +      << std::setprecision(std::numeric_limits<float>::digits10)
    +      << j2_f
    +      << std::endl;
    +
    +   // 0.166369383786814
    +   std::cout
    +      << std::setprecision(std::numeric_limits<double>::digits10)
    +      << j2_d
    +      << std::endl;
    +
    +   // 0.16636938378681407351267852431513159437103348245333
    +   std::cout
    +      << std::setprecision(std::numeric_limits<mp_type>::digits10)
    +      << j2_mp
    +      << std::endl;
    +
    +   //
    +   // Print true value for comparison:
    +   // 0.166369383786814073512678524315131594371033482453329
    +   std::cout << boost::math::cyl_bessel_j(2, mp_type(123) / 100) << std::endl;
    +}
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html new file mode 100644 index 00000000..981d684d --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html @@ -0,0 +1,222 @@ + + + +Defining a Lambda Function. + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this example we'll show several implementations of the Jahnke + and Emden Lambda function, each implementation a little more + sophisticated than the last. +

    +

    + The Jahnke-Emden Lambda function is defined by the equation: +

    +

    + JahnkeEmden(v, z) = Γ(v+1) * Jv(z) / (z / 2)v +

    +

    + If we were to implement this at double precision using Boost.Math's facilities + for the Gamma and Bessel function calls it would look like this: +

    +

    +

    +
    double JEL1(double v, double z)
    +{
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / std::pow(z / 2, v);
    +}
    +
    +

    +

    +

    + Calling this function as: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    +std::cout << JEL1(2.5, 0.5) << std::endl;
    +
    +

    + Yields the output: +

    +
    9.822663964796047e-001
    +

    + Now lets implement the function again, but this time using the multiprecision + type cpp_dec_float_50 + as the argument type: +

    +

    +

    +
    boost::multiprecision::cpp_dec_float_50
    +   JEL2(boost::multiprecision::cpp_dec_float_50 v, boost::multiprecision::cpp_dec_float_50 z)
    +{
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / boost::multiprecision::pow(z / 2, v);
    +}
    +
    +

    +

    +

    + The implementation is almost the same as before, but with one key difference + - we can no longer call std::pow, + instead we must call the version inside the boost::multiprecision + namespace. In point of fact, we could have omitted the namespace prefix + on the call to pow since + the right overload would have been found via argument + dependent lookup in any case. +

    +

    + Note also that the first argument to pow + along with the argument to tgamma + in the above code are actually expression templates. The pow and tgamma + functions will handle these arguments just fine. +

    +

    + Here's an example of how the function may be called: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    +std::cout << JEL2(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    +
    +

    + Which outputs: +

    +
    9.82266396479604757017335009796882833995903762577173e-01
    +

    + Now that we've seen some non-template examples, lets repeat the code + again, but this time as a template that can be called either with a builtin + type (float, double etc), or with a multiprecision + type: +

    +

    +

    +
    template <class Float>
    +Float JEL3(Float v, Float z)
    +{
    +   using std::pow;
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    +}
    +
    +

    +

    +

    + Once again the code is almost the same as before, but the call to pow has changed yet again. We need + the call to resolve to either std::pow + (when the argument is a builtin type), or to boost::multiprecision::pow + (when the argument is a multiprecision type). We do that by making the + call unqualified so that versions of pow + defined in the same namespace as type Float + are found via argument dependent lookup, while the using + std::pow directive makes the standard library + versions visible for builtin floating point types. +

    +

    + Let's call the function with both double + and multiprecision arguments: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10);
    +std::cout << JEL3(2.5, 0.5) << std::endl;
    +std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10);
    +std::cout << JEL3(cpp_dec_float_50(2.5), cpp_dec_float_50(0.5)) << std::endl;
    +
    +

    + Which outputs: +

    +
    9.822663964796047e-001
    +9.82266396479604757017335009796882833995903762577173e-01
    +
    +

    + Unfortunately there is a problem with this version: if we were to call + it like this: +

    +
    boost::multiprecision::cpp_dec_float_50 v(2), z(0.5);
    +JEL3(v + 0.5, z);
    +
    +

    + Then we would get a long and inscrutable error message from the compiler: + the problem here is that the first argument to JEL3 + is not a number type, but an expression template. We could obviously + add a typecast to fix the issue: +

    +
    JEL(cpp_dec_float_50(v + 0.5), z);
    +
    +

    + However, if we want the function JEL to be truely reusable, then a better + solution might be preferred. To achieve this we can borrow some code + from Boost.Math which calculates the return type of mixed-argument functions, + here's how the new code looks now: +

    +

    +

    +
    template <class Float1, class Float2>
    +typename boost::math::tools::promote_args<Float1, Float2>::type
    +   JEL4(Float1 v, Float2 z)
    +{
    +   using std::pow;
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / pow(z / 2, v);
    +}
    +
    +

    +

    +

    + As you can see the two arguments to the function are now separate template + types, and the return type is computed using the promote_args + metafunction from Boost.Math. +

    +

    + Now we can call: +

    +
    std::cout << std::scientific << std::setprecision(std::numeric_limits<cpp_dec_float_100>::digits10);
    +std::cout << JEL4(cpp_dec_float_100(2) + 0.5, cpp_dec_float_100(0.5)) << std::endl;
    +
    +

    + And get 100 digits of output: +

    +
    9.8226639647960475701733500979688283399590376257717309069410413822165082248153638454147004236848917775e-01
    +

    + As a bonus, we can now call the function not just with expression templates, + but with other mixed types as well: for example float + and double or int and double, + and the correct return type will be computed in each case. +

    +

    + Note that while in this case we didn't have to change the body of the + function, in the general case any function like this which creates local + variables internally would have to use promote_args + to work out what type those variables should be, for example: +

    +
    template <class Float1, class Float2>
    +typename boost::math::tools::promote_args<Float1, Float2>::type
    +   JEL5(Float1 v, Float2 z)
    +{
    +   using std::pow;
    +   typedef typename boost::math::tools::promote_args<Float1, Float2>::type variable_type;
    +   variable_type t = pow(z / 2, v);
    +   return boost::math::tgamma(v + 1) * boost::math::cyl_bessel_j(v, z) / t;
    +}
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html new file mode 100644 index 00000000..70cdb83c --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html @@ -0,0 +1,202 @@ + + + +Calculating a Derivative + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this example we'll add even more power to generic numeric programming + using not only different floating-point types but also function objects + as template parameters. Consider some well-known central difference rules + for numerically computing the first derivative of a function f′(x) + with x ∈ ℜ: +

    +

    + +

    +

    + Where the difference terms mn are given by: +

    +

    + +

    +

    + and dx is the step-size of the derivative. +

    +

    + The third formula in Equation 1 is a three-point central difference rule. + It calculates the first derivative of f′(x) to O(dx6), + where dx is the given step-size. For example, if + the step-size is 0.01 this derivative calculation has about 6 decimal + digits of precision - just about right for the 7 decimal digits of single-precision + float. Let's make a generic template subroutine using this three-point + central difference rule. In particular: +

    +

    +

    +
    template<typename value_type, typename function_type>
    +   value_type derivative(const value_type x, const value_type dx, function_type func)
    +{
    +   // Compute d/dx[func(*first)] using a three-point
    +   // central difference rule of O(dx^6).
    +
    +   const value_type dx1 = dx;
    +   const value_type dx2 = dx1 * 2;
    +   const value_type dx3 = dx1 * 3;
    +
    +   const value_type m1 = (func(x + dx1) - func(x - dx1)) / 2;
    +   const value_type m2 = (func(x + dx2) - func(x - dx2)) / 4;
    +   const value_type m3 = (func(x + dx3) - func(x - dx3)) / 6;
    +
    +   const value_type fifteen_m1 = 15 * m1;
    +   const value_type six_m2     =  6 * m2;
    +   const value_type ten_dx1    = 10 * dx1;
    +
    +   return ((fifteen_m1 - six_m2) + m3) / ten_dx1;
    +}
    +
    +

    +

    +

    + The derivative() + template function can be used to compute the first derivative of any + function to O(dx6). For example, consider the first + derivative of sin(x) evaluated at x = + π/3. In other words, +

    +

    + +

    +

    + The code below computes the derivative in Equation 3 for float, double + and boost's multiple-precision type cpp_dec_float_50. +

    +

    +

    +
    #include <iostream>
    +#include <iomanip>
    +#include <boost/multiprecision/cpp_dec_float.hpp>
    +#include <boost/math/constants/constants.hpp>
    +
    +
    +int main(int, char**)
    +{
    +   using boost::math::constants::pi;
    +   using boost::multiprecision::cpp_dec_float_50;
    +   //
    +   // We'll pass a function pointer for the function object passed to derivative,
    +   // the typecast is needed to select the correct overload of std::sin:
    +   //
    +   const float d_f = derivative(
    +      pi<float>() / 3,
    +      0.01F,
    +      static_cast<float(*)(float)>(std::sin)
    +   );
    +
    +   const double d_d = derivative(
    +      pi<double>() / 3,
    +      0.001,
    +      static_cast<double(*)(double)>(std::sin)
    +      );
    +   //
    +   // In the cpp_dec_float_50 case, the sin function is multiply overloaded
    +   // to handle expression templates etc.  As a result it's hard to take it's
    +   // address without knowing about its implementation details.  We'll use a 
    +   // C++11 lambda expression to capture the call.
    +   // We also need a typecast on the first argument so we don't accidently pass
    +   // an expression template to a template function:
    +   //
    +   const cpp_dec_float_50 d_mp = derivative(
    +      cpp_dec_float_50(pi<cpp_dec_float_50>() / 3),
    +      cpp_dec_float_50(1.0E-9),
    +      [](const cpp_dec_float_50& x) -> cpp_dec_float_50
    +      {
    +         return sin(x);
    +      }
    +      );
    +
    +   // 5.000029e-001
    +   std::cout
    +      << std::setprecision(std::numeric_limits<float>::digits10)
    +      << d_f
    +      << std::endl;
    +
    +   // 4.999999999998876e-001
    +   std::cout
    +      << std::setprecision(std::numeric_limits<double>::digits10)
    +      << d_d
    +      << std::endl;
    +
    +   // 4.99999999999999999999999999999999999999999999999999e-01
    +   std::cout
    +      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    +      << d_mp
    +      << std::endl;
    +}
    +
    +

    +

    +

    + The expected value of the derivative is 0.5. This central difference + rule in this example is ill-conditioned, meaning it suffers from slight + loss of precision. With that in mind, the results agree with the expected + value of 0.5. +

    +

    + We can take this a step further and use our derivative function to compute + a partial derivative. For example if we take the incomplete gamma function + P(a, z), and take the derivative with respect to + z at (2,2) then we can calculate + the result as shown below, for good measure we'll compare with the "correct" + result obtained from a call to gamma_p_derivative, + the results agree to approximately 44 digits: +

    +

    +

    +
    cpp_dec_float_50 gd = derivative(
    +   cpp_dec_float_50(2),
    +   cpp_dec_float_50(1.0E-9),
    +   [](const cpp_dec_float_50& x) ->cpp_dec_float_50
    +   {
    +      return boost::math::gamma_p(2, x);
    +   }
    +);
    +// 2.70670566473225383787998989944968806815263091819151e-01
    +std::cout
    +   << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
    +   << gd
    +   << std::endl;
    +// 2.70670566473225383787998989944968806815253190143120e-01
    +std::cout << boost::math::gamma_p_derivative(cpp_dec_float_50(2), cpp_dec_float_50(2)) << std::endl;
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html new file mode 100644 index 00000000..8acdc588 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html @@ -0,0 +1,146 @@ + + + +Polynomial Evaluation + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this example we'll look at polynomial evaluation, this is not only + an important use case, but it's one that mp_number + performs particularly well at because the expression templates completely + eliminate all temporaries from a Horner + polynomial evaluation scheme. +

    +

    + The following code evaluates sin(x) as a polynomial, accurate to at least + 64 decimal places: +

    +

    +

    +
    using boost::multiprecision::cpp_dec_float;
    +typedef boost::multiprecision::mp_number<cpp_dec_float<64> > mp_type;
    +
    +mp_type mysin(const mp_type& x)
    +{
    +  // Approximation of sin(x * pi/2) for -1 <= x <= 1, using an order 63 polynomial.
    +  static const std::array<mp_type, 32U> coefs =
    +  {{
    +    mp_type("+1.5707963267948966192313216916397514420985846996875529104874722961539082031431044993140174126711"), //"),
    +    mp_type("-0.64596409750624625365575656389794573337969351178927307696134454382929989411386887578263960484"), // ^3
    +    mp_type("+0.07969262624616704512050554949047802252091164235106119545663865720995702920146198554317279"), // ^5
    +    mp_type("-0.0046817541353186881006854639339534378594950280185010575749538605102665157913157426229824"), // ^7
    +    mp_type("+0.00016044118478735982187266087016347332970280754062061156858775174056686380286868007443"), // ^9
    +    mp_type("-3.598843235212085340458540018208389404888495232432127661083907575106196374913134E-6"), // ^11
    +    mp_type("+5.692172921967926811775255303592184372902829756054598109818158853197797542565E-8"), // ^13
    +    mp_type("-6.688035109811467232478226335783138689956270985704278659373558497256423498E-10"), // ^15
    +    mp_type("+6.066935731106195667101445665327140070166203261129845646380005577490472E-12"), // ^17
    +    mp_type("-4.377065467313742277184271313776319094862897030084226361576452003432E-14"), // ^19
    +    mp_type("+2.571422892860473866153865950420487369167895373255729246889168337E-16"), // ^21
    +    mp_type("-1.253899540535457665340073300390626396596970180355253776711660E-18"), // ^23
    +    mp_type("+5.15645517658028233395375998562329055050964428219501277474E-21"), // ^25
    +    mp_type("-1.812399312848887477410034071087545686586497030654642705E-23"), // ^27
    +    mp_type("+5.50728578652238583570585513920522536675023562254864E-26"), // ^29
    +    mp_type("-1.461148710664467988723468673933026649943084902958E-28"), // ^31
    +    mp_type("+3.41405297003316172502972039913417222912445427E-31"), // ^33
    +    mp_type("-7.07885550810745570069916712806856538290251E-34"), // ^35
    +    mp_type("+1.31128947968267628970845439024155655665E-36"), // ^37
    +    mp_type("-2.18318293181145698535113946654065918E-39"), // ^39
    +    mp_type("+3.28462680978498856345937578502923E-42"), // ^41
    +    mp_type("-4.48753699028101089490067137298E-45"), // ^43
    +    mp_type("+5.59219884208696457859353716E-48"), // ^45
    +    mp_type("-6.38214503973500471720565E-51"), // ^47
    +    mp_type("+6.69528558381794452556E-54"), // ^49
    +    mp_type("-6.47841373182350206E-57"), // ^51
    +    mp_type("+5.800016389666445E-60"), // ^53
    +    mp_type("-4.818507347289E-63"), // ^55
    +    mp_type("+3.724683686E-66"), // ^57
    +    mp_type("-2.6856479E-69"), // ^59
    +    mp_type("+1.81046E-72"), // ^61
    +    mp_type("-1.133E-75"), // ^63
    +  }};
    +
    +  const mp_type v = x * 2 / boost::math::constants::pi<mp_type>();
    +  const mp_type x2 = (v * v);
    +  //
    +  // Polynomial evaluation follows, if mp_type allocates memory then
    +  // just one such allocation occurs - to initialize the variable "sum" -
    +  // and no temporaries are created at all.
    +  //
    +  const mp_type sum = (((((((((((((((((((((((((((((((     + coefs[31U]
    +                                                     * x2 + coefs[30U])
    +                                                     * x2 + coefs[29U])
    +                                                     * x2 + coefs[28U])
    +                                                     * x2 + coefs[27U])
    +                                                     * x2 + coefs[26U])
    +                                                     * x2 + coefs[25U])
    +                                                     * x2 + coefs[24U])
    +                                                     * x2 + coefs[23U])
    +                                                     * x2 + coefs[22U])
    +                                                     * x2 + coefs[21U])
    +                                                     * x2 + coefs[20U])
    +                                                     * x2 + coefs[19U])
    +                                                     * x2 + coefs[18U])
    +                                                     * x2 + coefs[17U])
    +                                                     * x2 + coefs[16U])
    +                                                     * x2 + coefs[15U])
    +                                                     * x2 + coefs[14U])
    +                                                     * x2 + coefs[13U])
    +                                                     * x2 + coefs[12U])
    +                                                     * x2 + coefs[11U])
    +                                                     * x2 + coefs[10U])
    +                                                     * x2 + coefs[9U])
    +                                                     * x2 + coefs[8U])
    +                                                     * x2 + coefs[7U])
    +                                                     * x2 + coefs[6U])
    +                                                     * x2 + coefs[5U])
    +                                                     * x2 + coefs[4U])
    +                                                     * x2 + coefs[3U])
    +                                                     * x2 + coefs[2U])
    +                                                     * x2 + coefs[1U])
    +                                                     * x2 + coefs[0U])
    +                                                     * v;
    +
    +  return sum;
    +}
    +
    +

    +

    +

    + Calling the function like so: +

    +
    std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific;
    +std::cout << mysin(mp_type(1)) << std::endl;
    +
    +

    + Yields the expected output: +

    +
    7.0710678118654752440084436210484903928483593768847403658833986900e-01
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/gmp_float.html b/doc/html/boost_multiprecision/tut/floats/gmp_float.html new file mode 100644 index 00000000..3b104b2e --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/gmp_float.html @@ -0,0 +1,169 @@ + + + +gmp_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/gmp.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class gmp_float;
    +
    +typedef mp_number<gmp_float<50> >    mpf_float_50;
    +typedef mp_number<gmp_float<100> >   mpf_float_100;
    +typedef mp_number<gmp_float<500> >   mpf_float_500;
    +typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    +typedef mp_number<gmp_float<0> >     mpf_float;
    +
    +}} // namespaces
    +
    +

    + The gmp_float back-end + is used in conjunction with mp_number + : it acts as a thin wrapper around the GMP + mpf_t to provide an real-number + type that is a drop-in replacement for the native C++ floating-point types, + but with much greater precision. +

    +

    + Type gmp_float can be used + at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpf_float provides a variable precision type + whose precision can be controlled via the mp_numbers + member functions. +

    +
    + + + + + +
    [Note]Note

    + This type only provides standard library and numeric_limits + support when the precision is fixed at compile time. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of mp_number<mpf_float<N> > are copy constructible and assignable + from: +

    +
      +
    • + The GMP native types mpf_t, mpz_t, + mpq_t. +
    • +
    • + The mp_number wrappers + around those types: mp_number<mpf_float<M> >, + mp_number<gmp_int>, + mp_number<gmp_rational>. +
    • +
    +

    + It's also possible to access the underlying mpf_t + via the data() + member function of gmp_float. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed gmp_floats + have the value zero (this is the GMP + library's default behavior). +
    • +
    • + No changes are made to the GMP + library's global settings, so this type can be safely mixed with existing + GMP code. +
    • +
    • + It is not possible to round-trip objects of this type to and from a + string and get back exactly the same value. This appears to be a limitation + of GMP. +
    • +
    • + Since the underlying GMP types + have no notion of infinities or NaN's, care should be taken to avoid + numeric overflow or division by zero. That latter will trigger a hardware + exception, while generating excessively large exponents may result + in instability of the underlying GMP + library (in testing, converting a number with an excessively large + or small exponent to a string caused GMP + to segfault). +
    • +
    • + This type can equally be used with MPIR + as the underlying implementation - indeed that is the recommended option + on Win32. +
    • +
    +
    + + + GMP example: +
    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +// Operations at variable precision and limited standard library support:
    +mpf_float a = 2;
    +mpf_float::default_precision(1000);
    +std::cout << mpf_float::default_precision() << std::endl;
    +std::cout << sqrt(a) << std::endl; // print root-2
    +
    +// Operations at fixed precision and full standard library support:
    +mpf_float_100 b = 2;
    +std::cout << std::numeric_limits<mpf_float_100>::digits << std::endl;
    +// We can use any C++ std lib function:
    +std::cout << log(b) << std::endl; // print log(2)
    +// We can also use any function from Boost.Math:
    +std::cout << boost::math::tgamma(b) << std::endl;
    +// These even work when the argument is an expression template:
    +std::cout << boost::math::tgamma(b * b) << std::endl;
    +
    +// Access the underlying representation:
    +mpf_t f;
    +mpf_init(f);
    +mpf_set(f, a.backend().data());
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html new file mode 100644 index 00000000..595e9d2c --- /dev/null +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -0,0 +1,159 @@ + + + +mpfr_float + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/mpfr_float.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +template <unsigned Digits10>
    +class mpfr_float_backend;
    +
    +typedef mp_number<mpfr_float_backend<50> >    mpfr_float_50;
    +typedef mp_number<mpfr_float_backend<100> >   mpfr_float_100;
    +typedef mp_number<mpfr_float_backend<500> >   mpfr_float_500;
    +typedef mp_number<mpfr_float_backend<1000> >  mpfr_float_1000;
    +typedef mp_number<mpfr_float_backend<0> >     mpfr_float;
    +
    +}} // namespaces
    +
    +

    + The mpfr_float_backend + type is used in conjunction with mp_number: + It acts as a thin wrapper around the MPFR + mpfr_t to provide an real-number + type that is a drop-in replacement for the native C++ floating-point types, + but with much greater precision. +

    +

    + Type mpfr_float_backend + can be used at fixed precision by specifying a non-zero Digits10 + template parameter, or at variable precision by setting the template argument + to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 + provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision + respectively. The typedef mpfr_float provides a variable precision type + whose precision can be controlled via the mp_numbers + member functions. +

    +
    + + + + + +
    [Note]Note

    + This type only provides numeric_limits + support when the precision is fixed at compile time. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of mp_number<mpfr_float_backend<N> > are copy constructible and assignable + from: +

    +
      +
    • + The GMP native types mpf_t, mpz_t, + mpq_t. +
    • +
    • + The MPFR native type mpfr_t. +
    • +
    • + The mp_number wrappers + around those types: mp_number<mpfr_float_backend<M> >, + mp_number<mpf_float<M> >, mp_number<gmp_int>, mp_number<gmp_rational>. +
    • +
    +

    + It's also possible to access the underlying mpf_t + via the data() member function of gmp_float. +

    +

    + Things you should know when using this type: +

    +
      +
    • + A default constructed mpfr_float_backend + is set to a NaN (this is the default MPFR + behavior). +
    • +
    • + All operations use round to nearest. +
    • +
    • + No changes are made to GMP or + MPFR global settings, so this + type can coexist with existing MPFR + or GMP code. +
    • +
    • + The code can equally use MPIR + in place of GMP - indeed that + is the preferred option on Win32. +
    • +
    +
    + + + MPFR example: +
    +

    +

    +
    #include <boost/multiprecision/mpfr.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +// Operations at variable precision and no numeric_limits support:
    +mpfr_float a = 2;
    +mpfr_float::default_precision(1000);
    +std::cout << mpfr_float::default_precision() << std::endl;
    +std::cout << sqrt(a) << std::endl; // print root-2
    +
    +// Operations at fixed precision and full numeric_limits support:
    +mpfr_float_100 b = 2;
    +std::cout << std::numeric_limits<mpfr_float_100>::digits << std::endl;
    +// We can use any C++ std lib function:
    +std::cout << log(b) << std::endl; // print log(2)
    +// We can also use any function from Boost.Math:
    +std::cout << boost::math::tgamma(b) << std::endl;
    +// These even work when the argument is an expression template:
    +std::cout << boost::math::tgamma(b * b) << std::endl;
    +
    +// Access the underlying data:
    +mpfr_t r;
    +mpfr_init(r);
    +mpfr_set(r, b.backend().data(), GMP_RNDN);
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html new file mode 100644 index 00000000..754859f0 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -0,0 +1,191 @@ + + + +Integer Types + + + + + + + + +
    +PrevUpHomeNext +
    +
    + + +

    + The following back-ends provide integer arithmetic: +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend Type +

    +
    +

    + Header +

    +
    +

    + Radix +

    +
    +

    + Dependencies +

    +
    +

    + Pros +

    +
    +

    + Cons +

    +
    +

    + cpp_int +

    +
    +

    + boost/multiprecision/cpp_int.hpp +

    +
    +

    + 2 +

    +
    +

    + None +

    +
    +

    + Very versatile, Boost licensed, all C++ integer type which support + both arbitrary + precision and fixed precision integer types. +

    +
    +

    + Slower than GMP, though + typically not as slow as libtommath +

    +
    +

    + gmp_int +

    +
    +

    + boost/multiprecision/gmp.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP +

    +
    +

    + Very fast and efficient back-end. +

    +
    +

    + Dependency on GNU licensed GMP + library. +

    +
    +

    + tom_int +

    +
    +

    + boost/multiprecision/tommath.hpp +

    +
    +

    + 2 +

    +
    +

    + libtommath +

    +
    +

    + Public domain back-end with no licence restrictions. +

    +
    +

    + Slower than GMP. +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html new file mode 100644 index 00000000..98340475 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -0,0 +1,179 @@ + + + +cpp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/cpp_int.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +typedef unspecified-type limb_type;
    +
    +template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
    +class cpp_int_backend;
    +
    +typedef mp_number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +typedef mp_number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
    +
    +// Fixed precision unsigned types:
    +typedef mp_number<cpp_int_backend<128, false, void>, false>   mp_uint128_t;
    +typedef mp_number<cpp_int_backend<256, false, void>, false>   mp_uint256_t;
    +typedef mp_number<cpp_int_backend<512, false, void>, false>   mp_uint512_t;
    +typedef mp_number<cpp_int_backend<1024, false, void>, false>  mp_uint1024_t;
    +
    +// Fixed precision signed types:
    +typedef mp_number<cpp_int_backend<128, true, void>, false>    mp_int128_t;
    +typedef mp_number<cpp_int_backend<256, true, void>, false>    mp_int256_t;
    +typedef mp_number<cpp_int_backend<512, true, void>, false>    mp_int512_t;
    +typedef mp_number<cpp_int_backend<1024, true, void>, false>   mp_int1024_t;
    +
    +}} // namespaces
    +
    +

    + The cpp_int_backend type + is used via one of the typedefs boost::multiprecision::cpp_int, + boost::multiprecision::mp_uint128_t, boost::multiprecision::mp_uint256_t, + boost::multiprecision::mp_uint512_t, boost::multiprecision::mp_int128_t, + boost::multiprecision::mp_int256_t or boost::multiprecision::mp_int512_t. +

    +

    + This back-end is the "Swiss Army Knife" of integer types as it + can represent both fixed and arbitrary + precision integer types, and both signed and unsigned types. There + are three template arguments: +

    +
    +

    +
    +
    MinBits
    +

    + Determines the number of Bits to store directly within the object + before resorting to dynamic memory allocation. When zero, this field + is determined automatically based on how many bits can be stored + in union with the dynamic storage header: setting a larger value + may improve performance as larger integer values will be stored internally + before memory allocation is required. When the Allocator parameter + is type void, then this + field determines the total number of bits in the resulting fixed + precision type. +

    +
    Signed
    +

    + Determines whether the resulting type is signed or not. Note that + for arbitrary + precision types (where the Allocator parameter is non-void), + then this parameter must be true. + For fixed precision types then this type may be either true (type is signed), or false (type is unsigned). +

    +
    Allocator
    +

    + The allocator to use for dynamic memory allocation, or type void if this is to be a fixed precision + type. +

    +
    +
    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed cpp_int_backends + have the value zero. +
    • +
    • + Division by zero results in a std::runtime_error + being thrown. +
    • +
    • + Construction from a string that contains invalid non-numeric characters + results in a std::runtime_error being thrown. +
    • +
    • + Since the precision of cpp_int_backend + is necessarily limited when the allocator parameter is void, care should + be taken to avoid numeric overflow when using this type unless you + actually want modulo-arithmetic behavior. +
    • +
    • + The type uses a sign-magnitude representation internally, so type + mp_int128_t has 128-bits + of precision plus an extra sign bit. In this respect the behaviour + of these types differs from built-in 2's complement types. In might + be tempting to use a 127-bit type instead, and indeed this does work, + but behaviour is still slightly different from a 2's complement built-in + type as the min and max values are identical (apart from the sign), + where as they differ by one for a true 2's complement type. That said + it should be noted that there's no requirement for built-in types to + be 2's complement either - it's simply that this is the most common + format by far. +
    • +
    • + Attempting to print negative values as either an Octal or Hexadecimal + string results in a std::runtime_error + being thrown, this is a direct consequence of the sign-magnitude representation. +
    • +
    • + The fixed precision types mp_[u]intXXX_t + have expression template support turned off - it seems to make little + difference to the performance of these types either way - so we may + as well have the faster compile times by turning the feature off. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mp_int128_t v = 1;
    +
    +// Do some fixed precision arithmetic:
    +for(unsigned i = 1; i <= 20; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 20!
    +
    +// Repeat at arbitrary precision:
    +cpp_int u = 1;
    +for(unsigned i = 1; i <= 100; ++i)
    +   u *= i;
    +
    +std::cout << u << std::endl; // prints 100!
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/egs.html b/doc/html/boost_multiprecision/tut/ints/egs.html new file mode 100644 index 00000000..145a22b2 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/egs.html @@ -0,0 +1,38 @@ + + + +Examples + + + + + + + + +
    +PrevUpHomeNext +
    + + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/egs/bitops.html b/doc/html/boost_multiprecision/tut/ints/egs/bitops.html new file mode 100644 index 00000000..37b37e80 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/egs/bitops.html @@ -0,0 +1,94 @@ + + + +Bit Operations + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this example we'll show how individual bits within an integer may + be manipulated, we'll start with an often needed calculation of 2n - + 1, which we could obviously implement like this: +

    +

    +

    +
    using boost::multiprecision::cpp_int;
    +
    +cpp_int b1(unsigned n)
    +{
    +   cpp_int r(1);
    +   return (r << n) - 1;
    +}
    +
    +

    +

    +

    + Calling: +

    +
    std::cout << std::hex << std::showbase << b1(200) << std::endl;
    +
    +

    + Yields as expected: +

    +
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    +

    + However, we could equally just set the n'th bit in the result, like this: +

    +

    +

    +
    cpp_int b2(unsigned n)
    +{
    +   cpp_int r(0);
    +   return --bit_set(r, n);
    +}
    +
    +

    +

    +

    + Note how the bit_set + function sets the specified bit in it's argument and then returns a reference + to the result - which we can then simply decrement. The result from a + call to b2 is the same + as that to b1. +

    +

    + We can equally test bits, so for example the n'th bit of the result returned + from b2 shouldn't be + set unless we increment it first: +

    +
    assert(!bit_test(b1(200), 200));     // OK
    +assert(bit_test(++b1(200), 200));    // OK
    +
    +

    + And of course if we flip the n'th bit after increment, then we should + get back to zero: +

    +
    assert(!bit_flip(++b1(200), 200));   // OK
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/egs/factorials.html b/doc/html/boost_multiprecision/tut/ints/egs/factorials.html new file mode 100644 index 00000000..dfbfe6e5 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/egs/factorials.html @@ -0,0 +1,145 @@ + + + +Factorials + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + In this simple example, we'll write a routine to print out all of the + factorials which will fit into a 128-bit integer. At the end of the routine + we do some fancy iostream formatting of the results: +

    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +#include <iostream>
    +#include <iomanip>
    +#include <vector>
    +
    +
    +void print_factorials()
    +{
    +   using boost::multiprecision::cpp_int;
    +   //
    +   // Print all the factorials that will fit inside a 128-bit integer.
    +   //
    +   // Begin by building a big table of factorials, once we know just how 
    +   // large the largest is, we'll be able to "pretty format" the results.
    +   //
    +   // Calculate the largest number that will fit inside 128 bits, we could
    +   // also have used numeric_limits<mp_int128_t>::max() for this value:
    +   cpp_int limit = (cpp_int(1) << 128) - 1;
    +   // 
    +   // Our table of values:
    +   std::vector<cpp_int> results;
    +   //
    +   // Initial values:
    +   unsigned i = 1;
    +   cpp_int factorial = 1;
    +   //
    +   // Cycle through the factorials till we reach the limit:
    +   while(factorial < limit)
    +   {
    +      results.push_back(factorial);
    +      ++i;
    +      factorial *= i;
    +   }
    +   //
    +   // Lets see how many digits the largest factorial was:
    +   unsigned digits = results.back().str().size();
    +   //
    +   // Now print them out, using right justification, while we're at it
    +   // we'll indicate the limit of each integer type, so begin by defining
    +   // the limits for 16, 32, 64 etc bit integers:
    +   cpp_int limits[] = {
    +      (cpp_int(1) << 16) - 1,
    +      (cpp_int(1) << 32) - 1,
    +      (cpp_int(1) << 64) - 1,
    +      (cpp_int(1) << 128) - 1,
    +   };
    +   std::string bit_counts[] = { "16", "32", "64", "128" };
    +   unsigned current_limit = 0;
    +   for(unsigned j = 0; j < results.size(); ++j)
    +   {
    +      if(limits[current_limit] < results[j])
    +      {
    +         std::string message = "Limit of " + bit_counts[current_limit] + " bit integers";
    +         std::cout << std::setfill('.') << std::setw(digits+1) << std::right << message << std::setfill(' ') << std::endl;
    +         ++current_limit;
    +      }
    +      std::cout << std::setw(digits + 1) << std::right << results[j] << std::endl;
    +   }
    +}
    +
    +

    +

    +

    + The output from this routine is: +

    +
    +                                       1
    +                                       2
    +                                       6
    +                                      24
    +                                     120
    +                                     720
    +                                    5040
    +                                   40320
    +................Limit of 16 bit integers
    +                                  362880
    +                                 3628800
    +                                39916800
    +                               479001600
    +................Limit of 32 bit integers
    +                              6227020800
    +                             87178291200
    +                           1307674368000
    +                          20922789888000
    +                         355687428096000
    +                        6402373705728000
    +                      121645100408832000
    +                     2432902008176640000
    +................Limit of 64 bit integers
    +                    51090942171709440000
    +                  1124000727777607680000
    +                 25852016738884976640000
    +                620448401733239439360000
    +              15511210043330985984000000
    +             403291461126605635584000000
    +           10888869450418352160768000000
    +          304888344611713860501504000000
    +         8841761993739701954543616000000
    +       265252859812191058636308480000000
    +      8222838654177922817725562880000000
    +    263130836933693530167218012160000000
    +   8683317618811886495518194401280000000
    + 295232799039604140847618609643520000000
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/gmp_int.html b/doc/html/boost_multiprecision/tut/ints/gmp_int.html new file mode 100644 index 00000000..1bf12605 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/gmp_int.html @@ -0,0 +1,128 @@ + + + +gmp_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/gmp.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +class gmp_int;
    +
    +typedef mp_number<gmp_int >         mpz_int;
    +
    +}} // namespaces
    +
    +

    + The gmp_int back-end is + used via the typedef boost::multiprecision::mpz_int. + It acts as a thin wrapper around the GMP + mpz_t to provide an integer + type that is a drop-in replacement for the native C++ integer types, but + with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, type + mpz_int is copy constructible + and assignable from: +

    +
      +
    • + The GMP native types: mpf_t, mpz_t, + mpq_t. +
    • +
    • + Instances of mp_number<T> that are wrappers around those + types: mp_number<gmp_float<N> >, mp_number<gmp_rational>. +
    • +
    +

    + It's also possible to access the underlying mpz_t + via the data() + member function of gmp_int. +

    +

    + Things you should know when using this type: +

    +
      +
    • + No changes are made to the GMP library's global settings - so you can + safely mix this type with existing code that uses GMP. +
    • +
    • + Default constructed gmp_ints + have the value zero (this is GMP's default behavior). +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero is handled by the GMP + library - it will trigger a division by zero signal. +
    • +
    • + Although this type is a wrapper around GMP + it will work equally well with MPIR. + Indeed use of MPIR is recommended + on Win32. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mpz_int v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 1000!
    +
    +// Access the underlying representation:
    +mpz_t z;
    +mpz_init(z);
    +mpz_set(z, v.backend().data());
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/ints/tom_int.html b/doc/html/boost_multiprecision/tut/ints/tom_int.html new file mode 100644 index 00000000..08ccad9d --- /dev/null +++ b/doc/html/boost_multiprecision/tut/ints/tom_int.html @@ -0,0 +1,119 @@ + + + +tom_int + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/tommath.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +class tommath_int;
    +
    +typedef mp_number<tommath_int >         tom_int;
    +
    +}} // namespaces
    +
    +

    + The tommath_int back-end + is used via the typedef boost::multiprecision::tom_int. + It acts as a thin wrapper around the libtommath + tom_int to provide an integer + type that is a drop-in replacement for the native C++ integer types, but + with unlimited precision. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed objects have the value zero (this is libtommath's + default behavior). +
    • +
    • + Although tom_int is + mostly a drop in replacement for the builtin integer types, it should + be noted that it is a rather strange beast as it's a signed type that + is not a 2's complement type. As a result the bitwise operations | & ^ will throw a std::runtime_error + exception if either of the arguments is negative. Similarly the complement + operator~ is deliberately + not implemented for this type. +
    • +
    • + Formatted IO for this type does not support octal or hexadecimal notation + for negative values, as a result performing formatted output on this + type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex + are set, will result in a std::runtime_error + will be thrown. +
    • +
    • + Division by zero will result in a hardware signal being raised by + libtommath. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/tommath.hpp>
    +
    +boost::multiprecision::tom_int v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +
    +std::cout << v << std::endl; // prints 1000!
    +std::cout << std::hex << v << std::endl; // prints 1000! in hex format
    +
    +try{
    +   std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +
    +try{
    +   // v is not a 2's complement type, bitwise operations are only supported
    +   // on positive values:
    +   v = -v & 2;
    +}
    +catch(const std::runtime_error& e)
    +{
    +   std::cout << e.what() << std::endl;
    +}
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html new file mode 100644 index 00000000..8e83c166 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -0,0 +1,109 @@ + + + +Primality Testing + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + The library implements a Miller-Rabin test for primality: +

    +
    #include <boost/multiprecision/miller_rabin.hpp>
    +
    +template <class Backend, bool ExpressionTemplates, class Engine>
    +bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
    +
    +template <class Backend, bool ExpressionTemplates, class Engine>
    +bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials);
    +
    +

    + These functions perform a Miller-Rabin test for primality, if the result + is false then n + is definitely composite, while if the result is true + then n is prime with probability 0.25^trials. + The algorithm used performs some trial divisions to exclude small prime factors, + does one Fermat test to exclude many more composites, and then uses the Miller-Rabin + algorithm straight out of Knuth Vol 2, which recomends 25 trials for a pretty + strong likelyhood that n is prime. +

    +

    + The third optional argument is for a Uniform Random Number Generator from + Boost.Random. When not provided the mt19937 + generator is used. Note that when producing random primes then you should + probably use a different random number generator to produce candidate prime + numbers for testing, than is used internally by miller_rabin_test + for determining whether the value is prime. It also helps of course to seed + the generators with some source of randomness. +

    +

    + The following example searches for a prime p + for which (p-1)/2 is also probably prime: +

    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +#include <boost/multiprecision/miller_rabin.hpp>
    +#include <iostream>
    +#include <iomanip>
    +
    +int main()
    +{
    +   using namespace boost::random;
    +   using namespace boost::multiprecision;
    +
    +   typedef cpp_int int_type;
    +   mt11213b base_gen(clock());
    +   independent_bits_engine<mt11213b, 256, int_type> gen(base_gen);
    +   //
    +   // We must use a different generator for the tests and number generation, otherwise
    +   // we get false positives.
    +   //
    +   mt19937 gen2(clock());
    +
    +   for(unsigned i = 0; i < 100000; ++i)
    +   {
    +      int_type n = gen();
    +      if(miller_rabin_test(n, 25, gen2))
    +      {
    +         // Value n is probably prime, see if (n-1)/2 is also prime:
    +         std::cout << "We have a probable prime with value: " << std::hex << std::showbase << n << std::endl;
    +         if(miller_rabin_test((n-1)/2, 25, gen2))
    +         {
    +            std::cout << "We have a safe prime with value: " << std::hex << std::showbase << n << std::endl;
    +            return 0;
    +         }
    +      }
    +   }
    +   std::cout << "Ooops, no safe primes were found" << std::endl;
    +   return 1;
    +}
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/random.html b/doc/html/boost_multiprecision/tut/random.html new file mode 100644 index 00000000..6f0d438b --- /dev/null +++ b/doc/html/boost_multiprecision/tut/random.html @@ -0,0 +1,157 @@ + + + +Generating Random Numbers + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + Random numbers are generated in conjunction with Boost.Random. However, since + Boost.Random is unaware of arbitrary + precision numbers, it's necessary to include the header: +

    +
    #include <boost/multiprecision/random.hpp>
    +
    +

    + In order to act as a bridge between the two libraries. +

    +

    + Integers with N random bits are generated using independent_bits_engine: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +
    +//
    +// Declare our random number generator type, the underlying generator
    +// is the Mersenne twister mt19937 engine, and 256 bits are generated:
    +//
    +typedef independent_bits_engine<mt19937, 256, mpz_int> generator_type;
    +generator_type gen;
    +//
    +// Generate some values:
    +//
    +std::cout << std::hex << std::showbase;
    +for(unsigned i = 0; i < 10; ++i)
    +   std::cout << gen() << std::endl;
    +
    +

    +

    +

    + Alternatively we can generate integers in a given range using uniform_int_distribution, this will invoke + the underlying engine multiple times to build up the required number of bits + in the result: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +
    +//
    +// Generate integers in a given range using uniform_int,
    +// the underlying generator is invoked multiple times
    +// to generate enough bits:
    +//
    +mt19937 mt;
    +uniform_int_distribution<mpz_int> ui(0, mpz_int(1) << 256);
    +//
    +// Generate the numbers:
    +//
    +std::cout << std::hex << std::showbase;
    +for(unsigned i = 0; i < 10; ++i)
    +   std::cout << ui(mt) << std::endl;
    +
    +

    +

    +

    + Floating point values in [0,1) are generated using uniform_01, + the trick here is to ensure that the underlying generator produces as many + random bits as there are digits in the floating point type. As above independent_bits_engine can be used for + this purpose, note that we also have to convert decimal digits (in the floating + point type) to bits (in the random number generator): +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +//
    +// We need an underlying generator with at least as many bits as the
    +// floating point type to generate numbers in [0, 1) with all the bits
    +// in the floating point type randomly filled:
    +//
    +uniform_01<mpf_float_50> uf;
    +independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    +//
    +// Generate the values:
    +//
    +std::cout << std::setprecision(50);
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << uf(gen) << std::endl;
    +
    +

    +

    +

    + Finally, we can modify the above example to produce numbers distributed according + to some distribution: +

    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +#include <boost/multiprecision/random.hpp>
    +
    +using namespace boost::multiprecision;
    +using namespace boost::random;
    +//
    +// We can repeat the above example, with other distributions:
    +//
    +uniform_real_distribution<mpf_float_50> ur(-20, 20);
    +gamma_distribution<mpf_float_50> gd(20);
    +independent_bits_engine<mt19937, 50L*1000L/301L, mpz_int> gen;
    +//
    +// Generate some values:
    +//
    +std::cout << std::setprecision(50);
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << ur(gen) << std::endl;
    +for(unsigned i = 0; i < 20; ++i)
    +   std::cout << gd(gen) << std::endl;
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html new file mode 100644 index 00000000..0d05ef47 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -0,0 +1,252 @@ + + + +Rational Number Types + + + + + + + + +
    +PrevUpHomeNext +
    +
    + + +

    + The following back-ends provide rational number arithmetic: +

    +
    ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend Type +

    +
    +

    + Header +

    +
    +

    + Radix +

    +
    +

    + Dependencies +

    +
    +

    + Pros +

    +
    +

    + Cons +

    +
    +

    + gmp_rational +

    +
    +

    + boost/multiprecision/gmp.hpp +

    +
    +

    + 2 +

    +
    +

    + GMP +

    +
    +

    + Very fast and efficient back-end. +

    +
    +

    + Dependency on GNU licensed GMP + library. +

    +
    +

    + cpp_rational +

    +
    +

    + boost/multiprecision/cpp_int.hpp +

    +
    +

    + 2 +

    +
    +

    + None +

    +
    +

    + An all C++ Boost-licensed implementation. +

    +
    +

    + Slower than GMP. +

    +
    +

    + tommath_rational +

    +
    +

    + boost/multiprecision/tommath.hpp +

    +
    +

    + 2 +

    +
    +

    + libtommath +

    +
    +

    + All C/C++ implementation that's Boost Software Licence compatible. +

    +
    +

    + Slower than GMP. +

    +
    +

    + rational_adapter +

    +
    +

    + boost/multiprecision/rational_adapter.hpp +

    +
    +

    + N/A +

    +
    +

    + none +

    +
    +

    + All C++ adapter that allows any inetger back-end type to be used + as a rational type. +

    +
    +

    + Requires an underlying integer back-end type. +

    +
    +

    + boost::rational +

    +
    +

    + boost/rational.hpp +

    +
    +

    + N/A +

    +
    +

    + None +

    +
    +

    + A C++ rational number type that can used with any mp_number integer type. +

    +
    +

    + The expression templates used by mp_number + end up being "hidden" inside boost::rational: + performance may well suffer as a result. +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/br.html b/doc/html/boost_multiprecision/tut/rational/br.html new file mode 100644 index 00000000..a3efdfa6 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/br.html @@ -0,0 +1,42 @@ + + + +Use With Boost.Rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + All of the integer types in this library can be used as template arguments + to boost::rational<IntType>. +

    +

    + Note that using the library in this way largely negates the effect of the + expression templates in mp_number. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html new file mode 100644 index 00000000..ea6b42a8 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html @@ -0,0 +1,108 @@ + + + +cpp_rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/cpp_int.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
    +
    +typedef mp_number<cpp_rational_backend>         cpp_rational;
    +
    +}} // namespaces
    +
    +

    + The cpp_rational_backend + type is used via the typedef boost::multiprecision::cpp_rational. + It provides a rational number type that is a drop-in replacement for the + native C++ number types, but with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of cpp_rational are copy + constructible and assignable from type cpp_int. +

    +

    + There is also a two argument constructor that accepts a numerator and denominator: + both of type cpp_int. +

    +

    + There are also non-member functions: +

    +
    cpp_int numerator(const cpp_rational&);
    +cpp_int denominator(const cpp_rational&);
    +
    +

    + which return the numerator and denominator of the number. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed cpp_rationals + have the value zero. +
    • +
    • + Division by zero results in a std::rumtime_error + being thrown. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +cpp_rational v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +v /= 10;
    +
    +std::cout << v << std::endl; // prints 1000! / 10
    +std::cout << numerator(v) << std::endl;
    +std::cout << denominator(v) << std::endl;
    +
    +cpp_rational w(2, 3);  // component wise constructor
    +std::cout << w << std::endl; // prints 2/3
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html new file mode 100644 index 00000000..8f1f28fe --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html @@ -0,0 +1,138 @@ + + + +gmp_rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/gmp.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +class gmp_rational;
    +
    +typedef mp_number<gmp_rational >         mpq_rational;
    +
    +}} // namespaces
    +
    +

    + The gmp_rational back-end + is used via the typedef boost::multiprecision::mpq_rational. + It acts as a thin wrapper around the GMP + mpq_t to provide a rational + number type that is a drop-in replacement for the native C++ number types, + but with unlimited precision. +

    +

    + As well as the usual conversions from arithmetic and string types, instances + of mp_number<gmp_rational> + are copy constructible and assignable from: +

    +
      +
    • + The GMP native types: mpz_t, mpq_t. +
    • +
    • + mp_number<gmp_int>. +
    • +
    +

    + There is also a two-argument constructor that accepts a numerator and denominator + (both of type mp_number<gmp_int>). +

    +

    + There are also non-member functions: +

    +
    mpz_int numerator(const mpq_rational&);
    +mpz_int denominator(const mpq_rational&);
    +
    +

    + which return the numerator and denominator of the number. +

    +

    + It's also possible to access the underlying mpq_t + via the data() + member function of mpq_rational. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed mpq_rationals + have the value zero (this is the GMP + default behavior). +
    • +
    • + Division by zero results in a hardware exception inside the GMP library. +
    • +
    • + No changes are made to the GMP + library's global settings, so this type can coexist with existing + GMP code. +
    • +
    • + The code can equally be used with MPIR + as the underlying library - indeed that is the preferred option on + Win32. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/gmp.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +mpq_rational v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +v /= 10;
    +
    +std::cout << v << std::endl; // prints 1000! / 10
    +std::cout << numerator(v) << std::endl;
    +std::cout << denominator(v) << std::endl;
    +
    +mpq_rational w(2, 3);  // component wise constructor
    +std::cout << w << std::endl; // prints 2/3
    +
    +// Access the underlying data:
    +mpq_t q;
    +mpq_init(q);
    +mpq_set(q, v.backend().data());
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html new file mode 100644 index 00000000..6b4853f1 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html @@ -0,0 +1,58 @@ + + + +rational_adapter + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    namespace boost{ namespace multiprecision{
    +
    +template <class IntBackend>
    +class rational_adpater;
    +
    +}}
    +
    +

    + The class template rational_adapter + is a back-end for mp_number + which converts any existing integer back-end into a rational-number back-end. +

    +

    + So for example, given an integer back-end type MyIntegerBackend, + the use would be something like: +

    +
    typedef mp_number<MyIntegerBackend>                    MyInt;
    +typedef mp_number<rational_adapter<MyIntegerBackend> > MyRational;
    +
    +MyRational r = 2;
    +r /= 3;
    +MyInt i = numerator(r);
    +assert(i == 2);
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html new file mode 100644 index 00000000..25520372 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html @@ -0,0 +1,115 @@ + + + +tommath_rational + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + #include <boost/multiprecision/tommath.hpp> +

    +
    namespace boost{ namespace multiprecision{
    +
    +typedef rational_adpater<tommath_int>        tommath_rational;
    +typedef mp_number<tommath_rational >         tom_rational;
    +
    +}} // namespaces
    +
    +

    + The tommath_rational back-end + is used via the typedef boost::multiprecision::tom_rational. + It acts as a thin wrapper around boost::rational<tom_int> to provide a rational number type that + is a drop-in replacement for the native C++ number types, but with unlimited + precision. +

    +

    + The advantage of using this type rather than boost::rational<tom_int> directly, is that it is expression-template + enabled, greatly reducing the number of temporaries created in complex + expressions. +

    +

    + There are also non-member functions: +

    +
    tom_int numerator(const tom_rational&);
    +tom_int denominator(const tom_rational&);
    +
    +

    + which return the numerator and denominator of the number. +

    +

    + Things you should know when using this type: +

    +
      +
    • + Default constructed tom_rationals + have the value zero (this the inherited Boost.Rational behavior). +
    • +
    • + Division by zero results in a boost::bad_rational + exception being thrown (see the rational number library's docs for + more information). +
    • +
    • + No changes are made to libtommath's + global state, so this type can safely coexist with other libtommath + code. +
    • +
    • + Performance of this type has been found to be pretty poor - this need + further investigation - but it appears that Boost.Rational needs some + improvement in this area. +
    • +
    +
    + + Example: +
    +

    +

    +
    #include <boost/multiprecision/tommath.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +tom_rational v = 1;
    +
    +// Do some arithmetic:
    +for(unsigned i = 1; i <= 1000; ++i)
    +   v *= i;
    +v /= 10;
    +
    +std::cout << v << std::endl; // prints 1000! / 10
    +std::cout << numerator(v) << std::endl;
    +std::cout << denominator(v) << std::endl;
    +
    +tom_rational w(2, 3); // Component wise constructor
    +std::cout << w << std::endl; // prints 2/3
    +
    +

    +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 00000000..91f25a9e --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,126 @@ + + + +Chapter 1. Boost.Multiprecision + + + + + + +
    Next
    + + + + +

    Last revised: April 13, 2012 at 15:27:12 GMT

    +
    +
    Next
    + + From 12fa743b47dc0877eb38bbd93d92af7309ef6fc3 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 13 Apr 2012 16:51:01 +0000 Subject: [PATCH 170/256] Improve class index. [SVN r77950] --- .../boost_multiprecision/indexes/s01.html | 16 ++-- .../boost_multiprecision/indexes/s02.html | 56 ++++++++++--- .../boost_multiprecision/indexes/s03.html | 16 ++-- .../boost_multiprecision/indexes/s04.html | 82 +++++++++++-------- doc/html/index.html | 2 +- doc/index.idx | 9 +- 6 files changed, 118 insertions(+), 63 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index e452e983..f9f2bbf8 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,10 +13,10 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    -

    A B C D E F I L M P R S T Z

    +Function Index
    +

    A B C D E F I L M P R S T Z

    A @@ -166,7 +166,7 @@
    -P +P
    • precision

      @@ -176,7 +176,7 @@
    -R +R
    • @@ -189,7 +189,7 @@
    -S +S
    • @@ -206,14 +206,14 @@
    -T +T
    -Z +Z
    • zero

      diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 34f35429..b541c91b 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,27 +13,59 @@
      PrevUpHomeNext
      -
      +

      -Class Index

      -

      M T

      +Class Index
    +

    C G M N T

    -M +C +
    +
    +
    +G +
    +
    +
    +M +
    +
    +
    +N
    -T +T
    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index e3dfc498..34eeb3c1 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,13 +13,13 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    -

    C I L M T

    +Typedef Index
    +

    C I L M T

    -C +C
    • @@ -47,21 +47,21 @@
    -I +I
    -L +L
    -M +M
    • @@ -161,7 +161,7 @@
    -T +T
    • tommath_rational

    • diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 0c8231f2..08db6751 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,20 +12,20 @@
      PrevUpHome
      -
      +

      -Index

      -

      A B C D E F G I L M O P R S T Z

      +Index
    +

    A B C D E F G I L M N O P R S T Z

    -A +A
    -B +B
    • @@ -54,7 +54,7 @@
    -C +C
    -D +D
    -E +E
    -F +F
    -G +G
    -I +I
    -L +L
    • @@ -260,7 +266,7 @@
    -M +M
  • @@ -318,6 +324,7 @@
  • mpfr_float_1000

  • mpfr_float_50

  • mpfr_float_500

  • +
  • mpfr_float_backend

  • @@ -374,11 +381,11 @@
  • bit_test

  • bit_unset

  • compare

  • +
  • component_type

  • default_precision

  • divide_qr

  • fpclassify

  • integer_modulus

  • -
  • Introduction

  • iround

  • isfinite

  • isinf

  • @@ -392,6 +399,7 @@
  • ltrunc

  • miller_rabin_test

  • mp_number

  • +
  • number_category

  • precision

  • round

  • sign

  • @@ -418,14 +426,21 @@
    -O +N +
    +
    +
    +O
    -P +P
    • @@ -445,7 +460,7 @@
    -R +R
    • @@ -458,7 +473,7 @@
    -S +S
    • @@ -475,10 +490,14 @@
    -T +T
    -Z +Z
    • zero

      diff --git a/doc/html/index.html b/doc/html/index.html index 91f25a9e..07e5aa99 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -117,7 +117,7 @@
    - +

    Last revised: April 13, 2012 at 15:27:12 GMT

    Last revised: April 13, 2012 at 16:48:43 GMT


    diff --git a/doc/index.idx b/doc/index.idx index fc9adc82..629072a4 100644 --- a/doc/index.idx +++ b/doc/index.idx @@ -1,3 +1,11 @@ +# Copyright 2011 John Maddock. Distributed under the Boost +# Software License, Version 1.0. (See accompanying file +# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# +# Rewrite the class scanner to accept declarations, not just definitions, +# as the docs don't include full definitions. +# +!define-scanner class_name "^[[:space:]]*(template[[:space:]]*<[^;:{]+>[[:space:]]*)?(class|struct)[[:space:]]*(\<\w+\>([[:blank:]]*\([^)]*\))?[[:space:]]*)*(\<\w*\>)[[:space:]]*(<[^;:{]+>)?[[:space:]]*(\{|:[^;\{()]*\{)" "(?:class|struct)[^;{]+\\<\5\\>\\s*[;{]" \5 !scan-path boost/multiprecision .*\.hpp true @@ -8,4 +16,3 @@ - From 462bec3925a0391d18fce7948040d08f958289e8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 14 Apr 2012 16:51:02 +0000 Subject: [PATCH 171/256] Fix ldexp/frexp in default_ops.hpp. Improve 64-bit platform detection in cpp_int_core.hpp. Get examples building with GCC [SVN r77971] --- example/floating_point_examples.cpp | 10 ++--- .../multiprecision/detail/cpp_int_core.hpp | 2 +- .../multiprecision/detail/default_ops.hpp | 37 ++++++++++++------- test/Jamfile.v2 | 2 +- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp index 701d4b0b..6cb1f391 100644 --- a/example/floating_point_examples.cpp +++ b/example/floating_point_examples.cpp @@ -441,7 +441,7 @@ mp_type mysin(const mp_type& x) /*` Calling the function like so: - std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific; + std::cout << std::setprecision(std::numeric_limits< ::mp_type>::digits10) << std::scientific; std::cout << mysin(mp_type(1)) << std::endl; Yields the expected output: @@ -657,9 +657,9 @@ int main(int, char**) //] - std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific; - std::cout << mysin(boost::math::constants::pi<::mp_type>() / 4) << std::endl; - std::cout << boost::multiprecision::sin(boost::math::constants::pi<::mp_type>() / 4) << std::endl; + std::cout << std::setprecision(std::numeric_limits< ::mp_type>::digits10) << std::scientific; + std::cout << mysin(boost::math::constants::pi< ::mp_type>() / 4) << std::endl; + std::cout << boost::multiprecision::sin(boost::math::constants::pi< ::mp_type>() / 4) << std::endl; return 0; } @@ -683,4 +683,4 @@ Program output: 2.70670566473225383787998989944968806815253190143120e-01 7.0710678118654752440084436210484903928483593768847403658833986900e-01 7.0710678118654752440084436210484903928483593768847403658833986900e-01 -*/ \ No newline at end of file +*/ diff --git a/include/boost/multiprecision/detail/cpp_int_core.hpp b/include/boost/multiprecision/detail/cpp_int_core.hpp index 63d9efbf..e63fb2ed 100644 --- a/include/boost/multiprecision/detail/cpp_int_core.hpp +++ b/include/boost/multiprecision/detail/cpp_int_core.hpp @@ -8,7 +8,7 @@ namespace boost{ namespace multiprecision{ -#if defined(__GNUC__) && !defined(BOOST_INTEL) && defined(__x86_64__) +#if defined(__GNUC__) && !defined(BOOST_INTEL) && defined(__WORDSIZE) && (__WORDSIZE == 64) typedef boost::uint64_t limb_type; typedef boost::int64_t signed_limb_type; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index ee90315a..2f6f1b5f 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -1153,20 +1153,7 @@ func(const Arithmetic& a, const mp_number& arg)\ }\ -#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\ -namespace detail{\ -template \ -struct BOOST_JOIN(func, _funct)\ -{\ - void operator()(Backend& result, Backend const& arg, Arg2 a)const\ - {\ - using default_ops:: BOOST_JOIN(eval_,func);\ - BOOST_JOIN(eval_,func)(result, arg, a);\ - }\ -};\ -\ -}\ -\ +#define HETERO_BINARY_OP_FUNCTOR_B(func, Arg2)\ template \ inline detail::mp_exp<\ detail::function\ @@ -1216,6 +1203,24 @@ func(const mp_number& arg, Arg2 const& a)\ return result;\ }\ +#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\ +namespace detail{\ +template \ +struct BOOST_JOIN(func, _funct)\ +{\ + template \ + void operator()(Backend& result, Backend const& arg, Arg a)const\ + {\ + using default_ops:: BOOST_JOIN(eval_,func);\ + BOOST_JOIN(eval_,func)(result, arg, a);\ + }\ +};\ +\ +}\ +\ +HETERO_BINARY_OP_FUNCTOR_B(func, Arg2) + + UNARY_OP_FUNCTOR(abs) UNARY_OP_FUNCTOR(fabs) UNARY_OP_FUNCTOR(sqrt) @@ -1238,6 +1243,10 @@ UNARY_OP_FUNCTOR(tanh) HETERO_BINARY_OP_FUNCTOR(ldexp, int) HETERO_BINARY_OP_FUNCTOR(frexp, int*) +HETERO_BINARY_OP_FUNCTOR_B(ldexp, long) +HETERO_BINARY_OP_FUNCTOR_B(frexp, long*) +HETERO_BINARY_OP_FUNCTOR_B(ldexp, long long) +HETERO_BINARY_OP_FUNCTOR_B(frexp, long long*) BINARY_OP_FUNCTOR(pow) BINARY_OP_FUNCTOR(fmod) BINARY_OP_FUNCTOR(atan2) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 7087da06..8a064ad9 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -665,7 +665,7 @@ run ../example/tommath_snips.cpp $(TOMMATH) : # input files : # requirements [ check-target-builds ../config//has_tommath : : no ] ; -run ../example/floating_point_examples.cpp ; +run ../example/floating_point_examples.cpp : : : gcc:-std=c++0x ; if $(enable-specfun) { From a53f4f3fee66a0d449a49dd8ea10f157895f5c6c Mon Sep 17 00:00:00 2001 From: Christopher Kormanyos Date: Sun, 15 Apr 2012 09:27:55 +0000 Subject: [PATCH 172/256] - Re-factor constants in cpp_dec_float.hpp. - Tighten up tolerance on multiply, do trivial cleanup in cpp_dec_float. - Change digit progression in iteration in sqrt and atan. [SVN r77983] --- .../boost/multiprecision/cpp_dec_float.hpp | 74 +++++++++---------- .../multiprecision/detail/functions/trig.hpp | 4 +- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index cce91bc3..08c38f75 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -36,27 +36,32 @@ public: typedef long long exponent_type; - static const boost::int32_t mp_radix = 10; - static const boost::int32_t cpp_dec_float_digits = Digits10; + static const boost::int32_t mp_radix = 10; static const boost::int32_t cpp_dec_float_digits10_setting = Digits10; static const boost::int32_t cpp_dec_float_digits10_limit = boost::integer_traits::const_max - 100; - static const boost::int32_t cpp_dec_float_digits10 = ((cpp_dec_float_digits10_setting < static_cast(30)) ? static_cast(30) : ((cpp_dec_float_digits10_setting > cpp_dec_float_digits10_limit) ? cpp_dec_float_digits10_limit : cpp_dec_float_digits10_setting)); - static const boost::int32_t cpp_dec_float_digits10_extra = static_cast(((static_cast(cpp_dec_float_digits10) * 15LL) + 50LL) / 100LL); - static const boost::int32_t cpp_dec_float_max_digits10 = static_cast(cpp_dec_float_digits10 + ((cpp_dec_float_digits10_extra < static_cast(5)) ? static_cast(5) : ((cpp_dec_float_digits10_extra > static_cast(30)) ? static_cast(30) : cpp_dec_float_digits10_extra))); - static const boost::int64_t cpp_dec_float_max_exp10 = 2776234983093287512; + static const boost::int32_t cpp_dec_float_digits10 = ((Digits10 < 30) ? 30 : ((Digits10 > cpp_dec_float_digits10_limit) ? cpp_dec_float_digits10_limit : Digits10)); + static const boost::int64_t cpp_dec_float_max_exp10 = 2776234983093287512; static const boost::int64_t cpp_dec_float_min_exp10 = -2776234983093287512; static const boost::int64_t cpp_dec_float_max_exp = (cpp_dec_float_max_exp10 / 301LL) * 1000LL; static const boost::int64_t cpp_dec_float_min_exp = (cpp_dec_float_min_exp10 / 301LL) * 1000LL; - static const boost::int32_t mp_elem_digits10 = static_cast(8); + + static const boost::int32_t mp_elem_digits10 = static_cast(8); BOOST_STATIC_ASSERT(0 == cpp_dec_float_max_exp10 % mp_elem_digits10); BOOST_STATIC_ASSERT(cpp_dec_float_max_exp10 == -cpp_dec_float_min_exp10); private: - static const boost::int32_t cpp_dec_float_digits10_num_base = static_cast((cpp_dec_float_max_digits10 / mp_elem_digits10) + (((cpp_dec_float_max_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); - static const boost::int32_t mp_elem_number = static_cast(cpp_dec_float_digits10_num_base + 2); - static const boost::int32_t mp_elem_mask = static_cast(100000000); + static const boost::int32_t cpp_dec_float_digits10_num_base = static_cast((cpp_dec_float_digits10 / mp_elem_digits10) + (((cpp_dec_float_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); + + // There are three guard limbs. + // 1) The first limb has 'play' from 1...8 decimal digits. + // 2) The last limb also has 'play' from 1...8 decimal digits. + // 3) One limb can get lost when justifying after multiply, + // as only half of the triangle is multiplied and a carry + // from below is missing. + static const boost::int32_t mp_elem_number = static_cast(cpp_dec_float_digits10_num_base + 3); + static const boost::int32_t mp_elem_mask = static_cast(100000000); public: static const boost::int32_t cpp_dec_float_total_digits10 = mp_elem_number * mp_elem_digits10; @@ -181,8 +186,8 @@ public: prec_elem(mp_elem_number) { // TODO: this doesn't round! - std::copy(f.data.begin(), f.data.begin() + std::min(f.prec_elem, prec_elem), data.begin()); - precision(std::min(f.prec_elem, prec_elem)); + std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); + precision((std::min)(f.prec_elem, prec_elem)); } template @@ -215,7 +220,7 @@ public: { init.do_nothing(); static bool init = false; - static const std::string str_max = std::string("9." + std::string(static_cast(cpp_dec_float_max_digits10), static_cast('9'))) + static const std::string str_max = std::string("9." + std::string(static_cast(cpp_dec_float_total_digits10), static_cast('9'))) + std::string("e+" + boost::lexical_cast(cpp_dec_float_max_exp10)); static cpp_dec_float val_max; if(!init) @@ -327,8 +332,8 @@ public: exp = f.exp; neg = f.neg; fpclass = static_cast(static_cast(f.fpclass)); - std::copy(f.data.begin(), f.data.begin() + std::min(f.prec_elem, prec_elem), data.begin()); - precision(std::min(f.prec_elem, prec_elem)); + std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); + precision((std::min)(f.prec_elem, prec_elem)); return *this; } cpp_dec_float& operator= (long long v) @@ -431,10 +436,10 @@ public: signed long long extract_signed_long_long (void) const; unsigned long long extract_unsigned_long_long(void) const; void extract_parts (double& mantissa, boost::int64_t& exponent) const; - cpp_dec_float extract_integer_part (void) const; + cpp_dec_float extract_integer_part (void) const; void precision(const boost::int32_t prec_digits) { - if(prec_digits >= cpp_dec_float_digits10) + if(prec_digits >= cpp_dec_float_total_digits10) { prec_elem = mp_elem_number; } @@ -525,18 +530,12 @@ typename cpp_dec_float::initializer cpp_dec_float::init; template const boost::int32_t cpp_dec_float::mp_radix; template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits; -template const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_setting; template const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit; template const boost::int32_t cpp_dec_float::cpp_dec_float_digits10; template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_extra; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_max_digits10; -template const boost::int64_t cpp_dec_float::cpp_dec_float_max_exp; template const boost::int64_t cpp_dec_float::cpp_dec_float_min_exp; @@ -855,7 +854,8 @@ cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float boost::array(mp_elem_number + static_cast(1))> w = {{ 0u }}; - mul_loop_uv(data.data(), v.data.data(), w.data(), (std::min)(prec_elem, v.prec_elem)); + const boost::int32_t prec_mul = (std::min)(prec_elem, v.prec_elem); + mul_loop_uv(data.data(), v.data.data(), w.data(), prec_mul); // Copy the multiplication data into the result. // Shift the result and adjust the exponent if necessary. @@ -863,11 +863,11 @@ cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float { exp += static_cast(mp_elem_digits10); - std::copy(w.begin(), w.end() - 1u, data.begin()); + std::copy(w.begin(), w.begin() + prec_mul, data.begin()); } else { - std::copy(w.begin() + 1u, w.end(), data.begin()); + std::copy(w.begin() + 1u, w.begin() + (prec_mul + 1), data.begin()); } // Set the sign of the result. @@ -1146,13 +1146,13 @@ cpp_dec_float& cpp_dec_float::calculate_inv() // is used. During the iterative steps, the precision of the calculation is limited // to the minimum required in order to minimize the run-time. - static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; + static const boost::int32_t double_digits10_minus_a_few = std::numeric_limits::digits10 - 3; - for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_dec_float_max_digits10; digits *= static_cast(2)) + for(boost::int32_t digits = double_digits10_minus_a_few; digits <= cpp_dec_float_total_digits10; digits *= static_cast(2)) { // Adjust precision of the terms. - precision(static_cast(digits * static_cast(2))); - x.precision(static_cast(digits * static_cast(2))); + precision(static_cast((digits + 10) * static_cast(2))); + x.precision(static_cast((digits + 10) * static_cast(2))); // Next iteration. cpp_dec_float t(*this); @@ -1221,13 +1221,13 @@ cpp_dec_float& cpp_dec_float::calculate_sqrt(void) // http://www.jjj.de/pibook/pibook.html // http://www.amazon.com/exec/obidos/tg/detail/-/3540665722/qid=1035535482/sr=8-7/ref=sr_8_7/104-3357872-6059916?v=glance&n=507846 - static const boost::uint32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; + static const boost::uint32_t double_digits10_minus_a_few = std::numeric_limits::digits10 - 3; - for(boost::int32_t digits = double_digits10_minus_one; digits <= cpp_dec_float_max_digits10; digits *= 2u) + for(boost::int32_t digits = double_digits10_minus_a_few; digits <= cpp_dec_float_total_digits10; digits *= 2u) { // Adjust precision of the terms. - precision(digits * 2); - vi.precision(digits * 2); + precision((digits + 10) * 2); + vi.precision((digits + 10) * 2); // Next iteration of vi cpp_dec_float t(*this); @@ -1669,7 +1669,7 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: boost::intmax_t org_digits(number_of_digits); boost::int64_t my_exp = order(); if(number_of_digits == 0) - number_of_digits = cpp_dec_float_max_digits10; + number_of_digits = cpp_dec_float_total_digits10; if(f & std::ios_base::fixed) { number_of_digits += my_exp + 1; @@ -2785,7 +2785,7 @@ inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float r2; eval_frexp(r2, result, &e2); - // overflow prtection: + // overflow protection: if((t > 0) && (e2 > 0) && (t > (std::numeric_limits::max)() - e2)) BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is too large to be represented as a power of 2.")); if((t < 0) && (e2 < 0) && (t < (std::numeric_limits::min)() - e2)) @@ -2855,7 +2855,7 @@ namespace std static const bool is_iec559 = false; static const int digits = Digits10; static const int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; - static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_digits10; + static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10 + 1; static const boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. static const boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index dbe134fd..73de53d4 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -653,10 +653,10 @@ void eval_atan(T& result, const T& x) result = fp_type(std::atan(d)); // Newton-Raphson iteration - static const boost::int32_t double_digits10_minus_one = std::numeric_limits::digits10 - 1; + static const boost::int32_t double_digits10_minus_a_few = std::numeric_limits::digits10 - 3; T s, c, t; - for(boost::int32_t digits = double_digits10_minus_one; digits <= std::numeric_limits >::digits10; digits *= 2) + for(boost::int32_t digits = double_digits10_minus_a_few; digits <= std::numeric_limits >::digits10; digits *= 2) { eval_sin(s, result); eval_cos(c, result); From 538415e0ef61285a3bfd2d170316a5532274fa29 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 15 Apr 2012 17:46:42 +0000 Subject: [PATCH 173/256] Correct wrong function-call argument in docs. Change max_digits10 in numeric_limits to include all the *possible* digits. [SVN r77996] --- doc/html/boost_multiprecision/indexes/s01.html | 4 ++-- doc/html/boost_multiprecision/indexes/s02.html | 4 ++-- doc/html/boost_multiprecision/indexes/s03.html | 4 ++-- doc/html/boost_multiprecision/indexes/s04.html | 4 ++-- doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html | 5 +++-- doc/html/index.html | 2 +- example/floating_point_examples.cpp | 3 ++- include/boost/multiprecision/cpp_dec_float.hpp | 2 +- 8 files changed, 15 insertions(+), 13 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index f9f2bbf8..87ffa2d8 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index b541c91b..be58bd14 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 34eeb3c1..97dafaf5 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 08db6751..ac6db077 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T Z

    diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html index 8acdc588..c8f5fb7e 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html @@ -122,8 +122,9 @@

    Calling the function like so:

    -
    std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific;
    -std::cout << mysin(mp_type(1)) << std::endl;
    +
    mp_type pid4 = boost::math::constants::pi<mp_type>() / 4;
    +std::cout << std::setprecision(std::numeric_limits< ::mp_type>::digits10) << std::scientific;
    +std::cout << mysin(pid4) << std::endl;
     

    Yields the expected output: diff --git a/doc/html/index.html b/doc/html/index.html index 07e5aa99..444abace 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -117,7 +117,7 @@

    - +

    Last revised: April 13, 2012 at 16:48:43 GMT

    Last revised: April 15, 2012 at 17:36:47 GMT


    diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp index 6cb1f391..7c391ddd 100644 --- a/example/floating_point_examples.cpp +++ b/example/floating_point_examples.cpp @@ -441,8 +441,9 @@ mp_type mysin(const mp_type& x) /*` Calling the function like so: + mp_type pid4 = boost::math::constants::pi() / 4; std::cout << std::setprecision(std::numeric_limits< ::mp_type>::digits10) << std::scientific; - std::cout << mysin(mp_type(1)) << std::endl; + std::cout << mysin(pid4) << std::endl; Yields the expected output: diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 08c38f75..417c0f81 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -2855,7 +2855,7 @@ namespace std static const bool is_iec559 = false; static const int digits = Digits10; static const int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; - static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10 + 1; + static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_total_digits10; static const boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. static const boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. From 1f15fc5ad9cbe2e5f07c0d6bd75f70f19557ddbd Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 16 Apr 2012 16:28:57 +0000 Subject: [PATCH 174/256] Deleted some dead files, moved some others around. [SVN r78014] --- .../generic_numerics/generic_numerics.pdf | Bin 98380 -> 0 bytes .../generic_area_of_a_circle.cpp | 45 -------- .../generic_derivative.cpp | 79 ------------- .../generic_numerics_src/generic_integral.cpp | 105 ------------------ .../{ => depricated}/arithmetic_backend.hpp | 0 .../{ => depricated}/fixed_int.hpp | 0 6 files changed, 229 deletions(-) delete mode 100644 example/generic_numerics_examples/generic_numerics/generic_numerics.pdf delete mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_area_of_a_circle.cpp delete mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp delete mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp rename include/boost/multiprecision/{ => depricated}/arithmetic_backend.hpp (100%) rename include/boost/multiprecision/{ => depricated}/fixed_int.hpp (100%) diff --git a/example/generic_numerics_examples/generic_numerics/generic_numerics.pdf b/example/generic_numerics_examples/generic_numerics/generic_numerics.pdf deleted file mode 100644 index cee1fb74db16f8a5ea552fb10c32a77af1425982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98380 zcmeFZby!th*EdQ^clV}2x;v#irAt6Uy1S*j6{IDkrMp48L%I==?ml~a%cE~x-}k)l zxz2wFuDNEcF~%Ho%=*pPi&9BUf`NsR1Dqf?988U@;oatYG__(DI8l9842-gv z9F!g16Xpp~Xy?hGwW|yL1u6VVbxzB`^pZAhu*IJ|LqaG9WvLY!;qrpCPUV!cnd)2%j3WW!goFLS(S-m2Roa#EoOyjhd?ieM>D zApWVz;f(D0Q~EBXmxgmNPiElm6IXM_c;1tGw;wnM>IeyAja9|*9}l*+4iNSoyxt+@0z<*o&< zAiO&EugP?g-b!8YS56tu9#!cZewbaTWHuaZ#$MgeCMZUjP$L%)V$k{WMywyVPQ!WW z!XHvKY}Kxd5feR#yT04@ns)aHLPhQdfQ4Ydxa=HO9)4KH`Q1T?Lgsb-)n`nFjcM2Y zVxh7~^k#r@SDa=Ru4pY?`Eqkt1g4;-*x1;gvzLFcB1b&QBCFkNIF1d}3#1a>m z{3Ctd!aZ)YTM2;&-mIPOE7>gg@Szd}Sq#|_0q_*m?jU?U^f9>ilzr@M0XZ<=42rug zIV4SA$EcIcXUo=Mse>)4vm8LAFZru}8HEdx zr|J<`f3N!2UHC^;J`NbFxNa|fBwy$u$}vKDbi$)RJkrz?xUprG1f0dQ;@E6-BaY}G zD&JNgiy{1B{~zYP!U*j2hn(KlLVg~MhI5KuXH7HS7*dwr<1s%wGH+_7I^LZ@K6tlw zXIBX`j4LvoY;3=(w}*az-VTdlJNeFzNYy@(Kq||AYDzD~)_MoJ3>x;B9c-;qs75$4 z@;hPp_3Au^>>FsLcZl8I$So6JzBAHRCpG`js4WQOiHQs17$k+OlH)xZ)g&iVF`e^-Ez8<8b2nFNvo%*$iKY^vbG=#IrZm8`#4sonr;O62Ud zhf~d~^n4a9y#psaryFizI()u+LC2Xg3r>sLg`WuA3lgh-f=DfqQMVI$T&Nr~oDD-V zp9UGEt$75cE%h?A01B1vaQN@m%x7M6Tj^81H_pGYUcM8}4G=Nl+x-sdLCirm3&9hv z7&3GuYrP7gYY_zLl6VR}##4rXWtTRyMC7+)1JN#vFYI#EQEgw>gx@}ZZ&d5HMl6D# zEJR`_&|0S}`r!=m!xEt(`yQ>mK2$o4qgYH?@ZBd2>qALWRB(ONO%pdgeaaZh09B3$ zw_6Oc0_)xa|1zq$*T!4=$s1zd5=wYl3*F})EWofCDVUe0Cc!l8d)twAgxbq_rYJYH z-H|_kY^lN(s=Q<^I^BL!KFq!=DbO9A*c$A-`alY{sfd0>m~8fjIfxKkf3Jce>Q?E! zUy!u#hs`8^4)B|?3}co@0kD9Yq+)4J`jAcxl9vv`G5PGl6YNjXVy?+l$+g+we&F)O zJeUt)engBvaBmad;`rG?IG#X>`5CE**L+U;{ONOxGy|T9BvsJ&VkrKhMao*Cw7SP3 zn)Hvao4#kBasEsTUaQ1DtY$8F4^snn-YcfyCvKPuHA8yo<8VMcHY?fe^HI)@Jiub8 zEsH6Bc=^M{`u)Se4V_hG3a9K73NF2c)jVWXrav+LlD4)cz9oT5$9q4yHQCYkqeJ;D z4?=nWSc6-Dv&iU)^&fQ;JPV}LicG5I|Y0z<$#6rT03xm3;F&J@6;WMpOv&-BXH#>v#i z$q@jWY*pZyR7@RhogIu#9RV!=B*>eZSQv@gx&d^Ufe9Qu9E_}7oB(ci7DjF!J$RrL z2Ov9uzmG6T4u zgPZ`K-$7tLEFe8p0Kl1^Ny)+1Sk=@CpaU$8m;``H&D6~apa%p2|Iz}K+p`+KAp|Qk zJM+H_Ar7>)Vm5lwd@>C>>XbsK7p_?J?>hW(>p}5p_2F$v`ilLBhvy+~kI3Ih@Xmo?}bWo2kv4E`>+u>Zzt z#6EgawV}XHkvEMkfnb(O`H7pic1sxYoR#H?MfzY{>0fSmoYaByx!|FWsPXo8dvBHw!plyAwG&rG#SDTV zXw9{<)#C|cB$*jD2bGQYZdGa)Z$nt-XNdD<*R-pK!T0nb`OShL9Wjeuj?K-il{(X> zlneRt@?h~s^o1KZ}^uskDfa9d{$ew*U`-G%c( zlIt#hDfRDZ~k=F?PRx}5Cby+Zd|L^D!km%fn_HYP^}t|`szoO zkr(U~;@Iu%6`=U6`uljoQT55z#0(ZYdu5!* z{E;BgPzZ`qIPUemZ#y&{DmTjX{JJ|_&4QHiGpCXv=abYV!ZLNKg|{Emk!p}>Mj zfrVm7LUumsZ}_Bs7oHU>w?k*2%B^yOm{HJ65I?%A`z6WgcKk=Q7{tdzx0h~nUOsL# z2mPZNaQ7^b_>w!=e44fUjA1y0d^cb%-Ybm>uGOns>X`Ro4RL38mVmVU_K&I9t<<`M_~J4nP@ zy9BzQ1Xmn!?fI4|wM9RPZap+`THEHYSIT{tu(H9xY^PLtiPmax-KtG_X0Qysd>v78 zCHV}0RB>H>!$y>Qls{_17H^sR&MWHLn6tK1V&UYD!eqvHwB%MLgDXi#(ZGx0_ecft zM2v$d>3I>CZ#&UPLpp>&nA>gIM}wV0zS;jS(}IVLqb6)$U_@V1zqz#Pau6#D5E)SbpJ}|A3!BkPC>Y{-SLVtm&zYx^lxQZLV@{Fxf?@v&PO)(Fu>HGmsz*!O zmVgJl^-cqmIfPNZ&ipW9a<>bSSNQ5Pi}^}?B&qCHEtqxOKv-bM{nZVzRdI zs!3do*PZBI*9RKzM={dGHzT*5a3hIIJzn0ImjX=Kn)fa3YR5eVu#Jp~FAB4wiq}W0 zd_O&Goc_Fzx)e9;kkQdyUS%H6<9v^l!Lt!QD1K5~Lall*__Fq0b=hLi$;;ZRxmxBU zCSM_6V=MoIPAOg$gnT=6MYD%=fP@rM!b~-olhTblt2&x=x3^0_Sp)`QTsh4td8!Uos%eK50II!@Y2Tyt+WBwodLxG5l%{dBgFXxv0z-%Y%U zc1$8&Vc9Y@(-3o|NtwEF$ZSO}f~=glVU>Y3d4DQkj!K4Z0tb7*S{qj1*4{j3GV{87 zNk6f!vZp~GeFaxTtCQhu1QB*etFs1?0nr2>v7g(Vj7$tJyEK9IGos;Slt86Md>3Op zC6^f1*rd(v7u7n&C30aI;7Hap8rT#+^sW zMX!u0iQKVRwP><@#zIWVDE0lXn^tO9n=5>i0{F(bDl@r5LU0VrVX2=v< zQwra;rQISA-qEod^xq2;p5;i(m51kB#aTT8Wf+y2lRitf~gleN*-W(%6m8-WKme4kdmqr<(o4XxJEBKEXbA-u!r$`}>{F;jl^ z?ATQ5MfGo>sfLuBmvh7tW|9G5ewo0&9oB_T^DVI)|Mhs-Mhw)N9pQFI)-!vyX2j{r(Aky zs2Z`IADRZEVOg@K^+_Z&efq^7=f)y&hBOPB_Y~Gw(N>2*A9&fHc&hp2a~B_9I^`x6lvOg`{KPzU8N#-3`H0 zt8XSKZtK1LX8MzSS0+0nHnA+YHf0T!G9YWVfBDB(LK&(k0u?6KDT1)rTlJ}T*!RZ$ zwS1OREs>nNsbbvtV}n0RMcoP5LJl))^0LINSt`cM8-t>-2I3I#PyF~B=T+S9rx?38 z-K8R&5uVJ)dT$*PIPY)4ML4%!4ehbJ2L{<|JM|Rc+k}+AUf_g?`Am{Ez}UULjKd+S zjdOyt(6q0fG-#H7q3l$vMS)*lxA5wrt2^~{3>LYcq&iZy>()k{DQ+jf$(zG~7(GNg zxl&Ak!9O<7&0uuMwW(N~qpeZPzoYn&$3-ellDF0+)vDoLH8g!xEwgBiqdBwLJEo9` zWDm<-N{P|oNvcRKXJ!!m-5Qq zxx-C<*QmN+`o02%{!_|tG}2pOf!>uVkiT)*-63LzazrwC#Kx6LcA=zIpdg?+!+P(P zkVhorK@6k6)7F`jwfI3(2 z?9W;L!7hITmOn7&FYLnc7hw4d$Na%A9Dg>2{y-Nd2^IkB|6o&y^=~ludsB#qmGd7E z1Ngt6D=lft+7fV~w(e^j*Td(qte{L^kP3VKC@r*!Cgs*{&=W4#F0K}ids<#oYMK~W z)KuQ!{9($yJv6ePMoQb3hFE4(V+J0Olq^sDK?y&7cIX9UXQg!iVYnqXx-NEc^;Fkg zzoJH6FDr@yuCzfmI3up&?O=%Ig+Dq93y~XM)W5IRHR`WHBxFy9m zz!msh%gBAv?YWXh=C(jPE=q0bxjjE`Pp%3-FF_1@`+MuwXkyN3XJl{iWfD&~MqW6z zkE^*6tGE2Hv+G_MdZ_G)SL)hoi|%QbtC&)UO#nN@Q_g;O4F}g1RV*VBJjW^h@{sk+ z5HCR~V;k0S8n|EsM09v=D2CA=hEr$MJ)Zc{kuSH!SPXI_h)yhglTHfg?F!P&`!=k3 zF=<9g&}HVq>!`uKZMLYDjXsOObx5d)v|mt4l^}|Tg@A>{9ftZ)Gy-@>{o~WCbJblW z2mRx62#yDHx7tHy)-@#apzM5>?WCtq$opf+gyQd&ngA<1ec#R`hv+J11PNFe^)0$v zp)+<6@iHE@4Ulo(S_?;%r?cL9D}0yDGFk6Hz+;+yF*5vCd&F$Auje*9gX~f5)}e9H zsTbaM6R?=lyEirFgQ!qv@N<3~2DM_ky8EOe0VjGUKDpYwR>db5=a{ zO*T_*{C9zBDRLHSpF|?9}_(#n12j z1XIaS`W#EorKCxKC zsnVhA5WJCj1A%MI-)dd!lL{t2wyR>{nDXcxeo-ICYZkXd%eAT+9(3@oO1+A-FUiX$?ONRq?N<5_ROY@q@Gm->%v{p zr>B6**KD83hoE{&-=?FB@NF>{9{C@6KT@k>`dD@2BV9U7+TevNY;d+iLAQpT%vjV_ zFaJcHfjO#9Yj)ZwdR-}QdV2QebQUT*4=o}U)h{iqI}x zWtS5jJ(+b;Q=(1Y=Tmd-u5BBi{>cydQ&eD3 zzF}y*Ik35YjeFsA6mbgcpRDN?W@@c_H&x=5ycKLX!|PWtQXiaHZCe9}-fHMyQv`!4 zM(g531uXdG)vC3>kwSPYSHFK&m>W9IA2|&vMlSw9`Rd^Ww&Gy{T%hh@TJxJ_&YfzN z!+eVq$>m+rB+3SUkAsK`XLLK&T$sJfMw2cr38MM&^jw_Nkd;s8(1thzilh%QK-$(W zKQIwbiUBH|LX?+Os2)y+VyXw6h|BYUX(_}toLCY~c1;sq+7F7*F|3G8ozgbhcwt9K?kaZV)^C< zfkl<178XVThAWS75v^0r<7Gw9r2kUEXh_0&C6Qw5<@p!NC*Nvto=hmFF8Xf)i^4J} zjcplYDAA?cLCQCUm}}lM7rTqp1Zqs=#C;Z%Z;Q(52}c+@+{~ARax1gewAmu_%gdJg z8}z7L_L^iz~AxgF3}02zW`BySqbQY>Wyg+mS)t-I}c) zAG|CCw4NufxU4%E-kTZgP9rdpF{t||IberW*{So`Hz7AGsD00_LtCKkH4w^q(0~OC*?2VKZ%?y zER4Wo>R-=4seh5Oa&Z8Urh&?Ha&j_q{mV{lpoIy@kUIZZ=s(%%58ZE=0qGO z0sQm)({=u7X}@~&@80>`)c+m-@7DTPoBfmf?~(A=cmV+B@~hKw0y_aKaFGs*gM3yl z?tgXY|68sg9*_gccy=Hj9^l#@*zf*voLm6lIP|YLC=7BSK6Z9?VBg~cZ~(_ZZjhY6 zXrFn0=>UBH9REcJlnvqmIX2+!QjpFdpB*R{L=TevtUD+VP#EO@T{ch{_B?*02fHVY5-Wa zziSCpW>7lF{n7zwv0rq+@^SwTgW}J0&$SII|1%#CQ2uimln#>fY&UjJ;H3GxMnQT! z*TS<8qWx87AkDvY{~ZR|=K0;T|Ewd3_BrjBen1{j9Fzw;$ljnZ(C1(Wtt&zQ&pCl8 zeoY$B?4TF_B!F5YFaj#~-}U%QCXkB_Scf1c5b>Yp^RG!9WTJmH9iW+?O#l-4J9{pW z*xwECUuOC{tG~k_zF#K!-E=rOIQ~`SU;2XD4~Xd5{VEVJi~nug`Ij7^431|9EH4jm zLIv6Qx!pX6f3*Q%J^X6JK%0T`2Zcd&|7sJUIH;|F=zh1OzvcWY2AHPwT!oGoxtw(wTMd9OrmCyLLP zlVYJ@Dg99`f3yTjDaRp)vlqRT7lXot0tW{#n&6|!l4=?sJxV|O^klHVoKzG4Fv8Dv zCdhX7^Vk6|Ev&FpNx_Z*6P+9a8@eBI@5RR%LsT#b>Cgb-bV!05sKK5uofo&rz-$PoPxNMhMr;7Fk)5HD~; zA-I&K>QSJ}c?alFqwMT^R`>27V2@uxgH@!bM;;&92~T50O9+!nwSxuNzxP~!DN0K0 zhX)_-XAJQa7ho`s6?hVlgK>6sh4bF+HZ*69Q3j&ZPY7ZIKDE<()m(@h@md^@ImoT^ zNeScgD)f*ZnxHSwkkSaQFDyRtDk3o~4dHGe!ijk2syUbj5%c6UOl0%wx3>0MU+^G* zp<(d$oK@e?cNho6j2!s&K?D;gnS+FyX{-@aoMArcz=wf84z7b0%=>ok{iNM*wxrBZnZCNZMBua)i_ zGhaX;g{A4(+(q2FEg_4Vk5kI<$vLS-2sj`k3$^r zpx7s*h-t_S_DYz=4`UJ9KkwSrB^~eZeio0*mz@l(0&;Bz1<}vP`|)DaZ-E&Xei!Z9 z_WB4d;=_k`7TU#d583xj1t0NWg0+W-%0iH>J4^t;=xHh8zI_XYBz=-QFUP)@f2y0t z4Y+n}d6FuMaFPIb@U3jGIkKhl@qHcm6k`MB=lhyjYz-S9`S{86=|DsUKy!$2@B6yr zDE4XP^l9LTf_ z2&tFA(?W5C|EgF{xYNnC205Cbb|@J45U#&}<717a?!9w8ZF?{V{V2;XvWI?Hxat;tUNbpIu^VL;~igKLFp z5T6m7PoMm_m!TeS{Yrh~8dD=` z{ya}1FQVewWbcFF@iZI^Pe!@k4AJ-o+}0_lHj4g833vV3aC*79`hv z4u&vAR%)pei#xEO6HD~EV47=o(EMxzHc8$hgX_7p+)FsPp&`C?gKSPdo)~X2j{J!( z2QxgeVxKX>9gsjj{;7|`cWJibn}~JTJyrUp%I<2zO8+~bMy3-eR<0ALqMFF=&?Rf= zDLCQ=$wj0u%}g|^Zx8l&o>r06PdEDKNEm1P628zYxZ(z}e<@WPY~0zAAmFb3p5oCL zc?N+g<3=>*Uj6d(*>xUH5p=cqe4ZA^+1kQj_K1+JjD+og0-^B(YYifDxNp$I^=UdE zSG8plw{h2#zrl3M@_4-qVfKcilIc*ed4uNGI5g+ zU1Cb#I>Y0E9&|6-(>G}GVm9)93;a_Ds&czD7-9B)GpeVYWkrOSu5j5riq}qfA$4rN zE@N0Qf-!~r*s0Fv(+t__!}wIrBGxDI#AH<|lWuN`T2SXvnKPkmJ#BU#UY-#>q%an= z{I_R(57UJ%TusUnpKixr4B`eNa#4T(3Z7dLrZkjYI)4iJNb)Z9J?l;gnKhccOYi3V zXNXU0LN=&N`E&9gP*{n48aikDcJsf8S(l5m`izwmoa<32camyq+u z8Qcc)D|!QaUPz`Zc4AII;@sA+;#@*Ql;MC&JvI&Pb4@-KCv*D2k1NMTwhf$4+cZG!Tzt@oRZ z3%sa*)*q2kQ2)%0Tr=~xK^w{z-Yu1p*L&2N#CzeAvf~$biIcWHvgN|W#aDI?GhAYf zP{5RJG1b@ej@PPHq^;03PK?HSA*qvR}?i5t*WoDqgk(Lclx7T=wvn02503*E2nkWjWP=sX0ADr#wUIr?M<7V;OSH7lna=>H1xR$vNkkII7*V?r>hUK7s-K>Z86K@N+9;R`>}bsNnrgg z(mmv5HinPEI@q^bU8E*8Z82y90~>0zHuprmsyru%Z>c^Mvba;l@zVN$#w%KePgZUL z4U_2-Yt{$zuWMpInKaIGi8L2$5t%HQV?Zl-sg{V3zofVQcNkSPtT-ar@ zCD9;0SX%F*%EU*|Y_&yXP{A014zwbg8&*{5o$A3`h38Te92g?=6->&9eapa2xRHuI zlNUu}b&E$kH9K&3zF=+1@udSB&&OZ3l9~lP(qrO^O|iwm^+Wo>xaZI}w%J%AkDVVa z0{Hb2G}kT*g`1RdL%dx$kOF1MMcO`@NZ4jQg7TmNF(5Fs_pABktS3r#>V93-bW`~j)AlZ}x!mG@ zQOPQuLPRTDy=PuFk(tCPaBPsO$9YT&ul#|mV$l;ZO;VGc=edZ#PsC_^V;JmCHANGb z8vC>EV<_}zi?rrTDG1K}5K#`2U{1^87>PIfRLwsVUEh{f=X3l>U(R6+-z@MX3@3#{ zlJco?0b{`VVmIZ#taWO<>O;dW_N`|9YpTq*Ly@kW_Wf4QIk_H;5BKf15o!FV&_`y0 z)a7AnYt`w(dG#2~{-N750d*UMD(nE#SYF@krLouos|L;d)gf@3i!a2j!xX zncAb`dLWkq9p@Z+Q;6p#~VujXSAC6FSYkZ;KT)s-XR!MTR@w}Wmh|kt; zd8LNem0`Y$(4CzmHVfB)$tieqz+uDh@t$r!(@KHpr796Z1L~^xPYdr))=mtk4#!;0 zU(99MjM@q&CYKDvJV`TV1905&sFH#uTdfdMLyBBW-o`XKrYy#-nrMnm7sGzk_Ci-6 zN{Kd5Y3?My(T*Qt;StU?J325wyiX35DpCBt2<=__RbL?Q(3M81FW#4$0 zN4#^F{35pzctAUi>Jbp!?3tbRb1G?WfqeE8)!C=b+ke!IkPpz#PT@%C_2)Ng@`ELXo%2 z*n_Al@ZqUDHNE+#aHn98$^xxi;l)9dSE<6dSZ{p@Qqt?%XstP9^7Xw1KC7^D&8@0x zJS%LJksO^?ORiNI>kUf7Qmd1pb{AROj5r;~lu3y+#S0eBhr|%)=E98tE`m)-pLw78 zt0~3IZ}$`AuNzB{J?B3kJIx5QG+*r65+pBg&=do7exxWBp_bL$ZObtXBL&NEnta5= zDl$%?Z#gWmMfULFL)9WP_`x(3F5B?6y995R`=c&HieRsr8HBdnRu%#pHr@6}N!3T< zQ#;FCdWI}VPSd2}{RGn*xz}&mxhga&>X#ZyGBIXaoco8tIq)_*_3vNEe?2o2t6;yD zluRSIflQGbfPD`U1U%wD<9~=QE`32vxlBx-!_x#^-Ph7GA+xI!4};OVVa%_7NWc0u z7ad1B%Q_FoDODV;wfgkShsBcX8U5`wsbJ=U-BichnJUNO*~K& zL9dk3?+0so@TnBE)t=?1#65X%82$F#<6R4Qjc}pRMGGLGe=kFj%kRbV)cHy72=&(a zp>w0eDSZU}SEU!_7grzSG?>a61m0klI-u-Nx9G5;BsnP)8rYiZ--ZpF@-WcPSIxN>fB2`$2_ zfsop@8x>f0$3w+rO0aOVp=M1_}gS4T4HJSXDA>qW~vbd?U*lbliKt><1d-IA*KU37uY?a))`d;Jw9hCA7}nu8}9= z8LHBysCD9{#5ol_LF&4YDcUsCEdJ>K4D?o zh!`go9b{cTnqnB!ke~sF*ncT)W^lJn)T)jpFa#-4?W+Ro7UR&I+e^AC243L{JM)?xL&)i`JUMK|t-GzvmcO<-0% zmlC5jua)Z$Bzwr!-bc@*Wj@9JuyTD}o9K@H= zTGdlyT0LS{6$9d>aBc}7_?+zRJ)BpW+7v=$xSrMIv||UB=lorMQ(%{G{qo%@$$xsK zJ7Cbe&(XZ~jz3<6Q5l3-UnW&4T`aNO69~#ZV&We>mZDT+Yfje;WsDsr$SA7OLK24= zplqOWrn42+qdu!@@R4v7rNy-heVt$&8E-K!^c0jlL8K7kX5d3Bt{awt*0lKbJ41VqVK?Kzv|&FU}tR0_p&Ubz+QWXqpd@bP)nX2%%~2Eya_qXxhB z9g1lj=~XwJ-u4rn8l_5^(Q{AX4&V>UHCB~LK1?+p?-4WH@xP>hmsH*S;q0fmYVl3r zYmx4jrgAYk8IIEVV0QNXz~Ikbr|x3I((LW*`B^_cbbsN!NqEObDynSWaba0JRB^vZ zzJB~2AE6*R6^1r!Q1z zG81*#W2{GM)9;KJ%89=-1gXiT=oWY!yTV+i70W^m#f$6X)*W`2@$G%MTJANKpg>Y; zE_zEay&Y6eNgrVkNhpTKZ-Do0N39+Z`69hi!GL35_-^`B0~C24_JHDnKQwjPM9e{& z{fcw0jKG}(viPnC5u|1ty!@EtGS*dX619U)iDz|mC99!D`E;?;k2vr7GpP&G&!aQW zN2;EQuI{p5J`+^JwMP`j*~NToZwltWclp-YH|9*Pl^|IW(K#>?|FuQQb$L$AC4utZ z@FY^n!buQOgomnseN+1JW9<}%J$mhZ*3ni)VWn{kmbqc7;=K;Nxv3Yv?buQG%Bv~x zj7@uA8dj^c2e;sswBlYWYHAwS^rk0znRg>gPOFbql^v#Qdoa<52+h)0PTrpY1yXm8 zlSSMH*tq-jEYp7cZ?$jS50Zz;tEMuk#oxT1A(oTax0vEU{xs)M=M=8tJi?=OQistT zz?Q;gGl#!*d3pq|p3Y;l7pqz=rTkvdje7`<8q$%{Q+A9+f7kE^Z;_i5zvV)yIn_lf z(06R0Og0icSKbKPTYd zUlwy0xcTvl-m;H+X*@&?9L%MP2vO$KK{WI;Dlc=WhiuT4SExNiSp<;LT&$$1rQBY5 zGQBRF^4b5s4}Y7aTdN$_b~K3TeT5=T zj!cc5{qD)C*Y#X?RB5z!=`pWD1#{C&?wejcXHUUh#*s}pbE zyW9Juqo@5*+NXsyP+lOmg0G)%^z(|=1dJK#-=<%al=)f^Tlbgz_(R%qd2e zW8B!$!(lIq_~$GJSKLysIAvx$eF&8{SFSl&2WM~-;X>3AUF5yvaPOTjF& zqQ5!TC^*I~mT!g9RhGbA?oP8P)!WpgZ|!oEoT|z>Ex3dEev+A+Q^;7>g_GjV?UiAf zd`T}Wyle)yEX1|^?P3s<-q971z}q>=9j7m?Tn4Whm)hsE?Jan&cBbQw(RsSAzV=>c zwC}WFIEF1sHisJ#@+UE&-aL^<06%Ol$0IxR+nq`>qEos-^`uV+v5W!GOWtt>Z7nh5 z%l7fCg2QJx*u(D>H|#Aaiz1~3Nhabmy=q?7Q@c|g$(Fyp(SvrFHs_&c2)WDY_ekM? z09S*lmUq}dkf8qKh?TZ_F*UMet~6)oa7vog5-+H?>ey3>IPiV6vkZn752kl3`bQi^^ZvBzA-#EfDVAF2&bgbVZYvm z+;X!tQO`z_3V*otivLbC|JL~lP9kEiUv)VTJn3AY3zr2jZ8A?Nn>-{hsEp4KeKtfY zxTiy7Tq&sEyr-Ay;TG4b0DouSw>_USLo|Q97?gZw@j*{0+dU^MDp9GH7UDhTdgf_y zSF{IzXX|4Gg?&*SdxwLnR^#0U-t3p!H1Ju$5?m2NZ|NI~WYWD_IPzJixOx7IqHcX)_n_Ruq$nqcP|^ z802AkKrp=cS+!Uv-oQ zh}~qZDU4`(eQF~CZ$|b4t4N%(?l4#bqjbf^KLis2I|pc*rSi4rKz1V;MmqU*RR}&w zb8HMsm;D))x?_fZ=bySXkk>kDyz6=rp7b1l`Cq1kX8VjPW2d5gb z8?p^#nLyiz7U=?WdrzX1B(nH|i4$gt!y0<&-jYTGAgUp`ofM?z#Udc;SK zMxk*bj1IK608(URDOXIWHAqQraKbekW_cMp+Y8M0ss-KoCMHA232 zyaIp3E2D$heSiF*;}Ari6)j{We3a{#4_n{ootnHyLed<*zQRk5iw!`IZ)SK&i|pqP zX1I(z(w+$|=cQC(AaSh7K^)k|1Rn;$y>8TgzZT7WkMf@B#X20M;rNx&W9yT}b%7Z8 z3&<=x82WbNZ74~ldp9!J9tyEq zk`l)GWm5X&w3Do?Nbx@@1zwFVAA>(?iIRj-vm>_O**@y{cZ(oj1Ak26j^OkD{^{Ej z+u+l{)6@UM**!%G5`^1=F59jyTV1wo+qP}nwr$(CZQHh|&-I+06&hhhkpL>;%^Z*bJ!TQ;L7rqKJ2ECd7 z?9R|;>}kGh{y5|G>Fv;gN5CtJfv3x*Zp^h5T9ByF<}d53CtN=fK_lkx6Jjw~#crfs zD-_tvyfn$Qe}vl9bwo>s_B4#j-+Xmy?WqU-mmw*3MTzljm4G+qd_-JxgN%wX)cKp>$jhCLd zdK4wHiuCRsuXw{<)OE+(#tZ&Csv%r_Zo0D+Z_QgG_Eb@zeuZ_GTYPQei-}xxjoI}P zO@%F4NxC>&Lg~^zVb!vC5!j~>IOl>y12->q$sPT<+nw(92iPbfp-I{%! zfMeL7Yd?C`RHhDg?BwLLufgO*${LVZRxZnPj$pWw47lpW{Ch>zS?MB_7Bl-Kw0d?B z`^jOhkwVm+-xc5y?r@4qmHUm=raR=$5rW+Eqns_#SwPyCHr;xDi=i+#d7Q%N*@wlV zPh&ulezRplsLMcwy79-1pNi6B7&%AB+yiy(uKd>Fej8XfYt6mi#rVddIU6z!9Du(>_bSKUkWlMamnc5lkN zVI2|Y&nWTMALqyQDF@dh9#K$zuB1FE-rw_a9fZS79V0A%@?cYSxvO!s8>>h<28_34z(3G;QENq2o;|EBI2>GbI;v;87gw>yW!n0M(J+NmI_Xm<5lGy+bn zG0zK(K#-ofBf=Z&vN4%R)vBLI)5DC1&x)VV-7ymfB#)aCE$dGOU0|1XRm=k=m*gg3 ztKFT1YHhgtMoZTis%GE5*M&=)v6es*_%V`q&1%qo>s%r-s1GMolf#laAlwA-AEz?M z{Ceq83M_ylr-_t;&}C^D)0Xk+L#JTC57r0!%R#1^r^HExPUl!Xk zR7^gCMrGN?ToJ@(&q;W;p2aH8`lBWmc}}rTB@9nZCo7b=P zayDINvnMl11ufLeIEj6qJE(+Q?*J#S>^sKCaO!S1@jcMMgnX6;$F-i#bv+Z&1+8O> z_VId;cpsw|a5fLZuda$P>c-+VaLLuV*uOUF@M{r-c)JyB6MlQ}-j~Oy9KFOd2m^?q zR~n=Nw+Lb_v`tMt$A``wKZ@Tge9e47T&y<=@Qa>LuKRG{t*w2qBW9gB)~%$v!z3g8r8gDCs9;^mmWdX#R_cUx-^1DTe1w;gQC*J)D9zG32Y%@- zPB@+tYZ(jEyqL6~jIn5!6Ko^s2D#6cZ3?6zusvLtOyuhe`Tb#pLD7@-D`6FG%;gP2 zvvVAtuCEmlqj$VY4(sYoB>C&feh;7Fk&nu>5P7k@A20ina|`<5TjidLv@lBst>O~; zHu|vb1>-#n7NppvtG*jtnMJ(&MbY6*G^Un?kh)sTx-&)P*XYdj^v1N>e^lDSnt`z! zobX#b30kLrz_RbR7EMbg)o`86#s>I83Zk3GebCAbkD)FK0YSXin|vwd;BJWL_fDHSm4(LpsGR%BtUd)~Y# z?@-zA7%09Jo@}>W=or|_cA!7~_)}d7XsNR{USZnYvFvFn!$x1#GdO#zvT8+SbUJEL zs6M5`59LHBM&OuUQ7=vFw2|MNuCqrAW2CGuB|N5hC1Ao-uyh$rU{(Y)==v6tJ1!Lq z;Dc`N$+sRw=aau7x?uZi70^wggp!8+B#Tnp&TZ)n zWKq%8CzMKf|F3R;Yeb9qNHQ% zohJVwdO)jmn&9jQQq&aL=7fTT^#)#jR;FBydWIw2-%M03IaaJ$c!|LlsZpr*K|l6A zb(rj;5_MK|;101g-LfTn6-o4X8t9XAdSss*X|hR(x(0?S)30bjQ#G`-Sl#y7d6kN~ z5y8ED3Ju;!kqQTlQDhQQ2q>2&x!}=h1&XG9~G2jEqJASm3*R>(M0 zzq3Dt)miCYVhHfgnH6uc{v-SP{K(->_NeGOOz$(Y=!Ohd{)X9%HelcgOqPGXRGwPD zw48xe##~Z~AgvISX{6Ft(5TAPS8pF9$BfR1w2N)GMB_$2R75%~^=c)xHL5iVkIvT8 zne{Sl+kxoWJ|>LWfoMXi8vcpTv2D&!j5F6_qQ1Ff$3tP^dXnxNBakO3RsJ+JHQ5Lk z#5=!>I#6R;WUItmiQ0cG)9)1No^*#NcN$m1;Gr zbIXjVytA}NAmnrXr1S#g#Zu#C^d$cGL}E3xr7bR&Y~akj!GbVGn|YEk*VBnCF{R?@GE-i03} z+>^p5y;{7BIm*Bty0{B#H_37~$V_`Pr}gNiqyvriI-6&8zsxB%T`{YbTH(X;TKlwn zzVG#-?~%_>Y*lTlSvL zc41$n<06vH4>F`m!LywcbLXity6rOBsV?K}1`=-#^wFhz0AsREU( z(rT0=*`8(_k1nx#oz_Mk*oAgZ|WBQZ2I@!`D6TQK!|afr$k&g(aak$p_~ zdyAFRmO0~PqI~q37vCt~o`**ji7*ys812hZVY_1#-nba#)swH;${D<(n@+}+BH70Q zDZLC$T}78}?U5mlo&C*qTuuZXBk%r3RXRP?I7>EdQg1VNWaH&lg?5aedA`DR@r z=$2btyxj{Bw`>2Lo8s8Q&(|CbuePiyyqKzE-P?YPOz+x@20(=#tt=s-RB9v!w+dUK z%{vb-xOZJ;JfPM+pK}U2IwLbEhu(hfaKk;jvd-=xeC*`47BNK)uIXQWA37THW;yF; zpki7j(pmEjG;J9_kHyGY1PV2)$}Vp8j7)KAny;<;Ol*Z+_GH{j+@$58_(rAUm+qB*oCeNdk!+6S9?ybn{ zUiR^|I>^|SzS-S^MOE3EC_+H{yy1=kT}jrZ!pe$ga658?)_l;!*+h{NHHJK%3*vR3 zlW6>C{Vng8#tQypJS{8FOb4-RK@Iy9wl;=^>NQUS!=lC`<15Mp>Uq3e>^C7b z_IV&l`Q@+3(BSuFyFks|r$P2eA~5Few|631yZ_3L*tY5>^Ol$l(c!j2a&oz2`3v}X&jc6O()GVKdE z!IsQXMjgb<_81s%49l1q4~DXs??!=h45%!Rx9kN{8t+reL1v9kPQVfLEC&upbSR5a zOO7gabuMS1PWfOnDjGxwnn~AszFUeUGtT~%(aw@sDlP%BKW~uN5A%Lxp%O{62~s4U zpB{1dU*s^ToA;>A2f(bW3ZBA2`F%HWQSt(R30dhShD?dOBIut43wcK$owK7~IZQ|i zT5}{C{tlm%oX$>@hy<1_t%Xg+(uy?t0mZ@z7rq#FZu8W%1{Ag*5yxa)y zY}VlcYWr}?W}=OenVr8%`JKfyBF$7-7u$SJxAY8rETXnT*|2Wmk|QJey(blUhzjdU zjaJy(m`d|suecHot?5rpPm`=_I=Xv?M~u9a`D`S4p?hYi3{@4u`~-{}=9EBHG^l2>18Xe{IHR5)*d4bJK!o70fa_vCI2;uP6vm#OJHh^o+r<_ z)2Ja|{Z3|$m^6YVIj2YH?i*7rU&XY6T^jh3S$w^!PQ_y!NA{MpeGY5|MAv(;w z2E+D(#Z(L4xxI7r{``d z(0ZuPM@xEaiS~Y9N;-NkoCzL90y9FSnOK}mfYOJ`&s9+t&lyD|u2bjPdX$&`nX_Nt z?izYgDe#6lB3z!0j8&PmiT_YX#|F9&d@|61fV4bK%d?4ip`v)GdMEFB8+fzl!Vr`A zBeIqr0fNgl5Yr&%p;&Tt0}Vs}uxqomf?dzekhEA`gPQ`pBIkPNw=Dg&T-Dne&Z9%ld}4AqZ}}2V)m5pGBxU2oiOGq6jL82bDTp z*V-;DIS#L*Q1S_>%z3te5PGwmiLiL$Jq-G^xPWA$TX&ID7qpv0?o&cwSL;Y8%idx_ z&|#=plOC08Ne^uqZq4dCzTkW?>ax>tQ zoGU*Ak2OhoMwbFoa0%GXY^}Q5+dr1k?18BCo*{ z7!mq}KFd=bsDdzG#x2Hyvv+O);Ul}Dsp0g**D9ClAu1M zMro-l6)vD}nRzl=QBQgT=CW^PxH}XC+tuEM+|4`h;z5x_GLyY*7m5MTLq7(n@D3`Qm{vDiEaWn)4n2Q!^H?4 zyWDwFq^UEHfnsg9eGyCAnNO)Lf*>e~FfuLbmJT@3lvRA1?XE#!ZVniTUZ z#9;u{L~Y=`nfdBii4oE85MzYJn@Lw+%H~O9GNF~<<|XIfx~Cv4U`c7iDPT>Hl}Xp$b5Y5XZw~8S zh^t{UVovI_w|8q>Y4BgeRL9^2&Wv3BR7Lc=JO^ke5vUeA&wIqTb};d} zJtob^x@{9Ucq}7Q>2O^#*h8gXCUDNgIClT;;6GI3Q6Dkw<26Z~!}|&-6aapGp;ugW zBrC}z5k{(sSc$oNXa|vUgQAW{Io2H$QO-6J6P$LOFma^l2x;(#S#|%(hvpLk`qSBn z@yhO+WOQwDE8LHD?dnX3mViKwg@XljK+8KaDoPnJ zQ_BBok1TBeGJ*d?AL;+&PO zjUWHlmZks6kIerx^S`eCB{msY*#G?D4FDVk$4JM>1R(}R2oaHx03`?+fKNg}K(Q@GL?I^OWw_AjoL?Bh7o zc$j5+`>z?31=x_E#59NqB*?E2)L(#*0RUB-C=Y^9NJvUdNGK^NaS^?g`8jNc&`_Y^; zkPyHqL>W1Vjayv`x1+5&Gk8pWeLOrof`7e|5dKcdr>FpLeDgK{L=aE`Pa$l;K1g6^ z{@Vn->5%buKvG+IWxH+k1EANyA_4$v0AS7mee!D%v~7$akbSstbSq1MXP$g}|NPO1 z69V982@C)Q=qLL|_Gwl~?yXj@E)jWP8yMy_a6lW7Mh*ic4}Jkr;IjY}K(FmlR+J7V zxNjt|yI&4t4e|2s@6i_~id2MPQ7`tEKRo|wc0 z41NDT{Hg36xX8G`r(*uujrwh&pd#`D1PnMJ1mKs4L8_v$wm^9nBb{oB4zVjVgf2U;7%g>CQm+5+yKd!hru zv@G@0SCe^O@5+t5Ut8Zd6)^&c-C}G9bIu7q1-5Re}X0LX6*(mCYqCxL}e z4I+lmP!K@PgC77LB;m+Zl*AuEKdcnJ%@4*aFqZxEm6%vWv?@5z<-H)Obu zZVLJt`fYVMt1C{;_KEgf&-Q!uXY~=l|4krEj8p_sreWWeYTz<4`_YQ+2i|yai`%4+;L2>*i@UEwFG_H4Gx7&eHNHyM^z`fLYkrK6Vc7&cgW1H zJ;un(@5Rt}CuCvM#l(P=A9*;r&vBNoanAGY)}GhQ-o)KwyT>L@(D`byC-cvX^Y_q1UDyvMqGMWtix)m*V~?5*n{yeN#zQ%PeR@_ zTm2V6rThFS8PN~pFlj*|xLC@q@Z<0wh;1 zS{FeRX@&|Ib40LeYl`Qq6cbQtLk{3TyRA==h6E*TRY{9z!{uVq^7^Pk{^altf7)g&%! zv=)*Epk8h`%JPk6%PhPSjKFufjS%e+@e6GZAGe;)%+Wp4l9M>x@x<(sl`lF^mYhww z79a&?>=4AAY}$NO1?nfmWpS-IjNg_1c-orsoenOQ4OGL&zT2B{r<%DI^>B0T0HGR! z%>|Pxy;}`svr-2&q0FcJ$BhAf`S=E$X^w#_qt+oZjrPlXbma28tI%i>0@_Tu4~h$k zdbipbG*OLk99!#ja?i$g)zQSv%q@29D{Bwu6C%HPrQ@TS+&Sx2ozzIEtU4UkXGx7I7Hj*96XZ92-`f87o>aiySZQuJPB4 zdxW9@RYNDuZkn)sDhKjVJXetDn`;JQ7e8A#IimFFH1y1kB|H+ziBiYrgLnjvnc3W` zNw(V72*~*mheB1)1gaFp_f&GxMeCR)&GZ90hDn$1CaOD7)y7f$rKPE!P_$4XRXf))CGX2u@zVvxc+L2vSVR{AC0>YK> zqR`R(`xdZqgi>*T$=XpZSmrq9n&=rS=p7i%c~#o#J~_;$mP2uf@0oT^Gwqo~_12Ba z2jpsOn{U}E&hrMpT^%t0^2HDE6(mWvcR0UhPh2G4KdsZWZm(C}wI@6y6jW5O+Ag4U zU|^%X6eqBniC=p*Kvd;2-|W6H$038q(B1Cxzv5Z$NhKtXOO$lgLJC-T0-#BirHRbBOslFPpZf0)T&CXrxNkj@q9={8@xaoK4vfSloEh z?R3ioJzMH*2JV}uRGGL)hb8_y<)g^8YS`3Hq$&I?95R)YDq-=*&aTg=Di>`Pf^>db zlXcz}M$n_vAeIv&9HYr|q)mujJC`HnT@=UsnXU-Jjo{`IEwW|)bJl~T#7G!c@}YR; zzMIg}mVoL{SJKa%DqZPZO67ObN_gsz;_p0qruJ&;84^wK!0_m|^{#Ipq%@1yp9GZ) z_J*uyD#z%DqJEzdp~=GQ|uU zjadeMgA6Z?_R5HY8mo^6_0XedQ`cz=S|Fq@vGbOGwD=dVk=s`_S{goC!s28~pxm;} zxYpCl>K0`m&iEIP{`z4GsUXPI0;kgLJnmDXY+-mPrj+0KYTcq>Pd%QMlQX2a{@H+EYZP zn62KhhX!H`ql?cbM>_?TdAkNEv=<^2cFcstnN8?^r^zW?5Uz8<7f4;ov2Z$TXCK}I zT}%XH=q1^1mK={OsB-8GA)@0*Ocs;JYm2AO@(2DH`FP4s!<(#55+-xd-mV9HcBy>C zwDfvCnAG_F5zW&RFp$7FDGKWrmh3@sFy4}4-_c5^Fk6md-JfW(KSfF6$M+<2dU=jP zB(a9I_7TJ(uK~te)Qcl%TFG-XrW<;Fo1pUWyySsyG=u7h`MwQNH#Yj0qX6I0S0^Km zv+);-jT9fDGpf^EFqck1zith>6NUS#0}v@73frGI3+OI@&Mv|z9LWM)^PJ1=Z%Q5c znV!_Sh*c5hL*toJ5XClD@1pSyEff_ivg(5=31w>g-|lIOD)HF7Ju+ zIpI>u`+2!8kWZ0YYO1S?E4*hbK?axnr8Fb>B{e7ZY0F-kjiP=amW6ef3?Ca%v`a zWtKHb5+_^C?SG*krU4WGlb9O_`M9EJ9kr~Sns73=M2SJI_nd1Y*(#>&HJpC$|UH`Jc_I4sBlm*65&vHO|a4SDqYS>c37r+IXX*rRWDduRRrr> zCAEX%b#ikQ@C4^?MBU$Ms%;IAx)0g35t=?$`=lvbY?+6ZvGJd8l%MMcoXTvdV0g<< z5*jrU+&NOh(*y%n+@sb#`IXU$BXs5PNwIWhW||m95YQ)m#7uSY5#h^tm}0Twwi?6v zMTK_lIB1e;V=VEBCu9sBvX88s@`B(vvX$znklF(^#hdh*vqE;^5ub8s17G5*Y$3wa zu4R;7CWJgT7m}PhCp3+hy&mGr+m<^M-~~e(fWEa5)SyrSpw)@_jxr%XCnFnbdBDxAEbJZm08{oB{3~^;Jx}GzzcaL}Y zsa8Z+-v6DfhR?CD&eGpb@N|RPdYCDC#%cv+aC4&(#;}3+4XG_ol$MkjN~{u7sLyyd z$4@RQl89yJ!%|{qZMJl!owjcQ{dwlOP6?Dzuc4ktVVh;bdiD0~Q)eoE9f+CPa=Mm? zaa(ZRgO1UoEb3f1X1Tz0o*ez=Zd=CY(UsWF9w@X~>Zc)$-jJu?3*RNDK+KGQva|xo zMvjkjuUqb%#z{d%q%P`;!`zH5y8l#C$|oVd;N+TdKUH z!-;xfA?Y)EyRf={tGb6X@-f^au-@Cmd0~9yDi3E+n&3VaO+o zrF$uXteLBCyAO2vfI!+DzvLCNhSN?-3L_y!WNBAX_>1*jRJQK6+vwWrq-R{n~lzp*QXGR=3Ld_;x()?jblli%+x|z{;(&U zKy>?Rjq6p7Oh`o1Z-a37RSN;;t1NjvJ?I*~qL0+cJa(Qzk(L zX)&AFSF;|LCoEXheTuf_bI#_Qx-ku;Ah>|GHt;Hn?K*c1tue|EL+VkqeC&2H-1os# z0M7oXRiMYfj5Ubqh8s3?E3k=~h6`e0<&z^OuracZ4T?Er{RrhS6*5@N{3O8L84rm5{3+yUYv2>fo3()3I{Hb8uEw)YMy5 zMl=$^V&WclZEp6L%(o#|*4m3NEq|sh{~T#oU1=x@@9Nwof>!^zy}CrrZ&_>=Vs4R zXIrkdm1d8E?V|?1kzo%59k}aCm&CDXXVzCg?SDMBnoKrb2NwjR-p&M+b%a=+(7D<= ze*~yqj}M9Iv_9J%bR8?(kT1JEX zeXN=3t7amU5t0mR+I61t>V^ylz3%s0fb;!DcFe{*gTS2_oZ)KVdL~KDa)NrXUEYio zYYrMZG!UDXA8Gg}Vi7W*=3D>t)gmg0WdUxcyIqiDE1109Ga6k}>C%H#&&RatNkRPI zzxEeiM0qErsk2sfy_-t$HK9&bw$nq48PMxF5S#kTEbYmFr^Zx2)kx<{pS=zQ*ZNmb znP)68&UYB}kn(z@-%DdI#$B-#At0DksTP=ev=dF@PF8!sI_-#pj*w7C?R_e!}x zfDB)nmD3KVD+cu*1GpB&wqYSkMzmJB#HT4UsjHnj>zws%5U?v#`n@9Y??^`#?McYs z=?HG~)D{}vh)IAn-Q=|8`VZ9{H;x?}j`7^~4Qr)#1h0c(O5jGI_qeLd)Gnfyw0ekW zK5j39|D!g1n+}*_9p%$*toMpECY5fZhiBxnpqy!3CF3jjPfSZ7S6_aEU*j+VyQ$}i zAUaf`+~s%qO=0%*x?qn`#=PU;4K1ig3=QI!;&XK4emaE9L0kB0$~ju_^)Y zjku+Tm#ot`wG`fvZrc^_Z@(<_{e*z^qw_DJRB;Wfv_?Y`B7HUD z)mAp4;mHSAep88abgvo7$KWRi;e`0Vvhi_`^-1i69n_I1(i9YUTj}}K3$9+2ThH$9 zinx%)S?@OYB@ZN+0!J3bRZP@9-D2T+luF&B=}pL06c3daopX*MXU`=W9WMuiVTCKa z8jUcOE>ahed?{(q_7ct-a^FMG!?U$ z&8o>%gO5A^jhJa&OpiBd%%_IwX|dfwUYUHPx$3g2X@K=N&f1g2|6{9GYXa|QWD9X- zk7}pL4{c~Q@eGs6{K^#K*$ZFCLXkFRMG+I|a;EZ3BVPMQlW8_AX%h8urF}Xx7Ab@! ztg{QeT%~hZ7Bae*x&N@4krV^PDBSN8BpW(TMDu*PY#yd;&xe+iu$efTk-yVBcBrM#n1jv0S^75_;2iPM^_5pIn5h4vO6L;m?P+R zmj&c}>o{Ik`blZ-$6d-zhr+N|!98|Lx@(Uo)vxzDlXTOj@+{oK*OLcIfYe>L0bw{x zPlwVMp{ID>J|D^s)QJ`7L!!s(dn6rr2~u6 zVYoGRsDU=B{M&{+lM%mXr%aHM7Q}V3iZMe}HDqTe(pfae=(OGG*o*gue8<>zWx9%0 zS*xx765zOFuY94g!X=LHaBQUftT;~_b^Dl%&(zO#Wrx{Clm^5C-;IUVy}3oFlAg#f z7zE)o<6<=wEidru((ook!o6#$jH@dimjv25nIVMlX#><0^-hzm;kwVdOLerc5$W2N zwcrn~MY;FfH}G58mLrK|b5=#SSbrqlT=$*gHsj3S1HuBAn{+UwP*0LP()2^g$%bod zCpmN%&31Wu&LFzC{IMmv9=~994!_%A7HC+QjWx-}1eFo@%%RpnF}qp@<1EGfJk9jp zfzlP2m_QS@>?KM5plgzQ=3$LMwORI%-9A{sEGFxr zazI-;e-ZLq-ec%r1@_^c0Sjyqvk(_A=BiUy*Ja$H4#a*J11`iH;(gO8c@9w&{2Hde zdM*s*VUs>zw>y6_eQ+?egDPT&LL?S;N|JFOL_Y_FcOB(~DA8TI1F%=Al%^i;)-X5} zqmHQ2K4bJ4Dmrfdu%^-w*<}`~2xJvymzMtxW$cdpeF^FiBQ?ciW*5Gnrj4(f(us1D zs?Cx+K;=ZFWMAq3k}t$mCy`MigB`{VTovoCP0BA(TkdgSezJ7V48XFykro{y*7rXq`)0!)j*znaL?@NY|}0mXs>xgQ?P(eU{vn+ z9Yr@5&?ZJ~-Zh?&G(u$DbA#Bg*{En-E#wb5BSOMzwFM=-%GMiJ+n+4SSO z55}q>C_gu=on@q}93ErXI)3n4P8UcM_fOP8J`@$-cj{+dXp=Ri(IG2y zPB>m~z9Y1gtzrQ*dCX3WA0yT8OC*$*G#2yK&Fg;Y*E(k|6u6vUu1(X1z7!ZRp9kB( zK`!TXzLk6}_QWp276}{`b8{$sq?8Shq}gJx!p*=L*>A9^o_~JLrKfFms*mKfdkIxB z=cyUgZ7w(2B~=&2<}QwzYP7XlEy@#V1ZI1Jt_mZMC~jZa*YM+0E64`wA~erG3`Gf{clW5_pihF|3B0IkC5np*y(=~5;eAW z*0-Xy`;S5FR>mey|Mkt`KLV(@g|C`(X2h;vWX^S=i2|ML9HrJ7qg89V%&>Tad)WGrNCXlrErFPjSW-$u~8ZA80)Gi`qFwrnh^ zELoLt2X1)Yc9*B~hY=^QdB#?BQxrFsSGTPEwMbPEuGUzljG(+ue7W)d&HeoC`Ij0U zXCJ@y^gemU+&v14++LFs1C4U>HzP#EAduJ3`^z`oHzk4s0RS`{?9WH9Kttn*0S5Pu zMRwc}}Zj!3b7q<|hQ;)V&WNZ|_%DR8^Mr7XbnR7|8fXMaW|u zXerxUPtVVvjt@QDFHgLEDURHiHmwp14D0k(6o57i9-oqkh~#Y(JMRGUKEOW<5dhdU z3Tp@%3-JgBJdJ>#4r1h2m&WaQn+_wXDlDwFwzjU3OatTmxMGY9;x1T!3!nsnX=oB0 z2<)o>hR*3F=qsO8Y66tbH8B4dDUBc>L)VlR0sy*CA0GlJn)zPDk3a{&%E>Q1hNlk# zl>e)^>Nhn2e^1sPpkScjx9!vLdlC`mesc{IM8KmU3-O08hzbBIP!K>Q<6{7WHwwQG z6Y!__3`Ufw{$++|hOVs;@O|4tWM*r&ZeMI9JW zMbN`T00D#Py!LBJUk3r9<>rUbH{;Tu?}HHNmxo^;g6;_&wvJU|2newA6n0+zw=ghR z>^HDofDQmMFRG|0h#bHH9^f9hJ^Tww?bG0Z2Y?gb#Pq)@L z=c*nVOoVXn=U4uB+W^s;irE=f(w{f!7qOy(@EgEiz<>dO08<>FPf1A$37>=n5aOpb z*O&5+^>eqZp7Bc7<#)0W4k!X->`NF(v%5F^?JFH-hu3lt{LK|akk}=M0AS}g>Q_4t z1R=;9`TJKVV3+i_b^Z7F_?P|XH#@$B75hhX<}-ERm%#NUsQ>%dOz(6ZD{vbYnAk-S z;kViX^xZNa7GE!|_0(6=nQmqcN1ngU;8aWODTeNDMwbny8uBsFFIpcXZd14M$(6B= zevb}h2qQe?yTi3kg>TPyysi@bp>K!U%xcmn5`S&_!&M6w1OoD>IlurZ0l<`&*3?(w z3Pev9$&XL|swRNIr&kmkpD>EgppF#a@2DOC%DM1IWxW9s0HP_%1oSz0`)RZ_kjfht z`sjd}6}6rjyp`|PPk+687~fu;uH`#?NHCW^gzXb=AC9>n!~}Fm^*Qa4?t4I2cUN6Y zFF3U1$?fCqC-A@9hJIq`r}6mh*?rBdqYcsMl!hgzfobo&*|Klj-tq`N3B}q${qq=Ga@;7CxbH4s1E>RFA`I;^ z62_ypa=tRm`o&HSgRO_+tr@*hDHq7QJ|Fwz%J3eWDkgY)kmQ`j2D1huTyhjw>!aPa zgEQ?Rn9c2y$wG(5sfX4zhV<^io_HxvB^$|OZ_~bmG!(8*?(fF^b9yar^5HtZ*+$kd z)Q8ak+Ajn3P5L4oOF-MEX4p2$;fl=@Qz&pF3bPnDs9a>_$+wLpg4yMR2Rqa?Ar||q z(E>Wn9;^f;C#X=LDluxfGl98^+RkJ5b#}&YbSurPGHOQgp&xebRfDoA; zDL#Lu2q&p#te)(5TS$?Dg(5h;(mLF4p73dvm8N(U0cp6ue(EcV=(Av%!J0ihDRLq6 zj1LN!SNa)^Ty-CDJE_UPp6~IiHa=814vb2#jaSWduLu$zk*T(&+#;M^cYgYGE*Npb z7gv{3zWyYnfpxQv>4^3m4IHh@EfxrP9nRoVvuhfs2UEltN!m{sI9{-xd~C9@hY+(g z%v0(&Dxoyt=2EKX_Eg7vJ&O?(NE0Y>z+f~mIlD=39~m+z4~{q|_Sk~JQPAjw5*iG_ zc?fg2*vK6Jt1wODq^Mi@PMX9~&P=}(EPqcXT*gDok7+_BaE;7^?;-Qv<}rWQGOAuc zF@=tuJ{3f*`> z(C!M}j%)N;700Sq-K8?S9A{;a?__M}%-kmr%|;uXExT2IRaypQO5%c^XE?xW2GieS z@P9M1PszVH(k(V0%P!R*96CW9V6&N1S&(i^*wOq*@aCNPw1!-gM%O4CT=YpX-iQH1 z`&S$WFo&sQ9#rz=if4H5dMjKNO|1J-iSLQU6MSX6skv>a^6$W%EUK}+QNss&QAFDy zk?XZ$XhZE#?pMNUP`>Kh!`hQXfs-*#DXHH!pr&tKf6Fz4W$FZi6{mhZjXW5o+ zp_*5o9Wr-%f04Onxzf{e%_MVuZ?jhV2Y<~9y$8_((t1+&(W3kty>xjk#bJt; z2!G(f8mDl7S$_1xMNTL7@~#HsBSwidJcO6jG6TBAJ+#!)wiqUbNiq&7bm;jg6nQ7N z*%{uyYd)Kl9H%32ZOYQ^J(2EB#(LR^*8uQ3bLnnHyRRrMLGgF7CWUAt9MW@q-Qg4V zOo~kFrS_Q}H3z`)u{^X1WY-a!y|i`B=Z=`DRJW%Vq9a9%W3?EM#OFM?no!T;*~r)j zRws6iw1x;f)T1Dw#TqWE*Ava(nGVF4do!y-AyMH04rnOb4 zu{Sf}d)#=M)WXmLAIfk(YpYf{;dryXE3DuR5@l@p=)|`V!;QY|q-k#+VnXAA2K!?z zj@_a8G=@3b_8RCF4u7Bq!Qr=7+rLm0hFgyOi(bqBe??N6iT@P07 zCO$fVb#Xi2SNPHx-|25Orb~y*OPD|IY#3t<+K;lQByGX5 z8{HI8!wa>KK4d8?n$oG?#Dm2>?pJr!)4EKfl1{k%0i_)YSxOv22B^zDH7P95?j5-J`ZmUW&P?!LKa~%S^ATME#N1~iG zy3md{)}T8SOSh^I$ZW#Nz^qydy%Ph2Y*C|4sl%MZj7^7L( zl6X>t5Djoa?0qDlV0W%fX0_eL_)j_h?U;Evkm@tq%5L*A2fxh3ZlVT7NTzi*ZdsJJuyCc4l%*b~`36+7bdOsweI;IANzq zvr6Nr9!gV=;>ri1qGnZF++TbU*$@(e&vM7mXkO#uozsfjm52SmID5w?QNln;vu)e9 zZQHi{v~9aj+qP}nwr$%s_T1UQor#&4jr{`^Rqv;KD>I+8o!EFb*Sa9rV&&cQ;buQ4 zXz3FL9a3%Y`Z&W}4o~C|Y=?$_h!UCU`O@$Roj0!hTfrd~EHT-K>0d)OaN}^fwjOpHvEZu(Y>7jlnT%mQL$?XH5~g-| z1!0u6TgOPpTzP%U+;2WQ;FU$jTpx9FKP~h#pBzR?qcHmLJriG$AbH$mt^p56Ken}= zeSM}`^t~vII>8VJzT|^n+#X01-8YC`{Z*T)-_yeU063<#I27!!r!;Cm|MvIvBVN#J ztA;0>-xBCqV>fE~)}TrY=EhH!%Yw|4(X^Kb7%^akH-@3xK~Gh}U^`@2RpBSMge zqRX;Oao>p&uVe(GCq{)b7B%0`o?l-3E1o`W(kazEfRQbuwJI9B5Ag(i*>ZYz8O*m6c{j7NnhUua z#dF)g-c6TzaFuNh)Z9s;ll`~7CA z%z{w-$d7fsW*;O`fl;53ZgUcoz7;DaM8}&?{U>_Q9MQ-h{@sGEv{OvO@Y}+1X8J&&kzly~L8K%{rdWT2*7{}Gir__sXT46|Qe{zdte2{!B zVY=TlicU1_cdY9q9*hek{g2~U6CFF3j?ww#ZpS;cuzL6nIL=|8xfc(33hJJ>04 zbhh{$zEwvWp+ejec{2{%G4nn`x|SeuGNs(^sOaf- zW}ykdn_Z}1u^lhnP0{K2)tXHG&eI{^nJRbyOH1oM#u<&uOS+wY6h4~42X&|dx_&(Z z^4Z&+z~=QVL|^ml*XPW1q70qR1#on#;wz?wMMwEkV*B^9n3|TWjt1p3t3*Yhm4|?Z z2DXkkZ=ifbNmlk%a-`#!;Eq40rEkoL1s^Jr|H?PadajkE!(CYT-q5N+8v9dN4r(1o z3V(U<@E06A(Yg+rC|t$xwjGn{+V$E#Bw?OdvHIx|k0}=Q;Z|Yz-PrER{N+GvRa>Hk zQ_xc3hfrqViS1dr4kR%1L2!@l9}ZEEH&V>-JN2C%YZDLdedBcG-N!k_CAi|y^D2zx z(cE_H{@(hL#L#4Sg4*VLQ_K^?+BUcN_1V1>9ck9FG?e3-Y_?%1lj*nc2QLi;Fa6H` z=HmJiMrf*jD~PF3hTWx-emB2*>wFtrv|gfZliV(JPK0m2f1|TPbtWo1w4xo2)tFkm zeKwbqKIHyMQ_h#W6unx^=py^jJSa~^8N($Y=U>&9z_{^fG6YZbWR=|Q(!YCyhUfoY z=DlQiv$RhS1L{;C)VFzBY7(7z9De3=|0-}WxEy2Mqb_QqcW{@7s)WoIW`_k%B9>52UX?-Y@e#1I(-=u$#)~>hBO(*a>#!Or z0Vfiz1gSci<{=FUNKb!!$~@NL4Kvo8yW2Q}C?*-m&hh;wIb{)V{T4Kd(9mvqKQCm( zwoyZ$e@c0lyWa0(+Z{7h2G2a_5rYz35YNg$t!->tMvtXQPf`#U`B_}QW{*;DV?pI2 z{s;+GF@lswmyc|ILW|nY5Q53P-nerS!+kv%SPFxmJ_lAa%_G?)d1%zc3{Tx(&AKt@ zO=cB2b@Aw^SxMo{4wRLIpd=343E8QJDAZ#|dGt@=z$fl@DIUTPQMzWuf3LcJ&I!7p z)dWSun5qe*?w0gbu&_7&m0gKYya8*TtxhtpzyZ2+;S8i$*0vzIKVE4X9~iOXa+DIi zI*~sB7+B5CKj%Nl)>^aUi5V)`t3>1LX)>BF~e6q>5PER>Pt=|apcy1>FoLK}1$5V0B5Mh>rGD@of7=_7Cpr9WmJf?3|^XMb(AU-#Ij5}cX^4g z*Em_qyg@+xh&Q_y=V5mT3s-`iiC#)2v2E$WQMZ)be6O*2;&R5HGImP?G|n%bM$nsctTnd|pQYc&#D#gooG_VkCQ*pv z-a+Y_FuYtBeozH&L1E|n1^fV?2XPZvx1hP{AL9Ku&`uHW-(P+RABc?8WLC*>O2uPB1N=O*i_DXTXwZ9p|+g3GjrQXs%Jwc zG$n{>nkX^>VU(LcmN~A)x0TUFD1*FJbUaehRGki^RhRBW*!=Y=^XLi-&*R!j>^+P+ z2`l1(+o^MQ6hq~IP{$qZn3;XXGe+(-%mUAiL0F2g;9%Jy!=3uW7Xtpih==D~!;AjG ztcCZeY}rnN!JV@TDN74C&$I*teagWcpo} zLi`(S)nPd>I27J5dMGbR?pOgwHZGQYez5ELu38((F6v3lbCUBl2h)hzYV6i`ZH?||=Gs((U5o??2{sL)27urpt-kI&S z9OL!pVe#}(QyAz?1)q_|NA=k?5fs)Ts$-a+Dmp3G9<%5|r0OccXhI9k8-m#AUs)K?C|{meRCbDTn`F_1bJu&iVTTuXk4vA%klpF3i^^3TM_Uyg}P z{w!~)baGlOy!yh-WqEt*0ojK9e5(U(0VxTOx#}N@-f2{+qHI@m@wyQ^qB9WP&=+os zWxAx*rNW)HC|v>!etYWP9b0Nn7iO$cWqXs2X_>K!6tZ+6JE2#y*~X7X#o&l(x1JDf z_{^+*)rR}5Q!%8T|oASKl!J>^v;tE=LNuVEjUb zIqZFJc-p7_tc^9_H!+~_`PP3o8kWML=V9>m>`&>Z%#irwgp z?h|jzhin@y+25igj^^kc`q9)QA9+lxCeuwRK0tO42=S#7v5o_G8HLI$WWHm9^jWu> zM{T>yscSfa$Do&7VuChE9IbUUnHzYuO31=5WH?4XU#Es0gG3ciJ8i#F?C2ANn5T+S zI-pJZs6SWedoI4W9wa`oY$Vm#%VnO+&udX(82Up(j~=?oKG*psDeXo+u3q_spWy`= zyRPdv6ski$mJ%VW(GNbR7aCf_HSclpU^>?6t<^eFfas}qZCiZPy{4)7d;IBaqv7y~ z)tV1!iDO`y72eJVxKV0wGKvIutx8wCQJX4V64je8>OTx`joW{&1K(ctp}sd92lM)> zggyLJ(aWVcxLfrdM+pNQO|C9y(}#ri{(KeN-cEOSa`+s!;d3|&&ANB-M}y7RQ`3d} zfwS=&oZWg}F}$)IlI`l$DC{v89=&)L{+rUKT8!v1mFi99{v2vOkO2#q_g2*{Ra)(= znX2J}e&pOy>3`IPlLtQ9z;<;0I=!*%B6MeLL63c?xMLvjDv>GM0^j%jk>Ftl-{HrK zW#s;3=o`lJ?Q10tWWwds*YwsKc2KSw&SVh>P9SrjW2n=JrEBFqFeK`kpVRwcJ^gNx z&XOcv95?L7%qki4xkHH?7()>_8VnO|Mry$uAeE^^w_m*za}Zj3IUd369>I&>0~=DZ z4$=hkDx~ zgt6py1vgRIwAZic(bh;SlKp8bt)mxBG<0HaeSi8o-p|R40QsY0rpipHTqJP*pel5O z)!xml)wUkz*E!!+2+2U3_~6u~D%qc96LQWw8gokJUp?}?L0nrwjDOdVk8f&_xGJmQ zb8Pq%%{Lm+gNwi5@JmnAWW^~5)ETKJCE;DCqw%bqqIM&cmAXs?@A8q&Q-(bwkMPsu z`yQ1`1l~#F367UE4b`0!vUsrk$^RAaB^bjcIfuObRS*Qb;r`>|N}*)w*^1m}J-?eCaqkSvz{1nKF>+96fcTlYI~E^O4ab z7Q(sApkCeiJ$+7JjNIb>o&?WZK3~-ZR_WR<5Ccu`7;p)}OMe_u2b*Bekc}v(QG4tk1TxKKi zR1bAAP&Jt$PJ!u0H05GlscUijogy08&#U{-b<)7MPQzC#kPacmgm}URjo86(lWG)> zFTo8@eHH_rh6uB)s0~J-aJUKQg5;F^jzR6&$I~m+Dh_C(wMeO?!7BFrx~*;E7g!|L z(2*Id10b549d5z2Hr=;H$AL5M^7xVZaA9`Fa>fUUUZ~q{<^>PD2g!Qx><+&vbp0i1`1Eruf*ub-)YFK!p3cqT`<{R zTHj9(hzJc+!-YvZ^8&61&64IpxVT#jYnU&8_EzA4RUvtubgIjb8B1^mdWGt}$r|sQ zSOUWP&b779t1d%|%og)qOoxc| zSzAYKx(=TBBlJxT-ictWDG{U^fKD3Bd|~!!6mBNF#${HxH-^THY2+p%2gk5X*QOe9 z8wbY(;U(=MFzTTELA;Fi>n1_z0(mQ0&LCF`X*5cuJP3PTw8yb8pu9KcGxc*rktA}iY zAv&L+T@{Y!$ltN_eOo-ahH zdB8jw7?R7S={el23q2RdM_eGczB@b|8E^+ z33Xu+QMG^GwzB5`$=qh*B%u8-_+v)Ke}ld3tpB5f{LktB|JOnO4{q}R!QM8sw|BI2 z|9?$xL#KZ>vxSqDjiIwSy@|Dn%|Em83lKa1S-T!r5`M(^) zfA_kXnf?X`rQ5BlM3N;`TtE_pH*hUMah_yPbu+rnjK@3k-Q(5! z-oyL*tJT}Q^4q#%he?0;#ANbVFOc>(zl}0ms1XQH&lS%ZD{npx1uI&RiS0$q9+AhE z9J4mKmxjZ5VE+y2`!+r^yD$wg?%5|pi&Tcejo5aa9vv2*k6%8=tDw= znlCEQb+NERBx)+vd<6x9`lvw3zt*W~0HA@;faodx3k+%S|BMnU37A;L!nmk_R)qLy zt}X_^8vh~&0vMto@Iodck(dWVN`eYtdUUrsEug|egI7g=NDM2uJmoXw^N|A8a0C@x zn0xm$4WN7}5Lh4}5s<&jIBrmQF_{1m$CdtZ5+R893K&6Qc>+LrzFZ(2SF8X;7%}&W z_eEhKsfxy762tKoQo>E^h{u~oe;A_-`#vvjm!2pSX zz_KSH0)XsS1c8YH2CPFBN=)42?CnE5f9@Z9XO92@PDpX?W52O(xKA*UGz?T?3L{i1!%S930vE4; znts;D;nlp1EHt9`Dk_Gq;vaBaND_7vjSPvc4CY~Nlj2`XT{Qr~JLvzV`SZhq7A@|5 z_WO!dCj686qN@2*`qk@$C{Bk|{(Yp_xBC@`fk-Ki7~_aY^NqF#9a~cmJ|%v1VAoB@ zAz}@N4T~h(1Rw7ZXPqa*R>l{$+>f-;#N4`Cc2_dL52Fn$ zu@?!&u@23qIN8}2QxffIODc+V8VGClbuD(A;XSML&aC-!*XxZB0I~`AjOUg#FY)=_ z2E%dd#JQcA(Dd3YYhTKlZ+pErH7f^0cv0~}GEz81?EjlSvpG2uMmNS<;y?_-ZoY z)>I2Kg#^uw91oP3XrpGn#b!#5^6Hx#@&2wRpOo7dd%c#HF_77i!e`d$cv{FCJI(3! z%u5!@W5OBPP3WZXW1nKPjT#lU?T$>#wAM6bpIZ@}9%H-H3yRay*`Ej4xuJT_RsIh% zd_-2;p$TB00$!R=`Ha;k9O!Q0Sgsdil90ktS^m`x_~YxZ?-*Y-F++MQic{747Za(a zk9S~5TwrZ^FZFf1T65m}nYd*=WAp%5c&aK2;may``)|vVEsTvHe_lIY*9zwgBDF!c z4K}v(cl>NO(-4#3+un{yOsXNd2C3llL2T{ESe=wn8p9Wv=c%P8yszy?a^h5FbvsaS z6>}0^bJ)3P?^)dmNu9$6QtVr12#H!Q_kh)6VOfq<&IbpqID0!8`qoCR6<>#H zTj>b0XOVf1nbmzie$NZ#{yW~wp{ZTnH0HtSQ!q)x zIrG+QR#Q%!iOR3j zM-*|x@c7=6)y}~dO~g&V>kM9coc)Aa674pRPdalCp7*=ToRLP|@>4zw-stcr^L8HL zKqq)~n$4yS#LnE9xE6F-s2A+<|VqUeWiio9Y0fn z3t9bzPU#kCZ#FAzj@Ez5T@HGb+{)EaDOO$snxJmQSzypSPew*gKzd>9^iCO&4_sg?Z4Udm4fTr`f%x+M~4LBVx=@Pg9RM z7c6O4Bc{2KQNTitqQHp~Wcf)fYHz-;?L%J*gOcGR7&>LtOA*z&Vpz-z zet+Dnjx$59E}HYJq^!RCr$VMGS-oCuIr$pf{?exID$-=!XA^e%S}u_BE2OkI-8G3T zE+nsiO8fB%*sNN-TPde0+O2HIX#WBlyc?YSZ?qu$e+vBl-?X5jh>E(fIJK;@knI0S z3$n5j(6TTw5HK;bFcWYx{U;s`3)}y~qxqL2{BJy(e`@bP!)X3{%JF}afo%T(HveM^ zL+O9YG5&{?`=4@*|FMVhzvdX382;lC|1HPJ!Or^MmEM2m&v3GHGX8(fF*duJXrO3q z(h=e!5#>YLyScRn6)kv}-hTIJzw+(AyY=7? zvc4w1epi`Q2b=^)a7Cu2XG2PCzyTQnHZ(v3pk(RvN4O$z1H>f*Cx(atK{15{ToWXW zFvI}>+yGFla{~M00KmDr5|F_P49x7nLbcQdeZNHSB<;(y_YJ`kz_kFZueAf112(v_ zwGfE=;|wLC{){4mxiEbf))DtT`N=FPEdKfP=UY7VH`iq!YO1ew9SkR^qAub}D_zm6!0FAH5uYE@& zP_~+oKwKOE|1_5lVd!eNX&?HI+=9)5(F0eMwWRm9Ki3x3hymnfWEyYglphM^dg=$v zk0dg3vmJ;d8Bsd)fFd#2DbM9S|!U=(_)uVQ+f-uhEZ{ z&#xTVk4Xzy{}1Bq?0f6CKBWD5i6618yPYyO_8ZW*Z2TpBWc4*YrNCQzL;5$^KCNIc zRUbI?hd6i+{}-Ix2wQJ)pG)SiRDcsRIQOsGA$)5#@>45_d)RPognjQYz8%xqD*}h& zq<+)>VZC!>D~ODIkk z4ue*Ldu})E{N50*y=(o6*FXCq)D6GKA?S_lA%O(H971$^epSCb0(5OKZ+ZdOzS`7p zO;{}aM&|7kSy*xVBQ+ehf`(f-HgdtX)O z-&?cU_G+|W}T*~?0F5x*;v%6Hr z?nn`tGh|CgM-|=_|03N0(<`CnXZs73m2|6xh$o&1MIGzxvBuiE0;akQ^I)eq9*WJ8 ze2NX?~|jDyLsrDNv0}>%zEG>NKiJm{wasu>*OG}y1u%&z3dpc(DI%|NsRSZ zY%Xn$+wgYSD=ic8scGWO27cjjGN3A~N4aPp+wXMzQ;{2w^@Z8DbfzA*r`tLvt~c|V=96( zfLJQK2<^7$F6B)azVU;7vn~4x4eKO)0*-Db1#;t%;25A%o~&y3L~7w(&8!s3nTZHBl${#b7GcqJX;C&nbkPWKb*o)5RYoc|4O=*f>wuM<(OFEv%b0*h4mUYSz zG$n6771Gu9YD+SO2}FDc*7i|ZD%hEcr2ZtR2i(Bq{4d%a4S$+}gm zAZ)>E_3sJnJ&VKW*yDKvDd?8E-j+kY3{K+PIY{Y_JJf^H*VB0nYSFOM1 zMxa`4fh6swg+9Db?2@G5GU<$m8QnXf`4BO$Bn*;}Pw=D`>gCa-=Es3%uX0mxv?tr< zZJ&BCIdEg``UZAbJvQ711bO}3Byo*a69bRdo|AXcY#VYM+F#?DX?evtN4J&?Zr+k= zT{g<<}Xnj8Y!j=4Z}uT*U2}Vr?SIreD(2K*x^atN#2Ui1Wt0M>OA#@uBpad0V4MSLPdsH+pR`yXJ=6~%&E#iC%DNX7 z$EUX9gpu17b`iVf_vMc7!lEhVxJX*;{x+TLcnqgbki+MNkaNw`vO1(4K0}zQ`qbU_ ztDTWy=tjAhxqf!#Dri*2<#e!UKirriq~MteVm#fyi&XKeUTm!9OiE9qq?KF2Sm_sLVig8oGulVTW`*J0i31OGNkJL9a5#7+6qP6$ZPNbKX1F z!%tnoFFD3_zGd^?@Z8X`YGpH1PIT~4CUYinWai+KTC5iQ3~d^8CHPoVIhJIX3vye$ z_%Njx?I|kkey%c4pCcyStU^r5tgisyvYTV9D!x=KNhO`$e9caUk~e(xV2D7@l!&vf z)i;AaXQkYMWFw_-yGB@(hhh~8POPrKqlch*ku|m`f$6pN5ak(qV00iAe7&SXd8MVQG-_l)D@j z{;+c|R1H>yZHm~?Ek14=Lkkswc0Uh-$H5H{vXKee7Qg{AFrESDQ9g8~)%$GIVa zN4l%6(ivBi6^0Sv>^>`WFJ_%7=E+bg3OXn%4!>ss?Iye{p{w~$A_Z@#&*cxMkO+&N z8*Gh`$?CM9d;-A8upSc{HuMbeT{#RbL5`lUUN%i_+exDH1YlMeDhZ|p8=^hI4@en9Flq#4WW;;}omvCX|?DQBEYi*6>5Bq`N|PVo(~21uzvZ~$XTk_WEkZp zEVURyc<;l6_6FIcKKE^s|FQ*SPgvLGOYdD1)kj5!X|?fw0SvKMHA|}t2U{Wm4CrTFFmU$zZ&cG@1WPdo}L7;kaJ@>bO z^(+vY&=F4=kS9)E3O(CMA$9exoK>+~y)BtlM&m>ft|rE%>_X#$NEynltgMi5>Aa9g z83&E6In#x|2J~?(VyTCVFY%+K-a(khnOQN$5jRn3e-JP(rAf#&xE|F(px@rU3a`@A zwHFeb=g9BdL1@CmV_jg_%pp!MrdnaJ>D%r@x9`2sw-to05f0f+5XLWjrnU&TgYGf?OzdF1GSuNJQ!zXiBfCQm?B^yC zjo}kTf6b|o(b~DTy#gxTv#ulvKjbt@n`VlbK#0>Gi zI+H|m`YRx(Y;T*(?o-I zwKxwa8BJ@PTe}YsW<3(U++R=w?vJXaE&YT)1P{Wmow+CtJB(%*EA9en!0LWe8AdQr z=Hjsn!yBsX*HkJ^spvAN-HHGxF>qq0r19RvPevm_&&+PZ_qlE7br@l)6O@+FmJeoP z(i5hl7)JuWhQ>%lum+$G(b8^GSHZlVZ88-F`iEdYp}%CM}wzr#E63 zwD0l`!o@6X_#HXWPWn>)7eswF+PUQQKBGn&ysVn&))!l$;B!yY;-xTf#xMULg2PV z7g~*D!-fX|uZ6E!EM+%fy%W=^k*1Uw_0#6;_{eCpFr`NVkk;Q>72I#nP)2xwD;BaV zXeWxT8{u%CX;E;9Y?>J7O33#!{h{l`)7DD#udHNLc*;xf^4)rqYP}!3gA)V}y45g$ zN{rnjy&`C5PuvbN$veRgW+Qn!tm3L}g7I}NvXptO(6D~ATIl{q1rd;ClRO&ox4`i) zVW|ixu|kK1~BkKLAebhMc1Yl6ywc*?xZE1N}@ zS!haF%uRUjNxVCi3uEp!!U1a}_3TM9LV|CP)FY_GF2&&;KZNI*yy1uZem_yYMtIWh z%z=8Q{_6&|nZ>_ZnkcVd%$J9x;Mgg5)poQfx*ffQ1>!bgxy6-*5Z^Jvb3&+**UTWq zx<+VBP}Gybo3$v1iWJ01l+U((;Emmc zO{{EIzsj#?AOccQ6ft7;vWQ)*7O^#4d19?2A1e??aUFDLg4<9sB9yD93$b552cdBp zr#Ub;8F_w&kL;a?7FL_8G_MN%)g}6eOO{-7qNxEl!LF~VIDTJpb z`Sy1R;!(%<$8hve*TG>&i;F8sxRv=Mat0M3V5(3hV7YPje@M7c-t7|{}ox8(H=0(8GB zbb3p2;TeH1wR2oup=?Ld?G|5y$Ux{`D6>T6C6bkccag-}&D=R&nYiKVFRDc>-u&j# zj3Gf`JUs@dt4J;atp>=fk|F%CTGn~O=k*i}&XgMby_7AVIx$i|r4w70m#}O*MLE`b zM(UA-+{f@{qD|r0qv3TQhL46h#&RtyL66{g(CVHeyH@@z0d2B-p#iB)6)a$^yFwjn zT*4b|4xMP~JJ?b2cC!16{|h>5$S1r{iU?pMr#>VayymWbX+7wpG4J;bqDH$ZoAlhs-}9}#NQWY!QIi9l@hIsd7cO5ru7rV zD_CiI`%4>fY9-wb5Y=$Fl6=hHdhF+5a+Tf8Y__Vl776k~kK z%1|~f*D$WZ+({9-#PQS@zIVrBG&W~$dWh>S)+YGov*REM1A#5RC zG_KsbtJYfYYC1N3-G6iueVF`)%vXH!g@+4K1JdFTA;K-VO6~=nc-X!Eq=)-sss#|@ zwb{SAN?s^Jgj$~#&%kku%dX{5hDIarW=n}31rFhtPbcE*&t_INng%|qGL~irx@DS1 zVHCt^1!iYFr2TDH&wx<07Q;&9o4e?4os_hRM94>TYp+VYYwZ}V*Sr*G(fSUN+6%_l z^O`N0Fw(xIpu)g2ee|SW?B5Tu-n?>IIxkq9Y+AZZSpFazg!SaX&+L=d{-rc6N!ks}Z&W~lT$ z8y8Feg0FrJD*c0_LfD-1=iFnogsCA?_qhFR(9IK+tA;n5LMi&4!Binz7hWlHUb%wy zU32mtmRc?ADO2?0_%0Hr!tCp-ry`4L94nAveJ zW}^UEaw$X?-6_(;8tiiJVlWOioJxlkQJc80)?75I zpv}WDR7`5dOMM;gzalP4uNENVAu2ZLP*6k4+2By!lnakbVXL;J&m+NE1 z)!O6|^^xc-r!Z`#EkE2`(3z}(EvW=u!dF1}neweX$+~nI!7Pt}kGdhdGN?+LJri0h zyz}Nd1ILgwvG}Sxr8~h7SndvB=#fUSxmYwfuC3bJz~c}LtmwHaKb|%bWmIths@7^w zr-%<2eDT)+6%bp)+Ear`re8uNj7AP`e1M{jgWrB8%uG|OAU1w)M(`SU#-zm5eg0hN z8p*IZM@rrhnBAMf=vTLtle_7;o)nZ-IiczvG-I7E;ZoPE$amJFAI-=(+ z*LF(H#GNIK-g!0La_7E#>Kt zgsyiWkE;!7;1ZJ4K;{}QdSjcq3{K>Zp1_lCw2B=l%a0HAORF#|VCzrn2|C1|%G!?? zg>SB{H8Fquwne*7N01Y?R!q00rm`f^xp3SO;-pW(X$=vY3MVAK`s;lBUDsI}3clW! zQH{@ed8Q#4l9OU$7kWf1m3@48f0Mx%z~sUWELc1MM-Lj7{yf@YuPVM@toO@TOa{{N$g{fQS6*z>#7PuF%?I7${`o>xeZsHGFApQnaPozZGr%B{M7UUD#+B zH+}T@>2!fwd@e%mNgdy6BF&i~7qIeTMX_HEm@8oJ0<==T+ca*-|0 zT{Ff+HP|ilz!AD1yQc=-Iqk&PmU&cWXGIc9m=4;?EB6|`&~r7ecX;NgTF{%GKDo9t zu-iF$3<_uOUl`IET-{9^1>SAnLxL&EJPODa&rVl9Dr0;#OCdNUi#x6AOs|*Tv#%lY zFE^1r2xg^F?*kRM$vGNzpkO7QD2>+3e~YK&L@U#~WC?HI1-v-S)DFNj)GsiggCRey zqmZda3qH5w8Mtd4&aMNYsCQfo0JsLASqqaW#Iryp>-$n(^=jU&>F`jNR0n5=Qwl|n;hz1b_s2PiajGVVVpqTfy=w1alFSlA0pd`l$jx94Eg zmQB#)GRURY6Rc!;R-!WA)r_GIzi>vmIiV@eJqq)&gwDCNiHEn_ldDI4*8a`)qQ1n% zzETY?S!h^(Lg#?iY6S#vNUN`#OJdeQ+5QB8(fy1^Z%3rd%m9tqPmFsT4do8s!JLx3m z!KEP}_Et(6AwfBfhguj6$mesZK*jiMjb6(I&nO@oXA&w*BOOQtx zN3XcgM&JK-7%k$yY^T#?1QaQVIQ>Tg9&)N35O!s3e7Hg&hEG*L~VP=;$b%K($ha>)LlJrOfj< zTOlm4;NH#Dy;cOyfS{Z+vxDf^)&Q$9&4+{~Q7CkN&0dy(DW+;EHBe5 z8yOk30#$*ZSdw=i!KYfPo!F-+XUj~>EizjnU7qjNP>0~lLE8UkPnF;JWMc=9=&Fcf zW`AaAmm_aD|0eHXEJ%6$RR9r&^G_!&L_erruZB~=E9wk%fru@~7RImVc zVhu38@zJ_GSZoFKVddXJH9uP4DV`Z{F*VhTM0{eoZ3vrCD~iMR)n_Si^BD6%#$l>U zIxyI4c+0ZZNYOC1C!OJ0FimTG;>l_4s8xAysJ2vGPrWDtrk;a+@)<^&?Y4}v+IiGX z^jRI$R)Tv<(I=?X0bTS{CzOb!sIexPiYC>}C5VJ_RpqXknmb6|Pn|%|3$>~ih@#v> z4kFG$Y+a!Bt`!F7GB2AWE)B|jUh2Mc#z^_0Yg8_IL82EZlG)RN{W{Nnl&41CsHOSR zKJH{b!LvsptFmVix0S~#N`|HqU68MczmoDICQ2iURj|9ATk+HOIb@|DQNmRL+|_&I zY z@}nG3o(oZ<;bTA{x%xgVi1<*%!x^4V++t4X^b28!uo}=9XEzB^bH};VlGSpQEO{i# zI&4$4V$d$)dygmg$K*sp{9t0wknAt=VkCY!sd(l>FLsj+!f#i^N^%=0TL;T_F!fVK z4TQTYnP7wZ!m#}e;^+gf`}eDiXU<&D6>PB47~+8gY-<*&Wcfk?1p+k z#!MztI$`E}8pHK{r{1d|0$WQ%p85#OUFzJMzd@dL*rN_3ZO$^zFvz&hsE6Tc?Y_jV zJY#>cUt!u-^VH zn~{{>nHG2I@z^!t&J008k^4`1d%zJ0%TQh&oI#sn+ z;n&$!^*nobs$gv#+8JCyUy9f!Q#Mx8S^J(V(UzMdMAFm6D80sb5br)|*L20-h{*8R z8#7fNc6>j)n;lG5bz{Xs;D~(G!uHNhB%6aF>)Z`Zxb|&B);J78X}e`Sn{G)1#cgP? zmf_%>&6?VX2wF82)`4sOBL24Fp%WK|N}MS7kusJY0$*?kmQ9zftA~kS`|5Pg*1Ona ztPgybM%==!Xt)s@=G2AzuF28psksu|nFZJ}>qwAUk|0X*{g4r+QAXjm0KdwG|B&ep zS&^}_IM@M5MGsfktp(P$-WYp-y)5|a{Uo~9T%XJInNFnX-SM;rx0xzo6PP=r=&RAU za2`!@4Ne5H)a=Vv5462HDBQ`z!%}1$McGg9ro7R@kd>p&&lHm^JZ2&XEp6{xGnEY* z`?F^COvOF0bJMYz{RHM^^DHA>!9i9)TuJA~V8K_=2{)OWR8Uug$!2A36g5(#F~4*e zg}3v)`M`&us86k!`RS)(W6u_5*1eGjkGbBPhso>3QDjmsz!DmvdW&N4MIH|2bxMda z`dsR1y0`FEkYwcL6X8f8y!(HE@i_iQt^IE>o~VGNhKwS$w2QlijGe9BSLvR$fteHG z7i9NWQK6uqojak{U#)`-41}!o^n@H7On>t-*uLPq|J;USWBQtW`xlEx%kWp*-~Wi? zaeM)D|FSYznEp~b%nclsOq>b70|Wsg08xMhKn9=;PyrYK3~au(;+za@jRF61GysMG zLq`LnFH7UAlkgvB|Li3E>(t7``9JRdI{)VbMgSu_YdhPoqm7LLz!+cxF!@J`;Xl<6 zQ-G<3s|mo=&czX61~79p`Dz+;1egQNJ?za*YylPkOMn%?8enbW zvjeyQTx^ZMKCO|RqY1zj;12Krc$zrc{Trb87mxUNK=Es`@4o|z46F=)0~G(7^!pdC z_;)~&ft`iz{|YEpDtl?8sG&m$NRcc@gjd}=fP0`JBMXc3D-a7BAR)>tFYm^+NI;M? z&5a2E81CB*YO)<`?UbL10I|If`<1BJ4C|=mG}!{rM3VRP!JY*KY7wy)2_{H@IADMpQ|q3niUu7lXpAzs!@*8tOf-nZ zjOOn!4Jk~`La03mjDUnFL5iFWsxHo?nJoXEqlTFgLU_i}7H&|mS?z3i28Yxfj{U}u zr}{e-aB(odY#bsDY^*vGE;?9dP;YV|p|}7#i9j%U0I4xyVw`{^oQ{8{DKLjO5Mz4p zH=$We;N2TFP}mZz?c7>#wx*@(I23KaHuq*4v3Jra8Qz>mi9s*!*pVB zf~2rgBnW7|h#Fv(hx3fd`t1IBqF`X~M7k-51B7V2Sub(3u)R*jW7s4>W8pG8h`}M=i;YKDLgex9yQj!{TG9sxw*o}ufM!~pVG1UNPhQ)1s z^t%8*`QSh02*i95!u6$)oR4sO=pwJZt#8nCsbL4ldXdH+EqZo{Cb@aI# zd2Z))P(@+$QHNCPWmGbI40-0TDj?CmLTuJ3vt>6VPt z+j<8+Lg`S(O$1NP!!{y^rEJ_P_t}ru7yqx{y?<(Kh!$N5-{rPP5o@M&QvYe)A1*5% zVuhB(@yYfn?{EzJy5f3t{n1XMJtU(($?% z4_#kw1cAz$b@FMcm3z^*w%+nA`RKKuZ%4{VuKAiBvdXqaoWI&i^Iv>xW^TUbAj(hX zdl?Tbrm2I~xJ#JB_8AFsW%aw1e|d3hEBu7&{$FzaX<;s)Mr#BI$%+mG#b>QHP4BcD19eg#*V@|8v8SCQZCQrM5 z+7k2Y_*ucemQ706iK}FeEsNUHc@|IgLaFQm?mEN1rJAv3S=yV*r(Gq_^X*;ECUSch z_rcWC3&JH|Q&odBo>`WKWXSh=FWHQkbFD`!gK2Nb>zUP96LOvO#G8kXS;9Z~w|IN$ zvoB0aoX$QNHpS1p?MSxiKiAow2rt4Y^1W?RD#`Mir8?J|+njZ((wrU>AG1{mt~C;x zjCvPMcs0WCJrBX2RzkMvUcfUX+A&162B`C-!dXWRi=DQ151M;gSAK7v3d@BVZHG|s zR@L>2nLX;9f4<}+U_<)R!8c&K@zpl{Ia#M$IHiVLVv^yu3zq{!m&O>TW|@0?8(fCUdoPEKy~eV zy?jg%Po!#09(?TDsd;aZ_e7#WUNov{?s~*v2$pv>*Kp<(cqRsXQs1T)sw-*Re*FcI z2O1A%auZ~got9%`4YfwE)ZTH^KL3i|I9p_0^2_)!mX>X-JF{I%jI2w2m0nKgbZ-zh zXIE6$%8twrxURbieA94dza?4u==g`lt=-*F!&+*HGIC2+3(Hg41Sm_+pQ5+Y?dcYh zm`iDGYFoO`HP|@SnHLLF%ynZY9Gd24rO@~vtrK%y%r3mTUMzk_>!UK%t$SN_8_2#+ zs@PG(Hg}G)oGZ>txp{}@6G}Q1G;kAK{g+emj#x(3CJ05wHZ~SEKP4x{l6RgVv3+5j zaB!wJgd1@u+uN-9HXsqO6BTcJhZD8xH$H4lPvHpj^_7%SV%4{4= zUxU71iYWsrvH-KXul%fKL>sP=Fe6-pQhIT#qfUiF_w#or?e2glbM@&B<4y3*N2J<+F`PTUPjoXNkz znS*d+Bf=SuzJDA@D9D*j+%3#m@(4;?Trx~D%oz#_a?9=V{rnHl>s$TQ2&M-hB+BHBC%DMCm$hewOMFwm*K7>pW*O-Vi{YRPCRL>&ky{(a!Gv^3)+p%XhM z^iP(sAYmXoepMiiI5PiOgl-rxklHjLM)}lYrsY9&c>RSr-@d_~>s`HcJ~|+nsm}&( z(N=#OLZHJT0=76%)I+GiZUUvZYETz`LZEeYuo?(1e;`Kebi1T^G@uITQ%@jpM6iA9 z3!rJ|MtdMF5apg^!f=>yIDI%52=+HxAevl6>Z_bZ?cexL5-mXEz;yI+WKRsR`v%_v z-x)f9y7?z#^f6L~{D79h_4lmd1NbI^;KBWglHsdV{eZYnD|7vT1382UcyI}9Vn>*B z>FhD2%;;g^-7Cr{sXy6de^+w6$=P6BRy9MyC z_!?>Wfv9U>#(UOpYafglQ<T}2+>T3|NJ%=Cl)RKr+-~CgL>^hRD&-iR? z36HuU`d`eH9iJ|{D@h;2qXu$V5(T!o0bD(Ui+l19paZ`jdjAY4 z)F0pD-KqdcRu@0pZ`s+VC;1_c4-D$V21KCZP40Ybcu|YLp?95bycTQNMlm9#^OJn_)m+pC zZh=4i=>D)-fz~D=p36D?+SS)=JfE7?PqZ1tFa9Wn{>?49^xmNWFF0DfzcIw?bzFi= zErkZOFDM6bgTlN6M;VvHL0vlUaB7q6a;7WHE1e^UO?@+e_4xGFE&Tc%cJfGOOCcs)pLv9IyD6HA9z$gCg^#O&9+DyVmxSWVV{g07C&5iVf}zk^$NXf=-XgA(W+XX$t3Tn z0RRoHm@o^%@8bc_c1~l4)X;dbC^`?i^tfTx3IeT0TcR85lBf9GtFMd_T<>XUHUmF~ z^18zAeoZa$a%dUx(IP{3G#Z4t(5HB(0_3{A0nuhG;pM%NP;$TRJ z{+^9)9gJsQPYOlv{X-(tc(-6SkQdnc)Mv3vFgfTAZd{u^H9graHN8oSt8YQ7OnwT! zO9f>b$d62Ra!q#@?he)-ZS1T-)Lgi?R5FXaNEL@Alfj~n7@_H`g;SV}?*-~vf-#Ft zb@io<_Z+tSY%*e+XFqQ-2RDU8YCA4-Hu(;M`X&R{Fs-7$m_wRd8k^d)33eXh$KaZb z-l*1yV#J`mk9(!Dr7814L5g>PuhR-nL;rmp5Ga1mdEJt2bmRi$2|k)$YQWigl@2l1 z7EXUQ1@p7ZX<(f z+y35sZu`snAZ!O(O~p-aI((5Hvrw}+q4SYFWar2qFIIuoLxH$BrY!1V{D3 z%WQKoGV&hXKi-Yv&)PRe%?*>pk5y9e74y}RAA%6a7NdSY3W83$Vv-_YLn@5HJ5?&6 z81_GH+?8T)SWX`MVtH?DQR*6rskgvn>+7%82CJ1k zs!DWrBWoBV!7V4ETZAn&2w0OT^dA{d1l;=svcdUsQEV zExO@p#eUO_V7yVpk`N5Pho9*vH{eulk=r7+Y)(ymV-Vi#=o^cmN@=nzkE~L8jasSV z@RzVk)su7##+?(W6&Lly;@o}K8K0h`(*a7&G8wNpNTe8C6yN2mMBqJXDHxUG^zj+c z1g47$08b0<+SC|UeST8ee|=t5``MbFo~sOlBpq!n6Y_vL?iGir`H6s(CnW8j0L)gC zVJX*NH8&+gNSScNQ#B~6kjK{n^?^Uu0R#-vv=D&}nb_Z0K0ZQK>@ITp%1ylO>O(`r zG-i9Beriy{H7MP}?nKY(vidy2)P8Qa*;tGFwRg;(m4wu+nm#+Fa61^r z*k&tD{S1A>!RafCj$RZlm%{w5P$Tp3yFwv&^f#DmDo5L$sjYWWc(I4*B!`?iAwV-n z4+SBb4(A%`lAumJ46H{zNyN)!oEVjh~UyL!)sXR&n?q$n~$Mi5HWg66oh zK1W@RTYpv=!i;6MH6x3wTC%3KOyR?uOcf$GMpKT4YowPfjcDmjRdg*8F>mF&cS$A2 zuw-E>9?0q=t9scqvPo_;doV={z5Fm90V3fHvf_MQGERI7G>D9nvmY4slCDJ%EJCrV z){s4;U!s6%J#yUZ2ZgMg=nKUJJTdSD-t=N7k!Z*cWZlm=B0(20YQPc7L>U{3PI3B_ z!7pdih)DQ4E90VooIA%xW9k`^S3yNJnrrd5yi7_>a(UGBoh`fxN)$J;!c@&&C|J}4 zgyS?7HK&S)HRb9fZ_)*Z3-^$kkt9(+Ki9e2CR>s{KGkcG!88aQry)v-}12Jww&PE<;%)J)4Jm!CAn8Bk<>oN z8W^NGyhS6@sX>&yUZvUJImsSZOT21n?J?pG3_hJz1S2s=akws;$)`}wc$!R)Yqah}wnV2S2(iKCMnVU~)h+g7OvC6nuIQ21r1R<3GTB~@q4Hfqik~b*7`Pe= z8*xbPYC#Z#gthq+{x_n^#6376`_i@@qt0yH1km9x)9H#=ZH?BSs`VP#`QMN+ImZs> zg)?oJ*ajq-rz**DrO{Y=nj8!#{@x_aW1Vbhf7H$V-oy z_v5KqAX+?~T_|f>xMNRRb@aN}zYoH5!%9$Eh}K1S`KWWn+_wWw&dE|HNw!1lvuldv z&iO`vaAdEsq_|pTe_(j2qqr#;R(ax6e6oz~$_5+@Muxf(qrdn7c~o2+@vvDKZBiR>+X6Pu7y_90)^rX z_p$_fd48PScORW$^QnRw1Igotytk^PYe;cc2dLS8^>_P0OkM0NQrMo&sb6B9F+HvW zOR0~|i09KX!d(v^9%i=Ye@7u3K6IVxWB<;Gg_j$@P9GURxXS@~$D4-m+6!agsKK9( zg(x)H=u%%n5$H$tKhzSbeK#5*{uLMQi(eo?U1T-zhy^zKqn zNw(9Pl-il;khMqWEcdbhqRKe41W*kc1V@rn&CZq47R!bprG8RWpyh)$?99-mkLcrf zh>}1`7pLmy9D>63z#~I~+*jwFZlJX7$6o9NJ0bQ3gpBRKmdWwD#6H^1fi$6m43M!+ zC?~w5Kv@@1lSzs7Gc=RkG#fi*R9lWPTgp=n)ky^jACoyUEb&e}_+3Gg5>@1PPB6MF z8~Azraz^Cs8&h-1mTl2e+NSbsxF3hMMG%#wwlu&T1SHWV3vi*x85f zL}kF^om;NQQ>_v&s%9C5i1YT7sm;_nJUvq7ER(n|p&p1zZh;0hyWMK@VQqbJA>?H# zb>|2Fe;f+m%ijC^JMq|o5}iM*piCC4kSbTZ}ckG}sTUEnue>f+t< zOJ`9!84&sp(v%NJb=)?glwe?13ABvU&ZWLwo{`2;u06jRbscfzWR{YQ0mn!e9lVNV z-b~&HOS-W&#e0>>c<$O+$pvC;AyJ-Q-ai?c`P@F6?(meAD>w9xx0frd>?wibR_efogTl?C6-O&r9f1raHWP z1VdI^2|pbm zDSn>De6R(9x7rJo4TTCxLJ7PeAieti@%vdiLiYZK)EG#Vo;D*QoWS>YCM#6U+rJy9cz%}^5Hfan<$tEpg*xTBS(ykO3jq-Cp4xGs-p zs&}jr>squ4|>SvHNGEcJG+0LEAmjha>wOnz<%oQ{;XFNA2CE%0Kyx{J*rU&-*x{jPo@M_XXf%unkkTXKyk}R{ZONF@q4Cj>o9TQ_3N|sMHMk?MSht_pdR%`8 z_}Qhl1-;_DZ8P*$RKn0pIVjgBmMuY09-q4`SUs1FYfEhl5}iUJauaN+wK0kaxM9$G zp?uOP(4z?QQ2`!gsJzJ(xiJ;IZiy&(ze(p7SEk|Hei6PXyz-`UfjJz-_%z17POgN& z$D&MuYP^ZntP%zLqQ+T7gHaI~5!A`lATU)&B6g%G&vA7IbpvwC^w7OLpTZ`$#V`S1 z_S-t=YAu6+2F{%$*hxT18-8VD_!xMZk4;WlzMyi2E9u1Q8RnKzW&!Ra&J=%EKT(;) zZ;TlIlZoVClpzbD+O8_AVg40dba z9lJF!q=Ub256nBgu)W3%vXPW^A52b4lnWIcE}zpf1bw!x!O{@Q(w9l9!NPO zCD)G3TawX~mHAmuNFI&GDx}P(k2NfuWEczkdNMTRb{Tqn9Xd>x9dYUr4XBgda$!Lo*$Gf*@*2-< zY=7jEr9^3JOYlytNnnHlwxXWJV&QSIaP-bfx8Fk?W8hUZgjmC)2APxhMC$XlL{XWb zR2`=*lk$PR^wy6;2rC7(8pI66*gIAiMB@%v`w3GA$a0P>Nmy8O!F;X>4x9jy!O~4% zsR+fnjzN-{YwG3NKl7toLwW}8#Wt(x&?>S2mVse88K6CM;S*ntjMAweZM?zvsfg;G zwpvV~$Yl?8_Vy!^mQwI#6}CD*)6Mt-MY@*7^qA{_ZIkB+ExJP}Xv=Ie{j9kPuC%Td zn~4!c4LLWf5ytDhqJ*=X6|P+ksKGfpB7#2P^fGW!h^YZmGIA6Y4zW{(qsu;6DFk)y zJ~^~vxL@vmYe&qAq#MV`cWa6&T)!#EqaZf;o2xF)73Ob&u>2#Qyqd@^?%0L>Je$6F z?H#9c5l@7~Ku1{?r!HA^o@=W;fnKpqW$zh^ZVK*3)O0sjHZ8a#g3SPV5@fy$6pr-~ z&Ob?J(dCcJF*)BfEXo#2atGf&a8GaZz8%2;xFV}P*C3(`UsJdSFp5)GK&KBQ_n2~p zc8@wF92^73sFJ*tkS6)SNgRXd4_qhtstY!m-mZ*2SJgK3>?2+AE?^JO4yI>N-A=Q^ z-LSgL&NV&*tX3GrxaZ3~P6tDyv_1F>;OE#`0_AEmngeE5zlmgUSr)a~#?c%3>5u{8 z05zE`Rk&U|6K&+5jjInmu-0zX)IMZg(PQIQ2o3!xCF;$102DCSyNvIv@(Oe3OQrdI zY)aVG(zIi<1lX5AS&ixK>|Y^BSa$_fr;dyO*WM8CZ*E~f4b%MDsTN@Kq8r2u zd%9Og)BGoo_cs^QSGJ&uN(6RhTdg-g9V{`*N0WK1Wku;nrY|0b7OMANR^ zU$&o?bL9|FjKAScT7|WE+Q`se04uBZlnF5hB-#IHkj09nagH-JfyXuwveoq-le7=; zgw`Y6vWqlS+ka%!IUx&>SUuv{?bH%0#E1)*uu_PZQjo4aIUY*1ehr_AF`fhp2s{9QLi<32&QClU(R_nAR}pc#b~H01U|oxw+3+6!xb-F zc~|xQz1c5zvboJPk~cC9yJl=7QwII)Rd=}@U^vUM_=ZVcy?NI*KNi%?z^qeIHcwQ%7`Sr_(E#2D+EBMw(k4*9SBC8V16L1aoQ~GWfJ#rvu?$Uu#096Y=@<$!A z4r?~5Ud!o|sbPHVM%7s8oDLcmZ6bkhly))eagJrPRo;6rRRy+K4R2-7NRVEB>hFfN zYo#a|xtzU9<`k)e=s?PuYSj)abPdyzgCi{?ffDL*7O_nTdq2PE*sh(X@-CZMiecmZxci5S%eET} z42$RJsto@~y@84GH-DBvt?D)TOLxw->>mA}0f{|1L{hDCfTzvO;rVCYG!MH55lLcP zkhcPB)kzJM`jVX=BFhjvfzpe`J~uAAzp*cG8Mrp0xviawHYxl@hY`bq*eGKK`tg4S zSXb|0xq0P@>Ry%Ff1B2t!y+AvS-e$^x81gm9lEEo!mf|zd{8pn)2J`FhzX1P0DYlX z+%cP>RSkH=>W+k<;mB=;nBQxV`SBk18*`TDZkPeQAj&<|jd>H0=+RRsb$3bsWzH@ebyx+!kXo6wfT}*v4igt}rT<{@Q}+ zpAvb=2|$F${hngeSf6A$^-fa23Q42?^Mt(B{Iyk5Wya`nv49WR;GHbR@WZjhQT>JF zy=zNHmO12RC(K*HzTeJklm*7(LD?d++ zeqf(^SSUryY0~{>of&-Iaz6s(7eWC>e5BcV7_+1pmgGh--Jtjhgn(0*uD}WjRt29kDxWW{B@LF%&g8tTIhF%}sR>E@L^wFAg zKW-2(LW)aH49k;Re<=Z;+R&&a#JVsBzX7mqEAEw+uS8OyO0oR3vlWc(FO<+-Fgk#_ z(5ZGq-MjY452I0_O#B)zY>tDh;Z=B@s+(;X-VOUGZyi{P3% z(#cV0HB*N`i}i7Luo|Ab!k)#X;jlQ;%OzC^oTI;hvOWxy)8sao;rPu(_sf~%cMEnG zQ~p}Qu@_?jVu&2AR+~SJdgkFxQjhxDgCbD|Y>a~Uc}v>zD{%9VJEe&6n(Ji5eF-3% z8kkmH>PltQC>`_2N`rbNavF}=lXYebxv9j@L7`jee5r3z4SEUK>YK@!2jX&W>-(f1 z9|4f5t=~KjJ8^5TfE&6A)J(i`z8CQX?X0Ar04Ga$eoWiPK35Bpltv-&b>)uy?p?A? zYkK=di!ODyHO-`9?>dEJF?|=$O5JKpeibyWHVR3_*kHO#U>nN`DO=`gE7aPPc!5~D-lFX0goA=V zZNFwdj%aUR(3J-eI9sEHQ+USxwzJ}@zI@~p%)QF;?i*H>j4YwCF=bPkX+0=}!!6tC z(2jRcb;2njZT9(VT;gp)lm-7cjHrYB$;RQ#uSaf#TFj6V=fmn{UNddCSKOb3NaD{( zAx+<=P?7qW&73eg`)p00-TYAeG6n6jfL00cWqQ30nSW|W?y#A=zhJjyu5%Q$_p5!t zok{@Xux%Bk+c#S4-9b(&AVi=-M9|*3t*d?bLP25_lk6oX76oA)p2(%DGMXqxaUArQ zX`3=YlTh~sv3_j}!1-M>@@DSQ5RUQ#;&I&n6kzIQ7TeZsh67m?*hon6xayZD$=*b; zu>W=+{|I~D%*U~F14s3Zahi=?o&Eu5+k}ZG>>unLY4WIq_A>MSqCZXBiWGZc6rWEO zZcxkTnP4MRBlWHPr6;AWBP9h}0E6k$7R`p`aZvP@JwX+|6$1VOC(p$NJap(%Fa3li z##Utnx1BC0JQwxW2rvD@KmzwCZTAn-;FL;?l0gQV=InhBv2JAFpRrku&l)D$UT9q( zK9)%eX1F1Psr?}|jiPNQ!y?NVHw`R><5=P#$GpcnPXgGwxa3io;d|q9qQ<@+qNQZS zwOIT4N>LTWd8+8)@g}9nMiPwO`<41Wjw{$5gpo6u1sU3yav*=DAS3?&F@S zikcNwv)Ds~k0V3D0zL5z*wCi8ZH`g5(4PkMfv_Y^p8AwL*dI+AcC)gB(9KILJOi@E z#z1rKuvNB=kn2+7qa!qp`XUNRWE+;tF+bwXwjjFYHH$RV*$;`gPBD|%k#0HtxrdgHuyBJY?CllW(&?SfML;k#3izP< zA!A@R*DlTS0s`Mg!{R%)Y&E_aK3YqfqF8m`Q|;0`&6?cSQMDx)ChMdLE~c(-5EK{a zxZ-L}Cz9T1>A0tXymQyaz_(GA`g5btg0U`fMsiqS@$E{%n?nj#6Ik;7{K6rN z>{6N437grwO>lsFc4G+E8?QW?gPF+L16t=xN)D)&6prEwzUgtui6sU`IXSX5hX--~ z`5C874V|a`MKQ)Oau-V0qvuj2&I^S|Lpy}azTnBN>m!ckW7MaB{e1adK!Np=r_66* ze|k>NL^_#;d#PveC$#X3`}^C>dy`u>_E+1s8d5~-m;2b_)#I24Ecs&arMN3U#>+p;fIcSrZK}u zWz|r14Rz&9(uLT{KYI(w;)G${CsglEMb3BP>ke~m(8zc@u^ntQ#(yJc7FPE4M+{ca zkQ|Ic_Yy>>Yar{Lbg`mKGJ@9M}@Dy+SW7<4F08uoxaJT}DC4 zNewGbD=)J$uvXS1I>lwq_|T1x-0bGLbx}UTaY3cL#2pWzEGO|fN1SGNd^g2k@|USg zE3(udK5`0qzh$M-UE)mUa$c)olAyh1|55i~`1kr{ zhQIqBVgOly{Fmop2r&AGn(?J$SbupK=3nB)U)se#j0+bV!!Iks!p!zRyo18iU92;* zDDc)KhFCdWhX!x^WjUK{)a4!Q~QTxWZ(pV5JJ~Exz#W?+k?oLQ(8?=&&+(z-Karz55I5m5U}CV zP6Pmr#u8vC;lyQCQcj$w>$j1xHD22q6{WtgH2Q ziWB&=)KiFy3+J)RF6blX1pz);Hl~QxGzyBQf`B7Bi`Owj3j`_kBOT4+7Zy}^?;Aqf zkNSF;-j**z4`00zSQ0Lu@5wUk%O;QaJ?fw`)= z`uo$Z`GZBX?~cIv6Nlb{qA#`y3Uq?6z`)e_BWz|?p?7v-UU+79WEn)?)ckg)zU$nQ zA4LfgN9xx}Sd(8fT6cHv_#1#%1xCuqYFm%k{;kghn)!JNns@&tgD)ZcX{e-Z?i~Z> z;gWwKR={4-rTKOH!ERwVNcv;%3L`2UY8Y;Nq`UVSyu14)W_r!FPL|B|< zDeS3BGyEPrduXi6x11)gxJd0ALX>T3=H%bz{_C2|Y2;Kc?-!B|W{@it5Uy#yzbjI$$~{cjt3-!Na-9mfjoaqF29 zQ8{_1dqQswM{=UB$jw1x2`-~o;}0=R?^q4FBGJmA<=Z6i2`cy(P!ND$s;g?KD4l zj|&QFs`fM#|9q^O8Z|ka32gHQLmbJ7W+y&KP)%|YDxaGTyTO^IQ@V@$F?<^cG1v8iZ4&9Wy^a&wP|!NrEorg?o`?4J zr6Hj~Zc83L$`S$x=fs6L#<`gqipejW)XX`|>4N+Q*$n6cup+)+Op@nqX*+whz`n6QofDvuE zn8xqSb@&Wb3}!Z)LyGcIZp>2WIN z@V+T!fcP=w^4%Jd`g<6<1q8=(CuOlVHwT!SKEswVHDeSAB`{{EEz7(gxtmZqXqMcn zK7+yVX7ylf3WIY9GTtb#eG;CeA zk(|G2V?=;lSY_Abj-^bOEYAr^+a!z`i3p}rWkIKt-FzF1Ca@EnVwkFmFUFGTPuOM- z=83Uhrulx|3#t(3PsRNLR8wSzMuw--dVUn>vy zE|R;x)gpCZW(NQy@tB{kmrDCuQibqXOk)Na$d^J>lQb64>U3o8>*&*W*7LODS%q5a zZ5IuMxO{7H|C}&Py_T!`Tubo6?K?r61V!{Hr{hHNc>gqCfuTW}pZX{5XWca(oK?vY zb)@7qH$z=6Wp40Bx#D`yV)_K697VzDN+UZlfxp?2>W#w!hJIII&(pQOi%`7ccd5av zIiOb~y4aD;_Irx_>4|=<<{@m=P6+i0*f*b_lhxU3Mc2qr7|`CZ10?kEkw1sXv#T}b z#Qk>tCrPT~(2kIzSA~k%eP%<-M--627n)j~E~J%mzPC;2lX*<0tGf4-Gm|2B+gq#$ z-y-#1>unE18nH#G)-*yAsIo<*-nnuGKh_TUMM?>~E=hYEWlY<#a3x4;fhouQ_8`3y$_?vq~ZMeT%X!9&vO`7y98S1$Gcy{WLp4!DPF8jY9hTj z333s}tRkkYEF3;y`hO?xbG-zBXfar%vdwS_pD=CHm$KtvP!3 zXqHPXVFV{|@dlS_egMU=tN#6U%1ko%iK*;ttEwOO$II?T&*S~g-7k#DESR`SYYlpii&*Um-Yqe1}4#Gl#~B)Vom849QAdIIYi-?%|U@OZ1HY<;rCZ8KWS z4Y@)Ev;^Ze+u((M6V4 zfAh-SaOfchwn;ijMh>pYMHOf71#4k2evqNIapffRgpai1lT+HRpUO6gv%VikBi5~^ zY|ZKp%K_PLA0cXvZt)qklg*DACVLJ5giMx(4`wGeHy_JV8&($-hPB~pJ|NgF?AL&n zj<6I3voUL~?y$@U(MuWyT)z!drbo_4y`#bF8CWK!svSKap}EN+E2t*YGM^j@yU1Im zpAXD@sCE1*;sjqWc$GU5YS*Fs7Q>2-+je$G$LVRXNTtP`ar)y$3iwZI-{GICldOjR z`otn93!hMs71#6Xi|dw_>iXv~&4tRE= z{?-qNi%zV)h>wqXf`lRm^Q*3_S&Px_CAIy;X|Mhm6ob%okL5 zDC@_aZt;-1u&d1Y8{d?e;ow3W@}lhn23(i6jq7u3?k_^*N4L{Mv<};?-l5d0;{|0< z!}N+~!Kn#L`N{Wz3ZhQmN6qp5vFVk=5j{7DC8_XSSnpRdT6MmDM8-;h`P?yqKIoFy z*uEv7+7skmj6qxI4sE<2And5DYN%3@3C~Hd6gWi3eg|TJ4Z%9o536w(_(|)8J(O00 zw?`|lrzY48R$qU~GvSULV_Kutgu!j?1lhNxM$knzS^D3_HQCK4Iu*gKI$$}WXXVs-3IspaQdriP>1Lb&uR z-C=d|hN`EibM;ACv-q_Z0hgnraCM)gwzy4w)hzgXj;IwZaW^urnXLE6!4~PFx>M4x zOYPfKL$qRd^LNtMZ5;|`S2C8N=0qVyI^ugR4v&smvDiHUyhRPzSR+* z-uCg_b|~8@`iQE}wv>0WsrZ9M|KG<=^D*tRj)t{HX1SSzRahI(M(xjNX}{@B@J+bk zP?RrjKFsfB{g;^N-YMdD~189rcanQk{nzbW0Pp+1UocG*qoGGy;q88_j_4exqbU#*DskLA|WndJ23_q0NSEm zs0fZL1|w;n##cuckU4}Y`?MsRoY6kuL7mvSylPUX`4N59d|fdBRy12K3z*8y)F@Ha zfal9MjfNQvuOzlH#FB`wypV%F8CVhM8f*)C#62!ynNFNAN0`7Df6q5N#FewT%M?9* zlSj9Q$iO6LYnWy#4QiI1Vm5bK$9*UF-JE3&-Z#F%rIn)Q(nw6&WS_*gRumdtW9F)R z1W>$G?i#?k6JGK1iT^*w?lH)gFj~-bxlY-(ZQHhe%C>D=r)=A{ZQHi3soTEO9W(uF zNB-SAc0}fv>s?Q2IQ1J-*+e3=e~33vTsnxbxpHt|jgjG+yU1Ydm!5H8n`Fa_w*@2OcIE}dI-HMj`6GUbY#bb6$~fWMw|Y!+ zfcc5N%mI2z96WMM27VgxlE+V?zN!1;sh)59AGQIzHa)uSD)TedbcT|Mf-ZuTi1BPu z6gsKxNLX<|GGoBEz`CGe^ce$QbLH)_75?6CwXKrhQ=Q1}9eHy=)?P4UXoJ3e<7p4`y0TRRa*dy0*gT;%h}djqo*FD2V#GogwsHjt!HP8kPXd167_LBO`vTf<--K$+l@ptqOSwz6V zbS@JP56|z5ZQ4E+U-?w$H;DHv2xReaLe>_n$`g1|q zoH{r9+zm-S`oMBz)TSkDhnqq<4oy2$HTuv$)Xd!KhM`q^w&v`h#tbXenf(1;4o(si z(fSU_W87R<&2?H_wt@*E#FeBJRFUjiJc3{>O=IfvBH<>=8~57h9zh7Ls1uLh&-2VEzk6&zN*2@FNTT5;qtYLoq(m#;Y5T=V4q9_x9#d;vKNRq+)Wbt=OH7(nUa- zv+HSX(WAzPqmV91`&kPhD?i1*;*g44(swWByE)QKh@I@hFX)1$24v$S$pOQ>8GQ*< zF_cTV1J@L5#)_?G^I?osd<4FsKej?~)EY_)Me7`W@G|q7)w!xmAz*5Y19DQ6 zOBx}D?C>vE96R+@>-mr&AWl5oXvKE1*{nHC#WlQeqr;kb4$bdE?SrJm*5y0|48S1jB+SL(mQ21F4x`i z5_;2t1|_hMImN+Bz5P9VlMc98Y9+8XC}yVyPt+ zU=w5P=%zM}s!+B)_KN$W9C|gs@zyHQRTGk>*}_Va48uKHU>E>MwiS<_|#Oz?D8^%OTQ;axxT49Qb=$O z#U*9lu~vYt-tbUC)zb@sA?22Ggg(XhXC(!}R00i29Zevq^2l|%F{Pke^dyP)kxi`x zCTxc_+KnqeKXYIiw=TaMzk~OCJ)s6HBRa}fz&D=t{Gi%dEdmyJsVGxLug*1362nrW zH#z*vhGEPkF=#U%8(cVU!y3#2v3=e~xwxAgiyB}h{3J}F{(Y`8y-zf22vnBOn`1RH zm;#Q2RByvy0_EO3v!PEx+{ccbvnVvb)=TRjFvXq&4<{`jHH{UHPebhlb*>+`xl7`a zP+F)Z)LhV5vXI>i>r5iFmHex0%ovJilvy%IBtmFeGR{duXnre$#+hQiXvoWwT(P0= z&o+MeCWS0Lc6MQB>WpMaCvtV=jr53FB-vn7BWBCjQUy@RImxs7$w_j6A<3Q|jj0Bh z|L1A>+dGYv(FZA1;I>1sr7uiJ3I>^|KQ=s>x*Ysd01?`qxzrnl`H0N0@L`70Ckd|1 zi6?mR=Z3@LZ%2Pv1-kxoGHNum3F|(=p{Z1rwEbi7Q-5idf zznBjb!!jV~W5?olTyDKlE_Sn#asUOOyUyjy)oj#~G4gG2NDUD5r~lM`p~Z#FP^1Ub zNal#F;XqN=gbel^t*IUIMunMYoM?{s_aDjGVUKCPW03-!#Vde6UX&V4nrbF^C(-&am(e_w=u=ETY-fu${du%^JsTDoK-+XgH7qCbG6NfRdw+-(6x z7a5Sn_iR+Tk3$a+EjlX(K_TxQqvLT(&*4pNcpPyBWi@+`WE6;7=|EpFXHS0ZCvKj^ z0NiFu(hD%FoJ(Yq&x5WU)O__5&%?tvn^fiWt}XpfbbG?|DN4HLRog&5KgFj+WhlFHz4w5_*li^NFc`^R-gFP3(sT$%{e zqLOn$(xzf^ze zm3jt#Q)3s#HL)I}oZvwncrgl0M*bn{-AXBPWjYedHKn3|EYkAYSCm=-F-=0h&2vSH zqukthT)Oe-7NXAJ0Og(bQOn2g7k~Z5k902e%yAQs;|c!^H%I4}Zc!@?FwzpzIi&i# zvZb-(2k*Tw3YIXGj!1Pbb`y>)>VDXS8$wgWv|59fo+dqCYY4Yc%XA68M-sF}Urc!5GeJ%n&uL_gW(BA!NOsWuNXV0kSy9bdjMcNx zj#It@!_5}8*f(TAP)i6C(ky{uc*o@K6A2`_DMxvbadm;MH=31eUia- zAoTre--xBq>M~Jo9};0*?DdZ~gPtR&hrN=w$3PgWVxlE$is-#Tr%To-;{y8qLcjM3 zhWgxoS3nkD=6s~g3p~~(Ac3Rtcc_7NJ>*O7+oT=;Kh9MSNe@WXL8`X*7or@8y!3<( zWP|(@l?cNI6|czog0L3ppMR?TF_8<5c_i&j+eug!ELU znQvesB`8@mHE31azB2B?wF31!|BSoxfBw)2m3LJ~ z-%+l7UL%9kbFs4aQjsUKo14oq0;qT$@*7092Ys0}c=^8@3)t9DR=x199j{{Be1(Ut~YIJ@K6Zq8Nm1qqoT3?5dLyN z;JZRj=Xh}4vw7K>dC&(iM;jl4S}f**(su??f23#TxpbGGI=%&m%CRhIKf{mKWaYlO zxgkW%-6`ZYoKZ95i2hz2nm18{(6_IGsjD8_q&gLRY-w40DI|z?kbFAIe2*Bz)MGt- z(er6@^`HYJH1JTZITSRLOr6_K+}Gic?m{Zoa8_0VR@5Cm+9(Glz4pJSQVX_h)m|vk z6IW%JU{%xb(81QsAq^==J>JU(NFlhoLqJZqCsQQoD_0AO(Wg%|V+^HHx6kGw)l&W; zv-=%+?bjR&)JzG@x7`ajI`*5L7>}8yFxOCDaJLMz9$Q_4Ld*#8B;0bfQ8%hsP6U@z zfUOO^sYv53zme?CDC$Y5HEw+EUQKpi3=L8@R9kq}xp;?vq}8T%3e}=nI`G&dop{{7 zX1zgw5KeO)C1ip{BSNQf_ReUTC*%*~y=H39rgc33Nsf*h)Gh%UU0Tk9yKetAItna;>SupVMO2)?hM=UIuakSIMh$u0LH z>4-5IMT!bDPfo78QL~Xn%c&fBHN2PYb#N-FYiH!gwsMkzW)b~PK-&{`Iru2W1F4<8 zz+Rs#y@h+pP_lS_2#N2%qc>w@p&0)B-(Z2f%XchI%Ml z5UtQa3*@niK=qRVAobr#k9rqf!XDYZe{iVQYQF;<5e|<#by0T}|F~gAZT(#KR8=t# z-iLY`2w8g;5n&8(f_xR99hZ}&P_}l|P(659g@?O7rBO6m* zO{uMiKnnd>Z~Sh7IGx>NRgcDo2AaH34GBFzU&es8{rMZhDOdfhp#&QkPbG1f7j>_+ zeaI=kYhoy2CIFn`a&E-&Ttxh#kUdjvN2pv$((jxQ8F#9Hrb@wsm0u8d9t*=~nP*IR zbs~As_y{S@%j3i`{>5Y>v;r~6yZ#9_{?H@@*f4+*W!tkX=$!$2*o%m&hhn#j*$tj1 zK5r*rVmz9k7WTr{VVIUihA)Qax=Epdq|41 zp4N(QBB?@aS(p3wt$n#T4QFWz3G@A9SQ&0x^bjrwK{HI?5c6%W*h>IQ9Lz)jV-;G< zj-9{52kH}$N=i5Cw#9~!qxNg0(kSlHWZ=p>ZdP^yorL`GkqTckHupXR%ir!c1C^$a zm{pFjd1XF2wG2xqk1CN~48_8Ec@DQ8#ByG%?@FpxlytylwafGuFYGXFfvg0UWXGq9 zJS#G4>&_X%4=AVz0FB4-e*}**jTWEQAXJ^kF0LX1sFWx}&mLo=$PX>LT{0Tp#LPGm zD*li8avSEWN3Yvk_0!{LgPWp$;H?r6aKr2jN_u)L(K3Cu||0pKpUH;MBz*z)Z zUX@q+=tI=Z$XywnyRjl-v?pnZz;5Fxa3*nJqXM)>wosNzq0JZq3n{+1N6>z`kdU0y ztdMblcOG>+^HGRjb_)G%Ff=TzxsJ+~!i*24k?0EYhl6*Ahe^0e*~`7NUN&TmeV;8J z7$$QwfNi{&-*gKMO<2e7H*ZbCck$VPLW!;!2>X@$;Oz&BX^z#LMEon5a!ZF#+8;lli<82d~ZkoGpY_*xu0+Q<+jA)7;Xy_wEqYk{OXVlDcmZu?*3M^1s}Ytixv zYM~l`Xegg6hXObIH1W=?j1rwOlgFCyVJyqpUbzR}zzzW3#mS123eSf#@NKSdLNMV; z$z))fDBJsBs5v39j*F9q9*)UG+zdFRVySM(@^hsv6T{bAZkBW^E4I7-94gC@Q0h7^ z#}#d)D}@JbVwXTIo%a#BnspRn$r%_QC7PPR=Z^Em>u67VJ$Bk^GNq|7y7SG-^0uYT zR4sli`00E48G%1Us|G23WBt|g-B&PJfqo;qM)WMXxhB!TxOpAh*Yt-*3Zt8*F*~I| zbq|U4rVZI2FW#A5wI&$uPviCq=guZ$$pIk)X0@SZ-svfaHTaHl_B~K|voPVR+0jev z5G<3QwuI9E-FX}3W$6xSJ{8&N4qZ5F0mf7hEEmA+2zF9u1hV4H<@KCf8X36T0}tPa^6Qm zuMDV6rpJgF6<4i<+BHV%yZh0-!qO)dHl5G2R05yjIArmkWz1zrIzwTAW3B@JS(vGV z8(lgRngR95Wya$+;c|x)8C(4bG@C1Jo0HO15&f2N2-Rx@m6i}-#Xv=I_l6c8iUvIv zj4m5wsl^22JhGbXdliyuexWSkK{DE!))H$Y+T(`{HbLf13Ffj(_|8gHAx82bNxWX_ z=aStZ76!fHsdLyXq~&+q0WUfjp?VjIr*5V}h6Va4+kH=o7yCd7fmP;|9$U#1bO4&m z*T(E}E0mNkN5BogYKRk$;-y#IPbnniYnju`ZuyXAh_Ad)EtgAy?koc8l~!>^`jy8- zl55}__j4N6pfegICV$eVmjDi1q0ZD`G~;jj)gl3`sDO-@^tvM?xU~;0G~A)w1Z_5t zu%{|R(#KfiMDrLV!6s?_P(LRIsmI6C){bWtU5Dai0J5t^3JWLFA};QjIn)h?bsng= zmUk##T8!AqW*?>-6&nZBt_Q{ma=!zfw$shjt`z%6HZssrza>ioQX%?1mfU=a$#Qx~ z&p#w>{$aMhyFSfzXIv>-27-q{re}zmcCFHHY_6e^&y$%7WCdX^{L)ZqsB@dbdo?7_ zJgt~*!;W!R$zPxm$NNE9t}?1S{t?QlWk}wr5XCK;7>n03??sJU@cTK9!`a*{&^G$UJ55ZwRGFM;L%2<5hbjKu7N%8z1RpdN1Gt2!(oM zTm&<;S#S9yQ&fP|UcZ$4!0Lc#@eISgahLYUgA}}SZ_e)BVYEjEU(Y>{-*TouD_Hsz zB`KTz9b~Uxk{ueN0Q?qx`j#cKRB;AxKq}^g>Z#nNmBky=@o5#hCF%<8SU=t94Q6S^ zEowY2lSd6EM_N6mZOWr(zn^;<=?2loU$f`e-4L9ypFmdF>S@z(MVH3zKgnIw`=TZi z4N_n)&PC%jKaRA|pcA*LYaE`_9Q(H~VjEmqgGsk-cW}ZSMt09fA^A2x8&6Op(9rh& z7GJ*4tSKu5yLsduOJ_MB_^^RG0dfe$jiV8-n4a??2L1om;kld@bA^M!7QEb z78E4U;mvx81oMO?{P_n6N)YvMkK6^9!(2mWQIYsDDbR*6H}UBb8a%+3H{qD-^Sp^qB&WiFd3kC! zXHGwU16RqQKS05>wM83sXox%9_sjXt%Qp$%A5WAf3qaeL@A7QhNhkO?A$4rIt`R?> z8m<+=Rwg?CtmiL$IDh1ERsYGZoYaS|D83v!mzVYWkjtjnfbu5K^q?i)Lu#BF+fUy& zB!@bAd|Y{W2RtFg5E{}j8To25YN^~0?~W;uy8xnTi`l1GJmF)hqh`Oj0vG6lxfwN( zQ~&L?!pOJH*-kLAW| z#XB6;FwN^PhpBLR2WE}xw7a`OC#rmW0|3%%LsgF4sR1!EDt+4?aC1qd+-B>yQ(o#| zXsvQDDqU@_T*AxcilTlceI( zezm7X_|Em;LTAt(=!-xZAb1PaW2`_YGAH< z7>Kt5R(1zd!)|R^HeFJ-c{nr=*I8V`KY5n-hUd}OtzOx4!NJeWLWt#49-(JoQ7fhA zDg_LFy?dqDPsGy0E;J>Gg7mqAq6}@zIqLV(R#)Z1g!p+7fz@e1 zvfd8C_CSXNy;nl>51LQlTnaZO6z7#t`kE1BjU^Q|2isNqzAnkw>tj!Dpt>-FL4g@E z;c=VBHdk9~#z|@KAMd*b-(|kLt1qLD4l4;}iJg^ABAL}%geRl$?NU_sNTPIA!M&37 zW6Lv)bckG2+veU308I(*tQlgx6!;V!cid^bdxWhFkndD9(rLr<@ai3%Z^pvp*>@_Q zbeK6Vr@~xA0*3Az7}qjyf)J|#Jk=ZB>hcdMedgx!ud}hdVooXL9C~10@+V9~)~64f z`VkYHy0>?t3>im^$t;86%D}ai?P&^7a>Xm%p4e7XJX$ij5B`FKdX+Nf(IB{7a2_z| zKeil5Wz=J!f2{cc3R?RqhrUH=sULdJy5V^-xs4^C8+G)R?+lRUc`RoSHh8JaU+10( z*%J^ZW<0!hL_Q$b9U_u;c_U`EG0Z+BKHyKzT$vs$8ntOHDBGTrR7AmdF!H1R9xBuF zXSDtP(Q(!>t`ezJ5ZcZcy3sknPa=&RySq*I^Qs5r(xQ@!Rm3%FCONyc+CNw+IU{}4 zscO%~CH^Gt4-Pt&S_A(q6bkw0IrKyarBW6g$W^LFJG2STUI)!#X0l)&w1t)z_B5B- zKqs3e#Ht~9=iGTzpNOp_d(ePJWUKXhEr8=W0xEL(s3Ubb6>2Mt`OTbEWH#}CPcWRT z6pUnhGxDX+OUfMZ7D6J#9*k-Q3gN}&6l1$1hMFfBj$~-tPLc&Yp{h**K!pJBtY&(P zhD{e!&?deHH)A5FO4SQ*bES$|y`WvD+%7B$H=dQvheQkSq`+LiFSQb6@R48bgfF-% zh2EO}5l=MhN56j0>hQoSthHfUJQ`3jWzWF&v0UCi_MVd5e-COG1|@3uILxz4%wgJ0 z!Yk^1yA_ea*-_l|DzO57X<^yB9f* z=^-K5?MdX(VJ<9w4-ElHS&^h=X!xSjB6_YLCJWIrE-Hi<)cVNKfTn<%oET&A0g|2$ zuXLcy1gbZMAsqq&cGP8@aWz}2m`6QX{R&hIUHEZ!I}Q-7yjfPhKpda;opYtDCUMi- z*#q@09FQeuy=`8K2MD5dc$8c9A$T!?ud{MH%nBk-Qat6wh{+AQy=7wl^4mbyOU5Zv3sz@I+MT zETg4+o!3_juUUii8u6I;-bJT`_vO}{e9D_~vKdX5nSf zTh}>3cs6)1d%ch;S_Wx|%IXJ9Mr1;x>`3Us@&K-8_XyW?$Hi3}aOkZGH)JnzO_S+d z19QR`xarP1{~qygJyE|F*0y>!|7 zt}Kf4LEo!e9tnt6j3%>{o%;s2R05qmqsMw!Ls4tS*wEOefZ54Y_fPDd$(&po3?xp> zjRY9g0;I5)TFZ3V%O;1ZdIdN>tdA|lqdgxZ#8P!NyBA@LNsP*KyvpNhUAp&r^utb7 zi5)IihqBvgZXTKx)!T382y-KHoOB6IVRC}5&89Jy7e?uLuALTS{Q`Jx3T5nyIy=MM zo0S$WRoc&uN!jot9508O<;{PwF9{R2&@li$>oHV)49;wdqKf9zK!Y=aK^-$v<0lG} z0WZ7IsG(;Z$C{!I)P#f_V{NNv_KTao#WGDV-24zITIRD#=C-X~gm*;gG(pxBaPLrJ zqSX3Y#u$;}g%BxUVMKb+nBMry(Npkg54Za+Zm=H9&5D1#(NmH*W5S(Ui%s3XL=Z9Q ztYEk6?#dw?jj833|5`Tk)QaqMD!*?i27R|uC#%}u-yIok!8M)l)y)$4emtX>B3ela z2}gCZeUXz#>y4?;e9O`1bRf-iP<^H}RIx`vW5(;e|~GJdLLvh@m1>M@>F z6XBVrhE^tco_+I^+y$J!ZS(DRP>NA0{KJJL7)hroYbAqbuWB`Qygvzb$=XmxXp_F+ zYrmdyyIe4SMURFSq2mA=OW2y|PNk^haUxp^d=kv&QY{K9!qCz8(hB+`VQYf=on28+ zro~H5Rc6q^7PJ^kMwH}0Q$XAHS1E2@1Es`K;tesCoR1S(KN?$snqJ9H=ezS0=R0vC zvw{c8t6_y!GHc5w)&Pz!BItsQ32-^Sgn zq+p=$_q_#JR$5RHAaoqU=ZeAVNJ(p(FZyNKK|Woa@MBOjK9yZ(b_;l252ZbF z5?+XL8_N2*h$|5)SW2~u?o1~RsaLqNewzw`O1(bl9zl+(jH?dm{0vt}G-u6-3)M@m zWqomAq(M?+os6D6QoavnAP@z)R1~G|;@($FNOsidA5_Pzlr9@p4_qzgMGTi4@UCG8e`owz?}$u z7u*>*fkPY5nOe`E)rE56AY^ah-i049;Wn^tt){-=jkN0V+U>Sq5WU%%CV(>B73&>i_MHkUhm+a8hNZtOB0H2{+OP7D8>brot3BrkMdDO zn9cWq#m644m<`v|7ukVCCsAF0KVRP%`{8RBejv`UjqI}ztYZ|wy9BeaYw1KvO&v5g z1OY)F(L+=AF>HSa+@2=zw!jqRj(Hg6%8Dbh=HO23rG8L)AQuVRRGmeWoMfSh% za@L5(k`1ur+PH<7;lvNF;>V2|x`ti2;RF(nE}R>FaUh#DW{z$(VY<$?yF}L(Q)MUa zf@UlK(cBj`tYz=EKP!rMth{!X+fzi>A!?xsh*qF%aj#18j9(U)mnneL>H?*zK6Cx& zQx|qJLHO8QNYX@cV-ew}b?YD8fiBVWd{t>SG~RwMQ>3vdSwEPTBCcbY*; zq*>^jxN?fInR5Uo8^ zXsj{ObY$9>cy$Z@!OP=JWBNbTwJiTjH~Rlq*9wY=$*QRSzv@~=V^in zjLiQNQ)6ZOWxD>Cx|ZcPl>MJ|EyFLD@qesq*;)Q4rpC|?2@G^Ba~M>Mr{Mg3Ow$IgFksmZ3P5?64#X$ z*#Nfs7j&{_uoAG*AwD#99dMi81{o7mf-IK;1jHqdF&F?8fRi7}4|x{5w+~S7wG&s1^@8J63K6Y~&BiU(!Ols6Bbfe+)np$1&T7Ar4my!UcHw zZ4Zzdh(pcq+jKm6KTL8BO%KY>1vDjKtIzN1n0ufLkJO8BY6R!t;`0FmzyVyDDUE|~ z>k0q}%ny6)LW}B)a%<88@}m=1fb=>w@D1Zhqy)?*lsT2f9|Pa3rOHB)=DP?{#~S>Z zw1M#m2Hcx$n~kdHn9`&9j^$b4E<{j_4{izoatixKm4X4U2k79^$n@kk@g;hE3i93o zjb<7bxYR?b2gD9oC7nfm={G%X%WS*pyY*j8k(6s09Gole?-;P3tEU_mKm2KaE-6%G zmzb8!o?0MvfT z;+N)xTCYh|hHJutm| z&(OQpbE%vF+b%Ht5VtG!bxh7cpG|iB$3JSNWjv$P2fsJiuC_S4eC6M8)4riU@q(Lu z=Q0E)E;gvwzNrG!jQFm(!I*yxY+!1cn>;%@d#=`DQTfTZ;(%{u4ts81Xu_hecIas= zgEPTvRvbQckv9joQ%%&9X{v^ zLVpbKxVhl9EBTSR6Z0xRcD<=%HC}Z_eE?Ptlbo85a4P&Qd63Mod*`;odubV2Vu^~( zffpy+;K+)TwLSYP(|-7}FSW&H@S0M(FtF#M$I7j>gz~{zAjRF@_Il-IWM-fBhTZ89 zn@q)tlqNEZxXJj8B!t-4-*-~6{RaBk9lr=T54nEgy;=)Cj|4tat370!S@VSTZGTRf z=#>x(S3Y@1xd3CGS?Hs(l+dT-CzrTY;;eZ=OVcbze~61@n(X53yKuE49^*qtXMY=ozwFiKH*#b}C ztlMQjL0AH+>us(Fsxbu!4GDUWQ4XFvl8x%)fcw4f$=WKK9FNB!DE ztR*~2d46|yQIZT~+9VkFZ(M>J{ht!VLFK^GoVQHKhWwG{i9Y#>Rc<(Bs6Aoi=Ph(P zgk2k}!eb|?_>Cc2QML$3+(Wn}MEjKY6#bz}Okj``^fI4N#-5dF9@Id-sF7Mqh(dND zZA+I+y#+ngqt3XmI04Zp{{YfHgAH0JB-cD!YViA5>#Q63g8R}3Ag5pjvBSKN__?R8 zGhD(<(g9*5ba>Cmn?6EwXgwAuAHpQ})`D5v`HMvS0>!21)Daoa)+h+3o`_G4n9lN{ z5kmBR0=ceHMS$&I8;pt9|j(Y!c%A$@)Vc zS6we$2^;=6GZohMBS;_@#uZ5f_g`;i)72G1zVsAfzmQ8%)0G0h9Drv1eJ`EXhUr!MtVU}QemuE5>;%1XzW>vzY9vO@sQ#q zY2hIW^OvE1>Q^zqgz+-&vq*pqb3WquaV!k7C!i^gN$h;xRSgka{tSD}5{%99`dRvx z&;fDQ(j?&J)i#rEY^Tn?W)Ab*RyWvzPuh3?Eu?CM+gN<7;$)VY>c1&kR7|%+**R|u5l9=daH?eov@NAZ4Gl4_mYs9+M;^1)QK|R{{E7;w3;o_hXtxHfs9J; zwWcmv-=V@QLYz(VnND-n)StKUtl5vvfYZ6vMlZcSJ-iul1aBnZkM$9S2pC=us+h?p z3OeeYnMw4eZjZKA=*VS4)dw~1(T(E`>}Dt9CJ_)9zXWcimJ~4|>X#i(2O;k-Z}(|}`(esONmc4Or^$~MHuV-N$fE14u(+nQJ3ltzPG z2`po<`Hq?9_RZIGz)Jxq=~Y1Gb685@_ep}I;%VZ$Mbe>RptWlAIyyO-4y?z3TO_}4j(Wek|OpY=B= zktNs8zZ?(hgL$I9mmRqTE_PATsE!%fcT%O2UTjb1Mw7rGbiWDJXY26WENlzzTCMVU z94fgf9jlo00S~qBZz3x-^N%qj^1oxV$4Wb4!AZ0=tN=L9YwqCPUtt zP{@+PbZ71gVX_l?(*tQa>3`Fqx2&f|JxFkD?WNu!o=Gy(IR`N~=oH7WM>5sm|Ma|1 z6Oe#%Wr}JYBi{pnEaR)!LOOT^Iyjs}43A7rZ4C_C$VDV{?yzihv5zJ-3nyQPxM}U@ z3&TEtC%Cm8l5!5eIB5;SfsJrfH}2Dt#d5RHh)(HMLzD@P1Ve#^OYSO!`i({e2JN@f zlv43g7gGZXo?l{-yE~oqPmF3euiFfh*y06tb?d6pw+__OczffG>x<$}t(e_ew==o$ zl0qqW7+k`L?}FB_f$%72Dh`ygEk~;GULr4aiyc0I~Q5kXwY` zrU0ieQ01J=v;ZsSwj~6o;wen0Z>%okP|z_iHD~Vb&Pr9PuU zqk(>fKv)h`94nk6F2d9mKBbak$usQdh#krF`(p;c@G#g{$3sAtH@7iwU&Zo=i;TmJ z4&sZ0W9iw_rtJ4Q=<;B#2G0D+E=R`!k9P)_H`hn&L&Wf%c#v$(WkX}OEwDn!1Gc_a zkyR2~GK?D^AZ*cG>gcClIQ?}IPU<0e!tDqnKR)+|}{P zgmsCdbcuJ=i@kb`|10;9%3)1rgG{9QM0_>BIzdic!d(`UT?gfbd~v z&IgY=DDSDLbkS-aqh8|g3}AW$q45>;>eKw({4ycvgT}x&+>xs{&_`XSgQ1mFb4AfO zb-17ek;V<2@)*`=*Rdu&>7y@hRc#8PfkO_=Z#O7)d01*+G_3${gY9(-rO*U z=-QbSpmW>RXdfh`Ka4N+{G zg7)AQUM4rZFFCO^QPN+SHHxr1yhV z;b!ao!K&JZ?Y(k@X7wa(5?3gbHWhOeG3gThy>E?86A2yGAsM_jX1-hverAC?U@ciU8iz9{TIWl_NY|?r+eoLB}OtUb^OOWQdDb_G3D8zSgAQ;dF;5K z4{ICZ5j0bYX58ll9Q{n2&LrLm^gF074~Ytfk4tcaD1!sels5$7QYlPg;G|8j+Q@jX zlH3If3znn^87EHj+qka0&gS@`aV3~56>{4eBeFy@qDh%0U|5u+F>N*gQpkwgms_(r zRAIFgoU$o?Q&$@dn7!Y9uM>!SvBCSomU$CzOzRT*1P?xY^WDSiX479sAh-o4Z27Qo z?g3a5j9ss0f;O zi0n)D_B94n)y!Hrd#1!JmLI5QrxZb{VsYlw!)(JHVGSE>mgOoXDsqX|ISc25;#wXA za^A**t>0Q8ZKzaYtoqrUxmhaS{AE>_<8pFveFA&vS*u?`Pjx98i2Q*UpRvPox<(>vQHZw<(wrzkn(i`Melb9i>D z9iusXAnP1O{tcn_ZOvtLEBMOWuNj3}dgqAq*}>zVF;m~Za!+?{V+#zcj)-M`GtRd} zU4xtHdkn{^o?OJaxvCNAk#av`3jTR@6X<}LdhO(};L8=?j{_0U)LqCLqOq_7;xclJ z&+`#RmZpdPN}gZ0T8_0!IUIDT_Q5RNyHSBU?J4pA@djQ(-QA6m(PrR+K7wu6Qir#9 zs3?rQC7j%s$q5`SAv0kjl?m}n!HuPk?=d?WxlxlI%QE^{pBtEOBg%fXW}QiN{ECC| zzgP%jF3iCbRBJws;H3|etSCN@K>07TjI$aLxGVyA_;%4nxHM8ea!FB*ecTzXBY<)) zj3cOqU1+MZx*Duhce%bYLf=QU8&Sd6d)k~%oCJu*eP`1ak8&*iIaiGXT}x| zcXP5qJ_F8a)@SB*n~KI&6^28vP}F0T*fyC8R%Rl+SSh2omu_Z_7Pm>4C>^Q3l2`0U|{z$30 z9D#P!?;kN*=l2~((Ec?C8|pdTjRibHDx|H-atkdK5~-vKv`ZHG5s#TTh-Xh+ThUZ26`<|cxl=! z7=pBHevZA;#7vzMK>Kq)4?nGA1ZE81)r~oJd_&Nc8OWZm{8e6EVqA-r@TO~us~3!< zWDoSL$s1~Y1UB%zUn9+wT>eIvXyEF7${)B_mj+mVRpy4+|7o`@b}?vi$I)nmShj6f z^Hf4qX9syWEHb1&vYw`%qv#Y{$#>46Sir}cec30CUiV#>qY(OSanEd4<6FJ~UmW>% z-(Mb07m9OrgsmHqOaXsihQoFk;@ugM9>e8?agnD4GuMTo9(n} z>Qvl0)|A;QRK(VTG-_HbXn*V+)$Ec@*#s^;0Fhn6MxeiepIKQ9{EPaN81Ai-54xaA z8;MhQW|*@j&jbu7GC(U#y|Xk`78LEBUfDW7^gZnFLL7W}s3fG~8r~?A@T`&cgI&}B zn~aZMvKHr-3%bE`OsV3x1%Si&K9Hpn(C~T+49k8}>*RL^^pH*<;VCgj(=+t{RCXQk zRCoWs@kmIbAtKkv$hiAn7m-cK-l2;t^Agv}N@SHSqhybenUPsWWQGbE*?S~HM*4qm zJv|xyp5O29<@IvEALpL)KA&;U;q^ZEEh_*nJj%^KJ+j_&q@Q|@JDFGC>`{jvQ?C1? zn=4!$L9R1iEbHmimr%tm4c1RYctGukXI)Qn>XbPyjk+jh%fMzl`REp)K1#Z$a9v9@ zUr9?gY*xV0iavS|I)?B1P=ETXlv2Qpc3wf@R#u4cOCuIsLAx>D2oZEe>Ny!DW zul8ekvC^ON8DMc%eHl1dENQ+xix{>#K)`!yiZ{_<3(*mC9(EdVvqWeu=;39P#QhwrBdwh<0eSsCj}R zICLfxOI0I%)JGGPdS3Y;YCv((HLsJa1A_0Oa(9z6D5Rw{Ez?+}E?z9JTAsE>jfGSg zyoVi_7^V=4vDu6}nR~b1 zNiq9?=CV86XAT@oYGgYYfPA}B^ltoRx{|-c2e;w(lh>MsL_DD;aTla#!`VZv8IE2a zVzWDNX~uTx(9!$z=^P}Rx_!1cs}}NS-Tf+g2?kqak$ErOBIP*8KW-$B^-;qI5lwBr z;fW1X`Q8)E9kYLJ;B&ct1kw@J_>-Ql9XTZZupCAl=CKI{tXK`^ElsUj+sxUAIdPqt_vY~50%t>rl^yc_qw#)Z+N7Z zukcEeozQg6Q?pAi55-;jV5cmx+Ls}GhvMKRmx_~aaaqv{A88hDOVG+59$VRzq`t1$ z<13`W-{?Prk@M7?&^vc!ec^)wo$1?B10Qb|2|1?I5Ux6r+=+*4CgeF~MYMHOev~+a z)R&>GZ@6^AGl~Pyy$~a;C0BiYDPC*xN=P<> zaX5`!5tKG(l_^t_Ev^zU=o$5Gym(J7vB^$?oF?2Nsld>;z_o$nkmGlyhM2d7YL3?L%oQq^B~92xOO?S^0vgR z%1UNgJ-70XixxP`%t&)Fz(1A0crwA&uG%B4Ha8^2sh>n^5pseFMSgOT9AaFcbp*X) zELsuW&Bq?lqNIZ1+2gDChNvE?a~I$JsI(HoP5*$S zt|gc2Cq_=Zqjwvvw^x#LR6mP4ePL#8>*||~i(j_xjW8!|*3DN#ie)mGlPzD+756RH z8C}xLjuvI_$|*9j&uVoTbeWY=N}cbWxa?dcrq7o4cucXj?yux84~j^pmkKkY{7h>Zj({o;p3pi_F&baC2f|s!)(rKcFf;PqS80J9XufD_dOeO`$S} z(xC$yLo`((^odl(9#gQ$bROI7FgKNkjy5{2s;~8n4`h(A?x7fA)6cJt9^{Cr)oC&3 zeAr^L8S7*czShhqa;^O3T5t^u9%{;UYpSK`uEq$iiMQsV&d_O5y>`2KORhc}4evP9 z^!9)k>BDpdF1xneHgdHG!LqY?SIFkaRWm+MHaMydSfr$qzbMSqPB}#VX;7w7*jVPA z^I>^#(XCSNY_l^x_ccOtxQ;z(+3v|to}pZp{qXWO*Tr*vc@KlT6R#aoIBgj}%Pns+ z_)JhLmX|dF9V9jOQi|zj=D^ZTY$aPUPX!y4`H`hSE4O>uT`4&RLdus`+ffjOPkx?8 zqrG!Y5aDvD^s#AbyEtkaH7yn~Rg|pi*2RUKH@*$2wCHA^>tDYvL0LEzg$daAGiPfg zXx;dbXHl&0g?)HJBu}vF>M9-tw@#zlp_V6C*N@gEoHMQ0nACdfS56-m&!5;ecZ3Uh z^^DKe@w*Q!?3Qdk8>T1T8G)RP`r6sSsiqa%eP3Pk@wH-}+k&faiw-uMR#m2lJuhZc zw2*8lX@oOefI|&NgL3K5rSm#Foflbyf1LCNgG3vWIS-jWms{kMba3o6Wx923^y9(m zkIb>ESkJJ{$j7-feb29T)9WUo-C*xgq$MV$jmIGWS+jVqrB%Mp2htg9L79!Pu%H^8AoNR zjd3-`8ADZ2VQT5*sqyY)>{g>xvrl)7%G{^7Gj7PtFM`Z%F z`S+u1K?DW%x3WI{Nc$_@r-4kmU^`N8%lJ|;Vf9v8Z^*BY3*#kl0Er5$|7y241w3h~nK zU1iC6_km3`b3AhKbM9!atdjn~c2Y|9owQ?`IZID+k1OyhiG-bCJ_KkBHskO%JRBx* zT|y_urC(0bM&aH}8XQ?Gkl3!^y2Fwh->b&sH64w9k-o@U{Z02Q+0x0VPcoWZPfYXJ zUsL<>Dml$*`!;#w7wYM5-&_l4rqDbYrJl92I_E}kAFw$vQ)gsgsoYI5$)jWZEdVdp ztwEoD^A|C!x`Gq+{ZO(hJx)X0$ED62&nCBAZPq=#Yn1DZ)XTviC=Ese#g$uV#92Dt|g$2lHH--vPN za}nn?!A|MjqFNDXIKWZ3v}M5{qQmMk!}EUWr1)_s2BWXhtU^gLnzUNgUBl`jKJdE@ z%thqEZXX>SZ&!_RIJ$_oJ433JXs&9=o`W-9ZD+|RNSO1yqODs9rJlZU4ur+T4{{>n zgavcOTTcg24qCpaS(;Cf^N%37N4#2O(5aLpedM)-d0 zKO@PNzF}qVKU7Cr=lJ$uTrd^GnTvSVYbz$@R>ck zHHnCqpb$E*Zuc3LXFBkh|3$+$jS``@jgTG<{;(CYYJnTR_WHbI^lKmPq{BozSC=z} z*G7)KlXIwJ{aB$4V%9N3Q!?3(F=T>_ggO=?-(??h!+bvx(CSxdX#aQoGHmYo|CSmm`$@gV7hgn>4&&NfP^er3)}$00D<`~8?t={{ z_Kfq>QEC2%{0&b(ii!!cOEIR`5+PfkF?qw8Y#<^Hy*`&LD(<6XI_@RiY~6YJh+{#2 z0YAG>yCXwA#Hz{WO!YcS?IH(9p&a-N?Z+gxC6VQIUE1rxQL3Y&izL$1MLlU;Gft<3 z%g3KKlfLNm?72a8@cBmH(rVi|zqU_-5#-_U=N0k|USVNrrcd+y>+w~N^u6d{&%g2= z?+d3>_Zefma;EI&83zKo*8@yx$4x3IP*k;()MmjWG2D3nevOg(q)5kHG+BbY@yx~n z-_)jAa;D_q6XT5*<_7w~nwF2%HOjDqkQmi%p`1tryKqX%<(^@WTHkZo$Mk#Tb>{dP zx2i6ipAuC zj?zC5oHh_-U;9)a%>bm+pql`+mMC|bt-D|j1vAMK`^Lp~rB=3R`Jjlf^&W(@i3-S#{2ErU} z2U)55k02jJWuTJ{&dXO8$**4Aj5FeCJ5+-xl?H@#Gza|AxA99>$pr%5Bu0y(HLzR5 zc)3`+a*sqmCjWQy>x!e48#cm$k*uZVy$9=;qBNycAFf@c9iaBR);#`L2muHqw^_9zRLH9ShWTHcAF zQfL_2|JgL%UoZHfUSIDzKClEaY^?OmZ`1NQnG5Aa;2Ns2gd{-U{F!KON~HPxhsNh% zILn5}_3RJ&`K5!>@&1-0mn|eMD7g8bD$m~NlW)Da;evn4Vy$xhtu-vXx>_!~@UDm^ zguE*wX2z(A>aS$u{wQB2cuCJBM;XHhe|uFLw@7!*$eHacs)+=?1I8}zO11NDY$x~e zmn@`J7O)z^A%-L4+ip|6(Qw2xsV`2_U8Nw7db*FsiSbz@X5pQbVQs((9nY^t>DAxg zQ405@&)ZVRM@S#@`nF|JZzVz-913RDA73=9dp>eT^bE^vGDW3cM&e_XY)FT|(|*fO z2UZjdsYNU@AKJdsvngVEK59NB2n;pOZ?H)%U$`f9 zyfk|mrfZmD0DOQ(zV{UbjmLZv#KC_S@+IjD0Cg{}^r6`yzE36``ScutP)?PcTt)Ak=Smmj#;?}#T zW&3**F2qEiHYhVUndF`fnsQ@kQ%WCx$uw10diO*UG%QQ;ZD$cC{(W)%TM?Q>a*lr6 z>5sA0bWwb>Hy2vWER`w|GjP9GP1eVt9vcxiM%gMLM%t?Wl30#;x|8uskmb9}s@l!h zhs{(vQ7jLt3cEH%Z+9wfzAsPEpAWfok-vKxOd)2+TQ#eZP95P%S~_SSS-`d!J$t*s zPYZQvLXelk`NKh;d$e3OvV;j-CG$+?V(6yYAuKB=jVF&ZIq#>APnS(B=vfZ-Zg)3D zmRE4od3gp1`D|%+3r}#uhdMgOIcsxAPBYq2>F8CK98t=((>teZyw){uiudP8l(!3) z%D3>57}8Y%rD++o{T$m~1i8*OEfZ-4wr(HHSo{vK5lB5uYwE%+P|VIq&j2 z%R*20gi}K;sxh%0(6UR?|?$>{8kDsW(ebq%MdNEtI|eL z>8UlcZ_RrwQ&nL0tWUmD;_fg$SQzl_>>pSt^Lt!IACM!t$zpeywW_WHfBg;S^+0d| z@UQoUYL-OEHPP9SfV?ga#sT`0twZKcF%>G0v)nD` zUE5lV04Y@p$0+PT(OZ+t=&JHMnVc6gLXnBnPv#}=z2;ygB+ArVh2`+cl$oLU{MKG) zy>9FDddo6*x?uuFANO<_{&g0dubOt90kZL?O=x!AOB&8 zLotAe(N1wqS5nzO4?TpOKjLd9}?5)6twpb$z z9KjN2LiqLiCw2R$I@1r`rym4y2i$LJxY;kECNn(leQy{ z_f8f#9J((Sl6WI)V>A2>z%ynhCOBIh-Uw$0(uMsXv|EDUNHG2%Eh!M3AB?rK0feQn zc;lTUbsH@3z8?TF{QP}zYl%&d*UKWA|ZXZw>C zPjIvb6HIM!f4j-V3~(5c^lpbE(%*mj5l{4&k+r2Yz=y|Knf-iaiLZJ(GrxF6#{VaOi?{bc=vph(ECs|C0p7Y#sA0QOJs>5&TygMfPnfJzrR46-kv zQr36^kjM6h1ZNu@2u!RvAc4iOb~xg1KwwohDM>9cZgB-kEhupFfoLSwgsqtk!P*uC z$NWecu#}mt9YNd_YYT$H0O>Cvmj66xni&&J?LaVMUGGdTp!$AGhy5<}f5W1#sH3DN z2VhZ<{R0+2PmMUj4lGEZF8{%T0;csh7C3R}oml?7=KLEJX<1<9kp!Tq{0Rwg9bz{U zqCDFlk?g&A0sZsEn16#JqbV*SsR2My)&3I}Vu!oDvJ(pNGRv<3{S4*rWP$Fy1MWa%?@Sir!!IoSdjdp!{v|W_zd^YwEh8$e#H~sI)*h^_ zv8uC`Jg=%H7EdsMqJV2Fd-52$FL$836Pft*D|>!M_qU^VYT*5E;Qmc7aCd9XKgu;Fo1^n-6{b#Vms`>wArj+OvZ3Pu>d3z@_1#7(ZzFb7?TT|gX*D+va z|Lx14dW`?#OX&VBTnT#vX9pZ~tnGpI9XP|tnHdvzaAL)Qpg+0I!;)7N3;8rKKSjk0(M>Gc~gV0pCBN@&1Gcg7IMha7Y-4^A||2 z9UH5YEzX1-0zyH^0Y%Thzkss@638DD(BC#F1_L;f_yxlMW8>!sJiglofe<%=T{a97 zg8`~yw+#?*1y-ItHaHxJ*=`#WL5$-b8$WU9-fcr6A^XRL@$Y*t3bk)s2m<~G8;qFA zyT*XPps>9*3=)X~_TydcFh~?;Z#xJI1$b_EI|vHFzZWwEfrReEjD#Zg+8}6t^u96B z=>79Rp^53f3m*i7!0hV}14jc3%kFk)3~j|~XsKFk;tbRQNB3b8LYFqr*uL!kDL zi^1%h8x(@vHwIuMo|<-Hh60Y>I}a!zRJ#`+6p94oTlc&dMy!xMHVlNg6YU-Y14HiZ z4~Bxn_Rbdul+fNW;Bd^o`T(?aQG3TlK>7EzL%@Kj@4q4(wnKMb+2KYkehz8u0J_VVH1b{z!@g~+FVz`LMNLdMxt`Hg_j*>z^ zAmZY1xC9C&iUHCRA|` - -using boost::math::constants::pi; - -template -inline T area_of_a_circle(T r) -{ - return pi() * (r * r); -} - -#include -#include -#include - -using boost::multiprecision::cpp_dec_float_50; - -int main(int, char**) -{ - const float r_f(float(123) / 100); - const float a_f = area_of_a_circle(r_f); - - const double r_d(double(123) / 100); - const double a_d = area_of_a_circle(r_d); - - const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100); - const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp); - - // 4.75292 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << a_f - << std::endl; - - // 4.752915525616 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << a_d - << std::endl; - - // 4.7529155256159981904701331745635599135018975843146 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << a_mp - << std::endl; -} diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp deleted file mode 100644 index ccf0ad97..00000000 --- a/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp +++ /dev/null @@ -1,79 +0,0 @@ -template -value_type derivative(const value_type x, - const value_type dx, - function_type func) -{ - // Compute d/dx[func(*first)] using a three-point - // central difference rule of O(dx^6). - - const value_type dx1 = dx; - const value_type dx2 = dx1 * 2; - const value_type dx3 = dx1 * 3; - - const value_type m1 = ( func(x + dx1) - - func(x - dx1)) / 2; - const value_type m2 = ( func(x + dx2) - - func(x - dx2)) / 4; - const value_type m3 = ( func(x + dx3) - - func(x - dx3)) / 6; - - const value_type fifteen_m1 = 15 * m1; - const value_type six_m2 = 6 * m2; - const value_type ten_dx1 = 10 * dx1; - - return ((fifteen_m1 - six_m2) + m3) / ten_dx1; -} - -#include -#include -#include -#include - -using boost::math::constants::pi; -using boost::multiprecision::cpp_dec_float_50; - -int main(int, char**) -{ - const float d_f = - derivative(float(pi() / 3), - 0.01F, - [](const float x) -> float - { - return ::sin(x); - }); - - const double d_d = - derivative(double(pi() / 3), - 0.001, - [](const double x) -> double - { - return ::sin(x); - }); - - const cpp_dec_float_50 d_mp = - derivative(cpp_dec_float_50(pi() / 3), - cpp_dec_float_50(1.0E-9), - [](const cpp_dec_float_50 x) -> cpp_dec_float_50 - { - return boost::multiprecision::sin(x); - }); - - // 0.500003 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << d_f - << std::endl; - - // 0.499999999999888 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << d_d - << std::endl; - - // 0.50000000000000000000000000000000000000000003925935 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << d_mp - << std::endl; -} diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp deleted file mode 100644 index 787de062..00000000 --- a/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp +++ /dev/null @@ -1,105 +0,0 @@ -template -inline value_type integral(const value_type a, - const value_type b, - const value_type tol, - function_type func) -{ - unsigned n = 1U; - - value_type h = (b - a); - value_type I = (func(a) + func(b)) * (h / 2); - - for(unsigned k = 0U; k < 8U; k++) - { - h /= 2; - - value_type sum(0); - for(unsigned j = 1U; j <= n; j++) - { - sum += func(a + (value_type((j * 2) - 1) * h)); - } - - const value_type I0 = I; - I = (I / 2) + (h * sum); - - const value_type ratio = I0 / I; - const value_type delta = ratio - 1; - const value_type delta_abs = ((delta < 0) ? -delta : delta); - - if((k > 1U) && (delta_abs < tol)) - { - break; - } - - n *= 2U; - } - - return I; -} - -#include -#include -#include -#include - -template -class cyl_bessel_j_integral_rep -{ -public: - cyl_bessel_j_integral_rep(const unsigned N, - const value_type& X) : n(N), x(X) { } - - value_type operator()(const value_type& t) const - { - // pi * Jn(x) = Int_0^pi [cos(x * sin(t) - n*t) dt] - return cos(x * sin(t) - (n * t)); - } - -private: - const unsigned n; - const value_type x; -}; - - -int main(int, char**) -{ - using boost::math::constants::pi; - typedef boost::multiprecision::cpp_dec_float_50 mp_type; - - const float j2_f = - integral(0.0F, - pi(), - 0.01F, - cyl_bessel_j_integral_rep(2U, 1.23F)) / pi(); - - const double j2_d = - integral(0.0, - pi(), - 0.0001, - cyl_bessel_j_integral_rep(2U, 1.23)) / pi(); - - const mp_type j2_mp = - integral(mp_type(0), - pi(), - mp_type(1.0E-20), - cyl_bessel_j_integral_rep(2U, mp_type(123) / 100)) / pi(); - - // 0.166369 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << j2_f - << std::endl; - - // 0.166369383786814 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << j2_d - << std::endl; - - // 0.16636938378681407351267852431513159437103348245333 - std::cout - << std::setprecision(std::numeric_limits::digits10) - << j2_mp - << std::endl; -} diff --git a/include/boost/multiprecision/arithmetic_backend.hpp b/include/boost/multiprecision/depricated/arithmetic_backend.hpp similarity index 100% rename from include/boost/multiprecision/arithmetic_backend.hpp rename to include/boost/multiprecision/depricated/arithmetic_backend.hpp diff --git a/include/boost/multiprecision/fixed_int.hpp b/include/boost/multiprecision/depricated/fixed_int.hpp similarity index 100% rename from include/boost/multiprecision/fixed_int.hpp rename to include/boost/multiprecision/depricated/fixed_int.hpp From b6d6d5ea0131bdd9b8e293311bd1dd349ef0c3b4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 17 Apr 2012 09:20:47 +0000 Subject: [PATCH 175/256] Fix __int128 selection logic [SVN r78034] --- include/boost/multiprecision/detail/cpp_int_core.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/multiprecision/detail/cpp_int_core.hpp b/include/boost/multiprecision/detail/cpp_int_core.hpp index e63fb2ed..31ce2245 100644 --- a/include/boost/multiprecision/detail/cpp_int_core.hpp +++ b/include/boost/multiprecision/detail/cpp_int_core.hpp @@ -8,7 +8,8 @@ namespace boost{ namespace multiprecision{ -#if defined(__GNUC__) && !defined(BOOST_INTEL) && defined(__WORDSIZE) && (__WORDSIZE == 64) +#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6))) \ + && !defined(BOOST_INTEL) && defined(__WORDSIZE) && (__WORDSIZE == 64) typedef boost::uint64_t limb_type; typedef boost::int64_t signed_limb_type; From 9ee0022c7720171b403789a5041387f6e4764c32 Mon Sep 17 00:00:00 2001 From: Christopher Kormanyos Date: Fri, 20 Apr 2012 20:05:49 +0000 Subject: [PATCH 176/256] Re-factor cpp_dec_float class constants. Extend cpp_dec_float low-digit range from 30 to 9. Removed temporary storage from cpp_dec_float multiply routine. Extended tests to 9, 18 and (sqrt test) to 1000 digits. [SVN r78097] --- .../boost/multiprecision/cpp_dec_float.hpp | 861 +++++++++--------- test/Jamfile.v2 | 7 + test/math/test_bessel_i.cpp | 2 + test/math/test_zeta.cpp | 2 + test/test_asin.cpp | 3 + test/test_atan.cpp | 3 + test/test_exp.cpp | 3 + test/test_log.cpp | 3 + test/test_pow.cpp | 3 + test/test_sin.cpp | 3 + test/test_sinh.cpp | 3 + test/test_sqrt.cpp | 208 +++-- 12 files changed, 573 insertions(+), 528 deletions(-) diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 417c0f81..74d3a3e5 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -9,8 +9,8 @@ // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 // -#ifndef BOOST_MP_EFX_BACKEND_HPP -#define BOOST_MP_EFX_BACKEND_HPP +#ifndef BOOST_MP_CPP_DEC_FLOAT_BACKEND_HPP +#define BOOST_MP_CPP_DEC_FLOAT_BACKEND_HPP #include #include @@ -29,30 +29,31 @@ namespace backends{ template class cpp_dec_float { -public: - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list float_types; - typedef long long exponent_type; - - - static const boost::int32_t mp_radix = 10; - +private: static const boost::int32_t cpp_dec_float_digits10_setting = Digits10; - static const boost::int32_t cpp_dec_float_digits10_limit = boost::integer_traits::const_max - 100; - static const boost::int32_t cpp_dec_float_digits10 = ((Digits10 < 30) ? 30 : ((Digits10 > cpp_dec_float_digits10_limit) ? cpp_dec_float_digits10_limit : Digits10)); - static const boost::int64_t cpp_dec_float_max_exp10 = 2776234983093287512; - static const boost::int64_t cpp_dec_float_min_exp10 = -2776234983093287512; - static const boost::int64_t cpp_dec_float_max_exp = (cpp_dec_float_max_exp10 / 301LL) * 1000LL; - static const boost::int64_t cpp_dec_float_min_exp = (cpp_dec_float_min_exp10 / 301LL) * 1000LL; - static const boost::int32_t mp_elem_digits10 = static_cast(8); +public: + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + typedef long long exponent_type; + + static const boost::int32_t cpp_dec_float_radix = 10L; + static const boost::int32_t cpp_dec_float_digits10_limit_lo = 9L; + static const boost::int32_t cpp_dec_float_digits10_limit_hi = boost::integer_traits::const_max - 100; + static const boost::int32_t cpp_dec_float_digits10 = ((cpp_dec_float_digits10_setting < cpp_dec_float_digits10_limit_lo) ? cpp_dec_float_digits10_limit_lo : ((cpp_dec_float_digits10_setting > cpp_dec_float_digits10_limit_hi) ? cpp_dec_float_digits10_limit_hi : cpp_dec_float_digits10_setting)); + static const boost::int64_t cpp_dec_float_max_exp10 = static_cast( 2776234983093287512LL); + static const boost::int64_t cpp_dec_float_min_exp10 = static_cast(-2776234983093287512LL); + static const boost::int64_t cpp_dec_float_max_exp = static_cast((cpp_dec_float_max_exp10 / 301LL) * 1000LL); + static const boost::int64_t cpp_dec_float_min_exp = static_cast((cpp_dec_float_min_exp10 / 301LL) * 1000LL); - BOOST_STATIC_ASSERT(0 == cpp_dec_float_max_exp10 % mp_elem_digits10); BOOST_STATIC_ASSERT(cpp_dec_float_max_exp10 == -cpp_dec_float_min_exp10); private: - static const boost::int32_t cpp_dec_float_digits10_num_base = static_cast((cpp_dec_float_digits10 / mp_elem_digits10) + (((cpp_dec_float_digits10 % mp_elem_digits10) != 0) ? 1 : 0)); + static const boost::int32_t cpp_dec_float_elem_digits10 = 8L; + static const boost::int32_t cpp_dec_float_elem_mask = 100000000L; + + BOOST_STATIC_ASSERT(0 == cpp_dec_float_max_exp10 % cpp_dec_float_elem_digits10); // There are three guard limbs. // 1) The first limb has 'play' from 1...8 decimal digits. @@ -60,39 +61,41 @@ private: // 3) One limb can get lost when justifying after multiply, // as only half of the triangle is multiplied and a carry // from below is missing. - static const boost::int32_t mp_elem_number = static_cast(cpp_dec_float_digits10_num_base + 3); - static const boost::int32_t mp_elem_mask = static_cast(100000000); + static const boost::int32_t cpp_dec_float_elem_number_request = static_cast((cpp_dec_float_digits10 / cpp_dec_float_elem_digits10) + (((cpp_dec_float_digits10 % cpp_dec_float_elem_digits10) != 0) ? 1 : 0)); + + // The number of elements needed (with a minimum of two) plus three added guard limbs. + static const boost::int32_t cpp_dec_float_elem_number = static_cast(((cpp_dec_float_elem_number_request < 2L) ? 2L : cpp_dec_float_elem_number_request) + 3L); public: - static const boost::int32_t cpp_dec_float_total_digits10 = mp_elem_number * mp_elem_digits10; + static const boost::int32_t cpp_dec_float_total_digits10 = static_cast(cpp_dec_float_elem_number * cpp_dec_float_elem_digits10); private: - typedef enum enum_fpclass + typedef enum enum_fpclass_type { - mp_finite, - mp_inf, - mp_NaN + cpp_dec_float_finite, + cpp_dec_float_inf, + cpp_dec_float_NaN } - t_fpclass; + fpclass_type; - typedef boost::array array_type; + typedef boost::array array_type; - array_type data; - boost::int64_t exp; - bool neg; - t_fpclass fpclass; - boost::int32_t prec_elem; + array_type data; + boost::int64_t exp; + bool neg; + fpclass_type fpclass; + boost::int32_t prec_elem; // // Special values constructor: // - cpp_dec_float(t_fpclass c) : + cpp_dec_float(fpclass_type c) : data(), exp (static_cast(0)), neg (false), fpclass (c), - prec_elem(mp_elem_number) { } + prec_elem(cpp_dec_float_elem_number) { } // // Static data initializer: @@ -130,15 +133,15 @@ public: data(), exp (static_cast(0)), neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) { } + fpclass (cpp_dec_float_finite), + prec_elem(cpp_dec_float_elem_number) { } cpp_dec_float(const char* s) : data(), exp (static_cast(0)), neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) + fpclass (cpp_dec_float_finite), + prec_elem(cpp_dec_float_elem_number) { *this = s; } @@ -148,8 +151,8 @@ public: data(), exp (static_cast(0)), neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) + fpclass (cpp_dec_float_finite), + prec_elem(cpp_dec_float_elem_number) { from_unsigned_long_long(i); } @@ -159,8 +162,8 @@ public: data(), exp (static_cast(0)), neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) + fpclass (cpp_dec_float_finite), + prec_elem(cpp_dec_float_elem_number) { if(i < 0) { @@ -183,7 +186,7 @@ public: exp (f.exp), neg (f.neg), fpclass (static_cast(static_cast(f.fpclass))), - prec_elem(mp_elem_number) + prec_elem(cpp_dec_float_elem_number) { // TODO: this doesn't round! std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); @@ -195,8 +198,8 @@ public: data(), exp (static_cast(0)), neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) + fpclass (cpp_dec_float_finite), + prec_elem(cpp_dec_float_elem_number) { *this = val; } @@ -206,13 +209,13 @@ public: // Specific special values. static const cpp_dec_float& nan() { - static const cpp_dec_float val(mp_NaN); + static const cpp_dec_float val(cpp_dec_float_NaN); init.do_nothing(); return val; } static const cpp_dec_float& inf() { - static const cpp_dec_float val(mp_inf); + static const cpp_dec_float val(cpp_dec_float_inf); init.do_nothing(); return val; } @@ -389,13 +392,13 @@ public: } // Comparison functions - bool isnan (void) const { return (fpclass == mp_NaN); } - bool isinf (void) const { return (fpclass == mp_inf); } - bool isfinite(void) const { return (fpclass == mp_finite); } + bool isnan (void) const { return (fpclass == cpp_dec_float_NaN); } + bool isinf (void) const { return (fpclass == cpp_dec_float_inf); } + bool isfinite(void) const { return (fpclass == cpp_dec_float_finite); } bool iszero (void) const { - return ((fpclass == mp_finite) && (data[0u] == 0u)); + return ((fpclass == cpp_dec_float_finite) && (data[0u] == 0u)); } bool isone (void) const; bool isint (void) const; @@ -441,14 +444,14 @@ public: { if(prec_digits >= cpp_dec_float_total_digits10) { - prec_elem = mp_elem_number; + prec_elem = cpp_dec_float_elem_number; } else { - const boost::int32_t elems = static_cast( static_cast( (prec_digits + (mp_elem_digits10 / 2)) / mp_elem_digits10) - + static_cast(((prec_digits % mp_elem_digits10) != 0) ? 1 : 0)); + const boost::int32_t elems = static_cast( static_cast( (prec_digits + (cpp_dec_float_elem_digits10 / 2)) / cpp_dec_float_elem_digits10) + + static_cast(((prec_digits % cpp_dec_float_elem_digits10) != 0) ? 1 : 0)); - prec_elem = (std::min)(mp_elem_number, (std::max)(elems, static_cast(2))); + prec_elem = (std::min)(cpp_dec_float_elem_number, (std::max)(elems, static_cast(2))); } } static cpp_dec_float pow2(long long i); @@ -500,22 +503,22 @@ public: } } - return (bo_order_is_zero ? static_cast(0) - : static_cast(exp + prefix)); + return (bo_order_is_zero ? static_cast(0) : static_cast(exp + prefix)); } private: static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast(0u)); } - static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(cpp_dec_float::mp_elem_mask - 1)); } + static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(cpp_dec_float::cpp_dec_float_elem_mask - 1)); } static bool char_is_nonzero_predicate(const char& c) { return (c != static_cast('0')); } void from_unsigned_long_long(const unsigned long long u); int cmp_data(const array_type& vd) const; - static void mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p); - static boost::uint32_t mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); - static boost::uint32_t div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); + + static boost::uint32_t mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p); + static boost::uint32_t mul_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); + static boost::uint32_t div_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); bool rd_string(const char* const s); @@ -528,11 +531,13 @@ template typename cpp_dec_float::initializer cpp_dec_float::init; template -const boost::int32_t cpp_dec_float::mp_radix; +const boost::int32_t cpp_dec_float::cpp_dec_float_radix; template const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_setting; template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit; +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit_lo; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit_hi; template const boost::int32_t cpp_dec_float::cpp_dec_float_digits10; template @@ -544,13 +549,13 @@ const boost::int64_t cpp_dec_float::cpp_dec_float_max_exp10; template const boost::int64_t cpp_dec_float::cpp_dec_float_min_exp10; template -const boost::int32_t cpp_dec_float::mp_elem_digits10; +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_digits10; template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_num_base; +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_number_request; template -const boost::int32_t cpp_dec_float::mp_elem_number; +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_number; template -const boost::int32_t cpp_dec_float::mp_elem_mask; +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_mask; template @@ -576,7 +581,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float } // Get the offset for the add/sub operation. - static const boost::int64_t max_delta_exp = static_cast((mp_elem_number - 1) * mp_elem_digits10); + static const boost::int64_t max_delta_exp = static_cast((cpp_dec_float_elem_number - 1) * cpp_dec_float_elem_digits10); const boost::int64_t ofs_exp = static_cast(exp - v.exp); @@ -597,7 +602,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float typename array_type::iterator p_u = data.begin(); typename array_type::const_iterator p_v = v.data.begin(); bool b_copy = false; - const boost::int32_t ofs = static_cast(static_cast(ofs_exp) / mp_elem_digits10); + const boost::int32_t ofs = static_cast(static_cast(ofs_exp) / cpp_dec_float_elem_digits10); array_type n_data; if(neg == v.neg) @@ -623,11 +628,11 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float // Addition algorithm boost::uint32_t carry = static_cast(0u); - for(boost::int32_t j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) + for(boost::int32_t j = static_cast(cpp_dec_float_elem_number - static_cast(1)); j >= static_cast(0); j--) { boost::uint32_t t = static_cast(static_cast(p_u[j] + p_v[j]) + carry); - carry = t / static_cast(mp_elem_mask); - p_u[j] = static_cast(t - static_cast(carry * static_cast(mp_elem_mask))); + carry = t / static_cast(cpp_dec_float_elem_mask); + p_u[j] = static_cast(t - static_cast(carry * static_cast(cpp_dec_float_elem_mask))); } if(b_copy) @@ -641,7 +646,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float { std::copy_backward(data.begin(), data.end() - static_cast(1u), data.end()); data[0] = carry; - exp += static_cast(mp_elem_digits10); + exp += static_cast(cpp_dec_float_elem_digits10); } } else @@ -686,7 +691,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float // Subtraction algorithm boost::int32_t borrow = static_cast(0); - for(j = static_cast(mp_elem_number - static_cast(1)); j >= static_cast(0); j--) + for(j = static_cast(cpp_dec_float_elem_number - static_cast(1)); j >= static_cast(0); j--) { boost::int32_t t = static_cast(static_cast( static_cast(p_u[j]) - static_cast(p_v[j])) - borrow); @@ -695,7 +700,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float if(t < static_cast(0)) { // Yes, underflow and borrow - t += static_cast(mp_elem_mask); + t += static_cast(cpp_dec_float_elem_mask); borrow = static_cast(1); } else @@ -703,7 +708,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float borrow = static_cast(0); } - p_u[j] = static_cast(static_cast(t) % static_cast(mp_elem_mask)); + p_u[j] = static_cast(static_cast(t) % static_cast(cpp_dec_float_elem_mask)); } if(b_copy) @@ -733,7 +738,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float std::copy(data.begin() + static_cast(sj), data.end(), data.begin()); std::fill(data.end() - sj, data.end(), static_cast(0u)); - exp -= static_cast(sj * static_cast(mp_elem_digits10)); + exp -= static_cast(sj * static_cast(cpp_dec_float_elem_digits10)); } } } @@ -852,22 +857,22 @@ cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float // Set the exponent of the result. exp += v.exp; - boost::array(mp_elem_number + static_cast(1))> w = {{ 0u }}; - const boost::int32_t prec_mul = (std::min)(prec_elem, v.prec_elem); - mul_loop_uv(data.data(), v.data.data(), w.data(), prec_mul); - // Copy the multiplication data into the result. - // Shift the result and adjust the exponent if necessary. - if(w[static_cast(0u)] != static_cast(0u)) - { - exp += static_cast(mp_elem_digits10); + const boost::uint32_t carry = mul_loop_uv(data.data(), v.data.data(), prec_mul); - std::copy(w.begin(), w.begin() + prec_mul, data.begin()); - } - else + // Handle a potential carry. + if(carry != static_cast(0u)) { - std::copy(w.begin() + 1u, w.begin() + (prec_mul + 1), data.begin()); + exp += cpp_dec_float_elem_digits10; + + // Shift the result of the multiplication one element to the right... + std::copy_backward(data.begin(), + data.begin() + static_cast(prec_elem - static_cast(1)), + data.begin() + static_cast(prec_elem)); + + // ... And insert the carry. + data.front() = carry; } // Set the sign of the result. @@ -945,7 +950,7 @@ cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const u return *this = zero(); } - if(n >= static_cast(mp_elem_mask)) + if(n >= static_cast(cpp_dec_float_elem_mask)) { neg = b_neg; cpp_dec_float t; @@ -966,7 +971,7 @@ cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const u // Handle the carry and adjust the exponent. if(carry != static_cast(0u)) { - exp += static_cast(mp_elem_digits10); + exp += static_cast(cpp_dec_float_elem_digits10); // Shift the result of the multiplication one element to the right. std::copy_backward(data.begin(), @@ -979,7 +984,7 @@ cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const u bool overflow = exp >= cpp_dec_float_max_exp10; if(exp == cpp_dec_float_max_exp10) { - // Check to see if we really truely have an overflow or not... + // Check to see if we really truly have an overflow or not... if(isneg()) { cpp_dec_float t(*this); @@ -1053,7 +1058,7 @@ cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const u return *this; } - if(n >= static_cast(mp_elem_mask)) + if(n >= static_cast(cpp_dec_float_elem_mask)) { neg = b_neg; cpp_dec_float t; @@ -1072,14 +1077,14 @@ cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const u if(data[0] == static_cast(0u)) { // Adjust the exponent - exp -= static_cast(mp_elem_digits10); + exp -= static_cast(cpp_dec_float_elem_digits10); // Shift result of the division one element to the left. std::copy(data.begin() + static_cast(1u), data.begin() + static_cast(prec_elem - static_cast(1)), data.begin()); - data[prec_elem - static_cast(1)] = static_cast(static_cast(prev * static_cast(mp_elem_mask)) / nn); + data[prec_elem - static_cast(1)] = static_cast(static_cast(prev * static_cast(cpp_dec_float_elem_mask)) / nn); } } @@ -1164,7 +1169,7 @@ cpp_dec_float& cpp_dec_float::calculate_inv() neg = b_neg; - prec_elem = mp_elem_number; + prec_elem = cpp_dec_float_elem_number; return *this; } @@ -1247,7 +1252,7 @@ cpp_dec_float& cpp_dec_float::calculate_sqrt(void) *this += t; } - prec_elem = mp_elem_number; + prec_elem = cpp_dec_float_elem_number; return *this; } @@ -1366,7 +1371,7 @@ bool cpp_dec_float::isone() const const typename array_type::const_iterator it_non_zero = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); return (it_non_zero == data.end()); } - else if((data[0u] == static_cast(mp_elem_mask - 1)) && (exp == static_cast(-mp_elem_digits10))) + else if((data[0u] == static_cast(cpp_dec_float_elem_mask - 1)) && (exp == static_cast(-cpp_dec_float_elem_digits10))) { const typename array_type::const_iterator it_non_nine = std::find_if(data.begin(), data.end(), data_elem_is_non_nine_predicate); return (it_non_nine == data.end()); @@ -1379,15 +1384,15 @@ bool cpp_dec_float::isone() const template bool cpp_dec_float::isint() const { - if(fpclass != mp_finite) { return false; } + if(fpclass != cpp_dec_float_finite) { return false; } if(iszero()) { return true; } if(exp < static_cast(0)) { return false; } // |*this| < 1. - const typename array_type::size_type offset_decimal_part = static_cast(exp / mp_elem_digits10) + 1u; + const typename array_type::size_type offset_decimal_part = static_cast(exp / cpp_dec_float_elem_digits10) + 1u; - if(offset_decimal_part >= static_cast(mp_elem_number)) + if(offset_decimal_part >= static_cast(cpp_dec_float_elem_number)) { // The number is too large to resolve the integer part. // It considered to be a pure integer. @@ -1424,8 +1429,8 @@ void cpp_dec_float::extract_parts(double& mantissa, boost::int64_t& ex } mantissa = static_cast(data[0]) - + (static_cast(data[1]) / static_cast(mp_elem_mask)) - + ((static_cast(data[2]) / static_cast(mp_elem_mask)) / static_cast(mp_elem_mask)); + + (static_cast(data[1]) / static_cast(cpp_dec_float_elem_mask)) + + ((static_cast(data[2]) / static_cast(cpp_dec_float_elem_mask)) / static_cast(cpp_dec_float_elem_mask)); mantissa /= static_cast(p10); @@ -1455,13 +1460,13 @@ double cpp_dec_float::extract_double(void) const if(xx.isneg()) xx.negate(); - // Check for zero cpp_dec_float. + // Check if *this cpp_dec_float is zero. if(iszero() || (xx.compare(double_min()) < 0)) { return 0.0; } - // Check if cpp_dec_float exceeds the maximum of double. + // Check if *this cpp_dec_float exceeds the maximum of double. if(xx.compare(double_max()) > 0) { return ((!neg) ? std::numeric_limits::infinity() @@ -1483,7 +1488,7 @@ long double cpp_dec_float::extract_long_double(void) const { // Returns the long double conversion of a cpp_dec_float. - // Check for non-normal cpp_dec_float. + // Check if *this cpp_dec_float is subnormal. if(!isfinite()) { if(isnan()) @@ -1501,13 +1506,13 @@ long double cpp_dec_float::extract_long_double(void) const if(xx.isneg()) xx.negate(); - // Check for zero cpp_dec_float. + // Check if *this cpp_dec_float is zero. if(iszero() || (xx.compare(long_double_min()) < 0)) { return static_cast(0.0); } - // Check if cpp_dec_float exceeds the maximum of double. + // Check if *this cpp_dec_float exceeds the maximum of double. if(xx.compare(long_double_max()) > 0) { return ((!neg) ? std::numeric_limits::infinity() @@ -1557,11 +1562,11 @@ signed long long cpp_dec_float::extract_signed_long_long(void) const val = static_cast(xn.data[0]); - const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); + const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / cpp_dec_float_elem_digits10), static_cast(cpp_dec_float_elem_number - static_cast(1))); for(boost::int32_t i = static_cast(1); i <= imax; i++) { - val *= static_cast(mp_elem_mask); + val *= static_cast(cpp_dec_float_elem_mask); val += static_cast(xn.data[i]); } } @@ -1601,11 +1606,11 @@ unsigned long long cpp_dec_float::extract_unsigned_long_long(void) con // Extract the data into an unsigned long long value. val = static_cast(xn.data[0]); - const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / mp_elem_digits10), static_cast(mp_elem_number - static_cast(1))); + const boost::int32_t imax = (std::min)(static_cast(static_cast(xn.exp) / cpp_dec_float_elem_digits10), static_cast(cpp_dec_float_elem_number - static_cast(1))); for(boost::int32_t i = static_cast(1); i <= imax; i++) { - val *= static_cast(mp_elem_mask); + val *= static_cast(cpp_dec_float_elem_mask); val += static_cast(xn.data[i]); } } @@ -1640,8 +1645,8 @@ cpp_dec_float cpp_dec_float::extract_integer_part(void) cons cpp_dec_float x = *this; // Clear out the decimal portion - const size_t first_clear = (static_cast(x.exp) / static_cast(mp_elem_digits10)) + 1u; - const size_t last_clear = static_cast(mp_elem_number); + const size_t first_clear = (static_cast(x.exp) / static_cast(cpp_dec_float_elem_digits10)) + 1u; + const size_t last_clear = static_cast(cpp_dec_float_elem_number); std::fill(x.data.begin() + first_clear, x.data.begin() + last_clear, static_cast(0u)); @@ -1677,8 +1682,8 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: else if(f & std::ios_base::scientific) ++number_of_digits; // Determine the number of elements needed to provide the requested digits from cpp_dec_float. - const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(mp_elem_digits10)) + 2u), - static_cast(mp_elem_number)); + const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(cpp_dec_float_elem_digits10)) + 2u), + static_cast(cpp_dec_float_elem_number)); // Extract the remaining digits from cpp_dec_float after the decimal point. str = boost::lexical_cast(data[0]); @@ -1688,7 +1693,7 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: { std::stringstream ss; - ss << std::setw(static_cast(mp_elem_digits10)) + ss << std::setw(static_cast(cpp_dec_float_elem_digits10)) << std::setfill(static_cast('0')) << data[i]; @@ -1808,6 +1813,9 @@ bool cpp_dec_float::rd_string(const char* const s) std::string str(s); + // TBD: Using several regular expressions may significantly reduce + // the code complexity (and perhaps the run-time) of rd_string(). + // Get a possible exponent and remove it. exp = static_cast(0); @@ -1857,8 +1865,7 @@ bool cpp_dec_float::rd_string(const char* const s) return true; } - - // Remove leading zeros for all input types. + // Remove the leading zeros for all input types. const std::string::iterator fwd_it_leading_zero = std::find_if(str.begin(), str.end(), char_is_nonzero_predicate); if(fwd_it_leading_zero != str.begin()) @@ -1877,10 +1884,10 @@ bool cpp_dec_float::rd_string(const char* const s) } // Put the input string into the standard cpp_dec_float input form - // aaa.bbbbE+/-n, where aa has 1...mp_elem_digits10, bbbb has an - // even multiple of mp_elem_digits10 which are possibly zero padded - // on the right-end, and n is a signed 32-bit integer which is an - // even multiple of mp_elem_digits10. + // aaa.bbbbE+/-n, where aaa has 1...cpp_dec_float_elem_digits10, bbbb has an + // even multiple of cpp_dec_float_elem_digits10 which are possibly zero padded + // on the right-end, and n is a signed 64-bit integer which is an + // even multiple of cpp_dec_float_elem_digits10. // Find a possible decimal point. pos = str.find(static_cast('.')); @@ -1918,7 +1925,7 @@ bool cpp_dec_float::rd_string(const char* const s) delta_exp = std::distance(str.begin() + 1u, it_non_zero); } - // Bring one single digit into the mantissa and adjust exponent accordingly. + // Bring one single digit into the mantissa and adjust the exponent accordingly. str.erase(str.begin(), it_non_zero); str.insert(static_cast(1u), "."); exp -= static_cast(delta_exp + 1u); @@ -1930,14 +1937,14 @@ bool cpp_dec_float::rd_string(const char* const s) str.append("."); } - // Shift the decimal point such that the exponent is an even multiple of mp_elem_digits10. + // Shift the decimal point such that the exponent is an even multiple of cpp_dec_float_elem_digits10. std::size_t n_shift = static_cast(0u); - const std::size_t n_exp_rem = static_cast(exp % static_cast(mp_elem_digits10)); + const std::size_t n_exp_rem = static_cast(exp % static_cast(cpp_dec_float_elem_digits10)); - if((exp % static_cast(mp_elem_digits10)) != static_cast(0)) + if((exp % static_cast(cpp_dec_float_elem_digits10)) != static_cast(0)) { n_shift = ((exp < static_cast(0)) - ? static_cast(n_exp_rem + static_cast(mp_elem_digits10)) + ? static_cast(n_exp_rem + static_cast(cpp_dec_float_elem_digits10)) : static_cast(n_exp_rem)); } @@ -1963,31 +1970,31 @@ bool cpp_dec_float::rd_string(const char* const s) exp -= static_cast(n_shift); } - // Cut the size of the mantissa to <= mp_elem_digits10. + // Cut the size of the mantissa to <= cpp_dec_float_elem_digits10. pos = str.find(static_cast('.')); pos_plus_one = static_cast(pos + 1u); - if(pos > static_cast(mp_elem_digits10)) + if(pos > static_cast(cpp_dec_float_elem_digits10)) { const boost::int32_t n_pos = static_cast(pos); - const boost::int32_t n_rem_is_zero = ((static_cast(n_pos % mp_elem_digits10) == static_cast(0)) ? static_cast(1) : static_cast(0)); - const boost::int32_t n = static_cast(static_cast(n_pos / mp_elem_digits10) - n_rem_is_zero); + const boost::int32_t n_rem_is_zero = ((static_cast(n_pos % cpp_dec_float_elem_digits10) == static_cast(0)) ? static_cast(1) : static_cast(0)); + const boost::int32_t n = static_cast(static_cast(n_pos / cpp_dec_float_elem_digits10) - n_rem_is_zero); - str.insert(static_cast(static_cast(n_pos - static_cast(n * mp_elem_digits10))), "."); + str.insert(static_cast(static_cast(n_pos - static_cast(n * cpp_dec_float_elem_digits10))), "."); str.erase(pos_plus_one, static_cast(1u)); - exp += static_cast(static_cast(n) * static_cast(mp_elem_digits10)); + exp += static_cast(static_cast(n) * static_cast(cpp_dec_float_elem_digits10)); } // Pad the decimal part such that its value is an even - // multiple of mp_elem_digits10. + // multiple of cpp_dec_float_elem_digits10. pos = str.find(static_cast('.')); pos_plus_one = static_cast(pos + 1u); const boost::int32_t n_dec = static_cast(static_cast(str.length() - 1u) - static_cast(pos)); - const boost::int32_t n_rem = static_cast(n_dec % mp_elem_digits10); - boost::int32_t n_cnt = ((n_rem != static_cast(0)) ? static_cast(mp_elem_digits10 - n_rem) + const boost::int32_t n_rem = static_cast(n_dec % cpp_dec_float_elem_digits10); + boost::int32_t n_cnt = ((n_rem != static_cast(0)) ? static_cast(cpp_dec_float_elem_digits10 - n_rem) : static_cast(0)); if(n_cnt != static_cast(0)) @@ -1996,7 +2003,7 @@ bool cpp_dec_float::rd_string(const char* const s) } // Truncate decimal part if it is too long. - const std::size_t max_dec = static_cast((mp_elem_number - 1) * mp_elem_digits10); + const std::size_t max_dec = static_cast((cpp_dec_float_elem_number - 1) * cpp_dec_float_elem_digits10); if(static_cast(str.length() - pos) > max_dec) { @@ -2016,15 +2023,15 @@ bool cpp_dec_float::rd_string(const char* const s) data[0u] = boost::lexical_cast(str.substr(static_cast(0u), pos)); // ...then get the remaining digits to the right of the decimal point. - const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast(mp_elem_digits10)); + const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast(cpp_dec_float_elem_digits10)); for(std::string::size_type i = static_cast(0u); i < i_end; i++) { const std::string::const_iterator it = str.begin() + pos_plus_one - + (i * static_cast(mp_elem_digits10)); + + (i * static_cast(cpp_dec_float_elem_digits10)); - data[i + 1u] = boost::lexical_cast(std::string(it, it + static_cast(mp_elem_digits10))); + data[i + 1u] = boost::lexical_cast(std::string(it, it + static_cast(cpp_dec_float_elem_digits10))); } // Check for overflow... @@ -2076,11 +2083,11 @@ cpp_dec_float::cpp_dec_float(const double mantissa, const long long ex : data (), exp (static_cast(0)), neg (false), - fpclass (mp_finite), - prec_elem(mp_elem_number) + fpclass (cpp_dec_float_finite), + prec_elem(cpp_dec_float_elem_number) { - // Create an cpp_dec_float from mantissa and exponent. - // This ctor does not maintain the full precision of double. + // Create *this cpp_dec_float from a given mantissa and exponent. + // Note: This constructor does not maintain the full precision of double. const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits::min)() * (1.0 + std::numeric_limits::epsilon()))); @@ -2098,9 +2105,9 @@ cpp_dec_float::cpp_dec_float(const double mantissa, const long long ex while(d > 10.0) { d /= 10.0; ++e; } while(d < 1.0) { d *= 10.0; --e; } - boost::int32_t shift = static_cast(e % static_cast(mp_elem_digits10)); + boost::int32_t shift = static_cast(e % static_cast(cpp_dec_float_elem_digits10)); - while(static_cast(shift-- % mp_elem_digits10) != static_cast(0)) + while(static_cast(shift-- % cpp_dec_float_elem_digits10) != static_cast(0)) { d *= 10.0; --e; @@ -2111,7 +2118,7 @@ cpp_dec_float::cpp_dec_float(const double mantissa, const long long ex std::fill(data.begin(), data.end(), static_cast(0u)); - static const boost::int32_t digit_ratio = static_cast(static_cast(std::numeric_limits::digits10) / static_cast(mp_elem_digits10)); + static const boost::int32_t digit_ratio = static_cast(static_cast(std::numeric_limits::digits10) / static_cast(cpp_dec_float_elem_digits10)); static const boost::int32_t digit_loops = static_cast(digit_ratio + static_cast(2)); for(boost::int32_t i = static_cast(0); i < digit_loops; i++) @@ -2119,7 +2126,7 @@ cpp_dec_float::cpp_dec_float(const double mantissa, const long long ex boost::uint32_t n = static_cast(static_cast(d)); data[i] = static_cast(n); d -= static_cast(n); - d *= static_cast(mp_elem_mask); + d *= static_cast(cpp_dec_float_elem_mask); } } @@ -2180,33 +2187,33 @@ void cpp_dec_float::from_unsigned_long_long(const unsigned long long u exp = static_cast(0); neg = false; - fpclass = mp_finite; - prec_elem = mp_elem_number; + fpclass = cpp_dec_float_finite; + prec_elem = cpp_dec_float_elem_number; std::size_t i =static_cast(0u); unsigned long long uu = u; - boost::uint32_t temp[(std::numeric_limits::digits10 / static_cast(mp_elem_digits10)) + 3] = { static_cast(0u) }; + boost::uint32_t temp[(std::numeric_limits::digits10 / static_cast(cpp_dec_float_elem_digits10)) + 3] = { static_cast(0u) }; while(uu != static_cast(0u)) { - temp[i] = static_cast(uu % static_cast(mp_elem_mask)); - uu = static_cast(uu / static_cast(mp_elem_mask)); + temp[i] = static_cast(uu % static_cast(cpp_dec_float_elem_mask)); + uu = static_cast(uu / static_cast(cpp_dec_float_elem_mask)); ++i; } if(i > static_cast(1u)) { - exp += static_cast((i - 1u) * static_cast(mp_elem_digits10)); + exp += static_cast((i - 1u) * static_cast(cpp_dec_float_elem_digits10)); } std::reverse(temp, temp + i); - std::copy(temp, temp + (std::min)(i, static_cast(mp_elem_number)), data.begin()); + std::copy(temp, temp + (std::min)(i, static_cast(cpp_dec_float_elem_number)), data.begin()); } template -void cpp_dec_float::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p) +boost::uint32_t cpp_dec_float::mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p) { // // There is a limit on how many limbs this algorithm can handle without dropping digits @@ -2214,24 +2221,24 @@ void cpp_dec_float::mul_loop_uv(const boost::uint32_t* const u, const // // FLOOR( (2^64 - 1) / (10^8 * 10^8) ) == 1844 // - BOOST_STATIC_ASSERT_MSG(mp_elem_number < 1800, "Too many limbs in the data type for the multiplication algorithm - unsupported precision in cpp_dec_float."); + BOOST_STATIC_ASSERT_MSG(cpp_dec_float_elem_number < 1800, "Too many limbs in the data type for the multiplication algorithm - unsupported precision in cpp_dec_float."); boost::uint64_t carry = static_cast(0u); for(boost::int32_t j = static_cast(p - 1u); j >= static_cast(0); j--) { - boost::uint64_t sum = carry; + boost::uint64_t sum = carry; - for(boost::int32_t i = j; i >= static_cast(0); i--) - { - sum += static_cast(u[i] * static_cast(v[j - i])); - } + for(boost::int32_t i = j; i >= static_cast(0); i--) + { + sum += static_cast(u[j - i] * static_cast(v[i])); + } - w[j + 1] = static_cast(sum % static_cast(mp_elem_mask)); - carry = static_cast(sum / static_cast(mp_elem_mask)); + u[j] = static_cast(sum % static_cast(cpp_dec_float_elem_mask)); + carry = static_cast(sum / static_cast(cpp_dec_float_elem_mask)); } - w[0u] = static_cast(carry); + return static_cast(carry); } template @@ -2243,8 +2250,8 @@ boost::uint32_t cpp_dec_float::mul_loop_n(boost::uint32_t* const u, bo for(boost::int32_t j = p - 1; j >= static_cast(0); j--) { const boost::uint64_t t = static_cast(carry + static_cast(u[j] * static_cast(n))); - carry = static_cast(t / static_cast(mp_elem_mask)); - u[j] = static_cast(t - static_cast(static_cast(mp_elem_mask) * static_cast(carry))); + carry = static_cast(t / static_cast(cpp_dec_float_elem_mask)); + u[j] = static_cast(t - static_cast(static_cast(cpp_dec_float_elem_mask) * static_cast(carry))); } return static_cast(carry); @@ -2257,7 +2264,7 @@ boost::uint32_t cpp_dec_float::div_loop_n(boost::uint32_t* const u, bo for(boost::int32_t j = static_cast(0); j < p; j++) { - const boost::uint64_t t = static_cast(u[j] + static_cast(prev * static_cast(mp_elem_mask))); + const boost::uint64_t t = static_cast(u[j] + static_cast(prev * static_cast(cpp_dec_float_elem_mask))); u[j] = static_cast(t / n); prev = static_cast(t - static_cast(n * static_cast(u[j]))); } @@ -2274,261 +2281,261 @@ cpp_dec_float cpp_dec_float::pow2(const long long p) init.do_nothing(); static const boost::array, 255u> p2_data = {{ - cpp_dec_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), - cpp_dec_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), - cpp_dec_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"), - cpp_dec_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"), - cpp_dec_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"), - cpp_dec_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"), - cpp_dec_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"), - cpp_dec_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"), - cpp_dec_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"), - cpp_dec_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"), - cpp_dec_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"), - cpp_dec_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"), - cpp_dec_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"), - cpp_dec_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"), - cpp_dec_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"), - cpp_dec_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"), - cpp_dec_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"), - cpp_dec_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"), - cpp_dec_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"), - cpp_dec_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"), - cpp_dec_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"), - cpp_dec_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"), - cpp_dec_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"), - cpp_dec_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"), - cpp_dec_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"), - cpp_dec_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"), - cpp_dec_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"), - cpp_dec_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"), - cpp_dec_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"), - cpp_dec_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"), - cpp_dec_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"), - cpp_dec_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"), - cpp_dec_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"), - cpp_dec_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"), - cpp_dec_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"), - cpp_dec_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"), - cpp_dec_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"), - cpp_dec_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"), - cpp_dec_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"), - cpp_dec_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"), - cpp_dec_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"), - cpp_dec_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"), - cpp_dec_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"), - cpp_dec_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"), - cpp_dec_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"), - cpp_dec_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"), - cpp_dec_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"), - cpp_dec_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"), - cpp_dec_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"), - cpp_dec_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"), - cpp_dec_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"), - cpp_dec_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"), - cpp_dec_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"), - cpp_dec_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"), - cpp_dec_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"), - cpp_dec_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"), - cpp_dec_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"), - cpp_dec_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"), - cpp_dec_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"), - cpp_dec_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"), - cpp_dec_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"), - cpp_dec_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"), - cpp_dec_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"), - cpp_dec_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"), - cpp_dec_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"), - cpp_dec_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"), - cpp_dec_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"), - cpp_dec_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"), - cpp_dec_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"), - cpp_dec_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"), - cpp_dec_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"), - cpp_dec_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"), - cpp_dec_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"), - cpp_dec_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"), - cpp_dec_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_dec_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_dec_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_dec_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"), - cpp_dec_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"), - cpp_dec_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"), - cpp_dec_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"), - cpp_dec_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"), - cpp_dec_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"), - cpp_dec_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"), - cpp_dec_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_dec_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_dec_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_dec_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"), - cpp_dec_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - cpp_dec_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - cpp_dec_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"), - cpp_dec_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - cpp_dec_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - cpp_dec_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), - cpp_dec_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_dec_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_dec_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_dec_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), - cpp_dec_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - cpp_dec_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - cpp_dec_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), - cpp_dec_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - cpp_dec_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - cpp_dec_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), - cpp_dec_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_dec_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_dec_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_dec_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), - cpp_dec_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - cpp_dec_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - cpp_dec_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), - cpp_dec_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), - cpp_dec_float("0.125"), - cpp_dec_float("0.25"), - cpp_dec_float("0.5"), - one(), - two(), - cpp_dec_float(static_cast(4)), - cpp_dec_float(static_cast(8)), - cpp_dec_float(static_cast(16)), - cpp_dec_float(static_cast(32)), - cpp_dec_float(static_cast(64)), - cpp_dec_float(static_cast(128)), - cpp_dec_float(static_cast(256)), - cpp_dec_float(static_cast(512)), - cpp_dec_float(static_cast(1024)), - cpp_dec_float(static_cast(2048)), - cpp_dec_float(static_cast(4096)), - cpp_dec_float(static_cast(8192)), - cpp_dec_float(static_cast(16384)), - cpp_dec_float(static_cast(32768)), - cpp_dec_float(static_cast(65536)), - cpp_dec_float(static_cast(131072)), - cpp_dec_float(static_cast(262144)), - cpp_dec_float(static_cast(524288)), - cpp_dec_float(static_cast(1uL << 20u)), - cpp_dec_float(static_cast(1uL << 21u)), - cpp_dec_float(static_cast(1uL << 22u)), - cpp_dec_float(static_cast(1uL << 23u)), - cpp_dec_float(static_cast(1uL << 24u)), - cpp_dec_float(static_cast(1uL << 25u)), - cpp_dec_float(static_cast(1uL << 26u)), - cpp_dec_float(static_cast(1uL << 27u)), - cpp_dec_float(static_cast(1uL << 28u)), - cpp_dec_float(static_cast(1uL << 29u)), - cpp_dec_float(static_cast(1uL << 30u)), - cpp_dec_float(static_cast(1uL << 31u)), - cpp_dec_float(static_cast(1uLL << 32u)), - cpp_dec_float(static_cast(1uLL << 33u)), - cpp_dec_float(static_cast(1uLL << 34u)), - cpp_dec_float(static_cast(1uLL << 35u)), - cpp_dec_float(static_cast(1uLL << 36u)), - cpp_dec_float(static_cast(1uLL << 37u)), - cpp_dec_float(static_cast(1uLL << 38u)), - cpp_dec_float(static_cast(1uLL << 39u)), - cpp_dec_float(static_cast(1uLL << 40u)), - cpp_dec_float(static_cast(1uLL << 41u)), - cpp_dec_float(static_cast(1uLL << 42u)), - cpp_dec_float(static_cast(1uLL << 43u)), - cpp_dec_float(static_cast(1uLL << 44u)), - cpp_dec_float(static_cast(1uLL << 45u)), - cpp_dec_float(static_cast(1uLL << 46u)), - cpp_dec_float(static_cast(1uLL << 47u)), - cpp_dec_float(static_cast(1uLL << 48u)), - cpp_dec_float(static_cast(1uLL << 49u)), - cpp_dec_float(static_cast(1uLL << 50u)), - cpp_dec_float(static_cast(1uLL << 51u)), - cpp_dec_float(static_cast(1uLL << 52u)), - cpp_dec_float(static_cast(1uLL << 53u)), - cpp_dec_float(static_cast(1uLL << 54u)), - cpp_dec_float(static_cast(1uLL << 55u)), - cpp_dec_float(static_cast(1uLL << 56u)), - cpp_dec_float(static_cast(1uLL << 57u)), - cpp_dec_float(static_cast(1uLL << 58u)), - cpp_dec_float(static_cast(1uLL << 59u)), - cpp_dec_float(static_cast(1uLL << 60u)), - cpp_dec_float(static_cast(1uLL << 61u)), - cpp_dec_float(static_cast(1uLL << 62u)), - cpp_dec_float(static_cast(1uLL << 63u)), - cpp_dec_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - cpp_dec_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - cpp_dec_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), - cpp_dec_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - cpp_dec_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - cpp_dec_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), - cpp_dec_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_dec_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_dec_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_dec_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), - cpp_dec_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - cpp_dec_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - cpp_dec_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"), - cpp_dec_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - cpp_dec_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - cpp_dec_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"), - cpp_dec_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_dec_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_dec_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_dec_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"), - cpp_dec_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"), - cpp_dec_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"), - cpp_dec_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"), - cpp_dec_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"), - cpp_dec_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"), - cpp_dec_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"), - cpp_dec_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_dec_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_dec_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_dec_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"), - cpp_dec_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"), - cpp_dec_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"), - cpp_dec_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"), - cpp_dec_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"), - cpp_dec_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"), - cpp_dec_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"), - cpp_dec_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"), - cpp_dec_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"), - cpp_dec_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"), - cpp_dec_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_dec_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_dec_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_dec_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"), - cpp_dec_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"), - cpp_dec_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"), - cpp_dec_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"), - cpp_dec_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"), - cpp_dec_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"), - cpp_dec_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"), - cpp_dec_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_dec_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_dec_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_dec_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"), - cpp_dec_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"), - cpp_dec_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"), - cpp_dec_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"), - cpp_dec_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"), - cpp_dec_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"), - cpp_dec_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"), - cpp_dec_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"), - cpp_dec_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"), - cpp_dec_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"), - cpp_dec_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"), - cpp_dec_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") + cpp_dec_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), + cpp_dec_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), + cpp_dec_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"), + cpp_dec_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"), + cpp_dec_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"), + cpp_dec_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"), + cpp_dec_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"), + cpp_dec_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"), + cpp_dec_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"), + cpp_dec_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"), + cpp_dec_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"), + cpp_dec_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"), + cpp_dec_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"), + cpp_dec_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"), + cpp_dec_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"), + cpp_dec_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"), + cpp_dec_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"), + cpp_dec_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"), + cpp_dec_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"), + cpp_dec_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"), + cpp_dec_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"), + cpp_dec_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"), + cpp_dec_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"), + cpp_dec_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"), + cpp_dec_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"), + cpp_dec_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"), + cpp_dec_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"), + cpp_dec_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"), + cpp_dec_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"), + cpp_dec_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"), + cpp_dec_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"), + cpp_dec_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"), + cpp_dec_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"), + cpp_dec_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"), + cpp_dec_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"), + cpp_dec_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"), + cpp_dec_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"), + cpp_dec_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"), + cpp_dec_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"), + cpp_dec_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"), + cpp_dec_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"), + cpp_dec_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"), + cpp_dec_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"), + cpp_dec_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"), + cpp_dec_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"), + cpp_dec_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"), + cpp_dec_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"), + cpp_dec_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"), + cpp_dec_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"), + cpp_dec_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"), + cpp_dec_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"), + cpp_dec_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"), + cpp_dec_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"), + cpp_dec_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"), + cpp_dec_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"), + cpp_dec_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"), + cpp_dec_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"), + cpp_dec_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"), + cpp_dec_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"), + cpp_dec_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"), + cpp_dec_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"), + cpp_dec_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"), + cpp_dec_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"), + cpp_dec_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"), + cpp_dec_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"), + cpp_dec_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"), + cpp_dec_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"), + cpp_dec_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"), + cpp_dec_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"), + cpp_dec_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"), + cpp_dec_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"), + cpp_dec_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_dec_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_dec_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"), + cpp_dec_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_dec_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_dec_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_dec_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"), + cpp_dec_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_dec_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_dec_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"), + cpp_dec_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_dec_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_dec_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"), + cpp_dec_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_dec_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_dec_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_dec_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"), + cpp_dec_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_dec_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_dec_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"), + cpp_dec_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_dec_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_dec_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"), + cpp_dec_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_dec_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_dec_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_dec_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"), + cpp_dec_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_dec_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_dec_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"), + cpp_dec_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_dec_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_dec_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"), + cpp_dec_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_dec_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_dec_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_dec_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"), + cpp_dec_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_dec_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_dec_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"), + cpp_dec_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + cpp_dec_float("0.125"), + cpp_dec_float("0.25"), + cpp_dec_float("0.5"), + one(), + two(), + cpp_dec_float(static_cast(4)), + cpp_dec_float(static_cast(8)), + cpp_dec_float(static_cast(16)), + cpp_dec_float(static_cast(32)), + cpp_dec_float(static_cast(64)), + cpp_dec_float(static_cast(128)), + cpp_dec_float(static_cast(256)), + cpp_dec_float(static_cast(512)), + cpp_dec_float(static_cast(1024)), + cpp_dec_float(static_cast(2048)), + cpp_dec_float(static_cast(4096)), + cpp_dec_float(static_cast(8192)), + cpp_dec_float(static_cast(16384)), + cpp_dec_float(static_cast(32768)), + cpp_dec_float(static_cast(65536)), + cpp_dec_float(static_cast(131072)), + cpp_dec_float(static_cast(262144)), + cpp_dec_float(static_cast(524288)), + cpp_dec_float(static_cast(1uL << 20u)), + cpp_dec_float(static_cast(1uL << 21u)), + cpp_dec_float(static_cast(1uL << 22u)), + cpp_dec_float(static_cast(1uL << 23u)), + cpp_dec_float(static_cast(1uL << 24u)), + cpp_dec_float(static_cast(1uL << 25u)), + cpp_dec_float(static_cast(1uL << 26u)), + cpp_dec_float(static_cast(1uL << 27u)), + cpp_dec_float(static_cast(1uL << 28u)), + cpp_dec_float(static_cast(1uL << 29u)), + cpp_dec_float(static_cast(1uL << 30u)), + cpp_dec_float(static_cast(1uL << 31u)), + cpp_dec_float(static_cast(1uLL << 32u)), + cpp_dec_float(static_cast(1uLL << 33u)), + cpp_dec_float(static_cast(1uLL << 34u)), + cpp_dec_float(static_cast(1uLL << 35u)), + cpp_dec_float(static_cast(1uLL << 36u)), + cpp_dec_float(static_cast(1uLL << 37u)), + cpp_dec_float(static_cast(1uLL << 38u)), + cpp_dec_float(static_cast(1uLL << 39u)), + cpp_dec_float(static_cast(1uLL << 40u)), + cpp_dec_float(static_cast(1uLL << 41u)), + cpp_dec_float(static_cast(1uLL << 42u)), + cpp_dec_float(static_cast(1uLL << 43u)), + cpp_dec_float(static_cast(1uLL << 44u)), + cpp_dec_float(static_cast(1uLL << 45u)), + cpp_dec_float(static_cast(1uLL << 46u)), + cpp_dec_float(static_cast(1uLL << 47u)), + cpp_dec_float(static_cast(1uLL << 48u)), + cpp_dec_float(static_cast(1uLL << 49u)), + cpp_dec_float(static_cast(1uLL << 50u)), + cpp_dec_float(static_cast(1uLL << 51u)), + cpp_dec_float(static_cast(1uLL << 52u)), + cpp_dec_float(static_cast(1uLL << 53u)), + cpp_dec_float(static_cast(1uLL << 54u)), + cpp_dec_float(static_cast(1uLL << 55u)), + cpp_dec_float(static_cast(1uLL << 56u)), + cpp_dec_float(static_cast(1uLL << 57u)), + cpp_dec_float(static_cast(1uLL << 58u)), + cpp_dec_float(static_cast(1uLL << 59u)), + cpp_dec_float(static_cast(1uLL << 60u)), + cpp_dec_float(static_cast(1uLL << 61u)), + cpp_dec_float(static_cast(1uLL << 62u)), + cpp_dec_float(static_cast(1uLL << 63u)), + cpp_dec_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_dec_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_dec_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"), + cpp_dec_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_dec_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_dec_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"), + cpp_dec_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_dec_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_dec_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_dec_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"), + cpp_dec_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_dec_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_dec_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"), + cpp_dec_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_dec_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_dec_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"), + cpp_dec_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_dec_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_dec_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_dec_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"), + cpp_dec_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_dec_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_dec_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"), + cpp_dec_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_dec_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_dec_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"), + cpp_dec_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_dec_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_dec_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_dec_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"), + cpp_dec_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_dec_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_dec_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"), + cpp_dec_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_dec_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_dec_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"), + cpp_dec_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_dec_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_dec_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"), + cpp_dec_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_dec_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_dec_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_dec_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"), + cpp_dec_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_dec_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_dec_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"), + cpp_dec_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_dec_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_dec_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"), + cpp_dec_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_dec_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_dec_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_dec_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"), + cpp_dec_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_dec_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_dec_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"), + cpp_dec_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_dec_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_dec_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"), + cpp_dec_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"), + cpp_dec_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"), + cpp_dec_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"), + cpp_dec_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"), + cpp_dec_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") }}; if((p > static_cast(-128)) && (p < static_cast(+128))) @@ -2860,7 +2867,7 @@ namespace std static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. static const boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp10; // Type differs from int. - static const int radix = boost::multiprecision::cpp_dec_float::mp_radix; + static const int radix = boost::multiprecision::cpp_dec_float::cpp_dec_float_radix; static const std::float_round_style round_style = std::round_to_nearest; static const bool has_infinity = true; static const bool has_quiet_NaN = true; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 8a064ad9..006df7b0 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -322,6 +322,13 @@ run test_exp.cpp TEST_CPP_DEC_FLOAT : test_exp_cpp_dec_float ; +run test_sqrt.cpp + : # command line + : # input files + : # requirements + TEST_CPP_DEC_FLOAT + : test_sqrt_cpp_dec_float ; + run test_log.cpp : # command line : # input files diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index e9d09955..0b59d0b9 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -81,6 +81,7 @@ int test_main(int, char* []) expected_results(); // // Test at: + // 9 decimal digits: tests the least wide arbitrary precision code // 18 decimal digits: tests 80-bit long double approximations // 30 decimal digits: tests 128-bit long double approximations // 35 decimal digits: tests arbitrary precision code @@ -97,6 +98,7 @@ int test_main(int, char* []) test_bessel(mp_number >(), "mp_number >"); #endif #ifdef TEST_CPP_DEC_FLOAT + test_bessel(mp_number >(), "mp_number >"); test_bessel(mp_number >(), "mp_number >"); test_bessel(mp_number >(), "mp_number >"); test_bessel(mp_number >(), "mp_number >"); diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index e9db0af5..bc3d773a 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -77,6 +77,7 @@ int test_main(int, char* []) expected_results(); // // Test at: + // 9 decimal digits: tests the least wide arbitrary precision code // 18 decimal digits: tests 80-bit long double approximations // 30 decimal digits: tests 128-bit long double approximations // 35 decimal digits: tests arbitrary precision code @@ -92,6 +93,7 @@ int test_main(int, char* []) test_zeta(mp_number >(), "mp_number >"); #endif #ifdef TEST_CPP_DEC_FLOAT + test_zeta(mp_number >(), "mp_number >"); test_zeta(mp_number >(), "mp_number >"); test_zeta(mp_number >(), "mp_number >"); test_zeta(mp_number >(), "mp_number >"); diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 64178d58..7adb1afa 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -107,6 +107,9 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_atan.cpp b/test/test_atan.cpp index d1ee181c..2061afa9 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -253,6 +253,9 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 7bd32666..6644b750 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -189,6 +189,9 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_log.cpp b/test/test_log.cpp index fcd628f6..084c50c2 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -217,6 +217,9 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_pow.cpp b/test/test_pow.cpp index e98be847..315ad995 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -592,6 +592,9 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 708fe5e8..06f035d1 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -301,6 +301,9 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 8ba7078b..7f6c6320 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -225,6 +225,9 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index df50cf9f..3f01cbbd 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -50,109 +50,109 @@ void test() static const boost::array data = {{ "0", - "1.7724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021", - "2.506628274631000502415765284811045253006986740609938316629923576342293654607841974946595838378057266116009972665203879644866323618126736180957855655966147931913435480458123731137327804313019938802647150234465504898425802329413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739697252377702538748247848633488642597506589513095738763427251926880402", - "3.0699801238394654654386548746677945821221293132529234536092078633942877416889511494096190816646754176075937074244926190270345429405099416216417975877667492169521054332143197658279274969526803993603118331066475990710709664118358901594985707262626428113026982211562266383695623138538180531502756293265592878111781185072888638355377253555018107077854544789544383440520575813285321747411416665951698336554", - "3.5449077018110320545963349666822903655950989122447742564276155797058225691820643627499013134770893308324536472485651413324723057314488452050501874192055741369240753973062102456998503460579016524578641907585359256003492780307029594410334003803704680371708939489898252806278435510518124328108386650018127968152274669549503068673359795787317036728175909023303234775201181347868635826656197096924963698041", - "3.9633272976060110133450287651201830315223597563961947927072580621967387180265716572287741878596340312327405647932953536228865576823564748759947646553751734998345995939694212511640273087471173966245241872854466233365203399138209787201764302154653389399844478265349330231414848625437655715466042970013389483751348124861944502103329498799507208968519689075130370544887031405163197191213743249921794351351", - "4.3416075273496059561780877637447746072326533687072755618572739666222092317177743715006976894086930825786781544103546196765147228208117261527925650444366222660658062788515204204290333579229705891625284205192508929083683171545403426350581368076912529151526695869265253040752801155830676216390514320781159868843187117008896251829228661529973809619044473853320316190549204385101682005396209108634347068051", - "4.6894720998347514072224884956178300284641581320824106981633983758453256799744598320502835518976559264849872655758786968460389643339445673551269229241587961003379434250163073293499620997874074698516457801989721178630024470871191608919926005831108426583129390228179129584616970283973090935125037470398636450816554023533350528106738423929159432353981681442386558251657700009494385592281294126884159744657", - "5.0132565492620010048315305696220905060139734812198766332598471526845873092156839498931916767561145322320199453304077592897326472362534723619157113119322958638268709609162474622746556086260398776052943004689310097968516046588277255593373672260673516476883623121569801912000827503005505833029224516877237298413981218533281823760314793945047554050774964956972669772851950131790261914775268545038537608041", - "5.3173615527165480818945024500234355483926483683671613846414233695587338537730965441248519702156339962486804708728477119987084585971732678075752811288083612053861130959593153685497755190868524786867962861378038884005239170460544391615501005705557020557563409234847379209417653265777186492162579975027191952228412004324254603010039693680975555092263863534954852162801772021802953739984295645387445547062", - "5.6049912163979286993112824338688008938543237752107832649583533936522833776518879743363843375245853739417146705744562990455542075539831517566644946677745451618612727648966621311978378350382925082779759505143787044093893128068035895930171543641983336476166511254286056162309665822553855728700099730566135263229310482770603702313599779589939672325828370865928422053430400072831171741334547285379289682272", - "5.8785643816741282350544208778970709719984349210386743751731421071573245581781685524668778017649261234929950374883647452602146761146149358621791392549585140581629668270696079138391334037573962811189827061481326675520008356479940776678802748553233235202402722469819906081593819717286567095640228930465862438974894553668787148856578760128886389981154414656617912505436134549129966633314429654846358015259", - "6.1399602476789309308773097493355891642442586265058469072184157267885754833779022988192381633293508352151874148489852380540690858810198832432835951755334984339042108664286395316558549939053607987206236662132951981421419328236717803189971414525252856226053964423124532767391246277076361063005512586531185756223562370145777276710754507110036214155709089579088766881041151626570643494822833331903396673108", - "6.3906732428334428261259345606683697744186991536295350856572952536792334275205803679271798801956028881370696845677932311660934936022581339690170211061979607805733455201951479794666965209869986063436354009130926493418080814534089804341799659379279227089093453978416225274321462755382516029668891204905799575745973313377842838152883214737404214320108342272339141901742347633007754961396966894396055218335", - "6.6319150439565422209346322551709504425716735849288353552017602534239577421171265746820083094212110964436394134010761548512808504941585541646833262349861354253649509838599508444233906260858397863860491814334791305676062694775880372125594128993954478298062410594772628739424601593453063666245276274089103412069272086098919187261711687627099337914569206834456380008016156884529727902326858088262113926506", - "6.8646842464782674501407002511771796402482345158456677029870019960868679981055033418327138403618402473871307535713830436350072970119200914833099051433782215491766416984101933198510637348024255711982258019646531673420782186308197017640254188794990907965118086055013577841433086632978528558423768612444566483278359963402485448887021894326224663275495307768561423891711354763179723690983043995316901267288", - "7.0898154036220641091926699333645807311901978244895485128552311594116451383641287254998026269541786616649072944971302826649446114628976904101003748384111482738481507946124204913997006921158033049157283815170718512006985560614059188820668007607409360743417878979796505612556871021036248656216773300036255936304549339099006137346719591574634073456351818046606469550402362695737271653312394193849927396082", - "7.3080144438162192957641041416982527245725757227305100451197343989892588739821761414808182301620094920283430190134112374199876901202971502696155007476535432232511740870601931279580970011543206100142223236655886609010356942017275197137478321035055972286226075962614582069104333896744606536872975969818688237536119023271082556121464860312141980207823280639488597150891408230800059272527978401067077953752", - "7.5198848238930015072472958544331357590209602218298149498897707290268809638235259248397875151341717983480299179956116389345989708543802085428735669678984437957403064413743711934119834129390598164079414507033965146952774069882415883390060508391010274715325434682354702868001241254508258749543836775315855947620971827799922735640472190917571331076162447435459004659277925197685392872162902817557806412061", - "7.7259472181866523240047447857321216411382058048896371981452984461525717139136608383759839184128073783247516939318227254188667186252920148976230121738172757350696910761931890703374371352358496474852223543486038624030825959222662530865956553207195355499692117829480399491662056117052329890340838528765941430191040119361471649248115254864172681901246179411702783591299133670884083665071028145395467905989", - "7.9266545952120220266900575302403660630447195127923895854145161243934774360531433144575483757192680624654811295865907072457731153647129497519895293107503469996691991879388425023280546174942347932490483745708932466730406798276419574403528604309306778799688956530698660462829697250875311430932085940026778967502696249723889004206658997599014417937039378150260741089774062810326394382427486499843588702701", - "8.1224039375904999377505608579034490537406469390188453967144182984533857877290325940614418824321939803516927684051300838316226942055451781105993601208197552034439458355062514914010489070985895267530389722733907460105781807411858969857115513607918067972038272323523153845863300953401051857105777813389049407583848705460609239380620914585791645607237224057116980335542916058764975650602331697086068450513", - "8.3135454758469596794056637871226727528862453946735918624095026138842010906353046929837281458679232254339472365667835656180555764317605853990925880640952695214325626531682928857436719230013491132666257954067248287299135662202926101799336433744666850543864886828346127739925910374766049639016834422078705626669128492094502607019895812459974265416556762885336564093974655530945349099945854007412027682568", - "8.5003900517896968140560669406685714433987187446432157683182522591265374787311356353957620692173960349646676819100596310150960821656523158016643597684118372232800409169139557083780710669356964332570202113507421938631568719639718297731072485795933970567341061565566173805049809290766392136448216369341299035269967401098236132846311584581915310373661351551853853444420939639104451552704753437006616697649", - "8.6832150546992119123561755274895492144653067374145511237145479332444184634355487430013953788173861651573563088207092393530294456416234523055851300888732445321316125577030408408580667158459411783250568410385017858167366343090806852701162736153825058303053391738530506081505602311661352432781028641562319737686374234017792503658457323059947619238088947706640632381098408770203364010792418217268694136103", - "8.8622692545275801364908374167057259139877472806119356410690389492645564229551609068747532836927233270811341181214128533311807643286221130126254685480139353423101884932655256142496258651447541311446604768963398140008731950767573986025835009509261700929272348724745632015696088776295310820270966625045319920380686673873757671683399489468292591820439772558258086938002953369671589566640492742312409245103", - "9.0377767727099026972694942617286283519638707297067360423044656369897256312879279757777821069900749950044557425089876204493377875035177412255299561756483293212989442985024715332632332359674718551451382911466759962124284189582809463459910475239066062631635959736116080550697706078586467289296679727180578661286024444872547183386534308509666500269688916003034333222621461052151120014437539157953639737316", - "9.2099403715183963963159646240033837463663879397587703608276235901828632250668534482288572449940262528227811222734778570811036288215298248649253927633002476508563162996429592974837824908580411980809354993199427972132128992355076704784957121787879284339080946634686799151086869415614541594508268879796778634335343555218665915066131760665054321233563634368633150321561727439855965242234249997855095009663", - "9.3789441996695028144449769912356600569283162641648213963267967516906513599489196641005671037953118529699745311517573936920779286678891347102538458483175922006758868500326146586999241995748149397032915603979442357260048941742383217839852011662216853166258780456358259169233940567946181870250074940797272901633108047066701056213476847858318864707963362884773116503315400018988771184562588253768319489314", - "9.5449561001664121805331805088802752995271020253115319957577421074579216968677586712228633689301398077088311039352276247681835887608812952471054772558240075235037900668496782095699528477874731344527911180393401955463971510372217637805322797423365420146482689917834696038570131901274302300283422182521267833006285359393142295438279095927378336768120882908112575029657358394527378572761652822503523073037", - "9.7081295627784962702001300843202309014239162997075295338190725567740867768360828377797213369985222605738422125153205809614310720383763405854578937000465002140881359434675879559012762493638090947752116234678266669492794549428222971705363614488937056614823310418806119084118208768665243016864006604622872546517235887590814184637647435563763625009597343962143998069332678679995949595625752510047376769469", - "9.8686053858325691182072112788747533886058057201411380476476456712628079750259677966540684132469441944845346447517503807626845356172247759078119619345186680215080975949071260888809391129195428784313017526586710196446975545314396408422675567403935100395356341294811788475428908479858626488242639666149638195038312462497821769798554375186844561183275752651214811690182399175358793738641461618652775991586", - "10.026513098524002009663061139244181012027946962439753266519694305369174618431367899786383353512229064464039890660815518579465294472506944723831422623864591727653741921832494924549311217252079755210588600937862019593703209317655451118674734452134703295376724624313960382400165500601101166605844903375447459682796243706656364752062958789009510810154992991394533954570390026358052382955053709007707521608", - "10.181972184624311615821119525392646566614334777981507304797991128872845411935855045687447106020270650309180533858862699802452616670765042577313665825807440090307057847512919113426271458183092072699581551465382478938467355504032255882264015569014213825098166114446059843169833192986444108942840506996523623715072210566481161204920674164962676130998460012958025127031857745585310129294054842583903606686", - "10.335093140463368369194743647270744470970869361548018260412395037033434954444302167923137950092164921880086359392676052875666101107812632184449266829146247839347650312553659121907050973521042894776187579282867330188754139851333707822660813843642659379040498993205802303976963038480061139480627996652519324110663045988145350403266422896739974552818525729859458145898707780132492595810710069483709616997", - "10.485978393819184450541593598855581216998391038666955618731153780797160148941518448029432453424375096293506458743106555413233965573260145046667734677176640468352558693946707494977637683951611790027770744751949296502577300781357035084119423389099318378785160701550868259776821786756050171108775480133925239818616956336860985197400338717780301525607287576543821416712628079932173339130152141281524936833", - "10.634723105433096163789004900046871096785296736734322769282846739117467707546193088249703940431267992497360941745695423997416917194346535615150562257616722410772226191918630737099551038173704957373592572275607776801047834092108878323100201141111404111512681846969475841883530653155437298432515995005438390445682400864850920602007938736195111018452772706990970432560354404360590747996859129077489109412", - "10.781415870970860097347086002569754013483313106913200202187513520048043712278512261111348167752270787807827044005214735609272769552792030217118319247865527486947266834539351039872232355517952920779295855320877662434434089302868383880854490418955953060861828833022956166078549446407677882309027526266764943581836604667447009735143063508187804312221807902016203318428080812848859262617506901631056404484", - "10.926139338138249418394948518774535514239264300129320003780439933689850327924622206216861373106327795446382986541097387057719208036647206296404050944003327874361582341281080807890889880787061319999797409840564399938369028699154596465019693581401702995072256439155901828510666479433850274478604710483110368760249425996181639834293503287006547476391343675449556976797862780800361545757368573258815323922", - "11.06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602611864735807868417839407991190718628442039357569977371968270131812518244771818655226966561256042843867368054126790999954427565212628829680859010057375985048181200629605336234528792323216018627284394365650824130654190684379749960413601595348763566769123659605593998962030711530297996631109", - "11.209982432795857398622564867737601787708647550421566529916706787304566755303775948672768675049170747883429341148912598091108415107966303513328989335549090323722545529793324262395675670076585016555951901028757408818778625613607179186034308728396667295233302250857211232461933164510771145740019946113227052645862096554120740462719955917987934465165674173185684410686080014566234348266909457075857936454", - "11.349242212464298392610285658298501528539506746683292704338035654856239080485360828460205074304281603179304760097806255228463147327169830108042093067800293527086021375553337641095043483168312926670841786279105684958531871509131651122477280457930695269239120342802270691155290589721502201125592305692096859835744595168676715800717585850328384113754784770216906888175704141625668202687511966586138689496", - "11.486813807613115307809355167215211082379289672043820620858981542835886683139127150291615174043283349892373335303488265357426140211488562306351746628698313560931134742861605848764176458004039113239912373535418892499572608431667264556464452240410101014511349682690566153385156486931102628456780783577079308426737658296507891772476075136809898570922049321898908119541008410725370277134653232606047953378", - "11.622757164475265300727734810950869136366250850775675675103670116706112045368165235882961201344951218672069233183763229866495319155659488490374792371109115979803795182321120105254011624290383337645277922708894963432033544765028110116592451203025661365050867782024140543770476276220678204795976767514166142764541148954132005264256215811527038353628432725649155000008199699094629246514703895814051248301", - "11.757128763348256470108841755794141943996869842077348750346284214314649116356337104933755603529852246985990074976729490520429352229229871724358278509917028116325933654139215827678266807514792562237965412296265335104001671295988155335760549710646647040480544493963981216318763943457313419128045786093172487794978910733757429771315752025777277996230882931323582501087226909825993326662885930969271603052", - "11.889981892818033040035086295360549094567079269188584378121774186590216154079714971686322563578902093698221694379886060868659673047069424627984293966125520499503798781908263753492081926241352189873572561856339870009561019741462936160529290646396016819953343479604799069424454587631296714639812891004016845125404437458583350630998849639852162690555906722539111163466109421548959157364122974976538305405", - "12.021366896702325047512148370523129868500863831336365554094968238961326486689613290630609864218702661853221321521170144826739118836804766785357157269477553635675326417440397275525273224383182704417613920902492439425058136861846204626155795604149515361113916782624367244364805538377594330304168849066367137313615505351036054026784342300533235365305626284568959522499820909662710078078441813899168007885", - "12.151331396958947321546025714556865120149751887789792242805026251328834724212197338975462680992513495564542856143237780070708286761588671182939823052704607214915211775783314118543447776586990218385020548327676785144266827587041679291236998809169833652034346885774675107188363717375427120958548330331469713644263714560973379556087401639283796742412962466979669807549620252885888038363577488350118588327", - "12.279920495357861861754619498671178328488517253011693814436831453577150966755804597638476326658701670430374829697970476108138171762039766486567190351066996867808421732857279063311709987810721597441247332426590396284283865647343560637994282905050571245210792884624906553478249255415272212601102517306237151244712474029155455342150901422007242831141817915817753376208230325314128698964566666380679334622", - "12.407176956338612191087172383388016279582846192856709897496654528970378992137225269624654597169812657913587765369977994663653070060070958217675655967219509479234263890571735859949476211202655783602524667654875739601222473107460358043616901331296638130098128821464388482197452428681343514837935327506344788853296134342326074035675928525560962854861568158156132171320413471754022539329668983923737294314", - "12.53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332601939822433161809063368090478927827983073965956717740229061865568663902156509969401323575117232752449212901164706931389834341806516837911922090578039245047800020687575137645825730612921930932460349530463332045594007869848626188851269374123924316744321298753294756547869381713625963440201", - "12.657852319136902268774845164792088421135161808965517945523128473136824363883193009269209734457043707990147945768735771850922659087939277511584226597559704972434156306141869703126860783026363074957510823322218307776858151286948305635221192680870601025159853336795122235254709338570514335130167369800379884747089903762281584689350599843615480943120877060478385159492967618565239777860563171974700594693", - "12.781346485666885652251869121336739548837398307259070171314590507358466855041160735854359760391205776274139369135586462332186987204516267938034042212395921561146691040390295958933393041973997212687270801826185298683616162906817960868359931875855845417818690795683245054864292551076503205933778240981159915149194662675568567630576642947480842864021668454467828380348469526601550992279393378879211043667", - "12.903658808270584524837154363200375169745690840774169241078436884878608872508906572537587380452008766699694274634572683484063997575550636271724653470644222116629862120750427362283465850548658876022606030340287534831876059275988640705535030144354363210242251009786303368432070884750488539702567688880560860857563258835290820838217726051097677070824752411130297718422198873037383148768947802251879541624", - "13.024822582048817868534263291234323821697960106121826685571821899866627695153323114502093068226079247736034463231063859029544168462435178458377695133309866798197418836554561261287100073768911767487585261557752678725104951463621027905174410423073758745458008760779575912225840346749202864917154296234347960652956135102668875548768598458992142885713342155996094857164761315530504601618862732590304120415", - "13.144869567532369703435413653931342518067740699025339623141355353215828472920177249101100071067765021905490369373865624919713235361781704313989935557374066820403290956743429603874630415006274130921897795214176147246606564445416505741569346364219413607323060794720326291947944072987907139328701736835753824779102737278004452916595869434574114960991640537914399673850290672639531054905749913587677194565", - "13.263830087913084441869264510341900885143347169857670710403520506847915484234253149364016618842422192887278826802152309702561700988317108329366652469972270850729901967719901688846781252171679572772098362866958261135212538955176074425118825798790895659612482118954525747884920318690612733249055254817820682413854417219783837452342337525419867582913841366891276001603231376905945580465371617652422785301", - "13.381733118494712177838769415668363136693460917853586922473464683953085883088277884543132016555752708286716738574100724123397234966834133579930312055894987491473163259667229253648684025236934307557806266139484672929088612080633523093147067612558483695818827536275063195935514841373590920865965312578548954529988065057157198978981673627647254889933136041368681534023007231776113961710869320159667705337", - "13.49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174297398771305025250783532430038321980650780572061258675589431807213585169525934929261000167914426347007424971894853755903478955153674190248106782011276139620636507795882584271293035478532473175580070278864979183505217356484769621601133034831695071383225633005792357284236385529593207735858", - "13.614476360176244437992652165124010849348942994806267539289974901165636798182245517885383466885359131822710017177747823047886229391043506105903448210261769449935362361092960808325221972886007181477749623755496282578986043666471300738088582325762070505557101653785908332333215528357372693553823245805882631589902970439410267849152146509417834583229229656869363779274739391530153058374399344402589683807", - "13.729368492956534900281400502354359280496469031691335405974003992173735996211006683665427680723680494774261507142766087270014594023840182966619810286756443098353283396820386639702127469604851142396451603929306334684156437261639403528050837758998181593023617211002715568286617326595705711684753722488913296655671992680497089777404378865244932655099061553712284778342270952635944738196608799063380253458", - "13.843307114594308080228438262394272564345963431637029583240249081158469052183791491684039537760243230438634632151602246770081706304258619208947181121555949109643060376549010534247946473402803168501401798859700886609956343474750915165635990740345802222770885528894449519285586683416492340458031775111481023344097481374008848545235590455121882858118351182839281932280042314361125165296526825458755105679", - "13.956315578352589716302829873401945109198453712022825800945047218826731843806713506320236853413543088508394629854930633075647798955617836866562243675418009347632488093795950654785453808337001941625657577694831670791784231090389461985759139354822791165710146844931160825962396468466501611937704664704804958138610109693667041306322225916233920219127362826337256387581504195730954720065862316612737195428", - "14.068416299504254221667465486853490085392474396247232094490195127535977039923379496150850655692967779454961796727636090538116893001833702065380768772476388301013830275048921988049886299362222409554937340596916353589007341261357482675977801749332527974938817068453738875385091085191927280537511241119590935244966207060005158432021527178747829706194504432715967475497310002848315677684388238065247923397", - "14.179630807244128218385339866729161462380395648979097025710462318823290276728257450999605253908357323329814588994260565329889222925795380820200749676822296547696301589224840982799401384231606609831456763034143702401397112122811837764133601521481872148683575795959301122511374204207249731243354660007251187260909867819801227469343918314926814691270363609321293910080472539147454330662478838769985479216", - "14.289979792964598888046537025443929046349268690964636578475665109896668898160471038052184926128242082008071899344418492114005094607229573377783255206983187149713770987548494300509284453832960172186602825751752512740011206822965310731878663221408732182835419428674418921388428247682017853292902641094633654925031641157363239954497643638130492825559275734408219193654081845577502824457995610506588347991", - "14.399483155201312771128205693735119100150409368172849193283383259397943499400343097146699820101799211280532901097982868866065091616972220786072353233159181246251291666898296600872888597521470039336674892211278156066944280526085074727923215099315369244314973758177163795161905224659231453738958954759692535888585135313785224088858851114397375930143280080631232806768837383757811100735506790734241356142", - "14.508160041525463782196810772461415937984681525001596663279698630294663935908428439756213479497787337122567348801168744730052437263877739149127104404701300967284676515346229296805236190281514801622180654355551641687098356104648569744546852559008969056173614451568235018709148732753388030273661774352691760355549492167313040490929262056910773064824444033384277728019069474988708219182391801225541693935", - "14.61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802682247483997538024059430053923100149530708644650234817412038625591619400230864122002844464733117732180207138840345503942749566420701119445724521519252291641382086677934892130737459519396373764750722380465421651122429297206242839604156465612789771943017828164616001185450559568021341559075", - "14.723107453852795047660891850891348521019392896043801015617971628447783989965629640672866077356179147930039264054884436242337612281568551505460575065987584693479589826744627929483999892320528426925051155319040406737336570522942634239674703047310686338476335923532963117635039796288802156148141351666029297701497040980317238592980791463337224993212730297458845130688595199892451695017449401650874288673", - "14.829412859290334246310862079120981116215413675054277728460153169122428030531791551314608952543420254520474051699795429624440231166188714141339453291154149160307170860994018007001626101791576255751027842245708752403881346737835127200458159845732446774737303087761617897753731524877979274694284246989924515961238107617606034599749358785428854546203389668405763983263427124792153857226338962692134292775", - "14.934961613773077251874220527850221390835466676976882941215420887391409941569982643090524050005551945256610875794604586439205076677328137831885915476923937188476319884303388028434778637885660437004576928003169458451279164932299027997584048683596586922839913541602495362116464353240069317035849303355081215425573060479512202737316638230608336142262048918028633468554185638406802946342865126132844574834", - "15.039769647786003014494591708866271518041920443659629899779541458053761927647051849679575030268343596696059835991223277869197941708760417085747133935796887591480612882748742386823966825878119632815882901406793029390554813976483176678012101678202054943065086936470940573600248250901651749908767355063171189524194365559984547128094438183514266215232489487091800931855585039537078574432580563511561282412", - "15.143852340539209919669694152668075754802130564520529114229055107020254596987080606065177179266558949005546167801108989466486322639120015544612100116126475848822295714630667404278002543054087765126012369520774988292980482378607240819831183403574109472290470399416907492752726605411715253325510753261994252828188462682810154109677323956353529409565238339361711344464981722604499214446881247473198801415", - "15.247224546311525337004063635408328366688778670871498563977766898883017695500718397562791377885264468934146929755054408018559707733171577715334636002100724249512539221477485126428071589422606639367264374525385748313792960737408667516619228196176535880477098918773859144321945753279661701266364778960943177407574056743200803896101394393730713481442086031230604416350429704383528396355475201590099114842", - "15.349900619197327327193274373338972910610646566264617268046039316971438708444755747048095408323377088037968537122463095135172714702549708108208987938833746084760527166071598829139637484763401996801559165533237995355354832059179450797492853631313214056513491105781133191847811569269090265751378146632796439055890592536444319177688626777509053538927272394772191720260287906642660873705708332975849168277", - "15.451894436373304648009489571464243282276411609779274396290596892305143427827321676751967836825614756649503387863645450837733437250584029795246024347634551470139382152386378140674874270471699294970444708697207724806165191844532506173191310641439071099938423565896079898332411223410465978068167705753188286038208023872294329849623050972834536380249235882340556718259826734176816733014205629079093581198", - "15.553219419991929097391447827110150978276147342755611087132612856263542587794892243906527633373900129242231785993922632274254453378155136866947691413591367716787056987199223748707467009025071039158554274945537967635091771197351723187066327453183887178046363960719814297174200677165073465692725493619076089149843317017809607596662107883796994364174947841232638766495324678472146142625602614264235678696", - "15.653888557799428533661532247337596699165609502143573736324609963676016536620219650233947025955941767418394468430088744792011863372700125171657152344359691884844467537973207254356056413344833677019845894722403336263492187594473529648820105313588218738589863121077164638145443372177511689907229285786639401142720480840361807890924894118341348723302140201727278896670612158646957973089749997574886849052", - "15.753914422567924620983011231186756248927500048298297966046797894473026288195693602724718689673345950533773458261077009361447048732755177208182393190558955000510862906901264875534878251422852119708834699869325135138115458649625715331447841946651213506247785763655954618727631238085210998597640478337632316374699558747521521322958958007061686783767533791960628390158818930229551073161600125867700021792", - "15.85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917318141449154623072942589950397905862150069399933839837587768500465610923498846958649809674914178649334608135965528391488070572086186135575993779130613973209256593945017506228618641718800535579350053924994477780084133179951980288358740787563005214821795481256206527887648549729996871774054", - "15.952084658149644245683507350070306645177945105101484153924270108676201561319289632374555910646901988746041412618543135996125375791519803422725843386425083616158339287877946105649326557260557436060388858413411665201571751138163317484650301711667106167269022770454213762825295979733155947648773992508157585668523601297276380903011908104292666527679159060486455648840531606540886121995288693616233664118", - "16.050252259524242304765819675794450638017457570575983927825323032144525082963948191096147193145311656453873849743947855717510860973988659112083956949050053482287530484973632648820968563125979705559716208799062595086459726936476696439381910220384322311324311842667158228425675297979222265812106596748979173989790155646435957100594433524698909367347330792212795303074381195611252785521380020853492164213", - "16.147823080773235880405791115635997557864326968336419500556329380232598367900898497414264871456444239647173004031647690209887509450260015358377350981847404025422287378732373648981765201137038640626625054151148020200007297959878815562787393121096595035600314225225829183114125474497018547223659528472930900422571056329570935652356761026639723378971526771480442539666833071774260326796995470405776697508", - "16.244807875180999875501121715806898107481293878037690793428836596906771575458065188122883764864387960703385536810260167663245388411090356221198720241639510406887891671012502982802097814197179053506077944546781492021156361482371793971423102721583613594407654464704630769172660190680210371421155562677809881516769741092121847876124182917158329121447444811423396067108583211752995130120466339417213690103", - "16.341217076923383960696369420161248669121212808135654273983491452937095658109553619994922766756319666975188172033084786774938321749356282450853819283481043653079525140374828081598688868309044496356854434283025399835051607515358702243412387084009896448573365043827048092425743953483386894323518311923913690941609208424884900176315736258863356896904842838787088633319141807219561302676306271570497938951", - "16.437060814169977953327247404361277316133609673377048855107248395882567096603010277067169202635116275806042691595212970108586780272931810640625169517986388546454661584514822804714353912243137592516024763283438958227839402433048048710441109095172462035564435115216917054500940736255985371596025417460999236751644500293733791545234403402763313780467186900924301219121627362814381042265364554244922063244", - "16.532348921502715844688082576333627653976665425427208876480987568125771090198651469125133728158959771903048097921398391233385160724013876315451069276292964513405939027110844786864417344898464954584607502706435338641340198705784007825954758491636479758251565454590803621730664169376188515867591916106130400067381048724859197544495864321744604824010272768413212368063633927635680949445491291877351894002", - "16.627090951693919358811327574245345505772490789347183724819005227768402181270609385967456291735846450867894473133567131236111152863521170798185176128190539042865125306336585771487343846002698226533251590813449657459827132440585220359867286748933370108772977365669225547985182074953209927803366884415741125333825698418900521403979162491994853083311352577067312818794931106189069819989170801482405536514", - "16.721296186883706959605742705233010783899326523984270864686085184270332637146646055028529386107385333643018392715062510774480808240365813021854787737722340862660933836784188253900670608552564136025173808090739064412712504259523027988063714336820233104689334204836546487559659633964043151984340548060532718923362128881432934135325567300871046043987974739750202594174747157312786841203825015000569906569", - "16.814973649193786097933847301606402681562971325632349794875060180956850132955663923009153012573756121825144011723368897136662622661949455269993484003323635485583818294689986393593513505114877524833927851543136113228167938420410768779051463092595000942849953376285816848692899746766156718610029919169840578968793144831181110694079933876981901697748511259778526616029120021849351522400364185613786904682", - "16.908132110811980070323724133825443669074486306220411933324368366059977522675356589320971338976776616316134235802112798127138113465084701628640560443298729802233609863856357626793535493930184649436981665533778324622620988007501131586355391858595913504065552289654660238871963950906549509361444433014511210945609775277269846879360970012281095853461600076871591771412527553822562541374853347368516919083", - "17.00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382011926203019216433130463160332871953682367444656008183382791141675614213387139286651404042270148438772631374392794365954621449715918679411346821231311323476100996185815327842728964327386825980705399348021964722656926231691638306207473227031037077068888418792782089031054095068740132333953", - "17.092925928109873230856890966518170609049635890295121605225309418908275818470576879572890960685410581830840991105430126130887790543881945170122581670877506416385845881122034595711744339948691879348516227414909772352427723381307136312192527194398703992339257139025461873121242339773525646882099071218455368070360012094043767404721710936020967834426862977103157516068354293085070758241766981055235066209", - "17.184577662469350439927855242766012175901435587217348622500720382402437284043691040754973131531272064166131201551424433897942349835349079351126685371244284352588634150544638769966985677717022600144009093735325965072805119643341927076098445506587163233137151789343227901578709257933753169161253949701854384420333694583107005741557086141652266134114205529376278344127778702038153204605578398292401917015", - "17.275743170440754085190445015394979038018668745865422068491523038650327582540706316060451728873454611950564439169497072829566902102398394981985975990083088007962977970505915486567012863555181572053681584109963952561485141768953808491468086742419682163408958624144213019203883451244657001188829080210013359418255598633772348738641653443346826322446562330527464133013054079541191939171126793437194110759", - "17.366430109398423824712351054979098428930613474829102247429095866488836926871097486002790757634772330314712617641418478706058891283246904611170260177746489064263225115406081681716133431691882356650113682077003571633473268618161370540232547230765011660610678347706101216301120462332270486556205728312463947537274846803558500731691464611989523847617789541328126476219681754040672802158483643453738827221", - "17.456645937814341319169222501542608627403113623558293524363238531385820187770170403648403252074964213113377845095534227202560251082915822197277767058606166170134732818652676480521208063952545598229201593834632528912430284433244772566961770292191780850052527418760053662080114781916361358783723872887199722599102508052518044253446686455582486241466233995573362181026486277618737441990128524043149017597", - "17.546397922417003516910356993677316771048907184269568216409465034396055582254893824626170868646400862812069808656427157514064265326887153266704989591763035523394048363206866117961294630191139571618530051641258534288980616305897039457680785291235730766909268092549430669200289626051927041560228580907033054444893426486648638316110177880766643917771237734940434420498182546126591670171343990763488162814", - "17.635693145022384705163262633691212915995304763116023125519426321471973674534505657400633405294778370478985112465094235780644028343844807586537417764875542174488900481208823741517400211272188843356948118444398002656002506943982233003640824565969970560720816740945971824478145915185970128692068679139758731692468366100636144656973628038665916994346324396985373751630840364738989989994328896453907404578", - "17.724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021", + "1.77245385090551602729816748334114518279754945612238712821380778985291128459103218137495065673854466541622682362428257066623615286572442260252509370960278706846203769865310512284992517302895082622893209537926796280017463901535147972051670019018523401858544697449491264031392177552590621640541933250090639840761373347747515343366798978936585183640879545116516173876005906739343179133280985484624818490205465485219561325156164746751504273876105610799612710721006037204448367236529661370809432349883166842421384570960912042042778577806869476657000521830568512541339663694465418151071669388332194292935706226886522442054214994804992075648639887483850593064021821402928581123306497894520362114907896228738940324597819851313487126651250629326004465638210967502681249693059542046156076195221739152507020779275809905433290066222306761446966124818874306997883520506146444385418530797357425717918563595974995995226384924220388910396640644729397284134504300214056423343303926175613417633632001703765416347632066927654181283576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136", + "2.50662827463100050241576528481104525300698674060993831662992357634229365460784197494659583837805726611600997266520387964486632361812673618095785565596614793191343548045812373113732780431301993880264715023446550489842580232941386277966868361303367582384418115607849009560004137515027529165146122584386186492069906092666409118801573969725237770253874824784863348864259750658951309573876342725192688040202857185924973630809978452538550099964101929825864558813716963467480152897452330473583474775619896089188931497718648548480469365216002979523919601823809165790411297975297712884880166754700558630196824142164233836361751921305615135984170982837036342343558097687424487526178010922324284883919536725153974582825630336511862808790203551930088145604026487771415650048376723275094136806424717481635184471307383168191953698843723340165605500555063029823385865249561125896634362311039438867484401970215424844692673432572876116452243380115662703163531763018031226825617668891776095502388960424467990521700581770868994182958846287294933254842394882655811767896697230383860684402997328870793925904767307522570843", + "3.06998012383946546543865487466779458212212931325292345360920786339428774168895114940961908166467541760759370742449261902703454294050994162164179758776674921695210543321431976582792749695268039936031183310664759907107096641183589015949857072626264281130269822115622663836956231385381805315027562932655928781117811850728886383553772535550181070778545447895443834405205758132853217474114166659516983365541988620856642054467498643554872029717170398214071471942791253118514487638811304670059307541182798357443181785843119089299569008318867284816553359946310778010700675312493633986577498099096587006610844378385188518085716548910095121883158502955712612589941408660542373794977570528185247073824741671612893506514342410201362222059007498227945177352958046758148141756202994673600560820713848287574799339070054752116909136251765469324207685490757710781971553227808407026035595494277776874273936176792674139758867775825077183338566625556426910971465911191049352588901212917090887839548860059100937478465817844825147395110789153650851340493729565322385491250242078198566481445683133486898404370694024388072677", + "3.54490770181103205459633496668229036559509891224477425642761557970582256918206436274990131347708933083245364724856514133247230573144884520505018741920557413692407539730621024569985034605790165245786419075853592560034927803070295944103340038037046803717089394898982528062784355105181243281083866500181279681522746695495030686733597957873170367281759090233032347752011813478686358266561970969249636980410930970439122650312329493503008547752211221599225421442012074408896734473059322741618864699766333684842769141921824084085557155613738953314001043661137025082679327388930836302143338776664388585871412453773044884108429989609984151297279774967701186128043642805857162246612995789040724229815792457477880649195639702626974253302501258652008931276421935005362499386119084092312152390443478305014041558551619810866580132444613522893932249637748613995767041012292888770837061594714851435837127191949991990452769848440777820793281289458794568269008600428112846686607852351226835267264003407530832695264133855308362567152498065380901697064026838487197946174238759896587746022252512331763776957195575192752273", + "3.96332729760601101334502876512018303152235975639619479270725806219673871802657165722877418785963403123274056479329535362288655768235647487599476465537517349983459959396942125116402730874711739662452418728544662333652033991382097872017643021546533893998444782653493302314148486254376557154660429700133894837513481248619445021033294987995072089685196890751303705448870314051631971912137432499217943513505107459328579034234471969034380444279483175756904340168935694146646969758408612915912693951504143726276325727089094957428376128777490747011483653095038326498799910297470352498638922548951534285262912166233490129232297588127154122989932582549543207430381783967345221251717788180706706197608063733887726205509696294918128904282730298886608490931339746624769514837195042182809390984886538469878790432756760740967852006981627342718373868089930899834470763073879097175124340898791818850834951894187606842759251386865815997713188572196024482151907891258713869124247005410786490332294268446455782911914942752568277824622418634516620092362780994044583559067632108995042187023154200764184950878131638370936876", + "4.34160752734960595617808776374477460723265336870727556185727396662220923171777437150069768940869308257867815441035461967651472282081172615279256504443662226606580627885152042042903335792297058916252842051925089290836831715454034263505813680769125291515266958692652530407528011558306762163905143207811598688431871170088962518292286615299738096190444738533203161905492043851016820053962091086343470680514156330656554108208679889001485483033545415301817702473378043508312559202170115728182897990337699623761986171416615021158179762123766012269021534563660979972864906653441725316241881374716900480598276640840394699718984639649897058274667150152948516142801074260038108590401332448730361188129358652703927446859710621067457990618378017703891730724396666299819790072397688972686459430503026856861736069218065420528347106866972580915029753621255304587561985717307629932540410639210302482882847873727015801634901755832519840544096758977294231047035556754992897011888753217953080197537610448726652746992121685068257440261763964980703424121083058605934982281210054435774069392790646709404966217005552197344493", + "4.68947209983475140722248849561783002846415813208241069816339837584532567997445983205028355189765592648498726557587869684603896433394456735512692292415879610033794342501630732934996209978740746985164578019897211786300244708711916089199260058311084265831293902281791295846169702839730909351250374703986364508165540235333505281067384239291594323539816814423865582516577000094943855922812941268841597446572000848645702560088494072507948045804364964153467630734509663721026050762887316466331441449595084971862668493255933265611225629677595775797966272446890047531313544059153687362017301654537115283160575298256857111770084802622759507512748413868494678293024737576577634559012937002405564693237564782661478500575417457048864770102766387138956802222948987452086048547098754786648793023622941962569186040944009281487954082049335826413270469685003200962898734900372045181956983558503256265211391593721293841419380653006415407706145131700572194167555007645631927616801157793244790467083152103173240943823769137606544644820547634530641496507929783339735192083140914072272339899107017006649210880028740845785609", + "5.01325654926200100483153056962209050601397348121987663325984715268458730921568394989319167675611453223201994533040775928973264723625347236191571131193229586382687096091624746227465560862603987760529430046893100979685160465882772555933736722606735164768836231215698019120008275030055058330292245168772372984139812185332818237603147939450475540507749649569726697728519501317902619147752685450385376080405714371849947261619956905077100199928203859651729117627433926934960305794904660947166949551239792178377862995437297096960938730432005959047839203647618331580822595950595425769760333509401117260393648284328467672723503842611230271968341965674072684687116195374848975052356021844648569767839073450307949165651260673023725617580407103860176291208052975542831300096753446550188273612849434963270368942614766336383907397687446680331211001110126059646771730499122251793268724622078877734968803940430849689385346865145752232904486760231325406327063526036062453651235337783552191004777920848935981043401163541737988365917692574589866509684789765311623535793394460767721368805994657741587851809534615045141685", + "5.31736155271654808189450245002343554839264836836716138464142336955873385377309654412485197021563399624868047087284771199870845859717326780757528112880836120538611309595931536854977551908685247868679628613780388840052391704605443916155010057055570205575634092348473792094176532657771864921625799750271919522284120043242546030100396936809755550922638635349548521628017720218029537399842956453874455470616396455658683975468494240254512821628316832398838132163018111613345101709588984112428297049649500527264153712882736126128335733420608429971001565491705537624018991083396254453215008164996582878807118680659567326162644984414976226945919662451551779192065464208785743369919493683561086344723688686216820973793459553940461379953751887978013396914632902508043749079178626138468228585665217457521062337827429716299870198666920284340898374456622920993650561518439333156255592392072277153755690787924987985679154772661166731189921934188191852403512900642169270029911778526840252900896005111296249042896200782962543850728747098071352545596040257730796919261358139844881619033378768497645665435793362789128409", + "5.60499121639792869931128243386880089385432377521078326495835339365228337765188797433638433752458537394171467057445629904555420755398315175666449466777454516186127276489666213119783783503829250827797595051437870440938931280680358959301715436419833364761665112542860561623096658225538557287000997305661352632293104827706037023135997795899396723258283708659284220534304000728311717413345472853792896822724499122866947121737000944102509490771269197783584170349935127887498647119562411695900883847124507613781432804229894058444676290534036738474342530360927632101836180145945813951643250885687876144098262191352431818136969137533863587873139725102593606754797723773610593636883665209271759639631465381618953021812982067002849796433240989364353192362974216155114226322430340671719312492223369487631048057665757861195096925695551107847621963544401115555199917577802008717751423237289036673475431186363543556380872803928482717387196307480474684969943012499128760245113496312609854517190311704797289830560651678579059756085781560282375298034806741180400732788584921019507521738918616603376508365622727087150932", + "5.87856438167412823505442087789707097199843492103867437517314210715732455817816855246687780176492612349299503748836474526021467611461493586217913925495851405816296682706960791383913340375739628111898270614813266755200083564799407766788027485532332352024027224698199060815938197172865670956402289304658624389748945536687871488565787601288863899811544146566179125054361345491299666333144296548463580152591320203647485383402648565396566035890953872530543987300700877916661520962595410666627445873003711787722452859856569260494472375128936533790154715039734447084354515787738062350432618897439009684320850395595213875985248081961123885179420668160222435104348738172793787396737481265016580386986993101160673821650068377182350730255005754757604683510524357896861879706617761317908260663342673848298530050583191985919675390877532981022238129601627016291632330926779809631293070560375804444455958596407594955858475081851191996245268822870776361657887467004531332263395611291120089229481068789229695018187723686024313640325575962035428327239557079268995825494033666401736558372076816062703768818475224366442780", + "6.13996024767893093087730974933558916424425862650584690721841572678857548337790229881923816332935083521518741484898523805406908588101988324328359517553349843390421086642863953165585499390536079872062366621329519814214193282367178031899714145252528562260539644231245327673912462770763610630055125865311857562235623701457772767107545071100362141557090895790887668810411516265706434948228333319033966731083977241713284108934997287109744059434340796428142943885582506237028975277622609340118615082365596714886363571686238178599138016637734569633106719892621556021401350624987267973154996198193174013221688756770377036171433097820190243766317005911425225179882817321084747589955141056370494147649483343225787013028684820402724444118014996455890354705916093516296283512405989347201121641427696575149598678140109504233818272503530938648415370981515421563943106455616814052071190988555553748547872353585348279517735551650154366677133251112853821942931822382098705177802425834181775679097720118201874956931635689650294790221578307301702680987459130644770982500484156397132962891366266973796808741388048776145354", + "6.39067324283344282612593456066836977441869915362953508565729525367923342752058036792717988019560288813706968456779323116609349360225813396901702110619796078057334552019514797946669652098699860634363540091309264934180808145340898043417996593792792270890934539784162252743214627553825160296688912049057995757459733133778428381528832147374042143201083422723391419017423476330077549613969668943960552183346770788992856348755201584958184758568943497685412776464637452851023132948222137176500877587016169499594616364239121570837276604948806785595382545249190023683014214186698190428219840682236280784558646634466507658233281348215201532077497422563499058676631131322841280086826370841460898715011137512038685864392079526912553523177019272440755510704279946872616455555313590656257840391404433847924673482299505689689769822347893968864046186358674105429643912021090605610906309627700793415194628412350783590691473324467581637253579290246840759262280795786394666829277098636383739586574194509405681992353099095656288666217128758044223382834658781601679058686559406948665993762673723079305381020139309264407402", + "6.63191504395654222093463225517095044257167358492883535520176025342395774211712657468200830942121109644363941340107615485128085049415855416468332623498613542536495098385995084442339062608583978638604918143347913056760626947758803721255941289939544782980624105947726287394246015934530636662452762740891034120692720860989191872617116876270993379145692068344563800080161568845297279023268580882621139265056001709415926357601143767499984660052292050156852098465716279953503805000122483365981348049448669145674005237424902758331184292667285733831838736385479377968893647208473593030642721808734551034183742049017463013327984017500270415348903044357529006803230836576763451403141885042163557880315832238470993889819388689962997828261446921618788229788339158160824684571810429272556119989956914418082964164895325888955223056217505031535326694543563995771654860377141087298652099371042888622930700365091746883791244230649741108473410207660026523417093735663777713562847430184433298925557785602803469943746593977417910571201562354064143775475359422531818578919533441219169564634992179085747739421396934533170253", + "6.86468424647826745014070025117717964024823451584566770298700199608686799810550334183271384036184024738713075357138304363500729701192009148330990514337822154917664169841019331985106373480242557119822580196465316734207821863081970176402541887949909079651180860550135778414330866329785285584237686124445664832783599634024854488870218943262246632754953077685614238917113547631797236909830439953169012672877303232625810370072296875077876422022480554261365112845624378648826827015798512264531843127157809664230543124721508342792582642801227649598361094857362199437229919720183995231808663615464777549808840564458629976163064258768399634097749419103019327558046204392219063653339901570969874642832022669018679996962548734797438261313737916279431144129292768130662584134756962916924264725125780137451698441993315631510366262043104603857813311015159104411207656587159892683007990478175317339407414253752547566811439103970532316615414849940518882874013736359501398823560697095317586441184708051608329999378177452455843424936412317738990534790002839870054268627101977849744783551897006721190846394315014179836658", + "7.08981540362206410919266993336458073119019782448954851285523115941164513836412872549980262695417866166490729449713028266494461146289769041010037483841114827384815079461242049139970069211580330491572838151707185120069855606140591888206680076074093607434178789797965056125568710210362486562167733000362559363045493390990061373467195915746340734563518180466064695504023626957372716533123941938499273960821861940878245300624658987006017095504422443198450842884024148817793468946118645483237729399532667369685538283843648168171114311227477906628002087322274050165358654777861672604286677553328777171742824907546089768216859979219968302594559549935402372256087285611714324493225991578081448459631584914955761298391279405253948506605002517304017862552843870010724998772238168184624304780886956610028083117103239621733160264889227045787864499275497227991534082024585777541674123189429702871674254383899983980905539696881555641586562578917589136538017200856225693373215704702453670534528006815061665390528267710616725134304996130761803394128053676974395892348477519793175492044505024663527553914391150385504545", + "7.30801444381621929576410414169825272457257572273051004511973439898925887398217614148081823016200949202834301901341123741998769012029715026961550074765354322325117408706019312795809700115432061001422232366558866090103569420172751971374783210350559722862260759626145820691043338967446065368729759698186882375361190232710825561214648603121419802078232806394885971508914082308000592725279784010670779537521209568997392415395010518735400320816396054990550737425086661554419518324971399666539322809263579915158239535250650034449433728950585403021312904469201906868572755498527768200566105436948987083446413896510763908286033307148367944294928994814851182637242369700047960905551015550891703778083820346244133873451184266447103836670847395501001367479270898875772403881434563877248062713559640372882766006167571899610660259996723172304669594755157014583499099899215181509673430723657636479581940652958938443019241663200400679385786760329883423015546482354218805580324551932049528493376425537320109696781135375077474891741199783559527857010245972108769520093587637938249980386334004821761518122012885593787752", + "7.51988482389300150724729585443313575902096022182981494988977072902688096382352592483978751513417179834802991799561163893459897085438020854287356696789844379574030644137437119341198341293905981640794145070339651469527740698824158833900605083910102747153254346823547028680012412545082587495438367753158559476209718277999227356404721909175713310761624474354590046592779251976853928721629028175578064120608571557774920892429935357615650299892305789477593676441150890402440458692356991420750424326859688267566794493155945645441408095648008938571758805471427497371233893925893138654640500264101675890590472426492701509085255763916845407952512948511109027030674293062273462578534032766972854651758610175461923748476891009535588426370610655790264436812079463314246950145130169825282410419274152444905553413922149504575861096531170020496816501665189089470157595748683377689903086933118316602453205910646274534078020297718628349356730140346988109490595289054093680476853006675328286507166881273403971565101745312606982548876538861884799764527184647967435303690091691151582053208991986612381777714301922567712528", + "7.72594721818665232400474478573212164113820580488963719814529844615257171391366083837598391841280737832475169393182272541886671862529201489762301217381727573506969107619318907033743713523584964748522235434860386240308259592226625308659565532071953554996921178294803994916620561170523298903408385287659414301910401193614716492481152548641726819012461794117027835912991336708840836650710281453954679059886797070453447940199379600879845764678851272615250256962113900000364647452410778972648375707943133926939195015381201426487954498462993056064744870715359730063675217952027028557542103700913113678148959057734510658771520791956879881016752781141774540974358264943959912543543231872348745595316009779251124673800869204892703157616225827295653493619371958957677652500482852408284671621135986394278188285088465620289846607059129785050607459357597788813170941394726408533348925805369815717709891710786025165701419078226562572328981485933748567540138562641027503508306197019193198804817270177795577482266694943462207325431350513542160949582976461379550638607760760045294712529920901600994240565773585313185966", + "7.92665459521202202669005753024036606304471951279238958541451612439347743605314331445754837571926806246548112958659070724577311536471294975198952931075034699966919918793884250232805461749423479324904837457089324667304067982764195744035286043093067787996889565306986604628296972508753114309320859400267789675026962497238890042066589975990144179370393781502607410897740628103263943824274864998435887027010214918657158068468943938068760888558966351513808680337871388293293939516817225831825387903008287452552651454178189914856752257554981494022967306190076652997599820594940704997277845097903068570525824332466980258464595176254308245979865165099086414860763567934690442503435576361413412395216127467775452411019392589836257808565460597773216981862679493249539029674390084365618781969773076939757580865513521481935704013963254685436747736179861799668941526147758194350248681797583637701669903788375213685518502773731631995426377144392048964303815782517427738248494010821572980664588536892911565823829885505136555649244837269033240184725561988089167118135264217990084374046308401528369901756263276741873753", + "8.12240393759049993775056085790344905374064693901884539671441829845338578772903259406144188243219398035169276840513008383162269420554517811059936012081975520344394583550625149140104890709858952675303897227339074601057818074118589698571155136079180679720382723235231538458633009534010518571057778133890494075838487054606092393806209145857916456072372240571169803355429160587649756506023316970860684505132706954885924145348134169632738593180936266392964765757145617588713808060798434336980045883860242149289652316891255507207532033909817967022156020135008789172223827513417867030366597530330645580768779589871599830015247516272684746457878444123615590973536303130500232072733480785298450742941376024222195955073652956648240243919431159576650278660779563988680861574614265500071902828098808112054130736935301171188377689518808421589113550324566036499684989624896195759485888011688106014339156094756792157734665908674538715149602342862415095116193802949560661722409343540501008020488626114518430540516030303410754550714099923563850234789351977675338732716128448507828986158960243138593921163553099984790877", + "8.31354547584695967940566378712267275288624539467359186240950261388420109063530469298372814586792322543394723656678356561805557643176058539909258806409526952143256265316829288574367192300134911326662579540672482872991356622029261017993364337446668505438648868283461277399259103747660496390168344220787056266691284920945026070198958124599742654165567628853365640939746555309453490999458540074120276825684247685153740702582674467303878126564742370625497947819552642763989933468008133993752611603522750223144711829552595043853200184607806501342069297514482919782863001913353586468996478801683403541333200250999752731449803793607515150980663437341133381305911283161078249341037269510562017916894714417589792091216017912110414165892331827272726552875986295229205099562827308056238370455191631964062828836731217300323551683849308479366652512262425881556198411502851577353998426212961146886854599036602811970862235743112454698389727605325232872049778977783694191972600155385422071256805381015864689257913905946358386236370406339271062529911829230871245337410607604318231151206871615890518289557823950960924210", + "8.50039005178969681405606694066857144339871874464321576831825225912653747873113563539576206921739603496466768191005963101509608216565231580166435976841183722328004091691395570837807106693569643325702021135074219386315687196397182977310724857959339705673410615655661738050498092907663921364482163693412990352699674010982361328463115845819153103736613515518538534444209396391044515527047534370066166976494484027905402462724778219101349242704419346472667550031765101749789603575074461809215731212887738126264415774177469700439565715044625979289026800701352092929127409916129794527211068956300531815748065200493298365734410099333662178356881545890691882401846675346795963611125059579096807842008824231421616080054119488676338739204001665175181321425845571967990452486774866455322197409200481385043451140315730188098217149173808292210439135828385844496694628703028478095465983540068867270220327383626367373083798876294946716176284955504565982296829544751335108774407823029718852800476212574258039209896227934401044333736396538381519446030490401670705477490565602459130058989097840050168516571928831986962913", + "8.68321505469921191235617552748954921446530673741455112371454793324441846343554874300139537881738616515735630882070923935302944564162345230558513008887324453213161255770304084085806671584594117832505684103850178581673663430908068527011627361538250583030533917385305060815056023116613524327810286415623197376863742340177925036584573230599476192380889477066406323810984087702033640107924182172686941361028312661313108216417359778002970966067090830603635404946756087016625118404340231456365795980675399247523972342833230042316359524247532024538043069127321959945729813306883450632483762749433800961196553281680789399437969279299794116549334300305897032285602148520076217180802664897460722376258717305407854893719421242134915981236756035407783461448793332599639580144795377945372918861006053713723472138436130841056694213733945161830059507242510609175123971434615259865080821278420604965765695747454031603269803511665039681088193517954588462094071113509985794023777506435906160395075220897453305493984243370136514880523527929961406848242166117211869964562420108871548138785581293418809932434011104394688986", + "8.86226925452758013649083741670572591398774728061193564106903894926455642295516090687475328369272332708113411812141285333118076432862211301262546854801393534231018849326552561424962586514475413114466047689633981400087319507675739860258350095092617009292723487247456320156960887762953108202709666250453199203806866738737576716833994894682925918204397725582580869380029533696715895666404927423124092451027327426097806625780823733757521369380528053998063553605030186022241836182648306854047161749415834212106922854804560210213892889034347383285002609152842562706698318472327090755358346941660971464678531134432612210271074974024960378243199437419252965320109107014642905616532489472601810574539481143694701622989099256567435633256253146630022328191054837513406248465297710230780380976108695762535103896379049527166450331111533807234830624094371534989417602530732221927092653986787128589592817979874979976131924621101944551983203223646986420672521501070282116716519630878067088168160008518827081738160334638270906417881245163452254242660067096217994865435596899741469365055631280829409442392988937981880682", + "9.03777677270990269726949426172862835196387072970673604230446563698972563128792797577778210699007499500445574250898762044933778750351774122552995617564832932129894429850247153326323323596747185514513829114667599621242841895828094634599104752390660626316359597361160805506977060785864672892966797271805786612860244448725471833865343085096665002696889160030343332226214610521511200144375391579536397373156980251473081426535067176615086187889982851260244145348339114794114481076655003899438879933457078775812975837503314934547103980296764470525861438620896571785240248887907778823513254337650341006992728965834432443948838718849505116031704247005966435163013464172640987633315418180257980416126510536269126886862377598402609093638096342316879109441931256004415158100347181648434500606990925357893191947800032622820087068319734681796146574385134374500536260087114364120328174363307505811192446227573869975931538764994397186624871438876822552201130556306754697296734741569342977980309931897617697257730057945805570021974106384510091603635687409774141632668637120038927426728226929784072977105651339473101367", + "9.20994037151839639631596462400338374636638793975877036082762359018286322506685344822885724499402625282278112227347785708110362882152982486492539276330024765085631629964295929748378249085804119808093549931994279721321289923550767047849571217878792843390809466346867991510868694156145415945082688797967786343353435552186659150661317606650543212335636343686331503215617274398559652422342499978550950096625965862569926163402495930664616089151511194642214415828373759355543462916433914010177922623548395072329545357529357267898707024956601854449660079838932334032102025937480901959732494297289761019832533135155565554257149646730285365649475508867137837769824225981627121384932711584555741221474225014838680519543027230604086666177022494683835532058874140274444425268608984020801682462141544862724398017210164256350727408755296407972623056472273132345914659683425221078106786482833330622821808530378022419276603327475231550015699876669280732914397733573148057766703638751272663518646580177302812435397453534475442185332367460952554021481188695967156473750726234595699444337049400460695213112082073164218031", + "9.37894419966950281444497699123566005692831626416482139632679675169065135994891966410056710379531185296997453115175739369207792866788913471025384584831759220067588685003261465869992419957481493970329156039794423572600489417423832178398520116622168531662587804563582591692339405679461818702500749407972729016331080470667010562134768478583188647079633628847731165033154000189887711845625882537683194893144001697291405120176988145015896091608729928306935261469019327442052101525774632932662882899190169943725336986511866531222451259355191551595932544893780095062627088118307374724034603309074230566321150596513714223540169605245519015025496827736989356586049475153155269118025874004811129386475129565322957001150834914097729540205532774277913604445897974904172097094197509573297586047245883925138372081888018562975908164098671652826540939370006401925797469800744090363913967117006512530422783187442587682838761306012830815412290263401144388335110015291263855233602315586489580934166304206346481887647538275213089289641095269061282993015859566679470384166281828144544679798214034013298421760057481691571217", + "9.54495610016641218053318050888027529952710202531153199575774210745792169686775867122286336893013980770883110393522762476818358876088129524710547725582400752350379006684967820956995284778747313445279111803934019554639715103722176378053227974233654201464826899178346960385701319012743023002834221825212678330062853593931422954382790959273783367681208829081125750296573583945273785727616528225035230730367043489573228646448365807546311686441424497747445818035366984113867781703025697773957490231025374107987159920796065423503962296590063470579872505263841733246548152591941651333013912614638133883335123920373070975004252305213546254181990284206802141740422901313199964786740911915995115427439794642825914605300283815175742959582878011011823566253034650282755730842497543625168601556462908567644285914941630229285900004349592874758990965409149767611455899099763319215107166406191621967564685710927764812630422088568711352107239482256315420275932243379732104022438119314824626037473517483829358567542790510299355289069031782291584296420055747908391149240325877115257851162524812619999740512151814664737655", + "9.70812956277849627020013008432023090142391629970752953381907255677408677683608283777972133699852226057384221251532058096143107203837634058545789370004650021408813594346758795590127624936380909477521162346782666694927945494282229717053636144889370566148233104188061190841182087686652430168640066046228725465172358875908141846376474355637636250095973439621439980693326786799959495956257525100473767694685408934461084692899974993028686930219291782447513786152395692604500383372485738542065647909407318214440351068221656470065118040045018410800167501279347597149519022186563837419966281229875188530501814945342053480368694378460223735611289594593646472862387163956627509412278526670700766402504793826839677765281076427340901353768173748184477638624215647772178191872811543334258915265427131978394362810703976093768885428630849932102391562462424663355002600929871388002261215265969294828417306845017134019844876207436524153517810279329274165301203983428519852972984397790790147707779427760025639355001932966608597649497333189984495365421369654196836993842047830874262598283161232047618963368717192374581237", + "9.86860538583256911820721127887475338860580572014113804764764567126280797502596779665406841324694419448453464475175038076268453561722477590781196193451866802150809759490712608888093911291954287843130175265867101964469755453143964084226755674039351003953563412948117884754289084798586264882426396661496381950383124624978217697985543751868445611832757526512148116901823991753587937386414616186527759915861182575983960867544511432164162055576224548617161606250500799648602173880407153261952724142638011741327947253437647196929757560958075420545787575757761080599830662321444781770561880447820833072140574469797429581558718245198502380676502327269925525873736136551448095090807729668471638614047172598418830416390391932045518785962567615347617805861430300764479148941742520703366317243140861995853488523921623877514753981220597859917397820846973107706661150411207144792858833362409021546109104485305007696344300462841655088641041139133938632803072811438751371559900802700904742289494188612587210415338399019832109459618353269954649298194490921810882187710461971651611477483705188781040460993037832290727754", + "10.0265130985240020096630611392441810120279469624397532665196943053691746184313678997863833535122290644640398906608155185794652944725069447238314226238645917276537419218324949245493112172520797552105886009378620195937032093176554511186747344521347032953767246243139603824001655006011011666058449033754474596827962437066563647520629587890095108101549929913945339545703900263580523829550537090077075216081142874369989452323991381015420039985640771930345823525486785386992061158980932189433389910247958435675572599087459419392187746086401191809567840729523666316164519190119085153952066701880223452078729656865693534544700768522246054393668393134814536937423239074969795010471204368929713953567814690061589833130252134604745123516081420772035258241610595108566260019350689310037654722569886992654073788522953267276781479537489336066242200222025211929354346099824450358653744924415775546993760788086169937877069373029150446580897352046265081265412705207212490730247067556710438200955584169787196208680232708347597673183538514917973301936957953062324707158678892153544273761198931548317570361906923009028337", + "10.1819721846243116158211195253926465666143347779815073047979911288728454119358550456874471060202706503091805338588626998024526166707650425773136658258074400903070578475129191134262714581830920726995815514653824789384673555040322558822640155690142138250981661144460598431698331929864441089428405069965236237150722105664811612049206741649626761309984600129580251270318577455853101292940548425839036066861121228690420716119923444705834233799961792271274742610225908970795751081615038981535248648458311885095799828145600663740483135495656806225462943772037314913924014868167062651948437081797920497967655996219852832742745294377907352391106793565373082008386931837077219804533025205245429016269305924868300059131465990367513110617768155977075582917392828200481639719171646996937843435515414397834073681939587838302796801187221313907962667869992989319909211964361393188990384040622902615977028693735275429763987359474700539603288721055646644016768647749162193038655134281042688011723482785471924105498640148127126652745316007086053077591814555887669601195725983108276147651242913586147914229810924624624361", + "10.3350931404633683691947436472707444709708693615480182604123950370334349544443021679231379500921649218800863593926760528756661011078126321844492668291462478393476503125536591219070509735210428947761875792828673301887541398513337078226608138436426593790404989932058023039769630384800611394806279966525193241106630459881453504032664228967399745528185257298594581458987077801324925958107100694837096169968690367946833033746754352596262639045628825434791015203759110279895685375377254959267384242428992179590079538654788434703331515082118259553412887391533698850248031662366010669929529784194795489078820235616519309873494295540734349932360576182477685064907138632368679604675882383935711506161826635113153997912713265877050477273997328780264216580134895532814312026671290109568535316587756940503116601114428904476514966934012890148992229020985082631236739332830184773141236150086303025054599442020885304151228567409725486746114685532611428843970696553723054870710919524255238928541738356450696516302034137957025179252274911492305284875580251537498242752152958407117066303014561567387290966125697410459079", + "10.4859783938191844505415935988555812169983910386669556187311537807971601489415184480294324534243750962935064587431065554132339655732601450466677346771766404683525586939467074949776376839516117900277707447519492965025773007813570350841194233890993183787851607015508682597768217867560501711087754801339252398186169563368609851974003387177803015256072875765438214167126280799321733391301521412815249368328101551446918784488181577223454487520647934057527710710187315407383842241034812304414618212426764289725514443697625658320934830119552552349454613146318727307440539214183275364282577270889732517818803743197835075972826771689559984211698450313448053374104683526842305753510193148049529361498811259623906343956382898276922773672099874559380274456904526382655867821184634279087424431765532414870700646132525635436192820560367779661664927428988733468931949806424994253052465407314901679252685856376776344476864227019344231976962348967817311235507614203388405955265951309377513783090550287722753128747261754207014515315881341170594023794216162541770211605362973081229737656368414853828067103315720270750873", + "10.6347231054330961637890049000468710967852967367343227692828467391174677075461930882497039404312679924973609417456954239974169171943465356151505622576167224107722261919186307370995510381737049573735925722756077768010478340921088783231002011411114041115126818469694758418835306531554372984325159950054383904456824008648509206020079387361951110184527727069909704325603544043605907479968591290774891094123279291131736795093698848050902564325663366479767626432603622322669020341917796822485659409929900105452830742576547225225667146684121685994200313098341107524803798216679250890643001632999316575761423736131913465232528996882995245389183932490310355838413092841757148673983898736712217268944737737243364194758691910788092275990750377595602679382926580501608749815835725227693645717133043491504212467565485943259974039733384056868179674891324584198730112303687866631251118478414455430751138157584997597135830954532233346237984386837638370480702580128433854005982355705368050580179201022259249808579240156592508770145749419614270509119208051546159383852271627968976323806675753699529133087158672557825682", + "10.7814158709708600973470860025697540134833131069132002021875135200480437122785122611113481677522707878078270440052147356092727695527920302171183192478655274869472668345393510398722323555179529207792958553208776624344340893028683838808544904189559530608618288330229561660785494464076778823090275262667649435818366046674470097351430635081878043122218079020162033184280808128488592626175069016310564044843363282384351603178223984429085151346774445891706273636784622362866483557972819012892787057761108736681050757369877123799164633273904139629258646240624506200184033024483531204256854941841214015611888414080581230610166978791113905519323893487804024647095097676311979368148451812686908830353037070405782315727089541764339584093637958422138796375184575441595432133925090181949043536072178753049486872204759334059020258970699357154378751215836144836352430031659044940188023466979385706234766354871873384990411026120082971281373943799958524209806200235642459562870710282507653952117525804197309040193746636407624935115304309270078857483676519373602411048897743124249850703751765985347181558029527375643215", + "10.9261393381382494183949485187745355142392643001293200037804399336898503279246222062168613731063277954463829865410973870577192080366472062964040509440033278743615823412810808078908898807870613199997974098405643999383690286991545964650196935814017029950722564391559018285106664794338502744786047104831103687602494259961816398342935032870065474763913436754495569767978627808003615457573685732588153239217166014299098858554629191013913370517654023841228586351241202877223367260494855558385058038046339898004510183855157527283289679410125378588229499416948431610345648489884658061910043475079418189307489137285545541133794341838958556245644032832230955632382851912531436083565766604594268028883405369333102861811110938475059430428576302304134018133552423994855168237965050769662481212059909922125002130317511819126236377187306085364203705624983640591322488295607424619160166746461204981597459574970519980426620414393119798825541827904061106147335114790118012457207318406183818422346913078125642646008877987007918624713747892824771389677121777686596898164466209882065864762628266271132718624356253452793196", + "11.0689707511584805117811434659236005479075122572654030261378132541766399464801053452268915436339505264869099960261186473580786841783940799119071862844203935756997737196827013181251824477181865522696656125604284386736805412679099995442756521262882968085901005737598504818120062960533623452879232321601862728439436565082413065419068437974996041360159534876356676912365960559399896203071153029799663110896121451617844812242705440244059051070332217484066565235938948140400311999208370258263622580614733135218175221722605324220534894428960790855444760163600390939087544087363052520657480331091788922029648714976820617337239621908921583216442263332160508780261589523500129489988435510612958327244523134689294673236630152564918827636287844901928132768223334355784295928691382783374669003085509906226346278070859886444582772115212199422165986886962139084337282264595688658520928296714120909731973712859435413818042451694188522026870751629872095477433593107333415373943667221266057108367464732484461448541683512088757459353259534085109191456436195932802460979824143610395941363551604400219577421540555259221554", + "11.2099824327958573986225648677376017877086475504215665299167067873045667553037759486727686750491707478834293411489125980911084151079663035133289893355490903237225455297933242623956756700765850165559519010287574088187786256136071791860343087283966672952333022508572112324619331645107711457400199461132270526458620965541207404627199559179879344651656741731856844106860800145662343482669094570758579364544899824573389424347400188820501898154253839556716834069987025577499729423912482339180176769424901522756286560845978811688935258106807347694868506072185526420367236029189162790328650177137575228819652438270486363627393827506772717574627945020518721350959544754722118727376733041854351927926293076323790604362596413400569959286648197872870638472594843231022845264486068134343862498444673897526209611533151572239019385139110221569524392708880223111039983515560401743550284647457807334695086237272708711276174560785696543477439261496094936993988602499825752049022699262521970903438062340959457966112130335715811951217156312056475059606961348236080146557716984203901504347783723320675301673124545417430186", + "11.3492422124642983926102856582985015285395067466832927043380356548562390804853608284602050743042816031793047600978062552284631473271698301080420930678002935270860213755533376410950434831683129266708417862791056849585318715091316511224772804579306952692391203428022706911552905897215022011255923056920968598357445951686767158007175858503283841137547847702169068881757041416256682026875119665861386894957609106355261396135163282225259885976498039746087649186814655905823222925759171803884806349350968882196634773164961078791229532476208824156202390581863307496926197095334795614010135645721792945689410813947143894261828309379674182914788493173415091362063280686801906811659162851572848118095721313328315435166989609801810101070813864563570801067282282192253552931615123833493584040857696592187534301264584146553957310718712255292573453576205261351861700915480639583301267167270018138941290820062263217901164511455735107338870881079416882936221444752202024321144178837275657426737380444900404799010786716522164241960362132578101367581203971478969200704781556667157536062389987737624943537002727294733986", + "11.4868138076131153078093551672152110823792896720438206208589815428358866831391271502916151740432833498923733353034882653574261402114885623063517466286983135609311347428616058487641764580040391132399123735354188924995726084316672645564644522404101010145113496826905661533851564869311026284567807835770793084267376582965078917724760751368098985709220493218989081195410084107253702771346532326060479533778255009456352092653858186317227040032545274297836762746748179412232929420302325855877594918256439049163258491252026402004889017462470314144712637559338394573924897045814379676299403438700340396558709369818377199922811836650582080165464955651223303653264959752987238908036388800978603698543078745746928727371682109974731915482666302457811317513367974821492659153756397368790555646602353958513206947086398520237613898204615597814371058763275824648368925762130837683909032578524176198944131412130278847693768941107158139354113448426375117837953121182384305427053092552066260458822741364621133976801759853058864467919702658753108948232787444346415009083332605651415456404729714544798893173653905698148137", + "11.6227571644752653007277348109508691363662508507756756751036701167061120453681652358829612013449512186720692331837632298664953191556594884903747923711091159798037951823211201052540116242903833376452779227088949634320335447650281101165924512030256613650508677820241405437704762762206782047959767675141661427645411489541320052642562158115270383536284327256491550000081996990946292465147038958140512483013436893674439652156220554266153922101105181022227884639488325310071375913459006514297537440977563220662148148970327960819157453757205132071390336936162228686072898193957868554143074268366176486204705456695741921244062641977969446800006474326691825663289023526630549872030867738441378997270522928994756399267446297804673669222384728768703789276705361232508520458717382592703150193394825544156320863346704391789739396085519417964187584947528508961792799045137827190950383493042007176116232841260864577432961637844272929218361324891683925506702245396833672138534821860627603036634022415963773401638269124800251684954328516467828750283529560003793822429188759689400075614871516086231035596052689743737025", + "11.7571287633482564701088417557941419439968698420773487503462842143146491163563371049337556035298522469859900749767294905204293522292298717243582785099170281163259336541392158276782668075147925622379654122962653351040016712959881553357605497106466470404805444939639812163187639434573134191280457860931724877949789107337574297713157520257772779962308829313235825010872269098259933266628859309692716030518264040729497076680529713079313207178190774506108797460140175583332304192519082133325489174600742357544490571971313852098894475025787306758030943007946889416870903157547612470086523779487801936864170079119042775197049616392224777035884133632044487020869747634558757479347496253003316077397398620232134764330013675436470146051001150951520936702104871579372375941323552263581652132668534769659706010116638397183935078175506596204447625920325403258326466185355961926258614112075160888891191719281518991171695016370238399249053764574155272331577493400906266452679122258224017845896213757845939003637544737204862728065115192407085665447911415853799165098806733280347311674415363212540753763695044873288556", + "11.8899818928180330400350862953605490945670792691885843781217741865902161540797149716863225635789020936982216943798860608686596730470694246279842939661255204995037987819082637534920819262413521898735725618563398700095610197414629361605292906463960168199533434796047990694244545876312967146398128910040168451254044374585833506309988496398521626905559067225391111634661094215489591573641229749765383054051532237798573710270341590710314133283844952727071302050680708243994090927522583874773808185451243117882897718126728487228512838633247224103445095928511497949639973089241105749591676764685460285578873649870047038769689276438146236896979774764862962229114535190203566375515336454212011859282419120166317861652908888475438671284819089665982547279401923987430854451158512654842817295465961540963637129827028222290355602094488202815512160426979269950341228922163729152537302269637545655250485568256282052827775416059744799313956571658807344645572367377614160737274101623235947099688280533936734873574482825770483347386725590354986027708834298213375067720289632698512656106946260229255485263439491511281063", + "12.0213668967023250475121483705231298685008638313363655540949682389613264866896132906306098642187026618532213215211701448267391188368047667853571572694775536356753264174403972755252732243831827044176139209024924394250581368618462046261557956041495153611139167826243672443648055383775943303041688490663671373136155053510360540267843423005332353653056262845689595224998209096627100780784418138991680078849703487894125005007545215782339870314429009558182449825490593249314052067759681658697789673578678949212809806351598964422253804794344853941490798950989758297119239095904492398955585999875857616109880042018712293986158989479506589338238909339482879806698524858243147005443655293460070165320341112926446082098108538465624611435423462989443724332948895564374322613862644840100579844319808606840135928070026153435302458230552287194862404115544729553555860135767866296645359954013075856567898559441124011177102556776336026301858215217613058011231118563314739369153408486077998475470304773205610152830759374129202640779824926230644346880253659061205608241669503029250691241581669322113673069664040300361434", + "12.1513313969589473215460257145568651201497518877897922428050262513288347242121973389754626809925134955645428561432377800707082867615886711829398230527046072149152117757833141185434477765869902183850205483276767851442668275870416792912369988091698336520343468857746751071883637173754271209585483303314697136442637145609733795560874016392837967424129624669796698075496202528858880383635774883501185883268804218639948489991597161620364526639036982352505612319544441359778240876504358105343789015081880171993801331134760442658432233574812308195804501595367608510691945957205786397773541197798945975331217200866768614798768369352312293373100870145040568859670724160372893783528980570376945737242122861351956826347861801637766043000626205823928280244639867984099618586640713739887577174825475613963518050410729443551908819114265689677577478145683280934590715455378138742260694148005560374430740814239204990726910962840148903954657341678891978442315098243895522200158153790667123362932646639672146391300060334021960329885543548050873714607049607780426796959929658969497274971918388832149882433776112378434610", + "12.2799204953578618617546194986711783284885172530116938144368314535771509667558045976384763266587016704303748296979704761081381717620397664865671903510669968678084217328572790633117099878107215974412473324265903962842838656473435606379942829050505712452107928846249065534782492554152722126011025173062371512447124740291554553421509014220072428311418179158177533762082303253141286989645666663806793346216795448342656821786999457421948811886868159285628588777116501247405795055524521868023723016473119342977272714337247635719827603327546913926621343978524311204280270124997453594630999239638634802644337751354075407234286619564038048753263401182285045035976563464216949517991028211274098829529896668645157402605736964080544888823602999291178070941183218703259256702481197869440224328285539315029919735628021900846763654500706187729683074196303084312788621291123362810414238197711110749709574470717069655903547110330030873335426650222570764388586364476419741035560485166836355135819544023640374991386327137930058958044315661460340536197491826128954196500096831279426592578273253394759361748277609755229071", + "12.4071769563386121910871723833880162795828461928567098974966545289703789921372252696246545971698126579135877653699779946636530700600709582176756559672195094792342638905717358599494762112026557836025246676548757396012224731074603580436169013312966381300981288214643884821974524286813435148379353275063447888532961343423260740356759285255609628548615681581561321713204134717540225393296689839237372943143825839653692927609315322726052991713273927559728897504704226043113857065570762959566602644918216789694969199672638429429945004464808633659900365281397958778937764586125792705750168571832536005054994358820565709437950496363494452954047921238695415144815274982050006786314548526164253480435527360117258227218473895919440988655875440528203125946747677251876874785141679432309253336655217406754914545493066933803303046355614733012876287373212014898518464354302511069792971558150198002542994517182497196658469446954272237277648451310578098894153010149839496340312748322929392343542401192635791443342446849357926898503374322883315593972409393470519281160983565963805711107788379316117321935018451317463295", + "12.5331413731550025120788264240552262650349337030496915831496178817114682730392098747329791918902863305800498633260193982243316180906336809047892782798307396595671774022906186556866390215650996940132357511723275244921290116470693138983434180651683791192209057803924504780002068757513764582573061292193093246034953046333204559400786984862618885126937412392431674432129875329475654786938171362596344020101428592962486815404989226269275049982050964912932279406858481733740076448726165236791737387809948044594465748859324274240234682608001489761959800911904582895205648987648856442440083377350279315098412071082116918180875960652807567992085491418518171171779048843712243763089005461162142441959768362576987291412815168255931404395101775965044072802013243885707825024188361637547068403212358740817592235653691584095976849421861670082802750277531514911692932624780562948317181155519719433742200985107712422346336716286438058226121690057831351581765881509015613412808834445888047751194480212233995260850290885434497091479423143647466627421197441327905883948348615191930342201498664435396962952383653761285421", + "12.6578523191369022687748451647920884211351618089655179455231284731368243638831930092692097344570437079901479457687357718509226590879392775115842265975597049724341563061418697031268607830263630749575108233222183077768581512869483056352211926808706010251598533367951222352547093385705143351301673698003798847470899037622815846893505998436154809431208770604783851594929676185652397778605631719747005946930957513095696933347983859316339644080864356270066190757023433598780191812725848826161342208170182063208964958296027351135838121377963924650053695239000481943588371643194130257120532938135164021072988780496867855135805902766925269096358874433009794964404505124093744345096904976475426376615294176138495927979455477696384319750513407338903997493563537351640190122018222196334825106936172049588584462292486129117684021653955548443028996098787136328122645959968477838803895341464736220878601918003630919411584046348014738162733741711244046308733521756823739827300238391611818552174369697043280135230378038036669764857912765848567411839492389221128518450325850349211951118365174902595493189143091128924607", + "12.7813464856668856522518691213367395488373983072590701713145905073584668550411607358543597603912057762741393691355864623321869872045162679380340422123959215611466910403902959589333930419739972126872708018261852986836161629068179608683599318758558454178186907956832450548642925510765032059337782409811599151491946626755685676305766429474808428640216684544678283803484695266015509922793933788792110436669354157798571269751040316991636951713788699537082555292927490570204626589644427435300175517403233899918923272847824314167455320989761357119076509049838004736602842837339638085643968136447256156911729326893301531646656269643040306415499484512699811735326226264568256017365274168292179743002227502407737172878415905382510704635403854488151102140855989374523291111062718131251568078280886769584934696459901137937953964469578793772809237271734821085928782404218121122181261925540158683038925682470156718138294664893516327450715858049368151852456159157278933365855419727276747917314838901881136398470619819131257733243425751608844676566931756320335811737311881389733198752534744615861076204027861852881480", + "12.9036588082705845248371543632003751697456908407741692410784368848786088725089065725375873804520087666996942746345726834840639975755506362717246534706442221166298621207504273622834658505486588760226060303402875348318760592759886407055350301443543632102422510097863033684320708847504885397025676888805608608575632588352908208382177260510976770708247524111302977184221988730373831487689478022518795416243743368791870779402875990432576302206741559354874008433704301896418503322037242979413682693250947191295393881165307605408058206874512520008288998516843589530555818279993680055875466221805842339665434759158713770816962051147931208116808824595295514375045899970471981704078070597035475020898965145851209954427460157152268663408082085125094326139800815655980081696754509782998928240270234248524845103756193355528876937225771208802709529190373396585475974586241329821820837801569449366833520227139445910446436020810058939318594350345270816751238237726135838608689569520523122450244404454913108932211269247818789816060744177821446724166244434311897023559474757455995497570838056986157112960941696803729504", + "13.0248225820488178685342632912343238216979601061218266855718218998666276951533231145020930682260792477360344632310638590295441684624351784583776951333098667981974188365545612612871000737689117674875852615577526787251049514636210279051744104230737587454580087607795759122258403467492028649171542962343479606529561351026688755487685984589921428857133421559960948571647613155305046016188627325903041204154246899196966232462603966700445644910063624590545310742013413052493767760651034718454869397101309887128595851424984506347453928637129803680706460369098293991859471996032517594872564412415070144179482992252118409915695391894969117482400145045884554842840322278011432577120399734619108356438807595811178234057913186320237397185513405311167519217318999889945937021719306691805937829150908057058520820765419626158504132060091774274508926086376591376268595715192288979762123191763090744864854362118104740490470526749755952163229027693188269314110667026497869103566625965385924059261283134617995824097636505520477232078529189494211027236324917581780494684363016330732220817837194012821489865101665659203348", + "13.1448695675323697034354136539313425180677406990253396231413553532158284729201772491011000710677650219054903693738656249197132353617817043139899355573740668204032909567434296038746304150062741309218977952141761472466065644454165057415693463642194136073230607947203262919479440729879071393287017368357538247791027372780044529165958694345741149609916405379143996738502906726395310549057499135876771945647726253389292849661459433071570826833703064597528372476669325238379807256995707509496936873280377426680968490544204144850652418667102858872780887677263338414336218554299503848227359603371483052714037382060524446989585125868194539667288699342590529933341716843693870456228542919094333819496744852442099842703290379050058483746581999303382422470703068869484513287507363016362925163918396245228476769779932001778978178333151597445957345163009522871315976591629005355442432626542153837481717190476686292454901373614541009740405739756345322959707818426567664529141400786956674079108340389783956916039981285613130422619726646882192158229279130067633381058950064006933912115038270746168224845260024281286513", + "13.2638300879130844418692645103419008851433471698576707104035205068479154842342531493640166188424221928872788268021523097025617009883171083293666524699722708507299019677199016888467812521716795727720983628669582611352125389551760744251188257987908956596124821189545257478849203186906127332490552548178206824138544172197838374523423375254198675829138413668912760016032313769059455804653716176524227853011200341883185271520228753499996932010458410031370419693143255990700761000024496673196269609889733829134801047484980551666236858533457146766367747277095875593778729441694718606128544361746910206836748409803492602665596803500054083069780608871505801360646167315352690280628377008432711576063166447694198777963877737992599565652289384323757645957667831632164936914362085854511223997991382883616592832979065177791044611243501006307065338908712799154330972075428217459730419874208577724586140073018349376758248846129948221694682041532005304683418747132755542712569486036886659785111557120560693988749318795483582114240312470812828755095071884506363715783906688243833912926998435817149547884279386906634051", + "13.3817331184947121778387694156683631366934609178535869224734646839530858830882778845431320165557527082867167385741007241233972349668341335799303120558949874914731632596672292536486840252369343075578062661394846729290886120806335230931470676125584836958188275362750631959355148413735909208659653125785489545299880650571571989789816736276472548899331360413686815340230072317761139617108693201596677053371411718241422778714572140731264458353536124425397143067303995240635567710414918725517399711583125030933885900593041624549493909270279061801044266813541511476059360070953132414715897099793064187618904913446179695444823627572975718616435530412231897626821211591630120456854888471296525545355847536852618755937846705639827645780754110681069739162703086029559215644121294709889120500305321671981859220528418810561091642459738043327836329007402390418543140043048855442197107222952090170835732458531444797752568765756885481280298531950424829111511736236703060978513393719587267334516212509718247535160103206224947196863863264871876290808068433102976710291998849009357718081807090905471789659277124839575212", + "13.4986063691111464245935803057163445333446588880954505218387843221811866477814509702726201994868384090085699517429739877130502525078353243003832198065078057206125867558943180721358516952593492926100016791442634700742497189485375590347895515367419024810678201127613962063650779588258427129303547853247317558007027886497918350521735648476962160113303483169507138322563300579235728423638552959320773585796896051727660519635215799533389594349417041464679040078438099479890297375500511781991113346083206493978277223781060900609203238286306467871141396991230768088662632124270257464480586088316850690383023345309392492732989705825016919526022563362954082266181904414071139631058950012713540527049102477938879051900769524120919579312018938311603558253092272074870766079137716555254983943200583248719785173513772917080626726235739995775731701263869010544645677727292023394850886826745691463821983518385802531448450511994014078687762847948523441279737079750421003933691499255395954393282954286628119050279442723264746413216878905804503870657461514746916596067609999603045774298320322180133249625717533859092149", + "13.6144763601762444379926521651240108493489429948062675392899749011656367981822455178853834668853591318227100171777478230478862293910435061059034482102617694499353623610929608083252219728860071814777496237554962825789860436664713007380885823257620705055571016537859083323332155283573726935538232458058826315899029704394102678491521465094178345832292296568693637792747393915301530583743993444025896838065118897343043328452916631236017814449542928117422626902025859794220329730506629124433815526321617718341415931415683837830843770074490481176348422362162861812661346849873918814224705384024355691424864367748319171681413896659635516678441852608440834144162761248958567982479001381585906063881204351628751599665209292094281446522809539191841105420891950899912208472122984294731662074195162813392306707005283151329632622622723286645815527491117005404146816741085203466335075802165744347567892995323123529815454414242781188328567365653543913086263285794736485546877191137857066664712691746005042143722635223400766012268118857311779477233465292274708583508374133748593182509627918787117455241091542819813359", + "13.7293684929565349002814005023543592804964690316913354059740039921737359962110066836654276807236804947742615071427660872700145940238401829666198102867564430983532833968203866397021274696048511423964516039293063346841564372616394035280508377589981815930236172110027155682866173265957057116847537224889132966556719926804970897774043788652449326550990615537122847783422709526359447381966087990633802534575460646525162074014459375015575284404496110852273022569124875729765365403159702452906368625431561932846108624944301668558516528560245529919672218971472439887445983944036799046361732723092955509961768112891725995232612851753679926819549883820603865511609240878443812730667980314193974928566404533803735999392509746959487652262747583255886228825858553626132516826951392583384852945025156027490339688398663126302073252408620920771562662203031820882241531317431978536601598095635063467881482850750509513362287820794106463323082969988103776574802747271900279764712139419063517288236941610321665999875635490491168684987282463547798106958000567974010853725420395569948956710379401344238169278863002835967332", + "13.8433071145943080802284382623942725643459634316370295832402490811584690521837914916840395377602432304386346321516022467700817063042586192089471811215559491096430603765490105342479464734028031685014017988597008866099563434747509151656359907403458022227708855288944495192855866834164923404580317751114810233440974813740088485452355904551218828581183511828392819322800423143611251652965268254587551056785058961962030307952250857929384076417852708688910729480334385710261322295627380646587526400594088017012104793668923859704481465512725231143313046840031532848517753228102569245860823651766421422437423742518931925679240338180398466042655884199628267998290371715502966743259677385997995351151244386978277483823663420757491844034607904266068469818830496093618976553620949696221798505339106720245367168877405376645269053274617909080172273096809275302452571198400347118006550023013802032386296495237116432503947861118574507348019315687686050292633217476405553408632695073744388341821217781854190838168727859124017786167368413748894627539001773837225674001211236781270826204317868935713403376698315709386501", + "13.9563155783525897163028298734019451091984537120228258009450472188267318438067135063202368534135430885083946298549306330756477989556178368665622436754180093476324880937959506547854538083370019416256575776948316707917842310903894619857591393548227911657101468449311608259623964684665016119377046647048049581386101096936670413063222259162339202191273628263372563875815041957309547200658623166127371954284217563921132238888463255849732942787630189806285692737078454631222616459782467155377806421107402656800251572053070998411099760060179547316216902478018563990476197410484317348357273331772258891407220597320756586444959820203436442764666649896682610015685305787123195940452350461973507211933252869415122355860564522872963830841829314900168567809701229312807570848373079796018588703327116777837136272491150569217486925114594308036945621245791848046986349492932929571328689798094081442393417715210813349185572333277619344160965594558435011430506853671006276522611925991500789685436288350432338677840599188216306552667639876278614865474090999682755277088033035543967117665417559338997296158961230538684255", + "14.0684162995042542216674654868534900853924743962472320944901951275359770399233794961508506556929677794549617967276360905381168930018337020653807687724763883010138302750489219880498862993622224095549373405969163535890073412613574826759778017493325279749388170684537388753850910851919272805375112411195909352449662070600051584320215271787478297061945044327159674754973100028483156776843882380652479233971600254593710768026548221752384413741309489246040289220352899116307815228866194939899432434878525491558800547976779979683367688903278732739389881734067014259394063217746106208605190496361134584948172589477057133531025440786827852253824524160548403487907421272973290367703881100721669407971269434798443550172625237114659431030829916141687040666884696235625814564129626435994637907086882588770755812283202784446386224614800747923981140905500960288869620470111613554587095067550976879563417478116388152425814195901924622311843539510171658250266502293689578285040347337973437140124945630951972283147130741281963393446164290359192448952378935001920557624942274221681701969732105101994763264008622253735683", + "14.1796308072441282183853398667291614623803956489790970257104623188232902767282574509996052539083573233298145889942605653298892229257953808202007496768222965476963015892248409827994013842316066098314567630341437024013971121228118377641336015214818721486835757959593011225113742042072497312433546600072511872609098678198012274693439183149268146912703636093212939100804725391474543306624788387699854792164372388175649060124931797401203419100884488639690168576804829763558693789223729096647545879906533473937107656768729633634222862245495581325600417464454810033071730955572334520857335510665755434348564981509217953643371995843993660518911909987080474451217457122342864898645198315616289691926316982991152259678255881050789701321000503460803572510568774002144999754447633636924860956177391322005616623420647924346632052977845409157572899855099445598306816404917155508334824637885940574334850876779996796181107939376311128317312515783517827307603440171245138674643140940490734106905601363012333078105653542123345026860999226152360678825610735394879178469695503958635098408901004932705510782878230077100909", + "14.2899797929645988880465370254439290463492686909646365784756651098966688981604710380521849261282420820080718993444184921140050946072295733777832552069831871497137709875484943005092844538329601721866028257517525127400112068229653107318786632214087321828354194286744189213884282476820178532929026410946336549250316411573632399544976436381304928255592757344082191936540818455775028244579956105065883479913799108021321113869783952904182528280242051379454218665561448727584030626615636178822706926814162499131369332023155252856087861647757703882420420084149242345266216149260241941567215880661724399293386262636274265942504563029111804888220594251821006906781849767633589028769011495517300679816156698760917682079890665846007154923427386849193920295060178471954901369186035029069580960675884569751521212531321426347035716993287569668349433572526231363707210075671937119893845403234179825305216364116472043430327447622673443562491607514186170086950732726413599236608453920182597620790203604341499252603323429275866821091530657037950087409657380807571921060480257877831704466578263052537696771142883837667113", + "14.3994831552013127711282056937351191001504093681728491932833832593979434994003430971466998201017992112805329010979828688660650916169722207860723532331591812462512916668982966008728885975214700393366748922112781560669442805260850747279232150993153692443149737581771637951619052246592314537389589547596925358885851353137852240888588511143973759301432800806312328067688373837578111007355067907342413561415117098106229593114120795475094598890952936412656420669510625019084604237747484641036400610081271857751008108979431957256358635365498727651936976456111883065483148617986465457792466402273815217241817163501352405823111497054361243886482686577961223780674009485714921257768842405600740516816638273826990939617065159558546972545307457270500896948955482426026947281134410487716638801651876698608693876104397820386663227664888754028406305427233767301780066332483940467863387166158701953351518332400189178702153049021261024299343478982543905250789402003398874430729393561464367541193884402280665307850918818544192856877565661864230591257923543269259287766045586392906627455350388206936516877511705006505488", + "14.5081600415254637821968107724614159379846815250015966632796986302946639359084284397562134794977873371225673488011687447300524372638777391491271044047013009672846765153462292968052361902815148016221806543555516416870983561046485697445468525590089690561736144515682350187091487327533880302736617743526917603555494921673130404909292620569107730648244440333842777280190694749887082191823918012255416939347228605499563575333082299453802606427072078361952092566154166904748856523531473204373911618483373304549076618565708179979210316820872299882348744668938414281930060202535519438925657354409407529756410826043868530687455675261372284869586600498214736517437102860130625263737648428644588668437974421283838793145810608177937448518286819323950509354081962798121406813386052183361387375237142429814580328643754914782720125219937145864600464244591497580867134545593652723923600055555437968222771839658325503488203860238775496018875409219820657867877489532429308420073127288519458470515585824162233002589242653827817278322155993680288963941768325132608929167231803325441134141466079523533004874074960297398614", + "14.6160288876324385915282082833965054491451514454610200902394687979785177479643522829616364603240189840566860380268224748399753802405943005392310014953070864465023481741203862559161940023086412200284446473311773218020713884034550394274956642070111944572452151925229164138208667793489213073745951939637376475072238046542165112242929720624283960415646561278977194301782816461600118545055956802134155907504241913799478483079002103747080064163279210998110147485017332310883903664994279933307864561852715983031647907050130006889886745790117080604262580893840381373714551099705553640113221087389797416689282779302152781657206661429673588858985798962970236527448473940009592181110203110178340755616764069248826774690236853289420767334169479100200273495854179775154480776286912775449612542711928074576553201233514379922132051999344634460933918951031402916699819979843036301934686144731527295916388130591787688603848332640080135877157352065976684603109296470843761116064910386409905698675285107464021939356227075015494978348239956711905571402049194421753904018717527587649996077266800964352303624402577118757550", + "14.7231074538527950476608918508913485210193928960438010156179716284477839899656296406728660773561791479300392640548844362423376122815685515054605750659875846934795898267446279294839998923205284269250511553190404067373365705229426342396747030473106863384763359235329631176350397962888021561481413516660292977014970409803172385929807914633372249932127302974588451306885951998924516950174494016508742886729576894104195203891310671564861400064652564905406159871623321437476286879872259083518836208723342177364371256650666793948295098750435124566209886842002880143316847324199429697285209003531473719741904014483758049310397090719533728097260541450500261317080346355382466832396046849587639939461239781658290728113330095841108422751523386313998448194981539672857289889090299694644812449713503451035671101363587351933041787935726164774892898031020620075494054191750748238175302842601156452243294124366476294688491666489019848361123258726182091191116324806207133930412068583323189688687308435693004227410778794481033787991938082837748996778982096020946799825701362360467247804846582233346459021849435486394414", + "14.8294128592903342463108620791209811162154136750542777284601531691224280305317915513146089525434202545204740516997954296244402311661887141413394532911541491603071708609940180070016261017915762557510278422457087524038813467378351272004581598457324467747373030877616178977537315248779792746942842469899245159612381076176060345997493587854288545462033896684057639832634271247921538572263389626921342927751757718681583536839938535751092658431596624136867197010308317749181005637423090876543873298238850113918296817041690209369633579425326504751223838947047626606883955090485790288429021610217101252189548742578539077253367329082514118063765427191960206852366367930126992346062168587627226173914689723039724555064028133389228017987680521282524145956765953246086551097796047782148791998851951221419883319817993999053278752506962511065678830257218401748568500747333591882058597483002531463654177181720203177842917132707292556291289892843397045703928170161651798774202385266858024628481292908429107158745626477532254897607152843489836358490936853541807395474017791353789095258403694863885903856428866385139618", + "14.9349616137730772518742205278502213908354666769768829412154208873914099415699826430905240500055519452566108757946045864392050766773281378318859154769239371884763198843033880284347786378856604370045769280031694584512791649322990279975840486835965869228399135416024953621164643532400693170358493033550812154255730604795122027373166382306083361422620489180286334685541856384068029463428651261328445748342560926139564774421725776053820917605563776256951832599871875185183132937072360851486597203051765984337363986545459745401275505488192448731938753525598111844098064910555199796449249197864727749286292996338718305630998619908744286323602224649686053449748987583874785327499948813912602137839272202488683363930706928086605262922617223633664247999608682512707009348695830289960455591428363355858586332036652696876145134314146004076987087103822970399358514255536649174532275760391584685618135079679840634515711782148326692482011033477006288036228152078965813370535741600755067904328039271925962758975702936379448509324264036066209770450856159966672496255612322665295729865499903170425957082810506551820498", + "15.0397696477860030144945917088662715180419204436596298997795414580537619276470518496795750302683435966960598359912232778691979417087604170857471339357968875914806128827487423868239668258781196328158829014067930293905548139764831766780121016782020549430650869364709405736002482509016517499087673550631711895241943655599845471280944381835142662152324894870918009318555850395370785744325805635115612824121714311554984178485987071523130059978461157895518735288230178080488091738471398284150084865371937653513358898631189129088281619129601787714351761094285499474246778785178627730928100052820335178118094485298540301817051152783369081590502589702221805406134858612454692515706806553394570930351722035092384749695378201907117685274122131158052887362415892662849390029026033965056482083854830488981110682784429900915172219306234004099363300333037817894031519149736675537980617386623663320490641182129254906815604059543725669871346028069397621898119057810818736095370601335065657301433376254680794313020349062521396509775307772376959952905436929593487060738018338230316410641798397322476355542860384513542506", + "15.1438523405392099196696941526680757548021305645205291142290551070202545969870806060651771792665589490055461678011089894664863226391200155446121001161264758488222957146306674042780025430540877651260123695207749882929804823786072408198311834035741094722904703994169074927527266054117152533255107532619942528281884626828101541096773239563535294095652383393617113444649817226044992144468812474731988014146393516008194986121551417317503118242518823714684606734325443399645596959933855453707336231367089097896345978026922587762215370241399967794400041904056720435869378522780399983882254234030896553717060098405070969432588607227990450595751600391582489120049548888787130887917656163272514952919890907132626716845497133112466950843147056634292546916486178521992255691504244921986125000809530997425200716615625657674011024011250858696591746091527644535689099940477872177573673286692409322089652390467243801596188075140733650997142370201841877916119994009448748653226635048181819256281784782880874622975340845523108222703652277923638344521781640569055426282343260980758922970221905010015543051560514662433274", + "15.2472245463115253370040636354083283666887786708714985639777668988830176955007183975627913778852644689341469297550544080185597077331715777153346360021007242495125392214774851264280715894226066393672643745253857483137929607374086675166192281961765358804770989187738591443219457532796617012663647789609431774075740567432008038961013943937307134814420860312306044163504297043835283963554752015900991148417739158394289066018572722217110593352847089201745718938357549727957979705487561467680940950578965108092971745951832261598491593612429568718722411875570411732507363965110669584642166670193068764600247928278340651032872526563501469069542627171043818450750969393729921266850657068206236571831577209919077311206015198636883915870987141318717046234082051220681758363352349761727350749598802358775860890853785340760259057433823505166593652654890358333190798767847250596060513312651361844271657521510045055877766996925314299833842766830666961654150747864536564429858555272922415110649733857674682620223561453248275694304210618254529601023775975491296511721889498789622849848564452286751061016082497088131584", + "15.3499006191973273271932743733389729106106465662646172680460393169714387084447557470480954083233770880379685371224630951351727147025497081082089879388337460847605271660715988291396374847634019968015591655332379953553548320591794507974928536313132140565134911057811331918478115692690902657513781466327964390558905925364443191776886267775090535389272723947721917202602879066426608737057083329758491682770994310428321027233749321777436014858585199107035735971395626559257243819405652335029653770591399178721590892921559544649784504159433642408276679973155389005350337656246816993288749049548293503305422189192594259042858274455047560941579251477856306294970704330271186897488785264092623536912370835806446753257171205100681111029503749113972588676479023379074070878101497336800280410356924143787399669535027376058454568125882734662103842745378855390985776613904203513017797747138888437136968088396337069879433887912538591669283312778213455485732955595524676294450606458545443919774430029550468739232908922412573697555394576825425670246864782661192745625121039099283240722841566743449202185347012194036339", + "15.4518944363733046480094895714642432822764116097792743962905968923051434278273216767519678368256147566495033878636454508377334372505840297952460243476345514701393821523863781406748742704716992949704447086972077248061651918445325061731913106414390710999384235658960798983324112234104659780681677057531882860382080238722943298496230509728345363802492358823405567182598267341768167330142056290790935811977359414090689588039875920175969152935770254523050051392422780000072929490482155794529675141588626785387839003076240285297590899692598611212948974143071946012735043590405405711508420740182622735629791811546902131754304158391375976203350556228354908194871652988791982508708646374469749119063201955850224934760173840978540631523245165459130698723874391791535530500096570481656934324227197278855637657017693124057969321411825957010121491871519557762634188278945281706669785161073963143541978342157205033140283815645312514465796297186749713508027712528205500701661239403838639760963454035559115496453338988692441465086270102708432189916595292275910127721552152009058942505984180320198848113154717062637193", + "15.5532194199919290973914478271101509782761473427556110871326128562635425877948922439065276333739001292422317859939226322742544533781551368669476914135913677167870569871992237487074670090250710391585542749455379676350917711973517231870663274531838871780463639607198142971742006771650734656927254936190760891498433170178096075966621078837969943641749478412326387664953246784721461426256026142642356786959544769333983224947181138296945030840334549653119000316260143077956508210419522473362562194412180815212162799927642323378945617932239804210721035735661553698229406968222610664812153679540697776845028123042956550110363507444357710659863250974690713371372128989567244046052322175878868097778138345843971318806979435481065172044184336853266870505659167792988132948583467977404968694959221486656240243417746389624264522689502159242881137811206933660406168854853625265097649099854630342455703384775379760129637369884518317406075014753125436006487026676158299533450354777908097205026564092618416813042451075357865075958584347010560603909401672674530473016380690156057342486458799820056849296157803970758151", + "15.6538885577994285336615322473375966991656095021435737363246099636760165366202196502339470259559417674183944684300887447920118633727001251716571523443596918848444675379732072543560564133448336770198458947224033362634921875944735296488201053135882187385898631210771646381454433721775116899072292857866394011427204808403618078909248941183413487233021402017272788966706121586469579730897499975748868490518551337318808652816220884250194097501134581362589451191335370815112714612837896607752466579681001969484402775834313370422194201064429923758665189369487888128968954146148578820551889951620171166054882708759173934381781451338459291737123198762967272009330015190135251071755806152473036989743744301736751164450587318893784207514998879026913548107957822584996296731105979982593758231329776234669559571495246544966721659816165141685360821041442768655874261766471614879723279695129605131434774277154659938308116466122952625429526707433155213455467498548671879756157972690042396634723002326783535035168700456971324492035298595293576869795744389366846556161860716979752870417581809090754427851499367674362389", + "15.7539144225679246209830112311867562489275000482982979660467978944730262881956936027247186896733459505337734582610770093614470487327551772081823931905589550005108629069012648755348782514228521197088346998693251351381154586496257153314478419466512135062477857636559546187276312380852109985976404783376323163746995587475215213229589580070616867837675337919606283901588189302295510731616001258677000217918798250564696325480908966629389997769717889909303798070409227548291667767301493099723866749466998823232247966469030308331085073105913646005885136696884725098040065704027444469765094470600930146845779530531161938075234915622678545819344667609350674211649145259963974499132458151510972295814587234589477382477724361318542752546281937647008728052174217050786598039517009852677136114528982242252373617954020044735443912957185708403871758652762532215592658585695740093871059422733899587935643096714258513937804831673775551390957596911031295963904326636986587614829199748400378284270489821119258092593559132400132757457303025648114989713809051372859786312670557557455024113430415444733469786577609605818156", + "15.8533091904240440533801150604807321260894390255847791708290322487869548721062866289150967514385361249309622591731814144915462307294258995039790586215006939993383983758776850046561092349884695864980967491417864933460813596552839148807057208618613557599377913061397320925659394501750622861864171880053557935005392499447778008413317995198028835874078756300521482179548125620652788764854972999687177405402042983731431613693788787613752177711793270302761736067574277658658787903363445166365077580601657490510530290835637982971350451510996298804593461238015330599519964118988140999455569019580613714105164866493396051692919035250861649195973033019817282972152713586938088500687115272282682479043225493555090482203878517967251561713092119554643396372535898649907805934878016873123756393954615387951516173102704296387140802792650937087349547235972359933788305229551638870049736359516727540333980757675042737103700554746326399085275428878409792860763156503485547649698802164314596132917707378582313164765977101027311129848967453806648036945112397617833423627052843598016874809261680305673980351252655348374751", + "15.9520846581496442456835073500703066451779451051014841539242701086762015613192896323745559106469019887460414126185431359961253757915198034227258433864250836161583392878779461056493265572605574360603888584134116652015717511381633174846503017116671061672690227704542137628252959797331559476487739925081575856685236012972763809030119081042926665276791590604864556488405316065408861219952886936162336641184918936697605192640548272076353846488495049719651439648905433484003530512876695233728489114894850158179246113864820837838500720026182528991300469647511661287205697325018876335964502449498974863642135604197870197848793495324492868083775898735465533757619639262635723010975848105068325903417106605865046292138037866182138413986125566393404019074389870752413124723753587841540468575699565237256318701348228914889961059600076085302269512336986876298095168455531799946876677717621683146126707236377496395703746431798350019356976580256457555721053870192650781008973533558052075870268801533388874712868860234888763155218624129421405763678812077319239075778407441953464485710013630549293699630738008836738523", + "16.0502522595242423047658196757944506380174575705759839278253230321445250829639481910961471931453116564538738497439478557175108609739886591120839569490500534822875304849736326488209685631259797055597162087990625950864597269364766964393819102203843223113243118426671582284256752979792222658121065967489791739897901556464359571005944335246989093673473307922127953030743811956112527855213800208534921642131401366328104759081292508449281353427532625724955074014554055167375410461346511957866858023371199864971286184642392511378752324547642788064420065819699737323404789938130114304157002506318247766787276624518432056105705328622750000206435275106450682964574301892472715679021266368586162764998585907621481532861299023329709215002403001723015543872591121222930217538067739593739604698257682609428654874555491602494919829715215979019400567591170934142751177256545981785724618392334660345395676518512531709484372866958613593771143352725257746445919068135186009397759278633269127719426191365945433194069995854695522773330552489914970861258642696680947645047295192118341734641074275298677776747132725952692040", + "16.1478230807732358804057911156359975578643269683364195005563293802325983679008984974142648714564442396471730040316476902098875094502600153583773509818474040254222873787323736489817652011370386406266250541511480202000072979598788155627873931210965950356003142252258291831141254744970185472236595284729309004225710563295709356523567610266397233789715267714804425396668330717742603267969954704057766975076430627334443597598422164729733865234176455146920250925398679022857258803104782468690438474584298601058258695871408692587584948563444892617899745726543714797413684357745555329038056593572733989924153298466060559153513812177648291034169614177512283257755959087939669505720323242559668932499003542818847651691092512987952257177634187849222278857431112238824103335198289105119122009380272498965826349738709572199722545419521302521285254070487073289909851344138939360922891594389079867498143873584750623589649101531017564978708138390620735321513779148712154176474583208544330503651654716904907116042682578169464107303714557388993154579350605533888231564568424188460142954331592433579506586890005695885131", + "16.2448078751809998755011217158068981074812938780376907934288365969067715754580651881228837648643879607033855368102601676632453884110903562211987202416395104068878916710125029828020978141971790535060779445467814920211563614823717939714231027215836135944076544647046307691726601906802103714211555626778098815167697410921218478761241829171583291214474448114233960671085832117529951301204663394172136901026541390977184829069626833926547718636187253278592953151429123517742761612159686867396009176772048429857930463378251101441506406781963593404431204027001757834444765502683573406073319506066129116153755917974319966003049503254536949291575688824723118194707260626100046414546696157059690148588275204844439191014730591329648048783886231915330055732155912797736172314922853100014380565619761622410826147387060234237675537903761684317822710064913207299936997924979239151897177602337621202867831218951358431546933181734907743029920468572483019023238760589912132344481868708100201604097725222903686108103206060682150910142819984712770046957870395535067746543225689701565797231792048627718784232710619996958175", + "16.3412170769233839606963694201612486691212128081356542739834914529370956581095536199949227667563196669751881720330847867749383217493562824508538192834810436530795251403748280815986888683090444963568544342830253998350516075153587022434123870840098964485733650438270480924257439534833868943235183119239136909416092084248849001763157362588633568969048428387870886333191418072195613026763062715704979389513606318621766300613512341969898200938319702408657590012474789777007123467808768282135872999150490149110158277006503250724953661837621574840115483372782860303277647284047119064007533593648396594330123081102605014990883472685835045389875767425672113541605338848610128464772662573977617761213414690520480262408650017838431407962017900140324046253143316145470737963355177005851379248147035370433387833420553321888460391167558380062662113254804107448975955978227341116496076743206260952106365143827443135137267145015186532545755133066280336384345677654367847031873202744469936264238113240447117511360963000412145400308169673233984915808549522819952866570114619293558801485679439444177553637843192666077022", + "16.4370608141699779533272474043612773161336096733770488551072483958825670966030102770671692026351162758060426915952129701085867802729318106406251695179863885464546615845148228047143539122431375925160247632834389582278394024330480487104411090951724620355644351152169170545009407362559853715960254174609992367516445002937337915452344034027633137804671869009243012191216273628143810422653645542449220632441502889291380255597379975105906010494299091436098925393391453500383425028779847395212818216089937829167091842984754080301999529208965785570901563511025237838322249140592553123941513540557406487062630678801556860907709013663182736461628834763074768624936750014768974286417533180445348738169351441886657201423938621061945983927061958409374247097943865562851972717122204967234909902165207404812597672553085816768537588350650139595857211821910608937442187518672584714044022382415383735643991420907608195400673486843199910879900829598881279040861315931094524028380978241183376771806462591007552168307790120399348941306657109189741410463773559051033330925696056841916167522766228211393262242421521807262490", + "16.5323489215027158446880825763336276539766654254272088764809875681257710901986514691251337281589597719030480979213983912333851607240138763154510692762929645134059390271108447868644173448984649545846075027064353386413401987057840078259547584916364797582515654545908036217306641693761885158675919161061304000673810487248591975444958643217446048240102727684132123680636339276356809494454912918773518940016680535088516253123764670882202459282812565757616402645579638779334204722728987624467180608880772319027534713555789150175287611585325048568498467487723808179090257348438123807077849594237725002857165318916587733119054901238012585296647106745143265490190013740659650259863719019289349488568359299562334530428982968033376892598005685239623058868742620448370226790430347712128643558758014939672725409586893221245647244200231825250935867451601474997763673733348363862073700502793354719022161931458435920378330557182605440069878979638381549353114629450034341931427150761577849342839121295284737993268351881523490532278330519022627550209271545051013287036978208888323804801374289519895876593198148288412392", + "16.6270909516939193588113275742453455057724907893471837248190052277684021812706093859674562917358464508678944731335671312361111528635211707981851761281905390428651253063365857714873438460026982265332515908134496574598271324405852203598672867489333701087729773656692255479851820749532099278033668844157411253338256984189005214039791624919948530833113525770673128187949311061890698199891708014824055365136849537030748140516534893460775625312948474125099589563910528552797986693601626798750522320704550044628942365910519008770640036921561300268413859502896583956572600382670717293799295760336680708266640050199950546289960758721503030196132687468226676261182256632215649868207453902112403583378942883517958418243203582422082833178466365454545310575197259045841019912565461611247674091038326392812565767346243460064710336769861695873330502452485176311239682300570315470799685242592229377370919807320562394172447148622490939677945521065046574409955795556738838394520031077084414251361076203172937851582781189271677247274081267854212505982365846174249067482121520863646230241374323178103657911564790192184842", + "16.7212961868837069596057427052330107838993265239842708646860851842703326371466460550285293861073853336430183927150625107744808082403658130218547877377223408626609338367841882539006706085525641360251738080907390644127125042595230279880637143368202331046893342048365464875596596339640431519843405480605327189233621288814329341353255673008710460439879747397502025941747471573127868412038250150005699065690619898644879967858901930028888717317423009915633225475656314991246247179300655948036458387420845855288877301555946710757857081888614708196039221016144384209347600898967572348354997689536324424925550167367649124956548098079407104673133738019223267238283865985764961736835718647168600253346670325018729936886914389649147361585260144938350502362779387053821926782839707071611980639055740818753798912061341260095450383120266085280004484309135011098574017285860156410583019562874766816141902023632532127548071497727038984896353454326117060152368514028177470621582059370306418123530554777252590192842881894048535435254976906742189935635359698594705800588739642243011198473083262224352068070947521888133964", + "16.8149736491937860979338473016064026815629713256323497948750601809568501329556639230091530125737561218251440117233688971366626226619494552699934840033236354855838182946899863935935135051148775248339278515431361132281679384204107687790514630925950009428499533762858168486928997467661567186100299191698405789687931448311811106940799338769819016977485112597785266160291200218493515224003641856137869046817349736860084136521100283230752847231380759335075251104980538366249594135868723508770265154137352284134429841268968217533402887160211021542302759108278289630550854043783744185492975265706362843229478657405729545441090741260159076361941917530778082026439317132083178091065099562781527891889439614485685906543894620100854938929972296809305957708892264846534267896729102201515793747667010846289314417299727358358529077708665332354286589063320334666559975273340602615325426971186711002042629355909063066914261841178544815216158892244142405490982903749738628073534048893782956355157093511439186949168195503573717926825734468084712589410442022354120219836575476305852256521675584981012952509686818126145279", + "16.9081321108119800703237241338254436690744863062204119333243683660599775226753565893209713389767766163161342358021127981271381134650847016286405604432987298022336098638563576267935354939301846494369816655337783246226209880075011315863553918585959135040655522896546602388719639509065495093614444330145112109456097752772698468793609700122810958534616000768715917714125275538225625413748533473685169190832331617113246579894504494307284312332165945233891016849490928121382853036960384597592081111721835630475340517447933339362704327966786541965781642013462403621512902647219230788448655730199762241068447349463838875501396349840327689919737332595302012041802495467706531267072999713901403393223067607382639770962103669304655143862584052038284208763832029931753811022041122025100304848953045363327544205876760304756720535938198106981928743202962212743831014622551526319592553193580573329441708624935281603762989949456873712545791427861490109968314910368234559629841124132807220595321318685022115111820471491845170412521830502033004342105561816928208532788908700951934092518100776316736470776442731692226738", + "17.0007801035793936281121338813371428867974374892864315366365045182530749574622712707915241384347920699293353638201192620301921643313046316033287195368236744465600818338279114167561421338713928665140404227014843877263137439279436595462144971591867941134682123131132347610099618581532784272896432738682598070539934802196472265692623169163830620747322703103707706888841879278208903105409506874013233395298896805581080492544955643820269848540883869294533510006353020349957920715014892361843146242577547625252883154835493940087913143008925195857805360140270418585825481983225958905442213791260106363149613040098659673146882019866732435671376309178138376480369335069359192722225011915819361568401764846284323216010823897735267747840800333035036264285169114393598090497354973291064439481840096277008690228063146037619643429834761658442087827165677168899338925740605695619093196708013773454044065476725273474616759775258989343235256991100913196459365908950267021754881564605943770560095242514851607841979245586880208866747279307676303889206098080334141095498113120491826011797819568010033703314385766397392583", + "17.0929259281098732308568909665181706090496358902951216052253094189082758184705768795728909606854105818308409911054301261308877905438819451701225816708775064163858458811220345957117443399486918793485162274149097723524277233813071363121925271943987039923392571390254618731212423397735256468820990712184553680703600120940437674047217109360209678344268629771031575160683542930850707582417669810552350662093148256275597877537621451125081219588556687019419120479317429823172107590283143446497248490970649768152464725806707130059311761908605648006129152794658287289985756220544649174887465478997809837771313116429454050449336877009922282134713999375548742678240072088620118531202157406755008724496781361076606758611169943346574996481406674965729735501106625955985540926899693816341047327437159278090340558983247348348622180363741547423011416478126650485047347378185921229539834418983942666680991963426108094492973587943493986808103947127419030775318104983559336517699874867642430990267257306908318775712545165790980870833770357342634597715966182879292691159156387989718754333799048530940386842225448232251458", + "17.1845776624693504399278552427660121759014355872173486225007203824024372840436910407549731315312720641661312015514244338979423498353490793511266853712442843525886341505446387699669856777170226001440090937353259650728051196433419270760984455065871632331371517893432279015787092579337531691612539497018543844203336945831070057415570861416522661341142055293762783441277787020381532046055783982924019170148071336852167967942723659657524174803803803905087308384416784431284819770363195053820968301578868801810080541678810607866404802296225462621786603189632403039176608470841164659717593262258932759900746120866956926679585397696382726469136456383993490336779413736927110713121992182458332821162549136160976369409523883489900369202140222731089221360463387016825261552399416009215359001253955577936829021948708246676341112942870776695271407974775582902477226815721865733052145151608560413760572173015439460907252134033256691370749495569198954137521453923556632774376333569072404958969821817487022660731421354245851272428708325787898296874181411803997899332362008586913072670711064770984500148015011826261837", + "17.2757431704407540851904450153949790380186687458654220684915230386503275825407063160604517288734546119505644391694970728295669021023983949819859759900830880079629779705059154865670128635551815720536815841099639525614851417689538084914680867424196821634089586241442130192038834512446570011888290802100133594182555986337723487386416534433468263224465623305274641330130540795411919391711267934371941107593205550581646424497484790190474300721785629523248847972136552642048161447129520586107875881613551369904113055686380180469790846706208691893855593511420750973530511165283555627597887745887134627634145517416050748158800890514425554639321377870923909855121500878983383395887478657227223962509627436500904372492098670589675883214674156834456454663362930882283624845127465731275714349781314030602882871329526710766294672136474269162102821374407938659858184740917810129868058466378108500499655709083903249046674366509191153761430075951411439469754773409282874508134728609913829574500910503209081050228705417132900939410588699788540167873020190018123072161219964179184690554184874930100756126982018853834025", + "17.3664301093984238247123510549790984289306134748291022474290958664888369268710974860027907576347723303147126176414184787060588912832469046111702601777464890642632251154060816817161334316918823566501136820770035716334732686181613705402325472307650116606106783477061012163011204623322704865562057283124639475372748468035585007316914646119895238476177895413281264762196817540406728021584836434537388272205662532262621643283471955600594193213418166120727080989351217403325023680868046291273159196135079849504794468566646008463271904849506404907608613825464391989145962661376690126496752549886760192239310656336157879887593855859958823309866860061179406457120429704015243436160532979492144475251743461081570978743884248426983196247351207081556692289758666519927916028959075589074583772201210742744694427687226168211338842746789032366011901448502121835024794286923051973016164255684120993153139149490806320653960702333007936217638703590917692418814222701997158804755501287181232079015044179490661098796848674027302976104705585992281369648433223442373992912484021774309627757116258683761986486802220878937797", + "17.4566459378143413191692225015426086274031136235582935243632385313858201877701704036484032520749642131133778450955342272025602510829158221972777670586061661701347328186526764805212080639525455982292015938346325289124302844332447725669617702921917808500525274187600536620801147819163613587837238728871997225991025080525180442534466864555824862414662339955733621810264862776187374419901285240431490175974449378317927398381519709919509933689563116335690204265534027606560764875449531405967998639356231702870487782798115026659692007825259723146752469612698767331463901780062493519689225278109283378310274389559679038834170680206517259537270404175432248633893701903077868034694197984698018454399995348712691476944938462701653906803877183551688371651410557476681964972950883316889946306025542494264115645449898893118484226513921500673490556592825150254681189771557834158711489644867165103165017573599086205249218767497287654393905135560681295542932352259490763907188060867843701402082704725079265886683176519491584308173914664681606671056250177292407244890772315688524722948557271250549147036005452988137053", + "17.5463979224170035169103569936773167710489071842695682164094650343960555822548938246261708686464008628120698086564271575140642653268871532667049895917630355233940483632068661179612946301911395716185300516412585342889806163058970394576807852912357307669092680925494306692002896260519270415602285809070330544448934264866486383161101778807666439177712377349404344204981825461265916701713439907634881628142000030147481541566984916776985069974871350878105191169601874427236107028216631331508432342933927262432252048403053983936328555651202085666743721276666416053287908582708399019416116728290391041137776899514963685453226344913930595188919687985925439640490668381197141268324607645626999418743675707607782207977941235558303966153142486351061701922818541439990955033863706292565895764497302237144629129915168217734367589190606338115923850388544120876370105674692788127644053617727607207239081379150797391284871402801013281516570366080963892214472234112621858777932368224243266851672272297127593365190407239608295928071192401106453278389676417859068237527688061268702479082098130209555748133337115265799590", + "17.6356931450223847051632626336912129159953047631160231255194263214719736745345056574006334052947783704789851124650942357806440283438448075865374177648755421744889004812088237415174002112721888433569481184443980026560025069439822330036408245659699705607208167409459718244781459151859701286920686791397587316924683661006361446569736280386659169943463243969853737516308403647389899899943288964539074045777396061094245615020794569618969810767286161759163196190210263374998456288778623199988233761901113536316735857956970778148341712538680960137046414511920334125306354736321418705129785669231702905296255118678564162795574424588337165553826200448066730531304621451838136219021244379504974116096097930348202146495020513154705219076501726427281405053157307369058563911985328395372478199002802154489559015174957595775902617263259894306671438880488104887489699278033942889387921168112741333336787578922278486757542524555357598873580646861232908497366240101359399679018683387336026768844320636768908505456317105807294092097672788610628498171867123780698747648210099920520967511623044818811130645542567309932834", + "17.7245385090551602729816748334114518279754945612238712821380778985291128459103218137495065673854466541622682362428257066623615286572442260252509370960278706846203769865310512284992517302895082622893209537926796280017463901535147972051670019018523401858544697449491264031392177552590621640541933250090639840761373347747515343366798978936585183640879545116516173876005906739343179133280985484624818490205465485219561325156164746751504273876105610799612710721006037204448367236529661370809432349883166842421384570960912042042778577806869476657000521830568512541339663694465418151071669388332194292935706226886522442054214994804992075648639887483850593064021821402928581123306497894520362114907896228738940324597819851313487126651250629326004465638210967502681249693059542046156076195221739152507020779275809905433290066222306761446966124818874306997883520506146444385418530797357425717918563595974995995226384924220388910396640644729397284134504300214056423343303926175613417633632001703765416347632066927654181283576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136", }}; - T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; + T pi = "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152"; unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) @@ -195,6 +195,12 @@ int main() test > >(); test > >(); test > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); + // Check up to 1000 multiprecision digits. + test > >(); + test > >(); #endif return boost::report_errors(); } From 101137773525a0c784919aabc078ad866c667a1e Mon Sep 17 00:00:00 2001 From: Christopher Kormanyos Date: Fri, 20 Apr 2012 20:48:32 +0000 Subject: [PATCH 177/256] - Added generic examples LaTeX source documentation. [SVN r78102] --- .../generic_numerics/generic_numerics.pdf | Bin 0 -> 98380 bytes .../generic_numerics/generic_numerics.tcp | 12 + .../generic_numerics/generic_numerics.tex | 314 ++++++++++++++++++ .../generic_area_of_a_circle.cpp | 45 +++ .../generic_derivative.cpp | 79 +++++ .../generic_numerics_src/generic_integral.cpp | 105 ++++++ 6 files changed, 555 insertions(+) create mode 100644 example/generic_numerics_examples/generic_numerics/generic_numerics.pdf create mode 100644 example/generic_numerics_examples/generic_numerics/generic_numerics.tcp create mode 100644 example/generic_numerics_examples/generic_numerics/generic_numerics.tex create mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_area_of_a_circle.cpp create mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp create mode 100644 example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp diff --git a/example/generic_numerics_examples/generic_numerics/generic_numerics.pdf b/example/generic_numerics_examples/generic_numerics/generic_numerics.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cee1fb74db16f8a5ea552fb10c32a77af1425982 GIT binary patch literal 98380 zcmeFZby!th*EdQ^clV}2x;v#irAt6Uy1S*j6{IDkrMp48L%I==?ml~a%cE~x-}k)l zxz2wFuDNEcF~%Ho%=*pPi&9BUf`NsR1Dqf?988U@;oatYG__(DI8l9842-gv z9F!g16Xpp~Xy?hGwW|yL1u6VVbxzB`^pZAhu*IJ|LqaG9WvLY!;qrpCPUV!cnd)2%j3WW!goFLS(S-m2Roa#EoOyjhd?ieM>D zApWVz;f(D0Q~EBXmxgmNPiElm6IXM_c;1tGw;wnM>IeyAja9|*9}l*+4iNSoyxt+@0z<*o&< zAiO&EugP?g-b!8YS56tu9#!cZewbaTWHuaZ#$MgeCMZUjP$L%)V$k{WMywyVPQ!WW z!XHvKY}Kxd5feR#yT04@ns)aHLPhQdfQ4Ydxa=HO9)4KH`Q1T?Lgsb-)n`nFjcM2Y zVxh7~^k#r@SDa=Ru4pY?`Eqkt1g4;-*x1;gvzLFcB1b&QBCFkNIF1d}3#1a>m z{3Ctd!aZ)YTM2;&-mIPOE7>gg@Szd}Sq#|_0q_*m?jU?U^f9>ilzr@M0XZ<=42rug zIV4SA$EcIcXUo=Mse>)4vm8LAFZru}8HEdx zr|J<`f3N!2UHC^;J`NbFxNa|fBwy$u$}vKDbi$)RJkrz?xUprG1f0dQ;@E6-BaY}G zD&JNgiy{1B{~zYP!U*j2hn(KlLVg~MhI5KuXH7HS7*dwr<1s%wGH+_7I^LZ@K6tlw zXIBX`j4LvoY;3=(w}*az-VTdlJNeFzNYy@(Kq||AYDzD~)_MoJ3>x;B9c-;qs75$4 z@;hPp_3Au^>>FsLcZl8I$So6JzBAHRCpG`js4WQOiHQs17$k+OlH)xZ)g&iVF`e^-Ez8<8b2nFNvo%*$iKY^vbG=#IrZm8`#4sonr;O62Ud zhf~d~^n4a9y#psaryFizI()u+LC2Xg3r>sLg`WuA3lgh-f=DfqQMVI$T&Nr~oDD-V zp9UGEt$75cE%h?A01B1vaQN@m%x7M6Tj^81H_pGYUcM8}4G=Nl+x-sdLCirm3&9hv z7&3GuYrP7gYY_zLl6VR}##4rXWtTRyMC7+)1JN#vFYI#EQEgw>gx@}ZZ&d5HMl6D# zEJR`_&|0S}`r!=m!xEt(`yQ>mK2$o4qgYH?@ZBd2>qALWRB(ONO%pdgeaaZh09B3$ zw_6Oc0_)xa|1zq$*T!4=$s1zd5=wYl3*F})EWofCDVUe0Cc!l8d)twAgxbq_rYJYH z-H|_kY^lN(s=Q<^I^BL!KFq!=DbO9A*c$A-`alY{sfd0>m~8fjIfxKkf3Jce>Q?E! zUy!u#hs`8^4)B|?3}co@0kD9Yq+)4J`jAcxl9vv`G5PGl6YNjXVy?+l$+g+we&F)O zJeUt)engBvaBmad;`rG?IG#X>`5CE**L+U;{ONOxGy|T9BvsJ&VkrKhMao*Cw7SP3 zn)Hvao4#kBasEsTUaQ1DtY$8F4^snn-YcfyCvKPuHA8yo<8VMcHY?fe^HI)@Jiub8 zEsH6Bc=^M{`u)Se4V_hG3a9K73NF2c)jVWXrav+LlD4)cz9oT5$9q4yHQCYkqeJ;D z4?=nWSc6-Dv&iU)^&fQ;JPV}LicG5I|Y0z<$#6rT03xm3;F&J@6;WMpOv&-BXH#>v#i z$q@jWY*pZyR7@RhogIu#9RV!=B*>eZSQv@gx&d^Ufe9Qu9E_}7oB(ci7DjF!J$RrL z2Ov9uzmG6T4u zgPZ`K-$7tLEFe8p0Kl1^Ny)+1Sk=@CpaU$8m;``H&D6~apa%p2|Iz}K+p`+KAp|Qk zJM+H_Ar7>)Vm5lwd@>C>>XbsK7p_?J?>hW(>p}5p_2F$v`ilLBhvy+~kI3Ih@Xmo?}bWo2kv4E`>+u>Zzt z#6EgawV}XHkvEMkfnb(O`H7pic1sxYoR#H?MfzY{>0fSmoYaByx!|FWsPXo8dvBHw!plyAwG&rG#SDTV zXw9{<)#C|cB$*jD2bGQYZdGa)Z$nt-XNdD<*R-pK!T0nb`OShL9Wjeuj?K-il{(X> zlneRt@?h~s^o1KZ}^uskDfa9d{$ew*U`-G%c( zlIt#hDfRDZ~k=F?PRx}5Cby+Zd|L^D!km%fn_HYP^}t|`szoO zkr(U~;@Iu%6`=U6`uljoQT55z#0(ZYdu5!* z{E;BgPzZ`qIPUemZ#y&{DmTjX{JJ|_&4QHiGpCXv=abYV!ZLNKg|{Emk!p}>Mj zfrVm7LUumsZ}_Bs7oHU>w?k*2%B^yOm{HJ65I?%A`z6WgcKk=Q7{tdzx0h~nUOsL# z2mPZNaQ7^b_>w!=e44fUjA1y0d^cb%-Ybm>uGOns>X`Ro4RL38mVmVU_K&I9t<<`M_~J4nP@ zy9BzQ1Xmn!?fI4|wM9RPZap+`THEHYSIT{tu(H9xY^PLtiPmax-KtG_X0Qysd>v78 zCHV}0RB>H>!$y>Qls{_17H^sR&MWHLn6tK1V&UYD!eqvHwB%MLgDXi#(ZGx0_ecft zM2v$d>3I>CZ#&UPLpp>&nA>gIM}wV0zS;jS(}IVLqb6)$U_@V1zqz#Pau6#D5E)SbpJ}|A3!BkPC>Y{-SLVtm&zYx^lxQZLV@{Fxf?@v&PO)(Fu>HGmsz*!O zmVgJl^-cqmIfPNZ&ipW9a<>bSSNQ5Pi}^}?B&qCHEtqxOKv-bM{nZVzRdI zs!3do*PZBI*9RKzM={dGHzT*5a3hIIJzn0ImjX=Kn)fa3YR5eVu#Jp~FAB4wiq}W0 zd_O&Goc_Fzx)e9;kkQdyUS%H6<9v^l!Lt!QD1K5~Lall*__Fq0b=hLi$;;ZRxmxBU zCSM_6V=MoIPAOg$gnT=6MYD%=fP@rM!b~-olhTblt2&x=x3^0_Sp)`QTsh4td8!Uos%eK50II!@Y2Tyt+WBwodLxG5l%{dBgFXxv0z-%Y%U zc1$8&Vc9Y@(-3o|NtwEF$ZSO}f~=glVU>Y3d4DQkj!K4Z0tb7*S{qj1*4{j3GV{87 zNk6f!vZp~GeFaxTtCQhu1QB*etFs1?0nr2>v7g(Vj7$tJyEK9IGos;Slt86Md>3Op zC6^f1*rd(v7u7n&C30aI;7Hap8rT#+^sW zMX!u0iQKVRwP><@#zIWVDE0lXn^tO9n=5>i0{F(bDl@r5LU0VrVX2=v< zQwra;rQISA-qEod^xq2;p5;i(m51kB#aTT8Wf+y2lRitf~gleN*-W(%6m8-WKme4kdmqr<(o4XxJEBKEXbA-u!r$`}>{F;jl^ z?ATQ5MfGo>sfLuBmvh7tW|9G5ewo0&9oB_T^DVI)|Mhs-Mhw)N9pQFI)-!vyX2j{r(Aky zs2Z`IADRZEVOg@K^+_Z&efq^7=f)y&hBOPB_Y~Gw(N>2*A9&fHc&hp2a~B_9I^`x6lvOg`{KPzU8N#-3`H0 zt8XSKZtK1LX8MzSS0+0nHnA+YHf0T!G9YWVfBDB(LK&(k0u?6KDT1)rTlJ}T*!RZ$ zwS1OREs>nNsbbvtV}n0RMcoP5LJl))^0LINSt`cM8-t>-2I3I#PyF~B=T+S9rx?38 z-K8R&5uVJ)dT$*PIPY)4ML4%!4ehbJ2L{<|JM|Rc+k}+AUf_g?`Am{Ez}UULjKd+S zjdOyt(6q0fG-#H7q3l$vMS)*lxA5wrt2^~{3>LYcq&iZy>()k{DQ+jf$(zG~7(GNg zxl&Ak!9O<7&0uuMwW(N~qpeZPzoYn&$3-ellDF0+)vDoLH8g!xEwgBiqdBwLJEo9` zWDm<-N{P|oNvcRKXJ!!m-5Qq zxx-C<*QmN+`o02%{!_|tG}2pOf!>uVkiT)*-63LzazrwC#Kx6LcA=zIpdg?+!+P(P zkVhorK@6k6)7F`jwfI3(2 z?9W;L!7hITmOn7&FYLnc7hw4d$Na%A9Dg>2{y-Nd2^IkB|6o&y^=~ludsB#qmGd7E z1Ngt6D=lft+7fV~w(e^j*Td(qte{L^kP3VKC@r*!Cgs*{&=W4#F0K}ids<#oYMK~W z)KuQ!{9($yJv6ePMoQb3hFE4(V+J0Olq^sDK?y&7cIX9UXQg!iVYnqXx-NEc^;Fkg zzoJH6FDr@yuCzfmI3up&?O=%Ig+Dq93y~XM)W5IRHR`WHBxFy9m zz!msh%gBAv?YWXh=C(jPE=q0bxjjE`Pp%3-FF_1@`+MuwXkyN3XJl{iWfD&~MqW6z zkE^*6tGE2Hv+G_MdZ_G)SL)hoi|%QbtC&)UO#nN@Q_g;O4F}g1RV*VBJjW^h@{sk+ z5HCR~V;k0S8n|EsM09v=D2CA=hEr$MJ)Zc{kuSH!SPXI_h)yhglTHfg?F!P&`!=k3 zF=<9g&}HVq>!`uKZMLYDjXsOObx5d)v|mt4l^}|Tg@A>{9ftZ)Gy-@>{o~WCbJblW z2mRx62#yDHx7tHy)-@#apzM5>?WCtq$opf+gyQd&ngA<1ec#R`hv+J11PNFe^)0$v zp)+<6@iHE@4Ulo(S_?;%r?cL9D}0yDGFk6Hz+;+yF*5vCd&F$Auje*9gX~f5)}e9H zsTbaM6R?=lyEirFgQ!qv@N<3~2DM_ky8EOe0VjGUKDpYwR>db5=a{ zO*T_*{C9zBDRLHSpF|?9}_(#n12j z1XIaS`W#EorKCxKC zsnVhA5WJCj1A%MI-)dd!lL{t2wyR>{nDXcxeo-ICYZkXd%eAT+9(3@oO1+A-FUiX$?ONRq?N<5_ROY@q@Gm->%v{p zr>B6**KD83hoE{&-=?FB@NF>{9{C@6KT@k>`dD@2BV9U7+TevNY;d+iLAQpT%vjV_ zFaJcHfjO#9Yj)ZwdR-}QdV2QebQUT*4=o}U)h{iqI}x zWtS5jJ(+b;Q=(1Y=Tmd-u5BBi{>cydQ&eD3 zzF}y*Ik35YjeFsA6mbgcpRDN?W@@c_H&x=5ycKLX!|PWtQXiaHZCe9}-fHMyQv`!4 zM(g531uXdG)vC3>kwSPYSHFK&m>W9IA2|&vMlSw9`Rd^Ww&Gy{T%hh@TJxJ_&YfzN z!+eVq$>m+rB+3SUkAsK`XLLK&T$sJfMw2cr38MM&^jw_Nkd;s8(1thzilh%QK-$(W zKQIwbiUBH|LX?+Os2)y+VyXw6h|BYUX(_}toLCY~c1;sq+7F7*F|3G8ozgbhcwt9K?kaZV)^C< zfkl<178XVThAWS75v^0r<7Gw9r2kUEXh_0&C6Qw5<@p!NC*Nvto=hmFF8Xf)i^4J} zjcplYDAA?cLCQCUm}}lM7rTqp1Zqs=#C;Z%Z;Q(52}c+@+{~ARax1gewAmu_%gdJg z8}z7L_L^iz~AxgF3}02zW`BySqbQY>Wyg+mS)t-I}c) zAG|CCw4NufxU4%E-kTZgP9rdpF{t||IberW*{So`Hz7AGsD00_LtCKkH4w^q(0~OC*?2VKZ%?y zER4Wo>R-=4seh5Oa&Z8Urh&?Ha&j_q{mV{lpoIy@kUIZZ=s(%%58ZE=0qGO z0sQm)({=u7X}@~&@80>`)c+m-@7DTPoBfmf?~(A=cmV+B@~hKw0y_aKaFGs*gM3yl z?tgXY|68sg9*_gccy=Hj9^l#@*zf*voLm6lIP|YLC=7BSK6Z9?VBg~cZ~(_ZZjhY6 zXrFn0=>UBH9REcJlnvqmIX2+!QjpFdpB*R{L=TevtUD+VP#EO@T{ch{_B?*02fHVY5-Wa zziSCpW>7lF{n7zwv0rq+@^SwTgW}J0&$SII|1%#CQ2uimln#>fY&UjJ;H3GxMnQT! z*TS<8qWx87AkDvY{~ZR|=K0;T|Ewd3_BrjBen1{j9Fzw;$ljnZ(C1(Wtt&zQ&pCl8 zeoY$B?4TF_B!F5YFaj#~-}U%QCXkB_Scf1c5b>Yp^RG!9WTJmH9iW+?O#l-4J9{pW z*xwECUuOC{tG~k_zF#K!-E=rOIQ~`SU;2XD4~Xd5{VEVJi~nug`Ij7^431|9EH4jm zLIv6Qx!pX6f3*Q%J^X6JK%0T`2Zcd&|7sJUIH;|F=zh1OzvcWY2AHPwT!oGoxtw(wTMd9OrmCyLLP zlVYJ@Dg99`f3yTjDaRp)vlqRT7lXot0tW{#n&6|!l4=?sJxV|O^klHVoKzG4Fv8Dv zCdhX7^Vk6|Ev&FpNx_Z*6P+9a8@eBI@5RR%LsT#b>Cgb-bV!05sKK5uofo&rz-$PoPxNMhMr;7Fk)5HD~; zA-I&K>QSJ}c?alFqwMT^R`>27V2@uxgH@!bM;;&92~T50O9+!nwSxuNzxP~!DN0K0 zhX)_-XAJQa7ho`s6?hVlgK>6sh4bF+HZ*69Q3j&ZPY7ZIKDE<()m(@h@md^@ImoT^ zNeScgD)f*ZnxHSwkkSaQFDyRtDk3o~4dHGe!ijk2syUbj5%c6UOl0%wx3>0MU+^G* zp<(d$oK@e?cNho6j2!s&K?D;gnS+FyX{-@aoMArcz=wf84z7b0%=>ok{iNM*wxrBZnZCNZMBua)i_ zGhaX;g{A4(+(q2FEg_4Vk5kI<$vLS-2sj`k3$^r zpx7s*h-t_S_DYz=4`UJ9KkwSrB^~eZeio0*mz@l(0&;Bz1<}vP`|)DaZ-E&Xei!Z9 z_WB4d;=_k`7TU#d583xj1t0NWg0+W-%0iH>J4^t;=xHh8zI_XYBz=-QFUP)@f2y0t z4Y+n}d6FuMaFPIb@U3jGIkKhl@qHcm6k`MB=lhyjYz-S9`S{86=|DsUKy!$2@B6yr zDE4XP^l9LTf_ z2&tFA(?W5C|EgF{xYNnC205Cbb|@J45U#&}<717a?!9w8ZF?{V{V2;XvWI?Hxat;tUNbpIu^VL;~igKLFp z5T6m7PoMm_m!TeS{Yrh~8dD=` z{ya}1FQVewWbcFF@iZI^Pe!@k4AJ-o+}0_lHj4g833vV3aC*79`hv z4u&vAR%)pei#xEO6HD~EV47=o(EMxzHc8$hgX_7p+)FsPp&`C?gKSPdo)~X2j{J!( z2QxgeVxKX>9gsjj{;7|`cWJibn}~JTJyrUp%I<2zO8+~bMy3-eR<0ALqMFF=&?Rf= zDLCQ=$wj0u%}g|^Zx8l&o>r06PdEDKNEm1P628zYxZ(z}e<@WPY~0zAAmFb3p5oCL zc?N+g<3=>*Uj6d(*>xUH5p=cqe4ZA^+1kQj_K1+JjD+og0-^B(YYifDxNp$I^=UdE zSG8plw{h2#zrl3M@_4-qVfKcilIc*ed4uNGI5g+ zU1Cb#I>Y0E9&|6-(>G}GVm9)93;a_Ds&czD7-9B)GpeVYWkrOSu5j5riq}qfA$4rN zE@N0Qf-!~r*s0Fv(+t__!}wIrBGxDI#AH<|lWuN`T2SXvnKPkmJ#BU#UY-#>q%an= z{I_R(57UJ%TusUnpKixr4B`eNa#4T(3Z7dLrZkjYI)4iJNb)Z9J?l;gnKhccOYi3V zXNXU0LN=&N`E&9gP*{n48aikDcJsf8S(l5m`izwmoa<32camyq+u z8Qcc)D|!QaUPz`Zc4AII;@sA+;#@*Ql;MC&JvI&Pb4@-KCv*D2k1NMTwhf$4+cZG!Tzt@oRZ z3%sa*)*q2kQ2)%0Tr=~xK^w{z-Yu1p*L&2N#CzeAvf~$biIcWHvgN|W#aDI?GhAYf zP{5RJG1b@ej@PPHq^;03PK?HSA*qvR}?i5t*WoDqgk(Lclx7T=wvn02503*E2nkWjWP=sX0ADr#wUIr?M<7V;OSH7lna=>H1xR$vNkkII7*V?r>hUK7s-K>Z86K@N+9;R`>}bsNnrgg z(mmv5HinPEI@q^bU8E*8Z82y90~>0zHuprmsyru%Z>c^Mvba;l@zVN$#w%KePgZUL z4U_2-Yt{$zuWMpInKaIGi8L2$5t%HQV?Zl-sg{V3zofVQcNkSPtT-ar@ zCD9;0SX%F*%EU*|Y_&yXP{A014zwbg8&*{5o$A3`h38Te92g?=6->&9eapa2xRHuI zlNUu}b&E$kH9K&3zF=+1@udSB&&OZ3l9~lP(qrO^O|iwm^+Wo>xaZI}w%J%AkDVVa z0{Hb2G}kT*g`1RdL%dx$kOF1MMcO`@NZ4jQg7TmNF(5Fs_pABktS3r#>V93-bW`~j)AlZ}x!mG@ zQOPQuLPRTDy=PuFk(tCPaBPsO$9YT&ul#|mV$l;ZO;VGc=edZ#PsC_^V;JmCHANGb z8vC>EV<_}zi?rrTDG1K}5K#`2U{1^87>PIfRLwsVUEh{f=X3l>U(R6+-z@MX3@3#{ zlJco?0b{`VVmIZ#taWO<>O;dW_N`|9YpTq*Ly@kW_Wf4QIk_H;5BKf15o!FV&_`y0 z)a7AnYt`w(dG#2~{-N750d*UMD(nE#SYF@krLouos|L;d)gf@3i!a2j!xX zncAb`dLWkq9p@Z+Q;6p#~VujXSAC6FSYkZ;KT)s-XR!MTR@w}Wmh|kt; zd8LNem0`Y$(4CzmHVfB)$tieqz+uDh@t$r!(@KHpr796Z1L~^xPYdr))=mtk4#!;0 zU(99MjM@q&CYKDvJV`TV1905&sFH#uTdfdMLyBBW-o`XKrYy#-nrMnm7sGzk_Ci-6 zN{Kd5Y3?My(T*Qt;StU?J325wyiX35DpCBt2<=__RbL?Q(3M81FW#4$0 zN4#^F{35pzctAUi>Jbp!?3tbRb1G?WfqeE8)!C=b+ke!IkPpz#PT@%C_2)Ng@`ELXo%2 z*n_Al@ZqUDHNE+#aHn98$^xxi;l)9dSE<6dSZ{p@Qqt?%XstP9^7Xw1KC7^D&8@0x zJS%LJksO^?ORiNI>kUf7Qmd1pb{AROj5r;~lu3y+#S0eBhr|%)=E98tE`m)-pLw78 zt0~3IZ}$`AuNzB{J?B3kJIx5QG+*r65+pBg&=do7exxWBp_bL$ZObtXBL&NEnta5= zDl$%?Z#gWmMfULFL)9WP_`x(3F5B?6y995R`=c&HieRsr8HBdnRu%#pHr@6}N!3T< zQ#;FCdWI}VPSd2}{RGn*xz}&mxhga&>X#ZyGBIXaoco8tIq)_*_3vNEe?2o2t6;yD zluRSIflQGbfPD`U1U%wD<9~=QE`32vxlBx-!_x#^-Ph7GA+xI!4};OVVa%_7NWc0u z7ad1B%Q_FoDODV;wfgkShsBcX8U5`wsbJ=U-BichnJUNO*~K& zL9dk3?+0so@TnBE)t=?1#65X%82$F#<6R4Qjc}pRMGGLGe=kFj%kRbV)cHy72=&(a zp>w0eDSZU}SEU!_7grzSG?>a61m0klI-u-Nx9G5;BsnP)8rYiZ--ZpF@-WcPSIxN>fB2`$2_ zfsop@8x>f0$3w+rO0aOVp=M1_}gS4T4HJSXDA>qW~vbd?U*lbliKt><1d-IA*KU37uY?a))`d;Jw9hCA7}nu8}9= z8LHBysCD9{#5ol_LF&4YDcUsCEdJ>K4D?o zh!`go9b{cTnqnB!ke~sF*ncT)W^lJn)T)jpFa#-4?W+Ro7UR&I+e^AC243L{JM)?xL&)i`JUMK|t-GzvmcO<-0% zmlC5jua)Z$Bzwr!-bc@*Wj@9JuyTD}o9K@H= zTGdlyT0LS{6$9d>aBc}7_?+zRJ)BpW+7v=$xSrMIv||UB=lorMQ(%{G{qo%@$$xsK zJ7Cbe&(XZ~jz3<6Q5l3-UnW&4T`aNO69~#ZV&We>mZDT+Yfje;WsDsr$SA7OLK24= zplqOWrn42+qdu!@@R4v7rNy-heVt$&8E-K!^c0jlL8K7kX5d3Bt{awt*0lKbJ41VqVK?Kzv|&FU}tR0_p&Ubz+QWXqpd@bP)nX2%%~2Eya_qXxhB z9g1lj=~XwJ-u4rn8l_5^(Q{AX4&V>UHCB~LK1?+p?-4WH@xP>hmsH*S;q0fmYVl3r zYmx4jrgAYk8IIEVV0QNXz~Ikbr|x3I((LW*`B^_cbbsN!NqEObDynSWaba0JRB^vZ zzJB~2AE6*R6^1r!Q1z zG81*#W2{GM)9;KJ%89=-1gXiT=oWY!yTV+i70W^m#f$6X)*W`2@$G%MTJANKpg>Y; zE_zEay&Y6eNgrVkNhpTKZ-Do0N39+Z`69hi!GL35_-^`B0~C24_JHDnKQwjPM9e{& z{fcw0jKG}(viPnC5u|1ty!@EtGS*dX619U)iDz|mC99!D`E;?;k2vr7GpP&G&!aQW zN2;EQuI{p5J`+^JwMP`j*~NToZwltWclp-YH|9*Pl^|IW(K#>?|FuQQb$L$AC4utZ z@FY^n!buQOgomnseN+1JW9<}%J$mhZ*3ni)VWn{kmbqc7;=K;Nxv3Yv?buQG%Bv~x zj7@uA8dj^c2e;sswBlYWYHAwS^rk0znRg>gPOFbql^v#Qdoa<52+h)0PTrpY1yXm8 zlSSMH*tq-jEYp7cZ?$jS50Zz;tEMuk#oxT1A(oTax0vEU{xs)M=M=8tJi?=OQistT zz?Q;gGl#!*d3pq|p3Y;l7pqz=rTkvdje7`<8q$%{Q+A9+f7kE^Z;_i5zvV)yIn_lf z(06R0Og0icSKbKPTYd zUlwy0xcTvl-m;H+X*@&?9L%MP2vO$KK{WI;Dlc=WhiuT4SExNiSp<;LT&$$1rQBY5 zGQBRF^4b5s4}Y7aTdN$_b~K3TeT5=T zj!cc5{qD)C*Y#X?RB5z!=`pWD1#{C&?wejcXHUUh#*s}pbE zyW9Juqo@5*+NXsyP+lOmg0G)%^z(|=1dJK#-=<%al=)f^Tlbgz_(R%qd2e zW8B!$!(lIq_~$GJSKLysIAvx$eF&8{SFSl&2WM~-;X>3AUF5yvaPOTjF& zqQ5!TC^*I~mT!g9RhGbA?oP8P)!WpgZ|!oEoT|z>Ex3dEev+A+Q^;7>g_GjV?UiAf zd`T}Wyle)yEX1|^?P3s<-q971z}q>=9j7m?Tn4Whm)hsE?Jan&cBbQw(RsSAzV=>c zwC}WFIEF1sHisJ#@+UE&-aL^<06%Ol$0IxR+nq`>qEos-^`uV+v5W!GOWtt>Z7nh5 z%l7fCg2QJx*u(D>H|#Aaiz1~3Nhabmy=q?7Q@c|g$(Fyp(SvrFHs_&c2)WDY_ekM? z09S*lmUq}dkf8qKh?TZ_F*UMet~6)oa7vog5-+H?>ey3>IPiV6vkZn752kl3`bQi^^ZvBzA-#EfDVAF2&bgbVZYvm z+;X!tQO`z_3V*otivLbC|JL~lP9kEiUv)VTJn3AY3zr2jZ8A?Nn>-{hsEp4KeKtfY zxTiy7Tq&sEyr-Ay;TG4b0DouSw>_USLo|Q97?gZw@j*{0+dU^MDp9GH7UDhTdgf_y zSF{IzXX|4Gg?&*SdxwLnR^#0U-t3p!H1Ju$5?m2NZ|NI~WYWD_IPzJixOx7IqHcX)_n_Ruq$nqcP|^ z802AkKrp=cS+!Uv-oQ zh}~qZDU4`(eQF~CZ$|b4t4N%(?l4#bqjbf^KLis2I|pc*rSi4rKz1V;MmqU*RR}&w zb8HMsm;D))x?_fZ=bySXkk>kDyz6=rp7b1l`Cq1kX8VjPW2d5gb z8?p^#nLyiz7U=?WdrzX1B(nH|i4$gt!y0<&-jYTGAgUp`ofM?z#Udc;SK zMxk*bj1IK608(URDOXIWHAqQraKbekW_cMp+Y8M0ss-KoCMHA232 zyaIp3E2D$heSiF*;}Ari6)j{We3a{#4_n{ootnHyLed<*zQRk5iw!`IZ)SK&i|pqP zX1I(z(w+$|=cQC(AaSh7K^)k|1Rn;$y>8TgzZT7WkMf@B#X20M;rNx&W9yT}b%7Z8 z3&<=x82WbNZ74~ldp9!J9tyEq zk`l)GWm5X&w3Do?Nbx@@1zwFVAA>(?iIRj-vm>_O**@y{cZ(oj1Ak26j^OkD{^{Ej z+u+l{)6@UM**!%G5`^1=F59jyTV1wo+qP}nwr$(CZQHh|&-I+06&hhhkpL>;%^Z*bJ!TQ;L7rqKJ2ECd7 z?9R|;>}kGh{y5|G>Fv;gN5CtJfv3x*Zp^h5T9ByF<}d53CtN=fK_lkx6Jjw~#crfs zD-_tvyfn$Qe}vl9bwo>s_B4#j-+Xmy?WqU-mmw*3MTzljm4G+qd_-JxgN%wX)cKp>$jhCLd zdK4wHiuCRsuXw{<)OE+(#tZ&Csv%r_Zo0D+Z_QgG_Eb@zeuZ_GTYPQei-}xxjoI}P zO@%F4NxC>&Lg~^zVb!vC5!j~>IOl>y12->q$sPT<+nw(92iPbfp-I{%! zfMeL7Yd?C`RHhDg?BwLLufgO*${LVZRxZnPj$pWw47lpW{Ch>zS?MB_7Bl-Kw0d?B z`^jOhkwVm+-xc5y?r@4qmHUm=raR=$5rW+Eqns_#SwPyCHr;xDi=i+#d7Q%N*@wlV zPh&ulezRplsLMcwy79-1pNi6B7&%AB+yiy(uKd>Fej8XfYt6mi#rVddIU6z!9Du(>_bSKUkWlMamnc5lkN zVI2|Y&nWTMALqyQDF@dh9#K$zuB1FE-rw_a9fZS79V0A%@?cYSxvO!s8>>h<28_34z(3G;QENq2o;|EBI2>GbI;v;87gw>yW!n0M(J+NmI_Xm<5lGy+bn zG0zK(K#-ofBf=Z&vN4%R)vBLI)5DC1&x)VV-7ymfB#)aCE$dGOU0|1XRm=k=m*gg3 ztKFT1YHhgtMoZTis%GE5*M&=)v6es*_%V`q&1%qo>s%r-s1GMolf#laAlwA-AEz?M z{Ceq83M_ylr-_t;&}C^D)0Xk+L#JTC57r0!%R#1^r^HExPUl!Xk zR7^gCMrGN?ToJ@(&q;W;p2aH8`lBWmc}}rTB@9nZCo7b=P zayDINvnMl11ufLeIEj6qJE(+Q?*J#S>^sKCaO!S1@jcMMgnX6;$F-i#bv+Z&1+8O> z_VId;cpsw|a5fLZuda$P>c-+VaLLuV*uOUF@M{r-c)JyB6MlQ}-j~Oy9KFOd2m^?q zR~n=Nw+Lb_v`tMt$A``wKZ@Tge9e47T&y<=@Qa>LuKRG{t*w2qBW9gB)~%$v!z3g8r8gDCs9;^mmWdX#R_cUx-^1DTe1w;gQC*J)D9zG32Y%@- zPB@+tYZ(jEyqL6~jIn5!6Ko^s2D#6cZ3?6zusvLtOyuhe`Tb#pLD7@-D`6FG%;gP2 zvvVAtuCEmlqj$VY4(sYoB>C&feh;7Fk&nu>5P7k@A20ina|`<5TjidLv@lBst>O~; zHu|vb1>-#n7NppvtG*jtnMJ(&MbY6*G^Un?kh)sTx-&)P*XYdj^v1N>e^lDSnt`z! zobX#b30kLrz_RbR7EMbg)o`86#s>I83Zk3GebCAbkD)FK0YSXin|vwd;BJWL_fDHSm4(LpsGR%BtUd)~Y# z?@-zA7%09Jo@}>W=or|_cA!7~_)}d7XsNR{USZnYvFvFn!$x1#GdO#zvT8+SbUJEL zs6M5`59LHBM&OuUQ7=vFw2|MNuCqrAW2CGuB|N5hC1Ao-uyh$rU{(Y)==v6tJ1!Lq z;Dc`N$+sRw=aau7x?uZi70^wggp!8+B#Tnp&TZ)n zWKq%8CzMKf|F3R;Yeb9qNHQ% zohJVwdO)jmn&9jQQq&aL=7fTT^#)#jR;FBydWIw2-%M03IaaJ$c!|LlsZpr*K|l6A zb(rj;5_MK|;101g-LfTn6-o4X8t9XAdSss*X|hR(x(0?S)30bjQ#G`-Sl#y7d6kN~ z5y8ED3Ju;!kqQTlQDhQQ2q>2&x!}=h1&XG9~G2jEqJASm3*R>(M0 zzq3Dt)miCYVhHfgnH6uc{v-SP{K(->_NeGOOz$(Y=!Ohd{)X9%HelcgOqPGXRGwPD zw48xe##~Z~AgvISX{6Ft(5TAPS8pF9$BfR1w2N)GMB_$2R75%~^=c)xHL5iVkIvT8 zne{Sl+kxoWJ|>LWfoMXi8vcpTv2D&!j5F6_qQ1Ff$3tP^dXnxNBakO3RsJ+JHQ5Lk z#5=!>I#6R;WUItmiQ0cG)9)1No^*#NcN$m1;Gr zbIXjVytA}NAmnrXr1S#g#Zu#C^d$cGL}E3xr7bR&Y~akj!GbVGn|YEk*VBnCF{R?@GE-i03} z+>^p5y;{7BIm*Bty0{B#H_37~$V_`Pr}gNiqyvriI-6&8zsxB%T`{YbTH(X;TKlwn zzVG#-?~%_>Y*lTlSvL zc41$n<06vH4>F`m!LywcbLXity6rOBsV?K}1`=-#^wFhz0AsREU( z(rT0=*`8(_k1nx#oz_Mk*oAgZ|WBQZ2I@!`D6TQK!|afr$k&g(aak$p_~ zdyAFRmO0~PqI~q37vCt~o`**ji7*ys812hZVY_1#-nba#)swH;${D<(n@+}+BH70Q zDZLC$T}78}?U5mlo&C*qTuuZXBk%r3RXRP?I7>EdQg1VNWaH&lg?5aedA`DR@r z=$2btyxj{Bw`>2Lo8s8Q&(|CbuePiyyqKzE-P?YPOz+x@20(=#tt=s-RB9v!w+dUK z%{vb-xOZJ;JfPM+pK}U2IwLbEhu(hfaKk;jvd-=xeC*`47BNK)uIXQWA37THW;yF; zpki7j(pmEjG;J9_kHyGY1PV2)$}Vp8j7)KAny;<;Ol*Z+_GH{j+@$58_(rAUm+qB*oCeNdk!+6S9?ybn{ zUiR^|I>^|SzS-S^MOE3EC_+H{yy1=kT}jrZ!pe$ga658?)_l;!*+h{NHHJK%3*vR3 zlW6>C{Vng8#tQypJS{8FOb4-RK@Iy9wl;=^>NQUS!=lC`<15Mp>Uq3e>^C7b z_IV&l`Q@+3(BSuFyFks|r$P2eA~5Few|631yZ_3L*tY5>^Ol$l(c!j2a&oz2`3v}X&jc6O()GVKdE z!IsQXMjgb<_81s%49l1q4~DXs??!=h45%!Rx9kN{8t+reL1v9kPQVfLEC&upbSR5a zOO7gabuMS1PWfOnDjGxwnn~AszFUeUGtT~%(aw@sDlP%BKW~uN5A%Lxp%O{62~s4U zpB{1dU*s^ToA;>A2f(bW3ZBA2`F%HWQSt(R30dhShD?dOBIut43wcK$owK7~IZQ|i zT5}{C{tlm%oX$>@hy<1_t%Xg+(uy?t0mZ@z7rq#FZu8W%1{Ag*5yxa)y zY}VlcYWr}?W}=OenVr8%`JKfyBF$7-7u$SJxAY8rETXnT*|2Wmk|QJey(blUhzjdU zjaJy(m`d|suecHot?5rpPm`=_I=Xv?M~u9a`D`S4p?hYi3{@4u`~-{}=9EBHG^l2>18Xe{IHR5)*d4bJK!o70fa_vCI2;uP6vm#OJHh^o+r<_ z)2Ja|{Z3|$m^6YVIj2YH?i*7rU&XY6T^jh3S$w^!PQ_y!NA{MpeGY5|MAv(;w z2E+D(#Z(L4xxI7r{``d z(0ZuPM@xEaiS~Y9N;-NkoCzL90y9FSnOK}mfYOJ`&s9+t&lyD|u2bjPdX$&`nX_Nt z?izYgDe#6lB3z!0j8&PmiT_YX#|F9&d@|61fV4bK%d?4ip`v)GdMEFB8+fzl!Vr`A zBeIqr0fNgl5Yr&%p;&Tt0}Vs}uxqomf?dzekhEA`gPQ`pBIkPNw=Dg&T-Dne&Z9%ld}4AqZ}}2V)m5pGBxU2oiOGq6jL82bDTp z*V-;DIS#L*Q1S_>%z3te5PGwmiLiL$Jq-G^xPWA$TX&ID7qpv0?o&cwSL;Y8%idx_ z&|#=plOC08Ne^uqZq4dCzTkW?>ax>tQ zoGU*Ak2OhoMwbFoa0%GXY^}Q5+dr1k?18BCo*{ z7!mq}KFd=bsDdzG#x2Hyvv+O);Ul}Dsp0g**D9ClAu1M zMro-l6)vD}nRzl=QBQgT=CW^PxH}XC+tuEM+|4`h;z5x_GLyY*7m5MTLq7(n@D3`Qm{vDiEaWn)4n2Q!^H?4 zyWDwFq^UEHfnsg9eGyCAnNO)Lf*>e~FfuLbmJT@3lvRA1?XE#!ZVniTUZ z#9;u{L~Y=`nfdBii4oE85MzYJn@Lw+%H~O9GNF~<<|XIfx~Cv4U`c7iDPT>Hl}Xp$b5Y5XZw~8S zh^t{UVovI_w|8q>Y4BgeRL9^2&Wv3BR7Lc=JO^ke5vUeA&wIqTb};d} zJtob^x@{9Ucq}7Q>2O^#*h8gXCUDNgIClT;;6GI3Q6Dkw<26Z~!}|&-6aapGp;ugW zBrC}z5k{(sSc$oNXa|vUgQAW{Io2H$QO-6J6P$LOFma^l2x;(#S#|%(hvpLk`qSBn z@yhO+WOQwDE8LHD?dnX3mViKwg@XljK+8KaDoPnJ zQ_BBok1TBeGJ*d?AL;+&PO zjUWHlmZks6kIerx^S`eCB{msY*#G?D4FDVk$4JM>1R(}R2oaHx03`?+fKNg}K(Q@GL?I^OWw_AjoL?Bh7o zc$j5+`>z?31=x_E#59NqB*?E2)L(#*0RUB-C=Y^9NJvUdNGK^NaS^?g`8jNc&`_Y^; zkPyHqL>W1Vjayv`x1+5&Gk8pWeLOrof`7e|5dKcdr>FpLeDgK{L=aE`Pa$l;K1g6^ z{@Vn->5%buKvG+IWxH+k1EANyA_4$v0AS7mee!D%v~7$akbSstbSq1MXP$g}|NPO1 z69V982@C)Q=qLL|_Gwl~?yXj@E)jWP8yMy_a6lW7Mh*ic4}Jkr;IjY}K(FmlR+J7V zxNjt|yI&4t4e|2s@6i_~id2MPQ7`tEKRo|wc0 z41NDT{Hg36xX8G`r(*uujrwh&pd#`D1PnMJ1mKs4L8_v$wm^9nBb{oB4zVjVgf2U;7%g>CQm+5+yKd!hru zv@G@0SCe^O@5+t5Ut8Zd6)^&c-C}G9bIu7q1-5Re}X0LX6*(mCYqCxL}e z4I+lmP!K@PgC77LB;m+Zl*AuEKdcnJ%@4*aFqZxEm6%vWv?@5z<-H)Obu zZVLJt`fYVMt1C{;_KEgf&-Q!uXY~=l|4krEj8p_sreWWeYTz<4`_YQ+2i|yai`%4+;L2>*i@UEwFG_H4Gx7&eHNHyM^z`fLYkrK6Vc7&cgW1H zJ;un(@5Rt}CuCvM#l(P=A9*;r&vBNoanAGY)}GhQ-o)KwyT>L@(D`byC-cvX^Y_q1UDyvMqGMWtix)m*V~?5*n{yeN#zQ%PeR@_ zTm2V6rThFS8PN~pFlj*|xLC@q@Z<0wh;1 zS{FeRX@&|Ib40LeYl`Qq6cbQtLk{3TyRA==h6E*TRY{9z!{uVq^7^Pk{^altf7)g&%! zv=)*Epk8h`%JPk6%PhPSjKFufjS%e+@e6GZAGe;)%+Wp4l9M>x@x<(sl`lF^mYhww z79a&?>=4AAY}$NO1?nfmWpS-IjNg_1c-orsoenOQ4OGL&zT2B{r<%DI^>B0T0HGR! z%>|Pxy;}`svr-2&q0FcJ$BhAf`S=E$X^w#_qt+oZjrPlXbma28tI%i>0@_Tu4~h$k zdbipbG*OLk99!#ja?i$g)zQSv%q@29D{Bwu6C%HPrQ@TS+&Sx2ozzIEtU4UkXGx7I7Hj*96XZ92-`f87o>aiySZQuJPB4 zdxW9@RYNDuZkn)sDhKjVJXetDn`;JQ7e8A#IimFFH1y1kB|H+ziBiYrgLnjvnc3W` zNw(V72*~*mheB1)1gaFp_f&GxMeCR)&GZ90hDn$1CaOD7)y7f$rKPE!P_$4XRXf))CGX2u@zVvxc+L2vSVR{AC0>YK> zqR`R(`xdZqgi>*T$=XpZSmrq9n&=rS=p7i%c~#o#J~_;$mP2uf@0oT^Gwqo~_12Ba z2jpsOn{U}E&hrMpT^%t0^2HDE6(mWvcR0UhPh2G4KdsZWZm(C}wI@6y6jW5O+Ag4U zU|^%X6eqBniC=p*Kvd;2-|W6H$038q(B1Cxzv5Z$NhKtXOO$lgLJC-T0-#BirHRbBOslFPpZf0)T&CXrxNkj@q9={8@xaoK4vfSloEh z?R3ioJzMH*2JV}uRGGL)hb8_y<)g^8YS`3Hq$&I?95R)YDq-=*&aTg=Di>`Pf^>db zlXcz}M$n_vAeIv&9HYr|q)mujJC`HnT@=UsnXU-Jjo{`IEwW|)bJl~T#7G!c@}YR; zzMIg}mVoL{SJKa%DqZPZO67ObN_gsz;_p0qruJ&;84^wK!0_m|^{#Ipq%@1yp9GZ) z_J*uyD#z%DqJEzdp~=GQ|uU zjadeMgA6Z?_R5HY8mo^6_0XedQ`cz=S|Fq@vGbOGwD=dVk=s`_S{goC!s28~pxm;} zxYpCl>K0`m&iEIP{`z4GsUXPI0;kgLJnmDXY+-mPrj+0KYTcq>Pd%QMlQX2a{@H+EYZP zn62KhhX!H`ql?cbM>_?TdAkNEv=<^2cFcstnN8?^r^zW?5Uz8<7f4;ov2Z$TXCK}I zT}%XH=q1^1mK={OsB-8GA)@0*Ocs;JYm2AO@(2DH`FP4s!<(#55+-xd-mV9HcBy>C zwDfvCnAG_F5zW&RFp$7FDGKWrmh3@sFy4}4-_c5^Fk6md-JfW(KSfF6$M+<2dU=jP zB(a9I_7TJ(uK~te)Qcl%TFG-XrW<;Fo1pUWyySsyG=u7h`MwQNH#Yj0qX6I0S0^Km zv+);-jT9fDGpf^EFqck1zith>6NUS#0}v@73frGI3+OI@&Mv|z9LWM)^PJ1=Z%Q5c znV!_Sh*c5hL*toJ5XClD@1pSyEff_ivg(5=31w>g-|lIOD)HF7Ju+ zIpI>u`+2!8kWZ0YYO1S?E4*hbK?axnr8Fb>B{e7ZY0F-kjiP=amW6ef3?Ca%v`a zWtKHb5+_^C?SG*krU4WGlb9O_`M9EJ9kr~Sns73=M2SJI_nd1Y*(#>&HJpC$|UH`Jc_I4sBlm*65&vHO|a4SDqYS>c37r+IXX*rRWDduRRrr> zCAEX%b#ikQ@C4^?MBU$Ms%;IAx)0g35t=?$`=lvbY?+6ZvGJd8l%MMcoXTvdV0g<< z5*jrU+&NOh(*y%n+@sb#`IXU$BXs5PNwIWhW||m95YQ)m#7uSY5#h^tm}0Twwi?6v zMTK_lIB1e;V=VEBCu9sBvX88s@`B(vvX$znklF(^#hdh*vqE;^5ub8s17G5*Y$3wa zu4R;7CWJgT7m}PhCp3+hy&mGr+m<^M-~~e(fWEa5)SyrSpw)@_jxr%XCnFnbdBDxAEbJZm08{oB{3~^;Jx}GzzcaL}Y zsa8Z+-v6DfhR?CD&eGpb@N|RPdYCDC#%cv+aC4&(#;}3+4XG_ol$MkjN~{u7sLyyd z$4@RQl89yJ!%|{qZMJl!owjcQ{dwlOP6?Dzuc4ktVVh;bdiD0~Q)eoE9f+CPa=Mm? zaa(ZRgO1UoEb3f1X1Tz0o*ez=Zd=CY(UsWF9w@X~>Zc)$-jJu?3*RNDK+KGQva|xo zMvjkjuUqb%#z{d%q%P`;!`zH5y8l#C$|oVd;N+TdKUH z!-;xfA?Y)EyRf={tGb6X@-f^au-@Cmd0~9yDi3E+n&3VaO+o zrF$uXteLBCyAO2vfI!+DzvLCNhSN?-3L_y!WNBAX_>1*jRJQK6+vwWrq-R{n~lzp*QXGR=3Ld_;x()?jblli%+x|z{;(&U zKy>?Rjq6p7Oh`o1Z-a37RSN;;t1NjvJ?I*~qL0+cJa(Qzk(L zX)&AFSF;|LCoEXheTuf_bI#_Qx-ku;Ah>|GHt;Hn?K*c1tue|EL+VkqeC&2H-1os# z0M7oXRiMYfj5Ubqh8s3?E3k=~h6`e0<&z^OuracZ4T?Er{RrhS6*5@N{3O8L84rm5{3+yUYv2>fo3()3I{Hb8uEw)YMy5 zMl=$^V&WclZEp6L%(o#|*4m3NEq|sh{~T#oU1=x@@9Nwof>!^zy}CrrZ&_>=Vs4R zXIrkdm1d8E?V|?1kzo%59k}aCm&CDXXVzCg?SDMBnoKrb2NwjR-p&M+b%a=+(7D<= ze*~yqj}M9Iv_9J%bR8?(kT1JEX zeXN=3t7amU5t0mR+I61t>V^ylz3%s0fb;!DcFe{*gTS2_oZ)KVdL~KDa)NrXUEYio zYYrMZG!UDXA8Gg}Vi7W*=3D>t)gmg0WdUxcyIqiDE1109Ga6k}>C%H#&&RatNkRPI zzxEeiM0qErsk2sfy_-t$HK9&bw$nq48PMxF5S#kTEbYmFr^Zx2)kx<{pS=zQ*ZNmb znP)68&UYB}kn(z@-%DdI#$B-#At0DksTP=ev=dF@PF8!sI_-#pj*w7C?R_e!}x zfDB)nmD3KVD+cu*1GpB&wqYSkMzmJB#HT4UsjHnj>zws%5U?v#`n@9Y??^`#?McYs z=?HG~)D{}vh)IAn-Q=|8`VZ9{H;x?}j`7^~4Qr)#1h0c(O5jGI_qeLd)Gnfyw0ekW zK5j39|D!g1n+}*_9p%$*toMpECY5fZhiBxnpqy!3CF3jjPfSZ7S6_aEU*j+VyQ$}i zAUaf`+~s%qO=0%*x?qn`#=PU;4K1ig3=QI!;&XK4emaE9L0kB0$~ju_^)Y zjku+Tm#ot`wG`fvZrc^_Z@(<_{e*z^qw_DJRB;Wfv_?Y`B7HUD z)mAp4;mHSAep88abgvo7$KWRi;e`0Vvhi_`^-1i69n_I1(i9YUTj}}K3$9+2ThH$9 zinx%)S?@OYB@ZN+0!J3bRZP@9-D2T+luF&B=}pL06c3daopX*MXU`=W9WMuiVTCKa z8jUcOE>ahed?{(q_7ct-a^FMG!?U$ z&8o>%gO5A^jhJa&OpiBd%%_IwX|dfwUYUHPx$3g2X@K=N&f1g2|6{9GYXa|QWD9X- zk7}pL4{c~Q@eGs6{K^#K*$ZFCLXkFRMG+I|a;EZ3BVPMQlW8_AX%h8urF}Xx7Ab@! ztg{QeT%~hZ7Bae*x&N@4krV^PDBSN8BpW(TMDu*PY#yd;&xe+iu$efTk-yVBcBrM#n1jv0S^75_;2iPM^_5pIn5h4vO6L;m?P+R zmj&c}>o{Ik`blZ-$6d-zhr+N|!98|Lx@(Uo)vxzDlXTOj@+{oK*OLcIfYe>L0bw{x zPlwVMp{ID>J|D^s)QJ`7L!!s(dn6rr2~u6 zVYoGRsDU=B{M&{+lM%mXr%aHM7Q}V3iZMe}HDqTe(pfae=(OGG*o*gue8<>zWx9%0 zS*xx765zOFuY94g!X=LHaBQUftT;~_b^Dl%&(zO#Wrx{Clm^5C-;IUVy}3oFlAg#f z7zE)o<6<=wEidru((ook!o6#$jH@dimjv25nIVMlX#><0^-hzm;kwVdOLerc5$W2N zwcrn~MY;FfH}G58mLrK|b5=#SSbrqlT=$*gHsj3S1HuBAn{+UwP*0LP()2^g$%bod zCpmN%&31Wu&LFzC{IMmv9=~994!_%A7HC+QjWx-}1eFo@%%RpnF}qp@<1EGfJk9jp zfzlP2m_QS@>?KM5plgzQ=3$LMwORI%-9A{sEGFxr zazI-;e-ZLq-ec%r1@_^c0Sjyqvk(_A=BiUy*Ja$H4#a*J11`iH;(gO8c@9w&{2Hde zdM*s*VUs>zw>y6_eQ+?egDPT&LL?S;N|JFOL_Y_FcOB(~DA8TI1F%=Al%^i;)-X5} zqmHQ2K4bJ4Dmrfdu%^-w*<}`~2xJvymzMtxW$cdpeF^FiBQ?ciW*5Gnrj4(f(us1D zs?Cx+K;=ZFWMAq3k}t$mCy`MigB`{VTovoCP0BA(TkdgSezJ7V48XFykro{y*7rXq`)0!)j*znaL?@NY|}0mXs>xgQ?P(eU{vn+ z9Yr@5&?ZJ~-Zh?&G(u$DbA#Bg*{En-E#wb5BSOMzwFM=-%GMiJ+n+4SSO z55}q>C_gu=on@q}93ErXI)3n4P8UcM_fOP8J`@$-cj{+dXp=Ri(IG2y zPB>m~z9Y1gtzrQ*dCX3WA0yT8OC*$*G#2yK&Fg;Y*E(k|6u6vUu1(X1z7!ZRp9kB( zK`!TXzLk6}_QWp276}{`b8{$sq?8Shq}gJx!p*=L*>A9^o_~JLrKfFms*mKfdkIxB z=cyUgZ7w(2B~=&2<}QwzYP7XlEy@#V1ZI1Jt_mZMC~jZa*YM+0E64`wA~erG3`Gf{clW5_pihF|3B0IkC5np*y(=~5;eAW z*0-Xy`;S5FR>mey|Mkt`KLV(@g|C`(X2h;vWX^S=i2|ML9HrJ7qg89V%&>Tad)WGrNCXlrErFPjSW-$u~8ZA80)Gi`qFwrnh^ zELoLt2X1)Yc9*B~hY=^QdB#?BQxrFsSGTPEwMbPEuGUzljG(+ue7W)d&HeoC`Ij0U zXCJ@y^gemU+&v14++LFs1C4U>HzP#EAduJ3`^z`oHzk4s0RS`{?9WH9Kttn*0S5Pu zMRwc}}Zj!3b7q<|hQ;)V&WNZ|_%DR8^Mr7XbnR7|8fXMaW|u zXerxUPtVVvjt@QDFHgLEDURHiHmwp14D0k(6o57i9-oqkh~#Y(JMRGUKEOW<5dhdU z3Tp@%3-JgBJdJ>#4r1h2m&WaQn+_wXDlDwFwzjU3OatTmxMGY9;x1T!3!nsnX=oB0 z2<)o>hR*3F=qsO8Y66tbH8B4dDUBc>L)VlR0sy*CA0GlJn)zPDk3a{&%E>Q1hNlk# zl>e)^>Nhn2e^1sPpkScjx9!vLdlC`mesc{IM8KmU3-O08hzbBIP!K>Q<6{7WHwwQG z6Y!__3`Ufw{$++|hOVs;@O|4tWM*r&ZeMI9JW zMbN`T00D#Py!LBJUk3r9<>rUbH{;Tu?}HHNmxo^;g6;_&wvJU|2newA6n0+zw=ghR z>^HDofDQmMFRG|0h#bHH9^f9hJ^Tww?bG0Z2Y?gb#Pq)@L z=c*nVOoVXn=U4uB+W^s;irE=f(w{f!7qOy(@EgEiz<>dO08<>FPf1A$37>=n5aOpb z*O&5+^>eqZp7Bc7<#)0W4k!X->`NF(v%5F^?JFH-hu3lt{LK|akk}=M0AS}g>Q_4t z1R=;9`TJKVV3+i_b^Z7F_?P|XH#@$B75hhX<}-ERm%#NUsQ>%dOz(6ZD{vbYnAk-S z;kViX^xZNa7GE!|_0(6=nQmqcN1ngU;8aWODTeNDMwbny8uBsFFIpcXZd14M$(6B= zevb}h2qQe?yTi3kg>TPyysi@bp>K!U%xcmn5`S&_!&M6w1OoD>IlurZ0l<`&*3?(w z3Pev9$&XL|swRNIr&kmkpD>EgppF#a@2DOC%DM1IWxW9s0HP_%1oSz0`)RZ_kjfht z`sjd}6}6rjyp`|PPk+687~fu;uH`#?NHCW^gzXb=AC9>n!~}Fm^*Qa4?t4I2cUN6Y zFF3U1$?fCqC-A@9hJIq`r}6mh*?rBdqYcsMl!hgzfobo&*|Klj-tq`N3B}q${qq=Ga@;7CxbH4s1E>RFA`I;^ z62_ypa=tRm`o&HSgRO_+tr@*hDHq7QJ|Fwz%J3eWDkgY)kmQ`j2D1huTyhjw>!aPa zgEQ?Rn9c2y$wG(5sfX4zhV<^io_HxvB^$|OZ_~bmG!(8*?(fF^b9yar^5HtZ*+$kd z)Q8ak+Ajn3P5L4oOF-MEX4p2$;fl=@Qz&pF3bPnDs9a>_$+wLpg4yMR2Rqa?Ar||q z(E>Wn9;^f;C#X=LDluxfGl98^+RkJ5b#}&YbSurPGHOQgp&xebRfDoA; zDL#Lu2q&p#te)(5TS$?Dg(5h;(mLF4p73dvm8N(U0cp6ue(EcV=(Av%!J0ihDRLq6 zj1LN!SNa)^Ty-CDJE_UPp6~IiHa=814vb2#jaSWduLu$zk*T(&+#;M^cYgYGE*Npb z7gv{3zWyYnfpxQv>4^3m4IHh@EfxrP9nRoVvuhfs2UEltN!m{sI9{-xd~C9@hY+(g z%v0(&Dxoyt=2EKX_Eg7vJ&O?(NE0Y>z+f~mIlD=39~m+z4~{q|_Sk~JQPAjw5*iG_ zc?fg2*vK6Jt1wODq^Mi@PMX9~&P=}(EPqcXT*gDok7+_BaE;7^?;-Qv<}rWQGOAuc zF@=tuJ{3f*`> z(C!M}j%)N;700Sq-K8?S9A{;a?__M}%-kmr%|;uXExT2IRaypQO5%c^XE?xW2GieS z@P9M1PszVH(k(V0%P!R*96CW9V6&N1S&(i^*wOq*@aCNPw1!-gM%O4CT=YpX-iQH1 z`&S$WFo&sQ9#rz=if4H5dMjKNO|1J-iSLQU6MSX6skv>a^6$W%EUK}+QNss&QAFDy zk?XZ$XhZE#?pMNUP`>Kh!`hQXfs-*#DXHH!pr&tKf6Fz4W$FZi6{mhZjXW5o+ zp_*5o9Wr-%f04Onxzf{e%_MVuZ?jhV2Y<~9y$8_((t1+&(W3kty>xjk#bJt; z2!G(f8mDl7S$_1xMNTL7@~#HsBSwidJcO6jG6TBAJ+#!)wiqUbNiq&7bm;jg6nQ7N z*%{uyYd)Kl9H%32ZOYQ^J(2EB#(LR^*8uQ3bLnnHyRRrMLGgF7CWUAt9MW@q-Qg4V zOo~kFrS_Q}H3z`)u{^X1WY-a!y|i`B=Z=`DRJW%Vq9a9%W3?EM#OFM?no!T;*~r)j zRws6iw1x;f)T1Dw#TqWE*Ava(nGVF4do!y-AyMH04rnOb4 zu{Sf}d)#=M)WXmLAIfk(YpYf{;dryXE3DuR5@l@p=)|`V!;QY|q-k#+VnXAA2K!?z zj@_a8G=@3b_8RCF4u7Bq!Qr=7+rLm0hFgyOi(bqBe??N6iT@P07 zCO$fVb#Xi2SNPHx-|25Orb~y*OPD|IY#3t<+K;lQByGX5 z8{HI8!wa>KK4d8?n$oG?#Dm2>?pJr!)4EKfl1{k%0i_)YSxOv22B^zDH7P95?j5-J`ZmUW&P?!LKa~%S^ATME#N1~iG zy3md{)}T8SOSh^I$ZW#Nz^qydy%Ph2Y*C|4sl%MZj7^7L( zl6X>t5Djoa?0qDlV0W%fX0_eL_)j_h?U;Evkm@tq%5L*A2fxh3ZlVT7NTzi*ZdsJJuyCc4l%*b~`36+7bdOsweI;IANzq zvr6Nr9!gV=;>ri1qGnZF++TbU*$@(e&vM7mXkO#uozsfjm52SmID5w?QNln;vu)e9 zZQHi{v~9aj+qP}nwr$%s_T1UQor#&4jr{`^Rqv;KD>I+8o!EFb*Sa9rV&&cQ;buQ4 zXz3FL9a3%Y`Z&W}4o~C|Y=?$_h!UCU`O@$Roj0!hTfrd~EHT-K>0d)OaN}^fwjOpHvEZu(Y>7jlnT%mQL$?XH5~g-| z1!0u6TgOPpTzP%U+;2WQ;FU$jTpx9FKP~h#pBzR?qcHmLJriG$AbH$mt^p56Ken}= zeSM}`^t~vII>8VJzT|^n+#X01-8YC`{Z*T)-_yeU063<#I27!!r!;Cm|MvIvBVN#J ztA;0>-xBCqV>fE~)}TrY=EhH!%Yw|4(X^Kb7%^akH-@3xK~Gh}U^`@2RpBSMge zqRX;Oao>p&uVe(GCq{)b7B%0`o?l-3E1o`W(kazEfRQbuwJI9B5Ag(i*>ZYz8O*m6c{j7NnhUua z#dF)g-c6TzaFuNh)Z9s;ll`~7CA z%z{w-$d7fsW*;O`fl;53ZgUcoz7;DaM8}&?{U>_Q9MQ-h{@sGEv{OvO@Y}+1X8J&&kzly~L8K%{rdWT2*7{}Gir__sXT46|Qe{zdte2{!B zVY=TlicU1_cdY9q9*hek{g2~U6CFF3j?ww#ZpS;cuzL6nIL=|8xfc(33hJJ>04 zbhh{$zEwvWp+ejec{2{%G4nn`x|SeuGNs(^sOaf- zW}ykdn_Z}1u^lhnP0{K2)tXHG&eI{^nJRbyOH1oM#u<&uOS+wY6h4~42X&|dx_&(Z z^4Z&+z~=QVL|^ml*XPW1q70qR1#on#;wz?wMMwEkV*B^9n3|TWjt1p3t3*Yhm4|?Z z2DXkkZ=ifbNmlk%a-`#!;Eq40rEkoL1s^Jr|H?PadajkE!(CYT-q5N+8v9dN4r(1o z3V(U<@E06A(Yg+rC|t$xwjGn{+V$E#Bw?OdvHIx|k0}=Q;Z|Yz-PrER{N+GvRa>Hk zQ_xc3hfrqViS1dr4kR%1L2!@l9}ZEEH&V>-JN2C%YZDLdedBcG-N!k_CAi|y^D2zx z(cE_H{@(hL#L#4Sg4*VLQ_K^?+BUcN_1V1>9ck9FG?e3-Y_?%1lj*nc2QLi;Fa6H` z=HmJiMrf*jD~PF3hTWx-emB2*>wFtrv|gfZliV(JPK0m2f1|TPbtWo1w4xo2)tFkm zeKwbqKIHyMQ_h#W6unx^=py^jJSa~^8N($Y=U>&9z_{^fG6YZbWR=|Q(!YCyhUfoY z=DlQiv$RhS1L{;C)VFzBY7(7z9De3=|0-}WxEy2Mqb_QqcW{@7s)WoIW`_k%B9>52UX?-Y@e#1I(-=u$#)~>hBO(*a>#!Or z0Vfiz1gSci<{=FUNKb!!$~@NL4Kvo8yW2Q}C?*-m&hh;wIb{)V{T4Kd(9mvqKQCm( zwoyZ$e@c0lyWa0(+Z{7h2G2a_5rYz35YNg$t!->tMvtXQPf`#U`B_}QW{*;DV?pI2 z{s;+GF@lswmyc|ILW|nY5Q53P-nerS!+kv%SPFxmJ_lAa%_G?)d1%zc3{Tx(&AKt@ zO=cB2b@Aw^SxMo{4wRLIpd=343E8QJDAZ#|dGt@=z$fl@DIUTPQMzWuf3LcJ&I!7p z)dWSun5qe*?w0gbu&_7&m0gKYya8*TtxhtpzyZ2+;S8i$*0vzIKVE4X9~iOXa+DIi zI*~sB7+B5CKj%Nl)>^aUi5V)`t3>1LX)>BF~e6q>5PER>Pt=|apcy1>FoLK}1$5V0B5Mh>rGD@of7=_7Cpr9WmJf?3|^XMb(AU-#Ij5}cX^4g z*Em_qyg@+xh&Q_y=V5mT3s-`iiC#)2v2E$WQMZ)be6O*2;&R5HGImP?G|n%bM$nsctTnd|pQYc&#D#gooG_VkCQ*pv z-a+Y_FuYtBeozH&L1E|n1^fV?2XPZvx1hP{AL9Ku&`uHW-(P+RABc?8WLC*>O2uPB1N=O*i_DXTXwZ9p|+g3GjrQXs%Jwc zG$n{>nkX^>VU(LcmN~A)x0TUFD1*FJbUaehRGki^RhRBW*!=Y=^XLi-&*R!j>^+P+ z2`l1(+o^MQ6hq~IP{$qZn3;XXGe+(-%mUAiL0F2g;9%Jy!=3uW7Xtpih==D~!;AjG ztcCZeY}rnN!JV@TDN74C&$I*teagWcpo} zLi`(S)nPd>I27J5dMGbR?pOgwHZGQYez5ELu38((F6v3lbCUBl2h)hzYV6i`ZH?||=Gs((U5o??2{sL)27urpt-kI&S z9OL!pVe#}(QyAz?1)q_|NA=k?5fs)Ts$-a+Dmp3G9<%5|r0OccXhI9k8-m#AUs)K?C|{meRCbDTn`F_1bJu&iVTTuXk4vA%klpF3i^^3TM_Uyg}P z{w!~)baGlOy!yh-WqEt*0ojK9e5(U(0VxTOx#}N@-f2{+qHI@m@wyQ^qB9WP&=+os zWxAx*rNW)HC|v>!etYWP9b0Nn7iO$cWqXs2X_>K!6tZ+6JE2#y*~X7X#o&l(x1JDf z_{^+*)rR}5Q!%8T|oASKl!J>^v;tE=LNuVEjUb zIqZFJc-p7_tc^9_H!+~_`PP3o8kWML=V9>m>`&>Z%#irwgp z?h|jzhin@y+25igj^^kc`q9)QA9+lxCeuwRK0tO42=S#7v5o_G8HLI$WWHm9^jWu> zM{T>yscSfa$Do&7VuChE9IbUUnHzYuO31=5WH?4XU#Es0gG3ciJ8i#F?C2ANn5T+S zI-pJZs6SWedoI4W9wa`oY$Vm#%VnO+&udX(82Up(j~=?oKG*psDeXo+u3q_spWy`= zyRPdv6ski$mJ%VW(GNbR7aCf_HSclpU^>?6t<^eFfas}qZCiZPy{4)7d;IBaqv7y~ z)tV1!iDO`y72eJVxKV0wGKvIutx8wCQJX4V64je8>OTx`joW{&1K(ctp}sd92lM)> zggyLJ(aWVcxLfrdM+pNQO|C9y(}#ri{(KeN-cEOSa`+s!;d3|&&ANB-M}y7RQ`3d} zfwS=&oZWg}F}$)IlI`l$DC{v89=&)L{+rUKT8!v1mFi99{v2vOkO2#q_g2*{Ra)(= znX2J}e&pOy>3`IPlLtQ9z;<;0I=!*%B6MeLL63c?xMLvjDv>GM0^j%jk>Ftl-{HrK zW#s;3=o`lJ?Q10tWWwds*YwsKc2KSw&SVh>P9SrjW2n=JrEBFqFeK`kpVRwcJ^gNx z&XOcv95?L7%qki4xkHH?7()>_8VnO|Mry$uAeE^^w_m*za}Zj3IUd369>I&>0~=DZ z4$=hkDx~ zgt6py1vgRIwAZic(bh;SlKp8bt)mxBG<0HaeSi8o-p|R40QsY0rpipHTqJP*pel5O z)!xml)wUkz*E!!+2+2U3_~6u~D%qc96LQWw8gokJUp?}?L0nrwjDOdVk8f&_xGJmQ zb8Pq%%{Lm+gNwi5@JmnAWW^~5)ETKJCE;DCqw%bqqIM&cmAXs?@A8q&Q-(bwkMPsu z`yQ1`1l~#F367UE4b`0!vUsrk$^RAaB^bjcIfuObRS*Qb;r`>|N}*)w*^1m}J-?eCaqkSvz{1nKF>+96fcTlYI~E^O4ab z7Q(sApkCeiJ$+7JjNIb>o&?WZK3~-ZR_WR<5Ccu`7;p)}OMe_u2b*Bekc}v(QG4tk1TxKKi zR1bAAP&Jt$PJ!u0H05GlscUijogy08&#U{-b<)7MPQzC#kPacmgm}URjo86(lWG)> zFTo8@eHH_rh6uB)s0~J-aJUKQg5;F^jzR6&$I~m+Dh_C(wMeO?!7BFrx~*;E7g!|L z(2*Id10b549d5z2Hr=;H$AL5M^7xVZaA9`Fa>fUUUZ~q{<^>PD2g!Qx><+&vbp0i1`1Eruf*ub-)YFK!p3cqT`<{R zTHj9(hzJc+!-YvZ^8&61&64IpxVT#jYnU&8_EzA4RUvtubgIjb8B1^mdWGt}$r|sQ zSOUWP&b779t1d%|%og)qOoxc| zSzAYKx(=TBBlJxT-ictWDG{U^fKD3Bd|~!!6mBNF#${HxH-^THY2+p%2gk5X*QOe9 z8wbY(;U(=MFzTTELA;Fi>n1_z0(mQ0&LCF`X*5cuJP3PTw8yb8pu9KcGxc*rktA}iY zAv&L+T@{Y!$ltN_eOo-ahH zdB8jw7?R7S={el23q2RdM_eGczB@b|8E^+ z33Xu+QMG^GwzB5`$=qh*B%u8-_+v)Ke}ld3tpB5f{LktB|JOnO4{q}R!QM8sw|BI2 z|9?$xL#KZ>vxSqDjiIwSy@|Dn%|Em83lKa1S-T!r5`M(^) zfA_kXnf?X`rQ5BlM3N;`TtE_pH*hUMah_yPbu+rnjK@3k-Q(5! z-oyL*tJT}Q^4q#%he?0;#ANbVFOc>(zl}0ms1XQH&lS%ZD{npx1uI&RiS0$q9+AhE z9J4mKmxjZ5VE+y2`!+r^yD$wg?%5|pi&Tcejo5aa9vv2*k6%8=tDw= znlCEQb+NERBx)+vd<6x9`lvw3zt*W~0HA@;faodx3k+%S|BMnU37A;L!nmk_R)qLy zt}X_^8vh~&0vMto@Iodck(dWVN`eYtdUUrsEug|egI7g=NDM2uJmoXw^N|A8a0C@x zn0xm$4WN7}5Lh4}5s<&jIBrmQF_{1m$CdtZ5+R893K&6Qc>+LrzFZ(2SF8X;7%}&W z_eEhKsfxy762tKoQo>E^h{u~oe;A_-`#vvjm!2pSX zz_KSH0)XsS1c8YH2CPFBN=)42?CnE5f9@Z9XO92@PDpX?W52O(xKA*UGz?T?3L{i1!%S930vE4; znts;D;nlp1EHt9`Dk_Gq;vaBaND_7vjSPvc4CY~Nlj2`XT{Qr~JLvzV`SZhq7A@|5 z_WO!dCj686qN@2*`qk@$C{Bk|{(Yp_xBC@`fk-Ki7~_aY^NqF#9a~cmJ|%v1VAoB@ zAz}@N4T~h(1Rw7ZXPqa*R>l{$+>f-;#N4`Cc2_dL52Fn$ zu@?!&u@23qIN8}2QxffIODc+V8VGClbuD(A;XSML&aC-!*XxZB0I~`AjOUg#FY)=_ z2E%dd#JQcA(Dd3YYhTKlZ+pErH7f^0cv0~}GEz81?EjlSvpG2uMmNS<;y?_-ZoY z)>I2Kg#^uw91oP3XrpGn#b!#5^6Hx#@&2wRpOo7dd%c#HF_77i!e`d$cv{FCJI(3! z%u5!@W5OBPP3WZXW1nKPjT#lU?T$>#wAM6bpIZ@}9%H-H3yRay*`Ej4xuJT_RsIh% zd_-2;p$TB00$!R=`Ha;k9O!Q0Sgsdil90ktS^m`x_~YxZ?-*Y-F++MQic{747Za(a zk9S~5TwrZ^FZFf1T65m}nYd*=WAp%5c&aK2;may``)|vVEsTvHe_lIY*9zwgBDF!c z4K}v(cl>NO(-4#3+un{yOsXNd2C3llL2T{ESe=wn8p9Wv=c%P8yszy?a^h5FbvsaS z6>}0^bJ)3P?^)dmNu9$6QtVr12#H!Q_kh)6VOfq<&IbpqID0!8`qoCR6<>#H zTj>b0XOVf1nbmzie$NZ#{yW~wp{ZTnH0HtSQ!q)x zIrG+QR#Q%!iOR3j zM-*|x@c7=6)y}~dO~g&V>kM9coc)Aa674pRPdalCp7*=ToRLP|@>4zw-stcr^L8HL zKqq)~n$4yS#LnE9xE6F-s2A+<|VqUeWiio9Y0fn z3t9bzPU#kCZ#FAzj@Ez5T@HGb+{)EaDOO$snxJmQSzypSPew*gKzd>9^iCO&4_sg?Z4Udm4fTr`f%x+M~4LBVx=@Pg9RM z7c6O4Bc{2KQNTitqQHp~Wcf)fYHz-;?L%J*gOcGR7&>LtOA*z&Vpz-z zet+Dnjx$59E}HYJq^!RCr$VMGS-oCuIr$pf{?exID$-=!XA^e%S}u_BE2OkI-8G3T zE+nsiO8fB%*sNN-TPde0+O2HIX#WBlyc?YSZ?qu$e+vBl-?X5jh>E(fIJK;@knI0S z3$n5j(6TTw5HK;bFcWYx{U;s`3)}y~qxqL2{BJy(e`@bP!)X3{%JF}afo%T(HveM^ zL+O9YG5&{?`=4@*|FMVhzvdX382;lC|1HPJ!Or^MmEM2m&v3GHGX8(fF*duJXrO3q z(h=e!5#>YLyScRn6)kv}-hTIJzw+(AyY=7? zvc4w1epi`Q2b=^)a7Cu2XG2PCzyTQnHZ(v3pk(RvN4O$z1H>f*Cx(atK{15{ToWXW zFvI}>+yGFla{~M00KmDr5|F_P49x7nLbcQdeZNHSB<;(y_YJ`kz_kFZueAf112(v_ zwGfE=;|wLC{){4mxiEbf))DtT`N=FPEdKfP=UY7VH`iq!YO1ew9SkR^qAub}D_zm6!0FAH5uYE@& zP_~+oKwKOE|1_5lVd!eNX&?HI+=9)5(F0eMwWRm9Ki3x3hymnfWEyYglphM^dg=$v zk0dg3vmJ;d8Bsd)fFd#2DbM9S|!U=(_)uVQ+f-uhEZ{ z&#xTVk4Xzy{}1Bq?0f6CKBWD5i6618yPYyO_8ZW*Z2TpBWc4*YrNCQzL;5$^KCNIc zRUbI?hd6i+{}-Ix2wQJ)pG)SiRDcsRIQOsGA$)5#@>45_d)RPognjQYz8%xqD*}h& zq<+)>VZC!>D~ODIkk z4ue*Ldu})E{N50*y=(o6*FXCq)D6GKA?S_lA%O(H971$^epSCb0(5OKZ+ZdOzS`7p zO;{}aM&|7kSy*xVBQ+ehf`(f-HgdtX)O z-&?cU_G+|W}T*~?0F5x*;v%6Hr z?nn`tGh|CgM-|=_|03N0(<`CnXZs73m2|6xh$o&1MIGzxvBuiE0;akQ^I)eq9*WJ8 ze2NX?~|jDyLsrDNv0}>%zEG>NKiJm{wasu>*OG}y1u%&z3dpc(DI%|NsRSZ zY%Xn$+wgYSD=ic8scGWO27cjjGN3A~N4aPp+wXMzQ;{2w^@Z8DbfzA*r`tLvt~c|V=96( zfLJQK2<^7$F6B)azVU;7vn~4x4eKO)0*-Db1#;t%;25A%o~&y3L~7w(&8!s3nTZHBl${#b7GcqJX;C&nbkPWKb*o)5RYoc|4O=*f>wuM<(OFEv%b0*h4mUYSz zG$n6771Gu9YD+SO2}FDc*7i|ZD%hEcr2ZtR2i(Bq{4d%a4S$+}gm zAZ)>E_3sJnJ&VKW*yDKvDd?8E-j+kY3{K+PIY{Y_JJf^H*VB0nYSFOM1 zMxa`4fh6swg+9Db?2@G5GU<$m8QnXf`4BO$Bn*;}Pw=D`>gCa-=Es3%uX0mxv?tr< zZJ&BCIdEg``UZAbJvQ711bO}3Byo*a69bRdo|AXcY#VYM+F#?DX?evtN4J&?Zr+k= zT{g<<}Xnj8Y!j=4Z}uT*U2}Vr?SIreD(2K*x^atN#2Ui1Wt0M>OA#@uBpad0V4MSLPdsH+pR`yXJ=6~%&E#iC%DNX7 z$EUX9gpu17b`iVf_vMc7!lEhVxJX*;{x+TLcnqgbki+MNkaNw`vO1(4K0}zQ`qbU_ ztDTWy=tjAhxqf!#Dri*2<#e!UKirriq~MteVm#fyi&XKeUTm!9OiE9qq?KF2Sm_sLVig8oGulVTW`*J0i31OGNkJL9a5#7+6qP6$ZPNbKX1F z!%tnoFFD3_zGd^?@Z8X`YGpH1PIT~4CUYinWai+KTC5iQ3~d^8CHPoVIhJIX3vye$ z_%Njx?I|kkey%c4pCcyStU^r5tgisyvYTV9D!x=KNhO`$e9caUk~e(xV2D7@l!&vf z)i;AaXQkYMWFw_-yGB@(hhh~8POPrKqlch*ku|m`f$6pN5ak(qV00iAe7&SXd8MVQG-_l)D@j z{;+c|R1H>yZHm~?Ek14=Lkkswc0Uh-$H5H{vXKee7Qg{AFrESDQ9g8~)%$GIVa zN4l%6(ivBi6^0Sv>^>`WFJ_%7=E+bg3OXn%4!>ss?Iye{p{w~$A_Z@#&*cxMkO+&N z8*Gh`$?CM9d;-A8upSc{HuMbeT{#RbL5`lUUN%i_+exDH1YlMeDhZ|p8=^hI4@en9Flq#4WW;;}omvCX|?DQBEYi*6>5Bq`N|PVo(~21uzvZ~$XTk_WEkZp zEVURyc<;l6_6FIcKKE^s|FQ*SPgvLGOYdD1)kj5!X|?fw0SvKMHA|}t2U{Wm4CrTFFmU$zZ&cG@1WPdo}L7;kaJ@>bO z^(+vY&=F4=kS9)E3O(CMA$9exoK>+~y)BtlM&m>ft|rE%>_X#$NEynltgMi5>Aa9g z83&E6In#x|2J~?(VyTCVFY%+K-a(khnOQN$5jRn3e-JP(rAf#&xE|F(px@rU3a`@A zwHFeb=g9BdL1@CmV_jg_%pp!MrdnaJ>D%r@x9`2sw-to05f0f+5XLWjrnU&TgYGf?OzdF1GSuNJQ!zXiBfCQm?B^yC zjo}kTf6b|o(b~DTy#gxTv#ulvKjbt@n`VlbK#0>Gi zI+H|m`YRx(Y;T*(?o-I zwKxwa8BJ@PTe}YsW<3(U++R=w?vJXaE&YT)1P{Wmow+CtJB(%*EA9en!0LWe8AdQr z=Hjsn!yBsX*HkJ^spvAN-HHGxF>qq0r19RvPevm_&&+PZ_qlE7br@l)6O@+FmJeoP z(i5hl7)JuWhQ>%lum+$G(b8^GSHZlVZ88-F`iEdYp}%CM}wzr#E63 zwD0l`!o@6X_#HXWPWn>)7eswF+PUQQKBGn&ysVn&))!l$;B!yY;-xTf#xMULg2PV z7g~*D!-fX|uZ6E!EM+%fy%W=^k*1Uw_0#6;_{eCpFr`NVkk;Q>72I#nP)2xwD;BaV zXeWxT8{u%CX;E;9Y?>J7O33#!{h{l`)7DD#udHNLc*;xf^4)rqYP}!3gA)V}y45g$ zN{rnjy&`C5PuvbN$veRgW+Qn!tm3L}g7I}NvXptO(6D~ATIl{q1rd;ClRO&ox4`i) zVW|ixu|kK1~BkKLAebhMc1Yl6ywc*?xZE1N}@ zS!haF%uRUjNxVCi3uEp!!U1a}_3TM9LV|CP)FY_GF2&&;KZNI*yy1uZem_yYMtIWh z%z=8Q{_6&|nZ>_ZnkcVd%$J9x;Mgg5)poQfx*ffQ1>!bgxy6-*5Z^Jvb3&+**UTWq zx<+VBP}Gybo3$v1iWJ01l+U((;Emmc zO{{EIzsj#?AOccQ6ft7;vWQ)*7O^#4d19?2A1e??aUFDLg4<9sB9yD93$b552cdBp zr#Ub;8F_w&kL;a?7FL_8G_MN%)g}6eOO{-7qNxEl!LF~VIDTJpb z`Sy1R;!(%<$8hve*TG>&i;F8sxRv=Mat0M3V5(3hV7YPje@M7c-t7|{}ox8(H=0(8GB zbb3p2;TeH1wR2oup=?Ld?G|5y$Ux{`D6>T6C6bkccag-}&D=R&nYiKVFRDc>-u&j# zj3Gf`JUs@dt4J;atp>=fk|F%CTGn~O=k*i}&XgMby_7AVIx$i|r4w70m#}O*MLE`b zM(UA-+{f@{qD|r0qv3TQhL46h#&RtyL66{g(CVHeyH@@z0d2B-p#iB)6)a$^yFwjn zT*4b|4xMP~JJ?b2cC!16{|h>5$S1r{iU?pMr#>VayymWbX+7wpG4J;bqDH$ZoAlhs-}9}#NQWY!QIi9l@hIsd7cO5ru7rV zD_CiI`%4>fY9-wb5Y=$Fl6=hHdhF+5a+Tf8Y__Vl776k~kK z%1|~f*D$WZ+({9-#PQS@zIVrBG&W~$dWh>S)+YGov*REM1A#5RC zG_KsbtJYfYYC1N3-G6iueVF`)%vXH!g@+4K1JdFTA;K-VO6~=nc-X!Eq=)-sss#|@ zwb{SAN?s^Jgj$~#&%kku%dX{5hDIarW=n}31rFhtPbcE*&t_INng%|qGL~irx@DS1 zVHCt^1!iYFr2TDH&wx<07Q;&9o4e?4os_hRM94>TYp+VYYwZ}V*Sr*G(fSUN+6%_l z^O`N0Fw(xIpu)g2ee|SW?B5Tu-n?>IIxkq9Y+AZZSpFazg!SaX&+L=d{-rc6N!ks}Z&W~lT$ z8y8Feg0FrJD*c0_LfD-1=iFnogsCA?_qhFR(9IK+tA;n5LMi&4!Binz7hWlHUb%wy zU32mtmRc?ADO2?0_%0Hr!tCp-ry`4L94nAveJ zW}^UEaw$X?-6_(;8tiiJVlWOioJxlkQJc80)?75I zpv}WDR7`5dOMM;gzalP4uNENVAu2ZLP*6k4+2By!lnakbVXL;J&m+NE1 z)!O6|^^xc-r!Z`#EkE2`(3z}(EvW=u!dF1}neweX$+~nI!7Pt}kGdhdGN?+LJri0h zyz}Nd1ILgwvG}Sxr8~h7SndvB=#fUSxmYwfuC3bJz~c}LtmwHaKb|%bWmIths@7^w zr-%<2eDT)+6%bp)+Ear`re8uNj7AP`e1M{jgWrB8%uG|OAU1w)M(`SU#-zm5eg0hN z8p*IZM@rrhnBAMf=vTLtle_7;o)nZ-IiczvG-I7E;ZoPE$amJFAI-=(+ z*LF(H#GNIK-g!0La_7E#>Kt zgsyiWkE;!7;1ZJ4K;{}QdSjcq3{K>Zp1_lCw2B=l%a0HAORF#|VCzrn2|C1|%G!?? zg>SB{H8Fquwne*7N01Y?R!q00rm`f^xp3SO;-pW(X$=vY3MVAK`s;lBUDsI}3clW! zQH{@ed8Q#4l9OU$7kWf1m3@48f0Mx%z~sUWELc1MM-Lj7{yf@YuPVM@toO@TOa{{N$g{fQS6*z>#7PuF%?I7${`o>xeZsHGFApQnaPozZGr%B{M7UUD#+B zH+}T@>2!fwd@e%mNgdy6BF&i~7qIeTMX_HEm@8oJ0<==T+ca*-|0 zT{Ff+HP|ilz!AD1yQc=-Iqk&PmU&cWXGIc9m=4;?EB6|`&~r7ecX;NgTF{%GKDo9t zu-iF$3<_uOUl`IET-{9^1>SAnLxL&EJPODa&rVl9Dr0;#OCdNUi#x6AOs|*Tv#%lY zFE^1r2xg^F?*kRM$vGNzpkO7QD2>+3e~YK&L@U#~WC?HI1-v-S)DFNj)GsiggCRey zqmZda3qH5w8Mtd4&aMNYsCQfo0JsLASqqaW#Iryp>-$n(^=jU&>F`jNR0n5=Qwl|n;hz1b_s2PiajGVVVpqTfy=w1alFSlA0pd`l$jx94Eg zmQB#)GRURY6Rc!;R-!WA)r_GIzi>vmIiV@eJqq)&gwDCNiHEn_ldDI4*8a`)qQ1n% zzETY?S!h^(Lg#?iY6S#vNUN`#OJdeQ+5QB8(fy1^Z%3rd%m9tqPmFsT4do8s!JLx3m z!KEP}_Et(6AwfBfhguj6$mesZK*jiMjb6(I&nO@oXA&w*BOOQtx zN3XcgM&JK-7%k$yY^T#?1QaQVIQ>Tg9&)N35O!s3e7Hg&hEG*L~VP=;$b%K($ha>)LlJrOfj< zTOlm4;NH#Dy;cOyfS{Z+vxDf^)&Q$9&4+{~Q7CkN&0dy(DW+;EHBe5 z8yOk30#$*ZSdw=i!KYfPo!F-+XUj~>EizjnU7qjNP>0~lLE8UkPnF;JWMc=9=&Fcf zW`AaAmm_aD|0eHXEJ%6$RR9r&^G_!&L_erruZB~=E9wk%fru@~7RImVc zVhu38@zJ_GSZoFKVddXJH9uP4DV`Z{F*VhTM0{eoZ3vrCD~iMR)n_Si^BD6%#$l>U zIxyI4c+0ZZNYOC1C!OJ0FimTG;>l_4s8xAysJ2vGPrWDtrk;a+@)<^&?Y4}v+IiGX z^jRI$R)Tv<(I=?X0bTS{CzOb!sIexPiYC>}C5VJ_RpqXknmb6|Pn|%|3$>~ih@#v> z4kFG$Y+a!Bt`!F7GB2AWE)B|jUh2Mc#z^_0Yg8_IL82EZlG)RN{W{Nnl&41CsHOSR zKJH{b!LvsptFmVix0S~#N`|HqU68MczmoDICQ2iURj|9ATk+HOIb@|DQNmRL+|_&I zY z@}nG3o(oZ<;bTA{x%xgVi1<*%!x^4V++t4X^b28!uo}=9XEzB^bH};VlGSpQEO{i# zI&4$4V$d$)dygmg$K*sp{9t0wknAt=VkCY!sd(l>FLsj+!f#i^N^%=0TL;T_F!fVK z4TQTYnP7wZ!m#}e;^+gf`}eDiXU<&D6>PB47~+8gY-<*&Wcfk?1p+k z#!MztI$`E}8pHK{r{1d|0$WQ%p85#OUFzJMzd@dL*rN_3ZO$^zFvz&hsE6Tc?Y_jV zJY#>cUt!u-^VH zn~{{>nHG2I@z^!t&J008k^4`1d%zJ0%TQh&oI#sn+ z;n&$!^*nobs$gv#+8JCyUy9f!Q#Mx8S^J(V(UzMdMAFm6D80sb5br)|*L20-h{*8R z8#7fNc6>j)n;lG5bz{Xs;D~(G!uHNhB%6aF>)Z`Zxb|&B);J78X}e`Sn{G)1#cgP? zmf_%>&6?VX2wF82)`4sOBL24Fp%WK|N}MS7kusJY0$*?kmQ9zftA~kS`|5Pg*1Ona ztPgybM%==!Xt)s@=G2AzuF28psksu|nFZJ}>qwAUk|0X*{g4r+QAXjm0KdwG|B&ep zS&^}_IM@M5MGsfktp(P$-WYp-y)5|a{Uo~9T%XJInNFnX-SM;rx0xzo6PP=r=&RAU za2`!@4Ne5H)a=Vv5462HDBQ`z!%}1$McGg9ro7R@kd>p&&lHm^JZ2&XEp6{xGnEY* z`?F^COvOF0bJMYz{RHM^^DHA>!9i9)TuJA~V8K_=2{)OWR8Uug$!2A36g5(#F~4*e zg}3v)`M`&us86k!`RS)(W6u_5*1eGjkGbBPhso>3QDjmsz!DmvdW&N4MIH|2bxMda z`dsR1y0`FEkYwcL6X8f8y!(HE@i_iQt^IE>o~VGNhKwS$w2QlijGe9BSLvR$fteHG z7i9NWQK6uqojak{U#)`-41}!o^n@H7On>t-*uLPq|J;USWBQtW`xlEx%kWp*-~Wi? zaeM)D|FSYznEp~b%nclsOq>b70|Wsg08xMhKn9=;PyrYK3~au(;+za@jRF61GysMG zLq`LnFH7UAlkgvB|Li3E>(t7``9JRdI{)VbMgSu_YdhPoqm7LLz!+cxF!@J`;Xl<6 zQ-G<3s|mo=&czX61~79p`Dz+;1egQNJ?za*YylPkOMn%?8enbW zvjeyQTx^ZMKCO|RqY1zj;12Krc$zrc{Trb87mxUNK=Es`@4o|z46F=)0~G(7^!pdC z_;)~&ft`iz{|YEpDtl?8sG&m$NRcc@gjd}=fP0`JBMXc3D-a7BAR)>tFYm^+NI;M? z&5a2E81CB*YO)<`?UbL10I|If`<1BJ4C|=mG}!{rM3VRP!JY*KY7wy)2_{H@IADMpQ|q3niUu7lXpAzs!@*8tOf-nZ zjOOn!4Jk~`La03mjDUnFL5iFWsxHo?nJoXEqlTFgLU_i}7H&|mS?z3i28Yxfj{U}u zr}{e-aB(odY#bsDY^*vGE;?9dP;YV|p|}7#i9j%U0I4xyVw`{^oQ{8{DKLjO5Mz4p zH=$We;N2TFP}mZz?c7>#wx*@(I23KaHuq*4v3Jra8Qz>mi9s*!*pVB zf~2rgBnW7|h#Fv(hx3fd`t1IBqF`X~M7k-51B7V2Sub(3u)R*jW7s4>W8pG8h`}M=i;YKDLgex9yQj!{TG9sxw*o}ufM!~pVG1UNPhQ)1s z^t%8*`QSh02*i95!u6$)oR4sO=pwJZt#8nCsbL4ldXdH+EqZo{Cb@aI# zd2Z))P(@+$QHNCPWmGbI40-0TDj?CmLTuJ3vt>6VPt z+j<8+Lg`S(O$1NP!!{y^rEJ_P_t}ru7yqx{y?<(Kh!$N5-{rPP5o@M&QvYe)A1*5% zVuhB(@yYfn?{EzJy5f3t{n1XMJtU(($?% z4_#kw1cAz$b@FMcm3z^*w%+nA`RKKuZ%4{VuKAiBvdXqaoWI&i^Iv>xW^TUbAj(hX zdl?Tbrm2I~xJ#JB_8AFsW%aw1e|d3hEBu7&{$FzaX<;s)Mr#BI$%+mG#b>QHP4BcD19eg#*V@|8v8SCQZCQrM5 z+7k2Y_*ucemQ706iK}FeEsNUHc@|IgLaFQm?mEN1rJAv3S=yV*r(Gq_^X*;ECUSch z_rcWC3&JH|Q&odBo>`WKWXSh=FWHQkbFD`!gK2Nb>zUP96LOvO#G8kXS;9Z~w|IN$ zvoB0aoX$QNHpS1p?MSxiKiAow2rt4Y^1W?RD#`Mir8?J|+njZ((wrU>AG1{mt~C;x zjCvPMcs0WCJrBX2RzkMvUcfUX+A&162B`C-!dXWRi=DQ151M;gSAK7v3d@BVZHG|s zR@L>2nLX;9f4<}+U_<)R!8c&K@zpl{Ia#M$IHiVLVv^yu3zq{!m&O>TW|@0?8(fCUdoPEKy~eV zy?jg%Po!#09(?TDsd;aZ_e7#WUNov{?s~*v2$pv>*Kp<(cqRsXQs1T)sw-*Re*FcI z2O1A%auZ~got9%`4YfwE)ZTH^KL3i|I9p_0^2_)!mX>X-JF{I%jI2w2m0nKgbZ-zh zXIE6$%8twrxURbieA94dza?4u==g`lt=-*F!&+*HGIC2+3(Hg41Sm_+pQ5+Y?dcYh zm`iDGYFoO`HP|@SnHLLF%ynZY9Gd24rO@~vtrK%y%r3mTUMzk_>!UK%t$SN_8_2#+ zs@PG(Hg}G)oGZ>txp{}@6G}Q1G;kAK{g+emj#x(3CJ05wHZ~SEKP4x{l6RgVv3+5j zaB!wJgd1@u+uN-9HXsqO6BTcJhZD8xH$H4lPvHpj^_7%SV%4{4= zUxU71iYWsrvH-KXul%fKL>sP=Fe6-pQhIT#qfUiF_w#or?e2glbM@&B<4y3*N2J<+F`PTUPjoXNkz znS*d+Bf=SuzJDA@D9D*j+%3#m@(4;?Trx~D%oz#_a?9=V{rnHl>s$TQ2&M-hB+BHBC%DMCm$hewOMFwm*K7>pW*O-Vi{YRPCRL>&ky{(a!Gv^3)+p%XhM z^iP(sAYmXoepMiiI5PiOgl-rxklHjLM)}lYrsY9&c>RSr-@d_~>s`HcJ~|+nsm}&( z(N=#OLZHJT0=76%)I+GiZUUvZYETz`LZEeYuo?(1e;`Kebi1T^G@uITQ%@jpM6iA9 z3!rJ|MtdMF5apg^!f=>yIDI%52=+HxAevl6>Z_bZ?cexL5-mXEz;yI+WKRsR`v%_v z-x)f9y7?z#^f6L~{D79h_4lmd1NbI^;KBWglHsdV{eZYnD|7vT1382UcyI}9Vn>*B z>FhD2%;;g^-7Cr{sXy6de^+w6$=P6BRy9MyC z_!?>Wfv9U>#(UOpYafglQ<T}2+>T3|NJ%=Cl)RKr+-~CgL>^hRD&-iR? z36HuU`d`eH9iJ|{D@h;2qXu$V5(T!o0bD(Ui+l19paZ`jdjAY4 z)F0pD-KqdcRu@0pZ`s+VC;1_c4-D$V21KCZP40Ybcu|YLp?95bycTQNMlm9#^OJn_)m+pC zZh=4i=>D)-fz~D=p36D?+SS)=JfE7?PqZ1tFa9Wn{>?49^xmNWFF0DfzcIw?bzFi= zErkZOFDM6bgTlN6M;VvHL0vlUaB7q6a;7WHE1e^UO?@+e_4xGFE&Tc%cJfGOOCcs)pLv9IyD6HA9z$gCg^#O&9+DyVmxSWVV{g07C&5iVf}zk^$NXf=-XgA(W+XX$t3Tn z0RRoHm@o^%@8bc_c1~l4)X;dbC^`?i^tfTx3IeT0TcR85lBf9GtFMd_T<>XUHUmF~ z^18zAeoZa$a%dUx(IP{3G#Z4t(5HB(0_3{A0nuhG;pM%NP;$TRJ z{+^9)9gJsQPYOlv{X-(tc(-6SkQdnc)Mv3vFgfTAZd{u^H9graHN8oSt8YQ7OnwT! zO9f>b$d62Ra!q#@?he)-ZS1T-)Lgi?R5FXaNEL@Alfj~n7@_H`g;SV}?*-~vf-#Ft zb@io<_Z+tSY%*e+XFqQ-2RDU8YCA4-Hu(;M`X&R{Fs-7$m_wRd8k^d)33eXh$KaZb z-l*1yV#J`mk9(!Dr7814L5g>PuhR-nL;rmp5Ga1mdEJt2bmRi$2|k)$YQWigl@2l1 z7EXUQ1@p7ZX<(f z+y35sZu`snAZ!O(O~p-aI((5Hvrw}+q4SYFWar2qFIIuoLxH$BrY!1V{D3 z%WQKoGV&hXKi-Yv&)PRe%?*>pk5y9e74y}RAA%6a7NdSY3W83$Vv-_YLn@5HJ5?&6 z81_GH+?8T)SWX`MVtH?DQR*6rskgvn>+7%82CJ1k zs!DWrBWoBV!7V4ETZAn&2w0OT^dA{d1l;=svcdUsQEV zExO@p#eUO_V7yVpk`N5Pho9*vH{eulk=r7+Y)(ymV-Vi#=o^cmN@=nzkE~L8jasSV z@RzVk)su7##+?(W6&Lly;@o}K8K0h`(*a7&G8wNpNTe8C6yN2mMBqJXDHxUG^zj+c z1g47$08b0<+SC|UeST8ee|=t5``MbFo~sOlBpq!n6Y_vL?iGir`H6s(CnW8j0L)gC zVJX*NH8&+gNSScNQ#B~6kjK{n^?^Uu0R#-vv=D&}nb_Z0K0ZQK>@ITp%1ylO>O(`r zG-i9Beriy{H7MP}?nKY(vidy2)P8Qa*;tGFwRg;(m4wu+nm#+Fa61^r z*k&tD{S1A>!RafCj$RZlm%{w5P$Tp3yFwv&^f#DmDo5L$sjYWWc(I4*B!`?iAwV-n z4+SBb4(A%`lAumJ46H{zNyN)!oEVjh~UyL!)sXR&n?q$n~$Mi5HWg66oh zK1W@RTYpv=!i;6MH6x3wTC%3KOyR?uOcf$GMpKT4YowPfjcDmjRdg*8F>mF&cS$A2 zuw-E>9?0q=t9scqvPo_;doV={z5Fm90V3fHvf_MQGERI7G>D9nvmY4slCDJ%EJCrV z){s4;U!s6%J#yUZ2ZgMg=nKUJJTdSD-t=N7k!Z*cWZlm=B0(20YQPc7L>U{3PI3B_ z!7pdih)DQ4E90VooIA%xW9k`^S3yNJnrrd5yi7_>a(UGBoh`fxN)$J;!c@&&C|J}4 zgyS?7HK&S)HRb9fZ_)*Z3-^$kkt9(+Ki9e2CR>s{KGkcG!88aQry)v-}12Jww&PE<;%)J)4Jm!CAn8Bk<>oN z8W^NGyhS6@sX>&yUZvUJImsSZOT21n?J?pG3_hJz1S2s=akws;$)`}wc$!R)Yqah}wnV2S2(iKCMnVU~)h+g7OvC6nuIQ21r1R<3GTB~@q4Hfqik~b*7`Pe= z8*xbPYC#Z#gthq+{x_n^#6376`_i@@qt0yH1km9x)9H#=ZH?BSs`VP#`QMN+ImZs> zg)?oJ*ajq-rz**DrO{Y=nj8!#{@x_aW1Vbhf7H$V-oy z_v5KqAX+?~T_|f>xMNRRb@aN}zYoH5!%9$Eh}K1S`KWWn+_wWw&dE|HNw!1lvuldv z&iO`vaAdEsq_|pTe_(j2qqr#;R(ax6e6oz~$_5+@Muxf(qrdn7c~o2+@vvDKZBiR>+X6Pu7y_90)^rX z_p$_fd48PScORW$^QnRw1Igotytk^PYe;cc2dLS8^>_P0OkM0NQrMo&sb6B9F+HvW zOR0~|i09KX!d(v^9%i=Ye@7u3K6IVxWB<;Gg_j$@P9GURxXS@~$D4-m+6!agsKK9( zg(x)H=u%%n5$H$tKhzSbeK#5*{uLMQi(eo?U1T-zhy^zKqn zNw(9Pl-il;khMqWEcdbhqRKe41W*kc1V@rn&CZq47R!bprG8RWpyh)$?99-mkLcrf zh>}1`7pLmy9D>63z#~I~+*jwFZlJX7$6o9NJ0bQ3gpBRKmdWwD#6H^1fi$6m43M!+ zC?~w5Kv@@1lSzs7Gc=RkG#fi*R9lWPTgp=n)ky^jACoyUEb&e}_+3Gg5>@1PPB6MF z8~Azraz^Cs8&h-1mTl2e+NSbsxF3hMMG%#wwlu&T1SHWV3vi*x85f zL}kF^om;NQQ>_v&s%9C5i1YT7sm;_nJUvq7ER(n|p&p1zZh;0hyWMK@VQqbJA>?H# zb>|2Fe;f+m%ijC^JMq|o5}iM*piCC4kSbTZ}ckG}sTUEnue>f+t< zOJ`9!84&sp(v%NJb=)?glwe?13ABvU&ZWLwo{`2;u06jRbscfzWR{YQ0mn!e9lVNV z-b~&HOS-W&#e0>>c<$O+$pvC;AyJ-Q-ai?c`P@F6?(meAD>w9xx0frd>?wibR_efogTl?C6-O&r9f1raHWP z1VdI^2|pbm zDSn>De6R(9x7rJo4TTCxLJ7PeAieti@%vdiLiYZK)EG#Vo;D*QoWS>YCM#6U+rJy9cz%}^5Hfan<$tEpg*xTBS(ykO3jq-Cp4xGs-p zs&}jr>squ4|>SvHNGEcJG+0LEAmjha>wOnz<%oQ{;XFNA2CE%0Kyx{J*rU&-*x{jPo@M_XXf%unkkTXKyk}R{ZONF@q4Cj>o9TQ_3N|sMHMk?MSht_pdR%`8 z_}Qhl1-;_DZ8P*$RKn0pIVjgBmMuY09-q4`SUs1FYfEhl5}iUJauaN+wK0kaxM9$G zp?uOP(4z?QQ2`!gsJzJ(xiJ;IZiy&(ze(p7SEk|Hei6PXyz-`UfjJz-_%z17POgN& z$D&MuYP^ZntP%zLqQ+T7gHaI~5!A`lATU)&B6g%G&vA7IbpvwC^w7OLpTZ`$#V`S1 z_S-t=YAu6+2F{%$*hxT18-8VD_!xMZk4;WlzMyi2E9u1Q8RnKzW&!Ra&J=%EKT(;) zZ;TlIlZoVClpzbD+O8_AVg40dba z9lJF!q=Ub256nBgu)W3%vXPW^A52b4lnWIcE}zpf1bw!x!O{@Q(w9l9!NPO zCD)G3TawX~mHAmuNFI&GDx}P(k2NfuWEczkdNMTRb{Tqn9Xd>x9dYUr4XBgda$!Lo*$Gf*@*2-< zY=7jEr9^3JOYlytNnnHlwxXWJV&QSIaP-bfx8Fk?W8hUZgjmC)2APxhMC$XlL{XWb zR2`=*lk$PR^wy6;2rC7(8pI66*gIAiMB@%v`w3GA$a0P>Nmy8O!F;X>4x9jy!O~4% zsR+fnjzN-{YwG3NKl7toLwW}8#Wt(x&?>S2mVse88K6CM;S*ntjMAweZM?zvsfg;G zwpvV~$Yl?8_Vy!^mQwI#6}CD*)6Mt-MY@*7^qA{_ZIkB+ExJP}Xv=Ie{j9kPuC%Td zn~4!c4LLWf5ytDhqJ*=X6|P+ksKGfpB7#2P^fGW!h^YZmGIA6Y4zW{(qsu;6DFk)y zJ~^~vxL@vmYe&qAq#MV`cWa6&T)!#EqaZf;o2xF)73Ob&u>2#Qyqd@^?%0L>Je$6F z?H#9c5l@7~Ku1{?r!HA^o@=W;fnKpqW$zh^ZVK*3)O0sjHZ8a#g3SPV5@fy$6pr-~ z&Ob?J(dCcJF*)BfEXo#2atGf&a8GaZz8%2;xFV}P*C3(`UsJdSFp5)GK&KBQ_n2~p zc8@wF92^73sFJ*tkS6)SNgRXd4_qhtstY!m-mZ*2SJgK3>?2+AE?^JO4yI>N-A=Q^ z-LSgL&NV&*tX3GrxaZ3~P6tDyv_1F>;OE#`0_AEmngeE5zlmgUSr)a~#?c%3>5u{8 z05zE`Rk&U|6K&+5jjInmu-0zX)IMZg(PQIQ2o3!xCF;$102DCSyNvIv@(Oe3OQrdI zY)aVG(zIi<1lX5AS&ixK>|Y^BSa$_fr;dyO*WM8CZ*E~f4b%MDsTN@Kq8r2u zd%9Og)BGoo_cs^QSGJ&uN(6RhTdg-g9V{`*N0WK1Wku;nrY|0b7OMANR^ zU$&o?bL9|FjKAScT7|WE+Q`se04uBZlnF5hB-#IHkj09nagH-JfyXuwveoq-le7=; zgw`Y6vWqlS+ka%!IUx&>SUuv{?bH%0#E1)*uu_PZQjo4aIUY*1ehr_AF`fhp2s{9QLi<32&QClU(R_nAR}pc#b~H01U|oxw+3+6!xb-F zc~|xQz1c5zvboJPk~cC9yJl=7QwII)Rd=}@U^vUM_=ZVcy?NI*KNi%?z^qeIHcwQ%7`Sr_(E#2D+EBMw(k4*9SBC8V16L1aoQ~GWfJ#rvu?$Uu#096Y=@<$!A z4r?~5Ud!o|sbPHVM%7s8oDLcmZ6bkhly))eagJrPRo;6rRRy+K4R2-7NRVEB>hFfN zYo#a|xtzU9<`k)e=s?PuYSj)abPdyzgCi{?ffDL*7O_nTdq2PE*sh(X@-CZMiecmZxci5S%eET} z42$RJsto@~y@84GH-DBvt?D)TOLxw->>mA}0f{|1L{hDCfTzvO;rVCYG!MH55lLcP zkhcPB)kzJM`jVX=BFhjvfzpe`J~uAAzp*cG8Mrp0xviawHYxl@hY`bq*eGKK`tg4S zSXb|0xq0P@>Ry%Ff1B2t!y+AvS-e$^x81gm9lEEo!mf|zd{8pn)2J`FhzX1P0DYlX z+%cP>RSkH=>W+k<;mB=;nBQxV`SBk18*`TDZkPeQAj&<|jd>H0=+RRsb$3bsWzH@ebyx+!kXo6wfT}*v4igt}rT<{@Q}+ zpAvb=2|$F${hngeSf6A$^-fa23Q42?^Mt(B{Iyk5Wya`nv49WR;GHbR@WZjhQT>JF zy=zNHmO12RC(K*HzTeJklm*7(LD?d++ zeqf(^SSUryY0~{>of&-Iaz6s(7eWC>e5BcV7_+1pmgGh--Jtjhgn(0*uD}WjRt29kDxWW{B@LF%&g8tTIhF%}sR>E@L^wFAg zKW-2(LW)aH49k;Re<=Z;+R&&a#JVsBzX7mqEAEw+uS8OyO0oR3vlWc(FO<+-Fgk#_ z(5ZGq-MjY452I0_O#B)zY>tDh;Z=B@s+(;X-VOUGZyi{P3% z(#cV0HB*N`i}i7Luo|Ab!k)#X;jlQ;%OzC^oTI;hvOWxy)8sao;rPu(_sf~%cMEnG zQ~p}Qu@_?jVu&2AR+~SJdgkFxQjhxDgCbD|Y>a~Uc}v>zD{%9VJEe&6n(Ji5eF-3% z8kkmH>PltQC>`_2N`rbNavF}=lXYebxv9j@L7`jee5r3z4SEUK>YK@!2jX&W>-(f1 z9|4f5t=~KjJ8^5TfE&6A)J(i`z8CQX?X0Ar04Ga$eoWiPK35Bpltv-&b>)uy?p?A? zYkK=di!ODyHO-`9?>dEJF?|=$O5JKpeibyWHVR3_*kHO#U>nN`DO=`gE7aPPc!5~D-lFX0goA=V zZNFwdj%aUR(3J-eI9sEHQ+USxwzJ}@zI@~p%)QF;?i*H>j4YwCF=bPkX+0=}!!6tC z(2jRcb;2njZT9(VT;gp)lm-7cjHrYB$;RQ#uSaf#TFj6V=fmn{UNddCSKOb3NaD{( zAx+<=P?7qW&73eg`)p00-TYAeG6n6jfL00cWqQ30nSW|W?y#A=zhJjyu5%Q$_p5!t zok{@Xux%Bk+c#S4-9b(&AVi=-M9|*3t*d?bLP25_lk6oX76oA)p2(%DGMXqxaUArQ zX`3=YlTh~sv3_j}!1-M>@@DSQ5RUQ#;&I&n6kzIQ7TeZsh67m?*hon6xayZD$=*b; zu>W=+{|I~D%*U~F14s3Zahi=?o&Eu5+k}ZG>>unLY4WIq_A>MSqCZXBiWGZc6rWEO zZcxkTnP4MRBlWHPr6;AWBP9h}0E6k$7R`p`aZvP@JwX+|6$1VOC(p$NJap(%Fa3li z##Utnx1BC0JQwxW2rvD@KmzwCZTAn-;FL;?l0gQV=InhBv2JAFpRrku&l)D$UT9q( zK9)%eX1F1Psr?}|jiPNQ!y?NVHw`R><5=P#$GpcnPXgGwxa3io;d|q9qQ<@+qNQZS zwOIT4N>LTWd8+8)@g}9nMiPwO`<41Wjw{$5gpo6u1sU3yav*=DAS3?&F@S zikcNwv)Ds~k0V3D0zL5z*wCi8ZH`g5(4PkMfv_Y^p8AwL*dI+AcC)gB(9KILJOi@E z#z1rKuvNB=kn2+7qa!qp`XUNRWE+;tF+bwXwjjFYHH$RV*$;`gPBD|%k#0HtxrdgHuyBJY?CllW(&?SfML;k#3izP< zA!A@R*DlTS0s`Mg!{R%)Y&E_aK3YqfqF8m`Q|;0`&6?cSQMDx)ChMdLE~c(-5EK{a zxZ-L}Cz9T1>A0tXymQyaz_(GA`g5btg0U`fMsiqS@$E{%n?nj#6Ik;7{K6rN z>{6N437grwO>lsFc4G+E8?QW?gPF+L16t=xN)D)&6prEwzUgtui6sU`IXSX5hX--~ z`5C874V|a`MKQ)Oau-V0qvuj2&I^S|Lpy}azTnBN>m!ckW7MaB{e1adK!Np=r_66* ze|k>NL^_#;d#PveC$#X3`}^C>dy`u>_E+1s8d5~-m;2b_)#I24Ecs&arMN3U#>+p;fIcSrZK}u zWz|r14Rz&9(uLT{KYI(w;)G${CsglEMb3BP>ke~m(8zc@u^ntQ#(yJc7FPE4M+{ca zkQ|Ic_Yy>>Yar{Lbg`mKGJ@9M}@Dy+SW7<4F08uoxaJT}DC4 zNewGbD=)J$uvXS1I>lwq_|T1x-0bGLbx}UTaY3cL#2pWzEGO|fN1SGNd^g2k@|USg zE3(udK5`0qzh$M-UE)mUa$c)olAyh1|55i~`1kr{ zhQIqBVgOly{Fmop2r&AGn(?J$SbupK=3nB)U)se#j0+bV!!Iks!p!zRyo18iU92;* zDDc)KhFCdWhX!x^WjUK{)a4!Q~QTxWZ(pV5JJ~Exz#W?+k?oLQ(8?=&&+(z-Karz55I5m5U}CV zP6Pmr#u8vC;lyQCQcj$w>$j1xHD22q6{WtgH2Q ziWB&=)KiFy3+J)RF6blX1pz);Hl~QxGzyBQf`B7Bi`Owj3j`_kBOT4+7Zy}^?;Aqf zkNSF;-j**z4`00zSQ0Lu@5wUk%O;QaJ?fw`)= z`uo$Z`GZBX?~cIv6Nlb{qA#`y3Uq?6z`)e_BWz|?p?7v-UU+79WEn)?)ckg)zU$nQ zA4LfgN9xx}Sd(8fT6cHv_#1#%1xCuqYFm%k{;kghn)!JNns@&tgD)ZcX{e-Z?i~Z> z;gWwKR={4-rTKOH!ERwVNcv;%3L`2UY8Y;Nq`UVSyu14)W_r!FPL|B|< zDeS3BGyEPrduXi6x11)gxJd0ALX>T3=H%bz{_C2|Y2;Kc?-!B|W{@it5Uy#yzbjI$$~{cjt3-!Na-9mfjoaqF29 zQ8{_1dqQswM{=UB$jw1x2`-~o;}0=R?^q4FBGJmA<=Z6i2`cy(P!ND$s;g?KD4l zj|&QFs`fM#|9q^O8Z|ka32gHQLmbJ7W+y&KP)%|YDxaGTyTO^IQ@V@$F?<^cG1v8iZ4&9Wy^a&wP|!NrEorg?o`?4J zr6Hj~Zc83L$`S$x=fs6L#<`gqipejW)XX`|>4N+Q*$n6cup+)+Op@nqX*+whz`n6QofDvuE zn8xqSb@&Wb3}!Z)LyGcIZp>2WIN z@V+T!fcP=w^4%Jd`g<6<1q8=(CuOlVHwT!SKEswVHDeSAB`{{EEz7(gxtmZqXqMcn zK7+yVX7ylf3WIY9GTtb#eG;CeA zk(|G2V?=;lSY_Abj-^bOEYAr^+a!z`i3p}rWkIKt-FzF1Ca@EnVwkFmFUFGTPuOM- z=83Uhrulx|3#t(3PsRNLR8wSzMuw--dVUn>vy zE|R;x)gpCZW(NQy@tB{kmrDCuQibqXOk)Na$d^J>lQb64>U3o8>*&*W*7LODS%q5a zZ5IuMxO{7H|C}&Py_T!`Tubo6?K?r61V!{Hr{hHNc>gqCfuTW}pZX{5XWca(oK?vY zb)@7qH$z=6Wp40Bx#D`yV)_K697VzDN+UZlfxp?2>W#w!hJIII&(pQOi%`7ccd5av zIiOb~y4aD;_Irx_>4|=<<{@m=P6+i0*f*b_lhxU3Mc2qr7|`CZ10?kEkw1sXv#T}b z#Qk>tCrPT~(2kIzSA~k%eP%<-M--627n)j~E~J%mzPC;2lX*<0tGf4-Gm|2B+gq#$ z-y-#1>unE18nH#G)-*yAsIo<*-nnuGKh_TUMM?>~E=hYEWlY<#a3x4;fhouQ_8`3y$_?vq~ZMeT%X!9&vO`7y98S1$Gcy{WLp4!DPF8jY9hTj z333s}tRkkYEF3;y`hO?xbG-zBXfar%vdwS_pD=CHm$KtvP!3 zXqHPXVFV{|@dlS_egMU=tN#6U%1ko%iK*;ttEwOO$II?T&*S~g-7k#DESR`SYYlpii&*Um-Yqe1}4#Gl#~B)Vom849QAdIIYi-?%|U@OZ1HY<;rCZ8KWS z4Y@)Ev;^Ze+u((M6V4 zfAh-SaOfchwn;ijMh>pYMHOf71#4k2evqNIapffRgpai1lT+HRpUO6gv%VikBi5~^ zY|ZKp%K_PLA0cXvZt)qklg*DACVLJ5giMx(4`wGeHy_JV8&($-hPB~pJ|NgF?AL&n zj<6I3voUL~?y$@U(MuWyT)z!drbo_4y`#bF8CWK!svSKap}EN+E2t*YGM^j@yU1Im zpAXD@sCE1*;sjqWc$GU5YS*Fs7Q>2-+je$G$LVRXNTtP`ar)y$3iwZI-{GICldOjR z`otn93!hMs71#6Xi|dw_>iXv~&4tRE= z{?-qNi%zV)h>wqXf`lRm^Q*3_S&Px_CAIy;X|Mhm6ob%okL5 zDC@_aZt;-1u&d1Y8{d?e;ow3W@}lhn23(i6jq7u3?k_^*N4L{Mv<};?-l5d0;{|0< z!}N+~!Kn#L`N{Wz3ZhQmN6qp5vFVk=5j{7DC8_XSSnpRdT6MmDM8-;h`P?yqKIoFy z*uEv7+7skmj6qxI4sE<2And5DYN%3@3C~Hd6gWi3eg|TJ4Z%9o536w(_(|)8J(O00 zw?`|lrzY48R$qU~GvSULV_Kutgu!j?1lhNxM$knzS^D3_HQCK4Iu*gKI$$}WXXVs-3IspaQdriP>1Lb&uR z-C=d|hN`EibM;ACv-q_Z0hgnraCM)gwzy4w)hzgXj;IwZaW^urnXLE6!4~PFx>M4x zOYPfKL$qRd^LNtMZ5;|`S2C8N=0qVyI^ugR4v&smvDiHUyhRPzSR+* z-uCg_b|~8@`iQE}wv>0WsrZ9M|KG<=^D*tRj)t{HX1SSzRahI(M(xjNX}{@B@J+bk zP?RrjKFsfB{g;^N-YMdD~189rcanQk{nzbW0Pp+1UocG*qoGGy;q88_j_4exqbU#*DskLA|WndJ23_q0NSEm zs0fZL1|w;n##cuckU4}Y`?MsRoY6kuL7mvSylPUX`4N59d|fdBRy12K3z*8y)F@Ha zfal9MjfNQvuOzlH#FB`wypV%F8CVhM8f*)C#62!ynNFNAN0`7Df6q5N#FewT%M?9* zlSj9Q$iO6LYnWy#4QiI1Vm5bK$9*UF-JE3&-Z#F%rIn)Q(nw6&WS_*gRumdtW9F)R z1W>$G?i#?k6JGK1iT^*w?lH)gFj~-bxlY-(ZQHhe%C>D=r)=A{ZQHi3soTEO9W(uF zNB-SAc0}fv>s?Q2IQ1J-*+e3=e~33vTsnxbxpHt|jgjG+yU1Ydm!5H8n`Fa_w*@2OcIE}dI-HMj`6GUbY#bb6$~fWMw|Y!+ zfcc5N%mI2z96WMM27VgxlE+V?zN!1;sh)59AGQIzHa)uSD)TedbcT|Mf-ZuTi1BPu z6gsKxNLX<|GGoBEz`CGe^ce$QbLH)_75?6CwXKrhQ=Q1}9eHy=)?P4UXoJ3e<7p4`y0TRRa*dy0*gT;%h}djqo*FD2V#GogwsHjt!HP8kPXd167_LBO`vTf<--K$+l@ptqOSwz6V zbS@JP56|z5ZQ4E+U-?w$H;DHv2xReaLe>_n$`g1|q zoH{r9+zm-S`oMBz)TSkDhnqq<4oy2$HTuv$)Xd!KhM`q^w&v`h#tbXenf(1;4o(si z(fSU_W87R<&2?H_wt@*E#FeBJRFUjiJc3{>O=IfvBH<>=8~57h9zh7Ls1uLh&-2VEzk6&zN*2@FNTT5;qtYLoq(m#;Y5T=V4q9_x9#d;vKNRq+)Wbt=OH7(nUa- zv+HSX(WAzPqmV91`&kPhD?i1*;*g44(swWByE)QKh@I@hFX)1$24v$S$pOQ>8GQ*< zF_cTV1J@L5#)_?G^I?osd<4FsKej?~)EY_)Me7`W@G|q7)w!xmAz*5Y19DQ6 zOBx}D?C>vE96R+@>-mr&AWl5oXvKE1*{nHC#WlQeqr;kb4$bdE?SrJm*5y0|48S1jB+SL(mQ21F4x`i z5_;2t1|_hMImN+Bz5P9VlMc98Y9+8XC}yVyPt+ zU=w5P=%zM}s!+B)_KN$W9C|gs@zyHQRTGk>*}_Va48uKHU>E>MwiS<_|#Oz?D8^%OTQ;axxT49Qb=$O z#U*9lu~vYt-tbUC)zb@sA?22Ggg(XhXC(!}R00i29Zevq^2l|%F{Pke^dyP)kxi`x zCTxc_+KnqeKXYIiw=TaMzk~OCJ)s6HBRa}fz&D=t{Gi%dEdmyJsVGxLug*1362nrW zH#z*vhGEPkF=#U%8(cVU!y3#2v3=e~xwxAgiyB}h{3J}F{(Y`8y-zf22vnBOn`1RH zm;#Q2RByvy0_EO3v!PEx+{ccbvnVvb)=TRjFvXq&4<{`jHH{UHPebhlb*>+`xl7`a zP+F)Z)LhV5vXI>i>r5iFmHex0%ovJilvy%IBtmFeGR{duXnre$#+hQiXvoWwT(P0= z&o+MeCWS0Lc6MQB>WpMaCvtV=jr53FB-vn7BWBCjQUy@RImxs7$w_j6A<3Q|jj0Bh z|L1A>+dGYv(FZA1;I>1sr7uiJ3I>^|KQ=s>x*Ysd01?`qxzrnl`H0N0@L`70Ckd|1 zi6?mR=Z3@LZ%2Pv1-kxoGHNum3F|(=p{Z1rwEbi7Q-5idf zznBjb!!jV~W5?olTyDKlE_Sn#asUOOyUyjy)oj#~G4gG2NDUD5r~lM`p~Z#FP^1Ub zNal#F;XqN=gbel^t*IUIMunMYoM?{s_aDjGVUKCPW03-!#Vde6UX&V4nrbF^C(-&am(e_w=u=ETY-fu${du%^JsTDoK-+XgH7qCbG6NfRdw+-(6x z7a5Sn_iR+Tk3$a+EjlX(K_TxQqvLT(&*4pNcpPyBWi@+`WE6;7=|EpFXHS0ZCvKj^ z0NiFu(hD%FoJ(Yq&x5WU)O__5&%?tvn^fiWt}XpfbbG?|DN4HLRog&5KgFj+WhlFHz4w5_*li^NFc`^R-gFP3(sT$%{e zqLOn$(xzf^ze zm3jt#Q)3s#HL)I}oZvwncrgl0M*bn{-AXBPWjYedHKn3|EYkAYSCm=-F-=0h&2vSH zqukthT)Oe-7NXAJ0Og(bQOn2g7k~Z5k902e%yAQs;|c!^H%I4}Zc!@?FwzpzIi&i# zvZb-(2k*Tw3YIXGj!1Pbb`y>)>VDXS8$wgWv|59fo+dqCYY4Yc%XA68M-sF}Urc!5GeJ%n&uL_gW(BA!NOsWuNXV0kSy9bdjMcNx zj#It@!_5}8*f(TAP)i6C(ky{uc*o@K6A2`_DMxvbadm;MH=31eUia- zAoTre--xBq>M~Jo9};0*?DdZ~gPtR&hrN=w$3PgWVxlE$is-#Tr%To-;{y8qLcjM3 zhWgxoS3nkD=6s~g3p~~(Ac3Rtcc_7NJ>*O7+oT=;Kh9MSNe@WXL8`X*7or@8y!3<( zWP|(@l?cNI6|czog0L3ppMR?TF_8<5c_i&j+eug!ELU znQvesB`8@mHE31azB2B?wF31!|BSoxfBw)2m3LJ~ z-%+l7UL%9kbFs4aQjsUKo14oq0;qT$@*7092Ys0}c=^8@3)t9DR=x199j{{Be1(Ut~YIJ@K6Zq8Nm1qqoT3?5dLyN z;JZRj=Xh}4vw7K>dC&(iM;jl4S}f**(su??f23#TxpbGGI=%&m%CRhIKf{mKWaYlO zxgkW%-6`ZYoKZ95i2hz2nm18{(6_IGsjD8_q&gLRY-w40DI|z?kbFAIe2*Bz)MGt- z(er6@^`HYJH1JTZITSRLOr6_K+}Gic?m{Zoa8_0VR@5Cm+9(Glz4pJSQVX_h)m|vk z6IW%JU{%xb(81QsAq^==J>JU(NFlhoLqJZqCsQQoD_0AO(Wg%|V+^HHx6kGw)l&W; zv-=%+?bjR&)JzG@x7`ajI`*5L7>}8yFxOCDaJLMz9$Q_4Ld*#8B;0bfQ8%hsP6U@z zfUOO^sYv53zme?CDC$Y5HEw+EUQKpi3=L8@R9kq}xp;?vq}8T%3e}=nI`G&dop{{7 zX1zgw5KeO)C1ip{BSNQf_ReUTC*%*~y=H39rgc33Nsf*h)Gh%UU0Tk9yKetAItna;>SupVMO2)?hM=UIuakSIMh$u0LH z>4-5IMT!bDPfo78QL~Xn%c&fBHN2PYb#N-FYiH!gwsMkzW)b~PK-&{`Iru2W1F4<8 zz+Rs#y@h+pP_lS_2#N2%qc>w@p&0)B-(Z2f%XchI%Ml z5UtQa3*@niK=qRVAobr#k9rqf!XDYZe{iVQYQF;<5e|<#by0T}|F~gAZT(#KR8=t# z-iLY`2w8g;5n&8(f_xR99hZ}&P_}l|P(659g@?O7rBO6m* zO{uMiKnnd>Z~Sh7IGx>NRgcDo2AaH34GBFzU&es8{rMZhDOdfhp#&QkPbG1f7j>_+ zeaI=kYhoy2CIFn`a&E-&Ttxh#kUdjvN2pv$((jxQ8F#9Hrb@wsm0u8d9t*=~nP*IR zbs~As_y{S@%j3i`{>5Y>v;r~6yZ#9_{?H@@*f4+*W!tkX=$!$2*o%m&hhn#j*$tj1 zK5r*rVmz9k7WTr{VVIUihA)Qax=Epdq|41 zp4N(QBB?@aS(p3wt$n#T4QFWz3G@A9SQ&0x^bjrwK{HI?5c6%W*h>IQ9Lz)jV-;G< zj-9{52kH}$N=i5Cw#9~!qxNg0(kSlHWZ=p>ZdP^yorL`GkqTckHupXR%ir!c1C^$a zm{pFjd1XF2wG2xqk1CN~48_8Ec@DQ8#ByG%?@FpxlytylwafGuFYGXFfvg0UWXGq9 zJS#G4>&_X%4=AVz0FB4-e*}**jTWEQAXJ^kF0LX1sFWx}&mLo=$PX>LT{0Tp#LPGm zD*li8avSEWN3Yvk_0!{LgPWp$;H?r6aKr2jN_u)L(K3Cu||0pKpUH;MBz*z)Z zUX@q+=tI=Z$XywnyRjl-v?pnZz;5Fxa3*nJqXM)>wosNzq0JZq3n{+1N6>z`kdU0y ztdMblcOG>+^HGRjb_)G%Ff=TzxsJ+~!i*24k?0EYhl6*Ahe^0e*~`7NUN&TmeV;8J z7$$QwfNi{&-*gKMO<2e7H*ZbCck$VPLW!;!2>X@$;Oz&BX^z#LMEon5a!ZF#+8;lli<82d~ZkoGpY_*xu0+Q<+jA)7;Xy_wEqYk{OXVlDcmZu?*3M^1s}Ytixv zYM~l`Xegg6hXObIH1W=?j1rwOlgFCyVJyqpUbzR}zzzW3#mS123eSf#@NKSdLNMV; z$z))fDBJsBs5v39j*F9q9*)UG+zdFRVySM(@^hsv6T{bAZkBW^E4I7-94gC@Q0h7^ z#}#d)D}@JbVwXTIo%a#BnspRn$r%_QC7PPR=Z^Em>u67VJ$Bk^GNq|7y7SG-^0uYT zR4sli`00E48G%1Us|G23WBt|g-B&PJfqo;qM)WMXxhB!TxOpAh*Yt-*3Zt8*F*~I| zbq|U4rVZI2FW#A5wI&$uPviCq=guZ$$pIk)X0@SZ-svfaHTaHl_B~K|voPVR+0jev z5G<3QwuI9E-FX}3W$6xSJ{8&N4qZ5F0mf7hEEmA+2zF9u1hV4H<@KCf8X36T0}tPa^6Qm zuMDV6rpJgF6<4i<+BHV%yZh0-!qO)dHl5G2R05yjIArmkWz1zrIzwTAW3B@JS(vGV z8(lgRngR95Wya$+;c|x)8C(4bG@C1Jo0HO15&f2N2-Rx@m6i}-#Xv=I_l6c8iUvIv zj4m5wsl^22JhGbXdliyuexWSkK{DE!))H$Y+T(`{HbLf13Ffj(_|8gHAx82bNxWX_ z=aStZ76!fHsdLyXq~&+q0WUfjp?VjIr*5V}h6Va4+kH=o7yCd7fmP;|9$U#1bO4&m z*T(E}E0mNkN5BogYKRk$;-y#IPbnniYnju`ZuyXAh_Ad)EtgAy?koc8l~!>^`jy8- zl55}__j4N6pfegICV$eVmjDi1q0ZD`G~;jj)gl3`sDO-@^tvM?xU~;0G~A)w1Z_5t zu%{|R(#KfiMDrLV!6s?_P(LRIsmI6C){bWtU5Dai0J5t^3JWLFA};QjIn)h?bsng= zmUk##T8!AqW*?>-6&nZBt_Q{ma=!zfw$shjt`z%6HZssrza>ioQX%?1mfU=a$#Qx~ z&p#w>{$aMhyFSfzXIv>-27-q{re}zmcCFHHY_6e^&y$%7WCdX^{L)ZqsB@dbdo?7_ zJgt~*!;W!R$zPxm$NNE9t}?1S{t?QlWk}wr5XCK;7>n03??sJU@cTK9!`a*{&^G$UJ55ZwRGFM;L%2<5hbjKu7N%8z1RpdN1Gt2!(oM zTm&<;S#S9yQ&fP|UcZ$4!0Lc#@eISgahLYUgA}}SZ_e)BVYEjEU(Y>{-*TouD_Hsz zB`KTz9b~Uxk{ueN0Q?qx`j#cKRB;AxKq}^g>Z#nNmBky=@o5#hCF%<8SU=t94Q6S^ zEowY2lSd6EM_N6mZOWr(zn^;<=?2loU$f`e-4L9ypFmdF>S@z(MVH3zKgnIw`=TZi z4N_n)&PC%jKaRA|pcA*LYaE`_9Q(H~VjEmqgGsk-cW}ZSMt09fA^A2x8&6Op(9rh& z7GJ*4tSKu5yLsduOJ_MB_^^RG0dfe$jiV8-n4a??2L1om;kld@bA^M!7QEb z78E4U;mvx81oMO?{P_n6N)YvMkK6^9!(2mWQIYsDDbR*6H}UBb8a%+3H{qD-^Sp^qB&WiFd3kC! zXHGwU16RqQKS05>wM83sXox%9_sjXt%Qp$%A5WAf3qaeL@A7QhNhkO?A$4rIt`R?> z8m<+=Rwg?CtmiL$IDh1ERsYGZoYaS|D83v!mzVYWkjtjnfbu5K^q?i)Lu#BF+fUy& zB!@bAd|Y{W2RtFg5E{}j8To25YN^~0?~W;uy8xnTi`l1GJmF)hqh`Oj0vG6lxfwN( zQ~&L?!pOJH*-kLAW| z#XB6;FwN^PhpBLR2WE}xw7a`OC#rmW0|3%%LsgF4sR1!EDt+4?aC1qd+-B>yQ(o#| zXsvQDDqU@_T*AxcilTlceI( zezm7X_|Em;LTAt(=!-xZAb1PaW2`_YGAH< z7>Kt5R(1zd!)|R^HeFJ-c{nr=*I8V`KY5n-hUd}OtzOx4!NJeWLWt#49-(JoQ7fhA zDg_LFy?dqDPsGy0E;J>Gg7mqAq6}@zIqLV(R#)Z1g!p+7fz@e1 zvfd8C_CSXNy;nl>51LQlTnaZO6z7#t`kE1BjU^Q|2isNqzAnkw>tj!Dpt>-FL4g@E z;c=VBHdk9~#z|@KAMd*b-(|kLt1qLD4l4;}iJg^ABAL}%geRl$?NU_sNTPIA!M&37 zW6Lv)bckG2+veU308I(*tQlgx6!;V!cid^bdxWhFkndD9(rLr<@ai3%Z^pvp*>@_Q zbeK6Vr@~xA0*3Az7}qjyf)J|#Jk=ZB>hcdMedgx!ud}hdVooXL9C~10@+V9~)~64f z`VkYHy0>?t3>im^$t;86%D}ai?P&^7a>Xm%p4e7XJX$ij5B`FKdX+Nf(IB{7a2_z| zKeil5Wz=J!f2{cc3R?RqhrUH=sULdJy5V^-xs4^C8+G)R?+lRUc`RoSHh8JaU+10( z*%J^ZW<0!hL_Q$b9U_u;c_U`EG0Z+BKHyKzT$vs$8ntOHDBGTrR7AmdF!H1R9xBuF zXSDtP(Q(!>t`ezJ5ZcZcy3sknPa=&RySq*I^Qs5r(xQ@!Rm3%FCONyc+CNw+IU{}4 zscO%~CH^Gt4-Pt&S_A(q6bkw0IrKyarBW6g$W^LFJG2STUI)!#X0l)&w1t)z_B5B- zKqs3e#Ht~9=iGTzpNOp_d(ePJWUKXhEr8=W0xEL(s3Ubb6>2Mt`OTbEWH#}CPcWRT z6pUnhGxDX+OUfMZ7D6J#9*k-Q3gN}&6l1$1hMFfBj$~-tPLc&Yp{h**K!pJBtY&(P zhD{e!&?deHH)A5FO4SQ*bES$|y`WvD+%7B$H=dQvheQkSq`+LiFSQb6@R48bgfF-% zh2EO}5l=MhN56j0>hQoSthHfUJQ`3jWzWF&v0UCi_MVd5e-COG1|@3uILxz4%wgJ0 z!Yk^1yA_ea*-_l|DzO57X<^yB9f* z=^-K5?MdX(VJ<9w4-ElHS&^h=X!xSjB6_YLCJWIrE-Hi<)cVNKfTn<%oET&A0g|2$ zuXLcy1gbZMAsqq&cGP8@aWz}2m`6QX{R&hIUHEZ!I}Q-7yjfPhKpda;opYtDCUMi- z*#q@09FQeuy=`8K2MD5dc$8c9A$T!?ud{MH%nBk-Qat6wh{+AQy=7wl^4mbyOU5Zv3sz@I+MT zETg4+o!3_juUUii8u6I;-bJT`_vO}{e9D_~vKdX5nSf zTh}>3cs6)1d%ch;S_Wx|%IXJ9Mr1;x>`3Us@&K-8_XyW?$Hi3}aOkZGH)JnzO_S+d z19QR`xarP1{~qygJyE|F*0y>!|7 zt}Kf4LEo!e9tnt6j3%>{o%;s2R05qmqsMw!Ls4tS*wEOefZ54Y_fPDd$(&po3?xp> zjRY9g0;I5)TFZ3V%O;1ZdIdN>tdA|lqdgxZ#8P!NyBA@LNsP*KyvpNhUAp&r^utb7 zi5)IihqBvgZXTKx)!T382y-KHoOB6IVRC}5&89Jy7e?uLuALTS{Q`Jx3T5nyIy=MM zo0S$WRoc&uN!jot9508O<;{PwF9{R2&@li$>oHV)49;wdqKf9zK!Y=aK^-$v<0lG} z0WZ7IsG(;Z$C{!I)P#f_V{NNv_KTao#WGDV-24zITIRD#=C-X~gm*;gG(pxBaPLrJ zqSX3Y#u$;}g%BxUVMKb+nBMry(Npkg54Za+Zm=H9&5D1#(NmH*W5S(Ui%s3XL=Z9Q ztYEk6?#dw?jj833|5`Tk)QaqMD!*?i27R|uC#%}u-yIok!8M)l)y)$4emtX>B3ela z2}gCZeUXz#>y4?;e9O`1bRf-iP<^H}RIx`vW5(;e|~GJdLLvh@m1>M@>F z6XBVrhE^tco_+I^+y$J!ZS(DRP>NA0{KJJL7)hroYbAqbuWB`Qygvzb$=XmxXp_F+ zYrmdyyIe4SMURFSq2mA=OW2y|PNk^haUxp^d=kv&QY{K9!qCz8(hB+`VQYf=on28+ zro~H5Rc6q^7PJ^kMwH}0Q$XAHS1E2@1Es`K;tesCoR1S(KN?$snqJ9H=ezS0=R0vC zvw{c8t6_y!GHc5w)&Pz!BItsQ32-^Sgn zq+p=$_q_#JR$5RHAaoqU=ZeAVNJ(p(FZyNKK|Woa@MBOjK9yZ(b_;l252ZbF z5?+XL8_N2*h$|5)SW2~u?o1~RsaLqNewzw`O1(bl9zl+(jH?dm{0vt}G-u6-3)M@m zWqomAq(M?+os6D6QoavnAP@z)R1~G|;@($FNOsidA5_Pzlr9@p4_qzgMGTi4@UCG8e`owz?}$u z7u*>*fkPY5nOe`E)rE56AY^ah-i049;Wn^tt){-=jkN0V+U>Sq5WU%%CV(>B73&>i_MHkUhm+a8hNZtOB0H2{+OP7D8>brot3BrkMdDO zn9cWq#m644m<`v|7ukVCCsAF0KVRP%`{8RBejv`UjqI}ztYZ|wy9BeaYw1KvO&v5g z1OY)F(L+=AF>HSa+@2=zw!jqRj(Hg6%8Dbh=HO23rG8L)AQuVRRGmeWoMfSh% za@L5(k`1ur+PH<7;lvNF;>V2|x`ti2;RF(nE}R>FaUh#DW{z$(VY<$?yF}L(Q)MUa zf@UlK(cBj`tYz=EKP!rMth{!X+fzi>A!?xsh*qF%aj#18j9(U)mnneL>H?*zK6Cx& zQx|qJLHO8QNYX@cV-ew}b?YD8fiBVWd{t>SG~RwMQ>3vdSwEPTBCcbY*; zq*>^jxN?fInR5Uo8^ zXsj{ObY$9>cy$Z@!OP=JWBNbTwJiTjH~Rlq*9wY=$*QRSzv@~=V^in zjLiQNQ)6ZOWxD>Cx|ZcPl>MJ|EyFLD@qesq*;)Q4rpC|?2@G^Ba~M>Mr{Mg3Ow$IgFksmZ3P5?64#X$ z*#Nfs7j&{_uoAG*AwD#99dMi81{o7mf-IK;1jHqdF&F?8fRi7}4|x{5w+~S7wG&s1^@8J63K6Y~&BiU(!Ols6Bbfe+)np$1&T7Ar4my!UcHw zZ4Zzdh(pcq+jKm6KTL8BO%KY>1vDjKtIzN1n0ufLkJO8BY6R!t;`0FmzyVyDDUE|~ z>k0q}%ny6)LW}B)a%<88@}m=1fb=>w@D1Zhqy)?*lsT2f9|Pa3rOHB)=DP?{#~S>Z zw1M#m2Hcx$n~kdHn9`&9j^$b4E<{j_4{izoatixKm4X4U2k79^$n@kk@g;hE3i93o zjb<7bxYR?b2gD9oC7nfm={G%X%WS*pyY*j8k(6s09Gole?-;P3tEU_mKm2KaE-6%G zmzb8!o?0MvfT z;+N)xTCYh|hHJutm| z&(OQpbE%vF+b%Ht5VtG!bxh7cpG|iB$3JSNWjv$P2fsJiuC_S4eC6M8)4riU@q(Lu z=Q0E)E;gvwzNrG!jQFm(!I*yxY+!1cn>;%@d#=`DQTfTZ;(%{u4ts81Xu_hecIas= zgEPTvRvbQckv9joQ%%&9X{v^ zLVpbKxVhl9EBTSR6Z0xRcD<=%HC}Z_eE?Ptlbo85a4P&Qd63Mod*`;odubV2Vu^~( zffpy+;K+)TwLSYP(|-7}FSW&H@S0M(FtF#M$I7j>gz~{zAjRF@_Il-IWM-fBhTZ89 zn@q)tlqNEZxXJj8B!t-4-*-~6{RaBk9lr=T54nEgy;=)Cj|4tat370!S@VSTZGTRf z=#>x(S3Y@1xd3CGS?Hs(l+dT-CzrTY;;eZ=OVcbze~61@n(X53yKuE49^*qtXMY=ozwFiKH*#b}C ztlMQjL0AH+>us(Fsxbu!4GDUWQ4XFvl8x%)fcw4f$=WKK9FNB!DE ztR*~2d46|yQIZT~+9VkFZ(M>J{ht!VLFK^GoVQHKhWwG{i9Y#>Rc<(Bs6Aoi=Ph(P zgk2k}!eb|?_>Cc2QML$3+(Wn}MEjKY6#bz}Okj``^fI4N#-5dF9@Id-sF7Mqh(dND zZA+I+y#+ngqt3XmI04Zp{{YfHgAH0JB-cD!YViA5>#Q63g8R}3Ag5pjvBSKN__?R8 zGhD(<(g9*5ba>Cmn?6EwXgwAuAHpQ})`D5v`HMvS0>!21)Daoa)+h+3o`_G4n9lN{ z5kmBR0=ceHMS$&I8;pt9|j(Y!c%A$@)Vc zS6we$2^;=6GZohMBS;_@#uZ5f_g`;i)72G1zVsAfzmQ8%)0G0h9Drv1eJ`EXhUr!MtVU}QemuE5>;%1XzW>vzY9vO@sQ#q zY2hIW^OvE1>Q^zqgz+-&vq*pqb3WquaV!k7C!i^gN$h;xRSgka{tSD}5{%99`dRvx z&;fDQ(j?&J)i#rEY^Tn?W)Ab*RyWvzPuh3?Eu?CM+gN<7;$)VY>c1&kR7|%+**R|u5l9=daH?eov@NAZ4Gl4_mYs9+M;^1)QK|R{{E7;w3;o_hXtxHfs9J; zwWcmv-=V@QLYz(VnND-n)StKUtl5vvfYZ6vMlZcSJ-iul1aBnZkM$9S2pC=us+h?p z3OeeYnMw4eZjZKA=*VS4)dw~1(T(E`>}Dt9CJ_)9zXWcimJ~4|>X#i(2O;k-Z}(|}`(esONmc4Or^$~MHuV-N$fE14u(+nQJ3ltzPG z2`po<`Hq?9_RZIGz)Jxq=~Y1Gb685@_ep}I;%VZ$Mbe>RptWlAIyyO-4y?z3TO_}4j(Wek|OpY=B= zktNs8zZ?(hgL$I9mmRqTE_PATsE!%fcT%O2UTjb1Mw7rGbiWDJXY26WENlzzTCMVU z94fgf9jlo00S~qBZz3x-^N%qj^1oxV$4Wb4!AZ0=tN=L9YwqCPUtt zP{@+PbZ71gVX_l?(*tQa>3`Fqx2&f|JxFkD?WNu!o=Gy(IR`N~=oH7WM>5sm|Ma|1 z6Oe#%Wr}JYBi{pnEaR)!LOOT^Iyjs}43A7rZ4C_C$VDV{?yzihv5zJ-3nyQPxM}U@ z3&TEtC%Cm8l5!5eIB5;SfsJrfH}2Dt#d5RHh)(HMLzD@P1Ve#^OYSO!`i({e2JN@f zlv43g7gGZXo?l{-yE~oqPmF3euiFfh*y06tb?d6pw+__OczffG>x<$}t(e_ew==o$ zl0qqW7+k`L?}FB_f$%72Dh`ygEk~;GULr4aiyc0I~Q5kXwY` zrU0ieQ01J=v;ZsSwj~6o;wen0Z>%okP|z_iHD~Vb&Pr9PuU zqk(>fKv)h`94nk6F2d9mKBbak$usQdh#krF`(p;c@G#g{$3sAtH@7iwU&Zo=i;TmJ z4&sZ0W9iw_rtJ4Q=<;B#2G0D+E=R`!k9P)_H`hn&L&Wf%c#v$(WkX}OEwDn!1Gc_a zkyR2~GK?D^AZ*cG>gcClIQ?}IPU<0e!tDqnKR)+|}{P zgmsCdbcuJ=i@kb`|10;9%3)1rgG{9QM0_>BIzdic!d(`UT?gfbd~v z&IgY=DDSDLbkS-aqh8|g3}AW$q45>;>eKw({4ycvgT}x&+>xs{&_`XSgQ1mFb4AfO zb-17ek;V<2@)*`=*Rdu&>7y@hRc#8PfkO_=Z#O7)d01*+G_3${gY9(-rO*U z=-QbSpmW>RXdfh`Ka4N+{G zg7)AQUM4rZFFCO^QPN+SHHxr1yhV z;b!ao!K&JZ?Y(k@X7wa(5?3gbHWhOeG3gThy>E?86A2yGAsM_jX1-hverAC?U@ciU8iz9{TIWl_NY|?r+eoLB}OtUb^OOWQdDb_G3D8zSgAQ;dF;5K z4{ICZ5j0bYX58ll9Q{n2&LrLm^gF074~Ytfk4tcaD1!sels5$7QYlPg;G|8j+Q@jX zlH3If3znn^87EHj+qka0&gS@`aV3~56>{4eBeFy@qDh%0U|5u+F>N*gQpkwgms_(r zRAIFgoU$o?Q&$@dn7!Y9uM>!SvBCSomU$CzOzRT*1P?xY^WDSiX479sAh-o4Z27Qo z?g3a5j9ss0f;O zi0n)D_B94n)y!Hrd#1!JmLI5QrxZb{VsYlw!)(JHVGSE>mgOoXDsqX|ISc25;#wXA za^A**t>0Q8ZKzaYtoqrUxmhaS{AE>_<8pFveFA&vS*u?`Pjx98i2Q*UpRvPox<(>vQHZw<(wrzkn(i`Melb9i>D z9iusXAnP1O{tcn_ZOvtLEBMOWuNj3}dgqAq*}>zVF;m~Za!+?{V+#zcj)-M`GtRd} zU4xtHdkn{^o?OJaxvCNAk#av`3jTR@6X<}LdhO(};L8=?j{_0U)LqCLqOq_7;xclJ z&+`#RmZpdPN}gZ0T8_0!IUIDT_Q5RNyHSBU?J4pA@djQ(-QA6m(PrR+K7wu6Qir#9 zs3?rQC7j%s$q5`SAv0kjl?m}n!HuPk?=d?WxlxlI%QE^{pBtEOBg%fXW}QiN{ECC| zzgP%jF3iCbRBJws;H3|etSCN@K>07TjI$aLxGVyA_;%4nxHM8ea!FB*ecTzXBY<)) zj3cOqU1+MZx*Duhce%bYLf=QU8&Sd6d)k~%oCJu*eP`1ak8&*iIaiGXT}x| zcXP5qJ_F8a)@SB*n~KI&6^28vP}F0T*fyC8R%Rl+SSh2omu_Z_7Pm>4C>^Q3l2`0U|{z$30 z9D#P!?;kN*=l2~((Ec?C8|pdTjRibHDx|H-atkdK5~-vKv`ZHG5s#TTh-Xh+ThUZ26`<|cxl=! z7=pBHevZA;#7vzMK>Kq)4?nGA1ZE81)r~oJd_&Nc8OWZm{8e6EVqA-r@TO~us~3!< zWDoSL$s1~Y1UB%zUn9+wT>eIvXyEF7${)B_mj+mVRpy4+|7o`@b}?vi$I)nmShj6f z^Hf4qX9syWEHb1&vYw`%qv#Y{$#>46Sir}cec30CUiV#>qY(OSanEd4<6FJ~UmW>% z-(Mb07m9OrgsmHqOaXsihQoFk;@ugM9>e8?agnD4GuMTo9(n} z>Qvl0)|A;QRK(VTG-_HbXn*V+)$Ec@*#s^;0Fhn6MxeiepIKQ9{EPaN81Ai-54xaA z8;MhQW|*@j&jbu7GC(U#y|Xk`78LEBUfDW7^gZnFLL7W}s3fG~8r~?A@T`&cgI&}B zn~aZMvKHr-3%bE`OsV3x1%Si&K9Hpn(C~T+49k8}>*RL^^pH*<;VCgj(=+t{RCXQk zRCoWs@kmIbAtKkv$hiAn7m-cK-l2;t^Agv}N@SHSqhybenUPsWWQGbE*?S~HM*4qm zJv|xyp5O29<@IvEALpL)KA&;U;q^ZEEh_*nJj%^KJ+j_&q@Q|@JDFGC>`{jvQ?C1? zn=4!$L9R1iEbHmimr%tm4c1RYctGukXI)Qn>XbPyjk+jh%fMzl`REp)K1#Z$a9v9@ zUr9?gY*xV0iavS|I)?B1P=ETXlv2Qpc3wf@R#u4cOCuIsLAx>D2oZEe>Ny!DW zul8ekvC^ON8DMc%eHl1dENQ+xix{>#K)`!yiZ{_<3(*mC9(EdVvqWeu=;39P#QhwrBdwh<0eSsCj}R zICLfxOI0I%)JGGPdS3Y;YCv((HLsJa1A_0Oa(9z6D5Rw{Ez?+}E?z9JTAsE>jfGSg zyoVi_7^V=4vDu6}nR~b1 zNiq9?=CV86XAT@oYGgYYfPA}B^ltoRx{|-c2e;w(lh>MsL_DD;aTla#!`VZv8IE2a zVzWDNX~uTx(9!$z=^P}Rx_!1cs}}NS-Tf+g2?kqak$ErOBIP*8KW-$B^-;qI5lwBr z;fW1X`Q8)E9kYLJ;B&ct1kw@J_>-Ql9XTZZupCAl=CKI{tXK`^ElsUj+sxUAIdPqt_vY~50%t>rl^yc_qw#)Z+N7Z zukcEeozQg6Q?pAi55-;jV5cmx+Ls}GhvMKRmx_~aaaqv{A88hDOVG+59$VRzq`t1$ z<13`W-{?Prk@M7?&^vc!ec^)wo$1?B10Qb|2|1?I5Ux6r+=+*4CgeF~MYMHOev~+a z)R&>GZ@6^AGl~Pyy$~a;C0BiYDPC*xN=P<> zaX5`!5tKG(l_^t_Ev^zU=o$5Gym(J7vB^$?oF?2Nsld>;z_o$nkmGlyhM2d7YL3?L%oQq^B~92xOO?S^0vgR z%1UNgJ-70XixxP`%t&)Fz(1A0crwA&uG%B4Ha8^2sh>n^5pseFMSgOT9AaFcbp*X) zELsuW&Bq?lqNIZ1+2gDChNvE?a~I$JsI(HoP5*$S zt|gc2Cq_=Zqjwvvw^x#LR6mP4ePL#8>*||~i(j_xjW8!|*3DN#ie)mGlPzD+756RH z8C}xLjuvI_$|*9j&uVoTbeWY=N}cbWxa?dcrq7o4cucXj?yux84~j^pmkKkY{7h>Zj({o;p3pi_F&baC2f|s!)(rKcFf;PqS80J9XufD_dOeO`$S} z(xC$yLo`((^odl(9#gQ$bROI7FgKNkjy5{2s;~8n4`h(A?x7fA)6cJt9^{Cr)oC&3 zeAr^L8S7*czShhqa;^O3T5t^u9%{;UYpSK`uEq$iiMQsV&d_O5y>`2KORhc}4evP9 z^!9)k>BDpdF1xneHgdHG!LqY?SIFkaRWm+MHaMydSfr$qzbMSqPB}#VX;7w7*jVPA z^I>^#(XCSNY_l^x_ccOtxQ;z(+3v|to}pZp{qXWO*Tr*vc@KlT6R#aoIBgj}%Pns+ z_)JhLmX|dF9V9jOQi|zj=D^ZTY$aPUPX!y4`H`hSE4O>uT`4&RLdus`+ffjOPkx?8 zqrG!Y5aDvD^s#AbyEtkaH7yn~Rg|pi*2RUKH@*$2wCHA^>tDYvL0LEzg$daAGiPfg zXx;dbXHl&0g?)HJBu}vF>M9-tw@#zlp_V6C*N@gEoHMQ0nACdfS56-m&!5;ecZ3Uh z^^DKe@w*Q!?3Qdk8>T1T8G)RP`r6sSsiqa%eP3Pk@wH-}+k&faiw-uMR#m2lJuhZc zw2*8lX@oOefI|&NgL3K5rSm#Foflbyf1LCNgG3vWIS-jWms{kMba3o6Wx923^y9(m zkIb>ESkJJ{$j7-feb29T)9WUo-C*xgq$MV$jmIGWS+jVqrB%Mp2htg9L79!Pu%H^8AoNR zjd3-`8ADZ2VQT5*sqyY)>{g>xvrl)7%G{^7Gj7PtFM`Z%F z`S+u1K?DW%x3WI{Nc$_@r-4kmU^`N8%lJ|;Vf9v8Z^*BY3*#kl0Er5$|7y241w3h~nK zU1iC6_km3`b3AhKbM9!atdjn~c2Y|9owQ?`IZID+k1OyhiG-bCJ_KkBHskO%JRBx* zT|y_urC(0bM&aH}8XQ?Gkl3!^y2Fwh->b&sH64w9k-o@U{Z02Q+0x0VPcoWZPfYXJ zUsL<>Dml$*`!;#w7wYM5-&_l4rqDbYrJl92I_E}kAFw$vQ)gsgsoYI5$)jWZEdVdp ztwEoD^A|C!x`Gq+{ZO(hJx)X0$ED62&nCBAZPq=#Yn1DZ)XTviC=Ese#g$uV#92Dt|g$2lHH--vPN za}nn?!A|MjqFNDXIKWZ3v}M5{qQmMk!}EUWr1)_s2BWXhtU^gLnzUNgUBl`jKJdE@ z%thqEZXX>SZ&!_RIJ$_oJ433JXs&9=o`W-9ZD+|RNSO1yqODs9rJlZU4ur+T4{{>n zgavcOTTcg24qCpaS(;Cf^N%37N4#2O(5aLpedM)-d0 zKO@PNzF}qVKU7Cr=lJ$uTrd^GnTvSVYbz$@R>ck zHHnCqpb$E*Zuc3LXFBkh|3$+$jS``@jgTG<{;(CYYJnTR_WHbI^lKmPq{BozSC=z} z*G7)KlXIwJ{aB$4V%9N3Q!?3(F=T>_ggO=?-(??h!+bvx(CSxdX#aQoGHmYo|CSmm`$@gV7hgn>4&&NfP^er3)}$00D<`~8?t={{ z_Kfq>QEC2%{0&b(ii!!cOEIR`5+PfkF?qw8Y#<^Hy*`&LD(<6XI_@RiY~6YJh+{#2 z0YAG>yCXwA#Hz{WO!YcS?IH(9p&a-N?Z+gxC6VQIUE1rxQL3Y&izL$1MLlU;Gft<3 z%g3KKlfLNm?72a8@cBmH(rVi|zqU_-5#-_U=N0k|USVNrrcd+y>+w~N^u6d{&%g2= z?+d3>_Zefma;EI&83zKo*8@yx$4x3IP*k;()MmjWG2D3nevOg(q)5kHG+BbY@yx~n z-_)jAa;D_q6XT5*<_7w~nwF2%HOjDqkQmi%p`1tryKqX%<(^@WTHkZo$Mk#Tb>{dP zx2i6ipAuC zj?zC5oHh_-U;9)a%>bm+pql`+mMC|bt-D|j1vAMK`^Lp~rB=3R`Jjlf^&W(@i3-S#{2ErU} z2U)55k02jJWuTJ{&dXO8$**4Aj5FeCJ5+-xl?H@#Gza|AxA99>$pr%5Bu0y(HLzR5 zc)3`+a*sqmCjWQy>x!e48#cm$k*uZVy$9=;qBNycAFf@c9iaBR);#`L2muHqw^_9zRLH9ShWTHcAF zQfL_2|JgL%UoZHfUSIDzKClEaY^?OmZ`1NQnG5Aa;2Ns2gd{-U{F!KON~HPxhsNh% zILn5}_3RJ&`K5!>@&1-0mn|eMD7g8bD$m~NlW)Da;evn4Vy$xhtu-vXx>_!~@UDm^ zguE*wX2z(A>aS$u{wQB2cuCJBM;XHhe|uFLw@7!*$eHacs)+=?1I8}zO11NDY$x~e zmn@`J7O)z^A%-L4+ip|6(Qw2xsV`2_U8Nw7db*FsiSbz@X5pQbVQs((9nY^t>DAxg zQ405@&)ZVRM@S#@`nF|JZzVz-913RDA73=9dp>eT^bE^vGDW3cM&e_XY)FT|(|*fO z2UZjdsYNU@AKJdsvngVEK59NB2n;pOZ?H)%U$`f9 zyfk|mrfZmD0DOQ(zV{UbjmLZv#KC_S@+IjD0Cg{}^r6`yzE36``ScutP)?PcTt)Ak=Smmj#;?}#T zW&3**F2qEiHYhVUndF`fnsQ@kQ%WCx$uw10diO*UG%QQ;ZD$cC{(W)%TM?Q>a*lr6 z>5sA0bWwb>Hy2vWER`w|GjP9GP1eVt9vcxiM%gMLM%t?Wl30#;x|8uskmb9}s@l!h zhs{(vQ7jLt3cEH%Z+9wfzAsPEpAWfok-vKxOd)2+TQ#eZP95P%S~_SSS-`d!J$t*s zPYZQvLXelk`NKh;d$e3OvV;j-CG$+?V(6yYAuKB=jVF&ZIq#>APnS(B=vfZ-Zg)3D zmRE4od3gp1`D|%+3r}#uhdMgOIcsxAPBYq2>F8CK98t=((>teZyw){uiudP8l(!3) z%D3>57}8Y%rD++o{T$m~1i8*OEfZ-4wr(HHSo{vK5lB5uYwE%+P|VIq&j2 z%R*20gi}K;sxh%0(6UR?|?$>{8kDsW(ebq%MdNEtI|eL z>8UlcZ_RrwQ&nL0tWUmD;_fg$SQzl_>>pSt^Lt!IACM!t$zpeywW_WHfBg;S^+0d| z@UQoUYL-OEHPP9SfV?ga#sT`0twZKcF%>G0v)nD` zUE5lV04Y@p$0+PT(OZ+t=&JHMnVc6gLXnBnPv#}=z2;ygB+ArVh2`+cl$oLU{MKG) zy>9FDddo6*x?uuFANO<_{&g0dubOt90kZL?O=x!AOB&8 zLotAe(N1wqS5nzO4?TpOKjLd9}?5)6twpb$z z9KjN2LiqLiCw2R$I@1r`rym4y2i$LJxY;kECNn(leQy{ z_f8f#9J((Sl6WI)V>A2>z%ynhCOBIh-Uw$0(uMsXv|EDUNHG2%Eh!M3AB?rK0feQn zc;lTUbsH@3z8?TF{QP}zYl%&d*UKWA|ZXZw>C zPjIvb6HIM!f4j-V3~(5c^lpbE(%*mj5l{4&k+r2Yz=y|Knf-iaiLZJ(GrxF6#{VaOi?{bc=vph(ECs|C0p7Y#sA0QOJs>5&TygMfPnfJzrR46-kv zQr36^kjM6h1ZNu@2u!RvAc4iOb~xg1KwwohDM>9cZgB-kEhupFfoLSwgsqtk!P*uC z$NWecu#}mt9YNd_YYT$H0O>Cvmj66xni&&J?LaVMUGGdTp!$AGhy5<}f5W1#sH3DN z2VhZ<{R0+2PmMUj4lGEZF8{%T0;csh7C3R}oml?7=KLEJX<1<9kp!Tq{0Rwg9bz{U zqCDFlk?g&A0sZsEn16#JqbV*SsR2My)&3I}Vu!oDvJ(pNGRv<3{S4*rWP$Fy1MWa%?@Sir!!IoSdjdp!{v|W_zd^YwEh8$e#H~sI)*h^_ zv8uC`Jg=%H7EdsMqJV2Fd-52$FL$836Pft*D|>!M_qU^VYT*5E;Qmc7aCd9XKgu;Fo1^n-6{b#Vms`>wArj+OvZ3Pu>d3z@_1#7(ZzFb7?TT|gX*D+va z|Lx14dW`?#OX&VBTnT#vX9pZ~tnGpI9XP|tnHdvzaAL)Qpg+0I!;)7N3;8rKKSjk0(M>Gc~gV0pCBN@&1Gcg7IMha7Y-4^A||2 z9UH5YEzX1-0zyH^0Y%Thzkss@638DD(BC#F1_L;f_yxlMW8>!sJiglofe<%=T{a97 zg8`~yw+#?*1y-ItHaHxJ*=`#WL5$-b8$WU9-fcr6A^XRL@$Y*t3bk)s2m<~G8;qFA zyT*XPps>9*3=)X~_TydcFh~?;Z#xJI1$b_EI|vHFzZWwEfrReEjD#Zg+8}6t^u96B z=>79Rp^53f3m*i7!0hV}14jc3%kFk)3~j|~XsKFk;tbRQNB3b8LYFqr*uL!kDL zi^1%h8x(@vHwIuMo|<-Hh60Y>I}a!zRJ#`+6p94oTlc&dMy!xMHVlNg6YU-Y14HiZ z4~Bxn_Rbdul+fNW;Bd^o`T(?aQG3TlK>7EzL%@Kj@4q4(wnKMb+2KYkehz8u0J_VVH1b{z!@g~+FVz`LMNLdMxt`Hg_j*>z^ zAmZY1xC9C&iUHCRA|` + +using boost::math::constants::pi; + +template +inline T area_of_a_circle(T r) +{ + return pi() * (r * r); +} +\end{lstlisting} + +It is possible to use {\lstinline|area_of_a_circle()|} +with built-in floating-point types as well as floating-point +types from {\lstinline|Boost|}.{\lstinline|Multiprecision|}. +In particular, consider a system with $4$--byte single-precision +{\lstinline|float|}, $8$--byte double-precision {\lstinline|double|} +and also the {\lstinline|cpp_dec_float_50|} data type +from {\lstinline|Boost|}.{\lstinline|Multiprecision|} +with $50$~decimal digits of precision. + +We can compute and print the approximate area of a circle with +radius~$123/\,100$ for {\lstinline|float|}, {\lstinline|double|} +and {\lstinline|cpp_dec_float_50|} with the program below. + +\begin{lstlisting} +#include +#include +#include + +using boost::multiprecision::cpp_dec_float_50; + +int main(int, char**) +{ + const float r_f(float(123) / 100); + const float a_f = area_of_a_circle(r_f); + + const double r_d(double(123) / 100); + const double a_d = area_of_a_circle(r_d); + + const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100); + const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp); + + // 4.75292 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_f + << std::endl; + + // 4.752915525616 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_d + << std::endl; + + // 4.7529155256159981904701331745635599135018975843146 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_mp + << std::endl; +} +\end{lstlisting} + +Let's add even more power to generic numeric programming +using not only different floating-point types +but also function objects as template parameters. +Consider some well-known central difference rules for +numerically computing the first derivative of a +function~$f^{\prime}(x)$ with $x\in\mathbb{R}$. + +\begin{eqnarray} +f^{\prime}\left(x\right) &\,\approx\,& m_{1} + \,+\, O(dx^{2}) \nonumber \\[3pt] +f^{\prime}\left(x\right) &\,\approx\,& \frac{4}{3}m_{1} + \,-\, \frac{1}{3}m_{2} + \,+\, O(dx^{4}) \nonumber \\[3pt] +f^{\prime}\left(x\right) &\,\approx\,& \frac{3}{2}m_{1} + \,-\, \frac{3}{5}m_{2} + \,+\, \frac{1}{10}m_{3} + \,+\, O(dx^{6})\,{\text{,}} +\label{equation:centraldiffderiv} +\end{eqnarray} + +\noindent where the difference terms $m_{n}$ are given by + +\begin{eqnarray} +m_{1} &\,=\,& \dfrac{f\left(x+ dx\right) + \,-\, f\left(x- dx\right)}{2\,dx} \nonumber \\[3pt] +m_{2} &\,=\,& \dfrac{f\left(x+2dx\right) + \,-\, f\left(x-2dx\right)}{4\,dx} \nonumber \\[3pt] +m_{3} &\,=\,& \dfrac{f\left(x+3dx\right) + \,-\, f\left(x-3dx\right)}{6\,dx}\,\,{\text{,}} +\end{eqnarray} + +\noindent and $dx$ is the step-size of the derivative. + +The third formula in Equation~\ref{equation:centraldiffderiv} +is a three-point central difference rule. It calculates +the first derivative of $f(x)$~to $O(dx^{6})$, where~$dx$ +is the given step-size. For example, if the step-size is~$0.01$ +this derivative calculation has about $6$~decimal digits +of precision---just about right for the $7$~decimal digits +of single-precision {\lstinline|float|}. + +Let's make a generic template subroutine using this +three-point central difference rule. In particular, + +\begin{lstlisting} +template +value_type derivative(const value_type x, + const value_type dx, + function_type func) +{ + // Compute d/dx[func(*first)] using a three-point + // central difference rule of O(dx^6). + + const value_type dx1 = dx; + const value_type dx2 = dx1 * 2; + const value_type dx3 = dx1 * 3; + + const value_type m1 = ( func(x + dx1) + - func(x - dx1)) / 2; + const value_type m2 = ( func(x + dx2) + - func(x - dx2)) / 4; + const value_type m3 = ( func(x + dx3) + - func(x - dx3)) / 6; + + const value_type fifteen_m1 = 15 * m1; + const value_type six_m2 = 6 * m2; + const value_type ten_dx1 = 10 * dx1; + + return ((fifteen_m1 - six_m2) + m3) / ten_dx1; +} +\end{lstlisting} + +The {\lstinline|derivative()|} template function can be used to compute +the first derivative of any function to $O(dx^{6})$. For example, +consider the first derivative of $\sin{x}$ evaluated at $x\,=\,\pi/\,3$. +In other words, + +\begin{equation} +\dfrac{d}{dx}\,\sin{x} +\biggr\vert_{x=\frac{\pi}{3}} +\,=\, \cos{\dfrac{\pi}{3}} +\,=\, \dfrac{1}{2}\,{\text{.}} +\label{equation:SinDerivative} +\end{equation} + +The code below computes the derivative in +Equation~\ref{equation:SinDerivative} for +{\lstinline|float|}, {\lstinline|double|} +and boost's multiple-precision type +{\lstinline|cpp_dec_float_50|}. The code uses the +{\lstinline|derivative()|} function in combination with +a lambda expression. + +\begin{lstlisting} +#include +#include +#include +#include + +using boost::math::constants::pi; +using boost::multiprecision::cpp_dec_float_50; + +int main(int, char**) +{ + const float d_f = + derivative(float(pi() / 3), + 0.01F, + [](const float x) -> float + { + return ::sin(x); + }); + + const double d_d = + derivative(double(pi() / 3), + 0.001, + [](const double x) -> double + { + return ::sin(x); + }); + + const cpp_dec_float_50 d_mp = + derivative(cpp_dec_float_50(pi() / 3), + cpp_dec_float_50(1.0E-9), + [](const cpp_dec_float_50 x) -> cpp_dec_float_50 + { + return boost::multiprecision::sin(x); + }); + + // 0.500003 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_f + << std::endl; + + // 0.499999999999888 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_d + << std::endl; + + // 0.50000000000000000000000000000000000000000003925935 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_mp + << std::endl; +} +\end{lstlisting} + +The expected value of the derivative is $0.5$. +This central difference rule in this example +is ill-conditioned, meaning it suffers from slight +loss of precision. With that in mind, the results agree +with the expected value of~$0.5$. + +A generic numerical integration template similar to the +{\lstinline|derivative()|} template is shown below. + +\begin{lstlisting} +template +inline value_type integral(const value_type a, + const value_type b, + const value_type tol, + function_type func) +{ + unsigned n = 1U; + + value_type h = (b - a); + value_type I = (func(a) + func(b)) * (h / 2); + + for(unsigned k = 0U; k < 8U; k++) + { + h /= 2; + + value_type sum(0); + for(unsigned j = 1U; j <= n; j++) + { + sum += func(a + (value_type((j * 2) - 1) * h)); + } + + const value_type I0 = I; + I = (I / 2) + (h * sum); + + const value_type ratio = I0 / I; + const value_type delta = ratio - 1; + const value_type delta_abs = ((delta < 0) ? -delta : delta); + + if((k > 1U) && (delta_abs < tol)) + { + break; + } + + n *= 2U; + } + + return I; +} +\end{lstlisting} + +\end{document} diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_area_of_a_circle.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_area_of_a_circle.cpp new file mode 100644 index 00000000..e2d25b9f --- /dev/null +++ b/example/generic_numerics_examples/generic_numerics_src/generic_area_of_a_circle.cpp @@ -0,0 +1,45 @@ +#include + +using boost::math::constants::pi; + +template +inline T area_of_a_circle(T r) +{ + return pi() * (r * r); +} + +#include +#include +#include + +using boost::multiprecision::cpp_dec_float_50; + +int main(int, char**) +{ + const float r_f(float(123) / 100); + const float a_f = area_of_a_circle(r_f); + + const double r_d(double(123) / 100); + const double a_d = area_of_a_circle(r_d); + + const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100); + const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp); + + // 4.75292 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_f + << std::endl; + + // 4.752915525616 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_d + << std::endl; + + // 4.7529155256159981904701331745635599135018975843146 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << a_mp + << std::endl; +} diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp new file mode 100644 index 00000000..ccf0ad97 --- /dev/null +++ b/example/generic_numerics_examples/generic_numerics_src/generic_derivative.cpp @@ -0,0 +1,79 @@ +template +value_type derivative(const value_type x, + const value_type dx, + function_type func) +{ + // Compute d/dx[func(*first)] using a three-point + // central difference rule of O(dx^6). + + const value_type dx1 = dx; + const value_type dx2 = dx1 * 2; + const value_type dx3 = dx1 * 3; + + const value_type m1 = ( func(x + dx1) + - func(x - dx1)) / 2; + const value_type m2 = ( func(x + dx2) + - func(x - dx2)) / 4; + const value_type m3 = ( func(x + dx3) + - func(x - dx3)) / 6; + + const value_type fifteen_m1 = 15 * m1; + const value_type six_m2 = 6 * m2; + const value_type ten_dx1 = 10 * dx1; + + return ((fifteen_m1 - six_m2) + m3) / ten_dx1; +} + +#include +#include +#include +#include + +using boost::math::constants::pi; +using boost::multiprecision::cpp_dec_float_50; + +int main(int, char**) +{ + const float d_f = + derivative(float(pi() / 3), + 0.01F, + [](const float x) -> float + { + return ::sin(x); + }); + + const double d_d = + derivative(double(pi() / 3), + 0.001, + [](const double x) -> double + { + return ::sin(x); + }); + + const cpp_dec_float_50 d_mp = + derivative(cpp_dec_float_50(pi() / 3), + cpp_dec_float_50(1.0E-9), + [](const cpp_dec_float_50 x) -> cpp_dec_float_50 + { + return boost::multiprecision::sin(x); + }); + + // 0.500003 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_f + << std::endl; + + // 0.499999999999888 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_d + << std::endl; + + // 0.50000000000000000000000000000000000000000003925935 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << d_mp + << std::endl; +} diff --git a/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp b/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp new file mode 100644 index 00000000..787de062 --- /dev/null +++ b/example/generic_numerics_examples/generic_numerics_src/generic_integral.cpp @@ -0,0 +1,105 @@ +template +inline value_type integral(const value_type a, + const value_type b, + const value_type tol, + function_type func) +{ + unsigned n = 1U; + + value_type h = (b - a); + value_type I = (func(a) + func(b)) * (h / 2); + + for(unsigned k = 0U; k < 8U; k++) + { + h /= 2; + + value_type sum(0); + for(unsigned j = 1U; j <= n; j++) + { + sum += func(a + (value_type((j * 2) - 1) * h)); + } + + const value_type I0 = I; + I = (I / 2) + (h * sum); + + const value_type ratio = I0 / I; + const value_type delta = ratio - 1; + const value_type delta_abs = ((delta < 0) ? -delta : delta); + + if((k > 1U) && (delta_abs < tol)) + { + break; + } + + n *= 2U; + } + + return I; +} + +#include +#include +#include +#include + +template +class cyl_bessel_j_integral_rep +{ +public: + cyl_bessel_j_integral_rep(const unsigned N, + const value_type& X) : n(N), x(X) { } + + value_type operator()(const value_type& t) const + { + // pi * Jn(x) = Int_0^pi [cos(x * sin(t) - n*t) dt] + return cos(x * sin(t) - (n * t)); + } + +private: + const unsigned n; + const value_type x; +}; + + +int main(int, char**) +{ + using boost::math::constants::pi; + typedef boost::multiprecision::cpp_dec_float_50 mp_type; + + const float j2_f = + integral(0.0F, + pi(), + 0.01F, + cyl_bessel_j_integral_rep(2U, 1.23F)) / pi(); + + const double j2_d = + integral(0.0, + pi(), + 0.0001, + cyl_bessel_j_integral_rep(2U, 1.23)) / pi(); + + const mp_type j2_mp = + integral(mp_type(0), + pi(), + mp_type(1.0E-20), + cyl_bessel_j_integral_rep(2U, mp_type(123) / 100)) / pi(); + + // 0.166369 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_f + << std::endl; + + // 0.166369383786814 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_d + << std::endl; + + // 0.16636938378681407351267852431513159437103348245333 + std::cout + << std::setprecision(std::numeric_limits::digits10) + << j2_mp + << std::endl; +} From 0279459351a64e72d28285d11fd270f1947512fd Mon Sep 17 00:00:00 2001 From: Christopher Kormanyos Date: Fri, 20 Apr 2012 23:17:48 +0000 Subject: [PATCH 178/256] Ensure that potentially truncated digit counts in cpp_dec_float are properly used. [SVN r78105] --- include/boost/multiprecision/cpp_dec_float.hpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 74d3a3e5..499c50d3 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// -// Copyright Christopher Kormanyos 2002 - 2011. -// Copyright 2011 John Maddock. Distributed under the Boost +// Copyright Christopher Kormanyos 2002 - 2012. +// Copyright 2012 John Maddock. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -2860,7 +2860,7 @@ namespace std static const bool is_bounded = true; static const bool is_modulo = false; static const bool is_iec559 = false; - static const int digits = Digits10; + static const int digits = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; static const int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_total_digits10; static const boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. @@ -2896,8 +2896,12 @@ namespace policies{ template struct precision< boost::multiprecision::mp_number, ExpressionTemplates>, Policy> { + // Define a local copy of cpp_dec_float_digits10 because it might differ + // from the template parameter Digits10 for small or large digit counts. + static const boost::int32_t cpp_dec_float_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; + typedef typename Policy::precision_type precision_type; - typedef digits2<((Digits10 + 1) * 1000L) / 301L> digits_2; + typedef digits2<((cpp_dec_float_digits10 + 1LL) * 1000LL) / 301LL> digits_2; typedef typename mpl::if_c< ((digits_2::value <= precision_type::value) || (Policy::precision_type::value <= 0)), From d2bc0f90f7da3fb47597f93ec71497253729aa70 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 4 May 2012 08:20:33 +0000 Subject: [PATCH 179/256] Change non-member functions to use enable_if so they're restricted to the number type to which they apply (better error messages). Enhance concept checks to check things which weren't previously tested. [SVN r78321] --- .../multiprecision/detail/default_ops.hpp | 281 +++++++++++++----- .../multiprecision/detail/functions/pow.hpp | 6 +- .../multiprecision/detail/functions/trig.hpp | 4 +- test/mp_number_concept_check.cpp | 114 +++++++ 4 files changed, 325 insertions(+), 80 deletions(-) diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 2f6f1b5f..8c58cc8d 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -484,6 +484,68 @@ inline void eval_round(T& result, const T& a) } } +template +inline typename enable_if, void>::type eval_pow(T& result, const T& x, const A& a) +{ + // Note this one is resticted to float arguments since pow.hpp already has a version for + // integer powers.... + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = a; + eval_pow(result, x, c); +} + +template +inline typename enable_if, void>::type eval_pow(T& result, const A& x, const T& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = x; + eval_pow(result, c, a); +} + +template +inline typename enable_if, void>::type eval_fmod(T& result, const T& x, const A& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = a; + eval_fmod(result, x, c); +} + +template +inline typename enable_if, void>::type eval_fmod(T& result, const A& x, const T& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = x; + eval_fmod(result, c, a); +} + +template +inline typename enable_if, void>::type eval_atan2(T& result, const T& x, const A& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = a; + eval_atan2(result, x, c); +} + +template +inline typename enable_if, void>::type eval_atan2(T& result, const A& x, const T& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = x; + eval_atan2(result, c, a); +} + template inline typename enable_if >::type eval_gcd(T& result, const T& a, const Arithmetic& b) { @@ -861,7 +923,7 @@ inline long long llround(const mp_number& v) } #endif -#define UNARY_OP_FUNCTOR(func)\ +#define UNARY_OP_FUNCTOR(func, category)\ namespace detail{\ template \ struct BOOST_JOIN(func, _funct)\ @@ -876,11 +938,12 @@ struct BOOST_JOIN(func, _funct)\ }\ \ template \ -inline detail::mp_exp<\ +inline typename enable_if_c >::value == category,\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ -> \ + , detail::mp_exp >\ +>::type \ func(const detail::mp_exp& arg)\ {\ return detail::mp_exp<\ @@ -893,11 +956,12 @@ func(const detail::mp_exp& arg)\ );\ }\ template \ -inline detail::mp_exp<\ +inline typename enable_if_c::value == category,\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ -> \ + , mp_number >\ +>::type \ func(const mp_number& arg)\ {\ return detail::mp_exp<\ @@ -910,7 +974,9 @@ func(const mp_number& arg)\ );\ }\ template \ -inline mp_number \ +inline typename boost::enable_if_c<\ + boost::multiprecision::number_category::value == category,\ + mp_number >::type \ func(const mp_number& arg)\ {\ mp_number result;\ @@ -919,7 +985,7 @@ func(const mp_number& arg)\ return result;\ } -#define BINARY_OP_FUNCTOR(func)\ +#define BINARY_OP_FUNCTOR(func, category)\ namespace detail{\ template \ struct BOOST_JOIN(func, _funct)\ @@ -945,12 +1011,13 @@ struct BOOST_JOIN(func, _funct)\ \ }\ template \ -inline detail::mp_exp<\ +inline typename enable_if_c::value == category,\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ - , mp_number \ -> \ + , mp_number > \ +>::type \ func(const mp_number& arg, const mp_number& a)\ {\ return detail::mp_exp<\ @@ -965,12 +1032,14 @@ func(const mp_number& arg, const mp_number& a)\ );\ }\ template \ -inline detail::mp_exp<\ +inline typename enable_if_c<\ + (number_category::value == category) && (number_category >::value == category),\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ - , detail::mp_exp \ -> \ + , detail::mp_exp > \ +>::type \ func(const mp_number& arg, const detail::mp_exp& a)\ {\ return detail::mp_exp<\ @@ -985,12 +1054,14 @@ func(const mp_number& arg, const detail::mp_exp& a)\ );\ }\ template \ -inline detail::mp_exp<\ +inline typename enable_if_c<\ + (number_category::value == category) && (number_category >::value == category),\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , detail::mp_exp \ - , mp_number \ -> \ + , mp_number > \ +>::type \ func(const detail::mp_exp& arg, const mp_number& a)\ {\ return detail::mp_exp<\ @@ -1005,12 +1076,14 @@ func(const detail::mp_exp& arg, const mp_number& a)\ );\ }\ template \ -inline detail::mp_exp<\ +inline typename enable_if_c<\ + (number_category >::value == category) && (number_category >::value == category),\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ , detail::mp_exp \ - , detail::mp_exp \ -> \ + , detail::mp_exp > \ +>::type \ func(const detail::mp_exp& arg, const detail::mp_exp& a)\ {\ return detail::mp_exp<\ @@ -1025,8 +1098,8 @@ func(const detail::mp_exp& arg, const detail::mp_exp \ -inline typename enable_if<\ - is_arithmetic,\ +inline typename enable_if_c<\ + is_arithmetic::value && (number_category::value == category),\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ @@ -1048,8 +1121,8 @@ func(const mp_number& arg, const Arithmetic& a)\ );\ }\ template \ -inline typename enable_if<\ - is_arithmetic,\ +inline typename enable_if_c<\ + is_arithmetic::value && (number_category >::value == category),\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ @@ -1071,8 +1144,8 @@ func(const detail::mp_exp& arg, const Arithmetic& a)\ );\ }\ template \ -inline typename enable_if<\ - is_arithmetic,\ +inline typename enable_if_c<\ + is_arithmetic::value && (number_category::value == category),\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ @@ -1094,8 +1167,8 @@ func(const Arithmetic& arg, const mp_number& a)\ );\ }\ template \ -inline typename enable_if<\ - is_arithmetic,\ +inline typename enable_if_c<\ + is_arithmetic::value && (number_category >::value == category),\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ @@ -1117,7 +1190,8 @@ func(const Arithmetic& arg, const detail::mp_exp& a)\ );\ }\ template \ -inline mp_number \ +inline typename enable_if_c<(number_category::value == category),\ + mp_number >::type \ func(const mp_number& arg, const mp_number& a)\ {\ mp_number result;\ @@ -1126,8 +1200,8 @@ func(const mp_number& arg, const mp_number& a)\ return result;\ }\ template \ -inline typename enable_if<\ - is_arithmetic,\ +inline typename enable_if_c<\ + is_arithmetic::value && (number_category::value == category),\ mp_number \ >::type \ func(const mp_number& arg, const Arithmetic& a)\ @@ -1139,8 +1213,8 @@ func(const mp_number& arg, const Arithmetic& a)\ return result;\ }\ template \ -inline typename enable_if<\ - is_arithmetic,\ +inline typename enable_if_c<\ + is_arithmetic::value && (number_category::value == category),\ mp_number \ >::type \ func(const Arithmetic& a, const mp_number& arg)\ @@ -1153,14 +1227,16 @@ func(const Arithmetic& a, const mp_number& arg)\ }\ -#define HETERO_BINARY_OP_FUNCTOR_B(func, Arg2)\ +#define HETERO_BINARY_OP_FUNCTOR_B(func, Arg2, category)\ template \ -inline detail::mp_exp<\ +inline typename enable_if_c<\ + (number_category >::value == category),\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) >::type> \ , detail::mp_exp \ - , Arg2\ -> \ + , Arg2> \ +>::type \ func(const detail::mp_exp& arg, Arg2 const& a)\ {\ return detail::mp_exp<\ @@ -1174,12 +1250,14 @@ func(const detail::mp_exp& arg, Arg2 const& a)\ );\ }\ template \ -inline detail::mp_exp<\ +inline typename enable_if_c<\ + (number_category::value == category),\ + detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ - , Arg2\ -> \ + , Arg2> \ +>::type \ func(const mp_number& arg, Arg2 const& a)\ {\ return detail::mp_exp<\ @@ -1194,7 +1272,9 @@ func(const mp_number& arg, Arg2 const& a)\ );\ }\ template \ -inline mp_number \ +inline typename enable_if_c<\ + (number_category::value == category),\ + mp_number >::type \ func(const mp_number& arg, Arg2 const& a)\ {\ mp_number result;\ @@ -1203,7 +1283,7 @@ func(const mp_number& arg, Arg2 const& a)\ return result;\ }\ -#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\ +#define HETERO_BINARY_OP_FUNCTOR(func, Arg2, category)\ namespace detail{\ template \ struct BOOST_JOIN(func, _funct)\ @@ -1218,44 +1298,97 @@ struct BOOST_JOIN(func, _funct)\ \ }\ \ -HETERO_BINARY_OP_FUNCTOR_B(func, Arg2) +HETERO_BINARY_OP_FUNCTOR_B(func, Arg2, category) +namespace detail{ +template +struct abs_funct +{ + void operator()(Backend& result, const Backend& arg)const + { + using default_ops::eval_abs; + eval_abs(result, arg); + } +}; -UNARY_OP_FUNCTOR(abs) -UNARY_OP_FUNCTOR(fabs) -UNARY_OP_FUNCTOR(sqrt) -UNARY_OP_FUNCTOR(floor) -UNARY_OP_FUNCTOR(ceil) -UNARY_OP_FUNCTOR(trunc) -UNARY_OP_FUNCTOR(round) -UNARY_OP_FUNCTOR(exp) -UNARY_OP_FUNCTOR(log) -UNARY_OP_FUNCTOR(log10) -UNARY_OP_FUNCTOR(cos) -UNARY_OP_FUNCTOR(sin) -UNARY_OP_FUNCTOR(tan) -UNARY_OP_FUNCTOR(asin) -UNARY_OP_FUNCTOR(acos) -UNARY_OP_FUNCTOR(atan) -UNARY_OP_FUNCTOR(cosh) -UNARY_OP_FUNCTOR(sinh) -UNARY_OP_FUNCTOR(tanh) +} -HETERO_BINARY_OP_FUNCTOR(ldexp, int) -HETERO_BINARY_OP_FUNCTOR(frexp, int*) -HETERO_BINARY_OP_FUNCTOR_B(ldexp, long) -HETERO_BINARY_OP_FUNCTOR_B(frexp, long*) -HETERO_BINARY_OP_FUNCTOR_B(ldexp, long long) -HETERO_BINARY_OP_FUNCTOR_B(frexp, long long*) -BINARY_OP_FUNCTOR(pow) -BINARY_OP_FUNCTOR(fmod) -BINARY_OP_FUNCTOR(atan2) +template +inline detail::mp_exp< + detail::function + , detail::abs_funct >::type> + , detail::mp_exp > +abs(const detail::mp_exp& arg) +{ + return detail::mp_exp< + detail::function + , detail::abs_funct >::type> + , detail::mp_exp +> ( + detail::abs_funct >::type>() + , arg + ); +} +template +inline detail::mp_exp< + detail::function + , detail::abs_funct + , mp_number > +abs(const mp_number& arg) +{ + return detail::mp_exp< + detail::function + , detail::abs_funct + , mp_number + >( + detail::abs_funct() + , arg + ); +} +template +inline mp_number +abs(const mp_number& arg) +{ + mp_number result; + using default_ops::eval_abs; + eval_abs(result.backend(), arg.backend()); + return result; +} + +UNARY_OP_FUNCTOR(fabs, number_kind_floating_point) +UNARY_OP_FUNCTOR(sqrt, number_kind_floating_point) +UNARY_OP_FUNCTOR(floor, number_kind_floating_point) +UNARY_OP_FUNCTOR(ceil, number_kind_floating_point) +UNARY_OP_FUNCTOR(trunc, number_kind_floating_point) +UNARY_OP_FUNCTOR(round, number_kind_floating_point) +UNARY_OP_FUNCTOR(exp, number_kind_floating_point) +UNARY_OP_FUNCTOR(log, number_kind_floating_point) +UNARY_OP_FUNCTOR(log10, number_kind_floating_point) +UNARY_OP_FUNCTOR(cos, number_kind_floating_point) +UNARY_OP_FUNCTOR(sin, number_kind_floating_point) +UNARY_OP_FUNCTOR(tan, number_kind_floating_point) +UNARY_OP_FUNCTOR(asin, number_kind_floating_point) +UNARY_OP_FUNCTOR(acos, number_kind_floating_point) +UNARY_OP_FUNCTOR(atan, number_kind_floating_point) +UNARY_OP_FUNCTOR(cosh, number_kind_floating_point) +UNARY_OP_FUNCTOR(sinh, number_kind_floating_point) +UNARY_OP_FUNCTOR(tanh, number_kind_floating_point) + +HETERO_BINARY_OP_FUNCTOR(ldexp, int, number_kind_floating_point) +HETERO_BINARY_OP_FUNCTOR(frexp, int*, number_kind_floating_point) +HETERO_BINARY_OP_FUNCTOR_B(ldexp, long, number_kind_floating_point) +HETERO_BINARY_OP_FUNCTOR_B(frexp, long*, number_kind_floating_point) +HETERO_BINARY_OP_FUNCTOR_B(ldexp, long long, number_kind_floating_point) +HETERO_BINARY_OP_FUNCTOR_B(frexp, long long*, number_kind_floating_point) +BINARY_OP_FUNCTOR(pow, number_kind_floating_point) +BINARY_OP_FUNCTOR(fmod, number_kind_floating_point) +BINARY_OP_FUNCTOR(atan2, number_kind_floating_point) // // Integer functions: // -BINARY_OP_FUNCTOR(gcd) -BINARY_OP_FUNCTOR(lcm) +BINARY_OP_FUNCTOR(gcd, number_kind_integer) +BINARY_OP_FUNCTOR(lcm, number_kind_integer) #undef BINARY_OP_FUNCTOR diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index f9f2e37b..76312f66 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -84,11 +84,9 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) } // namespace detail template -inline void eval_pow(T& result, const T& t, const U& p) +inline typename enable_if >::type eval_pow(T& result, const T& t, const U& p) { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The pow function is only valid for floating point types."); - typedef typename is_integral::type tag_type; - detail::pow_imp(result, t, p, tag_type()); + detail::pow_imp(result, t, p, mpl::true_()); } template diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index 73de53d4..d03d6cd2 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -766,7 +766,7 @@ void eval_atan2(T& result, const T& y, const T& x) eval_add(result, get_constant_pi()); } } - +/* template typename disable_if >::type eval_atan2(T& result, const T& a, const Arithmetic& b) { @@ -775,4 +775,4 @@ typename disable_if >::type eval_atan2(T& result, const T x = static_cast::type>(b); eval_atan2(result, a, x); } - +*/ diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 07c6861a..3e051ff5 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -59,34 +59,148 @@ #include #include "libs/math/test/compile_test/instantiate.hpp" +template +void test_extra(T) +{ + T t = 1; + t = abs(t); + t = abs(t*t); + + t = fabs(t); + t = fabs(t*t); + + t = sqrt(t); + t = sqrt(t*t); + + t = floor(t); + t = floor(t*t); + + t = ceil(t); + t = ceil(t*t); + + t = trunc(t); + t = trunc(t*t); + + t = round(t); + t = round(t*t); + + t = exp(t); + t = exp(t*t); + + t = log(t); + t = log(t*t); + + t = log10(t); + t = log10(t*t); + + t = cos(t); + t = cos(t*t); + + t = sin(t); + t = sin(t*t); + + t = tan(t); + t = tan(t*t); + + t = asin(t); + t = asin(t*t); + + t = atan(t); + t = atan(t*t); + + t = acos(t); + t = acos(t*t); + + t = cosh(t); + t = cosh(t*t); + + t = sinh(t); + t = sinh(t*t); + + t = tanh(t); + t = tanh(t*t); + + double dval = 2; + t = pow(t, t); + t = pow(t, t*t); + t = pow(t, dval); + t = pow(t*t, t); + t = pow(t*t, t*t); + t = pow(t*t, dval); + t = pow(dval, t); + t = pow(dval, t*t); + + t = atan2(t, t); + t = atan2(t, t*t); + t = atan2(t, dval); + t = atan2(t*t, t); + t = atan2(t*t, t*t); + t = atan2(t*t, dval); + t = atan2(dval, t); + t = atan2(dval, t*t); + + t = fmod(t, t); + t = fmod(t, t*t); + t = fmod(t, dval); + t = fmod(t*t, t); + t = fmod(t*t, t*t); + t = fmod(t*t, dval); + t = fmod(dval, t); + t = fmod(dval, t*t); + + typedef typename T::backend_type backend_type; + typedef typename backend_type::exponent_type exp_type; + exp_type e = 0; + int i = 0; + + t = ldexp(t, i); + t = ldexp(t*t, i); + t = ldexp(t, e); + t = ldexp(t*t, e); + + t = frexp(t, &i); + t = frexp(t*t, &i); + t = frexp(t, &e); + t = frexp(t*t, &e); +} + void foo() { #ifdef TEST_BACKEND instantiate(boost::multiprecision::concepts::mp_number_float_architype()); + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); #endif #ifdef TEST_MPF_50 instantiate(boost::multiprecision::mpf_float_50()); + test_extra(boost::multiprecision::mpf_float_50()); #endif #ifdef TEST_MPFR_50 instantiate(boost::multiprecision::mpfr_float_50()); + test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 instantiate(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_MPFR_15 instantiate(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_MPFR_17 instantiate(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_MPFR_30 instantiate(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_CPP_DEC_FLOAT instantiate(boost::multiprecision::cpp_dec_float_50()); + test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET instantiate(boost::multiprecision::mp_number, false>()); + test_extra(boost::multiprecision::mp_number, false>()); #endif } From 62c5ef6ca0c11d2b10912de6966d000338dd61c1 Mon Sep 17 00:00:00 2001 From: Christopher Kormanyos Date: Sun, 6 May 2012 20:42:55 +0000 Subject: [PATCH 180/256] Switched erroneous use of old enum_fpclass to correct new fpclass_type. [SVN r78363] --- include/boost/multiprecision/cpp_dec_float.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 499c50d3..d09a0b75 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -185,9 +185,9 @@ public: cpp_dec_float(const cpp_dec_float& f) : exp (f.exp), neg (f.neg), - fpclass (static_cast(static_cast(f.fpclass))), + fpclass (static_cast(static_cast(f.fpclass))), prec_elem(cpp_dec_float_elem_number) - { + { // TODO: this doesn't round! std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); precision((std::min)(f.prec_elem, prec_elem)); @@ -334,7 +334,7 @@ public: { exp = f.exp; neg = f.neg; - fpclass = static_cast(static_cast(f.fpclass)); + fpclass = static_cast(static_cast(f.fpclass)); std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); precision((std::min)(f.prec_elem, prec_elem)); return *this; From a8c73aea66ce94bdb5ddb1a821c45e3af82b307f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 10 May 2012 09:20:26 +0000 Subject: [PATCH 181/256] Change non-member functions to be protected by enable_if based on the type of the number. Extend expression templates to 4 arguments. Add pow and powm functions for integer types. Update docs to match. [SVN r78401] --- .../boost_multiprecision/indexes/s01.html | 14 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 9 +- .../boost_multiprecision/ref/mp_number.html | 17 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 13 +- .../boost/multiprecision/cpp_dec_float.hpp | 2 +- include/boost/multiprecision/cpp_int.hpp | 7 + .../multiprecision/detail/default_ops.hpp | 306 +++++----- .../multiprecision/detail/functions/pow.hpp | 67 ++- .../multiprecision/detail/functions/trig.hpp | 26 +- .../multiprecision/detail/mp_number_base.hpp | 539 ++++++++++-------- include/boost/multiprecision/gmp.hpp | 23 + include/boost/multiprecision/integer_ops.hpp | 180 +++++- include/boost/multiprecision/miller_rabin.hpp | 12 +- include/boost/multiprecision/mp_number.hpp | 117 ++-- include/boost/multiprecision/mpfr.hpp | 17 +- test/test_cpp_int.cpp | 27 + 19 files changed, 873 insertions(+), 513 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 87ffa2d8..ddb95fbb 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@ -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    @@ -168,13 +168,19 @@
    P
    -
    R
    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index be58bd14..738fe63f 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 97dafaf5..23a657a4 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index ac6db077..fd084d6d 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T Z

    @@ -400,6 +400,7 @@
  • miller_rabin_test

  • mp_number

  • number_category

  • +
  • powm

  • precision

  • round

  • sign

  • @@ -444,6 +445,10 @@
    • +

      powm

      + +
    • +
    • precision

      • Introduction

      • diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index b883aa18..75a54542 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -144,8 +144,10 @@ struct number_category; // Integer specific functions: +unmentionable-expression-template-type pow(const mp_number-or-expression-template-type&, unsigned); +unmentionable-expression-template-type powm(const mp_number-or-expression-template-type& b, const mp_number-or-expression-template-type& p, const mp_number-or-expression-template-type& m); template <class Backend, bool ExpressionTemplates> -bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y, +void divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y, mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r); template <class Integer> Integer integer_modulus(const mp_number-or-expression-template-type& x, Integer val); @@ -558,6 +560,19 @@ Integer functions +
        unmentionable-expression-template-type    pow(const mp_number-or-expression-template-type& b, unsigned p);
        +
        +

        + Returns bp as an expression template. Note that this + function should be used with extreme care as the result can grow so large + as to take "effectively forever" to compute, or else simply run + the host machine out of memory. +

        +
        unmentionable-expression-template-type    powm(const mp_number-or-expression-template-type& b, const mp_number-or-expression-template-type& p, const mp_number-or-expression-template-type& m);
        +
        +

        + Returns bp mod m as an expression template. +

        template <class Backend, bool ExpressionTemplates>
         bool divide_qr(const mp_number-or-expression-template-type& x, const mp_number-or-expression-template-type& y,
                        mp_number<Backend, ExpressionTemplates>& q, mp_number<Backend, ExpressionTemplates>& r);
        diff --git a/doc/html/index.html b/doc/html/index.html
        index 444abace..c699fb31 100644
        --- a/doc/html/index.html
        +++ b/doc/html/index.html
        @@ -117,7 +117,7 @@
         
    - +

    Last revised: April 15, 2012 at 17:36:47 GMT

    Last revised: May 09, 2012 at 18:07:25 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 4804fd6d..f7819bc6 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -1052,8 +1052,10 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba struct number_category; // Integer specific functions: + ``['unmentionable-expression-template-type]`` pow(const ``['mp_number-or-expression-template-type]``&, unsigned); + ``['unmentionable-expression-template-type]`` powm(const ``['mp_number-or-expression-template-type]``& b, const ``['mp_number-or-expression-template-type]``& p, const ``['mp_number-or-expression-template-type]``& m); template - bool divide_qr(const ``['mp_number-or-expression-template-type]``& x, const ``['mp_number-or-expression-template-type]``& y, + void divide_qr(const ``['mp_number-or-expression-template-type]``& x, const ``['mp_number-or-expression-template-type]``& y, mp_number& q, mp_number& r); template Integer integer_modulus(const ``['mp_number-or-expression-template-type]``& x, Integer val); @@ -1336,6 +1338,15 @@ A traits class that inherits from `mpl::int_` where `N` is one of the enumera [h4 Integer functions] + ``['unmentionable-expression-template-type]`` pow(const ``['mp_number-or-expression-template-type]``& b, unsigned p); + +Returns ['b[super p]] as an expression template. Note that this function should be used with extreme care as the result can grow so +large as to take "effectively forever" to compute, or else simply run the host machine out of memory. + + ``['unmentionable-expression-template-type]`` powm(const ``['mp_number-or-expression-template-type]``& b, const ``['mp_number-or-expression-template-type]``& p, const ``['mp_number-or-expression-template-type]``& m); + +Returns ['b[super p] mod m] as an expression template. + template bool divide_qr(const ``['mp_number-or-expression-template-type]``& x, const ``['mp_number-or-expression-template-type]``& y, mp_number& q, mp_number& r); diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index d09a0b75..d276e12e 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -334,7 +334,7 @@ public: { exp = f.exp; neg = f.neg; - fpclass = static_cast(static_cast(f.fpclass)); + fpclass = static_cast(static_cast(f.fpclass)); std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); precision((std::min)(f.prec_elem, prec_elem)); return *this; diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index a72008c4..1474a6f0 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1082,10 +1082,13 @@ inline void eval_multiply(cpp_int_backend& result, c for(unsigned j = 0; j < inner_limit; ++j) { BOOST_ASSERT(i+j < result.size()); + BOOST_ASSERT((std::numeric_limits::max)() - carry > static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value)); carry += static_cast(pa[i]) * static_cast(pb[j]); + BOOST_ASSERT((std::numeric_limits::max)() - carry >= pr[i+j]); carry += pr[i + j]; pr[i + j] = static_cast(carry); carry >>= cpp_int_backend::limb_bits; + BOOST_ASSERT(carry <= (cpp_int_backend::max_limb_value)); } if(cpp_int_backend::variable || (i + bs < result.size())) pr[i + bs] = static_cast(carry); @@ -1529,6 +1532,8 @@ void divide_unsigned_helper(cpp_int_backend* result, { --r_order; // No remainder, division was exact. r.resize(r.size() - 1); + if(result) + pres[r_order] = static_cast(0u); } } else @@ -1540,6 +1545,8 @@ void divide_unsigned_helper(cpp_int_backend* result, { --r_order; // No remainder, division was exact. r.resize(r.size() - 1); + if(result) + pres[r_order] = static_cast(0u); } } } diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 8c58cc8d..e5511ffc 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -445,6 +445,26 @@ inline void eval_fmod(T& result, const T& a, const T& b) eval_multiply(n, b); eval_subtract(result, a, n); } +template +inline typename enable_if, void>::type eval_fmod(T& result, const T& x, const A& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = a; + eval_fmod(result, x, c); +} + +template +inline typename enable_if, void>::type eval_fmod(T& result, const A& x, const T& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = x; + eval_fmod(result, c, a); +} + template inline void eval_trunc(T& result, const T& a) { @@ -484,68 +504,6 @@ inline void eval_round(T& result, const T& a) } } -template -inline typename enable_if, void>::type eval_pow(T& result, const T& x, const A& a) -{ - // Note this one is resticted to float arguments since pow.hpp already has a version for - // integer powers.... - typedef typename boost::multiprecision::detail::canonical::type canonical_type; - typedef typename mpl::if_, T, canonical_type>::type cast_type; - cast_type c; - c = a; - eval_pow(result, x, c); -} - -template -inline typename enable_if, void>::type eval_pow(T& result, const A& x, const T& a) -{ - typedef typename boost::multiprecision::detail::canonical::type canonical_type; - typedef typename mpl::if_, T, canonical_type>::type cast_type; - cast_type c; - c = x; - eval_pow(result, c, a); -} - -template -inline typename enable_if, void>::type eval_fmod(T& result, const T& x, const A& a) -{ - typedef typename boost::multiprecision::detail::canonical::type canonical_type; - typedef typename mpl::if_, T, canonical_type>::type cast_type; - cast_type c; - c = a; - eval_fmod(result, x, c); -} - -template -inline typename enable_if, void>::type eval_fmod(T& result, const A& x, const T& a) -{ - typedef typename boost::multiprecision::detail::canonical::type canonical_type; - typedef typename mpl::if_, T, canonical_type>::type cast_type; - cast_type c; - c = x; - eval_fmod(result, c, a); -} - -template -inline typename enable_if, void>::type eval_atan2(T& result, const T& x, const A& a) -{ - typedef typename boost::multiprecision::detail::canonical::type canonical_type; - typedef typename mpl::if_, T, canonical_type>::type cast_type; - cast_type c; - c = a; - eval_atan2(result, x, c); -} - -template -inline typename enable_if, void>::type eval_atan2(T& result, const A& x, const T& a) -{ - typedef typename boost::multiprecision::detail::canonical::type canonical_type; - typedef typename mpl::if_, T, canonical_type>::type cast_type; - cast_type c; - c = x; - eval_atan2(result, c, a); -} - template inline typename enable_if >::type eval_gcd(T& result, const T& a, const Arithmetic& b) { @@ -670,10 +628,10 @@ inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_ using multiprecision::default_ops::eval_fpclassify; return eval_fpclassify(arg.backend()); } -template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +template +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return fpclassify(value_type(arg)); } template @@ -682,10 +640,10 @@ inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_n int v = fpclassify(arg); return (v != FP_INFINITE) && (v != FP_NAN); } -template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +template +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isfinite(value_type(arg)); } template @@ -693,10 +651,10 @@ inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_numb { return fpclassify(arg) == FP_NAN; } -template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +template +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isnan(value_type(arg)); } template @@ -704,10 +662,10 @@ inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_numb { return fpclassify(arg) == FP_INFINITE; } -template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +template +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isinf(value_type(arg)); } template @@ -715,20 +673,20 @@ inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_n { return fpclassify(arg) == FP_NORMAL; } -template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +template +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::mp_exp::result_type value_type; return isnormal(value_type(arg)); } } // namespace math namespace multiprecision{ -template -inline typename detail::mp_exp::result_type trunc(const detail::mp_exp& v, const Policy& pol) +template +inline typename detail::mp_exp::result_type trunc(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; return trunc(number_type(v), pol); } @@ -741,17 +699,17 @@ inline mp_number trunc(const mp_number -inline int itrunc(const detail::mp_exp& v, const Policy& pol) +template +inline int itrunc(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to(); return r.template convert_to(); } -template -inline int itrunc(const detail::mp_exp& v) +template +inline int itrunc(const detail::mp_exp& v) { return itrunc(v, boost::math::policies::policy<>()); } @@ -768,17 +726,17 @@ inline int itrunc(const mp_number& v) { return itrunc(v, boost::math::policies::policy<>()); } -template -inline long ltrunc(const detail::mp_exp& v, const Policy& pol) +template +inline long ltrunc(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to(); return r.template convert_to(); } -template -inline long ltrunc(const detail::mp_exp& v) +template +inline long ltrunc(const detail::mp_exp& v) { return ltrunc(v, boost::math::policies::policy<>()); } @@ -796,17 +754,17 @@ inline long ltrunc(const mp_number& v) return ltrunc(v, boost::math::policies::policy<>()); } #ifndef BOOST_NO_LONG_LONG -template -inline long long lltrunc(const detail::mp_exp& v, const Policy& pol) +template +inline long long lltrunc(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to(); return r.template convert_to(); } -template -inline long long lltrunc(const detail::mp_exp& v) +template +inline long long lltrunc(const detail::mp_exp& v) { return lltrunc(v, boost::math::policies::policy<>()); } @@ -824,10 +782,10 @@ inline long long lltrunc(const mp_number& v) return lltrunc(v, boost::math::policies::policy<>()); } #endif -template -inline typename detail::mp_exp::result_type round(const detail::mp_exp& v, const Policy& pol) +template +inline typename detail::mp_exp::result_type round(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; return round(static_cast(v), pol); } template @@ -839,17 +797,17 @@ inline mp_number round(const mp_number -inline int iround(const detail::mp_exp& v, const Policy& pol) +template +inline int iround(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to(); return r.template convert_to(); } -template -inline int iround(const detail::mp_exp& v) +template +inline int iround(const detail::mp_exp& v) { return iround(v, boost::math::policies::policy<>()); } @@ -866,17 +824,17 @@ inline int iround(const mp_number& v) { return iround(v, boost::math::policies::policy<>()); } -template -inline long lround(const detail::mp_exp& v, const Policy& pol) +template +inline long lround(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to(); return r.template convert_to(); } -template -inline long lround(const detail::mp_exp& v) +template +inline long lround(const detail::mp_exp& v) { return lround(v, boost::math::policies::policy<>()); } @@ -894,17 +852,17 @@ inline long lround(const mp_number& v) return lround(v, boost::math::policies::policy<>()); } #ifndef BOOST_NO_LONG_LONG -template -inline long long llround(const detail::mp_exp& v, const Policy& pol) +template +inline long long llround(const detail::mp_exp& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; number_type r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to(); return r.template convert_to(); } -template -inline long long llround(const detail::mp_exp& v) +template +inline long long llround(const detail::mp_exp& v) { return llround(v, boost::math::policies::policy<>()); } @@ -937,21 +895,21 @@ struct BOOST_JOIN(func, _funct)\ \ }\ \ -template \ -inline typename enable_if_c >::value == category,\ +template \ +inline typename enable_if_c >::value == category,\ detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp >\ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp > \ >::type \ -func(const detail::mp_exp& arg)\ +func(const detail::mp_exp& arg)\ {\ return detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ > (\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg \ );\ }\ @@ -960,7 +918,7 @@ inline typename enable_if_c::value == category,\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number >\ + , mp_number > \ >::type \ func(const mp_number& arg)\ {\ @@ -1031,43 +989,43 @@ func(const mp_number& arg, const mp_number& a)\ a\ );\ }\ -template \ +template \ inline typename enable_if_c<\ - (number_category::value == category) && (number_category >::value == category),\ + (number_category::value == category) && (number_category >::value == category),\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ - , detail::mp_exp > \ + , detail::mp_exp > \ >::type \ -func(const mp_number& arg, const detail::mp_exp& a)\ +func(const mp_number& arg, const detail::mp_exp& a)\ {\ return detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , mp_number \ - , detail::mp_exp \ + , detail::mp_exp \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ a\ );\ }\ -template \ +template \ inline typename enable_if_c<\ - (number_category::value == category) && (number_category >::value == category),\ + (number_category::value == category) && (number_category >::value == category),\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::mp_exp \ + , detail::mp_exp \ , mp_number > \ >::type \ -func(const detail::mp_exp& arg, const mp_number& a)\ +func(const detail::mp_exp& arg, const mp_number& a)\ {\ return detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::mp_exp \ + , detail::mp_exp \ , mp_number \ >(\ detail::BOOST_JOIN(func, _funct)() \ @@ -1075,24 +1033,24 @@ func(const detail::mp_exp& arg, const mp_number& a)\ a\ );\ }\ -template \ +template \ inline typename enable_if_c<\ - (number_category >::value == category) && (number_category >::value == category),\ + (number_category >::value == category) && (number_category >::value == category),\ detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ - , detail::mp_exp > \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , detail::mp_exp > \ >::type \ -func(const detail::mp_exp& arg, const detail::mp_exp& a)\ +func(const detail::mp_exp& arg, const detail::mp_exp& a)\ {\ return detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ + , detail::mp_exp \ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ @@ -1120,25 +1078,25 @@ func(const mp_number& arg, const Arithmetic& a)\ a\ );\ }\ -template \ +template \ inline typename enable_if_c<\ - is_arithmetic::value && (number_category >::value == category),\ + is_arithmetic::value && (number_category >::value == category),\ detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ , Arithmetic\ > \ >::type \ -func(const detail::mp_exp& arg, const Arithmetic& a)\ +func(const detail::mp_exp& arg, const Arithmetic& a)\ {\ return detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ , Arithmetic\ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ @@ -1166,25 +1124,25 @@ func(const Arithmetic& arg, const mp_number& a)\ a\ );\ }\ -template \ +template \ inline typename enable_if_c<\ - is_arithmetic::value && (number_category >::value == category),\ + is_arithmetic::value && (number_category >::value == category),\ detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::BOOST_JOIN(func, _funct) >::type> \ , Arithmetic \ - , detail::mp_exp \ + , detail::mp_exp \ > \ >::type \ -func(const Arithmetic& arg, const detail::mp_exp& a)\ +func(const Arithmetic& arg, const detail::mp_exp& a)\ {\ return detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::BOOST_JOIN(func, _funct) >::type> \ , Arithmetic \ - , detail::mp_exp \ + , detail::mp_exp \ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ @@ -1228,24 +1186,24 @@ func(const Arithmetic& a, const mp_number& arg)\ #define HETERO_BINARY_OP_FUNCTOR_B(func, Arg2, category)\ -template \ +template \ inline typename enable_if_c<\ - (number_category >::value == category),\ + (number_category >::value == category),\ detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ , Arg2> \ >::type \ -func(const detail::mp_exp& arg, Arg2 const& a)\ +func(const detail::mp_exp& arg, Arg2 const& a)\ {\ return detail::mp_exp<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::mp_exp \ , Arg2\ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg, a \ );\ }\ @@ -1313,19 +1271,19 @@ struct abs_funct } -template +template inline detail::mp_exp< detail::function - , detail::abs_funct >::type> - , detail::mp_exp > -abs(const detail::mp_exp& arg) + , detail::abs_funct >::type> + , detail::mp_exp > +abs(const detail::mp_exp& arg) { return detail::mp_exp< detail::function - , detail::abs_funct >::type> - , detail::mp_exp + , detail::abs_funct >::type> + , detail::mp_exp > ( - detail::abs_funct >::type>() + detail::abs_funct >::type>() , arg ); } @@ -1389,7 +1347,7 @@ BINARY_OP_FUNCTOR(atan2, number_kind_floating_point) // BINARY_OP_FUNCTOR(gcd, number_kind_integer) BINARY_OP_FUNCTOR(lcm, number_kind_integer) - +HETERO_BINARY_OP_FUNCTOR_B(pow, unsigned, number_kind_integer) #undef BINARY_OP_FUNCTOR #undef UNARY_OP_FUNCTOR diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 76312f66..bbb6b537 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -15,30 +15,11 @@ namespace detail{ template -inline T pow_imp(T& result, const T& t, const U& p, const mpl::false_&) -{ - T temp(p); - eval_pow(result, t, p); -} - -template -inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) +inline void pow_imp(T& result, const T& t, const U& p, const mpl::false_&) { // Compute the pure power of typename T t^p. Binary splitting of the power is // used. The resulting computational complexity has the order of log2[abs(p)]. - - typedef typename mpl::front::type int_type; - - if(p < 0) - { - T temp; - temp = static_cast(1); - T denom; - pow_imp(denom, t, -p, mpl::true_()); - eval_divide(result, temp, denom); - return; - } - + typedef typename boost::multiprecision::detail::canonical::type int_type; switch(p) { case 0: @@ -74,19 +55,37 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) if(p_minus_n) { T temp; - pow_imp(temp, t, p_minus_n, mpl::true_()); + pow_imp(temp, t, p_minus_n, mpl::false_()); eval_multiply(result, temp); } } } } +template +inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) +{ + // Signed integer power, just take care of the sign then call the unsigned version: + typedef typename boost::multiprecision::detail::canonical::type int_type; + + if(p < 0) + { + T temp; + temp = static_cast(1); + T denom; + pow_imp(denom, t, -p, mpl::false_()); + eval_divide(result, temp, denom); + return; + } + pow_imp(result, t, p, mpl::false_()); +} + } // namespace detail template inline typename enable_if >::type eval_pow(T& result, const T& t, const U& p) { - detail::pow_imp(result, t, p, mpl::true_()); + detail::pow_imp(result, t, p, boost::is_signed()); } template @@ -545,6 +544,28 @@ inline void eval_pow(T& result, const T& x, const T& a) } } +template +inline typename enable_if, void>::type eval_pow(T& result, const T& x, const A& a) +{ + // Note this one is resticted to float arguments since pow.hpp already has a version for + // integer powers.... + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = a; + eval_pow(result, x, c); +} + +template +inline typename enable_if, void>::type eval_pow(T& result, const A& x, const T& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = x; + eval_pow(result, c, a); +} + namespace detail{ template diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index d03d6cd2..b60722f5 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -766,13 +766,23 @@ void eval_atan2(T& result, const T& y, const T& x) eval_add(result, get_constant_pi()); } } -/* -template -typename disable_if >::type eval_atan2(T& result, const T& a, const Arithmetic& b) +template +inline typename enable_if, void>::type eval_atan2(T& result, const T& x, const A& a) { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The atan2 function is only valid for floating point types."); - T x; - x = static_cast::type>(b); - eval_atan2(result, a, x); + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = a; + eval_atan2(result, x, c); } -*/ + +template +inline typename enable_if, void>::type eval_atan2(T& result, const A& x, const T& a) +{ + typedef typename boost::multiprecision::detail::canonical::type canonical_type; + typedef typename mpl::if_, T, canonical_type>::type cast_type; + cast_type c; + c = x; + eval_atan2(result, c, a); +} + diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 317462dd..d57d30dd 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -22,12 +22,28 @@ namespace boost{ namespace multiprecision{ template class mp_number; +template +struct is_mp_number : public mpl::false_ {}; + +template +struct is_mp_number > : public mpl::true_ {}; + namespace detail{ // Forward-declare an expression wrapper -template +template struct mp_exp; +} // namespace detail + +template +struct is_mp_number_expression : public mpl::false_ {}; + +template +struct is_mp_number_expression > : public mpl::true_ {}; + +namespace detail{ + template typename boost::enable_if, T>::type abs(const T& t) { @@ -144,10 +160,10 @@ struct backend_type > typedef T type; }; -template -struct backend_type > +template +struct backend_type > { - typedef typename backend_type::result_type>::type type; + typedef typename backend_type::result_type>::type type; }; @@ -157,8 +173,8 @@ template struct is_mp_number > : public mpl::true_{}; template struct is_mp_number_exp : public mpl::false_{}; -template -struct is_mp_number_exp > : public mpl::true_{}; +template +struct is_mp_number_exp > : public mpl::true_{}; template struct combine_expression; @@ -187,10 +203,10 @@ struct arg_type typedef mp_exp type; }; -template -struct arg_type > +template +struct arg_type > { - typedef mp_exp type; + typedef mp_exp type; }; template @@ -219,14 +235,14 @@ struct mp_exp_storage typedef const T* type; }; -template -struct mp_exp_storage > +template +struct mp_exp_storage > { - typedef mp_exp type; + typedef mp_exp type; }; template -struct mp_exp +struct mp_exp { typedef mpl::int_<1> arity; typedef typename arg_type::type left_type; @@ -253,7 +269,7 @@ private: }; template -struct mp_exp +struct mp_exp { typedef mpl::int_<0> arity; typedef Arg1 result_type; @@ -276,7 +292,7 @@ private: }; template -struct mp_exp +struct mp_exp { typedef mpl::int_<2> arity; typedef typename arg_type::type left_type; @@ -309,7 +325,7 @@ private: }; template -struct mp_exp +struct mp_exp { typedef mpl::int_<3> arity; typedef typename arg_type::type left_type; @@ -350,6 +366,61 @@ private: mp_exp& operator=(const mp_exp&); }; +template +struct mp_exp +{ + typedef mpl::int_<4> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type left_middle_type; + typedef typename arg_type::type right_middle_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename left_middle_type::result_type left_middle_result_type; + typedef typename right_middle_type::result_type right_middle_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression< + typename combine_expression< + typename combine_expression::type, + right_middle_result_type + >::type, + right_result_type + >::type result_type; + typedef tag tag_type; + + mp_exp(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) : arg1(a1), arg2(a2), arg3(a3), arg4(a4) {} + + left_type left()const { return left_type(arg1); } + left_middle_type left_middle()const { return left_middle_type(arg2); } + right_middle_type right_middle()const { return right_middle_type(arg3); } + right_type right()const { return right_type(arg4); } + const Arg1& left_ref()const{ return arg1; } + const Arg2& left_middle_ref()const{ return arg2; } + const Arg3& right_middle_ref()const{ return arg3; } + const Arg4& right_ref()const{ return arg4; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned left_middle_depth = left_middle_type::depth + 1; + static const unsigned right_middle_depth = right_middle_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + + static const unsigned left_max_depth = left_depth > left_middle_depth ? left_depth : left_middle_depth; + static const unsigned right_max_depth = right_depth > right_middle_depth ? right_depth : right_middle_depth; + + static const unsigned depth = left_max_depth > right_max_depth ? left_max_depth : right_max_depth; +private: + typename mp_exp_storage::type arg1; + typename mp_exp_storage::type arg2; + typename mp_exp_storage::type arg3; + typename mp_exp_storage::type arg4; + mp_exp& operator=(const mp_exp&); +}; + template struct digits2 { @@ -506,16 +577,16 @@ void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, // template inline const mp_number& operator + (const mp_number& v) { return v; } -template -inline const detail::mp_exp& operator + (const detail::mp_exp& v) { return v; } +template +inline const detail::mp_exp& operator + (const detail::mp_exp& v) { return v; } template inline detail::mp_exp > operator - (const mp_number& v) { return detail::mp_exp >(v); } -template -inline detail::mp_exp > operator - (const detail::mp_exp& v) { return detail::mp_exp >(v); } +template +inline detail::mp_exp > operator - (const detail::mp_exp& v) { return detail::mp_exp >(v); } template inline detail::mp_exp > operator ~ (const mp_number& v) { return detail::mp_exp >(v); } -template -inline detail::mp_exp > operator ~ (const detail::mp_exp& v) { return detail::mp_exp >(v); } +template +inline detail::mp_exp > operator ~ (const detail::mp_exp& v) { return detail::mp_exp >(v); } // // Then addition: // @@ -537,50 +608,50 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator + (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator + (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator + (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator + (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator + (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator + (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator + (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator + (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator + (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator + (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // // Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: // -template -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator + (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator + (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); } -template -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator + (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator + (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); } template inline detail::mp_exp, mp_number > @@ -627,51 +698,51 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator - (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator - (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator - (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator - (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator - (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator - (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator - (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator - (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator - (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator - (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // // Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: // -template -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator - (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, typename detail::mp_exp::left_type > + operator - (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); + return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); } -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator - (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator - (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); } template inline detail::mp_exp, mp_number > @@ -719,52 +790,52 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator * (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator * (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator * (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator * (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator * (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator * (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator * (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator * (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator * (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator * (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // // Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: // -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator * (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator * (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref())); } -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator * (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator * (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); } template inline detail::mp_exp, mp_number > > @@ -815,52 +886,52 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator / (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator / (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator / (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator / (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator / (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator / (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator / (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator / (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator / (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator / (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // // Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: // -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator / (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, typename detail::mp_exp::left_type > > + operator / (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref())); + return detail::mp_exp, typename detail::mp_exp::left_type > >( + detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref())); } -template -inline detail::mp_exp::left_type, mp_number > > - operator / (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp::left_type, mp_number > > + operator / (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp::left_type, mp_number > >( - detail::mp_exp::left_type, mp_number >(a.left_ref(), b)); + return detail::mp_exp::left_type, mp_number > >( + detail::mp_exp::left_type, mp_number >(a.left_ref(), b)); } template inline detail::mp_exp, mp_number > > @@ -911,35 +982,35 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator % (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator % (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator % (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator % (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator % (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator % (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator % (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator % (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator % (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator % (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // // Left shift: @@ -950,11 +1021,11 @@ inline typename enable_if, detail::mp_exp, I>(a, b); } -template -inline typename enable_if, detail::mp_exp, I> >::type - operator << (const detail::mp_exp& a, const I& b) +template +inline typename enable_if, detail::mp_exp, I> >::type + operator << (const detail::mp_exp& a, const I& b) { - return detail::mp_exp, I>(a, b); + return detail::mp_exp, I>(a, b); } // // Right shift: @@ -965,11 +1036,11 @@ inline typename enable_if, detail::mp_exp, I>(a, b); } -template -inline typename enable_if, detail::mp_exp, I> >::type - operator >> (const detail::mp_exp& a, const I& b) +template +inline typename enable_if, detail::mp_exp, I> >::type + operator >> (const detail::mp_exp& a, const I& b) { - return detail::mp_exp, I>(a, b); + return detail::mp_exp, I>(a, b); } // // Bitwise AND: @@ -992,35 +1063,35 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator & (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator & (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator & (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator & (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator & (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator & (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator & (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator & (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator & (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator & (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // // Bitwise OR: @@ -1043,35 +1114,35 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator| (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator| (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator| (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator| (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator| (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator| (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator| (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator| (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator| (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator| (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // // Bitwise XOR: @@ -1094,35 +1165,35 @@ inline typename enable_if, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator^ (const mp_number& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator^ (const mp_number& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline detail::mp_exp, mp_number > - operator^ (const detail::mp_exp& a, const mp_number& b) +template +inline detail::mp_exp, mp_number > + operator^ (const detail::mp_exp& a, const mp_number& b) { - return detail::mp_exp, mp_number >(a, b); + return detail::mp_exp, mp_number >(a, b); } -template -inline detail::mp_exp, detail::mp_exp > - operator^ (const detail::mp_exp& a, const detail::mp_exp& b) +template +inline detail::mp_exp, detail::mp_exp > + operator^ (const detail::mp_exp& a, const detail::mp_exp& b) { - return detail::mp_exp, detail::mp_exp >(a, b); + return detail::mp_exp, detail::mp_exp >(a, b); } -template -inline typename enable_if, detail::mp_exp, V > >::type - operator^ (const detail::mp_exp& a, const V& b) +template +inline typename enable_if, detail::mp_exp, V > >::type + operator^ (const detail::mp_exp& a, const V& b) { - return detail::mp_exp, V >(a, b); + return detail::mp_exp, V >(a, b); } -template -inline typename enable_if, detail::mp_exp > >::type - operator^ (const V& a, const detail::mp_exp& b) +template +inline typename enable_if, detail::mp_exp > >::type + operator^ (const V& a, const detail::mp_exp& b) { - return detail::mp_exp >(a, b); + return detail::mp_exp >(a, b); } // @@ -1140,15 +1211,15 @@ template struct number_category : public mpl::int_ {}; template struct number_category > : public number_category{}; -template -struct number_category > : public number_category::result_type>{}; +template +struct number_category > : public number_category::result_type>{}; template struct component_type; template struct component_type > : public component_type{}; -template -struct component_type > : public component_type::result_type>{}; +template +struct component_type > : public component_type::result_type>{}; }} // namespaces @@ -1157,10 +1228,10 @@ namespace boost{ namespace math{ namespace tools{ template struct promote_arg; -template -struct promote_arg > +template +struct promote_arg > { - typedef typename boost::multiprecision::detail::mp_exp::result_type type; + typedef typename boost::multiprecision::detail::mp_exp::result_type type; }; }}} diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index a4014cdd..02f11216 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1412,6 +1412,29 @@ inline typename enable_if, Integer>::type eval_integer_modulu typedef typename make_unsigned::type unsigned_type; return eval_integer_modulus(x, static_cast(std::abs(val))); } +inline void eval_powm(gmp_int& result, const gmp_int& base, const gmp_int& p, const gmp_int& m) +{ + if(eval_get_sign(p) < 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); + } + mpz_powm(result.data(), base.data(), p.data(), m.data()); +} + +template +inline typename enable_if< + mpl::and_< + is_unsigned, + mpl::bool_ + > +>::type eval_powm(gmp_int& result, const gmp_int& base, Integer p, const gmp_int& m) +{ + if(p < 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); + } + mpz_powm_ui(result.data(), base.data(), p, m.data()); +} struct gmp_rational; void eval_add(gmp_rational& t, const gmp_rational& o); diff --git a/include/boost/multiprecision/integer_ops.hpp b/include/boost/multiprecision/integer_ops.hpp index 6a83b2a6..fa4f6976 100644 --- a/include/boost/multiprecision/integer_ops.hpp +++ b/include/boost/multiprecision/integer_ops.hpp @@ -49,25 +49,25 @@ inline typename enable_if_c::value == number_kind_integ eval_qr(x.backend(), y.backend(), q.backend(), r.backend()); } -template +template inline typename enable_if_c::value == number_kind_integer>::type - divide_qr(const mp_number& x, const multiprecision::detail::mp_exp& y, + divide_qr(const mp_number& x, const multiprecision::detail::mp_exp& y, mp_number& q, mp_number& r) { divide_qr(x, mp_number(y), q, r); } -template +template inline typename enable_if_c::value == number_kind_integer>::type - divide_qr(const multiprecision::detail::mp_exp& x, const mp_number& y, + divide_qr(const multiprecision::detail::mp_exp& x, const mp_number& y, mp_number& q, mp_number& r) { divide_qr(mp_number(x), y, q, r); } -template +template inline typename enable_if_c::value == number_kind_integer>::type - divide_qr(const multiprecision::detail::mp_exp& x, const multiprecision::detail::mp_exp& y, + divide_qr(const multiprecision::detail::mp_exp& x, const multiprecision::detail::mp_exp& y, mp_number& q, mp_number& r) { divide_qr(mp_number(x), mp_number(y), q, r); @@ -81,11 +81,11 @@ inline typename enable_if, mpl::bool_ -inline typename enable_if, mpl::bool_::result_type>::value == number_kind_integer> >, Integer>::type - integer_modulus(const multiprecision::detail::mp_exp& x, Integer val) +template +inline typename enable_if, mpl::bool_::result_type>::value == number_kind_integer> >, Integer>::type + integer_modulus(const multiprecision::detail::mp_exp& x, Integer val) { - typedef typename multiprecision::detail::mp_exp::result_type result_type; + typedef typename multiprecision::detail::mp_exp::result_type result_type; return integer_modulus(result_type(x), val); } @@ -97,11 +97,11 @@ inline typename enable_if_c::value == number_kind_integ return eval_lsb(x.backend()); } -template -inline typename enable_if_c::result_type>::value == number_kind_integer, unsigned>::type - lsb(const multiprecision::detail::mp_exp& x) +template +inline typename enable_if_c::result_type>::value == number_kind_integer, unsigned>::type + lsb(const multiprecision::detail::mp_exp& x) { - typedef typename multiprecision::detail::mp_exp::result_type number_type; + typedef typename multiprecision::detail::mp_exp::result_type number_type; number_type n(x); using default_ops::eval_lsb; return eval_lsb(n.backend()); @@ -115,11 +115,11 @@ inline typename enable_if_c::value == number_kind_integ return eval_bit_test(x.backend(), index); } -template -inline typename enable_if_c::result_type>::value == number_kind_integer, bool>::type - bit_test(const multiprecision::detail::mp_exp& x, unsigned index) +template +inline typename enable_if_c::result_type>::value == number_kind_integer, bool>::type + bit_test(const multiprecision::detail::mp_exp& x, unsigned index) { - typedef typename multiprecision::detail::mp_exp::result_type number_type; + typedef typename multiprecision::detail::mp_exp::result_type number_type; number_type n(x); using default_ops::eval_bit_test; return eval_bit_test(n.backend(), index); @@ -152,6 +152,150 @@ inline typename enable_if_c::value == number_kind_integ return x; } +namespace detail{ + +// +// Calculate (a^p)%c: +// +template +void eval_powm(Backend& result, const Backend& a, const Backend& p, const Backend& c) +{ + typedef typename canonical::type ui_type; + Backend x, y(a), b(p); + x = ui_type(1u); + while(eval_get_sign(b) > 0) + { + if(eval_bit_test(b, 0)) + { + eval_multiply(result, x, y); + eval_modulus(x, result, c); + } + eval_multiply(result, y, y); + eval_modulus(y, result, c); + eval_right_shift(b, ui_type(1)); + } + eval_modulus(result, x, c); +} + +template +void eval_powm(Backend& result, const Backend& a, const Backend& p, Integer c) +{ + typedef typename canonical::type ui_type; + typedef typename canonical::type i_type; + + if(eval_get_sign(p) < 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); + } + + Backend x, y(a), b(p); + x = ui_type(1u); + while(eval_get_sign(b) > 0) + { + if(eval_bit_test(b, 0)) + { + eval_multiply(result, x, y); + eval_modulus(x, result, static_cast(c)); + } + eval_multiply(result, y, y); + eval_modulus(y, result, static_cast(c)); + eval_right_shift(b, ui_type(1)); + } + eval_modulus(result, x, static_cast(c)); +} + +template +void eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) +{ + typedef typename canonical::type ui_type; + typedef typename canonical::type i_type; + + if(b < 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); + } + + Backend x, y(a); + x = ui_type(1u); + while(b > 0) + { + if(b & 1) + { + eval_multiply(result, x, y); + eval_modulus(x, result, c); + } + eval_multiply(result, y, y); + eval_modulus(y, result, c); + b >>= 1; + } + eval_modulus(result, x, c); +} + +template +void eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) +{ + typedef typename canonical::type ui_type; + typedef typename canonical::type i1_type; + typedef typename canonical::type i2_type; + + if(b < 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); + } + + Backend x, y(a); + x = ui_type(1u); + while(b > 0) + { + if(b & 1) + { + eval_multiply(result, x, y); + eval_modulus(x, result, static_cast(c)); + } + eval_multiply(result, y, y); + eval_modulus(y, result, static_cast(c)); + b >>= 1; + } + eval_modulus(result, x, static_cast(c)); +} + +struct powm_func +{ + template + void operator()(T& result, const T& b, const U& p, const V& m)const + { + eval_powm(result, b, p, m); + } +}; + +} + +template +inline typename enable_if< + mpl::and_< + mpl::bool_::value == number_kind_integer>, + mpl::or_< + is_mp_number, + is_mp_number_expression + >, + mpl::or_< + is_mp_number, + is_mp_number_expression, + is_integral + >, + mpl::or_< + is_mp_number, + is_mp_number_expression, + is_integral + > + >, + detail::mp_exp >::type + powm(const T& b, const U& p, const V& mod) +{ + return detail::mp_exp( + detail::powm_func(), b, p, mod); +} + }} //namespaces #endif diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index 1e6bbe98..03f21b53 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -197,17 +197,17 @@ bool miller_rabin_test(const mp_number& x, unsigne return miller_rabin_test(x, trials, gen); } -template -bool miller_rabin_test(const detail::mp_exp & n, unsigned trials, Engine& gen) +template +bool miller_rabin_test(const detail::mp_exp & n, unsigned trials, Engine& gen) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; return miller_rabin_test(number_type(n), trials, gen); } -template -bool miller_rabin_test(const detail::mp_exp & n, unsigned trials) +template +bool miller_rabin_test(const detail::mp_exp & n, unsigned trials) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::mp_exp::result_type number_type; return miller_rabin_test(number_type(n), trials); } diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 41f9106c..c75af312 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -88,10 +88,10 @@ public: mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) : m_backend(v){} - template - mp_number& operator=(const detail::mp_exp& e) + template + mp_number& operator=(const detail::mp_exp& e) { - typedef typename is_same::result_type>::type tag_type; + typedef typename is_same::result_type>::type tag_type; do_assign(e, tag_type()); return *this; } @@ -144,8 +144,8 @@ public: return *this; } - template - mp_number(const detail::mp_exp& e) + template + mp_number(const detail::mp_exp& e) { *this = e; } @@ -165,8 +165,8 @@ public: return *this; } - template - mp_number& operator+=(const detail::mp_exp& e) + template + mp_number& operator+=(const detail::mp_exp& e) { // Create a copy if e contains this, but not if we're just doing a // x *= x @@ -564,17 +564,17 @@ public: return m_backend; } private: - template - void do_assign(const detail::mp_exp& e, const mpl::true_&) + template + void do_assign(const detail::mp_exp& e, const mpl::true_&) { do_assign(e, tag()); } - template - void do_assign(const detail::mp_exp& e, const mpl::false_&) + template + void do_assign(const detail::mp_exp& e, const mpl::false_&) { // The result of the expression isn't the same type as this - // create a temporary result and assign it to *this: - typedef typename detail::mp_exp::result_type temp_type; + typedef typename detail::mp_exp::result_type temp_type; temp_type t(e); *this = t; } @@ -1061,12 +1061,12 @@ private: { typedef typename Exp::right_type right_type; typedef typename right_type::tag_type tag_type; - do_assign_function_1(e.left().value(), e.right(), tag_type()); + do_assign_function_1(e.left().value(), e.right_ref(), tag_type()); } template void do_assign_function_1(const F& f, const Exp& val, const detail::terminal&) { - f(m_backend, function_arg_value(val.value())); + f(m_backend, function_arg_value(val)); } template void do_assign_function_1(const F& f, const Exp& val, const Tag&) @@ -1081,24 +1081,24 @@ private: typedef typename middle_type::tag_type tag_type; typedef typename Exp::right_type end_type; typedef typename end_type::tag_type end_tag; - do_assign_function_2(e.left().value(), e.middle(), e.right(), tag_type(), end_tag()); + do_assign_function_2(e.left().value(), e.middle_ref(), e.right_ref(), tag_type(), end_tag()); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const detail::terminal&) { - f(m_backend, function_arg_value(val1.value()), function_arg_value(val2.value())); + f(m_backend, function_arg_value(val1), function_arg_value(val2)); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const detail::terminal&) { self_type temp1(val1); - f(m_backend, temp1.backend(), function_arg_value(val2.value())); + f(m_backend, temp1.backend(), function_arg_value(val2)); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const Tag2&) { self_type temp2(val2); - f(m_backend, function_arg_value(val1.value()), temp2.backend()); + f(m_backend, function_arg_value(val1), temp2.backend()); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&) @@ -1108,6 +1108,51 @@ private: f(m_backend, temp1.backend(), temp2.backend()); } + template + void do_assign_function(const Exp& e, const mpl::int_<4>&) + { + typedef typename Exp::left_middle_type left_type; + typedef typename left_type::tag_type left_tag_type; + typedef typename Exp::right_middle_type middle_type; + typedef typename middle_type::tag_type middle_tag_type; + typedef typename Exp::right_type right_type; + typedef typename right_type::tag_type right_tag_type; + do_assign_function_3a(e.left().value(), e.left_middle_ref(), e.right_middle_ref(), e.right_ref(), left_tag_type(), middle_tag_type(), right_tag_type()); + } + template + void do_assign_function_3a(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&, const Tag2& t2, const Tag3& t3) + { + do_assign_function_3b(f, val1, val2, val3, t2, t3); + } + template + void do_assign_function_3a(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag1&, const Tag2& t2, const Tag3& t3) + { + mp_number t(val1); + do_assign_function_3b(f, t, val2, val3, t2, t3); + } + template + void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&, const Tag3& t3) + { + do_assign_function_3c(f, val1, val2, val3, t3); + } + template + void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag2& t2, const Tag3& t3) + { + mp_number t(val2); + do_assign_function_3c(f, val1, t, val3, t3); + } + template + void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&) + { + f(m_backend, function_arg_value(val1), function_arg_value(val2), function_arg_value(val3)); + } + template + void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag3& t3) + { + mp_number t(val3); + do_assign_function_3c(f, val1, val2, t, detail::terminal()); + } + template void do_add(const Exp& e, const detail::terminal&) { @@ -1485,6 +1530,10 @@ private: static const Backend& function_arg_value(const self_type& v) { return v.backend(); } template static const V& function_arg_value(const V& v) { return v; } + template + static const A1& function_arg_value(const detail::mp_exp& exp) { return exp.value(); } + template + static const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) { return exp.value().backend(); } Backend m_backend; }; @@ -1497,14 +1546,14 @@ inline int mp_number_compare(const mp_number& a, c return a.compare(b); } -template -inline int mp_number_compare(const mp_number& a, const mp_exp& b) +template +inline int mp_number_compare(const mp_number& a, const mp_exp& b) { return a.compare(mp_number(b)); } -template -inline int mp_number_compare(const mp_exp& a, const mp_number& b) +template +inline int mp_number_compare(const mp_exp& a, const mp_number& b) { return -b.compare(mp_number(a)); } @@ -1521,26 +1570,26 @@ inline int mp_number_compare(const Val a, const mp_number -inline int mp_number_compare(const mp_exp& a, const mp_exp& b) +template +inline int mp_number_compare(const mp_exp& a, const mp_exp& b) { - typedef typename mp_exp::result_type real1; + typedef typename mp_exp::result_type real1; typedef typename mp_exp::result_type real2; return real1(a).compare(real2(b)); } -template -inline typename enable_if, int>::type mp_number_compare(const mp_exp& a, const Val b) +template +inline typename enable_if, int>::type mp_number_compare(const mp_exp& a, const Val b) { - typedef typename mp_exp::result_type real; + typedef typename mp_exp::result_type real; real t(a); return t.compare(b); } -template -inline typename enable_if, int>::type mp_number_compare(const Val a, const mp_exp& b) +template +inline typename enable_if, int>::type mp_number_compare(const Val a, const mp_exp& b) { - typedef typename mp_exp::result_type real; + typedef typename mp_exp::result_type real; return -real(b).compare(a); } @@ -1640,10 +1689,10 @@ inline std::ostream& operator << (std::ostream& os, const mp_number -inline std::ostream& operator << (std::ostream& os, const mp_exp& r) +template +inline std::ostream& operator << (std::ostream& os, const mp_exp& r) { - typedef typename mp_exp::result_type value_type; + typedef typename mp_exp::result_type value_type; value_type temp(r); return os << temp; } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index cdb38d26..e72d320a 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -900,18 +900,31 @@ inline void eval_pow(mpfr_float_backend& result, const mpfr_float_back mpfr_pow(result.data(), b.data(), e.data(), GMP_RNDN); } +#ifdef BOOST_MSVC +// +// The enable_if usage below doesn't work with msvc - but only when +// certain other enable_if usages are defined first. It's a capricious +// and rather annoying compiler bug in other words.... +// +# define BOOST_MP_ENABLE_IF_WORKAROUND (Digits10 || !Digits10) && +#else +#define BOOST_MP_ENABLE_IF_WORKAROUND +#endif + template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) { mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN); } template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) { mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN); } +#undef BOOST_MP_ENABLE_IF_WORKAROUND + template inline void eval_exp(mpfr_float_backend& result, const mpfr_float_backend& arg) { diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index fb836463..aba0d58a 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -257,6 +257,33 @@ void test() BOOST_CHECK_EQUAL(t.str(), t1.str()); } + // + // Now integer functions: + // + mpz_int z1, z2; + test_type t1, t2; + divide_qr(a, b, z1, z2); + divide_qr(a1, b1, t1, t2); + BOOST_CHECK_EQUAL(z1.str(), t1.str()); + BOOST_CHECK_EQUAL(z2.str(), t2.str()); + BOOST_CHECK_EQUAL(integer_modulus(a, si), integer_modulus(a1, si)); + BOOST_CHECK_EQUAL(lsb(a), lsb(a1)); + + for(unsigned i = 0; i < 1000; i += 13) + { + BOOST_CHECK_EQUAL(bit_test(a, i), bit_test(a1, i)); + } + if(!std::numeric_limits::is_modulo) + { + // We have to take care that our powers don't grow too large, otherwise this takes "forever", + // also don't test for modulo types, as these may give a diffferent result from arbitrary + // precision types: + BOOST_CHECK_EQUAL(mpz_int(pow(d, ui % 19)).str(), test_type(pow(d1, ui % 19)).str()); + BOOST_CHECK_EQUAL(mpz_int(powm(a, b, c)).str(), test_type(powm(a, b, c)).str()); + BOOST_CHECK_EQUAL(mpz_int(powm(a, b, ui)).str(), test_type(powm(a, b, ui)).str()); + BOOST_CHECK_EQUAL(mpz_int(powm(a, ui, c)).str(), test_type(powm(a, ui, c)).str()); + } + if(last_error_count != boost::detail::test_errors()) { last_error_count = boost::detail::test_errors(); From ebd7502fdceb08ab4606755d7b0849803c2b660b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 11 May 2012 17:19:13 +0000 Subject: [PATCH 182/256] Enhance pow and powm tests. Quash some warnings. Fix the IO tests on GCC. [SVN r78423] --- include/boost/multiprecision/cpp_int.hpp | 5 ++-- .../detail/generic_interconvert.hpp | 7 +++++ include/boost/multiprecision/integer_ops.hpp | 25 ++++++++++++++++ include/boost/multiprecision/miller_rabin.hpp | 30 ++++++------------- include/boost/multiprecision/mp_number.hpp | 16 +++++----- test/Jamfile.v2 | 3 ++ test/test_arithmetic.cpp | 25 +++++++++++++++- test/test_cpp_int.cpp | 2 +- test/test_float_io.cpp | 29 +++++++++++++++++- 9 files changed, 108 insertions(+), 34 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 1474a6f0..e57e10d6 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -119,14 +119,14 @@ public: { *limbs() = 0; } - cpp_int_base(const cpp_int_base& o) : m_limbs(0), m_internal(true) + cpp_int_base(const cpp_int_base& o) : allocator_type(o), m_limbs(0), m_internal(true) { resize(o.size()); std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) : m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) + cpp_int_base(cpp_int_base&& o) : allocator_type(o), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) { if(m_internal) { @@ -149,6 +149,7 @@ public: { if(this != &o) { + static_cast(*this) = static_cast(o); m_limbs = 0; resize(o.size()); std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); diff --git a/include/boost/multiprecision/detail/generic_interconvert.hpp b/include/boost/multiprecision/detail/generic_interconvert.hpp index 4356e522..caf83869 100644 --- a/include/boost/multiprecision/detail/generic_interconvert.hpp +++ b/include/boost/multiprecision/detail/generic_interconvert.hpp @@ -107,6 +107,10 @@ void generic_interconvert(To& to, const From& from, const mpl::int_ void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) { +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4127) +#endif // // The code here only works when the radix of "From" is 2, we could try shifting by other // radixes but it would complicate things.... use a string convertion when the radix is other @@ -178,6 +182,9 @@ void generic_interconvert(To& to, const From& from, const mpl::int_(e)); +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif } template diff --git a/include/boost/multiprecision/integer_ops.hpp b/include/boost/multiprecision/integer_ops.hpp index fa4f6976..ccdbbe8b 100644 --- a/include/boost/multiprecision/integer_ops.hpp +++ b/include/boost/multiprecision/integer_ops.hpp @@ -160,7 +160,14 @@ namespace detail{ template void eval_powm(Backend& result, const Backend& a, const Backend& p, const Backend& c) { + using default_ops::eval_bit_test; + using default_ops::eval_get_sign; + using default_ops::eval_multiply; + using default_ops::eval_modulus; + using default_ops::eval_right_shift; + typedef typename canonical::type ui_type; + Backend x, y(a), b(p); x = ui_type(1u); while(eval_get_sign(b) > 0) @@ -183,6 +190,12 @@ void eval_powm(Backend& result, const Backend& a, const Backend& p, Integer c) typedef typename canonical::type ui_type; typedef typename canonical::type i_type; + using default_ops::eval_bit_test; + using default_ops::eval_get_sign; + using default_ops::eval_multiply; + using default_ops::eval_modulus; + using default_ops::eval_right_shift; + if(eval_get_sign(p) < 0) { BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); @@ -210,6 +223,12 @@ void eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) typedef typename canonical::type ui_type; typedef typename canonical::type i_type; + using default_ops::eval_bit_test; + using default_ops::eval_get_sign; + using default_ops::eval_multiply; + using default_ops::eval_modulus; + using default_ops::eval_right_shift; + if(b < 0) { BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); @@ -238,6 +257,12 @@ void eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) typedef typename canonical::type i1_type; typedef typename canonical::type i2_type; + using default_ops::eval_bit_test; + using default_ops::eval_get_sign; + using default_ops::eval_multiply; + using default_ops::eval_modulus; + using default_ops::eval_right_shift; + if(b < 0) { BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index 03f21b53..557114cd 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -10,25 +10,6 @@ namespace boost{ namespace multiprecision{ -// -// Calculate (a^b)%c: -// -template -void expmod(const mp_number& a, mp_number b, const mp_number& c, mp_number& result) -{ - typedef mp_number number_type; - number_type x(1), y(a); - while(b > 0) - { - if(b & 1) - { - x = (x * y) % c; - } - y = (y * y) % c; - b /= 2; - } - result = x % c; -} template bool check_small_factors(const mp_number& n) @@ -140,6 +121,10 @@ template typename enable_if_c::value == number_kind_integer, bool>::type miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen) { +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4127) +#endif typedef mp_number number_type; if(n <= 227) @@ -155,7 +140,7 @@ typename enable_if_c::value == number_kind_integer, boo // Begin with a single Fermat test - it excludes a lot of candidates: // number_type q(228), x, y; // We know n is greater than this, as we've excluded small factors - expmod(q, nm1, n, x); + x = powm(q, nm1, n); if(x != 1u) return false; @@ -174,7 +159,7 @@ typename enable_if_c::value == number_kind_integer, boo for(unsigned i = 0; i < trials; ++i) { x = dist(gen); - expmod(x, q, n, y); + y = powm(x, q, n); unsigned j = 0; while(true) { @@ -188,6 +173,9 @@ typename enable_if_c::value == number_kind_integer, boo } } return true; // Yeheh! probably prime. +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif } template diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index c75af312..84a5feae 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -59,12 +59,12 @@ public: mp_number(const mp_number& val) : m_backend(val.m_backend) {} template - mp_number(const mp_number& val, typename enable_if >::type* dummy1 = 0) + mp_number(const mp_number& val, typename enable_if >::type* = 0) { m_backend = val.backend(); } template - mp_number(const mp_number& val, typename disable_if >::type* dummy1 = 0) + mp_number(const mp_number& val, typename disable_if >::type* = 0) { // // Attempt a generic interconvertion: @@ -72,13 +72,13 @@ public: detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); } template - mp_number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + mp_number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* = 0) { using default_ops::assign_components; assign_components(m_backend, canonical_value(v1), canonical_value(v2)); } template - mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* dummy1 = 0) + mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* = 0) { using default_ops::assign_components; assign_components(m_backend, v1.backend(), v2.backend()); @@ -1136,7 +1136,7 @@ private: do_assign_function_3c(f, val1, val2, val3, t3); } template - void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag2& t2, const Tag3& t3) + void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag2& /*t2*/, const Tag3& t3) { mp_number t(val2); do_assign_function_3c(f, val1, t, val3, t3); @@ -1147,7 +1147,7 @@ private: f(m_backend, function_arg_value(val1), function_arg_value(val2), function_arg_value(val3)); } template - void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag3& t3) + void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag3& /*t3*/) { mp_number t(val3); do_assign_function_3c(f, val1, val2, t, detail::terminal()); @@ -1727,7 +1727,7 @@ inline std::istream& operator >> (std::istream& is, rational= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) + while((EOF != (c = static_cast(is.peek()))) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) { if(c == 'x' || c == 'X') have_hex = true; @@ -1739,7 +1739,7 @@ inline std::istream& operator >> (std::istream& is, rational= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) + while((EOF != (c = static_cast(is.peek()))) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) { if(c == 'x' || c == 'X') have_hex = true; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 006df7b0..31c52fc0 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -23,6 +23,9 @@ project : requirements $(mpfr_path)/build.vc10/lib/Win32/Debug $(tommath_path) msvc:static + msvc:all + gcc:-Wall + gcc:-Wextra ; local enable-specfun = [ MATCH (--enable-specfun) : [ modules.peek : ARGV ] ] ; diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index c230a9cd..00b70f4f 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -412,7 +412,7 @@ void test_integer_ops(const boost::mpl::int_::is_specialized && (!std::numeric_limits::is_bounded || (i * 17 < std::numeric_limits::digits))) + if(std::numeric_limits::is_specialized && (!std::numeric_limits::is_bounded || ((int)i * 17 < std::numeric_limits::digits))) { BOOST_TEST(lsb(Real(1) << (i * 17)) == i * 17); BOOST_TEST(bit_test(Real(1) << (i * 17), i * 17)); @@ -428,6 +428,29 @@ void test_integer_ops(const boost::mpl::int_ diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index aba0d58a..52b4102a 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -284,7 +284,7 @@ void test() BOOST_CHECK_EQUAL(mpz_int(powm(a, ui, c)).str(), test_type(powm(a, ui, c)).str()); } - if(last_error_count != boost::detail::test_errors()) + if(last_error_count != (unsigned)boost::detail::test_errors()) { last_error_count = boost::detail::test_errors(); std::cout << std::hex << std::showbase; diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 17bc33d5..fb51eede 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -208,6 +208,33 @@ T generate_random() return ldexp(val, ui(gen)); } +template +struct max_digits10_proxy +{ + static const unsigned value = std::numeric_limits::digits10 + 5; +}; +#ifdef TEST_CPP_DEC_FLOAT +template +struct max_digits10_proxy, ET> > +{ + static const unsigned value = std::numeric_limits, ET> >::max_digits10; +}; +#endif +#ifdef TEST_MPF_50 +template +struct max_digits10_proxy, ET> > +{ + static const unsigned value = std::numeric_limits, ET> >::max_digits10; +}; +#endif +#ifdef TEST_MPFR_50 +template +struct max_digits10_proxy, ET> > +{ + static const unsigned value = std::numeric_limits, ET> >::max_digits10; +}; +#endif + template void do_round_trip(const T& val, std::ios_base::fmtflags f) { @@ -215,7 +242,7 @@ void do_round_trip(const T& val, std::ios_base::fmtflags f) #ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST ss << std::setprecision(std::numeric_limits::max_digits10); #else - ss << std::setprecision(std::numeric_limits::digits10 + 5); + ss << std::setprecision(max_digits10_proxy::value); #endif ss.flags(f); ss << val; From cd741c1249d0f727bb68fbf1a9f4fe452d410b1a Mon Sep 17 00:00:00 2001 From: "Vicente J. Botet Escriba" Date: Sun, 3 Jun 2012 20:51:41 +0000 Subject: [PATCH 183/256] Multiprecision: added error log [SVN r78803] --- test/error.txt | 93662 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93662 insertions(+) create mode 100644 test/error.txt diff --git a/test/error.txt b/test/error.txt new file mode 100644 index 00000000..7c949f7a --- /dev/null +++ b/test/error.txt @@ -0,0 +1,93662 @@ +warning: mismatched versions of Boost.Build engine and core +warning: Boost.Build engine (bjam) is 2011.04.00 +warning: Boost.Build core (at /Users/viboes/boost/trunk/tools/build/v2) is 2011.12-svn +...patience... +...found 905 targets... +...updating 4 targets... +testing.capture-output bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.run +====== BEGIN OUTPUT ====== +Testing value 123456789 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 1e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 1.e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +1e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +123456789.0 +Testing value 123456789 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +123456789.00 +Testing value 123456789 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +123456789.000 +Testing value 123456789 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +123456789.0000 +Testing value 123456789 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +123456789.00000 +Testing value 123456789 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +123456789.000000 +Testing value 123456789 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +123456789.0000000 +Testing value 123456789 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +123456789.00000000 +Testing value 123456789 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 123456789. +Testing value 123456789 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +123456789.000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +123456789.0000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +123456789.00000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +123456789.000000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +123456789.0000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -1.e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -123456789. +Testing value -123456789 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +15432098.6250 +Testing value 15432098.625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +15432098.62500 +Testing value 15432098.625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +15432098.625000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +15432098.6250000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099. +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +15432099 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +15432098.62500000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +15432098.625000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099. +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012. +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1929012 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012. +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +241126.5410 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127. +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +241127 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +241126.54101562 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +241126.541015625 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127. +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141. +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +30141 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141. +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +3767.60 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3768 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3768. +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3768 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3768. +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +471.0 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 471. +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +470.950 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -471. +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 6e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 6.e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +6e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 59 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 59. +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +59 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -6.e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -59. +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7. +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7. +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.920 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7.e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7.e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 9.e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -9.e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value 123456789 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 1e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 1.e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +1e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +123456789.0 +Testing value 123456789 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +123456789.00 +Testing value 123456789 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +123456789.000 +Testing value 123456789 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +123456789.0000 +Testing value 123456789 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +123456789.00000 +Testing value 123456789 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +123456789.000000 +Testing value 123456789 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +123456789.0000000 +Testing value 123456789 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +123456789.00000000 +Testing value 123456789 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 123456789. +Testing value 123456789 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +123456789.000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +123456789.0000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +123456789.00000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +123456789.000000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +123456789.0000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -1.e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -123456789. +Testing value -123456789 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +15432098.6250 +Testing value 15432098.625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +15432098.62500 +Testing value 15432098.625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +15432098.625000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +15432098.6250000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099. +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +15432099 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +15432098.62500000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +15432098.625000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099. +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012. +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1929012 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012. +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +241126.5410 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127. +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +241127 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +241126.54101562 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +241126.541015625 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127. +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141. +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +30141 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141. +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +3767.60 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3768 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3768. +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3768 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3768. +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +471.0 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 471. +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +470.950 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -471. +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 6e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 6.e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +6e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 59 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 59. +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +59 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -6.e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -59. +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7. +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7. +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.920 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7.e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7.e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 9.e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -9.e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +9360 errors detected. + +EXIT STATUS: 1 +====== END OUTPUT ====== + + + "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float" > "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.output" 2>&1 + status=$? + echo >> "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.output" + echo EXIT STATUS: $status >> "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.output" + if test $status -eq 0 ; then + cp "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.output" "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.run" + fi + verbose=0 + if test $status -ne 0 ; then + verbose=1 + fi + if test $verbose -eq 1 ; then + echo ====== BEGIN OUTPUT ====== + cat "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.output" + echo ====== END OUTPUT ====== + fi + exit $status + +...failed testing.capture-output bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9/release/test_float_io_cpp_dec_float.run... +testing.capture-output bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.run +====== BEGIN OUTPUT ====== +Testing value 123456789 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 1e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 1.e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +1e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +123456789.0 +Testing value 123456789 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +123456789.00 +Testing value 123456789 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +123456789.000 +Testing value 123456789 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +123456789.0000 +Testing value 123456789 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +123456789.00000 +Testing value 123456789 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +123456789.000000 +Testing value 123456789 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +123456789.0000000 +Testing value 123456789 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +123456789.00000000 +Testing value 123456789 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 123456789. +Testing value 123456789 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +123456789.000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +123456789.0000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +123456789.00000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +123456789.000000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +123456789.0000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -1.e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -123456789. +Testing value -123456789 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +15432098.6250 +Testing value 15432098.625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +15432098.62500 +Testing value 15432098.625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +15432098.625000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +15432098.6250000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099. +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +15432099 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +15432098.62500000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +15432098.625000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099. +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012. +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1929012 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012. +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +241126.5410 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127. +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +241127 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +241126.54101562 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +241126.541015625 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127. +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141. +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +30141 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141. +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +3767.60 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3768 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3768. +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3768 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3768. +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +471.0 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 471. +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +470.950 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -471. +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 6e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 6.e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +6e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 59 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 59. +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +59 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -6.e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -59. +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7. +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7. +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.920 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7.e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7.e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 9.e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -9.e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value 123456789 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 1e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 1.e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +1e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +123456789.0 +Testing value 123456789 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.2e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.2e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +123456789.00 +Testing value 123456789 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.23e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.23e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +123456789.000 +Testing value 123456789 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.235e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.235e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +123456789.0000 +Testing value 123456789 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.2346e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.2346e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 123456789.00000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +123456789.00000 +Testing value 123456789 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.23457e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.23457e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 123456789.000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +123456789.000000 +Testing value 123456789 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.234568e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.234568e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 123456789.0000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +123456789.0000000 +Testing value 123456789 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1.2345679e+08 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1.2345679e+08 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.23456789e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.23456789e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 123456789.00000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +123456789.00000000 +Testing value 123456789 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 123456789. +Testing value 123456789 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.234567890e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.234567890e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 123456789.000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +123456789.000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 123456789.0 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.2345678900e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.2345678900e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 123456789.0000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +123456789.0000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 123456789.00 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.23456789000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.23456789000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 123456789.00000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +123456789.00000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 123456789.000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.234567890000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.234567890000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 123456789.000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +123456789.000000000000 +Testing value 123456789 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 123456789 +Testing value 123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 123456789.0000 +Testing value 123456789 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +123456789 +Testing value 123456789 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.2345678900000e+08 +Testing value 123456789 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 123456789.0000000000000 +Testing value 123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +123456789.0000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -1.e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -1e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.2e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.23e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.235e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.2346e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -123456789.00000 +Testing value -123456789 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.23457e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -123456789.000000 +Testing value -123456789 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.234568e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -123456789.0000000 +Testing value -123456789 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1.2345679e+08 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.23456789e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -123456789.00000000 +Testing value -123456789 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -123456789. +Testing value -123456789 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.234567890e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -123456789.000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -123456789.0 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.2345678900e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -123456789.0000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -123456789.00 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.23456789000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -123456789.00000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -123456789.000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.234567890000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -123456789.000000000000 +Testing value -123456789 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -123456789.0000 +Testing value -123456789 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -123456789 +Testing value -123456789 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.2345678900000e+08 +Testing value -123456789 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value -123456789 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -123456789.0000000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.5e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.5e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.54e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.54e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.543e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.543e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +15432098.6250 +Testing value 15432098.625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.5432e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.5432e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +15432098.62500 +Testing value 15432098.625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.543210e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 15432098.625000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +15432098.625000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.54321e+07 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1.543210e+07 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1.54321e+07 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.5432099e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 15432098.6250000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +15432098.6250000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 15432099. +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +15432099 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.54320986e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 15432098.62500000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +15432098.62500000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 15432098.6 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +15432098.6 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.543209862e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 15432098.625000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +15432098.625000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 15432098.62 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +15432098.62 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.5432098625e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +15432098.6250000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.54320986250e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +15432098.62500000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 15432098.6250 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.543209862500e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +15432098.625000000000 +Testing value 15432098.625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 15432098.625 +Testing value 15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 15432098.62500 +Testing value 15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +15432098.625 +Testing value 15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.5432098625000e+07 +Testing value 15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 15432098.6250000000000 +Testing value 15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.5e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.54e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.543e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.5432e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -15432098.625000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.543210e+07 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1.54321e+07 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.5432099e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -15432098.6250000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099. +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -15432099 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.54320986e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -15432098.62500000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -15432098.6 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.543209862e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -15432098.625000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -15432098.62 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.5432098625e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -15432098.6250000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.54320986250e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -15432098.62500000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -15432098.6250 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.543209862500e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -15432098.625000000000 +Testing value -15432098.625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -15432098.62500 +Testing value -15432098.625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -15432098.625 +Testing value -15432098.625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.5432098625000e+07 +Testing value -15432098.625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value -15432098.625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -15432098.6250000000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 1.9e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +1.9e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 1.93e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +1.93e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.929e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 1.9290e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +1.929e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +1.92901e+06 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.929012e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 1929012. +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +1929012 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.9290123e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +1929012.3281250 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 1929012.3 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +1929012.3 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.92901233e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +1929012.32812500 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 1929012.33 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +1929012.33 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.929012328e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +1929012.328125000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 1929012.328 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +1929012.328 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.9290123281e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +1929012.3281250000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 1929012.3281 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +1929012.3281 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.92901232812e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +1929012.32812500000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 1929012.32812 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +1929012.32812 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.929012328125e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +1929012.328125000000 +Testing value 1929012.328125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 1929012.328125 +Testing value 1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +1929012.328125 +Testing value 1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.9290123281250e+06 +Testing value 1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 1929012.3281250000000 +Testing value 1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -1.9e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -1.93e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.9290e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -1.929e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -1.92901e+06 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.929012e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012. +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -1929012 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.9290123e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -1929012.3281250 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -1929012.3 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.92901233e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -1929012.32812500 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -1929012.33 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.929012328e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -1929012.328125000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -1929012.328 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.9290123281e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -1929012.3281250000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -1929012.3281 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.92901232812e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -1929012.32812500000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -1929012.32812 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.929012328125e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -1929012.328125000000 +Testing value -1929012.328125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -1929012.328125 +Testing value -1929012.328125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.9290123281250e+06 +Testing value -1929012.328125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value -1929012.328125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -1929012.3281250000000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 2e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 2.e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +2e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.4e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.4e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.41e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.41e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.411e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.411e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +241126.5410 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.4113e+05 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.41127e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 241127. +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +241127 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.411265e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 241126.5 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +241126.5 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.4112654e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 241126.54 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +241126.54 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.41126541e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 241126.54101562 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +241126.54101562 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.411265410e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 241126.541015625 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +241126.541015625 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 241126.541 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 241126.5410 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +241126.541 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.4112654102e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +241126.5410156250 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 241126.54102 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +241126.54102 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.41126541016e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +241126.54101562500 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 241126.541016 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +241126.541016 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.411265410156e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +241126.541015625000 +Testing value 241126.541015625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 241126.5410156 +Testing value 241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +241126.5410156 +Testing value 241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.4112654101562e+05 +Testing value 241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 241126.5410156250000 +Testing value 241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -2.e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -2e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.4e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.41e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.411e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.4113e+05 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.41127e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127. +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -241127 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.411265e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -241126.5 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.4112654e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -241126.54 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.41126541e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -241126.54101562 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.411265410e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -241126.541015625 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -241126.5410 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -241126.541 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.4112654102e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -241126.5410156250 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -241126.54102 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.41126541016e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -241126.54101562500 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -241126.541016 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.411265410156e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -241126.541015625000 +Testing value -241126.541015625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -241126.5410156 +Testing value -241126.541015625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.4112654101562e+05 +Testing value -241126.541015625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value -241126.541015625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -241126.5410156250000 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.0e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.01e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.014e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.0141e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 30141. +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +30141 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.01408e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 30140.8 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +30140.8 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.014082e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 30140.82 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +30140.82 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.0140818e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 30140.818 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +30140.818 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.01408176e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 30140.8176 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +30140.8176 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.014081763e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +30140.817626953 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 30140.81763 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +30140.81763 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.0140817627e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +30140.8176269531 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.01408176270e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +30140.81762695312 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 30140.817627 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 30140.8176270 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +30140.817627 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.014081762695e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +30140.817626953125 +Testing value 30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +30140.81762695 +Testing value 30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.0140817626953e+04 +Testing value 30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 30140.8176269531250 +Testing value 30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.0e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.01e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.014e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.0141e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141. +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -30141 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.01408e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -30140.8 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.014082e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -30140.82 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.0140818e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -30140.818 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.01408176e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -30140.8176 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.014081763e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -30140.817626953 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -30140.81763 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.0140817627e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -30140.8176269531 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.01408176270e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -30140.81762695312 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -30140.8176270 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -30140.817627 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.014081762695e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -30140.817626953125 +Testing value -30140.817626953125 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -30140.81762695 +Testing value -30140.817626953125 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.0140817626953e+04 +Testing value -30140.817626953125 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value -30140.817626953125 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -30140.8176269531250 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.8e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +3767.60 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.77e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.768e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3768 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3768. +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3768 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.7676e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.76760e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.6 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3767.60 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3767.6 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.767602e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3767.602 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3767.602 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.7676022e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.76760220e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3767.60220 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3767.6022 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.767602203e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3767.602203 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.7676022034e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +3767.6022033691 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3767.6022034 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.76760220337e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +3767.60220336914 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3767.60220337 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.767602203369e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +3767.602203369141 +Testing value 3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3767.602203369 +Testing value 3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.7676022033691e+03 +Testing value 3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 3767.6022033691406 +Testing value 3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.8e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.77e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.768e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3768. +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3768 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.7676e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.76760e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.60 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3767.6 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.767602e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3767.602 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.7676022e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.76760220e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3767.60220 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3767.6022 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.767602203e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3767.602203 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.7676022034e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -3767.6022033691 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3767.6022034 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.76760220337e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -3767.60220336914 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3767.60220337 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.767602203369e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -3767.602203369141 +Testing value -3767.602203369140625 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3767.602203369 +Testing value -3767.602203369140625 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.7676022033691e+03 +Testing value -3767.602203369140625 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value -3767.602203369140625 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -3767.6022033691406 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +471.0 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.7e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.71e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 471. +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.710e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +470.950 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 471 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 471.0 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +471 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.7095e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.70950e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.95 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 470.950 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +470.95 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.709503e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 470.9503 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +470.9503 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.7095028e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 470.95028 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +470.95028 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.70950275e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 470.950275 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +470.950275 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.709502754e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +470.9502754 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.7095027542e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +470.95027542 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.70950275421e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +470.95027542114 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +470.950275421 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.709502754211e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +470.950275421143 +Testing value 470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +470.9502754211 +Testing value 470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.7095027542114e+02 +Testing value 470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 470.9502754211426 +Testing value 470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.7e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.71e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -471. +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.710e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -471.0 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -471 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.7095e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.70950e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.950 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -470.95 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.709503e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -470.9503 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.7095028e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -470.95028 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.70950275e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -470.950275 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.709502754e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -470.9502754 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.7095027542e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -470.95027542 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.70950275421e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -470.95027542114 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -470.950275421 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.709502754211e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -470.950275421143 +Testing value -470.95027542114257812 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -470.9502754211 +Testing value -470.95027542114257812 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.7095027542114e+02 +Testing value -470.95027542114257812 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value -470.95027542114257812 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -470.9502754211426 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 6e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 6.e+01 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +6e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.9e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 59 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 59. +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +59 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.89e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 58.9 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +58.9 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.887e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 58.87 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +58.87 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.8869e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 58.869 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +58.869 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.88688e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 58.8688 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +58.8688 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.886878e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 58.86878 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +58.86878 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.8868784e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 58.868784 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +58.868784 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.88687844e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +58.8687844 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.886878443e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +58.86878443 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.8868784428e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +58.868784428 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.88687844276e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +58.8687844276 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.886878442764e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +58.868784427643 +Testing value 58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +58.86878442764 +Testing value 58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.8868784427643e+01 +Testing value 58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 58.8687844276428 +Testing value 58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -6.e+01 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -6e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.9e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -59. +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -59 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.89e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -58.9 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.887e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -58.87 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.8869e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -58.869 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.88688e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -58.8688 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.886878e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -58.86878 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.8868784e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -58.868784 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.88687844e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -58.8687844 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.886878443e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -58.86878443 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.8868784428e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -58.868784428 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.88687844276e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -58.8687844276 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.886878442764e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -58.868784427643 +Testing value -58.868784427642822266 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -58.86878442764 +Testing value -58.868784427642822266 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.8868784427643e+01 +Testing value -58.868784427642822266 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value -58.868784427642822266 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -58.8687844276428 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7. +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 7.4e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 7.4 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +7.4 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 7.36e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 7.36 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +7.36 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 7.359e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 7.359 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +7.359 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 7.3586e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 7.35860e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 7.35860 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +7.3586 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 7.358598e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +7.358598 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 7.3585981e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +7.3585981 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 7.35859805e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +7.35859805 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 7.358598053e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +7.358598053 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 7.3585980535e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +7.3585980535 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 7.35859805346e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +7.35859805346 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 7.358598053455e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +7.358598053455 +Testing value 7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 7.3585980534554e+00 +Testing value 7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 7.3585980534554 +Testing value 7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7. +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -7.4e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -7.4 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -7.36e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -7.36 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -7.359e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -7.359 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -7.3586e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -7.35860e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.35860 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -7.3586 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -7.358598e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -7.358598 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -7.3585981e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -7.3585981 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -7.35859805e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -7.35859805 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -7.358598053e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -7.358598053 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -7.3585980535e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -7.3585980535 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -7.35859805346e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -7.35859805346 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -7.358598053455e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -7.358598053455 +Testing value -7.3585980534553527832 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -7.3585980534554e+00 +Testing value -7.3585980534553527832 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value -7.3585980534553527832 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -7.3585980534554 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 9.2e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.9 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.9 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 9.20e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.92 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.92 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 9.198e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.920 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.920 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 9.1982e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.9198 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 9.19825e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.91982 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 9.198248e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.919825 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 9.1982476e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.9198248 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 9.19824757e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.91982476 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 9.198247567e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.919824757 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 9.1982475668e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.9198247567 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 9.19824756682e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.91982475668 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 9.198247566819e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.919824756682 +Testing value 0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 9.1982475668192e-01 +Testing value 0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.9198247566819 +Testing value 0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -9.2e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.9 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -9.20e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.92 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -9.198e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.920 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -9.1982e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.9198 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -9.19825e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.91982 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -9.198248e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.919825 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -9.1982476e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.9198248 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -9.19824757e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.91982476 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -9.198247567e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.919824757 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -9.1982475668e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.9198247567 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -9.19824756682e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.91982475668 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -9.198247566819e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.919824756682 +Testing value -0.9198247566819190979 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -9.1982475668192e-01 +Testing value -0.9198247566819190979 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value -0.9198247566819190979 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.9198247566819 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.1e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.1 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.1 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.15e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.11 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.11 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.150e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.115 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.115 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.1498e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.1150 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.14978e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.11498 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.149781e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.114978 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.1497809e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.1149781 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.14978095e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.11497809 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.149780946e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.114978095 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.1497809459e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.1149780946 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.14978094585e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.11497809459 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.149780945852e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.114978094585 +Testing value 0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.1497809458524e-01 +Testing value 0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.1149780945852 +Testing value 0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.1e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.1 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.15e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.11 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.150e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.115 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.1498e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.1150 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.14978e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.11498 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.149781e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.114978 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.1497809e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.1149781 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.14978095e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.11497809 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.149780946e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.114978095 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.1497809459e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.1149780946 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.14978094585e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.11497809459 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.149780945852e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.114978094585 +Testing value -0.11497809458523988724 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.1497809458524e-01 +Testing value -0.11497809458523988724 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value -0.11497809458523988724 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.1149780945852 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.4e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.44e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.01 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.01 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.437e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.014 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.014 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.4372e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0144 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.43723e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.01437 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.437226e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.014372 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.4372262e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0143723 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.43722618e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.01437226 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.437226182e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.014372262 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.4372261823e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0143722618 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.43722618232e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.01437226182 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.437226182315e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.014372261823 +Testing value 0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.01437226182315 +Testing value 0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.4372261823155e-02 +Testing value 0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0143722618232 +Testing value 0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.4e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.44e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.01 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.437e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.014 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.4372e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0144 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.43723e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.01437 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.437226e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.014372 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.4372262e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0143723 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.43722618e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.01437226 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.437226182e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.014372262 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.4372261823e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0143722618 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.43722618232e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.01437226182 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.437226182315e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.014372261823 +Testing value -0.014372261823154985905 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.01437226182315 +Testing value -0.014372261823154985905 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.4372261823155e-02 +Testing value -0.014372261823154985905 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value -0.014372261823154985905 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0143722618232 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 1.8e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 1.80e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 1.797e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.002 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 1.7965e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0018 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 1.79653e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00180 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 1.796533e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.001797 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 1.7965327e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0017965 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 1.79653273e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00179653 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 1.796532728e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.001796533 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 1.7965327279e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0017965327 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 1.79653272789e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00179653273 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.00179653272789 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 1.796532727894e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.001796532728 +Testing value 0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.001796532727894 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 1.7965327278944e-03 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0017965327279 +Testing value 0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -1.8e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -1.80e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -1.797e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.002 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -1.7965e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0018 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -1.79653e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00180 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -1.796533e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.001797 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -1.7965327e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0017965 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -1.79653273e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00179653 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -1.796532728e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.001796533 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -1.7965327279e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0017965327 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -1.79653272789e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00179653273 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.00179653272789 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -1.796532727894e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.001796532728 +Testing value -0.0017965327278943732381 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.001796532727894 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -1.7965327278944e-03 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value -0.0017965327278943732381 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0017965327279 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.2e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.25e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.246e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.2457e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0002 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.24567e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00022 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.245666e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000225 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.2456659e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0002246 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.24566591e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00022457 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.245665910e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000224567 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.2456659099e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0002245666 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +0.00022456659099 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.24566590987e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00022456659 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +0.000224566590987 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.245665909868e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000224566591 +Testing value 0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +0.0002245665909868 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.2456659098680e-04 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0002245665910 +Testing value 0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.2e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.25e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.246e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.2457e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0002 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.24567e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00022 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.245666e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000225 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.2456659e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0002246 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.24566591e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00022457 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.245665910e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000224567 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.2456659099e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0002245666 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -0.00022456659099 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.24566590987e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00022456659 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -0.000224566590987 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.245665909868e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000224566591 +Testing value -0.00022456659098679665476 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -0.0002245665909868 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.2456659098680e-04 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value -0.00022456659098679665476 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0002245665910 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 3.e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +3e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +2.8e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +2.81e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +2.807e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +2.8071e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00003 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +2.80708e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000028 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +2.807082e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000281 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +2.8070824e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00002807 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +2.80708239e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000028071 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +2.807082387e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000280708 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +2.8070823873e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00002807082 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +2.80708238733e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000028070824 +Testing value 2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +2.807082387335e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 2.8070823873350e-05 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000280708239 +Testing value 2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -3.e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -3e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -2.8e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -2.81e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -2.807e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -2.8071e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00003 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -2.80708e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000028 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -2.807082e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000281 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -2.8070824e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00002807 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -2.80708239e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000028071 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -2.807082387e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000280708 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -2.8070823873e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00002807082 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -2.80708238733e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000028070824 +Testing value -2.8070823873349581845e-05 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -2.807082387335e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -2.8070823873350e-05 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value -2.8070823873349581845e-05 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000280708239 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +3.5e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +3.51e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +3.509e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +3.5089e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +3.50885e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000004 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000035 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 3.5088530e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +3.508853e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000351 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +3.50885298e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000003509 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +3.508852984e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000035089 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +3.5088529842e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000350885 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +3.50885298417e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000003508853 +Testing value 3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +3.508852984169e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 3.5088529841687e-06 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000035088530 +Testing value 3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -3.5e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -3.51e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -3.509e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -3.5089e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -3.50885e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000004 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000035 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.5088530e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -3.508853e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000351 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -3.50885298e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000003509 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -3.508852984e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000035089 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -3.5088529842e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000350885 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -3.50885298417e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000003508853 +Testing value -3.5088529841686977306e-06 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -3.508852984169e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -3.5088529841687e-06 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value -3.5088529841686977306e-06 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000035088530 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 4.e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +4.4e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +4.39e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +4.386e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +4.3861e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +4.38607e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +4.386066e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000004 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +4.3860662e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000044 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000439 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 4.386066230e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +4.38606623e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000004386 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +4.3860662302e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000043861 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +4.38606623021e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000438607 +Testing value 4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +4.386066230211e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 4.3860662302109e-07 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000004386066 +Testing value 4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -4.e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -4.4e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -4.39e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -4.386e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -4.3861e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -4.38607e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -4.386066e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000004 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -4.3860662e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000044 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000439 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -4.386066230e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -4.38606623e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000004386 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -4.3860662302e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000043861 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -4.38606623021e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000438607 +Testing value -4.3860662302108721633e-07 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -4.386066230211e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -4.3860662302109e-07 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value -4.3860662302108721633e-07 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000004386066 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 5.e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +5.5e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +5.48e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +5.483e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +5.4826e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +5.48258e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +5.482583e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000001 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +5.4825828e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000005 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +5.48258279e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000055 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +5.482582788e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000548 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +5.4825827878e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000005483 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +5.48258278776e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000054826 +Testing value 5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +5.482582787764e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 5.4825827877636e-08 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000548258 +Testing value 5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -5.e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -5.5e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -5.48e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -5.483e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -5.4826e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -5.48258e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -5.482583e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000001 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -5.4825828e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000005 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -5.48258279e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000055 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -5.482582788e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000548 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -5.4825827878e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000005483 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -5.48258278776e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000054826 +Testing value -5.4825827877635902041e-08 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -5.482582787764e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -5.4825827877636e-08 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value -5.4825827877635902041e-08 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000548258 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 7.e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +7e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +6.9e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +6.85e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +6.853e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +6.8532e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +6.85323e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +6.853228e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +6.8532285e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000001 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +6.85322848e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000007 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +6.853228485e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000069 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000685 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 6.85322848470e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +6.8532284847e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000006853 +Testing value 6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +6.853228484704e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 6.8532284847045e-09 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000068532 +Testing value 6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -7.e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -7e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -6.9e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -6.85e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -6.853e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -6.8532e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -6.85323e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -6.853228e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -6.8532285e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000001 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -6.85322848e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000007 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -6.853228485e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000069 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000685 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -6.85322848470e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -6.8532284847e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000006853 +Testing value -6.8532284847044877552e-09 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -6.853228484704e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -6.8532284847045e-09 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value -6.8532284847044877552e-09 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000068532 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: 1e+09 +Expected: 9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: 1.e+09 +Expected: 9.e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: +1e+09 +Expected: +9e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: 987654312.0 +Expected: 0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: +987654312.0 +Expected: +0.0 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: 9.9e+08 +Expected: 8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: +9.9e+08 +Expected: +8.6e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: 987654312.00 +Expected: 0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: +987654312.00 +Expected: +0.00 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: 9.88e+08 +Expected: 8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: +9.88e+08 +Expected: +8.57e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: 987654312.000 +Expected: 0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: +987654312.000 +Expected: +0.000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: 9.877e+08 +Expected: 8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: +9.877e+08 +Expected: +8.567e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: 987654312.0000 +Expected: 0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: +987654312.0000 +Expected: +0.0000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: 9.8765e+08 +Expected: 8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: +9.8765e+08 +Expected: +8.5665e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: 987654312.00000 +Expected: 0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: +987654312.00000 +Expected: +0.00000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: 9.87654e+08 +Expected: 8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: +9.87654e+08 +Expected: +8.56654e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: 987654312.000000 +Expected: 0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: +987654312.000000 +Expected: +0.000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: 9.876543e+08 +Expected: 8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: +9.876543e+08 +Expected: +8.566536e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: 987654312.0000000 +Expected: 0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: +987654312.0000000 +Expected: +0.0000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: 9.8765431e+08 +Expected: 8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: +9.8765431e+08 +Expected: +8.5665356e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: +9.87654312e+08 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: 9.87654312e+08 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: 987654312.00000000 +Expected: 0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: +987654312.00000000 +Expected: +0.00000000 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: 987654312 +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: 987654312. +Expected: 8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: +987654312 +Expected: +8.56653561e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: +9.876543120e+08 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: 9.876543120e+08 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: 987654312.000000000 +Expected: 0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: +987654312.000000000 +Expected: +0.000000001 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: 987654312 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: 987654312.0 +Expected: 8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: +987654312 +Expected: +8.566535606e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: +9.8765431200e+08 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: 9.8765431200e+08 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: 987654312.0000000000 +Expected: 0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: +987654312.0000000000 +Expected: +0.0000000009 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: 987654312 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: 987654312.00 +Expected: 8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: +987654312 +Expected: +8.5665356059e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: +9.87654312000e+08 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: 9.87654312000e+08 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: 987654312.00000000000 +Expected: 0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: +987654312.00000000000 +Expected: +0.00000000086 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: 987654312 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: 987654312.000 +Expected: 8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: +987654312 +Expected: +8.56653560588e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: +9.876543120000e+08 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: 9.876543120000e+08 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: 987654312.000000000000 +Expected: 0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: +987654312.000000000000 +Expected: +0.000000000857 +Testing value 8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: 987654312 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: 987654312.0000 +Expected: 8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: +987654312 +Expected: +8.566535605881e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: +9.8765431200000e+08 +Expected: +8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: 9.8765431200000e+08 +Expected: 8.5665356058806e-10 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: 987654312.0000000000000 +Expected: 0.0000000008567 +Testing value 8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: +987654312.0000000000000 +Expected: +0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 1 +Got: -1.e+09 +Expected: -9.e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 1 +Got: -1e+09 +Expected: -9e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 1 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 1 +Got: -987654312.0 +Expected: -0.0 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 2 +Got: -9.9e+08 +Expected: -8.6e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 2 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 2 +Got: -987654312.00 +Expected: -0.00 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 3 +Got: -9.88e+08 +Expected: -8.57e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 3 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 3 +Got: -987654312.000 +Expected: -0.000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 4 +Got: -9.877e+08 +Expected: -8.567e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 4 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 4 +Got: -987654312.0000 +Expected: -0.0000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 5 +Got: -9.8765e+08 +Expected: -8.5665e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 5 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 5 +Got: -987654312.00000 +Expected: -0.00000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 6 +Got: -9.87654e+08 +Expected: -8.56654e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 6 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 6 +Got: -987654312.000000 +Expected: -0.000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 7 +Got: -9.876543e+08 +Expected: -8.566536e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 7 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 7 +Got: -987654312.0000000 +Expected: -0.0000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 8 +Got: -9.8765431e+08 +Expected: -8.5665356e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 8 +Got: -9.87654312e+08 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 8 +Got: -987654312.00000000 +Expected: -0.00000000 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 9 +Got: -987654312. +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 9 +Got: -987654312 +Expected: -8.56653561e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 9 +Got: -9.876543120e+08 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 9 +Got: -987654312.000000000 +Expected: -0.000000001 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 10 +Got: -987654312.0 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 10 +Got: -987654312 +Expected: -8.566535606e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 10 +Got: -9.8765431200e+08 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 10 +Got: -987654312.0000000000 +Expected: -0.0000000009 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 11 +Got: -987654312.00 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 11 +Got: -987654312 +Expected: -8.5665356059e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 11 +Got: -9.87654312000e+08 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 11 +Got: -987654312.00000000000 +Expected: -0.00000000086 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 12 +Got: -987654312.000 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 12 +Got: -987654312 +Expected: -8.56653560588e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 12 +Got: -9.876543120000e+08 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 12 +Got: -987654312.000000000000 +Expected: -0.000000000857 +Testing value -8.5665356058806096939e-10 +Formatting flags were: +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpoint +Precision is: 13 +Got: -987654312.0000 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: showpos +Precision is: 13 +Got: -987654312 +Expected: -8.566535605881e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpos +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: scientific showpoint +Precision is: 13 +Got: -9.8765431200000e+08 +Expected: -8.5665356058806e-10 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpoint +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +Testing value -8.5665356058806096939e-10 +Formatting flags were: fixed showpos +Precision is: 13 +Got: -987654312.0000000000000 +Expected: -0.0000000008567 +9360 errors detected. + +EXIT STATUS: 1 +====== END OUTPUT ====== + + + "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float" > "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.output" 2>&1 + status=$? + echo >> "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.output" + echo EXIT STATUS: $status >> "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.output" + if test $status -eq 0 ; then + cp "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.output" "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.run" + fi + verbose=0 + if test $status -ne 0 ; then + verbose=1 + fi + if test $verbose -eq 1 ; then + echo ====== BEGIN OUTPUT ====== + cat "bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.output" + echo ====== END OUTPUT ====== + fi + exit $status + +...failed testing.capture-output bin/test_float_io_cpp_dec_float.test/clang-darwin-2.9x/release/test_float_io_cpp_dec_float.run... +...failed updating 2 targets... +...skipped 2 targets... From 1b33ece7f87bbb07374297e96c4ba569c576ea56 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 4 Jun 2012 15:25:22 +0000 Subject: [PATCH 184/256] Documentation update - address Marc Glisse's comments on the overview section. [SVN r78806] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- doc/html/boost_multiprecision/intro.html | 37 +++++++++++++------ doc/html/index.html | 2 +- doc/multiprecision.qbk | 20 +++++++--- performance/sf_performance.cpp | 11 +++++- 8 files changed, 59 insertions(+), 27 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index ddb95fbb..0ae96943 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 738fe63f..d7ff7db4 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 23a657a4..15f2b2a6 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index fd084d6d..2fe2796a 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T Z

    diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 724a4e3a..af4854f1 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -132,16 +132,19 @@

    If type T is an mp_number, then this expression is evaluated without creating a single temporary value. In contrast, - if we were using the C++ wrapper that ships with GMP - - mpfr_class - - then this expression would result in no less than 11 temporaries (this is - true even though mpfr_class - does use expression templates to reduce the number of temporaries somewhat). - Had we used an even simpler wrapper around GMP - or MPFR like mpclass - things would have been even worse and no less that 24 temporaries are created - for this simple expression (note - we actually measure the number of memory - allocations performed rather than the number of temporaries directly). + if we were using the mpfr_class + C++ wrapper for MPFR - then this expression + would result in no less than 11 temporaries (this is true even though mpfr_class does + use expression templates to reduce the number of temporaries somewhat). Had + we used an even simpler wrapper around MPFR + like mpreal things + would have been even worse and no less that 24 temporaries are created for + this simple expression (note - we actually measure the number of memory allocations + performed rather than the number of temporaries directly, note also that the + mpf_class + wrapper that will be supplied with GMP-5.1 reduces the number of temporaries + to pretty much zero). Finally if we use this library with expression templates + disabled, we still only generate 11 temporaries [1] [2].

    This library also extends expression template support to standard library functions @@ -504,7 +507,19 @@

    -
    +
    +

    +

    [1] + The actual number generated will depend on the compiler, how well it optimises + the code, and whether it supports rvalue references. The number of 11 temporaries + was generated with Visual C++ 10 +

    +

    [2] + Marc Glisse suggested pre-review that this could be reduced still further + by careful use of rvalue-references and move semantics in the operator overloads. + This will be investigated further at a later date. +

    +
    diff --git a/doc/html/index.html b/doc/html/index.html index c699fb31..3984146c 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -117,7 +117,7 @@
    - +

    Last revised: May 09, 2012 at 18:07:25 GMT

    Last revised: June 04, 2012 at 15:17:54 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index f7819bc6..4299d633 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -29,7 +29,7 @@ [template mpfr[] [@http://www.mpfr.org MPFR]] [template gmp[] [@http://gmplib.org GMP]] -[template mpf_class[] [@http://gmplib.org/manual/C_002b_002b-Interface-Floats.html#C_002b_002b-Interface-Floats mpfr_class]] +[template mpf_class[] [@http://gmplib.org/manual/C_002b_002b-Interface-Floats.html#C_002b_002b-Interface-Floats mpf_class]] [template mpfr_class[] [@http://math.berkeley.edu/~wilken/code/gmpfrxx/ mpfr_class]] [template mpreal[] [@http://www.holoborodko.com/pavel/mpfr/ mpreal]] [template mpir[] [@http://mpir.org/ MPIR]] @@ -133,11 +133,17 @@ lets suppose we're evaluating a polynomial via Horners method, something like th y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; If type `T` is an `mp_number`, then this expression is evaluated ['without creating a single temporary value]. In contrast, -if we were using the C++ wrapper that ships with [gmp] - [mpf_class] - then this expression would result in no less than 11 -temporaries (this is true even though [mpf_class] does use expression templates to reduce the number of temporaries somewhat). Had -we used an even simpler wrapper around [gmp] or [mpfr] like `mpclass` things would have been even worse and no less that 24 temporaries +if we were using the [mpfr_class] C++ wrapper for [mpfr] - then this expression would result in no less than 11 +temporaries (this is true even though [mpfr_class] does use expression templates to reduce the number of temporaries somewhat). Had +we used an even simpler wrapper around [mpfr] like [mpreal] things would have been even worse and no less that 24 temporaries are created for this simple expression (note - we actually measure the number of memory allocations performed rather than -the number of temporaries directly). +the number of temporaries directly, note also that the [mpf_class] wrapper that will be supplied with GMP-5.1 reduces the number of +temporaries to pretty much zero). Finally if we use this library with expression templates disabled, we still only generate 11 +temporaries +[footnote The actual number generated will depend on the compiler, how well it optimises the code, and whether it supports +rvalue references. The number of 11 temporaries was generated with Visual C++ 10] +[footnote Marc Glisse suggested pre-review that this could be reduced still further by careful use of rvalue-references +and move semantics in the operator overloads. This will be investigated further at a later date.]. This library also extends expression template support to standard library functions like `abs` or `sin` with `mp_number` arguments. This means that an expression such as: @@ -982,6 +988,8 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba }; // Non member operators: + ``['unmentionable-expression-template-type]`` operator+(const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator-(const ``['see-below]``&); ``['unmentionable-expression-template-type]`` operator+(const ``['see-below]``&, const ``['see-below]``&); ``['unmentionable-expression-template-type]`` operator-(const ``['see-below]``&, const ``['see-below]``&); ``['unmentionable-expression-template-type]`` operator*(const ``['see-below]``&, const ``['see-below]``&); @@ -1218,6 +1226,8 @@ Returns the underlying back-end instance used by `*this`. [h4 Non-member operators] // Non member operators: + ``['unmentionable-expression-template-type]`` operator+(const ``['see-below]``&); + ``['unmentionable-expression-template-type]`` operator-(const ``['see-below]``&); ``['unmentionable-expression-template-type]`` operator+(const ``['see-below]``&, const ``['see-below]``&); ``['unmentionable-expression-template-type]`` operator-(const ``['see-below]``&, const ``['see-below]``&); ``['unmentionable-expression-template-type]`` operator*(const ``['see-below]``&, const ``['see-below]``&); diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index e2183f7f..5bd20871 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -228,6 +228,7 @@ int main() std::cout << "Allocation Counts for Horner Evaluation:\n"; #ifdef TEST_MPFR basic_allocation_test("mpfr_float_50", mpfr_float_50(2)); + basic_allocation_test("mpfr_float_50 - no expression templates", mp_number, false>(2)); #endif #ifdef TEST_MPFR_CLASS basic_allocation_test("mpfr_class", mpfr_class(2)); @@ -239,6 +240,7 @@ int main() std::cout << "Allocation Counts for boost::math::tools::evaluate_polynomial:\n"; #ifdef TEST_MPFR poly_allocation_test("mpfr_float_50", mpfr_float_50(2)); + poly_allocation_test("mpfr_float_50 - no expression templates", mp_number, false>(2)); #endif #ifdef TEST_MPFR_CLASS poly_allocation_test("mpfr_class", mpfr_class(2)); @@ -270,7 +272,7 @@ int main() #ifdef TEST_MPFR_CLASS time_proc("mpfr_class", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); #endif -#ifdef TEST_MP_REAL +#ifdef TEST_MPREAL time_proc("mpfr::mpreal", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); #endif // @@ -288,6 +290,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_bessel); + time_proc("mpf_float_100 (no expression templates", test_bessel, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_bessel); @@ -314,6 +317,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_polynomial); + time_proc("mpf_float_50 (no expression templates", test_polynomial, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_polynomial); @@ -339,6 +343,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_polynomial); + time_proc("mpf_float_100 (no expression templates", test_polynomial, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_polynomial); @@ -364,6 +369,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_nct); + time_proc("mpf_float_50 (no expression templates", test_nct, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_nct); @@ -371,7 +377,7 @@ int main() #ifdef TEST_MPFR_CLASS time_proc("mpfr_class", test_nct); #endif -#ifdef TEST_MP_REAL +#ifdef TEST_MPREAL time_proc("mpfr::mpreal", test_nct); #endif // @@ -389,6 +395,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_nct); + time_proc("mpf_float_100 (no expression templates", test_nct, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_nct); From f543ec2639dbbc506d64018cee50d1d518f3f3cb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 4 Jun 2012 17:50:57 +0000 Subject: [PATCH 185/256] Address doc concerns of Vincente Botet Escriba in pre-review comments. Rebuild docs. [SVN r78807] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- doc/html/boost_multiprecision/intro.html | 20 ++ doc/html/boost_multiprecision/perf.html | 6 +- .../perf/float_performance.html | 18 +- .../perf/integer_performance.html | 40 +-- .../perf/rational_performance.html | 18 +- .../boost_multiprecision/perf/realworld.html | 4 +- doc/html/boost_multiprecision/ref.html | 1 + .../boost_multiprecision/ref/backendconc.html | 17 +- .../boost_multiprecision/ref/cpp_dec_ref.html | 3 + .../boost_multiprecision/ref/cpp_int_ref.html | 3 + .../boost_multiprecision/ref/gmp_int_ref.html | 3 + .../boost_multiprecision/ref/headers.html | 331 ++++++++++++++++++ .../boost_multiprecision/ref/mp_number.html | 24 +- .../boost_multiprecision/ref/mpf_ref.html | 3 + .../boost_multiprecision/ref/mpfr_ref.html | 3 + .../boost_multiprecision/ref/tom_int_ref.html | 3 + .../boost_multiprecision/tut/conversions.html | 15 + .../tut/floats/cpp_dec_float.html | 15 + .../tut/floats/mpfr_float.html | 5 + .../tut/ints/cpp_int.html | 14 + .../tut/ints/gmp_int.html | 5 + doc/html/index.html | 3 +- doc/multiprecision.qbk | 101 +++++- .../multiprecision/detail/mp_number_base.hpp | 14 + include/boost/multiprecision/mpfr.hpp | 2 +- 29 files changed, 628 insertions(+), 59 deletions(-) create mode 100644 doc/html/boost_multiprecision/ref/headers.html diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 0ae96943..3f5d4981 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index d7ff7db4..227b42a5 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 15f2b2a6..f078a0ef 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 2fe2796a..5c34b04c 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T Z

    diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index af4854f1..e13b16a1 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -86,6 +86,26 @@ my_float a, b, c; // These variables have 300 decimal digits precision +

    + Note that mixing arithmetic operations using types of different precision is + strictly forbidden: +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +
    +namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    +
    +mp::mp_int128_t a(3), b(2);
    +mp::mp_int512_t c(50), d;
    +
    +d = c * a;   // Compiler error
    +
    +

    + However, conversions are allowed: +

    +
    d = a; // OK, widening conversion.
    +d = a * b;  // OK, can convert from an expression template too.
    +d = mp::mp_int512_t(a) * c; // OK, all the types in the expression are the same now.
    +
    Expression diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html index 7460f077..7a2b730a 100644 --- a/doc/html/boost_multiprecision/perf.html +++ b/doc/html/boost_multiprecision/perf.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -40,7 +40,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html index 9e9b8217..d34ab87c 100644 --- a/doc/html/boost_multiprecision/perf/float_performance.html +++ b/doc/html/boost_multiprecision/perf/float_performance.html @@ -33,7 +33,7 @@ The tests were run on 32-bit Windows Vista machine.

    -

    Table 1.8. Operator +

    +

    Table 1.10. Operator +

    @@ -134,7 +134,7 @@

    -

    Table 1.9. Operator +(int)

    +

    Table 1.11. Operator +(int)

    @@ -235,7 +235,7 @@

    -

    Table 1.10. Operator -

    +

    Table 1.12. Operator -

    @@ -336,7 +336,7 @@

    -

    Table 1.11. Operator -(int)

    +

    Table 1.13. Operator -(int)

    @@ -437,7 +437,7 @@

    -

    Table 1.12. Operator *

    +

    Table 1.14. Operator *

    @@ -538,7 +538,7 @@

    -

    Table 1.13. Operator *(int)

    +

    Table 1.15. Operator *(int)

    @@ -639,7 +639,7 @@

    -

    Table 1.14. Operator /

    +

    Table 1.16. Operator /

    @@ -740,7 +740,7 @@

    -

    Table 1.15. Operator /(int)

    +

    Table 1.17. Operator /(int)

    @@ -841,7 +841,7 @@

    -

    Table 1.16. Operator str

    +

    Table 1.18. Operator str

    diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html index b7bbe0e7..56ea5b0e 100644 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -37,7 +37,7 @@ much better there.

    -

    Table 1.17. Operator +

    +

    Table 1.19. Operator +

    @@ -186,7 +186,7 @@

    -

    Table 1.18. Operator +(int)

    +

    Table 1.20. Operator +(int)

    @@ -335,7 +335,7 @@

    -

    Table 1.19. Operator -

    +

    Table 1.21. Operator -

    @@ -484,7 +484,7 @@

    -

    Table 1.20. Operator -(int)

    +

    Table 1.22. Operator -(int)

    @@ -633,7 +633,7 @@

    -

    Table 1.21. Operator *

    +

    Table 1.23. Operator *

    @@ -782,7 +782,7 @@

    -

    Table 1.22. Operator *(int)

    +

    Table 1.24. Operator *(int)

    @@ -931,7 +931,7 @@

    -

    Table 1.23. Operator /

    +

    Table 1.25. Operator /

    @@ -1080,7 +1080,7 @@

    -

    Table 1.24. Operator /(int)

    +

    Table 1.26. Operator /(int)

    @@ -1229,7 +1229,7 @@

    -

    Table 1.25. Operator %

    +

    Table 1.27. Operator %

    @@ -1378,7 +1378,7 @@

    -

    Table 1.26. Operator %(int)

    +

    Table 1.28. Operator %(int)

    @@ -1527,7 +1527,7 @@

    -

    Table 1.27. Operator <<

    +

    Table 1.29. Operator <<

    @@ -1676,7 +1676,7 @@

    -

    Table 1.28. Operator >>

    +

    Table 1.30. Operator >>

    @@ -1825,7 +1825,7 @@

    -

    Table 1.29. Operator &

    +

    Table 1.31. Operator &

    @@ -1974,7 +1974,7 @@

    -

    Table 1.30. Operator &(int)

    +

    Table 1.32. Operator &(int)

    @@ -2123,7 +2123,7 @@

    -

    Table 1.31. Operator ^

    +

    Table 1.33. Operator ^

    @@ -2272,7 +2272,7 @@

    -

    Table 1.32. Operator ^(int)

    +

    Table 1.34. Operator ^(int)

    @@ -2421,7 +2421,7 @@

    -

    Table 1.33. Operator |

    +

    Table 1.35. Operator |

    @@ -2570,7 +2570,7 @@

    -

    Table 1.34. Operator |(int)

    +

    Table 1.36. Operator |(int)

    @@ -2719,7 +2719,7 @@

    -

    Table 1.35. Operator gcd

    +

    Table 1.37. Operator gcd

    @@ -2868,7 +2868,7 @@

    -

    Table 1.36. Operator str

    +

    Table 1.38. Operator str

    diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html index 6736d065..98fb8836 100644 --- a/doc/html/boost_multiprecision/perf/rational_performance.html +++ b/doc/html/boost_multiprecision/perf/rational_performance.html @@ -33,7 +33,7 @@ The tests were run on 32-bit Windows Vista machine.

    -

    Table 1.37. Operator +

    +

    Table 1.39. Operator +

    @@ -128,7 +128,7 @@

    -

    Table 1.38. Operator +(int)

    +

    Table 1.40. Operator +(int)

    @@ -223,7 +223,7 @@

    -

    Table 1.39. Operator -

    +

    Table 1.41. Operator -

    @@ -318,7 +318,7 @@

    -

    Table 1.40. Operator -(int)

    +

    Table 1.42. Operator -(int)

    @@ -413,7 +413,7 @@

    -

    Table 1.41. Operator *

    +

    Table 1.43. Operator *

    @@ -508,7 +508,7 @@

    -

    Table 1.42. Operator *(int)

    +

    Table 1.44. Operator *(int)

    @@ -603,7 +603,7 @@

    -

    Table 1.43. Operator /

    +

    Table 1.45. Operator /

    @@ -698,7 +698,7 @@

    -

    Table 1.44. Operator /(int)

    +

    Table 1.46. Operator /(int)

    @@ -793,7 +793,7 @@

    -

    Table 1.45. Operator str

    +

    Table 1.47. Operator str

    diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html index 4dd0d5ef..a084ecc1 100644 --- a/doc/html/boost_multiprecision/perf/realworld.html +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -33,7 +33,7 @@ The tests were run on 32-bit Windows Vista machine.

    -

    Table 1.6. Bessel Function Performance

    +

    Table 1.8. Bessel Function Performance

    @@ -147,7 +147,7 @@

    -

    Table 1.7. Non-Central T Distribution Performance

    +

    Table 1.9. Non-Central T Distribution Performance

    diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index 35ad59f4..4f869c43 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -26,6 +26,7 @@
    mpfr_float_backend
    cpp_dec_float
    Backend Requirements
    +
    Header File Structure
    diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index 3bf6b60f..c2465281 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -7,11 +7,11 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -2266,7 +2266,16 @@

    -
    +

    + The tables above place no throws requirements on any + of the operations. It is up to each type modelling this concept to decide + when or whether throwing an exception is desirable. However, thrown exceptions + should always either be the type, or inherit from the type std::runtime_error. + For example, a floating point type might choose to throw std::overflow_error + whenever the result of an operation would be infinite, and std::underflow_error + whenever it would round to zero. +

    +
    @@ -2289,7 +2298,7 @@
    [Note] Note

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html index 9d34b1e6..48ce9b5b 100644 --- a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html @@ -41,6 +41,9 @@ template argument should not be set too high or the classes size will grow unreasonably large.

    +

    + The type of number_category<cpp_int<Args...> >::type is mpl::int_<number_kind_floating_point>. +

    More information on this type can be found in the tutorial.

    diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html index 40530e86..43160fed 100644 --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -79,6 +79,9 @@

    +

    + The type of number_category<cpp_int<Args...> >::type is mpl::int_<number_kind_integer>. +

    More information on this type can be found in the tutorial.

    diff --git a/doc/html/boost_multiprecision/ref/gmp_int_ref.html b/doc/html/boost_multiprecision/ref/gmp_int_ref.html index 71dfb0ae..6d536179 100644 --- a/doc/html/boost_multiprecision/ref/gmp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/gmp_int_ref.html @@ -31,6 +31,9 @@ type. It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    +

    + The type of number_category<cpp_int<Args...> >::type is mpl::int_<number_kind_integer>. +

    More information on this type can be found in the tutorial.

    diff --git a/doc/html/boost_multiprecision/ref/headers.html b/doc/html/boost_multiprecision/ref/headers.html new file mode 100644 index 00000000..010807eb --- /dev/null +++ b/doc/html/boost_multiprecision/ref/headers.html @@ -0,0 +1,331 @@ + + + +Header File Structure + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +
    +

    Table 1.6. Top level headers

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Header +

    +
    +

    + Contains +

    +
    +

    + cpp_int.hpp +

    +
    +

    + The cpp_int backend + type. +

    +
    +

    + gmp.hpp +

    +
    +

    + Defines all GMP related + backends. +

    +
    +

    + integer_ops.hpp +

    +
    +

    + Integer specific non-member functions. +

    +
    +

    + miller_rabin.hpp +

    +
    +

    + Miller Rabin primality testing code. +

    +
    +

    + mp_number.hpp +

    +
    +

    + Defines the mp_number + backend, is included by all the backend headers. +

    +
    +

    + mpfr.hpp +

    +
    +

    + Defines the mpfr_float_backend backend. +

    +
    +

    + random.hpp +

    +
    +

    + Defines code to interoperate with Boost.Random. +

    +
    +

    + rational_adapter.hpp +

    +
    +

    + Defines the rational_adapter + backend. +

    +
    +

    + cpp_dec_float.hpp +

    +
    +

    + Defines the cpp_dec_float + backend. +

    +
    +

    + tommath.hpp +

    +
    +

    + Defines the tommath_int + backend. +

    +
    +

    + concepts/mp_number_architypes.hpp +

    +
    +

    + Defines a backend concept architypes for testing use. +

    +
    +
    +
    +

    Table 1.7. Implementation Headers]

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Header +

    +
    +

    + Contains +

    +
    +

    + detail/big_lanczos.hpp +

    +
    +

    + Lanczos support for Boost.Math integration. +

    +
    +

    + detail/cpp_int_core.hpp +

    +
    +

    + Platform and peformance tuning for the cpp_int + backend. +

    +
    +

    + detail/default_ops.hpp +

    +
    +

    + Default versions of the optional backend non-member functions. +

    +
    +

    + detail/generic_interconvert.hpp +

    +
    +

    + Generic interconversion routines. +

    +
    +

    + detail/mp_number_base.hpp +

    +
    +

    + All the expression template code, metaprogramming, and operator + overloads for mp_number. +

    +
    +

    + detail/no_et_ops.hpp +

    +
    +

    + The non-expression template operators. +

    +
    +

    + defail/functions/constants.hpp +

    +
    +

    + Defines constants used by the floating point functions. +

    +
    +

    + detail/functions/pow.hpp +

    +
    +

    + Defines default versions of the power and exponential related floating + point functions. +

    +
    +

    + detail/functions/trig.hpp +

    +
    +

    + Defines default versions of the trigonometric related floating + point functions. +

    +
    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mp_number.html b/doc/html/boost_multiprecision/ref/mp_number.html index 75a54542..5f2605b4 100644 --- a/doc/html/boost_multiprecision/ref/mp_number.html +++ b/doc/html/boost_multiprecision/ref/mp_number.html @@ -74,6 +74,8 @@ }; // Non member operators: +unmentionable-expression-template-type operator+(const see-below&); +unmentionable-expression-template-type operator-(const see-below&); unmentionable-expression-template-type operator+(const see-below&, const see-below&); unmentionable-expression-template-type operator-(const see-below&, const see-below&); unmentionable-expression-template-type operator*(const see-below&, const see-below&); @@ -242,6 +244,13 @@
  • Any type that the Backend is constructible or assignable from.
  • +
  • + An rvalue reference to another mp_number. + Move-semantics are used for construction if the backend also supports + rvalue reference construction. In the case of assignment, move semantics + are always supported when the argument is an rvalue reference irrespective + of the backend. +
  • In addition, if the type has multiple components (for example rational or @@ -292,6 +301,10 @@ type with a positive value (negative values result in a std::runtime_error being thrown).

    +

    + Note that all the types involved in the expression must evaluate to the same + type - which is to say we cannot mix an mp_number<B1> with an mp_number<B2> where B1 and B2 are different types. +

    operator convertible-to-bool-type()const;
     

    @@ -383,6 +396,8 @@ operators

    // Non member operators:
    +unmentionable-expression-template-type operator+(const see-below&);
    +unmentionable-expression-template-type operator-(const see-below&);
     unmentionable-expression-template-type operator+(const see-below&, const see-below&);
     unmentionable-expression-template-type operator-(const see-below&, const see-below&);
     unmentionable-expression-template-type operator*(const see-below&, const see-below&);
    @@ -439,6 +454,10 @@
                 is a comparison operator.
               
     
    +

    + Note that all the types involved in the expression must evaluate to the same + type - which is to say we cannot mix an mp_number<B1> with an mp_number<B2> where B1 and B2 are different types. +

    Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative @@ -530,7 +549,10 @@

    Also note that with the exception of abs - that these functions can only be used with floating-point Backend types. + that these functions can only be used with floating-point Backend types (if + any other types such as fixed precision or complex types are added to the + library later, then these functions may be extended to support those number + types).

    diff --git a/doc/html/boost_multiprecision/ref/mpf_ref.html b/doc/html/boost_multiprecision/ref/mpf_ref.html index fd2d8f50..9481059c 100644 --- a/doc/html/boost_multiprecision/ref/mpf_ref.html +++ b/doc/html/boost_multiprecision/ref/mpf_ref.html @@ -47,6 +47,9 @@ and also mix gmp_floats of differing precision.

    +

    + The type of number_category<cpp_int<Args...> >::type is mpl::int_<number_kind_floating_point>. +

    More information on this type can be found in the tutorial.

    diff --git a/doc/html/boost_multiprecision/ref/mpfr_ref.html b/doc/html/boost_multiprecision/ref/mpfr_ref.html index 7588f301..eb96296a 100644 --- a/doc/html/boost_multiprecision/ref/mpfr_ref.html +++ b/doc/html/boost_multiprecision/ref/mpfr_ref.html @@ -47,6 +47,9 @@ that uses GMP or MPFR, and also mix mpfr_float_backends of differing precision.

    +

    + The type of number_category<cpp_int<Args...> >::type is mpl::int_<number_kind_floating_point>. +

    More information on this type can be found in the tutorial.

    diff --git a/doc/html/boost_multiprecision/ref/tom_int_ref.html b/doc/html/boost_multiprecision/ref/tom_int_ref.html index 95abdcbe..9855b80a 100644 --- a/doc/html/boost_multiprecision/ref/tom_int_ref.html +++ b/doc/html/boost_multiprecision/ref/tom_int_ref.html @@ -31,6 +31,9 @@ type. It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    +

    + The type of number_category<cpp_int<Args...> >::type is mpl::int_<number_kind_integer>. +

    More information on this type can be found in the tutorial.

    diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html index b34da26c..dd36b344 100644 --- a/doc/html/boost_multiprecision/tut/conversions.html +++ b/doc/html/boost_multiprecision/tut/conversions.html @@ -89,6 +89,21 @@ mpf_init_set_ui(m, 0); // set to a value; mpf_float i(m); // copies the value of the native type.
    +

    + More information on what additional types a backend supports conversions + from are given in the tutorial for each backend. +

    +
    • + An mp_number can be converted + to any built in type, via the convert_to + member function: +
    +
    mpz_int z(2);
    +int i = z.template convert_to<int>(); // sets i to 2
    +
    +

    + Additional conversions may be supported by particular backends. +

    diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html index aea653f8..a109f6fc 100644 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -70,6 +70,21 @@ specified in the template argument. Normally these should not be visible to the user. +
  • + The type supports both infinities and NaN's. An infinity is generated + whenever the result would overflow, and a NaN is generated for any + mathematically undefined operation. +
  • +
  • + There is a std::numeric_limits specialisation for + this type. +
  • +
  • + Any mp_number instantiated + on this type, is convertible to any other mp_number + instantiated on this type - for example you can convert from mp_number<cpp_dec_float<50> > to mp_number<cpp_dec_float<SomeOtherValue> >. + Narrowing conversions are truncating. +
  • diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html index 595e9d2c..8d42e7ac 100644 --- a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -107,6 +107,11 @@ in place of GMP - indeed that is the preferred option on Win32. +
  • + This backend supports rvalue-references and is move-aware, making instantiations + of mp_number on this + backend move aware. +
  • diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html index 98340475..021c5d0c 100644 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -134,6 +134,20 @@ difference to the performance of these types either way - so we may as well have the faster compile times by turning the feature off. +
  • + Unsigned types support subtraction, and unary negation - the result + is "as if" a 2's complement operation had been performed + - in other words they behave pretty much as a built in integer type + would in this situation. So for example if we were using mp_uint128_t then both mp_uint128_t(1)-4 + and -mp_uint128(3) + would result in the value 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD + of type mp_uint128_t. +
  • +
  • + This backend supports rvalue-references and is move-aware, making instantiations + of mp_number on this + backend move aware. +
  • diff --git a/doc/html/boost_multiprecision/tut/ints/gmp_int.html b/doc/html/boost_multiprecision/tut/ints/gmp_int.html index 1bf12605..1b7c9282 100644 --- a/doc/html/boost_multiprecision/tut/ints/gmp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/gmp_int.html @@ -85,6 +85,11 @@ Indeed use of MPIR is recommended on Win32. +
  • + This backend supports rvalue-references and is move-aware, making instantiations + of mp_number on this + backend move aware. +
  • diff --git a/doc/html/index.html b/doc/html/index.html index 3984146c..284440fb 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -86,6 +86,7 @@
    mpfr_float_backend
    cpp_dec_float
    Backend Requirements
    +
    Header File Structure
    Performance Comparison
    @@ -117,7 +118,7 @@
    - +

    Last revised: June 04, 2012 at 15:17:54 GMT

    Last revised: June 04, 2012 at 17:33:32 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 4299d633..144abd36 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -100,6 +100,23 @@ by passing a second template argument to `mp_number`: my_float a, b, c; // These variables have 300 decimal digits precision +Note that mixing arithmetic operations using types of different precision is strictly forbidden: + + #include + + namespace mp = boost::multiprecision; // Reduce the typing a bit later... + + mp::mp_int128_t a(3), b(2); + mp::mp_int512_t c(50), d; + + d = c * a; // Compiler error + +However, conversions are allowed: + + d = a; // OK, widening conversion. + d = a * b; // OK, can convert from an expression template too. + d = mp::mp_int512_t(a) * c; // OK, all the types in the expression are the same now. + [h4 Expression Templates] Class `mp_number` is expression-template-enabled: that means that rather than having a multiplication @@ -333,6 +350,12 @@ this is a direct consequence of the sign-magnitude representation. * The fixed precision types `mp_[u]intXXX_t` have expression template support turned off - it seems to make little difference to the performance of these types either way - so we may as well have the faster compile times by turning the feature off. +* Unsigned types support subtraction, and unary negation - the result is "as if" a 2's complement operation had been performed + - in other words they behave pretty much as a built in integer type would in this situation. So for example if we were using + `mp_uint128_t` then both `mp_uint128_t(1)-4` and `-mp_uint128(3)` would result in the value `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD` + of type `mp_uint128_t`. +* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. + [h5 Example:] @@ -373,6 +396,7 @@ as a result performing formatted output on this type when the argument is negati * Division by zero is handled by the [gmp] library - it will trigger a division by zero signal. * Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir] is recommended on Win32. +* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. [h5 Example:] @@ -543,6 +567,7 @@ Things you should know when using this type: * No changes are made to [gmp] or [mpfr] global settings, so this type can coexist with existing [mpfr] or [gmp] code. * The code can equally use [mpir] in place of [gmp] - indeed that is the preferred option on Win32. +* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. [h5 [mpfr] example:] @@ -582,6 +607,12 @@ Things you should know when using this type: (this is a result of the type having some hidden internal guard digits). * The type has a number of internal guard digits over and above those specified in the template argument. Normally these should not be visible to the user. +* The type supports both infinities and NaN's. An infinity is generated whenever the result would overflow, +and a NaN is generated for any mathematically undefined operation. +* There is a `std::numeric_limits` specialisation for this type. +* Any `mp_number` instantiated on this type, is convertible to any other `mp_number` instantiated on this type - +for example you can convert from `mp_number >` to `mp_number >`. +Narrowing conversions are truncating. [h5 cpp_dec_float example:] @@ -865,6 +896,15 @@ In particular: mpf_init_set_ui(m, 0); // set to a value; mpf_float i(m); // copies the value of the native type. +More information on what additional types a backend supports conversions from are given in the tutorial for each backend. + +* An `mp_number` can be converted to any built in type, via the `convert_to` member function: + + mpz_int z(2); + int i = z.template convert_to(); // sets i to 2 + +Additional conversions may be supported by particular backends. + [endsect] [section:random Generating Random Numbers] @@ -1131,6 +1171,9 @@ Type `mp_number` is default constructible, and both copy constructible and assig * Any builtin arithmetic type. * A `std::string` or any type which is convertible to `const char*`. * Any type that the Backend is constructible or assignable from. +* An rvalue reference to another `mp_number`. Move-semantics are used for construction if the backend also +supports rvalue reference construction. In the case of assignment, move semantics are always supported +when the argument is an rvalue reference irrespective of the backend. In addition, if the type has multiple components (for example rational or complex number types), then there is a two argument constructor: @@ -1166,6 +1209,9 @@ The arguments to these operators is either: For the left and right shift operations, the argument must be a builtin integer type with a positive value (negative values result in a `std::runtime_error` being thrown). +Note that all the types involved in the expression must evaluate to the same type - which is to say +we cannot mix an `mp_number` with an `mp_number` where B1 and B2 are different types. + operator ``['convertible-to-bool-type]``()const; Returns an ['unmentionable-type] that is usable in Boolean contexts (this allows `mp_number` to be used in any @@ -1262,6 +1308,9 @@ The return type of these operators is either: * Type `mp_number` when `ExpressionTemplates` is `false`. * Type `bool` if the operator is a comparison operator. +Note that all the types involved in the expression must evaluate to the same type - which is to say +we cannot mix an `mp_number` with an `mp_number` where B1 and B2 are different types. + Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative arguments result in a `std::runtime_error` being thrown). @@ -1329,7 +1378,8 @@ don't have native support for these functions. Please note however, that this d to be a compile time constant - this means for example that the [gmp] MPF Backend will not work with these functions when that type is used at variable precision. -Also note that with the exception of `abs` that these functions can only be used with floating-point Backend types. +Also note that with the exception of `abs` that these functions can only be used with floating-point Backend types (if any other types +such as fixed precision or complex types are added to the library later, then these functions may be extended to support those number types). [h4 Traits Class Support] @@ -1487,6 +1537,8 @@ The template arguments are: no dymanic memory will ever be allocated.]] ] +The type of `number_category >::type` is `mpl::int_`. + More information on this type can be found in the [link boost_multiprecision.tut.ints.cpp_int tutorial]. [endsect] @@ -1505,6 +1557,8 @@ Class template `gmp_int` fulfills all of the requirements for a [link boost_mult It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. +The type of `number_category >::type` is `mpl::int_`. + More information on this type can be found in the [link boost_multiprecision.tut.ints.gmp_int tutorial]. [endsect] @@ -1523,6 +1577,8 @@ Class template `tommath_int` fulfills all of the requirements for a [link boost_ It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. +The type of `number_category >::type` is `mpl::int_`. + More information on this type can be found in the [link boost_multiprecision.tut.ints.tom_int tutorial]. [endsect] @@ -1552,6 +1608,8 @@ and `mp_number::precision`. Note that this type does not in any way change the it does not change the default precision of the mpf_t data type), therefore you can safely mix this type with existing code that uses GMP, and also mix `gmp_float`s of differing precision. +The type of `number_category >::type` is `mpl::int_`. + More information on this type can be found in the [link boost_multiprecision.tut.floats.gmp_float tutorial]. [endsect] @@ -1581,6 +1639,8 @@ and `mp_number::precision`. Note that this type does not in any way change the it does not change the default precision of the mpfr_t data type), therefore you can safely mix this type with existing code that uses GMP or MPFR, and also mix `mpfr_float_backend`s of differing precision. +The type of `number_category >::type` is `mpl::int_`. + More information on this type can be found in the [link boost_multiprecision.tut.floats.mpfr_float tutorial]. [endsect] @@ -1605,6 +1665,8 @@ The class takes a single template parameter - `Digits10` - which is the number o should support. Note that this type does not ever perform any dynamic memory allocation, as a result the `Digits10` template argument should not be set too high or the classes size will grow unreasonably large. +The type of `number_category >::type` is `mpl::int_`. + More information on this type can be found in the [link boost_multiprecision.tut.floats.cpp_dec_float tutorial]. [endsect] @@ -1771,12 +1833,49 @@ of type B2. [[`eval_lcm(b, cb, cb2)`][`void`][Sets `b` to the least common multiple of `cb` and `cb2`. Only required when `B` is an integer type.]] ] +The tables above place no ['throws] requirements on any of the operations. It is up to each type modelling this concept to +decide when or whether throwing an exception is desirable. However, thrown exceptions should always either be the type, or +inherit from the type `std::runtime_error`. For example, a floating point type might choose to throw `std::overflow_error` +whenever the result of an operation would be infinite, and `std::underflow_error` whenever it would round to zero. + [note The non-member functions are all named with an "eval_" prefix to avoid conflicts with template classes of the same name - in point of fact this naming convention shouldn't be necessary, but rather works around some compiler bugs.] [endsect] +[section:headers Header File Structure] + +[table Top level headers +[[Header][Contains]] +[[cpp_int.hpp][The `cpp_int` backend type.]] +[[gmp.hpp][Defines all [gmp] related backends.]] +[[integer_ops.hpp][Integer specific non-member functions.]] +[[miller_rabin.hpp][Miller Rabin primality testing code.]] +[[mp_number.hpp][Defines the `mp_number` backend, is included by all the backend headers.]] +[[mpfr.hpp][Defines the mpfr_float_backend backend.]] +[[random.hpp][Defines code to interoperate with Boost.Random.]] +[[rational_adapter.hpp][Defines the `rational_adapter` backend.]] +[[cpp_dec_float.hpp][Defines the `cpp_dec_float` backend.]] +[[tommath.hpp][Defines the `tommath_int` backend.]] +[[concepts/mp_number_architypes.hpp][Defines a backend concept architypes for testing use.]] +] + +[table Implementation Headers] +[[Header][Contains]] +[[detail/big_lanczos.hpp][Lanczos support for Boost.Math integration.]] +[[detail/cpp_int_core.hpp][Platform and peformance tuning for the `cpp_int` backend.]] +[[detail/default_ops.hpp][Default versions of the optional backend non-member functions.]] +[[detail/generic_interconvert.hpp][Generic interconversion routines.]] +[[detail/mp_number_base.hpp][All the expression template code, metaprogramming, and operator overloads for `mp_number`.]] +[[detail/no_et_ops.hpp][The non-expression template operators.]] +[[defail/functions/constants.hpp][Defines constants used by the floating point functions.]] +[[detail/functions/pow.hpp][Defines default versions of the power and exponential related floating point functions.]] +[[detail/functions/trig.hpp][Defines default versions of the trigonometric related floating point functions.]] +] + +[endsect] + [endsect] [section:perf Performance Comparison] diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index d57d30dd..cc24dfbd 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -1234,6 +1234,20 @@ struct promote_arg > typedef typename boost::multiprecision::detail::mp_exp::result_type type; }; +template +inline R real_cast(const boost::multiprecision::mp_number& val) +{ + return val.template convert_to(); +} + +template +inline R real_cast(const boost::multiprecision::detail::mp_exp& val) +{ + typedef typename boost::multiprecision::detail::mp_exp::result_type val_type; + return val_type(val).template convert_to(); +} + + }}} #endif // BOOST_MATH_BIG_NUM_BASE_HPP diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index e72d320a..58039d23 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -25,7 +25,7 @@ struct mpfr_float_backend; namespace detail{ -long get_default_precision() { return 50; } +inline long get_default_precision() { return 50; } template struct mpfr_float_imp From e299171d07132581031cdcdd759618288276b847 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 5 Jun 2012 10:40:56 +0000 Subject: [PATCH 186/256] Add performance test comparing double to mp_number>. Fix typo in docs and regenerate. [SVN r78811] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- .../boost_multiprecision/ref/backendconc.html | 3 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 2 +- performance/float_backend.hpp | 437 ++++++++++++++++++ performance/sf_performance.cpp | 13 + 9 files changed, 461 insertions(+), 12 deletions(-) create mode 100644 performance/float_backend.hpp diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 3f5d4981..c4563d74 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 227b42a5..b53259af 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index f078a0ef..f8981198 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 5c34b04c..02a9f039 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T Z

    diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index c2465281..f901dcde 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -1715,8 +1715,7 @@

    eval_round(b, - cb, - cb2) + cb)

    diff --git a/doc/html/index.html b/doc/html/index.html index 284440fb..00bd89b8 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -118,7 +118,7 @@ - +

    Last revised: June 04, 2012 at 17:33:32 GMT

    Last revised: June 05, 2012 at 10:39:20 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 144abd36..92c2c9b1 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -1806,7 +1806,7 @@ of type B2. [[`eval_fabs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] [[`eval_fpclassify(cb)`][`int`][Returns one of the same values returned by `std::fpclassify`. Only required when `B` is an floating-point type.]] [[`eval_trunc(b, cb)`][`void`][Performs the equivalent operation to `std::trunc` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_round(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::round` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] +[[`eval_round(b, cb)`][`void`][Performs the equivalent operation to `std::round` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] [[`eval_exp(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] [[`eval_log(b, cb)`][`void`][Performs the equivalent operation to `std::log` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] [[`eval_log10(b, cb)`][`void`][Performs the equivalent operation to `std::log10` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] diff --git a/performance/float_backend.hpp b/performance/float_backend.hpp new file mode 100644 index 00000000..59b88c2f --- /dev/null +++ b/performance/float_backend.hpp @@ -0,0 +1,437 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MATH_FLOAT_BACKEND_HPP +#define BOOST_MATH_FLOAT_BACKEND_HPP + +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace multiprecision{ +namespace backends{ + +template +struct float_backend +{ + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + typedef int exponent_type; + + float_backend(){} + float_backend(const float_backend& o) + { + m_value = o.m_value; + } + float_backend(const Arithmetic& o) : m_value(o) {} +#ifndef BOOST_NO_RVALUE_REFERENCES + float_backend(float_backend&& o) : m_value(o.m_value) {} + float_backend(Arithmetic&& o) : m_value(o) {} +#endif + float_backend& operator = (const float_backend& o) + { + m_value = o.m_value; + return *this; + } + float_backend& operator = (unsigned long long i) + { + m_value = i; + return *this; + } + float_backend& operator = (unsigned i) + { + m_value = i; + return *this; + } + float_backend& operator = (long long i) + { + m_value = i; + return *this; + } + float_backend& operator = (int i) + { + m_value = i; + return *this; + } + float_backend& operator = (long double d) + { + m_value = d; + return *this; + } + float_backend& operator = (double d) + { + m_value = d; + return *this; + } + float_backend& operator = (const char* s) + { + m_value = boost::lexical_cast(s); + return *this; + } + void swap(float_backend& o) + { + std::swap(m_value, o.m_value); + } + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const + { + std::stringstream ss; + ss.flags(f); + ss << std::setprecision(digits) << m_value; + return ss.str(); + } + void negate() + { + m_value = -m_value; + } + int compare(const float_backend& o)const + { + return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); + } + int compare(long long i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(int i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(unsigned long long i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(unsigned i)const + { + return m_value > i ? 1 : (m_value < i ? -1 : 0); + } + int compare(long double d)const + { + return m_value > d ? 1 : (m_value < d ? -1 : 0); + } + int compare(double d)const + { + return m_value > d ? 1 : (m_value < d ? -1 : 0); + } + Arithmetic& data() { return m_value; } + const Arithmetic& data()const { return m_value; } +private: + Arithmetic m_value; +}; + +template +inline void eval_add(float_backend& result, const float_backend& o) +{ + result.data() += o.data(); +} +template +inline void eval_subtract(float_backend& result, const float_backend& o) +{ + result.data() -= o.data(); +} +template +inline void eval_multiply(float_backend& result, const float_backend& o) +{ + result.data() *= o.data(); +} +template +inline void eval_divide(float_backend& result, const float_backend& o) +{ + result.data() /= o.data(); +} + +template +inline typename enable_if >::type eval_add(float_backend& result, const A2& o) +{ + result.data() += o; +} +template +inline typename enable_if >::type eval_subtract(float_backend& result, const A2& o) +{ + result.data() -= o; +} +template +inline typename enable_if >::type eval_multiply(float_backend& result, const A2& o) +{ + result.data() *= o; +} +template +inline typename enable_if >::type eval_divide(float_backend& result, const A2& o) +{ + result.data() /= o; +} + +template +inline void eval_add(float_backend& result, const float_backend& a, const float_backend& b) +{ + result.data() = a.data() + b.data(); +} +template +inline void eval_subtract(float_backend& result, const float_backend& a, const float_backend& b) +{ + result.data() = a.data() - b.data(); +} +template +inline void eval_multiply(float_backend& result, const float_backend& a, const float_backend& b) +{ + result.data() = a.data() * b.data(); +} +template +inline void eval_divide(float_backend& result, const float_backend& a, const float_backend& b) +{ + result.data() = a.data() / b.data(); +} + +template +inline typename enable_if>::type eval_add(float_backend& result, const A2& a, const float_backend& b) +{ + result.data() = a + b.data(); +} +template +inline typename enable_if>::type eval_subtract(float_backend& result, const A2& a, const float_backend& b) +{ + result.data() = a - b.data(); +} +template +inline typename enable_if>::type eval_multiply(float_backend& result, const A2& a, const float_backend& b) +{ + result.data() = a * b.data(); +} +template +inline typename enable_if>::type eval_divide(float_backend& result, const A2& a, const float_backend& b) +{ + result.data() = a / b.data(); +} + +template +inline bool eval_is_zero(const float_backend& val) +{ + return val.data() == 0; +} + +template +inline int eval_get_sign(const float_backend& val) +{ + return val.data() == 0 ? 0 : val.data() < 0 ? -1 : 1; +} + +template +inline void eval_abs(float_backend& result, const float_backend& o) +{ + result.data() = std::abs(o.data()); +} + +template +inline void eval_fabs(float_backend& result, const float_backend& o) +{ + result.data() = std::abs(o.data()); +} + +template +inline void eval_floor(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = floor(o.data()); +} + +template +inline void eval_ceil(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = ceil(o.data()); +} + +template +inline void eval_sqrt(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = sqrt(o.data()); +} + +template +inline int eval_fpclassify(const float_backend& o) +{ + return (boost::math::fpclassify)(o.data()); +} + +template +inline void eval_trunc(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = trunc(o.data()); +} + +template +inline void eval_round(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = round(o.data()); +} + +template +inline void eval_exp(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = exp(o.data()); +} + +template +inline void eval_log(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = log(o.data()); +} + +template +inline void eval_log10(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = log10(o.data()); +} + +template +inline void eval_sin(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = sin(o.data()); +} + +template +inline void eval_cos(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = cos(o.data()); +} + +template +inline void eval_tan(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = tan(o.data()); +} + +template +inline void eval_acos(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = acos(o.data()); +} + +template +inline void eval_asin(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = asin(o.data()); +} + +template +inline void eval_atan(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = atan(o.data()); +} + +template +inline void eval_sinh(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = sinh(o.data()); +} + +template +inline void eval_cosh(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = cosh(o.data()); +} + +template +inline void eval_tanh(float_backend& result, const float_backend& o) +{ + BOOST_MATH_STD_USING + result.data() = tanh(o.data()); +} + +template +inline void eval_fmod(float_backend& result, const float_backend& a, const float_backend& b) +{ + BOOST_MATH_STD_USING + result.data() = fmod(a.data(), b.data()); +} + +template +inline void eval_pow(float_backend& result, const float_backend& a, const float_backend& b) +{ + BOOST_MATH_STD_USING + result.data() = pow(a.data(), b.data()); +} + +template +inline void eval_atan2(float_backend& result, const float_backend& a, const float_backend& b) +{ + BOOST_MATH_STD_USING + result.data() = atan2(a.data(), b.data()); +} + +} // namespace backends + +using boost::multiprecision::backends::float_backend; + +}} // namespaces + +namespace boost{ namespace math{ namespace tools{ + +template <> +inline double real_cast(concepts::real_concept r) +{ + return static_cast(r.value()); +} + +}}} + + +namespace std{ + +template +class numeric_limits, ExpressionTemplates > > : public std::numeric_limits +{ + typedef std::numeric_limits base_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; +public: + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } +}; + +template<> +class numeric_limits : public std::numeric_limits +{ + typedef std::numeric_limits base_type; + typedef boost::math::concepts::real_concept number_type; +public: + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } +}; + +} + +#endif diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 5bd20871..f748a5a9 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -14,6 +14,9 @@ # define TEST_MPREAL #endif +#ifdef TEST_FLOAT +#include "float_backend.hpp" +#endif #ifdef TEST_MPFR_CLASS #include #endif @@ -249,6 +252,16 @@ int main() poly_allocation_test("mpfr::mpreal", mpfr::mpreal(2)); #endif + // + // Comparison for builtin floats: + // +#ifdef TEST_FLOAT + time_proc("double", test_bessel); + time_proc("real_concept", test_bessel); + time_proc("float_backend", test_bessel > >); + time_proc("float_backend - no expression templates", test_bessel, false> >); +#endif + // // 50 digits first: // From 3fc6a3f67ccf8af93c1c3005906d1202b76f3d8a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 5 Jun 2012 17:19:56 +0000 Subject: [PATCH 187/256] Update TODO list. [SVN r78815] --- doc/html/boost_multiprecision/indexes/s01.html | 4 ++-- doc/html/boost_multiprecision/indexes/s02.html | 4 ++-- doc/html/boost_multiprecision/indexes/s03.html | 4 ++-- doc/html/boost_multiprecision/indexes/s04.html | 4 ++-- doc/html/boost_multiprecision/map/todo.html | 15 +++++++++++++++ doc/html/index.html | 2 +- doc/multiprecision.qbk | 4 ++++ 7 files changed, 28 insertions(+), 9 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index c4563d74..c51f2f47 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index b53259af..44bff9ed 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index f8981198..80fb897d 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 02a9f039..fd536361 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T Z

    diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 00d93f94..9b6465df 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -47,6 +47,21 @@ Comments
      +
    • + Can the non-expression template operators be further optimised with rvalue + reference support? +
    • +
    • + Can any functions - in particular value initialization - be made constexp? +
    • +
    • + Can we differentiate between explicit and implicit conversions in the + mp_number constructor (may need some new type traits)? +
    • +
    • + Can ring types (exact floating point types) be supported? The answer + should be yes, but someone needs to write it. +
    • Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. Open question - what should diff --git a/doc/html/index.html b/doc/html/index.html index 00bd89b8..4e0ab81c 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -118,7 +118,7 @@
    - +

    Last revised: June 05, 2012 at 10:39:20 GMT

    Last revised: June 05, 2012 at 17:15:21 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 92c2c9b1..1be60a64 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -2262,6 +2262,10 @@ More a list of what ['could] be done, rather than what ['should] be done (which [h4 Pre-Review Comments] +* Can the non-expression template operators be further optimised with rvalue reference support? +* Can any functions - in particular value initialization - be made `constexp`? +* Can we differentiate between explicit and implicit conversions in the mp_number constructor (may need some new type traits)? +* Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. Open question - what should be the default - int32_t or int64_t? * Document the size requirements of fixed precision ints. From 5ce96a14597ea6be84feee3799d2fc29cf70e2b3 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 7 Jun 2012 10:06:56 +0000 Subject: [PATCH 188/256] Fix some doc typos and regenerate docs. [SVN r78843] --- doc/html/boost_multiprecision/indexes/s01.html | 4 ++-- doc/html/boost_multiprecision/indexes/s02.html | 4 ++-- doc/html/boost_multiprecision/indexes/s03.html | 4 ++-- doc/html/boost_multiprecision/indexes/s04.html | 4 ++-- .../boost_multiprecision/ref/cpp_dec_ref.html | 4 ++-- .../boost_multiprecision/ref/cpp_int_ref.html | 2 +- .../boost_multiprecision/ref/gmp_int_ref.html | 2 +- doc/html/boost_multiprecision/ref/mpf_ref.html | 2 +- .../boost_multiprecision/ref/mpfr_ref.html | 2 +- .../boost_multiprecision/ref/tom_int_ref.html | 2 +- .../boost_multiprecision/tut/conversions.html | 2 +- .../tut/floats/fp_eg/nd.html | 2 +- .../tut/ints/egs/bitops.html | 2 +- .../boost_multiprecision/tut/rational.html | 2 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 18 +++++++++--------- example/floating_point_examples.cpp | 2 +- example/integer_examples.cpp | 2 +- 18 files changed, 31 insertions(+), 31 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index c51f2f47..717f0ba7 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 44bff9ed..863536e0 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 80fb897d..607ffea8 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index fd536361..0881eae2 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T Z

    diff --git a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html index 48ce9b5b..031f0575 100644 --- a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html @@ -30,7 +30,7 @@

    Class template cpp_dec_float fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: + type. Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    @@ -38,7 +38,7 @@ - which is the number of decimal digits precision the type should support. Note that this type does not ever perform any dynamic memory allocation, as a result the Digits10 - template argument should not be set too high or the classes size will grow + template argument should not be set too high or the class's size will grow unreasonably large.

    diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html index 43160fed..e0c9f368 100644 --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -43,7 +43,7 @@

    Class template cpp_int_backend fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: + type. Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    diff --git a/doc/html/boost_multiprecision/ref/gmp_int_ref.html b/doc/html/boost_multiprecision/ref/gmp_int_ref.html index 6d536179..ff5fb3ca 100644 --- a/doc/html/boost_multiprecision/ref/gmp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/gmp_int_ref.html @@ -28,7 +28,7 @@

    Class template gmp_int fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: + type. Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    diff --git a/doc/html/boost_multiprecision/ref/mpf_ref.html b/doc/html/boost_multiprecision/ref/mpf_ref.html index 9481059c..1eb8aad6 100644 --- a/doc/html/boost_multiprecision/ref/mpf_ref.html +++ b/doc/html/boost_multiprecision/ref/mpf_ref.html @@ -33,7 +33,7 @@

    Class template gmp_float fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: + type. Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    diff --git a/doc/html/boost_multiprecision/ref/mpfr_ref.html b/doc/html/boost_multiprecision/ref/mpfr_ref.html index eb96296a..a60f9563 100644 --- a/doc/html/boost_multiprecision/ref/mpfr_ref.html +++ b/doc/html/boost_multiprecision/ref/mpfr_ref.html @@ -33,7 +33,7 @@

    Class template mpfr_float_backend fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: + type. Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    diff --git a/doc/html/boost_multiprecision/ref/tom_int_ref.html b/doc/html/boost_multiprecision/ref/tom_int_ref.html index 9855b80a..c95e2112 100644 --- a/doc/html/boost_multiprecision/ref/tom_int_ref.html +++ b/doc/html/boost_multiprecision/ref/tom_int_ref.html @@ -28,7 +28,7 @@

    Class template tommath_int fulfills all of the requirements for a Backend - type. It's members and non-member functions are deliberately not documented: + type. Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change.

    diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html index dd36b344..81632bc8 100644 --- a/doc/html/boost_multiprecision/tut/conversions.html +++ b/doc/html/boost_multiprecision/tut/conversions.html @@ -67,7 +67,7 @@ std::cout << std::hex << std::showbase << i << std::endl;

    • - Some intercomnversions between number types are completely generic, and + Some interconversions between number types are completely generic, and are always available:
    cpp_int cppi(2);
    diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html
    index 70cdb83c..71e7e9a9 100644
    --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html
    +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html
    @@ -114,7 +114,7 @@
           );
        //
        // In the cpp_dec_float_50 case, the sin function is multiply overloaded
    -   // to handle expression templates etc.  As a result it's hard to take it's
    +   // to handle expression templates etc.  As a result it's hard to take its
        // address without knowing about its implementation details.  We'll use a 
        // C++11 lambda expression to capture the call.
        // We also need a typecast on the first argument so we don't accidently pass
    diff --git a/doc/html/boost_multiprecision/tut/ints/egs/bitops.html b/doc/html/boost_multiprecision/tut/ints/egs/bitops.html
    index 37b37e80..cd9dbdc3 100644
    --- a/doc/html/boost_multiprecision/tut/ints/egs/bitops.html
    +++ b/doc/html/boost_multiprecision/tut/ints/egs/bitops.html
    @@ -58,7 +58,7 @@
               

    Note how the bit_set - function sets the specified bit in it's argument and then returns a reference + function sets the specified bit in its argument and then returns a reference to the result - which we can then simply decrement. The result from a call to b2 is the same as that to b1. diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 0d05ef47..2571ebe6 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -189,7 +189,7 @@

    - All C++ adapter that allows any inetger back-end type to be used + All C++ adapter that allows any integer back-end type to be used as a rational type.

    - +

    Last revised: June 05, 2012 at 17:15:21 GMT

    Last revised: June 07, 2012 at 09:33:02 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 1be60a64..c83d197f 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -672,7 +672,7 @@ The following back-ends provide rational number arithmetic: [[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]] [[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licensed implementation.][Slower than [gmp].]] [[`tommath_rational`][boost/multiprecision/tommath.hpp][2][[tommath]][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] -[[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any inetger back-end type to be used as a rational type.][Requires an underlying integer back-end type.]] +[[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any integer back-end type to be used as a rational type.][Requires an underlying integer back-end type.]] [[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] @@ -877,7 +877,7 @@ In particular: // Now print in hex format with prefix: std::cout << std::hex << std::showbase << i << std::endl; -* Some intercomnversions between number types are completely generic, and are always available: +* Some interconversions between number types are completely generic, and are always available: cpp_int cppi(2); // We can always convert between numbers of the same category - @@ -1519,7 +1519,7 @@ whose precision can vary at compile time (such as `mpf_float`). }} // namespaces Class template `cpp_int_backend` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. -It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. The template arguments are: @@ -1554,7 +1554,7 @@ More information on this type can be found in the [link boost_multiprecision.tut }} // namespaces Class template `gmp_int` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. -It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. The type of `number_category >::type` is `mpl::int_`. @@ -1574,7 +1574,7 @@ More information on this type can be found in the [link boost_multiprecision.tut }} // namespaces Class template `tommath_int` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. -It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. The type of `number_category >::type` is `mpl::int_`. @@ -1599,7 +1599,7 @@ More information on this type can be found in the [link boost_multiprecision.tut }} // namespaces Class template `gmp_float` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. -It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type @@ -1630,7 +1630,7 @@ More information on this type can be found in the [link boost_multiprecision.tut }} // namespaces Class template `mpfr_float_backend` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. -It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type @@ -1658,12 +1658,12 @@ More information on this type can be found in the [link boost_multiprecision.tut }} // namespaces Class template `cpp_dec_float` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type. -It's members and non-member functions are deliberately not documented: these are considered implementation details that are subject +Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject to change. The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type should support. Note that this type does not ever perform any dynamic memory allocation, as a result the `Digits10` -template argument should not be set too high or the classes size will grow unreasonably large. +template argument should not be set too high or the class's size will grow unreasonably large. The type of `number_category >::type` is `mpl::int_`. diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp index 7c391ddd..e1c9b97a 100644 --- a/example/floating_point_examples.cpp +++ b/example/floating_point_examples.cpp @@ -537,7 +537,7 @@ int main(int, char**) ); // // In the cpp_dec_float_50 case, the sin function is multiply overloaded - // to handle expression templates etc. As a result it's hard to take it's + // to handle expression templates etc. As a result it's hard to take its // address without knowing about its implementation details. We'll use a // C++11 lambda expression to capture the call. // We also need a typecast on the first argument so we don't accidently pass diff --git a/example/integer_examples.cpp b/example/integer_examples.cpp index 68cb0653..f57e76e8 100644 --- a/example/integer_examples.cpp +++ b/example/integer_examples.cpp @@ -157,7 +157,7 @@ cpp_int b2(unsigned n) } /*` -Note how the `bit_set` function sets the specified bit in it's argument and then returns a reference to the result - +Note how the `bit_set` function sets the specified bit in its argument and then returns a reference to the result - which we can then simply decrement. The result from a call to `b2` is the same as that to `b1`. We can equally test bits, so for example the n'th bit of the result returned from `b2` shouldn't be set From e0a8f821c52f5384ff317cb2ec8db0dacbbb2f2d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 14 Jun 2012 10:26:15 +0000 Subject: [PATCH 189/256] Change BOOST_MP_NOEXCEPT to BOOST_NOEXCEPT. Add some missing #includes. [SVN r78943] --- .../concepts/mp_number_architypes.hpp | 18 ++--- include/boost/multiprecision/cpp_int.hpp | 54 +++++++------- .../depricated/arithmetic_backend.hpp | 18 ++--- .../multiprecision/depricated/fixed_int.hpp | 18 ++--- .../multiprecision/detail/mp_number_base.hpp | 6 -- include/boost/multiprecision/gmp.hpp | 72 +++++++++---------- include/boost/multiprecision/mp_number.hpp | 2 + include/boost/multiprecision/mpfr.hpp | 36 +++++----- .../boost/multiprecision/rational_adapter.hpp | 18 ++--- include/boost/multiprecision/tommath.hpp | 18 ++--- 10 files changed, 128 insertions(+), 132 deletions(-) diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_architypes.hpp index ea29ecde..bc281b4f 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_architypes.hpp @@ -198,15 +198,15 @@ class numeric_limits base_type; typedef boost::multiprecision::mp_number number_type; public: - static number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } - static number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } - static number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } - static number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } - static number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } - static number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } + static number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } + static number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } + static number_type lowest() BOOST_NOEXCEPT { return -(max)(); } + static number_type epsilon() BOOST_NOEXCEPT { return base_type::epsilon(); } + static number_type round_error() BOOST_NOEXCEPT { return epsilon() / 2; } + static number_type infinity() BOOST_NOEXCEPT { return base_type::infinity(); } + static number_type quiet_NaN() BOOST_NOEXCEPT { return base_type::quiet_NaN(); } + static number_type signaling_NaN() BOOST_NOEXCEPT { return base_type::signaling_NaN(); } + static number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); } }; } diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index e57e10d6..b3ba4475 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2316,15 +2316,15 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - static number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_NOEXCEPT { return number_type(0); } - static number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_NOEXCEPT { return number_type(0); } - static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; BOOST_STATIC_CONSTEXPR int max_digits10 = 0; @@ -2332,8 +2332,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } - static number_type round_error() BOOST_MP_NOEXCEPT { return 0; } + static number_type epsilon() BOOST_NOEXCEPT { return 0; } + static number_type round_error() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -2343,10 +2343,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_MP_NOEXCEPT { return 0; } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } + static number_type infinity() BOOST_NOEXCEPT { return 0; } + static number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } + static number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } + static number_type denorm_min() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -2378,11 +2378,11 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - static number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_NOEXCEPT { return -(max)(); } - static number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_NOEXCEPT { typedef typename number_type::backend_type backend_type; init.do_nothing(); @@ -2401,7 +2401,7 @@ public: } return val; } - static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = MinBits; BOOST_STATIC_CONSTEXPR int digits10 = static_cast(MinBits * 301L / 1000L); BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; @@ -2409,8 +2409,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } - static number_type round_error() BOOST_MP_NOEXCEPT { return 0; } + static number_type epsilon() BOOST_NOEXCEPT { return 0; } + static number_type round_error() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -2420,10 +2420,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_MP_NOEXCEPT { return 0; } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } + static number_type infinity() BOOST_NOEXCEPT { return 0; } + static number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } + static number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } + static number_type denorm_min() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = true; @@ -2457,11 +2457,11 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - static number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_NOEXCEPT { return number_type(0); } - static number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_NOEXCEPT { typedef typename number_type::backend_type backend_type; init.do_nothing(); @@ -2480,7 +2480,7 @@ public: } return val; } - static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = MinBits; BOOST_STATIC_CONSTEXPR int digits10 = static_cast(MinBits * 301L / 1000L); BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; @@ -2488,8 +2488,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } - static number_type round_error() BOOST_MP_NOEXCEPT { return 0; } + static number_type epsilon() BOOST_NOEXCEPT { return 0; } + static number_type round_error() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -2499,10 +2499,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_MP_NOEXCEPT { return 0; } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } + static number_type infinity() BOOST_NOEXCEPT { return 0; } + static number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } + static number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } + static number_type denorm_min() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = true; diff --git a/include/boost/multiprecision/depricated/arithmetic_backend.hpp b/include/boost/multiprecision/depricated/arithmetic_backend.hpp index af26b1ca..9925d3f8 100644 --- a/include/boost/multiprecision/depricated/arithmetic_backend.hpp +++ b/include/boost/multiprecision/depricated/arithmetic_backend.hpp @@ -133,15 +133,15 @@ class numeric_limits base_type; typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); } }; } diff --git a/include/boost/multiprecision/depricated/fixed_int.hpp b/include/boost/multiprecision/depricated/fixed_int.hpp index ff59dbef..80be2036 100644 --- a/include/boost/multiprecision/depricated/fixed_int.hpp +++ b/include/boost/multiprecision/depricated/fixed_int.hpp @@ -1538,7 +1538,7 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { static bool init = false; static number_type val; @@ -1549,7 +1549,7 @@ public: } return val; } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { static bool init = false; static number_type val; @@ -1560,7 +1560,7 @@ public: } return val; } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = Bits; BOOST_STATIC_CONSTEXPR int digits10 = (digits * 301L) / 1000; BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; @@ -1568,8 +1568,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1579,10 +1579,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return 0; } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = true; diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index cc24dfbd..103ad9fe 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -11,12 +11,6 @@ #include #include -#ifdef BOOST_NO_NOEXCEPT -#define BOOST_MP_NOEXCEPT -#else -#define BOOST_MP_NOEXCEPT noexcept -#endif - namespace boost{ namespace multiprecision{ template diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 02f11216..08b93a07 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1844,7 +1844,7 @@ public: // mpf_get_str on 64-bit Linux builds. Possibly we could use larger // exponent values elsewhere. // - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1856,7 +1856,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1868,7 +1868,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_NOEXCEPT { return -(max)(); } @@ -1880,7 +1880,7 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1893,7 +1893,7 @@ public: return value.second; } // What value should this be???? - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1915,10 +1915,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT { return number_type(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1950,9 +1950,9 @@ class numeric_limits, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; - static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type (max)() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type lowest() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type (min)() BOOST_NOEXCEPT { return number_type(); } + static number_type (max)() BOOST_NOEXCEPT { return number_type(); } + static number_type lowest() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; BOOST_STATIC_CONSTEXPR int max_digits10 = 0; @@ -1960,8 +1960,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 0; - static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type epsilon() BOOST_NOEXCEPT { return number_type(); } + static number_type round_error() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1971,10 +1971,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type infinity() BOOST_NOEXCEPT { return number_type(); } + static number_type quiet_NaN() BOOST_NOEXCEPT { return number_type(); } + static number_type signaling_NaN() BOOST_NOEXCEPT { return number_type(); } + static number_type denorm_min() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1993,15 +1993,15 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - static number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_NOEXCEPT { return number_type(); } - static number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_NOEXCEPT { return number_type(); } - static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_NOEXCEPT { return (min)(); } BOOST_STATIC_CONSTEXPR int digits = INT_MAX; BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; @@ -2009,8 +2009,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type epsilon() BOOST_NOEXCEPT { return number_type(); } + static number_type round_error() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -2020,10 +2020,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type infinity() BOOST_NOEXCEPT { return number_type(); } + static number_type quiet_NaN() BOOST_NOEXCEPT { return number_type(); } + static number_type signaling_NaN() BOOST_NOEXCEPT { return number_type(); } + static number_type denorm_min() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -2042,15 +2042,15 @@ public: // Largest and smallest numbers are bounded only by available memory, set // to zero: // - static number_type (min)() BOOST_MP_NOEXCEPT + static number_type (min)() BOOST_NOEXCEPT { return number_type(); } - static number_type (max)() BOOST_MP_NOEXCEPT + static number_type (max)() BOOST_NOEXCEPT { return number_type(); } - static number_type lowest() BOOST_MP_NOEXCEPT { return (min)(); } + static number_type lowest() BOOST_NOEXCEPT { return (min)(); } // Digits are unbounded, use zero for now: BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; @@ -2059,8 +2059,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = true; BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type epsilon() BOOST_NOEXCEPT { return number_type(); } + static number_type round_error() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -2070,10 +2070,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(); } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(); } + static number_type infinity() BOOST_NOEXCEPT { return number_type(); } + static number_type quiet_NaN() BOOST_NOEXCEPT { return number_type(); } + static number_type signaling_NaN() BOOST_NOEXCEPT { return number_type(); } + static number_type denorm_min() BOOST_NOEXCEPT { return number_type(); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 84a5feae..a8928cfe 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -20,6 +20,8 @@ #include #include #include +#include // stream operators +#include // EOF namespace boost{ namespace multiprecision{ diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 58039d23..1ea8f782 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1045,7 +1045,7 @@ class numeric_limits, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1057,7 +1057,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1069,7 +1069,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_NOEXCEPT { return -(max)(); } @@ -1081,7 +1081,7 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT { initializer.do_nothing(); static std::pair value; @@ -1094,7 +1094,7 @@ public: return value.second; } // What value should this be???? - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1116,7 +1116,7 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1129,7 +1129,7 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT { // returns epsilon/2 initializer.do_nothing(); @@ -1142,11 +1142,11 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT { return number_type(0); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(0); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = false; @@ -1180,9 +1180,9 @@ class numeric_limits, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; - static number_type (min)() BOOST_MP_NOEXCEPT { return number_type(0); } - static number_type (max)() BOOST_MP_NOEXCEPT { return number_type(0); } - static number_type lowest() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type (min)() BOOST_NOEXCEPT { return number_type(0); } + static number_type (max)() BOOST_NOEXCEPT { return number_type(0); } + static number_type lowest() BOOST_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR int digits = 0; BOOST_STATIC_CONSTEXPR int digits10 = 0; BOOST_STATIC_CONSTEXPR int max_digits10 = 0; @@ -1190,8 +1190,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 0; - static number_type epsilon() BOOST_MP_NOEXCEPT { return number_type(0); } - static number_type round_error() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type epsilon() BOOST_NOEXCEPT { return number_type(0); } + static number_type round_error() BOOST_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR int min_exponent = 0; BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; BOOST_STATIC_CONSTEXPR int max_exponent = 0; @@ -1201,10 +1201,10 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_MP_NOEXCEPT { return number_type(0); } - static number_type quiet_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } - static number_type signaling_NaN() BOOST_MP_NOEXCEPT { return number_type(0); } - static number_type denorm_min() BOOST_MP_NOEXCEPT { return number_type(0); } + static number_type infinity() BOOST_NOEXCEPT { return number_type(0); } + static number_type quiet_NaN() BOOST_NOEXCEPT { return number_type(0); } + static number_type signaling_NaN() BOOST_NOEXCEPT { return number_type(0); } + static number_type denorm_min() BOOST_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; BOOST_STATIC_CONSTEXPR bool is_bounded = false; BOOST_STATIC_CONSTEXPR bool is_modulo = false; diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index c01af0fd..0aa4ec70 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -205,15 +205,15 @@ class numeric_limits Date: Fri, 15 Jun 2012 09:10:47 +0000 Subject: [PATCH 190/256] Fix valgrind spotted bug in cpp_int subtraction routine. Add missing numeric_limits members. Fix GCC warning in gmp.hpp. [SVN r78953] --- include/boost/multiprecision/cpp_int.hpp | 153 ++++++++++++++++++++++- include/boost/multiprecision/gmp.hpp | 10 ++ 2 files changed, 162 insertions(+), 1 deletion(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index b3ba4475..c6e4864d 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -964,12 +964,16 @@ inline void subtract_unsigned(cpp_int_backend& resul result.sign(s); return; } + // This isn't used till later, but comparison has to occur before we resize the result, + // as that may also resize a or b if this is an inplace operation: + int c = a.compare_unsigned(b); + // Set up the result vector: result.resize(x); + // Now that a, b, and result are stable, get pointers to their limbs: typename cpp_int_backend::const_limb_pointer pa = a.limbs(); typename cpp_int_backend::const_limb_pointer pb = b.limbs(); typename cpp_int_backend::limb_pointer pr = result.limbs(); bool swapped = false; - int c = a.compare_unsigned(b); if(c < 0) { swap(pa, pb); @@ -2355,6 +2359,55 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +const int numeric_limits, ExpressionTemplates> >::digits; +template +const int numeric_limits, ExpressionTemplates> >::digits10; +template +const int numeric_limits, ExpressionTemplates> >::max_digits10; +template +const bool numeric_limits, ExpressionTemplates> >::is_signed; +template +const bool numeric_limits, ExpressionTemplates> >::is_integer; +template +const bool numeric_limits, ExpressionTemplates> >::is_exact; +template +const int numeric_limits, ExpressionTemplates> >::radix; +template +const int numeric_limits, ExpressionTemplates> >::min_exponent; +template +const int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +const int numeric_limits, ExpressionTemplates> >::max_exponent; +template +const int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +const bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +const bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +const bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +const float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +const bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +const bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +const bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +const bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +const bool numeric_limits, ExpressionTemplates> >::traps; +template +const bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +const float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif + template class numeric_limits, ExpressionTemplates> > { @@ -2435,6 +2488,55 @@ public: template const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +const int numeric_limits, ExpressionTemplates> >::digits; +template +const int numeric_limits, ExpressionTemplates> >::digits10; +template +const int numeric_limits, ExpressionTemplates> >::max_digits10; +template +const bool numeric_limits, ExpressionTemplates> >::is_signed; +template +const bool numeric_limits, ExpressionTemplates> >::is_integer; +template +const bool numeric_limits, ExpressionTemplates> >::is_exact; +template +const int numeric_limits, ExpressionTemplates> >::radix; +template +const int numeric_limits, ExpressionTemplates> >::min_exponent; +template +const int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +const int numeric_limits, ExpressionTemplates> >::max_exponent; +template +const int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +const bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +const bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +const bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +const float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +const bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +const bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +const bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +const bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +const bool numeric_limits, ExpressionTemplates> >::traps; +template +const bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +const float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif + template class numeric_limits, ExpressionTemplates> > { @@ -2514,6 +2616,55 @@ public: template const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +const int numeric_limits, ExpressionTemplates> >::digits; +template +const int numeric_limits, ExpressionTemplates> >::digits10; +template +const int numeric_limits, ExpressionTemplates> >::max_digits10; +template +const bool numeric_limits, ExpressionTemplates> >::is_signed; +template +const bool numeric_limits, ExpressionTemplates> >::is_integer; +template +const bool numeric_limits, ExpressionTemplates> >::is_exact; +template +const int numeric_limits, ExpressionTemplates> >::radix; +template +const int numeric_limits, ExpressionTemplates> >::min_exponent; +template +const int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +const int numeric_limits, ExpressionTemplates> >::max_exponent; +template +const int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +const bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +const bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +const bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +const float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +const bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +const bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +const bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +const bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +const bool numeric_limits, ExpressionTemplates> >::traps; +template +const bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +const float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif + } #endif diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 08b93a07..fef98b76 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1428,6 +1428,16 @@ inline typename enable_if< mpl::bool_ > >::type eval_powm(gmp_int& result, const gmp_int& base, Integer p, const gmp_int& m) +{ + mpz_powm_ui(result.data(), base.data(), p, m.data()); +} +template +inline typename enable_if< + mpl::and_< + is_signed, + mpl::bool_ + > +>::type eval_powm(gmp_int& result, const gmp_int& base, Integer p, const gmp_int& m) { if(p < 0) { From a6a4ff0c5e2c7de600506924d739bced9d7d3cf2 Mon Sep 17 00:00:00 2001 From: Christopher Kormanyos Date: Mon, 25 Jun 2012 21:17:27 +0000 Subject: [PATCH 191/256] Improve the pow_imp function with the S-and-X binary method (Knuth, Vol 2, 4.6.3). [SVN r79092] --- .../multiprecision/detail/functions/pow.hpp | 62 +++++++------------ 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index bbb6b537..109937cd 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -17,47 +17,31 @@ namespace detail{ template inline void pow_imp(T& result, const T& t, const U& p, const mpl::false_&) { - // Compute the pure power of typename T t^p. Binary splitting of the power is - // used. The resulting computational complexity has the order of log2[abs(p)]. - typedef typename boost::multiprecision::detail::canonical::type int_type; - switch(p) + // Compute the pure power of typename T t^p. + // Use the S-and-X binary method, as described in + // D. E. Knuth, "The Art of Computer Programming", Vol. 2, + // Section 4.6.3 . The resulting computational complexity + // is order log2[abs(p)]. + + // This will store the result. + result = ((U(p % U(2)) != U(0)) ? t : T(1)); + + U p2(p); + + // The variable x stores the binary powers of t. + T x(t); + + while(U(p2 /= 2) != U(0)) { - case 0: - result = static_cast(1); - break; - case 1: - result = t; - break; - case 2: - eval_multiply(result, t, t); - break; - case 3: - eval_multiply(result, t, t); - eval_multiply(result, t); - break; - case 4: - eval_multiply(result, t, t); - eval_multiply(result, result); - break; - default: + // Square x for each binary power. + eval_multiply(x, x); + + const bool has_binary_power = (U(p2 % U(2)) != U(0)); + + if(has_binary_power) { - result = t; - U n; - - for(n = static_cast(1); n <= static_cast(p / static_cast(2)); n *= static_cast(2)) - { - eval_multiply(result, result); - } - - const U p_minus_n = static_cast(p - n); - - // Call the function recursively for computing the remaining power of n. - if(p_minus_n) - { - T temp; - pow_imp(temp, t, p_minus_n, mpl::false_()); - eval_multiply(result, temp); - } + // Multiply the result with each binary power contained in the exponent. + eval_multiply(result, x); } } } From f09ead8e3782d99415aaf029747246aa6c1fb10b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 27 Jun 2012 18:25:10 +0000 Subject: [PATCH 192/256] Some file renaming and fixes from Steven Watanabe's comments. [SVN r79141] --- doc/multiprecision.qbk | 7 +- ...rchitypes.hpp => mp_number_archetypes.hpp} | 4 +- .../multiprecision/detail/default_ops.hpp | 1 + .../detail/functions/constants.hpp | 58 +++-- .../multiprecision/detail/functions/pow.hpp | 123 +++++------ .../detail/generic_interconvert.hpp | 4 +- .../multiprecision/detail/mp_number_base.hpp | 2 + test/Jamfile.v2 | 24 ++- test/math/log1p_expm1_test.cpp | 2 +- test/math/powm1_sqrtp1m1_test.cpp | 2 +- test/math/test_bessel_i.cpp | 2 +- test/math/test_bessel_j.cpp | 2 +- test/math/test_bessel_k.cpp | 2 +- test/math/test_bessel_y.cpp | 2 +- test/math/test_beta.cpp | 2 +- test/math/test_binomial_coeff.cpp | 2 +- test/math/test_carlson.cpp | 2 +- test/math/test_cbrt.cpp | 2 +- test/math/test_digamma.cpp | 2 +- test/math/test_ellint_1.cpp | 2 +- test/math/test_ellint_2.cpp | 2 +- test/math/test_ellint_3.cpp | 2 +- test/math/test_erf.cpp | 2 +- test/math/test_expint.cpp | 2 +- test/math/test_gamma.cpp | 2 +- test/math/test_hermite.cpp | 2 +- test/math/test_ibeta.cpp | 2 +- test/math/test_ibeta_2.cpp | 2 +- test/math/test_ibeta_3.cpp | 2 +- test/math/test_ibeta_4.cpp | 2 +- test/math/test_ibeta_inv_1.cpp | 2 +- test/math/test_ibeta_inv_ab_4.cpp | 2 +- test/math/test_igamma.cpp | 2 +- test/math/test_igamma_inv.cpp | 2 +- test/math/test_igamma_inva.cpp | 2 +- test/math/test_laguerre.cpp | 2 +- test/math/test_legendre.cpp | 2 +- test/math/test_tgamma_ratio.cpp | 2 +- test/math/test_zeta.cpp | 2 +- test/mp_number_concept_check.cpp | 2 +- test/test_acos.cpp | 2 +- test/test_arithmetic.cpp | 2 +- test/test_asin.cpp | 2 +- test/test_atan.cpp | 2 +- test/test_constants.cpp | 198 ++++++++++++++++++ test/test_cos.cpp | 2 +- test/test_cosh.cpp | 2 +- test/test_exp.cpp | 2 +- test/test_fpclassify.cpp | 2 +- test/test_log.cpp | 2 +- test/test_numeric_limits.cpp | 2 +- test/test_pow.cpp | 2 +- test/test_round.cpp | 2 +- test/test_sin.cpp | 2 +- test/test_sinh.cpp | 2 +- test/test_sqrt.cpp | 2 +- test/test_tanh.cpp | 2 +- 57 files changed, 388 insertions(+), 129 deletions(-) rename include/boost/multiprecision/concepts/{mp_number_architypes.hpp => mp_number_archetypes.hpp} (98%) create mode 100644 test/test_constants.cpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index c83d197f..97064c3d 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -1681,7 +1681,8 @@ In the following tables, type B is the `Backend` template arument to `mp_number` a variables of type B, `cb` and `cb2` are constant variables of type B, `a` is a variable of Arithmetic type, `s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, `pa` is a variable of type pointer-to-arithmetic-type, `exp` is a variable of type `B::exp_type`, -`pexp` is a variable of type `B::exp_type*`, B2 is another type that meets these requirements, b2 is a variable +`pexp` is a variable of type `B::exp_type*`, `i` is a variable of type `int`, `pi` pointer to a variable of type `int`, +B2 is another type that meets these requirements, b2 is a variable of type B2. [table Compulsory Requirements on the Backend type. @@ -1725,6 +1726,8 @@ of type B2. Conversions to other types are entirely optional.]] [[`eval_frexp(b, cb, pexp)`][`void`][Stores values in `b` and `*pexp` such that the value of `cb` is b * 2[super *pexp], only required when `B` is a floating-point type.]] [[`eval_ldexp(b, cb, exp)`][`void`][Stores a value in `b` that is cb * 2[super exp], only required when `B` is a floating-point type.]] +[[`eval_frexp(b, cb, pi)`][`void`][Stores values in `b` and `*pi` such that the value of `cb` is b * 2[super *pi], only required when `B` is a floating-point type.]] +[[`eval_ldexp(b, cb, i)`][`void`][Stores a value in `b` that is cb * 2[super i], only required when `B` is a floating-point type.]] [[`eval_floor(b, cb)`][`void`][Stores the floor of `cb` in `b`, only required when `B` is a floating-point type.]] [[`eval_ceil(b, cb)`][`void`][Stores the ceiling of `cb` in `b`, only required when `B` is a floating-point type.]] [[`eval_sqrt(b, cb)`][`void`][Stores the square root of `cb` in `b`, only required when `B` is a floating-point type.]] @@ -1858,7 +1861,7 @@ in point of fact this naming convention shouldn't be necessary, but rather works [[rational_adapter.hpp][Defines the `rational_adapter` backend.]] [[cpp_dec_float.hpp][Defines the `cpp_dec_float` backend.]] [[tommath.hpp][Defines the `tommath_int` backend.]] -[[concepts/mp_number_architypes.hpp][Defines a backend concept architypes for testing use.]] +[[concepts/mp_number_archetypes.hpp][Defines a backend concept architypes for testing use.]] ] [table Implementation Headers] diff --git a/include/boost/multiprecision/concepts/mp_number_architypes.hpp b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp similarity index 98% rename from include/boost/multiprecision/concepts/mp_number_architypes.hpp rename to include/boost/multiprecision/concepts/mp_number_archetypes.hpp index bc281b4f..e82f69ac 100644 --- a/include/boost/multiprecision/concepts/mp_number_architypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp @@ -7,12 +7,14 @@ #define BOOST_MATH_CONCEPTS_ER_HPP #include +#include #include #include #include #include #include -#include +#include +#include namespace boost{ namespace multiprecision{ diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index e5511ffc..7462bcba 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #ifndef INSTRUMENT_BACKEND #ifndef BOOST_MP_INSTRUMENT diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 685b04e0..4946ccf5 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -9,12 +9,7 @@ template void calc_log2(T& num, unsigned digits) { - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename T::unsigned_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type ui_type; + typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename mpl::front::type si_type; // @@ -35,15 +30,27 @@ void calc_log2(T& num, unsigned digits) // // Check if we can just construct from string: // - if(digits < 3640) + if(digits < 3640) // 3640 binary digits ~ 1100 decimal digits { num = string_val; return; } - num = static_cast(1180509120u); + // + // We calculate log2 from using the formula: + // + // ln(2) = 3/4 SUM[n>=0] ((-1)^n * N!^2 / (2^n(2n+1)!)) + // + // Numerator and denominator are calculated separately and then + // divided at the end, we also precalculate the terms up to n = 5 + // since these fit in a 32-bit integer anyway. + // + // See Gourdon, X., and Sebah, P. The logarithmic constant: log 2, Jan. 2004. + // Also http://www.mpfr.org/algorithms.pdf. + // + num = static_cast(1180509120uL); T denom, next_term, temp; - denom = static_cast(1277337600u); - next_term = static_cast(120u); + denom = static_cast(1277337600uL); + next_term = static_cast(120uL); si_type sign = -1; ui_type limit = digits / 3 + 1; @@ -58,7 +65,8 @@ void calc_log2(T& num, unsigned digits) sign = -sign; eval_multiply(next_term, n); eval_multiply(temp, next_term, next_term); - eval_multiply(temp, sign); + if(sign < 0) + temp.negate(); eval_add(num, temp); } eval_multiply(denom, ui_type(4)); @@ -92,7 +100,7 @@ void calc_e(T& result, unsigned digits) // // Check if we can just construct from string: // - if(digits < 3640) + if(digits < 3640) // 3640 binary digits ~ 1100 decimal digits { result = string_val; return; @@ -102,6 +110,9 @@ void calc_e(T& result, unsigned digits) lim = ui_type(1); eval_ldexp(lim, lim, digits); + // + // Standard evaluation from the definition of e: http://functions.wolfram.com/Constants/E/02/ + // result = ui_type(2); T denom; denom = ui_type(1); @@ -138,7 +149,7 @@ void calc_pi(T& result, unsigned digits) // // Check if we can just construct from string: // - if(digits < 3640) + if(digits < 3640) // 3640 binary digits ~ 1100 decimal digits { result = string_val; return; @@ -157,6 +168,25 @@ void calc_pi(T& result, unsigned digits) lim = ui_type(1); eval_ldexp(lim, lim, -(int)digits); + // + // This algorithm is from: + // Schonhage, A., Grotefeld, A. F. W., and Vetter, E. Fast Algorithms: A Multitape Turing + // Machine Implementation. BI Wissenschaftverlag, 1994. + // Also described in MPFR's algorithm guide: http://www.mpfr.org/algorithms.pdf. + // + // Let: + // a[0] = A[0] = 1 + // B[0] = 1/2 + // D[0] = 1/4 + // Then: + // S[k+1] = (A[k]+B[k]) / 4 + // b[k] = sqrt(B[k]) + // a[k+1] = a[k]^2 + // B[k+1] = 2(A[k+1]-S[k+1]) + // D[k+1] = D[k] - 2^k(A[k+1]-B[k+1]) + // Stop when |A[k]-B[k]| <= 2^(k-p) + // and PI = B[k]/D[k] + unsigned k = 1; do @@ -248,7 +278,7 @@ const T& get_constant_pi() static bool b = false; if(!b) { - calc_pi(result, boost::multiprecision::detail::digits2 >::value + 10); + calc_pi(result, boost::multiprecision::detail::digits2 >::value); b = true; } diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 109937cd..b7cc9e26 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -23,8 +23,15 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::false_&) // Section 4.6.3 . The resulting computational complexity // is order log2[abs(p)]. + typedef typename boost::multiprecision::detail::canonical::type int_type; + // This will store the result. - result = ((U(p % U(2)) != U(0)) ? t : T(1)); + if(U(p % U(2)) != U(0)) + { + result = t; + } + else + result = int_type(1); U p2(p); @@ -51,17 +58,18 @@ inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&) { // Signed integer power, just take care of the sign then call the unsigned version: typedef typename boost::multiprecision::detail::canonical::type int_type; + typedef typename make_unsigned::type ui_type; if(p < 0) { T temp; temp = static_cast(1); T denom; - pow_imp(denom, t, -p, mpl::false_()); + pow_imp(denom, t, static_cast(-p), mpl::false_()); eval_divide(result, temp, denom); return; } - pow_imp(result, t, p, mpl::false_()); + pow_imp(result, t, static_cast(p), mpl::false_()); } } // namespace detail @@ -166,7 +174,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) template void eval_exp(T& result, const T& x) { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The ldexp function is only valid for floating point types."); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The exp function is only valid for floating point types."); if(&x == &result) { T temp; @@ -251,7 +259,7 @@ void eval_exp(T& result, const T& x) } // Check for pure-integer arguments which can be either signed or unsigned. - long long ll; + boost::intmax_t ll; eval_trunc(exp_series, x); eval_convert_to(&ll, exp_series); if(x.compare(ll) == 0) @@ -268,34 +276,25 @@ void eval_exp(T& result, const T& x) // implemented as a hypergeometric function, |r| is bounded by // ln2 / p2. For small arguments, no scaling is done. - const bool b_scale = (xx.compare(float_type(1e-4)) > 0); - // Compute the exponential series of the (possibly) scaled argument. - if(b_scale) - { - eval_divide(result, xx, get_constant_ln2()); - exp_type n; - eval_convert_to(&n, result); + eval_divide(result, xx, get_constant_ln2()); + exp_type n; + eval_convert_to(&n, result); - // The scaling is 2^11 = 2048. - static const si_type p2 = static_cast(si_type(1) << 11); + // The scaling is 2^11 = 2048. + static const si_type p2 = static_cast(si_type(1) << 11); - eval_multiply(exp_series, get_constant_ln2(), static_cast(n)); - eval_subtract(exp_series, xx); - eval_divide(exp_series, p2); - exp_series.negate(); - hyp0F0(result, exp_series); + eval_multiply(exp_series, get_constant_ln2(), static_cast(n)); + eval_subtract(exp_series, xx); + eval_divide(exp_series, p2); + exp_series.negate(); + hyp0F0(result, exp_series); - detail::pow_imp(exp_series, result, p2, mpl::true_()); - result = ui_type(1); - eval_ldexp(result, result, n); - eval_multiply(exp_series, result); - } - else - { - hyp0F0(exp_series, xx); - } + detail::pow_imp(exp_series, result, p2, mpl::true_()); + result = ui_type(1); + eval_ldexp(result, result, n); + eval_multiply(exp_series, result); if(isneg) eval_divide(result, ui_type(1), exp_series); @@ -313,14 +312,6 @@ void eval_log(T& result, const T& arg) // then let y = x - 1 and compute: // log(x) = log(2) * n + log1p(1 + y) // - if(&arg == &result) - { - T temp; - eval_log(temp, arg); - result = temp; - return; - } - typedef typename boost::multiprecision::detail::canonical::type si_type; typedef typename boost::multiprecision::detail::canonical::type ui_type; typedef typename T::exponent_type exp_type; @@ -394,7 +385,7 @@ const T& get_constant_log10() template void eval_log10(T& result, const T& arg) { - BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The fabs function is only valid for floating point types."); + BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_floating_point, "The log10 function is only valid for floating point types."); eval_log(result, arg); eval_divide(result, get_constant_log10()); } @@ -444,21 +435,9 @@ inline void eval_pow(T& result, const T& x, const T& a) return; } - long long an; - eval_convert_to(&an, a); - const bool bo_a_isint = a.compare(an) == 0; - - if((eval_get_sign(x) < 0) && !bo_a_isint) - { - result = std::numeric_limits >::quiet_NaN().backend(); - } - - T t; - T da(a); - eval_subtract(da, an); - if(a.compare(si_type(-1)) < 0) { + T t, da; t = a; t.negate(); eval_pow(da, x, t); @@ -466,15 +445,34 @@ inline void eval_pow(T& result, const T& x, const T& a) return; } - eval_subtract(da, a, an); - - if(bo_a_isint) + bool bo_a_isint = false; + boost::intmax_t an; + T fa; + try { - detail::pow_imp(result, x, an, mpl::true_()); - return; + eval_convert_to(&an, a); + if(a.compare(an) == 0) + { + detail::pow_imp(result, x, an, mpl::true_()); + return; + } + } + catch(const std::exception&) + { + // conversion failed, just fall through, value is not an integer. + an = (std::numeric_limits::max)(); } - if((eval_get_sign(x) > 0) && (x.compare(fp_type(0.5)) >= 0) && (x.compare(fp_type(0.9)) < 0)) + if((eval_get_sign(x) < 0) && !bo_a_isint) + { + result = std::numeric_limits >::quiet_NaN().backend(); + } + + T t, da; + + eval_subtract(da, a, an); + + if((x.compare(fp_type(0.5)) >= 0) && (x.compare(fp_type(0.9)) < 0)) { if(a.compare(fp_type(1e-5f)) <= 0) { @@ -595,7 +593,11 @@ namespace detail{ if(p_sinh) *p_sinh = x; if(p_cosh) + { *p_cosh = x; + if(eval_get_sign(x) < 0) + p_cosh->negate(); + } return; case FP_ZERO: if(p_sinh) @@ -606,12 +608,11 @@ namespace detail{ default: ; } - T e_px, e_mx; - - bool small_sinh = eval_get_sign(x) < 0 ? e_px.compare(fp_type(-0.5)) > 0 : e_px.compare(fp_type(0.5)) < 0; + bool small_sinh = eval_get_sign(x) < 0 ? x.compare(fp_type(-0.5)) > 0 : x.compare(fp_type(0.5)) < 0; if(p_cosh || !small_sinh) { + T e_px, e_mx; eval_exp(e_px, x); eval_divide(e_mx, ui_type(1), e_px); @@ -624,13 +625,13 @@ namespace detail{ else { eval_subtract(*p_sinh, e_px, e_mx); - eval_divide(*p_sinh, ui_type(2)); + eval_ldexp(*p_sinh, *p_sinh, -1); } } if(p_cosh) { eval_add(*p_cosh, e_px, e_mx); - eval_divide(*p_cosh, ui_type(2)); + eval_ldexp(*p_cosh, *p_cosh, -1); } } else diff --git a/include/boost/multiprecision/detail/generic_interconvert.hpp b/include/boost/multiprecision/detail/generic_interconvert.hpp index caf83869..fe837873 100644 --- a/include/boost/multiprecision/detail/generic_interconvert.hpp +++ b/include/boost/multiprecision/detail/generic_interconvert.hpp @@ -159,7 +159,7 @@ void generic_interconvert(To& to, const From& from, const mpl::int_::digits - 1; + static const int shift = std::numeric_limits::digits - 1; while(!eval_is_zero(f)) { @@ -168,7 +168,7 @@ void generic_interconvert(To& to, const From& from, const mpl::int_::is_specialized); BOOST_STATIC_ASSERT((std::numeric_limits::radix == 2) || (std::numeric_limits::radix == 10)); + // If we really have so many digits that this fails, then we're probably going to hit other problems anyway: + BOOST_STATIC_ASSERT(LONG_MAX / 1000 > (std::numeric_limits::digits + 1)); static const long value = std::numeric_limits::radix == 10 ? (((std::numeric_limits::digits + 1) * 1000L) / 301L) : std::numeric_limits::digits; }; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 31c52fc0..30a59b3b 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -522,7 +522,6 @@ run test_round.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - [ check-target-builds ../config//has_mpfr : : no ] : test_round_cpp_dec_float ; run test_fpclassify.cpp @@ -555,6 +554,29 @@ run test_fpclassify.cpp TEST_CPP_DEC_FLOAT : test_fpclassify_cpp_dec_float ; +run test_constants.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : test_constants_mpf50 ; + +run test_constants.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_constants_mpfr_50 ; + +run test_constants.cpp + : # command line + : # input files + : # requirements + TEST_CPP_DEC_FLOAT + : test_constants_cpp_dec_float ; + run test_test.cpp ; diff --git a/test/math/log1p_expm1_test.cpp b/test/math/log1p_expm1_test.cpp index 87a69406..9b9867aa 100644 --- a/test/math/log1p_expm1_test.cpp +++ b/test/math/log1p_expm1_test.cpp @@ -35,7 +35,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/powm1_sqrtp1m1_test.cpp b/test/math/powm1_sqrtp1m1_test.cpp index c84ee860..56bdd600 100644 --- a/test/math/powm1_sqrtp1m1_test.cpp +++ b/test/math/powm1_sqrtp1m1_test.cpp @@ -35,7 +35,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index 0b59d0b9..e4db9ff8 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -35,7 +35,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index f5b70f1c..951a6821 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -35,7 +35,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp index 6d3a4816..044fc49a 100644 --- a/test/math/test_bessel_k.cpp +++ b/test/math/test_bessel_k.cpp @@ -36,7 +36,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index 68a94851..43cd9501 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -35,7 +35,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index 73e33f04..cf363b4e 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -35,7 +35,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index 291361e3..3b6882d9 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -35,7 +35,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp index 46efabee..e0a9e3c8 100644 --- a/test/math/test_carlson.cpp +++ b/test/math/test_carlson.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_cbrt.cpp b/test/math/test_cbrt.cpp index ca647216..e7bee00c 100644 --- a/test/math/test_cbrt.cpp +++ b/test/math/test_cbrt.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp index 7767b46c..8da4bd53 100644 --- a/test/math/test_digamma.cpp +++ b/test/math/test_digamma.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp index 7ba717cf..356653d0 100644 --- a/test/math/test_ellint_1.cpp +++ b/test/math/test_ellint_1.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp index 534cbd84..a8cbfca5 100644 --- a/test/math/test_ellint_2.cpp +++ b/test/math/test_ellint_2.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp index 95fe73e1..c57ddfec 100644 --- a/test/math/test_ellint_3.cpp +++ b/test/math/test_ellint_3.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp index d2fda9fb..b185c3cd 100644 --- a/test/math/test_erf.cpp +++ b/test/math/test_erf.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_expint.cpp b/test/math/test_expint.cpp index fbacc55b..71961792 100644 --- a/test/math/test_expint.cpp +++ b/test/math/test_expint.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index 42c2cb02..c29d6aa6 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_hermite.cpp b/test/math/test_hermite.cpp index 02d88f1c..be956ce1 100644 --- a/test/math/test_hermite.cpp +++ b/test/math/test_hermite.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index 167b8f31..15ca1bc6 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ibeta_2.cpp b/test/math/test_ibeta_2.cpp index d8e3f09a..c7cb04fc 100644 --- a/test/math/test_ibeta_2.cpp +++ b/test/math/test_ibeta_2.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ibeta_3.cpp b/test/math/test_ibeta_3.cpp index 101cca1b..77b69d78 100644 --- a/test/math/test_ibeta_3.cpp +++ b/test/math/test_ibeta_3.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ibeta_4.cpp b/test/math/test_ibeta_4.cpp index 9f78fef9..5f3246fd 100644 --- a/test/math/test_ibeta_4.cpp +++ b/test/math/test_ibeta_4.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index fd2b3e5f..21a3ea35 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index eb91e02d..f0149957 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_igamma.cpp b/test/math/test_igamma.cpp index 517b0e81..66aa9011 100644 --- a/test/math/test_igamma.cpp +++ b/test/math/test_igamma.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index 010c3762..e7f8775a 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_igamma_inva.cpp b/test/math/test_igamma_inva.cpp index f380c3b3..026694c8 100644 --- a/test/math/test_igamma_inva.cpp +++ b/test/math/test_igamma_inva.cpp @@ -31,7 +31,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_laguerre.cpp b/test/math/test_laguerre.cpp index aabb836d..f3cded2a 100644 --- a/test/math/test_laguerre.cpp +++ b/test/math/test_laguerre.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp index 25a1f7a8..e392365f 100644 --- a/test/math/test_legendre.cpp +++ b/test/math/test_legendre.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp index 1084d843..982546bd 100644 --- a/test/math/test_tgamma_ratio.cpp +++ b/test/math/test_tgamma_ratio.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index bc3d773a..4484a7d3 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -30,7 +30,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/mp_number_concept_check.cpp b/test/mp_number_concept_check.cpp index 3e051ff5..45831f29 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/mp_number_concept_check.cpp @@ -47,7 +47,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) #include diff --git a/test/test_acos.cpp b/test/test_acos.cpp index a827fc48..6e81985f 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 00b70f4f..afd0784c 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -45,7 +45,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 7adb1afa..61ab5d12 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 2061afa9..de426780 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_constants.cpp b/test/test_constants.cpp new file mode 100644 index 00000000..5e9ad8e7 --- /dev/null +++ b/test/test_constants.cpp @@ -0,0 +1,198 @@ +// Copyright John Maddock 2012. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#if !defined(TEST_MPF_50) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) +# define TEST_MPF_50 +# define TEST_CPP_DEC_FLOAT +# define TEST_MPFR_50 + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_CPP_DEC_FLOAT +#include +#endif + +#include "test.hpp" + +static const char* ln2 = +"0.693147180559945309417232121458176568075500134360255254120680009493393621969694" +"71560586332699641868754200148102057068573368552023575813055703267075163507596193" +"07275708283714351903070386238916734711233501153644979552391204751726815749320651" +"55524734139525882950453007095326366642654104239157814952043740430385500801944170" +"64167151864471283996817178454695702627163106454615025720740248163777338963855069" +"52606683411372738737229289564935470257626520988596932019650585547647033067936544" +"32547632744951250406069438147104689946506220167720424524529612687946546193165174" +"68139267250410380254625965686914419287160829380317271436778265487756648508567407" +"76484514644399404614226031930967354025744460703080960850474866385231381816767514" +"38667476647890881437141985494231519973548803751658612753529166100071053558249879" +"41472950929311389715599820565439287170007218085761025236889213244971389320378439" +"35308877482597017155910708823683627589842589185353024363421436706118923678919237" +"23146723217205340164925687274778234453534764811494186423867767744060695626573796" +"00867076257199184734022651462837904883062033061144630073719489002743643965002580" +"93651944304119115060809487930678651588709006052034684297361938412896525565396860" +"22194122924207574321757489097706752687115817051137009158942665478595964890653058" +"46025866838294002283300538207400567705304678700184162404418833232798386349001563" +"12188956065055315127219939833203075140842609147900126516824344389357247278820548" +"62715527418772430024897945401961872339808608316648114909306675193393128904316413" +"70681397776498176974868903887789991296503619270710889264105230924783917373501229" +"84242049956893599220660220465494151061391878857442455775102068370308666194808964" +"12186807790208181588580001688115973056186676199187395200766719214592236720602539" +"59543654165531129517598994005600036651356756905124592682574394648316833262490180" +"38242408242314523061409638057007025513877026817851630690255137032340538021450190" +"15374029509942262995779647427138157363801729873940704242179972266962979939312706" +"93574724049338653087975872169964512944649188377115670167859880498183889678413493" +"83140140731664727653276359192335112333893387095132090592721854713289754707978913" +"84445466676192702885533423429899321803769154973340267546758873236778342916191810" +"43011609169526554785973289176354555674286387746398710191243175425588830120677921" +"02803412068797591430812833072303008834947057924965910058600123415617574132724659" +"43068435465211135021544341539955381856522750221424566440006276183303206472725721" +"97515290827856842132079598863896727711955221881904660395700977470651261950527893" +"22960889314056254334425523920620303439417773579455921259019925591148440242390125" +"54259003129537051922061506434583787873002035414421785758013236451660709914383145" +"00498589668857722214865288216941812704886075897220321666312837832915676307498729" +"85746389282693735098407780493950049339987626475507031622161390348452994249172483" +"73406136622638349368111684167056925214751383930638455371862687797328895558871634" +"429756244755392366369488877823890174981027"; +static const char* pi = +"3.141592653589793238462643383279502884197169399375105820974944592307816406286208" +"99862803482534211706798214808651328230664709384460955058223172535940812848111745" +"02841027019385211055596446229489549303819644288109756659334461284756482337867831" +"65271201909145648566923460348610454326648213393607260249141273724587006606315588" +"17488152092096282925409171536436789259036001133053054882046652138414695194151160" +"94330572703657595919530921861173819326117931051185480744623799627495673518857527" +"24891227938183011949129833673362440656643086021394946395224737190702179860943702" +"77053921717629317675238467481846766940513200056812714526356082778577134275778960" +"91736371787214684409012249534301465495853710507922796892589235420199561121290219" +"60864034418159813629774771309960518707211349999998372978049951059731732816096318" +"59502445945534690830264252230825334468503526193118817101000313783875288658753320" +"83814206171776691473035982534904287554687311595628638823537875937519577818577805" +"32171226806613001927876611195909216420198938095257201065485863278865936153381827" +"96823030195203530185296899577362259941389124972177528347913151557485724245415069" +"59508295331168617278558890750983817546374649393192550604009277016711390098488240" +"12858361603563707660104710181942955596198946767837449448255379774726847104047534" +"64620804668425906949129331367702898915210475216205696602405803815019351125338243" +"00355876402474964732639141992726042699227967823547816360093417216412199245863150" +"30286182974555706749838505494588586926995690927210797509302955321165344987202755" +"96023648066549911988183479775356636980742654252786255181841757467289097777279380" +"00816470600161452491921732172147723501414419735685481613611573525521334757418494" +"68438523323907394143334547762416862518983569485562099219222184272550254256887671" +"79049460165346680498862723279178608578438382796797668145410095388378636095068006" +"42251252051173929848960841284886269456042419652850222106611863067442786220391949" +"45047123713786960956364371917287467764657573962413890865832645995813390478027590" +"09946576407895126946839835259570982582262052248940772671947826848260147699090264" +"01363944374553050682034962524517493996514314298091906592509372216964615157098583" +"87410597885959772975498930161753928468138268683868942774155991855925245953959431" +"04997252468084598727364469584865383673622262609912460805124388439045124413654976" +"27807977156914359977001296160894416948685558484063534220722258284886481584560285" +"06016842739452267467678895252138522549954666727823986456596116354886230577456498" +"03559363456817432411251507606947945109659609402522887971089314566913686722874894" +"05601015033086179286809208747609178249385890097149096759852613655497818931297848" +"21682998948722658804857564014270477555132379641451523746234364542858444795265867" +"82105114135473573952311342716610213596953623144295248493718711014576540359027993" +"44037420073105785390621983874478084784896833214457138687519435064302184531910484" +"81005370614680674919278191197939952061419663428754440643745123718192179998391015" +"91956181467514269123974894090718649423196"; +static const char* e = +"2.718281828459045235360287471352662497757247093699959574966967627724076630353547" +"59457138217852516642742746639193200305992181741359662904357290033429526059563073" +"81323286279434907632338298807531952510190115738341879307021540891499348841675092" +"44761460668082264800168477411853742345442437107539077744992069551702761838606261" +"33138458300075204493382656029760673711320070932870912744374704723069697720931014" +"16928368190255151086574637721112523897844250569536967707854499699679468644549059" +"87931636889230098793127736178215424999229576351482208269895193668033182528869398" +"49646510582093923982948879332036250944311730123819706841614039701983767932068328" +"23764648042953118023287825098194558153017567173613320698112509961818815930416903" +"51598888519345807273866738589422879228499892086805825749279610484198444363463244" +"96848756023362482704197862320900216099023530436994184914631409343173814364054625" +"31520961836908887070167683964243781405927145635490613031072085103837505101157477" +"04171898610687396965521267154688957035035402123407849819334321068170121005627880" +"23519303322474501585390473041995777709350366041699732972508868769664035557071622" +"68447162560798826517871341951246652010305921236677194325278675398558944896970964" +"09754591856956380236370162112047742722836489613422516445078182442352948636372141" +"74023889344124796357437026375529444833799801612549227850925778256209262264832627" +"79333865664816277251640191059004916449982893150566047258027786318641551956532442" +"58698294695930801915298721172556347546396447910145904090586298496791287406870504" +"89585867174798546677575732056812884592054133405392200011378630094556068816674001" +"69842055804033637953764520304024322566135278369511778838638744396625322498506549" +"95886234281899707733276171783928034946501434558897071942586398772754710962953741" +"52111513683506275260232648472870392076431005958411661205452970302364725492966693" +"81151373227536450988890313602057248176585118063036442812314965507047510254465011" +"72721155519486685080036853228183152196003735625279449515828418829478761085263981" +"39559900673764829224437528718462457803619298197139914756448826260390338144182326" +"25150974827987779964373089970388867782271383605772978824125611907176639465070633" +"04527954661855096666185664709711344474016070462621568071748187784437143698821855" +"96709591025968620023537185887485696522000503117343920732113908032936344797273559" +"55277349071783793421637012050054513263835440001863239914907054797780566978533580" +"48966906295119432473099587655236812859041383241160722602998330535370876138939639" +"17795745401613722361878936526053815584158718692553860616477983402543512843961294" +"60352913325942794904337299085731580290958631382683291477116396337092400316894586" +"36060645845925126994655724839186564209752685082307544254599376917041977780085362" +"73094171016343490769642372229435236612557250881477922315197477806056967253801718" +"07763603462459278778465850656050780844211529697521890874019660906651803516501792" +"50461950136658543663271254963990854914420001457476081930221206602433009641270489" +"43903971771951806990869986066365832322787"; + +template +inline bool is_mpfr(const T&) +{ + return false; +} +#if defined(TEST_MPFR_50) +template +inline bool is_mpfr(const boost::multiprecision::mp_number >&) +{ + return true; +} +#endif + +template +void test() +{ + typedef typename T::backend_type backend_type; + T num, expect; + num.backend() = boost::multiprecision::default_ops::get_constant_pi(); + expect = pi; + BOOST_CHECK_CLOSE_FRACTION(num, expect, std::numeric_limits::epsilon() * (is_mpfr(num) ? 1200 : 2)); + num.backend() = boost::multiprecision::default_ops::get_constant_ln2(); + expect = ln2; + BOOST_CHECK_CLOSE_FRACTION(num, expect, std::numeric_limits::epsilon() * (is_mpfr(num) ? 30 : 1)); + num.backend() = boost::multiprecision::default_ops::get_constant_e(); + expect = e; + BOOST_CHECK_CLOSE_FRACTION(num, expect, std::numeric_limits::epsilon() * (is_mpfr(num) ? 2 : 1)); +} + +int main() +{ +#ifdef TEST_MPFR_50 + test > >(); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test > >(); +#endif +#ifdef TEST_MPF_50 + test > >(); +#endif + return boost::report_errors(); +} + diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 71c0c9b3..b31528bf 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index ad609a88..ada92a21 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 6644b750..da5cceff 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp index 732a2069..063ba8a9 100644 --- a/test/test_fpclassify.cpp +++ b/test/test_fpclassify.cpp @@ -36,7 +36,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_log.cpp b/test/test_log.cpp index 084c50c2..35714bc0 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index da557a47..20ad2dad 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -36,7 +36,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 315ad995..4c55ab07 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -39,7 +39,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_round.cpp b/test/test_round.cpp index f6058668..1fb4822d 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -37,7 +37,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 06f035d1..f8ad7830 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 7f6c6320..b4fc7194 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index 3f01cbbd..da17ea4c 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 93052dd7..d4f57038 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -38,7 +38,7 @@ #include #endif #ifdef TEST_BACKEND -#include +#include #endif #ifdef TEST_CPP_DEC_FLOAT #include From 1a4e3af5c8a50c026fe13285275c5656777aaf1d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 29 Jun 2012 11:53:25 +0000 Subject: [PATCH 193/256] Fix Linux x64 errors [SVN r79165] --- include/boost/multiprecision/detail/functions/pow.hpp | 4 ++-- .../boost/multiprecision/detail/generic_interconvert.hpp | 2 +- test/Jamfile.v2 | 2 +- test/math/test_bessel_i.cpp | 2 +- test/math/test_bessel_y.cpp | 2 +- test/math/test_beta.cpp | 6 +++--- test/math/test_binomial_coeff.cpp | 2 +- test/math/test_gamma.cpp | 2 +- test/math/test_ibeta.cpp | 2 +- test/math/test_ibeta_inv_1.cpp | 2 +- test/math/test_ibeta_inv_ab_4.cpp | 2 +- test/math/test_igamma_inv.cpp | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index b7cc9e26..dbae9aac 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -259,7 +259,7 @@ void eval_exp(T& result, const T& x) } // Check for pure-integer arguments which can be either signed or unsigned. - boost::intmax_t ll; + typename boost::multiprecision::detail::canonical::type ll; eval_trunc(exp_series, x); eval_convert_to(&ll, exp_series); if(x.compare(ll) == 0) @@ -446,7 +446,7 @@ inline void eval_pow(T& result, const T& x, const T& a) } bool bo_a_isint = false; - boost::intmax_t an; + typename boost::multiprecision::detail::canonical::type an; T fa; try { diff --git a/include/boost/multiprecision/detail/generic_interconvert.hpp b/include/boost/multiprecision/detail/generic_interconvert.hpp index fe837873..adb1eea8 100644 --- a/include/boost/multiprecision/detail/generic_interconvert.hpp +++ b/include/boost/multiprecision/detail/generic_interconvert.hpp @@ -168,7 +168,7 @@ void generic_interconvert(To& to, const From& from, const mpl::int_::type ll; eval_convert_to(&ll, term); eval_add(to, ll); eval_subtract(f, term); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 30a59b3b..75686515 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -585,7 +585,7 @@ run test_float_io.cpp : # input files : # requirements TEST_CPP_DEC_FLOAT - release # Otherwise runtime is slow + #release # Otherwise runtime is slow : test_float_io_cpp_dec_float ; run test_float_io.cpp gmp diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index e4db9ff8..4e94c24a 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -63,7 +63,7 @@ void expected_results() ".*", // test type(s) ".*", // test data group ".*", // test function - 300, // Max Peek error + 500, // Max Peek error 200); // Max mean error // diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index 43cd9501..44d23126 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -100,7 +100,7 @@ void expected_results() ".*", // platform ".*mpfr_float_backend<18>.*", // test type(s) ".*", // test data group - ".*", 10000, 4000); // test function + ".*", 15000, 4000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index cf363b4e..49541cd8 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -72,7 +72,7 @@ void expected_results() ".*", // platform ".*mpfr_float_backend<18>.*", // test type(s) "Beta Function: Small.*", // test data group - "boost::math::beta", 200, 200); // test function + "boost::math::beta", 1000, 750); // test function add_expected_result( ".*", // compiler ".*", // stdlib @@ -86,14 +86,14 @@ void expected_results() ".*", // platform ".*", // test type(s) "Beta Function: Medium.*", // test data group - "boost::math::beta", 260, 200); // test function + "boost::math::beta", 1000, 750); // test function add_expected_result( ".*", // compiler ".*", // stdlib ".*", // platform ".*", // test type(s) "Beta Function: Divergent.*", // test data group - "boost::math::beta", 200, 200); // test function + "boost::math::beta", 1000, 700); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index 3b6882d9..0d9bf414 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -65,7 +65,7 @@ void expected_results() ".*", // platform ".*mpfr_float_backend<18>.*", // test type(s) ".*", // test data group - ".*", 500, 150); // test function + ".*", 750, 150); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index c29d6aa6..c7511413 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -61,7 +61,7 @@ void expected_results() ".*", // platform ".*", // test type(s) "factorials", // test data group - "boost::math::tgamma", 70, 25); // test function + "boost::math::tgamma", 140, 70); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index 15ca1bc6..dde145f8 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -64,7 +64,7 @@ void expected_results() "[^|]*", // platform ".*mpfr_float_backend<18>.*", // test type(s) "(?i).*small.*", // test data group - ".*", 400, 200); // test function + ".*", 2000, 500); // test function add_expected_result( "[^|]*", // compiler "[^|]*", // stdlib diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index 21a3ea35..2492b7ac 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -57,7 +57,7 @@ void expected_results() ".*", // platform ".*mpfr_float_backend<18>.*", // test type(s) ".*", // test data group - ".*", 20000000, 2000000); // test function + ".*", 50000000, 7000000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index f0149957..67c4c588 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -57,7 +57,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*", // test data group - ".*", 2000, 200); // test function + ".*", 10000, 1000); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index e7f8775a..3a0d76cc 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -62,7 +62,7 @@ void expected_results() ".*", // platform ".*mpfr_float_backend<18>.*", // test type(s) ".*small.*", // test data group - ".*", 30000000L, 5000000L); // test function + ".*", 30000000L, 20000000L); // test function add_expected_result( ".*", // compiler ".*", // stdlib From 2ea2ab8a2b099528a9455b60cfff2a1e4f8db541 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 30 Jun 2012 16:48:17 +0000 Subject: [PATCH 194/256] Add better rvalue reference support to the non-expression template operators. Add numeric_limits member definitions. [SVN r79187] --- .../boost/multiprecision/cpp_dec_float.hpp | 113 ++++-- include/boost/multiprecision/cpp_int.hpp | 132 +++---- .../boost/multiprecision/detail/no_et_ops.hpp | 330 ++++++++++++++++++ include/boost/multiprecision/gmp.hpp | 147 ++++++++ include/boost/multiprecision/mpfr.hpp | 98 ++++++ .../boost/multiprecision/rational_adapter.hpp | 14 +- include/boost/multiprecision/tommath.hpp | 48 +++ performance/float_backend.hpp | 36 +- 8 files changed, 800 insertions(+), 118 deletions(-) diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index d276e12e..5b6233fa 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -2853,40 +2853,89 @@ namespace std class numeric_limits, ExpressionTemplates> > { public: - static const bool is_specialized = true; - static const bool is_signed = true; - static const bool is_integer = false; - static const bool is_exact = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - static const bool is_iec559 = false; - static const int digits = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; - static const int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; - static const int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_total_digits10; - static const boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. - static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. - static const boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. - static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp10; // Type differs from int. - static const int radix = boost::multiprecision::cpp_dec_float::cpp_dec_float_radix; - static const std::float_round_style round_style = std::round_to_nearest; - static const bool has_infinity = true; - static const bool has_quiet_NaN = true; - static const bool has_signaling_NaN = false; - static const std::float_denorm_style has_denorm = std::denorm_absent; - static const bool has_denorm_loss = false; - static const bool traps = false; - static const bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + BOOST_STATIC_CONSTEXPR bool is_signed = true; + BOOST_STATIC_CONSTEXPR bool is_integer = false; + BOOST_STATIC_CONSTEXPR bool is_exact = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = true; + BOOST_STATIC_CONSTEXPR bool is_modulo = false; + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR int digits = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; + BOOST_STATIC_CONSTEXPR int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; + BOOST_STATIC_CONSTEXPR int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_total_digits10; + BOOST_STATIC_CONSTEXPR boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. + BOOST_STATIC_CONSTEXPR boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. + BOOST_STATIC_CONSTEXPR boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. + BOOST_STATIC_CONSTEXPR boost::int64_t max_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp10; // Type differs from int. + BOOST_STATIC_CONSTEXPR int radix = boost::multiprecision::cpp_dec_float::cpp_dec_float_radix; + BOOST_STATIC_CONSTEXPR std::float_round_style round_style = std::round_to_nearest; + BOOST_STATIC_CONSTEXPR bool has_infinity = true; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = true; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR std::float_denorm_style has_denorm = std::denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - static const boost::multiprecision::mp_number, ExpressionTemplates> (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } - static const boost::multiprecision::mp_number, ExpressionTemplates> (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } - static const boost::multiprecision::mp_number, ExpressionTemplates> lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } - static const boost::multiprecision::mp_number, ExpressionTemplates> epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } - static const boost::multiprecision::mp_number, ExpressionTemplates> round_error (void) { return 0.5L; } - static const boost::multiprecision::mp_number, ExpressionTemplates> infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } - static const boost::multiprecision::mp_number, ExpressionTemplates> quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } - static const boost::multiprecision::mp_number, ExpressionTemplates> signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } - static const boost::multiprecision::mp_number, ExpressionTemplates> denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> round_error (void) { return 0.5L; } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } }; + +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif } namespace boost{ namespace math{ diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index c6e4864d..ed6a318d 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2362,49 +2362,49 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -const int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -const int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -const int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -const bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -const bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -const bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -const int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -const int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -const int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -const int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -const int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -const bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -const bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -const bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -const float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -const bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -const bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -const bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -const bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -const bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -const bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -const float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif @@ -2491,49 +2491,49 @@ const typename numeric_limits -const int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -const int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -const int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -const bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -const bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -const bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -const int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -const int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -const int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -const int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -const int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -const bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -const bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -const bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -const float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -const bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -const bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -const bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -const bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -const bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -const bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -const float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif @@ -2619,49 +2619,49 @@ const typename numeric_limits -const int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -const int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -const int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -const bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -const bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -const bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -const int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -const int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -const int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -const int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -const int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -const bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -const bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -const bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -const float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -const bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -const bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -const bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -const bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -const bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -const bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -const float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index 3710c644..c57d7b00 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -298,6 +298,336 @@ inline typename enable_if, mp_number >::type return result; } +#ifndef BOOST_NO_RVALUE_REFERENCES +// +// If we have rvalue references go all over again with rvalue ref overloads and move semantics: +// +template +inline mp_number&& operator - (mp_number&& v) +{ + v.backend().negate(); + return static_cast&&>(v); +} +template +inline mp_number&& operator ~ (mp_number&& v) +{ + eval_complement(v.backend(), v.backend()); + return static_cast&&>(v); +} +// +// Addition: +// +template +inline mp_number&& operator + (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_add; + eval_add(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline mp_number&& operator + (const mp_number& a, mp_number&& b) +{ + using default_ops::eval_add; + eval_add(b.backend(), a.backend()); + return static_cast&&>(b); +} +template +inline mp_number&& operator + (mp_number&& a, mp_number&& b) +{ + using default_ops::eval_add; + eval_add(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator + (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_add; + eval_add(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator + (const V& a, mp_number&& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_add; + eval_add(b.backend(), static_cast(a)); + return static_cast&&>(b); +} +// +// Subtraction: +// +template +inline mp_number&& operator - (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_subtract; + eval_subtract(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline mp_number&& operator - (const mp_number& a, mp_number&& b) +{ + using default_ops::eval_subtract; + eval_subtract(b.backend(), a.backend()); + b.backend().negate(); + return static_cast&&>(b); +} +template +inline mp_number&& operator - (mp_number&& a, mp_number&& b) +{ + using default_ops::eval_subtract; + eval_subtract(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator - (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_subtract; + eval_subtract(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator - (const V& a, mp_number&& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_subtract; + eval_subtract(b.backend(), static_cast(a)); + b.backend().negate(); + return static_cast&&>(b); +} +// +// Multiply: +// +template +inline mp_number&& operator * (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_multiply; + eval_multiply(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline mp_number&& operator * (const mp_number& a, mp_number&& b) +{ + using default_ops::eval_multiply; + eval_multiply(b.backend(), a.backend()); + return static_cast&&>(b); +} +template +inline mp_number&& operator * (mp_number&& a, mp_number&& b) +{ + using default_ops::eval_multiply; + eval_multiply(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator * (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_multiply; + eval_multiply(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator * (const V& a, mp_number&& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_multiply; + eval_multiply(b.backend(), static_cast(a)); + return static_cast&&>(b); +} +// +// divide: +// +template +inline mp_number&& operator / (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_divide; + eval_divide(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator / (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_divide; + eval_divide(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +// +// modulus: +// +template +inline mp_number&& operator % (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_modulus; + eval_modulus(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator % (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_modulus; + eval_modulus(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +// +// Bitwise or: +// +template +inline mp_number&& operator | (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_bitwise_or; + eval_bitwise_or(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline mp_number&& operator | (const mp_number& a, mp_number&& b) +{ + using default_ops::eval_bitwise_or; + eval_bitwise_or(b.backend(), a.backend()); + return static_cast&&>(b); +} +template +inline mp_number&& operator | (mp_number&& a, mp_number&& b) +{ + using default_ops::eval_bitwise_or; + eval_bitwise_or(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator | (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_bitwise_or; + eval_bitwise_or(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator | (const V& a, mp_number&& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_bitwise_or; + eval_bitwise_or(b.backend(), static_cast(a)); + return static_cast&&>(b); +} +// +// Bitwise xor: +// +template +inline mp_number&& operator ^ (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline mp_number&& operator ^ (const mp_number& a, mp_number&& b) +{ + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(b.backend(), a.backend()); + return static_cast&&>(b); +} +template +inline mp_number&& operator ^ (mp_number&& a, mp_number&& b) +{ + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator ^ (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator ^ (const V& a, mp_number&& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_bitwise_xor; + eval_bitwise_xor(b.backend(), static_cast(a)); + return static_cast&&>(b); +} +// +// Bitwise and: +// +template +inline mp_number&& operator & (mp_number&& a, const mp_number& b) +{ + using default_ops::eval_bitwise_and; + eval_bitwise_and(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline mp_number&& operator & (const mp_number& a, mp_number&& b) +{ + using default_ops::eval_bitwise_and; + eval_bitwise_and(b.backend(), a.backend()); + return static_cast&&>(b); +} +template +inline mp_number&& operator & (mp_number&& a, mp_number&& b) +{ + using default_ops::eval_bitwise_and; + eval_bitwise_and(a.backend(), b.backend()); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator & (mp_number&& a, const V& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_bitwise_and; + eval_bitwise_and(a.backend(), static_cast(b)); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator & (const V& a, mp_number&& b) +{ + typedef typename detail::canonical::type canonical_type; + using default_ops::eval_bitwise_and; + eval_bitwise_and(b.backend(), static_cast(a)); + return static_cast&&>(b); +} +// +// shifts: +// +template +inline typename enable_if, mp_number&& >::type + operator << (mp_number&& a, const I& b) +{ + using default_ops::eval_left_shift; + eval_left_shift(a.backend(), b); + return static_cast&&>(a); +} +template +inline typename enable_if, mp_number&& >::type + operator >> (mp_number&& a, const I& b) +{ + using default_ops::eval_right_shift; + eval_right_shift(a.backend(), b); + return static_cast&&>(a); +} + +#endif + }} // namespaces #endif // BOOST_MP_NO_ET_OPS_HPP diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index fef98b76..396ba558 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1993,6 +1993,55 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif + template class numeric_limits > { @@ -2042,6 +2091,55 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; + +#endif + template class numeric_limits > { @@ -2092,6 +2190,55 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; + +#endif + #ifdef BOOST_MSVC #pragma warning(pop) #endif diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 1ea8f782..98f82825 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1174,6 +1174,56 @@ private: template const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif + + template class numeric_limits, ExpressionTemplates> > { @@ -1213,5 +1263,53 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif } // namespace std #endif diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 0aa4ec70..c6a53aa7 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -197,8 +197,8 @@ struct component_type > namespace std{ -template -class numeric_limits > > : public std::numeric_limits > +template +class numeric_limits, ExpressionTemplates> > : public std::numeric_limits > { typedef std::numeric_limits > base_type; typedef boost::multiprecision::mp_number > number_type; @@ -216,6 +216,16 @@ public: BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); } }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; + +#endif + + } #endif diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 6eaa6c4f..e67cf8fe 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -540,6 +540,54 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; + +#endif } #endif diff --git a/performance/float_backend.hpp b/performance/float_backend.hpp index 59b88c2f..8b2f2c9b 100644 --- a/performance/float_backend.hpp +++ b/performance/float_backend.hpp @@ -404,15 +404,15 @@ class numeric_limits base_type; typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); } }; template<> @@ -421,15 +421,15 @@ class numeric_limits : public std::numeric_ typedef std::numeric_limits base_type; typedef boost::math::concepts::real_concept number_type; public: - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_MP_NOEXCEPT { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_MP_NOEXCEPT { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_MP_NOEXCEPT { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_MP_NOEXCEPT { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_MP_NOEXCEPT { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_MP_NOEXCEPT { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_MP_NOEXCEPT { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_MP_NOEXCEPT { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_MP_NOEXCEPT { return base_type::denorm_min(); } + BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } + BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } + BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_NOEXCEPT { return -(max)(); } + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT { return base_type::epsilon(); } + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT { return epsilon() / 2; } + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT { return base_type::infinity(); } + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT { return base_type::quiet_NaN(); } + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT { return base_type::signaling_NaN(); } + BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); } }; } From 26905dc5ead68a845e67fa9fbe84855882051320 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 2 Jul 2012 08:08:28 +0000 Subject: [PATCH 195/256] Fix non ET operators to return by value (not rvalue refs as that's unsafe - thanks to Howard Hinnant for the test case). Fix move constructors to actually move! Add move test case. Add better move support throughout the lib. [SVN r79224] --- include/boost/multiprecision/cpp_int.hpp | 2 +- .../multiprecision/detail/default_ops.hpp | 68 ++--- .../multiprecision/detail/mp_number_base.hpp | 13 +- .../boost/multiprecision/detail/no_et_ops.hpp | 142 ++++++----- include/boost/multiprecision/gmp.hpp | 26 +- include/boost/multiprecision/mp_number.hpp | 54 ++-- include/boost/multiprecision/mpfr.hpp | 9 +- include/boost/multiprecision/tommath.hpp | 10 +- test/Jamfile.v2 | 31 +++ test/test_move.cpp | 241 ++++++++++++++++++ 10 files changed, 458 insertions(+), 138 deletions(-) create mode 100644 test/test_move.cpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index ed6a318d..ca80fd2f 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -411,7 +411,7 @@ public: cpp_int_backend(){} cpp_int_backend(const cpp_int_backend& o) : base_type(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_backend(cpp_int_backend&& o) : base_type(o) {} + cpp_int_backend(cpp_int_backend&& o) : base_type(static_cast(o)) {} #endif cpp_int_backend& operator = (const cpp_int_backend& o) { diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 7462bcba..74c245cb 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -111,10 +111,10 @@ inline typename enable_if, is_convertible -inline bool is_same_object(const T& u, const T&v) +inline bool is_same_object(const T& u, const T&v) BOOST_NOEXCEPT { return &u == &v; } template -inline bool is_same_object(const T&, const U&) +BOOST_CONSTEXPR inline bool is_same_object(const T&, const U&) BOOST_NOEXCEPT { return false; } // @@ -688,7 +688,7 @@ template inline typename detail::mp_exp::result_type trunc(const detail::mp_exp& v, const Policy& pol) { typedef typename detail::mp_exp::result_type number_type; - return trunc(number_type(v), pol); + return BOOST_MP_MOVE(trunc(number_type(v), pol)); } template @@ -697,7 +697,7 @@ inline mp_number trunc(const mp_number result; eval_trunc(result.backend(), v.backend()); - return result; + return BOOST_MP_MOVE(result); } template @@ -787,7 +787,7 @@ template inline typename detail::mp_exp::result_type round(const detail::mp_exp& v, const Policy& pol) { typedef typename detail::mp_exp::result_type number_type; - return round(static_cast(v), pol); + return BOOST_MP_MOVE(round(static_cast(v), pol)); } template inline mp_number round(const mp_number& v, const Policy&) @@ -795,7 +795,7 @@ inline mp_number round(const mp_number result; eval_round(result.backend(), v.backend()); - return result; + return BOOST_MP_MOVE(result); } template @@ -919,9 +919,9 @@ inline typename enable_if_c::value == category,\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number > \ + , mp_number > \ >::type \ -func(const mp_number& arg)\ +func(const mp_number& arg)\ {\ return detail::mp_exp<\ detail::function\ @@ -941,7 +941,7 @@ func(const mp_number& arg)\ mp_number result;\ using default_ops::BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend());\ - return result;\ + return BOOST_MP_MOVE(result);\ } #define BINARY_OP_FUNCTOR(func, category)\ @@ -974,10 +974,10 @@ inline typename enable_if_c::value == category,\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ - , mp_number > \ + , mp_number \ + , mp_number > \ >::type \ -func(const mp_number& arg, const mp_number& a)\ +func(const mp_number& arg, const mp_number& a)\ {\ return detail::mp_exp<\ detail::function\ @@ -996,10 +996,10 @@ inline typename enable_if_c<\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , mp_number \ , detail::mp_exp > \ >::type \ -func(const mp_number& arg, const detail::mp_exp& a)\ +func(const mp_number& arg, const detail::mp_exp& a)\ {\ return detail::mp_exp<\ detail::function\ @@ -1019,9 +1019,9 @@ inline typename enable_if_c<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , detail::mp_exp \ - , mp_number > \ + , mp_number > \ >::type \ -func(const detail::mp_exp& arg, const mp_number& a)\ +func(const detail::mp_exp& arg, const mp_number& a)\ {\ return detail::mp_exp<\ detail::function\ @@ -1062,11 +1062,11 @@ inline typename enable_if_c<\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , mp_number \ , Arithmetic\ > \ >::type \ -func(const mp_number& arg, const Arithmetic& a)\ +func(const mp_number& arg, const Arithmetic& a)\ {\ return detail::mp_exp<\ detail::function\ @@ -1109,10 +1109,10 @@ inline typename enable_if_c<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , Arithmetic \ - , mp_number \ + , mp_number \ > \ >::type \ -func(const Arithmetic& arg, const mp_number& a)\ +func(const Arithmetic& arg, const mp_number& a)\ {\ return detail::mp_exp<\ detail::function\ @@ -1156,7 +1156,7 @@ func(const mp_number& arg, const mp_number& a)\ mp_number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a.backend());\ - return result;\ + return BOOST_MP_MOVE(result);\ }\ template \ inline typename enable_if_c<\ @@ -1169,7 +1169,7 @@ func(const mp_number& arg, const Arithmetic& a)\ mp_number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), static_cast(a));\ - return result;\ + return BOOST_MP_MOVE(result);\ }\ template \ inline typename enable_if_c<\ @@ -1182,7 +1182,7 @@ func(const Arithmetic& a, const mp_number& arg)\ mp_number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), static_cast(a), arg.backend());\ - return result;\ + return BOOST_MP_MOVE(result);\ }\ @@ -1214,10 +1214,10 @@ inline typename enable_if_c<\ detail::mp_exp<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , mp_number \ , Arg2> \ >::type \ -func(const mp_number& arg, Arg2 const& a)\ +func(const mp_number& arg, Arg2 const& a)\ {\ return detail::mp_exp<\ detail::function\ @@ -1239,7 +1239,7 @@ func(const mp_number& arg, Arg2 const& a)\ mp_number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a);\ - return result;\ + return BOOST_MP_MOVE(result);\ }\ #define HETERO_BINARY_OP_FUNCTOR(func, Arg2, category)\ @@ -1292,13 +1292,13 @@ template inline detail::mp_exp< detail::function , detail::abs_funct - , mp_number > -abs(const mp_number& arg) + , mp_number > +abs(const mp_number& arg) { return detail::mp_exp< detail::function , detail::abs_funct - , mp_number + , mp_number >( detail::abs_funct() , arg @@ -1311,7 +1311,7 @@ abs(const mp_number& arg) mp_number result; using default_ops::eval_abs; eval_abs(result.backend(), arg.backend()); - return result; + return BOOST_MP_MOVE(result); } UNARY_OP_FUNCTOR(fabs, number_kind_floating_point) @@ -1366,25 +1366,25 @@ namespace detail{ template inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x) { - return detail::sinc_pi_imp(x); + return BOOST_MP_MOVE(detail::sinc_pi_imp(x)); } template inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x, const Policy&) { - return detail::sinc_pi_imp(x); + return BOOST_MP_MOVE(detail::sinc_pi_imp(x)); } template inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x) { - return detail::sinhc_pi_imp(x); + return BOOST_MP_MOVE(detail::sinhc_pi_imp(x)); } template inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x, const Policy&) { - return boost::math::sinhc_pi(x); + return BOOST_MP_MOVE(boost::math::sinhc_pi(x)); } #ifdef BOOST_MSVC diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index ae8b1abc..92f0b691 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -37,7 +37,9 @@ template struct is_mp_number_expression > : public mpl::true_ {}; namespace detail{ - +// +// Workaround for missing abs(long long) on some compilers: +// template typename boost::enable_if, T>::type abs(const T& t) { @@ -46,6 +48,15 @@ typename boost::enable_if, T>::type abs(const T& t) #define BOOST_MP_USING_ABS using std::abs; using boost::multiprecision::detail::abs; +// +// Move support: +// +#ifndef BOOST_NO_RVALUE_REFERENCES +# define BOOST_MP_MOVE(x) std::move(x) +#else +# define BOOST_MP_MOVE(x) x +#endif + template struct has_enough_bits { diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index c57d7b00..aa1ea7e6 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -19,14 +19,14 @@ inline mp_number operator - (const mp_number& v) { mp_number result(v); result.backend().negate(); - return result; + return BOOST_MP_MOVE(result); } template inline mp_number operator ~ (const mp_number& v) { mp_number result; eval_complement(result.backend(), v.backend()); - return result; + return BOOST_MP_MOVE(result); } // // Addition: @@ -37,7 +37,7 @@ inline mp_number operator + (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_add; eval_add(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -47,7 +47,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_add; eval_add(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -57,7 +57,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_add; eval_add(result.backend(), b.backend(), static_cast(a)); - return result; + return BOOST_MP_MOVE(result); } // // Subtraction: @@ -68,7 +68,7 @@ inline mp_number operator - (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_subtract; eval_subtract(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -78,7 +78,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_subtract; eval_subtract(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -88,7 +88,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_subtract; eval_subtract(result.backend(), static_cast(a), b.backend()); - return result; + return BOOST_MP_MOVE(result); } // // Multiply: @@ -99,7 +99,7 @@ inline mp_number operator * (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_multiply; eval_multiply(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -109,7 +109,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_multiply; eval_multiply(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -119,7 +119,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_multiply; eval_multiply(result.backend(), b.backend(), static_cast(a)); - return result; + return BOOST_MP_MOVE(result); } // // divide: @@ -130,7 +130,7 @@ inline mp_number operator / (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_divide; eval_divide(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -140,7 +140,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_divide; eval_divide(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -150,7 +150,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_divide; eval_divide(result.backend(), static_cast(a), b.backend()); - return result; + return BOOST_MP_MOVE(result); } // // modulus: @@ -161,7 +161,7 @@ inline mp_number operator % (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_modulus; eval_modulus(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -171,7 +171,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_modulus; eval_modulus(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -181,7 +181,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_modulus; eval_modulus(result.backend(), static_cast(a), b.backend()); - return result; + return BOOST_MP_MOVE(result); } // // Bitwise or: @@ -192,7 +192,7 @@ inline mp_number operator | (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_bitwise_or; eval_bitwise_or(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -202,7 +202,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_bitwise_or; eval_bitwise_or(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -212,7 +212,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_bitwise_or; eval_bitwise_or(result.backend(), b.backend(), static_cast(a)); - return result; + return BOOST_MP_MOVE(result); } // // Bitwise xor: @@ -223,7 +223,7 @@ inline mp_number operator ^ (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_bitwise_xor; eval_bitwise_xor(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -233,7 +233,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_bitwise_xor; eval_bitwise_xor(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -243,7 +243,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_bitwise_xor; eval_bitwise_xor(result.backend(), b.backend(), static_cast(a)); - return result; + return BOOST_MP_MOVE(result); } // // Bitwise and: @@ -254,7 +254,7 @@ inline mp_number operator & (const mp_number& a, const mp_nu mp_number result; using default_ops::eval_bitwise_and; eval_bitwise_and(result.backend(), a.backend(), b.backend()); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -264,7 +264,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_bitwise_and; eval_bitwise_and(result.backend(), a.backend(), static_cast(b)); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -274,7 +274,7 @@ inline typename enable_if, mp_number >::type mp_number result; using default_ops::eval_bitwise_and; eval_bitwise_and(result.backend(), b.backend(), static_cast(a)); - return result; + return BOOST_MP_MOVE(result); } // // shifts: @@ -286,7 +286,7 @@ inline typename enable_if, mp_number >::type mp_number result(a); using default_ops::eval_left_shift; eval_left_shift(result.backend(), b); - return result; + return BOOST_MP_MOVE(result); } template inline typename enable_if, mp_number >::type @@ -295,21 +295,29 @@ inline typename enable_if, mp_number >::type mp_number result(a); using default_ops::eval_right_shift; eval_right_shift(result.backend(), b); - return result; + return BOOST_MP_MOVE(result); } #ifndef BOOST_NO_RVALUE_REFERENCES // -// If we have rvalue references go all over again with rvalue ref overloads and move semantics: +// If we have rvalue references go all over again with rvalue ref overloads and move semantics. +// Note that while it would be tempting to implement these so they return an rvalue reference +// (and indeed this would be optimally efficient), this is unsafe due to users propensity to +// write: +// +// const T& t = a * b; +// +// which would lead to a dangling reference if we didn't return by value. Of course move +// semantics help a great deal in return by value, so performance is still pretty good... // template -inline mp_number&& operator - (mp_number&& v) +inline mp_number operator - (mp_number&& v) { v.backend().negate(); return static_cast&&>(v); } template -inline mp_number&& operator ~ (mp_number&& v) +inline mp_number operator ~ (mp_number&& v) { eval_complement(v.backend(), v.backend()); return static_cast&&>(v); @@ -318,28 +326,28 @@ inline mp_number&& operator ~ (mp_number&& v) // Addition: // template -inline mp_number&& operator + (mp_number&& a, const mp_number& b) +inline mp_number operator + (mp_number&& a, const mp_number& b) { using default_ops::eval_add; eval_add(a.backend(), b.backend()); return static_cast&&>(a); } template -inline mp_number&& operator + (const mp_number& a, mp_number&& b) +inline mp_number operator + (const mp_number& a, mp_number&& b) { using default_ops::eval_add; eval_add(b.backend(), a.backend()); return static_cast&&>(b); } template -inline mp_number&& operator + (mp_number&& a, mp_number&& b) +inline mp_number operator + (mp_number&& a, mp_number&& b) { using default_ops::eval_add; eval_add(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator + (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -348,7 +356,7 @@ inline typename enable_if, mp_number&& >::type return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator + (const V& a, mp_number&& b) { typedef typename detail::canonical::type canonical_type; @@ -360,14 +368,14 @@ inline typename enable_if, mp_number&& >::type // Subtraction: // template -inline mp_number&& operator - (mp_number&& a, const mp_number& b) +inline mp_number operator - (mp_number&& a, const mp_number& b) { using default_ops::eval_subtract; eval_subtract(a.backend(), b.backend()); return static_cast&&>(a); } template -inline mp_number&& operator - (const mp_number& a, mp_number&& b) +inline mp_number operator - (const mp_number& a, mp_number&& b) { using default_ops::eval_subtract; eval_subtract(b.backend(), a.backend()); @@ -375,14 +383,14 @@ inline mp_number&& operator - (const mp_number& a, mp_number return static_cast&&>(b); } template -inline mp_number&& operator - (mp_number&& a, mp_number&& b) +inline mp_number operator - (mp_number&& a, mp_number&& b) { using default_ops::eval_subtract; eval_subtract(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator - (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -391,7 +399,7 @@ inline typename enable_if, mp_number&& >::type return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator - (const V& a, mp_number&& b) { typedef typename detail::canonical::type canonical_type; @@ -404,28 +412,28 @@ inline typename enable_if, mp_number&& >::type // Multiply: // template -inline mp_number&& operator * (mp_number&& a, const mp_number& b) +inline mp_number operator * (mp_number&& a, const mp_number& b) { using default_ops::eval_multiply; eval_multiply(a.backend(), b.backend()); return static_cast&&>(a); } template -inline mp_number&& operator * (const mp_number& a, mp_number&& b) +inline mp_number operator * (const mp_number& a, mp_number&& b) { using default_ops::eval_multiply; eval_multiply(b.backend(), a.backend()); return static_cast&&>(b); } template -inline mp_number&& operator * (mp_number&& a, mp_number&& b) +inline mp_number operator * (mp_number&& a, mp_number&& b) { using default_ops::eval_multiply; eval_multiply(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator * (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -434,7 +442,7 @@ inline typename enable_if, mp_number&& >::type return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator * (const V& a, mp_number&& b) { typedef typename detail::canonical::type canonical_type; @@ -446,14 +454,14 @@ inline typename enable_if, mp_number&& >::type // divide: // template -inline mp_number&& operator / (mp_number&& a, const mp_number& b) +inline mp_number operator / (mp_number&& a, const mp_number& b) { using default_ops::eval_divide; eval_divide(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator / (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -465,14 +473,14 @@ inline typename enable_if, mp_number&& >::type // modulus: // template -inline mp_number&& operator % (mp_number&& a, const mp_number& b) +inline mp_number operator % (mp_number&& a, const mp_number& b) { using default_ops::eval_modulus; eval_modulus(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator % (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -484,28 +492,28 @@ inline typename enable_if, mp_number&& >::type // Bitwise or: // template -inline mp_number&& operator | (mp_number&& a, const mp_number& b) +inline mp_number operator | (mp_number&& a, const mp_number& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(a.backend(), b.backend()); return static_cast&&>(a); } template -inline mp_number&& operator | (const mp_number& a, mp_number&& b) +inline mp_number operator | (const mp_number& a, mp_number&& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(b.backend(), a.backend()); return static_cast&&>(b); } template -inline mp_number&& operator | (mp_number&& a, mp_number&& b) +inline mp_number operator | (mp_number&& a, mp_number&& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator | (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -514,7 +522,7 @@ inline typename enable_if, mp_number&& >::type return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator | (const V& a, mp_number&& b) { typedef typename detail::canonical::type canonical_type; @@ -526,28 +534,28 @@ inline typename enable_if, mp_number&& >::type // Bitwise xor: // template -inline mp_number&& operator ^ (mp_number&& a, const mp_number& b) +inline mp_number operator ^ (mp_number&& a, const mp_number& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(a.backend(), b.backend()); return static_cast&&>(a); } template -inline mp_number&& operator ^ (const mp_number& a, mp_number&& b) +inline mp_number operator ^ (const mp_number& a, mp_number&& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(b.backend(), a.backend()); return static_cast&&>(b); } template -inline mp_number&& operator ^ (mp_number&& a, mp_number&& b) +inline mp_number operator ^ (mp_number&& a, mp_number&& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator ^ (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -556,7 +564,7 @@ inline typename enable_if, mp_number&& >::type return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator ^ (const V& a, mp_number&& b) { typedef typename detail::canonical::type canonical_type; @@ -568,28 +576,28 @@ inline typename enable_if, mp_number&& >::type // Bitwise and: // template -inline mp_number&& operator & (mp_number&& a, const mp_number& b) +inline mp_number operator & (mp_number&& a, const mp_number& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(a.backend(), b.backend()); return static_cast&&>(a); } template -inline mp_number&& operator & (const mp_number& a, mp_number&& b) +inline mp_number operator & (const mp_number& a, mp_number&& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(b.backend(), a.backend()); return static_cast&&>(b); } template -inline mp_number&& operator & (mp_number&& a, mp_number&& b) +inline mp_number operator & (mp_number&& a, mp_number&& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(a.backend(), b.backend()); return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator & (mp_number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -598,7 +606,7 @@ inline typename enable_if, mp_number&& >::type return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator & (const V& a, mp_number&& b) { typedef typename detail::canonical::type canonical_type; @@ -610,7 +618,7 @@ inline typename enable_if, mp_number&& >::type // shifts: // template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator << (mp_number&& a, const I& b) { using default_ops::eval_left_shift; @@ -618,7 +626,7 @@ inline typename enable_if, mp_number&& >::type return static_cast&&>(a); } template -inline typename enable_if, mp_number&& >::type +inline typename enable_if, mp_number >::type operator >> (mp_number&& a, const I& b) { using default_ops::eval_right_shift; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 396ba558..a4b0a33d 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -337,7 +337,7 @@ struct gmp_float : public detail::gmp_float_imp mpf_set_q(this->m_data, val); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float(gmp_float&& o) : detail::gmp_float_imp(o) {} + gmp_float(gmp_float&& o) : detail::gmp_float_imp(static_cast&&>(o)) {} #endif gmp_float& operator=(const gmp_float& o) { @@ -412,7 +412,7 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> mpf_set(this->m_data, o.data()); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float(gmp_float&& o) : detail::gmp_float_imp<0>(o) {} + gmp_float(gmp_float&& o) : detail::gmp_float_imp<0>(static_cast&&>(o)) {} #endif gmp_float(const gmp_int& o); gmp_float(const gmp_rational& o); @@ -874,6 +874,13 @@ struct gmp_int { mpz_init_set(m_data, o.m_data); } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_int(gmp_int&& o) + { + m_data[0] = o.m_data[0]; + o.m_data[0]._mp_d = 0; + } +#endif gmp_int(mpf_t val) { mpz_init(this->m_data); @@ -1072,7 +1079,8 @@ struct gmp_int } ~gmp_int() { - mpz_clear(m_data); + if(m_data[0]._mp_d) + mpz_clear(m_data); } void negate() { @@ -1469,6 +1477,15 @@ struct gmp_rational mpq_init(m_data); mpq_set_z(m_data, o.data()); } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_rational(gmp_rational&& o) + { + m_data[0]._mp_num = o.data()[0]._mp_num; + m_data[0]._mp_den = o.data()[0]._mp_den; + o.data()[0]._mp_num._mp_d = 0; + o.data()[0]._mp_den._mp_d = 0; + } +#endif gmp_rational(mpq_t o) { mpq_init(m_data); @@ -1613,7 +1630,8 @@ struct gmp_rational } ~gmp_rational() { - mpq_clear(m_data); + if(m_data[0]._mp_num._mp_d || m_data[0]._mp_den._mp_d) + mpq_clear(m_data); } void negate() { diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index a8928cfe..db19d5a7 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -153,7 +153,7 @@ public: } #ifndef BOOST_NO_RVALUE_REFERENCES - mp_number(mp_number&& r) : m_backend(r.m_backend){} + mp_number(mp_number&& r) : m_backend(static_cast(r.m_backend)){} mp_number& operator=(mp_number&& r) { m_backend.swap(r.m_backend); @@ -171,7 +171,7 @@ public: mp_number& operator+=(const detail::mp_exp& e) { // Create a copy if e contains this, but not if we're just doing a - // x *= x + // x += x if(contains_self(e) && !is_self(e)) { self_type temp(e); @@ -202,7 +202,7 @@ public: template mp_number& operator-=(const detail::mp_exp& e) { - // Create a copy if e contains this, but not if we're just doing a + // Create a copy if e contains this: if(contains_self(e)) { self_type temp(e); @@ -235,7 +235,7 @@ public: mp_number& operator*=(const detail::mp_exp& e) { // Create a temporary if the RHS references *this, but not - // if we're just doing an x += x; + // if we're just doing an x *= x; if(contains_self(e) && !is_self(e)) { self_type temp(e); @@ -1094,20 +1094,20 @@ private: void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const detail::terminal&) { self_type temp1(val1); - f(m_backend, temp1.backend(), function_arg_value(val2)); + f(m_backend, BOOST_MP_MOVE(temp1.backend()), function_arg_value(val2)); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const Tag2&) { self_type temp2(val2); - f(m_backend, function_arg_value(val1), temp2.backend()); + f(m_backend, function_arg_value(val1), BOOST_MP_MOVE(temp2.backend())); } template void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&) { self_type temp1(val1); self_type temp2(val2); - f(m_backend, temp1.backend(), temp2.backend()); + f(m_backend, BOOST_MP_MOVE(temp1.backend()), BOOST_MP_MOVE(temp2.backend())); } template @@ -1130,7 +1130,7 @@ private: void do_assign_function_3a(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag1&, const Tag2& t2, const Tag3& t3) { mp_number t(val1); - do_assign_function_3b(f, t, val2, val3, t2, t3); + do_assign_function_3b(f, BOOST_MP_MOVE(t), val2, val3, t2, t3); } template void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&, const Tag3& t3) @@ -1141,7 +1141,7 @@ private: void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag2& /*t2*/, const Tag3& t3) { mp_number t(val2); - do_assign_function_3c(f, val1, t, val3, t3); + do_assign_function_3c(f, val1, BOOST_MP_MOVE(t), val3, t3); } template void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&) @@ -1152,7 +1152,7 @@ private: void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag3& /*t3*/) { mp_number t(val3); - do_assign_function_3c(f, val1, val2, t, detail::terminal()); + do_assign_function_3c(f, val1, val2, BOOST_MP_MOVE(t), detail::terminal()); } template @@ -1469,23 +1469,23 @@ private: // Tests if the expression contains a reference to *this: template - bool contains_self(const Exp& e)const + bool contains_self(const Exp& e)const BOOST_NOEXCEPT { return contains_self(e, typename Exp::arity()); } template - bool contains_self(const Exp& e, mpl::int_<0> const&)const + bool contains_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT { return is_realy_self(e.value()); } template - bool contains_self(const Exp& e, mpl::int_<1> const&)const + bool contains_self(const Exp& e, mpl::int_<1> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child_type; return contains_self(e.left(), typename child_type::arity()); } template - bool contains_self(const Exp& e, mpl::int_<2> const&)const + bool contains_self(const Exp& e, mpl::int_<2> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::right_type child1_type; @@ -1493,7 +1493,7 @@ private: || contains_self(e.right(), typename child1_type::arity()); } template - bool contains_self(const Exp& e, mpl::int_<3> const&)const + bool contains_self(const Exp& e, mpl::int_<3> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::middle_type child1_type; @@ -1505,37 +1505,37 @@ private: // Test if the expression is a reference to *this: template - bool is_self(const Exp& e)const + bool is_self(const Exp& e)const BOOST_NOEXCEPT { return is_self(e, typename Exp::arity()); } template - bool is_self(const Exp& e, mpl::int_<0> const&)const + bool is_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT { return is_realy_self(e.value()); } template - bool is_self(const Exp&, mpl::int_ const&)const + BOOST_CONSTEXPR bool is_self(const Exp&, mpl::int_ const&)const BOOST_NOEXCEPT { return false; } template - bool is_realy_self(const Val&)const { return false; } - bool is_realy_self(const self_type& v)const { return &v == this; } + BOOST_CONSTEXPR bool is_realy_self(const Val&)const BOOST_NOEXCEPT{ return false; } + BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; } - static const Backend& canonical_value(const self_type& v){ return v.m_backend; } + static const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } template - static typename detail::canonical::type canonical_value(const V& v){ return static_cast::type>(v); } - static typename detail::canonical::type canonical_value(const std::string& v){ return v.c_str(); } + static typename detail::canonical::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } + static typename detail::canonical::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); } - static const Backend& function_arg_value(const self_type& v) { return v.backend(); } + static const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } template - static const V& function_arg_value(const V& v) { return v; } + static const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } template - static const A1& function_arg_value(const detail::mp_exp& exp) { return exp.value(); } + static const A1& function_arg_value(const detail::mp_exp& exp) BOOST_NOEXCEPT { return exp.value(); } template - static const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) { return exp.value().backend(); } + static const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } Backend m_backend; }; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 98f82825..43604382 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -152,7 +152,10 @@ struct mpfr_float_imp } mpfr_float_imp& operator = (const char* s) { - mpfr_set_str(m_data, s, 10, GMP_RNDN); + if(mpfr_set_str(m_data, s, 10, GMP_RNDN) != 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Unable to parse string as a valid floating point number.")); + } return *this; } void swap(mpfr_float_imp& o) @@ -314,7 +317,7 @@ struct mpfr_float_backend : public detail::mpfr_float_imp } mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp(o) {} + mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp(static_cast&&>(o)) {} #endif template mpfr_float_backend(const mpfr_float_backend& val) @@ -453,7 +456,7 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> } mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp<0>(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp<0>(o) {} + mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp<0>(static_cast&&>(o)) {} #endif mpfr_float_backend(const mpfr_float_backend& o, unsigned digits10) { diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index e67cf8fe..d7456fd0 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -46,6 +46,13 @@ struct tommath_int { detail::check_tommath_result(mp_init_copy(&m_data, const_cast< ::mp_int*>(&o.m_data))); } +#ifndef BOOST_NO_RVALUE_REFERENCES + tommath_int(tommath_int&& o) + { + m_data = o.m_data; + o.m_data.dp = 0; + } +#endif tommath_int& operator = (const tommath_int& o) { detail::check_tommath_result(mp_copy(const_cast< ::mp_int*>(&o.m_data), &m_data)); @@ -209,7 +216,8 @@ struct tommath_int } ~tommath_int() { - mp_clear(&m_data); + if(m_data.dp) + mp_clear(&m_data); } void negate() { diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 75686515..deec7251 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -578,6 +578,37 @@ run test_constants.cpp : test_constants_cpp_dec_float ; +run test_move.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR + [ check-target-builds ../config//has_mpfr : : no ] + : test_move_mpfr ; + +run test_move.cpp gmp + : # command line + : # input files + : # requirements + TEST_GMP + [ check-target-builds ../config//has_gmp : : no ] + : test_move_gmp ; + +run test_move.cpp $(TOMMATH) + : # command line + : # input files + : # requirements + TEST_TOMMATH + [ check-target-builds ../config//has_tommath : : no ] + : test_move_tommath ; + +run test_move.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT + : test_move_cpp_int ; + run test_test.cpp ; run test_float_io.cpp diff --git a/test/test_move.cpp b/test/test_move.cpp new file mode 100644 index 00000000..f67e497b --- /dev/null +++ b/test/test_move.cpp @@ -0,0 +1,241 @@ +// Copyright John Maddock 2012. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include + +#ifndef BOOST_NO_RVALUE_REFERENCES + +#if !defined(TEST_GMP) && !defined(TEST_MPFR) && !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) +# define TEST_GMP +# define TEST_MPFR +# define TEST_TOMMATH +# define TEST_CPP_INT + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_GMP) +#include +#endif +#if defined(TEST_MPFR) +#include +#endif +#ifdef TEST_TOMMATH +#include +#endif +#ifdef TEST_CPP_INT +#include +#endif + +#include "test.hpp" + +unsigned allocation_count = 0; + +void *(*alloc_func_ptr) (size_t); +void *(*realloc_func_ptr) (void *, size_t, size_t); +void (*free_func_ptr) (void *, size_t); + +void *alloc_func(size_t n) +{ + ++allocation_count; + return (*alloc_func_ptr)(n); +} + +void free_func(void * p, size_t n) +{ + (*free_func_ptr)(p, n); +} + +void * realloc_func(void * p, size_t old, size_t n) +{ + ++allocation_count; + return (*realloc_func_ptr)(p, old, n); +} + +template +void do_something(const T&) +{ +} + + +int main() +{ +#if defined(TEST_MPFR) || defined(TEST_GMP) + mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); + mp_set_memory_functions(&alloc_func, &realloc_func, &free_func); +#endif + + using namespace boost::multiprecision; + +#ifdef TEST_MPFR + { + mpfr_float_50 a = 2; + BOOST_TEST(allocation_count); // sanity check that we are tracking allocations + allocation_count = 0; + mpfr_float_50 b = std::move(a); + BOOST_TEST(allocation_count == 0); + // + // Move assign - we rely on knowledge of the internals to make this test work!! + // + mpfr_float_50 c(3); + do_something(b); + do_something(c); + const void* p = b.backend().data()[0]._mpfr_d; + BOOST_TEST(c.backend().data()[0]._mpfr_d != p); + c = std::move(b); + BOOST_TEST(c.backend().data()[0]._mpfr_d == p); + BOOST_TEST(b.backend().data()[0]._mpfr_d != p); + // + // Again with variable precision, this we can test more easily: + // + mpfr_float d, e; + d.precision(100); + e.precision(1000); + d = 2; + e = 3; + allocation_count = 0; + BOOST_TEST(d == 2); + d = std::move(e); + BOOST_TEST(allocation_count == 0); + BOOST_TEST(d == 3); + } +#endif +#ifdef TEST_GMP + { + mpf_float_50 a = 2; + BOOST_TEST(allocation_count); // sanity check that we are tracking allocations + allocation_count = 0; + mpf_float_50 b = std::move(a); + BOOST_TEST(allocation_count == 0); + // + // Move assign: this requires knowledge of the internals to test!! + // + mpf_float_50 c(3); + do_something(b); + do_something(c); + const void* p = b.backend().data()[0]._mp_d; + BOOST_TEST(c.backend().data()[0]._mp_d != p); + c = std::move(b); + BOOST_TEST(c.backend().data()[0]._mp_d == p); + BOOST_TEST(b.backend().data()[0]._mp_d != p); + // + // Again with variable precision, this we can test more easily: + // + mpf_float d, e; + d.precision(100); + e.precision(1000); + d = 2; + e = 3; + allocation_count = 0; + BOOST_TEST(d == 2); + d = std::move(e); + BOOST_TEST(allocation_count == 0); + BOOST_TEST(d == 3); + } + { + mpz_int a = 2; + BOOST_TEST(allocation_count); // sanity check that we are tracking allocations + allocation_count = 0; + mpz_int b = std::move(a); + BOOST_TEST(allocation_count == 0); + + // + // Move assign: + // + mpz_int d, e; + d = 2; + d <<= 1000; + e = 3; + allocation_count = 0; + e = std::move(d); + BOOST_TEST(allocation_count == 0); + } + { + mpq_rational a = 2; + BOOST_TEST(allocation_count); // sanity check that we are tracking allocations + allocation_count = 0; + mpq_rational b = std::move(a); + BOOST_TEST(allocation_count == 0); + + // + // Move assign: + // + mpq_rational d, e; + d = mpz_int(2) << 1000; + e = 3; + allocation_count = 0; + e = std::move(d); + BOOST_TEST(allocation_count == 0); + } +#endif +#ifdef TEST_TOMMATH + { + tom_int a = 2; + void const* p = a.backend().data().dp; + tom_int b = std::move(a); + BOOST_TEST(b.backend().data().dp == p); + BOOST_TEST(a.backend().data().dp == 0); + + // + // Move assign: + // + tom_int d, e; + d = 2; + d <<= 1000; + e = 3; + p = d.backend().data().dp; + BOOST_TEST(p != e.backend().data().dp); + e = std::move(d); + BOOST_TEST(e.backend().data().dp == p); + } +#endif +#ifdef TEST_CPP_INT + { + cpp_int a = 2; + a <<= 1000; // Force dynamic allocation. + void const* p = a.backend().limbs(); + cpp_int b = std::move(a); + BOOST_TEST(b.backend().limbs() == p); + + // + // Move assign: + // + cpp_int d, e; + d = 2; + d <<= 1000; + e = 3; + e <<= 1000; + p = d.backend().limbs(); + BOOST_TEST(p != e.backend().limbs()); + e = std::move(d); + BOOST_TEST(e.backend().limbs() == p); + } +#endif + return boost::report_errors(); +} + +#else +// +// No rvalue refs, nothing to test: +// +int main() +{ + return 0; +} + +#endif + From ccf276db86ebcaf7ab3aeb3cf30f8d77ebb04825 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 3 Jul 2012 12:32:17 +0000 Subject: [PATCH 196/256] Add tentative noexcept support. [SVN r79243] --- include/boost/multiprecision/cpp_int.hpp | 290 +++++++++------------ include/boost/multiprecision/mp_number.hpp | 76 +++--- performance/Jamfile.v2 | 16 +- performance/miller_rabin_performance.cpp | 9 +- performance/sf_performance.cpp | 4 + 5 files changed, 177 insertions(+), 218 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index ca80fd2f..d50bf068 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -71,14 +71,14 @@ public: // // Helper functions for getting at our internal data, and manipulating storage: // - allocator_type& allocator(){ return *this; } - const allocator_type& allocator()const{ return *this; } - unsigned size()const { return m_limbs; } - limb_pointer limbs() { return m_internal ? m_data.la : m_data.ld.data; } - const_limb_pointer limbs()const { return m_internal ? m_data.la : m_data.ld.data; } - unsigned capacity()const { return m_internal ? internal_limb_count : m_data.ld.capacity; } - bool sign()const { return m_sign; } - void sign(bool b) + allocator_type& allocator() BOOST_NOEXCEPT { return *this; } + const allocator_type& allocator()const BOOST_NOEXCEPT { return *this; } + unsigned size()const BOOST_NOEXCEPT { return m_limbs; } + limb_pointer limbs() BOOST_NOEXCEPT { return m_internal ? m_data.la : m_data.ld.data; } + const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_internal ? m_data.la : m_data.ld.data; } + unsigned capacity()const BOOST_NOEXCEPT { return m_internal ? internal_limb_count : m_data.ld.capacity; } + bool sign()const BOOST_NOEXCEPT { return m_sign; } + void sign(bool b) BOOST_NOEXCEPT { m_sign = b; // Check for zero value: @@ -109,15 +109,14 @@ public: m_limbs = new_size; } } - void normalize() + void normalize() BOOST_NOEXCEPT { limb_pointer p = limbs(); while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - cpp_int_base() : m_limbs(1), m_sign(false), m_internal(true) + BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1), m_sign(false), m_internal(true) { - *limbs() = 0; } cpp_int_base(const cpp_int_base& o) : allocator_type(o), m_limbs(0), m_internal(true) { @@ -126,7 +125,7 @@ public: m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) : allocator_type(o), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) + cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : allocator_type(o), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) { if(m_internal) { @@ -140,7 +139,7 @@ public: } } #endif - ~cpp_int_base() + ~cpp_int_base() BOOST_NOEXCEPT { if(!m_internal) allocator().deallocate(limbs(), capacity()); @@ -156,7 +155,7 @@ public: m_sign = o.m_sign; } } - void negate() + void negate() BOOST_NOEXCEPT { m_sign = !m_sign; // Check for zero value: @@ -166,11 +165,11 @@ public: m_sign = false; } } - bool isneg()const + bool isneg()const BOOST_NOEXCEPT { return m_sign; } - void do_swap(cpp_int_base& o) + void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { std::swap(m_data, o.m_data); std::swap(m_sign, o.m_sign); @@ -203,11 +202,11 @@ public: // // Helper functions for getting at our internal data, and manipulating storage: // - unsigned size()const { return m_limbs; } - limb_pointer limbs() { return m_data; } - const_limb_pointer limbs()const { return m_data; } - bool sign()const { return m_sign; } - void sign(bool b) + unsigned size()const BOOST_NOEXCEPT { return m_limbs; } + limb_pointer limbs() BOOST_NOEXCEPT { return m_data; } + const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_data; } + bool sign()const BOOST_NOEXCEPT { return m_sign; } + void sign(bool b) BOOST_NOEXCEPT { m_sign = b; // Check for zero value: @@ -217,11 +216,11 @@ public: m_sign = false; } } - void resize(unsigned new_size) + void resize(unsigned new_size) BOOST_NOEXCEPT { m_limbs = static_cast((std::min)(new_size, internal_limb_count)); } - void normalize() + void normalize() BOOST_NOEXCEPT { limb_pointer p = limbs(); p[internal_limb_count-1] &= upper_limb_mask; @@ -229,24 +228,21 @@ public: if((m_limbs == 1) && (!*p)) m_sign = false; // zero is always unsigned } - cpp_int_base() : m_limbs(1), m_sign(false) - { - *limbs() = 0; - } - cpp_int_base(const cpp_int_base& o) : m_limbs(0) + BOOST_CONSTEXPR cpp_int_base() : m_data(), m_limbs(1), m_sign(false) {} + cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(0) { resize(o.size()); std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) : m_limbs(o.m_limbs), m_sign(o.m_sign) + cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign) { std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); } #endif - ~cpp_int_base() {} - void assign(const cpp_int_base& o) + ~cpp_int_base() BOOST_NOEXCEPT {} + void assign(const cpp_int_base& o) BOOST_NOEXCEPT { if(this != &o) { @@ -255,7 +251,7 @@ public: m_sign = o.m_sign; } } - void negate() + void negate() BOOST_NOEXCEPT { m_sign = !m_sign; // Check for zero value: @@ -265,11 +261,11 @@ public: m_sign = false; } } - bool isneg()const + bool isneg()const BOOST_NOEXCEPT { return m_sign; } - void do_swap(cpp_int_base& o) + void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) std::swap(m_data[i], o.m_data[i]); @@ -301,39 +297,36 @@ public: // // Helper functions for getting at our internal data, and manipulating storage: // - unsigned size()const { return m_limbs; } - limb_pointer limbs() { return m_data; } - const_limb_pointer limbs()const { return m_data; } - bool sign()const { return false; } - void sign(bool b) { if(b) negate(); } - void resize(unsigned new_size) + unsigned size()const BOOST_NOEXCEPT { return m_limbs; } + limb_pointer limbs() BOOST_NOEXCEPT { return m_data; } + const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_data; } + BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } + void sign(bool b) BOOST_NOEXCEPT { if(b) negate(); } + void resize(unsigned new_size) BOOST_NOEXCEPT { m_limbs = (std::min)(new_size, internal_limb_count); } - void normalize() + void normalize() BOOST_NOEXCEPT { limb_pointer p = limbs(); p[internal_limb_count-1] &= upper_limb_mask; while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - cpp_int_base() : m_limbs(1) - { - *limbs() = 0; - } - cpp_int_base(const cpp_int_base& o) : m_limbs(0) + BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1) {} + cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(0) { resize(o.size()); std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) : m_limbs(o.m_limbs) + cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs) { std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); } #endif - ~cpp_int_base() {} - void assign(const cpp_int_base& o) + ~cpp_int_base() BOOST_NOEXCEPT {} + void assign(const cpp_int_base& o) BOOST_NOEXCEPT { if(this != &o) { @@ -341,7 +334,7 @@ public: std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); } } - void negate() + void negate() BOOST_NOEXCEPT { // Not so much a negate as a complement - this gets called when subtraction // would result in a "negative" number: @@ -354,11 +347,11 @@ public: normalize(); eval_increment(static_cast& >(*this)); } - bool isneg()const + BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT { return false; } - void do_swap(cpp_int_base& o) + void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) std::swap(m_data[i], o.m_data[i]); @@ -408,31 +401,31 @@ public: typedef mpl::list unsigned_types; typedef mpl::list float_types; - cpp_int_backend(){} - cpp_int_backend(const cpp_int_backend& o) : base_type(o) {} + BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} + cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) : base_type(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_backend(cpp_int_backend&& o) : base_type(static_cast(o)) {} + cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} #endif - cpp_int_backend& operator = (const cpp_int_backend& o) + cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { this->assign(o); return *this; } - cpp_int_backend& operator = (limb_type i) + cpp_int_backend& operator = (limb_type i) BOOST_NOEXCEPT { this->resize(1); *this->limbs() = i; this->sign(false); return *this; } - cpp_int_backend& operator = (signed_limb_type i) + cpp_int_backend& operator = (signed_limb_type i) BOOST_NOEXCEPT { this->resize(1); *this->limbs() = static_cast(std::abs(i)); this->sign(i < 0); return *this; } - cpp_int_backend& operator = (double_limb_type i) + cpp_int_backend& operator = (double_limb_type i) BOOST_NOEXCEPT_IF(MinBits <= sizeof(double_limb_type) * CHAR_BIT) { BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); BOOST_STATIC_ASSERT(base_type::internal_limb_count >= 2); @@ -443,7 +436,7 @@ public: this->sign(false); return *this; } - cpp_int_backend& operator = (signed_double_limb_type i) + cpp_int_backend& operator = (signed_double_limb_type i) BOOST_NOEXCEPT_IF(MinBits <= sizeof(signed_double_limb_type) * CHAR_BIT) { BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); BOOST_STATIC_ASSERT(base_type::internal_limb_count >= 2); @@ -463,7 +456,7 @@ public: return *this; } - cpp_int_backend& operator = (long double a) + cpp_int_backend& operator = (long double a) BOOST_NOEXCEPT_IF(MinBits <= sizeof(long double) * CHAR_BIT) { using default_ops::eval_add; using default_ops::eval_subtract; @@ -607,7 +600,7 @@ public: this->negate(); return *this; } - void swap(cpp_int_backend& o) + void swap(cpp_int_backend& o) BOOST_NOEXCEPT { this->do_swap(o); } @@ -707,7 +700,7 @@ public: } return result; } - int compare(const cpp_int_backend& o)const + int compare(const cpp_int_backend& o)const BOOST_NOEXCEPT { if(this->sign() != o.sign()) return this->sign() ? -1 : 1; @@ -719,7 +712,7 @@ public: result = -result; return result; } - int compare_unsigned(const cpp_int_backend& o)const + int compare_unsigned(const cpp_int_backend& o)const BOOST_NOEXCEPT { if(this->size() != o.size()) { @@ -735,7 +728,7 @@ public: return 0; } template - typename enable_if, int>::type compare(Arithmatic i)const + typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT { // braindead version: cpp_int_backend t; @@ -746,12 +739,12 @@ public: template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_add(result, result, o); } template -inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { using std::swap; @@ -811,7 +804,7 @@ inline void add_unsigned(cpp_int_backend& result, co result.sign(a.sign()); } template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign() != b.sign()) { @@ -822,7 +815,7 @@ inline void eval_add(cpp_int_backend& result, const } template -inline void add_unsigned(cpp_int_backend& result, const limb_type& o) +inline void add_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: @@ -845,7 +838,7 @@ inline void add_unsigned(cpp_int_backend& result, co result.normalize(); } template -inline void eval_add(cpp_int_backend& result, const limb_type& o) +inline void eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) { @@ -855,7 +848,7 @@ inline void eval_add(cpp_int_backend& result, const add_unsigned(result, o); } template -inline void eval_add(cpp_int_backend& result, const signed_limb_type& o) +inline void eval_add(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o < 0) eval_subtract(result, static_cast(-o)); @@ -864,7 +857,7 @@ inline void eval_add(cpp_int_backend& result, const } template -inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) +inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Subtract one limb. // Nothing fancy, just let uintmax_t take the strain: @@ -893,7 +886,7 @@ inline void subtract_unsigned(cpp_int_backend& resul } } template -inline void eval_subtract(cpp_int_backend& result, const limb_type& o) +inline void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) add_unsigned(result, o); @@ -901,7 +894,7 @@ inline void eval_subtract(cpp_int_backend& result, c subtract_unsigned(result, o); } template -inline void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) +inline void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o) { @@ -912,7 +905,7 @@ inline void eval_subtract(cpp_int_backend& result, c } } template -inline void eval_increment(cpp_int_backend& result) +inline void eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) { static const limb_type one = 1; if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) @@ -923,7 +916,7 @@ inline void eval_increment(cpp_int_backend& result) eval_add(result, one); } template -inline void eval_decrement(cpp_int_backend& result) +inline void eval_decrement(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) { static const limb_type one = 1; if(!result.sign() && result.limbs()[0]) @@ -934,12 +927,12 @@ inline void eval_decrement(cpp_int_backend& result) eval_subtract(result, one); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_subtract(result, result, o); } template -inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { using std::swap; @@ -1016,7 +1009,7 @@ inline void subtract_unsigned(cpp_int_backend& resul result.negate(); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign() != b.sign()) { @@ -1026,7 +1019,7 @@ inline void eval_subtract(cpp_int_backend& result, c subtract_unsigned(result, a, b); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Very simple long multiplication, only usable for small numbers of limb_type's // but that's the typical use case for this type anyway: @@ -1106,12 +1099,12 @@ inline void eval_multiply(cpp_int_backend& result, c result.sign(a.sign() != b.sign()); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, a); } template -inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) +inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!val) { @@ -1140,12 +1133,12 @@ inline void eval_multiply(cpp_int_backend& result, c result.normalize(); } template -inline void eval_multiply(cpp_int_backend& result, const limb_type& val) +inline void eval_multiply(cpp_int_backend& result, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } template -inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) +inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val > 0) eval_multiply(result, a, static_cast(val)); @@ -1156,12 +1149,12 @@ inline void eval_multiply(cpp_int_backend& result, c } } template -inline void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) +inline void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } template -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) { if((result == &x) || (&r == &x)) { @@ -1428,7 +1421,7 @@ void divide_unsigned_helper(cpp_int_backend* result, } template -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) { if((result == &x) || (&r == &x)) { @@ -1571,20 +1564,20 @@ void divide_unsigned_helper(cpp_int_backend* result, } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); result.sign(a.sign() != b.sign()); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { cpp_int_backend r; divide_unsigned_helper(&result, a, std::abs(b), r); @@ -1592,65 +1585,65 @@ inline void eval_divide(cpp_int_backend& result, con result.negate(); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, limb_type b) +inline void eval_divide(cpp_int_backend& result, limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, signed_limb_type b) +inline void eval_divide(cpp_int_backend& result, signed_limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { divide_unsigned_helper(static_cast* >(0), a, b, result); result.sign(a.sign()); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) { divide_unsigned_helper(static_cast* >(0), a, b, result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) { divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // There is no in place divide: cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, limb_type b) +inline void eval_modulus(cpp_int_backend& result, limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // There is no in place divide: cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) +inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // There is no in place divide: cpp_int_backend a(result); eval_modulus(result, a, b); } template -void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) +void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) BOOST_NOEXCEPT { // // There are 4 cases: @@ -1775,70 +1768,27 @@ void bitwise_op(cpp_int_backend& result, const cpp_i result.normalize(); } -struct bit_and{ limb_type operator()(limb_type a, limb_type b)const{ return a & b; } }; -struct bit_or{ limb_type operator()(limb_type a, limb_type b)const{ return a | b; } }; -struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const{ return a ^ b; } }; +struct bit_and{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a & b; } }; +struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a | b; } }; +struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; template -inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT { bitwise_op(result, o, bit_and()); } -#if 0 template -inline void eval_bitwise_and(cpp_int_backend& result, limb_type o) -{ - result.data()[cpp_int_backend::limb_count - 1] &= o; - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) - result.data()[i] = 0; -} -template -inline void eval_bitwise_and(cpp_int_backend& result, signed_limb_type o) -{ - result.data()[cpp_int_backend::limb_count - 1] &= o; - limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) - result.data()[i] &= mask; -} -template -inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) -{ - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count; ++i) - result.data()[i] |= o.data()[i]; -} -template -inline void eval_bitwise_or(cpp_int_backend& result, limb_type o) -{ - result.data()[cpp_int_backend::limb_count - 1] |= o; -} -#endif -template -inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { bitwise_op(result, o, bit_or()); } template -inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { bitwise_op(result, o, bit_xor()); } -#if 0 template -inline void eval_bitwise_xor(cpp_int_backend& result, limb_type o) -{ - result.data()[cpp_int_backend::limb_count - 1] ^= o; -} -template -inline void eval_bitwise_xor(cpp_int_backend& result, signed_limb_type o) -{ - result.data()[cpp_int_backend::limb_count - 1] ^= o; - limb_type mask = o < 0 ? cpp_int_backend::max_limb_value : 0; - for(typename cpp_int_backend::data_type::size_type i = 0; i < cpp_int_backend::limb_count - 1; ++i) - result.data()[i] ^= mask; -} -#endif -template -inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) +inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Increment and negate: result = o; @@ -1846,7 +1796,7 @@ inline void eval_complement(cpp_int_backend& result, result.negate(); } template -inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) +inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT { if(!s) return; @@ -1922,7 +1872,7 @@ inline void eval_left_shift(cpp_int_backend& result, doub } } template -inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) +inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!s) return; @@ -1979,7 +1929,7 @@ inline void eval_left_shift(cpp_int_backend& result, } } template -inline void eval_right_shift(cpp_int_backend& result, double_limb_type s) +inline void eval_right_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!s) return; @@ -2022,18 +1972,18 @@ inline void eval_right_shift(cpp_int_backend& result } template -inline Integer negate_integer(Integer i, const mpl::true_&) +inline Integer negate_integer(Integer i, const mpl::true_&) BOOST_NOEXCEPT { return -i; } template -inline Integer negate_integer(Integer i, const mpl::false_&) +inline Integer negate_integer(Integer i, const mpl::false_&) BOOST_NOEXCEPT { return ~--i; } template -inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) +inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT { *result = static_cast(backend.limbs()[0]); unsigned shift = cpp_int_backend::limb_bits; @@ -2049,7 +1999,7 @@ inline typename enable_if, void>::type eval_convert_to(R* result, } template -inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) +inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT { typename cpp_int_backend::const_limb_pointer p = backend.limbs(); unsigned shift = cpp_int_backend::limb_bits; @@ -2064,17 +2014,17 @@ inline typename enable_if, void>::type eval_convert_to(R* r } template -inline bool eval_is_zero(const cpp_int_backend& val) +inline bool eval_is_zero(const cpp_int_backend& val) BOOST_NOEXCEPT { return (val.size() == 1) && (val.limbs()[0] == 0); } template -inline int eval_get_sign(const cpp_int_backend& val) +inline int eval_get_sign(const cpp_int_backend& val) BOOST_NOEXCEPT { return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1; } template -inline void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) +inline void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { result = val; result.sign(false); @@ -2084,7 +2034,7 @@ inline void eval_abs(cpp_int_backend& result, const // Get the location of the least-significant-bit: // template -inline unsigned eval_lsb(const cpp_int_backend& a) +inline unsigned eval_lsb(const cpp_int_backend& a) BOOST_NOEXCEPT { BOOST_ASSERT(eval_get_sign(a) != 0); @@ -2109,7 +2059,7 @@ inline unsigned eval_lsb(const cpp_int_backend& a) } template -inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { int shift; @@ -2169,7 +2119,7 @@ inline void eval_gcd(cpp_int_backend& result, const } template -inline bool eval_bit_test(const cpp_int_backend& val, unsigned index) +inline bool eval_bit_test(const cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT { unsigned offset = index / cpp_int_backend::limb_bits; unsigned shift = index % cpp_int_backend::limb_bits; @@ -2180,7 +2130,7 @@ inline bool eval_bit_test(const cpp_int_backend& val } template -inline void eval_bit_set(cpp_int_backend& val, unsigned index) +inline void eval_bit_set(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) { unsigned offset = index / cpp_int_backend::limb_bits; unsigned shift = index % cpp_int_backend::limb_bits; @@ -2198,7 +2148,7 @@ inline void eval_bit_set(cpp_int_backend& val, unsig } template -inline void eval_bit_unset(cpp_int_backend& val, unsigned index) +inline void eval_bit_unset(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT { unsigned offset = index / cpp_int_backend::limb_bits; unsigned shift = index % cpp_int_backend::limb_bits; @@ -2210,7 +2160,7 @@ inline void eval_bit_unset(cpp_int_backend& val, uns } template -inline void eval_bit_flip(cpp_int_backend& val, unsigned index) +inline void eval_bit_flip(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) { unsigned offset = index / cpp_int_backend::limb_bits; unsigned shift = index % cpp_int_backend::limb_bits; @@ -2229,7 +2179,7 @@ inline void eval_bit_flip(cpp_int_backend& val, unsi } template -inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { cpp_int_backend t; eval_gcd(t, a, b); @@ -2249,7 +2199,7 @@ inline void eval_lcm(cpp_int_backend& result, const template inline void eval_qr(const cpp_int_backend& x, const cpp_int_backend& y, - cpp_int_backend& q, cpp_int_backend& r) + cpp_int_backend& q, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) { divide_unsigned_helper(&q, x, y, r); q.sign(x.sign() != y.sign()); @@ -2257,7 +2207,7 @@ inline void eval_qr(const cpp_int_backend& x, const } template -inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) +inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if((sizeof(Integer) <= sizeof(limb_type)) || (val <= (std::numeric_limits::max)())) { @@ -2271,7 +2221,7 @@ inline typename enable_if, Integer>::type eval_integer_modu } } template -inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) +inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) { typedef typename make_unsigned::type unsigned_type; return eval_integer_modulus(x, static_cast(std::abs(val))); diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index db19d5a7..54950bc1 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -37,14 +37,15 @@ class mp_number typedef mp_number self_type; public: typedef Backend backend_type; - mp_number(){} - mp_number(const mp_number& e) : m_backend(e.m_backend){} + BOOST_CONSTEXPR mp_number() BOOST_NOEXCEPT_IF(noexcept(Backend())) {} + mp_number(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} template mp_number(V v, typename enable_if, is_same, is_convertible > >::type* = 0) { m_backend = canonical_value(v); } - mp_number(const mp_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} + mp_number(const mp_number& e, unsigned digits10) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval()), 0u))) + : m_backend(e.m_backend, digits10){} /* // // This conflicts with component based initialization (for rational and complex types) @@ -58,10 +59,10 @@ public: } */ template - mp_number(const mp_number& val) : m_backend(val.m_backend) {} + mp_number(const mp_number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} template - mp_number(const mp_number& val, typename enable_if >::type* = 0) + mp_number(const mp_number& val, typename enable_if >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) { m_backend = val.backend(); } @@ -88,6 +89,7 @@ public: template mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) + BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(v){} template @@ -98,7 +100,7 @@ public: return *this; } - mp_number& operator=(const mp_number& e) + mp_number& operator=(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = e.m_backend; return *this; @@ -106,7 +108,7 @@ public: template typename enable_if, is_same, is_convertible >, mp_number& >::type - operator=(const V& v) + operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval::type>())) { m_backend = canonical_value(v); return *this; @@ -114,14 +116,14 @@ public: template typename enable_if, mpl::not_, is_same, is_convertible > > >, mp_number& >::type - operator=(const V& v) + operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v; return *this; } template - mp_number& operator=(const mp_number& v) + mp_number& operator=(const mp_number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v.backend(); return *this; @@ -129,7 +131,7 @@ public: template typename enable_if, mp_number& >::type - operator=(const mp_number& v) + operator=(const mp_number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v.backend(); return *this; @@ -153,8 +155,8 @@ public: } #ifndef BOOST_NO_RVALUE_REFERENCES - mp_number(mp_number&& r) : m_backend(static_cast(r.m_backend)){} - mp_number& operator=(mp_number&& r) + mp_number(mp_number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} + mp_number& operator=(mp_number&& r) BOOST_NOEXCEPT { m_backend.swap(r.m_backend); return *this; @@ -316,7 +318,7 @@ public: using default_ops::eval_increment; self_type temp(*this); eval_increment(m_backend); - return temp; + return BOOST_MP_MOVE(temp); } mp_number operator--(int) @@ -324,7 +326,7 @@ public: using default_ops::eval_decrement; self_type temp(*this); eval_decrement(m_backend); - return temp; + return BOOST_MP_MOVE(temp); } template @@ -491,7 +493,7 @@ public: // // swap: // - void swap(self_type& other) + void swap(self_type& other) BOOST_NOEXCEPT { m_backend.swap(other.backend()); } @@ -526,7 +528,7 @@ public: // // Default precision: // - static unsigned default_precision() + static unsigned default_precision() BOOST_NOEXCEPT { return Backend::default_precision(); } @@ -534,7 +536,7 @@ public: { Backend::default_precision(digits10); } - unsigned precision()const + unsigned precision()const BOOST_NOEXCEPT { return m_backend.precision(); } @@ -546,6 +548,7 @@ public: // Comparison: // int compare(const mp_number& o)const + BOOST_NOEXCEPT_IF(noexcept(std::declval().compare(std::declval()))) { return m_backend.compare(o.m_backend); } @@ -557,11 +560,11 @@ public: return eval_get_sign(m_backend); return m_backend.compare(canonical_value(o)); } - Backend& backend() + Backend& backend() BOOST_NOEXCEPT { return m_backend; } - const Backend& backend()const + const Backend& backend()const BOOST_NOEXCEPT { return m_backend; } @@ -603,7 +606,7 @@ private: BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); } template - void check_shift_range(V, const mpl::false_&, const mpl::false_&){} + void check_shift_range(V, const mpl::false_&, const mpl::false_&) BOOST_NOEXCEPT{} template void do_assign(const Exp& e, const detail::add_immediates&) @@ -611,15 +614,6 @@ private: using default_ops::eval_add; eval_add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } -/* - template - void do_assign(const Exp& e, const detail::add_and_negate_immediates&) - { - using default_ops::eval_add; - eval_add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); - m_backend.negate(); - } -*/ template void do_assign(const Exp& e, const detail::subtract_immediates&) { @@ -1469,23 +1463,23 @@ private: // Tests if the expression contains a reference to *this: template - bool contains_self(const Exp& e)const BOOST_NOEXCEPT + BOOST_CONSTEXPR bool contains_self(const Exp& e)const BOOST_NOEXCEPT { return contains_self(e, typename Exp::arity()); } template - bool contains_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT + BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT { return is_realy_self(e.value()); } template - bool contains_self(const Exp& e, mpl::int_<1> const&)const BOOST_NOEXCEPT + BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<1> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child_type; return contains_self(e.left(), typename child_type::arity()); } template - bool contains_self(const Exp& e, mpl::int_<2> const&)const BOOST_NOEXCEPT + BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<2> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::right_type child1_type; @@ -1493,7 +1487,7 @@ private: || contains_self(e.right(), typename child1_type::arity()); } template - bool contains_self(const Exp& e, mpl::int_<3> const&)const BOOST_NOEXCEPT + BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<3> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::middle_type child1_type; @@ -1505,12 +1499,12 @@ private: // Test if the expression is a reference to *this: template - bool is_self(const Exp& e)const BOOST_NOEXCEPT + BOOST_CONSTEXPR bool is_self(const Exp& e)const BOOST_NOEXCEPT { return is_self(e, typename Exp::arity()); } template - bool is_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT + BOOST_CONSTEXPR bool is_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT { return is_realy_self(e.value()); } @@ -1524,18 +1518,18 @@ private: BOOST_CONSTEXPR bool is_realy_self(const Val&)const BOOST_NOEXCEPT{ return false; } BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; } - static const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } + static BOOST_CONSTEXPR const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } template - static typename detail::canonical::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } + static BOOST_CONSTEXPR typename detail::canonical::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } static typename detail::canonical::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); } - static const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } + static BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } template - static const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } + static BOOST_CONSTEXPR const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } template static const A1& function_arg_value(const detail::mp_exp& exp) BOOST_NOEXCEPT { return exp.value(); } template - static const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } + static BOOST_CONSTEXPR const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } Backend m_backend; }; diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index be2cc779..66d35e7f 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -53,7 +53,16 @@ exe performance_test : performance_test.cpp /boost/system//boost_system TEST_CPP_INT ; -exe sf_performance : sf_performance.cpp /boost/system//boost_system /boost/system//boost_chrono /boost/system//boost_thread +exe miller_rabin_performance : miller_rabin_performance.cpp /boost/system//boost_system /boost/chrono//boost_chrono + : release + [ check-target-builds ../config//has_gmp : TEST_MPF TEST_MPZ gmp : ] + [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] + #[ check-target-builds ../config//has_tommath : TEST_TOMMATH $(TOMMATH) : ] + TEST_CPP_DEC_FLOAT + TEST_CPP_INT + ; + +exe sf_performance : sf_performance.cpp /boost/system//boost_system /boost/chrono//boost_chrono /boost/thread//boost_thread : release [ check-target-builds ../config//has_gmp : TEST_MPF TEST_MPZ gmp : ] [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] @@ -105,5 +114,8 @@ exe linpack_benchmark_double : obj_linpack_benchmark_double f2c : release ; -install . : performance_test sf_performance linpack_benchmark_double linpack_benchmark_cpp_float linpack_benchmark_mpf linpack_benchmark_mpfr ; +install miller_rabin_install : miller_rabin_performance : . ; +install performance_test_install : performance_test : . ; +install sf_performance_install : sf_performance : . ; +install . : linpack_benchmark_double linpack_benchmark_cpp_float linpack_benchmark_mpf linpack_benchmark_mpfr ; diff --git a/performance/miller_rabin_performance.cpp b/performance/miller_rabin_performance.cpp index e0c32dc3..458c14b2 100644 --- a/performance/miller_rabin_performance.cpp +++ b/performance/miller_rabin_performance.cpp @@ -138,11 +138,10 @@ int main() #ifdef TEST_CPP_INT test_miller_rabin, false> >("cpp_int (no Expression templates)"); test_miller_rabin("cpp_int"); - test_miller_rabin, false> >("cpp_int (64-bit cache)"); - test_miller_rabin, false> >("cpp_int (256-bit cache)"); - test_miller_rabin, false> >("cpp_int (512-bit cache)"); - test_miller_rabin, false> >("cpp_int (1024-bit cache)"); - test_miller_rabin, false> >("mp_int1024_t (no Expression templates)"); + test_miller_rabin > >("cpp_int (64-bit cache)"); + test_miller_rabin > >("cpp_int (256-bit cache)"); + test_miller_rabin > >("cpp_int (512-bit cache)"); + test_miller_rabin > >("cpp_int (1024-bit cache)"); test_miller_rabin("mp_int1024_t"); #endif #ifdef TEST_MPZ diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index f748a5a9..2e66acd9 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -273,8 +273,12 @@ int main() mpfr::mpreal::set_default_prec(50 * 1000L / 301L); #endif #ifdef TEST_MPFR +#if MPFR_VERSION, 1); +#else time_proc("mpfr_float_50", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); #endif +#endif #ifdef TEST_MPF time_proc("mpf_float_50", test_bessel, 3); time_proc("mpf_float_50 (no expression templates", test_bessel, false> >, 3); From f4a922e32563bde9c977d89c8569ea391a67052e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 3 Jul 2012 18:18:08 +0000 Subject: [PATCH 197/256] Fix some asserts and comments, plus one C++11 issue. [SVN r79250] --- example/floating_point_examples.cpp | 2 +- include/boost/multiprecision/cpp_int.hpp | 8 ++++++-- include/boost/multiprecision/mp_number.hpp | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp index e1c9b97a..37761d94 100644 --- a/example/floating_point_examples.cpp +++ b/example/floating_point_examples.cpp @@ -83,7 +83,7 @@ Yields the output: [pre 9.822663964796047e-001] -Now lets implement the function again, but this time using the multiprecision type +Now let's implement the function again, but this time using the multiprecision type `cpp_dec_float_50` as the argument type: */ diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index d50bf068..bb4afa86 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1072,6 +1072,10 @@ inline void eval_multiply(cpp_int_backend& result, c result.resize(as + bs); typename cpp_int_backend::limb_pointer pr = result.limbs(); + static const double_limb_type limb_max = ~static_cast(0u); + static const double_limb_type double_limb_max = ~static_cast(0u); + BOOST_STATIC_ASSERT(double_limb_max - 2 * limb_max >= limb_max * limb_max); + double_limb_type carry = 0; std::memset(pr, 0, result.size() * sizeof(limb_type)); for(unsigned i = 0; i < as; ++i) @@ -1080,9 +1084,9 @@ inline void eval_multiply(cpp_int_backend& result, c for(unsigned j = 0; j < inner_limit; ++j) { BOOST_ASSERT(i+j < result.size()); - BOOST_ASSERT((std::numeric_limits::max)() - carry > static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value)); + BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry > static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value))); carry += static_cast(pa[i]) * static_cast(pb[j]); - BOOST_ASSERT((std::numeric_limits::max)() - carry >= pr[i+j]); + BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry >= pr[i+j])); carry += pr[i + j]; pr[i + j] = static_cast(carry); carry >>= cpp_int_backend::limb_bits; diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 54950bc1..8c84a319 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -44,7 +44,7 @@ public: { m_backend = canonical_value(v); } - mp_number(const mp_number& e, unsigned digits10) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval()), 0u))) + mp_number(const mp_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} /* // From 19ee491c558006eb102adb08dde3e6967497bac8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 7 Jul 2012 11:16:28 +0000 Subject: [PATCH 198/256] Add noexcept support/markup where possible. [SVN r79331] --- doc/multiprecision.qbk | 27 +- .../concepts/mp_number_archetypes.hpp | 9 +- .../boost/multiprecision/cpp_dec_float.hpp | 236 ++++++++-------- include/boost/multiprecision/cpp_int.hpp | 37 ++- .../multiprecision/detail/mp_number_base.hpp | 24 +- include/boost/multiprecision/gmp.hpp | 204 ++++++++------ include/boost/multiprecision/mpfr.hpp | 266 +++++++++--------- .../boost/multiprecision/rational_adapter.hpp | 10 + include/boost/multiprecision/tommath.hpp | 94 ++++++- test/test.hpp | 6 +- test/test_arithmetic.cpp | 54 +++- test/test_cpp_int.cpp | 2 + 12 files changed, 586 insertions(+), 383 deletions(-) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 97064c3d..284b2451 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -393,7 +393,9 @@ existing code that uses [gmp]. * Formatted IO for this type does not support octal or hexadecimal notation for negative values, as a result performing formatted output on this type when the argument is negative and either of the flags `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. -* Division by zero is handled by the [gmp] library - it will trigger a division by zero signal. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted +as a valid integer. +* Division by zero results in a `std::runtime_error` being thrown. * Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir] is recommended on Win32. * This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. @@ -429,7 +431,9 @@ operator`~` is deliberately not implemented for this type. * Formatted IO for this type does not support octal or hexadecimal notation for negative values, as a result performing formatted output on this type when the argument is negative and either of the flags `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. -* Division by zero will result in a hardware signal being raised by [tommath]. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted +as a valid integer. +* Division by zero results in a `std::runtime_error` being thrown. [h5 Example:] @@ -506,6 +510,7 @@ Things you should know when using this type: * Default constructed `gmp_float`s have the value zero (this is the [gmp] library's default behavior). * No changes are made to the [gmp] library's global settings, so this type can be safely mixed with existing [gmp] code. +* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. * It is not possible to round-trip objects of this type to and from a string and get back exactly the same value. This appears to be a limitation of [gmp]. * Since the underlying [gmp] types have no notion of infinities or NaN's, care should be taken @@ -515,6 +520,9 @@ library (in testing, converting a number with an excessively large or small expo to a string caused [gmp] to segfault). * This type can equally be used with [mpir] as the underlying implementation - indeed that is the recommended option on Win32. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted +as a valid floating point number. +* Division by zero results in a `std::runtime_error` being thrown. [h5 [gmp] example:] @@ -568,6 +576,9 @@ Things you should know when using this type: [mpfr] or [gmp] code. * The code can equally use [mpir] in place of [gmp] - indeed that is the preferred option on Win32. * This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted +as a valid floating point number. +* Division by zero results in an infinity. [h5 [mpfr] example:] @@ -613,6 +624,8 @@ and a NaN is generated for any mathematically undefined operation. * Any `mp_number` instantiated on this type, is convertible to any other `mp_number` instantiated on this type - for example you can convert from `mp_number >` to `mp_number >`. Narrowing conversions are truncating. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted +as a valid floating point number. [h5 cpp_dec_float example:] @@ -711,7 +724,9 @@ It's also possible to access the underlying `mpq_t` via the `data()` member func Things you should know when using this type: * Default constructed `mpq_rational`s have the value zero (this is the [gmp] default behavior). -* Division by zero results in a hardware exception inside the [gmp] library. +* Division by zero results in a `std::runtime_error` being thrown. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be +interpreted as a valid rational number. * No changes are made to the [gmp] library's global settings, so this type can coexist with existing [gmp] code. * The code can equally be used with [mpir] as the underlying library - indeed that is the preferred option on Win32. @@ -753,6 +768,8 @@ Things you should know when using this type: * Default constructed `cpp_rational`s have the value zero. * Division by zero results in a `std::rumtime_error` being thrown. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be +interpreted as a valid rational number. [h5 Example:] @@ -788,7 +805,9 @@ which return the numerator and denominator of the number. Things you should know when using this type: * Default constructed `tom_rational`s have the value zero (this the inherited Boost.Rational behavior). -* Division by zero results in a `boost::bad_rational` exception being thrown (see the rational number library's docs for more information). +* Division by zero results in a `std::runtime_error` being thrown. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be +interpreted as a valid rational number. * No changes are made to [tommath]'s global state, so this type can safely coexist with other [tommath] code. * Performance of this type has been found to be pretty poor - this need further investigation - but it appears that Boost.Rational needs some improvement in this area. diff --git a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp index e82f69ac..d10449cc 100644 --- a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp @@ -67,7 +67,14 @@ struct mp_number_backend_float_architype } mp_number_backend_float_architype& operator = (const char* s) { - m_value = boost::lexical_cast(s); + try + { + m_value = boost::lexical_cast(s); + } + catch(const std::exception&) + { + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Unable to parse input string: \"") + s + std::string("\" as a valid floating point number."))); + } std::cout << "const char* Assignment (" << s << ")" << std::endl; return *this; } diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 5b6233fa..3110088a 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -90,7 +90,7 @@ private: // // Special values constructor: // - cpp_dec_float(fpclass_type c) : + cpp_dec_float(fpclass_type c) BOOST_NOEXCEPT : data(), exp (static_cast(0)), neg (false), @@ -129,7 +129,7 @@ private: public: // Constructors - cpp_dec_float() : + cpp_dec_float() BOOST_NOEXCEPT : data(), exp (static_cast(0)), neg (false), @@ -147,7 +147,7 @@ public: } template - cpp_dec_float(I i, typename enable_if >::type* = 0) : + cpp_dec_float(I i, typename enable_if >::type* = 0) BOOST_NOEXCEPT : data(), exp (static_cast(0)), neg (false), @@ -158,7 +158,7 @@ public: } template - cpp_dec_float(I i, typename enable_if >::type* = 0) : + cpp_dec_float(I i, typename enable_if >::type* = 0) BOOST_NOEXCEPT : data(), exp (static_cast(0)), neg (false), @@ -174,7 +174,7 @@ public: from_unsigned_long_long(i); } - cpp_dec_float(const cpp_dec_float& f) : + cpp_dec_float(const cpp_dec_float& f) BOOST_NOEXCEPT : data (f.data), exp (f.exp), neg (f.neg), @@ -182,7 +182,7 @@ public: prec_elem(f.prec_elem) { } template - cpp_dec_float(const cpp_dec_float& f) : + cpp_dec_float(const cpp_dec_float& f) BOOST_NOEXCEPT : exp (f.exp), neg (f.neg), fpclass (static_cast(static_cast(f.fpclass))), @@ -194,7 +194,7 @@ public: } template - cpp_dec_float(const F val, typename enable_if >::type* = 0): + cpp_dec_float(const F val, typename enable_if >::type* = 0) BOOST_NOEXCEPT : data(), exp (static_cast(0)), neg (false), @@ -204,22 +204,22 @@ public: *this = val; } - cpp_dec_float(const double val, long long exponent); + cpp_dec_float(const double val, long long exponent) BOOST_NOEXCEPT; // Specific special values. - static const cpp_dec_float& nan() + static const cpp_dec_float& nan() BOOST_NOEXCEPT { static const cpp_dec_float val(cpp_dec_float_NaN); init.do_nothing(); return val; } - static const cpp_dec_float& inf() + static const cpp_dec_float& inf() BOOST_NOEXCEPT { static const cpp_dec_float val(cpp_dec_float_inf); init.do_nothing(); return val; } - static const cpp_dec_float& (max)() + static const cpp_dec_float& (max)() BOOST_NOEXCEPT { init.do_nothing(); static bool init = false; @@ -234,7 +234,7 @@ public: return val_max; } - static const cpp_dec_float& (min)() + static const cpp_dec_float& (min)() BOOST_NOEXCEPT { init.do_nothing(); static bool init = false; @@ -246,73 +246,73 @@ public: } return val_min; } - static const cpp_dec_float& zero() + static const cpp_dec_float& zero() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val(static_cast(0u)); return val; } - static const cpp_dec_float& one() + static const cpp_dec_float& one() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val(static_cast(1u)); return val; } - static const cpp_dec_float& two() + static const cpp_dec_float& two() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val(static_cast(2u)); return val; } - static const cpp_dec_float& half() + static const cpp_dec_float& half() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val(0.5L); return val; } - static const cpp_dec_float& double_min() + static const cpp_dec_float& double_min() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val(static_cast((std::numeric_limits::min)())); return val; } - static const cpp_dec_float& double_max() + static const cpp_dec_float& double_max() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val(static_cast((std::numeric_limits::max)())); return val; } - static const cpp_dec_float& long_double_min() + static const cpp_dec_float& long_double_min() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val((std::numeric_limits::min)()); return val; } - static const cpp_dec_float& long_double_max() + static const cpp_dec_float& long_double_max() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val((std::numeric_limits::max)()); return val; } - static const cpp_dec_float& long_long_max() + static const cpp_dec_float& long_long_max() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val((std::numeric_limits::max)()); return val; } - static const cpp_dec_float& long_long_min() + static const cpp_dec_float& long_long_min() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val((std::numeric_limits::min)()); return val; } - static const cpp_dec_float& ulong_long_max() + static const cpp_dec_float& ulong_long_max() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val((std::numeric_limits::max)()); return val; } - static const cpp_dec_float& eps() + static const cpp_dec_float& eps() BOOST_NOEXCEPT { init.do_nothing(); static cpp_dec_float val(1.0, 1 - (int)Digits10); @@ -320,7 +320,7 @@ public: } // Basic operations. - cpp_dec_float& operator= (const cpp_dec_float& v) + cpp_dec_float& operator= (const cpp_dec_float& v) BOOST_NOEXCEPT { data = v.data; exp = v.exp; @@ -330,7 +330,7 @@ public: return *this; } template - cpp_dec_float& operator=(const cpp_dec_float& f) + cpp_dec_float& operator=(const cpp_dec_float& f) BOOST_NOEXCEPT { exp = f.exp; neg = f.neg; @@ -339,7 +339,7 @@ public: precision((std::min)(f.prec_elem, prec_elem)); return *this; } - cpp_dec_float& operator= (long long v) + cpp_dec_float& operator= (long long v) BOOST_NOEXCEPT { if(v < 0) { @@ -350,82 +350,82 @@ public: from_unsigned_long_long(v); return *this; } - cpp_dec_float& operator= (unsigned long long v) + cpp_dec_float& operator= (unsigned long long v) BOOST_NOEXCEPT { from_unsigned_long_long(v); return *this; } - cpp_dec_float& operator= (long double v); + cpp_dec_float& operator= (long double v) BOOST_NOEXCEPT; cpp_dec_float& operator= (const char* v) { rd_string(v); return *this; } - cpp_dec_float& operator+=(const cpp_dec_float& v); - cpp_dec_float& operator-=(const cpp_dec_float& v); - cpp_dec_float& operator*=(const cpp_dec_float& v); - cpp_dec_float& operator/=(const cpp_dec_float& v); + cpp_dec_float& operator+=(const cpp_dec_float& v) BOOST_NOEXCEPT; + cpp_dec_float& operator-=(const cpp_dec_float& v) BOOST_NOEXCEPT; + cpp_dec_float& operator*=(const cpp_dec_float& v) BOOST_NOEXCEPT; + cpp_dec_float& operator/=(const cpp_dec_float& v) BOOST_NOEXCEPT; - cpp_dec_float& add_unsigned_long_long(const unsigned long long n) + cpp_dec_float& add_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT { cpp_dec_float t; t.from_unsigned_long_long(n); return *this += t; } - cpp_dec_float& sub_unsigned_long_long(const unsigned long long n) + cpp_dec_float& sub_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT { cpp_dec_float t; t.from_unsigned_long_long(n); return *this -= t; } - cpp_dec_float& mul_unsigned_long_long(const unsigned long long n); - cpp_dec_float& div_unsigned_long_long(const unsigned long long n); + cpp_dec_float& mul_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT; + cpp_dec_float& div_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT; // Elementary primitives. - cpp_dec_float& calculate_inv (void); - cpp_dec_float& calculate_sqrt(void); - void negate() + cpp_dec_float& calculate_inv (void) BOOST_NOEXCEPT; + cpp_dec_float& calculate_sqrt(void) BOOST_NOEXCEPT; + void negate() BOOST_NOEXCEPT { if(!iszero()) neg = !neg; } // Comparison functions - bool isnan (void) const { return (fpclass == cpp_dec_float_NaN); } - bool isinf (void) const { return (fpclass == cpp_dec_float_inf); } - bool isfinite(void) const { return (fpclass == cpp_dec_float_finite); } + bool isnan (void) const BOOST_NOEXCEPT { return (fpclass == cpp_dec_float_NaN); } + bool isinf (void) const BOOST_NOEXCEPT { return (fpclass == cpp_dec_float_inf); } + bool isfinite(void) const BOOST_NOEXCEPT { return (fpclass == cpp_dec_float_finite); } - bool iszero (void) const + bool iszero (void) const BOOST_NOEXCEPT { return ((fpclass == cpp_dec_float_finite) && (data[0u] == 0u)); } - bool isone (void) const; - bool isint (void) const; - bool isneg (void) const { return neg; } + bool isone (void) const BOOST_NOEXCEPT; + bool isint (void) const BOOST_NOEXCEPT; + bool isneg (void) const BOOST_NOEXCEPT { return neg; } // Operators pre-increment and pre-decrement - cpp_dec_float& operator++(void) + cpp_dec_float& operator++(void) BOOST_NOEXCEPT { return *this += one(); } - cpp_dec_float& operator--(void) + cpp_dec_float& operator--(void) BOOST_NOEXCEPT { return *this -= one(); } std::string str(boost::intmax_t digits, std::ios_base::fmtflags f)const; - int compare(const cpp_dec_float& v)const; + int compare(const cpp_dec_float& v)const BOOST_NOEXCEPT; template - int compare(const V& v)const + int compare(const V& v)const BOOST_NOEXCEPT { cpp_dec_float t; t = v; return compare(t); } - void swap(cpp_dec_float& v) + void swap(cpp_dec_float& v) BOOST_NOEXCEPT { data.swap(v.data); std::swap(exp, v.exp); @@ -434,13 +434,13 @@ public: std::swap(prec_elem, v.prec_elem); } - double extract_double (void) const; - long double extract_long_double (void) const; - signed long long extract_signed_long_long (void) const; - unsigned long long extract_unsigned_long_long(void) const; - void extract_parts (double& mantissa, boost::int64_t& exponent) const; - cpp_dec_float extract_integer_part (void) const; - void precision(const boost::int32_t prec_digits) + double extract_double (void) const BOOST_NOEXCEPT; + long double extract_long_double (void) const BOOST_NOEXCEPT; + signed long long extract_signed_long_long (void) const BOOST_NOEXCEPT; + unsigned long long extract_unsigned_long_long(void) const BOOST_NOEXCEPT; + void extract_parts (double& mantissa, boost::int64_t& exponent) const BOOST_NOEXCEPT; + cpp_dec_float extract_integer_part (void) const BOOST_NOEXCEPT; + void precision(const boost::int32_t prec_digits) BOOST_NOEXCEPT { if(prec_digits >= cpp_dec_float_total_digits10) { @@ -454,8 +454,8 @@ public: prec_elem = (std::min)(cpp_dec_float_elem_number, (std::max)(elems, static_cast(2))); } } - static cpp_dec_float pow2(long long i); - long long order()const + static cpp_dec_float pow2(long long i) BOOST_NOEXCEPT; + long long order()const BOOST_NOEXCEPT { const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); // @@ -507,18 +507,18 @@ public: } private: - static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast(0u)); } - static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast(cpp_dec_float::cpp_dec_float_elem_mask - 1)); } - static bool char_is_nonzero_predicate(const char& c) { return (c != static_cast('0')); } + static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) BOOST_NOEXCEPT { return (d != static_cast(0u)); } + static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) BOOST_NOEXCEPT { return (d != static_cast(cpp_dec_float::cpp_dec_float_elem_mask - 1)); } + static bool char_is_nonzero_predicate(const char& c) BOOST_NOEXCEPT { return (c != static_cast('0')); } - void from_unsigned_long_long(const unsigned long long u); + void from_unsigned_long_long(const unsigned long long u) BOOST_NOEXCEPT; - int cmp_data(const array_type& vd) const; + int cmp_data(const array_type& vd) const BOOST_NOEXCEPT; - static boost::uint32_t mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p); - static boost::uint32_t mul_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); - static boost::uint32_t div_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p); + static boost::uint32_t mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p) BOOST_NOEXCEPT; + static boost::uint32_t mul_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT; + static boost::uint32_t div_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT; bool rd_string(const char* const s); @@ -559,7 +559,7 @@ const boost::int32_t cpp_dec_float::cpp_dec_float_elem_mask; template -cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float& v) +cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float& v) BOOST_NOEXCEPT { if(isnan()) { @@ -779,7 +779,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float } template -cpp_dec_float& cpp_dec_float::operator-=(const cpp_dec_float& v) +cpp_dec_float& cpp_dec_float::operator-=(const cpp_dec_float& v) BOOST_NOEXCEPT { // Use *this - v = -(-*this + v). negate(); @@ -789,7 +789,7 @@ cpp_dec_float& cpp_dec_float::operator-=(const cpp_dec_float } template -cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float& v) +cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float& v) BOOST_NOEXCEPT { // Evaluate the sign of the result. const bool b_result_is_neg = (neg != v.neg); @@ -882,7 +882,7 @@ cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float } template -cpp_dec_float& cpp_dec_float::operator/=(const cpp_dec_float& v) +cpp_dec_float& cpp_dec_float::operator/=(const cpp_dec_float& v) BOOST_NOEXCEPT { const bool u_and_v_are_finite_and_identical = ( isfinite() && (fpclass == v.fpclass) @@ -917,7 +917,7 @@ cpp_dec_float& cpp_dec_float::operator/=(const cpp_dec_float } template -cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const unsigned long long n) +cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT { // Multiply *this with a constant unsigned long long. @@ -1012,7 +1012,7 @@ cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const u } template -cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const unsigned long long n) +cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT { // Divide *this by a constant unsigned long long. @@ -1101,7 +1101,7 @@ cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const u } template -cpp_dec_float& cpp_dec_float::calculate_inv() +cpp_dec_float& cpp_dec_float::calculate_inv() BOOST_NOEXCEPT { // Compute the inverse of *this. const bool b_neg = neg; @@ -1175,7 +1175,7 @@ cpp_dec_float& cpp_dec_float::calculate_inv() } template -cpp_dec_float& cpp_dec_float::calculate_sqrt(void) +cpp_dec_float& cpp_dec_float::calculate_sqrt(void) BOOST_NOEXCEPT { // Compute the square root of *this. @@ -1258,7 +1258,7 @@ cpp_dec_float& cpp_dec_float::calculate_sqrt(void) } template -int cpp_dec_float::cmp_data(const array_type& vd) const +int cpp_dec_float::cmp_data(const array_type& vd) const BOOST_NOEXCEPT { // Compare the data of *this with those of v. // Return +1 for *this > v @@ -1280,7 +1280,7 @@ int cpp_dec_float::cmp_data(const array_type& vd) const } template -int cpp_dec_float::compare(const cpp_dec_float& v) const +int cpp_dec_float::compare(const cpp_dec_float& v) const BOOST_NOEXCEPT { // Compare v with *this. // Return +1 for *this > v @@ -1358,7 +1358,7 @@ int cpp_dec_float::compare(const cpp_dec_float& v) const } template -bool cpp_dec_float::isone() const +bool cpp_dec_float::isone() const BOOST_NOEXCEPT { // Check if the value of *this is identically 1 or very close to 1. @@ -1382,7 +1382,7 @@ bool cpp_dec_float::isone() const } template -bool cpp_dec_float::isint() const +bool cpp_dec_float::isint() const BOOST_NOEXCEPT { if(fpclass != cpp_dec_float_finite) { return false; } @@ -1405,7 +1405,7 @@ bool cpp_dec_float::isint() const } template -void cpp_dec_float::extract_parts(double& mantissa, boost::int64_t& exponent) const +void cpp_dec_float::extract_parts(double& mantissa, boost::int64_t& exponent) const BOOST_NOEXCEPT { // Extract the approximate parts mantissa and base-10 exponent from the input cpp_dec_float value x. @@ -1438,7 +1438,7 @@ void cpp_dec_float::extract_parts(double& mantissa, boost::int64_t& ex } template -double cpp_dec_float::extract_double(void) const +double cpp_dec_float::extract_double(void) const BOOST_NOEXCEPT { // Returns the double conversion of a cpp_dec_float. @@ -1484,7 +1484,7 @@ double cpp_dec_float::extract_double(void) const } template -long double cpp_dec_float::extract_long_double(void) const +long double cpp_dec_float::extract_long_double(void) const BOOST_NOEXCEPT { // Returns the long double conversion of a cpp_dec_float. @@ -1530,7 +1530,7 @@ long double cpp_dec_float::extract_long_double(void) const } template -signed long long cpp_dec_float::extract_signed_long_long(void) const +signed long long cpp_dec_float::extract_signed_long_long(void) const BOOST_NOEXCEPT { // Extracts a signed long long from *this. // If (x > maximum of signed long long) or (x < minimum of signed long long), @@ -1575,7 +1575,7 @@ signed long long cpp_dec_float::extract_signed_long_long(void) const } template -unsigned long long cpp_dec_float::extract_unsigned_long_long(void) const +unsigned long long cpp_dec_float::extract_unsigned_long_long(void) const BOOST_NOEXCEPT { // Extracts an unsigned long long from *this. // If x exceeds the maximum of unsigned long long, @@ -1619,7 +1619,7 @@ unsigned long long cpp_dec_float::extract_unsigned_long_long(void) con } template -cpp_dec_float cpp_dec_float::extract_integer_part(void) const +cpp_dec_float cpp_dec_float::extract_integer_part(void) const BOOST_NOEXCEPT { // Compute the signed integer part of x. @@ -2079,7 +2079,7 @@ bool cpp_dec_float::rd_string(const char* const s) } template -cpp_dec_float::cpp_dec_float(const double mantissa, const long long exponent) +cpp_dec_float::cpp_dec_float(const double mantissa, const long long exponent) BOOST_NOEXCEPT : data (), exp (static_cast(0)), neg (false), @@ -2131,7 +2131,7 @@ cpp_dec_float::cpp_dec_float(const double mantissa, const long long ex } template -cpp_dec_float& cpp_dec_float::operator = (long double a) +cpp_dec_float& cpp_dec_float::operator = (long double a) BOOST_NOEXCEPT { // Christopher Kormanyos's original code used a cast to long long here, but that fails // when long double has more digits than a long long. @@ -2181,7 +2181,7 @@ cpp_dec_float& cpp_dec_float::operator = (long double a) } template -void cpp_dec_float::from_unsigned_long_long(const unsigned long long u) +void cpp_dec_float::from_unsigned_long_long(const unsigned long long u) BOOST_NOEXCEPT { std::fill(data.begin(), data.end(), static_cast(0u)); @@ -2213,7 +2213,7 @@ void cpp_dec_float::from_unsigned_long_long(const unsigned long long u } template -boost::uint32_t cpp_dec_float::mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p) +boost::uint32_t cpp_dec_float::mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p) BOOST_NOEXCEPT { // // There is a limit on how many limbs this algorithm can handle without dropping digits @@ -2242,7 +2242,7 @@ boost::uint32_t cpp_dec_float::mul_loop_uv(boost::uint32_t* const u, c } template -boost::uint32_t cpp_dec_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +boost::uint32_t cpp_dec_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT { boost::uint64_t carry = static_cast(0u); @@ -2258,7 +2258,7 @@ boost::uint32_t cpp_dec_float::mul_loop_n(boost::uint32_t* const u, bo } template -boost::uint32_t cpp_dec_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) +boost::uint32_t cpp_dec_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT { boost::uint64_t prev = static_cast(0u); @@ -2273,7 +2273,7 @@ boost::uint32_t cpp_dec_float::div_loop_n(boost::uint32_t* const u, bo } template -cpp_dec_float cpp_dec_float::pow2(const long long p) +cpp_dec_float cpp_dec_float::pow2(const long long p) BOOST_NOEXCEPT { // Create a static const table of p^2 for -128 < p < +128. // Note: The size of this table must be odd-numbered and @@ -2563,49 +2563,49 @@ cpp_dec_float cpp_dec_float::pow2(const long long p) template -inline void eval_add(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_add(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result += o; } template -inline void eval_subtract(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_subtract(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result -= o; } template -inline void eval_multiply(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_multiply(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result *= o; } template -inline void eval_divide(cpp_dec_float& result, const cpp_dec_float& o) +inline void eval_divide(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result /= o; } template -inline void eval_add(cpp_dec_float& result, const unsigned long long& o) +inline void eval_add(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.add_unsigned_long_long(o); } template -inline void eval_subtract(cpp_dec_float& result, const unsigned long long& o) +inline void eval_subtract(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.sub_unsigned_long_long(o); } template -inline void eval_multiply(cpp_dec_float& result, const unsigned long long& o) +inline void eval_multiply(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.mul_unsigned_long_long(o); } template -inline void eval_divide(cpp_dec_float& result, const unsigned long long& o) +inline void eval_divide(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.div_unsigned_long_long(o); } template -inline void eval_add(cpp_dec_float& result, long long o) +inline void eval_add(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) result.sub_unsigned_long_long(-o); @@ -2613,7 +2613,7 @@ inline void eval_add(cpp_dec_float& result, long long o) result.add_unsigned_long_long(o); } template -inline void eval_subtract(cpp_dec_float& result, long long o) +inline void eval_subtract(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) result.add_unsigned_long_long(-o); @@ -2621,7 +2621,7 @@ inline void eval_subtract(cpp_dec_float& result, long long o) result.sub_unsigned_long_long(o); } template -inline void eval_multiply(cpp_dec_float& result, long long o) +inline void eval_multiply(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) { @@ -2632,7 +2632,7 @@ inline void eval_multiply(cpp_dec_float& result, long long o) result.mul_unsigned_long_long(o); } template -inline void eval_divide(cpp_dec_float& result, long long o) +inline void eval_divide(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) { @@ -2644,17 +2644,17 @@ inline void eval_divide(cpp_dec_float& result, long long o) } template -inline void eval_convert_to(unsigned long long* result, const cpp_dec_float& val) +inline void eval_convert_to(unsigned long long* result, const cpp_dec_float& val) BOOST_NOEXCEPT { *result = val.extract_unsigned_long_long(); } template -inline void eval_convert_to(long long* result, const cpp_dec_float& val) +inline void eval_convert_to(long long* result, const cpp_dec_float& val) BOOST_NOEXCEPT { *result = val.extract_signed_long_long(); } template -inline void eval_convert_to(long double* result, cpp_dec_float& val) +inline void eval_convert_to(long double* result, cpp_dec_float& val) BOOST_NOEXCEPT { *result = val.extract_long_double(); } @@ -2663,7 +2663,7 @@ inline void eval_convert_to(long double* result, cpp_dec_float& val) // Non member function support: // template -inline int eval_fpclassify(const cpp_dec_float& x) +inline int eval_fpclassify(const cpp_dec_float& x) BOOST_NOEXCEPT { if(x.isinf()) return FP_INFINITE; @@ -2675,7 +2675,7 @@ inline int eval_fpclassify(const cpp_dec_float& x) } template -inline void eval_abs(cpp_dec_float& result, const cpp_dec_float& x) +inline void eval_abs(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(x.isneg()) @@ -2683,7 +2683,7 @@ inline void eval_abs(cpp_dec_float& result, const cpp_dec_float -inline void eval_fabs(cpp_dec_float& result, const cpp_dec_float& x) +inline void eval_fabs(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(x.isneg()) @@ -2691,14 +2691,14 @@ inline void eval_fabs(cpp_dec_float& result, const cpp_dec_float -inline void eval_sqrt(cpp_dec_float& result, const cpp_dec_float& x) +inline void eval_sqrt(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; result.calculate_sqrt(); } template -inline void eval_floor(cpp_dec_float& result, const cpp_dec_float& x) +inline void eval_floor(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(!x.isfinite() || x.isint()) @@ -2712,7 +2712,7 @@ inline void eval_floor(cpp_dec_float& result, const cpp_dec_float -inline void eval_ceil(cpp_dec_float& result, const cpp_dec_float& x) +inline void eval_ceil(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(!x.isfinite() || x.isint()) @@ -2742,7 +2742,7 @@ inline void eval_trunc(cpp_dec_float& result, const cpp_dec_float -inline void eval_ldexp(cpp_dec_float& result, const cpp_dec_float& x, long long e) +inline void eval_ldexp(cpp_dec_float& result, const cpp_dec_float& x, long long e) BOOST_NOEXCEPT { result = x; result *= cpp_dec_float::pow2(e); @@ -2827,12 +2827,12 @@ inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float -inline bool eval_is_zero(const cpp_dec_float& val) +inline bool eval_is_zero(const cpp_dec_float& val) BOOST_NOEXCEPT { return val.iszero(); } template -inline int eval_get_sign(const cpp_dec_float& val) +inline int eval_get_sign(const cpp_dec_float& val) BOOST_NOEXCEPT { return val.iszero() ? 0 : val.isneg() ? -1 : 1; } diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index bb4afa86..de26540f 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -24,7 +24,7 @@ namespace backends{ #ifdef BOOST_MSVC // warning C4127: conditional expression is constant #pragma warning(push) -#pragma warning(disable:4127) +#pragma warning(disable:4127 4351) #endif template > @@ -114,7 +114,6 @@ public: limb_pointer p = limbs(); while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1), m_sign(false), m_internal(true) { } @@ -1158,7 +1157,7 @@ inline void eval_multiply(cpp_int_backend& result, c eval_multiply(result, result, val); } template -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) { if((result == &x) || (&r == &x)) { @@ -1425,7 +1424,7 @@ void divide_unsigned_helper(cpp_int_backend* result, } template -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) { if((result == &x) || (&r == &x)) { @@ -1568,20 +1567,20 @@ void divide_unsigned_helper(cpp_int_backend* result, } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); result.sign(a.sign() != b.sign()); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) { cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) { cpp_int_backend r; divide_unsigned_helper(&result, a, std::abs(b), r); @@ -1589,58 +1588,58 @@ inline void eval_divide(cpp_int_backend& result, con result.negate(); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_divide(cpp_int_backend& result, limb_type b) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, signed_limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_divide(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { divide_unsigned_helper(static_cast* >(0), a, b, result); result.sign(a.sign()); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) { divide_unsigned_helper(static_cast* >(0), a, b, result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) { divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_modulus(cpp_int_backend& result, limb_type b) { // There is no in place divide: cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: cpp_int_backend a(result); @@ -1777,17 +1776,17 @@ struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCE struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; template -inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT +inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_and()); } template -inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_or()); } template -inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_xor()); } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp index 92f0b691..2d3e0b89 100644 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ b/include/boost/multiprecision/detail/mp_number_base.hpp @@ -41,7 +41,7 @@ namespace detail{ // Workaround for missing abs(long long) on some compilers: // template -typename boost::enable_if, T>::type abs(const T& t) +typename boost::enable_if, T>::type abs(const T& t) BOOST_NOEXCEPT { return t < 0 ? -t : t; } @@ -258,7 +258,7 @@ struct mp_exp left_type left()const { return left_type(arg); } - const Arg1& left_ref()const{ return arg; } + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg; } static const unsigned depth = left_type::depth + 1; @@ -282,7 +282,7 @@ struct mp_exp explicit mp_exp(const Arg1& a) : arg(a) {} - const Arg1& value()const { return arg; } + const Arg1& value()const BOOST_NOEXCEPT { return arg; } static const unsigned depth = 0; @@ -311,8 +311,8 @@ struct mp_exp left_type left()const { return left_type(arg1); } right_type right()const { return right_type(arg2); } - const Arg1& left_ref()const{ return arg1; } - const Arg2& right_ref()const{ return arg2; } + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } + const Arg2& right_ref()const BOOST_NOEXCEPT { return arg2; } operator unmentionable_type()const { @@ -350,9 +350,9 @@ struct mp_exp left_type left()const { return left_type(arg1); } middle_type middle()const { return middle_type(arg2); } right_type right()const { return right_type(arg3); } - const Arg1& left_ref()const{ return arg1; } - const Arg2& middle_ref()const{ return arg2; } - const Arg3& right_ref()const{ return arg3; } + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } + const Arg2& middle_ref()const BOOST_NOEXCEPT { return arg2; } + const Arg3& right_ref()const BOOST_NOEXCEPT { return arg3; } operator unmentionable_type()const { @@ -398,10 +398,10 @@ struct mp_exp left_middle_type left_middle()const { return left_middle_type(arg2); } right_middle_type right_middle()const { return right_middle_type(arg3); } right_type right()const { return right_type(arg4); } - const Arg1& left_ref()const{ return arg1; } - const Arg2& left_middle_ref()const{ return arg2; } - const Arg3& right_middle_ref()const{ return arg3; } - const Arg4& right_ref()const{ return arg4; } + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } + const Arg2& left_middle_ref()const BOOST_NOEXCEPT { return arg2; } + const Arg3& right_middle_ref()const BOOST_NOEXCEPT { return arg3; } + const Arg4& right_ref()const BOOST_NOEXCEPT { return arg4; } operator unmentionable_type()const { diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index a4b0a33d..9a46792c 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -30,6 +30,11 @@ namespace backends{ template struct gmp_float; +// +// Within this file, the only functions we mark as noexcept are those that manipulate +// (but don't create) an mpf_t. All other types may allocate at pretty much any time +// via a user-supplied allocator, and therefore throw. +// namespace detail{ template @@ -40,7 +45,7 @@ struct gmp_float_imp typedef mpl::list float_types; typedef long exponent_type; - gmp_float_imp(){} + gmp_float_imp() BOOST_NOEXCEPT {} gmp_float_imp(const gmp_float_imp& o) { @@ -54,7 +59,7 @@ struct gmp_float_imp mpf_set(m_data, o.m_data); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float_imp(gmp_float_imp&& o) + gmp_float_imp(gmp_float_imp&& o) BOOST_NOEXCEPT { m_data[0] = o.m_data[0]; o.m_data[0]._mp_d = 0; @@ -66,7 +71,7 @@ struct gmp_float_imp return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float_imp& operator = (gmp_float_imp&& o) + gmp_float_imp& operator = (gmp_float_imp&& o) BOOST_NOEXCEPT { mpf_swap(m_data, o.m_data); return *this; @@ -100,17 +105,17 @@ struct gmp_float_imp mpf_neg(m_data, m_data); return *this; } - gmp_float_imp& operator = (unsigned long i) + gmp_float_imp& operator = (unsigned long i) BOOST_NOEXCEPT { mpf_set_ui(m_data, i); return *this; } - gmp_float_imp& operator = (long i) + gmp_float_imp& operator = (long i) BOOST_NOEXCEPT { mpf_set_si(m_data, i); return *this; } - gmp_float_imp& operator = (double d) + gmp_float_imp& operator = (double d) BOOST_NOEXCEPT { mpf_set_d(m_data, d); return *this; @@ -163,10 +168,11 @@ struct gmp_float_imp } gmp_float_imp& operator = (const char* s) { - mpf_set_str(m_data, s, 10); + if(0 != mpf_set_str(m_data, s, 10)) + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("The string \"") + s + std::string("\"could not be interpreted as a valid floating point number."))); return *this; } - void swap(gmp_float_imp& o) + void swap(gmp_float_imp& o) BOOST_NOEXCEPT { mpf_swap(m_data, o.m_data); } @@ -265,24 +271,24 @@ struct gmp_float_imp boost::multiprecision::detail::format_float_string(result, e, org_digits, f, mpf_sgn(m_data) == 0); return result; } - ~gmp_float_imp() + ~gmp_float_imp() BOOST_NOEXCEPT { if(m_data[0]._mp_d) mpf_clear(m_data); } - void negate() + void negate() BOOST_NOEXCEPT { mpf_neg(m_data, m_data); } - int compare(const gmp_float& o)const + int compare(const gmp_float& o)const BOOST_NOEXCEPT { return mpf_cmp(m_data, o.m_data); } - int compare(long i)const + int compare(long i)const BOOST_NOEXCEPT { return mpf_cmp_si(m_data, i); } - int compare(unsigned long i)const + int compare(unsigned long i)const BOOST_NOEXCEPT { return mpf_cmp_ui(m_data, i); } @@ -293,11 +299,11 @@ struct gmp_float_imp d = v; return compare(d); } - mpf_t& data() { return m_data; } - const mpf_t& data()const { return m_data; } + mpf_t& data() BOOST_NOEXCEPT { return m_data; } + const mpf_t& data()const BOOST_NOEXCEPT { return m_data; } protected: mpf_t m_data; - static unsigned& get_default_precision() + static unsigned& get_default_precision() BOOST_NOEXCEPT { static unsigned val = 50; return val; @@ -337,7 +343,7 @@ struct gmp_float : public detail::gmp_float_imp mpf_set_q(this->m_data, val); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float(gmp_float&& o) : detail::gmp_float_imp(static_cast&&>(o)) {} + gmp_float(gmp_float&& o) BOOST_NOEXCEPT : detail::gmp_float_imp(static_cast&&>(o)) {} #endif gmp_float& operator=(const gmp_float& o) { @@ -345,7 +351,7 @@ struct gmp_float : public detail::gmp_float_imp return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float& operator=(gmp_float&& o) + gmp_float& operator=(gmp_float&& o) BOOST_NOEXCEPT { *static_cast*>(this) = static_cast&&>(o); return *this; @@ -355,17 +361,17 @@ struct gmp_float : public detail::gmp_float_imp gmp_float& operator=(const gmp_float& o); gmp_float& operator=(const gmp_int& o); gmp_float& operator=(const gmp_rational& o); - gmp_float& operator=(const mpf_t& val) + gmp_float& operator=(const mpf_t& val) BOOST_NOEXCEPT { mpf_set(this->m_data, val); return *this; } - gmp_float& operator=(const mpz_t& val) + gmp_float& operator=(const mpz_t& val) BOOST_NOEXCEPT { mpf_set_z(this->m_data, val); return *this; } - gmp_float& operator=(const mpq_t& val) + gmp_float& operator=(const mpq_t& val) BOOST_NOEXCEPT { mpf_set_q(this->m_data, val); return *this; @@ -412,7 +418,7 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> mpf_set(this->m_data, o.data()); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float(gmp_float&& o) : detail::gmp_float_imp<0>(static_cast&&>(o)) {} + gmp_float(gmp_float&& o) BOOST_NOEXCEPT : detail::gmp_float_imp<0>(static_cast&&>(o)) {} #endif gmp_float(const gmp_int& o); gmp_float(const gmp_rational& o); @@ -428,7 +434,7 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_float& operator=(gmp_float&& o) + gmp_float& operator=(gmp_float&& o) BOOST_NOEXCEPT { *static_cast*>(this) = static_cast &&>(o); return *this; @@ -463,66 +469,75 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> *static_cast*>(this) = v; return *this; } - static unsigned default_precision() + static unsigned default_precision() BOOST_NOEXCEPT { return get_default_precision(); } - static void default_precision(unsigned v) + static void default_precision(unsigned v) BOOST_NOEXCEPT { get_default_precision() = v; } - unsigned precision()const + unsigned precision()const BOOST_NOEXCEPT { return mpf_get_prec(this->m_data) * 301L / 1000 - 1; } - void precision(unsigned digits10) + void precision(unsigned digits10) BOOST_NOEXCEPT { mpf_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); } }; template -inline void eval_add(gmp_float& result, const gmp_float& o) +inline void eval_add(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT { mpf_add(result.data(), result.data(), o.data()); } template -inline void eval_subtract(gmp_float& result, const gmp_float& o) +inline void eval_subtract(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT { mpf_sub(result.data(), result.data(), o.data()); } template -inline void eval_multiply(gmp_float& result, const gmp_float& o) +inline void eval_multiply(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT { mpf_mul(result.data(), result.data(), o.data()); } template +inline bool eval_is_zero(const gmp_float& val) BOOST_NOEXCEPT +{ + return mpf_sgn(val.data()) == 0; +} +template inline void eval_divide(gmp_float& result, const gmp_float& o) { + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpf_div(result.data(), result.data(), o.data()); } template -inline void eval_add(gmp_float& result, unsigned long i) +inline void eval_add(gmp_float& result, unsigned long i) BOOST_NOEXCEPT { mpf_add_ui(result.data(), result.data(), i); } template -inline void eval_subtract(gmp_float& result, unsigned long i) +inline void eval_subtract(gmp_float& result, unsigned long i) BOOST_NOEXCEPT { mpf_sub_ui(result.data(), result.data(), i); } template -inline void eval_multiply(gmp_float& result, unsigned long i) +inline void eval_multiply(gmp_float& result, unsigned long i) BOOST_NOEXCEPT { mpf_mul_ui(result.data(), result.data(), i); } template inline void eval_divide(gmp_float& result, unsigned long i) { + if(i == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpf_div_ui(result.data(), result.data(), i); } template -inline void eval_add(gmp_float& result, long i) +inline void eval_add(gmp_float& result, long i) BOOST_NOEXCEPT { if(i > 0) mpf_add_ui(result.data(), result.data(), i); @@ -530,7 +545,7 @@ inline void eval_add(gmp_float& result, long i) mpf_sub_ui(result.data(), result.data(), std::abs(i)); } template -inline void eval_subtract(gmp_float& result, long i) +inline void eval_subtract(gmp_float& result, long i) BOOST_NOEXCEPT { if(i > 0) mpf_sub_ui(result.data(), result.data(), i); @@ -538,7 +553,7 @@ inline void eval_subtract(gmp_float& result, long i) mpf_add_ui(result.data(), result.data(), std::abs(i)); } template -inline void eval_multiply(gmp_float& result, long i) +inline void eval_multiply(gmp_float& result, long i) BOOST_NOEXCEPT { mpf_mul_ui(result.data(), result.data(), std::abs(i)); if(i < 0) @@ -547,6 +562,8 @@ inline void eval_multiply(gmp_float& result, long i) template inline void eval_divide(gmp_float& result, long i) { + if(i == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpf_div_ui(result.data(), result.data(), std::abs(i)); if(i < 0) mpf_neg(result.data(), result.data()); @@ -555,17 +572,17 @@ inline void eval_divide(gmp_float& result, long i) // Specialised 3 arg versions of the basic operators: // template -inline void eval_add(gmp_float& a, const gmp_float& x, const gmp_float& y) +inline void eval_add(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT { mpf_add(a.data(), x.data(), y.data()); } template -inline void eval_add(gmp_float& a, const gmp_float& x, unsigned long y) +inline void eval_add(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT { mpf_add_ui(a.data(), x.data(), y); } template -inline void eval_add(gmp_float& a, const gmp_float& x, long y) +inline void eval_add(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT { if(y < 0) mpf_sub_ui(a.data(), x.data(), -y); @@ -573,12 +590,12 @@ inline void eval_add(gmp_float& a, const gmp_float& x, long mpf_add_ui(a.data(), x.data(), y); } template -inline void eval_add(gmp_float& a, unsigned long x, const gmp_float& y) +inline void eval_add(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT { mpf_add_ui(a.data(), y.data(), x); } template -inline void eval_add(gmp_float& a, long x, const gmp_float& y) +inline void eval_add(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT { if(x < 0) { @@ -589,17 +606,17 @@ inline void eval_add(gmp_float& a, long x, const gmp_float& mpf_add_ui(a.data(), y.data(), x); } template -inline void eval_subtract(gmp_float& a, const gmp_float& x, const gmp_float& y) +inline void eval_subtract(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT { mpf_sub(a.data(), x.data(), y.data()); } template -inline void eval_subtract(gmp_float& a, const gmp_float& x, unsigned long y) +inline void eval_subtract(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT { mpf_sub_ui(a.data(), x.data(), y); } template -inline void eval_subtract(gmp_float& a, const gmp_float& x, long y) +inline void eval_subtract(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT { if(y < 0) mpf_add_ui(a.data(), x.data(), -y); @@ -607,12 +624,12 @@ inline void eval_subtract(gmp_float& a, const gmp_float& x, mpf_sub_ui(a.data(), x.data(), y); } template -inline void eval_subtract(gmp_float& a, unsigned long x, const gmp_float& y) +inline void eval_subtract(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT { mpf_ui_sub(a.data(), x, y.data()); } template -inline void eval_subtract(gmp_float& a, long x, const gmp_float& y) +inline void eval_subtract(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT { if(x < 0) { @@ -624,17 +641,17 @@ inline void eval_subtract(gmp_float& a, long x, const gmp_float -inline void eval_multiply(gmp_float& a, const gmp_float& x, const gmp_float& y) +inline void eval_multiply(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT { mpf_mul(a.data(), x.data(), y.data()); } template -inline void eval_multiply(gmp_float& a, const gmp_float& x, unsigned long y) +inline void eval_multiply(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT { mpf_mul_ui(a.data(), x.data(), y); } template -inline void eval_multiply(gmp_float& a, const gmp_float& x, long y) +inline void eval_multiply(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT { if(y < 0) { @@ -645,12 +662,12 @@ inline void eval_multiply(gmp_float& a, const gmp_float& x, mpf_mul_ui(a.data(), x.data(), y); } template -inline void eval_multiply(gmp_float& a, unsigned long x, const gmp_float& y) +inline void eval_multiply(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT { mpf_mul_ui(a.data(), y.data(), x); } template -inline void eval_multiply(gmp_float& a, long x, const gmp_float& y) +inline void eval_multiply(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT { if(x < 0) { @@ -664,16 +681,22 @@ inline void eval_multiply(gmp_float& a, long x, const gmp_float inline void eval_divide(gmp_float& a, const gmp_float& x, const gmp_float& y) { + if(eval_is_zero(y)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpf_div(a.data(), x.data(), y.data()); } template inline void eval_divide(gmp_float& a, const gmp_float& x, unsigned long y) { + if(y == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpf_div_ui(a.data(), x.data(), y); } template inline void eval_divide(gmp_float& a, const gmp_float& x, long y) { + if(y == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); if(y < 0) { mpf_div_ui(a.data(), x.data(), -y); @@ -685,11 +708,15 @@ inline void eval_divide(gmp_float& a, const gmp_float& x, lo template inline void eval_divide(gmp_float& a, unsigned long x, const gmp_float& y) { + if(eval_is_zero(y)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpf_ui_div(a.data(), x, y.data()); } template inline void eval_divide(gmp_float& a, long x, const gmp_float& y) { + if(eval_is_zero(y)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); if(x < 0) { mpf_ui_div(a.data(), -x, y.data()); @@ -700,18 +727,13 @@ inline void eval_divide(gmp_float& a, long x, const gmp_float -inline bool eval_is_zero(const gmp_float& val) -{ - return mpf_sgn(val.data()) == 0; -} -template -inline int eval_get_sign(const gmp_float& val) +inline int eval_get_sign(const gmp_float& val) BOOST_NOEXCEPT { return mpf_sgn(val.data()); } template -inline void eval_convert_to(unsigned long* result, const gmp_float& val) +inline void eval_convert_to(unsigned long* result, const gmp_float& val) BOOST_NOEXCEPT { if(0 == mpf_fits_ulong_p(val.data())) *result = (std::numeric_limits::max)(); @@ -719,7 +741,7 @@ inline void eval_convert_to(unsigned long* result, const gmp_float& va *result = mpf_get_ui(val.data()); } template -inline void eval_convert_to(long* result, const gmp_float& val) +inline void eval_convert_to(long* result, const gmp_float& val) BOOST_NOEXCEPT { if(0 == mpf_fits_slong_p(val.data())) { @@ -730,7 +752,7 @@ inline void eval_convert_to(long* result, const gmp_float& val) *result = mpf_get_si(val.data()); } template -inline void eval_convert_to(double* result, const gmp_float& val) +inline void eval_convert_to(double* result, const gmp_float& val) BOOST_NOEXCEPT { *result = mpf_get_d(val.data()); } @@ -804,39 +826,39 @@ inline void eval_convert_to(unsigned long long* result, const gmp_float -inline void eval_sqrt(gmp_float& result, const gmp_float& val) +inline void eval_sqrt(gmp_float& result, const gmp_float& val) BOOST_NOEXCEPT { mpf_sqrt(result.data(), val.data()); } template -inline void eval_abs(gmp_float& result, const gmp_float& val) +inline void eval_abs(gmp_float& result, const gmp_float& val) BOOST_NOEXCEPT { mpf_abs(result.data(), val.data()); } template -inline void eval_fabs(gmp_float& result, const gmp_float& val) +inline void eval_fabs(gmp_float& result, const gmp_float& val) BOOST_NOEXCEPT { mpf_abs(result.data(), val.data()); } template -inline void eval_ceil(gmp_float& result, const gmp_float& val) +inline void eval_ceil(gmp_float& result, const gmp_float& val) BOOST_NOEXCEPT { mpf_ceil(result.data(), val.data()); } template -inline void eval_floor(gmp_float& result, const gmp_float& val) +inline void eval_floor(gmp_float& result, const gmp_float& val) BOOST_NOEXCEPT { mpf_floor(result.data(), val.data()); } template -inline void eval_trunc(gmp_float& result, const gmp_float& val) +inline void eval_trunc(gmp_float& result, const gmp_float& val) BOOST_NOEXCEPT { mpf_trunc(result.data(), val.data()); } template -inline void eval_ldexp(gmp_float& result, const gmp_float& val, long e) +inline void eval_ldexp(gmp_float& result, const gmp_float& val, long e) BOOST_NOEXCEPT { if(e > 0) mpf_mul_2exp(result.data(), val.data(), e); @@ -846,7 +868,7 @@ inline void eval_ldexp(gmp_float& result, const gmp_float& v result = val; } template -inline void eval_frexp(gmp_float& result, const gmp_float& val, int* e) +inline void eval_frexp(gmp_float& result, const gmp_float& val, int* e) BOOST_NOEXCEPT { long v; mpf_get_d_2exp(&v, val.data()); @@ -854,7 +876,7 @@ inline void eval_frexp(gmp_float& result, const gmp_float& v eval_ldexp(result, val, -v); } template -inline void eval_frexp(gmp_float& result, const gmp_float& val, long* e) +inline void eval_frexp(gmp_float& result, const gmp_float& val, long* e) BOOST_NOEXCEPT { mpf_get_d_2exp(e, val.data()); eval_ldexp(result, val, -*e); @@ -875,7 +897,7 @@ struct gmp_int mpz_init_set(m_data, o.m_data); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_int(gmp_int&& o) + gmp_int(gmp_int&& o) BOOST_NOEXCEPT { m_data[0] = o.m_data[0]; o.m_data[0]._mp_d = 0; @@ -1015,7 +1037,10 @@ struct gmp_int } } if(n) - mpz_set_str(m_data, s, radix); + { + if(0 != mpz_set_str(m_data, s, radix)) + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("The string \"") + s + std::string("\"could not be interpreted as a valid integer."))); + } else mpz_set_ui(m_data, 0); return *this; @@ -1111,6 +1136,10 @@ protected: mpz_t m_data; }; +inline bool eval_is_zero(const gmp_int& val) +{ + return mpz_sgn(val.data()) == 0; +} inline void eval_add(gmp_int& t, const gmp_int& o) { mpz_add(t.data(), t.data(), o.data()); @@ -1125,6 +1154,8 @@ inline void eval_multiply(gmp_int& t, const gmp_int& o) } inline void eval_divide(gmp_int& t, const gmp_int& o) { + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpz_tdiv_q(t.data(), t.data(), o.data()); } inline void eval_modulus(gmp_int& t, const gmp_int& o) @@ -1149,6 +1180,8 @@ inline void eval_modulus(gmp_int& t, unsigned long i) } inline void eval_divide(gmp_int& t, unsigned long i) { + if(i == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), t.data(), i); } inline void eval_add(gmp_int& t, long i) @@ -1177,6 +1210,8 @@ inline void eval_modulus(gmp_int& t, long i) } inline void eval_divide(gmp_int& t, long i) { + if(i == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), t.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); @@ -1231,6 +1266,8 @@ inline void eval_multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) } inline void eval_divide(gmp_int& t, const gmp_int& p, const gmp_int& o) { + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpz_tdiv_q(t.data(), p.data(), o.data()); } inline void eval_modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) @@ -1255,6 +1292,8 @@ inline void eval_modulus(gmp_int& t, const gmp_int& p, unsigned long i) } inline void eval_divide(gmp_int& t, const gmp_int& p, unsigned long i) { + if(i == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), p.data(), i); } inline void eval_add(gmp_int& t, const gmp_int& p, long i) @@ -1283,6 +1322,8 @@ inline void eval_modulus(gmp_int& t, const gmp_int& p, long i) } inline void eval_divide(gmp_int& t, const gmp_int& p, long i) { + if(i == 0) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), p.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); @@ -1308,10 +1349,6 @@ inline void eval_complement(gmp_int& result, const gmp_int& u) mpz_com(result.data(), u.data()); } -inline bool eval_is_zero(const gmp_int& val) -{ - return mpz_sgn(val.data()) == 0; -} inline int eval_get_sign(const gmp_int& val) { return mpz_sgn(val.data()); @@ -1478,7 +1515,7 @@ struct gmp_rational mpq_set_z(m_data, o.data()); } #ifndef BOOST_NO_RVALUE_REFERENCES - gmp_rational(gmp_rational&& o) + gmp_rational(gmp_rational&& o) BOOST_NOEXCEPT { m_data[0]._mp_num = o.data()[0]._mp_num; m_data[0]._mp_den = o.data()[0]._mp_den; @@ -1594,7 +1631,8 @@ struct gmp_rational } gmp_rational& operator = (const char* s) { - mpq_set_str(m_data, s, 10); + if(0 != mpq_set_str(m_data, s, 10)) + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("The string \"") + s + std::string("\"could not be interpreted as a valid rational number."))); return *this; } gmp_rational& operator=(const gmp_int& o) @@ -1662,6 +1700,10 @@ protected: mpq_t m_data; }; +inline bool eval_is_zero(const gmp_rational& val) +{ + return mpq_sgn(val.data()) == 0; +} inline mp_number numerator(const mp_number& val) { mp_number result; @@ -1689,6 +1731,8 @@ inline void eval_multiply(gmp_rational& t, const gmp_rational& o) } inline void eval_divide(gmp_rational& t, const gmp_rational& o) { + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpq_div(t.data(), t.data(), o.data()); } inline void eval_add(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) @@ -1705,13 +1749,11 @@ inline void eval_multiply(gmp_rational& t, const gmp_rational& p, const gmp_rati } inline void eval_divide(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) { + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); mpq_div(t.data(), p.data(), o.data()); } -inline bool eval_is_zero(const gmp_rational& val) -{ - return mpq_sgn(val.data()) == 0; -} inline int eval_get_sign(const gmp_rational& val) { return mpq_sgn(val.data()); diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 43604382..174deb08 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -35,7 +35,7 @@ struct mpfr_float_imp typedef mpl::list float_types; typedef long exponent_type; - mpfr_float_imp(){} + mpfr_float_imp() BOOST_NOEXCEPT {} mpfr_float_imp(const mpfr_float_imp& o) { @@ -43,24 +43,36 @@ struct mpfr_float_imp mpfr_set(m_data, o.m_data, GMP_RNDN); } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_imp(mpfr_float_imp&& o) + mpfr_float_imp(mpfr_float_imp&& o) BOOST_NOEXCEPT { m_data[0] = o.m_data[0]; o.m_data[0]._mpfr_d = 0; } #endif - mpfr_float_imp& operator = (const mpfr_float_imp& o) + mpfr_float_imp& operator = (const mpfr_float_imp& o) BOOST_NOEXCEPT { mpfr_set(m_data, o.m_data, GMP_RNDN); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_imp& operator = (mpfr_float_imp&& o) + mpfr_float_imp& operator = (mpfr_float_imp&& o) BOOST_NOEXCEPT { mpfr_swap(m_data, o.m_data); return *this; } #endif +#ifdef _MPFR_H_HAVE_INTMAX_T + mpfr_float_imp& operator = (unsigned long long i) BOOST_NOEXCEPT + { + mpfr_set_uj(m_data, i, GMP_RNDN); + return *this; + } + mpfr_float_imp& operator = (long long i) BOOST_NOEXCEPT + { + mpfr_set_sj(m_data, i, GMP_RNDN); + return *this; + } +#else mpfr_float_imp& operator = (unsigned long long i) { unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); @@ -89,76 +101,36 @@ struct mpfr_float_imp mpfr_neg(m_data, m_data, GMP_RNDN); return *this; } - mpfr_float_imp& operator = (unsigned long i) +#endif + mpfr_float_imp& operator = (unsigned long i) BOOST_NOEXCEPT { mpfr_set_ui(m_data, i, GMP_RNDN); return *this; } - mpfr_float_imp& operator = (long i) + mpfr_float_imp& operator = (long i) BOOST_NOEXCEPT { mpfr_set_si(m_data, i, GMP_RNDN); return *this; } - mpfr_float_imp& operator = (double d) + mpfr_float_imp& operator = (double d) BOOST_NOEXCEPT { mpfr_set_d(m_data, d, GMP_RNDN); return *this; } - mpfr_float_imp& operator = (long double a) + mpfr_float_imp& operator = (long double a) BOOST_NOEXCEPT { - using std::frexp; - using std::ldexp; - using std::floor; - - if (a == 0) { - mpfr_set_si(m_data, 0, GMP_RNDN); - return *this; - } - - if (a == 1) { - mpfr_set_si(m_data, 1, GMP_RNDN); - return *this; - } - - BOOST_ASSERT(!(boost::math::isinf)(a)); - BOOST_ASSERT(!(boost::math::isnan)(a)); - - int e; - long double f, term; - mpfr_init_set_ui(m_data, 0u, GMP_RNDN); - - f = frexp(a, &e); - - static const int shift = std::numeric_limits::digits - 1; - - while(f) - { - // extract int sized bits from f: - f = ldexp(f, shift); - term = floor(f); - e -= shift; - mpfr_mul_2exp(m_data, m_data, shift, GMP_RNDN); - if(term > 0) - mpfr_add_ui(m_data, m_data, static_cast(term), GMP_RNDN); - else - mpfr_sub_ui(m_data, m_data, static_cast(-term), GMP_RNDN); - f -= term; - } - if(e > 0) - mpfr_mul_2exp(m_data, m_data, e, GMP_RNDN); - else if(e < 0) - mpfr_div_2exp(m_data, m_data, -e, GMP_RNDN); + mpfr_set_ld(m_data, a, GMP_RNDN); return *this; } mpfr_float_imp& operator = (const char* s) { if(mpfr_set_str(m_data, s, 10, GMP_RNDN) != 0) { - BOOST_THROW_EXCEPTION(std::runtime_error("Unable to parse string as a valid floating point number.")); + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Unable to parse string \"") + s + std::string("\"as a valid floating point number."))); } return *this; } - void swap(mpfr_float_imp& o) + void swap(mpfr_float_imp& o) BOOST_NOEXCEPT { mpfr_swap(m_data, o.m_data); } @@ -267,39 +239,39 @@ struct mpfr_float_imp boost::multiprecision::detail::format_float_string(result, e, org_digits, f, 0 != mpfr_zero_p(m_data)); return result; } - ~mpfr_float_imp() + ~mpfr_float_imp() BOOST_NOEXCEPT { if(m_data[0]._mpfr_d) mpfr_clear(m_data); } - void negate() + void negate() BOOST_NOEXCEPT { mpfr_neg(m_data, m_data, GMP_RNDN); } - int compare(const mpfr_float_backend& o)const + int compare(const mpfr_float_backend& o)const BOOST_NOEXCEPT { return mpfr_cmp(m_data, o.m_data); } - int compare(long i)const + int compare(long i)const BOOST_NOEXCEPT { return mpfr_cmp_si(m_data, i); } - int compare(unsigned long i)const + int compare(unsigned long i)const BOOST_NOEXCEPT { return mpfr_cmp_ui(m_data, i); } template - int compare(V v)const + int compare(V v)const BOOST_NOEXCEPT { mpfr_float_backend d; d = v; return compare(d); } - mpfr_t& data() { return m_data; } - const mpfr_t& data()const { return m_data; } + mpfr_t& data() BOOST_NOEXCEPT { return m_data; } + const mpfr_t& data()const BOOST_NOEXCEPT { return m_data; } protected: mpfr_t m_data; - static unsigned& get_default_precision() + static unsigned& get_default_precision() BOOST_NOEXCEPT { static unsigned val = 50; return val; @@ -367,7 +339,7 @@ struct mpfr_float_backend : public detail::mpfr_float_imp return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_backend& operator=(mpfr_float_backend&& o) + mpfr_float_backend& operator=(mpfr_float_backend&& o) BOOST_NOEXCEPT { *static_cast*>(this) = static_cast&&>(o); return *this; @@ -379,44 +351,44 @@ struct mpfr_float_backend : public detail::mpfr_float_imp *static_cast*>(this) = v; return *this; } - mpfr_float_backend& operator=(const mpfr_t& val) + mpfr_float_backend& operator=(const mpfr_t& val)BOOST_NOEXCEPT { mpfr_set(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpf_t& val) + mpfr_float_backend& operator=(const mpf_t& val)BOOST_NOEXCEPT { mpfr_set_f(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpz_t& val) + mpfr_float_backend& operator=(const mpz_t& val)BOOST_NOEXCEPT { mpfr_set_z(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpq_t& val) + mpfr_float_backend& operator=(const mpq_t& val)BOOST_NOEXCEPT { mpfr_set_q(this->m_data, val, GMP_RNDN); return *this; } template - mpfr_float_backend& operator=(const mpfr_float_backend& val) + mpfr_float_backend& operator=(const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_set(this->m_data, val.data(), GMP_RNDN); return *this; } template - mpfr_float_backend& operator=(const gmp_float& val) + mpfr_float_backend& operator=(const gmp_float& val) BOOST_NOEXCEPT { mpfr_set_f(this->m_data, val.data(), GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const gmp_int& val) + mpfr_float_backend& operator=(const gmp_int& val) BOOST_NOEXCEPT { mpfr_set_z(this->m_data, val.data(), GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const gmp_rational& val) + mpfr_float_backend& operator=(const gmp_rational& val) BOOST_NOEXCEPT { mpfr_set_q(this->m_data, val.data(), GMP_RNDN); return *this; @@ -456,7 +428,7 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> } mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp<0>(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp<0>(static_cast&&>(o)) {} + mpfr_float_backend(mpfr_float_backend&& o) BOOST_NOEXCEPT : detail::mpfr_float_imp<0>(static_cast&&>(o)) {} #endif mpfr_float_backend(const mpfr_float_backend& o, unsigned digits10) { @@ -492,7 +464,7 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_backend& operator=(mpfr_float_backend&& o) + mpfr_float_backend& operator=(mpfr_float_backend&& o) BOOST_NOEXCEPT { *static_cast*>(this) = static_cast &&>(o); return *this; @@ -504,78 +476,78 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> *static_cast*>(this) = v; return *this; } - mpfr_float_backend& operator=(const mpfr_t& val) + mpfr_float_backend& operator=(const mpfr_t& val) BOOST_NOEXCEPT { mpfr_set(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpf_t& val) + mpfr_float_backend& operator=(const mpf_t& val) BOOST_NOEXCEPT { mpfr_set_f(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpz_t& val) + mpfr_float_backend& operator=(const mpz_t& val) BOOST_NOEXCEPT { mpfr_set_z(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpq_t& val) + mpfr_float_backend& operator=(const mpq_t& val) BOOST_NOEXCEPT { mpfr_set_q(this->m_data, val, GMP_RNDN); return *this; } template - mpfr_float_backend& operator=(const mpfr_float_backend& val) + mpfr_float_backend& operator=(const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_set(this->m_data, val.data(), GMP_RNDN); return *this; } template - mpfr_float_backend& operator=(const gmp_float& val) + mpfr_float_backend& operator=(const gmp_float& val) BOOST_NOEXCEPT { mpfr_set_f(this->m_data, val.data(), GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const gmp_int& val) + mpfr_float_backend& operator=(const gmp_int& val) BOOST_NOEXCEPT { mpfr_set_z(this->m_data, val.data(), GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const gmp_rational& val) + mpfr_float_backend& operator=(const gmp_rational& val) BOOST_NOEXCEPT { mpfr_set_q(this->m_data, val.data(), GMP_RNDN); return *this; } - static unsigned default_precision() + static unsigned default_precision() BOOST_NOEXCEPT { return get_default_precision(); } - static void default_precision(unsigned v) + static void default_precision(unsigned v) BOOST_NOEXCEPT { get_default_precision() = v; } - unsigned precision()const + unsigned precision()const BOOST_NOEXCEPT { return mpfr_get_prec(this->m_data) * 301L / 1000 - 1; } - void precision(unsigned digits10) + void precision(unsigned digits10) BOOST_NOEXCEPT { mpfr_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); } }; template -inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) +inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& result, const mpfr_float_backend& o) +inline void eval_subtract(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void eval_multiply(mpfr_float_backend& result, const mpfr_float_backend& o) +inline void eval_multiply(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); } @@ -585,17 +557,17 @@ inline void eval_divide(mpfr_float_backend& result, const mpfr_float_b mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); } template -inline void eval_add(mpfr_float_backend& result, unsigned long i) +inline void eval_add(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT { mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& result, unsigned long i) +inline void eval_subtract(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT { mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void eval_multiply(mpfr_float_backend& result, unsigned long i) +inline void eval_multiply(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT { mpfr_mul_ui(result.data(), result.data(), i, GMP_RNDN); } @@ -605,7 +577,7 @@ inline void eval_divide(mpfr_float_backend& result, unsigned long i) mpfr_div_ui(result.data(), result.data(), i, GMP_RNDN); } template -inline void eval_add(mpfr_float_backend& result, long i) +inline void eval_add(mpfr_float_backend& result, long i) BOOST_NOEXCEPT { if(i > 0) mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); @@ -613,7 +585,7 @@ inline void eval_add(mpfr_float_backend& result, long i) mpfr_sub_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& result, long i) +inline void eval_subtract(mpfr_float_backend& result, long i) BOOST_NOEXCEPT { if(i > 0) mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); @@ -621,7 +593,7 @@ inline void eval_subtract(mpfr_float_backend& result, long i) mpfr_add_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } template -inline void eval_multiply(mpfr_float_backend& result, long i) +inline void eval_multiply(mpfr_float_backend& result, long i) BOOST_NOEXCEPT { mpfr_mul_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) @@ -638,17 +610,17 @@ inline void eval_divide(mpfr_float_backend& result, long i) // Specialised 3 arg versions of the basic operators: // template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); @@ -656,12 +628,12 @@ inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend -inline void eval_add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +inline void eval_add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -672,17 +644,17 @@ inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_b mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); @@ -690,12 +662,12 @@ inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_back mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +inline void eval_subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } template -inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -707,17 +679,17 @@ inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_fl } template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); } template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) { @@ -728,12 +700,12 @@ inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_back mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } template -inline void eval_multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +inline void eval_multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } template -inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -783,12 +755,12 @@ inline void eval_divide(mpfr_float_backend& a, long x, const mpfr_floa } template -inline bool eval_is_zero(const mpfr_float_backend& val) +inline bool eval_is_zero(const mpfr_float_backend& val) BOOST_NOEXCEPT { return 0 != mpfr_zero_p(val.data()); } template -inline int eval_get_sign(const mpfr_float_backend& val) +inline int eval_get_sign(const mpfr_float_backend& val) BOOST_NOEXCEPT { return mpfr_sgn(val.data()); } @@ -796,32 +768,48 @@ inline int eval_get_sign(const mpfr_float_backend& val) template inline void eval_convert_to(unsigned long* result, const mpfr_float_backend& val) { + if(mpfr_nan_p(val.data())) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Could not convert NaN to integer.")); + } *result = mpfr_get_ui(val.data(), GMP_RNDN); } template inline void eval_convert_to(long* result, const mpfr_float_backend& val) { + if(mpfr_nan_p(val.data())) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Could not convert NaN to integer.")); + } *result = mpfr_get_si(val.data(), GMP_RNDN); } #ifdef _MPFR_H_HAVE_INTMAX_T template inline void eval_convert_to(unsigned long long* result, const mpfr_float_backend& val) { + if(mpfr_nan_p(val.data())) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Could not convert NaN to integer.")); + } *result = mpfr_get_uj(val.data(), GMP_RNDN); } template inline void eval_convert_to(long long* result, const mpfr_float_backend& val) { + if(mpfr_nan_p(val.data())) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Could not convert NaN to integer.")); + } *result = mpfr_get_sj(val.data(), GMP_RNDN); } #endif template -inline void eval_convert_to(double* result, const mpfr_float_backend& val) +inline void eval_convert_to(double* result, const mpfr_float_backend& val) BOOST_NOEXCEPT { *result = mpfr_get_d(val.data(), GMP_RNDN); } template -inline void eval_convert_to(long double* result, const mpfr_float_backend& val) +inline void eval_convert_to(long double* result, const mpfr_float_backend& val) BOOST_NOEXCEPT { *result = mpfr_get_ld(val.data(), GMP_RNDN); } @@ -830,29 +818,29 @@ inline void eval_convert_to(long double* result, const mpfr_float_backend -inline void eval_sqrt(mpfr_float_backend& result, const mpfr_float_backend& val) +inline void eval_sqrt(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_sqrt(result.data(), val.data(), GMP_RNDN); } template -inline void eval_abs(mpfr_float_backend& result, const mpfr_float_backend& val) +inline void eval_abs(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_abs(result.data(), val.data(), GMP_RNDN); } template -inline void eval_fabs(mpfr_float_backend& result, const mpfr_float_backend& val) +inline void eval_fabs(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_abs(result.data(), val.data(), GMP_RNDN); } template -inline void eval_ceil(mpfr_float_backend& result, const mpfr_float_backend& val) +inline void eval_ceil(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_ceil(result.data(), val.data()); } template -inline void eval_floor(mpfr_float_backend& result, const mpfr_float_backend& val) +inline void eval_floor(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_floor(result.data(), val.data()); } @@ -867,7 +855,7 @@ inline void eval_trunc(mpfr_float_backend& result, const mpfr_float_ba mpfr_trunc(result.data(), val.data()); } template -inline void eval_ldexp(mpfr_float_backend& result, const mpfr_float_backend& val, long e) +inline void eval_ldexp(mpfr_float_backend& result, const mpfr_float_backend& val, long e) BOOST_NOEXCEPT { if(e > 0) mpfr_mul_2exp(result.data(), val.data(), e, GMP_RNDN); @@ -877,7 +865,7 @@ inline void eval_ldexp(mpfr_float_backend& result, const mpfr_float_ba result = val; } template -inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, int* e) +inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, int* e) BOOST_NOEXCEPT { long v; mpfr_get_d_2exp(&v, val.data(), GMP_RNDN); @@ -885,20 +873,20 @@ inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_ba eval_ldexp(result, val, -v); } template -inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, long* e) +inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, long* e) BOOST_NOEXCEPT { mpfr_get_d_2exp(e, val.data(), GMP_RNDN); return eval_ldexp(result, val, -*e); } template -inline int eval_fpclassify(const mpfr_float_backend& val) +inline int eval_fpclassify(const mpfr_float_backend& val) BOOST_NOEXCEPT { return mpfr_inf_p(val.data()) ? FP_INFINITE : mpfr_nan_p(val.data()) ? FP_NAN : mpfr_zero_p(val.data()) ? FP_ZERO : FP_NORMAL; } template -inline void eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const mpfr_float_backend& e) +inline void eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const mpfr_float_backend& e) BOOST_NOEXCEPT { mpfr_pow(result.data(), b.data(), e.data(), GMP_RNDN); } @@ -915,13 +903,13 @@ inline void eval_pow(mpfr_float_backend& result, const mpfr_float_back #endif template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) BOOST_NOEXCEPT { mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN); } template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) BOOST_NOEXCEPT { mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN); } @@ -929,79 +917,79 @@ inline typename enable_if, mpl::bool_ -inline void eval_exp(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_exp(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_exp(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_log(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_log(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_log(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_log10(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_log10(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_log10(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_sin(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_sin(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_sin(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_cos(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_cos(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_cos(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_tan(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_tan(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_tan(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_asin(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_asin(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_asin(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_acos(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_acos(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_acos(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_atan(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_atan(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_atan(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_atan2(mpfr_float_backend& result, const mpfr_float_backend& arg1, const mpfr_float_backend& arg2) +inline void eval_atan2(mpfr_float_backend& result, const mpfr_float_backend& arg1, const mpfr_float_backend& arg2) BOOST_NOEXCEPT { mpfr_atan2(result.data(), arg1.data(), arg2.data(), GMP_RNDN); } template -inline void eval_sinh(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_sinh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_sinh(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_cosh(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_cosh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_cosh(result.data(), arg.data(), GMP_RNDN); } template -inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_backend& arg) +inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_tanh(result.data(), arg.data(), GMP_RNDN); } @@ -1023,12 +1011,12 @@ namespace math{ namespace tools{ template <> -inline int digits() +inline int digits() BOOST_NOEXCEPT { return boost::multiprecision::backends::detail::get_default_precision(); } template <> -inline int digits, false> >() +inline int digits, false> >() BOOST_NOEXCEPT { return boost::multiprecision::backends::detail::get_default_precision(); } diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index c6a53aa7..a7192b1d 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -60,6 +60,7 @@ struct rational_adapter multiprecision::mp_number v1, v2; char c; bool have_hex = false; + const char* p = s; // saved for later while((0 != (c = *s)) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F')))) { @@ -84,6 +85,10 @@ struct rational_adapter } else v2 = 1; + if(*s) + { + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Could parse the string \"") + p + std::string("\" as a valid rational number."))); + } data().assign(v1, v2); return *this; } @@ -141,6 +146,11 @@ inline void eval_multiply(rational_adapter& result, const rational_a template inline void eval_divide(rational_adapter& result, const rational_adapter& o) { + using default_ops::eval_is_zero; + if(eval_is_zero(o)) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero.")); + } result.data() /= o.data(); } diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index d7456fd0..cc32fcd9 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -47,7 +47,7 @@ struct tommath_int detail::check_tommath_result(mp_init_copy(&m_data, const_cast< ::mp_int*>(&o.m_data))); } #ifndef BOOST_NO_RVALUE_REFERENCES - tommath_int(tommath_int&& o) + tommath_int(tommath_int&& o) BOOST_NOEXCEPT { m_data = o.m_data; o.m_data.dp = 0; @@ -164,8 +164,21 @@ struct tommath_int } tommath_int& operator = (const char* s) { + // + // We don't use libtommath's own routine because it doesn't error check the input :-( + // + using default_ops::eval_multiply; + using default_ops::eval_add; std::size_t n = s ? std::strlen(s) : 0; - int radix = 10; + *this = static_cast(0u); + unsigned radix = 10; + bool isneg = false; + if(n && (*s == '-')) + { + --n; + ++s; + isneg = true; + } if(n && (*s == '0')) { if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) @@ -178,13 +191,80 @@ struct tommath_int { radix = 8; n -= 1; - s += 1; } } if(n) - detail::check_tommath_result(mp_read_radix(&m_data, s, radix)); - else - detail::check_tommath_result(mp_set_int(&m_data, 0)); + { + if(radix == 8 || radix == 16) + { + unsigned shift = radix == 8 ? 3 : 4; + unsigned block_count = DIGIT_BIT / shift; + unsigned block_shift = shift * block_count; + boost::uint32_t val, block; + while(*s) + { + block = 0; + for(unsigned i = 0; (i < block_count); ++i) + { + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else if(*s >= 'a' && *s <= 'f') + val = 10 + *s - 'a'; + else if(*s >= 'A' && *s <= 'F') + val = 10 + *s - 'A'; + else + val = 400; + if(val > radix) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); + } + block <<= shift; + block |= val; + if(!*++s) + { + // final shift is different: + block_shift = (i + 1) * shift; + break; + } + } + detail::check_tommath_result(mp_mul_2d(&data(), block_shift, &data())); + if(data().used) + data().dp[0] |= block; + else + *this = block; + } + } + else + { + // Base 10, we extract blocks of size 10^9 at a time, that way + // the number of multiplications is kept to a minimum: + boost::uint32_t block_mult = 1000000000; + while(*s) + { + boost::uint32_t block = 0; + for(unsigned i = 0; i < 9; ++i) + { + boost::uint32_t val; + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected character encountered in input.")); + block *= 10; + block += val; + if(!*++s) + { + static const boost::uint32_t block_multiplier[9] = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; + block_mult = block_multiplier[i]; + break; + } + } + eval_multiply(*this, block_mult); + eval_add(*this, block); + } + } + } + if(isneg) + this->negate(); return *this; } std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const @@ -238,7 +318,7 @@ struct tommath_int } ::mp_int& data() { return m_data; } const ::mp_int& data()const { return m_data; } - void swap(tommath_int& o) + void swap(tommath_int& o)BOOST_NOEXCEPT { mp_exch(&m_data, &o.data()); } diff --git a/test/test.hpp b/test/test.hpp index 2214491f..6e83d762 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -102,7 +102,11 @@ void report_unexpected_exception(const E& e, int severity, const char* file, int BOOST_MP_REPORT_SEVERITY(severity); } -#define BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) catch(const std::exception& e) { report_unexpected_exception(e, severity, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); } +#define BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) \ + catch(const std::exception& e) \ + { report_unexpected_exception(e, severity, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); }\ + catch(...)\ + { std::cout << "Exception of unknown type was thrown" << std::endl; report_severity(severity); } #define BOOST_CHECK_IMP(x, severity)\ diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index afd0784c..e1bba8ba 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -11,9 +11,9 @@ #include #endif -#include #include #include +#include "test.hpp" #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ @@ -65,6 +65,12 @@ #define NO_MIXED_OPS +template +bool is_boost_rational(const boost::rational&) +{ + return true; +} + namespace boost{ namespace multiprecision{ #ifdef TEST_TOMMATH_BOOST_RATIONAL @@ -146,6 +152,12 @@ void test_complement(Real, Real, Real, const boost::mpl::false_&) template void test_integer_ops(const T&){} +template +bool is_boost_rational(const T&) +{ + return false; +} + template void test_integer_ops(const boost::mpl::int_&) { @@ -156,6 +168,25 @@ void test_integer_ops(const boost::mpl::int_> b; + BOOST_CHECK_EQUAL(a, b); } template @@ -451,6 +482,12 @@ void test_integer_ops(const boost::mpl::int_ @@ -517,6 +554,21 @@ void test_float_ops(const boost::mpl::int_(3.25)); r = pow(v, 25); BOOST_TEST(r == boost::math::pow<25>(Real(3.25))); + // + // Things that are expected errors: + // + BOOST_CHECK_THROW(Real("3.14L"), std::runtime_error); + if(std::numeric_limits::is_specialized) + { + if(std::numeric_limits::has_infinity) + { + BOOST_CHECK(boost::math::isinf(Real(20) / 0u)); + } + else + { + BOOST_CHECK_THROW(Real(Real(20) / 0u), std::runtime_error); + } + } } template diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index 52b4102a..a21f2a8b 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -60,6 +60,8 @@ void test() unsigned last_error_count = 0; boost::timer tim; + BOOST_CHECK_EQUAL(Number(), 0); + for(int i = 0; i < 10000; ++i) { mpz_int a = generate_random(1000); From 08ee67ccc201e74c1907329698a7dbc0a4a462c4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 8 Jul 2012 17:54:35 +0000 Subject: [PATCH 199/256] Fix some 64-bit compilation issues. [SVN r79362] --- include/boost/multiprecision/cpp_int.hpp | 3 ++- include/boost/multiprecision/tommath.hpp | 2 +- performance/miller_rabin_performance.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index de26540f..a9ebeac7 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1511,7 +1511,8 @@ void divide_unsigned_helper(cpp_int_backend* result, { result->resize(r_order + 1); pres = result->limbs(); - pres[r_order] = 0; // just in case we don't set the most significant limb below. + if(result->size() > r_order) + pres[r_order] = 0; // just in case we don't set the most significant limb below. } do diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index cc32fcd9..5f2c3db6 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -200,7 +200,7 @@ struct tommath_int unsigned shift = radix == 8 ? 3 : 4; unsigned block_count = DIGIT_BIT / shift; unsigned block_shift = shift * block_count; - boost::uint32_t val, block; + unsigned long long val, block; while(*s) { block = 0; diff --git a/performance/miller_rabin_performance.cpp b/performance/miller_rabin_performance.cpp index 458c14b2..9667aa51 100644 --- a/performance/miller_rabin_performance.cpp +++ b/performance/miller_rabin_performance.cpp @@ -138,7 +138,7 @@ int main() #ifdef TEST_CPP_INT test_miller_rabin, false> >("cpp_int (no Expression templates)"); test_miller_rabin("cpp_int"); - test_miller_rabin > >("cpp_int (64-bit cache)"); + test_miller_rabin > >("cpp_int (128-bit cache)"); test_miller_rabin > >("cpp_int (256-bit cache)"); test_miller_rabin > >("cpp_int (512-bit cache)"); test_miller_rabin > >("cpp_int (1024-bit cache)"); From 281c667b71890db51f3b8fb8156d787977656862 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 23 Jul 2012 08:57:44 +0000 Subject: [PATCH 200/256] Update frontend to allow direct construction of backend. Improve construction times for cpp_int from integers. Allow constexpr construction. Allow fixed precision cpp_int's with small bit counts. [SVN r79692] --- doc/multiprecision.qbk | 6 + include/boost/multiprecision/cpp_int.hpp | 1137 +++++++++++------ .../multiprecision/detail/cpp_int_core.hpp | 58 +- .../detail/cpp_int_trivial_ops.hpp | 284 ++++ include/boost/multiprecision/gmp.hpp | 4 - include/boost/multiprecision/mp_number.hpp | 19 +- include/boost/multiprecision/mpfr.hpp | 4 - performance/performance_test.cpp | 87 +- test/test_arithmetic.cpp | 4 + 9 files changed, 1189 insertions(+), 414 deletions(-) create mode 100644 include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 284b2451..71b6a134 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -119,6 +119,8 @@ However, conversions are allowed: [h4 Expression Templates] +TODO: compare to rvalue refs. + Class `mp_number` is expression-template-enabled: that means that rather than having a multiplication operator that looks like this: @@ -246,6 +248,8 @@ We'll conclude this section by providing some more performance comparisons betwe again, all are using [mpfr] to carry out the underlying arithmetic, and all are operating at the same precision (50 decimal digits): +TODO: Update, compare to rvalue refs but no ET's as well. + [table Evaluation of Boost.Math's Bessel function test data [[Library][Relative Time][Relative Number of Memory Allocations]] [[mp_number][1.0 (6.21s)][1.0 (2685469)]] @@ -1696,6 +1700,8 @@ The requirements on the `Backend` template argument to `mp_number` are split up compulsory requirements, and optional requirements that are either to improve performance or provide optional features. +TODO: Add optional construction support, add throws specification, clarify what compulsory means. + In the following tables, type B is the `Backend` template arument to `mp_number`, `b` and `b2` are a variables of type B, `cb` and `cb2` are constant variables of type B, `a` is a variable of Arithmetic type, `s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index a9ebeac7..0edba4aa 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -16,6 +16,7 @@ #include #include #include +#include namespace boost{ namespace multiprecision{ @@ -27,16 +28,32 @@ namespace backends{ #pragma warning(disable:4127 4351) #endif -template > +template , bool trivial = is_void::value && (MinBits <= sizeof(double_limb_type) * CHAR_BIT) > struct cpp_int_backend; -template > -struct cpp_int_base : private Allocator::template rebind::other +template , bool trivial = false> +struct cpp_int_base; + +template +struct is_trivial_cpp_int; +template +struct is_trivial_cpp_int > +{ + typedef mpl::bool_ type; +}; + +template +struct cpp_int_base : private Allocator::template rebind::other { typedef typename Allocator::template rebind::other allocator_type; typedef typename allocator_type::pointer limb_pointer; typedef typename allocator_type::const_pointer const_limb_pointer; + // + // Interface invariants: + // + BOOST_STATIC_ASSERT(!is_void::value); + private: struct limb_data { @@ -61,6 +78,16 @@ private: { limb_data ld; limb_type la[internal_limb_count]; + limb_type first; + double_limb_type double_first; + + BOOST_CONSTEXPR data_type() : first(0) {} + BOOST_CONSTEXPR data_type(limb_type i) : first(i) {} + BOOST_CONSTEXPR data_type(signed_limb_type i) : first(i < 0 ? -i : i) {} +#ifdef BOOST_LITTLE_ENDIAN + BOOST_CONSTEXPR data_type(double_limb_type i) : double_first(i) {} + BOOST_CONSTEXPR data_type(signed_double_limb_type i) : double_first(i < 0 ? -i : i) {} +#endif }; data_type m_data; @@ -68,6 +95,19 @@ private: bool m_sign, m_internal; public: + // + // Direct construction: + // + BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + : m_data(i), m_limbs(1), m_sign(false), m_internal(true) { } + BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + : m_data(i), m_limbs(1), m_sign(i < 0), m_internal(true) { } +#if defined(BOOST_LITTLE_ENDIAN) + BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + : m_data(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false), m_internal(true) { } + BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + : m_data(i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0), m_internal(true) { } +#endif // // Helper functions for getting at our internal data, and manipulating storage: // @@ -114,13 +154,11 @@ public: limb_pointer p = limbs(); while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1), m_sign(false), m_internal(true) - { - } + BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1), m_sign(false), m_internal(true) {} cpp_int_base(const cpp_int_base& o) : allocator_type(o), m_limbs(0), m_internal(true) { resize(o.size()); - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -128,7 +166,7 @@ public: { if(m_internal) { - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } else { @@ -178,11 +216,16 @@ public: }; template -struct cpp_int_base +struct cpp_int_base { typedef limb_type* limb_pointer; typedef const limb_type* const_limb_pointer; + // + // Interface invariants: + // + BOOST_STATIC_ASSERT_MSG(MinBits > sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); + public: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); @@ -193,11 +236,28 @@ public: BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); private: - limb_type m_data[internal_limb_count]; + union{ + limb_type m_data[internal_limb_count]; + limb_type m_first_limb; + double_limb_type m_double_first_limb; + }; boost::uint16_t m_limbs; bool m_sign; public: + // + // Direct construction: + // + BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + : m_first_limb(i), m_limbs(1), m_sign(false) {} + BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + : m_first_limb(std::abs(i)), m_limbs(1), m_sign(i < 0) {} +#if defined(BOOST_LITTLE_ENDIAN) + BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + : m_double_first_limb(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false) {} + BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + : m_double_first_limb(i < 0 ? -i : i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0) {} +#endif // // Helper functions for getting at our internal data, and manipulating storage: // @@ -227,20 +287,12 @@ public: if((m_limbs == 1) && (!*p)) m_sign = false; // zero is always unsigned } - BOOST_CONSTEXPR cpp_int_base() : m_data(), m_limbs(1), m_sign(false) {} - cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(0) + BOOST_CONSTEXPR cpp_int_base() : m_first_limb(0), m_limbs(1), m_sign(false) {} + cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign) { - resize(o.size()); - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); - m_sign = o.m_sign; + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } -#ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign) - { - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); - } -#endif - ~cpp_int_base() BOOST_NOEXCEPT {} + //~cpp_int_base() BOOST_NOEXCEPT {} void assign(const cpp_int_base& o) BOOST_NOEXCEPT { if(this != &o) @@ -274,11 +326,16 @@ public: }; template -struct cpp_int_base +struct cpp_int_base { typedef limb_type* limb_pointer; typedef const limb_type* const_limb_pointer; + // + // Interface invariants: + // + BOOST_STATIC_ASSERT_MSG(MinBits > sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); + public: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); @@ -289,10 +346,27 @@ public: BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); private: - limb_type m_data[internal_limb_count]; + union{ + limb_type m_data[internal_limb_count]; + limb_type m_first_limb; + double_limb_type m_double_first_limb; + }; limb_type m_limbs; public: + // + // Direct construction: + // + BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + : m_first_limb(i), m_limbs(1) {} + cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + : m_first_limb(i < 0 ? -i : i), m_limbs(1) { if(i < 0) negate(); } +#ifdef BOOST_LITTLE_ENDIAN + BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + : m_double_first_limb(i), m_limbs(i > max_limb_value ? 2 : 1) {} + cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + : m_double_first_limb(i < 0 ? -i : i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)) { if(i < 0) negate(); } +#endif // // Helper functions for getting at our internal data, and manipulating storage: // @@ -312,19 +386,12 @@ public: while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1) {} - cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(0) + BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_first_limb(0), m_limbs(1) {} + cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs) { - resize(o.size()); - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } -#ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs) - { - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); - } -#endif - ~cpp_int_base() BOOST_NOEXCEPT {} + //~cpp_int_base() BOOST_NOEXCEPT {} void assign(const cpp_int_base& o) BOOST_NOEXCEPT { if(this != &o) @@ -358,52 +425,244 @@ public: } }; -template -const unsigned cpp_int_base::limb_bits; -template -const limb_type cpp_int_base::max_limb_value; -template -const limb_type cpp_int_base::sign_bit_mask; -template -const unsigned cpp_int_base::internal_limb_count; -template -const bool cpp_int_base::variable; - -template -const unsigned cpp_int_base::limb_bits; -template -const limb_type cpp_int_base::max_limb_value; -template -const limb_type cpp_int_base::sign_bit_mask; -template -const unsigned cpp_int_base::internal_limb_count; -template -const bool cpp_int_base::variable; - -template -const unsigned cpp_int_base::limb_bits; -template -const limb_type cpp_int_base::max_limb_value; -template -const limb_type cpp_int_base::sign_bit_mask; -template -const unsigned cpp_int_base::internal_limb_count; -template -const bool cpp_int_base::variable; - -template -struct cpp_int_backend : public cpp_int_base +template +struct trivial_limb_type { - typedef cpp_int_base base_type; + typedef typename mpl::if_c< + N <= sizeof(long long) * CHAR_BIT, + typename boost::uint_t::least, + double_limb_type + >::type type; +}; + +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4244) // loss of data in initialization +#endif + +template +struct cpp_int_base +{ + typedef typename trivial_limb_type::type local_limb_type; + typedef local_limb_type* limb_pointer; + typedef const local_limb_type* const_limb_pointer; +private: + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = MinBits < limb_bits ? (local_limb_type(1) << MinBits) -1 : (~local_limb_type(0))); + + local_limb_type m_data; + bool m_sign; + + // + // Interface invariants: + // + BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); + +public: + // + // Direct construction: + // + template + BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + : m_data(i < 0 ? -i : i), m_sign(i < 0) {} + template + BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + : m_data(i), m_sign(false) {} + template + cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + : m_data(std::fabs(i)), m_sign(i < 0) {} + // + // Helper functions for getting at our internal data, and manipulating storage: + // + BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; } + limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; } + const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } + bool sign()const BOOST_NOEXCEPT { return m_sign; } + void sign(bool b) BOOST_NOEXCEPT + { + m_sign = b; + // Check for zero value: + if(m_sign && !m_data) + { + m_sign = false; + } + } + void resize(unsigned new_size) BOOST_NOEXCEPT {} + void normalize() BOOST_NOEXCEPT + { + if(!m_data) + m_sign = false; // zero is always unsigned + m_data &= limb_mask; + } + + BOOST_CONSTEXPR cpp_int_base() : m_data(0), m_sign(false) {} + BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data), m_sign(o.m_sign) {} + //~cpp_int_base() BOOST_NOEXCEPT {} + void assign(const cpp_int_base& o) BOOST_NOEXCEPT + { + m_data = o.m_data; + m_sign = o.m_sign; + } + void negate() BOOST_NOEXCEPT + { + m_sign = !m_sign; + // Check for zero value: + if(m_data == 0) + { + m_sign = false; + } + } + bool isneg()const BOOST_NOEXCEPT + { + return m_sign; + } + void do_swap(cpp_int_base& o) BOOST_NOEXCEPT + { + std::swap(m_sign, o.m_sign); + std::swap(m_data, o.m_data); + } +}; + +template +struct cpp_int_base +{ + typedef typename trivial_limb_type::type local_limb_type; + typedef local_limb_type* limb_pointer; + typedef const local_limb_type* const_limb_pointer; +private: + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); + BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = MinBits < limb_bits ? (local_limb_type(1) << MinBits) -1 : (~local_limb_type(0))); + + local_limb_type m_data; + + // + // Interface invariants: + // + BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); + +public: + // + // Direct construction: + // + template + BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + : m_data(i < 0 ? 1 + ~static_cast(-i) : static_cast(i)) {} + template + BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + : m_data(i) {} + template + cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + : m_data(std::fabs(i)) + { + if(i < 0) + negate(); + } + // + // Helper functions for getting at our internal data, and manipulating storage: + // + BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; } + limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; } + const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } + BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } + void sign(bool b) BOOST_NOEXCEPT + { + if(b) + negate(); + } + void resize(unsigned new_size) BOOST_NOEXCEPT {} + void normalize() BOOST_NOEXCEPT + { + m_data &= limb_mask; + } + + BOOST_CONSTEXPR cpp_int_base() : m_data(0) {} + BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data) {} + //~cpp_int_base() BOOST_NOEXCEPT {} + void assign(const cpp_int_base& o) BOOST_NOEXCEPT + { + m_data = o.m_data; + } + void negate() BOOST_NOEXCEPT + { + m_data = ~m_data; + ++m_data; + } + BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT + { + return false; + } + void do_swap(cpp_int_base& o) BOOST_NOEXCEPT + { + std::swap(m_data, o.m_data); + } +}; + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +template +struct cpp_int_backend : public cpp_int_base +{ + typedef cpp_int_backend self_type; + typedef cpp_int_base base_type; + typedef typename is_trivial_cpp_int::type trivial_tag; public: typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list float_types; BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} - cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) : base_type(o) {} + BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) : base_type(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} + BOOST_CONSTEXPR cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} +#endif + template + BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + : base_type(i) {} + template + BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + : base_type(i) {} +#if defined(BOOST_LITTLE_ENDIAN) + template + BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + : base_type(i) {} + template + BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + : base_type(i) {} #endif cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { @@ -736,14 +995,110 @@ public: } }; +template +struct cpp_int_backend : public cpp_int_base +{ +public: + typedef cpp_int_backend self_type; + typedef cpp_int_base base_type; + typedef typename is_trivial_cpp_int::type trivial_tag; + typedef mpl::list< + signed char, short, int, long, + long long, signed_double_limb_type> signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + + BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(typename base_type::local_limb_type) * CHAR_BIT); + + BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} + BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT : base_type(o) {} + cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT + { + this->assign(o); + return *this; + } + + template + BOOST_CONSTEXPR cpp_int_backend(A i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + : base_type(i) {} + + template + typename enable_if, cpp_int_backend&>::type operator = (SI i) BOOST_NOEXCEPT + { + *this->limbs() = static_cast(std::abs(i)); + this->sign(i < 0); + return *this; + } + template + typename enable_if, cpp_int_backend&>::type operator = (UI i) BOOST_NOEXCEPT + { + *this->limbs() = static_cast(i); + return *this; + } + template + typename enable_if, cpp_int_backend&>::type operator = (F i) BOOST_NOEXCEPT + { + *this->limbs() = static_cast(std::abs(i)); + this->sign(i < 0); + return *this; + } + cpp_int_backend& operator = (const char* s) + { + try{ + *this->limbs() = boost::lexical_cast(s); + } + catch(const std::exception&) + { + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Could not interpret the string \"") + s + std::string("\" as a valid integer value."))); + } + return *this; + } + void swap(cpp_int_backend& o) BOOST_NOEXCEPT + { + this->do_swap(o); + } + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const + { + std::stringstream ss; + ss.flags(f); + ss << *this->limbs(); + std::string result; + if(this->sign()) + result += '-'; + result += ss.str(); + return result; + } + int compare(const cpp_int_backend& o)const BOOST_NOEXCEPT + { + if(this->sign() != o.sign()) + return this->sign() ? -1 : 1; + int result = 0; + // Only do the compare if the same sign: + result = *this->limbs() == *o.limbs() ? 0 : *this->limbs() < *o.limbs() ? -1 : 1; + + if(this->sign()) + result = -result; + return result; + } + template + typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT + { + // braindead version: + cpp_int_backend t; + t = i; + return compare(t); + } +}; + template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_add(result, result, o); } template -inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { using std::swap; @@ -761,10 +1116,10 @@ inline void add_unsigned(cpp_int_backend& result, co return; } result.resize(x); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::limb_pointer pr_end = pr + m; + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr_end = pr + m; if(as < bs) swap(pa, pb); @@ -774,7 +1129,7 @@ inline void add_unsigned(cpp_int_backend& result, co { carry += static_cast(*pa) + static_cast(*pb); *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++pr, ++pa, ++pb; } pr_end += x - m; @@ -789,21 +1144,21 @@ inline void add_unsigned(cpp_int_backend& result, co } carry += static_cast(*pa); *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++pr, ++pa; } if(carry) { result.resize(x + 1); // We overflowed, need to add one more limb: - if(cpp_int_backend::variable || (result.size() > x)) + if(cpp_int_backend::variable || (result.size() > x)) result.limbs()[x] = static_cast(carry); } result.normalize(); result.sign(a.sign()); } template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign() != b.sign()) { @@ -814,30 +1169,30 @@ inline void eval_add(cpp_int_backend& result, const } template -inline void add_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void add_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: double_limb_type carry = o; - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); for(unsigned i = 0; carry && (i < result.size()); ++i) { carry += static_cast(pr[i]); pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } if(carry) { unsigned x = result.size(); result.resize(x + 1); // We overflowed, need to add one more limb: - if(cpp_int_backend::variable || (result.size() > x)) + if(cpp_int_backend::variable || (result.size() > x)) result.limbs()[x] = static_cast(carry); } result.normalize(); } template -inline void eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) { @@ -847,7 +1202,7 @@ inline void eval_add(cpp_int_backend& result, const add_unsigned(result, o); } template -inline void eval_add(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_add(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o < 0) eval_subtract(result, static_cast(-o)); @@ -856,12 +1211,12 @@ inline void eval_add(cpp_int_backend& result, const } template -inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Subtract one limb. // Nothing fancy, just let uintmax_t take the strain: - BOOST_STATIC_CONSTANT(double_limb_type, borrow = static_cast(cpp_int_backend::max_limb_value) + 1); - typename cpp_int_backend::limb_pointer p = result.limbs(); + BOOST_STATIC_CONSTANT(double_limb_type, borrow = static_cast(cpp_int_backend::max_limb_value) + 1); + typename cpp_int_backend::limb_pointer p = result.limbs(); if(*p > o) { *p -= o; @@ -877,7 +1232,7 @@ inline void subtract_unsigned(cpp_int_backend& resul ++p; while(!*p) { - *p = cpp_int_backend::max_limb_value; + *p = cpp_int_backend::max_limb_value; ++p; } --*p; @@ -885,7 +1240,7 @@ inline void subtract_unsigned(cpp_int_backend& resul } } template -inline void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) add_unsigned(result, o); @@ -893,7 +1248,7 @@ inline void eval_subtract(cpp_int_backend& result, c subtract_unsigned(result, o); } template -inline void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o) { @@ -904,10 +1259,10 @@ inline void eval_subtract(cpp_int_backend& result, c } } template -inline void eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) { static const limb_type one = 1; - if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) ++result.limbs()[0]; else if(result.sign() && result.limbs()[0]) --result.limbs()[0]; @@ -915,23 +1270,23 @@ inline void eval_increment(cpp_int_backend& result) eval_add(result, one); } template -inline void eval_decrement(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_decrement(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) { static const limb_type one = 1; if(!result.sign() && result.limbs()[0]) --result.limbs()[0]; - else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) ++result.limbs()[0]; else eval_subtract(result, one); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_subtract(result, result, o); } template -inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { using std::swap; @@ -962,9 +1317,9 @@ inline void subtract_unsigned(cpp_int_backend& resul // Set up the result vector: result.resize(x); // Now that a, b, and result are stable, get pointers to their limbs: - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); bool swapped = false; if(c < 0) { @@ -983,7 +1338,7 @@ inline void subtract_unsigned(cpp_int_backend& resul { borrow = static_cast(pa[i]) - static_cast(pb[i]) - borrow; pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Now where only a has digits, only as long as we've borrowed: @@ -991,7 +1346,7 @@ inline void subtract_unsigned(cpp_int_backend& resul { borrow = static_cast(pa[i]) - borrow; pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Any remaining digits are the same as those in pa: @@ -1008,7 +1363,7 @@ inline void subtract_unsigned(cpp_int_backend& resul result.negate(); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign() != b.sign()) { @@ -1018,7 +1373,7 @@ inline void eval_subtract(cpp_int_backend& result, c subtract_unsigned(result, a, b); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Very simple long multiplication, only usable for small numbers of limb_type's // but that's the typical use case for this type anyway: @@ -1027,8 +1382,8 @@ inline void eval_multiply(cpp_int_backend& result, c // unsigned as = a.size(); unsigned bs = b.size(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); if(as == 1) { bool s = b.sign() != a.sign(); @@ -1057,19 +1412,19 @@ inline void eval_multiply(cpp_int_backend& result, c if(&result == &a) { - cpp_int_backend t(a); + cpp_int_backend t(a); eval_multiply(result, t, b); return; } if(&result == &b) { - cpp_int_backend t(b); + cpp_int_backend t(b); eval_multiply(result, a, t); return; } result.resize(as + bs); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); static const double_limb_type limb_max = ~static_cast(0u); static const double_limb_type double_limb_max = ~static_cast(0u); @@ -1079,19 +1434,19 @@ inline void eval_multiply(cpp_int_backend& result, c std::memset(pr, 0, result.size() * sizeof(limb_type)); for(unsigned i = 0; i < as; ++i) { - unsigned inner_limit = cpp_int_backend::variable ? bs : (std::min)(result.size() - i, bs); + unsigned inner_limit = cpp_int_backend::variable ? bs : (std::min)(result.size() - i, bs); for(unsigned j = 0; j < inner_limit; ++j) { BOOST_ASSERT(i+j < result.size()); - BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry > static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value))); + BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry > static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value))); carry += static_cast(pa[i]) * static_cast(pb[j]); BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry >= pr[i+j])); carry += pr[i + j]; pr[i + j] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - BOOST_ASSERT(carry <= (cpp_int_backend::max_limb_value)); + carry >>= cpp_int_backend::limb_bits; + BOOST_ASSERT(carry <= (cpp_int_backend::max_limb_value)); } - if(cpp_int_backend::variable || (i + bs < result.size())) + if(cpp_int_backend::variable || (i + bs < result.size())) pr[i + bs] = static_cast(carry); carry = 0; } @@ -1102,12 +1457,12 @@ inline void eval_multiply(cpp_int_backend& result, c result.sign(a.sign() != b.sign()); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, a); } template -inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!val) { @@ -1115,33 +1470,33 @@ inline void eval_multiply(cpp_int_backend& result, c return; } double_limb_type carry = 0; - typename cpp_int_backend::limb_pointer p = result.limbs(); - typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); - typename cpp_int_backend::limb_pointer pa = a.limbs(); + typename cpp_int_backend::limb_pointer p = result.limbs(); + typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); + typename cpp_int_backend::limb_pointer pa = a.limbs(); while(p != pe) { carry += static_cast(*pa) * static_cast(val); *p = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++p, ++pa; } if(carry) { unsigned i = result.size(); result.resize(i + 1); - if(cpp_int_backend::variable || (result.size() > i)) + if(cpp_int_backend::variable || (result.size() > i)) result.limbs()[i] = static_cast(carry); } - if(!cpp_int_backend::variable) + if(!cpp_int_backend::variable) result.normalize(); } template -inline void eval_multiply(cpp_int_backend& result, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } template -inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val > 0) eval_multiply(result, a, static_cast(val)); @@ -1152,22 +1507,22 @@ inline void eval_multiply(cpp_int_backend& result, c } } template -inline void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } template -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) { if((result == &x) || (&r == &x)) { - cpp_int_backend t(x); + cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } if((result == &y) || (&r == &y)) { - cpp_int_backend t(y); + cpp_int_backend t(y); divide_unsigned_helper(result, x, t, r); return; } @@ -1195,7 +1550,7 @@ void divide_unsigned_helper(cpp_int_backend* result, if(result == &r) { - cpp_int_backend rem; + cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -1217,8 +1572,8 @@ void divide_unsigned_helper(cpp_int_backend* result, return; } - typename cpp_int_backend::const_limb_pointer px = x.limbs(); - typename cpp_int_backend::const_limb_pointer py = y.limbs(); + typename cpp_int_backend::const_limb_pointer px = x.limbs(); + typename cpp_int_backend::const_limb_pointer py = y.limbs(); limb_type r_order = x.size() - 1; if((r_order == 0) && (*px == 0)) @@ -1247,7 +1602,7 @@ void divide_unsigned_helper(cpp_int_backend* result, } } - cpp_int_backend t; + cpp_int_backend t; bool r_neg = false; // @@ -1263,9 +1618,9 @@ void divide_unsigned_helper(cpp_int_backend* result, else if(r_order == 1) { double_limb_type a, b; - a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; + a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; b = y_order ? - (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] + (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] : py[0]; if(result) *result = a / b; @@ -1277,9 +1632,9 @@ void divide_unsigned_helper(cpp_int_backend* result, // if(result) result->resize(1 + r_order - y_order); - typename cpp_int_backend::const_limb_pointer prem = r.limbs(); + typename cpp_int_backend::const_limb_pointer prem = r.limbs(); // This is initialised just to keep the compiler from emitting useless warnings later on: - typename cpp_int_backend::limb_pointer pr = typename cpp_int_backend::limb_pointer(); + typename cpp_int_backend::limb_pointer pr = typename cpp_int_backend::limb_pointer(); if(result) { pr = result->limbs(); @@ -1297,10 +1652,10 @@ void divide_unsigned_helper(cpp_int_backend* result, if((prem[r_order] <= py[y_order]) && (r_order > 0)) { double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; b = py[y_order]; v = a / b; - if(v > cpp_int_backend::max_limb_value) + if(v > cpp_int_backend::max_limb_value) guess = 1; else { @@ -1315,8 +1670,8 @@ void divide_unsigned_helper(cpp_int_backend* result, else { double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; - b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); v = a / b; guess = static_cast(v); } @@ -1340,7 +1695,7 @@ void divide_unsigned_helper(cpp_int_backend* result, eval_subtract(*result, t); } } - else if(cpp_int_backend::max_limb_value - pr[shift] > guess) + else if(cpp_int_backend::max_limb_value - pr[shift] > guess) pr[shift] += guess; else { @@ -1357,15 +1712,15 @@ void divide_unsigned_helper(cpp_int_backend* result, // double_limb_type carry = 0; t.resize(y.size() + shift + 1); - bool truncated_t = !cpp_int_backend::variable && (t.size() != y.size() + shift + 1); - typename cpp_int_backend::limb_pointer pt = t.limbs(); + bool truncated_t = !cpp_int_backend::variable && (t.size() != y.size() + shift + 1); + typename cpp_int_backend::limb_pointer pt = t.limbs(); for(unsigned i = 0; i < shift; ++i) pt[i] = 0; for(unsigned i = 0; i < y.size(); ++i) { carry += static_cast(py[i]) * static_cast(guess); pt[i + shift] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } if(carry && !truncated_t) { @@ -1424,18 +1779,18 @@ void divide_unsigned_helper(cpp_int_backend* result, } template -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) +void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) { if((result == &x) || (&r == &x)) { - cpp_int_backend t(x); + cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } if(result == &r) { - cpp_int_backend rem; + cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -1459,7 +1814,7 @@ void divide_unsigned_helper(cpp_int_backend* result, // r = x; r.sign(false); - typename cpp_int_backend::limb_pointer pr = r.limbs(); + typename cpp_int_backend::limb_pointer pr = r.limbs(); if((r_order == 0) && (*pr == 0)) { @@ -1494,7 +1849,7 @@ void divide_unsigned_helper(cpp_int_backend* result, else if(r_order == 1) { double_limb_type a; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; if(result) { *result = a / y; @@ -1506,7 +1861,7 @@ void divide_unsigned_helper(cpp_int_backend* result, } // This is initialised just to keep the compiler from emitting useless warnings later on: - typename cpp_int_backend::limb_pointer pres = typename cpp_int_backend::limb_pointer(); + typename cpp_int_backend::limb_pointer pres = typename cpp_int_backend::limb_pointer(); if(result) { result->resize(r_order + 1); @@ -1523,7 +1878,7 @@ void divide_unsigned_helper(cpp_int_backend* result, if((pr[r_order] < y) && r_order) { double_limb_type a, b; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; b = a % y; r.resize(r.size() - 1); --r_order; @@ -1568,86 +1923,86 @@ void divide_unsigned_helper(cpp_int_backend* result, } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); result.sign(a.sign() != b.sign()); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(&result, a, std::abs(b), r); if(b < 0) result.negate(); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, limb_type b) +inline void eval_divide(cpp_int_backend& result, limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, signed_limb_type b) +inline void eval_divide(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { - divide_unsigned_helper(static_cast* >(0), a, b, result); + divide_unsigned_helper(static_cast* >(0), a, b, result); result.sign(a.sign()); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) { - divide_unsigned_helper(static_cast* >(0), a, b, result); + divide_unsigned_helper(static_cast* >(0), a, b, result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) { - divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); + divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, limb_type b) +inline void eval_modulus(cpp_int_backend& result, limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) +inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_modulus(result, a, b); } template -void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) BOOST_NOEXCEPT +void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) BOOST_NOEXCEPT { // // There are 4 cases: @@ -1666,8 +2021,8 @@ void bitwise_op(cpp_int_backend& result, const cpp_i unsigned m, x; minmax(rs, os, m, x); result.resize(x); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::const_limb_pointer po = o.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer po = o.limbs(); for(unsigned i = rs; i < x; ++i) pr[i] = 0; @@ -1690,13 +2045,13 @@ void bitwise_op(cpp_int_backend& result, const cpp_i { carry += static_cast(~po[i]); pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { carry += static_cast(~limb_type(0)); pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: carry += static_cast(~limb_type(0)); @@ -1713,13 +2068,13 @@ void bitwise_op(cpp_int_backend& result, const cpp_i { carry += static_cast(~pr[i]); pr[i] = op(static_cast(carry), po[i]); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { carry += static_cast(~pr[i]); pr[i] = op(static_cast(carry), limb_type(0)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: carry += static_cast(~limb_type(0)); @@ -1735,16 +2090,16 @@ void bitwise_op(cpp_int_backend& result, const cpp_i r_carry += static_cast(~pr[i]); o_carry += static_cast(~po[i]); pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { r_carry += static_cast(~pr[i]); o_carry += static_cast(~limb_type(0)); pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: r_carry += static_cast(~limb_type(0)); @@ -1763,7 +2118,7 @@ void bitwise_op(cpp_int_backend& result, const cpp_i { carry += static_cast(~pr[i]); pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } } else @@ -1777,22 +2132,22 @@ struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCE struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; template -inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) +inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_and()); } template -inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_or()); } template -inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_xor()); } template -inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Increment and negate: result = o; @@ -1800,7 +2155,7 @@ inline void eval_complement(cpp_int_backend& result, result.negate(); } template -inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT +inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT { if(!s) return; @@ -1876,23 +2231,23 @@ inline void eval_left_shift(cpp_int_backend& result, doub } } template -inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!s) return; - limb_type offset = static_cast(s / cpp_int_backend::limb_bits); - limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); unsigned ors = result.size(); if((ors == 1) && (!*result.limbs())) return; // shifting zero yields zero. unsigned rs = ors; - if(shift && (result.limbs()[rs - 1] >> (cpp_int_backend::limb_bits - shift))) + if(shift && (result.limbs()[rs - 1] >> (cpp_int_backend::limb_bits - shift))) ++rs; // Most significant limb will overflow when shifted rs += offset; result.resize(rs); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); unsigned i = 0; if(shift) @@ -1901,20 +2256,20 @@ inline void eval_left_shift(cpp_int_backend& result, i = 0; if(rs > ors + offset) { - pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); + pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); --rs; } else { pr[rs - 1 - i] = pr[ors - 1 - i] << shift; if(ors > 1) - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); ++i; } for(; ors > 1 + i; ++i) { pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); } if(ors >= 1 + i) { @@ -1933,13 +2288,13 @@ inline void eval_left_shift(cpp_int_backend& result, } } template -inline void eval_right_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_right_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!s) return; - limb_type offset = static_cast(s / cpp_int_backend::limb_bits); - limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); unsigned ors = result.size(); unsigned rs = ors; if(offset >= rs) @@ -1948,7 +2303,7 @@ inline void eval_right_shift(cpp_int_backend& result return; } rs -= offset; - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); if((pr[ors - 1] >> shift) == 0) --rs; if(rs == 0) @@ -1963,7 +2318,7 @@ inline void eval_right_shift(cpp_int_backend& result for(; i + offset + 1 < ors; ++i) { pr[i] = pr[i + offset] >> shift; - pr[i] |= pr[i + offset + 1] << (cpp_int_backend::limb_bits - shift); + pr[i] |= pr[i + offset + 1] << (cpp_int_backend::limb_bits - shift); } pr[i] = pr[i + offset] >> shift; } @@ -1987,14 +2342,14 @@ inline Integer negate_integer(Integer i, const mpl::false_&) BOOST_NOEXCEPT } template -inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT +inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT { *result = static_cast(backend.limbs()[0]); - unsigned shift = cpp_int_backend::limb_bits; + unsigned shift = cpp_int_backend::limb_bits; for(unsigned i = 1; (i < backend.size()) && (shift < static_cast(std::numeric_limits::digits)); ++i) { *result += static_cast(backend.limbs()[i]) << shift; - shift += cpp_int_backend::limb_bits; + shift += cpp_int_backend::limb_bits; } if(backend.sign()) { @@ -2003,32 +2358,32 @@ inline typename enable_if, void>::type eval_convert_to(R* result, } template -inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT +inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT { - typename cpp_int_backend::const_limb_pointer p = backend.limbs(); - unsigned shift = cpp_int_backend::limb_bits; + typename cpp_int_backend::const_limb_pointer p = backend.limbs(); + unsigned shift = cpp_int_backend::limb_bits; *result = static_cast(*p); for(unsigned i = 1; i < backend.size(); ++i) { *result += static_cast(std::ldexp(static_cast(p[i]), shift)); - shift += cpp_int_backend::limb_bits; + shift += cpp_int_backend::limb_bits; } if(backend.sign()) *result = -*result; } template -inline bool eval_is_zero(const cpp_int_backend& val) BOOST_NOEXCEPT +inline bool eval_is_zero(const cpp_int_backend& val) BOOST_NOEXCEPT { return (val.size() == 1) && (val.limbs()[0] == 0); } template -inline int eval_get_sign(const cpp_int_backend& val) BOOST_NOEXCEPT +inline int eval_get_sign(const cpp_int_backend& val) BOOST_NOEXCEPT { return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1; } template -inline void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { result = val; result.sign(false); @@ -2038,7 +2393,7 @@ inline void eval_abs(cpp_int_backend& result, const // Get the location of the least-significant-bit: // template -inline unsigned eval_lsb(const cpp_int_backend& a) BOOST_NOEXCEPT +inline unsigned eval_lsb(const cpp_int_backend& a) BOOST_NOEXCEPT { BOOST_ASSERT(eval_get_sign(a) != 0); @@ -2059,15 +2414,15 @@ inline unsigned eval_lsb(const cpp_int_backend& a) B ++result; } - return result + index * cpp_int_backend::limb_bits; + return result + index * cpp_int_backend::limb_bits; } template -inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { int shift; - cpp_int_backend u(a), v(b); + cpp_int_backend u(a), v(b); int s = eval_get_sign(u); @@ -2123,10 +2478,10 @@ inline void eval_gcd(cpp_int_backend& result, const } template -inline bool eval_bit_test(const cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT +inline bool eval_bit_test(const cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT { - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); if(offset >= val.size()) return false; @@ -2134,10 +2489,10 @@ inline bool eval_bit_test(const cpp_int_backend& val } template -inline void eval_bit_set(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_bit_set(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) { - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); if(offset >= val.size()) { @@ -2152,10 +2507,10 @@ inline void eval_bit_set(cpp_int_backend& val, unsig } template -inline void eval_bit_unset(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT +inline void eval_bit_unset(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT { - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); if(offset >= val.size()) return; @@ -2164,10 +2519,10 @@ inline void eval_bit_unset(cpp_int_backend& val, uns } template -inline void eval_bit_flip(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_bit_flip(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) { - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); if(offset >= val.size()) { @@ -2183,9 +2538,9 @@ inline void eval_bit_flip(cpp_int_backend& val, unsi } template -inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { - cpp_int_backend t; + cpp_int_backend t; eval_gcd(t, a, b); if(eval_is_zero(t)) @@ -2202,8 +2557,8 @@ inline void eval_lcm(cpp_int_backend& result, const } template -inline void eval_qr(const cpp_int_backend& x, const cpp_int_backend& y, - cpp_int_backend& q, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_qr(const cpp_int_backend& x, const cpp_int_backend& y, + cpp_int_backend& q, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) { divide_unsigned_helper(&q, x, y, r); q.sign(x.sign() != y.sign()); @@ -2211,12 +2566,12 @@ inline void eval_qr(const cpp_int_backend& x, const } template -inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if((sizeof(Integer) <= sizeof(limb_type)) || (val <= (std::numeric_limits::max)())) { - cpp_int_backend d; - divide_unsigned_helper(static_cast*>(0), x, val, d); + cpp_int_backend d; + divide_unsigned_helper(static_cast*>(0), x, val, d); return d.limbs()[0]; } else @@ -2225,7 +2580,7 @@ inline typename enable_if, Integer>::type eval_integer_modu } } template -inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) { typedef typename make_unsigned::type unsigned_type; return eval_integer_modulus(x, static_cast(std::abs(val))); @@ -2235,8 +2590,8 @@ inline typename enable_if, Integer>::type eval_integer_modulu using boost::multiprecision::backends::cpp_int_backend; -template -struct number_category > : public mpl::int_{}; +template +struct number_category > : public mpl::int_{}; typedef mp_number > cpp_int; typedef rational_adapter > cpp_rational_backend; @@ -2260,13 +2615,15 @@ typedef mp_number, false> mp_int1024_t; }} // namespaces +#include + namespace std{ -template -class numeric_limits, ExpressionTemplates> > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; @@ -2315,57 +2672,57 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif -template -class numeric_limits, ExpressionTemplates> > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; struct inititializer { @@ -2439,62 +2796,62 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template -const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; +template +const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif -template -class numeric_limits, ExpressionTemplates> > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; struct inititializer { @@ -2567,55 +2924,55 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template -const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; +template +const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif diff --git a/include/boost/multiprecision/detail/cpp_int_core.hpp b/include/boost/multiprecision/detail/cpp_int_core.hpp index 31ce2245..773a3790 100644 --- a/include/boost/multiprecision/detail/cpp_int_core.hpp +++ b/include/boost/multiprecision/detail/cpp_int_core.hpp @@ -6,13 +6,63 @@ #ifndef BOOST_MP_CPP_INT_CORE_HPP #define BOOST_MP_CPP_INT_CORE_HPP +#include + namespace boost{ namespace multiprecision{ +namespace detail{ + +// +// These traits calculate the largest type in the list +// [unsigned] ong long, long, int, which has the specified number +// of bits. Note that intN_t and boost::int_t find the first +// member of the above list, not the last. We want the last in the +// list to ensure that mixed arithmetic operations are as efficient +// as possible. +// +template +struct largest_signed_type +{ + typedef typename mpl::if_c< + 1 + std::numeric_limits::digits == N, + long long, + typename mpl::if_c< + 1 + std::numeric_limits::digits == N, + long, + typename mpl::if_c< + 1 + std::numeric_limits::digits == N, + int, + typename boost::int_t::exact + >::type + >::type + >::type type; +}; + +template +struct largest_unsigned_type +{ + typedef typename mpl::if_c< + std::numeric_limits::digits == N, + unsigned long long, + typename mpl::if_c< + std::numeric_limits::digits == N, + unsigned long, + typename mpl::if_c< + std::numeric_limits::digits == N, + unsigned int, + typename boost::uint_t::exact + >::type + >::type + >::type type; +}; + +} + #if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6))) \ && !defined(BOOST_INTEL) && defined(__WORDSIZE) && (__WORDSIZE == 64) -typedef boost::uint64_t limb_type; -typedef boost::int64_t signed_limb_type; +typedef detail::largest_unsigned_type<64>::type limb_type; +typedef detail::largest_signed_type<64>::type signed_limb_type; typedef unsigned __int128 double_limb_type; typedef __int128 signed_double_limb_type; static const limb_type max_block_10 = 1000000000000000000uLL; @@ -28,8 +78,8 @@ inline limb_type block_multiplier(unsigned count) #else -typedef boost::uint32_t limb_type; -typedef boost::int32_t signed_limb_type; +typedef detail::largest_unsigned_type<32>::type limb_type; +typedef detail::largest_signed_type<32>::type signed_limb_type; typedef boost::uint64_t double_limb_type; typedef boost::int64_t signed_double_limb_type; static const limb_type max_block_10 = 1000000000; diff --git a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp new file mode 100644 index 00000000..199bcb90 --- /dev/null +++ b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp @@ -0,0 +1,284 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_CPP_INT_TRIVIAL_OPS_HPP +#define BOOST_MP_CPP_INT_TRIVIAL_OPS_HPP + +#include + +namespace boost{ namespace multiprecision{ namespace backends{ + +template +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + if(result.sign() != o.sign()) + { + if(*o.limbs() > *result.limbs()) + { + *result.limbs() = *o.limbs() - *result.limbs(); + result.negate(); + } + else + *result.limbs() -= *o.limbs(); + } + else + *result.limbs() += *o.limbs(); +} + +template +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() += *o.limbs(); +} + +template +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + if(result.sign() != o.sign()) + { + *result.limbs() += *o.limbs(); + } + else if(*result.limbs() < *o.limbs()) + { + *result.limbs() = *o.limbs() - *result.limbs(); + result.negate(); + } + else + *result.limbs() -= *o.limbs(); +} + +template +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() -= *o.limbs(); +} + +template +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() *= *o.limbs(); + result.sign(result.sign() != o.sign()); +} + +template +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() *= *o.limbs(); +} + +template +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) +{ + if(!*o.limbs()) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + *result.limbs() /= *o.limbs(); + result.sign(result.sign() != o.sign()); +} + +template +inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) +{ + if(!*o.limbs()) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + *result.limbs() /= *o.limbs(); +} + +template +inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& o) +{ + if(!*o.limbs()) + BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + *result.limbs() %= *o.limbs(); + result.sign(result.sign()); +} + +template +inline void eval_left_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT +{ + *result.limbs() <<= s; +} + +template +inline void eval_right_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT +{ + *result.limbs() >>= s; +} + +template +inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + typename cpp_int_backend::local_limb_type a, b; + a = *result.limbs(); + if(result.isneg()) + { + a = ~a; + ++a; + } + b = *o.limbs(); + if(o.isneg()) + { + b = ~b; + ++b; + } + a &= b; + bool isneg = false; + static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + if(a & mask) + { + a = ~a; + ++a; + isneg = true; + } + *result.limbs() = a; + result.sign(isneg); +} + +template +inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() &= *o.limbs(); +} + +template +inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + typename cpp_int_backend::local_limb_type a, b; + a = *result.limbs(); + if(result.isneg()) + { + a = ~a; + ++a; + } + b = *o.limbs(); + if(o.isneg()) + { + b = ~b; + ++b; + } + a |= b; + bool isneg = false; + static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + if(a & mask) + { + a = ~a; + ++a; + isneg = true; + } + *result.limbs() = a; + result.sign(isneg); +} + +template +inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() |= *o.limbs(); +} + +template +inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + typename cpp_int_backend::local_limb_type a, b; + a = *result.limbs(); + if(result.isneg()) + { + a = ~a; + ++a; + } + b = *o.limbs(); + if(o.isneg()) + { + b = ~b; + ++b; + } + a ^= b; + bool isneg = false; + static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + if(a & mask) + { + a = ~a; + ++a; + isneg = true; + } + *result.limbs() = a; + result.sign(isneg); +} + +template +inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() ^= *o.limbs(); +} + +template +inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + typename cpp_int_backend::local_limb_type a; + a = *o.limbs(); + if(o.isneg()) + { + a = ~a; + ++a; + } + a = ~a; + bool isneg = false; + static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + if(a & mask) + { + a = ~a; + ++a; + isneg = true; + } + *result.limbs() = a; + result.sign(isneg); +} + +template +inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +{ + *result.limbs() = ~*o.limbs(); +} + +template +inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + *result.limbs() = boost::math::gcd(*a.limbs(), *b.limbs()); +} + +template +inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + *result.limbs() = boost::math::lcm(*a.limbs(), *b.limbs()); +} + +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4127 4018) +#endif +template +inline void eval_convert_to(R* result, const cpp_int_backend& val) +{ + if(std::numeric_limits::is_specialized && (*val.limbs() > (std::numeric_limits::max)())) + *result = (std::numeric_limits::max)(); + else + *result = static_cast(*val.limbs()); + if(val.isneg()) + *result = negate_integer(*result, mpl::bool_::value || boost::is_floating_point::value>()); +} + +template +inline void eval_convert_to(R* result, const cpp_int_backend& val) +{ + if(std::numeric_limits::is_specialized && (*val.limbs() > (std::numeric_limits::max)())) + *result = (std::numeric_limits::max)(); + else + *result = static_cast(*val.limbs()); +} +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 9a46792c..0782839d 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -391,10 +391,6 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); } - gmp_float(unsigned digits10) - { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - } gmp_float(mpf_t val) { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 8c84a319..c81f691d 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -38,13 +38,20 @@ class mp_number public: typedef Backend backend_type; BOOST_CONSTEXPR mp_number() BOOST_NOEXCEPT_IF(noexcept(Backend())) {} - mp_number(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} + BOOST_CONSTEXPR mp_number(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} template - mp_number(V v, typename enable_if, is_same, is_convertible > >::type* = 0) + mp_number(V v, typename enable_if_c< + (boost::is_arithmetic::value || is_same::value || is_convertible::value) + && !is_convertible::type, Backend>::value >::type* = 0) { m_backend = canonical_value(v); } - mp_number(const mp_number& e, unsigned digits10) + template + BOOST_CONSTEXPR mp_number(V v, typename enable_if_c< + (boost::is_arithmetic::value || is_same::value || is_convertible::value) + && is_convertible::type, Backend>::value >::type* = 0) + : m_backend(canonical_value(v)) {} + BOOST_CONSTEXPR mp_number(const mp_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} /* // @@ -59,7 +66,7 @@ public: } */ template - mp_number(const mp_number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} + BOOST_CONSTEXPR mp_number(const mp_number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} template mp_number(const mp_number& val, typename enable_if >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) @@ -88,7 +95,7 @@ public: } template - mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) + BOOST_CONSTEXPR mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(v){} @@ -155,7 +162,7 @@ public: } #ifndef BOOST_NO_RVALUE_REFERENCES - mp_number(mp_number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} + BOOST_CONSTEXPR mp_number(mp_number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} mp_number& operator=(mp_number&& r) BOOST_NOEXCEPT { m_backend.swap(r.m_backend); diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 174deb08..3c1301e5 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -402,10 +402,6 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> { mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); } - mpfr_float_backend(unsigned digits10) - { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); - } mpfr_float_backend(mpfr_t val) { mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index da143eb9..e94ed3fd 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -84,6 +84,13 @@ private: unsigned bits_wanted; // for integer types +namespace boost{ namespace multiprecision{ + +template<> +class number_category : public mpl::int_{}; + +}} + template struct tester { @@ -177,13 +184,24 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - double test_str() + double test_str(const boost::mpl::false_&) + { + stopwatch w; + for(unsigned i = 0; i < b.size(); ++i) + a[i] = boost::lexical_cast(boost::lexical_cast(b[i])); + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + double test_str(const boost::mpl::true_&) { stopwatch w; for(unsigned i = 0; i < b.size(); ++i) a[i] = b[i].str(); return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_str() + { + return test_str(boost::is_class()); + } // // The following tests only work for integer types: // @@ -303,6 +321,7 @@ struct tester } double test_gcd() { + using boost::math::gcd; stopwatch w; for(unsigned i = 0; i < 1000; ++i) { @@ -311,6 +330,54 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } + double test_construct() + { + std::allocator a; + T* pt = a.allocate(1000); + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < 1000; ++i) + new(pt+i) T(); + for(unsigned i = 0; i < 1000; ++i) + a.destroy(pt+i); + } + double result = boost::chrono::duration_cast >(w.elapsed()).count(); + a.deallocate(pt, 1000); + return result; + } + double test_construct_unsigned() + { + std::allocator a; + T* pt = a.allocate(1000); + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < 1000; ++i) + new(pt+i) T(i); + for(unsigned i = 0; i < 1000; ++i) + a.destroy(pt+i); + } + double result = boost::chrono::duration_cast >(w.elapsed()).count(); + a.deallocate(pt, 1000); + return result; + } + double test_construct_unsigned_ll() + { + std::allocator a; + T* pt = a.allocate(1000); + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned long long j = 0; j < 1000; ++j) + new(pt+j) T(j); + for(unsigned j = 0; j < 1000; ++j) + a.destroy(pt+j); + } + double result = boost::chrono::duration_cast >(w.elapsed()).count(); + a.deallocate(pt, 1000); + return result; + } private: T generate_random() { @@ -489,6 +556,10 @@ void test(const char* type, unsigned precision) report_result(cat, type, "-(int)", precision, t.test_subtract_int()); report_result(cat, type, "*(int)", precision, t.test_multiply_int()); report_result(cat, type, "/(int)", precision, t.test_divide_int()); + // construction and destruction: + report_result(cat, type, "construct", precision, t.test_construct()); + report_result(cat, type, "construct(unsigned)", precision, t.test_construct_unsigned()); + report_result(cat, type, "construct(unsigned long long)", precision, t.test_construct_unsigned_ll()); test_int_ops(t, type, precision, typename boost::multiprecision::number_category::type()); } @@ -566,6 +637,9 @@ void quickbook_results() int main() { +#ifdef TEST_INT64 + test("boost::int64_t", 64); +#endif #ifdef TEST_MPF test("gmp_float", 50); test("gmp_float", 100); @@ -578,15 +652,16 @@ int main() test("gmp_int", 1024); #endif #ifdef TEST_CPP_INT + test, false > >("cpp_int(fixed)", 64); + test, false > >("cpp_int(fixed)", 128); + test, false > >("cpp_int(fixed)", 256); + test, false > >("cpp_int(fixed)", 512); + test, false > >("cpp_int(fixed)", 1024); + test("cpp_int", 128); test("cpp_int", 256); test("cpp_int", 512); test("cpp_int", 1024); - - test > >("cpp_int(fixed)", 128); - test > >("cpp_int(fixed)", 256); - test > >("cpp_int(fixed)", 512); - test > >("cpp_int(fixed)", 1024); #endif #ifdef TEST_CPP_INT_RATIONAL test("cpp_rational", 128); diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index e1bba8ba..352aee53 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1171,6 +1171,10 @@ int main() test(); test, false> >(); test > >(); + + // Again with "trivial" backends: + test, false > >(); + test, false > >(); #endif #ifdef TEST_CPP_INT_BR test(); From 7b353cb29610ce8cc9fb0f5e2ab9a0b0b031f072 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 23 Jul 2012 17:47:44 +0000 Subject: [PATCH 201/256] Fix Linux x64 failures. [SVN r79700] --- include/boost/multiprecision/cpp_int.hpp | 112 ++++++++++++++++-- .../multiprecision/detail/cpp_int_core.hpp | 3 + .../detail/cpp_int_trivial_ops.hpp | 2 +- 3 files changed, 106 insertions(+), 11 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 0edba4aa..40643feb 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -425,16 +425,21 @@ public: } }; -template -struct trivial_limb_type +template +struct trivial_limb_type_imp { - typedef typename mpl::if_c< - N <= sizeof(long long) * CHAR_BIT, - typename boost::uint_t::least, - double_limb_type - >::type type; + typedef double_limb_type type; }; +template +struct trivial_limb_type_imp +{ + typedef typename boost::uint_t::least type; +}; + +template +struct trivial_limb_type : public trivial_limb_type_imp {}; + #ifdef BOOST_MSVC #pragma warning(push) #pragma warning(disable:4244) // loss of data in initialization @@ -446,10 +451,10 @@ struct cpp_int_base typedef typename trivial_limb_type::type local_limb_type; typedef local_limb_type* limb_pointer; typedef const local_limb_type* const_limb_pointer; -private: +protected: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = MinBits < limb_bits ? (local_limb_type(1) << MinBits) -1 : (~local_limb_type(0))); - +private: local_limb_type m_data; bool m_sign; @@ -1058,7 +1063,8 @@ public: { this->do_swap(o); } - std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const +private: + std::string str(std::ios_base::fmtflags f, const mpl::false_&)const { std::stringstream ss; ss.flags(f); @@ -1069,6 +1075,92 @@ public: result += ss.str(); return result; } + std::string str(std::ios_base::fmtflags f, const mpl::true_&)const + { + // Even though we have only one limb, we can't do IO on it :-( + int base = 10; + if((f & std::ios_base::oct) == std::ios_base::oct) + base = 8; + else if((f & std::ios_base::hex) == std::ios_base::hex) + base = 16; + std::string result; + + unsigned Bits = base_type::limb_bits; + + if(base == 8 || base == 16) + { + if(this->sign()) + BOOST_THROW_EXCEPTION(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported.")); + limb_type shift = base == 8 ? 3 : 4; + limb_type mask = static_cast((1u << shift) - 1); + typename base_type::local_limb_type v = *this->limbs(); + result.assign(Bits / shift + (Bits % shift ? 1 : 0), '0'); + int pos = result.size() - 1; + for(unsigned i = 0; i < Bits / shift; ++i) + { + char c = '0' + static_cast(v & mask); + if(c > '9') + c += 'A' - '9' - 1; + result[pos--] = c; + v >>= shift; + } + if(Bits % shift) + { + mask = static_cast((1u << (Bits % shift)) - 1); + char c = '0' + static_cast(v & mask); + if(c > '9') + c += 'A' - '9'; + result[pos] = c; + } + // + // Get rid of leading zeros: + // + std::string::size_type n = result.find_first_not_of('0'); + if(!result.empty() && (n == std::string::npos)) + n = result.size() - 1; + result.erase(0, n); + if(f & std::ios_base::showbase) + { + const char* pp = base == 8 ? "0" : "0x"; + result.insert(0, pp); + } + } + else + { + result.assign(Bits / 3 + 1, '0'); + int pos = result.size() - 1; + typename base_type::local_limb_type v(*this->limbs()); + bool neg = false; + if(this->sign()) + { + neg = true; + } + while(v) + { + result[pos] = (v % 10) + '0'; + --pos; + v /= 10; + } + unsigned n = result.find_first_not_of('0'); + result.erase(0, n); + if(result.empty()) + result = "0"; + if(neg) + result.insert(0, 1, '-'); + else if(f & std::ios_base::showpos) + result.insert(0, 1, '+'); + } + return result; + } +public: + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const + { +#ifdef BOOST_MP_NO_DOUBLE_LIMB_TYPE_IO + return str(f, mpl::bool_::value>()); +#else + return str(f, mpl::bool_()); +#endif + } int compare(const cpp_int_backend& o)const BOOST_NOEXCEPT { if(this->sign() != o.sign()) diff --git a/include/boost/multiprecision/detail/cpp_int_core.hpp b/include/boost/multiprecision/detail/cpp_int_core.hpp index 773a3790..f2e86cf1 100644 --- a/include/boost/multiprecision/detail/cpp_int_core.hpp +++ b/include/boost/multiprecision/detail/cpp_int_core.hpp @@ -76,6 +76,9 @@ inline limb_type block_multiplier(unsigned count) return values[count]; } +// Can't do formatted IO on an __int128 +#define BOOST_MP_NO_DOUBLE_LIMB_TYPE_IO + #else typedef detail::largest_unsigned_type<32>::type limb_type; diff --git a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp index 199bcb90..22e7d197 100644 --- a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp +++ b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp @@ -159,7 +159,7 @@ inline void eval_bitwise_or(cpp_int_backend& result, } a |= b; bool isneg = false; - static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (sizeof(typename cpp_int_backend::local_limb_type) * CHAR_BIT - 1); if(a & mask) { a = ~a; From 64fe0089d30b7cb28fda103ad32fd84b456ba584 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 24 Jul 2012 18:03:54 +0000 Subject: [PATCH 202/256] Refactor concept checks for faster compilers. Add constexpr construction test. [SVN r79724] --- include/boost/multiprecision/cpp_int.hpp | 58 ++++--- performance/performance_test.cpp | 5 +- test/Jamfile.v2 | 107 ++++++------- .../mp_number_concept_check.cpp | 18 +-- test/concepts/sf_concept_check_basic.cpp | 149 ++++++++++++++++++ test/concepts/sf_concept_check_bessel.cpp | 114 ++++++++++++++ test/concepts/sf_concept_check_elliptic.cpp | 120 ++++++++++++++ test/concepts/sf_concept_check_gamma.cpp | 136 ++++++++++++++++ test/concepts/sf_concept_check_poly.cpp | 111 +++++++++++++ test/test_constexpr.cpp | 39 +++++ 10 files changed, 755 insertions(+), 102 deletions(-) rename test/{ => concepts}/mp_number_concept_check.cpp (84%) create mode 100644 test/concepts/sf_concept_check_basic.cpp create mode 100644 test/concepts/sf_concept_check_bessel.cpp create mode 100644 test/concepts/sf_concept_check_elliptic.cpp create mode 100644 test/concepts/sf_concept_check_gamma.cpp create mode 100644 test/concepts/sf_concept_check_poly.cpp create mode 100644 test/test_constexpr.cpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 40643feb..94e428d7 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -236,11 +236,15 @@ public: BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); private: - union{ + union data_type{ limb_type m_data[internal_limb_count]; limb_type m_first_limb; double_limb_type m_double_first_limb; - }; + + BOOST_CONSTEXPR data_type(){} + BOOST_CONSTEXPR data_type(limb_type i) : m_first_limb(i) {} + BOOST_CONSTEXPR data_type(double_limb_type i) : m_double_first_limb(i) {} + } m_wrapper; boost::uint16_t m_limbs; bool m_sign; @@ -249,21 +253,21 @@ public: // Direct construction: // BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT - : m_first_limb(i), m_limbs(1), m_sign(false) {} + : m_wrapper(i), m_limbs(1), m_sign(false) {} BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT - : m_first_limb(std::abs(i)), m_limbs(1), m_sign(i < 0) {} + : m_wrapper(limb_type(i < 0 ? -i : i)), m_limbs(1), m_sign(i < 0) {} #if defined(BOOST_LITTLE_ENDIAN) BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT - : m_double_first_limb(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false) {} + : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false) {} BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT - : m_double_first_limb(i < 0 ? -i : i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0) {} + : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0) {} #endif // // Helper functions for getting at our internal data, and manipulating storage: // unsigned size()const BOOST_NOEXCEPT { return m_limbs; } - limb_pointer limbs() BOOST_NOEXCEPT { return m_data; } - const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_data; } + limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; } + const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } bool sign()const BOOST_NOEXCEPT { return m_sign; } void sign(bool b) BOOST_NOEXCEPT { @@ -287,7 +291,7 @@ public: if((m_limbs == 1) && (!*p)) m_sign = false; // zero is always unsigned } - BOOST_CONSTEXPR cpp_int_base() : m_first_limb(0), m_limbs(1), m_sign(false) {} + BOOST_CONSTEXPR cpp_int_base() : m_wrapper(limb_type(0u)), m_limbs(1), m_sign(false) {} cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign) { std::copy(o.limbs(), o.limbs() + o.size(), limbs()); @@ -298,7 +302,7 @@ public: if(this != &o) { resize(o.size()); - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); m_sign = o.m_sign; } } @@ -319,7 +323,7 @@ public: void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) - std::swap(m_data[i], o.m_data[i]); + std::swap(m_wrapper.m_data[i], o.m_wrapper.m_data[i]); std::swap(m_sign, o.m_sign); std::swap(m_limbs, o.m_limbs); } @@ -346,11 +350,15 @@ public: BOOST_STATIC_ASSERT_MSG(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs"); private: - union{ + union data_type{ limb_type m_data[internal_limb_count]; limb_type m_first_limb; double_limb_type m_double_first_limb; - }; + + BOOST_CONSTEXPR data_type() {} + BOOST_CONSTEXPR data_type(limb_type i) : m_first_limb(i) {} + BOOST_CONSTEXPR data_type(double_limb_type i) : m_double_first_limb(i) {} + } m_wrapper; limb_type m_limbs; public: @@ -358,21 +366,21 @@ public: // Direct construction: // BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT - : m_first_limb(i), m_limbs(1) {} + : m_wrapper(i), m_limbs(1) {} cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT - : m_first_limb(i < 0 ? -i : i), m_limbs(1) { if(i < 0) negate(); } + : m_wrapper(limb_type(i < 0 ? -i : i)), m_limbs(1) { if(i < 0) negate(); } #ifdef BOOST_LITTLE_ENDIAN BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT - : m_double_first_limb(i), m_limbs(i > max_limb_value ? 2 : 1) {} + : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1) {} cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT - : m_double_first_limb(i < 0 ? -i : i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)) { if(i < 0) negate(); } + : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)) { if(i < 0) negate(); } #endif // // Helper functions for getting at our internal data, and manipulating storage: // unsigned size()const BOOST_NOEXCEPT { return m_limbs; } - limb_pointer limbs() BOOST_NOEXCEPT { return m_data; } - const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_data; } + limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; } + const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } void sign(bool b) BOOST_NOEXCEPT { if(b) negate(); } void resize(unsigned new_size) BOOST_NOEXCEPT @@ -386,7 +394,7 @@ public: while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_first_limb(0), m_limbs(1) {} + BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_wrapper(limb_type(0u)), m_limbs(1) {} cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs) { std::copy(o.limbs(), o.limbs() + o.size(), limbs()); @@ -397,7 +405,7 @@ public: if(this != &o) { resize(o.size()); - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } } void negate() BOOST_NOEXCEPT @@ -406,10 +414,10 @@ public: // would result in a "negative" number: unsigned i; for(i = m_limbs; i < internal_limb_count; ++i) - m_data[i] = 0; + m_wrapper.m_data[i] = 0; m_limbs = internal_limb_count; for(i = 0; i < internal_limb_count; ++i) - m_data[i] = ~m_data[i]; + m_wrapper.m_data[i] = ~m_wrapper.m_data[i]; normalize(); eval_increment(static_cast& >(*this)); } @@ -420,7 +428,7 @@ public: void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) - std::swap(m_data[i], o.m_data[i]); + std::swap(m_wrapper.m_data[i], o.m_wrapper.m_data[i]); std::swap(m_limbs, o.m_limbs); } }; @@ -442,7 +450,7 @@ struct trivial_limb_type : public trivial_limb_type_imp diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index e94ed3fd..8dd0b3ed 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -88,6 +88,8 @@ namespace boost{ namespace multiprecision{ template<> class number_category : public mpl::int_{}; +template<> +class number_category : public mpl::int_{}; }} @@ -638,7 +640,7 @@ void quickbook_results() int main() { #ifdef TEST_INT64 - test("boost::int64_t", 64); + test("boost::uint64_t", 64); #endif #ifdef TEST_MPF test("gmp_float", 50); @@ -652,6 +654,7 @@ int main() test("gmp_int", 1024); #endif #ifdef TEST_CPP_INT + test, false > >("cpp_int(unsigned, fixed)", 64); test, false > >("cpp_int(fixed)", 64); test, false > >("cpp_int(fixed)", 128); test, false > >("cpp_int(fixed)", 256); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index deec7251..a10e4f59 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -610,6 +610,7 @@ run test_move.cpp : test_move_cpp_int ; run test_test.cpp ; +compile test_constexpr.cpp ; run test_float_io.cpp : # command line @@ -772,73 +773,59 @@ if $(enable-specfun) if ! $(disable-concepts) { - run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_50 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_50 ; - run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_6 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_6 ; + for local source in [ glob concepts/*.cpp ] + { - run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_15 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_15 ; + compile $(source) mpfr + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : $(source:B)_mpfr_50 ; - run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_17 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_17 ; + compile $(source) mpfr + : # requirements + TEST_MPFR_6 + [ check-target-builds ../config//has_mpfr : : no ] + : $(source:B)_mpfr_6 ; - run mp_number_concept_check.cpp mpfr - : # command line - : # input files - : # requirements - TEST_MPFR_30 - [ check-target-builds ../config//has_mpfr : : no ] - : mp_number_concept_check_mpfr_30 ; + compile $(source) mpfr + : # requirements + TEST_MPFR_15 + [ check-target-builds ../config//has_mpfr : : no ] + : $(source:B)_mpfr_15 ; - run mp_number_concept_check.cpp gmp - : # command line - : # input files - : # requirements - TEST_MPF_50 - [ check-target-builds ../config//has_gmp : : no ] - : mp_number_concept_check_mpf50 ; + compile $(source) mpfr + : # requirements + TEST_MPFR_17 + [ check-target-builds ../config//has_mpfr : : no ] + : $(source:B)_mpfr_17 ; - run mp_number_concept_check.cpp - : # command line - : # input files - : # requirements - TEST_CPP_DEC_FLOAT - : mp_number_concept_check_cpp_dec_float ; + compile $(source) mpfr + : # requirements + TEST_MPFR_30 + [ check-target-builds ../config//has_mpfr : : no ] + : $(source:B)_mpfr_30 ; - run mp_number_concept_check.cpp - : # command line - : # input files - : # requirements - TEST_CPP_DEC_FLOAT_NO_ET - : mp_number_concept_check_cpp_dec_float_no_et ; + compile $(source) gmp + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : $(source:B)_mpf50 ; - run mp_number_concept_check.cpp - : # command line - : # input files - : # requirements - TEST_BACKEND - : mp_number_concept_check_backend_concept ; + compile $(source) + : # requirements + TEST_CPP_DEC_FLOAT + : $(source:B)_cpp_dec_float ; + compile $(source) + : # requirements + TEST_CPP_DEC_FLOAT_NO_ET + : $(source:B)_cpp_dec_float_no_et ; + + compile $(source) + : # requirements + TEST_BACKEND + : $(source:B)_backend_concept ; + } } diff --git a/test/mp_number_concept_check.cpp b/test/concepts/mp_number_concept_check.cpp similarity index 84% rename from test/mp_number_concept_check.cpp rename to test/concepts/mp_number_concept_check.cpp index 45831f29..d921dce7 100644 --- a/test/mp_number_concept_check.cpp +++ b/test/concepts/mp_number_concept_check.cpp @@ -4,13 +4,9 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // -// This tests two things: that cpp_dec_float_50 meets our -// conceptual requirements, and that we can instantiate -// all our distributions and special functions on this type. +// This tests that cpp_dec_float_50 meets our +// conceptual requirements. // -#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false -#define BOOST_MATH_INSTANTIATE_MINIMUM - #ifdef _MSC_VER # define _SCL_SECURE_NO_WARNINGS # pragma warning(disable:4800) @@ -57,7 +53,6 @@ #endif #include -#include "libs/math/test/compile_test/instantiate.hpp" template void test_extra(T) @@ -167,39 +162,30 @@ void test_extra(T) void foo() { #ifdef TEST_BACKEND - instantiate(boost::multiprecision::concepts::mp_number_float_architype()); test_extra(boost::multiprecision::concepts::mp_number_float_architype()); #endif #ifdef TEST_MPF_50 - instantiate(boost::multiprecision::mpf_float_50()); test_extra(boost::multiprecision::mpf_float_50()); #endif #ifdef TEST_MPFR_50 - instantiate(boost::multiprecision::mpfr_float_50()); test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 - instantiate(boost::multiprecision::mp_number >()); test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_MPFR_15 - instantiate(boost::multiprecision::mp_number >()); test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_MPFR_17 - instantiate(boost::multiprecision::mp_number >()); test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_MPFR_30 - instantiate(boost::multiprecision::mp_number >()); test_extra(boost::multiprecision::mp_number >()); #endif #ifdef TEST_CPP_DEC_FLOAT - instantiate(boost::multiprecision::cpp_dec_float_50()); test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - instantiate(boost::multiprecision::mp_number, false>()); test_extra(boost::multiprecision::mp_number, false>()); #endif } diff --git a/test/concepts/sf_concept_check_basic.cpp b/test/concepts/sf_concept_check_basic.cpp new file mode 100644 index 00000000..75c35b08 --- /dev/null +++ b/test/concepts/sf_concept_check_basic.cpp @@ -0,0 +1,149 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +# pragma warning(disable:4800) +# pragma warning(disable:4512) +# pragma warning(disable:4127) +# pragma warning(disable:4512) +# pragma warning(disable:4503) // decorated name length exceeded, name was truncated +#endif + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ + && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\ + && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) +# define TEST_MPF_50 +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR_50 +# define TEST_MPFR_6 +# define TEST_MPFR_15 +# define TEST_MPFR_17 +# define TEST_MPFR_30 +# define TEST_CPP_DEC_FLOAT +# define TEST_CPP_DEC_FLOAT_NO_ET + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) +#include +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include +#endif + +#include + +template +void test_extra(T) +{ + T v1, v2, v3; + int i; + (boost::math::fpclassify)(v1); + (boost::math::isfinite)(v1); + (boost::math::isnormal)(v1); + (boost::math::isnan)(v1); + (boost::math::isinf)(v1); + (boost::math::signbit)(v1); + (boost::math::copysign)(v1, v2); + (boost::math::changesign)(v1); + (boost::math::sign)(v1); + boost::math::log1p(v1); + boost::math::expm1(v1); + boost::math::cbrt(v1); + boost::math::sqrt1pm1(v1); + boost::math::powm1(v1, v2); + boost::math::hypot(v1, v2); + boost::math::sinc_pi(v1); + boost::math::sinhc_pi(v1); + boost::math::asinh(v1); + boost::math::acosh(v1); + boost::math::atanh(v1); + boost::math::sin_pi(v1); + boost::math::cos_pi(v1); + boost::math::trunc(v1); + boost::math::itrunc(v1); + boost::math::ltrunc(v1); + boost::math::round(v1); + boost::math::iround(v1); + boost::math::lround(v1); + boost::math::modf(v1, &v1); + boost::math::modf(v1, &i); + long l; + boost::math::modf(v1, &l); +#ifdef BOOST_HAS_LONG_LONG + boost::math::lltrunc(v1); + boost::math::llround(v1); + boost::long_long_type ll; + boost::math::modf(v1, &ll); +#endif + boost::math::pow<2>(v1); + boost::math::nextafter(v1, v1); + boost::math::float_next(v1); + boost::math::float_prior(v1); + boost::math::float_distance(v1, v1); + // Misc functions that don't fit elsewhere: + boost::math::expint(v1); + boost::math::expint(i); + boost::math::expint(i, v2); + boost::math::expint(i, i); + boost::math::zeta(v1); + boost::math::zeta(i); + boost::math::owens_t(v1, v2); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::mp_number, false>()); +#endif +} + +int main() +{ + foo(); +} diff --git a/test/concepts/sf_concept_check_bessel.cpp b/test/concepts/sf_concept_check_bessel.cpp new file mode 100644 index 00000000..12a40a13 --- /dev/null +++ b/test/concepts/sf_concept_check_bessel.cpp @@ -0,0 +1,114 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +# pragma warning(disable:4800) +# pragma warning(disable:4512) +# pragma warning(disable:4127) +# pragma warning(disable:4512) +# pragma warning(disable:4503) // decorated name length exceeded, name was truncated +#endif + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ + && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\ + && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) +# define TEST_MPF_50 +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR_50 +# define TEST_MPFR_6 +# define TEST_MPFR_15 +# define TEST_MPFR_17 +# define TEST_MPFR_30 +# define TEST_CPP_DEC_FLOAT +# define TEST_CPP_DEC_FLOAT_NO_ET + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) +#include +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include +#endif + +#include + +template +void test_extra(T) +{ + T v1, v2, v3; + int i(0); + boost::math::cyl_neumann(v1, v2); + boost::math::cyl_neumann(i, v2); + boost::math::cyl_bessel_j(v1, v2); + boost::math::cyl_bessel_j(i, v2); + boost::math::cyl_bessel_i(v1, v2); + boost::math::cyl_bessel_i(i, v2); + boost::math::cyl_bessel_k(v1, v2); + boost::math::cyl_bessel_k(i, v2); + boost::math::sph_bessel(i, v2); + boost::math::sph_bessel(i, 1); + boost::math::sph_neumann(i, v2); + boost::math::sph_neumann(i, i); + boost::math::airy_ai(v1); + boost::math::airy_bi(v1); + boost::math::airy_ai_prime(v1); + boost::math::airy_bi_prime(v1); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::mp_number, false>()); +#endif +} + +int main() +{ + foo(); +} diff --git a/test/concepts/sf_concept_check_elliptic.cpp b/test/concepts/sf_concept_check_elliptic.cpp new file mode 100644 index 00000000..e754f53e --- /dev/null +++ b/test/concepts/sf_concept_check_elliptic.cpp @@ -0,0 +1,120 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +# pragma warning(disable:4800) +# pragma warning(disable:4512) +# pragma warning(disable:4127) +# pragma warning(disable:4512) +# pragma warning(disable:4503) // decorated name length exceeded, name was truncated +#endif + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ + && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\ + && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) +# define TEST_MPF_50 +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR_50 +# define TEST_MPFR_6 +# define TEST_MPFR_15 +# define TEST_MPFR_17 +# define TEST_MPFR_30 +# define TEST_CPP_DEC_FLOAT +# define TEST_CPP_DEC_FLOAT_NO_ET + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) +#include +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include +#endif + +#include + +template +void test_extra(T) +{ + T v1, v2, v3; + boost::math::ellint_1(v1); + boost::math::ellint_1(v1, v2); + boost::math::ellint_2(v1); + boost::math::ellint_2(v1, v2); + boost::math::ellint_3(v1, v2); + boost::math::ellint_3(v1, v2, v3); + boost::math::ellint_rc(v1, v2); + boost::math::ellint_rd(v1, v2, v3); + boost::math::ellint_rf(v1, v2, v3); + boost::math::ellint_rj(v1, v2, v3, v1); + boost::math::jacobi_elliptic(v1, v2, &v1, &v2); + boost::math::jacobi_cd(v1, v2); + boost::math::jacobi_cn(v1, v2); + boost::math::jacobi_cs(v1, v2); + boost::math::jacobi_dc(v1, v2); + boost::math::jacobi_dn(v1, v2); + boost::math::jacobi_ds(v1, v2); + boost::math::jacobi_nc(v1, v2); + boost::math::jacobi_nd(v1, v2); + boost::math::jacobi_ns(v1, v2); + boost::math::jacobi_sc(v1, v2); + boost::math::jacobi_sd(v1, v2); + boost::math::jacobi_sn(v1, v2); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::mp_number, false>()); +#endif +} + +int main() +{ + foo(); +} diff --git a/test/concepts/sf_concept_check_gamma.cpp b/test/concepts/sf_concept_check_gamma.cpp new file mode 100644 index 00000000..bd108e9a --- /dev/null +++ b/test/concepts/sf_concept_check_gamma.cpp @@ -0,0 +1,136 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +# pragma warning(disable:4800) +# pragma warning(disable:4512) +# pragma warning(disable:4127) +# pragma warning(disable:4512) +# pragma warning(disable:4503) // decorated name length exceeded, name was truncated +#endif + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ + && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\ + && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) +# define TEST_MPF_50 +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR_50 +# define TEST_MPFR_6 +# define TEST_MPFR_15 +# define TEST_MPFR_17 +# define TEST_MPFR_30 +# define TEST_CPP_DEC_FLOAT +# define TEST_CPP_DEC_FLOAT_NO_ET + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) +#include +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include +#endif + +#include + +template +void test_extra(T) +{ + T v1, v2, v3; + int i; + boost::math::tgamma(v1); + boost::math::tgamma1pm1(v1); + boost::math::lgamma(v1); + boost::math::lgamma(v1, &i); + boost::math::digamma(v1); + boost::math::tgamma_ratio(v1, v2); + boost::math::tgamma_delta_ratio(v1, v2); + boost::math::factorial(i); + boost::math::unchecked_factorial(i); + i = boost::math::max_factorial::value; + boost::math::double_factorial(i); + boost::math::rising_factorial(v1, i); + boost::math::falling_factorial(v1, i); + boost::math::tgamma(v1, v2); + boost::math::tgamma_lower(v1, v2); + boost::math::gamma_p(v1, v2); + boost::math::gamma_q(v1, v2); + boost::math::gamma_p_inv(v1, v2); + boost::math::gamma_q_inv(v1, v2); + boost::math::gamma_p_inva(v1, v2); + boost::math::gamma_q_inva(v1, v2); + boost::math::erf(v1); + boost::math::erfc(v1); + boost::math::erf_inv(v1); + boost::math::erfc_inv(v1); + boost::math::beta(v1, v2); + boost::math::beta(v1, v2, v3); + boost::math::betac(v1, v2, v3); + boost::math::ibeta(v1, v2, v3); + boost::math::ibetac(v1, v2, v3); + boost::math::ibeta_inv(v1, v2, v3); + boost::math::ibetac_inv(v1, v2, v3); + boost::math::ibeta_inva(v1, v2, v3); + boost::math::ibetac_inva(v1, v2, v3); + boost::math::ibeta_invb(v1, v2, v3); + boost::math::ibetac_invb(v1, v2, v3); + boost::math::gamma_p_derivative(v2, v3); + boost::math::ibeta_derivative(v1, v2, v3); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::mp_number, false>()); +#endif +} + +int main() +{ + foo(); +} diff --git a/test/concepts/sf_concept_check_poly.cpp b/test/concepts/sf_concept_check_poly.cpp new file mode 100644 index 00000000..d8e855e2 --- /dev/null +++ b/test/concepts/sf_concept_check_poly.cpp @@ -0,0 +1,111 @@ +// Copyright John Maddock 2012. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// This tests that cpp_dec_float_50 meets our +// conceptual requirements when used with Boost.Math. +// +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +# pragma warning(disable:4800) +# pragma warning(disable:4512) +# pragma warning(disable:4127) +# pragma warning(disable:4512) +# pragma warning(disable:4503) // decorated name length exceeded, name was truncated +#endif + +#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \ + && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\ + && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) +# define TEST_MPF_50 +# define TEST_BACKEND +# define TEST_MPZ +# define TEST_MPFR_50 +# define TEST_MPFR_6 +# define TEST_MPFR_15 +# define TEST_MPFR_17 +# define TEST_MPFR_30 +# define TEST_CPP_DEC_FLOAT +# define TEST_CPP_DEC_FLOAT_NO_ET + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) || defined(TEST_MPZ) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) +#include +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30) +#include +#endif + +#include + +template +void test_extra(T) +{ + T v1, v2, v3; + boost::math::legendre_p(1, v1); + boost::math::legendre_p(1, 0, v1); + boost::math::legendre_q(1, v1); + boost::math::legendre_next(2, v1, v2, v3); + boost::math::legendre_next(2, 2, v1, v2, v3); + boost::math::laguerre(1, v1); + boost::math::laguerre(2, 1, v1); + boost::math::laguerre(2u, 1u, v1); + boost::math::laguerre_next(2, v1, v2, v3); + boost::math::laguerre_next(2, 1, v1, v2, v3); + boost::math::hermite(1, v1); + boost::math::hermite_next(2, v1, v2, v3); + boost::math::spherical_harmonic_r(2, 1, v1, v2); + boost::math::spherical_harmonic_i(2, 1, v1, v2); +} + +void foo() +{ +#ifdef TEST_BACKEND + test_extra(boost::multiprecision::concepts::mp_number_float_architype()); +#endif +#ifdef TEST_MPF_50 + test_extra(boost::multiprecision::mpf_float_50()); +#endif +#ifdef TEST_MPFR_50 + test_extra(boost::multiprecision::mpfr_float_50()); +#endif +#ifdef TEST_MPFR_6 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_15 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_17 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_MPFR_30 + test_extra(boost::multiprecision::mp_number >()); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test_extra(boost::multiprecision::cpp_dec_float_50()); +#endif +#ifdef TEST_CPP_DEC_FLOAT_NO_ET + test_extra(boost::multiprecision::mp_number, false>()); +#endif +} + +int main() +{ + foo(); +} diff --git a/test/test_constexpr.cpp b/test/test_constexpr.cpp new file mode 100644 index 00000000..6e97e2ae --- /dev/null +++ b/test/test_constexpr.cpp @@ -0,0 +1,39 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +#ifndef BOOST_NO_CONSTEXPR + +template +void test1() +{ + constexpr T i1 = 2u; + constexpr T i2; + constexpr T i3 = -3; + constexpr T i4(i1); +} +template +void test2() +{ + constexpr T i1 = 2u; + constexpr T i2; + constexpr T i3 = -3; +} +template +void test3() +{ + constexpr T i1 = 2u; + constexpr T i2; +} + +using namespace boost::multiprecision; + +template void test1, false> >(); +template void test1, false> >(); +template void test3, false> >(); +template void test2, false> >(); + +#endif \ No newline at end of file From 36847e4e0b39e7b0d3f971b6ad403c040cd63d04 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 30 Jul 2012 15:23:51 +0000 Subject: [PATCH 203/256] Add delaunay performance test case. Rework rvalue reference support for better performance. Rework default operators for better performance. [SVN r79802] --- include/boost/multiprecision/cpp_int.hpp | 162 +- .../multiprecision/detail/default_ops.hpp | 341 +- include/boost/multiprecision/gmp.hpp | 18 + include/boost/multiprecision/mp_number.hpp | 2 +- .../boost/multiprecision/rational_adapter.hpp | 5 + include/boost/multiprecision/tommath.hpp | 6 + ...oat_backend.hpp => arithmetic_backend.hpp} | 182 +- performance/delaunay_data.txt | 100000 +++++++++++++++ performance/delaunay_test.cpp | 279 + performance/performance_test.cpp | 132 + performance/sf_performance.cpp | 9 +- 11 files changed, 100939 insertions(+), 197 deletions(-) rename performance/{float_backend.hpp => arithmetic_backend.hpp} (55%) create mode 100644 performance/delaunay_data.txt create mode 100644 performance/delaunay_test.cpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 94e428d7..2391a0d4 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -135,7 +135,7 @@ public: { cap = (std::max)(cap * 4, new_size); limb_pointer pl = allocator().allocate(cap); - std::memcpy(pl, limbs(), size() * sizeof(limb_type)); + std::copy(limbs(), limbs() + size(), pl); if(!m_internal) allocator().deallocate(limbs(), capacity()); else @@ -162,7 +162,7 @@ public: m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : allocator_type(o), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) + cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : allocator_type(static_cast(o)), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) { if(m_internal) { @@ -175,6 +175,26 @@ public: o.m_internal = true; } } + cpp_int_base& operator = (cpp_int_base&& o) BOOST_NOEXCEPT + { + if(!m_internal) + allocator().deallocate(m_data.ld.data, m_data.ld.capacity); + *static_cast(this) = static_cast(o); + m_limbs = o.m_limbs; + m_sign = o.m_sign; + m_internal = o.m_internal; + if(m_internal) + { + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); + } + else + { + m_data.ld = o.m_data.ld; + o.m_limbs = 0; + o.m_internal = true; + } + return *this; + } #endif ~cpp_int_base() BOOST_NOEXCEPT { @@ -188,7 +208,7 @@ public: static_cast(*this) = static_cast(o); m_limbs = 0; resize(o.size()); - std::memcpy(limbs(), o.limbs(), size() * sizeof(limb_type)); + std::copy(o.limbs(), o.limbs() + o.size(), limbs()); m_sign = o.m_sign; } } @@ -682,6 +702,13 @@ public: this->assign(o); return *this; } +#ifndef BOOST_NO_RVALUE_REFERENCES + cpp_int_backend& operator = (cpp_int_backend&& o) BOOST_NOEXCEPT_IF(boost::is_void::value) + { + *static_cast(this) = static_cast(o); + return *this; + } +#endif cpp_int_backend& operator = (limb_type i) BOOST_NOEXCEPT { this->resize(1); @@ -1239,7 +1266,7 @@ inline void add_unsigned(cpp_int_backend& res if(!carry) { if(pa != pr) - std::memcpy(pr, pa, (pr_end - pr) * sizeof(limb_type)); + std::copy(pa, pa + (pr_end - pr), pr); break; } carry += static_cast(*pa); @@ -1269,18 +1296,27 @@ inline void eval_add(cpp_int_backend& result, } template -inline void add_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: + if(&result != &a) + result.resize(a.size()); double_limb_type carry = o; typename cpp_int_backend::limb_pointer pr = result.limbs(); - for(unsigned i = 0; carry && (i < result.size()); ++i) + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + unsigned i = 0; + for(; carry && (i < result.size()); ++i) { - carry += static_cast(pr[i]); + carry += static_cast(pa[i]); pr[i] = static_cast(carry); carry >>= cpp_int_backend::limb_bits; } + if(&a != &result) + { + for(; i < result.size(); ++i) + pr[i] = pa[i]; + } if(carry) { unsigned x = result.size(); @@ -1299,7 +1335,18 @@ inline void eval_add(cpp_int_backend& result, subtract_unsigned(result, o); } else - add_unsigned(result, o); + add_unsigned(result, result, o); +} +template +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + if(a.sign()) + { + result = a; + subtract_unsigned(result, o); + } + else + add_unsigned(result, a, o); } template inline void eval_add(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) @@ -1309,6 +1356,16 @@ inline void eval_add(cpp_int_backend& result, else if(o > 0) eval_add(result, static_cast(o)); } +template +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + if(o < 0) + eval_subtract(result, a, static_cast(-o)); + else if(o > 0) + eval_add(result, a, static_cast(o)); + else if(&result != &a) + result = a; +} template inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) @@ -1343,11 +1400,22 @@ template inline void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) - add_unsigned(result, o); + add_unsigned(result, result, o); else subtract_unsigned(result, o); } template +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + if(a.sign()) + add_unsigned(result, a, o); + else + { + result = a; + subtract_unsigned(result, o); + } +} +template inline void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o) @@ -1359,6 +1427,19 @@ inline void eval_subtract(cpp_int_backend& re } } template +inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + if(o) + { + if(o < 0) + eval_add(result, a, static_cast(-o)); + else + eval_subtract(result, a, static_cast(o)); + } + else if(&result != &a) + result = a; +} +template inline void eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) { static const limb_type one = 1; @@ -1451,7 +1532,7 @@ inline void subtract_unsigned(cpp_int_backend } // Any remaining digits are the same as those in pa: if((x != i) && (pa != pr)) - std::memcpy(pr + i, pa + i, (x - i) * sizeof(limb_type)); + std::copy(pa + i, pa + x, pr + i); BOOST_ASSERT(0 == borrow); // @@ -1494,18 +1575,16 @@ inline void eval_multiply(cpp_int_backend& re else { limb_type l = *pa; - result = b; - eval_multiply(result, l); + eval_multiply(result, b, l); } result.sign(s); return; } if(bs == 1) { - limb_type l = *pb; bool s = b.sign() != a.sign(); - result = a; - eval_multiply(result, l); + limb_type l = *pb; + eval_multiply(result, a, l); result.sign(s); return; } @@ -1562,17 +1641,19 @@ inline void eval_multiply(cpp_int_backend& re eval_multiply(result, result, a); } template -inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!val) { result = static_cast(0); return; } + if(&a != &result) + result.resize(a.size()); double_limb_type carry = 0; typename cpp_int_backend::limb_pointer p = result.limbs(); typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); - typename cpp_int_backend::limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); while(p != pe) { carry += static_cast(*pa) * static_cast(val); @@ -1587,6 +1668,7 @@ inline void eval_multiply(cpp_int_backend& re if(cpp_int_backend::variable || (result.size() > i)) result.limbs()[i] = static_cast(carry); } + result.sign(a.sign()); if(!cpp_int_backend::variable) result.normalize(); } @@ -1596,7 +1678,25 @@ inline void eval_multiply(cpp_int_backend& re eval_multiply(result, result, val); } template -inline void eval_multiply(cpp_int_backend& result, cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + if(val <= (std::numeric_limits::max)()) + { + eval_multiply(result, a, static_cast(val)); + } + else + { + cpp_int_backend t(val); + eval_multiply(result, a, t); + } +} +template +inline void eval_multiply(cpp_int_backend& result, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + eval_multiply(result, result, val); +} +template +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val > 0) eval_multiply(result, a, static_cast(val)); @@ -1611,6 +1711,32 @@ inline void eval_multiply(cpp_int_backend& re { eval_multiply(result, result, val); } +template +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + if(val > 0) + { + if(val <= (std::numeric_limits::max)()) + { + eval_multiply(result, a, static_cast(val)); + return; + } + } + else if(val >= -static_cast((std::numeric_limits::max)())) + { + eval_multiply(result, a, static_cast(-val)); + result.negate(); + return; + } + cpp_int_backend t(val); + eval_multiply(result, a, t); +} +template +inline void eval_multiply(cpp_int_backend& result, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +{ + eval_multiply(result, result, val); +} + template void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) { diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 74c245cb..e0e621d6 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -34,10 +34,11 @@ namespace boost{ namespace multiprecision{ namespace default_ops{ #endif // // Default versions of mixed arithmetic, these just construct a temporary -// from the arithmetic value and then do the arithmetic on that: +// from the arithmetic value and then do the arithmetic on that, two versions +// of each depending on whether the backend can be directly constructed from type V: // template -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && !is_convertible::value >::type eval_add(T& result, V const& v) { T t; @@ -45,7 +46,14 @@ inline typename enable_if, is_convertible -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && is_convertible::value >::type + eval_add(T& result, V const& v) +{ + T t(v); + eval_add(result, t); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_subtract(T& result, V const& v) { T t; @@ -53,7 +61,14 @@ inline typename enable_if, is_convertible -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && is_convertible::value>::type + eval_subtract(T& result, V const& v) +{ + T t(v); + eval_subtract(result, t); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_multiply(T& result, V const& v) { T t; @@ -61,7 +76,14 @@ inline typename enable_if, is_convertible -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && is_convertible::value>::type + eval_multiply(T& result, V const& v) +{ + T t(v); + eval_multiply(result, t); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_divide(T& result, V const& v) { T t; @@ -69,7 +91,14 @@ inline typename enable_if, is_convertible -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && is_convertible::value>::type + eval_divide(T& result, V const& v) +{ + T t(v); + eval_divide(result, t); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_modulus(T& result, V const& v) { T t; @@ -77,7 +106,14 @@ inline typename enable_if, is_convertible -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && is_convertible::value>::type + eval_modulus(T& result, V const& v) +{ + T t(v); + eval_modulus(result, t); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_and(T& result, V const& v) { T t; @@ -85,7 +121,14 @@ inline typename enable_if, is_convertible -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && is_convertible::value>::type + eval_bitwise_and(T& result, V const& v) +{ + T t(v); + eval_bitwise_and(result, t); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_or(T& result, V const& v) { T t; @@ -93,22 +136,43 @@ inline typename enable_if, is_convertible -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && is_convertible::value>::type + eval_bitwise_or(T& result, V const& v) +{ + T t(v); + eval_bitwise_or(result, t); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_xor(T& result, V const& v) { T t; t = v; eval_bitwise_xor(result, t); } +template +inline typename enable_if_c::value && is_convertible::value>::type + eval_bitwise_xor(T& result, V const& v) +{ + T t(v); + eval_bitwise_xor(result, t); +} template -inline typename enable_if, is_convertible, is_same > >::type +inline typename enable_if_c::value && !is_convertible::value>::type eval_complement(T& result, V const& v) { T t; t = v; eval_complement(result, t); } +template +inline typename enable_if_c::value && is_convertible::value>::type + eval_complement(T& result, V const& v) +{ + T t(v); + eval_complement(result, t); +} template inline bool is_same_object(const T& u, const T&v) BOOST_NOEXCEPT @@ -118,16 +182,16 @@ BOOST_CONSTEXPR inline bool is_same_object(const T&, const U&) BOOST_NOEXCEPT { return false; } // -// Default versions of 3-arg arithmetic functions, these just forward to the 2 arg versions: +// Default versions of 3-arg arithmetic functions, these mostly just forward to the 2 arg versions: // -template -inline void eval_add(T& t, const U& u, const V& v) +template +inline void eval_add(T& t, const T& u, const T& v) { - if(is_same_object(t, v)) + if(&t == &v) { eval_add(t, u); } - else if(is_same_object(t, u)) + else if(&t == &u) { eval_add(t, v); } @@ -137,22 +201,37 @@ inline void eval_add(T& t, const U& u, const V& v) eval_add(t, v); } } -template -inline typename disable_if >::type eval_add(T& t, const U& a, const T& b) +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_add(T& t, const T& u, const U& v) { - return eval_add(t, b, a); + T vv; + vv = v; + eval_add(t, u, vv); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_add(T& t, const T& u, const U& v) +{ + T vv(v); + eval_add(t, u, vv); +} +template +inline typename enable_if_c::value>::type eval_add(T& t, const U& u, const T& v) +{ + eval_add(t, v, u); } -template -inline void eval_subtract(T& t, const U& u, const V& v) +template +inline void eval_subtract(T& t, const T& u, const T& v) { - if(is_same_object(t, u)) - eval_subtract(t, v); - else if(is_same_object(t, v)) + if(&t == &v) { eval_subtract(t, u); t.negate(); } + else if(&t == &u) + { + eval_subtract(t, v); + } else { t = u; @@ -160,19 +239,36 @@ inline void eval_subtract(T& t, const U& u, const V& v) } } template -inline typename disable_if >::type eval_subtract(T& t, const U& a, const T& b) +inline typename enable_if_c::value && !is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) { - eval_subtract(t, b, a); + T vv; + vv = v; + eval_subtract(t, u, vv); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) +{ + T vv(v); + eval_subtract(t, u, vv); +} +template +inline typename enable_if_c::value>::type eval_subtract(T& t, const U& u, const T& v) +{ + eval_subtract(t, v, u); t.negate(); } -template -inline void eval_multiply(T& t, const U& u, const V& v) +template +inline void eval_multiply(T& t, const T& u, const T& v) { - if(is_same_object(t, u)) - eval_multiply(t, v); - else if(is_same_object(t, v)) + if(&t == &v) + { eval_multiply(t, u); + } + else if(&t == &u) + { + eval_multiply(t, v); + } else { t = u; @@ -180,18 +276,32 @@ inline void eval_multiply(T& t, const U& u, const V& v) } } template -inline typename disable_if >::type eval_multiply(T& t, const U& a, const T& b) +inline typename enable_if_c::value && !is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) { - eval_multiply(t, b, a); + T vv; + vv = v; + eval_multiply(t, u, vv); } -template -inline void eval_divide(T& t, const U& u, const V& v) +template +inline typename enable_if_c::value && is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) { - if(is_same_object(t, u)) + T vv(v); + eval_multiply(t, u, vv); +} +template +inline typename enable_if_c::value>::type eval_multiply(T& t, const U& u, const T& v) +{ + eval_multiply(t, v, u); +} + +template +inline void eval_divide(T& t, const T& u, const T& v) +{ + if(&t == &u) eval_divide(t, v); - else if(is_same_object(t, v)) + else if(&t == &v) { - T temp = t; + T temp; eval_divide(temp, u, v); temp.swap(t); } @@ -201,12 +311,40 @@ inline void eval_divide(T& t, const U& u, const V& v) eval_divide(t, v); } } -template -inline void eval_modulus(T& t, const U& u, const V& v) +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) { - if(is_same_object(t, u)) + T vv; + vv = v; + eval_divide(t, u, vv); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) +{ + T vv(v); + eval_divide(t, u, vv); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) +{ + T uu; + uu = u; + eval_divide(t, uu, v); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) +{ + T uu(u); + eval_divide(t, uu, v); +} + + +template +inline void eval_modulus(T& t, const T& u, const T& v) +{ + if(&t == &u) eval_modulus(t, v); - else if(is_same_object(t, v)) + else if(&t == &v) { T temp; eval_modulus(temp, u, v); @@ -218,13 +356,44 @@ inline void eval_modulus(T& t, const U& u, const V& v) eval_modulus(t, v); } } -template -inline void eval_bitwise_and(T& t, const U& u, const V& v) +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) { - if(is_same_object(t, u)) - eval_bitwise_and(t, v); - else if(is_same_object(t, v)) + T vv; + vv = v; + eval_modulus(t, u, vv); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) +{ + T vv(v); + eval_modulus(t, u, vv); +} +template +inline typename enable_if_c::value && !is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) +{ + T uu; + uu = u; + eval_modulus(t, uu, v); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) +{ + T uu(u); + eval_modulus(t, uu, v); +} + +template +inline void eval_bitwise_and(T& t, const T& u, const T& v) +{ + if(&t == &v) + { eval_bitwise_and(t, u); + } + else if(&t == &u) + { + eval_bitwise_and(t, v); + } else { t = u; @@ -232,18 +401,35 @@ inline void eval_bitwise_and(T& t, const U& u, const V& v) } } template -inline typename disable_if >::type eval_bitwise_and(T& t, const U& a, const T& b) +inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) { - eval_bitwise_and(t, b, a); + T vv; + vv = v; + eval_bitwise_and(t, u, vv); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) +{ + T vv(v); + eval_bitwise_and(t, u, vv); +} +template +inline typename enable_if_c::value>::type eval_bitwise_and(T& t, const U& u, const T& v) +{ + eval_bitwise_and(t, v, u); } -template -inline void eval_bitwise_or(T& t, const U& u, const V& v) +template +inline void eval_bitwise_or(T& t, const T& u, const T& v) { - if(is_same_object(t, u)) - eval_bitwise_or(t, v); - else if(is_same_object(t, v)) + if(&t == &v) + { eval_bitwise_or(t, u); + } + else if(&t == &u) + { + eval_bitwise_or(t, v); + } else { t = u; @@ -251,18 +437,35 @@ inline void eval_bitwise_or(T& t, const U& u, const V& v) } } template -inline typename disable_if >::type eval_bitwise_or(T& t, const U& a, const T& b) +inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) { - eval_bitwise_or(t, b, a); + T vv; + vv = v; + eval_bitwise_or(t, u, vv); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) +{ + T vv(v); + eval_bitwise_or(t, u, vv); +} +template +inline typename enable_if_c::value>::type eval_bitwise_or(T& t, const U& u, const T& v) +{ + eval_bitwise_or(t, v, u); } -template -inline void eval_bitwise_xor(T& t, const U& u, const V& v) +template +inline void eval_bitwise_xor(T& t, const T& u, const T& v) { - if(is_same_object(t, u)) - eval_bitwise_xor(t, v); - else if(is_same_object(t, v)) + if(&t == &v) + { eval_bitwise_xor(t, u); + } + else if(&t == &u) + { + eval_bitwise_xor(t, v); + } else { t = u; @@ -270,9 +473,22 @@ inline void eval_bitwise_xor(T& t, const U& u, const V& v) } } template -inline typename disable_if >::type eval_bitwise_xor(T& t, const U& a, const T& b) +inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) { - eval_bitwise_xor(t, b, a); + T vv; + vv = v; + eval_bitwise_xor(t, u, vv); +} +template +inline typename enable_if_c::value && is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) +{ + T vv(v); + eval_bitwise_xor(t, u, vv); +} +template +inline typename enable_if_c::value>::type eval_bitwise_xor(T& t, const U& u, const T& v) +{ + eval_bitwise_xor(t, v, u); } template @@ -281,7 +497,6 @@ inline void eval_increment(T& val) typedef typename mpl::front::type ui_type; eval_add(val, static_cast(1u)); } - template inline void eval_decrement(T& val) { diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 0782839d..fa3b10ca 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -925,6 +925,14 @@ struct gmp_int mpz_set(m_data, o.m_data); return *this; } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_int& operator = (gmp_int&& o) BOOST_NOEXCEPT + { + m_data[0] = o.m_data[0]; + o.m_data[0]._mp_d = 0; + return *this; + } +#endif gmp_int& operator = (unsigned long long i) { unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); @@ -1534,6 +1542,16 @@ struct gmp_rational mpq_set(m_data, o.m_data); return *this; } +#ifndef BOOST_NO_RVALUE_REFERENCES + gmp_rational& operator = (gmp_rational&& o) BOOST_NOEXCEPT + { + m_data[0]._mp_num = o.data()[0]._mp_num; + m_data[0]._mp_den = o.data()[0]._mp_den; + o.data()[0]._mp_num._mp_d = 0; + o.data()[0]._mp_den._mp_d = 0; + return *this; + } +#endif gmp_rational& operator = (unsigned long long i) { unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index c81f691d..3d93418e 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -165,7 +165,7 @@ public: BOOST_CONSTEXPR mp_number(mp_number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} mp_number& operator=(mp_number&& r) BOOST_NOEXCEPT { - m_backend.swap(r.m_backend); + m_backend = static_cast(r.m_backend); return *this; } #endif diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index a7192b1d..f3e4cd47 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -37,6 +37,11 @@ struct rational_adapter #ifndef BOOST_NO_RVALUE_REFERENCES rational_adapter(rational_adapter&& o) : m_value(o.m_value) {} rational_adapter(IntBackend&& o) : m_value(o) {} + rational_adapter& operator = (rational_adapter&& o) + { + m_value = static_cast(o.m_value); + return *this; + } #endif rational_adapter& operator = (const rational_adapter& o) { diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 5f2c3db6..21525be5 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -52,6 +52,12 @@ struct tommath_int m_data = o.m_data; o.m_data.dp = 0; } + tommath_int& operator = (tommath_int&& o) + { + m_data = o.m_data; + o.m_data.dp = 0; + return *this; + } #endif tommath_int& operator = (const tommath_int& o) { diff --git a/performance/float_backend.hpp b/performance/arithmetic_backend.hpp similarity index 55% rename from performance/float_backend.hpp rename to performance/arithmetic_backend.hpp index 8b2f2c9b..69176f3c 100644 --- a/performance/float_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -19,64 +19,37 @@ namespace multiprecision{ namespace backends{ template -struct float_backend +struct arithmetic_backend { - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list float_types; - typedef int exponent_type; + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + typedef int exponent_type; - float_backend(){} - float_backend(const float_backend& o) + arithmetic_backend(){} + arithmetic_backend(const arithmetic_backend& o) { m_value = o.m_value; } - float_backend(const Arithmetic& o) : m_value(o) {} -#ifndef BOOST_NO_RVALUE_REFERENCES - float_backend(float_backend&& o) : m_value(o.m_value) {} - float_backend(Arithmetic&& o) : m_value(o) {} -#endif - float_backend& operator = (const float_backend& o) + template + arithmetic_backend(const A& o, const typename enable_if >::type* = 0) : m_value(o) {} + arithmetic_backend& operator = (const arithmetic_backend& o) { m_value = o.m_value; return *this; } - float_backend& operator = (unsigned long long i) + template + typename enable_if, arithmetic_backend&>::type operator = (A i) { m_value = i; return *this; } - float_backend& operator = (unsigned i) - { - m_value = i; - return *this; - } - float_backend& operator = (long long i) - { - m_value = i; - return *this; - } - float_backend& operator = (int i) - { - m_value = i; - return *this; - } - float_backend& operator = (long double d) - { - m_value = d; - return *this; - } - float_backend& operator = (double d) - { - m_value = d; - return *this; - } - float_backend& operator = (const char* s) + arithmetic_backend& operator = (const char* s) { m_value = boost::lexical_cast(s); return *this; } - void swap(float_backend& o) + void swap(arithmetic_backend& o) { std::swap(m_value, o.m_value); } @@ -91,289 +64,276 @@ struct float_backend { m_value = -m_value; } - int compare(const float_backend& o)const + int compare(const arithmetic_backend& o)const { return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); } - int compare(long long i)const + template + typename enable_if, int>::type compare(A i)const { return m_value > i ? 1 : (m_value < i ? -1 : 0); } - int compare(int i)const - { - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(unsigned long long i)const - { - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(unsigned i)const - { - return m_value > i ? 1 : (m_value < i ? -1 : 0); - } - int compare(long double d)const - { - return m_value > d ? 1 : (m_value < d ? -1 : 0); - } - int compare(double d)const - { - return m_value > d ? 1 : (m_value < d ? -1 : 0); - } Arithmetic& data() { return m_value; } const Arithmetic& data()const { return m_value; } private: Arithmetic m_value; }; +template +inline void eval_convert_to(R* result, const arithmetic_backend& backend) +{ + *result = backend.data(); +} + template -inline void eval_add(float_backend& result, const float_backend& o) +inline void eval_add(arithmetic_backend& result, const arithmetic_backend& o) { result.data() += o.data(); } template -inline void eval_subtract(float_backend& result, const float_backend& o) +inline void eval_subtract(arithmetic_backend& result, const arithmetic_backend& o) { result.data() -= o.data(); } template -inline void eval_multiply(float_backend& result, const float_backend& o) +inline void eval_multiply(arithmetic_backend& result, const arithmetic_backend& o) { result.data() *= o.data(); } template -inline void eval_divide(float_backend& result, const float_backend& o) +inline void eval_divide(arithmetic_backend& result, const arithmetic_backend& o) { result.data() /= o.data(); } template -inline typename enable_if >::type eval_add(float_backend& result, const A2& o) +inline typename enable_if >::type eval_add(arithmetic_backend& result, const A2& o) { result.data() += o; } template -inline typename enable_if >::type eval_subtract(float_backend& result, const A2& o) +inline typename enable_if >::type eval_subtract(arithmetic_backend& result, const A2& o) { result.data() -= o; } template -inline typename enable_if >::type eval_multiply(float_backend& result, const A2& o) +inline typename enable_if >::type eval_multiply(arithmetic_backend& result, const A2& o) { result.data() *= o; } template -inline typename enable_if >::type eval_divide(float_backend& result, const A2& o) +inline typename enable_if >::type eval_divide(arithmetic_backend& result, const A2& o) { result.data() /= o; } template -inline void eval_add(float_backend& result, const float_backend& a, const float_backend& b) +inline void eval_add(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { result.data() = a.data() + b.data(); } template -inline void eval_subtract(float_backend& result, const float_backend& a, const float_backend& b) +inline void eval_subtract(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { result.data() = a.data() - b.data(); } template -inline void eval_multiply(float_backend& result, const float_backend& a, const float_backend& b) +inline void eval_multiply(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { result.data() = a.data() * b.data(); } template -inline void eval_divide(float_backend& result, const float_backend& a, const float_backend& b) +inline void eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { result.data() = a.data() / b.data(); } template -inline typename enable_if>::type eval_add(float_backend& result, const A2& a, const float_backend& b) +inline typename enable_if>::type eval_add(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { - result.data() = a + b.data(); + result.data() = a.data() + b; } template -inline typename enable_if>::type eval_subtract(float_backend& result, const A2& a, const float_backend& b) +inline typename enable_if>::type eval_subtract(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { - result.data() = a - b.data(); + result.data() = a.data() - b; } template -inline typename enable_if>::type eval_multiply(float_backend& result, const A2& a, const float_backend& b) +inline typename enable_if>::type eval_multiply(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { - result.data() = a * b.data(); + result.data() = a.data() * b; } template -inline typename enable_if>::type eval_divide(float_backend& result, const A2& a, const float_backend& b) +inline typename enable_if>::type eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { - result.data() = a / b.data(); + result.data() = a.data() / b; } template -inline bool eval_is_zero(const float_backend& val) +inline bool eval_is_zero(const arithmetic_backend& val) { return val.data() == 0; } template -inline int eval_get_sign(const float_backend& val) +inline int eval_get_sign(const arithmetic_backend& val) { return val.data() == 0 ? 0 : val.data() < 0 ? -1 : 1; } template -inline void eval_abs(float_backend& result, const float_backend& o) +inline void eval_abs(arithmetic_backend& result, const arithmetic_backend& o) { result.data() = std::abs(o.data()); } template -inline void eval_fabs(float_backend& result, const float_backend& o) +inline void eval_fabs(arithmetic_backend& result, const arithmetic_backend& o) { result.data() = std::abs(o.data()); } template -inline void eval_floor(float_backend& result, const float_backend& o) +inline void eval_floor(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = floor(o.data()); } template -inline void eval_ceil(float_backend& result, const float_backend& o) +inline void eval_ceil(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = ceil(o.data()); } template -inline void eval_sqrt(float_backend& result, const float_backend& o) +inline void eval_sqrt(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = sqrt(o.data()); } template -inline int eval_fpclassify(const float_backend& o) +inline int eval_fpclassify(const arithmetic_backend& o) { return (boost::math::fpclassify)(o.data()); } template -inline void eval_trunc(float_backend& result, const float_backend& o) +inline void eval_trunc(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = trunc(o.data()); } template -inline void eval_round(float_backend& result, const float_backend& o) +inline void eval_round(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = round(o.data()); } template -inline void eval_exp(float_backend& result, const float_backend& o) +inline void eval_exp(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = exp(o.data()); } template -inline void eval_log(float_backend& result, const float_backend& o) +inline void eval_log(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = log(o.data()); } template -inline void eval_log10(float_backend& result, const float_backend& o) +inline void eval_log10(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = log10(o.data()); } template -inline void eval_sin(float_backend& result, const float_backend& o) +inline void eval_sin(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = sin(o.data()); } template -inline void eval_cos(float_backend& result, const float_backend& o) +inline void eval_cos(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = cos(o.data()); } template -inline void eval_tan(float_backend& result, const float_backend& o) +inline void eval_tan(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = tan(o.data()); } template -inline void eval_acos(float_backend& result, const float_backend& o) +inline void eval_acos(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = acos(o.data()); } template -inline void eval_asin(float_backend& result, const float_backend& o) +inline void eval_asin(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = asin(o.data()); } template -inline void eval_atan(float_backend& result, const float_backend& o) +inline void eval_atan(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = atan(o.data()); } template -inline void eval_sinh(float_backend& result, const float_backend& o) +inline void eval_sinh(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = sinh(o.data()); } template -inline void eval_cosh(float_backend& result, const float_backend& o) +inline void eval_cosh(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = cosh(o.data()); } template -inline void eval_tanh(float_backend& result, const float_backend& o) +inline void eval_tanh(arithmetic_backend& result, const arithmetic_backend& o) { BOOST_MATH_STD_USING result.data() = tanh(o.data()); } template -inline void eval_fmod(float_backend& result, const float_backend& a, const float_backend& b) +inline void eval_fmod(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { BOOST_MATH_STD_USING result.data() = fmod(a.data(), b.data()); } template -inline void eval_pow(float_backend& result, const float_backend& a, const float_backend& b) +inline void eval_pow(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { BOOST_MATH_STD_USING result.data() = pow(a.data(), b.data()); } template -inline void eval_atan2(float_backend& result, const float_backend& a, const float_backend& b) +inline void eval_atan2(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { BOOST_MATH_STD_USING result.data() = atan2(a.data(), b.data()); @@ -381,7 +341,7 @@ inline void eval_atan2(float_backend& result, const float_backend(concepts::real_concept r namespace std{ template -class numeric_limits, ExpressionTemplates > > : public std::numeric_limits +class numeric_limits, ExpressionTemplates > > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } diff --git a/performance/delaunay_data.txt b/performance/delaunay_data.txt new file mode 100644 index 00000000..20932f78 --- /dev/null +++ b/performance/delaunay_data.txt @@ -0,0 +1,100000 @@ +1760125 5599875 1663688 5645904 1599875 5760125 1760125 5760125 +1760125 5599875 1599875 5599875 1663688 5645904 1760125 5760125 +1663688 5645904 1599875 5599875 1599875 5760125 1760125 5760125 +1760125 5599875 1663776 5645840 1663688 5645904 1760125 5760125 +1760125 5599875 1599875 5599875 1663776 5645840 1760125 5760125 +1663776 5645840 1599875 5599875 1663688 5645904 1760125 5760125 +1663688 5645904 1599875 5760125 1760125 5760125 1663776 5645840 +1663688 5645904 1663776 5645840 1599875 5599875 1599875 5760125 +1663776 5645840 1663816 5645848 1760125 5599875 1599875 5599875 +1760125 5760125 1663816 5645848 1663776 5645840 1663688 5645904 +1663816 5645848 1760125 5599875 1663776 5645840 1663688 5645904 +1760125 5760125 1663816 5645848 1663688 5645904 1599875 5760125 +1760125 5760125 1760125 5599875 1663816 5645848 1663688 5645904 +1663816 5645848 1663856 5645872 1760125 5599875 1663776 5645840 +1760125 5760125 1663856 5645872 1663816 5645848 1663688 5645904 +1663856 5645872 1760125 5599875 1663816 5645848 1663688 5645904 +1760125 5760125 1663856 5645872 1663688 5645904 1599875 5760125 +1663816 5645848 1663776 5645840 1663688 5645904 1663856 5645872 +1663688 5645904 1599875 5599875 1599875 5760125 1663856 5645872 +1663856 5645872 1663816 5645848 1663688 5645904 1599875 5760125 +1760125 5760125 1760125 5599875 1663856 5645872 1599875 5760125 +1663856 5645872 1663944 5645952 1760125 5599875 1663816 5645848 +1760125 5760125 1663944 5645952 1663856 5645872 1599875 5760125 +1760125 5760125 1760125 5599875 1663944 5645952 1599875 5760125 +1663856 5645872 1663688 5645904 1599875 5760125 1663944 5645952 +1663944 5645952 1760125 5599875 1663856 5645872 1663688 5645904 +1663688 5645904 1599875 5599875 1599875 5760125 1663944 5645952 +1663856 5645872 1663816 5645848 1663688 5645904 1663944 5645952 +1599875 5760125 1760125 5760125 1663944 5645952 1663688 5645904 +1760125 5760125 1664040 5646064 1663944 5645952 1599875 5760125 +1760125 5760125 1760125 5599875 1664040 5646064 1599875 5760125 +1663944 5645952 1664040 5646064 1760125 5599875 1663856 5645872 +1663944 5645952 1663688 5645904 1599875 5760125 1664040 5646064 +1599875 5760125 1760125 5760125 1664040 5646064 1663688 5645904 +1663944 5645952 1663856 5645872 1663688 5645904 1664040 5646064 +1663688 5645904 1599875 5599875 1599875 5760125 1664040 5646064 +1664040 5646064 1760125 5599875 1663944 5645952 1663688 5645904 +1664040 5646064 1664040 5646192 1760125 5760125 1760125 5599875 +1599875 5760125 1664040 5646192 1664040 5646064 1663688 5645904 +1599875 5760125 1760125 5760125 1664040 5646192 1663688 5645904 +1664040 5646192 1599875 5760125 1760125 5760125 1760125 5599875 +1599875 5760125 1664040 5646192 1663688 5645904 1599875 5599875 +1664040 5646064 1663944 5645952 1663688 5645904 1664040 5646192 +1663688 5645904 1599875 5760125 1664040 5646192 1663944 5645952 +1663944 5645952 1663856 5645872 1663688 5645904 1664040 5646192 +1664040 5646064 1664040 5646192 1760125 5599875 1663944 5645952 +1664040 5646064 1663944 5645952 1664040 5646192 1760125 5599875 +1664040 5646192 1663944 5646256 1599875 5760125 1760125 5760125 +1664040 5646192 1663688 5645904 1663944 5646256 1760125 5760125 +1663688 5645904 1663944 5646256 1664040 5646192 1663944 5645952 +1663688 5645904 1599875 5760125 1663944 5646256 1663944 5645952 +1663944 5646256 1760125 5760125 1664040 5646192 1663944 5645952 +1663688 5645904 1663944 5646256 1663944 5645952 1663856 5645872 +1664040 5646192 1663944 5646256 1760125 5760125 1760125 5599875 +1663944 5646256 1663688 5645904 1599875 5760125 1760125 5760125 +1599875 5760125 1663944 5646256 1663688 5645904 1599875 5599875 +1664040 5646192 1664040 5646064 1663944 5645952 1663944 5646256 +1664040 5646192 1664040 5646064 1663944 5646256 1760125 5760125 +1663944 5645952 1663688 5645904 1663944 5646256 1664040 5646064 +1663688 5645904 1663880 5646248 1663944 5646256 1663944 5645952 +1663688 5645904 1599875 5760125 1663880 5646248 1663944 5645952 +1663944 5646256 1664040 5646064 1663944 5645952 1663880 5646248 +1663944 5645952 1663688 5645904 1663880 5646248 1664040 5646064 +1663688 5645904 1663880 5646248 1663944 5645952 1663856 5645872 +1663944 5646256 1663880 5646248 1599875 5760125 1760125 5760125 +1599875 5760125 1663880 5646248 1663688 5645904 1599875 5599875 +1663944 5646256 1664040 5646192 1664040 5646064 1663880 5646248 +1663880 5646248 1599875 5760125 1663944 5646256 1664040 5646064 +1663688 5645904 1663776 5646144 1663880 5646248 1663944 5645952 +1663880 5646248 1664040 5646064 1663944 5645952 1663776 5646144 +1663944 5645952 1663688 5645904 1663776 5646144 1664040 5646064 +1663776 5646144 1599875 5760125 1663880 5646248 1664040 5646064 +1663880 5646248 1663944 5646256 1664040 5646064 1663776 5646144 +1663688 5645904 1663776 5646144 1663944 5645952 1663856 5645872 +1663776 5646144 1664040 5646064 1663944 5645952 1663856 5645872 +1599875 5760125 1663776 5646144 1663688 5645904 1599875 5599875 +1599875 5760125 1663880 5646248 1663776 5646144 1599875 5599875 +1663688 5645904 1663776 5645840 1599875 5599875 1663776 5646144 +1663688 5645904 1663776 5646144 1663856 5645872 1663816 5645848 +1663880 5646248 1663776 5646144 1599875 5760125 1663944 5646256 +1663688 5645904 1599875 5599875 1663776 5646144 1663856 5645872 +1599875 5599875 1663688 5645984 1663688 5645904 1663776 5645840 +1663776 5646144 1663688 5645984 1599875 5599875 1599875 5760125 +1663776 5646144 1663688 5645984 1599875 5760125 1663880 5646248 +1663688 5645984 1663688 5645904 1599875 5599875 1599875 5760125 +1663776 5646144 1663688 5645904 1663688 5645984 1599875 5760125 +1663688 5645904 1663688 5645984 1663776 5646144 1663856 5645872 +1663688 5645904 1599875 5599875 1663688 5645984 1663856 5645872 +1663688 5645984 1599875 5760125 1663776 5646144 1663856 5645872 +1663776 5646144 1663944 5645952 1663856 5645872 1663688 5645984 +1663776 5646144 1664040 5646064 1663944 5645952 1663688 5645984 +1663776 5646144 1663944 5645952 1663688 5645984 1599875 5760125 +1663688 5645904 1663688 5645984 1663856 5645872 1663816 5645848 +1663688 5645904 1599875 5599875 1663688 5645984 1663816 5645848 +1663688 5645904 1663688 5645984 1663816 5645848 1663776 5645840 +1663856 5645872 1663816 5645848 1663688 5645984 1663944 5645952 +1664040 5646192 1751256 5699712 1760125 5599875 1664040 5646064 +1760125 5760125 1751256 5699712 1664040 5646192 1663944 5646256 +1760125 5760125 1760125 5599875 1751256 5699712 1663944 5646256 +1760125 5760125 1751256 5699712 1663944 5646256 1599875 5760125 +1760125 5760125 1760125 5599875 1751256 5699712 1599875 5760125 +1751256 5699712 1760125 5599875 1664040 5646192 1663944 5646256 +1751256 5699712 1664040 5646192 1663944 5646256 1599875 5760125 +1663944 5646256 1663880 5646248 1599875 5760125 1751256 5699712 +1760125 5760125 1751376 5699584 1751256 5699712 1599875 5760125 +1751256 5699712 1751376 5699584 1760125 5599875 1664040 5646192 +1751376 5699584 1760125 5760125 1760125 5599875 1664040 5646192 +1760125 5599875 1664040 5646064 1664040 5646192 1751376 5699584 +1751256 5699712 1751376 5699584 1664040 5646192 1663944 5646256 +1751256 5699712 1760125 5760125 1751376 5699584 1664040 5646192 +1751376 5699584 1751504 5699528 1760125 5599875 1664040 5646192 +1760125 5760125 1751504 5699528 1751376 5699584 1751256 5699712 +1760125 5760125 1751504 5699528 1751256 5699712 1599875 5760125 +1751504 5699528 1760125 5599875 1751376 5699584 1751256 5699712 +1760125 5760125 1760125 5599875 1751504 5699528 1751256 5699712 +1751504 5699528 1751632 5699584 1760125 5599875 1751376 5699584 +1760125 5760125 1751632 5699584 1751504 5699528 1751256 5699712 +1760125 5760125 1751632 5699584 1751256 5699712 1599875 5760125 +1751632 5699584 1760125 5599875 1751504 5699528 1751256 5699712 +1751504 5699528 1751376 5699584 1751256 5699712 1751632 5699584 +1751256 5699712 1760125 5760125 1751632 5699584 1751376 5699584 +1751504 5699528 1751376 5699584 1751632 5699584 1760125 5599875 +1760125 5760125 1760125 5599875 1751632 5699584 1751256 5699712 +1760125 5760125 1751632 5699656 1751256 5699712 1599875 5760125 +1751256 5699712 1751632 5699656 1751632 5699584 1751376 5699584 +1751632 5699656 1760125 5760125 1751632 5699584 1751376 5699584 +1751632 5699584 1751504 5699528 1751376 5699584 1751632 5699656 +1751632 5699584 1751504 5699528 1751632 5699656 1760125 5760125 +1751376 5699584 1751256 5699712 1751632 5699656 1751504 5699528 +1751256 5699712 1760125 5760125 1751632 5699656 1751376 5699584 +1751632 5699584 1751632 5699656 1760125 5760125 1760125 5599875 +1760125 5760125 1751504 5699800 1751256 5699712 1599875 5760125 +1751632 5699656 1751504 5699800 1760125 5760125 1751632 5699584 +1751256 5699712 1751504 5699800 1751632 5699656 1751376 5699584 +1751632 5699656 1751504 5699528 1751376 5699584 1751504 5699800 +1751504 5699800 1760125 5760125 1751632 5699656 1751504 5699528 +1751632 5699656 1751632 5699584 1751504 5699528 1751504 5699800 +1751376 5699584 1751256 5699712 1751504 5699800 1751504 5699528 +1751256 5699712 1760125 5760125 1751504 5699800 1751376 5699584 +1760125 5760125 1751416 5699840 1751256 5699712 1599875 5760125 +1751504 5699800 1751416 5699840 1760125 5760125 1751632 5699656 +1751256 5699712 1751416 5699840 1751504 5699800 1751376 5699584 +1751256 5699712 1760125 5760125 1751416 5699840 1751376 5699584 +1751504 5699800 1751504 5699528 1751376 5699584 1751416 5699840 +1751416 5699840 1760125 5760125 1751504 5699800 1751376 5699584 +1760125 5760125 1751376 5699848 1751256 5699712 1599875 5760125 +1751256 5699712 1751376 5699848 1751416 5699840 1751376 5699584 +1751416 5699840 1751376 5699848 1760125 5760125 1751504 5699800 +1751256 5699712 1751256 5699792 1760125 5760125 1751376 5699848 +1599875 5760125 1751256 5699792 1751256 5699712 1663944 5646256 +1751256 5699712 1751256 5699792 1751376 5699848 1751416 5699840 +1751256 5699792 1599875 5760125 1760125 5760125 1751376 5699848 +1599875 5760125 1760125 5760125 1751256 5699792 1663944 5646256 +1751256 5699712 1663944 5646256 1751256 5699792 1751376 5699848 +1760125 5760125 1751416 5699840 1751376 5699848 1751256 5699792 +1751256 5699712 1664040 5646192 1663944 5646256 1751256 5699792 +1599875 5760125 1751256 5699792 1663944 5646256 1663880 5646248 +1751632 5699584 1753680 5698984 1760125 5599875 1751504 5699528 +1751632 5699584 1760125 5760125 1753680 5698984 1751504 5699528 +1753680 5698984 1760125 5760125 1760125 5599875 1751504 5699528 +1760125 5599875 1751376 5699584 1751504 5699528 1753680 5698984 +1760125 5760125 1753680 5698984 1751632 5699584 1751632 5699656 +1760125 5760125 1760125 5599875 1753680 5698984 1751632 5699656 +1753680 5698984 1751504 5699528 1751632 5699584 1751632 5699656 +1760125 5760125 1753680 5698984 1751632 5699656 1751504 5699800 +1760125 5760125 1760125 5599875 1753680 5698984 1751504 5699800 +1753680 5698984 1751632 5699584 1751632 5699656 1751504 5699800 +1760125 5760125 1753680 5698984 1751504 5699800 1751416 5699840 +1760125 5760125 1760125 5599875 1753680 5698984 1751416 5699840 +1753680 5698984 1751632 5699656 1751504 5699800 1751416 5699840 +1760125 5760125 1753680 5698984 1751416 5699840 1751376 5699848 +1760125 5760125 1753776 5699120 1753680 5698984 1751416 5699840 +1753680 5698984 1753776 5699120 1760125 5599875 1751504 5699528 +1760125 5760125 1760125 5599875 1753776 5699120 1751416 5699840 +1753776 5699120 1760125 5599875 1753680 5698984 1751416 5699840 +1753680 5698984 1751504 5699800 1751416 5699840 1753776 5699120 +1751416 5699840 1760125 5760125 1753776 5699120 1751504 5699800 +1753680 5698984 1751632 5699656 1751504 5699800 1753776 5699120 +1753680 5698984 1751632 5699584 1751632 5699656 1753776 5699120 +1753680 5698984 1751632 5699656 1753776 5699120 1760125 5599875 +1751504 5699800 1751416 5699840 1753776 5699120 1751632 5699656 +1760125 5760125 1753776 5699120 1751416 5699840 1751376 5699848 +1760125 5760125 1754024 5699640 1753776 5699120 1751416 5699840 +1760125 5760125 1760125 5599875 1754024 5699640 1751416 5699840 +1753776 5699120 1751504 5699800 1751416 5699840 1754024 5699640 +1754024 5699640 1760125 5599875 1753776 5699120 1751504 5699800 +1751416 5699840 1760125 5760125 1754024 5699640 1751504 5699800 +1753776 5699120 1754024 5699640 1760125 5599875 1753680 5698984 +1753776 5699120 1751632 5699656 1751504 5699800 1754024 5699640 +1751504 5699800 1751416 5699840 1754024 5699640 1751632 5699656 +1753776 5699120 1753680 5698984 1751632 5699656 1754024 5699640 +1753776 5699120 1751632 5699656 1754024 5699640 1760125 5599875 +1760125 5760125 1754024 5699640 1751416 5699840 1751376 5699848 +1760125 5760125 1760125 5599875 1754024 5699640 1751376 5699848 +1760125 5760125 1754024 5699640 1751376 5699848 1751256 5699792 +1754024 5699640 1751504 5699800 1751416 5699840 1751376 5699848 +1754024 5699640 1754056 5699880 1760125 5599875 1753776 5699120 +1760125 5760125 1754056 5699880 1754024 5699640 1751376 5699848 +1754024 5699640 1751416 5699840 1751376 5699848 1754056 5699880 +1751376 5699848 1760125 5760125 1754056 5699880 1751416 5699840 +1754056 5699880 1760125 5599875 1754024 5699640 1751416 5699840 +1760125 5760125 1760125 5599875 1754056 5699880 1751376 5699848 +1760125 5760125 1754056 5699880 1751376 5699848 1751256 5699792 +1754024 5699640 1751504 5699800 1751416 5699840 1754056 5699880 +1751416 5699840 1751376 5699848 1754056 5699880 1751504 5699800 +1754024 5699640 1751504 5699800 1754056 5699880 1760125 5599875 +1754024 5699640 1751632 5699656 1751504 5699800 1754056 5699880 +1754024 5699640 1751632 5699656 1754056 5699880 1760125 5599875 +1751504 5699800 1751416 5699840 1754056 5699880 1751632 5699656 +1754024 5699640 1753776 5699120 1751632 5699656 1754056 5699880 +1751376 5699848 1753864 5699912 1754056 5699880 1751416 5699840 +1754056 5699880 1751504 5699800 1751416 5699840 1753864 5699912 +1751416 5699840 1751376 5699848 1753864 5699912 1751504 5699800 +1751376 5699848 1760125 5760125 1753864 5699912 1751416 5699840 +1753864 5699912 1760125 5760125 1754056 5699880 1751504 5699800 +1754056 5699880 1753864 5699912 1760125 5760125 1760125 5599875 +1760125 5760125 1753864 5699912 1751376 5699848 1751256 5699792 +1754056 5699880 1751632 5699656 1751504 5699800 1753864 5699912 +1751504 5699800 1751416 5699840 1753864 5699912 1751632 5699656 +1754056 5699880 1754024 5699640 1751632 5699656 1753864 5699912 +1754056 5699880 1754024 5699640 1753864 5699912 1760125 5760125 +1751632 5699656 1751504 5699800 1753864 5699912 1754024 5699640 +1754024 5699640 1753776 5699120 1751632 5699656 1753864 5699912 +1754024 5699640 1753776 5699120 1753864 5699912 1754056 5699880 +1753776 5699120 1753680 5698984 1751632 5699656 1753864 5699912 +1753680 5698984 1751632 5699584 1751632 5699656 1753864 5699912 +1751632 5699656 1751504 5699800 1753864 5699912 1753680 5698984 +1753776 5699120 1753680 5698984 1753864 5699912 1754024 5699640 +1751632 5699656 1753600 5699872 1753680 5698984 1751632 5699584 +1753680 5698984 1751504 5699528 1751632 5699584 1753600 5699872 +1753680 5698984 1753600 5699872 1753864 5699912 1753776 5699120 +1753600 5699872 1753776 5699120 1753680 5698984 1751632 5699584 +1753600 5699872 1751632 5699656 1753864 5699912 1753776 5699120 +1753864 5699912 1753600 5699872 1751632 5699656 1751504 5699800 +1753864 5699912 1753600 5699872 1751504 5699800 1751416 5699840 +1753864 5699912 1753600 5699872 1751416 5699840 1751376 5699848 +1753600 5699872 1751504 5699800 1751416 5699840 1751376 5699848 +1753864 5699912 1753600 5699872 1751376 5699848 1760125 5760125 +1753864 5699912 1753776 5699120 1753600 5699872 1751376 5699848 +1753600 5699872 1751632 5699656 1751504 5699800 1751416 5699840 +1751632 5699656 1751504 5699800 1753600 5699872 1751632 5699584 +1753864 5699912 1754024 5699640 1753776 5699120 1753600 5699872 +1753864 5699912 1754056 5699880 1754024 5699640 1753600 5699872 +1753776 5699120 1753680 5698984 1753600 5699872 1754024 5699640 +1753864 5699912 1754024 5699640 1753600 5699872 1751376 5699848 +1753600 5699872 1753240 5699848 1751504 5699800 1751416 5699840 +1753600 5699872 1753240 5699848 1751416 5699840 1751376 5699848 +1753600 5699872 1753240 5699848 1751376 5699848 1753864 5699912 +1753240 5699848 1751416 5699840 1751376 5699848 1753864 5699912 +1751376 5699848 1760125 5760125 1753864 5699912 1753240 5699848 +1753600 5699872 1751632 5699656 1753240 5699848 1753864 5699912 +1753240 5699848 1751504 5699800 1751416 5699840 1751376 5699848 +1751632 5699656 1753240 5699848 1753600 5699872 1751632 5699584 +1753600 5699872 1753680 5698984 1751632 5699584 1753240 5699848 +1753680 5698984 1751504 5699528 1751632 5699584 1753240 5699848 +1753240 5699848 1753864 5699912 1753600 5699872 1753680 5698984 +1753600 5699872 1753776 5699120 1753680 5698984 1753240 5699848 +1753680 5698984 1751632 5699584 1753240 5699848 1753776 5699120 +1753600 5699872 1754024 5699640 1753776 5699120 1753240 5699848 +1753600 5699872 1753776 5699120 1753240 5699848 1753864 5699912 +1751632 5699584 1751632 5699656 1753240 5699848 1753680 5698984 +1751632 5699656 1751504 5699800 1753240 5699848 1751632 5699584 +1753240 5699848 1751632 5699656 1751504 5699800 1751416 5699840 +1753680 5698984 1752888 5699728 1753240 5699848 1753776 5699120 +1751632 5699584 1752888 5699728 1753680 5698984 1751504 5699528 +1753240 5699848 1752888 5699728 1751632 5699584 1751632 5699656 +1752888 5699728 1753680 5698984 1751632 5699584 1751632 5699656 +1753240 5699848 1753680 5698984 1752888 5699728 1751632 5699656 +1753240 5699848 1752888 5699728 1751632 5699656 1751504 5699800 +1752888 5699728 1751632 5699584 1751632 5699656 1751504 5699800 +1753240 5699848 1753680 5698984 1752888 5699728 1751504 5699800 +1753240 5699848 1752888 5699728 1751504 5699800 1751416 5699840 +1753240 5699848 1752888 5699728 1751416 5699840 1751376 5699848 +1753240 5699848 1753680 5698984 1752888 5699728 1751416 5699840 +1752888 5699728 1751632 5699656 1751504 5699800 1751416 5699840 +1751632 5699584 1752344 5699616 1753680 5698984 1751504 5699528 +1752344 5699616 1752888 5699728 1753680 5698984 1751504 5699528 +1751632 5699584 1752888 5699728 1752344 5699616 1751504 5699528 +1753680 5698984 1760125 5599875 1751504 5699528 1752344 5699616 +1752888 5699728 1752344 5699616 1751632 5699584 1751632 5699656 +1752344 5699616 1751504 5699528 1751632 5699584 1751632 5699656 +1752888 5699728 1752344 5699616 1751632 5699656 1751504 5699800 +1752344 5699616 1751632 5699584 1751632 5699656 1751504 5699800 +1752888 5699728 1752344 5699616 1751504 5699800 1751416 5699840 +1752888 5699728 1753680 5698984 1752344 5699616 1751504 5699800 +1753680 5698984 1752344 5699616 1752888 5699728 1753240 5699848 +1753680 5698984 1752136 5699488 1752344 5699616 1752888 5699728 +1752344 5699616 1752136 5699488 1751504 5699528 1751632 5699584 +1752344 5699616 1752136 5699488 1751632 5699584 1751632 5699656 +1752136 5699488 1751504 5699528 1751632 5699584 1751632 5699656 +1751504 5699528 1752136 5699488 1753680 5698984 1760125 5599875 +1752136 5699488 1753680 5698984 1751504 5699528 1751632 5699584 +1752344 5699616 1753680 5698984 1752136 5699488 1751632 5699656 +1752344 5699616 1752136 5699488 1751632 5699656 1751504 5699800 +1753680 5698984 1752256 5699496 1752344 5699616 1752888 5699728 +1753680 5698984 1752136 5699488 1752256 5699496 1752888 5699728 +1752256 5699496 1752136 5699488 1752344 5699616 1752888 5699728 +1752136 5699488 1752256 5699496 1753680 5698984 1751504 5699528 +1753680 5698984 1752256 5699496 1752888 5699728 1753240 5699848 +1753680 5698984 1752320 5699432 1752256 5699496 1752888 5699728 +1753680 5698984 1752136 5699488 1752320 5699432 1752888 5699728 +1752320 5699432 1752136 5699488 1752256 5699496 1752888 5699728 +1752256 5699496 1752344 5699616 1752888 5699728 1752320 5699432 +1752256 5699496 1752344 5699616 1752320 5699432 1752136 5699488 +1752888 5699728 1753680 5698984 1752320 5699432 1752344 5699616 +1752256 5699496 1752136 5699488 1752344 5699616 1752320 5699432 +1752136 5699488 1752320 5699432 1753680 5698984 1751504 5699528 +1752320 5699432 1752888 5699728 1753680 5698984 1751504 5699528 +1752136 5699488 1752256 5699496 1752320 5699432 1751504 5699528 +1753680 5698984 1760125 5599875 1751504 5699528 1752320 5699432 +1752136 5699488 1752320 5699432 1751504 5699528 1751632 5699584 +1753680 5698984 1752320 5699432 1752888 5699728 1753240 5699848 +1752320 5699432 1752464 5699464 1753680 5698984 1751504 5699528 +1752888 5699728 1752464 5699464 1752320 5699432 1752344 5699616 +1752464 5699464 1753680 5698984 1752320 5699432 1752344 5699616 +1752888 5699728 1753680 5698984 1752464 5699464 1752344 5699616 +1752320 5699432 1752256 5699496 1752344 5699616 1752464 5699464 +1753680 5698984 1752464 5699464 1752888 5699728 1753240 5699848 +1752320 5699432 1752680 5699376 1753680 5698984 1751504 5699528 +1753680 5698984 1752680 5699376 1752464 5699464 1752888 5699728 +1752680 5699376 1752320 5699432 1752464 5699464 1752888 5699728 +1752464 5699464 1752344 5699616 1752888 5699728 1752680 5699376 +1753680 5698984 1752320 5699432 1752680 5699376 1752888 5699728 +1753680 5698984 1752680 5699376 1752888 5699728 1753240 5699848 +1753680 5698984 1752768 5699224 1752320 5699432 1752680 5699376 +1752320 5699432 1752464 5699464 1752680 5699376 1752768 5699224 +1752680 5699376 1753680 5698984 1752768 5699224 1752464 5699464 +1752320 5699432 1752768 5699224 1751504 5699528 1752136 5699488 +1751504 5699528 1752768 5699224 1753680 5698984 1760125 5599875 +1753680 5698984 1753776 5699120 1760125 5599875 1752768 5699224 +1751504 5699528 1752768 5699224 1760125 5599875 1751376 5699584 +1752768 5699224 1751504 5699528 1752320 5699432 1752464 5699464 +1753680 5698984 1752768 5699224 1752680 5699376 1752888 5699728 +1752768 5699224 1752464 5699464 1752680 5699376 1752888 5699728 +1752680 5699376 1752464 5699464 1752888 5699728 1752768 5699224 +1751504 5699528 1752320 5699432 1752768 5699224 1760125 5599875 +1753680 5698984 1760125 5599875 1752768 5699224 1752888 5699728 +1753680 5698984 1752768 5699224 1752888 5699728 1753240 5699848 +1753680 5698984 1752768 5699224 1753240 5699848 1753776 5699120 +1752768 5699224 1752680 5699376 1752888 5699728 1753240 5699848 +1753680 5698984 1760125 5599875 1752768 5699224 1753240 5699848 +1751504 5699528 1752400 5699056 1760125 5599875 1751376 5699584 +1760125 5599875 1664040 5646192 1751376 5699584 1752400 5699056 +1752400 5699056 1752768 5699224 1760125 5599875 1751376 5699584 +1760125 5599875 1752400 5699056 1752768 5699224 1753680 5698984 +1760125 5599875 1751376 5699584 1752400 5699056 1753680 5698984 +1760125 5599875 1752400 5699056 1753680 5698984 1753776 5699120 +1752768 5699224 1752400 5699056 1751504 5699528 1752320 5699432 +1751504 5699528 1752136 5699488 1752320 5699432 1752400 5699056 +1752136 5699488 1752256 5699496 1752320 5699432 1752400 5699056 +1752768 5699224 1752400 5699056 1752320 5699432 1752464 5699464 +1752768 5699224 1752400 5699056 1752464 5699464 1752680 5699376 +1752400 5699056 1752320 5699432 1752464 5699464 1752680 5699376 +1752320 5699432 1752464 5699464 1752400 5699056 1752136 5699488 +1751504 5699528 1751632 5699584 1752136 5699488 1752400 5699056 +1752400 5699056 1752680 5699376 1752768 5699224 1753680 5698984 +1752768 5699224 1753240 5699848 1753680 5698984 1752400 5699056 +1751504 5699528 1752136 5699488 1752400 5699056 1751376 5699584 +1751376 5699584 1752272 5699088 1760125 5599875 1664040 5646192 +1760125 5599875 1752272 5699088 1752400 5699056 1753680 5698984 +1752272 5699088 1752400 5699056 1760125 5599875 1664040 5646192 +1760125 5599875 1664040 5646064 1664040 5646192 1752272 5699088 +1751376 5699584 1752400 5699056 1752272 5699088 1664040 5646192 +1752400 5699056 1752272 5699088 1751376 5699584 1751504 5699528 +1752272 5699088 1664040 5646192 1751376 5699584 1751504 5699528 +1752400 5699056 1760125 5599875 1752272 5699088 1751504 5699528 +1752400 5699056 1752272 5699088 1751504 5699528 1752136 5699488 +1752400 5699056 1752272 5699088 1752136 5699488 1752320 5699432 +1752136 5699488 1752256 5699496 1752320 5699432 1752272 5699088 +1752272 5699088 1751376 5699584 1751504 5699528 1752136 5699488 +1752400 5699056 1752272 5699088 1752320 5699432 1752464 5699464 +1751504 5699528 1751632 5699584 1752136 5699488 1752272 5699088 +1751632 5699584 1751632 5699656 1752136 5699488 1752272 5699088 +1751504 5699528 1751632 5699584 1752272 5699088 1751376 5699584 +1752400 5699056 1760125 5599875 1752272 5699088 1752320 5699432 +1752272 5699088 1751632 5699584 1752136 5699488 1752320 5699432 +1751376 5699584 1752272 5699088 1664040 5646192 1751256 5699712 +1664040 5646192 1752080 5699016 1752272 5699088 1760125 5599875 +1752272 5699088 1752400 5699056 1760125 5599875 1752080 5699016 +1760125 5599875 1664040 5646192 1752080 5699016 1752400 5699056 +1752400 5699056 1753680 5698984 1760125 5599875 1752080 5699016 +1760125 5599875 1664040 5646192 1752080 5699016 1753680 5698984 +1752400 5699056 1753680 5698984 1752080 5699016 1752272 5699088 +1664040 5646192 1751376 5699584 1752080 5699016 1760125 5599875 +1664040 5646192 1752080 5699016 1760125 5599875 1664040 5646064 +1753680 5698984 1753776 5699120 1760125 5599875 1752080 5699016 +1752272 5699088 1752080 5699016 1751376 5699584 1751504 5699528 +1752272 5699088 1752080 5699016 1751504 5699528 1751632 5699584 +1752272 5699088 1752080 5699016 1751632 5699584 1752136 5699488 +1751632 5699584 1751632 5699656 1752136 5699488 1752080 5699016 +1752080 5699016 1751376 5699584 1751504 5699528 1751632 5699584 +1752080 5699016 1751504 5699528 1751632 5699584 1752136 5699488 +1752400 5699056 1752768 5699224 1753680 5698984 1752080 5699016 +1752272 5699088 1752080 5699016 1752136 5699488 1752320 5699432 +1752080 5699016 1752136 5699488 1752272 5699088 1752400 5699056 +1752080 5699016 1664040 5646192 1751376 5699584 1751504 5699528 +1751376 5699584 1752080 5699016 1664040 5646192 1751256 5699712 +1760125 5599875 1752032 5698952 1752080 5699016 1753680 5698984 +1752080 5699016 1752400 5699056 1753680 5698984 1752032 5698952 +1753680 5698984 1760125 5599875 1752032 5698952 1752400 5699056 +1752080 5699016 1752272 5699088 1752400 5699056 1752032 5698952 +1752400 5699056 1753680 5698984 1752032 5698952 1752272 5699088 +1752080 5699016 1752032 5698952 1664040 5646192 1751376 5699584 +1752032 5698952 1760125 5599875 1664040 5646192 1751376 5699584 +1760125 5599875 1664040 5646192 1752032 5698952 1753680 5698984 +1664040 5646192 1752032 5698952 1760125 5599875 1664040 5646064 +1760125 5599875 1752032 5698952 1753680 5698984 1753776 5699120 +1752400 5699056 1752768 5699224 1753680 5698984 1752032 5698952 +1752032 5698952 1751376 5699584 1752080 5699016 1752272 5699088 +1752080 5699016 1752032 5698952 1751376 5699584 1751504 5699528 +1752032 5698952 1664040 5646192 1751376 5699584 1751504 5699528 +1752080 5699016 1752032 5698952 1751504 5699528 1751632 5699584 +1752080 5699016 1752032 5698952 1751632 5699584 1752136 5699488 +1752080 5699016 1752272 5699088 1752032 5698952 1751632 5699584 +1752032 5698952 1751376 5699584 1751504 5699528 1751632 5699584 +1664040 5646192 1751256 5699712 1751376 5699584 1752032 5698952 +1752032 5698952 1751944 5698896 1664040 5646192 1751376 5699584 +1752032 5698952 1751944 5698896 1751376 5699584 1751504 5699528 +1751944 5698896 1664040 5646192 1751376 5699584 1751504 5699528 +1752032 5698952 1760125 5599875 1751944 5698896 1751504 5699528 +1760125 5599875 1751944 5698896 1752032 5698952 1753680 5698984 +1752032 5698952 1752400 5699056 1753680 5698984 1751944 5698896 +1752032 5698952 1752272 5699088 1752400 5699056 1751944 5698896 +1751944 5698896 1751504 5699528 1752032 5698952 1752400 5699056 +1753680 5698984 1760125 5599875 1751944 5698896 1752400 5699056 +1760125 5599875 1664040 5646192 1751944 5698896 1753680 5698984 +1664040 5646192 1751944 5698896 1760125 5599875 1664040 5646064 +1751944 5698896 1760125 5599875 1664040 5646192 1751376 5699584 +1760125 5599875 1751944 5698896 1753680 5698984 1753776 5699120 +1752400 5699056 1752768 5699224 1753680 5698984 1751944 5698896 +1752032 5698952 1751944 5698896 1751504 5699528 1751632 5699584 +1751944 5698896 1751376 5699584 1751504 5699528 1751632 5699584 +1752032 5698952 1752400 5699056 1751944 5698896 1751632 5699584 +1752032 5698952 1751944 5698896 1751632 5699584 1752080 5699016 +1752032 5698952 1752400 5699056 1751944 5698896 1752080 5699016 +1751632 5699584 1752136 5699488 1752080 5699016 1751944 5698896 +1751944 5698896 1751504 5699528 1751632 5699584 1752080 5699016 +1664040 5646192 1751256 5699712 1751376 5699584 1751944 5698896 +1751376 5699584 1751504 5699528 1751944 5698896 1751256 5699712 +1664040 5646192 1663944 5646256 1751256 5699712 1751944 5698896 +1664040 5646192 1751256 5699712 1751944 5698896 1760125 5599875 +1753680 5698984 1752144 5698864 1751944 5698896 1752400 5699056 +1751944 5698896 1752032 5698952 1752400 5699056 1752144 5698864 +1752032 5698952 1752272 5699088 1752400 5699056 1752144 5698864 +1752032 5698952 1752272 5699088 1752144 5698864 1751944 5698896 +1752032 5698952 1752080 5699016 1752272 5699088 1752144 5698864 +1752032 5698952 1752080 5699016 1752144 5698864 1751944 5698896 +1752272 5699088 1752400 5699056 1752144 5698864 1752080 5699016 +1752400 5699056 1753680 5698984 1752144 5698864 1752272 5699088 +1752144 5698864 1760125 5599875 1751944 5698896 1752032 5698952 +1751944 5698896 1752144 5698864 1760125 5599875 1664040 5646192 +1753680 5698984 1760125 5599875 1752144 5698864 1752400 5699056 +1760125 5599875 1752144 5698864 1753680 5698984 1753776 5699120 +1753680 5698984 1752144 5698864 1752400 5699056 1752768 5699224 +1753680 5698984 1752504 5698880 1752144 5698864 1752400 5699056 +1752144 5698864 1752272 5699088 1752400 5699056 1752504 5698880 +1752504 5698880 1760125 5599875 1752144 5698864 1752400 5699056 +1752144 5698864 1752504 5698880 1760125 5599875 1751944 5698896 +1760125 5599875 1752504 5698880 1753680 5698984 1753776 5699120 +1753680 5698984 1752504 5698880 1752400 5699056 1752768 5699224 +1752504 5698880 1752144 5698864 1752400 5699056 1752768 5699224 +1753680 5698984 1760125 5599875 1752504 5698880 1752768 5699224 +1753680 5698984 1752504 5698880 1752768 5699224 1753240 5699848 +1752504 5698880 1752592 5698848 1760125 5599875 1752144 5698864 +1752504 5698880 1753680 5698984 1752592 5698848 1752144 5698864 +1760125 5599875 1751944 5698896 1752144 5698864 1752592 5698848 +1760125 5599875 1752592 5698848 1753680 5698984 1753776 5699120 +1753680 5698984 1752592 5698848 1752504 5698880 1752768 5699224 +1752592 5698848 1752144 5698864 1752504 5698880 1752768 5699224 +1752504 5698880 1752400 5699056 1752768 5699224 1752592 5698848 +1752592 5698848 1753680 5698984 1760125 5599875 1752144 5698864 +1753680 5698984 1760125 5599875 1752592 5698848 1752768 5699224 +1753680 5698984 1752592 5698848 1752768 5699224 1753240 5699848 +1760125 5599875 1752856 5698864 1753680 5698984 1753776 5699120 +1752592 5698848 1752856 5698864 1760125 5599875 1752144 5698864 +1753680 5698984 1752856 5698864 1752592 5698848 1752768 5699224 +1753680 5698984 1760125 5599875 1752856 5698864 1752768 5699224 +1752592 5698848 1752504 5698880 1752768 5699224 1752856 5698864 +1752856 5698864 1760125 5599875 1752592 5698848 1752768 5699224 +1753680 5698984 1752856 5698864 1752768 5699224 1753240 5699848 +1752856 5698864 1752920 5698728 1760125 5599875 1752592 5698848 +1752856 5698864 1753680 5698984 1752920 5698728 1752592 5698848 +1753680 5698984 1752920 5698728 1752856 5698864 1752768 5699224 +1760125 5599875 1752920 5698728 1753680 5698984 1753776 5699120 +1752920 5698728 1753680 5698984 1760125 5599875 1752592 5698848 +1760125 5599875 1752144 5698864 1752592 5698848 1752920 5698728 +1752144 5698864 1752504 5698880 1752592 5698848 1752920 5698728 +1752592 5698848 1752856 5698864 1752920 5698728 1752144 5698864 +1760125 5599875 1751944 5698896 1752144 5698864 1752920 5698728 +1760125 5599875 1664040 5646192 1751944 5698896 1752920 5698728 +1760125 5599875 1751944 5698896 1752920 5698728 1753680 5698984 +1752144 5698864 1752592 5698848 1752920 5698728 1751944 5698896 +1751944 5698896 1752792 5698680 1760125 5599875 1664040 5646192 +1760125 5599875 1752792 5698680 1752920 5698728 1753680 5698984 +1752792 5698680 1751944 5698896 1752920 5698728 1753680 5698984 +1760125 5599875 1752792 5698680 1753680 5698984 1753776 5699120 +1752920 5698728 1752792 5698680 1751944 5698896 1752144 5698864 +1752920 5698728 1753680 5698984 1752792 5698680 1752144 5698864 +1752792 5698680 1760125 5599875 1751944 5698896 1752144 5698864 +1752920 5698728 1752856 5698864 1753680 5698984 1752792 5698680 +1760125 5599875 1751944 5698896 1752792 5698680 1753680 5698984 +1752920 5698728 1752792 5698680 1752144 5698864 1752592 5698848 +1752144 5698864 1752504 5698880 1752592 5698848 1752792 5698680 +1752920 5698728 1752792 5698680 1752592 5698848 1752856 5698864 +1752920 5698728 1753680 5698984 1752792 5698680 1752856 5698864 +1752792 5698680 1751944 5698896 1752144 5698864 1752504 5698880 +1752592 5698848 1752856 5698864 1752792 5698680 1752504 5698880 +1751944 5698896 1752720 5698672 1760125 5599875 1664040 5646192 +1752792 5698680 1752720 5698672 1751944 5698896 1752144 5698864 +1752720 5698672 1760125 5599875 1751944 5698896 1752144 5698864 +1752792 5698680 1752720 5698672 1752144 5698864 1752504 5698880 +1752792 5698680 1752720 5698672 1752504 5698880 1752592 5698848 +1752720 5698672 1751944 5698896 1752144 5698864 1752504 5698880 +1752720 5698672 1752144 5698864 1752504 5698880 1752592 5698848 +1752792 5698680 1760125 5599875 1752720 5698672 1752592 5698848 +1760125 5599875 1752720 5698672 1752792 5698680 1753680 5698984 +1752792 5698680 1752720 5698672 1752592 5698848 1752856 5698864 +1752720 5698672 1752504 5698880 1752592 5698848 1752856 5698864 +1752792 5698680 1752720 5698672 1752856 5698864 1752920 5698728 +1752792 5698680 1760125 5599875 1752720 5698672 1752856 5698864 +1751944 5698896 1752472 5698568 1760125 5599875 1664040 5646192 +1760125 5599875 1664040 5646064 1664040 5646192 1752472 5698568 +1752720 5698672 1752472 5698568 1751944 5698896 1752144 5698864 +1760125 5599875 1752472 5698568 1752720 5698672 1752792 5698680 +1752720 5698672 1752792 5698680 1752472 5698568 1752144 5698864 +1752720 5698672 1752472 5698568 1752144 5698864 1752504 5698880 +1752472 5698568 1751944 5698896 1752144 5698864 1752504 5698880 +1752720 5698672 1752792 5698680 1752472 5698568 1752504 5698880 +1751944 5698896 1752472 5698568 1664040 5646192 1751256 5699712 +1752720 5698672 1752472 5698568 1752504 5698880 1752592 5698848 +1752720 5698672 1752472 5698568 1752592 5698848 1752856 5698864 +1752720 5698672 1752792 5698680 1752472 5698568 1752592 5698848 +1752472 5698568 1752144 5698864 1752504 5698880 1752592 5698848 +1760125 5599875 1752472 5698568 1752792 5698680 1753680 5698984 +1751944 5698896 1752144 5698864 1752472 5698568 1664040 5646192 +1752472 5698568 1752792 5698680 1760125 5599875 1664040 5646192 +1664040 5646192 1752408 5698432 1760125 5599875 1664040 5646064 +1752472 5698568 1752408 5698432 1664040 5646192 1751944 5698896 +1664040 5646192 1751256 5699712 1751944 5698896 1752408 5698432 +1752472 5698568 1752408 5698432 1751944 5698896 1752144 5698864 +1752472 5698568 1752408 5698432 1752144 5698864 1752504 5698880 +1752408 5698432 1664040 5646192 1751944 5698896 1752144 5698864 +1760125 5599875 1752408 5698432 1752472 5698568 1752792 5698680 +1752472 5698568 1752720 5698672 1752792 5698680 1752408 5698432 +1760125 5599875 1664040 5646192 1752408 5698432 1752792 5698680 +1760125 5599875 1752408 5698432 1752792 5698680 1753680 5698984 +1760125 5599875 1664040 5646192 1752408 5698432 1753680 5698984 +1760125 5599875 1752408 5698432 1753680 5698984 1753776 5699120 +1752792 5698680 1752920 5698728 1753680 5698984 1752408 5698432 +1752920 5698728 1752856 5698864 1753680 5698984 1752408 5698432 +1753680 5698984 1760125 5599875 1752408 5698432 1752920 5698728 +1752792 5698680 1752920 5698728 1752408 5698432 1752720 5698672 +1752472 5698568 1752720 5698672 1752408 5698432 1752144 5698864 +1752408 5698432 1760125 5599875 1664040 5646192 1751944 5698896 +1752408 5698432 1752504 5698368 1760125 5599875 1664040 5646192 +1760125 5599875 1664040 5646064 1664040 5646192 1752504 5698368 +1752408 5698432 1753680 5698984 1752504 5698368 1664040 5646192 +1760125 5599875 1752504 5698368 1753680 5698984 1753776 5699120 +1753680 5698984 1752504 5698368 1752408 5698432 1752920 5698728 +1752504 5698368 1664040 5646192 1752408 5698432 1752920 5698728 +1753680 5698984 1760125 5599875 1752504 5698368 1752920 5698728 +1752408 5698432 1752792 5698680 1752920 5698728 1752504 5698368 +1752408 5698432 1752792 5698680 1752504 5698368 1664040 5646192 +1753680 5698984 1752504 5698368 1752920 5698728 1752856 5698864 +1752920 5698728 1753680 5698984 1752504 5698368 1752792 5698680 +1752408 5698432 1752720 5698672 1752792 5698680 1752504 5698368 +1752408 5698432 1752472 5698568 1752720 5698672 1752504 5698368 +1752408 5698432 1752472 5698568 1752504 5698368 1664040 5646192 +1752792 5698680 1752920 5698728 1752504 5698368 1752720 5698672 +1752720 5698672 1752792 5698680 1752504 5698368 1752472 5698568 +1752408 5698432 1752504 5698368 1664040 5646192 1751944 5698896 +1752504 5698368 1753680 5698984 1760125 5599875 1664040 5646192 +1753680 5698984 1752600 5698344 1752504 5698368 1752920 5698728 +1753680 5698984 1760125 5599875 1752600 5698344 1752920 5698728 +1760125 5599875 1752600 5698344 1753680 5698984 1753776 5699120 +1753680 5698984 1752600 5698344 1752920 5698728 1752856 5698864 +1752504 5698368 1752792 5698680 1752920 5698728 1752600 5698344 +1752920 5698728 1753680 5698984 1752600 5698344 1752792 5698680 +1752504 5698368 1752720 5698672 1752792 5698680 1752600 5698344 +1752792 5698680 1752920 5698728 1752600 5698344 1752720 5698672 +1752504 5698368 1752472 5698568 1752720 5698672 1752600 5698344 +1752504 5698368 1752408 5698432 1752472 5698568 1752600 5698344 +1752720 5698672 1752792 5698680 1752600 5698344 1752472 5698568 +1752504 5698368 1752600 5698344 1760125 5599875 1664040 5646192 +1752600 5698344 1760125 5599875 1752504 5698368 1752472 5698568 +1753680 5698984 1752784 5698344 1752600 5698344 1752920 5698728 +1752600 5698344 1752792 5698680 1752920 5698728 1752784 5698344 +1752920 5698728 1753680 5698984 1752784 5698344 1752792 5698680 +1753680 5698984 1760125 5599875 1752784 5698344 1752920 5698728 +1760125 5599875 1752784 5698344 1753680 5698984 1753776 5699120 +1753680 5698984 1752784 5698344 1752920 5698728 1752856 5698864 +1752600 5698344 1752720 5698672 1752792 5698680 1752784 5698344 +1752792 5698680 1752920 5698728 1752784 5698344 1752720 5698672 +1752600 5698344 1752472 5698568 1752720 5698672 1752784 5698344 +1752600 5698344 1752784 5698344 1760125 5599875 1752504 5698368 +1752784 5698344 1760125 5599875 1752600 5698344 1752720 5698672 +1752784 5698344 1753072 5698416 1760125 5599875 1752600 5698344 +1753680 5698984 1753072 5698416 1752784 5698344 1752920 5698728 +1752784 5698344 1752792 5698680 1752920 5698728 1753072 5698416 +1752784 5698344 1752720 5698672 1752792 5698680 1753072 5698416 +1753072 5698416 1760125 5599875 1752784 5698344 1752792 5698680 +1760125 5599875 1753072 5698416 1753680 5698984 1753776 5699120 +1753680 5698984 1753072 5698416 1752920 5698728 1752856 5698864 +1752920 5698728 1753680 5698984 1753072 5698416 1752792 5698680 +1753680 5698984 1760125 5599875 1753072 5698416 1752920 5698728 +1760125 5599875 1753224 5698480 1753680 5698984 1753776 5699120 +1753072 5698416 1753224 5698480 1760125 5599875 1752784 5698344 +1753680 5698984 1753224 5698480 1753072 5698416 1752920 5698728 +1753680 5698984 1760125 5599875 1753224 5698480 1752920 5698728 +1753680 5698984 1753224 5698480 1752920 5698728 1752856 5698864 +1753072 5698416 1752792 5698680 1752920 5698728 1753224 5698480 +1753224 5698480 1760125 5599875 1753072 5698416 1752920 5698728 +1753680 5698984 1753352 5698584 1753224 5698480 1752920 5698728 +1753680 5698984 1760125 5599875 1753352 5698584 1752920 5698728 +1753352 5698584 1760125 5599875 1753224 5698480 1752920 5698728 +1760125 5599875 1753352 5698584 1753680 5698984 1753776 5699120 +1753680 5698984 1753352 5698584 1752920 5698728 1752856 5698864 +1753680 5698984 1760125 5599875 1753352 5698584 1752856 5698864 +1753680 5698984 1753352 5698584 1752856 5698864 1752768 5699224 +1753352 5698584 1753224 5698480 1752920 5698728 1752856 5698864 +1753224 5698480 1753072 5698416 1752920 5698728 1753352 5698584 +1753224 5698480 1753352 5698584 1760125 5599875 1753072 5698416 +1664040 5646192 1743800 5687248 1760125 5599875 1664040 5646064 +1664040 5646192 1752504 5698368 1743800 5687248 1664040 5646064 +1752504 5698368 1743800 5687248 1664040 5646192 1752408 5698432 +1752504 5698368 1760125 5599875 1743800 5687248 1752408 5698432 +1743800 5687248 1664040 5646064 1664040 5646192 1752408 5698432 +1664040 5646192 1751944 5698896 1752408 5698432 1743800 5687248 +1664040 5646192 1751944 5698896 1743800 5687248 1664040 5646064 +1752408 5698432 1752504 5698368 1743800 5687248 1751944 5698896 +1664040 5646192 1751256 5699712 1751944 5698896 1743800 5687248 +1664040 5646192 1663944 5646256 1751256 5699712 1743800 5687248 +1664040 5646192 1663944 5646256 1743800 5687248 1664040 5646064 +1751944 5698896 1752144 5698864 1752408 5698432 1743800 5687248 +1663944 5646256 1751256 5699792 1751256 5699712 1743800 5687248 +1663944 5646256 1599875 5760125 1751256 5699792 1743800 5687248 +1663944 5646256 1599875 5760125 1743800 5687248 1664040 5646192 +1599875 5760125 1760125 5760125 1751256 5699792 1743800 5687248 +1751256 5699792 1751256 5699712 1743800 5687248 1599875 5760125 +1663944 5646256 1663880 5646248 1599875 5760125 1743800 5687248 +1760125 5599875 1743800 5687248 1752504 5698368 1752600 5698344 +1743800 5687248 1752408 5698432 1752504 5698368 1752600 5698344 +1743800 5687248 1752600 5698344 1760125 5599875 1664040 5646064 +1760125 5599875 1743800 5687248 1752600 5698344 1752784 5698344 +1760125 5599875 1743800 5687248 1752784 5698344 1753072 5698416 +1760125 5599875 1743800 5687248 1753072 5698416 1753224 5698480 +1743800 5687248 1752784 5698344 1753072 5698416 1753224 5698480 +1760125 5599875 1743800 5687248 1753224 5698480 1753352 5698584 +1760125 5599875 1743800 5687248 1753352 5698584 1753680 5698984 +1743800 5687248 1753072 5698416 1753224 5698480 1753352 5698584 +1743800 5687248 1752504 5698368 1752600 5698344 1752784 5698344 +1760125 5599875 1664040 5646064 1743800 5687248 1753352 5698584 +1743800 5687248 1752600 5698344 1752784 5698344 1753072 5698416 +1760125 5599875 1663944 5645952 1664040 5646064 1743800 5687248 +1751256 5699712 1751376 5699584 1751944 5698896 1743800 5687248 +1751376 5699584 1751504 5699528 1751944 5698896 1743800 5687248 +1751944 5698896 1752408 5698432 1743800 5687248 1751376 5699584 +1751256 5699712 1751376 5699584 1743800 5687248 1751256 5699792 +1760125 5599875 1743888 5687192 1753352 5698584 1753680 5698984 +1743800 5687248 1743888 5687192 1760125 5599875 1664040 5646064 +1743800 5687248 1743888 5687192 1664040 5646064 1664040 5646192 +1743888 5687192 1753352 5698584 1760125 5599875 1664040 5646064 +1760125 5599875 1663944 5645952 1664040 5646064 1743888 5687192 +1753352 5698584 1743888 5687192 1743800 5687248 1753224 5698480 +1743800 5687248 1753072 5698416 1753224 5698480 1743888 5687192 +1743800 5687248 1752784 5698344 1753072 5698416 1743888 5687192 +1753072 5698416 1753224 5698480 1743888 5687192 1752784 5698344 +1753352 5698584 1760125 5599875 1743888 5687192 1753224 5698480 +1743800 5687248 1752600 5698344 1752784 5698344 1743888 5687192 +1752784 5698344 1753072 5698416 1743888 5687192 1752600 5698344 +1743800 5687248 1752504 5698368 1752600 5698344 1743888 5687192 +1743800 5687248 1752408 5698432 1752504 5698368 1743888 5687192 +1743800 5687248 1751944 5698896 1752408 5698432 1743888 5687192 +1752504 5698368 1752600 5698344 1743888 5687192 1752408 5698432 +1752600 5698344 1752784 5698344 1743888 5687192 1752504 5698368 +1753224 5698480 1753352 5698584 1743888 5687192 1753072 5698416 +1743800 5687248 1752408 5698432 1743888 5687192 1664040 5646064 +1760125 5599875 1743952 5687200 1753352 5698584 1753680 5698984 +1743888 5687192 1743952 5687200 1760125 5599875 1664040 5646064 +1753352 5698584 1743952 5687200 1743888 5687192 1753224 5698480 +1743952 5687200 1760125 5599875 1743888 5687192 1753224 5698480 +1753352 5698584 1760125 5599875 1743952 5687200 1753224 5698480 +1743888 5687192 1753072 5698416 1753224 5698480 1743952 5687200 +1743888 5687192 1752784 5698344 1753072 5698416 1743952 5687200 +1743888 5687192 1752600 5698344 1752784 5698344 1743952 5687200 +1752784 5698344 1753072 5698416 1743952 5687200 1752600 5698344 +1743888 5687192 1752600 5698344 1743952 5687200 1760125 5599875 +1753224 5698480 1753352 5698584 1743952 5687200 1753072 5698416 +1743888 5687192 1752504 5698368 1752600 5698344 1743952 5687200 +1752600 5698344 1752784 5698344 1743952 5687200 1752504 5698368 +1743888 5687192 1752408 5698432 1752504 5698368 1743952 5687200 +1743888 5687192 1743800 5687248 1752408 5698432 1743952 5687200 +1743800 5687248 1751944 5698896 1752408 5698432 1743952 5687200 +1743800 5687248 1751944 5698896 1743952 5687200 1743888 5687192 +1751944 5698896 1752144 5698864 1752408 5698432 1743952 5687200 +1752408 5698432 1752504 5698368 1743952 5687200 1751944 5698896 +1743888 5687192 1743800 5687248 1743952 5687200 1760125 5599875 +1752504 5698368 1752600 5698344 1743952 5687200 1752408 5698432 +1743800 5687248 1751376 5699584 1751944 5698896 1743952 5687200 +1753072 5698416 1753224 5698480 1743952 5687200 1752784 5698344 +1743952 5687200 1744016 5687240 1760125 5599875 1743888 5687192 +1760125 5599875 1744016 5687240 1753352 5698584 1753680 5698984 +1753352 5698584 1744016 5687240 1743952 5687200 1753224 5698480 +1744016 5687240 1760125 5599875 1743952 5687200 1753224 5698480 +1753352 5698584 1760125 5599875 1744016 5687240 1753224 5698480 +1743952 5687200 1753072 5698416 1753224 5698480 1744016 5687240 +1743952 5687200 1753072 5698416 1744016 5687240 1760125 5599875 +1753224 5698480 1753352 5698584 1744016 5687240 1753072 5698416 +1743952 5687200 1752784 5698344 1753072 5698416 1744016 5687240 +1743952 5687200 1752784 5698344 1744016 5687240 1760125 5599875 +1743952 5687200 1752600 5698344 1752784 5698344 1744016 5687240 +1743952 5687200 1752600 5698344 1744016 5687240 1760125 5599875 +1743952 5687200 1752504 5698368 1752600 5698344 1744016 5687240 +1743952 5687200 1752504 5698368 1744016 5687240 1760125 5599875 +1752600 5698344 1752784 5698344 1744016 5687240 1752504 5698368 +1753072 5698416 1753224 5698480 1744016 5687240 1752784 5698344 +1743952 5687200 1752408 5698432 1752504 5698368 1744016 5687240 +1743952 5687200 1752408 5698432 1744016 5687240 1760125 5599875 +1752504 5698368 1752600 5698344 1744016 5687240 1752408 5698432 +1743952 5687200 1751944 5698896 1752408 5698432 1744016 5687240 +1743952 5687200 1751944 5698896 1744016 5687240 1760125 5599875 +1743952 5687200 1743800 5687248 1751944 5698896 1744016 5687240 +1743952 5687200 1743800 5687248 1744016 5687240 1760125 5599875 +1743952 5687200 1743888 5687192 1743800 5687248 1744016 5687240 +1751944 5698896 1752144 5698864 1752408 5698432 1744016 5687240 +1751944 5698896 1752408 5698432 1744016 5687240 1743800 5687248 +1752408 5698432 1752504 5698368 1744016 5687240 1751944 5698896 +1743800 5687248 1751376 5699584 1751944 5698896 1744016 5687240 +1751376 5699584 1751504 5699528 1751944 5698896 1744016 5687240 +1743800 5687248 1751376 5699584 1744016 5687240 1743952 5687200 +1751944 5698896 1752408 5698432 1744016 5687240 1751376 5699584 +1743800 5687248 1751256 5699712 1751376 5699584 1744016 5687240 +1743800 5687248 1751256 5699712 1744016 5687240 1743952 5687200 +1751376 5699584 1751944 5698896 1744016 5687240 1751256 5699712 +1743800 5687248 1751256 5699792 1751256 5699712 1744016 5687240 +1752784 5698344 1753072 5698416 1744016 5687240 1752600 5698344 +1752600 5698344 1744104 5687352 1744016 5687240 1752504 5698368 +1744016 5687240 1752408 5698432 1752504 5698368 1744104 5687352 +1752504 5698368 1752600 5698344 1744104 5687352 1752408 5698432 +1744104 5687352 1752784 5698344 1744016 5687240 1752408 5698432 +1744016 5687240 1751944 5698896 1752408 5698432 1744104 5687352 +1752408 5698432 1752504 5698368 1744104 5687352 1751944 5698896 +1751944 5698896 1752144 5698864 1752408 5698432 1744104 5687352 +1744016 5687240 1751376 5699584 1751944 5698896 1744104 5687352 +1751376 5699584 1751504 5699528 1751944 5698896 1744104 5687352 +1744016 5687240 1751376 5699584 1744104 5687352 1752784 5698344 +1751944 5698896 1752408 5698432 1744104 5687352 1751376 5699584 +1752600 5698344 1752784 5698344 1744104 5687352 1752504 5698368 +1744016 5687240 1751256 5699712 1751376 5699584 1744104 5687352 +1751376 5699584 1751944 5698896 1744104 5687352 1751256 5699712 +1744016 5687240 1751256 5699712 1744104 5687352 1752784 5698344 +1744016 5687240 1743800 5687248 1751256 5699712 1744104 5687352 +1744016 5687240 1743952 5687200 1743800 5687248 1744104 5687352 +1744016 5687240 1743800 5687248 1744104 5687352 1752784 5698344 +1751256 5699712 1751376 5699584 1744104 5687352 1743800 5687248 +1743800 5687248 1751256 5699792 1751256 5699712 1744104 5687352 +1744016 5687240 1744104 5687352 1752784 5698344 1753072 5698416 +1744016 5687240 1743800 5687248 1744104 5687352 1753072 5698416 +1744016 5687240 1744104 5687352 1753072 5698416 1753224 5698480 +1744016 5687240 1743800 5687248 1744104 5687352 1753224 5698480 +1744016 5687240 1744104 5687352 1753224 5698480 1753352 5698584 +1744016 5687240 1744104 5687352 1753352 5698584 1760125 5599875 +1753352 5698584 1753680 5698984 1760125 5599875 1744104 5687352 +1744016 5687240 1743800 5687248 1744104 5687352 1760125 5599875 +1744104 5687352 1753072 5698416 1753224 5698480 1753352 5698584 +1744104 5687352 1753224 5698480 1753352 5698584 1760125 5599875 +1744016 5687240 1744104 5687352 1760125 5599875 1743952 5687200 +1744104 5687352 1752600 5698344 1752784 5698344 1753072 5698416 +1744104 5687352 1752784 5698344 1753072 5698416 1753224 5698480 +1744104 5687352 1744224 5687528 1752408 5698432 1752504 5698368 +1752408 5698432 1744224 5687528 1751944 5698896 1752144 5698864 +1744104 5687352 1744224 5687528 1752504 5698368 1752600 5698344 +1744224 5687528 1752408 5698432 1752504 5698368 1752600 5698344 +1744224 5687528 1751944 5698896 1752408 5698432 1752504 5698368 +1751944 5698896 1744224 5687528 1744104 5687352 1751376 5699584 +1751944 5698896 1744224 5687528 1751376 5699584 1751504 5699528 +1744104 5687352 1751256 5699712 1751376 5699584 1744224 5687528 +1751376 5699584 1751944 5698896 1744224 5687528 1751256 5699712 +1751944 5698896 1752408 5698432 1744224 5687528 1751376 5699584 +1744104 5687352 1751256 5699712 1744224 5687528 1752600 5698344 +1744104 5687352 1744224 5687528 1752600 5698344 1752784 5698344 +1744224 5687528 1752504 5698368 1752600 5698344 1752784 5698344 +1744104 5687352 1744224 5687528 1752784 5698344 1753072 5698416 +1744224 5687528 1752600 5698344 1752784 5698344 1753072 5698416 +1744104 5687352 1751256 5699712 1744224 5687528 1753072 5698416 +1744104 5687352 1743800 5687248 1751256 5699712 1744224 5687528 +1751256 5699712 1751376 5699584 1744224 5687528 1743800 5687248 +1744104 5687352 1744016 5687240 1743800 5687248 1744224 5687528 +1744104 5687352 1743800 5687248 1744224 5687528 1753072 5698416 +1743800 5687248 1751256 5699792 1751256 5699712 1744224 5687528 +1743800 5687248 1599875 5760125 1751256 5699792 1744224 5687528 +1751256 5699712 1751376 5699584 1744224 5687528 1751256 5699792 +1743800 5687248 1751256 5699792 1744224 5687528 1744104 5687352 +1744104 5687352 1744224 5687528 1753072 5698416 1753224 5698480 +1744104 5687352 1744224 5687528 1753224 5698480 1753352 5698584 +1744104 5687352 1744224 5687528 1753352 5698584 1760125 5599875 +1753352 5698584 1753680 5698984 1760125 5599875 1744224 5687528 +1744104 5687352 1744224 5687528 1760125 5599875 1744016 5687240 +1744224 5687528 1753224 5698480 1753352 5698584 1760125 5599875 +1744224 5687528 1752784 5698344 1753072 5698416 1753224 5698480 +1744104 5687352 1743800 5687248 1744224 5687528 1760125 5599875 +1744224 5687528 1753072 5698416 1753224 5698480 1753352 5698584 +1751256 5699792 1744224 5687568 1743800 5687248 1599875 5760125 +1743800 5687248 1744224 5687568 1744224 5687528 1744104 5687352 +1744224 5687568 1751256 5699792 1744224 5687528 1744104 5687352 +1743800 5687248 1751256 5699792 1744224 5687568 1744104 5687352 +1743800 5687248 1744224 5687568 1744104 5687352 1744016 5687240 +1744224 5687528 1744224 5687568 1751256 5699792 1751256 5699712 +1744224 5687528 1744104 5687352 1744224 5687568 1751256 5699712 +1744224 5687568 1743800 5687248 1751256 5699792 1751256 5699712 +1744224 5687528 1744224 5687568 1751256 5699712 1751376 5699584 +1744224 5687528 1744104 5687352 1744224 5687568 1751376 5699584 +1744224 5687528 1744224 5687568 1751376 5699584 1751944 5698896 +1751376 5699584 1751504 5699528 1751944 5698896 1744224 5687568 +1744224 5687528 1744104 5687352 1744224 5687568 1751944 5698896 +1744224 5687568 1751256 5699712 1751376 5699584 1751944 5698896 +1744224 5687528 1744224 5687568 1751944 5698896 1752408 5698432 +1744224 5687528 1744104 5687352 1744224 5687568 1752408 5698432 +1751944 5698896 1752144 5698864 1752408 5698432 1744224 5687568 +1744224 5687528 1744224 5687568 1752408 5698432 1752504 5698368 +1744224 5687528 1744104 5687352 1744224 5687568 1752504 5698368 +1744224 5687528 1744224 5687568 1752504 5698368 1752600 5698344 +1744224 5687528 1744104 5687352 1744224 5687568 1752600 5698344 +1744224 5687528 1744224 5687568 1752600 5698344 1752784 5698344 +1744224 5687528 1744224 5687568 1752784 5698344 1753072 5698416 +1744224 5687528 1744104 5687352 1744224 5687568 1752784 5698344 +1744224 5687568 1752504 5698368 1752600 5698344 1752784 5698344 +1744224 5687568 1752408 5698432 1752504 5698368 1752600 5698344 +1744224 5687568 1751376 5699584 1751944 5698896 1752408 5698432 +1744224 5687568 1751944 5698896 1752408 5698432 1752504 5698368 +1744224 5687568 1751256 5699792 1751256 5699712 1751376 5699584 +1743800 5687248 1744104 5687640 1744224 5687568 1744104 5687352 +1744224 5687568 1744104 5687640 1751256 5699792 1751256 5699712 +1744104 5687640 1743800 5687248 1751256 5699792 1751256 5699712 +1751256 5699792 1744104 5687640 1743800 5687248 1599875 5760125 +1743800 5687248 1751256 5699792 1744104 5687640 1744104 5687352 +1743800 5687248 1744104 5687640 1744104 5687352 1744016 5687240 +1744104 5687640 1751256 5699712 1744224 5687568 1744104 5687352 +1744224 5687568 1744224 5687528 1744104 5687352 1744104 5687640 +1744104 5687352 1743800 5687248 1744104 5687640 1744224 5687528 +1744224 5687568 1744224 5687528 1744104 5687640 1751256 5699712 +1744224 5687568 1744104 5687640 1751256 5699712 1751376 5699584 +1744104 5687640 1751256 5699792 1751256 5699712 1751376 5699584 +1744224 5687568 1744104 5687640 1751376 5699584 1751944 5698896 +1751376 5699584 1751504 5699528 1751944 5698896 1744104 5687640 +1744224 5687568 1744104 5687640 1751944 5698896 1752408 5698432 +1751944 5698896 1752144 5698864 1752408 5698432 1744104 5687640 +1744104 5687640 1751376 5699584 1751944 5698896 1752408 5698432 +1744224 5687568 1744104 5687640 1752408 5698432 1752504 5698368 +1744224 5687568 1744224 5687528 1744104 5687640 1752408 5698432 +1744104 5687640 1751256 5699712 1751376 5699584 1751944 5698896 +1744104 5687640 1744040 5687624 1751256 5699792 1751256 5699712 +1744104 5687640 1744040 5687624 1751256 5699712 1751376 5699584 +1751256 5699792 1744040 5687624 1743800 5687248 1599875 5760125 +1743800 5687248 1663944 5646256 1599875 5760125 1744040 5687624 +1744040 5687624 1744104 5687640 1743800 5687248 1599875 5760125 +1751256 5699792 1744040 5687624 1599875 5760125 1760125 5760125 +1743800 5687248 1744040 5687624 1744104 5687640 1744104 5687352 +1744104 5687640 1744224 5687528 1744104 5687352 1744040 5687624 +1743800 5687248 1599875 5760125 1744040 5687624 1744104 5687352 +1744104 5687352 1743800 5687248 1744040 5687624 1744224 5687528 +1744104 5687640 1744224 5687528 1744040 5687624 1751256 5699712 +1744040 5687624 1599875 5760125 1751256 5699792 1751256 5699712 +1743800 5687248 1744040 5687624 1744104 5687352 1744016 5687240 +1744104 5687640 1744224 5687568 1744224 5687528 1744040 5687624 +1599875 5760125 1743976 5687584 1743800 5687248 1663944 5646256 +1743800 5687248 1664040 5646192 1663944 5646256 1743976 5687584 +1599875 5760125 1744040 5687624 1743976 5687584 1663944 5646256 +1743800 5687248 1743976 5687584 1744040 5687624 1744104 5687352 +1743976 5687584 1599875 5760125 1744040 5687624 1744104 5687352 +1744040 5687624 1744224 5687528 1744104 5687352 1743976 5687584 +1744040 5687624 1743976 5687584 1599875 5760125 1751256 5699792 +1744040 5687624 1744104 5687352 1743976 5687584 1751256 5699792 +1743976 5687584 1663944 5646256 1599875 5760125 1751256 5699792 +1599875 5760125 1760125 5760125 1751256 5699792 1743976 5687584 +1599875 5760125 1743976 5687584 1663944 5646256 1663880 5646248 +1743976 5687584 1744104 5687352 1743800 5687248 1663944 5646256 +1744040 5687624 1743976 5687584 1751256 5699792 1751256 5699712 +1743800 5687248 1743976 5687584 1744104 5687352 1744016 5687240 +1743976 5687584 1744040 5687624 1744104 5687352 1744016 5687240 +1743800 5687248 1743976 5687584 1744016 5687240 1743952 5687200 +1743800 5687248 1663944 5646256 1743976 5687584 1744016 5687240 +1743976 5687584 1743888 5687504 1663944 5646256 1599875 5760125 +1663944 5646256 1743888 5687504 1743800 5687248 1664040 5646192 +1743976 5687584 1743888 5687504 1599875 5760125 1751256 5699792 +1743888 5687504 1663944 5646256 1599875 5760125 1751256 5699792 +1599875 5760125 1760125 5760125 1751256 5699792 1743888 5687504 +1743976 5687584 1743888 5687504 1751256 5699792 1744040 5687624 +1663944 5646256 1663880 5646248 1599875 5760125 1743888 5687504 +1743976 5687584 1743800 5687248 1743888 5687504 1751256 5699792 +1743800 5687248 1743888 5687504 1743976 5687584 1744016 5687240 +1743800 5687248 1743888 5687504 1744016 5687240 1743952 5687200 +1743800 5687248 1663944 5646256 1743888 5687504 1744016 5687240 +1743888 5687504 1751256 5699792 1743976 5687584 1744016 5687240 +1743888 5687504 1743800 5687248 1663944 5646256 1599875 5760125 +1743976 5687584 1744104 5687352 1744016 5687240 1743888 5687504 +1743976 5687584 1744040 5687624 1744104 5687352 1743888 5687504 +1743976 5687584 1744104 5687352 1743888 5687504 1751256 5699792 +1744016 5687240 1743800 5687248 1743888 5687504 1744104 5687352 +1663944 5646256 1743800 5687320 1743800 5687248 1664040 5646192 +1743800 5687248 1664040 5646064 1664040 5646192 1743800 5687320 +1743800 5687320 1743888 5687504 1743800 5687248 1664040 5646192 +1743800 5687248 1743800 5687320 1743888 5687504 1744016 5687240 +1743800 5687248 1743800 5687320 1744016 5687240 1743952 5687200 +1743800 5687248 1743800 5687320 1743952 5687200 1743888 5687192 +1743800 5687320 1744016 5687240 1743952 5687200 1743888 5687192 +1743800 5687248 1664040 5646192 1743800 5687320 1743888 5687192 +1743800 5687320 1663944 5646256 1743888 5687504 1744016 5687240 +1743800 5687320 1743888 5687504 1744016 5687240 1743952 5687200 +1663944 5646256 1743888 5687504 1743800 5687320 1664040 5646192 +1743888 5687504 1744104 5687352 1744016 5687240 1743800 5687320 +1743888 5687504 1743800 5687320 1663944 5646256 1599875 5760125 +1760125 5599875 1657600 5638648 1663776 5645840 1663816 5645848 +1663776 5645840 1657600 5638648 1599875 5599875 1663688 5645904 +1657600 5638648 1663688 5645904 1663776 5645840 1663816 5645848 +1657600 5638648 1760125 5599875 1599875 5599875 1663688 5645904 +1760125 5599875 1599875 5599875 1657600 5638648 1663816 5645848 +1599875 5599875 1663688 5645984 1663688 5645904 1657600 5638648 +1599875 5599875 1599875 5760125 1663688 5645984 1657600 5638648 +1663688 5645904 1663776 5645840 1657600 5638648 1663688 5645984 +1599875 5599875 1599875 5760125 1657600 5638648 1760125 5599875 +1663688 5645984 1663688 5645904 1657600 5638648 1599875 5760125 +1599875 5760125 1663776 5646144 1663688 5645984 1657600 5638648 +1599875 5760125 1663880 5646248 1663776 5646144 1657600 5638648 +1599875 5760125 1663776 5646144 1657600 5638648 1599875 5599875 +1663688 5645984 1663688 5645904 1657600 5638648 1663776 5646144 +1760125 5599875 1657600 5638648 1663816 5645848 1663856 5645872 +1657600 5638648 1663776 5645840 1663816 5645848 1663856 5645872 +1760125 5599875 1657600 5638648 1663856 5645872 1663944 5645952 +1760125 5599875 1599875 5599875 1657600 5638648 1663944 5645952 +1760125 5599875 1657600 5638648 1663944 5645952 1664040 5646064 +1657600 5638648 1663816 5645848 1663856 5645872 1663944 5645952 +1663944 5645952 1657664 5638648 1657600 5638648 1663856 5645872 +1663944 5645952 1760125 5599875 1657664 5638648 1663856 5645872 +1657664 5638648 1760125 5599875 1657600 5638648 1663856 5645872 +1657600 5638648 1657664 5638648 1760125 5599875 1599875 5599875 +1657600 5638648 1663856 5645872 1657664 5638648 1599875 5599875 +1657664 5638648 1663944 5645952 1760125 5599875 1599875 5599875 +1657600 5638648 1657664 5638648 1599875 5599875 1599875 5760125 +1760125 5599875 1657664 5638648 1663944 5645952 1664040 5646064 +1657600 5638648 1663816 5645848 1663856 5645872 1657664 5638648 +1657600 5638648 1663776 5645840 1663816 5645848 1657664 5638648 +1663856 5645872 1663944 5645952 1657664 5638648 1663816 5645848 +1657600 5638648 1663776 5645840 1657664 5638648 1599875 5599875 +1657600 5638648 1663688 5645904 1663776 5645840 1657664 5638648 +1663776 5645840 1663816 5645848 1657664 5638648 1663688 5645904 +1657600 5638648 1663688 5645984 1663688 5645904 1657664 5638648 +1657600 5638648 1663688 5645904 1657664 5638648 1599875 5599875 +1663816 5645848 1663856 5645872 1657664 5638648 1663776 5645840 +1657600 5638648 1657720 5638792 1663688 5645904 1657664 5638648 +1663688 5645904 1663776 5645840 1657664 5638648 1657720 5638792 +1663776 5645840 1663816 5645848 1657664 5638648 1657720 5638792 +1657664 5638648 1657600 5638648 1657720 5638792 1663816 5645848 +1663776 5645840 1663816 5645848 1657720 5638792 1663688 5645904 +1657600 5638648 1663688 5645984 1657720 5638792 1657664 5638648 +1657720 5638792 1663688 5645984 1663688 5645904 1663776 5645840 +1663688 5645984 1657720 5638792 1657600 5638648 1663776 5646144 +1663688 5645984 1663688 5645904 1657720 5638792 1663776 5646144 +1657720 5638792 1657664 5638648 1657600 5638648 1663776 5646144 +1657600 5638648 1599875 5760125 1663776 5646144 1657720 5638792 +1599875 5760125 1663880 5646248 1663776 5646144 1657720 5638792 +1657600 5638648 1599875 5599875 1599875 5760125 1657720 5638792 +1657600 5638648 1599875 5760125 1657720 5638792 1657664 5638648 +1663776 5646144 1663688 5645984 1657720 5638792 1599875 5760125 +1663816 5645848 1663856 5645872 1657664 5638648 1657720 5638792 +1663776 5646144 1657760 5638888 1599875 5760125 1663880 5646248 +1657720 5638792 1657760 5638888 1663776 5646144 1663688 5645984 +1657720 5638792 1657760 5638888 1663688 5645984 1663688 5645904 +1657720 5638792 1599875 5760125 1657760 5638888 1663688 5645904 +1657760 5638888 1599875 5760125 1663776 5646144 1663688 5645984 +1657720 5638792 1657760 5638888 1663688 5645904 1663776 5645840 +1657720 5638792 1657760 5638888 1663776 5645840 1663816 5645848 +1657720 5638792 1657760 5638888 1663816 5645848 1657664 5638648 +1657760 5638888 1663776 5645840 1663816 5645848 1657664 5638648 +1657760 5638888 1663688 5645984 1663688 5645904 1663776 5645840 +1657720 5638792 1599875 5760125 1657760 5638888 1657664 5638648 +1657760 5638888 1663688 5645904 1663776 5645840 1663816 5645848 +1657760 5638888 1663776 5646144 1663688 5645984 1663688 5645904 +1599875 5760125 1657760 5638888 1657720 5638792 1657600 5638648 +1599875 5760125 1657760 5638888 1657600 5638648 1599875 5599875 +1657760 5638888 1657664 5638648 1657720 5638792 1657600 5638648 +1657720 5638792 1657664 5638648 1657600 5638648 1657760 5638888 +1599875 5760125 1663776 5646144 1657760 5638888 1657600 5638648 +1663816 5645848 1663856 5645872 1657664 5638648 1657760 5638888 +1663776 5646144 1657776 5638984 1599875 5760125 1663880 5646248 +1657760 5638888 1657776 5638984 1663776 5646144 1663688 5645984 +1657760 5638888 1599875 5760125 1657776 5638984 1663688 5645984 +1599875 5760125 1657776 5638984 1657760 5638888 1657600 5638648 +1599875 5760125 1657776 5638984 1657600 5638648 1599875 5599875 +1657776 5638984 1663688 5645984 1657760 5638888 1657600 5638648 +1657776 5638984 1657760 5638888 1657600 5638648 1599875 5599875 +1657776 5638984 1599875 5760125 1663776 5646144 1663688 5645984 +1657600 5638648 1657664 5638648 1599875 5599875 1657776 5638984 +1599875 5760125 1663776 5646144 1657776 5638984 1599875 5599875 +1657760 5638888 1657776 5638984 1663688 5645984 1663688 5645904 +1657760 5638888 1657776 5638984 1663688 5645904 1663776 5645840 +1657776 5638984 1663776 5646144 1663688 5645984 1663688 5645904 +1657760 5638888 1657600 5638648 1657776 5638984 1663776 5645840 +1657760 5638888 1657776 5638984 1663776 5645840 1663816 5645848 +1657760 5638888 1657776 5638984 1663816 5645848 1657664 5638648 +1657776 5638984 1663688 5645904 1663776 5645840 1663816 5645848 +1657760 5638888 1657600 5638648 1657776 5638984 1663816 5645848 +1657776 5638984 1663688 5645984 1663688 5645904 1663776 5645840 +1657760 5638888 1657720 5638792 1657600 5638648 1657776 5638984 +1657720 5638792 1657664 5638648 1657600 5638648 1657776 5638984 +1657760 5638888 1657720 5638792 1657776 5638984 1663816 5645848 +1657600 5638648 1599875 5599875 1657776 5638984 1657720 5638792 +1663776 5646144 1657808 5639048 1599875 5760125 1663880 5646248 +1657776 5638984 1657808 5639048 1663776 5646144 1663688 5645984 +1657776 5638984 1657808 5639048 1663688 5645984 1663688 5645904 +1657808 5639048 1663776 5646144 1663688 5645984 1663688 5645904 +1599875 5760125 1657808 5639048 1657776 5638984 1599875 5599875 +1657776 5638984 1657600 5638648 1599875 5599875 1657808 5639048 +1657776 5638984 1657720 5638792 1657600 5638648 1657808 5639048 +1657600 5638648 1657664 5638648 1599875 5599875 1657808 5639048 +1599875 5599875 1599875 5760125 1657808 5639048 1657600 5638648 +1657776 5638984 1657600 5638648 1657808 5639048 1663688 5645904 +1657808 5639048 1599875 5760125 1663776 5646144 1663688 5645984 +1599875 5760125 1663776 5646144 1657808 5639048 1599875 5599875 +1657776 5638984 1657808 5639048 1663688 5645904 1663776 5645840 +1657776 5638984 1657808 5639048 1663776 5645840 1663816 5645848 +1657808 5639048 1663688 5645984 1663688 5645904 1663776 5645840 +1657776 5638984 1657600 5638648 1657808 5639048 1663816 5645848 +1657776 5638984 1657808 5639048 1663816 5645848 1657760 5638888 +1663816 5645848 1657664 5638648 1657760 5638888 1657808 5639048 +1657808 5639048 1663776 5645840 1663816 5645848 1657760 5638888 +1657776 5638984 1657600 5638648 1657808 5639048 1657760 5638888 +1657808 5639048 1663688 5645904 1663776 5645840 1663816 5645848 +1663776 5646144 1657816 5639096 1599875 5760125 1663880 5646248 +1657808 5639048 1657816 5639096 1663776 5646144 1663688 5645984 +1657808 5639048 1657816 5639096 1663688 5645984 1663688 5645904 +1657808 5639048 1657816 5639096 1663688 5645904 1663776 5645840 +1657816 5639096 1663688 5645984 1663688 5645904 1663776 5645840 +1657816 5639096 1599875 5760125 1663776 5646144 1663688 5645984 +1657816 5639096 1663776 5646144 1663688 5645984 1663688 5645904 +1657808 5639048 1599875 5760125 1657816 5639096 1663776 5645840 +1599875 5760125 1657816 5639096 1657808 5639048 1599875 5599875 +1657808 5639048 1657600 5638648 1599875 5599875 1657816 5639096 +1657808 5639048 1657776 5638984 1657600 5638648 1657816 5639096 +1657776 5638984 1657720 5638792 1657600 5638648 1657816 5639096 +1657600 5638648 1657664 5638648 1599875 5599875 1657816 5639096 +1657600 5638648 1599875 5599875 1657816 5639096 1657776 5638984 +1657816 5639096 1663776 5645840 1657808 5639048 1657776 5638984 +1599875 5599875 1599875 5760125 1657816 5639096 1657600 5638648 +1599875 5760125 1663776 5646144 1657816 5639096 1599875 5599875 +1657808 5639048 1657816 5639096 1663776 5645840 1663816 5645848 +1657808 5639048 1657816 5639096 1663816 5645848 1657760 5638888 +1657816 5639096 1663688 5645904 1663776 5645840 1663816 5645848 +1657808 5639048 1657776 5638984 1657816 5639096 1663816 5645848 +1599875 5599875 1657792 5639144 1657816 5639096 1657600 5638648 +1599875 5599875 1599875 5760125 1657792 5639144 1657600 5638648 +1599875 5599875 1657792 5639144 1657600 5638648 1657664 5638648 +1657816 5639096 1657776 5638984 1657600 5638648 1657792 5639144 +1657816 5639096 1657808 5639048 1657776 5638984 1657792 5639144 +1657776 5638984 1657720 5638792 1657600 5638648 1657792 5639144 +1657776 5638984 1657600 5638648 1657792 5639144 1657808 5639048 +1657600 5638648 1599875 5599875 1657792 5639144 1657776 5638984 +1657792 5639144 1599875 5760125 1657816 5639096 1657808 5639048 +1657816 5639096 1657792 5639144 1599875 5760125 1663776 5646144 +1599875 5760125 1663880 5646248 1663776 5646144 1657792 5639144 +1657792 5639144 1599875 5599875 1599875 5760125 1663776 5646144 +1657816 5639096 1657792 5639144 1663776 5646144 1663688 5645984 +1657816 5639096 1657792 5639144 1663688 5645984 1663688 5645904 +1657792 5639144 1663776 5646144 1663688 5645984 1663688 5645904 +1657816 5639096 1657792 5639144 1663688 5645904 1663776 5645840 +1657816 5639096 1657792 5639144 1663776 5645840 1663816 5645848 +1657792 5639144 1663688 5645984 1663688 5645904 1663776 5645840 +1657816 5639096 1657808 5639048 1657792 5639144 1663776 5645840 +1657792 5639144 1599875 5760125 1663776 5646144 1663688 5645984 +1663776 5646144 1657768 5639240 1599875 5760125 1663880 5646248 +1599875 5760125 1657768 5639240 1657792 5639144 1599875 5599875 +1657792 5639144 1657600 5638648 1599875 5599875 1657768 5639240 +1599875 5599875 1599875 5760125 1657768 5639240 1657600 5638648 +1657600 5638648 1657664 5638648 1599875 5599875 1657768 5639240 +1657792 5639144 1657776 5638984 1657600 5638648 1657768 5639240 +1657600 5638648 1599875 5599875 1657768 5639240 1657776 5638984 +1657776 5638984 1657720 5638792 1657600 5638648 1657768 5639240 +1657792 5639144 1657808 5639048 1657776 5638984 1657768 5639240 +1657792 5639144 1657768 5639240 1663776 5646144 1663688 5645984 +1657792 5639144 1657768 5639240 1663688 5645984 1663688 5645904 +1657792 5639144 1657768 5639240 1663688 5645904 1663776 5645840 +1657768 5639240 1663688 5645984 1663688 5645904 1663776 5645840 +1657792 5639144 1657768 5639240 1663776 5645840 1657816 5639096 +1663776 5645840 1663816 5645848 1657816 5639096 1657768 5639240 +1657768 5639240 1663688 5645904 1663776 5645840 1657816 5639096 +1657768 5639240 1663776 5646144 1663688 5645984 1663688 5645904 +1657768 5639240 1657816 5639096 1657792 5639144 1657776 5638984 +1657768 5639240 1599875 5760125 1663776 5646144 1663688 5645984 +1599875 5760125 1663776 5646144 1657768 5639240 1599875 5599875 +1599875 5599875 1657736 5639288 1657768 5639240 1657600 5638648 +1657768 5639240 1657776 5638984 1657600 5638648 1657736 5639288 +1657600 5638648 1599875 5599875 1657736 5639288 1657776 5638984 +1657776 5638984 1657720 5638792 1657600 5638648 1657736 5639288 +1599875 5599875 1599875 5760125 1657736 5639288 1657600 5638648 +1599875 5599875 1657736 5639288 1657600 5638648 1657664 5638648 +1657768 5639240 1657792 5639144 1657776 5638984 1657736 5639288 +1657776 5638984 1657600 5638648 1657736 5639288 1657792 5639144 +1657792 5639144 1657808 5639048 1657776 5638984 1657736 5639288 +1657736 5639288 1599875 5760125 1657768 5639240 1657792 5639144 +1657768 5639240 1657736 5639288 1599875 5760125 1663776 5646144 +1599875 5760125 1663880 5646248 1663776 5646144 1657736 5639288 +1657768 5639240 1657736 5639288 1663776 5646144 1663688 5645984 +1657768 5639240 1657736 5639288 1663688 5645984 1663688 5645904 +1657768 5639240 1657736 5639288 1663688 5645904 1663776 5645840 +1657768 5639240 1657736 5639288 1663776 5645840 1657816 5639096 +1657736 5639288 1663688 5645984 1663688 5645904 1663776 5645840 +1657736 5639288 1663776 5646144 1663688 5645984 1663688 5645904 +1657768 5639240 1657792 5639144 1657736 5639288 1663776 5645840 +1657736 5639288 1599875 5760125 1663776 5646144 1663688 5645984 +1657736 5639288 1599875 5599875 1599875 5760125 1663776 5646144 +1599875 5599875 1657424 5639488 1657736 5639288 1657600 5638648 +1657736 5639288 1657776 5638984 1657600 5638648 1657424 5639488 +1657736 5639288 1657792 5639144 1657776 5638984 1657424 5639488 +1657776 5638984 1657720 5638792 1657600 5638648 1657424 5639488 +1657424 5639488 1599875 5760125 1657736 5639288 1657776 5638984 +1657600 5638648 1599875 5599875 1657424 5639488 1657776 5638984 +1599875 5599875 1599875 5760125 1657424 5639488 1657600 5638648 +1599875 5599875 1657424 5639488 1657600 5638648 1657664 5638648 +1657736 5639288 1657424 5639488 1599875 5760125 1663776 5646144 +1599875 5760125 1663880 5646248 1663776 5646144 1657424 5639488 +1657736 5639288 1657776 5638984 1657424 5639488 1663776 5646144 +1657424 5639488 1599875 5599875 1599875 5760125 1663776 5646144 +1657736 5639288 1657424 5639488 1663776 5646144 1663688 5645984 +1657736 5639288 1657776 5638984 1657424 5639488 1663688 5645984 +1657736 5639288 1657424 5639488 1663688 5645984 1663688 5645904 +1657736 5639288 1657776 5638984 1657424 5639488 1663688 5645904 +1657736 5639288 1657424 5639488 1663688 5645904 1663776 5645840 +1657424 5639488 1663776 5646144 1663688 5645984 1663688 5645904 +1657424 5639488 1599875 5760125 1663776 5646144 1663688 5645984 +1657424 5639488 1657256 5639536 1599875 5760125 1663776 5646144 +1599875 5760125 1663880 5646248 1663776 5646144 1657256 5639536 +1657424 5639488 1599875 5599875 1657256 5639536 1663776 5646144 +1599875 5599875 1657256 5639536 1657424 5639488 1657600 5638648 +1657424 5639488 1657776 5638984 1657600 5638648 1657256 5639536 +1657256 5639536 1663776 5646144 1657424 5639488 1657600 5638648 +1599875 5599875 1657256 5639536 1657600 5638648 1657664 5638648 +1657424 5639488 1657256 5639536 1663776 5646144 1663688 5645984 +1657256 5639536 1599875 5760125 1663776 5646144 1663688 5645984 +1657424 5639488 1657600 5638648 1657256 5639536 1663688 5645984 +1657424 5639488 1657256 5639536 1663688 5645984 1663688 5645904 +1657424 5639488 1657600 5638648 1657256 5639536 1663688 5645904 +1657424 5639488 1657256 5639536 1663688 5645904 1657736 5639288 +1657256 5639536 1663776 5646144 1663688 5645984 1663688 5645904 +1657256 5639536 1599875 5599875 1599875 5760125 1663776 5646144 +1599875 5599875 1599875 5760125 1657256 5639536 1657600 5638648 +1657256 5639536 1657088 5639464 1599875 5760125 1663776 5646144 +1599875 5760125 1663880 5646248 1663776 5646144 1657088 5639464 +1657256 5639536 1657088 5639464 1663776 5646144 1663688 5645984 +1657256 5639536 1657088 5639464 1663688 5645984 1663688 5645904 +1657088 5639464 1599875 5760125 1663776 5646144 1663688 5645984 +1599875 5599875 1657088 5639464 1657256 5639536 1657600 5638648 +1599875 5599875 1657088 5639464 1657600 5638648 1657664 5638648 +1599875 5599875 1599875 5760125 1657088 5639464 1657600 5638648 +1657256 5639536 1657424 5639488 1657600 5638648 1657088 5639464 +1657424 5639488 1657776 5638984 1657600 5638648 1657088 5639464 +1657600 5638648 1599875 5599875 1657088 5639464 1657424 5639488 +1657256 5639536 1657424 5639488 1657088 5639464 1663688 5645984 +1657088 5639464 1599875 5599875 1599875 5760125 1663776 5646144 +1599875 5599875 1657056 5639384 1657600 5638648 1657664 5638648 +1657088 5639464 1657056 5639384 1599875 5599875 1599875 5760125 +1657600 5638648 1657056 5639384 1657088 5639464 1657424 5639488 +1657600 5638648 1657056 5639384 1657424 5639488 1657776 5638984 +1657424 5639488 1657736 5639288 1657776 5638984 1657056 5639384 +1657600 5638648 1657056 5639384 1657776 5638984 1657720 5638792 +1657600 5638648 1657056 5639384 1657720 5638792 1657664 5638648 +1657056 5639384 1657424 5639488 1657776 5638984 1657720 5638792 +1657056 5639384 1599875 5599875 1657088 5639464 1657424 5639488 +1657088 5639464 1657256 5639536 1657424 5639488 1657056 5639384 +1657088 5639464 1657256 5639536 1657056 5639384 1599875 5599875 +1657056 5639384 1657256 5639536 1657424 5639488 1657776 5638984 +1657600 5638648 1599875 5599875 1657056 5639384 1657720 5638792 +1657776 5638984 1657760 5638888 1657720 5638792 1657056 5639384 +1599875 5599875 1657088 5639296 1657600 5638648 1657664 5638648 +1657600 5638648 1657088 5639296 1657056 5639384 1657720 5638792 +1657600 5638648 1657088 5639296 1657720 5638792 1657664 5638648 +1657056 5639384 1657776 5638984 1657720 5638792 1657088 5639296 +1657056 5639384 1657424 5639488 1657776 5638984 1657088 5639296 +1657424 5639488 1657736 5639288 1657776 5638984 1657088 5639296 +1657736 5639288 1657792 5639144 1657776 5638984 1657088 5639296 +1657776 5638984 1657720 5638792 1657088 5639296 1657736 5639288 +1657424 5639488 1657736 5639288 1657088 5639296 1657056 5639384 +1657056 5639384 1657256 5639536 1657424 5639488 1657088 5639296 +1657424 5639488 1657736 5639288 1657088 5639296 1657256 5639536 +1657056 5639384 1657088 5639464 1657256 5639536 1657088 5639296 +1657256 5639536 1657424 5639488 1657088 5639296 1657088 5639464 +1657720 5638792 1657600 5638648 1657088 5639296 1657776 5638984 +1657088 5639296 1599875 5599875 1657056 5639384 1657088 5639464 +1657600 5638648 1599875 5599875 1657088 5639296 1657720 5638792 +1657776 5638984 1657760 5638888 1657720 5638792 1657088 5639296 +1657776 5638984 1657760 5638888 1657088 5639296 1657736 5639288 +1657720 5638792 1657600 5638648 1657088 5639296 1657760 5638888 +1657056 5639384 1657088 5639296 1599875 5599875 1657088 5639464 +1657776 5638984 1657184 5639240 1657088 5639296 1657736 5639288 +1657088 5639296 1657424 5639488 1657736 5639288 1657184 5639240 +1657776 5638984 1657184 5639240 1657736 5639288 1657792 5639144 +1657736 5639288 1657792 5639144 1657184 5639240 1657424 5639488 +1657088 5639296 1657256 5639536 1657424 5639488 1657184 5639240 +1657424 5639488 1657736 5639288 1657184 5639240 1657256 5639536 +1657776 5638984 1657184 5639240 1657792 5639144 1657808 5639048 +1657736 5639288 1657768 5639240 1657792 5639144 1657184 5639240 +1657088 5639296 1657088 5639464 1657256 5639536 1657184 5639240 +1657256 5639536 1657424 5639488 1657184 5639240 1657088 5639464 +1657088 5639296 1657056 5639384 1657088 5639464 1657184 5639240 +1657184 5639240 1657760 5638888 1657088 5639296 1657088 5639464 +1657776 5638984 1657760 5638888 1657184 5639240 1657792 5639144 +1657088 5639296 1657184 5639240 1657760 5638888 1657720 5638792 +1657088 5639296 1657184 5639240 1657720 5638792 1657600 5638648 +1657720 5638792 1657664 5638648 1657600 5638648 1657184 5639240 +1657088 5639296 1657088 5639464 1657184 5639240 1657600 5638648 +1657088 5639296 1657184 5639240 1657600 5638648 1599875 5599875 +1657184 5639240 1657776 5638984 1657760 5638888 1657720 5638792 +1657184 5639240 1657760 5638888 1657720 5638792 1657600 5638648 +1657792 5639144 1657352 5639184 1657184 5639240 1657736 5639288 +1657184 5639240 1657424 5639488 1657736 5639288 1657352 5639184 +1657184 5639240 1657256 5639536 1657424 5639488 1657352 5639184 +1657736 5639288 1657792 5639144 1657352 5639184 1657424 5639488 +1657792 5639144 1657776 5638984 1657352 5639184 1657736 5639288 +1657776 5638984 1657352 5639184 1657792 5639144 1657808 5639048 +1657792 5639144 1657352 5639184 1657736 5639288 1657768 5639240 +1657352 5639184 1657424 5639488 1657736 5639288 1657768 5639240 +1657792 5639144 1657776 5638984 1657352 5639184 1657768 5639240 +1657352 5639184 1657776 5638984 1657184 5639240 1657424 5639488 +1657184 5639240 1657352 5639184 1657776 5638984 1657760 5638888 +1657352 5639184 1657792 5639144 1657776 5638984 1657760 5638888 +1657184 5639240 1657352 5639184 1657760 5638888 1657720 5638792 +1657184 5639240 1657424 5639488 1657352 5639184 1657720 5638792 +1657352 5639184 1657776 5638984 1657760 5638888 1657720 5638792 +1657184 5639240 1657352 5639184 1657720 5638792 1657600 5638648 +1657720 5638792 1657664 5638648 1657600 5638648 1657352 5639184 +1657184 5639240 1657352 5639184 1657600 5638648 1657088 5639296 +1657352 5639184 1657760 5638888 1657720 5638792 1657600 5638648 +1657184 5639240 1657424 5639488 1657352 5639184 1657600 5638648 +1657184 5639240 1657392 5639080 1657600 5638648 1657088 5639296 +1657600 5638648 1657392 5639080 1657352 5639184 1657720 5638792 +1657600 5638648 1657392 5639080 1657720 5638792 1657664 5638648 +1657392 5639080 1657184 5639240 1657352 5639184 1657720 5638792 +1657352 5639184 1657760 5638888 1657720 5638792 1657392 5639080 +1657352 5639184 1657760 5638888 1657392 5639080 1657184 5639240 +1657352 5639184 1657776 5638984 1657760 5638888 1657392 5639080 +1657352 5639184 1657792 5639144 1657776 5638984 1657392 5639080 +1657352 5639184 1657792 5639144 1657392 5639080 1657184 5639240 +1657352 5639184 1657768 5639240 1657792 5639144 1657392 5639080 +1657792 5639144 1657776 5638984 1657392 5639080 1657768 5639240 +1657352 5639184 1657768 5639240 1657392 5639080 1657184 5639240 +1657792 5639144 1657808 5639048 1657776 5638984 1657392 5639080 +1657352 5639184 1657736 5639288 1657768 5639240 1657392 5639080 +1657352 5639184 1657424 5639488 1657736 5639288 1657392 5639080 +1657352 5639184 1657736 5639288 1657392 5639080 1657184 5639240 +1657768 5639240 1657792 5639144 1657392 5639080 1657736 5639288 +1657760 5638888 1657720 5638792 1657392 5639080 1657776 5638984 +1657776 5638984 1657760 5638888 1657392 5639080 1657792 5639144 +1657720 5638792 1657600 5638648 1657392 5639080 1657760 5638888 +1657600 5638648 1657184 5639240 1657392 5639080 1657720 5638792 +1657600 5638648 1657408 5639056 1657720 5638792 1657664 5638648 +1657720 5638792 1657408 5639056 1657392 5639080 1657760 5638888 +1657392 5639080 1657776 5638984 1657760 5638888 1657408 5639056 +1657392 5639080 1657792 5639144 1657776 5638984 1657408 5639056 +1657392 5639080 1657768 5639240 1657792 5639144 1657408 5639056 +1657392 5639080 1657736 5639288 1657768 5639240 1657408 5639056 +1657768 5639240 1657792 5639144 1657408 5639056 1657736 5639288 +1657792 5639144 1657808 5639048 1657776 5638984 1657408 5639056 +1657392 5639080 1657352 5639184 1657736 5639288 1657408 5639056 +1657776 5638984 1657760 5638888 1657408 5639056 1657792 5639144 +1657792 5639144 1657776 5638984 1657408 5639056 1657768 5639240 +1657760 5638888 1657720 5638792 1657408 5639056 1657776 5638984 +1657392 5639080 1657408 5639056 1657600 5638648 1657184 5639240 +1657392 5639080 1657408 5639056 1657184 5639240 1657352 5639184 +1657600 5638648 1657088 5639296 1657184 5639240 1657408 5639056 +1657408 5639056 1657184 5639240 1657392 5639080 1657736 5639288 +1657408 5639056 1657720 5638792 1657600 5638648 1657184 5639240 +1657720 5638792 1657600 5638648 1657408 5639056 1657760 5638888 +1657184 5639240 1657464 5638864 1657600 5638648 1657088 5639296 +1657184 5639240 1657408 5639056 1657464 5638864 1657088 5639296 +1657464 5638864 1657408 5639056 1657600 5638648 1657088 5639296 +1657600 5638648 1599875 5599875 1657088 5639296 1657464 5638864 +1657408 5639056 1657464 5638864 1657184 5639240 1657392 5639080 +1657184 5639240 1657352 5639184 1657392 5639080 1657464 5638864 +1657464 5638864 1657088 5639296 1657184 5639240 1657392 5639080 +1657600 5638648 1657464 5638864 1657408 5639056 1657720 5638792 +1657600 5638648 1657464 5638864 1657720 5638792 1657664 5638648 +1657600 5638648 1657088 5639296 1657464 5638864 1657720 5638792 +1657408 5639056 1657720 5638792 1657464 5638864 1657392 5639080 +1657408 5639056 1657760 5638888 1657720 5638792 1657464 5638864 +1657408 5639056 1657776 5638984 1657760 5638888 1657464 5638864 +1657760 5638888 1657720 5638792 1657464 5638864 1657776 5638984 +1657408 5639056 1657792 5639144 1657776 5638984 1657464 5638864 +1657720 5638792 1657600 5638648 1657464 5638864 1657760 5638888 +1657408 5639056 1657776 5638984 1657464 5638864 1657392 5639080 +1599875 5599875 1657472 5638792 1657600 5638648 1657664 5638648 +1657088 5639296 1657472 5638792 1599875 5599875 1657056 5639384 +1657600 5638648 1657472 5638792 1657088 5639296 1657464 5638864 +1657600 5638648 1657472 5638792 1657464 5638864 1657720 5638792 +1657600 5638648 1657472 5638792 1657720 5638792 1657664 5638648 +1657472 5638792 1599875 5599875 1657088 5639296 1657464 5638864 +1657088 5639296 1657184 5639240 1657464 5638864 1657472 5638792 +1657184 5639240 1657392 5639080 1657464 5638864 1657472 5638792 +1657088 5639296 1657184 5639240 1657472 5638792 1599875 5599875 +1657472 5638792 1657184 5639240 1657464 5638864 1657720 5638792 +1657464 5638864 1657760 5638888 1657720 5638792 1657472 5638792 +1657600 5638648 1599875 5599875 1657472 5638792 1657720 5638792 +1599875 5599875 1604784 5714488 1657088 5639464 1657056 5639384 +1657088 5639464 1604784 5714488 1599875 5760125 1663776 5646144 +1599875 5760125 1663880 5646248 1663776 5646144 1604784 5714488 +1663776 5646144 1657088 5639464 1604784 5714488 1663880 5646248 +1657088 5639464 1604784 5714488 1663776 5646144 1663688 5645984 +1599875 5760125 1663944 5646256 1663880 5646248 1604784 5714488 +1663880 5646248 1663776 5646144 1604784 5714488 1663944 5646256 +1599875 5760125 1743888 5687504 1663944 5646256 1604784 5714488 +1599875 5760125 1751256 5699792 1743888 5687504 1604784 5714488 +1751256 5699792 1743976 5687584 1743888 5687504 1604784 5714488 +1599875 5760125 1760125 5760125 1751256 5699792 1604784 5714488 +1751256 5699792 1743888 5687504 1604784 5714488 1760125 5760125 +1760125 5760125 1751376 5699848 1751256 5699792 1604784 5714488 +1743888 5687504 1663944 5646256 1604784 5714488 1751256 5699792 +1743888 5687504 1743800 5687320 1663944 5646256 1604784 5714488 +1743800 5687320 1664040 5646192 1663944 5646256 1604784 5714488 +1743888 5687504 1743800 5687320 1604784 5714488 1751256 5699792 +1663944 5646256 1663880 5646248 1604784 5714488 1743800 5687320 +1604784 5714488 1599875 5599875 1599875 5760125 1760125 5760125 +1599875 5599875 1599875 5760125 1604784 5714488 1657056 5639384 +1599875 5599875 1604784 5714488 1657056 5639384 1657088 5639296 +1604784 5714488 1663776 5646144 1657088 5639464 1657056 5639384 +1751256 5699792 1604840 5714480 1604784 5714488 1760125 5760125 +1743888 5687504 1604840 5714480 1751256 5699792 1743976 5687584 +1604840 5714480 1743888 5687504 1604784 5714488 1760125 5760125 +1751256 5699792 1604840 5714480 1760125 5760125 1751376 5699848 +1604784 5714488 1599875 5760125 1760125 5760125 1604840 5714480 +1760125 5760125 1751256 5699792 1604840 5714480 1599875 5760125 +1604784 5714488 1599875 5760125 1604840 5714480 1743888 5687504 +1604784 5714488 1604840 5714480 1743888 5687504 1743800 5687320 +1604784 5714488 1599875 5760125 1604840 5714480 1743800 5687320 +1604840 5714480 1751256 5699792 1743888 5687504 1743800 5687320 +1604784 5714488 1604840 5714480 1743800 5687320 1663944 5646256 +1604784 5714488 1599875 5760125 1604840 5714480 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1604840 5714480 +1604840 5714480 1743888 5687504 1743800 5687320 1663944 5646256 +1751256 5699792 1743888 5687504 1604840 5714480 1760125 5760125 +1604784 5714488 1604840 5714480 1663944 5646256 1663880 5646248 +1604784 5714488 1604840 5714480 1663880 5646248 1663776 5646144 +1604784 5714488 1599875 5760125 1604840 5714480 1663776 5646144 +1604784 5714488 1604840 5714480 1663776 5646144 1657088 5639464 +1604840 5714480 1663880 5646248 1663776 5646144 1657088 5639464 +1604784 5714488 1599875 5760125 1604840 5714480 1657088 5639464 +1604840 5714480 1743800 5687320 1663944 5646256 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1604840 5714480 +1604840 5714480 1663944 5646256 1663880 5646248 1663776 5646144 +1604784 5714488 1599875 5599875 1599875 5760125 1604840 5714480 +1604784 5714488 1604840 5714480 1657088 5639464 1657056 5639384 +1604784 5714488 1599875 5760125 1604840 5714480 1657056 5639384 +1604840 5714480 1663776 5646144 1657088 5639464 1657056 5639384 +1604784 5714488 1604840 5714480 1657056 5639384 1599875 5599875 +1604784 5714488 1599875 5760125 1604840 5714480 1599875 5599875 +1604784 5714488 1604840 5714480 1599875 5599875 1599875 5760125 +1657056 5639384 1657088 5639296 1599875 5599875 1604840 5714480 +1604840 5714480 1657088 5639464 1657056 5639384 1599875 5599875 +1604840 5714480 1604944 5714528 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1604944 5714528 +1599875 5760125 1604944 5714528 1604840 5714480 1604784 5714488 +1599875 5760125 1760125 5760125 1604944 5714528 1604784 5714488 +1604840 5714480 1604944 5714528 1751256 5699792 1743888 5687504 +1604944 5714528 1760125 5760125 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1604944 5714528 +1604840 5714480 1604944 5714528 1743888 5687504 1743800 5687320 +1604840 5714480 1604944 5714528 1743800 5687320 1663944 5646256 +1604944 5714528 1743888 5687504 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1604944 5714528 +1604840 5714480 1604944 5714528 1663944 5646256 1663880 5646248 +1604944 5714528 1743800 5687320 1663944 5646256 1663880 5646248 +1604944 5714528 1751256 5699792 1743888 5687504 1743800 5687320 +1604840 5714480 1604784 5714488 1604944 5714528 1663880 5646248 +1604944 5714528 1599875 5760125 1760125 5760125 1751256 5699792 +1604840 5714480 1604944 5714528 1663880 5646248 1663776 5646144 +1604840 5714480 1604944 5714528 1663776 5646144 1657088 5639464 +1604840 5714480 1604944 5714528 1657088 5639464 1657056 5639384 +1604944 5714528 1663944 5646256 1663880 5646248 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1604944 5714528 +1604840 5714480 1604784 5714488 1604944 5714528 1657088 5639464 +1604944 5714528 1663880 5646248 1663776 5646144 1657088 5639464 +1599875 5760125 1604944 5714528 1604784 5714488 1599875 5599875 +1599875 5760125 1605040 5714624 1604944 5714528 1604784 5714488 +1604944 5714528 1604840 5714480 1604784 5714488 1605040 5714624 +1605040 5714624 1760125 5760125 1604944 5714528 1604784 5714488 +1599875 5760125 1760125 5760125 1605040 5714624 1604784 5714488 +1604944 5714528 1605040 5714624 1760125 5760125 1751256 5699792 +1604944 5714528 1605040 5714624 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1605040 5714624 +1760125 5760125 1751376 5699848 1751256 5699792 1605040 5714624 +1604944 5714528 1604784 5714488 1605040 5714624 1743888 5687504 +1605040 5714624 1599875 5760125 1760125 5760125 1751256 5699792 +1604944 5714528 1605040 5714624 1743888 5687504 1743800 5687320 +1605040 5714624 1751256 5699792 1743888 5687504 1743800 5687320 +1604944 5714528 1605040 5714624 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1605040 5714624 +1604944 5714528 1604784 5714488 1605040 5714624 1663944 5646256 +1604944 5714528 1605040 5714624 1663944 5646256 1663880 5646248 +1605040 5714624 1743800 5687320 1663944 5646256 1663880 5646248 +1604944 5714528 1604784 5714488 1605040 5714624 1663880 5646248 +1604944 5714528 1605040 5714624 1663880 5646248 1663776 5646144 +1605040 5714624 1743888 5687504 1743800 5687320 1663944 5646256 +1605040 5714624 1760125 5760125 1751256 5699792 1743888 5687504 +1599875 5760125 1605040 5714624 1604784 5714488 1599875 5599875 +1605040 5714624 1605128 5714784 1760125 5760125 1751256 5699792 +1605040 5714624 1599875 5760125 1605128 5714784 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1605128 5714784 +1599875 5760125 1605128 5714784 1605040 5714624 1604784 5714488 +1605128 5714784 1751256 5699792 1605040 5714624 1604784 5714488 +1605040 5714624 1604944 5714528 1604784 5714488 1605128 5714784 +1605128 5714784 1599875 5760125 1760125 5760125 1751256 5699792 +1605040 5714624 1605128 5714784 1751256 5699792 1743888 5687504 +1605040 5714624 1605128 5714784 1743888 5687504 1743800 5687320 +1605040 5714624 1604784 5714488 1605128 5714784 1743800 5687320 +1751256 5699792 1743976 5687584 1743888 5687504 1605128 5714784 +1605128 5714784 1760125 5760125 1751256 5699792 1743888 5687504 +1605040 5714624 1605128 5714784 1743800 5687320 1663944 5646256 +1605128 5714784 1743888 5687504 1743800 5687320 1663944 5646256 +1605040 5714624 1604784 5714488 1605128 5714784 1663944 5646256 +1605040 5714624 1605128 5714784 1663944 5646256 1663880 5646248 +1605040 5714624 1604784 5714488 1605128 5714784 1663880 5646248 +1743800 5687320 1664040 5646192 1663944 5646256 1605128 5714784 +1605040 5714624 1605128 5714784 1663880 5646248 1604944 5714528 +1605128 5714784 1743800 5687320 1663944 5646256 1663880 5646248 +1605128 5714784 1751256 5699792 1743888 5687504 1743800 5687320 +1599875 5760125 1760125 5760125 1605128 5714784 1604784 5714488 +1599875 5760125 1605128 5714784 1604784 5714488 1599875 5599875 +1605128 5714784 1605152 5714888 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1605152 5714888 +1605128 5714784 1605152 5714888 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1605152 5714888 +1605152 5714888 1760125 5760125 1751256 5699792 1743888 5687504 +1605128 5714784 1599875 5760125 1605152 5714888 1743888 5687504 +1605128 5714784 1605152 5714888 1743888 5687504 1743800 5687320 +1605128 5714784 1605152 5714888 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1605152 5714888 +1605152 5714888 1751256 5699792 1743888 5687504 1743800 5687320 +1605128 5714784 1605152 5714888 1663944 5646256 1663880 5646248 +1605128 5714784 1599875 5760125 1605152 5714888 1663944 5646256 +1605152 5714888 1743888 5687504 1743800 5687320 1663944 5646256 +1599875 5760125 1605152 5714888 1605128 5714784 1604784 5714488 +1605128 5714784 1605040 5714624 1604784 5714488 1605152 5714888 +1605152 5714888 1663944 5646256 1605128 5714784 1604784 5714488 +1605152 5714888 1599875 5760125 1760125 5760125 1751256 5699792 +1599875 5760125 1760125 5760125 1605152 5714888 1604784 5714488 +1599875 5760125 1605152 5714888 1604784 5714488 1599875 5599875 +1604784 5714488 1605136 5714928 1605152 5714888 1605128 5714784 +1604784 5714488 1605136 5714928 1605128 5714784 1605040 5714624 +1604784 5714488 1605136 5714928 1605040 5714624 1604944 5714528 +1604784 5714488 1599875 5760125 1605136 5714928 1605040 5714624 +1605136 5714928 1605152 5714888 1605128 5714784 1605040 5714624 +1605136 5714928 1599875 5760125 1605152 5714888 1605128 5714784 +1605152 5714888 1605136 5714928 1599875 5760125 1760125 5760125 +1605152 5714888 1605136 5714928 1760125 5760125 1751256 5699792 +1605152 5714888 1605128 5714784 1605136 5714928 1760125 5760125 +1605136 5714928 1604784 5714488 1599875 5760125 1760125 5760125 +1599875 5760125 1605136 5714928 1604784 5714488 1599875 5599875 +1605136 5714928 1605152 5714944 1760125 5760125 1605152 5714888 +1605152 5714944 1599875 5760125 1760125 5760125 1605152 5714888 +1760125 5760125 1751256 5699792 1605152 5714888 1605152 5714944 +1760125 5760125 1751376 5699848 1751256 5699792 1605152 5714944 +1751256 5699792 1743888 5687504 1605152 5714888 1605152 5714944 +1751256 5699792 1743976 5687584 1743888 5687504 1605152 5714944 +1743888 5687504 1743800 5687320 1605152 5714888 1605152 5714944 +1743888 5687504 1743800 5687320 1605152 5714944 1751256 5699792 +1743800 5687320 1663944 5646256 1605152 5714888 1605152 5714944 +1663944 5646256 1605128 5714784 1605152 5714888 1605152 5714944 +1743800 5687320 1664040 5646192 1663944 5646256 1605152 5714944 +1743800 5687320 1663944 5646256 1605152 5714944 1743888 5687504 +1760125 5760125 1751256 5699792 1605152 5714944 1599875 5760125 +1751256 5699792 1743888 5687504 1605152 5714944 1760125 5760125 +1605152 5714888 1605136 5714928 1605152 5714944 1663944 5646256 +1599875 5760125 1605152 5714944 1605136 5714928 1604784 5714488 +1605136 5714928 1599875 5760125 1605152 5714944 1605152 5714888 +1604784 5714488 1605064 5714952 1605136 5714928 1605040 5714624 +1604784 5714488 1599875 5760125 1605064 5714952 1605040 5714624 +1605064 5714952 1599875 5760125 1605136 5714928 1605040 5714624 +1604784 5714488 1605064 5714952 1605040 5714624 1604944 5714528 +1605136 5714928 1605128 5714784 1605040 5714624 1605064 5714952 +1605136 5714928 1605128 5714784 1605064 5714952 1599875 5760125 +1605040 5714624 1604784 5714488 1605064 5714952 1605128 5714784 +1605136 5714928 1605152 5714888 1605128 5714784 1605064 5714952 +1605136 5714928 1605152 5714888 1605064 5714952 1599875 5760125 +1605128 5714784 1605040 5714624 1605064 5714952 1605152 5714888 +1605136 5714928 1605064 5714952 1599875 5760125 1605152 5714944 +1599875 5760125 1760125 5760125 1605152 5714944 1605064 5714952 +1605136 5714928 1605152 5714888 1605064 5714952 1605152 5714944 +1605064 5714952 1604784 5714488 1599875 5760125 1605152 5714944 +1599875 5760125 1605064 5714952 1604784 5714488 1599875 5599875 +1604784 5714488 1604928 5714896 1605064 5714952 1605040 5714624 +1604784 5714488 1599875 5760125 1604928 5714896 1605040 5714624 +1604928 5714896 1599875 5760125 1605064 5714952 1605040 5714624 +1604784 5714488 1604928 5714896 1605040 5714624 1604944 5714528 +1604784 5714488 1599875 5760125 1604928 5714896 1604944 5714528 +1604928 5714896 1605064 5714952 1605040 5714624 1604944 5714528 +1604784 5714488 1604928 5714896 1604944 5714528 1604840 5714480 +1605064 5714952 1605128 5714784 1605040 5714624 1604928 5714896 +1605040 5714624 1604944 5714528 1604928 5714896 1605128 5714784 +1605064 5714952 1605128 5714784 1604928 5714896 1599875 5760125 +1605064 5714952 1605152 5714888 1605128 5714784 1604928 5714896 +1605064 5714952 1604928 5714896 1599875 5760125 1605152 5714944 +1599875 5760125 1604928 5714896 1604784 5714488 1599875 5599875 +1604784 5714488 1604832 5714824 1604928 5714896 1604944 5714528 +1604784 5714488 1604832 5714824 1604944 5714528 1604840 5714480 +1604928 5714896 1604832 5714824 1599875 5760125 1605064 5714952 +1604832 5714824 1599875 5760125 1604928 5714896 1604944 5714528 +1604784 5714488 1599875 5760125 1604832 5714824 1604944 5714528 +1604928 5714896 1605040 5714624 1604944 5714528 1604832 5714824 +1604944 5714528 1604784 5714488 1604832 5714824 1605040 5714624 +1604928 5714896 1605128 5714784 1605040 5714624 1604832 5714824 +1604928 5714896 1605040 5714624 1604832 5714824 1599875 5760125 +1599875 5760125 1604832 5714824 1604784 5714488 1599875 5599875 +1604784 5714488 1604712 5714680 1599875 5760125 1604832 5714824 +1599875 5760125 1604928 5714896 1604832 5714824 1604712 5714680 +1604712 5714680 1599875 5599875 1599875 5760125 1604832 5714824 +1604784 5714488 1604712 5714680 1604832 5714824 1604944 5714528 +1604832 5714824 1605040 5714624 1604944 5714528 1604712 5714680 +1604784 5714488 1604712 5714680 1604944 5714528 1604840 5714480 +1604712 5714680 1604832 5714824 1604944 5714528 1604840 5714480 +1604784 5714488 1599875 5599875 1604712 5714680 1604840 5714480 +1604712 5714680 1599875 5760125 1604832 5714824 1604944 5714528 +1599875 5599875 1604712 5714680 1604784 5714488 1604840 5714480 +1604712 5714680 1604696 5714600 1599875 5760125 1604832 5714824 +1599875 5599875 1604696 5714600 1604712 5714680 1604784 5714488 +1604696 5714600 1599875 5760125 1604712 5714680 1604784 5714488 +1604712 5714680 1604840 5714480 1604784 5714488 1604696 5714600 +1599875 5599875 1599875 5760125 1604696 5714600 1604784 5714488 +1599875 5599875 1604696 5714600 1604784 5714488 1604840 5714480 +1604784 5714488 1604704 5714560 1604696 5714600 1604712 5714680 +1604696 5714600 1604704 5714560 1599875 5599875 1599875 5760125 +1599875 5599875 1604704 5714560 1604784 5714488 1604840 5714480 +1604784 5714488 1604744 5714504 1604704 5714560 1604696 5714600 +1604704 5714560 1604744 5714504 1599875 5599875 1604696 5714600 +1599875 5599875 1604744 5714504 1604784 5714488 1604840 5714480 +1599875 5760125 1619904 5752368 1605152 5714944 1605064 5714952 +1599875 5760125 1760125 5760125 1619904 5752368 1605064 5714952 +1619904 5752368 1760125 5760125 1605152 5714944 1605064 5714952 +1605152 5714944 1619904 5752368 1760125 5760125 1751256 5699792 +1619904 5752368 1599875 5760125 1760125 5760125 1751256 5699792 +1605152 5714944 1605064 5714952 1619904 5752368 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1619904 5752368 +1599875 5760125 1619904 5752368 1605064 5714952 1604928 5714896 +1605152 5714944 1619904 5752368 1751256 5699792 1743888 5687504 +1605152 5714944 1605064 5714952 1619904 5752368 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1619904 5752368 +1605152 5714944 1619904 5752368 1743888 5687504 1743800 5687320 +1605152 5714944 1605064 5714952 1619904 5752368 1743800 5687320 +1605152 5714944 1619904 5752368 1743800 5687320 1663944 5646256 +1605152 5714944 1605064 5714952 1619904 5752368 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1619904 5752368 +1619904 5752368 1743888 5687504 1743800 5687320 1663944 5646256 +1605152 5714944 1619904 5752368 1663944 5646256 1605152 5714888 +1605152 5714944 1605064 5714952 1619904 5752368 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1619904 5752368 +1619904 5752368 1743800 5687320 1663944 5646256 1605152 5714888 +1619904 5752368 1760125 5760125 1751256 5699792 1743888 5687504 +1619904 5752368 1751256 5699792 1743888 5687504 1743800 5687320 +1605152 5714944 1619904 5752368 1605152 5714888 1605136 5714928 +1663944 5646256 1619936 5752328 1743800 5687320 1664040 5646192 +1619904 5752368 1619936 5752328 1663944 5646256 1605152 5714888 +1619904 5752368 1743800 5687320 1619936 5752328 1605152 5714888 +1619936 5752328 1743800 5687320 1663944 5646256 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1619936 5752328 +1743800 5687320 1619936 5752328 1619904 5752368 1743888 5687504 +1619936 5752328 1605152 5714888 1619904 5752368 1743888 5687504 +1743800 5687320 1663944 5646256 1619936 5752328 1743888 5687504 +1619904 5752368 1619936 5752328 1605152 5714888 1605152 5714944 +1619904 5752368 1743888 5687504 1619936 5752328 1605152 5714944 +1619904 5752368 1619936 5752328 1605152 5714944 1605064 5714952 +1619904 5752368 1743888 5687504 1619936 5752328 1605064 5714952 +1619904 5752368 1619936 5752328 1605064 5714952 1599875 5760125 +1619904 5752368 1619936 5752328 1599875 5760125 1760125 5760125 +1619904 5752368 1743888 5687504 1619936 5752328 1599875 5760125 +1619936 5752328 1605152 5714944 1605064 5714952 1599875 5760125 +1619936 5752328 1663944 5646256 1605152 5714888 1605152 5714944 +1619936 5752328 1605152 5714888 1605152 5714944 1605064 5714952 +1605064 5714952 1604928 5714896 1599875 5760125 1619936 5752328 +1619904 5752368 1751256 5699792 1743888 5687504 1619936 5752328 +1619904 5752368 1751256 5699792 1619936 5752328 1599875 5760125 +1751256 5699792 1743976 5687584 1743888 5687504 1619936 5752328 +1743888 5687504 1743800 5687320 1619936 5752328 1751256 5699792 +1619904 5752368 1760125 5760125 1751256 5699792 1619936 5752328 +1619904 5752368 1599875 5760125 1760125 5760125 1619936 5752328 +1619904 5752368 1760125 5760125 1619936 5752328 1599875 5760125 +1760125 5760125 1751376 5699848 1751256 5699792 1619936 5752328 +1751256 5699792 1743888 5687504 1619936 5752328 1760125 5760125 +1605152 5714888 1605136 5714928 1605152 5714944 1619936 5752328 +1619936 5752328 1619984 5752296 1663944 5646256 1605152 5714888 +1619936 5752328 1743800 5687320 1619984 5752296 1605152 5714888 +1743800 5687320 1619984 5752296 1619936 5752328 1743888 5687504 +1619984 5752296 1605152 5714888 1619936 5752328 1743888 5687504 +1619984 5752296 1743800 5687320 1663944 5646256 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1619984 5752296 +1663944 5646256 1619984 5752296 1743800 5687320 1664040 5646192 +1619936 5752328 1619984 5752296 1605152 5714888 1605152 5714944 +1619984 5752296 1663944 5646256 1605152 5714888 1605152 5714944 +1619936 5752328 1743888 5687504 1619984 5752296 1605152 5714944 +1743800 5687320 1663944 5646256 1619984 5752296 1743888 5687504 +1619936 5752328 1751256 5699792 1743888 5687504 1619984 5752296 +1619936 5752328 1751256 5699792 1619984 5752296 1605152 5714944 +1743888 5687504 1743800 5687320 1619984 5752296 1751256 5699792 +1751256 5699792 1743976 5687584 1743888 5687504 1619984 5752296 +1619936 5752328 1619984 5752296 1605152 5714944 1605064 5714952 +1619936 5752328 1760125 5760125 1751256 5699792 1619984 5752296 +1619936 5752328 1760125 5760125 1619984 5752296 1605152 5714944 +1760125 5760125 1751376 5699848 1751256 5699792 1619984 5752296 +1751256 5699792 1743888 5687504 1619984 5752296 1760125 5760125 +1619936 5752328 1619904 5752368 1760125 5760125 1619984 5752296 +1619904 5752368 1599875 5760125 1760125 5760125 1619984 5752296 +1619936 5752328 1619904 5752368 1619984 5752296 1605152 5714944 +1760125 5760125 1751256 5699792 1619984 5752296 1619904 5752368 +1605152 5714888 1605136 5714928 1605152 5714944 1619984 5752296 +1751256 5699792 1620032 5752288 1760125 5760125 1751376 5699848 +1619984 5752296 1620032 5752288 1751256 5699792 1743888 5687504 +1619984 5752296 1620032 5752288 1743888 5687504 1743800 5687320 +1751256 5699792 1743976 5687584 1743888 5687504 1620032 5752288 +1620032 5752288 1760125 5760125 1751256 5699792 1743888 5687504 +1619984 5752296 1760125 5760125 1620032 5752288 1743800 5687320 +1619984 5752296 1620032 5752288 1743800 5687320 1663944 5646256 +1620032 5752288 1743888 5687504 1743800 5687320 1663944 5646256 +1619984 5752296 1620032 5752288 1663944 5646256 1605152 5714888 +1619984 5752296 1620032 5752288 1605152 5714888 1605152 5714944 +1620032 5752288 1663944 5646256 1605152 5714888 1605152 5714944 +1663944 5646256 1605128 5714784 1605152 5714888 1620032 5752288 +1743800 5687320 1664040 5646192 1663944 5646256 1620032 5752288 +1619984 5752296 1620032 5752288 1605152 5714944 1619936 5752328 +1619984 5752296 1760125 5760125 1620032 5752288 1605152 5714944 +1620032 5752288 1743800 5687320 1663944 5646256 1605152 5714888 +1620032 5752288 1751256 5699792 1743888 5687504 1743800 5687320 +1760125 5760125 1620032 5752288 1619984 5752296 1619904 5752368 +1760125 5760125 1620032 5752288 1619904 5752368 1599875 5760125 +1620032 5752288 1605152 5714944 1619984 5752296 1619904 5752368 +1760125 5760125 1751256 5699792 1620032 5752288 1619904 5752368 +1619984 5752296 1619936 5752328 1619904 5752368 1620032 5752288 +1619984 5752296 1619936 5752328 1620032 5752288 1605152 5714944 +1619904 5752368 1760125 5760125 1620032 5752288 1619936 5752328 +1605152 5714888 1605136 5714928 1605152 5714944 1620032 5752288 +1760125 5760125 1620064 5752296 1619904 5752368 1599875 5760125 +1620032 5752288 1620064 5752296 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1620064 5752296 +1620032 5752288 1620064 5752296 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1620064 5752296 +1620032 5752288 1619904 5752368 1620064 5752296 1743888 5687504 +1620064 5752296 1760125 5760125 1751256 5699792 1743888 5687504 +1620064 5752296 1619904 5752368 1760125 5760125 1751256 5699792 +1620032 5752288 1620064 5752296 1743888 5687504 1743800 5687320 +1620032 5752288 1620064 5752296 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1620064 5752296 +1620064 5752296 1751256 5699792 1743888 5687504 1743800 5687320 +1620032 5752288 1619904 5752368 1620064 5752296 1663944 5646256 +1620032 5752288 1620064 5752296 1663944 5646256 1605152 5714888 +1620064 5752296 1743800 5687320 1663944 5646256 1605152 5714888 +1620032 5752288 1620064 5752296 1605152 5714888 1605152 5714944 +1620032 5752288 1620064 5752296 1605152 5714944 1619984 5752296 +1663944 5646256 1605128 5714784 1605152 5714888 1620064 5752296 +1620032 5752288 1619904 5752368 1620064 5752296 1605152 5714944 +1620064 5752296 1663944 5646256 1605152 5714888 1605152 5714944 +1620064 5752296 1743888 5687504 1743800 5687320 1663944 5646256 +1619904 5752368 1620064 5752296 1620032 5752288 1619936 5752328 +1620064 5752296 1605152 5714944 1620032 5752288 1619936 5752328 +1619904 5752368 1760125 5760125 1620064 5752296 1619936 5752328 +1620032 5752288 1619984 5752296 1619936 5752328 1620064 5752296 +1620032 5752288 1619984 5752296 1620064 5752296 1605152 5714944 +1619936 5752328 1619904 5752368 1620064 5752296 1619984 5752296 +1605152 5714888 1605136 5714928 1605152 5714944 1620064 5752296 +1760125 5760125 1620152 5752352 1619904 5752368 1599875 5760125 +1619904 5752368 1619936 5752328 1599875 5760125 1620152 5752352 +1620152 5752352 1620064 5752296 1619904 5752368 1599875 5760125 +1620064 5752296 1620152 5752352 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1620152 5752352 +1620064 5752296 1620152 5752352 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1620152 5752352 +1620064 5752296 1620152 5752352 1743888 5687504 1743800 5687320 +1620152 5752352 1751256 5699792 1743888 5687504 1743800 5687320 +1620152 5752352 1760125 5760125 1751256 5699792 1743888 5687504 +1620064 5752296 1619904 5752368 1620152 5752352 1743800 5687320 +1619904 5752368 1620152 5752352 1620064 5752296 1619936 5752328 +1760125 5760125 1751256 5699792 1620152 5752352 1599875 5760125 +1620064 5752296 1620152 5752352 1743800 5687320 1663944 5646256 +1620064 5752296 1620152 5752352 1663944 5646256 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1620152 5752352 +1743800 5687320 1664040 5646192 1663944 5646256 1620152 5752352 +1620152 5752352 1743888 5687504 1743800 5687320 1663944 5646256 +1620064 5752296 1620152 5752352 1605152 5714888 1605152 5714944 +1620152 5752352 1663944 5646256 1605152 5714888 1605152 5714944 +1620064 5752296 1620152 5752352 1605152 5714944 1620032 5752288 +1620064 5752296 1619904 5752368 1620152 5752352 1605152 5714944 +1620152 5752352 1743800 5687320 1663944 5646256 1605152 5714888 +1605152 5714888 1605136 5714928 1605152 5714944 1620152 5752352 +1599875 5760125 1620192 5752400 1620152 5752352 1619904 5752368 +1599875 5760125 1620192 5752400 1619904 5752368 1619936 5752328 +1620192 5752400 1760125 5760125 1620152 5752352 1619904 5752368 +1620152 5752352 1620064 5752296 1619904 5752368 1620192 5752400 +1599875 5760125 1760125 5760125 1620192 5752400 1619904 5752368 +1620152 5752352 1620192 5752400 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1620192 5752400 +1620152 5752352 1619904 5752368 1620192 5752400 1751256 5699792 +1620192 5752400 1599875 5760125 1760125 5760125 1751256 5699792 +1620152 5752352 1620192 5752400 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1620192 5752400 +1620152 5752352 1619904 5752368 1620192 5752400 1743888 5687504 +1620152 5752352 1620192 5752400 1743888 5687504 1743800 5687320 +1620152 5752352 1619904 5752368 1620192 5752400 1743800 5687320 +1620152 5752352 1620192 5752400 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1620192 5752400 +1620152 5752352 1619904 5752368 1620192 5752400 1663944 5646256 +1620192 5752400 1743888 5687504 1743800 5687320 1663944 5646256 +1620192 5752400 1751256 5699792 1743888 5687504 1743800 5687320 +1620192 5752400 1760125 5760125 1751256 5699792 1743888 5687504 +1620152 5752352 1620192 5752400 1663944 5646256 1605152 5714888 +1599875 5760125 1620224 5752472 1620192 5752400 1619904 5752368 +1620192 5752400 1620152 5752352 1619904 5752368 1620224 5752472 +1599875 5760125 1620224 5752472 1619904 5752368 1619936 5752328 +1599875 5760125 1760125 5760125 1620224 5752472 1619904 5752368 +1620224 5752472 1760125 5760125 1620192 5752400 1619904 5752368 +1620192 5752400 1620224 5752472 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1620224 5752472 +1620192 5752400 1619904 5752368 1620224 5752472 1751256 5699792 +1620224 5752472 1599875 5760125 1760125 5760125 1751256 5699792 +1620192 5752400 1620224 5752472 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1620224 5752472 +1620192 5752400 1619904 5752368 1620224 5752472 1743888 5687504 +1620224 5752472 1760125 5760125 1751256 5699792 1743888 5687504 +1620192 5752400 1620224 5752472 1743888 5687504 1743800 5687320 +1599875 5760125 1620224 5752520 1620224 5752472 1619904 5752368 +1599875 5760125 1620224 5752520 1619904 5752368 1619936 5752328 +1599875 5760125 1760125 5760125 1620224 5752520 1619904 5752368 +1620224 5752472 1620192 5752400 1619904 5752368 1620224 5752520 +1620192 5752400 1620152 5752352 1619904 5752368 1620224 5752520 +1620224 5752520 1760125 5760125 1620224 5752472 1620192 5752400 +1619904 5752368 1599875 5760125 1620224 5752520 1620192 5752400 +1620224 5752472 1620224 5752520 1760125 5760125 1751256 5699792 +1599875 5760125 1620152 5752552 1620224 5752520 1619904 5752368 +1599875 5760125 1620152 5752552 1619904 5752368 1619936 5752328 +1620152 5752552 1760125 5760125 1620224 5752520 1619904 5752368 +1620224 5752520 1620192 5752400 1619904 5752368 1620152 5752552 +1620192 5752400 1620152 5752352 1619904 5752368 1620152 5752552 +1620224 5752520 1620192 5752400 1620152 5752552 1760125 5760125 +1619904 5752368 1599875 5760125 1620152 5752552 1620152 5752352 +1620152 5752352 1620064 5752296 1619904 5752368 1620152 5752552 +1620224 5752520 1620224 5752472 1620192 5752400 1620152 5752552 +1620224 5752520 1620224 5752472 1620152 5752552 1760125 5760125 +1620192 5752400 1620152 5752352 1620152 5752552 1620224 5752472 +1620224 5752520 1620152 5752552 1760125 5760125 1620224 5752472 +1599875 5760125 1760125 5760125 1620152 5752552 1619904 5752368 +1599875 5760125 1620096 5752560 1619904 5752368 1619936 5752328 +1619904 5752368 1620096 5752560 1620152 5752552 1620152 5752352 +1620152 5752552 1620192 5752400 1620152 5752352 1620096 5752560 +1620152 5752352 1619904 5752368 1620096 5752560 1620192 5752400 +1619904 5752368 1620096 5752560 1620152 5752352 1620064 5752296 +1620096 5752560 1620192 5752400 1620152 5752352 1620064 5752296 +1620152 5752552 1620224 5752472 1620192 5752400 1620096 5752560 +1619904 5752368 1620096 5752560 1620064 5752296 1619936 5752328 +1620096 5752560 1620152 5752352 1620064 5752296 1619936 5752328 +1620096 5752560 1599875 5760125 1620152 5752552 1620192 5752400 +1620152 5752552 1620096 5752560 1599875 5760125 1760125 5760125 +1619904 5752368 1599875 5760125 1620096 5752560 1619936 5752328 +1620064 5752296 1619984 5752296 1619936 5752328 1620096 5752560 +1599875 5760125 1620064 5752536 1619904 5752368 1619936 5752328 +1620096 5752560 1620064 5752536 1599875 5760125 1620152 5752552 +1619904 5752368 1620064 5752536 1620096 5752560 1619936 5752328 +1619904 5752368 1599875 5760125 1620064 5752536 1619936 5752328 +1620096 5752560 1620064 5752296 1619936 5752328 1620064 5752536 +1620096 5752560 1620152 5752352 1620064 5752296 1620064 5752536 +1620096 5752560 1620192 5752400 1620152 5752352 1620064 5752536 +1620096 5752560 1620152 5752552 1620192 5752400 1620064 5752536 +1620192 5752400 1620152 5752352 1620064 5752536 1620152 5752552 +1620152 5752352 1620064 5752296 1620064 5752536 1620192 5752400 +1620152 5752552 1620224 5752472 1620192 5752400 1620064 5752536 +1620064 5752296 1619936 5752328 1620064 5752536 1620152 5752352 +1620064 5752536 1599875 5760125 1620096 5752560 1620152 5752552 +1619936 5752328 1619904 5752368 1620064 5752536 1620064 5752296 +1620064 5752296 1619984 5752296 1619936 5752328 1620064 5752536 +1599875 5760125 1620000 5752512 1619904 5752368 1619936 5752328 +1619904 5752368 1620000 5752512 1620064 5752536 1619936 5752328 +1620000 5752512 1599875 5760125 1620064 5752536 1619936 5752328 +1619904 5752368 1599875 5760125 1620000 5752512 1619936 5752328 +1620064 5752536 1620064 5752296 1619936 5752328 1620000 5752512 +1620064 5752536 1620064 5752296 1620000 5752512 1599875 5760125 +1619936 5752328 1619904 5752368 1620000 5752512 1620064 5752296 +1620064 5752536 1620152 5752352 1620064 5752296 1620000 5752512 +1620064 5752536 1620192 5752400 1620152 5752352 1620000 5752512 +1620064 5752536 1620152 5752352 1620000 5752512 1599875 5760125 +1620064 5752296 1619936 5752328 1620000 5752512 1620152 5752352 +1620064 5752536 1620000 5752512 1599875 5760125 1620096 5752560 +1620064 5752536 1620152 5752352 1620000 5752512 1620096 5752560 +1620000 5752512 1619904 5752368 1599875 5760125 1620096 5752560 +1599875 5760125 1620152 5752552 1620096 5752560 1620000 5752512 +1620064 5752296 1619984 5752296 1619936 5752328 1620000 5752512 +1619936 5752328 1619904 5752368 1620000 5752512 1619984 5752296 +1620064 5752296 1620032 5752288 1619984 5752296 1620000 5752512 +1620064 5752296 1619984 5752296 1620000 5752512 1620152 5752352 +1599875 5760125 1619976 5752504 1619904 5752368 1619936 5752328 +1620000 5752512 1619976 5752504 1599875 5760125 1620096 5752560 +1619976 5752504 1619904 5752368 1599875 5760125 1620096 5752560 +1620000 5752512 1619904 5752368 1619976 5752504 1620096 5752560 +1619904 5752368 1619976 5752504 1620000 5752512 1619936 5752328 +1620000 5752512 1619984 5752296 1619936 5752328 1619976 5752504 +1619904 5752368 1599875 5760125 1619976 5752504 1619936 5752328 +1619976 5752504 1620096 5752560 1620000 5752512 1619984 5752296 +1619936 5752328 1619904 5752368 1619976 5752504 1619984 5752296 +1599875 5760125 1620152 5752552 1620096 5752560 1619976 5752504 +1620000 5752512 1619976 5752504 1620096 5752560 1620064 5752536 +1620000 5752512 1620064 5752296 1619984 5752296 1619976 5752504 +1599875 5760125 1619944 5752464 1619904 5752368 1619936 5752328 +1619976 5752504 1619944 5752464 1599875 5760125 1620096 5752560 +1619904 5752368 1619944 5752464 1619976 5752504 1619936 5752328 +1619944 5752464 1599875 5760125 1619976 5752504 1619936 5752328 +1619976 5752504 1619984 5752296 1619936 5752328 1619944 5752464 +1619976 5752504 1620000 5752512 1619984 5752296 1619944 5752464 +1619976 5752504 1620000 5752512 1619944 5752464 1599875 5760125 +1619936 5752328 1619904 5752368 1619944 5752464 1619984 5752296 +1619984 5752296 1619936 5752328 1619944 5752464 1620000 5752512 +1619904 5752368 1599875 5760125 1619944 5752464 1619936 5752328 +1620000 5752512 1620064 5752296 1619984 5752296 1619944 5752464 +1620000 5752512 1620064 5752296 1619944 5752464 1619976 5752504 +1619984 5752296 1619936 5752328 1619944 5752464 1620064 5752296 +1620064 5752296 1620032 5752288 1619984 5752296 1619944 5752464 +1620000 5752512 1620152 5752352 1620064 5752296 1619944 5752464 +1599875 5760125 1619904 5752400 1619904 5752368 1619936 5752328 +1619944 5752464 1619904 5752400 1599875 5760125 1619976 5752504 +1619904 5752368 1619904 5752400 1619944 5752464 1619936 5752328 +1619944 5752464 1619984 5752296 1619936 5752328 1619904 5752400 +1619904 5752400 1599875 5760125 1619944 5752464 1619936 5752328 +1619904 5752368 1599875 5760125 1619904 5752400 1619936 5752328 +1605064 5714952 1613040 5747384 1619936 5752328 1605152 5714944 +1619936 5752328 1613040 5747384 1599875 5760125 1619904 5752368 +1599875 5760125 1619904 5752400 1619904 5752368 1613040 5747384 +1619904 5752368 1619936 5752328 1613040 5747384 1619904 5752400 +1599875 5760125 1619944 5752464 1619904 5752400 1613040 5747384 +1613040 5747384 1605064 5714952 1599875 5760125 1619904 5752400 +1605064 5714952 1599875 5760125 1613040 5747384 1605152 5714944 +1613040 5747384 1619904 5752368 1619936 5752328 1605152 5714944 +1619936 5752328 1619984 5752296 1605152 5714944 1613040 5747384 +1605152 5714944 1605064 5714952 1613040 5747384 1619984 5752296 +1619984 5752296 1620032 5752288 1605152 5714944 1613040 5747384 +1605152 5714944 1605064 5714952 1613040 5747384 1620032 5752288 +1620032 5752288 1620064 5752296 1605152 5714944 1613040 5747384 +1605152 5714944 1605064 5714952 1613040 5747384 1620064 5752296 +1620064 5752296 1620152 5752352 1605152 5714944 1613040 5747384 +1620032 5752288 1620064 5752296 1613040 5747384 1619984 5752296 +1619936 5752328 1619984 5752296 1613040 5747384 1619904 5752368 +1619984 5752296 1620032 5752288 1613040 5747384 1619936 5752328 +1599875 5760125 1613040 5747384 1605064 5714952 1604928 5714896 +1599875 5760125 1613040 5747384 1604928 5714896 1604832 5714824 +1599875 5760125 1619904 5752400 1613040 5747384 1604928 5714896 +1613040 5747384 1605152 5714944 1605064 5714952 1604928 5714896 +1599875 5760125 1612824 5747312 1604928 5714896 1604832 5714824 +1599875 5760125 1612824 5747312 1604832 5714824 1604712 5714680 +1613040 5747384 1612824 5747312 1599875 5760125 1619904 5752400 +1612824 5747312 1613040 5747384 1604928 5714896 1604832 5714824 +1599875 5760125 1613040 5747384 1612824 5747312 1604832 5714824 +1604928 5714896 1612824 5747312 1613040 5747384 1605064 5714952 +1613040 5747384 1605152 5714944 1605064 5714952 1612824 5747312 +1613040 5747384 1620064 5752296 1605152 5714944 1612824 5747312 +1612824 5747312 1599875 5760125 1613040 5747384 1605152 5714944 +1604928 5714896 1604832 5714824 1612824 5747312 1605064 5714952 +1605064 5714952 1604928 5714896 1612824 5747312 1605152 5714944 +1599875 5760125 1612688 5747224 1604832 5714824 1604712 5714680 +1604832 5714824 1612688 5747224 1612824 5747312 1604928 5714896 +1604832 5714824 1599875 5760125 1612688 5747224 1604928 5714896 +1612688 5747224 1599875 5760125 1612824 5747312 1604928 5714896 +1612824 5747312 1605064 5714952 1604928 5714896 1612688 5747224 +1604928 5714896 1604832 5714824 1612688 5747224 1605064 5714952 +1612824 5747312 1605064 5714952 1612688 5747224 1599875 5760125 +1612824 5747312 1612688 5747224 1599875 5760125 1613040 5747384 +1612824 5747312 1605152 5714944 1605064 5714952 1612688 5747224 +1612824 5747312 1613040 5747384 1605152 5714944 1612688 5747224 +1613040 5747384 1620064 5752296 1605152 5714944 1612688 5747224 +1612824 5747312 1613040 5747384 1612688 5747224 1599875 5760125 +1605064 5714952 1604928 5714896 1612688 5747224 1605152 5714944 +1605152 5714944 1605064 5714952 1612688 5747224 1613040 5747384 +1599875 5760125 1612592 5747096 1604832 5714824 1604712 5714680 +1604832 5714824 1612592 5747096 1612688 5747224 1604928 5714896 +1612688 5747224 1605064 5714952 1604928 5714896 1612592 5747096 +1612592 5747096 1599875 5760125 1612688 5747224 1605064 5714952 +1604928 5714896 1604832 5714824 1612592 5747096 1605064 5714952 +1604832 5714824 1599875 5760125 1612592 5747096 1604928 5714896 +1612688 5747224 1605152 5714944 1605064 5714952 1612592 5747096 +1605064 5714952 1604928 5714896 1612592 5747096 1605152 5714944 +1612688 5747224 1605152 5714944 1612592 5747096 1599875 5760125 +1612688 5747224 1612592 5747096 1599875 5760125 1612824 5747312 +1612688 5747224 1613040 5747384 1605152 5714944 1612592 5747096 +1613040 5747384 1620064 5752296 1605152 5714944 1612592 5747096 +1612688 5747224 1613040 5747384 1612592 5747096 1599875 5760125 +1612688 5747224 1612824 5747312 1613040 5747384 1612592 5747096 +1612688 5747224 1612824 5747312 1612592 5747096 1599875 5760125 +1605152 5714944 1605064 5714952 1612592 5747096 1613040 5747384 +1613040 5747384 1605152 5714944 1612592 5747096 1612824 5747312 +1599875 5760125 1612472 5746880 1604832 5714824 1604712 5714680 +1612592 5747096 1612472 5746880 1599875 5760125 1612688 5747224 +1604832 5714824 1612472 5746880 1612592 5747096 1604928 5714896 +1612592 5747096 1605064 5714952 1604928 5714896 1612472 5746880 +1612592 5747096 1605152 5714944 1605064 5714952 1612472 5746880 +1605064 5714952 1604928 5714896 1612472 5746880 1605152 5714944 +1612472 5746880 1599875 5760125 1612592 5747096 1605152 5714944 +1604928 5714896 1604832 5714824 1612472 5746880 1605064 5714952 +1604832 5714824 1599875 5760125 1612472 5746880 1604928 5714896 +1612592 5747096 1613040 5747384 1605152 5714944 1612472 5746880 +1613040 5747384 1620064 5752296 1605152 5714944 1612472 5746880 +1605152 5714944 1605064 5714952 1612472 5746880 1613040 5747384 +1612592 5747096 1613040 5747384 1612472 5746880 1599875 5760125 +1612592 5747096 1612824 5747312 1613040 5747384 1612472 5746880 +1599875 5760125 1612440 5746864 1604832 5714824 1604712 5714680 +1604832 5714824 1612440 5746864 1612472 5746880 1604928 5714896 +1612472 5746880 1605064 5714952 1604928 5714896 1612440 5746864 +1612472 5746880 1605152 5714944 1605064 5714952 1612440 5746864 +1612472 5746880 1613040 5747384 1605152 5714944 1612440 5746864 +1605064 5714952 1604928 5714896 1612440 5746864 1605152 5714944 +1604928 5714896 1604832 5714824 1612440 5746864 1605064 5714952 +1612472 5746880 1612440 5746864 1599875 5760125 1612592 5747096 +1612440 5746864 1604832 5714824 1599875 5760125 1612592 5747096 +1599875 5760125 1612688 5747224 1612592 5747096 1612440 5746864 +1612440 5746864 1612592 5747096 1612472 5746880 1605152 5714944 +1604832 5714824 1599875 5760125 1612440 5746864 1604928 5714896 +1605152 5714944 1612464 5746776 1613040 5747384 1620064 5752296 +1613040 5747384 1620032 5752288 1620064 5752296 1612464 5746776 +1605152 5714944 1612464 5746776 1620064 5752296 1620152 5752352 +1612472 5746880 1612464 5746776 1605152 5714944 1612440 5746864 +1605152 5714944 1612440 5746864 1612464 5746776 1620064 5752296 +1605152 5714944 1605064 5714952 1612440 5746864 1612464 5746776 +1612440 5746864 1612472 5746880 1612464 5746776 1605064 5714952 +1605152 5714944 1605064 5714952 1612464 5746776 1620064 5752296 +1612464 5746776 1612472 5746880 1613040 5747384 1620064 5752296 +1605064 5714952 1604928 5714896 1612440 5746864 1612464 5746776 +1612440 5746864 1612472 5746880 1612464 5746776 1604928 5714896 +1605064 5714952 1604928 5714896 1612464 5746776 1605152 5714944 +1604928 5714896 1604832 5714824 1612440 5746864 1612464 5746776 +1612440 5746864 1612472 5746880 1612464 5746776 1604832 5714824 +1604928 5714896 1604832 5714824 1612464 5746776 1605064 5714952 +1613040 5747384 1612464 5746776 1612472 5746880 1612592 5747096 +1613040 5747384 1620064 5752296 1612464 5746776 1612592 5747096 +1612472 5746880 1612592 5747096 1612464 5746776 1612440 5746864 +1613040 5747384 1612464 5746776 1612592 5747096 1612824 5747312 +1604832 5714824 1599875 5760125 1612440 5746864 1612464 5746776 +1599875 5760125 1612592 5747096 1612440 5746864 1612464 5746776 +1604832 5714824 1604712 5714680 1599875 5760125 1612464 5746776 +1612440 5746864 1612472 5746880 1612464 5746776 1599875 5760125 +1604832 5714824 1599875 5760125 1612464 5746776 1604928 5714896 +1620064 5752296 1612512 5746760 1612464 5746776 1613040 5747384 +1620064 5752296 1612512 5746760 1613040 5747384 1620032 5752288 +1605152 5714944 1612512 5746760 1620064 5752296 1620152 5752352 +1612512 5746760 1605152 5714944 1612464 5746776 1613040 5747384 +1620064 5752296 1605152 5714944 1612512 5746760 1613040 5747384 +1612464 5746776 1612512 5746760 1605152 5714944 1605064 5714952 +1612464 5746776 1612592 5747096 1613040 5747384 1612512 5746760 +1613040 5747384 1620064 5752296 1612512 5746760 1612592 5747096 +1612464 5746776 1612592 5747096 1612512 5746760 1605152 5714944 +1612464 5746776 1612472 5746880 1612592 5747096 1612512 5746760 +1612464 5746776 1612472 5746880 1612512 5746760 1605152 5714944 +1612592 5747096 1613040 5747384 1612512 5746760 1612472 5746880 +1612464 5746776 1612440 5746864 1612472 5746880 1612512 5746760 +1612592 5747096 1612824 5747312 1613040 5747384 1612512 5746760 +1613040 5747384 1620064 5752296 1612512 5746760 1612824 5747312 +1612592 5747096 1612824 5747312 1612512 5746760 1612472 5746880 +1612592 5747096 1612688 5747224 1612824 5747312 1612512 5746760 +1605152 5714944 1612584 5746744 1620064 5752296 1620152 5752352 +1620064 5752296 1612584 5746744 1612512 5746760 1613040 5747384 +1612512 5746760 1612824 5747312 1613040 5747384 1612584 5746744 +1620064 5752296 1612584 5746744 1613040 5747384 1620032 5752288 +1612584 5746744 1605152 5714944 1612512 5746760 1612824 5747312 +1620064 5752296 1605152 5714944 1612584 5746744 1613040 5747384 +1612512 5746760 1612584 5746744 1605152 5714944 1612464 5746776 +1613040 5747384 1620064 5752296 1612584 5746744 1612824 5747312 +1612512 5746760 1612592 5747096 1612824 5747312 1612584 5746744 +1612824 5747312 1613040 5747384 1612584 5746744 1612592 5747096 +1612512 5746760 1612592 5747096 1612584 5746744 1605152 5714944 +1612512 5746760 1612472 5746880 1612592 5747096 1612584 5746744 +1612512 5746760 1612472 5746880 1612584 5746744 1605152 5714944 +1612592 5747096 1612688 5747224 1612824 5747312 1612584 5746744 +1612824 5747312 1613040 5747384 1612584 5746744 1612688 5747224 +1612512 5746760 1612464 5746776 1612472 5746880 1612584 5746744 +1612592 5747096 1612688 5747224 1612584 5746744 1612472 5746880 +1605152 5714944 1612768 5746808 1620064 5752296 1620152 5752352 +1620064 5752296 1612768 5746808 1612584 5746744 1613040 5747384 +1620064 5752296 1612768 5746808 1613040 5747384 1620032 5752288 +1612768 5746808 1605152 5714944 1612584 5746744 1613040 5747384 +1613040 5747384 1619984 5752296 1620032 5752288 1612768 5746808 +1620064 5752296 1605152 5714944 1612768 5746808 1620032 5752288 +1612584 5746744 1612768 5746808 1605152 5714944 1612512 5746760 +1612584 5746744 1612824 5747312 1613040 5747384 1612768 5746808 +1612584 5746744 1612688 5747224 1612824 5747312 1612768 5746808 +1612584 5746744 1612688 5747224 1612768 5746808 1605152 5714944 +1612768 5746808 1612824 5747312 1613040 5747384 1620032 5752288 +1612584 5746744 1612592 5747096 1612688 5747224 1612768 5746808 +1612688 5747224 1612824 5747312 1612768 5746808 1612592 5747096 +1612584 5746744 1612592 5747096 1612768 5746808 1605152 5714944 +1612584 5746744 1612472 5746880 1612592 5747096 1612768 5746808 +1612584 5746744 1612472 5746880 1612768 5746808 1605152 5714944 +1612584 5746744 1612512 5746760 1612472 5746880 1612768 5746808 +1612592 5747096 1612688 5747224 1612768 5746808 1612472 5746880 +1612824 5747312 1613040 5747384 1612768 5746808 1612688 5747224 +1605152 5714944 1612960 5746920 1620064 5752296 1620152 5752352 +1620064 5752296 1612960 5746920 1612768 5746808 1620032 5752288 +1612768 5746808 1613040 5747384 1620032 5752288 1612960 5746920 +1613040 5747384 1619984 5752296 1620032 5752288 1612960 5746920 +1612768 5746808 1612824 5747312 1613040 5747384 1612960 5746920 +1613040 5747384 1620032 5752288 1612960 5746920 1612824 5747312 +1620032 5752288 1620064 5752296 1612960 5746920 1613040 5747384 +1620064 5752296 1605152 5714944 1612960 5746920 1620032 5752288 +1612768 5746808 1612960 5746920 1605152 5714944 1612584 5746744 +1612960 5746920 1605152 5714944 1612768 5746808 1612824 5747312 +1612768 5746808 1612688 5747224 1612824 5747312 1612960 5746920 +1612768 5746808 1612592 5747096 1612688 5747224 1612960 5746920 +1612824 5747312 1613040 5747384 1612960 5746920 1612688 5747224 +1612688 5747224 1612824 5747312 1612960 5746920 1612592 5747096 +1612768 5746808 1612472 5746880 1612592 5747096 1612960 5746920 +1612768 5746808 1612592 5747096 1612960 5746920 1605152 5714944 +1613040 5747384 1613240 5747168 1612960 5746920 1612824 5747312 +1620032 5752288 1613240 5747168 1613040 5747384 1619984 5752296 +1620032 5752288 1612960 5746920 1613240 5747168 1619984 5752296 +1613240 5747168 1612960 5746920 1613040 5747384 1619984 5752296 +1612960 5746920 1613240 5747168 1620032 5752288 1620064 5752296 +1612960 5746920 1613040 5747384 1613240 5747168 1620064 5752296 +1613240 5747168 1619984 5752296 1620032 5752288 1620064 5752296 +1612960 5746920 1613240 5747168 1620064 5752296 1605152 5714944 +1620064 5752296 1620152 5752352 1605152 5714944 1613240 5747168 +1612960 5746920 1613040 5747384 1613240 5747168 1605152 5714944 +1612960 5746920 1613240 5747168 1605152 5714944 1612768 5746808 +1613240 5747168 1620032 5752288 1620064 5752296 1605152 5714944 +1613040 5747384 1619936 5752328 1619984 5752296 1613240 5747168 +1613040 5747384 1619936 5752328 1613240 5747168 1612960 5746920 +1619984 5752296 1620032 5752288 1613240 5747168 1619936 5752328 +1613040 5747384 1619904 5752368 1619936 5752328 1613240 5747168 +1613040 5747384 1619904 5752400 1619904 5752368 1613240 5747168 +1613040 5747384 1619904 5752368 1613240 5747168 1612960 5746920 +1619936 5752328 1619984 5752296 1613240 5747168 1619904 5752368 +1605152 5714944 1613360 5747216 1620064 5752296 1620152 5752352 +1620064 5752296 1613360 5747216 1613240 5747168 1620032 5752288 +1613240 5747168 1619984 5752296 1620032 5752288 1613360 5747216 +1613360 5747216 1605152 5714944 1613240 5747168 1619984 5752296 +1613240 5747168 1619936 5752328 1619984 5752296 1613360 5747216 +1619984 5752296 1620032 5752288 1613360 5747216 1619936 5752328 +1613240 5747168 1619936 5752328 1613360 5747216 1605152 5714944 +1620064 5752296 1605152 5714944 1613360 5747216 1620032 5752288 +1620032 5752288 1620064 5752296 1613360 5747216 1619984 5752296 +1613240 5747168 1613360 5747216 1605152 5714944 1612960 5746920 +1613240 5747168 1619936 5752328 1613360 5747216 1612960 5746920 +1613360 5747216 1620064 5752296 1605152 5714944 1612960 5746920 +1605152 5714944 1612768 5746808 1612960 5746920 1613360 5747216 +1613240 5747168 1619904 5752368 1619936 5752328 1613360 5747216 +1613240 5747168 1619904 5752368 1613360 5747216 1612960 5746920 +1619936 5752328 1619984 5752296 1613360 5747216 1619904 5752368 +1613240 5747168 1613040 5747384 1619904 5752368 1613360 5747216 +1613040 5747384 1619904 5752400 1619904 5752368 1613360 5747216 +1613240 5747168 1613040 5747384 1613360 5747216 1612960 5746920 +1613240 5747168 1612960 5746920 1613040 5747384 1613360 5747216 +1619904 5752368 1619936 5752328 1613360 5747216 1613040 5747384 +1605152 5714944 1613520 5747248 1620064 5752296 1620152 5752352 +1613360 5747216 1613520 5747248 1605152 5714944 1612960 5746920 +1613520 5747248 1620064 5752296 1605152 5714944 1612960 5746920 +1613360 5747216 1620064 5752296 1613520 5747248 1612960 5746920 +1620064 5752296 1613520 5747248 1613360 5747216 1620032 5752288 +1620064 5752296 1605152 5714944 1613520 5747248 1620032 5752288 +1613520 5747248 1612960 5746920 1613360 5747216 1620032 5752288 +1605152 5714944 1612768 5746808 1612960 5746920 1613520 5747248 +1613360 5747216 1619984 5752296 1620032 5752288 1613520 5747248 +1613360 5747216 1619936 5752328 1619984 5752296 1613520 5747248 +1613360 5747216 1619904 5752368 1619936 5752328 1613520 5747248 +1619936 5752328 1619984 5752296 1613520 5747248 1619904 5752368 +1613360 5747216 1619904 5752368 1613520 5747248 1612960 5746920 +1620032 5752288 1620064 5752296 1613520 5747248 1619984 5752296 +1619984 5752296 1620032 5752288 1613520 5747248 1619936 5752328 +1613360 5747216 1613520 5747248 1612960 5746920 1613240 5747168 +1613360 5747216 1613040 5747384 1619904 5752368 1613520 5747248 +1613040 5747384 1619904 5752400 1619904 5752368 1613520 5747248 +1619904 5752368 1619936 5752328 1613520 5747248 1613040 5747384 +1613360 5747216 1613040 5747384 1613520 5747248 1612960 5746920 +1613360 5747216 1613240 5747168 1613040 5747384 1613520 5747248 +1605152 5714944 1613680 5747344 1620064 5752296 1620152 5752352 +1613520 5747248 1613680 5747344 1605152 5714944 1612960 5746920 +1620064 5752296 1613680 5747344 1613520 5747248 1620032 5752288 +1613680 5747344 1605152 5714944 1613520 5747248 1620032 5752288 +1613520 5747248 1619984 5752296 1620032 5752288 1613680 5747344 +1613520 5747248 1619984 5752296 1613680 5747344 1605152 5714944 +1620032 5752288 1620064 5752296 1613680 5747344 1619984 5752296 +1613520 5747248 1619936 5752328 1619984 5752296 1613680 5747344 +1613520 5747248 1619904 5752368 1619936 5752328 1613680 5747344 +1613520 5747248 1619904 5752368 1613680 5747344 1605152 5714944 +1613520 5747248 1613040 5747384 1619904 5752368 1613680 5747344 +1613040 5747384 1619904 5752400 1619904 5752368 1613680 5747344 +1613040 5747384 1599875 5760125 1619904 5752400 1613680 5747344 +1619904 5752368 1619936 5752328 1613680 5747344 1619904 5752400 +1613520 5747248 1613040 5747384 1613680 5747344 1605152 5714944 +1613040 5747384 1619904 5752400 1613680 5747344 1613520 5747248 +1619984 5752296 1620032 5752288 1613680 5747344 1619936 5752328 +1619936 5752328 1619984 5752296 1613680 5747344 1619904 5752368 +1613520 5747248 1613360 5747216 1613040 5747384 1613680 5747344 +1620064 5752296 1605152 5714944 1613680 5747344 1620032 5752288 +1619904 5752400 1613768 5747456 1613040 5747384 1599875 5760125 +1613680 5747344 1613768 5747456 1619904 5752400 1619904 5752368 +1613680 5747344 1613768 5747456 1619904 5752368 1619936 5752328 +1613768 5747456 1619904 5752400 1619904 5752368 1619936 5752328 +1613768 5747456 1613040 5747384 1619904 5752400 1619904 5752368 +1613040 5747384 1613768 5747456 1613680 5747344 1613520 5747248 +1613680 5747344 1613768 5747456 1619936 5752328 1619984 5752296 +1613768 5747456 1619904 5752368 1619936 5752328 1619984 5752296 +1613680 5747344 1613768 5747456 1619984 5752296 1620032 5752288 +1613680 5747344 1613768 5747456 1620032 5752288 1620064 5752296 +1613768 5747456 1619984 5752296 1620032 5752288 1620064 5752296 +1613768 5747456 1619936 5752328 1619984 5752296 1620032 5752288 +1613680 5747344 1613040 5747384 1613768 5747456 1620064 5752296 +1613680 5747344 1613768 5747456 1620064 5752296 1605152 5714944 +1619904 5752400 1613784 5747512 1613040 5747384 1599875 5760125 +1613768 5747456 1613784 5747512 1619904 5752400 1619904 5752368 +1613768 5747456 1613784 5747512 1619904 5752368 1619936 5752328 +1613784 5747512 1613040 5747384 1619904 5752400 1619904 5752368 +1613768 5747456 1613784 5747512 1619936 5752328 1619984 5752296 +1613784 5747512 1619904 5752368 1619936 5752328 1619984 5752296 +1613784 5747512 1619904 5752400 1619904 5752368 1619936 5752328 +1613768 5747456 1613040 5747384 1613784 5747512 1619984 5752296 +1613040 5747384 1613784 5747512 1613768 5747456 1613680 5747344 +1613040 5747384 1619904 5752400 1613784 5747512 1613680 5747344 +1613784 5747512 1619984 5752296 1613768 5747456 1613680 5747344 +1613040 5747384 1613784 5747512 1613680 5747344 1613520 5747248 +1613040 5747384 1619904 5752400 1613784 5747512 1613520 5747248 +1613784 5747512 1613768 5747456 1613680 5747344 1613520 5747248 +1613768 5747456 1613784 5747512 1619984 5752296 1620032 5752288 +1613784 5747512 1619936 5752328 1619984 5752296 1620032 5752288 +1613768 5747456 1613680 5747344 1613784 5747512 1620032 5752288 +1613768 5747456 1613784 5747512 1620032 5752288 1620064 5752296 +1613040 5747384 1613784 5747512 1613520 5747248 1613360 5747216 +1619904 5752400 1613752 5747576 1613040 5747384 1599875 5760125 +1613784 5747512 1613752 5747576 1619904 5752400 1619904 5752368 +1613784 5747512 1613040 5747384 1613752 5747576 1619904 5752368 +1613040 5747384 1613752 5747576 1613784 5747512 1613520 5747248 +1613752 5747576 1619904 5752368 1613784 5747512 1613520 5747248 +1613784 5747512 1613752 5747576 1619904 5752368 1619936 5752328 +1613784 5747512 1613752 5747576 1619936 5752328 1619984 5752296 +1613752 5747576 1619904 5752400 1619904 5752368 1619936 5752328 +1613784 5747512 1613520 5747248 1613752 5747576 1619936 5752328 +1613784 5747512 1613680 5747344 1613520 5747248 1613752 5747576 +1613784 5747512 1613680 5747344 1613752 5747576 1619936 5752328 +1613520 5747248 1613040 5747384 1613752 5747576 1613680 5747344 +1613784 5747512 1613768 5747456 1613680 5747344 1613752 5747576 +1613784 5747512 1613768 5747456 1613752 5747576 1619936 5752328 +1613680 5747344 1613520 5747248 1613752 5747576 1613768 5747456 +1613040 5747384 1613752 5747576 1613520 5747248 1613360 5747216 +1613752 5747576 1613680 5747344 1613520 5747248 1613360 5747216 +1613040 5747384 1613752 5747576 1613360 5747216 1613240 5747168 +1613752 5747576 1613040 5747384 1619904 5752400 1619904 5752368 +1613040 5747384 1619904 5752400 1613752 5747576 1613360 5747216 +1619904 5752400 1613696 5747632 1613040 5747384 1599875 5760125 +1619904 5752400 1613696 5747632 1599875 5760125 1619944 5752464 +1613040 5747384 1612824 5747312 1599875 5760125 1613696 5747632 +1619904 5752400 1613752 5747576 1613696 5747632 1599875 5760125 +1613696 5747632 1613752 5747576 1613040 5747384 1599875 5760125 +1613752 5747576 1613696 5747632 1619904 5752400 1619904 5752368 +1613752 5747576 1613696 5747632 1619904 5752368 1619936 5752328 +1613696 5747632 1599875 5760125 1619904 5752400 1619904 5752368 +1613752 5747576 1613040 5747384 1613696 5747632 1619904 5752368 +1613040 5747384 1613696 5747632 1613752 5747576 1613360 5747216 +1613040 5747384 1599875 5760125 1613696 5747632 1613360 5747216 +1613040 5747384 1613696 5747632 1613360 5747216 1613240 5747168 +1613752 5747576 1613520 5747248 1613360 5747216 1613696 5747632 +1613752 5747576 1613680 5747344 1613520 5747248 1613696 5747632 +1613752 5747576 1613768 5747456 1613680 5747344 1613696 5747632 +1613680 5747344 1613520 5747248 1613696 5747632 1613768 5747456 +1613752 5747576 1613784 5747512 1613768 5747456 1613696 5747632 +1613520 5747248 1613360 5747216 1613696 5747632 1613680 5747344 +1613696 5747632 1619904 5752368 1613752 5747576 1613768 5747456 +1613360 5747216 1613040 5747384 1613696 5747632 1613520 5747248 +1613696 5747632 1613584 5747640 1599875 5760125 1619904 5752400 +1599875 5760125 1619944 5752464 1619904 5752400 1613584 5747640 +1599875 5760125 1613584 5747640 1613040 5747384 1612824 5747312 +1613584 5747640 1612824 5747312 1599875 5760125 1619904 5752400 +1613584 5747640 1613696 5747632 1613040 5747384 1612824 5747312 +1613696 5747632 1613584 5747640 1619904 5752400 1619904 5752368 +1613696 5747632 1613040 5747384 1613584 5747640 1619904 5752400 +1613040 5747384 1613584 5747640 1613696 5747632 1613360 5747216 +1613040 5747384 1612824 5747312 1613584 5747640 1613360 5747216 +1613584 5747640 1619904 5752400 1613696 5747632 1613360 5747216 +1613040 5747384 1613584 5747640 1613360 5747216 1613240 5747168 +1599875 5760125 1613584 5747640 1612824 5747312 1612688 5747224 +1613696 5747632 1613520 5747248 1613360 5747216 1613584 5747640 +1613696 5747632 1613520 5747248 1613584 5747640 1619904 5752400 +1613360 5747216 1613040 5747384 1613584 5747640 1613520 5747248 +1613696 5747632 1613680 5747344 1613520 5747248 1613584 5747640 +1613696 5747632 1613768 5747456 1613680 5747344 1613584 5747640 +1613696 5747632 1613752 5747576 1613768 5747456 1613584 5747640 +1613768 5747456 1613680 5747344 1613584 5747640 1613752 5747576 +1613752 5747576 1613784 5747512 1613768 5747456 1613584 5747640 +1613696 5747632 1613752 5747576 1613584 5747640 1619904 5752400 +1613680 5747344 1613520 5747248 1613584 5747640 1613768 5747456 +1613520 5747248 1613360 5747216 1613584 5747640 1613680 5747344 +1612824 5747312 1613368 5747576 1613584 5747640 1613040 5747384 +1612824 5747312 1599875 5760125 1613368 5747576 1613040 5747384 +1613584 5747640 1613368 5747576 1599875 5760125 1619904 5752400 +1613368 5747576 1599875 5760125 1613584 5747640 1613040 5747384 +1613584 5747640 1613360 5747216 1613040 5747384 1613368 5747576 +1613040 5747384 1612824 5747312 1613368 5747576 1613360 5747216 +1613584 5747640 1613360 5747216 1613368 5747576 1599875 5760125 +1613584 5747640 1613520 5747248 1613360 5747216 1613368 5747576 +1613584 5747640 1613520 5747248 1613368 5747576 1599875 5760125 +1613360 5747216 1613040 5747384 1613368 5747576 1613520 5747248 +1613360 5747216 1613240 5747168 1613040 5747384 1613368 5747576 +1599875 5760125 1613368 5747576 1612824 5747312 1612688 5747224 +1613584 5747640 1613680 5747344 1613520 5747248 1613368 5747576 +1613584 5747640 1613680 5747344 1613368 5747576 1599875 5760125 +1613520 5747248 1613360 5747216 1613368 5747576 1613680 5747344 +1613584 5747640 1613768 5747456 1613680 5747344 1613368 5747576 +1613368 5747576 1613176 5747448 1613040 5747384 1612824 5747312 +1613360 5747216 1613176 5747448 1613368 5747576 1613520 5747248 +1613040 5747384 1613176 5747448 1613360 5747216 1613240 5747168 +1613040 5747384 1613176 5747448 1613240 5747168 1612960 5746920 +1613040 5747384 1613368 5747576 1613176 5747448 1613240 5747168 +1613176 5747448 1613368 5747576 1613360 5747216 1613240 5747168 +1605152 5714944 1613208 5742808 1620064 5752296 1620152 5752352 +1613208 5742808 1613680 5747344 1620064 5752296 1620152 5752352 +1605152 5714944 1613680 5747344 1613208 5742808 1620152 5752352 +1605152 5714944 1613208 5742808 1620152 5752352 1605152 5714888 +1620152 5752352 1663944 5646256 1605152 5714888 1613208 5742808 +1613208 5742808 1620064 5752296 1620152 5752352 1605152 5714888 +1605152 5714944 1613680 5747344 1613208 5742808 1605152 5714888 +1613680 5747344 1613208 5742808 1605152 5714944 1613520 5747248 +1613680 5747344 1620064 5752296 1613208 5742808 1613520 5747248 +1613208 5742808 1605152 5714888 1605152 5714944 1613520 5747248 +1605152 5714944 1612960 5746920 1613520 5747248 1613208 5742808 +1605152 5714944 1612960 5746920 1613208 5742808 1605152 5714888 +1612960 5746920 1613360 5747216 1613520 5747248 1613208 5742808 +1605152 5714944 1612768 5746808 1612960 5746920 1613208 5742808 +1605152 5714944 1612768 5746808 1613208 5742808 1605152 5714888 +1612960 5746920 1613520 5747248 1613208 5742808 1612768 5746808 +1613520 5747248 1613680 5747344 1613208 5742808 1612960 5746920 +1620064 5752296 1613208 5742808 1613680 5747344 1613768 5747456 +1620064 5752296 1620152 5752352 1613208 5742808 1613768 5747456 +1613208 5742808 1613520 5747248 1613680 5747344 1613768 5747456 +1620064 5752296 1613208 5742808 1613768 5747456 1620032 5752288 +1620064 5752296 1620152 5752352 1613208 5742808 1620032 5752288 +1613768 5747456 1613784 5747512 1620032 5752288 1613208 5742808 +1613208 5742808 1613680 5747344 1613768 5747456 1620032 5752288 +1605152 5714944 1612584 5746744 1612768 5746808 1613208 5742808 +1605152 5714944 1612584 5746744 1613208 5742808 1605152 5714888 +1605152 5714944 1612512 5746760 1612584 5746744 1613208 5742808 +1612584 5746744 1612768 5746808 1613208 5742808 1612512 5746760 +1605152 5714944 1612512 5746760 1613208 5742808 1605152 5714888 +1605152 5714944 1612464 5746776 1612512 5746760 1613208 5742808 +1605152 5714944 1612464 5746776 1613208 5742808 1605152 5714888 +1605152 5714944 1605064 5714952 1612464 5746776 1613208 5742808 +1605152 5714944 1605064 5714952 1613208 5742808 1605152 5714888 +1605064 5714952 1604928 5714896 1612464 5746776 1613208 5742808 +1605064 5714952 1604928 5714896 1613208 5742808 1605152 5714944 +1604928 5714896 1604832 5714824 1612464 5746776 1613208 5742808 +1604928 5714896 1604832 5714824 1613208 5742808 1605064 5714952 +1604832 5714824 1599875 5760125 1612464 5746776 1613208 5742808 +1604832 5714824 1604712 5714680 1599875 5760125 1613208 5742808 +1604832 5714824 1599875 5760125 1613208 5742808 1604928 5714896 +1612512 5746760 1612584 5746744 1613208 5742808 1612464 5746776 +1612464 5746776 1612512 5746760 1613208 5742808 1599875 5760125 +1612768 5746808 1612960 5746920 1613208 5742808 1612584 5746744 +1605152 5714944 1613208 5742808 1605152 5714888 1605136 5714928 +1599875 5760125 1612440 5746864 1612464 5746776 1613208 5742808 +1605152 5714888 1613280 5742808 1620152 5752352 1663944 5646256 +1620152 5752352 1613280 5742808 1613208 5742808 1620064 5752296 +1613208 5742808 1620032 5752288 1620064 5752296 1613280 5742808 +1620064 5752296 1620152 5752352 1613280 5742808 1620032 5752288 +1613208 5742808 1613768 5747456 1620032 5752288 1613280 5742808 +1620032 5752288 1620064 5752296 1613280 5742808 1613768 5747456 +1620152 5752352 1605152 5714888 1613280 5742808 1620064 5752296 +1613768 5747456 1613784 5747512 1620032 5752288 1613280 5742808 +1613208 5742808 1613280 5742808 1605152 5714888 1605152 5714944 +1613208 5742808 1613280 5742808 1605152 5714944 1605064 5714952 +1613280 5742808 1620152 5752352 1605152 5714888 1605152 5714944 +1613280 5742808 1605152 5714944 1613208 5742808 1613768 5747456 +1613208 5742808 1613680 5747344 1613768 5747456 1613280 5742808 +1613208 5742808 1613520 5747248 1613680 5747344 1613280 5742808 +1613768 5747456 1620032 5752288 1613280 5742808 1613680 5747344 +1613208 5742808 1613520 5747248 1613280 5742808 1605152 5714944 +1613208 5742808 1612960 5746920 1613520 5747248 1613280 5742808 +1613520 5747248 1613680 5747344 1613280 5742808 1612960 5746920 +1613208 5742808 1612768 5746808 1612960 5746920 1613280 5742808 +1612960 5746920 1613360 5747216 1613520 5747248 1613280 5742808 +1613208 5742808 1612768 5746808 1613280 5742808 1605152 5714944 +1613208 5742808 1612584 5746744 1612768 5746808 1613280 5742808 +1613208 5742808 1612512 5746760 1612584 5746744 1613280 5742808 +1612768 5746808 1612960 5746920 1613280 5742808 1612584 5746744 +1613208 5742808 1612584 5746744 1613280 5742808 1605152 5714944 +1612960 5746920 1613520 5747248 1613280 5742808 1612768 5746808 +1613680 5747344 1613768 5747456 1613280 5742808 1613520 5747248 +1605152 5714888 1605136 5714928 1605152 5714944 1613280 5742808 +1605152 5714888 1613368 5742856 1620152 5752352 1663944 5646256 +1613280 5742808 1613368 5742856 1605152 5714888 1605152 5714944 +1613368 5742856 1620152 5752352 1605152 5714888 1605152 5714944 +1613280 5742808 1620152 5752352 1613368 5742856 1605152 5714944 +1620152 5752352 1613368 5742856 1613280 5742808 1620064 5752296 +1613280 5742808 1620032 5752288 1620064 5752296 1613368 5742856 +1620152 5752352 1605152 5714888 1613368 5742856 1620064 5752296 +1613280 5742808 1613768 5747456 1620032 5752288 1613368 5742856 +1620032 5752288 1620064 5752296 1613368 5742856 1613768 5747456 +1613280 5742808 1613680 5747344 1613768 5747456 1613368 5742856 +1613768 5747456 1620032 5752288 1613368 5742856 1613680 5747344 +1613368 5742856 1605152 5714944 1613280 5742808 1613680 5747344 +1620064 5752296 1620152 5752352 1613368 5742856 1620032 5752288 +1613768 5747456 1613784 5747512 1620032 5752288 1613368 5742856 +1613280 5742808 1613368 5742856 1605152 5714944 1613208 5742808 +1613280 5742808 1613520 5747248 1613680 5747344 1613368 5742856 +1613280 5742808 1612960 5746920 1613520 5747248 1613368 5742856 +1613680 5747344 1613768 5747456 1613368 5742856 1613520 5747248 +1613280 5742808 1612960 5746920 1613368 5742856 1605152 5714944 +1612960 5746920 1613360 5747216 1613520 5747248 1613368 5742856 +1613280 5742808 1612768 5746808 1612960 5746920 1613368 5742856 +1612960 5746920 1613520 5747248 1613368 5742856 1612768 5746808 +1613280 5742808 1612584 5746744 1612768 5746808 1613368 5742856 +1613280 5742808 1612584 5746744 1613368 5742856 1605152 5714944 +1613280 5742808 1613208 5742808 1612584 5746744 1613368 5742856 +1613208 5742808 1612512 5746760 1612584 5746744 1613368 5742856 +1612584 5746744 1612768 5746808 1613368 5742856 1613208 5742808 +1613280 5742808 1613208 5742808 1613368 5742856 1605152 5714944 +1612768 5746808 1612960 5746920 1613368 5742856 1612584 5746744 +1613520 5747248 1613680 5747344 1613368 5742856 1612960 5746920 +1605152 5714888 1605136 5714928 1605152 5714944 1613368 5742856 +1605152 5714888 1613432 5742904 1620152 5752352 1663944 5646256 +1613368 5742856 1613432 5742904 1605152 5714888 1605152 5714944 +1613368 5742856 1620152 5752352 1613432 5742904 1605152 5714944 +1620152 5752352 1613432 5742904 1613368 5742856 1620064 5752296 +1613432 5742904 1605152 5714944 1613368 5742856 1620064 5752296 +1613368 5742856 1613432 5742904 1605152 5714944 1613280 5742808 +1613368 5742856 1620032 5752288 1620064 5752296 1613432 5742904 +1613368 5742856 1613768 5747456 1620032 5752288 1613432 5742904 +1613368 5742856 1613768 5747456 1613432 5742904 1605152 5714944 +1620064 5752296 1620152 5752352 1613432 5742904 1620032 5752288 +1613368 5742856 1613680 5747344 1613768 5747456 1613432 5742904 +1613768 5747456 1620032 5752288 1613432 5742904 1613680 5747344 +1613368 5742856 1613680 5747344 1613432 5742904 1605152 5714944 +1613368 5742856 1613520 5747248 1613680 5747344 1613432 5742904 +1613368 5742856 1613520 5747248 1613432 5742904 1605152 5714944 +1613680 5747344 1613768 5747456 1613432 5742904 1613520 5747248 +1620032 5752288 1620064 5752296 1613432 5742904 1613768 5747456 +1613768 5747456 1613784 5747512 1620032 5752288 1613432 5742904 +1613432 5742904 1620152 5752352 1605152 5714888 1605152 5714944 +1620152 5752352 1605152 5714888 1613432 5742904 1620064 5752296 +1613368 5742856 1612960 5746920 1613520 5747248 1613432 5742904 +1613368 5742856 1612960 5746920 1613432 5742904 1605152 5714944 +1613368 5742856 1612768 5746808 1612960 5746920 1613432 5742904 +1613368 5742856 1612768 5746808 1613432 5742904 1605152 5714944 +1613520 5747248 1613680 5747344 1613432 5742904 1612960 5746920 +1612960 5746920 1613360 5747216 1613520 5747248 1613432 5742904 +1613368 5742856 1612584 5746744 1612768 5746808 1613432 5742904 +1613368 5742856 1612584 5746744 1613432 5742904 1605152 5714944 +1612768 5746808 1612960 5746920 1613432 5742904 1612584 5746744 +1613368 5742856 1613208 5742808 1612584 5746744 1613432 5742904 +1613368 5742856 1613208 5742808 1613432 5742904 1605152 5714944 +1613208 5742808 1612512 5746760 1612584 5746744 1613432 5742904 +1613368 5742856 1613280 5742808 1613208 5742808 1613432 5742904 +1612584 5746744 1612768 5746808 1613432 5742904 1613208 5742808 +1612960 5746920 1613520 5747248 1613432 5742904 1612768 5746808 +1605152 5714888 1605136 5714928 1605152 5714944 1613432 5742904 +1605152 5714888 1613488 5742960 1620152 5752352 1663944 5646256 +1613432 5742904 1613488 5742960 1605152 5714888 1605152 5714944 +1613432 5742904 1613488 5742960 1605152 5714944 1613368 5742856 +1613488 5742960 1620152 5752352 1605152 5714888 1605152 5714944 +1613432 5742904 1620152 5752352 1613488 5742960 1605152 5714944 +1620152 5752352 1613488 5742960 1613432 5742904 1620064 5752296 +1613432 5742904 1620032 5752288 1620064 5752296 1613488 5742960 +1613432 5742904 1613768 5747456 1620032 5752288 1613488 5742960 +1613432 5742904 1613680 5747344 1613768 5747456 1613488 5742960 +1620032 5752288 1620064 5752296 1613488 5742960 1613768 5747456 +1613432 5742904 1613520 5747248 1613680 5747344 1613488 5742960 +1613680 5747344 1613768 5747456 1613488 5742960 1613520 5747248 +1613432 5742904 1612960 5746920 1613520 5747248 1613488 5742960 +1613520 5747248 1613680 5747344 1613488 5742960 1612960 5746920 +1613768 5747456 1620032 5752288 1613488 5742960 1613680 5747344 +1620152 5752352 1605152 5714888 1613488 5742960 1620064 5752296 +1612960 5746920 1613360 5747216 1613520 5747248 1613488 5742960 +1613768 5747456 1613784 5747512 1620032 5752288 1613488 5742960 +1613488 5742960 1605152 5714944 1613432 5742904 1612960 5746920 +1620064 5752296 1620152 5752352 1613488 5742960 1620032 5752288 +1613432 5742904 1612768 5746808 1612960 5746920 1613488 5742960 +1613432 5742904 1612584 5746744 1612768 5746808 1613488 5742960 +1612960 5746920 1613520 5747248 1613488 5742960 1612768 5746808 +1613432 5742904 1612584 5746744 1613488 5742960 1605152 5714944 +1613432 5742904 1613208 5742808 1612584 5746744 1613488 5742960 +1613208 5742808 1612512 5746760 1612584 5746744 1613488 5742960 +1612584 5746744 1612768 5746808 1613488 5742960 1613208 5742808 +1613432 5742904 1613368 5742856 1613208 5742808 1613488 5742960 +1613432 5742904 1613208 5742808 1613488 5742960 1605152 5714944 +1612768 5746808 1612960 5746920 1613488 5742960 1612584 5746744 +1605152 5714888 1605136 5714928 1605152 5714944 1613488 5742960 +1605152 5714888 1613528 5743008 1620152 5752352 1663944 5646256 +1613488 5742960 1613528 5743008 1605152 5714888 1605152 5714944 +1613488 5742960 1620152 5752352 1613528 5743008 1605152 5714944 +1620152 5752352 1613528 5743008 1613488 5742960 1620064 5752296 +1613528 5743008 1605152 5714944 1613488 5742960 1620064 5752296 +1613488 5742960 1613528 5743008 1605152 5714944 1613432 5742904 +1613488 5742960 1620032 5752288 1620064 5752296 1613528 5743008 +1613488 5742960 1613768 5747456 1620032 5752288 1613528 5743008 +1613488 5742960 1613680 5747344 1613768 5747456 1613528 5743008 +1613488 5742960 1613520 5747248 1613680 5747344 1613528 5743008 +1613768 5747456 1620032 5752288 1613528 5743008 1613680 5747344 +1613488 5742960 1612960 5746920 1613520 5747248 1613528 5743008 +1613520 5747248 1613680 5747344 1613528 5743008 1612960 5746920 +1613488 5742960 1612768 5746808 1612960 5746920 1613528 5743008 +1612960 5746920 1613520 5747248 1613528 5743008 1612768 5746808 +1613680 5747344 1613768 5747456 1613528 5743008 1613520 5747248 +1613488 5742960 1612768 5746808 1613528 5743008 1605152 5714944 +1620064 5752296 1620152 5752352 1613528 5743008 1620032 5752288 +1612960 5746920 1613360 5747216 1613520 5747248 1613528 5743008 +1613768 5747456 1613784 5747512 1620032 5752288 1613528 5743008 +1620032 5752288 1620064 5752296 1613528 5743008 1613768 5747456 +1613488 5742960 1612584 5746744 1612768 5746808 1613528 5743008 +1613488 5742960 1613208 5742808 1612584 5746744 1613528 5743008 +1613208 5742808 1612512 5746760 1612584 5746744 1613528 5743008 +1612768 5746808 1612960 5746920 1613528 5743008 1612584 5746744 +1613488 5742960 1613208 5742808 1613528 5743008 1605152 5714944 +1613488 5742960 1613432 5742904 1613208 5742808 1613528 5743008 +1612584 5746744 1612768 5746808 1613528 5743008 1613208 5742808 +1613528 5743008 1620152 5752352 1605152 5714888 1605152 5714944 +1620152 5752352 1605152 5714888 1613528 5743008 1620064 5752296 +1605152 5714888 1605136 5714928 1605152 5714944 1613528 5743008 +1613768 5747456 1613544 5743040 1613528 5743008 1613680 5747344 +1613528 5743008 1613520 5747248 1613680 5747344 1613544 5743040 +1613528 5743008 1612960 5746920 1613520 5747248 1613544 5743040 +1613680 5747344 1613768 5747456 1613544 5743040 1613520 5747248 +1613528 5743008 1612768 5746808 1612960 5746920 1613544 5743040 +1612960 5746920 1613520 5747248 1613544 5743040 1612768 5746808 +1613528 5743008 1612584 5746744 1612768 5746808 1613544 5743040 +1612768 5746808 1612960 5746920 1613544 5743040 1612584 5746744 +1613520 5747248 1613680 5747344 1613544 5743040 1612960 5746920 +1613768 5747456 1620032 5752288 1613544 5743040 1613680 5747344 +1612960 5746920 1613360 5747216 1613520 5747248 1613544 5743040 +1620032 5752288 1613544 5743040 1613768 5747456 1613784 5747512 +1613528 5743008 1613544 5743040 1620032 5752288 1620064 5752296 +1613528 5743008 1613544 5743040 1620064 5752296 1620152 5752352 +1613544 5743040 1613768 5747456 1620032 5752288 1620064 5752296 +1613544 5743040 1620032 5752288 1620064 5752296 1620152 5752352 +1613528 5743008 1613208 5742808 1612584 5746744 1613544 5743040 +1613208 5742808 1612512 5746760 1612584 5746744 1613544 5743040 +1613528 5743008 1613488 5742960 1613208 5742808 1613544 5743040 +1612584 5746744 1612768 5746808 1613544 5743040 1613208 5742808 +1613488 5742960 1613432 5742904 1613208 5742808 1613544 5743040 +1613208 5742808 1612584 5746744 1613544 5743040 1613488 5742960 +1613544 5743040 1620152 5752352 1613528 5743008 1613488 5742960 +1613528 5743008 1613544 5743040 1620152 5752352 1605152 5714888 +1613544 5743040 1613544 5743064 1613680 5747344 1613768 5747456 +1613520 5747248 1613544 5743064 1613544 5743040 1612960 5746920 +1613544 5743040 1612768 5746808 1612960 5746920 1613544 5743064 +1613544 5743040 1612584 5746744 1612768 5746808 1613544 5743064 +1612768 5746808 1612960 5746920 1613544 5743064 1612584 5746744 +1613544 5743040 1613208 5742808 1612584 5746744 1613544 5743064 +1612584 5746744 1612768 5746808 1613544 5743064 1613208 5742808 +1613208 5742808 1612512 5746760 1612584 5746744 1613544 5743064 +1612584 5746744 1612768 5746808 1613544 5743064 1612512 5746760 +1613208 5742808 1612512 5746760 1613544 5743064 1613544 5743040 +1612960 5746920 1613520 5747248 1613544 5743064 1612768 5746808 +1613544 5743064 1613520 5747248 1613680 5747344 1613768 5747456 +1613520 5747248 1613680 5747344 1613544 5743064 1612960 5746920 +1613544 5743040 1613208 5742808 1613544 5743064 1613768 5747456 +1613544 5743040 1613544 5743064 1613768 5747456 1620032 5752288 +1613544 5743064 1613680 5747344 1613768 5747456 1620032 5752288 +1613544 5743040 1613544 5743064 1620032 5752288 1620064 5752296 +1613544 5743040 1613208 5742808 1613544 5743064 1620064 5752296 +1613544 5743064 1613768 5747456 1620032 5752288 1620064 5752296 +1613520 5747248 1613544 5743064 1612960 5746920 1613360 5747216 +1613768 5747456 1613784 5747512 1620032 5752288 1613544 5743064 +1613208 5742808 1612464 5746776 1612512 5746760 1613544 5743064 +1613544 5743040 1613544 5743064 1620064 5752296 1620152 5752352 +1613544 5743040 1613488 5742960 1613208 5742808 1613544 5743064 +1613544 5743040 1613528 5743008 1613488 5742960 1613544 5743064 +1613208 5742808 1612512 5746760 1613544 5743064 1613488 5742960 +1613544 5743040 1613528 5743008 1613544 5743064 1620064 5752296 +1613488 5742960 1613432 5742904 1613208 5742808 1613544 5743064 +1613432 5742904 1613368 5742856 1613208 5742808 1613544 5743064 +1613208 5742808 1612512 5746760 1613544 5743064 1613432 5742904 +1613488 5742960 1613432 5742904 1613544 5743064 1613528 5743008 +1613544 5743064 1613544 5743096 1613680 5747344 1613768 5747456 +1613544 5743064 1613544 5743096 1613768 5747456 1620032 5752288 +1613544 5743096 1613520 5747248 1613680 5747344 1613768 5747456 +1613544 5743096 1613680 5747344 1613768 5747456 1620032 5752288 +1613544 5743064 1613520 5747248 1613544 5743096 1620032 5752288 +1613520 5747248 1613544 5743096 1613544 5743064 1612960 5746920 +1613544 5743064 1612768 5746808 1612960 5746920 1613544 5743096 +1613544 5743064 1612584 5746744 1612768 5746808 1613544 5743096 +1613544 5743064 1612512 5746760 1612584 5746744 1613544 5743096 +1612584 5746744 1612768 5746808 1613544 5743096 1612512 5746760 +1613544 5743064 1613208 5742808 1612512 5746760 1613544 5743096 +1612512 5746760 1612584 5746744 1613544 5743096 1613208 5742808 +1613544 5743064 1613432 5742904 1613208 5742808 1613544 5743096 +1613208 5742808 1612512 5746760 1613544 5743096 1613432 5742904 +1613432 5742904 1613368 5742856 1613208 5742808 1613544 5743096 +1612768 5746808 1612960 5746920 1613544 5743096 1612584 5746744 +1613520 5747248 1613680 5747344 1613544 5743096 1612960 5746920 +1613544 5743096 1620032 5752288 1613544 5743064 1613432 5742904 +1612960 5746920 1613520 5747248 1613544 5743096 1612768 5746808 +1613544 5743064 1613544 5743096 1620032 5752288 1620064 5752296 +1613544 5743096 1613768 5747456 1620032 5752288 1620064 5752296 +1613544 5743064 1613432 5742904 1613544 5743096 1620064 5752296 +1613544 5743064 1613544 5743096 1620064 5752296 1613544 5743040 +1613520 5747248 1613544 5743096 1612960 5746920 1613360 5747216 +1613768 5747456 1613784 5747512 1620032 5752288 1613544 5743096 +1613208 5742808 1612464 5746776 1612512 5746760 1613544 5743096 +1613544 5743064 1613488 5742960 1613432 5742904 1613544 5743096 +1613432 5742904 1613208 5742808 1613544 5743096 1613488 5742960 +1613544 5743064 1613488 5742960 1613544 5743096 1620064 5752296 +1613544 5743064 1613528 5743008 1613488 5742960 1613544 5743096 +1613544 5743096 1613496 5743096 1612512 5746760 1612584 5746744 +1613544 5743096 1613496 5743096 1612584 5746744 1612768 5746808 +1613496 5743096 1612512 5746760 1612584 5746744 1612768 5746808 +1613208 5742808 1613496 5743096 1613544 5743096 1613432 5742904 +1613208 5742808 1613496 5743096 1613432 5742904 1613368 5742856 +1613496 5743096 1613544 5743096 1613432 5742904 1613368 5742856 +1613544 5743096 1613488 5742960 1613432 5742904 1613496 5743096 +1613432 5742904 1613368 5742856 1613496 5743096 1613488 5742960 +1613544 5743096 1613496 5743096 1612768 5746808 1612960 5746920 +1613544 5743096 1613488 5742960 1613496 5743096 1612768 5746808 +1612512 5746760 1613496 5743096 1613208 5742808 1612464 5746776 +1613208 5742808 1599875 5760125 1612464 5746776 1613496 5743096 +1613208 5742808 1613496 5743096 1613368 5742856 1613280 5742808 +1613496 5743096 1612464 5746776 1612512 5746760 1612584 5746744 +1613208 5742808 1612464 5746776 1613496 5743096 1613368 5742856 +1613544 5743096 1613544 5743064 1613488 5742960 1613496 5743096 +1613488 5742960 1613432 5742904 1613496 5743096 1613544 5743064 +1613544 5743096 1613544 5743064 1613496 5743096 1612768 5746808 +1613544 5743064 1613528 5743008 1613488 5742960 1613496 5743096 +1613544 5743064 1613544 5743040 1613528 5743008 1613496 5743096 +1613488 5742960 1613432 5742904 1613496 5743096 1613528 5743008 +1613544 5743064 1613544 5743040 1613496 5743096 1613544 5743096 +1613528 5743008 1613488 5742960 1613496 5743096 1613544 5743040 +1613496 5743096 1613416 5743064 1612464 5746776 1612512 5746760 +1613416 5743064 1613208 5742808 1612464 5746776 1612512 5746760 +1612464 5746776 1613416 5743064 1613208 5742808 1599875 5760125 +1613496 5743096 1613416 5743064 1612512 5746760 1612584 5746744 +1613496 5743096 1613416 5743064 1612584 5746744 1612768 5746808 +1613416 5743064 1612464 5746776 1612512 5746760 1612584 5746744 +1613496 5743096 1613208 5742808 1613416 5743064 1612584 5746744 +1613208 5742808 1613416 5743064 1613496 5743096 1613368 5742856 +1613496 5743096 1613432 5742904 1613368 5742856 1613416 5743064 +1613496 5743096 1613488 5742960 1613432 5742904 1613416 5743064 +1613432 5742904 1613368 5742856 1613416 5743064 1613488 5742960 +1613496 5743096 1613528 5743008 1613488 5742960 1613416 5743064 +1613488 5742960 1613432 5742904 1613416 5743064 1613528 5743008 +1613208 5742808 1612464 5746776 1613416 5743064 1613368 5742856 +1613208 5742808 1613416 5743064 1613368 5742856 1613280 5742808 +1613416 5743064 1612584 5746744 1613496 5743096 1613528 5743008 +1613368 5742856 1613208 5742808 1613416 5743064 1613432 5742904 +1613496 5743096 1613544 5743040 1613528 5743008 1613416 5743064 +1613416 5743064 1613368 5743032 1612464 5746776 1612512 5746760 +1613416 5743064 1613208 5742808 1613368 5743032 1612512 5746760 +1613208 5742808 1613368 5743032 1613416 5743064 1613368 5742856 +1613208 5742808 1612464 5746776 1613368 5743032 1613368 5742856 +1613368 5743032 1612512 5746760 1613416 5743064 1613368 5742856 +1613368 5743032 1613208 5742808 1612464 5746776 1612512 5746760 +1613416 5743064 1613368 5743032 1612512 5746760 1612584 5746744 +1613368 5743032 1612464 5746776 1612512 5746760 1612584 5746744 +1613416 5743064 1613368 5742856 1613368 5743032 1612584 5746744 +1612464 5746776 1613368 5743032 1613208 5742808 1599875 5760125 +1613208 5742808 1613368 5743032 1613368 5742856 1613280 5742808 +1613208 5742808 1612464 5746776 1613368 5743032 1613280 5742808 +1613368 5743032 1613416 5743064 1613368 5742856 1613280 5742808 +1613416 5743064 1613368 5743032 1612584 5746744 1613496 5743096 +1613416 5743064 1613432 5742904 1613368 5742856 1613368 5743032 +1613416 5743064 1613488 5742960 1613432 5742904 1613368 5743032 +1613416 5743064 1613528 5743008 1613488 5742960 1613368 5743032 +1613416 5743064 1613488 5742960 1613368 5743032 1612584 5746744 +1613368 5742856 1613280 5742808 1613368 5743032 1613432 5742904 +1613432 5742904 1613368 5742856 1613368 5743032 1613488 5742960 +1613208 5742808 1613320 5742984 1613368 5743032 1613280 5742808 +1613320 5742984 1612464 5746776 1613368 5743032 1613280 5742808 +1613208 5742808 1612464 5746776 1613320 5742984 1613280 5742808 +1613368 5743032 1613320 5742984 1612464 5746776 1612512 5746760 +1612464 5746776 1613320 5742984 1613208 5742808 1599875 5760125 +1613368 5743032 1613368 5742856 1613280 5742808 1613320 5742984 +1613368 5743032 1613368 5742856 1613320 5742984 1612464 5746776 +1613280 5742808 1613208 5742808 1613320 5742984 1613368 5742856 +1613368 5743032 1613432 5742904 1613368 5742856 1613320 5742984 +1613368 5743032 1613432 5742904 1613320 5742984 1612464 5746776 +1613368 5742856 1613280 5742808 1613320 5742984 1613432 5742904 +1613368 5743032 1613488 5742960 1613432 5742904 1613320 5742984 +1613320 5742984 1613280 5742928 1612464 5746776 1613368 5743032 +1613208 5742808 1613280 5742928 1613320 5742984 1613280 5742808 +1613320 5742984 1613368 5742856 1613280 5742808 1613280 5742928 +1613280 5742928 1612464 5746776 1613320 5742984 1613368 5742856 +1613208 5742808 1612464 5746776 1613280 5742928 1613280 5742808 +1613280 5742808 1613208 5742808 1613280 5742928 1613368 5742856 +1612464 5746776 1613280 5742928 1613208 5742808 1599875 5760125 +1613320 5742984 1613432 5742904 1613368 5742856 1613280 5742928 +1613280 5742928 1613224 5742856 1612464 5746776 1613320 5742984 +1612464 5746776 1613368 5743032 1613320 5742984 1613224 5742856 +1613224 5742856 1613208 5742808 1612464 5746776 1613320 5742984 +1613280 5742928 1613208 5742808 1613224 5742856 1613320 5742984 +1613208 5742808 1613224 5742856 1613280 5742928 1613280 5742808 +1613224 5742856 1613320 5742984 1613280 5742928 1613280 5742808 +1613280 5742928 1613368 5742856 1613280 5742808 1613224 5742856 +1612464 5746776 1613224 5742856 1613208 5742808 1599875 5760125 +1613208 5742808 1612464 5746776 1613224 5742856 1613280 5742808 +1605152 5714888 1616160 5745400 1620152 5752352 1663944 5646256 +1605152 5714888 1616160 5745400 1663944 5646256 1605128 5714784 +1620152 5752352 1620192 5752400 1663944 5646256 1616160 5745400 +1663944 5646256 1605152 5714888 1616160 5745400 1620192 5752400 +1620192 5752400 1743800 5687320 1663944 5646256 1616160 5745400 +1613528 5743008 1616160 5745400 1605152 5714888 1605152 5714944 +1613528 5743008 1616160 5745400 1605152 5714944 1613488 5742960 +1613528 5743008 1620152 5752352 1616160 5745400 1613488 5742960 +1605152 5714944 1613432 5742904 1613488 5742960 1616160 5745400 +1616160 5745400 1605152 5714888 1605152 5714944 1613488 5742960 +1620152 5752352 1616160 5745400 1613528 5743008 1613544 5743040 +1620152 5752352 1616160 5745400 1613544 5743040 1620064 5752296 +1616160 5745400 1613488 5742960 1613528 5743008 1613544 5743040 +1613544 5743040 1613544 5743064 1620064 5752296 1616160 5745400 +1620064 5752296 1620152 5752352 1616160 5745400 1613544 5743064 +1613544 5743064 1613544 5743096 1620064 5752296 1616160 5745400 +1620064 5752296 1620152 5752352 1616160 5745400 1613544 5743096 +1613544 5743096 1620032 5752288 1620064 5752296 1616160 5745400 +1613544 5743096 1613768 5747456 1620032 5752288 1616160 5745400 +1620064 5752296 1620152 5752352 1616160 5745400 1620032 5752288 +1613544 5743096 1613680 5747344 1613768 5747456 1616160 5745400 +1613768 5747456 1620032 5752288 1616160 5745400 1613680 5747344 +1613544 5743096 1613520 5747248 1613680 5747344 1616160 5745400 +1613544 5743096 1612960 5746920 1613520 5747248 1616160 5745400 +1613520 5747248 1613680 5747344 1616160 5745400 1612960 5746920 +1613680 5747344 1613768 5747456 1616160 5745400 1613520 5747248 +1613544 5743096 1612768 5746808 1612960 5746920 1616160 5745400 +1613544 5743096 1612960 5746920 1616160 5745400 1613544 5743064 +1620032 5752288 1620064 5752296 1616160 5745400 1613768 5747456 +1612960 5746920 1613360 5747216 1613520 5747248 1616160 5745400 +1613768 5747456 1613784 5747512 1620032 5752288 1616160 5745400 +1613768 5747456 1613784 5747512 1616160 5745400 1613680 5747344 +1620032 5752288 1620064 5752296 1616160 5745400 1613784 5747512 +1613784 5747512 1619984 5752296 1620032 5752288 1616160 5745400 +1613784 5747512 1619936 5752328 1619984 5752296 1616160 5745400 +1613784 5747512 1613752 5747576 1619936 5752328 1616160 5745400 +1620032 5752288 1620064 5752296 1616160 5745400 1619984 5752296 +1613784 5747512 1619936 5752328 1616160 5745400 1613768 5747456 +1619984 5752296 1620032 5752288 1616160 5745400 1619936 5752328 +1613544 5743064 1613544 5743096 1616160 5745400 1613544 5743040 +1616160 5745400 1613528 5743008 1613544 5743040 1613544 5743064 +1605152 5714888 1605136 5714928 1605152 5714944 1616160 5745400 +1605152 5714888 1605152 5714944 1616160 5745400 1663944 5646256 +1616160 5745400 1620064 5752296 1620152 5752352 1620192 5752400 +1616160 5745400 1616216 5745480 1663944 5646256 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1616216 5745480 +1616160 5745400 1620192 5752400 1616216 5745480 1605152 5714888 +1663944 5646256 1616216 5745480 1620192 5752400 1743800 5687320 +1616216 5745480 1620192 5752400 1663944 5646256 1605152 5714888 +1620192 5752400 1616216 5745480 1616160 5745400 1620152 5752352 +1620192 5752400 1663944 5646256 1616216 5745480 1620152 5752352 +1616216 5745480 1605152 5714888 1616160 5745400 1620152 5752352 +1616160 5745400 1616216 5745480 1605152 5714888 1605152 5714944 +1616160 5745400 1620064 5752296 1620152 5752352 1616216 5745480 +1616160 5745400 1620064 5752296 1616216 5745480 1605152 5714888 +1616160 5745400 1620032 5752288 1620064 5752296 1616216 5745480 +1616160 5745400 1620032 5752288 1616216 5745480 1605152 5714888 +1616160 5745400 1619984 5752296 1620032 5752288 1616216 5745480 +1616160 5745400 1619984 5752296 1616216 5745480 1605152 5714888 +1620032 5752288 1620064 5752296 1616216 5745480 1619984 5752296 +1620064 5752296 1620152 5752352 1616216 5745480 1620032 5752288 +1616160 5745400 1619936 5752328 1619984 5752296 1616216 5745480 +1616160 5745400 1613784 5747512 1619936 5752328 1616216 5745480 +1613784 5747512 1613752 5747576 1619936 5752328 1616216 5745480 +1616160 5745400 1613784 5747512 1616216 5745480 1605152 5714888 +1619984 5752296 1620032 5752288 1616216 5745480 1619936 5752328 +1616160 5745400 1613768 5747456 1613784 5747512 1616216 5745480 +1616160 5745400 1613680 5747344 1613768 5747456 1616216 5745480 +1613784 5747512 1619936 5752328 1616216 5745480 1613768 5747456 +1616160 5745400 1613680 5747344 1616216 5745480 1605152 5714888 +1616160 5745400 1613520 5747248 1613680 5747344 1616216 5745480 +1613768 5747456 1613784 5747512 1616216 5745480 1613680 5747344 +1619936 5752328 1619984 5752296 1616216 5745480 1613784 5747512 +1620152 5752352 1620192 5752400 1616216 5745480 1620064 5752296 +1619936 5752328 1616232 5745520 1613784 5747512 1613752 5747576 +1613784 5747512 1616232 5745520 1616216 5745480 1613768 5747456 +1616232 5745520 1619936 5752328 1616216 5745480 1613768 5747456 +1619936 5752328 1616232 5745520 1613752 5747576 1619904 5752368 +1619936 5752328 1616216 5745480 1616232 5745520 1613752 5747576 +1616232 5745520 1613768 5747456 1613784 5747512 1613752 5747576 +1616216 5745480 1613680 5747344 1613768 5747456 1616232 5745520 +1616216 5745480 1616160 5745400 1613680 5747344 1616232 5745520 +1616216 5745480 1616160 5745400 1616232 5745520 1619936 5752328 +1613768 5747456 1613784 5747512 1616232 5745520 1613680 5747344 +1616160 5745400 1613520 5747248 1613680 5747344 1616232 5745520 +1613680 5747344 1613768 5747456 1616232 5745520 1616160 5745400 +1616216 5745480 1616232 5745520 1619936 5752328 1619984 5752296 +1616216 5745480 1616160 5745400 1616232 5745520 1619984 5752296 +1616232 5745520 1613752 5747576 1619936 5752328 1619984 5752296 +1616216 5745480 1616232 5745520 1619984 5752296 1620032 5752288 +1616216 5745480 1616160 5745400 1616232 5745520 1620032 5752288 +1616216 5745480 1616232 5745520 1620032 5752288 1620064 5752296 +1616216 5745480 1616160 5745400 1616232 5745520 1620064 5752296 +1616232 5745520 1619984 5752296 1620032 5752288 1620064 5752296 +1616216 5745480 1616232 5745520 1620064 5752296 1620152 5752352 +1616216 5745480 1616160 5745400 1616232 5745520 1620152 5752352 +1616232 5745520 1620032 5752288 1620064 5752296 1620152 5752352 +1616232 5745520 1619936 5752328 1619984 5752296 1620032 5752288 +1616216 5745480 1616232 5745520 1620152 5752352 1620192 5752400 +1616216 5745480 1616232 5745520 1620192 5752400 1663944 5646256 +1616216 5745480 1616160 5745400 1616232 5745520 1620192 5752400 +1616232 5745520 1620064 5752296 1620152 5752352 1620192 5752400 +1613752 5747576 1616296 5745864 1616232 5745520 1613784 5747512 +1613752 5747576 1619936 5752328 1616296 5745864 1613784 5747512 +1619936 5752328 1616296 5745864 1613752 5747576 1619904 5752368 +1616232 5745520 1616296 5745864 1619936 5752328 1619984 5752296 +1616296 5745864 1613752 5747576 1619936 5752328 1619984 5752296 +1616296 5745864 1619984 5752296 1616232 5745520 1613784 5747512 +1616232 5745520 1613768 5747456 1613784 5747512 1616296 5745864 +1613784 5747512 1613752 5747576 1616296 5745864 1613768 5747456 +1616232 5745520 1613680 5747344 1613768 5747456 1616296 5745864 +1616232 5745520 1613680 5747344 1616296 5745864 1619984 5752296 +1613768 5747456 1613784 5747512 1616296 5745864 1613680 5747344 +1616232 5745520 1616160 5745400 1613680 5747344 1616296 5745864 +1616232 5745520 1616216 5745480 1616160 5745400 1616296 5745864 +1613680 5747344 1613768 5747456 1616296 5745864 1616160 5745400 +1616232 5745520 1616160 5745400 1616296 5745864 1619984 5752296 +1616160 5745400 1613520 5747248 1613680 5747344 1616296 5745864 +1616232 5745520 1616296 5745864 1619984 5752296 1620032 5752288 +1616296 5745864 1619936 5752328 1619984 5752296 1620032 5752288 +1616232 5745520 1616160 5745400 1616296 5745864 1620032 5752288 +1616232 5745520 1616296 5745864 1620032 5752288 1620064 5752296 +1616232 5745520 1616296 5745864 1620064 5752296 1620152 5752352 +1616232 5745520 1616160 5745400 1616296 5745864 1620152 5752352 +1616296 5745864 1620032 5752288 1620064 5752296 1620152 5752352 +1616232 5745520 1616296 5745864 1620152 5752352 1620192 5752400 +1616296 5745864 1619984 5752296 1620032 5752288 1620064 5752296 +1616296 5745864 1616376 5746120 1619936 5752328 1619984 5752296 +1616296 5745864 1613752 5747576 1616376 5746120 1619984 5752296 +1613752 5747576 1616376 5746120 1616296 5745864 1613784 5747512 +1616296 5745864 1613768 5747456 1613784 5747512 1616376 5746120 +1616376 5746120 1619984 5752296 1616296 5745864 1613768 5747456 +1613784 5747512 1613752 5747576 1616376 5746120 1613768 5747456 +1619936 5752328 1616376 5746120 1613752 5747576 1619904 5752368 +1613752 5747576 1613696 5747632 1619904 5752368 1616376 5746120 +1616296 5745864 1616376 5746120 1619984 5752296 1620032 5752288 +1616376 5746120 1619936 5752328 1619984 5752296 1620032 5752288 +1616296 5745864 1613768 5747456 1616376 5746120 1620032 5752288 +1616296 5745864 1613680 5747344 1613768 5747456 1616376 5746120 +1613768 5747456 1613784 5747512 1616376 5746120 1613680 5747344 +1616296 5745864 1616160 5745400 1613680 5747344 1616376 5746120 +1616296 5745864 1613680 5747344 1616376 5746120 1620032 5752288 +1616376 5746120 1619904 5752368 1619936 5752328 1619984 5752296 +1613752 5747576 1619904 5752368 1616376 5746120 1613784 5747512 +1616296 5745864 1616376 5746120 1620032 5752288 1620064 5752296 +1616296 5745864 1613680 5747344 1616376 5746120 1620064 5752296 +1616376 5746120 1619984 5752296 1620032 5752288 1620064 5752296 +1616296 5745864 1616376 5746120 1620064 5752296 1620152 5752352 +1616296 5745864 1613680 5747344 1616376 5746120 1620152 5752352 +1616296 5745864 1616376 5746120 1620152 5752352 1616232 5745520 +1616296 5745864 1613680 5747344 1616376 5746120 1616232 5745520 +1616376 5746120 1620064 5752296 1620152 5752352 1616232 5745520 +1620152 5752352 1620192 5752400 1616232 5745520 1616376 5746120 +1616376 5746120 1620032 5752288 1620064 5752296 1620152 5752352 +1619904 5752368 1616480 5746336 1613752 5747576 1613696 5747632 +1616376 5746120 1616480 5746336 1619904 5752368 1619936 5752328 +1616376 5746120 1616480 5746336 1619936 5752328 1619984 5752296 +1616376 5746120 1616480 5746336 1619984 5752296 1620032 5752288 +1616480 5746336 1619904 5752368 1619936 5752328 1619984 5752296 +1616376 5746120 1616480 5746336 1620032 5752288 1620064 5752296 +1616480 5746336 1619984 5752296 1620032 5752288 1620064 5752296 +1616480 5746336 1619936 5752328 1619984 5752296 1620032 5752288 +1616376 5746120 1613752 5747576 1616480 5746336 1620064 5752296 +1613752 5747576 1616480 5746336 1616376 5746120 1613784 5747512 +1616376 5746120 1613768 5747456 1613784 5747512 1616480 5746336 +1616376 5746120 1613680 5747344 1613768 5747456 1616480 5746336 +1616480 5746336 1620064 5752296 1616376 5746120 1613768 5747456 +1613784 5747512 1613752 5747576 1616480 5746336 1613768 5747456 +1616376 5746120 1616480 5746336 1620064 5752296 1620152 5752352 +1616480 5746336 1620032 5752288 1620064 5752296 1620152 5752352 +1616376 5746120 1613768 5747456 1616480 5746336 1620152 5752352 +1616376 5746120 1616480 5746336 1620152 5752352 1616232 5745520 +1616376 5746120 1616480 5746336 1616232 5745520 1616296 5745864 +1616376 5746120 1613768 5747456 1616480 5746336 1616296 5745864 +1616480 5746336 1620152 5752352 1616232 5745520 1616296 5745864 +1620152 5752352 1620192 5752400 1616232 5745520 1616480 5746336 +1616480 5746336 1620064 5752296 1620152 5752352 1616232 5745520 +1616480 5746336 1613752 5747576 1619904 5752368 1619936 5752328 +1613752 5747576 1619904 5752368 1616480 5746336 1613784 5747512 +1616480 5746336 1616616 5746536 1616232 5745520 1616296 5745864 +1616616 5746536 1620152 5752352 1616232 5745520 1616296 5745864 +1616480 5746336 1616616 5746536 1616296 5745864 1616376 5746120 +1616616 5746536 1616232 5745520 1616296 5745864 1616376 5746120 +1616232 5745520 1616616 5746536 1620152 5752352 1620192 5752400 +1620152 5752352 1616616 5746536 1616480 5746336 1620064 5752296 +1620152 5752352 1616232 5745520 1616616 5746536 1620064 5752296 +1616480 5746336 1620032 5752288 1620064 5752296 1616616 5746536 +1616480 5746336 1619984 5752296 1620032 5752288 1616616 5746536 +1620032 5752288 1620064 5752296 1616616 5746536 1619984 5752296 +1616480 5746336 1619936 5752328 1619984 5752296 1616616 5746536 +1619984 5752296 1620032 5752288 1616616 5746536 1619936 5752328 +1616480 5746336 1619904 5752368 1619936 5752328 1616616 5746536 +1619936 5752328 1619984 5752296 1616616 5746536 1619904 5752368 +1620064 5752296 1620152 5752352 1616616 5746536 1620032 5752288 +1616480 5746336 1613752 5747576 1619904 5752368 1616616 5746536 +1613752 5747576 1613696 5747632 1619904 5752368 1616616 5746536 +1619904 5752368 1619936 5752328 1616616 5746536 1613696 5747632 +1613696 5747632 1619904 5752400 1619904 5752368 1616616 5746536 +1613752 5747576 1613696 5747632 1616616 5746536 1616480 5746336 +1616480 5746336 1613752 5747576 1616616 5746536 1616376 5746120 +1616480 5746336 1613784 5747512 1613752 5747576 1616616 5746536 +1616480 5746336 1613768 5747456 1613784 5747512 1616616 5746536 +1613752 5747576 1613696 5747632 1616616 5746536 1613784 5747512 +1616480 5746336 1613784 5747512 1616616 5746536 1616376 5746120 +1616616 5746536 1616688 5746584 1616232 5745520 1616296 5745864 +1616616 5746536 1620152 5752352 1616688 5746584 1616296 5745864 +1620152 5752352 1616688 5746584 1616616 5746536 1620064 5752296 +1616688 5746584 1616296 5745864 1616616 5746536 1620064 5752296 +1616688 5746584 1620152 5752352 1616232 5745520 1616296 5745864 +1620152 5752352 1616232 5745520 1616688 5746584 1620064 5752296 +1616616 5746536 1616688 5746584 1616296 5745864 1616376 5746120 +1616688 5746584 1616232 5745520 1616296 5745864 1616376 5746120 +1616616 5746536 1620064 5752296 1616688 5746584 1616376 5746120 +1616616 5746536 1616688 5746584 1616376 5746120 1616480 5746336 +1616616 5746536 1620064 5752296 1616688 5746584 1616480 5746336 +1616688 5746584 1616296 5745864 1616376 5746120 1616480 5746336 +1616232 5745520 1616688 5746584 1620152 5752352 1620192 5752400 +1616232 5745520 1616296 5745864 1616688 5746584 1620192 5752400 +1616688 5746584 1620064 5752296 1620152 5752352 1620192 5752400 +1616616 5746536 1620032 5752288 1620064 5752296 1616688 5746584 +1616616 5746536 1620032 5752288 1616688 5746584 1616480 5746336 +1620064 5752296 1620152 5752352 1616688 5746584 1620032 5752288 +1616616 5746536 1619984 5752296 1620032 5752288 1616688 5746584 +1616616 5746536 1619984 5752296 1616688 5746584 1616480 5746336 +1616616 5746536 1619936 5752328 1619984 5752296 1616688 5746584 +1616616 5746536 1619936 5752328 1616688 5746584 1616480 5746336 +1619984 5752296 1620032 5752288 1616688 5746584 1619936 5752328 +1616616 5746536 1619904 5752368 1619936 5752328 1616688 5746584 +1616616 5746536 1619904 5752368 1616688 5746584 1616480 5746336 +1619936 5752328 1619984 5752296 1616688 5746584 1619904 5752368 +1616616 5746536 1613696 5747632 1619904 5752368 1616688 5746584 +1616616 5746536 1613696 5747632 1616688 5746584 1616480 5746336 +1616616 5746536 1613752 5747576 1613696 5747632 1616688 5746584 +1616616 5746536 1613752 5747576 1616688 5746584 1616480 5746336 +1613696 5747632 1619904 5752368 1616688 5746584 1613752 5747576 +1619904 5752368 1619936 5752328 1616688 5746584 1613696 5747632 +1620032 5752288 1620064 5752296 1616688 5746584 1619984 5752296 +1616232 5745520 1616688 5746584 1620192 5752400 1616216 5745480 +1620192 5752400 1663944 5646256 1616216 5745480 1616688 5746584 +1616232 5745520 1616296 5745864 1616688 5746584 1616216 5745480 +1616688 5746584 1620152 5752352 1620192 5752400 1616216 5745480 +1613696 5747632 1619904 5752400 1619904 5752368 1616688 5746584 +1616616 5746536 1613784 5747512 1613752 5747576 1616688 5746584 +1616616 5746536 1613784 5747512 1616688 5746584 1616480 5746336 +1613752 5747576 1613696 5747632 1616688 5746584 1613784 5747512 +1616616 5746536 1616480 5746336 1613784 5747512 1616688 5746584 +1616216 5745480 1616824 5746568 1620192 5752400 1663944 5646256 +1616216 5745480 1616688 5746584 1616824 5746568 1663944 5646256 +1616824 5746568 1616688 5746584 1620192 5752400 1663944 5646256 +1620192 5752400 1743800 5687320 1663944 5646256 1616824 5746568 +1616216 5745480 1616824 5746568 1663944 5646256 1605152 5714888 +1620192 5752400 1616824 5746568 1616688 5746584 1620152 5752352 +1620192 5752400 1663944 5646256 1616824 5746568 1620152 5752352 +1616824 5746568 1616216 5745480 1616688 5746584 1620152 5752352 +1616688 5746584 1620064 5752296 1620152 5752352 1616824 5746568 +1616688 5746584 1620032 5752288 1620064 5752296 1616824 5746568 +1616688 5746584 1620032 5752288 1616824 5746568 1616216 5745480 +1620064 5752296 1620152 5752352 1616824 5746568 1620032 5752288 +1620152 5752352 1620192 5752400 1616824 5746568 1620064 5752296 +1616688 5746584 1619984 5752296 1620032 5752288 1616824 5746568 +1620032 5752288 1620064 5752296 1616824 5746568 1619984 5752296 +1616688 5746584 1619984 5752296 1616824 5746568 1616216 5745480 +1616688 5746584 1619936 5752328 1619984 5752296 1616824 5746568 +1616688 5746584 1619904 5752368 1619936 5752328 1616824 5746568 +1616688 5746584 1619936 5752328 1616824 5746568 1616216 5745480 +1619984 5752296 1620032 5752288 1616824 5746568 1619936 5752328 +1616688 5746584 1616824 5746568 1616216 5745480 1616232 5745520 +1616824 5746568 1663944 5646256 1616216 5745480 1616232 5745520 +1616688 5746584 1616824 5746568 1616232 5745520 1616296 5745864 +1616688 5746584 1616824 5746568 1616296 5745864 1616376 5746120 +1616824 5746568 1616232 5745520 1616296 5745864 1616376 5746120 +1616688 5746584 1619936 5752328 1616824 5746568 1616376 5746120 +1616688 5746584 1616824 5746568 1616376 5746120 1616480 5746336 +1616824 5746568 1616296 5745864 1616376 5746120 1616480 5746336 +1616688 5746584 1619936 5752328 1616824 5746568 1616480 5746336 +1616688 5746584 1616824 5746568 1616480 5746336 1616616 5746536 +1616688 5746584 1619936 5752328 1616824 5746568 1616616 5746536 +1616824 5746568 1616376 5746120 1616480 5746336 1616616 5746536 +1616824 5746568 1616216 5745480 1616232 5745520 1616296 5745864 +1616824 5746568 1616952 5746624 1663944 5646256 1616216 5745480 +1616824 5746568 1616952 5746624 1616216 5745480 1616232 5745520 +1616952 5746624 1663944 5646256 1616216 5745480 1616232 5745520 +1616824 5746568 1620192 5752400 1616952 5746624 1616232 5745520 +1620192 5752400 1616952 5746624 1616824 5746568 1620152 5752352 +1616952 5746624 1616232 5745520 1616824 5746568 1620152 5752352 +1663944 5646256 1616952 5746624 1620192 5752400 1743800 5687320 +1663944 5646256 1616952 5746624 1743800 5687320 1664040 5646192 +1663944 5646256 1605152 5714888 1616216 5745480 1616952 5746624 +1616824 5746568 1620064 5752296 1620152 5752352 1616952 5746624 +1616824 5746568 1620064 5752296 1616952 5746624 1616232 5745520 +1620152 5752352 1620192 5752400 1616952 5746624 1620064 5752296 +1616824 5746568 1620032 5752288 1620064 5752296 1616952 5746624 +1616824 5746568 1619984 5752296 1620032 5752288 1616952 5746624 +1616824 5746568 1619984 5752296 1616952 5746624 1616232 5745520 +1620032 5752288 1620064 5752296 1616952 5746624 1619984 5752296 +1620064 5752296 1620152 5752352 1616952 5746624 1620032 5752288 +1620192 5752400 1743888 5687504 1743800 5687320 1616952 5746624 +1616824 5746568 1619936 5752328 1619984 5752296 1616952 5746624 +1619984 5752296 1620032 5752288 1616952 5746624 1619936 5752328 +1616824 5746568 1619936 5752328 1616952 5746624 1616232 5745520 +1616824 5746568 1616688 5746584 1619936 5752328 1616952 5746624 +1616688 5746584 1619904 5752368 1619936 5752328 1616952 5746624 +1616824 5746568 1616688 5746584 1616952 5746624 1616232 5745520 +1616688 5746584 1619904 5752368 1616952 5746624 1616824 5746568 +1616688 5746584 1613696 5747632 1619904 5752368 1616952 5746624 +1619904 5752368 1619936 5752328 1616952 5746624 1613696 5747632 +1616688 5746584 1613752 5747576 1613696 5747632 1616952 5746624 +1616688 5746584 1613696 5747632 1616952 5746624 1616824 5746568 +1619936 5752328 1619984 5752296 1616952 5746624 1619904 5752368 +1620192 5752400 1743800 5687320 1616952 5746624 1620152 5752352 +1616952 5746624 1743800 5687320 1663944 5646256 1616216 5745480 +1616824 5746568 1616952 5746624 1616232 5745520 1616296 5745864 +1616952 5746624 1616216 5745480 1616232 5745520 1616296 5745864 +1616824 5746568 1616688 5746584 1616952 5746624 1616296 5745864 +1616824 5746568 1616952 5746624 1616296 5745864 1616376 5746120 +1613696 5747632 1619904 5752400 1619904 5752368 1616952 5746624 +1616952 5746624 1617184 5746832 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1617184 5746832 +1743800 5687320 1617184 5746832 1620192 5752400 1743888 5687504 +1616952 5746624 1620192 5752400 1617184 5746832 1663944 5646256 +1620192 5752400 1617184 5746832 1616952 5746624 1620152 5752352 +1616952 5746624 1620064 5752296 1620152 5752352 1617184 5746832 +1620192 5752400 1743800 5687320 1617184 5746832 1620152 5752352 +1616952 5746624 1620032 5752288 1620064 5752296 1617184 5746832 +1620064 5752296 1620152 5752352 1617184 5746832 1620032 5752288 +1616952 5746624 1619984 5752296 1620032 5752288 1617184 5746832 +1616952 5746624 1619936 5752328 1619984 5752296 1617184 5746832 +1619984 5752296 1620032 5752288 1617184 5746832 1619936 5752328 +1620032 5752288 1620064 5752296 1617184 5746832 1619984 5752296 +1616952 5746624 1619904 5752368 1619936 5752328 1617184 5746832 +1619936 5752328 1619984 5752296 1617184 5746832 1619904 5752368 +1616952 5746624 1613696 5747632 1619904 5752368 1617184 5746832 +1616952 5746624 1616688 5746584 1613696 5747632 1617184 5746832 +1613696 5747632 1619904 5752368 1617184 5746832 1616688 5746584 +1616688 5746584 1613752 5747576 1613696 5747632 1617184 5746832 +1616688 5746584 1613784 5747512 1613752 5747576 1617184 5746832 +1613696 5747632 1619904 5752368 1617184 5746832 1613752 5747576 +1616952 5746624 1616824 5746568 1616688 5746584 1617184 5746832 +1616688 5746584 1613752 5747576 1617184 5746832 1616952 5746624 +1619904 5752368 1619936 5752328 1617184 5746832 1613696 5747632 +1617184 5746832 1663944 5646256 1616952 5746624 1616688 5746584 +1620152 5752352 1620192 5752400 1617184 5746832 1620064 5752296 +1617184 5746832 1620192 5752400 1743800 5687320 1663944 5646256 +1616952 5746624 1617184 5746832 1663944 5646256 1616216 5745480 +1616952 5746624 1617184 5746832 1616216 5745480 1616232 5745520 +1616952 5746624 1617184 5746832 1616232 5745520 1616296 5745864 +1617184 5746832 1743800 5687320 1663944 5646256 1616216 5745480 +1663944 5646256 1605152 5714888 1616216 5745480 1617184 5746832 +1605152 5714888 1616160 5745400 1616216 5745480 1617184 5746832 +1663944 5646256 1605128 5714784 1605152 5714888 1617184 5746832 +1663944 5646256 1605152 5714888 1617184 5746832 1743800 5687320 +1616952 5746624 1616688 5746584 1617184 5746832 1616232 5745520 +1617184 5746832 1605152 5714888 1616216 5745480 1616232 5745520 +1613696 5747632 1619904 5752400 1619904 5752368 1617184 5746832 +1620192 5752400 1617256 5746856 1617184 5746832 1620152 5752352 +1620192 5752400 1743800 5687320 1617256 5746856 1620152 5752352 +1617256 5746856 1743800 5687320 1617184 5746832 1620152 5752352 +1743800 5687320 1617256 5746856 1620192 5752400 1743888 5687504 +1617184 5746832 1620064 5752296 1620152 5752352 1617256 5746856 +1617184 5746832 1620032 5752288 1620064 5752296 1617256 5746856 +1617184 5746832 1620032 5752288 1617256 5746856 1743800 5687320 +1620152 5752352 1620192 5752400 1617256 5746856 1620064 5752296 +1617184 5746832 1619984 5752296 1620032 5752288 1617256 5746856 +1620032 5752288 1620064 5752296 1617256 5746856 1619984 5752296 +1617184 5746832 1619936 5752328 1619984 5752296 1617256 5746856 +1617184 5746832 1619904 5752368 1619936 5752328 1617256 5746856 +1619936 5752328 1619984 5752296 1617256 5746856 1619904 5752368 +1617184 5746832 1619904 5752368 1617256 5746856 1743800 5687320 +1619984 5752296 1620032 5752288 1617256 5746856 1619936 5752328 +1617184 5746832 1613696 5747632 1619904 5752368 1617256 5746856 +1619904 5752368 1619936 5752328 1617256 5746856 1613696 5747632 +1617184 5746832 1613752 5747576 1613696 5747632 1617256 5746856 +1617184 5746832 1613696 5747632 1617256 5746856 1743800 5687320 +1620064 5752296 1620152 5752352 1617256 5746856 1620032 5752288 +1617184 5746832 1617256 5746856 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1617256 5746856 +1617256 5746856 1620192 5752400 1743800 5687320 1663944 5646256 +1617184 5746832 1613696 5747632 1617256 5746856 1663944 5646256 +1617184 5746832 1617256 5746856 1663944 5646256 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1617256 5746856 +1617184 5746832 1613696 5747632 1617256 5746856 1605152 5714888 +1617184 5746832 1617256 5746856 1605152 5714888 1616216 5745480 +1605152 5714888 1616160 5745400 1616216 5745480 1617256 5746856 +1617184 5746832 1613696 5747632 1617256 5746856 1616216 5745480 +1617256 5746856 1663944 5646256 1605152 5714888 1616160 5745400 +1616216 5745480 1617184 5746832 1617256 5746856 1616160 5745400 +1617256 5746856 1743800 5687320 1663944 5646256 1605152 5714888 +1617184 5746832 1617256 5746856 1616216 5745480 1616232 5745520 +1617184 5746832 1617256 5746856 1616232 5745520 1616952 5746624 +1616232 5745520 1616296 5745864 1616952 5746624 1617256 5746856 +1617184 5746832 1613696 5747632 1617256 5746856 1616952 5746624 +1617256 5746856 1616160 5745400 1616216 5745480 1616232 5745520 +1617256 5746856 1616216 5745480 1616232 5745520 1616952 5746624 +1613696 5747632 1619904 5752400 1619904 5752368 1617256 5746856 +1605152 5714888 1605152 5714944 1616160 5745400 1617256 5746856 +1617256 5746856 1617512 5746992 1743800 5687320 1663944 5646256 +1617512 5746992 1620192 5752400 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1617512 5746992 +1617256 5746856 1620192 5752400 1617512 5746992 1663944 5646256 +1620192 5752400 1617512 5746992 1617256 5746856 1620152 5752352 +1620192 5752400 1743800 5687320 1617512 5746992 1620152 5752352 +1617512 5746992 1663944 5646256 1617256 5746856 1620152 5752352 +1617256 5746856 1620064 5752296 1620152 5752352 1617512 5746992 +1617256 5746856 1620064 5752296 1617512 5746992 1663944 5646256 +1620152 5752352 1620192 5752400 1617512 5746992 1620064 5752296 +1743800 5687320 1617512 5746992 1620192 5752400 1743888 5687504 +1743800 5687320 1663944 5646256 1617512 5746992 1743888 5687504 +1617512 5746992 1620152 5752352 1620192 5752400 1743888 5687504 +1620192 5752400 1620224 5752472 1743888 5687504 1617512 5746992 +1617256 5746856 1620032 5752288 1620064 5752296 1617512 5746992 +1617256 5746856 1619984 5752296 1620032 5752288 1617512 5746992 +1617256 5746856 1619984 5752296 1617512 5746992 1663944 5646256 +1620064 5752296 1620152 5752352 1617512 5746992 1620032 5752288 +1617256 5746856 1619936 5752328 1619984 5752296 1617512 5746992 +1619984 5752296 1620032 5752288 1617512 5746992 1619936 5752328 +1617256 5746856 1619904 5752368 1619936 5752328 1617512 5746992 +1617256 5746856 1613696 5747632 1619904 5752368 1617512 5746992 +1619904 5752368 1619936 5752328 1617512 5746992 1613696 5747632 +1617256 5746856 1613696 5747632 1617512 5746992 1663944 5646256 +1619936 5752328 1619984 5752296 1617512 5746992 1619904 5752368 +1617256 5746856 1617184 5746832 1613696 5747632 1617512 5746992 +1613696 5747632 1619904 5752368 1617512 5746992 1617184 5746832 +1617184 5746832 1613752 5747576 1613696 5747632 1617512 5746992 +1613696 5747632 1619904 5752368 1617512 5746992 1613752 5747576 +1617184 5746832 1616688 5746584 1613752 5747576 1617512 5746992 +1617256 5746856 1617184 5746832 1617512 5746992 1663944 5646256 +1617184 5746832 1613752 5747576 1617512 5746992 1617256 5746856 +1620032 5752288 1620064 5752296 1617512 5746992 1619984 5752296 +1617256 5746856 1617512 5746992 1663944 5646256 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1617512 5746992 +1617512 5746992 1743800 5687320 1663944 5646256 1605152 5714888 +1617256 5746856 1617184 5746832 1617512 5746992 1605152 5714888 +1617256 5746856 1617512 5746992 1605152 5714888 1616160 5745400 +1617256 5746856 1617512 5746992 1616160 5745400 1616216 5745480 +1617256 5746856 1617184 5746832 1617512 5746992 1616216 5745480 +1617512 5746992 1605152 5714888 1616160 5745400 1616216 5745480 +1617256 5746856 1617512 5746992 1616216 5745480 1616232 5745520 +1617512 5746992 1616160 5745400 1616216 5745480 1616232 5745520 +1617256 5746856 1617184 5746832 1617512 5746992 1616232 5745520 +1617512 5746992 1663944 5646256 1605152 5714888 1616160 5745400 +1617256 5746856 1617512 5746992 1616232 5745520 1616952 5746624 +1617256 5746856 1617512 5746992 1616952 5746624 1617184 5746832 +1616232 5745520 1616296 5745864 1616952 5746624 1617512 5746992 +1617256 5746856 1617184 5746832 1617512 5746992 1616952 5746624 +1617512 5746992 1616216 5745480 1616232 5745520 1616952 5746624 +1613696 5747632 1619904 5752400 1619904 5752368 1617512 5746992 +1605152 5714888 1605152 5714944 1616160 5745400 1617512 5746992 +1620192 5752400 1617608 5747096 1617512 5746992 1620152 5752352 +1617608 5747096 1743888 5687504 1617512 5746992 1620152 5752352 +1617512 5746992 1620064 5752296 1620152 5752352 1617608 5747096 +1617512 5746992 1620064 5752296 1617608 5747096 1743888 5687504 +1620152 5752352 1620192 5752400 1617608 5747096 1620064 5752296 +1617512 5746992 1620032 5752288 1620064 5752296 1617608 5747096 +1617512 5746992 1620032 5752288 1617608 5747096 1743888 5687504 +1620064 5752296 1620152 5752352 1617608 5747096 1620032 5752288 +1620192 5752400 1743888 5687504 1617608 5747096 1620152 5752352 +1617512 5746992 1617608 5747096 1743888 5687504 1743800 5687320 +1617512 5746992 1617608 5747096 1743800 5687320 1663944 5646256 +1617512 5746992 1620032 5752288 1617608 5747096 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1617608 5747096 +1617512 5746992 1617608 5747096 1663944 5646256 1605152 5714888 +1663944 5646256 1605128 5714784 1605152 5714888 1617608 5747096 +1617608 5747096 1743800 5687320 1663944 5646256 1605152 5714888 +1617512 5746992 1620032 5752288 1617608 5747096 1605152 5714888 +1617608 5747096 1620192 5752400 1743888 5687504 1743800 5687320 +1617608 5747096 1743888 5687504 1743800 5687320 1663944 5646256 +1743888 5687504 1617608 5747096 1620192 5752400 1620224 5752472 +1617512 5746992 1619984 5752296 1620032 5752288 1617608 5747096 +1617512 5746992 1619984 5752296 1617608 5747096 1605152 5714888 +1617512 5746992 1619936 5752328 1619984 5752296 1617608 5747096 +1617512 5746992 1619936 5752328 1617608 5747096 1605152 5714888 +1620032 5752288 1620064 5752296 1617608 5747096 1619984 5752296 +1617512 5746992 1619904 5752368 1619936 5752328 1617608 5747096 +1617512 5746992 1619904 5752368 1617608 5747096 1605152 5714888 +1619936 5752328 1619984 5752296 1617608 5747096 1619904 5752368 +1617512 5746992 1613696 5747632 1619904 5752368 1617608 5747096 +1617512 5746992 1613752 5747576 1613696 5747632 1617608 5747096 +1617512 5746992 1617184 5746832 1613752 5747576 1617608 5747096 +1613752 5747576 1613696 5747632 1617608 5747096 1617184 5746832 +1617512 5746992 1617184 5746832 1617608 5747096 1605152 5714888 +1617184 5746832 1616688 5746584 1613752 5747576 1617608 5747096 +1613696 5747632 1619904 5752368 1617608 5747096 1613752 5747576 +1619904 5752368 1619936 5752328 1617608 5747096 1613696 5747632 +1617512 5746992 1617256 5746856 1617184 5746832 1617608 5747096 +1617184 5746832 1613752 5747576 1617608 5747096 1617256 5746856 +1617512 5746992 1617256 5746856 1617608 5747096 1605152 5714888 +1619984 5752296 1620032 5752288 1617608 5747096 1619936 5752328 +1617512 5746992 1617608 5747096 1605152 5714888 1616160 5745400 +1617512 5746992 1617256 5746856 1617608 5747096 1616160 5745400 +1617608 5747096 1663944 5646256 1605152 5714888 1616160 5745400 +1617512 5746992 1617608 5747096 1616160 5745400 1616216 5745480 +1613696 5747632 1619904 5752400 1619904 5752368 1617608 5747096 +1605152 5714888 1605152 5714944 1616160 5745400 1617608 5747096 +1620192 5752400 1617712 5747256 1617608 5747096 1620152 5752352 +1620192 5752400 1743888 5687504 1617712 5747256 1620152 5752352 +1617608 5747096 1620064 5752296 1620152 5752352 1617712 5747256 +1617608 5747096 1620032 5752288 1620064 5752296 1617712 5747256 +1620064 5752296 1620152 5752352 1617712 5747256 1620032 5752288 +1617608 5747096 1619984 5752296 1620032 5752288 1617712 5747256 +1620032 5752288 1620064 5752296 1617712 5747256 1619984 5752296 +1617712 5747256 1743888 5687504 1617608 5747096 1619984 5752296 +1620152 5752352 1620192 5752400 1617712 5747256 1620064 5752296 +1617608 5747096 1617712 5747256 1743888 5687504 1743800 5687320 +1617608 5747096 1619984 5752296 1617712 5747256 1743800 5687320 +1617712 5747256 1620192 5752400 1743888 5687504 1743800 5687320 +1617608 5747096 1617712 5747256 1743800 5687320 1663944 5646256 +1617608 5747096 1617712 5747256 1663944 5646256 1605152 5714888 +1743800 5687320 1664040 5646192 1663944 5646256 1617712 5747256 +1617712 5747256 1743888 5687504 1743800 5687320 1663944 5646256 +1617608 5747096 1619984 5752296 1617712 5747256 1663944 5646256 +1743888 5687504 1617712 5747256 1620192 5752400 1620224 5752472 +1617608 5747096 1619936 5752328 1619984 5752296 1617712 5747256 +1617608 5747096 1619904 5752368 1619936 5752328 1617712 5747256 +1619984 5752296 1620032 5752288 1617712 5747256 1619936 5752328 +1617608 5747096 1619904 5752368 1617712 5747256 1663944 5646256 +1617608 5747096 1613696 5747632 1619904 5752368 1617712 5747256 +1619904 5752368 1619936 5752328 1617712 5747256 1613696 5747632 +1617608 5747096 1613752 5747576 1613696 5747632 1617712 5747256 +1617608 5747096 1617184 5746832 1613752 5747576 1617712 5747256 +1617608 5747096 1617256 5746856 1617184 5746832 1617712 5747256 +1617184 5746832 1613752 5747576 1617712 5747256 1617256 5746856 +1617184 5746832 1616688 5746584 1613752 5747576 1617712 5747256 +1613752 5747576 1613696 5747632 1617712 5747256 1617184 5746832 +1617608 5747096 1617256 5746856 1617712 5747256 1663944 5646256 +1613696 5747632 1619904 5752368 1617712 5747256 1613752 5747576 +1617608 5747096 1617512 5746992 1617256 5746856 1617712 5747256 +1619936 5752328 1619984 5752296 1617712 5747256 1619904 5752368 +1613696 5747632 1619904 5752400 1619904 5752368 1617712 5747256 +1617712 5747256 1619984 5752296 1620032 5752288 1617768 5747376 +1617712 5747256 1619984 5752296 1617768 5747376 1620152 5752352 +1620032 5752288 1620064 5752296 1617768 5747376 1619984 5752296 +1617712 5747256 1619936 5752328 1619984 5752296 1617768 5747376 +1617712 5747256 1619936 5752328 1617768 5747376 1620152 5752352 +1619984 5752296 1620032 5752288 1617768 5747376 1619936 5752328 +1617712 5747256 1617768 5747376 1620152 5752352 1620192 5752400 +1617712 5747256 1617768 5747376 1620192 5752400 1743888 5687504 +1617712 5747256 1619936 5752328 1617768 5747376 1743888 5687504 +1617768 5747376 1620064 5752296 1620152 5752352 1620192 5752400 +1617768 5747376 1620152 5752352 1620192 5752400 1743888 5687504 +1617712 5747256 1617768 5747376 1743888 5687504 1743800 5687320 +1620192 5752400 1620224 5752472 1743888 5687504 1617768 5747376 +1617712 5747256 1619904 5752368 1619936 5752328 1617768 5747376 +1617712 5747256 1619904 5752368 1617768 5747376 1743888 5687504 +1617712 5747256 1613696 5747632 1619904 5752368 1617768 5747376 +1617712 5747256 1613696 5747632 1617768 5747376 1743888 5687504 +1619936 5752328 1619984 5752296 1617768 5747376 1619904 5752368 +1617712 5747256 1613752 5747576 1613696 5747632 1617768 5747376 +1617712 5747256 1613752 5747576 1617768 5747376 1743888 5687504 +1613696 5747632 1619904 5752368 1617768 5747376 1613752 5747576 +1617712 5747256 1617184 5746832 1613752 5747576 1617768 5747376 +1617712 5747256 1617256 5746856 1617184 5746832 1617768 5747376 +1617712 5747256 1617184 5746832 1617768 5747376 1743888 5687504 +1617184 5746832 1616688 5746584 1613752 5747576 1617768 5747376 +1616688 5746584 1613784 5747512 1613752 5747576 1617768 5747376 +1617184 5746832 1616688 5746584 1617768 5747376 1617712 5747256 +1617184 5746832 1616952 5746624 1616688 5746584 1617768 5747376 +1613752 5747576 1613696 5747632 1617768 5747376 1616688 5746584 +1619904 5752368 1619936 5752328 1617768 5747376 1613696 5747632 +1613696 5747632 1619904 5752400 1619904 5752368 1617768 5747376 +1613696 5747632 1617848 5747624 1617768 5747376 1613752 5747576 +1613696 5747632 1619904 5752368 1617848 5747624 1613752 5747576 +1617848 5747624 1619904 5752368 1617768 5747376 1613752 5747576 +1617768 5747376 1616688 5746584 1613752 5747576 1617848 5747624 +1617768 5747376 1616688 5746584 1617848 5747624 1619904 5752368 +1616688 5746584 1613784 5747512 1613752 5747576 1617848 5747624 +1617768 5747376 1617184 5746832 1616688 5746584 1617848 5747624 +1617768 5747376 1617184 5746832 1617848 5747624 1619904 5752368 +1613752 5747576 1613696 5747632 1617848 5747624 1616688 5746584 +1617768 5747376 1617712 5747256 1617184 5746832 1617848 5747624 +1617184 5746832 1616952 5746624 1616688 5746584 1617848 5747624 +1616688 5746584 1613752 5747576 1617848 5747624 1617184 5746832 +1617768 5747376 1617848 5747624 1619904 5752368 1619936 5752328 +1617768 5747376 1617184 5746832 1617848 5747624 1619936 5752328 +1617848 5747624 1613696 5747632 1619904 5752368 1619936 5752328 +1617768 5747376 1617848 5747624 1619936 5752328 1619984 5752296 +1617768 5747376 1617184 5746832 1617848 5747624 1619984 5752296 +1617768 5747376 1617848 5747624 1619984 5752296 1620032 5752288 +1617768 5747376 1617184 5746832 1617848 5747624 1620032 5752288 +1617768 5747376 1617848 5747624 1620032 5752288 1620064 5752296 +1617768 5747376 1617184 5746832 1617848 5747624 1620064 5752296 +1617768 5747376 1617848 5747624 1620064 5752296 1620152 5752352 +1617768 5747376 1617184 5746832 1617848 5747624 1620152 5752352 +1617848 5747624 1620032 5752288 1620064 5752296 1620152 5752352 +1617768 5747376 1617848 5747624 1620152 5752352 1620192 5752400 +1617848 5747624 1620064 5752296 1620152 5752352 1620192 5752400 +1617768 5747376 1617184 5746832 1617848 5747624 1620192 5752400 +1617848 5747624 1619984 5752296 1620032 5752288 1620064 5752296 +1617848 5747624 1619936 5752328 1619984 5752296 1620032 5752288 +1617768 5747376 1617848 5747624 1620192 5752400 1743888 5687504 +1617848 5747624 1619904 5752368 1619936 5752328 1619984 5752296 +1619904 5752368 1617848 5747624 1613696 5747632 1619904 5752400 +1613696 5747632 1617904 5747904 1617848 5747624 1613752 5747576 +1617904 5747904 1619904 5752368 1617848 5747624 1613752 5747576 +1617848 5747624 1617904 5747904 1619904 5752368 1619936 5752328 +1617848 5747624 1613752 5747576 1617904 5747904 1619936 5752328 +1617904 5747904 1613696 5747632 1619904 5752368 1619936 5752328 +1613696 5747632 1619904 5752368 1617904 5747904 1613752 5747576 +1617848 5747624 1616688 5746584 1613752 5747576 1617904 5747904 +1613752 5747576 1613696 5747632 1617904 5747904 1616688 5746584 +1617848 5747624 1616688 5746584 1617904 5747904 1619936 5752328 +1616688 5746584 1613784 5747512 1613752 5747576 1617904 5747904 +1617848 5747624 1617184 5746832 1616688 5746584 1617904 5747904 +1617848 5747624 1617184 5746832 1617904 5747904 1619936 5752328 +1617848 5747624 1617768 5747376 1617184 5746832 1617904 5747904 +1616688 5746584 1613752 5747576 1617904 5747904 1617184 5746832 +1617184 5746832 1616952 5746624 1616688 5746584 1617904 5747904 +1617848 5747624 1617904 5747904 1619936 5752328 1619984 5752296 +1617848 5747624 1617184 5746832 1617904 5747904 1619984 5752296 +1617904 5747904 1619904 5752368 1619936 5752328 1619984 5752296 +1617848 5747624 1617904 5747904 1619984 5752296 1620032 5752288 +1617848 5747624 1617184 5746832 1617904 5747904 1620032 5752288 +1617848 5747624 1617904 5747904 1620032 5752288 1620064 5752296 +1617848 5747624 1617184 5746832 1617904 5747904 1620064 5752296 +1617848 5747624 1617904 5747904 1620064 5752296 1620152 5752352 +1617848 5747624 1617904 5747904 1620152 5752352 1620192 5752400 +1617848 5747624 1617184 5746832 1617904 5747904 1620152 5752352 +1617904 5747904 1620032 5752288 1620064 5752296 1620152 5752352 +1617904 5747904 1619984 5752296 1620032 5752288 1620064 5752296 +1617904 5747904 1619936 5752328 1619984 5752296 1620032 5752288 +1619904 5752368 1617904 5747904 1613696 5747632 1619904 5752400 +1617904 5747904 1617896 5748024 1619904 5752368 1619936 5752328 +1617904 5747904 1617896 5748024 1619936 5752328 1619984 5752296 +1617896 5748024 1619904 5752368 1619936 5752328 1619984 5752296 +1617904 5747904 1613696 5747632 1617896 5748024 1619984 5752296 +1613696 5747632 1617896 5748024 1617904 5747904 1613752 5747576 +1617904 5747904 1616688 5746584 1613752 5747576 1617896 5748024 +1616688 5746584 1613784 5747512 1613752 5747576 1617896 5748024 +1617896 5748024 1619984 5752296 1617904 5747904 1616688 5746584 +1613752 5747576 1613696 5747632 1617896 5748024 1616688 5746584 +1617896 5748024 1613696 5747632 1619904 5752368 1619936 5752328 +1613696 5747632 1619904 5752368 1617896 5748024 1613752 5747576 +1617904 5747904 1617184 5746832 1616688 5746584 1617896 5748024 +1616688 5746584 1613752 5747576 1617896 5748024 1617184 5746832 +1617904 5747904 1617184 5746832 1617896 5748024 1619984 5752296 +1617184 5746832 1616952 5746624 1616688 5746584 1617896 5748024 +1617904 5747904 1617848 5747624 1617184 5746832 1617896 5748024 +1617904 5747904 1617848 5747624 1617896 5748024 1619984 5752296 +1617848 5747624 1617768 5747376 1617184 5746832 1617896 5748024 +1617184 5746832 1616688 5746584 1617896 5748024 1617848 5747624 +1617904 5747904 1617896 5748024 1619984 5752296 1620032 5752288 +1617896 5748024 1619936 5752328 1619984 5752296 1620032 5752288 +1617904 5747904 1617848 5747624 1617896 5748024 1620032 5752288 +1617904 5747904 1617896 5748024 1620032 5752288 1620064 5752296 +1617904 5747904 1617848 5747624 1617896 5748024 1620064 5752296 +1617904 5747904 1617896 5748024 1620064 5752296 1620152 5752352 +1617896 5748024 1619984 5752296 1620032 5752288 1620064 5752296 +1619904 5752368 1617896 5748024 1613696 5747632 1619904 5752400 +1617896 5748024 1617848 5748112 1619904 5752368 1619936 5752328 +1617896 5748024 1617848 5748112 1619936 5752328 1619984 5752296 +1617896 5748024 1617848 5748112 1619984 5752296 1620032 5752288 +1617848 5748112 1619936 5752328 1619984 5752296 1620032 5752288 +1617848 5748112 1619904 5752368 1619936 5752328 1619984 5752296 +1617896 5748024 1613696 5747632 1617848 5748112 1620032 5752288 +1613696 5747632 1617848 5748112 1617896 5748024 1613752 5747576 +1617896 5748024 1616688 5746584 1613752 5747576 1617848 5748112 +1617896 5748024 1617184 5746832 1616688 5746584 1617848 5748112 +1616688 5746584 1613784 5747512 1613752 5747576 1617848 5748112 +1616688 5746584 1613752 5747576 1617848 5748112 1617184 5746832 +1617848 5748112 1620032 5752288 1617896 5748024 1617184 5746832 +1613752 5747576 1613696 5747632 1617848 5748112 1616688 5746584 +1617896 5748024 1617848 5747624 1617184 5746832 1617848 5748112 +1617184 5746832 1616688 5746584 1617848 5748112 1617848 5747624 +1617896 5748024 1617848 5747624 1617848 5748112 1620032 5752288 +1617848 5747624 1617768 5747376 1617184 5746832 1617848 5748112 +1617184 5746832 1616952 5746624 1616688 5746584 1617848 5748112 +1617896 5748024 1617904 5747904 1617848 5747624 1617848 5748112 +1617896 5748024 1617904 5747904 1617848 5748112 1620032 5752288 +1617848 5747624 1617184 5746832 1617848 5748112 1617904 5747904 +1617896 5748024 1617848 5748112 1620032 5752288 1620064 5752296 +1617848 5748112 1613696 5747632 1619904 5752368 1619936 5752328 +1613696 5747632 1619904 5752368 1617848 5748112 1613752 5747576 +1619904 5752368 1617848 5748112 1613696 5747632 1619904 5752400 +1617848 5748112 1617816 5748136 1619904 5752368 1619936 5752328 +1617848 5748112 1617816 5748136 1619936 5752328 1619984 5752296 +1617848 5748112 1617816 5748136 1619984 5752296 1620032 5752288 +1617816 5748136 1619904 5752368 1619936 5752328 1619984 5752296 +1617848 5748112 1613696 5747632 1617816 5748136 1619984 5752296 +1613696 5747632 1617816 5748136 1617848 5748112 1613752 5747576 +1613696 5747632 1619904 5752368 1617816 5748136 1613752 5747576 +1617848 5748112 1616688 5746584 1613752 5747576 1617816 5748136 +1616688 5746584 1613784 5747512 1613752 5747576 1617816 5748136 +1617848 5748112 1617184 5746832 1616688 5746584 1617816 5748136 +1617848 5748112 1617848 5747624 1617184 5746832 1617816 5748136 +1617184 5746832 1616688 5746584 1617816 5748136 1617848 5747624 +1616688 5746584 1613784 5747512 1617816 5748136 1617184 5746832 +1617848 5747624 1617768 5747376 1617184 5746832 1617816 5748136 +1617848 5747624 1617768 5747376 1617816 5748136 1617848 5748112 +1617184 5746832 1616688 5746584 1617816 5748136 1617768 5747376 +1617848 5748112 1617904 5747904 1617848 5747624 1617816 5748136 +1617848 5747624 1617768 5747376 1617816 5748136 1617904 5747904 +1617768 5747376 1617712 5747256 1617184 5746832 1617816 5748136 +1617184 5746832 1616952 5746624 1616688 5746584 1617816 5748136 +1617848 5748112 1617896 5748024 1617904 5747904 1617816 5748136 +1617904 5747904 1617848 5747624 1617816 5748136 1617896 5748024 +1617816 5748136 1619984 5752296 1617848 5748112 1617896 5748024 +1613752 5747576 1613696 5747632 1617816 5748136 1613784 5747512 +1617816 5748136 1613696 5747632 1619904 5752368 1619936 5752328 +1619904 5752368 1617816 5748136 1613696 5747632 1619904 5752400 +1616688 5746584 1616616 5746536 1613784 5747512 1617816 5748136 +1613696 5747632 1617744 5748128 1617816 5748136 1613752 5747576 +1613696 5747632 1619904 5752368 1617744 5748128 1613752 5747576 +1617816 5748136 1613784 5747512 1613752 5747576 1617744 5748128 +1613752 5747576 1613696 5747632 1617744 5748128 1613784 5747512 +1617816 5748136 1616688 5746584 1613784 5747512 1617744 5748128 +1617816 5748136 1617184 5746832 1616688 5746584 1617744 5748128 +1616688 5746584 1613784 5747512 1617744 5748128 1617184 5746832 +1617816 5748136 1617768 5747376 1617184 5746832 1617744 5748128 +1617184 5746832 1616688 5746584 1617744 5748128 1617768 5747376 +1617816 5748136 1617848 5747624 1617768 5747376 1617744 5748128 +1617816 5748136 1617904 5747904 1617848 5747624 1617744 5748128 +1617768 5747376 1617184 5746832 1617744 5748128 1617848 5747624 +1617848 5747624 1617768 5747376 1617744 5748128 1617904 5747904 +1617816 5748136 1617896 5748024 1617904 5747904 1617744 5748128 +1617904 5747904 1617848 5747624 1617744 5748128 1617896 5748024 +1617768 5747376 1617712 5747256 1617184 5746832 1617744 5748128 +1617184 5746832 1616952 5746624 1616688 5746584 1617744 5748128 +1617816 5748136 1617848 5748112 1617896 5748024 1617744 5748128 +1617896 5748024 1617904 5747904 1617744 5748128 1617848 5748112 +1613784 5747512 1613752 5747576 1617744 5748128 1616688 5746584 +1617816 5748136 1617744 5748128 1619904 5752368 1619936 5752328 +1617744 5748128 1619904 5752368 1617816 5748136 1617848 5748112 +1619904 5752368 1617744 5748128 1613696 5747632 1619904 5752400 +1616688 5746584 1616616 5746536 1613784 5747512 1617744 5748128 +1616688 5746584 1617584 5748040 1617744 5748128 1617184 5746832 +1617584 5748040 1613784 5747512 1617744 5748128 1617184 5746832 +1616688 5746584 1613784 5747512 1617584 5748040 1617184 5746832 +1617744 5748128 1617768 5747376 1617184 5746832 1617584 5748040 +1617744 5748128 1617768 5747376 1617584 5748040 1613784 5747512 +1617184 5746832 1616688 5746584 1617584 5748040 1617768 5747376 +1617744 5748128 1617848 5747624 1617768 5747376 1617584 5748040 +1617744 5748128 1617848 5747624 1617584 5748040 1613784 5747512 +1617768 5747376 1617184 5746832 1617584 5748040 1617848 5747624 +1617744 5748128 1617904 5747904 1617848 5747624 1617584 5748040 +1617744 5748128 1617904 5747904 1617584 5748040 1613784 5747512 +1617744 5748128 1617896 5748024 1617904 5747904 1617584 5748040 +1617744 5748128 1617896 5748024 1617584 5748040 1613784 5747512 +1617848 5747624 1617768 5747376 1617584 5748040 1617904 5747904 +1617904 5747904 1617848 5747624 1617584 5748040 1617896 5748024 +1617744 5748128 1617848 5748112 1617896 5748024 1617584 5748040 +1617768 5747376 1617712 5747256 1617184 5746832 1617584 5748040 +1617712 5747256 1617256 5746856 1617184 5746832 1617584 5748040 +1617184 5746832 1616688 5746584 1617584 5748040 1617256 5746856 +1617712 5747256 1617608 5747096 1617256 5746856 1617584 5748040 +1617256 5746856 1617184 5746832 1617584 5748040 1617608 5747096 +1617768 5747376 1617712 5747256 1617584 5748040 1617848 5747624 +1617712 5747256 1617608 5747096 1617584 5748040 1617768 5747376 +1616688 5746584 1617584 5748040 1617184 5746832 1616952 5746624 +1617608 5747096 1617512 5746992 1617256 5746856 1617584 5748040 +1617744 5748128 1617584 5748040 1613784 5747512 1613752 5747576 +1617744 5748128 1617896 5748024 1617584 5748040 1613752 5747576 +1617584 5748040 1616688 5746584 1613784 5747512 1613752 5747576 +1617744 5748128 1617584 5748040 1613752 5747576 1613696 5747632 +1617744 5748128 1617896 5748024 1617584 5748040 1613696 5747632 +1617744 5748128 1617584 5748040 1613696 5747632 1619904 5752368 +1617744 5748128 1617896 5748024 1617584 5748040 1619904 5752368 +1617584 5748040 1613752 5747576 1613696 5747632 1619904 5752368 +1617744 5748128 1617584 5748040 1619904 5752368 1617816 5748136 +1617584 5748040 1613784 5747512 1613752 5747576 1613696 5747632 +1613696 5747632 1619904 5752400 1619904 5752368 1617584 5748040 +1613784 5747512 1617584 5748040 1616688 5746584 1616616 5746536 +1617584 5748040 1617328 5747824 1613784 5747512 1613752 5747576 +1617328 5747824 1616688 5746584 1613784 5747512 1613752 5747576 +1617584 5748040 1616688 5746584 1617328 5747824 1613752 5747576 +1616688 5746584 1617328 5747824 1617584 5748040 1617184 5746832 +1616688 5746584 1613784 5747512 1617328 5747824 1617184 5746832 +1617328 5747824 1613752 5747576 1617584 5748040 1617184 5746832 +1617584 5748040 1617256 5746856 1617184 5746832 1617328 5747824 +1617584 5748040 1617256 5746856 1617328 5747824 1613752 5747576 +1617184 5746832 1616688 5746584 1617328 5747824 1617256 5746856 +1617584 5748040 1617608 5747096 1617256 5746856 1617328 5747824 +1617584 5748040 1617608 5747096 1617328 5747824 1613752 5747576 +1617256 5746856 1617184 5746832 1617328 5747824 1617608 5747096 +1617584 5748040 1617712 5747256 1617608 5747096 1617328 5747824 +1617584 5748040 1617712 5747256 1617328 5747824 1613752 5747576 +1617608 5747096 1617256 5746856 1617328 5747824 1617712 5747256 +1617584 5748040 1617768 5747376 1617712 5747256 1617328 5747824 +1617584 5748040 1617768 5747376 1617328 5747824 1613752 5747576 +1617712 5747256 1617608 5747096 1617328 5747824 1617768 5747376 +1617584 5748040 1617848 5747624 1617768 5747376 1617328 5747824 +1617584 5748040 1617848 5747624 1617328 5747824 1613752 5747576 +1617584 5748040 1617904 5747904 1617848 5747624 1617328 5747824 +1617768 5747376 1617712 5747256 1617328 5747824 1617848 5747624 +1616688 5746584 1617328 5747824 1617184 5746832 1616952 5746624 +1617608 5747096 1617512 5746992 1617256 5746856 1617328 5747824 +1617608 5747096 1617512 5746992 1617328 5747824 1617712 5747256 +1617256 5746856 1617184 5746832 1617328 5747824 1617512 5746992 +1617584 5748040 1617328 5747824 1613752 5747576 1613696 5747632 +1617328 5747824 1613784 5747512 1613752 5747576 1613696 5747632 +1617584 5748040 1617328 5747824 1613696 5747632 1619904 5752368 +1617584 5748040 1617848 5747624 1617328 5747824 1613696 5747632 +1613784 5747512 1617328 5747824 1616688 5746584 1616616 5746536 +1613784 5747512 1613752 5747576 1617328 5747824 1616616 5746536 +1617328 5747824 1617184 5746832 1616688 5746584 1616616 5746536 +1613784 5747512 1617328 5747824 1616616 5746536 1616480 5746336 +1617328 5747824 1617120 5747688 1613784 5747512 1613752 5747576 +1617328 5747824 1617120 5747688 1613752 5747576 1613696 5747632 +1617120 5747688 1616616 5746536 1613784 5747512 1613752 5747576 +1617120 5747688 1613784 5747512 1613752 5747576 1613696 5747632 +1617328 5747824 1616616 5746536 1617120 5747688 1613696 5747632 +1617328 5747824 1617120 5747688 1613696 5747632 1617584 5748040 +1617120 5747688 1613752 5747576 1613696 5747632 1617584 5748040 +1613696 5747632 1619904 5752368 1617584 5748040 1617120 5747688 +1617328 5747824 1616616 5746536 1617120 5747688 1617584 5748040 +1616616 5746536 1617120 5747688 1617328 5747824 1616688 5746584 +1616616 5746536 1613784 5747512 1617120 5747688 1616688 5746584 +1617120 5747688 1617584 5748040 1617328 5747824 1616688 5746584 +1617328 5747824 1617184 5746832 1616688 5746584 1617120 5747688 +1617328 5747824 1617184 5746832 1617120 5747688 1617584 5748040 +1617328 5747824 1617256 5746856 1617184 5746832 1617120 5747688 +1617328 5747824 1617256 5746856 1617120 5747688 1617584 5748040 +1617184 5746832 1616688 5746584 1617120 5747688 1617256 5746856 +1617328 5747824 1617512 5746992 1617256 5746856 1617120 5747688 +1617328 5747824 1617512 5746992 1617120 5747688 1617584 5748040 +1617256 5746856 1617184 5746832 1617120 5747688 1617512 5746992 +1617184 5746832 1616952 5746624 1616688 5746584 1617120 5747688 +1617328 5747824 1617608 5747096 1617512 5746992 1617120 5747688 +1617328 5747824 1617608 5747096 1617120 5747688 1617584 5748040 +1617328 5747824 1617712 5747256 1617608 5747096 1617120 5747688 +1617328 5747824 1617712 5747256 1617120 5747688 1617584 5748040 +1617512 5746992 1617256 5746856 1617120 5747688 1617608 5747096 +1617328 5747824 1617768 5747376 1617712 5747256 1617120 5747688 +1617608 5747096 1617512 5746992 1617120 5747688 1617712 5747256 +1616688 5746584 1616616 5746536 1617120 5747688 1617184 5746832 +1613784 5747512 1617120 5747688 1616616 5746536 1616480 5746336 +1616616 5746536 1616832 5747544 1617120 5747688 1616688 5746584 +1617120 5747688 1616832 5747544 1613784 5747512 1613752 5747576 +1616832 5747544 1616616 5746536 1613784 5747512 1613752 5747576 +1616832 5747544 1613752 5747576 1617120 5747688 1616688 5746584 +1617120 5747688 1616832 5747544 1613752 5747576 1613696 5747632 +1617120 5747688 1616832 5747544 1613696 5747632 1617584 5748040 +1613696 5747632 1619904 5752368 1617584 5748040 1616832 5747544 +1616832 5747544 1613784 5747512 1613752 5747576 1613696 5747632 +1617120 5747688 1616688 5746584 1616832 5747544 1617584 5748040 +1616832 5747544 1613752 5747576 1613696 5747632 1617584 5748040 +1616616 5746536 1613784 5747512 1616832 5747544 1616688 5746584 +1617120 5747688 1616832 5747544 1617584 5748040 1617328 5747824 +1617120 5747688 1617184 5746832 1616688 5746584 1616832 5747544 +1616688 5746584 1616616 5746536 1616832 5747544 1617184 5746832 +1617120 5747688 1617184 5746832 1616832 5747544 1617584 5748040 +1617120 5747688 1617256 5746856 1617184 5746832 1616832 5747544 +1617120 5747688 1617256 5746856 1616832 5747544 1617584 5748040 +1617120 5747688 1617512 5746992 1617256 5746856 1616832 5747544 +1617184 5746832 1616952 5746624 1616688 5746584 1616832 5747544 +1616688 5746584 1616616 5746536 1616832 5747544 1616952 5746624 +1616952 5746624 1616824 5746568 1616688 5746584 1616832 5747544 +1617184 5746832 1616952 5746624 1616832 5747544 1617256 5746856 +1613784 5747512 1616832 5747544 1616616 5746536 1616480 5746336 +1616832 5747544 1616824 5747528 1613784 5747512 1613752 5747576 +1616616 5746536 1616824 5747528 1616832 5747544 1616688 5746584 +1616832 5747544 1616952 5746624 1616688 5746584 1616824 5747528 +1616824 5747528 1613784 5747512 1616832 5747544 1616952 5746624 +1616952 5746624 1616824 5746568 1616688 5746584 1616824 5747528 +1616832 5747544 1617184 5746832 1616952 5746624 1616824 5747528 +1616952 5746624 1616688 5746584 1616824 5747528 1617184 5746832 +1616832 5747544 1617184 5746832 1616824 5747528 1613784 5747512 +1616688 5746584 1616616 5746536 1616824 5747528 1616952 5746624 +1616616 5746536 1613784 5747512 1616824 5747528 1616688 5746584 +1616832 5747544 1617256 5746856 1617184 5746832 1616824 5747528 +1616832 5747544 1617256 5746856 1616824 5747528 1613784 5747512 +1616832 5747544 1617120 5747688 1617256 5746856 1616824 5747528 +1616832 5747544 1617120 5747688 1616824 5747528 1613784 5747512 +1617120 5747688 1617512 5746992 1617256 5746856 1616824 5747528 +1617184 5746832 1616952 5746624 1616824 5747528 1617256 5746856 +1617256 5746856 1617184 5746832 1616824 5747528 1617120 5747688 +1613784 5747512 1616824 5747528 1616616 5746536 1616480 5746336 +1616824 5747528 1616480 5747376 1613784 5747512 1616832 5747544 +1613784 5747512 1613752 5747576 1616832 5747544 1616480 5747376 +1613752 5747576 1613696 5747632 1616832 5747544 1616480 5747376 +1613752 5747576 1613696 5747632 1616480 5747376 1613784 5747512 +1613696 5747632 1617584 5748040 1616832 5747544 1616480 5747376 +1616832 5747544 1616824 5747528 1616480 5747376 1613696 5747632 +1616824 5747528 1616616 5746536 1616480 5747376 1616832 5747544 +1616616 5746536 1616480 5747376 1616824 5747528 1616688 5746584 +1616824 5747528 1616952 5746624 1616688 5746584 1616480 5747376 +1616824 5747528 1617184 5746832 1616952 5746624 1616480 5747376 +1616952 5746624 1616824 5746568 1616688 5746584 1616480 5747376 +1616824 5747528 1617256 5746856 1617184 5746832 1616480 5747376 +1616952 5746624 1616688 5746584 1616480 5747376 1617184 5746832 +1616480 5747376 1616832 5747544 1616824 5747528 1617184 5746832 +1616688 5746584 1616616 5746536 1616480 5747376 1616952 5746624 +1616480 5747376 1616616 5746536 1613784 5747512 1613752 5747576 +1616616 5746536 1613784 5747512 1616480 5747376 1616688 5746584 +1613784 5747512 1616480 5747376 1616616 5746536 1616480 5746336 +1613784 5747512 1616480 5747376 1616480 5746336 1613768 5747456 +1616480 5746336 1616376 5746120 1613768 5747456 1616480 5747376 +1616376 5746120 1613680 5747344 1613768 5747456 1616480 5747376 +1613768 5747456 1613784 5747512 1616480 5747376 1616376 5746120 +1613784 5747512 1613752 5747576 1616480 5747376 1613768 5747456 +1616480 5747376 1616688 5746584 1616616 5746536 1616480 5746336 +1616480 5747376 1616616 5746536 1616480 5746336 1616376 5746120 +1613768 5747456 1616456 5747352 1616376 5746120 1613680 5747344 +1616376 5746120 1616456 5747352 1616480 5747376 1616480 5746336 +1616480 5747376 1616456 5747352 1613768 5747456 1613784 5747512 +1616376 5746120 1613768 5747456 1616456 5747352 1616480 5746336 +1616480 5747376 1616456 5747352 1613784 5747512 1613752 5747576 +1616480 5747376 1616456 5747352 1613752 5747576 1613696 5747632 +1616456 5747352 1613768 5747456 1613784 5747512 1613752 5747576 +1616456 5747352 1613752 5747576 1616480 5747376 1616480 5746336 +1616456 5747352 1616376 5746120 1613768 5747456 1613784 5747512 +1616480 5747376 1616616 5746536 1616480 5746336 1616456 5747352 +1616480 5746336 1616376 5746120 1616456 5747352 1616616 5746536 +1616480 5747376 1616616 5746536 1616456 5747352 1613752 5747576 +1616480 5747376 1616688 5746584 1616616 5746536 1616456 5747352 +1616480 5747376 1616952 5746624 1616688 5746584 1616456 5747352 +1616952 5746624 1616824 5746568 1616688 5746584 1616456 5747352 +1616480 5747376 1617184 5746832 1616952 5746624 1616456 5747352 +1616480 5747376 1616824 5747528 1617184 5746832 1616456 5747352 +1616952 5746624 1616688 5746584 1616456 5747352 1617184 5746832 +1616480 5747376 1617184 5746832 1616456 5747352 1613752 5747576 +1616688 5746584 1616616 5746536 1616456 5747352 1616952 5746624 +1616616 5746536 1616480 5746336 1616456 5747352 1616688 5746584 +1613768 5747456 1616352 5747304 1616376 5746120 1613680 5747344 +1616376 5746120 1616352 5747304 1616456 5747352 1616480 5746336 +1616456 5747352 1616616 5746536 1616480 5746336 1616352 5747304 +1616480 5746336 1616376 5746120 1616352 5747304 1616616 5746536 +1616376 5746120 1613768 5747456 1616352 5747304 1616480 5746336 +1616456 5747352 1616352 5747304 1613768 5747456 1613784 5747512 +1616456 5747352 1616352 5747304 1613784 5747512 1613752 5747576 +1616352 5747304 1616376 5746120 1613768 5747456 1613784 5747512 +1616456 5747352 1616352 5747304 1613752 5747576 1616480 5747376 +1613752 5747576 1613696 5747632 1616480 5747376 1616352 5747304 +1613696 5747632 1616832 5747544 1616480 5747376 1616352 5747304 +1616352 5747304 1613784 5747512 1613752 5747576 1613696 5747632 +1616480 5747376 1616456 5747352 1616352 5747304 1613696 5747632 +1616352 5747304 1613768 5747456 1613784 5747512 1613752 5747576 +1616352 5747304 1616480 5747376 1616456 5747352 1616616 5746536 +1616456 5747352 1616688 5746584 1616616 5746536 1616352 5747304 +1616616 5746536 1616480 5746336 1616352 5747304 1616688 5746584 +1616456 5747352 1616952 5746624 1616688 5746584 1616352 5747304 +1616456 5747352 1616688 5746584 1616352 5747304 1616480 5747376 +1613768 5747456 1616016 5747072 1616376 5746120 1613680 5747344 +1616376 5746120 1616296 5745864 1613680 5747344 1616016 5747072 +1613680 5747344 1613768 5747456 1616016 5747072 1616296 5745864 +1616296 5745864 1616160 5745400 1613680 5747344 1616016 5747072 +1616016 5747072 1616352 5747304 1616376 5746120 1616296 5745864 +1616352 5747304 1616016 5747072 1613768 5747456 1613784 5747512 +1616352 5747304 1616376 5746120 1616016 5747072 1613784 5747512 +1616376 5746120 1616016 5747072 1616352 5747304 1616480 5746336 +1616352 5747304 1616616 5746536 1616480 5746336 1616016 5747072 +1616352 5747304 1616688 5746584 1616616 5746536 1616016 5747072 +1616376 5746120 1616296 5745864 1616016 5747072 1616480 5746336 +1616016 5747072 1613784 5747512 1616352 5747304 1616616 5746536 +1616480 5746336 1616376 5746120 1616016 5747072 1616616 5746536 +1613768 5747456 1613784 5747512 1616016 5747072 1613680 5747344 +1616352 5747304 1616016 5747072 1613784 5747512 1613752 5747576 +1616352 5747304 1616016 5747072 1613752 5747576 1613696 5747632 +1616016 5747072 1613768 5747456 1613784 5747512 1613752 5747576 +1616352 5747304 1616616 5746536 1616016 5747072 1613752 5747576 +1616016 5747072 1615824 5746976 1613680 5747344 1613768 5747456 +1613680 5747344 1615824 5746976 1616296 5745864 1616160 5745400 +1616296 5745864 1615824 5746976 1616016 5747072 1616376 5746120 +1613680 5747344 1615824 5746976 1616160 5745400 1613520 5747248 +1616296 5745864 1616232 5745520 1616160 5745400 1615824 5746976 +1616016 5747072 1616480 5746336 1616376 5746120 1615824 5746976 +1616376 5746120 1616296 5745864 1615824 5746976 1616480 5746336 +1615824 5746976 1616160 5745400 1613680 5747344 1613768 5747456 +1615824 5746976 1616376 5746120 1616296 5745864 1616160 5745400 +1616016 5747072 1616616 5746536 1616480 5746336 1615824 5746976 +1616016 5747072 1615824 5746976 1613768 5747456 1613784 5747512 +1615824 5746976 1613680 5747344 1613768 5747456 1613784 5747512 +1616016 5747072 1615824 5746976 1613784 5747512 1613752 5747576 +1615824 5746976 1613768 5747456 1613784 5747512 1613752 5747576 +1616016 5747072 1616480 5746336 1615824 5746976 1613752 5747576 +1616016 5747072 1615824 5746976 1613752 5747576 1616352 5747304 +1616160 5745400 1615744 5746928 1615824 5746976 1616296 5745864 +1616160 5745400 1613680 5747344 1615744 5746928 1616296 5745864 +1613680 5747344 1615744 5746928 1616160 5745400 1613520 5747248 +1615744 5746928 1616296 5745864 1616160 5745400 1613520 5747248 +1616160 5745400 1612960 5746920 1613520 5747248 1615744 5746928 +1616160 5745400 1615744 5746928 1616296 5745864 1616232 5745520 +1615824 5746976 1615744 5746928 1613680 5747344 1613768 5747456 +1615824 5746976 1615744 5746928 1613768 5747456 1613784 5747512 +1615744 5746928 1613680 5747344 1613768 5747456 1613784 5747512 +1615744 5746928 1613784 5747512 1615824 5746976 1616296 5745864 +1615824 5746976 1616376 5746120 1616296 5745864 1615744 5746928 +1616296 5745864 1616160 5745400 1615744 5746928 1616376 5746120 +1615824 5746976 1616480 5746336 1616376 5746120 1615744 5746928 +1615824 5746976 1616016 5747072 1616480 5746336 1615744 5746928 +1615824 5746976 1616480 5746336 1615744 5746928 1613784 5747512 +1616376 5746120 1616296 5745864 1615744 5746928 1616480 5746336 +1613680 5747344 1613768 5747456 1615744 5746928 1613520 5747248 +1615824 5746976 1615744 5746928 1613784 5747512 1613752 5747576 +1616160 5745400 1615680 5746848 1615744 5746928 1616296 5745864 +1615680 5746848 1613520 5747248 1615744 5746928 1616296 5745864 +1616160 5745400 1613520 5747248 1615680 5746848 1616296 5745864 +1615744 5746928 1616376 5746120 1616296 5745864 1615680 5746848 +1615744 5746928 1616376 5746120 1615680 5746848 1613520 5747248 +1616296 5745864 1616160 5745400 1615680 5746848 1616376 5746120 +1613520 5747248 1615680 5746848 1616160 5745400 1612960 5746920 +1615744 5746928 1615680 5746848 1613520 5747248 1613680 5747344 +1615744 5746928 1616376 5746120 1615680 5746848 1613680 5747344 +1615680 5746848 1616160 5745400 1613520 5747248 1613680 5747344 +1616160 5745400 1615680 5746848 1616296 5745864 1616232 5745520 +1615744 5746928 1616480 5746336 1616376 5746120 1615680 5746848 +1615744 5746928 1616480 5746336 1615680 5746848 1613680 5747344 +1616376 5746120 1616296 5745864 1615680 5746848 1616480 5746336 +1615744 5746928 1615824 5746976 1616480 5746336 1615680 5746848 +1615744 5746928 1615824 5746976 1615680 5746848 1613680 5747344 +1615824 5746976 1616016 5747072 1616480 5746336 1615680 5746848 +1616480 5746336 1616376 5746120 1615680 5746848 1615824 5746976 +1615744 5746928 1615680 5746848 1613680 5747344 1613768 5747456 +1615744 5746928 1615824 5746976 1615680 5746848 1613768 5747456 +1615680 5746848 1613520 5747248 1613680 5747344 1613768 5747456 +1615744 5746928 1615680 5746848 1613768 5747456 1613784 5747512 +1615744 5746928 1615824 5746976 1615680 5746848 1613784 5747512 +1615744 5746928 1615680 5746848 1613784 5747512 1615824 5746976 +1615680 5746848 1613680 5747344 1613768 5747456 1613784 5747512 +1615680 5746848 1615648 5746688 1613520 5747248 1613680 5747344 +1615680 5746848 1616160 5745400 1615648 5746688 1613680 5747344 +1616160 5745400 1615648 5746688 1615680 5746848 1616296 5745864 +1615680 5746848 1616376 5746120 1616296 5745864 1615648 5746688 +1615648 5746688 1613680 5747344 1615680 5746848 1616376 5746120 +1616296 5745864 1616160 5745400 1615648 5746688 1616376 5746120 +1615680 5746848 1616480 5746336 1616376 5746120 1615648 5746688 +1616376 5746120 1616296 5745864 1615648 5746688 1616480 5746336 +1615680 5746848 1616480 5746336 1615648 5746688 1613680 5747344 +1615648 5746688 1616160 5745400 1613520 5747248 1613680 5747344 +1616160 5745400 1613520 5747248 1615648 5746688 1616296 5745864 +1613520 5747248 1615648 5746688 1616160 5745400 1612960 5746920 +1613520 5747248 1613680 5747344 1615648 5746688 1612960 5746920 +1615648 5746688 1616296 5745864 1616160 5745400 1612960 5746920 +1615680 5746848 1615648 5746688 1613680 5747344 1613768 5747456 +1615648 5746688 1613520 5747248 1613680 5747344 1613768 5747456 +1615680 5746848 1616480 5746336 1615648 5746688 1613768 5747456 +1616160 5745400 1613544 5743096 1612960 5746920 1615648 5746688 +1613520 5747248 1615648 5746688 1612960 5746920 1613360 5747216 +1616160 5745400 1615648 5746688 1616296 5745864 1616232 5745520 +1615680 5746848 1615824 5746976 1616480 5746336 1615648 5746688 +1615680 5746848 1615824 5746976 1615648 5746688 1613768 5747456 +1616480 5746336 1616376 5746120 1615648 5746688 1615824 5746976 +1615680 5746848 1615744 5746928 1615824 5746976 1615648 5746688 +1615824 5746976 1616016 5747072 1616480 5746336 1615648 5746688 +1615680 5746848 1615648 5746688 1613768 5747456 1613784 5747512 +1616160 5745400 1615640 5746528 1615648 5746688 1616296 5745864 +1615648 5746688 1616376 5746120 1616296 5745864 1615640 5746528 +1615648 5746688 1616480 5746336 1616376 5746120 1615640 5746528 +1616376 5746120 1616296 5745864 1615640 5746528 1616480 5746336 +1615648 5746688 1615824 5746976 1616480 5746336 1615640 5746528 +1615640 5746528 1612960 5746920 1615648 5746688 1616480 5746336 +1616296 5745864 1616160 5745400 1615640 5746528 1616376 5746120 +1615648 5746688 1615640 5746528 1612960 5746920 1613520 5747248 +1615648 5746688 1615640 5746528 1613520 5747248 1613680 5747344 +1615648 5746688 1615640 5746528 1613680 5747344 1613768 5747456 +1615648 5746688 1616480 5746336 1615640 5746528 1613680 5747344 +1615640 5746528 1616160 5745400 1612960 5746920 1613520 5747248 +1615640 5746528 1612960 5746920 1613520 5747248 1613680 5747344 +1612960 5746920 1615640 5746528 1616160 5745400 1613544 5743096 +1612960 5746920 1613520 5747248 1615640 5746528 1613544 5743096 +1612960 5746920 1615640 5746528 1613544 5743096 1612768 5746808 +1616160 5745400 1613544 5743064 1613544 5743096 1615640 5746528 +1616160 5745400 1613544 5743096 1615640 5746528 1616296 5745864 +1612960 5746920 1613360 5747216 1613520 5747248 1615640 5746528 +1616160 5745400 1615640 5746528 1616296 5745864 1616232 5745520 +1615640 5746528 1615624 5746504 1612960 5746920 1613520 5747248 +1615640 5746528 1613544 5743096 1615624 5746504 1613520 5747248 +1615640 5746528 1615624 5746504 1613520 5747248 1613680 5747344 +1615640 5746528 1615624 5746504 1613680 5747344 1615648 5746688 +1613680 5747344 1613768 5747456 1615648 5746688 1615624 5746504 +1615624 5746504 1612960 5746920 1613520 5747248 1613680 5747344 +1615640 5746528 1613544 5743096 1615624 5746504 1615648 5746688 +1615624 5746504 1613520 5747248 1613680 5747344 1615648 5746688 +1612960 5746920 1615624 5746504 1613544 5743096 1612768 5746808 +1613544 5743096 1615624 5746504 1615640 5746528 1616160 5745400 +1615624 5746504 1615648 5746688 1615640 5746528 1616160 5745400 +1613544 5743096 1615624 5746504 1616160 5745400 1613544 5743064 +1613544 5743096 1612960 5746920 1615624 5746504 1616160 5745400 +1615640 5746528 1616296 5745864 1616160 5745400 1615624 5746504 +1615640 5746528 1616376 5746120 1616296 5745864 1615624 5746504 +1615640 5746528 1616480 5746336 1616376 5746120 1615624 5746504 +1615640 5746528 1616376 5746120 1615624 5746504 1615648 5746688 +1616160 5745400 1613544 5743096 1615624 5746504 1616296 5745864 +1616296 5745864 1616160 5745400 1615624 5746504 1616376 5746120 +1615624 5746504 1613544 5743096 1612960 5746920 1613520 5747248 +1612960 5746920 1613360 5747216 1613520 5747248 1615624 5746504 +1616296 5745864 1616232 5745520 1616160 5745400 1615624 5746504 +1616232 5745520 1616216 5745480 1616160 5745400 1615624 5746504 +1616160 5745400 1613544 5743096 1615624 5746504 1616232 5745520 +1616296 5745864 1616232 5745520 1615624 5746504 1616376 5746120 +1613544 5743096 1615608 5746456 1616160 5745400 1613544 5743064 +1616160 5745400 1615608 5746456 1615624 5746504 1616232 5745520 +1616160 5745400 1615608 5746456 1616232 5745520 1616216 5745480 +1615608 5746456 1613544 5743096 1615624 5746504 1616232 5745520 +1615624 5746504 1615608 5746456 1613544 5743096 1612960 5746920 +1613544 5743096 1612768 5746808 1612960 5746920 1615608 5746456 +1615624 5746504 1616232 5745520 1615608 5746456 1612960 5746920 +1615608 5746456 1616160 5745400 1613544 5743096 1612960 5746920 +1615624 5746504 1615608 5746456 1612960 5746920 1613520 5747248 +1615624 5746504 1615608 5746456 1613520 5747248 1613680 5747344 +1615624 5746504 1615608 5746456 1613680 5747344 1615648 5746688 +1613680 5747344 1613768 5747456 1615648 5746688 1615608 5746456 +1615624 5746504 1615608 5746456 1615648 5746688 1615640 5746528 +1615608 5746456 1613520 5747248 1613680 5747344 1613768 5747456 +1615648 5746688 1615624 5746504 1615608 5746456 1613768 5747456 +1613768 5747456 1615680 5746848 1615648 5746688 1615608 5746456 +1615624 5746504 1616232 5745520 1615608 5746456 1615648 5746688 +1615608 5746456 1613544 5743096 1612960 5746920 1613520 5747248 +1612960 5746920 1613360 5747216 1613520 5747248 1615608 5746456 +1615624 5746504 1616296 5745864 1616232 5745520 1615608 5746456 +1616232 5745520 1616160 5745400 1615608 5746456 1616296 5745864 +1615624 5746504 1616296 5745864 1615608 5746456 1615648 5746688 +1615624 5746504 1616376 5746120 1616296 5745864 1615608 5746456 +1615624 5746504 1615640 5746528 1616376 5746120 1615608 5746456 +1615640 5746528 1616480 5746336 1616376 5746120 1615608 5746456 +1615624 5746504 1615640 5746528 1615608 5746456 1615648 5746688 +1616376 5746120 1616296 5745864 1615608 5746456 1615640 5746528 +1616296 5745864 1616232 5745520 1615608 5746456 1616376 5746120 +1615608 5746456 1612960 5746920 1613520 5747248 1613680 5747344 +1616160 5745400 1613544 5743096 1615608 5746456 1616232 5745520 +1612960 5746920 1615544 5746368 1613544 5743096 1612768 5746808 +1615608 5746456 1615544 5746368 1612960 5746920 1613520 5747248 +1613544 5743096 1615544 5746368 1615608 5746456 1616160 5745400 +1613544 5743096 1612960 5746920 1615544 5746368 1616160 5745400 +1613544 5743096 1615544 5746368 1616160 5745400 1613544 5743064 +1612960 5746920 1613360 5747216 1613520 5747248 1615544 5746368 +1615608 5746456 1616160 5745400 1615544 5746368 1613520 5747248 +1615544 5746368 1613544 5743096 1612960 5746920 1613520 5747248 +1615608 5746456 1615544 5746368 1613520 5747248 1613680 5747344 +1615608 5746456 1615544 5746368 1613680 5747344 1613768 5747456 +1615608 5746456 1615544 5746368 1613768 5747456 1615648 5746688 +1615544 5746368 1613680 5747344 1613768 5747456 1615648 5746688 +1615608 5746456 1615544 5746368 1615648 5746688 1615624 5746504 +1615544 5746368 1613768 5747456 1615648 5746688 1615624 5746504 +1615648 5746688 1615640 5746528 1615624 5746504 1615544 5746368 +1613768 5747456 1615680 5746848 1615648 5746688 1615544 5746368 +1615544 5746368 1612960 5746920 1613520 5747248 1613680 5747344 +1615608 5746456 1616160 5745400 1615544 5746368 1615624 5746504 +1615544 5746368 1613520 5747248 1613680 5747344 1613768 5747456 +1615608 5746456 1616232 5745520 1616160 5745400 1615544 5746368 +1616232 5745520 1616216 5745480 1616160 5745400 1615544 5746368 +1615608 5746456 1616296 5745864 1616232 5745520 1615544 5746368 +1616160 5745400 1613544 5743096 1615544 5746368 1616232 5745520 +1615608 5746456 1616376 5746120 1616296 5745864 1615544 5746368 +1616296 5745864 1616232 5745520 1615544 5746368 1616376 5746120 +1615608 5746456 1615640 5746528 1616376 5746120 1615544 5746368 +1615608 5746456 1616376 5746120 1615544 5746368 1615624 5746504 +1616232 5745520 1616160 5745400 1615544 5746368 1616296 5745864 +1613544 5743096 1615480 5746344 1615544 5746368 1616160 5745400 +1613544 5743096 1612960 5746920 1615480 5746344 1616160 5745400 +1615480 5746344 1612960 5746920 1615544 5746368 1616160 5745400 +1612960 5746920 1615480 5746344 1613544 5743096 1612768 5746808 +1612960 5746920 1615544 5746368 1615480 5746344 1612768 5746808 +1615480 5746344 1616160 5745400 1613544 5743096 1612768 5746808 +1613544 5743096 1613496 5743096 1612768 5746808 1615480 5746344 +1613544 5743096 1615480 5746344 1616160 5745400 1613544 5743064 +1615544 5746368 1616232 5745520 1616160 5745400 1615480 5746344 +1616232 5745520 1616216 5745480 1616160 5745400 1615480 5746344 +1616160 5745400 1613544 5743096 1615480 5746344 1616232 5745520 +1615544 5746368 1616232 5745520 1615480 5746344 1612960 5746920 +1615544 5746368 1615480 5746344 1612960 5746920 1613520 5747248 +1615480 5746344 1612768 5746808 1612960 5746920 1613520 5747248 +1615544 5746368 1616232 5745520 1615480 5746344 1613520 5747248 +1615544 5746368 1615480 5746344 1613520 5747248 1613680 5747344 +1615544 5746368 1616232 5745520 1615480 5746344 1613680 5747344 +1612960 5746920 1613360 5747216 1613520 5747248 1615480 5746344 +1615480 5746344 1612960 5746920 1613520 5747248 1613680 5747344 +1615544 5746368 1616296 5745864 1616232 5745520 1615480 5746344 +1615544 5746368 1616296 5745864 1615480 5746344 1613680 5747344 +1615544 5746368 1616376 5746120 1616296 5745864 1615480 5746344 +1616232 5745520 1616160 5745400 1615480 5746344 1616296 5745864 +1615544 5746368 1615480 5746344 1613680 5747344 1613768 5747456 +1615544 5746368 1616296 5745864 1615480 5746344 1613768 5747456 +1615544 5746368 1615480 5746344 1613768 5747456 1615648 5746688 +1615544 5746368 1615480 5746344 1615648 5746688 1615624 5746504 +1615544 5746368 1616296 5745864 1615480 5746344 1615624 5746504 +1615648 5746688 1615640 5746528 1615624 5746504 1615480 5746344 +1615480 5746344 1613768 5747456 1615648 5746688 1615624 5746504 +1615544 5746368 1615480 5746344 1615624 5746504 1615608 5746456 +1615480 5746344 1615648 5746688 1615624 5746504 1615608 5746456 +1615544 5746368 1616296 5745864 1615480 5746344 1615608 5746456 +1613768 5747456 1615680 5746848 1615648 5746688 1615480 5746344 +1615480 5746344 1613520 5747248 1613680 5747344 1613768 5747456 +1615480 5746344 1613680 5747344 1613768 5747456 1615648 5746688 +1613544 5743096 1615272 5746320 1615480 5746344 1616160 5745400 +1613544 5743096 1612768 5746808 1615272 5746320 1616160 5745400 +1615480 5746344 1616232 5745520 1616160 5745400 1615272 5746320 +1615272 5746320 1612768 5746808 1615480 5746344 1616160 5745400 +1612768 5746808 1615272 5746320 1613544 5743096 1613496 5743096 +1615480 5746344 1615272 5746320 1612768 5746808 1612960 5746920 +1615272 5746320 1613544 5743096 1612768 5746808 1612960 5746920 +1615480 5746344 1615272 5746320 1612960 5746920 1613520 5747248 +1615480 5746344 1616160 5745400 1615272 5746320 1613520 5747248 +1615272 5746320 1612768 5746808 1612960 5746920 1613520 5747248 +1613544 5743096 1615272 5746320 1616160 5745400 1613544 5743064 +1612960 5746920 1613360 5747216 1613520 5747248 1615272 5746320 +1615480 5746344 1615272 5746320 1613520 5747248 1613680 5747344 +1615272 5746320 1612960 5746920 1613520 5747248 1613680 5747344 +1615480 5746344 1616160 5745400 1615272 5746320 1613680 5747344 +1615480 5746344 1615272 5746320 1613680 5747344 1613768 5747456 +1615480 5746344 1616160 5745400 1615272 5746320 1613768 5747456 +1615272 5746320 1613520 5747248 1613680 5747344 1613768 5747456 +1615480 5746344 1615272 5746320 1613768 5747456 1615648 5746688 +1615480 5746344 1616160 5745400 1615272 5746320 1615648 5746688 +1615480 5746344 1615272 5746320 1615648 5746688 1615624 5746504 +1615480 5746344 1615272 5746320 1615624 5746504 1615608 5746456 +1615480 5746344 1616160 5745400 1615272 5746320 1615624 5746504 +1615648 5746688 1615640 5746528 1615624 5746504 1615272 5746320 +1613768 5747456 1615680 5746848 1615648 5746688 1615272 5746320 +1615272 5746320 1613680 5747344 1613768 5747456 1615680 5746848 +1613768 5747456 1613784 5747512 1615680 5746848 1615272 5746320 +1615272 5746320 1615680 5746848 1615648 5746688 1615624 5746504 +1615272 5746320 1615160 5746336 1612768 5746808 1612960 5746920 +1615272 5746320 1613544 5743096 1615160 5746336 1612960 5746920 +1613544 5743096 1615160 5746336 1615272 5746320 1616160 5745400 +1615160 5746336 1612960 5746920 1615272 5746320 1616160 5745400 +1615160 5746336 1613544 5743096 1612768 5746808 1612960 5746920 +1613544 5743096 1612768 5746808 1615160 5746336 1616160 5745400 +1615272 5746320 1615480 5746344 1616160 5745400 1615160 5746336 +1612768 5746808 1615160 5746336 1613544 5743096 1613496 5743096 +1615272 5746320 1615160 5746336 1612960 5746920 1613520 5747248 +1615160 5746336 1612768 5746808 1612960 5746920 1613520 5747248 +1615272 5746320 1616160 5745400 1615160 5746336 1613520 5747248 +1615272 5746320 1615160 5746336 1613520 5747248 1613680 5747344 +1615272 5746320 1616160 5745400 1615160 5746336 1613680 5747344 +1615160 5746336 1612960 5746920 1613520 5747248 1613680 5747344 +1613544 5743096 1615160 5746336 1616160 5745400 1613544 5743064 +1612960 5746920 1613360 5747216 1613520 5747248 1615160 5746336 +1615272 5746320 1615160 5746336 1613680 5747344 1613768 5747456 +1615272 5746320 1616160 5745400 1615160 5746336 1613768 5747456 +1615160 5746336 1613520 5747248 1613680 5747344 1613768 5747456 +1615272 5746320 1615160 5746336 1613768 5747456 1615680 5746848 +1615272 5746320 1616160 5745400 1615160 5746336 1615680 5746848 +1615272 5746320 1615160 5746336 1615680 5746848 1615648 5746688 +1615272 5746320 1616160 5745400 1615160 5746336 1615648 5746688 +1615160 5746336 1613768 5747456 1615680 5746848 1615648 5746688 +1613768 5747456 1613784 5747512 1615680 5746848 1615160 5746336 +1615680 5746848 1615648 5746688 1615160 5746336 1613784 5747512 +1613784 5747512 1615744 5746928 1615680 5746848 1615160 5746336 +1615160 5746336 1613680 5747344 1613768 5747456 1613784 5747512 +1615272 5746320 1615160 5746336 1615648 5746688 1615624 5746504 +1615160 5746336 1615080 5746352 1612960 5746920 1613520 5747248 +1612768 5746808 1615080 5746352 1615160 5746336 1613544 5743096 +1615160 5746336 1613544 5743096 1615080 5746352 1613520 5747248 +1615160 5746336 1616160 5745400 1613544 5743096 1615080 5746352 +1615160 5746336 1615272 5746320 1616160 5745400 1615080 5746352 +1613544 5743096 1612768 5746808 1615080 5746352 1616160 5745400 +1615160 5746336 1616160 5745400 1615080 5746352 1613520 5747248 +1615080 5746352 1612768 5746808 1612960 5746920 1613520 5747248 +1612768 5746808 1612960 5746920 1615080 5746352 1613544 5743096 +1612768 5746808 1615080 5746352 1613544 5743096 1613496 5743096 +1615160 5746336 1615080 5746352 1613520 5747248 1613680 5747344 +1615080 5746352 1612960 5746920 1613520 5747248 1613680 5747344 +1615160 5746336 1616160 5745400 1615080 5746352 1613680 5747344 +1615160 5746336 1615080 5746352 1613680 5747344 1613768 5747456 +1615160 5746336 1616160 5745400 1615080 5746352 1613768 5747456 +1615080 5746352 1613520 5747248 1613680 5747344 1613768 5747456 +1616160 5745400 1613544 5743064 1613544 5743096 1615080 5746352 +1612960 5746920 1613360 5747216 1613520 5747248 1615080 5746352 +1615160 5746336 1615080 5746352 1613768 5747456 1613784 5747512 +1615160 5746336 1616160 5745400 1615080 5746352 1613784 5747512 +1615080 5746352 1613680 5747344 1613768 5747456 1613784 5747512 +1615160 5746336 1615080 5746352 1613784 5747512 1615680 5746848 +1615160 5746336 1616160 5745400 1615080 5746352 1615680 5746848 +1615160 5746336 1615080 5746352 1615680 5746848 1615648 5746688 +1615160 5746336 1616160 5745400 1615080 5746352 1615648 5746688 +1615160 5746336 1615080 5746352 1615648 5746688 1615272 5746320 +1613784 5747512 1615744 5746928 1615680 5746848 1615080 5746352 +1615080 5746352 1613784 5747512 1615680 5746848 1615648 5746688 +1615080 5746352 1613768 5747456 1613784 5747512 1615680 5746848 +1613544 5743096 1614912 5746344 1615080 5746352 1616160 5745400 +1615080 5746352 1615160 5746336 1616160 5745400 1614912 5746344 +1615160 5746336 1615272 5746320 1616160 5745400 1614912 5746344 +1616160 5745400 1613544 5743096 1614912 5746344 1615160 5746336 +1614912 5746344 1612768 5746808 1615080 5746352 1615160 5746336 +1615080 5746352 1614912 5746344 1612768 5746808 1612960 5746920 +1615080 5746352 1614912 5746344 1612960 5746920 1613520 5747248 +1615080 5746352 1614912 5746344 1613520 5747248 1613680 5747344 +1614912 5746344 1612960 5746920 1613520 5747248 1613680 5747344 +1615080 5746352 1615160 5746336 1614912 5746344 1613680 5747344 +1614912 5746344 1612768 5746808 1612960 5746920 1613520 5747248 +1614912 5746344 1613544 5743096 1612768 5746808 1612960 5746920 +1613544 5743096 1612768 5746808 1614912 5746344 1616160 5745400 +1612768 5746808 1614912 5746344 1613544 5743096 1613496 5743096 +1612768 5746808 1614912 5746344 1613496 5743096 1612584 5746744 +1612768 5746808 1612960 5746920 1614912 5746344 1613496 5743096 +1614912 5746344 1616160 5745400 1613544 5743096 1613496 5743096 +1615080 5746352 1614912 5746344 1613680 5747344 1613768 5747456 +1614912 5746344 1613520 5747248 1613680 5747344 1613768 5747456 +1615080 5746352 1615160 5746336 1614912 5746344 1613768 5747456 +1615080 5746352 1614912 5746344 1613768 5747456 1613784 5747512 +1615080 5746352 1615160 5746336 1614912 5746344 1613784 5747512 +1614912 5746344 1613680 5747344 1613768 5747456 1613784 5747512 +1613544 5743096 1614912 5746344 1616160 5745400 1613544 5743064 +1612960 5746920 1613360 5747216 1613520 5747248 1614912 5746344 +1615080 5746352 1614912 5746344 1613784 5747512 1615680 5746848 +1615080 5746352 1615160 5746336 1614912 5746344 1615680 5746848 +1614912 5746344 1613768 5747456 1613784 5747512 1615680 5746848 +1613784 5747512 1615744 5746928 1615680 5746848 1614912 5746344 +1615080 5746352 1614912 5746344 1615680 5746848 1615648 5746688 +1612768 5746808 1614792 5746280 1613496 5743096 1612584 5746744 +1614912 5746344 1614792 5746280 1612768 5746808 1612960 5746920 +1614912 5746344 1614792 5746280 1612960 5746920 1613520 5747248 +1614912 5746344 1614792 5746280 1613520 5747248 1613680 5747344 +1614912 5746344 1614792 5746280 1613680 5747344 1613768 5747456 +1614792 5746280 1613520 5747248 1613680 5747344 1613768 5747456 +1614792 5746280 1612960 5746920 1613520 5747248 1613680 5747344 +1614792 5746280 1612768 5746808 1612960 5746920 1613520 5747248 +1614912 5746344 1613496 5743096 1614792 5746280 1613768 5747456 +1614792 5746280 1613496 5743096 1612768 5746808 1612960 5746920 +1613496 5743096 1614792 5746280 1614912 5746344 1613544 5743096 +1614792 5746280 1613768 5747456 1614912 5746344 1613544 5743096 +1614912 5746344 1616160 5745400 1613544 5743096 1614792 5746280 +1614912 5746344 1615160 5746336 1616160 5745400 1614792 5746280 +1615160 5746336 1615272 5746320 1616160 5745400 1614792 5746280 +1615160 5746336 1615272 5746320 1614792 5746280 1614912 5746344 +1614912 5746344 1615080 5746352 1615160 5746336 1614792 5746280 +1615160 5746336 1615272 5746320 1614792 5746280 1615080 5746352 +1614912 5746344 1615080 5746352 1614792 5746280 1613768 5747456 +1616160 5745400 1613544 5743096 1614792 5746280 1615272 5746320 +1613496 5743096 1612768 5746808 1614792 5746280 1613544 5743096 +1615272 5746320 1615480 5746344 1616160 5745400 1614792 5746280 +1613544 5743096 1613496 5743096 1614792 5746280 1616160 5745400 +1614912 5746344 1614792 5746280 1613768 5747456 1613784 5747512 +1616160 5745400 1613544 5743064 1613544 5743096 1614792 5746280 +1612960 5746920 1613360 5747216 1613520 5747248 1614792 5746280 +1612768 5746808 1614760 5746280 1613496 5743096 1612584 5746744 +1614792 5746280 1614760 5746280 1612768 5746808 1612960 5746920 +1614792 5746280 1614760 5746280 1612960 5746920 1613520 5747248 +1614792 5746280 1614760 5746280 1613520 5747248 1613680 5747344 +1614792 5746280 1614760 5746280 1613680 5747344 1613768 5747456 +1614792 5746280 1614760 5746280 1613768 5747456 1614912 5746344 +1614760 5746280 1613680 5747344 1613768 5747456 1614912 5746344 +1614760 5746280 1613520 5747248 1613680 5747344 1613768 5747456 +1614760 5746280 1612960 5746920 1613520 5747248 1613680 5747344 +1614760 5746280 1612768 5746808 1612960 5746920 1613520 5747248 +1614792 5746280 1613496 5743096 1614760 5746280 1614912 5746344 +1613496 5743096 1614760 5746280 1614792 5746280 1613544 5743096 +1613496 5743096 1612768 5746808 1614760 5746280 1613544 5743096 +1614760 5746280 1614912 5746344 1614792 5746280 1613544 5743096 +1614760 5746280 1613496 5743096 1612768 5746808 1612960 5746920 +1614792 5746280 1616160 5745400 1613544 5743096 1614760 5746280 +1614792 5746280 1615272 5746320 1616160 5745400 1614760 5746280 +1614792 5746280 1616160 5745400 1614760 5746280 1614912 5746344 +1613544 5743096 1613496 5743096 1614760 5746280 1616160 5745400 +1613768 5747456 1613784 5747512 1614912 5746344 1614760 5746280 +1616160 5745400 1613544 5743064 1613544 5743096 1614760 5746280 +1612960 5746920 1613360 5747216 1613520 5747248 1614760 5746280 +1612768 5746808 1614552 5745968 1613496 5743096 1612584 5746744 +1613496 5743096 1614552 5745968 1614760 5746280 1613544 5743096 +1614552 5745968 1612768 5746808 1614760 5746280 1613544 5743096 +1612768 5746808 1614760 5746280 1614552 5745968 1612584 5746744 +1614552 5745968 1613544 5743096 1613496 5743096 1612584 5746744 +1614760 5746280 1616160 5745400 1613544 5743096 1614552 5745968 +1614760 5746280 1616160 5745400 1614552 5745968 1612768 5746808 +1613544 5743096 1613496 5743096 1614552 5745968 1616160 5745400 +1614760 5746280 1614552 5745968 1612768 5746808 1612960 5746920 +1614760 5746280 1616160 5745400 1614552 5745968 1612960 5746920 +1614552 5745968 1612584 5746744 1612768 5746808 1612960 5746920 +1614760 5746280 1614552 5745968 1612960 5746920 1613520 5747248 +1614760 5746280 1614552 5745968 1613520 5747248 1613680 5747344 +1614760 5746280 1616160 5745400 1614552 5745968 1613520 5747248 +1614552 5745968 1612768 5746808 1612960 5746920 1613520 5747248 +1613496 5743096 1613416 5743064 1612584 5746744 1614552 5745968 +1614760 5746280 1614792 5746280 1616160 5745400 1614552 5745968 +1614760 5746280 1614792 5746280 1614552 5745968 1613520 5747248 +1614792 5746280 1615272 5746320 1616160 5745400 1614552 5745968 +1614792 5746280 1615160 5746336 1615272 5746320 1614552 5745968 +1614792 5746280 1615080 5746352 1615160 5746336 1614552 5745968 +1615272 5746320 1616160 5745400 1614552 5745968 1615160 5746336 +1616160 5745400 1613544 5743096 1614552 5745968 1615272 5746320 +1615272 5746320 1615480 5746344 1616160 5745400 1614552 5745968 +1614792 5746280 1615160 5746336 1614552 5745968 1614760 5746280 +1616160 5745400 1613544 5743064 1613544 5743096 1614552 5745968 +1612960 5746920 1613360 5747216 1613520 5747248 1614552 5745968 +1614552 5745968 1614392 5745696 1612584 5746744 1612768 5746808 +1614552 5745968 1613496 5743096 1614392 5745696 1612768 5746808 +1614392 5745696 1613496 5743096 1612584 5746744 1612768 5746808 +1614552 5745968 1614392 5745696 1612768 5746808 1612960 5746920 +1614392 5745696 1612584 5746744 1612768 5746808 1612960 5746920 +1614552 5745968 1613496 5743096 1614392 5745696 1612960 5746920 +1614552 5745968 1614392 5745696 1612960 5746920 1613520 5747248 +1613496 5743096 1614392 5745696 1614552 5745968 1613544 5743096 +1614392 5745696 1612960 5746920 1614552 5745968 1613544 5743096 +1613496 5743096 1612584 5746744 1614392 5745696 1613544 5743096 +1614552 5745968 1616160 5745400 1613544 5743096 1614392 5745696 +1614552 5745968 1616160 5745400 1614392 5745696 1612960 5746920 +1613544 5743096 1613496 5743096 1614392 5745696 1616160 5745400 +1614552 5745968 1615272 5746320 1616160 5745400 1614392 5745696 +1612584 5746744 1614392 5745696 1613496 5743096 1613416 5743064 +1612584 5746744 1612768 5746808 1614392 5745696 1613416 5743064 +1614392 5745696 1613544 5743096 1613496 5743096 1613416 5743064 +1616160 5745400 1613544 5743064 1613544 5743096 1614392 5745696 +1612584 5746744 1614392 5745696 1613416 5743064 1613368 5743032 +1614392 5745696 1614128 5745040 1612584 5746744 1612768 5746808 +1614392 5745696 1614128 5745040 1612768 5746808 1612960 5746920 +1614392 5745696 1613416 5743064 1614128 5745040 1612768 5746808 +1613416 5743064 1614128 5745040 1614392 5745696 1613496 5743096 +1614392 5745696 1613544 5743096 1613496 5743096 1614128 5745040 +1614392 5745696 1616160 5745400 1613544 5743096 1614128 5745040 +1613544 5743096 1613496 5743096 1614128 5745040 1616160 5745400 +1614128 5745040 1612768 5746808 1614392 5745696 1616160 5745400 +1614392 5745696 1614552 5745968 1616160 5745400 1614128 5745040 +1613496 5743096 1613416 5743064 1614128 5745040 1613544 5743096 +1613416 5743064 1612584 5746744 1614128 5745040 1613496 5743096 +1614128 5745040 1613416 5743064 1612584 5746744 1612768 5746808 +1616160 5745400 1613544 5743064 1613544 5743096 1614128 5745040 +1612584 5746744 1614128 5745040 1613416 5743064 1613368 5743032 +1614128 5745040 1613496 5743096 1613416 5743064 1613368 5743032 +1612584 5746744 1612768 5746808 1614128 5745040 1613368 5743032 +1612584 5746744 1614128 5745040 1613368 5743032 1612512 5746760 +1613368 5743032 1612464 5746776 1612512 5746760 1614128 5745040 +1612584 5746744 1612768 5746808 1614128 5745040 1612512 5746760 +1614128 5745040 1613416 5743064 1613368 5743032 1612512 5746760 +1616160 5745400 1614112 5744704 1614128 5745040 1614392 5745696 +1614128 5745040 1614112 5744704 1613544 5743096 1613496 5743096 +1614128 5745040 1614112 5744704 1613496 5743096 1613416 5743064 +1614112 5744704 1613544 5743096 1613496 5743096 1613416 5743064 +1614128 5745040 1614112 5744704 1613416 5743064 1613368 5743032 +1614112 5744704 1613496 5743096 1613416 5743064 1613368 5743032 +1614128 5745040 1616160 5745400 1614112 5744704 1613368 5743032 +1614112 5744704 1616160 5745400 1613544 5743096 1613496 5743096 +1613544 5743096 1614112 5744704 1616160 5745400 1613544 5743064 +1614128 5745040 1614112 5744704 1613368 5743032 1612512 5746760 +1613368 5743032 1612464 5746776 1612512 5746760 1614112 5744704 +1614112 5744704 1613416 5743064 1613368 5743032 1612512 5746760 +1614128 5745040 1616160 5745400 1614112 5744704 1612512 5746760 +1614128 5745040 1614112 5744704 1612512 5746760 1612584 5746744 +1614128 5745040 1616160 5745400 1614112 5744704 1612584 5746744 +1614128 5745040 1614112 5744704 1612584 5746744 1612768 5746808 +1614112 5744704 1613368 5743032 1612512 5746760 1612584 5746744 +1616160 5745400 1614144 5744672 1614112 5744704 1614128 5745040 +1614144 5744672 1613544 5743096 1614112 5744704 1614128 5745040 +1616160 5745400 1613544 5743096 1614144 5744672 1614128 5745040 +1616160 5745400 1614144 5744672 1614128 5745040 1614392 5745696 +1614112 5744704 1614144 5744672 1613544 5743096 1613496 5743096 +1614112 5744704 1614128 5745040 1614144 5744672 1613496 5743096 +1614144 5744672 1616160 5745400 1613544 5743096 1613496 5743096 +1614112 5744704 1614144 5744672 1613496 5743096 1613416 5743064 +1613544 5743096 1614144 5744672 1616160 5745400 1613544 5743064 +1614144 5744672 1614352 5744672 1613544 5743096 1613496 5743096 +1616160 5745400 1614352 5744672 1614144 5744672 1614128 5745040 +1614144 5744672 1614112 5744704 1614128 5745040 1614352 5744672 +1614352 5744672 1613544 5743096 1614144 5744672 1614112 5744704 +1614128 5745040 1616160 5745400 1614352 5744672 1614112 5744704 +1616160 5745400 1613544 5743096 1614352 5744672 1614128 5745040 +1616160 5745400 1614352 5744672 1614128 5745040 1614392 5745696 +1614352 5744672 1614112 5744704 1614128 5745040 1614392 5745696 +1616160 5745400 1613544 5743096 1614352 5744672 1614392 5745696 +1616160 5745400 1614352 5744672 1614392 5745696 1614552 5745968 +1613544 5743096 1614352 5744672 1616160 5745400 1613544 5743064 +1613544 5743096 1614144 5744672 1614352 5744672 1613544 5743064 +1614352 5744672 1614392 5745696 1616160 5745400 1613544 5743064 +1616160 5745400 1613544 5743040 1613544 5743064 1614352 5744672 +1616160 5745400 1613544 5743040 1614352 5744672 1614392 5745696 +1613544 5743064 1613544 5743096 1614352 5744672 1613544 5743040 +1616160 5745400 1613528 5743008 1613544 5743040 1614352 5744672 +1616160 5745400 1614512 5744696 1614352 5744672 1614392 5745696 +1614512 5744696 1613544 5743040 1614352 5744672 1614392 5745696 +1614352 5744672 1614128 5745040 1614392 5745696 1614512 5744696 +1614352 5744672 1614112 5744704 1614128 5745040 1614512 5744696 +1614352 5744672 1614128 5745040 1614512 5744696 1613544 5743040 +1616160 5745400 1614512 5744696 1614392 5745696 1614552 5745968 +1616160 5745400 1613544 5743040 1614512 5744696 1614392 5745696 +1614392 5745696 1616160 5745400 1614512 5744696 1614128 5745040 +1614352 5744672 1614512 5744696 1613544 5743040 1613544 5743064 +1614352 5744672 1614128 5745040 1614512 5744696 1613544 5743064 +1614512 5744696 1616160 5745400 1613544 5743040 1613544 5743064 +1614352 5744672 1614512 5744696 1613544 5743064 1613544 5743096 +1614352 5744672 1614512 5744696 1613544 5743096 1614144 5744672 +1614352 5744672 1614128 5745040 1614512 5744696 1613544 5743096 +1614512 5744696 1613544 5743040 1613544 5743064 1613544 5743096 +1613544 5743040 1614512 5744696 1616160 5745400 1613528 5743008 +1616160 5745400 1614784 5744800 1614512 5744696 1614392 5745696 +1616160 5745400 1614784 5744800 1614392 5745696 1614552 5745968 +1616160 5745400 1614784 5744800 1614552 5745968 1615272 5746320 +1614784 5744800 1614392 5745696 1614552 5745968 1615272 5746320 +1614552 5745968 1615160 5746336 1615272 5746320 1614784 5744800 +1616160 5745400 1614784 5744800 1615272 5746320 1615480 5746344 +1614784 5744800 1614512 5744696 1614392 5745696 1614552 5745968 +1614784 5744800 1613544 5743040 1614512 5744696 1614392 5745696 +1614512 5744696 1614784 5744800 1613544 5743040 1613544 5743064 +1614512 5744696 1614392 5745696 1614784 5744800 1613544 5743064 +1614784 5744800 1616160 5745400 1613544 5743040 1613544 5743064 +1614512 5744696 1614128 5745040 1614392 5745696 1614784 5744800 +1614512 5744696 1614352 5744672 1614128 5745040 1614784 5744800 +1614392 5745696 1614552 5745968 1614784 5744800 1614128 5745040 +1614512 5744696 1614128 5745040 1614784 5744800 1613544 5743064 +1616160 5745400 1613544 5743040 1614784 5744800 1615272 5746320 +1614512 5744696 1614784 5744800 1613544 5743064 1613544 5743096 +1614512 5744696 1614128 5745040 1614784 5744800 1613544 5743096 +1614784 5744800 1613544 5743040 1613544 5743064 1613544 5743096 +1614512 5744696 1614784 5744800 1613544 5743096 1614352 5744672 +1613544 5743040 1614784 5744800 1616160 5745400 1613528 5743008 +1614784 5744800 1614928 5744824 1613544 5743040 1613544 5743064 +1614784 5744800 1614928 5744824 1613544 5743064 1613544 5743096 +1614928 5744824 1613544 5743040 1613544 5743064 1613544 5743096 +1614784 5744800 1616160 5745400 1614928 5744824 1613544 5743096 +1616160 5745400 1614928 5744824 1614784 5744800 1615272 5746320 +1614784 5744800 1614552 5745968 1615272 5746320 1614928 5744824 +1614784 5744800 1614392 5745696 1614552 5745968 1614928 5744824 +1614552 5745968 1615160 5746336 1615272 5746320 1614928 5744824 +1614552 5745968 1615272 5746320 1614928 5744824 1614392 5745696 +1616160 5745400 1614928 5744824 1615272 5746320 1615480 5746344 +1614784 5744800 1614128 5745040 1614392 5745696 1614928 5744824 +1614928 5744824 1613544 5743096 1614784 5744800 1614392 5745696 +1615272 5746320 1616160 5745400 1614928 5744824 1614552 5745968 +1614928 5744824 1616160 5745400 1613544 5743040 1613544 5743064 +1616160 5745400 1613544 5743040 1614928 5744824 1615272 5746320 +1614784 5744800 1614928 5744824 1613544 5743096 1614512 5744696 +1614928 5744824 1613544 5743064 1613544 5743096 1614512 5744696 +1613544 5743096 1614352 5744672 1614512 5744696 1614928 5744824 +1614784 5744800 1614392 5745696 1614928 5744824 1614512 5744696 +1613544 5743040 1614928 5744824 1616160 5745400 1613528 5743008 +1614928 5744824 1614992 5744816 1613544 5743040 1613544 5743064 +1614928 5744824 1614992 5744816 1613544 5743064 1613544 5743096 +1614928 5744824 1614992 5744816 1613544 5743096 1614512 5744696 +1614992 5744816 1613544 5743064 1613544 5743096 1614512 5744696 +1613544 5743096 1614352 5744672 1614512 5744696 1614992 5744816 +1614992 5744816 1613544 5743040 1613544 5743064 1613544 5743096 +1614928 5744824 1616160 5745400 1614992 5744816 1614512 5744696 +1616160 5745400 1614992 5744816 1614928 5744824 1615272 5746320 +1616160 5745400 1614992 5744816 1615272 5746320 1615480 5746344 +1614928 5744824 1614552 5745968 1615272 5746320 1614992 5744816 +1614552 5745968 1615160 5746336 1615272 5746320 1614992 5744816 +1614928 5744824 1614392 5745696 1614552 5745968 1614992 5744816 +1614992 5744816 1614512 5744696 1614928 5744824 1614552 5745968 +1615272 5746320 1616160 5745400 1614992 5744816 1614552 5745968 +1614992 5744816 1616160 5745400 1613544 5743040 1613544 5743064 +1616160 5745400 1613544 5743040 1614992 5744816 1615272 5746320 +1614928 5744824 1614992 5744816 1614512 5744696 1614784 5744800 +1614992 5744816 1613544 5743096 1614512 5744696 1614784 5744800 +1614928 5744824 1614552 5745968 1614992 5744816 1614784 5744800 +1613544 5743040 1614992 5744816 1616160 5745400 1613528 5743008 +1614992 5744816 1615016 5744760 1613544 5743040 1613544 5743064 +1614992 5744816 1615016 5744760 1613544 5743064 1613544 5743096 +1614992 5744816 1615016 5744760 1613544 5743096 1614512 5744696 +1614992 5744816 1615016 5744760 1614512 5744696 1614784 5744800 +1615016 5744760 1613544 5743096 1614512 5744696 1614784 5744800 +1613544 5743096 1614352 5744672 1614512 5744696 1615016 5744760 +1615016 5744760 1613544 5743064 1613544 5743096 1614512 5744696 +1615016 5744760 1613544 5743040 1613544 5743064 1613544 5743096 +1614992 5744816 1616160 5745400 1615016 5744760 1614784 5744800 +1616160 5745400 1615016 5744760 1614992 5744816 1615272 5746320 +1615016 5744760 1616160 5745400 1613544 5743040 1613544 5743064 +1614992 5744816 1615016 5744760 1614784 5744800 1614928 5744824 +1615016 5744760 1614512 5744696 1614784 5744800 1614928 5744824 +1614992 5744816 1616160 5745400 1615016 5744760 1614928 5744824 +1613544 5743040 1615016 5744760 1616160 5745400 1613528 5743008 +1615016 5744760 1614992 5744816 1616160 5745400 1613528 5743008 +1616160 5745400 1613488 5742960 1613528 5743008 1615016 5744760 +1613544 5743040 1613544 5743064 1615016 5744760 1613528 5743008 +1616160 5745400 1615016 5744456 1615016 5744760 1614992 5744816 +1613528 5743008 1615016 5744456 1616160 5745400 1613488 5742960 +1613528 5743008 1615016 5744760 1615016 5744456 1613488 5742960 +1615016 5744456 1615016 5744760 1616160 5745400 1613488 5742960 +1616160 5745400 1605152 5714944 1613488 5742960 1615016 5744456 +1615016 5744760 1615016 5744456 1613528 5743008 1613544 5743040 +1615016 5744760 1616160 5745400 1615016 5744456 1613544 5743040 +1615016 5744456 1613488 5742960 1613528 5743008 1613544 5743040 +1615016 5744760 1615016 5744456 1613544 5743040 1613544 5743064 +1615016 5744760 1616160 5745400 1615016 5744456 1613544 5743064 +1615016 5744760 1615016 5744456 1613544 5743064 1613544 5743096 +1615016 5744760 1616160 5745400 1615016 5744456 1613544 5743096 +1615016 5744760 1615016 5744456 1613544 5743096 1614512 5744696 +1615016 5744760 1616160 5745400 1615016 5744456 1614512 5744696 +1615016 5744760 1615016 5744456 1614512 5744696 1614784 5744800 +1615016 5744760 1616160 5745400 1615016 5744456 1614784 5744800 +1615016 5744760 1615016 5744456 1614784 5744800 1614928 5744824 +1613544 5743096 1614352 5744672 1614512 5744696 1615016 5744456 +1613544 5743096 1614144 5744672 1614352 5744672 1615016 5744456 +1615016 5744456 1614352 5744672 1614512 5744696 1614784 5744800 +1615016 5744456 1613544 5743064 1613544 5743096 1614352 5744672 +1615016 5744456 1613544 5743040 1613544 5743064 1613544 5743096 +1615016 5744456 1613528 5743008 1613544 5743040 1613544 5743064 +1616160 5745400 1615120 5744376 1613488 5742960 1615016 5744456 +1615120 5744376 1605152 5714944 1613488 5742960 1615016 5744456 +1616160 5745400 1615120 5744376 1615016 5744456 1615016 5744760 +1616160 5745400 1615120 5744376 1615016 5744760 1614992 5744816 +1615120 5744376 1613488 5742960 1615016 5744456 1615016 5744760 +1613488 5742960 1613528 5743008 1615016 5744456 1615120 5744376 +1613528 5743008 1613544 5743040 1615016 5744456 1615120 5744376 +1613488 5742960 1613528 5743008 1615120 5744376 1605152 5714944 +1615016 5744456 1615016 5744760 1615120 5744376 1613544 5743040 +1613528 5743008 1613544 5743040 1615120 5744376 1613488 5742960 +1616160 5745400 1605152 5714944 1615120 5744376 1615016 5744760 +1613488 5742960 1615120 5744376 1605152 5714944 1613432 5742904 +1605152 5714944 1613368 5742856 1613432 5742904 1615120 5744376 +1613488 5742960 1613528 5743008 1615120 5744376 1613432 5742904 +1615120 5744376 1616160 5745400 1605152 5714944 1613432 5742904 +1605152 5714944 1615120 5744376 1616160 5745400 1605152 5714888 +1613544 5743040 1613544 5743064 1615016 5744456 1615120 5744376 +1613544 5743040 1613544 5743064 1615120 5744376 1613528 5743008 +1615016 5744456 1615016 5744760 1615120 5744376 1613544 5743064 +1613544 5743064 1613544 5743096 1615016 5744456 1615120 5744376 +1615016 5744456 1615016 5744760 1615120 5744376 1613544 5743096 +1613544 5743096 1614352 5744672 1615016 5744456 1615120 5744376 +1613544 5743064 1613544 5743096 1615120 5744376 1613544 5743040 +1615120 5744376 1615248 5744352 1605152 5714944 1613432 5742904 +1605152 5714944 1613368 5742856 1613432 5742904 1615248 5744352 +1615120 5744376 1616160 5745400 1615248 5744352 1613432 5742904 +1616160 5745400 1615248 5744352 1615120 5744376 1615016 5744760 +1616160 5745400 1615248 5744352 1615016 5744760 1614992 5744816 +1615120 5744376 1615016 5744456 1615016 5744760 1615248 5744352 +1615248 5744352 1613432 5742904 1615120 5744376 1615016 5744760 +1615248 5744352 1616160 5745400 1605152 5714944 1613432 5742904 +1616160 5745400 1605152 5714944 1615248 5744352 1615016 5744760 +1615120 5744376 1615248 5744352 1613432 5742904 1613488 5742960 +1615120 5744376 1615248 5744352 1613488 5742960 1613528 5743008 +1615248 5744352 1605152 5714944 1613432 5742904 1613488 5742960 +1615120 5744376 1615248 5744352 1613528 5743008 1613544 5743040 +1615120 5744376 1615248 5744352 1613544 5743040 1613544 5743064 +1615248 5744352 1613488 5742960 1613528 5743008 1613544 5743040 +1615120 5744376 1615016 5744760 1615248 5744352 1613544 5743040 +1615248 5744352 1613432 5742904 1613488 5742960 1613528 5743008 +1605152 5714944 1615248 5744352 1616160 5745400 1605152 5714888 +1615248 5744352 1615368 5744400 1605152 5714944 1613432 5742904 +1605152 5714944 1613368 5742856 1613432 5742904 1615368 5744400 +1615248 5744352 1615368 5744400 1613432 5742904 1613488 5742960 +1615368 5744400 1605152 5714944 1613432 5742904 1613488 5742960 +1615248 5744352 1616160 5745400 1615368 5744400 1613488 5742960 +1616160 5745400 1615368 5744400 1615248 5744352 1615016 5744760 +1616160 5745400 1615368 5744400 1615016 5744760 1614992 5744816 +1615248 5744352 1615120 5744376 1615016 5744760 1615368 5744400 +1615120 5744376 1615016 5744456 1615016 5744760 1615368 5744400 +1615368 5744400 1613488 5742960 1615248 5744352 1615120 5744376 +1615016 5744760 1616160 5745400 1615368 5744400 1615120 5744376 +1615368 5744400 1616160 5745400 1605152 5714944 1613432 5742904 +1616160 5745400 1605152 5714944 1615368 5744400 1615016 5744760 +1615248 5744352 1615368 5744400 1613488 5742960 1613528 5743008 +1615248 5744352 1615368 5744400 1613528 5743008 1613544 5743040 +1615368 5744400 1613432 5742904 1613488 5742960 1613528 5743008 +1615248 5744352 1615120 5744376 1615368 5744400 1613528 5743008 +1605152 5714944 1615368 5744400 1616160 5745400 1605152 5714888 +1605152 5714944 1613432 5742904 1615368 5744400 1605152 5714888 +1615368 5744400 1615016 5744760 1616160 5745400 1605152 5714888 +1605152 5714944 1615368 5744400 1605152 5714888 1605136 5714928 +1616160 5745400 1617608 5747096 1605152 5714888 1615368 5744400 +1617608 5747096 1663944 5646256 1605152 5714888 1615368 5744400 +1616160 5745400 1617608 5747096 1615368 5744400 1615016 5744760 +1616160 5745400 1617512 5746992 1617608 5747096 1615368 5744400 +1605152 5714888 1605152 5714944 1615368 5744400 1617608 5747096 +1605152 5714888 1615496 5744536 1617608 5747096 1663944 5646256 +1615368 5744400 1615496 5744536 1605152 5714888 1605152 5714944 +1615368 5744400 1615496 5744536 1605152 5714944 1613432 5742904 +1615368 5744400 1617608 5747096 1615496 5744536 1605152 5714944 +1615496 5744536 1617608 5747096 1605152 5714888 1605152 5714944 +1605152 5714888 1605136 5714928 1605152 5714944 1615496 5744536 +1617608 5747096 1615496 5744536 1615368 5744400 1616160 5745400 +1615496 5744536 1605152 5714944 1615368 5744400 1616160 5745400 +1615368 5744400 1615016 5744760 1616160 5745400 1615496 5744536 +1615016 5744760 1614992 5744816 1616160 5745400 1615496 5744536 +1614992 5744816 1615272 5746320 1616160 5745400 1615496 5744536 +1615368 5744400 1615120 5744376 1615016 5744760 1615496 5744536 +1615368 5744400 1615016 5744760 1615496 5744536 1605152 5714944 +1615016 5744760 1614992 5744816 1615496 5744536 1615368 5744400 +1617608 5747096 1605152 5714888 1615496 5744536 1616160 5745400 +1617608 5747096 1615496 5744536 1616160 5745400 1617512 5746992 +1616160 5745400 1617608 5747096 1615496 5744536 1614992 5744816 +1614992 5744816 1615544 5744608 1615496 5744536 1615016 5744760 +1616160 5745400 1615544 5744608 1614992 5744816 1615272 5746320 +1615496 5744536 1615368 5744400 1615016 5744760 1615544 5744608 +1615544 5744608 1616160 5745400 1615496 5744536 1615016 5744760 +1614992 5744816 1616160 5745400 1615544 5744608 1615016 5744760 +1615496 5744536 1615544 5744608 1616160 5745400 1617608 5747096 +1616160 5745400 1615552 5744704 1614992 5744816 1615272 5746320 +1615544 5744608 1615552 5744704 1616160 5745400 1615496 5744536 +1614992 5744816 1615552 5744704 1615544 5744608 1615016 5744760 +1615544 5744608 1615496 5744536 1615016 5744760 1615552 5744704 +1615496 5744536 1615368 5744400 1615016 5744760 1615552 5744704 +1615552 5744704 1616160 5745400 1615544 5744608 1615496 5744536 +1615016 5744760 1614992 5744816 1615552 5744704 1615496 5744536 +1614992 5744816 1616160 5745400 1615552 5744704 1615016 5744760 +1616160 5745400 1615520 5744752 1614992 5744816 1615272 5746320 +1615520 5744752 1615552 5744704 1614992 5744816 1615272 5746320 +1616160 5745400 1615520 5744752 1615272 5746320 1615480 5746344 +1614992 5744816 1614552 5745968 1615272 5746320 1615520 5744752 +1615552 5744704 1615520 5744752 1616160 5745400 1615544 5744608 +1614992 5744816 1615520 5744752 1615552 5744704 1615016 5744760 +1614992 5744816 1615272 5746320 1615520 5744752 1615016 5744760 +1615552 5744704 1615496 5744536 1615016 5744760 1615520 5744752 +1615552 5744704 1615544 5744608 1615496 5744536 1615520 5744752 +1615496 5744536 1615368 5744400 1615016 5744760 1615520 5744752 +1615496 5744536 1615016 5744760 1615520 5744752 1615544 5744608 +1615520 5744752 1616160 5745400 1615552 5744704 1615544 5744608 +1615016 5744760 1614992 5744816 1615520 5744752 1615496 5744536 +1616160 5745400 1615552 5744704 1615520 5744752 1615272 5746320 +1614992 5744816 1615416 5744816 1615520 5744752 1615016 5744760 +1615416 5744816 1615272 5746320 1615520 5744752 1615016 5744760 +1615272 5746320 1615416 5744816 1614992 5744816 1614552 5745968 +1615520 5744752 1615416 5744816 1615272 5746320 1616160 5745400 +1615520 5744752 1615016 5744760 1615416 5744816 1616160 5745400 +1615272 5746320 1615480 5746344 1616160 5745400 1615416 5744816 +1615416 5744816 1614992 5744816 1615272 5746320 1616160 5745400 +1614992 5744816 1615272 5746320 1615416 5744816 1615016 5744760 +1615520 5744752 1615496 5744536 1615016 5744760 1615416 5744816 +1615520 5744752 1615496 5744536 1615416 5744816 1616160 5745400 +1615016 5744760 1614992 5744816 1615416 5744816 1615496 5744536 +1615496 5744536 1615368 5744400 1615016 5744760 1615416 5744816 +1615016 5744760 1614992 5744816 1615416 5744816 1615368 5744400 +1615368 5744400 1615120 5744376 1615016 5744760 1615416 5744816 +1615520 5744752 1615544 5744608 1615496 5744536 1615416 5744816 +1615496 5744536 1615368 5744400 1615416 5744816 1615520 5744752 +1615520 5744752 1615416 5744816 1616160 5745400 1615552 5744704 +1615272 5746320 1615256 5744856 1614992 5744816 1614552 5745968 +1615272 5746320 1615416 5744816 1615256 5744856 1614552 5745968 +1615272 5746320 1615256 5744856 1614552 5745968 1615160 5746336 +1615256 5744856 1615416 5744816 1614992 5744816 1614552 5745968 +1614992 5744816 1614928 5744824 1614552 5745968 1615256 5744856 +1614928 5744824 1614392 5745696 1614552 5745968 1615256 5744856 +1614928 5744824 1614784 5744800 1614392 5745696 1615256 5744856 +1614992 5744816 1614928 5744824 1615256 5744856 1615416 5744816 +1614928 5744824 1614392 5745696 1615256 5744856 1614992 5744816 +1614552 5745968 1615272 5746320 1615256 5744856 1614392 5745696 +1615416 5744816 1615256 5744856 1615272 5746320 1616160 5745400 +1615256 5744856 1614552 5745968 1615272 5746320 1616160 5745400 +1615272 5746320 1615480 5746344 1616160 5745400 1615256 5744856 +1615416 5744816 1615256 5744856 1616160 5745400 1615520 5744752 +1615416 5744816 1614992 5744816 1615256 5744856 1616160 5745400 +1614992 5744816 1615256 5744856 1615416 5744816 1615016 5744760 +1615416 5744816 1615368 5744400 1615016 5744760 1615256 5744856 +1614992 5744816 1614928 5744824 1615256 5744856 1615016 5744760 +1615368 5744400 1615120 5744376 1615016 5744760 1615256 5744856 +1615368 5744400 1615120 5744376 1615256 5744856 1615416 5744816 +1615120 5744376 1615016 5744456 1615016 5744760 1615256 5744856 +1615368 5744400 1615248 5744352 1615120 5744376 1615256 5744856 +1615416 5744816 1615496 5744536 1615368 5744400 1615256 5744856 +1615368 5744400 1615120 5744376 1615256 5744856 1615496 5744536 +1615256 5744856 1616160 5745400 1615416 5744816 1615496 5744536 +1615016 5744760 1614992 5744816 1615256 5744856 1615120 5744376 +1615416 5744816 1615520 5744752 1615496 5744536 1615256 5744856 +1614392 5745696 1615240 5744880 1615256 5744856 1614928 5744824 +1614392 5745696 1615240 5744880 1614928 5744824 1614784 5744800 +1615240 5744880 1614552 5745968 1615256 5744856 1614928 5744824 +1614392 5745696 1614552 5745968 1615240 5744880 1614928 5744824 +1615256 5744856 1614992 5744816 1614928 5744824 1615240 5744880 +1614928 5744824 1614392 5745696 1615240 5744880 1614992 5744816 +1615256 5744856 1614992 5744816 1615240 5744880 1614552 5745968 +1615256 5744856 1615016 5744760 1614992 5744816 1615240 5744880 +1615256 5744856 1615016 5744760 1615240 5744880 1614552 5745968 +1614992 5744816 1614928 5744824 1615240 5744880 1615016 5744760 +1615256 5744856 1615240 5744880 1614552 5745968 1615272 5746320 +1615256 5744856 1615240 5744880 1615272 5746320 1616160 5745400 +1614552 5745968 1615160 5746336 1615272 5746320 1615240 5744880 +1615272 5746320 1615480 5746344 1616160 5745400 1615240 5744880 +1615256 5744856 1615016 5744760 1615240 5744880 1616160 5745400 +1615240 5744880 1614392 5745696 1614552 5745968 1615272 5746320 +1615240 5744880 1614552 5745968 1615272 5746320 1616160 5745400 +1615256 5744856 1615240 5744880 1616160 5745400 1615416 5744816 +1615256 5744856 1615016 5744760 1615240 5744880 1615416 5744816 +1615240 5744880 1615272 5746320 1616160 5745400 1615416 5744816 +1616160 5745400 1615520 5744752 1615416 5744816 1615240 5744880 +1615256 5744856 1615120 5744376 1615016 5744760 1615240 5744880 +1616160 5745400 1615872 5745184 1615240 5744880 1615272 5746320 +1616160 5745400 1615872 5745184 1615272 5746320 1615480 5746344 +1616160 5745400 1615872 5745184 1615480 5746344 1616232 5745520 +1615872 5745184 1615240 5744880 1615272 5746320 1615480 5746344 +1615872 5745184 1615416 5744816 1615240 5744880 1615272 5746320 +1616160 5745400 1615416 5744816 1615872 5745184 1615480 5746344 +1615240 5744880 1614552 5745968 1615272 5746320 1615872 5745184 +1615416 5744816 1615872 5745184 1616160 5745400 1615520 5744752 +1615416 5744816 1615240 5744880 1615872 5745184 1615520 5744752 +1615872 5745184 1615480 5746344 1616160 5745400 1615520 5744752 +1615240 5744880 1615872 5745184 1615416 5744816 1615256 5744856 +1616160 5745400 1615552 5744704 1615520 5744752 1615872 5745184 +1616160 5745400 1615552 5744704 1615872 5745184 1615480 5746344 +1615520 5744752 1615416 5744816 1615872 5745184 1615552 5744704 +1616160 5745400 1615544 5744608 1615552 5744704 1615872 5745184 +1615552 5744704 1615520 5744752 1615872 5745184 1615544 5744608 +1616160 5745400 1615544 5744608 1615872 5745184 1615480 5746344 +1616160 5745400 1615496 5744536 1615544 5744608 1615872 5745184 +1616160 5745400 1616016 5745272 1615872 5745184 1615480 5746344 +1616160 5745400 1616016 5745272 1615480 5746344 1616232 5745520 +1616160 5745400 1616016 5745272 1616232 5745520 1616216 5745480 +1615872 5745184 1615272 5746320 1615480 5746344 1616016 5745272 +1616016 5745272 1615872 5745184 1615480 5746344 1616232 5745520 +1616160 5745400 1615544 5744608 1616016 5745272 1616232 5745520 +1616016 5745272 1615544 5744608 1615872 5745184 1615480 5746344 +1615480 5746344 1616296 5745864 1616232 5745520 1616016 5745272 +1615544 5744608 1616016 5745272 1616160 5745400 1615496 5744536 +1615872 5745184 1616016 5745272 1615544 5744608 1615552 5744704 +1612512 5746760 1613248 5744440 1613368 5743032 1612464 5746776 +1613368 5743032 1613320 5742984 1612464 5746776 1613248 5744440 +1613320 5742984 1613224 5742856 1612464 5746776 1613248 5744440 +1613224 5742856 1613208 5742808 1612464 5746776 1613248 5744440 +1613224 5742856 1613208 5742808 1613248 5744440 1613320 5742984 +1613320 5742984 1613280 5742928 1613224 5742856 1613248 5744440 +1613224 5742856 1613208 5742808 1613248 5744440 1613280 5742928 +1612464 5746776 1612512 5746760 1613248 5744440 1613208 5742808 +1613320 5742984 1613280 5742928 1613248 5744440 1613368 5743032 +1612512 5746760 1614112 5744704 1613248 5744440 1612464 5746776 +1613368 5743032 1613248 5744440 1614112 5744704 1613416 5743064 +1614112 5744704 1613496 5743096 1613416 5743064 1613248 5744440 +1614112 5744704 1614144 5744672 1613496 5743096 1613248 5744440 +1613496 5743096 1613416 5743064 1613248 5744440 1614144 5744672 +1613416 5743064 1613368 5743032 1613248 5744440 1613496 5743096 +1614144 5744672 1613544 5743096 1613496 5743096 1613248 5744440 +1614144 5744672 1614352 5744672 1613544 5743096 1613248 5744440 +1614144 5744672 1613544 5743096 1613248 5744440 1614112 5744704 +1613496 5743096 1613416 5743064 1613248 5744440 1613544 5743096 +1613208 5742808 1599875 5760125 1612464 5746776 1613248 5744440 +1614112 5744704 1613248 5744440 1612512 5746760 1612584 5746744 +1613248 5744440 1612464 5746776 1612512 5746760 1612584 5746744 +1614112 5744704 1613248 5744440 1612584 5746744 1614128 5745040 +1612584 5746744 1612768 5746808 1614128 5745040 1613248 5744440 +1612768 5746808 1614392 5745696 1614128 5745040 1613248 5744440 +1614128 5745040 1614112 5744704 1613248 5744440 1612768 5746808 +1613248 5744440 1612512 5746760 1612584 5746744 1612768 5746808 +1613248 5744440 1613416 5743064 1613368 5743032 1613320 5742984 +1613248 5744440 1614128 5745040 1614112 5744704 1614144 5744672 +1614128 5745040 1613288 5744456 1613248 5744440 1612768 5746808 +1614128 5745040 1613288 5744456 1612768 5746808 1614392 5745696 +1614128 5745040 1614112 5744704 1613288 5744456 1612768 5746808 +1613248 5744440 1612584 5746744 1612768 5746808 1613288 5744456 +1612768 5746808 1614128 5745040 1613288 5744456 1612584 5746744 +1613248 5744440 1612512 5746760 1612584 5746744 1613288 5744456 +1613248 5744440 1613288 5744456 1614112 5744704 1614144 5744672 +1613248 5744440 1613288 5744456 1614144 5744672 1613544 5743096 +1614144 5744672 1614352 5744672 1613544 5743096 1613288 5744456 +1613288 5744456 1614128 5745040 1614112 5744704 1614144 5744672 +1613248 5744440 1613288 5744456 1613544 5743096 1613496 5743096 +1613288 5744456 1614112 5744704 1614144 5744672 1613544 5743096 +1613288 5744456 1613544 5743096 1613248 5744440 1612584 5746744 +1614128 5745040 1613304 5744472 1612768 5746808 1614392 5745696 +1613288 5744456 1613304 5744472 1614128 5745040 1614112 5744704 +1613288 5744456 1613304 5744472 1614112 5744704 1614144 5744672 +1613288 5744456 1612768 5746808 1613304 5744472 1614144 5744672 +1613304 5744472 1614128 5745040 1614112 5744704 1614144 5744672 +1613304 5744472 1612768 5746808 1614128 5745040 1614112 5744704 +1612768 5746808 1613304 5744472 1613288 5744456 1612584 5746744 +1613304 5744472 1614144 5744672 1613288 5744456 1612584 5746744 +1612768 5746808 1614128 5745040 1613304 5744472 1612584 5746744 +1613288 5744456 1613248 5744440 1612584 5746744 1613304 5744472 +1613288 5744456 1613248 5744440 1613304 5744472 1614144 5744672 +1612584 5746744 1612768 5746808 1613304 5744472 1613248 5744440 +1613248 5744440 1612512 5746760 1612584 5746744 1613304 5744472 +1613288 5744456 1613304 5744472 1614144 5744672 1613544 5743096 +1614128 5745040 1613352 5744536 1612768 5746808 1614392 5745696 +1613304 5744472 1613352 5744536 1614128 5745040 1614112 5744704 +1613304 5744472 1613352 5744536 1614112 5744704 1614144 5744672 +1613304 5744472 1613352 5744536 1614144 5744672 1613288 5744456 +1613352 5744536 1614128 5745040 1614112 5744704 1614144 5744672 +1613304 5744472 1612768 5746808 1613352 5744536 1614144 5744672 +1612768 5746808 1613352 5744536 1613304 5744472 1612584 5746744 +1612768 5746808 1614128 5745040 1613352 5744536 1612584 5746744 +1613352 5744536 1614144 5744672 1613304 5744472 1612584 5746744 +1613352 5744536 1612768 5746808 1614128 5745040 1614112 5744704 +1613304 5744472 1613248 5744440 1612584 5746744 1613352 5744536 +1613304 5744472 1613248 5744440 1613352 5744536 1614144 5744672 +1612584 5746744 1612768 5746808 1613352 5744536 1613248 5744440 +1613304 5744472 1613288 5744456 1613248 5744440 1613352 5744536 +1613248 5744440 1612512 5746760 1612584 5746744 1613352 5744536 +1614128 5745040 1613392 5744600 1612768 5746808 1614392 5745696 +1612768 5746808 1613392 5744600 1613352 5744536 1612584 5746744 +1613392 5744600 1614128 5745040 1613352 5744536 1612584 5746744 +1612768 5746808 1614128 5745040 1613392 5744600 1612584 5746744 +1613352 5744536 1613248 5744440 1612584 5746744 1613392 5744600 +1613352 5744536 1613248 5744440 1613392 5744600 1614128 5745040 +1612584 5746744 1612768 5746808 1613392 5744600 1613248 5744440 +1613352 5744536 1613392 5744600 1614128 5745040 1614112 5744704 +1613352 5744536 1613248 5744440 1613392 5744600 1614112 5744704 +1613392 5744600 1612768 5746808 1614128 5745040 1614112 5744704 +1613352 5744536 1613392 5744600 1614112 5744704 1614144 5744672 +1613352 5744536 1613248 5744440 1613392 5744600 1614144 5744672 +1613392 5744600 1614128 5745040 1614112 5744704 1614144 5744672 +1613352 5744536 1613392 5744600 1614144 5744672 1613304 5744472 +1613352 5744536 1613304 5744472 1613248 5744440 1613392 5744600 +1613248 5744440 1612512 5746760 1612584 5746744 1613392 5744600 +1614128 5745040 1613416 5744640 1612768 5746808 1614392 5745696 +1613392 5744600 1613416 5744640 1614128 5745040 1614112 5744704 +1613392 5744600 1613416 5744640 1614112 5744704 1614144 5744672 +1612768 5746808 1613416 5744640 1613392 5744600 1612584 5746744 +1613392 5744600 1613248 5744440 1612584 5746744 1613416 5744640 +1612584 5746744 1612768 5746808 1613416 5744640 1613248 5744440 +1613392 5744600 1613248 5744440 1613416 5744640 1614112 5744704 +1613416 5744640 1612768 5746808 1614128 5745040 1614112 5744704 +1612768 5746808 1614128 5745040 1613416 5744640 1612584 5746744 +1613392 5744600 1613352 5744536 1613248 5744440 1613416 5744640 +1613248 5744440 1612512 5746760 1612584 5746744 1613416 5744640 +1614128 5745040 1613432 5744704 1612768 5746808 1614392 5745696 +1612768 5746808 1612960 5746920 1614392 5745696 1613432 5744704 +1613416 5744640 1613432 5744704 1614128 5745040 1614112 5744704 +1613416 5744640 1613432 5744704 1614112 5744704 1613392 5744600 +1613416 5744640 1612768 5746808 1613432 5744704 1614112 5744704 +1612768 5746808 1613432 5744704 1613416 5744640 1612584 5746744 +1613416 5744640 1613248 5744440 1612584 5746744 1613432 5744704 +1613416 5744640 1613392 5744600 1613248 5744440 1613432 5744704 +1613248 5744440 1612584 5746744 1613432 5744704 1613392 5744600 +1613432 5744704 1614112 5744704 1613416 5744640 1613392 5744600 +1612584 5746744 1612768 5746808 1613432 5744704 1613248 5744440 +1614128 5745040 1614112 5744704 1613432 5744704 1614392 5745696 +1613392 5744600 1613352 5744536 1613248 5744440 1613432 5744704 +1613248 5744440 1612512 5746760 1612584 5746744 1613432 5744704 +1613248 5744440 1612512 5746760 1613432 5744704 1613392 5744600 +1612584 5746744 1612768 5746808 1613432 5744704 1612512 5746760 +1613248 5744440 1612464 5746776 1612512 5746760 1613432 5744704 +1613432 5744704 1612584 5746744 1612768 5746808 1614392 5745696 +1614392 5745696 1613464 5744784 1612768 5746808 1612960 5746920 +1613432 5744704 1613464 5744784 1614392 5745696 1614128 5745040 +1613432 5744704 1613464 5744784 1614128 5745040 1614112 5744704 +1613464 5744784 1614392 5745696 1614128 5745040 1614112 5744704 +1613432 5744704 1613464 5744784 1614112 5744704 1613416 5744640 +1613432 5744704 1612768 5746808 1613464 5744784 1614112 5744704 +1612768 5746808 1613464 5744784 1613432 5744704 1612584 5746744 +1613432 5744704 1612512 5746760 1612584 5746744 1613464 5744784 +1613432 5744704 1613248 5744440 1612512 5746760 1613464 5744784 +1613432 5744704 1613392 5744600 1613248 5744440 1613464 5744784 +1612512 5746760 1612584 5746744 1613464 5744784 1613248 5744440 +1613248 5744440 1612464 5746776 1612512 5746760 1613464 5744784 +1613464 5744784 1614112 5744704 1613432 5744704 1613248 5744440 +1612584 5746744 1612768 5746808 1613464 5744784 1612512 5746760 +1613464 5744784 1612768 5746808 1614392 5745696 1614128 5745040 +1612768 5746808 1614392 5745696 1613464 5744784 1612584 5746744 +1614392 5745696 1613464 5744832 1612768 5746808 1612960 5746920 +1613464 5744784 1613464 5744832 1614392 5745696 1614128 5745040 +1613464 5744784 1613464 5744832 1614128 5745040 1614112 5744704 +1613464 5744784 1612768 5746808 1613464 5744832 1614112 5744704 +1613464 5744832 1614392 5745696 1614128 5745040 1614112 5744704 +1613464 5744784 1613464 5744832 1614112 5744704 1613432 5744704 +1612768 5746808 1613464 5744832 1613464 5744784 1612584 5746744 +1613464 5744832 1614112 5744704 1613464 5744784 1612584 5746744 +1613464 5744784 1612512 5746760 1612584 5746744 1613464 5744832 +1613464 5744784 1613248 5744440 1612512 5746760 1613464 5744832 +1613464 5744784 1613248 5744440 1613464 5744832 1614112 5744704 +1613248 5744440 1612464 5746776 1612512 5746760 1613464 5744832 +1613464 5744784 1613432 5744704 1613248 5744440 1613464 5744832 +1613432 5744704 1613392 5744600 1613248 5744440 1613464 5744832 +1613248 5744440 1612512 5746760 1613464 5744832 1613432 5744704 +1613464 5744784 1613432 5744704 1613464 5744832 1614112 5744704 +1612512 5746760 1612584 5746744 1613464 5744832 1613248 5744440 +1612584 5746744 1612768 5746808 1613464 5744832 1612512 5746760 +1613464 5744832 1612768 5746808 1614392 5745696 1614128 5745040 +1612768 5746808 1614392 5745696 1613464 5744832 1612584 5746744 +1613248 5744440 1613408 5744872 1613464 5744832 1613432 5744704 +1613248 5744440 1613408 5744872 1613432 5744704 1613392 5744600 +1613432 5744704 1613416 5744640 1613392 5744600 1613408 5744872 +1613408 5744872 1613464 5744832 1613432 5744704 1613392 5744600 +1613248 5744440 1612512 5746760 1613408 5744872 1613392 5744600 +1613248 5744440 1613408 5744872 1613392 5744600 1613352 5744536 +1613408 5744872 1613432 5744704 1613392 5744600 1613352 5744536 +1613248 5744440 1612512 5746760 1613408 5744872 1613352 5744536 +1612512 5746760 1613408 5744872 1613248 5744440 1612464 5746776 +1612512 5746760 1613464 5744832 1613408 5744872 1612464 5746776 +1613408 5744872 1613352 5744536 1613248 5744440 1612464 5746776 +1613248 5744440 1613208 5742808 1612464 5746776 1613408 5744872 +1613248 5744440 1613408 5744872 1613352 5744536 1613304 5744472 +1613464 5744832 1613464 5744784 1613432 5744704 1613408 5744872 +1613432 5744704 1613392 5744600 1613408 5744872 1613464 5744784 +1613464 5744832 1613408 5744872 1612512 5746760 1612584 5746744 +1613408 5744872 1612464 5746776 1612512 5746760 1612584 5746744 +1613464 5744832 1613408 5744872 1612584 5746744 1612768 5746808 +1613408 5744872 1612512 5746760 1612584 5746744 1612768 5746808 +1613408 5744872 1612768 5746808 1613464 5744832 1613464 5744784 +1613464 5744832 1613408 5744872 1612768 5746808 1614392 5745696 +1612768 5746808 1612960 5746920 1614392 5745696 1613408 5744872 +1613408 5744872 1612584 5746744 1612768 5746808 1614392 5745696 +1613464 5744832 1613408 5744872 1614392 5745696 1614128 5745040 +1613408 5744872 1612768 5746808 1614392 5745696 1614128 5745040 +1613464 5744832 1613408 5744872 1614128 5745040 1614112 5744704 +1613464 5744832 1613464 5744784 1613408 5744872 1614128 5745040 +1613248 5744440 1613376 5744872 1613408 5744872 1613352 5744536 +1613376 5744872 1612464 5746776 1613408 5744872 1613352 5744536 +1613248 5744440 1612464 5746776 1613376 5744872 1613352 5744536 +1613408 5744872 1613392 5744600 1613352 5744536 1613376 5744872 +1613408 5744872 1613432 5744704 1613392 5744600 1613376 5744872 +1613432 5744704 1613416 5744640 1613392 5744600 1613376 5744872 +1613408 5744872 1613464 5744784 1613432 5744704 1613376 5744872 +1613432 5744704 1613392 5744600 1613376 5744872 1613464 5744784 +1613352 5744536 1613248 5744440 1613376 5744872 1613392 5744600 +1613408 5744872 1613464 5744784 1613376 5744872 1612464 5746776 +1613392 5744600 1613352 5744536 1613376 5744872 1613432 5744704 +1612464 5746776 1613376 5744872 1613248 5744440 1613208 5742808 +1613408 5744872 1613376 5744872 1612464 5746776 1612512 5746760 +1613408 5744872 1613376 5744872 1612512 5746760 1612584 5746744 +1613408 5744872 1613464 5744784 1613376 5744872 1612584 5746744 +1613376 5744872 1613248 5744440 1612464 5746776 1612512 5746760 +1613376 5744872 1612464 5746776 1612512 5746760 1612584 5746744 +1613248 5744440 1613376 5744872 1613352 5744536 1613304 5744472 +1613408 5744872 1613464 5744832 1613464 5744784 1613376 5744872 +1613408 5744872 1613376 5744872 1612584 5746744 1612768 5746808 +1613376 5744872 1612512 5746760 1612584 5746744 1612768 5746808 +1613408 5744872 1613464 5744784 1613376 5744872 1612768 5746808 +1613408 5744872 1613376 5744872 1612768 5746808 1614392 5745696 +1612768 5746808 1612960 5746920 1614392 5745696 1613376 5744872 +1613408 5744872 1613376 5744872 1614392 5745696 1614128 5745040 +1613408 5744872 1613464 5744784 1613376 5744872 1614392 5745696 +1613376 5744872 1612584 5746744 1612768 5746808 1614392 5745696 +1613376 5744872 1613344 5744856 1612464 5746776 1612512 5746760 +1613344 5744856 1613248 5744440 1612464 5746776 1612512 5746760 +1613376 5744872 1613248 5744440 1613344 5744856 1612512 5746760 +1613248 5744440 1613344 5744856 1613376 5744872 1613352 5744536 +1613248 5744440 1612464 5746776 1613344 5744856 1613352 5744536 +1613376 5744872 1613392 5744600 1613352 5744536 1613344 5744856 +1613344 5744856 1612512 5746760 1613376 5744872 1613392 5744600 +1613352 5744536 1613248 5744440 1613344 5744856 1613392 5744600 +1613376 5744872 1613432 5744704 1613392 5744600 1613344 5744856 +1613432 5744704 1613416 5744640 1613392 5744600 1613344 5744856 +1613376 5744872 1613464 5744784 1613432 5744704 1613344 5744856 +1613376 5744872 1613408 5744872 1613464 5744784 1613344 5744856 +1613392 5744600 1613352 5744536 1613344 5744856 1613416 5744640 +1613376 5744872 1613464 5744784 1613344 5744856 1612512 5746760 +1613432 5744704 1613416 5744640 1613344 5744856 1613464 5744784 +1612464 5746776 1613344 5744856 1613248 5744440 1613208 5742808 +1613376 5744872 1613344 5744856 1612512 5746760 1612584 5746744 +1613376 5744872 1613344 5744856 1612584 5746744 1612768 5746808 +1613344 5744856 1612464 5746776 1612512 5746760 1612584 5746744 +1613376 5744872 1613464 5744784 1613344 5744856 1612584 5746744 +1613248 5744440 1613344 5744856 1613352 5744536 1613304 5744472 +1613344 5744856 1613320 5744824 1612464 5746776 1612512 5746760 +1613344 5744856 1613248 5744440 1613320 5744824 1612512 5746760 +1613248 5744440 1613320 5744824 1613344 5744856 1613352 5744536 +1613320 5744824 1612512 5746760 1613344 5744856 1613352 5744536 +1613320 5744824 1613248 5744440 1612464 5746776 1612512 5746760 +1613248 5744440 1612464 5746776 1613320 5744824 1613352 5744536 +1613344 5744856 1613320 5744824 1612512 5746760 1612584 5746744 +1613320 5744824 1612464 5746776 1612512 5746760 1612584 5746744 +1613344 5744856 1613352 5744536 1613320 5744824 1612584 5746744 +1613344 5744856 1613392 5744600 1613352 5744536 1613320 5744824 +1613344 5744856 1613392 5744600 1613320 5744824 1612584 5746744 +1613352 5744536 1613248 5744440 1613320 5744824 1613392 5744600 +1613344 5744856 1613416 5744640 1613392 5744600 1613320 5744824 +1613344 5744856 1613416 5744640 1613320 5744824 1612584 5746744 +1613344 5744856 1613432 5744704 1613416 5744640 1613320 5744824 +1613344 5744856 1613432 5744704 1613320 5744824 1612584 5746744 +1613416 5744640 1613392 5744600 1613320 5744824 1613432 5744704 +1613392 5744600 1613352 5744536 1613320 5744824 1613416 5744640 +1613344 5744856 1613464 5744784 1613432 5744704 1613320 5744824 +1613344 5744856 1613464 5744784 1613320 5744824 1612584 5746744 +1613432 5744704 1613416 5744640 1613320 5744824 1613464 5744784 +1613344 5744856 1613376 5744872 1613464 5744784 1613320 5744824 +1612464 5746776 1613320 5744824 1613248 5744440 1613208 5742808 +1613344 5744856 1613320 5744824 1612584 5746744 1613376 5744872 +1613248 5744440 1613320 5744824 1613352 5744536 1613304 5744472 +1613320 5744824 1613280 5744752 1612464 5746776 1612512 5746760 +1613320 5744824 1613280 5744752 1612512 5746760 1612584 5746744 +1613320 5744824 1613248 5744440 1613280 5744752 1612512 5746760 +1613248 5744440 1613280 5744752 1613320 5744824 1613352 5744536 +1613320 5744824 1613392 5744600 1613352 5744536 1613280 5744752 +1613280 5744752 1612512 5746760 1613320 5744824 1613392 5744600 +1613352 5744536 1613248 5744440 1613280 5744752 1613392 5744600 +1613280 5744752 1613248 5744440 1612464 5746776 1612512 5746760 +1613320 5744824 1613416 5744640 1613392 5744600 1613280 5744752 +1613392 5744600 1613352 5744536 1613280 5744752 1613416 5744640 +1613320 5744824 1613416 5744640 1613280 5744752 1612512 5746760 +1613320 5744824 1613432 5744704 1613416 5744640 1613280 5744752 +1613320 5744824 1613432 5744704 1613280 5744752 1612512 5746760 +1613320 5744824 1613464 5744784 1613432 5744704 1613280 5744752 +1613416 5744640 1613392 5744600 1613280 5744752 1613432 5744704 +1612464 5746776 1613280 5744752 1613248 5744440 1613208 5742808 +1613248 5744440 1612464 5746776 1613280 5744752 1613352 5744536 +1613248 5744440 1613280 5744752 1613352 5744536 1613304 5744472 +1613280 5744752 1613392 5744600 1613352 5744536 1613304 5744472 +1613248 5744440 1613280 5744752 1613304 5744472 1613288 5744456 +1613248 5744440 1612464 5746776 1613280 5744752 1613304 5744472 +1613280 5744752 1613248 5744688 1612464 5746776 1612512 5746760 +1612464 5746776 1613248 5744688 1613248 5744440 1613208 5742808 +1613248 5744440 1613248 5744688 1613280 5744752 1613304 5744472 +1613248 5744688 1612464 5746776 1613280 5744752 1613304 5744472 +1613248 5744440 1613248 5744688 1613304 5744472 1613288 5744456 +1613248 5744440 1612464 5746776 1613248 5744688 1613304 5744472 +1613280 5744752 1613352 5744536 1613304 5744472 1613248 5744688 +1613280 5744752 1613392 5744600 1613352 5744536 1613248 5744688 +1613280 5744752 1613416 5744640 1613392 5744600 1613248 5744688 +1613392 5744600 1613352 5744536 1613248 5744688 1613416 5744640 +1613280 5744752 1613416 5744640 1613248 5744688 1612464 5746776 +1613280 5744752 1613432 5744704 1613416 5744640 1613248 5744688 +1613304 5744472 1613248 5744440 1613248 5744688 1613352 5744536 +1613352 5744536 1613304 5744472 1613248 5744688 1613392 5744600 +1605152 5714888 1609320 5714928 1663944 5646256 1605128 5714784 +1663944 5646256 1609320 5714928 1617608 5747096 1617712 5747256 +1617608 5747096 1609320 5714928 1605152 5714888 1615496 5744536 +1605152 5714888 1615496 5744536 1609320 5714928 1605128 5714784 +1605152 5714888 1605152 5714944 1615496 5744536 1609320 5714928 +1615496 5744536 1617608 5747096 1609320 5714928 1605152 5714944 +1605152 5714888 1605152 5714944 1609320 5714928 1605128 5714784 +1617608 5747096 1609320 5714928 1615496 5744536 1616160 5745400 +1663944 5646256 1609320 5714928 1617712 5747256 1743800 5687320 +1609320 5714928 1617712 5747256 1663944 5646256 1605128 5714784 +1609320 5714928 1615496 5744536 1617608 5747096 1617712 5747256 +1663944 5646256 1663880 5646248 1605128 5714784 1609320 5714928 +1605128 5714784 1605152 5714888 1609320 5714928 1663880 5646248 +1663880 5646248 1605040 5714624 1605128 5714784 1609320 5714928 +1605128 5714784 1605152 5714888 1609320 5714928 1605040 5714624 +1663880 5646248 1604944 5714528 1605040 5714624 1609320 5714928 +1605040 5714624 1605128 5714784 1609320 5714928 1604944 5714528 +1663880 5646248 1663776 5646144 1604944 5714528 1609320 5714928 +1604944 5714528 1605040 5714624 1609320 5714928 1663776 5646144 +1663944 5646256 1663880 5646248 1609320 5714928 1617712 5747256 +1663880 5646248 1663776 5646144 1609320 5714928 1663944 5646256 +1605152 5714944 1615368 5744400 1615496 5744536 1609320 5714928 +1615496 5744536 1617608 5747096 1609320 5714928 1615368 5744400 +1605152 5714944 1613432 5742904 1615368 5744400 1609320 5714928 +1605152 5714944 1613368 5742856 1613432 5742904 1609320 5714928 +1605152 5714944 1613280 5742808 1613368 5742856 1609320 5714928 +1613368 5742856 1613432 5742904 1609320 5714928 1613280 5742808 +1613432 5742904 1613488 5742960 1615368 5744400 1609320 5714928 +1613432 5742904 1615368 5744400 1609320 5714928 1613368 5742856 +1605152 5714944 1613280 5742808 1609320 5714928 1605152 5714888 +1605152 5714944 1613208 5742808 1613280 5742808 1609320 5714928 +1605152 5714944 1605064 5714952 1613208 5742808 1609320 5714928 +1613280 5742808 1613368 5742856 1609320 5714928 1613208 5742808 +1605152 5714944 1613208 5742808 1609320 5714928 1605152 5714888 +1615368 5744400 1615496 5744536 1609320 5714928 1613432 5742904 +1605152 5714888 1605136 5714928 1605152 5714944 1609320 5714928 +1663776 5646144 1657088 5639464 1604944 5714528 1609320 5714928 +1657088 5639464 1604840 5714480 1604944 5714528 1609320 5714928 +1604944 5714528 1605040 5714624 1609320 5714928 1604840 5714480 +1657088 5639464 1657056 5639384 1604840 5714480 1609320 5714928 +1663776 5646144 1657088 5639464 1609320 5714928 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1609320 5714928 +1657088 5639464 1604840 5714480 1609320 5714928 1663776 5646144 +1609320 5714928 1609352 5714856 1604840 5714480 1604944 5714528 +1609352 5714856 1657088 5639464 1604840 5714480 1604944 5714528 +1609320 5714928 1609352 5714856 1604944 5714528 1605040 5714624 +1609352 5714856 1604840 5714480 1604944 5714528 1605040 5714624 +1609320 5714928 1609352 5714856 1605040 5714624 1605128 5714784 +1609320 5714928 1609352 5714856 1605128 5714784 1605152 5714888 +1609352 5714856 1604944 5714528 1605040 5714624 1605128 5714784 +1604840 5714480 1609352 5714856 1657088 5639464 1657056 5639384 +1609320 5714928 1657088 5639464 1609352 5714856 1605128 5714784 +1657088 5639464 1609352 5714856 1609320 5714928 1663776 5646144 +1609352 5714856 1605128 5714784 1609320 5714928 1663776 5646144 +1657088 5639464 1604840 5714480 1609352 5714856 1663776 5646144 +1609320 5714928 1663880 5646248 1663776 5646144 1609352 5714856 +1609320 5714928 1663880 5646248 1609352 5714856 1605128 5714784 +1657088 5639464 1609352 5714856 1663776 5646144 1663688 5645984 +1609320 5714928 1663944 5646256 1663880 5646248 1609352 5714856 +1609320 5714928 1663944 5646256 1609352 5714856 1605128 5714784 +1663880 5646248 1663776 5646144 1609352 5714856 1663944 5646256 +1609320 5714928 1617712 5747256 1663944 5646256 1609352 5714856 +1609320 5714928 1617608 5747096 1617712 5747256 1609352 5714856 +1609320 5714928 1617608 5747096 1609352 5714856 1605128 5714784 +1617712 5747256 1743800 5687320 1663944 5646256 1609352 5714856 +1617712 5747256 1663944 5646256 1609352 5714856 1617608 5747096 +1609320 5714928 1615496 5744536 1617608 5747096 1609352 5714856 +1617608 5747096 1617712 5747256 1609352 5714856 1615496 5744536 +1609320 5714928 1615368 5744400 1615496 5744536 1609352 5714856 +1609320 5714928 1615368 5744400 1609352 5714856 1605128 5714784 +1615496 5744536 1616160 5745400 1617608 5747096 1609352 5714856 +1615496 5744536 1617608 5747096 1609352 5714856 1615368 5744400 +1663944 5646256 1663880 5646248 1609352 5714856 1617712 5747256 +1609320 5714928 1613432 5742904 1615368 5744400 1609352 5714856 +1663776 5646144 1657088 5639464 1609352 5714856 1663880 5646248 +1609352 5714856 1609368 5714824 1604840 5714480 1604944 5714528 +1609352 5714856 1609368 5714824 1604944 5714528 1605040 5714624 +1609368 5714824 1604840 5714480 1604944 5714528 1605040 5714624 +1609352 5714856 1609368 5714824 1605040 5714624 1605128 5714784 +1609368 5714824 1604944 5714528 1605040 5714624 1605128 5714784 +1609352 5714856 1609368 5714824 1605128 5714784 1609320 5714928 +1604840 5714480 1609368 5714824 1657088 5639464 1657056 5639384 +1657088 5639464 1609368 5714824 1609352 5714856 1663776 5646144 +1609352 5714856 1663776 5646144 1609368 5714824 1605128 5714784 +1609368 5714824 1657088 5639464 1604840 5714480 1604944 5714528 +1657088 5639464 1609368 5714824 1663776 5646144 1663688 5645984 +1609352 5714856 1663880 5646248 1663776 5646144 1609368 5714824 +1663776 5646144 1657088 5639464 1609368 5714824 1663880 5646248 +1609352 5714856 1663880 5646248 1609368 5714824 1605128 5714784 +1609352 5714856 1663944 5646256 1663880 5646248 1609368 5714824 +1609352 5714856 1663944 5646256 1609368 5714824 1605128 5714784 +1609352 5714856 1617712 5747256 1663944 5646256 1609368 5714824 +1609352 5714856 1617712 5747256 1609368 5714824 1605128 5714784 +1663944 5646256 1663880 5646248 1609368 5714824 1617712 5747256 +1617712 5747256 1743800 5687320 1663944 5646256 1609368 5714824 +1609352 5714856 1617608 5747096 1617712 5747256 1609368 5714824 +1609352 5714856 1615496 5744536 1617608 5747096 1609368 5714824 +1609352 5714856 1615496 5744536 1609368 5714824 1605128 5714784 +1615496 5744536 1616160 5745400 1617608 5747096 1609368 5714824 +1617608 5747096 1617712 5747256 1609368 5714824 1615496 5744536 +1609352 5714856 1615368 5744400 1615496 5744536 1609368 5714824 +1615496 5744536 1617608 5747096 1609368 5714824 1615368 5744400 +1609352 5714856 1609320 5714928 1615368 5744400 1609368 5714824 +1609352 5714856 1609320 5714928 1609368 5714824 1605128 5714784 +1615368 5744400 1615496 5744536 1609368 5714824 1609320 5714928 +1617712 5747256 1663944 5646256 1609368 5714824 1617608 5747096 +1609320 5714928 1613432 5742904 1615368 5744400 1609368 5714824 +1663880 5646248 1663776 5646144 1609368 5714824 1663944 5646256 +1657088 5639464 1604840 5714480 1609368 5714824 1663776 5646144 +1604840 5714480 1609408 5714752 1657088 5639464 1657056 5639384 +1609368 5714824 1609408 5714752 1604840 5714480 1604944 5714528 +1609368 5714824 1609408 5714752 1604944 5714528 1605040 5714624 +1609368 5714824 1609408 5714752 1605040 5714624 1605128 5714784 +1609408 5714752 1604944 5714528 1605040 5714624 1605128 5714784 +1609368 5714824 1609408 5714752 1605128 5714784 1609352 5714856 +1609408 5714752 1604840 5714480 1604944 5714528 1605040 5714624 +1609368 5714824 1657088 5639464 1609408 5714752 1605128 5714784 +1657088 5639464 1609408 5714752 1609368 5714824 1663776 5646144 +1609368 5714824 1663880 5646248 1663776 5646144 1609408 5714752 +1657088 5639464 1609408 5714752 1663776 5646144 1663688 5645984 +1657088 5639464 1604840 5714480 1609408 5714752 1663776 5646144 +1609368 5714824 1663944 5646256 1663880 5646248 1609408 5714752 +1663880 5646248 1663776 5646144 1609408 5714752 1663944 5646256 +1609368 5714824 1617712 5747256 1663944 5646256 1609408 5714752 +1617712 5747256 1743800 5687320 1663944 5646256 1609408 5714752 +1609368 5714824 1617608 5747096 1617712 5747256 1609408 5714752 +1617712 5747256 1663944 5646256 1609408 5714752 1617608 5747096 +1609368 5714824 1615496 5744536 1617608 5747096 1609408 5714752 +1609368 5714824 1615368 5744400 1615496 5744536 1609408 5714752 +1615496 5744536 1616160 5745400 1617608 5747096 1609408 5714752 +1615496 5744536 1617608 5747096 1609408 5714752 1615368 5744400 +1609368 5714824 1609320 5714928 1615368 5744400 1609408 5714752 +1615368 5744400 1615496 5744536 1609408 5714752 1609320 5714928 +1609368 5714824 1609352 5714856 1609320 5714928 1609408 5714752 +1617608 5747096 1617712 5747256 1609408 5714752 1615496 5744536 +1609320 5714928 1613432 5742904 1615368 5744400 1609408 5714752 +1663944 5646256 1663880 5646248 1609408 5714752 1617712 5747256 +1609408 5714752 1605128 5714784 1609368 5714824 1609320 5714928 +1663776 5646144 1657088 5639464 1609408 5714752 1663880 5646248 +1609408 5714752 1657088 5639464 1604840 5714480 1604944 5714528 +1617712 5747256 1609432 5714744 1609408 5714752 1617608 5747096 +1617712 5747256 1663944 5646256 1609432 5714744 1617608 5747096 +1663944 5646256 1609432 5714744 1617712 5747256 1743800 5687320 +1609432 5714744 1663944 5646256 1609408 5714752 1617608 5747096 +1609408 5714752 1615496 5744536 1617608 5747096 1609432 5714744 +1617608 5747096 1617712 5747256 1609432 5714744 1615496 5744536 +1615496 5744536 1616160 5745400 1617608 5747096 1609432 5714744 +1609408 5714752 1615368 5744400 1615496 5744536 1609432 5714744 +1609408 5714752 1609320 5714928 1615368 5744400 1609432 5714744 +1615368 5744400 1615496 5744536 1609432 5714744 1609320 5714928 +1609408 5714752 1609368 5714824 1609320 5714928 1609432 5714744 +1609320 5714928 1615368 5744400 1609432 5714744 1609368 5714824 +1609368 5714824 1609352 5714856 1609320 5714928 1609432 5714744 +1609320 5714928 1615368 5744400 1609432 5714744 1609352 5714856 +1609368 5714824 1609352 5714856 1609432 5714744 1609408 5714752 +1609408 5714752 1609368 5714824 1609432 5714744 1663944 5646256 +1615496 5744536 1617608 5747096 1609432 5714744 1615368 5744400 +1609320 5714928 1613432 5742904 1615368 5744400 1609432 5714744 +1609408 5714752 1609432 5714744 1663944 5646256 1663880 5646248 +1609408 5714752 1609432 5714744 1663880 5646248 1663776 5646144 +1609408 5714752 1609368 5714824 1609432 5714744 1663776 5646144 +1609432 5714744 1617712 5747256 1663944 5646256 1663880 5646248 +1609432 5714744 1663944 5646256 1663880 5646248 1663776 5646144 +1609408 5714752 1609432 5714744 1663776 5646144 1657088 5639464 +1609432 5714744 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1609432 5714744 +1609408 5714752 1609368 5714824 1609432 5714744 1657088 5639464 +1609408 5714752 1609432 5714744 1657088 5639464 1604840 5714480 +1657088 5639464 1657056 5639384 1604840 5714480 1609432 5714744 +1609408 5714752 1609368 5714824 1609432 5714744 1604840 5714480 +1609432 5714744 1663776 5646144 1657088 5639464 1604840 5714480 +1609408 5714752 1609432 5714744 1604840 5714480 1604944 5714528 +1617712 5747256 1609480 5714768 1609432 5714744 1617608 5747096 +1609480 5714768 1663944 5646256 1609432 5714744 1617608 5747096 +1609432 5714744 1615496 5744536 1617608 5747096 1609480 5714768 +1609432 5714744 1615496 5744536 1609480 5714768 1663944 5646256 +1617608 5747096 1617712 5747256 1609480 5714768 1615496 5744536 +1615496 5744536 1616160 5745400 1617608 5747096 1609480 5714768 +1663944 5646256 1609480 5714768 1617712 5747256 1743800 5687320 +1609432 5714744 1609480 5714768 1663944 5646256 1663880 5646248 +1609432 5714744 1615496 5744536 1609480 5714768 1663880 5646248 +1609480 5714768 1617712 5747256 1663944 5646256 1663880 5646248 +1609432 5714744 1615368 5744400 1615496 5744536 1609480 5714768 +1609432 5714744 1615368 5744400 1609480 5714768 1663880 5646248 +1615496 5744536 1617608 5747096 1609480 5714768 1615368 5744400 +1609432 5714744 1609320 5714928 1615368 5744400 1609480 5714768 +1609432 5714744 1609320 5714928 1609480 5714768 1663880 5646248 +1609432 5714744 1609352 5714856 1609320 5714928 1609480 5714768 +1609432 5714744 1609352 5714856 1609480 5714768 1663880 5646248 +1609432 5714744 1609368 5714824 1609352 5714856 1609480 5714768 +1609432 5714744 1609368 5714824 1609480 5714768 1663880 5646248 +1609352 5714856 1609320 5714928 1609480 5714768 1609368 5714824 +1609320 5714928 1615368 5744400 1609480 5714768 1609352 5714856 +1609432 5714744 1609408 5714752 1609368 5714824 1609480 5714768 +1609432 5714744 1609408 5714752 1609480 5714768 1663880 5646248 +1609368 5714824 1609352 5714856 1609480 5714768 1609408 5714752 +1615368 5744400 1615496 5744536 1609480 5714768 1609320 5714928 +1609320 5714928 1613432 5742904 1615368 5744400 1609480 5714768 +1613432 5742904 1613488 5742960 1615368 5744400 1609480 5714768 +1609320 5714928 1613368 5742856 1613432 5742904 1609480 5714768 +1609320 5714928 1613280 5742808 1613368 5742856 1609480 5714768 +1609320 5714928 1613368 5742856 1609480 5714768 1609352 5714856 +1615368 5744400 1615496 5744536 1609480 5714768 1613432 5742904 +1613432 5742904 1615368 5744400 1609480 5714768 1613368 5742856 +1609432 5714744 1609480 5714768 1663880 5646248 1663776 5646144 +1609432 5714744 1609408 5714752 1609480 5714768 1663776 5646144 +1609432 5714744 1609480 5714768 1663776 5646144 1657088 5639464 +1609480 5714768 1663944 5646256 1663880 5646248 1663776 5646144 +1617712 5747256 1663944 5646256 1609480 5714768 1617608 5747096 +1609480 5714768 1609512 5714824 1663944 5646256 1663880 5646248 +1663944 5646256 1609512 5714824 1617712 5747256 1743800 5687320 +1663944 5646256 1609512 5714824 1743800 5687320 1664040 5646192 +1617712 5747256 1743888 5687504 1743800 5687320 1609512 5714824 +1609480 5714768 1609512 5714824 1663880 5646248 1663776 5646144 +1609512 5714824 1609480 5714768 1617712 5747256 1743800 5687320 +1609480 5714768 1617712 5747256 1609512 5714824 1663880 5646248 +1617712 5747256 1609512 5714824 1609480 5714768 1617608 5747096 +1609480 5714768 1615496 5744536 1617608 5747096 1609512 5714824 +1609480 5714768 1615368 5744400 1615496 5744536 1609512 5714824 +1615496 5744536 1617608 5747096 1609512 5714824 1615368 5744400 +1615496 5744536 1616160 5745400 1617608 5747096 1609512 5714824 +1617712 5747256 1743800 5687320 1609512 5714824 1617608 5747096 +1609480 5714768 1613432 5742904 1615368 5744400 1609512 5714824 +1613432 5742904 1613488 5742960 1615368 5744400 1609512 5714824 +1615368 5744400 1615496 5744536 1609512 5714824 1613432 5742904 +1609480 5714768 1613368 5742856 1613432 5742904 1609512 5714824 +1609480 5714768 1609320 5714928 1613368 5742856 1609512 5714824 +1609320 5714928 1613280 5742808 1613368 5742856 1609512 5714824 +1609320 5714928 1613208 5742808 1613280 5742808 1609512 5714824 +1609320 5714928 1613280 5742808 1609512 5714824 1609480 5714768 +1609480 5714768 1609352 5714856 1609320 5714928 1609512 5714824 +1609480 5714768 1609368 5714824 1609352 5714856 1609512 5714824 +1609480 5714768 1609408 5714752 1609368 5714824 1609512 5714824 +1609320 5714928 1613280 5742808 1609512 5714824 1609352 5714856 +1609352 5714856 1609320 5714928 1609512 5714824 1609368 5714824 +1613432 5742904 1615368 5744400 1609512 5714824 1613368 5742856 +1613368 5742856 1613432 5742904 1609512 5714824 1613280 5742808 +1609512 5714824 1663880 5646248 1609480 5714768 1609368 5714824 +1617608 5747096 1617712 5747256 1609512 5714824 1615496 5744536 +1609512 5714824 1743800 5687320 1663944 5646256 1663880 5646248 +1609512 5714824 1609512 5714872 1613280 5742808 1613368 5742856 +1613280 5742808 1609512 5714872 1609320 5714928 1613208 5742808 +1609320 5714928 1609512 5714872 1609512 5714824 1609352 5714856 +1609512 5714824 1609368 5714824 1609352 5714856 1609512 5714872 +1609512 5714824 1609480 5714768 1609368 5714824 1609512 5714872 +1609352 5714856 1609320 5714928 1609512 5714872 1609368 5714824 +1609512 5714824 1609368 5714824 1609512 5714872 1613368 5742856 +1609512 5714872 1609320 5714928 1613280 5742808 1613368 5742856 +1609320 5714928 1613280 5742808 1609512 5714872 1609352 5714856 +1609512 5714824 1609512 5714872 1613368 5742856 1613432 5742904 +1609512 5714872 1613280 5742808 1613368 5742856 1613432 5742904 +1609512 5714824 1609368 5714824 1609512 5714872 1613432 5742904 +1609512 5714824 1609512 5714872 1613432 5742904 1615368 5744400 +1613432 5742904 1613488 5742960 1615368 5744400 1609512 5714872 +1609512 5714824 1609512 5714872 1615368 5744400 1615496 5744536 +1609512 5714824 1609512 5714872 1615496 5744536 1617608 5747096 +1609512 5714872 1615368 5744400 1615496 5744536 1617608 5747096 +1615496 5744536 1616160 5745400 1617608 5747096 1609512 5714872 +1609512 5714824 1609368 5714824 1609512 5714872 1617608 5747096 +1609512 5714872 1613432 5742904 1615368 5744400 1615496 5744536 +1609512 5714872 1613368 5742856 1613432 5742904 1615368 5744400 +1609512 5714824 1609512 5714872 1617608 5747096 1617712 5747256 +1609512 5714872 1615496 5744536 1617608 5747096 1617712 5747256 +1609512 5714824 1609368 5714824 1609512 5714872 1617712 5747256 +1609512 5714824 1609512 5714872 1617712 5747256 1743800 5687320 +1613280 5742808 1609472 5714976 1609320 5714928 1613208 5742808 +1609320 5714928 1605152 5714944 1613208 5742808 1609472 5714976 +1605152 5714944 1605064 5714952 1613208 5742808 1609472 5714976 +1613208 5742808 1613280 5742808 1609472 5714976 1605152 5714944 +1609320 5714928 1605152 5714888 1605152 5714944 1609472 5714976 +1609512 5714872 1609472 5714976 1613280 5742808 1613368 5742856 +1609512 5714872 1609472 5714976 1613368 5742856 1613432 5742904 +1609472 5714976 1613280 5742808 1613368 5742856 1613432 5742904 +1609512 5714872 1609320 5714928 1609472 5714976 1613432 5742904 +1609320 5714928 1609472 5714976 1609512 5714872 1609352 5714856 +1609512 5714872 1609368 5714824 1609352 5714856 1609472 5714976 +1609472 5714976 1613432 5742904 1609512 5714872 1609352 5714856 +1613280 5742808 1613368 5742856 1609472 5714976 1613208 5742808 +1609472 5714976 1609352 5714856 1609320 5714928 1605152 5714944 +1609512 5714872 1609472 5714976 1613432 5742904 1615368 5744400 +1609472 5714976 1613368 5742856 1613432 5742904 1615368 5744400 +1613432 5742904 1613488 5742960 1615368 5744400 1609472 5714976 +1609512 5714872 1609352 5714856 1609472 5714976 1615368 5744400 +1609512 5714872 1609472 5714976 1615368 5744400 1615496 5744536 +1613208 5742808 1609448 5715040 1605152 5714944 1605064 5714952 +1609472 5714976 1609448 5715040 1613208 5742808 1613280 5742808 +1605152 5714944 1609448 5715040 1609472 5714976 1609320 5714928 +1605152 5714944 1609448 5715040 1609320 5714928 1605152 5714888 +1609448 5715040 1605152 5714944 1613208 5742808 1613280 5742808 +1605152 5714944 1613208 5742808 1609448 5715040 1609320 5714928 +1609472 5714976 1609448 5715040 1613280 5742808 1613368 5742856 +1609448 5715040 1613208 5742808 1613280 5742808 1613368 5742856 +1609472 5714976 1609448 5715040 1613368 5742856 1613432 5742904 +1609472 5714976 1609448 5715040 1613432 5742904 1615368 5744400 +1613432 5742904 1613488 5742960 1615368 5744400 1609448 5715040 +1609448 5715040 1613368 5742856 1613432 5742904 1615368 5744400 +1609448 5715040 1613280 5742808 1613368 5742856 1613432 5742904 +1609472 5714976 1609320 5714928 1609448 5715040 1615368 5744400 +1609472 5714976 1609352 5714856 1609320 5714928 1609448 5715040 +1609472 5714976 1609448 5715040 1615368 5744400 1609512 5714872 +1609448 5715040 1613432 5742904 1615368 5744400 1609512 5714872 +1609472 5714976 1609320 5714928 1609448 5715040 1609512 5714872 +1615368 5744400 1615496 5744536 1609512 5714872 1609448 5715040 +1613208 5742808 1609416 5715088 1605152 5714944 1605064 5714952 +1609448 5715040 1609416 5715088 1613208 5742808 1613280 5742808 +1609448 5715040 1609416 5715088 1613280 5742808 1613368 5742856 +1609416 5715088 1605152 5714944 1613208 5742808 1613280 5742808 +1609416 5715088 1613208 5742808 1613280 5742808 1613368 5742856 +1609448 5715040 1605152 5714944 1609416 5715088 1613368 5742856 +1605152 5714944 1609416 5715088 1609448 5715040 1609320 5714928 +1605152 5714944 1613208 5742808 1609416 5715088 1609320 5714928 +1605152 5714944 1609416 5715088 1609320 5714928 1605152 5714888 +1609448 5715040 1609472 5714976 1609320 5714928 1609416 5715088 +1609416 5715088 1613368 5742856 1609448 5715040 1609320 5714928 +1609448 5715040 1609416 5715088 1613368 5742856 1613432 5742904 +1609416 5715088 1613280 5742808 1613368 5742856 1613432 5742904 +1609448 5715040 1609320 5714928 1609416 5715088 1613432 5742904 +1609448 5715040 1609416 5715088 1613432 5742904 1615368 5744400 +1613208 5742808 1609392 5715096 1605152 5714944 1605064 5714952 +1609416 5715088 1609392 5715096 1613208 5742808 1613280 5742808 +1609392 5715096 1605152 5714944 1613208 5742808 1613280 5742808 +1609416 5715088 1605152 5714944 1609392 5715096 1613280 5742808 +1605152 5714944 1609392 5715096 1609416 5715088 1609320 5714928 +1609392 5715096 1613280 5742808 1609416 5715088 1609320 5714928 +1605152 5714944 1609392 5715096 1609320 5714928 1605152 5714888 +1605152 5714944 1613208 5742808 1609392 5715096 1609320 5714928 +1609416 5715088 1609392 5715096 1613280 5742808 1613368 5742856 +1609416 5715088 1609448 5715040 1609320 5714928 1609392 5715096 +1609416 5715088 1609448 5715040 1609392 5715096 1613280 5742808 +1609320 5714928 1605152 5714944 1609392 5715096 1609448 5715040 +1609448 5715040 1609472 5714976 1609320 5714928 1609392 5715096 +1609392 5715096 1609368 5715096 1613208 5742808 1613280 5742808 +1613208 5742808 1609368 5715096 1605152 5714944 1605064 5714952 +1605152 5714944 1609368 5715096 1609392 5715096 1609320 5714928 +1609368 5715096 1613208 5742808 1609392 5715096 1609320 5714928 +1609392 5715096 1609448 5715040 1609320 5714928 1609368 5715096 +1609392 5715096 1609448 5715040 1609368 5715096 1613208 5742808 +1605152 5714944 1613208 5742808 1609368 5715096 1609320 5714928 +1605152 5714944 1609368 5715096 1609320 5714928 1605152 5714888 +1609320 5714928 1605152 5714944 1609368 5715096 1609448 5715040 +1609448 5715040 1609472 5714976 1609320 5714928 1609368 5715096 +1609392 5715096 1609416 5715088 1609448 5715040 1609368 5715096 +1609368 5715096 1609360 5715080 1605152 5714944 1613208 5742808 +1605152 5714944 1609360 5715080 1609320 5714928 1605152 5714888 +1609320 5714928 1609360 5715080 1609368 5715096 1609448 5715040 +1609320 5714928 1605152 5714944 1609360 5715080 1609448 5715040 +1609368 5715096 1609392 5715096 1609448 5715040 1609360 5715080 +1609448 5715040 1609320 5714928 1609360 5715080 1609392 5715096 +1609320 5714928 1609360 5715080 1609448 5715040 1609472 5714976 +1609392 5715096 1609416 5715088 1609448 5715040 1609360 5715080 +1609392 5715096 1609416 5715088 1609360 5715080 1609368 5715096 +1609448 5715040 1609320 5714928 1609360 5715080 1609416 5715088 +1609360 5715080 1605152 5714944 1609368 5715096 1609392 5715096 +1609320 5714928 1609320 5714984 1609360 5715080 1609448 5715040 +1609320 5714984 1605152 5714944 1609360 5715080 1609448 5715040 +1609320 5714928 1605152 5714944 1609320 5714984 1609448 5715040 +1605152 5714944 1609320 5714984 1609320 5714928 1605152 5714888 +1609360 5715080 1609416 5715088 1609448 5715040 1609320 5714984 +1609320 5714928 1609320 5714984 1609448 5715040 1609472 5714976 +1609320 5714984 1609360 5715080 1609448 5715040 1609472 5714976 +1609320 5714928 1605152 5714944 1609320 5714984 1609472 5714976 +1609320 5714928 1609320 5714984 1609472 5714976 1609352 5714856 +1609360 5715080 1609320 5714984 1605152 5714944 1609368 5715096 +1743800 5687320 1615320 5735328 1617712 5747256 1743888 5687504 +1743800 5687320 1609512 5714824 1615320 5735328 1743888 5687504 +1615320 5735328 1609512 5714824 1617712 5747256 1743888 5687504 +1617712 5747256 1617768 5747376 1743888 5687504 1615320 5735328 +1617768 5747376 1620192 5752400 1743888 5687504 1615320 5735328 +1617712 5747256 1617768 5747376 1615320 5735328 1609512 5714824 +1743888 5687504 1743800 5687320 1615320 5735328 1620192 5752400 +1617768 5747376 1617848 5747624 1620192 5752400 1615320 5735328 +1617768 5747376 1620192 5752400 1615320 5735328 1617712 5747256 +1609512 5714824 1615320 5735328 1743800 5687320 1663944 5646256 +1615320 5735328 1743888 5687504 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1615320 5735328 +1609512 5714824 1617712 5747256 1615320 5735328 1663944 5646256 +1620192 5752400 1620224 5752472 1743888 5687504 1615320 5735328 +1620192 5752400 1620224 5752472 1615320 5735328 1617768 5747376 +1743888 5687504 1743800 5687320 1615320 5735328 1620224 5752472 +1620224 5752472 1751256 5699792 1743888 5687504 1615320 5735328 +1617712 5747256 1615320 5735328 1609512 5714824 1609512 5714872 +1617712 5747256 1617768 5747376 1615320 5735328 1609512 5714872 +1615320 5735328 1663944 5646256 1609512 5714824 1609512 5714872 +1617712 5747256 1615320 5735328 1609512 5714872 1617608 5747096 +1617712 5747256 1617768 5747376 1615320 5735328 1617608 5747096 +1609512 5714872 1615496 5744536 1617608 5747096 1615320 5735328 +1609512 5714872 1615368 5744400 1615496 5744536 1615320 5735328 +1615496 5744536 1617608 5747096 1615320 5735328 1615368 5744400 +1615496 5744536 1616160 5745400 1617608 5747096 1615320 5735328 +1615496 5744536 1616160 5745400 1615320 5735328 1615368 5744400 +1615320 5735328 1609512 5714824 1609512 5714872 1615368 5744400 +1616160 5745400 1617512 5746992 1617608 5747096 1615320 5735328 +1616160 5745400 1616216 5745480 1617512 5746992 1615320 5735328 +1616216 5745480 1616232 5745520 1617512 5746992 1615320 5735328 +1616160 5745400 1616216 5745480 1615320 5735328 1615496 5744536 +1617512 5746992 1617608 5747096 1615320 5735328 1616216 5745480 +1609512 5714872 1609448 5715040 1615368 5744400 1615320 5735328 +1609448 5715040 1613432 5742904 1615368 5744400 1615320 5735328 +1613432 5742904 1613488 5742960 1615368 5744400 1615320 5735328 +1613432 5742904 1613488 5742960 1615320 5735328 1609448 5715040 +1613488 5742960 1613528 5743008 1615368 5744400 1615320 5735328 +1613488 5742960 1613528 5743008 1615320 5735328 1613432 5742904 +1615368 5744400 1615496 5744536 1615320 5735328 1613528 5743008 +1609512 5714872 1609448 5715040 1615320 5735328 1609512 5714824 +1609448 5715040 1609416 5715088 1613432 5742904 1615320 5735328 +1613432 5742904 1613488 5742960 1615320 5735328 1609416 5715088 +1609416 5715088 1613368 5742856 1613432 5742904 1615320 5735328 +1613432 5742904 1613488 5742960 1615320 5735328 1613368 5742856 +1609416 5715088 1613280 5742808 1613368 5742856 1615320 5735328 +1609416 5715088 1609392 5715096 1613280 5742808 1615320 5735328 +1613280 5742808 1613368 5742856 1615320 5735328 1609392 5715096 +1609392 5715096 1613208 5742808 1613280 5742808 1615320 5735328 +1609392 5715096 1609368 5715096 1613208 5742808 1615320 5735328 +1613280 5742808 1613368 5742856 1615320 5735328 1613208 5742808 +1613208 5742808 1613280 5742808 1615320 5735328 1609368 5715096 +1609392 5715096 1609368 5715096 1615320 5735328 1609416 5715088 +1609416 5715088 1609392 5715096 1615320 5735328 1609448 5715040 +1613368 5742856 1613432 5742904 1615320 5735328 1613280 5742808 +1609368 5715096 1605152 5714944 1613208 5742808 1615320 5735328 +1609368 5715096 1605152 5714944 1615320 5735328 1609392 5715096 +1605152 5714944 1605064 5714952 1613208 5742808 1615320 5735328 +1605064 5714952 1604928 5714896 1613208 5742808 1615320 5735328 +1605064 5714952 1604928 5714896 1615320 5735328 1605152 5714944 +1604928 5714896 1604832 5714824 1613208 5742808 1615320 5735328 +1613208 5742808 1613280 5742808 1615320 5735328 1604928 5714896 +1609368 5715096 1609360 5715080 1605152 5714944 1615320 5735328 +1605152 5714944 1605064 5714952 1615320 5735328 1609368 5715096 +1613528 5743008 1615248 5744352 1615368 5744400 1615320 5735328 +1609448 5715040 1609416 5715088 1615320 5735328 1609512 5714872 +1609512 5714872 1609472 5714976 1609448 5715040 1615320 5735328 +1617608 5747096 1617712 5747256 1615320 5735328 1617512 5746992 +1609512 5714824 1615320 5735328 1663944 5646256 1663880 5646248 +1615496 5744536 1615544 5744608 1616160 5745400 1615320 5735328 +1743800 5687320 1615352 5735280 1615320 5735328 1743888 5687504 +1743800 5687320 1663944 5646256 1615352 5735280 1743888 5687504 +1663944 5646256 1615352 5735280 1743800 5687320 1664040 5646192 +1615320 5735328 1620224 5752472 1743888 5687504 1615352 5735280 +1743888 5687504 1743800 5687320 1615352 5735280 1620224 5752472 +1615352 5735280 1663944 5646256 1615320 5735328 1620224 5752472 +1615320 5735328 1615352 5735280 1663944 5646256 1609512 5714824 +1615320 5735328 1615352 5735280 1609512 5714824 1609512 5714872 +1615352 5735280 1743800 5687320 1663944 5646256 1609512 5714824 +1615320 5735328 1620224 5752472 1615352 5735280 1609512 5714872 +1615352 5735280 1663944 5646256 1609512 5714824 1609512 5714872 +1615320 5735328 1620192 5752400 1620224 5752472 1615352 5735280 +1615320 5735328 1617768 5747376 1620192 5752400 1615352 5735280 +1620224 5752472 1743888 5687504 1615352 5735280 1620192 5752400 +1617768 5747376 1617848 5747624 1620192 5752400 1615352 5735280 +1615320 5735328 1617712 5747256 1617768 5747376 1615352 5735280 +1617768 5747376 1620192 5752400 1615352 5735280 1617712 5747256 +1615320 5735328 1617608 5747096 1617712 5747256 1615352 5735280 +1617712 5747256 1617768 5747376 1615352 5735280 1617608 5747096 +1615320 5735328 1617608 5747096 1615352 5735280 1609512 5714872 +1620192 5752400 1620224 5752472 1615352 5735280 1617768 5747376 +1620224 5752472 1751256 5699792 1743888 5687504 1615352 5735280 +1615320 5735328 1615352 5735280 1609512 5714872 1609448 5715040 +1615352 5735280 1609512 5714824 1609512 5714872 1609448 5715040 +1615320 5735328 1617608 5747096 1615352 5735280 1609448 5715040 +1615320 5735328 1615352 5735280 1609448 5715040 1609416 5715088 +1615320 5735328 1617608 5747096 1615352 5735280 1609416 5715088 +1615352 5735280 1609512 5714872 1609448 5715040 1609416 5715088 +1615320 5735328 1615352 5735280 1609416 5715088 1609392 5715096 +1615320 5735328 1617608 5747096 1615352 5735280 1609392 5715096 +1615320 5735328 1615352 5735280 1609392 5715096 1609368 5715096 +1615320 5735328 1615352 5735280 1609368 5715096 1605152 5714944 +1615320 5735328 1617608 5747096 1615352 5735280 1605152 5714944 +1609368 5715096 1609360 5715080 1605152 5714944 1615352 5735280 +1615352 5735280 1609392 5715096 1609368 5715096 1605152 5714944 +1615352 5735280 1609416 5715088 1609392 5715096 1609368 5715096 +1615320 5735328 1615352 5735280 1605152 5714944 1605064 5714952 +1615352 5735280 1609368 5715096 1605152 5714944 1605064 5714952 +1615320 5735328 1615352 5735280 1605064 5714952 1604928 5714896 +1615320 5735328 1617608 5747096 1615352 5735280 1605064 5714952 +1615352 5735280 1609448 5715040 1609416 5715088 1609392 5715096 +1609512 5714872 1609472 5714976 1609448 5715040 1615352 5735280 +1615320 5735328 1617512 5746992 1617608 5747096 1615352 5735280 +1615320 5735328 1617512 5746992 1615352 5735280 1605064 5714952 +1615320 5735328 1616216 5745480 1617512 5746992 1615352 5735280 +1616216 5745480 1616232 5745520 1617512 5746992 1615352 5735280 +1615320 5735328 1616160 5745400 1616216 5745480 1615352 5735280 +1615320 5735328 1616160 5745400 1615352 5735280 1605064 5714952 +1615320 5735328 1615496 5744536 1616160 5745400 1615352 5735280 +1615320 5735328 1615368 5744400 1615496 5744536 1615352 5735280 +1616160 5745400 1616216 5745480 1615352 5735280 1615496 5744536 +1615320 5735328 1615496 5744536 1615352 5735280 1605064 5714952 +1616216 5745480 1617512 5746992 1615352 5735280 1616160 5745400 +1617608 5747096 1617712 5747256 1615352 5735280 1617512 5746992 +1617512 5746992 1617608 5747096 1615352 5735280 1616216 5745480 +1663944 5646256 1663880 5646248 1609512 5714824 1615352 5735280 +1615496 5744536 1615544 5744608 1616160 5745400 1615352 5735280 +1743800 5687320 1615408 5735224 1615352 5735280 1743888 5687504 +1615408 5735224 1663944 5646256 1615352 5735280 1743888 5687504 +1663944 5646256 1615408 5735224 1743800 5687320 1664040 5646192 +1615352 5735280 1620224 5752472 1743888 5687504 1615408 5735224 +1615352 5735280 1620224 5752472 1615408 5735224 1663944 5646256 +1615352 5735280 1620192 5752400 1620224 5752472 1615408 5735224 +1620224 5752472 1743888 5687504 1615408 5735224 1620192 5752400 +1615352 5735280 1620192 5752400 1615408 5735224 1663944 5646256 +1743888 5687504 1743800 5687320 1615408 5735224 1620224 5752472 +1615352 5735280 1615408 5735224 1663944 5646256 1609512 5714824 +1615408 5735224 1743800 5687320 1663944 5646256 1609512 5714824 +1615352 5735280 1620192 5752400 1615408 5735224 1609512 5714824 +1615352 5735280 1615408 5735224 1609512 5714824 1609512 5714872 +1615352 5735280 1615408 5735224 1609512 5714872 1609448 5715040 +1615352 5735280 1620192 5752400 1615408 5735224 1609448 5715040 +1615408 5735224 1609512 5714824 1609512 5714872 1609448 5715040 +1615352 5735280 1617768 5747376 1620192 5752400 1615408 5735224 +1615352 5735280 1617712 5747256 1617768 5747376 1615408 5735224 +1615352 5735280 1617712 5747256 1615408 5735224 1609448 5715040 +1620192 5752400 1620224 5752472 1615408 5735224 1617768 5747376 +1617768 5747376 1617848 5747624 1620192 5752400 1615408 5735224 +1615352 5735280 1617608 5747096 1617712 5747256 1615408 5735224 +1617712 5747256 1617768 5747376 1615408 5735224 1617608 5747096 +1615352 5735280 1617608 5747096 1615408 5735224 1609448 5715040 +1617768 5747376 1620192 5752400 1615408 5735224 1617712 5747256 +1620224 5752472 1751256 5699792 1743888 5687504 1615408 5735224 +1615352 5735280 1615408 5735224 1609448 5715040 1609416 5715088 +1615352 5735280 1617608 5747096 1615408 5735224 1609416 5715088 +1615408 5735224 1609512 5714872 1609448 5715040 1609416 5715088 +1615352 5735280 1615408 5735224 1609416 5715088 1609392 5715096 +1615352 5735280 1617608 5747096 1615408 5735224 1609392 5715096 +1615408 5735224 1609448 5715040 1609416 5715088 1609392 5715096 +1615352 5735280 1615408 5735224 1609392 5715096 1609368 5715096 +1615352 5735280 1617608 5747096 1615408 5735224 1609368 5715096 +1615352 5735280 1615408 5735224 1609368 5715096 1605152 5714944 +1615408 5735224 1609416 5715088 1609392 5715096 1609368 5715096 +1615352 5735280 1617512 5746992 1617608 5747096 1615408 5735224 +1615352 5735280 1617512 5746992 1615408 5735224 1609368 5715096 +1617608 5747096 1617712 5747256 1615408 5735224 1617512 5746992 +1609512 5714872 1609472 5714976 1609448 5715040 1615408 5735224 +1615408 5735224 1663944 5646256 1609512 5714824 1609512 5714872 +1615352 5735280 1616216 5745480 1617512 5746992 1615408 5735224 +1616216 5745480 1616232 5745520 1617512 5746992 1615408 5735224 +1615352 5735280 1616216 5745480 1615408 5735224 1609368 5715096 +1615352 5735280 1616160 5745400 1616216 5745480 1615408 5735224 +1615352 5735280 1616160 5745400 1615408 5735224 1609368 5715096 +1615352 5735280 1615496 5744536 1616160 5745400 1615408 5735224 +1615352 5735280 1615496 5744536 1615408 5735224 1609368 5715096 +1615352 5735280 1615320 5735328 1615496 5744536 1615408 5735224 +1615352 5735280 1615320 5735328 1615408 5735224 1609368 5715096 +1615320 5735328 1615368 5744400 1615496 5744536 1615408 5735224 +1615496 5744536 1616160 5745400 1615408 5735224 1615320 5735328 +1616160 5745400 1616216 5745480 1615408 5735224 1615496 5744536 +1617512 5746992 1617608 5747096 1615408 5735224 1616216 5745480 +1616216 5745480 1617512 5746992 1615408 5735224 1616160 5745400 +1663944 5646256 1663880 5646248 1609512 5714824 1615408 5735224 +1743800 5687320 1663944 5646256 1615408 5735224 1743888 5687504 +1615496 5744536 1615544 5744608 1616160 5745400 1615408 5735224 +1620224 5752472 1615440 5735216 1615408 5735224 1620192 5752400 +1615440 5735216 1743888 5687504 1615408 5735224 1620192 5752400 +1615408 5735224 1617768 5747376 1620192 5752400 1615440 5735216 +1620192 5752400 1620224 5752472 1615440 5735216 1617768 5747376 +1615408 5735224 1617768 5747376 1615440 5735216 1743888 5687504 +1615408 5735224 1615440 5735216 1743888 5687504 1743800 5687320 +1615408 5735224 1617768 5747376 1615440 5735216 1743800 5687320 +1615440 5735216 1620224 5752472 1743888 5687504 1743800 5687320 +1617768 5747376 1617848 5747624 1620192 5752400 1615440 5735216 +1615408 5735224 1617712 5747256 1617768 5747376 1615440 5735216 +1615408 5735224 1617712 5747256 1615440 5735216 1743800 5687320 +1615408 5735224 1617608 5747096 1617712 5747256 1615440 5735216 +1615408 5735224 1617608 5747096 1615440 5735216 1743800 5687320 +1617768 5747376 1620192 5752400 1615440 5735216 1617712 5747256 +1615408 5735224 1617512 5746992 1617608 5747096 1615440 5735216 +1615408 5735224 1617512 5746992 1615440 5735216 1743800 5687320 +1617608 5747096 1617712 5747256 1615440 5735216 1617512 5746992 +1617712 5747256 1617768 5747376 1615440 5735216 1617608 5747096 +1743888 5687504 1615440 5735216 1620224 5752472 1751256 5699792 +1615408 5735224 1616216 5745480 1617512 5746992 1615440 5735216 +1616216 5745480 1616232 5745520 1617512 5746992 1615440 5735216 +1615408 5735224 1616216 5745480 1615440 5735216 1743800 5687320 +1617512 5746992 1617608 5747096 1615440 5735216 1616216 5745480 +1620224 5752472 1743888 5687504 1615440 5735216 1620192 5752400 +1615408 5735224 1616160 5745400 1616216 5745480 1615440 5735216 +1615408 5735224 1616160 5745400 1615440 5735216 1743800 5687320 +1616216 5745480 1617512 5746992 1615440 5735216 1616160 5745400 +1615408 5735224 1615496 5744536 1616160 5745400 1615440 5735216 +1615408 5735224 1615496 5744536 1615440 5735216 1743800 5687320 +1615408 5735224 1615320 5735328 1615496 5744536 1615440 5735216 +1615408 5735224 1615320 5735328 1615440 5735216 1743800 5687320 +1615320 5735328 1615368 5744400 1615496 5744536 1615440 5735216 +1615320 5735328 1615368 5744400 1615440 5735216 1615408 5735224 +1615320 5735328 1613528 5743008 1615368 5744400 1615440 5735216 +1615408 5735224 1615352 5735280 1615320 5735328 1615440 5735216 +1615408 5735224 1615352 5735280 1615440 5735216 1743800 5687320 +1615320 5735328 1615368 5744400 1615440 5735216 1615352 5735280 +1615496 5744536 1616160 5745400 1615440 5735216 1615368 5744400 +1616160 5745400 1616216 5745480 1615440 5735216 1615496 5744536 +1615408 5735224 1615440 5735216 1743800 5687320 1663944 5646256 +1615408 5735224 1615352 5735280 1615440 5735216 1663944 5646256 +1615408 5735224 1615440 5735216 1663944 5646256 1609512 5714824 +1615440 5735216 1743800 5687320 1663944 5646256 1609512 5714824 +1615408 5735224 1615352 5735280 1615440 5735216 1609512 5714824 +1743800 5687320 1664040 5646192 1663944 5646256 1615440 5735216 +1615440 5735216 1743888 5687504 1743800 5687320 1663944 5646256 +1615408 5735224 1615440 5735216 1609512 5714824 1609512 5714872 +1615440 5735216 1663944 5646256 1609512 5714824 1609512 5714872 +1615408 5735224 1615352 5735280 1615440 5735216 1609512 5714872 +1615408 5735224 1615440 5735216 1609512 5714872 1609448 5715040 +1615440 5735216 1609512 5714824 1609512 5714872 1609448 5715040 +1615408 5735224 1615352 5735280 1615440 5735216 1609448 5715040 +1615408 5735224 1615440 5735216 1609448 5715040 1609416 5715088 +1615408 5735224 1615352 5735280 1615440 5735216 1609416 5715088 +1615440 5735216 1609512 5714872 1609448 5715040 1609416 5715088 +1615408 5735224 1615440 5735216 1609416 5715088 1609392 5715096 +1609512 5714872 1609472 5714976 1609448 5715040 1615440 5735216 +1663944 5646256 1663880 5646248 1609512 5714824 1615440 5735216 +1615496 5744536 1615544 5744608 1616160 5745400 1615440 5735216 +1615440 5735216 1615528 5735256 1743888 5687504 1743800 5687320 +1615440 5735216 1620224 5752472 1615528 5735256 1743800 5687320 +1615528 5735256 1620224 5752472 1743888 5687504 1743800 5687320 +1615440 5735216 1615528 5735256 1743800 5687320 1663944 5646256 +1615440 5735216 1615528 5735256 1663944 5646256 1609512 5714824 +1615440 5735216 1615528 5735256 1609512 5714824 1609512 5714872 +1615528 5735256 1663944 5646256 1609512 5714824 1609512 5714872 +1615440 5735216 1615528 5735256 1609512 5714872 1609448 5715040 +1615528 5735256 1609512 5714824 1609512 5714872 1609448 5715040 +1615440 5735216 1620224 5752472 1615528 5735256 1609448 5715040 +1743800 5687320 1664040 5646192 1663944 5646256 1615528 5735256 +1615528 5735256 1743800 5687320 1663944 5646256 1609512 5714824 +1615528 5735256 1743888 5687504 1743800 5687320 1663944 5646256 +1615440 5735216 1615528 5735256 1609448 5715040 1609416 5715088 +1743888 5687504 1615528 5735256 1620224 5752472 1751256 5699792 +1609512 5714872 1609472 5714976 1609448 5715040 1615528 5735256 +1620224 5752472 1615528 5735256 1615440 5735216 1620192 5752400 +1615440 5735216 1617768 5747376 1620192 5752400 1615528 5735256 +1615528 5735256 1609448 5715040 1615440 5735216 1617768 5747376 +1615440 5735216 1617712 5747256 1617768 5747376 1615528 5735256 +1617768 5747376 1620192 5752400 1615528 5735256 1617712 5747256 +1615440 5735216 1617712 5747256 1615528 5735256 1609448 5715040 +1617768 5747376 1617848 5747624 1620192 5752400 1615528 5735256 +1620224 5752472 1743888 5687504 1615528 5735256 1620192 5752400 +1620192 5752400 1620224 5752472 1615528 5735256 1617768 5747376 +1615440 5735216 1617608 5747096 1617712 5747256 1615528 5735256 +1615440 5735216 1617608 5747096 1615528 5735256 1609448 5715040 +1615440 5735216 1617512 5746992 1617608 5747096 1615528 5735256 +1615440 5735216 1617512 5746992 1615528 5735256 1609448 5715040 +1617712 5747256 1617768 5747376 1615528 5735256 1617608 5747096 +1615440 5735216 1616216 5745480 1617512 5746992 1615528 5735256 +1616216 5745480 1616232 5745520 1617512 5746992 1615528 5735256 +1615440 5735216 1616216 5745480 1615528 5735256 1609448 5715040 +1617512 5746992 1617608 5747096 1615528 5735256 1616216 5745480 +1615440 5735216 1616160 5745400 1616216 5745480 1615528 5735256 +1615440 5735216 1616160 5745400 1615528 5735256 1609448 5715040 +1616216 5745480 1617512 5746992 1615528 5735256 1616160 5745400 +1617608 5747096 1617712 5747256 1615528 5735256 1617512 5746992 +1615440 5735216 1615496 5744536 1616160 5745400 1615528 5735256 +1615440 5735216 1615496 5744536 1615528 5735256 1609448 5715040 +1616160 5745400 1616216 5745480 1615528 5735256 1615496 5744536 +1615440 5735216 1615368 5744400 1615496 5744536 1615528 5735256 +1615440 5735216 1615368 5744400 1615528 5735256 1609448 5715040 +1615440 5735216 1615320 5735328 1615368 5744400 1615528 5735256 +1615440 5735216 1615320 5735328 1615528 5735256 1609448 5715040 +1615440 5735216 1615352 5735280 1615320 5735328 1615528 5735256 +1615440 5735216 1615352 5735280 1615528 5735256 1609448 5715040 +1615320 5735328 1615368 5744400 1615528 5735256 1615352 5735280 +1615320 5735328 1613528 5743008 1615368 5744400 1615528 5735256 +1615320 5735328 1613488 5742960 1613528 5743008 1615528 5735256 +1615320 5735328 1613488 5742960 1615528 5735256 1615352 5735280 +1615320 5735328 1613432 5742904 1613488 5742960 1615528 5735256 +1613528 5743008 1615368 5744400 1615528 5735256 1613488 5742960 +1615440 5735216 1615408 5735224 1615352 5735280 1615528 5735256 +1615440 5735216 1615408 5735224 1615528 5735256 1609448 5715040 +1615352 5735280 1615320 5735328 1615528 5735256 1615408 5735224 +1613528 5743008 1615248 5744352 1615368 5744400 1615528 5735256 +1615368 5744400 1615496 5744536 1615528 5735256 1613528 5743008 +1615496 5744536 1616160 5745400 1615528 5735256 1615368 5744400 +1663944 5646256 1663880 5646248 1609512 5714824 1615528 5735256 +1615496 5744536 1615544 5744608 1616160 5745400 1615528 5735256 +1615528 5735256 1615584 5735320 1743888 5687504 1743800 5687320 +1615528 5735256 1615584 5735320 1743800 5687320 1663944 5646256 +1615584 5735320 1743888 5687504 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1615584 5735320 +1615528 5735256 1615584 5735320 1663944 5646256 1609512 5714824 +1615528 5735256 1615584 5735320 1609512 5714824 1609512 5714872 +1615528 5735256 1615584 5735320 1609512 5714872 1609448 5715040 +1615584 5735320 1663944 5646256 1609512 5714824 1609512 5714872 +1615584 5735320 1743800 5687320 1663944 5646256 1609512 5714824 +1620224 5752472 1615584 5735320 1615528 5735256 1620192 5752400 +1615528 5735256 1617768 5747376 1620192 5752400 1615584 5735320 +1615528 5735256 1617712 5747256 1617768 5747376 1615584 5735320 +1615528 5735256 1617608 5747096 1617712 5747256 1615584 5735320 +1617712 5747256 1617768 5747376 1615584 5735320 1617608 5747096 +1617768 5747376 1617848 5747624 1620192 5752400 1615584 5735320 +1620192 5752400 1620224 5752472 1615584 5735320 1617768 5747376 +1617768 5747376 1620192 5752400 1615584 5735320 1617712 5747256 +1615528 5735256 1617608 5747096 1615584 5735320 1609512 5714872 +1615584 5735320 1620224 5752472 1743888 5687504 1743800 5687320 +1615528 5735256 1617512 5746992 1617608 5747096 1615584 5735320 +1615528 5735256 1616216 5745480 1617512 5746992 1615584 5735320 +1616216 5745480 1616232 5745520 1617512 5746992 1615584 5735320 +1617608 5747096 1617712 5747256 1615584 5735320 1617512 5746992 +1615528 5735256 1616160 5745400 1616216 5745480 1615584 5735320 +1616216 5745480 1617512 5746992 1615584 5735320 1616160 5745400 +1615528 5735256 1615496 5744536 1616160 5745400 1615584 5735320 +1616160 5745400 1616216 5745480 1615584 5735320 1615496 5744536 +1615528 5735256 1615496 5744536 1615584 5735320 1609512 5714872 +1617512 5746992 1617608 5747096 1615584 5735320 1616216 5745480 +1743888 5687504 1615584 5735320 1620224 5752472 1751256 5699792 +1620224 5752472 1743888 5687504 1615584 5735320 1620192 5752400 +1615528 5735256 1615368 5744400 1615496 5744536 1615584 5735320 +1615496 5744536 1616160 5745400 1615584 5735320 1615368 5744400 +1615528 5735256 1615368 5744400 1615584 5735320 1609512 5714872 +1615528 5735256 1613528 5743008 1615368 5744400 1615584 5735320 +1615528 5735256 1613528 5743008 1615584 5735320 1609512 5714872 +1615528 5735256 1613488 5742960 1613528 5743008 1615584 5735320 +1615528 5735256 1615320 5735328 1613488 5742960 1615584 5735320 +1615528 5735256 1615352 5735280 1615320 5735328 1615584 5735320 +1615320 5735328 1613488 5742960 1615584 5735320 1615352 5735280 +1615528 5735256 1615408 5735224 1615352 5735280 1615584 5735320 +1615528 5735256 1615352 5735280 1615584 5735320 1609512 5714872 +1615320 5735328 1613432 5742904 1613488 5742960 1615584 5735320 +1615320 5735328 1613368 5742856 1613432 5742904 1615584 5735320 +1615320 5735328 1613368 5742856 1615584 5735320 1615352 5735280 +1613432 5742904 1613488 5742960 1615584 5735320 1613368 5742856 +1613488 5742960 1613528 5743008 1615584 5735320 1613432 5742904 +1615320 5735328 1613280 5742808 1613368 5742856 1615584 5735320 +1613528 5743008 1615248 5744352 1615368 5744400 1615584 5735320 +1613528 5743008 1615368 5744400 1615584 5735320 1613488 5742960 +1615368 5744400 1615496 5744536 1615584 5735320 1613528 5743008 +1663944 5646256 1663880 5646248 1609512 5714824 1615584 5735320 +1615496 5744536 1615544 5744608 1616160 5745400 1615584 5735320 +1615584 5735320 1615632 5735416 1743888 5687504 1743800 5687320 +1615584 5735320 1615632 5735416 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1615632 5735416 +1615584 5735320 1615632 5735416 1663944 5646256 1609512 5714824 +1615632 5735416 1743800 5687320 1663944 5646256 1609512 5714824 +1615584 5735320 1615632 5735416 1609512 5714824 1609512 5714872 +1615632 5735416 1743888 5687504 1743800 5687320 1663944 5646256 +1743888 5687504 1615632 5735416 1620224 5752472 1751256 5699792 +1615584 5735320 1620224 5752472 1615632 5735416 1609512 5714824 +1620224 5752472 1615632 5735416 1615584 5735320 1620192 5752400 +1620224 5752472 1743888 5687504 1615632 5735416 1620192 5752400 +1615584 5735320 1617768 5747376 1620192 5752400 1615632 5735416 +1617768 5747376 1617848 5747624 1620192 5752400 1615632 5735416 +1615584 5735320 1617712 5747256 1617768 5747376 1615632 5735416 +1615584 5735320 1617608 5747096 1617712 5747256 1615632 5735416 +1615584 5735320 1617512 5746992 1617608 5747096 1615632 5735416 +1617608 5747096 1617712 5747256 1615632 5735416 1617512 5746992 +1617768 5747376 1620192 5752400 1615632 5735416 1617712 5747256 +1617712 5747256 1617768 5747376 1615632 5735416 1617608 5747096 +1615584 5735320 1616216 5745480 1617512 5746992 1615632 5735416 +1616216 5745480 1616232 5745520 1617512 5746992 1615632 5735416 +1615584 5735320 1616160 5745400 1616216 5745480 1615632 5735416 +1617512 5746992 1617608 5747096 1615632 5735416 1616216 5745480 +1615584 5735320 1615496 5744536 1616160 5745400 1615632 5735416 +1616160 5745400 1616216 5745480 1615632 5735416 1615496 5744536 +1615584 5735320 1615368 5744400 1615496 5744536 1615632 5735416 +1615496 5744536 1616160 5745400 1615632 5735416 1615368 5744400 +1616216 5745480 1617512 5746992 1615632 5735416 1616160 5745400 +1615632 5735416 1609512 5714824 1615584 5735320 1615368 5744400 +1620192 5752400 1620224 5752472 1615632 5735416 1617768 5747376 +1615632 5735416 1620224 5752472 1743888 5687504 1743800 5687320 +1615584 5735320 1613528 5743008 1615368 5744400 1615632 5735416 +1615368 5744400 1615496 5744536 1615632 5735416 1613528 5743008 +1613528 5743008 1615248 5744352 1615368 5744400 1615632 5735416 +1615584 5735320 1613488 5742960 1613528 5743008 1615632 5735416 +1615584 5735320 1613432 5742904 1613488 5742960 1615632 5735416 +1615584 5735320 1613368 5742856 1613432 5742904 1615632 5735416 +1615584 5735320 1615320 5735328 1613368 5742856 1615632 5735416 +1615584 5735320 1615352 5735280 1615320 5735328 1615632 5735416 +1613368 5742856 1613432 5742904 1615632 5735416 1615320 5735328 +1613432 5742904 1613488 5742960 1615632 5735416 1613368 5742856 +1615320 5735328 1613280 5742808 1613368 5742856 1615632 5735416 +1615320 5735328 1613280 5742808 1615632 5735416 1615584 5735320 +1615320 5735328 1613208 5742808 1613280 5742808 1615632 5735416 +1613368 5742856 1613432 5742904 1615632 5735416 1613280 5742808 +1613488 5742960 1613528 5743008 1615632 5735416 1613432 5742904 +1615584 5735320 1615320 5735328 1615632 5735416 1609512 5714824 +1613528 5743008 1615368 5744400 1615632 5735416 1613488 5742960 +1663944 5646256 1663880 5646248 1609512 5714824 1615632 5735416 +1615496 5744536 1615544 5744608 1616160 5745400 1615632 5735416 +1615632 5735416 1615632 5735512 1616160 5745400 1616216 5745480 +1615496 5744536 1615632 5735512 1615632 5735416 1615368 5744400 +1615496 5744536 1616160 5745400 1615632 5735512 1615368 5744400 +1615632 5735416 1615368 5744400 1615632 5735512 1616216 5745480 +1615632 5735512 1615496 5744536 1616160 5745400 1616216 5745480 +1615632 5735416 1613528 5743008 1615368 5744400 1615632 5735512 +1615368 5744400 1615496 5744536 1615632 5735512 1613528 5743008 +1615632 5735416 1613528 5743008 1615632 5735512 1616216 5745480 +1615632 5735416 1615632 5735512 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1615632 5735512 +1615632 5735512 1616160 5745400 1616216 5745480 1617512 5746992 +1615632 5735416 1615632 5735512 1617512 5746992 1617608 5747096 +1615632 5735416 1615632 5735512 1617608 5747096 1617712 5747256 +1615632 5735512 1617512 5746992 1617608 5747096 1617712 5747256 +1615632 5735416 1613528 5743008 1615632 5735512 1617712 5747256 +1615632 5735416 1615632 5735512 1617712 5747256 1617768 5747376 +1615632 5735512 1617608 5747096 1617712 5747256 1617768 5747376 +1615632 5735416 1613528 5743008 1615632 5735512 1617768 5747376 +1615632 5735416 1615632 5735512 1617768 5747376 1620192 5752400 +1617768 5747376 1617848 5747624 1620192 5752400 1615632 5735512 +1615632 5735416 1613528 5743008 1615632 5735512 1620192 5752400 +1615632 5735512 1617712 5747256 1617768 5747376 1620192 5752400 +1615632 5735512 1616216 5745480 1617512 5746992 1617608 5747096 +1613528 5743008 1615248 5744352 1615368 5744400 1615632 5735512 +1615632 5735416 1615632 5735512 1620192 5752400 1620224 5752472 +1615632 5735416 1613488 5742960 1613528 5743008 1615632 5735512 +1615632 5735416 1613488 5742960 1615632 5735512 1620192 5752400 +1613528 5743008 1615368 5744400 1615632 5735512 1613488 5742960 +1615632 5735416 1613432 5742904 1613488 5742960 1615632 5735512 +1615632 5735416 1613432 5742904 1615632 5735512 1620192 5752400 +1615632 5735416 1613368 5742856 1613432 5742904 1615632 5735512 +1615632 5735416 1613368 5742856 1615632 5735512 1620192 5752400 +1615632 5735416 1613280 5742808 1613368 5742856 1615632 5735512 +1615632 5735416 1613280 5742808 1615632 5735512 1620192 5752400 +1613368 5742856 1613432 5742904 1615632 5735512 1613280 5742808 +1615632 5735416 1615320 5735328 1613280 5742808 1615632 5735512 +1615632 5735416 1615584 5735320 1615320 5735328 1615632 5735512 +1615320 5735328 1613208 5742808 1613280 5742808 1615632 5735512 +1615632 5735416 1615320 5735328 1615632 5735512 1620192 5752400 +1613280 5742808 1613368 5742856 1615632 5735512 1615320 5735328 +1613432 5742904 1613488 5742960 1615632 5735512 1613368 5742856 +1613488 5742960 1613528 5743008 1615632 5735512 1613432 5742904 +1616160 5745400 1615632 5735512 1615496 5744536 1615544 5744608 +1613280 5742808 1615584 5735552 1615320 5735328 1613208 5742808 +1613280 5742808 1615632 5735512 1615584 5735552 1613208 5742808 +1615320 5735328 1604928 5714896 1613208 5742808 1615584 5735552 +1615632 5735512 1615584 5735552 1613280 5742808 1613368 5742856 +1615632 5735512 1615320 5735328 1615584 5735552 1613368 5742856 +1615584 5735552 1613208 5742808 1613280 5742808 1613368 5742856 +1615632 5735512 1615584 5735552 1613368 5742856 1613432 5742904 +1615632 5735512 1615320 5735328 1615584 5735552 1613432 5742904 +1615584 5735552 1613280 5742808 1613368 5742856 1613432 5742904 +1615584 5735552 1615632 5735512 1615320 5735328 1613208 5742808 +1615320 5735328 1615584 5735552 1615632 5735512 1615632 5735416 +1615320 5735328 1615584 5735552 1615632 5735416 1615584 5735320 +1615584 5735552 1613432 5742904 1615632 5735512 1615632 5735416 +1615320 5735328 1615584 5735552 1615584 5735320 1615352 5735280 +1615320 5735328 1613208 5742808 1615584 5735552 1615584 5735320 +1615584 5735552 1615632 5735512 1615632 5735416 1615584 5735320 +1615632 5735512 1615584 5735552 1613432 5742904 1613488 5742960 +1615632 5735512 1615632 5735416 1615584 5735552 1613488 5742960 +1615584 5735552 1613368 5742856 1613432 5742904 1613488 5742960 +1615632 5735512 1615584 5735552 1613488 5742960 1613528 5743008 +1615632 5735512 1615632 5735416 1615584 5735552 1613528 5743008 +1615632 5735512 1615584 5735552 1613528 5743008 1615368 5744400 +1615632 5735512 1615632 5735416 1615584 5735552 1615368 5744400 +1615632 5735512 1615584 5735552 1615368 5744400 1615496 5744536 +1613528 5743008 1615248 5744352 1615368 5744400 1615584 5735552 +1615584 5735552 1613432 5742904 1613488 5742960 1613528 5743008 +1615584 5735552 1613488 5742960 1613528 5743008 1615368 5744400 +1615584 5735552 1615560 5735560 1613208 5742808 1613280 5742808 +1615584 5735552 1615560 5735560 1613280 5742808 1613368 5742856 +1615560 5735560 1613208 5742808 1613280 5742808 1613368 5742856 +1613208 5742808 1615560 5735560 1615320 5735328 1604928 5714896 +1615584 5735552 1615560 5735560 1613368 5742856 1613432 5742904 +1615560 5735560 1613280 5742808 1613368 5742856 1613432 5742904 +1615584 5735552 1615560 5735560 1613432 5742904 1613488 5742960 +1615560 5735560 1613368 5742856 1613432 5742904 1613488 5742960 +1615584 5735552 1615320 5735328 1615560 5735560 1613488 5742960 +1615320 5735328 1615560 5735560 1615584 5735552 1615584 5735320 +1615584 5735552 1615632 5735416 1615584 5735320 1615560 5735560 +1615320 5735328 1615560 5735560 1615584 5735320 1615352 5735280 +1615560 5735560 1613488 5742960 1615584 5735552 1615632 5735416 +1615584 5735320 1615320 5735328 1615560 5735560 1615632 5735416 +1615560 5735560 1615320 5735328 1613208 5742808 1613280 5742808 +1615584 5735552 1615632 5735512 1615632 5735416 1615560 5735560 +1615584 5735552 1615560 5735560 1613488 5742960 1613528 5743008 +1615320 5735328 1613208 5742808 1615560 5735560 1615584 5735320 +1613208 5742808 1615512 5735544 1615320 5735328 1604928 5714896 +1615560 5735560 1615512 5735544 1613208 5742808 1613280 5742808 +1615560 5735560 1615512 5735544 1613280 5742808 1613368 5742856 +1615560 5735560 1615320 5735328 1615512 5735544 1613280 5742808 +1615320 5735328 1615512 5735544 1615560 5735560 1615584 5735320 +1615320 5735328 1613208 5742808 1615512 5735544 1615584 5735320 +1615320 5735328 1615512 5735544 1615584 5735320 1615352 5735280 +1615560 5735560 1615632 5735416 1615584 5735320 1615512 5735544 +1615560 5735560 1615584 5735552 1615632 5735416 1615512 5735544 +1615632 5735416 1615584 5735320 1615512 5735544 1615584 5735552 +1615584 5735552 1615632 5735512 1615632 5735416 1615512 5735544 +1615584 5735552 1615632 5735512 1615512 5735544 1615560 5735560 +1615632 5735416 1615584 5735320 1615512 5735544 1615632 5735512 +1615512 5735544 1613280 5742808 1615560 5735560 1615584 5735552 +1615584 5735320 1615320 5735328 1615512 5735544 1615632 5735416 +1615512 5735544 1615320 5735328 1613208 5742808 1613280 5742808 +1615320 5735328 1615424 5735488 1615512 5735544 1615584 5735320 +1615320 5735328 1613208 5742808 1615424 5735488 1615584 5735320 +1615424 5735488 1613208 5742808 1615512 5735544 1615584 5735320 +1615320 5735328 1615424 5735488 1615584 5735320 1615352 5735280 +1615320 5735328 1613208 5742808 1615424 5735488 1615352 5735280 +1615424 5735488 1615512 5735544 1615584 5735320 1615352 5735280 +1615584 5735320 1615528 5735256 1615352 5735280 1615424 5735488 +1615584 5735320 1615528 5735256 1615424 5735488 1615512 5735544 +1615352 5735280 1615320 5735328 1615424 5735488 1615528 5735256 +1615528 5735256 1615408 5735224 1615352 5735280 1615424 5735488 +1613208 5742808 1615424 5735488 1615320 5735328 1604928 5714896 +1615512 5735544 1615632 5735416 1615584 5735320 1615424 5735488 +1615512 5735544 1615632 5735416 1615424 5735488 1613208 5742808 +1615584 5735320 1615528 5735256 1615424 5735488 1615632 5735416 +1615512 5735544 1615632 5735512 1615632 5735416 1615424 5735488 +1615512 5735544 1615424 5735488 1613208 5742808 1613280 5742808 +1615512 5735544 1615632 5735416 1615424 5735488 1613280 5742808 +1615424 5735488 1615320 5735328 1613208 5742808 1613280 5742808 +1615512 5735544 1615424 5735488 1613280 5742808 1615560 5735560 +1615320 5735328 1615360 5735448 1615424 5735488 1615352 5735280 +1615360 5735448 1613208 5742808 1615424 5735488 1615352 5735280 +1615424 5735488 1615360 5735448 1613208 5742808 1613280 5742808 +1615424 5735488 1615352 5735280 1615360 5735448 1613280 5742808 +1615360 5735448 1615320 5735328 1613208 5742808 1613280 5742808 +1615320 5735328 1613208 5742808 1615360 5735448 1615352 5735280 +1615424 5735488 1615528 5735256 1615352 5735280 1615360 5735448 +1615424 5735488 1615528 5735256 1615360 5735448 1613280 5742808 +1615352 5735280 1615320 5735328 1615360 5735448 1615528 5735256 +1615424 5735488 1615584 5735320 1615528 5735256 1615360 5735448 +1615528 5735256 1615408 5735224 1615352 5735280 1615360 5735448 +1613208 5742808 1615360 5735448 1615320 5735328 1604928 5714896 +1615424 5735488 1615360 5735448 1613280 5742808 1615512 5735544 +1615360 5735448 1615312 5735368 1613208 5742808 1613280 5742808 +1615320 5735328 1615312 5735368 1615360 5735448 1615352 5735280 +1613208 5742808 1615312 5735368 1615320 5735328 1604928 5714896 +1613208 5742808 1615360 5735448 1615312 5735368 1604928 5714896 +1615320 5735328 1605064 5714952 1604928 5714896 1615312 5735368 +1615312 5735368 1615360 5735448 1615320 5735328 1604928 5714896 +1613208 5742808 1615312 5735368 1604928 5714896 1604832 5714824 +1615872 5745184 1615424 5745368 1615272 5746320 1615480 5746344 +1615872 5745184 1615424 5745368 1615480 5746344 1616016 5745272 +1615872 5745184 1615240 5744880 1615424 5745368 1616016 5745272 +1615424 5745368 1615240 5744880 1615272 5746320 1615480 5746344 +1615424 5745368 1615272 5746320 1615480 5746344 1616016 5745272 +1615480 5746344 1616232 5745520 1616016 5745272 1615424 5745368 +1616232 5745520 1616160 5745400 1616016 5745272 1615424 5745368 +1616232 5745520 1616216 5745480 1616160 5745400 1615424 5745368 +1616016 5745272 1615872 5745184 1615424 5745368 1616160 5745400 +1615480 5746344 1616232 5745520 1615424 5745368 1615272 5746320 +1616232 5745520 1616160 5745400 1615424 5745368 1615480 5746344 +1615480 5746344 1616296 5745864 1616232 5745520 1615424 5745368 +1615480 5746344 1616296 5745864 1615424 5745368 1615272 5746320 +1616232 5745520 1616160 5745400 1615424 5745368 1616296 5745864 +1615272 5746320 1615424 5745368 1615240 5744880 1614552 5745968 +1615424 5745368 1615872 5745184 1615240 5744880 1614552 5745968 +1615272 5746320 1615424 5745368 1614552 5745968 1615160 5746336 +1614552 5745968 1614792 5746280 1615160 5746336 1615424 5745368 +1615272 5746320 1615480 5746344 1615424 5745368 1615160 5746336 +1615240 5744880 1614392 5745696 1614552 5745968 1615424 5745368 +1615240 5744880 1614392 5745696 1615424 5745368 1615872 5745184 +1615240 5744880 1614928 5744824 1614392 5745696 1615424 5745368 +1615240 5744880 1614928 5744824 1615424 5745368 1615872 5745184 +1614928 5744824 1614784 5744800 1614392 5745696 1615424 5745368 +1615240 5744880 1614992 5744816 1614928 5744824 1615424 5745368 +1615240 5744880 1614992 5744816 1615424 5745368 1615872 5745184 +1614392 5745696 1614552 5745968 1615424 5745368 1614928 5744824 +1614928 5744824 1614392 5745696 1615424 5745368 1614992 5744816 +1615240 5744880 1615016 5744760 1614992 5744816 1615424 5745368 +1615424 5745368 1614392 5745696 1614552 5745968 1615160 5746336 +1615480 5746344 1615544 5746368 1616296 5745864 1615424 5745368 +1615480 5746344 1615544 5746368 1615424 5745368 1615272 5746320 +1615544 5746368 1616376 5746120 1616296 5745864 1615424 5745368 +1616296 5745864 1616232 5745520 1615424 5745368 1615544 5746368 +1616160 5745400 1615648 5745352 1615424 5745368 1616232 5745520 +1615648 5745352 1616016 5745272 1615424 5745368 1616232 5745520 +1616160 5745400 1615648 5745352 1616232 5745520 1616216 5745480 +1615424 5745368 1615648 5745352 1616016 5745272 1615872 5745184 +1615424 5745368 1616232 5745520 1615648 5745352 1615872 5745184 +1615648 5745352 1616160 5745400 1616016 5745272 1615872 5745184 +1615424 5745368 1615648 5745352 1615872 5745184 1615240 5744880 +1615424 5745368 1616232 5745520 1615648 5745352 1615240 5744880 +1615424 5745368 1615648 5745352 1615240 5744880 1614992 5744816 +1615648 5745352 1616016 5745272 1615872 5745184 1615240 5744880 +1616160 5745400 1616016 5745272 1615648 5745352 1616232 5745520 +1615424 5745368 1616296 5745864 1616232 5745520 1615648 5745352 +1615424 5745368 1616296 5745864 1615648 5745352 1615240 5744880 +1616232 5745520 1616160 5745400 1615648 5745352 1616296 5745864 +1615424 5745368 1615544 5746368 1616296 5745864 1615648 5745352 +1615424 5745368 1615544 5746368 1615648 5745352 1615240 5744880 +1616296 5745864 1616232 5745520 1615648 5745352 1615544 5746368 +1615544 5746368 1616376 5746120 1616296 5745864 1615648 5745352 +1615424 5745368 1615480 5746344 1615544 5746368 1615648 5745352 +1615424 5745368 1615480 5746344 1615648 5745352 1615240 5744880 +1615424 5745368 1615272 5746320 1615480 5746344 1615648 5745352 +1615544 5746368 1616296 5745864 1615648 5745352 1615480 5746344 +1615648 5745352 1615712 5745464 1616296 5745864 1616232 5745520 +1615712 5745464 1615544 5746368 1616296 5745864 1616232 5745520 +1615648 5745352 1615712 5745464 1616232 5745520 1616160 5745400 +1616232 5745520 1616216 5745480 1616160 5745400 1615712 5745464 +1616160 5745400 1615648 5745352 1615712 5745464 1616216 5745480 +1615648 5745352 1615712 5745464 1616160 5745400 1616016 5745272 +1615648 5745352 1615712 5745464 1616016 5745272 1615872 5745184 +1615712 5745464 1616216 5745480 1616160 5745400 1616016 5745272 +1615648 5745352 1615712 5745464 1615872 5745184 1615240 5744880 +1615712 5745464 1616160 5745400 1616016 5745272 1615872 5745184 +1615648 5745352 1615544 5746368 1615712 5745464 1615872 5745184 +1615712 5745464 1616296 5745864 1616232 5745520 1616216 5745480 +1616296 5745864 1615712 5745464 1615544 5746368 1616376 5746120 +1615544 5746368 1615712 5745464 1615648 5745352 1615480 5746344 +1615712 5745464 1615872 5745184 1615648 5745352 1615480 5746344 +1615544 5746368 1616296 5745864 1615712 5745464 1615480 5746344 +1615648 5745352 1615424 5745368 1615480 5746344 1615712 5745464 +1615648 5745352 1615424 5745368 1615712 5745464 1615872 5745184 +1615424 5745368 1615272 5746320 1615480 5746344 1615712 5745464 +1615424 5745368 1615160 5746336 1615272 5746320 1615712 5745464 +1615480 5746344 1615544 5746368 1615712 5745464 1615272 5746320 +1615424 5745368 1615272 5746320 1615712 5745464 1615648 5745352 +1615712 5745464 1615712 5745512 1616296 5745864 1616232 5745520 +1615712 5745464 1615544 5746368 1615712 5745512 1616232 5745520 +1615712 5745464 1615712 5745512 1616232 5745520 1616216 5745480 +1615712 5745512 1616296 5745864 1616232 5745520 1616216 5745480 +1615712 5745464 1615544 5746368 1615712 5745512 1616216 5745480 +1615712 5745464 1615712 5745512 1616216 5745480 1616160 5745400 +1615712 5745464 1615544 5746368 1615712 5745512 1616160 5745400 +1615712 5745464 1615712 5745512 1616160 5745400 1616016 5745272 +1615712 5745464 1615544 5746368 1615712 5745512 1616016 5745272 +1615712 5745512 1616216 5745480 1616160 5745400 1616016 5745272 +1615712 5745464 1615712 5745512 1616016 5745272 1615872 5745184 +1615712 5745512 1616232 5745520 1616216 5745480 1616160 5745400 +1615544 5746368 1615712 5745512 1615712 5745464 1615480 5746344 +1615712 5745512 1616016 5745272 1615712 5745464 1615480 5746344 +1615544 5746368 1616296 5745864 1615712 5745512 1615480 5746344 +1615712 5745512 1615544 5746368 1616296 5745864 1616232 5745520 +1616296 5745864 1615712 5745512 1615544 5746368 1616376 5746120 +1615712 5745464 1615272 5746320 1615480 5746344 1615712 5745512 +1615712 5745464 1615272 5746320 1615712 5745512 1616016 5745272 +1615712 5745464 1615424 5745368 1615272 5746320 1615712 5745512 +1615712 5745464 1615424 5745368 1615712 5745512 1616016 5745272 +1615424 5745368 1615160 5746336 1615272 5746320 1615712 5745512 +1615480 5746344 1615544 5746368 1615712 5745512 1615272 5746320 +1615272 5746320 1615480 5746344 1615712 5745512 1615424 5745368 +1615712 5745464 1615648 5745352 1615424 5745368 1615712 5745512 +1615712 5745512 1615664 5745704 1615544 5746368 1616296 5745864 +1615712 5745512 1615480 5746344 1615664 5745704 1616296 5745864 +1615664 5745704 1615480 5746344 1615544 5746368 1616296 5745864 +1615480 5746344 1615664 5745704 1615712 5745512 1615272 5746320 +1615664 5745704 1616296 5745864 1615712 5745512 1615272 5746320 +1615480 5746344 1615544 5746368 1615664 5745704 1615272 5746320 +1615712 5745512 1615664 5745704 1616296 5745864 1616232 5745520 +1615712 5745512 1615664 5745704 1616232 5745520 1616216 5745480 +1615712 5745512 1615272 5746320 1615664 5745704 1616232 5745520 +1615664 5745704 1615544 5746368 1616296 5745864 1616232 5745520 +1615544 5746368 1616376 5746120 1616296 5745864 1615664 5745704 +1615712 5745512 1615424 5745368 1615272 5746320 1615664 5745704 +1615712 5745512 1615424 5745368 1615664 5745704 1616232 5745520 +1615424 5745368 1615160 5746336 1615272 5746320 1615664 5745704 +1615712 5745512 1615712 5745464 1615424 5745368 1615664 5745704 +1615272 5746320 1615480 5746344 1615664 5745704 1615424 5745368 +1615664 5745704 1615656 5745816 1616296 5745864 1616232 5745520 +1615544 5746368 1615656 5745816 1615664 5745704 1615480 5746344 +1615544 5746368 1616296 5745864 1615656 5745816 1615480 5746344 +1615656 5745816 1616296 5745864 1615664 5745704 1615480 5746344 +1615664 5745704 1615272 5746320 1615480 5746344 1615656 5745816 +1615480 5746344 1615544 5746368 1615656 5745816 1615272 5746320 +1615664 5745704 1615272 5746320 1615656 5745816 1616296 5745864 +1615664 5745704 1615424 5745368 1615272 5746320 1615656 5745816 +1615424 5745368 1615160 5746336 1615272 5746320 1615656 5745816 +1615424 5745368 1614552 5745968 1615160 5746336 1615656 5745816 +1615664 5745704 1615424 5745368 1615656 5745816 1616296 5745864 +1615272 5746320 1615480 5746344 1615656 5745816 1615160 5746336 +1615424 5745368 1615160 5746336 1615656 5745816 1615664 5745704 +1616296 5745864 1615656 5745816 1615544 5746368 1616376 5746120 +1615656 5745816 1615480 5746344 1615544 5746368 1616376 5746120 +1616296 5745864 1615664 5745704 1615656 5745816 1616376 5746120 +1615664 5745704 1615712 5745512 1615424 5745368 1615656 5745816 +1615544 5746368 1615608 5746456 1616376 5746120 1615656 5745816 +1615544 5746368 1615608 5746456 1615656 5745816 1615480 5746344 +1616376 5746120 1616296 5745864 1615656 5745816 1615608 5746456 +1615608 5746456 1615640 5746528 1616376 5746120 1615656 5745816 +1615656 5745816 1615704 5745872 1616376 5746120 1616296 5745864 +1615656 5745816 1615608 5746456 1615704 5745872 1616296 5745864 +1615704 5745872 1615608 5746456 1616376 5746120 1616296 5745864 +1615656 5745816 1615704 5745872 1616296 5745864 1615664 5745704 +1616296 5745864 1616232 5745520 1615664 5745704 1615704 5745872 +1615656 5745816 1615608 5746456 1615704 5745872 1615664 5745704 +1615664 5745704 1615656 5745816 1615704 5745872 1616232 5745520 +1616232 5745520 1615712 5745512 1615664 5745704 1615704 5745872 +1615704 5745872 1616376 5746120 1616296 5745864 1616232 5745520 +1616376 5746120 1615704 5745872 1615608 5746456 1615640 5746528 +1615608 5746456 1615704 5745872 1615656 5745816 1615544 5746368 +1615704 5745872 1615664 5745704 1615656 5745816 1615544 5746368 +1615656 5745816 1615480 5746344 1615544 5746368 1615704 5745872 +1615656 5745816 1615272 5746320 1615480 5746344 1615704 5745872 +1615656 5745816 1615480 5746344 1615704 5745872 1615664 5745704 +1615608 5746456 1616376 5746120 1615704 5745872 1615544 5746368 +1615544 5746368 1615608 5746456 1615704 5745872 1615480 5746344 +1616376 5746120 1615736 5745880 1615704 5745872 1615608 5746456 +1616376 5746120 1616296 5745864 1615736 5745880 1615608 5746456 +1615704 5745872 1615544 5746368 1615608 5746456 1615736 5745880 +1615608 5746456 1616376 5746120 1615736 5745880 1615544 5746368 +1615736 5745880 1616296 5745864 1615704 5745872 1615544 5746368 +1615704 5745872 1615736 5745880 1616296 5745864 1616232 5745520 +1615704 5745872 1615736 5745880 1616232 5745520 1615664 5745704 +1615704 5745872 1615736 5745880 1615664 5745704 1615656 5745816 +1615736 5745880 1616232 5745520 1615664 5745704 1615656 5745816 +1615736 5745880 1616376 5746120 1616296 5745864 1616232 5745520 +1615704 5745872 1615544 5746368 1615736 5745880 1615656 5745816 +1616232 5745520 1615712 5745512 1615664 5745704 1615736 5745880 +1615736 5745880 1616296 5745864 1616232 5745520 1615664 5745704 +1616376 5746120 1615736 5745880 1615608 5746456 1615640 5746528 +1615704 5745872 1615480 5746344 1615544 5746368 1615736 5745880 +1616296 5745864 1615936 5745824 1615736 5745880 1616376 5746120 +1615736 5745880 1615608 5746456 1616376 5746120 1615936 5745824 +1616376 5746120 1616296 5745864 1615936 5745824 1615608 5746456 +1615736 5745880 1615544 5746368 1615608 5746456 1615936 5745824 +1615736 5745880 1615936 5745824 1616232 5745520 1615664 5745704 +1615736 5745880 1615936 5745824 1615664 5745704 1615656 5745816 +1616232 5745520 1615712 5745512 1615664 5745704 1615936 5745824 +1616232 5745520 1616216 5745480 1615712 5745512 1615936 5745824 +1616216 5745480 1616160 5745400 1615712 5745512 1615936 5745824 +1616216 5745480 1616160 5745400 1615936 5745824 1616232 5745520 +1616160 5745400 1616016 5745272 1615712 5745512 1615936 5745824 +1615712 5745512 1615664 5745704 1615936 5745824 1616160 5745400 +1615664 5745704 1615736 5745880 1615936 5745824 1615712 5745512 +1615608 5746456 1615640 5746528 1616376 5746120 1615936 5745824 +1616296 5745864 1616232 5745520 1615936 5745824 1616376 5746120 +1615936 5745824 1615664 5745704 1615736 5745880 1615608 5746456 +1615936 5745824 1616296 5745864 1616232 5745520 1616216 5745480 +1616376 5746120 1616008 5745856 1615936 5745824 1615608 5746456 +1616376 5746120 1616296 5745864 1616008 5745856 1615608 5746456 +1616376 5746120 1616008 5745856 1615608 5746456 1615640 5746528 +1615936 5745824 1615736 5745880 1615608 5746456 1616008 5745856 +1615608 5746456 1616376 5746120 1616008 5745856 1615736 5745880 +1615736 5745880 1615544 5746368 1615608 5746456 1616008 5745856 +1615936 5745824 1616008 5745856 1616296 5745864 1616232 5745520 +1616008 5745856 1616376 5746120 1616296 5745864 1616232 5745520 +1616008 5745856 1616232 5745520 1615936 5745824 1615736 5745880 +1615936 5745824 1616008 5745856 1616232 5745520 1616216 5745480 +1616008 5745856 1616104 5745936 1616376 5746120 1616296 5745864 +1616008 5745856 1616104 5745936 1616296 5745864 1616232 5745520 +1616008 5745856 1615608 5746456 1616104 5745936 1616296 5745864 +1616104 5745936 1615608 5746456 1616376 5746120 1616296 5745864 +1615608 5746456 1616104 5745936 1616008 5745856 1615736 5745880 +1616104 5745936 1616296 5745864 1616008 5745856 1615736 5745880 +1615608 5746456 1616376 5746120 1616104 5745936 1615736 5745880 +1615608 5746456 1616104 5745936 1615736 5745880 1615544 5746368 +1616376 5746120 1616104 5745936 1615608 5746456 1615640 5746528 +1616376 5746120 1616104 5745936 1615640 5746528 1616480 5746336 +1616376 5746120 1616296 5745864 1616104 5745936 1615640 5746528 +1616104 5745936 1615736 5745880 1615608 5746456 1615640 5746528 +1615608 5746456 1615624 5746504 1615640 5746528 1616104 5745936 +1616008 5745856 1615936 5745824 1615736 5745880 1616104 5745936 +1616376 5746120 1616144 5746016 1615640 5746528 1616480 5746336 +1615640 5746528 1615648 5746688 1616480 5746336 1616144 5746016 +1616144 5746016 1616104 5745936 1615640 5746528 1616480 5746336 +1616104 5745936 1616144 5746016 1616376 5746120 1616296 5745864 +1616104 5745936 1616144 5746016 1616296 5745864 1616008 5745856 +1616104 5745936 1615640 5746528 1616144 5746016 1616296 5745864 +1616376 5746120 1616296 5745864 1616144 5746016 1616480 5746336 +1615640 5746528 1616144 5746016 1616104 5745936 1615608 5746456 +1615640 5746528 1616480 5746336 1616144 5746016 1615608 5746456 +1616144 5746016 1616296 5745864 1616104 5745936 1615608 5746456 +1616104 5745936 1615736 5745880 1615608 5746456 1616144 5746016 +1616104 5745936 1615736 5745880 1616144 5746016 1616296 5745864 +1615640 5746528 1616144 5746016 1615608 5746456 1615624 5746504 +1616104 5745936 1616008 5745856 1615736 5745880 1616144 5746016 +1616104 5745936 1616008 5745856 1616144 5746016 1616296 5745864 +1615736 5745880 1615608 5746456 1616144 5746016 1616008 5745856 +1615736 5745880 1615544 5746368 1615608 5746456 1616144 5746016 +1615736 5745880 1615544 5746368 1616144 5746016 1616008 5745856 +1615736 5745880 1615704 5745872 1615544 5746368 1616144 5746016 +1615608 5746456 1615640 5746528 1616144 5746016 1615544 5746368 +1616008 5745856 1615936 5745824 1615736 5745880 1616144 5746016 +1616480 5746336 1616160 5746160 1615640 5746528 1615648 5746688 +1616144 5746016 1616160 5746160 1616480 5746336 1616376 5746120 +1616480 5746336 1616376 5746120 1616160 5746160 1615648 5746688 +1616144 5746016 1615640 5746528 1616160 5746160 1616376 5746120 +1615640 5746528 1616160 5746160 1616144 5746016 1615608 5746456 +1616160 5746160 1616376 5746120 1616144 5746016 1615608 5746456 +1616480 5746336 1616160 5746160 1615648 5746688 1615824 5746976 +1616160 5746160 1615640 5746528 1615648 5746688 1615824 5746976 +1616480 5746336 1616376 5746120 1616160 5746160 1615824 5746976 +1616144 5746016 1616160 5746160 1616376 5746120 1616296 5745864 +1615640 5746528 1616160 5746160 1615608 5746456 1615624 5746504 +1616144 5746016 1615544 5746368 1615608 5746456 1616160 5746160 +1616144 5746016 1615544 5746368 1616160 5746160 1616376 5746120 +1615608 5746456 1615640 5746528 1616160 5746160 1615544 5746368 +1616144 5746016 1615736 5745880 1615544 5746368 1616160 5746160 +1616144 5746016 1615736 5745880 1616160 5746160 1616376 5746120 +1616144 5746016 1616008 5745856 1615736 5745880 1616160 5746160 +1615736 5745880 1615704 5745872 1615544 5746368 1616160 5746160 +1615544 5746368 1615608 5746456 1616160 5746160 1615736 5745880 +1616160 5746160 1615608 5746456 1615640 5746528 1615648 5746688 +1616480 5746336 1616160 5746160 1615824 5746976 1616016 5747072 +1615648 5746688 1615680 5746848 1615824 5746976 1616160 5746160 +1616160 5746160 1616144 5746240 1616480 5746336 1616376 5746120 +1616160 5746160 1616144 5746240 1616376 5746120 1616144 5746016 +1616160 5746160 1615824 5746976 1616144 5746240 1616376 5746120 +1615824 5746976 1616144 5746240 1616160 5746160 1615648 5746688 +1616160 5746160 1615640 5746528 1615648 5746688 1616144 5746240 +1616144 5746240 1616376 5746120 1616160 5746160 1615640 5746528 +1615648 5746688 1615824 5746976 1616144 5746240 1615640 5746528 +1616144 5746240 1615824 5746976 1616480 5746336 1616376 5746120 +1615824 5746976 1616480 5746336 1616144 5746240 1615648 5746688 +1616160 5746160 1615608 5746456 1615640 5746528 1616144 5746240 +1615640 5746528 1615648 5746688 1616144 5746240 1615608 5746456 +1616160 5746160 1615608 5746456 1616144 5746240 1616376 5746120 +1616160 5746160 1615544 5746368 1615608 5746456 1616144 5746240 +1616160 5746160 1615544 5746368 1616144 5746240 1616376 5746120 +1615608 5746456 1615624 5746504 1615640 5746528 1616144 5746240 +1616160 5746160 1615736 5745880 1615544 5746368 1616144 5746240 +1616160 5746160 1615736 5745880 1616144 5746240 1616376 5746120 +1615544 5746368 1615608 5746456 1616144 5746240 1615736 5745880 +1616160 5746160 1616144 5746016 1615736 5745880 1616144 5746240 +1615736 5745880 1615704 5745872 1615544 5746368 1616144 5746240 +1615608 5746456 1615640 5746528 1616144 5746240 1615544 5746368 +1616480 5746336 1616144 5746240 1615824 5746976 1616016 5747072 +1616480 5746336 1616376 5746120 1616144 5746240 1616016 5747072 +1616144 5746240 1615648 5746688 1615824 5746976 1616016 5747072 +1615824 5746976 1616144 5746240 1615648 5746688 1615680 5746848 +1616480 5746336 1616144 5746240 1616016 5747072 1616616 5746536 +1616480 5746336 1616376 5746120 1616144 5746240 1616616 5746536 +1616016 5747072 1616352 5747304 1616616 5746536 1616144 5746240 +1616144 5746240 1615824 5746976 1616016 5747072 1616616 5746536 +1615648 5746688 1616080 5746328 1616144 5746240 1615640 5746528 +1616144 5746240 1615608 5746456 1615640 5746528 1616080 5746328 +1615640 5746528 1615648 5746688 1616080 5746328 1615608 5746456 +1616080 5746328 1615824 5746976 1616144 5746240 1615608 5746456 +1616144 5746240 1616080 5746328 1615824 5746976 1616016 5747072 +1616144 5746240 1615608 5746456 1616080 5746328 1616016 5747072 +1615608 5746456 1615624 5746504 1615640 5746528 1616080 5746328 +1616144 5746240 1615544 5746368 1615608 5746456 1616080 5746328 +1615608 5746456 1615640 5746528 1616080 5746328 1615544 5746368 +1616144 5746240 1615736 5745880 1615544 5746368 1616080 5746328 +1616144 5746240 1615736 5745880 1616080 5746328 1616016 5747072 +1615736 5745880 1615704 5745872 1615544 5746368 1616080 5746328 +1616144 5746240 1616160 5746160 1615736 5745880 1616080 5746328 +1615736 5745880 1615544 5746368 1616080 5746328 1616160 5746160 +1616144 5746240 1616160 5746160 1616080 5746328 1616016 5747072 +1616160 5746160 1616144 5746016 1615736 5745880 1616080 5746328 +1615544 5746368 1615608 5746456 1616080 5746328 1615736 5745880 +1616080 5746328 1615648 5746688 1615824 5746976 1616016 5747072 +1615648 5746688 1615824 5746976 1616080 5746328 1615640 5746528 +1616144 5746240 1616080 5746328 1616016 5747072 1616616 5746536 +1616144 5746240 1616160 5746160 1616080 5746328 1616616 5746536 +1616080 5746328 1615824 5746976 1616016 5747072 1616616 5746536 +1616016 5747072 1616352 5747304 1616616 5746536 1616080 5746328 +1615824 5746976 1616080 5746328 1615648 5746688 1615680 5746848 +1616144 5746240 1616080 5746328 1616616 5746536 1616480 5746336 +1616144 5746240 1616080 5746328 1616480 5746336 1616376 5746120 +1616144 5746240 1616160 5746160 1616080 5746328 1616480 5746336 +1616080 5746328 1616016 5747072 1616616 5746536 1616480 5746336 +1615608 5746456 1616016 5746352 1616080 5746328 1615544 5746368 +1616080 5746328 1616016 5746352 1615640 5746528 1615648 5746688 +1615640 5746528 1616016 5746352 1615608 5746456 1615624 5746504 +1616080 5746328 1615736 5745880 1615544 5746368 1616016 5746352 +1615544 5746368 1615608 5746456 1616016 5746352 1615736 5745880 +1616080 5746328 1616160 5746160 1615736 5745880 1616016 5746352 +1616160 5746160 1616144 5746016 1615736 5745880 1616016 5746352 +1616160 5746160 1616144 5746016 1616016 5746352 1616080 5746328 +1616144 5746016 1616008 5745856 1615736 5745880 1616016 5746352 +1615736 5745880 1615704 5745872 1615544 5746368 1616016 5746352 +1616080 5746328 1616144 5746240 1616160 5746160 1616016 5746352 +1616160 5746160 1616144 5746016 1616016 5746352 1616144 5746240 +1615736 5745880 1615544 5746368 1616016 5746352 1616144 5746016 +1616016 5746352 1615648 5746688 1616080 5746328 1616144 5746240 +1616080 5746328 1616016 5746352 1615648 5746688 1615824 5746976 +1616016 5746352 1615640 5746528 1615648 5746688 1615824 5746976 +1616080 5746328 1616016 5746352 1615824 5746976 1616016 5747072 +1616080 5746328 1616016 5746352 1616016 5747072 1616616 5746536 +1616080 5746328 1616144 5746240 1616016 5746352 1616016 5747072 +1616016 5746352 1615648 5746688 1615824 5746976 1616016 5747072 +1615648 5746688 1615680 5746848 1615824 5746976 1616016 5746352 +1616016 5746352 1615608 5746456 1615640 5746528 1615648 5746688 +1615608 5746456 1615640 5746528 1616016 5746352 1615544 5746368 +1616016 5746352 1615936 5746352 1615544 5746368 1615608 5746456 +1615544 5746368 1615936 5746352 1615736 5745880 1615704 5745872 +1615736 5745880 1615936 5746352 1616016 5746352 1616144 5746016 +1615736 5745880 1615936 5746352 1616144 5746016 1616008 5745856 +1616144 5746016 1616104 5745936 1616008 5745856 1615936 5746352 +1616016 5746352 1616160 5746160 1616144 5746016 1615936 5746352 +1616016 5746352 1616144 5746240 1616160 5746160 1615936 5746352 +1616160 5746160 1616144 5746016 1615936 5746352 1616144 5746240 +1616016 5746352 1616080 5746328 1616144 5746240 1615936 5746352 +1615736 5745880 1615544 5746368 1615936 5746352 1616008 5745856 +1615936 5746352 1616160 5746160 1616144 5746016 1616008 5745856 +1616016 5746352 1616144 5746240 1615936 5746352 1615608 5746456 +1616016 5746352 1615936 5746352 1615608 5746456 1615640 5746528 +1615936 5746352 1615544 5746368 1615608 5746456 1615640 5746528 +1615608 5746456 1615624 5746504 1615640 5746528 1615936 5746352 +1616016 5746352 1615936 5746352 1615640 5746528 1615648 5746688 +1616016 5746352 1615936 5746352 1615648 5746688 1615824 5746976 +1616016 5746352 1616144 5746240 1615936 5746352 1615648 5746688 +1615936 5746352 1615608 5746456 1615640 5746528 1615648 5746688 +1615936 5746352 1615736 5745880 1615544 5746368 1615608 5746456 +1615736 5745880 1615936 5746352 1616008 5745856 1615936 5745824 +1615544 5746368 1615792 5746256 1615736 5745880 1615704 5745872 +1615736 5745880 1615792 5746256 1615936 5746352 1616008 5745856 +1615936 5746352 1616144 5746016 1616008 5745856 1615792 5746256 +1616144 5746016 1616104 5745936 1616008 5745856 1615792 5746256 +1616144 5746016 1616104 5745936 1615792 5746256 1615936 5746352 +1616008 5745856 1615736 5745880 1615792 5746256 1616104 5745936 +1615544 5746368 1615936 5746352 1615792 5746256 1615704 5745872 +1615792 5746256 1616008 5745856 1615736 5745880 1615704 5745872 +1615936 5746352 1616160 5746160 1616144 5746016 1615792 5746256 +1616144 5746016 1616104 5745936 1615792 5746256 1616160 5746160 +1615936 5746352 1616144 5746240 1616160 5746160 1615792 5746256 +1615544 5746368 1615792 5746256 1615704 5745872 1615480 5746344 +1615704 5745872 1615656 5745816 1615480 5746344 1615792 5746256 +1615792 5746256 1615736 5745880 1615704 5745872 1615480 5746344 +1615544 5746368 1615936 5746352 1615792 5746256 1615480 5746344 +1615936 5746352 1615792 5746256 1615544 5746368 1615608 5746456 +1615936 5746352 1615792 5746256 1615608 5746456 1615640 5746528 +1615608 5746456 1615624 5746504 1615640 5746528 1615792 5746256 +1615792 5746256 1615480 5746344 1615544 5746368 1615608 5746456 +1615936 5746352 1615792 5746256 1615640 5746528 1615648 5746688 +1615792 5746256 1615544 5746368 1615608 5746456 1615640 5746528 +1615792 5746256 1615640 5746528 1615936 5746352 1616160 5746160 +1615736 5745880 1615792 5746256 1616008 5745856 1615936 5745824 +1615480 5746344 1615648 5746080 1615704 5745872 1615656 5745816 +1615648 5746080 1615792 5746256 1615704 5745872 1615656 5745816 +1615480 5746344 1615648 5746080 1615656 5745816 1615272 5746320 +1615648 5746080 1615704 5745872 1615656 5745816 1615272 5746320 +1615656 5745816 1615160 5746336 1615272 5746320 1615648 5746080 +1615704 5745872 1615648 5746080 1615792 5746256 1615736 5745880 +1615704 5745872 1615656 5745816 1615648 5746080 1615736 5745880 +1615648 5746080 1615480 5746344 1615792 5746256 1615736 5745880 +1615792 5746256 1616008 5745856 1615736 5745880 1615648 5746080 +1615480 5746344 1615792 5746256 1615648 5746080 1615272 5746320 +1615792 5746256 1615648 5746080 1615480 5746344 1615544 5746368 +1615792 5746256 1615648 5746080 1615544 5746368 1615608 5746456 +1615792 5746256 1615736 5745880 1615648 5746080 1615544 5746368 +1615648 5746080 1615272 5746320 1615480 5746344 1615544 5746368 +1615160 5746336 1615528 5745952 1615656 5745816 1615424 5745368 +1615160 5746336 1615528 5745952 1615424 5745368 1614552 5745968 +1615160 5746336 1615528 5745952 1614552 5745968 1614792 5746280 +1615160 5746336 1615528 5745952 1614792 5746280 1615080 5746352 +1615528 5745952 1615424 5745368 1614552 5745968 1614792 5746280 +1614552 5745968 1614760 5746280 1614792 5746280 1615528 5745952 +1615528 5745952 1615656 5745816 1615424 5745368 1614552 5745968 +1615656 5745816 1615528 5745952 1615272 5746320 1615648 5746080 +1615528 5745952 1615160 5746336 1615272 5746320 1615648 5746080 +1615272 5746320 1615480 5746344 1615648 5746080 1615528 5745952 +1615272 5746320 1615480 5746344 1615528 5745952 1615160 5746336 +1615656 5745816 1615528 5745952 1615648 5746080 1615704 5745872 +1615648 5746080 1615736 5745880 1615704 5745872 1615528 5745952 +1615648 5746080 1615704 5745872 1615528 5745952 1615480 5746344 +1615656 5745816 1615664 5745704 1615424 5745368 1615528 5745952 +1615424 5745368 1614552 5745968 1615528 5745952 1615664 5745704 +1615664 5745704 1615712 5745512 1615424 5745368 1615528 5745952 +1615424 5745368 1614392 5745696 1614552 5745968 1615528 5745952 +1615480 5746344 1615544 5746368 1615648 5746080 1615528 5745952 +1615160 5746336 1615272 5746320 1615528 5745952 1614792 5746280 +1615528 5745952 1615704 5745872 1615656 5745816 1615664 5745704 +1615528 5745952 1615384 5745896 1614552 5745968 1614792 5746280 +1615528 5745952 1615384 5745896 1614792 5746280 1615160 5746336 +1614792 5746280 1615080 5746352 1615160 5746336 1615384 5745896 +1615160 5746336 1615528 5745952 1615384 5745896 1615080 5746352 +1614792 5746280 1614912 5746344 1615080 5746352 1615384 5745896 +1615384 5745896 1614552 5745968 1614792 5746280 1615080 5746352 +1615384 5745896 1615424 5745368 1614552 5745968 1614792 5746280 +1614552 5745968 1614760 5746280 1614792 5746280 1615384 5745896 +1615424 5745368 1615384 5745896 1615528 5745952 1615664 5745704 +1615528 5745952 1615656 5745816 1615664 5745704 1615384 5745896 +1615664 5745704 1615424 5745368 1615384 5745896 1615656 5745816 +1615424 5745368 1615384 5745896 1615664 5745704 1615712 5745512 +1614552 5745968 1615384 5745896 1615424 5745368 1614392 5745696 +1615528 5745952 1615384 5745896 1615160 5746336 1615272 5746320 +1615528 5745952 1615384 5745896 1615272 5746320 1615480 5746344 +1615384 5745896 1615080 5746352 1615160 5746336 1615272 5746320 +1615528 5745952 1615656 5745816 1615384 5745896 1615272 5746320 +1615528 5745952 1615704 5745872 1615656 5745816 1615384 5745896 +1615424 5745368 1614552 5745968 1615384 5745896 1615664 5745704 +1615384 5745896 1615336 5745936 1615080 5746352 1615160 5746336 +1615384 5745896 1615336 5745936 1615160 5746336 1615272 5746320 +1615336 5745936 1615080 5746352 1615160 5746336 1615272 5746320 +1615080 5746352 1615336 5745936 1614792 5746280 1614912 5746344 +1614792 5746280 1615336 5745936 1615384 5745896 1614552 5745968 +1615384 5745896 1615424 5745368 1614552 5745968 1615336 5745936 +1614552 5745968 1614792 5746280 1615336 5745936 1615424 5745368 +1615384 5745896 1615424 5745368 1615336 5745936 1615272 5746320 +1614792 5746280 1615336 5745936 1614552 5745968 1614760 5746280 +1615424 5745368 1614392 5745696 1614552 5745968 1615336 5745936 +1615336 5745936 1614552 5745968 1614792 5746280 1614912 5746344 +1615384 5745896 1615336 5745936 1615272 5746320 1615528 5745952 +1615272 5746320 1615480 5746344 1615528 5745952 1615336 5745936 +1615336 5745936 1615160 5746336 1615272 5746320 1615480 5746344 +1615480 5746344 1615648 5746080 1615528 5745952 1615336 5745936 +1615384 5745896 1615424 5745368 1615336 5745936 1615528 5745952 +1615528 5745952 1615384 5745896 1615336 5745936 1615480 5746344 +1615384 5745896 1615664 5745704 1615424 5745368 1615336 5745936 +1615336 5745936 1614912 5746344 1615080 5746352 1615160 5746336 +1615336 5745936 1615304 5746000 1615160 5746336 1615272 5746320 +1615336 5745936 1615304 5746000 1615272 5746320 1615480 5746344 +1615336 5745936 1615304 5746000 1615480 5746344 1615528 5745952 +1615304 5746000 1615272 5746320 1615480 5746344 1615528 5745952 +1615304 5746000 1615160 5746336 1615272 5746320 1615480 5746344 +1615480 5746344 1615648 5746080 1615528 5745952 1615304 5746000 +1615336 5745936 1615080 5746352 1615304 5746000 1615528 5745952 +1615304 5746000 1615080 5746352 1615160 5746336 1615272 5746320 +1615336 5745936 1615304 5746000 1615528 5745952 1615384 5745896 +1615080 5746352 1615304 5746000 1615336 5745936 1614912 5746344 +1615336 5745936 1614792 5746280 1614912 5746344 1615304 5746000 +1615080 5746352 1615160 5746336 1615304 5746000 1614912 5746344 +1615304 5746000 1615528 5745952 1615336 5745936 1614792 5746280 +1615336 5745936 1614552 5745968 1614792 5746280 1615304 5746000 +1614792 5746280 1614912 5746344 1615304 5746000 1614552 5745968 +1615336 5745936 1615424 5745368 1614552 5745968 1615304 5746000 +1614552 5745968 1614760 5746280 1614792 5746280 1615304 5746000 +1615336 5745936 1614552 5745968 1615304 5746000 1615528 5745952 +1614912 5746344 1615080 5746352 1615304 5746000 1614792 5746280 +1615304 5746000 1615224 5746104 1615080 5746352 1615160 5746336 +1615304 5746000 1614912 5746344 1615224 5746104 1615160 5746336 +1615224 5746104 1614912 5746344 1615080 5746352 1615160 5746336 +1615304 5746000 1615224 5746104 1615160 5746336 1615272 5746320 +1615304 5746000 1615224 5746104 1615272 5746320 1615480 5746344 +1615304 5746000 1615224 5746104 1615480 5746344 1615528 5745952 +1615304 5746000 1614912 5746344 1615224 5746104 1615480 5746344 +1615224 5746104 1615080 5746352 1615160 5746336 1615272 5746320 +1615224 5746104 1615160 5746336 1615272 5746320 1615480 5746344 +1614912 5746344 1615224 5746104 1615304 5746000 1614792 5746280 +1615304 5746000 1614552 5745968 1614792 5746280 1615224 5746104 +1614552 5745968 1614760 5746280 1614792 5746280 1615224 5746104 +1615224 5746104 1615480 5746344 1615304 5746000 1614552 5745968 +1614912 5746344 1615080 5746352 1615224 5746104 1614792 5746280 +1615304 5746000 1615336 5745936 1614552 5745968 1615224 5746104 +1614792 5746280 1614912 5746344 1615224 5746104 1614552 5745968 +1614552 5745968 1615152 5746120 1615224 5746104 1615304 5746000 +1614552 5745968 1614792 5746280 1615152 5746120 1615304 5746000 +1615152 5746120 1614792 5746280 1615224 5746104 1615304 5746000 +1614792 5746280 1615152 5746120 1614552 5745968 1614760 5746280 +1614552 5745968 1615152 5746120 1615304 5746000 1615336 5745936 +1614552 5745968 1614792 5746280 1615152 5746120 1615336 5745936 +1615152 5746120 1615224 5746104 1615304 5746000 1615336 5745936 +1614552 5745968 1615152 5746120 1615336 5745936 1615424 5745368 +1615224 5746104 1615152 5746120 1614792 5746280 1614912 5746344 +1615224 5746104 1615304 5746000 1615152 5746120 1614912 5746344 +1615152 5746120 1614552 5745968 1614792 5746280 1614912 5746344 +1615224 5746104 1615152 5746120 1614912 5746344 1615080 5746352 +1615224 5746104 1615304 5746000 1615152 5746120 1615080 5746352 +1615224 5746104 1615152 5746120 1615080 5746352 1615160 5746336 +1615224 5746104 1615304 5746000 1615152 5746120 1615160 5746336 +1615224 5746104 1615152 5746120 1615160 5746336 1615272 5746320 +1615224 5746104 1615304 5746000 1615152 5746120 1615272 5746320 +1615152 5746120 1615080 5746352 1615160 5746336 1615272 5746320 +1615224 5746104 1615152 5746120 1615272 5746320 1615480 5746344 +1615152 5746120 1614912 5746344 1615080 5746352 1615160 5746336 +1615152 5746120 1614792 5746280 1614912 5746344 1615080 5746352 +1615336 5745936 1615088 5745944 1614552 5745968 1615152 5746120 +1615088 5745944 1615424 5745368 1614552 5745968 1615152 5746120 +1614552 5745968 1614792 5746280 1615152 5746120 1615088 5745944 +1614552 5745968 1614792 5746280 1615088 5745944 1615424 5745368 +1614792 5746280 1614912 5746344 1615152 5746120 1615088 5745944 +1615152 5746120 1615336 5745936 1615088 5745944 1614792 5746280 +1615424 5745368 1615088 5745944 1615336 5745936 1615384 5745896 +1615424 5745368 1614552 5745968 1615088 5745944 1615384 5745896 +1615336 5745936 1615384 5745896 1615088 5745944 1615152 5746120 +1614552 5745968 1614760 5746280 1614792 5746280 1615088 5745944 +1614552 5745968 1615088 5745944 1615424 5745368 1614392 5745696 +1614552 5745968 1614792 5746280 1615088 5745944 1614392 5745696 +1615088 5745944 1615384 5745896 1615424 5745368 1614392 5745696 +1615424 5745368 1614928 5744824 1614392 5745696 1615088 5745944 +1615336 5745936 1615088 5745944 1615152 5746120 1615304 5746000 +1615152 5746120 1615224 5746104 1615304 5746000 1615088 5745944 +1615088 5745944 1614792 5746280 1615152 5746120 1615224 5746104 +1615336 5745936 1615384 5745896 1615088 5745944 1615304 5746000 +1615304 5746000 1615336 5745936 1615088 5745944 1615224 5746104 +1615424 5745368 1615088 5745944 1615384 5745896 1615664 5745704 +1615424 5745368 1615024 5745792 1615088 5745944 1615384 5745896 +1615088 5745944 1615336 5745936 1615384 5745896 1615024 5745792 +1615384 5745896 1615424 5745368 1615024 5745792 1615336 5745936 +1615024 5745792 1614392 5745696 1615088 5745944 1615336 5745936 +1615088 5745944 1615304 5746000 1615336 5745936 1615024 5745792 +1615424 5745368 1614392 5745696 1615024 5745792 1615384 5745896 +1614392 5745696 1615024 5745792 1615424 5745368 1614928 5744824 +1614392 5745696 1615024 5745792 1614928 5744824 1614784 5744800 +1614392 5745696 1615088 5745944 1615024 5745792 1614928 5744824 +1615024 5745792 1615384 5745896 1615424 5745368 1614928 5744824 +1615424 5745368 1614992 5744816 1614928 5744824 1615024 5745792 +1615088 5745944 1615024 5745792 1614392 5745696 1614552 5745968 +1615088 5745944 1615024 5745792 1614552 5745968 1614792 5746280 +1615088 5745944 1615336 5745936 1615024 5745792 1614552 5745968 +1615024 5745792 1614928 5744824 1614392 5745696 1614552 5745968 +1615424 5745368 1615024 5745792 1615384 5745896 1615664 5745704 +1614392 5745696 1614928 5745632 1614928 5744824 1614784 5744800 +1614392 5745696 1615024 5745792 1614928 5745632 1614784 5744800 +1615024 5745792 1614928 5745632 1614392 5745696 1614552 5745968 +1614928 5745632 1614784 5744800 1614392 5745696 1614552 5745968 +1615024 5745792 1614928 5744824 1614928 5745632 1614552 5745968 +1614928 5744824 1614928 5745632 1615024 5745792 1615424 5745368 +1614928 5745632 1614552 5745968 1615024 5745792 1615424 5745368 +1615024 5745792 1615384 5745896 1615424 5745368 1614928 5745632 +1614928 5744824 1614928 5745632 1615424 5745368 1614992 5744816 +1615424 5745368 1615240 5744880 1614992 5744816 1614928 5745632 +1615424 5745368 1615648 5745352 1615240 5744880 1614928 5745632 +1614928 5745632 1615024 5745792 1615424 5745368 1615240 5744880 +1614992 5744816 1614928 5744824 1614928 5745632 1615240 5744880 +1614392 5745696 1614928 5745632 1614784 5744800 1614128 5745040 +1615240 5744880 1615016 5744760 1614992 5744816 1614928 5745632 +1615024 5745792 1614928 5745632 1614552 5745968 1615088 5745944 +1614928 5745632 1614992 5744816 1614928 5744824 1614784 5744800 +1614784 5744800 1614808 5745520 1614928 5745632 1614928 5744824 +1614784 5744800 1614392 5745696 1614808 5745520 1614928 5744824 +1614928 5745632 1614808 5745520 1614392 5745696 1614552 5745968 +1614808 5745520 1614784 5744800 1614392 5745696 1614552 5745968 +1614808 5745520 1614552 5745968 1614928 5745632 1614928 5744824 +1614928 5745632 1614808 5745520 1614552 5745968 1615024 5745792 +1614392 5745696 1614808 5745520 1614784 5744800 1614128 5745040 +1614392 5745696 1614552 5745968 1614808 5745520 1614128 5745040 +1614808 5745520 1614928 5744824 1614784 5744800 1614128 5745040 +1614784 5744800 1614512 5744696 1614128 5745040 1614808 5745520 +1614928 5745632 1614992 5744816 1614928 5744824 1614808 5745520 +1614928 5744824 1614784 5744800 1614808 5745520 1614992 5744816 +1614928 5745632 1614992 5744816 1614808 5745520 1614552 5745968 +1614928 5745632 1615240 5744880 1614992 5744816 1614808 5745520 +1614928 5745632 1615240 5744880 1614808 5745520 1614552 5745968 +1614928 5745632 1615424 5745368 1615240 5744880 1614808 5745520 +1615424 5745368 1615648 5745352 1615240 5744880 1614808 5745520 +1614928 5745632 1615424 5745368 1614808 5745520 1614552 5745968 +1614928 5745632 1615024 5745792 1615424 5745368 1614808 5745520 +1615240 5744880 1614992 5744816 1614808 5745520 1615424 5745368 +1615240 5744880 1615016 5744760 1614992 5744816 1614808 5745520 +1614992 5744816 1614928 5744824 1614808 5745520 1615240 5744880 +1614808 5745520 1614600 5745384 1614392 5745696 1614552 5745968 +1614128 5745040 1614600 5745384 1614808 5745520 1614784 5744800 +1614600 5745384 1614392 5745696 1614808 5745520 1614784 5744800 +1614808 5745520 1614928 5744824 1614784 5744800 1614600 5745384 +1614808 5745520 1614928 5744824 1614600 5745384 1614392 5745696 +1614808 5745520 1614992 5744816 1614928 5744824 1614600 5745384 +1614128 5745040 1614392 5745696 1614600 5745384 1614784 5744800 +1614784 5744800 1614128 5745040 1614600 5745384 1614928 5744824 +1614128 5745040 1614600 5745384 1614784 5744800 1614512 5744696 +1614128 5745040 1614600 5745384 1614512 5744696 1614352 5744672 +1614128 5745040 1614392 5745696 1614600 5745384 1614512 5744696 +1614600 5745384 1614928 5744824 1614784 5744800 1614512 5744696 +1614600 5745384 1614384 5745232 1614392 5745696 1614808 5745520 +1614128 5745040 1614384 5745232 1614600 5745384 1614512 5744696 +1614384 5745232 1614392 5745696 1614600 5745384 1614512 5744696 +1614128 5745040 1614384 5745232 1614512 5744696 1614352 5744672 +1614600 5745384 1614784 5744800 1614512 5744696 1614384 5745232 +1614600 5745384 1614784 5744800 1614384 5745232 1614392 5745696 +1614512 5744696 1614128 5745040 1614384 5745232 1614784 5744800 +1614600 5745384 1614928 5744824 1614784 5744800 1614384 5745232 +1614128 5745040 1614392 5745696 1614384 5745232 1614512 5744696 +1614128 5745040 1614368 5745192 1614512 5744696 1614352 5744672 +1614128 5745040 1614368 5745192 1614352 5744672 1614112 5744704 +1614512 5744696 1614368 5745192 1614384 5745232 1614784 5744800 +1614128 5745040 1614384 5745232 1614368 5745192 1614352 5744672 +1614368 5745192 1614784 5744800 1614512 5744696 1614352 5744672 +1614384 5745232 1614600 5745384 1614784 5744800 1614368 5745192 +1614784 5744800 1614512 5744696 1614368 5745192 1614600 5745384 +1614600 5745384 1614928 5744824 1614784 5744800 1614368 5745192 +1614368 5745192 1614128 5745040 1614384 5745232 1614600 5745384 +1614384 5745232 1614368 5745192 1614128 5745040 1614392 5745696 +1614368 5745192 1614384 5745112 1614352 5744672 1614128 5745040 +1614352 5744672 1614112 5744704 1614128 5745040 1614384 5745112 +1614368 5745192 1614384 5745112 1614128 5745040 1614384 5745232 +1614368 5745192 1614512 5744696 1614384 5745112 1614128 5745040 +1614512 5744696 1614384 5745112 1614368 5745192 1614784 5744800 +1614368 5745192 1614600 5745384 1614784 5744800 1614384 5745112 +1614384 5745112 1614128 5745040 1614368 5745192 1614600 5745384 +1614784 5744800 1614512 5744696 1614384 5745112 1614600 5745384 +1614600 5745384 1614928 5744824 1614784 5744800 1614384 5745112 +1614368 5745192 1614384 5745232 1614600 5745384 1614384 5745112 +1614600 5745384 1614784 5744800 1614384 5745112 1614384 5745232 +1614368 5745192 1614384 5745232 1614384 5745112 1614128 5745040 +1614384 5745112 1614512 5744696 1614352 5744672 1614128 5745040 +1614512 5744696 1614352 5744672 1614384 5745112 1614784 5744800 +1614384 5745112 1614384 5745056 1614352 5744672 1614128 5745040 +1614352 5744672 1614112 5744704 1614128 5745040 1614384 5745056 +1614384 5745112 1614384 5745056 1614128 5745040 1614368 5745192 +1614384 5745112 1614512 5744696 1614384 5745056 1614128 5745040 +1614512 5744696 1614384 5745056 1614384 5745112 1614784 5744800 +1614384 5745112 1614600 5745384 1614784 5744800 1614384 5745056 +1614512 5744696 1614352 5744672 1614384 5745056 1614784 5744800 +1614384 5745056 1614128 5745040 1614384 5745112 1614784 5744800 +1614384 5745056 1614512 5744696 1614352 5744672 1614128 5745040 +1614384 5745056 1614416 5745032 1614512 5744696 1614352 5744672 +1614384 5745056 1614784 5744800 1614416 5745032 1614352 5744672 +1614416 5745032 1614784 5744800 1614512 5744696 1614352 5744672 +1614784 5744800 1614416 5745032 1614384 5745056 1614384 5745112 +1614784 5744800 1614416 5745032 1614384 5745112 1614600 5745384 +1614384 5745112 1614384 5745232 1614600 5745384 1614416 5745032 +1614416 5745032 1614352 5744672 1614384 5745056 1614384 5745112 +1614784 5744800 1614416 5745032 1614600 5745384 1614928 5744824 +1614784 5744800 1614512 5744696 1614416 5745032 1614600 5745384 +1614416 5745032 1614384 5745056 1614384 5745112 1614600 5745384 +1614384 5745056 1614416 5745032 1614352 5744672 1614128 5745040 +1614416 5745032 1614448 5744968 1614512 5744696 1614352 5744672 +1614416 5745032 1614448 5744968 1614352 5744672 1614384 5745056 +1614448 5744968 1614512 5744696 1614352 5744672 1614384 5745056 +1614416 5745032 1614784 5744800 1614448 5744968 1614384 5745056 +1614784 5744800 1614448 5744968 1614416 5745032 1614600 5745384 +1614784 5744800 1614512 5744696 1614448 5744968 1614600 5745384 +1614416 5745032 1614384 5745112 1614600 5745384 1614448 5744968 +1614784 5744800 1614448 5744968 1614600 5745384 1614928 5744824 +1614448 5744968 1614384 5745056 1614416 5745032 1614600 5745384 +1614448 5744968 1614784 5744800 1614512 5744696 1614352 5744672 +1614352 5744672 1614128 5745040 1614384 5745056 1614448 5744968 +1614352 5744672 1614112 5744704 1614128 5745040 1614448 5744968 +1614384 5745056 1614416 5745032 1614448 5744968 1614128 5745040 +1614128 5745040 1614384 5745112 1614384 5745056 1614448 5744968 +1614352 5744672 1614128 5745040 1614448 5744968 1614512 5744696 +1614448 5744968 1614488 5744960 1614784 5744800 1614512 5744696 +1614448 5744968 1614600 5745384 1614488 5744960 1614512 5744696 +1614488 5744960 1614600 5745384 1614784 5744800 1614512 5744696 +1614784 5744800 1614488 5744960 1614600 5745384 1614928 5744824 +1614600 5745384 1614488 5744960 1614448 5744968 1614416 5745032 +1614488 5744960 1614512 5744696 1614448 5744968 1614416 5745032 +1614600 5745384 1614784 5744800 1614488 5744960 1614416 5745032 +1614600 5745384 1614488 5744960 1614416 5745032 1614384 5745112 +1614448 5744968 1614488 5744960 1614512 5744696 1614352 5744672 +1614488 5744960 1614513 5744972 1614784 5744800 1614512 5744696 +1614488 5744960 1614513 5744972 1614512 5744696 1614448 5744968 +1614488 5744960 1614600 5745384 1614513 5744972 1614512 5744696 +1614600 5745384 1614513 5744972 1614488 5744960 1614416 5745032 +1614513 5744972 1614512 5744696 1614488 5744960 1614416 5745032 +1614513 5744972 1614600 5745384 1614784 5744800 1614512 5744696 +1614600 5745384 1614513 5744972 1614416 5745032 1614384 5745112 +1614513 5744972 1614488 5744960 1614416 5745032 1614384 5745112 +1614600 5745384 1614513 5744972 1614384 5745112 1614384 5745232 +1614784 5744800 1614513 5744972 1614600 5745384 1614928 5744824 +1614488 5744960 1614448 5744968 1614416 5745032 1614513 5744972 +1614488 5744960 1614448 5744968 1614513 5744972 1614512 5744696 +1614416 5745032 1614384 5745112 1614513 5744972 1614448 5744968 +1614600 5745384 1614784 5744800 1614513 5744972 1614384 5745112 +1614416 5745032 1614384 5745056 1614384 5745112 1614513 5744972 +1614513 5744972 1614538 5744984 1614784 5744800 1614512 5744696 +1614513 5744972 1614538 5744984 1614512 5744696 1614488 5744960 +1614538 5744984 1614600 5745384 1614784 5744800 1614512 5744696 +1614784 5744800 1614538 5744984 1614600 5745384 1614928 5744824 +1614600 5745384 1614808 5745520 1614928 5744824 1614538 5744984 +1614784 5744800 1614512 5744696 1614538 5744984 1614928 5744824 +1614538 5744984 1614513 5744972 1614600 5745384 1614928 5744824 +1614513 5744972 1614600 5745384 1614538 5744984 1614512 5744696 +1614600 5745384 1614538 5744984 1614513 5744972 1614384 5745112 +1614600 5745384 1614538 5744984 1614384 5745112 1614384 5745232 +1614600 5745384 1614928 5744824 1614538 5744984 1614384 5745232 +1614513 5744972 1614416 5745032 1614384 5745112 1614538 5744984 +1614513 5744972 1614448 5744968 1614416 5745032 1614538 5744984 +1614384 5745112 1614368 5745192 1614384 5745232 1614538 5744984 +1614538 5744984 1614512 5744696 1614513 5744972 1614416 5745032 +1614538 5744984 1614416 5745032 1614384 5745112 1614384 5745232 +1614416 5745032 1614384 5745056 1614384 5745112 1614538 5744984 +1614928 5744824 1614563 5744996 1614600 5745384 1614808 5745520 +1614600 5745384 1614563 5744996 1614538 5744984 1614384 5745232 +1614538 5744984 1614384 5745112 1614384 5745232 1614563 5744996 +1614384 5745232 1614600 5745384 1614563 5744996 1614384 5745112 +1614600 5745384 1614928 5744824 1614563 5744996 1614384 5745232 +1614563 5744996 1614928 5744824 1614538 5744984 1614384 5745112 +1614538 5744984 1614563 5744996 1614928 5744824 1614784 5744800 +1614538 5744984 1614563 5744996 1614784 5744800 1614512 5744696 +1614563 5744996 1614600 5745384 1614928 5744824 1614784 5744800 +1614538 5744984 1614384 5745112 1614563 5744996 1614784 5744800 +1614384 5745112 1614368 5745192 1614384 5745232 1614563 5744996 +1614538 5744984 1614416 5745032 1614384 5745112 1614563 5744996 +1614384 5745112 1614384 5745232 1614563 5744996 1614416 5745032 +1614538 5744984 1614416 5745032 1614563 5744996 1614784 5744800 +1614538 5744984 1614513 5744972 1614416 5745032 1614563 5744996 +1614416 5745032 1614384 5745056 1614384 5745112 1614563 5744996 +1614928 5744824 1614588 5745008 1614600 5745384 1614808 5745520 +1614928 5744824 1614588 5745008 1614808 5745520 1614992 5744816 +1614563 5744996 1614588 5745008 1614928 5744824 1614784 5744800 +1614563 5744996 1614600 5745384 1614588 5745008 1614784 5744800 +1614600 5745384 1614588 5745008 1614563 5744996 1614384 5745232 +1614563 5744996 1614384 5745112 1614384 5745232 1614588 5745008 +1614563 5744996 1614416 5745032 1614384 5745112 1614588 5745008 +1614588 5745008 1614784 5744800 1614563 5744996 1614384 5745112 +1614384 5745232 1614600 5745384 1614588 5745008 1614384 5745112 +1614928 5744824 1614784 5744800 1614588 5745008 1614808 5745520 +1614563 5744996 1614588 5745008 1614784 5744800 1614538 5744984 +1614384 5745112 1614368 5745192 1614384 5745232 1614588 5745008 +1614588 5745008 1614384 5745232 1614600 5745384 1614808 5745520 +1615240 5744880 1615288 5745352 1615424 5745368 1615648 5745352 +1615424 5745368 1615288 5745352 1614808 5745520 1614928 5745632 +1615424 5745368 1615240 5744880 1615288 5745352 1614928 5745632 +1615288 5745352 1615240 5744880 1614808 5745520 1614928 5745632 +1615424 5745368 1615288 5745352 1614928 5745632 1615024 5745792 +1615424 5745368 1615240 5744880 1615288 5745352 1615024 5745792 +1615288 5745352 1614808 5745520 1614928 5745632 1615024 5745792 +1615424 5745368 1615288 5745352 1615024 5745792 1615384 5745896 +1615024 5745792 1615336 5745936 1615384 5745896 1615288 5745352 +1615424 5745368 1615240 5744880 1615288 5745352 1615384 5745896 +1615288 5745352 1614928 5745632 1615024 5745792 1615384 5745896 +1614808 5745520 1615288 5745352 1615240 5744880 1614992 5744816 +1614808 5745520 1614928 5745632 1615288 5745352 1614992 5744816 +1615240 5744880 1615016 5744760 1614992 5744816 1615288 5745352 +1614808 5745520 1615288 5745352 1614992 5744816 1614928 5744824 +1614808 5745520 1614928 5745632 1615288 5745352 1614928 5744824 +1614808 5745520 1615288 5745352 1614928 5744824 1614588 5745008 +1615288 5745352 1615240 5744880 1614992 5744816 1614928 5744824 +1615424 5745368 1615288 5745352 1615384 5745896 1615664 5745704 +1615288 5745352 1615424 5745368 1615240 5744880 1614992 5744816 +1614588 5745008 1614600 5745384 1614808 5745520 1615288 5745352 +1615288 5745352 1614588 5745008 1614808 5745520 1614928 5745632 +1614928 5744824 1614784 5744800 1614588 5745008 1615288 5745352 +1614928 5744824 1614588 5745008 1615288 5745352 1614992 5744816 +1616016 5747072 1616072 5746808 1616080 5746328 1616016 5746352 +1616072 5746808 1616616 5746536 1616080 5746328 1616016 5746352 +1616016 5747072 1616616 5746536 1616072 5746808 1616016 5746352 +1616016 5747072 1616072 5746808 1616016 5746352 1615824 5746976 +1616016 5747072 1616616 5746536 1616072 5746808 1615824 5746976 +1616072 5746808 1616080 5746328 1616016 5746352 1615824 5746976 +1616016 5746352 1615648 5746688 1615824 5746976 1616072 5746808 +1616016 5746352 1615936 5746352 1615648 5746688 1616072 5746808 +1616016 5746352 1615936 5746352 1616072 5746808 1616080 5746328 +1615824 5746976 1616016 5747072 1616072 5746808 1615648 5746688 +1615648 5746688 1615824 5746976 1616072 5746808 1615936 5746352 +1616616 5746536 1616072 5746808 1616016 5747072 1616352 5747304 +1616616 5746536 1616080 5746328 1616072 5746808 1616352 5747304 +1616072 5746808 1615824 5746976 1616016 5747072 1616352 5747304 +1616616 5746536 1616072 5746808 1616352 5747304 1616688 5746584 +1616616 5746536 1616080 5746328 1616072 5746808 1616688 5746584 +1616072 5746808 1616016 5747072 1616352 5747304 1616688 5746584 +1616080 5746328 1616072 5746808 1616616 5746536 1616480 5746336 +1616072 5746808 1616688 5746584 1616616 5746536 1616480 5746336 +1616080 5746328 1616016 5746352 1616072 5746808 1616480 5746336 +1615648 5746688 1615680 5746848 1615824 5746976 1616072 5746808 +1615680 5746848 1615744 5746928 1615824 5746976 1616072 5746808 +1615824 5746976 1616016 5747072 1616072 5746808 1615744 5746928 +1615648 5746688 1615680 5746848 1616072 5746808 1615936 5746352 +1615680 5746848 1615744 5746928 1616072 5746808 1615648 5746688 +1615936 5746352 1615640 5746528 1615648 5746688 1616072 5746808 +1616080 5746328 1616072 5746808 1616480 5746336 1616144 5746240 +1616352 5747304 1616456 5747352 1616688 5746584 1616072 5746808 +1615936 5746352 1616040 5746760 1616072 5746808 1616016 5746352 +1615936 5746352 1615648 5746688 1616040 5746760 1616016 5746352 +1616040 5746760 1615648 5746688 1616072 5746808 1616016 5746352 +1616072 5746808 1616080 5746328 1616016 5746352 1616040 5746760 +1616072 5746808 1616080 5746328 1616040 5746760 1615648 5746688 +1616072 5746808 1616480 5746336 1616080 5746328 1616040 5746760 +1616072 5746808 1616480 5746336 1616040 5746760 1615648 5746688 +1616016 5746352 1615936 5746352 1616040 5746760 1616080 5746328 +1616080 5746328 1616016 5746352 1616040 5746760 1616480 5746336 +1616072 5746808 1616040 5746760 1615648 5746688 1615680 5746848 +1616072 5746808 1616480 5746336 1616040 5746760 1615680 5746848 +1616040 5746760 1615936 5746352 1615648 5746688 1615680 5746848 +1616072 5746808 1616616 5746536 1616480 5746336 1616040 5746760 +1616072 5746808 1616688 5746584 1616616 5746536 1616040 5746760 +1616072 5746808 1616616 5746536 1616040 5746760 1615680 5746848 +1616480 5746336 1616080 5746328 1616040 5746760 1616616 5746536 +1616072 5746808 1616040 5746760 1615680 5746848 1615744 5746928 +1616072 5746808 1616616 5746536 1616040 5746760 1615744 5746928 +1616072 5746808 1616040 5746760 1615744 5746928 1615824 5746976 +1616072 5746808 1616616 5746536 1616040 5746760 1615824 5746976 +1616072 5746808 1616040 5746760 1615824 5746976 1616016 5747072 +1616040 5746760 1615648 5746688 1615680 5746848 1615744 5746928 +1616040 5746760 1615680 5746848 1615744 5746928 1615824 5746976 +1615648 5746688 1616040 5746760 1615936 5746352 1615640 5746528 +1616040 5746760 1616016 5746352 1615936 5746352 1615640 5746528 +1615648 5746688 1615680 5746848 1616040 5746760 1615640 5746528 +1615936 5746352 1615792 5746256 1615640 5746528 1616040 5746760 +1616480 5746336 1616144 5746240 1616080 5746328 1616040 5746760 +1615936 5746352 1616016 5746736 1616040 5746760 1616016 5746352 +1615936 5746352 1615640 5746528 1616016 5746736 1616016 5746352 +1616016 5746736 1615640 5746528 1616040 5746760 1616016 5746352 +1616040 5746760 1616080 5746328 1616016 5746352 1616016 5746736 +1616016 5746352 1615936 5746352 1616016 5746736 1616080 5746328 +1616040 5746760 1616080 5746328 1616016 5746736 1615640 5746528 +1616040 5746760 1616480 5746336 1616080 5746328 1616016 5746736 +1616040 5746760 1616016 5746736 1615640 5746528 1615648 5746688 +1616016 5746736 1615936 5746352 1615640 5746528 1615648 5746688 +1616040 5746760 1616080 5746328 1616016 5746736 1615648 5746688 +1616040 5746760 1616016 5746736 1615648 5746688 1615680 5746848 +1616040 5746760 1616080 5746328 1616016 5746736 1615680 5746848 +1616040 5746760 1616016 5746736 1615680 5746848 1615744 5746928 +1616040 5746760 1616080 5746328 1616016 5746736 1615744 5746928 +1616016 5746736 1615648 5746688 1615680 5746848 1615744 5746928 +1616040 5746760 1616016 5746736 1615744 5746928 1615824 5746976 +1616040 5746760 1616080 5746328 1616016 5746736 1615824 5746976 +1616040 5746760 1616016 5746736 1615824 5746976 1616072 5746808 +1616016 5746736 1615680 5746848 1615744 5746928 1615824 5746976 +1616016 5746736 1615640 5746528 1615648 5746688 1615680 5746848 +1615640 5746528 1616016 5746736 1615936 5746352 1615792 5746256 +1616016 5746352 1616000 5746648 1616016 5746736 1616080 5746328 +1616000 5746648 1615936 5746352 1616016 5746736 1616080 5746328 +1616016 5746736 1616000 5746648 1615936 5746352 1615640 5746528 +1616016 5746736 1616000 5746648 1615640 5746528 1615648 5746688 +1616016 5746736 1616080 5746328 1616000 5746648 1615648 5746688 +1616000 5746648 1615936 5746352 1615640 5746528 1615648 5746688 +1616016 5746352 1615936 5746352 1616000 5746648 1616080 5746328 +1616000 5746648 1616016 5746352 1615936 5746352 1615640 5746528 +1616016 5746736 1616040 5746760 1616080 5746328 1616000 5746648 +1616080 5746328 1616016 5746352 1616000 5746648 1616040 5746760 +1616016 5746736 1616040 5746760 1616000 5746648 1615648 5746688 +1616040 5746760 1616480 5746336 1616080 5746328 1616000 5746648 +1616080 5746328 1616016 5746352 1616000 5746648 1616480 5746336 +1616040 5746760 1616616 5746536 1616480 5746336 1616000 5746648 +1616040 5746760 1616616 5746536 1616000 5746648 1616016 5746736 +1616480 5746336 1616080 5746328 1616000 5746648 1616616 5746536 +1616040 5746760 1616072 5746808 1616616 5746536 1616000 5746648 +1616016 5746736 1616000 5746648 1615648 5746688 1615680 5746848 +1615936 5746352 1615792 5746256 1615640 5746528 1616000 5746648 +1616480 5746336 1616144 5746240 1616080 5746328 1616000 5746648 +1616616 5746536 1616088 5746600 1616000 5746648 1616040 5746760 +1616088 5746600 1616480 5746336 1616000 5746648 1616040 5746760 +1616000 5746648 1616016 5746736 1616040 5746760 1616088 5746600 +1616040 5746760 1616616 5746536 1616088 5746600 1616016 5746736 +1616000 5746648 1616016 5746736 1616088 5746600 1616480 5746336 +1616000 5746648 1616088 5746600 1616480 5746336 1616080 5746328 +1616000 5746648 1616088 5746600 1616080 5746328 1616016 5746352 +1616000 5746648 1616088 5746600 1616016 5746352 1615936 5746352 +1616088 5746600 1616080 5746328 1616016 5746352 1615936 5746352 +1616088 5746600 1616616 5746536 1616480 5746336 1616080 5746328 +1616000 5746648 1616088 5746600 1615936 5746352 1615640 5746528 +1616000 5746648 1616016 5746736 1616088 5746600 1615936 5746352 +1616088 5746600 1616480 5746336 1616080 5746328 1616016 5746352 +1616616 5746536 1616480 5746336 1616088 5746600 1616040 5746760 +1616616 5746536 1616088 5746600 1616040 5746760 1616072 5746808 +1616616 5746536 1616088 5746600 1616072 5746808 1616688 5746584 +1616088 5746600 1616016 5746736 1616040 5746760 1616072 5746808 +1616616 5746536 1616480 5746336 1616088 5746600 1616072 5746808 +1616480 5746336 1616144 5746240 1616080 5746328 1616088 5746600 +1616088 5746600 1616176 5746576 1616480 5746336 1616080 5746328 +1616088 5746600 1616616 5746536 1616176 5746576 1616080 5746328 +1616088 5746600 1616176 5746576 1616080 5746328 1616016 5746352 +1616616 5746536 1616176 5746576 1616088 5746600 1616072 5746808 +1616616 5746536 1616176 5746576 1616072 5746808 1616688 5746584 +1616176 5746576 1616080 5746328 1616088 5746600 1616072 5746808 +1616616 5746536 1616480 5746336 1616176 5746576 1616072 5746808 +1616176 5746576 1616616 5746536 1616480 5746336 1616080 5746328 +1616088 5746600 1616040 5746760 1616072 5746808 1616176 5746576 +1616088 5746600 1616016 5746736 1616040 5746760 1616176 5746576 +1616088 5746600 1616040 5746760 1616176 5746576 1616080 5746328 +1616072 5746808 1616616 5746536 1616176 5746576 1616040 5746760 +1616480 5746336 1616144 5746240 1616080 5746328 1616176 5746576 +1616080 5746328 1616088 5746600 1616176 5746576 1616144 5746240 +1616480 5746336 1616376 5746120 1616144 5746240 1616176 5746576 +1616480 5746336 1616144 5746240 1616176 5746576 1616616 5746536 +1616616 5746536 1616280 5746608 1616072 5746808 1616688 5746584 +1616280 5746608 1616176 5746576 1616072 5746808 1616688 5746584 +1616072 5746808 1616352 5747304 1616688 5746584 1616280 5746608 +1616688 5746584 1616616 5746536 1616280 5746608 1616352 5747304 +1616072 5746808 1616352 5747304 1616280 5746608 1616176 5746576 +1616176 5746576 1616280 5746608 1616616 5746536 1616480 5746336 +1616176 5746576 1616072 5746808 1616280 5746608 1616480 5746336 +1616616 5746536 1616480 5746336 1616280 5746608 1616688 5746584 +1616072 5746808 1616280 5746608 1616176 5746576 1616040 5746760 +1616176 5746576 1616280 5746608 1616480 5746336 1616144 5746240 +1616072 5746808 1616016 5747072 1616352 5747304 1616280 5746608 +1616352 5747304 1616456 5747352 1616688 5746584 1616280 5746608 +1616280 5746608 1616384 5746672 1616688 5746584 1616616 5746536 +1616280 5746608 1616352 5747304 1616384 5746672 1616616 5746536 +1616352 5747304 1616384 5746672 1616280 5746608 1616072 5746808 +1616384 5746672 1616616 5746536 1616280 5746608 1616072 5746808 +1616280 5746608 1616176 5746576 1616072 5746808 1616384 5746672 +1616280 5746608 1616384 5746672 1616616 5746536 1616480 5746336 +1616384 5746672 1616688 5746584 1616616 5746536 1616480 5746336 +1616280 5746608 1616072 5746808 1616384 5746672 1616480 5746336 +1616280 5746608 1616384 5746672 1616480 5746336 1616176 5746576 +1616384 5746672 1616352 5747304 1616688 5746584 1616616 5746536 +1616352 5747304 1616688 5746584 1616384 5746672 1616072 5746808 +1616352 5747304 1616384 5746672 1616072 5746808 1616016 5747072 +1616688 5746584 1616384 5746672 1616352 5747304 1616456 5747352 +1616688 5746584 1616616 5746536 1616384 5746672 1616456 5747352 +1616384 5746672 1616072 5746808 1616352 5747304 1616456 5747352 +1616688 5746584 1616384 5746672 1616456 5747352 1616952 5746624 +1616384 5746672 1616512 5746784 1616688 5746584 1616616 5746536 +1616384 5746672 1616512 5746784 1616616 5746536 1616480 5746336 +1616384 5746672 1616456 5747352 1616512 5746784 1616616 5746536 +1616512 5746784 1616456 5747352 1616688 5746584 1616616 5746536 +1616688 5746584 1616512 5746784 1616456 5747352 1616952 5746624 +1616688 5746584 1616616 5746536 1616512 5746784 1616952 5746624 +1616512 5746784 1616384 5746672 1616456 5747352 1616952 5746624 +1616688 5746584 1616512 5746784 1616952 5746624 1616824 5746568 +1616456 5747352 1617184 5746832 1616952 5746624 1616512 5746784 +1616456 5747352 1617184 5746832 1616512 5746784 1616384 5746672 +1616456 5747352 1616480 5747376 1617184 5746832 1616512 5746784 +1616480 5747376 1616824 5747528 1617184 5746832 1616512 5746784 +1616456 5747352 1616480 5747376 1616512 5746784 1616384 5746672 +1616824 5747528 1617256 5746856 1617184 5746832 1616512 5746784 +1616480 5747376 1616824 5747528 1616512 5746784 1616456 5747352 +1617184 5746832 1616952 5746624 1616512 5746784 1616824 5747528 +1616952 5746624 1616688 5746584 1616512 5746784 1617184 5746832 +1616456 5747352 1616512 5746784 1616384 5746672 1616352 5747304 +1616512 5746784 1616616 5746536 1616384 5746672 1616352 5747304 +1616384 5746672 1616072 5746808 1616352 5747304 1616512 5746784 +1616384 5746672 1616280 5746608 1616072 5746808 1616512 5746784 +1616384 5746672 1616072 5746808 1616512 5746784 1616616 5746536 +1616456 5747352 1616480 5747376 1616512 5746784 1616352 5747304 +1616072 5746808 1616016 5747072 1616352 5747304 1616512 5746784 +1616072 5746808 1615824 5746976 1616016 5747072 1616512 5746784 +1616072 5746808 1616016 5747072 1616512 5746784 1616384 5746672 +1616352 5747304 1616456 5747352 1616512 5746784 1616016 5747072 +1616824 5747528 1616584 5746896 1616512 5746784 1616480 5747376 +1616584 5746896 1617184 5746832 1616512 5746784 1616480 5747376 +1617184 5746832 1616584 5746896 1616824 5747528 1617256 5746856 +1616512 5746784 1616456 5747352 1616480 5747376 1616584 5746896 +1616480 5747376 1616824 5747528 1616584 5746896 1616456 5747352 +1616512 5746784 1616456 5747352 1616584 5746896 1617184 5746832 +1616512 5746784 1616352 5747304 1616456 5747352 1616584 5746896 +1616512 5746784 1616352 5747304 1616584 5746896 1617184 5746832 +1616456 5747352 1616480 5747376 1616584 5746896 1616352 5747304 +1616512 5746784 1616584 5746896 1617184 5746832 1616952 5746624 +1616584 5746896 1616824 5747528 1617184 5746832 1616952 5746624 +1616512 5746784 1616352 5747304 1616584 5746896 1616952 5746624 +1616824 5747528 1617184 5746832 1616584 5746896 1616480 5747376 +1616512 5746784 1616584 5746896 1616952 5746624 1616688 5746584 +1616512 5746784 1616584 5746896 1616688 5746584 1616616 5746536 +1616512 5746784 1616352 5747304 1616584 5746896 1616688 5746584 +1616952 5746624 1616824 5746568 1616688 5746584 1616584 5746896 +1616584 5746896 1617184 5746832 1616952 5746624 1616824 5746568 +1616688 5746584 1616512 5746784 1616584 5746896 1616824 5746568 +1616512 5746784 1616016 5747072 1616352 5747304 1616584 5746896 +1616512 5746784 1616016 5747072 1616584 5746896 1616688 5746584 +1616352 5747304 1616456 5747352 1616584 5746896 1616016 5747072 +1616512 5746784 1616072 5746808 1616016 5747072 1616584 5746896 +1616584 5746896 1616608 5746944 1617184 5746832 1616952 5746624 +1617184 5746832 1616608 5746944 1616824 5747528 1617256 5746856 +1616584 5746896 1616608 5746944 1616952 5746624 1616824 5746568 +1616584 5746896 1616824 5747528 1616608 5746944 1616952 5746624 +1616824 5747528 1616608 5746944 1616584 5746896 1616480 5747376 +1616824 5747528 1617184 5746832 1616608 5746944 1616480 5747376 +1616584 5746896 1616456 5747352 1616480 5747376 1616608 5746944 +1616584 5746896 1616352 5747304 1616456 5747352 1616608 5746944 +1616456 5747352 1616480 5747376 1616608 5746944 1616352 5747304 +1616584 5746896 1616016 5747072 1616352 5747304 1616608 5746944 +1616608 5746944 1616952 5746624 1616584 5746896 1616352 5747304 +1616480 5747376 1616824 5747528 1616608 5746944 1616456 5747352 +1616608 5746944 1616824 5747528 1617184 5746832 1616952 5746624 +1616608 5746944 1616624 5747024 1616824 5747528 1617184 5746832 +1616608 5746944 1616480 5747376 1616624 5747024 1617184 5746832 +1616624 5747024 1616480 5747376 1616824 5747528 1617184 5746832 +1616824 5747528 1617256 5746856 1617184 5746832 1616624 5747024 +1616480 5747376 1616624 5747024 1616608 5746944 1616456 5747352 +1616624 5747024 1617184 5746832 1616608 5746944 1616456 5747352 +1616608 5746944 1616352 5747304 1616456 5747352 1616624 5747024 +1616608 5746944 1616352 5747304 1616624 5747024 1617184 5746832 +1616608 5746944 1616584 5746896 1616352 5747304 1616624 5747024 +1616608 5746944 1616584 5746896 1616624 5747024 1617184 5746832 +1616352 5747304 1616456 5747352 1616624 5747024 1616584 5746896 +1616584 5746896 1616016 5747072 1616352 5747304 1616624 5747024 +1616456 5747352 1616480 5747376 1616624 5747024 1616352 5747304 +1616608 5746944 1616624 5747024 1617184 5746832 1616952 5746624 +1616480 5747376 1616824 5747528 1616624 5747024 1616456 5747352 +1616456 5747352 1616600 5747080 1616624 5747024 1616352 5747304 +1616624 5747024 1616584 5746896 1616352 5747304 1616600 5747080 +1616584 5746896 1616016 5747072 1616352 5747304 1616600 5747080 +1616624 5747024 1616608 5746944 1616584 5746896 1616600 5747080 +1616584 5746896 1616352 5747304 1616600 5747080 1616608 5746944 +1616352 5747304 1616456 5747352 1616600 5747080 1616584 5746896 +1616600 5747080 1616480 5747376 1616624 5747024 1616608 5746944 +1616624 5747024 1616600 5747080 1616480 5747376 1616824 5747528 +1616624 5747024 1616600 5747080 1616824 5747528 1617184 5746832 +1616624 5747024 1616608 5746944 1616600 5747080 1616824 5747528 +1616600 5747080 1616456 5747352 1616480 5747376 1616824 5747528 +1616456 5747352 1616480 5747376 1616600 5747080 1616352 5747304 +1616584 5746896 1616536 5747128 1616600 5747080 1616608 5746944 +1616584 5746896 1616352 5747304 1616536 5747128 1616608 5746944 +1616352 5747304 1616536 5747128 1616584 5746896 1616016 5747072 +1616352 5747304 1616600 5747080 1616536 5747128 1616016 5747072 +1616536 5747128 1616608 5746944 1616584 5746896 1616016 5747072 +1616600 5747080 1616624 5747024 1616608 5746944 1616536 5747128 +1616600 5747080 1616536 5747128 1616352 5747304 1616456 5747352 +1616536 5747128 1616016 5747072 1616352 5747304 1616456 5747352 +1616584 5746896 1616512 5746784 1616016 5747072 1616536 5747128 +1616584 5746896 1616512 5746784 1616536 5747128 1616608 5746944 +1616016 5747072 1616352 5747304 1616536 5747128 1616512 5746784 +1616512 5746784 1616072 5746808 1616016 5747072 1616536 5747128 +1616072 5746808 1615824 5746976 1616016 5747072 1616536 5747128 +1616512 5746784 1616384 5746672 1616072 5746808 1616536 5747128 +1616016 5747072 1616352 5747304 1616536 5747128 1616072 5746808 +1616512 5746784 1616072 5746808 1616536 5747128 1616584 5746896 +1616536 5747128 1616456 5747352 1616600 5747080 1616608 5746944 +1616600 5747080 1616536 5747128 1616456 5747352 1616480 5747376 +1616536 5747128 1616352 5747304 1616456 5747352 1616480 5747376 +1616600 5747080 1616536 5747128 1616480 5747376 1616824 5747528 +1616600 5747080 1616608 5746944 1616536 5747128 1616480 5747376 +1616536 5747128 1616400 5747120 1616352 5747304 1616456 5747352 +1616536 5747128 1616016 5747072 1616400 5747120 1616456 5747352 +1616400 5747120 1616016 5747072 1616352 5747304 1616456 5747352 +1616016 5747072 1616400 5747120 1616536 5747128 1616072 5746808 +1616016 5747072 1616400 5747120 1616072 5746808 1615824 5746976 +1616400 5747120 1616456 5747352 1616536 5747128 1616072 5746808 +1616016 5747072 1616352 5747304 1616400 5747120 1616072 5746808 +1616536 5747128 1616512 5746784 1616072 5746808 1616400 5747120 +1616536 5747128 1616512 5746784 1616400 5747120 1616456 5747352 +1616512 5746784 1616384 5746672 1616072 5746808 1616400 5747120 +1616384 5746672 1616280 5746608 1616072 5746808 1616400 5747120 +1616072 5746808 1616016 5747072 1616400 5747120 1616384 5746672 +1616512 5746784 1616384 5746672 1616400 5747120 1616536 5747128 +1616536 5747128 1616400 5747120 1616456 5747352 1616480 5747376 +1616536 5747128 1616584 5746896 1616512 5746784 1616400 5747120 +1616536 5747128 1616584 5746896 1616400 5747120 1616456 5747352 +1616536 5747128 1616608 5746944 1616584 5746896 1616400 5747120 +1616536 5747128 1616600 5747080 1616608 5746944 1616400 5747120 +1616536 5747128 1616608 5746944 1616400 5747120 1616456 5747352 +1616512 5746784 1616384 5746672 1616400 5747120 1616584 5746896 +1616584 5746896 1616512 5746784 1616400 5747120 1616608 5746944 +1616016 5747072 1616256 5747032 1616072 5746808 1615824 5746976 +1616400 5747120 1616256 5747032 1616016 5747072 1616352 5747304 +1616400 5747120 1616256 5747032 1616352 5747304 1616456 5747352 +1616400 5747120 1616072 5746808 1616256 5747032 1616352 5747304 +1616256 5747032 1616072 5746808 1616016 5747072 1616352 5747304 +1616072 5746808 1616256 5747032 1616400 5747120 1616384 5746672 +1616256 5747032 1616352 5747304 1616400 5747120 1616384 5746672 +1616072 5746808 1616016 5747072 1616256 5747032 1616384 5746672 +1616072 5746808 1616256 5747032 1616384 5746672 1616280 5746608 +1616400 5747120 1616512 5746784 1616384 5746672 1616256 5747032 +1616400 5747120 1616512 5746784 1616256 5747032 1616352 5747304 +1616384 5746672 1616072 5746808 1616256 5747032 1616512 5746784 +1616400 5747120 1616584 5746896 1616512 5746784 1616256 5747032 +1616400 5747120 1616584 5746896 1616256 5747032 1616352 5747304 +1616512 5746784 1616384 5746672 1616256 5747032 1616584 5746896 +1616400 5747120 1616608 5746944 1616584 5746896 1616256 5747032 +1604840 5714480 1608712 5714128 1657088 5639464 1657056 5639384 +1604840 5714480 1609432 5714744 1608712 5714128 1657056 5639384 +1608712 5714128 1609432 5714744 1657088 5639464 1657056 5639384 +1609432 5714744 1608712 5714128 1604840 5714480 1609408 5714752 +1608712 5714128 1657056 5639384 1604840 5714480 1609408 5714752 +1609432 5714744 1657088 5639464 1608712 5714128 1609408 5714752 +1604840 5714480 1608712 5714128 1657056 5639384 1599875 5599875 +1604840 5714480 1609408 5714752 1608712 5714128 1599875 5599875 +1608712 5714128 1657088 5639464 1657056 5639384 1599875 5599875 +1604840 5714480 1608712 5714128 1599875 5599875 1604784 5714488 +1657056 5639384 1657088 5639296 1599875 5599875 1608712 5714128 +1657088 5639464 1608712 5714128 1609432 5714744 1663776 5646144 +1657088 5639464 1657056 5639384 1608712 5714128 1663776 5646144 +1609432 5714744 1609480 5714768 1663776 5646144 1608712 5714128 +1657088 5639464 1608712 5714128 1663776 5646144 1663688 5645984 +1608712 5714128 1609408 5714752 1609432 5714744 1609480 5714768 +1609480 5714768 1663880 5646248 1663776 5646144 1608712 5714128 +1609480 5714768 1663880 5646248 1608712 5714128 1609432 5714744 +1609480 5714768 1609512 5714824 1663880 5646248 1608712 5714128 +1663776 5646144 1657088 5639464 1608712 5714128 1663880 5646248 +1604840 5714480 1604944 5714528 1609408 5714752 1608712 5714128 +1604840 5714480 1604944 5714528 1608712 5714128 1599875 5599875 +1604944 5714528 1605040 5714624 1609408 5714752 1608712 5714128 +1605040 5714624 1605128 5714784 1609408 5714752 1608712 5714128 +1605128 5714784 1609368 5714824 1609408 5714752 1608712 5714128 +1605128 5714784 1609368 5714824 1608712 5714128 1605040 5714624 +1605128 5714784 1609352 5714856 1609368 5714824 1608712 5714128 +1609368 5714824 1609408 5714752 1608712 5714128 1609352 5714856 +1605128 5714784 1609352 5714856 1608712 5714128 1605040 5714624 +1605128 5714784 1609320 5714928 1609352 5714856 1608712 5714128 +1605128 5714784 1609320 5714928 1608712 5714128 1605040 5714624 +1605128 5714784 1605152 5714888 1609320 5714928 1608712 5714128 +1605128 5714784 1605152 5714888 1608712 5714128 1605040 5714624 +1609320 5714928 1609352 5714856 1608712 5714128 1605152 5714888 +1609352 5714856 1609368 5714824 1608712 5714128 1609320 5714928 +1605152 5714888 1605152 5714944 1609320 5714928 1608712 5714128 +1605152 5714888 1605152 5714944 1608712 5714128 1605128 5714784 +1609320 5714928 1609352 5714856 1608712 5714128 1605152 5714944 +1605040 5714624 1605128 5714784 1608712 5714128 1604944 5714528 +1605152 5714944 1609320 5714984 1609320 5714928 1608712 5714128 +1609320 5714928 1609352 5714856 1608712 5714128 1609320 5714984 +1605152 5714944 1609320 5714984 1608712 5714128 1605152 5714888 +1609408 5714752 1609432 5714744 1608712 5714128 1609368 5714824 +1605152 5714888 1605136 5714928 1605152 5714944 1608712 5714128 +1605152 5714944 1609360 5715080 1609320 5714984 1608712 5714128 +1604944 5714528 1605040 5714624 1608712 5714128 1604840 5714480 +1605152 5714944 1608408 5714352 1608712 5714128 1605152 5714888 +1608712 5714128 1605128 5714784 1605152 5714888 1608408 5714352 +1608712 5714128 1605040 5714624 1605128 5714784 1608408 5714352 +1605128 5714784 1605152 5714888 1608408 5714352 1605040 5714624 +1605152 5714888 1605152 5714944 1608408 5714352 1605128 5714784 +1608712 5714128 1604944 5714528 1605040 5714624 1608408 5714352 +1605040 5714624 1605128 5714784 1608408 5714352 1604944 5714528 +1605152 5714944 1609320 5714984 1608408 5714352 1605152 5714888 +1608712 5714128 1608408 5714352 1609320 5714984 1609320 5714928 +1608712 5714128 1608408 5714352 1609320 5714928 1609352 5714856 +1608712 5714128 1608408 5714352 1609352 5714856 1609368 5714824 +1608408 5714352 1609320 5714984 1609320 5714928 1609352 5714856 +1608408 5714352 1605152 5714944 1609320 5714984 1609320 5714928 +1605152 5714944 1608408 5714352 1605152 5714888 1605136 5714928 +1608408 5714352 1609352 5714856 1608712 5714128 1604944 5714528 +1609320 5714984 1608408 5714352 1605152 5714944 1609360 5715080 +1608408 5714352 1605152 5714888 1605152 5714944 1609360 5715080 +1605152 5714944 1609368 5715096 1609360 5715080 1608408 5714352 +1605152 5714944 1609368 5715096 1608408 5714352 1605152 5714888 +1605152 5714944 1615352 5735280 1609368 5715096 1608408 5714352 +1609320 5714984 1609320 5714928 1608408 5714352 1609360 5715080 +1609360 5715080 1609320 5714984 1608408 5714352 1609368 5715096 +1608712 5714128 1604840 5714480 1604944 5714528 1608408 5714352 +1605152 5714944 1608160 5714424 1608408 5714352 1605152 5714888 +1605152 5714944 1609368 5715096 1608160 5714424 1605152 5714888 +1608408 5714352 1605128 5714784 1605152 5714888 1608160 5714424 +1608408 5714352 1605040 5714624 1605128 5714784 1608160 5714424 +1608408 5714352 1604944 5714528 1605040 5714624 1608160 5714424 +1605040 5714624 1605128 5714784 1608160 5714424 1604944 5714528 +1605128 5714784 1605152 5714888 1608160 5714424 1605040 5714624 +1608408 5714352 1608712 5714128 1604944 5714528 1608160 5714424 +1604944 5714528 1605040 5714624 1608160 5714424 1608712 5714128 +1605152 5714888 1605152 5714944 1608160 5714424 1605128 5714784 +1608408 5714352 1608160 5714424 1609368 5715096 1609360 5715080 +1608160 5714424 1605152 5714944 1609368 5715096 1609360 5715080 +1608160 5714424 1609360 5715080 1608408 5714352 1608712 5714128 +1609368 5715096 1608160 5714424 1605152 5714944 1615352 5735280 +1608408 5714352 1608160 5714424 1609360 5715080 1609320 5714984 +1608160 5714424 1609368 5715096 1609360 5715080 1609320 5714984 +1608408 5714352 1608712 5714128 1608160 5714424 1609320 5714984 +1608408 5714352 1608160 5714424 1609320 5714984 1609320 5714928 +1605152 5714944 1608160 5714424 1605152 5714888 1605136 5714928 +1608712 5714128 1604840 5714480 1604944 5714528 1608160 5714424 +1604944 5714528 1605040 5714624 1608160 5714424 1604840 5714480 +1608712 5714128 1599875 5599875 1604840 5714480 1608160 5714424 +1608712 5714128 1604840 5714480 1608160 5714424 1608408 5714352 +1608160 5714424 1607984 5714464 1609368 5715096 1609360 5715080 +1608160 5714424 1605152 5714944 1607984 5714464 1609360 5715080 +1605152 5714944 1607984 5714464 1608160 5714424 1605152 5714888 +1607984 5714464 1609360 5715080 1608160 5714424 1605152 5714888 +1608160 5714424 1605128 5714784 1605152 5714888 1607984 5714464 +1608160 5714424 1605128 5714784 1607984 5714464 1609360 5715080 +1605152 5714888 1605152 5714944 1607984 5714464 1605128 5714784 +1608160 5714424 1605040 5714624 1605128 5714784 1607984 5714464 +1608160 5714424 1604944 5714528 1605040 5714624 1607984 5714464 +1608160 5714424 1604840 5714480 1604944 5714528 1607984 5714464 +1604944 5714528 1605040 5714624 1607984 5714464 1604840 5714480 +1608160 5714424 1604840 5714480 1607984 5714464 1609360 5715080 +1605040 5714624 1605128 5714784 1607984 5714464 1604944 5714528 +1605128 5714784 1605152 5714888 1607984 5714464 1605040 5714624 +1608160 5714424 1607984 5714464 1609360 5715080 1609320 5714984 +1605152 5714944 1609368 5715096 1607984 5714464 1605152 5714888 +1607984 5714464 1605152 5714944 1609368 5715096 1609360 5715080 +1609368 5715096 1607984 5714464 1605152 5714944 1615352 5735280 +1605152 5714944 1607984 5714464 1605152 5714888 1605136 5714928 +1608160 5714424 1608712 5714128 1604840 5714480 1607984 5714464 +1604840 5714480 1604944 5714528 1607984 5714464 1608712 5714128 +1608160 5714424 1608712 5714128 1607984 5714464 1609360 5715080 +1608712 5714128 1599875 5599875 1604840 5714480 1607984 5714464 +1608160 5714424 1608408 5714352 1608712 5714128 1607984 5714464 +1607984 5714464 1607888 5714416 1604840 5714480 1604944 5714528 +1607984 5714464 1607888 5714416 1604944 5714528 1605040 5714624 +1607888 5714416 1604840 5714480 1604944 5714528 1605040 5714624 +1604840 5714480 1607888 5714416 1608712 5714128 1599875 5599875 +1607984 5714464 1607888 5714416 1605040 5714624 1605128 5714784 +1607888 5714416 1604944 5714528 1605040 5714624 1605128 5714784 +1607984 5714464 1607888 5714416 1605128 5714784 1605152 5714888 +1607984 5714464 1607888 5714416 1605152 5714888 1605152 5714944 +1607888 5714416 1605040 5714624 1605128 5714784 1605152 5714888 +1607888 5714416 1605128 5714784 1605152 5714888 1605152 5714944 +1607984 5714464 1608712 5714128 1607888 5714416 1605152 5714944 +1607984 5714464 1607888 5714416 1605152 5714944 1609368 5715096 +1607888 5714416 1608712 5714128 1604840 5714480 1604944 5714528 +1605152 5714888 1605136 5714928 1605152 5714944 1607888 5714416 +1608712 5714128 1607888 5714416 1607984 5714464 1608160 5714424 +1608712 5714128 1604840 5714480 1607888 5714416 1608160 5714424 +1608712 5714128 1607888 5714416 1608160 5714424 1608408 5714352 +1608712 5714128 1604840 5714480 1607888 5714416 1608408 5714352 +1607888 5714416 1605152 5714944 1607984 5714464 1608160 5714424 +1607888 5714416 1607984 5714464 1608160 5714424 1608408 5714352 +1608712 5714128 1607840 5714384 1607888 5714416 1608408 5714352 +1607840 5714384 1604840 5714480 1607888 5714416 1608408 5714352 +1608712 5714128 1604840 5714480 1607840 5714384 1608408 5714352 +1604840 5714480 1607840 5714384 1608712 5714128 1599875 5599875 +1607888 5714416 1608160 5714424 1608408 5714352 1607840 5714384 +1607888 5714416 1608160 5714424 1607840 5714384 1604840 5714480 +1608408 5714352 1608712 5714128 1607840 5714384 1608160 5714424 +1607888 5714416 1607840 5714384 1604840 5714480 1604944 5714528 +1607888 5714416 1607840 5714384 1604944 5714528 1605040 5714624 +1607888 5714416 1607840 5714384 1605040 5714624 1605128 5714784 +1607840 5714384 1604944 5714528 1605040 5714624 1605128 5714784 +1607888 5714416 1608160 5714424 1607840 5714384 1605128 5714784 +1607840 5714384 1608712 5714128 1604840 5714480 1604944 5714528 +1607840 5714384 1604840 5714480 1604944 5714528 1605040 5714624 +1607888 5714416 1607840 5714384 1605128 5714784 1605152 5714888 +1607840 5714384 1605040 5714624 1605128 5714784 1605152 5714888 +1607888 5714416 1608160 5714424 1607840 5714384 1605152 5714888 +1607888 5714416 1607840 5714384 1605152 5714888 1605152 5714944 +1607888 5714416 1607840 5714384 1605152 5714944 1607984 5714464 +1607888 5714416 1608160 5714424 1607840 5714384 1605152 5714944 +1607840 5714384 1605128 5714784 1605152 5714888 1605152 5714944 +1605152 5714888 1605136 5714928 1605152 5714944 1607840 5714384 +1607888 5714416 1607984 5714464 1608160 5714424 1607840 5714384 +1607840 5714384 1607816 5714344 1604840 5714480 1604944 5714528 +1607840 5714384 1607816 5714344 1604944 5714528 1605040 5714624 +1607840 5714384 1607816 5714344 1605040 5714624 1605128 5714784 +1607840 5714384 1607816 5714344 1605128 5714784 1605152 5714888 +1607816 5714344 1605040 5714624 1605128 5714784 1605152 5714888 +1607816 5714344 1604840 5714480 1604944 5714528 1605040 5714624 +1607816 5714344 1604944 5714528 1605040 5714624 1605128 5714784 +1608712 5714128 1607816 5714344 1607840 5714384 1608408 5714352 +1607840 5714384 1608160 5714424 1608408 5714352 1607816 5714344 +1608408 5714352 1608712 5714128 1607816 5714344 1608160 5714424 +1607840 5714384 1608160 5714424 1607816 5714344 1605152 5714888 +1607816 5714344 1608712 5714128 1604840 5714480 1604944 5714528 +1604840 5714480 1607816 5714344 1608712 5714128 1599875 5599875 +1607840 5714384 1607816 5714344 1605152 5714888 1605152 5714944 +1607816 5714344 1605128 5714784 1605152 5714888 1605152 5714944 +1607840 5714384 1608160 5714424 1607816 5714344 1605152 5714944 +1607840 5714384 1607888 5714416 1608160 5714424 1607816 5714344 +1608160 5714424 1608408 5714352 1607816 5714344 1607888 5714416 +1607840 5714384 1607888 5714416 1607816 5714344 1605152 5714944 +1607840 5714384 1607816 5714344 1605152 5714944 1607888 5714416 +1608712 5714128 1604840 5714480 1607816 5714344 1608408 5714352 +1605152 5714888 1605136 5714928 1605152 5714944 1607816 5714344 +1607888 5714416 1607984 5714464 1608160 5714424 1607816 5714344 +1607816 5714344 1607760 5714256 1604840 5714480 1604944 5714528 +1607816 5714344 1607760 5714256 1604944 5714528 1605040 5714624 +1607816 5714344 1607760 5714256 1605040 5714624 1605128 5714784 +1607816 5714344 1607760 5714256 1605128 5714784 1605152 5714888 +1607816 5714344 1607760 5714256 1605152 5714888 1605152 5714944 +1607760 5714256 1605128 5714784 1605152 5714888 1605152 5714944 +1607760 5714256 1604944 5714528 1605040 5714624 1605128 5714784 +1607760 5714256 1605040 5714624 1605128 5714784 1605152 5714888 +1607760 5714256 1604840 5714480 1604944 5714528 1605040 5714624 +1607816 5714344 1608712 5714128 1607760 5714256 1605152 5714944 +1604840 5714480 1607760 5714256 1608712 5714128 1599875 5599875 +1607816 5714344 1607760 5714256 1605152 5714944 1607840 5714384 +1608712 5714128 1607760 5714256 1607816 5714344 1608408 5714352 +1607816 5714344 1608160 5714424 1608408 5714352 1607760 5714256 +1607816 5714344 1607888 5714416 1608160 5714424 1607760 5714256 +1607760 5714256 1605152 5714944 1607816 5714344 1608160 5714424 +1608408 5714352 1608712 5714128 1607760 5714256 1608160 5714424 +1607760 5714256 1608712 5714128 1604840 5714480 1604944 5714528 +1608712 5714128 1604840 5714480 1607760 5714256 1608408 5714352 +1605152 5714888 1605136 5714928 1605152 5714944 1607760 5714256 +1608712 5714128 1607736 5714184 1604840 5714480 1607760 5714256 +1604840 5714480 1604944 5714528 1607760 5714256 1607736 5714184 +1604944 5714528 1605040 5714624 1607760 5714256 1607736 5714184 +1605040 5714624 1605128 5714784 1607760 5714256 1607736 5714184 +1605128 5714784 1605152 5714888 1607760 5714256 1607736 5714184 +1605152 5714888 1605152 5714944 1607760 5714256 1607736 5714184 +1605128 5714784 1605152 5714888 1607736 5714184 1605040 5714624 +1605040 5714624 1605128 5714784 1607736 5714184 1604944 5714528 +1607760 5714256 1608712 5714128 1607736 5714184 1605152 5714888 +1604944 5714528 1605040 5714624 1607736 5714184 1604840 5714480 +1607736 5714184 1599875 5599875 1604840 5714480 1604944 5714528 +1608712 5714128 1607736 5714184 1607760 5714256 1608408 5714352 +1607736 5714184 1605152 5714888 1607760 5714256 1608408 5714352 +1607760 5714256 1608160 5714424 1608408 5714352 1607736 5714184 +1607760 5714256 1607816 5714344 1608160 5714424 1607736 5714184 +1607760 5714256 1608160 5714424 1607736 5714184 1605152 5714888 +1608408 5714352 1608712 5714128 1607736 5714184 1608160 5714424 +1608712 5714128 1599875 5599875 1607736 5714184 1608408 5714352 +1604840 5714480 1607736 5714184 1599875 5599875 1604784 5714488 +1599875 5599875 1607736 5714184 1608712 5714128 1657056 5639384 +1608712 5714128 1657088 5639464 1657056 5639384 1607736 5714184 +1599875 5599875 1604840 5714480 1607736 5714184 1657056 5639384 +1607736 5714184 1608408 5714352 1608712 5714128 1657056 5639384 +1599875 5599875 1607736 5714184 1657056 5639384 1657088 5639296 +1607736 5714184 1607720 5714064 1604840 5714480 1604944 5714528 +1607736 5714184 1607720 5714064 1604944 5714528 1605040 5714624 +1607736 5714184 1607720 5714064 1605040 5714624 1605128 5714784 +1607736 5714184 1607720 5714064 1605128 5714784 1605152 5714888 +1607720 5714064 1604944 5714528 1605040 5714624 1605128 5714784 +1607720 5714064 1604840 5714480 1604944 5714528 1605040 5714624 +1599875 5599875 1607720 5714064 1607736 5714184 1657056 5639384 +1607736 5714184 1657056 5639384 1607720 5714064 1605128 5714784 +1607720 5714064 1599875 5599875 1604840 5714480 1604944 5714528 +1599875 5599875 1604840 5714480 1607720 5714064 1657056 5639384 +1604840 5714480 1607720 5714064 1599875 5599875 1604784 5714488 +1599875 5599875 1607720 5714064 1657056 5639384 1657088 5639296 +1607736 5714184 1608712 5714128 1657056 5639384 1607720 5714064 +1608712 5714128 1657088 5639464 1657056 5639384 1607720 5714064 +1608712 5714128 1663776 5646144 1657088 5639464 1607720 5714064 +1657056 5639384 1599875 5599875 1607720 5714064 1657088 5639464 +1607736 5714184 1608712 5714128 1607720 5714064 1605128 5714784 +1607736 5714184 1608408 5714352 1608712 5714128 1607720 5714064 +1607736 5714184 1608160 5714424 1608408 5714352 1607720 5714064 +1607736 5714184 1607760 5714256 1608160 5714424 1607720 5714064 +1607736 5714184 1608160 5714424 1607720 5714064 1605128 5714784 +1608408 5714352 1608712 5714128 1607720 5714064 1608160 5714424 +1608712 5714128 1657088 5639464 1607720 5714064 1608408 5714352 +1657056 5639384 1607728 5713968 1607720 5714064 1657088 5639464 +1607720 5714064 1608712 5714128 1657088 5639464 1607728 5713968 +1608712 5714128 1663776 5646144 1657088 5639464 1607728 5713968 +1657088 5639464 1657056 5639384 1607728 5713968 1608712 5714128 +1607728 5713968 1599875 5599875 1607720 5714064 1608712 5714128 +1607720 5714064 1607728 5713968 1599875 5599875 1604840 5714480 +1607720 5714064 1607728 5713968 1604840 5714480 1604944 5714528 +1607720 5714064 1607728 5713968 1604944 5714528 1605040 5714624 +1607720 5714064 1607728 5713968 1605040 5714624 1605128 5714784 +1607728 5713968 1604840 5714480 1604944 5714528 1605040 5714624 +1607720 5714064 1608712 5714128 1607728 5713968 1605040 5714624 +1607728 5713968 1599875 5599875 1604840 5714480 1604944 5714528 +1657056 5639384 1599875 5599875 1607728 5713968 1657088 5639464 +1607728 5713968 1657056 5639384 1599875 5599875 1604840 5714480 +1599875 5599875 1604784 5714488 1604840 5714480 1607728 5713968 +1604840 5714480 1604944 5714528 1607728 5713968 1604784 5714488 +1599875 5599875 1604784 5714488 1607728 5713968 1657056 5639384 +1599875 5599875 1604744 5714504 1604784 5714488 1607728 5713968 +1599875 5599875 1607728 5713968 1657056 5639384 1657088 5639296 +1607720 5714064 1608408 5714352 1608712 5714128 1607728 5713968 +1608712 5714128 1657088 5639464 1607728 5713968 1608408 5714352 +1607720 5714064 1608160 5714424 1608408 5714352 1607728 5713968 +1607720 5714064 1607736 5714184 1608160 5714424 1607728 5713968 +1607720 5714064 1608160 5714424 1607728 5713968 1605040 5714624 +1608408 5714352 1608712 5714128 1607728 5713968 1608160 5714424 +1657056 5639384 1607760 5713904 1607728 5713968 1657088 5639464 +1657056 5639384 1599875 5599875 1607760 5713904 1657088 5639464 +1607728 5713968 1608712 5714128 1657088 5639464 1607760 5713904 +1608712 5714128 1663776 5646144 1657088 5639464 1607760 5713904 +1607728 5713968 1608408 5714352 1608712 5714128 1607760 5713904 +1608712 5714128 1657088 5639464 1607760 5713904 1608408 5714352 +1607760 5713904 1599875 5599875 1607728 5713968 1608408 5714352 +1657088 5639464 1657056 5639384 1607760 5713904 1608712 5714128 +1607728 5713968 1607760 5713904 1599875 5599875 1604784 5714488 +1607728 5713968 1608408 5714352 1607760 5713904 1604784 5714488 +1607760 5713904 1657056 5639384 1599875 5599875 1604784 5714488 +1607728 5713968 1607760 5713904 1604784 5714488 1604840 5714480 +1607728 5713968 1607760 5713904 1604840 5714480 1604944 5714528 +1607728 5713968 1607760 5713904 1604944 5714528 1605040 5714624 +1607728 5713968 1608408 5714352 1607760 5713904 1604944 5714528 +1607760 5713904 1599875 5599875 1604784 5714488 1604840 5714480 +1607760 5713904 1604784 5714488 1604840 5714480 1604944 5714528 +1599875 5599875 1604744 5714504 1604784 5714488 1607760 5713904 +1599875 5599875 1607760 5713904 1657056 5639384 1657088 5639296 +1607728 5713968 1608160 5714424 1608408 5714352 1607760 5713904 +1608408 5714352 1608712 5714128 1607760 5713904 1608160 5714424 +1607728 5713968 1607720 5714064 1608160 5714424 1607760 5713904 +1607720 5714064 1607736 5714184 1608160 5714424 1607760 5713904 +1607728 5713968 1607720 5714064 1607760 5713904 1604944 5714528 +1608160 5714424 1608408 5714352 1607760 5713904 1607720 5714064 +1657088 5639464 1607800 5713888 1608712 5714128 1663776 5646144 +1608712 5714128 1607800 5713888 1607760 5713904 1608408 5714352 +1607760 5713904 1608160 5714424 1608408 5714352 1607800 5713888 +1607800 5713888 1657088 5639464 1607760 5713904 1608160 5714424 +1608712 5714128 1657088 5639464 1607800 5713888 1608408 5714352 +1608408 5714352 1608712 5714128 1607800 5713888 1608160 5714424 +1607760 5713904 1607800 5713888 1657088 5639464 1657056 5639384 +1607760 5713904 1608160 5714424 1607800 5713888 1657056 5639384 +1607760 5713904 1607800 5713888 1657056 5639384 1599875 5599875 +1607760 5713904 1608160 5714424 1607800 5713888 1599875 5599875 +1607800 5713888 1608712 5714128 1657088 5639464 1657056 5639384 +1607800 5713888 1657088 5639464 1657056 5639384 1599875 5599875 +1607760 5713904 1607800 5713888 1599875 5599875 1604784 5714488 +1607760 5713904 1608160 5714424 1607800 5713888 1604784 5714488 +1607800 5713888 1657056 5639384 1599875 5599875 1604784 5714488 +1607760 5713904 1607800 5713888 1604784 5714488 1604840 5714480 +1607760 5713904 1608160 5714424 1607800 5713888 1604840 5714480 +1607800 5713888 1599875 5599875 1604784 5714488 1604840 5714480 +1607760 5713904 1607800 5713888 1604840 5714480 1604944 5714528 +1599875 5599875 1604744 5714504 1604784 5714488 1607800 5713888 +1657056 5639384 1657088 5639296 1599875 5599875 1607800 5713888 +1607760 5713904 1607720 5714064 1608160 5714424 1607800 5713888 +1608160 5714424 1608408 5714352 1607800 5713888 1607720 5714064 +1607760 5713904 1607720 5714064 1607800 5713888 1604840 5714480 +1607720 5714064 1607736 5714184 1608160 5714424 1607800 5713888 +1608160 5714424 1608408 5714352 1607800 5713888 1607736 5714184 +1607736 5714184 1607760 5714256 1608160 5714424 1607800 5713888 +1607760 5713904 1607728 5713968 1607720 5714064 1607800 5713888 +1607760 5713904 1607728 5713968 1607800 5713888 1604840 5714480 +1607720 5714064 1607736 5714184 1607800 5713888 1607728 5713968 +1657088 5639464 1607912 5713864 1608712 5714128 1663776 5646144 +1607800 5713888 1607912 5713864 1657088 5639464 1657056 5639384 +1607800 5713888 1608712 5714128 1607912 5713864 1657056 5639384 +1608712 5714128 1607912 5713864 1607800 5713888 1608408 5714352 +1607912 5713864 1657056 5639384 1607800 5713888 1608408 5714352 +1607912 5713864 1608712 5714128 1657088 5639464 1657056 5639384 +1608712 5714128 1657088 5639464 1607912 5713864 1608408 5714352 +1607800 5713888 1608160 5714424 1608408 5714352 1607912 5713864 +1607800 5713888 1607736 5714184 1608160 5714424 1607912 5713864 +1607800 5713888 1607736 5714184 1607912 5713864 1657056 5639384 +1608408 5714352 1608712 5714128 1607912 5713864 1608160 5714424 +1607736 5714184 1607760 5714256 1608160 5714424 1607912 5713864 +1607760 5714256 1607816 5714344 1608160 5714424 1607912 5713864 +1607816 5714344 1607888 5714416 1608160 5714424 1607912 5713864 +1607736 5714184 1607760 5714256 1607912 5713864 1607800 5713888 +1607760 5714256 1607816 5714344 1607912 5713864 1607736 5714184 +1607800 5713888 1607720 5714064 1607736 5714184 1607912 5713864 +1607736 5714184 1607760 5714256 1607912 5713864 1607720 5714064 +1607800 5713888 1607720 5714064 1607912 5713864 1657056 5639384 +1608160 5714424 1608408 5714352 1607912 5713864 1607816 5714344 +1607800 5713888 1607912 5713864 1657056 5639384 1599875 5599875 +1607800 5713888 1607912 5713864 1599875 5599875 1604784 5714488 +1607912 5713864 1657088 5639464 1657056 5639384 1599875 5599875 +1607800 5713888 1607720 5714064 1607912 5713864 1599875 5599875 +1657056 5639384 1657088 5639296 1599875 5599875 1607912 5713864 +1607800 5713888 1607728 5713968 1607720 5714064 1607912 5713864 +1608408 5714352 1607968 5713904 1607912 5713864 1608160 5714424 +1607968 5713904 1608712 5714128 1607912 5713864 1608160 5714424 +1607912 5713864 1607968 5713904 1608712 5714128 1657088 5639464 +1607912 5713864 1607816 5714344 1608160 5714424 1607968 5713904 +1607816 5714344 1607888 5714416 1608160 5714424 1607968 5713904 +1607912 5713864 1607760 5714256 1607816 5714344 1607968 5713904 +1608160 5714424 1608408 5714352 1607968 5713904 1607816 5714344 +1607912 5713864 1607760 5714256 1607968 5713904 1608712 5714128 +1607912 5713864 1607736 5714184 1607760 5714256 1607968 5713904 +1607760 5714256 1607816 5714344 1607968 5713904 1607736 5714184 +1607912 5713864 1607720 5714064 1607736 5714184 1607968 5713904 +1607912 5713864 1607720 5714064 1607968 5713904 1608712 5714128 +1607736 5714184 1607760 5714256 1607968 5713904 1607720 5714064 +1607912 5713864 1607800 5713888 1607720 5714064 1607968 5713904 +1607720 5714064 1607736 5714184 1607968 5713904 1607800 5713888 +1607912 5713864 1607800 5713888 1607968 5713904 1608712 5714128 +1607816 5714344 1608160 5714424 1607968 5713904 1607760 5714256 +1608408 5714352 1608712 5714128 1607968 5713904 1608160 5714424 +1607800 5713888 1607728 5713968 1607720 5714064 1607968 5713904 +1607720 5714064 1607736 5714184 1607968 5713904 1607728 5713968 +1607800 5713888 1607728 5713968 1607968 5713904 1607912 5713864 +1607800 5713888 1607760 5713904 1607728 5713968 1607968 5713904 +1657088 5639464 1608192 5713888 1608712 5714128 1663776 5646144 +1607912 5713864 1608192 5713888 1657088 5639464 1657056 5639384 +1608712 5714128 1608192 5713888 1607912 5713864 1607968 5713904 +1608712 5714128 1608192 5713888 1607968 5713904 1608408 5714352 +1608192 5713888 1607912 5713864 1607968 5713904 1608408 5714352 +1608192 5713888 1657088 5639464 1607912 5713864 1607968 5713904 +1607968 5713904 1608160 5714424 1608408 5714352 1608192 5713888 +1607968 5713904 1607816 5714344 1608160 5714424 1608192 5713888 +1607968 5713904 1608160 5714424 1608192 5713888 1607912 5713864 +1608408 5714352 1608712 5714128 1608192 5713888 1608160 5714424 +1608712 5714128 1657088 5639464 1608192 5713888 1608408 5714352 +1657088 5639464 1608312 5713840 1608712 5714128 1663776 5646144 +1608312 5713840 1608192 5713888 1608712 5714128 1663776 5646144 +1657088 5639464 1608312 5713840 1663776 5646144 1663688 5645984 +1608192 5713888 1608312 5713840 1657088 5639464 1607912 5713864 +1657088 5639464 1657056 5639384 1607912 5713864 1608312 5713840 +1657056 5639384 1599875 5599875 1607912 5713864 1608312 5713840 +1608192 5713888 1608312 5713840 1607912 5713864 1607968 5713904 +1607912 5713864 1608192 5713888 1608312 5713840 1657056 5639384 +1608192 5713888 1608712 5714128 1608312 5713840 1607912 5713864 +1608712 5714128 1608312 5713840 1608192 5713888 1608408 5714352 +1608712 5714128 1663776 5646144 1608312 5713840 1608408 5714352 +1608192 5713888 1608160 5714424 1608408 5714352 1608312 5713840 +1608312 5713840 1607912 5713864 1608192 5713888 1608408 5714352 +1657088 5639464 1657056 5639384 1608312 5713840 1663776 5646144 +1608712 5714128 1663880 5646248 1663776 5646144 1608312 5713840 +1608712 5714128 1663880 5646248 1608312 5713840 1608408 5714352 +1663776 5646144 1657088 5639464 1608312 5713840 1663880 5646248 +1608712 5714128 1609480 5714768 1663880 5646248 1608312 5713840 +1663776 5646144 1608344 5713792 1608312 5713840 1663880 5646248 +1608344 5713792 1657088 5639464 1608312 5713840 1663880 5646248 +1663776 5646144 1657088 5639464 1608344 5713792 1663880 5646248 +1657088 5639464 1608344 5713792 1663776 5646144 1663688 5645984 +1608312 5713840 1608344 5713792 1657088 5639464 1657056 5639384 +1608312 5713840 1663880 5646248 1608344 5713792 1657056 5639384 +1608344 5713792 1663776 5646144 1657088 5639464 1657056 5639384 +1608312 5713840 1608344 5713792 1657056 5639384 1607912 5713864 +1608312 5713840 1663880 5646248 1608344 5713792 1607912 5713864 +1657056 5639384 1599875 5599875 1607912 5713864 1608344 5713792 +1607912 5713864 1608312 5713840 1608344 5713792 1599875 5599875 +1599875 5599875 1607800 5713888 1607912 5713864 1608344 5713792 +1608312 5713840 1608344 5713792 1607912 5713864 1608192 5713888 +1608312 5713840 1663880 5646248 1608344 5713792 1608192 5713888 +1608344 5713792 1599875 5599875 1607912 5713864 1608192 5713888 +1607912 5713864 1607968 5713904 1608192 5713888 1608344 5713792 +1608344 5713792 1657088 5639464 1657056 5639384 1599875 5599875 +1657056 5639384 1657088 5639296 1599875 5599875 1608344 5713792 +1608312 5713840 1608712 5714128 1663880 5646248 1608344 5713792 +1608312 5713840 1608712 5714128 1608344 5713792 1608192 5713888 +1608312 5713840 1608408 5714352 1608712 5714128 1608344 5713792 +1663880 5646248 1663776 5646144 1608344 5713792 1608712 5714128 +1608712 5714128 1609480 5714768 1663880 5646248 1608344 5713792 +1663880 5646248 1663776 5646144 1608344 5713792 1609480 5714768 +1608712 5714128 1609432 5714744 1609480 5714768 1608344 5713792 +1609480 5714768 1609512 5714824 1663880 5646248 1608344 5713792 +1608712 5714128 1609480 5714768 1608344 5713792 1608312 5713840 +1599875 5599875 1608280 5713584 1608344 5713792 1657056 5639384 +1608280 5713584 1607912 5713864 1608344 5713792 1657056 5639384 +1599875 5599875 1607912 5713864 1608280 5713584 1657056 5639384 +1608344 5713792 1608280 5713584 1607912 5713864 1608192 5713888 +1608344 5713792 1657056 5639384 1608280 5713584 1608192 5713888 +1608280 5713584 1599875 5599875 1607912 5713864 1608192 5713888 +1607912 5713864 1607968 5713904 1608192 5713888 1608280 5713584 +1607912 5713864 1608280 5713584 1599875 5599875 1607800 5713888 +1607912 5713864 1608192 5713888 1608280 5713584 1607800 5713888 +1608280 5713584 1657056 5639384 1599875 5599875 1607800 5713888 +1599875 5599875 1604784 5714488 1607800 5713888 1608280 5713584 +1599875 5599875 1604784 5714488 1608280 5713584 1657056 5639384 +1607800 5713888 1607912 5713864 1608280 5713584 1604784 5714488 +1604784 5714488 1604840 5714480 1607800 5713888 1608280 5713584 +1604784 5714488 1604840 5714480 1608280 5713584 1599875 5599875 +1607800 5713888 1607912 5713864 1608280 5713584 1604840 5714480 +1604840 5714480 1607760 5713904 1607800 5713888 1608280 5713584 +1607800 5713888 1607912 5713864 1608280 5713584 1607760 5713904 +1604840 5714480 1607760 5713904 1608280 5713584 1604784 5714488 +1608344 5713792 1608280 5713584 1608192 5713888 1608312 5713840 +1608344 5713792 1657088 5639464 1657056 5639384 1608280 5713584 +1608344 5713792 1663776 5646144 1657088 5639464 1608280 5713584 +1608344 5713792 1663776 5646144 1608280 5713584 1608192 5713888 +1608344 5713792 1663880 5646248 1663776 5646144 1608280 5713584 +1663776 5646144 1657088 5639464 1608280 5713584 1663880 5646248 +1608344 5713792 1663880 5646248 1608280 5713584 1608192 5713888 +1608344 5713792 1609480 5714768 1663880 5646248 1608280 5713584 +1608344 5713792 1609480 5714768 1608280 5713584 1608192 5713888 +1663880 5646248 1663776 5646144 1608280 5713584 1609480 5714768 +1657056 5639384 1599875 5599875 1608280 5713584 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1608280 5713584 +1609480 5714768 1609512 5714824 1663880 5646248 1608280 5713584 +1608344 5713792 1608712 5714128 1609480 5714768 1608280 5713584 +1608344 5713792 1608712 5714128 1608280 5713584 1608192 5713888 +1609480 5714768 1663880 5646248 1608280 5713584 1608712 5714128 +1608712 5714128 1609432 5714744 1609480 5714768 1608280 5713584 +1657088 5639464 1657056 5639384 1608280 5713584 1663776 5646144 +1604840 5714480 1604944 5714528 1607760 5713904 1608280 5713584 +1599875 5599875 1604744 5714504 1604784 5714488 1608280 5713584 +1599875 5599875 1608280 5713584 1657056 5639384 1657088 5639296 +1608344 5713792 1608312 5713840 1608712 5714128 1608280 5713584 +1599875 5599875 1608224 5713456 1608280 5713584 1657056 5639384 +1608224 5713456 1604784 5714488 1608280 5713584 1657056 5639384 +1599875 5599875 1604784 5714488 1608224 5713456 1657056 5639384 +1608280 5713584 1608224 5713456 1604784 5714488 1604840 5714480 +1608280 5713584 1657056 5639384 1608224 5713456 1604840 5714480 +1608224 5713456 1599875 5599875 1604784 5714488 1604840 5714480 +1608280 5713584 1657088 5639464 1657056 5639384 1608224 5713456 +1608280 5713584 1657088 5639464 1608224 5713456 1604840 5714480 +1657056 5639384 1599875 5599875 1608224 5713456 1657088 5639464 +1608280 5713584 1608224 5713456 1604840 5714480 1607760 5713904 +1608280 5713584 1657088 5639464 1608224 5713456 1607760 5713904 +1608224 5713456 1604784 5714488 1604840 5714480 1607760 5713904 +1608280 5713584 1608224 5713456 1607760 5713904 1607800 5713888 +1608280 5713584 1657088 5639464 1608224 5713456 1607800 5713888 +1608280 5713584 1608224 5713456 1607800 5713888 1607912 5713864 +1608280 5713584 1608224 5713456 1607912 5713864 1608192 5713888 +1608280 5713584 1657088 5639464 1608224 5713456 1607912 5713864 +1608224 5713456 1604840 5714480 1607760 5713904 1607800 5713888 +1608224 5713456 1607760 5713904 1607800 5713888 1607912 5713864 +1608280 5713584 1663776 5646144 1657088 5639464 1608224 5713456 +1608280 5713584 1663880 5646248 1663776 5646144 1608224 5713456 +1608280 5713584 1609480 5714768 1663880 5646248 1608224 5713456 +1663880 5646248 1663776 5646144 1608224 5713456 1609480 5714768 +1608280 5713584 1609480 5714768 1608224 5713456 1607912 5713864 +1608280 5713584 1608712 5714128 1609480 5714768 1608224 5713456 +1609480 5714768 1663880 5646248 1608224 5713456 1608712 5714128 +1608280 5713584 1608712 5714128 1608224 5713456 1607912 5713864 +1608712 5714128 1609432 5714744 1609480 5714768 1608224 5713456 +1657088 5639464 1657056 5639384 1608224 5713456 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1608224 5713456 +1609480 5714768 1609512 5714824 1663880 5646248 1608224 5713456 +1608280 5713584 1608344 5713792 1608712 5714128 1608224 5713456 +1663776 5646144 1657088 5639464 1608224 5713456 1663880 5646248 +1604840 5714480 1604944 5714528 1607760 5713904 1608224 5713456 +1604784 5714488 1608224 5713456 1599875 5599875 1604744 5714504 +1599875 5599875 1608224 5713456 1657056 5639384 1657088 5639296 +1657056 5639384 1608216 5713344 1608224 5713456 1657088 5639464 +1608216 5713344 1599875 5599875 1608224 5713456 1657088 5639464 +1608224 5713456 1608216 5713344 1599875 5599875 1604784 5714488 +1608224 5713456 1608216 5713344 1604784 5714488 1604840 5714480 +1608224 5713456 1657088 5639464 1608216 5713344 1604840 5714480 +1608216 5713344 1599875 5599875 1604784 5714488 1604840 5714480 +1608216 5713344 1657056 5639384 1599875 5599875 1604784 5714488 +1657056 5639384 1599875 5599875 1608216 5713344 1657088 5639464 +1608224 5713456 1608216 5713344 1604840 5714480 1607760 5713904 +1608216 5713344 1604784 5714488 1604840 5714480 1607760 5713904 +1608224 5713456 1657088 5639464 1608216 5713344 1607760 5713904 +1608224 5713456 1663776 5646144 1657088 5639464 1608216 5713344 +1657088 5639464 1657056 5639384 1608216 5713344 1663776 5646144 +1608224 5713456 1663776 5646144 1608216 5713344 1607760 5713904 +1663776 5646144 1663688 5645984 1657088 5639464 1608216 5713344 +1608224 5713456 1608216 5713344 1607760 5713904 1607800 5713888 +1608224 5713456 1663776 5646144 1608216 5713344 1607800 5713888 +1608216 5713344 1604840 5714480 1607760 5713904 1607800 5713888 +1608224 5713456 1608216 5713344 1607800 5713888 1607912 5713864 +1608224 5713456 1663776 5646144 1608216 5713344 1607912 5713864 +1608224 5713456 1608216 5713344 1607912 5713864 1608280 5713584 +1608216 5713344 1607760 5713904 1607800 5713888 1607912 5713864 +1608224 5713456 1663880 5646248 1663776 5646144 1608216 5713344 +1608224 5713456 1609480 5714768 1663880 5646248 1608216 5713344 +1608224 5713456 1608712 5714128 1609480 5714768 1608216 5713344 +1609480 5714768 1663880 5646248 1608216 5713344 1608712 5714128 +1608224 5713456 1608712 5714128 1608216 5713344 1607912 5713864 +1608224 5713456 1608280 5713584 1608712 5714128 1608216 5713344 +1608712 5714128 1609480 5714768 1608216 5713344 1608280 5713584 +1608224 5713456 1608280 5713584 1608216 5713344 1607912 5713864 +1608712 5714128 1609432 5714744 1609480 5714768 1608216 5713344 +1663776 5646144 1657088 5639464 1608216 5713344 1663880 5646248 +1609480 5714768 1609512 5714824 1663880 5646248 1608216 5713344 +1608280 5713584 1608344 5713792 1608712 5714128 1608216 5713344 +1663880 5646248 1663776 5646144 1608216 5713344 1609480 5714768 +1604840 5714480 1604944 5714528 1607760 5713904 1608216 5713344 +1599875 5599875 1604744 5714504 1604784 5714488 1608216 5713344 +1599875 5599875 1608216 5713344 1657056 5639384 1657088 5639296 +1608216 5713344 1608240 5713248 1599875 5599875 1604784 5714488 +1608216 5713344 1608240 5713248 1604784 5714488 1604840 5714480 +1608216 5713344 1608240 5713248 1604840 5714480 1607760 5713904 +1608240 5713248 1604784 5714488 1604840 5714480 1607760 5713904 +1608240 5713248 1599875 5599875 1604784 5714488 1604840 5714480 +1608216 5713344 1657056 5639384 1608240 5713248 1607760 5713904 +1657056 5639384 1608240 5713248 1608216 5713344 1657088 5639464 +1608216 5713344 1663776 5646144 1657088 5639464 1608240 5713248 +1608240 5713248 1607760 5713904 1608216 5713344 1663776 5646144 +1657088 5639464 1657056 5639384 1608240 5713248 1663776 5646144 +1608240 5713248 1657056 5639384 1599875 5599875 1604784 5714488 +1657056 5639384 1599875 5599875 1608240 5713248 1657088 5639464 +1608216 5713344 1608240 5713248 1607760 5713904 1607800 5713888 +1608216 5713344 1663880 5646248 1663776 5646144 1608240 5713248 +1663776 5646144 1657088 5639464 1608240 5713248 1663880 5646248 +1608216 5713344 1663880 5646248 1608240 5713248 1607760 5713904 +1663776 5646144 1663688 5645984 1657088 5639464 1608240 5713248 +1608216 5713344 1609480 5714768 1663880 5646248 1608240 5713248 +1608216 5713344 1608712 5714128 1609480 5714768 1608240 5713248 +1608216 5713344 1608280 5713584 1608712 5714128 1608240 5713248 +1608712 5714128 1609480 5714768 1608240 5713248 1608280 5713584 +1608216 5713344 1608280 5713584 1608240 5713248 1607760 5713904 +1608216 5713344 1608224 5713456 1608280 5713584 1608240 5713248 +1608280 5713584 1608712 5714128 1608240 5713248 1608224 5713456 +1608216 5713344 1608224 5713456 1608240 5713248 1607760 5713904 +1608712 5714128 1609432 5714744 1609480 5714768 1608240 5713248 +1663880 5646248 1663776 5646144 1608240 5713248 1609480 5714768 +1609480 5714768 1609512 5714824 1663880 5646248 1608240 5713248 +1608280 5713584 1608344 5713792 1608712 5714128 1608240 5713248 +1609480 5714768 1663880 5646248 1608240 5713248 1608712 5714128 +1604840 5714480 1604944 5714528 1607760 5713904 1608240 5713248 +1599875 5599875 1604744 5714504 1604784 5714488 1608240 5713248 +1599875 5599875 1608240 5713248 1657056 5639384 1657088 5639296 +1608240 5713248 1608280 5713216 1663880 5646248 1663776 5646144 +1608240 5713248 1608280 5713216 1663776 5646144 1657088 5639464 +1608240 5713248 1608280 5713216 1657088 5639464 1657056 5639384 +1608280 5713216 1663776 5646144 1657088 5639464 1657056 5639384 +1608240 5713248 1609480 5714768 1608280 5713216 1657056 5639384 +1608240 5713248 1608280 5713216 1657056 5639384 1599875 5599875 +1608280 5713216 1657088 5639464 1657056 5639384 1599875 5599875 +1608240 5713248 1608280 5713216 1599875 5599875 1604784 5714488 +1608240 5713248 1608280 5713216 1604784 5714488 1604840 5714480 +1608240 5713248 1608280 5713216 1604840 5714480 1607760 5713904 +1608280 5713216 1599875 5599875 1604784 5714488 1604840 5714480 +1608240 5713248 1609480 5714768 1608280 5713216 1604840 5714480 +1608280 5713216 1657056 5639384 1599875 5599875 1604784 5714488 +1608280 5713216 1609480 5714768 1663880 5646248 1663776 5646144 +1608280 5713216 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1608280 5713216 +1663880 5646248 1608280 5713216 1609480 5714768 1609512 5714824 +1609480 5714768 1608280 5713216 1608240 5713248 1608712 5714128 +1608240 5713248 1608280 5713584 1608712 5714128 1608280 5713216 +1608240 5713248 1608224 5713456 1608280 5713584 1608280 5713216 +1608280 5713584 1608712 5714128 1608280 5713216 1608224 5713456 +1608280 5713216 1604840 5714480 1608240 5713248 1608224 5713456 +1609480 5714768 1663880 5646248 1608280 5713216 1608712 5714128 +1608240 5713248 1608216 5713344 1608224 5713456 1608280 5713216 +1608224 5713456 1608280 5713584 1608280 5713216 1608216 5713344 +1608240 5713248 1608216 5713344 1608280 5713216 1604840 5714480 +1609480 5714768 1608280 5713216 1608712 5714128 1609432 5714744 +1608280 5713584 1608344 5713792 1608712 5714128 1608280 5713216 +1608712 5714128 1609480 5714768 1608280 5713216 1608280 5713584 +1599875 5599875 1604744 5714504 1604784 5714488 1608280 5713216 +1657056 5639384 1657088 5639296 1599875 5599875 1608280 5713216 +1657056 5639384 1608280 5713176 1608280 5713216 1657088 5639464 +1608280 5713216 1663776 5646144 1657088 5639464 1608280 5713176 +1657088 5639464 1657056 5639384 1608280 5713176 1663776 5646144 +1608280 5713216 1608280 5713176 1599875 5599875 1604784 5714488 +1608280 5713216 1608280 5713176 1604784 5714488 1604840 5714480 +1608280 5713216 1608280 5713176 1604840 5714480 1608240 5713248 +1604840 5714480 1607760 5713904 1608240 5713248 1608280 5713176 +1608280 5713176 1604784 5714488 1604840 5714480 1608240 5713248 +1608280 5713176 1599875 5599875 1604784 5714488 1604840 5714480 +1608280 5713176 1608240 5713248 1608280 5713216 1663776 5646144 +1608280 5713176 1657056 5639384 1599875 5599875 1604784 5714488 +1657056 5639384 1599875 5599875 1608280 5713176 1657088 5639464 +1608280 5713216 1663880 5646248 1663776 5646144 1608280 5713176 +1663776 5646144 1657088 5639464 1608280 5713176 1663880 5646248 +1608280 5713216 1609480 5714768 1663880 5646248 1608280 5713176 +1608280 5713216 1609480 5714768 1608280 5713176 1608240 5713248 +1608280 5713216 1608712 5714128 1609480 5714768 1608280 5713176 +1609480 5714768 1663880 5646248 1608280 5713176 1608712 5714128 +1608280 5713216 1608712 5714128 1608280 5713176 1608240 5713248 +1608712 5714128 1609432 5714744 1609480 5714768 1608280 5713176 +1663880 5646248 1663776 5646144 1608280 5713176 1609480 5714768 +1663776 5646144 1663688 5645984 1657088 5639464 1608280 5713176 +1609480 5714768 1609512 5714824 1663880 5646248 1608280 5713176 +1608280 5713216 1608280 5713584 1608712 5714128 1608280 5713176 +1599875 5599875 1604744 5714504 1604784 5714488 1608280 5713176 +1599875 5599875 1608280 5713176 1657056 5639384 1657088 5639296 +1609480 5714768 1608336 5713136 1608280 5713176 1608712 5714128 +1609480 5714768 1663880 5646248 1608336 5713136 1608712 5714128 +1608280 5713176 1608280 5713216 1608712 5714128 1608336 5713136 +1608712 5714128 1609480 5714768 1608336 5713136 1608280 5713216 +1608336 5713136 1663880 5646248 1608280 5713176 1608280 5713216 +1609480 5714768 1608336 5713136 1608712 5714128 1609432 5714744 +1609480 5714768 1663880 5646248 1608336 5713136 1609432 5714744 +1608336 5713136 1608280 5713216 1608712 5714128 1609432 5714744 +1608280 5713176 1608336 5713136 1663880 5646248 1663776 5646144 +1608280 5713176 1608336 5713136 1663776 5646144 1657088 5639464 +1608280 5713176 1608336 5713136 1657088 5639464 1657056 5639384 +1608336 5713136 1663776 5646144 1657088 5639464 1657056 5639384 +1608336 5713136 1609480 5714768 1663880 5646248 1663776 5646144 +1608280 5713176 1608280 5713216 1608336 5713136 1657056 5639384 +1608280 5713176 1608336 5713136 1657056 5639384 1599875 5599875 +1608336 5713136 1657088 5639464 1657056 5639384 1599875 5599875 +1608280 5713176 1608336 5713136 1599875 5599875 1604784 5714488 +1608280 5713176 1608336 5713136 1604784 5714488 1604840 5714480 +1608280 5713176 1608336 5713136 1604840 5714480 1608240 5713248 +1608336 5713136 1599875 5599875 1604784 5714488 1604840 5714480 +1608280 5713176 1608280 5713216 1608336 5713136 1604840 5714480 +1608336 5713136 1657056 5639384 1599875 5599875 1604784 5714488 +1608336 5713136 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1608336 5713136 +1663880 5646248 1608336 5713136 1609480 5714768 1609512 5714824 +1608712 5714128 1609408 5714752 1609432 5714744 1608336 5713136 +1608280 5713216 1608280 5713584 1608712 5714128 1608336 5713136 +1608280 5713216 1608224 5713456 1608280 5713584 1608336 5713136 +1608712 5714128 1609432 5714744 1608336 5713136 1608280 5713584 +1608280 5713216 1608280 5713584 1608336 5713136 1608280 5713176 +1608280 5713584 1608344 5713792 1608712 5714128 1608336 5713136 +1599875 5599875 1604744 5714504 1604784 5714488 1608336 5713136 +1657056 5639384 1657088 5639296 1599875 5599875 1608336 5713136 +1608336 5713136 1608408 5713120 1663880 5646248 1663776 5646144 +1608336 5713136 1609480 5714768 1608408 5713120 1663776 5646144 +1609480 5714768 1608408 5713120 1608336 5713136 1609432 5714744 +1608408 5713120 1663776 5646144 1608336 5713136 1609432 5714744 +1608408 5713120 1609480 5714768 1663880 5646248 1663776 5646144 +1609480 5714768 1663880 5646248 1608408 5713120 1609432 5714744 +1608336 5713136 1608712 5714128 1609432 5714744 1608408 5713120 +1608336 5713136 1608712 5714128 1608408 5713120 1663776 5646144 +1609432 5714744 1609480 5714768 1608408 5713120 1608712 5714128 +1608336 5713136 1608280 5713584 1608712 5714128 1608408 5713120 +1608336 5713136 1608280 5713584 1608408 5713120 1663776 5646144 +1608712 5714128 1609432 5714744 1608408 5713120 1608280 5713584 +1608336 5713136 1608408 5713120 1663776 5646144 1657088 5639464 +1608336 5713136 1608408 5713120 1657088 5639464 1657056 5639384 +1608336 5713136 1608408 5713120 1657056 5639384 1599875 5599875 +1608408 5713120 1657088 5639464 1657056 5639384 1599875 5599875 +1608408 5713120 1663880 5646248 1663776 5646144 1657088 5639464 +1608336 5713136 1608280 5713584 1608408 5713120 1599875 5599875 +1608336 5713136 1608408 5713120 1599875 5599875 1604784 5714488 +1608408 5713120 1663776 5646144 1657088 5639464 1657056 5639384 +1663776 5646144 1663688 5645984 1657088 5639464 1608408 5713120 +1663880 5646248 1608408 5713120 1609480 5714768 1609512 5714824 +1608712 5714128 1609408 5714752 1609432 5714744 1608408 5713120 +1608280 5713584 1608344 5713792 1608712 5714128 1608408 5713120 +1608280 5713584 1608344 5713792 1608408 5713120 1608336 5713136 +1608712 5714128 1609432 5714744 1608408 5713120 1608344 5713792 +1608336 5713136 1608280 5713216 1608280 5713584 1608408 5713120 +1608280 5713216 1608224 5713456 1608280 5713584 1608408 5713120 +1608280 5713216 1608216 5713344 1608224 5713456 1608408 5713120 +1608336 5713136 1608280 5713216 1608408 5713120 1599875 5599875 +1608280 5713584 1608344 5713792 1608408 5713120 1608224 5713456 +1608336 5713136 1608280 5713176 1608280 5713216 1608408 5713120 +1608280 5713216 1608224 5713456 1608408 5713120 1608336 5713136 +1657056 5639384 1657088 5639296 1599875 5599875 1608408 5713120 +1608344 5713792 1608312 5713840 1608712 5714128 1608408 5713120 +1608408 5713120 1608424 5713160 1609432 5714744 1609480 5714768 +1608408 5713120 1608712 5714128 1608424 5713160 1609480 5714768 +1608408 5713120 1608424 5713160 1609480 5714768 1663880 5646248 +1608424 5713160 1608712 5714128 1609432 5714744 1609480 5714768 +1608712 5714128 1608424 5713160 1608408 5713120 1608344 5713792 +1608424 5713160 1609480 5714768 1608408 5713120 1608344 5713792 +1608712 5714128 1609432 5714744 1608424 5713160 1608344 5713792 +1609432 5714744 1608424 5713160 1608712 5714128 1609408 5714752 +1608408 5713120 1608280 5713584 1608344 5713792 1608424 5713160 +1608408 5713120 1608280 5713584 1608424 5713160 1609480 5714768 +1608408 5713120 1608224 5713456 1608280 5713584 1608424 5713160 +1608408 5713120 1608280 5713216 1608224 5713456 1608424 5713160 +1608280 5713216 1608216 5713344 1608224 5713456 1608424 5713160 +1608280 5713216 1608216 5713344 1608424 5713160 1608408 5713120 +1608408 5713120 1608280 5713216 1608424 5713160 1609480 5714768 +1608224 5713456 1608280 5713584 1608424 5713160 1608216 5713344 +1608280 5713216 1608240 5713248 1608216 5713344 1608424 5713160 +1608344 5713792 1608712 5714128 1608424 5713160 1608280 5713584 +1608280 5713584 1608344 5713792 1608424 5713160 1608224 5713456 +1608408 5713120 1608336 5713136 1608280 5713216 1608424 5713160 +1608280 5713216 1608216 5713344 1608424 5713160 1608336 5713136 +1608408 5713120 1608336 5713136 1608424 5713160 1609480 5714768 +1608336 5713136 1608280 5713176 1608280 5713216 1608424 5713160 +1608712 5714128 1608424 5713160 1608344 5713792 1608312 5713840 +1608408 5713120 1608480 5713144 1663880 5646248 1663776 5646144 +1608408 5713120 1608480 5713144 1663776 5646144 1657088 5639464 +1608480 5713144 1663880 5646248 1663776 5646144 1657088 5639464 +1609480 5714768 1608480 5713144 1608408 5713120 1608424 5713160 +1609480 5714768 1608480 5713144 1608424 5713160 1609432 5714744 +1608480 5713144 1608408 5713120 1608424 5713160 1609432 5714744 +1608424 5713160 1608712 5714128 1609432 5714744 1608480 5713144 +1609432 5714744 1609480 5714768 1608480 5713144 1608712 5714128 +1608424 5713160 1608712 5714128 1608480 5713144 1608408 5713120 +1608408 5713120 1608424 5713160 1608480 5713144 1657088 5639464 +1608424 5713160 1608344 5713792 1608712 5714128 1608480 5713144 +1608424 5713160 1608344 5713792 1608480 5713144 1608408 5713120 +1608712 5714128 1609432 5714744 1608480 5713144 1608344 5713792 +1608424 5713160 1608280 5713584 1608344 5713792 1608480 5713144 +1608424 5713160 1608280 5713584 1608480 5713144 1608408 5713120 +1608344 5713792 1608712 5714128 1608480 5713144 1608280 5713584 +1608408 5713120 1608480 5713144 1657088 5639464 1657056 5639384 +1608480 5713144 1609480 5714768 1663880 5646248 1663776 5646144 +1609480 5714768 1663880 5646248 1608480 5713144 1609432 5714744 +1663776 5646144 1663688 5645984 1657088 5639464 1608480 5713144 +1663880 5646248 1608480 5713144 1609480 5714768 1609512 5714824 +1608712 5714128 1609408 5714752 1609432 5714744 1608480 5713144 +1608424 5713160 1608224 5713456 1608280 5713584 1608480 5713144 +1608344 5713792 1608312 5713840 1608712 5714128 1608480 5713144 +1608480 5713144 1608576 5713048 1663880 5646248 1663776 5646144 +1608480 5713144 1608576 5713048 1663776 5646144 1657088 5639464 +1608480 5713144 1608576 5713048 1657088 5639464 1608408 5713120 +1608576 5713048 1663776 5646144 1657088 5639464 1608408 5713120 +1608480 5713144 1608576 5713048 1608408 5713120 1608424 5713160 +1657088 5639464 1657056 5639384 1608408 5713120 1608576 5713048 +1657056 5639384 1599875 5599875 1608408 5713120 1608576 5713048 +1599875 5599875 1608336 5713136 1608408 5713120 1608576 5713048 +1599875 5599875 1608336 5713136 1608576 5713048 1657056 5639384 +1608408 5713120 1608480 5713144 1608576 5713048 1608336 5713136 +1657088 5639464 1657056 5639384 1608576 5713048 1663776 5646144 +1599875 5599875 1604784 5714488 1608336 5713136 1608576 5713048 +1657056 5639384 1599875 5599875 1608576 5713048 1657088 5639464 +1608576 5713048 1663880 5646248 1663776 5646144 1657088 5639464 +1608480 5713144 1609480 5714768 1608576 5713048 1608408 5713120 +1609480 5714768 1608576 5713048 1608480 5713144 1609432 5714744 +1608480 5713144 1608712 5714128 1609432 5714744 1608576 5713048 +1608480 5713144 1608344 5713792 1608712 5714128 1608576 5713048 +1608576 5713048 1608408 5713120 1608480 5713144 1608712 5714128 +1609432 5714744 1609480 5714768 1608576 5713048 1608712 5714128 +1608576 5713048 1609480 5714768 1663880 5646248 1663776 5646144 +1609480 5714768 1663880 5646248 1608576 5713048 1609432 5714744 +1663776 5646144 1663688 5645984 1657088 5639464 1608576 5713048 +1663880 5646248 1608576 5713048 1609480 5714768 1609512 5714824 +1663880 5646248 1608576 5713048 1609512 5714824 1663944 5646256 +1663880 5646248 1663776 5646144 1608576 5713048 1609512 5714824 +1608576 5713048 1609432 5714744 1609480 5714768 1609512 5714824 +1608712 5714128 1609408 5714752 1609432 5714744 1608576 5713048 +1657056 5639384 1657088 5639296 1599875 5599875 1608576 5713048 +1663880 5646248 1608608 5713032 1609512 5714824 1663944 5646256 +1608576 5713048 1608608 5713032 1663880 5646248 1663776 5646144 +1608576 5713048 1608608 5713032 1663776 5646144 1657088 5639464 +1608576 5713048 1608608 5713032 1657088 5639464 1657056 5639384 +1608576 5713048 1608608 5713032 1657056 5639384 1599875 5599875 +1608576 5713048 1608608 5713032 1599875 5599875 1608336 5713136 +1608576 5713048 1608608 5713032 1608336 5713136 1608408 5713120 +1608608 5713032 1657088 5639464 1657056 5639384 1599875 5599875 +1599875 5599875 1604784 5714488 1608336 5713136 1608608 5713032 +1608608 5713032 1657056 5639384 1599875 5599875 1608336 5713136 +1608608 5713032 1663776 5646144 1657088 5639464 1657056 5639384 +1608608 5713032 1663880 5646248 1663776 5646144 1657088 5639464 +1608576 5713048 1609512 5714824 1608608 5713032 1608336 5713136 +1608608 5713032 1609512 5714824 1663880 5646248 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1608608 5713032 +1609512 5714824 1608608 5713032 1608576 5713048 1609480 5714768 +1608608 5713032 1608336 5713136 1608576 5713048 1609480 5714768 +1608576 5713048 1609432 5714744 1609480 5714768 1608608 5713032 +1608576 5713048 1608712 5714128 1609432 5714744 1608608 5713032 +1608576 5713048 1608480 5713144 1608712 5714128 1608608 5713032 +1608480 5713144 1608344 5713792 1608712 5714128 1608608 5713032 +1608712 5714128 1609432 5714744 1608608 5713032 1608480 5713144 +1608576 5713048 1608480 5713144 1608608 5713032 1608336 5713136 +1609432 5714744 1609480 5714768 1608608 5713032 1608712 5714128 +1609512 5714824 1663880 5646248 1608608 5713032 1609480 5714768 +1609480 5714768 1609512 5714824 1608608 5713032 1609432 5714744 +1608712 5714128 1609408 5714752 1609432 5714744 1608608 5713032 +1657056 5639384 1657088 5639296 1599875 5599875 1608608 5713032 +1663880 5646248 1608648 5713040 1609512 5714824 1663944 5646256 +1608608 5713032 1608648 5713040 1663880 5646248 1663776 5646144 +1608648 5713040 1609512 5714824 1663880 5646248 1663776 5646144 +1608608 5713032 1608648 5713040 1663776 5646144 1657088 5639464 +1608608 5713032 1608648 5713040 1657088 5639464 1657056 5639384 +1608648 5713040 1663880 5646248 1663776 5646144 1657088 5639464 +1608608 5713032 1609512 5714824 1608648 5713040 1657088 5639464 +1609512 5714824 1608648 5713040 1608608 5713032 1609480 5714768 +1609512 5714824 1663880 5646248 1608648 5713040 1609480 5714768 +1608648 5713040 1657088 5639464 1608608 5713032 1609480 5714768 +1663776 5646144 1663688 5645984 1657088 5639464 1608648 5713040 +1608608 5713032 1609432 5714744 1609480 5714768 1608648 5713040 +1608608 5713032 1608712 5714128 1609432 5714744 1608648 5713040 +1608608 5713032 1608480 5713144 1608712 5714128 1608648 5713040 +1608608 5713032 1608576 5713048 1608480 5713144 1608648 5713040 +1608480 5713144 1608344 5713792 1608712 5714128 1608648 5713040 +1608480 5713144 1608280 5713584 1608344 5713792 1608648 5713040 +1608480 5713144 1608344 5713792 1608648 5713040 1608576 5713048 +1608712 5714128 1609432 5714744 1608648 5713040 1608344 5713792 +1608608 5713032 1608576 5713048 1608648 5713040 1657088 5639464 +1609480 5714768 1609512 5714824 1608648 5713040 1609432 5714744 +1609432 5714744 1609480 5714768 1608648 5713040 1608712 5714128 +1608712 5714128 1609408 5714752 1609432 5714744 1608648 5713040 +1608344 5713792 1608312 5713840 1608712 5714128 1608648 5713040 +1663880 5646248 1608720 5713120 1609512 5714824 1663944 5646256 +1608648 5713040 1608720 5713120 1663880 5646248 1663776 5646144 +1609512 5714824 1608720 5713120 1608648 5713040 1609480 5714768 +1608720 5713120 1663880 5646248 1608648 5713040 1609480 5714768 +1609512 5714824 1663880 5646248 1608720 5713120 1609480 5714768 +1608648 5713040 1609432 5714744 1609480 5714768 1608720 5713120 +1608648 5713040 1609432 5714744 1608720 5713120 1663880 5646248 +1609480 5714768 1609512 5714824 1608720 5713120 1609432 5714744 +1608648 5713040 1608712 5714128 1609432 5714744 1608720 5713120 +1608648 5713040 1608712 5714128 1608720 5713120 1663880 5646248 +1608648 5713040 1608344 5713792 1608712 5714128 1608720 5713120 +1608648 5713040 1608480 5713144 1608344 5713792 1608720 5713120 +1608480 5713144 1608280 5713584 1608344 5713792 1608720 5713120 +1608480 5713144 1608280 5713584 1608720 5713120 1608648 5713040 +1608648 5713040 1608480 5713144 1608720 5713120 1663880 5646248 +1608480 5713144 1608424 5713160 1608280 5713584 1608720 5713120 +1608648 5713040 1608576 5713048 1608480 5713144 1608720 5713120 +1608648 5713040 1608608 5713032 1608576 5713048 1608720 5713120 +1608480 5713144 1608280 5713584 1608720 5713120 1608576 5713048 +1608648 5713040 1608576 5713048 1608720 5713120 1663880 5646248 +1608344 5713792 1608712 5714128 1608720 5713120 1608280 5713584 +1609432 5714744 1609480 5714768 1608720 5713120 1608712 5714128 +1608712 5714128 1609432 5714744 1608720 5713120 1608344 5713792 +1608712 5714128 1609408 5714752 1609432 5714744 1608720 5713120 +1608344 5713792 1608312 5713840 1608712 5714128 1608720 5713120 +1663880 5646248 1608760 5713200 1609512 5714824 1663944 5646256 +1608720 5713120 1608760 5713200 1663880 5646248 1608648 5713040 +1609512 5714824 1608760 5713200 1608720 5713120 1609480 5714768 +1608720 5713120 1609432 5714744 1609480 5714768 1608760 5713200 +1608760 5713200 1663880 5646248 1608720 5713120 1609432 5714744 +1609480 5714768 1609512 5714824 1608760 5713200 1609432 5714744 +1609512 5714824 1663880 5646248 1608760 5713200 1609480 5714768 +1608720 5713120 1608712 5714128 1609432 5714744 1608760 5713200 +1609432 5714744 1609480 5714768 1608760 5713200 1608712 5714128 +1608720 5713120 1608712 5714128 1608760 5713200 1663880 5646248 +1608720 5713120 1608344 5713792 1608712 5714128 1608760 5713200 +1608720 5713120 1608344 5713792 1608760 5713200 1663880 5646248 +1608720 5713120 1608280 5713584 1608344 5713792 1608760 5713200 +1608720 5713120 1608480 5713144 1608280 5713584 1608760 5713200 +1608720 5713120 1608576 5713048 1608480 5713144 1608760 5713200 +1608720 5713120 1608480 5713144 1608760 5713200 1663880 5646248 +1608480 5713144 1608424 5713160 1608280 5713584 1608760 5713200 +1608280 5713584 1608344 5713792 1608760 5713200 1608480 5713144 +1608712 5714128 1609432 5714744 1608760 5713200 1608344 5713792 +1608344 5713792 1608712 5714128 1608760 5713200 1608280 5713584 +1608712 5714128 1609408 5714752 1609432 5714744 1608760 5713200 +1608344 5713792 1608312 5713840 1608712 5714128 1608760 5713200 +1608760 5713200 1608760 5713256 1609432 5714744 1609480 5714768 +1608760 5713200 1608760 5713256 1609480 5714768 1609512 5714824 +1608760 5713200 1608712 5714128 1608760 5713256 1609480 5714768 +1608760 5713256 1608712 5714128 1609432 5714744 1609480 5714768 +1608712 5714128 1608760 5713256 1608760 5713200 1608344 5713792 +1608712 5714128 1609432 5714744 1608760 5713256 1608344 5713792 +1608760 5713256 1609480 5714768 1608760 5713200 1608344 5713792 +1608760 5713200 1608280 5713584 1608344 5713792 1608760 5713256 +1608760 5713200 1608280 5713584 1608760 5713256 1609480 5714768 +1608760 5713200 1608480 5713144 1608280 5713584 1608760 5713256 +1608760 5713200 1608720 5713120 1608480 5713144 1608760 5713256 +1608760 5713200 1608480 5713144 1608760 5713256 1609480 5714768 +1608480 5713144 1608424 5713160 1608280 5713584 1608760 5713256 +1608480 5713144 1608424 5713160 1608760 5713256 1608760 5713200 +1608344 5713792 1608712 5714128 1608760 5713256 1608280 5713584 +1608280 5713584 1608344 5713792 1608760 5713256 1608424 5713160 +1609432 5714744 1608760 5713256 1608712 5714128 1609408 5714752 +1608424 5713160 1608224 5713456 1608280 5713584 1608760 5713256 +1608712 5714128 1608760 5713256 1608344 5713792 1608312 5713840 +1608760 5713256 1608720 5713360 1608712 5714128 1609432 5714744 +1608760 5713256 1608344 5713792 1608720 5713360 1609432 5714744 +1608720 5713360 1608344 5713792 1608712 5714128 1609432 5714744 +1608760 5713256 1608720 5713360 1609432 5714744 1609480 5714768 +1608344 5713792 1608720 5713360 1608760 5713256 1608280 5713584 +1608720 5713360 1609432 5714744 1608760 5713256 1608280 5713584 +1608344 5713792 1608712 5714128 1608720 5713360 1608280 5713584 +1608760 5713256 1608424 5713160 1608280 5713584 1608720 5713360 +1608760 5713256 1608424 5713160 1608720 5713360 1609432 5714744 +1608760 5713256 1608480 5713144 1608424 5713160 1608720 5713360 +1608760 5713256 1608480 5713144 1608720 5713360 1609432 5714744 +1608760 5713256 1608760 5713200 1608480 5713144 1608720 5713360 +1608280 5713584 1608344 5713792 1608720 5713360 1608424 5713160 +1608424 5713160 1608280 5713584 1608720 5713360 1608480 5713144 +1608712 5714128 1609408 5714752 1609432 5714744 1608720 5713360 +1608424 5713160 1608224 5713456 1608280 5713584 1608720 5713360 +1608424 5713160 1608216 5713344 1608224 5713456 1608720 5713360 +1608280 5713584 1608344 5713792 1608720 5713360 1608224 5713456 +1608424 5713160 1608224 5713456 1608720 5713360 1608480 5713144 +1608712 5714128 1608720 5713360 1608344 5713792 1608312 5713840 +1608720 5713360 1608712 5713392 1608712 5714128 1609432 5714744 +1608720 5713360 1608712 5713392 1609432 5714744 1608760 5713256 +1608712 5713392 1608712 5714128 1609432 5714744 1608760 5713256 +1608720 5713360 1608344 5713792 1608712 5713392 1608760 5713256 +1608344 5713792 1608712 5713392 1608720 5713360 1608280 5713584 +1608712 5713392 1608760 5713256 1608720 5713360 1608280 5713584 +1608712 5713392 1608344 5713792 1608712 5714128 1609432 5714744 +1608344 5713792 1608712 5714128 1608712 5713392 1608280 5713584 +1609432 5714744 1609480 5714768 1608760 5713256 1608712 5713392 +1608720 5713360 1608224 5713456 1608280 5713584 1608712 5713392 +1608720 5713360 1608224 5713456 1608712 5713392 1608760 5713256 +1608280 5713584 1608344 5713792 1608712 5713392 1608224 5713456 +1608712 5714128 1609408 5714752 1609432 5714744 1608712 5713392 +1608720 5713360 1608424 5713160 1608224 5713456 1608712 5713392 +1608720 5713360 1608424 5713160 1608712 5713392 1608760 5713256 +1608424 5713160 1608216 5713344 1608224 5713456 1608712 5713392 +1608224 5713456 1608280 5713584 1608712 5713392 1608424 5713160 +1608720 5713360 1608480 5713144 1608424 5713160 1608712 5713392 +1608720 5713360 1608480 5713144 1608712 5713392 1608760 5713256 +1608720 5713360 1608760 5713256 1608480 5713144 1608712 5713392 +1608424 5713160 1608224 5713456 1608712 5713392 1608480 5713144 +1608712 5714128 1608712 5713392 1608344 5713792 1608312 5713840 +1608712 5713392 1608664 5713560 1608712 5714128 1609432 5714744 +1608712 5713392 1608664 5713560 1609432 5714744 1608760 5713256 +1608712 5713392 1608344 5713792 1608664 5713560 1609432 5714744 +1608344 5713792 1608664 5713560 1608712 5713392 1608280 5713584 +1608712 5713392 1608224 5713456 1608280 5713584 1608664 5713560 +1608664 5713560 1609432 5714744 1608712 5713392 1608224 5713456 +1608280 5713584 1608344 5713792 1608664 5713560 1608224 5713456 +1608664 5713560 1608344 5713792 1608712 5714128 1609432 5714744 +1608712 5713392 1608424 5713160 1608224 5713456 1608664 5713560 +1608344 5713792 1608712 5714128 1608664 5713560 1608280 5713584 +1608712 5714128 1609408 5714752 1609432 5714744 1608664 5713560 +1608712 5714128 1608664 5713560 1608344 5713792 1608312 5713840 +1608664 5713560 1608672 5713672 1608712 5714128 1609432 5714744 +1608664 5713560 1608672 5713672 1609432 5714744 1608712 5713392 +1609432 5714744 1608760 5713256 1608712 5713392 1608672 5713672 +1608760 5713256 1608720 5713360 1608712 5713392 1608672 5713672 +1608712 5713392 1608664 5713560 1608672 5713672 1608760 5713256 +1608672 5713672 1608712 5714128 1609432 5714744 1608760 5713256 +1608664 5713560 1608344 5713792 1608672 5713672 1608712 5713392 +1609432 5714744 1609480 5714768 1608760 5713256 1608672 5713672 +1608344 5713792 1608672 5713672 1608664 5713560 1608280 5713584 +1608664 5713560 1608224 5713456 1608280 5713584 1608672 5713672 +1608672 5713672 1608712 5713392 1608664 5713560 1608280 5713584 +1608672 5713672 1608344 5713792 1608712 5714128 1609432 5714744 +1608344 5713792 1608712 5714128 1608672 5713672 1608280 5713584 +1608712 5714128 1609408 5714752 1609432 5714744 1608672 5713672 +1608712 5714128 1608672 5713672 1608344 5713792 1608312 5713840 +1608672 5713672 1608712 5713752 1609432 5714744 1608760 5713256 +1608672 5713672 1608712 5713752 1608760 5713256 1608712 5713392 +1608760 5713256 1608720 5713360 1608712 5713392 1608712 5713752 +1608672 5713672 1608712 5713752 1608712 5713392 1608664 5713560 +1608712 5713752 1608760 5713256 1608712 5713392 1608664 5713560 +1608712 5713752 1609432 5714744 1608760 5713256 1608712 5713392 +1609432 5714744 1609480 5714768 1608760 5713256 1608712 5713752 +1608712 5714128 1608712 5713752 1608672 5713672 1608344 5713792 +1608672 5713672 1608344 5713792 1608712 5713752 1608664 5713560 +1608672 5713672 1608280 5713584 1608344 5713792 1608712 5713752 +1609432 5714744 1608712 5713752 1608712 5714128 1609408 5714752 +1608712 5713752 1608712 5714128 1609432 5714744 1608760 5713256 +1608712 5714128 1609432 5714744 1608712 5713752 1608344 5713792 +1608712 5714128 1608712 5713752 1608344 5713792 1608312 5713840 +1608712 5713752 1608888 5713904 1608760 5713256 1608712 5713392 +1608760 5713256 1608720 5713360 1608712 5713392 1608888 5713904 +1608712 5713752 1608888 5713904 1608712 5713392 1608664 5713560 +1608712 5713752 1608888 5713904 1608664 5713560 1608672 5713672 +1608712 5713392 1608664 5713560 1608888 5713904 1608720 5713360 +1608760 5713256 1608888 5713904 1609432 5714744 1609480 5714768 +1608760 5713256 1608888 5713904 1609480 5714768 1608760 5713200 +1609480 5714768 1609512 5714824 1608760 5713200 1608888 5713904 +1608888 5713904 1609432 5714744 1609480 5714768 1608760 5713200 +1609432 5714744 1608888 5713904 1608712 5713752 1608712 5714128 +1609432 5714744 1608888 5713904 1608712 5714128 1609408 5714752 +1608712 5714128 1609368 5714824 1609408 5714752 1608888 5713904 +1608888 5713904 1608712 5713752 1608712 5714128 1609408 5714752 +1608712 5713752 1608712 5714128 1608888 5713904 1608664 5713560 +1608712 5713752 1608344 5713792 1608712 5714128 1608888 5713904 +1608888 5713904 1608760 5713200 1608760 5713256 1608720 5713360 +1608888 5713904 1609408 5714752 1609432 5714744 1609480 5714768 +1609408 5714752 1608920 5713960 1608712 5714128 1609368 5714824 +1608888 5713904 1608920 5713960 1609408 5714752 1609432 5714744 +1608712 5714128 1608920 5713960 1608888 5713904 1608712 5713752 +1608888 5713904 1608712 5714128 1608920 5713960 1609432 5714744 +1608888 5713904 1608920 5713960 1609432 5714744 1609480 5714768 +1608888 5713904 1608920 5713960 1609480 5714768 1608760 5713200 +1608888 5713904 1608920 5713960 1608760 5713200 1608760 5713256 +1609480 5714768 1609512 5714824 1608760 5713200 1608920 5713960 +1608920 5713960 1609480 5714768 1608760 5713200 1608760 5713256 +1608920 5713960 1609408 5714752 1609432 5714744 1609480 5714768 +1608888 5713904 1608920 5713960 1608760 5713256 1608720 5713360 +1608888 5713904 1608712 5714128 1608920 5713960 1608760 5713256 +1608920 5713960 1609432 5714744 1609480 5714768 1608760 5713200 +1608920 5713960 1608712 5714128 1609408 5714752 1609432 5714744 +1609408 5714752 1608920 5714000 1608712 5714128 1609368 5714824 +1608920 5713960 1608920 5714000 1609408 5714752 1609432 5714744 +1608920 5713960 1608920 5714000 1609432 5714744 1609480 5714768 +1608920 5713960 1608712 5714128 1608920 5714000 1609432 5714744 +1608712 5714128 1608920 5714000 1608920 5713960 1608888 5713904 +1608712 5714128 1608920 5714000 1608888 5713904 1608712 5713752 +1608920 5714000 1609432 5714744 1608920 5713960 1608888 5713904 +1608920 5714000 1608712 5714128 1609408 5714752 1609432 5714744 +1608712 5714128 1609408 5714752 1608920 5714000 1608888 5713904 +1609408 5714752 1608888 5714032 1608712 5714128 1609368 5714824 +1608920 5714000 1608888 5714032 1609408 5714752 1609432 5714744 +1608712 5714128 1608888 5714032 1608920 5714000 1608888 5713904 +1608712 5714128 1609408 5714752 1608888 5714032 1608888 5713904 +1608712 5714128 1608888 5714032 1608888 5713904 1608712 5713752 +1608920 5714000 1608920 5713960 1608888 5713904 1608888 5714032 +1608888 5714032 1609408 5714752 1608920 5714000 1608920 5713960 +1608888 5713904 1608712 5714128 1608888 5714032 1608920 5713960 +1609408 5714752 1608856 5714056 1608712 5714128 1609368 5714824 +1608888 5714032 1608856 5714056 1609408 5714752 1608920 5714000 +1608712 5714128 1608856 5714056 1608888 5714032 1608888 5713904 +1608856 5714056 1609408 5714752 1608888 5714032 1608888 5713904 +1608712 5714128 1609408 5714752 1608856 5714056 1608888 5713904 +1608712 5714128 1608856 5714056 1608888 5713904 1608712 5713752 +1608888 5714032 1608920 5713960 1608888 5713904 1608856 5714056 +1609408 5714752 1608840 5714088 1608712 5714128 1609368 5714824 +1608712 5714128 1609352 5714856 1609368 5714824 1608840 5714088 +1608856 5714056 1608840 5714088 1609408 5714752 1608888 5714032 +1609408 5714752 1608920 5714000 1608888 5714032 1608840 5714088 +1608856 5714056 1608712 5714128 1608840 5714088 1608888 5714032 +1608712 5714128 1608840 5714088 1608856 5714056 1608888 5713904 +1609408 5714752 1608888 5714032 1608840 5714088 1609368 5714824 +1608840 5714088 1608856 5714056 1608712 5714128 1609368 5714824 +1663944 5646256 1611312 5715472 1615632 5735416 1743800 5687320 +1615632 5735416 1611312 5715472 1609512 5714824 1615584 5735320 +1609512 5714824 1609512 5714872 1615584 5735320 1611312 5715472 +1609512 5714872 1615528 5735256 1615584 5735320 1611312 5715472 +1609512 5714872 1609448 5715040 1615528 5735256 1611312 5715472 +1615528 5735256 1615584 5735320 1611312 5715472 1609448 5715040 +1609448 5715040 1615440 5735216 1615528 5735256 1611312 5715472 +1615528 5735256 1615584 5735320 1611312 5715472 1615440 5735216 +1609448 5715040 1615440 5735216 1611312 5715472 1609512 5714872 +1609512 5714872 1609448 5715040 1611312 5715472 1609512 5714824 +1615584 5735320 1615632 5735416 1611312 5715472 1615528 5735256 +1609448 5715040 1609416 5715088 1615440 5735216 1611312 5715472 +1609448 5715040 1609416 5715088 1611312 5715472 1609512 5714872 +1615440 5735216 1615528 5735256 1611312 5715472 1609416 5715088 +1609416 5715088 1615408 5735224 1615440 5735216 1611312 5715472 +1615440 5735216 1615528 5735256 1611312 5715472 1615408 5735224 +1609416 5715088 1615408 5735224 1611312 5715472 1609448 5715040 +1609416 5715088 1609392 5715096 1615408 5735224 1611312 5715472 +1615408 5735224 1615440 5735216 1611312 5715472 1609392 5715096 +1609416 5715088 1609392 5715096 1611312 5715472 1609448 5715040 +1609392 5715096 1609368 5715096 1615408 5735224 1611312 5715472 +1615408 5735224 1615440 5735216 1611312 5715472 1609368 5715096 +1609392 5715096 1609368 5715096 1611312 5715472 1609416 5715088 +1609368 5715096 1615352 5735280 1615408 5735224 1611312 5715472 +1615632 5735416 1663944 5646256 1611312 5715472 1615584 5735320 +1611312 5715472 1663944 5646256 1609512 5714824 1609512 5714872 +1609512 5714872 1609472 5714976 1609448 5715040 1611312 5715472 +1609448 5715040 1609416 5715088 1611312 5715472 1609472 5714976 +1609512 5714872 1609472 5714976 1611312 5715472 1609512 5714824 +1609512 5714824 1611312 5715472 1663944 5646256 1663880 5646248 +1609512 5714824 1611312 5715472 1663880 5646248 1608760 5713200 +1663880 5646248 1608720 5713120 1608760 5713200 1611312 5715472 +1608760 5713200 1609512 5714824 1611312 5715472 1608720 5713120 +1663880 5646248 1608648 5713040 1608720 5713120 1611312 5715472 +1663880 5646248 1663776 5646144 1608648 5713040 1611312 5715472 +1608720 5713120 1608760 5713200 1611312 5715472 1608648 5713040 +1609512 5714824 1611312 5715472 1608760 5713200 1609480 5714768 +1611312 5715472 1608720 5713120 1608760 5713200 1609480 5714768 +1608760 5713200 1608920 5713960 1609480 5714768 1611312 5715472 +1611312 5715472 1615632 5735416 1663944 5646256 1663880 5646248 +1609512 5714824 1609512 5714872 1611312 5715472 1609480 5714768 +1611312 5715472 1663944 5646256 1663880 5646248 1608648 5713040 +1663944 5646256 1611352 5715472 1615632 5735416 1743800 5687320 +1611312 5715472 1611352 5715472 1663944 5646256 1663880 5646248 +1611352 5715472 1615632 5735416 1663944 5646256 1663880 5646248 +1615632 5735416 1611352 5715472 1611312 5715472 1615584 5735320 +1615632 5735416 1663944 5646256 1611352 5715472 1615584 5735320 +1611312 5715472 1615528 5735256 1615584 5735320 1611352 5715472 +1611312 5715472 1615440 5735216 1615528 5735256 1611352 5715472 +1611312 5715472 1615408 5735224 1615440 5735216 1611352 5715472 +1615440 5735216 1615528 5735256 1611352 5715472 1615408 5735224 +1611312 5715472 1609368 5715096 1615408 5735224 1611352 5715472 +1615528 5735256 1615584 5735320 1611352 5715472 1615440 5735216 +1615584 5735320 1615632 5735416 1611352 5715472 1615528 5735256 +1611312 5715472 1615408 5735224 1611352 5715472 1663880 5646248 +1611312 5715472 1611352 5715472 1663880 5646248 1608648 5713040 +1663880 5646248 1663776 5646144 1608648 5713040 1611352 5715472 +1611312 5715472 1611352 5715472 1608648 5713040 1608720 5713120 +1611312 5715472 1611352 5715472 1608720 5713120 1608760 5713200 +1611312 5715472 1611352 5715472 1608760 5713200 1609480 5714768 +1611352 5715472 1608648 5713040 1608720 5713120 1608760 5713200 +1611352 5715472 1663944 5646256 1663880 5646248 1608648 5713040 +1611312 5715472 1615408 5735224 1611352 5715472 1608760 5713200 +1611352 5715472 1663880 5646248 1608648 5713040 1608720 5713120 +1663944 5646256 1611464 5715504 1615632 5735416 1743800 5687320 +1611352 5715472 1611464 5715504 1663944 5646256 1663880 5646248 +1611352 5715472 1615632 5735416 1611464 5715504 1663880 5646248 +1615632 5735416 1611464 5715504 1611352 5715472 1615584 5735320 +1611464 5715504 1663880 5646248 1611352 5715472 1615584 5735320 +1611464 5715504 1615632 5735416 1663944 5646256 1663880 5646248 +1615632 5735416 1663944 5646256 1611464 5715504 1615584 5735320 +1611352 5715472 1611464 5715504 1663880 5646248 1608648 5713040 +1663880 5646248 1663776 5646144 1608648 5713040 1611464 5715504 +1611464 5715504 1663944 5646256 1663880 5646248 1608648 5713040 +1611352 5715472 1615584 5735320 1611464 5715504 1608648 5713040 +1611352 5715472 1615528 5735256 1615584 5735320 1611464 5715504 +1611352 5715472 1615528 5735256 1611464 5715504 1608648 5713040 +1615584 5735320 1615632 5735416 1611464 5715504 1615528 5735256 +1611352 5715472 1615440 5735216 1615528 5735256 1611464 5715504 +1611352 5715472 1615408 5735224 1615440 5735216 1611464 5715504 +1611352 5715472 1611312 5715472 1615408 5735224 1611464 5715504 +1615408 5735224 1615440 5735216 1611464 5715504 1611312 5715472 +1611312 5715472 1609368 5715096 1615408 5735224 1611464 5715504 +1611352 5715472 1611312 5715472 1611464 5715504 1608648 5713040 +1615440 5735216 1615528 5735256 1611464 5715504 1615408 5735224 +1615528 5735256 1615584 5735320 1611464 5715504 1615440 5735216 +1611352 5715472 1611464 5715504 1608648 5713040 1608720 5713120 +1611352 5715472 1611464 5715504 1608720 5713120 1608760 5713200 +1611352 5715472 1611464 5715504 1608760 5713200 1611312 5715472 +1611352 5715472 1611312 5715472 1611464 5715504 1608760 5713200 +1611464 5715504 1663880 5646248 1608648 5713040 1608720 5713120 +1611464 5715504 1608648 5713040 1608720 5713120 1608760 5713200 +1663944 5646256 1611512 5715528 1615632 5735416 1743800 5687320 +1611464 5715504 1611512 5715528 1663944 5646256 1663880 5646248 +1611464 5715504 1611512 5715528 1663880 5646248 1608648 5713040 +1663880 5646248 1663776 5646144 1608648 5713040 1611512 5715528 +1611512 5715528 1663944 5646256 1663880 5646248 1608648 5713040 +1611464 5715504 1615632 5735416 1611512 5715528 1608648 5713040 +1615632 5735416 1611512 5715528 1611464 5715504 1615584 5735320 +1611464 5715504 1615528 5735256 1615584 5735320 1611512 5715528 +1611512 5715528 1608648 5713040 1611464 5715504 1615528 5735256 +1615584 5735320 1615632 5735416 1611512 5715528 1615528 5735256 +1611512 5715528 1615632 5735416 1663944 5646256 1663880 5646248 +1615632 5735416 1663944 5646256 1611512 5715528 1615584 5735320 +1611464 5715504 1611512 5715528 1608648 5713040 1608720 5713120 +1611512 5715528 1663880 5646248 1608648 5713040 1608720 5713120 +1611464 5715504 1615528 5735256 1611512 5715528 1608720 5713120 +1611464 5715504 1615440 5735216 1615528 5735256 1611512 5715528 +1615528 5735256 1615584 5735320 1611512 5715528 1615440 5735216 +1611464 5715504 1615440 5735216 1611512 5715528 1608720 5713120 +1611464 5715504 1615408 5735224 1615440 5735216 1611512 5715528 +1611464 5715504 1611312 5715472 1615408 5735224 1611512 5715528 +1611464 5715504 1611352 5715472 1611312 5715472 1611512 5715528 +1611312 5715472 1609368 5715096 1615408 5735224 1611512 5715528 +1611464 5715504 1611312 5715472 1611512 5715528 1608720 5713120 +1615408 5735224 1615440 5735216 1611512 5715528 1611312 5715472 +1615440 5735216 1615528 5735256 1611512 5715528 1615408 5735224 +1611464 5715504 1611512 5715528 1608720 5713120 1608760 5713200 +1663944 5646256 1611528 5715552 1615632 5735416 1743800 5687320 +1611512 5715528 1611528 5715552 1663944 5646256 1663880 5646248 +1611512 5715528 1611528 5715552 1663880 5646248 1608648 5713040 +1611512 5715528 1615632 5735416 1611528 5715552 1663880 5646248 +1615632 5735416 1611528 5715552 1611512 5715528 1615584 5735320 +1615632 5735416 1663944 5646256 1611528 5715552 1615584 5735320 +1611512 5715528 1615528 5735256 1615584 5735320 1611528 5715552 +1611512 5715528 1615440 5735216 1615528 5735256 1611528 5715552 +1615528 5735256 1615584 5735320 1611528 5715552 1615440 5735216 +1611528 5715552 1663880 5646248 1611512 5715528 1615440 5735216 +1615584 5735320 1615632 5735416 1611528 5715552 1615528 5735256 +1611528 5715552 1615632 5735416 1663944 5646256 1663880 5646248 +1611512 5715528 1615408 5735224 1615440 5735216 1611528 5715552 +1615440 5735216 1615528 5735256 1611528 5715552 1615408 5735224 +1611512 5715528 1615408 5735224 1611528 5715552 1663880 5646248 +1611512 5715528 1611312 5715472 1615408 5735224 1611528 5715552 +1611512 5715528 1611464 5715504 1611312 5715472 1611528 5715552 +1611464 5715504 1611352 5715472 1611312 5715472 1611528 5715552 +1611464 5715504 1611352 5715472 1611528 5715552 1611512 5715528 +1611312 5715472 1609368 5715096 1615408 5735224 1611528 5715552 +1611512 5715528 1611464 5715504 1611528 5715552 1663880 5646248 +1611312 5715472 1609368 5715096 1611528 5715552 1611352 5715472 +1609368 5715096 1615352 5735280 1615408 5735224 1611528 5715552 +1611312 5715472 1609392 5715096 1609368 5715096 1611528 5715552 +1615408 5735224 1615440 5735216 1611528 5715552 1609368 5715096 +1609368 5715096 1611520 5715576 1611528 5715552 1611312 5715472 +1611520 5715576 1615408 5735224 1611528 5715552 1611312 5715472 +1609368 5715096 1615408 5735224 1611520 5715576 1611312 5715472 +1611528 5715552 1611352 5715472 1611312 5715472 1611520 5715576 +1611528 5715552 1611352 5715472 1611520 5715576 1615408 5735224 +1611528 5715552 1611464 5715504 1611352 5715472 1611520 5715576 +1611528 5715552 1611464 5715504 1611520 5715576 1615408 5735224 +1611528 5715552 1611512 5715528 1611464 5715504 1611520 5715576 +1611528 5715552 1611512 5715528 1611520 5715576 1615408 5735224 +1611464 5715504 1611352 5715472 1611520 5715576 1611512 5715528 +1611312 5715472 1609368 5715096 1611520 5715576 1611352 5715472 +1611352 5715472 1611312 5715472 1611520 5715576 1611464 5715504 +1615408 5735224 1611520 5715576 1609368 5715096 1615352 5735280 +1609368 5715096 1611520 5715576 1611312 5715472 1609392 5715096 +1609368 5715096 1615408 5735224 1611520 5715576 1609392 5715096 +1611520 5715576 1611352 5715472 1611312 5715472 1609392 5715096 +1611312 5715472 1609416 5715088 1609392 5715096 1611520 5715576 +1611528 5715552 1611520 5715576 1615408 5735224 1615440 5735216 +1611528 5715552 1611512 5715528 1611520 5715576 1615440 5735216 +1611520 5715576 1609368 5715096 1615408 5735224 1615440 5735216 +1611528 5715552 1611520 5715576 1615440 5735216 1615528 5735256 +1611528 5715552 1611512 5715528 1611520 5715576 1615528 5735256 +1611528 5715552 1611520 5715576 1615528 5735256 1615584 5735320 +1611520 5715576 1615408 5735224 1615440 5735216 1615528 5735256 +1611520 5715576 1611464 5715656 1615408 5735224 1615440 5735216 +1611520 5715576 1609368 5715096 1611464 5715656 1615440 5735216 +1609368 5715096 1611464 5715656 1611520 5715576 1609392 5715096 +1609368 5715096 1615408 5735224 1611464 5715656 1609392 5715096 +1611464 5715656 1615440 5735216 1611520 5715576 1609392 5715096 +1611464 5715656 1609368 5715096 1615408 5735224 1615440 5735216 +1615408 5735224 1611464 5715656 1609368 5715096 1615352 5735280 +1611520 5715576 1611312 5715472 1609392 5715096 1611464 5715656 +1611520 5715576 1611312 5715472 1611464 5715656 1615440 5735216 +1609392 5715096 1609368 5715096 1611464 5715656 1611312 5715472 +1611520 5715576 1611352 5715472 1611312 5715472 1611464 5715656 +1611520 5715576 1611352 5715472 1611464 5715656 1615440 5735216 +1611520 5715576 1611464 5715504 1611352 5715472 1611464 5715656 +1611520 5715576 1611464 5715504 1611464 5715656 1615440 5735216 +1611520 5715576 1611512 5715528 1611464 5715504 1611464 5715656 +1611352 5715472 1611312 5715472 1611464 5715656 1611464 5715504 +1611312 5715472 1609416 5715088 1609392 5715096 1611464 5715656 +1609392 5715096 1609368 5715096 1611464 5715656 1609416 5715088 +1611312 5715472 1609448 5715040 1609416 5715088 1611464 5715656 +1611312 5715472 1609416 5715088 1611464 5715656 1611352 5715472 +1611520 5715576 1611464 5715656 1615440 5735216 1615528 5735256 +1611464 5715656 1615408 5735224 1615440 5735216 1615528 5735256 +1611520 5715576 1611464 5715504 1611464 5715656 1615528 5735256 +1611520 5715576 1611464 5715656 1615528 5735256 1611528 5715552 +1609368 5715096 1611456 5715680 1611464 5715656 1609392 5715096 +1611456 5715680 1615408 5735224 1611464 5715656 1609392 5715096 +1611464 5715656 1609416 5715088 1609392 5715096 1611456 5715680 +1611464 5715656 1609416 5715088 1611456 5715680 1615408 5735224 +1609392 5715096 1609368 5715096 1611456 5715680 1609416 5715088 +1611464 5715656 1611456 5715680 1615408 5735224 1615440 5735216 +1611464 5715656 1609416 5715088 1611456 5715680 1615440 5735216 +1611456 5715680 1609368 5715096 1615408 5735224 1615440 5735216 +1611464 5715656 1611456 5715680 1615440 5735216 1615528 5735256 +1611464 5715656 1609416 5715088 1611456 5715680 1615528 5735256 +1611456 5715680 1615408 5735224 1615440 5735216 1615528 5735256 +1609368 5715096 1615408 5735224 1611456 5715680 1609392 5715096 +1611464 5715656 1611312 5715472 1609416 5715088 1611456 5715680 +1611464 5715656 1611312 5715472 1611456 5715680 1615528 5735256 +1609416 5715088 1609392 5715096 1611456 5715680 1611312 5715472 +1611312 5715472 1609448 5715040 1609416 5715088 1611456 5715680 +1615408 5735224 1611456 5715680 1609368 5715096 1615352 5735280 +1611464 5715656 1611352 5715472 1611312 5715472 1611456 5715680 +1611464 5715656 1611456 5715680 1615528 5735256 1611520 5715576 +1611464 5715656 1611312 5715472 1611456 5715680 1611520 5715576 +1611456 5715680 1615440 5735216 1615528 5735256 1611520 5715576 +1615528 5735256 1611528 5715552 1611520 5715576 1611456 5715680 +1611456 5715680 1611424 5715704 1615408 5735224 1615440 5735216 +1611456 5715680 1611424 5715704 1615440 5735216 1615528 5735256 +1611456 5715680 1609368 5715096 1611424 5715704 1615440 5735216 +1609368 5715096 1611424 5715704 1611456 5715680 1609392 5715096 +1611456 5715680 1609416 5715088 1609392 5715096 1611424 5715704 +1609368 5715096 1615408 5735224 1611424 5715704 1609392 5715096 +1611456 5715680 1611312 5715472 1609416 5715088 1611424 5715704 +1609416 5715088 1609392 5715096 1611424 5715704 1611312 5715472 +1611424 5715704 1615440 5735216 1611456 5715680 1611312 5715472 +1609392 5715096 1609368 5715096 1611424 5715704 1609416 5715088 +1611424 5715704 1609368 5715096 1615408 5735224 1615440 5735216 +1611312 5715472 1609448 5715040 1609416 5715088 1611424 5715704 +1611456 5715680 1611464 5715656 1611312 5715472 1611424 5715704 +1611312 5715472 1609416 5715088 1611424 5715704 1611464 5715656 +1611456 5715680 1611464 5715656 1611424 5715704 1615440 5735216 +1615408 5735224 1611424 5715704 1609368 5715096 1615352 5735280 +1611464 5715656 1611352 5715472 1611312 5715472 1611424 5715704 +1611312 5715472 1609416 5715088 1611424 5715704 1611352 5715472 +1611464 5715656 1611464 5715504 1611352 5715472 1611424 5715704 +1611464 5715656 1611352 5715472 1611424 5715704 1611456 5715680 +1609368 5715096 1611328 5715760 1611424 5715704 1609392 5715096 +1611328 5715760 1615408 5735224 1611424 5715704 1609392 5715096 +1609368 5715096 1615408 5735224 1611328 5715760 1609392 5715096 +1611424 5715704 1609416 5715088 1609392 5715096 1611328 5715760 +1611424 5715704 1611312 5715472 1609416 5715088 1611328 5715760 +1609392 5715096 1609368 5715096 1611328 5715760 1609416 5715088 +1611424 5715704 1611312 5715472 1611328 5715760 1615408 5735224 +1611424 5715704 1611352 5715472 1611312 5715472 1611328 5715760 +1609416 5715088 1609392 5715096 1611328 5715760 1611312 5715472 +1611424 5715704 1611328 5715760 1615408 5735224 1615440 5735216 +1611424 5715704 1611328 5715760 1615440 5735216 1611456 5715680 +1611424 5715704 1611312 5715472 1611328 5715760 1615440 5735216 +1611328 5715760 1609368 5715096 1615408 5735224 1615440 5735216 +1611312 5715472 1609448 5715040 1609416 5715088 1611328 5715760 +1615408 5735224 1611328 5715760 1609368 5715096 1615352 5735280 +1615408 5735224 1615440 5735216 1611328 5715760 1615352 5735280 +1611328 5715760 1609392 5715096 1609368 5715096 1615352 5735280 +1609368 5715096 1605152 5714944 1615352 5735280 1611328 5715760 +1609368 5715096 1605152 5714944 1611328 5715760 1609392 5715096 +1605152 5714944 1605064 5714952 1615352 5735280 1611328 5715760 +1609368 5715096 1607984 5714464 1605152 5714944 1611328 5715760 +1615352 5735280 1615408 5735224 1611328 5715760 1605152 5714944 +1615352 5735280 1611240 5715760 1605152 5714944 1605064 5714952 +1605152 5714944 1611240 5715760 1611328 5715760 1609368 5715096 +1611240 5715760 1615352 5735280 1611328 5715760 1609368 5715096 +1611328 5715760 1609392 5715096 1609368 5715096 1611240 5715760 +1611328 5715760 1609416 5715088 1609392 5715096 1611240 5715760 +1611328 5715760 1609416 5715088 1611240 5715760 1615352 5735280 +1609392 5715096 1609368 5715096 1611240 5715760 1609416 5715088 +1605152 5714944 1615352 5735280 1611240 5715760 1609368 5715096 +1611328 5715760 1611312 5715472 1609416 5715088 1611240 5715760 +1611328 5715760 1611424 5715704 1611312 5715472 1611240 5715760 +1609416 5715088 1609392 5715096 1611240 5715760 1611312 5715472 +1611328 5715760 1611312 5715472 1611240 5715760 1615352 5735280 +1605152 5714944 1611240 5715760 1609368 5715096 1607984 5714464 +1611312 5715472 1609448 5715040 1609416 5715088 1611240 5715760 +1609416 5715088 1609392 5715096 1611240 5715760 1609448 5715040 +1611312 5715472 1609448 5715040 1611240 5715760 1611328 5715760 +1611312 5715472 1609472 5714976 1609448 5715040 1611240 5715760 +1609368 5715096 1605152 5714944 1611240 5715760 1609392 5715096 +1611328 5715760 1611240 5715760 1615352 5735280 1615408 5735224 +1611328 5715760 1611240 5715760 1615408 5735224 1615440 5735216 +1611328 5715760 1611312 5715472 1611240 5715760 1615408 5735224 +1611240 5715760 1605152 5714944 1615352 5735280 1615408 5735224 +1611312 5715472 1611192 5715728 1611240 5715760 1611328 5715760 +1611312 5715472 1611192 5715728 1611328 5715760 1611424 5715704 +1611192 5715728 1609448 5715040 1611240 5715760 1611328 5715760 +1609448 5715040 1611192 5715728 1611312 5715472 1609472 5714976 +1609448 5715040 1611240 5715760 1611192 5715728 1609472 5714976 +1611240 5715760 1611192 5715728 1609448 5715040 1609416 5715088 +1611240 5715760 1611192 5715728 1609416 5715088 1609392 5715096 +1611240 5715760 1611192 5715728 1609392 5715096 1609368 5715096 +1611192 5715728 1609416 5715088 1609392 5715096 1609368 5715096 +1611240 5715760 1611328 5715760 1611192 5715728 1609368 5715096 +1611192 5715728 1609472 5714976 1609448 5715040 1609416 5715088 +1611192 5715728 1609448 5715040 1609416 5715088 1609392 5715096 +1611240 5715760 1611192 5715728 1609368 5715096 1605152 5714944 +1611312 5715472 1609472 5714976 1611192 5715728 1611328 5715760 +1611312 5715472 1609512 5714872 1609472 5714976 1611192 5715728 +1609472 5714976 1609448 5715040 1611192 5715728 1609512 5714872 +1611312 5715472 1609512 5714824 1609512 5714872 1611192 5715728 +1611312 5715472 1609512 5714872 1611192 5715728 1611328 5715760 +1609512 5714872 1611128 5715672 1611312 5715472 1609512 5714824 +1611312 5715472 1611128 5715672 1611192 5715728 1611328 5715760 +1611192 5715728 1611128 5715672 1609512 5714872 1609472 5714976 +1611192 5715728 1611312 5715472 1611128 5715672 1609472 5714976 +1611192 5715728 1611128 5715672 1609472 5714976 1609448 5715040 +1611192 5715728 1611128 5715672 1609448 5715040 1609416 5715088 +1611192 5715728 1611312 5715472 1611128 5715672 1609416 5715088 +1611128 5715672 1609472 5714976 1609448 5715040 1609416 5715088 +1611192 5715728 1611128 5715672 1609416 5715088 1609392 5715096 +1611192 5715728 1611128 5715672 1609392 5715096 1609368 5715096 +1611128 5715672 1609448 5715040 1609416 5715088 1609392 5715096 +1611192 5715728 1611312 5715472 1611128 5715672 1609392 5715096 +1611128 5715672 1611312 5715472 1609512 5714872 1609472 5714976 +1611128 5715672 1609512 5714872 1609472 5714976 1609448 5715040 +1609512 5714872 1611120 5715648 1611312 5715472 1609512 5714824 +1611128 5715672 1611120 5715648 1609512 5714872 1609472 5714976 +1611128 5715672 1611312 5715472 1611120 5715648 1609472 5714976 +1611312 5715472 1611120 5715648 1611128 5715672 1611192 5715728 +1611312 5715472 1611120 5715648 1611192 5715728 1611328 5715760 +1611120 5715648 1609472 5714976 1611128 5715672 1611192 5715728 +1609512 5714872 1609472 5714976 1611120 5715648 1609512 5714824 +1611120 5715648 1611192 5715728 1611312 5715472 1609512 5714824 +1611312 5715472 1609480 5714768 1609512 5714824 1611120 5715648 +1611128 5715672 1611120 5715648 1609472 5714976 1609448 5715040 +1611128 5715672 1611120 5715648 1609448 5715040 1609416 5715088 +1611128 5715672 1611120 5715648 1609416 5715088 1609392 5715096 +1611120 5715648 1609512 5714872 1609472 5714976 1609448 5715040 +1611128 5715672 1611192 5715728 1611120 5715648 1609416 5715088 +1611120 5715648 1609472 5714976 1609448 5715040 1609416 5715088 +1611120 5715648 1611136 5715608 1609512 5714824 1609512 5714872 +1611120 5715648 1611136 5715608 1609512 5714872 1609472 5714976 +1611136 5715608 1609512 5714824 1609512 5714872 1609472 5714976 +1611120 5715648 1611136 5715608 1609472 5714976 1609448 5715040 +1611120 5715648 1611312 5715472 1611136 5715608 1609472 5714976 +1611312 5715472 1611136 5715608 1611120 5715648 1611192 5715728 +1611312 5715472 1611136 5715608 1611192 5715728 1611328 5715760 +1611120 5715648 1611128 5715672 1611192 5715728 1611136 5715608 +1611136 5715608 1609472 5714976 1611120 5715648 1611128 5715672 +1611192 5715728 1611312 5715472 1611136 5715608 1611128 5715672 +1611136 5715608 1611312 5715472 1609512 5714824 1609512 5714872 +1609512 5714824 1611136 5715608 1611312 5715472 1609480 5714768 +1611312 5715472 1609512 5714824 1611136 5715608 1611192 5715728 +1611136 5715608 1611208 5715520 1609512 5714824 1609512 5714872 +1611136 5715608 1611208 5715520 1609512 5714872 1609472 5714976 +1609512 5714824 1611208 5715520 1611312 5715472 1609480 5714768 +1611136 5715608 1611312 5715472 1611208 5715520 1609512 5714872 +1611312 5715472 1611208 5715520 1611136 5715608 1611192 5715728 +1611312 5715472 1611208 5715520 1611192 5715728 1611328 5715760 +1611312 5715472 1611208 5715520 1611328 5715760 1611424 5715704 +1611312 5715472 1611208 5715520 1611424 5715704 1611352 5715472 +1611192 5715728 1611240 5715760 1611328 5715760 1611208 5715520 +1611208 5715520 1611192 5715728 1611328 5715760 1611424 5715704 +1611136 5715608 1611128 5715672 1611192 5715728 1611208 5715520 +1611208 5715520 1609512 5714872 1611136 5715608 1611192 5715728 +1611208 5715520 1611136 5715608 1611192 5715728 1611328 5715760 +1611208 5715520 1611312 5715472 1609512 5714824 1609512 5714872 +1611312 5715472 1609512 5714824 1611208 5715520 1611424 5715704 +1609512 5714824 1611248 5715496 1611312 5715472 1609480 5714768 +1611208 5715520 1611248 5715496 1609512 5714824 1609512 5714872 +1611312 5715472 1611248 5715496 1611208 5715520 1611424 5715704 +1611208 5715520 1611328 5715760 1611424 5715704 1611248 5715496 +1611312 5715472 1611248 5715496 1611424 5715704 1611352 5715472 +1611208 5715520 1611192 5715728 1611328 5715760 1611248 5715496 +1611248 5715496 1609512 5714824 1611208 5715520 1611328 5715760 +1611424 5715704 1611312 5715472 1611248 5715496 1611328 5715760 +1611312 5715472 1609512 5714824 1611248 5715496 1611424 5715704 +1604696 5714600 1601824 5695840 1599875 5760125 1604712 5714680 +1599875 5599875 1601824 5695840 1604696 5714600 1604704 5714560 +1599875 5599875 1601824 5695840 1604704 5714560 1604744 5714504 +1599875 5599875 1601824 5695840 1604744 5714504 1604784 5714488 +1601824 5695840 1604696 5714600 1604704 5714560 1604744 5714504 +1599875 5599875 1601824 5695840 1604784 5714488 1608336 5713136 +1601824 5695840 1604744 5714504 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1601824 5695840 +1599875 5599875 1601824 5695840 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1601824 5695840 +1599875 5599875 1601824 5695840 1608608 5713032 1657056 5639384 +1608608 5713032 1657088 5639464 1657056 5639384 1601824 5695840 +1601824 5695840 1608336 5713136 1608608 5713032 1657088 5639464 +1657056 5639384 1599875 5599875 1601824 5695840 1657088 5639464 +1608608 5713032 1608648 5713040 1657088 5639464 1601824 5695840 +1657088 5639464 1657056 5639384 1601824 5695840 1608648 5713040 +1608608 5713032 1608648 5713040 1601824 5695840 1608336 5713136 +1608648 5713040 1663776 5646144 1657088 5639464 1601824 5695840 +1657088 5639464 1657056 5639384 1601824 5695840 1663776 5646144 +1608648 5713040 1663776 5646144 1601824 5695840 1608608 5713032 +1608648 5713040 1663880 5646248 1663776 5646144 1601824 5695840 +1608648 5713040 1611512 5715528 1663880 5646248 1601824 5695840 +1608648 5713040 1608720 5713120 1611512 5715528 1601824 5695840 +1611512 5715528 1611528 5715552 1663880 5646248 1601824 5695840 +1608648 5713040 1611512 5715528 1601824 5695840 1608608 5713032 +1663776 5646144 1657088 5639464 1601824 5695840 1663880 5646248 +1663880 5646248 1663776 5646144 1601824 5695840 1611512 5715528 +1663776 5646144 1663688 5645984 1657088 5639464 1601824 5695840 +1601824 5695840 1604784 5714488 1608336 5713136 1608608 5713032 +1599875 5599875 1601824 5695840 1657056 5639384 1657088 5639296 +1601824 5695840 1599875 5760125 1604696 5714600 1604704 5714560 +1601824 5695840 1604704 5714560 1604744 5714504 1604784 5714488 +1599875 5599875 1599875 5760125 1601824 5695840 1657056 5639384 +1611512 5715528 1602016 5695848 1601824 5695840 1608648 5713040 +1602016 5695848 1663880 5646248 1601824 5695840 1608648 5713040 +1611512 5715528 1663880 5646248 1602016 5695848 1608648 5713040 +1611512 5715528 1602016 5695848 1608648 5713040 1608720 5713120 +1663880 5646248 1602016 5695848 1611512 5715528 1611528 5715552 +1601824 5695840 1608608 5713032 1608648 5713040 1602016 5695848 +1601824 5695840 1608336 5713136 1608608 5713032 1602016 5695848 +1608336 5713136 1608576 5713048 1608608 5713032 1602016 5695848 +1601824 5695840 1608336 5713136 1602016 5695848 1663880 5646248 +1608648 5713040 1611512 5715528 1602016 5695848 1608608 5713032 +1608608 5713032 1608648 5713040 1602016 5695848 1608336 5713136 +1601824 5695840 1602016 5695848 1663880 5646248 1663776 5646144 +1601824 5695840 1608336 5713136 1602016 5695848 1663776 5646144 +1602016 5695848 1611512 5715528 1663880 5646248 1663776 5646144 +1601824 5695840 1602016 5695848 1663776 5646144 1657088 5639464 +1601824 5695840 1602016 5695848 1657088 5639464 1657056 5639384 +1601824 5695840 1608336 5713136 1602016 5695848 1657056 5639384 +1601824 5695840 1602016 5695848 1657056 5639384 1599875 5599875 +1602016 5695848 1657088 5639464 1657056 5639384 1599875 5599875 +1601824 5695840 1608336 5713136 1602016 5695848 1599875 5599875 +1602016 5695848 1663776 5646144 1657088 5639464 1657056 5639384 +1602016 5695848 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1602016 5695848 +1601824 5695840 1604784 5714488 1608336 5713136 1602016 5695848 +1601824 5695840 1604744 5714504 1604784 5714488 1602016 5695848 +1604784 5714488 1604840 5714480 1608336 5713136 1602016 5695848 +1608336 5713136 1608608 5713032 1602016 5695848 1604784 5714488 +1601824 5695840 1604784 5714488 1602016 5695848 1599875 5599875 +1657056 5639384 1657088 5639296 1599875 5599875 1602016 5695848 +1601824 5695840 1602016 5695848 1599875 5599875 1599875 5760125 +1602016 5695848 1602112 5695896 1663880 5646248 1663776 5646144 +1602016 5695848 1611512 5715528 1602112 5695896 1663776 5646144 +1611512 5715528 1602112 5695896 1602016 5695848 1608648 5713040 +1611512 5715528 1663880 5646248 1602112 5695896 1608648 5713040 +1602016 5695848 1608608 5713032 1608648 5713040 1602112 5695896 +1602112 5695896 1663776 5646144 1602016 5695848 1608608 5713032 +1608648 5713040 1611512 5715528 1602112 5695896 1608608 5713032 +1602112 5695896 1611512 5715528 1663880 5646248 1663776 5646144 +1611512 5715528 1602112 5695896 1608648 5713040 1608720 5713120 +1663880 5646248 1602112 5695896 1611512 5715528 1611528 5715552 +1602016 5695848 1608336 5713136 1608608 5713032 1602112 5695896 +1608336 5713136 1608576 5713048 1608608 5713032 1602112 5695896 +1602016 5695848 1604784 5714488 1608336 5713136 1602112 5695896 +1604784 5714488 1604840 5714480 1608336 5713136 1602112 5695896 +1608608 5713032 1608648 5713040 1602112 5695896 1608336 5713136 +1602016 5695848 1604784 5714488 1602112 5695896 1663776 5646144 +1608336 5713136 1608608 5713032 1602112 5695896 1604784 5714488 +1602016 5695848 1602112 5695896 1663776 5646144 1657088 5639464 +1602112 5695896 1663880 5646248 1663776 5646144 1657088 5639464 +1602016 5695848 1604784 5714488 1602112 5695896 1657088 5639464 +1602016 5695848 1602112 5695896 1657088 5639464 1657056 5639384 +1663776 5646144 1663688 5645984 1657088 5639464 1602112 5695896 +1602016 5695848 1601824 5695840 1604784 5714488 1602112 5695896 +1601824 5695840 1604744 5714504 1604784 5714488 1602112 5695896 +1604784 5714488 1608336 5713136 1602112 5695896 1604744 5714504 +1602016 5695848 1601824 5695840 1602112 5695896 1657088 5639464 +1601824 5695840 1604744 5714504 1602112 5695896 1602016 5695848 +1601824 5695840 1604704 5714560 1604744 5714504 1602112 5695896 +1611512 5715528 1602160 5695928 1602112 5695896 1608648 5713040 +1602160 5695928 1663880 5646248 1602112 5695896 1608648 5713040 +1611512 5715528 1663880 5646248 1602160 5695928 1608648 5713040 +1602112 5695896 1608608 5713032 1608648 5713040 1602160 5695928 +1602112 5695896 1608608 5713032 1602160 5695928 1663880 5646248 +1608648 5713040 1611512 5715528 1602160 5695928 1608608 5713032 +1602112 5695896 1608336 5713136 1608608 5713032 1602160 5695928 +1608336 5713136 1608576 5713048 1608608 5713032 1602160 5695928 +1602112 5695896 1608336 5713136 1602160 5695928 1663880 5646248 +1608608 5713032 1608648 5713040 1602160 5695928 1608336 5713136 +1602112 5695896 1602160 5695928 1663880 5646248 1663776 5646144 +1602112 5695896 1602160 5695928 1663776 5646144 1657088 5639464 +1602112 5695896 1608336 5713136 1602160 5695928 1657088 5639464 +1602160 5695928 1611512 5715528 1663880 5646248 1663776 5646144 +1602160 5695928 1663880 5646248 1663776 5646144 1657088 5639464 +1611512 5715528 1602160 5695928 1608648 5713040 1608720 5713120 +1663880 5646248 1602160 5695928 1611512 5715528 1611528 5715552 +1602112 5695896 1604784 5714488 1608336 5713136 1602160 5695928 +1604784 5714488 1604840 5714480 1608336 5713136 1602160 5695928 +1602112 5695896 1604744 5714504 1604784 5714488 1602160 5695928 +1602112 5695896 1601824 5695840 1604744 5714504 1602160 5695928 +1604744 5714504 1604784 5714488 1602160 5695928 1601824 5695840 +1602112 5695896 1601824 5695840 1602160 5695928 1657088 5639464 +1608336 5713136 1608608 5713032 1602160 5695928 1604784 5714488 +1604784 5714488 1608336 5713136 1602160 5695928 1604744 5714504 +1602112 5695896 1602160 5695928 1657088 5639464 1602016 5695848 +1663776 5646144 1663688 5645984 1657088 5639464 1602160 5695928 +1602112 5695896 1602016 5695848 1601824 5695840 1602160 5695928 +1601824 5695840 1604704 5714560 1604744 5714504 1602160 5695928 +1602160 5695928 1602200 5696008 1663880 5646248 1663776 5646144 +1611512 5715528 1602200 5696008 1602160 5695928 1608648 5713040 +1602160 5695928 1608608 5713032 1608648 5713040 1602200 5696008 +1602200 5696008 1663880 5646248 1602160 5695928 1608608 5713032 +1608648 5713040 1611512 5715528 1602200 5696008 1608608 5713032 +1611512 5715528 1663880 5646248 1602200 5696008 1608648 5713040 +1602160 5695928 1608336 5713136 1608608 5713032 1602200 5696008 +1608336 5713136 1608576 5713048 1608608 5713032 1602200 5696008 +1608608 5713032 1608648 5713040 1602200 5696008 1608336 5713136 +1602160 5695928 1608336 5713136 1602200 5696008 1663880 5646248 +1602160 5695928 1604784 5714488 1608336 5713136 1602200 5696008 +1604784 5714488 1604840 5714480 1608336 5713136 1602200 5696008 +1602160 5695928 1604784 5714488 1602200 5696008 1663880 5646248 +1608336 5713136 1608608 5713032 1602200 5696008 1604784 5714488 +1611512 5715528 1602200 5696008 1608648 5713040 1608720 5713120 +1663880 5646248 1602200 5696008 1611512 5715528 1611528 5715552 +1602160 5695928 1604744 5714504 1604784 5714488 1602200 5696008 +1602160 5695928 1601824 5695840 1604744 5714504 1602200 5696008 +1602160 5695928 1602112 5695896 1601824 5695840 1602200 5696008 +1601824 5695840 1604744 5714504 1602200 5696008 1602112 5695896 +1602160 5695928 1602112 5695896 1602200 5696008 1663880 5646248 +1604784 5714488 1608336 5713136 1602200 5696008 1604744 5714504 +1604744 5714504 1604784 5714488 1602200 5696008 1601824 5695840 +1602112 5695896 1602016 5695848 1601824 5695840 1602200 5696008 +1602112 5695896 1602016 5695848 1602200 5696008 1602160 5695928 +1601824 5695840 1604744 5714504 1602200 5696008 1602016 5695848 +1601824 5695840 1604704 5714560 1604744 5714504 1602200 5696008 +1602200 5696008 1602224 5696056 1663880 5646248 1602160 5695928 +1611512 5715528 1602224 5696056 1602200 5696008 1608648 5713040 +1602200 5696008 1608608 5713032 1608648 5713040 1602224 5696056 +1602200 5696008 1608336 5713136 1608608 5713032 1602224 5696056 +1608336 5713136 1608576 5713048 1608608 5713032 1602224 5696056 +1608608 5713032 1608648 5713040 1602224 5696056 1608336 5713136 +1608648 5713040 1611512 5715528 1602224 5696056 1608608 5713032 +1611512 5715528 1663880 5646248 1602224 5696056 1608648 5713040 +1602224 5696056 1663880 5646248 1602200 5696008 1608336 5713136 +1602200 5696008 1604784 5714488 1608336 5713136 1602224 5696056 +1604784 5714488 1604840 5714480 1608336 5713136 1602224 5696056 +1608336 5713136 1608608 5713032 1602224 5696056 1604784 5714488 +1602200 5696008 1604784 5714488 1602224 5696056 1663880 5646248 +1602200 5696008 1604744 5714504 1604784 5714488 1602224 5696056 +1602200 5696008 1604744 5714504 1602224 5696056 1663880 5646248 +1604784 5714488 1608336 5713136 1602224 5696056 1604744 5714504 +1611512 5715528 1602224 5696056 1608648 5713040 1608720 5713120 +1663880 5646248 1602224 5696056 1611512 5715528 1611528 5715552 +1602200 5696008 1601824 5695840 1604744 5714504 1602224 5696056 +1602200 5696008 1602016 5695848 1601824 5695840 1602224 5696056 +1602200 5696008 1601824 5695840 1602224 5696056 1663880 5646248 +1604744 5714504 1604784 5714488 1602224 5696056 1601824 5695840 +1601824 5695840 1604704 5714560 1604744 5714504 1602224 5696056 +1602224 5696056 1602224 5696096 1604744 5714504 1604784 5714488 +1602224 5696056 1601824 5695840 1602224 5696096 1604784 5714488 +1602224 5696096 1601824 5695840 1604744 5714504 1604784 5714488 +1602224 5696056 1602224 5696096 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602224 5696096 +1602224 5696056 1602224 5696096 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602224 5696096 +1602224 5696056 1602224 5696096 1608608 5713032 1608648 5713040 +1602224 5696096 1608336 5713136 1608608 5713032 1608648 5713040 +1602224 5696056 1602224 5696096 1608648 5713040 1611512 5715528 +1602224 5696096 1608608 5713032 1608648 5713040 1611512 5715528 +1602224 5696056 1602224 5696096 1611512 5715528 1663880 5646248 +1602224 5696096 1604744 5714504 1604784 5714488 1608336 5713136 +1602224 5696056 1601824 5695840 1602224 5696096 1611512 5715528 +1602224 5696096 1604784 5714488 1608336 5713136 1608608 5713032 +1608648 5713040 1608720 5713120 1611512 5715528 1602224 5696096 +1601824 5695840 1602224 5696096 1602224 5696056 1602200 5696008 +1601824 5695840 1602224 5696096 1602200 5696008 1602016 5695848 +1602224 5696096 1611512 5715528 1602224 5696056 1602200 5696008 +1601824 5695840 1604744 5714504 1602224 5696096 1602016 5695848 +1602224 5696096 1602224 5696056 1602200 5696008 1602016 5695848 +1602200 5696008 1602112 5695896 1602016 5695848 1602224 5696096 +1604744 5714504 1602224 5696096 1601824 5695840 1604704 5714560 +1602224 5696096 1602200 5696144 1604744 5714504 1604784 5714488 +1602224 5696096 1602200 5696144 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602200 5696144 +1602200 5696144 1604744 5714504 1604784 5714488 1608336 5713136 +1602224 5696096 1601824 5695840 1602200 5696144 1608336 5713136 +1601824 5695840 1602200 5696144 1602224 5696096 1602016 5695848 +1602224 5696096 1602200 5696008 1602016 5695848 1602200 5696144 +1602200 5696144 1608336 5713136 1602224 5696096 1602200 5696008 +1602016 5695848 1601824 5695840 1602200 5696144 1602200 5696008 +1602200 5696144 1601824 5695840 1604744 5714504 1604784 5714488 +1601824 5695840 1604744 5714504 1602200 5696144 1602016 5695848 +1602224 5696096 1602200 5696144 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602200 5696144 +1602224 5696096 1602200 5696144 1608608 5713032 1608648 5713040 +1602224 5696096 1602200 5696144 1608648 5713040 1611512 5715528 +1602200 5696144 1604784 5714488 1608336 5713136 1608608 5713032 +1602224 5696096 1602200 5696008 1602200 5696144 1608648 5713040 +1602200 5696144 1608336 5713136 1608608 5713032 1608648 5713040 +1602224 5696096 1602224 5696056 1602200 5696008 1602200 5696144 +1602200 5696008 1602112 5695896 1602016 5695848 1602200 5696144 +1602200 5696008 1602160 5695928 1602112 5695896 1602200 5696144 +1602200 5696008 1602112 5695896 1602200 5696144 1602224 5696096 +1602016 5695848 1601824 5695840 1602200 5696144 1602112 5695896 +1604744 5714504 1602200 5696144 1601824 5695840 1604704 5714560 +1604744 5714504 1604784 5714488 1602200 5696144 1604704 5714560 +1602200 5696144 1602016 5695848 1601824 5695840 1604704 5714560 +1601824 5695840 1604696 5714600 1604704 5714560 1602200 5696144 +1601824 5695840 1602176 5696184 1602200 5696144 1602016 5695848 +1602200 5696144 1602112 5695896 1602016 5695848 1602176 5696184 +1602176 5696184 1604704 5714560 1602200 5696144 1602112 5695896 +1602016 5695848 1601824 5695840 1602176 5696184 1602112 5695896 +1601824 5695840 1604704 5714560 1602176 5696184 1602016 5695848 +1604704 5714560 1602176 5696184 1601824 5695840 1604696 5714600 +1602200 5696144 1602200 5696008 1602112 5695896 1602176 5696184 +1602200 5696008 1602160 5695928 1602112 5695896 1602176 5696184 +1602200 5696144 1602224 5696096 1602200 5696008 1602176 5696184 +1602112 5695896 1602016 5695848 1602176 5696184 1602200 5696008 +1602200 5696144 1602200 5696008 1602176 5696184 1604704 5714560 +1602200 5696144 1602176 5696184 1604704 5714560 1604744 5714504 +1602200 5696144 1602176 5696184 1604744 5714504 1604784 5714488 +1602200 5696144 1602176 5696184 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602176 5696184 +1602200 5696144 1602176 5696184 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602176 5696184 +1602176 5696184 1604784 5714488 1608336 5713136 1608608 5713032 +1602176 5696184 1604744 5714504 1604784 5714488 1608336 5713136 +1602200 5696144 1602200 5696008 1602176 5696184 1608608 5713032 +1602176 5696184 1601824 5695840 1604704 5714560 1604744 5714504 +1602200 5696144 1602176 5696184 1608608 5713032 1608648 5713040 +1602200 5696144 1602176 5696184 1608648 5713040 1602224 5696096 +1602176 5696184 1608336 5713136 1608608 5713032 1608648 5713040 +1602200 5696144 1602200 5696008 1602176 5696184 1608648 5713040 +1602176 5696184 1604704 5714560 1604744 5714504 1604784 5714488 +1602176 5696184 1602136 5696208 1604704 5714560 1604744 5714504 +1602176 5696184 1601824 5695840 1602136 5696208 1604744 5714504 +1601824 5695840 1602136 5696208 1602176 5696184 1602016 5695848 +1601824 5695840 1604704 5714560 1602136 5696208 1602016 5695848 +1602176 5696184 1602112 5695896 1602016 5695848 1602136 5696208 +1602176 5696184 1602200 5696008 1602112 5695896 1602136 5696208 +1602200 5696008 1602160 5695928 1602112 5695896 1602136 5696208 +1602112 5695896 1602016 5695848 1602136 5696208 1602200 5696008 +1602136 5696208 1604744 5714504 1602176 5696184 1602200 5696008 +1602016 5695848 1601824 5695840 1602136 5696208 1602112 5695896 +1602136 5696208 1601824 5695840 1604704 5714560 1604744 5714504 +1604704 5714560 1602136 5696208 1601824 5695840 1604696 5714600 +1602176 5696184 1602200 5696144 1602200 5696008 1602136 5696208 +1602200 5696144 1602224 5696096 1602200 5696008 1602136 5696208 +1602200 5696008 1602112 5695896 1602136 5696208 1602200 5696144 +1602176 5696184 1602200 5696144 1602136 5696208 1604744 5714504 +1602176 5696184 1602136 5696208 1604744 5714504 1604784 5714488 +1602176 5696184 1602136 5696208 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602136 5696208 +1602176 5696184 1602136 5696208 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602136 5696208 +1602176 5696184 1602136 5696208 1608608 5713032 1608648 5713040 +1602136 5696208 1604784 5714488 1608336 5713136 1608608 5713032 +1602136 5696208 1604704 5714560 1604744 5714504 1604784 5714488 +1602176 5696184 1602200 5696144 1602136 5696208 1608608 5713032 +1602136 5696208 1604744 5714504 1604784 5714488 1608336 5713136 +1601824 5695840 1602072 5696232 1602136 5696208 1602016 5695848 +1602072 5696232 1604704 5714560 1602136 5696208 1602016 5695848 +1601824 5695840 1604704 5714560 1602072 5696232 1602016 5695848 +1602136 5696208 1602112 5695896 1602016 5695848 1602072 5696232 +1602136 5696208 1602112 5695896 1602072 5696232 1604704 5714560 +1602016 5695848 1601824 5695840 1602072 5696232 1602112 5695896 +1602136 5696208 1602200 5696008 1602112 5695896 1602072 5696232 +1602200 5696008 1602160 5695928 1602112 5695896 1602072 5696232 +1602136 5696208 1602200 5696008 1602072 5696232 1604704 5714560 +1602136 5696208 1602200 5696144 1602200 5696008 1602072 5696232 +1602112 5695896 1602016 5695848 1602072 5696232 1602200 5696008 +1602136 5696208 1602072 5696232 1604704 5714560 1604744 5714504 +1602136 5696208 1602200 5696008 1602072 5696232 1604744 5714504 +1602072 5696232 1601824 5695840 1604704 5714560 1604744 5714504 +1602136 5696208 1602072 5696232 1604744 5714504 1604784 5714488 +1602136 5696208 1602200 5696008 1602072 5696232 1604784 5714488 +1602072 5696232 1604704 5714560 1604744 5714504 1604784 5714488 +1604704 5714560 1602072 5696232 1601824 5695840 1604696 5714600 +1602136 5696208 1602072 5696232 1604784 5714488 1608336 5713136 +1602136 5696208 1602200 5696008 1602072 5696232 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602072 5696232 +1602136 5696208 1602072 5696232 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602072 5696232 +1602136 5696208 1602200 5696008 1602072 5696232 1608608 5713032 +1602136 5696208 1602072 5696232 1608608 5713032 1602176 5696184 +1602072 5696232 1604744 5714504 1604784 5714488 1608336 5713136 +1602072 5696232 1604784 5714488 1608336 5713136 1608608 5713032 +1602072 5696232 1602048 5696232 1604704 5714560 1604744 5714504 +1602072 5696232 1601824 5695840 1602048 5696232 1604744 5714504 +1601824 5695840 1602048 5696232 1602072 5696232 1602016 5695848 +1602072 5696232 1602112 5695896 1602016 5695848 1602048 5696232 +1602048 5696232 1604744 5714504 1602072 5696232 1602112 5695896 +1602016 5695848 1601824 5695840 1602048 5696232 1602112 5695896 +1602048 5696232 1601824 5695840 1604704 5714560 1604744 5714504 +1601824 5695840 1604704 5714560 1602048 5696232 1602016 5695848 +1602072 5696232 1602200 5696008 1602112 5695896 1602048 5696232 +1602200 5696008 1602160 5695928 1602112 5695896 1602048 5696232 +1602112 5695896 1602016 5695848 1602048 5696232 1602200 5696008 +1602072 5696232 1602200 5696008 1602048 5696232 1604744 5714504 +1602072 5696232 1602136 5696208 1602200 5696008 1602048 5696232 +1602072 5696232 1602136 5696208 1602048 5696232 1604744 5714504 +1602136 5696208 1602200 5696144 1602200 5696008 1602048 5696232 +1602200 5696008 1602112 5695896 1602048 5696232 1602136 5696208 +1602072 5696232 1602048 5696232 1604744 5714504 1604784 5714488 +1602048 5696232 1604704 5714560 1604744 5714504 1604784 5714488 +1602072 5696232 1602136 5696208 1602048 5696232 1604784 5714488 +1602072 5696232 1602048 5696232 1604784 5714488 1608336 5713136 +1604704 5714560 1602048 5696232 1601824 5695840 1604696 5714600 +1602048 5696232 1601960 5696192 1604704 5714560 1604744 5714504 +1602048 5696232 1601960 5696192 1604744 5714504 1604784 5714488 +1602048 5696232 1601824 5695840 1601960 5696192 1604744 5714504 +1601824 5695840 1601960 5696192 1602048 5696232 1602016 5695848 +1602048 5696232 1602112 5695896 1602016 5695848 1601960 5696192 +1602048 5696232 1602200 5696008 1602112 5695896 1601960 5696192 +1602200 5696008 1602160 5695928 1602112 5695896 1601960 5696192 +1602112 5695896 1602016 5695848 1601960 5696192 1602200 5696008 +1601960 5696192 1604744 5714504 1602048 5696232 1602200 5696008 +1602016 5695848 1601824 5695840 1601960 5696192 1602112 5695896 +1601960 5696192 1601824 5695840 1604704 5714560 1604744 5714504 +1601824 5695840 1604704 5714560 1601960 5696192 1602016 5695848 +1602048 5696232 1602136 5696208 1602200 5696008 1601960 5696192 +1602200 5696008 1602112 5695896 1601960 5696192 1602136 5696208 +1602048 5696232 1602136 5696208 1601960 5696192 1604744 5714504 +1602136 5696208 1602200 5696144 1602200 5696008 1601960 5696192 +1602048 5696232 1602072 5696232 1602136 5696208 1601960 5696192 +1604704 5714560 1601960 5696192 1601824 5695840 1604696 5714600 +1604704 5714560 1604744 5714504 1601960 5696192 1604696 5714600 +1601960 5696192 1602016 5695848 1601824 5695840 1604696 5714600 +1601824 5695840 1599875 5760125 1604696 5714600 1601960 5696192 +1601824 5695840 1601880 5696144 1601960 5696192 1602016 5695848 +1601824 5695840 1604696 5714600 1601880 5696144 1602016 5695848 +1601960 5696192 1602112 5695896 1602016 5695848 1601880 5696144 +1601960 5696192 1602200 5696008 1602112 5695896 1601880 5696144 +1601880 5696144 1604696 5714600 1601960 5696192 1602112 5695896 +1602016 5695848 1601824 5695840 1601880 5696144 1602112 5695896 +1601960 5696192 1601880 5696144 1604696 5714600 1604704 5714560 +1601880 5696144 1601824 5695840 1604696 5714600 1604704 5714560 +1601960 5696192 1601880 5696144 1604704 5714560 1604744 5714504 +1601960 5696192 1601880 5696144 1604744 5714504 1602048 5696232 +1601960 5696192 1602112 5695896 1601880 5696144 1604744 5714504 +1601880 5696144 1604696 5714600 1604704 5714560 1604744 5714504 +1604696 5714600 1601880 5696144 1601824 5695840 1599875 5760125 +1604696 5714600 1604704 5714560 1601880 5696144 1599875 5760125 +1601880 5696144 1602016 5695848 1601824 5695840 1599875 5760125 +1604696 5714600 1601880 5696144 1599875 5760125 1604712 5714680 +1601824 5695840 1599875 5599875 1599875 5760125 1601880 5696144 +1601824 5695840 1601784 5696088 1599875 5760125 1601880 5696144 +1601784 5696088 1599875 5599875 1599875 5760125 1601880 5696144 +1601824 5695840 1601784 5696088 1601880 5696144 1602016 5695848 +1601824 5695840 1599875 5599875 1601784 5696088 1601880 5696144 +1599875 5760125 1604696 5714600 1601880 5696144 1601784 5696088 +1604696 5714600 1604704 5714560 1601880 5696144 1601784 5696088 +1599875 5760125 1604696 5714600 1601784 5696088 1599875 5599875 +1599875 5760125 1604712 5714680 1604696 5714600 1601784 5696088 +1601880 5696144 1601824 5695840 1601784 5696088 1604704 5714560 +1604704 5714560 1604744 5714504 1601880 5696144 1601784 5696088 +1604704 5714560 1604744 5714504 1601784 5696088 1604696 5714600 +1604744 5714504 1601960 5696192 1601880 5696144 1601784 5696088 +1604744 5714504 1602048 5696232 1601960 5696192 1601784 5696088 +1601880 5696144 1601824 5695840 1601784 5696088 1601960 5696192 +1604744 5714504 1601960 5696192 1601784 5696088 1604704 5714560 +1604696 5714600 1604704 5714560 1601784 5696088 1599875 5760125 +1599875 5599875 1601784 5696088 1601824 5695840 1602016 5695848 +1601784 5696088 1601760 5696064 1599875 5760125 1604696 5714600 +1599875 5599875 1601760 5696064 1601784 5696088 1601824 5695840 +1599875 5599875 1599875 5760125 1601760 5696064 1601824 5695840 +1601784 5696088 1601824 5695840 1601760 5696064 1604696 5714600 +1601784 5696088 1601880 5696144 1601824 5695840 1601760 5696064 +1601760 5696064 1599875 5599875 1599875 5760125 1604696 5714600 +1599875 5760125 1604712 5714680 1604696 5714600 1601760 5696064 +1601784 5696088 1601760 5696064 1604696 5714600 1604704 5714560 +1601784 5696088 1601760 5696064 1604704 5714560 1604744 5714504 +1601760 5696064 1599875 5760125 1604696 5714600 1604704 5714560 +1601784 5696088 1601824 5695840 1601760 5696064 1604704 5714560 +1599875 5599875 1601760 5696064 1601824 5695840 1602016 5695848 +1601760 5696064 1601760 5696040 1599875 5599875 1599875 5760125 +1601760 5696040 1601824 5695840 1599875 5599875 1599875 5760125 +1601824 5695840 1601760 5696040 1601760 5696064 1601784 5696088 +1601824 5695840 1599875 5599875 1601760 5696040 1601784 5696088 +1601824 5695840 1601760 5696040 1601784 5696088 1601880 5696144 +1601824 5695840 1599875 5599875 1601760 5696040 1601880 5696144 +1601824 5695840 1601760 5696040 1601880 5696144 1602016 5695848 +1601824 5695840 1599875 5599875 1601760 5696040 1602016 5695848 +1601760 5696040 1601760 5696064 1601784 5696088 1601880 5696144 +1601760 5696040 1601784 5696088 1601880 5696144 1602016 5695848 +1601760 5696064 1601760 5696040 1599875 5760125 1604696 5714600 +1601760 5696064 1601784 5696088 1601760 5696040 1599875 5760125 +1601880 5696144 1602112 5695896 1602016 5695848 1601760 5696040 +1599875 5599875 1601760 5696040 1601824 5695840 1602016 5695848 +1601824 5695840 1601768 5695920 1601760 5696040 1602016 5695848 +1601824 5695840 1599875 5599875 1601768 5695920 1602016 5695848 +1601760 5696040 1601880 5696144 1602016 5695848 1601768 5695920 +1602016 5695848 1601824 5695840 1601768 5695920 1601880 5696144 +1601760 5696040 1601768 5695920 1599875 5599875 1599875 5760125 +1601768 5695920 1599875 5599875 1601760 5696040 1601880 5696144 +1601760 5696040 1601784 5696088 1601880 5696144 1601768 5695920 +1601880 5696144 1602112 5695896 1602016 5695848 1601768 5695920 +1599875 5599875 1601768 5695920 1601824 5695840 1602016 5695848 +1601768 5695920 1601776 5695896 1599875 5599875 1601760 5696040 +1601824 5695840 1601776 5695896 1601768 5695920 1602016 5695848 +1599875 5599875 1601776 5695896 1601824 5695840 1602016 5695848 +1601760 5696064 1601784 5696704 1604696 5714600 1604704 5714560 +1601784 5696704 1599875 5760125 1604696 5714600 1604704 5714560 +1599875 5760125 1601784 5696704 1601760 5696064 1601760 5696040 +1601760 5696064 1599875 5760125 1601784 5696704 1604704 5714560 +1604696 5714600 1601784 5696704 1599875 5760125 1604712 5714680 +1601760 5696064 1601784 5696704 1604704 5714560 1601784 5696088 +1604704 5714560 1604744 5714504 1601784 5696088 1601784 5696704 +1601784 5696704 1604696 5714600 1604704 5714560 1604744 5714504 +1601760 5696064 1599875 5760125 1601784 5696704 1601784 5696088 +1604744 5714504 1601960 5696192 1601784 5696088 1601784 5696704 +1604744 5714504 1601960 5696192 1601784 5696704 1604704 5714560 +1604744 5714504 1602048 5696232 1601960 5696192 1601784 5696704 +1604744 5714504 1602048 5696232 1601784 5696704 1604704 5714560 +1604744 5714504 1604784 5714488 1602048 5696232 1601784 5696704 +1604744 5714504 1604784 5714488 1601784 5696704 1604704 5714560 +1602048 5696232 1601960 5696192 1601784 5696704 1604784 5714488 +1601960 5696192 1601880 5696144 1601784 5696088 1601784 5696704 +1604784 5714488 1602072 5696232 1602048 5696232 1601784 5696704 +1604784 5714488 1602072 5696232 1601784 5696704 1604744 5714504 +1602048 5696232 1601960 5696192 1601784 5696704 1602072 5696232 +1604784 5714488 1608336 5713136 1602072 5696232 1601784 5696704 +1604784 5714488 1608336 5713136 1601784 5696704 1604744 5714504 +1604784 5714488 1604840 5714480 1608336 5713136 1601784 5696704 +1602072 5696232 1602048 5696232 1601784 5696704 1608336 5713136 +1601960 5696192 1601880 5696144 1601784 5696704 1602048 5696232 +1601784 5696088 1601760 5696064 1601784 5696704 1601880 5696144 +1608336 5713136 1608608 5713032 1602072 5696232 1601784 5696704 +1608336 5713136 1608576 5713048 1608608 5713032 1601784 5696704 +1608608 5713032 1602136 5696208 1602072 5696232 1601784 5696704 +1608608 5713032 1602176 5696184 1602136 5696208 1601784 5696704 +1608608 5713032 1608648 5713040 1602176 5696184 1601784 5696704 +1602136 5696208 1602072 5696232 1601784 5696704 1602176 5696184 +1608336 5713136 1608608 5713032 1601784 5696704 1604784 5714488 +1602072 5696232 1602048 5696232 1601784 5696704 1602136 5696208 +1608608 5713032 1602176 5696184 1601784 5696704 1608336 5713136 +1602176 5696184 1601848 5696640 1608608 5713032 1608648 5713040 +1601784 5696704 1601848 5696640 1602176 5696184 1602136 5696208 +1601784 5696704 1608608 5713032 1601848 5696640 1602136 5696208 +1601848 5696640 1608608 5713032 1602176 5696184 1602136 5696208 +1601784 5696704 1601848 5696640 1602136 5696208 1602072 5696232 +1601784 5696704 1608608 5713032 1601848 5696640 1602072 5696232 +1601848 5696640 1602176 5696184 1602136 5696208 1602072 5696232 +1601784 5696704 1601848 5696640 1602072 5696232 1602048 5696232 +1601784 5696704 1601848 5696640 1602048 5696232 1601960 5696192 +1601784 5696704 1608608 5713032 1601848 5696640 1601960 5696192 +1601848 5696640 1602136 5696208 1602072 5696232 1602048 5696232 +1601848 5696640 1602072 5696232 1602048 5696232 1601960 5696192 +1601784 5696704 1601848 5696640 1601960 5696192 1601880 5696144 +1601848 5696640 1602048 5696232 1601960 5696192 1601880 5696144 +1601784 5696704 1601848 5696640 1601880 5696144 1601784 5696088 +1601784 5696704 1608608 5713032 1601848 5696640 1601784 5696088 +1601848 5696640 1601960 5696192 1601880 5696144 1601784 5696088 +1601784 5696704 1601848 5696640 1601784 5696088 1601760 5696064 +1608608 5713032 1601848 5696640 1601784 5696704 1608336 5713136 +1601848 5696640 1601896 5696632 1602176 5696184 1602136 5696208 +1601848 5696640 1608608 5713032 1601896 5696632 1602136 5696208 +1608608 5713032 1601896 5696632 1601848 5696640 1601784 5696704 +1601896 5696632 1602136 5696208 1601848 5696640 1601784 5696704 +1601896 5696632 1608608 5713032 1602176 5696184 1602136 5696208 +1608608 5713032 1602176 5696184 1601896 5696632 1601784 5696704 +1602176 5696184 1601896 5696632 1608608 5713032 1608648 5713040 +1602176 5696184 1602136 5696208 1601896 5696632 1608648 5713040 +1601896 5696632 1601784 5696704 1608608 5713032 1608648 5713040 +1601848 5696640 1601896 5696632 1602136 5696208 1602072 5696232 +1601896 5696632 1602176 5696184 1602136 5696208 1602072 5696232 +1601848 5696640 1601784 5696704 1601896 5696632 1602072 5696232 +1601848 5696640 1601896 5696632 1602072 5696232 1602048 5696232 +1601848 5696640 1601784 5696704 1601896 5696632 1602048 5696232 +1601896 5696632 1602136 5696208 1602072 5696232 1602048 5696232 +1601848 5696640 1601896 5696632 1602048 5696232 1601960 5696192 +1601848 5696640 1601896 5696632 1601960 5696192 1601880 5696144 +1601848 5696640 1601784 5696704 1601896 5696632 1601960 5696192 +1601896 5696632 1602072 5696232 1602048 5696232 1601960 5696192 +1602176 5696184 1601896 5696632 1608648 5713040 1602200 5696144 +1608608 5713032 1601896 5696632 1601784 5696704 1608336 5713136 +1601896 5696632 1601928 5696648 1602176 5696184 1602136 5696208 +1601896 5696632 1601928 5696648 1602136 5696208 1602072 5696232 +1601928 5696648 1602176 5696184 1602136 5696208 1602072 5696232 +1601896 5696632 1608648 5713040 1601928 5696648 1602072 5696232 +1601928 5696648 1608648 5713040 1602176 5696184 1602136 5696208 +1608648 5713040 1601928 5696648 1601896 5696632 1608608 5713032 +1601928 5696648 1602072 5696232 1601896 5696632 1608608 5713032 +1601896 5696632 1601784 5696704 1608608 5713032 1601928 5696648 +1601896 5696632 1601848 5696640 1601784 5696704 1601928 5696648 +1601896 5696632 1601848 5696640 1601928 5696648 1602072 5696232 +1601784 5696704 1608608 5713032 1601928 5696648 1601848 5696640 +1608648 5713040 1602176 5696184 1601928 5696648 1608608 5713032 +1608608 5713032 1608648 5713040 1601928 5696648 1601784 5696704 +1601896 5696632 1601928 5696648 1602072 5696232 1602048 5696232 +1601928 5696648 1602136 5696208 1602072 5696232 1602048 5696232 +1601896 5696632 1601848 5696640 1601928 5696648 1602048 5696232 +1601896 5696632 1601928 5696648 1602048 5696232 1601960 5696192 +1602176 5696184 1601928 5696648 1608648 5713040 1602200 5696144 +1601928 5696648 1608608 5713032 1608648 5713040 1602200 5696144 +1602176 5696184 1602136 5696208 1601928 5696648 1602200 5696144 +1608648 5713040 1602224 5696096 1602200 5696144 1601928 5696648 +1601784 5696704 1608336 5713136 1608608 5713032 1601928 5696648 +1608336 5713136 1608576 5713048 1608608 5713032 1601928 5696648 +1601784 5696704 1608336 5713136 1601928 5696648 1601848 5696640 +1608608 5713032 1608648 5713040 1601928 5696648 1608336 5713136 +1601784 5696704 1604784 5714488 1608336 5713136 1601928 5696648 +1608648 5713040 1601984 5696648 1601928 5696648 1608608 5713032 +1601984 5696648 1602200 5696144 1601928 5696648 1608608 5713032 +1602200 5696144 1601984 5696648 1608648 5713040 1602224 5696096 +1602200 5696144 1601928 5696648 1601984 5696648 1602224 5696096 +1608648 5713040 1611512 5715528 1602224 5696096 1601984 5696648 +1601928 5696648 1608336 5713136 1608608 5713032 1601984 5696648 +1608336 5713136 1608576 5713048 1608608 5713032 1601984 5696648 +1601928 5696648 1608336 5713136 1601984 5696648 1602200 5696144 +1608608 5713032 1608648 5713040 1601984 5696648 1608336 5713136 +1601928 5696648 1601984 5696648 1602200 5696144 1602176 5696184 +1601928 5696648 1608336 5713136 1601984 5696648 1602176 5696184 +1601984 5696648 1602224 5696096 1602200 5696144 1602176 5696184 +1601928 5696648 1601984 5696648 1602176 5696184 1602136 5696208 +1601928 5696648 1601984 5696648 1602136 5696208 1602072 5696232 +1601928 5696648 1601984 5696648 1602072 5696232 1602048 5696232 +1601984 5696648 1602136 5696208 1602072 5696232 1602048 5696232 +1601928 5696648 1608336 5713136 1601984 5696648 1602048 5696232 +1601984 5696648 1602176 5696184 1602136 5696208 1602072 5696232 +1601928 5696648 1601984 5696648 1602048 5696232 1601896 5696632 +1601984 5696648 1602072 5696232 1602048 5696232 1601896 5696632 +1601928 5696648 1608336 5713136 1601984 5696648 1601896 5696632 +1602048 5696232 1601960 5696192 1601896 5696632 1601984 5696648 +1601984 5696648 1602200 5696144 1602176 5696184 1602136 5696208 +1608648 5713040 1602224 5696096 1601984 5696648 1608608 5713032 +1601928 5696648 1601784 5696704 1608336 5713136 1601984 5696648 +1601928 5696648 1601848 5696640 1601784 5696704 1601984 5696648 +1601928 5696648 1601784 5696704 1601984 5696648 1601896 5696632 +1608336 5713136 1608608 5713032 1601984 5696648 1601784 5696704 +1601784 5696704 1604784 5714488 1608336 5713136 1601984 5696648 +1601984 5696648 1602064 5696680 1602224 5696096 1602200 5696144 +1601984 5696648 1602064 5696680 1602200 5696144 1602176 5696184 +1602064 5696680 1602224 5696096 1602200 5696144 1602176 5696184 +1602224 5696096 1602064 5696680 1608648 5713040 1611512 5715528 +1601984 5696648 1602064 5696680 1602176 5696184 1602136 5696208 +1602064 5696680 1602200 5696144 1602176 5696184 1602136 5696208 +1601984 5696648 1602064 5696680 1602136 5696208 1602072 5696232 +1601984 5696648 1602064 5696680 1602072 5696232 1602048 5696232 +1602064 5696680 1602176 5696184 1602136 5696208 1602072 5696232 +1601984 5696648 1608648 5713040 1602064 5696680 1602072 5696232 +1608648 5713040 1602064 5696680 1601984 5696648 1608608 5713032 +1601984 5696648 1608336 5713136 1608608 5713032 1602064 5696680 +1608336 5713136 1608576 5713048 1608608 5713032 1602064 5696680 +1601984 5696648 1601784 5696704 1608336 5713136 1602064 5696680 +1608336 5713136 1608608 5713032 1602064 5696680 1601784 5696704 +1601784 5696704 1604784 5714488 1608336 5713136 1602064 5696680 +1601784 5696704 1604744 5714504 1604784 5714488 1602064 5696680 +1604784 5714488 1604840 5714480 1608336 5713136 1602064 5696680 +1608336 5713136 1608608 5713032 1602064 5696680 1604784 5714488 +1601784 5696704 1604784 5714488 1602064 5696680 1601984 5696648 +1602064 5696680 1602072 5696232 1601984 5696648 1601784 5696704 +1608608 5713032 1608648 5713040 1602064 5696680 1608336 5713136 +1602064 5696680 1608648 5713040 1602224 5696096 1602200 5696144 +1608648 5713040 1602224 5696096 1602064 5696680 1608608 5713032 +1601984 5696648 1601928 5696648 1601784 5696704 1602064 5696680 +1601928 5696648 1601848 5696640 1601784 5696704 1602064 5696680 +1601784 5696704 1604784 5714488 1602064 5696680 1601928 5696648 +1601984 5696648 1601928 5696648 1602064 5696680 1602072 5696232 +1602224 5696096 1602096 5696712 1608648 5713040 1611512 5715528 +1602064 5696680 1602096 5696712 1602224 5696096 1602200 5696144 +1602064 5696680 1602096 5696712 1602200 5696144 1602176 5696184 +1602064 5696680 1602096 5696712 1602176 5696184 1602136 5696208 +1602096 5696712 1602200 5696144 1602176 5696184 1602136 5696208 +1602064 5696680 1602096 5696712 1602136 5696208 1602072 5696232 +1602096 5696712 1602224 5696096 1602200 5696144 1602176 5696184 +1602064 5696680 1608648 5713040 1602096 5696712 1602136 5696208 +1608648 5713040 1602096 5696712 1602064 5696680 1608608 5713032 +1602064 5696680 1608336 5713136 1608608 5713032 1602096 5696712 +1608336 5713136 1608576 5713048 1608608 5713032 1602096 5696712 +1602064 5696680 1604784 5714488 1608336 5713136 1602096 5696712 +1604784 5714488 1604840 5714480 1608336 5713136 1602096 5696712 +1602064 5696680 1601784 5696704 1604784 5714488 1602096 5696712 +1601784 5696704 1604744 5714504 1604784 5714488 1602096 5696712 +1604784 5714488 1608336 5713136 1602096 5696712 1601784 5696704 +1602064 5696680 1601928 5696648 1601784 5696704 1602096 5696712 +1601928 5696648 1601848 5696640 1601784 5696704 1602096 5696712 +1601784 5696704 1604784 5714488 1602096 5696712 1601928 5696648 +1608336 5713136 1608608 5713032 1602096 5696712 1604784 5714488 +1602096 5696712 1602136 5696208 1602064 5696680 1601928 5696648 +1608608 5713032 1608648 5713040 1602096 5696712 1608336 5713136 +1602096 5696712 1608648 5713040 1602224 5696096 1602200 5696144 +1608648 5713040 1602224 5696096 1602096 5696712 1608608 5713032 +1602064 5696680 1601984 5696648 1601928 5696648 1602096 5696712 +1601928 5696648 1601784 5696704 1602096 5696712 1601984 5696648 +1602064 5696680 1601984 5696648 1602096 5696712 1602136 5696208 +1602224 5696096 1602128 5696712 1608648 5713040 1611512 5715528 +1602096 5696712 1602128 5696712 1602224 5696096 1602200 5696144 +1602096 5696712 1602128 5696712 1602200 5696144 1602176 5696184 +1602096 5696712 1602128 5696712 1602176 5696184 1602136 5696208 +1602096 5696712 1602128 5696712 1602136 5696208 1602064 5696680 +1602128 5696712 1602176 5696184 1602136 5696208 1602064 5696680 +1602136 5696208 1602072 5696232 1602064 5696680 1602128 5696712 +1602128 5696712 1602200 5696144 1602176 5696184 1602136 5696208 +1602128 5696712 1602224 5696096 1602200 5696144 1602176 5696184 +1602096 5696712 1608648 5713040 1602128 5696712 1602064 5696680 +1608648 5713040 1602128 5696712 1602096 5696712 1608608 5713032 +1602096 5696712 1608336 5713136 1608608 5713032 1602128 5696712 +1608336 5713136 1608576 5713048 1608608 5713032 1602128 5696712 +1602096 5696712 1604784 5714488 1608336 5713136 1602128 5696712 +1604784 5714488 1604840 5714480 1608336 5713136 1602128 5696712 +1602096 5696712 1601784 5696704 1604784 5714488 1602128 5696712 +1608336 5713136 1608608 5713032 1602128 5696712 1604784 5714488 +1602128 5696712 1602064 5696680 1602096 5696712 1604784 5714488 +1608608 5713032 1608648 5713040 1602128 5696712 1608336 5713136 +1602128 5696712 1608648 5713040 1602224 5696096 1602200 5696144 +1608648 5713040 1602224 5696096 1602128 5696712 1608608 5713032 +1602224 5696096 1602168 5696744 1608648 5713040 1611512 5715528 +1602128 5696712 1602168 5696744 1602224 5696096 1602200 5696144 +1602128 5696712 1602168 5696744 1602200 5696144 1602176 5696184 +1602128 5696712 1602168 5696744 1602176 5696184 1602136 5696208 +1602168 5696744 1602224 5696096 1602200 5696144 1602176 5696184 +1602128 5696712 1608648 5713040 1602168 5696744 1602176 5696184 +1608648 5713040 1602168 5696744 1602128 5696712 1608608 5713032 +1602128 5696712 1608336 5713136 1608608 5713032 1602168 5696744 +1608336 5713136 1608576 5713048 1608608 5713032 1602168 5696744 +1602128 5696712 1604784 5714488 1608336 5713136 1602168 5696744 +1604784 5714488 1604840 5714480 1608336 5713136 1602168 5696744 +1602128 5696712 1602096 5696712 1604784 5714488 1602168 5696744 +1602096 5696712 1601784 5696704 1604784 5714488 1602168 5696744 +1601784 5696704 1604744 5714504 1604784 5714488 1602168 5696744 +1601784 5696704 1604704 5714560 1604744 5714504 1602168 5696744 +1601784 5696704 1604744 5714504 1602168 5696744 1602096 5696712 +1602096 5696712 1601928 5696648 1601784 5696704 1602168 5696744 +1602096 5696712 1601784 5696704 1602168 5696744 1602128 5696712 +1604784 5714488 1608336 5713136 1602168 5696744 1604744 5714504 +1608336 5713136 1608608 5713032 1602168 5696744 1604784 5714488 +1602168 5696744 1602176 5696184 1602128 5696712 1602096 5696712 +1608608 5713032 1608648 5713040 1602168 5696744 1608336 5713136 +1602168 5696744 1608648 5713040 1602224 5696096 1602200 5696144 +1608648 5713040 1602224 5696096 1602168 5696744 1608608 5713032 +1602224 5696096 1602224 5696768 1608648 5713040 1611512 5715528 +1602224 5696096 1602224 5696768 1611512 5715528 1602224 5696056 +1608648 5713040 1608720 5713120 1611512 5715528 1602224 5696768 +1602168 5696744 1602224 5696768 1602224 5696096 1602200 5696144 +1602168 5696744 1602224 5696768 1602200 5696144 1602176 5696184 +1602168 5696744 1602224 5696768 1602176 5696184 1602128 5696712 +1602176 5696184 1602136 5696208 1602128 5696712 1602224 5696768 +1602224 5696768 1602200 5696144 1602176 5696184 1602128 5696712 +1602168 5696744 1608648 5713040 1602224 5696768 1602128 5696712 +1608648 5713040 1602224 5696768 1602168 5696744 1608608 5713032 +1602168 5696744 1608336 5713136 1608608 5713032 1602224 5696768 +1608336 5713136 1608576 5713048 1608608 5713032 1602224 5696768 +1602168 5696744 1604784 5714488 1608336 5713136 1602224 5696768 +1604784 5714488 1604840 5714480 1608336 5713136 1602224 5696768 +1602168 5696744 1604744 5714504 1604784 5714488 1602224 5696768 +1602168 5696744 1601784 5696704 1604744 5714504 1602224 5696768 +1601784 5696704 1604704 5714560 1604744 5714504 1602224 5696768 +1602168 5696744 1602096 5696712 1601784 5696704 1602224 5696768 +1604744 5714504 1604784 5714488 1602224 5696768 1601784 5696704 +1604784 5714488 1608336 5713136 1602224 5696768 1604744 5714504 +1608336 5713136 1608608 5713032 1602224 5696768 1604784 5714488 +1602224 5696768 1602128 5696712 1602168 5696744 1601784 5696704 +1608608 5713032 1608648 5713040 1602224 5696768 1608336 5713136 +1602224 5696096 1602200 5696144 1602224 5696768 1611512 5715528 +1602224 5696768 1602224 5696096 1602200 5696144 1602176 5696184 +1602224 5696768 1608608 5713032 1608648 5713040 1611512 5715528 +1611512 5715528 1602264 5696760 1602224 5696768 1608648 5713040 +1602224 5696096 1602264 5696760 1611512 5715528 1602224 5696056 +1611512 5715528 1663880 5646248 1602224 5696056 1602264 5696760 +1611512 5715528 1602264 5696760 1608648 5713040 1608720 5713120 +1602224 5696768 1602264 5696760 1602224 5696096 1602200 5696144 +1602224 5696768 1602264 5696760 1602200 5696144 1602176 5696184 +1602224 5696768 1602264 5696760 1602176 5696184 1602128 5696712 +1602176 5696184 1602136 5696208 1602128 5696712 1602264 5696760 +1602136 5696208 1602064 5696680 1602128 5696712 1602264 5696760 +1602224 5696768 1602264 5696760 1602128 5696712 1602168 5696744 +1602128 5696712 1602168 5696744 1602264 5696760 1602136 5696208 +1602264 5696760 1602224 5696096 1602200 5696144 1602176 5696184 +1602264 5696760 1602200 5696144 1602176 5696184 1602136 5696208 +1602224 5696768 1608608 5713032 1608648 5713040 1602264 5696760 +1608648 5713040 1611512 5715528 1602264 5696760 1608608 5713032 +1602224 5696768 1608336 5713136 1608608 5713032 1602264 5696760 +1608336 5713136 1608576 5713048 1608608 5713032 1602264 5696760 +1602224 5696768 1604784 5714488 1608336 5713136 1602264 5696760 +1608608 5713032 1608648 5713040 1602264 5696760 1608336 5713136 +1602264 5696760 1602168 5696744 1602224 5696768 1608336 5713136 +1602224 5696096 1602200 5696144 1602264 5696760 1602224 5696056 +1611512 5715528 1602224 5696056 1602264 5696760 1608648 5713040 +1602264 5696760 1602352 5696840 1602224 5696056 1602224 5696096 +1602224 5696056 1602352 5696840 1611512 5715528 1663880 5646248 +1602264 5696760 1602352 5696840 1602224 5696096 1602200 5696144 +1602352 5696840 1602224 5696056 1602224 5696096 1602200 5696144 +1602264 5696760 1602352 5696840 1602200 5696144 1602176 5696184 +1602264 5696760 1611512 5715528 1602352 5696840 1602200 5696144 +1611512 5715528 1602352 5696840 1602264 5696760 1608648 5713040 +1602264 5696760 1608608 5713032 1608648 5713040 1602352 5696840 +1611512 5715528 1602352 5696840 1608648 5713040 1608720 5713120 +1602264 5696760 1608336 5713136 1608608 5713032 1602352 5696840 +1608336 5713136 1608576 5713048 1608608 5713032 1602352 5696840 +1608608 5713032 1608648 5713040 1602352 5696840 1608336 5713136 +1602264 5696760 1602224 5696768 1608336 5713136 1602352 5696840 +1602224 5696768 1604784 5714488 1608336 5713136 1602352 5696840 +1604784 5714488 1604840 5714480 1608336 5713136 1602352 5696840 +1602224 5696768 1604744 5714504 1604784 5714488 1602352 5696840 +1602224 5696768 1601784 5696704 1604744 5714504 1602352 5696840 +1601784 5696704 1604704 5714560 1604744 5714504 1602352 5696840 +1602224 5696768 1602168 5696744 1601784 5696704 1602352 5696840 +1604744 5714504 1604784 5714488 1602352 5696840 1601784 5696704 +1604784 5714488 1608336 5713136 1602352 5696840 1604744 5714504 +1602224 5696768 1601784 5696704 1602352 5696840 1602264 5696760 +1608336 5713136 1608608 5713032 1602352 5696840 1604784 5714488 +1602352 5696840 1602200 5696144 1602264 5696760 1602224 5696768 +1608648 5713040 1611512 5715528 1602352 5696840 1608608 5713032 +1602352 5696840 1611512 5715528 1602224 5696056 1602224 5696096 +1611512 5715528 1602224 5696056 1602352 5696840 1608648 5713040 +1602224 5696056 1602384 5696856 1611512 5715528 1663880 5646248 +1602352 5696840 1602384 5696856 1602224 5696056 1602224 5696096 +1602352 5696840 1602384 5696856 1602224 5696096 1602200 5696144 +1602384 5696856 1611512 5715528 1602224 5696056 1602224 5696096 +1602352 5696840 1602384 5696856 1602200 5696144 1602264 5696760 +1602384 5696856 1602224 5696096 1602200 5696144 1602264 5696760 +1602200 5696144 1602176 5696184 1602264 5696760 1602384 5696856 +1602384 5696856 1602224 5696056 1602224 5696096 1602200 5696144 +1602352 5696840 1611512 5715528 1602384 5696856 1602264 5696760 +1611512 5715528 1602384 5696856 1602352 5696840 1608648 5713040 +1611512 5715528 1602384 5696856 1608648 5713040 1608720 5713120 +1611512 5715528 1602224 5696056 1602384 5696856 1608648 5713040 +1602352 5696840 1608608 5713032 1608648 5713040 1602384 5696856 +1602352 5696840 1608336 5713136 1608608 5713032 1602384 5696856 +1608336 5713136 1608576 5713048 1608608 5713032 1602384 5696856 +1602352 5696840 1604784 5714488 1608336 5713136 1602384 5696856 +1604784 5714488 1604840 5714480 1608336 5713136 1602384 5696856 +1608336 5713136 1608608 5713032 1602384 5696856 1604784 5714488 +1602352 5696840 1604744 5714504 1604784 5714488 1602384 5696856 +1602352 5696840 1601784 5696704 1604744 5714504 1602384 5696856 +1601784 5696704 1604704 5714560 1604744 5714504 1602384 5696856 +1602352 5696840 1602224 5696768 1601784 5696704 1602384 5696856 +1604744 5714504 1604784 5714488 1602384 5696856 1601784 5696704 +1604784 5714488 1608336 5713136 1602384 5696856 1604744 5714504 +1608608 5713032 1608648 5713040 1602384 5696856 1608336 5713136 +1602384 5696856 1602264 5696760 1602352 5696840 1601784 5696704 +1608648 5713040 1611512 5715528 1602384 5696856 1608608 5713032 +1602224 5696056 1602424 5696896 1611512 5715528 1663880 5646248 +1602224 5696056 1602424 5696896 1663880 5646248 1602200 5696008 +1611512 5715528 1611528 5715552 1663880 5646248 1602424 5696896 +1602384 5696856 1602424 5696896 1602224 5696056 1602224 5696096 +1602384 5696856 1611512 5715528 1602424 5696896 1602224 5696096 +1611512 5715528 1602424 5696896 1602384 5696856 1608648 5713040 +1611512 5715528 1602424 5696896 1608648 5713040 1608720 5713120 +1602424 5696896 1602224 5696096 1602384 5696856 1608648 5713040 +1602424 5696896 1608648 5713040 1611512 5715528 1663880 5646248 +1602224 5696056 1602224 5696096 1602424 5696896 1663880 5646248 +1602384 5696856 1602424 5696896 1602224 5696096 1602200 5696144 +1602384 5696856 1608608 5713032 1608648 5713040 1602424 5696896 +1602384 5696856 1608608 5713032 1602424 5696896 1602224 5696096 +1608648 5713040 1611512 5715528 1602424 5696896 1608608 5713032 +1602384 5696856 1608336 5713136 1608608 5713032 1602424 5696896 +1608336 5713136 1608576 5713048 1608608 5713032 1602424 5696896 +1602384 5696856 1604784 5714488 1608336 5713136 1602424 5696896 +1604784 5714488 1604840 5714480 1608336 5713136 1602424 5696896 +1602384 5696856 1604784 5714488 1602424 5696896 1602224 5696096 +1602384 5696856 1604744 5714504 1604784 5714488 1602424 5696896 +1604784 5714488 1608336 5713136 1602424 5696896 1604744 5714504 +1602384 5696856 1601784 5696704 1604744 5714504 1602424 5696896 +1601784 5696704 1604704 5714560 1604744 5714504 1602424 5696896 +1602384 5696856 1602352 5696840 1601784 5696704 1602424 5696896 +1602352 5696840 1602224 5696768 1601784 5696704 1602424 5696896 +1602224 5696768 1602168 5696744 1601784 5696704 1602424 5696896 +1602352 5696840 1602224 5696768 1602424 5696896 1602384 5696856 +1601784 5696704 1604744 5714504 1602424 5696896 1602224 5696768 +1602384 5696856 1602352 5696840 1602424 5696896 1602224 5696096 +1602352 5696840 1602264 5696760 1602224 5696768 1602424 5696896 +1604744 5714504 1604784 5714488 1602424 5696896 1601784 5696704 +1608336 5713136 1608608 5713032 1602424 5696896 1604784 5714488 +1608608 5713032 1608648 5713040 1602424 5696896 1608336 5713136 +1602424 5696896 1602472 5696952 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1602472 5696952 +1663880 5646248 1602472 5696952 1611512 5715528 1611528 5715552 +1602424 5696896 1611512 5715528 1602472 5696952 1602224 5696056 +1611512 5715528 1602472 5696952 1602424 5696896 1608648 5713040 +1611512 5715528 1663880 5646248 1602472 5696952 1608648 5713040 +1611512 5715528 1602472 5696952 1608648 5713040 1608720 5713120 +1602424 5696896 1608608 5713032 1608648 5713040 1602472 5696952 +1602472 5696952 1602224 5696056 1602424 5696896 1608608 5713032 +1608648 5713040 1611512 5715528 1602472 5696952 1608608 5713032 +1602472 5696952 1611512 5715528 1663880 5646248 1602224 5696056 +1602424 5696896 1602472 5696952 1602224 5696056 1602224 5696096 +1602472 5696952 1663880 5646248 1602224 5696056 1602224 5696096 +1602424 5696896 1602472 5696952 1602224 5696096 1602384 5696856 +1602424 5696896 1608608 5713032 1602472 5696952 1602224 5696096 +1602424 5696896 1608336 5713136 1608608 5713032 1602472 5696952 +1608336 5713136 1608576 5713048 1608608 5713032 1602472 5696952 +1608608 5713032 1608648 5713040 1602472 5696952 1608336 5713136 +1602424 5696896 1608336 5713136 1602472 5696952 1602224 5696096 +1602424 5696896 1604784 5714488 1608336 5713136 1602472 5696952 +1604784 5714488 1604840 5714480 1608336 5713136 1602472 5696952 +1602424 5696896 1604744 5714504 1604784 5714488 1602472 5696952 +1602424 5696896 1604744 5714504 1602472 5696952 1602224 5696096 +1602424 5696896 1601784 5696704 1604744 5714504 1602472 5696952 +1601784 5696704 1604704 5714560 1604744 5714504 1602472 5696952 +1604744 5714504 1604784 5714488 1602472 5696952 1601784 5696704 +1602424 5696896 1602224 5696768 1601784 5696704 1602472 5696952 +1602224 5696768 1602168 5696744 1601784 5696704 1602472 5696952 +1602424 5696896 1602352 5696840 1602224 5696768 1602472 5696952 +1602424 5696896 1602384 5696856 1602352 5696840 1602472 5696952 +1602224 5696768 1601784 5696704 1602472 5696952 1602352 5696840 +1602424 5696896 1602352 5696840 1602472 5696952 1602224 5696096 +1602352 5696840 1602264 5696760 1602224 5696768 1602472 5696952 +1601784 5696704 1604744 5714504 1602472 5696952 1602224 5696768 +1604784 5714488 1608336 5713136 1602472 5696952 1604744 5714504 +1608336 5713136 1608608 5713032 1602472 5696952 1604784 5714488 +1611512 5715528 1602504 5696992 1602472 5696952 1608648 5713040 +1602504 5696992 1663880 5646248 1602472 5696952 1608648 5713040 +1611512 5715528 1663880 5646248 1602504 5696992 1608648 5713040 +1611512 5715528 1602504 5696992 1608648 5713040 1608720 5713120 +1663880 5646248 1602504 5696992 1611512 5715528 1611528 5715552 +1602472 5696952 1608608 5713032 1608648 5713040 1602504 5696992 +1602472 5696952 1608608 5713032 1602504 5696992 1663880 5646248 +1608648 5713040 1611512 5715528 1602504 5696992 1608608 5713032 +1602472 5696952 1608336 5713136 1608608 5713032 1602504 5696992 +1608336 5713136 1608576 5713048 1608608 5713032 1602504 5696992 +1602472 5696952 1608336 5713136 1602504 5696992 1663880 5646248 +1608608 5713032 1608648 5713040 1602504 5696992 1608336 5713136 +1602472 5696952 1602504 5696992 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1602504 5696992 +1602472 5696952 1602504 5696992 1602224 5696056 1602224 5696096 +1602472 5696952 1608336 5713136 1602504 5696992 1602224 5696096 +1602504 5696992 1611512 5715528 1663880 5646248 1602224 5696056 +1602504 5696992 1663880 5646248 1602224 5696056 1602224 5696096 +1602472 5696952 1602504 5696992 1602224 5696096 1602424 5696896 +1602472 5696952 1604784 5714488 1608336 5713136 1602504 5696992 +1604784 5714488 1604840 5714480 1608336 5713136 1602504 5696992 +1602472 5696952 1604784 5714488 1602504 5696992 1602224 5696096 +1608336 5713136 1608608 5713032 1602504 5696992 1604784 5714488 +1602472 5696952 1604744 5714504 1604784 5714488 1602504 5696992 +1602472 5696952 1601784 5696704 1604744 5714504 1602504 5696992 +1601784 5696704 1604704 5714560 1604744 5714504 1602504 5696992 +1602472 5696952 1601784 5696704 1602504 5696992 1602224 5696096 +1602472 5696952 1602224 5696768 1601784 5696704 1602504 5696992 +1602224 5696768 1602168 5696744 1601784 5696704 1602504 5696992 +1601784 5696704 1604744 5714504 1602504 5696992 1602224 5696768 +1602472 5696952 1602224 5696768 1602504 5696992 1602224 5696096 +1602472 5696952 1602352 5696840 1602224 5696768 1602504 5696992 +1604744 5714504 1604784 5714488 1602504 5696992 1601784 5696704 +1604784 5714488 1608336 5713136 1602504 5696992 1604744 5714504 +1604744 5714504 1602504 5697056 1601784 5696704 1604704 5714560 +1601784 5696704 1602504 5697056 1602504 5696992 1602224 5696768 +1601784 5696704 1602504 5697056 1602224 5696768 1602168 5696744 +1601784 5696704 1602504 5697056 1602168 5696744 1602096 5696712 +1602504 5697056 1602504 5696992 1602224 5696768 1602168 5696744 +1602504 5697056 1604744 5714504 1602504 5696992 1602224 5696768 +1601784 5696704 1604744 5714504 1602504 5697056 1602168 5696744 +1602504 5696992 1602472 5696952 1602224 5696768 1602504 5697056 +1602224 5696768 1602168 5696744 1602504 5697056 1602472 5696952 +1602504 5696992 1602472 5696952 1602504 5697056 1604744 5714504 +1602472 5696952 1602352 5696840 1602224 5696768 1602504 5697056 +1602224 5696768 1602168 5696744 1602504 5697056 1602352 5696840 +1602472 5696952 1602424 5696896 1602352 5696840 1602504 5697056 +1602424 5696896 1602384 5696856 1602352 5696840 1602504 5697056 +1602352 5696840 1602224 5696768 1602504 5697056 1602424 5696896 +1602352 5696840 1602264 5696760 1602224 5696768 1602504 5697056 +1602472 5696952 1602424 5696896 1602504 5697056 1602504 5696992 +1602504 5696992 1602504 5697056 1604744 5714504 1604784 5714488 +1602504 5696992 1602472 5696952 1602504 5697056 1604784 5714488 +1602504 5697056 1601784 5696704 1604744 5714504 1604784 5714488 +1602504 5696992 1602504 5697056 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602504 5697056 +1602504 5696992 1602472 5696952 1602504 5697056 1608336 5713136 +1602504 5696992 1602504 5697056 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602504 5697056 +1602504 5696992 1602472 5696952 1602504 5697056 1608608 5713032 +1602504 5696992 1602504 5697056 1608608 5713032 1608648 5713040 +1602504 5696992 1602504 5697056 1608648 5713040 1611512 5715528 +1602504 5696992 1602472 5696952 1602504 5697056 1611512 5715528 +1602504 5696992 1602504 5697056 1611512 5715528 1663880 5646248 +1608648 5713040 1608720 5713120 1611512 5715528 1602504 5697056 +1602504 5697056 1608336 5713136 1608608 5713032 1608648 5713040 +1602504 5697056 1608608 5713032 1608648 5713040 1611512 5715528 +1602504 5697056 1604744 5714504 1604784 5714488 1608336 5713136 +1602504 5697056 1604784 5714488 1608336 5713136 1608608 5713032 +1604744 5714504 1602464 5697088 1601784 5696704 1604704 5714560 +1602504 5697056 1602464 5697088 1604744 5714504 1604784 5714488 +1602504 5697056 1601784 5696704 1602464 5697088 1604784 5714488 +1601784 5696704 1602464 5697088 1602504 5697056 1602168 5696744 +1602504 5697056 1602224 5696768 1602168 5696744 1602464 5697088 +1601784 5696704 1602464 5697088 1602168 5696744 1602096 5696712 +1602504 5697056 1602352 5696840 1602224 5696768 1602464 5697088 +1602224 5696768 1602168 5696744 1602464 5697088 1602352 5696840 +1602464 5697088 1604784 5714488 1602504 5697056 1602352 5696840 +1602168 5696744 1601784 5696704 1602464 5697088 1602224 5696768 +1602464 5697088 1601784 5696704 1604744 5714504 1604784 5714488 +1601784 5696704 1604744 5714504 1602464 5697088 1602168 5696744 +1602504 5697056 1602424 5696896 1602352 5696840 1602464 5697088 +1602352 5696840 1602224 5696768 1602464 5697088 1602424 5696896 +1602504 5697056 1602424 5696896 1602464 5697088 1604784 5714488 +1602504 5697056 1602472 5696952 1602424 5696896 1602464 5697088 +1602504 5697056 1602472 5696952 1602464 5697088 1604784 5714488 +1602424 5696896 1602384 5696856 1602352 5696840 1602464 5697088 +1602424 5696896 1602352 5696840 1602464 5697088 1602472 5696952 +1602352 5696840 1602264 5696760 1602224 5696768 1602464 5697088 +1602504 5697056 1602504 5696992 1602472 5696952 1602464 5697088 +1602504 5697056 1602504 5696992 1602464 5697088 1604784 5714488 +1602472 5696952 1602424 5696896 1602464 5697088 1602504 5696992 +1602504 5697056 1602464 5697088 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602464 5697088 +1602464 5697088 1604744 5714504 1604784 5714488 1608336 5713136 +1602504 5697056 1602504 5696992 1602464 5697088 1608336 5713136 +1602504 5697056 1602464 5697088 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602464 5697088 +1602504 5697056 1602504 5696992 1602464 5697088 1608608 5713032 +1602504 5697056 1602464 5697088 1608608 5713032 1608648 5713040 +1602464 5697088 1604784 5714488 1608336 5713136 1608608 5713032 +1604744 5714504 1602424 5697104 1601784 5696704 1604704 5714560 +1602464 5697088 1602424 5697104 1604744 5714504 1604784 5714488 +1602464 5697088 1602424 5697104 1604784 5714488 1608336 5713136 +1604784 5714488 1604840 5714480 1608336 5713136 1602424 5697104 +1602424 5697104 1604744 5714504 1604784 5714488 1608336 5713136 +1602464 5697088 1601784 5696704 1602424 5697104 1608336 5713136 +1601784 5696704 1602424 5697104 1602464 5697088 1602168 5696744 +1601784 5696704 1604744 5714504 1602424 5697104 1602168 5696744 +1601784 5696704 1602424 5697104 1602168 5696744 1602096 5696712 +1601784 5696704 1604744 5714504 1602424 5697104 1602096 5696712 +1601784 5696704 1602424 5697104 1602096 5696712 1601928 5696648 +1602464 5697088 1602224 5696768 1602168 5696744 1602424 5697104 +1602464 5697088 1602352 5696840 1602224 5696768 1602424 5697104 +1602464 5697088 1602424 5696896 1602352 5696840 1602424 5697104 +1602352 5696840 1602224 5696768 1602424 5697104 1602424 5696896 +1602224 5696768 1602168 5696744 1602424 5697104 1602352 5696840 +1602424 5697104 1608336 5713136 1602464 5697088 1602424 5696896 +1602424 5697104 1602224 5696768 1602168 5696744 1602096 5696712 +1602424 5697104 1601784 5696704 1604744 5714504 1604784 5714488 +1602168 5696744 1602128 5696712 1602096 5696712 1602424 5697104 +1602424 5696896 1602384 5696856 1602352 5696840 1602424 5697104 +1602464 5697088 1602472 5696952 1602424 5696896 1602424 5697104 +1602424 5696896 1602352 5696840 1602424 5697104 1602472 5696952 +1602464 5697088 1602472 5696952 1602424 5697104 1608336 5713136 +1602464 5697088 1602504 5696992 1602472 5696952 1602424 5697104 +1602352 5696840 1602264 5696760 1602224 5696768 1602424 5697104 +1602464 5697088 1602424 5697104 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1602424 5697104 +1602424 5697104 1604784 5714488 1608336 5713136 1608608 5713032 +1602464 5697088 1602472 5696952 1602424 5697104 1608608 5713032 +1602464 5697088 1602424 5697104 1608608 5713032 1602504 5697056 +1601784 5696704 1602352 5697112 1602424 5697104 1602096 5696712 +1601784 5696704 1604744 5714504 1602352 5697112 1602096 5696712 +1604744 5714504 1602352 5697112 1601784 5696704 1604704 5714560 +1602424 5697104 1602168 5696744 1602096 5696712 1602352 5697112 +1602096 5696712 1601784 5696704 1602352 5697112 1602168 5696744 +1601784 5696704 1602352 5697112 1602096 5696712 1601928 5696648 +1602424 5697104 1602224 5696768 1602168 5696744 1602352 5697112 +1602168 5696744 1602096 5696712 1602352 5697112 1602224 5696768 +1602424 5697104 1602352 5696840 1602224 5696768 1602352 5697112 +1602424 5697104 1602424 5696896 1602352 5696840 1602352 5697112 +1602424 5697104 1602472 5696952 1602424 5696896 1602352 5697112 +1602424 5696896 1602352 5696840 1602352 5697112 1602472 5696952 +1602352 5696840 1602224 5696768 1602352 5697112 1602424 5696896 +1602224 5696768 1602168 5696744 1602352 5697112 1602352 5696840 +1602424 5697104 1602352 5697112 1604744 5714504 1604784 5714488 +1602352 5697112 1601784 5696704 1604744 5714504 1604784 5714488 +1602424 5697104 1602352 5697112 1604784 5714488 1608336 5713136 +1602352 5697112 1604784 5714488 1602424 5697104 1602472 5696952 +1602168 5696744 1602128 5696712 1602096 5696712 1602352 5697112 +1602424 5696896 1602384 5696856 1602352 5696840 1602352 5697112 +1602424 5697104 1602464 5697088 1602472 5696952 1602352 5697112 +1602352 5696840 1602264 5696760 1602224 5696768 1602352 5697112 +1602352 5697112 1602312 5697088 1604744 5714504 1604784 5714488 +1601784 5696704 1602312 5697088 1602352 5697112 1602096 5696712 +1602352 5697112 1602168 5696744 1602096 5696712 1602312 5697088 +1602312 5697088 1604744 5714504 1602352 5697112 1602168 5696744 +1602096 5696712 1601784 5696704 1602312 5697088 1602168 5696744 +1601784 5696704 1604744 5714504 1602312 5697088 1602096 5696712 +1604744 5714504 1602312 5697088 1601784 5696704 1604704 5714560 +1602352 5697112 1602224 5696768 1602168 5696744 1602312 5697088 +1602168 5696744 1602096 5696712 1602312 5697088 1602224 5696768 +1602352 5697112 1602224 5696768 1602312 5697088 1604744 5714504 +1601784 5696704 1602312 5697088 1602096 5696712 1601928 5696648 +1602352 5697112 1602352 5696840 1602224 5696768 1602312 5697088 +1602352 5697112 1602352 5696840 1602312 5697088 1604744 5714504 +1602224 5696768 1602168 5696744 1602312 5697088 1602352 5696840 +1602352 5697112 1602424 5696896 1602352 5696840 1602312 5697088 +1602352 5697112 1602424 5696896 1602312 5697088 1604744 5714504 +1602352 5697112 1602472 5696952 1602424 5696896 1602312 5697088 +1602352 5697112 1602472 5696952 1602312 5697088 1604744 5714504 +1602352 5697112 1602424 5697104 1602472 5696952 1602312 5697088 +1602352 5697112 1602424 5697104 1602312 5697088 1604744 5714504 +1602472 5696952 1602424 5696896 1602312 5697088 1602424 5697104 +1602424 5696896 1602352 5696840 1602312 5697088 1602472 5696952 +1602352 5696840 1602224 5696768 1602312 5697088 1602424 5696896 +1602168 5696744 1602128 5696712 1602096 5696712 1602312 5697088 +1602424 5696896 1602384 5696856 1602352 5696840 1602312 5697088 +1602424 5696896 1602384 5696856 1602312 5697088 1602472 5696952 +1602352 5696840 1602224 5696768 1602312 5697088 1602384 5696856 +1602424 5697104 1602464 5697088 1602472 5696952 1602312 5697088 +1602352 5696840 1602264 5696760 1602224 5696768 1602312 5697088 +1602312 5697088 1602248 5697056 1604744 5714504 1602352 5697112 +1604744 5714504 1604784 5714488 1602352 5697112 1602248 5697056 +1602312 5697088 1601784 5696704 1602248 5697056 1602352 5697112 +1601784 5696704 1602248 5697056 1602312 5697088 1602096 5696712 +1602312 5697088 1602168 5696744 1602096 5696712 1602248 5697056 +1602312 5697088 1602224 5696768 1602168 5696744 1602248 5697056 +1602168 5696744 1602096 5696712 1602248 5697056 1602224 5696768 +1602248 5697056 1602352 5697112 1602312 5697088 1602224 5696768 +1602096 5696712 1601784 5696704 1602248 5697056 1602168 5696744 +1602248 5697056 1601784 5696704 1604744 5714504 1602352 5697112 +1601784 5696704 1604744 5714504 1602248 5697056 1602096 5696712 +1604744 5714504 1602248 5697056 1601784 5696704 1604704 5714560 +1604744 5714504 1602352 5697112 1602248 5697056 1604704 5714560 +1602248 5697056 1602096 5696712 1601784 5696704 1604704 5714560 +1601784 5696704 1604696 5714600 1604704 5714560 1602248 5697056 +1602312 5697088 1602352 5696840 1602224 5696768 1602248 5697056 +1602224 5696768 1602168 5696744 1602248 5697056 1602352 5696840 +1602312 5697088 1602352 5696840 1602248 5697056 1602352 5697112 +1601784 5696704 1602248 5697056 1602096 5696712 1601928 5696648 +1602312 5697088 1602384 5696856 1602352 5696840 1602248 5697056 +1602312 5697088 1602384 5696856 1602248 5697056 1602352 5697112 +1602352 5696840 1602224 5696768 1602248 5697056 1602384 5696856 +1602168 5696744 1602128 5696712 1602096 5696712 1602248 5697056 +1602312 5697088 1602424 5696896 1602384 5696856 1602248 5697056 +1602312 5697088 1602424 5696896 1602248 5697056 1602352 5697112 +1602312 5697088 1602472 5696952 1602424 5696896 1602248 5697056 +1602384 5696856 1602352 5696840 1602248 5697056 1602424 5696896 +1602352 5696840 1602264 5696760 1602224 5696768 1602248 5697056 +1601784 5696704 1602200 5697056 1602248 5697056 1602096 5696712 +1602248 5697056 1602168 5696744 1602096 5696712 1602200 5697056 +1602248 5697056 1602224 5696768 1602168 5696744 1602200 5697056 +1602248 5697056 1602352 5696840 1602224 5696768 1602200 5697056 +1602168 5696744 1602096 5696712 1602200 5697056 1602224 5696768 +1602200 5697056 1604704 5714560 1602248 5697056 1602224 5696768 +1602096 5696712 1601784 5696704 1602200 5697056 1602168 5696744 +1601784 5696704 1604704 5714560 1602200 5697056 1602096 5696712 +1602248 5697056 1602200 5697056 1604704 5714560 1604744 5714504 +1602248 5697056 1602200 5697056 1604744 5714504 1602352 5697112 +1604744 5714504 1604784 5714488 1602352 5697112 1602200 5697056 +1602248 5697056 1602200 5697056 1602352 5697112 1602312 5697088 +1602200 5697056 1604744 5714504 1602352 5697112 1602312 5697088 +1602248 5697056 1602224 5696768 1602200 5697056 1602312 5697088 +1602200 5697056 1601784 5696704 1604704 5714560 1604744 5714504 +1602200 5697056 1604704 5714560 1604744 5714504 1602352 5697112 +1604704 5714560 1602200 5697056 1601784 5696704 1604696 5714600 +1601784 5696704 1602200 5697056 1602096 5696712 1601928 5696648 +1602168 5696744 1602128 5696712 1602096 5696712 1602200 5697056 +1602200 5697056 1602152 5697040 1604704 5714560 1604744 5714504 +1602200 5697056 1601784 5696704 1602152 5697040 1604744 5714504 +1601784 5696704 1602152 5697040 1602200 5697056 1602096 5696712 +1602200 5697056 1602168 5696744 1602096 5696712 1602152 5697040 +1602200 5697056 1602224 5696768 1602168 5696744 1602152 5697040 +1602200 5697056 1602248 5697056 1602224 5696768 1602152 5697040 +1602168 5696744 1602096 5696712 1602152 5697040 1602224 5696768 +1602152 5697040 1604744 5714504 1602200 5697056 1602224 5696768 +1602096 5696712 1601784 5696704 1602152 5697040 1602168 5696744 +1602200 5697056 1602152 5697040 1604744 5714504 1602352 5697112 +1604744 5714504 1604784 5714488 1602352 5697112 1602152 5697040 +1602200 5697056 1602152 5697040 1602352 5697112 1602312 5697088 +1602152 5697040 1604704 5714560 1604744 5714504 1602352 5697112 +1602200 5697056 1602224 5696768 1602152 5697040 1602352 5697112 +1604704 5714560 1602152 5697040 1601784 5696704 1604696 5714600 +1601784 5696704 1602152 5697040 1602096 5696712 1601928 5696648 +1602168 5696744 1602128 5696712 1602096 5696712 1602152 5697040 +1602152 5697040 1601784 5696704 1604704 5714560 1604744 5714504 +1601784 5696704 1604704 5714560 1602152 5697040 1602096 5696712 +1602096 5696712 1602120 5697008 1602152 5697040 1602168 5696744 +1602152 5697040 1602224 5696768 1602168 5696744 1602120 5697008 +1602152 5697040 1602200 5697056 1602224 5696768 1602120 5697008 +1602200 5697056 1602248 5697056 1602224 5696768 1602120 5697008 +1602248 5697056 1602352 5696840 1602224 5696768 1602120 5697008 +1602248 5697056 1602352 5696840 1602120 5697008 1602200 5697056 +1602200 5697056 1602248 5697056 1602120 5697008 1602152 5697040 +1602224 5696768 1602168 5696744 1602120 5697008 1602352 5696840 +1602168 5696744 1602096 5696712 1602120 5697008 1602224 5696768 +1602248 5697056 1602384 5696856 1602352 5696840 1602120 5697008 +1601784 5696704 1602120 5697008 1602096 5696712 1601928 5696648 +1601784 5696704 1602120 5697008 1601928 5696648 1601848 5696640 +1602096 5696712 1601984 5696648 1601928 5696648 1602120 5697008 +1602096 5696712 1602120 5697008 1602168 5696744 1602128 5696712 +1602120 5697008 1601784 5696704 1602152 5697040 1602200 5697056 +1602152 5697040 1602120 5697008 1601784 5696704 1604704 5714560 +1601784 5696704 1602152 5697040 1602120 5697008 1601928 5696648 +1602096 5696712 1601928 5696648 1602120 5697008 1602168 5696744 +1602352 5696840 1602264 5696760 1602224 5696768 1602120 5697008 +1604704 5714560 1602072 5696992 1601784 5696704 1604696 5714600 +1602152 5697040 1602072 5696992 1604704 5714560 1604744 5714504 +1602152 5697040 1602072 5696992 1604744 5714504 1602352 5697112 +1601784 5696704 1602072 5696992 1602152 5697040 1602120 5697008 +1601784 5696704 1604704 5714560 1602072 5696992 1602120 5697008 +1601784 5696704 1602072 5696992 1602120 5697008 1601928 5696648 +1601784 5696704 1604704 5714560 1602072 5696992 1601928 5696648 +1601784 5696704 1602072 5696992 1601928 5696648 1601848 5696640 +1602120 5697008 1602096 5696712 1601928 5696648 1602072 5696992 +1602096 5696712 1601984 5696648 1601928 5696648 1602072 5696992 +1602072 5696992 1602152 5697040 1602120 5697008 1602096 5696712 +1601928 5696648 1601784 5696704 1602072 5696992 1602096 5696712 +1602152 5697040 1602120 5697008 1602072 5696992 1604744 5714504 +1602120 5697008 1602168 5696744 1602096 5696712 1602072 5696992 +1602120 5697008 1602224 5696768 1602168 5696744 1602072 5696992 +1602096 5696712 1601928 5696648 1602072 5696992 1602168 5696744 +1602168 5696744 1602128 5696712 1602096 5696712 1602072 5696992 +1602120 5697008 1602168 5696744 1602072 5696992 1602152 5697040 +1602072 5696992 1601784 5696704 1604704 5714560 1604744 5714504 +1601784 5696704 1602008 5696944 1602072 5696992 1601928 5696648 +1602008 5696944 1604704 5714560 1602072 5696992 1601928 5696648 +1601784 5696704 1604704 5714560 1602008 5696944 1601928 5696648 +1604704 5714560 1602008 5696944 1601784 5696704 1604696 5714600 +1601784 5696704 1602008 5696944 1601928 5696648 1601848 5696640 +1602072 5696992 1602096 5696712 1601928 5696648 1602008 5696944 +1602072 5696992 1602096 5696712 1602008 5696944 1604704 5714560 +1601928 5696648 1601784 5696704 1602008 5696944 1602096 5696712 +1602096 5696712 1601984 5696648 1601928 5696648 1602008 5696944 +1601928 5696648 1601784 5696704 1602008 5696944 1601984 5696648 +1602072 5696992 1602168 5696744 1602096 5696712 1602008 5696944 +1602072 5696992 1602168 5696744 1602008 5696944 1604704 5714560 +1602168 5696744 1602128 5696712 1602096 5696712 1602008 5696944 +1602096 5696712 1602064 5696680 1601984 5696648 1602008 5696944 +1601984 5696648 1601928 5696648 1602008 5696944 1602064 5696680 +1602096 5696712 1602064 5696680 1602008 5696944 1602168 5696744 +1602072 5696992 1602120 5697008 1602168 5696744 1602008 5696944 +1602072 5696992 1602008 5696944 1604704 5714560 1604744 5714504 +1602072 5696992 1602168 5696744 1602008 5696944 1604744 5714504 +1602008 5696944 1601784 5696704 1604704 5714560 1604744 5714504 +1602072 5696992 1602008 5696944 1604744 5714504 1602152 5697040 +1602008 5696944 1601976 5696912 1604704 5714560 1604744 5714504 +1601784 5696704 1601976 5696912 1602008 5696944 1601928 5696648 +1602008 5696944 1601984 5696648 1601928 5696648 1601976 5696912 +1601928 5696648 1601784 5696704 1601976 5696912 1601984 5696648 +1601976 5696912 1604704 5714560 1602008 5696944 1601984 5696648 +1601784 5696704 1604704 5714560 1601976 5696912 1601928 5696648 +1604704 5714560 1601976 5696912 1601784 5696704 1604696 5714600 +1601784 5696704 1601976 5696912 1601928 5696648 1601848 5696640 +1602008 5696944 1602064 5696680 1601984 5696648 1601976 5696912 +1601984 5696648 1601928 5696648 1601976 5696912 1602064 5696680 +1602008 5696944 1602064 5696680 1601976 5696912 1604704 5714560 +1602008 5696944 1602096 5696712 1602064 5696680 1601976 5696912 +1602008 5696944 1602096 5696712 1601976 5696912 1604704 5714560 +1602064 5696680 1601984 5696648 1601976 5696912 1602096 5696712 +1602008 5696944 1602168 5696744 1602096 5696712 1601976 5696912 +1601976 5696912 1601928 5696888 1604704 5714560 1602008 5696944 +1604704 5714560 1604744 5714504 1602008 5696944 1601928 5696888 +1604744 5714504 1602072 5696992 1602008 5696944 1601928 5696888 +1604744 5714504 1602072 5696992 1601928 5696888 1604704 5714560 +1602008 5696944 1601976 5696912 1601928 5696888 1602072 5696992 +1601976 5696912 1601784 5696704 1601928 5696888 1602008 5696944 +1601784 5696704 1601928 5696888 1601976 5696912 1601928 5696648 +1601976 5696912 1601984 5696648 1601928 5696648 1601928 5696888 +1601976 5696912 1602064 5696680 1601984 5696648 1601928 5696888 +1601984 5696648 1601928 5696648 1601928 5696888 1602064 5696680 +1601928 5696888 1602008 5696944 1601976 5696912 1602064 5696680 +1601928 5696648 1601784 5696704 1601928 5696888 1601984 5696648 +1601928 5696888 1601784 5696704 1604704 5714560 1604744 5714504 +1604704 5714560 1601928 5696888 1601784 5696704 1604696 5714600 +1601784 5696704 1601928 5696888 1601928 5696648 1601848 5696640 +1601976 5696912 1602096 5696712 1602064 5696680 1601928 5696888 +1602064 5696680 1601984 5696648 1601928 5696888 1602096 5696712 +1601976 5696912 1602096 5696712 1601928 5696888 1602008 5696944 +1601784 5696704 1604704 5714560 1601928 5696888 1601928 5696648 +1601976 5696912 1602008 5696944 1602096 5696712 1601928 5696888 +1604744 5714504 1602152 5697040 1602072 5696992 1601928 5696888 +1601928 5696888 1601864 5696864 1604704 5714560 1604744 5714504 +1601928 5696888 1601864 5696864 1604744 5714504 1602072 5696992 +1601928 5696888 1601864 5696864 1602072 5696992 1602008 5696944 +1601864 5696864 1604744 5714504 1602072 5696992 1602008 5696944 +1601928 5696888 1601864 5696864 1602008 5696944 1601976 5696912 +1601864 5696864 1604704 5714560 1604744 5714504 1602072 5696992 +1604704 5714560 1601864 5696864 1601784 5696704 1604696 5714600 +1601784 5696704 1599875 5760125 1604696 5714600 1601864 5696864 +1601928 5696888 1601784 5696704 1601864 5696864 1602008 5696944 +1601784 5696704 1601864 5696864 1601928 5696888 1601928 5696648 +1601928 5696888 1601984 5696648 1601928 5696648 1601864 5696864 +1601784 5696704 1601864 5696864 1601928 5696648 1601848 5696640 +1601864 5696864 1602008 5696944 1601928 5696888 1601928 5696648 +1601864 5696864 1604696 5714600 1604704 5714560 1604744 5714504 +1601864 5696864 1601928 5696648 1601784 5696704 1604696 5714600 +1604744 5714504 1602152 5697040 1602072 5696992 1601864 5696864 +1604696 5714600 1601808 5696808 1601784 5696704 1599875 5760125 +1601784 5696704 1601760 5696064 1599875 5760125 1601808 5696808 +1601864 5696864 1601808 5696808 1604696 5714600 1604704 5714560 +1604696 5714600 1601808 5696808 1599875 5760125 1604712 5714680 +1601864 5696864 1601808 5696808 1604704 5714560 1604744 5714504 +1601864 5696864 1601784 5696704 1601808 5696808 1604704 5714560 +1601784 5696704 1601808 5696808 1601864 5696864 1601928 5696648 +1601784 5696704 1601808 5696808 1601928 5696648 1601848 5696640 +1601864 5696864 1601928 5696888 1601928 5696648 1601808 5696808 +1601808 5696808 1604704 5714560 1601864 5696864 1601928 5696648 +1601808 5696808 1601928 5696648 1601784 5696704 1599875 5760125 +1604696 5714600 1604704 5714560 1601808 5696808 1599875 5760125 +1601808 5696808 1601784 5696736 1599875 5760125 1604696 5714600 +1599875 5760125 1601784 5696736 1601784 5696704 1601760 5696064 +1599875 5760125 1601784 5696736 1601760 5696064 1601760 5696040 +1601784 5696704 1601784 5696088 1601760 5696064 1601784 5696736 +1599875 5760125 1604712 5714680 1604696 5714600 1601784 5696736 +1601808 5696808 1601784 5696704 1601784 5696736 1604696 5714600 +1601784 5696704 1601784 5696736 1601808 5696808 1601928 5696648 +1601784 5696704 1601784 5696736 1601928 5696648 1601848 5696640 +1601928 5696648 1601896 5696632 1601848 5696640 1601784 5696736 +1601808 5696808 1601864 5696864 1601928 5696648 1601784 5696736 +1601784 5696736 1604696 5714600 1601808 5696808 1601928 5696648 +1601784 5696736 1601808 5696808 1601928 5696648 1601848 5696640 +1601784 5696736 1601760 5696064 1599875 5760125 1604696 5714600 +1601808 5696808 1601784 5696736 1604696 5714600 1604704 5714560 +1601784 5696736 1601848 5696640 1601784 5696704 1601760 5696064 +1602504 5696992 1610408 5708376 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1610408 5708376 +1611512 5715528 1610408 5708376 1602504 5696992 1602504 5697056 +1611512 5715528 1610408 5708376 1602504 5697056 1608648 5713040 +1610408 5708376 1602504 5696992 1602504 5697056 1608648 5713040 +1611512 5715528 1610408 5708376 1608648 5713040 1608720 5713120 +1610408 5708376 1602504 5697056 1608648 5713040 1608720 5713120 +1663880 5646248 1610408 5708376 1611512 5715528 1611528 5715552 +1663880 5646248 1610408 5708376 1611528 5715552 1663944 5646256 +1610408 5708376 1611512 5715528 1611528 5715552 1663944 5646256 +1611528 5715552 1615632 5735416 1663944 5646256 1610408 5708376 +1602504 5696992 1602504 5697056 1610408 5708376 1602224 5696056 +1610408 5708376 1663944 5646256 1663880 5646248 1602224 5696056 +1611512 5715528 1611528 5715552 1610408 5708376 1608720 5713120 +1602504 5697056 1608608 5713032 1608648 5713040 1610408 5708376 +1608648 5713040 1608720 5713120 1610408 5708376 1608608 5713032 +1602504 5697056 1608608 5713032 1610408 5708376 1602504 5696992 +1602504 5697056 1602464 5697088 1608608 5713032 1610408 5708376 +1602504 5697056 1602464 5697088 1610408 5708376 1602504 5696992 +1608608 5713032 1608648 5713040 1610408 5708376 1602464 5697088 +1602504 5696992 1610408 5708376 1602224 5696056 1602224 5696096 +1611512 5715528 1610408 5708376 1608720 5713120 1611464 5715504 +1610408 5708376 1608648 5713040 1608720 5713120 1611464 5715504 +1611512 5715528 1611528 5715552 1610408 5708376 1611464 5715504 +1608720 5713120 1608760 5713200 1611464 5715504 1610408 5708376 +1608760 5713200 1611352 5715472 1611464 5715504 1610408 5708376 +1608760 5713200 1611312 5715472 1611352 5715472 1610408 5708376 +1608720 5713120 1608760 5713200 1610408 5708376 1608648 5713040 +1611464 5715504 1611512 5715528 1610408 5708376 1611352 5715472 +1608760 5713200 1611352 5715472 1610408 5708376 1608720 5713120 +1602464 5697088 1602424 5697104 1608608 5713032 1610408 5708376 +1602464 5697088 1602424 5697104 1610408 5708376 1602504 5697056 +1608608 5713032 1608648 5713040 1610408 5708376 1602424 5697104 +1602424 5697104 1608336 5713136 1608608 5713032 1610408 5708376 +1608336 5713136 1608576 5713048 1608608 5713032 1610408 5708376 +1602424 5697104 1604784 5714488 1608336 5713136 1610408 5708376 +1604784 5714488 1604840 5714480 1608336 5713136 1610408 5708376 +1604840 5714480 1608280 5713176 1608336 5713136 1610408 5708376 +1604840 5714480 1608240 5713248 1608280 5713176 1610408 5708376 +1604840 5714480 1608280 5713176 1610408 5708376 1604784 5714488 +1604784 5714488 1604840 5714480 1610408 5708376 1602424 5697104 +1602424 5697104 1602352 5697112 1604784 5714488 1610408 5708376 +1604784 5714488 1604840 5714480 1610408 5708376 1602352 5697112 +1602352 5697112 1604744 5714504 1604784 5714488 1610408 5708376 +1608608 5713032 1608648 5713040 1610408 5708376 1608336 5713136 +1608336 5713136 1608608 5713032 1610408 5708376 1608280 5713176 +1602424 5697104 1602352 5697112 1610408 5708376 1602464 5697088 +1602224 5696056 1610440 5708328 1663880 5646248 1602200 5696008 +1610408 5708376 1610440 5708328 1602224 5696056 1602504 5696992 +1610408 5708376 1610440 5708328 1602504 5696992 1602504 5697056 +1610440 5708328 1602224 5696056 1602504 5696992 1602504 5697056 +1610408 5708376 1610440 5708328 1602504 5697056 1602464 5697088 +1610440 5708328 1602504 5696992 1602504 5697056 1602464 5697088 +1663880 5646248 1610440 5708328 1610408 5708376 1663944 5646256 +1610408 5708376 1611528 5715552 1663944 5646256 1610440 5708328 +1610408 5708376 1611512 5715528 1611528 5715552 1610440 5708328 +1611528 5715552 1663944 5646256 1610440 5708328 1611512 5715528 +1611528 5715552 1615632 5735416 1663944 5646256 1610440 5708328 +1663944 5646256 1663880 5646248 1610440 5708328 1611528 5715552 +1610408 5708376 1611512 5715528 1610440 5708328 1602464 5697088 +1610408 5708376 1611464 5715504 1611512 5715528 1610440 5708328 +1610440 5708328 1663880 5646248 1602224 5696056 1602504 5696992 +1663880 5646248 1602224 5696056 1610440 5708328 1663944 5646256 +1610408 5708376 1610440 5708328 1602464 5697088 1602424 5697104 +1610440 5708328 1602504 5697056 1602464 5697088 1602424 5697104 +1610408 5708376 1611512 5715528 1610440 5708328 1602424 5697104 +1602224 5696056 1602224 5696096 1602504 5696992 1610440 5708328 +1610408 5708376 1610440 5708328 1602424 5697104 1602352 5697112 +1611528 5715552 1610448 5708336 1610440 5708328 1611512 5715528 +1610440 5708328 1610408 5708376 1611512 5715528 1610448 5708336 +1611512 5715528 1611528 5715552 1610448 5708336 1610408 5708376 +1663944 5646256 1610448 5708336 1611528 5715552 1615632 5735416 +1610440 5708328 1610448 5708336 1663944 5646256 1663880 5646248 +1610408 5708376 1611464 5715504 1611512 5715528 1610448 5708336 +1610448 5708336 1663880 5646248 1610440 5708328 1610408 5708376 +1610440 5708328 1610448 5708336 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1610448 5708336 +1610448 5708336 1663944 5646256 1663880 5646248 1602224 5696056 +1610440 5708328 1610448 5708336 1602224 5696056 1602504 5696992 +1610440 5708328 1610408 5708376 1610448 5708336 1602224 5696056 +1610448 5708336 1611528 5715552 1663944 5646256 1663880 5646248 +1611528 5715552 1663944 5646256 1610448 5708336 1611512 5715528 +1663944 5646256 1610472 5708336 1611528 5715552 1615632 5735416 +1610448 5708336 1610472 5708336 1663944 5646256 1663880 5646248 +1610448 5708336 1610472 5708336 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1610472 5708336 +1610448 5708336 1610472 5708336 1602224 5696056 1610440 5708328 +1610472 5708336 1663880 5646248 1602224 5696056 1610440 5708328 +1602224 5696056 1602504 5696992 1610440 5708328 1610472 5708336 +1602504 5696992 1602504 5697056 1610440 5708328 1610472 5708336 +1602504 5697056 1602464 5697088 1610440 5708328 1610472 5708336 +1602224 5696056 1602504 5696992 1610472 5708336 1663880 5646248 +1602504 5696992 1602504 5697056 1610472 5708336 1602224 5696056 +1610440 5708328 1610448 5708336 1610472 5708336 1602504 5697056 +1610472 5708336 1663944 5646256 1663880 5646248 1602224 5696056 +1610448 5708336 1611528 5715552 1610472 5708336 1610440 5708328 +1611528 5715552 1610472 5708336 1610448 5708336 1611512 5715528 +1610448 5708336 1610408 5708376 1611512 5715528 1610472 5708336 +1610448 5708336 1610440 5708328 1610408 5708376 1610472 5708336 +1610408 5708376 1611464 5715504 1611512 5715528 1610472 5708336 +1610408 5708376 1611464 5715504 1610472 5708336 1610448 5708336 +1610472 5708336 1610440 5708328 1610448 5708336 1610408 5708376 +1611512 5715528 1611528 5715552 1610472 5708336 1611464 5715504 +1610472 5708336 1611528 5715552 1663944 5646256 1663880 5646248 +1611528 5715552 1663944 5646256 1610472 5708336 1611512 5715528 +1602224 5696056 1602224 5696096 1602504 5696992 1610472 5708336 +1610408 5708376 1611352 5715472 1611464 5715504 1610472 5708336 +1663944 5646256 1610512 5708312 1611528 5715552 1615632 5735416 +1610472 5708336 1610512 5708312 1663944 5646256 1663880 5646248 +1610472 5708336 1610512 5708312 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1610512 5708312 +1610472 5708336 1610512 5708312 1602224 5696056 1602504 5696992 +1610472 5708336 1610512 5708312 1602504 5696992 1602504 5697056 +1610472 5708336 1610512 5708312 1602504 5697056 1610440 5708328 +1602504 5697056 1602464 5697088 1610440 5708328 1610512 5708312 +1610512 5708312 1602224 5696056 1602504 5696992 1602504 5697056 +1610512 5708312 1602504 5696992 1602504 5697056 1610440 5708328 +1610472 5708336 1610512 5708312 1610440 5708328 1610448 5708336 +1610512 5708312 1663880 5646248 1602224 5696056 1602504 5696992 +1610512 5708312 1663944 5646256 1663880 5646248 1602224 5696056 +1610472 5708336 1611528 5715552 1610512 5708312 1610440 5708328 +1611528 5715552 1610512 5708312 1610472 5708336 1611512 5715528 +1611528 5715552 1663944 5646256 1610512 5708312 1611512 5715528 +1610472 5708336 1611464 5715504 1611512 5715528 1610512 5708312 +1610472 5708336 1610408 5708376 1611464 5715504 1610512 5708312 +1610472 5708336 1610448 5708336 1610408 5708376 1610512 5708312 +1611464 5715504 1611512 5715528 1610512 5708312 1610408 5708376 +1610512 5708312 1610440 5708328 1610472 5708336 1610408 5708376 +1611512 5715528 1611528 5715552 1610512 5708312 1611464 5715504 +1610512 5708312 1611528 5715552 1663944 5646256 1663880 5646248 +1602224 5696056 1602224 5696096 1602504 5696992 1610512 5708312 +1610408 5708376 1611352 5715472 1611464 5715504 1610512 5708312 +1611528 5715552 1610552 5708288 1610512 5708312 1611512 5715528 +1610552 5708288 1663944 5646256 1610512 5708312 1611512 5715528 +1611528 5715552 1663944 5646256 1610552 5708288 1611512 5715528 +1663944 5646256 1610552 5708288 1611528 5715552 1615632 5735416 +1610512 5708312 1611464 5715504 1611512 5715528 1610552 5708288 +1610512 5708312 1611464 5715504 1610552 5708288 1663944 5646256 +1611512 5715528 1611528 5715552 1610552 5708288 1611464 5715504 +1610512 5708312 1610408 5708376 1611464 5715504 1610552 5708288 +1610512 5708312 1610552 5708288 1663944 5646256 1663880 5646248 +1610512 5708312 1611464 5715504 1610552 5708288 1663880 5646248 +1610552 5708288 1611528 5715552 1663944 5646256 1663880 5646248 +1610512 5708312 1610552 5708288 1663880 5646248 1602224 5696056 +1610512 5708312 1611464 5715504 1610552 5708288 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1610552 5708288 +1610512 5708312 1610552 5708288 1602224 5696056 1602504 5696992 +1610512 5708312 1611464 5715504 1610552 5708288 1602504 5696992 +1610512 5708312 1610552 5708288 1602504 5696992 1602504 5697056 +1610512 5708312 1611464 5715504 1610552 5708288 1602504 5697056 +1610512 5708312 1610552 5708288 1602504 5697056 1610440 5708328 +1610512 5708312 1611464 5715504 1610552 5708288 1610440 5708328 +1610512 5708312 1610552 5708288 1610440 5708328 1610472 5708336 +1602504 5697056 1602464 5697088 1610440 5708328 1610552 5708288 +1610552 5708288 1602504 5696992 1602504 5697056 1610440 5708328 +1610552 5708288 1602224 5696056 1602504 5696992 1602504 5697056 +1610552 5708288 1663880 5646248 1602224 5696056 1602504 5696992 +1610552 5708288 1663944 5646256 1663880 5646248 1602224 5696056 +1602224 5696056 1602224 5696096 1602504 5696992 1610552 5708288 +1610552 5708288 1610640 5708296 1663944 5646256 1663880 5646248 +1610552 5708288 1611528 5715552 1610640 5708296 1663880 5646248 +1611528 5715552 1610640 5708296 1610552 5708288 1611512 5715528 +1610552 5708288 1611464 5715504 1611512 5715528 1610640 5708296 +1611528 5715552 1663944 5646256 1610640 5708296 1611512 5715528 +1610640 5708296 1663880 5646248 1610552 5708288 1611464 5715504 +1611512 5715528 1611528 5715552 1610640 5708296 1611464 5715504 +1610640 5708296 1611528 5715552 1663944 5646256 1663880 5646248 +1663944 5646256 1610640 5708296 1611528 5715552 1615632 5735416 +1610552 5708288 1610512 5708312 1611464 5715504 1610640 5708296 +1611464 5715504 1611512 5715528 1610640 5708296 1610512 5708312 +1610552 5708288 1610512 5708312 1610640 5708296 1663880 5646248 +1610512 5708312 1610408 5708376 1611464 5715504 1610640 5708296 +1611464 5715504 1611512 5715528 1610640 5708296 1610408 5708376 +1610512 5708312 1610472 5708336 1610408 5708376 1610640 5708296 +1610472 5708336 1610448 5708336 1610408 5708376 1610640 5708296 +1610408 5708376 1611464 5715504 1610640 5708296 1610472 5708336 +1610512 5708312 1610472 5708336 1610640 5708296 1610552 5708288 +1610552 5708288 1610640 5708296 1663880 5646248 1602224 5696056 +1610640 5708296 1663944 5646256 1663880 5646248 1602224 5696056 +1610552 5708288 1610512 5708312 1610640 5708296 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1610640 5708296 +1610552 5708288 1610640 5708296 1602224 5696056 1602504 5696992 +1610552 5708288 1610512 5708312 1610640 5708296 1602504 5696992 +1610552 5708288 1610640 5708296 1602504 5696992 1602504 5697056 +1610552 5708288 1610512 5708312 1610640 5708296 1602504 5697056 +1610552 5708288 1610640 5708296 1602504 5697056 1610440 5708328 +1610640 5708296 1602224 5696056 1602504 5696992 1602504 5697056 +1610640 5708296 1663880 5646248 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1610640 5708296 +1610408 5708376 1611352 5715472 1611464 5715504 1610640 5708296 +1611464 5715504 1611512 5715528 1610640 5708296 1611352 5715472 +1610408 5708376 1608760 5713200 1611352 5715472 1610640 5708296 +1608760 5713200 1611312 5715472 1611352 5715472 1610640 5708296 +1610408 5708376 1608760 5713200 1610640 5708296 1610472 5708336 +1611352 5715472 1611464 5715504 1610640 5708296 1608760 5713200 +1610408 5708376 1608720 5713120 1608760 5713200 1610640 5708296 +1608760 5713200 1611352 5715472 1610640 5708296 1608720 5713120 +1610408 5708376 1608648 5713040 1608720 5713120 1610640 5708296 +1610408 5708376 1608720 5713120 1610640 5708296 1610472 5708336 +1611528 5715552 1610680 5708312 1610640 5708296 1611512 5715528 +1610680 5708312 1663944 5646256 1610640 5708296 1611512 5715528 +1610640 5708296 1611464 5715504 1611512 5715528 1610680 5708312 +1610640 5708296 1611352 5715472 1611464 5715504 1610680 5708312 +1610640 5708296 1611352 5715472 1610680 5708312 1663944 5646256 +1611512 5715528 1611528 5715552 1610680 5708312 1611464 5715504 +1611464 5715504 1611512 5715528 1610680 5708312 1611352 5715472 +1610640 5708296 1610680 5708312 1663944 5646256 1663880 5646248 +1610640 5708296 1610680 5708312 1663880 5646248 1602224 5696056 +1610640 5708296 1611352 5715472 1610680 5708312 1602224 5696056 +1610680 5708312 1611528 5715552 1663944 5646256 1663880 5646248 +1610680 5708312 1663944 5646256 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1610680 5708312 +1663944 5646256 1610680 5708312 1611528 5715552 1615632 5735416 +1610640 5708296 1610680 5708312 1602224 5696056 1602504 5696992 +1610680 5708312 1663880 5646248 1602224 5696056 1602504 5696992 +1610640 5708296 1611352 5715472 1610680 5708312 1602504 5696992 +1610640 5708296 1610680 5708312 1602504 5696992 1602504 5697056 +1602224 5696056 1602224 5696096 1602504 5696992 1610680 5708312 +1610640 5708296 1608760 5713200 1611352 5715472 1610680 5708312 +1611352 5715472 1611464 5715504 1610680 5708312 1608760 5713200 +1610640 5708296 1608760 5713200 1610680 5708312 1602504 5696992 +1610640 5708296 1608720 5713120 1608760 5713200 1610680 5708312 +1610640 5708296 1608720 5713120 1610680 5708312 1602504 5696992 +1608760 5713200 1611312 5715472 1611352 5715472 1610680 5708312 +1608760 5713200 1611352 5715472 1610680 5708312 1608720 5713120 +1611528 5715552 1663944 5646256 1610680 5708312 1611512 5715528 +1610640 5708296 1610408 5708376 1608720 5713120 1610680 5708312 +1610640 5708296 1610408 5708376 1610680 5708312 1602504 5696992 +1608720 5713120 1608760 5713200 1610680 5708312 1610408 5708376 +1610408 5708376 1608648 5713040 1608720 5713120 1610680 5708312 +1610640 5708296 1610472 5708336 1610408 5708376 1610680 5708312 +1610640 5708296 1610472 5708336 1610680 5708312 1602504 5696992 +1610472 5708336 1610448 5708336 1610408 5708376 1610680 5708312 +1610640 5708296 1610512 5708312 1610472 5708336 1610680 5708312 +1610640 5708296 1610512 5708312 1610680 5708312 1602504 5696992 +1610472 5708336 1610408 5708376 1610680 5708312 1610512 5708312 +1610640 5708296 1610552 5708288 1610512 5708312 1610680 5708312 +1610408 5708376 1608720 5713120 1610680 5708312 1610472 5708336 +1610680 5708312 1610712 5708360 1663944 5646256 1663880 5646248 +1610680 5708312 1610712 5708360 1663880 5646248 1602224 5696056 +1663944 5646256 1610712 5708360 1611528 5715552 1615632 5735416 +1610680 5708312 1611528 5715552 1610712 5708360 1663880 5646248 +1611528 5715552 1610712 5708360 1610680 5708312 1611512 5715528 +1610680 5708312 1611464 5715504 1611512 5715528 1610712 5708360 +1610680 5708312 1611352 5715472 1611464 5715504 1610712 5708360 +1610680 5708312 1608760 5713200 1611352 5715472 1610712 5708360 +1611464 5715504 1611512 5715528 1610712 5708360 1611352 5715472 +1611352 5715472 1611464 5715504 1610712 5708360 1608760 5713200 +1608760 5713200 1611312 5715472 1611352 5715472 1610712 5708360 +1610680 5708312 1608720 5713120 1608760 5713200 1610712 5708360 +1608760 5713200 1611352 5715472 1610712 5708360 1608720 5713120 +1610680 5708312 1610408 5708376 1608720 5713120 1610712 5708360 +1610408 5708376 1608648 5713040 1608720 5713120 1610712 5708360 +1610408 5708376 1608648 5713040 1610712 5708360 1610680 5708312 +1610408 5708376 1608608 5713032 1608648 5713040 1610712 5708360 +1608720 5713120 1608760 5713200 1610712 5708360 1608648 5713040 +1610712 5708360 1663880 5646248 1610680 5708312 1610408 5708376 +1611512 5715528 1611528 5715552 1610712 5708360 1611464 5715504 +1610712 5708360 1611528 5715552 1663944 5646256 1663880 5646248 +1611528 5715552 1663944 5646256 1610712 5708360 1611512 5715528 +1610680 5708312 1610472 5708336 1610408 5708376 1610712 5708360 +1610408 5708376 1608648 5713040 1610712 5708360 1610472 5708336 +1610472 5708336 1610448 5708336 1610408 5708376 1610712 5708360 +1610680 5708312 1610512 5708312 1610472 5708336 1610712 5708360 +1610680 5708312 1610640 5708296 1610512 5708312 1610712 5708360 +1610512 5708312 1610472 5708336 1610712 5708360 1610640 5708296 +1610640 5708296 1610552 5708288 1610512 5708312 1610712 5708360 +1610680 5708312 1610640 5708296 1610712 5708360 1663880 5646248 +1610472 5708336 1610408 5708376 1610712 5708360 1610512 5708312 +1663944 5646256 1610728 5708400 1611528 5715552 1615632 5735416 +1610712 5708360 1610728 5708400 1663944 5646256 1663880 5646248 +1610712 5708360 1610728 5708400 1663880 5646248 1610680 5708312 +1610712 5708360 1611528 5715552 1610728 5708400 1663880 5646248 +1611528 5715552 1610728 5708400 1610712 5708360 1611512 5715528 +1610712 5708360 1611464 5715504 1611512 5715528 1610728 5708400 +1610712 5708360 1611352 5715472 1611464 5715504 1610728 5708400 +1610712 5708360 1608760 5713200 1611352 5715472 1610728 5708400 +1610712 5708360 1608720 5713120 1608760 5713200 1610728 5708400 +1611352 5715472 1611464 5715504 1610728 5708400 1608760 5713200 +1608760 5713200 1611352 5715472 1610728 5708400 1608720 5713120 +1608760 5713200 1611312 5715472 1611352 5715472 1610728 5708400 +1610712 5708360 1608648 5713040 1608720 5713120 1610728 5708400 +1608720 5713120 1608760 5713200 1610728 5708400 1608648 5713040 +1610712 5708360 1610408 5708376 1608648 5713040 1610728 5708400 +1610712 5708360 1610472 5708336 1610408 5708376 1610728 5708400 +1610408 5708376 1608608 5713032 1608648 5713040 1610728 5708400 +1610408 5708376 1608648 5713040 1610728 5708400 1610472 5708336 +1610472 5708336 1610448 5708336 1610408 5708376 1610728 5708400 +1608648 5713040 1608720 5713120 1610728 5708400 1610408 5708376 +1611464 5715504 1611512 5715528 1610728 5708400 1611352 5715472 +1610728 5708400 1663880 5646248 1610712 5708360 1610472 5708336 +1611512 5715528 1611528 5715552 1610728 5708400 1611464 5715504 +1610728 5708400 1611528 5715552 1663944 5646256 1663880 5646248 +1611528 5715552 1663944 5646256 1610728 5708400 1611512 5715528 +1610712 5708360 1610512 5708312 1610472 5708336 1610728 5708400 +1610472 5708336 1610408 5708376 1610728 5708400 1610512 5708312 +1610712 5708360 1610640 5708296 1610512 5708312 1610728 5708400 +1610712 5708360 1610512 5708312 1610728 5708400 1663880 5646248 +1663944 5646256 1610760 5708480 1611528 5715552 1615632 5735416 +1610728 5708400 1610760 5708480 1663944 5646256 1663880 5646248 +1610728 5708400 1610760 5708480 1663880 5646248 1610712 5708360 +1610728 5708400 1611528 5715552 1610760 5708480 1663880 5646248 +1611528 5715552 1610760 5708480 1610728 5708400 1611512 5715528 +1610728 5708400 1611464 5715504 1611512 5715528 1610760 5708480 +1610728 5708400 1611352 5715472 1611464 5715504 1610760 5708480 +1610728 5708400 1608760 5713200 1611352 5715472 1610760 5708480 +1610728 5708400 1608720 5713120 1608760 5713200 1610760 5708480 +1610728 5708400 1608648 5713040 1608720 5713120 1610760 5708480 +1608760 5713200 1611352 5715472 1610760 5708480 1608720 5713120 +1608720 5713120 1608760 5713200 1610760 5708480 1608648 5713040 +1608760 5713200 1611312 5715472 1611352 5715472 1610760 5708480 +1610728 5708400 1610408 5708376 1608648 5713040 1610760 5708480 +1608648 5713040 1608720 5713120 1610760 5708480 1610408 5708376 +1610408 5708376 1608608 5713032 1608648 5713040 1610760 5708480 +1610728 5708400 1610472 5708336 1610408 5708376 1610760 5708480 +1610728 5708400 1610512 5708312 1610472 5708336 1610760 5708480 +1610472 5708336 1610448 5708336 1610408 5708376 1610760 5708480 +1610408 5708376 1608648 5713040 1610760 5708480 1610472 5708336 +1611352 5715472 1611464 5715504 1610760 5708480 1608760 5713200 +1611464 5715504 1611512 5715528 1610760 5708480 1611352 5715472 +1610760 5708480 1663880 5646248 1610728 5708400 1610472 5708336 +1611512 5715528 1611528 5715552 1610760 5708480 1611464 5715504 +1610760 5708480 1611528 5715552 1663944 5646256 1663880 5646248 +1611528 5715552 1663944 5646256 1610760 5708480 1611512 5715528 +1608760 5713200 1610752 5708648 1610760 5708480 1608720 5713120 +1610760 5708480 1608648 5713040 1608720 5713120 1610752 5708648 +1610760 5708480 1610408 5708376 1608648 5713040 1610752 5708648 +1608720 5713120 1608760 5713200 1610752 5708648 1608648 5713040 +1608648 5713040 1608720 5713120 1610752 5708648 1610408 5708376 +1611352 5715472 1610752 5708648 1608760 5713200 1611312 5715472 +1610408 5708376 1608608 5713032 1608648 5713040 1610752 5708648 +1610408 5708376 1608608 5713032 1610752 5708648 1610760 5708480 +1608648 5713040 1608720 5713120 1610752 5708648 1608608 5713032 +1610408 5708376 1608336 5713136 1608608 5713032 1610752 5708648 +1610760 5708480 1610472 5708336 1610408 5708376 1610752 5708648 +1610760 5708480 1610752 5708648 1611352 5715472 1611464 5715504 +1610760 5708480 1610752 5708648 1611464 5715504 1611512 5715528 +1610752 5708648 1611352 5715472 1611464 5715504 1611512 5715528 +1610760 5708480 1610752 5708648 1611512 5715528 1611528 5715552 +1610752 5708648 1611464 5715504 1611512 5715528 1611528 5715552 +1610752 5708648 1611528 5715552 1610760 5708480 1610408 5708376 +1610760 5708480 1610752 5708648 1611528 5715552 1663944 5646256 +1610752 5708648 1608760 5713200 1611352 5715472 1611464 5715504 +1608760 5713200 1611352 5715472 1610752 5708648 1608720 5713120 +1610408 5708376 1610688 5708680 1610752 5708648 1610760 5708480 +1610408 5708376 1608608 5713032 1610688 5708680 1610760 5708480 +1610752 5708648 1610688 5708680 1608608 5713032 1608648 5713040 +1610752 5708648 1610688 5708680 1608648 5713040 1608720 5713120 +1610752 5708648 1610688 5708680 1608720 5713120 1608760 5713200 +1610688 5708680 1608648 5713040 1608720 5713120 1608760 5713200 +1610688 5708680 1610408 5708376 1608608 5713032 1608648 5713040 +1610688 5708680 1608608 5713032 1608648 5713040 1608720 5713120 +1608608 5713032 1610688 5708680 1610408 5708376 1608336 5713136 +1610408 5708376 1610688 5708680 1610760 5708480 1610472 5708336 +1610688 5708680 1610752 5708648 1610760 5708480 1610472 5708336 +1610408 5708376 1608608 5713032 1610688 5708680 1610472 5708336 +1610760 5708480 1610728 5708400 1610472 5708336 1610688 5708680 +1610408 5708376 1610688 5708680 1610472 5708336 1610448 5708336 +1610688 5708680 1608760 5713200 1610752 5708648 1610760 5708480 +1610752 5708648 1610688 5708680 1608760 5713200 1611352 5715472 +1610688 5708680 1608720 5713120 1608760 5713200 1611352 5715472 +1608760 5713200 1611312 5715472 1611352 5715472 1610688 5708680 +1610752 5708648 1610688 5708680 1611352 5715472 1611464 5715504 +1610752 5708648 1610760 5708480 1610688 5708680 1611352 5715472 +1610688 5708680 1610600 5708680 1608608 5713032 1608648 5713040 +1610408 5708376 1610600 5708680 1610688 5708680 1610472 5708336 +1610688 5708680 1610472 5708336 1610600 5708680 1608648 5713040 +1610600 5708680 1610408 5708376 1608608 5713032 1608648 5713040 +1610408 5708376 1608608 5713032 1610600 5708680 1610472 5708336 +1610688 5708680 1610600 5708680 1608648 5713040 1608720 5713120 +1610688 5708680 1610600 5708680 1608720 5713120 1608760 5713200 +1610600 5708680 1608608 5713032 1608648 5713040 1608720 5713120 +1610688 5708680 1610472 5708336 1610600 5708680 1608720 5713120 +1610408 5708376 1610600 5708680 1610472 5708336 1610448 5708336 +1608608 5713032 1610600 5708680 1610408 5708376 1608336 5713136 +1610688 5708680 1610760 5708480 1610472 5708336 1610600 5708680 +1610688 5708680 1610752 5708648 1610760 5708480 1610600 5708680 +1610472 5708336 1610408 5708376 1610600 5708680 1610760 5708480 +1610688 5708680 1610760 5708480 1610600 5708680 1608720 5713120 +1610760 5708480 1610728 5708400 1610472 5708336 1610600 5708680 +1610472 5708336 1610408 5708376 1610600 5708680 1610728 5708400 +1610728 5708400 1610512 5708312 1610472 5708336 1610600 5708680 +1610760 5708480 1610728 5708400 1610600 5708680 1610688 5708680 +1610600 5708680 1610552 5708656 1608608 5713032 1608648 5713040 +1610600 5708680 1610552 5708656 1608648 5713040 1608720 5713120 +1610600 5708680 1610408 5708376 1610552 5708656 1608648 5713040 +1610408 5708376 1610552 5708656 1610600 5708680 1610472 5708336 +1610600 5708680 1610728 5708400 1610472 5708336 1610552 5708656 +1610552 5708656 1608648 5713040 1610600 5708680 1610728 5708400 +1610472 5708336 1610408 5708376 1610552 5708656 1610728 5708400 +1610552 5708656 1610408 5708376 1608608 5713032 1608648 5713040 +1610728 5708400 1610512 5708312 1610472 5708336 1610552 5708656 +1610600 5708680 1610760 5708480 1610728 5708400 1610552 5708656 +1610728 5708400 1610472 5708336 1610552 5708656 1610760 5708480 +1610600 5708680 1610760 5708480 1610552 5708656 1608648 5713040 +1610408 5708376 1610552 5708656 1610472 5708336 1610448 5708336 +1608608 5713032 1610552 5708656 1610408 5708376 1608336 5713136 +1610600 5708680 1610688 5708680 1610760 5708480 1610552 5708656 +1610408 5708376 1608608 5713032 1610552 5708656 1610472 5708336 +1610552 5708656 1610504 5708616 1608608 5713032 1608648 5713040 +1608608 5713032 1610504 5708616 1610408 5708376 1608336 5713136 +1608608 5713032 1610504 5708616 1608336 5713136 1608576 5713048 +1610408 5708376 1610504 5708616 1610552 5708656 1610472 5708336 +1610552 5708656 1610728 5708400 1610472 5708336 1610504 5708616 +1610552 5708656 1610760 5708480 1610728 5708400 1610504 5708616 +1610728 5708400 1610472 5708336 1610504 5708616 1610760 5708480 +1610728 5708400 1610512 5708312 1610472 5708336 1610504 5708616 +1610552 5708656 1610600 5708680 1610760 5708480 1610504 5708616 +1610408 5708376 1610504 5708616 1610472 5708336 1610448 5708336 +1610504 5708616 1608608 5713032 1610552 5708656 1610760 5708480 +1610472 5708336 1610408 5708376 1610504 5708616 1610728 5708400 +1608608 5713032 1610552 5708656 1610504 5708616 1608336 5713136 +1610504 5708616 1610472 5708336 1610408 5708376 1608336 5713136 +1610408 5708376 1608280 5713176 1608336 5713136 1610504 5708616 +1610504 5708616 1610456 5708504 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1610456 5708504 +1610504 5708616 1610456 5708504 1608608 5713032 1610552 5708656 +1610504 5708616 1610408 5708376 1610456 5708504 1608608 5713032 +1610408 5708376 1610456 5708504 1610504 5708616 1610472 5708336 +1610408 5708376 1610456 5708504 1610472 5708336 1610448 5708336 +1610504 5708616 1610728 5708400 1610472 5708336 1610456 5708504 +1610504 5708616 1610760 5708480 1610728 5708400 1610456 5708504 +1610504 5708616 1610552 5708656 1610760 5708480 1610456 5708504 +1610728 5708400 1610512 5708312 1610472 5708336 1610456 5708504 +1610728 5708400 1610512 5708312 1610456 5708504 1610760 5708480 +1610456 5708504 1608608 5713032 1610504 5708616 1610760 5708480 +1610472 5708336 1610408 5708376 1610456 5708504 1610512 5708312 +1610456 5708504 1610408 5708376 1608336 5713136 1608608 5713032 +1610408 5708376 1608336 5713136 1610456 5708504 1610472 5708336 +1610728 5708400 1610712 5708360 1610512 5708312 1610456 5708504 +1608336 5713136 1610456 5708504 1610408 5708376 1608280 5713176 +1610456 5708504 1610408 5708416 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1610408 5708416 +1610456 5708504 1610408 5708416 1608608 5713032 1610504 5708616 +1608608 5713032 1610552 5708656 1610504 5708616 1610408 5708416 +1610408 5708416 1608336 5713136 1608608 5713032 1610504 5708616 +1610456 5708504 1610408 5708376 1610408 5708416 1610504 5708616 +1610408 5708376 1610408 5708416 1610456 5708504 1610472 5708336 +1610408 5708376 1610408 5708416 1610472 5708336 1610448 5708336 +1610456 5708504 1610512 5708312 1610472 5708336 1610408 5708416 +1610408 5708416 1610504 5708616 1610456 5708504 1610472 5708336 +1610408 5708416 1610408 5708376 1608336 5713136 1608608 5713032 +1610408 5708376 1608336 5713136 1610408 5708416 1610472 5708336 +1608336 5713136 1610408 5708416 1610408 5708376 1608280 5713176 +1610408 5708376 1604840 5714480 1608280 5713176 1610408 5708416 +1604840 5714480 1608240 5713248 1608280 5713176 1610408 5708416 +1610408 5708376 1604784 5714488 1604840 5714480 1610408 5708416 +1608336 5713136 1608608 5713032 1610408 5708416 1608280 5713176 +1610408 5708416 1610472 5708336 1610408 5708376 1604840 5714480 +1608280 5713176 1608336 5713136 1610408 5708416 1604840 5714480 +1610408 5708376 1608632 5706656 1604784 5714488 1604840 5714480 +1610408 5708376 1608632 5706656 1604840 5714480 1610408 5708416 +1604840 5714480 1608280 5713176 1610408 5708416 1608632 5706656 +1604840 5714480 1608240 5713248 1608280 5713176 1608632 5706656 +1610408 5708416 1610408 5708376 1608632 5706656 1608280 5713176 +1608632 5706656 1604784 5714488 1604840 5714480 1608280 5713176 +1602352 5697112 1608632 5706656 1610408 5708376 1602424 5697104 +1604784 5714488 1608632 5706656 1602352 5697112 1604744 5714504 +1602352 5697112 1602152 5697040 1604744 5714504 1608632 5706656 +1602152 5697040 1602072 5696992 1604744 5714504 1608632 5706656 +1602352 5697112 1602200 5697056 1602152 5697040 1608632 5706656 +1604744 5714504 1604784 5714488 1608632 5706656 1602152 5697040 +1602352 5697112 1602152 5697040 1608632 5706656 1602424 5697104 +1610408 5708376 1602424 5697104 1608632 5706656 1610408 5708416 +1608632 5706656 1604744 5714504 1604784 5714488 1604840 5714480 +1608280 5713176 1608336 5713136 1610408 5708416 1608632 5706656 +1608280 5713176 1608336 5713136 1608632 5706656 1604840 5714480 +1610408 5708416 1610408 5708376 1608632 5706656 1608336 5713136 +1608336 5713136 1608608 5713032 1610408 5708416 1608632 5706656 +1608336 5713136 1608576 5713048 1608608 5713032 1608632 5706656 +1610408 5708416 1610408 5708376 1608632 5706656 1608608 5713032 +1608608 5713032 1610504 5708616 1610408 5708416 1608632 5706656 +1608336 5713136 1608608 5713032 1608632 5706656 1608280 5713176 +1610408 5708376 1610440 5708328 1602424 5697104 1608632 5706656 +1602424 5697104 1602352 5697112 1608632 5706656 1610440 5708328 +1610440 5708328 1602464 5697088 1602424 5697104 1608632 5706656 +1610440 5708328 1602504 5697056 1602464 5697088 1608632 5706656 +1602424 5697104 1602352 5697112 1608632 5706656 1602464 5697088 +1610440 5708328 1610552 5708288 1602504 5697056 1608632 5706656 +1602504 5697056 1602464 5697088 1608632 5706656 1610552 5708288 +1610552 5708288 1610640 5708296 1602504 5697056 1608632 5706656 +1602504 5697056 1602464 5697088 1608632 5706656 1610640 5708296 +1610552 5708288 1610640 5708296 1608632 5706656 1610440 5708328 +1610440 5708328 1610512 5708312 1610552 5708288 1608632 5706656 +1610640 5708296 1602504 5696992 1602504 5697056 1608632 5706656 +1602504 5697056 1602464 5697088 1608632 5706656 1602504 5696992 +1610640 5708296 1602504 5696992 1608632 5706656 1610552 5708288 +1610640 5708296 1610680 5708312 1602504 5696992 1608632 5706656 +1610640 5708296 1610680 5708312 1608632 5706656 1610552 5708288 +1602504 5696992 1602504 5697056 1608632 5706656 1610680 5708312 +1610680 5708312 1602224 5696056 1602504 5696992 1608632 5706656 +1602464 5697088 1602424 5697104 1608632 5706656 1602504 5697056 +1610408 5708376 1610440 5708328 1608632 5706656 1610408 5708416 +1610440 5708328 1610552 5708288 1608632 5706656 1610408 5708376 +1608632 5706656 1608680 5706648 1602504 5696992 1602504 5697056 +1608632 5706656 1608680 5706648 1602504 5697056 1602464 5697088 +1610680 5708312 1608680 5706648 1608632 5706656 1610640 5708296 +1608632 5706656 1610552 5708288 1610640 5708296 1608680 5706648 +1608632 5706656 1610440 5708328 1610552 5708288 1608680 5706648 +1610552 5708288 1610640 5708296 1608680 5706648 1610440 5708328 +1610440 5708328 1610512 5708312 1610552 5708288 1608680 5706648 +1610640 5708296 1610680 5708312 1608680 5706648 1610552 5708288 +1602504 5696992 1608680 5706648 1610680 5708312 1602224 5696056 +1610680 5708312 1663880 5646248 1602224 5696056 1608680 5706648 +1602504 5696992 1608680 5706648 1602224 5696056 1602224 5696096 +1608632 5706656 1610440 5708328 1608680 5706648 1602504 5697056 +1608680 5706648 1602224 5696056 1602504 5696992 1602504 5697056 +1610680 5708312 1602224 5696056 1608680 5706648 1610640 5708296 +1608632 5706656 1610408 5708376 1610440 5708328 1608680 5706648 +1610440 5708328 1610552 5708288 1608680 5706648 1610408 5708376 +1608632 5706656 1610408 5708376 1608680 5706648 1602504 5697056 +1608632 5706656 1610408 5708416 1610408 5708376 1608680 5706648 +1602224 5696056 1608784 5706656 1610680 5708312 1663880 5646248 +1608680 5706648 1608784 5706656 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1608784 5706656 +1608784 5706656 1610680 5708312 1602224 5696056 1602504 5696992 +1608680 5706648 1608784 5706656 1602504 5696992 1602504 5697056 +1608680 5706648 1608784 5706656 1602504 5697056 1608632 5706656 +1608784 5706656 1602224 5696056 1602504 5696992 1602504 5697056 +1608680 5706648 1610680 5708312 1608784 5706656 1602504 5697056 +1610680 5708312 1608784 5706656 1608680 5706648 1610640 5708296 +1608680 5706648 1610552 5708288 1610640 5708296 1608784 5706656 +1608680 5706648 1610440 5708328 1610552 5708288 1608784 5706656 +1608680 5706648 1610408 5708376 1610440 5708328 1608784 5706656 +1610440 5708328 1610552 5708288 1608784 5706656 1610408 5708376 +1610440 5708328 1610512 5708312 1610552 5708288 1608784 5706656 +1610552 5708288 1610640 5708296 1608784 5706656 1610440 5708328 +1610680 5708312 1602224 5696056 1608784 5706656 1610640 5708296 +1608784 5706656 1602504 5697056 1608680 5706648 1610408 5708376 +1610640 5708296 1610680 5708312 1608784 5706656 1610552 5708288 +1608680 5706648 1608632 5706656 1610408 5708376 1608784 5706656 +1610408 5708376 1610440 5708328 1608784 5706656 1608632 5706656 +1608632 5706656 1610408 5708416 1610408 5708376 1608784 5706656 +1608680 5706648 1608632 5706656 1608784 5706656 1602504 5697056 +1602224 5696056 1608912 5706760 1610680 5708312 1663880 5646248 +1608784 5706656 1608912 5706760 1602224 5696056 1602504 5696992 +1608784 5706656 1608912 5706760 1602504 5696992 1602504 5697056 +1602224 5696056 1602224 5696096 1602504 5696992 1608912 5706760 +1608784 5706656 1610680 5708312 1608912 5706760 1602504 5696992 +1610680 5708312 1608912 5706760 1608784 5706656 1610640 5708296 +1608912 5706760 1602504 5696992 1608784 5706656 1610640 5708296 +1608912 5706760 1610680 5708312 1602224 5696056 1602504 5696992 +1610680 5708312 1602224 5696056 1608912 5706760 1610640 5708296 +1608784 5706656 1610552 5708288 1610640 5708296 1608912 5706760 +1608784 5706656 1610440 5708328 1610552 5708288 1608912 5706760 +1608784 5706656 1610408 5708376 1610440 5708328 1608912 5706760 +1608784 5706656 1608632 5706656 1610408 5708376 1608912 5706760 +1610408 5708376 1610440 5708328 1608912 5706760 1608632 5706656 +1610440 5708328 1610512 5708312 1610552 5708288 1608912 5706760 +1610440 5708328 1610552 5708288 1608912 5706760 1610408 5708376 +1608632 5706656 1610408 5708416 1610408 5708376 1608912 5706760 +1608632 5706656 1608608 5713032 1610408 5708416 1608912 5706760 +1608632 5706656 1610408 5708416 1608912 5706760 1608784 5706656 +1610408 5708376 1610440 5708328 1608912 5706760 1610408 5708416 +1608784 5706656 1608632 5706656 1608912 5706760 1602504 5696992 +1610640 5708296 1610680 5708312 1608912 5706760 1610552 5708288 +1610552 5708288 1610640 5708296 1608912 5706760 1610440 5708328 +1608784 5706656 1608680 5706648 1608632 5706656 1608912 5706760 +1608632 5706656 1610408 5708416 1608912 5706760 1608680 5706648 +1608784 5706656 1608680 5706648 1608912 5706760 1602504 5696992 +1602224 5696056 1608984 5706784 1610680 5708312 1663880 5646248 +1608912 5706760 1608984 5706784 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1608984 5706784 +1608912 5706760 1608984 5706784 1602504 5696992 1608784 5706656 +1602504 5696992 1602504 5697056 1608784 5706656 1608984 5706784 +1608984 5706784 1602224 5696056 1602504 5696992 1608784 5706656 +1608912 5706760 1610680 5708312 1608984 5706784 1608784 5706656 +1610680 5708312 1608984 5706784 1608912 5706760 1610640 5708296 +1608912 5706760 1610552 5708288 1610640 5708296 1608984 5706784 +1608984 5706784 1608784 5706656 1608912 5706760 1610552 5708288 +1610640 5708296 1610680 5708312 1608984 5706784 1610552 5708288 +1608984 5706784 1610680 5708312 1602224 5696056 1602504 5696992 +1610680 5708312 1602224 5696056 1608984 5706784 1610640 5708296 +1608912 5706760 1610440 5708328 1610552 5708288 1608984 5706784 +1610440 5708328 1610512 5708312 1610552 5708288 1608984 5706784 +1608912 5706760 1610408 5708376 1610440 5708328 1608984 5706784 +1608912 5706760 1610408 5708416 1610408 5708376 1608984 5706784 +1610408 5708376 1610440 5708328 1608984 5706784 1610408 5708416 +1608912 5706760 1608632 5706656 1610408 5708416 1608984 5706784 +1610552 5708288 1610640 5708296 1608984 5706784 1610440 5708328 +1608912 5706760 1610408 5708416 1608984 5706784 1608784 5706656 +1610440 5708328 1610552 5708288 1608984 5706784 1610408 5708376 +1602224 5696056 1609152 5706768 1610680 5708312 1663880 5646248 +1608984 5706784 1609152 5706768 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1609152 5706768 +1608984 5706784 1609152 5706768 1602504 5696992 1608784 5706656 +1602504 5696992 1602504 5697056 1608784 5706656 1609152 5706768 +1608984 5706784 1609152 5706768 1608784 5706656 1608912 5706760 +1608784 5706656 1608912 5706760 1609152 5706768 1602504 5697056 +1609152 5706768 1602224 5696056 1602504 5696992 1602504 5697056 +1608984 5706784 1610680 5708312 1609152 5706768 1608912 5706760 +1610680 5708312 1609152 5706768 1608984 5706784 1610640 5708296 +1610680 5708312 1602224 5696056 1609152 5706768 1610640 5708296 +1608984 5706784 1610552 5708288 1610640 5708296 1609152 5706768 +1608984 5706784 1610440 5708328 1610552 5708288 1609152 5706768 +1610440 5708328 1610512 5708312 1610552 5708288 1609152 5706768 +1610552 5708288 1610640 5708296 1609152 5706768 1610440 5708328 +1609152 5706768 1608912 5706760 1608984 5706784 1610440 5708328 +1610640 5708296 1610680 5708312 1609152 5706768 1610552 5708288 +1609152 5706768 1610680 5708312 1602224 5696056 1602504 5696992 +1602504 5697056 1608680 5706648 1608784 5706656 1609152 5706768 +1608984 5706784 1610408 5708376 1610440 5708328 1609152 5706768 +1608984 5706784 1610408 5708416 1610408 5708376 1609152 5706768 +1610440 5708328 1610552 5708288 1609152 5706768 1610408 5708376 +1608984 5706784 1610408 5708376 1609152 5706768 1608912 5706760 +1602224 5696056 1609352 5706640 1610680 5708312 1663880 5646248 +1610680 5708312 1610712 5708360 1663880 5646248 1609352 5706640 +1609352 5706640 1609152 5706768 1610680 5708312 1663880 5646248 +1602224 5696056 1609352 5706640 1663880 5646248 1602200 5696008 +1610680 5708312 1609352 5706640 1609152 5706768 1610640 5708296 +1610680 5708312 1663880 5646248 1609352 5706640 1610640 5708296 +1609352 5706640 1602224 5696056 1609152 5706768 1610640 5708296 +1602224 5696056 1609152 5706768 1609352 5706640 1663880 5646248 +1609152 5706768 1610552 5708288 1610640 5708296 1609352 5706640 +1610640 5708296 1610680 5708312 1609352 5706640 1610552 5708288 +1609152 5706768 1610552 5708288 1609352 5706640 1602224 5696056 +1609152 5706768 1610440 5708328 1610552 5708288 1609352 5706640 +1610440 5708328 1610512 5708312 1610552 5708288 1609352 5706640 +1609152 5706768 1610440 5708328 1609352 5706640 1602224 5696056 +1609152 5706768 1610408 5708376 1610440 5708328 1609352 5706640 +1610552 5708288 1610640 5708296 1609352 5706640 1610440 5708328 +1609152 5706768 1609352 5706640 1602224 5696056 1602504 5696992 +1609152 5706768 1610440 5708328 1609352 5706640 1602504 5696992 +1609352 5706640 1663880 5646248 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1609352 5706640 +1609152 5706768 1609352 5706640 1602504 5696992 1602504 5697056 +1609152 5706768 1609352 5706640 1602504 5697056 1608784 5706656 +1609152 5706768 1610440 5708328 1609352 5706640 1608784 5706656 +1609152 5706768 1609352 5706640 1608784 5706656 1608912 5706760 +1609352 5706640 1602504 5696992 1602504 5697056 1608784 5706656 +1609352 5706640 1602224 5696056 1602504 5696992 1602504 5697056 +1602504 5697056 1608680 5706648 1608784 5706656 1609352 5706640 +1602504 5697056 1608632 5706656 1608680 5706648 1609352 5706640 +1608784 5706656 1609152 5706768 1609352 5706640 1608680 5706648 +1602504 5697056 1608680 5706648 1609352 5706640 1602504 5696992 +1609352 5706640 1609424 5706616 1663880 5646248 1602224 5696056 +1663880 5646248 1609424 5706616 1610680 5708312 1610712 5708360 +1609352 5706640 1610680 5708312 1609424 5706616 1602224 5696056 +1610680 5708312 1609424 5706616 1609352 5706640 1610640 5708296 +1609424 5706616 1602224 5696056 1609352 5706640 1610640 5708296 +1609424 5706616 1610680 5708312 1663880 5646248 1602224 5696056 +1663880 5646248 1602200 5696008 1602224 5696056 1609424 5706616 +1610680 5708312 1663880 5646248 1609424 5706616 1610640 5708296 +1609352 5706640 1610552 5708288 1610640 5708296 1609424 5706616 +1609352 5706640 1610552 5708288 1609424 5706616 1602224 5696056 +1610640 5708296 1610680 5708312 1609424 5706616 1610552 5708288 +1609352 5706640 1609424 5706616 1602224 5696056 1602504 5696992 +1609424 5706616 1663880 5646248 1602224 5696056 1602504 5696992 +1609352 5706640 1610552 5708288 1609424 5706616 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1609424 5706616 +1609352 5706640 1610440 5708328 1610552 5708288 1609424 5706616 +1609352 5706640 1610440 5708328 1609424 5706616 1602504 5696992 +1610440 5708328 1610512 5708312 1610552 5708288 1609424 5706616 +1610552 5708288 1610640 5708296 1609424 5706616 1610440 5708328 +1609352 5706640 1609152 5706768 1610440 5708328 1609424 5706616 +1609352 5706640 1609152 5706768 1609424 5706616 1602504 5696992 +1609152 5706768 1610408 5708376 1610440 5708328 1609424 5706616 +1610440 5708328 1610552 5708288 1609424 5706616 1609152 5706768 +1609352 5706640 1609424 5706616 1602504 5696992 1602504 5697056 +1609352 5706640 1609152 5706768 1609424 5706616 1602504 5697056 +1609424 5706616 1602224 5696056 1602504 5696992 1602504 5697056 +1609352 5706640 1609424 5706616 1602504 5697056 1608680 5706648 +1609352 5706640 1609152 5706768 1609424 5706616 1608680 5706648 +1602504 5697056 1608632 5706656 1608680 5706648 1609424 5706616 +1609424 5706616 1602504 5696992 1602504 5697056 1608680 5706648 +1609352 5706640 1609424 5706616 1608680 5706648 1608784 5706656 +1609352 5706640 1609152 5706768 1609424 5706616 1608784 5706656 +1609352 5706640 1609424 5706616 1608784 5706656 1609152 5706768 +1609424 5706616 1602504 5697056 1608680 5706648 1608784 5706656 +1663880 5646248 1609472 5706664 1610680 5708312 1610712 5708360 +1609424 5706616 1609472 5706664 1663880 5646248 1602224 5696056 +1609424 5706616 1609472 5706664 1602224 5696056 1602504 5696992 +1663880 5646248 1602200 5696008 1602224 5696056 1609472 5706664 +1609424 5706616 1610680 5708312 1609472 5706664 1602224 5696056 +1610680 5708312 1609472 5706664 1609424 5706616 1610640 5708296 +1609424 5706616 1610552 5708288 1610640 5708296 1609472 5706664 +1610680 5708312 1663880 5646248 1609472 5706664 1610640 5708296 +1609472 5706664 1602224 5696056 1609424 5706616 1610552 5708288 +1610640 5708296 1610680 5708312 1609472 5706664 1610552 5708288 +1609472 5706664 1610680 5708312 1663880 5646248 1602224 5696056 +1609424 5706616 1610440 5708328 1610552 5708288 1609472 5706664 +1610552 5708288 1610640 5708296 1609472 5706664 1610440 5708328 +1609424 5706616 1610440 5708328 1609472 5706664 1602224 5696056 +1610440 5708328 1610512 5708312 1610552 5708288 1609472 5706664 +1609424 5706616 1609152 5706768 1610440 5708328 1609472 5706664 +1609424 5706616 1609152 5706768 1609472 5706664 1602224 5696056 +1610440 5708328 1610552 5708288 1609472 5706664 1609152 5706768 +1609152 5706768 1610408 5708376 1610440 5708328 1609472 5706664 +1609424 5706616 1609352 5706640 1609152 5706768 1609472 5706664 +1609424 5706616 1609352 5706640 1609472 5706664 1602224 5696056 +1609152 5706768 1610440 5708328 1609472 5706664 1609352 5706640 +1609472 5706664 1609464 5706776 1610440 5708328 1610552 5708288 +1609472 5706664 1609464 5706776 1610552 5708288 1610640 5708296 +1609464 5706776 1609152 5706768 1610440 5708328 1610552 5708288 +1609472 5706664 1609152 5706768 1609464 5706776 1610640 5708296 +1609472 5706664 1609464 5706776 1610640 5708296 1610680 5708312 +1610440 5708328 1610512 5708312 1610552 5708288 1609464 5706776 +1609464 5706776 1610440 5708328 1610552 5708288 1610640 5708296 +1610440 5708328 1609464 5706776 1609152 5706768 1610408 5708376 +1610440 5708328 1610552 5708288 1609464 5706776 1610408 5708376 +1609464 5706776 1609472 5706664 1609152 5706768 1610408 5708376 +1609152 5706768 1609464 5706776 1609472 5706664 1609352 5706640 +1609464 5706776 1610640 5708296 1609472 5706664 1609352 5706640 +1609152 5706768 1610408 5708376 1609464 5706776 1609352 5706640 +1609472 5706664 1609424 5706616 1609352 5706640 1609464 5706776 +1609152 5706768 1608984 5706784 1610408 5708376 1609464 5706776 +1609152 5706768 1609368 5706872 1609464 5706776 1609352 5706640 +1609368 5706872 1610408 5708376 1609464 5706776 1609352 5706640 +1609152 5706768 1610408 5708376 1609368 5706872 1609352 5706640 +1609464 5706776 1609368 5706872 1610408 5708376 1610440 5708328 +1609464 5706776 1609368 5706872 1610440 5708328 1610552 5708288 +1609464 5706776 1609352 5706640 1609368 5706872 1610440 5708328 +1609368 5706872 1609152 5706768 1610408 5708376 1610440 5708328 +1609464 5706776 1609472 5706664 1609352 5706640 1609368 5706872 +1610408 5708376 1609368 5706872 1609152 5706768 1608984 5706784 +1610408 5708376 1609368 5706872 1608984 5706784 1610408 5708416 +1610408 5708376 1610440 5708328 1609368 5706872 1608984 5706784 +1609368 5706872 1609352 5706640 1609152 5706768 1608984 5706784 +1610408 5708416 1609048 5707032 1608632 5706656 1608608 5713032 +1608632 5706656 1609048 5707032 1608912 5706760 1608680 5706648 +1610408 5708416 1608912 5706760 1609048 5707032 1608608 5713032 +1609048 5707032 1608912 5706760 1608632 5706656 1608608 5713032 +1608912 5706760 1609048 5707032 1610408 5708416 1608984 5706784 +1610408 5708416 1610408 5708376 1608984 5706784 1609048 5707032 +1610408 5708376 1609368 5706872 1608984 5706784 1609048 5707032 +1610408 5708376 1609368 5706872 1609048 5707032 1610408 5708416 +1610408 5708376 1610440 5708328 1609368 5706872 1609048 5707032 +1610408 5708376 1610440 5708328 1609048 5707032 1610408 5708416 +1609368 5706872 1608984 5706784 1609048 5707032 1610440 5708328 +1609048 5707032 1608608 5713032 1610408 5708416 1610408 5708376 +1608912 5706760 1608632 5706656 1609048 5707032 1608984 5706784 +1608984 5706784 1608912 5706760 1609048 5707032 1609368 5706872 +1610440 5708328 1609464 5706776 1609368 5706872 1609048 5707032 +1610408 5708416 1609048 5707032 1608608 5713032 1610504 5708616 +1608632 5706656 1608336 5713136 1608608 5713032 1609048 5707032 +1608336 5713136 1608576 5713048 1608608 5713032 1609048 5707032 +1608608 5713032 1610408 5708416 1609048 5707032 1608336 5713136 +1608632 5706656 1608336 5713136 1609048 5707032 1608912 5706760 +1609368 5706872 1609152 5706768 1608984 5706784 1609048 5707032 +1609368 5706872 1609152 5706768 1609048 5707032 1610440 5708328 +1609368 5706872 1609352 5706640 1609152 5706768 1609048 5707032 +1608984 5706784 1608912 5706760 1609048 5707032 1609152 5706768 +1608632 5706656 1608280 5713176 1608336 5713136 1609048 5707032 +1608632 5706656 1608928 5707040 1609048 5707032 1608912 5706760 +1608632 5706656 1608928 5707040 1608912 5706760 1608680 5706648 +1608928 5707040 1608336 5713136 1609048 5707032 1608912 5706760 +1609048 5707032 1608984 5706784 1608912 5706760 1608928 5707040 +1608912 5706760 1608632 5706656 1608928 5707040 1608984 5706784 +1609048 5707032 1608984 5706784 1608928 5707040 1608336 5713136 +1608632 5706656 1608336 5713136 1608928 5707040 1608912 5706760 +1609048 5707032 1609152 5706768 1608984 5706784 1608928 5707040 +1609048 5707032 1608928 5707040 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1608928 5707040 +1609048 5707032 1608928 5707040 1608608 5713032 1610408 5708416 +1609048 5707032 1608928 5707040 1610408 5708416 1610408 5708376 +1608928 5707040 1608608 5713032 1610408 5708416 1610408 5708376 +1609048 5707032 1608928 5707040 1610408 5708376 1610440 5708328 +1609048 5707032 1608984 5706784 1608928 5707040 1610408 5708376 +1608928 5707040 1608632 5706656 1608336 5713136 1608608 5713032 +1608608 5713032 1610504 5708616 1610408 5708416 1608928 5707040 +1610408 5708416 1610408 5708376 1608928 5707040 1610504 5708616 +1610504 5708616 1610456 5708504 1610408 5708416 1608928 5707040 +1608608 5713032 1610552 5708656 1610504 5708616 1608928 5707040 +1608928 5707040 1608336 5713136 1608608 5713032 1610504 5708616 +1608336 5713136 1608928 5707040 1608632 5706656 1608280 5713176 +1608632 5706656 1604840 5714480 1608280 5713176 1608928 5707040 +1608336 5713136 1608608 5713032 1608928 5707040 1608280 5713176 +1608928 5707040 1608912 5706760 1608632 5706656 1608280 5713176 +1608280 5713176 1608824 5707056 1608632 5706656 1604840 5714480 +1608280 5713176 1608824 5707056 1604840 5714480 1608240 5713248 +1608632 5706656 1604784 5714488 1604840 5714480 1608824 5707056 +1604840 5714480 1608280 5713176 1608824 5707056 1604784 5714488 +1608632 5706656 1608824 5707056 1608928 5707040 1608912 5706760 +1608632 5706656 1608824 5707056 1608912 5706760 1608680 5706648 +1608928 5707040 1608984 5706784 1608912 5706760 1608824 5707056 +1608824 5707056 1608280 5713176 1608928 5707040 1608912 5706760 +1608824 5707056 1608928 5707040 1608912 5706760 1608680 5706648 +1608280 5713176 1608928 5707040 1608824 5707056 1604840 5714480 +1608824 5707056 1608680 5706648 1608632 5706656 1604784 5714488 +1608632 5706656 1604744 5714504 1604784 5714488 1608824 5707056 +1608928 5707040 1608824 5707056 1608280 5713176 1608336 5713136 +1608928 5707040 1608824 5707056 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1608824 5707056 +1608928 5707040 1608912 5706760 1608824 5707056 1608608 5713032 +1608824 5707056 1604840 5714480 1608280 5713176 1608336 5713136 +1608928 5707040 1608824 5707056 1608608 5713032 1610504 5708616 +1608824 5707056 1608336 5713136 1608608 5713032 1610504 5708616 +1608928 5707040 1608912 5706760 1608824 5707056 1610504 5708616 +1608608 5713032 1610552 5708656 1610504 5708616 1608824 5707056 +1608928 5707040 1608824 5707056 1610504 5708616 1610408 5708416 +1608928 5707040 1608824 5707056 1610408 5708416 1610408 5708376 +1608928 5707040 1608824 5707056 1610408 5708376 1609048 5707032 +1608824 5707056 1610408 5708416 1610408 5708376 1609048 5707032 +1610408 5708376 1610440 5708328 1609048 5707032 1608824 5707056 +1608928 5707040 1608912 5706760 1608824 5707056 1609048 5707032 +1610504 5708616 1610456 5708504 1610408 5708416 1608824 5707056 +1608824 5707056 1610504 5708616 1610408 5708416 1610408 5708376 +1608824 5707056 1608608 5713032 1610504 5708616 1610408 5708416 +1608824 5707056 1608280 5713176 1608336 5713136 1608608 5713032 +1608912 5706760 1608784 5706656 1608680 5706648 1608824 5707056 +1608680 5706648 1608632 5706656 1608824 5707056 1608784 5706656 +1608912 5706760 1608784 5706656 1608824 5707056 1608928 5707040 +1608824 5707056 1608720 5707128 1604784 5714488 1604840 5714480 +1608824 5707056 1608720 5707128 1604840 5714480 1608280 5713176 +1604840 5714480 1608240 5713248 1608280 5713176 1608720 5707128 +1608720 5707128 1604784 5714488 1604840 5714480 1608280 5713176 +1608824 5707056 1608720 5707128 1608280 5713176 1608336 5713136 +1608720 5707128 1604840 5714480 1608280 5713176 1608336 5713136 +1608824 5707056 1608632 5706656 1608720 5707128 1608336 5713136 +1608632 5706656 1608720 5707128 1608824 5707056 1608680 5706648 +1608720 5707128 1608632 5706656 1604784 5714488 1604840 5714480 +1604784 5714488 1608720 5707128 1608632 5706656 1604744 5714504 +1608720 5707128 1608824 5707056 1608632 5706656 1604744 5714504 +1608632 5706656 1602152 5697040 1604744 5714504 1608720 5707128 +1604784 5714488 1604840 5714480 1608720 5707128 1604744 5714504 +1608824 5707056 1608720 5707128 1608336 5713136 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1608720 5707128 +1608824 5707056 1608720 5707128 1608608 5713032 1610504 5708616 +1608720 5707128 1608280 5713176 1608336 5713136 1608608 5713032 +1608824 5707056 1608632 5706656 1608720 5707128 1610504 5708616 +1608608 5713032 1610552 5708656 1610504 5708616 1608720 5707128 +1608824 5707056 1608720 5707128 1610504 5708616 1610408 5708416 +1608720 5707128 1608608 5713032 1610504 5708616 1610408 5708416 +1608824 5707056 1608632 5706656 1608720 5707128 1610408 5708416 +1610504 5708616 1610456 5708504 1610408 5708416 1608720 5707128 +1608824 5707056 1608720 5707128 1610408 5708416 1610408 5708376 +1608824 5707056 1608720 5707128 1610408 5708376 1609048 5707032 +1610408 5708376 1610440 5708328 1609048 5707032 1608720 5707128 +1608824 5707056 1608720 5707128 1609048 5707032 1608928 5707040 +1608720 5707128 1610408 5708376 1609048 5707032 1608928 5707040 +1608824 5707056 1608632 5706656 1608720 5707128 1608928 5707040 +1608720 5707128 1610408 5708416 1610408 5708376 1609048 5707032 +1608720 5707128 1610504 5708616 1610408 5708416 1610408 5708376 +1608720 5707128 1608336 5713136 1608608 5713032 1610504 5708616 +1608280 5713176 1608696 5707176 1604840 5714480 1608240 5713248 +1608720 5707128 1608696 5707176 1608280 5713176 1608336 5713136 +1608720 5707128 1604840 5714480 1608696 5707176 1608336 5713136 +1608696 5707176 1604840 5714480 1608280 5713176 1608336 5713136 +1604840 5714480 1608696 5707176 1608720 5707128 1604784 5714488 +1608696 5707176 1608336 5713136 1608720 5707128 1604784 5714488 +1604840 5714480 1608280 5713176 1608696 5707176 1604784 5714488 +1608720 5707128 1608696 5707176 1608336 5713136 1608608 5713032 +1608720 5707128 1604784 5714488 1608696 5707176 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1608696 5707176 +1608696 5707176 1608280 5713176 1608336 5713136 1608608 5713032 +1608720 5707128 1604744 5714504 1604784 5714488 1608696 5707176 +1608720 5707128 1604744 5714504 1608696 5707176 1608608 5713032 +1604784 5714488 1604840 5714480 1608696 5707176 1604744 5714504 +1608720 5707128 1608632 5706656 1604744 5714504 1608696 5707176 +1608720 5707128 1608632 5706656 1608696 5707176 1608608 5713032 +1608720 5707128 1608824 5707056 1608632 5706656 1608696 5707176 +1604744 5714504 1604784 5714488 1608696 5707176 1608632 5706656 +1608632 5706656 1602152 5697040 1604744 5714504 1608696 5707176 +1608720 5707128 1608696 5707176 1608608 5713032 1610504 5708616 +1608720 5707128 1608632 5706656 1608696 5707176 1610504 5708616 +1608720 5707128 1608696 5707176 1610504 5708616 1610408 5708416 +1608720 5707128 1608632 5706656 1608696 5707176 1610408 5708416 +1608696 5707176 1608336 5713136 1608608 5713032 1610504 5708616 +1610504 5708616 1610456 5708504 1610408 5708416 1608696 5707176 +1608608 5713032 1610552 5708656 1610504 5708616 1608696 5707176 +1608720 5707128 1608696 5707176 1610408 5708416 1610408 5708376 +1608720 5707128 1608632 5706656 1608696 5707176 1610408 5708376 +1608696 5707176 1610504 5708616 1610408 5708416 1610408 5708376 +1608720 5707128 1608696 5707176 1610408 5708376 1609048 5707032 +1608720 5707128 1608632 5706656 1608696 5707176 1609048 5707032 +1608720 5707128 1608696 5707176 1609048 5707032 1608928 5707040 +1608720 5707128 1608632 5706656 1608696 5707176 1608928 5707040 +1610408 5708376 1610440 5708328 1609048 5707032 1608696 5707176 +1608720 5707128 1608696 5707176 1608928 5707040 1608824 5707056 +1608720 5707128 1608632 5706656 1608696 5707176 1608824 5707056 +1608696 5707176 1609048 5707032 1608928 5707040 1608824 5707056 +1608696 5707176 1610408 5708376 1609048 5707032 1608928 5707040 +1608696 5707176 1610408 5708416 1610408 5708376 1609048 5707032 +1608696 5707176 1608608 5713032 1610504 5708616 1610408 5708416 +1608696 5707176 1608624 5707232 1604744 5714504 1604784 5714488 +1608696 5707176 1608632 5706656 1608624 5707232 1604784 5714488 +1608624 5707232 1608632 5706656 1604744 5714504 1604784 5714488 +1608696 5707176 1608624 5707232 1604784 5714488 1604840 5714480 +1608624 5707232 1604744 5714504 1604784 5714488 1604840 5714480 +1608696 5707176 1608624 5707232 1604840 5714480 1608280 5713176 +1608696 5707176 1608624 5707232 1608280 5713176 1608336 5713136 +1608624 5707232 1604840 5714480 1608280 5713176 1608336 5713136 +1608696 5707176 1608632 5706656 1608624 5707232 1608336 5713136 +1604840 5714480 1608240 5713248 1608280 5713176 1608624 5707232 +1608696 5707176 1608624 5707232 1608336 5713136 1608608 5713032 +1608624 5707232 1608280 5713176 1608336 5713136 1608608 5713032 +1608696 5707176 1608632 5706656 1608624 5707232 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1608624 5707232 +1608624 5707232 1604784 5714488 1604840 5714480 1608280 5713176 +1604744 5714504 1608624 5707232 1608632 5706656 1602152 5697040 +1608696 5707176 1608624 5707232 1608608 5713032 1610504 5708616 +1608696 5707176 1608632 5706656 1608624 5707232 1610504 5708616 +1608624 5707232 1608336 5713136 1608608 5713032 1610504 5708616 +1608608 5713032 1610552 5708656 1610504 5708616 1608624 5707232 +1608632 5706656 1608624 5707232 1608696 5707176 1608720 5707128 +1608632 5706656 1608624 5707232 1608720 5707128 1608824 5707056 +1608624 5707232 1610504 5708616 1608696 5707176 1608720 5707128 +1608632 5706656 1604744 5714504 1608624 5707232 1608720 5707128 +1608696 5707176 1608624 5707232 1610504 5708616 1610408 5708416 +1608696 5707176 1608720 5707128 1608624 5707232 1610408 5708416 +1608696 5707176 1608624 5707232 1610408 5708416 1610408 5708376 +1608696 5707176 1608720 5707128 1608624 5707232 1610408 5708376 +1608624 5707232 1608608 5713032 1610504 5708616 1610408 5708416 +1610504 5708616 1610456 5708504 1610408 5708416 1608624 5707232 +1608696 5707176 1608624 5707232 1610408 5708376 1609048 5707032 +1608696 5707176 1608720 5707128 1608624 5707232 1609048 5707032 +1610408 5708376 1610440 5708328 1609048 5707032 1608624 5707232 +1608624 5707232 1610408 5708416 1610408 5708376 1609048 5707032 +1608696 5707176 1608624 5707232 1609048 5707032 1608928 5707040 +1608624 5707232 1610504 5708616 1610408 5708416 1610408 5708376 +1608624 5707232 1608576 5707232 1604744 5714504 1604784 5714488 +1608624 5707232 1608576 5707232 1604784 5714488 1604840 5714480 +1608576 5707232 1604744 5714504 1604784 5714488 1604840 5714480 +1608624 5707232 1608632 5706656 1608576 5707232 1604840 5714480 +1608632 5706656 1608576 5707232 1608624 5707232 1608720 5707128 +1608632 5706656 1608576 5707232 1608720 5707128 1608824 5707056 +1608576 5707232 1604840 5714480 1608624 5707232 1608720 5707128 +1608576 5707232 1608632 5706656 1604744 5714504 1604784 5714488 +1608632 5706656 1604744 5714504 1608576 5707232 1608720 5707128 +1608624 5707232 1608576 5707232 1604840 5714480 1608280 5713176 +1608576 5707232 1604784 5714488 1604840 5714480 1608280 5713176 +1608624 5707232 1608576 5707232 1608280 5713176 1608336 5713136 +1608624 5707232 1608576 5707232 1608336 5713136 1608608 5713032 +1608576 5707232 1608280 5713176 1608336 5713136 1608608 5713032 +1608624 5707232 1608720 5707128 1608576 5707232 1608608 5713032 +1608336 5713136 1608576 5713048 1608608 5713032 1608576 5707232 +1604840 5714480 1608240 5713248 1608280 5713176 1608576 5707232 +1608624 5707232 1608576 5707232 1608608 5713032 1610504 5708616 +1608576 5707232 1608336 5713136 1608608 5713032 1610504 5708616 +1608624 5707232 1608720 5707128 1608576 5707232 1610504 5708616 +1608576 5707232 1604840 5714480 1608280 5713176 1608336 5713136 +1604744 5714504 1608576 5707232 1608632 5706656 1602152 5697040 +1608632 5706656 1602352 5697112 1602152 5697040 1608576 5707232 +1604744 5714504 1608576 5707232 1602152 5697040 1602072 5696992 +1602352 5697112 1602200 5697056 1602152 5697040 1608576 5707232 +1604744 5714504 1604784 5714488 1608576 5707232 1602152 5697040 +1608576 5707232 1608720 5707128 1608632 5706656 1602352 5697112 +1602152 5697040 1604744 5714504 1608576 5707232 1602352 5697112 +1608624 5707232 1608576 5707232 1610504 5708616 1610408 5708416 +1608624 5707232 1608720 5707128 1608576 5707232 1610408 5708416 +1608576 5707232 1608608 5713032 1610504 5708616 1610408 5708416 +1610504 5708616 1610456 5708504 1610408 5708416 1608576 5707232 +1608632 5706656 1602424 5697104 1602352 5697112 1608576 5707232 +1608608 5713032 1610552 5708656 1610504 5708616 1608576 5707232 +1608624 5707232 1608696 5707176 1608720 5707128 1608576 5707232 +1608624 5707232 1608696 5707176 1608576 5707232 1610408 5708416 +1608720 5707128 1608632 5706656 1608576 5707232 1608696 5707176 +1608624 5707232 1608576 5707232 1610408 5708416 1610408 5708376 +1608576 5707232 1608552 5707104 1602352 5697112 1602152 5697040 +1602352 5697112 1602200 5697056 1602152 5697040 1608552 5707104 +1608576 5707232 1608632 5706656 1608552 5707104 1602152 5697040 +1608632 5706656 1608552 5707104 1608576 5707232 1608720 5707128 +1608632 5706656 1608552 5707104 1608720 5707128 1608824 5707056 +1608576 5707232 1608696 5707176 1608720 5707128 1608552 5707104 +1608552 5707104 1602152 5697040 1608576 5707232 1608696 5707176 +1608552 5707104 1608696 5707176 1608720 5707128 1608824 5707056 +1608552 5707104 1608632 5706656 1602352 5697112 1602152 5697040 +1608632 5706656 1602352 5697112 1608552 5707104 1608824 5707056 +1608576 5707232 1608552 5707104 1602152 5697040 1604744 5714504 +1608552 5707104 1602352 5697112 1602152 5697040 1604744 5714504 +1602152 5697040 1602072 5696992 1604744 5714504 1608552 5707104 +1608576 5707232 1608552 5707104 1604744 5714504 1604784 5714488 +1608576 5707232 1608696 5707176 1608552 5707104 1604744 5714504 +1608632 5706656 1608552 5707104 1608824 5707056 1608680 5706648 +1602352 5697112 1608552 5707104 1608632 5706656 1602424 5697104 +1608576 5707232 1608624 5707232 1608696 5707176 1608552 5707104 +1608696 5707176 1608720 5707128 1608552 5707104 1608624 5707232 +1608576 5707232 1608624 5707232 1608552 5707104 1604744 5714504 +1608552 5707104 1608568 5706784 1602352 5697112 1602152 5697040 +1608552 5707104 1608568 5706784 1602152 5697040 1604744 5714504 +1602352 5697112 1602200 5697056 1602152 5697040 1608568 5706784 +1608552 5707104 1608632 5706656 1608568 5706784 1602152 5697040 +1608632 5706656 1608568 5706784 1608552 5707104 1608824 5707056 +1608552 5707104 1608720 5707128 1608824 5707056 1608568 5706784 +1608552 5707104 1608696 5707176 1608720 5707128 1608568 5706784 +1608568 5706784 1602152 5697040 1608552 5707104 1608720 5707128 +1608824 5707056 1608632 5706656 1608568 5706784 1608720 5707128 +1608568 5706784 1608632 5706656 1602352 5697112 1602152 5697040 +1608632 5706656 1602352 5697112 1608568 5706784 1608824 5707056 +1608632 5706656 1608568 5706784 1608824 5707056 1608680 5706648 +1608568 5706784 1608720 5707128 1608824 5707056 1608680 5706648 +1608632 5706656 1602352 5697112 1608568 5706784 1608680 5706648 +1608824 5707056 1608784 5706656 1608680 5706648 1608568 5706784 +1608824 5707056 1608784 5706656 1608568 5706784 1608720 5707128 +1608680 5706648 1608632 5706656 1608568 5706784 1608784 5706656 +1602352 5697112 1608568 5706784 1608632 5706656 1602424 5697104 +1608824 5707056 1608912 5706760 1608784 5706656 1608568 5706784 +1608824 5707056 1608912 5706760 1608568 5706784 1608720 5707128 +1608784 5706656 1608680 5706648 1608568 5706784 1608912 5706760 +1608824 5707056 1608928 5707040 1608912 5706760 1608568 5706784 +1608568 5706784 1608592 5706712 1602352 5697112 1602152 5697040 +1608632 5706656 1608592 5706712 1608568 5706784 1608680 5706648 +1608592 5706712 1602352 5697112 1608568 5706784 1608680 5706648 +1608632 5706656 1602352 5697112 1608592 5706712 1608680 5706648 +1608568 5706784 1608784 5706656 1608680 5706648 1608592 5706712 +1602352 5697112 1608592 5706712 1608632 5706656 1602424 5697104 +1602352 5697112 1608568 5706784 1608592 5706712 1602424 5697104 +1608592 5706712 1608680 5706648 1608632 5706656 1602424 5697104 +1608632 5706656 1602464 5697088 1602424 5697104 1608592 5706712 +1602152 5697040 1604104 5700768 1608552 5707104 1608568 5706784 +1604744 5714504 1604104 5700768 1602152 5697040 1602072 5696992 +1602152 5697040 1604104 5700768 1608568 5706784 1602352 5697112 +1604104 5700768 1608552 5707104 1608568 5706784 1602352 5697112 +1602152 5697040 1604104 5700768 1602352 5697112 1602200 5697056 +1602352 5697112 1602312 5697088 1602200 5697056 1604104 5700768 +1604104 5700768 1608568 5706784 1602352 5697112 1602200 5697056 +1608568 5706784 1608592 5706712 1602352 5697112 1604104 5700768 +1608568 5706784 1608592 5706712 1604104 5700768 1608552 5707104 +1602352 5697112 1602200 5697056 1604104 5700768 1608592 5706712 +1608592 5706712 1602424 5697104 1602352 5697112 1604104 5700768 +1602352 5697112 1602200 5697056 1604104 5700768 1602424 5697104 +1608592 5706712 1602424 5697104 1604104 5700768 1608568 5706784 +1604104 5700768 1604744 5714504 1608552 5707104 1608568 5706784 +1604744 5714504 1608552 5707104 1604104 5700768 1602072 5696992 +1602152 5697040 1602072 5696992 1604104 5700768 1602200 5697056 +1608552 5707104 1604104 5700768 1604744 5714504 1608576 5707232 +1608592 5706712 1608632 5706656 1602424 5697104 1604104 5700768 +1608592 5706712 1608632 5706656 1604104 5700768 1608568 5706784 +1602424 5697104 1602352 5697112 1604104 5700768 1608632 5706656 +1608632 5706656 1602464 5697088 1602424 5697104 1604104 5700768 +1602424 5697104 1602352 5697112 1604104 5700768 1602464 5697088 +1608632 5706656 1602504 5697056 1602464 5697088 1604104 5700768 +1608632 5706656 1608680 5706648 1602504 5697056 1604104 5700768 +1602464 5697088 1602424 5697104 1604104 5700768 1602504 5697056 +1608680 5706648 1609424 5706616 1602504 5697056 1604104 5700768 +1608680 5706648 1609424 5706616 1604104 5700768 1608632 5706656 +1602504 5697056 1602464 5697088 1604104 5700768 1609424 5706616 +1608632 5706656 1608680 5706648 1604104 5700768 1608592 5706712 +1608680 5706648 1608784 5706656 1609424 5706616 1604104 5700768 +1609424 5706616 1602504 5696992 1602504 5697056 1604104 5700768 +1609424 5706616 1602504 5696992 1604104 5700768 1608680 5706648 +1609424 5706616 1602224 5696056 1602504 5696992 1604104 5700768 +1602504 5697056 1602464 5697088 1604104 5700768 1602504 5696992 +1604744 5714504 1604104 5700768 1602072 5696992 1601864 5696864 +1604104 5700768 1602152 5697040 1602072 5696992 1601864 5696864 +1602072 5696992 1602008 5696944 1601864 5696864 1604104 5700768 +1604744 5714504 1604104 5700768 1601864 5696864 1604704 5714560 +1604744 5714504 1608552 5707104 1604104 5700768 1604704 5714560 +1601864 5696864 1601808 5696808 1604704 5714560 1604104 5700768 +1604704 5714560 1604744 5714504 1604104 5700768 1601808 5696808 +1601808 5696808 1604696 5714600 1604704 5714560 1604104 5700768 +1604104 5700768 1602072 5696992 1601864 5696864 1601808 5696808 +1602152 5697040 1602120 5697008 1602072 5696992 1604104 5700768 +1604104 5700768 1604152 5700872 1608552 5707104 1608568 5706784 +1604104 5700768 1604152 5700872 1608568 5706784 1608592 5706712 +1604104 5700768 1604152 5700872 1608592 5706712 1608632 5706656 +1604152 5700872 1608568 5706784 1608592 5706712 1608632 5706656 +1604152 5700872 1608552 5707104 1608568 5706784 1608592 5706712 +1604744 5714504 1604152 5700872 1604104 5700768 1604704 5714560 +1604104 5700768 1601808 5696808 1604704 5714560 1604152 5700872 +1604104 5700768 1604704 5714560 1604152 5700872 1608632 5706656 +1604152 5700872 1604744 5714504 1608552 5707104 1608568 5706784 +1604744 5714504 1608552 5707104 1604152 5700872 1604704 5714560 +1608552 5707104 1604152 5700872 1604744 5714504 1608576 5707232 +1604104 5700768 1604152 5700872 1608632 5706656 1608680 5706648 +1604152 5700872 1608592 5706712 1608632 5706656 1608680 5706648 +1604104 5700768 1604704 5714560 1604152 5700872 1608680 5706648 +1604104 5700768 1604152 5700872 1608680 5706648 1609424 5706616 +1604104 5700768 1604704 5714560 1604152 5700872 1609424 5706616 +1604104 5700768 1604152 5700872 1609424 5706616 1602504 5696992 +1604152 5700872 1608632 5706656 1608680 5706648 1609424 5706616 +1608680 5706648 1608784 5706656 1609424 5706616 1604152 5700872 +1604152 5700872 1604160 5700992 1608552 5707104 1608568 5706784 +1604152 5700872 1604160 5700992 1608568 5706784 1608592 5706712 +1604152 5700872 1604160 5700992 1608592 5706712 1608632 5706656 +1604152 5700872 1604160 5700992 1608632 5706656 1608680 5706648 +1604160 5700992 1608592 5706712 1608632 5706656 1608680 5706648 +1604160 5700992 1608568 5706784 1608592 5706712 1608632 5706656 +1604160 5700992 1608552 5707104 1608568 5706784 1608592 5706712 +1604152 5700872 1604744 5714504 1604160 5700992 1608680 5706648 +1604744 5714504 1604160 5700992 1604152 5700872 1604704 5714560 +1604152 5700872 1604104 5700768 1604704 5714560 1604160 5700992 +1604104 5700768 1601808 5696808 1604704 5714560 1604160 5700992 +1601808 5696808 1604696 5714600 1604704 5714560 1604160 5700992 +1604104 5700768 1601808 5696808 1604160 5700992 1604152 5700872 +1604744 5714504 1608552 5707104 1604160 5700992 1604704 5714560 +1604160 5700992 1608680 5706648 1604152 5700872 1604104 5700768 +1604704 5714560 1604744 5714504 1604160 5700992 1601808 5696808 +1604160 5700992 1604744 5714504 1608552 5707104 1608568 5706784 +1608552 5707104 1604160 5700992 1604744 5714504 1608576 5707232 +1604104 5700768 1601864 5696864 1601808 5696808 1604160 5700992 +1601808 5696808 1604704 5714560 1604160 5700992 1601864 5696864 +1604104 5700768 1601864 5696864 1604160 5700992 1604152 5700872 +1604152 5700872 1604160 5700992 1608680 5706648 1609424 5706616 +1604160 5700992 1608632 5706656 1608680 5706648 1609424 5706616 +1604152 5700872 1604104 5700768 1604160 5700992 1609424 5706616 +1604152 5700872 1604160 5700992 1609424 5706616 1604104 5700768 +1608680 5706648 1608784 5706656 1609424 5706616 1604160 5700992 +1604104 5700768 1602072 5696992 1601864 5696864 1604160 5700992 +1601808 5696808 1604152 5701064 1604160 5700992 1601864 5696864 +1604704 5714560 1604152 5701064 1601808 5696808 1604696 5714600 +1604152 5701064 1604704 5714560 1604160 5700992 1601864 5696864 +1604160 5700992 1604152 5701064 1604704 5714560 1604744 5714504 +1604160 5700992 1601864 5696864 1604152 5701064 1604744 5714504 +1604160 5700992 1604152 5701064 1604744 5714504 1608552 5707104 +1604160 5700992 1601864 5696864 1604152 5701064 1608552 5707104 +1604152 5701064 1601808 5696808 1604704 5714560 1604744 5714504 +1604152 5701064 1604704 5714560 1604744 5714504 1608552 5707104 +1604160 5700992 1604152 5701064 1608552 5707104 1608568 5706784 +1604160 5700992 1601864 5696864 1604152 5701064 1608568 5706784 +1604152 5701064 1604744 5714504 1608552 5707104 1608568 5706784 +1604160 5700992 1604152 5701064 1608568 5706784 1608592 5706712 +1604160 5700992 1604152 5701064 1608592 5706712 1608632 5706656 +1604160 5700992 1604152 5701064 1608632 5706656 1608680 5706648 +1604160 5700992 1604152 5701064 1608680 5706648 1609424 5706616 +1604152 5701064 1608632 5706656 1608680 5706648 1609424 5706616 +1604152 5701064 1608592 5706712 1608632 5706656 1608680 5706648 +1604160 5700992 1601864 5696864 1604152 5701064 1609424 5706616 +1604152 5701064 1608568 5706784 1608592 5706712 1608632 5706656 +1604152 5701064 1608552 5707104 1608568 5706784 1608592 5706712 +1601808 5696808 1604704 5714560 1604152 5701064 1601864 5696864 +1604744 5714504 1608576 5707232 1608552 5707104 1604152 5701064 +1604160 5700992 1604104 5700768 1601864 5696864 1604152 5701064 +1601864 5696864 1601808 5696808 1604152 5701064 1604104 5700768 +1604160 5700992 1604152 5700872 1604104 5700768 1604152 5701064 +1604160 5700992 1604104 5700768 1604152 5701064 1609424 5706616 +1604160 5700992 1604152 5701064 1609424 5706616 1604152 5700872 +1608680 5706648 1608784 5706656 1609424 5706616 1604152 5701064 +1604104 5700768 1602072 5696992 1601864 5696864 1604152 5701064 +1604704 5714560 1604128 5701096 1601808 5696808 1604696 5714600 +1604152 5701064 1604128 5701096 1604704 5714560 1604744 5714504 +1604152 5701064 1604128 5701096 1604744 5714504 1608552 5707104 +1604152 5701064 1604128 5701096 1608552 5707104 1608568 5706784 +1604128 5701096 1604704 5714560 1604744 5714504 1608552 5707104 +1604128 5701096 1604744 5714504 1608552 5707104 1608568 5706784 +1604152 5701064 1604128 5701096 1608568 5706784 1608592 5706712 +1604128 5701096 1608552 5707104 1608568 5706784 1608592 5706712 +1604152 5701064 1604128 5701096 1608592 5706712 1608632 5706656 +1604152 5701064 1604128 5701096 1608632 5706656 1608680 5706648 +1604128 5701096 1608568 5706784 1608592 5706712 1608632 5706656 +1601808 5696808 1604128 5701096 1604152 5701064 1601864 5696864 +1604152 5701064 1604104 5700768 1601864 5696864 1604128 5701096 +1601864 5696864 1601808 5696808 1604128 5701096 1604104 5700768 +1604152 5701064 1604104 5700768 1604128 5701096 1608632 5706656 +1604128 5701096 1601808 5696808 1604704 5714560 1604744 5714504 +1601808 5696808 1604704 5714560 1604128 5701096 1601864 5696864 +1604744 5714504 1608576 5707232 1608552 5707104 1604128 5701096 +1604152 5701064 1604160 5700992 1604104 5700768 1604128 5701096 +1604104 5700768 1601864 5696864 1604128 5701096 1604160 5700992 +1604160 5700992 1604152 5700872 1604104 5700768 1604128 5701096 +1604104 5700768 1601864 5696864 1604128 5701096 1604152 5700872 +1604152 5701064 1604160 5700992 1604128 5701096 1608632 5706656 +1604160 5700992 1604152 5700872 1604128 5701096 1604152 5701064 +1604104 5700768 1602072 5696992 1601864 5696864 1604128 5701096 +1604704 5714560 1604080 5701120 1601808 5696808 1604696 5714600 +1604128 5701096 1604080 5701120 1604704 5714560 1604744 5714504 +1604128 5701096 1604080 5701120 1604744 5714504 1608552 5707104 +1604128 5701096 1604080 5701120 1608552 5707104 1608568 5706784 +1604128 5701096 1604080 5701120 1608568 5706784 1608592 5706712 +1604080 5701120 1604744 5714504 1608552 5707104 1608568 5706784 +1604080 5701120 1608552 5707104 1608568 5706784 1608592 5706712 +1604128 5701096 1604080 5701120 1608592 5706712 1608632 5706656 +1604080 5701120 1608568 5706784 1608592 5706712 1608632 5706656 +1604128 5701096 1604080 5701120 1608632 5706656 1604152 5701064 +1604080 5701120 1604704 5714560 1604744 5714504 1608552 5707104 +1604128 5701096 1601808 5696808 1604080 5701120 1608632 5706656 +1601808 5696808 1604080 5701120 1604128 5701096 1601864 5696864 +1604128 5701096 1604104 5700768 1601864 5696864 1604080 5701120 +1604128 5701096 1604152 5700872 1604104 5700768 1604080 5701120 +1604128 5701096 1604160 5700992 1604152 5700872 1604080 5701120 +1604152 5700872 1604104 5700768 1604080 5701120 1604160 5700992 +1604104 5700768 1601864 5696864 1604080 5701120 1604152 5700872 +1604080 5701120 1608632 5706656 1604128 5701096 1604160 5700992 +1601864 5696864 1601808 5696808 1604080 5701120 1604104 5700768 +1604080 5701120 1601808 5696808 1604704 5714560 1604744 5714504 +1601808 5696808 1604704 5714560 1604080 5701120 1601864 5696864 +1604744 5714504 1608576 5707232 1608552 5707104 1604080 5701120 +1604128 5701096 1604152 5701064 1604160 5700992 1604080 5701120 +1604160 5700992 1604152 5700872 1604080 5701120 1604152 5701064 +1604128 5701096 1604152 5701064 1604080 5701120 1608632 5706656 +1604104 5700768 1602072 5696992 1601864 5696864 1604080 5701120 +1604104 5700768 1602152 5697040 1602072 5696992 1604080 5701120 +1602072 5696992 1602008 5696944 1601864 5696864 1604080 5701120 +1604104 5700768 1602072 5696992 1604080 5701120 1604152 5700872 +1601864 5696864 1601808 5696808 1604080 5701120 1602072 5696992 +1604704 5714560 1603952 5701112 1601808 5696808 1604696 5714600 +1604080 5701120 1603952 5701112 1604704 5714560 1604744 5714504 +1604080 5701120 1603952 5701112 1604744 5714504 1608552 5707104 +1604080 5701120 1603952 5701112 1608552 5707104 1608568 5706784 +1604080 5701120 1603952 5701112 1608568 5706784 1608592 5706712 +1603952 5701112 1604744 5714504 1608552 5707104 1608568 5706784 +1603952 5701112 1604704 5714560 1604744 5714504 1608552 5707104 +1604080 5701120 1601808 5696808 1603952 5701112 1608568 5706784 +1601808 5696808 1603952 5701112 1604080 5701120 1601864 5696864 +1604080 5701120 1602072 5696992 1601864 5696864 1603952 5701112 +1602072 5696992 1602008 5696944 1601864 5696864 1603952 5701112 +1603952 5701112 1608568 5706784 1604080 5701120 1602072 5696992 +1601864 5696864 1601808 5696808 1603952 5701112 1602072 5696992 +1603952 5701112 1601808 5696808 1604704 5714560 1604744 5714504 +1601808 5696808 1604704 5714560 1603952 5701112 1601864 5696864 +1604744 5714504 1608576 5707232 1608552 5707104 1603952 5701112 +1604080 5701120 1604104 5700768 1602072 5696992 1603952 5701112 +1604104 5700768 1602152 5697040 1602072 5696992 1603952 5701112 +1604104 5700768 1602200 5697056 1602152 5697040 1603952 5701112 +1602152 5697040 1602072 5696992 1603952 5701112 1602200 5697056 +1604104 5700768 1602352 5697112 1602200 5697056 1603952 5701112 +1602352 5697112 1602312 5697088 1602200 5697056 1603952 5701112 +1604104 5700768 1602424 5697104 1602352 5697112 1603952 5701112 +1602200 5697056 1602152 5697040 1603952 5701112 1602352 5697112 +1604080 5701120 1604152 5700872 1604104 5700768 1603952 5701112 +1604080 5701120 1604160 5700992 1604152 5700872 1603952 5701112 +1604080 5701120 1604152 5701064 1604160 5700992 1603952 5701112 +1604152 5700872 1604104 5700768 1603952 5701112 1604160 5700992 +1602072 5696992 1601864 5696864 1603952 5701112 1602152 5697040 +1604080 5701120 1604160 5700992 1603952 5701112 1608568 5706784 +1604104 5700768 1602352 5697112 1603952 5701112 1604152 5700872 +1602152 5697040 1602120 5697008 1602072 5696992 1603952 5701112 +1604704 5714560 1603864 5701080 1601808 5696808 1604696 5714600 +1603952 5701112 1603864 5701080 1604704 5714560 1604744 5714504 +1603952 5701112 1603864 5701080 1604744 5714504 1608552 5707104 +1603952 5701112 1603864 5701080 1608552 5707104 1608568 5706784 +1603864 5701080 1604704 5714560 1604744 5714504 1608552 5707104 +1603952 5701112 1601808 5696808 1603864 5701080 1608552 5707104 +1601808 5696808 1603864 5701080 1603952 5701112 1601864 5696864 +1603952 5701112 1602072 5696992 1601864 5696864 1603864 5701080 +1602072 5696992 1602008 5696944 1601864 5696864 1603864 5701080 +1603952 5701112 1602152 5697040 1602072 5696992 1603864 5701080 +1603952 5701112 1602200 5697056 1602152 5697040 1603864 5701080 +1603952 5701112 1602352 5697112 1602200 5697056 1603864 5701080 +1602352 5697112 1602312 5697088 1602200 5697056 1603864 5701080 +1602200 5697056 1602152 5697040 1603864 5701080 1602352 5697112 +1603952 5701112 1604104 5700768 1602352 5697112 1603864 5701080 +1604104 5700768 1602424 5697104 1602352 5697112 1603864 5701080 +1602352 5697112 1602200 5697056 1603864 5701080 1604104 5700768 +1602152 5697040 1602072 5696992 1603864 5701080 1602200 5697056 +1602072 5696992 1601864 5696864 1603864 5701080 1602152 5697040 +1603864 5701080 1608552 5707104 1603952 5701112 1604104 5700768 +1601864 5696864 1601808 5696808 1603864 5701080 1602072 5696992 +1603864 5701080 1601808 5696808 1604704 5714560 1604744 5714504 +1601808 5696808 1604704 5714560 1603864 5701080 1601864 5696864 +1604744 5714504 1608576 5707232 1608552 5707104 1603864 5701080 +1603952 5701112 1604152 5700872 1604104 5700768 1603864 5701080 +1604104 5700768 1602352 5697112 1603864 5701080 1604152 5700872 +1603952 5701112 1604160 5700992 1604152 5700872 1603864 5701080 +1603952 5701112 1604152 5700872 1603864 5701080 1608552 5707104 +1602152 5697040 1602120 5697008 1602072 5696992 1603864 5701080 +1604704 5714560 1603696 5700928 1601808 5696808 1604696 5714600 +1603864 5701080 1603696 5700928 1604704 5714560 1604744 5714504 +1603864 5701080 1603696 5700928 1604744 5714504 1608552 5707104 +1603864 5701080 1601808 5696808 1603696 5700928 1604744 5714504 +1601808 5696808 1603696 5700928 1603864 5701080 1601864 5696864 +1603864 5701080 1602072 5696992 1601864 5696864 1603696 5700928 +1602072 5696992 1602008 5696944 1601864 5696864 1603696 5700928 +1603864 5701080 1602152 5697040 1602072 5696992 1603696 5700928 +1603864 5701080 1602200 5697056 1602152 5697040 1603696 5700928 +1603864 5701080 1602352 5697112 1602200 5697056 1603696 5700928 +1602352 5697112 1602312 5697088 1602200 5697056 1603696 5700928 +1603864 5701080 1604104 5700768 1602352 5697112 1603696 5700928 +1602352 5697112 1602200 5697056 1603696 5700928 1604104 5700768 +1603864 5701080 1604152 5700872 1604104 5700768 1603696 5700928 +1604104 5700768 1602424 5697104 1602352 5697112 1603696 5700928 +1602352 5697112 1602200 5697056 1603696 5700928 1602424 5697104 +1604104 5700768 1602464 5697088 1602424 5697104 1603696 5700928 +1604104 5700768 1602424 5697104 1603696 5700928 1603864 5701080 +1602200 5697056 1602152 5697040 1603696 5700928 1602352 5697112 +1602152 5697040 1602072 5696992 1603696 5700928 1602200 5697056 +1602072 5696992 1601864 5696864 1603696 5700928 1602152 5697040 +1603696 5700928 1604744 5714504 1603864 5701080 1604104 5700768 +1601864 5696864 1601808 5696808 1603696 5700928 1602072 5696992 +1601808 5696808 1601784 5696736 1604696 5714600 1603696 5700928 +1604704 5714560 1604744 5714504 1603696 5700928 1604696 5714600 +1603696 5700928 1601864 5696864 1601808 5696808 1604696 5714600 +1602152 5697040 1602120 5697008 1602072 5696992 1603696 5700928 +1603696 5700928 1603664 5700888 1604696 5714600 1604704 5714560 +1604696 5714600 1603664 5700888 1601808 5696808 1601784 5696736 +1603696 5700928 1603664 5700888 1604704 5714560 1604744 5714504 +1603696 5700928 1601808 5696808 1603664 5700888 1604704 5714560 +1601808 5696808 1603664 5700888 1603696 5700928 1601864 5696864 +1603696 5700928 1602072 5696992 1601864 5696864 1603664 5700888 +1602072 5696992 1602008 5696944 1601864 5696864 1603664 5700888 +1603696 5700928 1602152 5697040 1602072 5696992 1603664 5700888 +1603696 5700928 1602200 5697056 1602152 5697040 1603664 5700888 +1603696 5700928 1602352 5697112 1602200 5697056 1603664 5700888 +1602352 5697112 1602312 5697088 1602200 5697056 1603664 5700888 +1603696 5700928 1602424 5697104 1602352 5697112 1603664 5700888 +1603696 5700928 1604104 5700768 1602424 5697104 1603664 5700888 +1602424 5697104 1602352 5697112 1603664 5700888 1604104 5700768 +1604104 5700768 1602464 5697088 1602424 5697104 1603664 5700888 +1602424 5697104 1602352 5697112 1603664 5700888 1602464 5697088 +1604104 5700768 1602464 5697088 1603664 5700888 1603696 5700928 +1603696 5700928 1603864 5701080 1604104 5700768 1603664 5700888 +1602352 5697112 1602200 5697056 1603664 5700888 1602424 5697104 +1602200 5697056 1602152 5697040 1603664 5700888 1602352 5697112 +1602152 5697040 1602072 5696992 1603664 5700888 1602200 5697056 +1602072 5696992 1601864 5696864 1603664 5700888 1602152 5697040 +1604104 5700768 1602504 5697056 1602464 5697088 1603664 5700888 +1603664 5700888 1604704 5714560 1603696 5700928 1604104 5700768 +1601864 5696864 1601808 5696808 1603664 5700888 1602072 5696992 +1603664 5700888 1601808 5696808 1604696 5714600 1604704 5714560 +1601808 5696808 1604696 5714600 1603664 5700888 1601864 5696864 +1602152 5697040 1602120 5697008 1602072 5696992 1603664 5700888 +1604696 5714600 1603464 5700736 1601808 5696808 1601784 5696736 +1603664 5700888 1603464 5700736 1604696 5714600 1604704 5714560 +1603664 5700888 1603464 5700736 1604704 5714560 1603696 5700928 +1604704 5714560 1604744 5714504 1603696 5700928 1603464 5700736 +1603696 5700928 1603664 5700888 1603464 5700736 1604744 5714504 +1604744 5714504 1603864 5701080 1603696 5700928 1603464 5700736 +1603696 5700928 1603664 5700888 1603464 5700736 1603864 5701080 +1604744 5714504 1608552 5707104 1603864 5701080 1603464 5700736 +1604744 5714504 1603864 5701080 1603464 5700736 1604704 5714560 +1603464 5700736 1604696 5714600 1604704 5714560 1604744 5714504 +1603664 5700888 1601808 5696808 1603464 5700736 1603696 5700928 +1601808 5696808 1603464 5700736 1603664 5700888 1601864 5696864 +1603664 5700888 1602072 5696992 1601864 5696864 1603464 5700736 +1602072 5696992 1602008 5696944 1601864 5696864 1603464 5700736 +1603664 5700888 1602152 5697040 1602072 5696992 1603464 5700736 +1603664 5700888 1602200 5697056 1602152 5697040 1603464 5700736 +1603664 5700888 1602352 5697112 1602200 5697056 1603464 5700736 +1602352 5697112 1602312 5697088 1602200 5697056 1603464 5700736 +1603664 5700888 1602424 5697104 1602352 5697112 1603464 5700736 +1603664 5700888 1602464 5697088 1602424 5697104 1603464 5700736 +1603664 5700888 1604104 5700768 1602464 5697088 1603464 5700736 +1602464 5697088 1602424 5697104 1603464 5700736 1604104 5700768 +1603664 5700888 1603696 5700928 1604104 5700768 1603464 5700736 +1602424 5697104 1602352 5697112 1603464 5700736 1602464 5697088 +1602352 5697112 1602200 5697056 1603464 5700736 1602424 5697104 +1602200 5697056 1602152 5697040 1603464 5700736 1602352 5697112 +1602152 5697040 1602072 5696992 1603464 5700736 1602200 5697056 +1604104 5700768 1602504 5697056 1602464 5697088 1603464 5700736 +1602464 5697088 1602424 5697104 1603464 5700736 1602504 5697056 +1604104 5700768 1602504 5697056 1603464 5700736 1603664 5700888 +1602072 5696992 1601864 5696864 1603464 5700736 1602152 5697040 +1603464 5700736 1603696 5700928 1603664 5700888 1604104 5700768 +1601864 5696864 1601808 5696808 1603464 5700736 1602072 5696992 +1603464 5700736 1601808 5696808 1604696 5714600 1604704 5714560 +1601808 5696808 1604696 5714600 1603464 5700736 1601864 5696864 +1604104 5700768 1602504 5696992 1602504 5697056 1603464 5700736 +1602152 5697040 1602120 5697008 1602072 5696992 1603464 5700736 +1604696 5714600 1603416 5700672 1601808 5696808 1601784 5696736 +1603464 5700736 1603416 5700672 1604696 5714600 1604704 5714560 +1603464 5700736 1603416 5700672 1604704 5714560 1604744 5714504 +1603464 5700736 1601808 5696808 1603416 5700672 1604704 5714560 +1601808 5696808 1603416 5700672 1603464 5700736 1601864 5696864 +1601808 5696808 1604696 5714600 1603416 5700672 1601864 5696864 +1603464 5700736 1602072 5696992 1601864 5696864 1603416 5700672 +1602072 5696992 1602008 5696944 1601864 5696864 1603416 5700672 +1603464 5700736 1602152 5697040 1602072 5696992 1603416 5700672 +1603464 5700736 1602200 5697056 1602152 5697040 1603416 5700672 +1603464 5700736 1602352 5697112 1602200 5697056 1603416 5700672 +1602352 5697112 1602312 5697088 1602200 5697056 1603416 5700672 +1603464 5700736 1602424 5697104 1602352 5697112 1603416 5700672 +1603464 5700736 1602464 5697088 1602424 5697104 1603416 5700672 +1603464 5700736 1602504 5697056 1602464 5697088 1603416 5700672 +1602464 5697088 1602424 5697104 1603416 5700672 1602504 5697056 +1602424 5697104 1602352 5697112 1603416 5700672 1602464 5697088 +1602352 5697112 1602200 5697056 1603416 5700672 1602424 5697104 +1602200 5697056 1602152 5697040 1603416 5700672 1602352 5697112 +1603464 5700736 1604104 5700768 1602504 5697056 1603416 5700672 +1602504 5697056 1602464 5697088 1603416 5700672 1604104 5700768 +1603464 5700736 1603664 5700888 1604104 5700768 1603416 5700672 +1602152 5697040 1602072 5696992 1603416 5700672 1602200 5697056 +1602072 5696992 1601864 5696864 1603416 5700672 1602152 5697040 +1603416 5700672 1604704 5714560 1603464 5700736 1604104 5700768 +1601864 5696864 1601808 5696808 1603416 5700672 1602072 5696992 +1603416 5700672 1601808 5696808 1604696 5714600 1604704 5714560 +1604104 5700768 1602504 5696992 1602504 5697056 1603416 5700672 +1602152 5697040 1602120 5697008 1602072 5696992 1603416 5700672 +1601808 5696808 1603256 5700480 1603416 5700672 1601864 5696864 +1601808 5696808 1604696 5714600 1603256 5700480 1601864 5696864 +1603256 5700480 1604696 5714600 1603416 5700672 1601864 5696864 +1604696 5714600 1603256 5700480 1601808 5696808 1601784 5696736 +1603416 5700672 1602072 5696992 1601864 5696864 1603256 5700480 +1602072 5696992 1602008 5696944 1601864 5696864 1603256 5700480 +1603416 5700672 1602072 5696992 1603256 5700480 1604696 5714600 +1601864 5696864 1601808 5696808 1603256 5700480 1602072 5696992 +1603416 5700672 1602152 5697040 1602072 5696992 1603256 5700480 +1603416 5700672 1602152 5697040 1603256 5700480 1604696 5714600 +1603416 5700672 1602200 5697056 1602152 5697040 1603256 5700480 +1603416 5700672 1602200 5697056 1603256 5700480 1604696 5714600 +1603416 5700672 1602352 5697112 1602200 5697056 1603256 5700480 +1602352 5697112 1602312 5697088 1602200 5697056 1603256 5700480 +1603416 5700672 1602352 5697112 1603256 5700480 1604696 5714600 +1603416 5700672 1602424 5697104 1602352 5697112 1603256 5700480 +1603416 5700672 1602424 5697104 1603256 5700480 1604696 5714600 +1603416 5700672 1602464 5697088 1602424 5697104 1603256 5700480 +1603416 5700672 1602464 5697088 1603256 5700480 1604696 5714600 +1603416 5700672 1602504 5697056 1602464 5697088 1603256 5700480 +1603416 5700672 1604104 5700768 1602504 5697056 1603256 5700480 +1603416 5700672 1604104 5700768 1603256 5700480 1604696 5714600 +1602504 5697056 1602464 5697088 1603256 5700480 1604104 5700768 +1602464 5697088 1602424 5697104 1603256 5700480 1602504 5697056 +1602424 5697104 1602352 5697112 1603256 5700480 1602464 5697088 +1602352 5697112 1602200 5697056 1603256 5700480 1602424 5697104 +1603416 5700672 1603464 5700736 1604104 5700768 1603256 5700480 +1602200 5697056 1602152 5697040 1603256 5700480 1602352 5697112 +1602152 5697040 1602072 5696992 1603256 5700480 1602200 5697056 +1602072 5696992 1601864 5696864 1603256 5700480 1602152 5697040 +1603416 5700672 1603256 5700480 1604696 5714600 1604704 5714560 +1603256 5700480 1601808 5696808 1604696 5714600 1604704 5714560 +1603416 5700672 1604104 5700768 1603256 5700480 1604704 5714560 +1603416 5700672 1603256 5700480 1604704 5714560 1603464 5700736 +1603416 5700672 1604104 5700768 1603256 5700480 1603464 5700736 +1604704 5714560 1604744 5714504 1603464 5700736 1603256 5700480 +1603256 5700480 1604696 5714600 1604704 5714560 1603464 5700736 +1604104 5700768 1602504 5696992 1602504 5697056 1603256 5700480 +1602152 5697040 1602120 5697008 1602072 5696992 1603256 5700480 +1602152 5697040 1603224 5700384 1603256 5700480 1602200 5697056 +1603224 5700384 1602072 5696992 1603256 5700480 1602200 5697056 +1602152 5697040 1602072 5696992 1603224 5700384 1602200 5697056 +1603256 5700480 1602352 5697112 1602200 5697056 1603224 5700384 +1602352 5697112 1602312 5697088 1602200 5697056 1603224 5700384 +1603256 5700480 1602352 5697112 1603224 5700384 1602072 5696992 +1603256 5700480 1602424 5697104 1602352 5697112 1603224 5700384 +1603256 5700480 1602424 5697104 1603224 5700384 1602072 5696992 +1603256 5700480 1602464 5697088 1602424 5697104 1603224 5700384 +1603256 5700480 1602464 5697088 1603224 5700384 1602072 5696992 +1603256 5700480 1602504 5697056 1602464 5697088 1603224 5700384 +1603256 5700480 1602504 5697056 1603224 5700384 1602072 5696992 +1603256 5700480 1604104 5700768 1602504 5697056 1603224 5700384 +1603256 5700480 1603416 5700672 1604104 5700768 1603224 5700384 +1603256 5700480 1603416 5700672 1603224 5700384 1602072 5696992 +1604104 5700768 1602504 5697056 1603224 5700384 1603416 5700672 +1602504 5697056 1602464 5697088 1603224 5700384 1604104 5700768 +1602464 5697088 1602424 5697104 1603224 5700384 1602504 5697056 +1602424 5697104 1602352 5697112 1603224 5700384 1602464 5697088 +1603416 5700672 1603464 5700736 1604104 5700768 1603224 5700384 +1602352 5697112 1602200 5697056 1603224 5700384 1602424 5697104 +1602200 5697056 1602152 5697040 1603224 5700384 1602352 5697112 +1603256 5700480 1603224 5700384 1602072 5696992 1601864 5696864 +1602072 5696992 1602008 5696944 1601864 5696864 1603224 5700384 +1603256 5700480 1603416 5700672 1603224 5700384 1601864 5696864 +1603256 5700480 1603224 5700384 1601864 5696864 1601808 5696808 +1603256 5700480 1603416 5700672 1603224 5700384 1601808 5696808 +1603256 5700480 1603224 5700384 1601808 5696808 1604696 5714600 +1603256 5700480 1603224 5700384 1604696 5714600 1604704 5714560 +1603256 5700480 1603416 5700672 1603224 5700384 1604696 5714600 +1603224 5700384 1601864 5696864 1601808 5696808 1604696 5714600 +1603224 5700384 1602152 5697040 1602072 5696992 1601864 5696864 +1601808 5696808 1601784 5696736 1604696 5714600 1603224 5700384 +1603224 5700384 1602072 5696992 1601864 5696864 1601808 5696808 +1604104 5700768 1602504 5696992 1602504 5697056 1603224 5700384 +1602072 5696992 1603224 5700384 1602152 5697040 1602120 5697008 +1604104 5700768 1603272 5700360 1603224 5700384 1603416 5700672 +1603224 5700384 1603256 5700480 1603416 5700672 1603272 5700360 +1604104 5700768 1602504 5697056 1603272 5700360 1603416 5700672 +1603272 5700360 1602504 5697056 1603224 5700384 1603256 5700480 +1603416 5700672 1604104 5700768 1603272 5700360 1603256 5700480 +1603224 5700384 1603272 5700360 1602504 5697056 1602464 5697088 +1603224 5700384 1603256 5700480 1603272 5700360 1602464 5697088 +1603272 5700360 1604104 5700768 1602504 5697056 1602464 5697088 +1603224 5700384 1603272 5700360 1602464 5697088 1602424 5697104 +1603224 5700384 1603256 5700480 1603272 5700360 1602424 5697104 +1603272 5700360 1602504 5697056 1602464 5697088 1602424 5697104 +1603224 5700384 1603272 5700360 1602424 5697104 1602352 5697112 +1603224 5700384 1603256 5700480 1603272 5700360 1602352 5697112 +1603272 5700360 1602464 5697088 1602424 5697104 1602352 5697112 +1604104 5700768 1603272 5700360 1603416 5700672 1603464 5700736 +1603224 5700384 1603272 5700360 1602352 5697112 1602200 5697056 +1602504 5697056 1603272 5700360 1604104 5700768 1602504 5696992 +1604104 5700768 1603328 5700344 1603272 5700360 1603416 5700672 +1604104 5700768 1602504 5697056 1603328 5700344 1603416 5700672 +1603272 5700360 1603328 5700344 1602504 5697056 1602464 5697088 +1603328 5700344 1604104 5700768 1602504 5697056 1602464 5697088 +1603328 5700344 1602464 5697088 1603272 5700360 1603416 5700672 +1603272 5700360 1603256 5700480 1603416 5700672 1603328 5700344 +1603272 5700360 1603224 5700384 1603256 5700480 1603328 5700344 +1603416 5700672 1604104 5700768 1603328 5700344 1603256 5700480 +1603272 5700360 1603256 5700480 1603328 5700344 1602464 5697088 +1603272 5700360 1603328 5700344 1602464 5697088 1602424 5697104 +1603328 5700344 1602504 5697056 1602464 5697088 1602424 5697104 +1603272 5700360 1603256 5700480 1603328 5700344 1602424 5697104 +1603272 5700360 1603328 5700344 1602424 5697104 1602352 5697112 +1604104 5700768 1603328 5700344 1603416 5700672 1603464 5700736 +1602504 5697056 1603328 5700344 1604104 5700768 1602504 5696992 +1603328 5700344 1603472 5700352 1602504 5697056 1602464 5697088 +1603328 5700344 1604104 5700768 1603472 5700352 1602464 5697088 +1604104 5700768 1603472 5700352 1603328 5700344 1603416 5700672 +1603328 5700344 1603256 5700480 1603416 5700672 1603472 5700352 +1603472 5700352 1602464 5697088 1603328 5700344 1603256 5700480 +1603416 5700672 1604104 5700768 1603472 5700352 1603256 5700480 +1603472 5700352 1604104 5700768 1602504 5697056 1602464 5697088 +1604104 5700768 1602504 5697056 1603472 5700352 1603416 5700672 +1603328 5700344 1603472 5700352 1602464 5697088 1602424 5697104 +1603328 5700344 1603272 5700360 1603256 5700480 1603472 5700352 +1604104 5700768 1603472 5700352 1603416 5700672 1603464 5700736 +1603472 5700352 1603256 5700480 1603416 5700672 1603464 5700736 +1604104 5700768 1602504 5697056 1603472 5700352 1603464 5700736 +1604104 5700768 1603472 5700352 1603464 5700736 1603664 5700888 +1604104 5700768 1602504 5697056 1603472 5700352 1603664 5700888 +1604104 5700768 1603472 5700352 1603664 5700888 1603696 5700928 +1603472 5700352 1603416 5700672 1603464 5700736 1603664 5700888 +1602504 5697056 1603472 5700352 1604104 5700768 1602504 5696992 +1603472 5700352 1603680 5700448 1602504 5697056 1602464 5697088 +1604104 5700768 1603680 5700448 1603472 5700352 1603664 5700888 +1603680 5700448 1602504 5697056 1603472 5700352 1603664 5700888 +1604104 5700768 1602504 5697056 1603680 5700448 1603664 5700888 +1604104 5700768 1603680 5700448 1603664 5700888 1603696 5700928 +1603472 5700352 1603464 5700736 1603664 5700888 1603680 5700448 +1603472 5700352 1603464 5700736 1603680 5700448 1602504 5697056 +1603664 5700888 1604104 5700768 1603680 5700448 1603464 5700736 +1603472 5700352 1603416 5700672 1603464 5700736 1603680 5700448 +1603472 5700352 1603256 5700480 1603416 5700672 1603680 5700448 +1603472 5700352 1603416 5700672 1603680 5700448 1602504 5697056 +1603464 5700736 1603664 5700888 1603680 5700448 1603416 5700672 +1602504 5697056 1603680 5700448 1604104 5700768 1602504 5696992 +1603680 5700448 1603848 5700544 1602504 5697056 1603472 5700352 +1604104 5700768 1603848 5700544 1603680 5700448 1603664 5700888 +1603680 5700448 1603464 5700736 1603664 5700888 1603848 5700544 +1603848 5700544 1602504 5697056 1603680 5700448 1603464 5700736 +1603664 5700888 1604104 5700768 1603848 5700544 1603464 5700736 +1604104 5700768 1603848 5700544 1603664 5700888 1603696 5700928 +1603848 5700544 1603464 5700736 1603664 5700888 1603696 5700928 +1603680 5700448 1603416 5700672 1603464 5700736 1603848 5700544 +1604104 5700768 1603848 5700544 1603696 5700928 1603864 5701080 +1602504 5697056 1603848 5700544 1604104 5700768 1602504 5696992 +1604104 5700768 1602504 5697056 1603848 5700544 1603696 5700928 +1602504 5697056 1604056 5700696 1604104 5700768 1602504 5696992 +1604104 5700768 1609424 5706616 1602504 5696992 1604056 5700696 +1603848 5700544 1604056 5700696 1602504 5697056 1603680 5700448 +1604104 5700768 1604056 5700696 1603848 5700544 1603696 5700928 +1603848 5700544 1603664 5700888 1603696 5700928 1604056 5700696 +1603848 5700544 1603464 5700736 1603664 5700888 1604056 5700696 +1604104 5700768 1604056 5700696 1603696 5700928 1603864 5701080 +1604056 5700696 1602504 5697056 1603848 5700544 1603664 5700888 +1603696 5700928 1604104 5700768 1604056 5700696 1603664 5700888 +1602504 5697056 1603848 5700544 1604056 5700696 1602504 5696992 +1604056 5700696 1603696 5700928 1604104 5700768 1602504 5696992 +1601760 5696040 1600928 5681176 1599875 5760125 1601760 5696064 +1599875 5599875 1600928 5681176 1601760 5696040 1601768 5695920 +1599875 5599875 1600928 5681176 1601768 5695920 1601776 5695896 +1599875 5599875 1600928 5681176 1601776 5695896 1601824 5695840 +1600928 5681176 1601768 5695920 1601776 5695896 1601824 5695840 +1600928 5681176 1601760 5696040 1601768 5695920 1601776 5695896 +1599875 5760125 1601784 5696736 1601760 5696064 1600928 5681176 +1601760 5696064 1601760 5696040 1600928 5681176 1601784 5696736 +1599875 5760125 1604696 5714600 1601784 5696736 1600928 5681176 +1601784 5696736 1601784 5696704 1601760 5696064 1600928 5681176 +1599875 5599875 1600928 5681176 1601824 5695840 1602016 5695848 +1600928 5681176 1601776 5695896 1601824 5695840 1602016 5695848 +1599875 5599875 1600928 5681176 1602016 5695848 1657056 5639384 +1602016 5695848 1657088 5639464 1657056 5639384 1600928 5681176 +1657056 5639384 1599875 5599875 1600928 5681176 1657088 5639464 +1602016 5695848 1602112 5695896 1657088 5639464 1600928 5681176 +1657088 5639464 1657056 5639384 1600928 5681176 1602112 5695896 +1602112 5695896 1602160 5695928 1657088 5639464 1600928 5681176 +1657088 5639464 1657056 5639384 1600928 5681176 1602160 5695928 +1602160 5695928 1663776 5646144 1657088 5639464 1600928 5681176 +1657088 5639464 1657056 5639384 1600928 5681176 1663776 5646144 +1602160 5695928 1663880 5646248 1663776 5646144 1600928 5681176 +1663776 5646144 1657088 5639464 1600928 5681176 1663880 5646248 +1602160 5695928 1602200 5696008 1663880 5646248 1600928 5681176 +1602200 5696008 1602224 5696056 1663880 5646248 1600928 5681176 +1602200 5696008 1602224 5696056 1600928 5681176 1602160 5695928 +1602224 5696056 1609472 5706664 1663880 5646248 1600928 5681176 +1602224 5696056 1609424 5706616 1609472 5706664 1600928 5681176 +1602224 5696056 1602504 5696992 1609424 5706616 1600928 5681176 +1602224 5696056 1609424 5706616 1600928 5681176 1602200 5696008 +1609472 5706664 1663880 5646248 1600928 5681176 1609424 5706616 +1609472 5706664 1610680 5708312 1663880 5646248 1600928 5681176 +1663880 5646248 1663776 5646144 1600928 5681176 1609472 5706664 +1602112 5695896 1602160 5695928 1600928 5681176 1602016 5695848 +1602160 5695928 1602200 5696008 1600928 5681176 1602112 5695896 +1663776 5646144 1663688 5645984 1657088 5639464 1600928 5681176 +1599875 5599875 1600928 5681176 1657056 5639384 1657088 5639296 +1600928 5681176 1601824 5695840 1602016 5695848 1602112 5695896 +1601760 5696040 1601768 5695920 1600928 5681176 1601760 5696064 +1600928 5681176 1599875 5599875 1599875 5760125 1601784 5696736 +1599875 5599875 1599875 5760125 1600928 5681176 1657056 5639384 +1609472 5706664 1600952 5681176 1600928 5681176 1609424 5706616 +1600928 5681176 1602224 5696056 1609424 5706616 1600952 5681176 +1602224 5696056 1602504 5696992 1609424 5706616 1600952 5681176 +1600928 5681176 1602200 5696008 1602224 5696056 1600952 5681176 +1602224 5696056 1609424 5706616 1600952 5681176 1602200 5696008 +1600928 5681176 1602160 5695928 1602200 5696008 1600952 5681176 +1602200 5696008 1602224 5696056 1600952 5681176 1602160 5695928 +1609424 5706616 1609472 5706664 1600952 5681176 1602224 5696056 +1663880 5646248 1600952 5681176 1609472 5706664 1610680 5708312 +1600928 5681176 1600952 5681176 1663880 5646248 1663776 5646144 +1600928 5681176 1600952 5681176 1663776 5646144 1657088 5639464 +1600928 5681176 1600952 5681176 1657088 5639464 1657056 5639384 +1600952 5681176 1663776 5646144 1657088 5639464 1657056 5639384 +1600928 5681176 1600952 5681176 1657056 5639384 1599875 5599875 +1600952 5681176 1657088 5639464 1657056 5639384 1599875 5599875 +1600952 5681176 1663880 5646248 1663776 5646144 1657088 5639464 +1600928 5681176 1602112 5695896 1602160 5695928 1600952 5681176 +1602160 5695928 1602200 5696008 1600952 5681176 1602112 5695896 +1600928 5681176 1602016 5695848 1602112 5695896 1600952 5681176 +1602112 5695896 1602160 5695928 1600952 5681176 1602016 5695848 +1663776 5646144 1663688 5645984 1657088 5639464 1600952 5681176 +1657056 5639384 1657088 5639296 1599875 5599875 1600952 5681176 +1600928 5681176 1601824 5695840 1602016 5695848 1600952 5681176 +1600928 5681176 1601776 5695896 1601824 5695840 1600952 5681176 +1602016 5695848 1602112 5695896 1600952 5681176 1601824 5695840 +1600952 5681176 1599875 5599875 1600928 5681176 1601824 5695840 +1600928 5681176 1600952 5681176 1599875 5599875 1599875 5760125 +1600952 5681176 1609472 5706664 1663880 5646248 1663776 5646144 +1609472 5706664 1663880 5646248 1600952 5681176 1609424 5706616 +1663880 5646248 1601024 5681192 1609472 5706664 1610680 5708312 +1600952 5681176 1601024 5681192 1663880 5646248 1663776 5646144 +1600952 5681176 1601024 5681192 1663776 5646144 1657088 5639464 +1600952 5681176 1601024 5681192 1657088 5639464 1657056 5639384 +1600952 5681176 1601024 5681192 1657056 5639384 1599875 5599875 +1601024 5681192 1657088 5639464 1657056 5639384 1599875 5599875 +1600952 5681176 1601024 5681192 1599875 5599875 1600928 5681176 +1601024 5681192 1663776 5646144 1657088 5639464 1657056 5639384 +1663776 5646144 1663688 5645984 1657088 5639464 1601024 5681192 +1657056 5639384 1657088 5639296 1599875 5599875 1601024 5681192 +1601024 5681192 1663880 5646248 1663776 5646144 1657088 5639464 +1600952 5681176 1609472 5706664 1601024 5681192 1599875 5599875 +1609472 5706664 1601024 5681192 1600952 5681176 1609424 5706616 +1600952 5681176 1602224 5696056 1609424 5706616 1601024 5681192 +1602224 5696056 1602504 5696992 1609424 5706616 1601024 5681192 +1600952 5681176 1602200 5696008 1602224 5696056 1601024 5681192 +1600952 5681176 1602160 5695928 1602200 5696008 1601024 5681192 +1602200 5696008 1602224 5696056 1601024 5681192 1602160 5695928 +1600952 5681176 1602112 5695896 1602160 5695928 1601024 5681192 +1602160 5695928 1602200 5696008 1601024 5681192 1602112 5695896 +1602224 5696056 1609424 5706616 1601024 5681192 1602200 5696008 +1600952 5681176 1602016 5695848 1602112 5695896 1601024 5681192 +1602112 5695896 1602160 5695928 1601024 5681192 1602016 5695848 +1600952 5681176 1601824 5695840 1602016 5695848 1601024 5681192 +1602016 5695848 1602112 5695896 1601024 5681192 1601824 5695840 +1600952 5681176 1600928 5681176 1601824 5695840 1601024 5681192 +1600928 5681176 1601776 5695896 1601824 5695840 1601024 5681192 +1601824 5695840 1602016 5695848 1601024 5681192 1600928 5681176 +1601024 5681192 1599875 5599875 1600952 5681176 1600928 5681176 +1609424 5706616 1609472 5706664 1601024 5681192 1602224 5696056 +1601024 5681192 1609472 5706664 1663880 5646248 1663776 5646144 +1609472 5706664 1663880 5646248 1601024 5681192 1609424 5706616 +1663880 5646248 1601088 5681248 1609472 5706664 1610680 5708312 +1601024 5681192 1601088 5681248 1663880 5646248 1663776 5646144 +1601088 5681248 1609472 5706664 1663880 5646248 1663776 5646144 +1601024 5681192 1601088 5681248 1663776 5646144 1657088 5639464 +1601024 5681192 1601088 5681248 1657088 5639464 1657056 5639384 +1663776 5646144 1663688 5645984 1657088 5639464 1601088 5681248 +1601088 5681248 1663880 5646248 1663776 5646144 1657088 5639464 +1601024 5681192 1609472 5706664 1601088 5681248 1657088 5639464 +1609472 5706664 1601088 5681248 1601024 5681192 1609424 5706616 +1609472 5706664 1663880 5646248 1601088 5681248 1609424 5706616 +1601024 5681192 1602224 5696056 1609424 5706616 1601088 5681248 +1602224 5696056 1602504 5696992 1609424 5706616 1601088 5681248 +1601024 5681192 1602200 5696008 1602224 5696056 1601088 5681248 +1601024 5681192 1602160 5695928 1602200 5696008 1601088 5681248 +1601024 5681192 1602112 5695896 1602160 5695928 1601088 5681248 +1602160 5695928 1602200 5696008 1601088 5681248 1602112 5695896 +1601024 5681192 1602016 5695848 1602112 5695896 1601088 5681248 +1602112 5695896 1602160 5695928 1601088 5681248 1602016 5695848 +1602200 5696008 1602224 5696056 1601088 5681248 1602160 5695928 +1601024 5681192 1601824 5695840 1602016 5695848 1601088 5681248 +1602016 5695848 1602112 5695896 1601088 5681248 1601824 5695840 +1601024 5681192 1600928 5681176 1601824 5695840 1601088 5681248 +1600928 5681176 1601776 5695896 1601824 5695840 1601088 5681248 +1601824 5695840 1602016 5695848 1601088 5681248 1600928 5681176 +1601024 5681192 1600952 5681176 1600928 5681176 1601088 5681248 +1600928 5681176 1601824 5695840 1601088 5681248 1600952 5681176 +1602224 5696056 1609424 5706616 1601088 5681248 1602200 5696008 +1601088 5681248 1657088 5639464 1601024 5681192 1600952 5681176 +1609424 5706616 1609472 5706664 1601088 5681248 1602224 5696056 +1663880 5646248 1601152 5681352 1609472 5706664 1610680 5708312 +1601088 5681248 1601152 5681352 1663880 5646248 1663776 5646144 +1601088 5681248 1609472 5706664 1601152 5681352 1663776 5646144 +1609472 5706664 1601152 5681352 1601088 5681248 1609424 5706616 +1601152 5681352 1663776 5646144 1601088 5681248 1609424 5706616 +1601152 5681352 1609472 5706664 1663880 5646248 1663776 5646144 +1609472 5706664 1663880 5646248 1601152 5681352 1609424 5706616 +1601088 5681248 1601152 5681352 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1601152 5681352 +1601152 5681352 1663880 5646248 1663776 5646144 1657088 5639464 +1601088 5681248 1609424 5706616 1601152 5681352 1657088 5639464 +1601088 5681248 1601152 5681352 1657088 5639464 1601024 5681192 +1601088 5681248 1602224 5696056 1609424 5706616 1601152 5681352 +1602224 5696056 1602504 5696992 1609424 5706616 1601152 5681352 +1601088 5681248 1602224 5696056 1601152 5681352 1657088 5639464 +1609424 5706616 1609472 5706664 1601152 5681352 1602224 5696056 +1601088 5681248 1602200 5696008 1602224 5696056 1601152 5681352 +1601088 5681248 1602160 5695928 1602200 5696008 1601152 5681352 +1601088 5681248 1602112 5695896 1602160 5695928 1601152 5681352 +1601088 5681248 1602016 5695848 1602112 5695896 1601152 5681352 +1602112 5695896 1602160 5695928 1601152 5681352 1602016 5695848 +1601088 5681248 1601824 5695840 1602016 5695848 1601152 5681352 +1602016 5695848 1602112 5695896 1601152 5681352 1601824 5695840 +1602160 5695928 1602200 5696008 1601152 5681352 1602112 5695896 +1601088 5681248 1600928 5681176 1601824 5695840 1601152 5681352 +1600928 5681176 1601776 5695896 1601824 5695840 1601152 5681352 +1601824 5695840 1602016 5695848 1601152 5681352 1600928 5681176 +1601088 5681248 1600952 5681176 1600928 5681176 1601152 5681352 +1601088 5681248 1600928 5681176 1601152 5681352 1657088 5639464 +1602200 5696008 1602224 5696056 1601152 5681352 1602160 5695928 +1602224 5696056 1609424 5706616 1601152 5681352 1602200 5696008 +1609424 5706616 1601184 5681504 1602224 5696056 1602504 5696992 +1601152 5681352 1601184 5681504 1609424 5706616 1609472 5706664 +1601152 5681352 1602224 5696056 1601184 5681504 1609472 5706664 +1601152 5681352 1601184 5681504 1609472 5706664 1663880 5646248 +1609472 5706664 1610680 5708312 1663880 5646248 1601184 5681504 +1601184 5681504 1609424 5706616 1609472 5706664 1663880 5646248 +1601152 5681352 1601184 5681504 1663880 5646248 1663776 5646144 +1601152 5681352 1602224 5696056 1601184 5681504 1663880 5646248 +1601184 5681504 1602224 5696056 1609424 5706616 1609472 5706664 +1602224 5696056 1601184 5681504 1601152 5681352 1602200 5696008 +1601184 5681504 1663880 5646248 1601152 5681352 1602200 5696008 +1602224 5696056 1609424 5706616 1601184 5681504 1602200 5696008 +1601152 5681352 1602160 5695928 1602200 5696008 1601184 5681504 +1601152 5681352 1602112 5695896 1602160 5695928 1601184 5681504 +1601152 5681352 1602016 5695848 1602112 5695896 1601184 5681504 +1601152 5681352 1601824 5695840 1602016 5695848 1601184 5681504 +1602016 5695848 1602112 5695896 1601184 5681504 1601824 5695840 +1601152 5681352 1600928 5681176 1601824 5695840 1601184 5681504 +1600928 5681176 1601776 5695896 1601824 5695840 1601184 5681504 +1600928 5681176 1601768 5695920 1601776 5695896 1601184 5681504 +1600928 5681176 1601776 5695896 1601184 5681504 1601152 5681352 +1601824 5695840 1602016 5695848 1601184 5681504 1601776 5695896 +1602112 5695896 1602160 5695928 1601184 5681504 1602016 5695848 +1601152 5681352 1601088 5681248 1600928 5681176 1601184 5681504 +1601152 5681352 1600928 5681176 1601184 5681504 1663880 5646248 +1602160 5695928 1602200 5696008 1601184 5681504 1602112 5695896 +1602200 5696008 1602224 5696056 1601184 5681504 1602160 5695928 +1601776 5695896 1601160 5681616 1600928 5681176 1601768 5695920 +1601184 5681504 1601160 5681616 1601776 5695896 1601824 5695840 +1600928 5681176 1601160 5681616 1601184 5681504 1601152 5681352 +1601184 5681504 1601160 5681616 1601824 5695840 1602016 5695848 +1601160 5681616 1601776 5695896 1601824 5695840 1602016 5695848 +1601184 5681504 1601160 5681616 1602016 5695848 1602112 5695896 +1601160 5681616 1601824 5695840 1602016 5695848 1602112 5695896 +1601184 5681504 1601160 5681616 1602112 5695896 1602160 5695928 +1601160 5681616 1602016 5695848 1602112 5695896 1602160 5695928 +1601184 5681504 1600928 5681176 1601160 5681616 1602160 5695928 +1601160 5681616 1600928 5681176 1601776 5695896 1601824 5695840 +1601184 5681504 1601160 5681616 1602160 5695928 1602200 5696008 +1601160 5681616 1602112 5695896 1602160 5695928 1602200 5696008 +1601184 5681504 1600928 5681176 1601160 5681616 1602200 5696008 +1601184 5681504 1601160 5681616 1602200 5696008 1602224 5696056 +1601184 5681504 1600928 5681176 1601160 5681616 1602224 5696056 +1601184 5681504 1601160 5681616 1602224 5696056 1609424 5706616 +1601160 5681616 1602160 5695928 1602200 5696008 1602224 5696056 +1601776 5695896 1601128 5681664 1600928 5681176 1601768 5695920 +1600928 5681176 1601760 5696040 1601768 5695920 1601128 5681664 +1600928 5681176 1601128 5681664 1601160 5681616 1601184 5681504 +1600928 5681176 1601128 5681664 1601184 5681504 1601152 5681352 +1600928 5681176 1601128 5681664 1601152 5681352 1601088 5681248 +1601128 5681664 1601776 5695896 1601160 5681616 1601184 5681504 +1601128 5681664 1601160 5681616 1601184 5681504 1601152 5681352 +1601776 5695896 1601160 5681616 1601128 5681664 1601768 5695920 +1601128 5681664 1601152 5681352 1600928 5681176 1601768 5695920 +1601160 5681616 1601128 5681664 1601776 5695896 1601824 5695840 +1601160 5681616 1601128 5681664 1601824 5695840 1602016 5695848 +1601160 5681616 1601128 5681664 1602016 5695848 1602112 5695896 +1601128 5681664 1601824 5695840 1602016 5695848 1602112 5695896 +1601160 5681616 1601128 5681664 1602112 5695896 1602160 5695928 +1601128 5681664 1602016 5695848 1602112 5695896 1602160 5695928 +1601160 5681616 1601128 5681664 1602160 5695928 1602200 5696008 +1601160 5681616 1601184 5681504 1601128 5681664 1602160 5695928 +1601128 5681664 1601768 5695920 1601776 5695896 1601824 5695840 +1601128 5681664 1601776 5695896 1601824 5695840 1602016 5695848 +1601128 5681664 1601088 5681704 1601768 5695920 1601776 5695896 +1601768 5695920 1601088 5681704 1600928 5681176 1601760 5696040 +1601088 5681704 1600928 5681176 1601768 5695920 1601776 5695896 +1601128 5681664 1601088 5681704 1601776 5695896 1601824 5695840 +1601088 5681704 1601768 5695920 1601776 5695896 1601824 5695840 +1601128 5681664 1600928 5681176 1601088 5681704 1601824 5695840 +1600928 5681176 1601088 5681704 1601128 5681664 1601152 5681352 +1600928 5681176 1601768 5695920 1601088 5681704 1601152 5681352 +1601128 5681664 1601184 5681504 1601152 5681352 1601088 5681704 +1600928 5681176 1601088 5681704 1601152 5681352 1601088 5681248 +1601128 5681664 1601160 5681616 1601184 5681504 1601088 5681704 +1601088 5681704 1601824 5695840 1601128 5681664 1601184 5681504 +1601152 5681352 1600928 5681176 1601088 5681704 1601184 5681504 +1601128 5681664 1601088 5681704 1601824 5695840 1602016 5695848 +1601128 5681664 1601088 5681704 1602016 5695848 1602112 5695896 +1601128 5681664 1601088 5681704 1602112 5695896 1602160 5695928 +1601088 5681704 1602016 5695848 1602112 5695896 1602160 5695928 +1601128 5681664 1601088 5681704 1602160 5695928 1601160 5681616 +1601088 5681704 1601776 5695896 1601824 5695840 1602016 5695848 +1601128 5681664 1601184 5681504 1601088 5681704 1602160 5695928 +1601088 5681704 1601824 5695840 1602016 5695848 1602112 5695896 +1600928 5681176 1600992 5681736 1601088 5681704 1601152 5681352 +1601768 5695920 1600992 5681736 1600928 5681176 1601760 5696040 +1601088 5681704 1600992 5681736 1601768 5695920 1601776 5695896 +1601088 5681704 1600992 5681736 1601776 5695896 1601824 5695840 +1600992 5681736 1601768 5695920 1601776 5695896 1601824 5695840 +1600928 5681176 1600992 5681736 1601152 5681352 1601088 5681248 +1601088 5681704 1600992 5681736 1601824 5695840 1602016 5695848 +1600992 5681736 1601776 5695896 1601824 5695840 1602016 5695848 +1601088 5681704 1601184 5681504 1601152 5681352 1600992 5681736 +1601152 5681352 1600928 5681176 1600992 5681736 1601184 5681504 +1601088 5681704 1601128 5681664 1601184 5681504 1600992 5681736 +1601128 5681664 1601160 5681616 1601184 5681504 1600992 5681736 +1601128 5681664 1601160 5681616 1600992 5681736 1601088 5681704 +1601184 5681504 1601152 5681352 1600992 5681736 1601160 5681616 +1600992 5681736 1602016 5695848 1601088 5681704 1601128 5681664 +1601768 5695920 1601776 5695896 1600992 5681736 1601760 5696040 +1601088 5681704 1600992 5681736 1602016 5695848 1602112 5695896 +1600928 5681176 1601760 5696040 1600992 5681736 1601152 5681352 +1600928 5681176 1601760 5696064 1601760 5696040 1600992 5681736 +1600928 5681176 1600928 5681744 1601784 5696736 1601760 5696064 +1600928 5681176 1600928 5681744 1601760 5696064 1601760 5696040 +1600928 5681744 1601784 5696736 1601760 5696064 1601760 5696040 +1600928 5681744 1599875 5760125 1601784 5696736 1601760 5696064 +1600928 5681176 1599875 5760125 1600928 5681744 1601760 5696040 +1601784 5696736 1600928 5681744 1599875 5760125 1604696 5714600 +1601784 5696736 1601784 5696704 1601760 5696064 1600928 5681744 +1600928 5681176 1600928 5681744 1601760 5696040 1600992 5681736 +1600928 5681744 1601760 5696064 1601760 5696040 1600992 5681736 +1601760 5696040 1601768 5695920 1600992 5681736 1600928 5681744 +1601760 5696040 1601768 5695920 1600928 5681744 1601760 5696064 +1600928 5681176 1599875 5760125 1600928 5681744 1600992 5681736 +1601768 5695920 1601776 5695896 1600992 5681736 1600928 5681744 +1601768 5695920 1601776 5695896 1600928 5681744 1601760 5696040 +1601776 5695896 1601824 5695840 1600992 5681736 1600928 5681744 +1601824 5695840 1602016 5695848 1600992 5681736 1600928 5681744 +1601776 5695896 1601824 5695840 1600928 5681744 1601768 5695920 +1600928 5681176 1600928 5681744 1600992 5681736 1601152 5681352 +1600992 5681736 1601184 5681504 1601152 5681352 1600928 5681744 +1600928 5681176 1599875 5760125 1600928 5681744 1601152 5681352 +1600928 5681176 1600928 5681744 1601152 5681352 1601088 5681248 +1600992 5681736 1601160 5681616 1601184 5681504 1600928 5681744 +1601152 5681352 1600928 5681176 1600928 5681744 1601184 5681504 +1600992 5681736 1601184 5681504 1600928 5681744 1601824 5695840 +1599875 5760125 1600928 5681744 1600928 5681176 1599875 5599875 +1600928 5681176 1600832 5681736 1599875 5760125 1600928 5681744 +1600928 5681176 1599875 5599875 1600832 5681736 1600928 5681744 +1600928 5681176 1600832 5681736 1600928 5681744 1601152 5681352 +1600928 5681176 1599875 5599875 1600832 5681736 1601152 5681352 +1600832 5681736 1599875 5599875 1599875 5760125 1600928 5681744 +1600928 5681176 1600832 5681736 1601152 5681352 1601088 5681248 +1599875 5760125 1601784 5696736 1600928 5681744 1600832 5681736 +1601784 5696736 1601760 5696064 1600928 5681744 1600832 5681736 +1601760 5696064 1601760 5696040 1600928 5681744 1600832 5681736 +1601760 5696040 1601768 5695920 1600928 5681744 1600832 5681736 +1601768 5695920 1601776 5695896 1600928 5681744 1600832 5681736 +1601768 5695920 1601776 5695896 1600832 5681736 1601760 5696040 +1601760 5696040 1601768 5695920 1600832 5681736 1601760 5696064 +1601760 5696064 1601760 5696040 1600832 5681736 1601784 5696736 +1599875 5760125 1601784 5696736 1600832 5681736 1599875 5599875 +1599875 5760125 1604696 5714600 1601784 5696736 1600832 5681736 +1601784 5696736 1601784 5696704 1601760 5696064 1600832 5681736 +1601784 5696736 1601760 5696064 1600832 5681736 1599875 5760125 +1601776 5695896 1601824 5695840 1600928 5681744 1600832 5681736 +1601776 5695896 1601824 5695840 1600832 5681736 1601768 5695920 +1601824 5695840 1600992 5681736 1600928 5681744 1600832 5681736 +1600928 5681744 1601184 5681504 1601152 5681352 1600832 5681736 +1600832 5681736 1601824 5695840 1600928 5681744 1601152 5681352 +1599875 5599875 1600832 5681736 1600928 5681176 1600952 5681176 +1599875 5599875 1600760 5681656 1600832 5681736 1600928 5681176 +1600832 5681736 1601152 5681352 1600928 5681176 1600760 5681656 +1600760 5681656 1599875 5760125 1600832 5681736 1601152 5681352 +1600832 5681736 1600760 5681656 1599875 5760125 1601784 5696736 +1600760 5681656 1599875 5599875 1599875 5760125 1601784 5696736 +1600832 5681736 1601152 5681352 1600760 5681656 1601784 5696736 +1600928 5681176 1599875 5599875 1600760 5681656 1601152 5681352 +1599875 5760125 1604696 5714600 1601784 5696736 1600760 5681656 +1601152 5681352 1601088 5681248 1600928 5681176 1600760 5681656 +1600832 5681736 1600760 5681656 1601784 5696736 1601760 5696064 +1600832 5681736 1600760 5681656 1601760 5696064 1601760 5696040 +1600832 5681736 1600760 5681656 1601760 5696040 1601768 5695920 +1600832 5681736 1600760 5681656 1601768 5695920 1601776 5695896 +1600832 5681736 1600760 5681656 1601776 5695896 1601824 5695840 +1600760 5681656 1601760 5696040 1601768 5695920 1601776 5695896 +1600760 5681656 1601760 5696064 1601760 5696040 1601768 5695920 +1600832 5681736 1601152 5681352 1600760 5681656 1601776 5695896 +1601784 5696736 1601784 5696704 1601760 5696064 1600760 5681656 +1600760 5681656 1601784 5696736 1601760 5696064 1601760 5696040 +1600760 5681656 1599875 5760125 1601784 5696736 1601760 5696064 +1599875 5599875 1599875 5760125 1600760 5681656 1600928 5681176 +1600832 5681736 1600928 5681744 1601152 5681352 1600760 5681656 +1600832 5681736 1600928 5681744 1600760 5681656 1601776 5695896 +1601152 5681352 1600928 5681176 1600760 5681656 1600928 5681744 +1600928 5681744 1601184 5681504 1601152 5681352 1600760 5681656 +1600928 5681744 1600992 5681736 1601184 5681504 1600760 5681656 +1601152 5681352 1600928 5681176 1600760 5681656 1601184 5681504 +1600992 5681736 1601160 5681616 1601184 5681504 1600760 5681656 +1601184 5681504 1601152 5681352 1600760 5681656 1600992 5681736 +1600928 5681744 1600992 5681736 1600760 5681656 1600832 5681736 +1599875 5599875 1600760 5681656 1600928 5681176 1600952 5681176 +1600760 5681656 1600744 5681584 1599875 5760125 1601784 5696736 +1600760 5681656 1599875 5599875 1600744 5681584 1601784 5696736 +1600744 5681584 1599875 5599875 1599875 5760125 1601784 5696736 +1599875 5760125 1604696 5714600 1601784 5696736 1600744 5681584 +1600760 5681656 1600744 5681584 1601784 5696736 1601760 5696064 +1600744 5681584 1599875 5760125 1601784 5696736 1601760 5696064 +1600760 5681656 1599875 5599875 1600744 5681584 1601760 5696064 +1601784 5696736 1601784 5696704 1601760 5696064 1600744 5681584 +1600760 5681656 1600744 5681584 1601760 5696064 1601760 5696040 +1600760 5681656 1600744 5681584 1601760 5696040 1601768 5695920 +1600760 5681656 1600744 5681584 1601768 5695920 1601776 5695896 +1600760 5681656 1599875 5599875 1600744 5681584 1601768 5695920 +1600744 5681584 1601784 5696736 1601760 5696064 1601760 5696040 +1600744 5681584 1601760 5696064 1601760 5696040 1601768 5695920 +1599875 5599875 1600744 5681584 1600760 5681656 1600928 5681176 +1600744 5681584 1601768 5695920 1600760 5681656 1600928 5681176 +1600760 5681656 1601152 5681352 1600928 5681176 1600744 5681584 +1600928 5681176 1599875 5599875 1600744 5681584 1601152 5681352 +1600760 5681656 1601152 5681352 1600744 5681584 1601768 5695920 +1600760 5681656 1601184 5681504 1601152 5681352 1600744 5681584 +1600760 5681656 1601184 5681504 1600744 5681584 1601768 5695920 +1601152 5681352 1600928 5681176 1600744 5681584 1601184 5681504 +1601152 5681352 1601088 5681248 1600928 5681176 1600744 5681584 +1600928 5681176 1599875 5599875 1600744 5681584 1601088 5681248 +1601152 5681352 1601088 5681248 1600744 5681584 1601184 5681504 +1601088 5681248 1600952 5681176 1600928 5681176 1600744 5681584 +1599875 5599875 1599875 5760125 1600744 5681584 1600928 5681176 +1600760 5681656 1600992 5681736 1601184 5681504 1600744 5681584 +1601184 5681504 1601152 5681352 1600744 5681584 1600992 5681736 +1600760 5681656 1600928 5681744 1600992 5681736 1600744 5681584 +1600760 5681656 1600928 5681744 1600744 5681584 1601768 5695920 +1600992 5681736 1601160 5681616 1601184 5681504 1600744 5681584 +1600992 5681736 1601184 5681504 1600744 5681584 1600928 5681744 +1600760 5681656 1600832 5681736 1600928 5681744 1600744 5681584 +1599875 5599875 1600744 5681584 1600928 5681176 1600952 5681176 +1600928 5681176 1600768 5681520 1600744 5681584 1601088 5681248 +1600928 5681176 1599875 5599875 1600768 5681520 1601088 5681248 +1600928 5681176 1600768 5681520 1601088 5681248 1600952 5681176 +1600744 5681584 1601152 5681352 1601088 5681248 1600768 5681520 +1601088 5681248 1600928 5681176 1600768 5681520 1601152 5681352 +1600744 5681584 1601184 5681504 1601152 5681352 1600768 5681520 +1600744 5681584 1600992 5681736 1601184 5681504 1600768 5681520 +1601152 5681352 1601088 5681248 1600768 5681520 1601184 5681504 +1600744 5681584 1600768 5681520 1599875 5599875 1599875 5760125 +1600992 5681736 1601160 5681616 1601184 5681504 1600768 5681520 +1600992 5681736 1601128 5681664 1601160 5681616 1600768 5681520 +1600992 5681736 1601088 5681704 1601128 5681664 1600768 5681520 +1601160 5681616 1601184 5681504 1600768 5681520 1601128 5681664 +1601184 5681504 1601152 5681352 1600768 5681520 1601160 5681616 +1600768 5681520 1599875 5599875 1600744 5681584 1600992 5681736 +1600744 5681584 1600928 5681744 1600992 5681736 1600768 5681520 +1600744 5681584 1600760 5681656 1600928 5681744 1600768 5681520 +1600744 5681584 1600760 5681656 1600768 5681520 1599875 5599875 +1600928 5681744 1600992 5681736 1600768 5681520 1600760 5681656 +1600992 5681736 1601128 5681664 1600768 5681520 1600928 5681744 +1600760 5681656 1600832 5681736 1600928 5681744 1600768 5681520 +1599875 5599875 1600768 5681520 1600928 5681176 1600952 5681176 +1600768 5681520 1600816 5681432 1600928 5681176 1599875 5599875 +1601088 5681248 1600816 5681432 1600768 5681520 1601152 5681352 +1600816 5681432 1600928 5681176 1600768 5681520 1601152 5681352 +1600928 5681176 1600816 5681432 1601088 5681248 1600952 5681176 +1600768 5681520 1601184 5681504 1601152 5681352 1600816 5681432 +1600768 5681520 1601184 5681504 1600816 5681432 1600928 5681176 +1601152 5681352 1601088 5681248 1600816 5681432 1601184 5681504 +1601088 5681248 1600952 5681176 1600816 5681432 1601152 5681352 +1600768 5681520 1601160 5681616 1601184 5681504 1600816 5681432 +1600768 5681520 1601160 5681616 1600816 5681432 1600928 5681176 +1601184 5681504 1601152 5681352 1600816 5681432 1601160 5681616 +1600768 5681520 1601128 5681664 1601160 5681616 1600816 5681432 +1600768 5681520 1601128 5681664 1600816 5681432 1600928 5681176 +1601160 5681616 1601184 5681504 1600816 5681432 1601128 5681664 +1600768 5681520 1600992 5681736 1601128 5681664 1600816 5681432 +1600768 5681520 1600992 5681736 1600816 5681432 1600928 5681176 +1600992 5681736 1601088 5681704 1601128 5681664 1600816 5681432 +1601128 5681664 1601160 5681616 1600816 5681432 1600992 5681736 +1600928 5681176 1600768 5681520 1600816 5681432 1600952 5681176 +1601088 5681248 1601024 5681192 1600952 5681176 1600816 5681432 +1600768 5681520 1600928 5681744 1600992 5681736 1600816 5681432 +1600928 5681176 1600872 5681248 1600768 5681520 1600816 5681432 +1600928 5681176 1599875 5599875 1600872 5681248 1600816 5681432 +1600768 5681520 1600872 5681248 1599875 5599875 1600744 5681584 +1600872 5681248 1599875 5599875 1600768 5681520 1600816 5681432 +1600928 5681176 1600872 5681248 1600816 5681432 1600952 5681176 +1600872 5681248 1600768 5681520 1600816 5681432 1600952 5681176 +1600928 5681176 1599875 5599875 1600872 5681248 1600952 5681176 +1600816 5681432 1601088 5681248 1600952 5681176 1600872 5681248 +1600816 5681432 1601088 5681248 1600872 5681248 1600768 5681520 +1600816 5681432 1601152 5681352 1601088 5681248 1600872 5681248 +1600952 5681176 1600928 5681176 1600872 5681248 1601088 5681248 +1601088 5681248 1601024 5681192 1600952 5681176 1600872 5681248 +1601088 5681248 1601024 5681192 1600872 5681248 1600816 5681432 +1600952 5681176 1600928 5681176 1600872 5681248 1601024 5681192 +1599875 5599875 1600872 5681248 1600928 5681176 1600952 5681176 +1601088 5681248 1601296 5681104 1657088 5639464 1601024 5681192 +1657088 5639464 1657056 5639384 1601024 5681192 1601296 5681104 +1657056 5639384 1599875 5599875 1601024 5681192 1601296 5681104 +1599875 5599875 1600952 5681176 1601024 5681192 1601296 5681104 +1599875 5599875 1600952 5681176 1601296 5681104 1657056 5639384 +1599875 5599875 1600928 5681176 1600952 5681176 1601296 5681104 +1600952 5681176 1601024 5681192 1601296 5681104 1600928 5681176 +1599875 5599875 1600928 5681176 1601296 5681104 1657056 5639384 +1657056 5639384 1599875 5599875 1601296 5681104 1657088 5639464 +1601296 5681104 1601152 5681352 1657088 5639464 1657056 5639384 +1601088 5681248 1601152 5681352 1601296 5681104 1601024 5681192 +1657056 5639384 1657088 5639296 1599875 5599875 1601296 5681104 +1599875 5599875 1600872 5681248 1600928 5681176 1601296 5681104 +1601024 5681192 1601088 5681248 1601296 5681104 1600952 5681176 +1657088 5639464 1601296 5681104 1601152 5681352 1663776 5646144 +1657088 5639464 1657056 5639384 1601296 5681104 1663776 5646144 +1601296 5681104 1601088 5681248 1601152 5681352 1663776 5646144 +1657088 5639464 1601296 5681104 1663776 5646144 1663688 5645984 +1601152 5681352 1663880 5646248 1663776 5646144 1601296 5681104 +1601152 5681352 1663880 5646248 1601296 5681104 1601088 5681248 +1601152 5681352 1601184 5681504 1663880 5646248 1601296 5681104 +1601152 5681352 1601184 5681504 1601296 5681104 1601088 5681248 +1663880 5646248 1663776 5646144 1601296 5681104 1601184 5681504 +1601184 5681504 1609472 5706664 1663880 5646248 1601296 5681104 +1609472 5706664 1610680 5708312 1663880 5646248 1601296 5681104 +1663880 5646248 1663776 5646144 1601296 5681104 1609472 5706664 +1601184 5681504 1609424 5706616 1609472 5706664 1601296 5681104 +1601184 5681504 1609424 5706616 1601296 5681104 1601152 5681352 +1609472 5706664 1663880 5646248 1601296 5681104 1609424 5706616 +1601184 5681504 1602224 5696056 1609424 5706616 1601296 5681104 +1602224 5696056 1602504 5696992 1609424 5706616 1601296 5681104 +1609424 5706616 1609472 5706664 1601296 5681104 1602224 5696056 +1601184 5681504 1602224 5696056 1601296 5681104 1601152 5681352 +1601184 5681504 1601160 5681616 1602224 5696056 1601296 5681104 +1601184 5681504 1601160 5681616 1601296 5681104 1601152 5681352 +1602224 5696056 1609424 5706616 1601296 5681104 1601160 5681616 +1663776 5646144 1657088 5639464 1601296 5681104 1663880 5646248 +1601160 5681616 1602200 5696008 1602224 5696056 1601296 5681104 +1599875 5599875 1601240 5681040 1601296 5681104 1657056 5639384 +1599875 5599875 1600928 5681176 1601240 5681040 1657056 5639384 +1601296 5681104 1601240 5681040 1600928 5681176 1600952 5681176 +1601296 5681104 1601240 5681040 1600952 5681176 1601024 5681192 +1601240 5681040 1600928 5681176 1600952 5681176 1601024 5681192 +1601296 5681104 1657088 5639464 1657056 5639384 1601240 5681040 +1657056 5639384 1599875 5599875 1601240 5681040 1657088 5639464 +1601296 5681104 1663776 5646144 1657088 5639464 1601240 5681040 +1601240 5681040 1601024 5681192 1601296 5681104 1657088 5639464 +1601240 5681040 1599875 5599875 1600928 5681176 1600952 5681176 +1599875 5599875 1601240 5681040 1657056 5639384 1657088 5639296 +1600928 5681176 1601240 5681040 1599875 5599875 1600872 5681248 +1601296 5681104 1601240 5681040 1601024 5681192 1601088 5681248 +1601240 5681040 1600952 5681176 1601024 5681192 1601088 5681248 +1601296 5681104 1657088 5639464 1601240 5681040 1601088 5681248 +1601296 5681104 1601240 5681040 1601088 5681248 1601152 5681352 +1601240 5681040 1601256 5680984 1599875 5599875 1600928 5681176 +1601240 5681040 1657056 5639384 1601256 5680984 1600928 5681176 +1601256 5680984 1657056 5639384 1599875 5599875 1600928 5681176 +1657056 5639384 1601256 5680984 1601240 5681040 1657088 5639464 +1601256 5680984 1600928 5681176 1601240 5681040 1657088 5639464 +1657056 5639384 1599875 5599875 1601256 5680984 1657088 5639464 +1601240 5681040 1601296 5681104 1657088 5639464 1601256 5680984 +1601240 5681040 1601296 5681104 1601256 5680984 1600928 5681176 +1657088 5639464 1657056 5639384 1601256 5680984 1601296 5681104 +1601296 5681104 1663776 5646144 1657088 5639464 1601256 5680984 +1657088 5639464 1657056 5639384 1601256 5680984 1663776 5646144 +1601296 5681104 1663776 5646144 1601256 5680984 1601240 5681040 +1663776 5646144 1663688 5645984 1657088 5639464 1601256 5680984 +1601240 5681040 1601256 5680984 1600928 5681176 1600952 5681176 +1601240 5681040 1601296 5681104 1601256 5680984 1600952 5681176 +1601256 5680984 1599875 5599875 1600928 5681176 1600952 5681176 +1601240 5681040 1601256 5680984 1600952 5681176 1601024 5681192 +1599875 5599875 1601256 5680984 1657056 5639384 1657088 5639296 +1599875 5599875 1600872 5681248 1600928 5681176 1601256 5680984 +1601296 5681104 1663880 5646248 1663776 5646144 1601256 5680984 +1601296 5681104 1601464 5680984 1601256 5680984 1601240 5681040 +1601256 5680984 1601464 5680984 1663776 5646144 1657088 5639464 +1601256 5680984 1601296 5681104 1601464 5680984 1657088 5639464 +1601464 5680984 1601296 5681104 1663776 5646144 1657088 5639464 +1601256 5680984 1601464 5680984 1657088 5639464 1657056 5639384 +1601256 5680984 1601296 5681104 1601464 5680984 1657056 5639384 +1601256 5680984 1601464 5680984 1657056 5639384 1599875 5599875 +1601256 5680984 1601464 5680984 1599875 5599875 1600928 5681176 +1601256 5680984 1601296 5681104 1601464 5680984 1599875 5599875 +1601464 5680984 1657088 5639464 1657056 5639384 1599875 5599875 +1601464 5680984 1663776 5646144 1657088 5639464 1657056 5639384 +1663776 5646144 1663688 5645984 1657088 5639464 1601464 5680984 +1657056 5639384 1657088 5639296 1599875 5599875 1601464 5680984 +1663776 5646144 1601464 5680984 1601296 5681104 1663880 5646248 +1663776 5646144 1657088 5639464 1601464 5680984 1663880 5646248 +1601464 5680984 1601256 5680984 1601296 5681104 1663880 5646248 +1601296 5681104 1609472 5706664 1663880 5646248 1601464 5680984 +1601296 5681104 1609472 5706664 1601464 5680984 1601256 5680984 +1609472 5706664 1610680 5708312 1663880 5646248 1601464 5680984 +1601296 5681104 1609424 5706616 1609472 5706664 1601464 5680984 +1601296 5681104 1609424 5706616 1601464 5680984 1601256 5680984 +1609472 5706664 1663880 5646248 1601464 5680984 1609424 5706616 +1601296 5681104 1602224 5696056 1609424 5706616 1601464 5680984 +1602224 5696056 1602504 5696992 1609424 5706616 1601464 5680984 +1601296 5681104 1602224 5696056 1601464 5680984 1601256 5680984 +1609424 5706616 1609472 5706664 1601464 5680984 1602224 5696056 +1601296 5681104 1601160 5681616 1602224 5696056 1601464 5680984 +1601296 5681104 1601160 5681616 1601464 5680984 1601256 5680984 +1602224 5696056 1609424 5706616 1601464 5680984 1601160 5681616 +1601296 5681104 1601184 5681504 1601160 5681616 1601464 5680984 +1601296 5681104 1601184 5681504 1601464 5680984 1601256 5680984 +1601296 5681104 1601152 5681352 1601184 5681504 1601464 5680984 +1601160 5681616 1602224 5696056 1601464 5680984 1601184 5681504 +1663880 5646248 1663776 5646144 1601464 5680984 1609472 5706664 +1601160 5681616 1602200 5696008 1602224 5696056 1601464 5680984 +1602224 5696056 1609424 5706616 1601464 5680984 1602200 5696008 +1601160 5681616 1602200 5696008 1601464 5680984 1601184 5681504 +1601160 5681616 1602160 5695928 1602200 5696008 1601464 5680984 +1601160 5681616 1601128 5681664 1602160 5695928 1601464 5680984 +1601160 5681616 1602160 5695928 1601464 5680984 1601184 5681504 +1602200 5696008 1602224 5696056 1601464 5680984 1602160 5695928 +1663880 5646248 1601560 5681032 1609472 5706664 1610680 5708312 +1609472 5706664 1601560 5681032 1601464 5680984 1609424 5706616 +1601560 5681032 1663880 5646248 1601464 5680984 1609424 5706616 +1609472 5706664 1663880 5646248 1601560 5681032 1609424 5706616 +1601464 5680984 1602224 5696056 1609424 5706616 1601560 5681032 +1602224 5696056 1602504 5696992 1609424 5706616 1601560 5681032 +1601464 5680984 1602224 5696056 1601560 5681032 1663880 5646248 +1609424 5706616 1609472 5706664 1601560 5681032 1602224 5696056 +1601464 5680984 1602200 5696008 1602224 5696056 1601560 5681032 +1601464 5680984 1602200 5696008 1601560 5681032 1663880 5646248 +1602224 5696056 1609424 5706616 1601560 5681032 1602200 5696008 +1601464 5680984 1601560 5681032 1663880 5646248 1663776 5646144 +1601464 5680984 1601560 5681032 1663776 5646144 1657088 5639464 +1601464 5680984 1602200 5696008 1601560 5681032 1657088 5639464 +1601560 5681032 1609472 5706664 1663880 5646248 1663776 5646144 +1601464 5680984 1601560 5681032 1657088 5639464 1657056 5639384 +1601560 5681032 1663776 5646144 1657088 5639464 1657056 5639384 +1601464 5680984 1601560 5681032 1657056 5639384 1599875 5599875 +1601464 5680984 1602200 5696008 1601560 5681032 1657056 5639384 +1663776 5646144 1663688 5645984 1657088 5639464 1601560 5681032 +1601560 5681032 1663880 5646248 1663776 5646144 1657088 5639464 +1601464 5680984 1602160 5695928 1602200 5696008 1601560 5681032 +1601464 5680984 1602160 5695928 1601560 5681032 1657056 5639384 +1602200 5696008 1602224 5696056 1601560 5681032 1602160 5695928 +1601464 5680984 1601160 5681616 1602160 5695928 1601560 5681032 +1601160 5681616 1601128 5681664 1602160 5695928 1601560 5681032 +1601464 5680984 1601160 5681616 1601560 5681032 1657056 5639384 +1601464 5680984 1601184 5681504 1601160 5681616 1601560 5681032 +1601464 5680984 1601184 5681504 1601560 5681032 1657056 5639384 +1601464 5680984 1601296 5681104 1601184 5681504 1601560 5681032 +1601464 5680984 1601296 5681104 1601560 5681032 1657056 5639384 +1601464 5680984 1601256 5680984 1601296 5681104 1601560 5681032 +1601296 5681104 1601152 5681352 1601184 5681504 1601560 5681032 +1601184 5681504 1601160 5681616 1601560 5681032 1601296 5681104 +1601160 5681616 1602160 5695928 1601560 5681032 1601184 5681504 +1602160 5695928 1602200 5696008 1601560 5681032 1601160 5681616 +1601560 5681032 1601592 5681064 1663880 5646248 1663776 5646144 +1663880 5646248 1601592 5681064 1609472 5706664 1610680 5708312 +1601560 5681032 1609472 5706664 1601592 5681064 1663776 5646144 +1609472 5706664 1601592 5681064 1601560 5681032 1609424 5706616 +1609472 5706664 1663880 5646248 1601592 5681064 1609424 5706616 +1601592 5681064 1663776 5646144 1601560 5681032 1609424 5706616 +1601592 5681064 1609472 5706664 1663880 5646248 1663776 5646144 +1601560 5681032 1602224 5696056 1609424 5706616 1601592 5681064 +1602224 5696056 1602504 5696992 1609424 5706616 1601592 5681064 +1601560 5681032 1602224 5696056 1601592 5681064 1663776 5646144 +1609424 5706616 1609472 5706664 1601592 5681064 1602224 5696056 +1601560 5681032 1602200 5696008 1602224 5696056 1601592 5681064 +1601560 5681032 1602200 5696008 1601592 5681064 1663776 5646144 +1602224 5696056 1609424 5706616 1601592 5681064 1602200 5696008 +1601560 5681032 1602160 5695928 1602200 5696008 1601592 5681064 +1601560 5681032 1602160 5695928 1601592 5681064 1663776 5646144 +1602200 5696008 1602224 5696056 1601592 5681064 1602160 5695928 +1601560 5681032 1601592 5681064 1663776 5646144 1657088 5639464 +1601560 5681032 1601592 5681064 1657088 5639464 1657056 5639384 +1601592 5681064 1663880 5646248 1663776 5646144 1657088 5639464 +1601560 5681032 1602160 5695928 1601592 5681064 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1601592 5681064 +1601560 5681032 1601160 5681616 1602160 5695928 1601592 5681064 +1601160 5681616 1601128 5681664 1602160 5695928 1601592 5681064 +1601128 5681664 1601088 5681704 1602160 5695928 1601592 5681064 +1601560 5681032 1601160 5681616 1601592 5681064 1657088 5639464 +1602160 5695928 1602200 5696008 1601592 5681064 1601128 5681664 +1601560 5681032 1601184 5681504 1601160 5681616 1601592 5681064 +1601560 5681032 1601184 5681504 1601592 5681064 1657088 5639464 +1601560 5681032 1601296 5681104 1601184 5681504 1601592 5681064 +1601560 5681032 1601296 5681104 1601592 5681064 1657088 5639464 +1601296 5681104 1601152 5681352 1601184 5681504 1601592 5681064 +1601560 5681032 1601464 5680984 1601296 5681104 1601592 5681064 +1601184 5681504 1601160 5681616 1601592 5681064 1601296 5681104 +1601160 5681616 1601128 5681664 1601592 5681064 1601184 5681504 +1609472 5706664 1601624 5681136 1601592 5681064 1609424 5706616 +1601624 5681136 1663880 5646248 1601592 5681064 1609424 5706616 +1609472 5706664 1663880 5646248 1601624 5681136 1609424 5706616 +1663880 5646248 1601624 5681136 1609472 5706664 1610680 5708312 +1601592 5681064 1602224 5696056 1609424 5706616 1601624 5681136 +1601592 5681064 1602224 5696056 1601624 5681136 1663880 5646248 +1609424 5706616 1609472 5706664 1601624 5681136 1602224 5696056 +1602224 5696056 1602504 5696992 1609424 5706616 1601624 5681136 +1601592 5681064 1601624 5681136 1663880 5646248 1663776 5646144 +1601592 5681064 1602224 5696056 1601624 5681136 1663776 5646144 +1601624 5681136 1609472 5706664 1663880 5646248 1663776 5646144 +1601592 5681064 1601624 5681136 1663776 5646144 1657088 5639464 +1601592 5681064 1602224 5696056 1601624 5681136 1657088 5639464 +1601624 5681136 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1601624 5681136 +1601592 5681064 1602200 5696008 1602224 5696056 1601624 5681136 +1601592 5681064 1602200 5696008 1601624 5681136 1657088 5639464 +1602224 5696056 1609424 5706616 1601624 5681136 1602200 5696008 +1601592 5681064 1602160 5695928 1602200 5696008 1601624 5681136 +1601592 5681064 1602160 5695928 1601624 5681136 1657088 5639464 +1602200 5696008 1602224 5696056 1601624 5681136 1602160 5695928 +1601592 5681064 1601128 5681664 1602160 5695928 1601624 5681136 +1601592 5681064 1601128 5681664 1601624 5681136 1657088 5639464 +1601128 5681664 1601088 5681704 1602160 5695928 1601624 5681136 +1601592 5681064 1601160 5681616 1601128 5681664 1601624 5681136 +1601592 5681064 1601160 5681616 1601624 5681136 1657088 5639464 +1601128 5681664 1602160 5695928 1601624 5681136 1601160 5681616 +1602160 5695928 1602200 5696008 1601624 5681136 1601128 5681664 +1601592 5681064 1601624 5681136 1657088 5639464 1601560 5681032 +1601592 5681064 1601184 5681504 1601160 5681616 1601624 5681136 +1601592 5681064 1601184 5681504 1601624 5681136 1657088 5639464 +1601160 5681616 1601128 5681664 1601624 5681136 1601184 5681504 +1601592 5681064 1601296 5681104 1601184 5681504 1601624 5681136 +1601592 5681064 1601296 5681104 1601624 5681136 1657088 5639464 +1601296 5681104 1601152 5681352 1601184 5681504 1601624 5681136 +1601296 5681104 1601088 5681248 1601152 5681352 1601624 5681136 +1601592 5681064 1601560 5681032 1601296 5681104 1601624 5681136 +1601592 5681064 1601560 5681032 1601624 5681136 1657088 5639464 +1601560 5681032 1601464 5680984 1601296 5681104 1601624 5681136 +1601296 5681104 1601152 5681352 1601624 5681136 1601560 5681032 +1601184 5681504 1601160 5681616 1601624 5681136 1601152 5681352 +1602160 5695928 1601592 5681216 1601128 5681664 1601088 5681704 +1601128 5681664 1601592 5681216 1601624 5681136 1601160 5681616 +1601592 5681216 1602160 5695928 1601624 5681136 1601160 5681616 +1601624 5681136 1601184 5681504 1601160 5681616 1601592 5681216 +1601624 5681136 1601184 5681504 1601592 5681216 1602160 5695928 +1601128 5681664 1602160 5695928 1601592 5681216 1601160 5681616 +1601160 5681616 1601128 5681664 1601592 5681216 1601184 5681504 +1601624 5681136 1601592 5681216 1602160 5695928 1602200 5696008 +1601624 5681136 1601184 5681504 1601592 5681216 1602200 5696008 +1601592 5681216 1601128 5681664 1602160 5695928 1602200 5696008 +1601624 5681136 1601592 5681216 1602200 5696008 1602224 5696056 +1601624 5681136 1601184 5681504 1601592 5681216 1602224 5696056 +1601624 5681136 1601592 5681216 1602224 5696056 1609424 5706616 +1601592 5681216 1602160 5695928 1602200 5696008 1602224 5696056 +1601624 5681136 1601152 5681352 1601184 5681504 1601592 5681216 +1601624 5681136 1601152 5681352 1601592 5681216 1602224 5696056 +1601184 5681504 1601160 5681616 1601592 5681216 1601152 5681352 +1601624 5681136 1601296 5681104 1601152 5681352 1601592 5681216 +1601624 5681136 1601296 5681104 1601592 5681216 1602224 5696056 +1601296 5681104 1601088 5681248 1601152 5681352 1601592 5681216 +1601624 5681136 1601560 5681032 1601296 5681104 1601592 5681216 +1601624 5681136 1601560 5681032 1601592 5681216 1602224 5696056 +1601296 5681104 1601152 5681352 1601592 5681216 1601560 5681032 +1601624 5681136 1601592 5681064 1601560 5681032 1601592 5681216 +1601624 5681136 1601592 5681064 1601592 5681216 1602224 5696056 +1601560 5681032 1601464 5680984 1601296 5681104 1601592 5681216 +1601560 5681032 1601296 5681104 1601592 5681216 1601592 5681064 +1601152 5681352 1601184 5681504 1601592 5681216 1601296 5681104 +1601152 5681352 1601456 5681224 1601296 5681104 1601088 5681248 +1601296 5681104 1601456 5681224 1601592 5681216 1601560 5681032 +1601456 5681224 1601152 5681352 1601592 5681216 1601560 5681032 +1601296 5681104 1601456 5681224 1601560 5681032 1601464 5680984 +1601296 5681104 1601456 5681224 1601464 5680984 1601256 5680984 +1601456 5681224 1601592 5681216 1601560 5681032 1601464 5680984 +1601296 5681104 1601152 5681352 1601456 5681224 1601464 5680984 +1601592 5681216 1601592 5681064 1601560 5681032 1601456 5681224 +1601592 5681216 1601592 5681064 1601456 5681224 1601152 5681352 +1601560 5681032 1601464 5680984 1601456 5681224 1601592 5681064 +1601592 5681216 1601624 5681136 1601592 5681064 1601456 5681224 +1601592 5681216 1601624 5681136 1601456 5681224 1601152 5681352 +1601592 5681064 1601560 5681032 1601456 5681224 1601624 5681136 +1601592 5681216 1601456 5681224 1601152 5681352 1601184 5681504 +1601592 5681216 1601456 5681224 1601184 5681504 1601160 5681616 +1601592 5681216 1601624 5681136 1601456 5681224 1601184 5681504 +1601456 5681224 1601296 5681104 1601152 5681352 1601184 5681504 +1601456 5681224 1601360 5681200 1601152 5681352 1601184 5681504 +1601152 5681352 1601360 5681200 1601296 5681104 1601088 5681248 +1601360 5681200 1601456 5681224 1601296 5681104 1601088 5681248 +1601296 5681104 1601240 5681040 1601088 5681248 1601360 5681200 +1601456 5681224 1601296 5681104 1601360 5681200 1601184 5681504 +1601296 5681104 1601360 5681200 1601456 5681224 1601464 5680984 +1601296 5681104 1601360 5681200 1601464 5680984 1601256 5680984 +1601456 5681224 1601560 5681032 1601464 5680984 1601360 5681200 +1601296 5681104 1601088 5681248 1601360 5681200 1601464 5680984 +1601360 5681200 1601184 5681504 1601456 5681224 1601464 5680984 +1601360 5681200 1601088 5681248 1601152 5681352 1601184 5681504 +1601456 5681224 1601360 5681200 1601184 5681504 1601592 5681216 +1601360 5681200 1601312 5681152 1601088 5681248 1601152 5681352 +1601360 5681200 1601296 5681104 1601312 5681152 1601152 5681352 +1601296 5681104 1601312 5681152 1601360 5681200 1601464 5680984 +1601296 5681104 1601312 5681152 1601464 5680984 1601256 5680984 +1601296 5681104 1601088 5681248 1601312 5681152 1601464 5680984 +1601312 5681152 1601152 5681352 1601360 5681200 1601464 5680984 +1601312 5681152 1601296 5681104 1601088 5681248 1601152 5681352 +1601088 5681248 1601312 5681152 1601296 5681104 1601240 5681040 +1601360 5681200 1601456 5681224 1601464 5680984 1601312 5681152 +1601360 5681200 1601312 5681152 1601152 5681352 1601184 5681504 +1615632 5735416 1621088 5722784 1611528 5715552 1615584 5735320 +1663944 5646256 1621088 5722784 1615632 5735416 1743800 5687320 +1663944 5646256 1621088 5722784 1743800 5687320 1664040 5646192 +1611528 5715552 1615528 5735256 1615584 5735320 1621088 5722784 +1615584 5735320 1615632 5735416 1621088 5722784 1615528 5735256 +1611528 5715552 1611520 5715576 1615528 5735256 1621088 5722784 +1611520 5715576 1611456 5715680 1615528 5735256 1621088 5722784 +1611456 5715680 1615440 5735216 1615528 5735256 1621088 5722784 +1611456 5715680 1611424 5715704 1615440 5735216 1621088 5722784 +1611424 5715704 1611328 5715760 1615440 5735216 1621088 5722784 +1615440 5735216 1615528 5735256 1621088 5722784 1611328 5715760 +1611424 5715704 1611328 5715760 1621088 5722784 1611456 5715680 +1611328 5715760 1615408 5735224 1615440 5735216 1621088 5722784 +1611328 5715760 1615408 5735224 1621088 5722784 1611424 5715704 +1611328 5715760 1611240 5715760 1615408 5735224 1621088 5722784 +1615440 5735216 1615528 5735256 1621088 5722784 1615408 5735224 +1611456 5715680 1611424 5715704 1621088 5722784 1611520 5715576 +1611520 5715576 1611456 5715680 1621088 5722784 1611528 5715552 +1615528 5735256 1615584 5735320 1621088 5722784 1615440 5735216 +1611528 5715552 1621088 5722784 1663944 5646256 1610760 5708480 +1615632 5735416 1743888 5687504 1743800 5687320 1621088 5722784 +1743800 5687320 1663944 5646256 1621088 5722784 1743888 5687504 +1621088 5722784 1610760 5708480 1611528 5715552 1611520 5715576 +1663944 5646256 1610760 5708480 1621088 5722784 1743800 5687320 +1615632 5735416 1743888 5687504 1621088 5722784 1615584 5735320 +1611520 5715576 1611464 5715656 1611456 5715680 1621088 5722784 +1615632 5735416 1620224 5752472 1743888 5687504 1621088 5722784 +1615632 5735416 1620192 5752400 1620224 5752472 1621088 5722784 +1743888 5687504 1743800 5687320 1621088 5722784 1620224 5752472 +1620224 5752472 1751256 5699792 1743888 5687504 1621088 5722784 +1751256 5699792 1743976 5687584 1743888 5687504 1621088 5722784 +1620224 5752472 1760125 5760125 1751256 5699792 1621088 5722784 +1760125 5760125 1751376 5699848 1751256 5699792 1621088 5722784 +1620224 5752472 1620224 5752520 1760125 5760125 1621088 5722784 +1743888 5687504 1743800 5687320 1621088 5722784 1751256 5699792 +1751256 5699792 1743888 5687504 1621088 5722784 1760125 5760125 +1615632 5735416 1620192 5752400 1621088 5722784 1615584 5735320 +1615632 5735416 1615632 5735512 1620192 5752400 1621088 5722784 +1620192 5752400 1620224 5752472 1621088 5722784 1615632 5735512 +1615632 5735512 1617768 5747376 1620192 5752400 1621088 5722784 +1617768 5747376 1617848 5747624 1620192 5752400 1621088 5722784 +1620192 5752400 1620224 5752472 1621088 5722784 1617768 5747376 +1615632 5735512 1617712 5747256 1617768 5747376 1621088 5722784 +1615632 5735512 1617608 5747096 1617712 5747256 1621088 5722784 +1617768 5747376 1620192 5752400 1621088 5722784 1617712 5747256 +1615632 5735416 1615632 5735512 1621088 5722784 1615584 5735320 +1615632 5735512 1617712 5747256 1621088 5722784 1615632 5735416 +1620224 5752472 1760125 5760125 1621088 5722784 1620192 5752400 +1663944 5646256 1663880 5646248 1610760 5708480 1621088 5722784 +1610760 5708480 1611528 5715552 1621088 5722784 1663880 5646248 +1663944 5646256 1663880 5646248 1621088 5722784 1743800 5687320 +1663880 5646248 1610728 5708400 1610760 5708480 1621088 5722784 +1610760 5708480 1611528 5715552 1621088 5722784 1610728 5708400 +1663880 5646248 1610712 5708360 1610728 5708400 1621088 5722784 +1663880 5646248 1610680 5708312 1610712 5708360 1621088 5722784 +1610728 5708400 1610760 5708480 1621088 5722784 1610712 5708360 +1663880 5646248 1610712 5708360 1621088 5722784 1663944 5646256 +1611528 5715552 1621088 5722784 1610760 5708480 1610752 5708648 +1621088 5722784 1610728 5708400 1610760 5708480 1610752 5708648 +1611528 5715552 1611520 5715576 1621088 5722784 1610752 5708648 +1611528 5715552 1621088 5722784 1610752 5708648 1611512 5715528 +1760125 5760125 1621280 5723224 1620224 5752472 1620224 5752520 +1621088 5722784 1621280 5723224 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1621280 5723224 +1621280 5723224 1620224 5752472 1760125 5760125 1751256 5699792 +1621088 5722784 1621280 5723224 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1621280 5723224 +1621280 5723224 1760125 5760125 1751256 5699792 1743888 5687504 +1621088 5722784 1621280 5723224 1743888 5687504 1743800 5687320 +1621088 5722784 1621280 5723224 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1621280 5723224 +1621280 5723224 1743888 5687504 1743800 5687320 1663944 5646256 +1621280 5723224 1751256 5699792 1743888 5687504 1743800 5687320 +1621088 5722784 1621280 5723224 1663944 5646256 1663880 5646248 +1620224 5752472 1621280 5723224 1621088 5722784 1620192 5752400 +1621088 5722784 1617768 5747376 1620192 5752400 1621280 5723224 +1617768 5747376 1617848 5747624 1620192 5752400 1621280 5723224 +1621088 5722784 1617712 5747256 1617768 5747376 1621280 5723224 +1617768 5747376 1620192 5752400 1621280 5723224 1617712 5747256 +1621088 5722784 1615632 5735512 1617712 5747256 1621280 5723224 +1615632 5735512 1617608 5747096 1617712 5747256 1621280 5723224 +1617712 5747256 1617768 5747376 1621280 5723224 1615632 5735512 +1620224 5752472 1760125 5760125 1621280 5723224 1620192 5752400 +1621088 5722784 1615632 5735416 1615632 5735512 1621280 5723224 +1615632 5735512 1617712 5747256 1621280 5723224 1615632 5735416 +1621088 5722784 1615584 5735320 1615632 5735416 1621280 5723224 +1621088 5722784 1615528 5735256 1615584 5735320 1621280 5723224 +1621088 5722784 1615440 5735216 1615528 5735256 1621280 5723224 +1615528 5735256 1615584 5735320 1621280 5723224 1615440 5735216 +1621088 5722784 1615408 5735224 1615440 5735216 1621280 5723224 +1621088 5722784 1611328 5715760 1615408 5735224 1621280 5723224 +1615440 5735216 1615528 5735256 1621280 5723224 1615408 5735224 +1615584 5735320 1615632 5735416 1621280 5723224 1615528 5735256 +1615632 5735416 1615632 5735512 1621280 5723224 1615584 5735320 +1620192 5752400 1620224 5752472 1621280 5723224 1617768 5747376 +1621088 5722784 1615408 5735224 1621280 5723224 1663944 5646256 +1760125 5760125 1621280 5723304 1620224 5752472 1620224 5752520 +1621280 5723224 1621280 5723304 1760125 5760125 1751256 5699792 +1621280 5723304 1620224 5752472 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1621280 5723304 +1621280 5723224 1621280 5723304 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1621280 5723304 +1621280 5723304 1760125 5760125 1751256 5699792 1743888 5687504 +1621280 5723224 1621280 5723304 1743888 5687504 1743800 5687320 +1621280 5723224 1620224 5752472 1621280 5723304 1743888 5687504 +1620224 5752472 1621280 5723304 1621280 5723224 1620192 5752400 +1620224 5752472 1760125 5760125 1621280 5723304 1620192 5752400 +1621280 5723304 1743888 5687504 1621280 5723224 1620192 5752400 +1621280 5723224 1617768 5747376 1620192 5752400 1621280 5723304 +1617768 5747376 1617848 5747624 1620192 5752400 1621280 5723304 +1621280 5723224 1617712 5747256 1617768 5747376 1621280 5723304 +1621280 5723224 1615632 5735512 1617712 5747256 1621280 5723304 +1615632 5735512 1617608 5747096 1617712 5747256 1621280 5723304 +1617712 5747256 1617768 5747376 1621280 5723304 1615632 5735512 +1621280 5723224 1615632 5735416 1615632 5735512 1621280 5723304 +1615632 5735512 1617712 5747256 1621280 5723304 1615632 5735416 +1621280 5723224 1615632 5735416 1621280 5723304 1743888 5687504 +1620192 5752400 1620224 5752472 1621280 5723304 1617768 5747376 +1621280 5723224 1615584 5735320 1615632 5735416 1621280 5723304 +1615632 5735416 1615632 5735512 1621280 5723304 1615584 5735320 +1621280 5723224 1615584 5735320 1621280 5723304 1743888 5687504 +1621280 5723224 1615528 5735256 1615584 5735320 1621280 5723304 +1621280 5723224 1615440 5735216 1615528 5735256 1621280 5723304 +1621280 5723224 1615408 5735224 1615440 5735216 1621280 5723304 +1615440 5735216 1615528 5735256 1621280 5723304 1615408 5735224 +1621280 5723224 1621088 5722784 1615408 5735224 1621280 5723304 +1621088 5722784 1611328 5715760 1615408 5735224 1621280 5723304 +1615408 5735224 1615440 5735216 1621280 5723304 1621088 5722784 +1621280 5723224 1621088 5722784 1621280 5723304 1743888 5687504 +1615528 5735256 1615584 5735320 1621280 5723304 1615440 5735216 +1615584 5735320 1615632 5735416 1621280 5723304 1615528 5735256 +1617768 5747376 1620192 5752400 1621280 5723304 1617712 5747256 +1621088 5722784 1621208 5723336 1621280 5723304 1621280 5723224 +1621208 5723336 1615408 5735224 1621280 5723304 1621280 5723224 +1615408 5735224 1621208 5723336 1621088 5722784 1611328 5715760 +1621088 5722784 1611424 5715704 1611328 5715760 1621208 5723336 +1615408 5735224 1621208 5723336 1611328 5715760 1611240 5715760 +1621280 5723304 1621208 5723336 1615408 5735224 1615440 5735216 +1621280 5723304 1621280 5723224 1621208 5723336 1615440 5735216 +1621280 5723304 1621208 5723336 1615440 5735216 1615528 5735256 +1621280 5723304 1621280 5723224 1621208 5723336 1615528 5735256 +1621208 5723336 1615408 5735224 1615440 5735216 1615528 5735256 +1615408 5735224 1615440 5735216 1621208 5723336 1611328 5715760 +1621088 5722784 1611328 5715760 1621208 5723336 1621280 5723224 +1621280 5723304 1621208 5723336 1615528 5735256 1615584 5735320 +1621280 5723304 1621280 5723224 1621208 5723336 1615584 5735320 +1621208 5723336 1615440 5735216 1615528 5735256 1615584 5735320 +1621280 5723304 1621208 5723336 1615584 5735320 1615632 5735416 +1621280 5723304 1621280 5723224 1621208 5723336 1615632 5735416 +1621280 5723304 1621208 5723336 1615632 5735416 1615632 5735512 +1621208 5723336 1615528 5735256 1615584 5735320 1615632 5735416 +1615408 5735224 1621144 5723336 1611328 5715760 1611240 5715760 +1611328 5715760 1621144 5723336 1621208 5723336 1621088 5722784 +1611328 5715760 1621144 5723336 1621088 5722784 1611424 5715704 +1621208 5723336 1621144 5723336 1615408 5735224 1615440 5735216 +1621208 5723336 1621144 5723336 1615440 5735216 1615528 5735256 +1621208 5723336 1621144 5723336 1615528 5735256 1615584 5735320 +1621144 5723336 1615440 5735216 1615528 5735256 1615584 5735320 +1621144 5723336 1615408 5735224 1615440 5735216 1615528 5735256 +1621144 5723336 1615584 5735320 1621208 5723336 1621088 5722784 +1621208 5723336 1621280 5723224 1621088 5722784 1621144 5723336 +1621208 5723336 1621280 5723304 1621280 5723224 1621144 5723336 +1621088 5722784 1611328 5715760 1621144 5723336 1621280 5723224 +1621208 5723336 1621280 5723224 1621144 5723336 1615584 5735320 +1621144 5723336 1611328 5715760 1615408 5735224 1615440 5735216 +1611328 5715760 1615408 5735224 1621144 5723336 1621088 5722784 +1621208 5723336 1621144 5723336 1615584 5735320 1615632 5735416 +1611328 5715760 1620800 5723008 1621088 5722784 1611424 5715704 +1621088 5722784 1611456 5715680 1611424 5715704 1620800 5723008 +1611424 5715704 1611328 5715760 1620800 5723008 1611456 5715680 +1621088 5722784 1620800 5723008 1621144 5723336 1621280 5723224 +1621088 5722784 1611520 5715576 1611456 5715680 1620800 5723008 +1611456 5715680 1611424 5715704 1620800 5723008 1611520 5715576 +1621088 5722784 1611528 5715552 1611520 5715576 1620800 5723008 +1621144 5723336 1621208 5723336 1621280 5723224 1620800 5723008 +1620800 5723008 1611328 5715760 1621144 5723336 1621280 5723224 +1621144 5723336 1620800 5723008 1611328 5715760 1615408 5735224 +1611328 5715760 1611240 5715760 1615408 5735224 1620800 5723008 +1621144 5723336 1620800 5723008 1615408 5735224 1615440 5735216 +1621144 5723336 1620800 5723008 1615440 5735216 1615528 5735256 +1621144 5723336 1621280 5723224 1620800 5723008 1615440 5735216 +1615408 5735224 1615440 5735216 1620800 5723008 1611240 5715760 +1611240 5715760 1615352 5735280 1615408 5735224 1620800 5723008 +1611520 5715576 1611464 5715656 1611456 5715680 1620800 5723008 +1611328 5715760 1611240 5715760 1620800 5723008 1611424 5715704 +1620800 5723008 1621280 5723224 1621088 5722784 1611520 5715576 +1620800 5723008 1620600 5722784 1611520 5715576 1611456 5715680 +1620800 5723008 1620600 5722784 1611456 5715680 1611424 5715704 +1620800 5723008 1620600 5722784 1611424 5715704 1611328 5715760 +1620600 5722784 1611456 5715680 1611424 5715704 1611328 5715760 +1620600 5722784 1621088 5722784 1611520 5715576 1611456 5715680 +1620600 5722784 1611520 5715576 1611456 5715680 1611424 5715704 +1611520 5715576 1620600 5722784 1621088 5722784 1611528 5715552 +1611520 5715576 1611456 5715680 1620600 5722784 1611528 5715552 +1620600 5722784 1620800 5723008 1621088 5722784 1611528 5715552 +1621088 5722784 1610752 5708648 1611528 5715552 1620600 5722784 +1611520 5715576 1611464 5715656 1611456 5715680 1620600 5722784 +1620800 5723008 1620600 5722784 1611328 5715760 1611240 5715760 +1620600 5722784 1611424 5715704 1611328 5715760 1611240 5715760 +1620800 5723008 1620600 5722784 1611240 5715760 1615408 5735224 +1620800 5723008 1620600 5722784 1615408 5735224 1615440 5735216 +1620600 5722784 1611240 5715760 1615408 5735224 1615440 5735216 +1620800 5723008 1620600 5722784 1615440 5735216 1621144 5723336 +1611240 5715760 1615352 5735280 1615408 5735224 1620600 5722784 +1620600 5722784 1611328 5715760 1611240 5715760 1615408 5735224 +1620800 5723008 1621088 5722784 1620600 5722784 1615440 5735216 +1621088 5722784 1620600 5722784 1620800 5723008 1621280 5723224 +1621088 5722784 1620584 5722728 1620600 5722784 1620800 5723008 +1620600 5722784 1620584 5722728 1611528 5715552 1611520 5715576 +1620584 5722728 1621088 5722784 1611528 5715552 1611520 5715576 +1620600 5722784 1620584 5722728 1611520 5715576 1611456 5715680 +1620600 5722784 1621088 5722784 1620584 5722728 1611456 5715680 +1620600 5722784 1620584 5722728 1611456 5715680 1611424 5715704 +1620600 5722784 1620584 5722728 1611424 5715704 1611328 5715760 +1620600 5722784 1620584 5722728 1611328 5715760 1611240 5715760 +1620584 5722728 1611520 5715576 1611456 5715680 1611424 5715704 +1620600 5722784 1621088 5722784 1620584 5722728 1611328 5715760 +1620584 5722728 1611456 5715680 1611424 5715704 1611328 5715760 +1620584 5722728 1611528 5715552 1611520 5715576 1611456 5715680 +1611528 5715552 1620584 5722728 1621088 5722784 1610752 5708648 +1611520 5715576 1611464 5715656 1611456 5715680 1620584 5722728 +1620584 5722728 1620600 5722648 1611528 5715552 1611520 5715576 +1620584 5722728 1621088 5722784 1620600 5722648 1611520 5715576 +1621088 5722784 1620600 5722648 1620584 5722728 1620600 5722784 +1620600 5722648 1611520 5715576 1620584 5722728 1620600 5722784 +1621088 5722784 1620600 5722648 1620600 5722784 1620800 5723008 +1620600 5722648 1621088 5722784 1611528 5715552 1611520 5715576 +1621088 5722784 1611528 5715552 1620600 5722648 1620600 5722784 +1620584 5722728 1620600 5722648 1611520 5715576 1611456 5715680 +1620600 5722648 1611528 5715552 1611520 5715576 1611456 5715680 +1620584 5722728 1620600 5722784 1620600 5722648 1611456 5715680 +1620584 5722728 1620600 5722648 1611456 5715680 1611424 5715704 +1620584 5722728 1620600 5722784 1620600 5722648 1611424 5715704 +1620584 5722728 1620600 5722648 1611424 5715704 1611328 5715760 +1620584 5722728 1620600 5722648 1611328 5715760 1620600 5722784 +1620584 5722728 1620600 5722784 1620600 5722648 1611328 5715760 +1620600 5722648 1611456 5715680 1611424 5715704 1611328 5715760 +1620600 5722648 1611520 5715576 1611456 5715680 1611424 5715704 +1611528 5715552 1620600 5722648 1621088 5722784 1610752 5708648 +1611528 5715552 1611520 5715576 1620600 5722648 1610752 5708648 +1620600 5722648 1620600 5722784 1621088 5722784 1610752 5708648 +1611520 5715576 1611464 5715656 1611456 5715680 1620600 5722648 +1611528 5715552 1620600 5722648 1610752 5708648 1611512 5715528 +1621088 5722784 1610760 5708480 1610752 5708648 1620600 5722648 +1621088 5722784 1620656 5722632 1620600 5722648 1620600 5722784 +1620600 5722648 1620584 5722728 1620600 5722784 1620656 5722632 +1621088 5722784 1620656 5722632 1620600 5722784 1620800 5723008 +1620656 5722632 1610752 5708648 1620600 5722648 1620584 5722728 +1620600 5722784 1620800 5723008 1620656 5722632 1620584 5722728 +1621088 5722784 1610752 5708648 1620656 5722632 1620800 5723008 +1620600 5722648 1620656 5722632 1610752 5708648 1611528 5715552 +1620600 5722648 1620656 5722632 1611528 5715552 1611520 5715576 +1620600 5722648 1620584 5722728 1620656 5722632 1611528 5715552 +1620656 5722632 1621088 5722784 1610752 5708648 1611528 5715552 +1610752 5708648 1611512 5715528 1611528 5715552 1620656 5722632 +1610752 5708648 1620656 5722632 1621088 5722784 1610760 5708480 +1621088 5722784 1610728 5708400 1610760 5708480 1620656 5722632 +1610752 5708648 1611528 5715552 1620656 5722632 1610760 5708480 +1620656 5722632 1620800 5723008 1621088 5722784 1610760 5708480 +1621088 5722784 1620656 5722632 1620800 5723008 1621280 5723224 +1610760 5708480 1620792 5722624 1621088 5722784 1610728 5708400 +1621088 5722784 1620792 5722624 1620656 5722632 1620800 5723008 +1620656 5722632 1620600 5722784 1620800 5723008 1620792 5722624 +1620656 5722632 1620584 5722728 1620600 5722784 1620792 5722624 +1620792 5722624 1610760 5708480 1620656 5722632 1620600 5722784 +1620800 5723008 1621088 5722784 1620792 5722624 1620600 5722784 +1621088 5722784 1610760 5708480 1620792 5722624 1620800 5723008 +1620656 5722632 1620792 5722624 1610760 5708480 1610752 5708648 +1620656 5722632 1620792 5722624 1610752 5708648 1611528 5715552 +1620656 5722632 1620600 5722784 1620792 5722624 1611528 5715552 +1620792 5722624 1621088 5722784 1610760 5708480 1610752 5708648 +1620656 5722632 1620792 5722624 1611528 5715552 1620600 5722648 +1610752 5708648 1611512 5715528 1611528 5715552 1620792 5722624 +1620792 5722624 1610760 5708480 1610752 5708648 1611528 5715552 +1621088 5722784 1620792 5722624 1620800 5723008 1621280 5723224 +1610760 5708480 1620872 5722632 1621088 5722784 1610728 5708400 +1620792 5722624 1620872 5722632 1610760 5708480 1610752 5708648 +1620872 5722632 1621088 5722784 1610760 5708480 1610752 5708648 +1620792 5722624 1621088 5722784 1620872 5722632 1610752 5708648 +1621088 5722784 1620872 5722632 1620792 5722624 1620800 5723008 +1621088 5722784 1610760 5708480 1620872 5722632 1620800 5723008 +1620792 5722624 1620600 5722784 1620800 5723008 1620872 5722632 +1620872 5722632 1610752 5708648 1620792 5722624 1620800 5723008 +1620792 5722624 1620872 5722632 1610752 5708648 1611528 5715552 +1620792 5722624 1620872 5722632 1611528 5715552 1620656 5722632 +1620872 5722632 1610760 5708480 1610752 5708648 1611528 5715552 +1620792 5722624 1620800 5723008 1620872 5722632 1611528 5715552 +1610752 5708648 1611512 5715528 1611528 5715552 1620872 5722632 +1621088 5722784 1620872 5722632 1620800 5723008 1621280 5723224 +1620872 5722632 1620992 5722672 1610760 5708480 1610752 5708648 +1621088 5722784 1620992 5722672 1620872 5722632 1620800 5723008 +1620992 5722672 1610760 5708480 1620872 5722632 1620800 5723008 +1610760 5708480 1620992 5722672 1621088 5722784 1610728 5708400 +1620872 5722632 1620792 5722624 1620800 5723008 1620992 5722672 +1621088 5722784 1610712 5708360 1610728 5708400 1620992 5722672 +1610728 5708400 1610760 5708480 1620992 5722672 1610712 5708360 +1621088 5722784 1663880 5646248 1610712 5708360 1620992 5722672 +1663880 5646248 1610680 5708312 1610712 5708360 1620992 5722672 +1610712 5708360 1610728 5708400 1620992 5722672 1663880 5646248 +1621088 5722784 1663944 5646256 1663880 5646248 1620992 5722672 +1610760 5708480 1620872 5722632 1620992 5722672 1610728 5708400 +1621088 5722784 1663880 5646248 1620992 5722672 1620800 5723008 +1621088 5722784 1620992 5722672 1620800 5723008 1621280 5723224 +1620992 5722672 1621040 5722712 1663880 5646248 1610712 5708360 +1663880 5646248 1610680 5708312 1610712 5708360 1621040 5722712 +1621040 5722712 1621088 5722784 1663880 5646248 1610712 5708360 +1620992 5722672 1621040 5722712 1610712 5708360 1610728 5708400 +1620992 5722672 1621040 5722712 1610728 5708400 1610760 5708480 +1621040 5722712 1663880 5646248 1610712 5708360 1610728 5708400 +1621040 5722712 1610712 5708360 1610728 5708400 1610760 5708480 +1663880 5646248 1621040 5722712 1621088 5722784 1663944 5646256 +1663880 5646248 1610712 5708360 1621040 5722712 1663944 5646256 +1621040 5722712 1620992 5722672 1621088 5722784 1663944 5646256 +1621088 5722784 1621280 5723224 1663944 5646256 1621040 5722712 +1620992 5722672 1621040 5722712 1610760 5708480 1620872 5722632 +1620992 5722672 1621088 5722784 1621040 5722712 1610760 5708480 +1621088 5722784 1621040 5722712 1620992 5722672 1620800 5723008 +1620992 5722672 1620872 5722632 1620800 5723008 1621040 5722712 +1621088 5722784 1663944 5646256 1621040 5722712 1620800 5723008 +1621040 5722712 1610760 5708480 1620992 5722672 1620800 5723008 +1621088 5722784 1621040 5722712 1620800 5723008 1621280 5723224 +1610712 5708360 1614512 5707600 1663880 5646248 1610680 5708312 +1663880 5646248 1609472 5706664 1610680 5708312 1614512 5707600 +1610680 5708312 1610712 5708360 1614512 5707600 1609472 5706664 +1609472 5706664 1610640 5708296 1610680 5708312 1614512 5707600 +1610712 5708360 1621040 5722712 1614512 5707600 1610680 5708312 +1614512 5707600 1621040 5722712 1663880 5646248 1609472 5706664 +1663880 5646248 1601624 5681136 1609472 5706664 1614512 5707600 +1663880 5646248 1663776 5646144 1601624 5681136 1614512 5707600 +1609472 5706664 1610680 5708312 1614512 5707600 1601624 5681136 +1601624 5681136 1609424 5706616 1609472 5706664 1614512 5707600 +1601624 5681136 1602224 5696056 1609424 5706616 1614512 5707600 +1602224 5696056 1602504 5696992 1609424 5706616 1614512 5707600 +1602224 5696056 1602504 5696992 1614512 5707600 1601624 5681136 +1609472 5706664 1610680 5708312 1614512 5707600 1609424 5706616 +1609424 5706616 1609472 5706664 1614512 5707600 1602504 5696992 +1663880 5646248 1601624 5681136 1614512 5707600 1621040 5722712 +1601624 5681136 1602224 5696056 1614512 5707600 1663880 5646248 +1601624 5681136 1601592 5681216 1602224 5696056 1614512 5707600 +1602504 5696992 1604104 5700768 1609424 5706616 1614512 5707600 +1602504 5696992 1604104 5700768 1614512 5707600 1602224 5696056 +1609424 5706616 1609472 5706664 1614512 5707600 1604104 5700768 +1604104 5700768 1604152 5700872 1609424 5706616 1614512 5707600 +1609424 5706616 1609472 5706664 1614512 5707600 1604152 5700872 +1604152 5700872 1604160 5700992 1609424 5706616 1614512 5707600 +1604104 5700768 1604152 5700872 1614512 5707600 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1614512 5707600 +1663880 5646248 1614512 5707600 1621040 5722712 1663944 5646256 +1663880 5646248 1601624 5681136 1614512 5707600 1663944 5646256 +1614512 5707600 1610712 5708360 1621040 5722712 1663944 5646256 +1602504 5696992 1604056 5700696 1604104 5700768 1614512 5707600 +1621040 5722712 1614512 5707600 1610712 5708360 1610728 5708400 +1614512 5707600 1610680 5708312 1610712 5708360 1610728 5708400 +1621040 5722712 1663944 5646256 1614512 5707600 1610728 5708400 +1621040 5722712 1614512 5707600 1610728 5708400 1610760 5708480 +1621040 5722712 1614512 5707600 1610760 5708480 1620992 5722672 +1621040 5722712 1663944 5646256 1614512 5707600 1620992 5722672 +1614512 5707600 1610712 5708360 1610728 5708400 1610760 5708480 +1614512 5707600 1610728 5708400 1610760 5708480 1620992 5722672 +1621040 5722712 1621088 5722784 1663944 5646256 1614512 5707600 +1663944 5646256 1663880 5646248 1614512 5707600 1621088 5722784 +1621040 5722712 1621088 5722784 1614512 5707600 1620992 5722672 +1621088 5722784 1621280 5723224 1663944 5646256 1614512 5707600 +1610760 5708480 1620872 5722632 1620992 5722672 1614512 5707600 +1610760 5708480 1610752 5708648 1620872 5722632 1614512 5707600 +1620992 5722672 1621040 5722712 1614512 5707600 1620872 5722632 +1610752 5708648 1611528 5715552 1620872 5722632 1614512 5707600 +1610752 5708648 1611528 5715552 1614512 5707600 1610760 5708480 +1610760 5708480 1610752 5708648 1614512 5707600 1610728 5708400 +1610752 5708648 1611512 5715528 1611528 5715552 1614512 5707600 +1610752 5708648 1611512 5715528 1614512 5707600 1610760 5708480 +1611528 5715552 1620872 5722632 1614512 5707600 1611512 5715528 +1610752 5708648 1611464 5715504 1611512 5715528 1614512 5707600 +1611528 5715552 1620792 5722624 1620872 5722632 1614512 5707600 +1611528 5715552 1620656 5722632 1620792 5722624 1614512 5707600 +1611528 5715552 1620656 5722632 1614512 5707600 1611512 5715528 +1611528 5715552 1620600 5722648 1620656 5722632 1614512 5707600 +1620792 5722624 1620872 5722632 1614512 5707600 1620656 5722632 +1620872 5722632 1620992 5722672 1614512 5707600 1620792 5722624 +1614512 5707600 1614576 5707608 1663944 5646256 1663880 5646248 +1614576 5707608 1621088 5722784 1663944 5646256 1663880 5646248 +1614512 5707600 1621088 5722784 1614576 5707608 1663880 5646248 +1614512 5707600 1614576 5707608 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1614576 5707608 +1614512 5707600 1621088 5722784 1614576 5707608 1601624 5681136 +1614512 5707600 1614576 5707608 1601624 5681136 1602224 5696056 +1614512 5707600 1614576 5707608 1602224 5696056 1602504 5696992 +1614512 5707600 1614576 5707608 1602504 5696992 1604104 5700768 +1614576 5707608 1602224 5696056 1602504 5696992 1604104 5700768 +1614512 5707600 1621088 5722784 1614576 5707608 1604104 5700768 +1614576 5707608 1663880 5646248 1601624 5681136 1602224 5696056 +1614576 5707608 1601624 5681136 1602224 5696056 1602504 5696992 +1601624 5681136 1601592 5681216 1602224 5696056 1614576 5707608 +1614512 5707600 1614576 5707608 1604104 5700768 1604152 5700872 +1602224 5696056 1602224 5696096 1602504 5696992 1614576 5707608 +1614576 5707608 1663944 5646256 1663880 5646248 1601624 5681136 +1663944 5646256 1614576 5707608 1621088 5722784 1621280 5723224 +1602504 5696992 1604056 5700696 1604104 5700768 1614576 5707608 +1621088 5722784 1614576 5707608 1614512 5707600 1621040 5722712 +1621088 5722784 1663944 5646256 1614576 5707608 1621040 5722712 +1614576 5707608 1604104 5700768 1614512 5707600 1621040 5722712 +1614512 5707600 1620992 5722672 1621040 5722712 1614576 5707608 +1614512 5707600 1620992 5722672 1614576 5707608 1604104 5700768 +1614512 5707600 1620872 5722632 1620992 5722672 1614576 5707608 +1614512 5707600 1620872 5722632 1614576 5707608 1604104 5700768 +1620992 5722672 1621040 5722712 1614576 5707608 1620872 5722632 +1621040 5722712 1621088 5722784 1614576 5707608 1620992 5722672 +1614512 5707600 1620792 5722624 1620872 5722632 1614576 5707608 +1614512 5707600 1620792 5722624 1614576 5707608 1604104 5700768 +1620872 5722632 1620992 5722672 1614576 5707608 1620792 5722624 +1614512 5707600 1620656 5722632 1620792 5722624 1614576 5707608 +1614512 5707600 1620656 5722632 1614576 5707608 1604104 5700768 +1614512 5707600 1611528 5715552 1620656 5722632 1614576 5707608 +1614512 5707600 1611528 5715552 1614576 5707608 1604104 5700768 +1614512 5707600 1611512 5715528 1611528 5715552 1614576 5707608 +1614512 5707600 1611512 5715528 1614576 5707608 1604104 5700768 +1611528 5715552 1620656 5722632 1614576 5707608 1611512 5715528 +1611528 5715552 1620600 5722648 1620656 5722632 1614576 5707608 +1614512 5707600 1610752 5708648 1611512 5715528 1614576 5707608 +1620656 5722632 1620792 5722624 1614576 5707608 1611528 5715552 +1620792 5722624 1620872 5722632 1614576 5707608 1620656 5722632 +1614576 5707608 1614648 5707656 1663944 5646256 1663880 5646248 +1614576 5707608 1621088 5722784 1614648 5707656 1663880 5646248 +1621088 5722784 1614648 5707656 1614576 5707608 1621040 5722712 +1614648 5707656 1663880 5646248 1614576 5707608 1621040 5722712 +1614648 5707656 1621088 5722784 1663944 5646256 1663880 5646248 +1621088 5722784 1663944 5646256 1614648 5707656 1621040 5722712 +1614576 5707608 1614648 5707656 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1614648 5707656 +1614648 5707656 1663944 5646256 1663880 5646248 1601624 5681136 +1614576 5707608 1621040 5722712 1614648 5707656 1601624 5681136 +1614576 5707608 1614648 5707656 1601624 5681136 1602224 5696056 +1663944 5646256 1614648 5707656 1621088 5722784 1621280 5723224 +1614576 5707608 1620992 5722672 1621040 5722712 1614648 5707656 +1614576 5707608 1620992 5722672 1614648 5707656 1601624 5681136 +1621040 5722712 1621088 5722784 1614648 5707656 1620992 5722672 +1614576 5707608 1620872 5722632 1620992 5722672 1614648 5707656 +1614576 5707608 1620872 5722632 1614648 5707656 1601624 5681136 +1614576 5707608 1620792 5722624 1620872 5722632 1614648 5707656 +1614576 5707608 1620792 5722624 1614648 5707656 1601624 5681136 +1620872 5722632 1620992 5722672 1614648 5707656 1620792 5722624 +1620992 5722672 1621040 5722712 1614648 5707656 1620872 5722632 +1614576 5707608 1620656 5722632 1620792 5722624 1614648 5707656 +1614576 5707608 1620656 5722632 1614648 5707656 1601624 5681136 +1620792 5722624 1620872 5722632 1614648 5707656 1620656 5722632 +1614576 5707608 1611528 5715552 1620656 5722632 1614648 5707656 +1614576 5707608 1611528 5715552 1614648 5707656 1601624 5681136 +1614576 5707608 1611512 5715528 1611528 5715552 1614648 5707656 +1614576 5707608 1611512 5715528 1614648 5707656 1601624 5681136 +1614576 5707608 1614512 5707600 1611512 5715528 1614648 5707656 +1614576 5707608 1614512 5707600 1614648 5707656 1601624 5681136 +1611512 5715528 1611528 5715552 1614648 5707656 1614512 5707600 +1611528 5715552 1620600 5722648 1620656 5722632 1614648 5707656 +1614512 5707600 1610752 5708648 1611512 5715528 1614648 5707656 +1614512 5707600 1610760 5708480 1610752 5708648 1614648 5707656 +1611512 5715528 1611528 5715552 1614648 5707656 1610752 5708648 +1614512 5707600 1610752 5708648 1614648 5707656 1614576 5707608 +1610752 5708648 1611464 5715504 1611512 5715528 1614648 5707656 +1611528 5715552 1620656 5722632 1614648 5707656 1611512 5715528 +1620656 5722632 1620792 5722624 1614648 5707656 1611528 5715552 +1614648 5707656 1614680 5707680 1663944 5646256 1663880 5646248 +1614648 5707656 1614680 5707680 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1614680 5707680 +1614680 5707680 1663944 5646256 1663880 5646248 1601624 5681136 +1614648 5707656 1621088 5722784 1614680 5707680 1601624 5681136 +1621088 5722784 1614680 5707680 1614648 5707656 1621040 5722712 +1614648 5707656 1620992 5722672 1621040 5722712 1614680 5707680 +1614680 5707680 1601624 5681136 1614648 5707656 1620992 5722672 +1621040 5722712 1621088 5722784 1614680 5707680 1620992 5722672 +1614648 5707656 1614680 5707680 1601624 5681136 1614576 5707608 +1663944 5646256 1614680 5707680 1621088 5722784 1621280 5723224 +1614648 5707656 1620872 5722632 1620992 5722672 1614680 5707680 +1620992 5722672 1621040 5722712 1614680 5707680 1620872 5722632 +1614648 5707656 1620872 5722632 1614680 5707680 1601624 5681136 +1614648 5707656 1620792 5722624 1620872 5722632 1614680 5707680 +1614648 5707656 1620792 5722624 1614680 5707680 1601624 5681136 +1614648 5707656 1620656 5722632 1620792 5722624 1614680 5707680 +1614648 5707656 1620656 5722632 1614680 5707680 1601624 5681136 +1620792 5722624 1620872 5722632 1614680 5707680 1620656 5722632 +1620872 5722632 1620992 5722672 1614680 5707680 1620792 5722624 +1614680 5707680 1621088 5722784 1663944 5646256 1663880 5646248 +1621088 5722784 1663944 5646256 1614680 5707680 1621040 5722712 +1614648 5707656 1611528 5715552 1620656 5722632 1614680 5707680 +1614648 5707656 1611528 5715552 1614680 5707680 1601624 5681136 +1620656 5722632 1620792 5722624 1614680 5707680 1611528 5715552 +1611528 5715552 1620600 5722648 1620656 5722632 1614680 5707680 +1614648 5707656 1611512 5715528 1611528 5715552 1614680 5707680 +1614648 5707656 1611512 5715528 1614680 5707680 1601624 5681136 +1614648 5707656 1610752 5708648 1611512 5715528 1614680 5707680 +1614648 5707656 1610752 5708648 1614680 5707680 1601624 5681136 +1610752 5708648 1611464 5715504 1611512 5715528 1614680 5707680 +1614648 5707656 1614512 5707600 1610752 5708648 1614680 5707680 +1614648 5707656 1614512 5707600 1614680 5707680 1601624 5681136 +1614512 5707600 1610760 5708480 1610752 5708648 1614680 5707680 +1610752 5708648 1611512 5715528 1614680 5707680 1614512 5707600 +1614648 5707656 1614576 5707608 1614512 5707600 1614680 5707680 +1611512 5715528 1611528 5715552 1614680 5707680 1610752 5708648 +1611528 5715552 1620656 5722632 1614680 5707680 1611512 5715528 +1663944 5646256 1614696 5707712 1621088 5722784 1621280 5723224 +1614680 5707680 1614696 5707712 1663944 5646256 1663880 5646248 +1614680 5707680 1614696 5707712 1663880 5646248 1601624 5681136 +1614680 5707680 1621088 5722784 1614696 5707712 1663880 5646248 +1621088 5722784 1614696 5707712 1614680 5707680 1621040 5722712 +1614680 5707680 1620992 5722672 1621040 5722712 1614696 5707712 +1614680 5707680 1620872 5722632 1620992 5722672 1614696 5707712 +1620992 5722672 1621040 5722712 1614696 5707712 1620872 5722632 +1614680 5707680 1620792 5722624 1620872 5722632 1614696 5707712 +1620872 5722632 1620992 5722672 1614696 5707712 1620792 5722624 +1614680 5707680 1620656 5722632 1620792 5722624 1614696 5707712 +1614680 5707680 1611528 5715552 1620656 5722632 1614696 5707712 +1620656 5722632 1620792 5722624 1614696 5707712 1611528 5715552 +1611528 5715552 1620600 5722648 1620656 5722632 1614696 5707712 +1620792 5722624 1620872 5722632 1614696 5707712 1620656 5722632 +1614696 5707712 1663880 5646248 1614680 5707680 1611528 5715552 +1621040 5722712 1621088 5722784 1614696 5707712 1620992 5722672 +1614680 5707680 1611512 5715528 1611528 5715552 1614696 5707712 +1611528 5715552 1620656 5722632 1614696 5707712 1611512 5715528 +1614680 5707680 1610752 5708648 1611512 5715528 1614696 5707712 +1614680 5707680 1614512 5707600 1610752 5708648 1614696 5707712 +1614512 5707600 1610760 5708480 1610752 5708648 1614696 5707712 +1610752 5708648 1611464 5715504 1611512 5715528 1614696 5707712 +1614680 5707680 1614648 5707656 1614512 5707600 1614696 5707712 +1614512 5707600 1610752 5708648 1614696 5707712 1614648 5707656 +1614648 5707656 1614576 5707608 1614512 5707600 1614696 5707712 +1610752 5708648 1611512 5715528 1614696 5707712 1614512 5707600 +1614680 5707680 1614648 5707656 1614696 5707712 1663880 5646248 +1611512 5715528 1611528 5715552 1614696 5707712 1610752 5708648 +1614696 5707712 1621088 5722784 1663944 5646256 1663880 5646248 +1621088 5722784 1663944 5646256 1614696 5707712 1621040 5722712 +1611528 5715552 1614704 5707744 1614696 5707712 1611512 5715528 +1614696 5707712 1614704 5707744 1620656 5722632 1620792 5722624 +1620656 5722632 1614704 5707744 1611528 5715552 1620600 5722648 +1614704 5707744 1611528 5715552 1620656 5722632 1620792 5722624 +1611528 5715552 1620656 5722632 1614704 5707744 1611512 5715528 +1614696 5707712 1614704 5707744 1620792 5722624 1620872 5722632 +1614696 5707712 1614704 5707744 1620872 5722632 1620992 5722672 +1614696 5707712 1614704 5707744 1620992 5722672 1621040 5722712 +1614704 5707744 1620872 5722632 1620992 5722672 1621040 5722712 +1614704 5707744 1620656 5722632 1620792 5722624 1620872 5722632 +1614704 5707744 1620792 5722624 1620872 5722632 1620992 5722672 +1614696 5707712 1614704 5707744 1621040 5722712 1621088 5722784 +1614704 5707744 1620992 5722672 1621040 5722712 1621088 5722784 +1614696 5707712 1610752 5708648 1611512 5715528 1614704 5707744 +1611512 5715528 1611528 5715552 1614704 5707744 1610752 5708648 +1610752 5708648 1611464 5715504 1611512 5715528 1614704 5707744 +1614696 5707712 1614512 5707600 1610752 5708648 1614704 5707744 +1614512 5707600 1610760 5708480 1610752 5708648 1614704 5707744 +1614696 5707712 1614648 5707656 1614512 5707600 1614704 5707744 +1614648 5707656 1614576 5707608 1614512 5707600 1614704 5707744 +1614696 5707712 1614680 5707680 1614648 5707656 1614704 5707744 +1614512 5707600 1610752 5708648 1614704 5707744 1614648 5707656 +1610752 5708648 1611512 5715528 1614704 5707744 1614512 5707600 +1614704 5707744 1621088 5722784 1614696 5707712 1614648 5707656 +1614696 5707712 1614704 5707744 1621088 5722784 1663944 5646256 +1621088 5722784 1621280 5723224 1663944 5646256 1614704 5707744 +1614704 5707744 1621040 5722712 1621088 5722784 1663944 5646256 +1614696 5707712 1614704 5707744 1663944 5646256 1663880 5646248 +1614696 5707712 1614648 5707656 1614704 5707744 1663944 5646256 +1620656 5722632 1614696 5707848 1611528 5715552 1620600 5722648 +1614704 5707744 1614696 5707848 1620656 5722632 1620792 5722624 +1614696 5707848 1611528 5715552 1620656 5722632 1620792 5722624 +1614704 5707744 1614696 5707848 1620792 5722624 1620872 5722632 +1614696 5707848 1620656 5722632 1620792 5722624 1620872 5722632 +1614704 5707744 1611528 5715552 1614696 5707848 1620872 5722632 +1611528 5715552 1614696 5707848 1614704 5707744 1611512 5715528 +1611528 5715552 1620656 5722632 1614696 5707848 1611512 5715528 +1614704 5707744 1610752 5708648 1611512 5715528 1614696 5707848 +1614696 5707848 1620872 5722632 1614704 5707744 1610752 5708648 +1611512 5715528 1611528 5715552 1614696 5707848 1610752 5708648 +1610752 5708648 1611464 5715504 1611512 5715528 1614696 5707848 +1614704 5707744 1614696 5707848 1620872 5722632 1620992 5722672 +1614704 5707744 1614696 5707848 1620992 5722672 1621040 5722712 +1614696 5707848 1620792 5722624 1620872 5722632 1620992 5722672 +1614704 5707744 1610752 5708648 1614696 5707848 1620992 5722672 +1614704 5707744 1614512 5707600 1610752 5708648 1614696 5707848 +1614512 5707600 1610760 5708480 1610752 5708648 1614696 5707848 +1610752 5708648 1611512 5715528 1614696 5707848 1614512 5707600 +1614704 5707744 1614512 5707600 1614696 5707848 1620992 5722672 +1614704 5707744 1614648 5707656 1614512 5707600 1614696 5707848 +1614704 5707744 1614696 5707712 1614648 5707656 1614696 5707848 +1614648 5707656 1614576 5707608 1614512 5707600 1614696 5707848 +1614704 5707744 1614648 5707656 1614696 5707848 1620992 5722672 +1614512 5707600 1610752 5708648 1614696 5707848 1614648 5707656 +1614696 5707848 1614688 5707952 1620656 5722632 1620792 5722624 +1614696 5707848 1611528 5715552 1614688 5707952 1620792 5722624 +1611528 5715552 1614688 5707952 1614696 5707848 1611512 5715528 +1614688 5707952 1620792 5722624 1614696 5707848 1611512 5715528 +1614688 5707952 1611528 5715552 1620656 5722632 1620792 5722624 +1611528 5715552 1620656 5722632 1614688 5707952 1611512 5715528 +1620656 5722632 1614688 5707952 1611528 5715552 1620600 5722648 +1614696 5707848 1614688 5707952 1620792 5722624 1620872 5722632 +1614688 5707952 1620656 5722632 1620792 5722624 1620872 5722632 +1614696 5707848 1611512 5715528 1614688 5707952 1620872 5722632 +1614696 5707848 1614688 5707952 1620872 5722632 1620992 5722672 +1614696 5707848 1611512 5715528 1614688 5707952 1620992 5722672 +1614688 5707952 1620792 5722624 1620872 5722632 1620992 5722672 +1614696 5707848 1610752 5708648 1611512 5715528 1614688 5707952 +1614696 5707848 1610752 5708648 1614688 5707952 1620992 5722672 +1611512 5715528 1611528 5715552 1614688 5707952 1610752 5708648 +1614696 5707848 1614512 5707600 1610752 5708648 1614688 5707952 +1614696 5707848 1614512 5707600 1614688 5707952 1620992 5722672 +1614512 5707600 1610760 5708480 1610752 5708648 1614688 5707952 +1610752 5708648 1611512 5715528 1614688 5707952 1614512 5707600 +1610752 5708648 1611464 5715504 1611512 5715528 1614688 5707952 +1614696 5707848 1614688 5707952 1620992 5722672 1614704 5707744 +1614696 5707848 1614648 5707656 1614512 5707600 1614688 5707952 +1614688 5707952 1614664 5708048 1620656 5722632 1620792 5722624 +1614688 5707952 1614664 5708048 1620792 5722624 1620872 5722632 +1614664 5708048 1611528 5715552 1620656 5722632 1620792 5722624 +1614664 5708048 1620656 5722632 1620792 5722624 1620872 5722632 +1614688 5707952 1611528 5715552 1614664 5708048 1620872 5722632 +1611528 5715552 1614664 5708048 1614688 5707952 1611512 5715528 +1614688 5707952 1610752 5708648 1611512 5715528 1614664 5708048 +1611528 5715552 1620656 5722632 1614664 5708048 1611512 5715528 +1614664 5708048 1620872 5722632 1614688 5707952 1610752 5708648 +1611512 5715528 1611528 5715552 1614664 5708048 1610752 5708648 +1620656 5722632 1614664 5708048 1611528 5715552 1620600 5722648 +1614688 5707952 1614664 5708048 1620872 5722632 1620992 5722672 +1614664 5708048 1620792 5722624 1620872 5722632 1620992 5722672 +1614688 5707952 1610752 5708648 1614664 5708048 1620992 5722672 +1614688 5707952 1614664 5708048 1620992 5722672 1614696 5707848 +1614688 5707952 1614512 5707600 1610752 5708648 1614664 5708048 +1610752 5708648 1611512 5715528 1614664 5708048 1614512 5707600 +1614512 5707600 1610760 5708480 1610752 5708648 1614664 5708048 +1610752 5708648 1611512 5715528 1614664 5708048 1610760 5708480 +1614688 5707952 1614696 5707848 1614512 5707600 1614664 5708048 +1614688 5707952 1614512 5707600 1614664 5708048 1620992 5722672 +1614512 5707600 1610760 5708480 1614664 5708048 1614688 5707952 +1610752 5708648 1611464 5715504 1611512 5715528 1614664 5708048 +1610752 5708648 1611464 5715504 1614664 5708048 1610760 5708480 +1611512 5715528 1611528 5715552 1614664 5708048 1611464 5715504 +1610752 5708648 1611352 5715472 1611464 5715504 1614664 5708048 +1614512 5707600 1610728 5708400 1610760 5708480 1614664 5708048 +1610752 5708648 1614648 5708080 1614664 5708048 1610760 5708480 +1610752 5708648 1611464 5715504 1614648 5708080 1610760 5708480 +1614664 5708048 1614512 5707600 1610760 5708480 1614648 5708080 +1610760 5708480 1610752 5708648 1614648 5708080 1614512 5707600 +1614648 5708080 1611464 5715504 1614664 5708048 1614512 5707600 +1614664 5708048 1614688 5707952 1614512 5707600 1614648 5708080 +1614512 5707600 1610760 5708480 1614648 5708080 1614688 5707952 +1614688 5707952 1614696 5707848 1614512 5707600 1614648 5708080 +1614664 5708048 1614688 5707952 1614648 5708080 1611464 5715504 +1611464 5715504 1614648 5708080 1610752 5708648 1611352 5715472 +1614664 5708048 1614648 5708080 1611464 5715504 1611512 5715528 +1614648 5708080 1610752 5708648 1611464 5715504 1611512 5715528 +1614664 5708048 1614688 5707952 1614648 5708080 1611512 5715528 +1614664 5708048 1614648 5708080 1611512 5715528 1611528 5715552 +1614664 5708048 1614688 5707952 1614648 5708080 1611528 5715552 +1614664 5708048 1614648 5708080 1611528 5715552 1620656 5722632 +1614664 5708048 1614648 5708080 1620656 5722632 1620792 5722624 +1614664 5708048 1614688 5707952 1614648 5708080 1620792 5722624 +1614648 5708080 1611528 5715552 1620656 5722632 1620792 5722624 +1614664 5708048 1614648 5708080 1620792 5722624 1620872 5722632 +1614664 5708048 1614648 5708080 1620872 5722632 1620992 5722672 +1614648 5708080 1620656 5722632 1620792 5722624 1620872 5722632 +1614664 5708048 1614688 5707952 1614648 5708080 1620872 5722632 +1614648 5708080 1611512 5715528 1611528 5715552 1620656 5722632 +1611528 5715552 1620600 5722648 1620656 5722632 1614648 5708080 +1614648 5708080 1611464 5715504 1611512 5715528 1611528 5715552 +1614512 5707600 1610728 5708400 1610760 5708480 1614648 5708080 +1614648 5708080 1614576 5708144 1611464 5715504 1611512 5715528 +1614648 5708080 1610752 5708648 1614576 5708144 1611512 5715528 +1610752 5708648 1614576 5708144 1614648 5708080 1610760 5708480 +1614648 5708080 1614512 5707600 1610760 5708480 1614576 5708144 +1614576 5708144 1611512 5715528 1614648 5708080 1614512 5707600 +1610760 5708480 1610752 5708648 1614576 5708144 1614512 5707600 +1614648 5708080 1614688 5707952 1614512 5707600 1614576 5708144 +1614512 5707600 1610760 5708480 1614576 5708144 1614688 5707952 +1614648 5708080 1614688 5707952 1614576 5708144 1611512 5715528 +1614688 5707952 1614696 5707848 1614512 5707600 1614576 5708144 +1614648 5708080 1614664 5708048 1614688 5707952 1614576 5708144 +1614648 5708080 1614664 5708048 1614576 5708144 1611512 5715528 +1614688 5707952 1614512 5707600 1614576 5708144 1614664 5708048 +1614576 5708144 1610752 5708648 1611464 5715504 1611512 5715528 +1610752 5708648 1611464 5715504 1614576 5708144 1610760 5708480 +1611464 5715504 1614576 5708144 1610752 5708648 1611352 5715472 +1614648 5708080 1614576 5708144 1611512 5715528 1611528 5715552 +1614576 5708144 1611464 5715504 1611512 5715528 1611528 5715552 +1614648 5708080 1614664 5708048 1614576 5708144 1611528 5715552 +1614648 5708080 1614576 5708144 1611528 5715552 1620656 5722632 +1614648 5708080 1614664 5708048 1614576 5708144 1620656 5722632 +1614648 5708080 1614576 5708144 1620656 5722632 1620792 5722624 +1611528 5715552 1620600 5722648 1620656 5722632 1614576 5708144 +1614576 5708144 1611512 5715528 1611528 5715552 1620656 5722632 +1614512 5707600 1610728 5708400 1610760 5708480 1614576 5708144 +1614512 5707600 1614512 5708144 1614576 5708144 1614688 5707952 +1614512 5707600 1610760 5708480 1614512 5708144 1614688 5707952 +1614576 5708144 1614512 5708144 1610760 5708480 1610752 5708648 +1614512 5708144 1614512 5707600 1610760 5708480 1610752 5708648 +1614576 5708144 1614664 5708048 1614688 5707952 1614512 5708144 +1614688 5707952 1614512 5707600 1614512 5708144 1614664 5708048 +1614512 5707600 1614512 5708144 1614688 5707952 1614696 5707848 +1614512 5707600 1610760 5708480 1614512 5708144 1614696 5707848 +1614512 5708144 1614664 5708048 1614688 5707952 1614696 5707848 +1614576 5708144 1614648 5708080 1614664 5708048 1614512 5708144 +1614664 5708048 1614688 5707952 1614512 5708144 1614648 5708080 +1614512 5708144 1610752 5708648 1614576 5708144 1614648 5708080 +1614576 5708144 1614512 5708144 1610752 5708648 1611464 5715504 +1614512 5708144 1610760 5708480 1610752 5708648 1611464 5715504 +1614576 5708144 1614512 5708144 1611464 5715504 1611512 5715528 +1614576 5708144 1614512 5708144 1611512 5715528 1611528 5715552 +1614576 5708144 1614648 5708080 1614512 5708144 1611512 5715528 +1614512 5708144 1610752 5708648 1611464 5715504 1611512 5715528 +1610752 5708648 1611352 5715472 1611464 5715504 1614512 5708144 +1610760 5708480 1614512 5708144 1614512 5707600 1610728 5708400 +1614512 5707600 1614512 5708144 1614696 5707848 1614648 5707656 +1614512 5708144 1614488 5708072 1610760 5708480 1610752 5708648 +1614512 5708144 1614512 5707600 1614488 5708072 1610752 5708648 +1614512 5707600 1614488 5708072 1614512 5708144 1614696 5707848 +1614488 5708072 1610752 5708648 1614512 5708144 1614696 5707848 +1614512 5708144 1614488 5708072 1610752 5708648 1611464 5715504 +1614512 5708144 1614688 5707952 1614696 5707848 1614488 5708072 +1614512 5708144 1614688 5707952 1614488 5708072 1610752 5708648 +1614696 5707848 1614512 5707600 1614488 5708072 1614688 5707952 +1614512 5708144 1614664 5708048 1614688 5707952 1614488 5708072 +1614512 5708144 1614664 5708048 1614488 5708072 1610752 5708648 +1614512 5708144 1614648 5708080 1614664 5708048 1614488 5708072 +1614512 5708144 1614648 5708080 1614488 5708072 1610752 5708648 +1614664 5708048 1614688 5707952 1614488 5708072 1614648 5708080 +1614688 5707952 1614696 5707848 1614488 5708072 1614664 5708048 +1614488 5708072 1614512 5707600 1610760 5708480 1610752 5708648 +1614512 5707600 1610760 5708480 1614488 5708072 1614696 5707848 +1614512 5708144 1614576 5708144 1614648 5708080 1614488 5708072 +1614512 5708144 1614576 5708144 1614488 5708072 1610752 5708648 +1614648 5708080 1614664 5708048 1614488 5708072 1614576 5708144 +1610760 5708480 1614488 5708072 1614512 5707600 1610728 5708400 +1614512 5707600 1614488 5708072 1614696 5707848 1614648 5707656 +1614488 5708072 1614456 5707992 1610760 5708480 1610752 5708648 +1614488 5708072 1614456 5707992 1610752 5708648 1614512 5708144 +1610752 5708648 1611464 5715504 1614512 5708144 1614456 5707992 +1614456 5707992 1614512 5707600 1610760 5708480 1610752 5708648 +1614456 5707992 1610760 5708480 1610752 5708648 1614512 5708144 +1614488 5708072 1614512 5707600 1614456 5707992 1614512 5708144 +1614512 5707600 1614456 5707992 1614488 5708072 1614696 5707848 +1614488 5708072 1614688 5707952 1614696 5707848 1614456 5707992 +1614488 5708072 1614664 5708048 1614688 5707952 1614456 5707992 +1614688 5707952 1614696 5707848 1614456 5707992 1614664 5708048 +1614488 5708072 1614648 5708080 1614664 5708048 1614456 5707992 +1614512 5707600 1610760 5708480 1614456 5707992 1614696 5707848 +1614456 5707992 1614512 5708144 1614488 5708072 1614664 5708048 +1614696 5707848 1614512 5707600 1614456 5707992 1614688 5707952 +1610760 5708480 1614456 5707992 1614512 5707600 1610728 5708400 +1610760 5708480 1610752 5708648 1614456 5707992 1610728 5708400 +1614456 5707992 1614696 5707848 1614512 5707600 1610728 5708400 +1614512 5707600 1610712 5708360 1610728 5708400 1614456 5707992 +1614512 5707600 1610680 5708312 1610712 5708360 1614456 5707992 +1614512 5707600 1610712 5708360 1614456 5707992 1614696 5707848 +1610728 5708400 1610760 5708480 1614456 5707992 1610712 5708360 +1614512 5707600 1614456 5707992 1614696 5707848 1614648 5707656 +1610712 5708360 1614416 5707944 1614512 5707600 1610680 5708312 +1614512 5707600 1614416 5707944 1614456 5707992 1614696 5707848 +1614512 5707600 1610712 5708360 1614416 5707944 1614696 5707848 +1614416 5707944 1610712 5708360 1614456 5707992 1614696 5707848 +1614456 5707992 1614688 5707952 1614696 5707848 1614416 5707944 +1614456 5707992 1614416 5707944 1610712 5708360 1610728 5708400 +1614416 5707944 1614512 5707600 1610712 5708360 1610728 5708400 +1614456 5707992 1614696 5707848 1614416 5707944 1610728 5708400 +1614456 5707992 1614416 5707944 1610728 5708400 1610760 5708480 +1614456 5707992 1614416 5707944 1610760 5708480 1610752 5708648 +1614456 5707992 1614696 5707848 1614416 5707944 1610752 5708648 +1614456 5707992 1614416 5707944 1610752 5708648 1614512 5708144 +1614456 5707992 1614416 5707944 1614512 5708144 1614488 5708072 +1610752 5708648 1611464 5715504 1614512 5708144 1614416 5707944 +1614416 5707944 1610760 5708480 1610752 5708648 1614512 5708144 +1614456 5707992 1614696 5707848 1614416 5707944 1614488 5708072 +1614416 5707944 1610752 5708648 1614512 5708144 1614488 5708072 +1614416 5707944 1610712 5708360 1610728 5708400 1610760 5708480 +1614416 5707944 1610728 5708400 1610760 5708480 1610752 5708648 +1614512 5707600 1614416 5707944 1614696 5707848 1614648 5707656 +1614512 5707600 1610712 5708360 1614416 5707944 1614648 5707656 +1614416 5707944 1614456 5707992 1614696 5707848 1614648 5707656 +1614512 5707600 1614416 5707944 1614648 5707656 1614576 5707608 +1614696 5707848 1614704 5707744 1614648 5707656 1614416 5707944 +1614416 5707944 1614328 5707896 1610712 5708360 1610728 5708400 +1614416 5707944 1614512 5707600 1614328 5707896 1610728 5708400 +1614512 5707600 1614328 5707896 1614416 5707944 1614648 5707656 +1610712 5708360 1614328 5707896 1614512 5707600 1610680 5708312 +1614512 5707600 1609472 5706664 1610680 5708312 1614328 5707896 +1614328 5707896 1610680 5708312 1610712 5708360 1610728 5708400 +1614328 5707896 1614416 5707944 1614512 5707600 1610680 5708312 +1614416 5707944 1614328 5707896 1610728 5708400 1610760 5708480 +1614328 5707896 1610712 5708360 1610728 5708400 1610760 5708480 +1614416 5707944 1614512 5707600 1614328 5707896 1610760 5708480 +1614416 5707944 1614328 5707896 1610760 5708480 1610752 5708648 +1614416 5707944 1614512 5707600 1614328 5707896 1610752 5708648 +1614416 5707944 1614328 5707896 1610752 5708648 1614512 5708144 +1614416 5707944 1614512 5707600 1614328 5707896 1614512 5708144 +1610752 5708648 1611464 5715504 1614512 5708144 1614328 5707896 +1614416 5707944 1614328 5707896 1614512 5708144 1614488 5708072 +1614416 5707944 1614328 5707896 1614488 5708072 1614456 5707992 +1614416 5707944 1614512 5707600 1614328 5707896 1614456 5707992 +1614328 5707896 1610752 5708648 1614512 5708144 1614488 5708072 +1614328 5707896 1614512 5708144 1614488 5708072 1614456 5707992 +1614328 5707896 1610728 5708400 1610760 5708480 1610752 5708648 +1614328 5707896 1610760 5708480 1610752 5708648 1614512 5708144 +1610680 5708312 1614264 5707840 1614512 5707600 1609472 5706664 +1614512 5707600 1609424 5706616 1609472 5706664 1614264 5707840 +1610680 5708312 1614328 5707896 1614264 5707840 1609472 5706664 +1614264 5707840 1614328 5707896 1614512 5707600 1609472 5706664 +1610680 5708312 1614264 5707840 1609472 5706664 1610640 5708296 +1614328 5707896 1614264 5707840 1610680 5708312 1610712 5708360 +1614264 5707840 1609472 5706664 1610680 5708312 1610712 5708360 +1614328 5707896 1614264 5707840 1610712 5708360 1610728 5708400 +1614328 5707896 1614264 5707840 1610728 5708400 1610760 5708480 +1614264 5707840 1610680 5708312 1610712 5708360 1610728 5708400 +1614264 5707840 1610712 5708360 1610728 5708400 1610760 5708480 +1614328 5707896 1614512 5707600 1614264 5707840 1610760 5708480 +1614512 5707600 1614264 5707840 1614328 5707896 1614416 5707944 +1614328 5707896 1614264 5707840 1610760 5708480 1610752 5708648 +1614264 5707840 1610728 5708400 1610760 5708480 1610752 5708648 +1614328 5707896 1614512 5707600 1614264 5707840 1610752 5708648 +1614328 5707896 1614264 5707840 1610752 5708648 1614512 5708144 +1610752 5708648 1611464 5715504 1614512 5708144 1614264 5707840 +1614328 5707896 1614512 5707600 1614264 5707840 1614512 5708144 +1614328 5707896 1614264 5707840 1614512 5708144 1614488 5708072 +1614264 5707840 1610760 5708480 1610752 5708648 1614512 5708144 +1614264 5707840 1614224 5707816 1609472 5706664 1610680 5708312 +1609472 5706664 1614224 5707816 1614512 5707600 1609424 5706616 +1614264 5707840 1614224 5707816 1610680 5708312 1610712 5708360 +1614224 5707816 1609472 5706664 1610680 5708312 1610712 5708360 +1614264 5707840 1614512 5707600 1614224 5707816 1610712 5708360 +1614512 5707600 1614224 5707816 1614264 5707840 1614328 5707896 +1609472 5706664 1610640 5708296 1610680 5708312 1614224 5707816 +1614264 5707840 1614224 5707816 1610712 5708360 1610728 5708400 +1614224 5707816 1610680 5708312 1610712 5708360 1610728 5708400 +1614264 5707840 1614512 5707600 1614224 5707816 1610728 5708400 +1614224 5707816 1614512 5707600 1609472 5706664 1610680 5708312 +1614264 5707840 1614224 5707816 1610728 5708400 1610760 5708480 +1614264 5707840 1614512 5707600 1614224 5707816 1610760 5708480 +1614264 5707840 1614224 5707816 1610760 5708480 1610752 5708648 +1614264 5707840 1614512 5707600 1614224 5707816 1610752 5708648 +1614224 5707816 1610712 5708360 1610728 5708400 1610760 5708480 +1614224 5707816 1610728 5708400 1610760 5708480 1610752 5708648 +1614264 5707840 1614224 5707816 1610752 5708648 1614512 5708144 +1614264 5707840 1614512 5707600 1614224 5707816 1614512 5708144 +1614224 5707816 1610760 5708480 1610752 5708648 1614512 5708144 +1610752 5708648 1611464 5715504 1614512 5708144 1614224 5707816 +1614264 5707840 1614224 5707816 1614512 5708144 1614328 5707896 +1614264 5707840 1614512 5707600 1614224 5707816 1614328 5707896 +1614512 5708144 1614488 5708072 1614328 5707896 1614224 5707816 +1614224 5707816 1610752 5708648 1614512 5708144 1614328 5707896 +1609472 5706664 1614224 5707800 1614512 5707600 1609424 5706616 +1614224 5707816 1614224 5707800 1609472 5706664 1610680 5708312 +1614224 5707816 1614224 5707800 1610680 5708312 1610712 5708360 +1614224 5707816 1614224 5707800 1610712 5708360 1610728 5708400 +1614224 5707800 1610680 5708312 1610712 5708360 1610728 5708400 +1609472 5706664 1610640 5708296 1610680 5708312 1614224 5707800 +1614224 5707816 1614224 5707800 1610728 5708400 1610760 5708480 +1614224 5707800 1610712 5708360 1610728 5708400 1610760 5708480 +1614224 5707800 1609472 5706664 1610680 5708312 1610712 5708360 +1614224 5707816 1614512 5707600 1614224 5707800 1610760 5708480 +1614512 5707600 1614224 5707800 1614224 5707816 1614264 5707840 +1614512 5707600 1614224 5707800 1614264 5707840 1614328 5707896 +1614224 5707800 1610760 5708480 1614224 5707816 1614264 5707840 +1614224 5707800 1614512 5707600 1609472 5706664 1610680 5708312 +1614512 5707600 1609472 5706664 1614224 5707800 1614264 5707840 +1614224 5707816 1614224 5707800 1610760 5708480 1610752 5708648 +1609472 5706664 1614224 5707784 1614512 5707600 1609424 5706616 +1614224 5707800 1614224 5707784 1609472 5706664 1610680 5708312 +1614224 5707800 1614512 5707600 1614224 5707784 1610680 5708312 +1614224 5707784 1614512 5707600 1609472 5706664 1610680 5708312 +1609472 5706664 1610640 5708296 1610680 5708312 1614224 5707784 +1614224 5707800 1614224 5707784 1610680 5708312 1610712 5708360 +1614224 5707800 1614512 5707600 1614224 5707784 1610712 5708360 +1614224 5707800 1614224 5707784 1610712 5708360 1610728 5708400 +1614224 5707800 1614512 5707600 1614224 5707784 1610728 5708400 +1614224 5707800 1614224 5707784 1610728 5708400 1610760 5708480 +1614224 5707800 1614512 5707600 1614224 5707784 1610760 5708480 +1614224 5707784 1610712 5708360 1610728 5708400 1610760 5708480 +1614224 5707800 1614224 5707784 1610760 5708480 1614224 5707816 +1614224 5707784 1610680 5708312 1610712 5708360 1610728 5708400 +1614224 5707784 1609472 5706664 1610680 5708312 1610712 5708360 +1614512 5707600 1614224 5707784 1614224 5707800 1614264 5707840 +1614224 5707784 1610760 5708480 1614224 5707800 1614264 5707840 +1614512 5707600 1614224 5707784 1614264 5707840 1614328 5707896 +1614512 5707600 1609472 5706664 1614224 5707784 1614264 5707840 +1614224 5707800 1614224 5707816 1614264 5707840 1614224 5707784 +1614224 5707784 1614240 5707760 1609472 5706664 1610680 5708312 +1614224 5707784 1614512 5707600 1614240 5707760 1610680 5708312 +1609472 5706664 1614240 5707760 1614512 5707600 1609424 5706616 +1609472 5706664 1610640 5708296 1610680 5708312 1614240 5707760 +1614512 5707600 1614240 5707760 1614224 5707784 1614264 5707840 +1614240 5707760 1610680 5708312 1614224 5707784 1614264 5707840 +1614512 5707600 1614240 5707760 1614264 5707840 1614328 5707896 +1614240 5707760 1614224 5707784 1614264 5707840 1614328 5707896 +1614240 5707760 1614512 5707600 1609472 5706664 1610680 5708312 +1614224 5707784 1614240 5707760 1610680 5708312 1610712 5708360 +1614224 5707784 1614224 5707800 1614264 5707840 1614240 5707760 +1614224 5707784 1614224 5707800 1614240 5707760 1610680 5708312 +1614264 5707840 1614328 5707896 1614240 5707760 1614224 5707800 +1614224 5707800 1614224 5707816 1614264 5707840 1614240 5707760 +1614512 5707600 1614240 5707760 1614328 5707896 1614416 5707944 +1614512 5707600 1609472 5706664 1614240 5707760 1614328 5707896 +1609472 5706664 1614288 5707728 1614512 5707600 1609424 5706616 +1614240 5707760 1614288 5707728 1609472 5706664 1610680 5708312 +1614512 5707600 1614288 5707728 1614240 5707760 1614328 5707896 +1614512 5707600 1609472 5706664 1614288 5707728 1614328 5707896 +1614240 5707760 1614264 5707840 1614328 5707896 1614288 5707728 +1614240 5707760 1614224 5707800 1614264 5707840 1614288 5707728 +1614512 5707600 1614288 5707728 1614328 5707896 1614416 5707944 +1614512 5707600 1614288 5707728 1614416 5707944 1614648 5707656 +1614512 5707600 1609472 5706664 1614288 5707728 1614416 5707944 +1614328 5707896 1614416 5707944 1614288 5707728 1614264 5707840 +1614288 5707728 1609472 5706664 1614240 5707760 1614264 5707840 +1609472 5706664 1614360 5707680 1614512 5707600 1609424 5706616 +1614512 5707600 1614360 5707680 1614288 5707728 1614416 5707944 +1614512 5707600 1609472 5706664 1614360 5707680 1614416 5707944 +1614512 5707600 1614360 5707680 1614416 5707944 1614648 5707656 +1614288 5707728 1614328 5707896 1614416 5707944 1614360 5707680 +1614416 5707944 1614512 5707600 1614360 5707680 1614328 5707896 +1614360 5707680 1609472 5706664 1614288 5707728 1614328 5707896 +1614288 5707728 1614264 5707840 1614328 5707896 1614360 5707680 +1614288 5707728 1614360 5707680 1609472 5706664 1614240 5707760 +1609472 5706664 1614408 5707648 1614512 5707600 1609424 5706616 +1614360 5707680 1614408 5707648 1609472 5706664 1614288 5707728 +1614512 5707600 1614408 5707648 1614360 5707680 1614416 5707944 +1614408 5707648 1609472 5706664 1614360 5707680 1614416 5707944 +1614512 5707600 1614408 5707648 1614416 5707944 1614648 5707656 +1614408 5707648 1614360 5707680 1614416 5707944 1614648 5707656 +1614360 5707680 1614328 5707896 1614416 5707944 1614408 5707648 +1614512 5707600 1614408 5707648 1614648 5707656 1614576 5707608 +1614416 5707944 1614696 5707848 1614648 5707656 1614408 5707648 +1614416 5707944 1614696 5707848 1614408 5707648 1614360 5707680 +1614416 5707944 1614456 5707992 1614696 5707848 1614408 5707648 +1614696 5707848 1614704 5707744 1614648 5707656 1614408 5707648 +1614408 5707648 1614696 5707848 1614648 5707656 1614576 5707608 +1614512 5707600 1609472 5706664 1614408 5707648 1614576 5707608 +1610752 5708648 1613560 5708192 1614224 5707816 1610760 5708480 +1614512 5708144 1613560 5708192 1610752 5708648 1611464 5715504 +1613560 5708192 1614512 5708144 1614224 5707816 1610760 5708480 +1614512 5708144 1614224 5707816 1613560 5708192 1611464 5715504 +1614224 5707816 1614224 5707800 1610760 5708480 1613560 5708192 +1610760 5708480 1610752 5708648 1613560 5708192 1614224 5707800 +1614224 5707800 1614224 5707784 1610760 5708480 1613560 5708192 +1614224 5707784 1610728 5708400 1610760 5708480 1613560 5708192 +1614224 5707784 1610712 5708360 1610728 5708400 1613560 5708192 +1610728 5708400 1610760 5708480 1613560 5708192 1610712 5708360 +1610760 5708480 1610752 5708648 1613560 5708192 1610728 5708400 +1614224 5707784 1610712 5708360 1613560 5708192 1614224 5707800 +1614224 5707784 1610680 5708312 1610712 5708360 1613560 5708192 +1610712 5708360 1610728 5708400 1613560 5708192 1610680 5708312 +1614224 5707784 1610680 5708312 1613560 5708192 1614224 5707800 +1614224 5707816 1614224 5707800 1613560 5708192 1614512 5708144 +1614224 5707784 1614240 5707760 1610680 5708312 1613560 5708192 +1614240 5707760 1609472 5706664 1610680 5708312 1613560 5708192 +1609472 5706664 1610640 5708296 1610680 5708312 1613560 5708192 +1614224 5707784 1614240 5707760 1613560 5708192 1614224 5707800 +1610680 5708312 1610712 5708360 1613560 5708192 1609472 5706664 +1614240 5707760 1614288 5707728 1609472 5706664 1613560 5708192 +1614240 5707760 1609472 5706664 1613560 5708192 1614224 5707784 +1614224 5707800 1614224 5707784 1613560 5708192 1614224 5707816 +1610752 5708648 1611464 5715504 1613560 5708192 1610760 5708480 +1614512 5708144 1613560 5708192 1611464 5715504 1611512 5715528 +1613560 5708192 1610752 5708648 1611464 5715504 1611512 5715528 +1614512 5708144 1614224 5707816 1613560 5708192 1611512 5715528 +1614512 5708144 1613560 5708192 1611512 5715528 1614576 5708144 +1610752 5708648 1611352 5715472 1611464 5715504 1613560 5708192 +1614224 5707816 1613560 5708192 1614512 5708144 1614328 5707896 +1614224 5707816 1614224 5707800 1613560 5708192 1614328 5707896 +1613560 5708192 1611512 5715528 1614512 5708144 1614328 5707896 +1614512 5708144 1614488 5708072 1614328 5707896 1613560 5708192 +1614224 5707816 1613560 5708192 1614328 5707896 1614264 5707840 +1613560 5708192 1613616 5708152 1609472 5706664 1610680 5708312 +1609472 5706664 1613616 5708152 1614240 5707760 1614288 5707728 +1614240 5707760 1613616 5708152 1613560 5708192 1614224 5707784 +1614240 5707760 1609472 5706664 1613616 5708152 1614224 5707784 +1613560 5708192 1614224 5707800 1614224 5707784 1613616 5708152 +1613616 5708152 1609472 5706664 1613560 5708192 1614224 5707800 +1614224 5707784 1614240 5707760 1613616 5708152 1614224 5707800 +1613560 5708192 1614224 5707816 1614224 5707800 1613616 5708152 +1614224 5707800 1614224 5707784 1613616 5708152 1614224 5707816 +1613560 5708192 1614328 5707896 1614224 5707816 1613616 5708152 +1613560 5708192 1614328 5707896 1613616 5708152 1609472 5706664 +1614224 5707816 1614224 5707800 1613616 5708152 1614328 5707896 +1613560 5708192 1614512 5708144 1614328 5707896 1613616 5708152 +1614328 5707896 1614224 5707816 1613616 5708152 1614512 5708144 +1613560 5708192 1611512 5715528 1614512 5708144 1613616 5708152 +1613560 5708192 1614512 5708144 1613616 5708152 1609472 5706664 +1614512 5708144 1614488 5708072 1614328 5707896 1613616 5708152 +1614328 5707896 1614264 5707840 1614224 5707816 1613616 5708152 +1613616 5708152 1613640 5708144 1614328 5707896 1614224 5707816 +1613640 5708144 1614512 5708144 1614328 5707896 1614224 5707816 +1613616 5708152 1613640 5708144 1614224 5707816 1614224 5707800 +1613616 5708152 1613640 5708144 1614224 5707800 1614224 5707784 +1613640 5708144 1614328 5707896 1614224 5707816 1614224 5707800 +1613616 5708152 1613640 5708144 1614224 5707784 1614240 5707760 +1613616 5708152 1613640 5708144 1614240 5707760 1609472 5706664 +1613640 5708144 1614224 5707800 1614224 5707784 1614240 5707760 +1613640 5708144 1614224 5707816 1614224 5707800 1614224 5707784 +1614328 5707896 1613640 5708144 1614512 5708144 1614488 5708072 +1613616 5708152 1614512 5708144 1613640 5708144 1614240 5707760 +1614512 5708144 1613640 5708144 1613616 5708152 1613560 5708192 +1614512 5708144 1614328 5707896 1613640 5708144 1613560 5708192 +1614512 5708144 1613640 5708144 1613560 5708192 1611512 5715528 +1613640 5708144 1614240 5707760 1613616 5708152 1613560 5708192 +1614328 5707896 1614264 5707840 1614224 5707816 1613640 5708144 +1613640 5708144 1613720 5708152 1614512 5708144 1614328 5707896 +1613640 5708144 1613720 5708152 1614328 5707896 1614224 5707816 +1613640 5708144 1613560 5708192 1613720 5708152 1614224 5707816 +1613720 5708152 1614512 5708144 1614328 5707896 1614224 5707816 +1613640 5708144 1613720 5708152 1614224 5707816 1614224 5707800 +1613720 5708152 1614328 5707896 1614224 5707816 1614224 5707800 +1613640 5708144 1613560 5708192 1613720 5708152 1614224 5707800 +1614512 5708144 1613720 5708152 1613560 5708192 1611512 5715528 +1613640 5708144 1613720 5708152 1614224 5707800 1614224 5707784 +1613640 5708144 1613560 5708192 1613720 5708152 1614224 5707784 +1613640 5708144 1613720 5708152 1614224 5707784 1614240 5707760 +1613720 5708152 1614224 5707816 1614224 5707800 1614224 5707784 +1614512 5708144 1614488 5708072 1614328 5707896 1613720 5708152 +1613560 5708192 1613720 5708152 1613640 5708144 1613616 5708152 +1613720 5708152 1614224 5707784 1613640 5708144 1613616 5708152 +1614328 5707896 1614264 5707840 1614224 5707816 1613720 5708152 +1614224 5707816 1614224 5707800 1613720 5708152 1614264 5707840 +1614328 5707896 1614264 5707840 1613720 5708152 1614512 5708144 +1613720 5708152 1613560 5708192 1614512 5708144 1614328 5707896 +1613560 5708192 1614512 5708144 1613720 5708152 1613616 5708152 +1613560 5708192 1613768 5708184 1614512 5708144 1613720 5708152 +1613560 5708192 1611512 5715528 1613768 5708184 1613720 5708152 +1614512 5708144 1613768 5708184 1611512 5715528 1614576 5708144 +1611512 5715528 1613768 5708184 1613560 5708192 1611464 5715504 +1614512 5708144 1614328 5707896 1613720 5708152 1613768 5708184 +1614328 5707896 1614264 5707840 1613720 5708152 1613768 5708184 +1613720 5708152 1613560 5708192 1613768 5708184 1614264 5707840 +1614512 5708144 1614488 5708072 1614328 5707896 1613768 5708184 +1614488 5708072 1614456 5707992 1614328 5707896 1613768 5708184 +1614264 5707840 1614224 5707816 1613720 5708152 1613768 5708184 +1614224 5707816 1614224 5707800 1613720 5708152 1613768 5708184 +1614264 5707840 1614224 5707816 1613768 5708184 1614328 5707896 +1613720 5708152 1613560 5708192 1613768 5708184 1614224 5707816 +1614328 5707896 1614264 5707840 1613768 5708184 1614488 5708072 +1613768 5708184 1611512 5715528 1614512 5708144 1614488 5708072 +1613560 5708192 1613768 5708184 1613720 5708152 1613616 5708152 +1613560 5708192 1611512 5715528 1613768 5708184 1613616 5708152 +1613768 5708184 1614224 5707816 1613720 5708152 1613616 5708152 +1613720 5708152 1613640 5708144 1613616 5708152 1613768 5708184 +1614512 5708144 1613848 5708256 1611512 5715528 1614576 5708144 +1611512 5715528 1611528 5715552 1614576 5708144 1613848 5708256 +1613848 5708256 1613768 5708184 1611512 5715528 1614576 5708144 +1614512 5708144 1613768 5708184 1613848 5708256 1614576 5708144 +1613768 5708184 1613848 5708256 1614512 5708144 1614488 5708072 +1613768 5708184 1611512 5715528 1613848 5708256 1614488 5708072 +1613848 5708256 1614576 5708144 1614512 5708144 1614488 5708072 +1613768 5708184 1613848 5708256 1614488 5708072 1614328 5707896 +1613768 5708184 1611512 5715528 1613848 5708256 1614328 5707896 +1614488 5708072 1614456 5707992 1614328 5707896 1613848 5708256 +1613768 5708184 1613848 5708256 1614328 5707896 1614264 5707840 +1613768 5708184 1613848 5708256 1614264 5707840 1614224 5707816 +1613768 5708184 1611512 5715528 1613848 5708256 1614224 5707816 +1613848 5708256 1614488 5708072 1614328 5707896 1614264 5707840 +1613768 5708184 1613848 5708256 1614224 5707816 1613720 5708152 +1613848 5708256 1614328 5707896 1614264 5707840 1614224 5707816 +1613848 5708256 1614512 5708144 1614488 5708072 1614328 5707896 +1611512 5715528 1613848 5708256 1613768 5708184 1613560 5708192 +1611512 5715528 1614576 5708144 1613848 5708256 1613560 5708192 +1613848 5708256 1614224 5707816 1613768 5708184 1613560 5708192 +1613768 5708184 1613616 5708152 1613560 5708192 1613848 5708256 +1611512 5715528 1613848 5708256 1613560 5708192 1611464 5715504 +1613560 5708192 1610752 5708648 1611464 5715504 1613848 5708256 +1611512 5715528 1614576 5708144 1613848 5708256 1611464 5715504 +1613848 5708256 1613768 5708184 1613560 5708192 1611464 5715504 +1614576 5708144 1613904 5708352 1611512 5715528 1611528 5715552 +1611512 5715528 1613904 5708352 1613848 5708256 1611464 5715504 +1613904 5708352 1614576 5708144 1613848 5708256 1611464 5715504 +1614576 5708144 1613848 5708256 1613904 5708352 1611528 5715552 +1613904 5708352 1611464 5715504 1611512 5715528 1611528 5715552 +1613848 5708256 1613904 5708352 1614576 5708144 1614512 5708144 +1613848 5708256 1611464 5715504 1613904 5708352 1614512 5708144 +1613904 5708352 1611528 5715552 1614576 5708144 1614512 5708144 +1613848 5708256 1613904 5708352 1614512 5708144 1614488 5708072 +1613848 5708256 1611464 5715504 1613904 5708352 1614488 5708072 +1613904 5708352 1614576 5708144 1614512 5708144 1614488 5708072 +1613848 5708256 1613560 5708192 1611464 5715504 1613904 5708352 +1613560 5708192 1610752 5708648 1611464 5715504 1613904 5708352 +1611464 5715504 1611512 5715528 1613904 5708352 1610752 5708648 +1613848 5708256 1613560 5708192 1613904 5708352 1614488 5708072 +1613560 5708192 1610760 5708480 1610752 5708648 1613904 5708352 +1613560 5708192 1610752 5708648 1613904 5708352 1613848 5708256 +1610752 5708648 1611352 5715472 1611464 5715504 1613904 5708352 +1614576 5708144 1613904 5708352 1611528 5715552 1620656 5722632 +1613848 5708256 1613904 5708352 1614488 5708072 1614328 5707896 +1613848 5708256 1613560 5708192 1613904 5708352 1614328 5707896 +1613904 5708352 1614512 5708144 1614488 5708072 1614328 5707896 +1613848 5708256 1613904 5708352 1614328 5707896 1614264 5707840 +1614488 5708072 1614456 5707992 1614328 5707896 1613904 5708352 +1613848 5708256 1613768 5708184 1613560 5708192 1613904 5708352 +1611528 5715552 1613896 5708408 1613904 5708352 1611512 5715528 +1613904 5708352 1613896 5708408 1614576 5708144 1614512 5708144 +1611528 5715552 1614576 5708144 1613896 5708408 1611512 5715528 +1613904 5708352 1611464 5715504 1611512 5715528 1613896 5708408 +1611512 5715528 1611528 5715552 1613896 5708408 1611464 5715504 +1613904 5708352 1610752 5708648 1611464 5715504 1613896 5708408 +1613904 5708352 1613560 5708192 1610752 5708648 1613896 5708408 +1610752 5708648 1611464 5715504 1613896 5708408 1613560 5708192 +1611464 5715504 1611512 5715528 1613896 5708408 1610752 5708648 +1613896 5708408 1614512 5708144 1613904 5708352 1613560 5708192 +1613896 5708408 1611528 5715552 1614576 5708144 1614512 5708144 +1613560 5708192 1610760 5708480 1610752 5708648 1613896 5708408 +1613904 5708352 1613896 5708408 1614512 5708144 1614488 5708072 +1613904 5708352 1613848 5708256 1613560 5708192 1613896 5708408 +1613560 5708192 1610752 5708648 1613896 5708408 1613848 5708256 +1613904 5708352 1613848 5708256 1613896 5708408 1614512 5708144 +1610752 5708648 1611352 5715472 1611464 5715504 1613896 5708408 +1614576 5708144 1613896 5708408 1611528 5715552 1620656 5722632 +1613848 5708256 1613768 5708184 1613560 5708192 1613896 5708408 +1610752 5708648 1613840 5708448 1613896 5708408 1613560 5708192 +1610752 5708648 1611464 5715504 1613840 5708448 1613560 5708192 +1613896 5708408 1613848 5708256 1613560 5708192 1613840 5708448 +1613560 5708192 1610752 5708648 1613840 5708448 1613848 5708256 +1613840 5708448 1611464 5715504 1613896 5708408 1613848 5708256 +1613896 5708408 1613840 5708448 1611464 5715504 1611512 5715528 +1613896 5708408 1613840 5708448 1611512 5715528 1611528 5715552 +1613896 5708408 1613840 5708448 1611528 5715552 1614576 5708144 +1613840 5708448 1611512 5715528 1611528 5715552 1614576 5708144 +1613896 5708408 1613848 5708256 1613840 5708448 1614576 5708144 +1613840 5708448 1610752 5708648 1611464 5715504 1611512 5715528 +1613840 5708448 1611464 5715504 1611512 5715528 1611528 5715552 +1613896 5708408 1613840 5708448 1614576 5708144 1614512 5708144 +1610752 5708648 1613840 5708448 1613560 5708192 1610760 5708480 +1613896 5708408 1613904 5708352 1613848 5708256 1613840 5708448 +1613848 5708256 1613560 5708192 1613840 5708448 1613904 5708352 +1613896 5708408 1613904 5708352 1613840 5708448 1614576 5708144 +1611464 5715504 1613840 5708448 1610752 5708648 1611352 5715472 +1611528 5715552 1620656 5722632 1614576 5708144 1613840 5708448 +1613848 5708256 1613768 5708184 1613560 5708192 1613840 5708448 +1613848 5708256 1613768 5708184 1613840 5708448 1613904 5708352 +1613560 5708192 1610752 5708648 1613840 5708448 1613768 5708184 +1613768 5708184 1613616 5708152 1613560 5708192 1613840 5708448 +1610752 5708648 1613784 5708464 1613840 5708448 1613560 5708192 +1613784 5708464 1611464 5715504 1613840 5708448 1613560 5708192 +1613840 5708448 1613768 5708184 1613560 5708192 1613784 5708464 +1613560 5708192 1610752 5708648 1613784 5708464 1613768 5708184 +1613840 5708448 1613768 5708184 1613784 5708464 1611464 5715504 +1613768 5708184 1613616 5708152 1613560 5708192 1613784 5708464 +1613840 5708448 1613784 5708464 1611464 5715504 1611512 5715528 +1613840 5708448 1613768 5708184 1613784 5708464 1611512 5715528 +1613784 5708464 1610752 5708648 1611464 5715504 1611512 5715528 +1613840 5708448 1613784 5708464 1611512 5715528 1611528 5715552 +1610752 5708648 1611464 5715504 1613784 5708464 1613560 5708192 +1610752 5708648 1613784 5708464 1613560 5708192 1610760 5708480 +1611464 5715504 1613784 5708464 1610752 5708648 1611352 5715472 +1613840 5708448 1613848 5708256 1613768 5708184 1613784 5708464 +1613840 5708448 1613848 5708256 1613784 5708464 1611512 5715528 +1613840 5708448 1613904 5708352 1613848 5708256 1613784 5708464 +1613768 5708184 1613560 5708192 1613784 5708464 1613848 5708256 +1613560 5708192 1613696 5708424 1613784 5708464 1613768 5708184 +1613784 5708464 1613848 5708256 1613768 5708184 1613696 5708424 +1613768 5708184 1613560 5708192 1613696 5708424 1613848 5708256 +1613560 5708192 1613696 5708424 1613768 5708184 1613616 5708152 +1613784 5708464 1613696 5708424 1610752 5708648 1611464 5715504 +1613696 5708424 1610752 5708648 1613784 5708464 1613848 5708256 +1613560 5708192 1610752 5708648 1613696 5708424 1613768 5708184 +1610752 5708648 1613696 5708424 1613560 5708192 1610760 5708480 +1613784 5708464 1613840 5708448 1613848 5708256 1613696 5708424 +1613840 5708448 1613904 5708352 1613848 5708256 1613696 5708424 +1613848 5708256 1613768 5708184 1613696 5708424 1613840 5708448 +1613784 5708464 1613840 5708448 1613696 5708424 1610752 5708648 +1613696 5708424 1613656 5708392 1610752 5708648 1613784 5708464 +1613560 5708192 1613656 5708392 1613696 5708424 1613768 5708184 +1613696 5708424 1613848 5708256 1613768 5708184 1613656 5708392 +1613696 5708424 1613840 5708448 1613848 5708256 1613656 5708392 +1613560 5708192 1613656 5708392 1613768 5708184 1613616 5708152 +1613656 5708392 1610752 5708648 1613696 5708424 1613848 5708256 +1610752 5708648 1613656 5708392 1613560 5708192 1610760 5708480 +1613768 5708184 1613616 5708152 1613656 5708392 1613848 5708256 +1613560 5708192 1610752 5708648 1613656 5708392 1613616 5708152 +1613768 5708184 1613720 5708152 1613616 5708152 1613656 5708392 +1613616 5708152 1613560 5708192 1613656 5708392 1613720 5708152 +1613768 5708184 1613720 5708152 1613656 5708392 1613848 5708256 +1613720 5708152 1613640 5708144 1613616 5708152 1613656 5708392 +1613616 5708152 1613560 5708192 1613656 5708392 1613640 5708144 +1613720 5708152 1613640 5708144 1613656 5708392 1613768 5708184 +1613656 5708392 1613608 5708344 1610752 5708648 1613696 5708424 +1610752 5708648 1613608 5708344 1613560 5708192 1610760 5708480 +1613560 5708192 1613608 5708344 1613656 5708392 1613616 5708152 +1613560 5708192 1610752 5708648 1613608 5708344 1613616 5708152 +1613656 5708392 1613640 5708144 1613616 5708152 1613608 5708344 +1613616 5708152 1613560 5708192 1613608 5708344 1613640 5708144 +1613608 5708344 1610752 5708648 1613656 5708392 1613640 5708144 +1613656 5708392 1613720 5708152 1613640 5708144 1613608 5708344 +1613640 5708144 1613616 5708152 1613608 5708344 1613720 5708152 +1613656 5708392 1613720 5708152 1613608 5708344 1610752 5708648 +1613656 5708392 1613768 5708184 1613720 5708152 1613608 5708344 +1613656 5708392 1613848 5708256 1613768 5708184 1613608 5708344 +1613656 5708392 1613768 5708184 1613608 5708344 1610752 5708648 +1613720 5708152 1613640 5708144 1613608 5708344 1613768 5708184 +1613560 5708192 1613552 5708272 1613608 5708344 1613616 5708152 +1613552 5708272 1610752 5708648 1613608 5708344 1613616 5708152 +1613560 5708192 1610752 5708648 1613552 5708272 1613616 5708152 +1610752 5708648 1613552 5708272 1613560 5708192 1610760 5708480 +1613560 5708192 1610728 5708400 1610760 5708480 1613552 5708272 +1610752 5708648 1613608 5708344 1613552 5708272 1610760 5708480 +1613552 5708272 1613616 5708152 1613560 5708192 1610760 5708480 +1613608 5708344 1613640 5708144 1613616 5708152 1613552 5708272 +1613608 5708344 1613552 5708272 1610752 5708648 1613656 5708392 +1614512 5707600 1611784 5706704 1609424 5706616 1609472 5706664 +1614512 5707600 1611784 5706704 1609472 5706664 1614408 5707648 +1611784 5706704 1609424 5706616 1609472 5706664 1614408 5707648 +1609424 5706616 1611784 5706704 1604152 5700872 1604160 5700992 +1614512 5707600 1604152 5700872 1611784 5706704 1614408 5707648 +1604152 5700872 1611784 5706704 1614512 5707600 1604104 5700768 +1611784 5706704 1614408 5707648 1614512 5707600 1604104 5700768 +1614512 5707600 1614576 5707608 1604104 5700768 1611784 5706704 +1614576 5707608 1602504 5696992 1604104 5700768 1611784 5706704 +1614576 5707608 1602224 5696056 1602504 5696992 1611784 5706704 +1602504 5696992 1604104 5700768 1611784 5706704 1602224 5696056 +1614576 5707608 1601624 5681136 1602224 5696056 1611784 5706704 +1614512 5707600 1614576 5707608 1611784 5706704 1614408 5707648 +1604104 5700768 1604152 5700872 1611784 5706704 1602504 5696992 +1614576 5707608 1602224 5696056 1611784 5706704 1614512 5707600 +1611784 5706704 1604152 5700872 1609424 5706616 1609472 5706664 +1604152 5700872 1609424 5706616 1611784 5706704 1604104 5700768 +1602224 5696056 1602224 5696096 1602504 5696992 1611784 5706704 +1602504 5696992 1604056 5700696 1604104 5700768 1611784 5706704 +1609472 5706664 1614360 5707680 1614408 5707648 1611784 5706704 +1614408 5707648 1614512 5707600 1611784 5706704 1614360 5707680 +1609472 5706664 1614288 5707728 1614360 5707680 1611784 5706704 +1609472 5706664 1614288 5707728 1611784 5706704 1609424 5706616 +1609472 5706664 1614240 5707760 1614288 5707728 1611784 5706704 +1614288 5707728 1614360 5707680 1611784 5706704 1614240 5707760 +1609472 5706664 1614240 5707760 1611784 5706704 1609424 5706616 +1609472 5706664 1613616 5708152 1614240 5707760 1611784 5706704 +1609472 5706664 1613616 5708152 1611784 5706704 1609424 5706616 +1613616 5708152 1613640 5708144 1614240 5707760 1611784 5706704 +1613616 5708152 1613640 5708144 1611784 5706704 1609472 5706664 +1613640 5708144 1614224 5707784 1614240 5707760 1611784 5706704 +1609472 5706664 1613560 5708192 1613616 5708152 1611784 5706704 +1609472 5706664 1610680 5708312 1613560 5708192 1611784 5706704 +1609472 5706664 1610640 5708296 1610680 5708312 1611784 5706704 +1610680 5708312 1613560 5708192 1611784 5706704 1610640 5708296 +1609472 5706664 1610640 5708296 1611784 5706704 1609424 5706616 +1609472 5706664 1609464 5706776 1610640 5708296 1611784 5706704 +1609464 5706776 1610552 5708288 1610640 5708296 1611784 5706704 +1610640 5708296 1610680 5708312 1611784 5706704 1610552 5708288 +1609472 5706664 1609464 5706776 1611784 5706704 1609424 5706616 +1609464 5706776 1610552 5708288 1611784 5706704 1609472 5706664 +1610680 5708312 1610712 5708360 1613560 5708192 1611784 5706704 +1610680 5708312 1610712 5708360 1611784 5706704 1610640 5708296 +1610712 5708360 1610728 5708400 1613560 5708192 1611784 5706704 +1610728 5708400 1610760 5708480 1613560 5708192 1611784 5706704 +1610728 5708400 1610760 5708480 1611784 5706704 1610712 5708360 +1610760 5708480 1613552 5708272 1613560 5708192 1611784 5706704 +1610712 5708360 1610728 5708400 1611784 5706704 1610680 5708312 +1613616 5708152 1613640 5708144 1611784 5706704 1613560 5708192 +1609464 5706776 1610440 5708328 1610552 5708288 1611784 5706704 +1613560 5708192 1613616 5708152 1611784 5706704 1610760 5708480 +1614240 5707760 1614288 5707728 1611784 5706704 1613640 5708144 +1614360 5707680 1614408 5707648 1611784 5706704 1614288 5707728 +1611784 5706704 1611832 5706704 1602224 5696056 1602504 5696992 +1611784 5706704 1611832 5706704 1602504 5696992 1604104 5700768 +1611832 5706704 1602224 5696056 1602504 5696992 1604104 5700768 +1602224 5696056 1611832 5706704 1614576 5707608 1601624 5681136 +1611784 5706704 1611832 5706704 1604104 5700768 1604152 5700872 +1611832 5706704 1602504 5696992 1604104 5700768 1604152 5700872 +1614576 5707608 1611832 5706704 1611784 5706704 1614512 5707600 +1611784 5706704 1614408 5707648 1614512 5707600 1611832 5706704 +1611784 5706704 1614360 5707680 1614408 5707648 1611832 5706704 +1614408 5707648 1614512 5707600 1611832 5706704 1614360 5707680 +1614576 5707608 1602224 5696056 1611832 5706704 1614512 5707600 +1614512 5707600 1614576 5707608 1611832 5706704 1614408 5707648 +1611784 5706704 1611832 5706704 1604152 5700872 1609424 5706616 +1611784 5706704 1614360 5707680 1611832 5706704 1604152 5700872 +1602224 5696056 1602224 5696096 1602504 5696992 1611832 5706704 +1602504 5696992 1604056 5700696 1604104 5700768 1611832 5706704 +1611832 5706704 1614576 5707608 1602224 5696056 1602504 5696992 +1611784 5706704 1614288 5707728 1614360 5707680 1611832 5706704 +1614360 5707680 1614408 5707648 1611832 5706704 1614288 5707728 +1611784 5706704 1614240 5707760 1614288 5707728 1611832 5706704 +1611784 5706704 1614240 5707760 1611832 5706704 1604152 5700872 +1611784 5706704 1613640 5708144 1614240 5707760 1611832 5706704 +1614240 5707760 1614288 5707728 1611832 5706704 1613640 5708144 +1611784 5706704 1613616 5708152 1613640 5708144 1611832 5706704 +1611784 5706704 1613560 5708192 1613616 5708152 1611832 5706704 +1613616 5708152 1613640 5708144 1611832 5706704 1613560 5708192 +1613640 5708144 1614224 5707784 1614240 5707760 1611832 5706704 +1611784 5706704 1613560 5708192 1611832 5706704 1604152 5700872 +1611784 5706704 1610760 5708480 1613560 5708192 1611832 5706704 +1611784 5706704 1610728 5708400 1610760 5708480 1611832 5706704 +1611784 5706704 1610712 5708360 1610728 5708400 1611832 5706704 +1610728 5708400 1610760 5708480 1611832 5706704 1610712 5708360 +1610760 5708480 1613552 5708272 1613560 5708192 1611832 5706704 +1611784 5706704 1610680 5708312 1610712 5708360 1611832 5706704 +1613560 5708192 1613616 5708152 1611832 5706704 1613552 5708272 +1611784 5706704 1610712 5708360 1611832 5706704 1604152 5700872 +1610760 5708480 1610752 5708648 1613552 5708272 1611832 5706704 +1610760 5708480 1613552 5708272 1611832 5706704 1610728 5708400 +1613640 5708144 1614240 5707760 1611832 5706704 1613616 5708152 +1614288 5707728 1614360 5707680 1611832 5706704 1614240 5707760 +1611832 5706704 1611904 5706776 1613552 5708272 1613560 5708192 +1611832 5706704 1610760 5708480 1611904 5706776 1613560 5708192 +1611904 5706776 1610760 5708480 1613552 5708272 1613560 5708192 +1611832 5706704 1611904 5706776 1613560 5708192 1613616 5708152 +1611832 5706704 1610760 5708480 1611904 5706776 1613616 5708152 +1611904 5706776 1613552 5708272 1613560 5708192 1613616 5708152 +1611832 5706704 1611904 5706776 1613616 5708152 1613640 5708144 +1611832 5706704 1610760 5708480 1611904 5706776 1613640 5708144 +1611904 5706776 1613560 5708192 1613616 5708152 1613640 5708144 +1613552 5708272 1611904 5706776 1610760 5708480 1610752 5708648 +1610760 5708480 1611904 5706776 1611832 5706704 1610728 5708400 +1610760 5708480 1613552 5708272 1611904 5706776 1610728 5708400 +1611904 5706776 1613640 5708144 1611832 5706704 1610728 5708400 +1611832 5706704 1610712 5708360 1610728 5708400 1611904 5706776 +1611832 5706704 1610712 5708360 1611904 5706776 1613640 5708144 +1611832 5706704 1611784 5706704 1610712 5708360 1611904 5706776 +1611832 5706704 1611784 5706704 1611904 5706776 1613640 5708144 +1610712 5708360 1610728 5708400 1611904 5706776 1611784 5706704 +1611784 5706704 1610680 5708312 1610712 5708360 1611904 5706776 +1611784 5706704 1610640 5708296 1610680 5708312 1611904 5706776 +1611784 5706704 1610680 5708312 1611904 5706776 1611832 5706704 +1610712 5708360 1610728 5708400 1611904 5706776 1610680 5708312 +1610728 5708400 1610760 5708480 1611904 5706776 1610712 5708360 +1611832 5706704 1611904 5706776 1613640 5708144 1614240 5707760 +1611832 5706704 1611784 5706704 1611904 5706776 1614240 5707760 +1611832 5706704 1611904 5706776 1614240 5707760 1614288 5707728 +1611832 5706704 1611784 5706704 1611904 5706776 1614288 5707728 +1611904 5706776 1613616 5708152 1613640 5708144 1614240 5707760 +1613640 5708144 1614224 5707784 1614240 5707760 1611904 5706776 +1611904 5706776 1613640 5708144 1614240 5707760 1614288 5707728 +1611832 5706704 1611904 5706776 1614288 5707728 1614360 5707680 +1611832 5706704 1611784 5706704 1611904 5706776 1614360 5707680 +1611832 5706704 1611904 5706776 1614360 5707680 1614408 5707648 +1611832 5706704 1611784 5706704 1611904 5706776 1614408 5707648 +1611904 5706776 1614240 5707760 1614288 5707728 1614360 5707680 +1611832 5706704 1611904 5706776 1614408 5707648 1614512 5707600 +1611832 5706704 1611784 5706704 1611904 5706776 1614512 5707600 +1611904 5706776 1614360 5707680 1614408 5707648 1614512 5707600 +1611832 5706704 1611904 5706776 1614512 5707600 1614576 5707608 +1611904 5706776 1614288 5707728 1614360 5707680 1614408 5707648 +1610760 5708480 1611944 5706832 1611904 5706776 1610728 5708400 +1611944 5706832 1613552 5708272 1611904 5706776 1610728 5708400 +1610760 5708480 1613552 5708272 1611944 5706832 1610728 5708400 +1611904 5706776 1611944 5706832 1613552 5708272 1613560 5708192 +1611904 5706776 1610728 5708400 1611944 5706832 1613560 5708192 +1611944 5706832 1610760 5708480 1613552 5708272 1613560 5708192 +1611904 5706776 1611944 5706832 1613560 5708192 1613616 5708152 +1611904 5706776 1610728 5708400 1611944 5706832 1613616 5708152 +1611944 5706832 1613552 5708272 1613560 5708192 1613616 5708152 +1611904 5706776 1611944 5706832 1613616 5708152 1613640 5708144 +1611904 5706776 1610728 5708400 1611944 5706832 1613640 5708144 +1611944 5706832 1613560 5708192 1613616 5708152 1613640 5708144 +1611904 5706776 1611944 5706832 1613640 5708144 1614240 5707760 +1611904 5706776 1610728 5708400 1611944 5706832 1614240 5707760 +1611944 5706832 1613616 5708152 1613640 5708144 1614240 5707760 +1613640 5708144 1614224 5707784 1614240 5707760 1611944 5706832 +1613552 5708272 1611944 5706832 1610760 5708480 1610752 5708648 +1611904 5706776 1610712 5708360 1610728 5708400 1611944 5706832 +1611904 5706776 1610712 5708360 1611944 5706832 1614240 5707760 +1610728 5708400 1610760 5708480 1611944 5706832 1610712 5708360 +1611904 5706776 1610680 5708312 1610712 5708360 1611944 5706832 +1611904 5706776 1610680 5708312 1611944 5706832 1614240 5707760 +1611904 5706776 1611784 5706704 1610680 5708312 1611944 5706832 +1611904 5706776 1611784 5706704 1611944 5706832 1614240 5707760 +1611784 5706704 1610640 5708296 1610680 5708312 1611944 5706832 +1611904 5706776 1611832 5706704 1611784 5706704 1611944 5706832 +1610680 5708312 1610712 5708360 1611944 5706832 1611784 5706704 +1610712 5708360 1610728 5708400 1611944 5706832 1610680 5708312 +1611904 5706776 1611944 5706832 1614240 5707760 1614288 5707728 +1611904 5706776 1611784 5706704 1611944 5706832 1614288 5707728 +1611904 5706776 1611944 5706832 1614288 5707728 1614360 5707680 +1611904 5706776 1611784 5706704 1611944 5706832 1614360 5707680 +1611944 5706832 1613640 5708144 1614240 5707760 1614288 5707728 +1611944 5706832 1614240 5707760 1614288 5707728 1614360 5707680 +1611904 5706776 1611944 5706832 1614360 5707680 1614408 5707648 +1611904 5706776 1611784 5706704 1611944 5706832 1614408 5707648 +1611904 5706776 1611944 5706832 1614408 5707648 1614512 5707600 +1611904 5706776 1611784 5706704 1611944 5706832 1614512 5707600 +1611944 5706832 1614288 5707728 1614360 5707680 1614408 5707648 +1611904 5706776 1611944 5706832 1614512 5707600 1611832 5706704 +1611944 5706832 1614360 5707680 1614408 5707648 1614512 5707600 +1611944 5706832 1611984 5706880 1613552 5708272 1613560 5708192 +1611944 5706832 1610760 5708480 1611984 5706880 1613560 5708192 +1610760 5708480 1611984 5706880 1611944 5706832 1610728 5708400 +1611944 5706832 1610712 5708360 1610728 5708400 1611984 5706880 +1611984 5706880 1613560 5708192 1611944 5706832 1610712 5708360 +1610728 5708400 1610760 5708480 1611984 5706880 1610712 5708360 +1611944 5706832 1611984 5706880 1613560 5708192 1613616 5708152 +1611984 5706880 1613552 5708272 1613560 5708192 1613616 5708152 +1611944 5706832 1610712 5708360 1611984 5706880 1613616 5708152 +1611984 5706880 1610760 5708480 1613552 5708272 1613560 5708192 +1610760 5708480 1613552 5708272 1611984 5706880 1610728 5708400 +1611944 5706832 1611984 5706880 1613616 5708152 1613640 5708144 +1611944 5706832 1610712 5708360 1611984 5706880 1613640 5708144 +1611984 5706880 1613560 5708192 1613616 5708152 1613640 5708144 +1611944 5706832 1611984 5706880 1613640 5708144 1614240 5707760 +1611944 5706832 1610712 5708360 1611984 5706880 1614240 5707760 +1611984 5706880 1613616 5708152 1613640 5708144 1614240 5707760 +1611944 5706832 1611984 5706880 1614240 5707760 1614288 5707728 +1611944 5706832 1610712 5708360 1611984 5706880 1614288 5707728 +1611984 5706880 1613640 5708144 1614240 5707760 1614288 5707728 +1613640 5708144 1614224 5707784 1614240 5707760 1611984 5706880 +1613552 5708272 1611984 5706880 1610760 5708480 1610752 5708648 +1611944 5706832 1610680 5708312 1610712 5708360 1611984 5706880 +1610712 5708360 1610728 5708400 1611984 5706880 1610680 5708312 +1611944 5706832 1610680 5708312 1611984 5706880 1614288 5707728 +1611944 5706832 1611784 5706704 1610680 5708312 1611984 5706880 +1611944 5706832 1611784 5706704 1611984 5706880 1614288 5707728 +1611784 5706704 1610640 5708296 1610680 5708312 1611984 5706880 +1611944 5706832 1611904 5706776 1611784 5706704 1611984 5706880 +1610680 5708312 1610712 5708360 1611984 5706880 1611784 5706704 +1611944 5706832 1611984 5706880 1614288 5707728 1614360 5707680 +1611944 5706832 1611784 5706704 1611984 5706880 1614360 5707680 +1611944 5706832 1611984 5706880 1614360 5707680 1614408 5707648 +1611944 5706832 1611784 5706704 1611984 5706880 1614408 5707648 +1611984 5706880 1614240 5707760 1614288 5707728 1614360 5707680 +1611984 5706880 1614288 5707728 1614360 5707680 1614408 5707648 +1611944 5706832 1611984 5706880 1614408 5707648 1614512 5707600 +1611944 5706832 1611784 5706704 1611984 5706880 1614512 5707600 +1611944 5706832 1611984 5706880 1614512 5707600 1611904 5706776 +1611944 5706832 1611784 5706704 1611984 5706880 1611904 5706776 +1611984 5706880 1614360 5707680 1614408 5707648 1614512 5707600 +1614512 5707600 1611832 5706704 1611904 5706776 1611984 5706880 +1611984 5706880 1614408 5707648 1614512 5707600 1611904 5706776 +1611984 5706880 1612048 5706984 1613552 5708272 1613560 5708192 +1611984 5706880 1612048 5706984 1613560 5708192 1613616 5708152 +1611984 5706880 1612048 5706984 1613616 5708152 1613640 5708144 +1612048 5706984 1613560 5708192 1613616 5708152 1613640 5708144 +1612048 5706984 1613552 5708272 1613560 5708192 1613616 5708152 +1611984 5706880 1610760 5708480 1612048 5706984 1613640 5708144 +1610760 5708480 1612048 5706984 1611984 5706880 1610728 5708400 +1611984 5706880 1610712 5708360 1610728 5708400 1612048 5706984 +1611984 5706880 1610680 5708312 1610712 5708360 1612048 5706984 +1610712 5708360 1610728 5708400 1612048 5706984 1610680 5708312 +1612048 5706984 1613640 5708144 1611984 5706880 1610680 5708312 +1610728 5708400 1610760 5708480 1612048 5706984 1610712 5708360 +1612048 5706984 1610760 5708480 1613552 5708272 1613560 5708192 +1611984 5706880 1612048 5706984 1613640 5708144 1614240 5707760 +1612048 5706984 1613616 5708152 1613640 5708144 1614240 5707760 +1611984 5706880 1610680 5708312 1612048 5706984 1614240 5707760 +1610760 5708480 1613552 5708272 1612048 5706984 1610728 5708400 +1611984 5706880 1612048 5706984 1614240 5707760 1614288 5707728 +1611984 5706880 1610680 5708312 1612048 5706984 1614288 5707728 +1612048 5706984 1613640 5708144 1614240 5707760 1614288 5707728 +1611984 5706880 1612048 5706984 1614288 5707728 1614360 5707680 +1611984 5706880 1610680 5708312 1612048 5706984 1614360 5707680 +1612048 5706984 1614240 5707760 1614288 5707728 1614360 5707680 +1613640 5708144 1614224 5707784 1614240 5707760 1612048 5706984 +1613552 5708272 1612048 5706984 1610760 5708480 1610752 5708648 +1611984 5706880 1611784 5706704 1610680 5708312 1612048 5706984 +1610680 5708312 1610712 5708360 1612048 5706984 1611784 5706704 +1611784 5706704 1610640 5708296 1610680 5708312 1612048 5706984 +1611984 5706880 1611784 5706704 1612048 5706984 1614360 5707680 +1611984 5706880 1611944 5706832 1611784 5706704 1612048 5706984 +1611984 5706880 1611944 5706832 1612048 5706984 1614360 5707680 +1611944 5706832 1611904 5706776 1611784 5706704 1612048 5706984 +1611784 5706704 1610680 5708312 1612048 5706984 1611944 5706832 +1611984 5706880 1612048 5706984 1614360 5707680 1614408 5707648 +1611984 5706880 1611944 5706832 1612048 5706984 1614408 5707648 +1611984 5706880 1612048 5706984 1614408 5707648 1614512 5707600 +1612048 5706984 1614288 5707728 1614360 5707680 1614408 5707648 +1612048 5706984 1612096 5707088 1613552 5708272 1613560 5708192 +1612048 5706984 1612096 5707088 1613560 5708192 1613616 5708152 +1612048 5706984 1612096 5707088 1613616 5708152 1613640 5708144 +1612048 5706984 1612096 5707088 1613640 5708144 1614240 5707760 +1612096 5707088 1613616 5708152 1613640 5708144 1614240 5707760 +1612096 5707088 1613560 5708192 1613616 5708152 1613640 5708144 +1612096 5707088 1613552 5708272 1613560 5708192 1613616 5708152 +1612048 5706984 1610760 5708480 1612096 5707088 1614240 5707760 +1612048 5706984 1612096 5707088 1614240 5707760 1614288 5707728 +1612096 5707088 1613640 5708144 1614240 5707760 1614288 5707728 +1612048 5706984 1610760 5708480 1612096 5707088 1614288 5707728 +1610760 5708480 1612096 5707088 1612048 5706984 1610728 5708400 +1612048 5706984 1610712 5708360 1610728 5708400 1612096 5707088 +1612048 5706984 1610680 5708312 1610712 5708360 1612096 5707088 +1612048 5706984 1611784 5706704 1610680 5708312 1612096 5707088 +1610680 5708312 1610712 5708360 1612096 5707088 1611784 5706704 +1611784 5706704 1610640 5708296 1610680 5708312 1612096 5707088 +1610712 5708360 1610728 5708400 1612096 5707088 1610680 5708312 +1612096 5707088 1614288 5707728 1612048 5706984 1611784 5706704 +1610728 5708400 1610760 5708480 1612096 5707088 1610712 5708360 +1612096 5707088 1610760 5708480 1613552 5708272 1613560 5708192 +1610760 5708480 1613552 5708272 1612096 5707088 1610728 5708400 +1612048 5706984 1612096 5707088 1614288 5707728 1614360 5707680 +1612048 5706984 1611784 5706704 1612096 5707088 1614360 5707680 +1612096 5707088 1614240 5707760 1614288 5707728 1614360 5707680 +1612048 5706984 1612096 5707088 1614360 5707680 1614408 5707648 +1613640 5708144 1614224 5707784 1614240 5707760 1612096 5707088 +1613552 5708272 1612096 5707088 1610760 5708480 1610752 5708648 +1612048 5706984 1611944 5706832 1611784 5706704 1612096 5707088 +1612096 5707088 1612128 5707184 1613552 5708272 1613560 5708192 +1612096 5707088 1612128 5707184 1613560 5708192 1613616 5708152 +1612096 5707088 1612128 5707184 1613616 5708152 1613640 5708144 +1612096 5707088 1612128 5707184 1613640 5708144 1614240 5707760 +1612096 5707088 1612128 5707184 1614240 5707760 1614288 5707728 +1612128 5707184 1613616 5708152 1613640 5708144 1614240 5707760 +1612128 5707184 1613560 5708192 1613616 5708152 1613640 5708144 +1612128 5707184 1613552 5708272 1613560 5708192 1613616 5708152 +1612096 5707088 1610760 5708480 1612128 5707184 1614240 5707760 +1610760 5708480 1612128 5707184 1612096 5707088 1610728 5708400 +1612096 5707088 1610712 5708360 1610728 5708400 1612128 5707184 +1612096 5707088 1610680 5708312 1610712 5708360 1612128 5707184 +1612096 5707088 1611784 5706704 1610680 5708312 1612128 5707184 +1612096 5707088 1612048 5706984 1611784 5706704 1612128 5707184 +1611784 5706704 1610640 5708296 1610680 5708312 1612128 5707184 +1610680 5708312 1610712 5708360 1612128 5707184 1611784 5706704 +1610712 5708360 1610728 5708400 1612128 5707184 1610680 5708312 +1612128 5707184 1614240 5707760 1612096 5707088 1611784 5706704 +1610728 5708400 1610760 5708480 1612128 5707184 1610712 5708360 +1612128 5707184 1610760 5708480 1613552 5708272 1613560 5708192 +1613640 5708144 1614224 5707784 1614240 5707760 1612128 5707184 +1613552 5708272 1612128 5707184 1610760 5708480 1610752 5708648 +1610760 5708480 1613552 5708272 1612128 5707184 1610728 5708400 +1612128 5707184 1612160 5707288 1613552 5708272 1613560 5708192 +1612128 5707184 1612160 5707288 1613560 5708192 1613616 5708152 +1612128 5707184 1612160 5707288 1613616 5708152 1613640 5708144 +1612128 5707184 1612160 5707288 1613640 5708144 1614240 5707760 +1612128 5707184 1612160 5707288 1614240 5707760 1612096 5707088 +1612160 5707288 1613616 5708152 1613640 5708144 1614240 5707760 +1612160 5707288 1613560 5708192 1613616 5708152 1613640 5708144 +1612160 5707288 1613552 5708272 1613560 5708192 1613616 5708152 +1613640 5708144 1614224 5707784 1614240 5707760 1612160 5707288 +1613552 5708272 1612160 5707288 1610760 5708480 1610752 5708648 +1613552 5708272 1612160 5707288 1610752 5708648 1613608 5708344 +1612128 5707184 1610760 5708480 1612160 5707288 1614240 5707760 +1610760 5708480 1612160 5707288 1612128 5707184 1610728 5708400 +1612128 5707184 1610712 5708360 1610728 5708400 1612160 5707288 +1612128 5707184 1610680 5708312 1610712 5708360 1612160 5707288 +1612128 5707184 1611784 5706704 1610680 5708312 1612160 5707288 +1610712 5708360 1610728 5708400 1612160 5707288 1610680 5708312 +1612160 5707288 1614240 5707760 1612128 5707184 1610680 5708312 +1610728 5708400 1610760 5708480 1612160 5707288 1610712 5708360 +1612160 5707288 1610752 5708648 1613552 5708272 1613560 5708192 +1612160 5707288 1610728 5708400 1610760 5708480 1610752 5708648 +1613552 5708272 1612184 5707392 1610752 5708648 1613608 5708344 +1610752 5708648 1612184 5707392 1612160 5707288 1610760 5708480 +1610752 5708648 1613552 5708272 1612184 5707392 1610760 5708480 +1612160 5707288 1612184 5707392 1613552 5708272 1613560 5708192 +1612160 5707288 1612184 5707392 1613560 5708192 1613616 5708152 +1612160 5707288 1612184 5707392 1613616 5708152 1613640 5708144 +1612184 5707392 1610752 5708648 1613552 5708272 1613560 5708192 +1612184 5707392 1613552 5708272 1613560 5708192 1613616 5708152 +1612184 5707392 1613616 5708152 1612160 5707288 1610760 5708480 +1612160 5707288 1610728 5708400 1610760 5708480 1612184 5707392 +1610760 5708480 1610752 5708648 1612184 5707392 1610728 5708400 +1612160 5707288 1610712 5708360 1610728 5708400 1612184 5707392 +1612160 5707288 1610680 5708312 1610712 5708360 1612184 5707392 +1612160 5707288 1612128 5707184 1610680 5708312 1612184 5707392 +1610712 5708360 1610728 5708400 1612184 5707392 1610680 5708312 +1612160 5707288 1610680 5708312 1612184 5707392 1613616 5708152 +1610728 5708400 1610760 5708480 1612184 5707392 1610712 5708360 +1613552 5708272 1612192 5707440 1610752 5708648 1613608 5708344 +1612184 5707392 1612192 5707440 1613552 5708272 1613560 5708192 +1612184 5707392 1610752 5708648 1612192 5707440 1613560 5708192 +1610752 5708648 1612192 5707440 1612184 5707392 1610760 5708480 +1610752 5708648 1613552 5708272 1612192 5707440 1610760 5708480 +1612192 5707440 1613560 5708192 1612184 5707392 1610760 5708480 +1612192 5707440 1610752 5708648 1613552 5708272 1613560 5708192 +1612184 5707392 1610728 5708400 1610760 5708480 1612192 5707440 +1612184 5707392 1610728 5708400 1612192 5707440 1613560 5708192 +1610760 5708480 1610752 5708648 1612192 5707440 1610728 5708400 +1612184 5707392 1612192 5707440 1613560 5708192 1613616 5708152 +1612184 5707392 1612192 5707440 1613616 5708152 1612160 5707288 +1612192 5707440 1613552 5708272 1613560 5708192 1613616 5708152 +1612184 5707392 1610728 5708400 1612192 5707440 1613616 5708152 +1612184 5707392 1610712 5708360 1610728 5708400 1612192 5707440 +1612184 5707392 1610712 5708360 1612192 5707440 1613616 5708152 +1610728 5708400 1610760 5708480 1612192 5707440 1610712 5708360 +1612184 5707392 1610680 5708312 1610712 5708360 1612192 5707440 +1612184 5707392 1612160 5707288 1610680 5708312 1612192 5707440 +1612184 5707392 1610680 5708312 1612192 5707440 1613616 5708152 +1610712 5708360 1610728 5708400 1612192 5707440 1610680 5708312 +1610752 5708648 1612184 5707472 1612192 5707440 1610760 5708480 +1610752 5708648 1613552 5708272 1612184 5707472 1610760 5708480 +1613552 5708272 1612184 5707472 1610752 5708648 1613608 5708344 +1612192 5707440 1610728 5708400 1610760 5708480 1612184 5707472 +1610760 5708480 1610752 5708648 1612184 5707472 1610728 5708400 +1612192 5707440 1612184 5707472 1613552 5708272 1613560 5708192 +1612184 5707472 1610752 5708648 1613552 5708272 1613560 5708192 +1612192 5707440 1612184 5707472 1613560 5708192 1613616 5708152 +1612184 5707472 1613560 5708192 1612192 5707440 1610728 5708400 +1612192 5707440 1610712 5708360 1610728 5708400 1612184 5707472 +1610728 5708400 1610760 5708480 1612184 5707472 1610712 5708360 +1612192 5707440 1610712 5708360 1612184 5707472 1613560 5708192 +1612192 5707440 1610680 5708312 1610712 5708360 1612184 5707472 +1612192 5707440 1610680 5708312 1612184 5707472 1613560 5708192 +1610712 5708360 1610728 5708400 1612184 5707472 1610680 5708312 +1612192 5707440 1612184 5707392 1610680 5708312 1612184 5707472 +1612184 5707392 1612160 5707288 1610680 5708312 1612184 5707472 +1612160 5707288 1612128 5707184 1610680 5708312 1612184 5707472 +1612128 5707184 1611784 5706704 1610680 5708312 1612184 5707472 +1612160 5707288 1612128 5707184 1612184 5707472 1612184 5707392 +1612192 5707440 1612184 5707392 1612184 5707472 1613560 5708192 +1612184 5707392 1612160 5707288 1612184 5707472 1612192 5707440 +1610680 5708312 1610712 5708360 1612184 5707472 1612128 5707184 +1612184 5707472 1612128 5707520 1613552 5708272 1613560 5708192 +1612184 5707472 1610752 5708648 1612128 5707520 1613560 5708192 +1610752 5708648 1612128 5707520 1612184 5707472 1610760 5708480 +1610752 5708648 1613552 5708272 1612128 5707520 1610760 5708480 +1612184 5707472 1610728 5708400 1610760 5708480 1612128 5707520 +1612128 5707520 1613560 5708192 1612184 5707472 1610728 5708400 +1610760 5708480 1610752 5708648 1612128 5707520 1610728 5708400 +1612128 5707520 1610752 5708648 1613552 5708272 1613560 5708192 +1613552 5708272 1612128 5707520 1610752 5708648 1613608 5708344 +1612184 5707472 1610712 5708360 1610728 5708400 1612128 5707520 +1610728 5708400 1610760 5708480 1612128 5707520 1610712 5708360 +1612184 5707472 1610712 5708360 1612128 5707520 1613560 5708192 +1612184 5707472 1612128 5707520 1613560 5708192 1612192 5707440 +1612184 5707472 1610680 5708312 1610712 5708360 1612128 5707520 +1612184 5707472 1610680 5708312 1612128 5707520 1613560 5708192 +1610712 5708360 1610728 5708400 1612128 5707520 1610680 5708312 +1612184 5707472 1612128 5707184 1610680 5708312 1612128 5707520 +1612128 5707184 1611784 5706704 1610680 5708312 1612128 5707520 +1612128 5707184 1612096 5707088 1611784 5706704 1612128 5707520 +1612096 5707088 1612048 5706984 1611784 5706704 1612128 5707520 +1612096 5707088 1612048 5706984 1612128 5707520 1612128 5707184 +1611784 5706704 1610640 5708296 1610680 5708312 1612128 5707520 +1611784 5706704 1610680 5708312 1612128 5707520 1612048 5706984 +1612184 5707472 1612160 5707288 1612128 5707184 1612128 5707520 +1612184 5707472 1612184 5707392 1612160 5707288 1612128 5707520 +1612160 5707288 1612128 5707184 1612128 5707520 1612184 5707392 +1612184 5707472 1612184 5707392 1612128 5707520 1613560 5708192 +1610680 5708312 1610712 5708360 1612128 5707520 1611784 5706704 +1612048 5706984 1611944 5706832 1611784 5706704 1612128 5707520 +1612184 5707472 1612192 5707440 1612184 5707392 1612128 5707520 +1612184 5707392 1612160 5707288 1612128 5707520 1612192 5707440 +1612184 5707472 1612192 5707440 1612128 5707520 1613560 5708192 +1612128 5707184 1612096 5707088 1612128 5707520 1612160 5707288 +1610680 5708312 1612040 5707520 1611784 5706704 1610640 5708296 +1611784 5706704 1612040 5707520 1612128 5707520 1612048 5706984 +1612128 5707520 1612096 5707088 1612048 5706984 1612040 5707520 +1612128 5707520 1612128 5707184 1612096 5707088 1612040 5707520 +1612096 5707088 1612048 5706984 1612040 5707520 1612128 5707184 +1612048 5706984 1611784 5706704 1612040 5707520 1612096 5707088 +1612040 5707520 1610680 5708312 1612128 5707520 1612128 5707184 +1611784 5706704 1610680 5708312 1612040 5707520 1612048 5706984 +1612128 5707520 1612040 5707520 1610680 5708312 1610712 5708360 +1612128 5707520 1612128 5707184 1612040 5707520 1610712 5708360 +1612040 5707520 1611784 5706704 1610680 5708312 1610712 5708360 +1612128 5707520 1612040 5707520 1610712 5708360 1610728 5708400 +1612128 5707520 1612128 5707184 1612040 5707520 1610728 5708400 +1612128 5707520 1612040 5707520 1610728 5708400 1610760 5708480 +1612128 5707520 1612128 5707184 1612040 5707520 1610760 5708480 +1612128 5707520 1612040 5707520 1610760 5708480 1610752 5708648 +1612128 5707520 1612128 5707184 1612040 5707520 1610752 5708648 +1612128 5707520 1612040 5707520 1610752 5708648 1613552 5708272 +1612040 5707520 1610728 5708400 1610760 5708480 1610752 5708648 +1612040 5707520 1610712 5708360 1610728 5708400 1610760 5708480 +1612040 5707520 1610680 5708312 1610712 5708360 1610728 5708400 +1611784 5706704 1612040 5707520 1612048 5706984 1611944 5706832 +1612040 5707520 1612096 5707088 1612048 5706984 1611944 5706832 +1612048 5706984 1611984 5706880 1611944 5706832 1612040 5707520 +1612048 5706984 1611984 5706880 1612040 5707520 1612096 5707088 +1611784 5706704 1610680 5708312 1612040 5707520 1611944 5706832 +1611784 5706704 1612040 5707520 1611944 5706832 1611904 5706776 +1611944 5706832 1611784 5706704 1612040 5707520 1611984 5706880 +1612128 5707520 1612160 5707288 1612128 5707184 1612040 5707520 +1612128 5707184 1612096 5707088 1612040 5707520 1612160 5707288 +1612128 5707520 1612160 5707288 1612040 5707520 1610752 5708648 +1612128 5707520 1612184 5707392 1612160 5707288 1612040 5707520 +1612128 5707520 1612184 5707392 1612040 5707520 1610752 5708648 +1612128 5707520 1612192 5707440 1612184 5707392 1612040 5707520 +1612160 5707288 1612128 5707184 1612040 5707520 1612184 5707392 +1610680 5708312 1611960 5707464 1611784 5706704 1610640 5708296 +1611784 5706704 1610552 5708288 1610640 5708296 1611960 5707464 +1610680 5708312 1612040 5707520 1611960 5707464 1610640 5708296 +1611960 5707464 1612040 5707520 1611784 5706704 1610640 5708296 +1612040 5707520 1611960 5707464 1610680 5708312 1610712 5708360 +1611960 5707464 1610640 5708296 1610680 5708312 1610712 5708360 +1612040 5707520 1611784 5706704 1611960 5707464 1610712 5708360 +1611784 5706704 1611960 5707464 1612040 5707520 1611944 5706832 +1611784 5706704 1610640 5708296 1611960 5707464 1611944 5706832 +1611960 5707464 1610712 5708360 1612040 5707520 1611944 5706832 +1611784 5706704 1611960 5707464 1611944 5706832 1611904 5706776 +1612040 5707520 1611960 5707464 1610712 5708360 1610728 5708400 +1611960 5707464 1610680 5708312 1610712 5708360 1610728 5708400 +1612040 5707520 1611944 5706832 1611960 5707464 1610728 5708400 +1612040 5707520 1611960 5707464 1610728 5708400 1610760 5708480 +1612040 5707520 1611944 5706832 1611960 5707464 1610760 5708480 +1612040 5707520 1611960 5707464 1610760 5708480 1610752 5708648 +1611960 5707464 1610712 5708360 1610728 5708400 1610760 5708480 +1612040 5707520 1611984 5706880 1611944 5706832 1611960 5707464 +1612040 5707520 1612048 5706984 1611984 5706880 1611960 5707464 +1612040 5707520 1612096 5707088 1612048 5706984 1611960 5707464 +1612040 5707520 1612128 5707184 1612096 5707088 1611960 5707464 +1612040 5707520 1612160 5707288 1612128 5707184 1611960 5707464 +1612128 5707184 1612096 5707088 1611960 5707464 1612160 5707288 +1612096 5707088 1612048 5706984 1611960 5707464 1612128 5707184 +1612048 5706984 1611984 5706880 1611960 5707464 1612096 5707088 +1612040 5707520 1612160 5707288 1611960 5707464 1610760 5708480 +1611944 5706832 1611784 5706704 1611960 5707464 1611984 5706880 +1611984 5706880 1611944 5706832 1611960 5707464 1612048 5706984 +1612040 5707520 1612184 5707392 1612160 5707288 1611960 5707464 +1612160 5707288 1612128 5707184 1611960 5707464 1612184 5707392 +1612040 5707520 1612184 5707392 1611960 5707464 1610760 5708480 +1612040 5707520 1612128 5707520 1612184 5707392 1611960 5707464 +1611960 5707464 1611912 5707440 1610640 5708296 1610680 5708312 +1610640 5708296 1611912 5707440 1611784 5706704 1610552 5708288 +1611960 5707464 1611912 5707440 1610680 5708312 1610712 5708360 +1611912 5707440 1610640 5708296 1610680 5708312 1610712 5708360 +1611960 5707464 1611784 5706704 1611912 5707440 1610712 5708360 +1611784 5706704 1611912 5707440 1611960 5707464 1611944 5706832 +1611912 5707440 1610712 5708360 1611960 5707464 1611944 5706832 +1611912 5707440 1611784 5706704 1610640 5708296 1610680 5708312 +1611960 5707464 1611912 5707440 1610712 5708360 1610728 5708400 +1611912 5707440 1610680 5708312 1610712 5708360 1610728 5708400 +1611960 5707464 1611944 5706832 1611912 5707440 1610728 5708400 +1611960 5707464 1611984 5706880 1611944 5706832 1611912 5707440 +1611960 5707464 1611984 5706880 1611912 5707440 1610728 5708400 +1611944 5706832 1611784 5706704 1611912 5707440 1611984 5706880 +1611784 5706704 1611912 5707440 1611944 5706832 1611904 5706776 +1611784 5706704 1610640 5708296 1611912 5707440 1611944 5706832 +1611960 5707464 1611912 5707440 1610728 5708400 1610760 5708480 +1611960 5707464 1611984 5706880 1611912 5707440 1610760 5708480 +1611912 5707440 1610712 5708360 1610728 5708400 1610760 5708480 +1611960 5707464 1611912 5707440 1610760 5708480 1612040 5707520 +1611960 5707464 1611984 5706880 1611912 5707440 1612040 5707520 +1610760 5708480 1610752 5708648 1612040 5707520 1611912 5707440 +1611912 5707440 1610728 5708400 1610760 5708480 1612040 5707520 +1611960 5707464 1612048 5706984 1611984 5706880 1611912 5707440 +1611960 5707464 1612096 5707088 1612048 5706984 1611912 5707440 +1611960 5707464 1612128 5707184 1612096 5707088 1611912 5707440 +1611960 5707464 1612160 5707288 1612128 5707184 1611912 5707440 +1611960 5707464 1612184 5707392 1612160 5707288 1611912 5707440 +1612128 5707184 1612096 5707088 1611912 5707440 1612160 5707288 +1612096 5707088 1612048 5706984 1611912 5707440 1612128 5707184 +1611960 5707464 1612160 5707288 1611912 5707440 1612040 5707520 +1611984 5706880 1611944 5706832 1611912 5707440 1612048 5706984 +1612048 5706984 1611984 5706880 1611912 5707440 1612096 5707088 +1610640 5708296 1611872 5707400 1611784 5706704 1610552 5708288 +1611912 5707440 1611872 5707400 1610640 5708296 1610680 5708312 +1611912 5707440 1611872 5707400 1610680 5708312 1610712 5708360 +1611912 5707440 1611872 5707400 1610712 5708360 1610728 5708400 +1611872 5707400 1610640 5708296 1610680 5708312 1610712 5708360 +1611912 5707440 1611784 5706704 1611872 5707400 1610712 5708360 +1611784 5706704 1611872 5707400 1611912 5707440 1611944 5706832 +1611912 5707440 1611984 5706880 1611944 5706832 1611872 5707400 +1611872 5707400 1610712 5708360 1611912 5707440 1611984 5706880 +1611912 5707440 1612048 5706984 1611984 5706880 1611872 5707400 +1611984 5706880 1611944 5706832 1611872 5707400 1612048 5706984 +1611912 5707440 1612048 5706984 1611872 5707400 1610712 5708360 +1611784 5706704 1611872 5707400 1611944 5706832 1611904 5706776 +1611944 5706832 1611784 5706704 1611872 5707400 1611984 5706880 +1611872 5707400 1611784 5706704 1610640 5708296 1610680 5708312 +1611784 5706704 1610640 5708296 1611872 5707400 1611944 5706832 +1611912 5707440 1612096 5707088 1612048 5706984 1611872 5707400 +1611912 5707440 1612128 5707184 1612096 5707088 1611872 5707400 +1611912 5707440 1612160 5707288 1612128 5707184 1611872 5707400 +1611912 5707440 1611960 5707464 1612160 5707288 1611872 5707400 +1612128 5707184 1612096 5707088 1611872 5707400 1612160 5707288 +1611912 5707440 1612160 5707288 1611872 5707400 1610712 5708360 +1612048 5706984 1611984 5706880 1611872 5707400 1612096 5707088 +1612096 5707088 1612048 5706984 1611872 5707400 1612128 5707184 +1610640 5708296 1611824 5707344 1611784 5706704 1610552 5708288 +1611824 5707344 1611872 5707400 1611784 5706704 1610552 5708288 +1611784 5706704 1609464 5706776 1610552 5708288 1611824 5707344 +1611872 5707400 1611824 5707344 1610640 5708296 1610680 5708312 +1611872 5707400 1611824 5707344 1610680 5708312 1610712 5708360 +1611872 5707400 1611784 5706704 1611824 5707344 1610680 5708312 +1611784 5706704 1611824 5707344 1611872 5707400 1611944 5706832 +1611784 5706704 1610552 5708288 1611824 5707344 1611944 5706832 +1611784 5706704 1611824 5707344 1611944 5706832 1611904 5706776 +1611872 5707400 1611984 5706880 1611944 5706832 1611824 5707344 +1611872 5707400 1612048 5706984 1611984 5706880 1611824 5707344 +1611872 5707400 1612096 5707088 1612048 5706984 1611824 5707344 +1612048 5706984 1611984 5706880 1611824 5707344 1612096 5707088 +1611984 5706880 1611944 5706832 1611824 5707344 1612048 5706984 +1611824 5707344 1610680 5708312 1611872 5707400 1612096 5707088 +1611944 5706832 1611784 5706704 1611824 5707344 1611984 5706880 +1610640 5708296 1610680 5708312 1611824 5707344 1610552 5708288 +1611872 5707400 1612128 5707184 1612096 5707088 1611824 5707344 +1611872 5707400 1612160 5707288 1612128 5707184 1611824 5707344 +1612096 5707088 1612048 5706984 1611824 5707344 1612128 5707184 +1611872 5707400 1612128 5707184 1611824 5707344 1610680 5708312 +1611784 5706704 1611744 5707272 1611824 5707344 1611944 5706832 +1611744 5707272 1610552 5708288 1611824 5707344 1611944 5706832 +1611784 5706704 1610552 5708288 1611744 5707272 1611944 5706832 +1610552 5708288 1611744 5707272 1611784 5706704 1609464 5706776 +1610552 5708288 1611824 5707344 1611744 5707272 1609464 5706776 +1611744 5707272 1611944 5706832 1611784 5706704 1609464 5706776 +1611824 5707344 1611744 5707272 1610552 5708288 1610640 5708296 +1611824 5707344 1611944 5706832 1611744 5707272 1610640 5708296 +1611744 5707272 1609464 5706776 1610552 5708288 1610640 5708296 +1611784 5706704 1609472 5706664 1609464 5706776 1611744 5707272 +1611784 5706704 1611744 5707272 1611944 5706832 1611904 5706776 +1610552 5708288 1611744 5707272 1609464 5706776 1610440 5708328 +1611824 5707344 1611984 5706880 1611944 5706832 1611744 5707272 +1611824 5707344 1611984 5706880 1611744 5707272 1610640 5708296 +1611944 5706832 1611784 5706704 1611744 5707272 1611984 5706880 +1611824 5707344 1612048 5706984 1611984 5706880 1611744 5707272 +1611824 5707344 1612048 5706984 1611744 5707272 1610640 5708296 +1611824 5707344 1612096 5707088 1612048 5706984 1611744 5707272 +1611824 5707344 1612096 5707088 1611744 5707272 1610640 5708296 +1611824 5707344 1612128 5707184 1612096 5707088 1611744 5707272 +1612048 5706984 1611984 5706880 1611744 5707272 1612096 5707088 +1611984 5706880 1611944 5706832 1611744 5707272 1612048 5706984 +1611824 5707344 1611744 5707272 1610640 5708296 1610680 5708312 +1611824 5707344 1612096 5707088 1611744 5707272 1610680 5708312 +1611744 5707272 1610552 5708288 1610640 5708296 1610680 5708312 +1611824 5707344 1611744 5707272 1610680 5708312 1611872 5707400 +1611824 5707344 1612096 5707088 1611744 5707272 1611872 5707400 +1610680 5708312 1610712 5708360 1611872 5707400 1611744 5707272 +1611744 5707272 1610640 5708296 1610680 5708312 1611872 5707400 +1611784 5706704 1611696 5707232 1611744 5707272 1611944 5706832 +1611784 5706704 1609464 5706776 1611696 5707232 1611944 5706832 +1611744 5707272 1611984 5706880 1611944 5706832 1611696 5707232 +1611696 5707232 1609464 5706776 1611744 5707272 1611984 5706880 +1611944 5706832 1611784 5706704 1611696 5707232 1611984 5706880 +1611744 5707272 1611696 5707232 1609464 5706776 1610552 5708288 +1611696 5707232 1611784 5706704 1609464 5706776 1610552 5708288 +1611744 5707272 1611696 5707232 1610552 5708288 1610640 5708296 +1611744 5707272 1611984 5706880 1611696 5707232 1610640 5708296 +1611696 5707232 1609464 5706776 1610552 5708288 1610640 5708296 +1611744 5707272 1611696 5707232 1610640 5708296 1610680 5708312 +1611696 5707232 1610552 5708288 1610640 5708296 1610680 5708312 +1611744 5707272 1611984 5706880 1611696 5707232 1610680 5708312 +1609464 5706776 1611696 5707232 1611784 5706704 1609472 5706664 +1609464 5706776 1610552 5708288 1611696 5707232 1609472 5706664 +1611696 5707232 1611944 5706832 1611784 5706704 1609472 5706664 +1611784 5706704 1609424 5706616 1609472 5706664 1611696 5707232 +1611784 5706704 1611696 5707232 1611944 5706832 1611904 5706776 +1609464 5706776 1610440 5708328 1610552 5708288 1611696 5707232 +1611744 5707272 1612048 5706984 1611984 5706880 1611696 5707232 +1611984 5706880 1611944 5706832 1611696 5707232 1612048 5706984 +1611744 5707272 1612048 5706984 1611696 5707232 1610680 5708312 +1611744 5707272 1612096 5707088 1612048 5706984 1611696 5707232 +1611744 5707272 1611696 5707232 1610680 5708312 1611872 5707400 +1611784 5706704 1611672 5707208 1611696 5707232 1611944 5706832 +1611672 5707208 1609472 5706664 1611696 5707232 1611944 5706832 +1611696 5707232 1611984 5706880 1611944 5706832 1611672 5707208 +1611696 5707232 1611984 5706880 1611672 5707208 1609472 5706664 +1611944 5706832 1611784 5706704 1611672 5707208 1611984 5706880 +1611696 5707232 1612048 5706984 1611984 5706880 1611672 5707208 +1611696 5707232 1612048 5706984 1611672 5707208 1609472 5706664 +1611984 5706880 1611944 5706832 1611672 5707208 1612048 5706984 +1609472 5706664 1611672 5707208 1611784 5706704 1609424 5706616 +1611696 5707232 1611672 5707208 1609472 5706664 1609464 5706776 +1611696 5707232 1611672 5707208 1609464 5706776 1610552 5708288 +1611696 5707232 1612048 5706984 1611672 5707208 1610552 5708288 +1611672 5707208 1611784 5706704 1609472 5706664 1609464 5706776 +1611696 5707232 1611672 5707208 1610552 5708288 1610640 5708296 +1611672 5707208 1609464 5706776 1610552 5708288 1610640 5708296 +1611696 5707232 1612048 5706984 1611672 5707208 1610640 5708296 +1611696 5707232 1611672 5707208 1610640 5708296 1610680 5708312 +1611696 5707232 1612048 5706984 1611672 5707208 1610680 5708312 +1611672 5707208 1610552 5708288 1610640 5708296 1610680 5708312 +1611696 5707232 1611672 5707208 1610680 5708312 1611744 5707272 +1611672 5707208 1609472 5706664 1609464 5706776 1610552 5708288 +1611784 5706704 1611672 5707208 1611944 5706832 1611904 5706776 +1609464 5706776 1610440 5708328 1610552 5708288 1611672 5707208 +1611696 5707232 1611744 5707272 1612048 5706984 1611672 5707208 +1611784 5706704 1609472 5706664 1611672 5707208 1611944 5706832 +1611672 5707208 1611648 5707152 1609472 5706664 1609464 5706776 +1611672 5707208 1611784 5706704 1611648 5707152 1609464 5706776 +1609472 5706664 1611648 5707152 1611784 5706704 1609424 5706616 +1611672 5707208 1611648 5707152 1609464 5706776 1610552 5708288 +1611672 5707208 1611648 5707152 1610552 5708288 1610640 5708296 +1611648 5707152 1609472 5706664 1609464 5706776 1610552 5708288 +1611672 5707208 1611784 5706704 1611648 5707152 1610640 5708296 +1611672 5707208 1611648 5707152 1610640 5708296 1610680 5708312 +1611648 5707152 1609464 5706776 1610552 5708288 1610640 5708296 +1609464 5706776 1610440 5708328 1610552 5708288 1611648 5707152 +1611784 5706704 1611648 5707152 1611672 5707208 1611944 5706832 +1611672 5707208 1611984 5706880 1611944 5706832 1611648 5707152 +1611648 5707152 1610640 5708296 1611672 5707208 1611984 5706880 +1611672 5707208 1612048 5706984 1611984 5706880 1611648 5707152 +1611984 5706880 1611944 5706832 1611648 5707152 1612048 5706984 +1611672 5707208 1612048 5706984 1611648 5707152 1610640 5708296 +1611672 5707208 1611696 5707232 1612048 5706984 1611648 5707152 +1611672 5707208 1611696 5707232 1611648 5707152 1610640 5708296 +1612048 5706984 1611984 5706880 1611648 5707152 1611696 5707232 +1611784 5706704 1611648 5707152 1611944 5706832 1611904 5706776 +1611784 5706704 1611648 5707152 1611904 5706776 1611832 5706704 +1611696 5707232 1611744 5707272 1612048 5706984 1611648 5707152 +1611944 5706832 1611904 5706776 1611648 5707152 1611984 5706880 +1611648 5707152 1611784 5706704 1609472 5706664 1609464 5706776 +1611784 5706704 1609472 5706664 1611648 5707152 1611904 5706776 +1609472 5706664 1611640 5707096 1611784 5706704 1609424 5706616 +1611648 5707152 1611640 5707096 1609472 5706664 1609464 5706776 +1611648 5707152 1611640 5707096 1609464 5706776 1610552 5708288 +1611648 5707152 1611640 5707096 1610552 5708288 1610640 5708296 +1609464 5706776 1610440 5708328 1610552 5708288 1611640 5707096 +1611640 5707096 1609472 5706664 1609464 5706776 1610552 5708288 +1611648 5707152 1611784 5706704 1611640 5707096 1610552 5708288 +1611784 5706704 1611640 5707096 1611648 5707152 1611904 5706776 +1611784 5706704 1611640 5707096 1611904 5706776 1611832 5706704 +1611648 5707152 1611944 5706832 1611904 5706776 1611640 5707096 +1611784 5706704 1609472 5706664 1611640 5707096 1611904 5706776 +1611648 5707152 1611984 5706880 1611944 5706832 1611640 5707096 +1611648 5707152 1612048 5706984 1611984 5706880 1611640 5707096 +1611648 5707152 1611696 5707232 1612048 5706984 1611640 5707096 +1612048 5706984 1611984 5706880 1611640 5707096 1611696 5707232 +1611648 5707152 1611672 5707208 1611696 5707232 1611640 5707096 +1611944 5706832 1611904 5706776 1611640 5707096 1611984 5706880 +1611696 5707232 1611744 5707272 1612048 5706984 1611640 5707096 +1611984 5706880 1611944 5706832 1611640 5707096 1612048 5706984 +1611640 5707096 1610552 5708288 1611648 5707152 1611696 5707232 +1611904 5706776 1611784 5706704 1611640 5707096 1611944 5706832 +1611640 5707096 1611784 5706704 1609472 5706664 1609464 5706776 +1609472 5706664 1611648 5707000 1611784 5706704 1609424 5706616 +1611784 5706704 1611648 5707000 1611640 5707096 1611904 5706776 +1611784 5706704 1611648 5707000 1611904 5706776 1611832 5706704 +1611648 5707000 1609472 5706664 1611640 5707096 1611904 5706776 +1611784 5706704 1609472 5706664 1611648 5707000 1611904 5706776 +1611640 5707096 1611944 5706832 1611904 5706776 1611648 5707000 +1611640 5707096 1611984 5706880 1611944 5706832 1611648 5707000 +1611640 5707096 1611984 5706880 1611648 5707000 1609472 5706664 +1611904 5706776 1611784 5706704 1611648 5707000 1611944 5706832 +1611640 5707096 1612048 5706984 1611984 5706880 1611648 5707000 +1611640 5707096 1611696 5707232 1612048 5706984 1611648 5707000 +1611984 5706880 1611944 5706832 1611648 5707000 1612048 5706984 +1611640 5707096 1612048 5706984 1611648 5707000 1609472 5706664 +1611944 5706832 1611904 5706776 1611648 5707000 1611984 5706880 +1611640 5707096 1611648 5707000 1609472 5706664 1609464 5706776 +1611640 5707096 1612048 5706984 1611648 5707000 1609464 5706776 +1611648 5707000 1611784 5706704 1609472 5706664 1609464 5706776 +1611640 5707096 1611648 5707000 1609464 5706776 1610552 5708288 +1609472 5706664 1611664 5706896 1611784 5706704 1609424 5706616 +1611648 5707000 1611664 5706896 1609472 5706664 1609464 5706776 +1611784 5706704 1611664 5706896 1611648 5707000 1611904 5706776 +1611784 5706704 1611664 5706896 1611904 5706776 1611832 5706704 +1611784 5706704 1609472 5706664 1611664 5706896 1611904 5706776 +1611648 5707000 1611944 5706832 1611904 5706776 1611664 5706896 +1611664 5706896 1609472 5706664 1611648 5707000 1611944 5706832 +1611904 5706776 1611784 5706704 1611664 5706896 1611944 5706832 +1611648 5707000 1611984 5706880 1611944 5706832 1611664 5706896 +1611648 5707000 1612048 5706984 1611984 5706880 1611664 5706896 +1611944 5706832 1611904 5706776 1611664 5706896 1611984 5706880 +1611648 5707000 1611984 5706880 1611664 5706896 1609472 5706664 +1609472 5706664 1611672 5706800 1611784 5706704 1609424 5706616 +1611664 5706896 1611672 5706800 1609472 5706664 1611648 5707000 +1611784 5706704 1611672 5706800 1611664 5706896 1611904 5706776 +1611784 5706704 1611672 5706800 1611904 5706776 1611832 5706704 +1611784 5706704 1609472 5706664 1611672 5706800 1611904 5706776 +1611672 5706800 1609472 5706664 1611664 5706896 1611904 5706776 +1611664 5706896 1611944 5706832 1611904 5706776 1611672 5706800 +1609472 5706664 1611712 5706760 1611784 5706704 1609424 5706616 +1609472 5706664 1611672 5706800 1611712 5706760 1609424 5706616 +1611712 5706760 1611672 5706800 1611784 5706704 1609424 5706616 +1611784 5706704 1611712 5706760 1611672 5706800 1611904 5706776 +1611784 5706704 1609424 5706616 1611712 5706760 1611904 5706776 +1611784 5706704 1611712 5706760 1611904 5706776 1611832 5706704 +1611672 5706800 1611664 5706896 1611904 5706776 1611712 5706760 +1611904 5706776 1611784 5706704 1611712 5706760 1611664 5706896 +1611672 5706800 1611712 5706760 1609472 5706664 1611664 5706896 +1611712 5706760 1609472 5706664 1611672 5706800 1611664 5706896 +1611664 5706896 1611944 5706832 1611904 5706776 1611712 5706760 +1611784 5706704 1604152 5700872 1609424 5706616 1611712 5706760 +1602224 5696056 1612792 5706920 1614576 5707608 1601624 5681136 +1614576 5707608 1612792 5706920 1611832 5706704 1614512 5707600 +1612792 5706920 1602224 5696056 1611832 5706704 1614512 5707600 +1614576 5707608 1602224 5696056 1612792 5706920 1614512 5707600 +1611832 5706704 1611904 5706776 1614512 5707600 1612792 5706920 +1611832 5706704 1611904 5706776 1612792 5706920 1602224 5696056 +1611904 5706776 1611984 5706880 1614512 5707600 1612792 5706920 +1611904 5706776 1611944 5706832 1611984 5706880 1612792 5706920 +1611984 5706880 1614512 5707600 1612792 5706920 1611944 5706832 +1614512 5707600 1614576 5707608 1612792 5706920 1611984 5706880 +1611904 5706776 1611944 5706832 1612792 5706920 1611832 5706704 +1611832 5706704 1612792 5706920 1602224 5696056 1602504 5696992 +1611832 5706704 1612792 5706920 1602504 5696992 1604104 5700768 +1611832 5706704 1612792 5706920 1604104 5700768 1604152 5700872 +1611832 5706704 1611904 5706776 1612792 5706920 1604104 5700768 +1602224 5696056 1602224 5696096 1602504 5696992 1612792 5706920 +1602504 5696992 1604056 5700696 1604104 5700768 1612792 5706920 +1611984 5706880 1614408 5707648 1614512 5707600 1612792 5706920 +1611984 5706880 1612048 5706984 1614408 5707648 1612792 5706920 +1611984 5706880 1612048 5706984 1612792 5706920 1611944 5706832 +1614512 5707600 1614576 5707608 1612792 5706920 1614408 5707648 +1612048 5706984 1614360 5707680 1614408 5707648 1612792 5706920 +1612048 5706984 1614360 5707680 1612792 5706920 1611984 5706880 +1612048 5706984 1612096 5707088 1614360 5707680 1612792 5706920 +1612048 5706984 1612096 5707088 1612792 5706920 1611984 5706880 +1612096 5707088 1614288 5707728 1614360 5707680 1612792 5706920 +1612096 5707088 1614240 5707760 1614288 5707728 1612792 5706920 +1612096 5707088 1612128 5707184 1614240 5707760 1612792 5706920 +1612128 5707184 1612160 5707288 1614240 5707760 1612792 5706920 +1612128 5707184 1612160 5707288 1612792 5706920 1612096 5707088 +1612160 5707288 1613640 5708144 1614240 5707760 1612792 5706920 +1612160 5707288 1613640 5708144 1612792 5706920 1612128 5707184 +1612160 5707288 1613616 5708152 1613640 5708144 1612792 5706920 +1612160 5707288 1613616 5708152 1612792 5706920 1612128 5707184 +1613640 5708144 1614240 5707760 1612792 5706920 1613616 5708152 +1614240 5707760 1614288 5707728 1612792 5706920 1613640 5708144 +1612096 5707088 1612128 5707184 1612792 5706920 1612048 5706984 +1612160 5707288 1612184 5707392 1613616 5708152 1612792 5706920 +1612160 5707288 1612184 5707392 1612792 5706920 1612128 5707184 +1613616 5708152 1613640 5708144 1612792 5706920 1612184 5707392 +1612184 5707392 1612192 5707440 1613616 5708152 1612792 5706920 +1613616 5708152 1613640 5708144 1612792 5706920 1612192 5707440 +1612184 5707392 1612192 5707440 1612792 5706920 1612160 5707288 +1614288 5707728 1614360 5707680 1612792 5706920 1614240 5707760 +1613640 5708144 1614224 5707784 1614240 5707760 1612792 5706920 +1613640 5708144 1614224 5707784 1612792 5706920 1613616 5708152 +1614240 5707760 1614288 5707728 1612792 5706920 1614224 5707784 +1613640 5708144 1613720 5708152 1614224 5707784 1612792 5706920 +1612192 5707440 1613560 5708192 1613616 5708152 1612792 5706920 +1613616 5708152 1613640 5708144 1612792 5706920 1613560 5708192 +1612192 5707440 1613560 5708192 1612792 5706920 1612184 5707392 +1612192 5707440 1612184 5707472 1613560 5708192 1612792 5706920 +1612192 5707440 1612184 5707472 1612792 5706920 1612184 5707392 +1612184 5707472 1612128 5707520 1613560 5708192 1612792 5706920 +1613560 5708192 1613616 5708152 1612792 5706920 1612184 5707472 +1614360 5707680 1614408 5707648 1612792 5706920 1614288 5707728 +1614408 5707648 1614512 5707600 1612792 5706920 1614360 5707680 +1612792 5706920 1614576 5707608 1602224 5696056 1602504 5696992 +1612792 5706920 1602224 5696056 1602504 5696992 1604104 5700768 +1602224 5696056 1612848 5706920 1614576 5707608 1601624 5681136 +1614576 5707608 1612848 5706920 1612792 5706920 1614512 5707600 +1612848 5706920 1602224 5696056 1612792 5706920 1614512 5707600 +1612792 5706920 1614408 5707648 1614512 5707600 1612848 5706920 +1612792 5706920 1614408 5707648 1612848 5706920 1602224 5696056 +1614512 5707600 1614576 5707608 1612848 5706920 1614408 5707648 +1614576 5707608 1602224 5696056 1612848 5706920 1614512 5707600 +1612792 5706920 1614360 5707680 1614408 5707648 1612848 5706920 +1612792 5706920 1614360 5707680 1612848 5706920 1602224 5696056 +1614408 5707648 1614512 5707600 1612848 5706920 1614360 5707680 +1612792 5706920 1614288 5707728 1614360 5707680 1612848 5706920 +1612792 5706920 1614288 5707728 1612848 5706920 1602224 5696056 +1612792 5706920 1614240 5707760 1614288 5707728 1612848 5706920 +1612792 5706920 1614224 5707784 1614240 5707760 1612848 5706920 +1612792 5706920 1614224 5707784 1612848 5706920 1602224 5696056 +1614240 5707760 1614288 5707728 1612848 5706920 1614224 5707784 +1612792 5706920 1613640 5708144 1614224 5707784 1612848 5706920 +1612792 5706920 1613616 5708152 1613640 5708144 1612848 5706920 +1612792 5706920 1613560 5708192 1613616 5708152 1612848 5706920 +1613616 5708152 1613640 5708144 1612848 5706920 1613560 5708192 +1614224 5707784 1614240 5707760 1612848 5706920 1613640 5708144 +1612792 5706920 1613560 5708192 1612848 5706920 1602224 5696056 +1613640 5708144 1613720 5708152 1614224 5707784 1612848 5706920 +1613640 5708144 1614224 5707784 1612848 5706920 1613616 5708152 +1612792 5706920 1612184 5707472 1613560 5708192 1612848 5706920 +1613560 5708192 1613616 5708152 1612848 5706920 1612184 5707472 +1612792 5706920 1612184 5707472 1612848 5706920 1602224 5696056 +1612792 5706920 1612192 5707440 1612184 5707472 1612848 5706920 +1612792 5706920 1612192 5707440 1612848 5706920 1602224 5696056 +1612792 5706920 1612184 5707392 1612192 5707440 1612848 5706920 +1612184 5707472 1612128 5707520 1613560 5708192 1612848 5706920 +1612184 5707472 1613560 5708192 1612848 5706920 1612192 5707440 +1614288 5707728 1614360 5707680 1612848 5706920 1614240 5707760 +1614360 5707680 1614408 5707648 1612848 5706920 1614288 5707728 +1612792 5706920 1612848 5706920 1602224 5696056 1602504 5696992 +1612792 5706920 1612192 5707440 1612848 5706920 1602504 5696992 +1612848 5706920 1614576 5707608 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1612848 5706920 +1612792 5706920 1612848 5706920 1602504 5696992 1604104 5700768 +1612792 5706920 1612848 5706920 1604104 5700768 1611832 5706704 +1604104 5700768 1604152 5700872 1611832 5706704 1612848 5706920 +1612792 5706920 1612192 5707440 1612848 5706920 1611832 5706704 +1612792 5706920 1612848 5706920 1611832 5706704 1611904 5706776 +1602504 5696992 1604056 5700696 1604104 5700768 1612848 5706920 +1612848 5706920 1602224 5696056 1602504 5696992 1604104 5700768 +1612848 5706920 1602504 5696992 1604104 5700768 1611832 5706704 +1614408 5707648 1612992 5706984 1612848 5706920 1614360 5707680 +1612992 5706984 1614512 5707600 1612848 5706920 1614360 5707680 +1612848 5706920 1612992 5706984 1614512 5707600 1614576 5707608 +1612848 5706920 1614360 5707680 1612992 5706984 1614576 5707608 +1614408 5707648 1614512 5707600 1612992 5706984 1614360 5707680 +1612848 5706920 1612992 5706984 1614576 5707608 1602224 5696056 +1612848 5706920 1612992 5706984 1602224 5696056 1602504 5696992 +1612848 5706920 1614360 5707680 1612992 5706984 1602224 5696056 +1614576 5707608 1601624 5681136 1602224 5696056 1612992 5706984 +1612992 5706984 1614512 5707600 1614576 5707608 1602224 5696056 +1612992 5706984 1614408 5707648 1614512 5707600 1614576 5707608 +1612848 5706920 1614288 5707728 1614360 5707680 1612992 5706984 +1612848 5706920 1614288 5707728 1612992 5706984 1602224 5696056 +1614360 5707680 1614408 5707648 1612992 5706984 1614288 5707728 +1612848 5706920 1614240 5707760 1614288 5707728 1612992 5706984 +1612848 5706920 1614240 5707760 1612992 5706984 1602224 5696056 +1612848 5706920 1614224 5707784 1614240 5707760 1612992 5706984 +1612848 5706920 1613640 5708144 1614224 5707784 1612992 5706984 +1612848 5706920 1613640 5708144 1612992 5706984 1602224 5696056 +1613640 5708144 1613720 5708152 1614224 5707784 1612992 5706984 +1614224 5707784 1614240 5707760 1612992 5706984 1613640 5708144 +1612848 5706920 1613616 5708152 1613640 5708144 1612992 5706984 +1612848 5706920 1613560 5708192 1613616 5708152 1612992 5706984 +1612848 5706920 1612184 5707472 1613560 5708192 1612992 5706984 +1613560 5708192 1613616 5708152 1612992 5706984 1612184 5707472 +1613640 5708144 1614224 5707784 1612992 5706984 1613616 5708152 +1612848 5706920 1612184 5707472 1612992 5706984 1602224 5696056 +1613616 5708152 1613640 5708144 1612992 5706984 1613560 5708192 +1612184 5707472 1612128 5707520 1613560 5708192 1612992 5706984 +1612848 5706920 1612192 5707440 1612184 5707472 1612992 5706984 +1612184 5707472 1613560 5708192 1612992 5706984 1612192 5707440 +1612848 5706920 1612192 5707440 1612992 5706984 1602224 5696056 +1612848 5706920 1612792 5706920 1612192 5707440 1612992 5706984 +1612848 5706920 1612792 5706920 1612992 5706984 1602224 5696056 +1612792 5706920 1612184 5707392 1612192 5707440 1612992 5706984 +1612192 5707440 1612184 5707472 1612992 5706984 1612792 5706920 +1614240 5707760 1614288 5707728 1612992 5706984 1614224 5707784 +1614288 5707728 1614360 5707680 1612992 5706984 1614240 5707760 +1602224 5696056 1613096 5707024 1614576 5707608 1601624 5681136 +1614576 5707608 1614648 5707656 1601624 5681136 1613096 5707024 +1614576 5707608 1613096 5707024 1612992 5706984 1614512 5707600 +1602224 5696056 1612992 5706984 1613096 5707024 1601624 5681136 +1613096 5707024 1614512 5707600 1614576 5707608 1601624 5681136 +1602224 5696056 1613096 5707024 1601624 5681136 1601592 5681216 +1612992 5706984 1613096 5707024 1602224 5696056 1612848 5706920 +1602224 5696056 1602504 5696992 1612848 5706920 1613096 5707024 +1613096 5707024 1601624 5681136 1602224 5696056 1612848 5706920 +1612992 5706984 1614408 5707648 1614512 5707600 1613096 5707024 +1614512 5707600 1614576 5707608 1613096 5707024 1614408 5707648 +1612992 5706984 1614360 5707680 1614408 5707648 1613096 5707024 +1612992 5706984 1614288 5707728 1614360 5707680 1613096 5707024 +1614360 5707680 1614408 5707648 1613096 5707024 1614288 5707728 +1614408 5707648 1614512 5707600 1613096 5707024 1614360 5707680 +1613096 5707024 1612848 5706920 1612992 5706984 1614288 5707728 +1612992 5706984 1614240 5707760 1614288 5707728 1613096 5707024 +1614288 5707728 1614360 5707680 1613096 5707024 1614240 5707760 +1612992 5706984 1614240 5707760 1613096 5707024 1612848 5706920 +1612992 5706984 1614224 5707784 1614240 5707760 1613096 5707024 +1612992 5706984 1613640 5708144 1614224 5707784 1613096 5707024 +1612992 5706984 1613616 5708152 1613640 5708144 1613096 5707024 +1613640 5708144 1613720 5708152 1614224 5707784 1613096 5707024 +1613640 5708144 1614224 5707784 1613096 5707024 1613616 5708152 +1612992 5706984 1613560 5708192 1613616 5708152 1613096 5707024 +1612992 5706984 1612184 5707472 1613560 5708192 1613096 5707024 +1612992 5706984 1612192 5707440 1612184 5707472 1613096 5707024 +1612184 5707472 1613560 5708192 1613096 5707024 1612192 5707440 +1613616 5708152 1613640 5708144 1613096 5707024 1613560 5708192 +1613560 5708192 1613616 5708152 1613096 5707024 1612184 5707472 +1612184 5707472 1612128 5707520 1613560 5708192 1613096 5707024 +1612992 5706984 1612792 5706920 1612192 5707440 1613096 5707024 +1612992 5706984 1612192 5707440 1613096 5707024 1612848 5706920 +1614224 5707784 1614240 5707760 1613096 5707024 1613640 5708144 +1614240 5707760 1614288 5707728 1613096 5707024 1614224 5707784 +1613096 5707024 1613152 5707048 1614512 5707600 1614576 5707608 +1613096 5707024 1614408 5707648 1613152 5707048 1614576 5707608 +1613096 5707024 1613152 5707048 1614576 5707608 1601624 5681136 +1614576 5707608 1614648 5707656 1601624 5681136 1613152 5707048 +1613096 5707024 1613152 5707048 1601624 5681136 1602224 5696056 +1613152 5707048 1614512 5707600 1614576 5707608 1601624 5681136 +1613096 5707024 1613152 5707048 1602224 5696056 1612848 5706920 +1613096 5707024 1614408 5707648 1613152 5707048 1602224 5696056 +1613152 5707048 1614576 5707608 1601624 5681136 1602224 5696056 +1601624 5681136 1601592 5681216 1602224 5696056 1613152 5707048 +1614408 5707648 1613152 5707048 1613096 5707024 1614360 5707680 +1613096 5707024 1614288 5707728 1614360 5707680 1613152 5707048 +1613096 5707024 1614240 5707760 1614288 5707728 1613152 5707048 +1614288 5707728 1614360 5707680 1613152 5707048 1614240 5707760 +1613152 5707048 1602224 5696056 1613096 5707024 1614240 5707760 +1614360 5707680 1614408 5707648 1613152 5707048 1614288 5707728 +1613152 5707048 1614408 5707648 1614512 5707600 1614576 5707608 +1614408 5707648 1614512 5707600 1613152 5707048 1614360 5707680 +1613096 5707024 1614224 5707784 1614240 5707760 1613152 5707048 +1614240 5707760 1614288 5707728 1613152 5707048 1614224 5707784 +1613096 5707024 1614224 5707784 1613152 5707048 1602224 5696056 +1613096 5707024 1613640 5708144 1614224 5707784 1613152 5707048 +1613640 5708144 1613720 5708152 1614224 5707784 1613152 5707048 +1613096 5707024 1613640 5708144 1613152 5707048 1602224 5696056 +1613096 5707024 1613616 5708152 1613640 5708144 1613152 5707048 +1613096 5707024 1613560 5708192 1613616 5708152 1613152 5707048 +1613096 5707024 1613560 5708192 1613152 5707048 1602224 5696056 +1613616 5708152 1613640 5708144 1613152 5707048 1613560 5708192 +1613096 5707024 1612184 5707472 1613560 5708192 1613152 5707048 +1613096 5707024 1612192 5707440 1612184 5707472 1613152 5707048 +1613560 5708192 1613616 5708152 1613152 5707048 1612184 5707472 +1613096 5707024 1612184 5707472 1613152 5707048 1602224 5696056 +1612184 5707472 1612128 5707520 1613560 5708192 1613152 5707048 +1613640 5708144 1614224 5707784 1613152 5707048 1613616 5708152 +1614224 5707784 1614240 5707760 1613152 5707048 1613640 5708144 +1614240 5707760 1613240 5707104 1613152 5707048 1614224 5707784 +1614240 5707760 1614288 5707728 1613240 5707104 1614224 5707784 +1613152 5707048 1613240 5707104 1614288 5707728 1614360 5707680 +1613152 5707048 1613240 5707104 1614360 5707680 1614408 5707648 +1613240 5707104 1614288 5707728 1614360 5707680 1614408 5707648 +1613240 5707104 1614408 5707648 1613152 5707048 1614224 5707784 +1613152 5707048 1613240 5707104 1614408 5707648 1614512 5707600 +1613240 5707104 1614360 5707680 1614408 5707648 1614512 5707600 +1613152 5707048 1613240 5707104 1614512 5707600 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1601624 5681136 +1613152 5707048 1614224 5707784 1613240 5707104 1614576 5707608 +1613240 5707104 1614408 5707648 1614512 5707600 1614576 5707608 +1613240 5707104 1614240 5707760 1614288 5707728 1614360 5707680 +1613152 5707048 1613640 5708144 1614224 5707784 1613240 5707104 +1613640 5708144 1613720 5708152 1614224 5707784 1613240 5707104 +1614224 5707784 1614240 5707760 1613240 5707104 1613640 5708144 +1613152 5707048 1613616 5708152 1613640 5708144 1613240 5707104 +1613152 5707048 1613560 5708192 1613616 5708152 1613240 5707104 +1613152 5707048 1612184 5707472 1613560 5708192 1613240 5707104 +1613560 5708192 1613616 5708152 1613240 5707104 1612184 5707472 +1613152 5707048 1613096 5707024 1612184 5707472 1613240 5707104 +1613096 5707024 1612192 5707440 1612184 5707472 1613240 5707104 +1612184 5707472 1613560 5708192 1613240 5707104 1613096 5707024 +1612184 5707472 1612128 5707520 1613560 5708192 1613240 5707104 +1613616 5708152 1613640 5708144 1613240 5707104 1613560 5708192 +1613152 5707048 1613096 5707024 1613240 5707104 1614576 5707608 +1613640 5708144 1614224 5707784 1613240 5707104 1613616 5708152 +1614224 5707784 1613288 5707144 1613640 5708144 1613720 5708152 +1613240 5707104 1613288 5707144 1614224 5707784 1614240 5707760 +1613240 5707104 1613288 5707144 1614240 5707760 1614288 5707728 +1613288 5707144 1613640 5708144 1614224 5707784 1614240 5707760 +1613288 5707144 1614224 5707784 1614240 5707760 1614288 5707728 +1613240 5707104 1613288 5707144 1614288 5707728 1614360 5707680 +1613288 5707144 1614240 5707760 1614288 5707728 1614360 5707680 +1613240 5707104 1613288 5707144 1614360 5707680 1614408 5707648 +1613240 5707104 1613288 5707144 1614408 5707648 1614512 5707600 +1613288 5707144 1614360 5707680 1614408 5707648 1614512 5707600 +1613240 5707104 1613288 5707144 1614512 5707600 1614576 5707608 +1613288 5707144 1614288 5707728 1614360 5707680 1614408 5707648 +1613240 5707104 1613640 5708144 1613288 5707144 1614512 5707600 +1613640 5708144 1613288 5707144 1613240 5707104 1613616 5708152 +1613640 5708144 1614224 5707784 1613288 5707144 1613616 5708152 +1613240 5707104 1613560 5708192 1613616 5708152 1613288 5707144 +1613240 5707104 1612184 5707472 1613560 5708192 1613288 5707144 +1613240 5707104 1613096 5707024 1612184 5707472 1613288 5707144 +1613096 5707024 1612192 5707440 1612184 5707472 1613288 5707144 +1612184 5707472 1613560 5708192 1613288 5707144 1613096 5707024 +1613240 5707104 1613152 5707048 1613096 5707024 1613288 5707144 +1612184 5707472 1612128 5707520 1613560 5708192 1613288 5707144 +1613560 5708192 1613616 5708152 1613288 5707144 1612184 5707472 +1613288 5707144 1614512 5707600 1613240 5707104 1613096 5707024 +1613616 5708152 1613640 5708144 1613288 5707144 1613560 5708192 +1613288 5707144 1613312 5707168 1614224 5707784 1614240 5707760 +1613288 5707144 1613640 5708144 1613312 5707168 1614240 5707760 +1613640 5708144 1613312 5707168 1613288 5707144 1613616 5708152 +1613640 5708144 1614224 5707784 1613312 5707168 1613616 5708152 +1613312 5707168 1614240 5707760 1613288 5707144 1613616 5708152 +1613312 5707168 1613640 5708144 1614224 5707784 1614240 5707760 +1614224 5707784 1613312 5707168 1613640 5708144 1613720 5708152 +1613288 5707144 1613312 5707168 1614240 5707760 1614288 5707728 +1613288 5707144 1613312 5707168 1614288 5707728 1614360 5707680 +1613312 5707168 1614224 5707784 1614240 5707760 1614288 5707728 +1613288 5707144 1613616 5708152 1613312 5707168 1614360 5707680 +1613312 5707168 1614240 5707760 1614288 5707728 1614360 5707680 +1613288 5707144 1613312 5707168 1614360 5707680 1614408 5707648 +1613312 5707168 1614288 5707728 1614360 5707680 1614408 5707648 +1613288 5707144 1613616 5708152 1613312 5707168 1614408 5707648 +1613288 5707144 1613312 5707168 1614408 5707648 1614512 5707600 +1613288 5707144 1613616 5708152 1613312 5707168 1614512 5707600 +1613288 5707144 1613312 5707168 1614512 5707600 1613240 5707104 +1613312 5707168 1614360 5707680 1614408 5707648 1614512 5707600 +1613288 5707144 1613560 5708192 1613616 5708152 1613312 5707168 +1613288 5707144 1613560 5708192 1613312 5707168 1614512 5707600 +1613616 5708152 1613640 5708144 1613312 5707168 1613560 5708192 +1613288 5707144 1612184 5707472 1613560 5708192 1613312 5707168 +1613288 5707144 1612184 5707472 1613312 5707168 1614512 5707600 +1613288 5707144 1613096 5707024 1612184 5707472 1613312 5707168 +1613096 5707024 1612192 5707440 1612184 5707472 1613312 5707168 +1613288 5707144 1613096 5707024 1613312 5707168 1614512 5707600 +1613288 5707144 1613240 5707104 1613096 5707024 1613312 5707168 +1613288 5707144 1613240 5707104 1613312 5707168 1614512 5707600 +1613096 5707024 1612184 5707472 1613312 5707168 1613240 5707104 +1613240 5707104 1613152 5707048 1613096 5707024 1613312 5707168 +1612184 5707472 1612128 5707520 1613560 5708192 1613312 5707168 +1612184 5707472 1613560 5708192 1613312 5707168 1613096 5707024 +1613560 5708192 1613616 5708152 1613312 5707168 1612184 5707472 +1613560 5708192 1613320 5707208 1612184 5707472 1612128 5707520 +1612184 5707472 1613320 5707208 1613312 5707168 1613096 5707024 +1613320 5707208 1613560 5708192 1613312 5707168 1613096 5707024 +1612184 5707472 1613560 5708192 1613320 5707208 1613096 5707024 +1612184 5707472 1613320 5707208 1613096 5707024 1612192 5707440 +1612184 5707472 1613560 5708192 1613320 5707208 1612192 5707440 +1613096 5707024 1612992 5706984 1612192 5707440 1613320 5707208 +1612192 5707440 1612184 5707472 1613320 5707208 1612992 5706984 +1613312 5707168 1613240 5707104 1613096 5707024 1613320 5707208 +1613312 5707168 1613240 5707104 1613320 5707208 1613560 5708192 +1613312 5707168 1613288 5707144 1613240 5707104 1613320 5707208 +1613312 5707168 1613288 5707144 1613320 5707208 1613560 5708192 +1613240 5707104 1613096 5707024 1613320 5707208 1613288 5707144 +1613240 5707104 1613152 5707048 1613096 5707024 1613320 5707208 +1613240 5707104 1613152 5707048 1613320 5707208 1613288 5707144 +1612992 5706984 1612792 5706920 1612192 5707440 1613320 5707208 +1613320 5707208 1613152 5707048 1613096 5707024 1612992 5706984 +1613312 5707168 1613320 5707208 1613560 5708192 1613616 5708152 +1613312 5707168 1613288 5707144 1613320 5707208 1613616 5708152 +1613320 5707208 1612184 5707472 1613560 5708192 1613616 5708152 +1613312 5707168 1613320 5707208 1613616 5708152 1613640 5708144 +1613312 5707168 1613288 5707144 1613320 5707208 1613640 5708144 +1613312 5707168 1613320 5707208 1613640 5708144 1614224 5707784 +1613312 5707168 1613288 5707144 1613320 5707208 1614224 5707784 +1613320 5707208 1613616 5708152 1613640 5708144 1614224 5707784 +1613312 5707168 1613320 5707208 1614224 5707784 1614240 5707760 +1613312 5707168 1613288 5707144 1613320 5707208 1614240 5707760 +1613320 5707208 1613640 5708144 1614224 5707784 1614240 5707760 +1613312 5707168 1613320 5707208 1614240 5707760 1614288 5707728 +1613312 5707168 1613288 5707144 1613320 5707208 1614288 5707728 +1613320 5707208 1614224 5707784 1614240 5707760 1614288 5707728 +1613640 5708144 1613720 5708152 1614224 5707784 1613320 5707208 +1613312 5707168 1613320 5707208 1614288 5707728 1614360 5707680 +1613312 5707168 1613288 5707144 1613320 5707208 1614360 5707680 +1613312 5707168 1613320 5707208 1614360 5707680 1614408 5707648 +1613312 5707168 1613288 5707144 1613320 5707208 1614408 5707648 +1613320 5707208 1614240 5707760 1614288 5707728 1614360 5707680 +1613320 5707208 1614288 5707728 1614360 5707680 1614408 5707648 +1613312 5707168 1613320 5707208 1614408 5707648 1614512 5707600 +1613320 5707208 1613560 5708192 1613616 5708152 1613640 5708144 +1613320 5707208 1613328 5707256 1613560 5708192 1613616 5708152 +1613320 5707208 1612184 5707472 1613328 5707256 1613616 5708152 +1612184 5707472 1613328 5707256 1613320 5707208 1612192 5707440 +1613328 5707256 1613616 5708152 1613320 5707208 1612192 5707440 +1613320 5707208 1612992 5706984 1612192 5707440 1613328 5707256 +1613320 5707208 1612992 5706984 1613328 5707256 1613616 5708152 +1612192 5707440 1612184 5707472 1613328 5707256 1612992 5706984 +1613320 5707208 1613096 5707024 1612992 5706984 1613328 5707256 +1613320 5707208 1613096 5707024 1613328 5707256 1613616 5708152 +1612992 5706984 1612192 5707440 1613328 5707256 1613096 5707024 +1613328 5707256 1612184 5707472 1613560 5708192 1613616 5708152 +1612184 5707472 1613560 5708192 1613328 5707256 1612192 5707440 +1613560 5708192 1613328 5707256 1612184 5707472 1612128 5707520 +1612992 5706984 1612792 5706920 1612192 5707440 1613328 5707256 +1613320 5707208 1613152 5707048 1613096 5707024 1613328 5707256 +1613320 5707208 1613152 5707048 1613328 5707256 1613616 5708152 +1613096 5707024 1612992 5706984 1613328 5707256 1613152 5707048 +1613320 5707208 1613240 5707104 1613152 5707048 1613328 5707256 +1613320 5707208 1613240 5707104 1613328 5707256 1613616 5708152 +1613320 5707208 1613288 5707144 1613240 5707104 1613328 5707256 +1613152 5707048 1613096 5707024 1613328 5707256 1613240 5707104 +1613320 5707208 1613328 5707256 1613616 5708152 1613640 5708144 +1613328 5707256 1613560 5708192 1613616 5708152 1613640 5708144 +1613320 5707208 1613240 5707104 1613328 5707256 1613640 5708144 +1613320 5707208 1613328 5707256 1613640 5708144 1614224 5707784 +1613320 5707208 1613328 5707256 1614224 5707784 1614240 5707760 +1613320 5707208 1613240 5707104 1613328 5707256 1614240 5707760 +1613328 5707256 1613640 5708144 1614224 5707784 1614240 5707760 +1613320 5707208 1613328 5707256 1614240 5707760 1614288 5707728 +1613328 5707256 1614224 5707784 1614240 5707760 1614288 5707728 +1613320 5707208 1613240 5707104 1613328 5707256 1614288 5707728 +1613320 5707208 1613328 5707256 1614288 5707728 1614360 5707680 +1613320 5707208 1613240 5707104 1613328 5707256 1614360 5707680 +1613328 5707256 1614240 5707760 1614288 5707728 1614360 5707680 +1613640 5708144 1613720 5708152 1614224 5707784 1613328 5707256 +1613320 5707208 1613328 5707256 1614360 5707680 1614408 5707648 +1613328 5707256 1613616 5708152 1613640 5708144 1614224 5707784 +1613328 5707256 1613320 5707304 1613560 5708192 1613616 5708152 +1613328 5707256 1613320 5707304 1613616 5708152 1613640 5708144 +1613320 5707304 1613560 5708192 1613616 5708152 1613640 5708144 +1613328 5707256 1612184 5707472 1613320 5707304 1613640 5708144 +1612184 5707472 1613320 5707304 1613328 5707256 1612192 5707440 +1613328 5707256 1612992 5706984 1612192 5707440 1613320 5707304 +1613328 5707256 1613096 5707024 1612992 5706984 1613320 5707304 +1612992 5706984 1612192 5707440 1613320 5707304 1613096 5707024 +1613328 5707256 1613152 5707048 1613096 5707024 1613320 5707304 +1613096 5707024 1612992 5706984 1613320 5707304 1613152 5707048 +1613320 5707304 1613640 5708144 1613328 5707256 1613152 5707048 +1612192 5707440 1612184 5707472 1613320 5707304 1612992 5706984 +1613320 5707304 1612184 5707472 1613560 5708192 1613616 5708152 +1612184 5707472 1613560 5708192 1613320 5707304 1612192 5707440 +1613560 5708192 1613320 5707304 1612184 5707472 1612128 5707520 +1612992 5706984 1612792 5706920 1612192 5707440 1613320 5707304 +1613328 5707256 1613240 5707104 1613152 5707048 1613320 5707304 +1613152 5707048 1613096 5707024 1613320 5707304 1613240 5707104 +1613328 5707256 1613240 5707104 1613320 5707304 1613640 5708144 +1613328 5707256 1613320 5707208 1613240 5707104 1613320 5707304 +1613328 5707256 1613320 5707208 1613320 5707304 1613640 5708144 +1613320 5707208 1613288 5707144 1613240 5707104 1613320 5707304 +1613240 5707104 1613152 5707048 1613320 5707304 1613320 5707208 +1613328 5707256 1613320 5707304 1613640 5708144 1614224 5707784 +1613320 5707304 1613616 5708152 1613640 5708144 1614224 5707784 +1613328 5707256 1613320 5707208 1613320 5707304 1614224 5707784 +1613328 5707256 1613320 5707304 1614224 5707784 1614240 5707760 +1613328 5707256 1613320 5707304 1614240 5707760 1614288 5707728 +1613328 5707256 1613320 5707208 1613320 5707304 1614240 5707760 +1613640 5708144 1613720 5708152 1614224 5707784 1613320 5707304 +1613320 5707304 1613640 5708144 1614224 5707784 1614240 5707760 +1613320 5707304 1613272 5707408 1613560 5708192 1613616 5708152 +1613320 5707304 1613272 5707408 1613616 5708152 1613640 5708144 +1613320 5707304 1613272 5707408 1613640 5708144 1614224 5707784 +1613272 5707408 1613616 5708152 1613640 5708144 1614224 5707784 +1613272 5707408 1613560 5708192 1613616 5708152 1613640 5708144 +1613320 5707304 1612184 5707472 1613272 5707408 1614224 5707784 +1612184 5707472 1613272 5707408 1613320 5707304 1612192 5707440 +1613320 5707304 1612992 5706984 1612192 5707440 1613272 5707408 +1613320 5707304 1613096 5707024 1612992 5706984 1613272 5707408 +1613320 5707304 1613152 5707048 1613096 5707024 1613272 5707408 +1613096 5707024 1612992 5706984 1613272 5707408 1613152 5707048 +1613320 5707304 1613240 5707104 1613152 5707048 1613272 5707408 +1613152 5707048 1613096 5707024 1613272 5707408 1613240 5707104 +1612992 5706984 1612192 5707440 1613272 5707408 1613096 5707024 +1613272 5707408 1614224 5707784 1613320 5707304 1613240 5707104 +1612192 5707440 1612184 5707472 1613272 5707408 1612992 5706984 +1613272 5707408 1612184 5707472 1613560 5708192 1613616 5708152 +1612184 5707472 1613560 5708192 1613272 5707408 1612192 5707440 +1613640 5708144 1613720 5708152 1614224 5707784 1613272 5707408 +1614224 5707784 1613320 5707304 1613272 5707408 1613720 5708152 +1613640 5708144 1613720 5708152 1613272 5707408 1613616 5708152 +1613720 5708152 1614224 5707800 1614224 5707784 1613272 5707408 +1613560 5708192 1613272 5707408 1612184 5707472 1612128 5707520 +1612992 5706984 1612792 5706920 1612192 5707440 1613272 5707408 +1613320 5707304 1613320 5707208 1613240 5707104 1613272 5707408 +1613320 5707304 1613272 5707408 1614224 5707784 1614240 5707760 +1613272 5707408 1613240 5707496 1613560 5708192 1613616 5708152 +1613272 5707408 1613240 5707496 1613616 5708152 1613640 5708144 +1613272 5707408 1613240 5707496 1613640 5708144 1613720 5708152 +1613240 5707496 1613616 5708152 1613640 5708144 1613720 5708152 +1613240 5707496 1613560 5708192 1613616 5708152 1613640 5708144 +1613272 5707408 1612184 5707472 1613240 5707496 1613720 5708152 +1612184 5707472 1613240 5707496 1613272 5707408 1612192 5707440 +1613272 5707408 1612992 5706984 1612192 5707440 1613240 5707496 +1613272 5707408 1613096 5707024 1612992 5706984 1613240 5707496 +1613272 5707408 1613152 5707048 1613096 5707024 1613240 5707496 +1612992 5706984 1612192 5707440 1613240 5707496 1613096 5707024 +1613240 5707496 1613720 5708152 1613272 5707408 1613096 5707024 +1612192 5707440 1612184 5707472 1613240 5707496 1612992 5706984 +1613240 5707496 1612184 5707472 1613560 5708192 1613616 5708152 +1613272 5707408 1613240 5707496 1613720 5708152 1614224 5707784 +1613272 5707408 1613240 5707496 1614224 5707784 1613320 5707304 +1613240 5707496 1613640 5708144 1613720 5708152 1614224 5707784 +1613272 5707408 1613096 5707024 1613240 5707496 1614224 5707784 +1612184 5707472 1613560 5708192 1613240 5707496 1612192 5707440 +1613720 5708152 1614224 5707800 1614224 5707784 1613240 5707496 +1613560 5708192 1613240 5707496 1612184 5707472 1612128 5707520 +1613560 5708192 1613616 5708152 1613240 5707496 1612128 5707520 +1613240 5707496 1612192 5707440 1612184 5707472 1612128 5707520 +1613560 5708192 1613240 5707496 1612128 5707520 1613552 5708272 +1613560 5708192 1613616 5708152 1613240 5707496 1613552 5708272 +1612128 5707520 1610752 5708648 1613552 5708272 1613240 5707496 +1613240 5707496 1612184 5707472 1612128 5707520 1613552 5708272 +1612992 5706984 1612792 5706920 1612192 5707440 1613240 5707496 +1612992 5706984 1612792 5706920 1613240 5707496 1613096 5707024 +1612192 5707440 1612184 5707472 1613240 5707496 1612792 5706920 +1612792 5706920 1612184 5707392 1612192 5707440 1613240 5707496 +1612992 5706984 1612848 5706920 1612792 5706920 1613240 5707496 +1613240 5707496 1613224 5707552 1613552 5708272 1613560 5708192 +1613240 5707496 1613224 5707552 1613560 5708192 1613616 5708152 +1613240 5707496 1613224 5707552 1613616 5708152 1613640 5708144 +1613240 5707496 1613224 5707552 1613640 5708144 1613720 5708152 +1613224 5707552 1613560 5708192 1613616 5708152 1613640 5708144 +1613240 5707496 1612128 5707520 1613224 5707552 1613640 5708144 +1613224 5707552 1612128 5707520 1613552 5708272 1613560 5708192 +1613224 5707552 1613552 5708272 1613560 5708192 1613616 5708152 +1613552 5708272 1613224 5707552 1612128 5707520 1610752 5708648 +1612128 5707520 1613224 5707552 1613240 5707496 1612184 5707472 +1613224 5707552 1613640 5708144 1613240 5707496 1612184 5707472 +1613240 5707496 1612192 5707440 1612184 5707472 1613224 5707552 +1613240 5707496 1612792 5706920 1612192 5707440 1613224 5707552 +1613240 5707496 1612792 5706920 1613224 5707552 1613640 5708144 +1612192 5707440 1612184 5707472 1613224 5707552 1612792 5706920 +1612128 5707520 1613552 5708272 1613224 5707552 1612184 5707472 +1612792 5706920 1612184 5707392 1612192 5707440 1613224 5707552 +1612184 5707472 1612128 5707520 1613224 5707552 1612192 5707440 +1613240 5707496 1612992 5706984 1612792 5706920 1613224 5707552 +1613240 5707496 1613096 5707024 1612992 5706984 1613224 5707552 +1612792 5706920 1612192 5707440 1613224 5707552 1612992 5706984 +1613240 5707496 1612992 5706984 1613224 5707552 1613640 5708144 +1612992 5706984 1612848 5706920 1612792 5706920 1613224 5707552 +1613224 5707552 1613232 5707584 1613552 5708272 1613560 5708192 +1613224 5707552 1612128 5707520 1613232 5707584 1613560 5708192 +1612128 5707520 1613232 5707584 1613224 5707552 1612184 5707472 +1613232 5707584 1613560 5708192 1613224 5707552 1612184 5707472 +1613224 5707552 1613232 5707584 1613560 5708192 1613616 5708152 +1613224 5707552 1613232 5707584 1613616 5708152 1613640 5708144 +1613224 5707552 1613232 5707584 1613640 5708144 1613240 5707496 +1613640 5708144 1613720 5708152 1613240 5707496 1613232 5707584 +1613720 5708152 1614224 5707784 1613240 5707496 1613232 5707584 +1613720 5708152 1614224 5707784 1613232 5707584 1613640 5708144 +1613240 5707496 1613224 5707552 1613232 5707584 1614224 5707784 +1613232 5707584 1613616 5708152 1613640 5708144 1613720 5708152 +1614224 5707784 1613272 5707408 1613240 5707496 1613232 5707584 +1614224 5707784 1613320 5707304 1613272 5707408 1613232 5707584 +1614224 5707784 1613272 5707408 1613232 5707584 1613720 5708152 +1613240 5707496 1613224 5707552 1613232 5707584 1613272 5707408 +1613232 5707584 1613552 5708272 1613560 5708192 1613616 5708152 +1613224 5707552 1612184 5707472 1613232 5707584 1613240 5707496 +1613720 5708152 1614224 5707800 1614224 5707784 1613232 5707584 +1613232 5707584 1613560 5708192 1613616 5708152 1613640 5708144 +1613552 5708272 1613232 5707584 1612128 5707520 1610752 5708648 +1613232 5707584 1612128 5707520 1613552 5708272 1613560 5708192 +1612128 5707520 1613552 5708272 1613232 5707584 1612184 5707472 +1613224 5707552 1612192 5707440 1612184 5707472 1613232 5707584 +1613560 5708192 1613256 5707624 1613232 5707584 1613552 5708272 +1613560 5708192 1613616 5708152 1613256 5707624 1613552 5708272 +1613232 5707584 1613256 5707624 1613616 5708152 1613640 5708144 +1613232 5707584 1613256 5707624 1613640 5708144 1613720 5708152 +1613232 5707584 1613256 5707624 1613720 5708152 1614224 5707784 +1613232 5707584 1613256 5707624 1614224 5707784 1613272 5707408 +1614224 5707784 1613320 5707304 1613272 5707408 1613256 5707624 +1613272 5707408 1613232 5707584 1613256 5707624 1613320 5707304 +1613256 5707624 1613720 5708152 1614224 5707784 1613320 5707304 +1613256 5707624 1613640 5708144 1613720 5708152 1614224 5707784 +1613232 5707584 1613256 5707624 1613272 5707408 1613240 5707496 +1613256 5707624 1613320 5707304 1613272 5707408 1613240 5707496 +1613232 5707584 1613256 5707624 1613240 5707496 1613224 5707552 +1613720 5708152 1614224 5707800 1614224 5707784 1613256 5707624 +1613256 5707624 1613616 5708152 1613640 5708144 1613720 5708152 +1613232 5707584 1612128 5707520 1613552 5708272 1613256 5707624 +1613552 5708272 1613560 5708192 1613256 5707624 1612128 5707520 +1612128 5707520 1610752 5708648 1613552 5708272 1613256 5707624 +1613256 5707624 1613240 5707496 1613232 5707584 1612128 5707520 +1613232 5707584 1612184 5707472 1612128 5707520 1613256 5707624 +1613232 5707584 1613224 5707552 1612184 5707472 1613256 5707624 +1612128 5707520 1613552 5708272 1613256 5707624 1612184 5707472 +1613232 5707584 1612184 5707472 1613256 5707624 1613240 5707496 +1613256 5707624 1613560 5708192 1613616 5708152 1613640 5708144 +1614224 5707784 1614240 5707760 1613320 5707304 1613256 5707624 +1613256 5707624 1613304 5707680 1613720 5708152 1614224 5707784 +1613256 5707624 1613304 5707680 1614224 5707784 1613320 5707304 +1613256 5707624 1613304 5707680 1613320 5707304 1613272 5707408 +1613256 5707624 1613304 5707680 1613272 5707408 1613240 5707496 +1613304 5707680 1613320 5707304 1613272 5707408 1613240 5707496 +1613304 5707680 1614224 5707784 1613320 5707304 1613272 5707408 +1613304 5707680 1613720 5708152 1614224 5707784 1613320 5707304 +1613256 5707624 1613304 5707680 1613240 5707496 1613232 5707584 +1613304 5707680 1613640 5708144 1613720 5708152 1614224 5707784 +1613720 5708152 1614224 5707800 1614224 5707784 1613304 5707680 +1613640 5708144 1613304 5707680 1613256 5707624 1613616 5708152 +1613640 5708144 1613720 5708152 1613304 5707680 1613616 5708152 +1613256 5707624 1613560 5708192 1613616 5708152 1613304 5707680 +1613256 5707624 1613552 5708272 1613560 5708192 1613304 5707680 +1613256 5707624 1612128 5707520 1613552 5708272 1613304 5707680 +1613552 5708272 1613560 5708192 1613304 5707680 1612128 5707520 +1613616 5708152 1613640 5708144 1613304 5707680 1613560 5708192 +1612128 5707520 1610752 5708648 1613552 5708272 1613304 5707680 +1613256 5707624 1612184 5707472 1612128 5707520 1613304 5707680 +1613560 5708192 1613616 5708152 1613304 5707680 1613552 5708272 +1613256 5707624 1612128 5707520 1613304 5707680 1613240 5707496 +1614224 5707784 1614240 5707760 1613320 5707304 1613304 5707680 +1613304 5707680 1613344 5707728 1613720 5708152 1614224 5707784 +1613304 5707680 1613344 5707728 1614224 5707784 1613320 5707304 +1613304 5707680 1613344 5707728 1613320 5707304 1613272 5707408 +1613304 5707680 1613344 5707728 1613272 5707408 1613240 5707496 +1613344 5707728 1614224 5707784 1613320 5707304 1613272 5707408 +1613344 5707728 1613720 5708152 1614224 5707784 1613320 5707304 +1613304 5707680 1613640 5708144 1613344 5707728 1613272 5707408 +1613640 5708144 1613344 5707728 1613304 5707680 1613616 5708152 +1613344 5707728 1613272 5707408 1613304 5707680 1613616 5708152 +1613344 5707728 1613640 5708144 1613720 5708152 1614224 5707784 +1613720 5708152 1614224 5707800 1614224 5707784 1613344 5707728 +1613304 5707680 1613560 5708192 1613616 5708152 1613344 5707728 +1613304 5707680 1613560 5708192 1613344 5707728 1613272 5707408 +1613616 5708152 1613640 5708144 1613344 5707728 1613560 5708192 +1613304 5707680 1613552 5708272 1613560 5708192 1613344 5707728 +1613304 5707680 1612128 5707520 1613552 5708272 1613344 5707728 +1613304 5707680 1613256 5707624 1612128 5707520 1613344 5707728 +1613304 5707680 1612128 5707520 1613344 5707728 1613272 5707408 +1613560 5708192 1613616 5708152 1613344 5707728 1613552 5708272 +1612128 5707520 1610752 5708648 1613552 5708272 1613344 5707728 +1613552 5708272 1613560 5708192 1613344 5707728 1612128 5707520 +1613640 5708144 1613720 5708152 1613344 5707728 1613616 5708152 +1614224 5707784 1614240 5707760 1613320 5707304 1613344 5707728 +1613344 5707728 1613376 5707784 1613616 5708152 1613640 5708144 +1613560 5708192 1613376 5707784 1613344 5707728 1613552 5708272 +1613344 5707728 1612128 5707520 1613552 5708272 1613376 5707784 +1613344 5707728 1613304 5707680 1612128 5707520 1613376 5707784 +1613304 5707680 1613256 5707624 1612128 5707520 1613376 5707784 +1613552 5708272 1613560 5708192 1613376 5707784 1612128 5707520 +1612128 5707520 1610752 5708648 1613552 5708272 1613376 5707784 +1612128 5707520 1613552 5708272 1613376 5707784 1613304 5707680 +1613344 5707728 1613304 5707680 1613376 5707784 1613640 5708144 +1613344 5707728 1613376 5707784 1613640 5708144 1613720 5708152 +1613376 5707784 1613616 5708152 1613640 5708144 1613720 5708152 +1613344 5707728 1613376 5707784 1613720 5708152 1614224 5707784 +1613344 5707728 1613376 5707784 1614224 5707784 1613320 5707304 +1613720 5708152 1614224 5707800 1614224 5707784 1613376 5707784 +1613344 5707728 1613304 5707680 1613376 5707784 1614224 5707784 +1613376 5707784 1613640 5708144 1613720 5708152 1614224 5707784 +1613376 5707784 1613560 5708192 1613616 5708152 1613640 5708144 +1613560 5708192 1613616 5708152 1613376 5707784 1613552 5708272 +1613376 5707784 1613408 5707880 1613552 5708272 1613560 5708192 +1613408 5707880 1612128 5707520 1613552 5708272 1613560 5708192 +1613552 5708272 1613408 5707880 1612128 5707520 1610752 5708648 +1612128 5707520 1613408 5707880 1613376 5707784 1613304 5707680 +1612128 5707520 1613552 5708272 1613408 5707880 1613304 5707680 +1612128 5707520 1613408 5707880 1613304 5707680 1613256 5707624 +1612128 5707520 1613552 5708272 1613408 5707880 1613256 5707624 +1613376 5707784 1613344 5707728 1613304 5707680 1613408 5707880 +1612128 5707520 1613408 5707880 1613256 5707624 1612184 5707472 +1613408 5707880 1613376 5707784 1613304 5707680 1613256 5707624 +1613376 5707784 1613304 5707680 1613408 5707880 1613560 5708192 +1613376 5707784 1613408 5707880 1613560 5708192 1613616 5708152 +1613408 5707880 1613552 5708272 1613560 5708192 1613616 5708152 +1613376 5707784 1613408 5707880 1613616 5708152 1613640 5708144 +1613376 5707784 1613408 5707880 1613640 5708144 1613720 5708152 +1613376 5707784 1613408 5707880 1613720 5708152 1614224 5707784 +1613408 5707880 1613640 5708144 1613720 5708152 1614224 5707784 +1613376 5707784 1613408 5707880 1614224 5707784 1613344 5707728 +1613720 5708152 1614224 5707800 1614224 5707784 1613408 5707880 +1613408 5707880 1613616 5708152 1613640 5708144 1613720 5708152 +1613376 5707784 1613304 5707680 1613408 5707880 1614224 5707784 +1613408 5707880 1613560 5708192 1613616 5708152 1613640 5708144 +1613408 5707880 1613408 5707920 1613552 5708272 1613560 5708192 +1613408 5707880 1612128 5707520 1613408 5707920 1613560 5708192 +1612128 5707520 1613408 5707920 1613408 5707880 1613256 5707624 +1613408 5707920 1613560 5708192 1613408 5707880 1613256 5707624 +1613408 5707920 1612128 5707520 1613552 5708272 1613560 5708192 +1612128 5707520 1613552 5708272 1613408 5707920 1613256 5707624 +1613408 5707880 1613304 5707680 1613256 5707624 1613408 5707920 +1613408 5707880 1613304 5707680 1613408 5707920 1613560 5708192 +1613256 5707624 1612128 5707520 1613408 5707920 1613304 5707680 +1613408 5707880 1613408 5707920 1613560 5708192 1613616 5708152 +1613408 5707920 1613552 5708272 1613560 5708192 1613616 5708152 +1613408 5707880 1613304 5707680 1613408 5707920 1613616 5708152 +1613552 5708272 1613408 5707920 1612128 5707520 1610752 5708648 +1612128 5707520 1613408 5707920 1613256 5707624 1612184 5707472 +1613408 5707880 1613376 5707784 1613304 5707680 1613408 5707920 +1613408 5707880 1613376 5707784 1613408 5707920 1613616 5708152 +1613304 5707680 1613256 5707624 1613408 5707920 1613376 5707784 +1613376 5707784 1613344 5707728 1613304 5707680 1613408 5707920 +1613304 5707680 1613256 5707624 1613408 5707920 1613344 5707728 +1613376 5707784 1613344 5707728 1613408 5707920 1613408 5707880 +1613408 5707880 1613408 5707920 1613616 5708152 1613640 5708144 +1613408 5707880 1613376 5707784 1613408 5707920 1613640 5708144 +1613408 5707920 1613560 5708192 1613616 5708152 1613640 5708144 +1613408 5707880 1613408 5707920 1613640 5708144 1613720 5708152 +1613408 5707920 1613400 5707944 1613552 5708272 1613560 5708192 +1613408 5707920 1613400 5707944 1613560 5708192 1613616 5708152 +1613400 5707944 1613552 5708272 1613560 5708192 1613616 5708152 +1613408 5707920 1612128 5707520 1613400 5707944 1613616 5708152 +1612128 5707520 1613400 5707944 1613408 5707920 1613256 5707624 +1613408 5707920 1613304 5707680 1613256 5707624 1613400 5707944 +1613400 5707944 1613616 5708152 1613408 5707920 1613304 5707680 +1613256 5707624 1612128 5707520 1613400 5707944 1613304 5707680 +1613408 5707920 1613344 5707728 1613304 5707680 1613400 5707944 +1613304 5707680 1613256 5707624 1613400 5707944 1613344 5707728 +1613408 5707920 1613344 5707728 1613400 5707944 1613616 5708152 +1613408 5707920 1613376 5707784 1613344 5707728 1613400 5707944 +1613408 5707920 1613376 5707784 1613400 5707944 1613616 5708152 +1613344 5707728 1613304 5707680 1613400 5707944 1613376 5707784 +1613408 5707920 1613400 5707944 1613616 5708152 1613640 5708144 +1613552 5708272 1613400 5707944 1612128 5707520 1610752 5708648 +1612128 5707520 1613400 5707944 1613256 5707624 1612184 5707472 +1613408 5707920 1613408 5707880 1613376 5707784 1613400 5707944 +1613408 5707920 1613408 5707880 1613400 5707944 1613616 5708152 +1613376 5707784 1613344 5707728 1613400 5707944 1613408 5707880 +1613400 5707944 1612128 5707520 1613552 5708272 1613560 5708192 +1612128 5707520 1613552 5708272 1613400 5707944 1613256 5707624 +1613552 5708272 1613336 5708008 1612128 5707520 1610752 5708648 +1612128 5707520 1612040 5707520 1610752 5708648 1613336 5708008 +1613552 5708272 1613336 5708008 1610752 5708648 1613608 5708344 +1613552 5708272 1613400 5707944 1613336 5708008 1610752 5708648 +1613400 5707944 1613336 5708008 1613552 5708272 1613560 5708192 +1613400 5707944 1613336 5708008 1613560 5708192 1613616 5708152 +1613336 5708008 1610752 5708648 1613552 5708272 1613560 5708192 +1613400 5707944 1612128 5707520 1613336 5708008 1613560 5708192 +1612128 5707520 1613336 5708008 1613400 5707944 1613256 5707624 +1613400 5707944 1613304 5707680 1613256 5707624 1613336 5708008 +1613400 5707944 1613344 5707728 1613304 5707680 1613336 5708008 +1613304 5707680 1613256 5707624 1613336 5708008 1613344 5707728 +1613400 5707944 1613376 5707784 1613344 5707728 1613336 5708008 +1613344 5707728 1613304 5707680 1613336 5708008 1613376 5707784 +1613400 5707944 1613408 5707880 1613376 5707784 1613336 5708008 +1613376 5707784 1613344 5707728 1613336 5708008 1613408 5707880 +1612128 5707520 1613336 5708008 1613256 5707624 1612184 5707472 +1613256 5707624 1613232 5707584 1612184 5707472 1613336 5708008 +1613232 5707584 1613224 5707552 1612184 5707472 1613336 5708008 +1612184 5707472 1612128 5707520 1613336 5708008 1613232 5707584 +1613400 5707944 1613408 5707920 1613408 5707880 1613336 5708008 +1613336 5708008 1613560 5708192 1613400 5707944 1613408 5707880 +1613256 5707624 1613232 5707584 1613336 5708008 1613304 5707680 +1613336 5708008 1612184 5707472 1612128 5707520 1610752 5708648 +1610752 5708648 1613264 5708064 1613336 5708008 1612128 5707520 +1610752 5708648 1613552 5708272 1613264 5708064 1612128 5707520 +1610752 5708648 1613264 5708064 1612128 5707520 1612040 5707520 +1613552 5708272 1613264 5708064 1610752 5708648 1613608 5708344 +1613264 5708064 1612128 5707520 1610752 5708648 1613608 5708344 +1610752 5708648 1613656 5708392 1613608 5708344 1613264 5708064 +1613336 5708008 1613264 5708064 1613552 5708272 1613560 5708192 +1613336 5708008 1613264 5708064 1613560 5708192 1613400 5707944 +1613264 5708064 1613560 5708192 1613336 5708008 1612128 5707520 +1613336 5708008 1612184 5707472 1612128 5707520 1613264 5708064 +1612128 5707520 1610752 5708648 1613264 5708064 1612184 5707472 +1613336 5708008 1613232 5707584 1612184 5707472 1613264 5708064 +1613232 5707584 1613224 5707552 1612184 5707472 1613264 5708064 +1613336 5708008 1613256 5707624 1613232 5707584 1613264 5708064 +1613232 5707584 1612184 5707472 1613264 5708064 1613256 5707624 +1613336 5708008 1613304 5707680 1613256 5707624 1613264 5708064 +1613336 5708008 1613344 5707728 1613304 5707680 1613264 5708064 +1613336 5708008 1613376 5707784 1613344 5707728 1613264 5708064 +1613256 5707624 1613232 5707584 1613264 5708064 1613304 5707680 +1613304 5707680 1613256 5707624 1613264 5708064 1613344 5707728 +1613336 5708008 1613344 5707728 1613264 5708064 1613560 5708192 +1612184 5707472 1612128 5707520 1613264 5708064 1613232 5707584 +1613552 5708272 1613560 5708192 1613264 5708064 1613608 5708344 +1613264 5708064 1612984 5708056 1610752 5708648 1613608 5708344 +1612984 5708056 1612128 5707520 1610752 5708648 1613608 5708344 +1613264 5708064 1612128 5707520 1612984 5708056 1613608 5708344 +1610752 5708648 1612984 5708056 1612128 5707520 1612040 5707520 +1612984 5708056 1613264 5708064 1612128 5707520 1612040 5707520 +1610752 5708648 1613608 5708344 1612984 5708056 1612040 5707520 +1610752 5708648 1612984 5708056 1612040 5707520 1610760 5708480 +1612128 5707520 1612984 5708056 1613264 5708064 1612184 5707472 +1612128 5707520 1612040 5707520 1612984 5708056 1612184 5707472 +1612984 5708056 1613608 5708344 1613264 5708064 1612184 5707472 +1613264 5708064 1612984 5708056 1613608 5708344 1613552 5708272 +1612984 5708056 1610752 5708648 1613608 5708344 1613552 5708272 +1613264 5708064 1612184 5707472 1612984 5708056 1613552 5708272 +1610752 5708648 1613656 5708392 1613608 5708344 1612984 5708056 +1613608 5708344 1613552 5708272 1612984 5708056 1613656 5708392 +1610752 5708648 1613696 5708424 1613656 5708392 1612984 5708056 +1610752 5708648 1613696 5708424 1612984 5708056 1612040 5707520 +1610752 5708648 1613784 5708464 1613696 5708424 1612984 5708056 +1613656 5708392 1613608 5708344 1612984 5708056 1613696 5708424 +1613264 5708064 1613232 5707584 1612184 5707472 1612984 5708056 +1613264 5708064 1613232 5707584 1612984 5708056 1613552 5708272 +1613232 5707584 1613224 5707552 1612184 5707472 1612984 5708056 +1612184 5707472 1612128 5707520 1612984 5708056 1613224 5707552 +1613264 5708064 1613256 5707624 1613232 5707584 1612984 5708056 +1613264 5708064 1613256 5707624 1612984 5708056 1613552 5708272 +1613264 5708064 1613304 5707680 1613256 5707624 1612984 5708056 +1613264 5708064 1613304 5707680 1612984 5708056 1613552 5708272 +1613256 5707624 1613232 5707584 1612984 5708056 1613304 5707680 +1613224 5707552 1612192 5707440 1612184 5707472 1612984 5708056 +1613264 5708064 1613344 5707728 1613304 5707680 1612984 5708056 +1613232 5707584 1613224 5707552 1612984 5708056 1613256 5707624 +1613264 5708064 1612984 5708056 1613552 5708272 1613560 5708192 +1613224 5707552 1612944 5708016 1612984 5708056 1613232 5707584 +1612944 5708016 1612184 5707472 1612984 5708056 1613232 5707584 +1612984 5708056 1612944 5708016 1612184 5707472 1612128 5707520 +1612984 5708056 1612944 5708016 1612128 5707520 1612040 5707520 +1612984 5708056 1613232 5707584 1612944 5708016 1612040 5707520 +1612944 5708016 1613224 5707552 1612184 5707472 1612128 5707520 +1612984 5708056 1612944 5708016 1612040 5707520 1610752 5708648 +1612944 5708016 1612128 5707520 1612040 5707520 1610752 5708648 +1612984 5708056 1613232 5707584 1612944 5708016 1610752 5708648 +1612984 5708056 1612944 5708016 1610752 5708648 1613696 5708424 +1612040 5707520 1610760 5708480 1610752 5708648 1612944 5708016 +1612944 5708016 1612184 5707472 1612128 5707520 1612040 5707520 +1612184 5707472 1612944 5708016 1613224 5707552 1612192 5707440 +1612184 5707472 1612128 5707520 1612944 5708016 1612192 5707440 +1613224 5707552 1612792 5706920 1612192 5707440 1612944 5708016 +1613224 5707552 1612192 5707440 1612944 5708016 1613232 5707584 +1612984 5708056 1613256 5707624 1613232 5707584 1612944 5708016 +1612984 5708056 1613256 5707624 1612944 5708016 1610752 5708648 +1613232 5707584 1613224 5707552 1612944 5708016 1613256 5707624 +1612984 5708056 1613304 5707680 1613256 5707624 1612944 5708016 +1612984 5708056 1613304 5707680 1612944 5708016 1610752 5708648 +1612984 5708056 1613264 5708064 1613304 5707680 1612944 5708016 +1612984 5708056 1613264 5708064 1612944 5708016 1610752 5708648 +1613304 5707680 1613256 5707624 1612944 5708016 1613264 5708064 +1613264 5708064 1613344 5707728 1613304 5707680 1612944 5708016 +1613256 5707624 1613232 5707584 1612944 5708016 1613304 5707680 +1612192 5707440 1612912 5707960 1613224 5707552 1612792 5706920 +1612944 5708016 1612912 5707960 1612192 5707440 1612184 5707472 +1612944 5708016 1612912 5707960 1612184 5707472 1612128 5707520 +1612944 5708016 1612912 5707960 1612128 5707520 1612040 5707520 +1612912 5707960 1612192 5707440 1612184 5707472 1612128 5707520 +1612944 5708016 1613224 5707552 1612912 5707960 1612128 5707520 +1613224 5707552 1612912 5707960 1612944 5708016 1613232 5707584 +1612944 5708016 1613256 5707624 1613232 5707584 1612912 5707960 +1613224 5707552 1612192 5707440 1612912 5707960 1613232 5707584 +1612912 5707960 1612128 5707520 1612944 5708016 1613256 5707624 +1613232 5707584 1613224 5707552 1612912 5707960 1613256 5707624 +1612912 5707960 1613224 5707552 1612192 5707440 1612184 5707472 +1612944 5708016 1613304 5707680 1613256 5707624 1612912 5707960 +1613256 5707624 1613232 5707584 1612912 5707960 1613304 5707680 +1612944 5708016 1613264 5708064 1613304 5707680 1612912 5707960 +1612944 5708016 1612984 5708056 1613264 5708064 1612912 5707960 +1613264 5708064 1613304 5707680 1612912 5707960 1612984 5708056 +1612944 5708016 1612984 5708056 1612912 5707960 1612128 5707520 +1613264 5708064 1613344 5707728 1613304 5707680 1612912 5707960 +1613304 5707680 1613256 5707624 1612912 5707960 1613264 5708064 +1612192 5707440 1612880 5707912 1613224 5707552 1612792 5706920 +1613224 5707552 1612992 5706984 1612792 5706920 1612880 5707912 +1612192 5707440 1612880 5707912 1612792 5706920 1612184 5707392 +1613224 5707552 1612880 5707912 1612912 5707960 1613232 5707584 +1612880 5707912 1612192 5707440 1612912 5707960 1613232 5707584 +1612912 5707960 1613256 5707624 1613232 5707584 1612880 5707912 +1612912 5707960 1613304 5707680 1613256 5707624 1612880 5707912 +1613232 5707584 1613224 5707552 1612880 5707912 1613256 5707624 +1612912 5707960 1613256 5707624 1612880 5707912 1612192 5707440 +1612912 5707960 1612880 5707912 1612192 5707440 1612184 5707472 +1612912 5707960 1613256 5707624 1612880 5707912 1612184 5707472 +1612912 5707960 1612880 5707912 1612184 5707472 1612128 5707520 +1612912 5707960 1612880 5707912 1612128 5707520 1612944 5708016 +1612912 5707960 1613256 5707624 1612880 5707912 1612944 5708016 +1612128 5707520 1612040 5707520 1612944 5708016 1612880 5707912 +1612880 5707912 1612184 5707472 1612128 5707520 1612944 5708016 +1612880 5707912 1612192 5707440 1612184 5707472 1612128 5707520 +1612192 5707440 1612184 5707472 1612880 5707912 1612792 5706920 +1612880 5707912 1613232 5707584 1613224 5707552 1612792 5706920 +1612792 5706920 1612848 5707856 1612880 5707912 1613224 5707552 +1612792 5706920 1612192 5707440 1612848 5707856 1613224 5707552 +1612792 5706920 1612848 5707856 1613224 5707552 1612992 5706984 +1612792 5706920 1612192 5707440 1612848 5707856 1612992 5706984 +1612848 5707856 1612880 5707912 1613224 5707552 1612992 5706984 +1612192 5707440 1612848 5707856 1612792 5706920 1612184 5707392 +1612792 5706920 1612848 5707856 1612992 5706984 1612848 5706920 +1613224 5707552 1613240 5707496 1612992 5706984 1612848 5707856 +1612880 5707912 1612848 5707856 1612192 5707440 1612184 5707472 +1612848 5707856 1612792 5706920 1612192 5707440 1612184 5707472 +1612880 5707912 1612848 5707856 1612184 5707472 1612128 5707520 +1612880 5707912 1612848 5707856 1612128 5707520 1612944 5708016 +1612848 5707856 1612192 5707440 1612184 5707472 1612128 5707520 +1612848 5707856 1612128 5707520 1612880 5707912 1613224 5707552 +1612880 5707912 1613232 5707584 1613224 5707552 1612848 5707856 +1613224 5707552 1612992 5706984 1612848 5707856 1613232 5707584 +1612880 5707912 1613256 5707624 1613232 5707584 1612848 5707856 +1612880 5707912 1612912 5707960 1613256 5707624 1612848 5707856 +1612880 5707912 1613256 5707624 1612848 5707856 1612128 5707520 +1613232 5707584 1613224 5707552 1612848 5707856 1613256 5707624 +1612848 5707856 1612792 5707784 1612192 5707440 1612184 5707472 +1612792 5707784 1612792 5706920 1612192 5707440 1612184 5707472 +1612848 5707856 1612792 5706920 1612792 5707784 1612184 5707472 +1612792 5706920 1612792 5707784 1612848 5707856 1612992 5706984 +1612792 5706920 1612192 5707440 1612792 5707784 1612992 5706984 +1612792 5707784 1612184 5707472 1612848 5707856 1612992 5706984 +1612848 5707856 1613224 5707552 1612992 5706984 1612792 5707784 +1612848 5707856 1613224 5707552 1612792 5707784 1612184 5707472 +1612992 5706984 1612792 5706920 1612792 5707784 1613224 5707552 +1612848 5707856 1613232 5707584 1613224 5707552 1612792 5707784 +1612848 5707856 1613232 5707584 1612792 5707784 1612184 5707472 +1613224 5707552 1612992 5706984 1612792 5707784 1613232 5707584 +1612192 5707440 1612792 5707784 1612792 5706920 1612184 5707392 +1612792 5706920 1612792 5707784 1612992 5706984 1612848 5706920 +1613224 5707552 1613240 5707496 1612992 5706984 1612792 5707784 +1612992 5706984 1612792 5706920 1612792 5707784 1613240 5707496 +1613240 5707496 1613096 5707024 1612992 5706984 1612792 5707784 +1613224 5707552 1613240 5707496 1612792 5707784 1613232 5707584 +1612848 5707856 1612792 5707784 1612184 5707472 1612128 5707520 +1612792 5707784 1612192 5707440 1612184 5707472 1612128 5707520 +1612848 5707856 1613232 5707584 1612792 5707784 1612128 5707520 +1612848 5707856 1612792 5707784 1612128 5707520 1612880 5707912 +1612848 5707856 1613232 5707584 1612792 5707784 1612880 5707912 +1612128 5707520 1612944 5708016 1612880 5707912 1612792 5707784 +1612792 5707784 1612184 5707472 1612128 5707520 1612880 5707912 +1612848 5707856 1613256 5707624 1613232 5707584 1612792 5707784 +1612792 5707784 1612736 5707728 1612192 5707440 1612184 5707472 +1612792 5707784 1612792 5706920 1612736 5707728 1612184 5707472 +1612792 5706920 1612736 5707728 1612792 5707784 1612992 5706984 +1612736 5707728 1612184 5707472 1612792 5707784 1612992 5706984 +1612792 5707784 1612736 5707728 1612184 5707472 1612128 5707520 +1612736 5707728 1612192 5707440 1612184 5707472 1612128 5707520 +1612792 5707784 1612992 5706984 1612736 5707728 1612128 5707520 +1612792 5707784 1613240 5707496 1612992 5706984 1612736 5707728 +1612792 5707784 1613240 5707496 1612736 5707728 1612128 5707520 +1612992 5706984 1612792 5706920 1612736 5707728 1613240 5707496 +1613240 5707496 1613096 5707024 1612992 5706984 1612736 5707728 +1612736 5707728 1612792 5706920 1612192 5707440 1612184 5707472 +1612792 5706920 1612192 5707440 1612736 5707728 1612992 5706984 +1612192 5707440 1612736 5707728 1612792 5706920 1612184 5707392 +1612192 5707440 1612184 5707472 1612736 5707728 1612184 5707392 +1612736 5707728 1612992 5706984 1612792 5706920 1612184 5707392 +1612792 5706920 1612160 5707288 1612184 5707392 1612736 5707728 +1612792 5706920 1612736 5707728 1612992 5706984 1612848 5706920 +1612792 5707784 1613224 5707552 1613240 5707496 1612736 5707728 +1612792 5707784 1613224 5707552 1612736 5707728 1612128 5707520 +1613240 5707496 1612992 5706984 1612736 5707728 1613224 5707552 +1612792 5707784 1613232 5707584 1613224 5707552 1612736 5707728 +1612792 5707784 1612736 5707728 1612128 5707520 1612880 5707912 +1612792 5707784 1613224 5707552 1612736 5707728 1612880 5707912 +1612736 5707728 1612184 5707472 1612128 5707520 1612880 5707912 +1612128 5707520 1612944 5708016 1612880 5707912 1612736 5707728 +1612792 5707784 1612736 5707728 1612880 5707912 1612848 5707856 +1612792 5706920 1612688 5707680 1612736 5707728 1612992 5706984 +1612736 5707728 1613240 5707496 1612992 5706984 1612688 5707680 +1612736 5707728 1613224 5707552 1613240 5707496 1612688 5707680 +1613240 5707496 1612992 5706984 1612688 5707680 1613224 5707552 +1613240 5707496 1613096 5707024 1612992 5706984 1612688 5707680 +1612688 5707680 1612184 5707392 1612736 5707728 1613224 5707552 +1612992 5706984 1612792 5706920 1612688 5707680 1613240 5707496 +1612184 5707392 1612688 5707680 1612792 5706920 1612160 5707288 +1612736 5707728 1612688 5707680 1612184 5707392 1612192 5707440 +1612736 5707728 1612688 5707680 1612192 5707440 1612184 5707472 +1612736 5707728 1612688 5707680 1612184 5707472 1612128 5707520 +1612736 5707728 1612688 5707680 1612128 5707520 1612880 5707912 +1612688 5707680 1612192 5707440 1612184 5707472 1612128 5707520 +1612736 5707728 1613224 5707552 1612688 5707680 1612128 5707520 +1612688 5707680 1612792 5706920 1612184 5707392 1612192 5707440 +1612688 5707680 1612184 5707392 1612192 5707440 1612184 5707472 +1612792 5706920 1612184 5707392 1612688 5707680 1612992 5706984 +1612792 5706920 1612688 5707680 1612992 5706984 1612848 5706920 +1612736 5707728 1612792 5707784 1613224 5707552 1612688 5707680 +1612688 5707680 1612640 5707624 1612184 5707392 1612192 5707440 +1612184 5707392 1612640 5707624 1612792 5706920 1612160 5707288 +1612792 5706920 1612128 5707184 1612160 5707288 1612640 5707624 +1612688 5707680 1612640 5707624 1612192 5707440 1612184 5707472 +1612688 5707680 1612640 5707624 1612184 5707472 1612128 5707520 +1612688 5707680 1612640 5707624 1612128 5707520 1612736 5707728 +1612640 5707624 1612192 5707440 1612184 5707472 1612128 5707520 +1612640 5707624 1612160 5707288 1612184 5707392 1612192 5707440 +1612640 5707624 1612184 5707392 1612192 5707440 1612184 5707472 +1612640 5707624 1612688 5707680 1612792 5706920 1612160 5707288 +1612688 5707680 1612792 5706920 1612640 5707624 1612128 5707520 +1612792 5706920 1612640 5707624 1612688 5707680 1612992 5706984 +1612688 5707680 1613240 5707496 1612992 5706984 1612640 5707624 +1612688 5707680 1613224 5707552 1613240 5707496 1612640 5707624 +1612688 5707680 1612736 5707728 1613224 5707552 1612640 5707624 +1613240 5707496 1613096 5707024 1612992 5706984 1612640 5707624 +1613240 5707496 1612992 5706984 1612640 5707624 1613224 5707552 +1612792 5706920 1612160 5707288 1612640 5707624 1612992 5706984 +1612640 5707624 1612128 5707520 1612688 5707680 1613224 5707552 +1612992 5706984 1612792 5706920 1612640 5707624 1613240 5707496 +1612792 5706920 1612640 5707624 1612992 5706984 1612848 5706920 +1612160 5707288 1612616 5707584 1612792 5706920 1612128 5707184 +1612640 5707624 1612616 5707584 1612160 5707288 1612184 5707392 +1612640 5707624 1612792 5706920 1612616 5707584 1612184 5707392 +1612616 5707584 1612792 5706920 1612160 5707288 1612184 5707392 +1612640 5707624 1612616 5707584 1612184 5707392 1612192 5707440 +1612640 5707624 1612792 5706920 1612616 5707584 1612192 5707440 +1612616 5707584 1612160 5707288 1612184 5707392 1612192 5707440 +1612640 5707624 1612616 5707584 1612192 5707440 1612184 5707472 +1612640 5707624 1612792 5706920 1612616 5707584 1612184 5707472 +1612640 5707624 1612616 5707584 1612184 5707472 1612128 5707520 +1612640 5707624 1612792 5706920 1612616 5707584 1612128 5707520 +1612640 5707624 1612616 5707584 1612128 5707520 1612688 5707680 +1612616 5707584 1612184 5707392 1612192 5707440 1612184 5707472 +1612616 5707584 1612192 5707440 1612184 5707472 1612128 5707520 +1612792 5706920 1612616 5707584 1612640 5707624 1612992 5706984 +1612616 5707584 1612128 5707520 1612640 5707624 1612992 5706984 +1612792 5706920 1612160 5707288 1612616 5707584 1612992 5706984 +1612640 5707624 1613240 5707496 1612992 5706984 1612616 5707584 +1612640 5707624 1613240 5707496 1612616 5707584 1612128 5707520 +1613240 5707496 1613096 5707024 1612992 5706984 1612616 5707584 +1612640 5707624 1613224 5707552 1613240 5707496 1612616 5707584 +1612640 5707624 1613224 5707552 1612616 5707584 1612128 5707520 +1612640 5707624 1612688 5707680 1613224 5707552 1612616 5707584 +1612992 5706984 1612792 5706920 1612616 5707584 1613240 5707496 +1613240 5707496 1612992 5706984 1612616 5707584 1613224 5707552 +1612792 5706920 1612616 5707584 1612992 5706984 1612848 5706920 +1612160 5707288 1612584 5707488 1612792 5706920 1612128 5707184 +1612616 5707584 1612584 5707488 1612160 5707288 1612184 5707392 +1612616 5707584 1612792 5706920 1612584 5707488 1612184 5707392 +1612792 5706920 1612584 5707488 1612616 5707584 1612992 5706984 +1612584 5707488 1612184 5707392 1612616 5707584 1612992 5706984 +1612584 5707488 1612792 5706920 1612160 5707288 1612184 5707392 +1612616 5707584 1612584 5707488 1612184 5707392 1612192 5707440 +1612584 5707488 1612160 5707288 1612184 5707392 1612192 5707440 +1612616 5707584 1612992 5706984 1612584 5707488 1612192 5707440 +1612616 5707584 1612584 5707488 1612192 5707440 1612184 5707472 +1612616 5707584 1612992 5706984 1612584 5707488 1612184 5707472 +1612584 5707488 1612184 5707392 1612192 5707440 1612184 5707472 +1612616 5707584 1612584 5707488 1612184 5707472 1612128 5707520 +1612616 5707584 1613240 5707496 1612992 5706984 1612584 5707488 +1612616 5707584 1613240 5707496 1612584 5707488 1612184 5707472 +1612992 5706984 1612792 5706920 1612584 5707488 1613240 5707496 +1613240 5707496 1613096 5707024 1612992 5706984 1612584 5707488 +1612616 5707584 1613224 5707552 1613240 5707496 1612584 5707488 +1612792 5706920 1612584 5707488 1612992 5706984 1612848 5706920 +1612792 5706920 1612160 5707288 1612584 5707488 1612992 5706984 +1612160 5707288 1612552 5707384 1612792 5706920 1612128 5707184 +1612792 5706920 1612096 5707088 1612128 5707184 1612552 5707384 +1612584 5707488 1612552 5707384 1612160 5707288 1612184 5707392 +1612584 5707488 1612552 5707384 1612184 5707392 1612192 5707440 +1612552 5707384 1612160 5707288 1612184 5707392 1612192 5707440 +1612584 5707488 1612552 5707384 1612192 5707440 1612184 5707472 +1612584 5707488 1612792 5706920 1612552 5707384 1612192 5707440 +1612792 5706920 1612552 5707384 1612584 5707488 1612992 5706984 +1612584 5707488 1613240 5707496 1612992 5706984 1612552 5707384 +1612792 5706920 1612552 5707384 1612992 5706984 1612848 5706920 +1612552 5707384 1612192 5707440 1612584 5707488 1612992 5706984 +1612160 5707288 1612184 5707392 1612552 5707384 1612128 5707184 +1612552 5707384 1612992 5706984 1612792 5706920 1612128 5707184 +1612552 5707384 1612528 5707280 1612128 5707184 1612160 5707288 +1612128 5707184 1612528 5707280 1612792 5706920 1612096 5707088 +1612792 5706920 1612048 5706984 1612096 5707088 1612528 5707280 +1612528 5707280 1612096 5707088 1612128 5707184 1612160 5707288 +1612528 5707280 1612552 5707384 1612792 5706920 1612096 5707088 +1612552 5707384 1612528 5707280 1612160 5707288 1612184 5707392 +1612528 5707280 1612128 5707184 1612160 5707288 1612184 5707392 +1612552 5707384 1612528 5707280 1612184 5707392 1612192 5707440 +1612552 5707384 1612792 5706920 1612528 5707280 1612184 5707392 +1612792 5706920 1612528 5707280 1612552 5707384 1612992 5706984 +1612792 5706920 1612096 5707088 1612528 5707280 1612992 5706984 +1612792 5706920 1612528 5707280 1612992 5706984 1612848 5706920 +1612552 5707384 1612584 5707488 1612992 5706984 1612528 5707280 +1612528 5707280 1612184 5707392 1612552 5707384 1612992 5706984 +1612528 5707280 1612520 5707232 1612096 5707088 1612128 5707184 +1612096 5707088 1612520 5707232 1612792 5706920 1612048 5706984 +1612792 5706920 1611984 5706880 1612048 5706984 1612520 5707232 +1612528 5707280 1612520 5707232 1612128 5707184 1612160 5707288 +1612528 5707280 1612520 5707232 1612160 5707288 1612184 5707392 +1612520 5707232 1612096 5707088 1612128 5707184 1612160 5707288 +1612528 5707280 1612792 5706920 1612520 5707232 1612160 5707288 +1612792 5706920 1612520 5707232 1612528 5707280 1612992 5706984 +1612520 5707232 1612048 5706984 1612096 5707088 1612128 5707184 +1612520 5707232 1612528 5707280 1612792 5706920 1612048 5706984 +1612048 5706984 1612536 5707192 1612792 5706920 1611984 5706880 +1612520 5707232 1612536 5707192 1612048 5706984 1612096 5707088 +1612520 5707232 1612536 5707192 1612096 5707088 1612128 5707184 +1612520 5707232 1612536 5707192 1612128 5707184 1612160 5707288 +1612536 5707192 1612048 5706984 1612096 5707088 1612128 5707184 +1612792 5706920 1612536 5707192 1612520 5707232 1612528 5707280 +1612792 5706920 1612536 5707192 1612528 5707280 1612992 5706984 +1612536 5707192 1612520 5707232 1612528 5707280 1612992 5706984 +1612520 5707232 1612528 5707280 1612536 5707192 1612128 5707184 +1612536 5707192 1612792 5706920 1612048 5706984 1612096 5707088 +1612792 5706920 1612048 5706984 1612536 5707192 1612992 5706984 +1612792 5706920 1612536 5707192 1612992 5706984 1612848 5706920 +1612528 5707280 1612552 5707384 1612992 5706984 1612536 5707192 +1612992 5706984 1612792 5706920 1612536 5707192 1612552 5707384 +1612528 5707280 1612552 5707384 1612536 5707192 1612520 5707232 +1612552 5707384 1612584 5707488 1612992 5706984 1612536 5707192 +1612048 5706984 1612568 5707144 1612792 5706920 1611984 5706880 +1612536 5707192 1612568 5707144 1612048 5706984 1612096 5707088 +1612536 5707192 1612568 5707144 1612096 5707088 1612128 5707184 +1612536 5707192 1612792 5706920 1612568 5707144 1612096 5707088 +1612792 5706920 1612568 5707144 1612536 5707192 1612992 5706984 +1612536 5707192 1612552 5707384 1612992 5706984 1612568 5707144 +1612568 5707144 1612096 5707088 1612536 5707192 1612552 5707384 +1612992 5706984 1612792 5706920 1612568 5707144 1612552 5707384 +1612568 5707144 1612792 5706920 1612048 5706984 1612096 5707088 +1612792 5706920 1612048 5706984 1612568 5707144 1612992 5706984 +1612792 5706920 1612568 5707144 1612992 5706984 1612848 5706920 +1612568 5707144 1612552 5707384 1612992 5706984 1612848 5706920 +1612792 5706920 1612048 5706984 1612568 5707144 1612848 5706920 +1612552 5707384 1612584 5707488 1612992 5706984 1612568 5707144 +1612536 5707192 1612528 5707280 1612552 5707384 1612568 5707144 +1612552 5707384 1612992 5706984 1612568 5707144 1612528 5707280 +1612536 5707192 1612520 5707232 1612528 5707280 1612568 5707144 +1612536 5707192 1612528 5707280 1612568 5707144 1612096 5707088 +1612792 5706920 1611984 5706880 1612048 5706984 1612608 5707104 +1612568 5707144 1612608 5707104 1612048 5706984 1612096 5707088 +1612568 5707144 1612992 5706984 1612848 5706920 1612608 5707104 +1612848 5706920 1612792 5706920 1612608 5707104 1612992 5706984 +1612568 5707144 1612552 5707384 1612992 5706984 1612608 5707104 +1612568 5707144 1612528 5707280 1612552 5707384 1612608 5707104 +1612552 5707384 1612992 5706984 1612608 5707104 1612528 5707280 +1612568 5707144 1612528 5707280 1612608 5707104 1612048 5706984 +1612992 5706984 1612848 5706920 1612608 5707104 1612552 5707384 +1612552 5707384 1612584 5707488 1612992 5706984 1612608 5707104 +1612568 5707144 1612536 5707192 1612528 5707280 1612608 5707104 +1612792 5706920 1611984 5706880 1612048 5706984 1612656 5707056 +1612048 5706984 1612608 5707104 1612656 5707056 1611984 5706880 +1612792 5706920 1611984 5706880 1612656 5707056 1612848 5706920 +1612608 5707104 1612992 5706984 1612848 5706920 1612656 5707056 +1612608 5707104 1612992 5706984 1612656 5707056 1612048 5706984 +1612848 5706920 1612792 5706920 1612656 5707056 1612992 5706984 +1612608 5707104 1612656 5707056 1612048 5706984 1612568 5707144 +1612792 5706920 1611944 5706832 1611984 5706880 1612656 5707056 +1612608 5707104 1612552 5707384 1612992 5706984 1612656 5707056 +1612608 5707104 1612552 5707384 1612656 5707056 1612048 5706984 +1612992 5706984 1612848 5706920 1612656 5707056 1612552 5707384 +1612608 5707104 1612528 5707280 1612552 5707384 1612656 5707056 +1612552 5707384 1612584 5707488 1612992 5706984 1612656 5707056 +1612792 5706920 1612728 5706976 1612656 5707056 1612848 5706920 +1612656 5707056 1612992 5706984 1612848 5706920 1612728 5706976 +1612848 5706920 1612792 5706920 1612728 5706976 1612992 5706984 +1612728 5706976 1611984 5706880 1612656 5707056 1612992 5706984 +1612656 5707056 1612728 5706976 1611984 5706880 1612048 5706984 +1612656 5707056 1612728 5706976 1612048 5706984 1612608 5707104 +1612656 5707056 1612992 5706984 1612728 5706976 1612048 5706984 +1612656 5707056 1612552 5707384 1612992 5706984 1612728 5706976 +1611984 5706880 1612728 5706976 1612792 5706920 1611944 5706832 +1612728 5706976 1612792 5706920 1611984 5706880 1612048 5706984 +1612792 5706920 1611984 5706880 1612728 5706976 1612848 5706920 +1602224 5696056 1608312 5702496 1612848 5706920 1613096 5707024 +1602224 5696056 1608312 5702496 1613096 5707024 1613152 5707048 +1608312 5702496 1612848 5706920 1613096 5707024 1613152 5707048 +1602224 5696056 1608312 5702496 1613152 5707048 1601624 5681136 +1608312 5702496 1613096 5707024 1613152 5707048 1601624 5681136 +1613152 5707048 1614576 5707608 1601624 5681136 1608312 5702496 +1614576 5707608 1614648 5707656 1601624 5681136 1608312 5702496 +1601624 5681136 1602224 5696056 1608312 5702496 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1608312 5702496 +1613152 5707048 1614576 5707608 1608312 5702496 1613096 5707024 +1602224 5696056 1608312 5702496 1601624 5681136 1601592 5681216 +1608312 5702496 1614576 5707608 1601624 5681136 1601592 5681216 +1602224 5696056 1602504 5696992 1608312 5702496 1601592 5681216 +1608312 5702496 1602504 5696992 1612848 5706920 1613096 5707024 +1602504 5696992 1608312 5702496 1602224 5696056 1602224 5696096 +1602224 5696056 1608312 5702496 1601592 5681216 1602200 5696008 +1608312 5702496 1601624 5681136 1601592 5681216 1602200 5696008 +1602224 5696056 1602504 5696992 1608312 5702496 1602200 5696008 +1601592 5681216 1602160 5695928 1602200 5696008 1608312 5702496 +1601592 5681216 1601128 5681664 1602160 5695928 1608312 5702496 +1601592 5681216 1602160 5695928 1608312 5702496 1601624 5681136 +1602200 5696008 1602224 5696056 1608312 5702496 1602160 5695928 +1612848 5706920 1612992 5706984 1613096 5707024 1608312 5702496 +1612848 5706920 1608312 5702496 1602504 5696992 1604104 5700768 +1608312 5702496 1602224 5696056 1602504 5696992 1604104 5700768 +1612848 5706920 1613096 5707024 1608312 5702496 1604104 5700768 +1602504 5696992 1604056 5700696 1604104 5700768 1608312 5702496 +1602504 5696992 1604056 5700696 1608312 5702496 1602224 5696056 +1602504 5696992 1602504 5697056 1604056 5700696 1608312 5702496 +1604104 5700768 1612848 5706920 1608312 5702496 1604056 5700696 +1612848 5706920 1608312 5702496 1604104 5700768 1611832 5706704 +1612848 5706920 1608312 5702496 1611832 5706704 1612792 5706920 +1604104 5700768 1604152 5700872 1611832 5706704 1608312 5702496 +1604152 5700872 1611784 5706704 1611832 5706704 1608312 5702496 +1604152 5700872 1611784 5706704 1608312 5702496 1604104 5700768 +1612848 5706920 1613096 5707024 1608312 5702496 1611832 5706704 +1604152 5700872 1609424 5706616 1611784 5706704 1608312 5702496 +1604152 5700872 1609424 5706616 1608312 5702496 1604104 5700768 +1604152 5700872 1604160 5700992 1609424 5706616 1608312 5702496 +1604152 5700872 1604160 5700992 1608312 5702496 1604104 5700768 +1611784 5706704 1611832 5706704 1608312 5702496 1609424 5706616 +1609424 5706616 1611712 5706760 1611784 5706704 1608312 5702496 +1609424 5706616 1611784 5706704 1608312 5702496 1604160 5700992 +1604160 5700992 1604152 5701064 1609424 5706616 1608312 5702496 +1604152 5701064 1608680 5706648 1609424 5706616 1608312 5702496 +1604152 5701064 1608632 5706656 1608680 5706648 1608312 5702496 +1608680 5706648 1609424 5706616 1608312 5702496 1608632 5706656 +1604152 5701064 1604128 5701096 1608632 5706656 1608312 5702496 +1608632 5706656 1608680 5706648 1608312 5702496 1604128 5701096 +1604128 5701096 1604080 5701120 1608632 5706656 1608312 5702496 +1608632 5706656 1608680 5706648 1608312 5702496 1604080 5701120 +1604128 5701096 1604080 5701120 1608312 5702496 1604152 5701064 +1604080 5701120 1608592 5706712 1608632 5706656 1608312 5702496 +1608632 5706656 1608680 5706648 1608312 5702496 1608592 5706712 +1604080 5701120 1608568 5706784 1608592 5706712 1608312 5702496 +1604080 5701120 1608592 5706712 1608312 5702496 1604128 5701096 +1604160 5700992 1604152 5701064 1608312 5702496 1604152 5700872 +1609424 5706616 1611784 5706704 1608312 5702496 1608680 5706648 +1604152 5701064 1604128 5701096 1608312 5702496 1604160 5700992 +1608680 5706648 1608784 5706656 1609424 5706616 1608312 5702496 +1608680 5706648 1608784 5706656 1608312 5702496 1608632 5706656 +1609424 5706616 1611784 5706704 1608312 5702496 1608784 5706656 +1608784 5706656 1609352 5706640 1609424 5706616 1608312 5702496 +1608312 5702496 1604056 5700696 1604104 5700768 1604152 5700872 +1611832 5706704 1612848 5706920 1608312 5702496 1611784 5706704 +1602160 5695928 1608256 5702368 1601592 5681216 1601128 5681664 +1601592 5681216 1608256 5702368 1608312 5702496 1601624 5681136 +1608312 5702496 1614576 5707608 1601624 5681136 1608256 5702368 +1614576 5707608 1614648 5707656 1601624 5681136 1608256 5702368 +1608312 5702496 1613152 5707048 1614576 5707608 1608256 5702368 +1614576 5707608 1601624 5681136 1608256 5702368 1613152 5707048 +1613152 5707048 1613240 5707104 1614576 5707608 1608256 5702368 +1608312 5702496 1613096 5707024 1613152 5707048 1608256 5702368 +1608312 5702496 1612848 5706920 1613096 5707024 1608256 5702368 +1613096 5707024 1613152 5707048 1608256 5702368 1612848 5706920 +1613152 5707048 1614576 5707608 1608256 5702368 1613096 5707024 +1601592 5681216 1602160 5695928 1608256 5702368 1601624 5681136 +1601624 5681136 1601592 5681216 1608256 5702368 1614576 5707608 +1608256 5702368 1602160 5695928 1608312 5702496 1612848 5706920 +1608312 5702496 1611832 5706704 1612848 5706920 1608256 5702368 +1608312 5702496 1608256 5702368 1602160 5695928 1602200 5696008 +1608312 5702496 1612848 5706920 1608256 5702368 1602200 5696008 +1608256 5702368 1601592 5681216 1602160 5695928 1602200 5696008 +1608312 5702496 1608256 5702368 1602200 5696008 1602224 5696056 +1608312 5702496 1608256 5702368 1602224 5696056 1602504 5696992 +1608312 5702496 1608256 5702368 1602504 5696992 1604056 5700696 +1608256 5702368 1602224 5696056 1602504 5696992 1604056 5700696 +1608312 5702496 1612848 5706920 1608256 5702368 1604056 5700696 +1602504 5696992 1602504 5697056 1604056 5700696 1608256 5702368 +1602224 5696056 1602224 5696096 1602504 5696992 1608256 5702368 +1608256 5702368 1602200 5696008 1602224 5696056 1602504 5696992 +1608256 5702368 1602160 5695928 1602200 5696008 1602224 5696056 +1612848 5706920 1612992 5706984 1613096 5707024 1608256 5702368 +1608312 5702496 1608256 5702368 1604056 5700696 1604104 5700768 +1608256 5702368 1602504 5696992 1604056 5700696 1604104 5700768 +1608312 5702496 1612848 5706920 1608256 5702368 1604104 5700768 +1608312 5702496 1608256 5702368 1604104 5700768 1604152 5700872 +1608312 5702496 1608256 5702368 1604152 5700872 1604160 5700992 +1608312 5702496 1608256 5702368 1604160 5700992 1604152 5701064 +1608256 5702368 1604152 5700872 1604160 5700992 1604152 5701064 +1608312 5702496 1612848 5706920 1608256 5702368 1604152 5701064 +1608312 5702496 1608256 5702368 1604152 5701064 1604128 5701096 +1608312 5702496 1608256 5702368 1604128 5701096 1604080 5701120 +1608256 5702368 1604160 5700992 1604152 5701064 1604128 5701096 +1608312 5702496 1612848 5706920 1608256 5702368 1604128 5701096 +1608256 5702368 1604056 5700696 1604104 5700768 1604152 5700872 +1608256 5702368 1604104 5700768 1604152 5700872 1604160 5700992 +1601624 5681136 1608208 5702088 1614576 5707608 1614648 5707656 +1614576 5707608 1608208 5702088 1608256 5702368 1613152 5707048 +1614576 5707608 1608208 5702088 1613152 5707048 1613240 5707104 +1608256 5702368 1613096 5707024 1613152 5707048 1608208 5702088 +1613152 5707048 1614576 5707608 1608208 5702088 1613096 5707024 +1608256 5702368 1612848 5706920 1613096 5707024 1608208 5702088 +1608256 5702368 1608312 5702496 1612848 5706920 1608208 5702088 +1612848 5706920 1613096 5707024 1608208 5702088 1608312 5702496 +1613096 5707024 1613152 5707048 1608208 5702088 1612848 5706920 +1614576 5707608 1601624 5681136 1608208 5702088 1613152 5707048 +1608208 5702088 1601624 5681136 1608256 5702368 1608312 5702496 +1608256 5702368 1608208 5702088 1601624 5681136 1601592 5681216 +1608256 5702368 1608208 5702088 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1608208 5702088 +1608256 5702368 1608312 5702496 1608208 5702088 1602160 5695928 +1608208 5702088 1601624 5681136 1601592 5681216 1602160 5695928 +1608208 5702088 1614576 5707608 1601624 5681136 1601592 5681216 +1608312 5702496 1611832 5706704 1612848 5706920 1608208 5702088 +1608256 5702368 1608208 5702088 1602160 5695928 1602200 5696008 +1608208 5702088 1601592 5681216 1602160 5695928 1602200 5696008 +1608256 5702368 1608312 5702496 1608208 5702088 1602200 5696008 +1608256 5702368 1608208 5702088 1602200 5696008 1602224 5696056 +1608256 5702368 1608312 5702496 1608208 5702088 1602224 5696056 +1608208 5702088 1602160 5695928 1602200 5696008 1602224 5696056 +1608256 5702368 1608208 5702088 1602224 5696056 1602504 5696992 +1608256 5702368 1608312 5702496 1608208 5702088 1602504 5696992 +1608256 5702368 1608208 5702088 1602504 5696992 1604056 5700696 +1608256 5702368 1608312 5702496 1608208 5702088 1604056 5700696 +1608256 5702368 1608208 5702088 1604056 5700696 1604104 5700768 +1608256 5702368 1608312 5702496 1608208 5702088 1604104 5700768 +1608208 5702088 1602504 5696992 1604056 5700696 1604104 5700768 +1602504 5696992 1602504 5697056 1604056 5700696 1608208 5702088 +1604056 5700696 1604104 5700768 1608208 5702088 1602504 5697056 +1602224 5696056 1602224 5696096 1602504 5696992 1608208 5702088 +1608208 5702088 1602224 5696056 1602504 5696992 1602504 5697056 +1608208 5702088 1602200 5696008 1602224 5696056 1602504 5696992 +1612848 5706920 1612992 5706984 1613096 5707024 1608208 5702088 +1608256 5702368 1608208 5702088 1604104 5700768 1604152 5700872 +1608256 5702368 1608312 5702496 1608208 5702088 1604152 5700872 +1608208 5702088 1604056 5700696 1604104 5700768 1604152 5700872 +1602504 5697056 1603848 5700544 1604056 5700696 1608208 5702088 +1608256 5702368 1608208 5702088 1604152 5700872 1604160 5700992 +1608256 5702368 1608208 5702088 1604160 5700992 1604152 5701064 +1608256 5702368 1608208 5702088 1604152 5701064 1604128 5701096 +1608208 5702088 1604160 5700992 1604152 5701064 1604128 5701096 +1608256 5702368 1608312 5702496 1608208 5702088 1604128 5701096 +1608256 5702368 1608208 5702088 1604128 5701096 1608312 5702496 +1608208 5702088 1604104 5700768 1604152 5700872 1604160 5700992 +1608208 5702088 1604152 5700872 1604160 5700992 1604152 5701064 +1602160 5695928 1608160 5702000 1601592 5681216 1601128 5681664 +1608208 5702088 1608160 5702000 1602160 5695928 1602200 5696008 +1608160 5702000 1601592 5681216 1602160 5695928 1602200 5696008 +1601592 5681216 1608160 5702000 1608208 5702088 1601624 5681136 +1601592 5681216 1602160 5695928 1608160 5702000 1601624 5681136 +1608208 5702088 1614576 5707608 1601624 5681136 1608160 5702000 +1614576 5707608 1614648 5707656 1601624 5681136 1608160 5702000 +1608208 5702088 1613152 5707048 1614576 5707608 1608160 5702000 +1601624 5681136 1601592 5681216 1608160 5702000 1614576 5707608 +1608208 5702088 1614576 5707608 1608160 5702000 1602200 5696008 +1608208 5702088 1608160 5702000 1602200 5696008 1602224 5696056 +1608160 5702000 1602160 5695928 1602200 5696008 1602224 5696056 +1608208 5702088 1614576 5707608 1608160 5702000 1602224 5696056 +1608208 5702088 1608160 5702000 1602224 5696056 1602504 5696992 +1608208 5702088 1614576 5707608 1608160 5702000 1602504 5696992 +1608160 5702000 1602200 5696008 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1608160 5702000 +1608208 5702088 1608160 5702000 1602504 5696992 1602504 5697056 +1608208 5702088 1614576 5707608 1608160 5702000 1602504 5697056 +1608208 5702088 1608160 5702000 1602504 5697056 1604056 5700696 +1608208 5702088 1614576 5707608 1608160 5702000 1604056 5700696 +1608208 5702088 1608160 5702000 1604056 5700696 1604104 5700768 +1608208 5702088 1614576 5707608 1608160 5702000 1604104 5700768 +1608208 5702088 1608160 5702000 1604104 5700768 1604152 5700872 +1608208 5702088 1614576 5707608 1608160 5702000 1604152 5700872 +1608160 5702000 1604056 5700696 1604104 5700768 1604152 5700872 +1608160 5702000 1602504 5697056 1604056 5700696 1604104 5700768 +1608160 5702000 1602504 5696992 1602504 5697056 1604056 5700696 +1608160 5702000 1602224 5696056 1602504 5696992 1602504 5697056 +1608208 5702088 1608160 5702000 1604152 5700872 1604160 5700992 +1608208 5702088 1614576 5707608 1608160 5702000 1604160 5700992 +1608160 5702000 1604104 5700768 1604152 5700872 1604160 5700992 +1602504 5697056 1603848 5700544 1604056 5700696 1608160 5702000 +1608208 5702088 1608160 5702000 1604160 5700992 1604152 5701064 +1608208 5702088 1608160 5702000 1604152 5701064 1604128 5701096 +1608208 5702088 1608160 5702000 1604128 5701096 1608256 5702368 +1608160 5702000 1604152 5701064 1604128 5701096 1608256 5702368 +1608208 5702088 1614576 5707608 1608160 5702000 1608256 5702368 +1604128 5701096 1608312 5702496 1608256 5702368 1608160 5702000 +1608160 5702000 1604152 5700872 1604160 5700992 1604152 5701064 +1608160 5702000 1604160 5700992 1604152 5701064 1604128 5701096 +1601624 5681136 1608176 5701920 1614576 5707608 1614648 5707656 +1608160 5702000 1608176 5701920 1601624 5681136 1601592 5681216 +1608160 5702000 1614576 5707608 1608176 5701920 1601592 5681216 +1608160 5702000 1608176 5701920 1601592 5681216 1602160 5695928 +1608160 5702000 1614576 5707608 1608176 5701920 1602160 5695928 +1608176 5701920 1614576 5707608 1601624 5681136 1601592 5681216 +1608160 5702000 1608176 5701920 1602160 5695928 1602200 5696008 +1608160 5702000 1614576 5707608 1608176 5701920 1602200 5696008 +1608176 5701920 1601592 5681216 1602160 5695928 1602200 5696008 +1601592 5681216 1601128 5681664 1602160 5695928 1608176 5701920 +1608160 5702000 1608176 5701920 1602200 5696008 1602224 5696056 +1608160 5702000 1614576 5707608 1608176 5701920 1602224 5696056 +1608176 5701920 1602160 5695928 1602200 5696008 1602224 5696056 +1608176 5701920 1601624 5681136 1601592 5681216 1602160 5695928 +1614576 5707608 1608176 5701920 1608160 5702000 1608208 5702088 +1608176 5701920 1602224 5696056 1608160 5702000 1608208 5702088 +1614576 5707608 1601624 5681136 1608176 5701920 1608208 5702088 +1614576 5707608 1608176 5701920 1608208 5702088 1613152 5707048 +1614576 5707608 1601624 5681136 1608176 5701920 1613152 5707048 +1608208 5702088 1613096 5707024 1613152 5707048 1608176 5701920 +1614576 5707608 1608176 5701920 1613152 5707048 1613240 5707104 +1608208 5702088 1612848 5706920 1613096 5707024 1608176 5701920 +1613096 5707024 1613152 5707048 1608176 5701920 1612848 5706920 +1608208 5702088 1608312 5702496 1612848 5706920 1608176 5701920 +1608208 5702088 1608256 5702368 1608312 5702496 1608176 5701920 +1612848 5706920 1613096 5707024 1608176 5701920 1608312 5702496 +1613152 5707048 1614576 5707608 1608176 5701920 1613096 5707024 +1608176 5701920 1608160 5702000 1608208 5702088 1608312 5702496 +1608312 5702496 1611832 5706704 1612848 5706920 1608176 5701920 +1608160 5702000 1608176 5701920 1602224 5696056 1602504 5696992 +1608160 5702000 1608208 5702088 1608176 5701920 1602504 5696992 +1608176 5701920 1602200 5696008 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1608176 5701920 +1608160 5702000 1608176 5701920 1602504 5696992 1602504 5697056 +1608160 5702000 1608208 5702088 1608176 5701920 1602504 5697056 +1608176 5701920 1602224 5696056 1602504 5696992 1602504 5697056 +1608160 5702000 1608176 5701920 1602504 5697056 1604056 5700696 +1608160 5702000 1608208 5702088 1608176 5701920 1604056 5700696 +1608160 5702000 1608176 5701920 1604056 5700696 1604104 5700768 +1608160 5702000 1608208 5702088 1608176 5701920 1604104 5700768 +1608160 5702000 1608176 5701920 1604104 5700768 1604152 5700872 +1608160 5702000 1608208 5702088 1608176 5701920 1604152 5700872 +1608160 5702000 1608176 5701920 1604152 5700872 1604160 5700992 +1608160 5702000 1608208 5702088 1608176 5701920 1604160 5700992 +1608176 5701920 1604104 5700768 1604152 5700872 1604160 5700992 +1608176 5701920 1604056 5700696 1604104 5700768 1604152 5700872 +1608176 5701920 1602504 5697056 1604056 5700696 1604104 5700768 +1608176 5701920 1602504 5696992 1602504 5697056 1604056 5700696 +1612848 5706920 1612992 5706984 1613096 5707024 1608176 5701920 +1608160 5702000 1608176 5701920 1604160 5700992 1604152 5701064 +1608160 5702000 1608208 5702088 1608176 5701920 1604152 5701064 +1608176 5701920 1604152 5700872 1604160 5700992 1604152 5701064 +1602504 5697056 1603848 5700544 1604056 5700696 1608176 5701920 +1608160 5702000 1608176 5701920 1604152 5701064 1604128 5701096 +1608176 5701920 1608272 5701896 1601624 5681136 1601592 5681216 +1614576 5707608 1608272 5701896 1608176 5701920 1613152 5707048 +1601624 5681136 1608272 5701896 1614576 5707608 1614648 5707656 +1614576 5707608 1608272 5701896 1613152 5707048 1613240 5707104 +1608176 5701920 1613096 5707024 1613152 5707048 1608272 5701896 +1613152 5707048 1614576 5707608 1608272 5701896 1613096 5707024 +1608176 5701920 1612848 5706920 1613096 5707024 1608272 5701896 +1608176 5701920 1608312 5702496 1612848 5706920 1608272 5701896 +1612848 5706920 1613096 5707024 1608272 5701896 1608312 5702496 +1608176 5701920 1608208 5702088 1608312 5702496 1608272 5701896 +1608208 5702088 1608256 5702368 1608312 5702496 1608272 5701896 +1608208 5702088 1608256 5702368 1608272 5701896 1608176 5701920 +1608312 5702496 1612848 5706920 1608272 5701896 1608256 5702368 +1613096 5707024 1613152 5707048 1608272 5701896 1612848 5706920 +1614576 5707608 1614648 5707656 1608272 5701896 1613152 5707048 +1608176 5701920 1608272 5701896 1601592 5681216 1602160 5695928 +1608176 5701920 1608272 5701896 1602160 5695928 1602200 5696008 +1608272 5701896 1601624 5681136 1601592 5681216 1602160 5695928 +1608176 5701920 1608272 5701896 1602200 5696008 1602224 5696056 +1608272 5701896 1602160 5695928 1602200 5696008 1602224 5696056 +1601592 5681216 1601128 5681664 1602160 5695928 1608272 5701896 +1608176 5701920 1608272 5701896 1602224 5696056 1602504 5696992 +1608272 5701896 1602200 5696008 1602224 5696056 1602504 5696992 +1608272 5701896 1601592 5681216 1602160 5695928 1602200 5696008 +1608176 5701920 1608208 5702088 1608272 5701896 1602504 5696992 +1608272 5701896 1614648 5707656 1601624 5681136 1601592 5681216 +1608176 5701920 1608160 5702000 1608208 5702088 1608272 5701896 +1608208 5702088 1608256 5702368 1608272 5701896 1608160 5702000 +1608176 5701920 1608160 5702000 1608272 5701896 1602504 5696992 +1608312 5702496 1611832 5706704 1612848 5706920 1608272 5701896 +1611832 5706704 1612792 5706920 1612848 5706920 1608272 5701896 +1612848 5706920 1613096 5707024 1608272 5701896 1611832 5706704 +1608312 5702496 1611832 5706704 1608272 5701896 1608256 5702368 +1608176 5701920 1608272 5701896 1602504 5696992 1602504 5697056 +1608272 5701896 1602224 5696056 1602504 5696992 1602504 5697056 +1608176 5701920 1608160 5702000 1608272 5701896 1602504 5697056 +1602224 5696056 1602224 5696096 1602504 5696992 1608272 5701896 +1601624 5681136 1608272 5701896 1614648 5707656 1614680 5707680 +1608176 5701920 1608272 5701896 1602504 5697056 1604056 5700696 +1608176 5701920 1608160 5702000 1608272 5701896 1604056 5700696 +1608272 5701896 1602504 5696992 1602504 5697056 1604056 5700696 +1608176 5701920 1608272 5701896 1604056 5700696 1604104 5700768 +1612848 5706920 1612992 5706984 1613096 5707024 1608272 5701896 +1602504 5697056 1603848 5700544 1604056 5700696 1608272 5701896 +1608312 5702496 1611784 5706704 1611832 5706704 1608272 5701896 +1614648 5707656 1608464 5701920 1608272 5701896 1614576 5707608 +1608272 5701896 1613152 5707048 1614576 5707608 1608464 5701920 +1608272 5701896 1613096 5707024 1613152 5707048 1608464 5701920 +1614576 5707608 1614648 5707656 1608464 5701920 1613152 5707048 +1613152 5707048 1613240 5707104 1614576 5707608 1608464 5701920 +1608272 5701896 1612848 5706920 1613096 5707024 1608464 5701920 +1613096 5707024 1613152 5707048 1608464 5701920 1612848 5706920 +1608272 5701896 1611832 5706704 1612848 5706920 1608464 5701920 +1611832 5706704 1612792 5706920 1612848 5706920 1608464 5701920 +1612848 5706920 1613096 5707024 1608464 5701920 1611832 5706704 +1613152 5707048 1614576 5707608 1608464 5701920 1613096 5707024 +1614648 5707656 1601624 5681136 1608464 5701920 1614576 5707608 +1608272 5701896 1608464 5701920 1601624 5681136 1601592 5681216 +1608272 5701896 1608464 5701920 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1608464 5701920 +1608272 5701896 1608464 5701920 1602160 5695928 1602200 5696008 +1608272 5701896 1608464 5701920 1602200 5696008 1602224 5696056 +1608464 5701920 1601592 5681216 1602160 5695928 1602200 5696008 +1608272 5701896 1608464 5701920 1602224 5696056 1602504 5696992 +1608464 5701920 1602200 5696008 1602224 5696056 1602504 5696992 +1608272 5701896 1608464 5701920 1602504 5696992 1602504 5697056 +1608464 5701920 1602160 5695928 1602200 5696008 1602224 5696056 +1608464 5701920 1601624 5681136 1601592 5681216 1602160 5695928 +1608272 5701896 1608312 5702496 1611832 5706704 1608464 5701920 +1611832 5706704 1612848 5706920 1608464 5701920 1608312 5702496 +1608272 5701896 1608256 5702368 1608312 5702496 1608464 5701920 +1608272 5701896 1608208 5702088 1608256 5702368 1608464 5701920 +1608272 5701896 1608160 5702000 1608208 5702088 1608464 5701920 +1608256 5702368 1608312 5702496 1608464 5701920 1608208 5702088 +1608312 5702496 1611832 5706704 1608464 5701920 1608256 5702368 +1602224 5696056 1602224 5696096 1602504 5696992 1608464 5701920 +1601624 5681136 1608464 5701920 1614648 5707656 1614680 5707680 +1612848 5706920 1612992 5706984 1613096 5707024 1608464 5701920 +1608464 5701920 1602504 5696992 1608272 5701896 1608208 5702088 +1608464 5701920 1614648 5707656 1601624 5681136 1601592 5681216 +1608312 5702496 1611784 5706704 1611832 5706704 1608464 5701920 +1614648 5707656 1608624 5701952 1608464 5701920 1614576 5707608 +1608464 5701920 1613152 5707048 1614576 5707608 1608624 5701952 +1613152 5707048 1613240 5707104 1614576 5707608 1608624 5701952 +1608464 5701920 1613096 5707024 1613152 5707048 1608624 5701952 +1608464 5701920 1612848 5706920 1613096 5707024 1608624 5701952 +1613152 5707048 1614576 5707608 1608624 5701952 1613096 5707024 +1608464 5701920 1611832 5706704 1612848 5706920 1608624 5701952 +1611832 5706704 1612792 5706920 1612848 5706920 1608624 5701952 +1612848 5706920 1613096 5707024 1608624 5701952 1611832 5706704 +1608464 5701920 1608312 5702496 1611832 5706704 1608624 5701952 +1611832 5706704 1612848 5706920 1608624 5701952 1608312 5702496 +1613096 5707024 1613152 5707048 1608624 5701952 1612848 5706920 +1614576 5707608 1614648 5707656 1608624 5701952 1613152 5707048 +1608624 5701952 1601624 5681136 1608464 5701920 1608312 5702496 +1614648 5707656 1601624 5681136 1608624 5701952 1614576 5707608 +1608464 5701920 1608256 5702368 1608312 5702496 1608624 5701952 +1608312 5702496 1611832 5706704 1608624 5701952 1608256 5702368 +1608464 5701920 1608208 5702088 1608256 5702368 1608624 5701952 +1608464 5701920 1608256 5702368 1608624 5701952 1601624 5681136 +1601624 5681136 1608624 5701952 1614648 5707656 1614680 5707680 +1612848 5706920 1612992 5706984 1613096 5707024 1608624 5701952 +1608464 5701920 1608624 5701952 1601624 5681136 1601592 5681216 +1608464 5701920 1608256 5702368 1608624 5701952 1601592 5681216 +1608624 5701952 1614648 5707656 1601624 5681136 1601592 5681216 +1608464 5701920 1608624 5701952 1601592 5681216 1602160 5695928 +1608464 5701920 1608624 5701952 1602160 5695928 1602200 5696008 +1601592 5681216 1601128 5681664 1602160 5695928 1608624 5701952 +1608464 5701920 1608256 5702368 1608624 5701952 1602200 5696008 +1608464 5701920 1608624 5701952 1602200 5696008 1602224 5696056 +1608464 5701920 1608624 5701952 1602224 5696056 1602504 5696992 +1608624 5701952 1602160 5695928 1602200 5696008 1602224 5696056 +1608464 5701920 1608256 5702368 1608624 5701952 1602224 5696056 +1608624 5701952 1601592 5681216 1602160 5695928 1602200 5696008 +1608624 5701952 1601624 5681136 1601592 5681216 1602160 5695928 +1608312 5702496 1611784 5706704 1611832 5706704 1608624 5701952 +1608312 5702496 1611784 5706704 1608624 5701952 1608256 5702368 +1611832 5706704 1612848 5706920 1608624 5701952 1611784 5706704 +1608312 5702496 1609424 5706616 1611784 5706704 1608624 5701952 +1608624 5701952 1608728 5702016 1601624 5681136 1601592 5681216 +1614648 5707656 1608728 5702016 1608624 5701952 1614576 5707608 +1614648 5707656 1601624 5681136 1608728 5702016 1614576 5707608 +1608624 5701952 1613152 5707048 1614576 5707608 1608728 5702016 +1608624 5701952 1613096 5707024 1613152 5707048 1608728 5702016 +1613152 5707048 1613240 5707104 1614576 5707608 1608728 5702016 +1608624 5701952 1612848 5706920 1613096 5707024 1608728 5702016 +1608624 5701952 1611832 5706704 1612848 5706920 1608728 5702016 +1611832 5706704 1612792 5706920 1612848 5706920 1608728 5702016 +1613096 5707024 1613152 5707048 1608728 5702016 1612848 5706920 +1608624 5701952 1611784 5706704 1611832 5706704 1608728 5702016 +1611832 5706704 1612848 5706920 1608728 5702016 1611784 5706704 +1612848 5706920 1613096 5707024 1608728 5702016 1611832 5706704 +1613152 5707048 1614576 5707608 1608728 5702016 1613096 5707024 +1608728 5702016 1601624 5681136 1608624 5701952 1611784 5706704 +1614576 5707608 1614648 5707656 1608728 5702016 1613152 5707048 +1601624 5681136 1608728 5702016 1614648 5707656 1614680 5707680 +1612848 5706920 1612992 5706984 1613096 5707024 1608728 5702016 +1608624 5701952 1608312 5702496 1611784 5706704 1608728 5702016 +1608624 5701952 1608256 5702368 1608312 5702496 1608728 5702016 +1611784 5706704 1611832 5706704 1608728 5702016 1608312 5702496 +1608624 5701952 1608256 5702368 1608728 5702016 1601624 5681136 +1608312 5702496 1609424 5706616 1611784 5706704 1608728 5702016 +1611784 5706704 1611832 5706704 1608728 5702016 1609424 5706616 +1608624 5701952 1608464 5701920 1608256 5702368 1608728 5702016 +1609424 5706616 1611712 5706760 1611784 5706704 1608728 5702016 +1608312 5702496 1608784 5706656 1609424 5706616 1608728 5702016 +1608312 5702496 1609424 5706616 1608728 5702016 1608256 5702368 +1608728 5702016 1608856 5702128 1601624 5681136 1608624 5701952 +1614648 5707656 1608856 5702128 1608728 5702016 1614576 5707608 +1608856 5702128 1601624 5681136 1608728 5702016 1614576 5707608 +1614648 5707656 1601624 5681136 1608856 5702128 1614576 5707608 +1608728 5702016 1613152 5707048 1614576 5707608 1608856 5702128 +1608728 5702016 1613152 5707048 1608856 5702128 1601624 5681136 +1614576 5707608 1614648 5707656 1608856 5702128 1613152 5707048 +1613152 5707048 1613240 5707104 1614576 5707608 1608856 5702128 +1608728 5702016 1613096 5707024 1613152 5707048 1608856 5702128 +1608728 5702016 1613096 5707024 1608856 5702128 1601624 5681136 +1608728 5702016 1612848 5706920 1613096 5707024 1608856 5702128 +1608728 5702016 1612848 5706920 1608856 5702128 1601624 5681136 +1608728 5702016 1611832 5706704 1612848 5706920 1608856 5702128 +1611832 5706704 1612792 5706920 1612848 5706920 1608856 5702128 +1608728 5702016 1611832 5706704 1608856 5702128 1601624 5681136 +1608728 5702016 1611784 5706704 1611832 5706704 1608856 5702128 +1608728 5702016 1611784 5706704 1608856 5702128 1601624 5681136 +1612848 5706920 1613096 5707024 1608856 5702128 1611832 5706704 +1608728 5702016 1609424 5706616 1611784 5706704 1608856 5702128 +1608728 5702016 1609424 5706616 1608856 5702128 1601624 5681136 +1611784 5706704 1611832 5706704 1608856 5702128 1609424 5706616 +1611832 5706704 1612848 5706920 1608856 5702128 1611784 5706704 +1613096 5707024 1613152 5707048 1608856 5702128 1612848 5706920 +1613152 5707048 1614576 5707608 1608856 5702128 1613096 5707024 +1608728 5702016 1608312 5702496 1609424 5706616 1608856 5702128 +1608728 5702016 1608312 5702496 1608856 5702128 1601624 5681136 +1609424 5706616 1611784 5706704 1608856 5702128 1608312 5702496 +1609424 5706616 1611712 5706760 1611784 5706704 1608856 5702128 +1608312 5702496 1608784 5706656 1609424 5706616 1608856 5702128 +1601624 5681136 1608856 5702128 1614648 5707656 1614680 5707680 +1612848 5706920 1612992 5706984 1613096 5707024 1608856 5702128 +1608728 5702016 1608256 5702368 1608312 5702496 1608856 5702128 +1608856 5702128 1608976 5702256 1614576 5707608 1614648 5707656 +1608856 5702128 1608976 5702256 1614648 5707656 1601624 5681136 +1608856 5702128 1608976 5702256 1601624 5681136 1608728 5702016 +1608976 5702256 1614576 5707608 1614648 5707656 1601624 5681136 +1614576 5707608 1608976 5702256 1613152 5707048 1613240 5707104 +1613152 5707048 1608976 5702256 1608856 5702128 1613096 5707024 +1613152 5707048 1614576 5707608 1608976 5702256 1613096 5707024 +1608856 5702128 1612848 5706920 1613096 5707024 1608976 5702256 +1608856 5702128 1611832 5706704 1612848 5706920 1608976 5702256 +1611832 5706704 1612792 5706920 1612848 5706920 1608976 5702256 +1608856 5702128 1611784 5706704 1611832 5706704 1608976 5702256 +1608856 5702128 1609424 5706616 1611784 5706704 1608976 5702256 +1611832 5706704 1612848 5706920 1608976 5702256 1611784 5706704 +1608856 5702128 1608312 5702496 1609424 5706616 1608976 5702256 +1609424 5706616 1611784 5706704 1608976 5702256 1608312 5702496 +1611784 5706704 1611832 5706704 1608976 5702256 1609424 5706616 +1612848 5706920 1613096 5707024 1608976 5702256 1611832 5706704 +1613096 5707024 1613152 5707048 1608976 5702256 1612848 5706920 +1608856 5702128 1608728 5702016 1608312 5702496 1608976 5702256 +1609424 5706616 1611712 5706760 1611784 5706704 1608976 5702256 +1608312 5702496 1608784 5706656 1609424 5706616 1608976 5702256 +1614648 5707656 1614680 5707680 1601624 5681136 1608976 5702256 +1612848 5706920 1612992 5706984 1613096 5707024 1608976 5702256 +1608856 5702128 1608312 5702496 1608976 5702256 1601624 5681136 +1608976 5702256 1613152 5707048 1614576 5707608 1614648 5707656 +1609424 5706616 1609064 5702472 1608976 5702256 1608312 5702496 +1609424 5706616 1611784 5706704 1609064 5702472 1608312 5702496 +1608976 5702256 1608856 5702128 1608312 5702496 1609064 5702472 +1608976 5702256 1609064 5702472 1611784 5706704 1611832 5706704 +1609064 5702472 1609424 5706616 1611784 5706704 1611832 5706704 +1608976 5702256 1609064 5702472 1611832 5706704 1612848 5706920 +1611832 5706704 1612792 5706920 1612848 5706920 1609064 5702472 +1609064 5702472 1611784 5706704 1611832 5706704 1612848 5706920 +1608976 5702256 1609064 5702472 1612848 5706920 1613096 5707024 +1609064 5702472 1611832 5706704 1612848 5706920 1613096 5707024 +1608976 5702256 1609064 5702472 1613096 5707024 1613152 5707048 +1608976 5702256 1609064 5702472 1613152 5707048 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1609064 5702472 +1609064 5702472 1612848 5706920 1613096 5707024 1613152 5707048 +1609064 5702472 1613096 5707024 1613152 5707048 1614576 5707608 +1611784 5706704 1609064 5702472 1609424 5706616 1611712 5706760 +1609424 5706616 1609064 5702472 1608312 5702496 1608784 5706656 +1609064 5702472 1608976 5702256 1608312 5702496 1608784 5706656 +1609424 5706616 1611784 5706704 1609064 5702472 1608784 5706656 +1612848 5706920 1612992 5706984 1613096 5707024 1609064 5702472 +1608312 5702496 1608680 5706648 1608784 5706656 1609064 5702472 +1608312 5702496 1608680 5706648 1609064 5702472 1608976 5702256 +1608312 5702496 1608632 5706656 1608680 5706648 1609064 5702472 +1608784 5706656 1609424 5706616 1609064 5702472 1608680 5706648 +1608976 5702256 1609064 5702472 1614576 5707608 1614648 5707656 +1609064 5702472 1614576 5707608 1608976 5702256 1608312 5702496 +1609424 5706616 1609064 5702472 1608784 5706656 1609352 5706640 +1609064 5702472 1609168 5702648 1611784 5706704 1611832 5706704 +1609064 5702472 1609424 5706616 1609168 5702648 1611832 5706704 +1609424 5706616 1609168 5702648 1609064 5702472 1608784 5706656 +1609168 5702648 1611832 5706704 1609064 5702472 1608784 5706656 +1609168 5702648 1609424 5706616 1611784 5706704 1611832 5706704 +1609424 5706616 1611784 5706704 1609168 5702648 1608784 5706656 +1609064 5702472 1609168 5702648 1611832 5706704 1612848 5706920 +1611832 5706704 1612792 5706920 1612848 5706920 1609168 5702648 +1609168 5702648 1611784 5706704 1611832 5706704 1612848 5706920 +1609064 5702472 1608784 5706656 1609168 5702648 1612848 5706920 +1609064 5702472 1609168 5702648 1612848 5706920 1613096 5707024 +1609064 5702472 1608784 5706656 1609168 5702648 1613096 5707024 +1609168 5702648 1611832 5706704 1612848 5706920 1613096 5707024 +1609064 5702472 1609168 5702648 1613096 5707024 1613152 5707048 +1609064 5702472 1608784 5706656 1609168 5702648 1613152 5707048 +1609168 5702648 1612848 5706920 1613096 5707024 1613152 5707048 +1609064 5702472 1609168 5702648 1613152 5707048 1614576 5707608 +1609064 5702472 1609168 5702648 1614576 5707608 1608976 5702256 +1609064 5702472 1608784 5706656 1609168 5702648 1608976 5702256 +1613152 5707048 1613240 5707104 1614576 5707608 1609168 5702648 +1609168 5702648 1613096 5707024 1613152 5707048 1614576 5707608 +1609168 5702648 1613152 5707048 1614576 5707608 1608976 5702256 +1611784 5706704 1609168 5702648 1609424 5706616 1611712 5706760 +1609064 5702472 1608680 5706648 1608784 5706656 1609168 5702648 +1609064 5702472 1608680 5706648 1609168 5702648 1608976 5702256 +1608784 5706656 1609424 5706616 1609168 5702648 1608680 5706648 +1612848 5706920 1612992 5706984 1613096 5707024 1609168 5702648 +1609064 5702472 1608312 5702496 1608680 5706648 1609168 5702648 +1609064 5702472 1608976 5702256 1608312 5702496 1609168 5702648 +1609064 5702472 1608312 5702496 1609168 5702648 1608976 5702256 +1608312 5702496 1608632 5706656 1608680 5706648 1609168 5702648 +1608680 5706648 1608784 5706656 1609168 5702648 1608312 5702496 +1614576 5707608 1614648 5707656 1608976 5702256 1609168 5702648 +1609424 5706616 1609168 5702648 1608784 5706656 1609352 5706640 +1609168 5702648 1609232 5702704 1608976 5702256 1609064 5702472 +1609168 5702648 1614576 5707608 1609232 5702704 1609064 5702472 +1609232 5702704 1614576 5707608 1608976 5702256 1609064 5702472 +1614576 5707608 1609232 5702704 1609168 5702648 1613152 5707048 +1609232 5702704 1609064 5702472 1609168 5702648 1613152 5707048 +1614576 5707608 1608976 5702256 1609232 5702704 1613152 5707048 +1614576 5707608 1609232 5702704 1613152 5707048 1613240 5707104 +1609168 5702648 1613096 5707024 1613152 5707048 1609232 5702704 +1609168 5702648 1613096 5707024 1609232 5702704 1609064 5702472 +1609168 5702648 1612848 5706920 1613096 5707024 1609232 5702704 +1609168 5702648 1612848 5706920 1609232 5702704 1609064 5702472 +1609168 5702648 1611832 5706704 1612848 5706920 1609232 5702704 +1611832 5706704 1612792 5706920 1612848 5706920 1609232 5702704 +1609168 5702648 1611784 5706704 1611832 5706704 1609232 5702704 +1609168 5702648 1611784 5706704 1609232 5702704 1609064 5702472 +1612848 5706920 1613096 5707024 1609232 5702704 1611832 5706704 +1609168 5702648 1609424 5706616 1611784 5706704 1609232 5702704 +1611784 5706704 1611832 5706704 1609232 5702704 1609424 5706616 +1609168 5702648 1609424 5706616 1609232 5702704 1609064 5702472 +1609168 5702648 1608784 5706656 1609424 5706616 1609232 5702704 +1609168 5702648 1608784 5706656 1609232 5702704 1609064 5702472 +1609424 5706616 1611784 5706704 1609232 5702704 1608784 5706656 +1609168 5702648 1608680 5706648 1608784 5706656 1609232 5702704 +1609168 5702648 1608680 5706648 1609232 5702704 1609064 5702472 +1608784 5706656 1609424 5706616 1609232 5702704 1608680 5706648 +1611832 5706704 1612848 5706920 1609232 5702704 1611784 5706704 +1613096 5707024 1613152 5707048 1609232 5702704 1612848 5706920 +1613152 5707048 1614576 5707608 1609232 5702704 1613096 5707024 +1609424 5706616 1611712 5706760 1611784 5706704 1609232 5702704 +1609168 5702648 1608312 5702496 1608680 5706648 1609232 5702704 +1608312 5702496 1608632 5706656 1608680 5706648 1609232 5702704 +1609168 5702648 1608312 5702496 1609232 5702704 1609064 5702472 +1608680 5706648 1608784 5706656 1609232 5702704 1608312 5702496 +1612848 5706920 1612992 5706984 1613096 5707024 1609232 5702704 +1609168 5702648 1609064 5702472 1608312 5702496 1609232 5702704 +1608976 5702256 1609232 5702704 1614576 5707608 1614648 5707656 +1608784 5706656 1609352 5706640 1609424 5706616 1609232 5702704 +1609232 5702704 1609408 5702768 1608976 5702256 1609064 5702472 +1609232 5702704 1609408 5702768 1609064 5702472 1609168 5702648 +1609408 5702768 1608976 5702256 1609064 5702472 1609168 5702648 +1609232 5702704 1614576 5707608 1609408 5702768 1609168 5702648 +1614576 5707608 1609408 5702768 1609232 5702704 1613152 5707048 +1609408 5702768 1609168 5702648 1609232 5702704 1613152 5707048 +1609408 5702768 1614576 5707608 1608976 5702256 1609064 5702472 +1614576 5707608 1608976 5702256 1609408 5702768 1613152 5707048 +1614576 5707608 1609408 5702768 1613152 5707048 1613240 5707104 +1609232 5702704 1613096 5707024 1613152 5707048 1609408 5702768 +1609232 5702704 1613096 5707024 1609408 5702768 1609168 5702648 +1613152 5707048 1614576 5707608 1609408 5702768 1613096 5707024 +1609232 5702704 1612848 5706920 1613096 5707024 1609408 5702768 +1609232 5702704 1612848 5706920 1609408 5702768 1609168 5702648 +1609232 5702704 1611832 5706704 1612848 5706920 1609408 5702768 +1611832 5706704 1612792 5706920 1612848 5706920 1609408 5702768 +1609232 5702704 1611832 5706704 1609408 5702768 1609168 5702648 +1609232 5702704 1611784 5706704 1611832 5706704 1609408 5702768 +1609232 5702704 1609424 5706616 1611784 5706704 1609408 5702768 +1609232 5702704 1609424 5706616 1609408 5702768 1609168 5702648 +1611832 5706704 1612848 5706920 1609408 5702768 1611784 5706704 +1609232 5702704 1608784 5706656 1609424 5706616 1609408 5702768 +1609424 5706616 1611784 5706704 1609408 5702768 1608784 5706656 +1609232 5702704 1608784 5706656 1609408 5702768 1609168 5702648 +1609232 5702704 1608680 5706648 1608784 5706656 1609408 5702768 +1609232 5702704 1608680 5706648 1609408 5702768 1609168 5702648 +1608784 5706656 1609424 5706616 1609408 5702768 1608680 5706648 +1609232 5702704 1608312 5702496 1608680 5706648 1609408 5702768 +1611784 5706704 1611832 5706704 1609408 5702768 1609424 5706616 +1612848 5706920 1613096 5707024 1609408 5702768 1611832 5706704 +1613096 5707024 1613152 5707048 1609408 5702768 1612848 5706920 +1609424 5706616 1611712 5706760 1611784 5706704 1609408 5702768 +1612848 5706920 1612992 5706984 1613096 5707024 1609408 5702768 +1608976 5702256 1609408 5702768 1614576 5707608 1614648 5707656 +1608976 5702256 1609408 5702768 1614648 5707656 1601624 5681136 +1608976 5702256 1609408 5702768 1601624 5681136 1608856 5702128 +1608976 5702256 1609064 5702472 1609408 5702768 1601624 5681136 +1609408 5702768 1613152 5707048 1614576 5707608 1614648 5707656 +1614648 5707656 1614680 5707680 1601624 5681136 1609408 5702768 +1609408 5702768 1614576 5707608 1614648 5707656 1601624 5681136 +1608784 5706656 1609352 5706640 1609424 5706616 1609408 5702768 +1613152 5707048 1609488 5702848 1609408 5702768 1613096 5707024 +1609488 5702848 1614576 5707608 1609408 5702768 1613096 5707024 +1609408 5702768 1609488 5702848 1614576 5707608 1614648 5707656 +1609408 5702768 1613096 5707024 1609488 5702848 1614648 5707656 +1609488 5702848 1613152 5707048 1614576 5707608 1614648 5707656 +1613152 5707048 1614576 5707608 1609488 5702848 1613096 5707024 +1614576 5707608 1609488 5702848 1613152 5707048 1613240 5707104 +1609408 5702768 1612848 5706920 1613096 5707024 1609488 5702848 +1613096 5707024 1613152 5707048 1609488 5702848 1612848 5706920 +1609408 5702768 1612848 5706920 1609488 5702848 1614648 5707656 +1609408 5702768 1611832 5706704 1612848 5706920 1609488 5702848 +1611832 5706704 1612792 5706920 1612848 5706920 1609488 5702848 +1609408 5702768 1611832 5706704 1609488 5702848 1614648 5707656 +1609408 5702768 1611784 5706704 1611832 5706704 1609488 5702848 +1609408 5702768 1611784 5706704 1609488 5702848 1614648 5707656 +1609408 5702768 1609424 5706616 1611784 5706704 1609488 5702848 +1609408 5702768 1608784 5706656 1609424 5706616 1609488 5702848 +1609408 5702768 1608784 5706656 1609488 5702848 1614648 5707656 +1611784 5706704 1611832 5706704 1609488 5702848 1609424 5706616 +1609408 5702768 1608680 5706648 1608784 5706656 1609488 5702848 +1608784 5706656 1609424 5706616 1609488 5702848 1608680 5706648 +1609408 5702768 1608680 5706648 1609488 5702848 1614648 5707656 +1609408 5702768 1609232 5702704 1608680 5706648 1609488 5702848 +1609408 5702768 1609232 5702704 1609488 5702848 1614648 5707656 +1608680 5706648 1608784 5706656 1609488 5702848 1609232 5702704 +1609232 5702704 1608312 5702496 1608680 5706648 1609488 5702848 +1609424 5706616 1611784 5706704 1609488 5702848 1608784 5706656 +1611832 5706704 1612848 5706920 1609488 5702848 1611784 5706704 +1612848 5706920 1613096 5707024 1609488 5702848 1611832 5706704 +1609424 5706616 1611712 5706760 1611784 5706704 1609488 5702848 +1612848 5706920 1612992 5706984 1613096 5707024 1609488 5702848 +1609408 5702768 1609488 5702848 1614648 5707656 1601624 5681136 +1609408 5702768 1609488 5702848 1601624 5681136 1608976 5702256 +1601624 5681136 1608856 5702128 1608976 5702256 1609488 5702848 +1609408 5702768 1609488 5702848 1608976 5702256 1609064 5702472 +1609408 5702768 1609232 5702704 1609488 5702848 1608976 5702256 +1609488 5702848 1614576 5707608 1614648 5707656 1601624 5681136 +1614648 5707656 1614680 5707680 1601624 5681136 1609488 5702848 +1609488 5702848 1614648 5707656 1601624 5681136 1608976 5702256 +1608784 5706656 1609352 5706640 1609424 5706616 1609488 5702848 +1609488 5702848 1609512 5702904 1611784 5706704 1611832 5706704 +1609488 5702848 1609424 5706616 1609512 5702904 1611832 5706704 +1609512 5702904 1609424 5706616 1611784 5706704 1611832 5706704 +1609424 5706616 1609512 5702904 1609488 5702848 1608784 5706656 +1609488 5702848 1608680 5706648 1608784 5706656 1609512 5702904 +1609424 5706616 1611784 5706704 1609512 5702904 1608784 5706656 +1609512 5702904 1611832 5706704 1609488 5702848 1608680 5706648 +1609488 5702848 1609232 5702704 1608680 5706648 1609512 5702904 +1608680 5706648 1608784 5706656 1609512 5702904 1609232 5702704 +1609488 5702848 1609232 5702704 1609512 5702904 1611832 5706704 +1609232 5702704 1608312 5702496 1608680 5706648 1609512 5702904 +1608680 5706648 1608784 5706656 1609512 5702904 1608312 5702496 +1608312 5702496 1608632 5706656 1608680 5706648 1609512 5702904 +1608312 5702496 1608592 5706712 1608632 5706656 1609512 5702904 +1608680 5706648 1608784 5706656 1609512 5702904 1608632 5706656 +1609232 5702704 1608312 5702496 1609512 5702904 1609488 5702848 +1608312 5702496 1608632 5706656 1609512 5702904 1609232 5702704 +1609488 5702848 1609408 5702768 1609232 5702704 1609512 5702904 +1609488 5702848 1609408 5702768 1609512 5702904 1611832 5706704 +1609232 5702704 1608312 5702496 1609512 5702904 1609408 5702768 +1608784 5706656 1609424 5706616 1609512 5702904 1608680 5706648 +1609488 5702848 1609512 5702904 1611832 5706704 1612848 5706920 +1611832 5706704 1612792 5706920 1612848 5706920 1609512 5702904 +1609488 5702848 1609408 5702768 1609512 5702904 1612848 5706920 +1609512 5702904 1611784 5706704 1611832 5706704 1612848 5706920 +1609488 5702848 1609512 5702904 1612848 5706920 1613096 5707024 +1609488 5702848 1609512 5702904 1613096 5707024 1613152 5707048 +1609488 5702848 1609408 5702768 1609512 5702904 1613152 5707048 +1609488 5702848 1609512 5702904 1613152 5707048 1614576 5707608 +1609512 5702904 1613096 5707024 1613152 5707048 1614576 5707608 +1609488 5702848 1609512 5702904 1614576 5707608 1614648 5707656 +1609488 5702848 1609408 5702768 1609512 5702904 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1609512 5702904 +1609512 5702904 1611832 5706704 1612848 5706920 1613096 5707024 +1609512 5702904 1612848 5706920 1613096 5707024 1613152 5707048 +1611784 5706704 1609512 5702904 1609424 5706616 1611712 5706760 +1609232 5702704 1609168 5702648 1608312 5702496 1609512 5702904 +1612848 5706920 1612992 5706984 1613096 5707024 1609512 5702904 +1609424 5706616 1609512 5702904 1608784 5706656 1609352 5706640 +1608632 5706656 1609480 5702960 1608312 5702496 1608592 5706712 +1609512 5702904 1609480 5702960 1608632 5706656 1608680 5706648 +1609512 5702904 1609480 5702960 1608680 5706648 1608784 5706656 +1609512 5702904 1608312 5702496 1609480 5702960 1608784 5706656 +1609480 5702960 1608312 5702496 1608632 5706656 1608680 5706648 +1609480 5702960 1608632 5706656 1608680 5706648 1608784 5706656 +1608312 5702496 1609480 5702960 1609512 5702904 1609232 5702704 +1609480 5702960 1608784 5706656 1609512 5702904 1609232 5702704 +1608312 5702496 1608632 5706656 1609480 5702960 1609232 5702704 +1609512 5702904 1609408 5702768 1609232 5702704 1609480 5702960 +1609512 5702904 1609408 5702768 1609480 5702960 1608784 5706656 +1609232 5702704 1608312 5702496 1609480 5702960 1609408 5702768 +1609512 5702904 1609488 5702848 1609408 5702768 1609480 5702960 +1609512 5702904 1609488 5702848 1609480 5702960 1608784 5706656 +1609408 5702768 1609232 5702704 1609480 5702960 1609488 5702848 +1609512 5702904 1609480 5702960 1608784 5706656 1609424 5706616 +1609480 5702960 1608680 5706648 1608784 5706656 1609424 5706616 +1609512 5702904 1609488 5702848 1609480 5702960 1609424 5706616 +1609512 5702904 1609480 5702960 1609424 5706616 1611784 5706704 +1609512 5702904 1609488 5702848 1609480 5702960 1611784 5706704 +1609512 5702904 1609480 5702960 1611784 5706704 1611832 5706704 +1609480 5702960 1608784 5706656 1609424 5706616 1611784 5706704 +1609424 5706616 1611712 5706760 1611784 5706704 1609480 5702960 +1608312 5702496 1609480 5702960 1609232 5702704 1609168 5702648 +1608784 5706656 1609352 5706640 1609424 5706616 1609480 5702960 +1608632 5706656 1609416 5703016 1608312 5702496 1608592 5706712 +1609480 5702960 1609416 5703016 1608632 5706656 1608680 5706648 +1609480 5702960 1608312 5702496 1609416 5703016 1608680 5706648 +1608312 5702496 1609416 5703016 1609480 5702960 1609232 5702704 +1609416 5703016 1608680 5706648 1609480 5702960 1609232 5702704 +1609480 5702960 1609416 5703016 1608680 5706648 1608784 5706656 +1609480 5702960 1609416 5703016 1608784 5706656 1609424 5706616 +1609416 5703016 1608632 5706656 1608680 5706648 1608784 5706656 +1609480 5702960 1609232 5702704 1609416 5703016 1609424 5706616 +1609416 5703016 1608680 5706648 1608784 5706656 1609424 5706616 +1609480 5702960 1609408 5702768 1609232 5702704 1609416 5703016 +1609480 5702960 1609408 5702768 1609416 5703016 1609424 5706616 +1609232 5702704 1608312 5702496 1609416 5703016 1609408 5702768 +1609480 5702960 1609488 5702848 1609408 5702768 1609416 5703016 +1609480 5702960 1609488 5702848 1609416 5703016 1609424 5706616 +1609408 5702768 1609232 5702704 1609416 5703016 1609488 5702848 +1609480 5702960 1609512 5702904 1609488 5702848 1609416 5703016 +1609480 5702960 1609416 5703016 1609424 5706616 1611784 5706704 +1609416 5703016 1608784 5706656 1609424 5706616 1611784 5706704 +1609480 5702960 1609416 5703016 1611784 5706704 1609512 5702904 +1609480 5702960 1609488 5702848 1609416 5703016 1611784 5706704 +1609424 5706616 1611712 5706760 1611784 5706704 1609416 5703016 +1608312 5702496 1609416 5703016 1609232 5702704 1609168 5702648 +1609416 5703016 1609408 5702768 1609232 5702704 1609168 5702648 +1608312 5702496 1609416 5703016 1609168 5702648 1609064 5702472 +1608784 5706656 1609352 5706640 1609424 5706616 1609416 5703016 +1609416 5703016 1608312 5702496 1608632 5706656 1608680 5706648 +1608312 5702496 1608632 5706656 1609416 5703016 1609168 5702648 +1608632 5706656 1609320 5703064 1608312 5702496 1608592 5706712 +1609416 5703016 1609320 5703064 1608632 5706656 1608680 5706648 +1609416 5703016 1609320 5703064 1608680 5706648 1608784 5706656 +1609416 5703016 1609320 5703064 1608784 5706656 1609424 5706616 +1609416 5703016 1609320 5703064 1609424 5706616 1611784 5706704 +1609320 5703064 1608680 5706648 1608784 5706656 1609424 5706616 +1608784 5706656 1609352 5706640 1609424 5706616 1609320 5703064 +1609320 5703064 1608632 5706656 1608680 5706648 1608784 5706656 +1609416 5703016 1608312 5702496 1609320 5703064 1609424 5706616 +1608312 5702496 1609320 5703064 1609416 5703016 1609168 5702648 +1608312 5702496 1608632 5706656 1609320 5703064 1609168 5702648 +1609416 5703016 1609232 5702704 1609168 5702648 1609320 5703064 +1609416 5703016 1609408 5702768 1609232 5702704 1609320 5703064 +1609416 5703016 1609488 5702848 1609408 5702768 1609320 5703064 +1609232 5702704 1609168 5702648 1609320 5703064 1609408 5702768 +1608312 5702496 1609320 5703064 1609168 5702648 1609064 5702472 +1609320 5703064 1609424 5706616 1609416 5703016 1609408 5702768 +1609168 5702648 1608312 5702496 1609320 5703064 1609232 5702704 +1609320 5703064 1608312 5702496 1608632 5706656 1608680 5706648 +1608632 5706656 1609176 5703048 1608312 5702496 1608592 5706712 +1608312 5702496 1609176 5703048 1609320 5703064 1609168 5702648 +1608312 5702496 1608632 5706656 1609176 5703048 1609168 5702648 +1608312 5702496 1609176 5703048 1609168 5702648 1609064 5702472 +1609320 5703064 1609232 5702704 1609168 5702648 1609176 5703048 +1609168 5702648 1608312 5702496 1609176 5703048 1609232 5702704 +1609320 5703064 1609408 5702768 1609232 5702704 1609176 5703048 +1609320 5703064 1609416 5703016 1609408 5702768 1609176 5703048 +1609232 5702704 1609168 5702648 1609176 5703048 1609408 5702768 +1609320 5703064 1609176 5703048 1608632 5706656 1608680 5706648 +1609176 5703048 1608312 5702496 1608632 5706656 1608680 5706648 +1609320 5703064 1609176 5703048 1608680 5706648 1608784 5706656 +1609320 5703064 1609176 5703048 1608784 5706656 1609424 5706616 +1609320 5703064 1609176 5703048 1609424 5706616 1609416 5703016 +1608784 5706656 1609352 5706640 1609424 5706616 1609176 5703048 +1609176 5703048 1608680 5706648 1608784 5706656 1609424 5706616 +1609176 5703048 1608632 5706656 1608680 5706648 1608784 5706656 +1609176 5703048 1609424 5706616 1609320 5703064 1609408 5702768 +1608632 5706656 1608928 5702904 1608312 5702496 1608592 5706712 +1608312 5702496 1608928 5702904 1609176 5703048 1609168 5702648 +1608312 5702496 1608632 5706656 1608928 5702904 1609168 5702648 +1609176 5703048 1609232 5702704 1609168 5702648 1608928 5702904 +1609168 5702648 1608312 5702496 1608928 5702904 1609232 5702704 +1609176 5703048 1608928 5702904 1608632 5706656 1608680 5706648 +1608928 5702904 1608632 5706656 1609176 5703048 1609232 5702704 +1608312 5702496 1608928 5702904 1609168 5702648 1609064 5702472 +1608312 5702496 1608928 5702904 1609064 5702472 1608976 5702256 +1608312 5702496 1608632 5706656 1608928 5702904 1609064 5702472 +1608928 5702904 1609232 5702704 1609168 5702648 1609064 5702472 +1609176 5703048 1609408 5702768 1609232 5702704 1608928 5702904 +1608632 5706656 1608688 5702816 1608312 5702496 1608592 5706712 +1608312 5702496 1608688 5702816 1608928 5702904 1609064 5702472 +1608312 5702496 1608688 5702816 1609064 5702472 1608976 5702256 +1608312 5702496 1608632 5706656 1608688 5702816 1608976 5702256 +1608688 5702816 1608928 5702904 1609064 5702472 1608976 5702256 +1608312 5702496 1608688 5702816 1608976 5702256 1608856 5702128 +1608928 5702904 1608688 5702816 1608632 5706656 1609176 5703048 +1608688 5702816 1608312 5702496 1608632 5706656 1609176 5703048 +1608688 5702816 1609176 5703048 1608928 5702904 1609064 5702472 +1608632 5706656 1608680 5706648 1609176 5703048 1608688 5702816 +1608928 5702904 1609168 5702648 1609064 5702472 1608688 5702816 +1608632 5706656 1608424 5702616 1608312 5702496 1608592 5706712 +1608312 5702496 1608424 5702616 1608688 5702816 1608976 5702256 +1608688 5702816 1609064 5702472 1608976 5702256 1608424 5702616 +1608976 5702256 1608312 5702496 1608424 5702616 1609064 5702472 +1608312 5702496 1608632 5706656 1608424 5702616 1608976 5702256 +1608688 5702816 1608928 5702904 1609064 5702472 1608424 5702616 +1608688 5702816 1608424 5702616 1608632 5706656 1609176 5703048 +1608424 5702616 1608632 5706656 1608688 5702816 1609064 5702472 +1608312 5702496 1608424 5702616 1608976 5702256 1608856 5702128 +1608424 5702616 1609064 5702472 1608976 5702256 1608856 5702128 +1608312 5702496 1608632 5706656 1608424 5702616 1608856 5702128 +1608312 5702496 1608424 5702616 1608856 5702128 1608728 5702016 +1609488 5702848 1608256 5699504 1608976 5702256 1609408 5702768 +1608976 5702256 1608256 5699504 1601624 5681136 1608856 5702128 +1601624 5681136 1608728 5702016 1608856 5702128 1608256 5699504 +1601624 5681136 1608624 5701952 1608728 5702016 1608256 5699504 +1608728 5702016 1608856 5702128 1608256 5699504 1608624 5701952 +1608856 5702128 1608976 5702256 1608256 5699504 1608728 5702016 +1608256 5699504 1609488 5702848 1601624 5681136 1608624 5701952 +1609488 5702848 1601624 5681136 1608256 5699504 1609408 5702768 +1608256 5699504 1608856 5702128 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1608256 5699504 +1601624 5681136 1601592 5681216 1608624 5701952 1608256 5699504 +1608624 5701952 1608728 5702016 1608256 5699504 1601592 5681216 +1601624 5681136 1601592 5681216 1608256 5699504 1609488 5702848 +1601592 5681216 1602160 5695928 1608624 5701952 1608256 5699504 +1608624 5701952 1608728 5702016 1608256 5699504 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1608256 5699504 +1601592 5681216 1602160 5695928 1608256 5699504 1601624 5681136 +1602160 5695928 1602200 5696008 1608624 5701952 1608256 5699504 +1608624 5701952 1608728 5702016 1608256 5699504 1602200 5696008 +1602200 5696008 1602224 5696056 1608624 5701952 1608256 5699504 +1608624 5701952 1608728 5702016 1608256 5699504 1602224 5696056 +1602224 5696056 1608464 5701920 1608624 5701952 1608256 5699504 +1608624 5701952 1608728 5702016 1608256 5699504 1608464 5701920 +1602224 5696056 1602504 5696992 1608464 5701920 1608256 5699504 +1602224 5696056 1602504 5696992 1608256 5699504 1602200 5696008 +1602504 5696992 1608272 5701896 1608464 5701920 1608256 5699504 +1602504 5696992 1608272 5701896 1608256 5699504 1602224 5696056 +1602504 5696992 1602504 5697056 1608272 5701896 1608256 5699504 +1602504 5696992 1602504 5697056 1608256 5699504 1602224 5696056 +1608272 5701896 1608464 5701920 1608256 5699504 1602504 5697056 +1608464 5701920 1608624 5701952 1608256 5699504 1608272 5701896 +1602200 5696008 1602224 5696056 1608256 5699504 1602160 5695928 +1602504 5697056 1604056 5700696 1608272 5701896 1608256 5699504 +1608272 5701896 1608464 5701920 1608256 5699504 1604056 5700696 +1602504 5697056 1604056 5700696 1608256 5699504 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1608256 5699504 +1604056 5700696 1608176 5701920 1608272 5701896 1608256 5699504 +1608272 5701896 1608464 5701920 1608256 5699504 1608176 5701920 +1604056 5700696 1608176 5701920 1608256 5699504 1602504 5697056 +1604056 5700696 1604104 5700768 1608176 5701920 1608256 5699504 +1604056 5700696 1604104 5700768 1608256 5699504 1602504 5697056 +1604104 5700768 1604152 5700872 1608176 5701920 1608256 5699504 +1604152 5700872 1604160 5700992 1608176 5701920 1608256 5699504 +1604104 5700768 1604152 5700872 1608256 5699504 1604056 5700696 +1608176 5701920 1608272 5701896 1608256 5699504 1604152 5700872 +1602160 5695928 1602200 5696008 1608256 5699504 1601592 5681216 +1601624 5681136 1608256 5699504 1609488 5702848 1614648 5707656 +1601624 5681136 1601592 5681216 1608256 5699504 1614648 5707656 +1608256 5699504 1609408 5702768 1609488 5702848 1614648 5707656 +1609488 5702848 1614576 5707608 1614648 5707656 1608256 5699504 +1609488 5702848 1614576 5707608 1608256 5699504 1609408 5702768 +1609488 5702848 1609512 5702904 1614576 5707608 1608256 5699504 +1601624 5681136 1608256 5699504 1614648 5707656 1614680 5707680 +1601624 5681136 1608256 5699504 1614680 5707680 1663880 5646248 +1601624 5681136 1608256 5699504 1663880 5646248 1663776 5646144 +1614680 5707680 1614696 5707712 1663880 5646248 1608256 5699504 +1601624 5681136 1601592 5681216 1608256 5699504 1663880 5646248 +1608256 5699504 1614648 5707656 1614680 5707680 1663880 5646248 +1614648 5707656 1614680 5707680 1608256 5699504 1614576 5707608 +1602504 5697056 1603848 5700544 1604056 5700696 1608256 5699504 +1602504 5697056 1603848 5700544 1608256 5699504 1602504 5696992 +1604056 5700696 1604104 5700768 1608256 5699504 1603848 5700544 +1602504 5697056 1603680 5700448 1603848 5700544 1608256 5699504 +1608256 5699504 1608400 5699424 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1608400 5699424 +1663880 5646248 1608400 5699424 1614680 5707680 1614696 5707712 +1608256 5699504 1608400 5699424 1601624 5681136 1601592 5681216 +1608400 5699424 1663880 5646248 1601624 5681136 1601592 5681216 +1608256 5699504 1614680 5707680 1608400 5699424 1601592 5681216 +1608400 5699424 1614680 5707680 1663880 5646248 1601624 5681136 +1608256 5699504 1608400 5699424 1601592 5681216 1602160 5695928 +1608400 5699424 1601624 5681136 1601592 5681216 1602160 5695928 +1608256 5699504 1614680 5707680 1608400 5699424 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1608400 5699424 +1614680 5707680 1608400 5699424 1608256 5699504 1614648 5707656 +1608400 5699424 1602160 5695928 1608256 5699504 1614648 5707656 +1614680 5707680 1663880 5646248 1608400 5699424 1614648 5707656 +1608256 5699504 1608400 5699424 1602160 5695928 1602200 5696008 +1608256 5699504 1614648 5707656 1608400 5699424 1602200 5696008 +1608400 5699424 1601592 5681216 1602160 5695928 1602200 5696008 +1608256 5699504 1608400 5699424 1602200 5696008 1602224 5696056 +1608256 5699504 1608400 5699424 1602224 5696056 1602504 5696992 +1608256 5699504 1608400 5699424 1602504 5696992 1602504 5697056 +1608256 5699504 1614648 5707656 1608400 5699424 1602504 5696992 +1608400 5699424 1602200 5696008 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1608400 5699424 +1608400 5699424 1602160 5695928 1602200 5696008 1602224 5696056 +1608256 5699504 1614576 5707608 1614648 5707656 1608400 5699424 +1608256 5699504 1614576 5707608 1608400 5699424 1602504 5696992 +1608256 5699504 1609488 5702848 1614576 5707608 1608400 5699424 +1608256 5699504 1609408 5702768 1609488 5702848 1608400 5699424 +1608256 5699504 1608976 5702256 1609408 5702768 1608400 5699424 +1609408 5702768 1609488 5702848 1608400 5699424 1608976 5702256 +1608256 5699504 1608976 5702256 1608400 5699424 1602504 5696992 +1608256 5699504 1608856 5702128 1608976 5702256 1608400 5699424 +1608976 5702256 1609408 5702768 1608400 5699424 1608856 5702128 +1608256 5699504 1608728 5702016 1608856 5702128 1608400 5699424 +1608256 5699504 1608624 5701952 1608728 5702016 1608400 5699424 +1608256 5699504 1608464 5701920 1608624 5701952 1608400 5699424 +1608728 5702016 1608856 5702128 1608400 5699424 1608624 5701952 +1608256 5699504 1608624 5701952 1608400 5699424 1602504 5696992 +1608856 5702128 1608976 5702256 1608400 5699424 1608728 5702016 +1608976 5702256 1609064 5702472 1609408 5702768 1608400 5699424 +1609488 5702848 1614576 5707608 1608400 5699424 1609408 5702768 +1609488 5702848 1609512 5702904 1614576 5707608 1608400 5699424 +1614648 5707656 1614680 5707680 1608400 5699424 1614576 5707608 +1614576 5707608 1614648 5707656 1608400 5699424 1609488 5702848 +1663880 5646248 1608544 5699312 1614680 5707680 1614696 5707712 +1608400 5699424 1608544 5699312 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1608544 5699312 +1608400 5699424 1608544 5699312 1601624 5681136 1601592 5681216 +1608400 5699424 1608544 5699312 1601592 5681216 1602160 5695928 +1608544 5699312 1601624 5681136 1601592 5681216 1602160 5695928 +1608544 5699312 1663880 5646248 1601624 5681136 1601592 5681216 +1601592 5681216 1601128 5681664 1602160 5695928 1608544 5699312 +1608400 5699424 1608544 5699312 1602160 5695928 1602200 5696008 +1608544 5699312 1601592 5681216 1602160 5695928 1602200 5696008 +1608400 5699424 1614680 5707680 1608544 5699312 1602200 5696008 +1614680 5707680 1608544 5699312 1608400 5699424 1614648 5707656 +1608544 5699312 1602200 5696008 1608400 5699424 1614648 5707656 +1608544 5699312 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1608544 5699312 1614648 5707656 +1608400 5699424 1614576 5707608 1614648 5707656 1608544 5699312 +1608400 5699424 1614576 5707608 1608544 5699312 1602200 5696008 +1614648 5707656 1614680 5707680 1608544 5699312 1614576 5707608 +1608400 5699424 1608544 5699312 1602200 5696008 1602224 5696056 +1608544 5699312 1602160 5695928 1602200 5696008 1602224 5696056 +1608400 5699424 1608544 5699312 1602224 5696056 1602504 5696992 +1608400 5699424 1608544 5699312 1602504 5696992 1608256 5699504 +1602504 5696992 1602504 5697056 1608256 5699504 1608544 5699312 +1608544 5699312 1602224 5696056 1602504 5696992 1608256 5699504 +1608400 5699424 1614576 5707608 1608544 5699312 1608256 5699504 +1602224 5696056 1602224 5696096 1602504 5696992 1608544 5699312 +1608544 5699312 1602200 5696008 1602224 5696056 1602504 5696992 +1608400 5699424 1609488 5702848 1614576 5707608 1608544 5699312 +1608400 5699424 1609408 5702768 1609488 5702848 1608544 5699312 +1608400 5699424 1608976 5702256 1609408 5702768 1608544 5699312 +1608400 5699424 1608856 5702128 1608976 5702256 1608544 5699312 +1608976 5702256 1609408 5702768 1608544 5699312 1608856 5702128 +1608400 5699424 1608728 5702016 1608856 5702128 1608544 5699312 +1608856 5702128 1608976 5702256 1608544 5699312 1608728 5702016 +1608400 5699424 1608624 5701952 1608728 5702016 1608544 5699312 +1608400 5699424 1608256 5699504 1608624 5701952 1608544 5699312 +1608728 5702016 1608856 5702128 1608544 5699312 1608624 5701952 +1608976 5702256 1609064 5702472 1609408 5702768 1608544 5699312 +1609408 5702768 1609488 5702848 1608544 5699312 1608976 5702256 +1609488 5702848 1609512 5702904 1614576 5707608 1608544 5699312 +1608400 5699424 1608624 5701952 1608544 5699312 1608256 5699504 +1614576 5707608 1614648 5707656 1608544 5699312 1609488 5702848 +1609488 5702848 1614576 5707608 1608544 5699312 1609408 5702768 +1663880 5646248 1608624 5699288 1614680 5707680 1614696 5707712 +1608544 5699312 1608624 5699288 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1608624 5699288 +1608544 5699312 1608624 5699288 1601624 5681136 1601592 5681216 +1608544 5699312 1608624 5699288 1601592 5681216 1602160 5695928 +1608544 5699312 1608624 5699288 1602160 5695928 1602200 5696008 +1608624 5699288 1601592 5681216 1602160 5695928 1602200 5696008 +1608624 5699288 1601624 5681136 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1608624 5699288 +1608544 5699312 1608624 5699288 1602200 5696008 1602224 5696056 +1608624 5699288 1602160 5695928 1602200 5696008 1602224 5696056 +1608624 5699288 1663880 5646248 1601624 5681136 1601592 5681216 +1608544 5699312 1614680 5707680 1608624 5699288 1602224 5696056 +1614680 5707680 1608624 5699288 1608544 5699312 1614648 5707656 +1608544 5699312 1614576 5707608 1614648 5707656 1608624 5699288 +1608624 5699288 1602224 5696056 1608544 5699312 1614576 5707608 +1614648 5707656 1614680 5707680 1608624 5699288 1614576 5707608 +1608624 5699288 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1608624 5699288 1614648 5707656 +1608544 5699312 1609488 5702848 1614576 5707608 1608624 5699288 +1609488 5702848 1609512 5702904 1614576 5707608 1608624 5699288 +1614576 5707608 1614648 5707656 1608624 5699288 1609488 5702848 +1608544 5699312 1609488 5702848 1608624 5699288 1602224 5696056 +1608544 5699312 1608624 5699288 1602224 5696056 1602504 5696992 +1608544 5699312 1609408 5702768 1609488 5702848 1608624 5699288 +1608544 5699312 1608976 5702256 1609408 5702768 1608624 5699288 +1608544 5699312 1608856 5702128 1608976 5702256 1608624 5699288 +1608544 5699312 1608728 5702016 1608856 5702128 1608624 5699288 +1608856 5702128 1608976 5702256 1608624 5699288 1608728 5702016 +1608544 5699312 1608624 5701952 1608728 5702016 1608624 5699288 +1608728 5702016 1608856 5702128 1608624 5699288 1608624 5701952 +1608544 5699312 1608400 5699424 1608624 5701952 1608624 5699288 +1608400 5699424 1608256 5699504 1608624 5701952 1608624 5699288 +1608624 5701952 1608728 5702016 1608624 5699288 1608400 5699424 +1608976 5702256 1609064 5702472 1609408 5702768 1608624 5699288 +1608976 5702256 1609408 5702768 1608624 5699288 1608856 5702128 +1608544 5699312 1608400 5699424 1608624 5699288 1602224 5696056 +1609488 5702848 1614576 5707608 1608624 5699288 1609408 5702768 +1609408 5702768 1609488 5702848 1608624 5699288 1608976 5702256 +1663880 5646248 1608712 5699312 1614680 5707680 1614696 5707712 +1608624 5699288 1608712 5699312 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1608712 5699312 +1608712 5699312 1614680 5707680 1663880 5646248 1601624 5681136 +1608624 5699288 1608712 5699312 1601624 5681136 1601592 5681216 +1608624 5699288 1608712 5699312 1601592 5681216 1602160 5695928 +1608712 5699312 1663880 5646248 1601624 5681136 1601592 5681216 +1608624 5699288 1614680 5707680 1608712 5699312 1601592 5681216 +1614680 5707680 1608712 5699312 1608624 5699288 1614648 5707656 +1608624 5699288 1614576 5707608 1614648 5707656 1608712 5699312 +1608624 5699288 1609488 5702848 1614576 5707608 1608712 5699312 +1609488 5702848 1609512 5702904 1614576 5707608 1608712 5699312 +1614576 5707608 1614648 5707656 1608712 5699312 1609488 5702848 +1608712 5699312 1601592 5681216 1608624 5699288 1609488 5702848 +1614648 5707656 1614680 5707680 1608712 5699312 1614576 5707608 +1614680 5707680 1663880 5646248 1608712 5699312 1614648 5707656 +1608624 5699288 1609408 5702768 1609488 5702848 1608712 5699312 +1609488 5702848 1614576 5707608 1608712 5699312 1609408 5702768 +1608624 5699288 1609408 5702768 1608712 5699312 1601592 5681216 +1608624 5699288 1608976 5702256 1609408 5702768 1608712 5699312 +1608976 5702256 1609064 5702472 1609408 5702768 1608712 5699312 +1608624 5699288 1608856 5702128 1608976 5702256 1608712 5699312 +1608624 5699288 1608728 5702016 1608856 5702128 1608712 5699312 +1608624 5699288 1608624 5701952 1608728 5702016 1608712 5699312 +1608728 5702016 1608856 5702128 1608712 5699312 1608624 5701952 +1608624 5699288 1608400 5699424 1608624 5701952 1608712 5699312 +1608400 5699424 1608256 5699504 1608624 5701952 1608712 5699312 +1608624 5701952 1608728 5702016 1608712 5699312 1608400 5699424 +1608624 5699288 1608544 5699312 1608400 5699424 1608712 5699312 +1608400 5699424 1608624 5701952 1608712 5699312 1608544 5699312 +1608856 5702128 1608976 5702256 1608712 5699312 1608728 5702016 +1608624 5699288 1608544 5699312 1608712 5699312 1601592 5681216 +1609408 5702768 1609488 5702848 1608712 5699312 1608976 5702256 +1608976 5702256 1609408 5702768 1608712 5699312 1608856 5702128 +1663880 5646248 1608920 5699432 1614680 5707680 1614696 5707712 +1608712 5699312 1608920 5699432 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1608920 5699432 +1608712 5699312 1608920 5699432 1601624 5681136 1601592 5681216 +1608712 5699312 1614680 5707680 1608920 5699432 1601624 5681136 +1614680 5707680 1608920 5699432 1608712 5699312 1614648 5707656 +1608712 5699312 1614576 5707608 1614648 5707656 1608920 5699432 +1608712 5699312 1609488 5702848 1614576 5707608 1608920 5699432 +1609488 5702848 1609512 5702904 1614576 5707608 1608920 5699432 +1609512 5702904 1613152 5707048 1614576 5707608 1608920 5699432 +1608712 5699312 1609408 5702768 1609488 5702848 1608920 5699432 +1609488 5702848 1609512 5702904 1608920 5699432 1609408 5702768 +1614576 5707608 1614648 5707656 1608920 5699432 1609512 5702904 +1608920 5699432 1601624 5681136 1608712 5699312 1609408 5702768 +1614648 5707656 1614680 5707680 1608920 5699432 1614576 5707608 +1608712 5699312 1608976 5702256 1609408 5702768 1608920 5699432 +1608976 5702256 1609064 5702472 1609408 5702768 1608920 5699432 +1609408 5702768 1609488 5702848 1608920 5699432 1608976 5702256 +1608712 5699312 1608976 5702256 1608920 5699432 1601624 5681136 +1608920 5699432 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1608920 5699432 1614648 5707656 +1608712 5699312 1608856 5702128 1608976 5702256 1608920 5699432 +1608712 5699312 1608728 5702016 1608856 5702128 1608920 5699432 +1608712 5699312 1608624 5701952 1608728 5702016 1608920 5699432 +1608712 5699312 1608400 5699424 1608624 5701952 1608920 5699432 +1608400 5699424 1608256 5699504 1608624 5701952 1608920 5699432 +1608256 5699504 1608464 5701920 1608624 5701952 1608920 5699432 +1608256 5699504 1608464 5701920 1608920 5699432 1608400 5699424 +1608400 5699424 1608256 5699504 1608920 5699432 1608712 5699312 +1608624 5701952 1608728 5702016 1608920 5699432 1608464 5701920 +1608712 5699312 1608544 5699312 1608400 5699424 1608920 5699432 +1608728 5702016 1608856 5702128 1608920 5699432 1608624 5701952 +1608256 5699504 1608272 5701896 1608464 5701920 1608920 5699432 +1608712 5699312 1608400 5699424 1608920 5699432 1601624 5681136 +1608976 5702256 1609408 5702768 1608920 5699432 1608856 5702128 +1608856 5702128 1608976 5702256 1608920 5699432 1608728 5702016 +1663880 5646248 1608960 5699472 1614680 5707680 1614696 5707712 +1608920 5699432 1608960 5699472 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1608960 5699472 +1608920 5699432 1608960 5699472 1601624 5681136 1608712 5699312 +1608960 5699472 1614680 5707680 1663880 5646248 1601624 5681136 +1608920 5699432 1614680 5707680 1608960 5699472 1601624 5681136 +1614680 5707680 1608960 5699472 1608920 5699432 1614648 5707656 +1608920 5699432 1614576 5707608 1614648 5707656 1608960 5699472 +1608920 5699432 1609512 5702904 1614576 5707608 1608960 5699472 +1608920 5699432 1609488 5702848 1609512 5702904 1608960 5699472 +1609512 5702904 1613152 5707048 1614576 5707608 1608960 5699472 +1608920 5699432 1609408 5702768 1609488 5702848 1608960 5699472 +1609488 5702848 1609512 5702904 1608960 5699472 1609408 5702768 +1608920 5699432 1608976 5702256 1609408 5702768 1608960 5699472 +1608976 5702256 1609064 5702472 1609408 5702768 1608960 5699472 +1609408 5702768 1609488 5702848 1608960 5699472 1608976 5702256 +1609512 5702904 1614576 5707608 1608960 5699472 1609488 5702848 +1614576 5707608 1614648 5707656 1608960 5699472 1609512 5702904 +1608920 5699432 1608856 5702128 1608976 5702256 1608960 5699472 +1608976 5702256 1609408 5702768 1608960 5699472 1608856 5702128 +1614680 5707680 1663880 5646248 1608960 5699472 1614648 5707656 +1608960 5699472 1601624 5681136 1608920 5699432 1608856 5702128 +1614648 5707656 1614680 5707680 1608960 5699472 1614576 5707608 +1608920 5699432 1608728 5702016 1608856 5702128 1608960 5699472 +1608920 5699432 1608624 5701952 1608728 5702016 1608960 5699472 +1608920 5699432 1608464 5701920 1608624 5701952 1608960 5699472 +1608920 5699432 1608256 5699504 1608464 5701920 1608960 5699472 +1608920 5699432 1608400 5699424 1608256 5699504 1608960 5699472 +1608256 5699504 1608464 5701920 1608960 5699472 1608400 5699424 +1608920 5699432 1608712 5699312 1608400 5699424 1608960 5699472 +1608464 5701920 1608624 5701952 1608960 5699472 1608256 5699504 +1608624 5701952 1608728 5702016 1608960 5699472 1608464 5701920 +1608256 5699504 1608272 5701896 1608464 5701920 1608960 5699472 +1608856 5702128 1608976 5702256 1608960 5699472 1608728 5702016 +1608920 5699432 1608400 5699424 1608960 5699472 1601624 5681136 +1608728 5702016 1608856 5702128 1608960 5699472 1608624 5701952 +1614576 5707608 1608992 5699536 1609512 5702904 1613152 5707048 +1609512 5702904 1608992 5699536 1608960 5699472 1609488 5702848 +1608960 5699472 1609408 5702768 1609488 5702848 1608992 5699536 +1609512 5702904 1614576 5707608 1608992 5699536 1609488 5702848 +1608960 5699472 1608976 5702256 1609408 5702768 1608992 5699536 +1608976 5702256 1609064 5702472 1609408 5702768 1608992 5699536 +1609408 5702768 1609488 5702848 1608992 5699536 1608976 5702256 +1608960 5699472 1608856 5702128 1608976 5702256 1608992 5699536 +1608976 5702256 1609408 5702768 1608992 5699536 1608856 5702128 +1609488 5702848 1609512 5702904 1608992 5699536 1609408 5702768 +1608960 5699472 1608992 5699536 1614576 5707608 1614648 5707656 +1608992 5699536 1609512 5702904 1614576 5707608 1614648 5707656 +1608960 5699472 1608728 5702016 1608856 5702128 1608992 5699536 +1608856 5702128 1608976 5702256 1608992 5699536 1608728 5702016 +1608992 5699536 1614648 5707656 1608960 5699472 1608728 5702016 +1608960 5699472 1608992 5699536 1614648 5707656 1614680 5707680 +1608992 5699536 1614576 5707608 1614648 5707656 1614680 5707680 +1608960 5699472 1608728 5702016 1608992 5699536 1614680 5707680 +1608960 5699472 1608992 5699536 1614680 5707680 1663880 5646248 +1608960 5699472 1608624 5701952 1608728 5702016 1608992 5699536 +1608960 5699472 1608464 5701920 1608624 5701952 1608992 5699536 +1608960 5699472 1608256 5699504 1608464 5701920 1608992 5699536 +1608960 5699472 1608400 5699424 1608256 5699504 1608992 5699536 +1608960 5699472 1608920 5699432 1608400 5699424 1608992 5699536 +1608400 5699424 1608256 5699504 1608992 5699536 1608920 5699432 +1608920 5699432 1608712 5699312 1608400 5699424 1608992 5699536 +1608256 5699504 1608464 5701920 1608992 5699536 1608400 5699424 +1608464 5701920 1608624 5701952 1608992 5699536 1608256 5699504 +1608256 5699504 1608272 5701896 1608464 5701920 1608992 5699536 +1608728 5702016 1608856 5702128 1608992 5699536 1608624 5701952 +1608960 5699472 1608920 5699432 1608992 5699536 1614680 5707680 +1608624 5701952 1608728 5702016 1608992 5699536 1608464 5701920 +1609408 5702768 1609000 5699616 1608976 5702256 1609064 5702472 +1608992 5699536 1609000 5699616 1609408 5702768 1609488 5702848 +1608992 5699536 1608976 5702256 1609000 5699616 1609488 5702848 +1609000 5699616 1608976 5702256 1609408 5702768 1609488 5702848 +1608976 5702256 1609000 5699616 1608992 5699536 1608856 5702128 +1609000 5699616 1609488 5702848 1608992 5699536 1608856 5702128 +1608976 5702256 1609408 5702768 1609000 5699616 1608856 5702128 +1608992 5699536 1608728 5702016 1608856 5702128 1609000 5699616 +1608992 5699536 1608728 5702016 1609000 5699616 1609488 5702848 +1608856 5702128 1608976 5702256 1609000 5699616 1608728 5702016 +1608992 5699536 1609000 5699616 1609488 5702848 1609512 5702904 +1609000 5699616 1609408 5702768 1609488 5702848 1609512 5702904 +1608992 5699536 1608728 5702016 1609000 5699616 1609512 5702904 +1608992 5699536 1609000 5699616 1609512 5702904 1614576 5707608 +1609512 5702904 1613152 5707048 1614576 5707608 1609000 5699616 +1608992 5699536 1609000 5699616 1614576 5707608 1614648 5707656 +1608992 5699536 1608728 5702016 1609000 5699616 1614576 5707608 +1609000 5699616 1609488 5702848 1609512 5702904 1614576 5707608 +1608992 5699536 1608624 5701952 1608728 5702016 1609000 5699616 +1608992 5699536 1608624 5701952 1609000 5699616 1614576 5707608 +1608728 5702016 1608856 5702128 1609000 5699616 1608624 5701952 +1608992 5699536 1608464 5701920 1608624 5701952 1609000 5699616 +1608992 5699536 1608256 5699504 1608464 5701920 1609000 5699616 +1608992 5699536 1608400 5699424 1608256 5699504 1609000 5699616 +1608992 5699536 1608920 5699432 1608400 5699424 1609000 5699616 +1608992 5699536 1608960 5699472 1608920 5699432 1609000 5699616 +1608920 5699432 1608712 5699312 1608400 5699424 1609000 5699616 +1608400 5699424 1608256 5699504 1609000 5699616 1608920 5699432 +1608256 5699504 1608464 5701920 1609000 5699616 1608400 5699424 +1608256 5699504 1608272 5701896 1608464 5701920 1609000 5699616 +1608256 5699504 1608176 5701920 1608272 5701896 1609000 5699616 +1608256 5699504 1608272 5701896 1609000 5699616 1608400 5699424 +1608992 5699536 1608920 5699432 1609000 5699616 1614576 5707608 +1608624 5701952 1608728 5702016 1609000 5699616 1608464 5701920 +1608464 5701920 1608624 5701952 1609000 5699616 1608272 5701896 +1608272 5701896 1608976 5699688 1608256 5699504 1608176 5701920 +1608256 5699504 1608976 5699688 1609000 5699616 1608400 5699424 +1609000 5699616 1608920 5699432 1608400 5699424 1608976 5699688 +1609000 5699616 1608992 5699536 1608920 5699432 1608976 5699688 +1608992 5699536 1608960 5699472 1608920 5699432 1608976 5699688 +1608920 5699432 1608712 5699312 1608400 5699424 1608976 5699688 +1608920 5699432 1608712 5699312 1608976 5699688 1608992 5699536 +1608712 5699312 1608544 5699312 1608400 5699424 1608976 5699688 +1608400 5699424 1608256 5699504 1608976 5699688 1608712 5699312 +1609000 5699616 1608976 5699688 1608272 5701896 1608464 5701920 +1608976 5699688 1608256 5699504 1608272 5701896 1608464 5701920 +1608256 5699504 1608272 5701896 1608976 5699688 1608400 5699424 +1608976 5699688 1608464 5701920 1609000 5699616 1608992 5699536 +1609000 5699616 1608976 5699688 1608464 5701920 1608624 5701952 +1608976 5699688 1608272 5701896 1608464 5701920 1608624 5701952 +1609000 5699616 1608992 5699536 1608976 5699688 1608624 5701952 +1609000 5699616 1608976 5699688 1608624 5701952 1608728 5702016 +1609000 5699616 1608992 5699536 1608976 5699688 1608728 5702016 +1609000 5699616 1608976 5699688 1608728 5702016 1608856 5702128 +1609000 5699616 1608992 5699536 1608976 5699688 1608856 5702128 +1609000 5699616 1608976 5699688 1608856 5702128 1608976 5702256 +1609000 5699616 1608976 5699688 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1608976 5699688 +1609000 5699616 1608976 5699688 1609408 5702768 1609488 5702848 +1609000 5699616 1608976 5699688 1609488 5702848 1609512 5702904 +1608976 5699688 1608976 5702256 1609408 5702768 1609488 5702848 +1609000 5699616 1608992 5699536 1608976 5699688 1609488 5702848 +1608976 5699688 1608728 5702016 1608856 5702128 1608976 5702256 +1608976 5699688 1608856 5702128 1608976 5702256 1609408 5702768 +1608976 5699688 1608624 5701952 1608728 5702016 1608856 5702128 +1608976 5699688 1608464 5701920 1608624 5701952 1608728 5702016 +1608272 5701896 1608952 5699712 1608256 5699504 1608176 5701920 +1608976 5699688 1608952 5699712 1608272 5701896 1608464 5701920 +1608976 5699688 1608952 5699712 1608464 5701920 1608624 5701952 +1608952 5699712 1608272 5701896 1608464 5701920 1608624 5701952 +1608976 5699688 1608256 5699504 1608952 5699712 1608624 5701952 +1608256 5699504 1608952 5699712 1608976 5699688 1608400 5699424 +1608976 5699688 1608712 5699312 1608400 5699424 1608952 5699712 +1608976 5699688 1608920 5699432 1608712 5699312 1608952 5699712 +1608976 5699688 1608992 5699536 1608920 5699432 1608952 5699712 +1608976 5699688 1609000 5699616 1608992 5699536 1608952 5699712 +1608992 5699536 1608960 5699472 1608920 5699432 1608952 5699712 +1608920 5699432 1608712 5699312 1608952 5699712 1608960 5699472 +1608992 5699536 1608960 5699472 1608952 5699712 1609000 5699616 +1608712 5699312 1608544 5699312 1608400 5699424 1608952 5699712 +1608712 5699312 1608400 5699424 1608952 5699712 1608920 5699432 +1608256 5699504 1608272 5701896 1608952 5699712 1608400 5699424 +1608952 5699712 1608624 5701952 1608976 5699688 1609000 5699616 +1608400 5699424 1608256 5699504 1608952 5699712 1608712 5699312 +1608952 5699712 1608256 5699504 1608272 5701896 1608464 5701920 +1608976 5699688 1608952 5699712 1608624 5701952 1608728 5702016 +1608952 5699712 1608464 5701920 1608624 5701952 1608728 5702016 +1608976 5699688 1609000 5699616 1608952 5699712 1608728 5702016 +1608976 5699688 1608952 5699712 1608728 5702016 1608856 5702128 +1608976 5699688 1609000 5699616 1608952 5699712 1608856 5702128 +1608976 5699688 1608952 5699712 1608856 5702128 1608976 5702256 +1608976 5699688 1609000 5699616 1608952 5699712 1608976 5702256 +1608976 5699688 1608952 5699712 1608976 5702256 1609408 5702768 +1608952 5699712 1608728 5702016 1608856 5702128 1608976 5702256 +1608952 5699712 1608624 5701952 1608728 5702016 1608856 5702128 +1608976 5702256 1608960 5699744 1608952 5699712 1608856 5702128 +1608960 5699744 1608976 5699688 1608952 5699712 1608856 5702128 +1608976 5702256 1608976 5699688 1608960 5699744 1608856 5702128 +1608976 5699688 1608960 5699744 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1608960 5699744 +1608976 5699688 1608952 5699712 1608960 5699744 1609408 5702768 +1608960 5699744 1608856 5702128 1608976 5702256 1609408 5702768 +1608976 5699688 1608960 5699744 1609408 5702768 1609488 5702848 +1608976 5699688 1608952 5699712 1608960 5699744 1609488 5702848 +1608976 5699688 1608960 5699744 1609488 5702848 1609000 5699616 +1609488 5702848 1609512 5702904 1609000 5699616 1608960 5699744 +1608976 5699688 1608952 5699712 1608960 5699744 1609000 5699616 +1608960 5699744 1609408 5702768 1609488 5702848 1609000 5699616 +1608960 5699744 1608976 5702256 1609408 5702768 1609488 5702848 +1608952 5699712 1608728 5702016 1608856 5702128 1608960 5699744 +1608952 5699712 1608728 5702016 1608960 5699744 1608976 5699688 +1608856 5702128 1608976 5702256 1608960 5699744 1608728 5702016 +1608952 5699712 1608624 5701952 1608728 5702016 1608960 5699744 +1608952 5699712 1608624 5701952 1608960 5699744 1608976 5699688 +1608952 5699712 1608464 5701920 1608624 5701952 1608960 5699744 +1608952 5699712 1608464 5701920 1608960 5699744 1608976 5699688 +1608952 5699712 1608272 5701896 1608464 5701920 1608960 5699744 +1608952 5699712 1608272 5701896 1608960 5699744 1608976 5699688 +1608464 5701920 1608624 5701952 1608960 5699744 1608272 5701896 +1608952 5699712 1608256 5699504 1608272 5701896 1608960 5699744 +1608256 5699504 1608176 5701920 1608272 5701896 1608960 5699744 +1608952 5699712 1608256 5699504 1608960 5699744 1608976 5699688 +1608952 5699712 1608400 5699424 1608256 5699504 1608960 5699744 +1608952 5699712 1608400 5699424 1608960 5699744 1608976 5699688 +1608272 5701896 1608464 5701920 1608960 5699744 1608256 5699504 +1608952 5699712 1608712 5699312 1608400 5699424 1608960 5699744 +1608256 5699504 1608272 5701896 1608960 5699744 1608400 5699424 +1608728 5702016 1608856 5702128 1608960 5699744 1608624 5701952 +1608624 5701952 1608728 5702016 1608960 5699744 1608464 5701920 +1608272 5701896 1608904 5699824 1608256 5699504 1608176 5701920 +1608960 5699744 1608904 5699824 1608272 5701896 1608464 5701920 +1608960 5699744 1608256 5699504 1608904 5699824 1608464 5701920 +1608904 5699824 1608256 5699504 1608272 5701896 1608464 5701920 +1608960 5699744 1608904 5699824 1608464 5701920 1608624 5701952 +1608960 5699744 1608256 5699504 1608904 5699824 1608624 5701952 +1608904 5699824 1608272 5701896 1608464 5701920 1608624 5701952 +1608256 5699504 1608904 5699824 1608960 5699744 1608400 5699424 +1608960 5699744 1608952 5699712 1608400 5699424 1608904 5699824 +1608904 5699824 1608624 5701952 1608960 5699744 1608952 5699712 +1608256 5699504 1608272 5701896 1608904 5699824 1608400 5699424 +1608952 5699712 1608712 5699312 1608400 5699424 1608904 5699824 +1608400 5699424 1608256 5699504 1608904 5699824 1608952 5699712 +1608960 5699744 1608904 5699824 1608624 5701952 1608728 5702016 +1608960 5699744 1608952 5699712 1608904 5699824 1608728 5702016 +1608904 5699824 1608464 5701920 1608624 5701952 1608728 5702016 +1608960 5699744 1608904 5699824 1608728 5702016 1608856 5702128 +1608960 5699744 1608952 5699712 1608904 5699824 1608856 5702128 +1608960 5699744 1608904 5699824 1608856 5702128 1608976 5702256 +1608960 5699744 1608952 5699712 1608904 5699824 1608976 5702256 +1608960 5699744 1608904 5699824 1608976 5702256 1609408 5702768 +1608904 5699824 1608728 5702016 1608856 5702128 1608976 5702256 +1608904 5699824 1608624 5701952 1608728 5702016 1608856 5702128 +1608272 5701896 1608808 5699872 1608256 5699504 1608176 5701920 +1608904 5699824 1608808 5699872 1608272 5701896 1608464 5701920 +1608904 5699824 1608256 5699504 1608808 5699872 1608464 5701920 +1608256 5699504 1608808 5699872 1608904 5699824 1608400 5699424 +1608808 5699872 1608464 5701920 1608904 5699824 1608400 5699424 +1608272 5701896 1608464 5701920 1608808 5699872 1608176 5701920 +1608808 5699872 1608400 5699424 1608256 5699504 1608176 5701920 +1608904 5699824 1608808 5699872 1608464 5701920 1608624 5701952 +1608808 5699872 1608272 5701896 1608464 5701920 1608624 5701952 +1608904 5699824 1608400 5699424 1608808 5699872 1608624 5701952 +1608904 5699824 1608808 5699872 1608624 5701952 1608728 5702016 +1608904 5699824 1608400 5699424 1608808 5699872 1608728 5702016 +1608808 5699872 1608464 5701920 1608624 5701952 1608728 5702016 +1608904 5699824 1608952 5699712 1608400 5699424 1608808 5699872 +1608904 5699824 1608960 5699744 1608952 5699712 1608808 5699872 +1608904 5699824 1608952 5699712 1608808 5699872 1608728 5702016 +1608400 5699424 1608256 5699504 1608808 5699872 1608952 5699712 +1608952 5699712 1608712 5699312 1608400 5699424 1608808 5699872 +1608712 5699312 1608544 5699312 1608400 5699424 1608808 5699872 +1608952 5699712 1608920 5699432 1608712 5699312 1608808 5699872 +1608400 5699424 1608256 5699504 1608808 5699872 1608712 5699312 +1608952 5699712 1608712 5699312 1608808 5699872 1608904 5699824 +1608256 5699504 1604152 5700872 1608176 5701920 1608808 5699872 +1608904 5699824 1608808 5699872 1608728 5702016 1608856 5702128 +1608808 5699872 1608584 5699856 1608176 5701920 1608272 5701896 +1608584 5699856 1608256 5699504 1608176 5701920 1608272 5701896 +1608808 5699872 1608584 5699856 1608272 5701896 1608464 5701920 +1608584 5699856 1608176 5701920 1608272 5701896 1608464 5701920 +1608808 5699872 1608584 5699856 1608464 5701920 1608624 5701952 +1608808 5699872 1608256 5699504 1608584 5699856 1608464 5701920 +1608256 5699504 1608584 5699856 1608808 5699872 1608400 5699424 +1608256 5699504 1608176 5701920 1608584 5699856 1608400 5699424 +1608808 5699872 1608712 5699312 1608400 5699424 1608584 5699856 +1608712 5699312 1608544 5699312 1608400 5699424 1608584 5699856 +1608400 5699424 1608256 5699504 1608584 5699856 1608712 5699312 +1608584 5699856 1608464 5701920 1608808 5699872 1608712 5699312 +1608808 5699872 1608952 5699712 1608712 5699312 1608584 5699856 +1608952 5699712 1608920 5699432 1608712 5699312 1608584 5699856 +1608952 5699712 1608960 5699472 1608920 5699432 1608584 5699856 +1608712 5699312 1608400 5699424 1608584 5699856 1608920 5699432 +1608808 5699872 1608952 5699712 1608584 5699856 1608464 5701920 +1608952 5699712 1608920 5699432 1608584 5699856 1608808 5699872 +1608808 5699872 1608904 5699824 1608952 5699712 1608584 5699856 +1608176 5701920 1608584 5699856 1608256 5699504 1604152 5700872 +1608584 5699856 1608352 5699776 1608176 5701920 1608272 5701896 +1608584 5699856 1608352 5699776 1608272 5701896 1608464 5701920 +1608256 5699504 1608352 5699776 1608584 5699856 1608400 5699424 +1608584 5699856 1608712 5699312 1608400 5699424 1608352 5699776 +1608584 5699856 1608400 5699424 1608352 5699776 1608272 5701896 +1608352 5699776 1608256 5699504 1608176 5701920 1608272 5701896 +1608256 5699504 1608176 5701920 1608352 5699776 1608400 5699424 +1608176 5701920 1608352 5699776 1608256 5699504 1604152 5700872 +1608176 5701920 1608272 5701896 1608352 5699776 1604152 5700872 +1608352 5699776 1608400 5699424 1608256 5699504 1604152 5700872 +1608176 5701920 1608352 5699776 1604152 5700872 1604160 5700992 +1608256 5699504 1604104 5700768 1604152 5700872 1608352 5699776 +1608256 5699504 1608256 5699720 1608352 5699776 1608400 5699424 +1604152 5700872 1608256 5699720 1608256 5699504 1604104 5700768 +1604152 5700872 1608352 5699776 1608256 5699720 1604104 5700768 +1608256 5699720 1608352 5699776 1608256 5699504 1604104 5700768 +1608256 5699504 1604056 5700696 1604104 5700768 1608256 5699720 +1608352 5699776 1608256 5699720 1604152 5700872 1608176 5701920 +1608352 5699776 1608256 5699720 1608176 5701920 1608272 5701896 +1608352 5699776 1608256 5699504 1608256 5699720 1608176 5701920 +1608256 5699720 1604104 5700768 1604152 5700872 1608176 5701920 +1604152 5700872 1604160 5700992 1608176 5701920 1608256 5699720 +1608256 5699504 1608200 5699672 1608256 5699720 1608352 5699776 +1608256 5699720 1608200 5699672 1604104 5700768 1604152 5700872 +1608256 5699720 1608200 5699672 1604152 5700872 1608176 5701920 +1608256 5699720 1608256 5699504 1608200 5699672 1608176 5701920 +1608200 5699672 1608256 5699504 1604104 5700768 1604152 5700872 +1604152 5700872 1604160 5700992 1608176 5701920 1608200 5699672 +1608200 5699672 1604104 5700768 1604152 5700872 1608176 5701920 +1604104 5700768 1608200 5699672 1608256 5699504 1604056 5700696 +1604104 5700768 1604152 5700872 1608200 5699672 1604056 5700696 +1608200 5699672 1608256 5699720 1608256 5699504 1604056 5700696 +1608256 5699504 1603848 5700544 1604056 5700696 1608200 5699672 +1608256 5699720 1608200 5699672 1608176 5701920 1608352 5699776 +1608256 5699504 1608192 5699632 1608200 5699672 1608256 5699720 +1608256 5699504 1608192 5699632 1608256 5699720 1608352 5699776 +1608192 5699632 1604056 5700696 1608200 5699672 1608256 5699720 +1608256 5699504 1604056 5700696 1608192 5699632 1608256 5699720 +1604056 5700696 1608192 5699632 1608256 5699504 1603848 5700544 +1604056 5700696 1608200 5699672 1608192 5699632 1603848 5700544 +1608192 5699632 1608256 5699720 1608256 5699504 1603848 5700544 +1608200 5699672 1608192 5699632 1604056 5700696 1604104 5700768 +1608200 5699672 1608192 5699632 1604104 5700768 1604152 5700872 +1608200 5699672 1608256 5699720 1608192 5699632 1604152 5700872 +1608192 5699632 1603848 5700544 1604056 5700696 1604104 5700768 +1608200 5699672 1608192 5699632 1604152 5700872 1608176 5701920 +1608192 5699632 1604056 5700696 1604104 5700768 1604152 5700872 +1608256 5699504 1602504 5697056 1603848 5700544 1608192 5699632 +1608256 5699504 1608216 5699560 1608192 5699632 1608256 5699720 +1608256 5699504 1608216 5699560 1608256 5699720 1608352 5699776 +1608192 5699632 1608200 5699672 1608256 5699720 1608216 5699560 +1608216 5699560 1603848 5700544 1608192 5699632 1608256 5699720 +1608256 5699504 1603848 5700544 1608216 5699560 1608256 5699720 +1608192 5699632 1608216 5699560 1603848 5700544 1604056 5700696 +1608192 5699632 1608216 5699560 1604056 5700696 1604104 5700768 +1608192 5699632 1608256 5699720 1608216 5699560 1604056 5700696 +1608216 5699560 1608256 5699504 1603848 5700544 1604056 5700696 +1603848 5700544 1608216 5699560 1608256 5699504 1602504 5697056 +1608256 5699504 1602504 5696992 1602504 5697056 1608216 5699560 +1603848 5700544 1604056 5700696 1608216 5699560 1602504 5697056 +1608216 5699560 1608256 5699720 1608256 5699504 1602504 5697056 +1603848 5700544 1608216 5699560 1602504 5697056 1603680 5700448 +1663880 5646248 1610696 5698920 1614680 5707680 1614696 5707712 +1608960 5699472 1610696 5698920 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1610696 5698920 +1610696 5698920 1614680 5707680 1663880 5646248 1601624 5681136 +1608960 5699472 1614680 5707680 1610696 5698920 1601624 5681136 +1614680 5707680 1610696 5698920 1608960 5699472 1608992 5699536 +1614680 5707680 1663880 5646248 1610696 5698920 1608992 5699536 +1610696 5698920 1601624 5681136 1608960 5699472 1608992 5699536 +1608960 5699472 1610696 5698920 1601624 5681136 1608920 5699432 +1601624 5681136 1608712 5699312 1608920 5699432 1610696 5698920 +1608960 5699472 1608992 5699536 1610696 5698920 1608920 5699432 +1601624 5681136 1601592 5681216 1608712 5699312 1610696 5698920 +1608712 5699312 1608920 5699432 1610696 5698920 1601592 5681216 +1601592 5681216 1608624 5699288 1608712 5699312 1610696 5698920 +1601592 5681216 1602160 5695928 1608624 5699288 1610696 5698920 +1602160 5695928 1602200 5696008 1608624 5699288 1610696 5698920 +1601592 5681216 1601128 5681664 1602160 5695928 1610696 5698920 +1608712 5699312 1608920 5699432 1610696 5698920 1608624 5699288 +1608624 5699288 1608712 5699312 1610696 5698920 1602160 5695928 +1601592 5681216 1602160 5695928 1610696 5698920 1601624 5681136 +1610696 5698920 1663880 5646248 1601624 5681136 1601592 5681216 +1608920 5699432 1608960 5699472 1610696 5698920 1608712 5699312 +1614680 5707680 1610696 5698920 1608992 5699536 1614648 5707656 +1614680 5707680 1663880 5646248 1610696 5698920 1614648 5707656 +1608992 5699536 1614576 5707608 1614648 5707656 1610696 5698920 +1608992 5699536 1609000 5699616 1614576 5707608 1610696 5698920 +1609000 5699616 1609512 5702904 1614576 5707608 1610696 5698920 +1609512 5702904 1613152 5707048 1614576 5707608 1610696 5698920 +1609512 5702904 1613096 5707024 1613152 5707048 1610696 5698920 +1613152 5707048 1614576 5707608 1610696 5698920 1613096 5707024 +1613152 5707048 1613240 5707104 1614576 5707608 1610696 5698920 +1609512 5702904 1612848 5706920 1613096 5707024 1610696 5698920 +1613096 5707024 1613152 5707048 1610696 5698920 1612848 5706920 +1609512 5702904 1611832 5706704 1612848 5706920 1610696 5698920 +1609000 5699616 1609512 5702904 1610696 5698920 1608992 5699536 +1609512 5702904 1612848 5706920 1610696 5698920 1609000 5699616 +1609000 5699616 1609488 5702848 1609512 5702904 1610696 5698920 +1609000 5699616 1608960 5699744 1609488 5702848 1610696 5698920 +1609000 5699616 1608960 5699744 1610696 5698920 1608992 5699536 +1609512 5702904 1612848 5706920 1610696 5698920 1609488 5702848 +1608960 5699744 1609408 5702768 1609488 5702848 1610696 5698920 +1608960 5699744 1609408 5702768 1610696 5698920 1609000 5699616 +1609000 5699616 1608976 5699688 1608960 5699744 1610696 5698920 +1608960 5699744 1609408 5702768 1610696 5698920 1608976 5699688 +1608976 5699688 1608952 5699712 1608960 5699744 1610696 5698920 +1609000 5699616 1608976 5699688 1610696 5698920 1608992 5699536 +1608960 5699744 1608976 5702256 1609408 5702768 1610696 5698920 +1608976 5702256 1609064 5702472 1609408 5702768 1610696 5698920 +1608960 5699744 1608976 5702256 1610696 5698920 1608976 5699688 +1608960 5699744 1608904 5699824 1608976 5702256 1610696 5698920 +1608960 5699744 1608904 5699824 1610696 5698920 1608976 5699688 +1609408 5702768 1609488 5702848 1610696 5698920 1608976 5702256 +1608904 5699824 1608856 5702128 1608976 5702256 1610696 5698920 +1608976 5702256 1609408 5702768 1610696 5698920 1608904 5699824 +1609488 5702848 1609512 5702904 1610696 5698920 1609408 5702768 +1614576 5707608 1614648 5707656 1610696 5698920 1613152 5707048 +1612848 5706920 1612992 5706984 1613096 5707024 1610696 5698920 +1610696 5698920 1608960 5699472 1608992 5699536 1609000 5699616 +1614648 5707656 1614680 5707680 1610696 5698920 1614576 5707608 +1601624 5681136 1610736 5698824 1663880 5646248 1663776 5646144 +1663880 5646248 1610736 5698824 1610696 5698920 1614680 5707680 +1663880 5646248 1610736 5698824 1614680 5707680 1614696 5707712 +1610696 5698920 1614648 5707656 1614680 5707680 1610736 5698824 +1614680 5707680 1663880 5646248 1610736 5698824 1614648 5707656 +1610736 5698824 1601624 5681136 1610696 5698920 1614648 5707656 +1663880 5646248 1601624 5681136 1610736 5698824 1614680 5707680 +1610696 5698920 1610736 5698824 1601624 5681136 1601592 5681216 +1610696 5698920 1614648 5707656 1610736 5698824 1601592 5681216 +1610736 5698824 1663880 5646248 1601624 5681136 1601592 5681216 +1610696 5698920 1610736 5698824 1601592 5681216 1602160 5695928 +1610696 5698920 1610736 5698824 1602160 5695928 1608624 5699288 +1602160 5695928 1602200 5696008 1608624 5699288 1610736 5698824 +1601592 5681216 1601128 5681664 1602160 5695928 1610736 5698824 +1610696 5698920 1614648 5707656 1610736 5698824 1608624 5699288 +1610696 5698920 1610736 5698824 1608624 5699288 1608712 5699312 +1610736 5698824 1602160 5695928 1608624 5699288 1608712 5699312 +1610696 5698920 1610736 5698824 1608712 5699312 1608920 5699432 +1610696 5698920 1614648 5707656 1610736 5698824 1608920 5699432 +1610736 5698824 1608624 5699288 1608712 5699312 1608920 5699432 +1610736 5698824 1601592 5681216 1602160 5695928 1608624 5699288 +1610736 5698824 1601624 5681136 1601592 5681216 1602160 5695928 +1610696 5698920 1610736 5698824 1608920 5699432 1608960 5699472 +1610696 5698920 1614576 5707608 1614648 5707656 1610736 5698824 +1614648 5707656 1614680 5707680 1610736 5698824 1614576 5707608 +1610696 5698920 1614576 5707608 1610736 5698824 1608920 5699432 +1610696 5698920 1613152 5707048 1614576 5707608 1610736 5698824 +1663880 5646248 1610784 5698784 1614680 5707680 1614696 5707712 +1614680 5707680 1610784 5698784 1610736 5698824 1614648 5707656 +1610736 5698824 1614576 5707608 1614648 5707656 1610784 5698784 +1614648 5707656 1614680 5707680 1610784 5698784 1614576 5707608 +1610784 5698784 1663880 5646248 1610736 5698824 1614576 5707608 +1610736 5698824 1610784 5698784 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1610784 5698784 +1610736 5698824 1610784 5698784 1601624 5681136 1601592 5681216 +1610736 5698824 1614576 5707608 1610784 5698784 1601592 5681216 +1610784 5698784 1663880 5646248 1601624 5681136 1601592 5681216 +1610784 5698784 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1610784 5698784 1614648 5707656 +1610736 5698824 1610784 5698784 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1610784 5698784 +1610784 5698784 1601624 5681136 1601592 5681216 1602160 5695928 +1610736 5698824 1614576 5707608 1610784 5698784 1602160 5695928 +1610736 5698824 1610784 5698784 1602160 5695928 1608624 5699288 +1602160 5695928 1602200 5696008 1608624 5699288 1610784 5698784 +1610736 5698824 1610784 5698784 1608624 5699288 1608712 5699312 +1610736 5698824 1614576 5707608 1610784 5698784 1608624 5699288 +1610784 5698784 1601592 5681216 1602160 5695928 1608624 5699288 +1610736 5698824 1610696 5698920 1614576 5707608 1610784 5698784 +1614576 5707608 1614648 5707656 1610784 5698784 1610696 5698920 +1610736 5698824 1610696 5698920 1610784 5698784 1608624 5699288 +1610696 5698920 1613152 5707048 1614576 5707608 1610784 5698784 +1610696 5698920 1613096 5707024 1613152 5707048 1610784 5698784 +1613152 5707048 1613240 5707104 1614576 5707608 1610784 5698784 +1614576 5707608 1614648 5707656 1610784 5698784 1613152 5707048 +1610696 5698920 1613152 5707048 1610784 5698784 1610736 5698824 +1663880 5646248 1610848 5698768 1614680 5707680 1614696 5707712 +1610784 5698784 1610848 5698768 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1610848 5698768 +1610784 5698784 1610848 5698768 1601624 5681136 1601592 5681216 +1610784 5698784 1610848 5698768 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1610848 5698768 +1610848 5698768 1601624 5681136 1601592 5681216 1602160 5695928 +1610848 5698768 1663880 5646248 1601624 5681136 1601592 5681216 +1610784 5698784 1614680 5707680 1610848 5698768 1602160 5695928 +1614680 5707680 1610848 5698768 1610784 5698784 1614648 5707656 +1610784 5698784 1614576 5707608 1614648 5707656 1610848 5698768 +1610784 5698784 1613152 5707048 1614576 5707608 1610848 5698768 +1613152 5707048 1613240 5707104 1614576 5707608 1610848 5698768 +1614576 5707608 1614648 5707656 1610848 5698768 1613152 5707048 +1610848 5698768 1602160 5695928 1610784 5698784 1613152 5707048 +1614648 5707656 1614680 5707680 1610848 5698768 1614576 5707608 +1610848 5698768 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1610848 5698768 1614648 5707656 +1610784 5698784 1610696 5698920 1613152 5707048 1610848 5698768 +1610696 5698920 1613096 5707024 1613152 5707048 1610848 5698768 +1610696 5698920 1612848 5706920 1613096 5707024 1610848 5698768 +1613096 5707024 1613152 5707048 1610848 5698768 1612848 5706920 +1610696 5698920 1609512 5702904 1612848 5706920 1610848 5698768 +1612848 5706920 1613096 5707024 1610848 5698768 1609512 5702904 +1609512 5702904 1611832 5706704 1612848 5706920 1610848 5698768 +1610696 5698920 1609488 5702848 1609512 5702904 1610848 5698768 +1613152 5707048 1614576 5707608 1610848 5698768 1613096 5707024 +1610784 5698784 1610696 5698920 1610848 5698768 1602160 5695928 +1610696 5698920 1609512 5702904 1610848 5698768 1610784 5698784 +1612848 5706920 1612992 5706984 1613096 5707024 1610848 5698768 +1610784 5698784 1610848 5698768 1602160 5695928 1608624 5699288 +1610784 5698784 1610736 5698824 1610696 5698920 1610848 5698768 +1610784 5698784 1610736 5698824 1610848 5698768 1602160 5695928 +1610696 5698920 1609512 5702904 1610848 5698768 1610736 5698824 +1663880 5646248 1610904 5698784 1614680 5707680 1614696 5707712 +1610848 5698768 1610904 5698784 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1610904 5698784 +1610848 5698768 1610904 5698784 1601624 5681136 1601592 5681216 +1610848 5698768 1614680 5707680 1610904 5698784 1601624 5681136 +1614680 5707680 1610904 5698784 1610848 5698768 1614648 5707656 +1610848 5698768 1614576 5707608 1614648 5707656 1610904 5698784 +1610848 5698768 1613152 5707048 1614576 5707608 1610904 5698784 +1613152 5707048 1613240 5707104 1614576 5707608 1610904 5698784 +1610848 5698768 1613096 5707024 1613152 5707048 1610904 5698784 +1610848 5698768 1612848 5706920 1613096 5707024 1610904 5698784 +1610848 5698768 1609512 5702904 1612848 5706920 1610904 5698784 +1612848 5706920 1613096 5707024 1610904 5698784 1609512 5702904 +1609512 5702904 1611832 5706704 1612848 5706920 1610904 5698784 +1610848 5698768 1610696 5698920 1609512 5702904 1610904 5698784 +1609512 5702904 1612848 5706920 1610904 5698784 1610696 5698920 +1610696 5698920 1609488 5702848 1609512 5702904 1610904 5698784 +1613152 5707048 1614576 5707608 1610904 5698784 1613096 5707024 +1613096 5707024 1613152 5707048 1610904 5698784 1612848 5706920 +1614576 5707608 1614648 5707656 1610904 5698784 1613152 5707048 +1610904 5698784 1601624 5681136 1610848 5698768 1610696 5698920 +1614648 5707656 1614680 5707680 1610904 5698784 1614576 5707608 +1610904 5698784 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1610904 5698784 1614648 5707656 +1610848 5698768 1610736 5698824 1610696 5698920 1610904 5698784 +1610696 5698920 1609512 5702904 1610904 5698784 1610736 5698824 +1610848 5698768 1610736 5698824 1610904 5698784 1601624 5681136 +1612848 5706920 1612992 5706984 1613096 5707024 1610904 5698784 +1610848 5698768 1610784 5698784 1610736 5698824 1610904 5698784 +1610848 5698768 1610784 5698784 1610904 5698784 1601624 5681136 +1610736 5698824 1610696 5698920 1610904 5698784 1610784 5698784 +1663880 5646248 1610928 5698816 1614680 5707680 1614696 5707712 +1610904 5698784 1610928 5698816 1663880 5646248 1601624 5681136 +1614680 5707680 1610928 5698816 1610904 5698784 1614648 5707656 +1610904 5698784 1614576 5707608 1614648 5707656 1610928 5698816 +1610904 5698784 1613152 5707048 1614576 5707608 1610928 5698816 +1613152 5707048 1613240 5707104 1614576 5707608 1610928 5698816 +1610904 5698784 1613096 5707024 1613152 5707048 1610928 5698816 +1610904 5698784 1612848 5706920 1613096 5707024 1610928 5698816 +1610904 5698784 1609512 5702904 1612848 5706920 1610928 5698816 +1610904 5698784 1610696 5698920 1609512 5702904 1610928 5698816 +1609512 5702904 1612848 5706920 1610928 5698816 1610696 5698920 +1609512 5702904 1611832 5706704 1612848 5706920 1610928 5698816 +1610904 5698784 1610736 5698824 1610696 5698920 1610928 5698816 +1610696 5698920 1609512 5702904 1610928 5698816 1610736 5698824 +1610696 5698920 1609488 5702848 1609512 5702904 1610928 5698816 +1610696 5698920 1609488 5702848 1610928 5698816 1610736 5698824 +1609512 5702904 1612848 5706920 1610928 5698816 1609488 5702848 +1613096 5707024 1613152 5707048 1610928 5698816 1612848 5706920 +1612848 5706920 1613096 5707024 1610928 5698816 1609512 5702904 +1613152 5707048 1614576 5707608 1610928 5698816 1613096 5707024 +1614576 5707608 1614648 5707656 1610928 5698816 1613152 5707048 +1610928 5698816 1663880 5646248 1610904 5698784 1610736 5698824 +1614648 5707656 1614680 5707680 1610928 5698816 1614576 5707608 +1610696 5698920 1609408 5702768 1609488 5702848 1610928 5698816 +1610904 5698784 1610784 5698784 1610736 5698824 1610928 5698816 +1610736 5698824 1610696 5698920 1610928 5698816 1610784 5698784 +1610904 5698784 1610784 5698784 1610928 5698816 1663880 5646248 +1614680 5707680 1663880 5646248 1610928 5698816 1614648 5707656 +1612848 5706920 1612992 5706984 1613096 5707024 1610928 5698816 +1610904 5698784 1610848 5698768 1610784 5698784 1610928 5698816 +1610904 5698784 1610848 5698768 1610928 5698816 1663880 5646248 +1610784 5698784 1610736 5698824 1610928 5698816 1610848 5698768 +1609512 5702904 1610920 5699248 1610928 5698816 1609488 5702848 +1612848 5706920 1610920 5699248 1609512 5702904 1611832 5706704 +1610928 5698816 1610696 5698920 1609488 5702848 1610920 5699248 +1610928 5698816 1610736 5698824 1610696 5698920 1610920 5699248 +1609488 5702848 1609512 5702904 1610920 5699248 1610696 5698920 +1610928 5698816 1610920 5699248 1612848 5706920 1613096 5707024 +1610928 5698816 1610920 5699248 1613096 5707024 1613152 5707048 +1610920 5699248 1612848 5706920 1613096 5707024 1613152 5707048 +1610928 5698816 1610920 5699248 1613152 5707048 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1610920 5699248 +1610920 5699248 1613096 5707024 1613152 5707048 1614576 5707608 +1610928 5698816 1610920 5699248 1614576 5707608 1614648 5707656 +1610920 5699248 1613152 5707048 1614576 5707608 1614648 5707656 +1610928 5698816 1610920 5699248 1614648 5707656 1614680 5707680 +1610920 5699248 1614576 5707608 1614648 5707656 1614680 5707680 +1610696 5698920 1609408 5702768 1609488 5702848 1610920 5699248 +1609488 5702848 1609512 5702904 1610920 5699248 1609408 5702768 +1610696 5698920 1609408 5702768 1610920 5699248 1610928 5698816 +1610696 5698920 1608976 5702256 1609408 5702768 1610920 5699248 +1608976 5702256 1609064 5702472 1609408 5702768 1610920 5699248 +1610696 5698920 1608976 5702256 1610920 5699248 1610928 5698816 +1610696 5698920 1608904 5699824 1608976 5702256 1610920 5699248 +1610696 5698920 1608960 5699744 1608904 5699824 1610920 5699248 +1610696 5698920 1608976 5699688 1608960 5699744 1610920 5699248 +1608976 5699688 1608952 5699712 1608960 5699744 1610920 5699248 +1608960 5699744 1608904 5699824 1610920 5699248 1608976 5699688 +1610696 5698920 1608976 5699688 1610920 5699248 1610928 5698816 +1608976 5702256 1609408 5702768 1610920 5699248 1608904 5699824 +1610696 5698920 1609000 5699616 1608976 5699688 1610920 5699248 +1608976 5699688 1608960 5699744 1610920 5699248 1609000 5699616 +1610696 5698920 1608992 5699536 1609000 5699616 1610920 5699248 +1610696 5698920 1609000 5699616 1610920 5699248 1610928 5698816 +1608904 5699824 1608856 5702128 1608976 5702256 1610920 5699248 +1608904 5699824 1608976 5702256 1610920 5699248 1608960 5699744 +1609408 5702768 1609488 5702848 1610920 5699248 1608976 5702256 +1610920 5699248 1614680 5707680 1610928 5698816 1610696 5698920 +1610928 5698816 1610920 5699248 1614680 5707680 1663880 5646248 +1610920 5699248 1609512 5702904 1612848 5706920 1613096 5707024 +1609512 5702904 1612848 5706920 1610920 5699248 1609488 5702848 +1612848 5706920 1612992 5706984 1613096 5707024 1610920 5699248 +1610920 5699248 1610880 5699296 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1610880 5699296 +1608976 5702256 1610880 5699296 1608904 5699824 1608856 5702128 +1608904 5699824 1610880 5699296 1610920 5699248 1608960 5699744 +1610920 5699248 1608976 5699688 1608960 5699744 1610880 5699296 +1610920 5699248 1609000 5699616 1608976 5699688 1610880 5699296 +1608976 5699688 1608952 5699712 1608960 5699744 1610880 5699296 +1608976 5699688 1608960 5699744 1610880 5699296 1609000 5699616 +1610920 5699248 1610696 5698920 1609000 5699616 1610880 5699296 +1609000 5699616 1608976 5699688 1610880 5699296 1610696 5698920 +1610696 5698920 1608992 5699536 1609000 5699616 1610880 5699296 +1610920 5699248 1610928 5698816 1610696 5698920 1610880 5699296 +1608960 5699744 1608904 5699824 1610880 5699296 1608976 5699688 +1610920 5699248 1610880 5699296 1609408 5702768 1609488 5702848 +1610920 5699248 1610880 5699296 1609488 5702848 1609512 5702904 +1610880 5699296 1608976 5702256 1609408 5702768 1609488 5702848 +1610880 5699296 1609408 5702768 1609488 5702848 1609512 5702904 +1610920 5699248 1610696 5698920 1610880 5699296 1609512 5702904 +1610920 5699248 1610880 5699296 1609512 5702904 1612848 5706920 +1610880 5699296 1609488 5702848 1609512 5702904 1612848 5706920 +1609512 5702904 1611832 5706704 1612848 5706920 1610880 5699296 +1610920 5699248 1610880 5699296 1612848 5706920 1613096 5707024 +1610920 5699248 1610696 5698920 1610880 5699296 1612848 5706920 +1610880 5699296 1608904 5699824 1608976 5702256 1609408 5702768 +1608904 5699824 1608976 5702256 1610880 5699296 1608960 5699744 +1608976 5702256 1610856 5699312 1608904 5699824 1608856 5702128 +1610880 5699296 1610856 5699312 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1610856 5699312 +1610880 5699296 1610856 5699312 1609408 5702768 1609488 5702848 +1610880 5699296 1610856 5699312 1609488 5702848 1609512 5702904 +1610880 5699296 1610856 5699312 1609512 5702904 1612848 5706920 +1610856 5699312 1609408 5702768 1609488 5702848 1609512 5702904 +1610856 5699312 1608976 5702256 1609408 5702768 1609488 5702848 +1610880 5699296 1608904 5699824 1610856 5699312 1609512 5702904 +1608904 5699824 1610856 5699312 1610880 5699296 1608960 5699744 +1608904 5699824 1608976 5702256 1610856 5699312 1608960 5699744 +1610880 5699296 1608976 5699688 1608960 5699744 1610856 5699312 +1608976 5699688 1608952 5699712 1608960 5699744 1610856 5699312 +1610880 5699296 1609000 5699616 1608976 5699688 1610856 5699312 +1610880 5699296 1610696 5698920 1609000 5699616 1610856 5699312 +1609000 5699616 1608976 5699688 1610856 5699312 1610696 5698920 +1610696 5698920 1608992 5699536 1609000 5699616 1610856 5699312 +1610696 5698920 1608992 5699536 1610856 5699312 1610880 5699296 +1609000 5699616 1608976 5699688 1610856 5699312 1608992 5699536 +1610880 5699296 1610920 5699248 1610696 5698920 1610856 5699312 +1610696 5698920 1608992 5699536 1610856 5699312 1610920 5699248 +1610920 5699248 1610928 5698816 1610696 5698920 1610856 5699312 +1608976 5699688 1608960 5699744 1610856 5699312 1609000 5699616 +1610856 5699312 1609512 5702904 1610880 5699296 1610920 5699248 +1608960 5699744 1608904 5699824 1610856 5699312 1608976 5699688 +1610856 5699312 1608904 5699824 1608976 5702256 1609408 5702768 +1610696 5698920 1608960 5699472 1608992 5699536 1610856 5699312 +1610696 5698920 1610832 5699304 1610856 5699312 1610920 5699248 +1610832 5699304 1608992 5699536 1610856 5699312 1610920 5699248 +1610696 5698920 1608992 5699536 1610832 5699304 1610920 5699248 +1610856 5699312 1610832 5699304 1608992 5699536 1609000 5699616 +1610856 5699312 1610920 5699248 1610832 5699304 1609000 5699616 +1610832 5699304 1610696 5698920 1608992 5699536 1609000 5699616 +1610856 5699312 1610832 5699304 1609000 5699616 1608976 5699688 +1610856 5699312 1610920 5699248 1610832 5699304 1608976 5699688 +1610832 5699304 1608992 5699536 1609000 5699616 1608976 5699688 +1610696 5698920 1610832 5699304 1610920 5699248 1610928 5698816 +1610856 5699312 1610880 5699296 1610920 5699248 1610832 5699304 +1610856 5699312 1610880 5699296 1610832 5699304 1608976 5699688 +1610920 5699248 1610696 5698920 1610832 5699304 1610880 5699296 +1610856 5699312 1610832 5699304 1608976 5699688 1608960 5699744 +1610856 5699312 1610880 5699296 1610832 5699304 1608960 5699744 +1608976 5699688 1608952 5699712 1608960 5699744 1610832 5699304 +1610832 5699304 1609000 5699616 1608976 5699688 1608960 5699744 +1610856 5699312 1610832 5699304 1608960 5699744 1608904 5699824 +1610856 5699312 1610832 5699304 1608904 5699824 1608976 5702256 +1610856 5699312 1610880 5699296 1610832 5699304 1608976 5702256 +1608904 5699824 1608856 5702128 1608976 5702256 1610832 5699304 +1610832 5699304 1608976 5699688 1608960 5699744 1608904 5699824 +1610832 5699304 1608960 5699744 1608904 5699824 1608976 5702256 +1610856 5699312 1610832 5699304 1608976 5702256 1609408 5702768 +1608992 5699536 1610832 5699304 1610696 5698920 1608960 5699472 +1610832 5699304 1610768 5699208 1608992 5699536 1609000 5699616 +1610832 5699304 1610696 5698920 1610768 5699208 1609000 5699616 +1610696 5698920 1610768 5699208 1610832 5699304 1610920 5699248 +1610768 5699208 1609000 5699616 1610832 5699304 1610920 5699248 +1610768 5699208 1610696 5698920 1608992 5699536 1609000 5699616 +1610696 5698920 1608992 5699536 1610768 5699208 1610920 5699248 +1610832 5699304 1610880 5699296 1610920 5699248 1610768 5699208 +1610832 5699304 1610880 5699296 1610768 5699208 1609000 5699616 +1610920 5699248 1610696 5698920 1610768 5699208 1610880 5699296 +1610832 5699304 1610768 5699208 1609000 5699616 1608976 5699688 +1610696 5698920 1610768 5699208 1610920 5699248 1610928 5698816 +1610768 5699208 1610880 5699296 1610920 5699248 1610928 5698816 +1610696 5698920 1608992 5699536 1610768 5699208 1610928 5698816 +1610696 5698920 1610768 5699208 1610928 5698816 1610736 5698824 +1610832 5699304 1610856 5699312 1610880 5699296 1610768 5699208 +1608992 5699536 1610768 5699208 1610696 5698920 1608960 5699472 +1610768 5699208 1610736 5699128 1608992 5699536 1609000 5699616 +1610736 5699128 1610696 5698920 1608992 5699536 1609000 5699616 +1610768 5699208 1610736 5699128 1609000 5699616 1610832 5699304 +1610768 5699208 1610696 5698920 1610736 5699128 1609000 5699616 +1610696 5698920 1610736 5699128 1610768 5699208 1610928 5698816 +1610696 5698920 1608992 5699536 1610736 5699128 1610928 5698816 +1610736 5699128 1609000 5699616 1610768 5699208 1610928 5698816 +1610696 5698920 1610736 5699128 1610928 5698816 1610736 5698824 +1610768 5699208 1610920 5699248 1610928 5698816 1610736 5699128 +1610768 5699208 1610880 5699296 1610920 5699248 1610736 5699128 +1610768 5699208 1610920 5699248 1610736 5699128 1609000 5699616 +1610928 5698816 1610696 5698920 1610736 5699128 1610920 5699248 +1608992 5699536 1610736 5699128 1610696 5698920 1608960 5699472 +1610736 5699128 1610720 5699056 1608992 5699536 1609000 5699616 +1610696 5698920 1610720 5699056 1610736 5699128 1610928 5698816 +1610720 5699056 1608992 5699536 1610736 5699128 1610928 5698816 +1610696 5698920 1608992 5699536 1610720 5699056 1610928 5698816 +1610736 5699128 1610920 5699248 1610928 5698816 1610720 5699056 +1610736 5699128 1610920 5699248 1610720 5699056 1608992 5699536 +1610928 5698816 1610696 5698920 1610720 5699056 1610920 5699248 +1610696 5698920 1610720 5699056 1610928 5698816 1610736 5698824 +1610736 5699128 1610768 5699208 1610920 5699248 1610720 5699056 +1608992 5699536 1610720 5699056 1610696 5698920 1608960 5699472 +1610720 5699056 1610696 5698960 1608992 5699536 1610736 5699128 +1610696 5698920 1610696 5698960 1610720 5699056 1610928 5698816 +1610720 5699056 1610920 5699248 1610928 5698816 1610696 5698960 +1610696 5698960 1608992 5699536 1610720 5699056 1610928 5698816 +1610696 5698920 1608992 5699536 1610696 5698960 1610928 5698816 +1610696 5698920 1610696 5698960 1610928 5698816 1610736 5698824 +1608992 5699536 1610696 5698960 1610696 5698920 1608960 5699472 +1608992 5699536 1610720 5699056 1610696 5698960 1608960 5699472 +1610696 5698960 1610928 5698816 1610696 5698920 1608960 5699472 +1610696 5698920 1608920 5699432 1608960 5699472 1610696 5698960 +1663880 5646248 1611264 5699520 1614680 5707680 1614696 5707712 +1610928 5698816 1611264 5699520 1663880 5646248 1610904 5698784 +1614680 5707680 1611264 5699520 1610928 5698816 1610920 5699248 +1611264 5699520 1663880 5646248 1610928 5698816 1610920 5699248 +1614680 5707680 1663880 5646248 1611264 5699520 1610920 5699248 +1614680 5707680 1611264 5699520 1610920 5699248 1614648 5707656 +1614680 5707680 1663880 5646248 1611264 5699520 1614648 5707656 +1610920 5699248 1614576 5707608 1614648 5707656 1611264 5699520 +1610920 5699248 1613152 5707048 1614576 5707608 1611264 5699520 +1613152 5707048 1613240 5707104 1614576 5707608 1611264 5699520 +1610920 5699248 1613096 5707024 1613152 5707048 1611264 5699520 +1610920 5699248 1612848 5706920 1613096 5707024 1611264 5699520 +1613096 5707024 1613152 5707048 1611264 5699520 1612848 5706920 +1613152 5707048 1614576 5707608 1611264 5699520 1613096 5707024 +1614576 5707608 1614648 5707656 1611264 5699520 1613152 5707048 +1614648 5707656 1614680 5707680 1611264 5699520 1614576 5707608 +1611264 5699520 1610928 5698816 1610920 5699248 1612848 5706920 +1610920 5699248 1610880 5699296 1612848 5706920 1611264 5699520 +1612848 5706920 1613096 5707024 1611264 5699520 1610880 5699296 +1610920 5699248 1610880 5699296 1611264 5699520 1610928 5698816 +1610880 5699296 1609512 5702904 1612848 5706920 1611264 5699520 +1610880 5699296 1610856 5699312 1609512 5702904 1611264 5699520 +1609512 5702904 1611832 5706704 1612848 5706920 1611264 5699520 +1612848 5706920 1613096 5707024 1611264 5699520 1609512 5702904 +1610856 5699312 1609488 5702848 1609512 5702904 1611264 5699520 +1610856 5699312 1609488 5702848 1611264 5699520 1610880 5699296 +1610856 5699312 1609408 5702768 1609488 5702848 1611264 5699520 +1610856 5699312 1609408 5702768 1611264 5699520 1610880 5699296 +1609488 5702848 1609512 5702904 1611264 5699520 1609408 5702768 +1610880 5699296 1610856 5699312 1611264 5699520 1610920 5699248 +1609512 5702904 1612848 5706920 1611264 5699520 1609488 5702848 +1610856 5699312 1608976 5702256 1609408 5702768 1611264 5699520 +1608976 5702256 1609064 5702472 1609408 5702768 1611264 5699520 +1610856 5699312 1608976 5702256 1611264 5699520 1610880 5699296 +1609408 5702768 1609488 5702848 1611264 5699520 1608976 5702256 +1610856 5699312 1610832 5699304 1608976 5702256 1611264 5699520 +1610832 5699304 1608904 5699824 1608976 5702256 1611264 5699520 +1610856 5699312 1610832 5699304 1611264 5699520 1610880 5699296 +1608904 5699824 1608856 5702128 1608976 5702256 1611264 5699520 +1608976 5702256 1609408 5702768 1611264 5699520 1608904 5699824 +1610832 5699304 1608960 5699744 1608904 5699824 1611264 5699520 +1610832 5699304 1608904 5699824 1611264 5699520 1610856 5699312 +1612848 5706920 1612992 5706984 1613096 5707024 1611264 5699520 +1611264 5699520 1611288 5699384 1610928 5698816 1610920 5699248 +1663880 5646248 1611288 5699384 1611264 5699520 1614680 5707680 +1663880 5646248 1611288 5699384 1614680 5707680 1614696 5707712 +1611264 5699520 1614680 5707680 1611288 5699384 1610920 5699248 +1611264 5699520 1614648 5707656 1614680 5707680 1611288 5699384 +1614680 5707680 1663880 5646248 1611288 5699384 1614648 5707656 +1611264 5699520 1614648 5707656 1611288 5699384 1610920 5699248 +1611288 5699384 1663880 5646248 1610928 5698816 1610920 5699248 +1663880 5646248 1610928 5698816 1611288 5699384 1614680 5707680 +1611264 5699520 1614576 5707608 1614648 5707656 1611288 5699384 +1610928 5698816 1611288 5699384 1663880 5646248 1610904 5698784 +1611264 5699520 1611288 5699384 1610920 5699248 1610880 5699296 +1611288 5699384 1610928 5698816 1610920 5699248 1610880 5699296 +1611264 5699520 1614648 5707656 1611288 5699384 1610880 5699296 +1611264 5699520 1611288 5699384 1610880 5699296 1610856 5699312 +1611288 5699384 1611328 5699264 1610928 5698816 1610920 5699248 +1611288 5699384 1611328 5699264 1610920 5699248 1610880 5699296 +1611288 5699384 1663880 5646248 1611328 5699264 1610920 5699248 +1663880 5646248 1611328 5699264 1611288 5699384 1614680 5707680 +1663880 5646248 1611328 5699264 1614680 5707680 1614696 5707712 +1611288 5699384 1614648 5707656 1614680 5707680 1611328 5699264 +1611288 5699384 1611264 5699520 1614648 5707656 1611328 5699264 +1614648 5707656 1614680 5707680 1611328 5699264 1611264 5699520 +1611328 5699264 1610920 5699248 1611288 5699384 1611264 5699520 +1614680 5707680 1663880 5646248 1611328 5699264 1614648 5707656 +1611328 5699264 1663880 5646248 1610928 5698816 1610920 5699248 +1663880 5646248 1610928 5698816 1611328 5699264 1614680 5707680 +1611264 5699520 1614576 5707608 1614648 5707656 1611328 5699264 +1614648 5707656 1614680 5707680 1611328 5699264 1614576 5707608 +1611264 5699520 1614576 5707608 1611328 5699264 1611288 5699384 +1611264 5699520 1613152 5707048 1614576 5707608 1611328 5699264 +1610928 5698816 1611328 5699264 1663880 5646248 1610904 5698784 +1610928 5698816 1610920 5699248 1611328 5699264 1610904 5698784 +1611328 5699264 1614680 5707680 1663880 5646248 1610904 5698784 +1663880 5646248 1601624 5681136 1610904 5698784 1611328 5699264 +1663880 5646248 1611352 5699232 1611328 5699264 1614680 5707680 +1663880 5646248 1611352 5699232 1614680 5707680 1614696 5707712 +1611328 5699264 1614648 5707656 1614680 5707680 1611352 5699232 +1611328 5699264 1614576 5707608 1614648 5707656 1611352 5699232 +1614648 5707656 1614680 5707680 1611352 5699232 1614576 5707608 +1611352 5699232 1610904 5698784 1611328 5699264 1614576 5707608 +1614680 5707680 1663880 5646248 1611352 5699232 1614648 5707656 +1663880 5646248 1610904 5698784 1611352 5699232 1614680 5707680 +1610904 5698784 1611352 5699232 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1611352 5699232 +1610904 5698784 1611328 5699264 1611352 5699232 1601624 5681136 +1611352 5699232 1614680 5707680 1663880 5646248 1601624 5681136 +1610904 5698784 1611352 5699232 1601624 5681136 1610848 5698768 +1611328 5699264 1611264 5699520 1614576 5707608 1611352 5699232 +1614576 5707608 1614648 5707656 1611352 5699232 1611264 5699520 +1611328 5699264 1611288 5699384 1611264 5699520 1611352 5699232 +1611328 5699264 1611288 5699384 1611352 5699232 1610904 5698784 +1611264 5699520 1613152 5707048 1614576 5707608 1611352 5699232 +1611264 5699520 1614576 5707608 1611352 5699232 1611288 5699384 +1611328 5699264 1611352 5699232 1610904 5698784 1610928 5698816 +1611328 5699264 1611352 5699232 1610928 5698816 1610920 5699248 +1611328 5699264 1611352 5699232 1610920 5699248 1611288 5699384 +1611328 5699264 1611288 5699384 1611352 5699232 1610920 5699248 +1611352 5699232 1601624 5681136 1610904 5698784 1610928 5698816 +1611352 5699232 1610904 5698784 1610928 5698816 1610920 5699248 +1663880 5646248 1611400 5699192 1614680 5707680 1614696 5707712 +1614680 5707680 1611400 5699192 1611352 5699232 1614648 5707656 +1611352 5699232 1614576 5707608 1614648 5707656 1611400 5699192 +1611352 5699232 1611264 5699520 1614576 5707608 1611400 5699192 +1614576 5707608 1614648 5707656 1611400 5699192 1611264 5699520 +1614648 5707656 1614680 5707680 1611400 5699192 1614576 5707608 +1611400 5699192 1663880 5646248 1611352 5699232 1611264 5699520 +1611352 5699232 1611400 5699192 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1611400 5699192 +1611352 5699232 1611264 5699520 1611400 5699192 1601624 5681136 +1611400 5699192 1614680 5707680 1663880 5646248 1601624 5681136 +1611264 5699520 1613152 5707048 1614576 5707608 1611400 5699192 +1611352 5699232 1611400 5699192 1601624 5681136 1610904 5698784 +1611352 5699232 1611400 5699192 1610904 5698784 1610928 5698816 +1611352 5699232 1611264 5699520 1611400 5699192 1610928 5698816 +1611400 5699192 1663880 5646248 1601624 5681136 1610904 5698784 +1601624 5681136 1610848 5698768 1610904 5698784 1611400 5699192 +1611400 5699192 1601624 5681136 1610904 5698784 1610928 5698816 +1611352 5699232 1611288 5699384 1611264 5699520 1611400 5699192 +1611264 5699520 1614576 5707608 1611400 5699192 1611288 5699384 +1611352 5699232 1611328 5699264 1611288 5699384 1611400 5699192 +1611352 5699232 1611328 5699264 1611400 5699192 1610928 5698816 +1611288 5699384 1611264 5699520 1611400 5699192 1611328 5699264 +1614680 5707680 1663880 5646248 1611400 5699192 1614648 5707656 +1611352 5699232 1611400 5699192 1610928 5698816 1610920 5699248 +1663880 5646248 1611424 5699184 1614680 5707680 1614696 5707712 +1611400 5699192 1611424 5699184 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1611424 5699184 +1611400 5699192 1611424 5699184 1601624 5681136 1610904 5698784 +1611424 5699184 1663880 5646248 1601624 5681136 1610904 5698784 +1601624 5681136 1610848 5698768 1610904 5698784 1611424 5699184 +1611400 5699192 1611424 5699184 1610904 5698784 1610928 5698816 +1611400 5699192 1611424 5699184 1610928 5698816 1611352 5699232 +1611424 5699184 1601624 5681136 1610904 5698784 1610928 5698816 +1611400 5699192 1614680 5707680 1611424 5699184 1610928 5698816 +1614680 5707680 1611424 5699184 1611400 5699192 1614648 5707656 +1611400 5699192 1614576 5707608 1614648 5707656 1611424 5699184 +1611400 5699192 1611264 5699520 1614576 5707608 1611424 5699184 +1611400 5699192 1611288 5699384 1611264 5699520 1611424 5699184 +1611264 5699520 1614576 5707608 1611424 5699184 1611288 5699384 +1614576 5707608 1614648 5707656 1611424 5699184 1611264 5699520 +1611264 5699520 1613152 5707048 1614576 5707608 1611424 5699184 +1611400 5699192 1611328 5699264 1611288 5699384 1611424 5699184 +1611288 5699384 1611264 5699520 1611424 5699184 1611328 5699264 +1611400 5699192 1611352 5699232 1611328 5699264 1611424 5699184 +1611328 5699264 1611288 5699384 1611424 5699184 1611352 5699232 +1611424 5699184 1610928 5698816 1611400 5699192 1611352 5699232 +1614648 5707656 1614680 5707680 1611424 5699184 1614576 5707608 +1611424 5699184 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1611424 5699184 1614648 5707656 +1663880 5646248 1611448 5699192 1614680 5707680 1614696 5707712 +1611424 5699184 1611448 5699192 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1611448 5699192 +1611424 5699184 1611448 5699192 1601624 5681136 1610904 5698784 +1611424 5699184 1611448 5699192 1610904 5698784 1610928 5698816 +1611448 5699192 1601624 5681136 1610904 5698784 1610928 5698816 +1601624 5681136 1610848 5698768 1610904 5698784 1611448 5699192 +1611424 5699184 1611448 5699192 1610928 5698816 1611400 5699192 +1611448 5699192 1663880 5646248 1601624 5681136 1610904 5698784 +1611424 5699184 1614680 5707680 1611448 5699192 1610928 5698816 +1614680 5707680 1611448 5699192 1611424 5699184 1614648 5707656 +1611424 5699184 1614576 5707608 1614648 5707656 1611448 5699192 +1611424 5699184 1611264 5699520 1614576 5707608 1611448 5699192 +1611424 5699184 1611288 5699384 1611264 5699520 1611448 5699192 +1611424 5699184 1611328 5699264 1611288 5699384 1611448 5699192 +1611288 5699384 1611264 5699520 1611448 5699192 1611328 5699264 +1611264 5699520 1614576 5707608 1611448 5699192 1611288 5699384 +1611264 5699520 1613152 5707048 1614576 5707608 1611448 5699192 +1611424 5699184 1611352 5699232 1611328 5699264 1611448 5699192 +1611328 5699264 1611288 5699384 1611448 5699192 1611352 5699232 +1611424 5699184 1611400 5699192 1611352 5699232 1611448 5699192 +1611352 5699232 1611328 5699264 1611448 5699192 1611400 5699192 +1614576 5707608 1614648 5707656 1611448 5699192 1611264 5699520 +1611448 5699192 1610928 5698816 1611424 5699184 1611400 5699192 +1614648 5707656 1614680 5707680 1611448 5699192 1614576 5707608 +1611448 5699192 1614680 5707680 1663880 5646248 1601624 5681136 +1614680 5707680 1663880 5646248 1611448 5699192 1614648 5707656 +1663880 5646248 1611528 5699256 1614680 5707680 1614696 5707712 +1611448 5699192 1611528 5699256 1663880 5646248 1601624 5681136 +1663880 5646248 1663776 5646144 1601624 5681136 1611528 5699256 +1611448 5699192 1611528 5699256 1601624 5681136 1610904 5698784 +1611448 5699192 1614680 5707680 1611528 5699256 1601624 5681136 +1614680 5707680 1611528 5699256 1611448 5699192 1614648 5707656 +1611448 5699192 1614576 5707608 1614648 5707656 1611528 5699256 +1611448 5699192 1611264 5699520 1614576 5707608 1611528 5699256 +1611448 5699192 1611288 5699384 1611264 5699520 1611528 5699256 +1611448 5699192 1611328 5699264 1611288 5699384 1611528 5699256 +1611448 5699192 1611352 5699232 1611328 5699264 1611528 5699256 +1611328 5699264 1611288 5699384 1611528 5699256 1611352 5699232 +1611288 5699384 1611264 5699520 1611528 5699256 1611328 5699264 +1611264 5699520 1613152 5707048 1614576 5707608 1611528 5699256 +1613152 5707048 1613240 5707104 1614576 5707608 1611528 5699256 +1611264 5699520 1613096 5707024 1613152 5707048 1611528 5699256 +1611264 5699520 1612848 5706920 1613096 5707024 1611528 5699256 +1611264 5699520 1609512 5702904 1612848 5706920 1611528 5699256 +1613096 5707024 1613152 5707048 1611528 5699256 1612848 5706920 +1613152 5707048 1614576 5707608 1611528 5699256 1613096 5707024 +1611448 5699192 1611400 5699192 1611352 5699232 1611528 5699256 +1611264 5699520 1612848 5706920 1611528 5699256 1611288 5699384 +1614576 5707608 1614648 5707656 1611528 5699256 1613152 5707048 +1611528 5699256 1601624 5681136 1611448 5699192 1611352 5699232 +1614648 5707656 1614680 5707680 1611528 5699256 1614576 5707608 +1663880 5646248 1601624 5681136 1611528 5699256 1614696 5707712 +1611528 5699256 1614648 5707656 1614680 5707680 1614696 5707712 +1612848 5706920 1612992 5706984 1613096 5707024 1611528 5699256 +1663880 5646248 1611528 5699256 1614696 5707712 1663944 5646256 +1614696 5707712 1611560 5699312 1611528 5699256 1614680 5707680 +1614696 5707712 1663880 5646248 1611560 5699312 1614680 5707680 +1611528 5699256 1611560 5699312 1663880 5646248 1601624 5681136 +1611560 5699312 1663880 5646248 1611528 5699256 1614680 5707680 +1611528 5699256 1614648 5707656 1614680 5707680 1611560 5699312 +1614680 5707680 1614696 5707712 1611560 5699312 1614648 5707656 +1611528 5699256 1614576 5707608 1614648 5707656 1611560 5699312 +1611528 5699256 1613152 5707048 1614576 5707608 1611560 5699312 +1613152 5707048 1613240 5707104 1614576 5707608 1611560 5699312 +1611528 5699256 1613096 5707024 1613152 5707048 1611560 5699312 +1611528 5699256 1612848 5706920 1613096 5707024 1611560 5699312 +1611528 5699256 1611264 5699520 1612848 5706920 1611560 5699312 +1611264 5699520 1609512 5702904 1612848 5706920 1611560 5699312 +1612848 5706920 1613096 5707024 1611560 5699312 1611264 5699520 +1613096 5707024 1613152 5707048 1611560 5699312 1612848 5706920 +1611528 5699256 1611288 5699384 1611264 5699520 1611560 5699312 +1611528 5699256 1611328 5699264 1611288 5699384 1611560 5699312 +1611528 5699256 1611352 5699232 1611328 5699264 1611560 5699312 +1611264 5699520 1612848 5706920 1611560 5699312 1611288 5699384 +1611288 5699384 1611264 5699520 1611560 5699312 1611328 5699264 +1613152 5707048 1614576 5707608 1611560 5699312 1613096 5707024 +1614576 5707608 1614648 5707656 1611560 5699312 1613152 5707048 +1611528 5699256 1611328 5699264 1611560 5699312 1663880 5646248 +1614648 5707656 1614680 5707680 1611560 5699312 1614576 5707608 +1612848 5706920 1612992 5706984 1613096 5707024 1611560 5699312 +1663880 5646248 1611560 5699312 1614696 5707712 1663944 5646256 +1611264 5699520 1611552 5699400 1611560 5699312 1611288 5699384 +1611552 5699400 1612848 5706920 1611560 5699312 1611288 5699384 +1611264 5699520 1612848 5706920 1611552 5699400 1611288 5699384 +1612848 5706920 1611552 5699400 1611264 5699520 1609512 5702904 +1612848 5706920 1611560 5699312 1611552 5699400 1609512 5702904 +1611552 5699400 1611288 5699384 1611264 5699520 1609512 5702904 +1612848 5706920 1611552 5699400 1609512 5702904 1611832 5706704 +1611560 5699312 1611552 5699400 1612848 5706920 1613096 5707024 +1611560 5699312 1611288 5699384 1611552 5699400 1613096 5707024 +1611552 5699400 1609512 5702904 1612848 5706920 1613096 5707024 +1611560 5699312 1611552 5699400 1613096 5707024 1613152 5707048 +1611560 5699312 1611288 5699384 1611552 5699400 1613152 5707048 +1611552 5699400 1612848 5706920 1613096 5707024 1613152 5707048 +1611560 5699312 1611328 5699264 1611288 5699384 1611552 5699400 +1611560 5699312 1611528 5699256 1611328 5699264 1611552 5699400 +1611528 5699256 1611352 5699232 1611328 5699264 1611552 5699400 +1611560 5699312 1611528 5699256 1611552 5699400 1613152 5707048 +1611288 5699384 1611264 5699520 1611552 5699400 1611328 5699264 +1611328 5699264 1611288 5699384 1611552 5699400 1611528 5699256 +1611560 5699312 1611552 5699400 1613152 5707048 1614576 5707608 +1611560 5699312 1611528 5699256 1611552 5699400 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1611552 5699400 +1611552 5699400 1613096 5707024 1613152 5707048 1614576 5707608 +1611560 5699312 1611552 5699400 1614576 5707608 1614648 5707656 +1611560 5699312 1611528 5699256 1611552 5699400 1614648 5707656 +1611552 5699400 1613152 5707048 1614576 5707608 1614648 5707656 +1611560 5699312 1611552 5699400 1614648 5707656 1614680 5707680 +1611560 5699312 1611552 5699400 1614680 5707680 1614696 5707712 +1611560 5699312 1611528 5699256 1611552 5699400 1614680 5707680 +1611552 5699400 1614576 5707608 1614648 5707656 1614680 5707680 +1611264 5699520 1609488 5702848 1609512 5702904 1611552 5699400 +1612848 5706920 1612992 5706984 1613096 5707024 1611552 5699400 +1611552 5699400 1611528 5699488 1612848 5706920 1613096 5707024 +1611552 5699400 1609512 5702904 1611528 5699488 1613096 5707024 +1611528 5699488 1609512 5702904 1612848 5706920 1613096 5707024 +1612848 5706920 1611528 5699488 1609512 5702904 1611832 5706704 +1609512 5702904 1611528 5699488 1611552 5699400 1611264 5699520 +1611528 5699488 1613096 5707024 1611552 5699400 1611264 5699520 +1611552 5699400 1611288 5699384 1611264 5699520 1611528 5699488 +1611552 5699400 1611288 5699384 1611528 5699488 1613096 5707024 +1609512 5702904 1612848 5706920 1611528 5699488 1611264 5699520 +1611552 5699400 1611328 5699264 1611288 5699384 1611528 5699488 +1611264 5699520 1609512 5702904 1611528 5699488 1611288 5699384 +1611552 5699400 1611528 5699488 1613096 5707024 1613152 5707048 +1611528 5699488 1612848 5706920 1613096 5707024 1613152 5707048 +1611552 5699400 1611288 5699384 1611528 5699488 1613152 5707048 +1611552 5699400 1611528 5699488 1613152 5707048 1614576 5707608 +1611552 5699400 1611288 5699384 1611528 5699488 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1611528 5699488 +1611528 5699488 1613096 5707024 1613152 5707048 1614576 5707608 +1611552 5699400 1611528 5699488 1614576 5707608 1614648 5707656 +1609512 5702904 1611528 5699488 1611264 5699520 1609488 5702848 +1609512 5702904 1612848 5706920 1611528 5699488 1609488 5702848 +1611528 5699488 1611288 5699384 1611264 5699520 1609488 5702848 +1611264 5699520 1609408 5702768 1609488 5702848 1611528 5699488 +1612848 5706920 1612992 5706984 1613096 5707024 1611528 5699488 +1611528 5699488 1611480 5699576 1612848 5706920 1613096 5707024 +1611528 5699488 1611480 5699576 1613096 5707024 1613152 5707048 +1611480 5699576 1612848 5706920 1613096 5707024 1613152 5707048 +1611528 5699488 1609512 5702904 1611480 5699576 1613152 5707048 +1609512 5702904 1611480 5699576 1611528 5699488 1609488 5702848 +1611480 5699576 1613152 5707048 1611528 5699488 1609488 5702848 +1611480 5699576 1609512 5702904 1612848 5706920 1613096 5707024 +1609512 5702904 1612848 5706920 1611480 5699576 1609488 5702848 +1612848 5706920 1611480 5699576 1609512 5702904 1611832 5706704 +1611528 5699488 1611480 5699576 1613152 5707048 1614576 5707608 +1611480 5699576 1613096 5707024 1613152 5707048 1614576 5707608 +1611528 5699488 1609488 5702848 1611480 5699576 1614576 5707608 +1613152 5707048 1613240 5707104 1614576 5707608 1611480 5699576 +1611528 5699488 1611480 5699576 1614576 5707608 1611552 5699400 +1611528 5699488 1611264 5699520 1609488 5702848 1611480 5699576 +1611528 5699488 1611264 5699520 1611480 5699576 1614576 5707608 +1609488 5702848 1609512 5702904 1611480 5699576 1611264 5699520 +1611528 5699488 1611288 5699384 1611264 5699520 1611480 5699576 +1611528 5699488 1611552 5699400 1611288 5699384 1611480 5699576 +1611528 5699488 1611288 5699384 1611480 5699576 1614576 5707608 +1611264 5699520 1609408 5702768 1609488 5702848 1611480 5699576 +1611264 5699520 1609488 5702848 1611480 5699576 1611288 5699384 +1612848 5706920 1612992 5706984 1613096 5707024 1611480 5699576 +1611480 5699576 1611440 5699632 1609488 5702848 1609512 5702904 +1611480 5699576 1611264 5699520 1611440 5699632 1609512 5702904 +1611480 5699576 1611440 5699632 1609512 5702904 1612848 5706920 +1611440 5699632 1609488 5702848 1609512 5702904 1612848 5706920 +1611480 5699576 1611440 5699632 1612848 5706920 1613096 5707024 +1611480 5699576 1611440 5699632 1613096 5707024 1613152 5707048 +1611480 5699576 1611440 5699632 1613152 5707048 1614576 5707608 +1611440 5699632 1612848 5706920 1613096 5707024 1613152 5707048 +1611480 5699576 1611264 5699520 1611440 5699632 1613152 5707048 +1611440 5699632 1611264 5699520 1609488 5702848 1609512 5702904 +1611440 5699632 1609512 5702904 1612848 5706920 1613096 5707024 +1609512 5702904 1611832 5706704 1612848 5706920 1611440 5699632 +1609488 5702848 1611440 5699632 1611264 5699520 1609408 5702768 +1609488 5702848 1609512 5702904 1611440 5699632 1609408 5702768 +1611440 5699632 1611480 5699576 1611264 5699520 1609408 5702768 +1611264 5699520 1608976 5702256 1609408 5702768 1611440 5699632 +1608976 5702256 1609064 5702472 1609408 5702768 1611440 5699632 +1611264 5699520 1608976 5702256 1611440 5699632 1611480 5699576 +1609408 5702768 1609488 5702848 1611440 5699632 1608976 5702256 +1611264 5699520 1611440 5699632 1611480 5699576 1611288 5699384 +1611264 5699520 1608904 5699824 1608976 5702256 1611440 5699632 +1612848 5706920 1612992 5706984 1613096 5707024 1611440 5699632 +1611264 5699520 1611408 5699664 1611440 5699632 1611480 5699576 +1611440 5699632 1611408 5699664 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1611408 5699664 +1611440 5699632 1611264 5699520 1611408 5699664 1609408 5702768 +1611408 5699664 1611264 5699520 1608976 5702256 1609408 5702768 +1611440 5699632 1611408 5699664 1609408 5702768 1609488 5702848 +1611440 5699632 1611408 5699664 1609488 5702848 1609512 5702904 +1611440 5699632 1611408 5699664 1609512 5702904 1612848 5706920 +1611408 5699664 1609488 5702848 1609512 5702904 1612848 5706920 +1611440 5699632 1611408 5699664 1612848 5706920 1613096 5707024 +1611440 5699632 1611264 5699520 1611408 5699664 1612848 5706920 +1609512 5702904 1611832 5706704 1612848 5706920 1611408 5699664 +1611408 5699664 1608976 5702256 1609408 5702768 1609488 5702848 +1611408 5699664 1609408 5702768 1609488 5702848 1609512 5702904 +1608976 5702256 1611408 5699664 1611264 5699520 1608904 5699824 +1611264 5699520 1610832 5699304 1608904 5699824 1611408 5699664 +1608976 5702256 1609408 5702768 1611408 5699664 1608904 5699824 +1611408 5699664 1611440 5699632 1611264 5699520 1610832 5699304 +1608976 5702256 1611408 5699664 1608904 5699824 1608856 5702128 +1608904 5699824 1608976 5702256 1611408 5699664 1610832 5699304 +1610832 5699304 1608960 5699744 1608904 5699824 1611408 5699664 +1611264 5699520 1610856 5699312 1610832 5699304 1611408 5699664 +1610832 5699304 1608904 5699824 1611408 5699664 1610856 5699312 +1611264 5699520 1610880 5699296 1610856 5699312 1611408 5699664 +1611264 5699520 1610856 5699312 1611408 5699664 1611440 5699632 +1611408 5699664 1611384 5699672 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1611384 5699672 +1611408 5699664 1608904 5699824 1611384 5699672 1609408 5702768 +1611384 5699672 1608904 5699824 1608976 5702256 1609408 5702768 +1611408 5699664 1611384 5699672 1609408 5702768 1609488 5702848 +1611384 5699672 1608976 5702256 1609408 5702768 1609488 5702848 +1611408 5699664 1608904 5699824 1611384 5699672 1609488 5702848 +1608976 5702256 1611384 5699672 1608904 5699824 1608856 5702128 +1611408 5699664 1611384 5699672 1609488 5702848 1609512 5702904 +1611408 5699664 1611384 5699672 1609512 5702904 1612848 5706920 +1611408 5699664 1608904 5699824 1611384 5699672 1609512 5702904 +1611384 5699672 1609408 5702768 1609488 5702848 1609512 5702904 +1608904 5699824 1611384 5699672 1611408 5699664 1610832 5699304 +1611408 5699664 1610856 5699312 1610832 5699304 1611384 5699672 +1611384 5699672 1609512 5702904 1611408 5699664 1610856 5699312 +1608904 5699824 1608976 5702256 1611384 5699672 1610832 5699304 +1610832 5699304 1608904 5699824 1611384 5699672 1610856 5699312 +1608904 5699824 1611384 5699672 1610832 5699304 1608960 5699744 +1611408 5699664 1611264 5699520 1610856 5699312 1611384 5699672 +1610856 5699312 1610832 5699304 1611384 5699672 1611264 5699520 +1611264 5699520 1610880 5699296 1610856 5699312 1611384 5699672 +1611408 5699664 1611264 5699520 1611384 5699672 1609512 5702904 +1611408 5699664 1611440 5699632 1611264 5699520 1611384 5699672 +1611440 5699632 1611480 5699576 1611264 5699520 1611384 5699672 +1611408 5699664 1611440 5699632 1611384 5699672 1609512 5702904 +1611264 5699520 1610856 5699312 1611384 5699672 1611440 5699632 +1611384 5699672 1611344 5699672 1608904 5699824 1608976 5702256 +1611384 5699672 1611344 5699672 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1611344 5699672 +1611384 5699672 1611344 5699672 1609408 5702768 1609488 5702848 +1611344 5699672 1608976 5702256 1609408 5702768 1609488 5702848 +1611384 5699672 1610832 5699304 1611344 5699672 1609488 5702848 +1611344 5699672 1608904 5699824 1608976 5702256 1609408 5702768 +1611344 5699672 1610832 5699304 1608904 5699824 1608976 5702256 +1611384 5699672 1611344 5699672 1609488 5702848 1609512 5702904 +1608904 5699824 1608856 5702128 1608976 5702256 1611344 5699672 +1610832 5699304 1611344 5699672 1611384 5699672 1610856 5699312 +1611384 5699672 1611264 5699520 1610856 5699312 1611344 5699672 +1611264 5699520 1610880 5699296 1610856 5699312 1611344 5699672 +1611344 5699672 1609488 5702848 1611384 5699672 1611264 5699520 +1610832 5699304 1608904 5699824 1611344 5699672 1610856 5699312 +1610856 5699312 1610832 5699304 1611344 5699672 1611264 5699520 +1608904 5699824 1611344 5699672 1610832 5699304 1608960 5699744 +1611384 5699672 1611440 5699632 1611264 5699520 1611344 5699672 +1611264 5699520 1610856 5699312 1611344 5699672 1611440 5699632 +1611440 5699632 1611480 5699576 1611264 5699520 1611344 5699672 +1611384 5699672 1611408 5699664 1611440 5699632 1611344 5699672 +1611384 5699672 1611440 5699632 1611344 5699672 1609488 5702848 +1611344 5699672 1611304 5699664 1608904 5699824 1608976 5702256 +1611344 5699672 1611304 5699664 1608976 5702256 1609408 5702768 +1608976 5702256 1609064 5702472 1609408 5702768 1611304 5699664 +1611344 5699672 1611304 5699664 1609408 5702768 1609488 5702848 +1611344 5699672 1611304 5699664 1609488 5702848 1611384 5699672 +1611304 5699664 1608976 5702256 1609408 5702768 1609488 5702848 +1611304 5699664 1608904 5699824 1608976 5702256 1609408 5702768 +1611344 5699672 1610832 5699304 1611304 5699664 1609488 5702848 +1610832 5699304 1611304 5699664 1611344 5699672 1610856 5699312 +1611304 5699664 1609488 5702848 1611344 5699672 1610856 5699312 +1611304 5699664 1610832 5699304 1608904 5699824 1608976 5702256 +1610832 5699304 1608904 5699824 1611304 5699664 1610856 5699312 +1608904 5699824 1608856 5702128 1608976 5702256 1611304 5699664 +1611344 5699672 1611264 5699520 1610856 5699312 1611304 5699664 +1611344 5699672 1611440 5699632 1611264 5699520 1611304 5699664 +1611264 5699520 1610880 5699296 1610856 5699312 1611304 5699664 +1611344 5699672 1611264 5699520 1611304 5699664 1609488 5702848 +1610856 5699312 1610832 5699304 1611304 5699664 1611264 5699520 +1608904 5699824 1611304 5699664 1610832 5699304 1608960 5699744 +1610856 5699312 1611256 5699616 1611264 5699520 1610880 5699296 +1611304 5699664 1611256 5699616 1610856 5699312 1610832 5699304 +1611304 5699664 1611264 5699520 1611256 5699616 1610832 5699304 +1611304 5699664 1611256 5699616 1610832 5699304 1608904 5699824 +1611256 5699616 1610856 5699312 1610832 5699304 1608904 5699824 +1611304 5699664 1611256 5699616 1608904 5699824 1608976 5702256 +1611304 5699664 1611264 5699520 1611256 5699616 1608904 5699824 +1611256 5699616 1611264 5699520 1610856 5699312 1610832 5699304 +1611264 5699520 1611256 5699616 1611304 5699664 1611344 5699672 +1611264 5699520 1611256 5699616 1611344 5699672 1611440 5699632 +1611256 5699616 1608904 5699824 1611304 5699664 1611344 5699672 +1610832 5699304 1608960 5699744 1608904 5699824 1611256 5699616 +1611264 5699520 1610856 5699312 1611256 5699616 1611344 5699672 +1613152 5707048 1612088 5702120 1611480 5699576 1611440 5699632 +1613152 5707048 1612088 5702120 1611440 5699632 1613096 5707024 +1612088 5702120 1611480 5699576 1611440 5699632 1613096 5707024 +1611440 5699632 1612848 5706920 1613096 5707024 1612088 5702120 +1611440 5699632 1612848 5706920 1612088 5702120 1611480 5699576 +1613096 5707024 1613152 5707048 1612088 5702120 1612848 5706920 +1611440 5699632 1611408 5699664 1612848 5706920 1612088 5702120 +1611440 5699632 1611408 5699664 1612088 5702120 1611480 5699576 +1611408 5699664 1609512 5702904 1612848 5706920 1612088 5702120 +1612848 5706920 1613096 5707024 1612088 5702120 1609512 5702904 +1611408 5699664 1611384 5699672 1609512 5702904 1612088 5702120 +1609512 5702904 1612848 5706920 1612088 5702120 1611384 5699672 +1611408 5699664 1611384 5699672 1612088 5702120 1611440 5699632 +1612088 5702120 1614576 5707608 1611480 5699576 1611440 5699632 +1614576 5707608 1612088 5702120 1613152 5707048 1613240 5707104 +1609512 5702904 1611832 5706704 1612848 5706920 1612088 5702120 +1611832 5706704 1612792 5706920 1612848 5706920 1612088 5702120 +1609512 5702904 1611832 5706704 1612088 5702120 1611384 5699672 +1612848 5706920 1613096 5707024 1612088 5702120 1611832 5706704 +1609512 5702904 1611784 5706704 1611832 5706704 1612088 5702120 +1609512 5702904 1611784 5706704 1612088 5702120 1611384 5699672 +1609512 5702904 1609480 5702960 1611784 5706704 1612088 5702120 +1609480 5702960 1609416 5703016 1611784 5706704 1612088 5702120 +1609512 5702904 1609480 5702960 1612088 5702120 1611384 5699672 +1611784 5706704 1611832 5706704 1612088 5702120 1609480 5702960 +1611832 5706704 1612848 5706920 1612088 5702120 1611784 5706704 +1611480 5699576 1612088 5702120 1614576 5707608 1611528 5699488 +1611480 5699576 1611440 5699632 1612088 5702120 1611528 5699488 +1614576 5707608 1611552 5699400 1611528 5699488 1612088 5702120 +1611528 5699488 1611480 5699576 1612088 5702120 1611552 5699400 +1611384 5699672 1609488 5702848 1609512 5702904 1612088 5702120 +1609512 5702904 1609480 5702960 1612088 5702120 1609488 5702848 +1611384 5699672 1609488 5702848 1612088 5702120 1611408 5699664 +1611384 5699672 1611344 5699672 1609488 5702848 1612088 5702120 +1611384 5699672 1611344 5699672 1612088 5702120 1611408 5699664 +1611344 5699672 1611304 5699664 1609488 5702848 1612088 5702120 +1611304 5699664 1609408 5702768 1609488 5702848 1612088 5702120 +1611304 5699664 1609408 5702768 1612088 5702120 1611344 5699672 +1611304 5699664 1608976 5702256 1609408 5702768 1612088 5702120 +1608976 5702256 1609064 5702472 1609408 5702768 1612088 5702120 +1611304 5699664 1608976 5702256 1612088 5702120 1611344 5699672 +1609408 5702768 1609488 5702848 1612088 5702120 1608976 5702256 +1611304 5699664 1608904 5699824 1608976 5702256 1612088 5702120 +1611344 5699672 1611304 5699664 1612088 5702120 1611384 5699672 +1609488 5702848 1609512 5702904 1612088 5702120 1609408 5702768 +1614576 5707608 1614648 5707656 1611552 5699400 1612088 5702120 +1611552 5699400 1611528 5699488 1612088 5702120 1614648 5707656 +1614648 5707656 1614680 5707680 1611552 5699400 1612088 5702120 +1611552 5699400 1611528 5699488 1612088 5702120 1614680 5707680 +1614648 5707656 1614680 5707680 1612088 5702120 1614576 5707608 +1614680 5707680 1611560 5699312 1611552 5699400 1612088 5702120 +1614680 5707680 1614696 5707712 1611560 5699312 1612088 5702120 +1611552 5699400 1611528 5699488 1612088 5702120 1611560 5699312 +1614680 5707680 1611560 5699312 1612088 5702120 1614648 5707656 +1614576 5707608 1614648 5707656 1612088 5702120 1613240 5707104 +1613152 5707048 1613240 5707104 1612088 5702120 1613096 5707024 +1612848 5706920 1612992 5706984 1613096 5707024 1612088 5702120 +1614576 5707608 1612088 5702120 1613240 5707104 1614512 5707600 +1611560 5699312 1612120 5702096 1614680 5707680 1614696 5707712 +1614680 5707680 1612120 5702096 1612088 5702120 1614648 5707656 +1612088 5702120 1614576 5707608 1614648 5707656 1612120 5702096 +1614648 5707656 1614680 5707680 1612120 5702096 1614576 5707608 +1612088 5702120 1612120 5702096 1611560 5699312 1611552 5699400 +1612088 5702120 1612120 5702096 1611552 5699400 1611528 5699488 +1612088 5702120 1612120 5702096 1611528 5699488 1611480 5699576 +1612088 5702120 1612120 5702096 1611480 5699576 1611440 5699632 +1612088 5702120 1612120 5702096 1611440 5699632 1611408 5699664 +1612088 5702120 1612120 5702096 1611408 5699664 1611384 5699672 +1612120 5702096 1611440 5699632 1611408 5699664 1611384 5699672 +1612088 5702120 1612120 5702096 1611384 5699672 1611344 5699672 +1612120 5702096 1611408 5699664 1611384 5699672 1611344 5699672 +1612120 5702096 1611480 5699576 1611440 5699632 1611408 5699664 +1612088 5702120 1612120 5702096 1611344 5699672 1611304 5699664 +1612120 5702096 1611528 5699488 1611480 5699576 1611440 5699632 +1612120 5702096 1611552 5699400 1611528 5699488 1611480 5699576 +1612120 5702096 1611560 5699312 1611552 5699400 1611528 5699488 +1612088 5702120 1613240 5707104 1614576 5707608 1612120 5702096 +1612088 5702120 1613152 5707048 1613240 5707104 1612120 5702096 +1614576 5707608 1614648 5707656 1612120 5702096 1613240 5707104 +1613240 5707104 1614576 5707608 1612120 5702096 1613152 5707048 +1612120 5702096 1611344 5699672 1612088 5702120 1613152 5707048 +1612088 5702120 1613096 5707024 1613152 5707048 1612120 5702096 +1612088 5702120 1612848 5706920 1613096 5707024 1612120 5702096 +1612088 5702120 1611832 5706704 1612848 5706920 1612120 5702096 +1613152 5707048 1613240 5707104 1612120 5702096 1613096 5707024 +1612088 5702120 1612848 5706920 1612120 5702096 1611344 5699672 +1613096 5707024 1613152 5707048 1612120 5702096 1612848 5706920 +1612120 5702096 1614680 5707680 1611560 5699312 1611552 5699400 +1614680 5707680 1611560 5699312 1612120 5702096 1614648 5707656 +1612848 5706920 1612992 5706984 1613096 5707024 1612120 5702096 +1613240 5707104 1614512 5707600 1614576 5707608 1612120 5702096 +1611560 5699312 1612128 5702072 1614680 5707680 1614696 5707712 +1612120 5702096 1612128 5702072 1611560 5699312 1611552 5699400 +1612120 5702096 1612128 5702072 1611552 5699400 1611528 5699488 +1612120 5702096 1612128 5702072 1611528 5699488 1611480 5699576 +1612120 5702096 1612128 5702072 1611480 5699576 1611440 5699632 +1612120 5702096 1612128 5702072 1611440 5699632 1611408 5699664 +1612120 5702096 1612128 5702072 1611408 5699664 1611384 5699672 +1612120 5702096 1612128 5702072 1611384 5699672 1611344 5699672 +1612128 5702072 1611408 5699664 1611384 5699672 1611344 5699672 +1612120 5702096 1612128 5702072 1611344 5699672 1612088 5702120 +1612128 5702072 1611384 5699672 1611344 5699672 1612088 5702120 +1612128 5702072 1611440 5699632 1611408 5699664 1611384 5699672 +1611344 5699672 1611304 5699664 1612088 5702120 1612128 5702072 +1612088 5702120 1612120 5702096 1612128 5702072 1611304 5699664 +1611344 5699672 1611304 5699664 1612128 5702072 1611384 5699672 +1611304 5699664 1608976 5702256 1612088 5702120 1612128 5702072 +1612128 5702072 1611480 5699576 1611440 5699632 1611408 5699664 +1612128 5702072 1611528 5699488 1611480 5699576 1611440 5699632 +1612128 5702072 1611552 5699400 1611528 5699488 1611480 5699576 +1612128 5702072 1611560 5699312 1611552 5699400 1611528 5699488 +1612120 5702096 1614680 5707680 1612128 5702072 1612088 5702120 +1614680 5707680 1612128 5702072 1612120 5702096 1614648 5707656 +1612120 5702096 1614576 5707608 1614648 5707656 1612128 5702072 +1612120 5702096 1613240 5707104 1614576 5707608 1612128 5702072 +1612128 5702072 1612088 5702120 1612120 5702096 1614576 5707608 +1614648 5707656 1614680 5707680 1612128 5702072 1614576 5707608 +1612128 5702072 1614680 5707680 1611560 5699312 1611552 5699400 +1614680 5707680 1611560 5699312 1612128 5702072 1614648 5707656 +1611560 5699312 1612160 5702056 1614680 5707680 1614696 5707712 +1612128 5702072 1612160 5702056 1611560 5699312 1611552 5699400 +1612128 5702072 1612160 5702056 1611552 5699400 1611528 5699488 +1612128 5702072 1612160 5702056 1611528 5699488 1611480 5699576 +1612128 5702072 1612160 5702056 1611480 5699576 1611440 5699632 +1612128 5702072 1612160 5702056 1611440 5699632 1611408 5699664 +1612128 5702072 1612160 5702056 1611408 5699664 1611384 5699672 +1612128 5702072 1612160 5702056 1611384 5699672 1611344 5699672 +1612160 5702056 1611440 5699632 1611408 5699664 1611384 5699672 +1612160 5702056 1611480 5699576 1611440 5699632 1611408 5699664 +1612160 5702056 1611528 5699488 1611480 5699576 1611440 5699632 +1612160 5702056 1611552 5699400 1611528 5699488 1611480 5699576 +1612160 5702056 1611560 5699312 1611552 5699400 1611528 5699488 +1612128 5702072 1614680 5707680 1612160 5702056 1611384 5699672 +1614680 5707680 1612160 5702056 1612128 5702072 1614648 5707656 +1612128 5702072 1614576 5707608 1614648 5707656 1612160 5702056 +1612128 5702072 1612120 5702096 1614576 5707608 1612160 5702056 +1612120 5702096 1613240 5707104 1614576 5707608 1612160 5702056 +1612120 5702096 1613240 5707104 1612160 5702056 1612128 5702072 +1612120 5702096 1613152 5707048 1613240 5707104 1612160 5702056 +1612120 5702096 1613096 5707024 1613152 5707048 1612160 5702056 +1613240 5707104 1614576 5707608 1612160 5702056 1613152 5707048 +1612120 5702096 1613096 5707024 1612160 5702056 1612128 5702072 +1613152 5707048 1613240 5707104 1612160 5702056 1613096 5707024 +1612120 5702096 1612848 5706920 1613096 5707024 1612160 5702056 +1614576 5707608 1614648 5707656 1612160 5702056 1613240 5707104 +1612160 5702056 1611384 5699672 1612128 5702072 1612120 5702096 +1614648 5707656 1614680 5707680 1612160 5702056 1614576 5707608 +1614680 5707680 1611560 5699312 1612160 5702056 1614648 5707656 +1612160 5702056 1614680 5707680 1611560 5699312 1611552 5699400 +1613240 5707104 1614512 5707600 1614576 5707608 1612160 5702056 +1611560 5699312 1612184 5702056 1614680 5707680 1614696 5707712 +1614680 5707680 1612184 5702056 1612160 5702056 1614648 5707656 +1614680 5707680 1611560 5699312 1612184 5702056 1614648 5707656 +1612160 5702056 1614576 5707608 1614648 5707656 1612184 5702056 +1612160 5702056 1613240 5707104 1614576 5707608 1612184 5702056 +1612160 5702056 1613152 5707048 1613240 5707104 1612184 5702056 +1612160 5702056 1613096 5707024 1613152 5707048 1612184 5702056 +1612160 5702056 1612120 5702096 1613096 5707024 1612184 5702056 +1613152 5707048 1613240 5707104 1612184 5702056 1613096 5707024 +1612160 5702056 1612128 5702072 1612120 5702096 1612184 5702056 +1613096 5707024 1613152 5707048 1612184 5702056 1612120 5702096 +1612120 5702096 1612848 5706920 1613096 5707024 1612184 5702056 +1612120 5702096 1612088 5702120 1612848 5706920 1612184 5702056 +1612088 5702120 1611832 5706704 1612848 5706920 1612184 5702056 +1612120 5702096 1612088 5702120 1612184 5702056 1612160 5702056 +1613096 5707024 1613152 5707048 1612184 5702056 1612848 5706920 +1612848 5706920 1613096 5707024 1612184 5702056 1612088 5702120 +1613240 5707104 1614576 5707608 1612184 5702056 1613152 5707048 +1614576 5707608 1614648 5707656 1612184 5702056 1613240 5707104 +1614648 5707656 1614680 5707680 1612184 5702056 1614576 5707608 +1612160 5702056 1612184 5702056 1611560 5699312 1611552 5699400 +1612160 5702056 1612184 5702056 1611552 5699400 1611528 5699488 +1612160 5702056 1612184 5702056 1611528 5699488 1611480 5699576 +1612160 5702056 1612184 5702056 1611480 5699576 1611440 5699632 +1612160 5702056 1612184 5702056 1611440 5699632 1611408 5699664 +1612160 5702056 1612184 5702056 1611408 5699664 1611384 5699672 +1612184 5702056 1611480 5699576 1611440 5699632 1611408 5699664 +1612184 5702056 1611528 5699488 1611480 5699576 1611440 5699632 +1612184 5702056 1611552 5699400 1611528 5699488 1611480 5699576 +1612184 5702056 1614680 5707680 1611560 5699312 1611552 5699400 +1612184 5702056 1611560 5699312 1611552 5699400 1611528 5699488 +1612184 5702056 1611408 5699664 1612160 5702056 1612120 5702096 +1612848 5706920 1612992 5706984 1613096 5707024 1612184 5702056 +1613240 5707104 1614512 5707600 1614576 5707608 1612184 5702056 +1611560 5699312 1612208 5702072 1614680 5707680 1614696 5707712 +1614680 5707680 1612208 5702072 1612184 5702056 1614648 5707656 +1614680 5707680 1611560 5699312 1612208 5702072 1614648 5707656 +1612184 5702056 1614576 5707608 1614648 5707656 1612208 5702072 +1614648 5707656 1614680 5707680 1612208 5702072 1614576 5707608 +1612184 5702056 1613240 5707104 1614576 5707608 1612208 5702072 +1612184 5702056 1613152 5707048 1613240 5707104 1612208 5702072 +1612184 5702056 1613096 5707024 1613152 5707048 1612208 5702072 +1612184 5702056 1612848 5706920 1613096 5707024 1612208 5702072 +1613096 5707024 1613152 5707048 1612208 5702072 1612848 5706920 +1612184 5702056 1612088 5702120 1612848 5706920 1612208 5702072 +1612184 5702056 1612120 5702096 1612088 5702120 1612208 5702072 +1612088 5702120 1611832 5706704 1612848 5706920 1612208 5702072 +1612184 5702056 1612160 5702056 1612120 5702096 1612208 5702072 +1612120 5702096 1612088 5702120 1612208 5702072 1612160 5702056 +1612160 5702056 1612128 5702072 1612120 5702096 1612208 5702072 +1612848 5706920 1613096 5707024 1612208 5702072 1612088 5702120 +1612088 5702120 1612848 5706920 1612208 5702072 1612120 5702096 +1613152 5707048 1613240 5707104 1612208 5702072 1613096 5707024 +1613240 5707104 1614576 5707608 1612208 5702072 1613152 5707048 +1614576 5707608 1614648 5707656 1612208 5702072 1613240 5707104 +1612184 5702056 1612208 5702072 1611560 5699312 1611552 5699400 +1612208 5702072 1614680 5707680 1611560 5699312 1611552 5699400 +1612208 5702072 1611552 5699400 1612184 5702056 1612160 5702056 +1612184 5702056 1612208 5702072 1611552 5699400 1611528 5699488 +1612184 5702056 1612208 5702072 1611528 5699488 1611480 5699576 +1612208 5702072 1611560 5699312 1611552 5699400 1611528 5699488 +1612184 5702056 1612160 5702056 1612208 5702072 1611528 5699488 +1612848 5706920 1612992 5706984 1613096 5707024 1612208 5702072 +1613240 5707104 1614512 5707600 1614576 5707608 1612208 5702072 +1611560 5699312 1612232 5702104 1614680 5707680 1614696 5707712 +1612208 5702072 1612232 5702104 1611560 5699312 1611552 5699400 +1612208 5702072 1614680 5707680 1612232 5702104 1611552 5699400 +1614680 5707680 1612232 5702104 1612208 5702072 1614648 5707656 +1612208 5702072 1614576 5707608 1614648 5707656 1612232 5702104 +1612232 5702104 1611552 5699400 1612208 5702072 1614576 5707608 +1614648 5707656 1614680 5707680 1612232 5702104 1614576 5707608 +1612232 5702104 1614680 5707680 1611560 5699312 1611552 5699400 +1614680 5707680 1611560 5699312 1612232 5702104 1614648 5707656 +1612208 5702072 1613240 5707104 1614576 5707608 1612232 5702104 +1614576 5707608 1614648 5707656 1612232 5702104 1613240 5707104 +1612208 5702072 1613240 5707104 1612232 5702104 1611552 5699400 +1612208 5702072 1613152 5707048 1613240 5707104 1612232 5702104 +1612208 5702072 1613152 5707048 1612232 5702104 1611552 5699400 +1612208 5702072 1613096 5707024 1613152 5707048 1612232 5702104 +1612208 5702072 1613096 5707024 1612232 5702104 1611552 5699400 +1612208 5702072 1612848 5706920 1613096 5707024 1612232 5702104 +1612208 5702072 1612848 5706920 1612232 5702104 1611552 5699400 +1612208 5702072 1612088 5702120 1612848 5706920 1612232 5702104 +1612088 5702120 1611832 5706704 1612848 5706920 1612232 5702104 +1611832 5706704 1612792 5706920 1612848 5706920 1612232 5702104 +1612088 5702120 1611784 5706704 1611832 5706704 1612232 5702104 +1612208 5702072 1612088 5702120 1612232 5702104 1611552 5699400 +1612848 5706920 1613096 5707024 1612232 5702104 1611832 5706704 +1612088 5702120 1611832 5706704 1612232 5702104 1612208 5702072 +1612208 5702072 1612120 5702096 1612088 5702120 1612232 5702104 +1612208 5702072 1612160 5702056 1612120 5702096 1612232 5702104 +1612208 5702072 1612120 5702096 1612232 5702104 1611552 5699400 +1612088 5702120 1611832 5706704 1612232 5702104 1612120 5702096 +1613096 5707024 1613152 5707048 1612232 5702104 1612848 5706920 +1613152 5707048 1613240 5707104 1612232 5702104 1613096 5707024 +1613240 5707104 1614576 5707608 1612232 5702104 1613152 5707048 +1612208 5702072 1612232 5702104 1611552 5699400 1611528 5699488 +1612848 5706920 1612992 5706984 1613096 5707024 1612232 5702104 +1613240 5707104 1614512 5707600 1614576 5707608 1612232 5702104 +1614576 5707608 1612256 5702160 1612232 5702104 1613240 5707104 +1614576 5707608 1614648 5707656 1612256 5702160 1613240 5707104 +1612232 5702104 1612256 5702160 1614648 5707656 1614680 5707680 +1612256 5702160 1614576 5707608 1614648 5707656 1614680 5707680 +1612256 5702160 1614680 5707680 1612232 5702104 1613240 5707104 +1612232 5702104 1612256 5702160 1614680 5707680 1611560 5699312 +1614680 5707680 1614696 5707712 1611560 5699312 1612256 5702160 +1612256 5702160 1614648 5707656 1614680 5707680 1611560 5699312 +1612232 5702104 1612256 5702160 1611560 5699312 1611552 5699400 +1612232 5702104 1613240 5707104 1612256 5702160 1611560 5699312 +1612232 5702104 1613152 5707048 1613240 5707104 1612256 5702160 +1613240 5707104 1614576 5707608 1612256 5702160 1613152 5707048 +1612232 5702104 1613152 5707048 1612256 5702160 1611560 5699312 +1612232 5702104 1613096 5707024 1613152 5707048 1612256 5702160 +1612232 5702104 1613096 5707024 1612256 5702160 1611560 5699312 +1612232 5702104 1612848 5706920 1613096 5707024 1612256 5702160 +1612232 5702104 1612848 5706920 1612256 5702160 1611560 5699312 +1612232 5702104 1611832 5706704 1612848 5706920 1612256 5702160 +1611832 5706704 1612792 5706920 1612848 5706920 1612256 5702160 +1612232 5702104 1612088 5702120 1611832 5706704 1612256 5702160 +1612088 5702120 1611784 5706704 1611832 5706704 1612256 5702160 +1612088 5702120 1611784 5706704 1612256 5702160 1612232 5702104 +1612088 5702120 1609480 5702960 1611784 5706704 1612256 5702160 +1612232 5702104 1612088 5702120 1612256 5702160 1611560 5699312 +1611832 5706704 1612848 5706920 1612256 5702160 1611784 5706704 +1612232 5702104 1612120 5702096 1612088 5702120 1612256 5702160 +1612088 5702120 1611784 5706704 1612256 5702160 1612120 5702096 +1612232 5702104 1612120 5702096 1612256 5702160 1611560 5699312 +1612232 5702104 1612208 5702072 1612120 5702096 1612256 5702160 +1612848 5706920 1613096 5707024 1612256 5702160 1611832 5706704 +1613096 5707024 1613152 5707048 1612256 5702160 1612848 5706920 +1613152 5707048 1613240 5707104 1612256 5702160 1613096 5707024 +1612848 5706920 1612992 5706984 1613096 5707024 1612256 5702160 +1614576 5707608 1612256 5702160 1613240 5707104 1614512 5707600 +1612848 5706920 1612256 5702208 1611832 5706704 1612792 5706920 +1611832 5706704 1612256 5702208 1612256 5702160 1611784 5706704 +1612256 5702208 1612848 5706920 1612256 5702160 1611784 5706704 +1611832 5706704 1612848 5706920 1612256 5702208 1611784 5706704 +1612256 5702160 1612088 5702120 1611784 5706704 1612256 5702208 +1612256 5702160 1612120 5702096 1612088 5702120 1612256 5702208 +1612256 5702160 1612120 5702096 1612256 5702208 1612848 5706920 +1612088 5702120 1609480 5702960 1611784 5706704 1612256 5702208 +1609480 5702960 1609416 5703016 1611784 5706704 1612256 5702208 +1612088 5702120 1609512 5702904 1609480 5702960 1612256 5702208 +1612088 5702120 1609480 5702960 1612256 5702208 1612120 5702096 +1611784 5706704 1611832 5706704 1612256 5702208 1609480 5702960 +1612256 5702160 1612232 5702104 1612120 5702096 1612256 5702208 +1612256 5702160 1612256 5702208 1612848 5706920 1613096 5707024 +1612256 5702160 1612120 5702096 1612256 5702208 1613096 5707024 +1612256 5702208 1611832 5706704 1612848 5706920 1613096 5707024 +1612256 5702160 1612256 5702208 1613096 5707024 1613152 5707048 +1612256 5702160 1612120 5702096 1612256 5702208 1613152 5707048 +1612256 5702208 1612848 5706920 1613096 5707024 1613152 5707048 +1612256 5702160 1612256 5702208 1613152 5707048 1613240 5707104 +1612256 5702160 1612120 5702096 1612256 5702208 1613240 5707104 +1612256 5702160 1612256 5702208 1613240 5707104 1614576 5707608 +1612256 5702160 1612120 5702096 1612256 5702208 1614576 5707608 +1612256 5702160 1612256 5702208 1614576 5707608 1614648 5707656 +1612256 5702160 1612256 5702208 1614648 5707656 1614680 5707680 +1612256 5702160 1612120 5702096 1612256 5702208 1614680 5707680 +1612256 5702208 1614576 5707608 1614648 5707656 1614680 5707680 +1612256 5702208 1613240 5707104 1614576 5707608 1614648 5707656 +1612256 5702160 1612256 5702208 1614680 5707680 1611560 5699312 +1612256 5702208 1613096 5707024 1613152 5707048 1613240 5707104 +1612256 5702208 1613152 5707048 1613240 5707104 1614576 5707608 +1612848 5706920 1612992 5706984 1613096 5707024 1612256 5702208 +1613240 5707104 1614512 5707600 1614576 5707608 1612256 5702208 +1611784 5706704 1612224 5702288 1609480 5702960 1609416 5703016 +1609480 5702960 1612224 5702288 1612256 5702208 1612088 5702120 +1612224 5702288 1611784 5706704 1612256 5702208 1612088 5702120 +1609480 5702960 1611784 5706704 1612224 5702288 1612088 5702120 +1609480 5702960 1612224 5702288 1612088 5702120 1609512 5702904 +1612088 5702120 1609488 5702848 1609512 5702904 1612224 5702288 +1609480 5702960 1611784 5706704 1612224 5702288 1609512 5702904 +1612224 5702288 1612256 5702208 1612088 5702120 1609512 5702904 +1612256 5702208 1612120 5702096 1612088 5702120 1612224 5702288 +1612256 5702208 1612224 5702288 1611784 5706704 1611832 5706704 +1612256 5702208 1612088 5702120 1612224 5702288 1611832 5706704 +1612256 5702208 1612224 5702288 1611832 5706704 1612848 5706920 +1611832 5706704 1612792 5706920 1612848 5706920 1612224 5702288 +1612256 5702208 1612224 5702288 1612848 5706920 1613096 5707024 +1612256 5702208 1612088 5702120 1612224 5702288 1613096 5707024 +1612848 5706920 1613096 5707024 1612224 5702288 1612792 5706920 +1612224 5702288 1609480 5702960 1611784 5706704 1611832 5706704 +1611832 5706704 1611904 5706776 1612792 5706920 1612224 5702288 +1612224 5702288 1611784 5706704 1611832 5706704 1612792 5706920 +1612256 5702208 1612224 5702288 1613096 5707024 1613152 5707048 +1612224 5702288 1612848 5706920 1613096 5707024 1613152 5707048 +1612256 5702208 1612088 5702120 1612224 5702288 1613152 5707048 +1612256 5702208 1612224 5702288 1613152 5707048 1613240 5707104 +1612256 5702208 1612088 5702120 1612224 5702288 1613240 5707104 +1612224 5702288 1613096 5707024 1613152 5707048 1613240 5707104 +1612256 5702208 1612224 5702288 1613240 5707104 1614576 5707608 +1612256 5702208 1612088 5702120 1612224 5702288 1614576 5707608 +1612256 5702208 1612224 5702288 1614576 5707608 1614648 5707656 +1612224 5702288 1613152 5707048 1613240 5707104 1614576 5707608 +1612848 5706920 1612992 5706984 1613096 5707024 1612224 5702288 +1613240 5707104 1614512 5707600 1614576 5707608 1612224 5702288 +1611784 5706704 1612192 5702352 1609480 5702960 1609416 5703016 +1612224 5702288 1612192 5702352 1611784 5706704 1611832 5706704 +1612224 5702288 1609480 5702960 1612192 5702352 1611832 5706704 +1609480 5702960 1612192 5702352 1612224 5702288 1609512 5702904 +1612192 5702352 1611832 5706704 1612224 5702288 1609512 5702904 +1612192 5702352 1609480 5702960 1611784 5706704 1611832 5706704 +1609480 5702960 1611784 5706704 1612192 5702352 1609512 5702904 +1612224 5702288 1612088 5702120 1609512 5702904 1612192 5702352 +1612088 5702120 1609488 5702848 1609512 5702904 1612192 5702352 +1612224 5702288 1612088 5702120 1612192 5702352 1611832 5706704 +1609512 5702904 1609480 5702960 1612192 5702352 1612088 5702120 +1612224 5702288 1612256 5702208 1612088 5702120 1612192 5702352 +1612224 5702288 1612192 5702352 1611832 5706704 1612792 5706920 +1612224 5702288 1612192 5702352 1612792 5706920 1612848 5706920 +1612224 5702288 1612192 5702352 1612848 5706920 1613096 5707024 +1612192 5702352 1612792 5706920 1612848 5706920 1613096 5707024 +1612224 5702288 1612192 5702352 1613096 5707024 1613152 5707048 +1612192 5702352 1612848 5706920 1613096 5707024 1613152 5707048 +1612192 5702352 1611784 5706704 1611832 5706704 1612792 5706920 +1612224 5702288 1612088 5702120 1612192 5702352 1613152 5707048 +1611832 5706704 1611904 5706776 1612792 5706920 1612192 5702352 +1612192 5702352 1611832 5706704 1612792 5706920 1612848 5706920 +1612224 5702288 1612192 5702352 1613152 5707048 1613240 5707104 +1612192 5702352 1613096 5707024 1613152 5707048 1613240 5707104 +1612224 5702288 1612088 5702120 1612192 5702352 1613240 5707104 +1612224 5702288 1612192 5702352 1613240 5707104 1614576 5707608 +1612224 5702288 1612088 5702120 1612192 5702352 1614576 5707608 +1612192 5702352 1613152 5707048 1613240 5707104 1614576 5707608 +1612224 5702288 1612192 5702352 1614576 5707608 1612256 5702208 +1612848 5706920 1612992 5706984 1613096 5707024 1612192 5702352 +1613240 5707104 1614512 5707600 1614576 5707608 1612192 5702352 +1609512 5702904 1612176 5702352 1612088 5702120 1609488 5702848 +1612192 5702352 1612176 5702352 1609512 5702904 1609480 5702960 +1612192 5702352 1612088 5702120 1612176 5702352 1609480 5702960 +1612192 5702352 1612176 5702352 1609480 5702960 1611784 5706704 +1609480 5702960 1609416 5703016 1611784 5706704 1612176 5702352 +1612176 5702352 1609512 5702904 1609480 5702960 1611784 5706704 +1612192 5702352 1612176 5702352 1611784 5706704 1611832 5706704 +1612192 5702352 1612176 5702352 1611832 5706704 1612792 5706920 +1612192 5702352 1612088 5702120 1612176 5702352 1611832 5706704 +1612176 5702352 1609480 5702960 1611784 5706704 1611832 5706704 +1612176 5702352 1612088 5702120 1609512 5702904 1609480 5702960 +1612088 5702120 1612176 5702352 1612192 5702352 1612224 5702288 +1612176 5702352 1611832 5706704 1612192 5702352 1612224 5702288 +1612088 5702120 1609512 5702904 1612176 5702352 1612224 5702288 +1612088 5702120 1612176 5702352 1612224 5702288 1612256 5702208 +1609512 5702904 1612160 5702352 1612088 5702120 1609488 5702848 +1612176 5702352 1612160 5702352 1609512 5702904 1609480 5702960 +1612176 5702352 1612160 5702352 1609480 5702960 1611784 5706704 +1609480 5702960 1609416 5703016 1611784 5706704 1612160 5702352 +1612176 5702352 1612160 5702352 1611784 5706704 1611832 5706704 +1612160 5702352 1609480 5702960 1611784 5706704 1611832 5706704 +1612176 5702352 1612160 5702352 1611832 5706704 1612192 5702352 +1612160 5702352 1609512 5702904 1609480 5702960 1611784 5706704 +1612176 5702352 1612088 5702120 1612160 5702352 1611832 5706704 +1612088 5702120 1612160 5702352 1612176 5702352 1612224 5702288 +1612160 5702352 1611832 5706704 1612176 5702352 1612224 5702288 +1612160 5702352 1612088 5702120 1609512 5702904 1609480 5702960 +1612088 5702120 1609512 5702904 1612160 5702352 1612224 5702288 +1612176 5702352 1612192 5702352 1612224 5702288 1612160 5702352 +1612088 5702120 1612160 5702352 1612224 5702288 1612256 5702208 +1609512 5702904 1612136 5702320 1612088 5702120 1609488 5702848 +1612160 5702352 1612136 5702320 1609512 5702904 1609480 5702960 +1612088 5702120 1612136 5702320 1612160 5702352 1612224 5702288 +1612160 5702352 1612176 5702352 1612224 5702288 1612136 5702320 +1612136 5702320 1609512 5702904 1612160 5702352 1612176 5702352 +1612224 5702288 1612088 5702120 1612136 5702320 1612176 5702352 +1612088 5702120 1609512 5702904 1612136 5702320 1612224 5702288 +1612176 5702352 1612192 5702352 1612224 5702288 1612136 5702320 +1612088 5702120 1612136 5702320 1612224 5702288 1612256 5702208 +1609512 5702904 1612088 5702248 1612088 5702120 1609488 5702848 +1612136 5702320 1612088 5702248 1609512 5702904 1612160 5702352 +1612088 5702120 1612088 5702248 1612136 5702320 1612224 5702288 +1612136 5702320 1612176 5702352 1612224 5702288 1612088 5702248 +1612088 5702248 1609512 5702904 1612136 5702320 1612224 5702288 +1609512 5702904 1612136 5702320 1612088 5702248 1609488 5702848 +1612088 5702248 1612224 5702288 1612088 5702120 1609488 5702848 +1612088 5702120 1612088 5702248 1612224 5702288 1612256 5702208 +1612088 5702248 1612136 5702320 1612224 5702288 1612256 5702208 +1612088 5702120 1609488 5702848 1612088 5702248 1612256 5702208 +1612088 5702120 1612088 5702248 1612256 5702208 1612120 5702096 +1612256 5702208 1612256 5702160 1612120 5702096 1612088 5702248 +1612088 5702120 1609488 5702848 1612088 5702248 1612120 5702096 +1612088 5702248 1612224 5702288 1612256 5702208 1612120 5702096 +1612088 5702120 1609408 5702768 1609488 5702848 1612088 5702248 +1611560 5699312 1613176 5702944 1663880 5646248 1611528 5699256 +1614696 5707712 1613176 5702944 1611560 5699312 1614680 5707680 +1611560 5699312 1612256 5702160 1614680 5707680 1613176 5702944 +1614680 5707680 1614696 5707712 1613176 5702944 1612256 5702160 +1613176 5702944 1663880 5646248 1611560 5699312 1612256 5702160 +1614696 5707712 1663880 5646248 1613176 5702944 1614680 5707680 +1612256 5702160 1612256 5702208 1614680 5707680 1613176 5702944 +1612256 5702160 1612256 5702208 1613176 5702944 1611560 5699312 +1614680 5707680 1614696 5707712 1613176 5702944 1612256 5702208 +1612256 5702208 1614648 5707656 1614680 5707680 1613176 5702944 +1614680 5707680 1614696 5707712 1613176 5702944 1614648 5707656 +1612256 5702208 1614576 5707608 1614648 5707656 1613176 5702944 +1614648 5707656 1614680 5707680 1613176 5702944 1614576 5707608 +1612256 5702208 1612224 5702288 1614576 5707608 1613176 5702944 +1614576 5707608 1614648 5707656 1613176 5702944 1612224 5702288 +1612256 5702208 1612224 5702288 1613176 5702944 1612256 5702160 +1611560 5699312 1612232 5702104 1612256 5702160 1613176 5702944 +1612256 5702160 1612256 5702208 1613176 5702944 1612232 5702104 +1611560 5699312 1612232 5702104 1613176 5702944 1663880 5646248 +1611560 5699312 1611552 5699400 1612232 5702104 1613176 5702944 +1611560 5699312 1611552 5699400 1613176 5702944 1663880 5646248 +1611552 5699400 1612208 5702072 1612232 5702104 1613176 5702944 +1611552 5699400 1612208 5702072 1613176 5702944 1611560 5699312 +1612232 5702104 1612256 5702160 1613176 5702944 1612208 5702072 +1612224 5702288 1612192 5702352 1614576 5707608 1613176 5702944 +1614576 5707608 1614648 5707656 1613176 5702944 1612192 5702352 +1612224 5702288 1612192 5702352 1613176 5702944 1612256 5702208 +1612192 5702352 1613240 5707104 1614576 5707608 1613176 5702944 +1614576 5707608 1614648 5707656 1613176 5702944 1613240 5707104 +1612192 5702352 1613152 5707048 1613240 5707104 1613176 5702944 +1612192 5702352 1613096 5707024 1613152 5707048 1613176 5702944 +1612192 5702352 1612848 5706920 1613096 5707024 1613176 5702944 +1612192 5702352 1612792 5706920 1612848 5706920 1613176 5702944 +1613096 5707024 1613152 5707048 1613176 5702944 1612848 5706920 +1612848 5706920 1613096 5707024 1613176 5702944 1612792 5706920 +1612192 5702352 1611832 5706704 1612792 5706920 1613176 5702944 +1612792 5706920 1612848 5706920 1613176 5702944 1611832 5706704 +1612192 5702352 1612176 5702352 1611832 5706704 1613176 5702944 +1612176 5702352 1612160 5702352 1611832 5706704 1613176 5702944 +1612176 5702352 1612160 5702352 1613176 5702944 1612192 5702352 +1612160 5702352 1611784 5706704 1611832 5706704 1613176 5702944 +1612160 5702352 1609480 5702960 1611784 5706704 1613176 5702944 +1612160 5702352 1611784 5706704 1613176 5702944 1612176 5702352 +1611832 5706704 1611904 5706776 1612792 5706920 1613176 5702944 +1611832 5706704 1612792 5706920 1613176 5702944 1611784 5706704 +1613152 5707048 1613240 5707104 1613176 5702944 1613096 5707024 +1613240 5707104 1614576 5707608 1613176 5702944 1613152 5707048 +1612192 5702352 1612176 5702352 1613176 5702944 1612224 5702288 +1611552 5699400 1611528 5699488 1612208 5702072 1613176 5702944 +1612848 5706920 1612992 5706984 1613096 5707024 1613176 5702944 +1613096 5707024 1613152 5707048 1613176 5702944 1612992 5706984 +1612848 5706920 1612992 5706984 1613176 5702944 1612792 5706920 +1613240 5707104 1614512 5707600 1614576 5707608 1613176 5702944 +1614576 5707608 1614648 5707656 1613176 5702944 1614512 5707600 +1613240 5707104 1614512 5707600 1613176 5702944 1613152 5707048 +1613240 5707104 1613288 5707144 1614512 5707600 1613176 5702944 +1663880 5646248 1613176 5702944 1614696 5707712 1663944 5646256 +1611560 5699312 1613200 5702888 1663880 5646248 1611528 5699256 +1613176 5702944 1613200 5702888 1611560 5699312 1611552 5699400 +1663880 5646248 1613200 5702888 1613176 5702944 1614696 5707712 +1613176 5702944 1614696 5707712 1613200 5702888 1611552 5699400 +1613176 5702944 1614680 5707680 1614696 5707712 1613200 5702888 +1613176 5702944 1614648 5707656 1614680 5707680 1613200 5702888 +1613176 5702944 1614576 5707608 1614648 5707656 1613200 5702888 +1614648 5707656 1614680 5707680 1613200 5702888 1614576 5707608 +1613176 5702944 1614512 5707600 1614576 5707608 1613200 5702888 +1614696 5707712 1663880 5646248 1613200 5702888 1614680 5707680 +1613176 5702944 1614576 5707608 1613200 5702888 1611552 5699400 +1614680 5707680 1614696 5707712 1613200 5702888 1614648 5707656 +1613200 5702888 1663880 5646248 1611560 5699312 1611552 5699400 +1663880 5646248 1611560 5699312 1613200 5702888 1614696 5707712 +1613176 5702944 1613200 5702888 1611552 5699400 1612208 5702072 +1613200 5702888 1611560 5699312 1611552 5699400 1612208 5702072 +1613176 5702944 1614576 5707608 1613200 5702888 1612208 5702072 +1613176 5702944 1613200 5702888 1612208 5702072 1612232 5702104 +1613176 5702944 1614576 5707608 1613200 5702888 1612232 5702104 +1613200 5702888 1611552 5699400 1612208 5702072 1612232 5702104 +1613176 5702944 1613200 5702888 1612232 5702104 1612256 5702160 +1613176 5702944 1613200 5702888 1612256 5702160 1612256 5702208 +1613176 5702944 1614576 5707608 1613200 5702888 1612256 5702208 +1613200 5702888 1612208 5702072 1612232 5702104 1612256 5702160 +1613176 5702944 1613200 5702888 1612256 5702208 1612224 5702288 +1613200 5702888 1612256 5702160 1612256 5702208 1612224 5702288 +1613176 5702944 1614576 5707608 1613200 5702888 1612224 5702288 +1613176 5702944 1613200 5702888 1612224 5702288 1612192 5702352 +1613176 5702944 1614576 5707608 1613200 5702888 1612192 5702352 +1613200 5702888 1612256 5702208 1612224 5702288 1612192 5702352 +1613200 5702888 1612232 5702104 1612256 5702160 1612256 5702208 +1613176 5702944 1613200 5702888 1612192 5702352 1612176 5702352 +1611552 5699400 1611528 5699488 1612208 5702072 1613200 5702888 +1663880 5646248 1613200 5702888 1614696 5707712 1663944 5646256 +1614696 5707712 1613240 5702856 1613200 5702888 1614680 5707680 +1613200 5702888 1614648 5707656 1614680 5707680 1613240 5702856 +1613200 5702888 1614576 5707608 1614648 5707656 1613240 5702856 +1613200 5702888 1613176 5702944 1614576 5707608 1613240 5702856 +1614576 5707608 1614648 5707656 1613240 5702856 1613176 5702944 +1613176 5702944 1614512 5707600 1614576 5707608 1613240 5702856 +1614680 5707680 1614696 5707712 1613240 5702856 1614648 5707656 +1614648 5707656 1614680 5707680 1613240 5702856 1614576 5707608 +1613240 5702856 1663880 5646248 1613200 5702888 1613176 5702944 +1613200 5702888 1613240 5702856 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613240 5702856 +1613200 5702888 1613240 5702856 1611560 5699312 1611552 5699400 +1613200 5702888 1613240 5702856 1611552 5699400 1612208 5702072 +1613240 5702856 1611560 5699312 1611552 5699400 1612208 5702072 +1613200 5702888 1613176 5702944 1613240 5702856 1612208 5702072 +1613240 5702856 1663880 5646248 1611560 5699312 1611552 5699400 +1613200 5702888 1613240 5702856 1612208 5702072 1612232 5702104 +1613240 5702856 1611552 5699400 1612208 5702072 1612232 5702104 +1613200 5702888 1613176 5702944 1613240 5702856 1612232 5702104 +1613200 5702888 1613240 5702856 1612232 5702104 1612256 5702160 +1613200 5702888 1613176 5702944 1613240 5702856 1612256 5702160 +1613240 5702856 1612208 5702072 1612232 5702104 1612256 5702160 +1613200 5702888 1613240 5702856 1612256 5702160 1612256 5702208 +1613200 5702888 1613240 5702856 1612256 5702208 1612224 5702288 +1613200 5702888 1613176 5702944 1613240 5702856 1612256 5702208 +1613240 5702856 1612232 5702104 1612256 5702160 1612256 5702208 +1611552 5699400 1611528 5699488 1612208 5702072 1613240 5702856 +1613240 5702856 1614696 5707712 1663880 5646248 1611560 5699312 +1614696 5707712 1663880 5646248 1613240 5702856 1614680 5707680 +1663880 5646248 1613240 5702856 1614696 5707712 1663944 5646256 +1613240 5702856 1613256 5702848 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613256 5702848 +1613240 5702856 1613256 5702848 1611560 5699312 1611552 5699400 +1613240 5702856 1613256 5702848 1611552 5699400 1612208 5702072 +1613240 5702856 1613256 5702848 1612208 5702072 1612232 5702104 +1613256 5702848 1611552 5699400 1612208 5702072 1612232 5702104 +1613256 5702848 1611560 5699312 1611552 5699400 1612208 5702072 +1613240 5702856 1613256 5702848 1612232 5702104 1612256 5702160 +1613256 5702848 1612208 5702072 1612232 5702104 1612256 5702160 +1613240 5702856 1613256 5702848 1612256 5702160 1612256 5702208 +1613256 5702848 1612232 5702104 1612256 5702160 1612256 5702208 +1613240 5702856 1613256 5702848 1612256 5702208 1613200 5702888 +1611552 5699400 1611528 5699488 1612208 5702072 1613256 5702848 +1613256 5702848 1663880 5646248 1611560 5699312 1611552 5699400 +1613240 5702856 1614696 5707712 1613256 5702848 1612256 5702208 +1614696 5707712 1613256 5702848 1613240 5702856 1614680 5707680 +1613240 5702856 1614648 5707656 1614680 5707680 1613256 5702848 +1613240 5702856 1614576 5707608 1614648 5707656 1613256 5702848 +1613240 5702856 1613176 5702944 1614576 5707608 1613256 5702848 +1613240 5702856 1613200 5702888 1613176 5702944 1613256 5702848 +1613176 5702944 1614512 5707600 1614576 5707608 1613256 5702848 +1614648 5707656 1614680 5707680 1613256 5702848 1614576 5707608 +1614576 5707608 1614648 5707656 1613256 5702848 1613176 5702944 +1613256 5702848 1612256 5702208 1613240 5702856 1613176 5702944 +1614680 5707680 1614696 5707712 1613256 5702848 1614648 5707656 +1613256 5702848 1614696 5707712 1663880 5646248 1611560 5699312 +1614696 5707712 1663880 5646248 1613256 5702848 1614680 5707680 +1663880 5646248 1613256 5702848 1614696 5707712 1663944 5646256 +1663880 5646248 1611560 5699312 1613256 5702848 1663944 5646256 +1613256 5702848 1614680 5707680 1614696 5707712 1663944 5646256 +1614696 5707712 1614704 5707744 1663944 5646256 1613256 5702848 +1614696 5707712 1613304 5702872 1613256 5702848 1614680 5707680 +1613256 5702848 1614648 5707656 1614680 5707680 1613304 5702872 +1613256 5702848 1614576 5707608 1614648 5707656 1613304 5702872 +1613256 5702848 1613176 5702944 1614576 5707608 1613304 5702872 +1613256 5702848 1613240 5702856 1613176 5702944 1613304 5702872 +1613240 5702856 1613200 5702888 1613176 5702944 1613304 5702872 +1613240 5702856 1613200 5702888 1613304 5702872 1613256 5702848 +1613176 5702944 1614512 5707600 1614576 5707608 1613304 5702872 +1614576 5707608 1614648 5707656 1613304 5702872 1614512 5707600 +1613176 5702944 1614512 5707600 1613304 5702872 1613200 5702888 +1614648 5707656 1614680 5707680 1613304 5702872 1614576 5707608 +1613304 5702872 1663944 5646256 1613256 5702848 1613240 5702856 +1614680 5707680 1614696 5707712 1613304 5702872 1614648 5707656 +1614696 5707712 1663944 5646256 1613304 5702872 1614680 5707680 +1613176 5702944 1613240 5707104 1614512 5707600 1613304 5702872 +1614512 5707600 1614576 5707608 1613304 5702872 1613240 5707104 +1613176 5702944 1613240 5707104 1613304 5702872 1613200 5702888 +1613176 5702944 1613152 5707048 1613240 5707104 1613304 5702872 +1613176 5702944 1613152 5707048 1613304 5702872 1613200 5702888 +1613176 5702944 1613096 5707024 1613152 5707048 1613304 5702872 +1613240 5707104 1614512 5707600 1613304 5702872 1613152 5707048 +1613240 5707104 1613288 5707144 1614512 5707600 1613304 5702872 +1613256 5702848 1613304 5702872 1663944 5646256 1663880 5646248 +1613256 5702848 1613304 5702872 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613304 5702872 +1613256 5702848 1613304 5702872 1611560 5699312 1611552 5699400 +1613256 5702848 1613304 5702872 1611552 5699400 1612208 5702072 +1613304 5702872 1663880 5646248 1611560 5699312 1611552 5699400 +1613256 5702848 1613240 5702856 1613304 5702872 1611552 5699400 +1613304 5702872 1614696 5707712 1663944 5646256 1663880 5646248 +1613304 5702872 1663944 5646256 1663880 5646248 1611560 5699312 +1663944 5646256 1613304 5702872 1614696 5707712 1614704 5707744 +1614696 5707712 1613344 5702912 1613304 5702872 1614680 5707680 +1613304 5702872 1614648 5707656 1614680 5707680 1613344 5702912 +1613304 5702872 1614576 5707608 1614648 5707656 1613344 5702912 +1613304 5702872 1614512 5707600 1614576 5707608 1613344 5702912 +1613304 5702872 1613240 5707104 1614512 5707600 1613344 5702912 +1614512 5707600 1614576 5707608 1613344 5702912 1613240 5707104 +1614576 5707608 1614648 5707656 1613344 5702912 1614512 5707600 +1614648 5707656 1614680 5707680 1613344 5702912 1614576 5707608 +1613344 5702912 1663944 5646256 1613304 5702872 1613240 5707104 +1614680 5707680 1614696 5707712 1613344 5702912 1614648 5707656 +1614696 5707712 1663944 5646256 1613344 5702912 1614680 5707680 +1613304 5702872 1613344 5702912 1663944 5646256 1663880 5646248 +1613304 5702872 1613240 5707104 1613344 5702912 1663880 5646248 +1613344 5702912 1614696 5707712 1663944 5646256 1663880 5646248 +1613304 5702872 1613152 5707048 1613240 5707104 1613344 5702912 +1613240 5707104 1614512 5707600 1613344 5702912 1613152 5707048 +1613304 5702872 1613176 5702944 1613152 5707048 1613344 5702912 +1613304 5702872 1613200 5702888 1613176 5702944 1613344 5702912 +1613176 5702944 1613096 5707024 1613152 5707048 1613344 5702912 +1613176 5702944 1612992 5706984 1613096 5707024 1613344 5702912 +1613096 5707024 1613152 5707048 1613344 5702912 1612992 5706984 +1613176 5702944 1612992 5706984 1613344 5702912 1613304 5702872 +1613176 5702944 1612848 5706920 1612992 5706984 1613344 5702912 +1612992 5706984 1613096 5707024 1613344 5702912 1612848 5706920 +1613176 5702944 1612792 5706920 1612848 5706920 1613344 5702912 +1613176 5702944 1612848 5706920 1613344 5702912 1613304 5702872 +1613304 5702872 1613176 5702944 1613344 5702912 1663880 5646248 +1613152 5707048 1613240 5707104 1613344 5702912 1613096 5707024 +1613240 5707104 1613288 5707144 1614512 5707600 1613344 5702912 +1613304 5702872 1613344 5702912 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613344 5702912 +1613304 5702872 1613344 5702912 1611560 5699312 1611552 5699400 +1613304 5702872 1613176 5702944 1613344 5702912 1611560 5699312 +1613344 5702912 1663944 5646256 1663880 5646248 1611560 5699312 +1663944 5646256 1613344 5702912 1614696 5707712 1614704 5707744 +1613344 5702912 1613392 5702960 1663944 5646256 1663880 5646248 +1613344 5702912 1614696 5707712 1613392 5702960 1663880 5646248 +1613392 5702960 1614696 5707712 1663944 5646256 1663880 5646248 +1613344 5702912 1613392 5702960 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613392 5702960 +1613344 5702912 1614696 5707712 1613392 5702960 1611560 5699312 +1613392 5702960 1663944 5646256 1663880 5646248 1611560 5699312 +1614696 5707712 1613392 5702960 1613344 5702912 1614680 5707680 +1613392 5702960 1611560 5699312 1613344 5702912 1614680 5707680 +1614696 5707712 1663944 5646256 1613392 5702960 1614680 5707680 +1613344 5702912 1614648 5707656 1614680 5707680 1613392 5702960 +1613344 5702912 1614648 5707656 1613392 5702960 1611560 5699312 +1613344 5702912 1614576 5707608 1614648 5707656 1613392 5702960 +1613344 5702912 1614576 5707608 1613392 5702960 1611560 5699312 +1613344 5702912 1614512 5707600 1614576 5707608 1613392 5702960 +1613344 5702912 1613240 5707104 1614512 5707600 1613392 5702960 +1613344 5702912 1613152 5707048 1613240 5707104 1613392 5702960 +1613240 5707104 1614512 5707600 1613392 5702960 1613152 5707048 +1613344 5702912 1613152 5707048 1613392 5702960 1611560 5699312 +1614512 5707600 1614576 5707608 1613392 5702960 1613240 5707104 +1614576 5707608 1614648 5707656 1613392 5702960 1614512 5707600 +1614648 5707656 1614680 5707680 1613392 5702960 1614576 5707608 +1614680 5707680 1614696 5707712 1613392 5702960 1614648 5707656 +1613344 5702912 1613096 5707024 1613152 5707048 1613392 5702960 +1613152 5707048 1613240 5707104 1613392 5702960 1613096 5707024 +1613344 5702912 1612992 5706984 1613096 5707024 1613392 5702960 +1613344 5702912 1612848 5706920 1612992 5706984 1613392 5702960 +1612992 5706984 1613096 5707024 1613392 5702960 1612848 5706920 +1613344 5702912 1613176 5702944 1612848 5706920 1613392 5702960 +1612848 5706920 1612992 5706984 1613392 5702960 1613176 5702944 +1613176 5702944 1612792 5706920 1612848 5706920 1613392 5702960 +1613344 5702912 1613304 5702872 1613176 5702944 1613392 5702960 +1613344 5702912 1613176 5702944 1613392 5702960 1611560 5699312 +1613096 5707024 1613152 5707048 1613392 5702960 1612992 5706984 +1613240 5707104 1613288 5707144 1614512 5707600 1613392 5702960 +1613344 5702912 1613392 5702960 1611560 5699312 1613304 5702872 +1663944 5646256 1613392 5702960 1614696 5707712 1614704 5707744 +1613392 5702960 1613464 5703016 1663944 5646256 1663880 5646248 +1613392 5702960 1614696 5707712 1613464 5703016 1663880 5646248 +1614696 5707712 1613464 5703016 1613392 5702960 1614680 5707680 +1613464 5703016 1663880 5646248 1613392 5702960 1614680 5707680 +1613464 5703016 1614696 5707712 1663944 5646256 1663880 5646248 +1614696 5707712 1663944 5646256 1613464 5703016 1614680 5707680 +1613392 5702960 1613464 5703016 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613464 5703016 +1613464 5703016 1663944 5646256 1663880 5646248 1611560 5699312 +1613392 5702960 1614680 5707680 1613464 5703016 1611560 5699312 +1613392 5702960 1613464 5703016 1611560 5699312 1613344 5702912 +1613392 5702960 1614680 5707680 1613464 5703016 1613344 5702912 +1613464 5703016 1663880 5646248 1611560 5699312 1613344 5702912 +1613392 5702960 1614648 5707656 1614680 5707680 1613464 5703016 +1613392 5702960 1614648 5707656 1613464 5703016 1613344 5702912 +1614680 5707680 1614696 5707712 1613464 5703016 1614648 5707656 +1613392 5702960 1614576 5707608 1614648 5707656 1613464 5703016 +1613392 5702960 1614576 5707608 1613464 5703016 1613344 5702912 +1613392 5702960 1614512 5707600 1614576 5707608 1613464 5703016 +1613392 5702960 1614512 5707600 1613464 5703016 1613344 5702912 +1613392 5702960 1613240 5707104 1614512 5707600 1613464 5703016 +1613392 5702960 1613152 5707048 1613240 5707104 1613464 5703016 +1613392 5702960 1613096 5707024 1613152 5707048 1613464 5703016 +1613152 5707048 1613240 5707104 1613464 5703016 1613096 5707024 +1613392 5702960 1613096 5707024 1613464 5703016 1613344 5702912 +1613240 5707104 1614512 5707600 1613464 5703016 1613152 5707048 +1614512 5707600 1614576 5707608 1613464 5703016 1613240 5707104 +1614576 5707608 1614648 5707656 1613464 5703016 1614512 5707600 +1614648 5707656 1614680 5707680 1613464 5703016 1614576 5707608 +1613392 5702960 1612992 5706984 1613096 5707024 1613464 5703016 +1613096 5707024 1613152 5707048 1613464 5703016 1612992 5706984 +1613392 5702960 1612848 5706920 1612992 5706984 1613464 5703016 +1613392 5702960 1613176 5702944 1612848 5706920 1613464 5703016 +1613176 5702944 1612792 5706920 1612848 5706920 1613464 5703016 +1612848 5706920 1612992 5706984 1613464 5703016 1613176 5702944 +1613392 5702960 1613344 5702912 1613176 5702944 1613464 5703016 +1613392 5702960 1613176 5702944 1613464 5703016 1613344 5702912 +1612992 5706984 1613096 5707024 1613464 5703016 1612848 5706920 +1613240 5707104 1613288 5707144 1614512 5707600 1613464 5703016 +1611560 5699312 1613304 5702872 1613344 5702912 1613464 5703016 +1611560 5699312 1611552 5699400 1613304 5702872 1613464 5703016 +1611560 5699312 1613304 5702872 1613464 5703016 1663880 5646248 +1613344 5702912 1613392 5702960 1613464 5703016 1613304 5702872 +1663944 5646256 1613464 5703016 1614696 5707712 1614704 5707744 +1613464 5703016 1613512 5703064 1663944 5646256 1663880 5646248 +1613464 5703016 1613512 5703064 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613512 5703064 +1613512 5703064 1663944 5646256 1663880 5646248 1611560 5699312 +1613464 5703016 1614696 5707712 1613512 5703064 1611560 5699312 +1614696 5707712 1613512 5703064 1613464 5703016 1614680 5707680 +1613464 5703016 1614648 5707656 1614680 5707680 1613512 5703064 +1613512 5703064 1611560 5699312 1613464 5703016 1614648 5707656 +1614680 5707680 1614696 5707712 1613512 5703064 1614648 5707656 +1613512 5703064 1614696 5707712 1663944 5646256 1663880 5646248 +1614696 5707712 1663944 5646256 1613512 5703064 1614680 5707680 +1613464 5703016 1613512 5703064 1611560 5699312 1613304 5702872 +1613464 5703016 1614576 5707608 1614648 5707656 1613512 5703064 +1614648 5707656 1614680 5707680 1613512 5703064 1614576 5707608 +1613464 5703016 1614576 5707608 1613512 5703064 1611560 5699312 +1613464 5703016 1614512 5707600 1614576 5707608 1613512 5703064 +1613464 5703016 1614512 5707600 1613512 5703064 1611560 5699312 +1613464 5703016 1613240 5707104 1614512 5707600 1613512 5703064 +1613464 5703016 1613240 5707104 1613512 5703064 1611560 5699312 +1613464 5703016 1613152 5707048 1613240 5707104 1613512 5703064 +1613464 5703016 1613096 5707024 1613152 5707048 1613512 5703064 +1613464 5703016 1612992 5706984 1613096 5707024 1613512 5703064 +1613096 5707024 1613152 5707048 1613512 5703064 1612992 5706984 +1613464 5703016 1612992 5706984 1613512 5703064 1611560 5699312 +1613152 5707048 1613240 5707104 1613512 5703064 1613096 5707024 +1613240 5707104 1614512 5707600 1613512 5703064 1613152 5707048 +1614512 5707600 1614576 5707608 1613512 5703064 1613240 5707104 +1614576 5707608 1614648 5707656 1613512 5703064 1614512 5707600 +1613464 5703016 1612848 5706920 1612992 5706984 1613512 5703064 +1612992 5706984 1613096 5707024 1613512 5703064 1612848 5706920 +1613464 5703016 1613176 5702944 1612848 5706920 1613512 5703064 +1613464 5703016 1613392 5702960 1613176 5702944 1613512 5703064 +1613176 5702944 1612792 5706920 1612848 5706920 1613512 5703064 +1613176 5702944 1611832 5706704 1612792 5706920 1613512 5703064 +1612792 5706920 1612848 5706920 1613512 5703064 1611832 5706704 +1611832 5706704 1611904 5706776 1612792 5706920 1613512 5703064 +1613176 5702944 1611784 5706704 1611832 5706704 1613512 5703064 +1613176 5702944 1611832 5706704 1613512 5703064 1613464 5703016 +1613464 5703016 1613176 5702944 1613512 5703064 1611560 5699312 +1612848 5706920 1612992 5706984 1613512 5703064 1612792 5706920 +1613240 5707104 1613288 5707144 1614512 5707600 1613512 5703064 +1663944 5646256 1613512 5703064 1614696 5707712 1614704 5707744 +1613512 5703064 1613560 5703120 1663944 5646256 1663880 5646248 +1613512 5703064 1613560 5703120 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613560 5703120 +1613512 5703064 1613560 5703120 1611560 5699312 1613464 5703016 +1613560 5703120 1663944 5646256 1663880 5646248 1611560 5699312 +1613512 5703064 1614696 5707712 1613560 5703120 1611560 5699312 +1614696 5707712 1613560 5703120 1613512 5703064 1614680 5707680 +1613512 5703064 1614648 5707656 1614680 5707680 1613560 5703120 +1613512 5703064 1614576 5707608 1614648 5707656 1613560 5703120 +1614648 5707656 1614680 5707680 1613560 5703120 1614576 5707608 +1613560 5703120 1611560 5699312 1613512 5703064 1614576 5707608 +1614680 5707680 1614696 5707712 1613560 5703120 1614648 5707656 +1613560 5703120 1614696 5707712 1663944 5646256 1663880 5646248 +1614696 5707712 1663944 5646256 1613560 5703120 1614680 5707680 +1613512 5703064 1614512 5707600 1614576 5707608 1613560 5703120 +1614576 5707608 1614648 5707656 1613560 5703120 1614512 5707600 +1613512 5703064 1614512 5707600 1613560 5703120 1611560 5699312 +1613512 5703064 1613240 5707104 1614512 5707600 1613560 5703120 +1613512 5703064 1613240 5707104 1613560 5703120 1611560 5699312 +1613512 5703064 1613152 5707048 1613240 5707104 1613560 5703120 +1613512 5703064 1613152 5707048 1613560 5703120 1611560 5699312 +1613512 5703064 1613096 5707024 1613152 5707048 1613560 5703120 +1613512 5703064 1612992 5706984 1613096 5707024 1613560 5703120 +1613512 5703064 1612848 5706920 1612992 5706984 1613560 5703120 +1612992 5706984 1613096 5707024 1613560 5703120 1612848 5706920 +1613512 5703064 1612848 5706920 1613560 5703120 1611560 5699312 +1613096 5707024 1613152 5707048 1613560 5703120 1612992 5706984 +1613152 5707048 1613240 5707104 1613560 5703120 1613096 5707024 +1613240 5707104 1614512 5707600 1613560 5703120 1613152 5707048 +1614512 5707600 1614576 5707608 1613560 5703120 1613240 5707104 +1613512 5703064 1612792 5706920 1612848 5706920 1613560 5703120 +1612848 5706920 1612992 5706984 1613560 5703120 1612792 5706920 +1613512 5703064 1611832 5706704 1612792 5706920 1613560 5703120 +1613512 5703064 1613176 5702944 1611832 5706704 1613560 5703120 +1611832 5706704 1612792 5706920 1613560 5703120 1613176 5702944 +1611832 5706704 1611904 5706776 1612792 5706920 1613560 5703120 +1613176 5702944 1611784 5706704 1611832 5706704 1613560 5703120 +1613512 5703064 1613464 5703016 1613176 5702944 1613560 5703120 +1613512 5703064 1613176 5702944 1613560 5703120 1611560 5699312 +1612792 5706920 1612848 5706920 1613560 5703120 1611832 5706704 +1613240 5707104 1613288 5707144 1614512 5707600 1613560 5703120 +1663944 5646256 1613560 5703120 1614696 5707712 1614704 5707744 +1613560 5703120 1613592 5703136 1663944 5646256 1663880 5646248 +1613592 5703136 1614696 5707712 1663944 5646256 1663880 5646248 +1613560 5703120 1613592 5703136 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1613592 5703136 +1613560 5703120 1613592 5703136 1611560 5699312 1613512 5703064 +1611560 5699312 1613464 5703016 1613512 5703064 1613592 5703136 +1613512 5703064 1613560 5703120 1613592 5703136 1613464 5703016 +1613592 5703136 1663880 5646248 1611560 5699312 1613464 5703016 +1613592 5703136 1663944 5646256 1663880 5646248 1611560 5699312 +1613560 5703120 1614696 5707712 1613592 5703136 1613512 5703064 +1614696 5707712 1613592 5703136 1613560 5703120 1614680 5707680 +1614696 5707712 1663944 5646256 1613592 5703136 1614680 5707680 +1613560 5703120 1614648 5707656 1614680 5707680 1613592 5703136 +1613560 5703120 1614576 5707608 1614648 5707656 1613592 5703136 +1613560 5703120 1614512 5707600 1614576 5707608 1613592 5703136 +1614576 5707608 1614648 5707656 1613592 5703136 1614512 5707600 +1614648 5707656 1614680 5707680 1613592 5703136 1614576 5707608 +1613592 5703136 1613512 5703064 1613560 5703120 1614512 5707600 +1614680 5707680 1614696 5707712 1613592 5703136 1614648 5707656 +1611560 5699312 1613304 5702872 1613464 5703016 1613592 5703136 +1613560 5703120 1613240 5707104 1614512 5707600 1613592 5703136 +1614512 5707600 1614576 5707608 1613592 5703136 1613240 5707104 +1613560 5703120 1613240 5707104 1613592 5703136 1613512 5703064 +1613560 5703120 1613152 5707048 1613240 5707104 1613592 5703136 +1613560 5703120 1613152 5707048 1613592 5703136 1613512 5703064 +1613560 5703120 1613096 5707024 1613152 5707048 1613592 5703136 +1613560 5703120 1613096 5707024 1613592 5703136 1613512 5703064 +1613560 5703120 1612992 5706984 1613096 5707024 1613592 5703136 +1613560 5703120 1612848 5706920 1612992 5706984 1613592 5703136 +1613560 5703120 1612792 5706920 1612848 5706920 1613592 5703136 +1612848 5706920 1612992 5706984 1613592 5703136 1612792 5706920 +1613560 5703120 1612792 5706920 1613592 5703136 1613512 5703064 +1612992 5706984 1613096 5707024 1613592 5703136 1612848 5706920 +1613096 5707024 1613152 5707048 1613592 5703136 1612992 5706984 +1613152 5707048 1613240 5707104 1613592 5703136 1613096 5707024 +1613240 5707104 1614512 5707600 1613592 5703136 1613152 5707048 +1613560 5703120 1611832 5706704 1612792 5706920 1613592 5703136 +1612792 5706920 1612848 5706920 1613592 5703136 1611832 5706704 +1613560 5703120 1613176 5702944 1611832 5706704 1613592 5703136 +1611832 5706704 1611904 5706776 1612792 5706920 1613592 5703136 +1613560 5703120 1611832 5706704 1613592 5703136 1613512 5703064 +1613240 5707104 1613288 5707144 1614512 5707600 1613592 5703136 +1663944 5646256 1613592 5703136 1614696 5707712 1614704 5707744 +1613592 5703136 1613584 5703232 1614512 5707600 1614576 5707608 +1613592 5703136 1613240 5707104 1613584 5703232 1614576 5707608 +1613584 5703232 1613240 5707104 1614512 5707600 1614576 5707608 +1613592 5703136 1613584 5703232 1614576 5707608 1614648 5707656 +1613592 5703136 1613240 5707104 1613584 5703232 1614648 5707656 +1613584 5703232 1614512 5707600 1614576 5707608 1614648 5707656 +1613592 5703136 1613584 5703232 1614648 5707656 1614680 5707680 +1613592 5703136 1613240 5707104 1613584 5703232 1614680 5707680 +1613584 5703232 1614576 5707608 1614648 5707656 1614680 5707680 +1613592 5703136 1613584 5703232 1614680 5707680 1614696 5707712 +1613240 5707104 1613584 5703232 1613592 5703136 1613152 5707048 +1613584 5703232 1614680 5707680 1613592 5703136 1613152 5707048 +1613240 5707104 1614512 5707600 1613584 5703232 1613152 5707048 +1613592 5703136 1613096 5707024 1613152 5707048 1613584 5703232 +1613592 5703136 1613096 5707024 1613584 5703232 1614680 5707680 +1613592 5703136 1612992 5706984 1613096 5707024 1613584 5703232 +1613592 5703136 1612992 5706984 1613584 5703232 1614680 5707680 +1613592 5703136 1612848 5706920 1612992 5706984 1613584 5703232 +1613592 5703136 1612848 5706920 1613584 5703232 1614680 5707680 +1613592 5703136 1612792 5706920 1612848 5706920 1613584 5703232 +1613592 5703136 1612792 5706920 1613584 5703232 1614680 5707680 +1613592 5703136 1611832 5706704 1612792 5706920 1613584 5703232 +1613592 5703136 1611832 5706704 1613584 5703232 1614680 5707680 +1612792 5706920 1612848 5706920 1613584 5703232 1611832 5706704 +1611832 5706704 1611904 5706776 1612792 5706920 1613584 5703232 +1612848 5706920 1612992 5706984 1613584 5703232 1612792 5706920 +1612992 5706984 1613096 5707024 1613584 5703232 1612848 5706920 +1613096 5707024 1613152 5707048 1613584 5703232 1612992 5706984 +1613152 5707048 1613240 5707104 1613584 5703232 1613096 5707024 +1613592 5703136 1613560 5703120 1611832 5706704 1613584 5703232 +1613592 5703136 1613560 5703120 1613584 5703232 1614680 5707680 +1611832 5706704 1612792 5706920 1613584 5703232 1613560 5703120 +1613560 5703120 1613176 5702944 1611832 5706704 1613584 5703232 +1613560 5703120 1613512 5703064 1613176 5702944 1613584 5703232 +1611832 5706704 1612792 5706920 1613584 5703232 1613176 5702944 +1613176 5702944 1611832 5706704 1613584 5703232 1613512 5703064 +1613176 5702944 1611784 5706704 1611832 5706704 1613584 5703232 +1613512 5703064 1613464 5703016 1613176 5702944 1613584 5703232 +1613512 5703064 1613464 5703016 1613584 5703232 1613560 5703120 +1613464 5703016 1613392 5702960 1613176 5702944 1613584 5703232 +1613176 5702944 1611832 5706704 1613584 5703232 1613464 5703016 +1613560 5703120 1613512 5703064 1613584 5703232 1613592 5703136 +1614512 5707600 1613584 5703232 1613240 5707104 1613288 5707144 +1613584 5703232 1613552 5703272 1611832 5706704 1612792 5706920 +1613584 5703232 1613176 5702944 1613552 5703272 1612792 5706920 +1613552 5703272 1613176 5702944 1611832 5706704 1612792 5706920 +1613176 5702944 1613552 5703272 1613584 5703232 1613464 5703016 +1613552 5703272 1612792 5706920 1613584 5703232 1613464 5703016 +1613176 5702944 1611832 5706704 1613552 5703272 1613464 5703016 +1613176 5702944 1613552 5703272 1613464 5703016 1613392 5702960 +1613584 5703232 1613552 5703272 1612792 5706920 1612848 5706920 +1613584 5703232 1613464 5703016 1613552 5703272 1612848 5706920 +1613552 5703272 1611832 5706704 1612792 5706920 1612848 5706920 +1611832 5706704 1611904 5706776 1612792 5706920 1613552 5703272 +1611832 5706704 1613552 5703272 1613176 5702944 1611784 5706704 +1613584 5703232 1613512 5703064 1613464 5703016 1613552 5703272 +1613584 5703232 1613560 5703120 1613512 5703064 1613552 5703272 +1613584 5703232 1613560 5703120 1613552 5703272 1612848 5706920 +1613464 5703016 1613176 5702944 1613552 5703272 1613512 5703064 +1613512 5703064 1613464 5703016 1613552 5703272 1613560 5703120 +1613584 5703232 1613552 5703272 1612848 5706920 1612992 5706984 +1613584 5703232 1613560 5703120 1613552 5703272 1612992 5706984 +1613552 5703272 1612792 5706920 1612848 5706920 1612992 5706984 +1613584 5703232 1613552 5703272 1612992 5706984 1613096 5707024 +1613584 5703232 1613560 5703120 1613552 5703272 1613096 5707024 +1613552 5703272 1612848 5706920 1612992 5706984 1613096 5707024 +1613584 5703232 1613552 5703272 1613096 5707024 1613152 5707048 +1613584 5703232 1613560 5703120 1613552 5703272 1613152 5707048 +1613552 5703272 1612992 5706984 1613096 5707024 1613152 5707048 +1613584 5703232 1613552 5703272 1613152 5707048 1613240 5707104 +1613584 5703232 1613560 5703120 1613552 5703272 1613240 5707104 +1613584 5703232 1613552 5703272 1613240 5707104 1614512 5707600 +1613584 5703232 1613552 5703272 1614512 5707600 1614576 5707608 +1613584 5703232 1613560 5703120 1613552 5703272 1614576 5707608 +1613552 5703272 1613240 5707104 1614512 5707600 1614576 5707608 +1613584 5703232 1613552 5703272 1614576 5707608 1614648 5707656 +1613552 5703272 1613096 5707024 1613152 5707048 1613240 5707104 +1613552 5703272 1613152 5707048 1613240 5707104 1614512 5707600 +1613584 5703232 1613592 5703136 1613560 5703120 1613552 5703272 +1613240 5707104 1613288 5707144 1614512 5707600 1613552 5703272 +1613552 5703272 1613528 5703288 1611832 5706704 1612792 5706920 +1613552 5703272 1613176 5702944 1613528 5703288 1612792 5706920 +1613176 5702944 1613528 5703288 1613552 5703272 1613464 5703016 +1613528 5703288 1612792 5706920 1613552 5703272 1613464 5703016 +1613552 5703272 1613528 5703288 1612792 5706920 1612848 5706920 +1613528 5703288 1611832 5706704 1612792 5706920 1612848 5706920 +1613552 5703272 1613464 5703016 1613528 5703288 1612848 5706920 +1613176 5702944 1613528 5703288 1613464 5703016 1613392 5702960 +1613552 5703272 1613512 5703064 1613464 5703016 1613528 5703288 +1613552 5703272 1613512 5703064 1613528 5703288 1612848 5706920 +1613552 5703272 1613528 5703288 1612848 5706920 1612992 5706984 +1613552 5703272 1613512 5703064 1613528 5703288 1612992 5706984 +1613528 5703288 1612792 5706920 1612848 5706920 1612992 5706984 +1611832 5706704 1611904 5706776 1612792 5706920 1613528 5703288 +1611832 5706704 1613528 5703288 1613176 5702944 1611784 5706704 +1613552 5703272 1613560 5703120 1613512 5703064 1613528 5703288 +1613552 5703272 1613584 5703232 1613560 5703120 1613528 5703288 +1613552 5703272 1613560 5703120 1613528 5703288 1612992 5706984 +1613512 5703064 1613464 5703016 1613528 5703288 1613560 5703120 +1613176 5702944 1611832 5706704 1613528 5703288 1613464 5703016 +1613528 5703288 1613176 5702944 1611832 5706704 1612792 5706920 +1613464 5703016 1613176 5702944 1613528 5703288 1613512 5703064 +1613552 5703272 1613528 5703288 1612992 5706984 1613096 5707024 +1613552 5703272 1613560 5703120 1613528 5703288 1613096 5707024 +1613528 5703288 1612848 5706920 1612992 5706984 1613096 5707024 +1613552 5703272 1613528 5703288 1613096 5707024 1613152 5707048 +1613552 5703272 1613560 5703120 1613528 5703288 1613152 5707048 +1613528 5703288 1612992 5706984 1613096 5707024 1613152 5707048 +1613552 5703272 1613528 5703288 1613152 5707048 1613240 5707104 +1613552 5703272 1613560 5703120 1613528 5703288 1613240 5707104 +1613528 5703288 1613096 5707024 1613152 5707048 1613240 5707104 +1613552 5703272 1613528 5703288 1613240 5707104 1614512 5707600 +1613552 5703272 1613528 5703288 1614512 5707600 1614576 5707608 +1613552 5703272 1613528 5703288 1614576 5707608 1613584 5703232 +1613552 5703272 1613560 5703120 1613528 5703288 1614576 5707608 +1613528 5703288 1613152 5707048 1613240 5707104 1614512 5707600 +1613528 5703288 1613240 5707104 1614512 5707600 1614576 5707608 +1613240 5707104 1613288 5707144 1614512 5707600 1613528 5703288 +1611832 5706704 1613496 5703288 1613176 5702944 1611784 5706704 +1613496 5703288 1613528 5703288 1613176 5702944 1611784 5706704 +1613176 5702944 1612160 5702352 1611784 5706704 1613496 5703288 +1613176 5702944 1613496 5703288 1613528 5703288 1613464 5703016 +1613176 5702944 1611784 5706704 1613496 5703288 1613464 5703016 +1613176 5702944 1613496 5703288 1613464 5703016 1613392 5702960 +1613176 5702944 1611784 5706704 1613496 5703288 1613392 5702960 +1613176 5702944 1613496 5703288 1613392 5702960 1613344 5702912 +1613496 5703288 1613528 5703288 1613464 5703016 1613392 5702960 +1613496 5703288 1611832 5706704 1613528 5703288 1613464 5703016 +1611832 5706704 1613528 5703288 1613496 5703288 1611784 5706704 +1613528 5703288 1613496 5703288 1611832 5706704 1612792 5706920 +1613528 5703288 1613496 5703288 1612792 5706920 1612848 5706920 +1613528 5703288 1613496 5703288 1612848 5706920 1612992 5706984 +1611832 5706704 1611904 5706776 1612792 5706920 1613496 5703288 +1613528 5703288 1613464 5703016 1613496 5703288 1612848 5706920 +1613496 5703288 1611784 5706704 1611832 5706704 1612792 5706920 +1613496 5703288 1611832 5706704 1612792 5706920 1612848 5706920 +1613528 5703288 1613512 5703064 1613464 5703016 1613496 5703288 +1613528 5703288 1613560 5703120 1613512 5703064 1613496 5703288 +1613528 5703288 1613552 5703272 1613560 5703120 1613496 5703288 +1613552 5703272 1613584 5703232 1613560 5703120 1613496 5703288 +1613560 5703120 1613512 5703064 1613496 5703288 1613584 5703232 +1613552 5703272 1613584 5703232 1613496 5703288 1613528 5703288 +1613464 5703016 1613392 5702960 1613496 5703288 1613512 5703064 +1613528 5703288 1613552 5703272 1613496 5703288 1612848 5706920 +1613512 5703064 1613464 5703016 1613496 5703288 1613560 5703120 +1613584 5703232 1613592 5703136 1613560 5703120 1613496 5703288 +1613176 5702944 1613448 5703264 1613496 5703288 1613392 5702960 +1613448 5703264 1611784 5706704 1613496 5703288 1613392 5702960 +1613176 5702944 1611784 5706704 1613448 5703264 1613392 5702960 +1613496 5703288 1613464 5703016 1613392 5702960 1613448 5703264 +1613496 5703288 1613464 5703016 1613448 5703264 1611784 5706704 +1613392 5702960 1613176 5702944 1613448 5703264 1613464 5703016 +1611784 5706704 1613448 5703264 1613176 5702944 1612160 5702352 +1613496 5703288 1613448 5703264 1611784 5706704 1611832 5706704 +1613496 5703288 1613464 5703016 1613448 5703264 1611832 5706704 +1613448 5703264 1613176 5702944 1611784 5706704 1611832 5706704 +1613176 5702944 1613448 5703264 1613392 5702960 1613344 5702912 +1613496 5703288 1613512 5703064 1613464 5703016 1613448 5703264 +1613496 5703288 1613512 5703064 1613448 5703264 1611832 5706704 +1613464 5703016 1613392 5702960 1613448 5703264 1613512 5703064 +1613496 5703288 1613448 5703264 1611832 5706704 1612792 5706920 +1613496 5703288 1613560 5703120 1613512 5703064 1613448 5703264 +1613496 5703288 1613560 5703120 1613448 5703264 1611832 5706704 +1613496 5703288 1613584 5703232 1613560 5703120 1613448 5703264 +1613496 5703288 1613552 5703272 1613584 5703232 1613448 5703264 +1613496 5703288 1613552 5703272 1613448 5703264 1611832 5706704 +1613584 5703232 1613560 5703120 1613448 5703264 1613552 5703272 +1613496 5703288 1613528 5703288 1613552 5703272 1613448 5703264 +1613512 5703064 1613464 5703016 1613448 5703264 1613560 5703120 +1613560 5703120 1613512 5703064 1613448 5703264 1613584 5703232 +1613584 5703232 1613592 5703136 1613560 5703120 1613448 5703264 +1613448 5703264 1613376 5703232 1611784 5706704 1611832 5706704 +1613448 5703264 1613176 5702944 1613376 5703232 1611832 5706704 +1613176 5702944 1613376 5703232 1613448 5703264 1613392 5702960 +1613448 5703264 1613464 5703016 1613392 5702960 1613376 5703232 +1613376 5703232 1611832 5706704 1613448 5703264 1613464 5703016 +1613392 5702960 1613176 5702944 1613376 5703232 1613464 5703016 +1613376 5703232 1613176 5702944 1611784 5706704 1611832 5706704 +1613176 5702944 1611784 5706704 1613376 5703232 1613392 5702960 +1613448 5703264 1613512 5703064 1613464 5703016 1613376 5703232 +1613464 5703016 1613392 5702960 1613376 5703232 1613512 5703064 +1613448 5703264 1613512 5703064 1613376 5703232 1611832 5706704 +1611784 5706704 1613376 5703232 1613176 5702944 1612160 5702352 +1611784 5706704 1611832 5706704 1613376 5703232 1612160 5702352 +1613376 5703232 1613392 5702960 1613176 5702944 1612160 5702352 +1611784 5706704 1613376 5703232 1612160 5702352 1609480 5702960 +1613176 5702944 1612176 5702352 1612160 5702352 1613376 5703232 +1613448 5703264 1613376 5703232 1611832 5706704 1613496 5703288 +1613376 5703232 1611784 5706704 1611832 5706704 1613496 5703288 +1613448 5703264 1613512 5703064 1613376 5703232 1613496 5703288 +1613176 5702944 1613376 5703232 1613392 5702960 1613344 5702912 +1613448 5703264 1613560 5703120 1613512 5703064 1613376 5703232 +1611832 5706704 1612792 5706920 1613496 5703288 1613376 5703232 +1613376 5703232 1613328 5703200 1611784 5706704 1611832 5706704 +1613376 5703232 1613328 5703200 1611832 5706704 1613496 5703288 +1613376 5703232 1612160 5702352 1613328 5703200 1611832 5706704 +1613328 5703200 1612160 5702352 1611784 5706704 1611832 5706704 +1611784 5706704 1613328 5703200 1612160 5702352 1609480 5702960 +1612160 5702352 1613328 5703200 1613376 5703232 1613176 5702944 +1613328 5703200 1611832 5706704 1613376 5703232 1613176 5702944 +1613376 5703232 1613392 5702960 1613176 5702944 1613328 5703200 +1613376 5703232 1613464 5703016 1613392 5702960 1613328 5703200 +1613376 5703232 1613512 5703064 1613464 5703016 1613328 5703200 +1613464 5703016 1613392 5702960 1613328 5703200 1613512 5703064 +1613376 5703232 1613512 5703064 1613328 5703200 1611832 5706704 +1613392 5702960 1613176 5702944 1613328 5703200 1613464 5703016 +1613376 5703232 1613448 5703264 1613512 5703064 1613328 5703200 +1612160 5702352 1613328 5703200 1613176 5702944 1612176 5702352 +1613176 5702944 1612160 5702352 1613328 5703200 1613392 5702960 +1612160 5702352 1611784 5706704 1613328 5703200 1613176 5702944 +1613392 5702960 1613344 5702912 1613176 5702944 1613328 5703200 +1613328 5703200 1613272 5703160 1611784 5706704 1611832 5706704 +1613328 5703200 1613272 5703160 1611832 5706704 1613376 5703232 +1611784 5706704 1613272 5703160 1612160 5702352 1609480 5702960 +1613328 5703200 1612160 5702352 1613272 5703160 1611832 5706704 +1612160 5702352 1613272 5703160 1613328 5703200 1613176 5702944 +1612160 5702352 1613272 5703160 1613176 5702944 1612176 5702352 +1613328 5703200 1613392 5702960 1613176 5702944 1613272 5703160 +1613328 5703200 1613464 5703016 1613392 5702960 1613272 5703160 +1613328 5703200 1613512 5703064 1613464 5703016 1613272 5703160 +1613392 5702960 1613176 5702944 1613272 5703160 1613464 5703016 +1613272 5703160 1611832 5706704 1613328 5703200 1613464 5703016 +1613176 5702944 1612160 5702352 1613272 5703160 1613392 5702960 +1613272 5703160 1612160 5702352 1611784 5706704 1611832 5706704 +1612160 5702352 1611784 5706704 1613272 5703160 1613176 5702944 +1613392 5702960 1613344 5702912 1613176 5702944 1613272 5703160 +1612160 5702352 1613224 5703096 1613176 5702944 1612176 5702352 +1613176 5702944 1612192 5702352 1612176 5702352 1613224 5703096 +1612176 5702352 1612160 5702352 1613224 5703096 1612192 5702352 +1613176 5702944 1613200 5702888 1612192 5702352 1613224 5703096 +1613176 5702944 1613224 5703096 1613272 5703160 1613392 5702960 +1613272 5703160 1613464 5703016 1613392 5702960 1613224 5703096 +1613272 5703160 1613224 5703096 1612160 5702352 1611784 5706704 +1613224 5703096 1612160 5702352 1613272 5703160 1613392 5702960 +1612160 5702352 1613272 5703160 1613224 5703096 1612176 5702352 +1613224 5703096 1613392 5702960 1613176 5702944 1612192 5702352 +1613176 5702944 1613224 5703096 1613392 5702960 1613344 5702912 +1613176 5702944 1613224 5703096 1613344 5702912 1613304 5702872 +1613224 5703096 1613272 5703160 1613392 5702960 1613344 5702912 +1613176 5702944 1612192 5702352 1613224 5703096 1613344 5702912 +1613224 5703096 1613176 5702984 1612192 5702352 1612176 5702352 +1613224 5703096 1613176 5702984 1612176 5702352 1612160 5702352 +1613176 5702984 1612192 5702352 1612176 5702352 1612160 5702352 +1612192 5702352 1613176 5702984 1613176 5702944 1613200 5702888 +1613224 5703096 1613176 5702984 1612160 5702352 1613272 5703160 +1613224 5703096 1613176 5702944 1613176 5702984 1612160 5702352 +1613176 5702944 1613176 5702984 1613224 5703096 1613344 5702912 +1613176 5702944 1613176 5702984 1613344 5702912 1613304 5702872 +1613176 5702984 1612160 5702352 1613224 5703096 1613344 5702912 +1613176 5702984 1613176 5702944 1612192 5702352 1612176 5702352 +1613176 5702944 1612192 5702352 1613176 5702984 1613344 5702912 +1613224 5703096 1613392 5702960 1613344 5702912 1613176 5702984 +1663944 5646256 1619184 5717344 1621088 5722784 1621280 5723224 +1663944 5646256 1619184 5717344 1621280 5723224 1743800 5687320 +1663944 5646256 1614704 5707744 1619184 5717344 1621280 5723224 +1619184 5717344 1614704 5707744 1621088 5722784 1621280 5723224 +1621088 5722784 1619184 5717344 1614704 5707744 1621040 5722712 +1614704 5707744 1620992 5722672 1621040 5722712 1619184 5717344 +1614704 5707744 1614696 5707848 1620992 5722672 1619184 5717344 +1620992 5722672 1621040 5722712 1619184 5717344 1614696 5707848 +1621088 5722784 1621280 5723224 1619184 5717344 1621040 5722712 +1619184 5717344 1663944 5646256 1614704 5707744 1614696 5707848 +1614696 5707848 1614688 5707952 1620992 5722672 1619184 5717344 +1614696 5707848 1614688 5707952 1619184 5717344 1614704 5707744 +1620992 5722672 1621040 5722712 1619184 5717344 1614688 5707952 +1614688 5707952 1614664 5708048 1620992 5722672 1619184 5717344 +1620992 5722672 1621040 5722712 1619184 5717344 1614664 5708048 +1614664 5708048 1620872 5722632 1620992 5722672 1619184 5717344 +1620992 5722672 1621040 5722712 1619184 5717344 1620872 5722632 +1614664 5708048 1614648 5708080 1620872 5722632 1619184 5717344 +1614648 5708080 1620792 5722624 1620872 5722632 1619184 5717344 +1614648 5708080 1620792 5722624 1619184 5717344 1614664 5708048 +1614648 5708080 1620656 5722632 1620792 5722624 1619184 5717344 +1614648 5708080 1620656 5722632 1619184 5717344 1614664 5708048 +1614648 5708080 1614576 5708144 1620656 5722632 1619184 5717344 +1614648 5708080 1614576 5708144 1619184 5717344 1614664 5708048 +1620656 5722632 1620792 5722624 1619184 5717344 1614576 5708144 +1620792 5722624 1620872 5722632 1619184 5717344 1620656 5722632 +1614576 5708144 1611528 5715552 1620656 5722632 1619184 5717344 +1620656 5722632 1620792 5722624 1619184 5717344 1611528 5715552 +1614576 5708144 1611528 5715552 1619184 5717344 1614648 5708080 +1614664 5708048 1614648 5708080 1619184 5717344 1614688 5707952 +1611528 5715552 1620600 5722648 1620656 5722632 1619184 5717344 +1611528 5715552 1611520 5715576 1620600 5722648 1619184 5717344 +1611520 5715576 1611456 5715680 1620600 5722648 1619184 5717344 +1611520 5715576 1611456 5715680 1619184 5717344 1611528 5715552 +1611456 5715680 1611424 5715704 1620600 5722648 1619184 5717344 +1611456 5715680 1611424 5715704 1619184 5717344 1611520 5715576 +1611424 5715704 1611328 5715760 1620600 5722648 1619184 5717344 +1611328 5715760 1620584 5722728 1620600 5722648 1619184 5717344 +1611328 5715760 1620600 5722784 1620584 5722728 1619184 5717344 +1611328 5715760 1620584 5722728 1619184 5717344 1611424 5715704 +1611424 5715704 1611328 5715760 1619184 5717344 1611456 5715680 +1620656 5722632 1620792 5722624 1619184 5717344 1620600 5722648 +1611528 5715552 1611520 5715576 1619184 5717344 1614576 5708144 +1620600 5722648 1620656 5722632 1619184 5717344 1620584 5722728 +1620872 5722632 1620992 5722672 1619184 5717344 1620792 5722624 +1611520 5715576 1611464 5715656 1611456 5715680 1619184 5717344 +1614576 5708144 1613840 5708448 1611528 5715552 1619184 5717344 +1613840 5708448 1611512 5715528 1611528 5715552 1619184 5717344 +1614576 5708144 1613896 5708408 1613840 5708448 1619184 5717344 +1614576 5708144 1613840 5708448 1619184 5717344 1614648 5708080 +1611528 5715552 1611520 5715576 1619184 5717344 1613840 5708448 +1614688 5707952 1614664 5708048 1619184 5717344 1614696 5707848 +1621040 5722712 1621088 5722784 1619184 5717344 1620992 5722672 +1614704 5707744 1619184 5717344 1663944 5646256 1614696 5707712 +1619184 5717344 1621280 5723224 1663944 5646256 1614696 5707712 +1614704 5707744 1614696 5707848 1619184 5717344 1614696 5707712 +1663944 5646256 1613592 5703136 1614696 5707712 1619184 5717344 +1663944 5646256 1663880 5646248 1613592 5703136 1619184 5717344 +1613592 5703136 1614680 5707680 1614696 5707712 1619184 5717344 +1663944 5646256 1613592 5703136 1619184 5717344 1621280 5723224 +1614696 5707712 1614704 5707744 1619184 5717344 1613592 5703136 +1613592 5703136 1619224 5717272 1663944 5646256 1663880 5646248 +1663944 5646256 1619224 5717272 1619184 5717344 1621280 5723224 +1663944 5646256 1619224 5717272 1621280 5723224 1743800 5687320 +1663944 5646256 1613592 5703136 1619224 5717272 1621280 5723224 +1619224 5717272 1613592 5703136 1619184 5717344 1621280 5723224 +1619184 5717344 1621088 5722784 1621280 5723224 1619224 5717272 +1621280 5723224 1663944 5646256 1619224 5717272 1621088 5722784 +1619184 5717344 1621040 5722712 1621088 5722784 1619224 5717272 +1619184 5717344 1621040 5722712 1619224 5717272 1613592 5703136 +1621088 5722784 1621280 5723224 1619224 5717272 1621040 5722712 +1619184 5717344 1620992 5722672 1621040 5722712 1619224 5717272 +1619184 5717344 1620872 5722632 1620992 5722672 1619224 5717272 +1621040 5722712 1621088 5722784 1619224 5717272 1620992 5722672 +1619184 5717344 1620992 5722672 1619224 5717272 1613592 5703136 +1619184 5717344 1619224 5717272 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619224 5717272 +1619184 5717344 1620992 5722672 1619224 5717272 1614696 5707712 +1619224 5717272 1663944 5646256 1613592 5703136 1614696 5707712 +1619184 5717344 1619224 5717272 1614696 5707712 1614704 5707744 +1619184 5717344 1620992 5722672 1619224 5717272 1614704 5707744 +1619184 5717344 1619224 5717272 1614704 5707744 1614696 5707848 +1619184 5717344 1619224 5717272 1614696 5707848 1614688 5707952 +1619184 5717344 1620992 5722672 1619224 5717272 1614688 5707952 +1619224 5717272 1614704 5707744 1614696 5707848 1614688 5707952 +1619184 5717344 1619224 5717272 1614688 5707952 1614664 5708048 +1619224 5717272 1614696 5707848 1614688 5707952 1614664 5708048 +1619184 5717344 1620992 5722672 1619224 5717272 1614664 5708048 +1619184 5717344 1619224 5717272 1614664 5708048 1614648 5708080 +1619184 5717344 1619224 5717272 1614648 5708080 1614576 5708144 +1619184 5717344 1619224 5717272 1614576 5708144 1613840 5708448 +1619224 5717272 1614648 5708080 1614576 5708144 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1619224 5717272 +1619184 5717344 1620992 5722672 1619224 5717272 1613840 5708448 +1619224 5717272 1614664 5708048 1614648 5708080 1614576 5708144 +1619184 5717344 1619224 5717272 1613840 5708448 1611528 5715552 +1613840 5708448 1611512 5715528 1611528 5715552 1619224 5717272 +1619224 5717272 1614576 5708144 1613840 5708448 1611528 5715552 +1619184 5717344 1620992 5722672 1619224 5717272 1611528 5715552 +1619184 5717344 1619224 5717272 1611528 5715552 1611520 5715576 +1619224 5717272 1614688 5707952 1614664 5708048 1614648 5708080 +1619224 5717272 1613592 5703136 1614696 5707712 1614704 5707744 +1619224 5717272 1614696 5707712 1614704 5707744 1614696 5707848 +1663944 5646256 1619248 5717248 1621280 5723224 1743800 5687320 +1619224 5717272 1619248 5717248 1663944 5646256 1613592 5703136 +1663944 5646256 1663880 5646248 1613592 5703136 1619248 5717248 +1619224 5717272 1621280 5723224 1619248 5717248 1613592 5703136 +1619248 5717248 1621280 5723224 1663944 5646256 1613592 5703136 +1621280 5723224 1619248 5717248 1619224 5717272 1621088 5722784 +1619248 5717248 1613592 5703136 1619224 5717272 1621088 5722784 +1621280 5723224 1663944 5646256 1619248 5717248 1621088 5722784 +1619224 5717272 1619248 5717248 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619248 5717248 +1619224 5717272 1621088 5722784 1619248 5717248 1614696 5707712 +1619248 5717248 1663944 5646256 1613592 5703136 1614696 5707712 +1619224 5717272 1621040 5722712 1621088 5722784 1619248 5717248 +1619224 5717272 1621040 5722712 1619248 5717248 1614696 5707712 +1621088 5722784 1621280 5723224 1619248 5717248 1621040 5722712 +1619224 5717272 1620992 5722672 1621040 5722712 1619248 5717248 +1619224 5717272 1620992 5722672 1619248 5717248 1614696 5707712 +1621040 5722712 1621088 5722784 1619248 5717248 1620992 5722672 +1619224 5717272 1619184 5717344 1620992 5722672 1619248 5717248 +1619184 5717344 1620872 5722632 1620992 5722672 1619248 5717248 +1619224 5717272 1619184 5717344 1619248 5717248 1614696 5707712 +1620992 5722672 1621040 5722712 1619248 5717248 1619184 5717344 +1619224 5717272 1619248 5717248 1614696 5707712 1614704 5707744 +1619224 5717272 1619184 5717344 1619248 5717248 1614704 5707744 +1619248 5717248 1613592 5703136 1614696 5707712 1614704 5707744 +1619224 5717272 1619248 5717248 1614704 5707744 1614696 5707848 +1619224 5717272 1619184 5717344 1619248 5717248 1614696 5707848 +1619224 5717272 1619248 5717248 1614696 5707848 1614688 5707952 +1619224 5717272 1619248 5717248 1614688 5707952 1614664 5708048 +1619224 5717272 1619184 5717344 1619248 5717248 1614664 5708048 +1619248 5717248 1614696 5707848 1614688 5707952 1614664 5708048 +1619224 5717272 1619248 5717248 1614664 5708048 1614648 5708080 +1619248 5717248 1614688 5707952 1614664 5708048 1614648 5708080 +1619224 5717272 1619184 5717344 1619248 5717248 1614648 5708080 +1619224 5717272 1619248 5717248 1614648 5708080 1614576 5708144 +1619224 5717272 1619248 5717248 1614576 5708144 1613840 5708448 +1619224 5717272 1619184 5717344 1619248 5717248 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1619248 5717248 +1619224 5717272 1619248 5717248 1613840 5708448 1611528 5715552 +1619248 5717248 1614576 5708144 1613840 5708448 1611528 5715552 +1613840 5708448 1611512 5715528 1611528 5715552 1619248 5717248 +1619224 5717272 1619184 5717344 1619248 5717248 1611528 5715552 +1619248 5717248 1614648 5708080 1614576 5708144 1613840 5708448 +1619224 5717272 1619248 5717248 1611528 5715552 1619184 5717344 +1619248 5717248 1614664 5708048 1614648 5708080 1614576 5708144 +1619248 5717248 1614696 5707712 1614704 5707744 1614696 5707848 +1619248 5717248 1614704 5707744 1614696 5707848 1614688 5707952 +1663944 5646256 1619280 5717232 1621280 5723224 1743800 5687320 +1619248 5717248 1619280 5717232 1663944 5646256 1613592 5703136 +1663944 5646256 1663880 5646248 1613592 5703136 1619280 5717232 +1619248 5717248 1619280 5717232 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619280 5717232 +1619280 5717232 1663944 5646256 1613592 5703136 1614696 5707712 +1619248 5717248 1621280 5723224 1619280 5717232 1614696 5707712 +1621280 5723224 1619280 5717232 1619248 5717248 1621088 5722784 +1621280 5723224 1663944 5646256 1619280 5717232 1621088 5722784 +1619280 5717232 1614696 5707712 1619248 5717248 1621088 5722784 +1619280 5717232 1621280 5723224 1663944 5646256 1613592 5703136 +1619248 5717248 1621040 5722712 1621088 5722784 1619280 5717232 +1619248 5717248 1621040 5722712 1619280 5717232 1614696 5707712 +1621088 5722784 1621280 5723224 1619280 5717232 1621040 5722712 +1619248 5717248 1619280 5717232 1614696 5707712 1614704 5707744 +1619280 5717232 1613592 5703136 1614696 5707712 1614704 5707744 +1619248 5717248 1621040 5722712 1619280 5717232 1614704 5707744 +1619248 5717248 1620992 5722672 1621040 5722712 1619280 5717232 +1619248 5717248 1620992 5722672 1619280 5717232 1614704 5707744 +1621040 5722712 1621088 5722784 1619280 5717232 1620992 5722672 +1619248 5717248 1619184 5717344 1620992 5722672 1619280 5717232 +1619184 5717344 1620872 5722632 1620992 5722672 1619280 5717232 +1619248 5717248 1619184 5717344 1619280 5717232 1614704 5707744 +1619184 5717344 1620872 5722632 1619280 5717232 1619248 5717248 +1619184 5717344 1620792 5722624 1620872 5722632 1619280 5717232 +1620992 5722672 1621040 5722712 1619280 5717232 1620872 5722632 +1619248 5717248 1619224 5717272 1619184 5717344 1619280 5717232 +1619248 5717248 1619224 5717272 1619280 5717232 1614704 5707744 +1619184 5717344 1620872 5722632 1619280 5717232 1619224 5717272 +1619248 5717248 1619280 5717232 1614704 5707744 1614696 5707848 +1619248 5717248 1619224 5717272 1619280 5717232 1614696 5707848 +1619280 5717232 1614696 5707712 1614704 5707744 1614696 5707848 +1619248 5717248 1619280 5717232 1614696 5707848 1614688 5707952 +1619248 5717248 1619224 5717272 1619280 5717232 1614688 5707952 +1619248 5717248 1619280 5717232 1614688 5707952 1614664 5708048 +1619248 5717248 1619280 5717232 1614664 5708048 1614648 5708080 +1619248 5717248 1619224 5717272 1619280 5717232 1614648 5708080 +1619280 5717232 1614688 5707952 1614664 5708048 1614648 5708080 +1619248 5717248 1619280 5717232 1614648 5708080 1614576 5708144 +1619280 5717232 1614664 5708048 1614648 5708080 1614576 5708144 +1619248 5717248 1619224 5717272 1619280 5717232 1614576 5708144 +1619248 5717248 1619280 5717232 1614576 5708144 1613840 5708448 +1619280 5717232 1614704 5707744 1614696 5707848 1614688 5707952 +1619280 5717232 1614696 5707848 1614688 5707952 1614664 5708048 +1663944 5646256 1619296 5717232 1621280 5723224 1743800 5687320 +1621280 5723224 1619296 5717232 1619280 5717232 1621088 5722784 +1621280 5723224 1663944 5646256 1619296 5717232 1621088 5722784 +1619280 5717232 1621040 5722712 1621088 5722784 1619296 5717232 +1621088 5722784 1621280 5723224 1619296 5717232 1621040 5722712 +1619280 5717232 1619296 5717232 1663944 5646256 1613592 5703136 +1663944 5646256 1663880 5646248 1613592 5703136 1619296 5717232 +1619296 5717232 1621280 5723224 1663944 5646256 1613592 5703136 +1619280 5717232 1619296 5717232 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619296 5717232 +1619280 5717232 1619296 5717232 1614696 5707712 1614704 5707744 +1619296 5717232 1613592 5703136 1614696 5707712 1614704 5707744 +1619296 5717232 1663944 5646256 1613592 5703136 1614696 5707712 +1619296 5717232 1614704 5707744 1619280 5717232 1621040 5722712 +1619280 5717232 1620992 5722672 1621040 5722712 1619296 5717232 +1621040 5722712 1621088 5722784 1619296 5717232 1620992 5722672 +1619280 5717232 1620992 5722672 1619296 5717232 1614704 5707744 +1619280 5717232 1619296 5717232 1614704 5707744 1614696 5707848 +1619296 5717232 1614696 5707712 1614704 5707744 1614696 5707848 +1619280 5717232 1620992 5722672 1619296 5717232 1614696 5707848 +1619280 5717232 1620872 5722632 1620992 5722672 1619296 5717232 +1619280 5717232 1619184 5717344 1620872 5722632 1619296 5717232 +1619280 5717232 1619184 5717344 1619296 5717232 1614696 5707848 +1620992 5722672 1621040 5722712 1619296 5717232 1620872 5722632 +1619280 5717232 1619224 5717272 1619184 5717344 1619296 5717232 +1619184 5717344 1620872 5722632 1619296 5717232 1619224 5717272 +1619280 5717232 1619224 5717272 1619296 5717232 1614696 5707848 +1619184 5717344 1620792 5722624 1620872 5722632 1619296 5717232 +1620872 5722632 1620992 5722672 1619296 5717232 1619184 5717344 +1619280 5717232 1619248 5717248 1619224 5717272 1619296 5717232 +1619280 5717232 1619248 5717248 1619296 5717232 1614696 5707848 +1619224 5717272 1619184 5717344 1619296 5717232 1619248 5717248 +1619280 5717232 1619296 5717232 1614696 5707848 1614688 5707952 +1619280 5717232 1619248 5717248 1619296 5717232 1614688 5707952 +1619296 5717232 1614704 5707744 1614696 5707848 1614688 5707952 +1619280 5717232 1619296 5717232 1614688 5707952 1614664 5708048 +1619280 5717232 1619248 5717248 1619296 5717232 1614664 5708048 +1619280 5717232 1619296 5717232 1614664 5708048 1614648 5708080 +1619280 5717232 1619296 5717232 1614648 5708080 1614576 5708144 +1619280 5717232 1619248 5717248 1619296 5717232 1614648 5708080 +1619296 5717232 1614696 5707848 1614688 5707952 1614664 5708048 +1619296 5717232 1614688 5707952 1614664 5708048 1614648 5708080 +1663944 5646256 1619328 5717256 1621280 5723224 1743800 5687320 +1619296 5717232 1619328 5717256 1663944 5646256 1613592 5703136 +1663944 5646256 1663880 5646248 1613592 5703136 1619328 5717256 +1619296 5717232 1621280 5723224 1619328 5717256 1613592 5703136 +1621280 5723224 1619328 5717256 1619296 5717232 1621088 5722784 +1619296 5717232 1621040 5722712 1621088 5722784 1619328 5717256 +1619328 5717256 1613592 5703136 1619296 5717232 1621040 5722712 +1621088 5722784 1621280 5723224 1619328 5717256 1621040 5722712 +1619328 5717256 1621280 5723224 1663944 5646256 1613592 5703136 +1619296 5717232 1620992 5722672 1621040 5722712 1619328 5717256 +1621040 5722712 1621088 5722784 1619328 5717256 1620992 5722672 +1619296 5717232 1620992 5722672 1619328 5717256 1613592 5703136 +1619296 5717232 1619328 5717256 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619328 5717256 +1619328 5717256 1663944 5646256 1613592 5703136 1614696 5707712 +1619296 5717232 1620992 5722672 1619328 5717256 1614696 5707712 +1619296 5717232 1619328 5717256 1614696 5707712 1614704 5707744 +1619296 5717232 1619328 5717256 1614704 5707744 1614696 5707848 +1619296 5717232 1620992 5722672 1619328 5717256 1614704 5707744 +1619328 5717256 1613592 5703136 1614696 5707712 1614704 5707744 +1619296 5717232 1620872 5722632 1620992 5722672 1619328 5717256 +1619296 5717232 1620872 5722632 1619328 5717256 1614704 5707744 +1620992 5722672 1621040 5722712 1619328 5717256 1620872 5722632 +1619296 5717232 1619184 5717344 1620872 5722632 1619328 5717256 +1619296 5717232 1619224 5717272 1619184 5717344 1619328 5717256 +1619296 5717232 1619224 5717272 1619328 5717256 1614704 5707744 +1620872 5722632 1620992 5722672 1619328 5717256 1619184 5717344 +1619296 5717232 1619248 5717248 1619224 5717272 1619328 5717256 +1619224 5717272 1619184 5717344 1619328 5717256 1619248 5717248 +1619296 5717232 1619248 5717248 1619328 5717256 1614704 5707744 +1619184 5717344 1620792 5722624 1620872 5722632 1619328 5717256 +1620872 5722632 1620992 5722672 1619328 5717256 1620792 5722624 +1619184 5717344 1620656 5722632 1620792 5722624 1619328 5717256 +1619184 5717344 1620792 5722624 1619328 5717256 1619224 5717272 +1621280 5723224 1663944 5646256 1619328 5717256 1621088 5722784 +1619296 5717232 1619280 5717232 1619248 5717248 1619328 5717256 +1619296 5717232 1619280 5717232 1619328 5717256 1614704 5707744 +1619248 5717248 1619224 5717272 1619328 5717256 1619280 5717232 +1663944 5646256 1619360 5717312 1621280 5723224 1743800 5687320 +1619328 5717256 1619360 5717312 1663944 5646256 1613592 5703136 +1621280 5723224 1619360 5717312 1619328 5717256 1621088 5722784 +1619328 5717256 1621040 5722712 1621088 5722784 1619360 5717312 +1619328 5717256 1620992 5722672 1621040 5722712 1619360 5717312 +1621040 5722712 1621088 5722784 1619360 5717312 1620992 5722672 +1619360 5717312 1663944 5646256 1619328 5717256 1620992 5722672 +1619328 5717256 1620872 5722632 1620992 5722672 1619360 5717312 +1620992 5722672 1621040 5722712 1619360 5717312 1620872 5722632 +1619328 5717256 1620872 5722632 1619360 5717312 1663944 5646256 +1619328 5717256 1620792 5722624 1620872 5722632 1619360 5717312 +1619328 5717256 1620792 5722624 1619360 5717312 1663944 5646256 +1620872 5722632 1620992 5722672 1619360 5717312 1620792 5722624 +1619328 5717256 1619184 5717344 1620792 5722624 1619360 5717312 +1619328 5717256 1619184 5717344 1619360 5717312 1663944 5646256 +1620792 5722624 1620872 5722632 1619360 5717312 1619184 5717344 +1619184 5717344 1620656 5722632 1620792 5722624 1619360 5717312 +1619184 5717344 1620600 5722648 1620656 5722632 1619360 5717312 +1620792 5722624 1620872 5722632 1619360 5717312 1620656 5722632 +1620656 5722632 1620792 5722624 1619360 5717312 1620600 5722648 +1619184 5717344 1620584 5722728 1620600 5722648 1619360 5717312 +1619184 5717344 1620600 5722648 1619360 5717312 1619328 5717256 +1619328 5717256 1619224 5717272 1619184 5717344 1619360 5717312 +1619328 5717256 1619248 5717248 1619224 5717272 1619360 5717312 +1619328 5717256 1619224 5717272 1619360 5717312 1663944 5646256 +1619184 5717344 1620600 5722648 1619360 5717312 1619224 5717272 +1621088 5722784 1621280 5723224 1619360 5717312 1621040 5722712 +1621280 5723224 1663944 5646256 1619360 5717312 1621088 5722784 +1619360 5717312 1619392 5717424 1620992 5722672 1621040 5722712 +1619360 5717312 1619392 5717424 1621040 5722712 1621088 5722784 +1619392 5717424 1620992 5722672 1621040 5722712 1621088 5722784 +1620872 5722632 1619392 5717424 1619360 5717312 1620792 5722624 +1619392 5717424 1620872 5722632 1620992 5722672 1621040 5722712 +1620872 5722632 1620992 5722672 1619392 5717424 1620792 5722624 +1619360 5717312 1620656 5722632 1620792 5722624 1619392 5717424 +1620792 5722624 1620872 5722632 1619392 5717424 1620656 5722632 +1619360 5717312 1620600 5722648 1620656 5722632 1619392 5717424 +1619360 5717312 1619184 5717344 1620600 5722648 1619392 5717424 +1620656 5722632 1620792 5722624 1619392 5717424 1620600 5722648 +1620600 5722648 1620656 5722632 1619392 5717424 1619184 5717344 +1619184 5717344 1620584 5722728 1620600 5722648 1619392 5717424 +1619360 5717312 1619224 5717272 1619184 5717344 1619392 5717424 +1619360 5717312 1619392 5717424 1621088 5722784 1621280 5723224 +1619392 5717424 1621040 5722712 1621088 5722784 1621280 5723224 +1619360 5717312 1619184 5717344 1619392 5717424 1621280 5723224 +1619360 5717312 1619392 5717424 1621280 5723224 1663944 5646256 +1621280 5723224 1743800 5687320 1663944 5646256 1619392 5717424 +1619392 5717424 1621088 5722784 1621280 5723224 1663944 5646256 +1619360 5717312 1619392 5717424 1663944 5646256 1619328 5717256 +1619360 5717312 1619184 5717344 1619392 5717424 1663944 5646256 +1619184 5717344 1619392 5717504 1619392 5717424 1619360 5717312 +1619392 5717424 1619392 5717504 1620600 5722648 1620656 5722632 +1619392 5717424 1619184 5717344 1619392 5717504 1620656 5722632 +1619392 5717504 1619184 5717344 1620600 5722648 1620656 5722632 +1619392 5717424 1619392 5717504 1620656 5722632 1620792 5722624 +1619392 5717424 1619392 5717504 1620792 5722624 1620872 5722632 +1619392 5717424 1619392 5717504 1620872 5722632 1620992 5722672 +1619392 5717504 1620792 5722624 1620872 5722632 1620992 5722672 +1619392 5717424 1619392 5717504 1620992 5722672 1621040 5722712 +1619392 5717424 1619392 5717504 1621040 5722712 1621088 5722784 +1619392 5717504 1620872 5722632 1620992 5722672 1621040 5722712 +1619392 5717424 1619184 5717344 1619392 5717504 1621040 5722712 +1619392 5717504 1620656 5722632 1620792 5722624 1620872 5722632 +1619392 5717504 1620600 5722648 1620656 5722632 1620792 5722624 +1620600 5722648 1619392 5717504 1619184 5717344 1620584 5722728 +1619392 5717504 1619352 5717512 1620600 5722648 1620656 5722632 +1619184 5717344 1619352 5717512 1619392 5717504 1619392 5717424 +1619352 5717512 1620600 5722648 1619392 5717504 1619392 5717424 +1619184 5717344 1620600 5722648 1619352 5717512 1619392 5717424 +1619184 5717344 1619352 5717512 1619392 5717424 1619360 5717312 +1620600 5722648 1619352 5717512 1619184 5717344 1620584 5722728 +1619352 5717512 1619336 5717528 1620600 5722648 1619392 5717504 +1620600 5722648 1620656 5722632 1619392 5717504 1619336 5717528 +1619392 5717504 1619352 5717512 1619336 5717528 1620656 5722632 +1619352 5717512 1619184 5717344 1619336 5717528 1619392 5717504 +1619184 5717344 1619336 5717528 1619352 5717512 1619392 5717424 +1619336 5717528 1619184 5717344 1620600 5722648 1620656 5722632 +1620656 5722632 1620792 5722624 1619392 5717504 1619336 5717528 +1620600 5722648 1619336 5717528 1619184 5717344 1620584 5722728 +1620600 5722648 1620656 5722632 1619336 5717528 1620584 5722728 +1619336 5717528 1619352 5717512 1619184 5717344 1620584 5722728 +1619184 5717344 1611328 5715760 1620584 5722728 1619336 5717528 +1619184 5717344 1619312 5717528 1619336 5717528 1619352 5717512 +1619184 5717344 1619312 5717528 1619352 5717512 1619392 5717424 +1619352 5717512 1619392 5717504 1619392 5717424 1619312 5717528 +1619312 5717528 1620584 5722728 1619336 5717528 1619352 5717512 +1619312 5717528 1619336 5717528 1619352 5717512 1619392 5717424 +1619184 5717344 1620584 5722728 1619312 5717528 1619392 5717424 +1620584 5722728 1619312 5717528 1619184 5717344 1611328 5715760 +1620584 5722728 1619312 5717528 1611328 5715760 1620600 5722784 +1619184 5717344 1611424 5715704 1611328 5715760 1619312 5717528 +1620584 5722728 1619336 5717528 1619312 5717528 1611328 5715760 +1619312 5717528 1619392 5717424 1619184 5717344 1611424 5715704 +1611328 5715760 1620584 5722728 1619312 5717528 1611424 5715704 +1619184 5717344 1611456 5715680 1611424 5715704 1619312 5717528 +1619184 5717344 1619312 5717528 1619392 5717424 1619360 5717312 +1619336 5717528 1619312 5717528 1620584 5722728 1620600 5722648 +1619336 5717528 1619312 5717528 1620600 5722648 1620656 5722632 +1619336 5717528 1619352 5717512 1619312 5717528 1620600 5722648 +1619312 5717528 1611328 5715760 1620584 5722728 1620600 5722648 +1619312 5717528 1619264 5717504 1611424 5715704 1611328 5715760 +1619312 5717528 1619184 5717344 1619264 5717504 1611328 5715760 +1619184 5717344 1619264 5717504 1619312 5717528 1619392 5717424 +1619312 5717528 1619352 5717512 1619392 5717424 1619264 5717504 +1619352 5717512 1619392 5717504 1619392 5717424 1619264 5717504 +1619312 5717528 1619336 5717528 1619352 5717512 1619264 5717504 +1619264 5717504 1611328 5715760 1619312 5717528 1619352 5717512 +1619392 5717424 1619184 5717344 1619264 5717504 1619352 5717512 +1619184 5717344 1611424 5715704 1619264 5717504 1619392 5717424 +1619264 5717504 1619184 5717344 1611424 5715704 1611328 5715760 +1619312 5717528 1619264 5717504 1611328 5715760 1620584 5722728 +1611328 5715760 1620600 5722784 1620584 5722728 1619264 5717504 +1619264 5717504 1611424 5715704 1611328 5715760 1620584 5722728 +1619312 5717528 1619264 5717504 1620584 5722728 1620600 5722648 +1619312 5717528 1619352 5717512 1619264 5717504 1620600 5722648 +1619264 5717504 1611328 5715760 1620584 5722728 1620600 5722648 +1611424 5715704 1619264 5717504 1619184 5717344 1611456 5715680 +1619184 5717344 1611520 5715576 1611456 5715680 1619264 5717504 +1619264 5717504 1619392 5717424 1619184 5717344 1611456 5715680 +1611424 5715704 1611328 5715760 1619264 5717504 1611456 5715680 +1619184 5717344 1619264 5717504 1619392 5717424 1619360 5717312 +1619264 5717504 1619352 5717512 1619392 5717424 1619360 5717312 +1619184 5717344 1611456 5715680 1619264 5717504 1619360 5717312 +1619312 5717528 1619264 5717504 1620600 5722648 1619336 5717528 +1619184 5717344 1619264 5717504 1619360 5717312 1619224 5717272 +1611456 5715680 1619232 5717472 1619184 5717344 1611520 5715576 +1619184 5717344 1619232 5717472 1619264 5717504 1619360 5717312 +1619232 5717472 1611456 5715680 1619264 5717504 1619360 5717312 +1619264 5717504 1619232 5717472 1611456 5715680 1611424 5715704 +1619264 5717504 1619360 5717312 1619232 5717472 1611424 5715704 +1619232 5717472 1619184 5717344 1611456 5715680 1611424 5715704 +1619264 5717504 1619232 5717472 1611424 5715704 1611328 5715760 +1619264 5717504 1619232 5717472 1611328 5715760 1620584 5722728 +1611328 5715760 1620600 5722784 1620584 5722728 1619232 5717472 +1619264 5717504 1619360 5717312 1619232 5717472 1620584 5722728 +1619232 5717472 1611424 5715704 1611328 5715760 1620584 5722728 +1619264 5717504 1619232 5717472 1620584 5722728 1620600 5722648 +1619232 5717472 1611328 5715760 1620584 5722728 1620600 5722648 +1619264 5717504 1619232 5717472 1620600 5722648 1619312 5717528 +1619264 5717504 1619360 5717312 1619232 5717472 1620600 5722648 +1619232 5717472 1611456 5715680 1611424 5715704 1611328 5715760 +1619264 5717504 1619392 5717424 1619360 5717312 1619232 5717472 +1619264 5717504 1619352 5717512 1619392 5717424 1619232 5717472 +1619264 5717504 1619392 5717424 1619232 5717472 1620600 5722648 +1619360 5717312 1619184 5717344 1619232 5717472 1619392 5717424 +1619184 5717344 1611456 5715680 1619232 5717472 1619360 5717312 +1619184 5717344 1619232 5717472 1619360 5717312 1619224 5717272 +1611456 5715680 1619184 5717400 1619184 5717344 1611520 5715576 +1619232 5717472 1619184 5717400 1611456 5715680 1611424 5715704 +1619184 5717344 1611528 5715552 1611520 5715576 1619184 5717400 +1619232 5717472 1619184 5717400 1611424 5715704 1611328 5715760 +1619232 5717472 1619184 5717344 1619184 5717400 1611424 5715704 +1619184 5717344 1619184 5717400 1619232 5717472 1619360 5717312 +1619232 5717472 1619392 5717424 1619360 5717312 1619184 5717400 +1619184 5717400 1611424 5715704 1619232 5717472 1619360 5717312 +1611456 5715680 1611424 5715704 1619184 5717400 1611520 5715576 +1619184 5717400 1619360 5717312 1619184 5717344 1611520 5715576 +1619184 5717344 1619184 5717400 1619360 5717312 1619224 5717272 +1611456 5715680 1619184 5717400 1611520 5715576 1611464 5715656 +1611424 5715704 1618888 5717376 1619184 5717400 1611456 5715680 +1619232 5717472 1618888 5717376 1611424 5715704 1611328 5715760 +1619232 5717472 1618888 5717376 1611328 5715760 1620584 5722728 +1611328 5715760 1620600 5722784 1620584 5722728 1618888 5717376 +1619232 5717472 1618888 5717376 1620584 5722728 1620600 5722648 +1618888 5717376 1611328 5715760 1620584 5722728 1620600 5722648 +1619232 5717472 1618888 5717376 1620600 5722648 1619264 5717504 +1618888 5717376 1620584 5722728 1620600 5722648 1619264 5717504 +1620600 5722648 1619312 5717528 1619264 5717504 1618888 5717376 +1620600 5722648 1619312 5717528 1618888 5717376 1620584 5722728 +1619264 5717504 1619232 5717472 1618888 5717376 1619312 5717528 +1618888 5717376 1611424 5715704 1611328 5715760 1620584 5722728 +1619184 5717400 1611520 5715576 1611456 5715680 1618888 5717376 +1619184 5717400 1619184 5717344 1611520 5715576 1618888 5717376 +1611456 5715680 1611424 5715704 1618888 5717376 1611520 5715576 +1619184 5717344 1611528 5715552 1611520 5715576 1618888 5717376 +1619184 5717344 1611528 5715552 1618888 5717376 1619184 5717400 +1619184 5717344 1619224 5717272 1611528 5715552 1618888 5717376 +1619184 5717344 1619224 5717272 1618888 5717376 1619184 5717400 +1611528 5715552 1611520 5715576 1618888 5717376 1619224 5717272 +1611520 5715576 1611456 5715680 1618888 5717376 1611528 5715552 +1618888 5717376 1619232 5717472 1619184 5717400 1619184 5717344 +1619232 5717472 1619184 5717400 1618888 5717376 1619264 5717504 +1611424 5715704 1611328 5715760 1618888 5717376 1611456 5715680 +1620600 5722648 1619336 5717528 1619312 5717528 1618888 5717376 +1611520 5715576 1611464 5715656 1611456 5715680 1618888 5717376 +1619224 5717272 1619248 5717248 1611528 5715552 1618888 5717376 +1611528 5715552 1611520 5715576 1618888 5717376 1619248 5717248 +1619248 5717248 1613840 5708448 1611528 5715552 1618888 5717376 +1619248 5717248 1614576 5708144 1613840 5708448 1618888 5717376 +1613840 5708448 1611512 5715528 1611528 5715552 1618888 5717376 +1614576 5708144 1613896 5708408 1613840 5708448 1618888 5717376 +1611528 5715552 1611520 5715576 1618888 5717376 1613840 5708448 +1613840 5708448 1611528 5715552 1618888 5717376 1614576 5708144 +1619224 5717272 1619248 5717248 1618888 5717376 1619184 5717344 +1619248 5717248 1619280 5717232 1614576 5708144 1618888 5717376 +1614576 5708144 1613840 5708448 1618888 5717376 1619280 5717232 +1619248 5717248 1619280 5717232 1618888 5717376 1619224 5717272 +1619280 5717232 1614648 5708080 1614576 5708144 1618888 5717376 +1618888 5717376 1618952 5717376 1619184 5717344 1619224 5717272 +1618888 5717376 1618952 5717376 1619224 5717272 1619248 5717248 +1618952 5717376 1619184 5717344 1619224 5717272 1619248 5717248 +1619184 5717400 1618952 5717376 1618888 5717376 1619232 5717472 +1618888 5717376 1619264 5717504 1619232 5717472 1618952 5717376 +1618888 5717376 1619312 5717528 1619264 5717504 1618952 5717376 +1619232 5717472 1619184 5717400 1618952 5717376 1619264 5717504 +1618888 5717376 1619264 5717504 1618952 5717376 1619248 5717248 +1619184 5717400 1619184 5717344 1618952 5717376 1619232 5717472 +1618952 5717376 1619184 5717400 1619184 5717344 1619224 5717272 +1618888 5717376 1618952 5717376 1619248 5717248 1619280 5717232 +1620600 5722648 1619032 5717456 1618888 5717376 1620584 5722728 +1618888 5717376 1619032 5717456 1619312 5717528 1619264 5717504 +1618888 5717376 1619032 5717456 1619264 5717504 1618952 5717376 +1619032 5717456 1619312 5717528 1619264 5717504 1618952 5717376 +1619264 5717504 1619232 5717472 1618952 5717376 1619032 5717456 +1619264 5717504 1619232 5717472 1619032 5717456 1619312 5717528 +1618952 5717376 1618888 5717376 1619032 5717456 1619232 5717472 +1619232 5717472 1619184 5717400 1618952 5717376 1619032 5717456 +1618952 5717376 1618888 5717376 1619032 5717456 1619184 5717400 +1619232 5717472 1619184 5717400 1619032 5717456 1619264 5717504 +1619032 5717456 1620600 5722648 1619312 5717528 1619264 5717504 +1619184 5717400 1619184 5717344 1618952 5717376 1619032 5717456 +1618952 5717376 1618888 5717376 1619032 5717456 1619184 5717344 +1619184 5717400 1619184 5717344 1619032 5717456 1619232 5717472 +1618888 5717376 1620600 5722648 1619032 5717456 1618952 5717376 +1619184 5717344 1619224 5717272 1618952 5717376 1619032 5717456 +1619312 5717528 1619032 5717456 1620600 5722648 1619336 5717528 +1619032 5717456 1619064 5717512 1619312 5717528 1619264 5717504 +1619032 5717456 1619064 5717512 1619264 5717504 1619232 5717472 +1619032 5717456 1619064 5717512 1619232 5717472 1619184 5717400 +1619064 5717512 1619264 5717504 1619232 5717472 1619184 5717400 +1619032 5717456 1619064 5717512 1619184 5717400 1619184 5717344 +1619064 5717512 1619312 5717528 1619264 5717504 1619232 5717472 +1620600 5722648 1619064 5717512 1619032 5717456 1618888 5717376 +1620600 5722648 1619064 5717512 1618888 5717376 1620584 5722728 +1619032 5717456 1618888 5717376 1619064 5717512 1619184 5717400 +1619032 5717456 1618952 5717376 1618888 5717376 1619064 5717512 +1619312 5717528 1619064 5717512 1620600 5722648 1619336 5717528 +1619064 5717512 1620600 5722648 1619312 5717528 1619264 5717504 +1620600 5722648 1619312 5717528 1619064 5717512 1618888 5717376 +1620600 5722648 1619072 5717544 1618888 5717376 1620584 5722728 +1618888 5717376 1619072 5717544 1619064 5717512 1619032 5717456 +1618888 5717376 1619072 5717544 1619032 5717456 1618952 5717376 +1619072 5717544 1620600 5722648 1619064 5717512 1619032 5717456 +1619064 5717512 1619072 5717544 1620600 5722648 1619312 5717528 +1620600 5722648 1619336 5717528 1619312 5717528 1619072 5717544 +1620600 5722648 1620656 5722632 1619336 5717528 1619072 5717544 +1619064 5717512 1619072 5717544 1619312 5717528 1619264 5717504 +1619064 5717512 1619072 5717544 1619264 5717504 1619232 5717472 +1619064 5717512 1619072 5717544 1619232 5717472 1619184 5717400 +1619072 5717544 1619312 5717528 1619264 5717504 1619232 5717472 +1619064 5717512 1619032 5717456 1619072 5717544 1619232 5717472 +1619312 5717528 1619264 5717504 1619072 5717544 1619336 5717528 +1619072 5717544 1618888 5717376 1620600 5722648 1619336 5717528 +1618888 5717376 1620600 5722648 1619072 5717544 1619032 5717456 +1620600 5722648 1619064 5717632 1618888 5717376 1620584 5722728 +1618888 5717376 1611328 5715760 1620584 5722728 1619064 5717632 +1611328 5715760 1620600 5722784 1620584 5722728 1619064 5717632 +1620584 5722728 1620600 5722648 1619064 5717632 1611328 5715760 +1618888 5717376 1611424 5715704 1611328 5715760 1619064 5717632 +1619072 5717544 1619064 5717632 1620600 5722648 1619336 5717528 +1620600 5722648 1620656 5722632 1619336 5717528 1619064 5717632 +1620656 5722632 1619392 5717504 1619336 5717528 1619064 5717632 +1619072 5717544 1619064 5717632 1619336 5717528 1619312 5717528 +1619072 5717544 1619064 5717632 1619312 5717528 1619264 5717504 +1619064 5717632 1619336 5717528 1619312 5717528 1619264 5717504 +1619072 5717544 1619064 5717632 1619264 5717504 1619232 5717472 +1619336 5717528 1619312 5717528 1619064 5717632 1620656 5722632 +1619072 5717544 1618888 5717376 1619064 5717632 1619264 5717504 +1618888 5717376 1619064 5717632 1619072 5717544 1619032 5717456 +1619072 5717544 1619064 5717512 1619032 5717456 1619064 5717632 +1618888 5717376 1619064 5717632 1619032 5717456 1618952 5717376 +1619064 5717632 1619264 5717504 1619072 5717544 1619032 5717456 +1620600 5722648 1620656 5722632 1619064 5717632 1620584 5722728 +1619064 5717632 1619032 5717456 1618888 5717376 1611328 5715760 +1620584 5722728 1618976 5717632 1611328 5715760 1620600 5722784 +1619064 5717632 1618976 5717632 1620584 5722728 1620600 5722648 +1611328 5715760 1618976 5717632 1619064 5717632 1618888 5717376 +1611328 5715760 1618976 5717632 1618888 5717376 1611424 5715704 +1618976 5717632 1619064 5717632 1618888 5717376 1611424 5715704 +1618888 5717376 1611456 5715680 1611424 5715704 1618976 5717632 +1618888 5717376 1611520 5715576 1611456 5715680 1618976 5717632 +1618888 5717376 1611456 5715680 1618976 5717632 1619064 5717632 +1611424 5715704 1611328 5715760 1618976 5717632 1611456 5715680 +1619064 5717632 1618976 5717632 1620600 5722648 1620656 5722632 +1619064 5717632 1618888 5717376 1618976 5717632 1620600 5722648 +1619064 5717632 1619032 5717456 1618888 5717376 1618976 5717632 +1618888 5717376 1611456 5715680 1618976 5717632 1619032 5717456 +1619032 5717456 1618952 5717376 1618888 5717376 1618976 5717632 +1619064 5717632 1619072 5717544 1619032 5717456 1618976 5717632 +1619072 5717544 1619064 5717512 1619032 5717456 1618976 5717632 +1619072 5717544 1619064 5717512 1618976 5717632 1619064 5717632 +1619064 5717632 1619072 5717544 1618976 5717632 1620600 5722648 +1619032 5717456 1618888 5717376 1618976 5717632 1619064 5717512 +1618976 5717632 1611328 5715760 1620584 5722728 1620600 5722648 +1611328 5715760 1620584 5722728 1618976 5717632 1611424 5715704 +1611456 5715680 1618920 5717592 1618888 5717376 1611520 5715576 +1618888 5717376 1618920 5717592 1618976 5717632 1619032 5717456 +1618976 5717632 1618920 5717592 1611456 5715680 1611424 5715704 +1618976 5717632 1618920 5717592 1611424 5715704 1611328 5715760 +1618920 5717592 1611456 5715680 1611424 5715704 1611328 5715760 +1618888 5717376 1618920 5717592 1619032 5717456 1618952 5717376 +1618920 5717592 1618976 5717632 1619032 5717456 1618952 5717376 +1618976 5717632 1619064 5717512 1619032 5717456 1618920 5717592 +1619032 5717456 1618952 5717376 1618920 5717592 1619064 5717512 +1618976 5717632 1619072 5717544 1619064 5717512 1618920 5717592 +1618976 5717632 1619064 5717632 1619072 5717544 1618920 5717592 +1619064 5717512 1619032 5717456 1618920 5717592 1619072 5717544 +1618920 5717592 1611328 5715760 1618976 5717632 1619072 5717544 +1618976 5717632 1618920 5717592 1611328 5715760 1620584 5722728 +1611328 5715760 1620600 5722784 1620584 5722728 1618920 5717592 +1618920 5717592 1611424 5715704 1611328 5715760 1620584 5722728 +1618976 5717632 1618920 5717592 1620584 5722728 1620600 5722648 +1618976 5717632 1618920 5717592 1620600 5722648 1619064 5717632 +1618976 5717632 1619072 5717544 1618920 5717592 1620600 5722648 +1618920 5717592 1611328 5715760 1620584 5722728 1620600 5722648 +1618920 5717592 1618888 5717376 1611456 5715680 1611424 5715704 +1618888 5717376 1611456 5715680 1618920 5717592 1618952 5717376 +1611456 5715680 1618864 5717544 1618888 5717376 1611520 5715576 +1618888 5717376 1611528 5715552 1611520 5715576 1618864 5717544 +1611456 5715680 1618864 5717544 1611520 5715576 1611464 5715656 +1611456 5715680 1618920 5717592 1618864 5717544 1611520 5715576 +1618864 5717544 1618920 5717592 1618888 5717376 1611520 5715576 +1618920 5717592 1618864 5717544 1611456 5715680 1611424 5715704 +1618920 5717592 1618864 5717544 1611424 5715704 1611328 5715760 +1618920 5717592 1618864 5717544 1611328 5715760 1620584 5722728 +1611328 5715760 1620600 5722784 1620584 5722728 1618864 5717544 +1618864 5717544 1611424 5715704 1611328 5715760 1620584 5722728 +1618920 5717592 1618864 5717544 1620584 5722728 1620600 5722648 +1618864 5717544 1611328 5715760 1620584 5722728 1620600 5722648 +1618920 5717592 1618864 5717544 1620600 5722648 1618976 5717632 +1618864 5717544 1611520 5715576 1611456 5715680 1611424 5715704 +1618864 5717544 1611456 5715680 1611424 5715704 1611328 5715760 +1618920 5717592 1618888 5717376 1618864 5717544 1620600 5722648 +1618888 5717376 1618864 5717544 1618920 5717592 1618952 5717376 +1618920 5717592 1619032 5717456 1618952 5717376 1618864 5717544 +1618920 5717592 1619064 5717512 1619032 5717456 1618864 5717544 +1618888 5717376 1611520 5715576 1618864 5717544 1618952 5717376 +1618864 5717544 1620600 5722648 1618920 5717592 1619032 5717456 +1618952 5717376 1618888 5717376 1618864 5717544 1619032 5717456 +1618864 5717544 1618832 5717504 1611520 5715576 1611456 5715680 +1618832 5717504 1618888 5717376 1611520 5715576 1611456 5715680 +1611520 5715576 1618832 5717504 1618888 5717376 1611528 5715552 +1618888 5717376 1613840 5708448 1611528 5715552 1618832 5717504 +1611520 5715576 1611456 5715680 1618832 5717504 1611528 5715552 +1618832 5717504 1618864 5717544 1618888 5717376 1611528 5715552 +1611520 5715576 1611464 5715656 1611456 5715680 1618832 5717504 +1618864 5717544 1618832 5717504 1611456 5715680 1611424 5715704 +1618832 5717504 1611520 5715576 1611456 5715680 1611424 5715704 +1618864 5717544 1618888 5717376 1618832 5717504 1611424 5715704 +1618888 5717376 1618832 5717504 1618864 5717544 1618952 5717376 +1618888 5717376 1611528 5715552 1618832 5717504 1618952 5717376 +1618832 5717504 1611424 5715704 1618864 5717544 1618952 5717376 +1618864 5717544 1618832 5717504 1611424 5715704 1611328 5715760 +1618864 5717544 1618832 5717504 1611328 5715760 1620584 5722728 +1618832 5717504 1611456 5715680 1611424 5715704 1611328 5715760 +1618864 5717544 1618952 5717376 1618832 5717504 1611328 5715760 +1618864 5717544 1619032 5717456 1618952 5717376 1618832 5717504 +1611528 5715552 1618816 5717464 1618888 5717376 1613840 5708448 +1618888 5717376 1618816 5717464 1618832 5717504 1618952 5717376 +1618832 5717504 1618816 5717464 1611528 5715552 1611520 5715576 +1618832 5717504 1618816 5717464 1611520 5715576 1611456 5715680 +1618832 5717504 1618816 5717464 1611456 5715680 1611424 5715704 +1618832 5717504 1618888 5717376 1618816 5717464 1611456 5715680 +1618816 5717464 1618888 5717376 1611528 5715552 1611520 5715576 +1618816 5717464 1611528 5715552 1611520 5715576 1611456 5715680 +1611520 5715576 1611464 5715656 1611456 5715680 1618816 5717464 +1611528 5715552 1618824 5717440 1618888 5717376 1613840 5708448 +1618816 5717464 1618824 5717440 1611528 5715552 1611520 5715576 +1618888 5717376 1618824 5717440 1618816 5717464 1618832 5717504 +1618888 5717376 1618824 5717440 1618832 5717504 1618952 5717376 +1618824 5717440 1611528 5715552 1618816 5717464 1618832 5717504 +1618888 5717376 1611528 5715552 1618824 5717440 1618832 5717504 +1611528 5715552 1618856 5717400 1618888 5717376 1613840 5708448 +1618824 5717440 1618856 5717400 1611528 5715552 1618816 5717464 +1618888 5717376 1618856 5717400 1618824 5717440 1618832 5717504 +1618888 5717376 1618856 5717400 1618832 5717504 1618952 5717376 +1618824 5717440 1618816 5717464 1618832 5717504 1618856 5717400 +1618856 5717400 1611528 5715552 1618824 5717440 1618832 5717504 +1618856 5717400 1618824 5717440 1618832 5717504 1618952 5717376 +1618888 5717376 1611528 5715552 1618856 5717400 1618952 5717376 +1618832 5717504 1618864 5717544 1618952 5717376 1618856 5717400 +1618952 5717376 1618888 5717376 1618856 5717400 1618864 5717544 +1618832 5717504 1618864 5717544 1618856 5717400 1618824 5717440 +1618864 5717544 1619032 5717456 1618952 5717376 1618856 5717400 +1621280 5723304 1629904 5726504 1760125 5760125 1751256 5699792 +1620224 5752472 1629904 5726504 1621280 5723304 1620192 5752400 +1760125 5760125 1751376 5699848 1751256 5699792 1629904 5726504 +1760125 5760125 1629904 5726504 1620224 5752472 1620224 5752520 +1760125 5760125 1629904 5726504 1620224 5752520 1620152 5752552 +1621280 5723304 1629904 5726504 1751256 5699792 1743888 5687504 +1629904 5726504 1760125 5760125 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1629904 5726504 +1621280 5723304 1629904 5726504 1743888 5687504 1621280 5723224 +1629904 5726504 1751256 5699792 1743888 5687504 1621280 5723224 +1743888 5687504 1743800 5687320 1621280 5723224 1629904 5726504 +1621280 5723224 1621280 5723304 1629904 5726504 1743800 5687320 +1743888 5687504 1743800 5687320 1629904 5726504 1751256 5699792 +1743800 5687320 1663944 5646256 1621280 5723224 1629904 5726504 +1663944 5646256 1619392 5717424 1621280 5723224 1629904 5726504 +1743800 5687320 1664040 5646192 1663944 5646256 1629904 5726504 +1663944 5646256 1619360 5717312 1619392 5717424 1629904 5726504 +1619392 5717424 1621280 5723224 1629904 5726504 1619360 5717312 +1621280 5723224 1621280 5723304 1629904 5726504 1619392 5717424 +1663944 5646256 1619360 5717312 1629904 5726504 1743800 5687320 +1743800 5687320 1663944 5646256 1629904 5726504 1743888 5687504 +1629904 5726504 1620224 5752520 1760125 5760125 1751256 5699792 +1620224 5752472 1620224 5752520 1629904 5726504 1620192 5752400 +1621280 5723304 1620192 5752400 1629904 5726504 1621280 5723224 +1621280 5723304 1617768 5747376 1620192 5752400 1629904 5726504 +1620192 5752400 1620224 5752472 1629904 5726504 1617768 5747376 +1617768 5747376 1617848 5747624 1620192 5752400 1629904 5726504 +1620192 5752400 1620224 5752472 1629904 5726504 1617848 5747624 +1617848 5747624 1620152 5752352 1620192 5752400 1629904 5726504 +1621280 5723304 1617768 5747376 1629904 5726504 1621280 5723224 +1617768 5747376 1617848 5747624 1629904 5726504 1621280 5723304 +1621280 5723304 1617712 5747256 1617768 5747376 1629904 5726504 +1621280 5723304 1615632 5735512 1617712 5747256 1629904 5726504 +1615632 5735512 1617608 5747096 1617712 5747256 1629904 5726504 +1615632 5735512 1617512 5746992 1617608 5747096 1629904 5726504 +1615632 5735512 1617608 5747096 1629904 5726504 1621280 5723304 +1621280 5723304 1615632 5735416 1615632 5735512 1629904 5726504 +1615632 5735512 1617608 5747096 1629904 5726504 1615632 5735416 +1621280 5723304 1621208 5723336 1615632 5735416 1629904 5726504 +1615632 5735416 1615632 5735512 1629904 5726504 1621208 5723336 +1621280 5723304 1621208 5723336 1629904 5726504 1621280 5723224 +1617768 5747376 1617848 5747624 1629904 5726504 1617712 5747256 +1621208 5723336 1615584 5735320 1615632 5735416 1629904 5726504 +1615632 5735416 1615632 5735512 1629904 5726504 1615584 5735320 +1621208 5723336 1615584 5735320 1629904 5726504 1621280 5723304 +1621208 5723336 1621144 5723336 1615584 5735320 1629904 5726504 +1617712 5747256 1617768 5747376 1629904 5726504 1617608 5747096 +1619392 5717424 1621088 5722784 1621280 5723224 1629904 5726504 +1619392 5717424 1621088 5722784 1629904 5726504 1619360 5717312 +1619392 5717424 1621040 5722712 1621088 5722784 1629904 5726504 +1619392 5717424 1621040 5722712 1629904 5726504 1619360 5717312 +1619392 5717424 1619392 5717504 1621040 5722712 1629904 5726504 +1619392 5717424 1619392 5717504 1629904 5726504 1619360 5717312 +1621040 5722712 1621088 5722784 1629904 5726504 1619392 5717504 +1619392 5717504 1620992 5722672 1621040 5722712 1629904 5726504 +1621280 5723224 1621280 5723304 1629904 5726504 1621088 5722784 +1621088 5722784 1621280 5723224 1629904 5726504 1621040 5722712 +1663944 5646256 1619328 5717256 1619360 5717312 1629904 5726504 +1663944 5646256 1613592 5703136 1619328 5717256 1629904 5726504 +1663944 5646256 1663880 5646248 1613592 5703136 1629904 5726504 +1613592 5703136 1614696 5707712 1619328 5717256 1629904 5726504 +1613592 5703136 1614680 5707680 1614696 5707712 1629904 5726504 +1613592 5703136 1614696 5707712 1629904 5726504 1663880 5646248 +1614696 5707712 1614704 5707744 1619328 5717256 1629904 5726504 +1619360 5717312 1619392 5717424 1629904 5726504 1619328 5717256 +1663944 5646256 1663880 5646248 1629904 5726504 1743800 5687320 +1663880 5646248 1611560 5699312 1613592 5703136 1629904 5726504 +1619328 5717256 1619360 5717312 1629904 5726504 1614696 5707712 +1760125 5760125 1629944 5726576 1620224 5752520 1620152 5752552 +1620224 5752520 1629944 5726576 1629904 5726504 1620224 5752472 +1629904 5726504 1629944 5726576 1760125 5760125 1751256 5699792 +1629904 5726504 1629944 5726576 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1629944 5726576 +1760125 5760125 1751376 5699848 1751256 5699792 1629944 5726576 +1629904 5726504 1629944 5726576 1743888 5687504 1743800 5687320 +1629944 5726576 1751256 5699792 1743888 5687504 1743800 5687320 +1629904 5726504 1629944 5726576 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1629944 5726576 +1629944 5726576 1743888 5687504 1743800 5687320 1663944 5646256 +1629904 5726504 1629944 5726576 1663944 5646256 1663880 5646248 +1629944 5726576 1760125 5760125 1751256 5699792 1743888 5687504 +1629904 5726504 1620192 5752400 1620224 5752472 1629944 5726576 +1629904 5726504 1617848 5747624 1620192 5752400 1629944 5726576 +1620224 5752472 1620224 5752520 1629944 5726576 1620192 5752400 +1617848 5747624 1620152 5752352 1620192 5752400 1629944 5726576 +1629904 5726504 1617768 5747376 1617848 5747624 1629944 5726576 +1617848 5747624 1620192 5752400 1629944 5726576 1617768 5747376 +1620192 5752400 1620224 5752472 1629944 5726576 1617848 5747624 +1629944 5726576 1663944 5646256 1629904 5726504 1617768 5747376 +1629944 5726576 1620224 5752520 1760125 5760125 1751256 5699792 +1620224 5752520 1760125 5760125 1629944 5726576 1620224 5752472 +1629904 5726504 1617712 5747256 1617768 5747376 1629944 5726576 +1617768 5747376 1617848 5747624 1629944 5726576 1617712 5747256 +1629904 5726504 1617712 5747256 1629944 5726576 1663944 5646256 +1629904 5726504 1617608 5747096 1617712 5747256 1629944 5726576 +1629904 5726504 1615632 5735512 1617608 5747096 1629944 5726576 +1615632 5735512 1617512 5746992 1617608 5747096 1629944 5726576 +1629904 5726504 1615632 5735416 1615632 5735512 1629944 5726576 +1615632 5735512 1617608 5747096 1629944 5726576 1615632 5735416 +1629904 5726504 1615584 5735320 1615632 5735416 1629944 5726576 +1615632 5735416 1615632 5735512 1629944 5726576 1615584 5735320 +1629904 5726504 1615584 5735320 1629944 5726576 1663944 5646256 +1617712 5747256 1617768 5747376 1629944 5726576 1617608 5747096 +1629904 5726504 1621208 5723336 1615584 5735320 1629944 5726576 +1615584 5735320 1615632 5735416 1629944 5726576 1621208 5723336 +1629904 5726504 1621280 5723304 1621208 5723336 1629944 5726576 +1629904 5726504 1621208 5723336 1629944 5726576 1663944 5646256 +1621208 5723336 1621144 5723336 1615584 5735320 1629944 5726576 +1617608 5747096 1617712 5747256 1629944 5726576 1615632 5735512 +1760125 5760125 1629944 5726624 1620224 5752520 1620152 5752552 +1629944 5726576 1629944 5726624 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1629944 5726624 +1629944 5726576 1629944 5726624 1751256 5699792 1743888 5687504 +1629944 5726576 1620224 5752520 1629944 5726624 1751256 5699792 +1620224 5752520 1629944 5726624 1629944 5726576 1620224 5752472 +1629944 5726576 1620192 5752400 1620224 5752472 1629944 5726624 +1629944 5726576 1617848 5747624 1620192 5752400 1629944 5726624 +1629944 5726576 1617768 5747376 1617848 5747624 1629944 5726624 +1620192 5752400 1620224 5752472 1629944 5726624 1617848 5747624 +1617848 5747624 1620152 5752352 1620192 5752400 1629944 5726624 +1629944 5726576 1617712 5747256 1617768 5747376 1629944 5726624 +1617768 5747376 1617848 5747624 1629944 5726624 1617712 5747256 +1617848 5747624 1620192 5752400 1629944 5726624 1617768 5747376 +1629944 5726624 1751256 5699792 1629944 5726576 1617712 5747256 +1620224 5752472 1620224 5752520 1629944 5726624 1620192 5752400 +1629944 5726624 1620224 5752520 1760125 5760125 1751256 5699792 +1620224 5752520 1760125 5760125 1629944 5726624 1620224 5752472 +1629944 5726576 1617608 5747096 1617712 5747256 1629944 5726624 +1617712 5747256 1617768 5747376 1629944 5726624 1617608 5747096 +1629944 5726576 1617608 5747096 1629944 5726624 1751256 5699792 +1629944 5726576 1615632 5735512 1617608 5747096 1629944 5726624 +1629944 5726576 1615632 5735416 1615632 5735512 1629944 5726624 +1615632 5735512 1617512 5746992 1617608 5747096 1629944 5726624 +1629944 5726576 1615584 5735320 1615632 5735416 1629944 5726624 +1615632 5735416 1615632 5735512 1629944 5726624 1615584 5735320 +1629944 5726576 1621208 5723336 1615584 5735320 1629944 5726624 +1615584 5735320 1615632 5735416 1629944 5726624 1621208 5723336 +1629944 5726576 1621208 5723336 1629944 5726624 1751256 5699792 +1617608 5747096 1617712 5747256 1629944 5726624 1615632 5735512 +1621208 5723336 1621144 5723336 1615584 5735320 1629944 5726624 +1629944 5726576 1629904 5726504 1621208 5723336 1629944 5726624 +1621208 5723336 1615584 5735320 1629944 5726624 1629904 5726504 +1629904 5726504 1621280 5723304 1621208 5723336 1629944 5726624 +1621208 5723336 1615584 5735320 1629944 5726624 1621280 5723304 +1629904 5726504 1621280 5723224 1621280 5723304 1629944 5726624 +1629944 5726576 1629904 5726504 1629944 5726624 1751256 5699792 +1629904 5726504 1621280 5723304 1629944 5726624 1629944 5726576 +1615632 5735512 1617608 5747096 1629944 5726624 1615632 5735416 +1760125 5760125 1629928 5726696 1620224 5752520 1620152 5752552 +1629944 5726624 1629928 5726696 1760125 5760125 1751256 5699792 +1620224 5752520 1629928 5726696 1629944 5726624 1620224 5752472 +1629944 5726624 1620192 5752400 1620224 5752472 1629928 5726696 +1629944 5726624 1617848 5747624 1620192 5752400 1629928 5726696 +1617848 5747624 1620152 5752352 1620192 5752400 1629928 5726696 +1629944 5726624 1617768 5747376 1617848 5747624 1629928 5726696 +1629944 5726624 1617712 5747256 1617768 5747376 1629928 5726696 +1617848 5747624 1620192 5752400 1629928 5726696 1617768 5747376 +1629944 5726624 1617608 5747096 1617712 5747256 1629928 5726696 +1617712 5747256 1617768 5747376 1629928 5726696 1617608 5747096 +1617768 5747376 1617848 5747624 1629928 5726696 1617712 5747256 +1620192 5752400 1620224 5752472 1629928 5726696 1617848 5747624 +1629928 5726696 1760125 5760125 1629944 5726624 1617608 5747096 +1620224 5752472 1620224 5752520 1629928 5726696 1620192 5752400 +1620224 5752520 1760125 5760125 1629928 5726696 1620224 5752472 +1629944 5726624 1615632 5735512 1617608 5747096 1629928 5726696 +1615632 5735512 1617512 5746992 1617608 5747096 1629928 5726696 +1617608 5747096 1617712 5747256 1629928 5726696 1615632 5735512 +1629944 5726624 1615632 5735512 1629928 5726696 1760125 5760125 +1629944 5726624 1615632 5735416 1615632 5735512 1629928 5726696 +1629944 5726624 1615584 5735320 1615632 5735416 1629928 5726696 +1629944 5726624 1621208 5723336 1615584 5735320 1629928 5726696 +1615584 5735320 1615632 5735416 1629928 5726696 1621208 5723336 +1629944 5726624 1621280 5723304 1621208 5723336 1629928 5726696 +1621208 5723336 1615584 5735320 1629928 5726696 1621280 5723304 +1629944 5726624 1629904 5726504 1621280 5723304 1629928 5726696 +1621280 5723304 1621208 5723336 1629928 5726696 1629904 5726504 +1629904 5726504 1621280 5723224 1621280 5723304 1629928 5726696 +1629944 5726624 1629904 5726504 1629928 5726696 1760125 5760125 +1615632 5735512 1617608 5747096 1629928 5726696 1615632 5735416 +1621208 5723336 1621144 5723336 1615584 5735320 1629928 5726696 +1629944 5726624 1629944 5726576 1629904 5726504 1629928 5726696 +1615632 5735416 1615632 5735512 1629928 5726696 1615584 5735320 +1617608 5747096 1629872 5726768 1615632 5735512 1617512 5746992 +1629928 5726696 1629872 5726768 1617608 5747096 1617712 5747256 +1629928 5726696 1629872 5726768 1617712 5747256 1617768 5747376 +1629872 5726768 1617608 5747096 1617712 5747256 1617768 5747376 +1629928 5726696 1629872 5726768 1617768 5747376 1617848 5747624 +1629872 5726768 1617712 5747256 1617768 5747376 1617848 5747624 +1629928 5726696 1629872 5726768 1617848 5747624 1620192 5752400 +1617848 5747624 1620152 5752352 1620192 5752400 1629872 5726768 +1629872 5726768 1617768 5747376 1617848 5747624 1620192 5752400 +1629928 5726696 1629872 5726768 1620192 5752400 1620224 5752472 +1629872 5726768 1617848 5747624 1620192 5752400 1620224 5752472 +1629872 5726768 1615632 5735512 1617608 5747096 1617712 5747256 +1629928 5726696 1629872 5726768 1620224 5752472 1620224 5752520 +1629872 5726768 1620192 5752400 1620224 5752472 1620224 5752520 +1629928 5726696 1615632 5735512 1629872 5726768 1620224 5752520 +1629928 5726696 1629872 5726768 1620224 5752520 1760125 5760125 +1615632 5735512 1629872 5726768 1629928 5726696 1615632 5735416 +1615632 5735512 1617608 5747096 1629872 5726768 1615632 5735416 +1629872 5726768 1620224 5752520 1629928 5726696 1615632 5735416 +1629928 5726696 1615584 5735320 1615632 5735416 1629872 5726768 +1629928 5726696 1621208 5723336 1615584 5735320 1629872 5726768 +1629928 5726696 1621280 5723304 1621208 5723336 1629872 5726768 +1621208 5723336 1615584 5735320 1629872 5726768 1621280 5723304 +1629928 5726696 1629904 5726504 1621280 5723304 1629872 5726768 +1621280 5723304 1621208 5723336 1629872 5726768 1629904 5726504 +1629928 5726696 1629944 5726624 1629904 5726504 1629872 5726768 +1629904 5726504 1621280 5723224 1621280 5723304 1629872 5726768 +1629928 5726696 1629904 5726504 1629872 5726768 1620224 5752520 +1615632 5735416 1615632 5735512 1629872 5726768 1615584 5735320 +1621208 5723336 1621144 5723336 1615584 5735320 1629872 5726768 +1615584 5735320 1615632 5735416 1629872 5726768 1621208 5723336 +1617608 5747096 1629776 5726856 1615632 5735512 1617512 5746992 +1629872 5726768 1629776 5726856 1617608 5747096 1617712 5747256 +1629776 5726856 1615632 5735512 1617608 5747096 1617712 5747256 +1629872 5726768 1629776 5726856 1617712 5747256 1617768 5747376 +1629872 5726768 1629776 5726856 1617768 5747376 1617848 5747624 +1629776 5726856 1617712 5747256 1617768 5747376 1617848 5747624 +1629872 5726768 1629776 5726856 1617848 5747624 1620192 5752400 +1629776 5726856 1617768 5747376 1617848 5747624 1620192 5752400 +1629872 5726768 1629776 5726856 1620192 5752400 1620224 5752472 +1617848 5747624 1620152 5752352 1620192 5752400 1629776 5726856 +1629776 5726856 1617848 5747624 1620192 5752400 1620224 5752472 +1629872 5726768 1629776 5726856 1620224 5752472 1620224 5752520 +1629776 5726856 1617608 5747096 1617712 5747256 1617768 5747376 +1629872 5726768 1615632 5735512 1629776 5726856 1620224 5752472 +1615632 5735512 1629776 5726856 1629872 5726768 1615632 5735416 +1615632 5735512 1617608 5747096 1629776 5726856 1615632 5735416 +1629776 5726856 1620224 5752472 1629872 5726768 1615632 5735416 +1629872 5726768 1615584 5735320 1615632 5735416 1629776 5726856 +1629872 5726768 1615584 5735320 1629776 5726856 1620224 5752472 +1615632 5735416 1615632 5735512 1629776 5726856 1615584 5735320 +1629872 5726768 1621208 5723336 1615584 5735320 1629776 5726856 +1629872 5726768 1621280 5723304 1621208 5723336 1629776 5726856 +1629872 5726768 1629904 5726504 1621280 5723304 1629776 5726856 +1621280 5723304 1621208 5723336 1629776 5726856 1629904 5726504 +1629872 5726768 1629928 5726696 1629904 5726504 1629776 5726856 +1629904 5726504 1621280 5723224 1621280 5723304 1629776 5726856 +1629872 5726768 1629904 5726504 1629776 5726856 1620224 5752472 +1615584 5735320 1615632 5735416 1629776 5726856 1621208 5723336 +1621208 5723336 1621144 5723336 1615584 5735320 1629776 5726856 +1621208 5723336 1615584 5735320 1629776 5726856 1621280 5723304 +1629776 5726856 1629584 5726976 1617608 5747096 1617712 5747256 +1629776 5726856 1615632 5735512 1629584 5726976 1617712 5747256 +1615632 5735512 1629584 5726976 1629776 5726856 1615632 5735416 +1629584 5726976 1617712 5747256 1629776 5726856 1615632 5735416 +1629584 5726976 1615632 5735512 1617608 5747096 1617712 5747256 +1615632 5735512 1617608 5747096 1629584 5726976 1615632 5735416 +1617608 5747096 1629584 5726976 1615632 5735512 1617512 5746992 +1629776 5726856 1629584 5726976 1617712 5747256 1617768 5747376 +1629584 5726976 1617608 5747096 1617712 5747256 1617768 5747376 +1629776 5726856 1615632 5735416 1629584 5726976 1617768 5747376 +1629776 5726856 1629584 5726976 1617768 5747376 1617848 5747624 +1629776 5726856 1629584 5726976 1617848 5747624 1620192 5752400 +1629776 5726856 1615632 5735416 1629584 5726976 1620192 5752400 +1617848 5747624 1620152 5752352 1620192 5752400 1629584 5726976 +1629584 5726976 1617768 5747376 1617848 5747624 1620192 5752400 +1629776 5726856 1629584 5726976 1620192 5752400 1620224 5752472 +1629584 5726976 1617848 5747624 1620192 5752400 1620224 5752472 +1629776 5726856 1615632 5735416 1629584 5726976 1620224 5752472 +1629776 5726856 1629584 5726976 1620224 5752472 1629872 5726768 +1629584 5726976 1617712 5747256 1617768 5747376 1617848 5747624 +1629776 5726856 1615584 5735320 1615632 5735416 1629584 5726976 +1629776 5726856 1615584 5735320 1629584 5726976 1620224 5752472 +1615632 5735416 1615632 5735512 1629584 5726976 1615584 5735320 +1629776 5726856 1621208 5723336 1615584 5735320 1629584 5726976 +1629776 5726856 1621208 5723336 1629584 5726976 1620224 5752472 +1615584 5735320 1615632 5735416 1629584 5726976 1621208 5723336 +1621208 5723336 1621144 5723336 1615584 5735320 1629584 5726976 +1629776 5726856 1621280 5723304 1621208 5723336 1629584 5726976 +1629776 5726856 1629904 5726504 1621280 5723304 1629584 5726976 +1629776 5726856 1629904 5726504 1629584 5726976 1620224 5752472 +1629776 5726856 1629872 5726768 1629904 5726504 1629584 5726976 +1629904 5726504 1621280 5723224 1621280 5723304 1629584 5726976 +1621208 5723336 1615584 5735320 1629584 5726976 1621280 5723304 +1621280 5723304 1621208 5723336 1629584 5726976 1629904 5726504 +1629904 5726504 1629536 5726952 1629584 5726976 1629776 5726856 +1629536 5726952 1621280 5723304 1629584 5726976 1629776 5726856 +1629904 5726504 1621280 5723304 1629536 5726952 1629776 5726856 +1629904 5726504 1629536 5726952 1629776 5726856 1629872 5726768 +1621280 5723304 1629536 5726952 1629904 5726504 1621280 5723224 +1629584 5726976 1629536 5726952 1621280 5723304 1621208 5723336 +1629584 5726976 1629776 5726856 1629536 5726952 1621208 5723336 +1629536 5726952 1629904 5726504 1621280 5723304 1621208 5723336 +1629584 5726976 1629536 5726952 1621208 5723336 1615584 5735320 +1629584 5726976 1629776 5726856 1629536 5726952 1615584 5735320 +1629584 5726976 1629536 5726952 1615584 5735320 1615632 5735416 +1629584 5726976 1629536 5726952 1615632 5735416 1615632 5735512 +1629584 5726976 1629776 5726856 1629536 5726952 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1617608 5747096 +1629536 5726952 1615584 5735320 1615632 5735416 1615632 5735512 +1629536 5726952 1621208 5723336 1615584 5735320 1615632 5735416 +1621208 5723336 1621144 5723336 1615584 5735320 1629536 5726952 +1629536 5726952 1621280 5723304 1621208 5723336 1615584 5735320 +1629536 5726952 1629480 5726888 1621280 5723304 1621208 5723336 +1629536 5726952 1629904 5726504 1629480 5726888 1621208 5723336 +1629904 5726504 1629480 5726888 1629536 5726952 1629776 5726856 +1629536 5726952 1629584 5726976 1629776 5726856 1629480 5726888 +1629480 5726888 1621208 5723336 1629536 5726952 1629776 5726856 +1629480 5726888 1629904 5726504 1621280 5723304 1621208 5723336 +1629904 5726504 1621280 5723304 1629480 5726888 1629776 5726856 +1629904 5726504 1629480 5726888 1629776 5726856 1629872 5726768 +1621280 5723304 1629480 5726888 1629904 5726504 1621280 5723224 +1621280 5723304 1621208 5723336 1629480 5726888 1621280 5723224 +1629480 5726888 1629776 5726856 1629904 5726504 1621280 5723224 +1629904 5726504 1621088 5722784 1621280 5723224 1629480 5726888 +1629536 5726952 1629480 5726888 1621208 5723336 1615584 5735320 +1629480 5726888 1621280 5723304 1621208 5723336 1615584 5735320 +1629536 5726952 1629776 5726856 1629480 5726888 1615584 5735320 +1629536 5726952 1629480 5726888 1615584 5735320 1615632 5735416 +1629536 5726952 1629776 5726856 1629480 5726888 1615632 5735416 +1629536 5726952 1629480 5726888 1615632 5735416 1615632 5735512 +1621208 5723336 1621144 5723336 1615584 5735320 1629480 5726888 +1629480 5726888 1621208 5723336 1615584 5735320 1615632 5735416 +1629904 5726504 1629448 5726816 1629480 5726888 1629776 5726856 +1629480 5726888 1629536 5726952 1629776 5726856 1629448 5726816 +1629448 5726816 1621280 5723224 1629480 5726888 1629776 5726856 +1629904 5726504 1621280 5723224 1629448 5726816 1629776 5726856 +1621280 5723224 1629448 5726816 1629904 5726504 1621088 5722784 +1629904 5726504 1629448 5726816 1629776 5726856 1629872 5726768 +1629448 5726816 1629480 5726888 1629776 5726856 1629872 5726768 +1629904 5726504 1621280 5723224 1629448 5726816 1629872 5726768 +1629904 5726504 1629448 5726816 1629872 5726768 1629928 5726696 +1629480 5726888 1629448 5726816 1621280 5723224 1621280 5723304 +1629480 5726888 1629448 5726816 1621280 5723304 1621208 5723336 +1629480 5726888 1629448 5726816 1621208 5723336 1615584 5735320 +1629480 5726888 1629776 5726856 1629448 5726816 1621208 5723336 +1629448 5726816 1629904 5726504 1621280 5723224 1621280 5723304 +1629448 5726816 1621280 5723224 1621280 5723304 1621208 5723336 +1629448 5726816 1629360 5726560 1621280 5723224 1621280 5723304 +1629448 5726816 1629904 5726504 1629360 5726560 1621280 5723304 +1629904 5726504 1629360 5726560 1629448 5726816 1629872 5726768 +1629904 5726504 1621280 5723224 1629360 5726560 1629872 5726768 +1629360 5726560 1621280 5723304 1629448 5726816 1629872 5726768 +1629360 5726560 1629904 5726504 1621280 5723224 1621280 5723304 +1621280 5723224 1629360 5726560 1629904 5726504 1621088 5722784 +1629360 5726560 1629872 5726768 1629904 5726504 1621088 5722784 +1621280 5723224 1621280 5723304 1629360 5726560 1621088 5722784 +1629448 5726816 1629776 5726856 1629872 5726768 1629360 5726560 +1629904 5726504 1629360 5726560 1629872 5726768 1629928 5726696 +1629448 5726816 1629360 5726560 1621280 5723304 1621208 5723336 +1629904 5726504 1621040 5722712 1621088 5722784 1629360 5726560 +1629904 5726504 1621040 5722712 1629360 5726560 1629872 5726768 +1629904 5726504 1619392 5717504 1621040 5722712 1629360 5726560 +1629904 5726504 1619392 5717504 1629360 5726560 1629872 5726768 +1629904 5726504 1619392 5717424 1619392 5717504 1629360 5726560 +1629904 5726504 1619360 5717312 1619392 5717424 1629360 5726560 +1629904 5726504 1619392 5717424 1629360 5726560 1629872 5726768 +1619392 5717504 1621040 5722712 1629360 5726560 1619392 5717424 +1619392 5717504 1620992 5722672 1621040 5722712 1629360 5726560 +1621088 5722784 1621280 5723224 1629360 5726560 1621040 5722712 +1621040 5722712 1621088 5722784 1629360 5726560 1619392 5717504 +1619392 5717424 1629224 5726312 1629904 5726504 1619360 5717312 +1629904 5726504 1629224 5726312 1629360 5726560 1629872 5726768 +1619392 5717424 1629360 5726560 1629224 5726312 1619360 5717312 +1629224 5726312 1629360 5726560 1629904 5726504 1619360 5717312 +1629360 5726560 1629224 5726312 1619392 5717424 1619392 5717504 +1629224 5726312 1619360 5717312 1619392 5717424 1619392 5717504 +1629360 5726560 1629904 5726504 1629224 5726312 1619392 5717504 +1629360 5726560 1629224 5726312 1619392 5717504 1621040 5722712 +1629360 5726560 1629904 5726504 1629224 5726312 1621040 5722712 +1629224 5726312 1619392 5717424 1619392 5717504 1621040 5722712 +1619392 5717504 1620992 5722672 1621040 5722712 1629224 5726312 +1629904 5726504 1619328 5717256 1619360 5717312 1629224 5726312 +1629360 5726560 1629224 5726312 1621040 5722712 1621088 5722784 +1629360 5726560 1629904 5726504 1629224 5726312 1621088 5722784 +1629224 5726312 1619392 5717504 1621040 5722712 1621088 5722784 +1629360 5726560 1629224 5726312 1621088 5722784 1621280 5723224 +1629360 5726560 1629224 5726312 1621280 5723224 1621280 5723304 +1629360 5726560 1629224 5726312 1621280 5723304 1629448 5726816 +1629224 5726312 1621280 5723224 1621280 5723304 1629448 5726816 +1629360 5726560 1629904 5726504 1629224 5726312 1629448 5726816 +1629224 5726312 1621088 5722784 1621280 5723224 1621280 5723304 +1621280 5723304 1621208 5723336 1629448 5726816 1629224 5726312 +1621208 5723336 1629480 5726888 1629448 5726816 1629224 5726312 +1629448 5726816 1629360 5726560 1629224 5726312 1621208 5723336 +1621280 5723304 1621208 5723336 1629224 5726312 1621280 5723224 +1629224 5726312 1621040 5722712 1621088 5722784 1621280 5723224 +1629224 5726312 1629224 5726184 1619360 5717312 1619392 5717424 +1629224 5726312 1629224 5726184 1619392 5717424 1619392 5717504 +1629224 5726184 1619360 5717312 1619392 5717424 1619392 5717504 +1629224 5726312 1629904 5726504 1629224 5726184 1619392 5717504 +1629904 5726504 1629224 5726184 1629224 5726312 1629360 5726560 +1629224 5726184 1629904 5726504 1619360 5717312 1619392 5717424 +1629224 5726312 1629224 5726184 1619392 5717504 1621040 5722712 +1629224 5726184 1619392 5717424 1619392 5717504 1621040 5722712 +1629224 5726312 1629904 5726504 1629224 5726184 1621040 5722712 +1629224 5726312 1629224 5726184 1621040 5722712 1621088 5722784 +1629224 5726312 1629904 5726504 1629224 5726184 1621088 5722784 +1629224 5726184 1619392 5717504 1621040 5722712 1621088 5722784 +1619392 5717504 1620992 5722672 1621040 5722712 1629224 5726184 +1619360 5717312 1629224 5726184 1629904 5726504 1619328 5717256 +1619360 5717312 1619392 5717424 1629224 5726184 1619328 5717256 +1629224 5726184 1629224 5726312 1629904 5726504 1619328 5717256 +1629224 5726312 1629224 5726184 1621088 5722784 1621280 5723224 +1629224 5726312 1629904 5726504 1629224 5726184 1621280 5723224 +1629224 5726184 1621040 5722712 1621088 5722784 1621280 5723224 +1629224 5726312 1629224 5726184 1621280 5723224 1621280 5723304 +1629224 5726312 1629904 5726504 1629224 5726184 1621280 5723304 +1629224 5726312 1629224 5726184 1621280 5723304 1621208 5723336 +1629224 5726184 1621088 5722784 1621280 5723224 1621280 5723304 +1629904 5726504 1614696 5707712 1619328 5717256 1629224 5726184 +1629904 5726504 1629248 5726144 1629224 5726184 1629224 5726312 +1629904 5726504 1629248 5726144 1629224 5726312 1629360 5726560 +1629904 5726504 1629248 5726144 1629360 5726560 1629872 5726768 +1629248 5726144 1619328 5717256 1629224 5726184 1629224 5726312 +1629248 5726144 1629224 5726184 1629224 5726312 1629360 5726560 +1629904 5726504 1619328 5717256 1629248 5726144 1629360 5726560 +1629224 5726184 1629248 5726144 1619328 5717256 1619360 5717312 +1629224 5726184 1629248 5726144 1619360 5717312 1619392 5717424 +1629224 5726184 1629248 5726144 1619392 5717424 1619392 5717504 +1629224 5726184 1629248 5726144 1619392 5717504 1621040 5722712 +1629248 5726144 1619392 5717424 1619392 5717504 1621040 5722712 +1629248 5726144 1619360 5717312 1619392 5717424 1619392 5717504 +1629224 5726184 1629224 5726312 1629248 5726144 1621040 5722712 +1629248 5726144 1629904 5726504 1619328 5717256 1619360 5717312 +1629224 5726184 1629248 5726144 1621040 5722712 1621088 5722784 +1629248 5726144 1619392 5717504 1621040 5722712 1621088 5722784 +1629224 5726184 1629224 5726312 1629248 5726144 1621088 5722784 +1629224 5726184 1629248 5726144 1621088 5722784 1621280 5723224 +1629224 5726184 1629224 5726312 1629248 5726144 1621280 5723224 +1629248 5726144 1621040 5722712 1621088 5722784 1621280 5723224 +1619392 5717504 1620992 5722672 1621040 5722712 1629248 5726144 +1629248 5726144 1619328 5717256 1619360 5717312 1619392 5717424 +1629224 5726184 1629248 5726144 1621280 5723224 1621280 5723304 +1629224 5726184 1629224 5726312 1629248 5726144 1621280 5723304 +1629248 5726144 1621088 5722784 1621280 5723224 1621280 5723304 +1629224 5726184 1629248 5726144 1621280 5723304 1629224 5726312 +1619328 5717256 1629248 5726144 1629904 5726504 1614696 5707712 +1614696 5707712 1629392 5726056 1629904 5726504 1613592 5703136 +1614696 5707712 1629392 5726056 1613592 5703136 1614680 5707680 +1614696 5707712 1619328 5717256 1629392 5726056 1613592 5703136 +1629392 5726056 1619328 5717256 1629904 5726504 1613592 5703136 +1629904 5726504 1663880 5646248 1613592 5703136 1629392 5726056 +1629904 5726504 1663944 5646256 1663880 5646248 1629392 5726056 +1629904 5726504 1663944 5646256 1629392 5726056 1619328 5717256 +1613592 5703136 1614696 5707712 1629392 5726056 1663880 5646248 +1663880 5646248 1613592 5703136 1629392 5726056 1663944 5646256 +1619328 5717256 1629392 5726056 1614696 5707712 1614704 5707744 +1629904 5726504 1629944 5726576 1663944 5646256 1629392 5726056 +1663880 5646248 1611560 5699312 1613592 5703136 1629392 5726056 +1629904 5726504 1629392 5726056 1619328 5717256 1629248 5726144 +1619328 5717256 1619360 5717312 1629248 5726144 1629392 5726056 +1629392 5726056 1614696 5707712 1619328 5717256 1619360 5717312 +1629904 5726504 1629392 5726056 1629248 5726144 1629360 5726560 +1629904 5726504 1629392 5726056 1629360 5726560 1629872 5726768 +1629248 5726144 1629224 5726312 1629360 5726560 1629392 5726056 +1629248 5726144 1629224 5726184 1629224 5726312 1629392 5726056 +1629360 5726560 1629904 5726504 1629392 5726056 1629224 5726312 +1629904 5726504 1663944 5646256 1629392 5726056 1629360 5726560 +1619360 5717312 1619392 5717424 1629248 5726144 1629392 5726056 +1619392 5717424 1619392 5717504 1629248 5726144 1629392 5726056 +1619392 5717504 1621040 5722712 1629248 5726144 1629392 5726056 +1621040 5722712 1621088 5722784 1629248 5726144 1629392 5726056 +1621040 5722712 1621088 5722784 1629392 5726056 1619392 5717504 +1619392 5717504 1621040 5722712 1629392 5726056 1619392 5717424 +1619360 5717312 1619392 5717424 1629392 5726056 1619328 5717256 +1621088 5722784 1621280 5723224 1629248 5726144 1629392 5726056 +1621088 5722784 1621280 5723224 1629392 5726056 1621040 5722712 +1621280 5723224 1621280 5723304 1629248 5726144 1629392 5726056 +1619392 5717504 1620992 5722672 1621040 5722712 1629392 5726056 +1619392 5717424 1619392 5717504 1629392 5726056 1619360 5717312 +1629248 5726144 1629224 5726312 1629392 5726056 1621280 5723224 +1629392 5726056 1629464 5725960 1663944 5646256 1663880 5646248 +1629392 5726056 1629904 5726504 1629464 5725960 1663880 5646248 +1629904 5726504 1629464 5725960 1629392 5726056 1629360 5726560 +1629464 5725960 1629904 5726504 1663944 5646256 1663880 5646248 +1629392 5726056 1629464 5725960 1663880 5646248 1613592 5703136 +1629464 5725960 1663944 5646256 1663880 5646248 1613592 5703136 +1629392 5726056 1629904 5726504 1629464 5725960 1613592 5703136 +1629392 5726056 1629464 5725960 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1629464 5725960 +1629392 5726056 1629464 5725960 1614696 5707712 1619328 5717256 +1629392 5726056 1629464 5725960 1619328 5717256 1619360 5717312 +1629392 5726056 1629464 5725960 1619360 5717312 1619392 5717424 +1629464 5725960 1619328 5717256 1619360 5717312 1619392 5717424 +1629464 5725960 1614696 5707712 1619328 5717256 1619360 5717312 +1629392 5726056 1629904 5726504 1629464 5725960 1619392 5717424 +1629464 5725960 1613592 5703136 1614696 5707712 1619328 5717256 +1629464 5725960 1663880 5646248 1613592 5703136 1614696 5707712 +1614696 5707712 1614704 5707744 1619328 5717256 1629464 5725960 +1629392 5726056 1629464 5725960 1619392 5717424 1619392 5717504 +1629392 5726056 1629464 5725960 1619392 5717504 1621040 5722712 +1629392 5726056 1629464 5725960 1621040 5722712 1621088 5722784 +1629392 5726056 1629464 5725960 1621088 5722784 1621280 5723224 +1629464 5725960 1621040 5722712 1621088 5722784 1621280 5723224 +1629464 5725960 1619392 5717504 1621040 5722712 1621088 5722784 +1629464 5725960 1619360 5717312 1619392 5717424 1619392 5717504 +1629392 5726056 1629904 5726504 1629464 5725960 1621280 5723224 +1629392 5726056 1629464 5725960 1621280 5723224 1629248 5726144 +1629464 5725960 1621088 5722784 1621280 5723224 1629248 5726144 +1629392 5726056 1629904 5726504 1629464 5725960 1629248 5726144 +1621280 5723224 1621280 5723304 1629248 5726144 1629464 5725960 +1619392 5717504 1620992 5722672 1621040 5722712 1629464 5725960 +1629464 5725960 1619392 5717424 1619392 5717504 1621040 5722712 +1663944 5646256 1629464 5725960 1629904 5726504 1629944 5726576 +1663880 5646248 1611560 5699312 1613592 5703136 1629464 5725960 +1629464 5725960 1629568 5725912 1663944 5646256 1663880 5646248 +1629464 5725960 1629568 5725912 1663880 5646248 1613592 5703136 +1629568 5725912 1663944 5646256 1663880 5646248 1613592 5703136 +1629464 5725960 1629904 5726504 1629568 5725912 1613592 5703136 +1629904 5726504 1629568 5725912 1629464 5725960 1629392 5726056 +1629904 5726504 1629568 5725912 1629392 5726056 1629360 5726560 +1629568 5725912 1613592 5703136 1629464 5725960 1629392 5726056 +1629568 5725912 1629904 5726504 1663944 5646256 1663880 5646248 +1629904 5726504 1663944 5646256 1629568 5725912 1629392 5726056 +1629464 5725960 1629568 5725912 1613592 5703136 1614696 5707712 +1629568 5725912 1663880 5646248 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1629568 5725912 +1629464 5725960 1629392 5726056 1629568 5725912 1614696 5707712 +1629464 5725960 1629568 5725912 1614696 5707712 1619328 5717256 +1629464 5725960 1629568 5725912 1619328 5717256 1619360 5717312 +1629464 5725960 1629568 5725912 1619360 5717312 1619392 5717424 +1629464 5725960 1629568 5725912 1619392 5717424 1619392 5717504 +1629568 5725912 1619360 5717312 1619392 5717424 1619392 5717504 +1629568 5725912 1619328 5717256 1619360 5717312 1619392 5717424 +1629464 5725960 1629392 5726056 1629568 5725912 1619392 5717504 +1629568 5725912 1614696 5707712 1619328 5717256 1619360 5717312 +1629568 5725912 1613592 5703136 1614696 5707712 1619328 5717256 +1614696 5707712 1614704 5707744 1619328 5717256 1629568 5725912 +1629464 5725960 1629568 5725912 1619392 5717504 1621040 5722712 +1629464 5725960 1629568 5725912 1621040 5722712 1621088 5722784 +1629464 5725960 1629568 5725912 1621088 5722784 1621280 5723224 +1629568 5725912 1619392 5717424 1619392 5717504 1621040 5722712 +1629464 5725960 1629392 5726056 1629568 5725912 1621088 5722784 +1619392 5717504 1620992 5722672 1621040 5722712 1629568 5725912 +1629568 5725912 1619392 5717504 1621040 5722712 1621088 5722784 +1663944 5646256 1629568 5725912 1629904 5726504 1629944 5726576 +1663880 5646248 1611560 5699312 1613592 5703136 1629568 5725912 +1629568 5725912 1629600 5725952 1663944 5646256 1663880 5646248 +1629904 5726504 1629600 5725952 1629568 5725912 1629392 5726056 +1629904 5726504 1629600 5725952 1629392 5726056 1629360 5726560 +1629568 5725912 1629464 5725960 1629392 5726056 1629600 5725952 +1629600 5725952 1663944 5646256 1629568 5725912 1629464 5725960 +1629392 5726056 1629904 5726504 1629600 5725952 1629464 5725960 +1629904 5726504 1663944 5646256 1629600 5725952 1629392 5726056 +1663944 5646256 1629600 5725952 1629904 5726504 1629944 5726576 +1629600 5725952 1629624 5725984 1663944 5646256 1629568 5725912 +1629904 5726504 1629624 5725984 1629600 5725952 1629392 5726056 +1629904 5726504 1629624 5725984 1629392 5726056 1629360 5726560 +1629904 5726504 1629624 5725984 1629360 5726560 1629872 5726768 +1629392 5726056 1629224 5726312 1629360 5726560 1629624 5725984 +1629600 5725952 1629464 5725960 1629392 5726056 1629624 5725984 +1629600 5725952 1629568 5725912 1629464 5725960 1629624 5725984 +1629624 5725984 1663944 5646256 1629600 5725952 1629464 5725960 +1629624 5725984 1629464 5725960 1629392 5726056 1629360 5726560 +1629904 5726504 1663944 5646256 1629624 5725984 1629360 5726560 +1663944 5646256 1629624 5725984 1629904 5726504 1629944 5726576 +1663944 5646256 1629600 5725952 1629624 5725984 1629944 5726576 +1629624 5725984 1629360 5726560 1629904 5726504 1629944 5726576 +1663944 5646256 1629624 5725984 1629944 5726576 1743800 5687320 +1629624 5725984 1629736 5726176 1663944 5646256 1629600 5725952 +1629944 5726576 1629736 5726176 1629624 5725984 1629904 5726504 +1629736 5726176 1663944 5646256 1629624 5725984 1629904 5726504 +1629624 5725984 1629360 5726560 1629904 5726504 1629736 5726176 +1629360 5726560 1629872 5726768 1629904 5726504 1629736 5726176 +1629624 5725984 1629392 5726056 1629360 5726560 1629736 5726176 +1629392 5726056 1629224 5726312 1629360 5726560 1629736 5726176 +1629392 5726056 1629248 5726144 1629224 5726312 1629736 5726176 +1629392 5726056 1629224 5726312 1629736 5726176 1629624 5725984 +1629624 5725984 1629464 5725960 1629392 5726056 1629736 5726176 +1629624 5725984 1629392 5726056 1629736 5726176 1663944 5646256 +1629360 5726560 1629904 5726504 1629736 5726176 1629224 5726312 +1629944 5726576 1663944 5646256 1629736 5726176 1629904 5726504 +1629904 5726504 1629944 5726576 1629736 5726176 1629360 5726560 +1663944 5646256 1629736 5726176 1629944 5726576 1743800 5687320 +1760125 5760125 1625376 5746584 1620224 5752520 1620152 5752552 +1629928 5726696 1625376 5746584 1760125 5760125 1629944 5726624 +1620224 5752520 1625376 5746584 1629928 5726696 1629872 5726768 +1625376 5746584 1760125 5760125 1629928 5726696 1629872 5726768 +1620224 5752520 1760125 5760125 1625376 5746584 1629872 5726768 +1620224 5752520 1625376 5746584 1629872 5726768 1620224 5752472 +1620224 5752520 1760125 5760125 1625376 5746584 1620224 5752472 +1629872 5726768 1629776 5726856 1620224 5752472 1625376 5746584 +1629776 5726856 1629584 5726976 1620224 5752472 1625376 5746584 +1629584 5726976 1620192 5752400 1620224 5752472 1625376 5746584 +1629584 5726976 1617848 5747624 1620192 5752400 1625376 5746584 +1629584 5726976 1617848 5747624 1625376 5746584 1629776 5726856 +1617848 5747624 1620152 5752352 1620192 5752400 1625376 5746584 +1617848 5747624 1620152 5752352 1625376 5746584 1629584 5726976 +1617848 5747624 1617904 5747904 1620152 5752352 1625376 5746584 +1617848 5747624 1617904 5747904 1625376 5746584 1629584 5726976 +1617904 5747904 1620064 5752296 1620152 5752352 1625376 5746584 +1617904 5747904 1620064 5752296 1625376 5746584 1617848 5747624 +1620152 5752352 1620192 5752400 1625376 5746584 1620064 5752296 +1617904 5747904 1617896 5748024 1620064 5752296 1625376 5746584 +1617904 5747904 1617896 5748024 1625376 5746584 1617848 5747624 +1620064 5752296 1620152 5752352 1625376 5746584 1617896 5748024 +1617896 5748024 1620032 5752288 1620064 5752296 1625376 5746584 +1629584 5726976 1617768 5747376 1617848 5747624 1625376 5746584 +1617848 5747624 1617904 5747904 1625376 5746584 1617768 5747376 +1629584 5726976 1617768 5747376 1625376 5746584 1629776 5726856 +1620192 5752400 1620224 5752472 1625376 5746584 1620152 5752352 +1629776 5726856 1629584 5726976 1625376 5746584 1629872 5726768 +1629584 5726976 1617712 5747256 1617768 5747376 1625376 5746584 +1629584 5726976 1617608 5747096 1617712 5747256 1625376 5746584 +1629584 5726976 1615632 5735512 1617608 5747096 1625376 5746584 +1617608 5747096 1617712 5747256 1625376 5746584 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1625376 5746584 +1629584 5726976 1615632 5735512 1625376 5746584 1629776 5726856 +1615632 5735512 1617512 5746992 1617608 5747096 1625376 5746584 +1617608 5747096 1617712 5747256 1625376 5746584 1617512 5746992 +1615632 5735512 1617512 5746992 1625376 5746584 1629584 5726976 +1617768 5747376 1617848 5747624 1625376 5746584 1617712 5747256 +1615632 5735512 1616216 5745480 1617512 5746992 1625376 5746584 +1616216 5745480 1616232 5745520 1617512 5746992 1625376 5746584 +1615632 5735512 1616160 5745400 1616216 5745480 1625376 5746584 +1615632 5735512 1616160 5745400 1625376 5746584 1629584 5726976 +1617512 5746992 1617608 5747096 1625376 5746584 1616216 5745480 +1615632 5735512 1615496 5744536 1616160 5745400 1625376 5746584 +1616160 5745400 1616216 5745480 1625376 5746584 1615496 5744536 +1615632 5735512 1615368 5744400 1615496 5744536 1625376 5746584 +1615632 5735512 1615496 5744536 1625376 5746584 1629584 5726976 +1616216 5745480 1617512 5746992 1625376 5746584 1616160 5745400 +1617712 5747256 1617768 5747376 1625376 5746584 1617608 5747096 +1620224 5752472 1620224 5752520 1625376 5746584 1620192 5752400 +1625376 5746584 1629928 5726696 1629872 5726768 1629776 5726856 +1615496 5744536 1615544 5744608 1616160 5745400 1625376 5746584 +1616160 5745400 1616216 5745480 1625376 5746584 1615544 5744608 +1615496 5744536 1615544 5744608 1625376 5746584 1615632 5735512 +1615544 5744608 1616016 5745272 1616160 5745400 1625376 5746584 +1625376 5746584 1625448 5746768 1760125 5760125 1629928 5726696 +1625376 5746584 1625448 5746768 1629928 5726696 1629872 5726768 +1625448 5746768 1760125 5760125 1629928 5726696 1629872 5726768 +1760125 5760125 1625448 5746768 1620224 5752520 1620152 5752552 +1625376 5746584 1620224 5752520 1625448 5746768 1629872 5726768 +1620224 5752520 1625448 5746768 1625376 5746584 1620224 5752472 +1625448 5746768 1629872 5726768 1625376 5746584 1620224 5752472 +1625376 5746584 1620192 5752400 1620224 5752472 1625448 5746768 +1625376 5746584 1620192 5752400 1625448 5746768 1629872 5726768 +1620224 5752472 1620224 5752520 1625448 5746768 1620192 5752400 +1625376 5746584 1620152 5752352 1620192 5752400 1625448 5746768 +1625376 5746584 1620064 5752296 1620152 5752352 1625448 5746768 +1625376 5746584 1617896 5748024 1620064 5752296 1625448 5746768 +1620064 5752296 1620152 5752352 1625448 5746768 1617896 5748024 +1625376 5746584 1617904 5747904 1617896 5748024 1625448 5746768 +1625376 5746584 1617848 5747624 1617904 5747904 1625448 5746768 +1617896 5748024 1620064 5752296 1625448 5746768 1617904 5747904 +1617896 5748024 1620032 5752288 1620064 5752296 1625448 5746768 +1625376 5746584 1617904 5747904 1625448 5746768 1629872 5726768 +1620152 5752352 1620192 5752400 1625448 5746768 1620064 5752296 +1620192 5752400 1620224 5752472 1625448 5746768 1620152 5752352 +1760125 5760125 1629944 5726624 1629928 5726696 1625448 5746768 +1625376 5746584 1625448 5746768 1629872 5726768 1629776 5726856 +1625448 5746768 1620224 5752520 1760125 5760125 1629928 5726696 +1620224 5752520 1760125 5760125 1625448 5746768 1620224 5752472 +1760125 5760125 1625512 5747120 1620224 5752520 1620152 5752552 +1625448 5746768 1625512 5747120 1760125 5760125 1629928 5726696 +1625448 5746768 1625512 5747120 1629928 5726696 1629872 5726768 +1760125 5760125 1629944 5726624 1629928 5726696 1625512 5747120 +1625448 5746768 1620224 5752520 1625512 5747120 1629928 5726696 +1620224 5752520 1625512 5747120 1625448 5746768 1620224 5752472 +1625448 5746768 1620192 5752400 1620224 5752472 1625512 5747120 +1625448 5746768 1620152 5752352 1620192 5752400 1625512 5747120 +1620192 5752400 1620224 5752472 1625512 5747120 1620152 5752352 +1625448 5746768 1620064 5752296 1620152 5752352 1625512 5747120 +1625448 5746768 1617896 5748024 1620064 5752296 1625512 5747120 +1625448 5746768 1617904 5747904 1617896 5748024 1625512 5747120 +1617896 5748024 1620064 5752296 1625512 5747120 1617904 5747904 +1625448 5746768 1625376 5746584 1617904 5747904 1625512 5747120 +1625376 5746584 1617848 5747624 1617904 5747904 1625512 5747120 +1617904 5747904 1617896 5748024 1625512 5747120 1625376 5746584 +1617896 5748024 1620032 5752288 1620064 5752296 1625512 5747120 +1620064 5752296 1620152 5752352 1625512 5747120 1617896 5748024 +1620152 5752352 1620192 5752400 1625512 5747120 1620064 5752296 +1625512 5747120 1629928 5726696 1625448 5746768 1625376 5746584 +1620224 5752472 1620224 5752520 1625512 5747120 1620192 5752400 +1625512 5747120 1620224 5752520 1760125 5760125 1629928 5726696 +1620224 5752520 1760125 5760125 1625512 5747120 1620224 5752472 +1760125 5760125 1625624 5747288 1620224 5752520 1620152 5752552 +1625512 5747120 1625624 5747288 1760125 5760125 1629928 5726696 +1760125 5760125 1629944 5726624 1629928 5726696 1625624 5747288 +1625512 5747120 1625624 5747288 1629928 5726696 1625448 5746768 +1629928 5726696 1629872 5726768 1625448 5746768 1625624 5747288 +1629872 5726768 1625376 5746584 1625448 5746768 1625624 5747288 +1625448 5746768 1625512 5747120 1625624 5747288 1629872 5726768 +1625624 5747288 1760125 5760125 1629928 5726696 1629872 5726768 +1625512 5747120 1620224 5752520 1625624 5747288 1625448 5746768 +1620224 5752520 1625624 5747288 1625512 5747120 1620224 5752472 +1625512 5747120 1620192 5752400 1620224 5752472 1625624 5747288 +1625512 5747120 1620152 5752352 1620192 5752400 1625624 5747288 +1625512 5747120 1620064 5752296 1620152 5752352 1625624 5747288 +1620192 5752400 1620224 5752472 1625624 5747288 1620152 5752352 +1625624 5747288 1625448 5746768 1625512 5747120 1620152 5752352 +1620224 5752472 1620224 5752520 1625624 5747288 1620192 5752400 +1625624 5747288 1620224 5752520 1760125 5760125 1629928 5726696 +1620224 5752520 1760125 5760125 1625624 5747288 1620224 5752472 +1760125 5760125 1625872 5747552 1620224 5752520 1620152 5752552 +1625624 5747288 1625872 5747552 1760125 5760125 1629928 5726696 +1760125 5760125 1629944 5726624 1629928 5726696 1625872 5747552 +1625624 5747288 1625872 5747552 1629928 5726696 1629872 5726768 +1625624 5747288 1625872 5747552 1629872 5726768 1625448 5746768 +1629872 5726768 1625376 5746584 1625448 5746768 1625872 5747552 +1625448 5746768 1625624 5747288 1625872 5747552 1625376 5746584 +1629872 5726768 1629776 5726856 1625376 5746584 1625872 5747552 +1625376 5746584 1625448 5746768 1625872 5747552 1629776 5726856 +1629776 5726856 1629584 5726976 1625376 5746584 1625872 5747552 +1625624 5747288 1625872 5747552 1625448 5746768 1625512 5747120 +1625872 5747552 1629928 5726696 1629872 5726768 1629776 5726856 +1625872 5747552 1760125 5760125 1629928 5726696 1629872 5726768 +1625624 5747288 1620224 5752520 1625872 5747552 1625448 5746768 +1620224 5752520 1625872 5747552 1625624 5747288 1620224 5752472 +1625624 5747288 1620192 5752400 1620224 5752472 1625872 5747552 +1625624 5747288 1620152 5752352 1620192 5752400 1625872 5747552 +1625624 5747288 1625512 5747120 1620152 5752352 1625872 5747552 +1620192 5752400 1620224 5752472 1625872 5747552 1620152 5752352 +1625872 5747552 1625448 5746768 1625624 5747288 1620152 5752352 +1620224 5752472 1620224 5752520 1625872 5747552 1620192 5752400 +1625872 5747552 1620224 5752520 1760125 5760125 1629928 5726696 +1620224 5752520 1760125 5760125 1625872 5747552 1620224 5752472 +1760125 5760125 1625896 5747584 1620224 5752520 1620152 5752552 +1625872 5747552 1625896 5747584 1760125 5760125 1629928 5726696 +1760125 5760125 1629944 5726624 1629928 5726696 1625896 5747584 +1625872 5747552 1625896 5747584 1629928 5726696 1629872 5726768 +1625872 5747552 1625896 5747584 1629872 5726768 1629776 5726856 +1625872 5747552 1625896 5747584 1629776 5726856 1625376 5746584 +1625872 5747552 1625896 5747584 1625376 5746584 1625448 5746768 +1625872 5747552 1625896 5747584 1625448 5746768 1625624 5747288 +1629776 5726856 1629584 5726976 1625376 5746584 1625896 5747584 +1625896 5747584 1629776 5726856 1625376 5746584 1625448 5746768 +1625896 5747584 1629872 5726768 1629776 5726856 1625376 5746584 +1625896 5747584 1629928 5726696 1629872 5726768 1629776 5726856 +1625896 5747584 1760125 5760125 1629928 5726696 1629872 5726768 +1625872 5747552 1620224 5752520 1625896 5747584 1625448 5746768 +1620224 5752520 1625896 5747584 1625872 5747552 1620224 5752472 +1625872 5747552 1620192 5752400 1620224 5752472 1625896 5747584 +1625872 5747552 1620152 5752352 1620192 5752400 1625896 5747584 +1625872 5747552 1625624 5747288 1620152 5752352 1625896 5747584 +1625624 5747288 1625512 5747120 1620152 5752352 1625896 5747584 +1620152 5752352 1620192 5752400 1625896 5747584 1625624 5747288 +1620192 5752400 1620224 5752472 1625896 5747584 1620152 5752352 +1625896 5747584 1625448 5746768 1625872 5747552 1625624 5747288 +1620224 5752472 1620224 5752520 1625896 5747584 1620192 5752400 +1625896 5747584 1620224 5752520 1760125 5760125 1629928 5726696 +1620224 5752520 1760125 5760125 1625896 5747584 1620224 5752472 +1760125 5760125 1625960 5747656 1620224 5752520 1620152 5752552 +1625896 5747584 1625960 5747656 1760125 5760125 1629928 5726696 +1760125 5760125 1629944 5726624 1629928 5726696 1625960 5747656 +1625896 5747584 1625960 5747656 1629928 5726696 1629872 5726768 +1625896 5747584 1625960 5747656 1629872 5726768 1629776 5726856 +1625896 5747584 1625960 5747656 1629776 5726856 1625376 5746584 +1629776 5726856 1629584 5726976 1625376 5746584 1625960 5747656 +1625896 5747584 1625960 5747656 1625376 5746584 1625448 5746768 +1625896 5747584 1625960 5747656 1625448 5746768 1625872 5747552 +1625448 5746768 1625624 5747288 1625872 5747552 1625960 5747656 +1625960 5747656 1625376 5746584 1625448 5746768 1625872 5747552 +1625960 5747656 1629776 5726856 1625376 5746584 1625448 5746768 +1625960 5747656 1629872 5726768 1629776 5726856 1625376 5746584 +1625960 5747656 1629928 5726696 1629872 5726768 1629776 5726856 +1625960 5747656 1760125 5760125 1629928 5726696 1629872 5726768 +1625896 5747584 1620224 5752520 1625960 5747656 1625872 5747552 +1620224 5752520 1625960 5747656 1625896 5747584 1620224 5752472 +1625896 5747584 1620192 5752400 1620224 5752472 1625960 5747656 +1625896 5747584 1620152 5752352 1620192 5752400 1625960 5747656 +1625960 5747656 1625872 5747552 1625896 5747584 1620192 5752400 +1620224 5752472 1620224 5752520 1625960 5747656 1620192 5752400 +1625960 5747656 1620224 5752520 1760125 5760125 1629928 5726696 +1620224 5752520 1760125 5760125 1625960 5747656 1620224 5752472 +1760125 5760125 1625976 5747736 1620224 5752520 1620152 5752552 +1625960 5747656 1625976 5747736 1760125 5760125 1629928 5726696 +1760125 5760125 1629944 5726624 1629928 5726696 1625976 5747736 +1625960 5747656 1625976 5747736 1629928 5726696 1629872 5726768 +1625960 5747656 1620224 5752520 1625976 5747736 1629928 5726696 +1620224 5752520 1625976 5747736 1625960 5747656 1620224 5752472 +1620224 5752520 1760125 5760125 1625976 5747736 1620224 5752472 +1625960 5747656 1620192 5752400 1620224 5752472 1625976 5747736 +1625960 5747656 1625896 5747584 1620192 5752400 1625976 5747736 +1625896 5747584 1620152 5752352 1620192 5752400 1625976 5747736 +1625896 5747584 1625624 5747288 1620152 5752352 1625976 5747736 +1625624 5747288 1625512 5747120 1620152 5752352 1625976 5747736 +1625896 5747584 1625872 5747552 1625624 5747288 1625976 5747736 +1625624 5747288 1620152 5752352 1625976 5747736 1625872 5747552 +1620152 5752352 1620192 5752400 1625976 5747736 1625624 5747288 +1625896 5747584 1625872 5747552 1625976 5747736 1625960 5747656 +1620192 5752400 1620224 5752472 1625976 5747736 1620152 5752352 +1625976 5747736 1629928 5726696 1625960 5747656 1625896 5747584 +1620224 5752472 1620224 5752520 1625976 5747736 1620192 5752400 +1625976 5747736 1620224 5752520 1760125 5760125 1629928 5726696 +1760125 5760125 1625952 5747864 1620224 5752520 1620152 5752552 +1620224 5752520 1625952 5747864 1625976 5747736 1620224 5752472 +1625952 5747864 1760125 5760125 1625976 5747736 1620224 5752472 +1620224 5752520 1760125 5760125 1625952 5747864 1620224 5752472 +1625976 5747736 1620192 5752400 1620224 5752472 1625952 5747864 +1625976 5747736 1620192 5752400 1625952 5747864 1760125 5760125 +1620224 5752472 1620224 5752520 1625952 5747864 1620192 5752400 +1625976 5747736 1620152 5752352 1620192 5752400 1625952 5747864 +1625976 5747736 1620152 5752352 1625952 5747864 1760125 5760125 +1625976 5747736 1625624 5747288 1620152 5752352 1625952 5747864 +1625624 5747288 1625512 5747120 1620152 5752352 1625952 5747864 +1625976 5747736 1625624 5747288 1625952 5747864 1760125 5760125 +1625976 5747736 1625872 5747552 1625624 5747288 1625952 5747864 +1625976 5747736 1625872 5747552 1625952 5747864 1760125 5760125 +1625976 5747736 1625896 5747584 1625872 5747552 1625952 5747864 +1625976 5747736 1625896 5747584 1625952 5747864 1760125 5760125 +1625872 5747552 1625624 5747288 1625952 5747864 1625896 5747584 +1625624 5747288 1620152 5752352 1625952 5747864 1625872 5747552 +1625976 5747736 1625960 5747656 1625896 5747584 1625952 5747864 +1620152 5752352 1620192 5752400 1625952 5747864 1625624 5747288 +1620192 5752400 1620224 5752472 1625952 5747864 1620152 5752352 +1625976 5747736 1625952 5747864 1760125 5760125 1629928 5726696 +1760125 5760125 1625864 5747960 1620224 5752520 1620152 5752552 +1625952 5747864 1625864 5747960 1760125 5760125 1625976 5747736 +1620224 5752520 1625864 5747960 1625952 5747864 1620224 5752472 +1625952 5747864 1620192 5752400 1620224 5752472 1625864 5747960 +1625864 5747960 1760125 5760125 1625952 5747864 1620192 5752400 +1620224 5752472 1620224 5752520 1625864 5747960 1620192 5752400 +1620224 5752520 1760125 5760125 1625864 5747960 1620224 5752472 +1625952 5747864 1620152 5752352 1620192 5752400 1625864 5747960 +1620192 5752400 1620224 5752472 1625864 5747960 1620152 5752352 +1625952 5747864 1620152 5752352 1625864 5747960 1760125 5760125 +1625952 5747864 1625624 5747288 1620152 5752352 1625864 5747960 +1625624 5747288 1625512 5747120 1620152 5752352 1625864 5747960 +1625512 5747120 1620064 5752296 1620152 5752352 1625864 5747960 +1625512 5747120 1620064 5752296 1625864 5747960 1625624 5747288 +1625512 5747120 1617896 5748024 1620064 5752296 1625864 5747960 +1625952 5747864 1625624 5747288 1625864 5747960 1760125 5760125 +1625952 5747864 1625872 5747552 1625624 5747288 1625864 5747960 +1625952 5747864 1625872 5747552 1625864 5747960 1760125 5760125 +1625952 5747864 1625896 5747584 1625872 5747552 1625864 5747960 +1625952 5747864 1625896 5747584 1625864 5747960 1760125 5760125 +1625952 5747864 1625976 5747736 1625896 5747584 1625864 5747960 +1625872 5747552 1625624 5747288 1625864 5747960 1625896 5747584 +1625624 5747288 1625512 5747120 1625864 5747960 1625872 5747552 +1620152 5752352 1620192 5752400 1625864 5747960 1620064 5752296 +1760125 5760125 1625800 5748016 1620224 5752520 1620152 5752552 +1625864 5747960 1625800 5748016 1760125 5760125 1625952 5747864 +1620224 5752520 1625800 5748016 1625864 5747960 1620224 5752472 +1625864 5747960 1620192 5752400 1620224 5752472 1625800 5748016 +1625864 5747960 1620152 5752352 1620192 5752400 1625800 5748016 +1620192 5752400 1620224 5752472 1625800 5748016 1620152 5752352 +1625800 5748016 1760125 5760125 1625864 5747960 1620152 5752352 +1620224 5752472 1620224 5752520 1625800 5748016 1620192 5752400 +1620224 5752520 1760125 5760125 1625800 5748016 1620224 5752472 +1625864 5747960 1620064 5752296 1620152 5752352 1625800 5748016 +1625864 5747960 1625512 5747120 1620064 5752296 1625800 5748016 +1625864 5747960 1625624 5747288 1625512 5747120 1625800 5748016 +1625512 5747120 1617896 5748024 1620064 5752296 1625800 5748016 +1625512 5747120 1620064 5752296 1625800 5748016 1625624 5747288 +1620152 5752352 1620192 5752400 1625800 5748016 1620064 5752296 +1625864 5747960 1625624 5747288 1625800 5748016 1760125 5760125 +1625864 5747960 1625872 5747552 1625624 5747288 1625800 5748016 +1625624 5747288 1625512 5747120 1625800 5748016 1625872 5747552 +1625864 5747960 1625872 5747552 1625800 5748016 1760125 5760125 +1625864 5747960 1625896 5747584 1625872 5747552 1625800 5748016 +1620064 5752296 1620152 5752352 1625800 5748016 1625512 5747120 +1760125 5760125 1625784 5748032 1620224 5752520 1620152 5752552 +1625800 5748016 1625784 5748032 1760125 5760125 1625864 5747960 +1760125 5760125 1625952 5747864 1625864 5747960 1625784 5748032 +1625800 5748016 1620224 5752520 1625784 5748032 1625864 5747960 +1620224 5752520 1625784 5748032 1625800 5748016 1620224 5752472 +1625800 5748016 1620192 5752400 1620224 5752472 1625784 5748032 +1625800 5748016 1620152 5752352 1620192 5752400 1625784 5748032 +1625800 5748016 1620064 5752296 1620152 5752352 1625784 5748032 +1620152 5752352 1620192 5752400 1625784 5748032 1620064 5752296 +1620192 5752400 1620224 5752472 1625784 5748032 1620152 5752352 +1625784 5748032 1625864 5747960 1625800 5748016 1620064 5752296 +1620224 5752472 1620224 5752520 1625784 5748032 1620192 5752400 +1625784 5748032 1620224 5752520 1760125 5760125 1625864 5747960 +1620224 5752520 1760125 5760125 1625784 5748032 1620224 5752472 +1625800 5748016 1625512 5747120 1620064 5752296 1625784 5748032 +1625512 5747120 1617896 5748024 1620064 5752296 1625784 5748032 +1625800 5748016 1625624 5747288 1625512 5747120 1625784 5748032 +1625800 5748016 1625872 5747552 1625624 5747288 1625784 5748032 +1625624 5747288 1625512 5747120 1625784 5748032 1625872 5747552 +1620064 5752296 1620152 5752352 1625784 5748032 1625512 5747120 +1625800 5748016 1625872 5747552 1625784 5748032 1625864 5747960 +1625800 5748016 1625864 5747960 1625872 5747552 1625784 5748032 +1625512 5747120 1620064 5752296 1625784 5748032 1625624 5747288 +1620152 5752352 1625712 5748088 1625784 5748032 1620064 5752296 +1625784 5748032 1625512 5747120 1620064 5752296 1625712 5748088 +1625512 5747120 1617896 5748024 1620064 5752296 1625712 5748088 +1625512 5747120 1617904 5747904 1617896 5748024 1625712 5748088 +1617896 5748024 1620032 5752288 1620064 5752296 1625712 5748088 +1625512 5747120 1617896 5748024 1625712 5748088 1625784 5748032 +1620064 5752296 1620152 5752352 1625712 5748088 1617896 5748024 +1625784 5748032 1625712 5748088 1620192 5752400 1620224 5752472 +1625784 5748032 1625712 5748088 1620224 5752472 1620224 5752520 +1625712 5748088 1620192 5752400 1620224 5752472 1620224 5752520 +1625712 5748088 1620224 5752520 1625784 5748032 1625512 5747120 +1625784 5748032 1625712 5748088 1620224 5752520 1760125 5760125 +1620224 5752520 1620152 5752552 1760125 5760125 1625712 5748088 +1625712 5748088 1620224 5752472 1620224 5752520 1760125 5760125 +1625784 5748032 1625712 5748088 1760125 5760125 1625864 5747960 +1625784 5748032 1625512 5747120 1625712 5748088 1760125 5760125 +1625712 5748088 1620152 5752352 1620192 5752400 1620224 5752472 +1620152 5752352 1620192 5752400 1625712 5748088 1620064 5752296 +1625784 5748032 1625624 5747288 1625512 5747120 1625712 5748088 +1625784 5748032 1625872 5747552 1625624 5747288 1625712 5748088 +1625784 5748032 1625800 5748016 1625872 5747552 1625712 5748088 +1625512 5747120 1617896 5748024 1625712 5748088 1625624 5747288 +1625784 5748032 1625872 5747552 1625712 5748088 1760125 5760125 +1625624 5747288 1625512 5747120 1625712 5748088 1625872 5747552 +1760125 5760125 1625680 5748128 1620224 5752520 1620152 5752552 +1620224 5752520 1625680 5748128 1625712 5748088 1620224 5752472 +1625712 5748088 1620192 5752400 1620224 5752472 1625680 5748128 +1620224 5752472 1620224 5752520 1625680 5748128 1620192 5752400 +1625712 5748088 1625680 5748128 1760125 5760125 1625784 5748032 +1760125 5760125 1625864 5747960 1625784 5748032 1625680 5748128 +1760125 5760125 1625952 5747864 1625864 5747960 1625680 5748128 +1625864 5747960 1625800 5748016 1625784 5748032 1625680 5748128 +1625784 5748032 1625712 5748088 1625680 5748128 1625864 5747960 +1625712 5748088 1620152 5752352 1620192 5752400 1625680 5748128 +1620192 5752400 1620224 5752472 1625680 5748128 1620152 5752352 +1625680 5748128 1625784 5748032 1625712 5748088 1620152 5752352 +1625712 5748088 1620064 5752296 1620152 5752352 1625680 5748128 +1625712 5748088 1617896 5748024 1620064 5752296 1625680 5748128 +1617896 5748024 1620032 5752288 1620064 5752296 1625680 5748128 +1625712 5748088 1625512 5747120 1617896 5748024 1625680 5748128 +1625512 5747120 1617904 5747904 1617896 5748024 1625680 5748128 +1625712 5748088 1625624 5747288 1625512 5747120 1625680 5748128 +1625512 5747120 1617896 5748024 1625680 5748128 1625624 5747288 +1617896 5748024 1620064 5752296 1625680 5748128 1625512 5747120 +1620152 5752352 1620192 5752400 1625680 5748128 1620064 5752296 +1625712 5748088 1625624 5747288 1625680 5748128 1625784 5748032 +1620064 5752296 1620152 5752352 1625680 5748128 1617896 5748024 +1625680 5748128 1620224 5752520 1760125 5760125 1625864 5747960 +1620224 5752520 1760125 5760125 1625680 5748128 1620224 5752472 +1625712 5748088 1625872 5747552 1625624 5747288 1625680 5748128 +1620064 5752296 1625568 5748208 1617896 5748024 1620032 5752288 +1617896 5748024 1625568 5748208 1625680 5748128 1625512 5747120 +1617896 5748024 1625568 5748208 1625512 5747120 1617904 5747904 +1625512 5747120 1625376 5746584 1617904 5747904 1625568 5748208 +1625680 5748128 1625624 5747288 1625512 5747120 1625568 5748208 +1625680 5748128 1625712 5748088 1625624 5747288 1625568 5748208 +1625624 5747288 1625512 5747120 1625568 5748208 1625712 5748088 +1625568 5748208 1625624 5747288 1625512 5747120 1617904 5747904 +1625680 5748128 1625568 5748208 1620064 5752296 1620152 5752352 +1625680 5748128 1625568 5748208 1620152 5752352 1620192 5752400 +1625680 5748128 1625568 5748208 1620192 5752400 1620224 5752472 +1625680 5748128 1625568 5748208 1620224 5752472 1620224 5752520 +1625568 5748208 1620192 5752400 1620224 5752472 1620224 5752520 +1625568 5748208 1620152 5752352 1620192 5752400 1620224 5752472 +1625568 5748208 1620064 5752296 1620152 5752352 1620192 5752400 +1625568 5748208 1620224 5752520 1625680 5748128 1625712 5748088 +1625680 5748128 1625568 5748208 1620224 5752520 1760125 5760125 +1625568 5748208 1617896 5748024 1620064 5752296 1620152 5752352 +1617896 5748024 1620064 5752296 1625568 5748208 1617904 5747904 +1625712 5748088 1625872 5747552 1625624 5747288 1625568 5748208 +1620064 5752296 1625488 5748232 1617896 5748024 1620032 5752288 +1625568 5748208 1625488 5748232 1620064 5752296 1620152 5752352 +1625568 5748208 1625488 5748232 1620152 5752352 1620192 5752400 +1625568 5748208 1625488 5748232 1620192 5752400 1620224 5752472 +1625568 5748208 1625488 5748232 1620224 5752472 1620224 5752520 +1625568 5748208 1625488 5748232 1620224 5752520 1625680 5748128 +1625488 5748232 1620192 5752400 1620224 5752472 1620224 5752520 +1625488 5748232 1620152 5752352 1620192 5752400 1620224 5752472 +1625488 5748232 1620064 5752296 1620152 5752352 1620192 5752400 +1625568 5748208 1617896 5748024 1625488 5748232 1620224 5752520 +1617896 5748024 1625488 5748232 1625568 5748208 1617904 5747904 +1625568 5748208 1625512 5747120 1617904 5747904 1625488 5748232 +1625512 5747120 1625376 5746584 1617904 5747904 1625488 5748232 +1625376 5746584 1617848 5747624 1617904 5747904 1625488 5748232 +1625512 5747120 1625376 5746584 1625488 5748232 1625568 5748208 +1625512 5747120 1625448 5746768 1625376 5746584 1625488 5748232 +1625568 5748208 1625624 5747288 1625512 5747120 1625488 5748232 +1625512 5747120 1625376 5746584 1625488 5748232 1625624 5747288 +1625568 5748208 1625712 5748088 1625624 5747288 1625488 5748232 +1625568 5748208 1625680 5748128 1625712 5748088 1625488 5748232 +1625712 5748088 1625624 5747288 1625488 5748232 1625680 5748128 +1625624 5747288 1625512 5747120 1625488 5748232 1625712 5748088 +1625488 5748232 1620224 5752520 1625568 5748208 1625680 5748128 +1617904 5747904 1617896 5748024 1625488 5748232 1625376 5746584 +1625488 5748232 1617896 5748024 1620064 5752296 1620152 5752352 +1617896 5748024 1620064 5752296 1625488 5748232 1617904 5747904 +1625712 5748088 1625872 5747552 1625624 5747288 1625488 5748232 +1620064 5752296 1625464 5748232 1617896 5748024 1620032 5752288 +1625488 5748232 1625464 5748232 1620064 5752296 1620152 5752352 +1625488 5748232 1625464 5748232 1620152 5752352 1620192 5752400 +1625488 5748232 1625464 5748232 1620192 5752400 1620224 5752472 +1625488 5748232 1625464 5748232 1620224 5752472 1620224 5752520 +1625488 5748232 1625464 5748232 1620224 5752520 1625568 5748208 +1625464 5748232 1620192 5752400 1620224 5752472 1620224 5752520 +1625464 5748232 1620152 5752352 1620192 5752400 1620224 5752472 +1625464 5748232 1620064 5752296 1620152 5752352 1620192 5752400 +1625488 5748232 1617896 5748024 1625464 5748232 1620224 5752520 +1617896 5748024 1625464 5748232 1625488 5748232 1617904 5747904 +1625488 5748232 1625376 5746584 1617904 5747904 1625464 5748232 +1625376 5746584 1617848 5747624 1617904 5747904 1625464 5748232 +1625488 5748232 1625512 5747120 1625376 5746584 1625464 5748232 +1625488 5748232 1625624 5747288 1625512 5747120 1625464 5748232 +1625512 5747120 1625376 5746584 1625464 5748232 1625624 5747288 +1625512 5747120 1625448 5746768 1625376 5746584 1625464 5748232 +1625488 5748232 1625712 5748088 1625624 5747288 1625464 5748232 +1625624 5747288 1625512 5747120 1625464 5748232 1625712 5748088 +1625488 5748232 1625680 5748128 1625712 5748088 1625464 5748232 +1625488 5748232 1625568 5748208 1625680 5748128 1625464 5748232 +1625680 5748128 1625712 5748088 1625464 5748232 1625568 5748208 +1625712 5748088 1625624 5747288 1625464 5748232 1625680 5748128 +1625376 5746584 1617904 5747904 1625464 5748232 1625512 5747120 +1625464 5748232 1620224 5752520 1625488 5748232 1625568 5748208 +1617904 5747904 1617896 5748024 1625464 5748232 1625376 5746584 +1625464 5748232 1617896 5748024 1620064 5752296 1620152 5752352 +1617896 5748024 1620064 5752296 1625464 5748232 1617904 5747904 +1625712 5748088 1625872 5747552 1625624 5747288 1625464 5748232 +1617904 5747904 1625360 5748208 1625376 5746584 1617848 5747624 +1625376 5746584 1625360 5748208 1625464 5748232 1625512 5747120 +1625464 5748232 1625624 5747288 1625512 5747120 1625360 5748208 +1625464 5748232 1625712 5748088 1625624 5747288 1625360 5748208 +1625624 5747288 1625512 5747120 1625360 5748208 1625712 5748088 +1625376 5746584 1625360 5748208 1625512 5747120 1625448 5746768 +1625376 5746584 1617904 5747904 1625360 5748208 1625512 5747120 +1625464 5748232 1625680 5748128 1625712 5748088 1625360 5748208 +1625712 5748088 1625624 5747288 1625360 5748208 1625680 5748128 +1625464 5748232 1625568 5748208 1625680 5748128 1625360 5748208 +1625464 5748232 1625488 5748232 1625568 5748208 1625360 5748208 +1625680 5748128 1625712 5748088 1625360 5748208 1625568 5748208 +1625512 5747120 1625376 5746584 1625360 5748208 1625624 5747288 +1625464 5748232 1625360 5748208 1617904 5747904 1617896 5748024 +1625360 5748208 1617896 5748024 1625464 5748232 1625568 5748208 +1625464 5748232 1625360 5748208 1617896 5748024 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1625360 5748208 +1625360 5748208 1617904 5747904 1617896 5748024 1620064 5752296 +1625464 5748232 1625360 5748208 1620064 5752296 1620152 5752352 +1625464 5748232 1625360 5748208 1620152 5752352 1620192 5752400 +1625464 5748232 1625360 5748208 1620192 5752400 1620224 5752472 +1625464 5748232 1625360 5748208 1620224 5752472 1620224 5752520 +1625360 5748208 1620152 5752352 1620192 5752400 1620224 5752472 +1625360 5748208 1620064 5752296 1620152 5752352 1620192 5752400 +1625464 5748232 1625568 5748208 1625360 5748208 1620224 5752472 +1625360 5748208 1617896 5748024 1620064 5752296 1620152 5752352 +1625360 5748208 1625376 5746584 1617904 5747904 1617896 5748024 +1625712 5748088 1625872 5747552 1625624 5747288 1625360 5748208 +1617904 5747904 1625264 5748136 1625376 5746584 1617848 5747624 +1625376 5746584 1625264 5748136 1625360 5748208 1625512 5747120 +1625376 5746584 1625264 5748136 1625512 5747120 1625448 5746768 +1625264 5748136 1617904 5747904 1625360 5748208 1625512 5747120 +1625376 5746584 1617904 5747904 1625264 5748136 1625512 5747120 +1625360 5748208 1625624 5747288 1625512 5747120 1625264 5748136 +1625360 5748208 1625712 5748088 1625624 5747288 1625264 5748136 +1625360 5748208 1625680 5748128 1625712 5748088 1625264 5748136 +1625712 5748088 1625624 5747288 1625264 5748136 1625680 5748128 +1625360 5748208 1625680 5748128 1625264 5748136 1617904 5747904 +1625512 5747120 1625376 5746584 1625264 5748136 1625624 5747288 +1625360 5748208 1625568 5748208 1625680 5748128 1625264 5748136 +1625680 5748128 1625712 5748088 1625264 5748136 1625568 5748208 +1625360 5748208 1625568 5748208 1625264 5748136 1617904 5747904 +1625360 5748208 1625464 5748232 1625568 5748208 1625264 5748136 +1625624 5747288 1625512 5747120 1625264 5748136 1625712 5748088 +1625360 5748208 1625264 5748136 1617904 5747904 1617896 5748024 +1625360 5748208 1625568 5748208 1625264 5748136 1617896 5748024 +1625264 5748136 1625376 5746584 1617904 5747904 1617896 5748024 +1625360 5748208 1625264 5748136 1617896 5748024 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1625264 5748136 +1625360 5748208 1625568 5748208 1625264 5748136 1620064 5752296 +1625360 5748208 1625264 5748136 1620064 5752296 1620152 5752352 +1625360 5748208 1625568 5748208 1625264 5748136 1620152 5752352 +1625264 5748136 1617896 5748024 1620064 5752296 1620152 5752352 +1625360 5748208 1625264 5748136 1620152 5752352 1620192 5752400 +1625360 5748208 1625568 5748208 1625264 5748136 1620192 5752400 +1625360 5748208 1625264 5748136 1620192 5752400 1620224 5752472 +1625264 5748136 1620064 5752296 1620152 5752352 1620192 5752400 +1625264 5748136 1617904 5747904 1617896 5748024 1620064 5752296 +1625712 5748088 1625872 5747552 1625624 5747288 1625264 5748136 +1625712 5748088 1625872 5747552 1625264 5748136 1625680 5748128 +1625712 5748088 1625784 5748032 1625872 5747552 1625264 5748136 +1625624 5747288 1625512 5747120 1625264 5748136 1625872 5747552 +1617904 5747904 1625128 5748024 1625376 5746584 1617848 5747624 +1625376 5746584 1617768 5747376 1617848 5747624 1625128 5748024 +1625264 5748136 1625128 5748024 1617904 5747904 1617896 5748024 +1625264 5748136 1625376 5746584 1625128 5748024 1617896 5748024 +1625376 5746584 1625128 5748024 1625264 5748136 1625512 5747120 +1625376 5746584 1625128 5748024 1625512 5747120 1625448 5746768 +1625264 5748136 1625624 5747288 1625512 5747120 1625128 5748024 +1625128 5748024 1617896 5748024 1625264 5748136 1625624 5747288 +1625128 5748024 1625624 5747288 1625512 5747120 1625448 5746768 +1617904 5747904 1617896 5748024 1625128 5748024 1617848 5747624 +1625128 5748024 1625448 5746768 1625376 5746584 1617848 5747624 +1625264 5748136 1625872 5747552 1625624 5747288 1625128 5748024 +1625624 5747288 1625512 5747120 1625128 5748024 1625872 5747552 +1625264 5748136 1625872 5747552 1625128 5748024 1617896 5748024 +1625264 5748136 1625128 5748024 1617896 5748024 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1625128 5748024 +1625128 5748024 1617904 5747904 1617896 5748024 1620064 5752296 +1625264 5748136 1625872 5747552 1625128 5748024 1620064 5752296 +1625264 5748136 1625128 5748024 1620064 5752296 1620152 5752352 +1625264 5748136 1625872 5747552 1625128 5748024 1620152 5752352 +1625264 5748136 1625128 5748024 1620152 5752352 1620192 5752400 +1625264 5748136 1625872 5747552 1625128 5748024 1620192 5752400 +1625128 5748024 1620064 5752296 1620152 5752352 1620192 5752400 +1625264 5748136 1625128 5748024 1620192 5752400 1625360 5748208 +1625128 5748024 1617896 5748024 1620064 5752296 1620152 5752352 +1625264 5748136 1625712 5748088 1625872 5747552 1625128 5748024 +1625264 5748136 1625680 5748128 1625712 5748088 1625128 5748024 +1625264 5748136 1625712 5748088 1625128 5748024 1620192 5752400 +1625712 5748088 1625784 5748032 1625872 5747552 1625128 5748024 +1625872 5747552 1625624 5747288 1625128 5748024 1625712 5748088 +1617848 5747624 1625080 5747976 1625376 5746584 1617768 5747376 +1625128 5748024 1625080 5747976 1617848 5747624 1617904 5747904 +1625128 5748024 1625080 5747976 1617904 5747904 1617896 5748024 +1625080 5747976 1617848 5747624 1617904 5747904 1617896 5748024 +1625128 5748024 1625080 5747976 1617896 5748024 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1625080 5747976 +1625080 5747976 1617904 5747904 1617896 5748024 1620064 5752296 +1625128 5748024 1625376 5746584 1625080 5747976 1620064 5752296 +1625376 5746584 1625080 5747976 1625128 5748024 1625448 5746768 +1625128 5748024 1625512 5747120 1625448 5746768 1625080 5747976 +1625128 5748024 1625624 5747288 1625512 5747120 1625080 5747976 +1625512 5747120 1625448 5746768 1625080 5747976 1625624 5747288 +1625128 5748024 1625872 5747552 1625624 5747288 1625080 5747976 +1625080 5747976 1620064 5752296 1625128 5748024 1625624 5747288 +1625448 5746768 1625376 5746584 1625080 5747976 1625512 5747120 +1625080 5747976 1625376 5746584 1617848 5747624 1617904 5747904 +1625376 5746584 1617848 5747624 1625080 5747976 1625448 5746768 +1625128 5748024 1625080 5747976 1620064 5752296 1620152 5752352 +1625080 5747976 1617896 5748024 1620064 5752296 1620152 5752352 +1625128 5748024 1625624 5747288 1625080 5747976 1620152 5752352 +1625128 5748024 1625080 5747976 1620152 5752352 1620192 5752400 +1625128 5748024 1625624 5747288 1625080 5747976 1620192 5752400 +1625128 5748024 1625080 5747976 1620192 5752400 1625264 5748136 +1625080 5747976 1620064 5752296 1620152 5752352 1620192 5752400 +1617848 5747624 1624904 5747816 1625376 5746584 1617768 5747376 +1625376 5746584 1617712 5747256 1617768 5747376 1624904 5747816 +1625080 5747976 1624904 5747816 1617848 5747624 1617904 5747904 +1625080 5747976 1624904 5747816 1617904 5747904 1617896 5748024 +1625080 5747976 1624904 5747816 1617896 5748024 1620064 5752296 +1624904 5747816 1617904 5747904 1617896 5748024 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1624904 5747816 +1625080 5747976 1624904 5747816 1620064 5752296 1620152 5752352 +1624904 5747816 1617896 5748024 1620064 5752296 1620152 5752352 +1624904 5747816 1617848 5747624 1617904 5747904 1617896 5748024 +1617848 5747624 1617904 5747904 1624904 5747816 1617768 5747376 +1624904 5747816 1625080 5747976 1625376 5746584 1617768 5747376 +1625080 5747976 1625376 5746584 1624904 5747816 1620152 5752352 +1625376 5746584 1624904 5747816 1625080 5747976 1625448 5746768 +1625080 5747976 1625512 5747120 1625448 5746768 1624904 5747816 +1625080 5747976 1625624 5747288 1625512 5747120 1624904 5747816 +1625080 5747976 1625128 5748024 1625624 5747288 1624904 5747816 +1625512 5747120 1625448 5746768 1624904 5747816 1625624 5747288 +1625448 5746768 1625376 5746584 1624904 5747816 1625512 5747120 +1625376 5746584 1617768 5747376 1624904 5747816 1625448 5746768 +1624904 5747816 1620152 5752352 1625080 5747976 1625624 5747288 +1625080 5747976 1624904 5747816 1620152 5752352 1620192 5752400 +1624904 5747816 1620064 5752296 1620152 5752352 1620192 5752400 +1625080 5747976 1625624 5747288 1624904 5747816 1620192 5752400 +1625080 5747976 1624904 5747816 1620192 5752400 1625128 5748024 +1625080 5747976 1625624 5747288 1624904 5747816 1625128 5748024 +1620192 5752400 1625264 5748136 1625128 5748024 1624904 5747816 +1624904 5747816 1620152 5752352 1620192 5752400 1625128 5748024 +1624904 5747816 1624672 5747704 1617768 5747376 1617848 5747624 +1624904 5747816 1625376 5746584 1624672 5747704 1617848 5747624 +1624672 5747704 1625376 5746584 1617768 5747376 1617848 5747624 +1617768 5747376 1624672 5747704 1625376 5746584 1617712 5747256 +1617768 5747376 1617848 5747624 1624672 5747704 1617712 5747256 +1624672 5747704 1624904 5747816 1625376 5746584 1617712 5747256 +1624904 5747816 1624672 5747704 1617848 5747624 1617904 5747904 +1624672 5747704 1617768 5747376 1617848 5747624 1617904 5747904 +1624904 5747816 1625376 5746584 1624672 5747704 1617904 5747904 +1624904 5747816 1624672 5747704 1617904 5747904 1617896 5748024 +1624904 5747816 1625376 5746584 1624672 5747704 1617896 5748024 +1624904 5747816 1624672 5747704 1617896 5748024 1620064 5752296 +1624904 5747816 1625376 5746584 1624672 5747704 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1624672 5747704 +1624904 5747816 1624672 5747704 1620064 5752296 1620152 5752352 +1624904 5747816 1625376 5746584 1624672 5747704 1620152 5752352 +1624672 5747704 1617896 5748024 1620064 5752296 1620152 5752352 +1624904 5747816 1624672 5747704 1620152 5752352 1620192 5752400 +1624904 5747816 1625376 5746584 1624672 5747704 1620192 5752400 +1624672 5747704 1620064 5752296 1620152 5752352 1620192 5752400 +1624672 5747704 1617904 5747904 1617896 5748024 1620064 5752296 +1624672 5747704 1617848 5747624 1617904 5747904 1617896 5748024 +1625376 5746584 1624672 5747704 1624904 5747816 1625448 5746768 +1624672 5747704 1620192 5752400 1624904 5747816 1625448 5746768 +1625376 5746584 1617712 5747256 1624672 5747704 1625448 5746768 +1624904 5747816 1625512 5747120 1625448 5746768 1624672 5747704 +1624904 5747816 1625512 5747120 1624672 5747704 1620192 5752400 +1624904 5747816 1625624 5747288 1625512 5747120 1624672 5747704 +1625448 5746768 1625376 5746584 1624672 5747704 1625512 5747120 +1625376 5746584 1617608 5747096 1617712 5747256 1624672 5747704 +1624904 5747816 1624672 5747704 1620192 5752400 1625128 5748024 +1624904 5747816 1625512 5747120 1624672 5747704 1625128 5748024 +1624672 5747704 1620152 5752352 1620192 5752400 1625128 5748024 +1624904 5747816 1624672 5747704 1625128 5748024 1625080 5747976 +1624904 5747816 1625512 5747120 1624672 5747704 1625080 5747976 +1620192 5752400 1625264 5748136 1625128 5748024 1624672 5747704 +1624672 5747704 1620192 5752400 1625128 5748024 1625080 5747976 +1625376 5746584 1624656 5747688 1624672 5747704 1625448 5746768 +1624656 5747688 1617712 5747256 1624672 5747704 1625448 5746768 +1625376 5746584 1617712 5747256 1624656 5747688 1625448 5746768 +1624672 5747704 1624656 5747688 1617712 5747256 1617768 5747376 +1624672 5747704 1624656 5747688 1617768 5747376 1617848 5747624 +1624672 5747704 1624656 5747688 1617848 5747624 1617904 5747904 +1624656 5747688 1617768 5747376 1617848 5747624 1617904 5747904 +1624672 5747704 1625448 5746768 1624656 5747688 1617904 5747904 +1624656 5747688 1625376 5746584 1617712 5747256 1617768 5747376 +1624656 5747688 1617712 5747256 1617768 5747376 1617848 5747624 +1624672 5747704 1624656 5747688 1617904 5747904 1617896 5748024 +1624656 5747688 1617848 5747624 1617904 5747904 1617896 5748024 +1624672 5747704 1625448 5746768 1624656 5747688 1617896 5748024 +1624672 5747704 1624656 5747688 1617896 5748024 1620064 5752296 +1624672 5747704 1625448 5746768 1624656 5747688 1620064 5752296 +1624672 5747704 1624656 5747688 1620064 5752296 1620152 5752352 +1624672 5747704 1625448 5746768 1624656 5747688 1620152 5752352 +1617896 5748024 1620032 5752288 1620064 5752296 1624656 5747688 +1624672 5747704 1624656 5747688 1620152 5752352 1620192 5752400 +1624656 5747688 1617896 5748024 1620064 5752296 1620152 5752352 +1624656 5747688 1617904 5747904 1617896 5748024 1620064 5752296 +1624672 5747704 1625512 5747120 1625448 5746768 1624656 5747688 +1624672 5747704 1625512 5747120 1624656 5747688 1620152 5752352 +1625448 5746768 1625376 5746584 1624656 5747688 1625512 5747120 +1624672 5747704 1624904 5747816 1625512 5747120 1624656 5747688 +1624672 5747704 1624904 5747816 1624656 5747688 1620152 5752352 +1624904 5747816 1625624 5747288 1625512 5747120 1624656 5747688 +1625512 5747120 1625448 5746768 1624656 5747688 1624904 5747816 +1617712 5747256 1624656 5747688 1625376 5746584 1617608 5747096 +1617712 5747256 1617768 5747376 1624656 5747688 1617608 5747096 +1624656 5747688 1625448 5746768 1625376 5746584 1617608 5747096 +1625376 5746584 1617512 5746992 1617608 5747096 1624656 5747688 +1625376 5746584 1624536 5747664 1624656 5747688 1625448 5746768 +1624656 5747688 1625512 5747120 1625448 5746768 1624536 5747664 +1624536 5747664 1617608 5747096 1624656 5747688 1625448 5746768 +1625376 5746584 1617608 5747096 1624536 5747664 1625448 5746768 +1617608 5747096 1624536 5747664 1625376 5746584 1617512 5746992 +1624656 5747688 1624536 5747664 1617608 5747096 1617712 5747256 +1624656 5747688 1624536 5747664 1617712 5747256 1617768 5747376 +1624656 5747688 1625448 5746768 1624536 5747664 1617768 5747376 +1624536 5747664 1625376 5746584 1617608 5747096 1617712 5747256 +1624656 5747688 1624536 5747664 1617768 5747376 1617848 5747624 +1624656 5747688 1624536 5747664 1617848 5747624 1617904 5747904 +1624656 5747688 1624536 5747664 1617904 5747904 1617896 5748024 +1624536 5747664 1617848 5747624 1617904 5747904 1617896 5748024 +1624536 5747664 1617712 5747256 1617768 5747376 1617848 5747624 +1624656 5747688 1625448 5746768 1624536 5747664 1617896 5748024 +1624536 5747664 1617768 5747376 1617848 5747624 1617904 5747904 +1624656 5747688 1624536 5747664 1617896 5748024 1620064 5752296 +1624536 5747664 1617904 5747904 1617896 5748024 1620064 5752296 +1624656 5747688 1625448 5746768 1624536 5747664 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1624536 5747664 +1624656 5747688 1624536 5747664 1620064 5752296 1620152 5752352 +1624656 5747688 1625448 5746768 1624536 5747664 1620152 5752352 +1624656 5747688 1624536 5747664 1620152 5752352 1624672 5747704 +1624656 5747688 1625448 5746768 1624536 5747664 1624672 5747704 +1620152 5752352 1620192 5752400 1624672 5747704 1624536 5747664 +1624672 5747704 1624656 5747688 1624536 5747664 1620192 5752400 +1620192 5752400 1625128 5748024 1624672 5747704 1624536 5747664 +1624672 5747704 1624656 5747688 1624536 5747664 1625128 5748024 +1620192 5752400 1625128 5748024 1624536 5747664 1620152 5752352 +1624536 5747664 1620064 5752296 1620152 5752352 1620192 5752400 +1624536 5747664 1617896 5748024 1620064 5752296 1620152 5752352 +1624536 5747664 1617608 5747096 1617712 5747256 1617768 5747376 +1620192 5752400 1625264 5748136 1625128 5748024 1624536 5747664 +1625128 5748024 1624672 5747704 1624536 5747664 1625264 5748136 +1620192 5752400 1625264 5748136 1624536 5747664 1620152 5752352 +1620192 5752400 1625360 5748208 1625264 5748136 1624536 5747664 +1625128 5748024 1625080 5747976 1624672 5747704 1624536 5747664 +1624672 5747704 1624656 5747688 1624536 5747664 1625080 5747976 +1625128 5748024 1625080 5747976 1624536 5747664 1625264 5748136 +1625080 5747976 1624904 5747816 1624672 5747704 1624536 5747664 +1624536 5747664 1624208 5747632 1617608 5747096 1617712 5747256 +1624536 5747664 1625376 5746584 1624208 5747632 1617712 5747256 +1625376 5746584 1624208 5747632 1624536 5747664 1625448 5746768 +1624208 5747632 1625376 5746584 1617608 5747096 1617712 5747256 +1617608 5747096 1624208 5747632 1625376 5746584 1617512 5746992 +1617608 5747096 1617712 5747256 1624208 5747632 1617512 5746992 +1624208 5747632 1624536 5747664 1625376 5746584 1617512 5746992 +1625376 5746584 1616216 5745480 1617512 5746992 1624208 5747632 +1624536 5747664 1624208 5747632 1617712 5747256 1617768 5747376 +1624536 5747664 1624208 5747632 1617768 5747376 1617848 5747624 +1624208 5747632 1617608 5747096 1617712 5747256 1617768 5747376 +1624536 5747664 1625376 5746584 1624208 5747632 1617848 5747624 +1624536 5747664 1624208 5747632 1617848 5747624 1617904 5747904 +1624536 5747664 1624208 5747632 1617904 5747904 1617896 5748024 +1624536 5747664 1624208 5747632 1617896 5748024 1620064 5752296 +1624208 5747632 1617904 5747904 1617896 5748024 1620064 5752296 +1624208 5747632 1617768 5747376 1617848 5747624 1617904 5747904 +1624536 5747664 1625376 5746584 1624208 5747632 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1624208 5747632 +1624208 5747632 1617848 5747624 1617904 5747904 1617896 5748024 +1624536 5747664 1624208 5747632 1620064 5752296 1620152 5752352 +1624208 5747632 1617896 5748024 1620064 5752296 1620152 5752352 +1624536 5747664 1625376 5746584 1624208 5747632 1620152 5752352 +1624536 5747664 1624208 5747632 1620152 5752352 1620192 5752400 +1624536 5747664 1625376 5746584 1624208 5747632 1620192 5752400 +1624536 5747664 1624208 5747632 1620192 5752400 1625264 5748136 +1624536 5747664 1625376 5746584 1624208 5747632 1625264 5748136 +1624208 5747632 1620152 5752352 1620192 5752400 1625264 5748136 +1624208 5747632 1620064 5752296 1620152 5752352 1620192 5752400 +1624208 5747632 1617712 5747256 1617768 5747376 1617848 5747624 +1620192 5752400 1625360 5748208 1625264 5748136 1624208 5747632 +1625264 5748136 1624536 5747664 1624208 5747632 1625360 5748208 +1620192 5752400 1625360 5748208 1624208 5747632 1620152 5752352 +1620192 5752400 1620224 5752472 1625360 5748208 1624208 5747632 +1624536 5747664 1624208 5747632 1625264 5748136 1625128 5748024 +1624536 5747664 1625376 5746584 1624208 5747632 1625128 5748024 +1624536 5747664 1624208 5747632 1625128 5748024 1625080 5747976 +1624536 5747664 1625376 5746584 1624208 5747632 1625080 5747976 +1624208 5747632 1625360 5748208 1625264 5748136 1625128 5748024 +1624208 5747632 1625264 5748136 1625128 5748024 1625080 5747976 +1624536 5747664 1624208 5747632 1625080 5747976 1624672 5747704 +1625376 5746584 1623904 5747528 1624208 5747632 1624536 5747664 +1624208 5747632 1623904 5747528 1617512 5746992 1617608 5747096 +1624208 5747632 1623904 5747528 1617608 5747096 1617712 5747256 +1624208 5747632 1623904 5747528 1617712 5747256 1617768 5747376 +1623904 5747528 1617608 5747096 1617712 5747256 1617768 5747376 +1624208 5747632 1625376 5746584 1623904 5747528 1617768 5747376 +1623904 5747528 1625376 5746584 1617512 5746992 1617608 5747096 +1623904 5747528 1617512 5746992 1617608 5747096 1617712 5747256 +1617512 5746992 1623904 5747528 1625376 5746584 1616216 5745480 +1617512 5746992 1623904 5747528 1616216 5745480 1616232 5745520 +1617512 5746992 1617608 5747096 1623904 5747528 1616216 5745480 +1623904 5747528 1624208 5747632 1625376 5746584 1616216 5745480 +1625376 5746584 1616160 5745400 1616216 5745480 1623904 5747528 +1625376 5746584 1616160 5745400 1623904 5747528 1624208 5747632 +1625376 5746584 1615544 5744608 1616160 5745400 1623904 5747528 +1616216 5745480 1617512 5746992 1623904 5747528 1616160 5745400 +1624208 5747632 1623904 5747528 1617768 5747376 1617848 5747624 +1624208 5747632 1623904 5747528 1617848 5747624 1617904 5747904 +1623904 5747528 1617712 5747256 1617768 5747376 1617848 5747624 +1624208 5747632 1625376 5746584 1623904 5747528 1617904 5747904 +1624208 5747632 1623904 5747528 1617904 5747904 1617896 5748024 +1624208 5747632 1623904 5747528 1617896 5748024 1620064 5752296 +1624208 5747632 1623904 5747528 1620064 5752296 1620152 5752352 +1623904 5747528 1617896 5748024 1620064 5752296 1620152 5752352 +1623904 5747528 1617848 5747624 1617904 5747904 1617896 5748024 +1624208 5747632 1625376 5746584 1623904 5747528 1620152 5752352 +1617896 5748024 1620032 5752288 1620064 5752296 1623904 5747528 +1623904 5747528 1617904 5747904 1617896 5748024 1620064 5752296 +1624208 5747632 1623904 5747528 1620152 5752352 1620192 5752400 +1623904 5747528 1620064 5752296 1620152 5752352 1620192 5752400 +1624208 5747632 1625376 5746584 1623904 5747528 1620192 5752400 +1624208 5747632 1623904 5747528 1620192 5752400 1625360 5748208 +1623904 5747528 1617768 5747376 1617848 5747624 1617904 5747904 +1617512 5746992 1623656 5747496 1616216 5745480 1616232 5745520 +1623904 5747528 1623656 5747496 1617512 5746992 1617608 5747096 +1623904 5747528 1616216 5745480 1623656 5747496 1617608 5747096 +1623656 5747496 1616216 5745480 1617512 5746992 1617608 5747096 +1623904 5747528 1623656 5747496 1617608 5747096 1617712 5747256 +1623904 5747528 1623656 5747496 1617712 5747256 1617768 5747376 +1623904 5747528 1623656 5747496 1617768 5747376 1617848 5747624 +1623656 5747496 1617712 5747256 1617768 5747376 1617848 5747624 +1623656 5747496 1617512 5746992 1617608 5747096 1617712 5747256 +1623904 5747528 1616216 5745480 1623656 5747496 1617848 5747624 +1623656 5747496 1617608 5747096 1617712 5747256 1617768 5747376 +1616216 5745480 1623656 5747496 1623904 5747528 1616160 5745400 +1623656 5747496 1617848 5747624 1623904 5747528 1616160 5745400 +1616216 5745480 1617512 5746992 1623656 5747496 1616160 5745400 +1623904 5747528 1625376 5746584 1616160 5745400 1623656 5747496 +1623904 5747528 1625376 5746584 1623656 5747496 1617848 5747624 +1623904 5747528 1624208 5747632 1625376 5746584 1623656 5747496 +1625376 5746584 1615544 5744608 1616160 5745400 1623656 5747496 +1616160 5745400 1616216 5745480 1623656 5747496 1625376 5746584 +1623904 5747528 1623656 5747496 1617848 5747624 1617904 5747904 +1623904 5747528 1623656 5747496 1617904 5747904 1617896 5748024 +1623656 5747496 1617768 5747376 1617848 5747624 1617904 5747904 +1623904 5747528 1625376 5746584 1623656 5747496 1617896 5748024 +1623904 5747528 1623656 5747496 1617896 5748024 1620064 5752296 +1623904 5747528 1623656 5747496 1620064 5752296 1620152 5752352 +1623904 5747528 1623656 5747496 1620152 5752352 1620192 5752400 +1623656 5747496 1620064 5752296 1620152 5752352 1620192 5752400 +1623656 5747496 1617904 5747904 1617896 5748024 1620064 5752296 +1623904 5747528 1625376 5746584 1623656 5747496 1620192 5752400 +1617896 5748024 1620032 5752288 1620064 5752296 1623656 5747496 +1623656 5747496 1617896 5748024 1620064 5752296 1620152 5752352 +1623904 5747528 1623656 5747496 1620192 5752400 1624208 5747632 +1623656 5747496 1620152 5752352 1620192 5752400 1624208 5747632 +1623904 5747528 1625376 5746584 1623656 5747496 1624208 5747632 +1620192 5752400 1625360 5748208 1624208 5747632 1623656 5747496 +1623656 5747496 1617848 5747624 1617904 5747904 1617896 5748024 +1617512 5746992 1623264 5747416 1616216 5745480 1616232 5745520 +1623656 5747496 1623264 5747416 1617512 5746992 1617608 5747096 +1623656 5747496 1623264 5747416 1617608 5747096 1617712 5747256 +1623264 5747416 1617512 5746992 1617608 5747096 1617712 5747256 +1623656 5747496 1616216 5745480 1623264 5747416 1617712 5747256 +1616216 5745480 1623264 5747416 1623656 5747496 1616160 5745400 +1623264 5747416 1617712 5747256 1623656 5747496 1616160 5745400 +1623656 5747496 1623264 5747416 1617712 5747256 1617768 5747376 +1623656 5747496 1623264 5747416 1617768 5747376 1617848 5747624 +1623656 5747496 1623264 5747416 1617848 5747624 1617904 5747904 +1623264 5747416 1617768 5747376 1617848 5747624 1617904 5747904 +1623264 5747416 1617608 5747096 1617712 5747256 1617768 5747376 +1623656 5747496 1616160 5745400 1623264 5747416 1617904 5747904 +1623264 5747416 1617712 5747256 1617768 5747376 1617848 5747624 +1623656 5747496 1625376 5746584 1616160 5745400 1623264 5747416 +1623656 5747496 1625376 5746584 1623264 5747416 1617904 5747904 +1616160 5745400 1616216 5745480 1623264 5747416 1625376 5746584 +1625376 5746584 1615544 5744608 1616160 5745400 1623264 5747416 +1616160 5745400 1616216 5745480 1623264 5747416 1615544 5744608 +1625376 5746584 1615544 5744608 1623264 5747416 1623656 5747496 +1623264 5747416 1616216 5745480 1617512 5746992 1617608 5747096 +1616216 5745480 1617512 5746992 1623264 5747416 1616160 5745400 +1615544 5744608 1616016 5745272 1616160 5745400 1623264 5747416 +1623656 5747496 1623904 5747528 1625376 5746584 1623264 5747416 +1623656 5747496 1623264 5747416 1617904 5747904 1617896 5748024 +1623656 5747496 1623264 5747416 1617896 5748024 1620064 5752296 +1623264 5747416 1617848 5747624 1617904 5747904 1617896 5748024 +1623656 5747496 1625376 5746584 1623264 5747416 1620064 5752296 +1617896 5748024 1620032 5752288 1620064 5752296 1623264 5747416 +1620064 5752296 1623656 5747496 1623264 5747416 1620032 5752288 +1623656 5747496 1623264 5747416 1620064 5752296 1620152 5752352 +1623656 5747496 1623264 5747416 1620152 5752352 1620192 5752400 +1623656 5747496 1623264 5747416 1620192 5752400 1624208 5747632 +1623264 5747416 1620032 5752288 1620064 5752296 1620152 5752352 +1623656 5747496 1625376 5746584 1623264 5747416 1620192 5752400 +1623264 5747416 1620064 5752296 1620152 5752352 1620192 5752400 +1617896 5748024 1617848 5748112 1620032 5752288 1623264 5747416 +1623264 5747416 1617904 5747904 1617896 5748024 1620032 5752288 +1625376 5746584 1615496 5744536 1615544 5744608 1623264 5747416 +1615544 5744608 1616160 5745400 1623264 5747416 1615496 5744536 +1625376 5746584 1615496 5744536 1623264 5747416 1623656 5747496 +1625376 5746584 1615632 5735512 1615496 5744536 1623264 5747416 +1615632 5735512 1615368 5744400 1615496 5744536 1623264 5747416 +1625376 5746584 1629584 5726976 1615632 5735512 1623264 5747416 +1625376 5746584 1615632 5735512 1623264 5747416 1623656 5747496 +1615496 5744536 1615544 5744608 1623264 5747416 1615632 5735512 +1615496 5744536 1623152 5747352 1615632 5735512 1615368 5744400 +1615632 5735512 1623152 5747352 1623264 5747416 1625376 5746584 +1615632 5735512 1623152 5747352 1625376 5746584 1629584 5726976 +1623264 5747416 1623656 5747496 1625376 5746584 1623152 5747352 +1625376 5746584 1615632 5735512 1623152 5747352 1623656 5747496 +1623152 5747352 1615496 5744536 1623264 5747416 1623656 5747496 +1615632 5735512 1615496 5744536 1623152 5747352 1625376 5746584 +1623656 5747496 1623904 5747528 1625376 5746584 1623152 5747352 +1623264 5747416 1623152 5747352 1615496 5744536 1615544 5744608 +1623264 5747416 1623152 5747352 1615544 5744608 1616160 5745400 +1623264 5747416 1623152 5747352 1616160 5745400 1616216 5745480 +1623152 5747352 1615544 5744608 1616160 5745400 1616216 5745480 +1623264 5747416 1623656 5747496 1623152 5747352 1616216 5745480 +1623264 5747416 1623152 5747352 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1623152 5747352 +1623152 5747352 1616160 5745400 1616216 5745480 1617512 5746992 +1623264 5747416 1623152 5747352 1617512 5746992 1617608 5747096 +1623264 5747416 1623152 5747352 1617608 5747096 1617712 5747256 +1623264 5747416 1623152 5747352 1617712 5747256 1617768 5747376 +1623152 5747352 1617608 5747096 1617712 5747256 1617768 5747376 +1623264 5747416 1623152 5747352 1617768 5747376 1617848 5747624 +1623264 5747416 1623152 5747352 1617848 5747624 1617904 5747904 +1623264 5747416 1623152 5747352 1617904 5747904 1617896 5748024 +1623152 5747352 1617848 5747624 1617904 5747904 1617896 5748024 +1623152 5747352 1617712 5747256 1617768 5747376 1617848 5747624 +1623152 5747352 1617768 5747376 1617848 5747624 1617904 5747904 +1623152 5747352 1617512 5746992 1617608 5747096 1617712 5747256 +1623264 5747416 1623656 5747496 1623152 5747352 1617896 5748024 +1623152 5747352 1616216 5745480 1617512 5746992 1617608 5747096 +1623152 5747352 1615632 5735512 1615496 5744536 1615544 5744608 +1615544 5744608 1616016 5745272 1616160 5745400 1623152 5747352 +1623264 5747416 1623152 5747352 1617896 5748024 1620032 5752288 +1623152 5747352 1617904 5747904 1617896 5748024 1620032 5752288 +1623264 5747416 1623152 5747352 1620032 5752288 1620064 5752296 +1623264 5747416 1623152 5747352 1620064 5752296 1620152 5752352 +1623152 5747352 1620032 5752288 1620064 5752296 1620152 5752352 +1623264 5747416 1623152 5747352 1620152 5752352 1620192 5752400 +1623264 5747416 1623656 5747496 1623152 5747352 1620152 5752352 +1617896 5748024 1617848 5748112 1620032 5752288 1623152 5747352 +1623152 5747352 1617896 5748024 1620032 5752288 1620064 5752296 +1623152 5747352 1615496 5744536 1615544 5744608 1616160 5745400 +1615496 5744536 1622880 5747168 1615632 5735512 1615368 5744400 +1623152 5747352 1622880 5747168 1615496 5744536 1615544 5744608 +1623152 5747352 1615632 5735512 1622880 5747168 1615544 5744608 +1615632 5735512 1622880 5747168 1623152 5747352 1625376 5746584 +1615632 5735512 1622880 5747168 1625376 5746584 1629584 5726976 +1623152 5747352 1623656 5747496 1625376 5746584 1622880 5747168 +1623152 5747352 1623264 5747416 1623656 5747496 1622880 5747168 +1622880 5747168 1615544 5744608 1623152 5747352 1623656 5747496 +1625376 5746584 1615632 5735512 1622880 5747168 1623656 5747496 +1622880 5747168 1615632 5735512 1615496 5744536 1615544 5744608 +1615632 5735512 1615496 5744536 1622880 5747168 1625376 5746584 +1623656 5747496 1623904 5747528 1625376 5746584 1622880 5747168 +1623152 5747352 1622880 5747168 1615544 5744608 1616160 5745400 +1623152 5747352 1622880 5747168 1616160 5745400 1616216 5745480 +1623152 5747352 1622880 5747168 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1622880 5747168 +1622880 5747168 1616160 5745400 1616216 5745480 1617512 5746992 +1623152 5747352 1622880 5747168 1617512 5746992 1617608 5747096 +1622880 5747168 1616216 5745480 1617512 5746992 1617608 5747096 +1623152 5747352 1622880 5747168 1617608 5747096 1617712 5747256 +1623152 5747352 1622880 5747168 1617712 5747256 1617768 5747376 +1623152 5747352 1622880 5747168 1617768 5747376 1617848 5747624 +1622880 5747168 1617712 5747256 1617768 5747376 1617848 5747624 +1623152 5747352 1622880 5747168 1617848 5747624 1617904 5747904 +1623152 5747352 1622880 5747168 1617904 5747904 1617896 5748024 +1623152 5747352 1622880 5747168 1617896 5748024 1620032 5752288 +1622880 5747168 1617904 5747904 1617896 5748024 1620032 5752288 +1622880 5747168 1617768 5747376 1617848 5747624 1617904 5747904 +1622880 5747168 1617848 5747624 1617904 5747904 1617896 5748024 +1622880 5747168 1617608 5747096 1617712 5747256 1617768 5747376 +1622880 5747168 1617512 5746992 1617608 5747096 1617712 5747256 +1622880 5747168 1615496 5744536 1615544 5744608 1616160 5745400 +1623152 5747352 1623656 5747496 1622880 5747168 1620032 5752288 +1615544 5744608 1616016 5745272 1616160 5745400 1622880 5747168 +1617896 5748024 1617848 5748112 1620032 5752288 1622880 5747168 +1623152 5747352 1622880 5747168 1620032 5752288 1620064 5752296 +1622880 5747168 1617896 5748024 1620032 5752288 1620064 5752296 +1623152 5747352 1622880 5747168 1620064 5752296 1620152 5752352 +1623152 5747352 1623656 5747496 1622880 5747168 1620064 5752296 +1622880 5747168 1615544 5744608 1616160 5745400 1616216 5745480 +1615496 5744536 1622688 5747096 1615632 5735512 1615368 5744400 +1622880 5747168 1622688 5747096 1615496 5744536 1615544 5744608 +1622880 5747168 1622688 5747096 1615544 5744608 1616160 5745400 +1622688 5747096 1615496 5744536 1615544 5744608 1616160 5745400 +1622880 5747168 1615632 5735512 1622688 5747096 1616160 5745400 +1615632 5735512 1622688 5747096 1622880 5747168 1625376 5746584 +1615632 5735512 1622688 5747096 1625376 5746584 1629584 5726976 +1622880 5747168 1623656 5747496 1625376 5746584 1622688 5747096 +1622688 5747096 1616160 5745400 1622880 5747168 1625376 5746584 +1615544 5744608 1616016 5745272 1616160 5745400 1622688 5747096 +1622688 5747096 1615632 5735512 1615496 5744536 1615544 5744608 +1615632 5735512 1615496 5744536 1622688 5747096 1625376 5746584 +1622880 5747168 1622688 5747096 1616160 5745400 1616216 5745480 +1622880 5747168 1622688 5747096 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1622688 5747096 +1622880 5747168 1622688 5747096 1617512 5746992 1617608 5747096 +1622688 5747096 1616216 5745480 1617512 5746992 1617608 5747096 +1622880 5747168 1622688 5747096 1617608 5747096 1617712 5747256 +1622688 5747096 1617512 5746992 1617608 5747096 1617712 5747256 +1622880 5747168 1622688 5747096 1617712 5747256 1617768 5747376 +1622880 5747168 1622688 5747096 1617768 5747376 1617848 5747624 +1622880 5747168 1622688 5747096 1617848 5747624 1617904 5747904 +1622688 5747096 1617768 5747376 1617848 5747624 1617904 5747904 +1622880 5747168 1622688 5747096 1617904 5747904 1617896 5748024 +1622880 5747168 1622688 5747096 1617896 5748024 1620032 5752288 +1622880 5747168 1622688 5747096 1620032 5752288 1620064 5752296 +1622688 5747096 1617896 5748024 1620032 5752288 1620064 5752296 +1622688 5747096 1617848 5747624 1617904 5747904 1617896 5748024 +1622688 5747096 1617904 5747904 1617896 5748024 1620032 5752288 +1622688 5747096 1617712 5747256 1617768 5747376 1617848 5747624 +1622688 5747096 1617608 5747096 1617712 5747256 1617768 5747376 +1622688 5747096 1615544 5744608 1616160 5745400 1616216 5745480 +1622880 5747168 1625376 5746584 1622688 5747096 1620064 5752296 +1617896 5748024 1617848 5748112 1620032 5752288 1622688 5747096 +1622880 5747168 1622688 5747096 1620064 5752296 1623152 5747352 +1622688 5747096 1620032 5752288 1620064 5752296 1623152 5747352 +1620064 5752296 1620152 5752352 1623152 5747352 1622688 5747096 +1622880 5747168 1625376 5746584 1622688 5747096 1623152 5747352 +1622688 5747096 1616160 5745400 1616216 5745480 1617512 5746992 +1615496 5744536 1622504 5747016 1615632 5735512 1615368 5744400 +1622688 5747096 1622504 5747016 1615496 5744536 1615544 5744608 +1622688 5747096 1622504 5747016 1615544 5744608 1616160 5745400 +1622688 5747096 1622504 5747016 1616160 5745400 1616216 5745480 +1622504 5747016 1615544 5744608 1616160 5745400 1616216 5745480 +1615544 5744608 1616016 5745272 1616160 5745400 1622504 5747016 +1622504 5747016 1615496 5744536 1615544 5744608 1616160 5745400 +1622688 5747096 1615632 5735512 1622504 5747016 1616216 5745480 +1615632 5735512 1622504 5747016 1622688 5747096 1625376 5746584 +1615632 5735512 1622504 5747016 1625376 5746584 1629584 5726976 +1622688 5747096 1622880 5747168 1625376 5746584 1622504 5747016 +1615632 5735512 1615496 5744536 1622504 5747016 1625376 5746584 +1622504 5747016 1616216 5745480 1622688 5747096 1625376 5746584 +1622504 5747016 1615632 5735512 1615496 5744536 1615544 5744608 +1622688 5747096 1622504 5747016 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1622504 5747016 +1622688 5747096 1622504 5747016 1617512 5746992 1617608 5747096 +1622688 5747096 1622504 5747016 1617608 5747096 1617712 5747256 +1622504 5747016 1617512 5746992 1617608 5747096 1617712 5747256 +1622688 5747096 1622504 5747016 1617712 5747256 1617768 5747376 +1622504 5747016 1617608 5747096 1617712 5747256 1617768 5747376 +1622688 5747096 1622504 5747016 1617768 5747376 1617848 5747624 +1622688 5747096 1622504 5747016 1617848 5747624 1617904 5747904 +1622688 5747096 1622504 5747016 1617904 5747904 1617896 5748024 +1622504 5747016 1617848 5747624 1617904 5747904 1617896 5748024 +1622688 5747096 1622504 5747016 1617896 5748024 1620032 5752288 +1622688 5747096 1622504 5747016 1620032 5752288 1620064 5752296 +1622688 5747096 1622504 5747016 1620064 5752296 1623152 5747352 +1622504 5747016 1617904 5747904 1617896 5748024 1620032 5752288 +1622504 5747016 1617896 5748024 1620032 5752288 1620064 5752296 +1622504 5747016 1617768 5747376 1617848 5747624 1617904 5747904 +1622504 5747016 1617712 5747256 1617768 5747376 1617848 5747624 +1622504 5747016 1616160 5745400 1616216 5745480 1617512 5746992 +1622688 5747096 1625376 5746584 1622504 5747016 1620064 5752296 +1617896 5748024 1617848 5748112 1620032 5752288 1622504 5747016 +1622504 5747016 1616216 5745480 1617512 5746992 1617608 5747096 +1615496 5744536 1622392 5746896 1615632 5735512 1615368 5744400 +1615632 5735512 1622392 5746896 1622504 5747016 1625376 5746584 +1615632 5735512 1622392 5746896 1625376 5746584 1629584 5726976 +1615632 5735512 1615496 5744536 1622392 5746896 1625376 5746584 +1622504 5747016 1622688 5747096 1625376 5746584 1622392 5746896 +1622688 5747096 1622880 5747168 1625376 5746584 1622392 5746896 +1622880 5747168 1623656 5747496 1625376 5746584 1622392 5746896 +1625376 5746584 1615632 5735512 1622392 5746896 1622880 5747168 +1622688 5747096 1622880 5747168 1622392 5746896 1622504 5747016 +1622504 5747016 1622392 5746896 1615496 5744536 1615544 5744608 +1622392 5746896 1615632 5735512 1615496 5744536 1615544 5744608 +1622504 5747016 1622392 5746896 1615544 5744608 1616160 5745400 +1622504 5747016 1622392 5746896 1616160 5745400 1616216 5745480 +1622504 5747016 1622392 5746896 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1622392 5746896 +1622392 5746896 1616160 5745400 1616216 5745480 1617512 5746992 +1615544 5744608 1616016 5745272 1616160 5745400 1622392 5746896 +1622392 5746896 1615544 5744608 1616160 5745400 1616216 5745480 +1622392 5746896 1615496 5744536 1615544 5744608 1616160 5745400 +1622392 5746896 1617512 5746992 1622504 5747016 1622688 5747096 +1622504 5747016 1622392 5746896 1617512 5746992 1617608 5747096 +1622504 5747016 1622392 5746896 1617608 5747096 1617712 5747256 +1622504 5747016 1622392 5746896 1617712 5747256 1617768 5747376 +1622392 5746896 1617608 5747096 1617712 5747256 1617768 5747376 +1622504 5747016 1622392 5746896 1617768 5747376 1617848 5747624 +1622392 5746896 1617712 5747256 1617768 5747376 1617848 5747624 +1622504 5747016 1622392 5746896 1617848 5747624 1617904 5747904 +1622504 5747016 1622392 5746896 1617904 5747904 1617896 5748024 +1622504 5747016 1622392 5746896 1617896 5748024 1620032 5752288 +1622392 5746896 1617848 5747624 1617904 5747904 1617896 5748024 +1622392 5746896 1617768 5747376 1617848 5747624 1617904 5747904 +1622392 5746896 1616216 5745480 1617512 5746992 1617608 5747096 +1622504 5747016 1622688 5747096 1622392 5746896 1617896 5748024 +1622392 5746896 1617512 5746992 1617608 5747096 1617712 5747256 +1615632 5735512 1622296 5746712 1625376 5746584 1629584 5726976 +1625376 5746584 1622296 5746712 1622392 5746896 1622880 5747168 +1625376 5746584 1622296 5746712 1622880 5747168 1623656 5747496 +1622392 5746896 1622688 5747096 1622880 5747168 1622296 5746712 +1622880 5747168 1625376 5746584 1622296 5746712 1622688 5747096 +1622296 5746712 1615632 5735512 1622392 5746896 1622688 5747096 +1622392 5746896 1622296 5746712 1615632 5735512 1615496 5744536 +1615632 5735512 1615368 5744400 1615496 5744536 1622296 5746712 +1622392 5746896 1622296 5746712 1615496 5744536 1615544 5744608 +1622392 5746896 1622688 5747096 1622296 5746712 1615544 5744608 +1622296 5746712 1615632 5735512 1615496 5744536 1615544 5744608 +1622296 5746712 1625376 5746584 1615632 5735512 1615496 5744536 +1625376 5746584 1615632 5735512 1622296 5746712 1622880 5747168 +1622392 5746896 1622504 5747016 1622688 5747096 1622296 5746712 +1622392 5746896 1622296 5746712 1615544 5744608 1616160 5745400 +1622296 5746712 1615496 5744536 1615544 5744608 1616160 5745400 +1622392 5746896 1622688 5747096 1622296 5746712 1616160 5745400 +1615544 5744608 1616016 5745272 1616160 5745400 1622296 5746712 +1622392 5746896 1622296 5746712 1616160 5745400 1616216 5745480 +1622392 5746896 1622296 5746712 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1622296 5746712 +1622392 5746896 1622296 5746712 1617512 5746992 1617608 5747096 +1622296 5746712 1616216 5745480 1617512 5746992 1617608 5747096 +1622392 5746896 1622688 5747096 1622296 5746712 1617608 5747096 +1622296 5746712 1616160 5745400 1616216 5745480 1617512 5746992 +1622296 5746712 1615544 5744608 1616160 5745400 1616216 5745480 +1622392 5746896 1622296 5746712 1617608 5747096 1617712 5747256 +1622392 5746896 1622296 5746712 1617712 5747256 1617768 5747376 +1622392 5746896 1622296 5746712 1617768 5747376 1617848 5747624 +1622296 5746712 1617712 5747256 1617768 5747376 1617848 5747624 +1622392 5746896 1622296 5746712 1617848 5747624 1617904 5747904 +1622296 5746712 1617768 5747376 1617848 5747624 1617904 5747904 +1622392 5746896 1622296 5746712 1617904 5747904 1617896 5748024 +1622296 5746712 1617512 5746992 1617608 5747096 1617712 5747256 +1622392 5746896 1622688 5747096 1622296 5746712 1617904 5747904 +1622296 5746712 1617608 5747096 1617712 5747256 1617768 5747376 +1615496 5744536 1622208 5746568 1615632 5735512 1615368 5744400 +1622296 5746712 1622208 5746568 1615496 5744536 1615544 5744608 +1622296 5746712 1622208 5746568 1615544 5744608 1616160 5745400 +1622208 5746568 1615496 5744536 1615544 5744608 1616160 5745400 +1615632 5735512 1622208 5746568 1622296 5746712 1625376 5746584 +1615632 5735512 1622208 5746568 1625376 5746584 1629584 5726976 +1622296 5746712 1625376 5746584 1622208 5746568 1616160 5745400 +1622296 5746712 1622880 5747168 1625376 5746584 1622208 5746568 +1622880 5747168 1623656 5747496 1625376 5746584 1622208 5746568 +1622296 5746712 1622688 5747096 1622880 5747168 1622208 5746568 +1625376 5746584 1615632 5735512 1622208 5746568 1622880 5747168 +1622296 5746712 1622880 5747168 1622208 5746568 1616160 5745400 +1622208 5746568 1615632 5735512 1615496 5744536 1615544 5744608 +1615544 5744608 1616016 5745272 1616160 5745400 1622208 5746568 +1622296 5746712 1622208 5746568 1616160 5745400 1616216 5745480 +1622208 5746568 1615544 5744608 1616160 5745400 1616216 5745480 +1622296 5746712 1622880 5747168 1622208 5746568 1616216 5745480 +1622296 5746712 1622208 5746568 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1622208 5746568 +1622296 5746712 1622208 5746568 1617512 5746992 1617608 5747096 +1622296 5746712 1622208 5746568 1617608 5747096 1617712 5747256 +1622208 5746568 1617512 5746992 1617608 5747096 1617712 5747256 +1622296 5746712 1622880 5747168 1622208 5746568 1617712 5747256 +1622208 5746568 1616216 5745480 1617512 5746992 1617608 5747096 +1622208 5746568 1616160 5745400 1616216 5745480 1617512 5746992 +1615632 5735512 1615496 5744536 1622208 5746568 1625376 5746584 +1622296 5746712 1622208 5746568 1617712 5747256 1617768 5747376 +1622296 5746712 1622208 5746568 1617768 5747376 1617848 5747624 +1622296 5746712 1622208 5746568 1617848 5747624 1617904 5747904 +1622208 5746568 1617768 5747376 1617848 5747624 1617904 5747904 +1622296 5746712 1622208 5746568 1617904 5747904 1622392 5746896 +1622208 5746568 1617608 5747096 1617712 5747256 1617768 5747376 +1622296 5746712 1622880 5747168 1622208 5746568 1617904 5747904 +1622208 5746568 1617712 5747256 1617768 5747376 1617848 5747624 +1615496 5744536 1622024 5746384 1615632 5735512 1615368 5744400 +1622208 5746568 1622024 5746384 1615496 5744536 1615544 5744608 +1622208 5746568 1622024 5746384 1615544 5744608 1616160 5745400 +1622208 5746568 1622024 5746384 1616160 5745400 1616216 5745480 +1622024 5746384 1615544 5744608 1616160 5745400 1616216 5745480 +1622024 5746384 1615496 5744536 1615544 5744608 1616160 5745400 +1615544 5744608 1616016 5745272 1616160 5745400 1622024 5746384 +1622208 5746568 1622024 5746384 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1622024 5746384 +1622024 5746384 1616160 5745400 1616216 5745480 1617512 5746992 +1622208 5746568 1622024 5746384 1617512 5746992 1617608 5747096 +1622208 5746568 1622024 5746384 1617608 5747096 1617712 5747256 +1622208 5746568 1622024 5746384 1617712 5747256 1617768 5747376 +1622024 5746384 1617608 5747096 1617712 5747256 1617768 5747376 +1622024 5746384 1617512 5746992 1617608 5747096 1617712 5747256 +1622024 5746384 1616216 5745480 1617512 5746992 1617608 5747096 +1615632 5735512 1622024 5746384 1622208 5746568 1625376 5746584 +1615632 5735512 1615496 5744536 1622024 5746384 1625376 5746584 +1615632 5735512 1622024 5746384 1625376 5746584 1629584 5726976 +1622208 5746568 1622880 5747168 1625376 5746584 1622024 5746384 +1622208 5746568 1625376 5746584 1622024 5746384 1617768 5747376 +1622024 5746384 1615632 5735512 1615496 5744536 1615544 5744608 +1622208 5746568 1622024 5746384 1617768 5747376 1617848 5747624 +1622208 5746568 1622024 5746384 1617848 5747624 1617904 5747904 +1622208 5746568 1622024 5746384 1617904 5747904 1622296 5746712 +1622024 5746384 1617848 5747624 1617904 5747904 1622296 5746712 +1617904 5747904 1622392 5746896 1622296 5746712 1622024 5746384 +1622296 5746712 1622208 5746568 1622024 5746384 1622392 5746896 +1617904 5747904 1622392 5746896 1622024 5746384 1617848 5747624 +1617904 5747904 1617896 5748024 1622392 5746896 1622024 5746384 +1622024 5746384 1617712 5747256 1617768 5747376 1617848 5747624 +1622208 5746568 1625376 5746584 1622024 5746384 1622296 5746712 +1622024 5746384 1617768 5747376 1617848 5747624 1617904 5747904 +1615632 5735512 1621920 5746224 1622024 5746384 1625376 5746584 +1621920 5746224 1615496 5744536 1622024 5746384 1625376 5746584 +1615632 5735512 1615496 5744536 1621920 5746224 1625376 5746584 +1615496 5744536 1621920 5746224 1615632 5735512 1615368 5744400 +1615632 5735512 1621920 5746224 1625376 5746584 1629584 5726976 +1622024 5746384 1622208 5746568 1625376 5746584 1621920 5746224 +1622024 5746384 1622208 5746568 1621920 5746224 1615496 5744536 +1625376 5746584 1615632 5735512 1621920 5746224 1622208 5746568 +1622208 5746568 1622880 5747168 1625376 5746584 1621920 5746224 +1622024 5746384 1621920 5746224 1615496 5744536 1615544 5744608 +1622024 5746384 1622208 5746568 1621920 5746224 1615544 5744608 +1621920 5746224 1615632 5735512 1615496 5744536 1615544 5744608 +1622024 5746384 1621920 5746224 1615544 5744608 1616160 5745400 +1622024 5746384 1622208 5746568 1621920 5746224 1616160 5745400 +1622024 5746384 1621920 5746224 1616160 5745400 1616216 5745480 +1622024 5746384 1622208 5746568 1621920 5746224 1616216 5745480 +1622024 5746384 1621920 5746224 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1621920 5746224 +1622024 5746384 1622208 5746568 1621920 5746224 1617512 5746992 +1621920 5746224 1616160 5745400 1616216 5745480 1617512 5746992 +1621920 5746224 1615544 5744608 1616160 5745400 1616216 5745480 +1615544 5744608 1616016 5745272 1616160 5745400 1621920 5746224 +1622024 5746384 1621920 5746224 1617512 5746992 1617608 5747096 +1622024 5746384 1622208 5746568 1621920 5746224 1617608 5747096 +1621920 5746224 1616216 5745480 1617512 5746992 1617608 5747096 +1622024 5746384 1621920 5746224 1617608 5747096 1617712 5747256 +1622024 5746384 1622208 5746568 1621920 5746224 1617712 5747256 +1622024 5746384 1621920 5746224 1617712 5747256 1617768 5747376 +1622024 5746384 1622208 5746568 1621920 5746224 1617768 5747376 +1622024 5746384 1621920 5746224 1617768 5747376 1617848 5747624 +1622024 5746384 1622208 5746568 1621920 5746224 1617848 5747624 +1621920 5746224 1617712 5747256 1617768 5747376 1617848 5747624 +1621920 5746224 1617608 5747096 1617712 5747256 1617768 5747376 +1621920 5746224 1617512 5746992 1617608 5747096 1617712 5747256 +1621920 5746224 1615496 5744536 1615544 5744608 1616160 5745400 +1622024 5746384 1621920 5746224 1617848 5747624 1617904 5747904 +1622024 5746384 1622208 5746568 1621920 5746224 1617904 5747904 +1622024 5746384 1621920 5746224 1617904 5747904 1622392 5746896 +1621920 5746224 1617768 5747376 1617848 5747624 1617904 5747904 +1625376 5746584 1621696 5745712 1621920 5746224 1622208 5746568 +1621696 5745712 1615632 5735512 1621920 5746224 1622208 5746568 +1621920 5746224 1621696 5745712 1615632 5735512 1615496 5744536 +1621920 5746224 1621696 5745712 1615496 5744536 1615544 5744608 +1621920 5746224 1622208 5746568 1621696 5745712 1615544 5744608 +1621696 5745712 1615632 5735512 1615496 5744536 1615544 5744608 +1621696 5745712 1625376 5746584 1615632 5735512 1615496 5744536 +1625376 5746584 1615632 5735512 1621696 5745712 1622208 5746568 +1615632 5735512 1615368 5744400 1615496 5744536 1621696 5745712 +1615496 5744536 1615544 5744608 1621696 5745712 1615368 5744400 +1615632 5735512 1615368 5744400 1621696 5745712 1625376 5746584 +1615632 5735512 1621696 5745712 1625376 5746584 1629584 5726976 +1615632 5735512 1615368 5744400 1621696 5745712 1629584 5726976 +1621696 5745712 1622208 5746568 1625376 5746584 1629584 5726976 +1615632 5735512 1621696 5745712 1629584 5726976 1629536 5726952 +1625376 5746584 1629776 5726856 1629584 5726976 1621696 5745712 +1615632 5735512 1615584 5735552 1615368 5744400 1621696 5745712 +1625376 5746584 1621696 5745712 1622208 5746568 1622880 5747168 +1621920 5746224 1622024 5746384 1622208 5746568 1621696 5745712 +1621920 5746224 1621696 5745712 1615544 5744608 1616160 5745400 +1621696 5745712 1615496 5744536 1615544 5744608 1616160 5745400 +1621920 5746224 1622208 5746568 1621696 5745712 1616160 5745400 +1621920 5746224 1621696 5745712 1616160 5745400 1616216 5745480 +1621920 5746224 1622208 5746568 1621696 5745712 1616216 5745480 +1621920 5746224 1621696 5745712 1616216 5745480 1617512 5746992 +1616216 5745480 1616232 5745520 1617512 5746992 1621696 5745712 +1621920 5746224 1622208 5746568 1621696 5745712 1617512 5746992 +1621920 5746224 1621696 5745712 1617512 5746992 1617608 5747096 +1621920 5746224 1622208 5746568 1621696 5745712 1617608 5747096 +1617512 5746992 1617608 5747096 1621696 5745712 1616232 5745520 +1621696 5745712 1616160 5745400 1616216 5745480 1616232 5745520 +1616232 5745520 1616952 5746624 1617512 5746992 1621696 5745712 +1615544 5744608 1616016 5745272 1616160 5745400 1621696 5745712 +1621920 5746224 1621696 5745712 1617608 5747096 1617712 5747256 +1621920 5746224 1622208 5746568 1621696 5745712 1617712 5747256 +1621696 5745712 1617512 5746992 1617608 5747096 1617712 5747256 +1621920 5746224 1621696 5745712 1617712 5747256 1617768 5747376 +1621920 5746224 1622208 5746568 1621696 5745712 1617768 5747376 +1621920 5746224 1621696 5745712 1617768 5747376 1617848 5747624 +1621696 5745712 1617608 5747096 1617712 5747256 1617768 5747376 +1621696 5745712 1615544 5744608 1616160 5745400 1616216 5745480 +1621696 5745712 1621704 5745648 1615632 5735512 1615368 5744400 +1621696 5745712 1629584 5726976 1621704 5745648 1615368 5744400 +1621704 5745648 1629584 5726976 1615632 5735512 1615368 5744400 +1621696 5745712 1621704 5745648 1615368 5744400 1615496 5744536 +1621696 5745712 1621704 5745648 1615496 5744536 1615544 5744608 +1621696 5745712 1621704 5745648 1615544 5744608 1616160 5745400 +1621704 5745648 1615496 5744536 1615544 5744608 1616160 5745400 +1621704 5745648 1615632 5735512 1615368 5744400 1615496 5744536 +1621696 5745712 1629584 5726976 1621704 5745648 1616160 5745400 +1621704 5745648 1615368 5744400 1615496 5744536 1615544 5744608 +1629584 5726976 1621704 5745648 1621696 5745712 1625376 5746584 +1621704 5745648 1616160 5745400 1621696 5745712 1625376 5746584 +1621696 5745712 1622208 5746568 1625376 5746584 1621704 5745648 +1621696 5745712 1621920 5746224 1622208 5746568 1621704 5745648 +1621696 5745712 1621920 5746224 1621704 5745648 1616160 5745400 +1622208 5746568 1625376 5746584 1621704 5745648 1621920 5746224 +1625376 5746584 1629584 5726976 1621704 5745648 1622208 5746568 +1615632 5735512 1621704 5745648 1629584 5726976 1629536 5726952 +1629584 5726976 1621704 5745648 1625376 5746584 1629776 5726856 +1615632 5735512 1615584 5735552 1615368 5744400 1621704 5745648 +1622208 5746568 1622880 5747168 1625376 5746584 1621704 5745648 +1615544 5744608 1616016 5745272 1616160 5745400 1621704 5745648 +1621920 5746224 1622024 5746384 1622208 5746568 1621704 5745648 +1621696 5745712 1621704 5745648 1616160 5745400 1616216 5745480 +1621704 5745648 1615544 5744608 1616160 5745400 1616216 5745480 +1621696 5745712 1621920 5746224 1621704 5745648 1616216 5745480 +1621696 5745712 1621704 5745648 1616216 5745480 1616232 5745520 +1621696 5745712 1621704 5745648 1616232 5745520 1617512 5746992 +1621696 5745712 1621920 5746224 1621704 5745648 1617512 5746992 +1621696 5745712 1621704 5745648 1617512 5746992 1617608 5747096 +1621704 5745648 1616216 5745480 1616232 5745520 1617512 5746992 +1616232 5745520 1616952 5746624 1617512 5746992 1621704 5745648 +1621704 5745648 1616160 5745400 1616216 5745480 1616232 5745520 +1629584 5726976 1615632 5735512 1621704 5745648 1625376 5746584 +1625376 5746584 1621776 5745592 1621704 5745648 1622208 5746568 +1621704 5745648 1621920 5746224 1622208 5746568 1621776 5745592 +1621704 5745648 1621696 5745712 1621920 5746224 1621776 5745592 +1621920 5746224 1622208 5746568 1621776 5745592 1621696 5745712 +1621776 5745592 1629584 5726976 1621704 5745648 1621696 5745712 +1622208 5746568 1625376 5746584 1621776 5745592 1621920 5746224 +1629584 5726976 1621776 5745592 1625376 5746584 1629776 5726856 +1625376 5746584 1621776 5745592 1622208 5746568 1622880 5747168 +1621920 5746224 1622024 5746384 1622208 5746568 1621776 5745592 +1621704 5745648 1621776 5745592 1629584 5726976 1615632 5735512 +1621704 5745648 1621776 5745592 1615632 5735512 1615368 5744400 +1621704 5745648 1621776 5745592 1615368 5744400 1615496 5744536 +1621776 5745592 1615632 5735512 1615368 5744400 1615496 5744536 +1621704 5745648 1621696 5745712 1621776 5745592 1615496 5744536 +1621704 5745648 1621776 5745592 1615496 5744536 1615544 5744608 +1621704 5745648 1621776 5745592 1615544 5744608 1616160 5745400 +1621776 5745592 1615368 5744400 1615496 5744536 1615544 5744608 +1621704 5745648 1621696 5745712 1621776 5745592 1615544 5744608 +1629584 5726976 1629536 5726952 1615632 5735512 1621776 5745592 +1615632 5735512 1615584 5735552 1615368 5744400 1621776 5745592 +1621776 5745592 1629584 5726976 1615632 5735512 1615368 5744400 +1621776 5745592 1625376 5746584 1629584 5726976 1615632 5735512 +1625376 5746584 1629584 5726976 1621776 5745592 1622208 5746568 +1629584 5726976 1622064 5745632 1625376 5746584 1629776 5726856 +1621776 5745592 1622064 5745632 1629584 5726976 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1622064 5745632 +1621776 5745592 1622064 5745632 1615632 5735512 1615368 5744400 +1621776 5745592 1625376 5746584 1622064 5745632 1615632 5735512 +1625376 5746584 1622064 5745632 1621776 5745592 1622208 5746568 +1621776 5745592 1621920 5746224 1622208 5746568 1622064 5745632 +1621776 5745592 1621696 5745712 1621920 5746224 1622064 5745632 +1621776 5745592 1621704 5745648 1621696 5745712 1622064 5745632 +1621920 5746224 1622208 5746568 1622064 5745632 1621696 5745712 +1625376 5746584 1622064 5745632 1622208 5746568 1622880 5747168 +1625376 5746584 1622064 5745632 1622880 5747168 1623656 5747496 +1622208 5746568 1622296 5746712 1622880 5747168 1622064 5745632 +1621920 5746224 1622024 5746384 1622208 5746568 1622064 5745632 +1621920 5746224 1622024 5746384 1622064 5745632 1621696 5745712 +1622064 5745632 1615632 5735512 1621776 5745592 1621696 5745712 +1622208 5746568 1622880 5747168 1622064 5745632 1622024 5746384 +1622064 5745632 1625376 5746584 1629584 5726976 1615632 5735512 +1625376 5746584 1629584 5726976 1622064 5745632 1622880 5747168 +1629584 5726976 1622160 5745616 1625376 5746584 1629776 5726856 +1622064 5745632 1622160 5745616 1629584 5726976 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1622160 5745616 +1622064 5745632 1622160 5745616 1615632 5735512 1621776 5745592 +1615632 5735512 1615368 5744400 1621776 5745592 1622160 5745616 +1622160 5745616 1629584 5726976 1615632 5735512 1621776 5745592 +1622064 5745632 1625376 5746584 1622160 5745616 1621776 5745592 +1625376 5746584 1622160 5745616 1622064 5745632 1622880 5747168 +1625376 5746584 1622160 5745616 1622880 5747168 1623656 5747496 +1622064 5745632 1622208 5746568 1622880 5747168 1622160 5745616 +1622208 5746568 1622296 5746712 1622880 5747168 1622160 5745616 +1622296 5746712 1622688 5747096 1622880 5747168 1622160 5745616 +1622208 5746568 1622296 5746712 1622160 5745616 1622064 5745632 +1622064 5745632 1622024 5746384 1622208 5746568 1622160 5745616 +1622208 5746568 1622296 5746712 1622160 5745616 1622024 5746384 +1622064 5745632 1621920 5746224 1622024 5746384 1622160 5745616 +1622064 5745632 1621696 5745712 1621920 5746224 1622160 5745616 +1622024 5746384 1622208 5746568 1622160 5745616 1621920 5746224 +1622160 5745616 1621776 5745592 1622064 5745632 1621920 5746224 +1625376 5746584 1629584 5726976 1622160 5745616 1622880 5747168 +1622880 5747168 1625376 5746584 1622160 5745616 1622296 5746712 +1622160 5745616 1625376 5746584 1629584 5726976 1615632 5735512 +1629584 5726976 1622328 5745496 1625376 5746584 1629776 5726856 +1625376 5746584 1622328 5745496 1622160 5745616 1622880 5747168 +1625376 5746584 1622328 5745496 1622880 5747168 1623656 5747496 +1622880 5747168 1623152 5747352 1623656 5747496 1622328 5745496 +1625376 5746584 1622328 5745496 1623656 5747496 1623904 5747528 +1622328 5745496 1629584 5726976 1622160 5745616 1622880 5747168 +1622328 5745496 1622160 5745616 1622880 5747168 1623656 5747496 +1622160 5745616 1622296 5746712 1622880 5747168 1622328 5745496 +1622296 5746712 1622688 5747096 1622880 5747168 1622328 5745496 +1622160 5745616 1622208 5746568 1622296 5746712 1622328 5745496 +1622160 5745616 1622024 5746384 1622208 5746568 1622328 5745496 +1622160 5745616 1622208 5746568 1622328 5745496 1629584 5726976 +1622880 5747168 1623656 5747496 1622328 5745496 1622296 5746712 +1622296 5746712 1622880 5747168 1622328 5745496 1622208 5746568 +1622160 5745616 1622328 5745496 1629584 5726976 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1622328 5745496 +1622160 5745616 1622328 5745496 1615632 5735512 1621776 5745592 +1615632 5735512 1615368 5744400 1621776 5745592 1622328 5745496 +1622160 5745616 1622328 5745496 1621776 5745592 1622064 5745632 +1622328 5745496 1615632 5735512 1621776 5745592 1622064 5745632 +1622160 5745616 1622208 5746568 1622328 5745496 1622064 5745632 +1622328 5745496 1625376 5746584 1629584 5726976 1615632 5735512 +1622328 5745496 1629584 5726976 1615632 5735512 1621776 5745592 +1625376 5746584 1629584 5726976 1622328 5745496 1623656 5747496 +1615632 5735512 1622336 5745456 1629584 5726976 1629536 5726952 +1629584 5726976 1622336 5745456 1622328 5745496 1625376 5746584 +1629584 5726976 1622336 5745456 1625376 5746584 1629776 5726856 +1622328 5745496 1622336 5745456 1615632 5735512 1621776 5745592 +1615632 5735512 1615368 5744400 1621776 5745592 1622336 5745456 +1622328 5745496 1622336 5745456 1621776 5745592 1622064 5745632 +1622328 5745496 1622336 5745456 1622064 5745632 1622160 5745616 +1622336 5745456 1621776 5745592 1622064 5745632 1622160 5745616 +1622336 5745456 1615632 5735512 1621776 5745592 1622064 5745632 +1622328 5745496 1623656 5747496 1625376 5746584 1622336 5745456 +1622336 5745456 1622160 5745616 1622328 5745496 1625376 5746584 +1622336 5745456 1629584 5726976 1615632 5735512 1621776 5745592 +1629584 5726976 1615632 5735512 1622336 5745456 1625376 5746584 +1615632 5735512 1622288 5745376 1629584 5726976 1629536 5726952 +1622336 5745456 1622288 5745376 1615632 5735512 1621776 5745592 +1615632 5735512 1615368 5744400 1621776 5745592 1622288 5745376 +1622336 5745456 1622288 5745376 1621776 5745592 1622064 5745632 +1622336 5745456 1622288 5745376 1622064 5745632 1622160 5745616 +1622336 5745456 1622288 5745376 1622160 5745616 1622328 5745496 +1622288 5745376 1622064 5745632 1622160 5745616 1622328 5745496 +1622288 5745376 1621776 5745592 1622064 5745632 1622160 5745616 +1622288 5745376 1615632 5735512 1621776 5745592 1622064 5745632 +1622336 5745456 1629584 5726976 1622288 5745376 1622328 5745496 +1629584 5726976 1622288 5745376 1622336 5745456 1625376 5746584 +1629584 5726976 1622288 5745376 1625376 5746584 1629776 5726856 +1622336 5745456 1622328 5745496 1625376 5746584 1622288 5745376 +1622288 5745376 1622328 5745496 1622336 5745456 1625376 5746584 +1622288 5745376 1629584 5726976 1615632 5735512 1621776 5745592 +1629584 5726976 1615632 5735512 1622288 5745376 1625376 5746584 +1615632 5735512 1622216 5745152 1629584 5726976 1629536 5726952 +1622288 5745376 1622216 5745152 1615632 5735512 1621776 5745592 +1615632 5735512 1615368 5744400 1621776 5745592 1622216 5745152 +1615368 5744400 1615496 5744536 1621776 5745592 1622216 5745152 +1615496 5744536 1615544 5744608 1621776 5745592 1622216 5745152 +1615496 5744536 1615544 5744608 1622216 5745152 1615368 5744400 +1615544 5744608 1621704 5745648 1621776 5745592 1622216 5745152 +1615544 5744608 1616160 5745400 1621704 5745648 1622216 5745152 +1615544 5744608 1621704 5745648 1622216 5745152 1615496 5744536 +1615632 5735512 1615584 5735552 1615368 5744400 1622216 5745152 +1615584 5735552 1613528 5743008 1615368 5744400 1622216 5745152 +1615368 5744400 1615496 5744536 1622216 5745152 1615584 5735552 +1622288 5745376 1622216 5745152 1621776 5745592 1622064 5745632 +1622288 5745376 1622216 5745152 1622064 5745632 1622160 5745616 +1621776 5745592 1622064 5745632 1622216 5745152 1621704 5745648 +1622288 5745376 1629584 5726976 1622216 5745152 1622064 5745632 +1629584 5726976 1622216 5745152 1622288 5745376 1625376 5746584 +1629584 5726976 1622216 5745152 1625376 5746584 1629776 5726856 +1622288 5745376 1622336 5745456 1625376 5746584 1622216 5745152 +1622336 5745456 1622328 5745496 1625376 5746584 1622216 5745152 +1622216 5745152 1622064 5745632 1622288 5745376 1622336 5745456 +1625376 5746584 1629584 5726976 1622216 5745152 1622336 5745456 +1622216 5745152 1629584 5726976 1615632 5735512 1615584 5735552 +1629584 5726976 1615632 5735512 1622216 5745152 1625376 5746584 +1615632 5735512 1622232 5745080 1629584 5726976 1629536 5726952 +1622216 5745152 1622232 5745080 1615632 5735512 1615584 5735552 +1622216 5745152 1622232 5745080 1615584 5735552 1615368 5744400 +1615584 5735552 1613528 5743008 1615368 5744400 1622232 5745080 +1622216 5745152 1622232 5745080 1615368 5744400 1615496 5744536 +1622216 5745152 1622232 5745080 1615496 5744536 1615544 5744608 +1622216 5745152 1622232 5745080 1615544 5744608 1621704 5745648 +1615544 5744608 1616160 5745400 1621704 5745648 1622232 5745080 +1616160 5745400 1616216 5745480 1621704 5745648 1622232 5745080 +1621704 5745648 1622216 5745152 1622232 5745080 1616160 5745400 +1622232 5745080 1615496 5744536 1615544 5744608 1616160 5745400 +1622216 5745152 1622232 5745080 1621704 5745648 1621776 5745592 +1622232 5745080 1616160 5745400 1621704 5745648 1621776 5745592 +1622232 5745080 1615584 5735552 1615368 5744400 1615496 5744536 +1615544 5744608 1616016 5745272 1616160 5745400 1622232 5745080 +1622232 5745080 1615368 5744400 1615496 5744536 1615544 5744608 +1622216 5745152 1622232 5745080 1621776 5745592 1622064 5745632 +1622232 5745080 1615632 5735512 1615584 5735552 1615368 5744400 +1622216 5745152 1629584 5726976 1622232 5745080 1621776 5745592 +1629584 5726976 1622232 5745080 1622216 5745152 1625376 5746584 +1629584 5726976 1622232 5745080 1625376 5746584 1629776 5726856 +1622216 5745152 1622336 5745456 1625376 5746584 1622232 5745080 +1622336 5745456 1622328 5745496 1625376 5746584 1622232 5745080 +1622216 5745152 1622288 5745376 1622336 5745456 1622232 5745080 +1622336 5745456 1625376 5746584 1622232 5745080 1622288 5745376 +1622232 5745080 1621776 5745592 1622216 5745152 1622288 5745376 +1625376 5746584 1629584 5726976 1622232 5745080 1622336 5745456 +1622232 5745080 1629584 5726976 1615632 5735512 1615584 5735552 +1629584 5726976 1615632 5735512 1622232 5745080 1625376 5746584 +1629584 5726976 1622288 5745000 1625376 5746584 1629776 5726856 +1625376 5746584 1622288 5745000 1622232 5745080 1622336 5745456 +1625376 5746584 1622288 5745000 1622336 5745456 1622328 5745496 +1622232 5745080 1622288 5745376 1622336 5745456 1622288 5745000 +1622232 5745080 1622216 5745152 1622288 5745376 1622288 5745000 +1622288 5745376 1622336 5745456 1622288 5745000 1622216 5745152 +1622336 5745456 1625376 5746584 1622288 5745000 1622288 5745376 +1622288 5745000 1629584 5726976 1622232 5745080 1622216 5745152 +1622232 5745080 1622288 5745000 1629584 5726976 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1622288 5745000 +1622232 5745080 1622288 5745000 1615632 5735512 1615584 5735552 +1622232 5745080 1622288 5745000 1615584 5735552 1615368 5744400 +1622232 5745080 1622288 5745000 1615368 5744400 1615496 5744536 +1615584 5735552 1613528 5743008 1615368 5744400 1622288 5745000 +1622232 5745080 1622288 5745000 1615496 5744536 1615544 5744608 +1622232 5745080 1622288 5745000 1615544 5744608 1616160 5745400 +1622232 5745080 1622288 5745000 1616160 5745400 1621704 5745648 +1616160 5745400 1616216 5745480 1621704 5745648 1622288 5745000 +1622232 5745080 1622288 5745000 1621704 5745648 1621776 5745592 +1622288 5745000 1615544 5744608 1616160 5745400 1621704 5745648 +1622288 5745000 1615368 5744400 1615496 5744536 1615544 5744608 +1615544 5744608 1616016 5745272 1616160 5745400 1622288 5745000 +1622288 5745000 1615496 5744536 1615544 5744608 1616160 5745400 +1622288 5745000 1615584 5735552 1615368 5744400 1615496 5744536 +1622288 5745000 1615632 5735512 1615584 5735552 1615368 5744400 +1622232 5745080 1622216 5745152 1622288 5745000 1621704 5745648 +1622288 5745000 1629584 5726976 1615632 5735512 1615584 5735552 +1622288 5745000 1625376 5746584 1629584 5726976 1615632 5735512 +1625376 5746584 1629584 5726976 1622288 5745000 1622336 5745456 +1629584 5726976 1622352 5744936 1625376 5746584 1629776 5726856 +1622288 5745000 1622352 5744936 1629584 5726976 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1622352 5744936 +1622288 5745000 1622352 5744936 1615632 5735512 1615584 5735552 +1622288 5745000 1622352 5744936 1615584 5735552 1615368 5744400 +1615584 5735552 1613528 5743008 1615368 5744400 1622352 5744936 +1622288 5745000 1622352 5744936 1615368 5744400 1615496 5744536 +1622288 5745000 1622352 5744936 1615496 5744536 1615544 5744608 +1622352 5744936 1615584 5735552 1615368 5744400 1615496 5744536 +1622352 5744936 1615632 5735512 1615584 5735552 1615368 5744400 +1622352 5744936 1629584 5726976 1615632 5735512 1615584 5735552 +1622288 5745000 1625376 5746584 1622352 5744936 1615496 5744536 +1625376 5746584 1622352 5744936 1622288 5745000 1622336 5745456 +1625376 5746584 1622352 5744936 1622336 5745456 1622328 5745496 +1625376 5746584 1629584 5726976 1622352 5744936 1622336 5745456 +1622288 5745000 1622288 5745376 1622336 5745456 1622352 5744936 +1622288 5745000 1622216 5745152 1622288 5745376 1622352 5744936 +1622352 5744936 1615496 5744536 1622288 5745000 1622288 5745376 +1622336 5745456 1625376 5746584 1622352 5744936 1622288 5745376 +1622352 5744936 1625376 5746584 1629584 5726976 1615632 5735512 +1629584 5726976 1622528 5744936 1625376 5746584 1629776 5726856 +1625376 5746584 1622528 5744936 1622352 5744936 1622336 5745456 +1625376 5746584 1622528 5744936 1622336 5745456 1622328 5745496 +1622528 5744936 1629584 5726976 1622352 5744936 1622336 5745456 +1625376 5746584 1629584 5726976 1622528 5744936 1622336 5745456 +1622352 5744936 1622288 5745376 1622336 5745456 1622528 5744936 +1622352 5744936 1622288 5745376 1622528 5744936 1629584 5726976 +1622336 5745456 1625376 5746584 1622528 5744936 1622288 5745376 +1622352 5744936 1622288 5745000 1622288 5745376 1622528 5744936 +1622352 5744936 1622288 5745000 1622528 5744936 1629584 5726976 +1622288 5745000 1622216 5745152 1622288 5745376 1622528 5744936 +1622288 5745000 1622232 5745080 1622216 5745152 1622528 5744936 +1622288 5745000 1622216 5745152 1622528 5744936 1622352 5744936 +1622288 5745376 1622336 5745456 1622528 5744936 1622216 5745152 +1622352 5744936 1622528 5744936 1629584 5726976 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1622528 5744936 +1622352 5744936 1622288 5745000 1622528 5744936 1615632 5735512 +1622528 5744936 1625376 5746584 1629584 5726976 1615632 5735512 +1622352 5744936 1622528 5744936 1615632 5735512 1615584 5735552 +1629584 5726976 1622576 5744960 1625376 5746584 1629776 5726856 +1622528 5744936 1622576 5744960 1629584 5726976 1615632 5735512 +1625376 5746584 1622576 5744960 1622528 5744936 1622336 5745456 +1625376 5746584 1622576 5744960 1622336 5745456 1622328 5745496 +1622528 5744936 1622288 5745376 1622336 5745456 1622576 5744960 +1622576 5744960 1629584 5726976 1622528 5744936 1622288 5745376 +1622576 5744960 1622288 5745376 1622336 5745456 1622328 5745496 +1625376 5746584 1629584 5726976 1622576 5744960 1622328 5745496 +1625376 5746584 1622576 5744960 1622328 5745496 1623656 5747496 +1622328 5745496 1622880 5747168 1623656 5747496 1622576 5744960 +1625376 5746584 1622576 5744960 1623656 5747496 1623904 5747528 +1622576 5744960 1622336 5745456 1622328 5745496 1623656 5747496 +1625376 5746584 1629584 5726976 1622576 5744960 1623656 5747496 +1622528 5744936 1622216 5745152 1622288 5745376 1622576 5744960 +1622288 5745376 1622336 5745456 1622576 5744960 1622216 5745152 +1622528 5744936 1622216 5745152 1622576 5744960 1629584 5726976 +1622528 5744936 1622288 5745000 1622216 5745152 1622576 5744960 +1622528 5744936 1622288 5745000 1622576 5744960 1629584 5726976 +1622288 5745000 1622232 5745080 1622216 5745152 1622576 5744960 +1622528 5744936 1622352 5744936 1622288 5745000 1622576 5744960 +1622216 5745152 1622288 5745376 1622576 5744960 1622288 5745000 +1629584 5726976 1622680 5744976 1625376 5746584 1629776 5726856 +1622576 5744960 1622680 5744976 1629584 5726976 1622528 5744936 +1629584 5726976 1615632 5735512 1622528 5744936 1622680 5744976 +1629584 5726976 1629536 5726952 1615632 5735512 1622680 5744976 +1622528 5744936 1622576 5744960 1622680 5744976 1615632 5735512 +1622576 5744960 1625376 5746584 1622680 5744976 1622528 5744936 +1625376 5746584 1622680 5744976 1622576 5744960 1623656 5747496 +1625376 5746584 1622680 5744976 1623656 5747496 1623904 5747528 +1622680 5744976 1622528 5744936 1622576 5744960 1623656 5747496 +1622680 5744976 1625376 5746584 1629584 5726976 1615632 5735512 +1625376 5746584 1629584 5726976 1622680 5744976 1623656 5747496 +1622576 5744960 1622328 5745496 1623656 5747496 1622680 5744976 +1622328 5745496 1622880 5747168 1623656 5747496 1622680 5744976 +1622880 5747168 1623152 5747352 1623656 5747496 1622680 5744976 +1622328 5745496 1622296 5746712 1622880 5747168 1622680 5744976 +1622576 5744960 1622336 5745456 1622328 5745496 1622680 5744976 +1622576 5744960 1622288 5745376 1622336 5745456 1622680 5744976 +1622576 5744960 1622336 5745456 1622680 5744976 1622528 5744936 +1623656 5747496 1625376 5746584 1622680 5744976 1622880 5747168 +1622328 5745496 1622880 5747168 1622680 5744976 1622336 5745456 +1615632 5735512 1622352 5744936 1622528 5744936 1622680 5744976 +1629584 5726976 1622816 5745056 1625376 5746584 1629776 5726856 +1622680 5744976 1622816 5745056 1629584 5726976 1615632 5735512 +1625376 5746584 1622816 5745056 1622680 5744976 1623656 5747496 +1625376 5746584 1622816 5745056 1623656 5747496 1623904 5747528 +1625376 5746584 1622816 5745056 1623904 5747528 1624208 5747632 +1622680 5744976 1622880 5747168 1623656 5747496 1622816 5745056 +1622880 5747168 1623152 5747352 1623656 5747496 1622816 5745056 +1622680 5744976 1622328 5745496 1622880 5747168 1622816 5745056 +1622328 5745496 1622296 5746712 1622880 5747168 1622816 5745056 +1622880 5747168 1623656 5747496 1622816 5745056 1622328 5745496 +1622816 5745056 1629584 5726976 1622680 5744976 1622328 5745496 +1622816 5745056 1622880 5747168 1623656 5747496 1623904 5747528 +1625376 5746584 1629584 5726976 1622816 5745056 1623904 5747528 +1622680 5744976 1622336 5745456 1622328 5745496 1622816 5745056 +1622328 5745496 1622880 5747168 1622816 5745056 1622336 5745456 +1622680 5744976 1622576 5744960 1622336 5745456 1622816 5745056 +1622680 5744976 1622336 5745456 1622816 5745056 1629584 5726976 +1629584 5726976 1622936 5745096 1625376 5746584 1629776 5726856 +1622816 5745056 1622936 5745096 1629584 5726976 1622680 5744976 +1629584 5726976 1615632 5735512 1622680 5744976 1622936 5745096 +1622816 5745056 1625376 5746584 1622936 5745096 1622680 5744976 +1625376 5746584 1622936 5745096 1622816 5745056 1623904 5747528 +1625376 5746584 1622936 5745096 1623904 5747528 1624208 5747632 +1625376 5746584 1629584 5726976 1622936 5745096 1623904 5747528 +1622816 5745056 1623656 5747496 1623904 5747528 1622936 5745096 +1622816 5745056 1622880 5747168 1623656 5747496 1622936 5745096 +1622880 5747168 1623152 5747352 1623656 5747496 1622936 5745096 +1623152 5747352 1623264 5747416 1623656 5747496 1622936 5745096 +1623656 5747496 1623904 5747528 1622936 5745096 1623152 5747352 +1622816 5745056 1622328 5745496 1622880 5747168 1622936 5745096 +1622816 5745056 1622336 5745456 1622328 5745496 1622936 5745096 +1622328 5745496 1622296 5746712 1622880 5747168 1622936 5745096 +1622296 5746712 1622688 5747096 1622880 5747168 1622936 5745096 +1622328 5745496 1622208 5746568 1622296 5746712 1622936 5745096 +1622328 5745496 1622296 5746712 1622936 5745096 1622336 5745456 +1622880 5747168 1623152 5747352 1622936 5745096 1622296 5746712 +1622936 5745096 1622680 5744976 1622816 5745056 1622336 5745456 +1623904 5747528 1625376 5746584 1622936 5745096 1623656 5747496 +1622936 5745096 1625376 5746584 1629584 5726976 1622680 5744976 +1622816 5745056 1622680 5744976 1622336 5745456 1622936 5745096 +1629584 5726976 1623008 5745080 1625376 5746584 1629776 5726856 +1625376 5746584 1623008 5745080 1622936 5745096 1623904 5747528 +1625376 5746584 1623008 5745080 1623904 5747528 1624208 5747632 +1625376 5746584 1629584 5726976 1623008 5745080 1623904 5747528 +1622936 5745096 1623656 5747496 1623904 5747528 1623008 5745080 +1623904 5747528 1625376 5746584 1623008 5745080 1623656 5747496 +1622936 5745096 1623152 5747352 1623656 5747496 1623008 5745080 +1623152 5747352 1623264 5747416 1623656 5747496 1623008 5745080 +1622936 5745096 1622880 5747168 1623152 5747352 1623008 5745080 +1623152 5747352 1623656 5747496 1623008 5745080 1622880 5747168 +1622936 5745096 1622296 5746712 1622880 5747168 1623008 5745080 +1622880 5747168 1623152 5747352 1623008 5745080 1622296 5746712 +1622296 5746712 1622688 5747096 1622880 5747168 1623008 5745080 +1622936 5745096 1622328 5745496 1622296 5746712 1623008 5745080 +1623656 5747496 1623904 5747528 1623008 5745080 1623152 5747352 +1622936 5745096 1623008 5745080 1629584 5726976 1622680 5744976 +1623008 5745080 1625376 5746584 1629584 5726976 1622680 5744976 +1629584 5726976 1615632 5735512 1622680 5744976 1623008 5745080 +1622936 5745096 1623008 5745080 1622680 5744976 1622816 5745056 +1623008 5745080 1629584 5726976 1622680 5744976 1622816 5745056 +1623008 5745080 1622816 5745056 1622936 5745096 1622296 5746712 +1629584 5726976 1623128 5745016 1625376 5746584 1629776 5726856 +1623008 5745080 1623128 5745016 1629584 5726976 1622680 5744976 +1623008 5745080 1625376 5746584 1623128 5745016 1622680 5744976 +1625376 5746584 1623128 5745016 1623008 5745080 1623904 5747528 +1625376 5746584 1623128 5745016 1623904 5747528 1624208 5747632 +1623008 5745080 1623656 5747496 1623904 5747528 1623128 5745016 +1623128 5745016 1622680 5744976 1623008 5745080 1623656 5747496 +1623904 5747528 1625376 5746584 1623128 5745016 1623656 5747496 +1623128 5745016 1625376 5746584 1629584 5726976 1622680 5744976 +1625376 5746584 1629584 5726976 1623128 5745016 1623904 5747528 +1629584 5726976 1615632 5735512 1622680 5744976 1623128 5745016 +1629584 5726976 1629536 5726952 1615632 5735512 1623128 5745016 +1622680 5744976 1623008 5745080 1623128 5745016 1615632 5735512 +1629584 5726976 1615632 5735512 1623128 5745016 1625376 5746584 +1615632 5735512 1622528 5744936 1622680 5744976 1623128 5745016 +1622680 5744976 1623008 5745080 1623128 5745016 1622528 5744936 +1622528 5744936 1622576 5744960 1622680 5744976 1623128 5745016 +1615632 5735512 1622528 5744936 1623128 5745016 1629584 5726976 +1623008 5745080 1623152 5747352 1623656 5747496 1623128 5745016 +1623152 5747352 1623264 5747416 1623656 5747496 1623128 5745016 +1623656 5747496 1623904 5747528 1623128 5745016 1623152 5747352 +1623008 5745080 1623152 5747352 1623128 5745016 1622680 5744976 +1623008 5745080 1622880 5747168 1623152 5747352 1623128 5745016 +1623008 5745080 1622880 5747168 1623128 5745016 1622680 5744976 +1623008 5745080 1622296 5746712 1622880 5747168 1623128 5745016 +1623152 5747352 1623656 5747496 1623128 5745016 1622880 5747168 +1623008 5745080 1623128 5745016 1622680 5744976 1622816 5745056 +1623128 5745016 1622528 5744936 1622680 5744976 1622816 5745056 +1623008 5745080 1622880 5747168 1623128 5745016 1622816 5745056 +1623008 5745080 1623128 5745016 1622816 5745056 1622936 5745096 +1615632 5735512 1622352 5744936 1622528 5744936 1623128 5745016 +1629584 5726976 1623224 5745048 1625376 5746584 1629776 5726856 +1623128 5745016 1623224 5745048 1629584 5726976 1615632 5735512 +1625376 5746584 1623224 5745048 1623128 5745016 1623904 5747528 +1625376 5746584 1623224 5745048 1623904 5747528 1624208 5747632 +1623128 5745016 1623656 5747496 1623904 5747528 1623224 5745048 +1623128 5745016 1623152 5747352 1623656 5747496 1623224 5745048 +1623152 5747352 1623264 5747416 1623656 5747496 1623224 5745048 +1623656 5747496 1623904 5747528 1623224 5745048 1623152 5747352 +1623224 5745048 1629584 5726976 1623128 5745016 1623152 5747352 +1623904 5747528 1625376 5746584 1623224 5745048 1623656 5747496 +1625376 5746584 1629584 5726976 1623224 5745048 1623904 5747528 +1623128 5745016 1622880 5747168 1623152 5747352 1623224 5745048 +1623152 5747352 1623656 5747496 1623224 5745048 1622880 5747168 +1623128 5745016 1622880 5747168 1623224 5745048 1629584 5726976 +1623128 5745016 1623008 5745080 1622880 5747168 1623224 5745048 +1623128 5745016 1623008 5745080 1623224 5745048 1629584 5726976 +1623008 5745080 1622296 5746712 1622880 5747168 1623224 5745048 +1622880 5747168 1623152 5747352 1623224 5745048 1623008 5745080 +1625376 5746584 1623240 5745072 1623904 5747528 1624208 5747632 +1623904 5747528 1623240 5745072 1623224 5745048 1623656 5747496 +1623224 5745048 1623152 5747352 1623656 5747496 1623240 5745072 +1623152 5747352 1623264 5747416 1623656 5747496 1623240 5745072 +1623224 5745048 1622880 5747168 1623152 5747352 1623240 5745072 +1623152 5747352 1623656 5747496 1623240 5745072 1622880 5747168 +1623656 5747496 1623904 5747528 1623240 5745072 1623152 5747352 +1623240 5745072 1625376 5746584 1623224 5745048 1622880 5747168 +1623224 5745048 1623240 5745072 1625376 5746584 1629584 5726976 +1623904 5747528 1625376 5746584 1623240 5745072 1623656 5747496 +1623224 5745048 1623008 5745080 1622880 5747168 1623240 5745072 +1622880 5747168 1623152 5747352 1623240 5745072 1623008 5745080 +1623224 5745048 1623008 5745080 1623240 5745072 1625376 5746584 +1623008 5745080 1622296 5746712 1622880 5747168 1623240 5745072 +1622880 5747168 1623152 5747352 1623240 5745072 1622296 5746712 +1622296 5746712 1622688 5747096 1622880 5747168 1623240 5745072 +1623224 5745048 1623128 5745016 1623008 5745080 1623240 5745072 +1623224 5745048 1623128 5745016 1623240 5745072 1625376 5746584 +1623008 5745080 1622936 5745096 1622296 5746712 1623240 5745072 +1622296 5746712 1622880 5747168 1623240 5745072 1622936 5745096 +1622936 5745096 1622328 5745496 1622296 5746712 1623240 5745072 +1622296 5746712 1622880 5747168 1623240 5745072 1622328 5745496 +1622328 5745496 1622208 5746568 1622296 5746712 1623240 5745072 +1622936 5745096 1622336 5745456 1622328 5745496 1623240 5745072 +1622936 5745096 1622328 5745496 1623240 5745072 1623008 5745080 +1623008 5745080 1622936 5745096 1623240 5745072 1623128 5745016 +1623224 5745048 1623336 5745136 1625376 5746584 1629584 5726976 +1625376 5746584 1629776 5726856 1629584 5726976 1623336 5745136 +1623224 5745048 1623336 5745136 1629584 5726976 1623128 5745016 +1623224 5745048 1623240 5745072 1623336 5745136 1629584 5726976 +1623336 5745136 1623240 5745072 1625376 5746584 1629584 5726976 +1625376 5746584 1623336 5745136 1623240 5745072 1623904 5747528 +1625376 5746584 1623336 5745136 1623904 5747528 1624208 5747632 +1623336 5745136 1623224 5745048 1623240 5745072 1623904 5747528 +1623240 5745072 1623656 5747496 1623904 5747528 1623336 5745136 +1623240 5745072 1623152 5747352 1623656 5747496 1623336 5745136 +1623152 5747352 1623264 5747416 1623656 5747496 1623336 5745136 +1623240 5745072 1622880 5747168 1623152 5747352 1623336 5745136 +1623240 5745072 1622296 5746712 1622880 5747168 1623336 5745136 +1622880 5747168 1623152 5747352 1623336 5745136 1622296 5746712 +1623152 5747352 1623656 5747496 1623336 5745136 1622880 5747168 +1623240 5745072 1622296 5746712 1623336 5745136 1623224 5745048 +1623656 5747496 1623904 5747528 1623336 5745136 1623152 5747352 +1625376 5746584 1629584 5726976 1623336 5745136 1623904 5747528 +1623904 5747528 1625376 5746584 1623336 5745136 1623656 5747496 +1623240 5745072 1622328 5745496 1622296 5746712 1623336 5745136 +1622296 5746712 1622880 5747168 1623336 5745136 1622328 5745496 +1623240 5745072 1622328 5745496 1623336 5745136 1623224 5745048 +1622296 5746712 1622688 5747096 1622880 5747168 1623336 5745136 +1623240 5745072 1622936 5745096 1622328 5745496 1623336 5745136 +1623240 5745072 1622936 5745096 1623336 5745136 1623224 5745048 +1622328 5745496 1622296 5746712 1623336 5745136 1622936 5745096 +1622328 5745496 1622208 5746568 1622296 5746712 1623336 5745136 +1622936 5745096 1622336 5745456 1622328 5745496 1623336 5745136 +1623240 5745072 1623008 5745080 1622936 5745096 1623336 5745136 +1623240 5745072 1623008 5745080 1623336 5745136 1623224 5745048 +1622936 5745096 1622328 5745496 1623336 5745136 1623008 5745080 +1623240 5745072 1623128 5745016 1623008 5745080 1623336 5745136 +1629584 5726976 1623528 5745200 1625376 5746584 1629776 5726856 +1623336 5745136 1623528 5745200 1629584 5726976 1623224 5745048 +1629584 5726976 1623128 5745016 1623224 5745048 1623528 5745200 +1623336 5745136 1623528 5745200 1623224 5745048 1623240 5745072 +1623336 5745136 1625376 5746584 1623528 5745200 1623224 5745048 +1625376 5746584 1623528 5745200 1623336 5745136 1623904 5747528 +1625376 5746584 1623528 5745200 1623904 5747528 1624208 5747632 +1623528 5745200 1623224 5745048 1623336 5745136 1623904 5747528 +1623336 5745136 1623656 5747496 1623904 5747528 1623528 5745200 +1623336 5745136 1623152 5747352 1623656 5747496 1623528 5745200 +1623152 5747352 1623264 5747416 1623656 5747496 1623528 5745200 +1623336 5745136 1622880 5747168 1623152 5747352 1623528 5745200 +1623336 5745136 1622296 5746712 1622880 5747168 1623528 5745200 +1623336 5745136 1622328 5745496 1622296 5746712 1623528 5745200 +1622296 5746712 1622880 5747168 1623528 5745200 1622328 5745496 +1622880 5747168 1623152 5747352 1623528 5745200 1622296 5746712 +1623152 5747352 1623656 5747496 1623528 5745200 1622880 5747168 +1623336 5745136 1622328 5745496 1623528 5745200 1623224 5745048 +1623904 5747528 1625376 5746584 1623528 5745200 1623656 5747496 +1623656 5747496 1623904 5747528 1623528 5745200 1623152 5747352 +1623336 5745136 1622936 5745096 1622328 5745496 1623528 5745200 +1622296 5746712 1622688 5747096 1622880 5747168 1623528 5745200 +1623528 5745200 1625376 5746584 1629584 5726976 1623224 5745048 +1625376 5746584 1629584 5726976 1623528 5745200 1623904 5747528 +1622328 5745496 1622208 5746568 1622296 5746712 1623528 5745200 +1629584 5726976 1623592 5745240 1625376 5746584 1629776 5726856 +1623528 5745200 1623592 5745240 1629584 5726976 1623224 5745048 +1625376 5746584 1623592 5745240 1623528 5745200 1623904 5747528 +1625376 5746584 1623592 5745240 1623904 5747528 1624208 5747632 +1623528 5745200 1623656 5747496 1623904 5747528 1623592 5745240 +1623528 5745200 1623152 5747352 1623656 5747496 1623592 5745240 +1623152 5747352 1623264 5747416 1623656 5747496 1623592 5745240 +1623528 5745200 1622880 5747168 1623152 5747352 1623592 5745240 +1623528 5745200 1622296 5746712 1622880 5747168 1623592 5745240 +1623528 5745200 1622328 5745496 1622296 5746712 1623592 5745240 +1623528 5745200 1623336 5745136 1622328 5745496 1623592 5745240 +1622328 5745496 1622296 5746712 1623592 5745240 1623336 5745136 +1622296 5746712 1622880 5747168 1623592 5745240 1622328 5745496 +1622880 5747168 1623152 5747352 1623592 5745240 1622296 5746712 +1623656 5747496 1623904 5747528 1623592 5745240 1623152 5747352 +1623152 5747352 1623656 5747496 1623592 5745240 1622880 5747168 +1623336 5745136 1622936 5745096 1622328 5745496 1623592 5745240 +1622296 5746712 1622688 5747096 1622880 5747168 1623592 5745240 +1623592 5745240 1629584 5726976 1623528 5745200 1623336 5745136 +1623904 5747528 1625376 5746584 1623592 5745240 1623656 5747496 +1625376 5746584 1629584 5726976 1623592 5745240 1623904 5747528 +1622328 5745496 1622208 5746568 1622296 5746712 1623592 5745240 +1629584 5726976 1623640 5745232 1625376 5746584 1629776 5726856 +1623592 5745240 1623640 5745232 1629584 5726976 1623528 5745200 +1629584 5726976 1623224 5745048 1623528 5745200 1623640 5745232 +1629584 5726976 1623128 5745016 1623224 5745048 1623640 5745232 +1623224 5745048 1623336 5745136 1623528 5745200 1623640 5745232 +1623528 5745200 1623592 5745240 1623640 5745232 1623224 5745048 +1623592 5745240 1625376 5746584 1623640 5745232 1623528 5745200 +1625376 5746584 1623640 5745232 1623592 5745240 1623904 5747528 +1625376 5746584 1623640 5745232 1623904 5747528 1624208 5747632 +1623592 5745240 1623656 5747496 1623904 5747528 1623640 5745232 +1623592 5745240 1623152 5747352 1623656 5747496 1623640 5745232 +1623640 5745232 1623528 5745200 1623592 5745240 1623656 5747496 +1623904 5747528 1625376 5746584 1623640 5745232 1623656 5747496 +1623640 5745232 1625376 5746584 1629584 5726976 1623224 5745048 +1625376 5746584 1629584 5726976 1623640 5745232 1623904 5747528 +1625376 5746584 1623792 5745368 1623904 5747528 1624208 5747632 +1623904 5747528 1623792 5745368 1623640 5745232 1623656 5747496 +1623640 5745232 1623592 5745240 1623656 5747496 1623792 5745368 +1623592 5745240 1623152 5747352 1623656 5747496 1623792 5745368 +1623152 5747352 1623264 5747416 1623656 5747496 1623792 5745368 +1623592 5745240 1622880 5747168 1623152 5747352 1623792 5745368 +1623592 5745240 1622296 5746712 1622880 5747168 1623792 5745368 +1623592 5745240 1622328 5745496 1622296 5746712 1623792 5745368 +1623152 5747352 1623656 5747496 1623792 5745368 1622880 5747168 +1622880 5747168 1623152 5747352 1623792 5745368 1622296 5746712 +1622296 5746712 1622688 5747096 1622880 5747168 1623792 5745368 +1623592 5745240 1622296 5746712 1623792 5745368 1623640 5745232 +1623656 5747496 1623904 5747528 1623792 5745368 1623152 5747352 +1623792 5745368 1625376 5746584 1623640 5745232 1623592 5745240 +1623640 5745232 1623792 5745368 1625376 5746584 1629584 5726976 +1625376 5746584 1629776 5726856 1629584 5726976 1623792 5745368 +1623640 5745232 1623792 5745368 1629584 5726976 1623224 5745048 +1623640 5745232 1623592 5745240 1623792 5745368 1629584 5726976 +1623792 5745368 1623904 5747528 1625376 5746584 1629584 5726976 +1623904 5747528 1625376 5746584 1623792 5745368 1623656 5747496 +1629584 5726976 1623896 5745384 1625376 5746584 1629776 5726856 +1623792 5745368 1623896 5745384 1629584 5726976 1623640 5745232 +1629584 5726976 1623224 5745048 1623640 5745232 1623896 5745384 +1625376 5746584 1623896 5745384 1623792 5745368 1623904 5747528 +1625376 5746584 1623896 5745384 1623904 5747528 1624208 5747632 +1623792 5745368 1623904 5747528 1623896 5745384 1623640 5745232 +1623792 5745368 1623656 5747496 1623904 5747528 1623896 5745384 +1623792 5745368 1623152 5747352 1623656 5747496 1623896 5745384 +1623152 5747352 1623264 5747416 1623656 5747496 1623896 5745384 +1623792 5745368 1622880 5747168 1623152 5747352 1623896 5745384 +1623904 5747528 1625376 5746584 1623896 5745384 1623656 5747496 +1623792 5745368 1623152 5747352 1623896 5745384 1623640 5745232 +1623656 5747496 1623904 5747528 1623896 5745384 1623152 5747352 +1623896 5745384 1625376 5746584 1629584 5726976 1623640 5745232 +1625376 5746584 1629584 5726976 1623896 5745384 1623904 5747528 +1629584 5726976 1624032 5745472 1625376 5746584 1629776 5726856 +1623896 5745384 1624032 5745472 1629584 5726976 1623640 5745232 +1625376 5746584 1624032 5745472 1623896 5745384 1623904 5747528 +1625376 5746584 1624032 5745472 1623904 5747528 1624208 5747632 +1623896 5745384 1623656 5747496 1623904 5747528 1624032 5745472 +1623896 5745384 1623152 5747352 1623656 5747496 1624032 5745472 +1623152 5747352 1623264 5747416 1623656 5747496 1624032 5745472 +1623896 5745384 1623792 5745368 1623152 5747352 1624032 5745472 +1623792 5745368 1622880 5747168 1623152 5747352 1624032 5745472 +1623792 5745368 1622296 5746712 1622880 5747168 1624032 5745472 +1623792 5745368 1622880 5747168 1624032 5745472 1623896 5745384 +1623656 5747496 1623904 5747528 1624032 5745472 1623152 5747352 +1623152 5747352 1623656 5747496 1624032 5745472 1622880 5747168 +1624032 5745472 1629584 5726976 1623896 5745384 1623792 5745368 +1623904 5747528 1625376 5746584 1624032 5745472 1623656 5747496 +1625376 5746584 1629584 5726976 1624032 5745472 1623904 5747528 +1625376 5746584 1624224 5745656 1623904 5747528 1624208 5747632 +1625376 5746584 1624224 5745656 1624208 5747632 1624536 5747664 +1623904 5747528 1624224 5745656 1624032 5745472 1623656 5747496 +1624032 5745472 1623152 5747352 1623656 5747496 1624224 5745656 +1623152 5747352 1623264 5747416 1623656 5747496 1624224 5745656 +1624032 5745472 1622880 5747168 1623152 5747352 1624224 5745656 +1624032 5745472 1623792 5745368 1622880 5747168 1624224 5745656 +1623792 5745368 1622296 5746712 1622880 5747168 1624224 5745656 +1624032 5745472 1623896 5745384 1623792 5745368 1624224 5745656 +1623152 5747352 1623656 5747496 1624224 5745656 1622880 5747168 +1622880 5747168 1623152 5747352 1624224 5745656 1623792 5745368 +1623656 5747496 1623904 5747528 1624224 5745656 1623152 5747352 +1624224 5745656 1625376 5746584 1624032 5745472 1623792 5745368 +1624032 5745472 1624224 5745656 1625376 5746584 1629584 5726976 +1625376 5746584 1624032 5745472 1624224 5745656 1624208 5747632 +1624224 5745656 1623656 5747496 1623904 5747528 1624208 5747632 +1624032 5745472 1624272 5745688 1625376 5746584 1629584 5726976 +1625376 5746584 1629776 5726856 1629584 5726976 1624272 5745688 +1624032 5745472 1624272 5745688 1629584 5726976 1623896 5745384 +1625376 5746584 1624272 5745688 1624224 5745656 1624208 5747632 +1625376 5746584 1624272 5745688 1624208 5747632 1624536 5747664 +1624224 5745656 1623904 5747528 1624208 5747632 1624272 5745688 +1624208 5747632 1625376 5746584 1624272 5745688 1623904 5747528 +1624272 5745688 1624032 5745472 1624224 5745656 1623904 5747528 +1624224 5745656 1623656 5747496 1623904 5747528 1624272 5745688 +1623904 5747528 1624208 5747632 1624272 5745688 1623656 5747496 +1624224 5745656 1623152 5747352 1623656 5747496 1624272 5745688 +1624224 5745656 1623656 5747496 1624272 5745688 1624032 5745472 +1624032 5745472 1624224 5745656 1624272 5745688 1629584 5726976 +1624272 5745688 1624208 5747632 1625376 5746584 1629584 5726976 +1629584 5726976 1624528 5745760 1625376 5746584 1629776 5726856 +1624272 5745688 1624528 5745760 1629584 5726976 1624032 5745472 +1629584 5726976 1623896 5745384 1624032 5745472 1624528 5745760 +1629584 5726976 1623640 5745232 1623896 5745384 1624528 5745760 +1624032 5745472 1624272 5745688 1624528 5745760 1623896 5745384 +1624272 5745688 1624528 5745760 1624032 5745472 1624224 5745656 +1624528 5745760 1623896 5745384 1624032 5745472 1624224 5745656 +1624272 5745688 1625376 5746584 1624528 5745760 1624224 5745656 +1625376 5746584 1624528 5745760 1624272 5745688 1624208 5747632 +1625376 5746584 1624528 5745760 1624208 5747632 1624536 5747664 +1624272 5745688 1623904 5747528 1624208 5747632 1624528 5745760 +1624272 5745688 1623656 5747496 1623904 5747528 1624528 5745760 +1624528 5745760 1624224 5745656 1624272 5745688 1623904 5747528 +1624208 5747632 1625376 5746584 1624528 5745760 1623904 5747528 +1624528 5745760 1625376 5746584 1629584 5726976 1623896 5745384 +1625376 5746584 1629584 5726976 1624528 5745760 1624208 5747632 +1629584 5726976 1624712 5745880 1625376 5746584 1629776 5726856 +1624528 5745760 1624712 5745880 1629584 5726976 1623896 5745384 +1625376 5746584 1624712 5745880 1624528 5745760 1624208 5747632 +1625376 5746584 1624712 5745880 1624208 5747632 1624536 5747664 +1625376 5746584 1624712 5745880 1624536 5747664 1625448 5746768 +1624528 5745760 1623904 5747528 1624208 5747632 1624712 5745880 +1624528 5745760 1624272 5745688 1623904 5747528 1624712 5745880 +1624272 5745688 1623656 5747496 1623904 5747528 1624712 5745880 +1623904 5747528 1624208 5747632 1624712 5745880 1624272 5745688 +1624712 5745880 1629584 5726976 1624528 5745760 1624272 5745688 +1624712 5745880 1623904 5747528 1624208 5747632 1624536 5747664 +1625376 5746584 1629584 5726976 1624712 5745880 1624536 5747664 +1629584 5726976 1624976 5746096 1625376 5746584 1629776 5726856 +1624712 5745880 1624976 5746096 1629584 5726976 1624528 5745760 +1625376 5746584 1624976 5746096 1624712 5745880 1624536 5747664 +1625376 5746584 1624976 5746096 1624536 5747664 1625448 5746768 +1624712 5745880 1624208 5747632 1624536 5747664 1624976 5746096 +1624712 5745880 1623904 5747528 1624208 5747632 1624976 5746096 +1624208 5747632 1624536 5747664 1624976 5746096 1623904 5747528 +1624712 5745880 1624272 5745688 1623904 5747528 1624976 5746096 +1624976 5746096 1629584 5726976 1624712 5745880 1623904 5747528 +1624536 5747664 1625376 5746584 1624976 5746096 1624208 5747632 +1625376 5746584 1629584 5726976 1624976 5746096 1624536 5747664 +1629584 5726976 1625232 5746360 1625376 5746584 1629776 5726856 +1625376 5746584 1625960 5747656 1629776 5726856 1625232 5746360 +1624976 5746096 1625232 5746360 1629584 5726976 1624712 5745880 +1625376 5746584 1625232 5746360 1624976 5746096 1624536 5747664 +1625376 5746584 1625232 5746360 1624536 5747664 1625448 5746768 +1624976 5746096 1624208 5747632 1624536 5747664 1625232 5746360 +1625232 5746360 1629584 5726976 1624976 5746096 1624536 5747664 +1629584 5726976 1624976 5746096 1625232 5746360 1629776 5726856 +1625232 5746360 1624536 5747664 1625376 5746584 1629776 5726856 +1625376 5746584 1625112 5746640 1624536 5747664 1625448 5746768 +1624536 5747664 1624656 5747688 1625448 5746768 1625112 5746640 +1624656 5747688 1625512 5747120 1625448 5746768 1625112 5746640 +1624656 5747688 1625512 5747120 1625112 5746640 1624536 5747664 +1625448 5746768 1625376 5746584 1625112 5746640 1625512 5747120 +1625376 5746584 1625232 5746360 1625112 5746640 1625448 5746768 +1625112 5746640 1625232 5746360 1624536 5747664 1624656 5747688 +1624656 5747688 1624904 5747816 1625512 5747120 1625112 5746640 +1624536 5747664 1625112 5746640 1625232 5746360 1624976 5746096 +1624536 5747664 1624656 5747688 1625112 5746640 1624976 5746096 +1624536 5747664 1625112 5746640 1624976 5746096 1624208 5747632 +1624976 5746096 1623904 5747528 1624208 5747632 1625112 5746640 +1624536 5747664 1624656 5747688 1625112 5746640 1624208 5747632 +1624976 5746096 1624712 5745880 1623904 5747528 1625112 5746640 +1623904 5747528 1624208 5747632 1625112 5746640 1624712 5745880 +1624712 5745880 1624272 5745688 1623904 5747528 1625112 5746640 +1624208 5747632 1624536 5747664 1625112 5746640 1623904 5747528 +1625112 5746640 1625232 5746360 1624976 5746096 1624712 5745880 +1625112 5746640 1625376 5746584 1625232 5746360 1624976 5746096 +1625112 5746640 1625152 5746720 1625512 5747120 1625448 5746768 +1624656 5747688 1625152 5746720 1625112 5746640 1624536 5747664 +1625112 5746640 1625152 5746720 1625448 5746768 1625376 5746584 +1625152 5746720 1625512 5747120 1625448 5746768 1625376 5746584 +1625112 5746640 1625152 5746720 1625376 5746584 1625232 5746360 +1625112 5746640 1624536 5747664 1625152 5746720 1625376 5746584 +1625112 5746640 1624208 5747632 1624536 5747664 1625152 5746720 +1625152 5746720 1624656 5747688 1625512 5747120 1625448 5746768 +1624656 5747688 1625512 5747120 1625152 5746720 1624536 5747664 +1625512 5747120 1625152 5746720 1624656 5747688 1624904 5747816 +1625152 5746720 1625240 5746976 1625512 5747120 1625448 5746768 +1625152 5746720 1625240 5746976 1625448 5746768 1625376 5746584 +1625152 5746720 1624656 5747688 1625240 5746976 1625448 5746768 +1624656 5747688 1625240 5746976 1625152 5746720 1624536 5747664 +1625152 5746720 1625112 5746640 1624536 5747664 1625240 5746976 +1625240 5746976 1625448 5746768 1625152 5746720 1624536 5747664 +1625240 5746976 1624656 5747688 1625512 5747120 1625448 5746768 +1624656 5747688 1625512 5747120 1625240 5746976 1624536 5747664 +1625512 5747120 1625240 5746976 1624656 5747688 1624904 5747816 +1625512 5747120 1625448 5746768 1625240 5746976 1624904 5747816 +1625240 5746976 1624536 5747664 1624656 5747688 1624904 5747816 +1625512 5747120 1625240 5746976 1624904 5747816 1625624 5747288 +1624656 5747688 1624672 5747704 1624904 5747816 1625240 5746976 +1625240 5746976 1625336 5747152 1625512 5747120 1625448 5746768 +1625512 5747120 1625336 5747152 1624904 5747816 1625624 5747288 +1624904 5747816 1625080 5747976 1625624 5747288 1625336 5747152 +1625512 5747120 1625240 5746976 1625336 5747152 1625624 5747288 +1625336 5747152 1625240 5746976 1624904 5747816 1625080 5747976 +1625080 5747976 1625128 5748024 1625624 5747288 1625336 5747152 +1625624 5747288 1625512 5747120 1625336 5747152 1625080 5747976 +1624904 5747816 1625336 5747152 1625240 5746976 1624656 5747688 +1625336 5747152 1625512 5747120 1625240 5746976 1624656 5747688 +1625240 5746976 1624536 5747664 1624656 5747688 1625336 5747152 +1624904 5747816 1625080 5747976 1625336 5747152 1624656 5747688 +1624904 5747816 1625336 5747152 1624656 5747688 1624672 5747704 +1625128 5748024 1625552 5747448 1625624 5747288 1625080 5747976 +1625552 5747448 1625872 5747552 1625624 5747288 1625080 5747976 +1625128 5748024 1625872 5747552 1625552 5747448 1625080 5747976 +1625624 5747288 1625336 5747152 1625080 5747976 1625552 5747448 +1625336 5747152 1624904 5747816 1625080 5747976 1625552 5747448 +1625624 5747288 1625336 5747152 1625552 5747448 1625872 5747552 +1625336 5747152 1624656 5747688 1624904 5747816 1625552 5747448 +1625080 5747976 1625128 5748024 1625552 5747448 1624904 5747816 +1625336 5747152 1624904 5747816 1625552 5747448 1625624 5747288 +1625624 5747288 1625512 5747120 1625336 5747152 1625552 5747448 +1625872 5747552 1625552 5747448 1625128 5748024 1625712 5748088 +1625872 5747552 1625624 5747288 1625552 5747448 1625712 5748088 +1625552 5747448 1625080 5747976 1625128 5748024 1625712 5748088 +1625872 5747552 1625552 5747448 1625712 5748088 1625784 5748032 +1625872 5747552 1625552 5747448 1625784 5748032 1625800 5748016 +1625872 5747552 1625624 5747288 1625552 5747448 1625800 5748016 +1625552 5747448 1625712 5748088 1625784 5748032 1625800 5748016 +1625552 5747448 1625128 5748024 1625712 5748088 1625784 5748032 +1625872 5747552 1625552 5747448 1625800 5748016 1625864 5747960 +1625552 5747448 1625784 5748032 1625800 5748016 1625864 5747960 +1625872 5747552 1625624 5747288 1625552 5747448 1625864 5747960 +1625872 5747552 1625552 5747448 1625864 5747960 1625896 5747584 +1625128 5748024 1625264 5748136 1625712 5748088 1625552 5747448 +1625264 5748136 1625680 5748128 1625712 5748088 1625552 5747448 +1625128 5748024 1625264 5748136 1625552 5747448 1625080 5747976 +1625712 5748088 1625784 5748032 1625552 5747448 1625264 5748136 +1625712 5748088 1625560 5747496 1625264 5748136 1625680 5748128 +1625552 5747448 1625560 5747496 1625712 5748088 1625784 5748032 +1625552 5747448 1625264 5748136 1625560 5747496 1625784 5748032 +1625560 5747496 1625264 5748136 1625712 5748088 1625784 5748032 +1625552 5747448 1625560 5747496 1625784 5748032 1625800 5748016 +1625552 5747448 1625560 5747496 1625800 5748016 1625864 5747960 +1625552 5747448 1625264 5748136 1625560 5747496 1625864 5747960 +1625560 5747496 1625784 5748032 1625800 5748016 1625864 5747960 +1625560 5747496 1625712 5748088 1625784 5748032 1625800 5748016 +1625552 5747448 1625560 5747496 1625864 5747960 1625872 5747552 +1625560 5747496 1625800 5748016 1625864 5747960 1625872 5747552 +1625552 5747448 1625560 5747496 1625872 5747552 1625624 5747288 +1625552 5747448 1625264 5748136 1625560 5747496 1625872 5747552 +1625864 5747960 1625896 5747584 1625872 5747552 1625560 5747496 +1625864 5747960 1625896 5747584 1625560 5747496 1625800 5748016 +1625864 5747960 1625952 5747864 1625896 5747584 1625560 5747496 +1625872 5747552 1625552 5747448 1625560 5747496 1625896 5747584 +1625264 5748136 1625560 5747496 1625552 5747448 1625128 5748024 +1625560 5747496 1625872 5747552 1625552 5747448 1625128 5748024 +1625552 5747448 1625080 5747976 1625128 5748024 1625560 5747496 +1625552 5747448 1625080 5747976 1625560 5747496 1625872 5747552 +1625264 5748136 1625712 5748088 1625560 5747496 1625128 5748024 +1625552 5747448 1624904 5747816 1625080 5747976 1625560 5747496 +1625552 5747448 1625336 5747152 1624904 5747816 1625560 5747496 +1625552 5747448 1624904 5747816 1625560 5747496 1625872 5747552 +1625080 5747976 1625128 5748024 1625560 5747496 1624904 5747816 +1625128 5748024 1625264 5748136 1625560 5747496 1625080 5747976 +1625712 5748088 1625560 5747592 1625264 5748136 1625680 5748128 +1625560 5747496 1625560 5747592 1625712 5748088 1625784 5748032 +1625560 5747496 1625264 5748136 1625560 5747592 1625784 5748032 +1625264 5748136 1625560 5747592 1625560 5747496 1625128 5748024 +1625560 5747592 1625784 5748032 1625560 5747496 1625128 5748024 +1625560 5747592 1625264 5748136 1625712 5748088 1625784 5748032 +1625264 5748136 1625712 5748088 1625560 5747592 1625128 5748024 +1625560 5747496 1625560 5747592 1625784 5748032 1625800 5748016 +1625560 5747592 1625712 5748088 1625784 5748032 1625800 5748016 +1625560 5747496 1625128 5748024 1625560 5747592 1625800 5748016 +1625560 5747496 1625560 5747592 1625800 5748016 1625864 5747960 +1625560 5747496 1625560 5747592 1625864 5747960 1625896 5747584 +1625560 5747496 1625128 5748024 1625560 5747592 1625896 5747584 +1625560 5747592 1625800 5748016 1625864 5747960 1625896 5747584 +1625560 5747592 1625784 5748032 1625800 5748016 1625864 5747960 +1625864 5747960 1625952 5747864 1625896 5747584 1625560 5747592 +1625560 5747496 1625560 5747592 1625896 5747584 1625872 5747552 +1625560 5747592 1625864 5747960 1625896 5747584 1625872 5747552 +1625560 5747496 1625128 5748024 1625560 5747592 1625872 5747552 +1625560 5747496 1625560 5747592 1625872 5747552 1625552 5747448 +1625560 5747496 1625080 5747976 1625128 5748024 1625560 5747592 +1625560 5747496 1624904 5747816 1625080 5747976 1625560 5747592 +1625560 5747496 1624904 5747816 1625560 5747592 1625872 5747552 +1625128 5748024 1625264 5748136 1625560 5747592 1625080 5747976 +1625560 5747496 1625552 5747448 1624904 5747816 1625560 5747592 +1625080 5747976 1625128 5748024 1625560 5747592 1624904 5747816 +1625712 5748088 1625520 5747712 1625264 5748136 1625680 5748128 +1625264 5748136 1625568 5748208 1625680 5748128 1625520 5747712 +1625680 5748128 1625712 5748088 1625520 5747712 1625568 5748208 +1625560 5747592 1625520 5747712 1625712 5748088 1625784 5748032 +1625560 5747592 1625520 5747712 1625784 5748032 1625800 5748016 +1625520 5747712 1625712 5748088 1625784 5748032 1625800 5748016 +1625560 5747592 1625264 5748136 1625520 5747712 1625800 5748016 +1625264 5748136 1625520 5747712 1625560 5747592 1625128 5748024 +1625560 5747592 1625080 5747976 1625128 5748024 1625520 5747712 +1625520 5747712 1625800 5748016 1625560 5747592 1625080 5747976 +1625128 5748024 1625264 5748136 1625520 5747712 1625080 5747976 +1625712 5748088 1625784 5748032 1625520 5747712 1625680 5748128 +1625520 5747712 1625128 5748024 1625264 5748136 1625568 5748208 +1625264 5748136 1625360 5748208 1625568 5748208 1625520 5747712 +1625560 5747592 1625520 5747712 1625800 5748016 1625864 5747960 +1625520 5747712 1625784 5748032 1625800 5748016 1625864 5747960 +1625560 5747592 1625080 5747976 1625520 5747712 1625864 5747960 +1625560 5747592 1625520 5747712 1625864 5747960 1625896 5747584 +1625560 5747592 1625520 5747712 1625896 5747584 1625872 5747552 +1625560 5747592 1625080 5747976 1625520 5747712 1625896 5747584 +1625520 5747712 1625800 5748016 1625864 5747960 1625896 5747584 +1625864 5747960 1625952 5747864 1625896 5747584 1625520 5747712 +1625896 5747584 1625560 5747592 1625520 5747712 1625952 5747864 +1625864 5747960 1625952 5747864 1625520 5747712 1625800 5748016 +1625952 5747864 1625976 5747736 1625896 5747584 1625520 5747712 +1625560 5747592 1624904 5747816 1625080 5747976 1625520 5747712 +1625560 5747592 1625560 5747496 1624904 5747816 1625520 5747712 +1625080 5747976 1625128 5748024 1625520 5747712 1624904 5747816 +1625560 5747592 1625560 5747496 1625520 5747712 1625896 5747584 +1625560 5747496 1625552 5747448 1624904 5747816 1625520 5747712 +1624904 5747816 1625080 5747976 1625520 5747712 1625560 5747496 +1625128 5748024 1625400 5747824 1625520 5747712 1625080 5747976 +1625520 5747712 1624904 5747816 1625080 5747976 1625400 5747824 +1625080 5747976 1625128 5748024 1625400 5747824 1624904 5747816 +1625400 5747824 1625264 5748136 1625520 5747712 1624904 5747816 +1625520 5747712 1625400 5747824 1625264 5748136 1625568 5748208 +1625520 5747712 1625400 5747824 1625568 5748208 1625680 5748128 +1625520 5747712 1625400 5747824 1625680 5748128 1625712 5748088 +1625400 5747824 1625568 5748208 1625680 5748128 1625712 5748088 +1625520 5747712 1625400 5747824 1625712 5748088 1625784 5748032 +1625520 5747712 1624904 5747816 1625400 5747824 1625712 5748088 +1625264 5748136 1625360 5748208 1625568 5748208 1625400 5747824 +1625360 5748208 1625464 5748232 1625568 5748208 1625400 5747824 +1625464 5748232 1625488 5748232 1625568 5748208 1625400 5747824 +1625360 5748208 1625464 5748232 1625400 5747824 1625264 5748136 +1625400 5747824 1625128 5748024 1625264 5748136 1625360 5748208 +1625400 5747824 1625464 5748232 1625568 5748208 1625680 5748128 +1625128 5748024 1625264 5748136 1625400 5747824 1625080 5747976 +1625520 5747712 1625560 5747496 1624904 5747816 1625400 5747824 +1625520 5747712 1625560 5747592 1625560 5747496 1625400 5747824 +1624904 5747816 1625080 5747976 1625400 5747824 1625560 5747496 +1625520 5747712 1625560 5747592 1625400 5747824 1625712 5748088 +1625560 5747496 1625552 5747448 1624904 5747816 1625400 5747824 +1625552 5747448 1625336 5747152 1624904 5747816 1625400 5747824 +1625336 5747152 1624656 5747688 1624904 5747816 1625400 5747824 +1624904 5747816 1625080 5747976 1625400 5747824 1625336 5747152 +1625552 5747448 1625336 5747152 1625400 5747824 1625560 5747496 +1625560 5747496 1625552 5747448 1625400 5747824 1625560 5747592 +1625336 5747152 1625352 5747816 1625400 5747824 1625552 5747448 +1624904 5747816 1625352 5747816 1625336 5747152 1624656 5747688 +1625400 5747824 1625352 5747816 1624904 5747816 1625080 5747976 +1625400 5747824 1625352 5747816 1625080 5747976 1625128 5748024 +1625352 5747816 1624904 5747816 1625080 5747976 1625128 5748024 +1625400 5747824 1625560 5747496 1625552 5747448 1625352 5747816 +1625552 5747448 1625336 5747152 1625352 5747816 1625560 5747496 +1625400 5747824 1625352 5747816 1625128 5748024 1625264 5748136 +1625352 5747816 1625080 5747976 1625128 5748024 1625264 5748136 +1625400 5747824 1625352 5747816 1625264 5748136 1625360 5748208 +1625352 5747816 1625264 5748136 1625400 5747824 1625560 5747496 +1625352 5747816 1625336 5747152 1624904 5747816 1625080 5747976 +1625336 5747152 1624904 5747816 1625352 5747816 1625552 5747448 +1625400 5747824 1625560 5747592 1625560 5747496 1625352 5747816 +1625400 5747824 1625520 5747712 1625560 5747592 1625352 5747816 +1625560 5747496 1625552 5747448 1625352 5747816 1625560 5747592 +1625400 5747824 1625520 5747712 1625352 5747816 1625264 5748136 +1625560 5747592 1625560 5747496 1625352 5747816 1625520 5747712 +1625336 5747152 1624656 5747688 1624904 5747816 1625232 5747816 +1625352 5747816 1625232 5747816 1625080 5747976 1625128 5748024 +1625352 5747816 1625232 5747816 1625128 5748024 1625264 5748136 +1625232 5747816 1625080 5747976 1625128 5748024 1625264 5748136 +1625352 5747816 1625232 5747816 1625264 5748136 1625400 5747824 +1625352 5747816 1625336 5747152 1625232 5747816 1625264 5748136 +1625352 5747816 1625552 5747448 1625336 5747152 1625232 5747816 +1625352 5747816 1625560 5747496 1625552 5747448 1625232 5747816 +1625352 5747816 1625560 5747592 1625560 5747496 1625232 5747816 +1625560 5747496 1625552 5747448 1625232 5747816 1625560 5747592 +1625352 5747816 1625560 5747592 1625232 5747816 1625264 5748136 +1625336 5747152 1624904 5747816 1625232 5747816 1625552 5747448 +1625552 5747448 1625336 5747152 1625232 5747816 1625560 5747496 +1625232 5747816 1624904 5747816 1625080 5747976 1625128 5748024 +1625352 5747816 1625520 5747712 1625560 5747592 1625232 5747816 +1624904 5747816 1625032 5747760 1625336 5747152 1624656 5747688 +1624904 5747816 1625032 5747760 1624656 5747688 1624672 5747704 +1625032 5747760 1625336 5747152 1624656 5747688 1624672 5747704 +1625336 5747152 1625240 5746976 1624656 5747688 1625032 5747760 +1625336 5747152 1625032 5747760 1625232 5747816 1625552 5747448 +1625232 5747816 1625560 5747496 1625552 5747448 1625032 5747760 +1625232 5747816 1625032 5747760 1624904 5747816 1625080 5747976 +1625232 5747816 1625032 5747760 1625080 5747976 1625128 5748024 +1625032 5747760 1625080 5747976 1625232 5747816 1625552 5747448 +1624904 5747816 1625080 5747976 1625032 5747760 1624672 5747704 +1625032 5747760 1625552 5747448 1625336 5747152 1624656 5747688 +1625032 5747760 1624856 5747664 1624656 5747688 1624672 5747704 +1625032 5747760 1624856 5747664 1624672 5747704 1624904 5747816 +1624856 5747664 1624656 5747688 1624672 5747704 1624904 5747816 +1624656 5747688 1624856 5747664 1625336 5747152 1625240 5746976 +1624656 5747688 1624856 5747664 1625240 5746976 1624536 5747664 +1625240 5746976 1625152 5746720 1624536 5747664 1624856 5747664 +1624856 5747664 1625336 5747152 1625240 5746976 1624536 5747664 +1625032 5747760 1624856 5747664 1624904 5747816 1625080 5747976 +1625032 5747760 1625336 5747152 1624856 5747664 1624904 5747816 +1625336 5747152 1624856 5747664 1625032 5747760 1625552 5747448 +1624856 5747664 1624536 5747664 1624656 5747688 1624672 5747704 +1624856 5747664 1625032 5747760 1625336 5747152 1625240 5746976 +1625112 5746640 1624632 5747488 1624536 5747664 1625152 5746720 +1624536 5747664 1625240 5746976 1625152 5746720 1624632 5747488 +1625152 5746720 1625112 5746640 1624632 5747488 1625240 5746976 +1624536 5747664 1624856 5747664 1625240 5746976 1624632 5747488 +1625240 5746976 1625152 5746720 1624632 5747488 1624856 5747664 +1624536 5747664 1624656 5747688 1624856 5747664 1624632 5747488 +1624856 5747664 1625240 5746976 1624632 5747488 1624656 5747688 +1624856 5747664 1625336 5747152 1625240 5746976 1624632 5747488 +1625240 5746976 1625152 5746720 1624632 5747488 1625336 5747152 +1624856 5747664 1625336 5747152 1624632 5747488 1624656 5747688 +1625112 5746640 1624208 5747632 1624632 5747488 1625152 5746720 +1624656 5747688 1624672 5747704 1624856 5747664 1624632 5747488 +1624632 5747488 1624208 5747632 1624536 5747664 1624656 5747688 +1624856 5747664 1625032 5747760 1625336 5747152 1624632 5747488 +1624208 5747632 1624632 5747488 1625112 5746640 1623904 5747528 +1625112 5746640 1624712 5745880 1623904 5747528 1624632 5747488 +1624208 5747632 1624536 5747664 1624632 5747488 1623904 5747528 +1624632 5747488 1625152 5746720 1625112 5746640 1623904 5747528 +1623904 5747528 1624384 5747352 1625112 5746640 1624712 5745880 +1625112 5746640 1624384 5747352 1624632 5747488 1625152 5746720 +1624632 5747488 1625240 5746976 1625152 5746720 1624384 5747352 +1624384 5747352 1623904 5747528 1624632 5747488 1625152 5746720 +1623904 5747528 1624632 5747488 1624384 5747352 1624712 5745880 +1624384 5747352 1625152 5746720 1625112 5746640 1624712 5745880 +1623904 5747528 1624384 5747352 1624712 5745880 1624272 5745688 +1624384 5747352 1625112 5746640 1624712 5745880 1624272 5745688 +1623904 5747528 1624384 5747352 1624272 5745688 1623656 5747496 +1623904 5747528 1624632 5747488 1624384 5747352 1623656 5747496 +1624712 5745880 1624528 5745760 1624272 5745688 1624384 5747352 +1624272 5745688 1624224 5745656 1623656 5747496 1624384 5747352 +1624384 5747352 1624712 5745880 1624272 5745688 1623656 5747496 +1625112 5746640 1624976 5746096 1624712 5745880 1624384 5747352 +1624632 5747488 1624384 5747352 1623904 5747528 1624208 5747632 +1624632 5747488 1624384 5747352 1624208 5747632 1624536 5747664 +1624632 5747488 1625152 5746720 1624384 5747352 1624536 5747664 +1624384 5747352 1623656 5747496 1623904 5747528 1624208 5747632 +1624632 5747488 1624384 5747352 1624536 5747664 1624656 5747688 +1624384 5747352 1623904 5747528 1624208 5747632 1624536 5747664 +1624384 5747352 1624120 5747304 1623656 5747496 1623904 5747528 +1624384 5747352 1624120 5747304 1623904 5747528 1624208 5747632 +1624120 5747304 1623656 5747496 1623904 5747528 1624208 5747632 +1624384 5747352 1624272 5745688 1624120 5747304 1624208 5747632 +1624120 5747304 1624272 5745688 1623656 5747496 1623904 5747528 +1623656 5747496 1624120 5747304 1624272 5745688 1624224 5745656 +1623656 5747496 1624120 5747304 1624224 5745656 1623152 5747352 +1623656 5747496 1624120 5747304 1623152 5747352 1623264 5747416 +1624224 5745656 1622880 5747168 1623152 5747352 1624120 5747304 +1624120 5747304 1624224 5745656 1623152 5747352 1623264 5747416 +1623656 5747496 1623904 5747528 1624120 5747304 1623264 5747416 +1624120 5747304 1624384 5747352 1624272 5745688 1624224 5745656 +1624120 5747304 1624272 5745688 1624224 5745656 1623152 5747352 +1624272 5745688 1624120 5747304 1624384 5747352 1624712 5745880 +1624384 5747352 1625112 5746640 1624712 5745880 1624120 5747304 +1624120 5747304 1624208 5747632 1624384 5747352 1625112 5746640 +1624384 5747352 1625152 5746720 1625112 5746640 1624120 5747304 +1624272 5745688 1624224 5745656 1624120 5747304 1624712 5745880 +1624272 5745688 1624120 5747304 1624712 5745880 1624528 5745760 +1624712 5745880 1624272 5745688 1624120 5747304 1625112 5746640 +1625112 5746640 1624976 5746096 1624712 5745880 1624120 5747304 +1624384 5747352 1624120 5747304 1624208 5747632 1624536 5747664 +1623152 5747352 1623952 5747280 1624224 5745656 1622880 5747168 +1624224 5745656 1623792 5745368 1622880 5747168 1623952 5747280 +1624120 5747304 1623952 5747280 1623152 5747352 1623264 5747416 +1624120 5747304 1623952 5747280 1623264 5747416 1623656 5747496 +1623952 5747280 1623152 5747352 1623264 5747416 1623656 5747496 +1624120 5747304 1623952 5747280 1623656 5747496 1623904 5747528 +1624120 5747304 1623952 5747280 1623904 5747528 1624208 5747632 +1623952 5747280 1623264 5747416 1623656 5747496 1623904 5747528 +1624120 5747304 1624224 5745656 1623952 5747280 1623904 5747528 +1623152 5747352 1623264 5747416 1623952 5747280 1622880 5747168 +1623952 5747280 1624120 5747304 1624224 5745656 1622880 5747168 +1624224 5745656 1623952 5747280 1624120 5747304 1624272 5745688 +1623952 5747280 1623904 5747528 1624120 5747304 1624272 5745688 +1624120 5747304 1624712 5745880 1624272 5745688 1623952 5747280 +1624224 5745656 1622880 5747168 1623952 5747280 1624272 5745688 +1622880 5747168 1623624 5747256 1623952 5747280 1624224 5745656 +1622880 5747168 1623624 5747256 1624224 5745656 1623792 5745368 +1624224 5745656 1624032 5745472 1623792 5745368 1623624 5747256 +1622880 5747168 1623624 5747256 1623792 5745368 1622296 5746712 +1623624 5747256 1623952 5747280 1624224 5745656 1623792 5745368 +1623952 5747280 1623624 5747256 1623152 5747352 1623264 5747416 +1623952 5747280 1623624 5747256 1623264 5747416 1623656 5747496 +1623952 5747280 1623624 5747256 1623656 5747496 1623904 5747528 +1623624 5747256 1623152 5747352 1623264 5747416 1623656 5747496 +1623624 5747256 1623656 5747496 1623952 5747280 1624224 5745656 +1623952 5747280 1624272 5745688 1624224 5745656 1623624 5747256 +1624224 5745656 1623792 5745368 1623624 5747256 1624272 5745688 +1623952 5747280 1624272 5745688 1623624 5747256 1623656 5747496 +1623624 5747256 1622880 5747168 1623152 5747352 1623264 5747416 +1622880 5747168 1623152 5747352 1623624 5747256 1623792 5745368 +1623952 5747280 1624120 5747304 1624272 5745688 1623624 5747256 +1622880 5747168 1623040 5747128 1623792 5745368 1622296 5746712 +1623792 5745368 1623592 5745240 1622296 5746712 1623040 5747128 +1623592 5745240 1622328 5745496 1622296 5746712 1623040 5747128 +1623592 5745240 1623336 5745136 1622328 5745496 1623040 5747128 +1623592 5745240 1622328 5745496 1623040 5747128 1623792 5745368 +1622296 5746712 1622880 5747168 1623040 5747128 1622328 5745496 +1622880 5747168 1623040 5747128 1622296 5746712 1622688 5747096 +1623040 5747128 1622328 5745496 1622296 5746712 1622688 5747096 +1622296 5746712 1622392 5746896 1622688 5747096 1623040 5747128 +1623792 5745368 1623640 5745232 1623592 5745240 1623040 5747128 +1623792 5745368 1623040 5747128 1623624 5747256 1624224 5745656 +1623792 5745368 1623040 5747128 1624224 5745656 1624032 5745472 +1623624 5747256 1624272 5745688 1624224 5745656 1623040 5747128 +1623040 5747128 1622880 5747168 1623624 5747256 1624224 5745656 +1623624 5747256 1623040 5747128 1622880 5747168 1623152 5747352 +1623624 5747256 1623040 5747128 1623152 5747352 1623264 5747416 +1623624 5747256 1624224 5745656 1623040 5747128 1623152 5747352 +1622880 5747168 1623152 5747352 1623040 5747128 1622688 5747096 +1623040 5747128 1624224 5745656 1623792 5745368 1623592 5745240 +1622328 5745496 1622208 5746568 1622296 5746712 1623040 5747128 +1622296 5746712 1622760 5746984 1623040 5747128 1622328 5745496 +1623040 5747128 1623592 5745240 1622328 5745496 1622760 5746984 +1623592 5745240 1623336 5745136 1622328 5745496 1622760 5746984 +1623040 5747128 1623792 5745368 1623592 5745240 1622760 5746984 +1623592 5745240 1622328 5745496 1622760 5746984 1623792 5745368 +1622328 5745496 1622296 5746712 1622760 5746984 1623592 5745240 +1622688 5747096 1622760 5746984 1622296 5746712 1622392 5746896 +1623040 5747128 1622760 5746984 1622688 5747096 1622880 5747168 +1623792 5745368 1623640 5745232 1623592 5745240 1622760 5746984 +1622688 5747096 1622760 5746984 1622392 5746896 1622504 5747016 +1622760 5746984 1622296 5746712 1622392 5746896 1622504 5747016 +1623040 5747128 1622760 5746984 1622880 5747168 1623152 5747352 +1622760 5746984 1622880 5747168 1623040 5747128 1623792 5745368 +1623040 5747128 1624224 5745656 1623792 5745368 1622760 5746984 +1622688 5747096 1622880 5747168 1622760 5746984 1622504 5747016 +1622296 5746712 1622392 5746896 1622760 5746984 1622328 5745496 +1622296 5746712 1622760 5746984 1622328 5745496 1622208 5746568 +1622760 5746984 1623592 5745240 1622328 5745496 1622208 5746568 +1622328 5745496 1622160 5745616 1622208 5746568 1622760 5746984 +1622296 5746712 1622392 5746896 1622760 5746984 1622208 5746568 +1622760 5746984 1622528 5746824 1622296 5746712 1622392 5746896 +1622760 5746984 1622528 5746824 1622392 5746896 1622504 5747016 +1622760 5746984 1622528 5746824 1622504 5747016 1622688 5747096 +1622760 5746984 1622208 5746568 1622528 5746824 1622504 5747016 +1622528 5746824 1622296 5746712 1622392 5746896 1622504 5747016 +1622528 5746824 1622208 5746568 1622296 5746712 1622392 5746896 +1622208 5746568 1622528 5746824 1622760 5746984 1622328 5745496 +1622760 5746984 1623592 5745240 1622328 5745496 1622528 5746824 +1623592 5745240 1623336 5745136 1622328 5745496 1622528 5746824 +1623592 5745240 1623528 5745200 1623336 5745136 1622528 5746824 +1622760 5746984 1623792 5745368 1623592 5745240 1622528 5746824 +1622760 5746984 1623040 5747128 1623792 5745368 1622528 5746824 +1623592 5745240 1623336 5745136 1622528 5746824 1623792 5745368 +1623336 5745136 1622936 5745096 1622328 5745496 1622528 5746824 +1622208 5746568 1622528 5746824 1622328 5745496 1622160 5745616 +1623792 5745368 1623640 5745232 1623592 5745240 1622528 5746824 +1622528 5746824 1622504 5747016 1622760 5746984 1623792 5745368 +1622328 5745496 1622208 5746568 1622528 5746824 1623336 5745136 +1622208 5746568 1622296 5746712 1622528 5746824 1622328 5745496 +1622208 5746568 1622456 5746736 1622328 5745496 1622160 5745616 +1622328 5745496 1622456 5746736 1622528 5746824 1623336 5745136 +1622528 5746824 1623592 5745240 1623336 5745136 1622456 5746736 +1623592 5745240 1623528 5745200 1623336 5745136 1622456 5746736 +1622528 5746824 1623792 5745368 1623592 5745240 1622456 5746736 +1623592 5745240 1623336 5745136 1622456 5746736 1623792 5745368 +1622528 5746824 1622760 5746984 1623792 5745368 1622456 5746736 +1622760 5746984 1623040 5747128 1623792 5745368 1622456 5746736 +1623792 5745368 1623592 5745240 1622456 5746736 1622760 5746984 +1622328 5745496 1622456 5746736 1623336 5745136 1622936 5745096 +1623792 5745368 1623640 5745232 1623592 5745240 1622456 5746736 +1623336 5745136 1622328 5745496 1622456 5746736 1623592 5745240 +1622528 5746824 1622456 5746736 1622208 5746568 1622296 5746712 +1622528 5746824 1622456 5746736 1622296 5746712 1622392 5746896 +1622528 5746824 1622456 5746736 1622392 5746896 1622504 5747016 +1622456 5746736 1622208 5746568 1622296 5746712 1622392 5746896 +1622456 5746736 1622392 5746896 1622528 5746824 1622760 5746984 +1622456 5746736 1622328 5745496 1622208 5746568 1622296 5746712 +1622328 5745496 1622208 5746568 1622456 5746736 1623336 5745136 +1622160 5745616 1622128 5746232 1622208 5746568 1622328 5745496 +1622208 5746568 1622456 5746736 1622328 5745496 1622128 5746232 +1622328 5745496 1622160 5745616 1622128 5746232 1622456 5746736 +1622024 5746384 1622128 5746232 1622160 5745616 1621920 5746224 +1622160 5745616 1622064 5745632 1621920 5746224 1622128 5746232 +1622064 5745632 1621696 5745712 1621920 5746224 1622128 5746232 +1621920 5746224 1622024 5746384 1622128 5746232 1622064 5745632 +1622208 5746568 1622296 5746712 1622456 5746736 1622128 5746232 +1622128 5746232 1622024 5746384 1622208 5746568 1622456 5746736 +1622456 5746736 1623336 5745136 1622328 5745496 1622128 5746232 +1622024 5746384 1622208 5746568 1622128 5746232 1621920 5746224 +1622160 5745616 1622064 5745632 1622128 5746232 1622328 5745496 +1621920 5746224 1622064 5746064 1622064 5745632 1621696 5745712 +1622064 5745632 1621776 5745592 1621696 5745712 1622064 5746064 +1622064 5745632 1622064 5746064 1622128 5746232 1622160 5745616 +1622128 5746232 1622064 5746064 1621920 5746224 1622024 5746384 +1622064 5746064 1621920 5746224 1622128 5746232 1622160 5745616 +1622128 5746232 1622328 5745496 1622160 5745616 1622064 5746064 +1622128 5746232 1622456 5746736 1622328 5745496 1622064 5746064 +1622160 5745616 1622064 5745632 1622064 5746064 1622328 5745496 +1622128 5746232 1622328 5745496 1622064 5746064 1621920 5746224 +1621920 5746224 1622128 5746232 1622064 5746064 1621696 5745712 +1622064 5746064 1622160 5745616 1622064 5745632 1621696 5745712 +1622064 5746064 1622096 5745920 1622160 5745616 1622064 5745632 +1622328 5745496 1622096 5745920 1622064 5746064 1622128 5746232 +1622328 5745496 1622096 5745920 1622128 5746232 1622456 5746736 +1622064 5746064 1622128 5746232 1622096 5745920 1622064 5745632 +1622064 5746064 1622096 5745920 1622064 5745632 1621696 5745712 +1622064 5745632 1621776 5745592 1621696 5745712 1622096 5745920 +1622064 5746064 1622096 5745920 1621696 5745712 1621920 5746224 +1622096 5745920 1622160 5745616 1622064 5745632 1621696 5745712 +1622064 5746064 1622128 5746232 1622096 5745920 1621696 5745712 +1622096 5745920 1622328 5745496 1622160 5745616 1622064 5745632 +1622328 5745496 1622160 5745616 1622096 5745920 1622128 5746232 +1622328 5745496 1622136 5745896 1622128 5746232 1622456 5746736 +1622328 5745496 1622136 5745896 1622456 5746736 1623336 5745136 +1622128 5746232 1622136 5745896 1622096 5745920 1622064 5746064 +1622136 5745896 1622328 5745496 1622096 5745920 1622064 5746064 +1622096 5745920 1622136 5745896 1622328 5745496 1622160 5745616 +1622096 5745920 1622136 5745896 1622160 5745616 1622064 5745632 +1622096 5745920 1622136 5745896 1622064 5745632 1621696 5745712 +1622096 5745920 1622064 5746064 1622136 5745896 1622064 5745632 +1622136 5745896 1622328 5745496 1622160 5745616 1622064 5745632 +1622328 5745496 1622160 5745616 1622136 5745896 1622456 5746736 +1622136 5745896 1622064 5746064 1622128 5746232 1622456 5746736 +1622456 5746736 1622352 5746032 1622136 5745896 1622128 5746232 +1622456 5746736 1622328 5745496 1622352 5746032 1622128 5746232 +1622328 5745496 1622352 5746032 1622456 5746736 1623336 5745136 +1622328 5745496 1622352 5746032 1623336 5745136 1622936 5745096 +1622328 5745496 1622136 5745896 1622352 5746032 1622936 5745096 +1622352 5746032 1622128 5746232 1622456 5746736 1623336 5745136 +1623336 5745136 1623008 5745080 1622936 5745096 1622352 5746032 +1622456 5746736 1623592 5745240 1623336 5745136 1622352 5746032 +1623592 5745240 1623528 5745200 1623336 5745136 1622352 5746032 +1622456 5746736 1623792 5745368 1623592 5745240 1622352 5746032 +1622456 5746736 1622760 5746984 1623792 5745368 1622352 5746032 +1623792 5745368 1623592 5745240 1622352 5746032 1622760 5746984 +1622456 5746736 1622528 5746824 1622760 5746984 1622352 5746032 +1622760 5746984 1623040 5747128 1623792 5745368 1622352 5746032 +1623792 5745368 1623640 5745232 1623592 5745240 1622352 5746032 +1622456 5746736 1622760 5746984 1622352 5746032 1622128 5746232 +1623592 5745240 1623336 5745136 1622352 5746032 1623792 5745368 +1622328 5745496 1622352 5746032 1622936 5745096 1622336 5745456 +1622352 5746032 1623592 5745240 1623336 5745136 1622936 5745096 +1622136 5745896 1622352 5746032 1622328 5745496 1622160 5745616 +1622352 5746032 1622936 5745096 1622328 5745496 1622160 5745616 +1622136 5745896 1622352 5746032 1622160 5745616 1622064 5745632 +1622352 5746032 1622160 5745616 1622136 5745896 1622128 5746232 +1622136 5745896 1622064 5746064 1622128 5746232 1622352 5746032 +1622128 5746232 1622456 5746736 1622352 5746032 1622064 5746064 +1622136 5745896 1622096 5745920 1622064 5746064 1622352 5746032 +1622136 5745896 1622064 5746064 1622352 5746032 1622160 5745616 +1622352 5746032 1622448 5746048 1623792 5745368 1623592 5745240 +1623792 5745368 1622448 5746048 1622760 5746984 1623040 5747128 +1622760 5746984 1622448 5746048 1622352 5746032 1622456 5746736 +1622760 5746984 1622448 5746048 1622456 5746736 1622528 5746824 +1622448 5746048 1622352 5746032 1622456 5746736 1622528 5746824 +1623792 5745368 1623640 5745232 1623592 5745240 1622448 5746048 +1622352 5746032 1622456 5746736 1622448 5746048 1623592 5745240 +1622352 5746032 1622128 5746232 1622456 5746736 1622448 5746048 +1622456 5746736 1622528 5746824 1622448 5746048 1622128 5746232 +1622352 5746032 1622064 5746064 1622128 5746232 1622448 5746048 +1622352 5746032 1622128 5746232 1622448 5746048 1623592 5745240 +1622448 5746048 1623040 5747128 1623792 5745368 1623592 5745240 +1622448 5746048 1622528 5746824 1622760 5746984 1623040 5747128 +1623792 5745368 1622448 5746048 1623040 5747128 1624224 5745656 +1622352 5746032 1622448 5746048 1623592 5745240 1623336 5745136 +1623592 5745240 1623528 5745200 1623336 5745136 1622448 5746048 +1622448 5746048 1623792 5745368 1623592 5745240 1623336 5745136 +1622352 5746032 1622128 5746232 1622448 5746048 1623336 5745136 +1622352 5746032 1622448 5746048 1623336 5745136 1622936 5745096 +1622352 5746032 1622448 5746048 1622936 5745096 1622328 5745496 +1622352 5746032 1622448 5746048 1622328 5745496 1622160 5745616 +1622352 5746032 1622128 5746232 1622448 5746048 1622328 5745496 +1623336 5745136 1623008 5745080 1622936 5745096 1622448 5746048 +1622448 5746048 1623592 5745240 1623336 5745136 1622936 5745096 +1622936 5745096 1622336 5745456 1622328 5745496 1622448 5746048 +1622448 5746048 1623336 5745136 1622936 5745096 1622328 5745496 +1623040 5747128 1622520 5746024 1622448 5746048 1622760 5746984 +1622448 5746048 1622520 5746024 1623792 5745368 1623592 5745240 +1622448 5746048 1622520 5746024 1623592 5745240 1623336 5745136 +1623592 5745240 1623528 5745200 1623336 5745136 1622520 5746024 +1623792 5745368 1623640 5745232 1623592 5745240 1622520 5746024 +1622520 5746024 1623792 5745368 1623592 5745240 1623336 5745136 +1622520 5746024 1623336 5745136 1622448 5746048 1622760 5746984 +1622448 5746048 1622528 5746824 1622760 5746984 1622520 5746024 +1622448 5746048 1622456 5746736 1622528 5746824 1622520 5746024 +1622760 5746984 1623040 5747128 1622520 5746024 1622528 5746824 +1622448 5746048 1622128 5746232 1622456 5746736 1622520 5746024 +1622448 5746048 1622456 5746736 1622520 5746024 1623336 5745136 +1622528 5746824 1622760 5746984 1622520 5746024 1622456 5746736 +1622520 5746024 1623040 5747128 1623792 5745368 1623592 5745240 +1623040 5747128 1623792 5745368 1622520 5746024 1622760 5746984 +1623792 5745368 1622520 5746024 1623040 5747128 1624224 5745656 +1622448 5746048 1622520 5746024 1623336 5745136 1622936 5745096 +1622520 5746024 1623592 5745240 1623336 5745136 1622936 5745096 +1622448 5746048 1622456 5746736 1622520 5746024 1622936 5745096 +1623336 5745136 1623008 5745080 1622936 5745096 1622520 5746024 +1622448 5746048 1622520 5746024 1622936 5745096 1622328 5745496 +1622448 5746048 1622520 5746024 1622328 5745496 1622352 5746032 +1622328 5745496 1622160 5745616 1622352 5746032 1622520 5746024 +1622448 5746048 1622456 5746736 1622520 5746024 1622352 5746032 +1622520 5746024 1623336 5745136 1622936 5745096 1622328 5745496 +1622936 5745096 1622336 5745456 1622328 5745496 1622520 5746024 +1622520 5746024 1622936 5745096 1622328 5745496 1622352 5746032 +1622936 5745096 1622584 5745840 1622520 5746024 1623336 5745136 +1622520 5746024 1623592 5745240 1623336 5745136 1622584 5745840 +1623592 5745240 1623528 5745200 1623336 5745136 1622584 5745840 +1622520 5746024 1623792 5745368 1623592 5745240 1622584 5745840 +1623592 5745240 1623336 5745136 1622584 5745840 1623792 5745368 +1623792 5745368 1623640 5745232 1623592 5745240 1622584 5745840 +1622520 5746024 1623040 5747128 1623792 5745368 1622584 5745840 +1622584 5745840 1622328 5745496 1622520 5746024 1623792 5745368 +1622936 5745096 1622328 5745496 1622584 5745840 1623336 5745136 +1622936 5745096 1622584 5745840 1623336 5745136 1623008 5745080 +1623336 5745136 1622936 5745096 1622584 5745840 1623592 5745240 +1622328 5745496 1622584 5745840 1622936 5745096 1622336 5745456 +1622936 5745096 1622816 5745056 1622336 5745456 1622584 5745840 +1622328 5745496 1622520 5746024 1622584 5745840 1622336 5745456 +1622584 5745840 1623336 5745136 1622936 5745096 1622336 5745456 +1622520 5746024 1622584 5745840 1622328 5745496 1622352 5746032 +1622520 5746024 1622584 5745840 1622352 5746032 1622448 5746048 +1622328 5745496 1622160 5745616 1622352 5746032 1622584 5745840 +1622520 5746024 1623792 5745368 1622584 5745840 1622448 5746048 +1622584 5745840 1622336 5745456 1622328 5745496 1622160 5745616 +1622584 5745840 1622160 5745616 1622352 5746032 1622448 5746048 +1622160 5745616 1622136 5745896 1622352 5746032 1622584 5745840 +1622160 5745616 1622136 5745896 1622584 5745840 1622328 5745496 +1622352 5746032 1622448 5746048 1622584 5745840 1622136 5745896 +1622160 5745616 1622064 5745632 1622136 5745896 1622584 5745840 +1622584 5745840 1622616 5745824 1623592 5745240 1623336 5745136 +1623592 5745240 1623528 5745200 1623336 5745136 1622616 5745824 +1623592 5745240 1622616 5745824 1623792 5745368 1623640 5745232 +1623792 5745368 1622616 5745824 1622584 5745840 1622520 5746024 +1623792 5745368 1622616 5745824 1622520 5746024 1623040 5747128 +1622616 5745824 1622584 5745840 1622520 5746024 1623040 5747128 +1622520 5746024 1622760 5746984 1623040 5747128 1622616 5745824 +1622584 5745840 1622520 5746024 1622616 5745824 1623336 5745136 +1622616 5745824 1623792 5745368 1623592 5745240 1623336 5745136 +1623792 5745368 1623592 5745240 1622616 5745824 1623040 5747128 +1623792 5745368 1622616 5745824 1623040 5747128 1624224 5745656 +1622584 5745840 1622616 5745824 1623336 5745136 1622936 5745096 +1622616 5745824 1623592 5745240 1623336 5745136 1622936 5745096 +1622584 5745840 1622520 5746024 1622616 5745824 1622936 5745096 +1622584 5745840 1622616 5745824 1622936 5745096 1622336 5745456 +1622936 5745096 1622816 5745056 1622336 5745456 1622616 5745824 +1622584 5745840 1622520 5746024 1622616 5745824 1622336 5745456 +1622336 5745456 1622584 5745840 1622616 5745824 1622816 5745056 +1623336 5745136 1623008 5745080 1622936 5745096 1622616 5745824 +1623336 5745136 1623008 5745080 1622616 5745824 1623592 5745240 +1622616 5745824 1623008 5745080 1622936 5745096 1622816 5745056 +1622584 5745840 1622616 5745824 1622336 5745456 1622328 5745496 +1622584 5745840 1622616 5745824 1622328 5745496 1622160 5745616 +1622584 5745840 1622520 5746024 1622616 5745824 1622328 5745496 +1622616 5745824 1622816 5745056 1622336 5745456 1622328 5745496 +1623336 5745136 1623240 5745072 1623008 5745080 1622616 5745824 +1622816 5745056 1622680 5744976 1622336 5745456 1622616 5745824 +1623040 5747128 1622736 5745784 1622616 5745824 1622520 5746024 +1622616 5745824 1622584 5745840 1622520 5746024 1622736 5745784 +1623040 5747128 1622736 5745784 1622520 5746024 1622760 5746984 +1622520 5746024 1622528 5746824 1622760 5746984 1622736 5745784 +1622736 5745784 1622616 5745824 1622520 5746024 1622760 5746984 +1622736 5745784 1623792 5745368 1622616 5745824 1622520 5746024 +1622616 5745824 1622736 5745784 1623792 5745368 1623592 5745240 +1623792 5745368 1623640 5745232 1623592 5745240 1622736 5745784 +1622616 5745824 1622736 5745784 1623592 5745240 1623336 5745136 +1623592 5745240 1623528 5745200 1623336 5745136 1622736 5745784 +1622616 5745824 1622736 5745784 1623336 5745136 1623008 5745080 +1623336 5745136 1623008 5745080 1622736 5745784 1623528 5745200 +1622616 5745824 1622520 5746024 1622736 5745784 1623008 5745080 +1622736 5745784 1623792 5745368 1623592 5745240 1623528 5745200 +1622736 5745784 1623040 5747128 1623792 5745368 1623592 5745240 +1623040 5747128 1623792 5745368 1622736 5745784 1622760 5746984 +1623792 5745368 1622736 5745784 1623040 5747128 1624224 5745656 +1623792 5745368 1622736 5745784 1624224 5745656 1624032 5745472 +1623040 5747128 1623624 5747256 1624224 5745656 1622736 5745784 +1623624 5747256 1624272 5745688 1624224 5745656 1622736 5745784 +1623792 5745368 1623592 5745240 1622736 5745784 1624224 5745656 +1622736 5745784 1622760 5746984 1623040 5747128 1623624 5747256 +1624224 5745656 1623792 5745368 1622736 5745784 1623624 5747256 +1622616 5745824 1622736 5745784 1623008 5745080 1622936 5745096 +1622736 5745784 1623336 5745136 1623008 5745080 1622936 5745096 +1622616 5745824 1622520 5746024 1622736 5745784 1622936 5745096 +1622616 5745824 1622736 5745784 1622936 5745096 1622816 5745056 +1622616 5745824 1622736 5745784 1622816 5745056 1622336 5745456 +1622616 5745824 1622736 5745784 1622336 5745456 1622328 5745496 +1622736 5745784 1622816 5745056 1622336 5745456 1622328 5745496 +1622616 5745824 1622520 5746024 1622736 5745784 1622328 5745496 +1622736 5745784 1623008 5745080 1622936 5745096 1622816 5745056 +1622736 5745784 1622936 5745096 1622816 5745056 1622336 5745456 +1622616 5745824 1622736 5745784 1622328 5745496 1622584 5745840 +1623336 5745136 1623240 5745072 1623008 5745080 1622736 5745784 +1622816 5745056 1622680 5744976 1622336 5745456 1622736 5745784 +1622736 5745784 1622768 5745744 1623008 5745080 1622936 5745096 +1623336 5745136 1622768 5745744 1622736 5745784 1623528 5745200 +1622736 5745784 1623592 5745240 1623528 5745200 1622768 5745744 +1623528 5745200 1623336 5745136 1622768 5745744 1623592 5745240 +1622736 5745784 1623792 5745368 1623592 5745240 1622768 5745744 +1623592 5745240 1623528 5745200 1622768 5745744 1623792 5745368 +1623792 5745368 1623640 5745232 1623592 5745240 1622768 5745744 +1622736 5745784 1624224 5745656 1623792 5745368 1622768 5745744 +1624224 5745656 1624032 5745472 1623792 5745368 1622768 5745744 +1623792 5745368 1623592 5745240 1622768 5745744 1624224 5745656 +1622736 5745784 1624224 5745656 1622768 5745744 1622936 5745096 +1622768 5745744 1623336 5745136 1623008 5745080 1622936 5745096 +1623336 5745136 1623008 5745080 1622768 5745744 1623528 5745200 +1622736 5745784 1623624 5747256 1624224 5745656 1622768 5745744 +1623624 5747256 1624272 5745688 1624224 5745656 1622768 5745744 +1622736 5745784 1623040 5747128 1623624 5747256 1622768 5745744 +1624224 5745656 1623792 5745368 1622768 5745744 1623624 5747256 +1622736 5745784 1623040 5747128 1622768 5745744 1622936 5745096 +1622736 5745784 1622760 5746984 1623040 5747128 1622768 5745744 +1623624 5747256 1624224 5745656 1622768 5745744 1623040 5747128 +1622736 5745784 1622768 5745744 1622936 5745096 1622816 5745056 +1622768 5745744 1623008 5745080 1622936 5745096 1622816 5745056 +1622736 5745784 1623040 5747128 1622768 5745744 1622816 5745056 +1622736 5745784 1622768 5745744 1622816 5745056 1622336 5745456 +1622736 5745784 1622768 5745744 1622336 5745456 1622328 5745496 +1622736 5745784 1622768 5745744 1622328 5745496 1622616 5745824 +1622768 5745744 1622336 5745456 1622328 5745496 1622616 5745824 +1622736 5745784 1623040 5747128 1622768 5745744 1622616 5745824 +1622768 5745744 1622936 5745096 1622816 5745056 1622336 5745456 +1622768 5745744 1622816 5745056 1622336 5745456 1622328 5745496 +1622328 5745496 1622584 5745840 1622616 5745824 1622768 5745744 +1623008 5745080 1622768 5745744 1623336 5745136 1623240 5745072 +1622816 5745056 1622680 5744976 1622336 5745456 1622768 5745744 +1622936 5745096 1622776 5745704 1622768 5745744 1623008 5745080 +1622768 5745744 1623336 5745136 1623008 5745080 1622776 5745704 +1623008 5745080 1622936 5745096 1622776 5745704 1623336 5745136 +1622776 5745704 1622816 5745056 1622768 5745744 1623336 5745136 +1622768 5745744 1623528 5745200 1623336 5745136 1622776 5745704 +1622768 5745744 1623592 5745240 1623528 5745200 1622776 5745704 +1622768 5745744 1623792 5745368 1623592 5745240 1622776 5745704 +1623792 5745368 1623640 5745232 1623592 5745240 1622776 5745704 +1623592 5745240 1623528 5745200 1622776 5745704 1623792 5745368 +1622768 5745744 1624224 5745656 1623792 5745368 1622776 5745704 +1623336 5745136 1623008 5745080 1622776 5745704 1623528 5745200 +1622768 5745744 1623792 5745368 1622776 5745704 1622816 5745056 +1623528 5745200 1623336 5745136 1622776 5745704 1623592 5745240 +1622936 5745096 1622816 5745056 1622776 5745704 1623008 5745080 +1622768 5745744 1622776 5745704 1622816 5745056 1622336 5745456 +1622768 5745744 1623792 5745368 1622776 5745704 1622336 5745456 +1622776 5745704 1622936 5745096 1622816 5745056 1622336 5745456 +1622768 5745744 1622776 5745704 1622336 5745456 1622328 5745496 +1622768 5745744 1622776 5745704 1622328 5745496 1622616 5745824 +1622768 5745744 1622776 5745704 1622616 5745824 1622736 5745784 +1622776 5745704 1622328 5745496 1622616 5745824 1622736 5745784 +1622768 5745744 1623792 5745368 1622776 5745704 1622736 5745784 +1622776 5745704 1622816 5745056 1622336 5745456 1622328 5745496 +1622776 5745704 1622336 5745456 1622328 5745496 1622616 5745824 +1622328 5745496 1622584 5745840 1622616 5745824 1622776 5745704 +1623336 5745136 1623240 5745072 1623008 5745080 1622776 5745704 +1622816 5745056 1622680 5744976 1622336 5745456 1622776 5745704 +1622816 5745056 1622768 5745672 1622776 5745704 1622936 5745096 +1622768 5745672 1622336 5745456 1622776 5745704 1622936 5745096 +1622776 5745704 1623008 5745080 1622936 5745096 1622768 5745672 +1622776 5745704 1623336 5745136 1623008 5745080 1622768 5745672 +1622776 5745704 1623528 5745200 1623336 5745136 1622768 5745672 +1622936 5745096 1622816 5745056 1622768 5745672 1623008 5745080 +1622776 5745704 1623336 5745136 1622768 5745672 1622336 5745456 +1622776 5745704 1622768 5745672 1622336 5745456 1622328 5745496 +1622776 5745704 1623336 5745136 1622768 5745672 1622328 5745496 +1622776 5745704 1622768 5745672 1622328 5745496 1622616 5745824 +1622776 5745704 1622768 5745672 1622616 5745824 1622736 5745784 +1622776 5745704 1622768 5745672 1622736 5745784 1622768 5745744 +1622768 5745672 1622616 5745824 1622736 5745784 1622768 5745744 +1622776 5745704 1623336 5745136 1622768 5745672 1622768 5745744 +1622768 5745672 1622336 5745456 1622328 5745496 1622616 5745824 +1622768 5745672 1622328 5745496 1622616 5745824 1622736 5745784 +1622768 5745672 1622816 5745056 1622336 5745456 1622328 5745496 +1623008 5745080 1622936 5745096 1622768 5745672 1623336 5745136 +1622816 5745056 1622336 5745456 1622768 5745672 1622936 5745096 +1622328 5745496 1622584 5745840 1622616 5745824 1622768 5745672 +1623336 5745136 1623240 5745072 1623008 5745080 1622768 5745672 +1622336 5745456 1622768 5745672 1622816 5745056 1622680 5744976 +1622768 5745672 1622704 5745504 1622336 5745456 1622328 5745496 +1622768 5745672 1622704 5745504 1622328 5745496 1622616 5745824 +1622768 5745672 1622704 5745504 1622616 5745824 1622736 5745784 +1622704 5745504 1622336 5745456 1622328 5745496 1622616 5745824 +1622816 5745056 1622704 5745504 1622768 5745672 1622936 5745096 +1622768 5745672 1623008 5745080 1622936 5745096 1622704 5745504 +1622768 5745672 1623336 5745136 1623008 5745080 1622704 5745504 +1622936 5745096 1622816 5745056 1622704 5745504 1623008 5745080 +1622768 5745672 1623008 5745080 1622704 5745504 1622616 5745824 +1622704 5745504 1622816 5745056 1622336 5745456 1622328 5745496 +1622816 5745056 1622336 5745456 1622704 5745504 1622936 5745096 +1622328 5745496 1622584 5745840 1622616 5745824 1622704 5745504 +1622336 5745456 1622704 5745504 1622816 5745056 1622680 5744976 +1622336 5745456 1622704 5745504 1622680 5744976 1622576 5744960 +1622336 5745456 1622328 5745496 1622704 5745504 1622576 5744960 +1622704 5745504 1622936 5745096 1622816 5745056 1622680 5744976 +1622336 5745456 1622704 5745504 1622576 5744960 1622288 5745376 +1622704 5745504 1622680 5744976 1622576 5744960 1622288 5745376 +1622336 5745456 1622328 5745496 1622704 5745504 1622288 5745376 +1622576 5744960 1622216 5745152 1622288 5745376 1622704 5745504 +1622704 5745504 1622816 5745056 1622680 5744976 1622576 5744960 +1622816 5745056 1622704 5745408 1622704 5745504 1622936 5745096 +1622704 5745504 1623008 5745080 1622936 5745096 1622704 5745408 +1622704 5745504 1622768 5745672 1623008 5745080 1622704 5745408 +1622768 5745672 1623336 5745136 1623008 5745080 1622704 5745408 +1623008 5745080 1622936 5745096 1622704 5745408 1622768 5745672 +1622704 5745408 1622680 5744976 1622704 5745504 1622768 5745672 +1622936 5745096 1622816 5745056 1622704 5745408 1623008 5745080 +1622816 5745056 1622680 5744976 1622704 5745408 1622936 5745096 +1622704 5745504 1622704 5745408 1622680 5744976 1622576 5744960 +1622704 5745504 1622704 5745408 1622576 5744960 1622288 5745376 +1622704 5745504 1622768 5745672 1622704 5745408 1622288 5745376 +1622704 5745408 1622816 5745056 1622680 5744976 1622576 5744960 +1622576 5744960 1622216 5745152 1622288 5745376 1622704 5745408 +1622704 5745504 1622704 5745408 1622288 5745376 1622336 5745456 +1622704 5745408 1622576 5744960 1622288 5745376 1622336 5745456 +1622704 5745504 1622704 5745408 1622336 5745456 1622328 5745496 +1622704 5745504 1622768 5745672 1622704 5745408 1622336 5745456 +1622704 5745408 1622680 5744976 1622576 5744960 1622288 5745376 +1622936 5745096 1622720 5745384 1622704 5745408 1623008 5745080 +1622704 5745408 1622768 5745672 1623008 5745080 1622720 5745384 +1622704 5745408 1622704 5745504 1622768 5745672 1622720 5745384 +1622768 5745672 1623336 5745136 1623008 5745080 1622720 5745384 +1622768 5745672 1622776 5745704 1623336 5745136 1622720 5745384 +1622768 5745672 1623336 5745136 1622720 5745384 1622704 5745504 +1623008 5745080 1622936 5745096 1622720 5745384 1623336 5745136 +1622720 5745384 1622816 5745056 1622704 5745408 1622704 5745504 +1622704 5745408 1622720 5745384 1622816 5745056 1622680 5744976 +1622704 5745408 1622720 5745384 1622680 5744976 1622576 5744960 +1622704 5745408 1622704 5745504 1622720 5745384 1622576 5744960 +1622720 5745384 1622816 5745056 1622680 5744976 1622576 5744960 +1622720 5745384 1622936 5745096 1622816 5745056 1622680 5744976 +1622936 5745096 1622816 5745056 1622720 5745384 1623008 5745080 +1623336 5745136 1623240 5745072 1623008 5745080 1622720 5745384 +1622704 5745408 1622720 5745384 1622576 5744960 1622288 5745376 +1622704 5745408 1622720 5745384 1622288 5745376 1622336 5745456 +1622720 5745384 1622680 5744976 1622576 5744960 1622288 5745376 +1622704 5745408 1622704 5745504 1622720 5745384 1622288 5745376 +1622576 5744960 1622216 5745152 1622288 5745376 1622720 5745384 +1623336 5745136 1622792 5745344 1622720 5745384 1622768 5745672 +1623336 5745136 1622792 5745344 1622768 5745672 1622776 5745704 +1622720 5745384 1622704 5745504 1622768 5745672 1622792 5745344 +1622720 5745384 1622704 5745408 1622704 5745504 1622792 5745344 +1622768 5745672 1623336 5745136 1622792 5745344 1622704 5745504 +1622720 5745384 1622792 5745344 1623008 5745080 1622936 5745096 +1622792 5745344 1622936 5745096 1622720 5745384 1622704 5745504 +1622720 5745384 1622792 5745344 1622936 5745096 1622816 5745056 +1622792 5745344 1623008 5745080 1622936 5745096 1622816 5745056 +1622720 5745384 1622792 5745344 1622816 5745056 1622680 5744976 +1622720 5745384 1622704 5745504 1622792 5745344 1622816 5745056 +1622792 5745344 1623336 5745136 1623008 5745080 1622936 5745096 +1623336 5745136 1623008 5745080 1622792 5745344 1622768 5745672 +1623008 5745080 1622792 5745344 1623336 5745136 1623240 5745072 +1623336 5745136 1622840 5745328 1622768 5745672 1622776 5745704 +1623336 5745136 1622792 5745344 1622840 5745328 1622776 5745704 +1622840 5745328 1622792 5745344 1622768 5745672 1622776 5745704 +1623336 5745136 1622840 5745328 1622776 5745704 1623528 5745200 +1622768 5745672 1622840 5745328 1622792 5745344 1622704 5745504 +1622768 5745672 1622776 5745704 1622840 5745328 1622704 5745504 +1622792 5745344 1622720 5745384 1622704 5745504 1622840 5745328 +1622840 5745328 1623336 5745136 1622792 5745344 1622704 5745504 +1622792 5745344 1622840 5745328 1623336 5745136 1623008 5745080 +1622840 5745328 1622776 5745704 1623336 5745136 1623008 5745080 +1622792 5745344 1622840 5745328 1623008 5745080 1622936 5745096 +1622792 5745344 1622840 5745328 1622936 5745096 1622816 5745056 +1622792 5745344 1622840 5745328 1622816 5745056 1622720 5745384 +1622840 5745328 1623008 5745080 1622936 5745096 1622816 5745056 +1622792 5745344 1622704 5745504 1622840 5745328 1622816 5745056 +1622840 5745328 1623336 5745136 1623008 5745080 1622936 5745096 +1623336 5745136 1623240 5745072 1623008 5745080 1622840 5745328 +1622776 5745704 1623096 5745416 1623336 5745136 1622840 5745328 +1622776 5745704 1623096 5745416 1622840 5745328 1622768 5745672 +1623336 5745136 1623008 5745080 1622840 5745328 1623096 5745416 +1623096 5745416 1623528 5745200 1623336 5745136 1623008 5745080 +1622840 5745328 1622704 5745504 1622768 5745672 1623096 5745416 +1622776 5745704 1623528 5745200 1623096 5745416 1622768 5745672 +1623096 5745416 1623008 5745080 1622840 5745328 1622768 5745672 +1623528 5745200 1623096 5745416 1622776 5745704 1623592 5745240 +1623528 5745200 1623336 5745136 1623096 5745416 1623592 5745240 +1623096 5745416 1622768 5745672 1622776 5745704 1623592 5745240 +1622776 5745704 1623792 5745368 1623592 5745240 1623096 5745416 +1622776 5745704 1622768 5745744 1623792 5745368 1623096 5745416 +1623792 5745368 1623640 5745232 1623592 5745240 1623096 5745416 +1622776 5745704 1622768 5745744 1623096 5745416 1622768 5745672 +1623792 5745368 1623592 5745240 1623096 5745416 1622768 5745744 +1622768 5745744 1624224 5745656 1623792 5745368 1623096 5745416 +1623592 5745240 1623528 5745200 1623096 5745416 1623792 5745368 +1623008 5745080 1622936 5745096 1622840 5745328 1623096 5745416 +1623008 5745080 1622936 5745096 1623096 5745416 1623336 5745136 +1622840 5745328 1622768 5745672 1623096 5745416 1622936 5745096 +1622936 5745096 1622816 5745056 1622840 5745328 1623096 5745416 +1623336 5745136 1623240 5745072 1623008 5745080 1623096 5745416 +1623008 5745080 1622936 5745096 1623096 5745416 1623240 5745072 +1623336 5745136 1623240 5745072 1623096 5745416 1623528 5745200 +1623240 5745072 1623128 5745016 1623008 5745080 1623096 5745416 +1622768 5745744 1623120 5745440 1623096 5745416 1622776 5745704 +1622768 5745744 1623792 5745368 1623120 5745440 1622776 5745704 +1623120 5745440 1623792 5745368 1623096 5745416 1622776 5745704 +1623096 5745416 1622768 5745672 1622776 5745704 1623120 5745440 +1622776 5745704 1622768 5745744 1623120 5745440 1622768 5745672 +1623096 5745416 1622840 5745328 1622768 5745672 1623120 5745440 +1623096 5745416 1622768 5745672 1623120 5745440 1623792 5745368 +1623096 5745416 1623120 5745440 1623792 5745368 1623592 5745240 +1623792 5745368 1623640 5745232 1623592 5745240 1623120 5745440 +1623120 5745440 1622768 5745744 1623792 5745368 1623592 5745240 +1623096 5745416 1622768 5745672 1623120 5745440 1623592 5745240 +1623792 5745368 1623120 5745440 1622768 5745744 1624224 5745656 +1623792 5745368 1623120 5745440 1624224 5745656 1624032 5745472 +1623792 5745368 1623592 5745240 1623120 5745440 1624224 5745656 +1623120 5745440 1622776 5745704 1622768 5745744 1624224 5745656 +1622768 5745744 1623624 5747256 1624224 5745656 1623120 5745440 +1623096 5745416 1623120 5745440 1623592 5745240 1623528 5745200 +1623096 5745416 1623120 5745440 1623528 5745200 1623336 5745136 +1623096 5745416 1623120 5745440 1623336 5745136 1623240 5745072 +1623096 5745416 1622768 5745672 1623120 5745440 1623336 5745136 +1623120 5745440 1623792 5745368 1623592 5745240 1623528 5745200 +1623120 5745440 1623592 5745240 1623528 5745200 1623336 5745136 +1624224 5745656 1623712 5745712 1623624 5747256 1624272 5745688 +1624224 5745656 1622768 5745744 1623712 5745712 1624272 5745688 +1623712 5745712 1622768 5745744 1623624 5747256 1624272 5745688 +1622768 5745744 1623712 5745712 1624224 5745656 1623120 5745440 +1623712 5745712 1624272 5745688 1624224 5745656 1623120 5745440 +1622768 5745744 1623712 5745712 1623120 5745440 1622776 5745704 +1622768 5745744 1623624 5747256 1623712 5745712 1623120 5745440 +1624224 5745656 1623792 5745368 1623120 5745440 1623712 5745712 +1624224 5745656 1624032 5745472 1623792 5745368 1623712 5745712 +1624032 5745472 1623896 5745384 1623792 5745368 1623712 5745712 +1624032 5745472 1623896 5745384 1623712 5745712 1624224 5745656 +1623792 5745368 1623592 5745240 1623120 5745440 1623712 5745712 +1623792 5745368 1623640 5745232 1623592 5745240 1623712 5745712 +1624224 5745656 1624032 5745472 1623712 5745712 1624272 5745688 +1623592 5745240 1623528 5745200 1623120 5745440 1623712 5745712 +1623792 5745368 1623592 5745240 1623712 5745712 1623896 5745384 +1623120 5745440 1622768 5745744 1623712 5745712 1623592 5745240 +1623624 5747256 1623952 5747280 1624272 5745688 1623712 5745712 +1624272 5745688 1624224 5745656 1623712 5745712 1623952 5747280 +1623624 5747256 1623952 5747280 1623712 5745712 1622768 5745744 +1623624 5747256 1623712 5745712 1622768 5745744 1623040 5747128 +1622768 5745744 1622736 5745784 1623040 5747128 1623712 5745712 +1623624 5747256 1623952 5747280 1623712 5745712 1623040 5747128 +1623712 5745712 1623120 5745440 1622768 5745744 1622736 5745784 +1622736 5745784 1622760 5746984 1623040 5747128 1623712 5745712 +1623040 5747128 1623624 5747256 1623712 5745712 1622736 5745784 +1623952 5747280 1624120 5747304 1624272 5745688 1623712 5745712 +1623712 5745712 1623752 5745744 1624272 5745688 1624224 5745656 +1623712 5745712 1623752 5745744 1624224 5745656 1624032 5745472 +1623712 5745712 1623752 5745744 1624032 5745472 1623896 5745384 +1623712 5745712 1623752 5745744 1623896 5745384 1623792 5745368 +1623752 5745744 1624272 5745688 1624224 5745656 1624032 5745472 +1623752 5745744 1624224 5745656 1624032 5745472 1623896 5745384 +1623712 5745712 1623952 5747280 1623752 5745744 1623896 5745384 +1623752 5745744 1623952 5747280 1624272 5745688 1624224 5745656 +1623952 5747280 1623752 5745744 1623712 5745712 1623624 5747256 +1623712 5745712 1623040 5747128 1623624 5747256 1623752 5745744 +1623752 5745744 1623896 5745384 1623712 5745712 1623040 5747128 +1623952 5747280 1624272 5745688 1623752 5745744 1623624 5747256 +1623624 5747256 1623952 5747280 1623752 5745744 1623040 5747128 +1623712 5745712 1622736 5745784 1623040 5747128 1623752 5745744 +1623712 5745712 1622768 5745744 1622736 5745784 1623752 5745744 +1623040 5747128 1623624 5747256 1623752 5745744 1622736 5745784 +1623712 5745712 1622736 5745784 1623752 5745744 1623896 5745384 +1622736 5745784 1622760 5746984 1623040 5747128 1623752 5745744 +1624272 5745688 1623752 5745744 1623952 5747280 1624120 5747304 +1623752 5745744 1624088 5745888 1624272 5745688 1624224 5745656 +1623752 5745744 1624088 5745888 1624224 5745656 1624032 5745472 +1623752 5745744 1624088 5745888 1624032 5745472 1623896 5745384 +1624088 5745888 1624272 5745688 1624224 5745656 1624032 5745472 +1623752 5745744 1623952 5747280 1624088 5745888 1624032 5745472 +1623952 5747280 1624088 5745888 1623752 5745744 1623624 5747256 +1624088 5745888 1624032 5745472 1623752 5745744 1623624 5747256 +1623952 5747280 1624272 5745688 1624088 5745888 1623624 5747256 +1624088 5745888 1623952 5747280 1624272 5745688 1624224 5745656 +1623752 5745744 1623040 5747128 1623624 5747256 1624088 5745888 +1624272 5745688 1624088 5745888 1623952 5747280 1624120 5747304 +1624088 5745888 1623624 5747256 1623952 5747280 1624120 5747304 +1624272 5745688 1624224 5745656 1624088 5745888 1624120 5747304 +1624272 5745688 1624088 5745888 1624120 5747304 1624712 5745880 +1624272 5745688 1624224 5745656 1624088 5745888 1624712 5745880 +1624272 5745688 1624088 5745888 1624712 5745880 1624528 5745760 +1624272 5745688 1624224 5745656 1624088 5745888 1624528 5745760 +1624088 5745888 1624120 5747304 1624712 5745880 1624528 5745760 +1624088 5745888 1623952 5747280 1624120 5747304 1624712 5745880 +1624120 5747304 1625112 5746640 1624712 5745880 1624088 5745888 +1624120 5747304 1624384 5747352 1625112 5746640 1624088 5745888 +1624712 5745880 1624528 5745760 1624088 5745888 1625112 5746640 +1624120 5747304 1625112 5746640 1624088 5745888 1623952 5747280 +1625112 5746640 1624976 5746096 1624712 5745880 1624088 5745888 +1624712 5745880 1624528 5745760 1624088 5745888 1624976 5746096 +1625112 5746640 1624976 5746096 1624088 5745888 1624120 5747304 +1625112 5746640 1625232 5746360 1624976 5746096 1624088 5745888 +1625112 5746640 1624568 5746120 1624088 5745888 1624120 5747304 +1625112 5746640 1624568 5746120 1624120 5747304 1624384 5747352 +1624568 5746120 1624976 5746096 1624088 5745888 1624120 5747304 +1625112 5746640 1624568 5746120 1624384 5747352 1625152 5746720 +1625112 5746640 1624976 5746096 1624568 5746120 1624384 5747352 +1624088 5745888 1623952 5747280 1624120 5747304 1624568 5746120 +1624088 5745888 1623624 5747256 1623952 5747280 1624568 5746120 +1624088 5745888 1623952 5747280 1624568 5746120 1624976 5746096 +1624568 5746120 1623952 5747280 1624120 5747304 1624384 5747352 +1624088 5745888 1624568 5746120 1624976 5746096 1624712 5745880 +1624088 5745888 1623952 5747280 1624568 5746120 1624712 5745880 +1624568 5746120 1625112 5746640 1624976 5746096 1624712 5745880 +1624088 5745888 1624568 5746120 1624712 5745880 1624528 5745760 +1624088 5745888 1623952 5747280 1624568 5746120 1624528 5745760 +1624088 5745888 1624568 5746120 1624528 5745760 1624272 5745688 +1624568 5746120 1624976 5746096 1624712 5745880 1624528 5745760 +1624976 5746096 1624568 5746120 1625112 5746640 1625232 5746360 +1624568 5746120 1624848 5746288 1624976 5746096 1624712 5745880 +1625112 5746640 1624848 5746288 1624568 5746120 1624384 5747352 +1624568 5746120 1624120 5747304 1624384 5747352 1624848 5746288 +1625112 5746640 1624848 5746288 1624384 5747352 1625152 5746720 +1624848 5746288 1624976 5746096 1624568 5746120 1624384 5747352 +1625112 5746640 1624976 5746096 1624848 5746288 1624384 5747352 +1624976 5746096 1624848 5746288 1625112 5746640 1625232 5746360 +1624976 5746096 1624568 5746120 1624848 5746288 1625232 5746360 +1624848 5746288 1624384 5747352 1625112 5746640 1625232 5746360 +1625112 5746640 1625376 5746584 1625232 5746360 1624848 5746288 +1625112 5746640 1624864 5746312 1624384 5747352 1625152 5746720 +1624384 5747352 1624864 5746312 1624848 5746288 1624568 5746120 +1624384 5747352 1624864 5746312 1624568 5746120 1624120 5747304 +1624864 5746312 1625112 5746640 1624848 5746288 1624568 5746120 +1624848 5746288 1624864 5746312 1625112 5746640 1625232 5746360 +1624848 5746288 1624568 5746120 1624864 5746312 1625232 5746360 +1624864 5746312 1624384 5747352 1625112 5746640 1625232 5746360 +1624384 5747352 1625112 5746640 1624864 5746312 1624568 5746120 +1624848 5746288 1624864 5746312 1625232 5746360 1624976 5746096 +1624848 5746288 1624864 5746312 1624976 5746096 1624568 5746120 +1624848 5746288 1624568 5746120 1624864 5746312 1624976 5746096 +1624864 5746312 1625112 5746640 1625232 5746360 1624976 5746096 +1625112 5746640 1625376 5746584 1625232 5746360 1624864 5746312 +1624864 5746312 1624984 5746440 1625232 5746360 1624976 5746096 +1625112 5746640 1624984 5746440 1624864 5746312 1624384 5747352 +1625112 5746640 1624984 5746440 1624384 5747352 1625152 5746720 +1624864 5746312 1624384 5747352 1624984 5746440 1624976 5746096 +1624864 5746312 1624568 5746120 1624384 5747352 1624984 5746440 +1624984 5746440 1625112 5746640 1625232 5746360 1624976 5746096 +1625112 5746640 1625232 5746360 1624984 5746440 1624384 5747352 +1624864 5746312 1624984 5746440 1624976 5746096 1624848 5746288 +1625232 5746360 1624984 5746440 1625112 5746640 1625376 5746584 +1625152 5746720 1624872 5746968 1624632 5747488 1625240 5746976 +1624632 5747488 1625336 5747152 1625240 5746976 1624872 5746968 +1625240 5746976 1625152 5746720 1624872 5746968 1625336 5747152 +1624632 5747488 1624856 5747664 1625336 5747152 1624872 5746968 +1625336 5747152 1625240 5746976 1624872 5746968 1624856 5747664 +1624384 5747352 1624872 5746968 1625152 5746720 1625112 5746640 +1624384 5747352 1624872 5746968 1625112 5746640 1624984 5746440 +1624872 5746968 1625152 5746720 1625112 5746640 1624984 5746440 +1624856 5747664 1625032 5747760 1625336 5747152 1624872 5746968 +1624384 5747352 1624872 5746968 1624984 5746440 1624864 5746312 +1624872 5746968 1625112 5746640 1624984 5746440 1624864 5746312 +1624384 5747352 1624872 5746968 1624864 5746312 1624568 5746120 +1624384 5747352 1624872 5746968 1624568 5746120 1624120 5747304 +1624864 5746312 1624848 5746288 1624568 5746120 1624872 5746968 +1624872 5746968 1624984 5746440 1624864 5746312 1624568 5746120 +1624872 5746968 1624864 5746312 1624568 5746120 1624120 5747304 +1625152 5746720 1625112 5746640 1624872 5746968 1625240 5746976 +1624872 5746968 1624384 5747352 1624632 5747488 1624856 5747664 +1624384 5747352 1624632 5747488 1624872 5746968 1624120 5747304 +1624568 5746120 1623952 5747280 1624120 5747304 1624872 5746968 +1625240 5746976 1624928 5746968 1624872 5746968 1625336 5747152 +1624872 5746968 1624856 5747664 1625336 5747152 1624928 5746968 +1625336 5747152 1625240 5746976 1624928 5746968 1624856 5747664 +1624872 5746968 1624632 5747488 1624856 5747664 1624928 5746968 +1624856 5747664 1625336 5747152 1624928 5746968 1624632 5747488 +1624856 5747664 1625032 5747760 1625336 5747152 1624928 5746968 +1624872 5746968 1624928 5746968 1625152 5746720 1625112 5746640 +1624872 5746968 1624928 5746968 1625112 5746640 1624984 5746440 +1624872 5746968 1624384 5747352 1624632 5747488 1624928 5746968 +1624928 5746968 1625112 5746640 1624872 5746968 1624632 5747488 +1624928 5746968 1625240 5746976 1625152 5746720 1625112 5746640 +1625240 5746976 1625152 5746720 1624928 5746968 1625336 5747152 +1624856 5747664 1625024 5747040 1624928 5746968 1624632 5747488 +1624928 5746968 1625024 5747040 1625336 5747152 1625240 5746976 +1624928 5746968 1624872 5746968 1624632 5747488 1625024 5747040 +1624632 5747488 1624856 5747664 1625024 5747040 1624872 5746968 +1625336 5747152 1625024 5747040 1624856 5747664 1625032 5747760 +1624872 5746968 1624384 5747352 1624632 5747488 1625024 5747040 +1625024 5747040 1625240 5746976 1624928 5746968 1624872 5746968 +1624928 5746968 1625024 5747040 1625240 5746976 1625152 5746720 +1625024 5747040 1625336 5747152 1625240 5746976 1625152 5746720 +1624928 5746968 1625024 5747040 1625152 5746720 1625112 5746640 +1624928 5746968 1624872 5746968 1625024 5747040 1625152 5746720 +1625024 5747040 1624856 5747664 1625336 5747152 1625240 5746976 +1624856 5747664 1625336 5747152 1625024 5747040 1624632 5747488 +1625336 5747152 1625080 5747096 1624856 5747664 1625032 5747760 +1625336 5747152 1625080 5747096 1625032 5747760 1625552 5747448 +1625024 5747040 1625080 5747096 1625336 5747152 1625240 5746976 +1625024 5747040 1625080 5747096 1625240 5746976 1625152 5746720 +1625024 5747040 1624856 5747664 1625080 5747096 1625240 5746976 +1624856 5747664 1625080 5747096 1625024 5747040 1624632 5747488 +1625024 5747040 1624872 5746968 1624632 5747488 1625080 5747096 +1625080 5747096 1625240 5746976 1625024 5747040 1624632 5747488 +1625336 5747152 1625240 5746976 1625080 5747096 1625032 5747760 +1625080 5747096 1624632 5747488 1624856 5747664 1625032 5747760 +1625336 5747152 1625128 5747144 1625032 5747760 1625552 5747448 +1625336 5747152 1625080 5747096 1625128 5747144 1625552 5747448 +1625128 5747144 1625080 5747096 1625032 5747760 1625552 5747448 +1625032 5747760 1625232 5747816 1625552 5747448 1625128 5747144 +1625032 5747760 1625128 5747144 1625080 5747096 1624856 5747664 +1625032 5747760 1625552 5747448 1625128 5747144 1624856 5747664 +1625080 5747096 1625128 5747144 1625336 5747152 1625240 5746976 +1625128 5747144 1625552 5747448 1625336 5747152 1625240 5746976 +1625080 5747096 1625128 5747144 1625240 5746976 1625024 5747040 +1625128 5747144 1625240 5746976 1625080 5747096 1624856 5747664 +1625080 5747096 1624632 5747488 1624856 5747664 1625128 5747144 +1624856 5747664 1625032 5747760 1625128 5747144 1624632 5747488 +1625080 5747096 1625024 5747040 1624632 5747488 1625128 5747144 +1625080 5747096 1624632 5747488 1625128 5747144 1625240 5746976 +1625032 5747760 1625160 5747192 1625128 5747144 1624856 5747664 +1625160 5747192 1625552 5747448 1625128 5747144 1624856 5747664 +1625032 5747760 1625552 5747448 1625160 5747192 1624856 5747664 +1625552 5747448 1625160 5747192 1625032 5747760 1625232 5747816 +1625552 5747448 1625128 5747144 1625160 5747192 1625232 5747816 +1625160 5747192 1624856 5747664 1625032 5747760 1625232 5747816 +1625552 5747448 1625160 5747192 1625232 5747816 1625560 5747496 +1625128 5747144 1625160 5747192 1625552 5747448 1625336 5747152 +1625128 5747144 1625160 5747192 1625336 5747152 1625240 5746976 +1625128 5747144 1624856 5747664 1625160 5747192 1625336 5747152 +1625160 5747192 1625232 5747816 1625552 5747448 1625336 5747152 +1625128 5747144 1624632 5747488 1624856 5747664 1625160 5747192 +1625128 5747144 1624632 5747488 1625160 5747192 1625336 5747152 +1624856 5747664 1625032 5747760 1625160 5747192 1624632 5747488 +1625128 5747144 1625080 5747096 1624632 5747488 1625160 5747192 +1625160 5747192 1625192 5747288 1625552 5747448 1625336 5747152 +1625160 5747192 1625232 5747816 1625192 5747288 1625336 5747152 +1625192 5747288 1625232 5747816 1625552 5747448 1625336 5747152 +1625232 5747816 1625192 5747288 1625160 5747192 1625032 5747760 +1625192 5747288 1625336 5747152 1625160 5747192 1625032 5747760 +1625160 5747192 1624856 5747664 1625032 5747760 1625192 5747288 +1625160 5747192 1624632 5747488 1624856 5747664 1625192 5747288 +1625160 5747192 1624632 5747488 1625192 5747288 1625336 5747152 +1624856 5747664 1625032 5747760 1625192 5747288 1624632 5747488 +1625232 5747816 1625552 5747448 1625192 5747288 1625032 5747760 +1625032 5747760 1625232 5747816 1625192 5747288 1624856 5747664 +1625552 5747448 1625192 5747288 1625232 5747816 1625560 5747496 +1625232 5747816 1625560 5747592 1625560 5747496 1625192 5747288 +1625232 5747816 1625352 5747816 1625560 5747592 1625192 5747288 +1625552 5747448 1625336 5747152 1625192 5747288 1625560 5747496 +1625192 5747288 1625032 5747760 1625232 5747816 1625560 5747592 +1625560 5747496 1625552 5747448 1625192 5747288 1625560 5747592 +1625160 5747192 1625192 5747288 1625336 5747152 1625128 5747144 +1625160 5747192 1625128 5747144 1624632 5747488 1625192 5747288 +1624632 5747488 1624856 5747664 1625192 5747288 1625128 5747144 +1625160 5747192 1625128 5747144 1625192 5747288 1625336 5747152 +1625128 5747144 1625080 5747096 1624632 5747488 1625192 5747288 +1625192 5747288 1625200 5747336 1625560 5747592 1625560 5747496 +1625560 5747592 1625200 5747336 1625232 5747816 1625352 5747816 +1625192 5747288 1625232 5747816 1625200 5747336 1625560 5747496 +1625232 5747816 1625200 5747336 1625192 5747288 1625032 5747760 +1625200 5747336 1625560 5747496 1625192 5747288 1625032 5747760 +1625200 5747336 1625352 5747816 1625560 5747592 1625560 5747496 +1625200 5747336 1625032 5747760 1625232 5747816 1625352 5747816 +1625192 5747288 1624856 5747664 1625032 5747760 1625200 5747336 +1625192 5747288 1624632 5747488 1624856 5747664 1625200 5747336 +1625192 5747288 1625128 5747144 1624632 5747488 1625200 5747336 +1625192 5747288 1624632 5747488 1625200 5747336 1625560 5747496 +1625032 5747760 1625232 5747816 1625200 5747336 1624856 5747664 +1624856 5747664 1625032 5747760 1625200 5747336 1624632 5747488 +1625192 5747288 1625200 5747336 1625560 5747496 1625552 5747448 +1625200 5747336 1625560 5747592 1625560 5747496 1625552 5747448 +1625192 5747288 1625200 5747336 1625552 5747448 1625336 5747152 +1625192 5747288 1625200 5747336 1625336 5747152 1625160 5747192 +1625192 5747288 1624632 5747488 1625200 5747336 1625336 5747152 +1625200 5747336 1625560 5747496 1625552 5747448 1625336 5747152 +1625560 5747592 1625200 5747336 1625352 5747816 1625520 5747712 +1625200 5747336 1625216 5747392 1625352 5747816 1625560 5747592 +1625200 5747336 1625216 5747392 1625560 5747592 1625560 5747496 +1625200 5747336 1625216 5747392 1625560 5747496 1625552 5747448 +1625216 5747392 1625352 5747816 1625560 5747592 1625560 5747496 +1625216 5747392 1625560 5747592 1625560 5747496 1625552 5747448 +1625200 5747336 1625232 5747816 1625216 5747392 1625552 5747448 +1625232 5747816 1625216 5747392 1625200 5747336 1625032 5747760 +1625200 5747336 1624856 5747664 1625032 5747760 1625216 5747392 +1625216 5747392 1625552 5747448 1625200 5747336 1624856 5747664 +1625032 5747760 1625232 5747816 1625216 5747392 1624856 5747664 +1625216 5747392 1625232 5747816 1625352 5747816 1625560 5747592 +1625232 5747816 1625352 5747816 1625216 5747392 1625032 5747760 +1625200 5747336 1624632 5747488 1624856 5747664 1625216 5747392 +1625200 5747336 1625216 5747392 1625552 5747448 1625336 5747152 +1625216 5747392 1625560 5747496 1625552 5747448 1625336 5747152 +1625200 5747336 1625216 5747392 1625336 5747152 1625192 5747288 +1625200 5747336 1624856 5747664 1625216 5747392 1625336 5747152 +1625352 5747816 1625520 5747712 1625560 5747592 1625216 5747392 +1625352 5747816 1625400 5747824 1625520 5747712 1625216 5747392 +1625560 5747592 1625560 5747496 1625216 5747392 1625520 5747712 +1625352 5747816 1625520 5747712 1625216 5747392 1625232 5747816 +1625216 5747392 1625200 5747336 1624856 5747664 1625192 5747440 +1625216 5747392 1625200 5747336 1625192 5747440 1625232 5747816 +1624856 5747664 1625032 5747760 1625192 5747440 1625200 5747336 +1625216 5747392 1625192 5747440 1625232 5747816 1625352 5747816 +1625216 5747392 1625200 5747336 1625192 5747440 1625352 5747816 +1625216 5747392 1625192 5747440 1625352 5747816 1625520 5747712 +1625352 5747816 1625400 5747824 1625520 5747712 1625192 5747440 +1625216 5747392 1625200 5747336 1625192 5747440 1625520 5747712 +1625192 5747440 1625232 5747816 1625352 5747816 1625520 5747712 +1625192 5747440 1625032 5747760 1625232 5747816 1625352 5747816 +1625200 5747336 1624632 5747488 1624856 5747664 1625192 5747440 +1625200 5747336 1625192 5747288 1624632 5747488 1625192 5747440 +1625200 5747336 1624632 5747488 1625192 5747440 1625216 5747392 +1624856 5747664 1625032 5747760 1625192 5747440 1624632 5747488 +1625216 5747392 1625192 5747440 1625520 5747712 1625560 5747592 +1625216 5747392 1625192 5747440 1625560 5747592 1625560 5747496 +1625216 5747392 1625192 5747440 1625560 5747496 1625552 5747448 +1625216 5747392 1625192 5747440 1625552 5747448 1625336 5747152 +1625192 5747440 1625560 5747592 1625560 5747496 1625552 5747448 +1625216 5747392 1625200 5747336 1625192 5747440 1625552 5747448 +1625192 5747440 1625352 5747816 1625520 5747712 1625560 5747592 +1625192 5747440 1625520 5747712 1625560 5747592 1625560 5747496 +1624856 5747664 1625144 5747480 1625192 5747440 1624632 5747488 +1624856 5747664 1625032 5747760 1625144 5747480 1624632 5747488 +1625192 5747440 1625144 5747480 1625032 5747760 1625232 5747816 +1625144 5747480 1624856 5747664 1625032 5747760 1625232 5747816 +1625192 5747440 1625144 5747480 1625232 5747816 1625352 5747816 +1625192 5747440 1625144 5747480 1625352 5747816 1625520 5747712 +1625144 5747480 1625032 5747760 1625232 5747816 1625352 5747816 +1625144 5747480 1625352 5747816 1625192 5747440 1624632 5747488 +1625192 5747440 1625200 5747336 1624632 5747488 1625144 5747480 +1625200 5747336 1625192 5747288 1624632 5747488 1625144 5747480 +1625192 5747288 1625128 5747144 1624632 5747488 1625144 5747480 +1625192 5747288 1625128 5747144 1625144 5747480 1625200 5747336 +1625192 5747440 1625216 5747392 1625200 5747336 1625144 5747480 +1624632 5747488 1624856 5747664 1625144 5747480 1625128 5747144 +1625192 5747440 1625200 5747336 1625144 5747480 1625352 5747816 +1625200 5747336 1625192 5747288 1625144 5747480 1625192 5747440 +1625192 5747288 1625160 5747192 1625128 5747144 1625144 5747480 +1625128 5747144 1624632 5747488 1625144 5747480 1625160 5747192 +1625192 5747288 1625160 5747192 1625144 5747480 1625200 5747336 +1625128 5747144 1625080 5747096 1624632 5747488 1625144 5747480 +1625128 5747144 1625080 5747096 1625144 5747480 1625160 5747192 +1624632 5747488 1624856 5747664 1625144 5747480 1625080 5747096 +1625080 5747096 1625024 5747040 1624632 5747488 1625144 5747480 +1625144 5747480 1625112 5747488 1624856 5747664 1625032 5747760 +1625112 5747488 1624632 5747488 1624856 5747664 1625032 5747760 +1625144 5747480 1625112 5747488 1625032 5747760 1625232 5747816 +1625144 5747480 1624632 5747488 1625112 5747488 1625232 5747816 +1625112 5747488 1624856 5747664 1625032 5747760 1625232 5747816 +1624632 5747488 1625112 5747488 1625144 5747480 1625080 5747096 +1624632 5747488 1624856 5747664 1625112 5747488 1625080 5747096 +1625112 5747488 1625232 5747816 1625144 5747480 1625080 5747096 +1625144 5747480 1625112 5747488 1625232 5747816 1625352 5747816 +1624632 5747488 1625112 5747488 1625080 5747096 1625024 5747040 +1625144 5747480 1625128 5747144 1625080 5747096 1625112 5747488 +1625144 5747480 1625128 5747144 1625112 5747488 1625232 5747816 +1625144 5747480 1625160 5747192 1625128 5747144 1625112 5747488 +1625144 5747480 1625160 5747192 1625112 5747488 1625232 5747816 +1625080 5747096 1624632 5747488 1625112 5747488 1625128 5747144 +1625144 5747480 1625192 5747288 1625160 5747192 1625112 5747488 +1625144 5747480 1625192 5747288 1625112 5747488 1625232 5747816 +1625160 5747192 1625128 5747144 1625112 5747488 1625192 5747288 +1625144 5747480 1625200 5747336 1625192 5747288 1625112 5747488 +1625144 5747480 1625200 5747336 1625112 5747488 1625232 5747816 +1625144 5747480 1625192 5747440 1625200 5747336 1625112 5747488 +1625144 5747480 1625192 5747440 1625112 5747488 1625232 5747816 +1625200 5747336 1625192 5747288 1625112 5747488 1625192 5747440 +1625192 5747440 1625216 5747392 1625200 5747336 1625112 5747488 +1625192 5747288 1625160 5747192 1625112 5747488 1625200 5747336 +1625128 5747144 1625080 5747096 1625112 5747488 1625160 5747192 +1625112 5747488 1625024 5747528 1624856 5747664 1625032 5747760 +1625112 5747488 1624632 5747488 1625024 5747528 1625032 5747760 +1624632 5747488 1625024 5747528 1625112 5747488 1625080 5747096 +1625024 5747528 1625032 5747760 1625112 5747488 1625080 5747096 +1625024 5747528 1624632 5747488 1624856 5747664 1625032 5747760 +1624632 5747488 1624856 5747664 1625024 5747528 1625080 5747096 +1625112 5747488 1625024 5747528 1625032 5747760 1625232 5747816 +1625112 5747488 1625128 5747144 1625080 5747096 1625024 5747528 +1625112 5747488 1625128 5747144 1625024 5747528 1625032 5747760 +1625080 5747096 1624632 5747488 1625024 5747528 1625128 5747144 +1624632 5747488 1625024 5747528 1625080 5747096 1625024 5747040 +1625112 5747488 1625160 5747192 1625128 5747144 1625024 5747528 +1625112 5747488 1625160 5747192 1625024 5747528 1625032 5747760 +1625112 5747488 1625192 5747288 1625160 5747192 1625024 5747528 +1625112 5747488 1625192 5747288 1625024 5747528 1625032 5747760 +1625128 5747144 1625080 5747096 1625024 5747528 1625160 5747192 +1625112 5747488 1625200 5747336 1625192 5747288 1625024 5747528 +1625160 5747192 1625128 5747144 1625024 5747528 1625192 5747288 +1625024 5747528 1624984 5747528 1624856 5747664 1625032 5747760 +1625024 5747528 1624984 5747528 1625032 5747760 1625112 5747488 +1625024 5747528 1624632 5747488 1624984 5747528 1625032 5747760 +1624632 5747488 1624984 5747528 1625024 5747528 1625080 5747096 +1625024 5747528 1625128 5747144 1625080 5747096 1624984 5747528 +1624984 5747528 1625032 5747760 1625024 5747528 1625128 5747144 +1625080 5747096 1624632 5747488 1624984 5747528 1625128 5747144 +1624984 5747528 1624632 5747488 1624856 5747664 1625032 5747760 +1624632 5747488 1624856 5747664 1624984 5747528 1625080 5747096 +1625024 5747528 1625160 5747192 1625128 5747144 1624984 5747528 +1625128 5747144 1625080 5747096 1624984 5747528 1625160 5747192 +1625024 5747528 1625160 5747192 1624984 5747528 1625032 5747760 +1624632 5747488 1624984 5747528 1625080 5747096 1625024 5747040 +1624984 5747528 1625128 5747144 1625080 5747096 1625024 5747040 +1624632 5747488 1624856 5747664 1624984 5747528 1625024 5747040 +1624632 5747488 1624984 5747528 1625024 5747040 1624872 5746968 +1625024 5747528 1625192 5747288 1625160 5747192 1624984 5747528 +1625024 5747528 1625192 5747288 1624984 5747528 1625032 5747760 +1625024 5747528 1625112 5747488 1625192 5747288 1624984 5747528 +1625024 5747528 1625112 5747488 1624984 5747528 1625032 5747760 +1625160 5747192 1625128 5747144 1624984 5747528 1625192 5747288 +1625112 5747488 1625200 5747336 1625192 5747288 1624984 5747528 +1625192 5747288 1625160 5747192 1624984 5747528 1625112 5747488 +1624984 5747528 1624888 5747480 1624632 5747488 1624856 5747664 +1624984 5747528 1624888 5747480 1624856 5747664 1625032 5747760 +1624984 5747528 1625024 5747040 1624888 5747480 1624856 5747664 +1624888 5747480 1625024 5747040 1624632 5747488 1624856 5747664 +1624632 5747488 1624888 5747480 1625024 5747040 1624872 5746968 +1624632 5747488 1624856 5747664 1624888 5747480 1624872 5746968 +1624888 5747480 1624984 5747528 1625024 5747040 1624872 5746968 +1625024 5747040 1624928 5746968 1624872 5746968 1624888 5747480 +1624632 5747488 1624888 5747480 1624872 5746968 1624384 5747352 +1625024 5747040 1624888 5747480 1624984 5747528 1625080 5747096 +1624984 5747528 1625128 5747144 1625080 5747096 1624888 5747480 +1624984 5747528 1625160 5747192 1625128 5747144 1624888 5747480 +1625128 5747144 1625080 5747096 1624888 5747480 1625160 5747192 +1624888 5747480 1624856 5747664 1624984 5747528 1625160 5747192 +1625024 5747040 1624872 5746968 1624888 5747480 1625080 5747096 +1624984 5747528 1625192 5747288 1625160 5747192 1624888 5747480 +1625160 5747192 1625128 5747144 1624888 5747480 1625192 5747288 +1624984 5747528 1625192 5747288 1624888 5747480 1624856 5747664 +1625080 5747096 1625024 5747040 1624888 5747480 1625128 5747144 +1624984 5747528 1625112 5747488 1625192 5747288 1624888 5747480 +1624984 5747528 1625112 5747488 1624888 5747480 1624856 5747664 +1624984 5747528 1625024 5747528 1625112 5747488 1624888 5747480 +1624984 5747528 1625024 5747528 1624888 5747480 1624856 5747664 +1625192 5747288 1625160 5747192 1624888 5747480 1625112 5747488 +1625112 5747488 1625200 5747336 1625192 5747288 1624888 5747480 +1625112 5747488 1625192 5747288 1624888 5747480 1625024 5747528 +1624888 5747480 1624840 5747456 1624632 5747488 1624856 5747664 +1624888 5747480 1624840 5747456 1624856 5747664 1624984 5747528 +1624888 5747480 1624872 5746968 1624840 5747456 1624856 5747664 +1624840 5747456 1624872 5746968 1624632 5747488 1624856 5747664 +1624872 5746968 1624840 5747456 1624888 5747480 1625024 5747040 +1624840 5747456 1624856 5747664 1624888 5747480 1625024 5747040 +1624888 5747480 1625080 5747096 1625024 5747040 1624840 5747456 +1624888 5747480 1625080 5747096 1624840 5747456 1624856 5747664 +1624872 5746968 1624632 5747488 1624840 5747456 1625024 5747040 +1625024 5747040 1624872 5746968 1624840 5747456 1625080 5747096 +1624872 5746968 1624840 5747456 1625024 5747040 1624928 5746968 +1624632 5747488 1624840 5747456 1624872 5746968 1624384 5747352 +1624888 5747480 1625128 5747144 1625080 5747096 1624840 5747456 +1624888 5747480 1625160 5747192 1625128 5747144 1624840 5747456 +1624888 5747480 1625128 5747144 1624840 5747456 1624856 5747664 +1625080 5747096 1625024 5747040 1624840 5747456 1625128 5747144 +1624840 5747456 1624784 5747376 1624632 5747488 1624856 5747664 +1624872 5746968 1624784 5747376 1624840 5747456 1625024 5747040 +1624784 5747376 1624632 5747488 1624840 5747456 1625024 5747040 +1624872 5746968 1624632 5747488 1624784 5747376 1625024 5747040 +1624840 5747456 1625080 5747096 1625024 5747040 1624784 5747376 +1624840 5747456 1625128 5747144 1625080 5747096 1624784 5747376 +1624840 5747456 1625128 5747144 1624784 5747376 1624632 5747488 +1625024 5747040 1624872 5746968 1624784 5747376 1625080 5747096 +1625080 5747096 1625024 5747040 1624784 5747376 1625128 5747144 +1624872 5746968 1624784 5747376 1625024 5747040 1624928 5746968 +1624632 5747488 1624784 5747376 1624872 5746968 1624384 5747352 +1624632 5747488 1624840 5747456 1624784 5747376 1624384 5747352 +1624784 5747376 1625024 5747040 1624872 5746968 1624384 5747352 +1624872 5746968 1624120 5747304 1624384 5747352 1624784 5747376 +1624840 5747456 1624888 5747480 1625128 5747144 1624784 5747376 +1624888 5747480 1625160 5747192 1625128 5747144 1624784 5747376 +1624888 5747480 1625192 5747288 1625160 5747192 1624784 5747376 +1625128 5747144 1625080 5747096 1624784 5747376 1625160 5747192 +1624840 5747456 1624888 5747480 1624784 5747376 1624632 5747488 +1624888 5747480 1625160 5747192 1624784 5747376 1624840 5747456 +1624872 5746968 1624760 5747328 1624784 5747376 1625024 5747040 +1624784 5747376 1625080 5747096 1625024 5747040 1624760 5747328 +1624760 5747328 1624384 5747352 1624784 5747376 1625080 5747096 +1625024 5747040 1624872 5746968 1624760 5747328 1625080 5747096 +1624872 5746968 1624384 5747352 1624760 5747328 1625024 5747040 +1624784 5747376 1625128 5747144 1625080 5747096 1624760 5747328 +1624872 5746968 1624760 5747328 1625024 5747040 1624928 5746968 +1624784 5747376 1624760 5747328 1624384 5747352 1624632 5747488 +1624784 5747376 1624760 5747328 1624632 5747488 1624840 5747456 +1624784 5747376 1625080 5747096 1624760 5747328 1624632 5747488 +1624760 5747328 1624872 5746968 1624384 5747352 1624632 5747488 +1624384 5747352 1624760 5747328 1624872 5746968 1624120 5747304 +1624760 5747328 1624744 5747272 1624384 5747352 1624632 5747488 +1624760 5747328 1624872 5746968 1624744 5747272 1624632 5747488 +1624872 5746968 1624744 5747272 1624760 5747328 1625024 5747040 +1624760 5747328 1625080 5747096 1625024 5747040 1624744 5747272 +1624760 5747328 1624784 5747376 1625080 5747096 1624744 5747272 +1624744 5747272 1624632 5747488 1624760 5747328 1625080 5747096 +1625024 5747040 1624872 5746968 1624744 5747272 1625080 5747096 +1624744 5747272 1624872 5746968 1624384 5747352 1624632 5747488 +1624872 5746968 1624384 5747352 1624744 5747272 1625024 5747040 +1624872 5746968 1624744 5747272 1625024 5747040 1624928 5746968 +1624760 5747328 1624744 5747272 1624632 5747488 1624784 5747376 +1624384 5747352 1624744 5747272 1624872 5746968 1624120 5747304 +1624744 5747272 1624760 5747168 1624384 5747352 1624632 5747488 +1624872 5746968 1624760 5747168 1624744 5747272 1625024 5747040 +1624744 5747272 1625080 5747096 1625024 5747040 1624760 5747168 +1624744 5747272 1624760 5747328 1625080 5747096 1624760 5747168 +1624760 5747328 1624784 5747376 1625080 5747096 1624760 5747168 +1625080 5747096 1625024 5747040 1624760 5747168 1624760 5747328 +1624760 5747168 1624384 5747352 1624744 5747272 1624760 5747328 +1625024 5747040 1624872 5746968 1624760 5747168 1625080 5747096 +1624872 5746968 1624384 5747352 1624760 5747168 1625024 5747040 +1624872 5746968 1624760 5747168 1625024 5747040 1624928 5746968 +1624384 5747352 1624760 5747168 1624872 5746968 1624120 5747304 +1624760 5747168 1624792 5747080 1624384 5747352 1624744 5747272 +1624872 5746968 1624792 5747080 1624760 5747168 1625024 5747040 +1624760 5747168 1625080 5747096 1625024 5747040 1624792 5747080 +1624792 5747080 1624384 5747352 1624760 5747168 1625024 5747040 +1624872 5746968 1624384 5747352 1624792 5747080 1625024 5747040 +1624872 5746968 1624792 5747080 1625024 5747040 1624928 5746968 +1624792 5747080 1624760 5747168 1625024 5747040 1624928 5746968 +1624872 5746968 1624384 5747352 1624792 5747080 1624928 5746968 +1624384 5747352 1624792 5747080 1624872 5746968 1624120 5747304 +1624872 5746968 1624568 5746120 1624120 5747304 1624792 5747080 +1624384 5747352 1624760 5747168 1624792 5747080 1624120 5747304 +1624792 5747080 1624928 5746968 1624872 5746968 1624568 5746120 +1624872 5746968 1624864 5746312 1624568 5746120 1624792 5747080 +1624120 5747304 1624384 5747352 1624792 5747080 1624568 5746120 +1624568 5746120 1623952 5747280 1624120 5747304 1624792 5747080 +1624792 5747080 1624824 5747008 1624568 5746120 1624120 5747304 +1624792 5747080 1624872 5746968 1624824 5747008 1624120 5747304 +1624872 5746968 1624824 5747008 1624792 5747080 1624928 5746968 +1624824 5747008 1624120 5747304 1624792 5747080 1624928 5746968 +1624824 5747008 1624872 5746968 1624568 5746120 1624120 5747304 +1624872 5746968 1624568 5746120 1624824 5747008 1624928 5746968 +1624792 5747080 1625024 5747040 1624928 5746968 1624824 5747008 +1624792 5747080 1624760 5747168 1625024 5747040 1624824 5747008 +1624792 5747080 1625024 5747040 1624824 5747008 1624120 5747304 +1624928 5746968 1624872 5746968 1624824 5747008 1625024 5747040 +1624568 5746120 1624824 5747008 1624872 5746968 1624864 5746312 +1624568 5746120 1624120 5747304 1624824 5747008 1624864 5746312 +1624824 5747008 1624928 5746968 1624872 5746968 1624864 5746312 +1624568 5746120 1624824 5747008 1624864 5746312 1624848 5746288 +1624872 5746968 1624984 5746440 1624864 5746312 1624824 5747008 +1624792 5747080 1624824 5747008 1624120 5747304 1624384 5747352 +1624568 5746120 1623952 5747280 1624120 5747304 1624824 5747008 +1623752 5745744 1623176 5746616 1623040 5747128 1623624 5747256 +1623176 5746616 1622736 5745784 1623040 5747128 1623624 5747256 +1623752 5745744 1622736 5745784 1623176 5746616 1623624 5747256 +1623040 5747128 1623176 5746616 1622736 5745784 1622760 5746984 +1623040 5747128 1623624 5747256 1623176 5746616 1622760 5746984 +1623176 5746616 1623752 5745744 1622736 5745784 1622760 5746984 +1622736 5745784 1622520 5746024 1622760 5746984 1623176 5746616 +1622736 5745784 1622520 5746024 1623176 5746616 1623752 5745744 +1622520 5746024 1622528 5746824 1622760 5746984 1623176 5746616 +1622520 5746024 1622456 5746736 1622528 5746824 1623176 5746616 +1622520 5746024 1622448 5746048 1622456 5746736 1623176 5746616 +1622528 5746824 1622760 5746984 1623176 5746616 1622456 5746736 +1622736 5745784 1622616 5745824 1622520 5746024 1623176 5746616 +1622520 5746024 1622456 5746736 1623176 5746616 1622736 5745784 +1622760 5746984 1623040 5747128 1623176 5746616 1622528 5746824 +1623752 5745744 1623176 5746616 1623624 5747256 1624088 5745888 +1623752 5745744 1622736 5745784 1623176 5746616 1624088 5745888 +1623176 5746616 1623040 5747128 1623624 5747256 1624088 5745888 +1623624 5747256 1623952 5747280 1624088 5745888 1623176 5746616 +1623624 5747256 1623952 5747280 1623176 5746616 1623040 5747128 +1623952 5747280 1624568 5746120 1624088 5745888 1623176 5746616 +1624088 5745888 1623752 5745744 1623176 5746616 1623952 5747280 +1622736 5745784 1623176 5746616 1623752 5745744 1623712 5745712 +1622736 5745784 1622520 5746024 1623176 5746616 1623712 5745712 +1623176 5746616 1624088 5745888 1623752 5745744 1623712 5745712 +1622736 5745784 1623176 5746616 1623712 5745712 1622768 5745744 +1622736 5745784 1622520 5746024 1623176 5746616 1622768 5745744 +1623712 5745712 1623120 5745440 1622768 5745744 1623176 5746616 +1623176 5746616 1623752 5745744 1623712 5745712 1622768 5745744 +1623952 5747280 1623248 5746632 1623176 5746616 1623624 5747256 +1623248 5746632 1624088 5745888 1623176 5746616 1623624 5747256 +1623952 5747280 1624088 5745888 1623248 5746632 1623624 5747256 +1623176 5746616 1623040 5747128 1623624 5747256 1623248 5746632 +1623176 5746616 1622760 5746984 1623040 5747128 1623248 5746632 +1623176 5746616 1623040 5747128 1623248 5746632 1624088 5745888 +1623624 5747256 1623952 5747280 1623248 5746632 1623040 5747128 +1624088 5745888 1623248 5746632 1623952 5747280 1624568 5746120 +1623176 5746616 1623248 5746632 1624088 5745888 1623752 5745744 +1623176 5746616 1623040 5747128 1623248 5746632 1623752 5745744 +1623176 5746616 1623248 5746632 1623752 5745744 1623712 5745712 +1623176 5746616 1623040 5747128 1623248 5746632 1623712 5745712 +1623248 5746632 1623952 5747280 1624088 5745888 1623752 5745744 +1623248 5746632 1624088 5745888 1623752 5745744 1623712 5745712 +1623176 5746616 1623248 5746632 1623712 5745712 1622768 5745744 +1623248 5746632 1623352 5746592 1624088 5745888 1623752 5745744 +1623248 5746632 1623952 5747280 1623352 5746592 1623752 5745744 +1623952 5747280 1623352 5746592 1623248 5746632 1623624 5747256 +1623352 5746592 1623752 5745744 1623248 5746632 1623624 5747256 +1623352 5746592 1623952 5747280 1624088 5745888 1623752 5745744 +1623952 5747280 1624088 5745888 1623352 5746592 1623624 5747256 +1623248 5746632 1623040 5747128 1623624 5747256 1623352 5746592 +1624088 5745888 1623352 5746592 1623952 5747280 1624568 5746120 +1624088 5745888 1623752 5745744 1623352 5746592 1624568 5746120 +1623352 5746592 1623624 5747256 1623952 5747280 1624568 5746120 +1623248 5746632 1623352 5746592 1623752 5745744 1623712 5745712 +1623248 5746632 1623352 5746592 1623712 5745712 1623176 5746616 +1623352 5746592 1624088 5745888 1623752 5745744 1623712 5745712 +1623248 5746632 1623624 5747256 1623352 5746592 1623176 5746616 +1623352 5746592 1623752 5745744 1623712 5745712 1623176 5746616 +1623712 5745712 1622768 5745744 1623176 5746616 1623352 5746592 +1623176 5746616 1623248 5746632 1623352 5746592 1622768 5745744 +1622768 5745744 1622736 5745784 1623176 5746616 1623352 5746592 +1623712 5745712 1623120 5745440 1622768 5745744 1623352 5746592 +1623712 5745712 1622768 5745744 1623352 5746592 1623752 5745744 +1623952 5747280 1624120 5747304 1624568 5746120 1623352 5746592 +1623352 5746592 1623416 5746528 1623752 5745744 1623712 5745712 +1624088 5745888 1623416 5746528 1623352 5746592 1624568 5746120 +1623352 5746592 1624568 5746120 1623416 5746528 1623712 5745712 +1623416 5746528 1624088 5745888 1623752 5745744 1623712 5745712 +1624088 5745888 1623752 5745744 1623416 5746528 1624568 5746120 +1623352 5746592 1623952 5747280 1624568 5746120 1623416 5746528 +1624568 5746120 1624088 5745888 1623416 5746528 1623952 5747280 +1623352 5746592 1623952 5747280 1623416 5746528 1623712 5745712 +1623352 5746592 1623624 5747256 1623952 5747280 1623416 5746528 +1623352 5746592 1623248 5746632 1623624 5747256 1623416 5746528 +1623352 5746592 1623624 5747256 1623416 5746528 1623712 5745712 +1623952 5747280 1624568 5746120 1623416 5746528 1623624 5747256 +1623352 5746592 1623416 5746528 1623712 5745712 1622768 5745744 +1623416 5746528 1623752 5745744 1623712 5745712 1622768 5745744 +1623352 5746592 1623624 5747256 1623416 5746528 1622768 5745744 +1623712 5745712 1623120 5745440 1622768 5745744 1623416 5746528 +1623352 5746592 1623416 5746528 1622768 5745744 1623176 5746616 +1623352 5746592 1623416 5746528 1623176 5746616 1623248 5746632 +1623352 5746592 1623624 5747256 1623416 5746528 1623176 5746616 +1622768 5745744 1622736 5745784 1623176 5746616 1623416 5746528 +1622736 5745784 1622520 5746024 1623176 5746616 1623416 5746528 +1623416 5746528 1623712 5745712 1622768 5745744 1622736 5745784 +1623176 5746616 1623352 5746592 1623416 5746528 1622736 5745784 +1623952 5747280 1624120 5747304 1624568 5746120 1623416 5746528 +1623416 5746528 1623472 5746464 1623752 5745744 1623712 5745712 +1623472 5746464 1624088 5745888 1623752 5745744 1623712 5745712 +1623416 5746528 1623472 5746464 1623712 5745712 1622768 5745744 +1623472 5746464 1623752 5745744 1623712 5745712 1622768 5745744 +1623416 5746528 1624088 5745888 1623472 5746464 1622768 5745744 +1624088 5745888 1623472 5746464 1623416 5746528 1624568 5746120 +1624088 5745888 1623752 5745744 1623472 5746464 1624568 5746120 +1623416 5746528 1623952 5747280 1624568 5746120 1623472 5746464 +1623472 5746464 1622768 5745744 1623416 5746528 1623952 5747280 +1624568 5746120 1624088 5745888 1623472 5746464 1623952 5747280 +1623712 5745712 1623120 5745440 1622768 5745744 1623472 5746464 +1623416 5746528 1623624 5747256 1623952 5747280 1623472 5746464 +1623952 5747280 1624568 5746120 1623472 5746464 1623624 5747256 +1623416 5746528 1623352 5746592 1623624 5747256 1623472 5746464 +1623416 5746528 1623624 5747256 1623472 5746464 1622768 5745744 +1623416 5746528 1623472 5746464 1622768 5745744 1622736 5745784 +1623472 5746464 1623712 5745712 1622768 5745744 1622736 5745784 +1623416 5746528 1623624 5747256 1623472 5746464 1622736 5745784 +1623416 5746528 1623472 5746464 1622736 5745784 1623176 5746616 +1622736 5745784 1622520 5746024 1623176 5746616 1623472 5746464 +1623416 5746528 1623624 5747256 1623472 5746464 1623176 5746616 +1623472 5746464 1622768 5745744 1622736 5745784 1623176 5746616 +1623416 5746528 1623472 5746464 1623176 5746616 1623352 5746592 +1623952 5747280 1624120 5747304 1624568 5746120 1623472 5746464 +1623472 5746464 1623656 5746368 1624088 5745888 1623752 5745744 +1623472 5746464 1623656 5746368 1623752 5745744 1623712 5745712 +1623472 5746464 1624568 5746120 1623656 5746368 1623712 5745712 +1623656 5746368 1624088 5745888 1623752 5745744 1623712 5745712 +1623656 5746368 1624568 5746120 1624088 5745888 1623752 5745744 +1623472 5746464 1623656 5746368 1623712 5745712 1622768 5745744 +1624568 5746120 1623656 5746368 1623472 5746464 1623952 5747280 +1623656 5746368 1623712 5745712 1623472 5746464 1623952 5747280 +1624568 5746120 1624088 5745888 1623656 5746368 1623952 5747280 +1623472 5746464 1623624 5747256 1623952 5747280 1623656 5746368 +1623472 5746464 1623624 5747256 1623656 5746368 1623712 5745712 +1623952 5747280 1624568 5746120 1623656 5746368 1623624 5747256 +1623472 5746464 1623416 5746528 1623624 5747256 1623656 5746368 +1623472 5746464 1623416 5746528 1623656 5746368 1623712 5745712 +1623624 5747256 1623952 5747280 1623656 5746368 1623416 5746528 +1623416 5746528 1623352 5746592 1623624 5747256 1623656 5746368 +1624568 5746120 1623656 5746368 1623952 5747280 1624120 5747304 +1624568 5746120 1624088 5745888 1623656 5746368 1624120 5747304 +1623656 5746368 1623624 5747256 1623952 5747280 1624120 5747304 +1624568 5746120 1623656 5746368 1624120 5747304 1624824 5747008 +1623656 5746368 1623696 5746320 1623752 5745744 1623712 5745712 +1623656 5746368 1623696 5746320 1623712 5745712 1623472 5746464 +1623696 5746320 1623752 5745744 1623712 5745712 1623472 5746464 +1624088 5745888 1623696 5746320 1623656 5746368 1624568 5746120 +1623656 5746368 1624568 5746120 1623696 5746320 1623472 5746464 +1623656 5746368 1624120 5747304 1624568 5746120 1623696 5746320 +1624568 5746120 1624088 5745888 1623696 5746320 1624120 5747304 +1623656 5746368 1624120 5747304 1623696 5746320 1623472 5746464 +1623696 5746320 1624088 5745888 1623752 5745744 1623712 5745712 +1624088 5745888 1623752 5745744 1623696 5746320 1624568 5746120 +1623712 5745712 1622768 5745744 1623472 5746464 1623696 5746320 +1623656 5746368 1623952 5747280 1624120 5747304 1623696 5746320 +1624120 5747304 1624824 5747008 1624568 5746120 1623696 5746320 +1623696 5746320 1623728 5746320 1624568 5746120 1624088 5745888 +1624120 5747304 1623728 5746320 1623696 5746320 1623656 5746368 +1623696 5746320 1623656 5746368 1623728 5746320 1624088 5745888 +1623696 5746320 1623728 5746320 1624088 5745888 1623752 5745744 +1623728 5746320 1624568 5746120 1624088 5745888 1623752 5745744 +1623696 5746320 1623728 5746320 1623752 5745744 1623712 5745712 +1623696 5746320 1623656 5746368 1623728 5746320 1623752 5745744 +1623728 5746320 1624120 5747304 1624568 5746120 1624088 5745888 +1624120 5747304 1624568 5746120 1623728 5746320 1623656 5746368 +1624120 5747304 1623728 5746320 1623656 5746368 1623952 5747280 +1623728 5746320 1623696 5746320 1623656 5746368 1623952 5747280 +1624120 5747304 1624568 5746120 1623728 5746320 1623952 5747280 +1623656 5746368 1623624 5747256 1623952 5747280 1623728 5746320 +1624568 5746120 1623728 5746320 1624120 5747304 1624824 5747008 +1624088 5745888 1623768 5746176 1623728 5746320 1624568 5746120 +1623728 5746320 1623768 5746176 1623752 5745744 1623696 5746320 +1623752 5745744 1623712 5745712 1623696 5746320 1623768 5746176 +1623712 5745712 1623472 5746464 1623696 5746320 1623768 5746176 +1623472 5746464 1623656 5746368 1623696 5746320 1623768 5746176 +1623712 5745712 1623472 5746464 1623768 5746176 1623752 5745744 +1623696 5746320 1623728 5746320 1623768 5746176 1623472 5746464 +1623728 5746320 1624120 5747304 1624568 5746120 1623768 5746176 +1623768 5746176 1623696 5746320 1623728 5746320 1624568 5746120 +1623768 5746176 1624088 5745888 1623752 5745744 1623712 5745712 +1624088 5745888 1623752 5745744 1623768 5746176 1624568 5746120 +1623712 5745712 1622768 5745744 1623472 5746464 1623768 5746176 +1623768 5746176 1623744 5746096 1623472 5746464 1623696 5746320 +1623472 5746464 1623656 5746368 1623696 5746320 1623744 5746096 +1623696 5746320 1623768 5746176 1623744 5746096 1623656 5746368 +1623712 5745712 1623744 5746096 1623768 5746176 1623752 5745744 +1623768 5746176 1623744 5746096 1623696 5746320 1623728 5746320 +1623768 5746176 1624088 5745888 1623752 5745744 1623744 5746096 +1623752 5745744 1623712 5745712 1623744 5746096 1624088 5745888 +1623768 5746176 1624088 5745888 1623744 5746096 1623696 5746320 +1623768 5746176 1624568 5746120 1624088 5745888 1623744 5746096 +1623744 5746096 1623712 5745712 1623472 5746464 1623656 5746368 +1623712 5745712 1623472 5746464 1623744 5746096 1623752 5745744 +1623472 5746464 1623744 5746096 1623712 5745712 1622768 5745744 +1623472 5746464 1623656 5746368 1623744 5746096 1622768 5745744 +1623744 5746096 1623752 5745744 1623712 5745712 1622768 5745744 +1623472 5746464 1623744 5746096 1622768 5745744 1622736 5745784 +1623712 5745712 1623120 5745440 1622768 5745744 1623744 5746096 +1623744 5746096 1623784 5746016 1623752 5745744 1623712 5745712 +1624088 5745888 1623784 5746016 1623744 5746096 1623768 5746176 +1624088 5745888 1623784 5746016 1623768 5746176 1624568 5746120 +1623744 5746096 1623768 5746176 1623784 5746016 1623712 5745712 +1623744 5746096 1623784 5746016 1623712 5745712 1622768 5745744 +1623784 5746016 1624088 5745888 1623752 5745744 1623712 5745712 +1624088 5745888 1623752 5745744 1623784 5746016 1623768 5746176 +1623784 5746016 1623824 5745984 1623752 5745744 1623712 5745712 +1624088 5745888 1623824 5745984 1623784 5746016 1623768 5746176 +1623784 5746016 1623744 5746096 1623768 5746176 1623824 5745984 +1624088 5745888 1623824 5745984 1623768 5746176 1624568 5746120 +1623824 5745984 1623752 5745744 1623784 5746016 1623768 5746176 +1624088 5745888 1623752 5745744 1623824 5745984 1623768 5746176 +1624088 5745888 1623936 5745984 1623768 5746176 1624568 5746120 +1623768 5746176 1623728 5746320 1624568 5746120 1623936 5745984 +1623728 5746320 1624120 5747304 1624568 5746120 1623936 5745984 +1624568 5746120 1624088 5745888 1623936 5745984 1623728 5746320 +1623768 5746176 1623936 5745984 1623824 5745984 1623784 5746016 +1623768 5746176 1623936 5745984 1623784 5746016 1623744 5746096 +1623936 5745984 1624088 5745888 1623824 5745984 1623784 5746016 +1623824 5745984 1623936 5745984 1624088 5745888 1623752 5745744 +1623824 5745984 1623936 5745984 1623752 5745744 1623784 5746016 +1623824 5745984 1623784 5746016 1623936 5745984 1623752 5745744 +1624088 5745888 1623752 5745744 1623936 5745984 1624568 5746120 +1623936 5745984 1623784 5746016 1623768 5746176 1623728 5746320 +1623728 5746320 1624048 5746120 1623936 5745984 1623768 5746176 +1624568 5746120 1624048 5746120 1623728 5746320 1624120 5747304 +1623728 5746320 1623952 5747280 1624120 5747304 1624048 5746120 +1623936 5745984 1624048 5746120 1624568 5746120 1624088 5745888 +1623936 5745984 1624048 5746120 1624088 5745888 1623752 5745744 +1624048 5746120 1624088 5745888 1623936 5745984 1623768 5746176 +1623936 5745984 1623784 5746016 1623768 5746176 1624048 5746120 +1624568 5746120 1624088 5745888 1624048 5746120 1624120 5747304 +1623728 5746320 1624120 5747304 1624048 5746120 1623768 5746176 +1624568 5746120 1624048 5746120 1624120 5747304 1624824 5747008 +1624120 5747304 1624792 5747080 1624824 5747008 1624048 5746120 +1624048 5746120 1623728 5746320 1624120 5747304 1624824 5747008 +1624568 5746120 1624048 5746120 1624824 5747008 1624864 5746312 +1624568 5746120 1624088 5745888 1624048 5746120 1624824 5747008 +1624824 5747008 1624096 5746264 1624120 5747304 1624792 5747080 +1624120 5747304 1624096 5746264 1624048 5746120 1623728 5746320 +1624120 5747304 1624096 5746264 1623728 5746320 1623952 5747280 +1624096 5746264 1624048 5746120 1623728 5746320 1623952 5747280 +1624120 5747304 1624824 5747008 1624096 5746264 1623952 5747280 +1624096 5746264 1624824 5747008 1624048 5746120 1623728 5746320 +1624048 5746120 1623768 5746176 1623728 5746320 1624096 5746264 +1624048 5746120 1623936 5745984 1623768 5746176 1624096 5746264 +1623728 5746320 1623952 5747280 1624096 5746264 1623768 5746176 +1624048 5746120 1623768 5746176 1624096 5746264 1624824 5747008 +1623728 5746320 1623656 5746368 1623952 5747280 1624096 5746264 +1624048 5746120 1624096 5746264 1624824 5747008 1624568 5746120 +1624824 5747008 1624864 5746312 1624568 5746120 1624096 5746264 +1624048 5746120 1624096 5746264 1624568 5746120 1624088 5745888 +1624048 5746120 1623768 5746176 1624096 5746264 1624568 5746120 +1624096 5746264 1624120 5747304 1624824 5747008 1624864 5746312 +1624864 5746312 1624848 5746288 1624568 5746120 1624096 5746264 +1624824 5747008 1624872 5746968 1624864 5746312 1624096 5746264 +1624568 5746120 1624048 5746120 1624096 5746264 1624864 5746312 +1623952 5747280 1624096 5746344 1624096 5746264 1623728 5746320 +1624096 5746264 1623768 5746176 1623728 5746320 1624096 5746344 +1624096 5746344 1624120 5747304 1624096 5746264 1623728 5746320 +1624096 5746264 1624096 5746344 1624120 5747304 1624824 5747008 +1624120 5747304 1624792 5747080 1624824 5747008 1624096 5746344 +1624096 5746264 1623728 5746320 1624096 5746344 1624824 5747008 +1624096 5746344 1623952 5747280 1624120 5747304 1624824 5747008 +1624096 5746264 1624096 5746344 1624824 5747008 1624864 5746312 +1624096 5746264 1624096 5746344 1624864 5746312 1624568 5746120 +1624096 5746264 1623728 5746320 1624096 5746344 1624568 5746120 +1624096 5746344 1624120 5747304 1624824 5747008 1624864 5746312 +1624096 5746344 1624824 5747008 1624864 5746312 1624568 5746120 +1623952 5747280 1624120 5747304 1624096 5746344 1623728 5746320 +1624864 5746312 1624848 5746288 1624568 5746120 1624096 5746344 +1624824 5747008 1624872 5746968 1624864 5746312 1624096 5746344 +1623952 5747280 1624096 5746344 1623728 5746320 1623656 5746368 +1623728 5746320 1623696 5746320 1623656 5746368 1624096 5746344 +1624096 5746344 1624096 5746264 1623728 5746320 1623656 5746368 +1623952 5747280 1624096 5746344 1623656 5746368 1623624 5747256 +1623952 5747280 1624120 5747304 1624096 5746344 1623656 5746368 +1624096 5746264 1624096 5746344 1624568 5746120 1624048 5746120 +1623952 5747280 1624000 5746512 1623656 5746368 1623624 5747256 +1623656 5746368 1623416 5746528 1623624 5747256 1624000 5746512 +1623416 5746528 1623352 5746592 1623624 5747256 1624000 5746512 +1623624 5747256 1623952 5747280 1624000 5746512 1623416 5746528 +1623656 5746368 1623472 5746464 1623416 5746528 1624000 5746512 +1623416 5746528 1623624 5747256 1624000 5746512 1623472 5746464 +1624096 5746344 1624000 5746512 1623952 5747280 1624120 5747304 +1624096 5746344 1624000 5746512 1624120 5747304 1624824 5747008 +1624120 5747304 1624792 5747080 1624824 5747008 1624000 5746512 +1624096 5746344 1624000 5746512 1624824 5747008 1624864 5746312 +1624824 5747008 1624096 5746344 1624000 5746512 1624792 5747080 +1624096 5746344 1623656 5746368 1624000 5746512 1624824 5747008 +1624000 5746512 1623952 5747280 1624120 5747304 1624792 5747080 +1623952 5747280 1624120 5747304 1624000 5746512 1623624 5747256 +1624000 5746512 1624096 5746344 1623656 5746368 1623472 5746464 +1624120 5747304 1624384 5747352 1624792 5747080 1624000 5746512 +1624792 5747080 1624824 5747008 1624000 5746512 1624384 5747352 +1624384 5747352 1624760 5747168 1624792 5747080 1624000 5746512 +1624120 5747304 1624384 5747352 1624000 5746512 1623952 5747280 +1623656 5746368 1624000 5746512 1624096 5746344 1623728 5746320 +1623656 5746368 1624000 5746512 1623728 5746320 1623696 5746320 +1624096 5746344 1624096 5746264 1623728 5746320 1624000 5746512 +1624000 5746512 1624824 5747008 1624096 5746344 1623728 5746320 +1623656 5746368 1623472 5746464 1624000 5746512 1623728 5746320 +1624120 5747304 1624008 5746552 1624000 5746512 1623952 5747280 +1624000 5746512 1623624 5747256 1623952 5747280 1624008 5746552 +1624000 5746512 1623416 5746528 1623624 5747256 1624008 5746552 +1624000 5746512 1623472 5746464 1623416 5746528 1624008 5746552 +1623416 5746528 1623352 5746592 1623624 5747256 1624008 5746552 +1623416 5746528 1623624 5747256 1624008 5746552 1623472 5746464 +1624000 5746512 1623656 5746368 1623472 5746464 1624008 5746552 +1623472 5746464 1623416 5746528 1624008 5746552 1623656 5746368 +1623952 5747280 1624120 5747304 1624008 5746552 1623624 5747256 +1623624 5747256 1623952 5747280 1624008 5746552 1623416 5746528 +1624008 5746552 1624384 5747352 1624000 5746512 1623656 5746368 +1624000 5746512 1623728 5746320 1623656 5746368 1624008 5746552 +1624120 5747304 1624384 5747352 1624008 5746552 1623952 5747280 +1624000 5746512 1624008 5746552 1624384 5747352 1624792 5747080 +1624000 5746512 1624008 5746552 1624792 5747080 1624824 5747008 +1624384 5747352 1624760 5747168 1624792 5747080 1624008 5746552 +1624000 5746512 1624008 5746552 1624824 5747008 1624096 5746344 +1624008 5746552 1624792 5747080 1624824 5747008 1624096 5746344 +1624824 5747008 1624864 5746312 1624096 5746344 1624008 5746552 +1624824 5747008 1624864 5746312 1624008 5746552 1624792 5747080 +1624096 5746344 1624000 5746512 1624008 5746552 1624864 5746312 +1624864 5746312 1624568 5746120 1624096 5746344 1624008 5746552 +1624000 5746512 1623656 5746368 1624008 5746552 1624096 5746344 +1624008 5746552 1624120 5747304 1624384 5747352 1624792 5747080 +1624824 5747008 1624872 5746968 1624864 5746312 1624008 5746552 +1624008 5746552 1624384 5747352 1624792 5747080 1624824 5747008 +1624792 5747080 1624080 5746664 1624384 5747352 1624760 5747168 +1624384 5747352 1624080 5746664 1624008 5746552 1624120 5747304 +1624080 5746664 1624792 5747080 1624008 5746552 1624120 5747304 +1624008 5746552 1623952 5747280 1624120 5747304 1624080 5746664 +1624008 5746552 1623624 5747256 1623952 5747280 1624080 5746664 +1624008 5746552 1623416 5746528 1623624 5747256 1624080 5746664 +1623416 5746528 1623352 5746592 1623624 5747256 1624080 5746664 +1624008 5746552 1623472 5746464 1623416 5746528 1624080 5746664 +1623624 5747256 1623952 5747280 1624080 5746664 1623416 5746528 +1624120 5747304 1624384 5747352 1624080 5746664 1623952 5747280 +1624008 5746552 1623416 5746528 1624080 5746664 1624792 5747080 +1623952 5747280 1624120 5747304 1624080 5746664 1623624 5747256 +1624384 5747352 1624792 5747080 1624080 5746664 1624120 5747304 +1624008 5746552 1624080 5746664 1624792 5747080 1624824 5747008 +1624008 5746552 1624080 5746664 1624824 5747008 1624864 5746312 +1624008 5746552 1624080 5746664 1624864 5746312 1624096 5746344 +1624080 5746664 1624824 5747008 1624864 5746312 1624096 5746344 +1624008 5746552 1624080 5746664 1624096 5746344 1624000 5746512 +1624864 5746312 1624568 5746120 1624096 5746344 1624080 5746664 +1624864 5746312 1624568 5746120 1624080 5746664 1624824 5747008 +1624568 5746120 1624096 5746264 1624096 5746344 1624080 5746664 +1624096 5746344 1624008 5746552 1624080 5746664 1624568 5746120 +1624008 5746552 1623416 5746528 1624080 5746664 1624096 5746344 +1624080 5746664 1624384 5747352 1624792 5747080 1624824 5747008 +1624864 5746312 1624848 5746288 1624568 5746120 1624080 5746664 +1624824 5747008 1624872 5746968 1624864 5746312 1624080 5746664 +1624080 5746664 1624792 5747080 1624824 5747008 1624864 5746312 +1624792 5747080 1624200 5746792 1624384 5747352 1624760 5747168 +1624384 5747352 1624744 5747272 1624760 5747168 1624200 5746792 +1624080 5746664 1624200 5746792 1624792 5747080 1624824 5747008 +1624080 5746664 1624384 5747352 1624200 5746792 1624824 5747008 +1624384 5747352 1624200 5746792 1624080 5746664 1624120 5747304 +1624080 5746664 1623952 5747280 1624120 5747304 1624200 5746792 +1624080 5746664 1623624 5747256 1623952 5747280 1624200 5746792 +1624200 5746792 1624824 5747008 1624080 5746664 1623952 5747280 +1624120 5747304 1624384 5747352 1624200 5746792 1623952 5747280 +1624792 5747080 1624824 5747008 1624200 5746792 1624760 5747168 +1624200 5746792 1624120 5747304 1624384 5747352 1624760 5747168 +1624080 5746664 1624200 5746792 1624824 5747008 1624864 5746312 +1624080 5746664 1624200 5746792 1624864 5746312 1624568 5746120 +1624080 5746664 1624200 5746792 1624568 5746120 1624096 5746344 +1624200 5746792 1624864 5746312 1624568 5746120 1624096 5746344 +1624568 5746120 1624096 5746264 1624096 5746344 1624200 5746792 +1624080 5746664 1624200 5746792 1624096 5746344 1624008 5746552 +1624200 5746792 1624792 5747080 1624824 5747008 1624864 5746312 +1624080 5746664 1623952 5747280 1624200 5746792 1624096 5746344 +1624864 5746312 1624848 5746288 1624568 5746120 1624200 5746792 +1624568 5746120 1624096 5746344 1624200 5746792 1624848 5746288 +1624824 5747008 1624872 5746968 1624864 5746312 1624200 5746792 +1624824 5747008 1624872 5746968 1624200 5746792 1624792 5747080 +1624872 5746968 1624984 5746440 1624864 5746312 1624200 5746792 +1624200 5746792 1624872 5746968 1624864 5746312 1624848 5746288 +1624760 5747168 1624232 5746832 1624384 5747352 1624744 5747272 +1624200 5746792 1624232 5746832 1624760 5747168 1624792 5747080 +1624232 5746832 1624384 5747352 1624760 5747168 1624792 5747080 +1624200 5746792 1624232 5746832 1624792 5747080 1624824 5747008 +1624232 5746832 1624760 5747168 1624792 5747080 1624824 5747008 +1624200 5746792 1624232 5746832 1624824 5747008 1624872 5746968 +1624200 5746792 1624232 5746832 1624872 5746968 1624864 5746312 +1624232 5746832 1624824 5747008 1624872 5746968 1624864 5746312 +1624872 5746968 1624984 5746440 1624864 5746312 1624232 5746832 +1624232 5746832 1624792 5747080 1624824 5747008 1624872 5746968 +1624200 5746792 1624384 5747352 1624232 5746832 1624864 5746312 +1624384 5747352 1624232 5746832 1624200 5746792 1624120 5747304 +1624200 5746792 1623952 5747280 1624120 5747304 1624232 5746832 +1624200 5746792 1624080 5746664 1623952 5747280 1624232 5746832 +1624384 5747352 1624760 5747168 1624232 5746832 1624120 5747304 +1624232 5746832 1624864 5746312 1624200 5746792 1623952 5747280 +1624120 5747304 1624384 5747352 1624232 5746832 1623952 5747280 +1624200 5746792 1624232 5746832 1624864 5746312 1624848 5746288 +1623952 5747280 1624192 5746912 1624232 5746832 1624200 5746792 +1623952 5747280 1624120 5747304 1624192 5746912 1624200 5746792 +1623952 5747280 1624192 5746912 1624200 5746792 1624080 5746664 +1623952 5747280 1624120 5747304 1624192 5746912 1624080 5746664 +1623952 5747280 1624192 5746912 1624080 5746664 1623624 5747256 +1624192 5746912 1624232 5746832 1624200 5746792 1624080 5746664 +1624192 5746912 1624120 5747304 1624232 5746832 1624200 5746792 +1624232 5746832 1624192 5746912 1624120 5747304 1624384 5747352 +1624232 5746832 1624200 5746792 1624192 5746912 1624384 5747352 +1624232 5746832 1624192 5746912 1624384 5747352 1624760 5747168 +1624384 5747352 1624744 5747272 1624760 5747168 1624192 5746912 +1624232 5746832 1624192 5746912 1624760 5747168 1624792 5747080 +1624232 5746832 1624192 5746912 1624792 5747080 1624824 5747008 +1624232 5746832 1624200 5746792 1624192 5746912 1624792 5747080 +1624192 5746912 1624384 5747352 1624760 5747168 1624792 5747080 +1624192 5746912 1623952 5747280 1624120 5747304 1624384 5747352 +1624192 5746912 1624120 5747304 1624384 5747352 1624760 5747168 +1623952 5747280 1624184 5746944 1624192 5746912 1624080 5746664 +1623952 5747280 1624120 5747304 1624184 5746944 1624080 5746664 +1624192 5746912 1624200 5746792 1624080 5746664 1624184 5746944 +1623952 5747280 1624184 5746944 1624080 5746664 1623624 5747256 +1624184 5746944 1624192 5746912 1624080 5746664 1623624 5747256 +1623952 5747280 1624120 5747304 1624184 5746944 1623624 5747256 +1624080 5746664 1623416 5746528 1623624 5747256 1624184 5746944 +1624192 5746912 1624184 5746944 1624120 5747304 1624384 5747352 +1624184 5746944 1623952 5747280 1624120 5747304 1624384 5747352 +1624184 5746944 1624384 5747352 1624192 5746912 1624080 5746664 +1624192 5746912 1624184 5746944 1624384 5747352 1624760 5747168 +1624384 5747352 1624744 5747272 1624760 5747168 1624184 5746944 +1624192 5746912 1624184 5746944 1624760 5747168 1624792 5747080 +1624192 5746912 1624184 5746944 1624792 5747080 1624232 5746832 +1624792 5747080 1624824 5747008 1624232 5746832 1624184 5746944 +1624184 5746944 1624760 5747168 1624792 5747080 1624232 5746832 +1624184 5746944 1624120 5747304 1624384 5747352 1624760 5747168 +1624192 5746912 1624080 5746664 1624184 5746944 1624232 5746832 +1624184 5746944 1624384 5747352 1624760 5747168 1624792 5747080 +1624184 5746944 1624168 5746984 1624120 5747304 1624384 5747352 +1624184 5746944 1623952 5747280 1624168 5746984 1624384 5747352 +1623952 5747280 1624168 5746984 1624184 5746944 1623624 5747256 +1624168 5746984 1624384 5747352 1624184 5746944 1623624 5747256 +1624168 5746984 1623952 5747280 1624120 5747304 1624384 5747352 +1623952 5747280 1624120 5747304 1624168 5746984 1623624 5747256 +1624184 5746944 1624080 5746664 1623624 5747256 1624168 5746984 +1624184 5746944 1624192 5746912 1624080 5746664 1624168 5746984 +1624184 5746944 1624080 5746664 1624168 5746984 1624384 5747352 +1623624 5747256 1623952 5747280 1624168 5746984 1624080 5746664 +1624080 5746664 1623416 5746528 1623624 5747256 1624168 5746984 +1624184 5746944 1624168 5746984 1624384 5747352 1624760 5747168 +1623624 5747256 1624120 5747024 1624168 5746984 1624080 5746664 +1624120 5747024 1623952 5747280 1624168 5746984 1624080 5746664 +1624168 5746984 1624120 5747024 1623952 5747280 1624120 5747304 +1624168 5746984 1624120 5747024 1624120 5747304 1624384 5747352 +1624168 5746984 1624080 5746664 1624120 5747024 1624120 5747304 +1624120 5747024 1623624 5747256 1623952 5747280 1624120 5747304 +1623624 5747256 1623952 5747280 1624120 5747024 1624080 5746664 +1623624 5747256 1624120 5747024 1624080 5746664 1623416 5746528 +1624168 5746984 1624184 5746944 1624080 5746664 1624120 5747024 +1624184 5746944 1624192 5746912 1624080 5746664 1624120 5747024 +1624080 5746664 1623624 5747256 1624120 5747024 1624192 5746912 +1624168 5746984 1624184 5746944 1624120 5747024 1624120 5747304 +1624192 5746912 1624200 5746792 1624080 5746664 1624120 5747024 +1624184 5746944 1624192 5746912 1624120 5747024 1624168 5746984 +1624080 5746664 1624032 5747040 1624120 5747024 1624192 5746912 +1624080 5746664 1623624 5747256 1624032 5747040 1624192 5746912 +1624120 5747024 1624184 5746944 1624192 5746912 1624032 5747040 +1624192 5746912 1624080 5746664 1624032 5747040 1624184 5746944 +1624032 5747040 1623624 5747256 1624120 5747024 1624184 5746944 +1624120 5747024 1624032 5747040 1623624 5747256 1623952 5747280 +1624120 5747024 1624032 5747040 1623952 5747280 1624120 5747304 +1624120 5747024 1624032 5747040 1624120 5747304 1624168 5746984 +1624120 5747024 1624184 5746944 1624032 5747040 1624120 5747304 +1624032 5747040 1623624 5747256 1623952 5747280 1624120 5747304 +1624032 5747040 1624080 5746664 1623624 5747256 1623952 5747280 +1623624 5747256 1624032 5747040 1624080 5746664 1623416 5746528 +1623624 5747256 1624032 5747040 1623416 5746528 1623352 5746592 +1623624 5747256 1624032 5747040 1623352 5746592 1623248 5746632 +1624032 5747040 1624192 5746912 1624080 5746664 1623416 5746528 +1623624 5747256 1623952 5747280 1624032 5747040 1623352 5746592 +1624032 5747040 1624080 5746664 1623416 5746528 1623352 5746592 +1624080 5746664 1624008 5746552 1623416 5746528 1624032 5747040 +1624008 5746552 1623472 5746464 1623416 5746528 1624032 5747040 +1624080 5746664 1624008 5746552 1624032 5747040 1624192 5746912 +1623416 5746528 1623352 5746592 1624032 5747040 1624008 5746552 +1624080 5746664 1624032 5747040 1624192 5746912 1624200 5746792 +1624120 5747024 1624168 5746984 1624184 5746944 1624032 5747040 +1623416 5746528 1623984 5747000 1624008 5746552 1623472 5746464 +1624032 5747040 1623984 5747000 1623416 5746528 1623352 5746592 +1624032 5747040 1623984 5747000 1623352 5746592 1623624 5747256 +1623352 5746592 1623248 5746632 1623624 5747256 1623984 5747000 +1624032 5747040 1624008 5746552 1623984 5747000 1623624 5747256 +1623984 5747000 1624008 5746552 1623416 5746528 1623352 5746592 +1624032 5747040 1623984 5747000 1623624 5747256 1623952 5747280 +1623984 5747000 1623352 5746592 1623624 5747256 1623952 5747280 +1624032 5747040 1624008 5746552 1623984 5747000 1623952 5747280 +1624032 5747040 1623984 5747000 1623952 5747280 1624120 5747304 +1623984 5747000 1623416 5746528 1623352 5746592 1623624 5747256 +1624008 5746552 1623984 5747000 1624032 5747040 1624080 5746664 +1623984 5747000 1623952 5747280 1624032 5747040 1624080 5746664 +1624032 5747040 1624192 5746912 1624080 5746664 1623984 5747000 +1624032 5747040 1624192 5746912 1623984 5747000 1623952 5747280 +1624008 5746552 1623416 5746528 1623984 5747000 1624080 5746664 +1624032 5747040 1624184 5746944 1624192 5746912 1623984 5747000 +1624032 5747040 1624184 5746944 1623984 5747000 1623952 5747280 +1624192 5746912 1624080 5746664 1623984 5747000 1624184 5746944 +1624032 5747040 1624120 5747024 1624184 5746944 1623984 5747000 +1624032 5747040 1624120 5747024 1623984 5747000 1623952 5747280 +1624184 5746944 1624192 5746912 1623984 5747000 1624120 5747024 +1624080 5746664 1624008 5746552 1623984 5747000 1624192 5746912 +1624192 5746912 1624200 5746792 1624080 5746664 1623984 5747000 +1624192 5746912 1624200 5746792 1623984 5747000 1624184 5746944 +1624080 5746664 1624008 5746552 1623984 5747000 1624200 5746792 +1624120 5747024 1624168 5746984 1624184 5746944 1623984 5747000 +1624192 5746912 1624232 5746832 1624200 5746792 1623984 5747000 +1623624 5747256 1623808 5746944 1623352 5746592 1623248 5746632 +1623984 5747000 1623808 5746944 1623624 5747256 1623952 5747280 +1623984 5747000 1623352 5746592 1623808 5746944 1623952 5747280 +1623808 5746944 1623352 5746592 1623624 5747256 1623952 5747280 +1623984 5747000 1623808 5746944 1623952 5747280 1624032 5747040 +1623352 5746592 1623808 5746944 1623984 5747000 1623416 5746528 +1623984 5747000 1624008 5746552 1623416 5746528 1623808 5746944 +1624008 5746552 1623472 5746464 1623416 5746528 1623808 5746944 +1624008 5746552 1623656 5746368 1623472 5746464 1623808 5746944 +1623472 5746464 1623416 5746528 1623808 5746944 1623656 5746368 +1624008 5746552 1623656 5746368 1623808 5746944 1623984 5747000 +1623808 5746944 1623952 5747280 1623984 5747000 1624008 5746552 +1623984 5747000 1624080 5746664 1624008 5746552 1623808 5746944 +1624008 5746552 1623656 5746368 1623808 5746944 1624080 5746664 +1623984 5747000 1624080 5746664 1623808 5746944 1623952 5747280 +1623352 5746592 1623624 5747256 1623808 5746944 1623416 5746528 +1624008 5746552 1624000 5746512 1623656 5746368 1623808 5746944 +1623416 5746528 1623352 5746592 1623808 5746944 1623472 5746464 +1623984 5747000 1624200 5746792 1624080 5746664 1623808 5746944 +1623624 5747256 1623712 5746976 1623352 5746592 1623248 5746632 +1623808 5746944 1623712 5746976 1623624 5747256 1623952 5747280 +1623808 5746944 1623712 5746976 1623952 5747280 1623984 5747000 +1623808 5746944 1623352 5746592 1623712 5746976 1623952 5747280 +1623352 5746592 1623712 5746976 1623808 5746944 1623416 5746528 +1623712 5746976 1623952 5747280 1623808 5746944 1623416 5746528 +1623624 5747256 1623952 5747280 1623712 5746976 1623248 5746632 +1623712 5746976 1623416 5746528 1623352 5746592 1623248 5746632 +1623624 5747256 1623712 5746976 1623248 5746632 1623040 5747128 +1623712 5746976 1623352 5746592 1623248 5746632 1623040 5747128 +1623624 5747256 1623952 5747280 1623712 5746976 1623040 5747128 +1623248 5746632 1623176 5746616 1623040 5747128 1623712 5746976 +1623808 5746944 1623472 5746464 1623416 5746528 1623712 5746976 +1623808 5746944 1623656 5746368 1623472 5746464 1623712 5746976 +1623808 5746944 1623472 5746464 1623712 5746976 1623952 5747280 +1623416 5746528 1623352 5746592 1623712 5746976 1623472 5746464 +1623712 5746976 1623592 5747096 1623624 5747256 1623952 5747280 +1623040 5747128 1623592 5747096 1623712 5746976 1623248 5746632 +1623712 5746976 1623352 5746592 1623248 5746632 1623592 5747096 +1623592 5747096 1623624 5747256 1623712 5746976 1623352 5746592 +1623712 5746976 1623416 5746528 1623352 5746592 1623592 5747096 +1623040 5747128 1623624 5747256 1623592 5747096 1623248 5746632 +1623040 5747128 1623592 5747096 1623248 5746632 1623176 5746616 +1623248 5746632 1623040 5747128 1623592 5747096 1623352 5746592 +1623592 5747096 1623296 5747032 1623040 5747128 1623624 5747256 +1623592 5747096 1623296 5747032 1623624 5747256 1623712 5746976 +1623592 5747096 1623248 5746632 1623296 5747032 1623624 5747256 +1623296 5747032 1623248 5746632 1623040 5747128 1623624 5747256 +1623040 5747128 1623296 5747032 1623248 5746632 1623176 5746616 +1623040 5747128 1623296 5747032 1623176 5746616 1622760 5746984 +1623040 5747128 1623624 5747256 1623296 5747032 1623176 5746616 +1623296 5747032 1623592 5747096 1623248 5746632 1623176 5746616 +1623248 5746632 1623296 5747032 1623592 5747096 1623352 5746592 +1623592 5747096 1623712 5746976 1623352 5746592 1623296 5747032 +1623712 5746976 1623416 5746528 1623352 5746592 1623296 5747032 +1623296 5747032 1623624 5747256 1623592 5747096 1623712 5746976 +1623248 5746632 1623176 5746616 1623296 5747032 1623352 5746592 +1623352 5746592 1623248 5746632 1623296 5747032 1623712 5746976 +1623176 5746616 1622976 5746904 1623040 5747128 1623296 5747032 +1623040 5747128 1623624 5747256 1623296 5747032 1622976 5746904 +1622976 5746904 1622760 5746984 1623040 5747128 1623296 5747032 +1623176 5746616 1622760 5746984 1622976 5746904 1623296 5747032 +1623176 5746616 1622976 5746904 1623296 5747032 1623248 5746632 +1622976 5746904 1623040 5747128 1623296 5747032 1623248 5746632 +1623296 5747032 1623352 5746592 1623248 5746632 1622976 5746904 +1623176 5746616 1622760 5746984 1622976 5746904 1623248 5746632 +1622760 5746984 1622976 5746904 1623176 5746616 1622528 5746824 +1622760 5746984 1623040 5747128 1622976 5746904 1622528 5746824 +1622976 5746904 1623248 5746632 1623176 5746616 1622528 5746824 +1623176 5746616 1622456 5746736 1622528 5746824 1622976 5746904 +1623176 5746616 1622784 5746792 1622976 5746904 1623248 5746632 +1622528 5746824 1622784 5746792 1623176 5746616 1622456 5746736 +1622528 5746824 1622976 5746904 1622784 5746792 1622456 5746736 +1622784 5746792 1622976 5746904 1623176 5746616 1622456 5746736 +1623176 5746616 1622520 5746024 1622456 5746736 1622784 5746792 +1623176 5746616 1622520 5746024 1622784 5746792 1622976 5746904 +1622520 5746024 1622448 5746048 1622456 5746736 1622784 5746792 +1622456 5746736 1622528 5746824 1622784 5746792 1622520 5746024 +1623176 5746616 1622736 5745784 1622520 5746024 1622784 5746792 +1622976 5746904 1622784 5746792 1622528 5746824 1622760 5746984 +1622976 5746904 1622784 5746792 1622760 5746984 1623040 5747128 +1622976 5746904 1623176 5746616 1622784 5746792 1622760 5746984 +1622784 5746792 1622456 5746736 1622528 5746824 1622760 5746984 +1622456 5746736 1622600 5746728 1622520 5746024 1622448 5746048 +1622456 5746736 1622784 5746792 1622600 5746728 1622448 5746048 +1622600 5746728 1622784 5746792 1622520 5746024 1622448 5746048 +1622784 5746792 1622600 5746728 1622456 5746736 1622528 5746824 +1622600 5746728 1622448 5746048 1622456 5746736 1622528 5746824 +1622784 5746792 1622600 5746728 1622528 5746824 1622760 5746984 +1622784 5746792 1622520 5746024 1622600 5746728 1622528 5746824 +1622456 5746736 1622600 5746728 1622448 5746048 1622128 5746232 +1622520 5746024 1622600 5746728 1622784 5746792 1623176 5746616 +1622520 5746024 1622448 5746048 1622600 5746728 1623176 5746616 +1622600 5746728 1622528 5746824 1622784 5746792 1623176 5746616 +1622784 5746792 1622976 5746904 1623176 5746616 1622600 5746728 +1622520 5746024 1622600 5746728 1623176 5746616 1622736 5745784 +1622600 5746728 1622568 5746696 1622456 5746736 1622528 5746824 +1622600 5746728 1622448 5746048 1622568 5746696 1622528 5746824 +1622568 5746696 1622448 5746048 1622456 5746736 1622528 5746824 +1622448 5746048 1622568 5746696 1622600 5746728 1622520 5746024 +1622568 5746696 1622528 5746824 1622600 5746728 1622520 5746024 +1622600 5746728 1623176 5746616 1622520 5746024 1622568 5746696 +1622600 5746728 1623176 5746616 1622568 5746696 1622528 5746824 +1622448 5746048 1622456 5746736 1622568 5746696 1622520 5746024 +1622520 5746024 1622448 5746048 1622568 5746696 1623176 5746616 +1622600 5746728 1622568 5746696 1622528 5746824 1622784 5746792 +1622456 5746736 1622568 5746696 1622448 5746048 1622128 5746232 +1622456 5746736 1622528 5746824 1622568 5746696 1622128 5746232 +1622568 5746696 1622520 5746024 1622448 5746048 1622128 5746232 +1622448 5746048 1622352 5746032 1622128 5746232 1622568 5746696 +1622600 5746728 1622784 5746792 1623176 5746616 1622568 5746696 +1622600 5746728 1622784 5746792 1622568 5746696 1622528 5746824 +1623176 5746616 1622520 5746024 1622568 5746696 1622784 5746792 +1622784 5746792 1622976 5746904 1623176 5746616 1622568 5746696 +1623176 5746616 1622736 5745784 1622520 5746024 1622568 5746696 +1622448 5746048 1622544 5746648 1622568 5746696 1622520 5746024 +1622544 5746648 1622128 5746232 1622568 5746696 1622520 5746024 +1622448 5746048 1622128 5746232 1622544 5746648 1622520 5746024 +1622568 5746696 1623176 5746616 1622520 5746024 1622544 5746648 +1622568 5746696 1622784 5746792 1623176 5746616 1622544 5746648 +1622568 5746696 1622784 5746792 1622544 5746648 1622128 5746232 +1622520 5746024 1622448 5746048 1622544 5746648 1623176 5746616 +1622784 5746792 1622976 5746904 1623176 5746616 1622544 5746648 +1623176 5746616 1622520 5746024 1622544 5746648 1622784 5746792 +1622568 5746696 1622544 5746648 1622128 5746232 1622456 5746736 +1622568 5746696 1622544 5746648 1622456 5746736 1622528 5746824 +1622568 5746696 1622784 5746792 1622544 5746648 1622456 5746736 +1622544 5746648 1622448 5746048 1622128 5746232 1622456 5746736 +1622128 5746232 1622544 5746648 1622448 5746048 1622352 5746032 +1622568 5746696 1622600 5746728 1622784 5746792 1622544 5746648 +1622784 5746792 1623176 5746616 1622544 5746648 1622600 5746728 +1622568 5746696 1622600 5746728 1622544 5746648 1622456 5746736 +1623176 5746616 1622736 5745784 1622520 5746024 1622544 5746648 +1622128 5746232 1622496 5746616 1622544 5746648 1622448 5746048 +1622496 5746616 1622456 5746736 1622544 5746648 1622448 5746048 +1622544 5746648 1622520 5746024 1622448 5746048 1622496 5746616 +1622544 5746648 1623176 5746616 1622520 5746024 1622496 5746616 +1622448 5746048 1622128 5746232 1622496 5746616 1622520 5746024 +1622544 5746648 1622520 5746024 1622496 5746616 1622456 5746736 +1622544 5746648 1622496 5746616 1622456 5746736 1622568 5746696 +1622128 5746232 1622496 5746616 1622448 5746048 1622352 5746032 +1622128 5746232 1622456 5746736 1622496 5746616 1622448 5746048 +1622520 5746024 1622528 5746512 1622544 5746648 1623176 5746616 +1622496 5746616 1622528 5746512 1622520 5746024 1622448 5746048 +1622496 5746616 1622528 5746512 1622448 5746048 1622128 5746232 +1622528 5746512 1622520 5746024 1622448 5746048 1622128 5746232 +1622520 5746024 1622448 5746048 1622528 5746512 1623176 5746616 +1622528 5746512 1622496 5746616 1622544 5746648 1623176 5746616 +1622544 5746648 1622784 5746792 1623176 5746616 1622528 5746512 +1622544 5746648 1622600 5746728 1622784 5746792 1622528 5746512 +1623176 5746616 1622520 5746024 1622528 5746512 1622784 5746792 +1622544 5746648 1622784 5746792 1622528 5746512 1622496 5746616 +1622784 5746792 1622976 5746904 1623176 5746616 1622528 5746512 +1622448 5746048 1622352 5746032 1622128 5746232 1622528 5746512 +1622520 5746024 1622528 5746512 1623176 5746616 1622736 5745784 +1622496 5746616 1622544 5746648 1622528 5746512 1622128 5746232 +1622496 5746616 1622528 5746512 1622128 5746232 1622456 5746736 +1623176 5746616 1622552 5746480 1622528 5746512 1622784 5746792 +1622528 5746512 1622552 5746480 1622520 5746024 1622448 5746048 +1622528 5746512 1622552 5746480 1622448 5746048 1622128 5746232 +1622528 5746512 1622552 5746480 1622128 5746232 1622496 5746616 +1622552 5746480 1622520 5746024 1622448 5746048 1622128 5746232 +1622552 5746480 1622128 5746232 1622528 5746512 1622784 5746792 +1622552 5746480 1623176 5746616 1622520 5746024 1622448 5746048 +1623176 5746616 1622520 5746024 1622552 5746480 1622784 5746792 +1623176 5746616 1622552 5746480 1622784 5746792 1622976 5746904 +1622528 5746512 1622544 5746648 1622784 5746792 1622552 5746480 +1622544 5746648 1622600 5746728 1622784 5746792 1622552 5746480 +1622784 5746792 1623176 5746616 1622552 5746480 1622600 5746728 +1622528 5746512 1622544 5746648 1622552 5746480 1622128 5746232 +1622528 5746512 1622496 5746616 1622544 5746648 1622552 5746480 +1622544 5746648 1622600 5746728 1622552 5746480 1622528 5746512 +1622448 5746048 1622352 5746032 1622128 5746232 1622552 5746480 +1622544 5746648 1622568 5746696 1622600 5746728 1622552 5746480 +1622520 5746024 1622552 5746480 1623176 5746616 1622736 5745784 +1622552 5746480 1622648 5746400 1622520 5746024 1622448 5746048 +1622552 5746480 1622648 5746400 1622448 5746048 1622128 5746232 +1622552 5746480 1623176 5746616 1622648 5746400 1622448 5746048 +1623176 5746616 1622648 5746400 1622552 5746480 1622784 5746792 +1622552 5746480 1622600 5746728 1622784 5746792 1622648 5746400 +1622552 5746480 1622544 5746648 1622600 5746728 1622648 5746400 +1622600 5746728 1622784 5746792 1622648 5746400 1622544 5746648 +1622648 5746400 1622448 5746048 1622552 5746480 1622544 5746648 +1622784 5746792 1623176 5746616 1622648 5746400 1622600 5746728 +1622648 5746400 1623176 5746616 1622520 5746024 1622448 5746048 +1623176 5746616 1622520 5746024 1622648 5746400 1622784 5746792 +1623176 5746616 1622648 5746400 1622784 5746792 1622976 5746904 +1622552 5746480 1622528 5746512 1622544 5746648 1622648 5746400 +1622544 5746648 1622568 5746696 1622600 5746728 1622648 5746400 +1622520 5746024 1622648 5746400 1623176 5746616 1622736 5745784 +1622520 5746024 1622448 5746048 1622648 5746400 1622736 5745784 +1622648 5746400 1622784 5746792 1623176 5746616 1622736 5745784 +1623176 5746616 1623472 5746464 1622736 5745784 1622648 5746400 +1622520 5746024 1622648 5746400 1622736 5745784 1622616 5745824 +1623176 5746616 1622720 5746376 1622648 5746400 1622784 5746792 +1622648 5746400 1622600 5746728 1622784 5746792 1622720 5746376 +1622648 5746400 1622544 5746648 1622600 5746728 1622720 5746376 +1622720 5746376 1622736 5745784 1622648 5746400 1622600 5746728 +1622784 5746792 1623176 5746616 1622720 5746376 1622600 5746728 +1623176 5746616 1622736 5745784 1622720 5746376 1622784 5746792 +1622736 5745784 1622720 5746376 1623176 5746616 1623472 5746464 +1622736 5745784 1622648 5746400 1622720 5746376 1623472 5746464 +1622720 5746376 1622784 5746792 1623176 5746616 1623472 5746464 +1623176 5746616 1622720 5746376 1622784 5746792 1622976 5746904 +1623176 5746616 1623416 5746528 1623472 5746464 1622720 5746376 +1622648 5746400 1622720 5746376 1622736 5745784 1622520 5746024 +1622648 5746400 1622720 5746376 1622520 5746024 1622448 5746048 +1622648 5746400 1622600 5746728 1622720 5746376 1622520 5746024 +1622720 5746376 1623472 5746464 1622736 5745784 1622520 5746024 +1622736 5745784 1622616 5745824 1622520 5746024 1622720 5746376 +1622736 5745784 1622720 5746376 1623472 5746464 1622768 5745744 +1623176 5746616 1622856 5746400 1622720 5746376 1622784 5746792 +1622720 5746376 1622600 5746728 1622784 5746792 1622856 5746400 +1622856 5746400 1623472 5746464 1622720 5746376 1622784 5746792 +1623176 5746616 1623472 5746464 1622856 5746400 1622784 5746792 +1622720 5746376 1622856 5746400 1623472 5746464 1622736 5745784 +1622720 5746376 1622856 5746400 1622736 5745784 1622520 5746024 +1622720 5746376 1622784 5746792 1622856 5746400 1622736 5745784 +1622856 5746400 1623176 5746616 1623472 5746464 1622736 5745784 +1623176 5746616 1622856 5746400 1622784 5746792 1622976 5746904 +1623472 5746464 1622856 5746400 1623176 5746616 1623416 5746528 +1623472 5746464 1622768 5745744 1622736 5745784 1622856 5746400 +1623472 5746464 1622768 5745744 1622856 5746400 1623176 5746616 +1622736 5745784 1622720 5746376 1622856 5746400 1622768 5745744 +1623472 5746464 1623744 5746096 1622768 5745744 1622856 5746400 +1760125 5760125 1628896 5749392 1620224 5752520 1620152 5752552 +1760125 5760125 1625680 5748128 1628896 5749392 1620152 5752552 +1628896 5749392 1625680 5748128 1620224 5752520 1620152 5752552 +1760125 5760125 1628896 5749392 1620152 5752552 1599875 5760125 +1625680 5748128 1628896 5749392 1760125 5760125 1625864 5747960 +1628896 5749392 1620152 5752552 1760125 5760125 1625864 5747960 +1625680 5748128 1620224 5752520 1628896 5749392 1625864 5747960 +1760125 5760125 1625952 5747864 1625864 5747960 1628896 5749392 +1760125 5760125 1625952 5747864 1628896 5749392 1620152 5752552 +1760125 5760125 1625976 5747736 1625952 5747864 1628896 5749392 +1760125 5760125 1625976 5747736 1628896 5749392 1620152 5752552 +1625952 5747864 1625864 5747960 1628896 5749392 1625976 5747736 +1625680 5748128 1628896 5749392 1625864 5747960 1625784 5748032 +1625680 5748128 1620224 5752520 1628896 5749392 1625784 5748032 +1625864 5747960 1625800 5748016 1625784 5748032 1628896 5749392 +1625680 5748128 1628896 5749392 1625784 5748032 1625712 5748088 +1625864 5747960 1625784 5748032 1628896 5749392 1625952 5747864 +1620224 5752520 1628896 5749392 1625680 5748128 1625568 5748208 +1620224 5752520 1620152 5752552 1628896 5749392 1625568 5748208 +1628896 5749392 1625784 5748032 1625680 5748128 1625568 5748208 +1620224 5752520 1628896 5749392 1625568 5748208 1625488 5748232 +1620224 5752520 1620152 5752552 1628896 5749392 1625488 5748232 +1620224 5752520 1628896 5749392 1625488 5748232 1625464 5748232 +1628896 5749392 1625680 5748128 1625568 5748208 1625488 5748232 +1760125 5760125 1629928 5726696 1625976 5747736 1628896 5749392 +1760125 5760125 1629928 5726696 1628896 5749392 1620152 5752552 +1760125 5760125 1629944 5726624 1629928 5726696 1628896 5749392 +1760125 5760125 1629944 5726624 1628896 5749392 1620152 5752552 +1629928 5726696 1625976 5747736 1628896 5749392 1629944 5726624 +1760125 5760125 1751256 5699792 1629944 5726624 1628896 5749392 +1625976 5747736 1625952 5747864 1628896 5749392 1629928 5726696 +1629928 5726696 1625960 5747656 1625976 5747736 1628896 5749392 +1629928 5726696 1625960 5747656 1628896 5749392 1629944 5726624 +1625976 5747736 1625952 5747864 1628896 5749392 1625960 5747656 +1629928 5726696 1629872 5726768 1625960 5747656 1628896 5749392 +1629928 5726696 1629872 5726768 1628896 5749392 1629944 5726624 +1629872 5726768 1629776 5726856 1625960 5747656 1628896 5749392 +1629776 5726856 1625376 5746584 1625960 5747656 1628896 5749392 +1629776 5726856 1625232 5746360 1625376 5746584 1628896 5749392 +1629776 5726856 1629584 5726976 1625232 5746360 1628896 5749392 +1625232 5746360 1625376 5746584 1628896 5749392 1629584 5726976 +1625376 5746584 1625448 5746768 1625960 5747656 1628896 5749392 +1625376 5746584 1625960 5747656 1628896 5749392 1625232 5746360 +1629776 5726856 1629584 5726976 1628896 5749392 1629872 5726768 +1629872 5726768 1629776 5726856 1628896 5749392 1629928 5726696 +1625960 5747656 1625976 5747736 1628896 5749392 1625376 5746584 +1629584 5726976 1624976 5746096 1625232 5746360 1628896 5749392 +1620152 5752552 1628856 5749520 1628896 5749392 1620224 5752520 +1628896 5749392 1628856 5749520 1760125 5760125 1629944 5726624 +1628896 5749392 1625488 5748232 1620224 5752520 1628856 5749520 +1620224 5752520 1620152 5752552 1628856 5749520 1625488 5748232 +1620152 5752552 1760125 5760125 1628856 5749520 1620224 5752520 +1628856 5749520 1760125 5760125 1628896 5749392 1625488 5748232 +1625488 5748232 1625464 5748232 1620224 5752520 1628856 5749520 +1620224 5752520 1620152 5752552 1628856 5749520 1625464 5748232 +1625488 5748232 1625464 5748232 1628856 5749520 1628896 5749392 +1628896 5749392 1625568 5748208 1625488 5748232 1628856 5749520 +1625488 5748232 1625464 5748232 1628856 5749520 1625568 5748208 +1628896 5749392 1625568 5748208 1628856 5749520 1760125 5760125 +1760125 5760125 1628856 5749520 1620152 5752552 1599875 5760125 +1625464 5748232 1620224 5752472 1620224 5752520 1628856 5749520 +1628896 5749392 1625680 5748128 1625568 5748208 1628856 5749520 +1628896 5749392 1625784 5748032 1625680 5748128 1628856 5749520 +1628896 5749392 1625784 5748032 1628856 5749520 1760125 5760125 +1625568 5748208 1625488 5748232 1628856 5749520 1625680 5748128 +1628896 5749392 1625864 5747960 1625784 5748032 1628856 5749520 +1625784 5748032 1625680 5748128 1628856 5749520 1625864 5747960 +1628896 5749392 1625864 5747960 1628856 5749520 1760125 5760125 +1625864 5747960 1625800 5748016 1625784 5748032 1628856 5749520 +1625784 5748032 1625712 5748088 1625680 5748128 1628856 5749520 +1628896 5749392 1625952 5747864 1625864 5747960 1628856 5749520 +1628896 5749392 1625952 5747864 1628856 5749520 1760125 5760125 +1628896 5749392 1625976 5747736 1625952 5747864 1628856 5749520 +1625864 5747960 1625784 5748032 1628856 5749520 1625952 5747864 +1625680 5748128 1625568 5748208 1628856 5749520 1625784 5748032 +1620152 5752552 1628848 5749672 1628856 5749520 1620224 5752520 +1628856 5749520 1625464 5748232 1620224 5752520 1628848 5749672 +1620224 5752520 1620152 5752552 1628848 5749672 1625464 5748232 +1620152 5752552 1760125 5760125 1628848 5749672 1620224 5752520 +1628856 5749520 1628848 5749672 1760125 5760125 1628896 5749392 +1760125 5760125 1629944 5726624 1628896 5749392 1628848 5749672 +1628848 5749672 1620152 5752552 1760125 5760125 1628896 5749392 +1628848 5749672 1628896 5749392 1628856 5749520 1625464 5748232 +1628856 5749520 1625488 5748232 1625464 5748232 1628848 5749672 +1625464 5748232 1620224 5752520 1628848 5749672 1625488 5748232 +1628856 5749520 1625568 5748208 1625488 5748232 1628848 5749672 +1628856 5749520 1625568 5748208 1628848 5749672 1628896 5749392 +1625488 5748232 1625464 5748232 1628848 5749672 1625568 5748208 +1628856 5749520 1625680 5748128 1625568 5748208 1628848 5749672 +1625568 5748208 1625488 5748232 1628848 5749672 1625680 5748128 +1628856 5749520 1625680 5748128 1628848 5749672 1628896 5749392 +1760125 5760125 1628848 5749672 1620152 5752552 1599875 5760125 +1625464 5748232 1620224 5752472 1620224 5752520 1628848 5749672 +1628856 5749520 1625784 5748032 1625680 5748128 1628848 5749672 +1628848 5749672 1628944 5749920 1760125 5760125 1628896 5749392 +1760125 5760125 1629944 5726624 1628896 5749392 1628944 5749920 +1628848 5749672 1620152 5752552 1628944 5749920 1628896 5749392 +1620152 5752552 1628944 5749920 1628848 5749672 1620224 5752520 +1628848 5749672 1625464 5748232 1620224 5752520 1628944 5749920 +1628848 5749672 1625488 5748232 1625464 5748232 1628944 5749920 +1625464 5748232 1620224 5752520 1628944 5749920 1625488 5748232 +1628944 5749920 1628896 5749392 1628848 5749672 1625488 5748232 +1620224 5752520 1620152 5752552 1628944 5749920 1625464 5748232 +1628944 5749920 1620152 5752552 1760125 5760125 1628896 5749392 +1620152 5752552 1760125 5760125 1628944 5749920 1620224 5752520 +1628848 5749672 1628944 5749920 1628896 5749392 1628856 5749520 +1628944 5749920 1760125 5760125 1628896 5749392 1628856 5749520 +1628848 5749672 1625488 5748232 1628944 5749920 1628856 5749520 +1628848 5749672 1625568 5748208 1625488 5748232 1628944 5749920 +1625488 5748232 1625464 5748232 1628944 5749920 1625568 5748208 +1628848 5749672 1625680 5748128 1625568 5748208 1628944 5749920 +1628848 5749672 1625568 5748208 1628944 5749920 1628856 5749520 +1760125 5760125 1628944 5749920 1620152 5752552 1599875 5760125 +1625464 5748232 1620224 5752472 1620224 5752520 1628944 5749920 +1628944 5749920 1628952 5750072 1760125 5760125 1628896 5749392 +1620152 5752552 1628952 5750072 1628944 5749920 1620224 5752520 +1628944 5749920 1625464 5748232 1620224 5752520 1628952 5750072 +1628944 5749920 1625488 5748232 1625464 5748232 1628952 5750072 +1628944 5749920 1625568 5748208 1625488 5748232 1628952 5750072 +1625488 5748232 1625464 5748232 1628952 5750072 1625568 5748208 +1625464 5748232 1620224 5752520 1628952 5750072 1625488 5748232 +1628952 5750072 1760125 5760125 1628944 5749920 1625568 5748208 +1620224 5752520 1620152 5752552 1628952 5750072 1625464 5748232 +1620152 5752552 1760125 5760125 1628952 5750072 1620224 5752520 +1628944 5749920 1628848 5749672 1625568 5748208 1628952 5750072 +1625568 5748208 1625488 5748232 1628952 5750072 1628848 5749672 +1628848 5749672 1625680 5748128 1625568 5748208 1628952 5750072 +1628944 5749920 1628848 5749672 1628952 5750072 1760125 5760125 +1760125 5760125 1628952 5750072 1620152 5752552 1599875 5760125 +1760125 5760125 1628944 5749920 1628952 5750072 1599875 5760125 +1628952 5750072 1620224 5752520 1620152 5752552 1599875 5760125 +1620152 5752552 1620096 5752560 1599875 5760125 1628952 5750072 +1625464 5748232 1620224 5752472 1620224 5752520 1628952 5750072 +1628952 5750072 1628896 5750208 1760125 5760125 1628944 5749920 +1599875 5760125 1628896 5750208 1628952 5750072 1620152 5752552 +1628896 5750208 1760125 5760125 1628952 5750072 1620152 5752552 +1628952 5750072 1620224 5752520 1620152 5752552 1628896 5750208 +1628952 5750072 1625464 5748232 1620224 5752520 1628896 5750208 +1628952 5750072 1625488 5748232 1625464 5748232 1628896 5750208 +1628952 5750072 1625568 5748208 1625488 5748232 1628896 5750208 +1628952 5750072 1628848 5749672 1625568 5748208 1628896 5750208 +1628848 5749672 1625680 5748128 1625568 5748208 1628896 5750208 +1625568 5748208 1625488 5748232 1628896 5750208 1628848 5749672 +1625488 5748232 1625464 5748232 1628896 5750208 1625568 5748208 +1625464 5748232 1620224 5752520 1628896 5750208 1625488 5748232 +1628952 5750072 1628848 5749672 1628896 5750208 1760125 5760125 +1620224 5752520 1620152 5752552 1628896 5750208 1625464 5748232 +1599875 5760125 1760125 5760125 1628896 5750208 1620152 5752552 +1628952 5750072 1628944 5749920 1628848 5749672 1628896 5750208 +1628848 5749672 1625568 5748208 1628896 5750208 1628944 5749920 +1628952 5750072 1628944 5749920 1628896 5750208 1760125 5760125 +1620152 5752552 1599875 5760125 1628896 5750208 1620224 5752520 +1599875 5760125 1628896 5750208 1620152 5752552 1620096 5752560 +1625464 5748232 1620224 5752472 1620224 5752520 1628896 5750208 +1628896 5750208 1628768 5750400 1760125 5760125 1628952 5750072 +1599875 5760125 1628768 5750400 1628896 5750208 1620152 5752552 +1628768 5750400 1760125 5760125 1628896 5750208 1620152 5752552 +1599875 5760125 1760125 5760125 1628768 5750400 1620152 5752552 +1628896 5750208 1620224 5752520 1620152 5752552 1628768 5750400 +1628896 5750208 1625464 5748232 1620224 5752520 1628768 5750400 +1628896 5750208 1625488 5748232 1625464 5748232 1628768 5750400 +1628896 5750208 1625568 5748208 1625488 5748232 1628768 5750400 +1628896 5750208 1628848 5749672 1625568 5748208 1628768 5750400 +1628896 5750208 1628944 5749920 1628848 5749672 1628768 5750400 +1628848 5749672 1625680 5748128 1625568 5748208 1628768 5750400 +1628848 5749672 1625680 5748128 1628768 5750400 1628896 5750208 +1625568 5748208 1625488 5748232 1628768 5750400 1625680 5748128 +1625488 5748232 1625464 5748232 1628768 5750400 1625568 5748208 +1625464 5748232 1620224 5752520 1628768 5750400 1625488 5748232 +1628896 5750208 1628848 5749672 1628768 5750400 1760125 5760125 +1620152 5752552 1599875 5760125 1628768 5750400 1620224 5752520 +1628848 5749672 1628856 5749520 1625680 5748128 1628768 5750400 +1620224 5752520 1620152 5752552 1628768 5750400 1625464 5748232 +1599875 5760125 1628768 5750400 1620152 5752552 1620096 5752560 +1625464 5748232 1620224 5752472 1620224 5752520 1628768 5750400 +1628768 5750400 1628760 5750448 1760125 5760125 1628896 5750208 +1760125 5760125 1628952 5750072 1628896 5750208 1628760 5750448 +1628768 5750400 1599875 5760125 1628760 5750448 1628896 5750208 +1599875 5760125 1628760 5750448 1628768 5750400 1620152 5752552 +1628768 5750400 1620224 5752520 1620152 5752552 1628760 5750448 +1628760 5750448 1628896 5750208 1628768 5750400 1620224 5752520 +1628768 5750400 1625464 5748232 1620224 5752520 1628760 5750448 +1628768 5750400 1625488 5748232 1625464 5748232 1628760 5750448 +1628768 5750400 1625568 5748208 1625488 5748232 1628760 5750448 +1628768 5750400 1625680 5748128 1625568 5748208 1628760 5750448 +1625488 5748232 1625464 5748232 1628760 5750448 1625568 5748208 +1620224 5752520 1620152 5752552 1628760 5750448 1625464 5748232 +1628768 5750400 1625568 5748208 1628760 5750448 1628896 5750208 +1625464 5748232 1620224 5752520 1628760 5750448 1625488 5748232 +1599875 5760125 1628760 5750448 1620152 5752552 1620096 5752560 +1625464 5748232 1620224 5752472 1620224 5752520 1628760 5750448 +1628760 5750448 1599875 5760125 1760125 5760125 1628896 5750208 +1620152 5752552 1599875 5760125 1628760 5750448 1620224 5752520 +1599875 5760125 1760125 5760125 1628760 5750448 1620152 5752552 +1628760 5750448 1628808 5750592 1760125 5760125 1628896 5750208 +1760125 5760125 1628952 5750072 1628896 5750208 1628808 5750592 +1760125 5760125 1628944 5749920 1628952 5750072 1628808 5750592 +1628760 5750448 1628808 5750592 1628896 5750208 1628768 5750400 +1628896 5750208 1628768 5750400 1628808 5750592 1628952 5750072 +1599875 5760125 1628808 5750592 1628760 5750448 1620152 5752552 +1599875 5760125 1628808 5750592 1620152 5752552 1620096 5752560 +1628760 5750448 1620224 5752520 1620152 5752552 1628808 5750592 +1628760 5750448 1625464 5748232 1620224 5752520 1628808 5750592 +1628760 5750448 1625488 5748232 1625464 5748232 1628808 5750592 +1628760 5750448 1625568 5748208 1625488 5748232 1628808 5750592 +1625464 5748232 1620224 5752520 1628808 5750592 1625488 5748232 +1625464 5748232 1620224 5752472 1620224 5752520 1628808 5750592 +1620224 5752520 1620152 5752552 1628808 5750592 1625464 5748232 +1620152 5752552 1599875 5760125 1628808 5750592 1620224 5752520 +1628760 5750448 1625488 5748232 1628808 5750592 1628768 5750400 +1628808 5750592 1599875 5760125 1760125 5760125 1628952 5750072 +1599875 5760125 1760125 5760125 1628808 5750592 1620152 5752552 +1628808 5750592 1628800 5750648 1760125 5760125 1628952 5750072 +1760125 5760125 1628944 5749920 1628952 5750072 1628800 5750648 +1628808 5750592 1628800 5750648 1628952 5750072 1628896 5750208 +1628808 5750592 1599875 5760125 1628800 5750648 1628952 5750072 +1599875 5760125 1628800 5750648 1628808 5750592 1620152 5752552 +1599875 5760125 1628800 5750648 1620152 5752552 1620096 5752560 +1628808 5750592 1620224 5752520 1620152 5752552 1628800 5750648 +1628808 5750592 1625464 5748232 1620224 5752520 1628800 5750648 +1628808 5750592 1625488 5748232 1625464 5748232 1628800 5750648 +1628808 5750592 1628760 5750448 1625488 5748232 1628800 5750648 +1628760 5750448 1625568 5748208 1625488 5748232 1628800 5750648 +1625488 5748232 1625464 5748232 1628800 5750648 1628760 5750448 +1625464 5748232 1620224 5752472 1620224 5752520 1628800 5750648 +1625464 5748232 1620224 5752520 1628800 5750648 1625488 5748232 +1620224 5752520 1620152 5752552 1628800 5750648 1625464 5748232 +1628800 5750648 1628952 5750072 1628808 5750592 1628760 5750448 +1620152 5752552 1599875 5760125 1628800 5750648 1620224 5752520 +1628800 5750648 1599875 5760125 1760125 5760125 1628952 5750072 +1599875 5760125 1760125 5760125 1628800 5750648 1620152 5752552 +1628800 5750648 1628768 5750704 1760125 5760125 1628952 5750072 +1599875 5760125 1628768 5750704 1628800 5750648 1620152 5752552 +1599875 5760125 1628768 5750704 1620152 5752552 1620096 5752560 +1628800 5750648 1620224 5752520 1620152 5752552 1628768 5750704 +1628800 5750648 1625464 5748232 1620224 5752520 1628768 5750704 +1625464 5748232 1620224 5752472 1620224 5752520 1628768 5750704 +1628800 5750648 1625488 5748232 1625464 5748232 1628768 5750704 +1628800 5750648 1628760 5750448 1625488 5748232 1628768 5750704 +1628760 5750448 1625568 5748208 1625488 5748232 1628768 5750704 +1628800 5750648 1628808 5750592 1628760 5750448 1628768 5750704 +1628760 5750448 1625488 5748232 1628768 5750704 1628808 5750592 +1625488 5748232 1625464 5748232 1628768 5750704 1628760 5750448 +1625464 5748232 1620224 5752520 1628768 5750704 1625488 5748232 +1620224 5752520 1620152 5752552 1628768 5750704 1625464 5748232 +1628768 5750704 1760125 5760125 1628800 5750648 1628808 5750592 +1620152 5752552 1599875 5760125 1628768 5750704 1620224 5752520 +1599875 5760125 1760125 5760125 1628768 5750704 1620152 5752552 +1620224 5752520 1628664 5750680 1625464 5748232 1620224 5752472 +1625464 5748232 1628664 5750680 1628768 5750704 1625488 5748232 +1628768 5750704 1628760 5750448 1625488 5748232 1628664 5750680 +1628760 5750448 1625568 5748208 1625488 5748232 1628664 5750680 +1628760 5750448 1628768 5750400 1625568 5748208 1628664 5750680 +1628768 5750400 1625680 5748128 1625568 5748208 1628664 5750680 +1625568 5748208 1625488 5748232 1628664 5750680 1628768 5750400 +1628768 5750704 1628808 5750592 1628760 5750448 1628664 5750680 +1628768 5750704 1628800 5750648 1628808 5750592 1628664 5750680 +1628808 5750592 1628760 5750448 1628664 5750680 1628800 5750648 +1628760 5750448 1628768 5750400 1628664 5750680 1628808 5750592 +1625488 5748232 1625464 5748232 1628664 5750680 1625568 5748208 +1628768 5750704 1628664 5750680 1620224 5752520 1620152 5752552 +1628664 5750680 1620224 5752520 1628768 5750704 1628800 5750648 +1625464 5748232 1620224 5752520 1628664 5750680 1625488 5748232 +1625568 5748208 1628560 5750576 1628768 5750400 1625680 5748128 +1628768 5750400 1628848 5749672 1625680 5748128 1628560 5750576 +1628768 5750400 1628896 5750208 1628848 5749672 1628560 5750576 +1625680 5748128 1625568 5748208 1628560 5750576 1628848 5749672 +1628768 5750400 1628560 5750576 1628664 5750680 1628760 5750448 +1628664 5750680 1628560 5750576 1625568 5748208 1625488 5748232 +1628560 5750576 1628760 5750448 1628768 5750400 1628848 5749672 +1628848 5749672 1628856 5749520 1625680 5748128 1628560 5750576 +1628664 5750680 1628808 5750592 1628760 5750448 1628560 5750576 +1628760 5750448 1628768 5750400 1628560 5750576 1628808 5750592 +1628664 5750680 1628800 5750648 1628808 5750592 1628560 5750576 +1628664 5750680 1628560 5750576 1625488 5748232 1625464 5748232 +1628560 5750576 1625568 5748208 1625488 5748232 1625464 5748232 +1628560 5750576 1625464 5748232 1628664 5750680 1628808 5750592 +1628664 5750680 1628560 5750576 1625464 5748232 1620224 5752520 +1625464 5748232 1620224 5752472 1620224 5752520 1628560 5750576 +1628560 5750576 1625488 5748232 1625464 5748232 1620224 5752520 +1628664 5750680 1628560 5750576 1620224 5752520 1628768 5750704 +1628664 5750680 1628808 5750592 1628560 5750576 1620224 5752520 +1625568 5748208 1625488 5748232 1628560 5750576 1625680 5748128 +1628848 5749672 1628456 5750400 1628560 5750576 1628768 5750400 +1628848 5749672 1628456 5750400 1628768 5750400 1628896 5750208 +1628848 5749672 1628456 5750400 1628896 5750208 1628944 5749920 +1628456 5750400 1628560 5750576 1628768 5750400 1628896 5750208 +1628456 5750400 1628768 5750400 1628896 5750208 1628944 5749920 +1628560 5750576 1628456 5750400 1625680 5748128 1625568 5748208 +1628560 5750576 1628760 5750448 1628768 5750400 1628456 5750400 +1628768 5750400 1628896 5750208 1628456 5750400 1628760 5750448 +1628560 5750576 1628808 5750592 1628760 5750448 1628456 5750400 +1628456 5750400 1628848 5749672 1625680 5748128 1625568 5748208 +1628848 5749672 1625680 5748128 1628456 5750400 1628944 5749920 +1628896 5750208 1628952 5750072 1628944 5749920 1628456 5750400 +1625680 5748128 1628456 5750400 1628848 5749672 1628856 5749520 +1625680 5748128 1625568 5748208 1628456 5750400 1628856 5749520 +1628456 5750400 1628944 5749920 1628848 5749672 1628856 5749520 +1625680 5748128 1628456 5750400 1628856 5749520 1625784 5748032 +1628856 5749520 1625864 5747960 1625784 5748032 1628456 5750400 +1625680 5748128 1625568 5748208 1628456 5750400 1625784 5748032 +1625864 5747960 1625800 5748016 1625784 5748032 1628456 5750400 +1628456 5750400 1628848 5749672 1628856 5749520 1625864 5747960 +1628856 5749520 1625952 5747864 1625864 5747960 1628456 5750400 +1625680 5748128 1628456 5750400 1625784 5748032 1625712 5748088 +1625784 5748032 1625680 5748128 1628456 5750400 1625864 5747960 +1628560 5750576 1628456 5750400 1625568 5748208 1625488 5748232 +1628456 5750400 1625680 5748128 1625568 5748208 1625488 5748232 +1628560 5750576 1628456 5750400 1625488 5748232 1625464 5748232 +1628560 5750576 1628456 5750400 1625464 5748232 1620224 5752520 +1628456 5750400 1625488 5748232 1625464 5748232 1620224 5752520 +1625464 5748232 1620224 5752472 1620224 5752520 1628456 5750400 +1628560 5750576 1628456 5750400 1620224 5752520 1628664 5750680 +1628456 5750400 1625568 5748208 1625488 5748232 1625464 5748232 +1628456 5750400 1620224 5752520 1628560 5750576 1628760 5750448 +1628456 5750400 1628368 5750144 1625864 5747960 1625784 5748032 +1628456 5750400 1628856 5749520 1628368 5750144 1625784 5748032 +1628368 5750144 1628856 5749520 1625864 5747960 1625784 5748032 +1625864 5747960 1625800 5748016 1625784 5748032 1628368 5750144 +1628856 5749520 1628368 5750144 1628456 5750400 1628848 5749672 +1628368 5750144 1625784 5748032 1628456 5750400 1628848 5749672 +1628456 5750400 1628944 5749920 1628848 5749672 1628368 5750144 +1628456 5750400 1628896 5750208 1628944 5749920 1628368 5750144 +1628456 5750400 1628768 5750400 1628896 5750208 1628368 5750144 +1628896 5750208 1628944 5749920 1628368 5750144 1628768 5750400 +1628456 5750400 1628760 5750448 1628768 5750400 1628368 5750144 +1628456 5750400 1628768 5750400 1628368 5750144 1625784 5748032 +1628944 5749920 1628848 5749672 1628368 5750144 1628896 5750208 +1628856 5749520 1625864 5747960 1628368 5750144 1628848 5749672 +1628896 5750208 1628952 5750072 1628944 5749920 1628368 5750144 +1628896 5750208 1628952 5750072 1628368 5750144 1628768 5750400 +1628944 5749920 1628848 5749672 1628368 5750144 1628952 5750072 +1628848 5749672 1628856 5749520 1628368 5750144 1628944 5749920 +1625864 5747960 1628368 5750144 1628856 5749520 1625952 5747864 +1625864 5747960 1625784 5748032 1628368 5750144 1625952 5747864 +1628368 5750144 1628848 5749672 1628856 5749520 1625952 5747864 +1628856 5749520 1628896 5749392 1625952 5747864 1628368 5750144 +1628856 5749520 1628896 5749392 1628368 5750144 1628848 5749672 +1628896 5749392 1625976 5747736 1625952 5747864 1628368 5750144 +1625952 5747864 1625864 5747960 1628368 5750144 1628896 5749392 +1628456 5750400 1628368 5750144 1625784 5748032 1625680 5748128 +1628368 5750144 1625864 5747960 1625784 5748032 1625680 5748128 +1628456 5750400 1628368 5750144 1625680 5748128 1625568 5748208 +1628456 5750400 1628368 5750144 1625568 5748208 1625488 5748232 +1628368 5750144 1625680 5748128 1625568 5748208 1625488 5748232 +1628456 5750400 1628768 5750400 1628368 5750144 1625488 5748232 +1625784 5748032 1625712 5748088 1625680 5748128 1628368 5750144 +1628368 5750144 1625784 5748032 1625680 5748128 1625568 5748208 +1628456 5750400 1628368 5750144 1625488 5748232 1625464 5748232 +1625952 5747864 1628312 5749864 1628896 5749392 1625976 5747736 +1628368 5750144 1628312 5749864 1625952 5747864 1625864 5747960 +1628368 5750144 1628312 5749864 1625864 5747960 1625784 5748032 +1628368 5750144 1628312 5749864 1625784 5748032 1625680 5748128 +1628312 5749864 1625864 5747960 1625784 5748032 1625680 5748128 +1628368 5750144 1628896 5749392 1628312 5749864 1625680 5748128 +1628312 5749864 1628896 5749392 1625952 5747864 1625864 5747960 +1625864 5747960 1625800 5748016 1625784 5748032 1628312 5749864 +1628312 5749864 1625952 5747864 1625864 5747960 1625784 5748032 +1625784 5748032 1625712 5748088 1625680 5748128 1628312 5749864 +1628896 5749392 1628312 5749864 1628368 5750144 1628856 5749520 +1628312 5749864 1625680 5748128 1628368 5750144 1628856 5749520 +1628368 5750144 1628848 5749672 1628856 5749520 1628312 5749864 +1628368 5750144 1628848 5749672 1628312 5749864 1625680 5748128 +1628896 5749392 1625952 5747864 1628312 5749864 1628856 5749520 +1628368 5750144 1628944 5749920 1628848 5749672 1628312 5749864 +1628368 5750144 1628952 5750072 1628944 5749920 1628312 5749864 +1628368 5750144 1628944 5749920 1628312 5749864 1625680 5748128 +1628848 5749672 1628856 5749520 1628312 5749864 1628944 5749920 +1628856 5749520 1628896 5749392 1628312 5749864 1628848 5749672 +1628368 5750144 1628312 5749864 1625680 5748128 1625568 5748208 +1628312 5749864 1625784 5748032 1625680 5748128 1625568 5748208 +1628368 5750144 1628312 5749864 1625568 5748208 1625488 5748232 +1628368 5750144 1628312 5749864 1625488 5748232 1628456 5750400 +1628368 5750144 1628944 5749920 1628312 5749864 1625488 5748232 +1628312 5749864 1625680 5748128 1625568 5748208 1625488 5748232 +1628312 5749864 1628248 5749736 1625952 5747864 1625864 5747960 +1628312 5749864 1628896 5749392 1628248 5749736 1625864 5747960 +1628896 5749392 1628248 5749736 1628312 5749864 1628856 5749520 +1628248 5749736 1625864 5747960 1628312 5749864 1628856 5749520 +1628248 5749736 1628896 5749392 1625952 5747864 1625864 5747960 +1628896 5749392 1625952 5747864 1628248 5749736 1628856 5749520 +1625952 5747864 1628248 5749736 1628896 5749392 1625976 5747736 +1625952 5747864 1625864 5747960 1628248 5749736 1625976 5747736 +1628248 5749736 1628856 5749520 1628896 5749392 1625976 5747736 +1628896 5749392 1625960 5747656 1625976 5747736 1628248 5749736 +1628312 5749864 1628248 5749736 1625864 5747960 1625784 5748032 +1628312 5749864 1628248 5749736 1625784 5748032 1625680 5748128 +1628312 5749864 1628248 5749736 1625680 5748128 1625568 5748208 +1628248 5749736 1625784 5748032 1625680 5748128 1625568 5748208 +1628248 5749736 1625952 5747864 1625864 5747960 1625784 5748032 +1628312 5749864 1628856 5749520 1628248 5749736 1625568 5748208 +1625864 5747960 1625800 5748016 1625784 5748032 1628248 5749736 +1628248 5749736 1625864 5747960 1625784 5748032 1625680 5748128 +1625784 5748032 1625712 5748088 1625680 5748128 1628248 5749736 +1628312 5749864 1628848 5749672 1628856 5749520 1628248 5749736 +1628312 5749864 1628944 5749920 1628848 5749672 1628248 5749736 +1628312 5749864 1628848 5749672 1628248 5749736 1625568 5748208 +1628856 5749520 1628896 5749392 1628248 5749736 1628848 5749672 +1628312 5749864 1628248 5749736 1625568 5748208 1625488 5748232 +1628248 5749736 1625680 5748128 1625568 5748208 1625488 5748232 +1628312 5749864 1628248 5749736 1625488 5748232 1628368 5750144 +1625488 5748232 1628456 5750400 1628368 5750144 1628248 5749736 +1628312 5749864 1628848 5749672 1628248 5749736 1628368 5750144 +1628248 5749736 1625568 5748208 1625488 5748232 1628368 5750144 +1628896 5749392 1627704 5749168 1628248 5749736 1628856 5749520 +1625976 5747736 1627704 5749168 1628896 5749392 1625960 5747656 +1627704 5749168 1628248 5749736 1628896 5749392 1625960 5747656 +1625976 5747736 1628248 5749736 1627704 5749168 1625960 5747656 +1628248 5749736 1627704 5749168 1625976 5747736 1625952 5747864 +1628248 5749736 1627704 5749168 1625952 5747864 1625864 5747960 +1628248 5749736 1627704 5749168 1625864 5747960 1625784 5748032 +1627704 5749168 1625952 5747864 1625864 5747960 1625784 5748032 +1628248 5749736 1628896 5749392 1627704 5749168 1625784 5748032 +1627704 5749168 1625960 5747656 1625976 5747736 1625952 5747864 +1627704 5749168 1625976 5747736 1625952 5747864 1625864 5747960 +1625864 5747960 1625800 5748016 1625784 5748032 1627704 5749168 +1628248 5749736 1627704 5749168 1625784 5748032 1625680 5748128 +1628248 5749736 1627704 5749168 1625680 5748128 1625568 5748208 +1628248 5749736 1627704 5749168 1625568 5748208 1625488 5748232 +1627704 5749168 1625680 5748128 1625568 5748208 1625488 5748232 +1627704 5749168 1625864 5747960 1625784 5748032 1625680 5748128 +1628248 5749736 1628896 5749392 1627704 5749168 1625488 5748232 +1627704 5749168 1625784 5748032 1625680 5748128 1625568 5748208 +1625784 5748032 1625712 5748088 1625680 5748128 1627704 5749168 +1628248 5749736 1627704 5749168 1625488 5748232 1628368 5750144 +1627704 5749168 1625568 5748208 1625488 5748232 1628368 5750144 +1625488 5748232 1628456 5750400 1628368 5750144 1627704 5749168 +1625488 5748232 1628456 5750400 1627704 5749168 1625568 5748208 +1628248 5749736 1627704 5749168 1628368 5750144 1628312 5749864 +1628248 5749736 1628896 5749392 1627704 5749168 1628368 5750144 +1628368 5750144 1628248 5749736 1627704 5749168 1628456 5750400 +1625488 5748232 1625464 5748232 1628456 5750400 1627704 5749168 +1625488 5748232 1625464 5748232 1627704 5749168 1625568 5748208 +1628456 5750400 1628368 5750144 1627704 5749168 1625464 5748232 +1625464 5748232 1620224 5752520 1628456 5750400 1627704 5749168 +1628896 5749392 1625376 5746584 1625960 5747656 1627704 5749168 +1625976 5747736 1627320 5748856 1627704 5749168 1625960 5747656 +1627320 5748856 1625952 5747864 1627704 5749168 1625960 5747656 +1625976 5747736 1625952 5747864 1627320 5748856 1625960 5747656 +1627704 5749168 1628896 5749392 1625960 5747656 1627320 5748856 +1627704 5749168 1628896 5749392 1627320 5748856 1625952 5747864 +1627704 5749168 1628248 5749736 1628896 5749392 1627320 5748856 +1625960 5747656 1625976 5747736 1627320 5748856 1628896 5749392 +1627704 5749168 1627320 5748856 1625952 5747864 1625864 5747960 +1627704 5749168 1627320 5748856 1625864 5747960 1625784 5748032 +1627704 5749168 1627320 5748856 1625784 5748032 1625680 5748128 +1627320 5748856 1625864 5747960 1625784 5748032 1625680 5748128 +1627704 5749168 1628896 5749392 1627320 5748856 1625680 5748128 +1627320 5748856 1625976 5747736 1625952 5747864 1625864 5747960 +1627320 5748856 1625952 5747864 1625864 5747960 1625784 5748032 +1625864 5747960 1625800 5748016 1625784 5748032 1627320 5748856 +1627704 5749168 1627320 5748856 1625680 5748128 1625568 5748208 +1627704 5749168 1627320 5748856 1625568 5748208 1625488 5748232 +1627704 5749168 1627320 5748856 1625488 5748232 1625464 5748232 +1627320 5748856 1625568 5748208 1625488 5748232 1625464 5748232 +1627320 5748856 1625784 5748032 1625680 5748128 1625568 5748208 +1627704 5749168 1628896 5749392 1627320 5748856 1625464 5748232 +1627320 5748856 1625680 5748128 1625568 5748208 1625488 5748232 +1625784 5748032 1625712 5748088 1625680 5748128 1627320 5748856 +1627704 5749168 1627320 5748856 1625464 5748232 1628456 5750400 +1627320 5748856 1625488 5748232 1625464 5748232 1628456 5750400 +1627704 5749168 1627320 5748856 1628456 5750400 1628368 5750144 +1625464 5748232 1620224 5752520 1628456 5750400 1627320 5748856 +1627704 5749168 1628896 5749392 1627320 5748856 1628456 5750400 +1628896 5749392 1625376 5746584 1625960 5747656 1627320 5748856 +1625960 5747656 1625976 5747736 1627320 5748856 1625376 5746584 +1628896 5749392 1625376 5746584 1627320 5748856 1627704 5749168 +1625376 5746584 1625448 5746768 1625960 5747656 1627320 5748856 +1628896 5749392 1625232 5746360 1625376 5746584 1627320 5748856 +1627320 5748856 1626976 5748664 1625784 5748032 1625680 5748128 +1627320 5748856 1626976 5748664 1625680 5748128 1625568 5748208 +1626976 5748664 1625784 5748032 1625680 5748128 1625568 5748208 +1627320 5748856 1625864 5747960 1626976 5748664 1625568 5748208 +1626976 5748664 1625864 5747960 1625784 5748032 1625680 5748128 +1625864 5747960 1626976 5748664 1627320 5748856 1625952 5747864 +1627320 5748856 1625976 5747736 1625952 5747864 1626976 5748664 +1626976 5748664 1625568 5748208 1627320 5748856 1625976 5747736 +1627320 5748856 1625960 5747656 1625976 5747736 1626976 5748664 +1625976 5747736 1625952 5747864 1626976 5748664 1625960 5747656 +1627320 5748856 1625960 5747656 1626976 5748664 1625568 5748208 +1627320 5748856 1625376 5746584 1625960 5747656 1626976 5748664 +1625864 5747960 1625784 5748032 1626976 5748664 1625952 5747864 +1625952 5747864 1625864 5747960 1626976 5748664 1625976 5747736 +1625784 5748032 1626976 5748664 1625864 5747960 1625800 5748016 +1625784 5748032 1625680 5748128 1626976 5748664 1625800 5748016 +1626976 5748664 1625952 5747864 1625864 5747960 1625800 5748016 +1627320 5748856 1626976 5748664 1625568 5748208 1625488 5748232 +1627320 5748856 1626976 5748664 1625488 5748232 1625464 5748232 +1627320 5748856 1626976 5748664 1625464 5748232 1628456 5750400 +1625464 5748232 1620224 5752520 1628456 5750400 1626976 5748664 +1626976 5748664 1625488 5748232 1625464 5748232 1628456 5750400 +1626976 5748664 1625680 5748128 1625568 5748208 1625488 5748232 +1627320 5748856 1625960 5747656 1626976 5748664 1628456 5750400 +1626976 5748664 1625568 5748208 1625488 5748232 1625464 5748232 +1625784 5748032 1625712 5748088 1625680 5748128 1626976 5748664 +1627320 5748856 1626976 5748664 1628456 5750400 1627704 5749168 +1626976 5748664 1625464 5748232 1628456 5750400 1627704 5749168 +1628456 5750400 1628368 5750144 1627704 5749168 1626976 5748664 +1627320 5748856 1625960 5747656 1626976 5748664 1627704 5749168 +1626976 5748664 1626904 5748592 1625960 5747656 1625976 5747736 +1626976 5748664 1626904 5748592 1625976 5747736 1625952 5747864 +1626904 5748592 1625960 5747656 1625976 5747736 1625952 5747864 +1625960 5747656 1626904 5748592 1627320 5748856 1625376 5746584 +1626976 5748664 1627320 5748856 1626904 5748592 1625952 5747864 +1626904 5748592 1627320 5748856 1625960 5747656 1625976 5747736 +1626976 5748664 1626904 5748592 1625952 5747864 1625864 5747960 +1626904 5748592 1625976 5747736 1625952 5747864 1625864 5747960 +1626976 5748664 1627320 5748856 1626904 5748592 1625864 5747960 +1626976 5748664 1626904 5748592 1625864 5747960 1625800 5748016 +1626976 5748664 1627320 5748856 1626904 5748592 1625800 5748016 +1626904 5748592 1625952 5747864 1625864 5747960 1625800 5748016 +1626976 5748664 1626904 5748592 1625800 5748016 1625784 5748032 +1626976 5748664 1626904 5748592 1625784 5748032 1625680 5748128 +1626976 5748664 1626904 5748592 1625680 5748128 1625568 5748208 +1626976 5748664 1626904 5748592 1625568 5748208 1625488 5748232 +1626904 5748592 1625680 5748128 1625568 5748208 1625488 5748232 +1626904 5748592 1625784 5748032 1625680 5748128 1625568 5748208 +1626976 5748664 1627320 5748856 1626904 5748592 1625488 5748232 +1626904 5748592 1625864 5747960 1625800 5748016 1625784 5748032 +1626904 5748592 1625800 5748016 1625784 5748032 1625680 5748128 +1626976 5748664 1626904 5748592 1625488 5748232 1625464 5748232 +1625784 5748032 1625712 5748088 1625680 5748128 1626904 5748592 +1627320 5748856 1626912 5748472 1625960 5747656 1626904 5748592 +1625960 5747656 1625976 5747736 1626904 5748592 1626912 5748472 +1625976 5747736 1625952 5747864 1626904 5748592 1626912 5748472 +1625952 5747864 1625864 5747960 1626904 5748592 1626912 5748472 +1625952 5747864 1625864 5747960 1626912 5748472 1625976 5747736 +1626904 5748592 1627320 5748856 1626912 5748472 1625864 5747960 +1625976 5747736 1625952 5747864 1626912 5748472 1625960 5747656 +1626912 5748472 1625376 5746584 1625960 5747656 1625976 5747736 +1627320 5748856 1626912 5748472 1626904 5748592 1626976 5748664 +1626912 5748472 1625864 5747960 1626904 5748592 1626976 5748664 +1627320 5748856 1625376 5746584 1626912 5748472 1626976 5748664 +1625864 5747960 1625800 5748016 1626904 5748592 1626912 5748472 +1625864 5747960 1625800 5748016 1626912 5748472 1625952 5747864 +1626904 5748592 1626976 5748664 1626912 5748472 1625800 5748016 +1625800 5748016 1625784 5748032 1626904 5748592 1626912 5748472 +1626904 5748592 1626976 5748664 1626912 5748472 1625784 5748032 +1625800 5748016 1625784 5748032 1626912 5748472 1625864 5747960 +1625784 5748032 1625680 5748128 1626904 5748592 1626912 5748472 +1625960 5747656 1626912 5748472 1625376 5746584 1625448 5746768 +1625960 5747656 1625976 5747736 1626912 5748472 1625448 5746768 +1626912 5748472 1627320 5748856 1625376 5746584 1625448 5746768 +1625960 5747656 1626912 5748472 1625448 5746768 1625872 5747552 +1625376 5746584 1626912 5748472 1627320 5748856 1628896 5749392 +1625376 5746584 1625448 5746768 1626912 5748472 1628896 5749392 +1626912 5748472 1626976 5748664 1627320 5748856 1628896 5749392 +1627320 5748856 1627704 5749168 1628896 5749392 1626912 5748472 +1625376 5746584 1626912 5748472 1628896 5749392 1625232 5746360 +1626912 5748472 1626872 5748264 1625376 5746584 1625448 5746768 +1626912 5748472 1628896 5749392 1626872 5748264 1625448 5746768 +1626872 5748264 1628896 5749392 1625376 5746584 1625448 5746768 +1626912 5748472 1626872 5748264 1625448 5746768 1625960 5747656 +1626912 5748472 1626872 5748264 1625960 5747656 1625976 5747736 +1626912 5748472 1626872 5748264 1625976 5747736 1625952 5747864 +1626912 5748472 1626872 5748264 1625952 5747864 1625864 5747960 +1626912 5748472 1626872 5748264 1625864 5747960 1625800 5748016 +1626872 5748264 1625952 5747864 1625864 5747960 1625800 5748016 +1626872 5748264 1625976 5747736 1625952 5747864 1625864 5747960 +1626872 5748264 1625960 5747656 1625976 5747736 1625952 5747864 +1626872 5748264 1625376 5746584 1625448 5746768 1625960 5747656 +1626912 5748472 1628896 5749392 1626872 5748264 1625800 5748016 +1625448 5746768 1625872 5747552 1625960 5747656 1626872 5748264 +1625872 5747552 1625896 5747584 1625960 5747656 1626872 5748264 +1625448 5746768 1625624 5747288 1625872 5747552 1626872 5748264 +1625448 5746768 1625872 5747552 1626872 5748264 1625376 5746584 +1626912 5748472 1626872 5748264 1625800 5748016 1625784 5748032 +1626872 5748264 1625864 5747960 1625800 5748016 1625784 5748032 +1626912 5748472 1626872 5748264 1625784 5748032 1626904 5748592 +1626912 5748472 1628896 5749392 1626872 5748264 1626904 5748592 +1626872 5748264 1625800 5748016 1625784 5748032 1626904 5748592 +1625784 5748032 1625680 5748128 1626904 5748592 1626872 5748264 +1626872 5748264 1625872 5747552 1625960 5747656 1625976 5747736 +1625376 5746584 1626872 5748264 1628896 5749392 1625232 5746360 +1628896 5749392 1626872 5748264 1626912 5748472 1627320 5748856 +1626872 5748264 1626904 5748592 1626912 5748472 1627320 5748856 +1626912 5748472 1626976 5748664 1627320 5748856 1626872 5748264 +1628896 5749392 1625376 5746584 1626872 5748264 1627320 5748856 +1628896 5749392 1626872 5748264 1627320 5748856 1627704 5749168 +1626872 5748264 1626808 5748160 1625376 5746584 1625448 5746768 +1626872 5748264 1626808 5748160 1625448 5746768 1625872 5747552 +1625448 5746768 1625624 5747288 1625872 5747552 1626808 5748160 +1626808 5748160 1625376 5746584 1625448 5746768 1625872 5747552 +1626872 5748264 1628896 5749392 1626808 5748160 1625872 5747552 +1628896 5749392 1626808 5748160 1626872 5748264 1627320 5748856 +1626808 5748160 1628896 5749392 1625376 5746584 1625448 5746768 +1626872 5748264 1626808 5748160 1625872 5747552 1625960 5747656 +1625872 5747552 1625896 5747584 1625960 5747656 1626808 5748160 +1626808 5748160 1625448 5746768 1625872 5747552 1625960 5747656 +1626872 5748264 1628896 5749392 1626808 5748160 1625960 5747656 +1626872 5748264 1626808 5748160 1625960 5747656 1625976 5747736 +1626872 5748264 1626808 5748160 1625976 5747736 1625952 5747864 +1626872 5748264 1626808 5748160 1625952 5747864 1625864 5747960 +1626872 5748264 1626808 5748160 1625864 5747960 1625800 5748016 +1626872 5748264 1626808 5748160 1625800 5748016 1625784 5748032 +1626808 5748160 1625864 5747960 1625800 5748016 1625784 5748032 +1626808 5748160 1625952 5747864 1625864 5747960 1625800 5748016 +1626808 5748160 1625976 5747736 1625952 5747864 1625864 5747960 +1626872 5748264 1628896 5749392 1626808 5748160 1625784 5748032 +1626808 5748160 1625872 5747552 1625960 5747656 1625976 5747736 +1626872 5748264 1626808 5748160 1625784 5748032 1626904 5748592 +1626808 5748160 1625800 5748016 1625784 5748032 1626904 5748592 +1626872 5748264 1626808 5748160 1626904 5748592 1626912 5748472 +1626872 5748264 1628896 5749392 1626808 5748160 1626912 5748472 +1626808 5748160 1625784 5748032 1626904 5748592 1626912 5748472 +1625784 5748032 1625680 5748128 1626904 5748592 1626808 5748160 +1626808 5748160 1625960 5747656 1625976 5747736 1625952 5747864 +1625376 5746584 1626808 5748160 1628896 5749392 1625232 5746360 +1625376 5746584 1625448 5746768 1626808 5748160 1625232 5746360 +1626808 5748160 1626872 5748264 1628896 5749392 1625232 5746360 +1628896 5749392 1629584 5726976 1625232 5746360 1626808 5748160 +1625872 5747552 1626704 5748056 1625448 5746768 1625624 5747288 +1626808 5748160 1626704 5748056 1625872 5747552 1625960 5747656 +1625872 5747552 1625896 5747584 1625960 5747656 1626704 5748056 +1625448 5746768 1626704 5748056 1626808 5748160 1625376 5746584 +1626808 5748160 1625232 5746360 1625376 5746584 1626704 5748056 +1625376 5746584 1625448 5746768 1626704 5748056 1625232 5746360 +1626808 5748160 1625232 5746360 1626704 5748056 1625960 5747656 +1625448 5746768 1625872 5747552 1626704 5748056 1625376 5746584 +1626704 5748056 1625448 5746768 1625872 5747552 1625960 5747656 +1626808 5748160 1626704 5748056 1625960 5747656 1625976 5747736 +1626704 5748056 1625872 5747552 1625960 5747656 1625976 5747736 +1626808 5748160 1625232 5746360 1626704 5748056 1625976 5747736 +1626808 5748160 1626704 5748056 1625976 5747736 1625952 5747864 +1626808 5748160 1626704 5748056 1625952 5747864 1625864 5747960 +1626808 5748160 1626704 5748056 1625864 5747960 1625800 5748016 +1626808 5748160 1626704 5748056 1625800 5748016 1625784 5748032 +1626808 5748160 1626704 5748056 1625784 5748032 1626904 5748592 +1626704 5748056 1625800 5748016 1625784 5748032 1626904 5748592 +1626704 5748056 1625864 5747960 1625800 5748016 1625784 5748032 +1626704 5748056 1625952 5747864 1625864 5747960 1625800 5748016 +1626808 5748160 1625232 5746360 1626704 5748056 1626904 5748592 +1626704 5748056 1625960 5747656 1625976 5747736 1625952 5747864 +1626808 5748160 1626704 5748056 1626904 5748592 1626912 5748472 +1626704 5748056 1625784 5748032 1626904 5748592 1626912 5748472 +1626808 5748160 1626704 5748056 1626912 5748472 1626872 5748264 +1626808 5748160 1625232 5746360 1626704 5748056 1626912 5748472 +1625784 5748032 1625680 5748128 1626904 5748592 1626704 5748056 +1626704 5748056 1625976 5747736 1625952 5747864 1625864 5747960 +1626808 5748160 1628896 5749392 1625232 5746360 1626704 5748056 +1625232 5746360 1625376 5746584 1626704 5748056 1628896 5749392 +1626808 5748160 1628896 5749392 1626704 5748056 1626912 5748472 +1626808 5748160 1626872 5748264 1628896 5749392 1626704 5748056 +1628896 5749392 1629584 5726976 1625232 5746360 1626704 5748056 +1625872 5747552 1626488 5747912 1625448 5746768 1625624 5747288 +1625448 5746768 1626488 5747912 1626704 5748056 1625376 5746584 +1625448 5746768 1625872 5747552 1626488 5747912 1625376 5746584 +1626704 5748056 1625232 5746360 1625376 5746584 1626488 5747912 +1626704 5748056 1626488 5747912 1625872 5747552 1625960 5747656 +1625872 5747552 1625896 5747584 1625960 5747656 1626488 5747912 +1626704 5748056 1626488 5747912 1625960 5747656 1625976 5747736 +1626488 5747912 1625872 5747552 1625960 5747656 1625976 5747736 +1626488 5747912 1625976 5747736 1626704 5748056 1625376 5746584 +1626704 5748056 1626488 5747912 1625976 5747736 1625952 5747864 +1626488 5747912 1625960 5747656 1625976 5747736 1625952 5747864 +1626704 5748056 1625376 5746584 1626488 5747912 1625952 5747864 +1626488 5747912 1625448 5746768 1625872 5747552 1625960 5747656 +1626704 5748056 1626488 5747912 1625952 5747864 1625864 5747960 +1626704 5748056 1626488 5747912 1625864 5747960 1625800 5748016 +1626704 5748056 1626488 5747912 1625800 5748016 1625784 5748032 +1626704 5748056 1626488 5747912 1625784 5748032 1626904 5748592 +1626488 5747912 1625864 5747960 1625800 5748016 1625784 5748032 +1626704 5748056 1625376 5746584 1626488 5747912 1625784 5748032 +1626488 5747912 1625976 5747736 1625952 5747864 1625864 5747960 +1626488 5747912 1625952 5747864 1625864 5747960 1625800 5748016 +1625376 5746584 1626392 5747784 1626704 5748056 1625232 5746360 +1626488 5747912 1626392 5747784 1625376 5746584 1625448 5746768 +1626392 5747784 1626704 5748056 1625376 5746584 1625448 5746768 +1626488 5747912 1626392 5747784 1625448 5746768 1625872 5747552 +1625448 5746768 1625624 5747288 1625872 5747552 1626392 5747784 +1626392 5747784 1625376 5746584 1625448 5746768 1625872 5747552 +1626488 5747912 1626704 5748056 1626392 5747784 1625872 5747552 +1626488 5747912 1626392 5747784 1625872 5747552 1625960 5747656 +1625872 5747552 1625896 5747584 1625960 5747656 1626392 5747784 +1626392 5747784 1625448 5746768 1625872 5747552 1625896 5747584 +1626488 5747912 1626392 5747784 1625960 5747656 1625976 5747736 +1626488 5747912 1626392 5747784 1625976 5747736 1625952 5747864 +1626392 5747784 1625960 5747656 1625976 5747736 1625952 5747864 +1626488 5747912 1626392 5747784 1625952 5747864 1625864 5747960 +1626488 5747912 1626704 5748056 1626392 5747784 1625952 5747864 +1625960 5747656 1625976 5747736 1626392 5747784 1625896 5747584 +1626704 5748056 1626376 5747696 1626392 5747784 1626488 5747912 +1626376 5747696 1625376 5746584 1626392 5747784 1626488 5747912 +1626392 5747784 1626376 5747696 1625376 5746584 1625448 5746768 +1626392 5747784 1626488 5747912 1626376 5747696 1625448 5746768 +1626704 5748056 1625376 5746584 1626376 5747696 1626488 5747912 +1625376 5746584 1626376 5747696 1626704 5748056 1625232 5746360 +1626376 5747696 1626488 5747912 1626704 5748056 1625232 5746360 +1626704 5748056 1628896 5749392 1625232 5746360 1626376 5747696 +1626704 5748056 1628896 5749392 1626376 5747696 1626488 5747912 +1625232 5746360 1625376 5746584 1626376 5747696 1628896 5749392 +1626392 5747784 1626376 5747696 1625448 5746768 1625872 5747552 +1625448 5746768 1625624 5747288 1625872 5747552 1626376 5747696 +1626392 5747784 1626488 5747912 1626376 5747696 1625872 5747552 +1626376 5747696 1625376 5746584 1625448 5746768 1625624 5747288 +1626392 5747784 1626376 5747696 1625872 5747552 1625896 5747584 +1626392 5747784 1626376 5747696 1625896 5747584 1625960 5747656 +1626392 5747784 1626488 5747912 1626376 5747696 1625960 5747656 +1626376 5747696 1625872 5747552 1625896 5747584 1625960 5747656 +1625872 5747552 1625896 5747584 1626376 5747696 1625624 5747288 +1626376 5747696 1625232 5746360 1625376 5746584 1625448 5746768 +1628896 5749392 1629584 5726976 1625232 5746360 1626376 5747696 +1626392 5747784 1626376 5747696 1625960 5747656 1625976 5747736 +1626376 5747696 1625896 5747584 1625960 5747656 1625976 5747736 +1626392 5747784 1626488 5747912 1626376 5747696 1625976 5747736 +1626392 5747784 1626376 5747696 1625976 5747736 1625952 5747864 +1625448 5746768 1625512 5747120 1625624 5747288 1626376 5747696 +1626704 5748056 1626808 5748160 1628896 5749392 1626376 5747696 +1626376 5747696 1626408 5747544 1625232 5746360 1625376 5746584 +1626408 5747544 1628896 5749392 1625232 5746360 1625376 5746584 +1628896 5749392 1626408 5747544 1626376 5747696 1626704 5748056 +1628896 5749392 1625232 5746360 1626408 5747544 1626704 5748056 +1626376 5747696 1626488 5747912 1626704 5748056 1626408 5747544 +1626376 5747696 1626392 5747784 1626488 5747912 1626408 5747544 +1626704 5748056 1628896 5749392 1626408 5747544 1626488 5747912 +1626376 5747696 1626488 5747912 1626408 5747544 1625376 5746584 +1626376 5747696 1626408 5747544 1625376 5746584 1625448 5746768 +1626376 5747696 1626408 5747544 1625448 5746768 1625624 5747288 +1626376 5747696 1626408 5747544 1625624 5747288 1625872 5747552 +1626408 5747544 1625448 5746768 1625624 5747288 1625872 5747552 +1626408 5747544 1625232 5746360 1625376 5746584 1625448 5746768 +1626376 5747696 1626408 5747544 1625872 5747552 1625896 5747584 +1626408 5747544 1625624 5747288 1625872 5747552 1625896 5747584 +1626376 5747696 1626408 5747544 1625896 5747584 1625960 5747656 +1626376 5747696 1626408 5747544 1625960 5747656 1625976 5747736 +1626408 5747544 1625872 5747552 1625896 5747584 1625960 5747656 +1626376 5747696 1626488 5747912 1626408 5747544 1625960 5747656 +1626408 5747544 1625376 5746584 1625448 5746768 1625624 5747288 +1625232 5746360 1626408 5747544 1628896 5749392 1629584 5726976 +1626408 5747544 1626704 5748056 1628896 5749392 1629584 5726976 +1625232 5746360 1625376 5746584 1626408 5747544 1629584 5726976 +1628896 5749392 1629776 5726856 1629584 5726976 1626408 5747544 +1625448 5746768 1625512 5747120 1625624 5747288 1626408 5747544 +1628896 5749392 1626408 5747544 1626704 5748056 1626808 5748160 +1628896 5749392 1629584 5726976 1626408 5747544 1626808 5748160 +1626408 5747544 1626488 5747912 1626704 5748056 1626808 5748160 +1628896 5749392 1626408 5747544 1626808 5748160 1626872 5748264 +1625232 5746360 1626408 5747544 1629584 5726976 1624976 5746096 +1628896 5749392 1626504 5747392 1626408 5747544 1626808 5748160 +1629584 5726976 1626504 5747392 1628896 5749392 1629776 5726856 +1626504 5747392 1629584 5726976 1626408 5747544 1626808 5748160 +1628896 5749392 1629584 5726976 1626504 5747392 1626808 5748160 +1628896 5749392 1626504 5747392 1626808 5748160 1626872 5748264 +1626408 5747544 1626504 5747392 1629584 5726976 1625232 5746360 +1626408 5747544 1626504 5747392 1625232 5746360 1625376 5746584 +1626504 5747392 1628896 5749392 1629584 5726976 1625232 5746360 +1626408 5747544 1626808 5748160 1626504 5747392 1625376 5746584 +1626408 5747544 1626504 5747392 1625376 5746584 1625448 5746768 +1626504 5747392 1625232 5746360 1625376 5746584 1625448 5746768 +1626408 5747544 1626808 5748160 1626504 5747392 1625448 5746768 +1626408 5747544 1626504 5747392 1625448 5746768 1625624 5747288 +1626408 5747544 1626504 5747392 1625624 5747288 1625872 5747552 +1626504 5747392 1625448 5746768 1625624 5747288 1625872 5747552 +1626408 5747544 1626504 5747392 1625872 5747552 1625896 5747584 +1626408 5747544 1626808 5748160 1626504 5747392 1625872 5747552 +1626504 5747392 1625376 5746584 1625448 5746768 1625624 5747288 +1626504 5747392 1629584 5726976 1625232 5746360 1625376 5746584 +1625448 5746768 1625512 5747120 1625624 5747288 1626504 5747392 +1625624 5747288 1625872 5747552 1626504 5747392 1625512 5747120 +1625448 5746768 1625512 5747120 1626504 5747392 1625376 5746584 +1626408 5747544 1626704 5748056 1626808 5748160 1626504 5747392 +1626808 5748160 1628896 5749392 1626504 5747392 1626704 5748056 +1626408 5747544 1626704 5748056 1626504 5747392 1625872 5747552 +1626408 5747544 1626488 5747912 1626704 5748056 1626504 5747392 +1626408 5747544 1626376 5747696 1626488 5747912 1626504 5747392 +1626408 5747544 1626488 5747912 1626504 5747392 1625872 5747552 +1626704 5748056 1626808 5748160 1626504 5747392 1626488 5747912 +1629584 5726976 1624976 5746096 1625232 5746360 1626504 5747392 +1629584 5726976 1624976 5746096 1626504 5747392 1628896 5749392 +1625232 5746360 1625376 5746584 1626504 5747392 1624976 5746096 +1629584 5726976 1624712 5745880 1624976 5746096 1626504 5747392 +1629584 5726976 1626600 5747328 1628896 5749392 1629776 5726856 +1626504 5747392 1626600 5747328 1629584 5726976 1624976 5746096 +1626600 5747328 1628896 5749392 1629584 5726976 1624976 5746096 +1626504 5747392 1628896 5749392 1626600 5747328 1624976 5746096 +1628896 5749392 1626600 5747328 1626504 5747392 1626808 5748160 +1626504 5747392 1626704 5748056 1626808 5748160 1626600 5747328 +1628896 5749392 1629584 5726976 1626600 5747328 1626808 5748160 +1626808 5748160 1628896 5749392 1626600 5747328 1626704 5748056 +1626600 5747328 1624976 5746096 1626504 5747392 1626704 5748056 +1628896 5749392 1626600 5747328 1626808 5748160 1626872 5748264 +1628896 5749392 1629584 5726976 1626600 5747328 1626872 5748264 +1626600 5747328 1626704 5748056 1626808 5748160 1626872 5748264 +1628896 5749392 1626600 5747328 1626872 5748264 1627320 5748856 +1626504 5747392 1626488 5747912 1626704 5748056 1626600 5747328 +1626504 5747392 1626488 5747912 1626600 5747328 1624976 5746096 +1626704 5748056 1626808 5748160 1626600 5747328 1626488 5747912 +1626504 5747392 1626408 5747544 1626488 5747912 1626600 5747328 +1626408 5747544 1626376 5747696 1626488 5747912 1626600 5747328 +1626504 5747392 1626408 5747544 1626600 5747328 1624976 5746096 +1626488 5747912 1626704 5748056 1626600 5747328 1626408 5747544 +1629584 5726976 1624712 5745880 1624976 5746096 1626600 5747328 +1626504 5747392 1626600 5747328 1624976 5746096 1625232 5746360 +1626504 5747392 1626408 5747544 1626600 5747328 1625232 5746360 +1626600 5747328 1629584 5726976 1624976 5746096 1625232 5746360 +1626504 5747392 1626600 5747328 1625232 5746360 1625376 5746584 +1626504 5747392 1626600 5747328 1625376 5746584 1625448 5746768 +1626504 5747392 1626408 5747544 1626600 5747328 1625448 5746768 +1626504 5747392 1626600 5747328 1625448 5746768 1625512 5747120 +1626600 5747328 1625232 5746360 1625376 5746584 1625448 5746768 +1626600 5747328 1624976 5746096 1625232 5746360 1625376 5746584 +1628896 5749392 1626744 5747272 1626600 5747328 1626872 5748264 +1629584 5726976 1626744 5747272 1628896 5749392 1629776 5726856 +1629584 5726976 1626600 5747328 1626744 5747272 1629776 5726856 +1626600 5747328 1626744 5747272 1629584 5726976 1624976 5746096 +1626744 5747272 1629776 5726856 1629584 5726976 1624976 5746096 +1626744 5747272 1624976 5746096 1626600 5747328 1626872 5748264 +1626600 5747328 1626744 5747272 1624976 5746096 1625232 5746360 +1626744 5747272 1629584 5726976 1624976 5746096 1625232 5746360 +1626600 5747328 1626872 5748264 1626744 5747272 1625232 5746360 +1628896 5749392 1626744 5747272 1626872 5748264 1627320 5748856 +1626744 5747272 1626600 5747328 1626872 5748264 1627320 5748856 +1626600 5747328 1626808 5748160 1626872 5748264 1626744 5747272 +1626600 5747328 1626704 5748056 1626808 5748160 1626744 5747272 +1626872 5748264 1627320 5748856 1626744 5747272 1626808 5748160 +1626600 5747328 1626704 5748056 1626744 5747272 1625232 5746360 +1626600 5747328 1626488 5747912 1626704 5748056 1626744 5747272 +1626808 5748160 1626872 5748264 1626744 5747272 1626704 5748056 +1628896 5749392 1626744 5747272 1627320 5748856 1627704 5749168 +1628896 5749392 1629776 5726856 1626744 5747272 1627320 5748856 +1628896 5749392 1629872 5726768 1629776 5726856 1626744 5747272 +1626872 5748264 1626912 5748472 1627320 5748856 1626744 5747272 +1629584 5726976 1624712 5745880 1624976 5746096 1626744 5747272 +1626600 5747328 1626744 5747272 1625232 5746360 1625376 5746584 +1626600 5747328 1626704 5748056 1626744 5747272 1625376 5746584 +1626600 5747328 1626744 5747272 1625376 5746584 1625448 5746768 +1626600 5747328 1626704 5748056 1626744 5747272 1625448 5746768 +1626600 5747328 1626744 5747272 1625448 5746768 1626504 5747392 +1626744 5747272 1624976 5746096 1625232 5746360 1625376 5746584 +1626744 5747272 1625232 5746360 1625376 5746584 1625448 5746768 +1626744 5747272 1626848 5747256 1629776 5726856 1629584 5726976 +1626744 5747272 1626848 5747256 1629584 5726976 1624976 5746096 +1626744 5747272 1626848 5747256 1624976 5746096 1625232 5746360 +1626848 5747256 1628896 5749392 1629776 5726856 1629584 5726976 +1626848 5747256 1629776 5726856 1629584 5726976 1624976 5746096 +1626744 5747272 1628896 5749392 1626848 5747256 1625232 5746360 +1626848 5747256 1629584 5726976 1624976 5746096 1625232 5746360 +1626744 5747272 1626848 5747256 1625232 5746360 1625376 5746584 +1626848 5747256 1624976 5746096 1625232 5746360 1625376 5746584 +1626744 5747272 1628896 5749392 1626848 5747256 1625376 5746584 +1628896 5749392 1626848 5747256 1626744 5747272 1627320 5748856 +1626848 5747256 1625376 5746584 1626744 5747272 1627320 5748856 +1626744 5747272 1626872 5748264 1627320 5748856 1626848 5747256 +1626744 5747272 1626808 5748160 1626872 5748264 1626848 5747256 +1626744 5747272 1626808 5748160 1626848 5747256 1625376 5746584 +1626872 5748264 1627320 5748856 1626848 5747256 1626808 5748160 +1626744 5747272 1626704 5748056 1626808 5748160 1626848 5747256 +1626744 5747272 1626600 5747328 1626704 5748056 1626848 5747256 +1626744 5747272 1626704 5748056 1626848 5747256 1625376 5746584 +1628896 5749392 1629776 5726856 1626848 5747256 1627320 5748856 +1628896 5749392 1626848 5747256 1627320 5748856 1627704 5749168 +1626808 5748160 1626872 5748264 1626848 5747256 1626704 5748056 +1629776 5726856 1626848 5747256 1628896 5749392 1629872 5726768 +1626872 5748264 1626912 5748472 1627320 5748856 1626848 5747256 +1627320 5748856 1628896 5749392 1626848 5747256 1626872 5748264 +1629584 5726976 1624712 5745880 1624976 5746096 1626848 5747256 +1629584 5726976 1624712 5745880 1626848 5747256 1629776 5726856 +1624976 5746096 1625232 5746360 1626848 5747256 1624712 5745880 +1629584 5726976 1624528 5745760 1624712 5745880 1626848 5747256 +1626744 5747272 1626848 5747256 1625376 5746584 1625448 5746768 +1626848 5747256 1627016 5747176 1629776 5726856 1629584 5726976 +1627016 5747176 1628896 5749392 1629776 5726856 1629584 5726976 +1626848 5747256 1627016 5747176 1629584 5726976 1624712 5745880 +1626848 5747256 1628896 5749392 1627016 5747176 1624712 5745880 +1628896 5749392 1627016 5747176 1626848 5747256 1627320 5748856 +1627016 5747176 1624712 5745880 1626848 5747256 1627320 5748856 +1628896 5749392 1629776 5726856 1627016 5747176 1627320 5748856 +1628896 5749392 1627016 5747176 1627320 5748856 1627704 5749168 +1628896 5749392 1627016 5747176 1627704 5749168 1628248 5749736 +1627016 5747176 1626848 5747256 1627320 5748856 1627704 5749168 +1628896 5749392 1629776 5726856 1627016 5747176 1627704 5749168 +1629776 5726856 1627016 5747176 1628896 5749392 1629872 5726768 +1627016 5747176 1629776 5726856 1629584 5726976 1624712 5745880 +1626848 5747256 1626872 5748264 1627320 5748856 1627016 5747176 +1626848 5747256 1626872 5748264 1627016 5747176 1624712 5745880 +1626848 5747256 1626808 5748160 1626872 5748264 1627016 5747176 +1626872 5748264 1627320 5748856 1627016 5747176 1626808 5748160 +1626848 5747256 1626808 5748160 1627016 5747176 1624712 5745880 +1627320 5748856 1627704 5749168 1627016 5747176 1626872 5748264 +1626848 5747256 1626704 5748056 1626808 5748160 1627016 5747176 +1626872 5748264 1626912 5748472 1627320 5748856 1627016 5747176 +1629584 5726976 1624528 5745760 1624712 5745880 1627016 5747176 +1626848 5747256 1627016 5747176 1624712 5745880 1624976 5746096 +1627016 5747176 1629584 5726976 1624712 5745880 1624976 5746096 +1626848 5747256 1626808 5748160 1627016 5747176 1624976 5746096 +1626848 5747256 1627016 5747176 1624976 5746096 1625232 5746360 +1626848 5747256 1626808 5748160 1627016 5747176 1625232 5746360 +1626848 5747256 1627016 5747176 1625232 5746360 1625376 5746584 +1626848 5747256 1626808 5748160 1627016 5747176 1625376 5746584 +1627016 5747176 1624976 5746096 1625232 5746360 1625376 5746584 +1626848 5747256 1627016 5747176 1625376 5746584 1626744 5747272 +1626848 5747256 1626808 5748160 1627016 5747176 1626744 5747272 +1627016 5747176 1625232 5746360 1625376 5746584 1626744 5747272 +1627016 5747176 1624712 5745880 1624976 5746096 1625232 5746360 +1625376 5746584 1625448 5746768 1626744 5747272 1627016 5747176 +1627016 5747176 1627136 5747072 1629776 5726856 1629584 5726976 +1627136 5747072 1628896 5749392 1629776 5726856 1629584 5726976 +1627016 5747176 1628896 5749392 1627136 5747072 1629584 5726976 +1628896 5749392 1627136 5747072 1627016 5747176 1627704 5749168 +1627136 5747072 1629584 5726976 1627016 5747176 1627704 5749168 +1628896 5749392 1627136 5747072 1627704 5749168 1628248 5749736 +1628896 5749392 1629776 5726856 1627136 5747072 1627704 5749168 +1627016 5747176 1627320 5748856 1627704 5749168 1627136 5747072 +1627704 5749168 1628896 5749392 1627136 5747072 1627320 5748856 +1627016 5747176 1627320 5748856 1627136 5747072 1629584 5726976 +1627016 5747176 1626872 5748264 1627320 5748856 1627136 5747072 +1627016 5747176 1626808 5748160 1626872 5748264 1627136 5747072 +1627016 5747176 1626872 5748264 1627136 5747072 1629584 5726976 +1627320 5748856 1627704 5749168 1627136 5747072 1626872 5748264 +1629776 5726856 1627136 5747072 1628896 5749392 1629872 5726768 +1629776 5726856 1629584 5726976 1627136 5747072 1629872 5726768 +1627136 5747072 1627704 5749168 1628896 5749392 1629872 5726768 +1628896 5749392 1629928 5726696 1629872 5726768 1627136 5747072 +1626872 5748264 1626912 5748472 1627320 5748856 1627136 5747072 +1627016 5747176 1627136 5747072 1629584 5726976 1624712 5745880 +1627136 5747072 1629776 5726856 1629584 5726976 1624712 5745880 +1627016 5747176 1627136 5747072 1624712 5745880 1624976 5746096 +1627016 5747176 1626872 5748264 1627136 5747072 1624976 5746096 +1627136 5747072 1629584 5726976 1624712 5745880 1624976 5746096 +1629584 5726976 1624528 5745760 1624712 5745880 1627136 5747072 +1627016 5747176 1627136 5747072 1624976 5746096 1625232 5746360 +1627136 5747072 1624712 5745880 1624976 5746096 1625232 5746360 +1627016 5747176 1626872 5748264 1627136 5747072 1625232 5746360 +1627016 5747176 1627136 5747072 1625232 5746360 1625376 5746584 +1627016 5747176 1627136 5747072 1625376 5746584 1626744 5747272 +1627016 5747176 1626872 5748264 1627136 5747072 1626744 5747272 +1627016 5747176 1627136 5747072 1626744 5747272 1626848 5747256 +1627136 5747072 1625232 5746360 1625376 5746584 1626744 5747272 +1627136 5747072 1624976 5746096 1625232 5746360 1625376 5746584 +1625376 5746584 1625448 5746768 1626744 5747272 1627136 5747072 +1628896 5749392 1627312 5746976 1627136 5747072 1627704 5749168 +1627136 5747072 1627320 5748856 1627704 5749168 1627312 5746976 +1628896 5749392 1629872 5726768 1627312 5746976 1627704 5749168 +1627312 5746976 1629872 5726768 1627136 5747072 1627320 5748856 +1627704 5749168 1628896 5749392 1627312 5746976 1627320 5748856 +1628896 5749392 1627312 5746976 1627704 5749168 1628248 5749736 +1627136 5747072 1626872 5748264 1627320 5748856 1627312 5746976 +1627320 5748856 1627704 5749168 1627312 5746976 1626872 5748264 +1627136 5747072 1626872 5748264 1627312 5746976 1629872 5726768 +1627136 5747072 1627016 5747176 1626872 5748264 1627312 5746976 +1627016 5747176 1626808 5748160 1626872 5748264 1627312 5746976 +1627136 5747072 1627016 5747176 1627312 5746976 1629872 5726768 +1626872 5748264 1627320 5748856 1627312 5746976 1627016 5747176 +1627136 5747072 1627312 5746976 1629872 5726768 1629776 5726856 +1627136 5747072 1627312 5746976 1629776 5726856 1629584 5726976 +1627136 5747072 1627312 5746976 1629584 5726976 1624712 5745880 +1627136 5747072 1627016 5747176 1627312 5746976 1624712 5745880 +1627312 5746976 1628896 5749392 1629872 5726768 1629776 5726856 +1627312 5746976 1629776 5726856 1629584 5726976 1624712 5745880 +1627136 5747072 1627312 5746976 1624712 5745880 1624976 5746096 +1627136 5747072 1627312 5746976 1624976 5746096 1625232 5746360 +1627136 5747072 1627016 5747176 1627312 5746976 1625232 5746360 +1627312 5746976 1629584 5726976 1624712 5745880 1624976 5746096 +1627312 5746976 1624712 5745880 1624976 5746096 1625232 5746360 +1627312 5746976 1629872 5726768 1629776 5726856 1629584 5726976 +1629872 5726768 1627312 5746976 1628896 5749392 1629928 5726696 +1626872 5748264 1626912 5748472 1627320 5748856 1627312 5746976 +1629584 5726976 1624528 5745760 1624712 5745880 1627312 5746976 +1629584 5726976 1624528 5745760 1627312 5746976 1629776 5726856 +1624712 5745880 1624976 5746096 1627312 5746976 1624528 5745760 +1629584 5726976 1623896 5745384 1624528 5745760 1627312 5746976 +1627136 5747072 1627312 5746976 1625232 5746360 1625376 5746584 +1627312 5746976 1624976 5746096 1625232 5746360 1625376 5746584 +1627136 5747072 1627016 5747176 1627312 5746976 1625376 5746584 +1627136 5747072 1627312 5746976 1625376 5746584 1626744 5747272 +1628896 5749392 1627416 5746952 1627312 5746976 1627704 5749168 +1627312 5746976 1627416 5746952 1629872 5726768 1629776 5726856 +1627312 5746976 1627320 5748856 1627704 5749168 1627416 5746952 +1627704 5749168 1628896 5749392 1627416 5746952 1627320 5748856 +1627312 5746976 1626872 5748264 1627320 5748856 1627416 5746952 +1627320 5748856 1627704 5749168 1627416 5746952 1626872 5748264 +1627416 5746952 1628896 5749392 1629872 5726768 1629776 5726856 +1628896 5749392 1629872 5726768 1627416 5746952 1627704 5749168 +1628896 5749392 1627416 5746952 1627704 5749168 1628248 5749736 +1627416 5746952 1629776 5726856 1627312 5746976 1626872 5748264 +1627312 5746976 1627016 5747176 1626872 5748264 1627416 5746952 +1627016 5747176 1626808 5748160 1626872 5748264 1627416 5746952 +1626872 5748264 1627320 5748856 1627416 5746952 1627016 5747176 +1627312 5746976 1627136 5747072 1627016 5747176 1627416 5746952 +1627312 5746976 1627136 5747072 1627416 5746952 1629776 5726856 +1627016 5747176 1626872 5748264 1627416 5746952 1627136 5747072 +1627312 5746976 1627416 5746952 1629776 5726856 1629584 5726976 +1627416 5746952 1629872 5726768 1629776 5726856 1629584 5726976 +1627312 5746976 1627416 5746952 1629584 5726976 1624528 5745760 +1627312 5746976 1627136 5747072 1627416 5746952 1624528 5745760 +1627416 5746952 1629776 5726856 1629584 5726976 1624528 5745760 +1629872 5726768 1627416 5746952 1628896 5749392 1629928 5726696 +1626872 5748264 1626912 5748472 1627320 5748856 1627416 5746952 +1629584 5726976 1623896 5745384 1624528 5745760 1627416 5746952 +1627312 5746976 1627416 5746952 1624528 5745760 1624712 5745880 +1627416 5746952 1629584 5726976 1624528 5745760 1624712 5745880 +1627312 5746976 1627416 5746952 1624712 5745880 1624976 5746096 +1627312 5746976 1627136 5747072 1627416 5746952 1624976 5746096 +1627312 5746976 1627416 5746952 1624976 5746096 1625232 5746360 +1627312 5746976 1627416 5746952 1625232 5746360 1625376 5746584 +1627416 5746952 1624712 5745880 1624976 5746096 1625232 5746360 +1627312 5746976 1627136 5747072 1627416 5746952 1625232 5746360 +1627416 5746952 1624528 5745760 1624712 5745880 1624976 5746096 +1627416 5746952 1627512 5746960 1629872 5726768 1629776 5726856 +1627512 5746960 1628896 5749392 1629872 5726768 1629776 5726856 +1627416 5746952 1627512 5746960 1629776 5726856 1629584 5726976 +1627512 5746960 1629872 5726768 1629776 5726856 1629584 5726976 +1627416 5746952 1628896 5749392 1627512 5746960 1629584 5726976 +1628896 5749392 1627512 5746960 1627416 5746952 1627704 5749168 +1628896 5749392 1629872 5726768 1627512 5746960 1627704 5749168 +1627416 5746952 1627320 5748856 1627704 5749168 1627512 5746960 +1627416 5746952 1626872 5748264 1627320 5748856 1627512 5746960 +1627320 5748856 1627704 5749168 1627512 5746960 1626872 5748264 +1627416 5746952 1627016 5747176 1626872 5748264 1627512 5746960 +1627016 5747176 1626808 5748160 1626872 5748264 1627512 5746960 +1626872 5748264 1627320 5748856 1627512 5746960 1627016 5747176 +1627512 5746960 1629584 5726976 1627416 5746952 1627016 5747176 +1627704 5749168 1628896 5749392 1627512 5746960 1627320 5748856 +1628896 5749392 1627512 5746960 1627704 5749168 1628248 5749736 +1627416 5746952 1627136 5747072 1627016 5747176 1627512 5746960 +1627016 5747176 1626872 5748264 1627512 5746960 1627136 5747072 +1627416 5746952 1627312 5746976 1627136 5747072 1627512 5746960 +1627416 5746952 1627312 5746976 1627512 5746960 1629584 5726976 +1627136 5747072 1627016 5747176 1627512 5746960 1627312 5746976 +1627416 5746952 1627512 5746960 1629584 5726976 1624528 5745760 +1627512 5746960 1629776 5726856 1629584 5726976 1624528 5745760 +1627416 5746952 1627312 5746976 1627512 5746960 1624528 5745760 +1627416 5746952 1627512 5746960 1624528 5745760 1624712 5745880 +1627416 5746952 1627312 5746976 1627512 5746960 1624712 5745880 +1627512 5746960 1629584 5726976 1624528 5745760 1624712 5745880 +1629872 5726768 1627512 5746960 1628896 5749392 1629928 5726696 +1626872 5748264 1626912 5748472 1627320 5748856 1627512 5746960 +1629584 5726976 1623896 5745384 1624528 5745760 1627512 5746960 +1627416 5746952 1627512 5746960 1624712 5745880 1624976 5746096 +1627512 5746960 1627800 5747032 1629872 5726768 1629776 5726856 +1627512 5746960 1628896 5749392 1627800 5747032 1629776 5726856 +1628896 5749392 1627800 5747032 1627512 5746960 1627704 5749168 +1627800 5747032 1629776 5726856 1627512 5746960 1627704 5749168 +1627512 5746960 1627800 5747032 1629776 5726856 1629584 5726976 +1627800 5747032 1629872 5726768 1629776 5726856 1629584 5726976 +1627512 5746960 1627704 5749168 1627800 5747032 1629584 5726976 +1627512 5746960 1627800 5747032 1629584 5726976 1624528 5745760 +1627512 5746960 1627320 5748856 1627704 5749168 1627800 5747032 +1627512 5746960 1627320 5748856 1627800 5747032 1629584 5726976 +1627704 5749168 1628896 5749392 1627800 5747032 1627320 5748856 +1627512 5746960 1626872 5748264 1627320 5748856 1627800 5747032 +1627512 5746960 1626872 5748264 1627800 5747032 1629584 5726976 +1627512 5746960 1627016 5747176 1626872 5748264 1627800 5747032 +1627512 5746960 1627016 5747176 1627800 5747032 1629584 5726976 +1627016 5747176 1626808 5748160 1626872 5748264 1627800 5747032 +1626872 5748264 1627320 5748856 1627800 5747032 1627016 5747176 +1627512 5746960 1627136 5747072 1627016 5747176 1627800 5747032 +1627512 5746960 1627136 5747072 1627800 5747032 1629584 5726976 +1627016 5747176 1626872 5748264 1627800 5747032 1627136 5747072 +1627320 5748856 1627704 5749168 1627800 5747032 1626872 5748264 +1628896 5749392 1627800 5747032 1627704 5749168 1628248 5749736 +1627800 5747032 1628896 5749392 1629872 5726768 1629776 5726856 +1628896 5749392 1629872 5726768 1627800 5747032 1627704 5749168 +1627512 5746960 1627312 5746976 1627136 5747072 1627800 5747032 +1629872 5726768 1627800 5747032 1628896 5749392 1629928 5726696 +1628896 5749392 1629944 5726624 1629928 5726696 1627800 5747032 +1629872 5726768 1629776 5726856 1627800 5747032 1629928 5726696 +1627800 5747032 1627704 5749168 1628896 5749392 1629928 5726696 +1626872 5748264 1626912 5748472 1627320 5748856 1627800 5747032 +1629928 5726696 1628016 5747192 1628896 5749392 1629944 5726624 +1628896 5749392 1628016 5747192 1627800 5747032 1627704 5749168 +1627800 5747032 1627320 5748856 1627704 5749168 1628016 5747192 +1627800 5747032 1626872 5748264 1627320 5748856 1628016 5747192 +1627320 5748856 1627704 5749168 1628016 5747192 1626872 5748264 +1627800 5747032 1627016 5747176 1626872 5748264 1628016 5747192 +1627016 5747176 1626808 5748160 1626872 5748264 1628016 5747192 +1627016 5747176 1626808 5748160 1628016 5747192 1627800 5747032 +1627800 5747032 1627136 5747072 1627016 5747176 1628016 5747192 +1626872 5748264 1627320 5748856 1628016 5747192 1626808 5748160 +1628896 5749392 1628016 5747192 1627704 5749168 1628248 5749736 +1627016 5747176 1626848 5747256 1626808 5748160 1628016 5747192 +1628016 5747192 1629928 5726696 1627800 5747032 1627016 5747176 +1627704 5749168 1628896 5749392 1628016 5747192 1627320 5748856 +1627800 5747032 1628016 5747192 1629928 5726696 1629872 5726768 +1627800 5747032 1628016 5747192 1629872 5726768 1629776 5726856 +1627800 5747032 1628016 5747192 1629776 5726856 1629584 5726976 +1627800 5747032 1628016 5747192 1629584 5726976 1627512 5746960 +1628016 5747192 1629872 5726768 1629776 5726856 1629584 5726976 +1627800 5747032 1627016 5747176 1628016 5747192 1629584 5726976 +1628016 5747192 1629928 5726696 1629872 5726768 1629776 5726856 +1626872 5748264 1626912 5748472 1627320 5748856 1628016 5747192 +1628016 5747192 1628896 5749392 1629928 5726696 1629872 5726768 +1628896 5749392 1629928 5726696 1628016 5747192 1627704 5749168 +1629928 5726696 1628120 5747304 1628896 5749392 1629944 5726624 +1628016 5747192 1628120 5747304 1629928 5726696 1629872 5726768 +1628016 5747192 1628896 5749392 1628120 5747304 1629872 5726768 +1628120 5747304 1628896 5749392 1629928 5726696 1629872 5726768 +1628016 5747192 1628120 5747304 1629872 5726768 1629776 5726856 +1628016 5747192 1628896 5749392 1628120 5747304 1629776 5726856 +1628016 5747192 1628120 5747304 1629776 5726856 1629584 5726976 +1628120 5747304 1629928 5726696 1629872 5726768 1629776 5726856 +1628896 5749392 1628120 5747304 1628016 5747192 1627704 5749168 +1628896 5749392 1629928 5726696 1628120 5747304 1627704 5749168 +1628896 5749392 1628120 5747304 1627704 5749168 1628248 5749736 +1628120 5747304 1629776 5726856 1628016 5747192 1627704 5749168 +1628016 5747192 1627320 5748856 1627704 5749168 1628120 5747304 +1628016 5747192 1626872 5748264 1627320 5748856 1628120 5747304 +1628016 5747192 1626808 5748160 1626872 5748264 1628120 5747304 +1626872 5748264 1627320 5748856 1628120 5747304 1626808 5748160 +1628016 5747192 1626808 5748160 1628120 5747304 1629776 5726856 +1627320 5748856 1627704 5749168 1628120 5747304 1626872 5748264 +1626872 5748264 1626912 5748472 1627320 5748856 1628120 5747304 +1628016 5747192 1627016 5747176 1626808 5748160 1628120 5747304 +1628016 5747192 1627800 5747032 1627016 5747176 1628120 5747304 +1626808 5748160 1626872 5748264 1628120 5747304 1627016 5747176 +1627016 5747176 1626848 5747256 1626808 5748160 1628120 5747304 +1628016 5747192 1627016 5747176 1628120 5747304 1629776 5726856 +1627704 5749168 1628896 5749392 1628120 5747304 1627320 5748856 +1629928 5726696 1628168 5747408 1628896 5749392 1629944 5726624 +1628896 5749392 1628168 5747408 1628120 5747304 1627704 5749168 +1628896 5749392 1628168 5747408 1627704 5749168 1628248 5749736 +1628120 5747304 1628168 5747408 1629928 5726696 1629872 5726768 +1628168 5747408 1629928 5726696 1628120 5747304 1627704 5749168 +1628896 5749392 1629928 5726696 1628168 5747408 1627704 5749168 +1628120 5747304 1627320 5748856 1627704 5749168 1628168 5747408 +1627704 5749168 1628896 5749392 1628168 5747408 1627320 5748856 +1628120 5747304 1627320 5748856 1628168 5747408 1629928 5726696 +1628120 5747304 1626872 5748264 1627320 5748856 1628168 5747408 +1628120 5747304 1626808 5748160 1626872 5748264 1628168 5747408 +1628120 5747304 1627016 5747176 1626808 5748160 1628168 5747408 +1626808 5748160 1626872 5748264 1628168 5747408 1627016 5747176 +1627016 5747176 1626848 5747256 1626808 5748160 1628168 5747408 +1628120 5747304 1627016 5747176 1628168 5747408 1629928 5726696 +1626872 5748264 1627320 5748856 1628168 5747408 1626808 5748160 +1626872 5748264 1626912 5748472 1627320 5748856 1628168 5747408 +1628120 5747304 1628016 5747192 1627016 5747176 1628168 5747408 +1628016 5747192 1627800 5747032 1627016 5747176 1628168 5747408 +1627016 5747176 1626808 5748160 1628168 5747408 1628016 5747192 +1628120 5747304 1628016 5747192 1628168 5747408 1629928 5726696 +1627320 5748856 1627704 5749168 1628168 5747408 1626872 5748264 +1627704 5749168 1628160 5747504 1628168 5747408 1627320 5748856 +1628160 5747504 1628896 5749392 1628168 5747408 1627320 5748856 +1627704 5749168 1628896 5749392 1628160 5747504 1627320 5748856 +1628896 5749392 1628160 5747504 1627704 5749168 1628248 5749736 +1628168 5747408 1628160 5747504 1628896 5749392 1629928 5726696 +1628168 5747408 1626872 5748264 1627320 5748856 1628160 5747504 +1627320 5748856 1627704 5749168 1628160 5747504 1626872 5748264 +1628168 5747408 1626872 5748264 1628160 5747504 1628896 5749392 +1628168 5747408 1626808 5748160 1626872 5748264 1628160 5747504 +1628168 5747408 1627016 5747176 1626808 5748160 1628160 5747504 +1628168 5747408 1628016 5747192 1627016 5747176 1628160 5747504 +1627016 5747176 1626808 5748160 1628160 5747504 1628016 5747192 +1628016 5747192 1627800 5747032 1627016 5747176 1628160 5747504 +1627016 5747176 1626808 5748160 1628160 5747504 1627800 5747032 +1627800 5747032 1627136 5747072 1627016 5747176 1628160 5747504 +1628016 5747192 1627800 5747032 1628160 5747504 1628168 5747408 +1628168 5747408 1628016 5747192 1628160 5747504 1628896 5749392 +1627016 5747176 1626848 5747256 1626808 5748160 1628160 5747504 +1626808 5748160 1626872 5748264 1628160 5747504 1627016 5747176 +1626872 5748264 1626912 5748472 1627320 5748856 1628160 5747504 +1628168 5747408 1628120 5747304 1628016 5747192 1628160 5747504 +1628016 5747192 1627800 5747032 1628160 5747504 1628120 5747304 +1628168 5747408 1628120 5747304 1628160 5747504 1628896 5749392 +1626872 5748264 1627320 5748856 1628160 5747504 1626808 5748160 +1627704 5749168 1628160 5747616 1628160 5747504 1627320 5748856 +1628160 5747504 1626872 5748264 1627320 5748856 1628160 5747616 +1627320 5748856 1627704 5749168 1628160 5747616 1626872 5748264 +1628896 5749392 1628160 5747616 1627704 5749168 1628248 5749736 +1627704 5749168 1628896 5749392 1628160 5747616 1627320 5748856 +1628160 5747504 1628160 5747616 1628896 5749392 1628168 5747408 +1628160 5747616 1627704 5749168 1628896 5749392 1628168 5747408 +1628896 5749392 1629928 5726696 1628168 5747408 1628160 5747616 +1628160 5747616 1628168 5747408 1628160 5747504 1626872 5748264 +1626872 5748264 1626912 5748472 1627320 5748856 1628160 5747616 +1628160 5747504 1626808 5748160 1626872 5748264 1628160 5747616 +1626872 5748264 1627320 5748856 1628160 5747616 1626808 5748160 +1628160 5747504 1627016 5747176 1626808 5748160 1628160 5747616 +1628160 5747504 1627800 5747032 1627016 5747176 1628160 5747616 +1628160 5747504 1628016 5747192 1627800 5747032 1628160 5747616 +1627800 5747032 1627016 5747176 1628160 5747616 1628016 5747192 +1627800 5747032 1627136 5747072 1627016 5747176 1628160 5747616 +1628160 5747504 1628120 5747304 1628016 5747192 1628160 5747616 +1627016 5747176 1626848 5747256 1626808 5748160 1628160 5747616 +1627016 5747176 1626808 5748160 1628160 5747616 1627800 5747032 +1628160 5747504 1628016 5747192 1628160 5747616 1628168 5747408 +1626808 5748160 1626872 5748264 1628160 5747616 1627016 5747176 +1628896 5749392 1628200 5747680 1628160 5747616 1627704 5749168 +1628896 5749392 1628168 5747408 1628200 5747680 1627704 5749168 +1628200 5747680 1628168 5747408 1628160 5747616 1627704 5749168 +1628896 5749392 1628200 5747680 1627704 5749168 1628248 5749736 +1628160 5747616 1627320 5748856 1627704 5749168 1628200 5747680 +1628160 5747616 1626872 5748264 1627320 5748856 1628200 5747680 +1628160 5747616 1626808 5748160 1626872 5748264 1628200 5747680 +1627704 5749168 1628896 5749392 1628200 5747680 1627320 5748856 +1628160 5747616 1626872 5748264 1628200 5747680 1628168 5747408 +1627320 5748856 1627704 5749168 1628200 5747680 1626872 5748264 +1628168 5747408 1628200 5747680 1628896 5749392 1629928 5726696 +1628160 5747616 1628200 5747680 1628168 5747408 1628160 5747504 +1628160 5747616 1626872 5748264 1628200 5747680 1628160 5747504 +1628200 5747680 1628896 5749392 1628168 5747408 1628160 5747504 +1626872 5748264 1626912 5748472 1627320 5748856 1628200 5747680 +1629928 5726696 1628304 5747744 1628896 5749392 1629944 5726624 +1628168 5747408 1628304 5747744 1629928 5726696 1628120 5747304 +1628896 5749392 1628304 5747744 1628168 5747408 1628200 5747680 +1628896 5749392 1629928 5726696 1628304 5747744 1628200 5747680 +1628896 5749392 1628304 5747744 1628200 5747680 1627704 5749168 +1628896 5749392 1629928 5726696 1628304 5747744 1627704 5749168 +1628200 5747680 1627320 5748856 1627704 5749168 1628304 5747744 +1627704 5749168 1628896 5749392 1628304 5747744 1627320 5748856 +1628896 5749392 1628304 5747744 1627704 5749168 1628248 5749736 +1628200 5747680 1626872 5748264 1627320 5748856 1628304 5747744 +1628168 5747408 1628160 5747504 1628200 5747680 1628304 5747744 +1628304 5747744 1629928 5726696 1628168 5747408 1628160 5747504 +1628304 5747744 1628160 5747504 1628200 5747680 1627320 5748856 +1628160 5747504 1628160 5747616 1628200 5747680 1628304 5747744 +1628896 5749392 1628504 5747840 1628304 5747744 1627704 5749168 +1629928 5726696 1628504 5747840 1628896 5749392 1629944 5726624 +1628896 5749392 1629928 5726696 1628504 5747840 1627704 5749168 +1628304 5747744 1627320 5748856 1627704 5749168 1628504 5747840 +1628304 5747744 1628504 5747840 1629928 5726696 1628168 5747408 +1628504 5747840 1628896 5749392 1629928 5726696 1628168 5747408 +1628504 5747840 1628168 5747408 1628304 5747744 1627704 5749168 +1629928 5726696 1628120 5747304 1628168 5747408 1628504 5747840 +1629928 5726696 1628120 5747304 1628504 5747840 1628896 5749392 +1628168 5747408 1628304 5747744 1628504 5747840 1628120 5747304 +1628896 5749392 1628504 5747840 1627704 5749168 1628248 5749736 +1628304 5747744 1628504 5747840 1628168 5747408 1628160 5747504 +1629928 5726696 1629872 5726768 1628120 5747304 1628504 5747840 +1629928 5726696 1629872 5726768 1628504 5747840 1628896 5749392 +1628120 5747304 1628168 5747408 1628504 5747840 1629872 5726768 +1629872 5726768 1629776 5726856 1628120 5747304 1628504 5747840 +1628504 5747840 1628776 5748096 1629928 5726696 1629872 5726768 +1628504 5747840 1628896 5749392 1628776 5748096 1629872 5726768 +1629928 5726696 1628776 5748096 1628896 5749392 1629944 5726624 +1628896 5749392 1628776 5748096 1628504 5747840 1627704 5749168 +1628504 5747840 1628304 5747744 1627704 5749168 1628776 5748096 +1628776 5748096 1629872 5726768 1628504 5747840 1627704 5749168 +1628776 5748096 1629944 5726624 1629928 5726696 1629872 5726768 +1628776 5748096 1627704 5749168 1628896 5749392 1629944 5726624 +1628896 5749392 1628776 5748096 1627704 5749168 1628248 5749736 +1628896 5749392 1760125 5760125 1629944 5726624 1628776 5748096 +1628896 5749392 1628944 5749920 1760125 5760125 1628776 5748096 +1629944 5726624 1629928 5726696 1628776 5748096 1760125 5760125 +1628896 5749392 1760125 5760125 1628776 5748096 1627704 5749168 +1760125 5760125 1751256 5699792 1629944 5726624 1628776 5748096 +1628504 5747840 1628776 5748096 1629872 5726768 1628120 5747304 +1628776 5748096 1629928 5726696 1629872 5726768 1628120 5747304 +1628504 5747840 1627704 5749168 1628776 5748096 1628120 5747304 +1628504 5747840 1628776 5748096 1628120 5747304 1628168 5747408 +1629872 5726768 1629776 5726856 1628120 5747304 1628776 5748096 +1760125 5760125 1628960 5748368 1628896 5749392 1628944 5749920 +1628960 5748368 1628776 5748096 1628896 5749392 1628944 5749920 +1628896 5749392 1628856 5749520 1628944 5749920 1628960 5748368 +1760125 5760125 1628960 5748368 1628944 5749920 1628952 5750072 +1628960 5748368 1628896 5749392 1628944 5749920 1628952 5750072 +1760125 5760125 1628960 5748368 1628952 5750072 1628800 5750648 +1628896 5749392 1628960 5748368 1628776 5748096 1627704 5749168 +1628896 5749392 1628944 5749920 1628960 5748368 1627704 5749168 +1628776 5748096 1628504 5747840 1627704 5749168 1628960 5748368 +1628960 5748368 1760125 5760125 1628776 5748096 1627704 5749168 +1760125 5760125 1628776 5748096 1628960 5748368 1628952 5750072 +1628896 5749392 1628960 5748368 1627704 5749168 1628248 5749736 +1628776 5748096 1628960 5748368 1760125 5760125 1629944 5726624 +1628776 5748096 1628960 5748368 1629944 5726624 1629928 5726696 +1628776 5748096 1628960 5748368 1629928 5726696 1629872 5726768 +1628776 5748096 1628960 5748368 1629872 5726768 1628120 5747304 +1628960 5748368 1629944 5726624 1629928 5726696 1629872 5726768 +1628776 5748096 1627704 5749168 1628960 5748368 1629872 5726768 +1628960 5748368 1628952 5750072 1760125 5760125 1629944 5726624 +1760125 5760125 1751256 5699792 1629944 5726624 1628960 5748368 +1628960 5748368 1760125 5760125 1629944 5726624 1629928 5726696 +1628952 5750072 1629048 5748600 1628960 5748368 1628944 5749920 +1628952 5750072 1760125 5760125 1629048 5748600 1628944 5749920 +1628960 5748368 1628896 5749392 1628944 5749920 1629048 5748600 +1628960 5748368 1627704 5749168 1628896 5749392 1629048 5748600 +1628896 5749392 1628944 5749920 1629048 5748600 1627704 5749168 +1628896 5749392 1628856 5749520 1628944 5749920 1629048 5748600 +1628944 5749920 1628952 5750072 1629048 5748600 1628896 5749392 +1760125 5760125 1629048 5748600 1628952 5750072 1628800 5750648 +1628960 5748368 1628776 5748096 1627704 5749168 1629048 5748600 +1628960 5748368 1629048 5748600 1760125 5760125 1629944 5726624 +1629048 5748600 1628952 5750072 1760125 5760125 1629944 5726624 +1629048 5748600 1629944 5726624 1628960 5748368 1627704 5749168 +1627704 5749168 1628248 5749736 1628896 5749392 1629048 5748600 +1760125 5760125 1751256 5699792 1629944 5726624 1629048 5748600 +1628960 5748368 1629048 5748600 1629944 5726624 1629928 5726696 +1628960 5748368 1629048 5748600 1629928 5726696 1629872 5726768 +1629048 5748600 1760125 5760125 1629944 5726624 1629928 5726696 +1628960 5748368 1627704 5749168 1629048 5748600 1629928 5726696 +1629048 5748600 1629072 5748768 1760125 5760125 1629944 5726624 +1629048 5748600 1628952 5750072 1629072 5748768 1629944 5726624 +1628952 5750072 1629072 5748768 1629048 5748600 1628944 5749920 +1629072 5748768 1629944 5726624 1629048 5748600 1628944 5749920 +1629072 5748768 1628952 5750072 1760125 5760125 1629944 5726624 +1629048 5748600 1628896 5749392 1628944 5749920 1629072 5748768 +1629048 5748600 1628896 5749392 1629072 5748768 1629944 5726624 +1628944 5749920 1628952 5750072 1629072 5748768 1628896 5749392 +1629048 5748600 1627704 5749168 1628896 5749392 1629072 5748768 +1629048 5748600 1628960 5748368 1627704 5749168 1629072 5748768 +1629048 5748600 1627704 5749168 1629072 5748768 1629944 5726624 +1628896 5749392 1628856 5749520 1628944 5749920 1629072 5748768 +1628896 5749392 1628944 5749920 1629072 5748768 1627704 5749168 +1760125 5760125 1629072 5748768 1628952 5750072 1628800 5750648 +1629048 5748600 1629072 5748768 1629944 5726624 1629928 5726696 +1629072 5748768 1760125 5760125 1629944 5726624 1629928 5726696 +1629048 5748600 1627704 5749168 1629072 5748768 1629928 5726696 +1628952 5750072 1760125 5760125 1629072 5748768 1628944 5749920 +1627704 5749168 1628248 5749736 1628896 5749392 1629072 5748768 +1760125 5760125 1751256 5699792 1629944 5726624 1629072 5748768 +1629048 5748600 1629072 5748768 1629928 5726696 1628960 5748368 +1629072 5748768 1629056 5748960 1760125 5760125 1629944 5726624 +1760125 5760125 1629056 5748960 1628952 5750072 1628800 5750648 +1628952 5750072 1629056 5748960 1629072 5748768 1628944 5749920 +1629072 5748768 1628896 5749392 1628944 5749920 1629056 5748960 +1629056 5748960 1760125 5760125 1629072 5748768 1628896 5749392 +1628896 5749392 1628856 5749520 1628944 5749920 1629056 5748960 +1629072 5748768 1627704 5749168 1628896 5749392 1629056 5748960 +1628896 5749392 1628944 5749920 1629056 5748960 1627704 5749168 +1629072 5748768 1627704 5749168 1629056 5748960 1760125 5760125 +1629072 5748768 1629048 5748600 1627704 5749168 1629056 5748960 +1628944 5749920 1628952 5750072 1629056 5748960 1628896 5749392 +1627704 5749168 1628248 5749736 1628896 5749392 1629056 5748960 +1628952 5750072 1760125 5760125 1629056 5748960 1628944 5749920 +1628896 5749392 1629000 5749168 1629056 5748960 1627704 5749168 +1628944 5749920 1629000 5749168 1628896 5749392 1628856 5749520 +1629056 5748960 1629072 5748768 1627704 5749168 1629000 5749168 +1628896 5749392 1628944 5749920 1629000 5749168 1627704 5749168 +1629056 5748960 1629000 5749168 1628944 5749920 1628952 5750072 +1629000 5749168 1628944 5749920 1629056 5748960 1627704 5749168 +1628896 5749392 1629000 5749168 1627704 5749168 1628248 5749736 +1628768 5750704 1631720 5751408 1760125 5760125 1628800 5750648 +1628768 5750704 1599875 5760125 1631720 5751408 1628800 5750648 +1631720 5751408 1599875 5760125 1760125 5760125 1628800 5750648 +1760125 5760125 1628952 5750072 1628800 5750648 1631720 5751408 +1760125 5760125 1629056 5748960 1628952 5750072 1631720 5751408 +1760125 5760125 1629072 5748768 1629056 5748960 1631720 5751408 +1760125 5760125 1629944 5726624 1629072 5748768 1631720 5751408 +1629944 5726624 1629928 5726696 1629072 5748768 1631720 5751408 +1629944 5726624 1629928 5726696 1631720 5751408 1760125 5760125 +1629056 5748960 1628952 5750072 1631720 5751408 1629072 5748768 +1629928 5726696 1629048 5748600 1629072 5748768 1631720 5751408 +1629928 5726696 1629048 5748600 1631720 5751408 1629944 5726624 +1629072 5748768 1629056 5748960 1631720 5751408 1629048 5748600 +1629056 5748960 1628944 5749920 1628952 5750072 1631720 5751408 +1629056 5748960 1628944 5749920 1631720 5751408 1629072 5748768 +1629056 5748960 1629000 5749168 1628944 5749920 1631720 5751408 +1629056 5748960 1629000 5749168 1631720 5751408 1629072 5748768 +1628944 5749920 1628952 5750072 1631720 5751408 1629000 5749168 +1629000 5749168 1628896 5749392 1628944 5749920 1631720 5751408 +1760125 5760125 1629944 5726624 1631720 5751408 1599875 5760125 +1760125 5760125 1751256 5699792 1629944 5726624 1631720 5751408 +1629944 5726624 1629928 5726696 1631720 5751408 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1631720 5751408 +1760125 5760125 1751256 5699792 1631720 5751408 1599875 5760125 +1751256 5699792 1629944 5726576 1629944 5726624 1631720 5751408 +1629928 5726696 1628960 5748368 1629048 5748600 1631720 5751408 +1629928 5726696 1628960 5748368 1631720 5751408 1629944 5726624 +1629928 5726696 1629872 5726768 1628960 5748368 1631720 5751408 +1629928 5726696 1629872 5726768 1631720 5751408 1629944 5726624 +1629872 5726768 1628776 5748096 1628960 5748368 1631720 5751408 +1629872 5726768 1628120 5747304 1628776 5748096 1631720 5751408 +1629872 5726768 1628776 5748096 1631720 5751408 1629928 5726696 +1629048 5748600 1629072 5748768 1631720 5751408 1628960 5748368 +1628960 5748368 1629048 5748600 1631720 5751408 1628776 5748096 +1628952 5750072 1628808 5750592 1628800 5750648 1631720 5751408 +1628952 5750072 1628896 5750208 1628808 5750592 1631720 5751408 +1628896 5750208 1628768 5750400 1628808 5750592 1631720 5751408 +1628808 5750592 1628800 5750648 1631720 5751408 1628896 5750208 +1628952 5750072 1628896 5750208 1631720 5751408 1628944 5749920 +1628800 5750648 1628768 5750704 1631720 5751408 1628808 5750592 +1599875 5760125 1631720 5751408 1628768 5750704 1620152 5752552 +1631720 5751408 1628800 5750648 1628768 5750704 1620152 5752552 +1599875 5760125 1760125 5760125 1631720 5751408 1620152 5752552 +1599875 5760125 1631720 5751408 1620152 5752552 1620096 5752560 +1628768 5750704 1620224 5752520 1620152 5752552 1631720 5751408 +1628768 5750704 1620224 5752520 1631720 5751408 1628800 5750648 +1628768 5750704 1628664 5750680 1620224 5752520 1631720 5751408 +1620152 5752552 1599875 5760125 1631720 5751408 1620224 5752520 +1631720 5751408 1631680 5751416 1599875 5760125 1760125 5760125 +1599875 5760125 1631680 5751416 1620152 5752552 1620096 5752560 +1620152 5752552 1631680 5751416 1631720 5751408 1620224 5752520 +1620152 5752552 1599875 5760125 1631680 5751416 1620224 5752520 +1631680 5751416 1599875 5760125 1631720 5751408 1620224 5752520 +1631720 5751408 1628768 5750704 1620224 5752520 1631680 5751416 +1631720 5751408 1628800 5750648 1628768 5750704 1631680 5751416 +1631720 5751408 1628800 5750648 1631680 5751416 1599875 5760125 +1628768 5750704 1628664 5750680 1620224 5752520 1631680 5751416 +1628768 5750704 1620224 5752520 1631680 5751416 1628800 5750648 +1631720 5751408 1628808 5750592 1628800 5750648 1631680 5751416 +1628800 5750648 1628768 5750704 1631680 5751416 1628808 5750592 +1631720 5751408 1628808 5750592 1631680 5751416 1599875 5760125 +1631720 5751408 1628896 5750208 1628808 5750592 1631680 5751416 +1631720 5751408 1628952 5750072 1628896 5750208 1631680 5751416 +1631720 5751408 1628952 5750072 1631680 5751416 1599875 5760125 +1628896 5750208 1628768 5750400 1628808 5750592 1631680 5751416 +1628896 5750208 1628808 5750592 1631680 5751416 1628952 5750072 +1631720 5751408 1628944 5749920 1628952 5750072 1631680 5751416 +1628952 5750072 1628896 5750208 1631680 5751416 1628944 5749920 +1631720 5751408 1628944 5749920 1631680 5751416 1599875 5760125 +1631720 5751408 1629000 5749168 1628944 5749920 1631680 5751416 +1631720 5751408 1629000 5749168 1631680 5751416 1599875 5760125 +1631720 5751408 1629056 5748960 1629000 5749168 1631680 5751416 +1631720 5751408 1629072 5748768 1629056 5748960 1631680 5751416 +1631720 5751408 1629056 5748960 1631680 5751416 1599875 5760125 +1629000 5749168 1628944 5749920 1631680 5751416 1629056 5748960 +1629000 5749168 1628896 5749392 1628944 5749920 1631680 5751416 +1628944 5749920 1628952 5750072 1631680 5751416 1629000 5749168 +1628808 5750592 1628800 5750648 1631680 5751416 1628896 5750208 +1620224 5752520 1620152 5752552 1631680 5751416 1628768 5750704 +1620224 5752520 1631584 5751416 1628768 5750704 1628664 5750680 +1628768 5750704 1631584 5751416 1631680 5751416 1628800 5750648 +1631680 5751416 1628808 5750592 1628800 5750648 1631584 5751416 +1631584 5751416 1620224 5752520 1631680 5751416 1628808 5750592 +1628768 5750704 1620224 5752520 1631584 5751416 1628800 5750648 +1628800 5750648 1628768 5750704 1631584 5751416 1628808 5750592 +1631680 5751416 1628896 5750208 1628808 5750592 1631584 5751416 +1628808 5750592 1628800 5750648 1631584 5751416 1628896 5750208 +1631680 5751416 1628896 5750208 1631584 5751416 1620224 5752520 +1628896 5750208 1628768 5750400 1628808 5750592 1631584 5751416 +1631680 5751416 1628952 5750072 1628896 5750208 1631584 5751416 +1631680 5751416 1628952 5750072 1631584 5751416 1620224 5752520 +1631680 5751416 1628944 5749920 1628952 5750072 1631584 5751416 +1631680 5751416 1628944 5749920 1631584 5751416 1620224 5752520 +1628952 5750072 1628896 5750208 1631584 5751416 1628944 5749920 +1631680 5751416 1629000 5749168 1628944 5749920 1631584 5751416 +1631680 5751416 1629000 5749168 1631584 5751416 1620224 5752520 +1628944 5749920 1628952 5750072 1631584 5751416 1629000 5749168 +1631680 5751416 1629056 5748960 1629000 5749168 1631584 5751416 +1631680 5751416 1629056 5748960 1631584 5751416 1620224 5752520 +1631680 5751416 1631720 5751408 1629056 5748960 1631584 5751416 +1631680 5751416 1631720 5751408 1631584 5751416 1620224 5752520 +1631720 5751408 1629072 5748768 1629056 5748960 1631584 5751416 +1631720 5751408 1629072 5748768 1631584 5751416 1631680 5751416 +1631720 5751408 1629048 5748600 1629072 5748768 1631584 5751416 +1629056 5748960 1629000 5749168 1631584 5751416 1629072 5748768 +1629000 5749168 1628896 5749392 1628944 5749920 1631584 5751416 +1629000 5749168 1628944 5749920 1631584 5751416 1629056 5748960 +1628896 5750208 1628808 5750592 1631584 5751416 1628952 5750072 +1631680 5751416 1631584 5751416 1620224 5752520 1620152 5752552 +1631680 5751416 1631720 5751408 1631584 5751416 1620152 5752552 +1631680 5751416 1631584 5751416 1620152 5752552 1599875 5760125 +1631584 5751416 1628768 5750704 1620224 5752520 1620152 5752552 +1631584 5751416 1631432 5751368 1628808 5750592 1628800 5750648 +1631584 5751416 1628896 5750208 1631432 5751368 1628800 5750648 +1631432 5751368 1628896 5750208 1628808 5750592 1628800 5750648 +1628808 5750592 1631432 5751368 1628896 5750208 1628768 5750400 +1631584 5751416 1631432 5751368 1628800 5750648 1628768 5750704 +1631432 5751368 1628808 5750592 1628800 5750648 1628768 5750704 +1631584 5751416 1628896 5750208 1631432 5751368 1628768 5750704 +1631584 5751416 1631432 5751368 1628768 5750704 1620224 5752520 +1631584 5751416 1631432 5751368 1620224 5752520 1620152 5752552 +1631584 5751416 1628896 5750208 1631432 5751368 1620224 5752520 +1628768 5750704 1628664 5750680 1620224 5752520 1631432 5751368 +1631432 5751368 1628800 5750648 1628768 5750704 1620224 5752520 +1628896 5750208 1631432 5751368 1631584 5751416 1628952 5750072 +1631432 5751368 1620224 5752520 1631584 5751416 1628952 5750072 +1628896 5750208 1628808 5750592 1631432 5751368 1628952 5750072 +1631584 5751416 1628944 5749920 1628952 5750072 1631432 5751368 +1631584 5751416 1628944 5749920 1631432 5751368 1620224 5752520 +1631584 5751416 1629000 5749168 1628944 5749920 1631432 5751368 +1631584 5751416 1629000 5749168 1631432 5751368 1620224 5752520 +1629000 5749168 1628896 5749392 1628944 5749920 1631432 5751368 +1628944 5749920 1628952 5750072 1631432 5751368 1629000 5749168 +1631584 5751416 1629056 5748960 1629000 5749168 1631432 5751368 +1631584 5751416 1629056 5748960 1631432 5751368 1620224 5752520 +1629000 5749168 1628944 5749920 1631432 5751368 1629056 5748960 +1631584 5751416 1629072 5748768 1629056 5748960 1631432 5751368 +1631584 5751416 1629072 5748768 1631432 5751368 1620224 5752520 +1631584 5751416 1631720 5751408 1629072 5748768 1631432 5751368 +1631584 5751416 1631720 5751408 1631432 5751368 1620224 5752520 +1631584 5751416 1631680 5751416 1631720 5751408 1631432 5751368 +1631720 5751408 1629048 5748600 1629072 5748768 1631432 5751368 +1629072 5748768 1629056 5748960 1631432 5751368 1631720 5751408 +1629056 5748960 1629000 5749168 1631432 5751368 1629072 5748768 +1628952 5750072 1628896 5750208 1631432 5751368 1628944 5749920 +1629000 5749168 1631272 5751256 1631432 5751368 1629056 5748960 +1631272 5751256 1628944 5749920 1631432 5751368 1629056 5748960 +1628944 5749920 1631272 5751256 1629000 5749168 1628896 5749392 +1629000 5749168 1628944 5749920 1631272 5751256 1629056 5748960 +1631432 5751368 1631272 5751256 1628944 5749920 1628952 5750072 +1631432 5751368 1629056 5748960 1631272 5751256 1628952 5750072 +1631272 5751256 1629000 5749168 1628944 5749920 1628952 5750072 +1631432 5751368 1629072 5748768 1629056 5748960 1631272 5751256 +1631432 5751368 1629072 5748768 1631272 5751256 1628952 5750072 +1629056 5748960 1629000 5749168 1631272 5751256 1629072 5748768 +1631432 5751368 1631720 5751408 1629072 5748768 1631272 5751256 +1631432 5751368 1631720 5751408 1631272 5751256 1628952 5750072 +1631432 5751368 1631584 5751416 1631720 5751408 1631272 5751256 +1631720 5751408 1629048 5748600 1629072 5748768 1631272 5751256 +1631720 5751408 1628960 5748368 1629048 5748600 1631272 5751256 +1631720 5751408 1629048 5748600 1631272 5751256 1631432 5751368 +1629072 5748768 1629056 5748960 1631272 5751256 1629048 5748600 +1631432 5751368 1631272 5751256 1628952 5750072 1628896 5750208 +1631432 5751368 1631720 5751408 1631272 5751256 1628896 5750208 +1631432 5751368 1631272 5751256 1628896 5750208 1628808 5750592 +1631432 5751368 1631272 5751256 1628808 5750592 1628800 5750648 +1631432 5751368 1631272 5751256 1628800 5750648 1628768 5750704 +1631272 5751256 1628808 5750592 1628800 5750648 1628768 5750704 +1631432 5751368 1631720 5751408 1631272 5751256 1628768 5750704 +1631272 5751256 1628896 5750208 1628808 5750592 1628800 5750648 +1628896 5750208 1628768 5750400 1628808 5750592 1631272 5751256 +1631272 5751256 1628944 5749920 1628952 5750072 1628896 5750208 +1631432 5751368 1631272 5751256 1628768 5750704 1620224 5752520 +1631272 5751256 1628952 5750072 1628896 5750208 1628808 5750592 +1629048 5748600 1631152 5751080 1631720 5751408 1628960 5748368 +1631272 5751256 1631152 5751080 1629048 5748600 1629072 5748768 +1631720 5751408 1631152 5751080 1631272 5751256 1631432 5751368 +1631272 5751256 1631720 5751408 1631152 5751080 1629072 5748768 +1631152 5751080 1631272 5751256 1631720 5751408 1628960 5748368 +1629048 5748600 1629072 5748768 1631152 5751080 1628960 5748368 +1631720 5751408 1628776 5748096 1628960 5748368 1631152 5751080 +1631272 5751256 1631152 5751080 1629072 5748768 1629056 5748960 +1631272 5751256 1631152 5751080 1629056 5748960 1629000 5749168 +1631152 5751080 1629048 5748600 1629072 5748768 1629056 5748960 +1631272 5751256 1631720 5751408 1631152 5751080 1629000 5749168 +1631272 5751256 1631152 5751080 1629000 5749168 1628944 5749920 +1631152 5751080 1629056 5748960 1629000 5749168 1628944 5749920 +1629000 5749168 1628896 5749392 1628944 5749920 1631152 5751080 +1631272 5751256 1631152 5751080 1628944 5749920 1628952 5750072 +1631272 5751256 1631720 5751408 1631152 5751080 1628952 5750072 +1631152 5751080 1629000 5749168 1628944 5749920 1628952 5750072 +1631272 5751256 1631152 5751080 1628952 5750072 1628896 5750208 +1631152 5751080 1628944 5749920 1628952 5750072 1628896 5750208 +1631272 5751256 1631720 5751408 1631152 5751080 1628896 5750208 +1631152 5751080 1629072 5748768 1629056 5748960 1629000 5749168 +1631272 5751256 1631152 5751080 1628896 5750208 1628808 5750592 +1631272 5751256 1631152 5751080 1628808 5750592 1628800 5750648 +1631272 5751256 1631152 5751080 1628800 5750648 1628768 5750704 +1631272 5751256 1631152 5751080 1628768 5750704 1631432 5751368 +1631152 5751080 1628808 5750592 1628800 5750648 1628768 5750704 +1631272 5751256 1631720 5751408 1631152 5751080 1628768 5750704 +1628896 5750208 1628768 5750400 1628808 5750592 1631152 5751080 +1631152 5751080 1628952 5750072 1628896 5750208 1628808 5750592 +1631152 5751080 1628896 5750208 1628808 5750592 1628800 5750648 +1629072 5748768 1630840 5750760 1631152 5751080 1629048 5748600 +1629072 5748768 1629056 5748960 1630840 5750760 1629048 5748600 +1631152 5751080 1628960 5748368 1629048 5748600 1630840 5750760 +1631152 5751080 1631720 5751408 1628960 5748368 1630840 5750760 +1629048 5748600 1629072 5748768 1630840 5750760 1628960 5748368 +1631152 5751080 1631272 5751256 1631720 5751408 1630840 5750760 +1628960 5748368 1629048 5748600 1630840 5750760 1631720 5751408 +1630840 5750760 1629056 5748960 1631152 5751080 1631720 5751408 +1631720 5751408 1628776 5748096 1628960 5748368 1630840 5750760 +1631152 5751080 1630840 5750760 1629056 5748960 1629000 5749168 +1631152 5751080 1630840 5750760 1629000 5749168 1628944 5749920 +1629000 5749168 1628896 5749392 1628944 5749920 1630840 5750760 +1630840 5750760 1629072 5748768 1629056 5748960 1629000 5749168 +1631152 5751080 1630840 5750760 1628944 5749920 1628952 5750072 +1630840 5750760 1629000 5749168 1628944 5749920 1628952 5750072 +1631152 5751080 1630840 5750760 1628952 5750072 1628896 5750208 +1630840 5750760 1628944 5749920 1628952 5750072 1628896 5750208 +1631152 5751080 1631720 5751408 1630840 5750760 1628896 5750208 +1631152 5751080 1630840 5750760 1628896 5750208 1628808 5750592 +1630840 5750760 1628952 5750072 1628896 5750208 1628808 5750592 +1631152 5751080 1631720 5751408 1630840 5750760 1628808 5750592 +1628896 5750208 1628768 5750400 1628808 5750592 1630840 5750760 +1630840 5750760 1629056 5748960 1629000 5749168 1628944 5749920 +1631152 5751080 1630840 5750760 1628808 5750592 1628800 5750648 +1631152 5751080 1630840 5750760 1628800 5750648 1628768 5750704 +1631152 5751080 1630840 5750760 1628768 5750704 1631272 5751256 +1631152 5751080 1631720 5751408 1630840 5750760 1628768 5750704 +1630840 5750760 1628896 5750208 1628808 5750592 1628800 5750648 +1630840 5750760 1628808 5750592 1628800 5750648 1628768 5750704 +1631720 5751408 1630840 5750704 1630840 5750760 1631152 5751080 +1631720 5751408 1628960 5748368 1630840 5750704 1631152 5751080 +1631720 5751408 1630840 5750704 1631152 5751080 1631272 5751256 +1630840 5750704 1628960 5748368 1630840 5750760 1631152 5751080 +1630840 5750760 1630840 5750704 1628960 5748368 1629048 5748600 +1630840 5750704 1631720 5751408 1628960 5748368 1629048 5748600 +1630840 5750760 1630840 5750704 1629048 5748600 1629072 5748768 +1630840 5750760 1630840 5750704 1629072 5748768 1629056 5748960 +1630840 5750704 1629048 5748600 1629072 5748768 1629056 5748960 +1630840 5750760 1630840 5750704 1629056 5748960 1629000 5749168 +1630840 5750704 1629072 5748768 1629056 5748960 1629000 5749168 +1630840 5750760 1631152 5751080 1630840 5750704 1629000 5749168 +1630840 5750704 1628960 5748368 1629048 5748600 1629072 5748768 +1628960 5748368 1630840 5750704 1631720 5751408 1628776 5748096 +1630840 5750760 1630840 5750704 1629000 5749168 1628944 5749920 +1630840 5750760 1630840 5750704 1628944 5749920 1628952 5750072 +1629000 5749168 1628896 5749392 1628944 5749920 1630840 5750704 +1630840 5750704 1629056 5748960 1629000 5749168 1628944 5749920 +1630840 5750760 1631152 5751080 1630840 5750704 1628952 5750072 +1630840 5750760 1630840 5750704 1628952 5750072 1628896 5750208 +1630840 5750704 1628944 5749920 1628952 5750072 1628896 5750208 +1630840 5750760 1630840 5750704 1628896 5750208 1628808 5750592 +1630840 5750760 1631152 5751080 1630840 5750704 1628808 5750592 +1630840 5750704 1628952 5750072 1628896 5750208 1628808 5750592 +1628896 5750208 1628768 5750400 1628808 5750592 1630840 5750704 +1630840 5750760 1630840 5750704 1628808 5750592 1628800 5750648 +1630840 5750704 1629000 5749168 1628944 5749920 1628952 5750072 +1630840 5750704 1630864 5750688 1628960 5748368 1629048 5748600 +1630840 5750704 1631720 5751408 1630864 5750688 1629048 5748600 +1631720 5751408 1630864 5750688 1630840 5750704 1631152 5751080 +1630864 5750688 1629048 5748600 1630840 5750704 1631152 5751080 +1630840 5750704 1630840 5750760 1631152 5751080 1630864 5750688 +1630840 5750704 1630840 5750760 1630864 5750688 1629048 5748600 +1631152 5751080 1631720 5751408 1630864 5750688 1630840 5750760 +1630864 5750688 1631720 5751408 1628960 5748368 1629048 5748600 +1631720 5751408 1630864 5750688 1631152 5751080 1631272 5751256 +1630840 5750704 1630864 5750688 1629048 5748600 1629072 5748768 +1630864 5750688 1628960 5748368 1629048 5748600 1629072 5748768 +1630840 5750704 1630840 5750760 1630864 5750688 1629072 5748768 +1630840 5750704 1630864 5750688 1629072 5748768 1629056 5748960 +1630840 5750704 1630864 5750688 1629056 5748960 1629000 5749168 +1630840 5750704 1630840 5750760 1630864 5750688 1629000 5749168 +1630864 5750688 1629072 5748768 1629056 5748960 1629000 5749168 +1630840 5750704 1630864 5750688 1629000 5749168 1628944 5749920 +1630864 5750688 1629056 5748960 1629000 5749168 1628944 5749920 +1630840 5750704 1630840 5750760 1630864 5750688 1628944 5749920 +1629000 5749168 1628896 5749392 1628944 5749920 1630864 5750688 +1630864 5750688 1629048 5748600 1629072 5748768 1629056 5748960 +1628960 5748368 1630864 5750688 1631720 5751408 1628776 5748096 +1630840 5750704 1630864 5750688 1628944 5749920 1628952 5750072 +1631720 5751408 1628960 5748368 1630864 5750688 1631152 5751080 +1630864 5750688 1630912 5750672 1628960 5748368 1629048 5748600 +1630864 5750688 1630912 5750672 1629048 5748600 1629072 5748768 +1630912 5750672 1628960 5748368 1629048 5748600 1629072 5748768 +1630864 5750688 1631720 5751408 1630912 5750672 1629072 5748768 +1630864 5750688 1630912 5750672 1629072 5748768 1629056 5748960 +1630912 5750672 1629048 5748600 1629072 5748768 1629056 5748960 +1630864 5750688 1630912 5750672 1629056 5748960 1629000 5749168 +1630864 5750688 1631720 5751408 1630912 5750672 1629056 5748960 +1628960 5748368 1630912 5750672 1631720 5751408 1628776 5748096 +1631720 5751408 1629872 5726768 1628776 5748096 1630912 5750672 +1630912 5750672 1630864 5750688 1631720 5751408 1628776 5748096 +1631720 5751408 1630912 5750672 1630864 5750688 1631152 5751080 +1630864 5750688 1630840 5750760 1631152 5751080 1630912 5750672 +1630864 5750688 1630840 5750704 1630840 5750760 1630912 5750672 +1630912 5750672 1629056 5748960 1630864 5750688 1630840 5750760 +1631720 5751408 1630912 5750672 1631152 5751080 1631272 5751256 +1631720 5751408 1628776 5748096 1630912 5750672 1631152 5751080 +1631152 5751080 1631720 5751408 1630912 5750672 1630840 5750760 +1630912 5750672 1628776 5748096 1628960 5748368 1629048 5748600 +1628776 5748096 1631064 5750648 1629872 5726768 1628120 5747304 +1629872 5726768 1631064 5750648 1631720 5751408 1629928 5726696 +1631720 5751408 1629944 5726624 1629928 5726696 1631064 5750648 +1631720 5751408 1631064 5750648 1628776 5748096 1630912 5750672 +1628776 5748096 1628960 5748368 1630912 5750672 1631064 5750648 +1630912 5750672 1631720 5751408 1631064 5750648 1628960 5748368 +1631064 5750648 1630912 5750672 1631720 5751408 1629928 5726696 +1631720 5751408 1631064 5750648 1630912 5750672 1631152 5751080 +1631064 5750648 1628960 5748368 1630912 5750672 1631152 5751080 +1631720 5751408 1631064 5750648 1631152 5751080 1631272 5751256 +1631720 5751408 1629928 5726696 1631064 5750648 1631152 5751080 +1629872 5726768 1628776 5748096 1631064 5750648 1629928 5726696 +1630912 5750672 1630840 5750760 1631152 5751080 1631064 5750648 +1630912 5750672 1630840 5750760 1631064 5750648 1628960 5748368 +1630912 5750672 1630864 5750688 1630840 5750760 1631064 5750648 +1631152 5751080 1631720 5751408 1631064 5750648 1630840 5750760 +1628960 5748368 1629048 5748600 1630912 5750672 1631064 5750648 +1630912 5750672 1630840 5750760 1631064 5750648 1629048 5748600 +1629048 5748600 1629072 5748768 1630912 5750672 1631064 5750648 +1630912 5750672 1630840 5750760 1631064 5750648 1629072 5748768 +1629072 5748768 1629056 5748960 1630912 5750672 1631064 5750648 +1630912 5750672 1630840 5750760 1631064 5750648 1629056 5748960 +1629072 5748768 1629056 5748960 1631064 5750648 1629048 5748600 +1629056 5748960 1630864 5750688 1630912 5750672 1631064 5750648 +1628960 5748368 1629048 5748600 1631064 5750648 1628776 5748096 +1629048 5748600 1629072 5748768 1631064 5750648 1628960 5748368 +1631064 5750648 1629872 5726768 1628776 5748096 1628960 5748368 +1629928 5726696 1631168 5750568 1631720 5751408 1629944 5726624 +1631064 5750648 1631168 5750568 1629928 5726696 1629872 5726768 +1631720 5751408 1631168 5750568 1631064 5750648 1631152 5751080 +1631720 5751408 1629928 5726696 1631168 5750568 1631152 5751080 +1631720 5751408 1631168 5750568 1631152 5751080 1631272 5751256 +1631168 5750568 1631720 5751408 1629928 5726696 1629872 5726768 +1631064 5750648 1630840 5750760 1631152 5751080 1631168 5750568 +1631064 5750648 1631168 5750568 1629872 5726768 1628776 5748096 +1629872 5726768 1628120 5747304 1628776 5748096 1631168 5750568 +1631168 5750568 1629928 5726696 1629872 5726768 1628776 5748096 +1631064 5750648 1631152 5751080 1631168 5750568 1628776 5748096 +1631064 5750648 1631168 5750568 1628776 5748096 1628960 5748368 +1631064 5750648 1631168 5750568 1628960 5748368 1629048 5748600 +1631168 5750568 1629872 5726768 1628776 5748096 1628960 5748368 +1631064 5750648 1631152 5751080 1631168 5750568 1629048 5748600 +1631064 5750648 1631168 5750568 1629048 5748600 1629072 5748768 +1631064 5750648 1631168 5750568 1629072 5748768 1629056 5748960 +1631064 5750648 1631168 5750568 1629056 5748960 1630912 5750672 +1631168 5750568 1629072 5748768 1629056 5748960 1630912 5750672 +1629056 5748960 1630864 5750688 1630912 5750672 1631168 5750568 +1631168 5750568 1628960 5748368 1629048 5748600 1629072 5748768 +1631064 5750648 1631152 5751080 1631168 5750568 1630912 5750672 +1631168 5750568 1629048 5748600 1629072 5748768 1629056 5748960 +1631168 5750568 1628776 5748096 1628960 5748368 1629048 5748600 +1629928 5726696 1631232 5750544 1631720 5751408 1629944 5726624 +1631720 5751408 1631232 5750544 1631168 5750568 1631152 5751080 +1631720 5751408 1629928 5726696 1631232 5750544 1631152 5751080 +1631720 5751408 1631232 5750544 1631152 5751080 1631272 5751256 +1631232 5750544 1631168 5750568 1631152 5751080 1631272 5751256 +1631720 5751408 1629928 5726696 1631232 5750544 1631272 5751256 +1631720 5751408 1631232 5750544 1631272 5751256 1631432 5751368 +1631168 5750568 1631064 5750648 1631152 5751080 1631232 5750544 +1631168 5750568 1631232 5750544 1629928 5726696 1629872 5726768 +1631168 5750568 1631232 5750544 1629872 5726768 1628776 5748096 +1629872 5726768 1628120 5747304 1628776 5748096 1631232 5750544 +1631232 5750544 1631720 5751408 1629928 5726696 1629872 5726768 +1631232 5750544 1629928 5726696 1629872 5726768 1628776 5748096 +1631232 5750544 1628776 5748096 1631168 5750568 1631152 5751080 +1631168 5750568 1631232 5750544 1628776 5748096 1628960 5748368 +1631232 5750544 1629872 5726768 1628776 5748096 1628960 5748368 +1631168 5750568 1631152 5751080 1631232 5750544 1628960 5748368 +1631168 5750568 1631232 5750544 1628960 5748368 1629048 5748600 +1631168 5750568 1631232 5750544 1629048 5748600 1629072 5748768 +1631168 5750568 1631152 5751080 1631232 5750544 1629072 5748768 +1631232 5750544 1628776 5748096 1628960 5748368 1629048 5748600 +1631168 5750568 1631232 5750544 1629072 5748768 1629056 5748960 +1631168 5750568 1631232 5750544 1629056 5748960 1630912 5750672 +1631232 5750544 1629048 5748600 1629072 5748768 1629056 5748960 +1631168 5750568 1631152 5751080 1631232 5750544 1629056 5748960 +1631232 5750544 1628960 5748368 1629048 5748600 1629072 5748768 +1629928 5726696 1631392 5750568 1631720 5751408 1629944 5726624 +1631232 5750544 1631392 5750568 1629928 5726696 1629872 5726768 +1631232 5750544 1631720 5751408 1631392 5750568 1629872 5726768 +1631720 5751408 1631392 5750568 1631232 5750544 1631272 5751256 +1631720 5751408 1629928 5726696 1631392 5750568 1631272 5751256 +1631392 5750568 1629872 5726768 1631232 5750544 1631272 5751256 +1631392 5750568 1631720 5751408 1629928 5726696 1629872 5726768 +1631720 5751408 1631392 5750568 1631272 5751256 1631432 5751368 +1631720 5751408 1631392 5750568 1631432 5751368 1631584 5751416 +1631720 5751408 1629928 5726696 1631392 5750568 1631432 5751368 +1631392 5750568 1631232 5750544 1631272 5751256 1631432 5751368 +1631232 5750544 1631152 5751080 1631272 5751256 1631392 5750568 +1631232 5750544 1631168 5750568 1631152 5751080 1631392 5750568 +1631232 5750544 1631168 5750568 1631392 5750568 1629872 5726768 +1631272 5751256 1631432 5751368 1631392 5750568 1631152 5751080 +1631152 5751080 1631272 5751256 1631392 5750568 1631168 5750568 +1631168 5750568 1631064 5750648 1631152 5751080 1631392 5750568 +1631168 5750568 1631064 5750648 1631392 5750568 1631232 5750544 +1631152 5751080 1631272 5751256 1631392 5750568 1631064 5750648 +1631232 5750544 1631392 5750568 1629872 5726768 1628776 5748096 +1629872 5726768 1628120 5747304 1628776 5748096 1631392 5750568 +1631232 5750544 1631392 5750568 1628776 5748096 1628960 5748368 +1631392 5750568 1629928 5726696 1629872 5726768 1628776 5748096 +1631232 5750544 1631168 5750568 1631392 5750568 1628960 5748368 +1631392 5750568 1629872 5726768 1628776 5748096 1628960 5748368 +1631064 5750648 1630840 5750760 1631152 5751080 1631392 5750568 +1631232 5750544 1631392 5750568 1628960 5748368 1629048 5748600 +1631392 5750568 1628776 5748096 1628960 5748368 1629048 5748600 +1631232 5750544 1631168 5750568 1631392 5750568 1629048 5748600 +1631232 5750544 1631392 5750568 1629048 5748600 1629072 5748768 +1629928 5726696 1631624 5750656 1631720 5751408 1629944 5726624 +1631720 5751408 1751256 5699792 1629944 5726624 1631624 5750656 +1629944 5726624 1629928 5726696 1631624 5750656 1751256 5699792 +1631720 5751408 1631624 5750656 1631392 5750568 1631432 5751368 +1631720 5751408 1631624 5750656 1631432 5751368 1631584 5751416 +1631624 5750656 1631392 5750568 1631432 5751368 1631584 5751416 +1629928 5726696 1631392 5750568 1631624 5750656 1629944 5726624 +1631392 5750568 1631624 5750656 1629928 5726696 1629872 5726768 +1631624 5750656 1629944 5726624 1629928 5726696 1629872 5726768 +1631392 5750568 1631624 5750656 1629872 5726768 1628776 5748096 +1629872 5726768 1628120 5747304 1628776 5748096 1631624 5750656 +1631624 5750656 1629928 5726696 1629872 5726768 1628776 5748096 +1631624 5750656 1628776 5748096 1631392 5750568 1631432 5751368 +1631720 5751408 1631624 5750656 1631584 5751416 1631680 5751416 +1631392 5750568 1631272 5751256 1631432 5751368 1631624 5750656 +1631432 5751368 1631584 5751416 1631624 5750656 1631272 5751256 +1631392 5750568 1631152 5751080 1631272 5751256 1631624 5750656 +1631392 5750568 1631152 5751080 1631624 5750656 1628776 5748096 +1631272 5751256 1631432 5751368 1631624 5750656 1631152 5751080 +1631392 5750568 1631064 5750648 1631152 5751080 1631624 5750656 +1751256 5699792 1629944 5726576 1629944 5726624 1631624 5750656 +1631720 5751408 1760125 5760125 1751256 5699792 1631624 5750656 +1751256 5699792 1629944 5726624 1631624 5750656 1760125 5760125 +1760125 5760125 1751376 5699848 1751256 5699792 1631624 5750656 +1631720 5751408 1599875 5760125 1760125 5760125 1631624 5750656 +1631624 5750656 1631584 5751416 1631720 5751408 1760125 5760125 +1631392 5750568 1631624 5750656 1628776 5748096 1628960 5748368 +1631392 5750568 1631624 5750656 1628960 5748368 1629048 5748600 +1631624 5750656 1629872 5726768 1628776 5748096 1628960 5748368 +1631392 5750568 1631152 5751080 1631624 5750656 1628960 5748368 +1760125 5760125 1631808 5750832 1631720 5751408 1599875 5760125 +1631624 5750656 1631808 5750832 1760125 5760125 1751256 5699792 +1631624 5750656 1631808 5750832 1751256 5699792 1629944 5726624 +1631624 5750656 1631808 5750832 1629944 5726624 1629928 5726696 +1631808 5750832 1751256 5699792 1629944 5726624 1629928 5726696 +1760125 5760125 1751376 5699848 1751256 5699792 1631808 5750832 +1631624 5750656 1631808 5750832 1629928 5726696 1629872 5726768 +1631624 5750656 1631720 5751408 1631808 5750832 1629928 5726696 +1751256 5699792 1629944 5726576 1629944 5726624 1631808 5750832 +1631808 5750832 1760125 5760125 1751256 5699792 1629944 5726624 +1631720 5751408 1631808 5750832 1631624 5750656 1631584 5751416 +1631624 5750656 1631432 5751368 1631584 5751416 1631808 5750832 +1631624 5750656 1631272 5751256 1631432 5751368 1631808 5750832 +1631432 5751368 1631584 5751416 1631808 5750832 1631272 5751256 +1631808 5750832 1629928 5726696 1631624 5750656 1631272 5751256 +1631720 5751408 1631808 5750832 1631584 5751416 1631680 5751416 +1631624 5750656 1631152 5751080 1631272 5751256 1631808 5750832 +1631720 5751408 1760125 5760125 1631808 5750832 1631680 5751416 +1631584 5751416 1631680 5751416 1631808 5750832 1631432 5751368 +1631808 5750832 1631720 5751408 1760125 5760125 1751256 5699792 +1760125 5760125 1631896 5750984 1631720 5751408 1599875 5760125 +1631720 5751408 1631896 5750984 1631808 5750832 1631680 5751416 +1631720 5751408 1760125 5760125 1631896 5750984 1631680 5751416 +1631808 5750832 1631584 5751416 1631680 5751416 1631896 5750984 +1631680 5751416 1631720 5751408 1631896 5750984 1631584 5751416 +1631808 5750832 1631432 5751368 1631584 5751416 1631896 5750984 +1631808 5750832 1631272 5751256 1631432 5751368 1631896 5750984 +1631584 5751416 1631680 5751416 1631896 5750984 1631432 5751368 +1631808 5750832 1631896 5750984 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1631896 5750984 +1631896 5750984 1631720 5751408 1760125 5760125 1751256 5699792 +1631808 5750832 1631896 5750984 1751256 5699792 1629944 5726624 +1631808 5750832 1631896 5750984 1629944 5726624 1629928 5726696 +1631808 5750832 1631896 5750984 1629928 5726696 1631624 5750656 +1751256 5699792 1629944 5726576 1629944 5726624 1631896 5750984 +1631896 5750984 1751256 5699792 1629944 5726624 1629928 5726696 +1631896 5750984 1760125 5760125 1751256 5699792 1629944 5726624 +1631896 5750984 1629928 5726696 1631808 5750832 1631432 5751368 +1631720 5751408 1631920 5751080 1631896 5750984 1631680 5751416 +1631720 5751408 1760125 5760125 1631920 5751080 1631680 5751416 +1760125 5760125 1631920 5751080 1631720 5751408 1599875 5760125 +1631896 5750984 1631584 5751416 1631680 5751416 1631920 5751080 +1631680 5751416 1631720 5751408 1631920 5751080 1631584 5751416 +1631896 5750984 1631432 5751368 1631584 5751416 1631920 5751080 +1631896 5750984 1631920 5751080 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1631920 5751080 +1631920 5751080 1631720 5751408 1760125 5760125 1751256 5699792 +1631920 5751080 1751256 5699792 1631896 5750984 1631584 5751416 +1631896 5750984 1631920 5751080 1751256 5699792 1629944 5726624 +1631720 5751408 1631896 5751232 1631920 5751080 1631680 5751416 +1631720 5751408 1760125 5760125 1631896 5751232 1631680 5751416 +1631920 5751080 1631584 5751416 1631680 5751416 1631896 5751232 +1631680 5751416 1631720 5751408 1631896 5751232 1631584 5751416 +1631920 5751080 1631896 5751232 1760125 5760125 1751256 5699792 +1631896 5751232 1760125 5760125 1631920 5751080 1631584 5751416 +1760125 5760125 1631896 5751232 1631720 5751408 1599875 5760125 +1631920 5751080 1631896 5750984 1631584 5751416 1631896 5751232 +1631896 5751232 1631896 5751280 1760125 5760125 1631920 5751080 +1631896 5751232 1631720 5751408 1631896 5751280 1631920 5751080 +1631720 5751408 1631896 5751280 1631896 5751232 1631680 5751416 +1631896 5751280 1631720 5751408 1760125 5760125 1631920 5751080 +1760125 5760125 1751256 5699792 1631920 5751080 1631896 5751280 +1760125 5760125 1631896 5751280 1631720 5751408 1599875 5760125 +1631896 5751280 1631856 5751344 1760125 5760125 1631920 5751080 +1631720 5751408 1631856 5751344 1631896 5751280 1631896 5751232 +1631720 5751408 1631856 5751344 1631896 5751232 1631680 5751416 +1631856 5751344 1760125 5760125 1631896 5751280 1631896 5751232 +1760125 5760125 1631856 5751344 1631720 5751408 1599875 5760125 +1631720 5751408 1760125 5760125 1631856 5751344 1631896 5751232 +1627704 5749168 1628368 5748664 1628776 5748096 1628504 5747840 +1627704 5749168 1628368 5748664 1628504 5747840 1628304 5747744 +1627704 5749168 1628960 5748368 1628368 5748664 1628304 5747744 +1628368 5748664 1628776 5748096 1628504 5747840 1628304 5747744 +1628960 5748368 1628368 5748664 1627704 5749168 1629048 5748600 +1627704 5749168 1629072 5748768 1629048 5748600 1628368 5748664 +1628960 5748368 1628776 5748096 1628368 5748664 1629048 5748600 +1627704 5749168 1629056 5748960 1629072 5748768 1628368 5748664 +1629072 5748768 1629048 5748600 1628368 5748664 1629056 5748960 +1627704 5749168 1629000 5749168 1629056 5748960 1628368 5748664 +1627704 5749168 1628896 5749392 1629000 5749168 1628368 5748664 +1629056 5748960 1629072 5748768 1628368 5748664 1629000 5749168 +1629000 5749168 1629056 5748960 1628368 5748664 1628896 5749392 +1628368 5748664 1628304 5747744 1627704 5749168 1628896 5749392 +1629048 5748600 1628960 5748368 1628368 5748664 1629072 5748768 +1627704 5749168 1628368 5748664 1628304 5747744 1627320 5748856 +1628368 5748664 1628504 5747840 1628304 5747744 1627320 5748856 +1627704 5749168 1628896 5749392 1628368 5748664 1627320 5748856 +1628304 5747744 1628200 5747680 1627320 5748856 1628368 5748664 +1628304 5747744 1628200 5747680 1628368 5748664 1628504 5747840 +1627320 5748856 1627704 5749168 1628368 5748664 1628200 5747680 +1627704 5749168 1628248 5749736 1628896 5749392 1628368 5748664 +1628896 5749392 1629000 5749168 1628368 5748664 1628248 5749736 +1627704 5749168 1628248 5749736 1628368 5748664 1627320 5748856 +1628248 5749736 1628856 5749520 1628896 5749392 1628368 5748664 +1628368 5748664 1628960 5748368 1628776 5748096 1628504 5747840 +1628200 5747680 1626872 5748264 1627320 5748856 1628368 5748664 +1627704 5749168 1628296 5748776 1628368 5748664 1627320 5748856 +1627704 5749168 1628248 5749736 1628296 5748776 1627320 5748856 +1628368 5748664 1628200 5747680 1627320 5748856 1628296 5748776 +1628368 5748664 1628296 5748776 1628248 5749736 1628896 5749392 +1628296 5748776 1627704 5749168 1628248 5749736 1628896 5749392 +1628368 5748664 1628296 5748776 1628896 5749392 1629000 5749168 +1628368 5748664 1628296 5748776 1629000 5749168 1629056 5748960 +1628296 5748776 1628896 5749392 1629000 5749168 1629056 5748960 +1628368 5748664 1628296 5748776 1629056 5748960 1629072 5748768 +1628248 5749736 1628856 5749520 1628896 5749392 1628296 5748776 +1628296 5748776 1628248 5749736 1628896 5749392 1629000 5749168 +1628296 5748776 1629056 5748960 1628368 5748664 1627320 5748856 +1628296 5748776 1628280 5748856 1628248 5749736 1628896 5749392 +1628296 5748776 1627704 5749168 1628280 5748856 1628896 5749392 +1627704 5749168 1628280 5748856 1628296 5748776 1627320 5748856 +1628280 5748856 1627704 5749168 1628248 5749736 1628896 5749392 +1628248 5749736 1628856 5749520 1628896 5749392 1628280 5748856 +1628296 5748776 1628280 5748856 1628896 5749392 1629000 5749168 +1628280 5748856 1628248 5749736 1628896 5749392 1629000 5749168 +1628296 5748776 1627704 5749168 1628280 5748856 1629000 5749168 +1628296 5748776 1628280 5748856 1629000 5749168 1629056 5748960 +1628296 5748776 1627704 5749168 1628280 5748856 1629056 5748960 +1628296 5748776 1628280 5748856 1629056 5748960 1628368 5748664 +1628296 5748776 1627704 5749168 1628280 5748856 1628368 5748664 +1628280 5748856 1629000 5749168 1629056 5748960 1628368 5748664 +1629056 5748960 1629072 5748768 1628368 5748664 1628280 5748856 +1628280 5748856 1628896 5749392 1629000 5749168 1629056 5748960 +1628280 5748856 1628312 5748912 1628896 5749392 1629000 5749168 +1628312 5748912 1628248 5749736 1628896 5749392 1629000 5749168 +1628248 5749736 1628312 5748912 1628280 5748856 1627704 5749168 +1628280 5748856 1628296 5748776 1627704 5749168 1628312 5748912 +1628280 5748856 1627704 5749168 1628312 5748912 1629000 5749168 +1628896 5749392 1628312 5748912 1628248 5749736 1628856 5749520 +1628896 5749392 1629000 5749168 1628312 5748912 1628856 5749520 +1628248 5749736 1628848 5749672 1628856 5749520 1628312 5748912 +1628280 5748856 1628312 5748912 1629000 5749168 1629056 5748960 +1628312 5748912 1628896 5749392 1629000 5749168 1629056 5748960 +1628280 5748856 1628312 5748912 1629056 5748960 1628368 5748664 +1629056 5748960 1629072 5748768 1628368 5748664 1628312 5748912 +1628280 5748856 1628312 5748912 1628368 5748664 1628296 5748776 +1628312 5748912 1629056 5748960 1628368 5748664 1628296 5748776 +1628280 5748856 1627704 5749168 1628312 5748912 1628296 5748776 +1628312 5748912 1629000 5749168 1629056 5748960 1628368 5748664 +1628248 5749736 1628856 5749520 1628312 5748912 1627704 5749168 +1627704 5749168 1628296 5748976 1628312 5748912 1628280 5748856 +1627704 5749168 1628248 5749736 1628296 5748976 1628280 5748856 +1627704 5749168 1628296 5748976 1628280 5748856 1628296 5748776 +1628296 5748976 1628248 5749736 1628312 5748912 1628280 5748856 +1628312 5748912 1628296 5748976 1628248 5749736 1628856 5749520 +1628312 5748912 1628280 5748856 1628296 5748976 1628856 5749520 +1628248 5749736 1628848 5749672 1628856 5749520 1628296 5748976 +1628312 5748912 1628296 5748976 1628856 5749520 1628896 5749392 +1628312 5748912 1628296 5748976 1628896 5749392 1629000 5749168 +1628312 5748912 1628296 5748976 1629000 5749168 1629056 5748960 +1628312 5748912 1628280 5748856 1628296 5748976 1629000 5749168 +1628296 5748976 1628856 5749520 1628896 5749392 1629000 5749168 +1628296 5748976 1628248 5749736 1628856 5749520 1628896 5749392 +1628296 5748976 1627704 5749168 1628248 5749736 1628856 5749520 +1627704 5749168 1628256 5749016 1628296 5748976 1628280 5748856 +1627704 5749168 1628256 5749016 1628280 5748856 1628296 5748776 +1628296 5748976 1628312 5748912 1628280 5748856 1628256 5749016 +1627704 5749168 1628248 5749736 1628256 5749016 1628280 5748856 +1628296 5748976 1628256 5749016 1628248 5749736 1628856 5749520 +1628256 5749016 1627704 5749168 1628248 5749736 1628856 5749520 +1628248 5749736 1628848 5749672 1628856 5749520 1628256 5749016 +1628296 5748976 1628256 5749016 1628856 5749520 1628896 5749392 +1628296 5748976 1628256 5749016 1628896 5749392 1629000 5749168 +1628256 5749016 1628248 5749736 1628856 5749520 1628896 5749392 +1628256 5749016 1628896 5749392 1628296 5748976 1628280 5748856 +1628256 5749016 1628160 5749088 1628248 5749736 1628856 5749520 +1627704 5749168 1628160 5749088 1628256 5749016 1628280 5748856 +1628256 5749016 1628296 5748976 1628280 5748856 1628160 5749088 +1628160 5749088 1628248 5749736 1628256 5749016 1628280 5748856 +1627704 5749168 1628160 5749088 1628280 5748856 1628296 5748776 +1627704 5749168 1628248 5749736 1628160 5749088 1628280 5748856 +1627704 5749168 1628048 5749104 1628280 5748856 1628296 5748776 +1627704 5749168 1628048 5749104 1628296 5748776 1627320 5748856 +1628296 5748776 1628368 5748664 1627320 5748856 1628048 5749104 +1628048 5749104 1628280 5748856 1628296 5748776 1627320 5748856 +1628280 5748856 1628048 5749104 1628160 5749088 1628256 5749016 +1628160 5749088 1628048 5749104 1627704 5749168 1628248 5749736 +1628160 5749088 1628048 5749104 1628248 5749736 1628256 5749016 +1628160 5749088 1628280 5748856 1628048 5749104 1628248 5749736 +1627704 5749168 1628248 5749736 1628048 5749104 1627320 5748856 +1628048 5749104 1628160 5749088 1628280 5748856 1628296 5748776 +1627320 5748856 1627952 5749048 1628296 5748776 1628368 5748664 +1628296 5748776 1627952 5749048 1628048 5749104 1628280 5748856 +1628296 5748776 1627320 5748856 1627952 5749048 1628280 5748856 +1628048 5749104 1627952 5749048 1627320 5748856 1627704 5749168 +1628048 5749104 1627952 5749048 1627704 5749168 1628248 5749736 +1627952 5749048 1627704 5749168 1628048 5749104 1628280 5748856 +1628048 5749104 1628160 5749088 1628280 5748856 1627952 5749048 +1628280 5748856 1628296 5748776 1627952 5749048 1628160 5749088 +1628160 5749088 1628256 5749016 1628280 5748856 1627952 5749048 +1628048 5749104 1628160 5749088 1627952 5749048 1627704 5749168 +1627952 5749048 1628296 5748776 1627320 5748856 1627704 5749168 +1628296 5748776 1627808 5748832 1627952 5749048 1628280 5748856 +1627320 5748856 1627808 5748832 1628296 5748776 1628368 5748664 +1627320 5748856 1627952 5749048 1627808 5748832 1628368 5748664 +1627952 5749048 1628160 5749088 1628280 5748856 1627808 5748832 +1627320 5748856 1627808 5748832 1628368 5748664 1628200 5747680 +1627320 5748856 1627952 5749048 1627808 5748832 1628200 5747680 +1627808 5748832 1628296 5748776 1628368 5748664 1628200 5747680 +1628368 5748664 1628304 5747744 1628200 5747680 1627808 5748832 +1628368 5748664 1628504 5747840 1628304 5747744 1627808 5748832 +1628368 5748664 1628304 5747744 1627808 5748832 1628296 5748776 +1628200 5747680 1627320 5748856 1627808 5748832 1628304 5747744 +1627320 5748856 1627808 5748832 1628200 5747680 1626872 5748264 +1627320 5748856 1627952 5749048 1627808 5748832 1626872 5748264 +1627808 5748832 1628304 5747744 1628200 5747680 1626872 5748264 +1628200 5747680 1628160 5747616 1626872 5748264 1627808 5748832 +1628296 5748776 1628368 5748664 1627808 5748832 1628280 5748856 +1627952 5749048 1627808 5748832 1627320 5748856 1627704 5749168 +1627808 5748832 1626872 5748264 1627320 5748856 1627704 5749168 +1627952 5749048 1627808 5748832 1627704 5749168 1628048 5749104 +1627808 5748832 1627704 5749168 1627952 5749048 1628280 5748856 +1627320 5748856 1627808 5748832 1626872 5748264 1626912 5748472 +1628200 5747680 1627520 5748640 1627808 5748832 1628304 5747744 +1627520 5748640 1626872 5748264 1627808 5748832 1628304 5747744 +1626872 5748264 1627520 5748640 1628200 5747680 1628160 5747616 +1626872 5748264 1627520 5748640 1628160 5747616 1626808 5748160 +1627808 5748832 1628368 5748664 1628304 5747744 1627520 5748640 +1628368 5748664 1628504 5747840 1628304 5747744 1627520 5748640 +1627808 5748832 1628368 5748664 1627520 5748640 1626872 5748264 +1627808 5748832 1628296 5748776 1628368 5748664 1627520 5748640 +1628304 5747744 1628200 5747680 1627520 5748640 1628368 5748664 +1628200 5747680 1628160 5747616 1627520 5748640 1628304 5747744 +1627808 5748832 1627520 5748640 1626872 5748264 1627320 5748856 +1627808 5748832 1627520 5748640 1627320 5748856 1627704 5749168 +1627808 5748832 1628368 5748664 1627520 5748640 1627320 5748856 +1626872 5748264 1627320 5748856 1627520 5748640 1628160 5747616 +1626872 5748264 1626912 5748472 1627320 5748856 1627520 5748640 +1626912 5748472 1626976 5748664 1627320 5748856 1627520 5748640 +1626912 5748472 1626904 5748592 1626976 5748664 1627520 5748640 +1627320 5748856 1627808 5748832 1627520 5748640 1626976 5748664 +1626872 5748264 1626912 5748472 1627520 5748640 1628160 5747616 +1626912 5748472 1626976 5748664 1627520 5748640 1626872 5748264 +1626872 5748264 1627368 5748488 1628160 5747616 1626808 5748160 +1628160 5747616 1627368 5748488 1627520 5748640 1628200 5747680 +1627520 5748640 1628304 5747744 1628200 5747680 1627368 5748488 +1626872 5748264 1627520 5748640 1627368 5748488 1626808 5748160 +1627520 5748640 1627368 5748488 1626872 5748264 1626912 5748472 +1627368 5748488 1626808 5748160 1626872 5748264 1626912 5748472 +1627368 5748488 1626912 5748472 1627520 5748640 1628200 5747680 +1627520 5748640 1627368 5748488 1626912 5748472 1626976 5748664 +1626912 5748472 1626904 5748592 1626976 5748664 1627368 5748488 +1627520 5748640 1627368 5748488 1626976 5748664 1627320 5748856 +1627520 5748640 1627368 5748488 1627320 5748856 1627808 5748832 +1627368 5748488 1626872 5748264 1626912 5748472 1626976 5748664 +1627520 5748640 1628200 5747680 1627368 5748488 1627320 5748856 +1627368 5748488 1626912 5748472 1626976 5748664 1627320 5748856 +1627368 5748488 1628200 5747680 1628160 5747616 1626808 5748160 +1628160 5747616 1627016 5747176 1626808 5748160 1627368 5748488 +1626808 5748160 1626872 5748264 1627368 5748488 1627016 5747176 +1627016 5747176 1626848 5747256 1626808 5748160 1627368 5748488 +1628160 5747616 1627800 5747032 1627016 5747176 1627368 5748488 +1628160 5747616 1627016 5747176 1627368 5748488 1628200 5747680 +1626872 5748264 1627328 5748480 1627368 5748488 1626808 5748160 +1627368 5748488 1627016 5747176 1626808 5748160 1627328 5748480 +1626808 5748160 1626872 5748264 1627328 5748480 1627016 5747176 +1627328 5748480 1626912 5748472 1627368 5748488 1627016 5747176 +1627016 5747176 1626848 5747256 1626808 5748160 1627328 5748480 +1626872 5748264 1626912 5748472 1627328 5748480 1626808 5748160 +1627368 5748488 1627328 5748480 1626912 5748472 1626976 5748664 +1627368 5748488 1627016 5747176 1627328 5748480 1626976 5748664 +1626912 5748472 1626904 5748592 1626976 5748664 1627328 5748480 +1627368 5748488 1627328 5748480 1626976 5748664 1627320 5748856 +1627368 5748488 1627016 5747176 1627328 5748480 1627320 5748856 +1627368 5748488 1627328 5748480 1627320 5748856 1627520 5748640 +1627328 5748480 1626912 5748472 1626976 5748664 1627320 5748856 +1627328 5748480 1626872 5748264 1626912 5748472 1626976 5748664 +1627368 5748488 1628160 5747616 1627016 5747176 1627328 5748480 +1627016 5747176 1626808 5748160 1627328 5748480 1628160 5747616 +1627368 5748488 1628160 5747616 1627328 5748480 1627320 5748856 +1628160 5747616 1627800 5747032 1627016 5747176 1627328 5748480 +1627368 5748488 1628200 5747680 1628160 5747616 1627328 5748480 +1627016 5747176 1627304 5748456 1627328 5748480 1628160 5747616 +1627328 5748480 1627304 5748456 1626808 5748160 1626872 5748264 +1626808 5748160 1627304 5748456 1627016 5747176 1626848 5747256 +1627328 5748480 1627304 5748456 1626872 5748264 1626912 5748472 +1627304 5748456 1626808 5748160 1626872 5748264 1626912 5748472 +1627304 5748456 1627016 5747176 1626808 5748160 1626872 5748264 +1627016 5747176 1626808 5748160 1627304 5748456 1628160 5747616 +1627016 5747176 1627304 5748456 1628160 5747616 1627800 5747032 +1627328 5748480 1627304 5748456 1626912 5748472 1626976 5748664 +1626912 5748472 1626904 5748592 1626976 5748664 1627304 5748456 +1627304 5748456 1626872 5748264 1626912 5748472 1626976 5748664 +1627328 5748480 1627304 5748456 1626976 5748664 1627320 5748856 +1627304 5748456 1626976 5748664 1627328 5748480 1628160 5747616 +1627328 5748480 1627368 5748488 1628160 5747616 1627304 5748456 +1628160 5747616 1627016 5747176 1627304 5748456 1627368 5748488 +1627368 5748488 1628200 5747680 1628160 5747616 1627304 5748456 +1627328 5748480 1627368 5748488 1627304 5748456 1626976 5748664 +1626808 5748160 1627280 5748400 1627016 5747176 1626848 5747256 +1627304 5748456 1627280 5748400 1626808 5748160 1626872 5748264 +1627304 5748456 1627280 5748400 1626872 5748264 1626912 5748472 +1627304 5748456 1627280 5748400 1626912 5748472 1626976 5748664 +1627280 5748400 1626808 5748160 1626872 5748264 1626912 5748472 +1627304 5748456 1627016 5747176 1627280 5748400 1626912 5748472 +1627016 5747176 1627280 5748400 1627304 5748456 1628160 5747616 +1627304 5748456 1627368 5748488 1628160 5747616 1627280 5748400 +1627280 5748400 1626912 5748472 1627304 5748456 1627368 5748488 +1628160 5747616 1627016 5747176 1627280 5748400 1627368 5748488 +1627280 5748400 1627016 5747176 1626808 5748160 1626872 5748264 +1627016 5747176 1627280 5748400 1628160 5747616 1627800 5747032 +1627368 5748488 1628200 5747680 1628160 5747616 1627280 5748400 +1627368 5748488 1628200 5747680 1627280 5748400 1627304 5748456 +1627368 5748488 1627520 5748640 1628200 5747680 1627280 5748400 +1628160 5747616 1627016 5747176 1627280 5748400 1628200 5747680 +1627304 5748456 1627328 5748480 1627368 5748488 1627280 5748400 +1627016 5747176 1626808 5748160 1627280 5748400 1628160 5747616 +1628160 5747616 1627288 5748360 1627280 5748400 1628200 5747680 +1627288 5748360 1627016 5747176 1627280 5748400 1628200 5747680 +1627016 5747176 1627288 5748360 1628160 5747616 1627800 5747032 +1627280 5748400 1627368 5748488 1628200 5747680 1627288 5748360 +1627280 5748400 1627304 5748456 1627368 5748488 1627288 5748360 +1627368 5748488 1627520 5748640 1628200 5747680 1627288 5748360 +1628200 5747680 1628160 5747616 1627288 5748360 1627368 5748488 +1627280 5748400 1627304 5748456 1627288 5748360 1627016 5747176 +1627368 5748488 1628200 5747680 1627288 5748360 1627304 5748456 +1627304 5748456 1627328 5748480 1627368 5748488 1627288 5748360 +1628160 5747616 1627016 5747176 1627288 5748360 1628200 5747680 +1627280 5748400 1627288 5748360 1627016 5747176 1626808 5748160 +1627016 5747176 1626848 5747256 1626808 5748160 1627288 5748360 +1627280 5748400 1627288 5748360 1626808 5748160 1626872 5748264 +1627280 5748400 1627288 5748360 1626872 5748264 1626912 5748472 +1627280 5748400 1627288 5748360 1626912 5748472 1627304 5748456 +1627288 5748360 1626808 5748160 1626872 5748264 1626912 5748472 +1627280 5748400 1627304 5748456 1627288 5748360 1626912 5748472 +1627288 5748360 1627016 5747176 1626808 5748160 1626872 5748264 +1627288 5748360 1628160 5747616 1627016 5747176 1626808 5748160 +1627016 5747176 1627296 5748320 1628160 5747616 1627800 5747032 +1628160 5747616 1627296 5748320 1627288 5748360 1628200 5747680 +1627288 5748360 1627368 5748488 1628200 5747680 1627296 5748320 +1627368 5748488 1627520 5748640 1628200 5747680 1627296 5748320 +1627520 5748640 1628304 5747744 1628200 5747680 1627296 5748320 +1627368 5748488 1627520 5748640 1627296 5748320 1627288 5748360 +1628160 5747616 1627016 5747176 1627296 5748320 1628200 5747680 +1627288 5748360 1627304 5748456 1627368 5748488 1627296 5748320 +1628200 5747680 1628160 5747616 1627296 5748320 1627520 5748640 +1627288 5748360 1627296 5748320 1627016 5747176 1626808 5748160 +1627016 5747176 1626848 5747256 1626808 5748160 1627296 5748320 +1627296 5748320 1628160 5747616 1627016 5747176 1626808 5748160 +1627288 5748360 1627296 5748320 1626808 5748160 1626872 5748264 +1627288 5748360 1627296 5748320 1626872 5748264 1626912 5748472 +1627296 5748320 1627016 5747176 1626808 5748160 1626872 5748264 +1627296 5748320 1626872 5748264 1627288 5748360 1627368 5748488 +1627016 5747176 1627368 5748232 1628160 5747616 1627800 5747032 +1628160 5747616 1628016 5747192 1627800 5747032 1627368 5748232 +1627368 5748232 1627296 5748320 1628160 5747616 1627800 5747032 +1627016 5747176 1627368 5748232 1627800 5747032 1627136 5747072 +1627800 5747032 1627512 5746960 1627136 5747072 1627368 5748232 +1627136 5747072 1627016 5747176 1627368 5748232 1627512 5746960 +1627368 5748232 1628160 5747616 1627800 5747032 1627512 5746960 +1627512 5746960 1627312 5746976 1627136 5747072 1627368 5748232 +1628160 5747616 1627368 5748232 1627296 5748320 1628200 5747680 +1628160 5747616 1627800 5747032 1627368 5748232 1628200 5747680 +1627016 5747176 1627296 5748320 1627368 5748232 1627136 5747072 +1627296 5748320 1627520 5748640 1628200 5747680 1627368 5748232 +1627296 5748320 1627368 5748488 1627520 5748640 1627368 5748232 +1627520 5748640 1628304 5747744 1628200 5747680 1627368 5748232 +1627520 5748640 1628368 5748664 1628304 5747744 1627368 5748232 +1628368 5748664 1628504 5747840 1628304 5747744 1627368 5748232 +1627520 5748640 1627808 5748832 1628368 5748664 1627368 5748232 +1628304 5747744 1628200 5747680 1627368 5748232 1628368 5748664 +1627296 5748320 1627288 5748360 1627368 5748488 1627368 5748232 +1628200 5747680 1628160 5747616 1627368 5748232 1628304 5747744 +1627520 5748640 1628368 5748664 1627368 5748232 1627368 5748488 +1627296 5748320 1627368 5748232 1627016 5747176 1626808 5748160 +1627016 5747176 1626848 5747256 1626808 5748160 1627368 5748232 +1627368 5748232 1627136 5747072 1627016 5747176 1626848 5747256 +1626848 5747256 1626704 5748056 1626808 5748160 1627368 5748232 +1626808 5748160 1627296 5748320 1627368 5748232 1626848 5747256 +1627368 5748232 1626808 5748160 1627296 5748320 1627368 5748488 +1627296 5748320 1627368 5748232 1626808 5748160 1626872 5748264 +1627368 5748232 1626848 5747256 1626808 5748160 1626872 5748264 +1627296 5748320 1627368 5748488 1627368 5748232 1626872 5748264 +1627296 5748320 1627368 5748232 1626872 5748264 1627288 5748360 +1628304 5747744 1627472 5748168 1627368 5748232 1628368 5748664 +1628304 5747744 1627472 5748168 1628368 5748664 1628504 5747840 +1627368 5748232 1627520 5748640 1628368 5748664 1627472 5748168 +1627520 5748640 1627808 5748832 1628368 5748664 1627472 5748168 +1627808 5748832 1628296 5748776 1628368 5748664 1627472 5748168 +1627520 5748640 1627808 5748832 1627472 5748168 1627368 5748232 +1628368 5748664 1628304 5747744 1627472 5748168 1627808 5748832 +1628304 5747744 1628200 5747680 1627472 5748168 1628368 5748664 +1627368 5748232 1627472 5748168 1628200 5747680 1628160 5747616 +1627368 5748232 1627472 5748168 1628160 5747616 1627800 5747032 +1628160 5747616 1628016 5747192 1627800 5747032 1627472 5748168 +1628160 5747616 1628160 5747504 1628016 5747192 1627472 5748168 +1627800 5747032 1627368 5748232 1627472 5748168 1628016 5747192 +1627472 5748168 1628304 5747744 1628200 5747680 1628160 5747616 +1627368 5748232 1627472 5748168 1627800 5747032 1627512 5746960 +1627368 5748232 1627472 5748168 1627512 5746960 1627136 5747072 +1627472 5748168 1628016 5747192 1627800 5747032 1627512 5746960 +1627368 5748232 1627472 5748168 1627136 5747072 1627016 5747176 +1627472 5748168 1627512 5746960 1627136 5747072 1627016 5747176 +1627472 5748168 1627800 5747032 1627512 5746960 1627136 5747072 +1627512 5746960 1627312 5746976 1627136 5747072 1627472 5748168 +1627472 5748168 1628200 5747680 1628160 5747616 1628016 5747192 +1627368 5748232 1627472 5748168 1627016 5747176 1626848 5747256 +1627472 5748168 1627136 5747072 1627016 5747176 1626848 5747256 +1627368 5748232 1627472 5748168 1626848 5747256 1626808 5748160 +1627472 5748168 1627016 5747176 1626848 5747256 1626808 5748160 +1627472 5748168 1626808 5748160 1627368 5748232 1627520 5748640 +1626848 5747256 1626704 5748056 1626808 5748160 1627472 5748168 +1627368 5748232 1627368 5748488 1627520 5748640 1627472 5748168 +1627520 5748640 1627808 5748832 1627472 5748168 1627368 5748488 +1627368 5748232 1627296 5748320 1627368 5748488 1627472 5748168 +1627368 5748232 1627368 5748488 1627472 5748168 1626808 5748160 +1627368 5748232 1627472 5748168 1626808 5748160 1626872 5748264 +1628304 5747744 1627576 5748144 1628368 5748664 1628504 5747840 +1628368 5748664 1627576 5748144 1627472 5748168 1627808 5748832 +1627576 5748144 1628304 5747744 1627472 5748168 1627808 5748832 +1628368 5748664 1627576 5748144 1627808 5748832 1628296 5748776 +1628368 5748664 1628304 5747744 1627576 5748144 1627808 5748832 +1627472 5748168 1627520 5748640 1627808 5748832 1627576 5748144 +1627472 5748168 1627520 5748640 1627576 5748144 1628304 5747744 +1627472 5748168 1627368 5748488 1627520 5748640 1627576 5748144 +1627472 5748168 1627368 5748488 1627576 5748144 1628304 5747744 +1627520 5748640 1627808 5748832 1627576 5748144 1627368 5748488 +1627808 5748832 1628368 5748664 1627576 5748144 1627520 5748640 +1627472 5748168 1627576 5748144 1628304 5747744 1628200 5747680 +1627472 5748168 1627576 5748144 1628200 5747680 1628160 5747616 +1627472 5748168 1627368 5748488 1627576 5748144 1628160 5747616 +1627576 5748144 1628304 5747744 1628200 5747680 1628160 5747616 +1627576 5748144 1628368 5748664 1628304 5747744 1628200 5747680 +1627472 5748168 1627576 5748144 1628160 5747616 1628016 5747192 +1627472 5748168 1627576 5748144 1628016 5747192 1627800 5747032 +1628160 5747616 1628160 5747504 1628016 5747192 1627576 5748144 +1627472 5748168 1627576 5748144 1627800 5747032 1627512 5746960 +1627576 5748144 1628016 5747192 1627800 5747032 1627512 5746960 +1627576 5748144 1628200 5747680 1628160 5747616 1628016 5747192 +1627472 5748168 1627368 5748488 1627576 5748144 1627512 5746960 +1627472 5748168 1627576 5748144 1627512 5746960 1627136 5747072 +1627472 5748168 1627576 5748144 1627136 5747072 1627016 5747176 +1627576 5748144 1627800 5747032 1627512 5746960 1627136 5747072 +1627472 5748168 1627368 5748488 1627576 5748144 1627016 5747176 +1627472 5748168 1627576 5748144 1627016 5747176 1626848 5747256 +1627576 5748144 1627512 5746960 1627136 5747072 1627016 5747176 +1627512 5746960 1627312 5746976 1627136 5747072 1627576 5748144 +1627576 5748144 1628160 5747616 1628016 5747192 1627800 5747032 +1627472 5748168 1627368 5748232 1627368 5748488 1627576 5748144 +1628304 5747744 1627816 5748152 1628368 5748664 1628504 5747840 +1628368 5748664 1627816 5748152 1627576 5748144 1627808 5748832 +1628368 5748664 1627816 5748152 1627808 5748832 1628296 5748776 +1628304 5747744 1627576 5748144 1627816 5748152 1628504 5747840 +1628368 5748664 1628776 5748096 1628504 5747840 1627816 5748152 +1627576 5748144 1627520 5748640 1627808 5748832 1627816 5748152 +1627808 5748832 1628368 5748664 1627816 5748152 1627520 5748640 +1627576 5748144 1627368 5748488 1627520 5748640 1627816 5748152 +1627816 5748152 1627808 5748832 1628368 5748664 1628504 5747840 +1627576 5748144 1627816 5748152 1628304 5747744 1628200 5747680 +1627816 5748152 1628504 5747840 1628304 5747744 1628200 5747680 +1627576 5748144 1627816 5748152 1628200 5747680 1628160 5747616 +1627576 5748144 1627816 5748152 1628160 5747616 1628016 5747192 +1627816 5748152 1628304 5747744 1628200 5747680 1628160 5747616 +1627816 5748152 1628160 5747616 1627576 5748144 1627520 5748640 +1628504 5747840 1627952 5748040 1627816 5748152 1628368 5748664 +1628504 5747840 1628304 5747744 1627952 5748040 1628368 5748664 +1627816 5748152 1627952 5748040 1628304 5747744 1628200 5747680 +1627952 5748040 1628200 5747680 1627816 5748152 1628368 5748664 +1628504 5747840 1627952 5748040 1628368 5748664 1628776 5748096 +1627816 5748152 1627808 5748832 1628368 5748664 1627952 5748040 +1627952 5748040 1628504 5747840 1628304 5747744 1628200 5747680 +1627816 5748152 1627952 5748040 1628200 5747680 1628160 5747616 +1627952 5748040 1628304 5747744 1628200 5747680 1628160 5747616 +1627816 5748152 1628368 5748664 1627952 5748040 1628160 5747616 +1627816 5748152 1627952 5748040 1628160 5747616 1627576 5748144 +1628160 5747616 1628016 5747192 1627576 5748144 1627952 5748040 +1627816 5748152 1628368 5748664 1627952 5748040 1627576 5748144 +1627952 5748040 1628200 5747680 1628160 5747616 1627576 5748144 +1628368 5748664 1628048 5748008 1627952 5748040 1627816 5748152 +1627952 5748040 1628048 5748008 1628504 5747840 1628304 5747744 +1628048 5748008 1628368 5748664 1628504 5747840 1628304 5747744 +1628504 5747840 1628048 5748008 1628368 5748664 1628776 5748096 +1628504 5747840 1628304 5747744 1628048 5748008 1628776 5748096 +1628048 5748008 1627952 5748040 1628368 5748664 1628776 5748096 +1627952 5748040 1628048 5748008 1628304 5747744 1628200 5747680 +1628048 5748008 1628504 5747840 1628304 5747744 1628200 5747680 +1627952 5748040 1628048 5748008 1628200 5747680 1628160 5747616 +1628048 5748008 1628304 5747744 1628200 5747680 1628160 5747616 +1627952 5748040 1628368 5748664 1628048 5748008 1628160 5747616 +1628368 5748664 1628960 5748368 1628776 5748096 1628048 5748008 +1627952 5748040 1628048 5748008 1628160 5747616 1627576 5748144 +1628048 5748008 1628264 5748000 1628504 5747840 1628304 5747744 +1628048 5748008 1628264 5748000 1628304 5747744 1628200 5747680 +1628264 5748000 1628504 5747840 1628304 5747744 1628200 5747680 +1628048 5748008 1628776 5748096 1628264 5748000 1628200 5747680 +1628264 5748000 1628776 5748096 1628504 5747840 1628304 5747744 +1628776 5748096 1628264 5748000 1628048 5748008 1628368 5748664 +1628264 5748000 1628200 5747680 1628048 5748008 1628368 5748664 +1628048 5748008 1627952 5748040 1628368 5748664 1628264 5748000 +1628776 5748096 1628504 5747840 1628264 5748000 1628368 5748664 +1628048 5748008 1628264 5748000 1628200 5747680 1628160 5747616 +1628776 5748096 1628264 5748000 1628368 5748664 1628960 5748368 +1628264 5748000 1628432 5748032 1628776 5748096 1628504 5747840 +1628264 5748000 1628432 5748032 1628504 5747840 1628304 5747744 +1628264 5748000 1628368 5748664 1628432 5748032 1628504 5747840 +1628432 5748032 1628368 5748664 1628776 5748096 1628504 5747840 +1628368 5748664 1628432 5748032 1628264 5748000 1628048 5748008 +1628776 5748096 1628432 5748032 1628368 5748664 1628960 5748368 +1628432 5748032 1628448 5748032 1628504 5747840 1628264 5748000 +1628776 5748096 1628448 5748032 1628432 5748032 1628368 5748664 +1628448 5748032 1628504 5747840 1628432 5748032 1628368 5748664 +1628776 5748096 1628448 5748032 1628368 5748664 1628960 5748368 +1628776 5748096 1628504 5747840 1628448 5748032 1628368 5748664 +1628432 5748032 1628264 5748000 1628368 5748664 1628448 5748032 +1628368 5748664 1628488 5748056 1628448 5748032 1628432 5748032 +1628368 5748664 1628776 5748096 1628488 5748056 1628432 5748032 +1628776 5748096 1628488 5748056 1628368 5748664 1628960 5748368 +1628448 5748032 1628488 5748056 1628776 5748096 1628504 5747840 +1628488 5748056 1628368 5748664 1628776 5748096 1628504 5747840 +1628368 5748664 1628488 5748056 1628432 5748032 1628264 5748000 +1628448 5748032 1628488 5748056 1628504 5747840 1628432 5748032 +1628488 5748056 1628504 5747840 1628448 5748032 1628432 5748032 +1628368 5748664 1628496 5748096 1628488 5748056 1628432 5748032 +1628488 5748056 1628448 5748032 1628432 5748032 1628496 5748096 +1628432 5748032 1628368 5748664 1628496 5748096 1628448 5748032 +1628776 5748096 1628496 5748096 1628368 5748664 1628960 5748368 +1628368 5748664 1629048 5748600 1628960 5748368 1628496 5748096 +1628776 5748096 1628488 5748056 1628496 5748096 1628960 5748368 +1628488 5748056 1628496 5748096 1628776 5748096 1628504 5747840 +1628496 5748096 1628776 5748096 1628488 5748056 1628448 5748032 +1628368 5748664 1628496 5748096 1628432 5748032 1628264 5748000 +1628496 5748096 1628448 5748032 1628432 5748032 1628264 5748000 +1628368 5748664 1628496 5748096 1628264 5748000 1628048 5748008 +1628368 5748664 1628960 5748368 1628496 5748096 1628264 5748000 +1628960 5748368 1628520 5748136 1628368 5748664 1629048 5748600 +1628496 5748096 1628520 5748136 1628960 5748368 1628776 5748096 +1628496 5748096 1628520 5748136 1628776 5748096 1628488 5748056 +1628496 5748096 1628368 5748664 1628520 5748136 1628488 5748056 +1628520 5748136 1628960 5748368 1628776 5748096 1628488 5748056 +1628776 5748096 1628504 5747840 1628488 5748056 1628520 5748136 +1628368 5748664 1628520 5748136 1628496 5748096 1628264 5748000 +1628520 5748136 1628488 5748056 1628496 5748096 1628264 5748000 +1628368 5748664 1628960 5748368 1628520 5748136 1628264 5748000 +1628368 5748664 1628520 5748136 1628264 5748000 1628048 5748008 +1628496 5748096 1628432 5748032 1628264 5748000 1628520 5748136 +1628520 5748136 1628368 5748664 1628960 5748368 1628776 5748096 +1628960 5748368 1628544 5748192 1628368 5748664 1629048 5748600 +1628368 5748664 1628544 5748192 1628520 5748136 1628264 5748000 +1628544 5748192 1628960 5748368 1628520 5748136 1628264 5748000 +1628368 5748664 1628544 5748192 1628264 5748000 1628048 5748008 +1628368 5748664 1628960 5748368 1628544 5748192 1628264 5748000 +1628520 5748136 1628496 5748096 1628264 5748000 1628544 5748192 +1628520 5748136 1628544 5748192 1628960 5748368 1628776 5748096 +1628520 5748136 1628264 5748000 1628544 5748192 1628776 5748096 +1628544 5748192 1628368 5748664 1628960 5748368 1628776 5748096 +1628520 5748136 1628544 5748192 1628776 5748096 1628488 5748056 +1628960 5748368 1628528 5748296 1628368 5748664 1629048 5748600 +1628544 5748192 1628528 5748296 1628960 5748368 1628776 5748096 +1628544 5748192 1628368 5748664 1628528 5748296 1628776 5748096 +1628368 5748664 1628528 5748296 1628544 5748192 1628264 5748000 +1628544 5748192 1628520 5748136 1628264 5748000 1628528 5748296 +1628368 5748664 1628528 5748296 1628264 5748000 1628048 5748008 +1628368 5748664 1628528 5748296 1628048 5748008 1627952 5748040 +1628528 5748296 1628776 5748096 1628544 5748192 1628520 5748136 +1628264 5748000 1628048 5748008 1628528 5748296 1628520 5748136 +1628528 5748296 1628368 5748664 1628960 5748368 1628776 5748096 +1628368 5748664 1628960 5748368 1628528 5748296 1628048 5748008 +1628520 5748136 1628496 5748096 1628264 5748000 1628528 5748296 +1628520 5748136 1628496 5748096 1628528 5748296 1628544 5748192 +1628264 5748000 1628048 5748008 1628528 5748296 1628496 5748096 +1628496 5748096 1628432 5748032 1628264 5748000 1628528 5748296 +1628544 5748192 1628528 5748296 1628776 5748096 1628520 5748136 +1628960 5748368 1628472 5748480 1628368 5748664 1629048 5748600 +1628960 5748368 1628528 5748296 1628472 5748480 1629048 5748600 +1628472 5748480 1628528 5748296 1628368 5748664 1629048 5748600 +1628368 5748664 1629072 5748768 1629048 5748600 1628472 5748480 +1628368 5748664 1629056 5748960 1629072 5748768 1628472 5748480 +1629048 5748600 1628960 5748368 1628472 5748480 1629072 5748768 +1628368 5748664 1629072 5748768 1628472 5748480 1628528 5748296 +1628528 5748296 1628472 5748480 1628960 5748368 1628776 5748096 +1628368 5748664 1628472 5748480 1628528 5748296 1628048 5748008 +1628368 5748664 1628472 5748480 1628048 5748008 1627952 5748040 +1628368 5748664 1628472 5748480 1627952 5748040 1627816 5748152 +1628472 5748480 1628048 5748008 1627952 5748040 1627816 5748152 +1628368 5748664 1629072 5748768 1628472 5748480 1627816 5748152 +1628528 5748296 1628264 5748000 1628048 5748008 1628472 5748480 +1628528 5748296 1628496 5748096 1628264 5748000 1628472 5748480 +1628368 5748664 1628472 5748480 1627816 5748152 1627808 5748832 +1628472 5748480 1628264 5748000 1628048 5748008 1627952 5748040 +1628472 5748480 1628960 5748368 1628528 5748296 1628264 5748000 +1626744 5747272 1626664 5747696 1626704 5748056 1626848 5747256 +1626664 5747696 1626600 5747328 1626704 5748056 1626848 5747256 +1626704 5748056 1626664 5747696 1626600 5747328 1626488 5747912 +1626704 5748056 1626848 5747256 1626664 5747696 1626488 5747912 +1626704 5748056 1626808 5748160 1626848 5747256 1626664 5747696 +1626704 5748056 1626808 5748160 1626664 5747696 1626488 5747912 +1626808 5748160 1627472 5748168 1626848 5747256 1626664 5747696 +1626808 5748160 1627368 5748232 1627472 5748168 1626664 5747696 +1626808 5748160 1627368 5748232 1626664 5747696 1626704 5748056 +1627472 5748168 1627016 5747176 1626848 5747256 1626664 5747696 +1627472 5748168 1627576 5748144 1627016 5747176 1626664 5747696 +1627472 5748168 1627016 5747176 1626664 5747696 1627368 5748232 +1626600 5747328 1626408 5747544 1626488 5747912 1626664 5747696 +1626408 5747544 1626376 5747696 1626488 5747912 1626664 5747696 +1626376 5747696 1626392 5747784 1626488 5747912 1626664 5747696 +1626600 5747328 1626504 5747392 1626408 5747544 1626664 5747696 +1626488 5747912 1626704 5748056 1626664 5747696 1626392 5747784 +1626376 5747696 1626392 5747784 1626664 5747696 1626408 5747544 +1626408 5747544 1626376 5747696 1626664 5747696 1626504 5747392 +1626808 5748160 1626872 5748264 1627368 5748232 1626664 5747696 +1626664 5747696 1626744 5747272 1626600 5747328 1626504 5747392 +1626848 5747256 1626744 5747272 1626664 5747696 1627016 5747176 +1626744 5747272 1626600 5747328 1626664 5747696 1626848 5747256 +1627016 5747176 1626728 5747616 1627472 5748168 1627576 5748144 +1626664 5747696 1626728 5747616 1627016 5747176 1626848 5747256 +1626664 5747696 1627472 5748168 1626728 5747616 1626848 5747256 +1626728 5747616 1627472 5748168 1627016 5747176 1626848 5747256 +1627472 5748168 1626728 5747616 1626664 5747696 1627368 5748232 +1627472 5748168 1627016 5747176 1626728 5747616 1627368 5748232 +1626664 5747696 1626808 5748160 1627368 5748232 1626728 5747616 +1626664 5747696 1626704 5748056 1626808 5748160 1626728 5747616 +1626664 5747696 1626488 5747912 1626704 5748056 1626728 5747616 +1626808 5748160 1627368 5748232 1626728 5747616 1626704 5748056 +1626728 5747616 1626848 5747256 1626664 5747696 1626704 5748056 +1627368 5748232 1627472 5748168 1626728 5747616 1626808 5748160 +1626808 5748160 1626872 5748264 1627368 5748232 1626728 5747616 +1626664 5747696 1626728 5747616 1626848 5747256 1626744 5747272 +1626664 5747696 1626704 5748056 1626728 5747616 1626744 5747272 +1626728 5747616 1627016 5747176 1626848 5747256 1626744 5747272 +1626664 5747696 1626728 5747616 1626744 5747272 1626600 5747328 +1626664 5747696 1626704 5748056 1626728 5747616 1626600 5747328 +1626664 5747696 1626728 5747616 1626600 5747328 1626504 5747392 +1626728 5747616 1626744 5747272 1626600 5747328 1626504 5747392 +1626664 5747696 1626728 5747616 1626504 5747392 1626408 5747544 +1626664 5747696 1626704 5748056 1626728 5747616 1626408 5747544 +1626664 5747696 1626728 5747616 1626408 5747544 1626376 5747696 +1626728 5747616 1626600 5747328 1626504 5747392 1626408 5747544 +1626728 5747616 1626848 5747256 1626744 5747272 1626600 5747328 +1627472 5748168 1626792 5747568 1626728 5747616 1627368 5748232 +1626792 5747568 1627016 5747176 1626728 5747616 1627368 5748232 +1627016 5747176 1626792 5747568 1627472 5748168 1627576 5748144 +1627472 5748168 1627016 5747176 1626792 5747568 1627368 5748232 +1626728 5747616 1626792 5747568 1627016 5747176 1626848 5747256 +1626728 5747616 1627368 5748232 1626792 5747568 1626848 5747256 +1626792 5747568 1627472 5748168 1627016 5747176 1626848 5747256 +1626728 5747616 1626792 5747568 1626848 5747256 1626744 5747272 +1626728 5747616 1627368 5748232 1626792 5747568 1626744 5747272 +1626792 5747568 1627016 5747176 1626848 5747256 1626744 5747272 +1626728 5747616 1626808 5748160 1627368 5748232 1626792 5747568 +1627368 5748232 1627472 5748168 1626792 5747568 1626808 5748160 +1626728 5747616 1626808 5748160 1626792 5747568 1626744 5747272 +1626728 5747616 1626704 5748056 1626808 5748160 1626792 5747568 +1626728 5747616 1626704 5748056 1626792 5747568 1626744 5747272 +1626728 5747616 1626664 5747696 1626704 5748056 1626792 5747568 +1626808 5748160 1627368 5748232 1626792 5747568 1626704 5748056 +1626808 5748160 1626872 5748264 1627368 5748232 1626792 5747568 +1626728 5747616 1626792 5747568 1626744 5747272 1626600 5747328 +1626728 5747616 1626792 5747568 1626600 5747328 1626504 5747392 +1626728 5747616 1626704 5748056 1626792 5747568 1626600 5747328 +1626792 5747568 1626848 5747256 1626744 5747272 1626600 5747328 +1627016 5747176 1626832 5747544 1627472 5748168 1627576 5748144 +1627016 5747176 1626832 5747544 1627576 5748144 1627136 5747072 +1626792 5747568 1626832 5747544 1627016 5747176 1626848 5747256 +1626792 5747568 1627472 5748168 1626832 5747544 1626848 5747256 +1627472 5748168 1626832 5747544 1626792 5747568 1627368 5748232 +1626792 5747568 1626808 5748160 1627368 5748232 1626832 5747544 +1626832 5747544 1626848 5747256 1626792 5747568 1626808 5748160 +1627016 5747176 1626848 5747256 1626832 5747544 1627576 5748144 +1627368 5748232 1627472 5748168 1626832 5747544 1626808 5748160 +1626832 5747544 1627368 5748232 1627472 5748168 1627576 5748144 +1626792 5747568 1626832 5747544 1626848 5747256 1626744 5747272 +1626832 5747544 1627016 5747176 1626848 5747256 1626744 5747272 +1626792 5747568 1626808 5748160 1626832 5747544 1626744 5747272 +1626792 5747568 1626832 5747544 1626744 5747272 1626600 5747328 +1626792 5747568 1626704 5748056 1626808 5748160 1626832 5747544 +1626808 5748160 1627368 5748232 1626832 5747544 1626704 5748056 +1626792 5747568 1626704 5748056 1626832 5747544 1626744 5747272 +1626792 5747568 1626728 5747616 1626704 5748056 1626832 5747544 +1626808 5748160 1626872 5748264 1627368 5748232 1626832 5747544 +1627016 5747176 1626920 5747512 1627576 5748144 1627136 5747072 +1627576 5748144 1626920 5747512 1626832 5747544 1627472 5748168 +1626920 5747512 1627472 5748168 1627576 5748144 1627136 5747072 +1626832 5747544 1626920 5747512 1627016 5747176 1626848 5747256 +1626832 5747544 1626920 5747512 1626848 5747256 1626744 5747272 +1626832 5747544 1627368 5748232 1627472 5748168 1626920 5747512 +1627472 5748168 1627576 5748144 1626920 5747512 1627368 5748232 +1626832 5747544 1626808 5748160 1627368 5748232 1626920 5747512 +1626832 5747544 1626704 5748056 1626808 5748160 1626920 5747512 +1627368 5748232 1627472 5748168 1626920 5747512 1626808 5748160 +1626808 5748160 1627368 5748232 1626920 5747512 1626704 5748056 +1627576 5748144 1627512 5746960 1627136 5747072 1626920 5747512 +1627136 5747072 1627016 5747176 1626920 5747512 1627512 5746960 +1627576 5748144 1627800 5747032 1627512 5746960 1626920 5747512 +1627576 5748144 1627512 5746960 1626920 5747512 1627472 5748168 +1627512 5746960 1627312 5746976 1627136 5747072 1626920 5747512 +1626832 5747544 1626792 5747568 1626704 5748056 1626920 5747512 +1626808 5748160 1626872 5748264 1627368 5748232 1626920 5747512 +1626920 5747512 1626848 5747256 1626832 5747544 1626704 5748056 +1627016 5747176 1626848 5747256 1626920 5747512 1627136 5747072 +1627512 5746960 1627016 5747504 1627576 5748144 1627800 5747032 +1627576 5748144 1628016 5747192 1627800 5747032 1627016 5747504 +1627800 5747032 1627512 5746960 1627016 5747504 1628016 5747192 +1627512 5746960 1626920 5747512 1627016 5747504 1627800 5747032 +1627016 5747504 1626920 5747512 1627576 5748144 1628016 5747192 +1627576 5748144 1627016 5747504 1626920 5747512 1627472 5748168 +1626920 5747512 1627368 5748232 1627472 5748168 1627016 5747504 +1627576 5748144 1628016 5747192 1627016 5747504 1627472 5748168 +1627472 5748168 1627576 5748144 1627016 5747504 1627368 5748232 +1626920 5747512 1626808 5748160 1627368 5748232 1627016 5747504 +1627368 5748232 1627472 5748168 1627016 5747504 1626808 5748160 +1627016 5747504 1627512 5746960 1626920 5747512 1626808 5748160 +1626920 5747512 1626704 5748056 1626808 5748160 1627016 5747504 +1626920 5747512 1626832 5747544 1626704 5748056 1627016 5747504 +1626808 5748160 1627368 5748232 1627016 5747504 1626704 5748056 +1626920 5747512 1626704 5748056 1627016 5747504 1627512 5746960 +1626920 5747512 1627016 5747504 1627512 5746960 1627136 5747072 +1626920 5747512 1627016 5747504 1627136 5747072 1627016 5747176 +1627016 5747504 1627800 5747032 1627512 5746960 1627136 5747072 +1626920 5747512 1626704 5748056 1627016 5747504 1627016 5747176 +1627016 5747504 1627512 5746960 1627136 5747072 1627016 5747176 +1627512 5746960 1627312 5746976 1627136 5747072 1627016 5747504 +1627512 5746960 1627416 5746952 1627312 5746976 1627016 5747504 +1627512 5746960 1627312 5746976 1627016 5747504 1627800 5747032 +1627136 5747072 1627016 5747176 1627016 5747504 1627312 5746976 +1627576 5748144 1628160 5747616 1628016 5747192 1627016 5747504 +1626808 5748160 1626872 5748264 1627368 5748232 1627016 5747504 +1626920 5747512 1627016 5747504 1627016 5747176 1626848 5747256 +1627016 5747504 1627136 5747072 1627016 5747176 1626848 5747256 +1626920 5747512 1626704 5748056 1627016 5747504 1626848 5747256 +1626920 5747512 1627016 5747504 1626848 5747256 1626832 5747544 +1627016 5747504 1627064 5747512 1628016 5747192 1627800 5747032 +1627016 5747504 1627064 5747512 1627800 5747032 1627512 5746960 +1627064 5747512 1628016 5747192 1627800 5747032 1627512 5746960 +1627016 5747504 1627064 5747512 1627512 5746960 1627312 5746976 +1627512 5746960 1627416 5746952 1627312 5746976 1627064 5747512 +1627064 5747512 1627800 5747032 1627512 5746960 1627312 5746976 +1627016 5747504 1627576 5748144 1627064 5747512 1627312 5746976 +1627576 5748144 1627064 5747512 1627016 5747504 1627472 5748168 +1627064 5747512 1627312 5746976 1627016 5747504 1627472 5748168 +1627016 5747504 1627368 5748232 1627472 5748168 1627064 5747512 +1627016 5747504 1626808 5748160 1627368 5748232 1627064 5747512 +1627016 5747504 1626808 5748160 1627064 5747512 1627312 5746976 +1627472 5748168 1627576 5748144 1627064 5747512 1627368 5748232 +1627368 5748232 1627472 5748168 1627064 5747512 1626808 5748160 +1627016 5747504 1626704 5748056 1626808 5748160 1627064 5747512 +1626808 5748160 1627368 5748232 1627064 5747512 1626704 5748056 +1627016 5747504 1626704 5748056 1627064 5747512 1627312 5746976 +1627016 5747504 1626920 5747512 1626704 5748056 1627064 5747512 +1626920 5747512 1626832 5747544 1626704 5748056 1627064 5747512 +1627016 5747504 1626920 5747512 1627064 5747512 1627312 5746976 +1626704 5748056 1626808 5748160 1627064 5747512 1626832 5747544 +1626920 5747512 1626832 5747544 1627064 5747512 1627016 5747504 +1627016 5747504 1627064 5747512 1627312 5746976 1627136 5747072 +1627064 5747512 1627512 5746960 1627312 5746976 1627136 5747072 +1627016 5747504 1626920 5747512 1627064 5747512 1627136 5747072 +1627016 5747504 1627064 5747512 1627136 5747072 1627016 5747176 +1627016 5747504 1627064 5747512 1627016 5747176 1626848 5747256 +1627016 5747504 1626920 5747512 1627064 5747512 1627016 5747176 +1627064 5747512 1627312 5746976 1627136 5747072 1627016 5747176 +1628016 5747192 1627064 5747512 1627576 5748144 1628160 5747616 +1628016 5747192 1627064 5747512 1628160 5747616 1628160 5747504 +1627576 5748144 1627952 5748040 1628160 5747616 1627064 5747512 +1626832 5747544 1626792 5747568 1626704 5748056 1627064 5747512 +1627064 5747512 1628160 5747616 1628016 5747192 1627800 5747032 +1627576 5748144 1628160 5747616 1627064 5747512 1627472 5748168 +1626808 5748160 1626872 5748264 1627368 5748232 1627064 5747512 +1628160 5747616 1627144 5747544 1627576 5748144 1627952 5748040 +1628160 5747616 1627064 5747512 1627144 5747544 1627952 5748040 +1627144 5747544 1627064 5747512 1627576 5748144 1627952 5748040 +1627576 5748144 1627816 5748152 1627952 5748040 1627144 5747544 +1628160 5747616 1627144 5747544 1627952 5748040 1628048 5748008 +1627064 5747512 1627144 5747544 1628160 5747616 1628016 5747192 +1627144 5747544 1627952 5748040 1628160 5747616 1628016 5747192 +1628160 5747616 1628160 5747504 1628016 5747192 1627144 5747544 +1628160 5747616 1628160 5747504 1627144 5747544 1627952 5748040 +1628160 5747504 1628120 5747304 1628016 5747192 1627144 5747544 +1628016 5747192 1627064 5747512 1627144 5747544 1628160 5747504 +1627064 5747512 1627144 5747544 1628016 5747192 1627800 5747032 +1627064 5747512 1627144 5747544 1627800 5747032 1627512 5746960 +1627064 5747512 1627144 5747544 1627512 5746960 1627312 5746976 +1627144 5747544 1627800 5747032 1627512 5746960 1627312 5746976 +1627512 5746960 1627416 5746952 1627312 5746976 1627144 5747544 +1627064 5747512 1627144 5747544 1627312 5746976 1627136 5747072 +1627144 5747544 1627512 5746960 1627312 5746976 1627136 5747072 +1627064 5747512 1627144 5747544 1627136 5747072 1627016 5747176 +1627144 5747544 1627312 5746976 1627136 5747072 1627016 5747176 +1627064 5747512 1627144 5747544 1627016 5747176 1627016 5747504 +1627144 5747544 1628160 5747504 1628016 5747192 1627800 5747032 +1627144 5747544 1628016 5747192 1627800 5747032 1627512 5746960 +1627064 5747512 1627576 5748144 1627144 5747544 1627016 5747176 +1627576 5748144 1627144 5747544 1627064 5747512 1627472 5748168 +1627576 5748144 1627952 5748040 1627144 5747544 1627472 5748168 +1627064 5747512 1627368 5748232 1627472 5748168 1627144 5747544 +1627064 5747512 1626808 5748160 1627368 5748232 1627144 5747544 +1627064 5747512 1626704 5748056 1626808 5748160 1627144 5747544 +1627368 5748232 1627472 5748168 1627144 5747544 1626808 5748160 +1626808 5748160 1627368 5748232 1627144 5747544 1626704 5748056 +1627064 5747512 1626832 5747544 1626704 5748056 1627144 5747544 +1627064 5747512 1626920 5747512 1626832 5747544 1627144 5747544 +1626704 5748056 1626808 5748160 1627144 5747544 1626832 5747544 +1626832 5747544 1626704 5748056 1627144 5747544 1626920 5747512 +1627064 5747512 1627016 5747504 1626920 5747512 1627144 5747544 +1626832 5747544 1626792 5747568 1626704 5748056 1627144 5747544 +1626704 5748056 1626808 5748160 1627144 5747544 1626792 5747568 +1626792 5747568 1626728 5747616 1626704 5748056 1627144 5747544 +1626832 5747544 1626792 5747568 1627144 5747544 1626920 5747512 +1627144 5747544 1627016 5747176 1627064 5747512 1626920 5747512 +1627472 5748168 1627576 5748144 1627144 5747544 1627368 5748232 +1626808 5748160 1626872 5748264 1627368 5748232 1627144 5747544 +1627576 5748144 1627200 5747600 1627144 5747544 1627472 5748168 +1627576 5748144 1627952 5748040 1627200 5747600 1627472 5748168 +1627200 5747600 1627952 5748040 1627144 5747544 1627472 5748168 +1627144 5747544 1627200 5747600 1627952 5748040 1628160 5747616 +1627200 5747600 1627576 5748144 1627952 5748040 1628160 5747616 +1627144 5747544 1627200 5747600 1628160 5747616 1628160 5747504 +1627144 5747544 1627472 5748168 1627200 5747600 1628160 5747504 +1627144 5747544 1627200 5747600 1628160 5747504 1628016 5747192 +1627200 5747600 1628160 5747616 1628160 5747504 1628016 5747192 +1627144 5747544 1627472 5748168 1627200 5747600 1628016 5747192 +1627200 5747600 1627952 5748040 1628160 5747616 1628160 5747504 +1628160 5747504 1628120 5747304 1628016 5747192 1627200 5747600 +1627952 5748040 1627200 5747600 1627576 5748144 1627816 5748152 +1627952 5748040 1628048 5748008 1628160 5747616 1627200 5747600 +1627144 5747544 1627200 5747600 1628016 5747192 1627800 5747032 +1627144 5747544 1627472 5748168 1627200 5747600 1627800 5747032 +1627200 5747600 1628160 5747504 1628016 5747192 1627800 5747032 +1627144 5747544 1627200 5747600 1627800 5747032 1627512 5746960 +1627144 5747544 1627200 5747600 1627512 5746960 1627312 5746976 +1627144 5747544 1627472 5748168 1627200 5747600 1627312 5746976 +1627512 5746960 1627416 5746952 1627312 5746976 1627200 5747600 +1627144 5747544 1627200 5747600 1627312 5746976 1627136 5747072 +1627200 5747600 1628016 5747192 1627800 5747032 1627512 5746960 +1627200 5747600 1627800 5747032 1627512 5746960 1627312 5746976 +1627144 5747544 1627368 5748232 1627472 5748168 1627200 5747600 +1627144 5747544 1627368 5748232 1627200 5747600 1627312 5746976 +1627472 5748168 1627576 5748144 1627200 5747600 1627368 5748232 +1627144 5747544 1626808 5748160 1627368 5748232 1627200 5747600 +1627144 5747544 1626808 5748160 1627200 5747600 1627312 5746976 +1627144 5747544 1626704 5748056 1626808 5748160 1627200 5747600 +1627144 5747544 1626704 5748056 1627200 5747600 1627312 5746976 +1627144 5747544 1626792 5747568 1626704 5748056 1627200 5747600 +1627144 5747544 1626792 5747568 1627200 5747600 1627312 5746976 +1626792 5747568 1626728 5747616 1626704 5748056 1627200 5747600 +1626808 5748160 1627368 5748232 1627200 5747600 1626704 5748056 +1626704 5748056 1626808 5748160 1627200 5747600 1626792 5747568 +1627144 5747544 1626832 5747544 1626792 5747568 1627200 5747600 +1627144 5747544 1626832 5747544 1627200 5747600 1627312 5746976 +1626792 5747568 1626704 5748056 1627200 5747600 1626832 5747544 +1627144 5747544 1626920 5747512 1626832 5747544 1627200 5747600 +1627144 5747544 1627064 5747512 1626920 5747512 1627200 5747600 +1627144 5747544 1627064 5747512 1627200 5747600 1627312 5746976 +1626920 5747512 1626832 5747544 1627200 5747600 1627064 5747512 +1627064 5747512 1627016 5747504 1626920 5747512 1627200 5747600 +1627064 5747512 1627016 5747504 1627200 5747600 1627144 5747544 +1626920 5747512 1626832 5747544 1627200 5747600 1627016 5747504 +1626832 5747544 1626792 5747568 1627200 5747600 1626920 5747512 +1627368 5748232 1627472 5748168 1627200 5747600 1626808 5748160 +1626808 5748160 1626872 5748264 1627368 5748232 1627200 5747600 +1626808 5748160 1627200 5747656 1627200 5747600 1626704 5748056 +1627200 5747656 1627368 5748232 1627200 5747600 1626704 5748056 +1627200 5747600 1626792 5747568 1626704 5748056 1627200 5747656 +1627200 5747600 1626792 5747568 1627200 5747656 1627368 5748232 +1627200 5747600 1626832 5747544 1626792 5747568 1627200 5747656 +1627200 5747600 1626832 5747544 1627200 5747656 1627368 5748232 +1626792 5747568 1626728 5747616 1626704 5748056 1627200 5747656 +1626728 5747616 1626664 5747696 1626704 5748056 1627200 5747656 +1626704 5748056 1626808 5748160 1627200 5747656 1626728 5747616 +1626792 5747568 1626728 5747616 1627200 5747656 1626832 5747544 +1626808 5748160 1627368 5748232 1627200 5747656 1626704 5748056 +1627200 5747600 1626920 5747512 1626832 5747544 1627200 5747656 +1627200 5747600 1626920 5747512 1627200 5747656 1627368 5748232 +1626832 5747544 1626792 5747568 1627200 5747656 1626920 5747512 +1627200 5747600 1627016 5747504 1626920 5747512 1627200 5747656 +1627200 5747600 1627016 5747504 1627200 5747656 1627368 5748232 +1627200 5747600 1627064 5747512 1627016 5747504 1627200 5747656 +1627200 5747600 1627144 5747544 1627064 5747512 1627200 5747656 +1627200 5747600 1627144 5747544 1627200 5747656 1627368 5748232 +1627016 5747504 1626920 5747512 1627200 5747656 1627064 5747512 +1627064 5747512 1627016 5747504 1627200 5747656 1627144 5747544 +1626920 5747512 1626832 5747544 1627200 5747656 1627016 5747504 +1627200 5747600 1627200 5747656 1627368 5748232 1627472 5748168 +1627200 5747600 1627144 5747544 1627200 5747656 1627472 5748168 +1627200 5747600 1627200 5747656 1627472 5748168 1627576 5748144 +1627200 5747600 1627144 5747544 1627200 5747656 1627576 5748144 +1627200 5747600 1627200 5747656 1627576 5748144 1627952 5748040 +1627200 5747600 1627200 5747656 1627952 5748040 1628160 5747616 +1627200 5747600 1627144 5747544 1627200 5747656 1628160 5747616 +1627200 5747656 1627576 5748144 1627952 5748040 1628160 5747616 +1627200 5747656 1627472 5748168 1627576 5748144 1627952 5748040 +1627200 5747600 1627200 5747656 1628160 5747616 1628160 5747504 +1627200 5747656 1626808 5748160 1627368 5748232 1627472 5748168 +1627576 5748144 1627816 5748152 1627952 5748040 1627200 5747656 +1627952 5748040 1628048 5748008 1628160 5747616 1627200 5747656 +1627200 5747656 1627368 5748232 1627472 5748168 1627576 5748144 +1627368 5748232 1627200 5747656 1626808 5748160 1626872 5748264 +1626728 5747616 1627144 5747696 1627200 5747656 1626792 5747568 +1626728 5747616 1626704 5748056 1627144 5747696 1626792 5747568 +1626704 5748056 1627144 5747696 1626728 5747616 1626664 5747696 +1626704 5748056 1627144 5747696 1626664 5747696 1626488 5747912 +1626704 5748056 1627200 5747656 1627144 5747696 1626664 5747696 +1627144 5747696 1626792 5747568 1626728 5747616 1626664 5747696 +1627200 5747656 1627144 5747696 1626704 5748056 1626808 5748160 +1627144 5747696 1626664 5747696 1626704 5748056 1626808 5748160 +1627200 5747656 1626832 5747544 1626792 5747568 1627144 5747696 +1627200 5747656 1626920 5747512 1626832 5747544 1627144 5747696 +1626792 5747568 1626728 5747616 1627144 5747696 1626832 5747544 +1626832 5747544 1626792 5747568 1627144 5747696 1626920 5747512 +1627144 5747696 1626808 5748160 1627200 5747656 1626920 5747512 +1627200 5747656 1627144 5747696 1626808 5748160 1627368 5748232 +1627144 5747696 1626704 5748056 1626808 5748160 1627368 5748232 +1627200 5747656 1627144 5747696 1627368 5748232 1627472 5748168 +1627200 5747656 1626920 5747512 1627144 5747696 1627472 5748168 +1627144 5747696 1626808 5748160 1627368 5748232 1627472 5748168 +1627200 5747656 1627016 5747504 1626920 5747512 1627144 5747696 +1626920 5747512 1626832 5747544 1627144 5747696 1627016 5747504 +1627200 5747656 1627064 5747512 1627016 5747504 1627144 5747696 +1627200 5747656 1627144 5747544 1627064 5747512 1627144 5747696 +1627200 5747656 1627200 5747600 1627144 5747544 1627144 5747696 +1627064 5747512 1627016 5747504 1627144 5747696 1627144 5747544 +1627144 5747544 1627064 5747512 1627144 5747696 1627200 5747600 +1627200 5747656 1627200 5747600 1627144 5747696 1627472 5748168 +1627016 5747504 1626920 5747512 1627144 5747696 1627064 5747512 +1627200 5747656 1627144 5747696 1627472 5748168 1627576 5748144 +1626808 5748160 1626872 5748264 1627368 5748232 1627144 5747696 +1626808 5748160 1627136 5747720 1627144 5747696 1626704 5748056 +1627144 5747696 1626664 5747696 1626704 5748056 1627136 5747720 +1626664 5747696 1626488 5747912 1626704 5748056 1627136 5747720 +1627136 5747720 1627368 5748232 1627144 5747696 1626664 5747696 +1627144 5747696 1626728 5747616 1626664 5747696 1627136 5747720 +1626664 5747696 1626704 5748056 1627136 5747720 1626728 5747616 +1627144 5747696 1626728 5747616 1627136 5747720 1627368 5748232 +1627144 5747696 1626792 5747568 1626728 5747616 1627136 5747720 +1627144 5747696 1626792 5747568 1627136 5747720 1627368 5748232 +1627144 5747696 1626832 5747544 1626792 5747568 1627136 5747720 +1627144 5747696 1626832 5747544 1627136 5747720 1627368 5748232 +1626792 5747568 1626728 5747616 1627136 5747720 1626832 5747544 +1626728 5747616 1626664 5747696 1627136 5747720 1626792 5747568 +1626704 5748056 1626808 5748160 1627136 5747720 1626664 5747696 +1627144 5747696 1626920 5747512 1626832 5747544 1627136 5747720 +1627144 5747696 1627016 5747504 1626920 5747512 1627136 5747720 +1627144 5747696 1627016 5747504 1627136 5747720 1627368 5748232 +1626832 5747544 1626792 5747568 1627136 5747720 1626920 5747512 +1626920 5747512 1626832 5747544 1627136 5747720 1627016 5747504 +1627144 5747696 1627136 5747720 1627368 5748232 1627472 5748168 +1627144 5747696 1627016 5747504 1627136 5747720 1627472 5748168 +1627144 5747696 1627136 5747720 1627472 5748168 1627200 5747656 +1627144 5747696 1627016 5747504 1627136 5747720 1627200 5747656 +1627136 5747720 1627368 5748232 1627472 5748168 1627200 5747656 +1627136 5747720 1626808 5748160 1627368 5748232 1627472 5748168 +1626808 5748160 1627368 5748232 1627136 5747720 1626704 5748056 +1627144 5747696 1627064 5747512 1627016 5747504 1627136 5747720 +1627472 5748168 1627576 5748144 1627200 5747656 1627136 5747720 +1627368 5748232 1627136 5747720 1626808 5748160 1626872 5748264 +1626704 5748056 1627096 5747752 1627136 5747720 1626664 5747696 +1626704 5748056 1626808 5748160 1627096 5747752 1626664 5747696 +1626704 5748056 1627096 5747752 1626664 5747696 1626488 5747912 +1627136 5747720 1626728 5747616 1626664 5747696 1627096 5747752 +1627136 5747720 1626792 5747568 1626728 5747616 1627096 5747752 +1626728 5747616 1626664 5747696 1627096 5747752 1626792 5747568 +1627136 5747720 1626832 5747544 1626792 5747568 1627096 5747752 +1627136 5747720 1626920 5747512 1626832 5747544 1627096 5747752 +1626832 5747544 1626792 5747568 1627096 5747752 1626920 5747512 +1626792 5747568 1626728 5747616 1627096 5747752 1626832 5747544 +1626664 5747696 1626704 5748056 1627096 5747752 1626728 5747616 +1627136 5747720 1627016 5747504 1626920 5747512 1627096 5747752 +1627136 5747720 1627144 5747696 1627016 5747504 1627096 5747752 +1626920 5747512 1626832 5747544 1627096 5747752 1627016 5747504 +1627016 5747504 1626920 5747512 1627096 5747752 1627144 5747696 +1627096 5747752 1626808 5748160 1627136 5747720 1627144 5747696 +1627136 5747720 1627096 5747752 1626808 5748160 1627368 5748232 +1627096 5747752 1626704 5748056 1626808 5748160 1627368 5748232 +1627136 5747720 1627096 5747752 1627368 5748232 1627472 5748168 +1627136 5747720 1627096 5747752 1627472 5748168 1627200 5747656 +1627136 5747720 1627144 5747696 1627096 5747752 1627472 5748168 +1627096 5747752 1626808 5748160 1627368 5748232 1627472 5748168 +1627144 5747696 1627064 5747512 1627016 5747504 1627096 5747752 +1627144 5747696 1627064 5747512 1627096 5747752 1627136 5747720 +1627016 5747504 1626920 5747512 1627096 5747752 1627064 5747512 +1627144 5747696 1627144 5747544 1627064 5747512 1627096 5747752 +1626808 5748160 1626872 5748264 1627368 5748232 1627096 5747752 +1626808 5748160 1626872 5748264 1627096 5747752 1626704 5748056 +1627368 5748232 1627472 5748168 1627096 5747752 1626872 5748264 +1626872 5748264 1627296 5748320 1627368 5748232 1627096 5747752 +1627096 5747752 1627024 5747792 1626704 5748056 1626808 5748160 +1627096 5747752 1627024 5747792 1626808 5748160 1626872 5748264 +1627096 5747752 1626664 5747696 1627024 5747792 1626872 5748264 +1627024 5747792 1626704 5748056 1626808 5748160 1626872 5748264 +1627024 5747792 1626664 5747696 1626704 5748056 1626808 5748160 +1626704 5748056 1627024 5747792 1626664 5747696 1626488 5747912 +1626664 5747696 1627024 5747792 1627096 5747752 1626728 5747616 +1627024 5747792 1626872 5748264 1627096 5747752 1626728 5747616 +1626664 5747696 1626704 5748056 1627024 5747792 1626728 5747616 +1627096 5747752 1626792 5747568 1626728 5747616 1627024 5747792 +1627096 5747752 1626792 5747568 1627024 5747792 1626872 5748264 +1627096 5747752 1626832 5747544 1626792 5747568 1627024 5747792 +1627096 5747752 1626832 5747544 1627024 5747792 1626872 5748264 +1626792 5747568 1626728 5747616 1627024 5747792 1626832 5747544 +1627096 5747752 1626920 5747512 1626832 5747544 1627024 5747792 +1627096 5747752 1626920 5747512 1627024 5747792 1626872 5748264 +1627096 5747752 1627016 5747504 1626920 5747512 1627024 5747792 +1627096 5747752 1627016 5747504 1627024 5747792 1626872 5748264 +1626920 5747512 1626832 5747544 1627024 5747792 1627016 5747504 +1626832 5747544 1626792 5747568 1627024 5747792 1626920 5747512 +1626728 5747616 1626664 5747696 1627024 5747792 1626792 5747568 +1627096 5747752 1627064 5747512 1627016 5747504 1627024 5747792 +1627096 5747752 1627024 5747792 1626872 5748264 1627368 5748232 +1627024 5747792 1626808 5748160 1626872 5748264 1627368 5748232 +1627096 5747752 1627016 5747504 1627024 5747792 1627368 5748232 +1627096 5747752 1627024 5747792 1627368 5748232 1627472 5748168 +1626872 5748264 1627296 5748320 1627368 5748232 1627024 5747792 +1627024 5747792 1626944 5747816 1626704 5748056 1626808 5748160 +1627024 5747792 1626944 5747816 1626808 5748160 1626872 5748264 +1627024 5747792 1626664 5747696 1626944 5747816 1626808 5748160 +1626664 5747696 1626944 5747816 1627024 5747792 1626728 5747616 +1626944 5747816 1626808 5748160 1627024 5747792 1626728 5747616 +1626704 5748056 1626944 5747816 1626664 5747696 1626488 5747912 +1626944 5747816 1626664 5747696 1626704 5748056 1626808 5748160 +1626664 5747696 1626704 5748056 1626944 5747816 1626728 5747616 +1627024 5747792 1626792 5747568 1626728 5747616 1626944 5747816 +1627024 5747792 1626792 5747568 1626944 5747816 1626808 5748160 +1626728 5747616 1626664 5747696 1626944 5747816 1626792 5747568 +1627024 5747792 1626832 5747544 1626792 5747568 1626944 5747816 +1627024 5747792 1626832 5747544 1626944 5747816 1626808 5748160 +1627024 5747792 1626920 5747512 1626832 5747544 1626944 5747816 +1627024 5747792 1626920 5747512 1626944 5747816 1626808 5748160 +1626832 5747544 1626792 5747568 1626944 5747816 1626920 5747512 +1627024 5747792 1627016 5747504 1626920 5747512 1626944 5747816 +1626792 5747568 1626728 5747616 1626944 5747816 1626832 5747544 +1626704 5748056 1626856 5747808 1626664 5747696 1626488 5747912 +1626944 5747816 1626856 5747808 1626704 5748056 1626808 5748160 +1626944 5747816 1626856 5747808 1626808 5748160 1627024 5747792 +1626856 5747808 1626664 5747696 1626704 5748056 1626808 5748160 +1626944 5747816 1626664 5747696 1626856 5747808 1626808 5748160 +1626664 5747696 1626856 5747808 1626944 5747816 1626728 5747616 +1626944 5747816 1626792 5747568 1626728 5747616 1626856 5747808 +1626664 5747696 1626704 5748056 1626856 5747808 1626728 5747616 +1626856 5747808 1626808 5748160 1626944 5747816 1626792 5747568 +1626728 5747616 1626664 5747696 1626856 5747808 1626792 5747568 +1626944 5747816 1626832 5747544 1626792 5747568 1626856 5747808 +1626792 5747568 1626728 5747616 1626856 5747808 1626832 5747544 +1626944 5747816 1626920 5747512 1626832 5747544 1626856 5747808 +1626944 5747816 1626832 5747544 1626856 5747808 1626808 5748160 +1626704 5748056 1626760 5747768 1626664 5747696 1626488 5747912 +1626856 5747808 1626760 5747768 1626704 5748056 1626808 5748160 +1626664 5747696 1626760 5747768 1626856 5747808 1626728 5747616 +1626760 5747768 1626704 5748056 1626856 5747808 1626728 5747616 +1626856 5747808 1626792 5747568 1626728 5747616 1626760 5747768 +1626856 5747808 1626832 5747544 1626792 5747568 1626760 5747768 +1626856 5747808 1626792 5747568 1626760 5747768 1626704 5748056 +1626728 5747616 1626664 5747696 1626760 5747768 1626792 5747568 +1626664 5747696 1626392 5747784 1626488 5747912 1626760 5747768 +1626704 5748056 1626856 5747808 1626760 5747768 1626488 5747912 +1626760 5747768 1626728 5747616 1626664 5747696 1626488 5747912 +1626760 5747768 1626664 5747736 1626488 5747912 1626704 5748056 +1626488 5747912 1626664 5747736 1626664 5747696 1626392 5747784 +1626664 5747696 1626376 5747696 1626392 5747784 1626664 5747736 +1626664 5747736 1626760 5747768 1626664 5747696 1626392 5747784 +1626760 5747768 1626664 5747736 1626704 5748056 1626856 5747808 +1626760 5747768 1626664 5747696 1626664 5747736 1626704 5748056 +1626664 5747696 1626664 5747736 1626760 5747768 1626728 5747616 +1626664 5747736 1626392 5747784 1626488 5747912 1626704 5748056 +1628776 5748096 1630952 5748464 1629872 5726768 1628120 5747304 +1631624 5750656 1630952 5748464 1628776 5748096 1628960 5748368 +1629872 5726768 1630952 5748464 1631624 5750656 1629928 5726696 +1631624 5750656 1631808 5750832 1629928 5726696 1630952 5748464 +1631808 5750832 1631896 5750984 1629928 5726696 1630952 5748464 +1631896 5750984 1629944 5726624 1629928 5726696 1630952 5748464 +1631808 5750832 1631896 5750984 1630952 5748464 1631624 5750656 +1629928 5726696 1629872 5726768 1630952 5748464 1631896 5750984 +1630952 5748464 1629928 5726696 1629872 5726768 1628120 5747304 +1631624 5750656 1631808 5750832 1630952 5748464 1628960 5748368 +1628776 5748096 1628960 5748368 1630952 5748464 1628120 5747304 +1628776 5748096 1630952 5748464 1628120 5747304 1628504 5747840 +1630952 5748464 1629872 5726768 1628120 5747304 1628504 5747840 +1628776 5748096 1628960 5748368 1630952 5748464 1628504 5747840 +1628120 5747304 1628168 5747408 1628504 5747840 1630952 5748464 +1631624 5750656 1630952 5748464 1628960 5748368 1631392 5750568 +1628960 5748368 1629048 5748600 1631392 5750568 1630952 5748464 +1630952 5748464 1628776 5748096 1628960 5748368 1629048 5748600 +1631624 5750656 1631808 5750832 1630952 5748464 1631392 5750568 +1631392 5750568 1631624 5750656 1630952 5748464 1629048 5748600 +1629872 5726768 1629776 5726856 1628120 5747304 1630952 5748464 +1628120 5747304 1628504 5747840 1630952 5748464 1629776 5726856 +1629872 5726768 1629776 5726856 1630952 5748464 1629928 5726696 +1629776 5726856 1628016 5747192 1628120 5747304 1630952 5748464 +1628120 5747304 1628504 5747840 1630952 5748464 1628016 5747192 +1629776 5726856 1629584 5726976 1628016 5747192 1630952 5748464 +1629584 5726976 1627800 5747032 1628016 5747192 1630952 5748464 +1629584 5726976 1627512 5746960 1627800 5747032 1630952 5748464 +1629584 5726976 1627800 5747032 1630952 5748464 1629776 5726856 +1628016 5747192 1628120 5747304 1630952 5748464 1627800 5747032 +1629776 5726856 1629584 5726976 1630952 5748464 1629872 5726768 +1629048 5748600 1631232 5750544 1631392 5750568 1630952 5748464 +1629048 5748600 1631232 5750544 1630952 5748464 1628960 5748368 +1631392 5750568 1631624 5750656 1630952 5748464 1631232 5750544 +1629048 5748600 1629072 5748768 1631232 5750544 1630952 5748464 +1629048 5748600 1629072 5748768 1630952 5748464 1628960 5748368 +1629072 5748768 1629056 5748960 1631232 5750544 1630952 5748464 +1631232 5750544 1631392 5750568 1630952 5748464 1629056 5748960 +1629056 5748960 1631168 5750568 1631232 5750544 1630952 5748464 +1629056 5748960 1630912 5750672 1631168 5750568 1630952 5748464 +1630912 5750672 1631064 5750648 1631168 5750568 1630952 5748464 +1629056 5748960 1630864 5750688 1630912 5750672 1630952 5748464 +1629056 5748960 1629000 5749168 1630864 5750688 1630952 5748464 +1629000 5749168 1628944 5749920 1630864 5750688 1630952 5748464 +1630912 5750672 1631168 5750568 1630952 5748464 1630864 5750688 +1630864 5750688 1630912 5750672 1630952 5748464 1629000 5749168 +1629056 5748960 1629000 5749168 1630952 5748464 1629072 5748768 +1631232 5750544 1631392 5750568 1630952 5748464 1631168 5750568 +1631168 5750568 1631232 5750544 1630952 5748464 1630912 5750672 +1629072 5748768 1629056 5748960 1630952 5748464 1629048 5748600 +1631896 5750984 1631072 5748576 1630952 5748464 1631808 5750832 +1629928 5726696 1631072 5748576 1631896 5750984 1629944 5726624 +1630952 5748464 1631624 5750656 1631808 5750832 1631072 5748576 +1631808 5750832 1631896 5750984 1631072 5748576 1631624 5750656 +1630952 5748464 1631072 5748576 1629928 5726696 1629872 5726768 +1630952 5748464 1631072 5748576 1629872 5726768 1629776 5726856 +1630952 5748464 1631392 5750568 1631624 5750656 1631072 5748576 +1631624 5750656 1631808 5750832 1631072 5748576 1631392 5750568 +1631072 5748576 1629872 5726768 1630952 5748464 1631392 5750568 +1629928 5726696 1629872 5726768 1631072 5748576 1629944 5726624 +1631896 5750984 1629944 5726624 1631072 5748576 1631808 5750832 +1631896 5750984 1751256 5699792 1629944 5726624 1631072 5748576 +1630952 5748464 1631232 5750544 1631392 5750568 1631072 5748576 +1631392 5750568 1631624 5750656 1631072 5748576 1631232 5750544 +1630952 5748464 1631232 5750544 1631072 5748576 1629872 5726768 +1630952 5748464 1631168 5750568 1631232 5750544 1631072 5748576 +1630952 5748464 1631168 5750568 1631072 5748576 1629872 5726768 +1631232 5750544 1631392 5750568 1631072 5748576 1631168 5750568 +1630952 5748464 1630912 5750672 1631168 5750568 1631072 5748576 +1630952 5748464 1630912 5750672 1631072 5748576 1629872 5726768 +1630912 5750672 1631064 5750648 1631168 5750568 1631072 5748576 +1630952 5748464 1630864 5750688 1630912 5750672 1631072 5748576 +1630952 5748464 1630864 5750688 1631072 5748576 1629872 5726768 +1630952 5748464 1629000 5749168 1630864 5750688 1631072 5748576 +1630952 5748464 1629000 5749168 1631072 5748576 1629872 5726768 +1629000 5749168 1628944 5749920 1630864 5750688 1631072 5748576 +1630952 5748464 1629056 5748960 1629000 5749168 1631072 5748576 +1630864 5750688 1630912 5750672 1631072 5748576 1629000 5749168 +1631168 5750568 1631232 5750544 1631072 5748576 1630912 5750672 +1630912 5750672 1631168 5750568 1631072 5748576 1630864 5750688 +1631072 5748576 1631096 5748624 1629944 5726624 1629928 5726696 +1631096 5748624 1631896 5750984 1629944 5726624 1629928 5726696 +1631072 5748576 1631096 5748624 1629928 5726696 1629872 5726768 +1631072 5748576 1631896 5750984 1631096 5748624 1629928 5726696 +1631896 5750984 1631096 5748624 1631072 5748576 1631808 5750832 +1631072 5748576 1631624 5750656 1631808 5750832 1631096 5748624 +1631072 5748576 1631392 5750568 1631624 5750656 1631096 5748624 +1631624 5750656 1631808 5750832 1631096 5748624 1631392 5750568 +1631896 5750984 1629944 5726624 1631096 5748624 1631808 5750832 +1631072 5748576 1631232 5750544 1631392 5750568 1631096 5748624 +1631392 5750568 1631624 5750656 1631096 5748624 1631232 5750544 +1631096 5748624 1629928 5726696 1631072 5748576 1631232 5750544 +1631808 5750832 1631896 5750984 1631096 5748624 1631624 5750656 +1629944 5726624 1631096 5748624 1631896 5750984 1751256 5699792 +1631072 5748576 1631168 5750568 1631232 5750544 1631096 5748624 +1631232 5750544 1631392 5750568 1631096 5748624 1631168 5750568 +1631072 5748576 1631168 5750568 1631096 5748624 1629928 5726696 +1631072 5748576 1630912 5750672 1631168 5750568 1631096 5748624 +1631072 5748576 1630912 5750672 1631096 5748624 1629928 5726696 +1630912 5750672 1631064 5750648 1631168 5750568 1631096 5748624 +1631168 5750568 1631232 5750544 1631096 5748624 1630912 5750672 +1631072 5748576 1630864 5750688 1630912 5750672 1631096 5748624 +1631072 5748576 1630864 5750688 1631096 5748624 1629928 5726696 +1631072 5748576 1629000 5749168 1630864 5750688 1631096 5748624 +1631072 5748576 1629000 5749168 1631096 5748624 1629928 5726696 +1629000 5749168 1628944 5749920 1630864 5750688 1631096 5748624 +1631072 5748576 1630952 5748464 1629000 5749168 1631096 5748624 +1631072 5748576 1630952 5748464 1631096 5748624 1629928 5726696 +1630952 5748464 1629056 5748960 1629000 5749168 1631096 5748624 +1629000 5749168 1630864 5750688 1631096 5748624 1629056 5748960 +1630952 5748464 1629056 5748960 1631096 5748624 1631072 5748576 +1630952 5748464 1629072 5748768 1629056 5748960 1631096 5748624 +1630912 5750672 1631168 5750568 1631096 5748624 1630864 5750688 +1630864 5750688 1630912 5750672 1631096 5748624 1629000 5749168 +1631168 5750568 1631096 5748744 1630912 5750672 1631064 5750648 +1631096 5748624 1631096 5748744 1631168 5750568 1631232 5750544 +1631096 5748624 1630912 5750672 1631096 5748744 1631232 5750544 +1631096 5748744 1630912 5750672 1631168 5750568 1631232 5750544 +1631096 5748624 1631096 5748744 1631232 5750544 1631392 5750568 +1631096 5748624 1631096 5748744 1631392 5750568 1631624 5750656 +1631096 5748624 1631096 5748744 1631624 5750656 1631808 5750832 +1631096 5748744 1631392 5750568 1631624 5750656 1631808 5750832 +1631096 5748624 1630912 5750672 1631096 5748744 1631808 5750832 +1631096 5748744 1631232 5750544 1631392 5750568 1631624 5750656 +1631096 5748624 1631096 5748744 1631808 5750832 1631896 5750984 +1631096 5748744 1631168 5750568 1631232 5750544 1631392 5750568 +1630912 5750672 1631096 5748744 1631096 5748624 1630864 5750688 +1630912 5750672 1631168 5750568 1631096 5748744 1630864 5750688 +1631096 5748744 1631808 5750832 1631096 5748624 1630864 5750688 +1631096 5748624 1629000 5749168 1630864 5750688 1631096 5748744 +1631096 5748624 1629000 5749168 1631096 5748744 1631808 5750832 +1629000 5749168 1628944 5749920 1630864 5750688 1631096 5748744 +1631096 5748624 1629056 5748960 1629000 5749168 1631096 5748744 +1631096 5748624 1629056 5748960 1631096 5748744 1631808 5750832 +1631096 5748624 1630952 5748464 1629056 5748960 1631096 5748744 +1631096 5748624 1630952 5748464 1631096 5748744 1631808 5750832 +1629056 5748960 1629000 5749168 1631096 5748744 1630952 5748464 +1631096 5748624 1631072 5748576 1630952 5748464 1631096 5748744 +1631096 5748624 1631072 5748576 1631096 5748744 1631808 5750832 +1630952 5748464 1629056 5748960 1631096 5748744 1631072 5748576 +1630952 5748464 1629072 5748768 1629056 5748960 1631096 5748744 +1630864 5750688 1630912 5750672 1631096 5748744 1629000 5749168 +1629000 5749168 1630864 5750688 1631096 5748744 1629056 5748960 +1630864 5750688 1631040 5748856 1629000 5749168 1628944 5749920 +1630864 5750688 1631096 5748744 1631040 5748856 1628944 5749920 +1629000 5749168 1628896 5749392 1628944 5749920 1631040 5748856 +1631040 5748856 1631096 5748744 1629000 5749168 1628944 5749920 +1630864 5750688 1631040 5748856 1628944 5749920 1630840 5750704 +1630864 5750688 1631096 5748744 1631040 5748856 1630840 5750704 +1631040 5748856 1629000 5749168 1628944 5749920 1630840 5750704 +1628944 5749920 1628952 5750072 1630840 5750704 1631040 5748856 +1631096 5748744 1631040 5748856 1630864 5750688 1630912 5750672 +1631096 5748744 1629000 5749168 1631040 5748856 1630912 5750672 +1631096 5748744 1631040 5748856 1630912 5750672 1631168 5750568 +1631096 5748744 1629000 5749168 1631040 5748856 1631168 5750568 +1631040 5748856 1630840 5750704 1630864 5750688 1630912 5750672 +1631096 5748744 1631040 5748856 1631168 5750568 1631232 5750544 +1631096 5748744 1629000 5749168 1631040 5748856 1631232 5750544 +1631040 5748856 1630912 5750672 1631168 5750568 1631232 5750544 +1630912 5750672 1631064 5750648 1631168 5750568 1631040 5748856 +1631096 5748744 1631040 5748856 1631232 5750544 1631392 5750568 +1631096 5748744 1629000 5749168 1631040 5748856 1631392 5750568 +1631096 5748744 1631040 5748856 1631392 5750568 1631624 5750656 +1631096 5748744 1629000 5749168 1631040 5748856 1631624 5750656 +1631096 5748744 1631040 5748856 1631624 5750656 1631808 5750832 +1631040 5748856 1631168 5750568 1631232 5750544 1631392 5750568 +1631040 5748856 1631232 5750544 1631392 5750568 1631624 5750656 +1631040 5748856 1630864 5750688 1630912 5750672 1631168 5750568 +1629000 5749168 1631040 5748856 1631096 5748744 1629056 5748960 +1631040 5748856 1631624 5750656 1631096 5748744 1629056 5748960 +1631096 5748744 1630952 5748464 1629056 5748960 1631040 5748856 +1631096 5748744 1630952 5748464 1631040 5748856 1631624 5750656 +1631096 5748744 1631072 5748576 1630952 5748464 1631040 5748856 +1631096 5748744 1631072 5748576 1631040 5748856 1631624 5750656 +1630952 5748464 1629056 5748960 1631040 5748856 1631072 5748576 +1629000 5749168 1628944 5749920 1631040 5748856 1629056 5748960 +1631096 5748744 1631096 5748624 1631072 5748576 1631040 5748856 +1630952 5748464 1629072 5748768 1629056 5748960 1631040 5748856 +1630952 5748464 1629072 5748768 1631040 5748856 1631072 5748576 +1629056 5748960 1629000 5749168 1631040 5748856 1629072 5748768 +1630952 5748464 1629048 5748600 1629072 5748768 1631040 5748856 +1628944 5749920 1630952 5748960 1631040 5748856 1629000 5749168 +1628944 5749920 1630952 5748960 1629000 5749168 1628896 5749392 +1631040 5748856 1629056 5748960 1629000 5749168 1630952 5748960 +1629000 5749168 1628944 5749920 1630952 5748960 1629056 5748960 +1630952 5748960 1630840 5750704 1631040 5748856 1629056 5748960 +1631040 5748856 1630952 5748960 1630840 5750704 1630864 5750688 +1631040 5748856 1630952 5748960 1630864 5750688 1630912 5750672 +1631040 5748856 1629056 5748960 1630952 5748960 1630912 5750672 +1630952 5748960 1628944 5749920 1630840 5750704 1630864 5750688 +1630952 5748960 1630840 5750704 1630864 5750688 1630912 5750672 +1630840 5750704 1630952 5748960 1628944 5749920 1628952 5750072 +1628944 5749920 1630840 5750704 1630952 5748960 1629000 5749168 +1631040 5748856 1630952 5748960 1630912 5750672 1631168 5750568 +1631040 5748856 1630952 5748960 1631168 5750568 1631232 5750544 +1630952 5748960 1630864 5750688 1630912 5750672 1631168 5750568 +1630912 5750672 1631064 5750648 1631168 5750568 1630952 5748960 +1631040 5748856 1630952 5748960 1631232 5750544 1631392 5750568 +1630952 5748960 1631168 5750568 1631232 5750544 1631392 5750568 +1631040 5748856 1629056 5748960 1630952 5748960 1631392 5750568 +1631040 5748856 1630952 5748960 1631392 5750568 1631624 5750656 +1630952 5748960 1630912 5750672 1631168 5750568 1631232 5750544 +1631040 5748856 1629072 5748768 1629056 5748960 1630952 5748960 +1629056 5748960 1629000 5749168 1630952 5748960 1629072 5748768 +1631040 5748856 1629072 5748768 1630952 5748960 1631392 5750568 +1631040 5748856 1630952 5748464 1629072 5748768 1630952 5748960 +1631040 5748856 1631072 5748576 1630952 5748464 1630952 5748960 +1631040 5748856 1630952 5748464 1630952 5748960 1631392 5750568 +1629072 5748768 1629056 5748960 1630952 5748960 1630952 5748464 +1630952 5748464 1629048 5748600 1629072 5748768 1630952 5748960 +1630952 5748960 1630832 5749024 1630840 5750704 1630864 5750688 +1630952 5748960 1630832 5749024 1630864 5750688 1630912 5750672 +1630952 5748960 1630832 5749024 1630912 5750672 1631168 5750568 +1630912 5750672 1631064 5750648 1631168 5750568 1630832 5749024 +1630832 5749024 1630840 5750704 1630864 5750688 1630912 5750672 +1630832 5749024 1630864 5750688 1630912 5750672 1631168 5750568 +1630840 5750704 1630832 5749024 1628944 5749920 1628952 5750072 +1630952 5748960 1628944 5749920 1630832 5749024 1631168 5750568 +1628944 5749920 1630832 5749024 1630952 5748960 1629000 5749168 +1630952 5748960 1629056 5748960 1629000 5749168 1630832 5749024 +1628944 5749920 1630840 5750704 1630832 5749024 1629000 5749168 +1628944 5749920 1630832 5749024 1629000 5749168 1628896 5749392 +1630952 5748960 1629072 5748768 1629056 5748960 1630832 5749024 +1629056 5748960 1629000 5749168 1630832 5749024 1629072 5748768 +1630832 5749024 1631168 5750568 1630952 5748960 1629072 5748768 +1629000 5749168 1628944 5749920 1630832 5749024 1629056 5748960 +1630832 5749024 1628944 5749920 1630840 5750704 1630864 5750688 +1630952 5748960 1630832 5749024 1631168 5750568 1631232 5750544 +1630952 5748960 1630832 5749024 1631232 5750544 1631392 5750568 +1630832 5749024 1630912 5750672 1631168 5750568 1631232 5750544 +1630952 5748960 1629072 5748768 1630832 5749024 1631232 5750544 +1630952 5748960 1630952 5748464 1629072 5748768 1630832 5749024 +1629072 5748768 1629056 5748960 1630832 5749024 1630952 5748464 +1630952 5748960 1631040 5748856 1630952 5748464 1630832 5749024 +1630952 5748960 1630952 5748464 1630832 5749024 1631232 5750544 +1630952 5748464 1629048 5748600 1629072 5748768 1630832 5749024 +1630832 5749024 1630776 5749016 1629056 5748960 1629000 5749168 +1630832 5749024 1629072 5748768 1630776 5749016 1629000 5749168 +1630776 5749016 1629072 5748768 1629056 5748960 1629000 5749168 +1629072 5748768 1630776 5749016 1630832 5749024 1630952 5748464 +1629072 5748768 1629056 5748960 1630776 5749016 1630952 5748464 +1630776 5749016 1629000 5749168 1630832 5749024 1630952 5748464 +1630832 5749024 1630776 5749016 1629000 5749168 1628944 5749920 +1630776 5749016 1629056 5748960 1629000 5749168 1628944 5749920 +1630832 5749024 1630776 5749016 1628944 5749920 1630840 5750704 +1630832 5749024 1630952 5748464 1630776 5749016 1630840 5750704 +1629000 5749168 1628896 5749392 1628944 5749920 1630776 5749016 +1628944 5749920 1628952 5750072 1630840 5750704 1630776 5749016 +1630776 5749016 1629000 5749168 1628944 5749920 1630840 5750704 +1630832 5749024 1630776 5749016 1630840 5750704 1630864 5750688 +1630776 5749016 1628944 5749920 1630840 5750704 1630864 5750688 +1630832 5749024 1630776 5749016 1630864 5750688 1630912 5750672 +1630832 5749024 1630952 5748464 1630776 5749016 1630912 5750672 +1630832 5749024 1630776 5749016 1630912 5750672 1631168 5750568 +1630776 5749016 1630840 5750704 1630864 5750688 1630912 5750672 +1630832 5749024 1630952 5748960 1630952 5748464 1630776 5749016 +1630832 5749024 1630952 5748960 1630776 5749016 1630912 5750672 +1630952 5748464 1629072 5748768 1630776 5749016 1630952 5748960 +1630952 5748960 1631040 5748856 1630952 5748464 1630776 5749016 +1631040 5748856 1631072 5748576 1630952 5748464 1630776 5749016 +1630952 5748464 1629072 5748768 1630776 5749016 1631040 5748856 +1630952 5748960 1631040 5748856 1630776 5749016 1630832 5749024 +1629072 5748768 1630776 5749016 1630952 5748464 1629048 5748600 +1630952 5748464 1628960 5748368 1629048 5748600 1630776 5749016 +1629072 5748768 1629056 5748960 1630776 5749016 1629048 5748600 +1630776 5749016 1631040 5748856 1630952 5748464 1629048 5748600 +1629048 5748600 1630576 5748888 1630952 5748464 1628960 5748368 +1630952 5748464 1628776 5748096 1628960 5748368 1630576 5748888 +1629048 5748600 1630776 5749016 1630576 5748888 1628960 5748368 +1630576 5748888 1630776 5749016 1630952 5748464 1628960 5748368 +1630952 5748464 1630576 5748888 1630776 5749016 1631040 5748856 +1630576 5748888 1629048 5748600 1630776 5749016 1631040 5748856 +1630952 5748464 1628960 5748368 1630576 5748888 1631040 5748856 +1630952 5748464 1630576 5748888 1631040 5748856 1631072 5748576 +1630776 5749016 1630952 5748960 1631040 5748856 1630576 5748888 +1630776 5749016 1630952 5748960 1630576 5748888 1629048 5748600 +1631040 5748856 1630952 5748464 1630576 5748888 1630952 5748960 +1630776 5749016 1630832 5749024 1630952 5748960 1630576 5748888 +1630776 5749016 1630576 5748888 1629048 5748600 1629072 5748768 +1630776 5749016 1630576 5748888 1629072 5748768 1629056 5748960 +1630776 5749016 1630952 5748960 1630576 5748888 1629056 5748960 +1630576 5748888 1628960 5748368 1629048 5748600 1629072 5748768 +1630776 5749016 1630576 5748888 1629056 5748960 1629000 5749168 +1630776 5749016 1630576 5748888 1629000 5749168 1628944 5749920 +1630576 5748888 1629072 5748768 1629056 5748960 1629000 5749168 +1630776 5749016 1630952 5748960 1630576 5748888 1628944 5749920 +1630576 5748888 1629056 5748960 1629000 5749168 1628944 5749920 +1629000 5749168 1628896 5749392 1628944 5749920 1630576 5748888 +1630776 5749016 1630576 5748888 1628944 5749920 1630840 5750704 +1630576 5748888 1629000 5749168 1628944 5749920 1630840 5750704 +1630776 5749016 1630952 5748960 1630576 5748888 1630840 5750704 +1630776 5749016 1630576 5748888 1630840 5750704 1630864 5750688 +1628944 5749920 1628952 5750072 1630840 5750704 1630576 5748888 +1630576 5748888 1629048 5748600 1629072 5748768 1629056 5748960 +1630576 5748888 1630344 5748704 1628960 5748368 1629048 5748600 +1628960 5748368 1630344 5748704 1630952 5748464 1628776 5748096 +1630952 5748464 1628504 5747840 1628776 5748096 1630344 5748704 +1630576 5748888 1630344 5748704 1629048 5748600 1629072 5748768 +1630344 5748704 1628960 5748368 1629048 5748600 1629072 5748768 +1630576 5748888 1630952 5748464 1630344 5748704 1629072 5748768 +1630952 5748464 1630344 5748704 1630576 5748888 1631040 5748856 +1630344 5748704 1628776 5748096 1628960 5748368 1629048 5748600 +1630344 5748704 1630576 5748888 1630952 5748464 1628776 5748096 +1630576 5748888 1630344 5748704 1629072 5748768 1629056 5748960 +1630576 5748888 1630344 5748704 1629056 5748960 1629000 5749168 +1630344 5748704 1629048 5748600 1629072 5748768 1629056 5748960 +1630576 5748888 1630952 5748464 1630344 5748704 1629000 5749168 +1630576 5748888 1630344 5748704 1629000 5749168 1628944 5749920 +1630344 5748704 1629072 5748768 1629056 5748960 1629000 5749168 +1630344 5748704 1630288 5748608 1628776 5748096 1628960 5748368 +1628776 5748096 1630288 5748608 1630952 5748464 1628504 5747840 +1630344 5748704 1630288 5748608 1628960 5748368 1629048 5748600 +1630344 5748704 1630288 5748608 1629048 5748600 1629072 5748768 +1630288 5748608 1628776 5748096 1628960 5748368 1629048 5748600 +1630344 5748704 1630288 5748608 1629072 5748768 1629056 5748960 +1630288 5748608 1629048 5748600 1629072 5748768 1629056 5748960 +1630288 5748608 1628960 5748368 1629048 5748600 1629072 5748768 +1630344 5748704 1630952 5748464 1630288 5748608 1629056 5748960 +1630952 5748464 1630288 5748608 1630344 5748704 1630576 5748888 +1630288 5748608 1630952 5748464 1628776 5748096 1628960 5748368 +1630344 5748704 1630288 5748608 1629056 5748960 1629000 5749168 +1628776 5748096 1630336 5748456 1630952 5748464 1628504 5747840 +1630336 5748456 1630288 5748608 1630952 5748464 1628504 5747840 +1630288 5748608 1630336 5748456 1628776 5748096 1628960 5748368 +1630288 5748608 1630336 5748456 1628960 5748368 1629048 5748600 +1630288 5748608 1630336 5748456 1629048 5748600 1629072 5748768 +1630336 5748456 1628776 5748096 1628960 5748368 1629048 5748600 +1630288 5748608 1630952 5748464 1630336 5748456 1629048 5748600 +1630952 5748464 1628120 5747304 1628504 5747840 1630336 5748456 +1630952 5748464 1628016 5747192 1628120 5747304 1630336 5748456 +1628120 5747304 1628168 5747408 1628504 5747840 1630336 5748456 +1628504 5747840 1628776 5748096 1630336 5748456 1628120 5747304 +1630952 5748464 1628120 5747304 1630336 5748456 1630288 5748608 +1630952 5748464 1630336 5748456 1630288 5748608 1630344 5748704 +1630952 5748464 1628120 5747304 1630336 5748456 1630344 5748704 +1630952 5748464 1630336 5748456 1630344 5748704 1630576 5748888 +1630952 5748464 1630336 5748456 1630576 5748888 1631040 5748856 +1630952 5748464 1628120 5747304 1630336 5748456 1630576 5748888 +1630336 5748456 1629048 5748600 1630288 5748608 1630344 5748704 +1630336 5748456 1630288 5748608 1630344 5748704 1630576 5748888 +1628776 5748096 1628960 5748368 1630336 5748456 1628504 5747840 +1628120 5747304 1630416 5748320 1630952 5748464 1628016 5747192 +1630416 5748320 1630336 5748456 1630952 5748464 1628016 5747192 +1630952 5748464 1630416 5748320 1630336 5748456 1630576 5748888 +1628120 5747304 1630336 5748456 1630416 5748320 1628016 5747192 +1630336 5748456 1630416 5748320 1628120 5747304 1628504 5747840 +1628120 5747304 1628168 5747408 1628504 5747840 1630416 5748320 +1630336 5748456 1630416 5748320 1628504 5747840 1628776 5748096 +1630336 5748456 1630952 5748464 1630416 5748320 1628776 5748096 +1630416 5748320 1628016 5747192 1628120 5747304 1628504 5747840 +1630416 5748320 1628120 5747304 1628504 5747840 1628776 5748096 +1630336 5748456 1630416 5748320 1628776 5748096 1628960 5748368 +1630416 5748320 1628504 5747840 1628776 5748096 1628960 5748368 +1630336 5748456 1630952 5748464 1630416 5748320 1628960 5748368 +1630336 5748456 1630416 5748320 1628960 5748368 1629048 5748600 +1630952 5748464 1627800 5747032 1628016 5747192 1630416 5748320 +1628016 5747192 1628120 5747304 1630416 5748320 1627800 5747032 +1630952 5748464 1629584 5726976 1627800 5747032 1630416 5748320 +1630952 5748464 1627800 5747032 1630416 5748320 1630336 5748456 +1627800 5747032 1630488 5748256 1630952 5748464 1629584 5726976 +1630952 5748464 1630488 5748256 1630416 5748320 1630336 5748456 +1627800 5747032 1630416 5748320 1630488 5748256 1629584 5726976 +1630488 5748256 1630416 5748320 1630952 5748464 1629584 5726976 +1627800 5747032 1630488 5748256 1629584 5726976 1627512 5746960 +1630952 5748464 1629776 5726856 1629584 5726976 1630488 5748256 +1630416 5748320 1630488 5748256 1627800 5747032 1628016 5747192 +1630416 5748320 1630488 5748256 1628016 5747192 1628120 5747304 +1630488 5748256 1629584 5726976 1627800 5747032 1628016 5747192 +1630416 5748320 1630488 5748256 1628120 5747304 1628504 5747840 +1630488 5748256 1628016 5747192 1628120 5747304 1628504 5747840 +1628120 5747304 1628168 5747408 1628504 5747840 1630488 5748256 +1630416 5748320 1630952 5748464 1630488 5748256 1628504 5747840 +1630416 5748320 1630488 5748256 1628504 5747840 1628776 5748096 +1630416 5748320 1630488 5748256 1628776 5748096 1628960 5748368 +1630488 5748256 1628120 5747304 1628504 5747840 1628776 5748096 +1630416 5748320 1630952 5748464 1630488 5748256 1628776 5748096 +1630488 5748256 1627800 5747032 1628016 5747192 1628120 5747304 +1630488 5748256 1630616 5748224 1629584 5726976 1627800 5747032 +1630488 5748256 1630616 5748224 1627800 5747032 1628016 5747192 +1630616 5748224 1629584 5726976 1627800 5747032 1628016 5747192 +1630488 5748256 1630952 5748464 1630616 5748224 1628016 5747192 +1630952 5748464 1630616 5748224 1630488 5748256 1630416 5748320 +1630952 5748464 1630616 5748224 1630416 5748320 1630336 5748456 +1630616 5748224 1628016 5747192 1630488 5748256 1630416 5748320 +1630616 5748224 1630952 5748464 1629584 5726976 1627800 5747032 +1629584 5726976 1627512 5746960 1627800 5747032 1630616 5748224 +1630952 5748464 1629584 5726976 1630616 5748224 1630416 5748320 +1629584 5726976 1630616 5748224 1630952 5748464 1629776 5726856 +1629584 5726976 1627800 5747032 1630616 5748224 1629776 5726856 +1630616 5748224 1630416 5748320 1630952 5748464 1629776 5726856 +1630488 5748256 1630616 5748224 1628016 5747192 1628120 5747304 +1630488 5748256 1630616 5748224 1628120 5747304 1628504 5747840 +1630616 5748224 1627800 5747032 1628016 5747192 1628120 5747304 +1630488 5748256 1630416 5748320 1630616 5748224 1628120 5747304 +1630952 5748464 1629872 5726768 1629776 5726856 1630616 5748224 +1630952 5748464 1630704 5748256 1630616 5748224 1630416 5748320 +1630952 5748464 1630704 5748256 1630416 5748320 1630336 5748456 +1630616 5748224 1630488 5748256 1630416 5748320 1630704 5748256 +1630704 5748256 1629776 5726856 1630616 5748224 1630488 5748256 +1630704 5748256 1630488 5748256 1630416 5748320 1630336 5748456 +1630952 5748464 1629776 5726856 1630704 5748256 1630336 5748456 +1630952 5748464 1630704 5748256 1630336 5748456 1630576 5748888 +1630704 5748256 1630416 5748320 1630336 5748456 1630576 5748888 +1630952 5748464 1630704 5748256 1630576 5748888 1631040 5748856 +1630952 5748464 1629776 5726856 1630704 5748256 1630576 5748888 +1630336 5748456 1630344 5748704 1630576 5748888 1630704 5748256 +1630336 5748456 1630344 5748704 1630704 5748256 1630416 5748320 +1630576 5748888 1630952 5748464 1630704 5748256 1630344 5748704 +1630616 5748224 1630704 5748256 1629776 5726856 1629584 5726976 +1630616 5748224 1630704 5748256 1629584 5726976 1627800 5747032 +1630616 5748224 1630488 5748256 1630704 5748256 1629584 5726976 +1630704 5748256 1630952 5748464 1629776 5726856 1629584 5726976 +1630336 5748456 1630288 5748608 1630344 5748704 1630704 5748256 +1629776 5726856 1630704 5748256 1630952 5748464 1629872 5726768 +1630952 5748464 1631072 5748576 1629872 5726768 1630704 5748256 +1629776 5726856 1629584 5726976 1630704 5748256 1629872 5726768 +1630704 5748256 1630576 5748888 1630952 5748464 1629872 5726768 +1630616 5748224 1630128 5746960 1627800 5747032 1628016 5747192 +1630616 5748224 1630128 5746960 1628016 5747192 1628120 5747304 +1630128 5746960 1627800 5747032 1628016 5747192 1628120 5747304 +1629584 5726976 1630128 5746960 1630616 5748224 1630704 5748256 +1627800 5747032 1630128 5746960 1629584 5726976 1627512 5746960 +1629584 5726976 1624528 5745760 1627512 5746960 1630128 5746960 +1627512 5746960 1627800 5747032 1630128 5746960 1624528 5745760 +1630128 5746960 1627512 5746960 1627800 5747032 1628016 5747192 +1629584 5726976 1624528 5745760 1630128 5746960 1630704 5748256 +1630616 5748224 1630704 5748256 1630128 5746960 1628120 5747304 +1629584 5726976 1630128 5746960 1630704 5748256 1629776 5726856 +1630128 5746960 1630616 5748224 1630704 5748256 1629776 5726856 +1629584 5726976 1624528 5745760 1630128 5746960 1629776 5726856 +1630704 5748256 1629872 5726768 1629776 5726856 1630128 5746960 +1630704 5748256 1629872 5726768 1630128 5746960 1630616 5748224 +1629776 5726856 1629584 5726976 1630128 5746960 1629872 5726768 +1624528 5745760 1624712 5745880 1627512 5746960 1630128 5746960 +1624528 5745760 1624712 5745880 1630128 5746960 1629584 5726976 +1627512 5746960 1627800 5747032 1630128 5746960 1624712 5745880 +1624712 5745880 1627416 5746952 1627512 5746960 1630128 5746960 +1630616 5748224 1630128 5746960 1628120 5747304 1630488 5748256 +1628120 5747304 1628504 5747840 1630488 5748256 1630128 5746960 +1630128 5746960 1628016 5747192 1628120 5747304 1628504 5747840 +1628120 5747304 1628168 5747408 1628504 5747840 1630128 5746960 +1628504 5747840 1630488 5748256 1630128 5746960 1628168 5747408 +1628120 5747304 1628168 5747408 1630128 5746960 1628016 5747192 +1628168 5747408 1628304 5747744 1628504 5747840 1630128 5746960 +1630616 5748224 1630704 5748256 1630128 5746960 1630488 5748256 +1628504 5747840 1628776 5748096 1630488 5748256 1630128 5746960 +1628504 5747840 1628776 5748096 1630128 5746960 1628168 5747408 +1628776 5748096 1630416 5748320 1630488 5748256 1630128 5746960 +1628776 5748096 1628960 5748368 1630416 5748320 1630128 5746960 +1628776 5748096 1628960 5748368 1630128 5746960 1628504 5747840 +1630416 5748320 1630488 5748256 1630128 5746960 1628960 5748368 +1628960 5748368 1630336 5748456 1630416 5748320 1630128 5746960 +1630488 5748256 1630616 5748224 1630128 5746960 1630416 5748320 +1630704 5748256 1630952 5748464 1629872 5726768 1630128 5746960 +1630952 5748464 1631072 5748576 1629872 5726768 1630128 5746960 +1631072 5748576 1629928 5726696 1629872 5726768 1630128 5746960 +1631072 5748576 1629928 5726696 1630128 5746960 1630952 5748464 +1630704 5748256 1630952 5748464 1630128 5746960 1630616 5748224 +1631072 5748576 1631096 5748624 1629928 5726696 1630128 5746960 +1629872 5726768 1629776 5726856 1630128 5746960 1629928 5726696 +1630952 5748464 1631072 5748576 1630128 5746960 1630704 5748256 +1629584 5726976 1623896 5745384 1624528 5745760 1630128 5746960 +1630128 5746960 1630192 5746944 1629928 5726696 1629872 5726768 +1631072 5748576 1630192 5746944 1630128 5746960 1630952 5748464 +1629928 5726696 1630192 5746944 1631072 5748576 1631096 5748624 +1630128 5746960 1630952 5748464 1630192 5746944 1629872 5726768 +1630192 5746944 1631072 5748576 1629928 5726696 1629872 5726768 +1630128 5746960 1630192 5746944 1629872 5726768 1629776 5726856 +1630192 5746944 1629928 5726696 1629872 5726768 1629776 5726856 +1630128 5746960 1630952 5748464 1630192 5746944 1629776 5726856 +1630128 5746960 1630192 5746944 1629776 5726856 1629584 5726976 +1630128 5746960 1630952 5748464 1630192 5746944 1629584 5726976 +1630128 5746960 1630192 5746944 1629584 5726976 1624528 5745760 +1630128 5746960 1630192 5746944 1624528 5745760 1624712 5745880 +1630128 5746960 1630952 5748464 1630192 5746944 1624712 5745880 +1630192 5746944 1629584 5726976 1624528 5745760 1624712 5745880 +1630192 5746944 1629872 5726768 1629776 5726856 1629584 5726976 +1630192 5746944 1629776 5726856 1629584 5726976 1624528 5745760 +1631072 5748576 1629928 5726696 1630192 5746944 1630952 5748464 +1630128 5746960 1630192 5746944 1624712 5745880 1627512 5746960 +1630192 5746944 1624528 5745760 1624712 5745880 1627512 5746960 +1630128 5746960 1630192 5746944 1627512 5746960 1627800 5747032 +1630128 5746960 1630952 5748464 1630192 5746944 1627512 5746960 +1624712 5745880 1627416 5746952 1627512 5746960 1630192 5746944 +1630128 5746960 1630704 5748256 1630952 5748464 1630192 5746944 +1630952 5748464 1631072 5748576 1630192 5746944 1630704 5748256 +1630128 5746960 1630616 5748224 1630704 5748256 1630192 5746944 +1630128 5746960 1630616 5748224 1630192 5746944 1627512 5746960 +1630128 5746960 1630488 5748256 1630616 5748224 1630192 5746944 +1630616 5748224 1630704 5748256 1630192 5746944 1630488 5748256 +1630128 5746960 1630488 5748256 1630192 5746944 1627512 5746960 +1630128 5746960 1630416 5748320 1630488 5748256 1630192 5746944 +1630704 5748256 1630952 5748464 1630192 5746944 1630616 5748224 +1629584 5726976 1623896 5745384 1624528 5745760 1630192 5746944 +1624528 5745760 1624712 5745880 1630192 5746944 1623896 5745384 +1629584 5726976 1623640 5745232 1623896 5745384 1630192 5746944 +1629584 5726976 1623896 5745384 1630192 5746944 1629776 5726856 +1623896 5745384 1624032 5745472 1624528 5745760 1630192 5746944 +1629928 5726696 1630280 5746960 1631072 5748576 1631096 5748624 +1630192 5746944 1630280 5746960 1629928 5726696 1629872 5726768 +1630192 5746944 1630280 5746960 1629872 5726768 1629776 5726856 +1630280 5746960 1629928 5726696 1629872 5726768 1629776 5726856 +1630192 5746944 1631072 5748576 1630280 5746960 1629776 5726856 +1630192 5746944 1630280 5746960 1629776 5726856 1629584 5726976 +1630280 5746960 1629872 5726768 1629776 5726856 1629584 5726976 +1630192 5746944 1631072 5748576 1630280 5746960 1629584 5726976 +1630192 5746944 1630280 5746960 1629584 5726976 1623896 5745384 +1631072 5748576 1630280 5746960 1630192 5746944 1630952 5748464 +1630192 5746944 1630704 5748256 1630952 5748464 1630280 5746960 +1630280 5746960 1629584 5726976 1630192 5746944 1630704 5748256 +1630952 5748464 1631072 5748576 1630280 5746960 1630704 5748256 +1630280 5746960 1631072 5748576 1629928 5726696 1629872 5726768 +1631072 5748576 1629928 5726696 1630280 5746960 1630952 5748464 +1630192 5746944 1630616 5748224 1630704 5748256 1630280 5746960 +1630704 5748256 1630952 5748464 1630280 5746960 1630616 5748224 +1630192 5746944 1630488 5748256 1630616 5748224 1630280 5746960 +1630192 5746944 1630488 5748256 1630280 5746960 1629584 5726976 +1630192 5746944 1630128 5746960 1630488 5748256 1630280 5746960 +1630488 5748256 1630616 5748224 1630280 5746960 1630128 5746960 +1630192 5746944 1630128 5746960 1630280 5746960 1629584 5726976 +1630128 5746960 1630416 5748320 1630488 5748256 1630280 5746960 +1630616 5748224 1630704 5748256 1630280 5746960 1630488 5748256 +1629928 5726696 1630328 5746984 1631072 5748576 1631096 5748624 +1630280 5746960 1630328 5746984 1629928 5726696 1629872 5726768 +1630280 5746960 1630328 5746984 1629872 5726768 1629776 5726856 +1630280 5746960 1630328 5746984 1629776 5726856 1629584 5726976 +1630328 5746984 1629872 5726768 1629776 5726856 1629584 5726976 +1630280 5746960 1630328 5746984 1629584 5726976 1630192 5746944 +1630328 5746984 1629928 5726696 1629872 5726768 1629776 5726856 +1630280 5746960 1631072 5748576 1630328 5746984 1629584 5726976 +1631072 5748576 1630328 5746984 1630280 5746960 1630952 5748464 +1631072 5748576 1629928 5726696 1630328 5746984 1630952 5748464 +1630280 5746960 1630704 5748256 1630952 5748464 1630328 5746984 +1630280 5746960 1630616 5748224 1630704 5748256 1630328 5746984 +1630704 5748256 1630952 5748464 1630328 5746984 1630616 5748224 +1630328 5746984 1629584 5726976 1630280 5746960 1630616 5748224 +1630952 5748464 1631072 5748576 1630328 5746984 1630704 5748256 +1630328 5746984 1631072 5748576 1629928 5726696 1629872 5726768 +1630280 5746960 1630488 5748256 1630616 5748224 1630328 5746984 +1630616 5748224 1630704 5748256 1630328 5746984 1630488 5748256 +1630280 5746960 1630128 5746960 1630488 5748256 1630328 5746984 +1630280 5746960 1630192 5746944 1630128 5746960 1630328 5746984 +1630280 5746960 1630128 5746960 1630328 5746984 1629584 5726976 +1630128 5746960 1630416 5748320 1630488 5748256 1630328 5746984 +1630488 5748256 1630616 5748224 1630328 5746984 1630128 5746960 +1629928 5726696 1630368 5747016 1631072 5748576 1631096 5748624 +1629928 5726696 1630368 5747016 1631096 5748624 1629944 5726624 +1631072 5748576 1630368 5747016 1630328 5746984 1630952 5748464 +1630368 5747016 1629928 5726696 1630328 5746984 1630952 5748464 +1629928 5726696 1630328 5746984 1630368 5747016 1631096 5748624 +1630368 5747016 1630952 5748464 1631072 5748576 1631096 5748624 +1630328 5746984 1630704 5748256 1630952 5748464 1630368 5747016 +1630328 5746984 1630704 5748256 1630368 5747016 1629928 5726696 +1630952 5748464 1631072 5748576 1630368 5747016 1630704 5748256 +1630328 5746984 1630616 5748224 1630704 5748256 1630368 5747016 +1630328 5746984 1630488 5748256 1630616 5748224 1630368 5747016 +1630328 5746984 1630488 5748256 1630368 5747016 1629928 5726696 +1630616 5748224 1630704 5748256 1630368 5747016 1630488 5748256 +1630704 5748256 1630952 5748464 1630368 5747016 1630616 5748224 +1630328 5746984 1630368 5747016 1629928 5726696 1629872 5726768 +1630328 5746984 1630488 5748256 1630368 5747016 1629872 5726768 +1630368 5747016 1631096 5748624 1629928 5726696 1629872 5726768 +1630328 5746984 1630368 5747016 1629872 5726768 1629776 5726856 +1630328 5746984 1630368 5747016 1629776 5726856 1629584 5726976 +1630328 5746984 1630488 5748256 1630368 5747016 1629776 5726856 +1630368 5747016 1629928 5726696 1629872 5726768 1629776 5726856 +1630328 5746984 1630128 5746960 1630488 5748256 1630368 5747016 +1630488 5748256 1630616 5748224 1630368 5747016 1630128 5746960 +1630328 5746984 1630280 5746960 1630128 5746960 1630368 5747016 +1630328 5746984 1630128 5746960 1630368 5747016 1629776 5726856 +1630128 5746960 1630416 5748320 1630488 5748256 1630368 5747016 +1629928 5726696 1630416 5747064 1631096 5748624 1629944 5726624 +1631096 5748624 1630416 5747064 1630368 5747016 1631072 5748576 +1631096 5748624 1629928 5726696 1630416 5747064 1631072 5748576 +1630368 5747016 1630416 5747064 1629928 5726696 1629872 5726768 +1630416 5747064 1631096 5748624 1629928 5726696 1629872 5726768 +1630416 5747064 1629872 5726768 1630368 5747016 1631072 5748576 +1630368 5747016 1630952 5748464 1631072 5748576 1630416 5747064 +1631072 5748576 1631096 5748624 1630416 5747064 1630952 5748464 +1630368 5747016 1630704 5748256 1630952 5748464 1630416 5747064 +1630368 5747016 1630704 5748256 1630416 5747064 1629872 5726768 +1630952 5748464 1631072 5748576 1630416 5747064 1630704 5748256 +1630368 5747016 1630616 5748224 1630704 5748256 1630416 5747064 +1630704 5748256 1630952 5748464 1630416 5747064 1630616 5748224 +1630368 5747016 1630616 5748224 1630416 5747064 1629872 5726768 +1630368 5747016 1630488 5748256 1630616 5748224 1630416 5747064 +1630368 5747016 1630128 5746960 1630488 5748256 1630416 5747064 +1630368 5747016 1630128 5746960 1630416 5747064 1629872 5726768 +1630488 5748256 1630616 5748224 1630416 5747064 1630128 5746960 +1630616 5748224 1630704 5748256 1630416 5747064 1630488 5748256 +1630368 5747016 1630416 5747064 1629872 5726768 1629776 5726856 +1630128 5746960 1630416 5748320 1630488 5748256 1630416 5747064 +1630368 5747016 1630328 5746984 1630128 5746960 1630416 5747064 +1629928 5726696 1630456 5747104 1631096 5748624 1629944 5726624 +1630416 5747064 1630456 5747104 1629928 5726696 1629872 5726768 +1630416 5747064 1631096 5748624 1630456 5747104 1629872 5726768 +1631096 5748624 1630456 5747104 1630416 5747064 1631072 5748576 +1630456 5747104 1629872 5726768 1630416 5747064 1631072 5748576 +1630456 5747104 1631096 5748624 1629928 5726696 1629872 5726768 +1630416 5747064 1630952 5748464 1631072 5748576 1630456 5747104 +1630416 5747064 1630952 5748464 1630456 5747104 1629872 5726768 +1631072 5748576 1631096 5748624 1630456 5747104 1630952 5748464 +1630416 5747064 1630456 5747104 1629872 5726768 1630368 5747016 +1630416 5747064 1630704 5748256 1630952 5748464 1630456 5747104 +1630416 5747064 1630704 5748256 1630456 5747104 1629872 5726768 +1630952 5748464 1631072 5748576 1630456 5747104 1630704 5748256 +1630416 5747064 1630616 5748224 1630704 5748256 1630456 5747104 +1630416 5747064 1630616 5748224 1630456 5747104 1629872 5726768 +1630704 5748256 1630952 5748464 1630456 5747104 1630616 5748224 +1630416 5747064 1630488 5748256 1630616 5748224 1630456 5747104 +1630416 5747064 1630488 5748256 1630456 5747104 1629872 5726768 +1630616 5748224 1630704 5748256 1630456 5747104 1630488 5748256 +1630416 5747064 1630128 5746960 1630488 5748256 1630456 5747104 +1630416 5747064 1630368 5747016 1630128 5746960 1630456 5747104 +1630416 5747064 1630128 5746960 1630456 5747104 1629872 5726768 +1630488 5748256 1630616 5748224 1630456 5747104 1630128 5746960 +1630128 5746960 1630416 5748320 1630488 5748256 1630456 5747104 +1631096 5748624 1629928 5726696 1630456 5747104 1631072 5748576 +1629928 5726696 1630496 5747152 1631096 5748624 1629944 5726624 +1630456 5747104 1630496 5747152 1629928 5726696 1629872 5726768 +1631096 5748624 1630496 5747152 1630456 5747104 1631072 5748576 +1630456 5747104 1630952 5748464 1631072 5748576 1630496 5747152 +1630496 5747152 1629928 5726696 1630456 5747104 1630952 5748464 +1630456 5747104 1630704 5748256 1630952 5748464 1630496 5747152 +1630952 5748464 1631072 5748576 1630496 5747152 1630704 5748256 +1630456 5747104 1630704 5748256 1630496 5747152 1629928 5726696 +1630456 5747104 1630616 5748224 1630704 5748256 1630496 5747152 +1630456 5747104 1630616 5748224 1630496 5747152 1629928 5726696 +1630704 5748256 1630952 5748464 1630496 5747152 1630616 5748224 +1630456 5747104 1630488 5748256 1630616 5748224 1630496 5747152 +1630456 5747104 1630488 5748256 1630496 5747152 1629928 5726696 +1630616 5748224 1630704 5748256 1630496 5747152 1630488 5748256 +1630456 5747104 1630128 5746960 1630488 5748256 1630496 5747152 +1630456 5747104 1630128 5746960 1630496 5747152 1629928 5726696 +1630488 5748256 1630616 5748224 1630496 5747152 1630128 5746960 +1630456 5747104 1630416 5747064 1630128 5746960 1630496 5747152 +1630128 5746960 1630416 5748320 1630488 5748256 1630496 5747152 +1631072 5748576 1631096 5748624 1630496 5747152 1630952 5748464 +1631096 5748624 1629928 5726696 1630496 5747152 1631072 5748576 +1629928 5726696 1630544 5747200 1631096 5748624 1629944 5726624 +1630496 5747152 1630544 5747200 1629928 5726696 1630456 5747104 +1629928 5726696 1629872 5726768 1630456 5747104 1630544 5747200 +1629872 5726768 1630416 5747064 1630456 5747104 1630544 5747200 +1630456 5747104 1630496 5747152 1630544 5747200 1629872 5726768 +1630496 5747152 1631096 5748624 1630544 5747200 1630456 5747104 +1631096 5748624 1630544 5747200 1630496 5747152 1631072 5748576 +1631096 5748624 1629928 5726696 1630544 5747200 1631072 5748576 +1630496 5747152 1630952 5748464 1631072 5748576 1630544 5747200 +1630496 5747152 1630704 5748256 1630952 5748464 1630544 5747200 +1630496 5747152 1630616 5748224 1630704 5748256 1630544 5747200 +1630704 5748256 1630952 5748464 1630544 5747200 1630616 5748224 +1630496 5747152 1630488 5748256 1630616 5748224 1630544 5747200 +1630616 5748224 1630704 5748256 1630544 5747200 1630488 5748256 +1630496 5747152 1630128 5746960 1630488 5748256 1630544 5747200 +1630952 5748464 1631072 5748576 1630544 5747200 1630704 5748256 +1630544 5747200 1630456 5747104 1630496 5747152 1630488 5748256 +1631072 5748576 1631096 5748624 1630544 5747200 1630952 5748464 +1630544 5747200 1631096 5748624 1629928 5726696 1629872 5726768 +1629928 5726696 1630592 5747248 1631096 5748624 1629944 5726624 +1631096 5748624 1630592 5747248 1630544 5747200 1631072 5748576 +1630592 5747248 1629928 5726696 1630544 5747200 1631072 5748576 +1631096 5748624 1629928 5726696 1630592 5747248 1631072 5748576 +1630544 5747200 1630952 5748464 1631072 5748576 1630592 5747248 +1630544 5747200 1630952 5748464 1630592 5747248 1629928 5726696 +1631072 5748576 1631096 5748624 1630592 5747248 1630952 5748464 +1630544 5747200 1630704 5748256 1630952 5748464 1630592 5747248 +1630544 5747200 1630616 5748224 1630704 5748256 1630592 5747248 +1630544 5747200 1630488 5748256 1630616 5748224 1630592 5747248 +1630616 5748224 1630704 5748256 1630592 5747248 1630488 5748256 +1630544 5747200 1630488 5748256 1630592 5747248 1629928 5726696 +1630544 5747200 1630496 5747152 1630488 5748256 1630592 5747248 +1630704 5748256 1630952 5748464 1630592 5747248 1630616 5748224 +1630952 5748464 1631072 5748576 1630592 5747248 1630704 5748256 +1630544 5747200 1630592 5747248 1629928 5726696 1629872 5726768 +1630544 5747200 1630592 5747248 1629872 5726768 1630456 5747104 +1629872 5726768 1630416 5747064 1630456 5747104 1630592 5747248 +1630544 5747200 1630488 5748256 1630592 5747248 1630456 5747104 +1630592 5747248 1631096 5748624 1629928 5726696 1629872 5726768 +1630544 5747200 1630592 5747248 1630456 5747104 1630496 5747152 +1630592 5747248 1629928 5726696 1629872 5726768 1630456 5747104 +1630592 5747248 1630592 5747288 1630616 5748224 1630704 5748256 +1630592 5747288 1630488 5748256 1630616 5748224 1630704 5748256 +1630488 5748256 1630592 5747288 1630592 5747248 1630544 5747200 +1630488 5748256 1630616 5748224 1630592 5747288 1630544 5747200 +1630592 5747248 1630544 5747200 1630592 5747288 1630704 5748256 +1630488 5748256 1630592 5747288 1630544 5747200 1630496 5747152 +1630488 5748256 1630616 5748224 1630592 5747288 1630496 5747152 +1630592 5747288 1630592 5747248 1630544 5747200 1630496 5747152 +1630488 5748256 1630592 5747288 1630496 5747152 1630128 5746960 +1630488 5748256 1630616 5748224 1630592 5747288 1630128 5746960 +1630592 5747288 1630544 5747200 1630496 5747152 1630128 5746960 +1630496 5747152 1630456 5747104 1630128 5746960 1630592 5747288 +1630488 5748256 1630592 5747288 1630128 5746960 1630416 5748320 +1630592 5747248 1630592 5747288 1630704 5748256 1630952 5748464 +1630592 5747288 1630616 5748224 1630704 5748256 1630952 5748464 +1630592 5747248 1630544 5747200 1630592 5747288 1630952 5748464 +1630592 5747248 1630592 5747288 1630952 5748464 1631072 5748576 +1630592 5747248 1630592 5747288 1631072 5748576 1631096 5748624 +1630592 5747248 1630544 5747200 1630592 5747288 1631072 5748576 +1630592 5747288 1630704 5748256 1630952 5748464 1631072 5748576 +1630592 5747288 1630536 5747376 1630488 5748256 1630616 5748224 +1630592 5747288 1630536 5747376 1630616 5748224 1630704 5748256 +1630592 5747288 1630128 5746960 1630536 5747376 1630704 5748256 +1630536 5747376 1630488 5748256 1630616 5748224 1630704 5748256 +1630536 5747376 1630128 5746960 1630488 5748256 1630616 5748224 +1630592 5747288 1630536 5747376 1630704 5748256 1630952 5748464 +1630128 5746960 1630536 5747376 1630592 5747288 1630496 5747152 +1630128 5746960 1630488 5748256 1630536 5747376 1630496 5747152 +1630536 5747376 1630704 5748256 1630592 5747288 1630496 5747152 +1630592 5747288 1630544 5747200 1630496 5747152 1630536 5747376 +1630592 5747288 1630544 5747200 1630536 5747376 1630704 5748256 +1630592 5747288 1630592 5747248 1630544 5747200 1630536 5747376 +1630496 5747152 1630128 5746960 1630536 5747376 1630544 5747200 +1630128 5746960 1630536 5747376 1630496 5747152 1630456 5747104 +1630128 5746960 1630488 5748256 1630536 5747376 1630456 5747104 +1630536 5747376 1630544 5747200 1630496 5747152 1630456 5747104 +1630128 5746960 1630536 5747376 1630456 5747104 1630416 5747064 +1630128 5746960 1630488 5748256 1630536 5747376 1630416 5747064 +1630128 5746960 1630536 5747376 1630416 5747064 1630368 5747016 +1630536 5747376 1630496 5747152 1630456 5747104 1630416 5747064 +1630488 5748256 1630536 5747376 1630128 5746960 1630416 5748320 +1630536 5747376 1630416 5747064 1630128 5746960 1630416 5748320 +1630488 5748256 1630616 5748224 1630536 5747376 1630416 5748320 +1630128 5746960 1628960 5748368 1630416 5748320 1630536 5747376 +1630128 5746960 1630480 5747424 1630536 5747376 1630416 5747064 +1630128 5746960 1630416 5748320 1630480 5747424 1630416 5747064 +1630480 5747424 1630416 5748320 1630536 5747376 1630416 5747064 +1630128 5746960 1630480 5747424 1630416 5747064 1630368 5747016 +1630416 5748320 1630480 5747424 1630128 5746960 1628960 5748368 +1630416 5748320 1630536 5747376 1630480 5747424 1628960 5748368 +1630480 5747424 1630416 5747064 1630128 5746960 1628960 5748368 +1630128 5746960 1628776 5748096 1628960 5748368 1630480 5747424 +1630128 5746960 1628776 5748096 1630480 5747424 1630416 5747064 +1630128 5746960 1628504 5747840 1628776 5748096 1630480 5747424 +1628960 5748368 1630416 5748320 1630480 5747424 1628776 5748096 +1630416 5748320 1630480 5747424 1628960 5748368 1630336 5748456 +1630536 5747376 1630456 5747104 1630416 5747064 1630480 5747424 +1630416 5747064 1630128 5746960 1630480 5747424 1630456 5747104 +1630536 5747376 1630456 5747104 1630480 5747424 1630416 5748320 +1630536 5747376 1630496 5747152 1630456 5747104 1630480 5747424 +1630536 5747376 1630496 5747152 1630480 5747424 1630416 5748320 +1630536 5747376 1630544 5747200 1630496 5747152 1630480 5747424 +1630456 5747104 1630416 5747064 1630480 5747424 1630496 5747152 +1630536 5747376 1630480 5747424 1630416 5748320 1630488 5748256 +1630480 5747424 1628960 5748368 1630416 5748320 1630488 5748256 +1630536 5747376 1630480 5747424 1630488 5748256 1630616 5748224 +1630536 5747376 1630480 5747424 1630616 5748224 1630704 5748256 +1630536 5747376 1630480 5747424 1630704 5748256 1630592 5747288 +1630480 5747424 1630488 5748256 1630616 5748224 1630704 5748256 +1630536 5747376 1630496 5747152 1630480 5747424 1630704 5748256 +1630480 5747424 1630416 5748320 1630488 5748256 1630616 5748224 +1630128 5746960 1630408 5747440 1630480 5747424 1630416 5747064 +1630480 5747424 1630456 5747104 1630416 5747064 1630408 5747440 +1630408 5747440 1628776 5748096 1630480 5747424 1630456 5747104 +1630416 5747064 1630128 5746960 1630408 5747440 1630456 5747104 +1630128 5746960 1630408 5747440 1630416 5747064 1630368 5747016 +1630480 5747424 1630408 5747440 1628776 5748096 1628960 5748368 +1630480 5747424 1630456 5747104 1630408 5747440 1628960 5748368 +1630408 5747440 1630128 5746960 1628776 5748096 1628960 5748368 +1628776 5748096 1630408 5747440 1630128 5746960 1628504 5747840 +1630128 5746960 1628776 5748096 1630408 5747440 1630416 5747064 +1630480 5747424 1630408 5747440 1628960 5748368 1630416 5748320 +1630480 5747424 1630408 5747440 1630416 5748320 1630488 5748256 +1630480 5747424 1630456 5747104 1630408 5747440 1630488 5748256 +1630408 5747440 1628776 5748096 1628960 5748368 1630416 5748320 +1630408 5747440 1628960 5748368 1630416 5748320 1630488 5748256 +1628960 5748368 1630336 5748456 1630416 5748320 1630408 5747440 +1630480 5747424 1630496 5747152 1630456 5747104 1630408 5747440 +1630456 5747104 1630416 5747064 1630408 5747440 1630496 5747152 +1630480 5747424 1630496 5747152 1630408 5747440 1630488 5748256 +1630480 5747424 1630536 5747376 1630496 5747152 1630408 5747440 +1630480 5747424 1630536 5747376 1630408 5747440 1630488 5748256 +1630536 5747376 1630544 5747200 1630496 5747152 1630408 5747440 +1630496 5747152 1630456 5747104 1630408 5747440 1630536 5747376 +1630480 5747424 1630408 5747440 1630488 5748256 1630616 5748224 +1630408 5747440 1630416 5748320 1630488 5748256 1630616 5748224 +1630480 5747424 1630536 5747376 1630408 5747440 1630616 5748224 +1630480 5747424 1630408 5747440 1630616 5748224 1630704 5748256 +1630408 5747440 1630368 5747432 1628776 5748096 1628960 5748368 +1630408 5747440 1630368 5747432 1628960 5748368 1630416 5748320 +1630368 5747432 1628776 5748096 1628960 5748368 1630416 5748320 +1628776 5748096 1630368 5747432 1630128 5746960 1628504 5747840 +1630408 5747440 1630128 5746960 1630368 5747432 1630416 5748320 +1630128 5746960 1630368 5747432 1630408 5747440 1630416 5747064 +1630408 5747440 1630456 5747104 1630416 5747064 1630368 5747432 +1630408 5747440 1630496 5747152 1630456 5747104 1630368 5747432 +1630456 5747104 1630416 5747064 1630368 5747432 1630496 5747152 +1630128 5746960 1630368 5747432 1630416 5747064 1630368 5747016 +1630368 5747432 1630416 5748320 1630408 5747440 1630496 5747152 +1630416 5747064 1630368 5747016 1630368 5747432 1630456 5747104 +1630368 5747432 1630128 5746960 1628776 5748096 1628960 5748368 +1630128 5746960 1628776 5748096 1630368 5747432 1630368 5747016 +1630408 5747440 1630368 5747432 1630416 5748320 1630488 5748256 +1630408 5747440 1630368 5747432 1630488 5748256 1630616 5748224 +1630368 5747432 1628960 5748368 1630416 5748320 1630488 5748256 +1630408 5747440 1630496 5747152 1630368 5747432 1630488 5748256 +1628960 5748368 1630336 5748456 1630416 5748320 1630368 5747432 +1630408 5747440 1630536 5747376 1630496 5747152 1630368 5747432 +1630496 5747152 1630456 5747104 1630368 5747432 1630536 5747376 +1630408 5747440 1630536 5747376 1630368 5747432 1630488 5748256 +1630536 5747376 1630544 5747200 1630496 5747152 1630368 5747432 +1630408 5747440 1630480 5747424 1630536 5747376 1630368 5747432 +1630408 5747440 1630480 5747424 1630368 5747432 1630488 5748256 +1630536 5747376 1630496 5747152 1630368 5747432 1630480 5747424 +1630128 5746960 1630368 5747432 1630368 5747016 1630328 5746984 +1628776 5748096 1630328 5747400 1630128 5746960 1628504 5747840 +1630368 5747432 1630328 5747400 1628776 5748096 1628960 5748368 +1630368 5747432 1630328 5747400 1628960 5748368 1630416 5748320 +1630368 5747432 1630328 5747400 1630416 5748320 1630488 5748256 +1630328 5747400 1628776 5748096 1628960 5748368 1630416 5748320 +1630368 5747432 1630128 5746960 1630328 5747400 1630416 5748320 +1630128 5746960 1630328 5747400 1630368 5747432 1630368 5747016 +1630368 5747432 1630416 5747064 1630368 5747016 1630328 5747400 +1630368 5747432 1630456 5747104 1630416 5747064 1630328 5747400 +1630368 5747432 1630496 5747152 1630456 5747104 1630328 5747400 +1630368 5747432 1630536 5747376 1630496 5747152 1630328 5747400 +1630496 5747152 1630456 5747104 1630328 5747400 1630536 5747376 +1630416 5747064 1630368 5747016 1630328 5747400 1630456 5747104 +1630456 5747104 1630416 5747064 1630328 5747400 1630496 5747152 +1630328 5747400 1630416 5748320 1630368 5747432 1630536 5747376 +1630368 5747016 1630128 5746960 1630328 5747400 1630416 5747064 +1628960 5748368 1630336 5748456 1630416 5748320 1630328 5747400 +1630536 5747376 1630544 5747200 1630496 5747152 1630328 5747400 +1630536 5747376 1630544 5747200 1630328 5747400 1630368 5747432 +1630496 5747152 1630456 5747104 1630328 5747400 1630544 5747200 +1630536 5747376 1630592 5747288 1630544 5747200 1630328 5747400 +1630368 5747432 1630480 5747424 1630536 5747376 1630328 5747400 +1630536 5747376 1630544 5747200 1630328 5747400 1630480 5747424 +1630368 5747432 1630480 5747424 1630328 5747400 1630416 5748320 +1630368 5747432 1630408 5747440 1630480 5747424 1630328 5747400 +1630368 5747432 1630408 5747440 1630328 5747400 1630416 5748320 +1630480 5747424 1630536 5747376 1630328 5747400 1630408 5747440 +1630328 5747400 1630128 5746960 1628776 5748096 1628960 5748368 +1630128 5746960 1628776 5748096 1630328 5747400 1630368 5747016 +1630128 5746960 1630328 5747400 1630368 5747016 1630328 5746984 +1628776 5748096 1630264 5747304 1630128 5746960 1628504 5747840 +1630328 5747400 1630264 5747304 1628776 5748096 1628960 5748368 +1630328 5747400 1630264 5747304 1628960 5748368 1630416 5748320 +1630328 5747400 1630128 5746960 1630264 5747304 1628960 5748368 +1630128 5746960 1630264 5747304 1630328 5747400 1630368 5747016 +1630128 5746960 1628776 5748096 1630264 5747304 1630368 5747016 +1630328 5747400 1630416 5747064 1630368 5747016 1630264 5747304 +1630328 5747400 1630456 5747104 1630416 5747064 1630264 5747304 +1630328 5747400 1630496 5747152 1630456 5747104 1630264 5747304 +1630328 5747400 1630544 5747200 1630496 5747152 1630264 5747304 +1630456 5747104 1630416 5747064 1630264 5747304 1630496 5747152 +1630416 5747064 1630368 5747016 1630264 5747304 1630456 5747104 +1630264 5747304 1628960 5748368 1630328 5747400 1630496 5747152 +1630368 5747016 1630128 5746960 1630264 5747304 1630416 5747064 +1630264 5747304 1630128 5746960 1628776 5748096 1628960 5748368 +1630128 5746960 1630264 5747304 1630368 5747016 1630328 5746984 +1630128 5746960 1628776 5748096 1630264 5747304 1630328 5746984 +1630128 5746960 1630264 5747304 1630328 5746984 1630280 5746960 +1630128 5746960 1628776 5748096 1630264 5747304 1630280 5746960 +1630128 5746960 1630264 5747304 1630280 5746960 1630192 5746944 +1630264 5747304 1630416 5747064 1630368 5747016 1630328 5746984 +1630264 5747304 1630368 5747016 1630328 5746984 1630280 5746960 +1630128 5746960 1630216 5747200 1630264 5747304 1630280 5746960 +1630128 5746960 1628776 5748096 1630216 5747200 1630280 5746960 +1630264 5747304 1630328 5746984 1630280 5746960 1630216 5747200 +1630280 5746960 1630128 5746960 1630216 5747200 1630328 5746984 +1630128 5746960 1630216 5747200 1630280 5746960 1630192 5746944 +1630216 5747200 1630328 5746984 1630280 5746960 1630192 5746944 +1630128 5746960 1628776 5748096 1630216 5747200 1630192 5746944 +1628776 5748096 1630216 5747200 1630128 5746960 1628504 5747840 +1630264 5747304 1630216 5747200 1628776 5748096 1628960 5748368 +1630216 5747200 1628776 5748096 1630264 5747304 1630328 5746984 +1630264 5747304 1630368 5747016 1630328 5746984 1630216 5747200 +1630328 5746984 1630280 5746960 1630216 5747200 1630368 5747016 +1630264 5747304 1630416 5747064 1630368 5747016 1630216 5747200 +1630264 5747304 1630456 5747104 1630416 5747064 1630216 5747200 +1630264 5747304 1630496 5747152 1630456 5747104 1630216 5747200 +1630416 5747064 1630368 5747016 1630216 5747200 1630456 5747104 +1630264 5747304 1630456 5747104 1630216 5747200 1628776 5748096 +1630368 5747016 1630328 5746984 1630216 5747200 1630416 5747064 +1630216 5747200 1630184 5747136 1628776 5748096 1630264 5747304 +1630128 5746960 1630184 5747136 1630216 5747200 1630192 5746944 +1630128 5746960 1628776 5748096 1630184 5747136 1630192 5746944 +1630184 5747136 1628776 5748096 1630216 5747200 1630192 5746944 +1630216 5747200 1630280 5746960 1630192 5746944 1630184 5747136 +1630216 5747200 1630328 5746984 1630280 5746960 1630184 5747136 +1630216 5747200 1630328 5746984 1630184 5747136 1628776 5748096 +1630192 5746944 1630128 5746960 1630184 5747136 1630280 5746960 +1630216 5747200 1630368 5747016 1630328 5746984 1630184 5747136 +1630328 5746984 1630280 5746960 1630184 5747136 1630368 5747016 +1630216 5747200 1630368 5747016 1630184 5747136 1628776 5748096 +1630280 5746960 1630192 5746944 1630184 5747136 1630328 5746984 +1628776 5748096 1630184 5747136 1630128 5746960 1628504 5747840 +1630216 5747200 1630416 5747064 1630368 5747016 1630184 5747136 +1630128 5746960 1630128 5747016 1630184 5747136 1630192 5746944 +1630128 5747016 1628776 5748096 1630184 5747136 1630192 5746944 +1630128 5746960 1628776 5748096 1630128 5747016 1630192 5746944 +1630184 5747136 1630280 5746960 1630192 5746944 1630128 5747016 +1630184 5747136 1630280 5746960 1630128 5747016 1628776 5748096 +1630192 5746944 1630128 5746960 1630128 5747016 1630280 5746960 +1630184 5747136 1630128 5747016 1628776 5748096 1630216 5747200 +1630184 5747136 1630328 5746984 1630280 5746960 1630128 5747016 +1628776 5748096 1630128 5747016 1630128 5746960 1628504 5747840 +1630128 5746960 1628168 5747408 1628504 5747840 1630128 5747016 +1628776 5748096 1630184 5747136 1630128 5747016 1628504 5747840 +1630128 5747016 1630192 5746944 1630128 5746960 1628168 5747408 +1628168 5747408 1628304 5747744 1628504 5747840 1630128 5747016 +1630128 5746960 1628120 5747304 1628168 5747408 1630128 5747016 +1628504 5747840 1628776 5748096 1630128 5747016 1628168 5747408 +1623896 5745384 1627776 5745184 1629584 5726976 1623640 5745232 +1623896 5745384 1630192 5746944 1627776 5745184 1623640 5745232 +1627776 5745184 1630192 5746944 1629584 5726976 1623640 5745232 +1629584 5726976 1623224 5745048 1623640 5745232 1627776 5745184 +1629584 5726976 1623224 5745048 1627776 5745184 1630192 5746944 +1629584 5726976 1623128 5745016 1623224 5745048 1627776 5745184 +1629584 5726976 1623128 5745016 1627776 5745184 1630192 5746944 +1629584 5726976 1615632 5735512 1623128 5745016 1627776 5745184 +1623224 5745048 1623528 5745200 1623640 5745232 1627776 5745184 +1623224 5745048 1623640 5745232 1627776 5745184 1623128 5745016 +1623896 5745384 1627776 5745184 1623640 5745232 1623792 5745368 +1623640 5745232 1623896 5745384 1627776 5745184 1623224 5745048 +1629584 5726976 1627776 5745184 1630192 5746944 1630280 5746960 +1629584 5726976 1623128 5745016 1627776 5745184 1630280 5746960 +1629584 5726976 1627776 5745184 1630280 5746960 1630328 5746984 +1629584 5726976 1623128 5745016 1627776 5745184 1630328 5746984 +1629584 5726976 1627776 5745184 1630328 5746984 1629776 5726856 +1627776 5745184 1623896 5745384 1630192 5746944 1630280 5746960 +1627776 5745184 1630192 5746944 1630280 5746960 1630328 5746984 +1630192 5746944 1627776 5745184 1623896 5745384 1624528 5745760 +1627776 5745184 1623640 5745232 1623896 5745384 1624528 5745760 +1630192 5746944 1627776 5745184 1624528 5745760 1624712 5745880 +1630192 5746944 1627776 5745184 1624712 5745880 1627512 5746960 +1627776 5745184 1624528 5745760 1624712 5745880 1627512 5746960 +1630192 5746944 1630280 5746960 1627776 5745184 1627512 5746960 +1624712 5745880 1627416 5746952 1627512 5746960 1627776 5745184 +1627512 5746960 1630192 5746944 1627776 5745184 1627416 5746952 +1624712 5745880 1627416 5746952 1627776 5745184 1624528 5745760 +1630192 5746944 1627776 5745184 1627512 5746960 1630128 5746960 +1627776 5745184 1627416 5746952 1627512 5746960 1630128 5746960 +1627512 5746960 1627800 5747032 1630128 5746960 1627776 5745184 +1627512 5746960 1627800 5747032 1627776 5745184 1627416 5746952 +1627800 5747032 1628016 5747192 1630128 5746960 1627776 5745184 +1628016 5747192 1628120 5747304 1630128 5746960 1627776 5745184 +1627800 5747032 1628016 5747192 1627776 5745184 1627512 5746960 +1630192 5746944 1630280 5746960 1627776 5745184 1630128 5746960 +1630128 5746960 1630192 5746944 1627776 5745184 1628016 5747192 +1623896 5745384 1624032 5745472 1624528 5745760 1627776 5745184 +1623896 5745384 1624032 5745472 1627776 5745184 1623640 5745232 +1624032 5745472 1624224 5745656 1624528 5745760 1627776 5745184 +1627776 5745184 1624032 5745472 1624528 5745760 1624712 5745880 +1624712 5745880 1624976 5746096 1627416 5746952 1627776 5745184 +1624712 5745880 1624976 5746096 1627776 5745184 1624528 5745760 +1627416 5746952 1627512 5746960 1627776 5745184 1624976 5746096 +1624976 5746096 1625232 5746360 1627416 5746952 1627776 5745184 +1627416 5746952 1627512 5746960 1627776 5745184 1625232 5746360 +1625232 5746360 1627312 5746976 1627416 5746952 1627776 5745184 +1625232 5746360 1625376 5746584 1627312 5746976 1627776 5745184 +1627416 5746952 1627512 5746960 1627776 5745184 1627312 5746976 +1625232 5746360 1625376 5746584 1627776 5745184 1624976 5746096 +1627312 5746976 1627416 5746952 1627776 5745184 1625376 5746584 +1624976 5746096 1625232 5746360 1627776 5745184 1624712 5745880 +1625376 5746584 1627136 5747072 1627312 5746976 1627776 5745184 +1625376 5746584 1627136 5747072 1627776 5745184 1625232 5746360 +1627312 5746976 1627416 5746952 1627776 5745184 1627136 5747072 +1625376 5746584 1626744 5747272 1627136 5747072 1627776 5745184 +1627776 5745184 1627840 5745184 1629584 5726976 1623128 5745016 +1629584 5726976 1627840 5745184 1630328 5746984 1629776 5726856 +1630328 5746984 1627840 5745184 1627776 5745184 1630280 5746960 +1627840 5745184 1629584 5726976 1627776 5745184 1630280 5746960 +1630328 5746984 1629584 5726976 1627840 5745184 1630280 5746960 +1627776 5745184 1630192 5746944 1630280 5746960 1627840 5745184 +1627776 5745184 1630192 5746944 1627840 5745184 1629584 5726976 +1630280 5746960 1630328 5746984 1627840 5745184 1630192 5746944 +1627776 5745184 1630128 5746960 1630192 5746944 1627840 5745184 +1627776 5745184 1630128 5746960 1627840 5745184 1629584 5726976 +1630192 5746944 1630280 5746960 1627840 5745184 1630128 5746960 +1627776 5745184 1628016 5747192 1630128 5746960 1627840 5745184 +1628016 5747192 1628120 5747304 1630128 5746960 1627840 5745184 +1627776 5745184 1628016 5747192 1627840 5745184 1629584 5726976 +1627776 5745184 1627800 5747032 1628016 5747192 1627840 5745184 +1627776 5745184 1627800 5747032 1627840 5745184 1629584 5726976 +1627776 5745184 1627512 5746960 1627800 5747032 1627840 5745184 +1627776 5745184 1627512 5746960 1627840 5745184 1629584 5726976 +1627776 5745184 1627416 5746952 1627512 5746960 1627840 5745184 +1627800 5747032 1628016 5747192 1627840 5745184 1627512 5746960 +1630128 5746960 1630192 5746944 1627840 5745184 1628016 5747192 +1628016 5747192 1630128 5746960 1627840 5745184 1627800 5747032 +1630128 5746960 1627880 5745216 1628016 5747192 1628120 5747304 +1627840 5745184 1627880 5745216 1630128 5746960 1630192 5746944 +1627840 5745184 1628016 5747192 1627880 5745216 1630192 5746944 +1627880 5745216 1628016 5747192 1630128 5746960 1630192 5746944 +1627840 5745184 1627880 5745216 1630192 5746944 1630280 5746960 +1627840 5745184 1628016 5747192 1627880 5745216 1630280 5746960 +1627840 5745184 1627880 5745216 1630280 5746960 1630328 5746984 +1627840 5745184 1628016 5747192 1627880 5745216 1630328 5746984 +1627880 5745216 1630128 5746960 1630192 5746944 1630280 5746960 +1627840 5745184 1627880 5745216 1630328 5746984 1629584 5726976 +1627840 5745184 1628016 5747192 1627880 5745216 1629584 5726976 +1630328 5746984 1629776 5726856 1629584 5726976 1627880 5745216 +1627840 5745184 1627880 5745216 1629584 5726976 1627776 5745184 +1630328 5746984 1630368 5747016 1629776 5726856 1627880 5745216 +1627880 5745216 1630280 5746960 1630328 5746984 1629776 5726856 +1629584 5726976 1627840 5745184 1627880 5745216 1629776 5726856 +1627880 5745216 1630192 5746944 1630280 5746960 1630328 5746984 +1628016 5747192 1627880 5745216 1627840 5745184 1627800 5747032 +1627880 5745216 1629584 5726976 1627840 5745184 1627800 5747032 +1628016 5747192 1630128 5746960 1627880 5745216 1627800 5747032 +1627840 5745184 1627512 5746960 1627800 5747032 1627880 5745216 +1627840 5745184 1627512 5746960 1627880 5745216 1629584 5726976 +1627840 5745184 1627776 5745184 1627512 5746960 1627880 5745216 +1627840 5745184 1627776 5745184 1627880 5745216 1629584 5726976 +1627776 5745184 1627416 5746952 1627512 5746960 1627880 5745216 +1627512 5746960 1627800 5747032 1627880 5745216 1627776 5745184 +1627800 5747032 1628016 5747192 1627880 5745216 1627512 5746960 +1630128 5746960 1627936 5745296 1628016 5747192 1628120 5747304 +1627880 5745216 1627936 5745296 1630128 5746960 1630192 5746944 +1627880 5745216 1628016 5747192 1627936 5745296 1630192 5746944 +1628016 5747192 1627936 5745296 1627880 5745216 1627800 5747032 +1628016 5747192 1630128 5746960 1627936 5745296 1627800 5747032 +1627936 5745296 1630192 5746944 1627880 5745216 1627800 5747032 +1627936 5745296 1628016 5747192 1630128 5746960 1630192 5746944 +1627880 5745216 1627936 5745296 1630192 5746944 1630280 5746960 +1627936 5745296 1630128 5746960 1630192 5746944 1630280 5746960 +1627880 5745216 1627800 5747032 1627936 5745296 1630280 5746960 +1627880 5745216 1627936 5745296 1630280 5746960 1630328 5746984 +1627880 5745216 1627512 5746960 1627800 5747032 1627936 5745296 +1627880 5745216 1627512 5746960 1627936 5745296 1630280 5746960 +1627800 5747032 1628016 5747192 1627936 5745296 1627512 5746960 +1627880 5745216 1627776 5745184 1627512 5746960 1627936 5745296 +1627776 5745184 1627416 5746952 1627512 5746960 1627936 5745296 +1627880 5745216 1627840 5745184 1627776 5745184 1627936 5745296 +1627880 5745216 1627776 5745184 1627936 5745296 1630280 5746960 +1627776 5745184 1627416 5746952 1627936 5745296 1627880 5745216 +1627776 5745184 1627312 5746976 1627416 5746952 1627936 5745296 +1627512 5746960 1627800 5747032 1627936 5745296 1627416 5746952 +1628016 5747192 1627984 5745352 1627936 5745296 1627800 5747032 +1627984 5745352 1630128 5746960 1627936 5745296 1627800 5747032 +1628016 5747192 1630128 5746960 1627984 5745352 1627800 5747032 +1630128 5746960 1627984 5745352 1628016 5747192 1628120 5747304 +1627936 5745296 1627512 5746960 1627800 5747032 1627984 5745352 +1627936 5745296 1627512 5746960 1627984 5745352 1630128 5746960 +1627800 5747032 1628016 5747192 1627984 5745352 1627512 5746960 +1627936 5745296 1627984 5745352 1630128 5746960 1630192 5746944 +1627936 5745296 1627512 5746960 1627984 5745352 1630192 5746944 +1627984 5745352 1628016 5747192 1630128 5746960 1630192 5746944 +1627936 5745296 1627984 5745352 1630192 5746944 1630280 5746960 +1627936 5745296 1627512 5746960 1627984 5745352 1630280 5746960 +1627984 5745352 1630128 5746960 1630192 5746944 1630280 5746960 +1627936 5745296 1627984 5745352 1630280 5746960 1627880 5745216 +1627936 5745296 1627512 5746960 1627984 5745352 1627880 5745216 +1627984 5745352 1630192 5746944 1630280 5746960 1627880 5745216 +1630280 5746960 1630328 5746984 1627880 5745216 1627984 5745352 +1627936 5745296 1627416 5746952 1627512 5746960 1627984 5745352 +1627936 5745296 1627416 5746952 1627984 5745352 1627880 5745216 +1627936 5745296 1627776 5745184 1627416 5746952 1627984 5745352 +1627936 5745296 1627776 5745184 1627984 5745352 1627880 5745216 +1627512 5746960 1627800 5747032 1627984 5745352 1627416 5746952 +1627936 5745296 1627880 5745216 1627776 5745184 1627984 5745352 +1627776 5745184 1627312 5746976 1627416 5746952 1627984 5745352 +1627416 5746952 1627512 5746960 1627984 5745352 1627776 5745184 +1627984 5745352 1628032 5745400 1630128 5746960 1630192 5746944 +1627984 5745352 1628016 5747192 1628032 5745400 1630192 5746944 +1628016 5747192 1628032 5745400 1627984 5745352 1627800 5747032 +1627984 5745352 1627512 5746960 1627800 5747032 1628032 5745400 +1628032 5745400 1630192 5746944 1627984 5745352 1627512 5746960 +1627800 5747032 1628016 5747192 1628032 5745400 1627512 5746960 +1630128 5746960 1628032 5745400 1628016 5747192 1628120 5747304 +1627984 5745352 1627416 5746952 1627512 5746960 1628032 5745400 +1627512 5746960 1627800 5747032 1628032 5745400 1627416 5746952 +1627984 5745352 1627416 5746952 1628032 5745400 1630192 5746944 +1627984 5745352 1628032 5745400 1630192 5746944 1630280 5746960 +1628032 5745400 1630128 5746960 1630192 5746944 1630280 5746960 +1627984 5745352 1627416 5746952 1628032 5745400 1630280 5746960 +1627984 5745352 1628032 5745400 1630280 5746960 1627880 5745216 +1627984 5745352 1627416 5746952 1628032 5745400 1627880 5745216 +1628032 5745400 1630192 5746944 1630280 5746960 1627880 5745216 +1628032 5745400 1628016 5747192 1630128 5746960 1630192 5746944 +1628016 5747192 1630128 5746960 1628032 5745400 1627800 5747032 +1627984 5745352 1628032 5745400 1627880 5745216 1627936 5745296 +1630280 5746960 1630328 5746984 1627880 5745216 1628032 5745400 +1627984 5745352 1627776 5745184 1627416 5746952 1628032 5745400 +1630128 5746960 1628064 5745440 1628016 5747192 1628120 5747304 +1628032 5745400 1628064 5745440 1630128 5746960 1630192 5746944 +1628032 5745400 1628064 5745440 1630192 5746944 1630280 5746960 +1628032 5745400 1628064 5745440 1630280 5746960 1627880 5745216 +1628064 5745440 1630128 5746960 1630192 5746944 1630280 5746960 +1628032 5745400 1628016 5747192 1628064 5745440 1630280 5746960 +1628016 5747192 1628064 5745440 1628032 5745400 1627800 5747032 +1628032 5745400 1627512 5746960 1627800 5747032 1628064 5745440 +1628032 5745400 1627416 5746952 1627512 5746960 1628064 5745440 +1627512 5746960 1627800 5747032 1628064 5745440 1627416 5746952 +1628016 5747192 1630128 5746960 1628064 5745440 1627800 5747032 +1628032 5745400 1627984 5745352 1627416 5746952 1628064 5745440 +1627416 5746952 1627512 5746960 1628064 5745440 1627984 5745352 +1628064 5745440 1630280 5746960 1628032 5745400 1627984 5745352 +1627800 5747032 1628016 5747192 1628064 5745440 1627512 5746960 +1628064 5745440 1628016 5747192 1630128 5746960 1630192 5746944 +1627984 5745352 1627776 5745184 1627416 5746952 1628064 5745440 +1630128 5746960 1628088 5745496 1628016 5747192 1628120 5747304 +1628016 5747192 1628088 5745496 1628064 5745440 1627800 5747032 +1628016 5747192 1630128 5746960 1628088 5745496 1627800 5747032 +1628064 5745440 1627512 5746960 1627800 5747032 1628088 5745496 +1628064 5745440 1627416 5746952 1627512 5746960 1628088 5745496 +1628064 5745440 1627984 5745352 1627416 5746952 1628088 5745496 +1627416 5746952 1627512 5746960 1628088 5745496 1627984 5745352 +1627800 5747032 1628016 5747192 1628088 5745496 1627512 5746960 +1628064 5745440 1628032 5745400 1627984 5745352 1628088 5745496 +1627984 5745352 1627416 5746952 1628088 5745496 1628032 5745400 +1627512 5746960 1627800 5747032 1628088 5745496 1627416 5746952 +1628064 5745440 1628088 5745496 1630128 5746960 1630192 5746944 +1628088 5745496 1628016 5747192 1630128 5746960 1630192 5746944 +1628064 5745440 1628088 5745496 1630192 5746944 1630280 5746960 +1628088 5745496 1630192 5746944 1628064 5745440 1628032 5745400 +1627984 5745352 1627776 5745184 1627416 5746952 1628088 5745496 +1627984 5745352 1627776 5745184 1628088 5745496 1628032 5745400 +1627416 5746952 1627512 5746960 1628088 5745496 1627776 5745184 +1627984 5745352 1627936 5745296 1627776 5745184 1628088 5745496 +1627776 5745184 1627312 5746976 1627416 5746952 1628088 5745496 +1630128 5746960 1628104 5745544 1628016 5747192 1628120 5747304 +1628088 5745496 1628104 5745544 1630128 5746960 1630192 5746944 +1628088 5745496 1628016 5747192 1628104 5745544 1630192 5746944 +1628016 5747192 1628104 5745544 1628088 5745496 1627800 5747032 +1628088 5745496 1627512 5746960 1627800 5747032 1628104 5745544 +1628104 5745544 1630192 5746944 1628088 5745496 1627512 5746960 +1627800 5747032 1628016 5747192 1628104 5745544 1627512 5746960 +1630128 5746960 1630192 5746944 1628104 5745544 1628120 5747304 +1630128 5746960 1628104 5745544 1628120 5747304 1628168 5747408 +1628088 5745496 1627416 5746952 1627512 5746960 1628104 5745544 +1628088 5745496 1627776 5745184 1627416 5746952 1628104 5745544 +1627512 5746960 1627800 5747032 1628104 5745544 1627416 5746952 +1628088 5745496 1627776 5745184 1628104 5745544 1630192 5746944 +1627416 5746952 1627512 5746960 1628104 5745544 1627776 5745184 +1628088 5745496 1628104 5745544 1630192 5746944 1628064 5745440 +1628104 5745544 1627800 5747032 1628016 5747192 1628120 5747304 +1627776 5745184 1627312 5746976 1627416 5746952 1628104 5745544 +1628088 5745496 1627984 5745352 1627776 5745184 1628104 5745544 +1628088 5745496 1628032 5745400 1627984 5745352 1628104 5745544 +1627776 5745184 1627416 5746952 1628104 5745544 1627984 5745352 +1628088 5745496 1627984 5745352 1628104 5745544 1630192 5746944 +1627984 5745352 1627936 5745296 1627776 5745184 1628104 5745544 +1627512 5746960 1628096 5745568 1628104 5745544 1627416 5746952 +1628104 5745544 1628096 5745568 1627800 5747032 1628016 5747192 +1628104 5745544 1627776 5745184 1627416 5746952 1628096 5745568 +1628104 5745544 1627984 5745352 1627776 5745184 1628096 5745568 +1627416 5746952 1627512 5746960 1628096 5745568 1627776 5745184 +1627984 5745352 1627936 5745296 1627776 5745184 1628096 5745568 +1627776 5745184 1627416 5746952 1628096 5745568 1627984 5745352 +1628096 5745568 1628016 5747192 1628104 5745544 1627984 5745352 +1628104 5745544 1628096 5745568 1628016 5747192 1628120 5747304 +1628104 5745544 1628096 5745568 1628120 5747304 1630128 5746960 +1628096 5745568 1627800 5747032 1628016 5747192 1628120 5747304 +1628104 5745544 1628096 5745568 1630128 5746960 1630192 5746944 +1628120 5747304 1628168 5747408 1630128 5746960 1628096 5745568 +1628104 5745544 1627984 5745352 1628096 5745568 1630128 5746960 +1628096 5745568 1628016 5747192 1628120 5747304 1630128 5746960 +1628096 5745568 1627512 5746960 1627800 5747032 1628016 5747192 +1627512 5746960 1627800 5747032 1628096 5745568 1627416 5746952 +1627776 5745184 1627312 5746976 1627416 5746952 1628096 5745568 +1628104 5745544 1628088 5745496 1627984 5745352 1628096 5745568 +1628088 5745496 1628032 5745400 1627984 5745352 1628096 5745568 +1627984 5745352 1627776 5745184 1628096 5745568 1628032 5745400 +1628088 5745496 1628064 5745440 1628032 5745400 1628096 5745568 +1628104 5745544 1628088 5745496 1628096 5745568 1630128 5746960 +1628088 5745496 1628032 5745400 1628096 5745568 1628104 5745544 +1628096 5745568 1628080 5745592 1627416 5746952 1627512 5746960 +1627776 5745184 1628080 5745592 1628096 5745568 1627984 5745352 +1628096 5745568 1628032 5745400 1627984 5745352 1628080 5745592 +1628096 5745568 1628088 5745496 1628032 5745400 1628080 5745592 +1628032 5745400 1627984 5745352 1628080 5745592 1628088 5745496 +1627776 5745184 1628080 5745592 1627984 5745352 1627936 5745296 +1628088 5745496 1628064 5745440 1628032 5745400 1628080 5745592 +1628088 5745496 1628064 5745440 1628080 5745592 1628096 5745568 +1628032 5745400 1627984 5745352 1628080 5745592 1628064 5745440 +1627776 5745184 1628080 5745592 1627936 5745296 1627880 5745216 +1627984 5745352 1627936 5745296 1628080 5745592 1628032 5745400 +1628096 5745568 1628088 5745496 1628080 5745592 1627512 5746960 +1628096 5745568 1628080 5745592 1627512 5746960 1627800 5747032 +1628080 5745592 1627416 5746952 1627512 5746960 1627800 5747032 +1628096 5745568 1628080 5745592 1627800 5747032 1628016 5747192 +1628096 5745568 1628080 5745592 1628016 5747192 1628120 5747304 +1628096 5745568 1628080 5745592 1628120 5747304 1630128 5746960 +1628096 5745568 1628080 5745592 1630128 5746960 1628104 5745544 +1628080 5745592 1628016 5747192 1628120 5747304 1630128 5746960 +1628120 5747304 1628168 5747408 1630128 5746960 1628080 5745592 +1628080 5745592 1627800 5747032 1628016 5747192 1628120 5747304 +1628096 5745568 1628088 5745496 1628080 5745592 1630128 5746960 +1628080 5745592 1627512 5746960 1627800 5747032 1628016 5747192 +1627416 5746952 1628080 5745592 1627776 5745184 1627312 5746976 +1628080 5745592 1627776 5745184 1627416 5746952 1627512 5746960 +1627776 5745184 1627416 5746952 1628080 5745592 1627936 5745296 +1628096 5745568 1628104 5745544 1628088 5745496 1628080 5745592 +1627416 5746952 1627992 5745592 1627776 5745184 1627312 5746976 +1627992 5745592 1628080 5745592 1627776 5745184 1627312 5746976 +1628080 5745592 1627992 5745592 1627416 5746952 1627512 5746960 +1628080 5745592 1627992 5745592 1627512 5746960 1627800 5747032 +1628080 5745592 1627992 5745592 1627800 5747032 1628016 5747192 +1627992 5745592 1627416 5746952 1627512 5746960 1627800 5747032 +1628080 5745592 1627776 5745184 1627992 5745592 1627800 5747032 +1627776 5745184 1627992 5745592 1628080 5745592 1627936 5745296 +1628080 5745592 1627984 5745352 1627936 5745296 1627992 5745592 +1627776 5745184 1627992 5745592 1627936 5745296 1627880 5745216 +1628080 5745592 1628032 5745400 1627984 5745352 1627992 5745592 +1628080 5745592 1628064 5745440 1628032 5745400 1627992 5745592 +1627984 5745352 1627936 5745296 1627992 5745592 1628032 5745400 +1628080 5745592 1628088 5745496 1628064 5745440 1627992 5745592 +1628080 5745592 1628096 5745568 1628088 5745496 1627992 5745592 +1628064 5745440 1628032 5745400 1627992 5745592 1628088 5745496 +1628088 5745496 1628064 5745440 1627992 5745592 1628096 5745568 +1628032 5745400 1627984 5745352 1627992 5745592 1628064 5745440 +1627776 5745184 1627312 5746976 1627992 5745592 1627936 5745296 +1627992 5745592 1627800 5747032 1628080 5745592 1628096 5745568 +1627936 5745296 1627776 5745184 1627992 5745592 1627984 5745352 +1627416 5746952 1627512 5746960 1627992 5745592 1627312 5746976 +1627776 5745184 1627136 5747072 1627312 5746976 1627992 5745592 +1628096 5745568 1628104 5745544 1628088 5745496 1627992 5745592 +1627992 5745592 1627912 5745568 1627312 5746976 1627416 5746952 +1627776 5745184 1627912 5745568 1627992 5745592 1627936 5745296 +1627776 5745184 1627912 5745568 1627936 5745296 1627880 5745216 +1627912 5745568 1627776 5745184 1627312 5746976 1627416 5746952 +1627776 5745184 1627312 5746976 1627912 5745568 1627936 5745296 +1627992 5745592 1627984 5745352 1627936 5745296 1627912 5745568 +1627992 5745592 1628032 5745400 1627984 5745352 1627912 5745568 +1627992 5745592 1628064 5745440 1628032 5745400 1627912 5745568 +1627992 5745592 1628088 5745496 1628064 5745440 1627912 5745568 +1628032 5745400 1627984 5745352 1627912 5745568 1628064 5745440 +1627936 5745296 1627776 5745184 1627912 5745568 1627984 5745352 +1627984 5745352 1627936 5745296 1627912 5745568 1628032 5745400 +1627992 5745592 1627912 5745568 1627416 5746952 1627512 5746960 +1627912 5745568 1627312 5746976 1627416 5746952 1627512 5746960 +1627992 5745592 1627912 5745568 1627512 5746960 1627800 5747032 +1627992 5745592 1628064 5745440 1627912 5745568 1627512 5746960 +1627312 5746976 1627912 5745568 1627776 5745184 1627136 5747072 +1627312 5746976 1627416 5746952 1627912 5745568 1627136 5747072 +1627912 5745568 1627936 5745296 1627776 5745184 1627136 5747072 +1627776 5745184 1625376 5746584 1627136 5747072 1627912 5745568 +1627776 5745184 1627880 5745552 1627912 5745568 1627936 5745296 +1627776 5745184 1627880 5745552 1627936 5745296 1627880 5745216 +1627776 5745184 1627136 5747072 1627880 5745552 1627936 5745296 +1627912 5745568 1627984 5745352 1627936 5745296 1627880 5745552 +1627880 5745552 1627136 5747072 1627912 5745568 1627984 5745352 +1627936 5745296 1627776 5745184 1627880 5745552 1627984 5745352 +1627912 5745568 1628032 5745400 1627984 5745352 1627880 5745552 +1627912 5745568 1628064 5745440 1628032 5745400 1627880 5745552 +1627984 5745352 1627936 5745296 1627880 5745552 1628032 5745400 +1627912 5745568 1628032 5745400 1627880 5745552 1627136 5747072 +1627912 5745568 1627880 5745552 1627136 5747072 1627312 5746976 +1627912 5745568 1627880 5745552 1627312 5746976 1627416 5746952 +1627912 5745568 1627880 5745552 1627416 5746952 1627512 5746960 +1627880 5745552 1627312 5746976 1627416 5746952 1627512 5746960 +1627912 5745568 1628032 5745400 1627880 5745552 1627512 5746960 +1627880 5745552 1627776 5745184 1627136 5747072 1627312 5746976 +1627912 5745568 1627880 5745552 1627512 5746960 1627992 5745592 +1627880 5745552 1627136 5747072 1627312 5746976 1627416 5746952 +1627136 5747072 1627880 5745552 1627776 5745184 1625376 5746584 +1627776 5745184 1625232 5746360 1625376 5746584 1627880 5745552 +1627880 5745552 1627936 5745296 1627776 5745184 1625376 5746584 +1627136 5747072 1627312 5746976 1627880 5745552 1625376 5746584 +1627136 5747072 1627880 5745552 1625376 5746584 1626744 5747272 +1625376 5746584 1627792 5745496 1627776 5745184 1625232 5746360 +1627776 5745184 1627792 5745496 1627880 5745552 1627936 5745296 +1627776 5745184 1627792 5745496 1627936 5745296 1627880 5745216 +1627776 5745184 1627792 5745496 1627880 5745216 1627840 5745184 +1627792 5745496 1625376 5746584 1627880 5745552 1627936 5745296 +1627792 5745496 1627880 5745552 1627936 5745296 1627880 5745216 +1625376 5746584 1627880 5745552 1627792 5745496 1625232 5746360 +1627792 5745496 1627880 5745216 1627776 5745184 1625232 5746360 +1627776 5745184 1624976 5746096 1625232 5746360 1627792 5745496 +1627880 5745552 1627984 5745352 1627936 5745296 1627792 5745496 +1627880 5745552 1627984 5745352 1627792 5745496 1625376 5746584 +1627936 5745296 1627880 5745216 1627792 5745496 1627984 5745352 +1627880 5745552 1628032 5745400 1627984 5745352 1627792 5745496 +1627880 5745552 1627792 5745496 1625376 5746584 1627136 5747072 +1627880 5745552 1627984 5745352 1627792 5745496 1627136 5747072 +1627792 5745496 1625232 5746360 1625376 5746584 1627136 5747072 +1627880 5745552 1627792 5745496 1627136 5747072 1627312 5746976 +1627880 5745552 1627984 5745352 1627792 5745496 1627312 5746976 +1627880 5745552 1627792 5745496 1627312 5746976 1627416 5746952 +1627880 5745552 1627984 5745352 1627792 5745496 1627416 5746952 +1627880 5745552 1627792 5745496 1627416 5746952 1627512 5746960 +1627792 5745496 1627136 5747072 1627312 5746976 1627416 5746952 +1625376 5746584 1626744 5747272 1627136 5747072 1627792 5745496 +1627792 5745496 1625376 5746584 1627136 5747072 1627312 5746976 +1627792 5745496 1627752 5745472 1625232 5746360 1625376 5746584 +1627792 5745496 1627752 5745472 1625376 5746584 1627136 5747072 +1627752 5745472 1625232 5746360 1625376 5746584 1627136 5747072 +1627792 5745496 1627776 5745184 1627752 5745472 1627136 5747072 +1627776 5745184 1627752 5745472 1627792 5745496 1627880 5745216 +1627776 5745184 1627752 5745472 1627880 5745216 1627840 5745184 +1627792 5745496 1627936 5745296 1627880 5745216 1627752 5745472 +1627792 5745496 1627984 5745352 1627936 5745296 1627752 5745472 +1627752 5745472 1627136 5747072 1627792 5745496 1627936 5745296 +1627880 5745216 1627776 5745184 1627752 5745472 1627936 5745296 +1627752 5745472 1627776 5745184 1625232 5746360 1625376 5746584 +1627776 5745184 1625232 5746360 1627752 5745472 1627880 5745216 +1625232 5746360 1627752 5745472 1627776 5745184 1624976 5746096 +1625376 5746584 1626744 5747272 1627136 5747072 1627752 5745472 +1627792 5745496 1627752 5745472 1627136 5747072 1627312 5746976 +1627752 5745472 1625376 5746584 1627136 5747072 1627312 5746976 +1627792 5745496 1627936 5745296 1627752 5745472 1627312 5746976 +1627792 5745496 1627752 5745472 1627312 5746976 1627416 5746952 +1627792 5745496 1627936 5745296 1627752 5745472 1627416 5746952 +1627792 5745496 1627752 5745472 1627416 5746952 1627880 5745552 +1627752 5745472 1627136 5747072 1627312 5746976 1627416 5746952 +1627752 5745472 1627720 5745432 1625232 5746360 1625376 5746584 +1627752 5745472 1627720 5745432 1625376 5746584 1627136 5747072 +1627752 5745472 1627720 5745432 1627136 5747072 1627312 5746976 +1627720 5745432 1625376 5746584 1627136 5747072 1627312 5746976 +1627720 5745432 1625232 5746360 1625376 5746584 1627136 5747072 +1627752 5745472 1627776 5745184 1627720 5745432 1627312 5746976 +1627776 5745184 1627720 5745432 1627752 5745472 1627880 5745216 +1627776 5745184 1627720 5745432 1627880 5745216 1627840 5745184 +1627752 5745472 1627936 5745296 1627880 5745216 1627720 5745432 +1627752 5745472 1627792 5745496 1627936 5745296 1627720 5745432 +1627720 5745432 1627312 5746976 1627752 5745472 1627936 5745296 +1627880 5745216 1627776 5745184 1627720 5745432 1627936 5745296 +1627720 5745432 1627776 5745184 1625232 5746360 1625376 5746584 +1625232 5746360 1627720 5745432 1627776 5745184 1624976 5746096 +1625232 5746360 1625376 5746584 1627720 5745432 1624976 5746096 +1627776 5745184 1624976 5746096 1627720 5745432 1627880 5745216 +1625376 5746584 1626744 5747272 1627136 5747072 1627720 5745432 +1627776 5745184 1624712 5745880 1624976 5746096 1627720 5745432 +1627752 5745472 1627720 5745432 1627312 5746976 1627416 5746952 +1627720 5745432 1627696 5745392 1624976 5746096 1625232 5746360 +1627720 5745432 1627696 5745392 1625232 5746360 1625376 5746584 +1627720 5745432 1627696 5745392 1625376 5746584 1627136 5747072 +1627720 5745432 1627696 5745392 1627136 5747072 1627312 5746976 +1627720 5745432 1627696 5745392 1627312 5746976 1627752 5745472 +1627696 5745392 1625376 5746584 1627136 5747072 1627312 5746976 +1627696 5745392 1625232 5746360 1625376 5746584 1627136 5747072 +1627720 5745432 1627776 5745184 1627696 5745392 1627312 5746976 +1627696 5745392 1624976 5746096 1625232 5746360 1625376 5746584 +1627776 5745184 1627696 5745392 1627720 5745432 1627880 5745216 +1627776 5745184 1627696 5745392 1627880 5745216 1627840 5745184 +1627720 5745432 1627936 5745296 1627880 5745216 1627696 5745392 +1627720 5745432 1627752 5745472 1627936 5745296 1627696 5745392 +1627696 5745392 1627312 5746976 1627720 5745432 1627936 5745296 +1627880 5745216 1627776 5745184 1627696 5745392 1627936 5745296 +1627696 5745392 1627776 5745184 1624976 5746096 1625232 5746360 +1627776 5745184 1624976 5746096 1627696 5745392 1627880 5745216 +1625376 5746584 1626744 5747272 1627136 5747072 1627696 5745392 +1624976 5746096 1627696 5745392 1627776 5745184 1624712 5745880 +1627696 5745392 1627688 5745368 1624976 5746096 1625232 5746360 +1627696 5745392 1627688 5745368 1625232 5746360 1625376 5746584 +1627696 5745392 1627688 5745368 1625376 5746584 1627136 5747072 +1627688 5745368 1624976 5746096 1625232 5746360 1625376 5746584 +1627696 5745392 1627776 5745184 1627688 5745368 1625376 5746584 +1627776 5745184 1627688 5745368 1627696 5745392 1627880 5745216 +1627776 5745184 1627688 5745368 1627880 5745216 1627840 5745184 +1627776 5745184 1624976 5746096 1627688 5745368 1627880 5745216 +1627696 5745392 1627936 5745296 1627880 5745216 1627688 5745368 +1627696 5745392 1627720 5745432 1627936 5745296 1627688 5745368 +1627688 5745368 1625376 5746584 1627696 5745392 1627936 5745296 +1627880 5745216 1627776 5745184 1627688 5745368 1627936 5745296 +1627688 5745368 1627776 5745184 1624976 5746096 1625232 5746360 +1624976 5746096 1627688 5745368 1627776 5745184 1624712 5745880 +1627776 5745184 1624528 5745760 1624712 5745880 1627688 5745368 +1627688 5745368 1627880 5745216 1627776 5745184 1624712 5745880 +1624976 5746096 1625232 5746360 1627688 5745368 1624712 5745880 +1624712 5745880 1627680 5745320 1627776 5745184 1624528 5745760 +1627776 5745184 1627680 5745320 1627688 5745368 1627880 5745216 +1627776 5745184 1627680 5745320 1627880 5745216 1627840 5745184 +1627680 5745320 1624712 5745880 1627688 5745368 1627880 5745216 +1627776 5745184 1624712 5745880 1627680 5745320 1627880 5745216 +1627688 5745368 1627936 5745296 1627880 5745216 1627680 5745320 +1627688 5745368 1627680 5745320 1624712 5745880 1624976 5746096 +1627688 5745368 1627880 5745216 1627680 5745320 1624976 5746096 +1627680 5745320 1627776 5745184 1624712 5745880 1624976 5746096 +1627688 5745368 1627680 5745320 1624976 5746096 1625232 5746360 +1627688 5745368 1627880 5745216 1627680 5745320 1625232 5746360 +1627688 5745368 1627680 5745320 1625232 5746360 1625376 5746584 +1627680 5745320 1624712 5745880 1624976 5746096 1625232 5746360 +1624712 5745880 1627696 5745264 1627776 5745184 1624528 5745760 +1627696 5745264 1627680 5745320 1627776 5745184 1624528 5745760 +1624712 5745880 1627680 5745320 1627696 5745264 1624528 5745760 +1627680 5745320 1627696 5745264 1624712 5745880 1624976 5746096 +1627696 5745264 1624528 5745760 1624712 5745880 1624976 5746096 +1627680 5745320 1627776 5745184 1627696 5745264 1624976 5746096 +1627776 5745184 1627696 5745264 1627680 5745320 1627880 5745216 +1627776 5745184 1624528 5745760 1627696 5745264 1627880 5745216 +1627776 5745184 1627696 5745264 1627880 5745216 1627840 5745184 +1627680 5745320 1627688 5745368 1627880 5745216 1627696 5745264 +1627696 5745264 1624976 5746096 1627680 5745320 1627688 5745368 +1627880 5745216 1627776 5745184 1627696 5745264 1627688 5745368 +1627688 5745368 1627936 5745296 1627880 5745216 1627696 5745264 +1627688 5745368 1627936 5745296 1627696 5745264 1627680 5745320 +1627880 5745216 1627776 5745184 1627696 5745264 1627936 5745296 +1627688 5745368 1627696 5745392 1627936 5745296 1627696 5745264 +1627776 5745184 1624032 5745472 1624528 5745760 1627696 5745264 +1627680 5745320 1627696 5745264 1624976 5746096 1625232 5746360 +1627776 5745184 1627728 5745216 1627696 5745264 1627880 5745216 +1627776 5745184 1624528 5745760 1627728 5745216 1627880 5745216 +1627776 5745184 1627728 5745216 1627880 5745216 1627840 5745184 +1627728 5745216 1624528 5745760 1627696 5745264 1627880 5745216 +1627696 5745264 1627728 5745216 1624528 5745760 1624712 5745880 +1627728 5745216 1627776 5745184 1624528 5745760 1624712 5745880 +1627696 5745264 1627728 5745216 1624712 5745880 1624976 5746096 +1627696 5745264 1627880 5745216 1627728 5745216 1624712 5745880 +1627696 5745264 1627936 5745296 1627880 5745216 1627728 5745216 +1624528 5745760 1627728 5745216 1627776 5745184 1624032 5745472 +1624528 5745760 1624712 5745880 1627728 5745216 1624032 5745472 +1627728 5745216 1627880 5745216 1627776 5745184 1624032 5745472 +1627776 5745184 1623896 5745384 1624032 5745472 1627728 5745216 +1627776 5745184 1623896 5745384 1627728 5745216 1627880 5745216 +1627776 5745184 1623640 5745232 1623896 5745384 1627728 5745216 +1627776 5745184 1623640 5745232 1627728 5745216 1627880 5745216 +1623640 5745232 1623792 5745368 1623896 5745384 1627728 5745216 +1627776 5745184 1623224 5745048 1623640 5745232 1627728 5745216 +1623896 5745384 1624032 5745472 1627728 5745216 1623640 5745232 +1624528 5745760 1627728 5745216 1624032 5745472 1624224 5745656 +1624032 5745472 1624528 5745760 1627728 5745216 1623896 5745384 +1627880 5745216 1628128 5742888 1629776 5726856 1629584 5726976 +1628128 5742888 1630328 5746984 1629776 5726856 1629584 5726976 +1629776 5726856 1628128 5742888 1630328 5746984 1630368 5747016 +1629776 5726856 1629584 5726976 1628128 5742888 1630368 5747016 +1628128 5742888 1627880 5745216 1630328 5746984 1630368 5747016 +1630328 5746984 1628128 5742888 1627880 5745216 1630280 5746960 +1630328 5746984 1630368 5747016 1628128 5742888 1630280 5746960 +1627880 5745216 1628128 5742888 1629584 5726976 1627840 5745184 +1628128 5742888 1629776 5726856 1629584 5726976 1627840 5745184 +1629584 5726976 1627776 5745184 1627840 5745184 1628128 5742888 +1629584 5726976 1623128 5745016 1627776 5745184 1628128 5742888 +1629584 5726976 1623128 5745016 1628128 5742888 1629776 5726856 +1629584 5726976 1615632 5735512 1623128 5745016 1628128 5742888 +1623128 5745016 1627776 5745184 1628128 5742888 1615632 5735512 +1629584 5726976 1629536 5726952 1615632 5735512 1628128 5742888 +1629536 5726952 1615632 5735416 1615632 5735512 1628128 5742888 +1629536 5726952 1615632 5735416 1628128 5742888 1629584 5726976 +1629584 5726976 1629536 5726952 1628128 5742888 1629776 5726856 +1615632 5735512 1623128 5745016 1628128 5742888 1615632 5735416 +1623128 5745016 1623224 5745048 1627776 5745184 1628128 5742888 +1623128 5745016 1623224 5745048 1628128 5742888 1615632 5735512 +1623224 5745048 1623640 5745232 1627776 5745184 1628128 5742888 +1623224 5745048 1623640 5745232 1628128 5742888 1623128 5745016 +1623224 5745048 1623528 5745200 1623640 5745232 1628128 5742888 +1623640 5745232 1627728 5745216 1627776 5745184 1628128 5742888 +1623640 5745232 1623896 5745384 1627728 5745216 1628128 5742888 +1623640 5745232 1623896 5745384 1628128 5742888 1623224 5745048 +1623640 5745232 1623792 5745368 1623896 5745384 1628128 5742888 +1627728 5745216 1627776 5745184 1628128 5742888 1623896 5745384 +1627840 5745184 1627880 5745216 1628128 5742888 1627776 5745184 +1629536 5726952 1629480 5726888 1615632 5735416 1628128 5742888 +1627880 5745216 1628032 5745400 1630280 5746960 1628128 5742888 +1627880 5745216 1627984 5745352 1628032 5745400 1628128 5742888 +1628032 5745400 1628064 5745440 1630280 5746960 1628128 5742888 +1628064 5745440 1630192 5746944 1630280 5746960 1628128 5742888 +1628064 5745440 1630192 5746944 1628128 5742888 1628032 5745400 +1628064 5745440 1628088 5745496 1630192 5746944 1628128 5742888 +1630280 5746960 1630328 5746984 1628128 5742888 1630192 5746944 +1628032 5745400 1628064 5745440 1628128 5742888 1627880 5745216 +1615632 5735512 1622528 5744936 1623128 5745016 1628128 5742888 +1623128 5745016 1623224 5745048 1628128 5742888 1622528 5744936 +1615632 5735512 1622528 5744936 1628128 5742888 1615632 5735416 +1622528 5744936 1622680 5744976 1623128 5745016 1628128 5742888 +1629776 5726856 1628128 5742888 1630368 5747016 1629872 5726768 +1629776 5726856 1629584 5726976 1628128 5742888 1629872 5726768 +1628128 5742888 1630328 5746984 1630368 5747016 1629872 5726768 +1630368 5747016 1630416 5747064 1629872 5726768 1628128 5742888 +1630368 5747016 1630416 5747064 1628128 5742888 1630328 5746984 +1630416 5747064 1630456 5747104 1629872 5726768 1628128 5742888 +1630456 5747104 1630592 5747248 1629872 5726768 1628128 5742888 +1630456 5747104 1630544 5747200 1630592 5747248 1628128 5742888 +1630456 5747104 1630592 5747248 1628128 5742888 1630416 5747064 +1629872 5726768 1629776 5726856 1628128 5742888 1630592 5747248 +1630416 5747064 1630456 5747104 1628128 5742888 1630368 5747016 +1627776 5745184 1627840 5745184 1628128 5742888 1627728 5745216 +1627880 5745216 1628032 5745400 1628128 5742888 1627840 5745184 +1615632 5735512 1622352 5744936 1622528 5744936 1628128 5742888 +1623896 5745384 1624032 5745472 1627728 5745216 1628128 5742888 +1623896 5745384 1624032 5745472 1628128 5742888 1623640 5745232 +1627728 5745216 1627776 5745184 1628128 5742888 1624032 5745472 +1624032 5745472 1624528 5745760 1627728 5745216 1628128 5742888 +1624528 5745760 1624712 5745880 1627728 5745216 1628128 5742888 +1627728 5745216 1627776 5745184 1628128 5742888 1624528 5745760 +1624032 5745472 1624528 5745760 1628128 5742888 1623896 5745384 +1624032 5745472 1624224 5745656 1624528 5745760 1628128 5742888 +1630592 5747248 1629928 5726696 1629872 5726768 1628128 5742888 +1630592 5747248 1629928 5726696 1628128 5742888 1630456 5747104 +1630592 5747248 1631096 5748624 1629928 5726696 1628128 5742888 +1629872 5726768 1629776 5726856 1628128 5742888 1629928 5726696 +1630592 5747248 1628168 5742888 1628128 5742888 1630456 5747104 +1630592 5747248 1629928 5726696 1628168 5742888 1630456 5747104 +1628168 5742888 1629928 5726696 1628128 5742888 1630456 5747104 +1630592 5747248 1628168 5742888 1630456 5747104 1630544 5747200 +1629928 5726696 1628168 5742888 1630592 5747248 1631096 5748624 +1628128 5742888 1630416 5747064 1630456 5747104 1628168 5742888 +1628128 5742888 1630416 5747064 1628168 5742888 1629928 5726696 +1630456 5747104 1630592 5747248 1628168 5742888 1630416 5747064 +1628128 5742888 1630368 5747016 1630416 5747064 1628168 5742888 +1628128 5742888 1630368 5747016 1628168 5742888 1629928 5726696 +1628128 5742888 1630328 5746984 1630368 5747016 1628168 5742888 +1628128 5742888 1630280 5746960 1630328 5746984 1628168 5742888 +1628128 5742888 1630280 5746960 1628168 5742888 1629928 5726696 +1630328 5746984 1630368 5747016 1628168 5742888 1630280 5746960 +1628128 5742888 1630192 5746944 1630280 5746960 1628168 5742888 +1628128 5742888 1628064 5745440 1630192 5746944 1628168 5742888 +1630280 5746960 1630328 5746984 1628168 5742888 1630192 5746944 +1628128 5742888 1628064 5745440 1628168 5742888 1629928 5726696 +1628128 5742888 1628032 5745400 1628064 5745440 1628168 5742888 +1628064 5745440 1630192 5746944 1628168 5742888 1628032 5745400 +1628128 5742888 1628032 5745400 1628168 5742888 1629928 5726696 +1628064 5745440 1628088 5745496 1630192 5746944 1628168 5742888 +1630192 5746944 1630280 5746960 1628168 5742888 1628064 5745440 +1628128 5742888 1627880 5745216 1628032 5745400 1628168 5742888 +1628128 5742888 1627880 5745216 1628168 5742888 1629928 5726696 +1627880 5745216 1627984 5745352 1628032 5745400 1628168 5742888 +1628032 5745400 1628064 5745440 1628168 5742888 1627880 5745216 +1630416 5747064 1630456 5747104 1628168 5742888 1630368 5747016 +1630368 5747016 1630416 5747064 1628168 5742888 1630328 5746984 +1628128 5742888 1627840 5745184 1627880 5745216 1628168 5742888 +1628128 5742888 1627840 5745184 1628168 5742888 1629928 5726696 +1628128 5742888 1627776 5745184 1627840 5745184 1628168 5742888 +1627880 5745216 1628032 5745400 1628168 5742888 1627840 5745184 +1628128 5742888 1628168 5742888 1629928 5726696 1629872 5726768 +1628128 5742888 1627840 5745184 1628168 5742888 1629872 5726768 +1628168 5742888 1630592 5747248 1629928 5726696 1629872 5726768 +1628128 5742888 1628168 5742888 1629872 5726768 1629776 5726856 +1628128 5742888 1628168 5742888 1629776 5726856 1629584 5726976 +1628128 5742888 1627840 5745184 1628168 5742888 1629584 5726976 +1628128 5742888 1628168 5742888 1629584 5726976 1629536 5726952 +1628168 5742888 1629872 5726768 1629776 5726856 1629584 5726976 +1628168 5742888 1629928 5726696 1629872 5726768 1629776 5726856 +1630592 5747248 1628224 5742936 1628168 5742888 1630456 5747104 +1628224 5742936 1629928 5726696 1628168 5742888 1630456 5747104 +1628168 5742888 1628224 5742936 1629928 5726696 1629872 5726768 +1628168 5742888 1630456 5747104 1628224 5742936 1629872 5726768 +1628168 5742888 1630416 5747064 1630456 5747104 1628224 5742936 +1628168 5742888 1630416 5747064 1628224 5742936 1629872 5726768 +1630456 5747104 1630592 5747248 1628224 5742936 1630416 5747064 +1630592 5747248 1628224 5742936 1630456 5747104 1630544 5747200 +1629928 5726696 1628224 5742936 1630592 5747248 1631096 5748624 +1628168 5742888 1630368 5747016 1630416 5747064 1628224 5742936 +1628168 5742888 1630368 5747016 1628224 5742936 1629872 5726768 +1630416 5747064 1630456 5747104 1628224 5742936 1630368 5747016 +1628168 5742888 1630328 5746984 1630368 5747016 1628224 5742936 +1628168 5742888 1630328 5746984 1628224 5742936 1629872 5726768 +1628168 5742888 1630280 5746960 1630328 5746984 1628224 5742936 +1628168 5742888 1630192 5746944 1630280 5746960 1628224 5742936 +1628168 5742888 1630192 5746944 1628224 5742936 1629872 5726768 +1630280 5746960 1630328 5746984 1628224 5742936 1630192 5746944 +1628168 5742888 1628064 5745440 1630192 5746944 1628224 5742936 +1628168 5742888 1628032 5745400 1628064 5745440 1628224 5742936 +1630192 5746944 1630280 5746960 1628224 5742936 1628064 5745440 +1628168 5742888 1628032 5745400 1628224 5742936 1629872 5726768 +1628168 5742888 1627880 5745216 1628032 5745400 1628224 5742936 +1628032 5745400 1628064 5745440 1628224 5742936 1627880 5745216 +1628168 5742888 1627880 5745216 1628224 5742936 1629872 5726768 +1627880 5745216 1627984 5745352 1628032 5745400 1628224 5742936 +1628064 5745440 1628088 5745496 1630192 5746944 1628224 5742936 +1628064 5745440 1630192 5746944 1628224 5742936 1628032 5745400 +1628168 5742888 1627840 5745184 1627880 5745216 1628224 5742936 +1628168 5742888 1627840 5745184 1628224 5742936 1629872 5726768 +1627880 5745216 1628032 5745400 1628224 5742936 1627840 5745184 +1630368 5747016 1630416 5747064 1628224 5742936 1630328 5746984 +1630328 5746984 1630368 5747016 1628224 5742936 1630280 5746960 +1628224 5742936 1630592 5747248 1629928 5726696 1629872 5726768 +1630592 5747248 1629928 5726696 1628224 5742936 1630456 5747104 +1628168 5742888 1628128 5742888 1627840 5745184 1628224 5742936 +1628168 5742888 1628128 5742888 1628224 5742936 1629872 5726768 +1628128 5742888 1627776 5745184 1627840 5745184 1628224 5742936 +1627840 5745184 1627880 5745216 1628224 5742936 1627776 5745184 +1628128 5742888 1627728 5745216 1627776 5745184 1628224 5742936 +1628128 5742888 1627776 5745184 1628224 5742936 1628168 5742888 +1628168 5742888 1628224 5742936 1629872 5726768 1629776 5726856 +1628168 5742888 1628128 5742888 1628224 5742936 1629776 5726856 +1628168 5742888 1628224 5742936 1629776 5726856 1629584 5726976 +1628168 5742888 1628224 5742936 1629584 5726976 1628128 5742888 +1628168 5742888 1628128 5742888 1628224 5742936 1629584 5726976 +1628224 5742936 1629928 5726696 1629872 5726768 1629776 5726856 +1628224 5742936 1629872 5726768 1629776 5726856 1629584 5726976 +1629928 5726696 1628272 5742976 1630592 5747248 1631096 5748624 +1628224 5742936 1628272 5742976 1629928 5726696 1629872 5726768 +1628224 5742936 1630592 5747248 1628272 5742976 1629872 5726768 +1628272 5742976 1630592 5747248 1629928 5726696 1629872 5726768 +1628224 5742936 1628272 5742976 1629872 5726768 1629776 5726856 +1628224 5742936 1630592 5747248 1628272 5742976 1629776 5726856 +1628272 5742976 1629928 5726696 1629872 5726768 1629776 5726856 +1630592 5747248 1628272 5742976 1628224 5742936 1630456 5747104 +1630592 5747248 1629928 5726696 1628272 5742976 1630456 5747104 +1628224 5742936 1630416 5747064 1630456 5747104 1628272 5742976 +1628272 5742976 1629776 5726856 1628224 5742936 1630416 5747064 +1628224 5742936 1630368 5747016 1630416 5747064 1628272 5742976 +1630416 5747064 1630456 5747104 1628272 5742976 1630368 5747016 +1628224 5742936 1630368 5747016 1628272 5742976 1629776 5726856 +1630592 5747248 1628272 5742976 1630456 5747104 1630544 5747200 +1628224 5742936 1630328 5746984 1630368 5747016 1628272 5742976 +1628224 5742936 1630328 5746984 1628272 5742976 1629776 5726856 +1630368 5747016 1630416 5747064 1628272 5742976 1630328 5746984 +1628224 5742936 1630280 5746960 1630328 5746984 1628272 5742976 +1628224 5742936 1630280 5746960 1628272 5742976 1629776 5726856 +1628224 5742936 1630192 5746944 1630280 5746960 1628272 5742976 +1628224 5742936 1628064 5745440 1630192 5746944 1628272 5742976 +1628224 5742936 1628064 5745440 1628272 5742976 1629776 5726856 +1630192 5746944 1630280 5746960 1628272 5742976 1628064 5745440 +1628064 5745440 1628088 5745496 1630192 5746944 1628272 5742976 +1628224 5742936 1628032 5745400 1628064 5745440 1628272 5742976 +1628224 5742936 1627880 5745216 1628032 5745400 1628272 5742976 +1628064 5745440 1630192 5746944 1628272 5742976 1628032 5745400 +1628224 5742936 1627880 5745216 1628272 5742976 1629776 5726856 +1627880 5745216 1627984 5745352 1628032 5745400 1628272 5742976 +1628224 5742936 1627840 5745184 1627880 5745216 1628272 5742976 +1627880 5745216 1628032 5745400 1628272 5742976 1627840 5745184 +1628224 5742936 1627840 5745184 1628272 5742976 1629776 5726856 +1628032 5745400 1628064 5745440 1628272 5742976 1627880 5745216 +1628224 5742936 1627776 5745184 1627840 5745184 1628272 5742976 +1628224 5742936 1627776 5745184 1628272 5742976 1629776 5726856 +1627840 5745184 1627880 5745216 1628272 5742976 1627776 5745184 +1628224 5742936 1628128 5742888 1627776 5745184 1628272 5742976 +1628224 5742936 1628128 5742888 1628272 5742976 1629776 5726856 +1627776 5745184 1627840 5745184 1628272 5742976 1628128 5742888 +1630328 5746984 1630368 5747016 1628272 5742976 1630280 5746960 +1630280 5746960 1630328 5746984 1628272 5742976 1630192 5746944 +1630456 5747104 1630592 5747248 1628272 5742976 1630416 5747064 +1628128 5742888 1627728 5745216 1627776 5745184 1628272 5742976 +1628224 5742936 1628168 5742888 1628128 5742888 1628272 5742976 +1628224 5742936 1628272 5742976 1629776 5726856 1629584 5726976 +1628224 5742936 1628128 5742888 1628272 5742976 1629584 5726976 +1628224 5742936 1628272 5742976 1629584 5726976 1628168 5742888 +1629584 5726976 1628128 5742888 1628168 5742888 1628272 5742976 +1628224 5742936 1628128 5742888 1628272 5742976 1628168 5742888 +1628272 5742976 1629872 5726768 1629776 5726856 1629584 5726976 +1628272 5742976 1629776 5726856 1629584 5726976 1628168 5742888 +1630592 5747248 1628304 5743016 1628272 5742976 1630456 5747104 +1630592 5747248 1629928 5726696 1628304 5743016 1630456 5747104 +1628272 5742976 1628304 5743016 1629928 5726696 1629872 5726768 +1628304 5743016 1630592 5747248 1629928 5726696 1629872 5726768 +1628304 5743016 1629872 5726768 1628272 5742976 1630456 5747104 +1630592 5747248 1628304 5743016 1630456 5747104 1630544 5747200 +1629928 5726696 1628304 5743016 1630592 5747248 1631096 5748624 +1628272 5742976 1628304 5743016 1629872 5726768 1629776 5726856 +1628304 5743016 1629928 5726696 1629872 5726768 1629776 5726856 +1628272 5742976 1630456 5747104 1628304 5743016 1629776 5726856 +1628272 5742976 1628304 5743016 1629776 5726856 1629584 5726976 +1628272 5742976 1630416 5747064 1630456 5747104 1628304 5743016 +1630456 5747104 1630592 5747248 1628304 5743016 1630416 5747064 +1628272 5742976 1630368 5747016 1630416 5747064 1628304 5743016 +1628272 5742976 1630368 5747016 1628304 5743016 1629776 5726856 +1628272 5742976 1630328 5746984 1630368 5747016 1628304 5743016 +1630368 5747016 1630416 5747064 1628304 5743016 1630328 5746984 +1628272 5742976 1630328 5746984 1628304 5743016 1629776 5726856 +1628272 5742976 1630280 5746960 1630328 5746984 1628304 5743016 +1628272 5742976 1630280 5746960 1628304 5743016 1629776 5726856 +1630328 5746984 1630368 5747016 1628304 5743016 1630280 5746960 +1628272 5742976 1630192 5746944 1630280 5746960 1628304 5743016 +1628272 5742976 1630192 5746944 1628304 5743016 1629776 5726856 +1628272 5742976 1628064 5745440 1630192 5746944 1628304 5743016 +1628272 5742976 1628032 5745400 1628064 5745440 1628304 5743016 +1628272 5742976 1628032 5745400 1628304 5743016 1629776 5726856 +1628064 5745440 1630192 5746944 1628304 5743016 1628032 5745400 +1628064 5745440 1628088 5745496 1630192 5746944 1628304 5743016 +1628272 5742976 1627880 5745216 1628032 5745400 1628304 5743016 +1628272 5742976 1627840 5745184 1627880 5745216 1628304 5743016 +1628032 5745400 1628064 5745440 1628304 5743016 1627880 5745216 +1628272 5742976 1627840 5745184 1628304 5743016 1629776 5726856 +1627880 5745216 1627984 5745352 1628032 5745400 1628304 5743016 +1628272 5742976 1627776 5745184 1627840 5745184 1628304 5743016 +1627840 5745184 1627880 5745216 1628304 5743016 1627776 5745184 +1628272 5742976 1627776 5745184 1628304 5743016 1629776 5726856 +1627880 5745216 1628032 5745400 1628304 5743016 1627840 5745184 +1628272 5742976 1628128 5742888 1627776 5745184 1628304 5743016 +1628272 5742976 1628128 5742888 1628304 5743016 1629776 5726856 +1627776 5745184 1627840 5745184 1628304 5743016 1628128 5742888 +1628272 5742976 1628224 5742936 1628128 5742888 1628304 5743016 +1628272 5742976 1628224 5742936 1628304 5743016 1629776 5726856 +1628128 5742888 1627776 5745184 1628304 5743016 1628224 5742936 +1630280 5746960 1630328 5746984 1628304 5743016 1630192 5746944 +1630192 5746944 1630280 5746960 1628304 5743016 1628064 5745440 +1630416 5747064 1630456 5747104 1628304 5743016 1630368 5747016 +1628128 5742888 1627728 5745216 1627776 5745184 1628304 5743016 +1628224 5742936 1628168 5742888 1628128 5742888 1628304 5743016 +1628304 5743016 1628320 5743048 1630280 5746960 1630328 5746984 +1628304 5743016 1630192 5746944 1628320 5743048 1630328 5746984 +1628320 5743048 1630192 5746944 1630280 5746960 1630328 5746984 +1628304 5743016 1628320 5743048 1630328 5746984 1630368 5747016 +1628304 5743016 1630192 5746944 1628320 5743048 1630368 5747016 +1628304 5743016 1628320 5743048 1630368 5747016 1630416 5747064 +1628304 5743016 1630192 5746944 1628320 5743048 1630416 5747064 +1628320 5743048 1630328 5746984 1630368 5747016 1630416 5747064 +1628320 5743048 1630280 5746960 1630328 5746984 1630368 5747016 +1630192 5746944 1628320 5743048 1628304 5743016 1628064 5745440 +1628320 5743048 1630416 5747064 1628304 5743016 1628064 5745440 +1628304 5743016 1628032 5745400 1628064 5745440 1628320 5743048 +1628304 5743016 1628032 5745400 1628320 5743048 1630416 5747064 +1628304 5743016 1627880 5745216 1628032 5745400 1628320 5743048 +1628304 5743016 1627880 5745216 1628320 5743048 1630416 5747064 +1627880 5745216 1627984 5745352 1628032 5745400 1628320 5743048 +1628032 5745400 1628064 5745440 1628320 5743048 1627880 5745216 +1630192 5746944 1628320 5743048 1628064 5745440 1628088 5745496 +1628304 5743016 1627840 5745184 1627880 5745216 1628320 5743048 +1628304 5743016 1627776 5745184 1627840 5745184 1628320 5743048 +1628304 5743016 1627776 5745184 1628320 5743048 1630416 5747064 +1627880 5745216 1628032 5745400 1628320 5743048 1627840 5745184 +1628304 5743016 1628128 5742888 1627776 5745184 1628320 5743048 +1627776 5745184 1627840 5745184 1628320 5743048 1628128 5742888 +1628304 5743016 1628128 5742888 1628320 5743048 1630416 5747064 +1627840 5745184 1627880 5745216 1628320 5743048 1627776 5745184 +1630192 5746944 1630280 5746960 1628320 5743048 1628064 5745440 +1628304 5743016 1628224 5742936 1628128 5742888 1628320 5743048 +1628304 5743016 1628224 5742936 1628320 5743048 1630416 5747064 +1628128 5742888 1627776 5745184 1628320 5743048 1628224 5742936 +1628304 5743016 1628272 5742976 1628224 5742936 1628320 5743048 +1628304 5743016 1628272 5742976 1628320 5743048 1630416 5747064 +1628224 5742936 1628128 5742888 1628320 5743048 1628272 5742976 +1628064 5745440 1630192 5746944 1628320 5743048 1628032 5745400 +1628304 5743016 1628320 5743048 1630416 5747064 1630456 5747104 +1628304 5743016 1628320 5743048 1630456 5747104 1630592 5747248 +1628304 5743016 1628272 5742976 1628320 5743048 1630592 5747248 +1628304 5743016 1628320 5743048 1630592 5747248 1629928 5726696 +1628320 5743048 1630456 5747104 1630592 5747248 1629928 5726696 +1628304 5743016 1628320 5743048 1629928 5726696 1629872 5726768 +1628304 5743016 1628272 5742976 1628320 5743048 1629928 5726696 +1628320 5743048 1630368 5747016 1630416 5747064 1630456 5747104 +1630456 5747104 1630544 5747200 1630592 5747248 1628320 5743048 +1630592 5747248 1631096 5748624 1629928 5726696 1628320 5743048 +1628320 5743048 1630416 5747064 1630456 5747104 1630592 5747248 +1628128 5742888 1627728 5745216 1627776 5745184 1628320 5743048 +1628224 5742936 1628168 5742888 1628128 5742888 1628320 5743048 +1630192 5746944 1628320 5743088 1628064 5745440 1628088 5745496 +1628320 5743048 1628320 5743088 1630192 5746944 1630280 5746960 +1628320 5743048 1628320 5743088 1630280 5746960 1630328 5746984 +1628320 5743048 1628064 5745440 1628320 5743088 1630328 5746984 +1628320 5743088 1630192 5746944 1630280 5746960 1630328 5746984 +1628320 5743088 1628064 5745440 1630192 5746944 1630280 5746960 +1628320 5743048 1628320 5743088 1630328 5746984 1630368 5747016 +1628064 5745440 1628320 5743088 1628320 5743048 1628032 5745400 +1628320 5743048 1627880 5745216 1628032 5745400 1628320 5743088 +1628320 5743048 1627840 5745184 1627880 5745216 1628320 5743088 +1627880 5745216 1627984 5745352 1628032 5745400 1628320 5743088 +1627880 5745216 1628032 5745400 1628320 5743088 1627840 5745184 +1628320 5743048 1627776 5745184 1627840 5745184 1628320 5743088 +1628320 5743048 1628128 5742888 1627776 5745184 1628320 5743088 +1627840 5745184 1627880 5745216 1628320 5743088 1627776 5745184 +1628320 5743048 1628224 5742936 1628128 5742888 1628320 5743088 +1628128 5742888 1627776 5745184 1628320 5743088 1628224 5742936 +1627776 5745184 1627840 5745184 1628320 5743088 1628128 5742888 +1628320 5743088 1630328 5746984 1628320 5743048 1628224 5742936 +1628064 5745440 1630192 5746944 1628320 5743088 1628032 5745400 +1628320 5743048 1628272 5742976 1628224 5742936 1628320 5743088 +1628224 5742936 1628128 5742888 1628320 5743088 1628272 5742976 +1628320 5743048 1628304 5743016 1628272 5742976 1628320 5743088 +1628320 5743048 1628304 5743016 1628320 5743088 1630328 5746984 +1628272 5742976 1628224 5742936 1628320 5743088 1628304 5743016 +1628032 5745400 1628064 5745440 1628320 5743088 1627880 5745216 +1628128 5742888 1627728 5745216 1627776 5745184 1628320 5743088 +1628224 5742936 1628168 5742888 1628128 5742888 1628320 5743088 +1630192 5746944 1628320 5743136 1628064 5745440 1628088 5745496 +1630192 5746944 1628320 5743088 1628320 5743136 1628088 5745496 +1628320 5743136 1628320 5743088 1628064 5745440 1628088 5745496 +1630192 5746944 1628320 5743136 1628088 5745496 1628104 5745544 +1628320 5743088 1628320 5743136 1630192 5746944 1630280 5746960 +1628320 5743136 1628088 5745496 1630192 5746944 1630280 5746960 +1628320 5743088 1628320 5743136 1630280 5746960 1630328 5746984 +1628320 5743088 1628320 5743136 1630328 5746984 1628320 5743048 +1628320 5743136 1630192 5746944 1630280 5746960 1630328 5746984 +1628320 5743088 1628064 5745440 1628320 5743136 1630328 5746984 +1628064 5745440 1628320 5743136 1628320 5743088 1628032 5745400 +1628064 5745440 1628088 5745496 1628320 5743136 1628032 5745400 +1628320 5743136 1630328 5746984 1628320 5743088 1628032 5745400 +1628320 5743088 1627880 5745216 1628032 5745400 1628320 5743136 +1627880 5745216 1627984 5745352 1628032 5745400 1628320 5743136 +1628320 5743088 1627840 5745184 1627880 5745216 1628320 5743136 +1628320 5743088 1627776 5745184 1627840 5745184 1628320 5743136 +1627840 5745184 1627880 5745216 1628320 5743136 1627776 5745184 +1628320 5743088 1628128 5742888 1627776 5745184 1628320 5743136 +1628320 5743088 1628224 5742936 1628128 5742888 1628320 5743136 +1627776 5745184 1627840 5745184 1628320 5743136 1628128 5742888 +1628320 5743088 1628272 5742976 1628224 5742936 1628320 5743136 +1628128 5742888 1627776 5745184 1628320 5743136 1628224 5742936 +1628320 5743088 1628224 5742936 1628320 5743136 1630328 5746984 +1628032 5745400 1628064 5745440 1628320 5743136 1627880 5745216 +1627880 5745216 1628032 5745400 1628320 5743136 1627840 5745184 +1628128 5742888 1627728 5745216 1627776 5745184 1628320 5743136 +1628224 5742936 1628168 5742888 1628128 5742888 1628320 5743136 +1628320 5743136 1628288 5743232 1627776 5745184 1627840 5745184 +1628320 5743136 1628128 5742888 1628288 5743232 1627840 5745184 +1628288 5743232 1628128 5742888 1627776 5745184 1627840 5745184 +1628320 5743136 1628288 5743232 1627840 5745184 1627880 5745216 +1628288 5743232 1627776 5745184 1627840 5745184 1627880 5745216 +1628320 5743136 1628128 5742888 1628288 5743232 1627880 5745216 +1628128 5742888 1628288 5743232 1628320 5743136 1628224 5742936 +1628320 5743136 1628320 5743088 1628224 5742936 1628288 5743232 +1628128 5742888 1627776 5745184 1628288 5743232 1628224 5742936 +1628288 5743232 1627880 5745216 1628320 5743136 1628224 5742936 +1628320 5743136 1628288 5743232 1627880 5745216 1628032 5745400 +1627880 5745216 1627984 5745352 1628032 5745400 1628288 5743232 +1628320 5743136 1628224 5742936 1628288 5743232 1628032 5745400 +1628288 5743232 1627840 5745184 1627880 5745216 1628032 5745400 +1628320 5743136 1628288 5743232 1628032 5745400 1628064 5745440 +1628320 5743136 1628224 5742936 1628288 5743232 1628064 5745440 +1628320 5743136 1628288 5743232 1628064 5745440 1628088 5745496 +1628320 5743136 1628224 5742936 1628288 5743232 1628088 5745496 +1628320 5743136 1628288 5743232 1628088 5745496 1630192 5746944 +1628320 5743136 1628288 5743232 1630192 5746944 1630280 5746960 +1628320 5743136 1628224 5742936 1628288 5743232 1630280 5746960 +1628288 5743232 1628064 5745440 1628088 5745496 1630192 5746944 +1628288 5743232 1628088 5745496 1630192 5746944 1630280 5746960 +1628088 5745496 1628104 5745544 1630192 5746944 1628288 5743232 +1628320 5743136 1628288 5743232 1630280 5746960 1630328 5746984 +1628288 5743232 1628032 5745400 1628064 5745440 1628088 5745496 +1628288 5743232 1627880 5745216 1628032 5745400 1628064 5745440 +1627776 5745184 1628288 5743232 1628128 5742888 1627728 5745216 +1628288 5743232 1628224 5742936 1628128 5742888 1627728 5745216 +1627776 5745184 1627840 5745184 1628288 5743232 1627728 5745216 +1628128 5742888 1624528 5745760 1627728 5745216 1628288 5743232 +1628128 5742888 1628288 5743232 1628224 5742936 1628168 5742888 +1628128 5742888 1628240 5743264 1628288 5743232 1628224 5742936 +1628128 5742888 1627728 5745216 1628240 5743264 1628224 5742936 +1628240 5743264 1627728 5745216 1628288 5743232 1628224 5742936 +1627728 5745216 1628240 5743264 1628128 5742888 1624528 5745760 +1628288 5743232 1628320 5743136 1628224 5742936 1628240 5743264 +1628320 5743136 1628320 5743088 1628224 5742936 1628240 5743264 +1628224 5742936 1628128 5742888 1628240 5743264 1628320 5743088 +1628288 5743232 1628320 5743136 1628240 5743264 1627728 5745216 +1628320 5743088 1628272 5742976 1628224 5742936 1628240 5743264 +1628320 5743088 1628272 5742976 1628240 5743264 1628320 5743136 +1628224 5742936 1628128 5742888 1628240 5743264 1628272 5742976 +1628320 5743136 1628320 5743088 1628240 5743264 1628288 5743232 +1628320 5743088 1628304 5743016 1628272 5742976 1628240 5743264 +1628288 5743232 1628240 5743264 1627728 5745216 1627776 5745184 +1628240 5743264 1628128 5742888 1627728 5745216 1627776 5745184 +1628288 5743232 1628240 5743264 1627776 5745184 1627840 5745184 +1628288 5743232 1628240 5743264 1627840 5745184 1627880 5745216 +1628240 5743264 1627776 5745184 1627840 5745184 1627880 5745216 +1628288 5743232 1628320 5743136 1628240 5743264 1627880 5745216 +1628288 5743232 1628240 5743264 1627880 5745216 1628032 5745400 +1628240 5743264 1627840 5745184 1627880 5745216 1628032 5745400 +1627880 5745216 1627984 5745352 1628032 5745400 1628240 5743264 +1628288 5743232 1628320 5743136 1628240 5743264 1628032 5745400 +1628288 5743232 1628240 5743264 1628032 5745400 1628064 5745440 +1628240 5743264 1627728 5745216 1627776 5745184 1627840 5745184 +1628128 5742888 1628240 5743264 1628224 5742936 1628168 5742888 +1628240 5743264 1628224 5743288 1627728 5745216 1627776 5745184 +1628240 5743264 1628128 5742888 1628224 5743288 1627776 5745184 +1628128 5742888 1628224 5743288 1628240 5743264 1628224 5742936 +1628224 5743288 1628128 5742888 1627728 5745216 1627776 5745184 +1627728 5745216 1628224 5743288 1628128 5742888 1624528 5745760 +1627728 5745216 1628224 5743288 1624528 5745760 1624712 5745880 +1627728 5745216 1627776 5745184 1628224 5743288 1624528 5745760 +1628224 5743288 1628240 5743264 1628128 5742888 1624528 5745760 +1628240 5743264 1628224 5743288 1627776 5745184 1627840 5745184 +1628224 5743288 1627728 5745216 1627776 5745184 1627840 5745184 +1628240 5743264 1628128 5742888 1628224 5743288 1627840 5745184 +1628240 5743264 1628224 5743288 1627840 5745184 1627880 5745216 +1628240 5743264 1628224 5743288 1627880 5745216 1628032 5745400 +1627880 5745216 1627984 5745352 1628032 5745400 1628224 5743288 +1628240 5743264 1628128 5742888 1628224 5743288 1628032 5745400 +1628224 5743288 1627840 5745184 1627880 5745216 1628032 5745400 +1628240 5743264 1628224 5743288 1628032 5745400 1628288 5743232 +1628224 5743288 1627880 5745216 1628032 5745400 1628288 5743232 +1628240 5743264 1628128 5742888 1628224 5743288 1628288 5743232 +1628032 5745400 1628064 5745440 1628288 5743232 1628224 5743288 +1628032 5745400 1628064 5745440 1628224 5743288 1627880 5745216 +1628288 5743232 1628240 5743264 1628224 5743288 1628064 5745440 +1628064 5745440 1628088 5745496 1628288 5743232 1628224 5743288 +1628224 5743288 1627776 5745184 1627840 5745184 1627880 5745216 +1628128 5742888 1624032 5745472 1624528 5745760 1628224 5743288 +1628128 5742888 1628176 5743288 1628224 5743288 1628240 5743264 +1628128 5742888 1628176 5743288 1628240 5743264 1628224 5742936 +1628240 5743264 1628272 5742976 1628224 5742936 1628176 5743288 +1628224 5742936 1628128 5742888 1628176 5743288 1628272 5742976 +1628240 5743264 1628320 5743088 1628272 5742976 1628176 5743288 +1628240 5743264 1628320 5743136 1628320 5743088 1628176 5743288 +1628272 5742976 1628224 5742936 1628176 5743288 1628320 5743088 +1628320 5743088 1628272 5742976 1628176 5743288 1628320 5743136 +1628176 5743288 1624528 5745760 1628224 5743288 1628240 5743264 +1628176 5743288 1628224 5743288 1628240 5743264 1628320 5743136 +1628128 5742888 1624528 5745760 1628176 5743288 1628224 5742936 +1628224 5743288 1628176 5743288 1624528 5745760 1627728 5745216 +1624528 5745760 1624712 5745880 1627728 5745216 1628176 5743288 +1628224 5743288 1628176 5743288 1627728 5745216 1627776 5745184 +1628224 5743288 1628176 5743288 1627776 5745184 1627840 5745184 +1628176 5743288 1627728 5745216 1627776 5745184 1627840 5745184 +1628224 5743288 1628240 5743264 1628176 5743288 1627840 5745184 +1628176 5743288 1628128 5742888 1624528 5745760 1627728 5745216 +1628176 5743288 1624528 5745760 1627728 5745216 1627776 5745184 +1628240 5743264 1628288 5743232 1628320 5743136 1628176 5743288 +1628320 5743088 1628304 5743016 1628272 5742976 1628176 5743288 +1628224 5743288 1628176 5743288 1627840 5745184 1627880 5745216 +1628128 5742888 1628176 5743288 1628224 5742936 1628168 5742888 +1624528 5745760 1628176 5743288 1628128 5742888 1624032 5745472 +1628176 5743288 1628104 5743248 1624528 5745760 1627728 5745216 +1624528 5745760 1624712 5745880 1627728 5745216 1628104 5743248 +1628176 5743288 1628128 5742888 1628104 5743248 1627728 5745216 +1628128 5742888 1628104 5743248 1628176 5743288 1628224 5742936 +1628176 5743288 1628272 5742976 1628224 5742936 1628104 5743248 +1628176 5743288 1628320 5743088 1628272 5742976 1628104 5743248 +1628272 5742976 1628224 5742936 1628104 5743248 1628320 5743088 +1628176 5743288 1628320 5743136 1628320 5743088 1628104 5743248 +1628176 5743288 1628240 5743264 1628320 5743136 1628104 5743248 +1628320 5743088 1628272 5742976 1628104 5743248 1628320 5743136 +1628320 5743136 1628320 5743088 1628104 5743248 1628240 5743264 +1628176 5743288 1628224 5743288 1628240 5743264 1628104 5743248 +1628104 5743248 1627728 5745216 1628176 5743288 1628240 5743264 +1628224 5742936 1628128 5742888 1628104 5743248 1628272 5742976 +1628176 5743288 1628104 5743248 1627728 5745216 1627776 5745184 +1628176 5743288 1628104 5743248 1627776 5745184 1627840 5745184 +1628104 5743248 1624528 5745760 1627728 5745216 1627776 5745184 +1628176 5743288 1628240 5743264 1628104 5743248 1627776 5745184 +1628240 5743264 1628288 5743232 1628320 5743136 1628104 5743248 +1628104 5743248 1628128 5742888 1624528 5745760 1627728 5745216 +1628128 5742888 1624528 5745760 1628104 5743248 1628224 5742936 +1628320 5743088 1628304 5743016 1628272 5742976 1628104 5743248 +1628128 5742888 1628104 5743248 1628224 5742936 1628168 5742888 +1624528 5745760 1628104 5743248 1628128 5742888 1624032 5745472 +1624528 5745760 1627728 5745216 1628104 5743248 1624032 5745472 +1628104 5743248 1628224 5742936 1628128 5742888 1624032 5745472 +1628128 5742888 1623896 5745384 1624032 5745472 1628104 5743248 +1628128 5742888 1623640 5745232 1623896 5745384 1628104 5743248 +1628128 5742888 1623896 5745384 1628104 5743248 1628224 5742936 +1624528 5745760 1628104 5743248 1624032 5745472 1624224 5745656 +1624032 5745472 1624528 5745760 1628104 5743248 1623896 5745384 +1623896 5745384 1628048 5743224 1628128 5742888 1623640 5745232 +1628048 5743224 1628104 5743248 1628128 5742888 1623640 5745232 +1628128 5742888 1623224 5745048 1623640 5745232 1628048 5743224 +1623896 5745384 1628048 5743224 1623640 5745232 1623792 5745368 +1628128 5742888 1628048 5743224 1628104 5743248 1628224 5742936 +1628104 5743248 1628272 5742976 1628224 5742936 1628048 5743224 +1628128 5742888 1623640 5745232 1628048 5743224 1628224 5742936 +1628048 5743224 1623896 5745384 1628104 5743248 1628224 5742936 +1623896 5745384 1628104 5743248 1628048 5743224 1623640 5745232 +1628128 5742888 1628048 5743224 1628224 5742936 1628168 5742888 +1628104 5743248 1628048 5743224 1623896 5745384 1624032 5745472 +1628104 5743248 1628224 5742936 1628048 5743224 1624032 5745472 +1628048 5743224 1623640 5745232 1623896 5745384 1624032 5745472 +1628104 5743248 1628048 5743224 1624032 5745472 1624528 5745760 +1628104 5743248 1628048 5743224 1624528 5745760 1627728 5745216 +1624528 5745760 1624712 5745880 1627728 5745216 1628048 5743224 +1628104 5743248 1628048 5743224 1627728 5745216 1627776 5745184 +1628104 5743248 1628048 5743224 1627776 5745184 1628176 5743288 +1627776 5745184 1627840 5745184 1628176 5743288 1628048 5743224 +1628048 5743224 1627728 5745216 1627776 5745184 1628176 5743288 +1628048 5743224 1624528 5745760 1627728 5745216 1627776 5745184 +1628104 5743248 1628224 5742936 1628048 5743224 1628176 5743288 +1628048 5743224 1623896 5745384 1624032 5745472 1624528 5745760 +1624032 5745472 1624224 5745656 1624528 5745760 1628048 5743224 +1628048 5743224 1624032 5745472 1624528 5745760 1627728 5745216 +1628048 5743224 1628032 5743200 1623640 5745232 1623896 5745384 +1628128 5742888 1628032 5743200 1628048 5743224 1628224 5742936 +1628032 5743200 1628128 5742888 1623640 5745232 1623896 5745384 +1628128 5742888 1623640 5745232 1628032 5743200 1628224 5742936 +1623640 5745232 1628032 5743200 1628128 5742888 1623224 5745048 +1623640 5745232 1623792 5745368 1623896 5745384 1628032 5743200 +1628048 5743224 1628104 5743248 1628224 5742936 1628032 5743200 +1628104 5743248 1628272 5742976 1628224 5742936 1628032 5743200 +1628104 5743248 1628320 5743088 1628272 5742976 1628032 5743200 +1628104 5743248 1628320 5743136 1628320 5743088 1628032 5743200 +1628272 5742976 1628224 5742936 1628032 5743200 1628320 5743088 +1628224 5742936 1628128 5742888 1628032 5743200 1628272 5742976 +1628104 5743248 1628320 5743088 1628032 5743200 1628048 5743224 +1628048 5743224 1628032 5743200 1623896 5745384 1624032 5745472 +1628032 5743200 1623640 5745232 1623896 5745384 1624032 5745472 +1628048 5743224 1628104 5743248 1628032 5743200 1624032 5745472 +1628320 5743088 1628304 5743016 1628272 5742976 1628032 5743200 +1628128 5742888 1628032 5743200 1628224 5742936 1628168 5742888 +1628048 5743224 1628032 5743200 1624032 5745472 1624528 5745760 +1628032 5743200 1623896 5745384 1624032 5745472 1624528 5745760 +1628048 5743224 1628104 5743248 1628032 5743200 1624528 5745760 +1624032 5745472 1624224 5745656 1624528 5745760 1628032 5743200 +1628048 5743224 1628032 5743200 1624528 5745760 1627728 5745216 +1624528 5745760 1624712 5745880 1627728 5745216 1628032 5743200 +1628048 5743224 1628032 5743200 1627728 5745216 1627776 5745184 +1628048 5743224 1628104 5743248 1628032 5743200 1627728 5745216 +1628032 5743200 1624032 5745472 1624528 5745760 1627728 5745216 +1628032 5743200 1628024 5743112 1623640 5745232 1623896 5745384 +1628032 5743200 1628024 5743112 1623896 5745384 1624032 5745472 +1628024 5743112 1623640 5745232 1623896 5745384 1624032 5745472 +1628032 5743200 1628128 5742888 1628024 5743112 1624032 5745472 +1628128 5742888 1628024 5743112 1628032 5743200 1628224 5742936 +1628032 5743200 1628272 5742976 1628224 5742936 1628024 5743112 +1628032 5743200 1628320 5743088 1628272 5742976 1628024 5743112 +1628032 5743200 1628104 5743248 1628320 5743088 1628024 5743112 +1628104 5743248 1628320 5743136 1628320 5743088 1628024 5743112 +1628104 5743248 1628320 5743136 1628024 5743112 1628032 5743200 +1628104 5743248 1628240 5743264 1628320 5743136 1628024 5743112 +1628320 5743088 1628272 5742976 1628024 5743112 1628320 5743136 +1628272 5742976 1628224 5742936 1628024 5743112 1628320 5743088 +1628024 5743112 1624032 5745472 1628032 5743200 1628104 5743248 +1628224 5742936 1628128 5742888 1628024 5743112 1628272 5742976 +1628024 5743112 1628128 5742888 1623640 5745232 1623896 5745384 +1623640 5745232 1628024 5743112 1628128 5742888 1623224 5745048 +1628128 5742888 1623128 5745016 1623224 5745048 1628024 5743112 +1623640 5745232 1623896 5745384 1628024 5743112 1623224 5745048 +1623640 5745232 1628024 5743112 1623224 5745048 1623528 5745200 +1623640 5745232 1623792 5745368 1623896 5745384 1628024 5743112 +1628128 5742888 1623224 5745048 1628024 5743112 1628224 5742936 +1628032 5743200 1628048 5743224 1628104 5743248 1628024 5743112 +1628032 5743200 1628024 5743112 1624032 5745472 1624528 5745760 +1628320 5743088 1628304 5743016 1628272 5742976 1628024 5743112 +1628128 5742888 1628024 5743112 1628224 5742936 1628168 5742888 +1623224 5745048 1628032 5743064 1628128 5742888 1623128 5745016 +1628128 5742888 1622528 5744936 1623128 5745016 1628032 5743064 +1628024 5743112 1628032 5743064 1623224 5745048 1623640 5745232 +1628024 5743112 1628032 5743064 1623640 5745232 1623896 5745384 +1623224 5745048 1623528 5745200 1623640 5745232 1628032 5743064 +1628024 5743112 1628128 5742888 1628032 5743064 1623640 5745232 +1628128 5742888 1628032 5743064 1628024 5743112 1628224 5742936 +1628024 5743112 1628272 5742976 1628224 5742936 1628032 5743064 +1628024 5743112 1628320 5743088 1628272 5742976 1628032 5743064 +1628024 5743112 1628320 5743136 1628320 5743088 1628032 5743064 +1628024 5743112 1628104 5743248 1628320 5743136 1628032 5743064 +1628320 5743088 1628272 5742976 1628032 5743064 1628320 5743136 +1628272 5742976 1628224 5742936 1628032 5743064 1628320 5743088 +1628032 5743064 1623640 5745232 1628024 5743112 1628320 5743136 +1628224 5742936 1628128 5742888 1628032 5743064 1628272 5742976 +1623224 5745048 1623640 5745232 1628032 5743064 1623128 5745016 +1628032 5743064 1628224 5742936 1628128 5742888 1623128 5745016 +1628320 5743088 1628304 5743016 1628272 5742976 1628032 5743064 +1628128 5742888 1628032 5743064 1628224 5742936 1628168 5742888 +1623128 5745016 1628056 5742960 1628128 5742888 1622528 5744936 +1628032 5743064 1628056 5742960 1623128 5745016 1623224 5745048 +1628032 5743064 1628056 5742960 1623224 5745048 1623640 5745232 +1628056 5742960 1623128 5745016 1623224 5745048 1623640 5745232 +1623224 5745048 1623528 5745200 1623640 5745232 1628056 5742960 +1628032 5743064 1628056 5742960 1623640 5745232 1628024 5743112 +1628032 5743064 1628128 5742888 1628056 5742960 1623640 5745232 +1628128 5742888 1628056 5742960 1628032 5743064 1628224 5742936 +1628032 5743064 1628272 5742976 1628224 5742936 1628056 5742960 +1628056 5742960 1623640 5745232 1628032 5743064 1628224 5742936 +1623128 5745016 1623224 5745048 1628056 5742960 1622528 5744936 +1628056 5742960 1628224 5742936 1628128 5742888 1622528 5744936 +1623128 5745016 1628056 5742960 1622528 5744936 1622680 5744976 +1628128 5742888 1615632 5735512 1622528 5744936 1628056 5742960 +1628128 5742888 1628056 5742960 1628224 5742936 1628168 5742888 +1628128 5742888 1621048 5732784 1615632 5735416 1615632 5735512 +1629536 5726952 1621048 5732784 1628128 5742888 1629584 5726976 +1628128 5742888 1628168 5742888 1629584 5726976 1621048 5732784 +1628168 5742888 1628272 5742976 1629584 5726976 1621048 5732784 +1629584 5726976 1629536 5726952 1621048 5732784 1628168 5742888 +1628128 5742888 1628168 5742888 1621048 5732784 1615632 5735512 +1628128 5742888 1621048 5732784 1615632 5735512 1622528 5744936 +1621048 5732784 1615632 5735416 1615632 5735512 1622528 5744936 +1628128 5742888 1628168 5742888 1621048 5732784 1622528 5744936 +1615632 5735416 1621048 5732784 1629536 5726952 1629480 5726888 +1615632 5735416 1621048 5732784 1629480 5726888 1615584 5735320 +1621048 5732784 1629536 5726952 1629480 5726888 1615584 5735320 +1629480 5726888 1621208 5723336 1615584 5735320 1621048 5732784 +1629480 5726888 1629448 5726816 1621208 5723336 1621048 5732784 +1629448 5726816 1629224 5726312 1621208 5723336 1621048 5732784 +1629448 5726816 1629224 5726312 1621048 5732784 1629480 5726888 +1629448 5726816 1629360 5726560 1629224 5726312 1621048 5732784 +1629224 5726312 1621280 5723304 1621208 5723336 1621048 5732784 +1629224 5726312 1621280 5723304 1621048 5732784 1629448 5726816 +1629224 5726312 1629224 5726184 1621280 5723304 1621048 5732784 +1629480 5726888 1629448 5726816 1621048 5732784 1629536 5726952 +1615584 5735320 1615632 5735416 1621048 5732784 1621208 5723336 +1621208 5723336 1621144 5723336 1615584 5735320 1621048 5732784 +1621144 5723336 1615528 5735256 1615584 5735320 1621048 5732784 +1621144 5723336 1615440 5735216 1615528 5735256 1621048 5732784 +1615528 5735256 1615584 5735320 1621048 5732784 1615440 5735216 +1621144 5723336 1620800 5723008 1615440 5735216 1621048 5732784 +1615440 5735216 1615528 5735256 1621048 5732784 1620800 5723008 +1620800 5723008 1620600 5722784 1615440 5735216 1621048 5732784 +1615584 5735320 1615632 5735416 1621048 5732784 1615528 5735256 +1621144 5723336 1620800 5723008 1621048 5732784 1621208 5723336 +1621208 5723336 1621144 5723336 1621048 5732784 1621280 5723304 +1621048 5732784 1615584 5735320 1615632 5735416 1615632 5735512 +1629536 5726952 1629480 5726888 1621048 5732784 1629584 5726976 +1628128 5742888 1621048 5732784 1622528 5744936 1628056 5742960 +1622528 5744936 1623128 5745016 1628056 5742960 1621048 5732784 +1628128 5742888 1628168 5742888 1621048 5732784 1628056 5742960 +1621048 5732784 1615632 5735512 1622528 5744936 1628056 5742960 +1615632 5735512 1622352 5744936 1622528 5744936 1621048 5732784 +1615632 5735512 1622352 5744936 1621048 5732784 1615632 5735416 +1622528 5744936 1628056 5742960 1621048 5732784 1622352 5744936 +1615632 5735512 1615584 5735552 1622352 5744936 1621048 5732784 +1621048 5732784 1621032 5732744 1615440 5735216 1615528 5735256 +1621048 5732784 1621032 5732744 1615528 5735256 1615584 5735320 +1621032 5732744 1620800 5723008 1615440 5735216 1615528 5735256 +1621032 5732744 1615440 5735216 1615528 5735256 1615584 5735320 +1620800 5723008 1621032 5732744 1621048 5732784 1621144 5723336 +1620800 5723008 1615440 5735216 1621032 5732744 1621144 5723336 +1615440 5735216 1621032 5732744 1620800 5723008 1620600 5722784 +1621048 5732784 1621032 5732744 1615584 5735320 1615632 5735416 +1621048 5732784 1621208 5723336 1621144 5723336 1621032 5732744 +1621144 5723336 1620800 5723008 1621032 5732744 1621208 5723336 +1621048 5732784 1621280 5723304 1621208 5723336 1621032 5732744 +1621048 5732784 1629224 5726312 1621280 5723304 1621032 5732744 +1621048 5732784 1629448 5726816 1629224 5726312 1621032 5732744 +1621048 5732784 1629480 5726888 1629448 5726816 1621032 5732744 +1629448 5726816 1629224 5726312 1621032 5732744 1629480 5726888 +1629448 5726816 1629360 5726560 1629224 5726312 1621032 5732744 +1629224 5726312 1629224 5726184 1621280 5723304 1621032 5732744 +1629224 5726312 1621280 5723304 1621032 5732744 1629448 5726816 +1621048 5732784 1629536 5726952 1629480 5726888 1621032 5732744 +1629480 5726888 1629448 5726816 1621032 5732744 1629536 5726952 +1621208 5723336 1621144 5723336 1621032 5732744 1621280 5723304 +1621280 5723304 1621208 5723336 1621032 5732744 1629224 5726312 +1621048 5732784 1629584 5726976 1629536 5726952 1621032 5732744 +1621048 5732784 1629536 5726952 1621032 5732744 1615584 5735320 +1621032 5732744 1621008 5732664 1615440 5735216 1615528 5735256 +1620800 5723008 1621008 5732664 1621032 5732744 1621144 5723336 +1620800 5723008 1615440 5735216 1621008 5732664 1621144 5723336 +1621032 5732744 1621008 5732664 1615528 5735256 1615584 5735320 +1621032 5732744 1621008 5732664 1615584 5735320 1621048 5732784 +1621008 5732664 1615440 5735216 1615528 5735256 1615584 5735320 +1621032 5732744 1621208 5723336 1621144 5723336 1621008 5732664 +1621144 5723336 1620800 5723008 1621008 5732664 1621208 5723336 +1615440 5735216 1621008 5732664 1620800 5723008 1620600 5722784 +1621032 5732744 1621280 5723304 1621208 5723336 1621008 5732664 +1621208 5723336 1621144 5723336 1621008 5732664 1621280 5723304 +1621032 5732744 1629224 5726312 1621280 5723304 1621008 5732664 +1629224 5726312 1629224 5726184 1621280 5723304 1621008 5732664 +1621032 5732744 1629448 5726816 1629224 5726312 1621008 5732664 +1621032 5732744 1629480 5726888 1629448 5726816 1621008 5732664 +1621032 5732744 1629536 5726952 1629480 5726888 1621008 5732664 +1629480 5726888 1629448 5726816 1621008 5732664 1629536 5726952 +1629448 5726816 1629360 5726560 1629224 5726312 1621008 5732664 +1629448 5726816 1629224 5726312 1621008 5732664 1629480 5726888 +1621032 5732744 1621048 5732784 1629536 5726952 1621008 5732664 +1629536 5726952 1629480 5726888 1621008 5732664 1621048 5732784 +1621280 5723304 1621208 5723336 1621008 5732664 1629224 5726312 +1629224 5726312 1621280 5723304 1621008 5732664 1629448 5726816 +1621008 5732664 1620800 5723008 1615440 5735216 1615528 5735256 +1621048 5732784 1629584 5726976 1629536 5726952 1621008 5732664 +1621032 5732744 1621048 5732784 1621008 5732664 1615584 5735320 +1620800 5723008 1620992 5732536 1621008 5732664 1621144 5723336 +1621008 5732664 1621208 5723336 1621144 5723336 1620992 5732536 +1621144 5723336 1620800 5723008 1620992 5732536 1621208 5723336 +1620800 5723008 1615440 5735216 1620992 5732536 1621144 5723336 +1621008 5732664 1621280 5723304 1621208 5723336 1620992 5732536 +1621208 5723336 1621144 5723336 1620992 5732536 1621280 5723304 +1615440 5735216 1620992 5732536 1620800 5723008 1620600 5722784 +1620992 5732536 1615440 5735216 1621008 5732664 1621280 5723304 +1621008 5732664 1629224 5726312 1621280 5723304 1620992 5732536 +1629224 5726312 1629224 5726184 1621280 5723304 1620992 5732536 +1621280 5723304 1621208 5723336 1620992 5732536 1629224 5726312 +1621008 5732664 1629224 5726312 1620992 5732536 1615440 5735216 +1621008 5732664 1629448 5726816 1629224 5726312 1620992 5732536 +1629448 5726816 1629360 5726560 1629224 5726312 1620992 5732536 +1621008 5732664 1629448 5726816 1620992 5732536 1615440 5735216 +1621008 5732664 1629480 5726888 1629448 5726816 1620992 5732536 +1621008 5732664 1629536 5726952 1629480 5726888 1620992 5732536 +1621008 5732664 1621048 5732784 1629536 5726952 1620992 5732536 +1629536 5726952 1629480 5726888 1620992 5732536 1621048 5732784 +1621008 5732664 1621048 5732784 1620992 5732536 1615440 5735216 +1629480 5726888 1629448 5726816 1620992 5732536 1629536 5726952 +1621008 5732664 1621032 5732744 1621048 5732784 1620992 5732536 +1621048 5732784 1629536 5726952 1620992 5732536 1621032 5732744 +1621008 5732664 1621032 5732744 1620992 5732536 1615440 5735216 +1629224 5726312 1621280 5723304 1620992 5732536 1629448 5726816 +1629448 5726816 1629224 5726312 1620992 5732536 1629480 5726888 +1621008 5732664 1620992 5732536 1615440 5735216 1615528 5735256 +1621008 5732664 1620992 5732536 1615528 5735256 1615584 5735320 +1621008 5732664 1621032 5732744 1620992 5732536 1615528 5735256 +1620992 5732536 1620800 5723008 1615440 5735216 1615528 5735256 +1621048 5732784 1629584 5726976 1629536 5726952 1620992 5732536 +1621280 5723304 1621008 5732472 1629224 5726312 1629224 5726184 +1620992 5732536 1621008 5732472 1621280 5723304 1621208 5723336 +1621008 5732472 1629224 5726312 1621280 5723304 1621208 5723336 +1620992 5732536 1621008 5732472 1621208 5723336 1621144 5723336 +1620992 5732536 1621008 5732472 1621144 5723336 1620800 5723008 +1621008 5732472 1621208 5723336 1621144 5723336 1620800 5723008 +1620992 5732536 1621008 5732472 1620800 5723008 1615440 5735216 +1621008 5732472 1621144 5723336 1620800 5723008 1615440 5735216 +1620992 5732536 1629224 5726312 1621008 5732472 1615440 5735216 +1621008 5732472 1621280 5723304 1621208 5723336 1621144 5723336 +1620800 5723008 1620600 5722784 1615440 5735216 1621008 5732472 +1620992 5732536 1621008 5732472 1615440 5735216 1615528 5735256 +1629224 5726312 1621008 5732472 1620992 5732536 1629448 5726816 +1629224 5726312 1621280 5723304 1621008 5732472 1629448 5726816 +1629224 5726312 1621008 5732472 1629448 5726816 1629360 5726560 +1621008 5732472 1615440 5735216 1620992 5732536 1629448 5726816 +1620992 5732536 1629480 5726888 1629448 5726816 1621008 5732472 +1620992 5732536 1629480 5726888 1621008 5732472 1615440 5735216 +1620992 5732536 1629536 5726952 1629480 5726888 1621008 5732472 +1620992 5732536 1621048 5732784 1629536 5726952 1621008 5732472 +1620992 5732536 1621032 5732744 1621048 5732784 1621008 5732472 +1621048 5732784 1629536 5726952 1621008 5732472 1621032 5732744 +1620992 5732536 1621032 5732744 1621008 5732472 1615440 5735216 +1629536 5726952 1629480 5726888 1621008 5732472 1621048 5732784 +1620992 5732536 1621008 5732664 1621032 5732744 1621008 5732472 +1621032 5732744 1621048 5732784 1621008 5732472 1621008 5732664 +1620992 5732536 1621008 5732664 1621008 5732472 1615440 5735216 +1629448 5726816 1629224 5726312 1621008 5732472 1629480 5726888 +1629480 5726888 1629448 5726816 1621008 5732472 1629536 5726952 +1621048 5732784 1629584 5726976 1629536 5726952 1621008 5732472 +1621008 5732472 1621048 5732416 1621280 5723304 1621208 5723336 +1621008 5732472 1629224 5726312 1621048 5732416 1621208 5723336 +1629224 5726312 1621048 5732416 1621008 5732472 1629448 5726816 +1621048 5732416 1621208 5723336 1621008 5732472 1629448 5726816 +1629224 5726312 1621048 5732416 1629448 5726816 1629360 5726560 +1621280 5723304 1621048 5732416 1629224 5726312 1629224 5726184 +1621008 5732472 1621048 5732416 1621208 5723336 1621144 5723336 +1621048 5732416 1621280 5723304 1621208 5723336 1621144 5723336 +1621008 5732472 1629448 5726816 1621048 5732416 1621144 5723336 +1621008 5732472 1621048 5732416 1621144 5723336 1620800 5723008 +1621008 5732472 1629448 5726816 1621048 5732416 1620800 5723008 +1621008 5732472 1621048 5732416 1620800 5723008 1615440 5735216 +1621008 5732472 1629448 5726816 1621048 5732416 1615440 5735216 +1621048 5732416 1621144 5723336 1620800 5723008 1615440 5735216 +1621008 5732472 1621048 5732416 1615440 5735216 1620992 5732536 +1621048 5732416 1621208 5723336 1621144 5723336 1620800 5723008 +1621048 5732416 1629224 5726312 1621280 5723304 1621208 5723336 +1629224 5726312 1621280 5723304 1621048 5732416 1629448 5726816 +1620800 5723008 1620600 5722784 1615440 5735216 1621048 5732416 +1621008 5732472 1629480 5726888 1629448 5726816 1621048 5732416 +1621008 5732472 1629480 5726888 1621048 5732416 1615440 5735216 +1629448 5726816 1629224 5726312 1621048 5732416 1629480 5726888 +1621008 5732472 1629536 5726952 1629480 5726888 1621048 5732416 +1621008 5732472 1629536 5726952 1621048 5732416 1615440 5735216 +1621008 5732472 1621048 5732784 1629536 5726952 1621048 5732416 +1621008 5732472 1621048 5732784 1621048 5732416 1615440 5735216 +1621008 5732472 1621032 5732744 1621048 5732784 1621048 5732416 +1621008 5732472 1621032 5732744 1621048 5732416 1615440 5735216 +1621008 5732472 1621008 5732664 1621032 5732744 1621048 5732416 +1621008 5732472 1621008 5732664 1621048 5732416 1615440 5735216 +1621032 5732744 1621048 5732784 1621048 5732416 1621008 5732664 +1621048 5732784 1629536 5726952 1621048 5732416 1621032 5732744 +1621008 5732472 1620992 5732536 1621008 5732664 1621048 5732416 +1621008 5732472 1620992 5732536 1621048 5732416 1615440 5735216 +1621008 5732664 1621032 5732744 1621048 5732416 1620992 5732536 +1629480 5726888 1629448 5726816 1621048 5732416 1629536 5726952 +1629536 5726952 1629480 5726888 1621048 5732416 1621048 5732784 +1621048 5732784 1629584 5726976 1629536 5726952 1621048 5732416 +1621048 5732784 1628168 5742888 1629584 5726976 1621048 5732416 +1621048 5732784 1629584 5726976 1621048 5732416 1621032 5732744 +1629536 5726952 1629480 5726888 1621048 5732416 1629584 5726976 +1621280 5723304 1621096 5732376 1629224 5726312 1629224 5726184 +1621048 5732416 1621096 5732376 1621280 5723304 1621208 5723336 +1621048 5732416 1621096 5732376 1621208 5723336 1621144 5723336 +1621048 5732416 1621096 5732376 1621144 5723336 1620800 5723008 +1621096 5732376 1621280 5723304 1621208 5723336 1621144 5723336 +1629224 5726312 1621096 5732376 1621048 5732416 1629448 5726816 +1629224 5726312 1621096 5732376 1629448 5726816 1629360 5726560 +1629224 5726312 1621280 5723304 1621096 5732376 1629448 5726816 +1621048 5732416 1629480 5726888 1629448 5726816 1621096 5732376 +1629448 5726816 1629224 5726312 1621096 5732376 1629480 5726888 +1621048 5732416 1629480 5726888 1621096 5732376 1621144 5723336 +1621096 5732376 1629224 5726312 1621280 5723304 1621208 5723336 +1621048 5732416 1629536 5726952 1629480 5726888 1621096 5732376 +1629480 5726888 1629448 5726816 1621096 5732376 1629536 5726952 +1621048 5732416 1629536 5726952 1621096 5732376 1621144 5723336 +1621048 5732416 1629584 5726976 1629536 5726952 1621096 5732376 +1621048 5732416 1629584 5726976 1621096 5732376 1621144 5723336 +1629536 5726952 1629480 5726888 1621096 5732376 1629584 5726976 +1621048 5732416 1621048 5732784 1629584 5726976 1621096 5732376 +1621048 5732784 1628168 5742888 1629584 5726976 1621096 5732376 +1621048 5732416 1621048 5732784 1621096 5732376 1621144 5723336 +1621048 5732416 1621032 5732744 1621048 5732784 1621096 5732376 +1621048 5732416 1621008 5732664 1621032 5732744 1621096 5732376 +1621048 5732416 1620992 5732536 1621008 5732664 1621096 5732376 +1621008 5732664 1621032 5732744 1621096 5732376 1620992 5732536 +1621048 5732416 1620992 5732536 1621096 5732376 1621144 5723336 +1621032 5732744 1621048 5732784 1621096 5732376 1621008 5732664 +1621048 5732416 1621008 5732472 1620992 5732536 1621096 5732376 +1629584 5726976 1629536 5726952 1621096 5732376 1621048 5732784 +1621048 5732784 1629584 5726976 1621096 5732376 1621032 5732744 +1629584 5726976 1621200 5732344 1621048 5732784 1628168 5742888 +1629584 5726976 1621200 5732344 1628168 5742888 1628272 5742976 +1621048 5732784 1628128 5742888 1628168 5742888 1621200 5732344 +1629584 5726976 1621096 5732376 1621200 5732344 1628168 5742888 +1621200 5732344 1621096 5732376 1621048 5732784 1628168 5742888 +1621096 5732376 1621200 5732344 1629584 5726976 1629536 5726952 +1621096 5732376 1621048 5732784 1621200 5732344 1629536 5726952 +1621200 5732344 1628168 5742888 1629584 5726976 1629536 5726952 +1621096 5732376 1621200 5732344 1629536 5726952 1629480 5726888 +1621096 5732376 1621048 5732784 1621200 5732344 1629480 5726888 +1621096 5732376 1621200 5732344 1629480 5726888 1629448 5726816 +1621096 5732376 1621048 5732784 1621200 5732344 1629448 5726816 +1621096 5732376 1621200 5732344 1629448 5726816 1629224 5726312 +1629448 5726816 1629360 5726560 1629224 5726312 1621200 5732344 +1621096 5732376 1621048 5732784 1621200 5732344 1629224 5726312 +1621096 5732376 1621200 5732344 1629224 5726312 1621280 5723304 +1629224 5726312 1629224 5726184 1621280 5723304 1621200 5732344 +1621096 5732376 1621048 5732784 1621200 5732344 1621280 5723304 +1621200 5732344 1629480 5726888 1629448 5726816 1629224 5726312 +1621200 5732344 1629448 5726816 1629224 5726312 1621280 5723304 +1621096 5732376 1621200 5732344 1621280 5723304 1621208 5723336 +1621096 5732376 1621048 5732784 1621200 5732344 1621208 5723336 +1621200 5732344 1629224 5726312 1621280 5723304 1621208 5723336 +1621096 5732376 1621200 5732344 1621208 5723336 1621144 5723336 +1621096 5732376 1621200 5732344 1621144 5723336 1621048 5732416 +1621096 5732376 1621048 5732784 1621200 5732344 1621144 5723336 +1621200 5732344 1621280 5723304 1621208 5723336 1621144 5723336 +1621200 5732344 1629536 5726952 1629480 5726888 1629448 5726816 +1621200 5732344 1629584 5726976 1629536 5726952 1629480 5726888 +1621048 5732784 1621200 5732344 1621096 5732376 1621032 5732744 +1621200 5732344 1621144 5723336 1621096 5732376 1621032 5732744 +1621048 5732784 1628168 5742888 1621200 5732344 1621032 5732744 +1621096 5732376 1621008 5732664 1621032 5732744 1621200 5732344 +1621096 5732376 1620992 5732536 1621008 5732664 1621200 5732344 +1621096 5732376 1621048 5732416 1620992 5732536 1621200 5732344 +1620992 5732536 1621008 5732664 1621200 5732344 1621048 5732416 +1621096 5732376 1621048 5732416 1621200 5732344 1621144 5723336 +1621008 5732664 1621032 5732744 1621200 5732344 1620992 5732536 +1621048 5732416 1621008 5732472 1620992 5732536 1621200 5732344 +1621032 5732744 1621048 5732784 1621200 5732344 1621008 5732664 +1629584 5726976 1621328 5732344 1628168 5742888 1628272 5742976 +1628168 5742888 1621328 5732344 1621200 5732344 1621048 5732784 +1628168 5742888 1629584 5726976 1621328 5732344 1621048 5732784 +1628168 5742888 1621328 5732344 1621048 5732784 1628128 5742888 +1621328 5732344 1621200 5732344 1621048 5732784 1628128 5742888 +1628168 5742888 1629584 5726976 1621328 5732344 1628128 5742888 +1621048 5732784 1628056 5742960 1628128 5742888 1621328 5732344 +1621200 5732344 1621328 5732344 1629584 5726976 1629536 5726952 +1621328 5732344 1628168 5742888 1629584 5726976 1629536 5726952 +1621328 5732344 1629536 5726952 1621200 5732344 1621048 5732784 +1621200 5732344 1621032 5732744 1621048 5732784 1621328 5732344 +1621048 5732784 1628128 5742888 1621328 5732344 1621032 5732744 +1621200 5732344 1621032 5732744 1621328 5732344 1629536 5726952 +1621200 5732344 1621328 5732344 1629536 5726952 1629480 5726888 +1621328 5732344 1629584 5726976 1629536 5726952 1629480 5726888 +1621200 5732344 1621032 5732744 1621328 5732344 1629480 5726888 +1621200 5732344 1621328 5732344 1629480 5726888 1629448 5726816 +1621200 5732344 1621032 5732744 1621328 5732344 1629448 5726816 +1621200 5732344 1621328 5732344 1629448 5726816 1629224 5726312 +1629448 5726816 1629360 5726560 1629224 5726312 1621328 5732344 +1621200 5732344 1621032 5732744 1621328 5732344 1629224 5726312 +1621200 5732344 1621328 5732344 1629224 5726312 1621280 5723304 +1629224 5726312 1629224 5726184 1621280 5723304 1621328 5732344 +1621200 5732344 1621328 5732344 1621280 5723304 1621208 5723336 +1621200 5732344 1621032 5732744 1621328 5732344 1621208 5723336 +1621328 5732344 1629448 5726816 1629224 5726312 1621280 5723304 +1621328 5732344 1629224 5726312 1621280 5723304 1621208 5723336 +1621200 5732344 1621328 5732344 1621208 5723336 1621144 5723336 +1621328 5732344 1629480 5726888 1629448 5726816 1629224 5726312 +1621328 5732344 1629536 5726952 1629480 5726888 1629448 5726816 +1621200 5732344 1621008 5732664 1621032 5732744 1621328 5732344 +1621200 5732344 1621008 5732664 1621328 5732344 1621208 5723336 +1621032 5732744 1621048 5732784 1621328 5732344 1621008 5732664 +1621200 5732344 1620992 5732536 1621008 5732664 1621328 5732344 +1629584 5726976 1621496 5732416 1628168 5742888 1628272 5742976 +1621328 5732344 1621496 5732416 1629584 5726976 1629536 5726952 +1621328 5732344 1628168 5742888 1621496 5732416 1629536 5726952 +1628168 5742888 1621496 5732416 1621328 5732344 1628128 5742888 +1628168 5742888 1629584 5726976 1621496 5732416 1628128 5742888 +1621496 5732416 1629536 5726952 1621328 5732344 1628128 5742888 +1621496 5732416 1628168 5742888 1629584 5726976 1629536 5726952 +1621328 5732344 1621048 5732784 1628128 5742888 1621496 5732416 +1621328 5732344 1621032 5732744 1621048 5732784 1621496 5732416 +1621328 5732344 1621032 5732744 1621496 5732416 1629536 5726952 +1628128 5742888 1628168 5742888 1621496 5732416 1621048 5732784 +1621048 5732784 1628128 5742888 1621496 5732416 1621032 5732744 +1621048 5732784 1628056 5742960 1628128 5742888 1621496 5732416 +1621328 5732344 1621496 5732416 1629536 5726952 1629480 5726888 +1621496 5732416 1629584 5726976 1629536 5726952 1629480 5726888 +1621328 5732344 1621032 5732744 1621496 5732416 1629480 5726888 +1621328 5732344 1621008 5732664 1621032 5732744 1621496 5732416 +1621328 5732344 1621496 5732416 1629480 5726888 1629448 5726816 +1621328 5732344 1621032 5732744 1621496 5732416 1629448 5726816 +1621496 5732416 1629536 5726952 1629480 5726888 1629448 5726816 +1621328 5732344 1621496 5732416 1629448 5726816 1629224 5726312 +1629448 5726816 1629360 5726560 1629224 5726312 1621496 5732416 +1621328 5732344 1621032 5732744 1621496 5732416 1629224 5726312 +1621328 5732344 1621496 5732416 1629224 5726312 1621280 5723304 +1629224 5726312 1629224 5726184 1621280 5723304 1621496 5732416 +1621328 5732344 1621032 5732744 1621496 5732416 1621280 5723304 +1621328 5732344 1621496 5732416 1621280 5723304 1621208 5723336 +1621496 5732416 1629448 5726816 1629224 5726312 1621280 5723304 +1621496 5732416 1629480 5726888 1629448 5726816 1629224 5726312 +1629584 5726976 1621632 5732520 1628168 5742888 1628272 5742976 +1628168 5742888 1621632 5732520 1621496 5732416 1628128 5742888 +1628168 5742888 1629584 5726976 1621632 5732520 1628128 5742888 +1621496 5732416 1621048 5732784 1628128 5742888 1621632 5732520 +1628128 5742888 1628168 5742888 1621632 5732520 1621048 5732784 +1621496 5732416 1621632 5732520 1629584 5726976 1629536 5726952 +1621632 5732520 1628168 5742888 1629584 5726976 1629536 5726952 +1621496 5732416 1621632 5732520 1629536 5726952 1629480 5726888 +1621632 5732520 1629584 5726976 1629536 5726952 1629480 5726888 +1621632 5732520 1629480 5726888 1621496 5732416 1621048 5732784 +1621496 5732416 1621032 5732744 1621048 5732784 1621632 5732520 +1621048 5732784 1628056 5742960 1628128 5742888 1621632 5732520 +1621496 5732416 1621632 5732520 1629480 5726888 1629448 5726816 +1621632 5732520 1629536 5726952 1629480 5726888 1629448 5726816 +1621496 5732416 1621048 5732784 1621632 5732520 1629448 5726816 +1621496 5732416 1621632 5732520 1629448 5726816 1629224 5726312 +1629448 5726816 1629360 5726560 1629224 5726312 1621632 5732520 +1621496 5732416 1621048 5732784 1621632 5732520 1629224 5726312 +1621632 5732520 1629480 5726888 1629448 5726816 1629224 5726312 +1621496 5732416 1621632 5732520 1629224 5726312 1621280 5723304 +1629584 5726976 1621752 5732672 1628168 5742888 1628272 5742976 +1621632 5732520 1621752 5732672 1629584 5726976 1629536 5726952 +1621632 5732520 1628168 5742888 1621752 5732672 1629536 5726952 +1628168 5742888 1621752 5732672 1621632 5732520 1628128 5742888 +1621632 5732520 1621048 5732784 1628128 5742888 1621752 5732672 +1621752 5732672 1629536 5726952 1621632 5732520 1621048 5732784 +1628128 5742888 1628168 5742888 1621752 5732672 1621048 5732784 +1621752 5732672 1628168 5742888 1629584 5726976 1629536 5726952 +1621632 5732520 1621496 5732416 1621048 5732784 1621752 5732672 +1621632 5732520 1621752 5732672 1629536 5726952 1629480 5726888 +1621752 5732672 1629584 5726976 1629536 5726952 1629480 5726888 +1621632 5732520 1621048 5732784 1621752 5732672 1629480 5726888 +1621632 5732520 1621752 5732672 1629480 5726888 1629448 5726816 +1621048 5732784 1628056 5742960 1628128 5742888 1621752 5732672 +1621048 5732784 1628056 5742960 1621752 5732672 1621632 5732520 +1628128 5742888 1628168 5742888 1621752 5732672 1628056 5742960 +1628168 5742888 1629584 5726976 1621752 5732672 1628128 5742888 +1621048 5732784 1622528 5744936 1628056 5742960 1621752 5732672 +1622528 5744936 1623128 5745016 1628056 5742960 1621752 5732672 +1621048 5732784 1622528 5744936 1621752 5732672 1621632 5732520 +1628056 5742960 1628128 5742888 1621752 5732672 1622528 5744936 +1621048 5732784 1622352 5744936 1622528 5744936 1621752 5732672 +1621048 5732784 1622352 5744936 1621752 5732672 1621632 5732520 +1622528 5744936 1628056 5742960 1621752 5732672 1622352 5744936 +1621048 5732784 1615632 5735512 1622352 5744936 1621752 5732672 +1628056 5742960 1621776 5732752 1622528 5744936 1623128 5745016 +1621752 5732672 1621776 5732752 1628056 5742960 1628128 5742888 +1621752 5732672 1621776 5732752 1628128 5742888 1628168 5742888 +1621776 5732752 1622528 5744936 1628056 5742960 1628128 5742888 +1621776 5732752 1628056 5742960 1628128 5742888 1628168 5742888 +1621752 5732672 1622528 5744936 1621776 5732752 1628168 5742888 +1621752 5732672 1621776 5732752 1628168 5742888 1629584 5726976 +1628168 5742888 1628272 5742976 1629584 5726976 1621776 5732752 +1621776 5732752 1628128 5742888 1628168 5742888 1629584 5726976 +1621752 5732672 1621776 5732752 1629584 5726976 1629536 5726952 +1621752 5732672 1621776 5732752 1629536 5726952 1629480 5726888 +1621752 5732672 1622528 5744936 1621776 5732752 1629536 5726952 +1621776 5732752 1628168 5742888 1629584 5726976 1629536 5726952 +1622528 5744936 1621776 5732752 1621752 5732672 1622352 5744936 +1622528 5744936 1628056 5742960 1621776 5732752 1622352 5744936 +1621752 5732672 1621048 5732784 1622352 5744936 1621776 5732752 +1621752 5732672 1621632 5732520 1621048 5732784 1621776 5732752 +1621776 5732752 1629536 5726952 1621752 5732672 1621048 5732784 +1622352 5744936 1622528 5744936 1621776 5732752 1621048 5732784 +1621048 5732784 1615632 5735512 1622352 5744936 1621776 5732752 +1628056 5742960 1621800 5732912 1622528 5744936 1623128 5745016 +1621776 5732752 1621800 5732912 1628056 5742960 1628128 5742888 +1621776 5732752 1622528 5744936 1621800 5732912 1628128 5742888 +1622528 5744936 1621800 5732912 1621776 5732752 1622352 5744936 +1621800 5732912 1628128 5742888 1621776 5732752 1622352 5744936 +1621776 5732752 1621800 5732912 1628128 5742888 1628168 5742888 +1621776 5732752 1621800 5732912 1628168 5742888 1629584 5726976 +1628168 5742888 1628272 5742976 1629584 5726976 1621800 5732912 +1621800 5732912 1628056 5742960 1628128 5742888 1628168 5742888 +1621776 5732752 1622352 5744936 1621800 5732912 1629584 5726976 +1621800 5732912 1628128 5742888 1628168 5742888 1629584 5726976 +1621776 5732752 1621800 5732912 1629584 5726976 1629536 5726952 +1621800 5732912 1622528 5744936 1628056 5742960 1628128 5742888 +1622528 5744936 1628056 5742960 1621800 5732912 1622352 5744936 +1621776 5732752 1621048 5732784 1622352 5744936 1621800 5732912 +1621776 5732752 1621048 5732784 1621800 5732912 1629584 5726976 +1622352 5744936 1622528 5744936 1621800 5732912 1621048 5732784 +1621776 5732752 1621752 5732672 1621048 5732784 1621800 5732912 +1621048 5732784 1615632 5735512 1622352 5744936 1621800 5732912 +1621048 5732784 1615632 5735416 1615632 5735512 1621800 5732912 +1622352 5744936 1622528 5744936 1621800 5732912 1615632 5735512 +1621048 5732784 1615632 5735512 1621800 5732912 1621776 5732752 +1615632 5735512 1615584 5735552 1622352 5744936 1621800 5732912 +1621800 5732912 1621808 5733136 1622352 5744936 1622528 5744936 +1621808 5733136 1615632 5735512 1622352 5744936 1622528 5744936 +1621800 5732912 1615632 5735512 1621808 5733136 1622528 5744936 +1621800 5732912 1621808 5733136 1622528 5744936 1628056 5742960 +1622528 5744936 1623128 5745016 1628056 5742960 1621808 5733136 +1621808 5733136 1622352 5744936 1622528 5744936 1628056 5742960 +1621800 5732912 1621808 5733136 1628056 5742960 1628128 5742888 +1621800 5732912 1621808 5733136 1628128 5742888 1628168 5742888 +1621800 5732912 1621808 5733136 1628168 5742888 1629584 5726976 +1628168 5742888 1628272 5742976 1629584 5726976 1621808 5733136 +1621800 5732912 1621808 5733136 1629584 5726976 1621776 5732752 +1621808 5733136 1628128 5742888 1628168 5742888 1629584 5726976 +1621808 5733136 1628056 5742960 1628128 5742888 1628168 5742888 +1621800 5732912 1615632 5735512 1621808 5733136 1629584 5726976 +1621808 5733136 1622528 5744936 1628056 5742960 1628128 5742888 +1622352 5744936 1621808 5733136 1615632 5735512 1615584 5735552 +1615632 5735512 1621808 5733136 1621800 5732912 1621048 5732784 +1615632 5735512 1622352 5744936 1621808 5733136 1621048 5732784 +1615632 5735512 1621808 5733136 1621048 5732784 1615632 5735416 +1621808 5733136 1629584 5726976 1621800 5732912 1621048 5732784 +1621800 5732912 1621776 5732752 1621048 5732784 1621808 5733136 +1621808 5733136 1621784 5733192 1622352 5744936 1622528 5744936 +1621808 5733136 1615632 5735512 1621784 5733192 1622528 5744936 +1615632 5735512 1621784 5733192 1621808 5733136 1621048 5732784 +1621784 5733192 1622528 5744936 1621808 5733136 1621048 5732784 +1621784 5733192 1615632 5735512 1622352 5744936 1622528 5744936 +1615632 5735512 1621784 5733192 1621048 5732784 1615632 5735416 +1621808 5733136 1621784 5733192 1622528 5744936 1628056 5742960 +1621784 5733192 1622352 5744936 1622528 5744936 1628056 5742960 +1621808 5733136 1621048 5732784 1621784 5733192 1628056 5742960 +1622528 5744936 1623128 5745016 1628056 5742960 1621784 5733192 +1615632 5735512 1622352 5744936 1621784 5733192 1621048 5732784 +1621808 5733136 1621784 5733192 1628056 5742960 1628128 5742888 +1621808 5733136 1621048 5732784 1621784 5733192 1628128 5742888 +1621784 5733192 1622528 5744936 1628056 5742960 1628128 5742888 +1621808 5733136 1621784 5733192 1628128 5742888 1628168 5742888 +1621808 5733136 1621048 5732784 1621784 5733192 1628168 5742888 +1621808 5733136 1621784 5733192 1628168 5742888 1629584 5726976 +1621784 5733192 1628056 5742960 1628128 5742888 1628168 5742888 +1622352 5744936 1621784 5733192 1615632 5735512 1615584 5735552 +1621808 5733136 1621800 5732912 1621048 5732784 1621784 5733192 +1621808 5733136 1621800 5732912 1621784 5733192 1628168 5742888 +1621048 5732784 1615632 5735512 1621784 5733192 1621800 5732912 +1621800 5732912 1621776 5732752 1621048 5732784 1621784 5733192 +1621784 5733192 1621712 5733232 1622352 5744936 1622528 5744936 +1621784 5733192 1621712 5733232 1622528 5744936 1628056 5742960 +1621712 5733232 1622352 5744936 1622528 5744936 1628056 5742960 +1621784 5733192 1615632 5735512 1621712 5733232 1628056 5742960 +1622528 5744936 1623128 5745016 1628056 5742960 1621712 5733232 +1621784 5733192 1621712 5733232 1628056 5742960 1628128 5742888 +1621712 5733232 1622528 5744936 1628056 5742960 1628128 5742888 +1621784 5733192 1615632 5735512 1621712 5733232 1628128 5742888 +1615632 5735512 1621712 5733232 1621784 5733192 1621048 5732784 +1621784 5733192 1621800 5732912 1621048 5732784 1621712 5733232 +1621712 5733232 1628128 5742888 1621784 5733192 1621800 5732912 +1615632 5735512 1621712 5733232 1621048 5732784 1615632 5735416 +1621048 5732784 1615632 5735512 1621712 5733232 1621800 5732912 +1621712 5733232 1615632 5735512 1622352 5744936 1622528 5744936 +1615632 5735512 1622352 5744936 1621712 5733232 1621048 5732784 +1621784 5733192 1621712 5733232 1628128 5742888 1628168 5742888 +1621800 5732912 1621776 5732752 1621048 5732784 1621712 5733232 +1622352 5744936 1621712 5733232 1615632 5735512 1615584 5735552 +1621784 5733192 1621808 5733136 1621800 5732912 1621712 5733232 +1621800 5732912 1621048 5732784 1621712 5733232 1621808 5733136 +1621784 5733192 1621808 5733136 1621712 5733232 1628128 5742888 +1615632 5735512 1621616 5733232 1621048 5732784 1615632 5735416 +1621048 5732784 1621616 5733232 1621712 5733232 1621800 5732912 +1621712 5733232 1621808 5733136 1621800 5732912 1621616 5733232 +1621800 5732912 1621048 5732784 1621616 5733232 1621808 5733136 +1621616 5733232 1615632 5735512 1621712 5733232 1621808 5733136 +1621712 5733232 1621616 5733232 1615632 5735512 1622352 5744936 +1621712 5733232 1621616 5733232 1622352 5744936 1622528 5744936 +1621712 5733232 1621808 5733136 1621616 5733232 1622352 5744936 +1621616 5733232 1621048 5732784 1615632 5735512 1622352 5744936 +1621048 5732784 1621616 5733232 1621800 5732912 1621776 5732752 +1615632 5735512 1615584 5735552 1622352 5744936 1621616 5733232 +1621712 5733232 1621784 5733192 1621808 5733136 1621616 5733232 +1621048 5732784 1615632 5735512 1621616 5733232 1621800 5732912 +1615632 5735512 1621440 5733160 1621048 5732784 1615632 5735416 +1621616 5733232 1621440 5733160 1615632 5735512 1622352 5744936 +1621048 5732784 1615584 5735320 1615632 5735416 1621440 5733160 +1615632 5735512 1621616 5733232 1621440 5733160 1615632 5735416 +1621440 5733160 1621616 5733232 1621048 5732784 1615632 5735416 +1621048 5732784 1621440 5733160 1621616 5733232 1621800 5732912 +1621616 5733232 1621808 5733136 1621800 5732912 1621440 5733160 +1621048 5732784 1621440 5733160 1621800 5732912 1621776 5732752 +1621048 5732784 1621440 5733160 1621776 5732752 1621752 5732672 +1621048 5732784 1621440 5733160 1621752 5732672 1621632 5732520 +1621048 5732784 1621440 5733160 1621632 5732520 1621496 5732416 +1621440 5733160 1621776 5732752 1621752 5732672 1621632 5732520 +1621440 5733160 1621800 5732912 1621776 5732752 1621752 5732672 +1621048 5732784 1615632 5735416 1621440 5733160 1621632 5732520 +1621440 5733160 1615632 5735512 1621616 5733232 1621800 5732912 +1621440 5733160 1621616 5733232 1621800 5732912 1621776 5732752 +1621440 5733160 1621232 5732992 1615632 5735416 1615632 5735512 +1615632 5735416 1621232 5732992 1621048 5732784 1615584 5735320 +1621440 5733160 1621232 5732992 1615632 5735512 1621616 5733232 +1621440 5733160 1621048 5732784 1621232 5732992 1615632 5735512 +1621048 5732784 1621232 5732992 1621440 5733160 1621632 5732520 +1621440 5733160 1621752 5732672 1621632 5732520 1621232 5732992 +1621048 5732784 1621232 5732992 1621632 5732520 1621496 5732416 +1621048 5732784 1621232 5732992 1621496 5732416 1621032 5732744 +1621440 5733160 1621776 5732752 1621752 5732672 1621232 5732992 +1621752 5732672 1621632 5732520 1621232 5732992 1621776 5732752 +1621048 5732784 1615632 5735416 1621232 5732992 1621496 5732416 +1621440 5733160 1621800 5732912 1621776 5732752 1621232 5732992 +1621232 5732992 1615632 5735512 1621440 5733160 1621776 5732752 +1621632 5732520 1621496 5732416 1621232 5732992 1621752 5732672 +1621232 5732992 1621048 5732784 1615632 5735416 1615632 5735512 +1621232 5732992 1621480 5732944 1621776 5732752 1621752 5732672 +1621232 5732992 1621480 5732944 1621752 5732672 1621632 5732520 +1621480 5732944 1621776 5732752 1621752 5732672 1621632 5732520 +1621480 5732944 1621440 5733160 1621776 5732752 1621752 5732672 +1621776 5732752 1621480 5732944 1621440 5733160 1621800 5732912 +1621776 5732752 1621752 5732672 1621480 5732944 1621800 5732912 +1621480 5732944 1621232 5732992 1621440 5733160 1621800 5732912 +1621232 5732992 1621480 5732944 1621632 5732520 1621496 5732416 +1621480 5732944 1621752 5732672 1621632 5732520 1621496 5732416 +1621232 5732992 1621480 5732944 1621496 5732416 1621048 5732784 +1621496 5732416 1621032 5732744 1621048 5732784 1621480 5732944 +1621480 5732944 1621632 5732520 1621496 5732416 1621048 5732784 +1621232 5732992 1621440 5733160 1621480 5732944 1621048 5732784 +1621440 5733160 1621616 5733232 1621800 5732912 1621480 5732944 +1621440 5733160 1621616 5733232 1621480 5732944 1621232 5732992 +1621616 5733232 1621808 5733136 1621800 5732912 1621480 5732944 +1621616 5733232 1621712 5733232 1621808 5733136 1621480 5732944 +1621800 5732912 1621776 5732752 1621480 5732944 1621808 5733136 +1621616 5733232 1621808 5733136 1621480 5732944 1621440 5733160 +1621048 5732784 1621464 5732944 1621480 5732944 1621496 5732416 +1621048 5732784 1621464 5732944 1621496 5732416 1621032 5732744 +1621464 5732944 1621232 5732992 1621480 5732944 1621496 5732416 +1621480 5732944 1621632 5732520 1621496 5732416 1621464 5732944 +1621480 5732944 1621752 5732672 1621632 5732520 1621464 5732944 +1621496 5732416 1621048 5732784 1621464 5732944 1621632 5732520 +1621480 5732944 1621632 5732520 1621464 5732944 1621232 5732992 +1621480 5732944 1621464 5732944 1621232 5732992 1621440 5733160 +1621480 5732944 1621632 5732520 1621464 5732944 1621440 5733160 +1621480 5732944 1621464 5732944 1621440 5733160 1621616 5733232 +1621464 5732944 1621048 5732784 1621232 5732992 1621440 5733160 +1621048 5732784 1621232 5732992 1621464 5732944 1621496 5732416 +1621464 5732944 1621368 5732912 1621232 5732992 1621440 5733160 +1621368 5732912 1621048 5732784 1621232 5732992 1621440 5733160 +1621464 5732944 1621368 5732912 1621440 5733160 1621480 5732944 +1621464 5732944 1621048 5732784 1621368 5732912 1621440 5733160 +1621048 5732784 1621368 5732912 1621464 5732944 1621496 5732416 +1621464 5732944 1621632 5732520 1621496 5732416 1621368 5732912 +1621048 5732784 1621368 5732912 1621496 5732416 1621032 5732744 +1621496 5732416 1621328 5732344 1621032 5732744 1621368 5732912 +1621032 5732744 1621048 5732784 1621368 5732912 1621328 5732344 +1621048 5732784 1621232 5732992 1621368 5732912 1621032 5732744 +1621328 5732344 1621008 5732664 1621032 5732744 1621368 5732912 +1621464 5732944 1621480 5732944 1621632 5732520 1621368 5732912 +1621480 5732944 1621752 5732672 1621632 5732520 1621368 5732912 +1621632 5732520 1621496 5732416 1621368 5732912 1621480 5732944 +1621368 5732912 1621440 5733160 1621464 5732944 1621480 5732944 +1621496 5732416 1621328 5732344 1621368 5732912 1621632 5732520 +1621328 5732344 1621288 5732832 1621368 5732912 1621496 5732416 +1621368 5732912 1621288 5732832 1621032 5732744 1621048 5732784 +1621328 5732344 1621032 5732744 1621288 5732832 1621496 5732416 +1621288 5732832 1621048 5732784 1621368 5732912 1621496 5732416 +1621368 5732912 1621288 5732832 1621048 5732784 1621232 5732992 +1621288 5732832 1621032 5732744 1621048 5732784 1621232 5732992 +1621368 5732912 1621288 5732832 1621232 5732992 1621440 5733160 +1621368 5732912 1621496 5732416 1621288 5732832 1621232 5732992 +1621288 5732832 1621328 5732344 1621032 5732744 1621048 5732784 +1621032 5732744 1621288 5732832 1621328 5732344 1621008 5732664 +1621288 5732832 1621496 5732416 1621328 5732344 1621008 5732664 +1621032 5732744 1621048 5732784 1621288 5732832 1621008 5732664 +1621328 5732344 1621200 5732344 1621008 5732664 1621288 5732832 +1621328 5732344 1621200 5732344 1621288 5732832 1621496 5732416 +1621008 5732664 1621032 5732744 1621288 5732832 1621200 5732344 +1621200 5732344 1620992 5732536 1621008 5732664 1621288 5732832 +1621368 5732912 1621632 5732520 1621496 5732416 1621288 5732832 +1621496 5732416 1621328 5732344 1621288 5732832 1621632 5732520 +1621368 5732912 1621480 5732944 1621632 5732520 1621288 5732832 +1621480 5732944 1621752 5732672 1621632 5732520 1621288 5732832 +1621368 5732912 1621480 5732944 1621288 5732832 1621232 5732992 +1621368 5732912 1621464 5732944 1621480 5732944 1621288 5732832 +1621632 5732520 1621496 5732416 1621288 5732832 1621480 5732944 +1621288 5732832 1621272 5732792 1621008 5732664 1621032 5732744 +1621272 5732792 1621200 5732344 1621008 5732664 1621032 5732744 +1621288 5732832 1621272 5732792 1621032 5732744 1621048 5732784 +1621288 5732832 1621272 5732792 1621048 5732784 1621232 5732992 +1621288 5732832 1621200 5732344 1621272 5732792 1621048 5732784 +1621272 5732792 1621008 5732664 1621032 5732744 1621048 5732784 +1621008 5732664 1621272 5732792 1621200 5732344 1620992 5732536 +1621200 5732344 1621048 5732416 1620992 5732536 1621272 5732792 +1621008 5732664 1621032 5732744 1621272 5732792 1620992 5732536 +1621272 5732792 1621288 5732832 1621200 5732344 1620992 5732536 +1621200 5732344 1621272 5732792 1621288 5732832 1621328 5732344 +1621288 5732832 1621496 5732416 1621328 5732344 1621272 5732792 +1621288 5732832 1621632 5732520 1621496 5732416 1621272 5732792 +1621496 5732416 1621328 5732344 1621272 5732792 1621632 5732520 +1621200 5732344 1620992 5732536 1621272 5732792 1621328 5732344 +1621272 5732792 1621048 5732784 1621288 5732832 1621632 5732520 +1621328 5732344 1621200 5732344 1621272 5732792 1621496 5732416 +1621288 5732832 1621480 5732944 1621632 5732520 1621272 5732792 +1621480 5732944 1621752 5732672 1621632 5732520 1621272 5732792 +1621632 5732520 1621496 5732416 1621272 5732792 1621480 5732944 +1621288 5732832 1621368 5732912 1621480 5732944 1621272 5732792 +1621288 5732832 1621368 5732912 1621272 5732792 1621048 5732784 +1621368 5732912 1621464 5732944 1621480 5732944 1621272 5732792 +1621480 5732944 1621632 5732520 1621272 5732792 1621368 5732912 +1621496 5732416 1621288 5732752 1621272 5732792 1621632 5732520 +1621272 5732792 1621480 5732944 1621632 5732520 1621288 5732752 +1621480 5732944 1621752 5732672 1621632 5732520 1621288 5732752 +1621632 5732520 1621496 5732416 1621288 5732752 1621480 5732944 +1621288 5732752 1621328 5732344 1621272 5732792 1621480 5732944 +1621496 5732416 1621328 5732344 1621288 5732752 1621632 5732520 +1621272 5732792 1621288 5732752 1621328 5732344 1621200 5732344 +1621272 5732792 1621480 5732944 1621288 5732752 1621200 5732344 +1621272 5732792 1621288 5732752 1621200 5732344 1620992 5732536 +1621200 5732344 1621048 5732416 1620992 5732536 1621288 5732752 +1621200 5732344 1621096 5732376 1621048 5732416 1621288 5732752 +1621048 5732416 1620992 5732536 1621288 5732752 1621096 5732376 +1621272 5732792 1621480 5732944 1621288 5732752 1620992 5732536 +1620992 5732536 1621272 5732792 1621288 5732752 1621048 5732416 +1621288 5732752 1621496 5732416 1621328 5732344 1621200 5732344 +1621272 5732792 1621288 5732752 1620992 5732536 1621008 5732664 +1621272 5732792 1621288 5732752 1621008 5732664 1621032 5732744 +1621272 5732792 1621480 5732944 1621288 5732752 1621032 5732744 +1621288 5732752 1621048 5732416 1620992 5732536 1621008 5732664 +1621272 5732792 1621288 5732752 1621032 5732744 1621048 5732784 +1621288 5732752 1621008 5732664 1621032 5732744 1621048 5732784 +1621272 5732792 1621480 5732944 1621288 5732752 1621048 5732784 +1621272 5732792 1621288 5732752 1621048 5732784 1621288 5732832 +1621288 5732752 1620992 5732536 1621008 5732664 1621032 5732744 +1621048 5732416 1621008 5732472 1620992 5732536 1621288 5732752 +1621288 5732752 1621328 5732344 1621200 5732344 1621096 5732376 +1621272 5732792 1621368 5732912 1621480 5732944 1621288 5732752 +1621480 5732944 1621632 5732520 1621288 5732752 1621368 5732912 +1621272 5732792 1621288 5732832 1621368 5732912 1621288 5732752 +1621272 5732792 1621288 5732832 1621288 5732752 1621048 5732784 +1621368 5732912 1621464 5732944 1621480 5732944 1621288 5732752 +1621368 5732912 1621480 5732944 1621288 5732752 1621288 5732832 +1621632 5732520 1621384 5732736 1621480 5732944 1621752 5732672 +1621480 5732944 1621384 5732736 1621288 5732752 1621368 5732912 +1621480 5732944 1621776 5732752 1621752 5732672 1621384 5732736 +1621752 5732672 1621632 5732520 1621384 5732736 1621776 5732752 +1621480 5732944 1621800 5732912 1621776 5732752 1621384 5732736 +1621288 5732752 1621384 5732736 1621632 5732520 1621496 5732416 +1621384 5732736 1621496 5732416 1621288 5732752 1621368 5732912 +1621288 5732752 1621384 5732736 1621496 5732416 1621328 5732344 +1621384 5732736 1621632 5732520 1621496 5732416 1621328 5732344 +1621288 5732752 1621384 5732736 1621328 5732344 1621200 5732344 +1621288 5732752 1621368 5732912 1621384 5732736 1621328 5732344 +1621632 5732520 1621496 5732416 1621384 5732736 1621752 5732672 +1621384 5732736 1621368 5732912 1621480 5732944 1621776 5732752 +1621480 5732944 1621384 5732736 1621368 5732912 1621464 5732944 +1621384 5732736 1621288 5732752 1621368 5732912 1621464 5732944 +1621480 5732944 1621776 5732752 1621384 5732736 1621464 5732944 +1621288 5732752 1621288 5732832 1621368 5732912 1621384 5732736 +1621368 5732912 1621464 5732944 1621384 5732736 1621288 5732832 +1621288 5732752 1621272 5732792 1621288 5732832 1621384 5732736 +1621288 5732752 1621288 5732832 1621384 5732736 1621328 5732344 +1621384 5732736 1621440 5732744 1621776 5732752 1621752 5732672 +1621384 5732736 1621440 5732744 1621752 5732672 1621632 5732520 +1621440 5732744 1621776 5732752 1621752 5732672 1621632 5732520 +1621776 5732752 1621440 5732744 1621480 5732944 1621800 5732912 +1621440 5732744 1621480 5732944 1621776 5732752 1621752 5732672 +1621384 5732736 1621440 5732744 1621632 5732520 1621496 5732416 +1621440 5732744 1621752 5732672 1621632 5732520 1621496 5732416 +1621384 5732736 1621440 5732744 1621496 5732416 1621328 5732344 +1621384 5732736 1621480 5732944 1621440 5732744 1621496 5732416 +1621480 5732944 1621440 5732744 1621384 5732736 1621464 5732944 +1621480 5732944 1621776 5732752 1621440 5732744 1621464 5732944 +1621440 5732744 1621496 5732416 1621384 5732736 1621464 5732944 +1621384 5732736 1621368 5732912 1621464 5732944 1621440 5732744 +1621384 5732736 1621288 5732832 1621368 5732912 1621440 5732744 +1621384 5732736 1621368 5732912 1621440 5732744 1621496 5732416 +1621464 5732944 1621480 5732944 1621440 5732744 1621368 5732912 +1621776 5732752 1621552 5732824 1621480 5732944 1621800 5732912 +1621552 5732824 1621440 5732744 1621480 5732944 1621800 5732912 +1621440 5732744 1621552 5732824 1621776 5732752 1621752 5732672 +1621440 5732744 1621552 5732824 1621752 5732672 1621632 5732520 +1621440 5732744 1621552 5732824 1621632 5732520 1621496 5732416 +1621552 5732824 1621776 5732752 1621752 5732672 1621632 5732520 +1621440 5732744 1621480 5732944 1621552 5732824 1621632 5732520 +1621480 5732944 1621552 5732824 1621440 5732744 1621464 5732944 +1621480 5732944 1621800 5732912 1621552 5732824 1621464 5732944 +1621552 5732824 1621632 5732520 1621440 5732744 1621464 5732944 +1621776 5732752 1621752 5732672 1621552 5732824 1621800 5732912 +1621440 5732744 1621368 5732912 1621464 5732944 1621552 5732824 +1621480 5732944 1621808 5733136 1621800 5732912 1621552 5732824 +1621552 5732824 1621568 5732848 1621800 5732912 1621776 5732752 +1621480 5732944 1621568 5732848 1621552 5732824 1621464 5732944 +1621568 5732848 1621480 5732944 1621800 5732912 1621776 5732752 +1621552 5732824 1621568 5732848 1621776 5732752 1621752 5732672 +1621552 5732824 1621480 5732944 1621568 5732848 1621776 5732752 +1621800 5732912 1621568 5732848 1621480 5732944 1621808 5733136 +1621480 5732944 1621552 5732912 1621568 5732848 1621552 5732824 +1621480 5732944 1621800 5732912 1621552 5732912 1621552 5732824 +1621552 5732912 1621800 5732912 1621568 5732848 1621552 5732824 +1621480 5732944 1621552 5732912 1621552 5732824 1621464 5732944 +1621568 5732848 1621552 5732912 1621800 5732912 1621776 5732752 +1621800 5732912 1621552 5732912 1621480 5732944 1621808 5733136 +1621800 5732912 1621568 5732848 1621552 5732912 1621808 5733136 +1621552 5732912 1621552 5732824 1621480 5732944 1621808 5733136 +1621480 5732944 1621616 5733232 1621808 5733136 1621552 5732912 +1621616 5733232 1621712 5733232 1621808 5733136 1621552 5732912 +1621480 5732944 1621616 5733232 1621552 5732912 1621552 5732824 +1621808 5733136 1621800 5732912 1621552 5732912 1621616 5733232 +1621480 5732944 1621440 5733160 1621616 5733232 1621552 5732912 +1629928 5726696 1630632 5743536 1631096 5748624 1629944 5726624 +1629928 5726696 1630592 5747248 1630632 5743536 1629944 5726624 +1630632 5743536 1630592 5747248 1631096 5748624 1629944 5726624 +1631096 5748624 1631896 5750984 1629944 5726624 1630632 5743536 +1631096 5748624 1631896 5750984 1630632 5743536 1630592 5747248 +1629944 5726624 1629928 5726696 1630632 5743536 1631896 5750984 +1631096 5748624 1631808 5750832 1631896 5750984 1630632 5743536 +1630592 5747248 1630632 5743536 1629928 5726696 1628320 5743048 +1630592 5747248 1630632 5743536 1628320 5743048 1630456 5747104 +1629928 5726696 1628304 5743016 1628320 5743048 1630632 5743536 +1629928 5726696 1629872 5726768 1628304 5743016 1630632 5743536 +1628304 5743016 1628320 5743048 1630632 5743536 1629872 5726768 +1630632 5743536 1629944 5726624 1629928 5726696 1629872 5726768 +1629872 5726768 1629776 5726856 1628304 5743016 1630632 5743536 +1629872 5726768 1629776 5726856 1630632 5743536 1629928 5726696 +1628304 5743016 1628320 5743048 1630632 5743536 1629776 5726856 +1630592 5747248 1630632 5743536 1630456 5747104 1630544 5747200 +1630632 5743536 1628304 5743016 1628320 5743048 1630456 5747104 +1631096 5748624 1630632 5743536 1630592 5747248 1631072 5748576 +1631896 5750984 1751256 5699792 1629944 5726624 1630632 5743536 +1629944 5726624 1629928 5726696 1630632 5743536 1751256 5699792 +1631896 5750984 1751256 5699792 1630632 5743536 1631096 5748624 +1751256 5699792 1629944 5726576 1629944 5726624 1630632 5743536 +1631896 5750984 1631920 5751080 1751256 5699792 1630632 5743536 +1631896 5750984 1631920 5751080 1630632 5743536 1631096 5748624 +1631920 5751080 1760125 5760125 1751256 5699792 1630632 5743536 +1751256 5699792 1629944 5726624 1630632 5743536 1631920 5751080 +1630592 5747248 1631096 5748624 1630632 5743536 1630456 5747104 +1629776 5726856 1628272 5742976 1628304 5743016 1630632 5743536 +1628304 5743016 1628320 5743048 1630632 5743536 1628272 5742976 +1629776 5726856 1628272 5742976 1630632 5743536 1629872 5726768 +1629776 5726856 1629584 5726976 1628272 5742976 1630632 5743536 +1629776 5726856 1629584 5726976 1630632 5743536 1629872 5726768 +1628272 5742976 1628304 5743016 1630632 5743536 1629584 5726976 +1628320 5743048 1630416 5747064 1630456 5747104 1630632 5743536 +1630456 5747104 1630592 5747248 1630632 5743536 1630416 5747064 +1628320 5743048 1630368 5747016 1630416 5747064 1630632 5743536 +1628320 5743048 1630328 5746984 1630368 5747016 1630632 5743536 +1630368 5747016 1630416 5747064 1630632 5743536 1630328 5746984 +1628320 5743048 1630328 5746984 1630632 5743536 1628304 5743016 +1628320 5743048 1628320 5743088 1630328 5746984 1630632 5743536 +1628320 5743088 1628320 5743136 1630328 5746984 1630632 5743536 +1630328 5746984 1630368 5747016 1630632 5743536 1628320 5743136 +1628320 5743136 1630280 5746960 1630328 5746984 1630632 5743536 +1628320 5743136 1630280 5746960 1630632 5743536 1628320 5743088 +1630328 5746984 1630368 5747016 1630632 5743536 1630280 5746960 +1628320 5743136 1628288 5743232 1630280 5746960 1630632 5743536 +1628320 5743136 1628288 5743232 1630632 5743536 1628320 5743088 +1628288 5743232 1630192 5746944 1630280 5746960 1630632 5743536 +1628288 5743232 1628088 5745496 1630192 5746944 1630632 5743536 +1630192 5746944 1630280 5746960 1630632 5743536 1628088 5745496 +1628288 5743232 1628064 5745440 1628088 5745496 1630632 5743536 +1628088 5745496 1630192 5746944 1630632 5743536 1628064 5745440 +1628088 5745496 1628104 5745544 1630192 5746944 1630632 5743536 +1628104 5745544 1630128 5746960 1630192 5746944 1630632 5743536 +1630192 5746944 1630280 5746960 1630632 5743536 1628104 5745544 +1628088 5745496 1628104 5745544 1630632 5743536 1628064 5745440 +1630280 5746960 1630328 5746984 1630632 5743536 1630192 5746944 +1628288 5743232 1628064 5745440 1630632 5743536 1628320 5743136 +1628288 5743232 1628224 5743288 1628064 5745440 1630632 5743536 +1628320 5743048 1628320 5743088 1630632 5743536 1628304 5743016 +1628320 5743088 1628320 5743136 1630632 5743536 1628320 5743048 +1630416 5747064 1630456 5747104 1630632 5743536 1630368 5747016 +1629584 5726976 1628168 5742888 1628272 5742976 1630632 5743536 +1629584 5726976 1621808 5733136 1628168 5742888 1630632 5743536 +1628168 5742888 1628224 5742936 1628272 5742976 1630632 5743536 +1628272 5742976 1628304 5743016 1630632 5743536 1628224 5742936 +1629584 5726976 1628168 5742888 1630632 5743536 1629776 5726856 +1628168 5742888 1628224 5742936 1630632 5743536 1629584 5726976 +1751256 5699792 1630864 5743768 1631920 5751080 1760125 5760125 +1630632 5743536 1630864 5743768 1751256 5699792 1629944 5726624 +1630632 5743536 1631920 5751080 1630864 5743768 1629944 5726624 +1630632 5743536 1630864 5743768 1629944 5726624 1629928 5726696 +1630632 5743536 1630864 5743768 1629928 5726696 1629872 5726768 +1630632 5743536 1630864 5743768 1629872 5726768 1629776 5726856 +1630632 5743536 1631920 5751080 1630864 5743768 1629872 5726768 +1630864 5743768 1629944 5726624 1629928 5726696 1629872 5726768 +1751256 5699792 1629944 5726576 1629944 5726624 1630864 5743768 +1630864 5743768 1751256 5699792 1629944 5726624 1629928 5726696 +1631920 5751080 1630864 5743768 1630632 5743536 1631896 5750984 +1630864 5743768 1629872 5726768 1630632 5743536 1631896 5750984 +1630632 5743536 1631096 5748624 1631896 5750984 1630864 5743768 +1630632 5743536 1630592 5747248 1631096 5748624 1630864 5743768 +1630632 5743536 1630592 5747248 1630864 5743768 1629872 5726768 +1631096 5748624 1631896 5750984 1630864 5743768 1630592 5747248 +1631096 5748624 1631808 5750832 1631896 5750984 1630864 5743768 +1631920 5751080 1751256 5699792 1630864 5743768 1631896 5750984 +1630592 5747248 1631072 5748576 1631096 5748624 1630864 5743768 +1630592 5747248 1631072 5748576 1630864 5743768 1630632 5743536 +1631096 5748624 1631896 5750984 1630864 5743768 1631072 5748576 +1630592 5747248 1630592 5747288 1631072 5748576 1630864 5743768 +1631896 5750984 1631920 5751080 1630864 5743768 1631096 5748624 +1630632 5743536 1630456 5747104 1630592 5747248 1630864 5743768 +1630632 5743536 1630416 5747064 1630456 5747104 1630864 5743768 +1630592 5747248 1631072 5748576 1630864 5743768 1630456 5747104 +1630632 5743536 1630416 5747064 1630864 5743768 1629872 5726768 +1630456 5747104 1630544 5747200 1630592 5747248 1630864 5743768 +1630592 5747248 1631072 5748576 1630864 5743768 1630544 5747200 +1630456 5747104 1630544 5747200 1630864 5743768 1630416 5747064 +1630864 5743768 1631920 5751080 1751256 5699792 1629944 5726624 +1630632 5743536 1630368 5747016 1630416 5747064 1630864 5743768 +1630416 5747064 1630456 5747104 1630864 5743768 1630368 5747016 +1630632 5743536 1630368 5747016 1630864 5743768 1629872 5726768 +1630632 5743536 1630328 5746984 1630368 5747016 1630864 5743768 +1630632 5743536 1630328 5746984 1630864 5743768 1629872 5726768 +1630632 5743536 1630280 5746960 1630328 5746984 1630864 5743768 +1630632 5743536 1630280 5746960 1630864 5743768 1629872 5726768 +1630328 5746984 1630368 5747016 1630864 5743768 1630280 5746960 +1630632 5743536 1630192 5746944 1630280 5746960 1630864 5743768 +1630632 5743536 1630192 5746944 1630864 5743768 1629872 5726768 +1630632 5743536 1628104 5745544 1630192 5746944 1630864 5743768 +1630632 5743536 1628104 5745544 1630864 5743768 1629872 5726768 +1628104 5745544 1630128 5746960 1630192 5746944 1630864 5743768 +1630280 5746960 1630328 5746984 1630864 5743768 1630192 5746944 +1630632 5743536 1628088 5745496 1628104 5745544 1630864 5743768 +1630632 5743536 1628088 5745496 1630864 5743768 1629872 5726768 +1628104 5745544 1630192 5746944 1630864 5743768 1628088 5745496 +1630632 5743536 1628064 5745440 1628088 5745496 1630864 5743768 +1630632 5743536 1628064 5745440 1630864 5743768 1629872 5726768 +1630632 5743536 1628288 5743232 1628064 5745440 1630864 5743768 +1628088 5745496 1628104 5745544 1630864 5743768 1628064 5745440 +1630192 5746944 1630280 5746960 1630864 5743768 1628104 5745544 +1630368 5747016 1630416 5747064 1630864 5743768 1630328 5746984 +1630456 5747104 1630496 5747152 1630544 5747200 1630864 5743768 +1631920 5751080 1630952 5743928 1630864 5743768 1631896 5750984 +1630952 5743928 1751256 5699792 1630864 5743768 1631896 5750984 +1631920 5751080 1751256 5699792 1630952 5743928 1631896 5750984 +1751256 5699792 1630952 5743928 1631920 5751080 1760125 5760125 +1751256 5699792 1630952 5743928 1760125 5760125 1751376 5699848 +1631920 5751080 1631896 5751280 1760125 5760125 1630952 5743928 +1751256 5699792 1630864 5743768 1630952 5743928 1760125 5760125 +1630952 5743928 1631896 5750984 1631920 5751080 1760125 5760125 +1630864 5743768 1631096 5748624 1631896 5750984 1630952 5743928 +1630864 5743768 1631072 5748576 1631096 5748624 1630952 5743928 +1631096 5748624 1631808 5750832 1631896 5750984 1630952 5743928 +1630864 5743768 1631072 5748576 1630952 5743928 1751256 5699792 +1631896 5750984 1631920 5751080 1630952 5743928 1631096 5748624 +1630864 5743768 1630592 5747248 1631072 5748576 1630952 5743928 +1630864 5743768 1630544 5747200 1630592 5747248 1630952 5743928 +1631072 5748576 1631096 5748624 1630952 5743928 1630592 5747248 +1630864 5743768 1630456 5747104 1630544 5747200 1630952 5743928 +1630544 5747200 1630592 5747248 1630952 5743928 1630456 5747104 +1630864 5743768 1630456 5747104 1630952 5743928 1751256 5699792 +1630592 5747248 1630592 5747288 1631072 5748576 1630952 5743928 +1630592 5747248 1631072 5748576 1630952 5743928 1630544 5747200 +1631096 5748624 1631896 5750984 1630952 5743928 1631072 5748576 +1630864 5743768 1630416 5747064 1630456 5747104 1630952 5743928 +1630864 5743768 1630368 5747016 1630416 5747064 1630952 5743928 +1630456 5747104 1630544 5747200 1630952 5743928 1630416 5747064 +1630864 5743768 1630368 5747016 1630952 5743928 1751256 5699792 +1630416 5747064 1630456 5747104 1630952 5743928 1630368 5747016 +1630864 5743768 1630952 5743928 1751256 5699792 1629944 5726624 +1630864 5743768 1630368 5747016 1630952 5743928 1629944 5726624 +1630952 5743928 1760125 5760125 1751256 5699792 1629944 5726624 +1751256 5699792 1629944 5726576 1629944 5726624 1630952 5743928 +1630864 5743768 1630952 5743928 1629944 5726624 1629928 5726696 +1630864 5743768 1630952 5743928 1629928 5726696 1629872 5726768 +1630864 5743768 1630368 5747016 1630952 5743928 1629928 5726696 +1630952 5743928 1751256 5699792 1629944 5726624 1629928 5726696 +1630864 5743768 1630328 5746984 1630368 5747016 1630952 5743928 +1630368 5747016 1630416 5747064 1630952 5743928 1630328 5746984 +1630864 5743768 1630280 5746960 1630328 5746984 1630952 5743928 +1630864 5743768 1630192 5746944 1630280 5746960 1630952 5743928 +1630280 5746960 1630328 5746984 1630952 5743928 1630192 5746944 +1630864 5743768 1630192 5746944 1630952 5743928 1629928 5726696 +1630864 5743768 1628104 5745544 1630192 5746944 1630952 5743928 +1628104 5745544 1630128 5746960 1630192 5746944 1630952 5743928 +1630864 5743768 1628088 5745496 1628104 5745544 1630952 5743928 +1630192 5746944 1630280 5746960 1630952 5743928 1628104 5745544 +1630864 5743768 1628064 5745440 1628088 5745496 1630952 5743928 +1628088 5745496 1628104 5745544 1630952 5743928 1628064 5745440 +1630864 5743768 1630632 5743536 1628064 5745440 1630952 5743928 +1630632 5743536 1628288 5743232 1628064 5745440 1630952 5743928 +1628064 5745440 1628088 5745496 1630952 5743928 1630632 5743536 +1630864 5743768 1630632 5743536 1630952 5743928 1629928 5726696 +1628104 5745544 1630192 5746944 1630952 5743928 1628088 5745496 +1630328 5746984 1630368 5747016 1630952 5743928 1630280 5746960 +1630456 5747104 1630496 5747152 1630544 5747200 1630952 5743928 +1760125 5760125 1630992 5744048 1631920 5751080 1631896 5751280 +1631920 5751080 1630992 5744048 1630952 5743928 1631896 5750984 +1630952 5743928 1631096 5748624 1631896 5750984 1630992 5744048 +1631096 5748624 1631808 5750832 1631896 5750984 1630992 5744048 +1630992 5744048 1760125 5760125 1630952 5743928 1631096 5748624 +1631896 5750984 1631920 5751080 1630992 5744048 1631096 5748624 +1630952 5743928 1630992 5744048 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1630992 5744048 +1630952 5743928 1630992 5744048 1751256 5699792 1629944 5726624 +1630952 5743928 1631096 5748624 1630992 5744048 1629944 5726624 +1630992 5744048 1760125 5760125 1751256 5699792 1629944 5726624 +1751256 5699792 1629944 5726576 1629944 5726624 1630992 5744048 +1630952 5743928 1631072 5748576 1631096 5748624 1630992 5744048 +1630952 5743928 1630592 5747248 1631072 5748576 1630992 5744048 +1631096 5748624 1631896 5750984 1630992 5744048 1631072 5748576 +1630952 5743928 1630592 5747248 1630992 5744048 1629944 5726624 +1630592 5747248 1630592 5747288 1631072 5748576 1630992 5744048 +1630952 5743928 1630544 5747200 1630592 5747248 1630992 5744048 +1630952 5743928 1630456 5747104 1630544 5747200 1630992 5744048 +1630592 5747248 1631072 5748576 1630992 5744048 1630544 5747200 +1630952 5743928 1630416 5747064 1630456 5747104 1630992 5744048 +1630456 5747104 1630544 5747200 1630992 5744048 1630416 5747064 +1630952 5743928 1630416 5747064 1630992 5744048 1629944 5726624 +1630544 5747200 1630592 5747248 1630992 5744048 1630456 5747104 +1631072 5748576 1631096 5748624 1630992 5744048 1630592 5747248 +1630952 5743928 1630368 5747016 1630416 5747064 1630992 5744048 +1630952 5743928 1630328 5746984 1630368 5747016 1630992 5744048 +1630416 5747064 1630456 5747104 1630992 5744048 1630368 5747016 +1630952 5743928 1630328 5746984 1630992 5744048 1629944 5726624 +1630368 5747016 1630416 5747064 1630992 5744048 1630328 5746984 +1630952 5743928 1630992 5744048 1629944 5726624 1629928 5726696 +1630992 5744048 1631920 5751080 1760125 5760125 1751256 5699792 +1631920 5751080 1760125 5760125 1630992 5744048 1631896 5750984 +1630952 5743928 1630280 5746960 1630328 5746984 1630992 5744048 +1630328 5746984 1630368 5747016 1630992 5744048 1630280 5746960 +1630952 5743928 1630192 5746944 1630280 5746960 1630992 5744048 +1630952 5743928 1628104 5745544 1630192 5746944 1630992 5744048 +1630192 5746944 1630280 5746960 1630992 5744048 1628104 5745544 +1628104 5745544 1630128 5746960 1630192 5746944 1630992 5744048 +1630952 5743928 1628104 5745544 1630992 5744048 1629944 5726624 +1630952 5743928 1628088 5745496 1628104 5745544 1630992 5744048 +1630952 5743928 1628064 5745440 1628088 5745496 1630992 5744048 +1628104 5745544 1630192 5746944 1630992 5744048 1628088 5745496 +1630952 5743928 1630632 5743536 1628064 5745440 1630992 5744048 +1628064 5745440 1628088 5745496 1630992 5744048 1630632 5743536 +1630632 5743536 1628288 5743232 1628064 5745440 1630992 5744048 +1630952 5743928 1630864 5743768 1630632 5743536 1630992 5744048 +1630632 5743536 1628064 5745440 1630992 5744048 1630864 5743768 +1630952 5743928 1630864 5743768 1630992 5744048 1629944 5726624 +1628088 5745496 1628104 5745544 1630992 5744048 1628064 5745440 +1630280 5746960 1630328 5746984 1630992 5744048 1630192 5746944 +1630456 5747104 1630496 5747152 1630544 5747200 1630992 5744048 +1630592 5747248 1630976 5744216 1630992 5744048 1630544 5747200 +1630592 5747248 1631072 5748576 1630976 5744216 1630544 5747200 +1631072 5748576 1630976 5744216 1630592 5747248 1630592 5747288 +1630992 5744048 1630456 5747104 1630544 5747200 1630976 5744216 +1630992 5744048 1630416 5747064 1630456 5747104 1630976 5744216 +1630544 5747200 1630592 5747248 1630976 5744216 1630456 5747104 +1630992 5744048 1630368 5747016 1630416 5747064 1630976 5744216 +1630416 5747064 1630456 5747104 1630976 5744216 1630368 5747016 +1630456 5747104 1630544 5747200 1630976 5744216 1630416 5747064 +1630992 5744048 1630976 5744216 1631072 5748576 1631096 5748624 +1630992 5744048 1630976 5744216 1631096 5748624 1631896 5750984 +1631096 5748624 1631808 5750832 1631896 5750984 1630976 5744216 +1630992 5744048 1630976 5744216 1631896 5750984 1631920 5751080 +1630976 5744216 1631072 5748576 1631096 5748624 1631896 5750984 +1630992 5744048 1630328 5746984 1630368 5747016 1630976 5744216 +1630992 5744048 1630280 5746960 1630328 5746984 1630976 5744216 +1630368 5747016 1630416 5747064 1630976 5744216 1630328 5746984 +1630328 5746984 1630368 5747016 1630976 5744216 1630280 5746960 +1630976 5744216 1631896 5750984 1630992 5744048 1630280 5746960 +1630976 5744216 1630592 5747248 1631072 5748576 1631096 5748624 +1630992 5744048 1630192 5746944 1630280 5746960 1630976 5744216 +1630280 5746960 1630328 5746984 1630976 5744216 1630192 5746944 +1630992 5744048 1628104 5745544 1630192 5746944 1630976 5744216 +1628104 5745544 1630128 5746960 1630192 5746944 1630976 5744216 +1628104 5745544 1630128 5746960 1630976 5744216 1630992 5744048 +1628104 5745544 1628096 5745568 1630128 5746960 1630976 5744216 +1630992 5744048 1628088 5745496 1628104 5745544 1630976 5744216 +1628104 5745544 1630128 5746960 1630976 5744216 1628088 5745496 +1630992 5744048 1628064 5745440 1628088 5745496 1630976 5744216 +1630992 5744048 1630632 5743536 1628064 5745440 1630976 5744216 +1630632 5743536 1628288 5743232 1628064 5745440 1630976 5744216 +1628088 5745496 1628104 5745544 1630976 5744216 1628064 5745440 +1630992 5744048 1630864 5743768 1630632 5743536 1630976 5744216 +1630632 5743536 1628064 5745440 1630976 5744216 1630864 5743768 +1630992 5744048 1630952 5743928 1630864 5743768 1630976 5744216 +1630864 5743768 1630632 5743536 1630976 5744216 1630952 5743928 +1628064 5745440 1628088 5745496 1630976 5744216 1630632 5743536 +1630992 5744048 1630952 5743928 1630976 5744216 1631896 5750984 +1630192 5746944 1630280 5746960 1630976 5744216 1630128 5746960 +1630456 5747104 1630496 5747152 1630544 5747200 1630976 5744216 +1628104 5745544 1630944 5744304 1630976 5744216 1628088 5745496 +1628104 5745544 1630128 5746960 1630944 5744304 1628088 5745496 +1630976 5744216 1630944 5744304 1630128 5746960 1630192 5746944 +1630944 5744304 1628104 5745544 1630128 5746960 1630192 5746944 +1630128 5746960 1630944 5744304 1628104 5745544 1628096 5745568 +1630976 5744216 1628064 5745440 1628088 5745496 1630944 5744304 +1628088 5745496 1628104 5745544 1630944 5744304 1628064 5745440 +1630976 5744216 1630632 5743536 1628064 5745440 1630944 5744304 +1630976 5744216 1630864 5743768 1630632 5743536 1630944 5744304 +1630632 5743536 1628288 5743232 1628064 5745440 1630944 5744304 +1628064 5745440 1628088 5745496 1630944 5744304 1630632 5743536 +1630976 5744216 1630952 5743928 1630864 5743768 1630944 5744304 +1630864 5743768 1630632 5743536 1630944 5744304 1630952 5743928 +1630976 5744216 1630992 5744048 1630952 5743928 1630944 5744304 +1630632 5743536 1628064 5745440 1630944 5744304 1630864 5743768 +1630944 5744304 1630192 5746944 1630976 5744216 1630952 5743928 +1630976 5744216 1630944 5744304 1630192 5746944 1630280 5746960 +1630976 5744216 1630944 5744304 1630280 5746960 1630328 5746984 +1630944 5744304 1630128 5746960 1630192 5746944 1630280 5746960 +1630976 5744216 1630944 5744304 1630328 5746984 1630368 5747016 +1630944 5744304 1630280 5746960 1630328 5746984 1630368 5747016 +1630976 5744216 1630944 5744304 1630368 5747016 1630416 5747064 +1630976 5744216 1630944 5744304 1630416 5747064 1630456 5747104 +1630944 5744304 1630368 5747016 1630416 5747064 1630456 5747104 +1630976 5744216 1630944 5744304 1630456 5747104 1630544 5747200 +1630944 5744304 1630416 5747064 1630456 5747104 1630544 5747200 +1630976 5744216 1630944 5744304 1630544 5747200 1630592 5747248 +1630976 5744216 1630944 5744304 1630592 5747248 1631072 5748576 +1630944 5744304 1630544 5747200 1630592 5747248 1631072 5748576 +1630592 5747248 1630592 5747288 1631072 5748576 1630944 5744304 +1630944 5744304 1630456 5747104 1630544 5747200 1630592 5747248 +1630944 5744304 1630328 5746984 1630368 5747016 1630416 5747064 +1630976 5744216 1630944 5744304 1631072 5748576 1631096 5748624 +1630944 5744304 1630592 5747248 1631072 5748576 1631096 5748624 +1630976 5744216 1630944 5744304 1631096 5748624 1631896 5750984 +1630976 5744216 1630952 5743928 1630944 5744304 1631096 5748624 +1630944 5744304 1630192 5746944 1630280 5746960 1630328 5746984 +1630456 5747104 1630496 5747152 1630544 5747200 1630944 5744304 +1630944 5744304 1630768 5744584 1630128 5746960 1630192 5746944 +1630944 5744304 1628104 5745544 1630768 5744584 1630192 5746944 +1628104 5745544 1630768 5744584 1630944 5744304 1628088 5745496 +1630768 5744584 1630192 5746944 1630944 5744304 1628088 5745496 +1630768 5744584 1628104 5745544 1630128 5746960 1630192 5746944 +1630944 5744304 1628064 5745440 1628088 5745496 1630768 5744584 +1630944 5744304 1628064 5745440 1630768 5744584 1630192 5746944 +1628088 5745496 1628104 5745544 1630768 5744584 1628064 5745440 +1630944 5744304 1630768 5744584 1630192 5746944 1630280 5746960 +1630768 5744584 1630128 5746960 1630192 5746944 1630280 5746960 +1630944 5744304 1628064 5745440 1630768 5744584 1630280 5746960 +1630128 5746960 1630768 5744584 1628104 5745544 1628096 5745568 +1630944 5744304 1630632 5743536 1628064 5745440 1630768 5744584 +1630944 5744304 1630632 5743536 1630768 5744584 1630280 5746960 +1628064 5745440 1628088 5745496 1630768 5744584 1630632 5743536 +1630632 5743536 1628288 5743232 1628064 5745440 1630768 5744584 +1628064 5745440 1628088 5745496 1630768 5744584 1628288 5743232 +1630632 5743536 1628288 5743232 1630768 5744584 1630944 5744304 +1628104 5745544 1630128 5746960 1630768 5744584 1628088 5745496 +1630944 5744304 1630864 5743768 1630632 5743536 1630768 5744584 +1630944 5744304 1630864 5743768 1630768 5744584 1630280 5746960 +1630944 5744304 1630952 5743928 1630864 5743768 1630768 5744584 +1630632 5743536 1628288 5743232 1630768 5744584 1630864 5743768 +1630632 5743536 1628320 5743136 1628288 5743232 1630768 5744584 +1628288 5743232 1628224 5743288 1628064 5745440 1630768 5744584 +1628064 5745440 1628088 5745496 1630768 5744584 1628224 5743288 +1628288 5743232 1628224 5743288 1630768 5744584 1630632 5743536 +1628288 5743232 1628240 5743264 1628224 5743288 1630768 5744584 +1628224 5743288 1628032 5745400 1628064 5745440 1630768 5744584 +1628224 5743288 1627880 5745216 1628032 5745400 1630768 5744584 +1628064 5745440 1628088 5745496 1630768 5744584 1628032 5745400 +1628224 5743288 1628032 5745400 1630768 5744584 1628288 5743232 +1630944 5744304 1630768 5744584 1630280 5746960 1630328 5746984 +1630944 5744304 1630864 5743768 1630768 5744584 1630328 5746984 +1630944 5744304 1630768 5744584 1630328 5746984 1630368 5747016 +1630944 5744304 1630864 5743768 1630768 5744584 1630368 5747016 +1630768 5744584 1630192 5746944 1630280 5746960 1630328 5746984 +1630944 5744304 1630768 5744584 1630368 5747016 1630416 5747064 +1630944 5744304 1630864 5743768 1630768 5744584 1630416 5747064 +1630768 5744584 1630328 5746984 1630368 5747016 1630416 5747064 +1630944 5744304 1630768 5744584 1630416 5747064 1630456 5747104 +1630944 5744304 1630864 5743768 1630768 5744584 1630456 5747104 +1630944 5744304 1630768 5744584 1630456 5747104 1630544 5747200 +1630944 5744304 1630864 5743768 1630768 5744584 1630544 5747200 +1630768 5744584 1630416 5747064 1630456 5747104 1630544 5747200 +1630944 5744304 1630768 5744584 1630544 5747200 1630592 5747248 +1630944 5744304 1630864 5743768 1630768 5744584 1630592 5747248 +1630768 5744584 1630456 5747104 1630544 5747200 1630592 5747248 +1630944 5744304 1630768 5744584 1630592 5747248 1631072 5748576 +1630768 5744584 1630368 5747016 1630416 5747064 1630456 5747104 +1630768 5744584 1630280 5746960 1630328 5746984 1630368 5747016 +1630456 5747104 1630496 5747152 1630544 5747200 1630768 5744584 +1630768 5744584 1630760 5744656 1630544 5747200 1630592 5747248 +1630456 5747104 1630760 5744656 1630768 5744584 1630416 5747064 +1630768 5744584 1630416 5747064 1630760 5744656 1630592 5747248 +1630760 5744656 1630456 5747104 1630544 5747200 1630592 5747248 +1630456 5747104 1630544 5747200 1630760 5744656 1630416 5747064 +1630768 5744584 1630760 5744656 1630592 5747248 1630944 5744304 +1630760 5744656 1630544 5747200 1630592 5747248 1630944 5744304 +1630592 5747248 1631072 5748576 1630944 5744304 1630760 5744656 +1630768 5744584 1630416 5747064 1630760 5744656 1630944 5744304 +1630768 5744584 1630368 5747016 1630416 5747064 1630760 5744656 +1630768 5744584 1630328 5746984 1630368 5747016 1630760 5744656 +1630416 5747064 1630456 5747104 1630760 5744656 1630368 5747016 +1630768 5744584 1630328 5746984 1630760 5744656 1630944 5744304 +1630368 5747016 1630416 5747064 1630760 5744656 1630328 5746984 +1630768 5744584 1630280 5746960 1630328 5746984 1630760 5744656 +1630328 5746984 1630368 5747016 1630760 5744656 1630280 5746960 +1630768 5744584 1630192 5746944 1630280 5746960 1630760 5744656 +1630768 5744584 1630128 5746960 1630192 5746944 1630760 5744656 +1630768 5744584 1628104 5745544 1630128 5746960 1630760 5744656 +1630128 5746960 1630192 5746944 1630760 5744656 1628104 5745544 +1630192 5746944 1630280 5746960 1630760 5744656 1630128 5746960 +1628104 5745544 1628096 5745568 1630128 5746960 1630760 5744656 +1630768 5744584 1628104 5745544 1630760 5744656 1630944 5744304 +1630768 5744584 1628088 5745496 1628104 5745544 1630760 5744656 +1630768 5744584 1628064 5745440 1628088 5745496 1630760 5744656 +1628104 5745544 1630128 5746960 1630760 5744656 1628088 5745496 +1630768 5744584 1628032 5745400 1628064 5745440 1630760 5744656 +1628064 5745440 1628088 5745496 1630760 5744656 1628032 5745400 +1630768 5744584 1628032 5745400 1630760 5744656 1630944 5744304 +1628088 5745496 1628104 5745544 1630760 5744656 1628064 5745440 +1630768 5744584 1628224 5743288 1628032 5745400 1630760 5744656 +1630280 5746960 1630328 5746984 1630760 5744656 1630192 5746944 +1630544 5747200 1630760 5744656 1630456 5747104 1630496 5747152 +1630592 5747248 1630776 5744688 1630760 5744656 1630544 5747200 +1630944 5744304 1630776 5744688 1630592 5747248 1631072 5748576 +1630760 5744656 1630456 5747104 1630544 5747200 1630776 5744688 +1630544 5747200 1630592 5747248 1630776 5744688 1630456 5747104 +1630776 5744688 1630944 5744304 1630760 5744656 1630456 5747104 +1630760 5744656 1630416 5747064 1630456 5747104 1630776 5744688 +1630760 5744656 1630368 5747016 1630416 5747064 1630776 5744688 +1630456 5747104 1630544 5747200 1630776 5744688 1630416 5747064 +1630760 5744656 1630368 5747016 1630776 5744688 1630944 5744304 +1630416 5747064 1630456 5747104 1630776 5744688 1630368 5747016 +1630592 5747248 1630944 5744304 1630776 5744688 1630544 5747200 +1630760 5744656 1630776 5744688 1630944 5744304 1630768 5744584 +1630760 5744656 1630368 5747016 1630776 5744688 1630768 5744584 +1630776 5744688 1630592 5747248 1630944 5744304 1630768 5744584 +1630760 5744656 1630328 5746984 1630368 5747016 1630776 5744688 +1630760 5744656 1630280 5746960 1630328 5746984 1630776 5744688 +1630368 5747016 1630416 5747064 1630776 5744688 1630328 5746984 +1630760 5744656 1630280 5746960 1630776 5744688 1630768 5744584 +1630328 5746984 1630368 5747016 1630776 5744688 1630280 5746960 +1630760 5744656 1630192 5746944 1630280 5746960 1630776 5744688 +1630280 5746960 1630328 5746984 1630776 5744688 1630192 5746944 +1630760 5744656 1630128 5746960 1630192 5746944 1630776 5744688 +1630760 5744656 1628104 5745544 1630128 5746960 1630776 5744688 +1630760 5744656 1628088 5745496 1628104 5745544 1630776 5744688 +1630128 5746960 1630192 5746944 1630776 5744688 1628104 5745544 +1628104 5745544 1628096 5745568 1630128 5746960 1630776 5744688 +1630760 5744656 1628104 5745544 1630776 5744688 1630768 5744584 +1630192 5746944 1630280 5746960 1630776 5744688 1630128 5746960 +1630456 5747104 1630496 5747152 1630544 5747200 1630776 5744688 +1630944 5744304 1630824 5744752 1630592 5747248 1631072 5748576 +1630944 5744304 1630824 5744752 1631072 5748576 1631096 5748624 +1630824 5744752 1630592 5747248 1631072 5748576 1631096 5748624 +1630776 5744688 1630824 5744752 1630944 5744304 1630768 5744584 +1630776 5744688 1630592 5747248 1630824 5744752 1630768 5744584 +1630592 5747248 1630824 5744752 1630776 5744688 1630544 5747200 +1630776 5744688 1630456 5747104 1630544 5747200 1630824 5744752 +1630776 5744688 1630416 5747064 1630456 5747104 1630824 5744752 +1630456 5747104 1630544 5747200 1630824 5744752 1630416 5747064 +1630776 5744688 1630368 5747016 1630416 5747064 1630824 5744752 +1630776 5744688 1630328 5746984 1630368 5747016 1630824 5744752 +1630416 5747064 1630456 5747104 1630824 5744752 1630368 5747016 +1630368 5747016 1630416 5747064 1630824 5744752 1630328 5746984 +1630824 5744752 1630768 5744584 1630776 5744688 1630328 5746984 +1630544 5747200 1630592 5747248 1630824 5744752 1630456 5747104 +1630944 5744304 1630768 5744584 1630824 5744752 1631096 5748624 +1630592 5747248 1630592 5747288 1631072 5748576 1630824 5744752 +1630776 5744688 1630824 5744752 1630768 5744584 1630760 5744656 +1630776 5744688 1630280 5746960 1630328 5746984 1630824 5744752 +1630776 5744688 1630192 5746944 1630280 5746960 1630824 5744752 +1630328 5746984 1630368 5747016 1630824 5744752 1630280 5746960 +1630776 5744688 1630192 5746944 1630824 5744752 1630768 5744584 +1630280 5746960 1630328 5746984 1630824 5744752 1630192 5746944 +1630944 5744304 1630824 5744752 1631096 5748624 1630976 5744216 +1630824 5744752 1631072 5748576 1631096 5748624 1630976 5744216 +1630944 5744304 1630768 5744584 1630824 5744752 1630976 5744216 +1631096 5748624 1631896 5750984 1630976 5744216 1630824 5744752 +1630776 5744688 1630128 5746960 1630192 5746944 1630824 5744752 +1630192 5746944 1630280 5746960 1630824 5744752 1630128 5746960 +1630776 5744688 1628104 5745544 1630128 5746960 1630824 5744752 +1630776 5744688 1630128 5746960 1630824 5744752 1630768 5744584 +1630824 5744752 1630544 5747200 1630592 5747248 1631072 5748576 +1630456 5747104 1630496 5747152 1630544 5747200 1630824 5744752 +1631096 5748624 1630888 5744792 1630824 5744752 1631072 5748576 +1630824 5744752 1630592 5747248 1631072 5748576 1630888 5744792 +1631072 5748576 1631096 5748624 1630888 5744792 1630592 5747248 +1630888 5744792 1630976 5744216 1630824 5744752 1630592 5747248 +1630592 5747248 1630592 5747288 1631072 5748576 1630888 5744792 +1630976 5744216 1630888 5744792 1631096 5748624 1631896 5750984 +1630824 5744752 1630888 5744792 1630976 5744216 1630944 5744304 +1630824 5744752 1630888 5744792 1630944 5744304 1630768 5744584 +1630824 5744752 1630888 5744792 1630768 5744584 1630776 5744688 +1630824 5744752 1630592 5747248 1630888 5744792 1630768 5744584 +1630888 5744792 1630976 5744216 1630944 5744304 1630768 5744584 +1630824 5744752 1630544 5747200 1630592 5747248 1630888 5744792 +1630592 5747248 1631072 5748576 1630888 5744792 1630544 5747200 +1630824 5744752 1630456 5747104 1630544 5747200 1630888 5744792 +1630824 5744752 1630416 5747064 1630456 5747104 1630888 5744792 +1630824 5744752 1630368 5747016 1630416 5747064 1630888 5744792 +1630416 5747064 1630456 5747104 1630888 5744792 1630368 5747016 +1630824 5744752 1630328 5746984 1630368 5747016 1630888 5744792 +1630824 5744752 1630280 5746960 1630328 5746984 1630888 5744792 +1630368 5747016 1630416 5747064 1630888 5744792 1630328 5746984 +1630328 5746984 1630368 5747016 1630888 5744792 1630280 5746960 +1630456 5747104 1630544 5747200 1630888 5744792 1630416 5747064 +1630824 5744752 1630280 5746960 1630888 5744792 1630768 5744584 +1630824 5744752 1630192 5746944 1630280 5746960 1630888 5744792 +1630824 5744752 1630128 5746960 1630192 5746944 1630888 5744792 +1630280 5746960 1630328 5746984 1630888 5744792 1630192 5746944 +1630824 5744752 1630192 5746944 1630888 5744792 1630768 5744584 +1630544 5747200 1630592 5747248 1630888 5744792 1630456 5747104 +1630888 5744792 1631096 5748624 1630976 5744216 1630944 5744304 +1631096 5748624 1630976 5744216 1630888 5744792 1631072 5748576 +1630456 5747104 1630496 5747152 1630544 5747200 1630888 5744792 +1760125 5760125 1631168 5744784 1631920 5751080 1631896 5751280 +1630992 5744048 1631168 5744784 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1631168 5744784 +1630992 5744048 1631168 5744784 1751256 5699792 1629944 5726624 +1630992 5744048 1631168 5744784 1629944 5726624 1630952 5743928 +1751256 5699792 1629944 5726576 1629944 5726624 1631168 5744784 +1631168 5744784 1760125 5760125 1751256 5699792 1629944 5726624 +1631920 5751080 1631168 5744784 1630992 5744048 1631896 5750984 +1631920 5751080 1760125 5760125 1631168 5744784 1631896 5750984 +1630992 5744048 1630976 5744216 1631896 5750984 1631168 5744784 +1630976 5744216 1631096 5748624 1631896 5750984 1631168 5744784 +1631096 5748624 1631808 5750832 1631896 5750984 1631168 5744784 +1630976 5744216 1631096 5748624 1631168 5744784 1630992 5744048 +1630976 5744216 1630888 5744792 1631096 5748624 1631168 5744784 +1631096 5748624 1631896 5750984 1631168 5744784 1630888 5744792 +1630976 5744216 1630888 5744792 1631168 5744784 1630992 5744048 +1631896 5750984 1631920 5751080 1631168 5744784 1631096 5748624 +1630976 5744216 1630944 5744304 1630888 5744792 1631168 5744784 +1630976 5744216 1630944 5744304 1631168 5744784 1630992 5744048 +1630888 5744792 1631096 5748624 1631168 5744784 1630944 5744304 +1630944 5744304 1630768 5744584 1630888 5744792 1631168 5744784 +1630768 5744584 1630824 5744752 1630888 5744792 1631168 5744784 +1630888 5744792 1631096 5748624 1631168 5744784 1630768 5744584 +1630944 5744304 1630768 5744584 1631168 5744784 1630976 5744216 +1630992 5744048 1630976 5744216 1631168 5744784 1629944 5726624 +1630888 5744792 1631072 5748576 1631096 5748624 1631168 5744784 +1630888 5744792 1630592 5747248 1631072 5748576 1631168 5744784 +1630888 5744792 1630544 5747200 1630592 5747248 1631168 5744784 +1630592 5747248 1631072 5748576 1631168 5744784 1630544 5747200 +1631096 5748624 1631896 5750984 1631168 5744784 1631072 5748576 +1630592 5747248 1630592 5747288 1631072 5748576 1631168 5744784 +1630888 5744792 1630544 5747200 1631168 5744784 1630768 5744584 +1630888 5744792 1630456 5747104 1630544 5747200 1631168 5744784 +1630544 5747200 1630592 5747248 1631168 5744784 1630456 5747104 +1630888 5744792 1630416 5747064 1630456 5747104 1631168 5744784 +1630888 5744792 1630368 5747016 1630416 5747064 1631168 5744784 +1630888 5744792 1630328 5746984 1630368 5747016 1631168 5744784 +1630368 5747016 1630416 5747064 1631168 5744784 1630328 5746984 +1630888 5744792 1630280 5746960 1630328 5746984 1631168 5744784 +1630416 5747064 1630456 5747104 1631168 5744784 1630368 5747016 +1630888 5744792 1630328 5746984 1631168 5744784 1630768 5744584 +1630456 5747104 1630544 5747200 1631168 5744784 1630416 5747064 +1631072 5748576 1631096 5748624 1631168 5744784 1630592 5747248 +1631168 5744784 1631920 5751080 1760125 5760125 1751256 5699792 +1630456 5747104 1630496 5747152 1630544 5747200 1631168 5744784 +1631920 5751080 1631312 5744824 1631168 5744784 1631896 5750984 +1631312 5744824 1760125 5760125 1631168 5744784 1631896 5750984 +1631920 5751080 1760125 5760125 1631312 5744824 1631896 5750984 +1760125 5760125 1631312 5744824 1631920 5751080 1631896 5751280 +1631168 5744784 1631096 5748624 1631896 5750984 1631312 5744824 +1631168 5744784 1631096 5748624 1631312 5744824 1760125 5760125 +1631896 5750984 1631920 5751080 1631312 5744824 1631096 5748624 +1631096 5748624 1631808 5750832 1631896 5750984 1631312 5744824 +1631168 5744784 1631072 5748576 1631096 5748624 1631312 5744824 +1631168 5744784 1631072 5748576 1631312 5744824 1760125 5760125 +1631096 5748624 1631896 5750984 1631312 5744824 1631072 5748576 +1631168 5744784 1630592 5747248 1631072 5748576 1631312 5744824 +1631168 5744784 1630544 5747200 1630592 5747248 1631312 5744824 +1631168 5744784 1630544 5747200 1631312 5744824 1760125 5760125 +1631168 5744784 1630456 5747104 1630544 5747200 1631312 5744824 +1630544 5747200 1630592 5747248 1631312 5744824 1630456 5747104 +1631168 5744784 1630456 5747104 1631312 5744824 1760125 5760125 +1631072 5748576 1631096 5748624 1631312 5744824 1630592 5747248 +1630592 5747248 1630592 5747288 1631072 5748576 1631312 5744824 +1631168 5744784 1630416 5747064 1630456 5747104 1631312 5744824 +1631168 5744784 1630416 5747064 1631312 5744824 1760125 5760125 +1630456 5747104 1630544 5747200 1631312 5744824 1630416 5747064 +1631168 5744784 1630368 5747016 1630416 5747064 1631312 5744824 +1631168 5744784 1630368 5747016 1631312 5744824 1760125 5760125 +1631168 5744784 1630328 5746984 1630368 5747016 1631312 5744824 +1631168 5744784 1630328 5746984 1631312 5744824 1760125 5760125 +1631168 5744784 1630888 5744792 1630328 5746984 1631312 5744824 +1631168 5744784 1630888 5744792 1631312 5744824 1760125 5760125 +1630328 5746984 1630368 5747016 1631312 5744824 1630888 5744792 +1630888 5744792 1630280 5746960 1630328 5746984 1631312 5744824 +1630368 5747016 1630416 5747064 1631312 5744824 1630328 5746984 +1630416 5747064 1630456 5747104 1631312 5744824 1630368 5747016 +1630592 5747248 1631072 5748576 1631312 5744824 1630544 5747200 +1631168 5744784 1631312 5744824 1760125 5760125 1751256 5699792 +1631168 5744784 1630888 5744792 1631312 5744824 1751256 5699792 +1631312 5744824 1631920 5751080 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1631312 5744824 +1631168 5744784 1631312 5744824 1751256 5699792 1629944 5726624 +1631168 5744784 1630888 5744792 1631312 5744824 1629944 5726624 +1631168 5744784 1631312 5744824 1629944 5726624 1630992 5744048 +1631168 5744784 1630888 5744792 1631312 5744824 1630992 5744048 +1629944 5726624 1630952 5743928 1630992 5744048 1631312 5744824 +1630992 5744048 1631168 5744784 1631312 5744824 1630952 5743928 +1751256 5699792 1629944 5726576 1629944 5726624 1631312 5744824 +1629944 5726624 1629928 5726696 1630952 5743928 1631312 5744824 +1630952 5743928 1630992 5744048 1631312 5744824 1629928 5726696 +1629928 5726696 1630864 5743768 1630952 5743928 1631312 5744824 +1631312 5744824 1751256 5699792 1629944 5726624 1629928 5726696 +1631168 5744784 1631312 5744824 1630992 5744048 1630976 5744216 +1631168 5744784 1630888 5744792 1631312 5744824 1630976 5744216 +1631168 5744784 1631312 5744824 1630976 5744216 1630944 5744304 +1631168 5744784 1630888 5744792 1631312 5744824 1630944 5744304 +1631312 5744824 1630952 5743928 1630992 5744048 1630976 5744216 +1631168 5744784 1631312 5744824 1630944 5744304 1630768 5744584 +1631312 5744824 1630992 5744048 1630976 5744216 1630944 5744304 +1631312 5744824 1760125 5760125 1751256 5699792 1629944 5726624 +1630456 5747104 1630496 5747152 1630544 5747200 1631312 5744824 +1631312 5744824 1631312 5744920 1631896 5750984 1631920 5751080 +1631312 5744824 1631096 5748624 1631312 5744920 1631920 5751080 +1631312 5744824 1631312 5744920 1631920 5751080 1760125 5760125 +1631896 5750984 1631312 5744920 1631096 5748624 1631808 5750832 +1631312 5744920 1631096 5748624 1631896 5750984 1631920 5751080 +1631096 5748624 1631312 5744920 1631312 5744824 1631072 5748576 +1631312 5744920 1631920 5751080 1631312 5744824 1631072 5748576 +1631312 5744824 1630592 5747248 1631072 5748576 1631312 5744920 +1631312 5744824 1630592 5747248 1631312 5744920 1631920 5751080 +1630592 5747248 1630592 5747288 1631072 5748576 1631312 5744920 +1631096 5748624 1631896 5750984 1631312 5744920 1631072 5748576 +1631072 5748576 1631096 5748624 1631312 5744920 1630592 5747248 +1631312 5744824 1630544 5747200 1630592 5747248 1631312 5744920 +1631312 5744824 1630456 5747104 1630544 5747200 1631312 5744920 +1631312 5744824 1630456 5747104 1631312 5744920 1631920 5751080 +1631312 5744824 1630416 5747064 1630456 5747104 1631312 5744920 +1630456 5747104 1630544 5747200 1631312 5744920 1630416 5747064 +1631312 5744824 1630416 5747064 1631312 5744920 1631920 5751080 +1630592 5747248 1631072 5748576 1631312 5744920 1630544 5747200 +1631312 5744824 1630368 5747016 1630416 5747064 1631312 5744920 +1631312 5744824 1630368 5747016 1631312 5744920 1631920 5751080 +1630416 5747064 1630456 5747104 1631312 5744920 1630368 5747016 +1631312 5744824 1630328 5746984 1630368 5747016 1631312 5744920 +1631312 5744824 1630328 5746984 1631312 5744920 1631920 5751080 +1631312 5744824 1630888 5744792 1630328 5746984 1631312 5744920 +1631312 5744824 1630888 5744792 1631312 5744920 1631920 5751080 +1631312 5744824 1631168 5744784 1630888 5744792 1631312 5744920 +1631312 5744824 1631168 5744784 1631312 5744920 1631920 5751080 +1630888 5744792 1630328 5746984 1631312 5744920 1631168 5744784 +1630888 5744792 1630280 5746960 1630328 5746984 1631312 5744920 +1630888 5744792 1630280 5746960 1631312 5744920 1631168 5744784 +1630888 5744792 1630192 5746944 1630280 5746960 1631312 5744920 +1630328 5746984 1630368 5747016 1631312 5744920 1630280 5746960 +1630368 5747016 1630416 5747064 1631312 5744920 1630328 5746984 +1630544 5747200 1630592 5747248 1631312 5744920 1630456 5747104 +1630456 5747104 1630496 5747152 1630544 5747200 1631312 5744920 +1630888 5744792 1631256 5744952 1631312 5744920 1631168 5744784 +1630280 5746960 1631256 5744952 1630888 5744792 1630192 5746944 +1631312 5744920 1631312 5744824 1631168 5744784 1631256 5744952 +1631168 5744784 1630888 5744792 1631256 5744952 1631312 5744824 +1631312 5744920 1631256 5744952 1630280 5746960 1630328 5746984 +1631312 5744920 1631256 5744952 1630328 5746984 1630368 5747016 +1631256 5744952 1630280 5746960 1630328 5746984 1630368 5747016 +1631256 5744952 1630368 5747016 1631312 5744920 1631312 5744824 +1631256 5744952 1630888 5744792 1630280 5746960 1630328 5746984 +1630888 5744792 1630280 5746960 1631256 5744952 1631168 5744784 +1631312 5744920 1631256 5744952 1630368 5747016 1630416 5747064 +1631312 5744920 1631256 5744952 1630416 5747064 1630456 5747104 +1631312 5744920 1631256 5744952 1630456 5747104 1630544 5747200 +1631256 5744952 1630416 5747064 1630456 5747104 1630544 5747200 +1631256 5744952 1630328 5746984 1630368 5747016 1630416 5747064 +1631312 5744920 1631312 5744824 1631256 5744952 1630544 5747200 +1631256 5744952 1630368 5747016 1630416 5747064 1630456 5747104 +1631312 5744920 1631256 5744952 1630544 5747200 1630592 5747248 +1631256 5744952 1630456 5747104 1630544 5747200 1630592 5747248 +1631312 5744920 1631256 5744952 1630592 5747248 1631072 5748576 +1631312 5744920 1631312 5744824 1631256 5744952 1630592 5747248 +1630456 5747104 1630496 5747152 1630544 5747200 1631256 5744952 +1630280 5746960 1631136 5745000 1630888 5744792 1630192 5746944 +1631256 5744952 1631136 5745000 1630280 5746960 1630328 5746984 +1631256 5744952 1631136 5745000 1630328 5746984 1630368 5747016 +1631256 5744952 1631136 5745000 1630368 5747016 1630416 5747064 +1631136 5745000 1630328 5746984 1630368 5747016 1630416 5747064 +1631136 5745000 1630280 5746960 1630328 5746984 1630368 5747016 +1631256 5744952 1630888 5744792 1631136 5745000 1630416 5747064 +1630888 5744792 1630824 5744752 1630192 5746944 1631136 5745000 +1630888 5744792 1631136 5745000 1631256 5744952 1631168 5744784 +1631256 5744952 1631312 5744824 1631168 5744784 1631136 5745000 +1631136 5745000 1630416 5747064 1631256 5744952 1631168 5744784 +1630280 5746960 1630328 5746984 1631136 5745000 1630192 5746944 +1631136 5745000 1631168 5744784 1630888 5744792 1630192 5746944 +1631256 5744952 1631136 5745000 1630416 5747064 1630456 5747104 +1631256 5744952 1631136 5745000 1630456 5747104 1630544 5747200 +1631256 5744952 1631136 5745000 1630544 5747200 1630592 5747248 +1631136 5745000 1630456 5747104 1630544 5747200 1630592 5747248 +1631136 5745000 1630368 5747016 1630416 5747064 1630456 5747104 +1631256 5744952 1631168 5744784 1631136 5745000 1630592 5747248 +1631136 5745000 1630416 5747064 1630456 5747104 1630544 5747200 +1631256 5744952 1631136 5745000 1630592 5747248 1631312 5744920 +1630456 5747104 1630496 5747152 1630544 5747200 1631136 5745000 +1631136 5745000 1630904 5745040 1630192 5746944 1630280 5746960 +1630192 5746944 1630904 5745040 1630888 5744792 1630824 5744752 +1630192 5746944 1630904 5745040 1630824 5744752 1630128 5746960 +1630904 5745040 1631136 5745000 1630888 5744792 1630824 5744752 +1630904 5745040 1630888 5744792 1630824 5744752 1630128 5746960 +1630824 5744752 1630776 5744688 1630128 5746960 1630904 5745040 +1630128 5746960 1630192 5746944 1630904 5745040 1630776 5744688 +1630776 5744688 1628104 5745544 1630128 5746960 1630904 5745040 +1630776 5744688 1630760 5744656 1628104 5745544 1630904 5745040 +1630128 5746960 1630192 5746944 1630904 5745040 1628104 5745544 +1628104 5745544 1628096 5745568 1630128 5746960 1630904 5745040 +1630824 5744752 1630776 5744688 1630904 5745040 1630888 5744792 +1630776 5744688 1628104 5745544 1630904 5745040 1630824 5744752 +1631136 5745000 1630904 5745040 1630280 5746960 1630328 5746984 +1630904 5745040 1630192 5746944 1630280 5746960 1630328 5746984 +1631136 5745000 1630904 5745040 1630328 5746984 1630368 5747016 +1631136 5745000 1630904 5745040 1630368 5747016 1630416 5747064 +1630904 5745040 1630280 5746960 1630328 5746984 1630368 5747016 +1631136 5745000 1630888 5744792 1630904 5745040 1630368 5747016 +1630888 5744792 1630904 5745040 1631136 5745000 1631168 5744784 +1630904 5745040 1630128 5746960 1630192 5746944 1630280 5746960 +1628104 5745544 1630616 5745056 1630776 5744688 1630760 5744656 +1628104 5745544 1630616 5745056 1630760 5744656 1628088 5745496 +1630616 5745056 1630776 5744688 1630760 5744656 1628088 5745496 +1630904 5745040 1630616 5745056 1628104 5745544 1630128 5746960 +1630904 5745040 1630616 5745056 1630128 5746960 1630192 5746944 +1630616 5745056 1628104 5745544 1630128 5746960 1630192 5746944 +1628104 5745544 1628096 5745568 1630128 5746960 1630616 5745056 +1630904 5745040 1630776 5744688 1630616 5745056 1630192 5746944 +1628104 5745544 1630128 5746960 1630616 5745056 1628088 5745496 +1630616 5745056 1630904 5745040 1630776 5744688 1630760 5744656 +1630760 5744656 1628064 5745440 1628088 5745496 1630616 5745056 +1630760 5744656 1628064 5745440 1630616 5745056 1630776 5744688 +1630760 5744656 1628032 5745400 1628064 5745440 1630616 5745056 +1630760 5744656 1628032 5745400 1630616 5745056 1630776 5744688 +1628088 5745496 1628104 5745544 1630616 5745056 1628064 5745440 +1630760 5744656 1630768 5744584 1628032 5745400 1630616 5745056 +1630760 5744656 1630768 5744584 1630616 5745056 1630776 5744688 +1628032 5745400 1628064 5745440 1630616 5745056 1630768 5744584 +1628064 5745440 1628088 5745496 1630616 5745056 1628032 5745400 +1630768 5744584 1628224 5743288 1628032 5745400 1630616 5745056 +1628032 5745400 1628064 5745440 1630616 5745056 1628224 5743288 +1628224 5743288 1627880 5745216 1628032 5745400 1630616 5745056 +1630768 5744584 1628224 5743288 1630616 5745056 1630760 5744656 +1630768 5744584 1628288 5743232 1628224 5743288 1630616 5745056 +1630768 5744584 1628288 5743232 1630616 5745056 1630760 5744656 +1630768 5744584 1630632 5743536 1628288 5743232 1630616 5745056 +1628288 5743232 1628240 5743264 1628224 5743288 1630616 5745056 +1628224 5743288 1628032 5745400 1630616 5745056 1628288 5743232 +1630776 5744688 1630616 5745056 1630904 5745040 1630824 5744752 +1630616 5745056 1630192 5746944 1630904 5745040 1630824 5744752 +1630776 5744688 1630760 5744656 1630616 5745056 1630824 5744752 +1630904 5745040 1630888 5744792 1630824 5744752 1630616 5745056 +1630904 5745040 1630616 5745056 1630192 5746944 1630280 5746960 +1630616 5745056 1630128 5746960 1630192 5746944 1630280 5746960 +1630904 5745040 1630616 5745056 1630280 5746960 1630328 5746984 +1630904 5745040 1630824 5744752 1630616 5745056 1630328 5746984 +1630904 5745040 1630616 5745056 1630328 5746984 1630368 5747016 +1630616 5745056 1630192 5746944 1630280 5746960 1630328 5746984 +1630616 5745056 1630464 5745032 1628032 5745400 1628064 5745440 +1628032 5745400 1630464 5745032 1628224 5743288 1627880 5745216 +1630464 5745032 1628224 5743288 1628032 5745400 1628064 5745440 +1630616 5745056 1628224 5743288 1630464 5745032 1628064 5745440 +1630616 5745056 1630464 5745032 1628064 5745440 1628088 5745496 +1630464 5745032 1628032 5745400 1628064 5745440 1628088 5745496 +1630616 5745056 1630464 5745032 1628088 5745496 1628104 5745544 +1630616 5745056 1630464 5745032 1628104 5745544 1630128 5746960 +1630464 5745032 1628088 5745496 1628104 5745544 1630128 5746960 +1630616 5745056 1630464 5745032 1630128 5746960 1630192 5746944 +1630616 5745056 1630464 5745032 1630192 5746944 1630280 5746960 +1628104 5745544 1628096 5745568 1630128 5746960 1630464 5745032 +1630464 5745032 1628104 5745544 1630128 5746960 1630192 5746944 +1630616 5745056 1628224 5743288 1630464 5745032 1630192 5746944 +1630464 5745032 1628064 5745440 1628088 5745496 1628104 5745544 +1628224 5743288 1630464 5745032 1630616 5745056 1628288 5743232 +1628224 5743288 1628032 5745400 1630464 5745032 1628288 5743232 +1630464 5745032 1630192 5746944 1630616 5745056 1628288 5743232 +1628224 5743288 1630464 5745032 1628288 5743232 1628240 5743264 +1630616 5745056 1630768 5744584 1628288 5743232 1630464 5745032 +1630616 5745056 1630760 5744656 1630768 5744584 1630464 5745032 +1630616 5745056 1630776 5744688 1630760 5744656 1630464 5745032 +1630760 5744656 1630768 5744584 1630464 5745032 1630776 5744688 +1630768 5744584 1630632 5743536 1628288 5743232 1630464 5745032 +1630768 5744584 1630864 5743768 1630632 5743536 1630464 5745032 +1630616 5745056 1630776 5744688 1630464 5745032 1630192 5746944 +1630616 5745056 1630824 5744752 1630776 5744688 1630464 5745032 +1630632 5743536 1628320 5743136 1628288 5743232 1630464 5745032 +1630768 5744584 1630632 5743536 1630464 5745032 1630760 5744656 +1628288 5743232 1628224 5743288 1630464 5745032 1630632 5743536 +1628032 5745400 1630304 5744984 1628224 5743288 1627880 5745216 +1630464 5745032 1630304 5744984 1628032 5745400 1628064 5745440 +1630464 5745032 1630304 5744984 1628064 5745440 1628088 5745496 +1630304 5744984 1628032 5745400 1628064 5745440 1628088 5745496 +1630464 5745032 1628224 5743288 1630304 5744984 1628088 5745496 +1628224 5743288 1630304 5744984 1630464 5745032 1628288 5743232 +1630304 5744984 1628088 5745496 1630464 5745032 1628288 5743232 +1630304 5744984 1628224 5743288 1628032 5745400 1628064 5745440 +1628224 5743288 1630304 5744984 1628288 5743232 1628240 5743264 +1630464 5745032 1630304 5744984 1628088 5745496 1628104 5745544 +1630304 5744984 1628064 5745440 1628088 5745496 1628104 5745544 +1630464 5745032 1630304 5744984 1628104 5745544 1630128 5746960 +1630464 5745032 1628288 5743232 1630304 5744984 1630128 5746960 +1628104 5745544 1628096 5745568 1630128 5746960 1630304 5744984 +1630464 5745032 1630304 5744984 1630128 5746960 1630192 5746944 +1630304 5744984 1628104 5745544 1630128 5746960 1630192 5746944 +1630464 5745032 1628288 5743232 1630304 5744984 1630192 5746944 +1630464 5745032 1630304 5744984 1630192 5746944 1630616 5745056 +1630304 5744984 1628088 5745496 1628104 5745544 1630128 5746960 +1628224 5743288 1628032 5745400 1630304 5744984 1628288 5743232 +1630464 5745032 1630632 5743536 1628288 5743232 1630304 5744984 +1630464 5745032 1630632 5743536 1630304 5744984 1630192 5746944 +1628288 5743232 1628224 5743288 1630304 5744984 1630632 5743536 +1630464 5745032 1630768 5744584 1630632 5743536 1630304 5744984 +1630464 5745032 1630768 5744584 1630304 5744984 1630192 5746944 +1630768 5744584 1630864 5743768 1630632 5743536 1630304 5744984 +1630632 5743536 1628320 5743136 1628288 5743232 1630304 5744984 +1630464 5745032 1630760 5744656 1630768 5744584 1630304 5744984 +1630464 5745032 1630776 5744688 1630760 5744656 1630304 5744984 +1630464 5745032 1630760 5744656 1630304 5744984 1630192 5746944 +1630768 5744584 1630632 5743536 1630304 5744984 1630760 5744656 +1630632 5743536 1628288 5743232 1630304 5744984 1630768 5744584 +1628032 5745400 1630240 5744936 1628224 5743288 1627880 5745216 +1628032 5745400 1630240 5744936 1627880 5745216 1627984 5745352 +1630304 5744984 1630240 5744936 1628032 5745400 1628064 5745440 +1630304 5744984 1630240 5744936 1628064 5745440 1628088 5745496 +1630304 5744984 1630240 5744936 1628088 5745496 1628104 5745544 +1630240 5744936 1628064 5745440 1628088 5745496 1628104 5745544 +1630240 5744936 1628032 5745400 1628064 5745440 1628088 5745496 +1630304 5744984 1628224 5743288 1630240 5744936 1628104 5745544 +1628224 5743288 1627840 5745184 1627880 5745216 1630240 5744936 +1630304 5744984 1630240 5744936 1628104 5745544 1630128 5746960 +1630240 5744936 1628088 5745496 1628104 5745544 1630128 5746960 +1630304 5744984 1630240 5744936 1630128 5746960 1630192 5746944 +1630304 5744984 1628224 5743288 1630240 5744936 1630128 5746960 +1628104 5745544 1628096 5745568 1630128 5746960 1630240 5744936 +1628224 5743288 1630240 5744936 1630304 5744984 1628288 5743232 +1630304 5744984 1630632 5743536 1628288 5743232 1630240 5744936 +1630240 5744936 1630128 5746960 1630304 5744984 1630632 5743536 +1628224 5743288 1630240 5744936 1628288 5743232 1628240 5743264 +1630632 5743536 1628320 5743136 1628288 5743232 1630240 5744936 +1628288 5743232 1628224 5743288 1630240 5744936 1630632 5743536 +1628032 5745400 1628064 5745440 1630240 5744936 1627880 5745216 +1630240 5744936 1628288 5743232 1628224 5743288 1627880 5745216 +1630304 5744984 1630768 5744584 1630632 5743536 1630240 5744936 +1630632 5743536 1628288 5743232 1630240 5744936 1630768 5744584 +1630304 5744984 1630768 5744584 1630240 5744936 1630128 5746960 +1630304 5744984 1630760 5744656 1630768 5744584 1630240 5744936 +1630304 5744984 1630760 5744656 1630240 5744936 1630128 5746960 +1630768 5744584 1630864 5743768 1630632 5743536 1630240 5744936 +1630304 5744984 1630464 5745032 1630760 5744656 1630240 5744936 +1630768 5744584 1630632 5743536 1630240 5744936 1630760 5744656 +1630632 5743536 1630176 5744848 1630240 5744936 1630768 5744584 +1630632 5743536 1628288 5743232 1630176 5744848 1630768 5744584 +1630632 5743536 1630176 5744848 1630768 5744584 1630864 5743768 +1628288 5743232 1630176 5744848 1630632 5743536 1628320 5743136 +1630240 5744936 1630176 5744848 1628288 5743232 1628224 5743288 +1628288 5743232 1628240 5743264 1628224 5743288 1630176 5744848 +1630176 5744848 1628224 5743288 1630240 5744936 1630768 5744584 +1630240 5744936 1630176 5744848 1628224 5743288 1627880 5745216 +1630240 5744936 1630176 5744848 1627880 5745216 1628032 5745400 +1627880 5745216 1627984 5745352 1628032 5745400 1630176 5744848 +1628224 5743288 1627840 5745184 1627880 5745216 1630176 5744848 +1630176 5744848 1628288 5743232 1628224 5743288 1627880 5745216 +1630240 5744936 1630176 5744848 1628032 5745400 1628064 5745440 +1630176 5744848 1627880 5745216 1628032 5745400 1628064 5745440 +1630240 5744936 1630176 5744848 1628064 5745440 1628088 5745496 +1630240 5744936 1630176 5744848 1628088 5745496 1628104 5745544 +1630240 5744936 1630176 5744848 1628104 5745544 1630128 5746960 +1630176 5744848 1628064 5745440 1628088 5745496 1628104 5745544 +1630176 5744848 1628032 5745400 1628064 5745440 1628088 5745496 +1630240 5744936 1630768 5744584 1630176 5744848 1628104 5745544 +1630176 5744848 1628224 5743288 1627880 5745216 1628032 5745400 +1630176 5744848 1630632 5743536 1628288 5743232 1628224 5743288 +1630240 5744936 1630760 5744656 1630768 5744584 1630176 5744848 +1630768 5744584 1630632 5743536 1630176 5744848 1630760 5744656 +1630240 5744936 1630304 5744984 1630760 5744656 1630176 5744848 +1630240 5744936 1630760 5744656 1630176 5744848 1628104 5745544 +1630632 5743536 1630176 5744736 1630176 5744848 1630768 5744584 +1630176 5744848 1630760 5744656 1630768 5744584 1630176 5744736 +1630176 5744736 1628288 5743232 1630176 5744848 1630760 5744656 +1630768 5744584 1630632 5743536 1630176 5744736 1630760 5744656 +1630632 5743536 1628288 5743232 1630176 5744736 1630768 5744584 +1630632 5743536 1630176 5744736 1630768 5744584 1630864 5743768 +1630176 5744736 1630760 5744656 1630768 5744584 1630864 5743768 +1630632 5743536 1628288 5743232 1630176 5744736 1630864 5743768 +1630768 5744584 1630944 5744304 1630864 5743768 1630176 5744736 +1628288 5743232 1630176 5744736 1630632 5743536 1628320 5743136 +1630176 5744848 1630176 5744736 1628288 5743232 1628224 5743288 +1630176 5744848 1630760 5744656 1630176 5744736 1628224 5743288 +1630176 5744736 1630632 5743536 1628288 5743232 1628224 5743288 +1628288 5743232 1628240 5743264 1628224 5743288 1630176 5744736 +1630176 5744848 1630176 5744736 1628224 5743288 1627880 5745216 +1630176 5744848 1630760 5744656 1630176 5744736 1627880 5745216 +1628224 5743288 1627840 5745184 1627880 5745216 1630176 5744736 +1630176 5744848 1630176 5744736 1627880 5745216 1628032 5745400 +1630176 5744848 1630176 5744736 1628032 5745400 1628064 5745440 +1627880 5745216 1627984 5745352 1628032 5745400 1630176 5744736 +1630176 5744848 1630760 5744656 1630176 5744736 1628064 5745440 +1630176 5744736 1628224 5743288 1627880 5745216 1628032 5745400 +1630176 5744848 1630176 5744736 1628064 5745440 1628088 5745496 +1630176 5744736 1627880 5745216 1628032 5745400 1628064 5745440 +1630176 5744736 1628288 5743232 1628224 5743288 1627880 5745216 +1630176 5744848 1630240 5744936 1630760 5744656 1630176 5744736 +1630760 5744656 1630768 5744584 1630176 5744736 1630240 5744936 +1630176 5744848 1630240 5744936 1630176 5744736 1628064 5745440 +1630240 5744936 1630304 5744984 1630760 5744656 1630176 5744736 +1630760 5744656 1630768 5744584 1630176 5744736 1630304 5744984 +1630304 5744984 1630464 5745032 1630760 5744656 1630176 5744736 +1630464 5745032 1630776 5744688 1630760 5744656 1630176 5744736 +1630760 5744656 1630768 5744584 1630176 5744736 1630464 5745032 +1630304 5744984 1630464 5745032 1630176 5744736 1630240 5744936 +1630240 5744936 1630304 5744984 1630176 5744736 1630176 5744848 +1630768 5744584 1630248 5744704 1630176 5744736 1630760 5744656 +1630768 5744584 1630864 5743768 1630248 5744704 1630760 5744656 +1630176 5744736 1630464 5745032 1630760 5744656 1630248 5744704 +1630464 5745032 1630776 5744688 1630760 5744656 1630248 5744704 +1630760 5744656 1630768 5744584 1630248 5744704 1630464 5745032 +1630248 5744704 1630864 5743768 1630176 5744736 1630464 5745032 +1630176 5744736 1630248 5744704 1630864 5743768 1630632 5743536 +1630248 5744704 1630768 5744584 1630864 5743768 1630632 5743536 +1630176 5744736 1630464 5745032 1630248 5744704 1630632 5743536 +1630176 5744736 1630248 5744704 1630632 5743536 1628288 5743232 +1630864 5743768 1630248 5744704 1630768 5744584 1630944 5744304 +1630864 5743768 1630632 5743536 1630248 5744704 1630944 5744304 +1630248 5744704 1630760 5744656 1630768 5744584 1630944 5744304 +1630864 5743768 1630248 5744704 1630944 5744304 1630952 5743928 +1630176 5744736 1630304 5744984 1630464 5745032 1630248 5744704 +1630464 5745032 1630760 5744656 1630248 5744704 1630304 5744984 +1630176 5744736 1630304 5744984 1630248 5744704 1630632 5743536 +1630176 5744736 1630240 5744936 1630304 5744984 1630248 5744704 +1630176 5744736 1630240 5744936 1630248 5744704 1630632 5743536 +1630304 5744984 1630464 5745032 1630248 5744704 1630240 5744936 +1630176 5744736 1630176 5744848 1630240 5744936 1630248 5744704 +1630176 5744736 1630176 5744848 1630248 5744704 1630632 5743536 +1630240 5744936 1630304 5744984 1630248 5744704 1630176 5744848 +1630768 5744584 1630408 5744648 1630248 5744704 1630760 5744656 +1630408 5744648 1630944 5744304 1630248 5744704 1630760 5744656 +1630768 5744584 1630944 5744304 1630408 5744648 1630760 5744656 +1630248 5744704 1630464 5745032 1630760 5744656 1630408 5744648 +1630248 5744704 1630464 5745032 1630408 5744648 1630944 5744304 +1630760 5744656 1630768 5744584 1630408 5744648 1630464 5745032 +1630464 5745032 1630776 5744688 1630760 5744656 1630408 5744648 +1630464 5745032 1630616 5745056 1630776 5744688 1630408 5744648 +1630760 5744656 1630768 5744584 1630408 5744648 1630776 5744688 +1630776 5744688 1630760 5744656 1630408 5744648 1630616 5745056 +1630248 5744704 1630304 5744984 1630464 5745032 1630408 5744648 +1630248 5744704 1630304 5744984 1630408 5744648 1630944 5744304 +1630464 5745032 1630616 5745056 1630408 5744648 1630304 5744984 +1630616 5745056 1630824 5744752 1630776 5744688 1630408 5744648 +1630248 5744704 1630408 5744648 1630944 5744304 1630864 5743768 +1630248 5744704 1630408 5744648 1630864 5743768 1630632 5743536 +1630248 5744704 1630304 5744984 1630408 5744648 1630632 5743536 +1630408 5744648 1630768 5744584 1630944 5744304 1630864 5743768 +1630944 5744304 1630952 5743928 1630864 5743768 1630408 5744648 +1630248 5744704 1630408 5744648 1630632 5743536 1630176 5744736 +1630408 5744648 1630944 5744304 1630864 5743768 1630632 5743536 +1630248 5744704 1630240 5744936 1630304 5744984 1630408 5744648 +1630408 5744648 1630512 5744600 1630944 5744304 1630864 5743768 +1630408 5744648 1630768 5744584 1630512 5744600 1630864 5743768 +1630768 5744584 1630512 5744600 1630408 5744648 1630760 5744656 +1630408 5744648 1630776 5744688 1630760 5744656 1630512 5744600 +1630512 5744600 1630864 5743768 1630408 5744648 1630776 5744688 +1630408 5744648 1630616 5745056 1630776 5744688 1630512 5744600 +1630408 5744648 1630464 5745032 1630616 5745056 1630512 5744600 +1630776 5744688 1630760 5744656 1630512 5744600 1630616 5745056 +1630408 5744648 1630464 5745032 1630512 5744600 1630864 5743768 +1630616 5745056 1630776 5744688 1630512 5744600 1630464 5745032 +1630760 5744656 1630768 5744584 1630512 5744600 1630776 5744688 +1630512 5744600 1630768 5744584 1630944 5744304 1630864 5743768 +1630768 5744584 1630944 5744304 1630512 5744600 1630760 5744656 +1630408 5744648 1630304 5744984 1630464 5745032 1630512 5744600 +1630944 5744304 1630952 5743928 1630864 5743768 1630512 5744600 +1630864 5743768 1630408 5744648 1630512 5744600 1630952 5743928 +1630944 5744304 1630952 5743928 1630512 5744600 1630768 5744584 +1630616 5745056 1630824 5744752 1630776 5744688 1630512 5744600 +1630944 5744304 1630976 5744216 1630952 5743928 1630512 5744600 +1630408 5744648 1630512 5744600 1630864 5743768 1630632 5743536 +1630408 5744648 1630512 5744600 1630632 5743536 1630248 5744704 +1630512 5744600 1630952 5743928 1630864 5743768 1630632 5743536 +1630408 5744648 1630464 5745032 1630512 5744600 1630632 5743536 +1630944 5744304 1630552 5744560 1630512 5744600 1630768 5744584 +1630552 5744560 1630952 5743928 1630512 5744600 1630768 5744584 +1630512 5744600 1630760 5744656 1630768 5744584 1630552 5744560 +1630512 5744600 1630776 5744688 1630760 5744656 1630552 5744560 +1630768 5744584 1630944 5744304 1630552 5744560 1630760 5744656 +1630512 5744600 1630760 5744656 1630552 5744560 1630952 5743928 +1630512 5744600 1630552 5744560 1630952 5743928 1630864 5743768 +1630512 5744600 1630552 5744560 1630864 5743768 1630632 5743536 +1630512 5744600 1630760 5744656 1630552 5744560 1630632 5743536 +1630552 5744560 1630944 5744304 1630952 5743928 1630864 5743768 +1630552 5744560 1630952 5743928 1630864 5743768 1630632 5743536 +1630952 5743928 1630552 5744560 1630944 5744304 1630976 5744216 +1630944 5744304 1630952 5743928 1630552 5744560 1630768 5744584 +1630512 5744600 1630552 5744560 1630632 5743536 1630408 5744648 +1630632 5743536 1630248 5744704 1630408 5744648 1630552 5744560 +1630552 5744560 1630864 5743768 1630632 5743536 1630408 5744648 +1630512 5744600 1630760 5744656 1630552 5744560 1630408 5744648 +1630408 5744648 1630528 5744392 1630632 5743536 1630248 5744704 +1630632 5743536 1630528 5744392 1630552 5744560 1630864 5743768 +1630552 5744560 1630952 5743928 1630864 5743768 1630528 5744392 +1630864 5743768 1630632 5743536 1630528 5744392 1630952 5743928 +1630552 5744560 1630944 5744304 1630952 5743928 1630528 5744392 +1630952 5743928 1630864 5743768 1630528 5744392 1630944 5744304 +1630632 5743536 1630176 5744736 1630248 5744704 1630528 5744392 +1630248 5744704 1630408 5744648 1630528 5744392 1630176 5744736 +1630632 5743536 1628288 5743232 1630176 5744736 1630528 5744392 +1630944 5744304 1630976 5744216 1630952 5743928 1630528 5744392 +1630944 5744304 1630976 5744216 1630528 5744392 1630552 5744560 +1630952 5743928 1630864 5743768 1630528 5744392 1630976 5744216 +1630976 5744216 1630992 5744048 1630952 5743928 1630528 5744392 +1630952 5743928 1630864 5743768 1630528 5744392 1630992 5744048 +1630976 5744216 1630992 5744048 1630528 5744392 1630944 5744304 +1630528 5744392 1630408 5744648 1630552 5744560 1630944 5744304 +1630552 5744560 1630768 5744584 1630944 5744304 1630528 5744392 +1630552 5744560 1630760 5744656 1630768 5744584 1630528 5744392 +1630944 5744304 1630976 5744216 1630528 5744392 1630768 5744584 +1630552 5744560 1630768 5744584 1630528 5744392 1630408 5744648 +1630408 5744648 1630552 5744560 1630528 5744392 1630248 5744704 +1630528 5744392 1630864 5743768 1630632 5743536 1630176 5744736 +1630552 5744560 1630528 5744392 1630408 5744648 1630512 5744600 +1630552 5744560 1630768 5744584 1630528 5744392 1630512 5744600 +1630528 5744392 1630248 5744704 1630408 5744648 1630512 5744600 +1630176 5744736 1630440 5744176 1630632 5743536 1628288 5743232 +1630176 5744736 1630440 5744176 1628288 5743232 1628224 5743288 +1630528 5744392 1630440 5744176 1630176 5744736 1630248 5744704 +1630528 5744392 1630440 5744176 1630248 5744704 1630408 5744648 +1630176 5744736 1630248 5744704 1630440 5744176 1628288 5743232 +1630440 5744176 1630528 5744392 1630632 5743536 1628288 5743232 +1630528 5744392 1630632 5743536 1630440 5744176 1630248 5744704 +1630632 5743536 1630440 5744176 1630528 5744392 1630864 5743768 +1630528 5744392 1630952 5743928 1630864 5743768 1630440 5744176 +1630528 5744392 1630992 5744048 1630952 5743928 1630440 5744176 +1630952 5743928 1630864 5743768 1630440 5744176 1630992 5744048 +1630632 5743536 1628288 5743232 1630440 5744176 1630864 5743768 +1630528 5744392 1630976 5744216 1630992 5744048 1630440 5744176 +1630992 5744048 1630952 5743928 1630440 5744176 1630976 5744216 +1630528 5744392 1630944 5744304 1630976 5744216 1630440 5744176 +1630528 5744392 1630768 5744584 1630944 5744304 1630440 5744176 +1630976 5744216 1630992 5744048 1630440 5744176 1630944 5744304 +1630440 5744176 1630248 5744704 1630528 5744392 1630944 5744304 +1630864 5743768 1630632 5743536 1630440 5744176 1630952 5743928 +1630632 5743536 1628320 5743136 1628288 5743232 1630440 5744176 +1630632 5743536 1628320 5743088 1628320 5743136 1630440 5744176 +1628288 5743232 1630176 5744736 1630440 5744176 1628320 5743136 +1630632 5743536 1628320 5743136 1630440 5744176 1630864 5743768 +1628320 5743136 1630368 5744048 1630632 5743536 1628320 5743088 +1630632 5743536 1630368 5744048 1630440 5744176 1630864 5743768 +1630368 5744048 1628320 5743136 1630440 5744176 1630864 5743768 +1630632 5743536 1628320 5743136 1630368 5744048 1630864 5743768 +1630440 5744176 1630952 5743928 1630864 5743768 1630368 5744048 +1630440 5744176 1630368 5744048 1628320 5743136 1628288 5743232 +1630440 5744176 1630368 5744048 1628288 5743232 1630176 5744736 +1628288 5743232 1628224 5743288 1630176 5744736 1630368 5744048 +1630440 5744176 1630368 5744048 1630176 5744736 1630248 5744704 +1630440 5744176 1630864 5743768 1630368 5744048 1630176 5744736 +1630368 5744048 1630632 5743536 1628320 5743136 1628288 5743232 +1630368 5744048 1628320 5743136 1628288 5743232 1630176 5744736 +1628320 5743136 1630272 5743968 1630632 5743536 1628320 5743088 +1630272 5743968 1630368 5744048 1630632 5743536 1628320 5743088 +1630368 5744048 1630272 5743968 1628320 5743136 1628288 5743232 +1630368 5744048 1630632 5743536 1630272 5743968 1628288 5743232 +1630632 5743536 1630272 5743968 1630368 5744048 1630864 5743768 +1628320 5743136 1628288 5743232 1630272 5743968 1628320 5743088 +1630368 5744048 1630272 5743968 1628288 5743232 1630176 5744736 +1628288 5743232 1628224 5743288 1630176 5744736 1630272 5743968 +1630368 5744048 1630272 5743968 1630176 5744736 1630440 5744176 +1630176 5744736 1630248 5744704 1630440 5744176 1630272 5743968 +1630272 5743968 1628320 5743136 1628288 5743232 1628224 5743288 +1630368 5744048 1630632 5743536 1630272 5743968 1630440 5744176 +1628288 5743232 1628240 5743264 1628224 5743288 1630272 5743968 +1630176 5744736 1630440 5744176 1630272 5743968 1628224 5743288 +1628224 5743288 1627880 5745216 1630176 5744736 1630272 5743968 +1630632 5743536 1628320 5743048 1628320 5743088 1630272 5743968 +1628320 5743088 1628320 5743136 1630272 5743968 1628320 5743048 +1630632 5743536 1628320 5743048 1630272 5743968 1630368 5744048 +1630632 5743536 1628304 5743016 1628320 5743048 1630272 5743968 +1628224 5743288 1629936 5743888 1630272 5743968 1628288 5743232 +1628224 5743288 1630176 5744736 1629936 5743888 1628288 5743232 +1630272 5743968 1628320 5743136 1628288 5743232 1629936 5743888 +1628288 5743232 1628224 5743288 1629936 5743888 1628320 5743136 +1630272 5743968 1628320 5743088 1628320 5743136 1629936 5743888 +1630272 5743968 1628320 5743048 1628320 5743088 1629936 5743888 +1628320 5743136 1628288 5743232 1629936 5743888 1628320 5743088 +1628320 5743088 1628320 5743136 1629936 5743888 1628320 5743048 +1629936 5743888 1630176 5744736 1630272 5743968 1628320 5743048 +1628224 5743288 1629936 5743888 1628288 5743232 1628240 5743264 +1630272 5743968 1629936 5743888 1630176 5744736 1630440 5744176 +1630176 5744736 1629936 5743888 1628224 5743288 1627880 5745216 +1630176 5744736 1630272 5743968 1629936 5743888 1627880 5745216 +1629936 5743888 1628288 5743232 1628224 5743288 1627880 5745216 +1628224 5743288 1627840 5745184 1627880 5745216 1629936 5743888 +1630176 5744736 1629936 5743888 1627880 5745216 1628032 5745400 +1630176 5744736 1630272 5743968 1629936 5743888 1628032 5745400 +1627880 5745216 1627984 5745352 1628032 5745400 1629936 5743888 +1630176 5744736 1629936 5743888 1628032 5745400 1628064 5745440 +1629936 5743888 1628224 5743288 1627880 5745216 1628032 5745400 +1630272 5743968 1630632 5743536 1628320 5743048 1629936 5743888 +1628320 5743048 1628320 5743088 1629936 5743888 1630632 5743536 +1630272 5743968 1630368 5744048 1630632 5743536 1629936 5743888 +1630272 5743968 1630632 5743536 1629936 5743888 1630176 5744736 +1630632 5743536 1628304 5743016 1628320 5743048 1629936 5743888 +1629936 5743888 1629880 5743848 1628320 5743048 1628320 5743088 +1629936 5743888 1630632 5743536 1629880 5743848 1628320 5743088 +1629880 5743848 1630632 5743536 1628320 5743048 1628320 5743088 +1629936 5743888 1629880 5743848 1628320 5743088 1628320 5743136 +1629880 5743848 1628320 5743048 1628320 5743088 1628320 5743136 +1629936 5743888 1630632 5743536 1629880 5743848 1628320 5743136 +1629936 5743888 1629880 5743848 1628320 5743136 1628288 5743232 +1629936 5743888 1630632 5743536 1629880 5743848 1628288 5743232 +1629936 5743888 1629880 5743848 1628288 5743232 1628224 5743288 +1629936 5743888 1630632 5743536 1629880 5743848 1628224 5743288 +1629936 5743888 1629880 5743848 1628224 5743288 1627880 5745216 +1629936 5743888 1630632 5743536 1629880 5743848 1627880 5745216 +1629880 5743848 1628288 5743232 1628224 5743288 1627880 5745216 +1628224 5743288 1627840 5745184 1627880 5745216 1629880 5743848 +1629880 5743848 1628320 5743136 1628288 5743232 1628224 5743288 +1629880 5743848 1628320 5743088 1628320 5743136 1628288 5743232 +1628288 5743232 1628240 5743264 1628224 5743288 1629880 5743848 +1628320 5743048 1629880 5743848 1630632 5743536 1628304 5743016 +1629880 5743848 1629936 5743888 1630632 5743536 1628304 5743016 +1630632 5743536 1628272 5742976 1628304 5743016 1629880 5743848 +1628320 5743048 1628320 5743088 1629880 5743848 1628304 5743016 +1629936 5743888 1629880 5743848 1627880 5745216 1628032 5745400 +1629936 5743888 1630632 5743536 1629880 5743848 1628032 5745400 +1629880 5743848 1628224 5743288 1627880 5745216 1628032 5745400 +1627880 5745216 1627984 5745352 1628032 5745400 1629880 5743848 +1629936 5743888 1629880 5743848 1628032 5745400 1630176 5744736 +1629936 5743888 1629880 5743848 1630176 5744736 1630272 5743968 +1629936 5743888 1630632 5743536 1629880 5743848 1630176 5744736 +1628032 5745400 1628064 5745440 1630176 5744736 1629880 5743848 +1629880 5743848 1627880 5745216 1628032 5745400 1630176 5744736 +1630632 5743536 1629880 5743848 1629936 5743888 1630272 5743968 +1629880 5743848 1629832 5743856 1627880 5745216 1628032 5745400 +1629832 5743856 1628224 5743288 1627880 5745216 1628032 5745400 +1629880 5743848 1628224 5743288 1629832 5743856 1628032 5745400 +1627880 5745216 1627984 5745352 1628032 5745400 1629832 5743856 +1628224 5743288 1629832 5743856 1629880 5743848 1628288 5743232 +1628224 5743288 1627880 5745216 1629832 5743856 1628288 5743232 +1629832 5743856 1628032 5745400 1629880 5743848 1628288 5743232 +1627880 5745216 1629832 5743856 1628224 5743288 1627840 5745184 +1629880 5743848 1628320 5743136 1628288 5743232 1629832 5743856 +1629880 5743848 1628320 5743136 1629832 5743856 1628032 5745400 +1628288 5743232 1628224 5743288 1629832 5743856 1628320 5743136 +1629880 5743848 1628320 5743088 1628320 5743136 1629832 5743856 +1629880 5743848 1628320 5743048 1628320 5743088 1629832 5743856 +1629880 5743848 1628304 5743016 1628320 5743048 1629832 5743856 +1629880 5743848 1628320 5743048 1629832 5743856 1628032 5745400 +1628320 5743136 1628288 5743232 1629832 5743856 1628320 5743088 +1628320 5743088 1628320 5743136 1629832 5743856 1628320 5743048 +1628224 5743288 1629832 5743856 1628288 5743232 1628240 5743264 +1629880 5743848 1629832 5743856 1628032 5745400 1630176 5744736 +1629832 5743856 1627880 5745216 1628032 5745400 1630176 5744736 +1629880 5743848 1628320 5743048 1629832 5743856 1630176 5744736 +1629880 5743848 1629832 5743856 1630176 5744736 1629936 5743888 +1630176 5744736 1630272 5743968 1629936 5743888 1629832 5743856 +1629880 5743848 1628320 5743048 1629832 5743856 1629936 5743888 +1628032 5745400 1628064 5745440 1630176 5744736 1629832 5743856 +1628032 5745400 1628064 5745440 1629832 5743856 1627880 5745216 +1628064 5745440 1630176 5744848 1630176 5744736 1629832 5743856 +1629832 5743856 1628064 5745440 1630176 5744736 1629936 5743888 +1629832 5743856 1629792 5743832 1628320 5743048 1628320 5743088 +1629832 5743856 1629880 5743848 1629792 5743832 1628320 5743088 +1629792 5743832 1629880 5743848 1628320 5743048 1628320 5743088 +1628320 5743048 1629792 5743832 1629880 5743848 1628304 5743016 +1628320 5743048 1628320 5743088 1629792 5743832 1628304 5743016 +1629792 5743832 1629832 5743856 1629880 5743848 1628304 5743016 +1629832 5743856 1629792 5743832 1628320 5743088 1628320 5743136 +1629832 5743856 1629880 5743848 1629792 5743832 1628320 5743136 +1629792 5743832 1628320 5743048 1628320 5743088 1628320 5743136 +1629832 5743856 1629792 5743832 1628320 5743136 1628288 5743232 +1629832 5743856 1629880 5743848 1629792 5743832 1628288 5743232 +1629832 5743856 1629792 5743832 1628288 5743232 1628224 5743288 +1629832 5743856 1629880 5743848 1629792 5743832 1628224 5743288 +1629832 5743856 1629792 5743832 1628224 5743288 1627880 5745216 +1629832 5743856 1629792 5743832 1627880 5745216 1628032 5745400 +1629832 5743856 1629880 5743848 1629792 5743832 1628032 5745400 +1629792 5743832 1628224 5743288 1627880 5745216 1628032 5745400 +1629832 5743856 1629792 5743832 1628032 5745400 1628064 5745440 +1629792 5743832 1627880 5745216 1628032 5745400 1628064 5745440 +1629832 5743856 1629880 5743848 1629792 5743832 1628064 5745440 +1627880 5745216 1627984 5745352 1628032 5745400 1629792 5743832 +1629792 5743832 1628288 5743232 1628224 5743288 1627880 5745216 +1628224 5743288 1627840 5745184 1627880 5745216 1629792 5743832 +1629792 5743832 1628320 5743136 1628288 5743232 1628224 5743288 +1629792 5743832 1628320 5743088 1628320 5743136 1628288 5743232 +1628288 5743232 1628240 5743264 1628224 5743288 1629792 5743832 +1629880 5743848 1630632 5743536 1628304 5743016 1629792 5743832 +1629880 5743848 1629936 5743888 1630632 5743536 1629792 5743832 +1630632 5743536 1628272 5742976 1628304 5743016 1629792 5743832 +1628304 5743016 1628320 5743048 1629792 5743832 1630632 5743536 +1629880 5743848 1630632 5743536 1629792 5743832 1629832 5743856 +1629832 5743856 1629792 5743832 1628064 5745440 1630176 5744736 +1629832 5743856 1629880 5743848 1629792 5743832 1630176 5744736 +1629792 5743832 1628032 5745400 1628064 5745440 1630176 5744736 +1628064 5745440 1630176 5744848 1630176 5744736 1629792 5743832 +1629832 5743856 1629792 5743832 1630176 5744736 1629936 5743888 +1629792 5743832 1629760 5743832 1627880 5745216 1628032 5745400 +1629792 5743832 1629760 5743832 1628032 5745400 1628064 5745440 +1629760 5743832 1627880 5745216 1628032 5745400 1628064 5745440 +1629792 5743832 1629760 5743832 1628064 5745440 1630176 5744736 +1629760 5743832 1628032 5745400 1628064 5745440 1630176 5744736 +1629792 5743832 1628224 5743288 1629760 5743832 1630176 5744736 +1629760 5743832 1628224 5743288 1627880 5745216 1628032 5745400 +1628064 5745440 1630176 5744848 1630176 5744736 1629760 5743832 +1627880 5745216 1627984 5745352 1628032 5745400 1629760 5743832 +1628224 5743288 1629760 5743832 1629792 5743832 1628288 5743232 +1629760 5743832 1630176 5744736 1629792 5743832 1628288 5743232 +1628224 5743288 1627880 5745216 1629760 5743832 1628288 5743232 +1627880 5745216 1629760 5743832 1628224 5743288 1627840 5745184 +1629792 5743832 1628320 5743136 1628288 5743232 1629760 5743832 +1629792 5743832 1628320 5743136 1629760 5743832 1630176 5744736 +1628288 5743232 1628224 5743288 1629760 5743832 1628320 5743136 +1629792 5743832 1628320 5743088 1628320 5743136 1629760 5743832 +1629792 5743832 1628320 5743048 1628320 5743088 1629760 5743832 +1629792 5743832 1628304 5743016 1628320 5743048 1629760 5743832 +1628320 5743048 1628320 5743088 1629760 5743832 1628304 5743016 +1629792 5743832 1630632 5743536 1628304 5743016 1629760 5743832 +1628304 5743016 1628320 5743048 1629760 5743832 1630632 5743536 +1630632 5743536 1628272 5742976 1628304 5743016 1629760 5743832 +1629792 5743832 1630632 5743536 1629760 5743832 1630176 5744736 +1628320 5743136 1628288 5743232 1629760 5743832 1628320 5743088 +1628320 5743088 1628320 5743136 1629760 5743832 1628320 5743048 +1628224 5743288 1629760 5743832 1628288 5743232 1628240 5743264 +1629792 5743832 1629880 5743848 1630632 5743536 1629760 5743832 +1629792 5743832 1629760 5743832 1630176 5744736 1629832 5743856 +1629760 5743832 1628064 5745440 1630176 5744736 1629832 5743856 +1629792 5743832 1630632 5743536 1629760 5743832 1629832 5743856 +1630176 5744736 1629936 5743888 1629832 5743856 1629760 5743832 +1629760 5743832 1629680 5743784 1628304 5743016 1628320 5743048 +1628304 5743016 1629680 5743784 1630632 5743536 1628272 5742976 +1629760 5743832 1629680 5743784 1628320 5743048 1628320 5743088 +1629680 5743784 1628304 5743016 1628320 5743048 1628320 5743088 +1630632 5743536 1629680 5743784 1629760 5743832 1629792 5743832 +1629760 5743832 1629792 5743832 1629680 5743784 1628320 5743088 +1629680 5743784 1630632 5743536 1628304 5743016 1628320 5743048 +1630632 5743536 1628304 5743016 1629680 5743784 1629792 5743832 +1629760 5743832 1629680 5743784 1628320 5743088 1628320 5743136 +1629680 5743784 1628320 5743048 1628320 5743088 1628320 5743136 +1629760 5743832 1629792 5743832 1629680 5743784 1628320 5743136 +1629760 5743832 1629680 5743784 1628320 5743136 1628288 5743232 +1629760 5743832 1629792 5743832 1629680 5743784 1628288 5743232 +1629760 5743832 1629680 5743784 1628288 5743232 1628224 5743288 +1629760 5743832 1629792 5743832 1629680 5743784 1628224 5743288 +1629760 5743832 1629680 5743784 1628224 5743288 1627880 5745216 +1629760 5743832 1629680 5743784 1627880 5745216 1628032 5745400 +1629760 5743832 1629680 5743784 1628032 5745400 1628064 5745440 +1629760 5743832 1629680 5743784 1628064 5745440 1630176 5744736 +1629680 5743784 1628032 5745400 1628064 5745440 1630176 5744736 +1629760 5743832 1629680 5743784 1630176 5744736 1629832 5743856 +1629680 5743784 1627880 5745216 1628032 5745400 1628064 5745440 +1629760 5743832 1629792 5743832 1629680 5743784 1630176 5744736 +1629680 5743784 1628224 5743288 1627880 5745216 1628032 5745400 +1628064 5745440 1630176 5744848 1630176 5744736 1629680 5743784 +1627880 5745216 1627984 5745352 1628032 5745400 1629680 5743784 +1629680 5743784 1628288 5743232 1628224 5743288 1627880 5745216 +1628224 5743288 1627840 5745184 1627880 5745216 1629680 5743784 +1629680 5743784 1628320 5743136 1628288 5743232 1628224 5743288 +1629680 5743784 1628320 5743088 1628320 5743136 1628288 5743232 +1628288 5743232 1628240 5743264 1628224 5743288 1629680 5743784 +1630632 5743536 1629680 5743784 1629792 5743832 1629880 5743848 +1630632 5743536 1629680 5743784 1629880 5743848 1629936 5743888 +1629680 5743784 1629760 5743832 1629792 5743832 1629880 5743848 +1629792 5743832 1629832 5743856 1629880 5743848 1629680 5743784 +1630632 5743536 1628304 5743016 1629680 5743784 1629880 5743848 +1628304 5743016 1629552 5743632 1630632 5743536 1628272 5742976 +1629680 5743784 1629552 5743632 1628304 5743016 1628320 5743048 +1629680 5743784 1629552 5743632 1628320 5743048 1628320 5743088 +1629680 5743784 1629552 5743632 1628320 5743088 1628320 5743136 +1629552 5743632 1628320 5743048 1628320 5743088 1628320 5743136 +1629680 5743784 1630632 5743536 1629552 5743632 1628320 5743136 +1630632 5743536 1629552 5743632 1629680 5743784 1629880 5743848 +1630632 5743536 1629552 5743632 1629880 5743848 1629936 5743888 +1629552 5743632 1628320 5743136 1629680 5743784 1629880 5743848 +1628304 5743016 1628320 5743048 1629552 5743632 1628272 5742976 +1629552 5743632 1628304 5743016 1628320 5743048 1628320 5743088 +1629552 5743632 1629880 5743848 1630632 5743536 1628272 5742976 +1629680 5743784 1629552 5743632 1628320 5743136 1628288 5743232 +1629552 5743632 1628320 5743088 1628320 5743136 1628288 5743232 +1629680 5743784 1629552 5743632 1628288 5743232 1628224 5743288 +1629680 5743784 1629552 5743632 1628224 5743288 1627880 5745216 +1629680 5743784 1629552 5743632 1627880 5745216 1628032 5745400 +1628224 5743288 1627840 5745184 1627880 5745216 1629552 5743632 +1629552 5743632 1628288 5743232 1628224 5743288 1627880 5745216 +1629680 5743784 1629880 5743848 1629552 5743632 1627880 5745216 +1629552 5743632 1628320 5743136 1628288 5743232 1628224 5743288 +1628288 5743232 1628240 5743264 1628224 5743288 1629552 5743632 +1629680 5743784 1629792 5743832 1629880 5743848 1629552 5743632 +1629680 5743784 1629760 5743832 1629792 5743832 1629552 5743632 +1629792 5743832 1629832 5743856 1629880 5743848 1629552 5743632 +1629680 5743784 1629792 5743832 1629552 5743632 1627880 5745216 +1629880 5743848 1630632 5743536 1629552 5743632 1629792 5743832 +1630632 5743536 1628224 5742936 1628272 5742976 1629552 5743632 +1629552 5743632 1629304 5743408 1628272 5742976 1628304 5743016 +1629552 5743632 1629304 5743408 1628304 5743016 1628320 5743048 +1629304 5743408 1628272 5742976 1628304 5743016 1628320 5743048 +1629552 5743632 1629304 5743408 1628320 5743048 1628320 5743088 +1629552 5743632 1629304 5743408 1628320 5743088 1628320 5743136 +1629552 5743632 1629304 5743408 1628320 5743136 1628288 5743232 +1629304 5743408 1628320 5743088 1628320 5743136 1628288 5743232 +1629304 5743408 1628304 5743016 1628320 5743048 1628320 5743088 +1629304 5743408 1628320 5743048 1628320 5743088 1628320 5743136 +1630632 5743536 1629304 5743408 1629552 5743632 1629880 5743848 +1629304 5743408 1630632 5743536 1628272 5742976 1628304 5743016 +1629552 5743632 1629304 5743408 1628288 5743232 1628224 5743288 +1629304 5743408 1628320 5743136 1628288 5743232 1628224 5743288 +1629552 5743632 1629304 5743408 1628224 5743288 1627880 5745216 +1629552 5743632 1629304 5743408 1627880 5745216 1629680 5743784 +1628224 5743288 1627840 5745184 1627880 5745216 1629304 5743408 +1629304 5743408 1628288 5743232 1628224 5743288 1627880 5745216 +1628288 5743232 1628240 5743264 1628224 5743288 1629304 5743408 +1629552 5743632 1630632 5743536 1629304 5743408 1627880 5745216 +1628272 5742976 1629304 5743408 1630632 5743536 1628224 5742936 +1628272 5742976 1628304 5743016 1629304 5743408 1628224 5742936 +1629304 5743408 1629552 5743632 1630632 5743536 1628224 5742936 +1630632 5743536 1628168 5742888 1628224 5742936 1629304 5743408 +1630632 5743536 1628168 5742888 1629304 5743408 1629552 5743632 +1628224 5742936 1628272 5742976 1629304 5743408 1628168 5742888 +1630632 5743536 1629584 5726976 1628168 5742888 1629304 5743408 +1630632 5743536 1629248 5743344 1629304 5743408 1629552 5743632 +1629304 5743408 1629248 5743344 1628168 5742888 1628224 5742936 +1629248 5743344 1630632 5743536 1628168 5742888 1628224 5742936 +1629304 5743408 1630632 5743536 1629248 5743344 1628224 5742936 +1629304 5743408 1629248 5743344 1628224 5742936 1628272 5742976 +1629304 5743408 1629248 5743344 1628272 5742976 1628304 5743016 +1629304 5743408 1629248 5743344 1628304 5743016 1628320 5743048 +1629304 5743408 1629248 5743344 1628320 5743048 1628320 5743088 +1629248 5743344 1628304 5743016 1628320 5743048 1628320 5743088 +1629304 5743408 1629248 5743344 1628320 5743088 1628320 5743136 +1629304 5743408 1629248 5743344 1628320 5743136 1628288 5743232 +1629304 5743408 1629248 5743344 1628288 5743232 1628224 5743288 +1629248 5743344 1628320 5743136 1628288 5743232 1628224 5743288 +1629248 5743344 1628320 5743048 1628320 5743088 1628320 5743136 +1629248 5743344 1628320 5743088 1628320 5743136 1628288 5743232 +1629304 5743408 1629248 5743344 1628224 5743288 1627880 5745216 +1628288 5743232 1628240 5743264 1628224 5743288 1629248 5743344 +1629304 5743408 1630632 5743536 1629248 5743344 1628224 5743288 +1629248 5743344 1628272 5742976 1628304 5743016 1628320 5743048 +1629248 5743344 1628168 5742888 1628224 5742936 1628272 5742976 +1629248 5743344 1628224 5742936 1628272 5742976 1628304 5743016 +1628168 5742888 1629248 5743344 1630632 5743536 1629584 5726976 +1629248 5743344 1629248 5743296 1628168 5742888 1628224 5742936 +1629248 5743344 1630632 5743536 1629248 5743296 1628224 5742936 +1630632 5743536 1629248 5743296 1629248 5743344 1629304 5743408 +1629248 5743296 1628224 5742936 1629248 5743344 1629304 5743408 +1630632 5743536 1629248 5743296 1629304 5743408 1629552 5743632 +1630632 5743536 1629248 5743296 1629552 5743632 1629880 5743848 +1629248 5743296 1629248 5743344 1629304 5743408 1629552 5743632 +1629248 5743296 1630632 5743536 1628168 5742888 1628224 5742936 +1630632 5743536 1628168 5742888 1629248 5743296 1629552 5743632 +1629248 5743344 1629248 5743296 1628224 5742936 1628272 5742976 +1629248 5743344 1629304 5743408 1629248 5743296 1628272 5742976 +1629248 5743296 1628168 5742888 1628224 5742936 1628272 5742976 +1629248 5743344 1629248 5743296 1628272 5742976 1628304 5743016 +1629248 5743344 1629304 5743408 1629248 5743296 1628304 5743016 +1629248 5743344 1629248 5743296 1628304 5743016 1628320 5743048 +1629248 5743344 1629304 5743408 1629248 5743296 1628320 5743048 +1629248 5743344 1629248 5743296 1628320 5743048 1628320 5743088 +1629248 5743344 1629304 5743408 1629248 5743296 1628320 5743088 +1629248 5743344 1629248 5743296 1628320 5743088 1628320 5743136 +1629248 5743344 1629304 5743408 1629248 5743296 1628320 5743136 +1629248 5743296 1628320 5743048 1628320 5743088 1628320 5743136 +1629248 5743344 1629248 5743296 1628320 5743136 1628288 5743232 +1629248 5743296 1628304 5743016 1628320 5743048 1628320 5743088 +1629248 5743296 1628224 5742936 1628272 5742976 1628304 5743016 +1629248 5743296 1628272 5742976 1628304 5743016 1628320 5743048 +1628168 5742888 1629248 5743296 1630632 5743536 1629584 5726976 +1628168 5742888 1629296 5743016 1629584 5726976 1621808 5733136 +1629584 5726976 1629296 5743016 1630632 5743536 1629776 5726856 +1630632 5743536 1629296 5743016 1628168 5742888 1629248 5743296 +1629296 5743016 1629584 5726976 1628168 5742888 1629248 5743296 +1628168 5742888 1628224 5742936 1629248 5743296 1629296 5743016 +1628168 5742888 1628224 5742936 1629296 5743016 1629584 5726976 +1628224 5742936 1628272 5742976 1629248 5743296 1629296 5743016 +1628224 5742936 1628272 5742976 1629296 5743016 1628168 5742888 +1630632 5743536 1629296 5743016 1629248 5743296 1629552 5743632 +1630632 5743536 1629296 5743016 1629552 5743632 1629880 5743848 +1629248 5743296 1629304 5743408 1629552 5743632 1629296 5743016 +1629248 5743296 1629248 5743344 1629304 5743408 1629296 5743016 +1629552 5743632 1630632 5743536 1629296 5743016 1629304 5743408 +1630632 5743536 1629584 5726976 1629296 5743016 1629552 5743632 +1628272 5742976 1628304 5743016 1629248 5743296 1629296 5743016 +1628272 5742976 1628304 5743016 1629296 5743016 1628224 5742936 +1628304 5743016 1628320 5743048 1629248 5743296 1629296 5743016 +1628320 5743048 1628320 5743088 1629248 5743296 1629296 5743016 +1628320 5743088 1628320 5743136 1629248 5743296 1629296 5743016 +1628304 5743016 1628320 5743048 1629296 5743016 1628272 5742976 +1628320 5743048 1628320 5743088 1629296 5743016 1628304 5743016 +1629248 5743296 1629304 5743408 1629296 5743016 1628320 5743088 +1629296 5743016 1629312 5742992 1629584 5726976 1628168 5742888 +1629584 5726976 1621808 5733136 1628168 5742888 1629312 5742992 +1629296 5743016 1629312 5742992 1628168 5742888 1628224 5742936 +1621808 5733136 1621784 5733192 1628168 5742888 1629312 5742992 +1629584 5726976 1621800 5732912 1621808 5733136 1629312 5742992 +1629296 5743016 1629312 5742992 1628224 5742936 1628272 5742976 +1629296 5743016 1629312 5742992 1628272 5742976 1628304 5743016 +1629312 5742992 1628224 5742936 1628272 5742976 1628304 5743016 +1629312 5742992 1630632 5743536 1629584 5726976 1621808 5733136 +1628168 5742888 1628224 5742936 1629312 5742992 1621808 5733136 +1629296 5743016 1630632 5743536 1629312 5742992 1628304 5743016 +1630632 5743536 1629312 5742992 1629296 5743016 1629552 5743632 +1630632 5743536 1629312 5742992 1629552 5743632 1629880 5743848 +1629296 5743016 1629304 5743408 1629552 5743632 1629312 5742992 +1629296 5743016 1629248 5743296 1629304 5743408 1629312 5742992 +1629312 5742992 1628304 5743016 1629296 5743016 1629304 5743408 +1629552 5743632 1630632 5743536 1629312 5742992 1629304 5743408 +1629312 5742992 1628168 5742888 1628224 5742936 1628272 5742976 +1630632 5743536 1629584 5726976 1629312 5742992 1629552 5743632 +1629296 5743016 1629312 5742992 1628304 5743016 1628320 5743048 +1629584 5726976 1629312 5742992 1630632 5743536 1629776 5726856 +1629312 5742992 1629408 5742976 1629584 5726976 1621808 5733136 +1629312 5742992 1629408 5742976 1621808 5733136 1628168 5742888 +1629408 5742976 1630632 5743536 1629584 5726976 1621808 5733136 +1621808 5733136 1621784 5733192 1628168 5742888 1629408 5742976 +1629584 5726976 1621800 5732912 1621808 5733136 1629408 5742976 +1629408 5742976 1629584 5726976 1621808 5733136 1628168 5742888 +1629312 5742992 1629408 5742976 1628168 5742888 1628224 5742936 +1630632 5743536 1629408 5742976 1629312 5742992 1629552 5743632 +1630632 5743536 1629408 5742976 1629552 5743632 1629880 5743848 +1630632 5743536 1629584 5726976 1629408 5742976 1629552 5743632 +1629312 5742992 1629304 5743408 1629552 5743632 1629408 5742976 +1629312 5742992 1629296 5743016 1629304 5743408 1629408 5742976 +1629296 5743016 1629248 5743296 1629304 5743408 1629408 5742976 +1629248 5743296 1629248 5743344 1629304 5743408 1629408 5742976 +1629296 5743016 1629248 5743296 1629408 5742976 1629312 5742992 +1629304 5743408 1629552 5743632 1629408 5742976 1629248 5743296 +1629552 5743632 1630632 5743536 1629408 5742976 1629304 5743408 +1629312 5742992 1629296 5743016 1629408 5742976 1628168 5742888 +1629584 5726976 1629408 5742976 1630632 5743536 1629776 5726856 +1629408 5742976 1629560 5742992 1629584 5726976 1621808 5733136 +1630632 5743536 1629560 5742992 1629408 5742976 1629552 5743632 +1630632 5743536 1629560 5742992 1629552 5743632 1629880 5743848 +1630632 5743536 1629560 5742992 1629880 5743848 1629936 5743888 +1629552 5743632 1629792 5743832 1629880 5743848 1629560 5742992 +1629560 5742992 1629584 5726976 1629408 5742976 1629552 5743632 +1629560 5742992 1629408 5742976 1629552 5743632 1629880 5743848 +1630632 5743536 1629584 5726976 1629560 5742992 1629880 5743848 +1629408 5742976 1629304 5743408 1629552 5743632 1629560 5742992 +1629408 5742976 1629304 5743408 1629560 5742992 1629584 5726976 +1629552 5743632 1629880 5743848 1629560 5742992 1629304 5743408 +1629408 5742976 1629248 5743296 1629304 5743408 1629560 5742992 +1629408 5742976 1629296 5743016 1629248 5743296 1629560 5742992 +1629248 5743296 1629248 5743344 1629304 5743408 1629560 5742992 +1629408 5742976 1629248 5743296 1629560 5742992 1629584 5726976 +1629304 5743408 1629552 5743632 1629560 5742992 1629248 5743296 +1629584 5726976 1629560 5742992 1630632 5743536 1629776 5726856 +1629560 5742992 1629640 5742832 1629584 5726976 1629408 5742976 +1629584 5726976 1621808 5733136 1629408 5742976 1629640 5742832 +1629584 5726976 1621800 5732912 1621808 5733136 1629640 5742832 +1621808 5733136 1628168 5742888 1629408 5742976 1629640 5742832 +1628168 5742888 1629312 5742992 1629408 5742976 1629640 5742832 +1621808 5733136 1628168 5742888 1629640 5742832 1629584 5726976 +1621808 5733136 1621784 5733192 1628168 5742888 1629640 5742832 +1628168 5742888 1629312 5742992 1629640 5742832 1621808 5733136 +1629408 5742976 1629560 5742992 1629640 5742832 1629312 5742992 +1629560 5742992 1630632 5743536 1629640 5742832 1629408 5742976 +1630632 5743536 1629640 5742832 1629560 5742992 1629880 5743848 +1629640 5742832 1630632 5743536 1629584 5726976 1621808 5733136 +1628168 5742888 1628224 5742936 1629312 5742992 1629640 5742832 +1629584 5726976 1629640 5742832 1630632 5743536 1629776 5726856 +1629640 5742832 1629560 5742992 1630632 5743536 1629776 5726856 +1630632 5743536 1629872 5726768 1629776 5726856 1629640 5742832 +1629584 5726976 1621808 5733136 1629640 5742832 1629776 5726856 +1630632 5743536 1629688 5742824 1629640 5742832 1629560 5742992 +1629688 5742824 1629776 5726856 1629640 5742832 1629560 5742992 +1629776 5726856 1629688 5742824 1630632 5743536 1629872 5726768 +1630632 5743536 1629776 5726856 1629688 5742824 1629560 5742992 +1630632 5743536 1629688 5742824 1629560 5742992 1629880 5743848 +1629640 5742832 1629688 5742824 1629776 5726856 1629584 5726976 +1629640 5742832 1629560 5742992 1629688 5742824 1629584 5726976 +1629688 5742824 1630632 5743536 1629776 5726856 1629584 5726976 +1629640 5742832 1629688 5742824 1629584 5726976 1621808 5733136 +1629640 5742832 1629560 5742992 1629688 5742824 1621808 5733136 +1629640 5742832 1629688 5742824 1621808 5733136 1628168 5742888 +1629640 5742832 1629560 5742992 1629688 5742824 1628168 5742888 +1621808 5733136 1621784 5733192 1628168 5742888 1629688 5742824 +1629584 5726976 1621800 5732912 1621808 5733136 1629688 5742824 +1629640 5742832 1629688 5742824 1628168 5742888 1629312 5742992 +1629688 5742824 1629584 5726976 1621808 5733136 1628168 5742888 +1629688 5742824 1629776 5726856 1629584 5726976 1621808 5733136 +1629776 5726856 1629784 5742896 1630632 5743536 1629872 5726768 +1629688 5742824 1629784 5742896 1629776 5726856 1629584 5726976 +1630632 5743536 1629784 5742896 1629688 5742824 1629560 5742992 +1629688 5742824 1629640 5742832 1629560 5742992 1629784 5742896 +1629784 5742896 1629776 5726856 1629688 5742824 1629640 5742832 +1629560 5742992 1630632 5743536 1629784 5742896 1629640 5742832 +1630632 5743536 1629776 5726856 1629784 5742896 1629560 5742992 +1630632 5743536 1629784 5742896 1629560 5742992 1629880 5743848 +1630632 5743536 1629784 5742896 1629880 5743848 1629936 5743888 +1629560 5742992 1629552 5743632 1629880 5743848 1629784 5742896 +1629552 5743632 1629792 5743832 1629880 5743848 1629784 5742896 +1629784 5742896 1629640 5742832 1629560 5742992 1629552 5743632 +1630632 5743536 1629776 5726856 1629784 5742896 1629880 5743848 +1629560 5742992 1629304 5743408 1629552 5743632 1629784 5742896 +1629880 5743848 1630632 5743536 1629784 5742896 1629552 5743632 +1630632 5743536 1629944 5743136 1629880 5743848 1629936 5743888 +1629784 5742896 1629944 5743136 1630632 5743536 1629776 5726856 +1630632 5743536 1629784 5742896 1629944 5743136 1629936 5743888 +1629880 5743848 1629944 5743136 1629784 5742896 1629552 5743632 +1629880 5743848 1629944 5743136 1629552 5743632 1629792 5743832 +1629880 5743848 1629944 5743136 1629792 5743832 1629832 5743856 +1629784 5742896 1629560 5742992 1629552 5743632 1629944 5743136 +1629784 5742896 1629640 5742832 1629560 5742992 1629944 5743136 +1629944 5743136 1630632 5743536 1629784 5742896 1629560 5742992 +1629552 5743632 1629680 5743784 1629792 5743832 1629944 5743136 +1629560 5742992 1629304 5743408 1629552 5743632 1629944 5743136 +1629944 5743136 1629560 5742992 1629552 5743632 1629792 5743832 +1630632 5743536 1629944 5743136 1629936 5743888 1630272 5743968 +1629944 5743136 1629792 5743832 1629880 5743848 1629936 5743888 +1629936 5743888 1630088 5743240 1629944 5743136 1629880 5743848 +1629944 5743136 1630088 5743240 1630632 5743536 1629784 5742896 +1630632 5743536 1629776 5726856 1629784 5742896 1630088 5743240 +1630632 5743536 1630088 5743240 1629936 5743888 1630272 5743968 +1630632 5743536 1630088 5743240 1630272 5743968 1630368 5744048 +1630088 5743240 1629784 5742896 1629944 5743136 1629880 5743848 +1629944 5743136 1629792 5743832 1629880 5743848 1630088 5743240 +1629880 5743848 1629936 5743888 1630088 5743240 1629792 5743832 +1629792 5743832 1629832 5743856 1629880 5743848 1630088 5743240 +1629944 5743136 1629552 5743632 1629792 5743832 1630088 5743240 +1629552 5743632 1629680 5743784 1629792 5743832 1630088 5743240 +1629680 5743784 1629760 5743832 1629792 5743832 1630088 5743240 +1629552 5743632 1629680 5743784 1630088 5743240 1629944 5743136 +1629944 5743136 1629560 5742992 1629552 5743632 1630088 5743240 +1629944 5743136 1629552 5743632 1630088 5743240 1629784 5742896 +1629792 5743832 1629880 5743848 1630088 5743240 1629680 5743784 +1630088 5743240 1630272 5743968 1630632 5743536 1629784 5742896 +1629936 5743888 1630272 5743968 1630088 5743240 1629880 5743848 +1629784 5742896 1630312 5743312 1630632 5743536 1629776 5726856 +1630088 5743240 1630312 5743312 1629784 5742896 1629944 5743136 +1630632 5743536 1630312 5743312 1630088 5743240 1630272 5743968 +1630632 5743536 1630312 5743312 1630272 5743968 1630368 5744048 +1630632 5743536 1629784 5742896 1630312 5743312 1630272 5743968 +1630088 5743240 1629936 5743888 1630272 5743968 1630312 5743312 +1630272 5743968 1630632 5743536 1630312 5743312 1629936 5743888 +1630312 5743312 1629784 5742896 1630088 5743240 1629936 5743888 +1630088 5743240 1629880 5743848 1629936 5743888 1630312 5743312 +1630088 5743240 1629792 5743832 1629880 5743848 1630312 5743312 +1629936 5743888 1630272 5743968 1630312 5743312 1629880 5743848 +1630088 5743240 1629880 5743848 1630312 5743312 1629784 5742896 +1629784 5742896 1630424 5743368 1629776 5726856 1629688 5742824 +1629776 5726856 1630424 5743368 1630632 5743536 1629872 5726768 +1630632 5743536 1630864 5743768 1629872 5726768 1630424 5743368 +1630632 5743536 1630424 5743368 1629784 5742896 1630312 5743312 +1629784 5742896 1630088 5743240 1630312 5743312 1630424 5743368 +1630424 5743368 1629776 5726856 1629784 5742896 1630312 5743312 +1630632 5743536 1630424 5743368 1630312 5743312 1630272 5743968 +1630632 5743536 1630424 5743368 1630272 5743968 1630368 5744048 +1630424 5743368 1629784 5742896 1630312 5743312 1630272 5743968 +1629776 5726856 1629784 5742896 1630424 5743368 1629872 5726768 +1630424 5743368 1630272 5743968 1630632 5743536 1629872 5726768 +1630312 5743312 1629936 5743888 1630272 5743968 1630424 5743368 +1621712 5733232 1626056 5741184 1628056 5742960 1628128 5742888 +1622528 5744936 1626056 5741184 1621712 5733232 1622352 5744936 +1621712 5733232 1622352 5744936 1626056 5741184 1628128 5742888 +1626056 5741184 1622528 5744936 1628056 5742960 1628128 5742888 +1628056 5742960 1626056 5741184 1622528 5744936 1623128 5745016 +1628056 5742960 1628128 5742888 1626056 5741184 1623128 5745016 +1621712 5733232 1626056 5741184 1628128 5742888 1621784 5733192 +1626056 5741184 1628056 5742960 1628128 5742888 1621784 5733192 +1621712 5733232 1622352 5744936 1626056 5741184 1621784 5733192 +1621712 5733232 1621616 5733232 1622352 5744936 1626056 5741184 +1622352 5744936 1622528 5744936 1626056 5741184 1621616 5733232 +1621712 5733232 1621616 5733232 1626056 5741184 1621784 5733192 +1621616 5733232 1615632 5735512 1622352 5744936 1626056 5741184 +1622352 5744936 1622528 5744936 1626056 5741184 1615632 5735512 +1621616 5733232 1615632 5735512 1626056 5741184 1621712 5733232 +1621616 5733232 1621440 5733160 1615632 5735512 1626056 5741184 +1622528 5744936 1623128 5745016 1626056 5741184 1622352 5744936 +1628128 5742888 1628168 5742888 1621784 5733192 1626056 5741184 +1628128 5742888 1628168 5742888 1626056 5741184 1628056 5742960 +1621784 5733192 1621712 5733232 1626056 5741184 1628168 5742888 +1628168 5742888 1621808 5733136 1621784 5733192 1626056 5741184 +1628168 5742888 1629688 5742824 1621808 5733136 1626056 5741184 +1628168 5742888 1629640 5742832 1629688 5742824 1626056 5741184 +1629688 5742824 1621808 5733136 1626056 5741184 1629640 5742832 +1621784 5733192 1621712 5733232 1626056 5741184 1621808 5733136 +1628168 5742888 1629312 5742992 1629640 5742832 1626056 5741184 +1629688 5742824 1629584 5726976 1621808 5733136 1626056 5741184 +1629688 5742824 1629584 5726976 1626056 5741184 1629640 5742832 +1629584 5726976 1621800 5732912 1621808 5733136 1626056 5741184 +1621808 5733136 1621784 5733192 1626056 5741184 1629584 5726976 +1628168 5742888 1629640 5742832 1626056 5741184 1628128 5742888 +1628056 5742960 1626056 5741184 1623128 5745016 1623224 5745048 +1628056 5742960 1628128 5742888 1626056 5741184 1623224 5745048 +1626056 5741184 1622528 5744936 1623128 5745016 1623224 5745048 +1628056 5742960 1626056 5741184 1623224 5745048 1623640 5745232 +1628056 5742960 1628128 5742888 1626056 5741184 1623640 5745232 +1623224 5745048 1623528 5745200 1623640 5745232 1626056 5741184 +1628056 5742960 1626056 5741184 1623640 5745232 1628032 5743064 +1628056 5742960 1628128 5742888 1626056 5741184 1628032 5743064 +1626056 5741184 1623224 5745048 1623640 5745232 1628032 5743064 +1623640 5745232 1628024 5743112 1628032 5743064 1626056 5741184 +1623640 5745232 1628024 5743112 1626056 5741184 1623224 5745048 +1623640 5745232 1623896 5745384 1628024 5743112 1626056 5741184 +1623640 5745232 1623896 5745384 1626056 5741184 1623224 5745048 +1623896 5745384 1624032 5745472 1628024 5743112 1626056 5741184 +1624032 5745472 1628032 5743200 1628024 5743112 1626056 5741184 +1624032 5745472 1628032 5743200 1626056 5741184 1623896 5745384 +1623896 5745384 1624032 5745472 1626056 5741184 1623640 5745232 +1628024 5743112 1628032 5743064 1626056 5741184 1628032 5743200 +1623640 5745232 1623792 5745368 1623896 5745384 1626056 5741184 +1628032 5743064 1628056 5742960 1626056 5741184 1628024 5743112 +1624032 5745472 1624528 5745760 1628032 5743200 1626056 5741184 +1628032 5743200 1628024 5743112 1626056 5741184 1624528 5745760 +1624032 5745472 1624528 5745760 1626056 5741184 1623896 5745384 +1626056 5741184 1623128 5745016 1623224 5745048 1623640 5745232 +1622528 5744936 1622680 5744976 1623128 5745016 1626056 5741184 +1629688 5742824 1629776 5726856 1629584 5726976 1626056 5741184 +1615632 5735512 1615584 5735552 1622352 5744936 1626056 5741184 +1624528 5745760 1627728 5745216 1628032 5743200 1626056 5741184 +1624032 5745472 1624224 5745656 1624528 5745760 1626056 5741184 +1626056 5741184 1626080 5741216 1628032 5743200 1628024 5743112 +1626056 5741184 1624528 5745760 1626080 5741216 1628024 5743112 +1626080 5741216 1624528 5745760 1628032 5743200 1628024 5743112 +1626056 5741184 1626080 5741216 1628024 5743112 1628032 5743064 +1626056 5741184 1624528 5745760 1626080 5741216 1628032 5743064 +1626080 5741216 1628032 5743200 1628024 5743112 1628032 5743064 +1626056 5741184 1626080 5741216 1628032 5743064 1628056 5742960 +1626056 5741184 1624528 5745760 1626080 5741216 1628056 5742960 +1626056 5741184 1626080 5741216 1628056 5742960 1628128 5742888 +1626056 5741184 1626080 5741216 1628128 5742888 1628168 5742888 +1626056 5741184 1624528 5745760 1626080 5741216 1628168 5742888 +1626080 5741216 1628056 5742960 1628128 5742888 1628168 5742888 +1626080 5741216 1628024 5743112 1628032 5743064 1628056 5742960 +1626080 5741216 1628032 5743064 1628056 5742960 1628128 5742888 +1624528 5745760 1626080 5741216 1626056 5741184 1624032 5745472 +1626080 5741216 1628168 5742888 1626056 5741184 1624032 5745472 +1624528 5745760 1628032 5743200 1626080 5741216 1624032 5745472 +1626056 5741184 1623896 5745384 1624032 5745472 1626080 5741216 +1626056 5741184 1623896 5745384 1626080 5741216 1628168 5742888 +1626056 5741184 1623640 5745232 1623896 5745384 1626080 5741216 +1626056 5741184 1623640 5745232 1626080 5741216 1628168 5742888 +1626056 5741184 1623224 5745048 1623640 5745232 1626080 5741216 +1626056 5741184 1623224 5745048 1626080 5741216 1628168 5742888 +1623896 5745384 1624032 5745472 1626080 5741216 1623640 5745232 +1623640 5745232 1623896 5745384 1626080 5741216 1623224 5745048 +1623224 5745048 1623528 5745200 1623640 5745232 1626080 5741216 +1623640 5745232 1623792 5745368 1623896 5745384 1626080 5741216 +1624032 5745472 1624528 5745760 1626080 5741216 1623896 5745384 +1626056 5741184 1626080 5741216 1628168 5742888 1629640 5742832 +1626080 5741216 1628128 5742888 1628168 5742888 1629640 5742832 +1626056 5741184 1623224 5745048 1626080 5741216 1629640 5742832 +1626056 5741184 1626080 5741216 1629640 5742832 1629688 5742824 +1626056 5741184 1623224 5745048 1626080 5741216 1629688 5742824 +1626056 5741184 1626080 5741216 1629688 5742824 1629584 5726976 +1628168 5742888 1629312 5742992 1629640 5742832 1626080 5741216 +1626080 5741216 1628168 5742888 1629640 5742832 1629688 5742824 +1626056 5741184 1623128 5745016 1623224 5745048 1626080 5741216 +1628032 5743200 1626080 5741216 1624528 5745760 1627728 5745216 +1624528 5745760 1626080 5741216 1624032 5745472 1624224 5745656 +1626080 5741216 1626120 5741352 1628032 5743200 1628024 5743112 +1626080 5741216 1624528 5745760 1626120 5741352 1628024 5743112 +1626080 5741216 1626120 5741352 1628024 5743112 1628032 5743064 +1626120 5741352 1628032 5743200 1628024 5743112 1628032 5743064 +1626080 5741216 1624528 5745760 1626120 5741352 1628032 5743064 +1624528 5745760 1626120 5741352 1626080 5741216 1624032 5745472 +1626120 5741352 1628032 5743064 1626080 5741216 1624032 5745472 +1626120 5741352 1624528 5745760 1628032 5743200 1628024 5743112 +1624528 5745760 1628032 5743200 1626120 5741352 1624032 5745472 +1626080 5741216 1626120 5741352 1628032 5743064 1628056 5742960 +1626080 5741216 1624032 5745472 1626120 5741352 1628056 5742960 +1626120 5741352 1628024 5743112 1628032 5743064 1628056 5742960 +1626080 5741216 1626120 5741352 1628056 5742960 1628128 5742888 +1626080 5741216 1626120 5741352 1628128 5742888 1628168 5742888 +1626080 5741216 1626120 5741352 1628168 5742888 1629640 5742832 +1626080 5741216 1624032 5745472 1626120 5741352 1628168 5742888 +1626120 5741352 1628032 5743064 1628056 5742960 1628128 5742888 +1626120 5741352 1628056 5742960 1628128 5742888 1628168 5742888 +1626080 5741216 1623896 5745384 1624032 5745472 1626120 5741352 +1626080 5741216 1623896 5745384 1626120 5741352 1628168 5742888 +1624032 5745472 1624528 5745760 1626120 5741352 1623896 5745384 +1626080 5741216 1623640 5745232 1623896 5745384 1626120 5741352 +1626080 5741216 1623640 5745232 1626120 5741352 1628168 5742888 +1626080 5741216 1623224 5745048 1623640 5745232 1626120 5741352 +1626080 5741216 1623224 5745048 1626120 5741352 1628168 5742888 +1626080 5741216 1626056 5741184 1623224 5745048 1626120 5741352 +1626080 5741216 1626056 5741184 1626120 5741352 1628168 5742888 +1623640 5745232 1623896 5745384 1626120 5741352 1623224 5745048 +1623224 5745048 1623640 5745232 1626120 5741352 1626056 5741184 +1623224 5745048 1623528 5745200 1623640 5745232 1626120 5741352 +1623640 5745232 1623792 5745368 1623896 5745384 1626120 5741352 +1623896 5745384 1624032 5745472 1626120 5741352 1623640 5745232 +1626056 5741184 1623128 5745016 1623224 5745048 1626120 5741352 +1626056 5741184 1622528 5744936 1623128 5745016 1626120 5741352 +1626056 5741184 1623128 5745016 1626120 5741352 1626080 5741216 +1623224 5745048 1623640 5745232 1626120 5741352 1623128 5745016 +1628032 5743200 1626120 5741352 1624528 5745760 1627728 5745216 +1624528 5745760 1626120 5741352 1624032 5745472 1624224 5745656 +1626120 5741352 1625984 5741560 1623640 5745232 1623896 5745384 +1626120 5741352 1623224 5745048 1625984 5741560 1623896 5745384 +1625984 5741560 1623224 5745048 1623640 5745232 1623896 5745384 +1623224 5745048 1625984 5741560 1626120 5741352 1623128 5745016 +1625984 5741560 1623896 5745384 1626120 5741352 1623128 5745016 +1623224 5745048 1623640 5745232 1625984 5741560 1623128 5745016 +1623640 5745232 1625984 5741560 1623224 5745048 1623528 5745200 +1623640 5745232 1623792 5745368 1623896 5745384 1625984 5741560 +1626120 5741352 1625984 5741560 1623896 5745384 1624032 5745472 +1626120 5741352 1625984 5741560 1624032 5745472 1624528 5745760 +1626120 5741352 1623128 5745016 1625984 5741560 1624528 5745760 +1626120 5741352 1625984 5741560 1624528 5745760 1628032 5743200 +1625984 5741560 1624032 5745472 1624528 5745760 1628032 5743200 +1626120 5741352 1625984 5741560 1628032 5743200 1628024 5743112 +1626120 5741352 1625984 5741560 1628024 5743112 1628032 5743064 +1626120 5741352 1625984 5741560 1628032 5743064 1628056 5742960 +1625984 5741560 1628024 5743112 1628032 5743064 1628056 5742960 +1625984 5741560 1628032 5743200 1628024 5743112 1628032 5743064 +1626120 5741352 1623128 5745016 1625984 5741560 1628056 5742960 +1625984 5741560 1624528 5745760 1628032 5743200 1628024 5743112 +1625984 5741560 1623640 5745232 1623896 5745384 1624032 5745472 +1626120 5741352 1625984 5741560 1628056 5742960 1628128 5742888 +1625984 5741560 1623896 5745384 1624032 5745472 1624528 5745760 +1626120 5741352 1626056 5741184 1623128 5745016 1625984 5741560 +1626056 5741184 1622528 5744936 1623128 5745016 1625984 5741560 +1626120 5741352 1626056 5741184 1625984 5741560 1628056 5742960 +1626120 5741352 1626080 5741216 1626056 5741184 1625984 5741560 +1626120 5741352 1626080 5741216 1625984 5741560 1628056 5742960 +1623128 5745016 1623224 5745048 1625984 5741560 1622528 5744936 +1626056 5741184 1622352 5744936 1622528 5744936 1625984 5741560 +1626056 5741184 1615632 5735512 1622352 5744936 1625984 5741560 +1622528 5744936 1623128 5745016 1625984 5741560 1622352 5744936 +1626056 5741184 1622352 5744936 1625984 5741560 1626080 5741216 +1622528 5744936 1622680 5744976 1623128 5745016 1625984 5741560 +1624528 5745760 1627728 5745216 1628032 5743200 1625984 5741560 +1624032 5745472 1624224 5745656 1624528 5745760 1625984 5741560 +1622352 5744936 1625832 5741696 1626056 5741184 1615632 5735512 +1622352 5744936 1625984 5741560 1625832 5741696 1615632 5735512 +1625832 5741696 1625984 5741560 1626056 5741184 1615632 5735512 +1626056 5741184 1621616 5733232 1615632 5735512 1625832 5741696 +1615632 5735512 1622352 5744936 1625832 5741696 1621616 5733232 +1626056 5741184 1621616 5733232 1625832 5741696 1625984 5741560 +1626056 5741184 1621712 5733232 1621616 5733232 1625832 5741696 +1621616 5733232 1621440 5733160 1615632 5735512 1625832 5741696 +1625984 5741560 1625832 5741696 1622352 5744936 1622528 5744936 +1625984 5741560 1625832 5741696 1622528 5744936 1623128 5745016 +1625984 5741560 1626056 5741184 1625832 5741696 1623128 5745016 +1625984 5741560 1625832 5741696 1623128 5745016 1623224 5745048 +1625832 5741696 1622528 5744936 1623128 5745016 1623224 5745048 +1625984 5741560 1626056 5741184 1625832 5741696 1623224 5745048 +1625984 5741560 1625832 5741696 1623224 5745048 1623640 5745232 +1625984 5741560 1625832 5741696 1623640 5745232 1623896 5745384 +1625984 5741560 1626056 5741184 1625832 5741696 1623896 5745384 +1625832 5741696 1623224 5745048 1623640 5745232 1623896 5745384 +1625984 5741560 1625832 5741696 1623896 5745384 1624032 5745472 +1625832 5741696 1623640 5745232 1623896 5745384 1624032 5745472 +1625984 5741560 1626056 5741184 1625832 5741696 1624032 5745472 +1625832 5741696 1623128 5745016 1623224 5745048 1623640 5745232 +1623224 5745048 1623528 5745200 1623640 5745232 1625832 5741696 +1623640 5745232 1623792 5745368 1623896 5745384 1625832 5741696 +1625832 5741696 1615632 5735512 1622352 5744936 1622528 5744936 +1625984 5741560 1625832 5741696 1624032 5745472 1624528 5745760 +1625984 5741560 1625832 5741696 1624528 5745760 1628032 5743200 +1625984 5741560 1625832 5741696 1628032 5743200 1628024 5743112 +1625832 5741696 1624528 5745760 1628032 5743200 1628024 5743112 +1625984 5741560 1625832 5741696 1628024 5743112 1628032 5743064 +1625984 5741560 1625832 5741696 1628032 5743064 1628056 5742960 +1625984 5741560 1625832 5741696 1628056 5742960 1626120 5741352 +1625832 5741696 1628024 5743112 1628032 5743064 1628056 5742960 +1625832 5741696 1628032 5743200 1628024 5743112 1628032 5743064 +1625984 5741560 1626056 5741184 1625832 5741696 1628056 5742960 +1625832 5741696 1623896 5745384 1624032 5745472 1624528 5745760 +1625832 5741696 1624032 5745472 1624528 5745760 1628032 5743200 +1625832 5741696 1622352 5744936 1622528 5744936 1623128 5745016 +1626056 5741184 1625832 5741696 1625984 5741560 1626080 5741216 +1622528 5744936 1622680 5744976 1623128 5745016 1625832 5741696 +1622352 5744936 1625832 5741696 1615632 5735512 1615584 5735552 +1624528 5745760 1627728 5745216 1628032 5743200 1625832 5741696 +1624528 5745760 1624712 5745880 1627728 5745216 1625832 5741696 +1628032 5743200 1628024 5743112 1625832 5741696 1627728 5745216 +1624712 5745880 1627696 5745264 1627728 5745216 1625832 5741696 +1624528 5745760 1624712 5745880 1625832 5741696 1624032 5745472 +1627728 5745216 1628032 5743200 1625832 5741696 1624712 5745880 +1624032 5745472 1624224 5745656 1624528 5745760 1625832 5741696 +1627728 5745216 1628048 5743224 1628032 5743200 1625832 5741696 +1615632 5735512 1625704 5741736 1625832 5741696 1621616 5733232 +1615632 5735512 1622352 5744936 1625704 5741736 1621616 5733232 +1625832 5741696 1625704 5741736 1622352 5744936 1622528 5744936 +1625704 5741736 1615632 5735512 1622352 5744936 1622528 5744936 +1625704 5741736 1622528 5744936 1625832 5741696 1621616 5733232 +1625832 5741696 1626056 5741184 1621616 5733232 1625704 5741736 +1621616 5733232 1615632 5735512 1625704 5741736 1626056 5741184 +1625832 5741696 1626056 5741184 1625704 5741736 1622528 5744936 +1625832 5741696 1625984 5741560 1626056 5741184 1625704 5741736 +1625832 5741696 1625984 5741560 1625704 5741736 1622528 5744936 +1626056 5741184 1621712 5733232 1621616 5733232 1625704 5741736 +1626056 5741184 1621616 5733232 1625704 5741736 1625984 5741560 +1615632 5735512 1625704 5741736 1621616 5733232 1621440 5733160 +1625832 5741696 1625704 5741736 1622528 5744936 1623128 5745016 +1625832 5741696 1625704 5741736 1623128 5745016 1623224 5745048 +1625832 5741696 1625704 5741736 1623224 5745048 1623640 5745232 +1625704 5741736 1623128 5745016 1623224 5745048 1623640 5745232 +1625832 5741696 1625704 5741736 1623640 5745232 1623896 5745384 +1625832 5741696 1625704 5741736 1623896 5745384 1624032 5745472 +1625704 5741736 1623640 5745232 1623896 5745384 1624032 5745472 +1625832 5741696 1625704 5741736 1624032 5745472 1624528 5745760 +1625704 5741736 1623896 5745384 1624032 5745472 1624528 5745760 +1625704 5741736 1623224 5745048 1623640 5745232 1623896 5745384 +1623224 5745048 1623528 5745200 1623640 5745232 1625704 5741736 +1623640 5745232 1623792 5745368 1623896 5745384 1625704 5741736 +1625704 5741736 1622352 5744936 1622528 5744936 1623128 5745016 +1625832 5741696 1625984 5741560 1625704 5741736 1624528 5745760 +1625832 5741696 1625704 5741736 1624528 5745760 1624712 5745880 +1625832 5741696 1625704 5741736 1624712 5745880 1627728 5745216 +1624712 5745880 1627696 5745264 1627728 5745216 1625704 5741736 +1625704 5741736 1624032 5745472 1624528 5745760 1624712 5745880 +1625832 5741696 1625984 5741560 1625704 5741736 1627728 5745216 +1625704 5741736 1624528 5745760 1624712 5745880 1627728 5745216 +1625704 5741736 1622528 5744936 1623128 5745016 1623224 5745048 +1625984 5741560 1626080 5741216 1626056 5741184 1625704 5741736 +1622528 5744936 1622680 5744976 1623128 5745016 1625704 5741736 +1622352 5744936 1625704 5741736 1615632 5735512 1615584 5735552 +1625832 5741696 1625704 5741736 1627728 5745216 1628032 5743200 +1625704 5741736 1624712 5745880 1627728 5745216 1628032 5743200 +1625832 5741696 1625704 5741736 1628032 5743200 1628024 5743112 +1625832 5741696 1625984 5741560 1625704 5741736 1628032 5743200 +1624032 5745472 1624224 5745656 1624528 5745760 1625704 5741736 +1627728 5745216 1628048 5743224 1628032 5743200 1625704 5741736 +1625704 5741736 1625528 5741736 1622352 5744936 1622528 5744936 +1625704 5741736 1615632 5735512 1625528 5741736 1622528 5744936 +1615632 5735512 1625528 5741736 1625704 5741736 1621616 5733232 +1625704 5741736 1626056 5741184 1621616 5733232 1625528 5741736 +1625528 5741736 1622528 5744936 1625704 5741736 1626056 5741184 +1621616 5733232 1615632 5735512 1625528 5741736 1626056 5741184 +1625528 5741736 1615632 5735512 1622352 5744936 1622528 5744936 +1615632 5735512 1622352 5744936 1625528 5741736 1621616 5733232 +1625704 5741736 1625528 5741736 1622528 5744936 1623128 5745016 +1625528 5741736 1622352 5744936 1622528 5744936 1623128 5745016 +1625704 5741736 1626056 5741184 1625528 5741736 1623128 5745016 +1626056 5741184 1621712 5733232 1621616 5733232 1625528 5741736 +1626056 5741184 1621712 5733232 1625528 5741736 1625704 5741736 +1626056 5741184 1621784 5733192 1621712 5733232 1625528 5741736 +1621616 5733232 1615632 5735512 1625528 5741736 1621712 5733232 +1625704 5741736 1625984 5741560 1626056 5741184 1625528 5741736 +1615632 5735512 1625528 5741736 1621616 5733232 1621440 5733160 +1625704 5741736 1625528 5741736 1623128 5745016 1623224 5745048 +1625704 5741736 1625528 5741736 1623224 5745048 1623640 5745232 +1625704 5741736 1626056 5741184 1625528 5741736 1623640 5745232 +1625704 5741736 1625528 5741736 1623640 5745232 1623896 5745384 +1625528 5741736 1623224 5745048 1623640 5745232 1623896 5745384 +1625704 5741736 1626056 5741184 1625528 5741736 1623896 5745384 +1625704 5741736 1625528 5741736 1623896 5745384 1624032 5745472 +1625704 5741736 1626056 5741184 1625528 5741736 1624032 5745472 +1625704 5741736 1625528 5741736 1624032 5745472 1624528 5745760 +1625704 5741736 1626056 5741184 1625528 5741736 1624528 5745760 +1625528 5741736 1623896 5745384 1624032 5745472 1624528 5745760 +1625704 5741736 1625528 5741736 1624528 5745760 1624712 5745880 +1625528 5741736 1623640 5745232 1623896 5745384 1624032 5745472 +1623224 5745048 1623528 5745200 1623640 5745232 1625528 5741736 +1623640 5745232 1623792 5745368 1623896 5745384 1625528 5741736 +1625528 5741736 1622528 5744936 1623128 5745016 1623224 5745048 +1625528 5741736 1623128 5745016 1623224 5745048 1623640 5745232 +1622528 5744936 1622680 5744976 1623128 5745016 1625528 5741736 +1622352 5744936 1625528 5741736 1615632 5735512 1615584 5735552 +1624032 5745472 1624224 5745656 1624528 5745760 1625528 5741736 +1625528 5741736 1625360 5741680 1622352 5744936 1622528 5744936 +1625528 5741736 1625360 5741680 1622528 5744936 1623128 5745016 +1625360 5741680 1622352 5744936 1622528 5744936 1623128 5745016 +1625528 5741736 1615632 5735512 1625360 5741680 1623128 5745016 +1615632 5735512 1625360 5741680 1625528 5741736 1621616 5733232 +1625528 5741736 1621712 5733232 1621616 5733232 1625360 5741680 +1625360 5741680 1623128 5745016 1625528 5741736 1621712 5733232 +1621616 5733232 1615632 5735512 1625360 5741680 1621712 5733232 +1625528 5741736 1625360 5741680 1623128 5745016 1623224 5745048 +1625360 5741680 1622528 5744936 1623128 5745016 1623224 5745048 +1625528 5741736 1621712 5733232 1625360 5741680 1623224 5745048 +1625528 5741736 1626056 5741184 1621712 5733232 1625360 5741680 +1625528 5741736 1625704 5741736 1626056 5741184 1625360 5741680 +1626056 5741184 1621784 5733192 1621712 5733232 1625360 5741680 +1621712 5733232 1621616 5733232 1625360 5741680 1626056 5741184 +1625528 5741736 1626056 5741184 1625360 5741680 1623224 5745048 +1615632 5735512 1625360 5741680 1621616 5733232 1621440 5733160 +1625528 5741736 1625360 5741680 1623224 5745048 1623640 5745232 +1625528 5741736 1625360 5741680 1623640 5745232 1623896 5745384 +1625528 5741736 1625360 5741680 1623896 5745384 1624032 5745472 +1623224 5745048 1623528 5745200 1623640 5745232 1625360 5741680 +1623640 5745232 1623792 5745368 1623896 5745384 1625360 5741680 +1625528 5741736 1626056 5741184 1625360 5741680 1623896 5745384 +1625360 5741680 1623128 5745016 1623224 5745048 1623640 5745232 +1625360 5741680 1623224 5745048 1623640 5745232 1623896 5745384 +1622528 5744936 1622680 5744976 1623128 5745016 1625360 5741680 +1622352 5744936 1625360 5741680 1615632 5735512 1615584 5735552 +1625360 5741680 1615632 5735512 1622352 5744936 1622528 5744936 +1615632 5735512 1622352 5744936 1625360 5741680 1621616 5733232 +1621616 5733232 1625296 5741616 1625360 5741680 1621712 5733232 +1621616 5733232 1615632 5735512 1625296 5741616 1621712 5733232 +1625360 5741680 1626056 5741184 1621712 5733232 1625296 5741616 +1626056 5741184 1621784 5733192 1621712 5733232 1625296 5741616 +1621712 5733232 1621616 5733232 1625296 5741616 1626056 5741184 +1625360 5741680 1625528 5741736 1626056 5741184 1625296 5741616 +1625528 5741736 1625704 5741736 1626056 5741184 1625296 5741616 +1626056 5741184 1621712 5733232 1625296 5741616 1625528 5741736 +1615632 5735512 1625296 5741616 1621616 5733232 1621440 5733160 +1625296 5741616 1615632 5735512 1625360 5741680 1625528 5741736 +1625360 5741680 1625296 5741616 1615632 5735512 1622352 5744936 +1625296 5741616 1621616 5733232 1615632 5735512 1622352 5744936 +1615632 5735512 1615584 5735552 1622352 5744936 1625296 5741616 +1625360 5741680 1625296 5741616 1622352 5744936 1622528 5744936 +1625360 5741680 1625296 5741616 1622528 5744936 1623128 5745016 +1625360 5741680 1625296 5741616 1623128 5745016 1623224 5745048 +1625296 5741616 1622528 5744936 1623128 5745016 1623224 5745048 +1625360 5741680 1625296 5741616 1623224 5745048 1623640 5745232 +1622528 5744936 1622680 5744976 1623128 5745016 1625296 5741616 +1625296 5741616 1622352 5744936 1622528 5744936 1623128 5745016 +1625360 5741680 1625528 5741736 1625296 5741616 1623224 5745048 +1625296 5741616 1615632 5735512 1622352 5744936 1622528 5744936 +1621712 5733232 1625232 5741464 1626056 5741184 1621784 5733192 +1626056 5741184 1625232 5741464 1625296 5741616 1625528 5741736 +1626056 5741184 1625232 5741464 1625528 5741736 1625704 5741736 +1625232 5741464 1621712 5733232 1625296 5741616 1625528 5741736 +1625232 5741464 1625296 5741616 1625528 5741736 1625704 5741736 +1621712 5733232 1625296 5741616 1625232 5741464 1621784 5733192 +1625232 5741464 1625704 5741736 1626056 5741184 1621784 5733192 +1626056 5741184 1621808 5733136 1621784 5733192 1625232 5741464 +1625296 5741616 1625232 5741464 1621712 5733232 1621616 5733232 +1625296 5741616 1625528 5741736 1625232 5741464 1621616 5733232 +1625296 5741616 1625232 5741464 1621616 5733232 1615632 5735512 +1625296 5741616 1625232 5741464 1615632 5735512 1622352 5744936 +1625296 5741616 1625528 5741736 1625232 5741464 1622352 5744936 +1625232 5741464 1621616 5733232 1615632 5735512 1622352 5744936 +1625232 5741464 1621784 5733192 1621712 5733232 1621616 5733232 +1625232 5741464 1621712 5733232 1621616 5733232 1615632 5735512 +1625296 5741616 1625360 5741680 1625528 5741736 1625232 5741464 +1626056 5741184 1625232 5741464 1625704 5741736 1625984 5741560 +1625232 5741464 1625528 5741736 1625704 5741736 1625984 5741560 +1626056 5741184 1621784 5733192 1625232 5741464 1625984 5741560 +1625704 5741736 1625832 5741696 1625984 5741560 1625232 5741464 +1621616 5733232 1621440 5733160 1615632 5735512 1625232 5741464 +1626056 5741184 1625232 5741464 1625984 5741560 1626080 5741216 +1615632 5735512 1615584 5735552 1622352 5744936 1625232 5741464 +1625296 5741616 1625232 5741464 1622352 5744936 1622528 5744936 +1625232 5741464 1615632 5735512 1622352 5744936 1622528 5744936 +1625296 5741616 1625528 5741736 1625232 5741464 1622528 5744936 +1625296 5741616 1625232 5741464 1622528 5744936 1623128 5745016 +1625232 5741464 1625288 5741224 1621784 5733192 1621712 5733232 +1625232 5741464 1625288 5741224 1621712 5733232 1621616 5733232 +1625288 5741224 1621784 5733192 1621712 5733232 1621616 5733232 +1625232 5741464 1626056 5741184 1625288 5741224 1621616 5733232 +1626056 5741184 1625288 5741224 1625232 5741464 1625984 5741560 +1625288 5741224 1621616 5733232 1625232 5741464 1625984 5741560 +1621784 5733192 1625288 5741224 1626056 5741184 1621808 5733136 +1625232 5741464 1625288 5741224 1621616 5733232 1615632 5735512 +1625232 5741464 1625288 5741224 1615632 5735512 1622352 5744936 +1625232 5741464 1625288 5741224 1622352 5744936 1622528 5744936 +1625288 5741224 1621712 5733232 1621616 5733232 1615632 5735512 +1625232 5741464 1625984 5741560 1625288 5741224 1622352 5744936 +1625288 5741224 1621616 5733232 1615632 5735512 1622352 5744936 +1625232 5741464 1625704 5741736 1625984 5741560 1625288 5741224 +1625232 5741464 1625528 5741736 1625704 5741736 1625288 5741224 +1625232 5741464 1625296 5741616 1625528 5741736 1625288 5741224 +1625232 5741464 1625528 5741736 1625288 5741224 1622352 5744936 +1625984 5741560 1626056 5741184 1625288 5741224 1625704 5741736 +1625704 5741736 1625832 5741696 1625984 5741560 1625288 5741224 +1625984 5741560 1626056 5741184 1625288 5741224 1625832 5741696 +1625704 5741736 1625832 5741696 1625288 5741224 1625528 5741736 +1621616 5733232 1621440 5733160 1615632 5735512 1625288 5741224 +1626056 5741184 1625288 5741224 1625984 5741560 1626080 5741216 +1625288 5741224 1626056 5741184 1621784 5733192 1621712 5733232 +1626056 5741184 1621784 5733192 1625288 5741224 1625984 5741560 +1615632 5735512 1615584 5735552 1622352 5744936 1625288 5741224 +1621784 5733192 1625272 5741048 1626056 5741184 1621808 5733136 +1625288 5741224 1625272 5741048 1621784 5733192 1621712 5733232 +1625288 5741224 1625272 5741048 1621712 5733232 1621616 5733232 +1625288 5741224 1625272 5741048 1621616 5733232 1615632 5735512 +1625272 5741048 1621712 5733232 1621616 5733232 1615632 5735512 +1625288 5741224 1625272 5741048 1615632 5735512 1622352 5744936 +1625288 5741224 1625272 5741048 1622352 5744936 1625232 5741464 +1622352 5744936 1622528 5744936 1625232 5741464 1625272 5741048 +1625272 5741048 1621616 5733232 1615632 5735512 1622352 5744936 +1625272 5741048 1615632 5735512 1622352 5744936 1625232 5741464 +1625272 5741048 1626056 5741184 1621784 5733192 1621712 5733232 +1621616 5733232 1621440 5733160 1615632 5735512 1625272 5741048 +1625272 5741048 1621784 5733192 1621712 5733232 1621616 5733232 +1625288 5741224 1626056 5741184 1625272 5741048 1625232 5741464 +1626056 5741184 1625272 5741048 1625288 5741224 1625984 5741560 +1615632 5735512 1615584 5735552 1622352 5744936 1625272 5741048 +1621784 5733192 1625280 5740944 1626056 5741184 1621808 5733136 +1625272 5741048 1625280 5740944 1621784 5733192 1621712 5733232 +1625272 5741048 1626056 5741184 1625280 5740944 1621712 5733232 +1626056 5741184 1625280 5740944 1625272 5741048 1625288 5741224 +1626056 5741184 1629584 5726976 1621808 5733136 1625280 5740944 +1625272 5741048 1625280 5740944 1621712 5733232 1621616 5733232 +1625272 5741048 1625280 5740944 1621616 5733232 1615632 5735512 +1625272 5741048 1625280 5740944 1615632 5735512 1622352 5744936 +1625280 5740944 1621616 5733232 1615632 5735512 1622352 5744936 +1625272 5741048 1625280 5740944 1622352 5744936 1625232 5741464 +1625280 5740944 1621784 5733192 1621712 5733232 1621616 5733232 +1625272 5741048 1626056 5741184 1625280 5740944 1622352 5744936 +1621616 5733232 1621440 5733160 1615632 5735512 1625280 5740944 +1625280 5740944 1621712 5733232 1621616 5733232 1615632 5735512 +1615632 5735512 1615584 5735552 1622352 5744936 1625280 5740944 +1621784 5733192 1621712 5733232 1625280 5740944 1621808 5733136 +1625280 5740944 1625272 5741048 1626056 5741184 1621808 5733136 +1625280 5740944 1625336 5740928 1621808 5733136 1621784 5733192 +1621808 5733136 1625336 5740928 1626056 5741184 1629584 5726976 +1625336 5740928 1626056 5741184 1621808 5733136 1621784 5733192 +1625280 5740944 1625336 5740928 1621784 5733192 1621712 5733232 +1625280 5740944 1626056 5741184 1625336 5740928 1621784 5733192 +1626056 5741184 1625336 5740928 1625280 5740944 1625272 5741048 +1626056 5741184 1625336 5740928 1625272 5741048 1625288 5741224 +1626056 5741184 1625336 5740928 1625288 5741224 1625984 5741560 +1626056 5741184 1621808 5733136 1625336 5740928 1625288 5741224 +1625336 5740928 1621784 5733192 1625280 5740944 1625272 5741048 +1625336 5740928 1625280 5740944 1625272 5741048 1625288 5741224 +1621808 5733136 1625656 5740944 1626056 5741184 1629584 5726976 +1621808 5733136 1625336 5740928 1625656 5740944 1629584 5726976 +1625656 5740944 1625336 5740928 1626056 5741184 1629584 5726976 +1621808 5733136 1625656 5740944 1629584 5726976 1621800 5732912 +1626056 5741184 1629688 5742824 1629584 5726976 1625656 5740944 +1625336 5740928 1625656 5740944 1621808 5733136 1621784 5733192 +1625656 5740944 1629584 5726976 1621808 5733136 1621784 5733192 +1625336 5740928 1625656 5740944 1621784 5733192 1625280 5740944 +1625336 5740928 1626056 5741184 1625656 5740944 1621784 5733192 +1626056 5741184 1625656 5740944 1625336 5740928 1625288 5741224 +1626056 5741184 1629584 5726976 1625656 5740944 1625288 5741224 +1625336 5740928 1625272 5741048 1625288 5741224 1625656 5740944 +1626056 5741184 1625656 5740944 1625288 5741224 1625984 5741560 +1626056 5741184 1629584 5726976 1625656 5740944 1625984 5741560 +1625288 5741224 1625832 5741696 1625984 5741560 1625656 5740944 +1626056 5741184 1625656 5740944 1625984 5741560 1626080 5741216 +1625656 5740944 1621784 5733192 1625336 5740928 1625272 5741048 +1625288 5741224 1625984 5741560 1625656 5740944 1625272 5741048 +1625336 5740928 1625280 5740944 1625272 5741048 1625656 5740944 +1626056 5741184 1625784 5741000 1625656 5740944 1625984 5741560 +1625784 5741000 1629584 5726976 1625656 5740944 1625984 5741560 +1629584 5726976 1625784 5741000 1626056 5741184 1629688 5742824 +1625656 5740944 1625784 5741000 1629584 5726976 1621808 5733136 +1625656 5740944 1625784 5741000 1621808 5733136 1621784 5733192 +1625656 5740944 1625984 5741560 1625784 5741000 1621808 5733136 +1625784 5741000 1626056 5741184 1629584 5726976 1621808 5733136 +1629584 5726976 1621800 5732912 1621808 5733136 1625784 5741000 +1626056 5741184 1625784 5741000 1625984 5741560 1626080 5741216 +1625656 5740944 1625288 5741224 1625984 5741560 1625784 5741000 +1625656 5740944 1625288 5741224 1625784 5741000 1621808 5733136 +1625984 5741560 1626056 5741184 1625784 5741000 1625288 5741224 +1625288 5741224 1625832 5741696 1625984 5741560 1625784 5741000 +1625984 5741560 1626056 5741184 1625784 5741000 1625832 5741696 +1625288 5741224 1625704 5741736 1625832 5741696 1625784 5741000 +1625832 5741696 1625984 5741560 1625784 5741000 1625704 5741736 +1625288 5741224 1625528 5741736 1625704 5741736 1625784 5741000 +1625288 5741224 1625704 5741736 1625784 5741000 1625656 5740944 +1626056 5741184 1629584 5726976 1625784 5741000 1625984 5741560 +1625656 5740944 1625272 5741048 1625288 5741224 1625784 5741000 +1625784 5741000 1625984 5741112 1629584 5726976 1621808 5733136 +1629584 5726976 1625984 5741112 1626056 5741184 1629688 5742824 +1626056 5741184 1626080 5741216 1629688 5742824 1625984 5741112 +1625984 5741112 1625784 5741000 1626056 5741184 1629688 5742824 +1629584 5726976 1625984 5741112 1629688 5742824 1629776 5726856 +1626056 5741184 1625984 5741112 1625784 5741000 1625984 5741560 +1625784 5741000 1625832 5741696 1625984 5741560 1625984 5741112 +1626056 5741184 1629688 5742824 1625984 5741112 1625984 5741560 +1626056 5741184 1625984 5741112 1625984 5741560 1626080 5741216 +1625984 5741112 1629584 5726976 1625784 5741000 1625984 5741560 +1629584 5726976 1625784 5741000 1625984 5741112 1629688 5742824 +1629584 5726976 1626248 5738800 1625784 5741000 1625984 5741112 +1629584 5726976 1621808 5733136 1626248 5738800 1625984 5741112 +1621808 5733136 1626248 5738800 1629584 5726976 1621800 5732912 +1626248 5738800 1621808 5733136 1625784 5741000 1625984 5741112 +1625784 5741000 1626248 5738800 1621808 5733136 1625656 5740944 +1621808 5733136 1621784 5733192 1625656 5740944 1626248 5738800 +1625784 5741000 1625984 5741112 1626248 5738800 1625656 5740944 +1626248 5738800 1629584 5726976 1621808 5733136 1621784 5733192 +1625656 5740944 1625784 5741000 1626248 5738800 1621784 5733192 +1629584 5726976 1626248 5738800 1625984 5741112 1629688 5742824 +1626248 5738800 1625784 5741000 1625984 5741112 1629688 5742824 +1629584 5726976 1621808 5733136 1626248 5738800 1629688 5742824 +1625984 5741112 1626056 5741184 1629688 5742824 1626248 5738800 +1625984 5741112 1626056 5741184 1626248 5738800 1625784 5741000 +1626056 5741184 1626080 5741216 1629688 5742824 1626248 5738800 +1626080 5741216 1629640 5742832 1629688 5742824 1626248 5738800 +1626080 5741216 1629640 5742832 1626248 5738800 1626056 5741184 +1626056 5741184 1626080 5741216 1626248 5738800 1625984 5741112 +1626080 5741216 1628168 5742888 1629640 5742832 1626248 5738800 +1626080 5741216 1626120 5741352 1628168 5742888 1626248 5738800 +1629640 5742832 1629688 5742824 1626248 5738800 1628168 5742888 +1626080 5741216 1628168 5742888 1626248 5738800 1626056 5741184 +1628168 5742888 1629312 5742992 1629640 5742832 1626248 5738800 +1629584 5726976 1626248 5738800 1629688 5742824 1629776 5726856 +1629584 5726976 1621808 5733136 1626248 5738800 1629776 5726856 +1629688 5742824 1629784 5742896 1629776 5726856 1626248 5738800 +1629688 5742824 1629776 5726856 1626248 5738800 1629640 5742832 +1621784 5733192 1625336 5740928 1625656 5740944 1626248 5738800 +1621784 5733192 1625336 5740928 1626248 5738800 1621808 5733136 +1621784 5733192 1625280 5740944 1625336 5740928 1626248 5738800 +1621784 5733192 1625280 5740944 1626248 5738800 1621808 5733136 +1625656 5740944 1625784 5741000 1626248 5738800 1625336 5740928 +1625336 5740928 1625656 5740944 1626248 5738800 1625280 5740944 +1621784 5733192 1621712 5733232 1625280 5740944 1626248 5738800 +1621784 5733192 1621712 5733232 1626248 5738800 1621808 5733136 +1625280 5740944 1625336 5740928 1626248 5738800 1621712 5733232 +1621712 5733232 1621616 5733232 1625280 5740944 1626248 5738800 +1625280 5740944 1625336 5740928 1626248 5738800 1621616 5733232 +1621616 5733232 1615632 5735512 1625280 5740944 1626248 5738800 +1621712 5733232 1621616 5733232 1626248 5738800 1621784 5733192 +1626248 5738800 1625888 5738752 1625280 5740944 1625336 5740928 +1626248 5738800 1621616 5733232 1625888 5738752 1625336 5740928 +1625888 5738752 1621616 5733232 1625280 5740944 1625336 5740928 +1621616 5733232 1625888 5738752 1626248 5738800 1621712 5733232 +1625888 5738752 1625336 5740928 1626248 5738800 1621712 5733232 +1621616 5733232 1625280 5740944 1625888 5738752 1621712 5733232 +1625280 5740944 1625888 5738752 1621616 5733232 1615632 5735512 +1626248 5738800 1625888 5738752 1625336 5740928 1625656 5740944 +1626248 5738800 1621712 5733232 1625888 5738752 1625656 5740944 +1625888 5738752 1625280 5740944 1625336 5740928 1625656 5740944 +1626248 5738800 1625888 5738752 1625656 5740944 1625784 5741000 +1626248 5738800 1621784 5733192 1621712 5733232 1625888 5738752 +1626248 5738800 1621808 5733136 1621784 5733192 1625888 5738752 +1626248 5738800 1621808 5733136 1625888 5738752 1625656 5740944 +1626248 5738800 1629584 5726976 1621808 5733136 1625888 5738752 +1621712 5733232 1621616 5733232 1625888 5738752 1621784 5733192 +1621784 5733192 1621712 5733232 1625888 5738752 1621808 5733136 +1625888 5738752 1625520 5738640 1625280 5740944 1625336 5740928 +1625888 5738752 1621616 5733232 1625520 5738640 1625336 5740928 +1621616 5733232 1625520 5738640 1625888 5738752 1621712 5733232 +1625520 5738640 1625336 5740928 1625888 5738752 1621712 5733232 +1625888 5738752 1625520 5738640 1625336 5740928 1625656 5740944 +1625888 5738752 1621784 5733192 1621712 5733232 1625520 5738640 +1625888 5738752 1621784 5733192 1625520 5738640 1625336 5740928 +1621712 5733232 1621616 5733232 1625520 5738640 1621784 5733192 +1625520 5738640 1621616 5733232 1625280 5740944 1625336 5740928 +1621616 5733232 1625280 5740944 1625520 5738640 1621712 5733232 +1625280 5740944 1625520 5738640 1621616 5733232 1615632 5735512 +1625280 5740944 1625520 5738640 1615632 5735512 1622352 5744936 +1621616 5733232 1621440 5733160 1615632 5735512 1625520 5738640 +1625280 5740944 1625336 5740928 1625520 5738640 1615632 5735512 +1625520 5738640 1621712 5733232 1621616 5733232 1615632 5735512 +1625888 5738752 1621808 5733136 1621784 5733192 1625520 5738640 +1625888 5738752 1626248 5738800 1621808 5733136 1625520 5738640 +1625888 5738752 1626248 5738800 1625520 5738640 1625336 5740928 +1626248 5738800 1629584 5726976 1621808 5733136 1625520 5738640 +1621784 5733192 1621712 5733232 1625520 5738640 1621808 5733136 +1621808 5733136 1621784 5733192 1625520 5738640 1626248 5738800 +1615632 5735512 1625384 5738568 1621616 5733232 1621440 5733160 +1621616 5733232 1625384 5738568 1625520 5738640 1621712 5733232 +1625520 5738640 1621784 5733192 1621712 5733232 1625384 5738568 +1625520 5738640 1621808 5733136 1621784 5733192 1625384 5738568 +1621784 5733192 1621712 5733232 1625384 5738568 1621808 5733136 +1625384 5738568 1615632 5735512 1625520 5738640 1621808 5733136 +1621712 5733232 1621616 5733232 1625384 5738568 1621784 5733192 +1625520 5738640 1625384 5738568 1615632 5735512 1625280 5740944 +1615632 5735512 1622352 5744936 1625280 5740944 1625384 5738568 +1625520 5738640 1625384 5738568 1625280 5740944 1625336 5740928 +1625520 5738640 1621808 5733136 1625384 5738568 1625280 5740944 +1625384 5738568 1621616 5733232 1615632 5735512 1625280 5740944 +1621616 5733232 1615632 5735512 1625384 5738568 1621712 5733232 +1625520 5738640 1626248 5738800 1621808 5733136 1625384 5738568 +1625520 5738640 1625888 5738752 1626248 5738800 1625384 5738568 +1626248 5738800 1629584 5726976 1621808 5733136 1625384 5738568 +1621808 5733136 1621784 5733192 1625384 5738568 1626248 5738800 +1625520 5738640 1625888 5738752 1625384 5738568 1625280 5740944 +1626248 5738800 1621808 5733136 1625384 5738568 1625888 5738752 +1615632 5735512 1625320 5738488 1621616 5733232 1621440 5733160 +1625384 5738568 1625320 5738488 1615632 5735512 1625280 5740944 +1615632 5735512 1622352 5744936 1625280 5740944 1625320 5738488 +1625320 5738488 1621616 5733232 1615632 5735512 1625280 5740944 +1625384 5738568 1625320 5738488 1625280 5740944 1625520 5738640 +1625384 5738568 1621616 5733232 1625320 5738488 1625280 5740944 +1621616 5733232 1625320 5738488 1625384 5738568 1621712 5733232 +1621616 5733232 1615632 5735512 1625320 5738488 1621712 5733232 +1625384 5738568 1621784 5733192 1621712 5733232 1625320 5738488 +1625384 5738568 1621808 5733136 1621784 5733192 1625320 5738488 +1625384 5738568 1626248 5738800 1621808 5733136 1625320 5738488 +1621808 5733136 1621784 5733192 1625320 5738488 1626248 5738800 +1626248 5738800 1629584 5726976 1621808 5733136 1625320 5738488 +1621784 5733192 1621712 5733232 1625320 5738488 1621808 5733136 +1625320 5738488 1625280 5740944 1625384 5738568 1626248 5738800 +1621712 5733232 1621616 5733232 1625320 5738488 1621784 5733192 +1625384 5738568 1625888 5738752 1626248 5738800 1625320 5738488 +1625384 5738568 1625520 5738640 1625888 5738752 1625320 5738488 +1626248 5738800 1621808 5733136 1625320 5738488 1625888 5738752 +1625384 5738568 1625520 5738640 1625320 5738488 1625280 5740944 +1625888 5738752 1626248 5738800 1625320 5738488 1625520 5738640 +1625320 5738488 1625208 5738280 1621808 5733136 1621784 5733192 +1625208 5738280 1626248 5738800 1621808 5733136 1621784 5733192 +1621808 5733136 1625208 5738280 1626248 5738800 1629584 5726976 +1626248 5738800 1629776 5726856 1629584 5726976 1625208 5738280 +1621808 5733136 1625208 5738280 1629584 5726976 1621800 5732912 +1621808 5733136 1621784 5733192 1625208 5738280 1629584 5726976 +1625208 5738280 1625320 5738488 1626248 5738800 1629584 5726976 +1626248 5738800 1625208 5738280 1625320 5738488 1625888 5738752 +1626248 5738800 1629584 5726976 1625208 5738280 1625888 5738752 +1625320 5738488 1625888 5738752 1625208 5738280 1621784 5733192 +1625320 5738488 1625208 5738280 1621784 5733192 1621712 5733232 +1625208 5738280 1621808 5733136 1621784 5733192 1621712 5733232 +1625320 5738488 1625888 5738752 1625208 5738280 1621712 5733232 +1625320 5738488 1625208 5738280 1621712 5733232 1621616 5733232 +1625320 5738488 1625888 5738752 1625208 5738280 1621616 5733232 +1625320 5738488 1625208 5738280 1621616 5733232 1615632 5735512 +1621616 5733232 1621440 5733160 1615632 5735512 1625208 5738280 +1625320 5738488 1625208 5738280 1615632 5735512 1625280 5740944 +1615632 5735512 1622352 5744936 1625280 5740944 1625208 5738280 +1625320 5738488 1625888 5738752 1625208 5738280 1625280 5740944 +1625208 5738280 1621616 5733232 1615632 5735512 1625280 5740944 +1625208 5738280 1621784 5733192 1621712 5733232 1621616 5733232 +1625320 5738488 1625208 5738280 1625280 5740944 1625384 5738568 +1625208 5738280 1621712 5733232 1621616 5733232 1615632 5735512 +1625320 5738488 1625520 5738640 1625888 5738752 1625208 5738280 +1625320 5738488 1625384 5738568 1625520 5738640 1625208 5738280 +1625888 5738752 1626248 5738800 1625208 5738280 1625520 5738640 +1625320 5738488 1625520 5738640 1625208 5738280 1625280 5740944 +1615632 5735512 1625088 5738152 1621616 5733232 1621440 5733160 +1625208 5738280 1625088 5738152 1615632 5735512 1625280 5740944 +1615632 5735512 1622352 5744936 1625280 5740944 1625088 5738152 +1622352 5744936 1625272 5741048 1625280 5740944 1625088 5738152 +1625208 5738280 1621616 5733232 1625088 5738152 1625280 5740944 +1625088 5738152 1621616 5733232 1615632 5735512 1622352 5744936 +1625208 5738280 1625088 5738152 1625280 5740944 1625320 5738488 +1625208 5738280 1621616 5733232 1625088 5738152 1625320 5738488 +1625280 5740944 1625320 5738488 1625088 5738152 1622352 5744936 +1615632 5735512 1615584 5735552 1622352 5744936 1625088 5738152 +1625280 5740944 1625384 5738568 1625320 5738488 1625088 5738152 +1621616 5733232 1625088 5738152 1625208 5738280 1621712 5733232 +1625088 5738152 1625320 5738488 1625208 5738280 1621712 5733232 +1621616 5733232 1615632 5735512 1625088 5738152 1621712 5733232 +1625208 5738280 1621784 5733192 1621712 5733232 1625088 5738152 +1625208 5738280 1621808 5733136 1621784 5733192 1625088 5738152 +1625208 5738280 1629584 5726976 1621808 5733136 1625088 5738152 +1621808 5733136 1621784 5733192 1625088 5738152 1629584 5726976 +1629584 5726976 1621800 5732912 1621808 5733136 1625088 5738152 +1629584 5726976 1621776 5732752 1621800 5732912 1625088 5738152 +1621808 5733136 1621784 5733192 1625088 5738152 1621800 5732912 +1629584 5726976 1621800 5732912 1625088 5738152 1625208 5738280 +1625208 5738280 1629584 5726976 1625088 5738152 1625320 5738488 +1625208 5738280 1626248 5738800 1629584 5726976 1625088 5738152 +1626248 5738800 1629776 5726856 1629584 5726976 1625088 5738152 +1629584 5726976 1621800 5732912 1625088 5738152 1626248 5738800 +1625208 5738280 1626248 5738800 1625088 5738152 1625320 5738488 +1625208 5738280 1625888 5738752 1626248 5738800 1625088 5738152 +1621784 5733192 1621712 5733232 1625088 5738152 1621808 5733136 +1621712 5733232 1621616 5733232 1625088 5738152 1621784 5733192 +1625088 5738152 1625032 5738112 1615632 5735512 1622352 5744936 +1625088 5738152 1625032 5738112 1622352 5744936 1625280 5740944 +1622352 5744936 1625272 5741048 1625280 5740944 1625032 5738112 +1625032 5738112 1621616 5733232 1615632 5735512 1622352 5744936 +1625032 5738112 1615632 5735512 1622352 5744936 1625280 5740944 +1625088 5738152 1621616 5733232 1625032 5738112 1625280 5740944 +1621616 5733232 1625032 5738112 1625088 5738152 1621712 5733232 +1621616 5733232 1615632 5735512 1625032 5738112 1621712 5733232 +1625032 5738112 1625280 5740944 1625088 5738152 1621712 5733232 +1615632 5735512 1625032 5738112 1621616 5733232 1621440 5733160 +1625088 5738152 1625032 5738112 1625280 5740944 1625320 5738488 +1625032 5738112 1622352 5744936 1625280 5740944 1625320 5738488 +1625088 5738152 1621712 5733232 1625032 5738112 1625320 5738488 +1625088 5738152 1625032 5738112 1625320 5738488 1625208 5738280 +1625088 5738152 1621712 5733232 1625032 5738112 1625208 5738280 +1625032 5738112 1625280 5740944 1625320 5738488 1625208 5738280 +1615632 5735512 1615584 5735552 1622352 5744936 1625032 5738112 +1625280 5740944 1625384 5738568 1625320 5738488 1625032 5738112 +1625088 5738152 1621784 5733192 1621712 5733232 1625032 5738112 +1625088 5738152 1621784 5733192 1625032 5738112 1625208 5738280 +1621712 5733232 1621616 5733232 1625032 5738112 1621784 5733192 +1625088 5738152 1621808 5733136 1621784 5733192 1625032 5738112 +1625088 5738152 1621800 5732912 1621808 5733136 1625032 5738112 +1625088 5738152 1629584 5726976 1621800 5732912 1625032 5738112 +1629584 5726976 1621776 5732752 1621800 5732912 1625032 5738112 +1621800 5732912 1621808 5733136 1625032 5738112 1629584 5726976 +1625088 5738152 1626248 5738800 1629584 5726976 1625032 5738112 +1625088 5738152 1629584 5726976 1625032 5738112 1625208 5738280 +1621808 5733136 1621784 5733192 1625032 5738112 1621800 5732912 +1621784 5733192 1621712 5733232 1625032 5738112 1621808 5733136 +1625032 5738112 1624944 5738064 1615632 5735512 1622352 5744936 +1625032 5738112 1621616 5733232 1624944 5738064 1622352 5744936 +1621616 5733232 1624944 5738064 1625032 5738112 1621712 5733232 +1624944 5738064 1622352 5744936 1625032 5738112 1621712 5733232 +1625032 5738112 1624944 5738064 1622352 5744936 1625280 5740944 +1625032 5738112 1624944 5738064 1625280 5740944 1625320 5738488 +1622352 5744936 1625272 5741048 1625280 5740944 1624944 5738064 +1624944 5738064 1615632 5735512 1622352 5744936 1625280 5740944 +1625032 5738112 1621712 5733232 1624944 5738064 1625320 5738488 +1624944 5738064 1622352 5744936 1625280 5740944 1625320 5738488 +1625032 5738112 1621784 5733192 1621712 5733232 1624944 5738064 +1625032 5738112 1621784 5733192 1624944 5738064 1625320 5738488 +1621712 5733232 1621616 5733232 1624944 5738064 1621784 5733192 +1615632 5735512 1624944 5738064 1621616 5733232 1621440 5733160 +1625032 5738112 1624944 5738064 1625320 5738488 1625208 5738280 +1624944 5738064 1625280 5740944 1625320 5738488 1625208 5738280 +1625032 5738112 1621784 5733192 1624944 5738064 1625208 5738280 +1625032 5738112 1624944 5738064 1625208 5738280 1625088 5738152 +1621616 5733232 1615632 5735512 1624944 5738064 1621712 5733232 +1624944 5738064 1621616 5733232 1615632 5735512 1622352 5744936 +1615632 5735512 1615584 5735552 1622352 5744936 1624944 5738064 +1625280 5740944 1625384 5738568 1625320 5738488 1624944 5738064 +1625032 5738112 1621808 5733136 1621784 5733192 1624944 5738064 +1625032 5738112 1621808 5733136 1624944 5738064 1625208 5738280 +1621784 5733192 1621712 5733232 1624944 5738064 1621808 5733136 +1625032 5738112 1621800 5732912 1621808 5733136 1624944 5738064 +1625032 5738112 1629584 5726976 1621800 5732912 1624944 5738064 +1629584 5726976 1621776 5732752 1621800 5732912 1624944 5738064 +1625032 5738112 1629584 5726976 1624944 5738064 1625208 5738280 +1625032 5738112 1625088 5738152 1629584 5726976 1624944 5738064 +1621800 5732912 1621808 5733136 1624944 5738064 1629584 5726976 +1621808 5733136 1621784 5733192 1624944 5738064 1621800 5732912 +1621800 5732912 1624904 5738000 1624944 5738064 1629584 5726976 +1621800 5732912 1624904 5738000 1629584 5726976 1621776 5732752 +1624944 5738064 1625032 5738112 1629584 5726976 1624904 5738000 +1625032 5738112 1625088 5738152 1629584 5726976 1624904 5738000 +1625032 5738112 1625088 5738152 1624904 5738000 1624944 5738064 +1625088 5738152 1626248 5738800 1629584 5726976 1624904 5738000 +1626248 5738800 1629776 5726856 1629584 5726976 1624904 5738000 +1625088 5738152 1626248 5738800 1624904 5738000 1625032 5738112 +1625088 5738152 1625208 5738280 1626248 5738800 1624904 5738000 +1629584 5726976 1621800 5732912 1624904 5738000 1626248 5738800 +1621800 5732912 1621808 5733136 1624904 5738000 1629584 5726976 +1624904 5738000 1621808 5733136 1624944 5738064 1625032 5738112 +1624944 5738064 1624904 5738000 1621808 5733136 1621784 5733192 +1624944 5738064 1624904 5738000 1621784 5733192 1621712 5733232 +1624944 5738064 1624904 5738000 1621712 5733232 1621616 5733232 +1624904 5738000 1621784 5733192 1621712 5733232 1621616 5733232 +1624944 5738064 1625032 5738112 1624904 5738000 1621616 5733232 +1624944 5738064 1624904 5738000 1621616 5733232 1615632 5735512 +1624904 5738000 1621712 5733232 1621616 5733232 1615632 5735512 +1621616 5733232 1621440 5733160 1615632 5735512 1624904 5738000 +1624944 5738064 1625032 5738112 1624904 5738000 1615632 5735512 +1624904 5738000 1621800 5732912 1621808 5733136 1621784 5733192 +1624944 5738064 1624904 5738000 1615632 5735512 1622352 5744936 +1624944 5738064 1624904 5738000 1622352 5744936 1625280 5740944 +1622352 5744936 1625272 5741048 1625280 5740944 1624904 5738000 +1624944 5738064 1624904 5738000 1625280 5740944 1625320 5738488 +1624904 5738000 1615632 5735512 1622352 5744936 1625280 5740944 +1624944 5738064 1625032 5738112 1624904 5738000 1625280 5740944 +1624904 5738000 1621616 5733232 1615632 5735512 1622352 5744936 +1615632 5735512 1615584 5735552 1622352 5744936 1624904 5738000 +1624904 5738000 1621808 5733136 1621784 5733192 1621712 5733232 +1629584 5726976 1625120 5738032 1626248 5738800 1629776 5726856 +1626248 5738800 1625120 5738032 1624904 5738000 1625088 5738152 +1624904 5738000 1625032 5738112 1625088 5738152 1625120 5738032 +1624904 5738000 1624944 5738064 1625032 5738112 1625120 5738032 +1625032 5738112 1625088 5738152 1625120 5738032 1624944 5738064 +1625088 5738152 1626248 5738800 1625120 5738032 1625032 5738112 +1626248 5738800 1625120 5738032 1625088 5738152 1625208 5738280 +1625120 5738032 1625032 5738112 1625088 5738152 1625208 5738280 +1626248 5738800 1625120 5738032 1625208 5738280 1625888 5738752 +1625120 5738032 1625088 5738152 1625208 5738280 1625888 5738752 +1626248 5738800 1629584 5726976 1625120 5738032 1625888 5738752 +1625208 5738280 1625520 5738640 1625888 5738752 1625120 5738032 +1624904 5738000 1625120 5738032 1629584 5726976 1621800 5732912 +1629584 5726976 1621776 5732752 1621800 5732912 1625120 5738032 +1624904 5738000 1625120 5738032 1621800 5732912 1621808 5733136 +1625120 5738032 1629584 5726976 1621800 5732912 1621808 5733136 +1625120 5738032 1621808 5733136 1624904 5738000 1624944 5738064 +1625120 5738032 1626248 5738800 1629584 5726976 1621800 5732912 +1624904 5738000 1625120 5738032 1621808 5733136 1621784 5733192 +1629584 5726976 1625488 5738112 1626248 5738800 1629776 5726856 +1626248 5738800 1625488 5738112 1625120 5738032 1625888 5738752 +1626248 5738800 1629584 5726976 1625488 5738112 1625888 5738752 +1625120 5738032 1625208 5738280 1625888 5738752 1625488 5738112 +1625120 5738032 1625088 5738152 1625208 5738280 1625488 5738112 +1625488 5738112 1629584 5726976 1625120 5738032 1625208 5738280 +1625888 5738752 1626248 5738800 1625488 5738112 1625208 5738280 +1625208 5738280 1625520 5738640 1625888 5738752 1625488 5738112 +1625208 5738280 1625520 5738640 1625488 5738112 1625120 5738032 +1625888 5738752 1626248 5738800 1625488 5738112 1625520 5738640 +1625120 5738032 1625488 5738112 1629584 5726976 1621800 5732912 +1629584 5726976 1621776 5732752 1621800 5732912 1625488 5738112 +1625120 5738032 1625208 5738280 1625488 5738112 1621800 5732912 +1625488 5738112 1626248 5738800 1629584 5726976 1621800 5732912 +1625120 5738032 1625488 5738112 1621800 5732912 1621808 5733136 +1625120 5738032 1625208 5738280 1625488 5738112 1621808 5733136 +1625120 5738032 1625488 5738112 1621808 5733136 1624904 5738000 +1625488 5738112 1629584 5726976 1621800 5732912 1621808 5733136 +1625208 5738280 1625320 5738488 1625520 5738640 1625488 5738112 +1625320 5738488 1625384 5738568 1625520 5738640 1625488 5738112 +1625208 5738280 1625320 5738488 1625488 5738112 1625120 5738032 +1625520 5738640 1625888 5738752 1625488 5738112 1625384 5738568 +1625320 5738488 1625384 5738568 1625488 5738112 1625208 5738280 +1629584 5726976 1625656 5738160 1626248 5738800 1629776 5726856 +1626248 5738800 1625656 5738160 1625488 5738112 1625888 5738752 +1626248 5738800 1629584 5726976 1625656 5738160 1625888 5738752 +1625656 5738160 1629584 5726976 1625488 5738112 1625888 5738752 +1625488 5738112 1625520 5738640 1625888 5738752 1625656 5738160 +1625488 5738112 1625520 5738640 1625656 5738160 1629584 5726976 +1625888 5738752 1626248 5738800 1625656 5738160 1625520 5738640 +1625488 5738112 1625656 5738160 1629584 5726976 1621800 5732912 +1629584 5726976 1621776 5732752 1621800 5732912 1625656 5738160 +1625656 5738160 1626248 5738800 1629584 5726976 1621800 5732912 +1625488 5738112 1625520 5738640 1625656 5738160 1621800 5732912 +1625488 5738112 1625384 5738568 1625520 5738640 1625656 5738160 +1625488 5738112 1625320 5738488 1625384 5738568 1625656 5738160 +1625488 5738112 1625320 5738488 1625656 5738160 1621800 5732912 +1625520 5738640 1625888 5738752 1625656 5738160 1625384 5738568 +1625384 5738568 1625520 5738640 1625656 5738160 1625320 5738488 +1625488 5738112 1625656 5738160 1621800 5732912 1621808 5733136 +1625488 5738112 1625320 5738488 1625656 5738160 1621808 5733136 +1625656 5738160 1629584 5726976 1621800 5732912 1621808 5733136 +1625488 5738112 1625656 5738160 1621808 5733136 1625120 5738032 +1625488 5738112 1625208 5738280 1625320 5738488 1625656 5738160 +1629584 5726976 1625760 5738184 1626248 5738800 1629776 5726856 +1625656 5738160 1625760 5738184 1629584 5726976 1621800 5732912 +1629584 5726976 1621776 5732752 1621800 5732912 1625760 5738184 +1625656 5738160 1626248 5738800 1625760 5738184 1621800 5732912 +1626248 5738800 1625760 5738184 1625656 5738160 1625888 5738752 +1625760 5738184 1621800 5732912 1625656 5738160 1625888 5738752 +1625656 5738160 1625520 5738640 1625888 5738752 1625760 5738184 +1625656 5738160 1625520 5738640 1625760 5738184 1621800 5732912 +1625888 5738752 1626248 5738800 1625760 5738184 1625520 5738640 +1625760 5738184 1626248 5738800 1629584 5726976 1621800 5732912 +1626248 5738800 1629584 5726976 1625760 5738184 1625888 5738752 +1625656 5738160 1625384 5738568 1625520 5738640 1625760 5738184 +1625656 5738160 1625760 5738184 1621800 5732912 1621808 5733136 +1625760 5738184 1629584 5726976 1621800 5732912 1621808 5733136 +1625656 5738160 1625520 5738640 1625760 5738184 1621808 5733136 +1625656 5738160 1625760 5738184 1621808 5733136 1625488 5738112 +1625656 5738160 1625520 5738640 1625760 5738184 1625488 5738112 +1625760 5738184 1621800 5732912 1621808 5733136 1625488 5738112 +1621808 5733136 1625120 5738032 1625488 5738112 1625760 5738184 +1629584 5726976 1626040 5738272 1626248 5738800 1629776 5726856 +1625760 5738184 1626040 5738272 1629584 5726976 1621800 5732912 +1629584 5726976 1621776 5732752 1621800 5732912 1626040 5738272 +1625760 5738184 1626040 5738272 1621800 5732912 1621808 5733136 +1625760 5738184 1626248 5738800 1626040 5738272 1621800 5732912 +1626248 5738800 1626040 5738272 1625760 5738184 1625888 5738752 +1625760 5738184 1625520 5738640 1625888 5738752 1626040 5738272 +1626040 5738272 1621800 5732912 1625760 5738184 1625888 5738752 +1629584 5726976 1621800 5732912 1626040 5738272 1629776 5726856 +1626040 5738272 1625888 5738752 1626248 5738800 1629776 5726856 +1626248 5738800 1629688 5742824 1629776 5726856 1626040 5738272 +1629776 5726856 1629584 5726976 1626040 5738272 1629688 5742824 +1629688 5742824 1629784 5742896 1629776 5726856 1626040 5738272 +1626248 5738800 1629688 5742824 1626040 5738272 1625888 5738752 +1626248 5738800 1629640 5742832 1629688 5742824 1626040 5738272 +1626040 5738272 1626136 5738328 1629776 5726856 1629584 5726976 +1626040 5738272 1626136 5738328 1629584 5726976 1621800 5732912 +1626040 5738272 1629688 5742824 1626136 5738328 1629584 5726976 +1629776 5726856 1626136 5738328 1629688 5742824 1629784 5742896 +1626136 5738328 1629688 5742824 1629776 5726856 1629584 5726976 +1629688 5742824 1626136 5738328 1626040 5738272 1626248 5738800 +1626136 5738328 1629584 5726976 1626040 5738272 1626248 5738800 +1626040 5738272 1625888 5738752 1626248 5738800 1626136 5738328 +1626040 5738272 1625760 5738184 1625888 5738752 1626136 5738328 +1626040 5738272 1625888 5738752 1626136 5738328 1629584 5726976 +1629688 5742824 1629776 5726856 1626136 5738328 1626248 5738800 +1626248 5738800 1629688 5742824 1626136 5738328 1625888 5738752 +1629688 5742824 1626136 5738328 1626248 5738800 1629640 5742832 +1629776 5726856 1626296 5738488 1629688 5742824 1629784 5742896 +1626136 5738328 1626296 5738488 1629776 5726856 1629584 5726976 +1626136 5738328 1626296 5738488 1629584 5726976 1626040 5738272 +1626296 5738488 1629688 5742824 1629776 5726856 1629584 5726976 +1626136 5738328 1629688 5742824 1626296 5738488 1629584 5726976 +1629688 5742824 1626296 5738488 1626136 5738328 1626248 5738800 +1629688 5742824 1629776 5726856 1626296 5738488 1626248 5738800 +1626296 5738488 1629584 5726976 1626136 5738328 1626248 5738800 +1626136 5738328 1625888 5738752 1626248 5738800 1626296 5738488 +1626136 5738328 1626040 5738272 1625888 5738752 1626296 5738488 +1626136 5738328 1625888 5738752 1626296 5738488 1629584 5726976 +1626248 5738800 1629688 5742824 1626296 5738488 1625888 5738752 +1629688 5742824 1626296 5738488 1626248 5738800 1629640 5742832 +1629776 5726856 1626424 5738568 1629688 5742824 1629784 5742896 +1626296 5738488 1626424 5738568 1629776 5726856 1629584 5726976 +1626296 5738488 1626424 5738568 1629584 5726976 1626136 5738328 +1629584 5726976 1626040 5738272 1626136 5738328 1626424 5738568 +1626424 5738568 1629776 5726856 1629584 5726976 1626136 5738328 +1626296 5738488 1629688 5742824 1626424 5738568 1626136 5738328 +1629688 5742824 1626424 5738568 1626296 5738488 1626248 5738800 +1626424 5738568 1626136 5738328 1626296 5738488 1626248 5738800 +1626424 5738568 1629688 5742824 1629776 5726856 1629584 5726976 +1629688 5742824 1629776 5726856 1626424 5738568 1626248 5738800 +1626296 5738488 1625888 5738752 1626248 5738800 1626424 5738568 +1629688 5742824 1626424 5738568 1626248 5738800 1629640 5742832 +1626248 5738800 1628168 5742888 1629640 5742832 1626424 5738568 +1628168 5742888 1629312 5742992 1629640 5742832 1626424 5738568 +1626424 5738568 1626296 5738488 1626248 5738800 1628168 5742888 +1629688 5742824 1629776 5726856 1626424 5738568 1629640 5742832 +1626248 5738800 1626080 5741216 1628168 5742888 1626424 5738568 +1626080 5741216 1626120 5741352 1628168 5742888 1626424 5738568 +1628168 5742888 1629640 5742832 1626424 5738568 1626080 5741216 +1626248 5738800 1626056 5741184 1626080 5741216 1626424 5738568 +1626248 5738800 1626080 5741216 1626424 5738568 1626296 5738488 +1629640 5742832 1629688 5742824 1626424 5738568 1628168 5742888 +1629776 5726856 1626496 5738600 1629688 5742824 1629784 5742896 +1629776 5726856 1626496 5738600 1629784 5742896 1630424 5743368 +1626424 5738568 1626496 5738600 1629776 5726856 1629584 5726976 +1626424 5738568 1626496 5738600 1629584 5726976 1626136 5738328 +1629584 5726976 1626040 5738272 1626136 5738328 1626496 5738600 +1626424 5738568 1626496 5738600 1626136 5738328 1626296 5738488 +1626496 5738600 1629584 5726976 1626136 5738328 1626296 5738488 +1626496 5738600 1629776 5726856 1629584 5726976 1626136 5738328 +1626424 5738568 1629688 5742824 1626496 5738600 1626296 5738488 +1629688 5742824 1626496 5738600 1626424 5738568 1629640 5742832 +1626496 5738600 1626296 5738488 1626424 5738568 1629640 5742832 +1629776 5726856 1629584 5726976 1626496 5738600 1629784 5742896 +1626496 5738600 1629640 5742832 1629688 5742824 1629784 5742896 +1626424 5738568 1628168 5742888 1629640 5742832 1626496 5738600 +1626424 5738568 1626080 5741216 1628168 5742888 1626496 5738600 +1626080 5741216 1626120 5741352 1628168 5742888 1626496 5738600 +1628168 5742888 1629312 5742992 1629640 5742832 1626496 5738600 +1626424 5738568 1626080 5741216 1626496 5738600 1626296 5738488 +1629640 5742832 1629688 5742824 1626496 5738600 1628168 5742888 +1626424 5738568 1626248 5738800 1626080 5741216 1626496 5738600 +1626080 5741216 1628168 5742888 1626496 5738600 1626248 5738800 +1626248 5738800 1626056 5741184 1626080 5741216 1626496 5738600 +1626080 5741216 1628168 5742888 1626496 5738600 1626056 5741184 +1626248 5738800 1625984 5741112 1626056 5741184 1626496 5738600 +1626424 5738568 1626296 5738488 1626248 5738800 1626496 5738600 +1626424 5738568 1626248 5738800 1626496 5738600 1626296 5738488 +1626248 5738800 1626056 5741184 1626496 5738600 1626424 5738568 +1628168 5742888 1629640 5742832 1626496 5738600 1626080 5741216 +1629776 5726856 1626688 5738608 1629784 5742896 1630424 5743368 +1629784 5742896 1630312 5743312 1630424 5743368 1626688 5738608 +1629784 5742896 1626688 5738608 1626496 5738600 1629688 5742824 +1629776 5726856 1626688 5738608 1630424 5743368 1629872 5726768 +1626496 5738600 1626688 5738608 1629776 5726856 1629584 5726976 +1626496 5738600 1626688 5738608 1629584 5726976 1626136 5738328 +1629584 5726976 1626040 5738272 1626136 5738328 1626688 5738608 +1626496 5738600 1626688 5738608 1626136 5738328 1626296 5738488 +1626496 5738600 1626688 5738608 1626296 5738488 1626424 5738568 +1626688 5738608 1626136 5738328 1626296 5738488 1626424 5738568 +1626688 5738608 1629584 5726976 1626136 5738328 1626296 5738488 +1626688 5738608 1629776 5726856 1629584 5726976 1626136 5738328 +1629776 5726856 1629584 5726976 1626688 5738608 1630424 5743368 +1626688 5738608 1629688 5742824 1629784 5742896 1630424 5743368 +1626496 5738600 1629640 5742832 1629688 5742824 1626688 5738608 +1629688 5742824 1629784 5742896 1626688 5738608 1629640 5742832 +1626496 5738600 1628168 5742888 1629640 5742832 1626688 5738608 +1628168 5742888 1629312 5742992 1629640 5742832 1626688 5738608 +1629640 5742832 1629688 5742824 1626688 5738608 1628168 5742888 +1626688 5738608 1626424 5738568 1626496 5738600 1628168 5742888 +1626496 5738600 1626080 5741216 1628168 5742888 1626688 5738608 +1626080 5741216 1626120 5741352 1628168 5742888 1626688 5738608 +1626496 5738600 1626056 5741184 1626080 5741216 1626688 5738608 +1626496 5738600 1626248 5738800 1626056 5741184 1626688 5738608 +1626056 5741184 1626080 5741216 1626688 5738608 1626248 5738800 +1626248 5738800 1625984 5741112 1626056 5741184 1626688 5738608 +1626056 5741184 1626080 5741216 1626688 5738608 1625984 5741112 +1626248 5738800 1625784 5741000 1625984 5741112 1626688 5738608 +1626248 5738800 1625984 5741112 1626688 5738608 1626496 5738600 +1628168 5742888 1629640 5742832 1626688 5738608 1626080 5741216 +1626496 5738600 1626248 5738800 1626688 5738608 1626424 5738568 +1626496 5738600 1626424 5738568 1626248 5738800 1626688 5738608 +1626080 5741216 1628168 5742888 1626688 5738608 1626056 5741184 +1630424 5743368 1626944 5738696 1626688 5738608 1629784 5742896 +1630424 5743368 1626944 5738696 1629784 5742896 1630312 5743312 +1629776 5726856 1626944 5738696 1630424 5743368 1629872 5726768 +1626688 5738608 1626944 5738696 1629776 5726856 1629584 5726976 +1626688 5738608 1626944 5738696 1629584 5726976 1626136 5738328 +1629584 5726976 1626040 5738272 1626136 5738328 1626944 5738696 +1629584 5726976 1621800 5732912 1626040 5738272 1626944 5738696 +1626688 5738608 1626944 5738696 1626136 5738328 1626296 5738488 +1626136 5738328 1626688 5738608 1626944 5738696 1626040 5738272 +1626944 5738696 1629776 5726856 1629584 5726976 1626040 5738272 +1626944 5738696 1626136 5738328 1626688 5738608 1629784 5742896 +1626688 5738608 1629688 5742824 1629784 5742896 1626944 5738696 +1629784 5742896 1630424 5743368 1626944 5738696 1629688 5742824 +1626688 5738608 1629640 5742832 1629688 5742824 1626944 5738696 +1626688 5738608 1629640 5742832 1626944 5738696 1626136 5738328 +1629688 5742824 1629784 5742896 1626944 5738696 1629640 5742832 +1626688 5738608 1628168 5742888 1629640 5742832 1626944 5738696 +1628168 5742888 1629312 5742992 1629640 5742832 1626944 5738696 +1629640 5742832 1629688 5742824 1626944 5738696 1628168 5742888 +1626688 5738608 1626080 5741216 1628168 5742888 1626944 5738696 +1626080 5741216 1626120 5741352 1628168 5742888 1626944 5738696 +1626688 5738608 1626080 5741216 1626944 5738696 1626136 5738328 +1628168 5742888 1629640 5742832 1626944 5738696 1626080 5741216 +1626944 5738696 1630424 5743368 1629776 5726856 1629584 5726976 +1630424 5743368 1629776 5726856 1626944 5738696 1629784 5742896 +1626688 5738608 1626056 5741184 1626080 5741216 1626944 5738696 +1626688 5738608 1625984 5741112 1626056 5741184 1626944 5738696 +1626688 5738608 1626248 5738800 1625984 5741112 1626944 5738696 +1625984 5741112 1626056 5741184 1626944 5738696 1626248 5738800 +1626248 5738800 1625784 5741000 1625984 5741112 1626944 5738696 +1626688 5738608 1626496 5738600 1626248 5738800 1626944 5738696 +1626080 5741216 1628168 5742888 1626944 5738696 1626056 5741184 +1626688 5738608 1626248 5738800 1626944 5738696 1626136 5738328 +1626056 5741184 1626080 5741216 1626944 5738696 1625984 5741112 +1629776 5726856 1627032 5738744 1630424 5743368 1629872 5726768 +1627032 5738744 1626944 5738696 1630424 5743368 1629872 5726768 +1630424 5743368 1630632 5743536 1629872 5726768 1627032 5738744 +1626944 5738696 1627032 5738744 1629776 5726856 1629584 5726976 +1626944 5738696 1627032 5738744 1629584 5726976 1626040 5738272 +1626944 5738696 1630424 5743368 1627032 5738744 1629584 5726976 +1630424 5743368 1627032 5738744 1626944 5738696 1629784 5742896 +1630424 5743368 1629872 5726768 1627032 5738744 1629784 5742896 +1626944 5738696 1629688 5742824 1629784 5742896 1627032 5738744 +1630424 5743368 1627032 5738744 1629784 5742896 1630312 5743312 +1626944 5738696 1629640 5742832 1629688 5742824 1627032 5738744 +1629688 5742824 1629784 5742896 1627032 5738744 1629640 5742832 +1626944 5738696 1628168 5742888 1629640 5742832 1627032 5738744 +1628168 5742888 1629312 5742992 1629640 5742832 1627032 5738744 +1629640 5742832 1629688 5742824 1627032 5738744 1628168 5742888 +1626944 5738696 1626080 5741216 1628168 5742888 1627032 5738744 +1626080 5741216 1626120 5741352 1628168 5742888 1627032 5738744 +1628168 5742888 1629640 5742832 1627032 5738744 1626080 5741216 +1626944 5738696 1626056 5741184 1626080 5741216 1627032 5738744 +1626080 5741216 1628168 5742888 1627032 5738744 1626056 5741184 +1627032 5738744 1629584 5726976 1626944 5738696 1626056 5741184 +1629784 5742896 1630424 5743368 1627032 5738744 1629688 5742824 +1629776 5726856 1629584 5726976 1627032 5738744 1629872 5726768 +1626944 5738696 1625984 5741112 1626056 5741184 1627032 5738744 +1626944 5738696 1626248 5738800 1625984 5741112 1627032 5738744 +1626248 5738800 1625784 5741000 1625984 5741112 1627032 5738744 +1626944 5738696 1626688 5738608 1626248 5738800 1627032 5738744 +1626056 5741184 1626080 5741216 1627032 5738744 1625984 5741112 +1626944 5738696 1626248 5738800 1627032 5738744 1629584 5726976 +1625984 5741112 1626056 5741184 1627032 5738744 1626248 5738800 +1630424 5743368 1627128 5738848 1627032 5738744 1629784 5742896 +1630424 5743368 1629872 5726768 1627128 5738848 1629784 5742896 +1629872 5726768 1627128 5738848 1630424 5743368 1630632 5743536 +1630424 5743368 1627128 5738848 1629784 5742896 1630312 5743312 +1627032 5738744 1627128 5738848 1629872 5726768 1629776 5726856 +1627128 5738848 1630424 5743368 1629872 5726768 1629776 5726856 +1627032 5738744 1629688 5742824 1629784 5742896 1627128 5738848 +1629784 5742896 1630424 5743368 1627128 5738848 1629688 5742824 +1627032 5738744 1629640 5742832 1629688 5742824 1627128 5738848 +1627032 5738744 1628168 5742888 1629640 5742832 1627128 5738848 +1629640 5742832 1629688 5742824 1627128 5738848 1628168 5742888 +1628168 5742888 1629312 5742992 1629640 5742832 1627128 5738848 +1627032 5738744 1626080 5741216 1628168 5742888 1627128 5738848 +1626080 5741216 1626120 5741352 1628168 5742888 1627128 5738848 +1626120 5741352 1628128 5742888 1628168 5742888 1627128 5738848 +1626080 5741216 1626120 5741352 1627128 5738848 1627032 5738744 +1628168 5742888 1629640 5742832 1627128 5738848 1626120 5741352 +1627032 5738744 1626056 5741184 1626080 5741216 1627128 5738848 +1626080 5741216 1626120 5741352 1627128 5738848 1626056 5741184 +1627032 5738744 1625984 5741112 1626056 5741184 1627128 5738848 +1626056 5741184 1626080 5741216 1627128 5738848 1625984 5741112 +1629688 5742824 1629784 5742896 1627128 5738848 1629640 5742832 +1627032 5738744 1627128 5738848 1629776 5726856 1629584 5726976 +1627128 5738848 1629872 5726768 1629776 5726856 1629584 5726976 +1627032 5738744 1627128 5738848 1629584 5726976 1626944 5738696 +1627128 5738848 1629584 5726976 1627032 5738744 1625984 5741112 +1627032 5738744 1626248 5738800 1625984 5741112 1627128 5738848 +1627032 5738744 1626944 5738696 1626248 5738800 1627128 5738848 +1626248 5738800 1625784 5741000 1625984 5741112 1627128 5738848 +1626944 5738696 1626688 5738608 1626248 5738800 1627128 5738848 +1625984 5741112 1626056 5741184 1627128 5738848 1626248 5738800 +1627032 5738744 1626944 5738696 1627128 5738848 1629584 5726976 +1626248 5738800 1625984 5741112 1627128 5738848 1626944 5738696 +1626120 5741352 1627136 5738888 1627128 5738848 1626080 5741216 +1628168 5742888 1627136 5738888 1626120 5741352 1628128 5742888 +1627136 5738888 1628168 5742888 1627128 5738848 1626080 5741216 +1627128 5738848 1626056 5741184 1626080 5741216 1627136 5738888 +1626080 5741216 1626120 5741352 1627136 5738888 1626056 5741184 +1627128 5738848 1626056 5741184 1627136 5738888 1628168 5742888 +1626120 5741352 1628168 5742888 1627136 5738888 1626080 5741216 +1627128 5738848 1627136 5738888 1628168 5742888 1629640 5742832 +1627128 5738848 1626056 5741184 1627136 5738888 1629640 5742832 +1627136 5738888 1626120 5741352 1628168 5742888 1629640 5742832 +1627128 5738848 1627136 5738888 1629640 5742832 1629688 5742824 +1627128 5738848 1626056 5741184 1627136 5738888 1629688 5742824 +1628168 5742888 1629312 5742992 1629640 5742832 1627136 5738888 +1627136 5738888 1628168 5742888 1629640 5742832 1629688 5742824 +1627128 5738848 1625984 5741112 1626056 5741184 1627136 5738888 +1627128 5738848 1625984 5741112 1627136 5738888 1629688 5742824 +1626056 5741184 1626080 5741216 1627136 5738888 1625984 5741112 +1627128 5738848 1626248 5738800 1625984 5741112 1627136 5738888 +1627128 5738848 1626248 5738800 1627136 5738888 1629688 5742824 +1626248 5738800 1625784 5741000 1625984 5741112 1627136 5738888 +1625984 5741112 1626056 5741184 1627136 5738888 1626248 5738800 +1627128 5738848 1627136 5738888 1629688 5742824 1629784 5742896 +1627128 5738848 1626944 5738696 1626248 5738800 1627136 5738888 +1627128 5738848 1626944 5738696 1627136 5738888 1629688 5742824 +1627128 5738848 1627032 5738744 1626944 5738696 1627136 5738888 +1627128 5738848 1627032 5738744 1627136 5738888 1629688 5742824 +1626944 5738696 1626688 5738608 1626248 5738800 1627136 5738888 +1626248 5738800 1625984 5741112 1627136 5738888 1626944 5738696 +1626944 5738696 1626248 5738800 1627136 5738888 1627032 5738744 +1627136 5738888 1627096 5738976 1626080 5741216 1626120 5741352 +1626056 5741184 1627096 5738976 1627136 5738888 1625984 5741112 +1626056 5741184 1626080 5741216 1627096 5738976 1625984 5741112 +1627136 5738888 1625984 5741112 1627096 5738976 1626120 5741352 +1627136 5738888 1627096 5738976 1626120 5741352 1628168 5742888 +1627096 5738976 1626080 5741216 1626120 5741352 1628168 5742888 +1626120 5741352 1628128 5742888 1628168 5742888 1627096 5738976 +1626120 5741352 1628128 5742888 1627096 5738976 1626080 5741216 +1627136 5738888 1627096 5738976 1628168 5742888 1629640 5742832 +1626120 5741352 1628056 5742960 1628128 5742888 1627096 5738976 +1628168 5742888 1629312 5742992 1629640 5742832 1627096 5738976 +1627136 5738888 1625984 5741112 1627096 5738976 1629640 5742832 +1628168 5742888 1629640 5742832 1627096 5738976 1628128 5742888 +1627096 5738976 1626056 5741184 1626080 5741216 1626120 5741352 +1627136 5738888 1627096 5738976 1629640 5742832 1629688 5742824 +1627096 5738976 1628168 5742888 1629640 5742832 1629688 5742824 +1627136 5738888 1627096 5738976 1629688 5742824 1627128 5738848 +1627136 5738888 1625984 5741112 1627096 5738976 1629688 5742824 +1627136 5738888 1626248 5738800 1625984 5741112 1627096 5738976 +1626248 5738800 1625784 5741000 1625984 5741112 1627096 5738976 +1625984 5741112 1626056 5741184 1627096 5738976 1625784 5741000 +1626248 5738800 1625656 5740944 1625784 5741000 1627096 5738976 +1627136 5738888 1626944 5738696 1626248 5738800 1627096 5738976 +1626944 5738696 1626688 5738608 1626248 5738800 1627096 5738976 +1626688 5738608 1626496 5738600 1626248 5738800 1627096 5738976 +1626944 5738696 1626688 5738608 1627096 5738976 1627136 5738888 +1627136 5738888 1626944 5738696 1627096 5738976 1629688 5742824 +1626248 5738800 1625784 5741000 1627096 5738976 1626688 5738608 +1627136 5738888 1627032 5738744 1626944 5738696 1627096 5738976 +1627136 5738888 1627128 5738848 1627032 5738744 1627096 5738976 +1626944 5738696 1626688 5738608 1627096 5738976 1627032 5738744 +1627136 5738888 1627128 5738848 1627096 5738976 1629688 5742824 +1627032 5738744 1626944 5738696 1627096 5738976 1627128 5738848 +1627096 5738976 1627024 5739072 1625784 5741000 1625984 5741112 +1627096 5738976 1627024 5739072 1625984 5741112 1626056 5741184 +1627024 5739072 1625784 5741000 1625984 5741112 1626056 5741184 +1625784 5741000 1627024 5739072 1626248 5738800 1625656 5740944 +1627096 5738976 1626248 5738800 1627024 5739072 1626056 5741184 +1627096 5738976 1627024 5739072 1626056 5741184 1626080 5741216 +1627024 5739072 1625984 5741112 1626056 5741184 1626080 5741216 +1627096 5738976 1626248 5738800 1627024 5739072 1626080 5741216 +1627024 5739072 1626248 5738800 1625784 5741000 1625984 5741112 +1627096 5738976 1627024 5739072 1626080 5741216 1626120 5741352 +1627096 5738976 1627024 5739072 1626120 5741352 1628128 5742888 +1627096 5738976 1627024 5739072 1628128 5742888 1628168 5742888 +1627024 5739072 1626120 5741352 1628128 5742888 1628168 5742888 +1626120 5741352 1628056 5742960 1628128 5742888 1627024 5739072 +1627096 5738976 1626248 5738800 1627024 5739072 1628168 5742888 +1627024 5739072 1626056 5741184 1626080 5741216 1626120 5741352 +1627096 5738976 1627024 5739072 1628168 5742888 1629640 5742832 +1627024 5739072 1628128 5742888 1628168 5742888 1629640 5742832 +1627096 5738976 1627024 5739072 1629640 5742832 1629688 5742824 +1628168 5742888 1629312 5742992 1629640 5742832 1627024 5739072 +1627096 5738976 1626248 5738800 1627024 5739072 1629640 5742832 +1627024 5739072 1626080 5741216 1626120 5741352 1628128 5742888 +1626248 5738800 1627024 5739072 1627096 5738976 1626688 5738608 +1626248 5738800 1627024 5739072 1626688 5738608 1626496 5738600 +1627096 5738976 1626944 5738696 1626688 5738608 1627024 5739072 +1626248 5738800 1625784 5741000 1627024 5739072 1626688 5738608 +1627096 5738976 1627032 5738744 1626944 5738696 1627024 5739072 +1626944 5738696 1626688 5738608 1627024 5739072 1627032 5738744 +1627024 5739072 1629640 5742832 1627096 5738976 1627032 5738744 +1626688 5738608 1626248 5738800 1627024 5739072 1626944 5738696 +1627096 5738976 1627128 5738848 1627032 5738744 1627024 5739072 +1625784 5741000 1626992 5739096 1626248 5738800 1625656 5740944 +1626248 5738800 1626992 5739096 1627024 5739072 1626688 5738608 +1626248 5738800 1626992 5739096 1626688 5738608 1626496 5738600 +1626992 5739096 1625784 5741000 1627024 5739072 1626688 5738608 +1626248 5738800 1625784 5741000 1626992 5739096 1626688 5738608 +1627024 5739072 1626992 5739096 1625784 5741000 1625984 5741112 +1627024 5739072 1626992 5739096 1625984 5741112 1626056 5741184 +1627024 5739072 1626992 5739096 1626056 5741184 1626080 5741216 +1626992 5739096 1625984 5741112 1626056 5741184 1626080 5741216 +1627024 5739072 1626688 5738608 1626992 5739096 1626080 5741216 +1626992 5739096 1626248 5738800 1625784 5741000 1625984 5741112 +1627024 5739072 1626992 5739096 1626080 5741216 1626120 5741352 +1626992 5739096 1626056 5741184 1626080 5741216 1626120 5741352 +1627024 5739072 1626688 5738608 1626992 5739096 1626120 5741352 +1626992 5739096 1625784 5741000 1625984 5741112 1626056 5741184 +1627024 5739072 1626992 5739096 1626120 5741352 1628128 5742888 +1627024 5739072 1626992 5739096 1628128 5742888 1628168 5742888 +1627024 5739072 1626992 5739096 1628168 5742888 1629640 5742832 +1626120 5741352 1628056 5742960 1628128 5742888 1626992 5739096 +1627024 5739072 1626688 5738608 1626992 5739096 1628168 5742888 +1626992 5739096 1626080 5741216 1626120 5741352 1628128 5742888 +1626992 5739096 1626120 5741352 1628128 5742888 1628168 5742888 +1627024 5739072 1626944 5738696 1626688 5738608 1626992 5739096 +1627024 5739072 1627032 5738744 1626944 5738696 1626992 5739096 +1627024 5739072 1626944 5738696 1626992 5739096 1628168 5742888 +1626688 5738608 1626248 5738800 1626992 5739096 1626944 5738696 +1625784 5741000 1626968 5739088 1626248 5738800 1625656 5740944 +1626992 5739096 1626968 5739088 1625784 5741000 1625984 5741112 +1626992 5739096 1626248 5738800 1626968 5739088 1625984 5741112 +1626248 5738800 1626968 5739088 1626992 5739096 1626688 5738608 +1626248 5738800 1626968 5739088 1626688 5738608 1626496 5738600 +1626248 5738800 1625784 5741000 1626968 5739088 1626688 5738608 +1626992 5739096 1626944 5738696 1626688 5738608 1626968 5739088 +1626968 5739088 1625984 5741112 1626992 5739096 1626944 5738696 +1626688 5738608 1626248 5738800 1626968 5739088 1626944 5738696 +1626968 5739088 1626248 5738800 1625784 5741000 1625984 5741112 +1626992 5739096 1626968 5739088 1625984 5741112 1626056 5741184 +1626992 5739096 1627024 5739072 1626944 5738696 1626968 5739088 +1627024 5739072 1627032 5738744 1626944 5738696 1626968 5739088 +1626944 5738696 1626688 5738608 1626968 5739088 1627032 5738744 +1626992 5739096 1627024 5739072 1626968 5739088 1625984 5741112 +1627024 5739072 1627096 5738976 1627032 5738744 1626968 5739088 +1627032 5738744 1626944 5738696 1626968 5739088 1627096 5738976 +1627024 5739072 1627096 5738976 1626968 5739088 1626992 5739096 +1627096 5738976 1627128 5738848 1627032 5738744 1626968 5739088 +1626248 5738800 1626856 5739080 1626968 5739088 1626688 5738608 +1626248 5738800 1626856 5739080 1626688 5738608 1626496 5738600 +1626248 5738800 1625784 5741000 1626856 5739080 1626496 5738600 +1626856 5739080 1625784 5741000 1626968 5739088 1626688 5738608 +1626856 5739080 1626968 5739088 1626688 5738608 1626496 5738600 +1625784 5741000 1626856 5739080 1626248 5738800 1625656 5740944 +1626856 5739080 1626496 5738600 1626248 5738800 1625656 5740944 +1625784 5741000 1626968 5739088 1626856 5739080 1625656 5740944 +1626968 5739088 1626944 5738696 1626688 5738608 1626856 5739080 +1626968 5739088 1626944 5738696 1626856 5739080 1625784 5741000 +1626688 5738608 1626496 5738600 1626856 5739080 1626944 5738696 +1626968 5739088 1627032 5738744 1626944 5738696 1626856 5739080 +1626968 5739088 1627032 5738744 1626856 5739080 1625784 5741000 +1626968 5739088 1627096 5738976 1627032 5738744 1626856 5739080 +1626968 5739088 1627096 5738976 1626856 5739080 1625784 5741000 +1627032 5738744 1626944 5738696 1626856 5739080 1627096 5738976 +1626944 5738696 1626688 5738608 1626856 5739080 1627032 5738744 +1626968 5739088 1626856 5739080 1625784 5741000 1625984 5741112 +1626968 5739088 1627096 5738976 1626856 5739080 1625984 5741112 +1626856 5739080 1625656 5740944 1625784 5741000 1625984 5741112 +1626968 5739088 1626856 5739080 1625984 5741112 1626992 5739096 +1626968 5739088 1627096 5738976 1626856 5739080 1626992 5739096 +1626856 5739080 1625784 5741000 1625984 5741112 1626992 5739096 +1626968 5739088 1627024 5739072 1627096 5738976 1626856 5739080 +1625984 5741112 1626056 5741184 1626992 5739096 1626856 5739080 +1626248 5738800 1625888 5738752 1625656 5740944 1626856 5739080 +1626248 5738800 1626856 5739080 1626496 5738600 1626424 5738568 +1627096 5738976 1627128 5738848 1627032 5738744 1626856 5739080 +1626248 5738800 1626624 5738992 1626856 5739080 1626496 5738600 +1626856 5739080 1626688 5738608 1626496 5738600 1626624 5738992 +1626624 5738992 1625656 5740944 1626856 5739080 1626688 5738608 +1626496 5738600 1626248 5738800 1626624 5738992 1626688 5738608 +1626856 5739080 1626944 5738696 1626688 5738608 1626624 5738992 +1626688 5738608 1626496 5738600 1626624 5738992 1626944 5738696 +1626856 5739080 1626944 5738696 1626624 5738992 1625656 5740944 +1626248 5738800 1625656 5740944 1626624 5738992 1626496 5738600 +1626856 5739080 1626624 5738992 1625656 5740944 1625784 5741000 +1626856 5739080 1626944 5738696 1626624 5738992 1625784 5741000 +1626624 5738992 1626248 5738800 1625656 5740944 1625784 5741000 +1626856 5739080 1626624 5738992 1625784 5741000 1625984 5741112 +1626856 5739080 1627032 5738744 1626944 5738696 1626624 5738992 +1625656 5740944 1626624 5738992 1626248 5738800 1625888 5738752 +1626248 5738800 1626624 5738992 1626496 5738600 1626424 5738568 +1626496 5738600 1626408 5738864 1626624 5738992 1626688 5738608 +1626624 5738992 1626944 5738696 1626688 5738608 1626408 5738864 +1626496 5738600 1626248 5738800 1626408 5738864 1626688 5738608 +1626408 5738864 1626248 5738800 1626624 5738992 1626688 5738608 +1626624 5738992 1626408 5738864 1626248 5738800 1625656 5740944 +1626624 5738992 1626408 5738864 1625656 5740944 1625784 5741000 +1626624 5738992 1626688 5738608 1626408 5738864 1625656 5740944 +1626408 5738864 1626496 5738600 1626248 5738800 1625656 5740944 +1626248 5738800 1625888 5738752 1625656 5740944 1626408 5738864 +1625656 5740944 1626624 5738992 1626408 5738864 1625888 5738752 +1626248 5738800 1625888 5738752 1626408 5738864 1626496 5738600 +1626248 5738800 1626408 5738864 1626496 5738600 1626424 5738568 +1626408 5738864 1626688 5738608 1626496 5738600 1626424 5738568 +1626248 5738800 1625888 5738752 1626408 5738864 1626424 5738568 +1626248 5738800 1626408 5738864 1626424 5738568 1626296 5738488 +1625888 5738752 1625336 5740928 1625656 5740944 1626408 5738864 +1627136 5738888 1627480 5739472 1629688 5742824 1627128 5738848 +1627480 5739472 1627096 5738976 1629688 5742824 1627128 5738848 +1627136 5738888 1627096 5738976 1627480 5739472 1627128 5738848 +1629688 5742824 1627480 5739472 1627096 5738976 1629640 5742832 +1627096 5738976 1627024 5739072 1629640 5742832 1627480 5739472 +1629688 5742824 1627128 5738848 1627480 5739472 1629640 5742832 +1627480 5739472 1627136 5738888 1627096 5738976 1627024 5739072 +1627024 5739072 1628168 5742888 1629640 5742832 1627480 5739472 +1627024 5739072 1626992 5739096 1628168 5742888 1627480 5739472 +1626992 5739096 1628128 5742888 1628168 5742888 1627480 5739472 +1626992 5739096 1628128 5742888 1627480 5739472 1627024 5739072 +1627024 5739072 1626992 5739096 1627480 5739472 1627096 5738976 +1628168 5742888 1629312 5742992 1629640 5742832 1627480 5739472 +1628168 5742888 1629640 5742832 1627480 5739472 1628128 5742888 +1626992 5739096 1626120 5741352 1628128 5742888 1627480 5739472 +1628128 5742888 1628168 5742888 1627480 5739472 1626120 5741352 +1626992 5739096 1626120 5741352 1627480 5739472 1627024 5739072 +1626120 5741352 1628056 5742960 1628128 5742888 1627480 5739472 +1626992 5739096 1626080 5741216 1626120 5741352 1627480 5739472 +1626992 5739096 1626080 5741216 1627480 5739472 1627024 5739072 +1626992 5739096 1626056 5741184 1626080 5741216 1627480 5739472 +1626992 5739096 1626056 5741184 1627480 5739472 1627024 5739072 +1626992 5739096 1625984 5741112 1626056 5741184 1627480 5739472 +1626992 5739096 1625984 5741112 1627480 5739472 1627024 5739072 +1626056 5741184 1626080 5741216 1627480 5739472 1625984 5741112 +1626080 5741216 1626120 5741352 1627480 5739472 1626056 5741184 +1626992 5739096 1626856 5739080 1625984 5741112 1627480 5739472 +1626992 5739096 1626856 5739080 1627480 5739472 1627024 5739072 +1625984 5741112 1626056 5741184 1627480 5739472 1626856 5739080 +1626992 5739096 1626968 5739088 1626856 5739080 1627480 5739472 +1626856 5739080 1625784 5741000 1625984 5741112 1627480 5739472 +1626120 5741352 1628128 5742888 1627480 5739472 1626080 5741216 +1629640 5742832 1629688 5742824 1627480 5739472 1628168 5742888 +1629688 5742824 1629784 5742896 1627128 5738848 1627480 5739472 +1629784 5742896 1630424 5743368 1627128 5738848 1627480 5739472 +1630424 5743368 1629872 5726768 1627128 5738848 1627480 5739472 +1630424 5743368 1629872 5726768 1627480 5739472 1629784 5742896 +1629872 5726768 1629776 5726856 1627128 5738848 1627480 5739472 +1629872 5726768 1629776 5726856 1627480 5739472 1630424 5743368 +1627128 5738848 1627136 5738888 1627480 5739472 1629776 5726856 +1630424 5743368 1630632 5743536 1629872 5726768 1627480 5739472 +1630632 5743536 1630864 5743768 1629872 5726768 1627480 5739472 +1630424 5743368 1630632 5743536 1627480 5739472 1629784 5742896 +1629872 5726768 1629776 5726856 1627480 5739472 1630632 5743536 +1629784 5742896 1630312 5743312 1630424 5743368 1627480 5739472 +1629688 5742824 1629784 5742896 1627480 5739472 1629640 5742832 +1629776 5726856 1629584 5726976 1627128 5738848 1627480 5739472 +1629784 5742896 1630424 5743368 1627480 5739472 1629688 5742824 +1627480 5739472 1627424 5739392 1627096 5738976 1627024 5739072 +1627480 5739472 1627424 5739392 1627024 5739072 1626992 5739096 +1627480 5739472 1627424 5739392 1626992 5739096 1626856 5739080 +1627424 5739392 1627024 5739072 1626992 5739096 1626856 5739080 +1627424 5739392 1627096 5738976 1627024 5739072 1626992 5739096 +1627480 5739472 1627136 5738888 1627424 5739392 1626856 5739080 +1627136 5738888 1627424 5739392 1627480 5739472 1627128 5738848 +1627480 5739472 1629776 5726856 1627128 5738848 1627424 5739392 +1627424 5739392 1626856 5739080 1627480 5739472 1627128 5738848 +1626992 5739096 1626968 5739088 1626856 5739080 1627424 5739392 +1627480 5739472 1627424 5739392 1626856 5739080 1625984 5741112 +1627424 5739392 1627136 5738888 1627096 5738976 1627024 5739072 +1627136 5738888 1627096 5738976 1627424 5739392 1627128 5738848 +1629776 5726856 1627408 5739280 1627480 5739472 1629872 5726768 +1627480 5739472 1630632 5743536 1629872 5726768 1627408 5739280 +1630632 5743536 1630864 5743768 1629872 5726768 1627408 5739280 +1629872 5726768 1629776 5726856 1627408 5739280 1630632 5743536 +1627480 5739472 1627408 5739280 1627128 5738848 1627424 5739392 +1627480 5739472 1630424 5743368 1630632 5743536 1627408 5739280 +1627480 5739472 1629784 5742896 1630424 5743368 1627408 5739280 +1630632 5743536 1629872 5726768 1627408 5739280 1630424 5743368 +1627128 5738848 1627136 5738888 1627424 5739392 1627408 5739280 +1627424 5739392 1627480 5739472 1627408 5739280 1627136 5738888 +1627128 5738848 1627408 5739280 1629776 5726856 1629584 5726976 +1627408 5739280 1627424 5739392 1627480 5739472 1630424 5743368 +1627408 5739280 1629776 5726856 1627128 5738848 1627136 5738888 +1627136 5738888 1627096 5738976 1627424 5739392 1627408 5739280 +1627424 5739392 1627480 5739472 1627408 5739280 1627096 5738976 +1627136 5738888 1627096 5738976 1627408 5739280 1627128 5738848 +1627096 5738976 1627024 5739072 1627424 5739392 1627408 5739280 +1627424 5739392 1627480 5739472 1627408 5739280 1627024 5739072 +1627024 5739072 1626992 5739096 1627424 5739392 1627408 5739280 +1626992 5739096 1626856 5739080 1627424 5739392 1627408 5739280 +1627424 5739392 1627480 5739472 1627408 5739280 1626992 5739096 +1627024 5739072 1626992 5739096 1627408 5739280 1627096 5738976 +1627096 5738976 1627024 5739072 1627408 5739280 1627136 5738888 +1629776 5726856 1627128 5738848 1627408 5739280 1629872 5726768 +1629872 5726768 1627424 5739216 1630632 5743536 1630864 5743768 +1627408 5739280 1627424 5739216 1629872 5726768 1629776 5726856 +1630632 5743536 1627424 5739216 1627408 5739280 1630424 5743368 +1627408 5739280 1627480 5739472 1630424 5743368 1627424 5739216 +1627480 5739472 1629784 5742896 1630424 5743368 1627424 5739216 +1630424 5743368 1630632 5743536 1627424 5739216 1629784 5742896 +1627480 5739472 1629784 5742896 1627424 5739216 1627408 5739280 +1629784 5742896 1630312 5743312 1630424 5743368 1627424 5739216 +1627408 5739280 1627424 5739392 1627480 5739472 1627424 5739216 +1630632 5743536 1629872 5726768 1627424 5739216 1630424 5743368 +1627424 5739216 1630632 5743536 1629872 5726768 1629776 5726856 +1627408 5739280 1627424 5739216 1629776 5726856 1627128 5738848 +1627424 5739216 1629872 5726768 1629776 5726856 1627128 5738848 +1629776 5726856 1629584 5726976 1627128 5738848 1627424 5739216 +1629776 5726856 1629584 5726976 1627424 5739216 1629872 5726768 +1627408 5739280 1627424 5739216 1627128 5738848 1627136 5738888 +1627408 5739280 1627424 5739216 1627136 5738888 1627096 5738976 +1627424 5739216 1627128 5738848 1627136 5738888 1627096 5738976 +1627408 5739280 1627424 5739216 1627096 5738976 1627024 5739072 +1627424 5739216 1627136 5738888 1627096 5738976 1627024 5739072 +1627408 5739280 1627424 5739216 1627024 5739072 1626992 5739096 +1627128 5738848 1627136 5738888 1627424 5739216 1629584 5726976 +1627408 5739280 1627480 5739472 1627424 5739216 1627024 5739072 +1627480 5739472 1629688 5742824 1629784 5742896 1627424 5739216 +1629784 5742896 1630424 5743368 1627424 5739216 1629688 5742824 +1627480 5739472 1629688 5742824 1627424 5739216 1627408 5739280 +1627480 5739472 1629640 5742832 1629688 5742824 1627424 5739216 +1629584 5726976 1627032 5738744 1627128 5738848 1627424 5739216 +1629872 5726768 1627464 5739192 1630632 5743536 1630864 5743768 +1630632 5743536 1627464 5739192 1627424 5739216 1630424 5743368 +1627424 5739216 1629784 5742896 1630424 5743368 1627464 5739192 +1627424 5739216 1629688 5742824 1629784 5742896 1627464 5739192 +1629784 5742896 1630424 5743368 1627464 5739192 1629688 5742824 +1629784 5742896 1630312 5743312 1630424 5743368 1627464 5739192 +1630632 5743536 1629872 5726768 1627464 5739192 1630424 5743368 +1630424 5743368 1630632 5743536 1627464 5739192 1629784 5742896 +1627464 5739192 1629872 5726768 1627424 5739216 1629688 5742824 +1627424 5739216 1627464 5739192 1629872 5726768 1629776 5726856 +1627424 5739216 1627464 5739192 1629776 5726856 1629584 5726976 +1627424 5739216 1627464 5739192 1629584 5726976 1627128 5738848 +1627464 5739192 1629776 5726856 1629584 5726976 1627128 5738848 +1627424 5739216 1629688 5742824 1627464 5739192 1627128 5738848 +1627464 5739192 1630632 5743536 1629872 5726768 1629776 5726856 +1627464 5739192 1629872 5726768 1629776 5726856 1629584 5726976 +1627424 5739216 1627464 5739192 1627128 5738848 1627136 5738888 +1627464 5739192 1629584 5726976 1627128 5738848 1627136 5738888 +1627424 5739216 1629688 5742824 1627464 5739192 1627136 5738888 +1627424 5739216 1627464 5739192 1627136 5738888 1627096 5738976 +1627424 5739216 1627480 5739472 1629688 5742824 1627464 5739192 +1629688 5742824 1629784 5742896 1627464 5739192 1627480 5739472 +1627424 5739216 1627408 5739280 1627480 5739472 1627464 5739192 +1627480 5739472 1629640 5742832 1629688 5742824 1627464 5739192 +1627408 5739280 1627424 5739392 1627480 5739472 1627464 5739192 +1627408 5739280 1627424 5739392 1627464 5739192 1627424 5739216 +1627424 5739216 1627408 5739280 1627464 5739192 1627136 5738888 +1627480 5739472 1629688 5742824 1627464 5739192 1627424 5739392 +1629584 5726976 1627032 5738744 1627128 5738848 1627464 5739192 +1629872 5726768 1627520 5739192 1630632 5743536 1630864 5743768 +1630632 5743536 1627520 5739192 1627464 5739192 1630424 5743368 +1627520 5739192 1629872 5726768 1627464 5739192 1630424 5743368 +1630632 5743536 1629872 5726768 1627520 5739192 1630424 5743368 +1627464 5739192 1629784 5742896 1630424 5743368 1627520 5739192 +1627464 5739192 1629688 5742824 1629784 5742896 1627520 5739192 +1627464 5739192 1627480 5739472 1629688 5742824 1627520 5739192 +1629688 5742824 1629784 5742896 1627520 5739192 1627480 5739472 +1629784 5742896 1630312 5743312 1630424 5743368 1627520 5739192 +1627480 5739472 1629640 5742832 1629688 5742824 1627520 5739192 +1627464 5739192 1627480 5739472 1627520 5739192 1629872 5726768 +1630424 5743368 1630632 5743536 1627520 5739192 1629784 5742896 +1629784 5742896 1630424 5743368 1627520 5739192 1629688 5742824 +1627464 5739192 1627520 5739192 1629872 5726768 1629776 5726856 +1627464 5739192 1627480 5739472 1627520 5739192 1629776 5726856 +1627520 5739192 1630632 5743536 1629872 5726768 1629776 5726856 +1627464 5739192 1627520 5739192 1629776 5726856 1629584 5726976 +1627464 5739192 1627520 5739192 1629584 5726976 1627128 5738848 +1627464 5739192 1627480 5739472 1627520 5739192 1627128 5738848 +1627464 5739192 1627520 5739192 1627128 5738848 1627136 5738888 +1627520 5739192 1629584 5726976 1627128 5738848 1627136 5738888 +1627464 5739192 1627480 5739472 1627520 5739192 1627136 5738888 +1627520 5739192 1629872 5726768 1629776 5726856 1629584 5726976 +1627520 5739192 1629776 5726856 1629584 5726976 1627128 5738848 +1627464 5739192 1627520 5739192 1627136 5738888 1627424 5739216 +1627464 5739192 1627424 5739392 1627480 5739472 1627520 5739192 +1627480 5739472 1629688 5742824 1627520 5739192 1627424 5739392 +1627464 5739192 1627424 5739392 1627520 5739192 1627136 5738888 +1627464 5739192 1627408 5739280 1627424 5739392 1627520 5739192 +1627464 5739192 1627424 5739216 1627408 5739280 1627520 5739192 +1627464 5739192 1627408 5739280 1627520 5739192 1627136 5738888 +1627424 5739392 1627480 5739472 1627520 5739192 1627408 5739280 +1629584 5726976 1627032 5738744 1627128 5738848 1627520 5739192 +1627128 5738848 1627136 5738888 1627520 5739192 1627032 5738744 +1629584 5726976 1627032 5738744 1627520 5739192 1629776 5726856 +1629584 5726976 1626944 5738696 1627032 5738744 1627520 5739192 +1629872 5726768 1627584 5739200 1630632 5743536 1630864 5743768 +1627520 5739192 1627584 5739200 1629872 5726768 1629776 5726856 +1627520 5739192 1630632 5743536 1627584 5739200 1629776 5726856 +1630632 5743536 1627584 5739200 1627520 5739192 1630424 5743368 +1627520 5739192 1629784 5742896 1630424 5743368 1627584 5739200 +1629784 5742896 1630312 5743312 1630424 5743368 1627584 5739200 +1627584 5739200 1629776 5726856 1627520 5739192 1629784 5742896 +1630424 5743368 1630632 5743536 1627584 5739200 1629784 5742896 +1627520 5739192 1629688 5742824 1629784 5742896 1627584 5739200 +1627520 5739192 1627480 5739472 1629688 5742824 1627584 5739200 +1627520 5739192 1627424 5739392 1627480 5739472 1627584 5739200 +1627480 5739472 1629688 5742824 1627584 5739200 1627424 5739392 +1627480 5739472 1629640 5742832 1629688 5742824 1627584 5739200 +1629784 5742896 1630424 5743368 1627584 5739200 1629688 5742824 +1627520 5739192 1627424 5739392 1627584 5739200 1629776 5726856 +1629688 5742824 1629784 5742896 1627584 5739200 1627480 5739472 +1627520 5739192 1627584 5739200 1629776 5726856 1629584 5726976 +1627584 5739200 1629872 5726768 1629776 5726856 1629584 5726976 +1627520 5739192 1627424 5739392 1627584 5739200 1629584 5726976 +1627520 5739192 1627584 5739200 1629584 5726976 1627032 5738744 +1627520 5739192 1627424 5739392 1627584 5739200 1627032 5738744 +1627584 5739200 1629776 5726856 1629584 5726976 1627032 5738744 +1627584 5739200 1630632 5743536 1629872 5726768 1629776 5726856 +1630632 5743536 1629872 5726768 1627584 5739200 1630424 5743368 +1629584 5726976 1626944 5738696 1627032 5738744 1627584 5739200 +1627520 5739192 1627408 5739280 1627424 5739392 1627584 5739200 +1627520 5739192 1627584 5739200 1627032 5738744 1627128 5738848 +1627520 5739192 1627584 5739200 1627128 5738848 1627136 5738888 +1627520 5739192 1627424 5739392 1627584 5739200 1627128 5738848 +1627584 5739200 1629584 5726976 1627032 5738744 1627128 5738848 +1629872 5726768 1627776 5739304 1630632 5743536 1630864 5743768 +1627584 5739200 1627776 5739304 1629872 5726768 1629776 5726856 +1627584 5739200 1627776 5739304 1629776 5726856 1629584 5726976 +1627584 5739200 1627776 5739304 1629584 5726976 1627032 5738744 +1627776 5739304 1629776 5726856 1629584 5726976 1627032 5738744 +1627584 5739200 1627776 5739304 1627032 5738744 1627128 5738848 +1627776 5739304 1629872 5726768 1629776 5726856 1629584 5726976 +1627584 5739200 1630632 5743536 1627776 5739304 1627032 5738744 +1630632 5743536 1627776 5739304 1627584 5739200 1630424 5743368 +1627584 5739200 1629784 5742896 1630424 5743368 1627776 5739304 +1629784 5742896 1630312 5743312 1630424 5743368 1627776 5739304 +1627584 5739200 1629688 5742824 1629784 5742896 1627776 5739304 +1629784 5742896 1630424 5743368 1627776 5739304 1629688 5742824 +1630632 5743536 1629872 5726768 1627776 5739304 1630424 5743368 +1627584 5739200 1627480 5739472 1629688 5742824 1627776 5739304 +1627584 5739200 1627424 5739392 1627480 5739472 1627776 5739304 +1627480 5739472 1629640 5742832 1629688 5742824 1627776 5739304 +1629688 5742824 1629784 5742896 1627776 5739304 1629640 5742832 +1627480 5739472 1629640 5742832 1627776 5739304 1627584 5739200 +1627776 5739304 1627032 5738744 1627584 5739200 1627480 5739472 +1630424 5743368 1630632 5743536 1627776 5739304 1629784 5742896 +1627776 5739304 1630632 5743536 1629872 5726768 1629776 5726856 +1627480 5739472 1628168 5742888 1629640 5742832 1627776 5739304 +1629640 5742832 1629688 5742824 1627776 5739304 1628168 5742888 +1628168 5742888 1629312 5742992 1629640 5742832 1627776 5739304 +1627480 5739472 1628168 5742888 1627776 5739304 1627584 5739200 +1627480 5739472 1628128 5742888 1628168 5742888 1627776 5739304 +1629584 5726976 1626944 5738696 1627032 5738744 1627776 5739304 +1629872 5726768 1628080 5739504 1630632 5743536 1630864 5743768 +1629872 5726768 1628080 5739504 1630864 5743768 1629928 5726696 +1630632 5743536 1628080 5739504 1627776 5739304 1630424 5743368 +1628080 5739504 1629872 5726768 1627776 5739304 1630424 5743368 +1629872 5726768 1627776 5739304 1628080 5739504 1630864 5743768 +1628080 5739504 1630424 5743368 1630632 5743536 1630864 5743768 +1627776 5739304 1629784 5742896 1630424 5743368 1628080 5739504 +1629784 5742896 1630312 5743312 1630424 5743368 1628080 5739504 +1627776 5739304 1629688 5742824 1629784 5742896 1628080 5739504 +1627776 5739304 1629640 5742832 1629688 5742824 1628080 5739504 +1627776 5739304 1628168 5742888 1629640 5742832 1628080 5739504 +1629640 5742832 1629688 5742824 1628080 5739504 1628168 5742888 +1629688 5742824 1629784 5742896 1628080 5739504 1629640 5742832 +1630424 5743368 1630632 5743536 1628080 5739504 1629784 5742896 +1627776 5739304 1628168 5742888 1628080 5739504 1629872 5726768 +1628168 5742888 1629312 5742992 1629640 5742832 1628080 5739504 +1629784 5742896 1630424 5743368 1628080 5739504 1629688 5742824 +1627776 5739304 1628080 5739504 1629872 5726768 1629776 5726856 +1627776 5739304 1628168 5742888 1628080 5739504 1629776 5726856 +1628080 5739504 1630864 5743768 1629872 5726768 1629776 5726856 +1627776 5739304 1628080 5739504 1629776 5726856 1629584 5726976 +1627776 5739304 1628080 5739504 1629584 5726976 1627032 5738744 +1627776 5739304 1628168 5742888 1628080 5739504 1629584 5726976 +1628080 5739504 1629872 5726768 1629776 5726856 1629584 5726976 +1627776 5739304 1627480 5739472 1628168 5742888 1628080 5739504 +1628168 5742888 1629640 5742832 1628080 5739504 1627480 5739472 +1627776 5739304 1627480 5739472 1628080 5739504 1629584 5726976 +1627776 5739304 1627584 5739200 1627480 5739472 1628080 5739504 +1627480 5739472 1628128 5742888 1628168 5742888 1628080 5739504 +1627480 5739472 1626120 5741352 1628128 5742888 1628080 5739504 +1628168 5742888 1629640 5742832 1628080 5739504 1628128 5742888 +1626120 5741352 1628056 5742960 1628128 5742888 1628080 5739504 +1628128 5742888 1628168 5742888 1628080 5739504 1626120 5741352 +1627480 5739472 1626080 5741216 1626120 5741352 1628080 5739504 +1627480 5739472 1626120 5741352 1628080 5739504 1627776 5739304 +1630864 5743768 1628160 5739568 1628080 5739504 1630632 5743536 +1629872 5726768 1628160 5739568 1630864 5743768 1629928 5726696 +1630864 5743768 1630952 5743928 1629928 5726696 1628160 5739568 +1630864 5743768 1629928 5726696 1628160 5739568 1630632 5743536 +1628080 5739504 1628160 5739568 1629872 5726768 1629776 5726856 +1628160 5739568 1629776 5726856 1628080 5739504 1630632 5743536 +1628080 5739504 1630424 5743368 1630632 5743536 1628160 5739568 +1630632 5743536 1630864 5743768 1628160 5739568 1630424 5743368 +1628080 5739504 1629784 5742896 1630424 5743368 1628160 5739568 +1629784 5742896 1630312 5743312 1630424 5743368 1628160 5739568 +1628080 5739504 1629784 5742896 1628160 5739568 1629776 5726856 +1630424 5743368 1630632 5743536 1628160 5739568 1629784 5742896 +1629872 5726768 1629776 5726856 1628160 5739568 1629928 5726696 +1628080 5739504 1629688 5742824 1629784 5742896 1628160 5739568 +1628080 5739504 1629640 5742832 1629688 5742824 1628160 5739568 +1628080 5739504 1628168 5742888 1629640 5742832 1628160 5739568 +1628080 5739504 1628128 5742888 1628168 5742888 1628160 5739568 +1628168 5742888 1629640 5742832 1628160 5739568 1628128 5742888 +1629640 5742832 1629688 5742824 1628160 5739568 1628168 5742888 +1629784 5742896 1630424 5743368 1628160 5739568 1629688 5742824 +1628080 5739504 1628128 5742888 1628160 5739568 1629776 5726856 +1628168 5742888 1629312 5742992 1629640 5742832 1628160 5739568 +1628080 5739504 1626120 5741352 1628128 5742888 1628160 5739568 +1628080 5739504 1627480 5739472 1626120 5741352 1628160 5739568 +1628128 5742888 1628168 5742888 1628160 5739568 1626120 5741352 +1628080 5739504 1627480 5739472 1628160 5739568 1629776 5726856 +1626120 5741352 1628056 5742960 1628128 5742888 1628160 5739568 +1626120 5741352 1628128 5742888 1628160 5739568 1627480 5739472 +1627480 5739472 1626080 5741216 1626120 5741352 1628160 5739568 +1629688 5742824 1629784 5742896 1628160 5739568 1629640 5742832 +1628080 5739504 1628160 5739568 1629776 5726856 1629584 5726976 +1628160 5739568 1629872 5726768 1629776 5726856 1629584 5726976 +1628080 5739504 1627480 5739472 1628160 5739568 1629584 5726976 +1628080 5739504 1628160 5739568 1629584 5726976 1627776 5739304 +1628080 5739504 1627776 5739304 1627480 5739472 1628160 5739568 +1628168 5742888 1628176 5739664 1628160 5739568 1628128 5742888 +1628160 5739568 1626120 5741352 1628128 5742888 1628176 5739664 +1628176 5739664 1629640 5742832 1628160 5739568 1626120 5741352 +1628168 5742888 1629640 5742832 1628176 5739664 1628128 5742888 +1628128 5742888 1628168 5742888 1628176 5739664 1626120 5741352 +1628160 5739568 1628176 5739664 1629640 5742832 1629688 5742824 +1628160 5739568 1626120 5741352 1628176 5739664 1629688 5742824 +1628176 5739664 1628168 5742888 1629640 5742832 1629688 5742824 +1626120 5741352 1628056 5742960 1628128 5742888 1628176 5739664 +1629640 5742832 1628176 5739664 1628168 5742888 1629312 5742992 +1628160 5739568 1627480 5739472 1626120 5741352 1628176 5739664 +1628160 5739568 1628080 5739504 1627480 5739472 1628176 5739664 +1626120 5741352 1628128 5742888 1628176 5739664 1627480 5739472 +1628160 5739568 1628080 5739504 1628176 5739664 1629688 5742824 +1627480 5739472 1626120 5741352 1628176 5739664 1628080 5739504 +1627480 5739472 1626080 5741216 1626120 5741352 1628176 5739664 +1628160 5739568 1628176 5739664 1629688 5742824 1629784 5742896 +1628160 5739568 1628080 5739504 1628176 5739664 1629784 5742896 +1628176 5739664 1629640 5742832 1629688 5742824 1629784 5742896 +1628160 5739568 1628176 5739664 1629784 5742896 1630424 5743368 +1629784 5742896 1630312 5743312 1630424 5743368 1628176 5739664 +1628160 5739568 1628080 5739504 1628176 5739664 1630424 5743368 +1628160 5739568 1628176 5739664 1630424 5743368 1630632 5743536 +1628176 5739664 1629688 5742824 1629784 5742896 1630424 5743368 +1628080 5739504 1627776 5739304 1627480 5739472 1628176 5739664 +1628176 5739664 1628072 5739696 1626120 5741352 1628128 5742888 +1628176 5739664 1627480 5739472 1628072 5739696 1628128 5742888 +1628176 5739664 1628072 5739696 1628128 5742888 1628168 5742888 +1628072 5739696 1626120 5741352 1628128 5742888 1628168 5742888 +1628176 5739664 1627480 5739472 1628072 5739696 1628168 5742888 +1628176 5739664 1628072 5739696 1628168 5742888 1629640 5742832 +1626120 5741352 1628056 5742960 1628128 5742888 1628072 5739696 +1627480 5739472 1628072 5739696 1628176 5739664 1628080 5739504 +1628176 5739664 1628160 5739568 1628080 5739504 1628072 5739696 +1628072 5739696 1628168 5742888 1628176 5739664 1628160 5739568 +1628080 5739504 1627480 5739472 1628072 5739696 1628160 5739568 +1626120 5741352 1628072 5739696 1627480 5739472 1626080 5741216 +1627480 5739472 1626056 5741184 1626080 5741216 1628072 5739696 +1627480 5739472 1628072 5739696 1628080 5739504 1627776 5739304 +1627480 5739472 1628072 5739696 1627776 5739304 1627584 5739200 +1628072 5739696 1628160 5739568 1628080 5739504 1627776 5739304 +1628072 5739696 1626080 5741216 1626120 5741352 1628128 5742888 +1627480 5739472 1626080 5741216 1628072 5739696 1627776 5739304 +1626080 5741216 1627920 5739640 1627480 5739472 1626056 5741184 +1628072 5739696 1627920 5739640 1626080 5741216 1626120 5741352 +1628072 5739696 1627920 5739640 1626120 5741352 1628128 5742888 +1628072 5739696 1627480 5739472 1627920 5739640 1626120 5741352 +1627480 5739472 1627920 5739640 1628072 5739696 1627776 5739304 +1627480 5739472 1627920 5739640 1627776 5739304 1627584 5739200 +1628072 5739696 1628080 5739504 1627776 5739304 1627920 5739640 +1628072 5739696 1628160 5739568 1628080 5739504 1627920 5739640 +1627480 5739472 1626080 5741216 1627920 5739640 1627776 5739304 +1627920 5739640 1626120 5741352 1628072 5739696 1628080 5739504 +1627776 5739304 1627480 5739472 1627920 5739640 1628080 5739504 +1627920 5739640 1627480 5739472 1626080 5741216 1626120 5741352 +1626080 5741216 1627792 5739608 1627480 5739472 1626056 5741184 +1627480 5739472 1627792 5739608 1627920 5739640 1627776 5739304 +1627480 5739472 1627792 5739608 1627776 5739304 1627584 5739200 +1627480 5739472 1626080 5741216 1627792 5739608 1627776 5739304 +1627920 5739640 1628080 5739504 1627776 5739304 1627792 5739608 +1627920 5739640 1628072 5739696 1628080 5739504 1627792 5739608 +1627776 5739304 1627480 5739472 1627792 5739608 1628080 5739504 +1627920 5739640 1627792 5739608 1626080 5741216 1626120 5741352 +1627920 5739640 1627792 5739608 1626120 5741352 1628072 5739696 +1627792 5739608 1627480 5739472 1626080 5741216 1626120 5741352 +1626120 5741352 1628128 5742888 1628072 5739696 1627792 5739608 +1627792 5739608 1626080 5741216 1626120 5741352 1628072 5739696 +1627792 5739608 1628072 5739696 1627920 5739640 1628080 5739504 +1626080 5741216 1627720 5739608 1627480 5739472 1626056 5741184 +1627792 5739608 1627720 5739608 1626080 5741216 1626120 5741352 +1627792 5739608 1627480 5739472 1627720 5739608 1626120 5741352 +1627480 5739472 1627720 5739608 1627792 5739608 1627776 5739304 +1627480 5739472 1627720 5739608 1627776 5739304 1627584 5739200 +1627792 5739608 1628080 5739504 1627776 5739304 1627720 5739608 +1627720 5739608 1626120 5741352 1627792 5739608 1627776 5739304 +1627720 5739608 1627480 5739472 1626080 5741216 1626120 5741352 +1627480 5739472 1626080 5741216 1627720 5739608 1627776 5739304 +1627792 5739608 1627720 5739608 1626120 5741352 1628072 5739696 +1627792 5739608 1627720 5739608 1628072 5739696 1627920 5739640 +1627720 5739608 1626080 5741216 1626120 5741352 1628072 5739696 +1627792 5739608 1627776 5739304 1627720 5739608 1627920 5739640 +1626120 5741352 1628128 5742888 1628072 5739696 1627720 5739608 +1627720 5739608 1626120 5741352 1628072 5739696 1627920 5739640 +1626080 5741216 1627688 5739616 1627480 5739472 1626056 5741184 +1627480 5739472 1625984 5741112 1626056 5741184 1627688 5739616 +1627720 5739608 1627688 5739616 1626080 5741216 1626120 5741352 +1627720 5739608 1627688 5739616 1626120 5741352 1628072 5739696 +1627688 5739616 1626080 5741216 1626120 5741352 1628072 5739696 +1627720 5739608 1627480 5739472 1627688 5739616 1628072 5739696 +1627480 5739472 1627688 5739616 1627720 5739608 1627776 5739304 +1627480 5739472 1627688 5739616 1627776 5739304 1627584 5739200 +1627720 5739608 1627792 5739608 1627776 5739304 1627688 5739616 +1627688 5739616 1628072 5739696 1627720 5739608 1627776 5739304 +1626080 5741216 1626120 5741352 1627688 5739616 1626056 5741184 +1627688 5739616 1627776 5739304 1627480 5739472 1626056 5741184 +1626120 5741352 1628128 5742888 1628072 5739696 1627688 5739616 +1627720 5739608 1627688 5739616 1628072 5739696 1627920 5739640 +1627720 5739608 1627688 5739616 1627920 5739640 1627792 5739608 +1627688 5739616 1626120 5741352 1628072 5739696 1627920 5739640 +1627720 5739608 1627776 5739304 1627688 5739616 1627792 5739608 +1627688 5739616 1628072 5739696 1627920 5739640 1627792 5739608 +1626056 5741184 1627640 5739584 1627480 5739472 1625984 5741112 +1627688 5739616 1627640 5739584 1626056 5741184 1626080 5741216 +1627688 5739616 1627640 5739584 1626080 5741216 1626120 5741352 +1627688 5739616 1627480 5739472 1627640 5739584 1626080 5741216 +1627480 5739472 1627640 5739584 1627688 5739616 1627776 5739304 +1627480 5739472 1627640 5739584 1627776 5739304 1627584 5739200 +1627688 5739616 1627720 5739608 1627776 5739304 1627640 5739584 +1627720 5739608 1627792 5739608 1627776 5739304 1627640 5739584 +1627640 5739584 1626080 5741216 1627688 5739616 1627720 5739608 +1627776 5739304 1627480 5739472 1627640 5739584 1627720 5739608 +1627640 5739584 1627480 5739472 1626056 5741184 1626080 5741216 +1627480 5739472 1626056 5741184 1627640 5739584 1627776 5739304 +1626056 5741184 1627592 5739576 1627480 5739472 1625984 5741112 +1627480 5739472 1626856 5739080 1625984 5741112 1627592 5739576 +1626056 5741184 1627640 5739584 1627592 5739576 1625984 5741112 +1627592 5739576 1627640 5739584 1627480 5739472 1625984 5741112 +1627640 5739584 1627592 5739576 1626056 5741184 1626080 5741216 +1627592 5739576 1625984 5741112 1626056 5741184 1626080 5741216 +1627640 5739584 1627592 5739576 1626080 5741216 1627688 5739616 +1626080 5741216 1626120 5741352 1627688 5739616 1627592 5739576 +1627592 5739576 1626056 5741184 1626080 5741216 1627688 5739616 +1627640 5739584 1627480 5739472 1627592 5739576 1627688 5739616 +1627480 5739472 1627592 5739576 1627640 5739584 1627776 5739304 +1627480 5739472 1625984 5741112 1627592 5739576 1627776 5739304 +1627480 5739472 1627592 5739576 1627776 5739304 1627584 5739200 +1627640 5739584 1627720 5739608 1627776 5739304 1627592 5739576 +1627592 5739576 1627688 5739616 1627640 5739584 1627776 5739304 +1629584 5726976 1627776 5737664 1627776 5739304 1628080 5739504 +1627776 5737664 1627032 5738744 1627776 5739304 1628080 5739504 +1629584 5726976 1627032 5738744 1627776 5737664 1628080 5739504 +1627776 5739304 1627776 5737664 1627032 5738744 1627584 5739200 +1627776 5739304 1628080 5739504 1627776 5737664 1627584 5739200 +1627776 5737664 1629584 5726976 1627032 5738744 1627584 5739200 +1627032 5738744 1627128 5738848 1627584 5739200 1627776 5737664 +1627032 5738744 1627128 5738848 1627776 5737664 1629584 5726976 +1627584 5739200 1627776 5739304 1627776 5737664 1627128 5738848 +1629584 5726976 1627776 5737664 1628080 5739504 1628160 5739568 +1629584 5726976 1627032 5738744 1627776 5737664 1628160 5739568 +1627776 5737664 1627776 5739304 1628080 5739504 1628160 5739568 +1629584 5726976 1627776 5737664 1628160 5739568 1629776 5726856 +1629584 5726976 1627032 5738744 1627776 5737664 1629776 5726856 +1628160 5739568 1629872 5726768 1629776 5726856 1627776 5737664 +1628160 5739568 1629928 5726696 1629872 5726768 1627776 5737664 +1628160 5739568 1630864 5743768 1629928 5726696 1627776 5737664 +1630864 5743768 1630952 5743928 1629928 5726696 1627776 5737664 +1628160 5739568 1630632 5743536 1630864 5743768 1627776 5737664 +1628160 5739568 1630424 5743368 1630632 5743536 1627776 5737664 +1630864 5743768 1629928 5726696 1627776 5737664 1630632 5743536 +1629872 5726768 1629776 5726856 1627776 5737664 1629928 5726696 +1629928 5726696 1629872 5726768 1627776 5737664 1630864 5743768 +1627776 5737664 1628080 5739504 1628160 5739568 1630632 5743536 +1629776 5726856 1629584 5726976 1627776 5737664 1629872 5726768 +1627032 5738744 1627776 5737664 1629584 5726976 1626944 5738696 +1627032 5738744 1627128 5738848 1627776 5737664 1626944 5738696 +1627776 5737664 1629776 5726856 1629584 5726976 1626944 5738696 +1629584 5726976 1626040 5738272 1626944 5738696 1627776 5737664 +1629584 5726976 1626040 5738272 1627776 5737664 1629776 5726856 +1626040 5738272 1626136 5738328 1626944 5738696 1627776 5737664 +1629584 5726976 1621800 5732912 1626040 5738272 1627776 5737664 +1629584 5726976 1621776 5732752 1621800 5732912 1627776 5737664 +1629584 5726976 1621800 5732912 1627776 5737664 1629776 5726856 +1621800 5732912 1625760 5738184 1626040 5738272 1627776 5737664 +1621800 5732912 1621808 5733136 1625760 5738184 1627776 5737664 +1625760 5738184 1626040 5738272 1627776 5737664 1621808 5733136 +1621800 5732912 1621808 5733136 1627776 5737664 1629584 5726976 +1621808 5733136 1625488 5738112 1625760 5738184 1627776 5737664 +1621808 5733136 1625488 5738112 1627776 5737664 1621800 5732912 +1625760 5738184 1626040 5738272 1627776 5737664 1625488 5738112 +1621808 5733136 1625120 5738032 1625488 5738112 1627776 5737664 +1621808 5733136 1625120 5738032 1627776 5737664 1621800 5732912 +1625488 5738112 1625760 5738184 1627776 5737664 1625120 5738032 +1626136 5738328 1626688 5738608 1626944 5738696 1627776 5737664 +1626136 5738328 1626688 5738608 1627776 5737664 1626040 5738272 +1626136 5738328 1626296 5738488 1626688 5738608 1627776 5737664 +1621808 5733136 1624904 5738000 1625120 5738032 1627776 5737664 +1625488 5738112 1625656 5738160 1625760 5738184 1627776 5737664 +1625760 5738184 1626040 5738272 1627776 5737664 1625656 5738160 +1625488 5738112 1625656 5738160 1627776 5737664 1625120 5738032 +1626040 5738272 1626136 5738328 1627776 5737664 1625760 5738184 +1626944 5738696 1627032 5738744 1627776 5737664 1626688 5738608 +1627128 5738848 1627520 5739192 1627584 5739200 1627776 5737664 +1630864 5743768 1627856 5737672 1627776 5737664 1630632 5743536 +1629928 5726696 1627856 5737672 1630864 5743768 1630952 5743928 +1627856 5737672 1629928 5726696 1627776 5737664 1630632 5743536 +1627776 5737664 1628160 5739568 1630632 5743536 1627856 5737672 +1628160 5739568 1630424 5743368 1630632 5743536 1627856 5737672 +1630632 5743536 1630864 5743768 1627856 5737672 1628160 5739568 +1627776 5737664 1628160 5739568 1627856 5737672 1629928 5726696 +1630864 5743768 1629928 5726696 1627856 5737672 1630632 5743536 +1627776 5737664 1627856 5737672 1629928 5726696 1629872 5726768 +1627776 5737664 1628160 5739568 1627856 5737672 1629872 5726768 +1627856 5737672 1630864 5743768 1629928 5726696 1629872 5726768 +1627776 5737664 1627856 5737672 1629872 5726768 1629776 5726856 +1627776 5737664 1628160 5739568 1627856 5737672 1629776 5726856 +1627856 5737672 1629928 5726696 1629872 5726768 1629776 5726856 +1627776 5737664 1628080 5739504 1628160 5739568 1627856 5737672 +1627776 5737664 1628080 5739504 1627856 5737672 1629776 5726856 +1628160 5739568 1630632 5743536 1627856 5737672 1628080 5739504 +1627776 5737664 1627776 5739304 1628080 5739504 1627856 5737672 +1627776 5737664 1627776 5739304 1627856 5737672 1629776 5726856 +1627776 5737664 1627584 5739200 1627776 5739304 1627856 5737672 +1627776 5737664 1627584 5739200 1627856 5737672 1629776 5726856 +1627776 5739304 1628080 5739504 1627856 5737672 1627584 5739200 +1627776 5737664 1627128 5738848 1627584 5739200 1627856 5737672 +1627776 5737664 1627128 5738848 1627856 5737672 1629776 5726856 +1627584 5739200 1627776 5739304 1627856 5737672 1627128 5738848 +1627776 5737664 1627032 5738744 1627128 5738848 1627856 5737672 +1628080 5739504 1628160 5739568 1627856 5737672 1627776 5739304 +1627776 5737664 1627856 5737672 1629776 5726856 1629584 5726976 +1627776 5737664 1627128 5738848 1627856 5737672 1629584 5726976 +1627776 5737664 1627856 5737672 1629584 5726976 1621800 5732912 +1627856 5737672 1629872 5726768 1629776 5726856 1629584 5726976 +1627128 5738848 1627520 5739192 1627584 5739200 1627856 5737672 +1629928 5726696 1627952 5737688 1630864 5743768 1630952 5743928 +1627856 5737672 1627952 5737688 1629928 5726696 1629872 5726768 +1627856 5737672 1630864 5743768 1627952 5737688 1629872 5726768 +1630864 5743768 1627952 5737688 1627856 5737672 1630632 5743536 +1627856 5737672 1628160 5739568 1630632 5743536 1627952 5737688 +1628160 5739568 1630424 5743368 1630632 5743536 1627952 5737688 +1627856 5737672 1628080 5739504 1628160 5739568 1627952 5737688 +1628160 5739568 1630632 5743536 1627952 5737688 1628080 5739504 +1627952 5737688 1629872 5726768 1627856 5737672 1628080 5739504 +1630632 5743536 1630864 5743768 1627952 5737688 1628160 5739568 +1627952 5737688 1630864 5743768 1629928 5726696 1629872 5726768 +1630864 5743768 1629928 5726696 1627952 5737688 1630632 5743536 +1627856 5737672 1627952 5737688 1629872 5726768 1629776 5726856 +1627952 5737688 1629928 5726696 1629872 5726768 1629776 5726856 +1627856 5737672 1628080 5739504 1627952 5737688 1629776 5726856 +1627856 5737672 1627952 5737688 1629776 5726856 1629584 5726976 +1627856 5737672 1628080 5739504 1627952 5737688 1629584 5726976 +1627952 5737688 1629872 5726768 1629776 5726856 1629584 5726976 +1627856 5737672 1627776 5739304 1628080 5739504 1627952 5737688 +1628080 5739504 1628160 5739568 1627952 5737688 1627776 5739304 +1627856 5737672 1627776 5739304 1627952 5737688 1629584 5726976 +1627856 5737672 1627584 5739200 1627776 5739304 1627952 5737688 +1627856 5737672 1627128 5738848 1627584 5739200 1627952 5737688 +1627856 5737672 1627128 5738848 1627952 5737688 1629584 5726976 +1627584 5739200 1627776 5739304 1627952 5737688 1627128 5738848 +1627856 5737672 1627776 5737664 1627128 5738848 1627952 5737688 +1627776 5739304 1628080 5739504 1627952 5737688 1627584 5739200 +1627856 5737672 1627952 5737688 1629584 5726976 1627776 5737664 +1627128 5738848 1627520 5739192 1627584 5739200 1627952 5737688 +1629928 5726696 1628032 5737712 1630864 5743768 1630952 5743928 +1627952 5737688 1628032 5737712 1629928 5726696 1629872 5726768 +1627952 5737688 1628032 5737712 1629872 5726768 1629776 5726856 +1628032 5737712 1629928 5726696 1629872 5726768 1629776 5726856 +1627952 5737688 1630864 5743768 1628032 5737712 1629776 5726856 +1630864 5743768 1628032 5737712 1627952 5737688 1630632 5743536 +1627952 5737688 1628160 5739568 1630632 5743536 1628032 5737712 +1628160 5739568 1630424 5743368 1630632 5743536 1628032 5737712 +1627952 5737688 1628080 5739504 1628160 5739568 1628032 5737712 +1627952 5737688 1627776 5739304 1628080 5739504 1628032 5737712 +1628080 5739504 1628160 5739568 1628032 5737712 1627776 5739304 +1628160 5739568 1630632 5743536 1628032 5737712 1628080 5739504 +1628032 5737712 1629776 5726856 1627952 5737688 1627776 5739304 +1630632 5743536 1630864 5743768 1628032 5737712 1628160 5739568 +1628032 5737712 1630864 5743768 1629928 5726696 1629872 5726768 +1630864 5743768 1629928 5726696 1628032 5737712 1630632 5743536 +1627952 5737688 1628032 5737712 1629776 5726856 1629584 5726976 +1628032 5737712 1629872 5726768 1629776 5726856 1629584 5726976 +1627952 5737688 1627776 5739304 1628032 5737712 1629584 5726976 +1627952 5737688 1628032 5737712 1629584 5726976 1627856 5737672 +1627952 5737688 1627584 5739200 1627776 5739304 1628032 5737712 +1627776 5739304 1628080 5739504 1628032 5737712 1627584 5739200 +1627952 5737688 1627584 5739200 1628032 5737712 1629584 5726976 +1627952 5737688 1627128 5738848 1627584 5739200 1628032 5737712 +1627952 5737688 1627856 5737672 1627128 5738848 1628032 5737712 +1627952 5737688 1627856 5737672 1628032 5737712 1629584 5726976 +1627128 5738848 1627584 5739200 1628032 5737712 1627856 5737672 +1627856 5737672 1627776 5737664 1627128 5738848 1628032 5737712 +1627584 5739200 1627776 5739304 1628032 5737712 1627128 5738848 +1627128 5738848 1627520 5739192 1627584 5739200 1628032 5737712 +1629928 5726696 1628056 5737728 1630864 5743768 1630952 5743928 +1628032 5737712 1628056 5737728 1629928 5726696 1629872 5726768 +1628032 5737712 1628056 5737728 1629872 5726768 1629776 5726856 +1628032 5737712 1628056 5737728 1629776 5726856 1629584 5726976 +1628056 5737728 1629872 5726768 1629776 5726856 1629584 5726976 +1628056 5737728 1629928 5726696 1629872 5726768 1629776 5726856 +1628032 5737712 1630864 5743768 1628056 5737728 1629584 5726976 +1630864 5743768 1628056 5737728 1628032 5737712 1630632 5743536 +1630864 5743768 1629928 5726696 1628056 5737728 1630632 5743536 +1628032 5737712 1628160 5739568 1630632 5743536 1628056 5737728 +1628160 5739568 1630424 5743368 1630632 5743536 1628056 5737728 +1628032 5737712 1628080 5739504 1628160 5739568 1628056 5737728 +1628032 5737712 1627776 5739304 1628080 5739504 1628056 5737728 +1628032 5737712 1627584 5739200 1627776 5739304 1628056 5737728 +1627776 5739304 1628080 5739504 1628056 5737728 1627584 5739200 +1628080 5739504 1628160 5739568 1628056 5737728 1627776 5739304 +1628160 5739568 1630424 5743368 1628056 5737728 1628080 5739504 +1628056 5737728 1629584 5726976 1628032 5737712 1627584 5739200 +1630632 5743536 1630864 5743768 1628056 5737728 1630424 5743368 +1628056 5737728 1630864 5743768 1629928 5726696 1629872 5726768 +1628160 5739568 1628176 5739664 1630424 5743368 1628056 5737728 +1628032 5737712 1628056 5737728 1629584 5726976 1627952 5737688 +1628032 5737712 1627128 5738848 1627584 5739200 1628056 5737728 +1627584 5739200 1627776 5739304 1628056 5737728 1627128 5738848 +1628032 5737712 1627128 5738848 1628056 5737728 1629584 5726976 +1628032 5737712 1627856 5737672 1627128 5738848 1628056 5737728 +1628032 5737712 1627952 5737688 1627856 5737672 1628056 5737728 +1628032 5737712 1627952 5737688 1628056 5737728 1629584 5726976 +1627856 5737672 1627128 5738848 1628056 5737728 1627952 5737688 +1627856 5737672 1627776 5737664 1627128 5738848 1628056 5737728 +1627128 5738848 1627584 5739200 1628056 5737728 1627856 5737672 +1627128 5738848 1627520 5739192 1627584 5739200 1628056 5737728 +1629928 5726696 1628080 5737752 1630864 5743768 1630952 5743928 +1630864 5743768 1628080 5737752 1628056 5737728 1630632 5743536 +1630864 5743768 1629928 5726696 1628080 5737752 1630632 5743536 +1628056 5737728 1630424 5743368 1630632 5743536 1628080 5737752 +1628056 5737728 1628160 5739568 1630424 5743368 1628080 5737752 +1630632 5743536 1630864 5743768 1628080 5737752 1630424 5743368 +1628056 5737728 1628080 5739504 1628160 5739568 1628080 5737752 +1628160 5739568 1630424 5743368 1628080 5737752 1628080 5739504 +1628056 5737728 1627776 5739304 1628080 5739504 1628080 5737752 +1628056 5737728 1627584 5739200 1627776 5739304 1628080 5737752 +1628056 5737728 1627128 5738848 1627584 5739200 1628080 5737752 +1627584 5739200 1627776 5739304 1628080 5737752 1627128 5738848 +1627776 5739304 1628080 5739504 1628080 5737752 1627584 5739200 +1628080 5739504 1628160 5739568 1628080 5737752 1627776 5739304 +1630424 5743368 1630632 5743536 1628080 5737752 1628160 5739568 +1628056 5737728 1628080 5737752 1629928 5726696 1629872 5726768 +1628080 5737752 1630864 5743768 1629928 5726696 1629872 5726768 +1628056 5737728 1628080 5737752 1629872 5726768 1629776 5726856 +1628056 5737728 1628080 5737752 1629776 5726856 1629584 5726976 +1628056 5737728 1628080 5737752 1629584 5726976 1628032 5737712 +1628080 5737752 1629872 5726768 1629776 5726856 1629584 5726976 +1628080 5737752 1629928 5726696 1629872 5726768 1629776 5726856 +1628080 5737752 1629584 5726976 1628056 5737728 1627128 5738848 +1628160 5739568 1628176 5739664 1630424 5743368 1628080 5737752 +1628056 5737728 1627856 5737672 1627128 5738848 1628080 5737752 +1627128 5738848 1627584 5739200 1628080 5737752 1627856 5737672 +1628056 5737728 1627856 5737672 1628080 5737752 1629584 5726976 +1628056 5737728 1627952 5737688 1627856 5737672 1628080 5737752 +1628056 5737728 1628032 5737712 1627952 5737688 1628080 5737752 +1628056 5737728 1628032 5737712 1628080 5737752 1629584 5726976 +1627952 5737688 1627856 5737672 1628080 5737752 1628032 5737712 +1627856 5737672 1627776 5737664 1627128 5738848 1628080 5737752 +1627128 5738848 1627584 5739200 1628080 5737752 1627776 5737664 +1627776 5737664 1627032 5738744 1627128 5738848 1628080 5737752 +1627856 5737672 1627776 5737664 1628080 5737752 1627952 5737688 +1627128 5738848 1627520 5739192 1627584 5739200 1628080 5737752 +1628160 5739568 1628096 5737800 1628080 5737752 1628080 5739504 +1628096 5737800 1630424 5743368 1628080 5737752 1628080 5739504 +1628080 5737752 1627776 5739304 1628080 5739504 1628096 5737800 +1628080 5739504 1628160 5739568 1628096 5737800 1627776 5739304 +1628080 5737752 1627776 5739304 1628096 5737800 1630424 5743368 +1628080 5737752 1627584 5739200 1627776 5739304 1628096 5737800 +1628080 5737752 1627128 5738848 1627584 5739200 1628096 5737800 +1628080 5737752 1627128 5738848 1628096 5737800 1630424 5743368 +1628080 5737752 1627776 5737664 1627128 5738848 1628096 5737800 +1627128 5738848 1627584 5739200 1628096 5737800 1627776 5737664 +1628080 5737752 1627776 5737664 1628096 5737800 1630424 5743368 +1627584 5739200 1627776 5739304 1628096 5737800 1627128 5738848 +1627776 5739304 1628080 5739504 1628096 5737800 1627584 5739200 +1628080 5737752 1628096 5737800 1630424 5743368 1630632 5743536 +1628080 5737752 1628096 5737800 1630632 5743536 1630864 5743768 +1628080 5737752 1627776 5737664 1628096 5737800 1630864 5743768 +1628080 5737752 1628096 5737800 1630864 5743768 1629928 5726696 +1630864 5743768 1630952 5743928 1629928 5726696 1628096 5737800 +1628096 5737800 1630632 5743536 1630864 5743768 1629928 5726696 +1628080 5737752 1628096 5737800 1629928 5726696 1629872 5726768 +1628080 5737752 1627776 5737664 1628096 5737800 1629928 5726696 +1628096 5737800 1628160 5739568 1630424 5743368 1630632 5743536 +1628096 5737800 1630424 5743368 1630632 5743536 1630864 5743768 +1630424 5743368 1628096 5737800 1628160 5739568 1628176 5739664 +1628160 5739568 1630424 5743368 1628096 5737800 1628080 5739504 +1628080 5737752 1627856 5737672 1627776 5737664 1628096 5737800 +1628080 5737752 1627856 5737672 1628096 5737800 1629928 5726696 +1627776 5737664 1627128 5738848 1628096 5737800 1627856 5737672 +1627776 5737664 1627032 5738744 1627128 5738848 1628096 5737800 +1628080 5737752 1627952 5737688 1627856 5737672 1628096 5737800 +1628080 5737752 1627952 5737688 1628096 5737800 1629928 5726696 +1628080 5737752 1628032 5737712 1627952 5737688 1628096 5737800 +1628080 5737752 1628056 5737728 1628032 5737712 1628096 5737800 +1628080 5737752 1628056 5737728 1628096 5737800 1629928 5726696 +1628032 5737712 1627952 5737688 1628096 5737800 1628056 5737728 +1627856 5737672 1627776 5737664 1628096 5737800 1627952 5737688 +1627952 5737688 1627856 5737672 1628096 5737800 1628032 5737712 +1627128 5738848 1627520 5739192 1627584 5739200 1628096 5737800 +1628080 5739504 1628096 5737824 1628096 5737800 1627776 5739304 +1628096 5737824 1628160 5739568 1628096 5737800 1627776 5739304 +1628096 5737800 1627584 5739200 1627776 5739304 1628096 5737824 +1627776 5739304 1628080 5739504 1628096 5737824 1627584 5739200 +1628096 5737800 1627584 5739200 1628096 5737824 1628160 5739568 +1628096 5737800 1627128 5738848 1627584 5739200 1628096 5737824 +1628096 5737800 1627776 5737664 1627128 5738848 1628096 5737824 +1628096 5737800 1627776 5737664 1628096 5737824 1628160 5739568 +1628096 5737800 1627856 5737672 1627776 5737664 1628096 5737824 +1627776 5737664 1627128 5738848 1628096 5737824 1627856 5737672 +1628096 5737800 1627856 5737672 1628096 5737824 1628160 5739568 +1627128 5738848 1627584 5739200 1628096 5737824 1627776 5737664 +1627584 5739200 1627776 5739304 1628096 5737824 1627128 5738848 +1628096 5737800 1628096 5737824 1628160 5739568 1630424 5743368 +1628096 5737800 1628096 5737824 1630424 5743368 1630632 5743536 +1628096 5737800 1627856 5737672 1628096 5737824 1630632 5743536 +1628096 5737800 1628096 5737824 1630632 5743536 1630864 5743768 +1628160 5739568 1628176 5739664 1630424 5743368 1628096 5737824 +1628096 5737824 1628160 5739568 1630424 5743368 1630632 5743536 +1628080 5739504 1628160 5739568 1628096 5737824 1627776 5739304 +1628096 5737824 1628080 5739504 1628160 5739568 1630424 5743368 +1628096 5737800 1627952 5737688 1627856 5737672 1628096 5737824 +1628096 5737800 1627952 5737688 1628096 5737824 1630632 5743536 +1627856 5737672 1627776 5737664 1628096 5737824 1627952 5737688 +1627776 5737664 1627032 5738744 1627128 5738848 1628096 5737824 +1628096 5737800 1628032 5737712 1627952 5737688 1628096 5737824 +1628096 5737800 1628032 5737712 1628096 5737824 1630632 5743536 +1628096 5737800 1628056 5737728 1628032 5737712 1628096 5737824 +1628096 5737800 1628080 5737752 1628056 5737728 1628096 5737824 +1628096 5737800 1628056 5737728 1628096 5737824 1630632 5743536 +1627952 5737688 1627856 5737672 1628096 5737824 1628032 5737712 +1628032 5737712 1627952 5737688 1628096 5737824 1628056 5737728 +1627128 5738848 1627520 5739192 1627584 5739200 1628096 5737824 +1627128 5738848 1628072 5737856 1628096 5737824 1627776 5737664 +1628096 5737824 1627856 5737672 1627776 5737664 1628072 5737856 +1628096 5737824 1627952 5737688 1627856 5737672 1628072 5737856 +1627856 5737672 1627776 5737664 1628072 5737856 1627952 5737688 +1627776 5737664 1627128 5738848 1628072 5737856 1627856 5737672 +1628096 5737824 1628072 5737856 1627584 5739200 1627776 5739304 +1628096 5737824 1628072 5737856 1627776 5739304 1628080 5739504 +1628072 5737856 1627584 5739200 1627776 5739304 1628080 5739504 +1627128 5738848 1627584 5739200 1628072 5737856 1627776 5737664 +1628072 5737856 1628080 5739504 1628096 5737824 1627952 5737688 +1628096 5737824 1628072 5737856 1628080 5739504 1628160 5739568 +1628072 5737856 1627776 5739304 1628080 5739504 1628160 5739568 +1628096 5737824 1627952 5737688 1628072 5737856 1628160 5739568 +1628072 5737856 1627128 5738848 1627584 5739200 1627776 5739304 +1628096 5737824 1628072 5737856 1628160 5739568 1630424 5743368 +1628096 5737824 1628032 5737712 1627952 5737688 1628072 5737856 +1627952 5737688 1627856 5737672 1628072 5737856 1628032 5737712 +1628096 5737824 1628032 5737712 1628072 5737856 1628160 5739568 +1627128 5738848 1628072 5737856 1627776 5737664 1627032 5738744 +1627776 5737664 1626944 5738696 1627032 5738744 1628072 5737856 +1628072 5737856 1627856 5737672 1627776 5737664 1627032 5738744 +1627128 5738848 1627584 5739200 1628072 5737856 1627032 5738744 +1628096 5737824 1628056 5737728 1628032 5737712 1628072 5737856 +1628096 5737824 1628096 5737800 1628056 5737728 1628072 5737856 +1628096 5737800 1628080 5737752 1628056 5737728 1628072 5737856 +1628096 5737800 1628080 5737752 1628072 5737856 1628096 5737824 +1628096 5737824 1628096 5737800 1628072 5737856 1628160 5739568 +1628032 5737712 1627952 5737688 1628072 5737856 1628056 5737728 +1628056 5737728 1628032 5737712 1628072 5737856 1628080 5737752 +1627584 5739200 1628072 5737856 1627128 5738848 1627520 5739192 +1627032 5738744 1628024 5737880 1627776 5737664 1626944 5738696 +1627776 5737664 1628024 5737880 1628072 5737856 1627856 5737672 +1628072 5737856 1627952 5737688 1627856 5737672 1628024 5737880 +1628072 5737856 1628032 5737712 1627952 5737688 1628024 5737880 +1627952 5737688 1627856 5737672 1628024 5737880 1628032 5737712 +1627856 5737672 1627776 5737664 1628024 5737880 1627952 5737688 +1627776 5737664 1627032 5738744 1628024 5737880 1627856 5737672 +1628024 5737880 1627032 5738744 1628072 5737856 1628032 5737712 +1628072 5737856 1628056 5737728 1628032 5737712 1628024 5737880 +1628032 5737712 1627952 5737688 1628024 5737880 1628056 5737728 +1628072 5737856 1628056 5737728 1628024 5737880 1627032 5738744 +1628072 5737856 1628024 5737880 1627032 5738744 1627128 5738848 +1628024 5737880 1627776 5737664 1627032 5738744 1627128 5738848 +1628072 5737856 1628056 5737728 1628024 5737880 1627128 5738848 +1628072 5737856 1628024 5737880 1627128 5738848 1627584 5739200 +1628072 5737856 1628056 5737728 1628024 5737880 1627584 5739200 +1628072 5737856 1628024 5737880 1627584 5739200 1627776 5739304 +1628072 5737856 1628024 5737880 1627776 5739304 1628080 5739504 +1628072 5737856 1628024 5737880 1628080 5739504 1628160 5739568 +1628024 5737880 1627128 5738848 1627584 5739200 1627776 5739304 +1628072 5737856 1628056 5737728 1628024 5737880 1628080 5739504 +1628024 5737880 1627584 5739200 1627776 5739304 1628080 5739504 +1628024 5737880 1627032 5738744 1627128 5738848 1627584 5739200 +1628072 5737856 1628080 5737752 1628056 5737728 1628024 5737880 +1628072 5737856 1628096 5737800 1628080 5737752 1628024 5737880 +1628072 5737856 1628080 5737752 1628024 5737880 1628080 5739504 +1628056 5737728 1628032 5737712 1628024 5737880 1628080 5737752 +1627128 5738848 1627520 5739192 1627584 5739200 1628024 5737880 +1627032 5738744 1627992 5737880 1627776 5737664 1626944 5738696 +1628024 5737880 1627992 5737880 1627032 5738744 1627128 5738848 +1628024 5737880 1627776 5737664 1627992 5737880 1627128 5738848 +1627992 5737880 1627776 5737664 1627032 5738744 1627128 5738848 +1627776 5737664 1627992 5737880 1628024 5737880 1627856 5737672 +1627992 5737880 1627128 5738848 1628024 5737880 1627856 5737672 +1627776 5737664 1627032 5738744 1627992 5737880 1627856 5737672 +1628024 5737880 1627952 5737688 1627856 5737672 1627992 5737880 +1628024 5737880 1627952 5737688 1627992 5737880 1627128 5738848 +1628024 5737880 1628032 5737712 1627952 5737688 1627992 5737880 +1628024 5737880 1628032 5737712 1627992 5737880 1627128 5738848 +1628024 5737880 1628056 5737728 1628032 5737712 1627992 5737880 +1628024 5737880 1628056 5737728 1627992 5737880 1627128 5738848 +1628032 5737712 1627952 5737688 1627992 5737880 1628056 5737728 +1627952 5737688 1627856 5737672 1627992 5737880 1628032 5737712 +1627856 5737672 1627776 5737664 1627992 5737880 1627952 5737688 +1628024 5737880 1628080 5737752 1628056 5737728 1627992 5737880 +1628024 5737880 1627992 5737880 1627128 5738848 1627584 5739200 +1628024 5737880 1628056 5737728 1627992 5737880 1627584 5739200 +1627992 5737880 1627032 5738744 1627128 5738848 1627584 5739200 +1628024 5737880 1627992 5737880 1627584 5739200 1627776 5739304 +1627128 5738848 1627520 5739192 1627584 5739200 1627992 5737880 +1627992 5737880 1627920 5737848 1627032 5738744 1627128 5738848 +1627992 5737880 1627776 5737664 1627920 5737848 1627128 5738848 +1627776 5737664 1627920 5737848 1627992 5737880 1627856 5737672 +1627920 5737848 1627128 5738848 1627992 5737880 1627856 5737672 +1627920 5737848 1627776 5737664 1627032 5738744 1627128 5738848 +1627776 5737664 1627032 5738744 1627920 5737848 1627856 5737672 +1627032 5738744 1627920 5737848 1627776 5737664 1626944 5738696 +1627992 5737880 1627920 5737848 1627128 5738848 1627584 5739200 +1627992 5737880 1627952 5737688 1627856 5737672 1627920 5737848 +1627992 5737880 1627952 5737688 1627920 5737848 1627128 5738848 +1627856 5737672 1627776 5737664 1627920 5737848 1627952 5737688 +1627992 5737880 1628032 5737712 1627952 5737688 1627920 5737848 +1627992 5737880 1628032 5737712 1627920 5737848 1627128 5738848 +1627992 5737880 1628056 5737728 1628032 5737712 1627920 5737848 +1627952 5737688 1627856 5737672 1627920 5737848 1628032 5737712 +1627920 5737848 1627856 5737824 1627032 5738744 1627128 5738848 +1627920 5737848 1627856 5737824 1627128 5738848 1627992 5737880 +1627920 5737848 1627776 5737664 1627856 5737824 1627128 5738848 +1627776 5737664 1627856 5737824 1627920 5737848 1627856 5737672 +1627920 5737848 1627952 5737688 1627856 5737672 1627856 5737824 +1627856 5737824 1627128 5738848 1627920 5737848 1627952 5737688 +1627856 5737672 1627776 5737664 1627856 5737824 1627952 5737688 +1627032 5738744 1627856 5737824 1627776 5737664 1626944 5738696 +1627920 5737848 1628032 5737712 1627952 5737688 1627856 5737824 +1627856 5737824 1626944 5738696 1627032 5738744 1627128 5738848 +1627776 5737664 1626944 5738696 1627856 5737824 1627856 5737672 +1627776 5737664 1626688 5738608 1626944 5738696 1627856 5737824 +1627856 5737824 1627816 5737792 1626944 5738696 1627032 5738744 +1627856 5737824 1627816 5737792 1627032 5738744 1627128 5738848 +1627856 5737824 1627776 5737664 1627816 5737792 1627032 5738744 +1627776 5737664 1627816 5737792 1627856 5737824 1627856 5737672 +1627856 5737824 1627952 5737688 1627856 5737672 1627816 5737792 +1627816 5737792 1627032 5738744 1627856 5737824 1627856 5737672 +1627816 5737792 1627776 5737664 1626944 5738696 1627032 5738744 +1627776 5737664 1626944 5738696 1627816 5737792 1627856 5737672 +1626944 5738696 1627816 5737792 1627776 5737664 1626688 5738608 +1627816 5737792 1627736 5737728 1626944 5738696 1627032 5738744 +1627816 5737792 1627736 5737728 1627032 5738744 1627856 5737824 +1627816 5737792 1627776 5737664 1627736 5737728 1627032 5738744 +1627776 5737664 1627736 5737728 1627816 5737792 1627856 5737672 +1627736 5737728 1627776 5737664 1626944 5738696 1627032 5738744 +1626944 5738696 1627736 5737728 1627776 5737664 1626688 5738608 +1626944 5738696 1627032 5738744 1627736 5737728 1626688 5738608 +1627736 5737728 1627816 5737792 1627776 5737664 1626688 5738608 +1627776 5737664 1626136 5738328 1626688 5738608 1627736 5737728 +1627776 5737664 1626040 5738272 1626136 5738328 1627736 5737728 +1627776 5737664 1626040 5738272 1627736 5737728 1627816 5737792 +1626136 5738328 1626296 5738488 1626688 5738608 1627736 5737728 +1626136 5738328 1626688 5738608 1627736 5737728 1626040 5738272 +1627776 5737664 1625760 5738184 1626040 5738272 1627736 5737728 +1626688 5738608 1626944 5738696 1627736 5737728 1626136 5738328 +1627736 5737728 1627736 5737704 1626040 5738272 1626136 5738328 +1627736 5737728 1627776 5737664 1627736 5737704 1626136 5738328 +1627776 5737664 1627736 5737704 1627736 5737728 1627816 5737792 +1627736 5737704 1627776 5737664 1626040 5738272 1626136 5738328 +1627736 5737728 1627736 5737704 1626136 5738328 1626688 5738608 +1627736 5737704 1626040 5738272 1626136 5738328 1626688 5738608 +1627736 5737728 1627776 5737664 1627736 5737704 1626688 5738608 +1626136 5738328 1626296 5738488 1626688 5738608 1627736 5737704 +1626040 5738272 1627736 5737704 1627776 5737664 1625760 5738184 +1626040 5738272 1626136 5738328 1627736 5737704 1625760 5738184 +1627736 5737704 1627736 5737728 1627776 5737664 1625760 5738184 +1627776 5737664 1625656 5738160 1625760 5738184 1627736 5737704 +1627736 5737728 1627736 5737704 1626688 5738608 1626944 5738696 +1621800 5732912 1627320 5730360 1629584 5726976 1621776 5732752 +1629584 5726976 1627320 5730360 1627776 5737664 1627856 5737672 +1621800 5732912 1627776 5737664 1627320 5730360 1621776 5732752 +1627320 5730360 1627856 5737672 1629584 5726976 1621776 5732752 +1627320 5730360 1621800 5732912 1627776 5737664 1627856 5737672 +1627776 5737664 1627320 5730360 1621800 5732912 1621808 5733136 +1627776 5737664 1627320 5730360 1621808 5733136 1625120 5738032 +1627320 5730360 1621776 5732752 1621800 5732912 1621808 5733136 +1627776 5737664 1627856 5737672 1627320 5730360 1625120 5738032 +1627320 5730360 1621800 5732912 1621808 5733136 1625120 5738032 +1627776 5737664 1627320 5730360 1625120 5738032 1625488 5738112 +1621808 5733136 1624904 5738000 1625120 5738032 1627320 5730360 +1629584 5726976 1627320 5730360 1627856 5737672 1627952 5737688 +1627320 5730360 1627776 5737664 1627856 5737672 1627952 5737688 +1629584 5726976 1627320 5730360 1627952 5737688 1628032 5737712 +1629584 5726976 1627320 5730360 1628032 5737712 1628056 5737728 +1629584 5726976 1627320 5730360 1628056 5737728 1628080 5737752 +1629584 5726976 1627320 5730360 1628080 5737752 1629776 5726856 +1627320 5730360 1628056 5737728 1628080 5737752 1629776 5726856 +1628080 5737752 1629872 5726768 1629776 5726856 1627320 5730360 +1627320 5730360 1627952 5737688 1628032 5737712 1628056 5737728 +1627320 5730360 1628032 5737712 1628056 5737728 1628080 5737752 +1629584 5726976 1621776 5732752 1627320 5730360 1629776 5726856 +1627320 5730360 1627856 5737672 1627952 5737688 1628032 5737712 +1629584 5726976 1629536 5726952 1621776 5732752 1627320 5730360 +1621776 5732752 1621800 5732912 1627320 5730360 1629536 5726952 +1629536 5726952 1621752 5732672 1621776 5732752 1627320 5730360 +1629536 5726952 1629480 5726888 1621752 5732672 1627320 5730360 +1621776 5732752 1621800 5732912 1627320 5730360 1621752 5732672 +1621752 5732672 1621776 5732752 1627320 5730360 1629480 5726888 +1629480 5726888 1621632 5732520 1621752 5732672 1627320 5730360 +1629480 5726888 1621632 5732520 1627320 5730360 1629536 5726952 +1621752 5732672 1621776 5732752 1627320 5730360 1621632 5732520 +1629480 5726888 1629448 5726816 1621632 5732520 1627320 5730360 +1629480 5726888 1629448 5726816 1627320 5730360 1629536 5726952 +1621632 5732520 1621752 5732672 1627320 5730360 1629448 5726816 +1629448 5726816 1629224 5726312 1621632 5732520 1627320 5730360 +1629448 5726816 1629360 5726560 1629224 5726312 1627320 5730360 +1629448 5726816 1629224 5726312 1627320 5730360 1629480 5726888 +1621632 5732520 1621752 5732672 1627320 5730360 1629224 5726312 +1629584 5726976 1629536 5726952 1627320 5730360 1629776 5726856 +1629224 5726312 1621496 5732416 1621632 5732520 1627320 5730360 +1621632 5732520 1621752 5732672 1627320 5730360 1621496 5732416 +1629224 5726312 1621496 5732416 1627320 5730360 1629448 5726816 +1629224 5726312 1621280 5723304 1621496 5732416 1627320 5730360 +1629224 5726312 1629224 5726184 1621280 5723304 1627320 5730360 +1629224 5726312 1621280 5723304 1627320 5730360 1629448 5726816 +1621280 5723304 1621328 5732344 1621496 5732416 1627320 5730360 +1621280 5723304 1621208 5723336 1621328 5732344 1627320 5730360 +1621208 5723336 1621200 5732344 1621328 5732344 1627320 5730360 +1621328 5732344 1621496 5732416 1627320 5730360 1621208 5723336 +1621280 5723304 1621208 5723336 1627320 5730360 1629224 5726312 +1621496 5732416 1621632 5732520 1627320 5730360 1621328 5732344 +1629536 5726952 1629480 5726888 1627320 5730360 1629584 5726976 +1628080 5737752 1627384 5730360 1627320 5730360 1628056 5737728 +1627320 5730360 1627384 5730360 1629776 5726856 1629584 5726976 +1629776 5726856 1627384 5730360 1628080 5737752 1629872 5726768 +1627320 5730360 1628032 5737712 1628056 5737728 1627384 5730360 +1628056 5737728 1628080 5737752 1627384 5730360 1628032 5737712 +1627320 5730360 1627952 5737688 1628032 5737712 1627384 5730360 +1628032 5737712 1628056 5737728 1627384 5730360 1627952 5737688 +1627320 5730360 1627384 5730360 1629584 5726976 1629536 5726952 +1627384 5730360 1629776 5726856 1629584 5726976 1629536 5726952 +1627384 5730360 1629536 5726952 1627320 5730360 1627952 5737688 +1627384 5730360 1628080 5737752 1629776 5726856 1629584 5726976 +1628080 5737752 1629776 5726856 1627384 5730360 1628056 5737728 +1627320 5730360 1627856 5737672 1627952 5737688 1627384 5730360 +1627320 5730360 1627776 5737664 1627856 5737672 1627384 5730360 +1627952 5737688 1628032 5737712 1627384 5730360 1627856 5737672 +1627320 5730360 1627776 5737664 1627384 5730360 1629536 5726952 +1627320 5730360 1625120 5738032 1627776 5737664 1627384 5730360 +1627856 5737672 1627952 5737688 1627384 5730360 1627776 5737664 +1627320 5730360 1627384 5730360 1629536 5726952 1629480 5726888 +1627320 5730360 1627384 5730360 1629480 5726888 1629448 5726816 +1627384 5730360 1629584 5726976 1629536 5726952 1629480 5726888 +1627320 5730360 1627776 5737664 1627384 5730360 1629480 5726888 +1629776 5726856 1627480 5730384 1628080 5737752 1629872 5726768 +1628080 5737752 1629928 5726696 1629872 5726768 1627480 5730384 +1627384 5730360 1627480 5730384 1629776 5726856 1629584 5726976 +1627384 5730360 1627480 5730384 1629584 5726976 1629536 5726952 +1627384 5730360 1627480 5730384 1629536 5726952 1629480 5726888 +1627480 5730384 1629776 5726856 1629584 5726976 1629536 5726952 +1627384 5730360 1628080 5737752 1627480 5730384 1629536 5726952 +1628080 5737752 1627480 5730384 1627384 5730360 1628056 5737728 +1627384 5730360 1628032 5737712 1628056 5737728 1627480 5730384 +1627384 5730360 1627952 5737688 1628032 5737712 1627480 5730384 +1628032 5737712 1628056 5737728 1627480 5730384 1627952 5737688 +1627384 5730360 1627856 5737672 1627952 5737688 1627480 5730384 +1627952 5737688 1628032 5737712 1627480 5730384 1627856 5737672 +1627480 5730384 1629536 5726952 1627384 5730360 1627856 5737672 +1628056 5737728 1628080 5737752 1627480 5730384 1628032 5737712 +1629776 5726856 1629584 5726976 1627480 5730384 1629872 5726768 +1627480 5730384 1628056 5737728 1628080 5737752 1629872 5726768 +1627384 5730360 1627776 5737664 1627856 5737672 1627480 5730384 +1627384 5730360 1627320 5730360 1627776 5737664 1627480 5730384 +1627856 5737672 1627952 5737688 1627480 5730384 1627776 5737664 +1627320 5730360 1625120 5738032 1627776 5737664 1627480 5730384 +1627384 5730360 1627320 5730360 1627480 5730384 1629536 5726952 +1627776 5737664 1627856 5737672 1627480 5730384 1627320 5730360 +1627480 5730384 1627584 5730416 1629872 5726768 1629776 5726856 +1629872 5726768 1627584 5730416 1628080 5737752 1629928 5726696 +1627584 5730416 1628080 5737752 1629872 5726768 1629776 5726856 +1627480 5730384 1627584 5730416 1629776 5726856 1629584 5726976 +1627584 5730416 1629872 5726768 1629776 5726856 1629584 5726976 +1627480 5730384 1627584 5730416 1629584 5726976 1629536 5726952 +1627480 5730384 1627584 5730416 1629536 5726952 1627384 5730360 +1627584 5730416 1629776 5726856 1629584 5726976 1629536 5726952 +1627480 5730384 1628080 5737752 1627584 5730416 1629536 5726952 +1628080 5737752 1627584 5730416 1627480 5730384 1628056 5737728 +1627480 5730384 1628032 5737712 1628056 5737728 1627584 5730416 +1627480 5730384 1627952 5737688 1628032 5737712 1627584 5730416 +1627480 5730384 1627856 5737672 1627952 5737688 1627584 5730416 +1627952 5737688 1628032 5737712 1627584 5730416 1627856 5737672 +1627480 5730384 1627776 5737664 1627856 5737672 1627584 5730416 +1627856 5737672 1627952 5737688 1627584 5730416 1627776 5737664 +1628032 5737712 1628056 5737728 1627584 5730416 1627952 5737688 +1627584 5730416 1629536 5726952 1627480 5730384 1627776 5737664 +1628056 5737728 1628080 5737752 1627584 5730416 1628032 5737712 +1628080 5737752 1629872 5726768 1627584 5730416 1628056 5737728 +1627480 5730384 1627320 5730360 1627776 5737664 1627584 5730416 +1627480 5730384 1627384 5730360 1627320 5730360 1627584 5730416 +1627776 5737664 1627856 5737672 1627584 5730416 1627320 5730360 +1627320 5730360 1625120 5738032 1627776 5737664 1627584 5730416 +1627480 5730384 1627320 5730360 1627584 5730416 1629536 5726952 +1629872 5726768 1627648 5730440 1628080 5737752 1629928 5726696 +1627584 5730416 1627648 5730440 1629872 5726768 1629776 5726856 +1627584 5730416 1627648 5730440 1629776 5726856 1629584 5726976 +1627648 5730440 1629872 5726768 1629776 5726856 1629584 5726976 +1627584 5730416 1628080 5737752 1627648 5730440 1629584 5726976 +1627584 5730416 1627648 5730440 1629584 5726976 1629536 5726952 +1627648 5730440 1629776 5726856 1629584 5726976 1629536 5726952 +1627584 5730416 1627648 5730440 1629536 5726952 1627480 5730384 +1627584 5730416 1628080 5737752 1627648 5730440 1629536 5726952 +1628080 5737752 1627648 5730440 1627584 5730416 1628056 5737728 +1628080 5737752 1629872 5726768 1627648 5730440 1628056 5737728 +1627648 5730440 1629536 5726952 1627584 5730416 1628056 5737728 +1627584 5730416 1628032 5737712 1628056 5737728 1627648 5730440 +1627584 5730416 1627952 5737688 1628032 5737712 1627648 5730440 +1627584 5730416 1627856 5737672 1627952 5737688 1627648 5730440 +1627584 5730416 1627776 5737664 1627856 5737672 1627648 5730440 +1627856 5737672 1627952 5737688 1627648 5730440 1627776 5737664 +1627584 5730416 1627320 5730360 1627776 5737664 1627648 5730440 +1627776 5737664 1627856 5737672 1627648 5730440 1627320 5730360 +1627320 5730360 1625120 5738032 1627776 5737664 1627648 5730440 +1627952 5737688 1628032 5737712 1627648 5730440 1627856 5737672 +1627584 5730416 1627320 5730360 1627648 5730440 1629536 5726952 +1628032 5737712 1628056 5737728 1627648 5730440 1627952 5737688 +1628056 5737728 1628080 5737752 1627648 5730440 1628032 5737712 +1627648 5730440 1628080 5737752 1629872 5726768 1629776 5726856 +1627584 5730416 1627480 5730384 1627320 5730360 1627648 5730440 +1628080 5737752 1627736 5730496 1627648 5730440 1628056 5737728 +1628080 5737752 1629872 5726768 1627736 5730496 1628056 5737728 +1629872 5726768 1627736 5730496 1628080 5737752 1629928 5726696 +1627648 5730440 1628032 5737712 1628056 5737728 1627736 5730496 +1628056 5737728 1628080 5737752 1627736 5730496 1628032 5737712 +1627648 5730440 1627952 5737688 1628032 5737712 1627736 5730496 +1627648 5730440 1627856 5737672 1627952 5737688 1627736 5730496 +1627648 5730440 1627776 5737664 1627856 5737672 1627736 5730496 +1627648 5730440 1627320 5730360 1627776 5737664 1627736 5730496 +1627776 5737664 1627856 5737672 1627736 5730496 1627320 5730360 +1627648 5730440 1627584 5730416 1627320 5730360 1627736 5730496 +1627320 5730360 1627776 5737664 1627736 5730496 1627584 5730416 +1627320 5730360 1625120 5738032 1627776 5737664 1627736 5730496 +1627856 5737672 1627952 5737688 1627736 5730496 1627776 5737664 +1627952 5737688 1628032 5737712 1627736 5730496 1627856 5737672 +1628032 5737712 1628056 5737728 1627736 5730496 1627952 5737688 +1627648 5730440 1627736 5730496 1629872 5726768 1629776 5726856 +1627736 5730496 1628080 5737752 1629872 5726768 1629776 5726856 +1627648 5730440 1627736 5730496 1629776 5726856 1629584 5726976 +1627648 5730440 1627736 5730496 1629584 5726976 1629536 5726952 +1627736 5730496 1629872 5726768 1629776 5726856 1629584 5726976 +1627736 5730496 1629584 5726976 1627648 5730440 1627584 5730416 +1627584 5730416 1627480 5730384 1627320 5730360 1627736 5730496 +1627480 5730384 1627384 5730360 1627320 5730360 1627736 5730496 +1627584 5730416 1627480 5730384 1627736 5730496 1627648 5730440 +1627320 5730360 1627776 5737664 1627736 5730496 1627480 5730384 +1627736 5730496 1627752 5730520 1629872 5726768 1629776 5726856 +1627736 5730496 1628080 5737752 1627752 5730520 1629776 5726856 +1628080 5737752 1627752 5730520 1627736 5730496 1628056 5737728 +1627736 5730496 1628032 5737712 1628056 5737728 1627752 5730520 +1627752 5730520 1629776 5726856 1627736 5730496 1628032 5737712 +1628056 5737728 1628080 5737752 1627752 5730520 1628032 5737712 +1627752 5730520 1628080 5737752 1629872 5726768 1629776 5726856 +1628080 5737752 1629872 5726768 1627752 5730520 1628056 5737728 +1629872 5726768 1627752 5730520 1628080 5737752 1629928 5726696 +1627736 5730496 1627952 5737688 1628032 5737712 1627752 5730520 +1628032 5737712 1628056 5737728 1627752 5730520 1627952 5737688 +1627736 5730496 1627952 5737688 1627752 5730520 1629776 5726856 +1627736 5730496 1627856 5737672 1627952 5737688 1627752 5730520 +1627736 5730496 1627856 5737672 1627752 5730520 1629776 5726856 +1627736 5730496 1627776 5737664 1627856 5737672 1627752 5730520 +1627736 5730496 1627776 5737664 1627752 5730520 1629776 5726856 +1627736 5730496 1627320 5730360 1627776 5737664 1627752 5730520 +1627736 5730496 1627320 5730360 1627752 5730520 1629776 5726856 +1627736 5730496 1627480 5730384 1627320 5730360 1627752 5730520 +1627480 5730384 1627384 5730360 1627320 5730360 1627752 5730520 +1627736 5730496 1627480 5730384 1627752 5730520 1629776 5726856 +1627320 5730360 1627776 5737664 1627752 5730520 1627480 5730384 +1627320 5730360 1625120 5738032 1627776 5737664 1627752 5730520 +1627776 5737664 1627856 5737672 1627752 5730520 1627320 5730360 +1627856 5737672 1627952 5737688 1627752 5730520 1627776 5737664 +1627952 5737688 1628032 5737712 1627752 5730520 1627856 5737672 +1627736 5730496 1627752 5730520 1629776 5726856 1629584 5726976 +1627752 5730520 1629872 5726768 1629776 5726856 1629584 5726976 +1627736 5730496 1627480 5730384 1627752 5730520 1629584 5726976 +1627736 5730496 1627752 5730520 1629584 5726976 1627648 5730440 +1627736 5730496 1627584 5730416 1627480 5730384 1627752 5730520 +1627736 5730496 1627584 5730416 1627752 5730520 1629584 5726976 +1627736 5730496 1627648 5730440 1627584 5730416 1627752 5730520 +1627736 5730496 1627648 5730440 1627752 5730520 1629584 5726976 +1627480 5730384 1627320 5730360 1627752 5730520 1627584 5730416 +1627584 5730416 1627480 5730384 1627752 5730520 1627648 5730440 +1627320 5730360 1627744 5730544 1627752 5730520 1627480 5730384 +1627320 5730360 1627744 5730544 1627480 5730384 1627384 5730360 +1627744 5730544 1627776 5737664 1627752 5730520 1627480 5730384 +1627320 5730360 1627776 5737664 1627744 5730544 1627480 5730384 +1627752 5730520 1627584 5730416 1627480 5730384 1627744 5730544 +1627752 5730520 1627584 5730416 1627744 5730544 1627776 5737664 +1627480 5730384 1627320 5730360 1627744 5730544 1627584 5730416 +1627776 5737664 1627744 5730544 1627320 5730360 1625120 5738032 +1627752 5730520 1627744 5730544 1627776 5737664 1627856 5737672 +1627752 5730520 1627584 5730416 1627744 5730544 1627856 5737672 +1627744 5730544 1627320 5730360 1627776 5737664 1627856 5737672 +1627752 5730520 1627744 5730544 1627856 5737672 1627952 5737688 +1627752 5730520 1627584 5730416 1627744 5730544 1627952 5737688 +1627744 5730544 1627776 5737664 1627856 5737672 1627952 5737688 +1627752 5730520 1627744 5730544 1627952 5737688 1628032 5737712 +1627752 5730520 1627744 5730544 1628032 5737712 1628056 5737728 +1627752 5730520 1627744 5730544 1628056 5737728 1628080 5737752 +1627744 5730544 1628032 5737712 1628056 5737728 1628080 5737752 +1627752 5730520 1627584 5730416 1627744 5730544 1628080 5737752 +1627752 5730520 1627744 5730544 1628080 5737752 1629872 5726768 +1627744 5730544 1627856 5737672 1627952 5737688 1628032 5737712 +1627744 5730544 1627952 5737688 1628032 5737712 1628056 5737728 +1627752 5730520 1627648 5730440 1627584 5730416 1627744 5730544 +1627752 5730520 1627648 5730440 1627744 5730544 1628080 5737752 +1627752 5730520 1627736 5730496 1627648 5730440 1627744 5730544 +1627752 5730520 1627736 5730496 1627744 5730544 1628080 5737752 +1627584 5730416 1627480 5730384 1627744 5730544 1627648 5730440 +1627648 5730440 1627584 5730416 1627744 5730544 1627736 5730496 +1627744 5730544 1627720 5730568 1627776 5737664 1627856 5737672 +1627744 5730544 1627320 5730360 1627720 5730568 1627856 5737672 +1627320 5730360 1627720 5730568 1627744 5730544 1627480 5730384 +1627320 5730360 1627776 5737664 1627720 5730568 1627480 5730384 +1627320 5730360 1627720 5730568 1627480 5730384 1627384 5730360 +1627720 5730568 1627856 5737672 1627744 5730544 1627480 5730384 +1627720 5730568 1627320 5730360 1627776 5737664 1627856 5737672 +1627744 5730544 1627584 5730416 1627480 5730384 1627720 5730568 +1627744 5730544 1627584 5730416 1627720 5730568 1627856 5737672 +1627480 5730384 1627320 5730360 1627720 5730568 1627584 5730416 +1627744 5730544 1627648 5730440 1627584 5730416 1627720 5730568 +1627744 5730544 1627648 5730440 1627720 5730568 1627856 5737672 +1627584 5730416 1627480 5730384 1627720 5730568 1627648 5730440 +1627776 5737664 1627720 5730568 1627320 5730360 1625120 5738032 +1627720 5730568 1627480 5730384 1627320 5730360 1625120 5738032 +1627776 5737664 1627856 5737672 1627720 5730568 1625120 5738032 +1627320 5730360 1621808 5733136 1625120 5738032 1627720 5730568 +1627320 5730360 1621808 5733136 1627720 5730568 1627480 5730384 +1625120 5738032 1627776 5737664 1627720 5730568 1621808 5733136 +1627744 5730544 1627720 5730568 1627856 5737672 1627952 5737688 +1627720 5730568 1627776 5737664 1627856 5737672 1627952 5737688 +1627744 5730544 1627648 5730440 1627720 5730568 1627952 5737688 +1627320 5730360 1621800 5732912 1621808 5733136 1627720 5730568 +1627744 5730544 1627720 5730568 1627952 5737688 1628032 5737712 +1627744 5730544 1627648 5730440 1627720 5730568 1628032 5737712 +1627720 5730568 1627856 5737672 1627952 5737688 1628032 5737712 +1627744 5730544 1627720 5730568 1628032 5737712 1628056 5737728 +1627744 5730544 1627720 5730568 1628056 5737728 1628080 5737752 +1627744 5730544 1627648 5730440 1627720 5730568 1628056 5737728 +1627720 5730568 1627952 5737688 1628032 5737712 1628056 5737728 +1627776 5737664 1627720 5730568 1625120 5738032 1625488 5738112 +1621808 5733136 1624904 5738000 1625120 5738032 1627720 5730568 +1627744 5730544 1627736 5730496 1627648 5730440 1627720 5730568 +1627744 5730544 1627736 5730496 1627720 5730568 1628056 5737728 +1627744 5730544 1627752 5730520 1627736 5730496 1627720 5730568 +1627648 5730440 1627584 5730416 1627720 5730568 1627736 5730496 +1621808 5733136 1627656 5730600 1627720 5730568 1627320 5730360 +1627656 5730600 1625120 5738032 1627720 5730568 1627320 5730360 +1627720 5730568 1627480 5730384 1627320 5730360 1627656 5730600 +1627720 5730568 1627480 5730384 1627656 5730600 1625120 5738032 +1621808 5733136 1625120 5738032 1627656 5730600 1627320 5730360 +1627480 5730384 1627384 5730360 1627320 5730360 1627656 5730600 +1627480 5730384 1627384 5730360 1627656 5730600 1627720 5730568 +1627720 5730568 1627584 5730416 1627480 5730384 1627656 5730600 +1627720 5730568 1627584 5730416 1627656 5730600 1625120 5738032 +1627480 5730384 1627384 5730360 1627656 5730600 1627584 5730416 +1627320 5730360 1621808 5733136 1627656 5730600 1627384 5730360 +1627720 5730568 1627648 5730440 1627584 5730416 1627656 5730600 +1627720 5730568 1627648 5730440 1627656 5730600 1625120 5738032 +1627584 5730416 1627480 5730384 1627656 5730600 1627648 5730440 +1627720 5730568 1627736 5730496 1627648 5730440 1627656 5730600 +1627720 5730568 1627656 5730600 1625120 5738032 1627776 5737664 +1627720 5730568 1627648 5730440 1627656 5730600 1627776 5737664 +1627656 5730600 1621808 5733136 1625120 5738032 1627776 5737664 +1627720 5730568 1627656 5730600 1627776 5737664 1627856 5737672 +1627720 5730568 1627648 5730440 1627656 5730600 1627856 5737672 +1627720 5730568 1627656 5730600 1627856 5737672 1627952 5737688 +1627720 5730568 1627648 5730440 1627656 5730600 1627952 5737688 +1627656 5730600 1627776 5737664 1627856 5737672 1627952 5737688 +1627656 5730600 1625120 5738032 1627776 5737664 1627856 5737672 +1627720 5730568 1627656 5730600 1627952 5737688 1628032 5737712 +1627720 5730568 1627648 5730440 1627656 5730600 1628032 5737712 +1627656 5730600 1627856 5737672 1627952 5737688 1628032 5737712 +1621808 5733136 1627656 5730600 1627320 5730360 1621800 5732912 +1627720 5730568 1627656 5730600 1628032 5737712 1628056 5737728 +1625120 5738032 1625488 5738112 1627776 5737664 1627656 5730600 +1625120 5738032 1627656 5730600 1621808 5733136 1624904 5738000 +1627656 5730600 1627632 5730600 1621808 5733136 1625120 5738032 +1627656 5730600 1627632 5730600 1625120 5738032 1627776 5737664 +1627656 5730600 1627320 5730360 1627632 5730600 1627776 5737664 +1627632 5730600 1621808 5733136 1625120 5738032 1627776 5737664 +1627632 5730600 1627320 5730360 1621808 5733136 1625120 5738032 +1627320 5730360 1627632 5730600 1627656 5730600 1627384 5730360 +1627632 5730600 1627776 5737664 1627656 5730600 1627384 5730360 +1627320 5730360 1621808 5733136 1627632 5730600 1627384 5730360 +1627656 5730600 1627480 5730384 1627384 5730360 1627632 5730600 +1627656 5730600 1627584 5730416 1627480 5730384 1627632 5730600 +1627656 5730600 1627584 5730416 1627632 5730600 1627776 5737664 +1627480 5730384 1627384 5730360 1627632 5730600 1627584 5730416 +1627656 5730600 1627648 5730440 1627584 5730416 1627632 5730600 +1627584 5730416 1627480 5730384 1627632 5730600 1627648 5730440 +1627656 5730600 1627648 5730440 1627632 5730600 1627776 5737664 +1627384 5730360 1627320 5730360 1627632 5730600 1627480 5730384 +1627656 5730600 1627720 5730568 1627648 5730440 1627632 5730600 +1627656 5730600 1627632 5730600 1627776 5737664 1627856 5737672 +1621808 5733136 1627632 5730600 1627320 5730360 1621800 5732912 +1625120 5738032 1625488 5738112 1627776 5737664 1627632 5730600 +1621808 5733136 1624904 5738000 1625120 5738032 1627632 5730600 +1627632 5730600 1627560 5730576 1621808 5733136 1625120 5738032 +1627632 5730600 1627560 5730576 1625120 5738032 1627776 5737664 +1627632 5730600 1627560 5730576 1627776 5737664 1627656 5730600 +1627560 5730576 1621808 5733136 1625120 5738032 1627776 5737664 +1627632 5730600 1627320 5730360 1627560 5730576 1627776 5737664 +1627320 5730360 1627560 5730576 1627632 5730600 1627384 5730360 +1627560 5730576 1627776 5737664 1627632 5730600 1627384 5730360 +1627560 5730576 1627320 5730360 1621808 5733136 1625120 5738032 +1627320 5730360 1621808 5733136 1627560 5730576 1627384 5730360 +1627632 5730600 1627480 5730384 1627384 5730360 1627560 5730576 +1627632 5730600 1627480 5730384 1627560 5730576 1627776 5737664 +1627384 5730360 1627320 5730360 1627560 5730576 1627480 5730384 +1627632 5730600 1627584 5730416 1627480 5730384 1627560 5730576 +1627632 5730600 1627648 5730440 1627584 5730416 1627560 5730576 +1627632 5730600 1627648 5730440 1627560 5730576 1627776 5737664 +1627584 5730416 1627480 5730384 1627560 5730576 1627648 5730440 +1627632 5730600 1627656 5730600 1627648 5730440 1627560 5730576 +1627480 5730384 1627384 5730360 1627560 5730576 1627584 5730416 +1621808 5733136 1627560 5730576 1627320 5730360 1621800 5732912 +1625120 5738032 1625488 5738112 1627776 5737664 1627560 5730576 +1621808 5733136 1624904 5738000 1625120 5738032 1627560 5730576 +1627560 5730576 1627520 5730552 1621808 5733136 1625120 5738032 +1627320 5730360 1627520 5730552 1627560 5730576 1627384 5730360 +1627320 5730360 1621808 5733136 1627520 5730552 1627384 5730360 +1627560 5730576 1627480 5730384 1627384 5730360 1627520 5730552 +1627520 5730552 1621808 5733136 1627560 5730576 1627480 5730384 +1627384 5730360 1627320 5730360 1627520 5730552 1627480 5730384 +1627560 5730576 1627584 5730416 1627480 5730384 1627520 5730552 +1627480 5730384 1627384 5730360 1627520 5730552 1627584 5730416 +1627560 5730576 1627584 5730416 1627520 5730552 1621808 5733136 +1627560 5730576 1627648 5730440 1627584 5730416 1627520 5730552 +1621808 5733136 1627520 5730552 1627320 5730360 1621800 5732912 +1621808 5733136 1627560 5730576 1627520 5730552 1621800 5732912 +1627520 5730552 1627384 5730360 1627320 5730360 1621800 5732912 +1627320 5730360 1621776 5732752 1621800 5732912 1627520 5730552 +1627320 5730360 1627440 5730528 1627520 5730552 1627384 5730360 +1627440 5730528 1621800 5732912 1627520 5730552 1627384 5730360 +1627320 5730360 1621800 5732912 1627440 5730528 1627384 5730360 +1627520 5730552 1627480 5730384 1627384 5730360 1627440 5730528 +1627520 5730552 1627480 5730384 1627440 5730528 1621800 5732912 +1627384 5730360 1627320 5730360 1627440 5730528 1627480 5730384 +1627520 5730552 1627584 5730416 1627480 5730384 1627440 5730528 +1621800 5732912 1627440 5730528 1627320 5730360 1621776 5732752 +1621800 5732912 1627520 5730552 1627440 5730528 1621776 5732752 +1627440 5730528 1627384 5730360 1627320 5730360 1621776 5732752 +1627320 5730360 1621752 5732672 1621776 5732752 1627440 5730528 +1627520 5730552 1627440 5730528 1621800 5732912 1621808 5733136 +1627520 5730552 1627440 5730528 1621808 5733136 1627560 5730576 +1627520 5730552 1627480 5730384 1627440 5730528 1627560 5730576 +1627440 5730528 1621776 5732752 1621800 5732912 1621808 5733136 +1621808 5733136 1625120 5738032 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1625120 5738032 +1625120 5738032 1627776 5737664 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1627776 5737664 +1627776 5737664 1627632 5730600 1627560 5730576 1627440 5730528 +1625120 5738032 1627776 5737664 1627440 5730528 1621808 5733136 +1627440 5730528 1621800 5732912 1621808 5733136 1625120 5738032 +1625120 5738032 1625488 5738112 1627776 5737664 1627440 5730528 +1621808 5733136 1624904 5738000 1625120 5738032 1627440 5730528 +1627320 5730360 1627360 5730472 1627440 5730528 1627384 5730360 +1627440 5730528 1627480 5730384 1627384 5730360 1627360 5730472 +1627360 5730472 1621776 5732752 1627440 5730528 1627480 5730384 +1627384 5730360 1627320 5730360 1627360 5730472 1627480 5730384 +1627320 5730360 1621776 5732752 1627360 5730472 1627384 5730360 +1621776 5732752 1627360 5730472 1627320 5730360 1621752 5732672 +1621776 5732752 1627440 5730528 1627360 5730472 1621752 5732672 +1627360 5730472 1627384 5730360 1627320 5730360 1621752 5732672 +1627320 5730360 1621632 5732520 1621752 5732672 1627360 5730472 +1627440 5730528 1627520 5730552 1627480 5730384 1627360 5730472 +1627440 5730528 1627360 5730472 1621776 5732752 1621800 5732912 +1627440 5730528 1627360 5730472 1621800 5732912 1621808 5733136 +1627440 5730528 1627480 5730384 1627360 5730472 1621808 5733136 +1627360 5730472 1621752 5732672 1621776 5732752 1621800 5732912 +1627360 5730472 1621776 5732752 1621800 5732912 1621808 5733136 +1627440 5730528 1627360 5730472 1621808 5733136 1625120 5738032 +1627320 5730360 1627328 5730448 1627360 5730472 1627384 5730360 +1627360 5730472 1627480 5730384 1627384 5730360 1627328 5730448 +1627328 5730448 1621752 5732672 1627360 5730472 1627384 5730360 +1627320 5730360 1621752 5732672 1627328 5730448 1627384 5730360 +1627360 5730472 1627328 5730448 1621752 5732672 1621776 5732752 +1627360 5730472 1627328 5730448 1621776 5732752 1621800 5732912 +1627360 5730472 1627384 5730360 1627328 5730448 1621800 5732912 +1627328 5730448 1627320 5730360 1621752 5732672 1621776 5732752 +1627328 5730448 1621752 5732672 1621776 5732752 1621800 5732912 +1621752 5732672 1627328 5730448 1627320 5730360 1621632 5732520 +1627360 5730472 1627328 5730448 1621800 5732912 1621808 5733136 +1627360 5730472 1627328 5730448 1621808 5733136 1627440 5730528 +1627360 5730472 1627384 5730360 1627328 5730448 1621808 5733136 +1627328 5730448 1621776 5732752 1621800 5732912 1621808 5733136 +1627328 5730448 1627296 5730408 1621752 5732672 1621776 5732752 +1627320 5730360 1627296 5730408 1627328 5730448 1627384 5730360 +1627328 5730448 1627320 5730360 1627296 5730408 1621776 5732752 +1627296 5730408 1627320 5730360 1621752 5732672 1621776 5732752 +1627328 5730448 1627296 5730408 1621776 5732752 1621800 5732912 +1627296 5730408 1621752 5732672 1621776 5732752 1621800 5732912 +1627328 5730448 1627296 5730408 1621800 5732912 1621808 5733136 +1627328 5730448 1627320 5730360 1627296 5730408 1621800 5732912 +1621752 5732672 1627296 5730408 1627320 5730360 1621632 5732520 +1621752 5732672 1621776 5732752 1627296 5730408 1621632 5732520 +1627296 5730408 1627328 5730448 1627320 5730360 1621632 5732520 +1627320 5730360 1621496 5732416 1621632 5732520 1627296 5730408 +1627320 5730360 1621496 5732416 1627296 5730408 1627328 5730448 +1621632 5732520 1621752 5732672 1627296 5730408 1621496 5732416 +1627320 5730360 1621328 5732344 1621496 5732416 1627296 5730408 +1627320 5730360 1627288 5730392 1627296 5730408 1627328 5730448 +1627296 5730408 1627288 5730392 1621496 5732416 1621632 5732520 +1627296 5730408 1627320 5730360 1627288 5730392 1621632 5732520 +1627288 5730392 1627320 5730360 1621496 5732416 1621632 5732520 +1627296 5730408 1627288 5730392 1621632 5732520 1621752 5732672 +1627296 5730408 1627288 5730392 1621752 5732672 1621776 5732752 +1627296 5730408 1627320 5730360 1627288 5730392 1621752 5732672 +1627288 5730392 1621496 5732416 1621632 5732520 1621752 5732672 +1621496 5732416 1627288 5730392 1627320 5730360 1621328 5732344 +1621496 5732416 1621632 5732520 1627288 5730392 1621328 5732344 +1627288 5730392 1627296 5730408 1627320 5730360 1621328 5732344 +1627320 5730360 1621208 5723336 1621328 5732344 1627288 5730392 +1627320 5730360 1621208 5723336 1627288 5730392 1627296 5730408 +1621208 5723336 1621200 5732344 1621328 5732344 1627288 5730392 +1627320 5730360 1621280 5723304 1621208 5723336 1627288 5730392 +1627320 5730360 1621280 5723304 1627288 5730392 1627296 5730408 +1621208 5723336 1621328 5732344 1627288 5730392 1621280 5723304 +1627320 5730360 1629224 5726312 1621280 5723304 1627288 5730392 +1621328 5732344 1621496 5732416 1627288 5730392 1621208 5723336 +1627296 5730408 1627328 5730448 1627320 5730360 1627296 5730384 +1627288 5730392 1627296 5730384 1621280 5723304 1621208 5723336 +1627320 5730360 1629224 5726312 1621280 5723304 1627296 5730384 +1627656 5730600 1627856 5736056 1627952 5737688 1628032 5737712 +1627856 5737672 1627856 5736056 1627656 5730600 1627776 5737664 +1627656 5730600 1627632 5730600 1627776 5737664 1627856 5736056 +1627632 5730600 1627560 5730576 1627776 5737664 1627856 5736056 +1627560 5730576 1627440 5730528 1627776 5737664 1627856 5736056 +1627560 5730576 1627520 5730552 1627440 5730528 1627856 5736056 +1627560 5730576 1627440 5730528 1627856 5736056 1627632 5730600 +1627440 5730528 1625120 5738032 1627776 5737664 1627856 5736056 +1627440 5730528 1625120 5738032 1627856 5736056 1627560 5730576 +1627440 5730528 1621808 5733136 1625120 5738032 1627856 5736056 +1627440 5730528 1621808 5733136 1627856 5736056 1627560 5730576 +1625120 5738032 1627776 5737664 1627856 5736056 1621808 5733136 +1627776 5737664 1627856 5737672 1627856 5736056 1625120 5738032 +1627632 5730600 1627560 5730576 1627856 5736056 1627656 5730600 +1627656 5730600 1627856 5736056 1628032 5737712 1627720 5730568 +1627856 5736056 1627952 5737688 1628032 5737712 1627720 5730568 +1627440 5730528 1627360 5730472 1621808 5733136 1627856 5736056 +1628032 5737712 1628056 5737728 1627720 5730568 1627856 5736056 +1628032 5737712 1628056 5737728 1627856 5736056 1627952 5737688 +1627720 5730568 1627656 5730600 1627856 5736056 1628056 5737728 +1628056 5737728 1627744 5730544 1627720 5730568 1627856 5736056 +1628056 5737728 1628080 5737752 1627744 5730544 1627856 5736056 +1628080 5737752 1627752 5730520 1627744 5730544 1627856 5736056 +1628080 5737752 1627752 5730520 1627856 5736056 1628056 5737728 +1628080 5737752 1629872 5726768 1627752 5730520 1627856 5736056 +1628080 5737752 1629872 5726768 1627856 5736056 1628056 5737728 +1627752 5730520 1627744 5730544 1627856 5736056 1629872 5726768 +1629872 5726768 1629776 5726856 1627752 5730520 1627856 5736056 +1628080 5737752 1629928 5726696 1629872 5726768 1627856 5736056 +1628080 5737752 1628096 5737800 1629928 5726696 1627856 5736056 +1628096 5737800 1630864 5743768 1629928 5726696 1627856 5736056 +1630864 5743768 1630952 5743928 1629928 5726696 1627856 5736056 +1628096 5737800 1630632 5743536 1630864 5743768 1627856 5736056 +1628096 5737800 1630864 5743768 1627856 5736056 1628080 5737752 +1628080 5737752 1628096 5737800 1627856 5736056 1628056 5737728 +1629872 5726768 1627752 5730520 1627856 5736056 1629928 5726696 +1629928 5726696 1629872 5726768 1627856 5736056 1630864 5743768 +1627720 5730568 1627656 5730600 1627856 5736056 1627744 5730544 +1628056 5737728 1628080 5737752 1627856 5736056 1628032 5737712 +1627744 5730544 1627720 5730568 1627856 5736056 1627752 5730520 +1625120 5738032 1625488 5738112 1627776 5737664 1627856 5736056 +1625120 5738032 1625488 5738112 1627856 5736056 1621808 5733136 +1627776 5737664 1627856 5737672 1627856 5736056 1625488 5738112 +1625488 5738112 1625656 5738160 1627776 5737664 1627856 5736056 +1627776 5737664 1627856 5737672 1627856 5736056 1625656 5738160 +1625488 5738112 1625656 5738160 1627856 5736056 1625120 5738032 +1621808 5733136 1624904 5738000 1625120 5738032 1627856 5736056 +1625120 5738032 1625488 5738112 1627856 5736056 1624904 5738000 +1621808 5733136 1624904 5738000 1627856 5736056 1627440 5730528 +1625656 5738160 1625760 5738184 1627776 5737664 1627856 5736056 +1627776 5737664 1627856 5737672 1627856 5736056 1625760 5738184 +1625760 5738184 1627736 5737704 1627776 5737664 1627856 5736056 +1627776 5737664 1627856 5737672 1627856 5736056 1627736 5737704 +1625656 5738160 1625760 5738184 1627856 5736056 1625488 5738112 +1625760 5738184 1627736 5737704 1627856 5736056 1625656 5738160 +1625760 5738184 1626040 5738272 1627736 5737704 1627856 5736056 +1626040 5738272 1626136 5738328 1627736 5737704 1627856 5736056 +1627736 5737704 1627776 5737664 1627856 5736056 1626040 5738272 +1625760 5738184 1626040 5738272 1627856 5736056 1625656 5738160 +1627656 5730600 1627632 5730600 1627856 5736056 1627720 5730568 +1627856 5736056 1627856 5737672 1627952 5737688 1628032 5737712 +1627856 5737672 1627952 5737688 1627856 5736056 1627776 5737664 +1621808 5733136 1621784 5733192 1624904 5738000 1627856 5736056 +1621808 5733136 1621784 5733192 1627856 5736056 1627440 5730528 +1624904 5738000 1625120 5738032 1627856 5736056 1621784 5733192 +1621784 5733192 1621712 5733232 1624904 5738000 1627856 5736056 +1629928 5726696 1628256 5736240 1630864 5743768 1630952 5743928 +1630864 5743768 1628256 5736240 1627856 5736056 1628096 5737800 +1630864 5743768 1629928 5726696 1628256 5736240 1628096 5737800 +1630864 5743768 1628256 5736240 1628096 5737800 1630632 5743536 +1630864 5743768 1629928 5726696 1628256 5736240 1630632 5743536 +1627856 5736056 1628080 5737752 1628096 5737800 1628256 5736240 +1628256 5736240 1628080 5737752 1628096 5737800 1630632 5743536 +1627856 5736056 1628056 5737728 1628080 5737752 1628256 5736240 +1628080 5737752 1628096 5737800 1628256 5736240 1628056 5737728 +1628096 5737800 1628096 5737824 1630632 5743536 1628256 5736240 +1627856 5736056 1628256 5736240 1629928 5726696 1629872 5726768 +1628256 5736240 1630864 5743768 1629928 5726696 1629872 5726768 +1627856 5736056 1628256 5736240 1629872 5726768 1627752 5730520 +1627856 5736056 1628256 5736240 1627752 5730520 1627744 5730544 +1629872 5726768 1629776 5726856 1627752 5730520 1628256 5736240 +1628256 5736240 1629872 5726768 1627752 5730520 1627744 5730544 +1628256 5736240 1629928 5726696 1629872 5726768 1627752 5730520 +1627856 5736056 1628032 5737712 1628056 5737728 1628256 5736240 +1628056 5737728 1628080 5737752 1628256 5736240 1628032 5737712 +1627856 5736056 1627952 5737688 1628032 5737712 1628256 5736240 +1628032 5737712 1628056 5737728 1628256 5736240 1627952 5737688 +1627856 5736056 1628256 5736240 1627744 5730544 1627720 5730568 +1628256 5736240 1627752 5730520 1627744 5730544 1627720 5730568 +1627856 5736056 1628256 5736240 1627720 5730568 1627656 5730600 +1627856 5736056 1627856 5737672 1627952 5737688 1628256 5736240 +1627952 5737688 1628032 5737712 1628256 5736240 1627856 5737672 +1628256 5736240 1627720 5730568 1627856 5736056 1627856 5737672 +1627856 5736056 1627776 5737664 1627856 5737672 1628256 5736240 +1627856 5736056 1627736 5737704 1627776 5737664 1628256 5736240 +1627856 5737672 1627952 5737688 1628256 5736240 1627776 5737664 +1627856 5736056 1627776 5737664 1628256 5736240 1627720 5730568 +1628256 5736240 1628488 5736312 1629928 5726696 1629872 5726768 +1628256 5736240 1630864 5743768 1628488 5736312 1629872 5726768 +1630864 5743768 1628488 5736312 1628256 5736240 1630632 5743536 +1628488 5736312 1629872 5726768 1628256 5736240 1630632 5743536 +1629928 5726696 1628488 5736312 1630864 5743768 1630952 5743928 +1628256 5736240 1628096 5737800 1630632 5743536 1628488 5736312 +1628256 5736240 1628096 5737800 1628488 5736312 1629872 5726768 +1630632 5743536 1630864 5743768 1628488 5736312 1628096 5737800 +1628256 5736240 1628080 5737752 1628096 5737800 1628488 5736312 +1628256 5736240 1628080 5737752 1628488 5736312 1629872 5726768 +1628096 5737800 1630632 5743536 1628488 5736312 1628080 5737752 +1628256 5736240 1628056 5737728 1628080 5737752 1628488 5736312 +1628256 5736240 1628056 5737728 1628488 5736312 1629872 5726768 +1628080 5737752 1628096 5737800 1628488 5736312 1628056 5737728 +1628256 5736240 1628032 5737712 1628056 5737728 1628488 5736312 +1628256 5736240 1628032 5737712 1628488 5736312 1629872 5726768 +1628056 5737728 1628080 5737752 1628488 5736312 1628032 5737712 +1628096 5737800 1628096 5737824 1630632 5743536 1628488 5736312 +1630632 5743536 1630864 5743768 1628488 5736312 1628096 5737824 +1628096 5737800 1628096 5737824 1628488 5736312 1628080 5737752 +1628096 5737824 1630424 5743368 1630632 5743536 1628488 5736312 +1630632 5743536 1630864 5743768 1628488 5736312 1630424 5743368 +1628096 5737824 1630424 5743368 1628488 5736312 1628096 5737800 +1628256 5736240 1628488 5736312 1629872 5726768 1627752 5730520 +1628488 5736312 1629928 5726696 1629872 5726768 1627752 5730520 +1628256 5736240 1628032 5737712 1628488 5736312 1627752 5730520 +1629872 5726768 1629776 5726856 1627752 5730520 1628488 5736312 +1628256 5736240 1628488 5736312 1627752 5730520 1627744 5730544 +1628256 5736240 1628032 5737712 1628488 5736312 1627744 5730544 +1628256 5736240 1628488 5736312 1627744 5730544 1627720 5730568 +1628256 5736240 1628032 5737712 1628488 5736312 1627720 5730568 +1628488 5736312 1627752 5730520 1627744 5730544 1627720 5730568 +1628488 5736312 1629872 5726768 1627752 5730520 1627744 5730544 +1628096 5737824 1628160 5739568 1630424 5743368 1628488 5736312 +1630424 5743368 1630632 5743536 1628488 5736312 1628160 5739568 +1628096 5737824 1628160 5739568 1628488 5736312 1628096 5737800 +1628160 5739568 1628176 5739664 1630424 5743368 1628488 5736312 +1628096 5737824 1628072 5737856 1628160 5739568 1628488 5736312 +1628256 5736240 1627952 5737688 1628032 5737712 1628488 5736312 +1628256 5736240 1627952 5737688 1628488 5736312 1627720 5730568 +1628032 5737712 1628056 5737728 1628488 5736312 1627952 5737688 +1628256 5736240 1627856 5737672 1627952 5737688 1628488 5736312 +1628256 5736240 1628488 5736312 1627720 5730568 1627856 5736056 +1628256 5736240 1627952 5737688 1628488 5736312 1627856 5736056 +1628488 5736312 1627744 5730544 1627720 5730568 1627856 5736056 +1627720 5730568 1627656 5730600 1627856 5736056 1628488 5736312 +1628488 5736312 1630864 5743768 1629928 5726696 1629872 5726768 +1630864 5743768 1629928 5726696 1628488 5736312 1630632 5743536 +1629928 5726696 1629008 5736448 1630864 5743768 1630952 5743928 +1629928 5726696 1628488 5736312 1629008 5736448 1630952 5743928 +1629008 5736448 1628488 5736312 1630864 5743768 1630952 5743928 +1629928 5726696 1629008 5736448 1630952 5743928 1631312 5744824 +1628488 5736312 1629008 5736448 1629928 5726696 1629872 5726768 +1628488 5736312 1629008 5736448 1629872 5726768 1627752 5730520 +1629872 5726768 1629776 5726856 1627752 5730520 1629008 5736448 +1629008 5736448 1630952 5743928 1629928 5726696 1629872 5726768 +1628488 5736312 1629008 5736448 1627752 5730520 1627744 5730544 +1629008 5736448 1629872 5726768 1627752 5730520 1627744 5730544 +1628488 5736312 1629008 5736448 1627744 5730544 1627720 5730568 +1628488 5736312 1629008 5736448 1627720 5730568 1627856 5736056 +1629008 5736448 1627752 5730520 1627744 5730544 1627720 5730568 +1629008 5736448 1629928 5726696 1629872 5726768 1627752 5730520 +1628488 5736312 1630864 5743768 1629008 5736448 1627720 5730568 +1630864 5743768 1629008 5736448 1628488 5736312 1630632 5743536 +1628488 5736312 1630424 5743368 1630632 5743536 1629008 5736448 +1628488 5736312 1628160 5739568 1630424 5743368 1629008 5736448 +1630424 5743368 1630632 5743536 1629008 5736448 1628160 5739568 +1630864 5743768 1630952 5743928 1629008 5736448 1630632 5743536 +1628160 5739568 1628176 5739664 1630424 5743368 1629008 5736448 +1630424 5743368 1630632 5743536 1629008 5736448 1628176 5739664 +1628160 5739568 1628176 5739664 1629008 5736448 1628488 5736312 +1628176 5739664 1629784 5742896 1630424 5743368 1629008 5736448 +1628488 5736312 1628096 5737824 1628160 5739568 1629008 5736448 +1628160 5739568 1628176 5739664 1629008 5736448 1628096 5737824 +1628488 5736312 1628096 5737800 1628096 5737824 1629008 5736448 +1628488 5736312 1628080 5737752 1628096 5737800 1629008 5736448 +1628488 5736312 1628056 5737728 1628080 5737752 1629008 5736448 +1628080 5737752 1628096 5737800 1629008 5736448 1628056 5737728 +1628488 5736312 1628032 5737712 1628056 5737728 1629008 5736448 +1628096 5737800 1628096 5737824 1629008 5736448 1628080 5737752 +1628096 5737824 1628160 5739568 1629008 5736448 1628096 5737800 +1628096 5737824 1628072 5737856 1628160 5739568 1629008 5736448 +1629008 5736448 1627720 5730568 1628488 5736312 1628056 5737728 +1630632 5743536 1630864 5743768 1629008 5736448 1630424 5743368 +1630952 5743928 1629288 5736552 1629008 5736448 1630864 5743768 +1629008 5736448 1629288 5736552 1629928 5726696 1629872 5726768 +1629288 5736552 1629872 5726768 1629008 5736448 1630864 5743768 +1629008 5736448 1630632 5743536 1630864 5743768 1629288 5736552 +1630864 5743768 1630952 5743928 1629288 5736552 1630632 5743536 +1629008 5736448 1630632 5743536 1629288 5736552 1629872 5726768 +1629288 5736552 1630952 5743928 1629928 5726696 1629872 5726768 +1630952 5743928 1629928 5726696 1629288 5736552 1630864 5743768 +1629928 5726696 1629288 5736552 1630952 5743928 1631312 5744824 +1629928 5726696 1629872 5726768 1629288 5736552 1631312 5744824 +1629288 5736552 1630864 5743768 1630952 5743928 1631312 5744824 +1630952 5743928 1630992 5744048 1631312 5744824 1629288 5736552 +1629008 5736448 1629288 5736552 1629872 5726768 1627752 5730520 +1629008 5736448 1629288 5736552 1627752 5730520 1627744 5730544 +1629872 5726768 1629776 5726856 1627752 5730520 1629288 5736552 +1629288 5736552 1629928 5726696 1629872 5726768 1627752 5730520 +1629008 5736448 1630632 5743536 1629288 5736552 1627744 5730544 +1629008 5736448 1629288 5736552 1627744 5730544 1627720 5730568 +1629288 5736552 1629872 5726768 1627752 5730520 1627744 5730544 +1629008 5736448 1630424 5743368 1630632 5743536 1629288 5736552 +1629008 5736448 1628176 5739664 1630424 5743368 1629288 5736552 +1629008 5736448 1628176 5739664 1629288 5736552 1627744 5730544 +1630632 5743536 1630864 5743768 1629288 5736552 1630424 5743368 +1628176 5739664 1629784 5742896 1630424 5743368 1629288 5736552 +1628176 5739664 1629784 5742896 1629288 5736552 1629008 5736448 +1629784 5742896 1630312 5743312 1630424 5743368 1629288 5736552 +1629008 5736448 1628160 5739568 1628176 5739664 1629288 5736552 +1628176 5739664 1629784 5742896 1629288 5736552 1628160 5739568 +1629008 5736448 1628096 5737824 1628160 5739568 1629288 5736552 +1629008 5736448 1628096 5737824 1629288 5736552 1627744 5730544 +1628160 5739568 1628176 5739664 1629288 5736552 1628096 5737824 +1629008 5736448 1628096 5737800 1628096 5737824 1629288 5736552 +1628096 5737824 1628160 5739568 1629288 5736552 1628096 5737800 +1629008 5736448 1628096 5737800 1629288 5736552 1627744 5730544 +1629008 5736448 1628080 5737752 1628096 5737800 1629288 5736552 +1629008 5736448 1628056 5737728 1628080 5737752 1629288 5736552 +1629008 5736448 1628080 5737752 1629288 5736552 1627744 5730544 +1628096 5737800 1628096 5737824 1629288 5736552 1628080 5737752 +1628096 5737824 1628072 5737856 1628160 5739568 1629288 5736552 +1628176 5739664 1629688 5742824 1629784 5742896 1629288 5736552 +1630424 5743368 1630632 5743536 1629288 5736552 1629784 5742896 +1629928 5726696 1629288 5736552 1631312 5744824 1629944 5726624 +1629288 5736552 1629320 5736568 1629928 5726696 1629872 5726768 +1629288 5736552 1629320 5736568 1629872 5726768 1627752 5730520 +1629872 5726768 1629776 5726856 1627752 5730520 1629320 5736568 +1629320 5736568 1629928 5726696 1629872 5726768 1627752 5730520 +1629288 5736552 1631312 5744824 1629320 5736568 1627752 5730520 +1629320 5736568 1631312 5744824 1629928 5726696 1629872 5726768 +1631312 5744824 1629320 5736568 1629288 5736552 1630952 5743928 +1629320 5736568 1627752 5730520 1629288 5736552 1630952 5743928 +1629288 5736552 1630864 5743768 1630952 5743928 1629320 5736568 +1629288 5736552 1630632 5743536 1630864 5743768 1629320 5736568 +1629288 5736552 1630424 5743368 1630632 5743536 1629320 5736568 +1630632 5743536 1630864 5743768 1629320 5736568 1630424 5743368 +1629288 5736552 1630424 5743368 1629320 5736568 1627752 5730520 +1630864 5743768 1630952 5743928 1629320 5736568 1630632 5743536 +1631312 5744824 1629928 5726696 1629320 5736568 1630952 5743928 +1631312 5744824 1629320 5736568 1630952 5743928 1630992 5744048 +1630952 5743928 1631312 5744824 1629320 5736568 1630864 5743768 +1629288 5736552 1629320 5736568 1627752 5730520 1627744 5730544 +1629288 5736552 1629320 5736568 1627744 5730544 1629008 5736448 +1629320 5736568 1629872 5726768 1627752 5730520 1627744 5730544 +1629288 5736552 1630424 5743368 1629320 5736568 1627744 5730544 +1629288 5736552 1629784 5742896 1630424 5743368 1629320 5736568 +1629784 5742896 1630312 5743312 1630424 5743368 1629320 5736568 +1630424 5743368 1630632 5743536 1629320 5736568 1629784 5742896 +1629288 5736552 1629784 5742896 1629320 5736568 1627744 5730544 +1629288 5736552 1628176 5739664 1629784 5742896 1629320 5736568 +1629288 5736552 1628160 5739568 1628176 5739664 1629320 5736568 +1629288 5736552 1628160 5739568 1629320 5736568 1627744 5730544 +1628176 5739664 1629784 5742896 1629320 5736568 1628160 5739568 +1629288 5736552 1628096 5737824 1628160 5739568 1629320 5736568 +1628160 5739568 1628176 5739664 1629320 5736568 1628096 5737824 +1629288 5736552 1628096 5737800 1628096 5737824 1629320 5736568 +1629288 5736552 1628096 5737800 1629320 5736568 1627744 5730544 +1628096 5737824 1628160 5739568 1629320 5736568 1628096 5737800 +1629288 5736552 1628080 5737752 1628096 5737800 1629320 5736568 +1628096 5737800 1628096 5737824 1629320 5736568 1628080 5737752 +1629288 5736552 1628080 5737752 1629320 5736568 1627744 5730544 +1629288 5736552 1629008 5736448 1628080 5737752 1629320 5736568 +1628096 5737824 1628072 5737856 1628160 5739568 1629320 5736568 +1628176 5739664 1629688 5742824 1629784 5742896 1629320 5736568 +1629784 5742896 1630424 5743368 1629320 5736568 1628176 5739664 +1629928 5726696 1629320 5736568 1631312 5744824 1629944 5726624 +1629320 5736568 1629416 5736656 1629928 5726696 1629872 5726768 +1629320 5736568 1629416 5736656 1629872 5726768 1627752 5730520 +1629872 5726768 1629776 5726856 1627752 5730520 1629416 5736656 +1629320 5736568 1629416 5736656 1627752 5730520 1627744 5730544 +1629416 5736656 1629928 5726696 1629872 5726768 1627752 5730520 +1629320 5736568 1631312 5744824 1629416 5736656 1627752 5730520 +1631312 5744824 1629416 5736656 1629320 5736568 1630952 5743928 +1629416 5736656 1627752 5730520 1629320 5736568 1630952 5743928 +1629416 5736656 1631312 5744824 1629928 5726696 1629872 5726768 +1631312 5744824 1629416 5736656 1630952 5743928 1630992 5744048 +1629320 5736568 1630864 5743768 1630952 5743928 1629416 5736656 +1629320 5736568 1630632 5743536 1630864 5743768 1629416 5736656 +1629320 5736568 1630424 5743368 1630632 5743536 1629416 5736656 +1629320 5736568 1629784 5742896 1630424 5743368 1629416 5736656 +1630424 5743368 1630632 5743536 1629416 5736656 1629784 5742896 +1629784 5742896 1630312 5743312 1630424 5743368 1629416 5736656 +1630632 5743536 1630864 5743768 1629416 5736656 1630424 5743368 +1629320 5736568 1629784 5742896 1629416 5736656 1627752 5730520 +1630952 5743928 1631312 5744824 1629416 5736656 1630864 5743768 +1630864 5743768 1630952 5743928 1629416 5736656 1630632 5743536 +1629320 5736568 1628176 5739664 1629784 5742896 1629416 5736656 +1629784 5742896 1630424 5743368 1629416 5736656 1628176 5739664 +1629320 5736568 1628176 5739664 1629416 5736656 1627752 5730520 +1629320 5736568 1628160 5739568 1628176 5739664 1629416 5736656 +1629320 5736568 1628096 5737824 1628160 5739568 1629416 5736656 +1629320 5736568 1628096 5737824 1629416 5736656 1627752 5730520 +1628160 5739568 1628176 5739664 1629416 5736656 1628096 5737824 +1629320 5736568 1628096 5737800 1628096 5737824 1629416 5736656 +1628096 5737824 1628160 5739568 1629416 5736656 1628096 5737800 +1629320 5736568 1628080 5737752 1628096 5737800 1629416 5736656 +1629320 5736568 1628080 5737752 1629416 5736656 1627752 5730520 +1628096 5737800 1628096 5737824 1629416 5736656 1628080 5737752 +1629320 5736568 1629288 5736552 1628080 5737752 1629416 5736656 +1628080 5737752 1628096 5737800 1629416 5736656 1629288 5736552 +1629320 5736568 1629288 5736552 1629416 5736656 1627752 5730520 +1629288 5736552 1629008 5736448 1628080 5737752 1629416 5736656 +1629008 5736448 1628056 5737728 1628080 5737752 1629416 5736656 +1628080 5737752 1628096 5737800 1629416 5736656 1629008 5736448 +1629288 5736552 1629008 5736448 1629416 5736656 1629320 5736568 +1628096 5737824 1628072 5737856 1628160 5739568 1629416 5736656 +1628176 5739664 1629688 5742824 1629784 5742896 1629416 5736656 +1628176 5739664 1629784 5742896 1629416 5736656 1628160 5739568 +1631312 5744824 1629928 5726696 1629416 5736656 1630952 5743928 +1629928 5726696 1629416 5736656 1631312 5744824 1629944 5726624 +1629928 5726696 1629872 5726768 1629416 5736656 1629944 5726624 +1629416 5736656 1630952 5743928 1631312 5744824 1629944 5726624 +1631312 5744824 1751256 5699792 1629944 5726624 1629416 5736656 +1631312 5744824 1629432 5736720 1629416 5736656 1630952 5743928 +1629416 5736656 1630864 5743768 1630952 5743928 1629432 5736720 +1631312 5744824 1629432 5736720 1630952 5743928 1630992 5744048 +1629416 5736656 1630632 5743536 1630864 5743768 1629432 5736720 +1629416 5736656 1630424 5743368 1630632 5743536 1629432 5736720 +1629416 5736656 1629784 5742896 1630424 5743368 1629432 5736720 +1629784 5742896 1630312 5743312 1630424 5743368 1629432 5736720 +1629416 5736656 1628176 5739664 1629784 5742896 1629432 5736720 +1629784 5742896 1630424 5743368 1629432 5736720 1628176 5739664 +1630424 5743368 1630632 5743536 1629432 5736720 1629784 5742896 +1630864 5743768 1630952 5743928 1629432 5736720 1630632 5743536 +1630632 5743536 1630864 5743768 1629432 5736720 1630424 5743368 +1628176 5739664 1629688 5742824 1629784 5742896 1629432 5736720 +1629416 5736656 1628160 5739568 1628176 5739664 1629432 5736720 +1628176 5739664 1629784 5742896 1629432 5736720 1628160 5739568 +1629416 5736656 1628096 5737824 1628160 5739568 1629432 5736720 +1629416 5736656 1628096 5737800 1628096 5737824 1629432 5736720 +1628096 5737824 1628160 5739568 1629432 5736720 1628096 5737800 +1629416 5736656 1628080 5737752 1628096 5737800 1629432 5736720 +1628096 5737800 1628096 5737824 1629432 5736720 1628080 5737752 +1629416 5736656 1629008 5736448 1628080 5737752 1629432 5736720 +1629008 5736448 1628056 5737728 1628080 5737752 1629432 5736720 +1629416 5736656 1629288 5736552 1629008 5736448 1629432 5736720 +1629008 5736448 1628080 5737752 1629432 5736720 1629288 5736552 +1628080 5737752 1628096 5737800 1629432 5736720 1629008 5736448 +1629416 5736656 1629320 5736568 1629288 5736552 1629432 5736720 +1629288 5736552 1629008 5736448 1629432 5736720 1629320 5736568 +1628096 5737824 1628072 5737856 1628160 5739568 1629432 5736720 +1628160 5739568 1628176 5739664 1629432 5736720 1628096 5737824 +1629432 5736720 1629944 5726624 1629416 5736656 1629320 5736568 +1630952 5743928 1631312 5744824 1629432 5736720 1630864 5743768 +1631312 5744824 1629944 5726624 1629432 5736720 1630952 5743928 +1629416 5736656 1629432 5736720 1629944 5726624 1629928 5726696 +1629416 5736656 1629432 5736720 1629928 5726696 1629872 5726768 +1629416 5736656 1629320 5736568 1629432 5736720 1629928 5726696 +1629432 5736720 1631312 5744824 1629944 5726624 1629928 5726696 +1629944 5726624 1629432 5736720 1631312 5744824 1751256 5699792 +1628080 5737752 1629344 5736744 1629008 5736448 1628056 5737728 +1629008 5736448 1629344 5736744 1629432 5736720 1629288 5736552 +1629008 5736448 1628080 5737752 1629344 5736744 1629288 5736552 +1629432 5736720 1629320 5736568 1629288 5736552 1629344 5736744 +1629288 5736552 1629008 5736448 1629344 5736744 1629320 5736568 +1629432 5736720 1629344 5736744 1628080 5737752 1628096 5737800 +1629432 5736720 1629344 5736744 1628096 5737800 1628096 5737824 +1629432 5736720 1629344 5736744 1628096 5737824 1628160 5739568 +1629344 5736744 1628096 5737800 1628096 5737824 1628160 5739568 +1629344 5736744 1628080 5737752 1628096 5737800 1628096 5737824 +1629432 5736720 1629416 5736656 1629320 5736568 1629344 5736744 +1629320 5736568 1629288 5736552 1629344 5736744 1629416 5736656 +1628096 5737824 1628072 5737856 1628160 5739568 1629344 5736744 +1629432 5736720 1629344 5736744 1628160 5739568 1628176 5739664 +1629344 5736744 1628160 5739568 1629432 5736720 1629416 5736656 +1629344 5736744 1629008 5736448 1628080 5737752 1628096 5737800 +1629008 5736448 1629248 5736760 1629344 5736744 1629288 5736552 +1629008 5736448 1628080 5737752 1629248 5736760 1629288 5736552 +1628080 5737752 1629248 5736760 1629008 5736448 1628056 5737728 +1629248 5736760 1629288 5736552 1629008 5736448 1628056 5737728 +1629008 5736448 1628488 5736312 1628056 5737728 1629248 5736760 +1629008 5736448 1628488 5736312 1629248 5736760 1629288 5736552 +1628056 5737728 1628080 5737752 1629248 5736760 1628488 5736312 +1628488 5736312 1628032 5737712 1628056 5737728 1629248 5736760 +1629344 5736744 1629320 5736568 1629288 5736552 1629248 5736760 +1629288 5736552 1629008 5736448 1629248 5736760 1629320 5736568 +1629248 5736760 1628080 5737752 1629344 5736744 1629320 5736568 +1628080 5737752 1629344 5736744 1629248 5736760 1628056 5737728 +1629344 5736744 1629416 5736656 1629320 5736568 1629248 5736760 +1629344 5736744 1629248 5736760 1628080 5737752 1628096 5737800 +1629344 5736744 1629320 5736568 1629248 5736760 1628096 5737800 +1629248 5736760 1628056 5737728 1628080 5737752 1628096 5737800 +1629344 5736744 1629248 5736760 1628096 5737800 1628096 5737824 +1629344 5736744 1629248 5736760 1628096 5737824 1628160 5739568 +1629344 5736744 1629320 5736568 1629248 5736760 1628096 5737824 +1629248 5736760 1628080 5737752 1628096 5737800 1628096 5737824 +1629248 5736760 1629064 5736736 1628056 5737728 1628080 5737752 +1629248 5736760 1628488 5736312 1629064 5736736 1628080 5737752 +1629064 5736736 1628488 5736312 1628056 5737728 1628080 5737752 +1628056 5737728 1629064 5736736 1628488 5736312 1628032 5737712 +1628056 5737728 1628080 5737752 1629064 5736736 1628032 5737712 +1629064 5736736 1629248 5736760 1628488 5736312 1628032 5737712 +1628488 5736312 1629064 5736736 1629248 5736760 1629008 5736448 +1629064 5736736 1628080 5737752 1629248 5736760 1629008 5736448 +1629248 5736760 1629288 5736552 1629008 5736448 1629064 5736736 +1629248 5736760 1629320 5736568 1629288 5736552 1629064 5736736 +1629248 5736760 1629288 5736552 1629064 5736736 1628080 5737752 +1628488 5736312 1628032 5737712 1629064 5736736 1629008 5736448 +1629008 5736448 1628488 5736312 1629064 5736736 1629288 5736552 +1628488 5736312 1627952 5737688 1628032 5737712 1629064 5736736 +1629248 5736760 1629064 5736736 1628080 5737752 1628096 5737800 +1629248 5736760 1629288 5736552 1629064 5736736 1628096 5737800 +1629064 5736736 1628056 5737728 1628080 5737752 1628096 5737800 +1629248 5736760 1629064 5736736 1628096 5737800 1628096 5737824 +1628488 5736312 1628864 5736672 1629064 5736736 1629008 5736448 +1628864 5736672 1628032 5737712 1629064 5736736 1629008 5736448 +1628488 5736312 1628032 5737712 1628864 5736672 1629008 5736448 +1629064 5736736 1628864 5736672 1628032 5737712 1628056 5737728 +1629064 5736736 1628864 5736672 1628056 5737728 1628080 5737752 +1629064 5736736 1629008 5736448 1628864 5736672 1628080 5737752 +1628864 5736672 1628488 5736312 1628032 5737712 1628056 5737728 +1629064 5736736 1628864 5736672 1628080 5737752 1628096 5737800 +1628864 5736672 1628032 5737712 1628056 5737728 1628080 5737752 +1629064 5736736 1629288 5736552 1629008 5736448 1628864 5736672 +1628032 5737712 1628864 5736672 1628488 5736312 1627952 5737688 +1628032 5737712 1628056 5737728 1628864 5736672 1627952 5737688 +1628864 5736672 1629008 5736448 1628488 5736312 1627952 5737688 +1628488 5736312 1628256 5736240 1627952 5737688 1628864 5736672 +1628488 5736312 1628664 5736560 1628864 5736672 1629008 5736448 +1628864 5736672 1629064 5736736 1629008 5736448 1628664 5736560 +1628664 5736560 1627952 5737688 1628864 5736672 1629008 5736448 +1628488 5736312 1627952 5737688 1628664 5736560 1629008 5736448 +1628864 5736672 1628664 5736560 1627952 5737688 1628032 5737712 +1628864 5736672 1628664 5736560 1628032 5737712 1628056 5737728 +1628864 5736672 1629008 5736448 1628664 5736560 1628056 5737728 +1628664 5736560 1628488 5736312 1627952 5737688 1628032 5737712 +1628864 5736672 1628664 5736560 1628056 5737728 1628080 5737752 +1628664 5736560 1627952 5737688 1628032 5737712 1628056 5737728 +1627952 5737688 1628664 5736560 1628488 5736312 1628256 5736240 +1627952 5737688 1628032 5737712 1628664 5736560 1628256 5736240 +1628664 5736560 1629008 5736448 1628488 5736312 1628256 5736240 +1627952 5737688 1628664 5736560 1628256 5736240 1627856 5737672 +1628664 5736560 1628504 5736512 1627952 5737688 1628032 5737712 +1628664 5736560 1628256 5736240 1628504 5736512 1628032 5737712 +1628504 5736512 1628256 5736240 1627952 5737688 1628032 5737712 +1628664 5736560 1628504 5736512 1628032 5737712 1628056 5737728 +1627952 5737688 1628504 5736512 1628256 5736240 1627856 5737672 +1627952 5737688 1628032 5737712 1628504 5736512 1627856 5737672 +1628504 5736512 1628664 5736560 1628256 5736240 1627856 5737672 +1628256 5736240 1628504 5736512 1628664 5736560 1628488 5736312 +1628504 5736512 1628032 5737712 1628664 5736560 1628488 5736312 +1628664 5736560 1629008 5736448 1628488 5736312 1628504 5736512 +1628256 5736240 1627856 5737672 1628504 5736512 1628488 5736312 +1628256 5736240 1627776 5737664 1627856 5737672 1628504 5736512 +1628256 5736240 1627776 5737664 1628504 5736512 1628488 5736312 +1627856 5737672 1627952 5737688 1628504 5736512 1627776 5737664 +1628256 5736240 1627856 5736056 1627776 5737664 1628504 5736512 +1628256 5736240 1628400 5736528 1628504 5736512 1628488 5736312 +1628400 5736528 1627776 5737664 1628504 5736512 1628488 5736312 +1628256 5736240 1627776 5737664 1628400 5736528 1628488 5736312 +1628504 5736512 1628664 5736560 1628488 5736312 1628400 5736528 +1628504 5736512 1628400 5736528 1627776 5737664 1627856 5737672 +1628504 5736512 1628488 5736312 1628400 5736528 1627856 5737672 +1628400 5736528 1628256 5736240 1627776 5737664 1627856 5737672 +1628504 5736512 1628400 5736528 1627856 5737672 1627952 5737688 +1628504 5736512 1628400 5736528 1627952 5737688 1628032 5737712 +1628504 5736512 1628400 5736528 1628032 5737712 1628664 5736560 +1628400 5736528 1627952 5737688 1628032 5737712 1628664 5736560 +1628504 5736512 1628488 5736312 1628400 5736528 1628664 5736560 +1628032 5737712 1628056 5737728 1628664 5736560 1628400 5736528 +1628056 5737728 1628864 5736672 1628664 5736560 1628400 5736528 +1628664 5736560 1628504 5736512 1628400 5736528 1628864 5736672 +1628032 5737712 1628056 5737728 1628400 5736528 1627952 5737688 +1628056 5737728 1628080 5737752 1628864 5736672 1628400 5736528 +1628056 5737728 1628864 5736672 1628400 5736528 1628032 5737712 +1628400 5736528 1627856 5737672 1627952 5737688 1628032 5737712 +1628400 5736528 1627776 5737664 1627856 5737672 1627952 5737688 +1627776 5737664 1628400 5736528 1628256 5736240 1627856 5736056 +1627776 5737664 1627856 5737672 1628400 5736528 1627856 5736056 +1628400 5736528 1628488 5736312 1628256 5736240 1627856 5736056 +1627776 5737664 1628400 5736528 1627856 5736056 1627736 5737704 +1628400 5736528 1628352 5736600 1627776 5737664 1627856 5737672 +1628400 5736528 1627856 5736056 1628352 5736600 1627856 5737672 +1628352 5736600 1627856 5736056 1627776 5737664 1627856 5737672 +1627776 5737664 1628352 5736600 1627856 5736056 1627736 5737704 +1628400 5736528 1628352 5736600 1627856 5737672 1627952 5737688 +1628352 5736600 1627776 5737664 1627856 5737672 1627952 5737688 +1628400 5736528 1627856 5736056 1628352 5736600 1627952 5737688 +1628400 5736528 1628352 5736600 1627952 5737688 1628032 5737712 +1628400 5736528 1628352 5736600 1628032 5737712 1628056 5737728 +1628400 5736528 1627856 5736056 1628352 5736600 1628056 5737728 +1628400 5736528 1628352 5736600 1628056 5737728 1628864 5736672 +1628400 5736528 1628352 5736600 1628864 5736672 1628664 5736560 +1628400 5736528 1628352 5736600 1628664 5736560 1628504 5736512 +1628352 5736600 1628864 5736672 1628664 5736560 1628504 5736512 +1628352 5736600 1628032 5737712 1628056 5737728 1628864 5736672 +1628400 5736528 1627856 5736056 1628352 5736600 1628504 5736512 +1628056 5737728 1628080 5737752 1628864 5736672 1628352 5736600 +1628352 5736600 1628056 5737728 1628864 5736672 1628664 5736560 +1628352 5736600 1627952 5737688 1628032 5737712 1628056 5737728 +1628352 5736600 1627856 5737672 1627952 5737688 1628032 5737712 +1627856 5736056 1628352 5736600 1628400 5736528 1628256 5736240 +1628352 5736600 1628504 5736512 1628400 5736528 1628256 5736240 +1628400 5736528 1628488 5736312 1628256 5736240 1628352 5736600 +1627856 5736056 1627776 5737664 1628352 5736600 1628256 5736240 +1628056 5737728 1628368 5736736 1628352 5736600 1628032 5737712 +1628368 5736736 1628864 5736672 1628352 5736600 1628032 5737712 +1628056 5737728 1628864 5736672 1628368 5736736 1628032 5737712 +1628864 5736672 1628368 5736736 1628056 5737728 1628080 5737752 +1628864 5736672 1628368 5736736 1628080 5737752 1629064 5736736 +1628864 5736672 1628352 5736600 1628368 5736736 1628080 5737752 +1628368 5736736 1628032 5737712 1628056 5737728 1628080 5737752 +1628352 5736600 1628368 5736736 1628864 5736672 1628664 5736560 +1628352 5736600 1628368 5736736 1628664 5736560 1628504 5736512 +1628352 5736600 1628368 5736736 1628504 5736512 1628400 5736528 +1628352 5736600 1628032 5737712 1628368 5736736 1628504 5736512 +1628368 5736736 1628080 5737752 1628864 5736672 1628664 5736560 +1628368 5736736 1628864 5736672 1628664 5736560 1628504 5736512 +1628352 5736600 1627952 5737688 1628032 5737712 1628368 5736736 +1628032 5737712 1628056 5737728 1628368 5736736 1627952 5737688 +1628352 5736600 1627952 5737688 1628368 5736736 1628504 5736512 +1628352 5736600 1627856 5737672 1627952 5737688 1628368 5736736 +1628352 5736600 1627776 5737664 1627856 5737672 1628368 5736736 +1628352 5736600 1627856 5736056 1627776 5737664 1628368 5736736 +1627776 5737664 1627856 5737672 1628368 5736736 1627856 5736056 +1628352 5736600 1627856 5736056 1628368 5736736 1628504 5736512 +1628352 5736600 1628256 5736240 1627856 5736056 1628368 5736736 +1627952 5737688 1628032 5737712 1628368 5736736 1627856 5737672 +1627856 5736056 1627736 5737704 1627776 5737664 1628368 5736736 +1627856 5737672 1627952 5737688 1628368 5736736 1627776 5737664 +1628368 5736736 1628320 5736784 1627776 5737664 1627856 5737672 +1627856 5736056 1628320 5736784 1628368 5736736 1628352 5736600 +1627856 5736056 1628320 5736784 1628352 5736600 1628256 5736240 +1628368 5736736 1628352 5736600 1628320 5736784 1627856 5737672 +1628320 5736784 1627856 5736056 1627776 5737664 1627856 5737672 +1627856 5736056 1627776 5737664 1628320 5736784 1628352 5736600 +1627776 5737664 1628320 5736784 1627856 5736056 1627736 5737704 +1628368 5736736 1628320 5736784 1627856 5737672 1627952 5737688 +1628320 5736784 1627776 5737664 1627856 5737672 1627952 5737688 +1628368 5736736 1628352 5736600 1628320 5736784 1627952 5737688 +1628368 5736736 1628320 5736784 1627952 5737688 1628032 5737712 +1628368 5736736 1628320 5736784 1628032 5737712 1628056 5737728 +1628368 5736736 1628352 5736600 1628320 5736784 1628056 5737728 +1628368 5736736 1628320 5736784 1628056 5737728 1628080 5737752 +1628320 5736784 1628032 5737712 1628056 5737728 1628080 5737752 +1628368 5736736 1628352 5736600 1628320 5736784 1628080 5737752 +1628368 5736736 1628320 5736784 1628080 5737752 1628864 5736672 +1628080 5737752 1629064 5736736 1628864 5736672 1628320 5736784 +1628368 5736736 1628320 5736784 1628864 5736672 1628664 5736560 +1628368 5736736 1628352 5736600 1628320 5736784 1628864 5736672 +1628320 5736784 1628056 5737728 1628080 5737752 1628864 5736672 +1628320 5736784 1627952 5737688 1628032 5737712 1628056 5737728 +1628320 5736784 1627856 5737672 1627952 5737688 1628032 5737712 +1628320 5736784 1628272 5736808 1627776 5737664 1627856 5737672 +1628320 5736784 1628272 5736808 1627856 5737672 1627952 5737688 +1628272 5736808 1627776 5737664 1627856 5737672 1627952 5737688 +1628320 5736784 1627856 5736056 1628272 5736808 1627952 5737688 +1627856 5736056 1628272 5736808 1628320 5736784 1628352 5736600 +1628320 5736784 1628368 5736736 1628352 5736600 1628272 5736808 +1627856 5736056 1628272 5736808 1628352 5736600 1628256 5736240 +1628272 5736808 1627952 5737688 1628320 5736784 1628352 5736600 +1628272 5736808 1627856 5736056 1627776 5737664 1627856 5737672 +1627856 5736056 1627776 5737664 1628272 5736808 1628352 5736600 +1627776 5737664 1628272 5736808 1627856 5736056 1627736 5737704 +1628320 5736784 1628272 5736808 1627952 5737688 1628032 5737712 +1628272 5736808 1627856 5737672 1627952 5737688 1628032 5737712 +1628320 5736784 1628352 5736600 1628272 5736808 1628032 5737712 +1628320 5736784 1628272 5736808 1628032 5737712 1628056 5737728 +1628320 5736784 1628272 5736808 1628056 5737728 1628080 5737752 +1628320 5736784 1628272 5736808 1628080 5737752 1628864 5736672 +1628320 5736784 1628352 5736600 1628272 5736808 1628080 5737752 +1628272 5736808 1628032 5737712 1628056 5737728 1628080 5737752 +1628272 5736808 1627952 5737688 1628032 5737712 1628056 5737728 +1628272 5736808 1628176 5736792 1627776 5737664 1627856 5737672 +1628272 5736808 1628176 5736792 1627856 5737672 1627952 5737688 +1628272 5736808 1628176 5736792 1627952 5737688 1628032 5737712 +1628176 5736792 1627856 5737672 1627952 5737688 1628032 5737712 +1628176 5736792 1627776 5737664 1627856 5737672 1627952 5737688 +1628272 5736808 1627856 5736056 1628176 5736792 1628032 5737712 +1627856 5736056 1628176 5736792 1628272 5736808 1628352 5736600 +1627856 5736056 1628176 5736792 1628352 5736600 1628256 5736240 +1628272 5736808 1628320 5736784 1628352 5736600 1628176 5736792 +1628320 5736784 1628368 5736736 1628352 5736600 1628176 5736792 +1628176 5736792 1628032 5737712 1628272 5736808 1628320 5736784 +1628176 5736792 1628320 5736784 1628352 5736600 1628256 5736240 +1628176 5736792 1627856 5736056 1627776 5737664 1627856 5737672 +1627856 5736056 1627776 5737664 1628176 5736792 1628256 5736240 +1627776 5737664 1628176 5736792 1627856 5736056 1627736 5737704 +1628272 5736808 1628176 5736792 1628032 5737712 1628056 5737728 +1628352 5736600 1628400 5736528 1628256 5736240 1628176 5736792 +1628176 5736792 1627976 5736656 1627776 5737664 1627856 5737672 +1627856 5736056 1627976 5736656 1628176 5736792 1628256 5736240 +1628176 5736792 1628352 5736600 1628256 5736240 1627976 5736656 +1628176 5736792 1628320 5736784 1628352 5736600 1627976 5736656 +1627976 5736656 1627776 5737664 1628176 5736792 1628352 5736600 +1628256 5736240 1627856 5736056 1627976 5736656 1628352 5736600 +1627856 5736056 1627776 5737664 1627976 5736656 1628256 5736240 +1627776 5737664 1627976 5736656 1627856 5736056 1627736 5737704 +1627776 5737664 1628176 5736792 1627976 5736656 1627736 5737704 +1627976 5736656 1628256 5736240 1627856 5736056 1627736 5737704 +1627856 5736056 1626040 5738272 1627736 5737704 1627976 5736656 +1627856 5736056 1626040 5738272 1627976 5736656 1628256 5736240 +1627736 5737704 1627776 5737664 1627976 5736656 1626040 5738272 +1626040 5738272 1626136 5738328 1627736 5737704 1627976 5736656 +1627856 5736056 1625760 5738184 1626040 5738272 1627976 5736656 +1627856 5736056 1625760 5738184 1627976 5736656 1628256 5736240 +1626040 5738272 1627736 5737704 1627976 5736656 1625760 5738184 +1627856 5736056 1625656 5738160 1625760 5738184 1627976 5736656 +1628352 5736600 1628400 5736528 1628256 5736240 1627976 5736656 +1627856 5736056 1627936 5736648 1627976 5736656 1628256 5736240 +1627976 5736656 1628352 5736600 1628256 5736240 1627936 5736648 +1627936 5736648 1625760 5738184 1627976 5736656 1628256 5736240 +1627856 5736056 1625760 5738184 1627936 5736648 1628256 5736240 +1625760 5738184 1627936 5736648 1627856 5736056 1625656 5738160 +1627976 5736656 1627936 5736648 1625760 5738184 1626040 5738272 +1627976 5736656 1628256 5736240 1627936 5736648 1626040 5738272 +1627936 5736648 1627856 5736056 1625760 5738184 1626040 5738272 +1627976 5736656 1627936 5736648 1626040 5738272 1627736 5737704 +1627976 5736656 1628256 5736240 1627936 5736648 1627736 5737704 +1627976 5736656 1627936 5736648 1627736 5737704 1627776 5737664 +1627976 5736656 1627936 5736648 1627776 5737664 1628176 5736792 +1627776 5737664 1627856 5737672 1628176 5736792 1627936 5736648 +1627976 5736656 1628256 5736240 1627936 5736648 1628176 5736792 +1627936 5736648 1627736 5737704 1627776 5737664 1628176 5736792 +1626040 5738272 1626136 5738328 1627736 5737704 1627936 5736648 +1627936 5736648 1626040 5738272 1627736 5737704 1627776 5737664 +1627936 5736648 1625760 5738184 1626040 5738272 1627736 5737704 +1627936 5736648 1627920 5736632 1625760 5738184 1626040 5738272 +1627936 5736648 1627856 5736056 1627920 5736632 1626040 5738272 +1627856 5736056 1627920 5736632 1627936 5736648 1628256 5736240 +1627936 5736648 1627976 5736656 1628256 5736240 1627920 5736632 +1627976 5736656 1628352 5736600 1628256 5736240 1627920 5736632 +1627920 5736632 1626040 5738272 1627936 5736648 1627976 5736656 +1628256 5736240 1627856 5736056 1627920 5736632 1627976 5736656 +1627920 5736632 1627856 5736056 1625760 5738184 1626040 5738272 +1627856 5736056 1625760 5738184 1627920 5736632 1628256 5736240 +1625760 5738184 1627920 5736632 1627856 5736056 1625656 5738160 +1627936 5736648 1627920 5736632 1626040 5738272 1627736 5737704 +1627920 5736632 1625760 5738184 1626040 5738272 1627736 5737704 +1627936 5736648 1627976 5736656 1627920 5736632 1627736 5737704 +1626040 5738272 1626136 5738328 1627736 5737704 1627920 5736632 +1627936 5736648 1627920 5736632 1627736 5737704 1627776 5737664 +1627936 5736648 1627976 5736656 1627920 5736632 1627776 5737664 +1627936 5736648 1627920 5736632 1627776 5737664 1628176 5736792 +1627920 5736632 1626040 5738272 1627736 5737704 1627776 5737664 +1627920 5736632 1627624 5736560 1625760 5738184 1626040 5738272 +1627920 5736632 1627624 5736560 1626040 5738272 1627736 5737704 +1627624 5736560 1625760 5738184 1626040 5738272 1627736 5737704 +1627920 5736632 1627856 5736056 1627624 5736560 1627736 5737704 +1627856 5736056 1627624 5736560 1627920 5736632 1628256 5736240 +1627624 5736560 1627856 5736056 1625760 5738184 1626040 5738272 +1626040 5738272 1626136 5738328 1627736 5737704 1627624 5736560 +1625760 5738184 1627624 5736560 1627856 5736056 1625656 5738160 +1625760 5738184 1626040 5738272 1627624 5736560 1625656 5738160 +1627624 5736560 1627920 5736632 1627856 5736056 1625656 5738160 +1627856 5736056 1625488 5738112 1625656 5738160 1627624 5736560 +1627856 5736056 1625488 5738112 1627624 5736560 1627920 5736632 +1627856 5736056 1625120 5738032 1625488 5738112 1627624 5736560 +1627856 5736056 1625120 5738032 1627624 5736560 1627920 5736632 +1627856 5736056 1624904 5738000 1625120 5738032 1627624 5736560 +1627856 5736056 1624904 5738000 1627624 5736560 1627920 5736632 +1625488 5738112 1625656 5738160 1627624 5736560 1625120 5738032 +1625120 5738032 1625488 5738112 1627624 5736560 1624904 5738000 +1627856 5736056 1621784 5733192 1624904 5738000 1627624 5736560 +1625656 5738160 1625760 5738184 1627624 5736560 1625488 5738112 +1627920 5736632 1627624 5736560 1627736 5737704 1627776 5737664 +1627624 5736560 1626040 5738272 1627736 5737704 1627776 5737664 +1627920 5736632 1627856 5736056 1627624 5736560 1627776 5737664 +1627920 5736632 1627624 5736560 1627776 5737664 1627936 5736648 +1627920 5736632 1627856 5736056 1627624 5736560 1627936 5736648 +1627776 5737664 1628176 5736792 1627936 5736648 1627624 5736560 +1627624 5736560 1627736 5737704 1627776 5737664 1627936 5736648 +1627856 5736056 1627376 5736376 1627624 5736560 1627920 5736632 +1627624 5736560 1627376 5736376 1624904 5738000 1625120 5738032 +1627624 5736560 1627856 5736056 1627376 5736376 1625120 5738032 +1627376 5736376 1627856 5736056 1624904 5738000 1625120 5738032 +1627624 5736560 1627376 5736376 1625120 5738032 1625488 5738112 +1627624 5736560 1627856 5736056 1627376 5736376 1625488 5738112 +1627376 5736376 1624904 5738000 1625120 5738032 1625488 5738112 +1627624 5736560 1627376 5736376 1625488 5738112 1625656 5738160 +1627624 5736560 1627856 5736056 1627376 5736376 1625656 5738160 +1627376 5736376 1625120 5738032 1625488 5738112 1625656 5738160 +1624904 5738000 1627376 5736376 1627856 5736056 1621784 5733192 +1624904 5738000 1625120 5738032 1627376 5736376 1621784 5733192 +1627376 5736376 1627624 5736560 1627856 5736056 1621784 5733192 +1627624 5736560 1627376 5736376 1625656 5738160 1625760 5738184 +1627624 5736560 1627376 5736376 1625760 5738184 1626040 5738272 +1627624 5736560 1627376 5736376 1626040 5738272 1627736 5737704 +1627624 5736560 1627376 5736376 1627736 5737704 1627776 5737664 +1627376 5736376 1625760 5738184 1626040 5738272 1627736 5737704 +1627624 5736560 1627856 5736056 1627376 5736376 1627736 5737704 +1626040 5738272 1626136 5738328 1627736 5737704 1627376 5736376 +1627376 5736376 1625488 5738112 1625656 5738160 1625760 5738184 +1627376 5736376 1625656 5738160 1625760 5738184 1626040 5738272 +1627856 5736056 1621808 5733136 1621784 5733192 1627376 5736376 +1627856 5736056 1621808 5733136 1627376 5736376 1627624 5736560 +1627856 5736056 1627440 5730528 1621808 5733136 1627376 5736376 +1627856 5736056 1627440 5730528 1627376 5736376 1627624 5736560 +1627856 5736056 1627560 5730576 1627440 5730528 1627376 5736376 +1627440 5730528 1627360 5730472 1621808 5733136 1627376 5736376 +1621784 5733192 1624904 5738000 1627376 5736376 1621808 5733136 +1621808 5733136 1621784 5733192 1627376 5736376 1627440 5730528 +1624904 5738000 1627376 5736376 1621784 5733192 1621712 5733232 +1627376 5736376 1627168 5736256 1621784 5733192 1624904 5738000 +1627376 5736376 1627168 5736256 1624904 5738000 1625120 5738032 +1627376 5736376 1621808 5733136 1627168 5736256 1625120 5738032 +1627168 5736256 1621808 5733136 1621784 5733192 1624904 5738000 +1627376 5736376 1627168 5736256 1625120 5738032 1625488 5738112 +1627168 5736256 1624904 5738000 1625120 5738032 1625488 5738112 +1627376 5736376 1621808 5733136 1627168 5736256 1625488 5738112 +1627376 5736376 1627168 5736256 1625488 5738112 1625656 5738160 +1627376 5736376 1621808 5733136 1627168 5736256 1625656 5738160 +1627168 5736256 1625120 5738032 1625488 5738112 1625656 5738160 +1627376 5736376 1627168 5736256 1625656 5738160 1625760 5738184 +1627376 5736376 1621808 5733136 1627168 5736256 1625760 5738184 +1627168 5736256 1625488 5738112 1625656 5738160 1625760 5738184 +1627168 5736256 1621784 5733192 1624904 5738000 1625120 5738032 +1627376 5736376 1627168 5736256 1625760 5738184 1626040 5738272 +1627376 5736376 1627168 5736256 1626040 5738272 1627736 5737704 +1627376 5736376 1627168 5736256 1627736 5737704 1627624 5736560 +1627376 5736376 1621808 5733136 1627168 5736256 1627736 5737704 +1626040 5738272 1626136 5738328 1627736 5737704 1627168 5736256 +1627168 5736256 1625656 5738160 1625760 5738184 1626040 5738272 +1627168 5736256 1625760 5738184 1626040 5738272 1627736 5737704 +1621808 5733136 1627168 5736256 1627376 5736376 1627440 5730528 +1627168 5736256 1627736 5737704 1627376 5736376 1627440 5730528 +1621808 5733136 1621784 5733192 1627168 5736256 1627440 5730528 +1627376 5736376 1627856 5736056 1627440 5730528 1627168 5736256 +1627376 5736376 1627856 5736056 1627168 5736256 1627736 5737704 +1627376 5736376 1627624 5736560 1627856 5736056 1627168 5736256 +1627856 5736056 1627560 5730576 1627440 5730528 1627168 5736256 +1627560 5730576 1627520 5730552 1627440 5730528 1627168 5736256 +1627856 5736056 1627632 5730600 1627560 5730576 1627168 5736256 +1627560 5730576 1627440 5730528 1627168 5736256 1627632 5730600 +1627856 5736056 1627632 5730600 1627168 5736256 1627376 5736376 +1627856 5736056 1627656 5730600 1627632 5730600 1627168 5736256 +1621808 5733136 1627168 5736256 1627440 5730528 1627360 5730472 +1621808 5733136 1627168 5736256 1627360 5730472 1627328 5730448 +1621808 5733136 1621784 5733192 1627168 5736256 1627360 5730472 +1627440 5730528 1627360 5730472 1627168 5736256 1627560 5730576 +1621784 5733192 1621712 5733232 1624904 5738000 1627168 5736256 +1621784 5733192 1626992 5736208 1627168 5736256 1621808 5733136 +1626992 5736208 1624904 5738000 1627168 5736256 1621808 5733136 +1627168 5736256 1627360 5730472 1621808 5733136 1626992 5736208 +1627360 5730472 1627328 5730448 1621808 5733136 1626992 5736208 +1621808 5733136 1621784 5733192 1626992 5736208 1627328 5730448 +1627168 5736256 1627360 5730472 1626992 5736208 1624904 5738000 +1627360 5730472 1627328 5730448 1626992 5736208 1627168 5736256 +1621784 5733192 1624904 5738000 1626992 5736208 1621808 5733136 +1627328 5730448 1621800 5732912 1621808 5733136 1626992 5736208 +1627168 5736256 1627440 5730528 1627360 5730472 1626992 5736208 +1627168 5736256 1627440 5730528 1626992 5736208 1624904 5738000 +1627360 5730472 1627328 5730448 1626992 5736208 1627440 5730528 +1627168 5736256 1626992 5736208 1624904 5738000 1625120 5738032 +1627168 5736256 1626992 5736208 1625120 5738032 1625488 5738112 +1627168 5736256 1627440 5730528 1626992 5736208 1625488 5738112 +1626992 5736208 1621784 5733192 1624904 5738000 1625120 5738032 +1627168 5736256 1626992 5736208 1625488 5738112 1625656 5738160 +1626992 5736208 1625120 5738032 1625488 5738112 1625656 5738160 +1627168 5736256 1627440 5730528 1626992 5736208 1625656 5738160 +1627168 5736256 1626992 5736208 1625656 5738160 1625760 5738184 +1627168 5736256 1627440 5730528 1626992 5736208 1625760 5738184 +1626992 5736208 1625488 5738112 1625656 5738160 1625760 5738184 +1627168 5736256 1626992 5736208 1625760 5738184 1626040 5738272 +1627168 5736256 1627440 5730528 1626992 5736208 1626040 5738272 +1626992 5736208 1625656 5738160 1625760 5738184 1626040 5738272 +1626992 5736208 1624904 5738000 1625120 5738032 1625488 5738112 +1627168 5736256 1626992 5736208 1626040 5738272 1627736 5737704 +1627168 5736256 1626992 5736208 1627736 5737704 1627376 5736376 +1627736 5737704 1627624 5736560 1627376 5736376 1626992 5736208 +1627168 5736256 1627440 5730528 1626992 5736208 1627376 5736376 +1626040 5738272 1626136 5738328 1627736 5737704 1626992 5736208 +1626992 5736208 1625760 5738184 1626040 5738272 1627736 5737704 +1626992 5736208 1626040 5738272 1627736 5737704 1627376 5736376 +1627168 5736256 1627560 5730576 1627440 5730528 1626992 5736208 +1627560 5730576 1627520 5730552 1627440 5730528 1626992 5736208 +1627168 5736256 1627560 5730576 1626992 5736208 1627376 5736376 +1627168 5736256 1627632 5730600 1627560 5730576 1626992 5736208 +1627168 5736256 1627632 5730600 1626992 5736208 1627376 5736376 +1627168 5736256 1627856 5736056 1627632 5730600 1626992 5736208 +1627168 5736256 1627856 5736056 1626992 5736208 1627376 5736376 +1627632 5730600 1627560 5730576 1626992 5736208 1627856 5736056 +1627168 5736256 1627376 5736376 1627856 5736056 1626992 5736208 +1627856 5736056 1627656 5730600 1627632 5730600 1626992 5736208 +1627440 5730528 1627360 5730472 1626992 5736208 1627560 5730576 +1627560 5730576 1627440 5730528 1626992 5736208 1627632 5730600 +1624904 5738000 1626992 5736208 1621784 5733192 1621712 5733232 +1626992 5736208 1626800 5736136 1624904 5738000 1625120 5738032 +1626992 5736208 1621784 5733192 1626800 5736136 1625120 5738032 +1621784 5733192 1626800 5736136 1626992 5736208 1621808 5733136 +1626992 5736208 1627328 5730448 1621808 5733136 1626800 5736136 +1626992 5736208 1627360 5730472 1627328 5730448 1626800 5736136 +1627328 5730448 1621808 5733136 1626800 5736136 1627360 5730472 +1626992 5736208 1627440 5730528 1627360 5730472 1626800 5736136 +1627360 5730472 1627328 5730448 1626800 5736136 1627440 5730528 +1626800 5736136 1625120 5738032 1626992 5736208 1627440 5730528 +1621808 5733136 1621784 5733192 1626800 5736136 1627328 5730448 +1627328 5730448 1621800 5732912 1621808 5733136 1626800 5736136 +1626800 5736136 1621784 5733192 1624904 5738000 1625120 5738032 +1621784 5733192 1624904 5738000 1626800 5736136 1621808 5733136 +1626992 5736208 1627560 5730576 1627440 5730528 1626800 5736136 +1627560 5730576 1627520 5730552 1627440 5730528 1626800 5736136 +1627440 5730528 1627360 5730472 1626800 5736136 1627560 5730576 +1626992 5736208 1627560 5730576 1626800 5736136 1625120 5738032 +1626992 5736208 1626800 5736136 1625120 5738032 1625488 5738112 +1626992 5736208 1626800 5736136 1625488 5738112 1625656 5738160 +1626800 5736136 1624904 5738000 1625120 5738032 1625488 5738112 +1626992 5736208 1627560 5730576 1626800 5736136 1625656 5738160 +1626992 5736208 1626800 5736136 1625656 5738160 1625760 5738184 +1626800 5736136 1625488 5738112 1625656 5738160 1625760 5738184 +1626992 5736208 1627560 5730576 1626800 5736136 1625760 5738184 +1626992 5736208 1626800 5736136 1625760 5738184 1626040 5738272 +1626992 5736208 1627560 5730576 1626800 5736136 1626040 5738272 +1626800 5736136 1625656 5738160 1625760 5738184 1626040 5738272 +1626992 5736208 1626800 5736136 1626040 5738272 1627736 5737704 +1626800 5736136 1625120 5738032 1625488 5738112 1625656 5738160 +1626992 5736208 1627632 5730600 1627560 5730576 1626800 5736136 +1626992 5736208 1627632 5730600 1626800 5736136 1626040 5738272 +1626992 5736208 1627856 5736056 1627632 5730600 1626800 5736136 +1626992 5736208 1627856 5736056 1626800 5736136 1626040 5738272 +1626992 5736208 1627168 5736256 1627856 5736056 1626800 5736136 +1627856 5736056 1627656 5730600 1627632 5730600 1626800 5736136 +1627560 5730576 1627440 5730528 1626800 5736136 1627632 5730600 +1627632 5730600 1627560 5730576 1626800 5736136 1627856 5736056 +1624904 5738000 1626800 5736136 1621784 5733192 1621712 5733232 +1627328 5730448 1626664 5736032 1626800 5736136 1627360 5730472 +1626800 5736136 1627440 5730528 1627360 5730472 1626664 5736032 +1627360 5730472 1627328 5730448 1626664 5736032 1627440 5730528 +1626800 5736136 1627560 5730576 1627440 5730528 1626664 5736032 +1627560 5730576 1627520 5730552 1627440 5730528 1626664 5736032 +1627440 5730528 1627360 5730472 1626664 5736032 1627560 5730576 +1626800 5736136 1626664 5736032 1621808 5733136 1621784 5733192 +1626664 5736032 1627328 5730448 1621808 5733136 1621784 5733192 +1627328 5730448 1621808 5733136 1626664 5736032 1627360 5730472 +1621808 5733136 1626664 5736032 1627328 5730448 1621800 5732912 +1626664 5736032 1621784 5733192 1626800 5736136 1627560 5730576 +1626800 5736136 1626664 5736032 1621784 5733192 1624904 5738000 +1626664 5736032 1621808 5733136 1621784 5733192 1624904 5738000 +1626800 5736136 1626664 5736032 1624904 5738000 1625120 5738032 +1626800 5736136 1626664 5736032 1625120 5738032 1625488 5738112 +1626664 5736032 1624904 5738000 1625120 5738032 1625488 5738112 +1626800 5736136 1627560 5730576 1626664 5736032 1625488 5738112 +1626664 5736032 1621784 5733192 1624904 5738000 1625120 5738032 +1626800 5736136 1627632 5730600 1627560 5730576 1626664 5736032 +1627560 5730576 1627440 5730528 1626664 5736032 1627632 5730600 +1626800 5736136 1627632 5730600 1626664 5736032 1625488 5738112 +1626800 5736136 1626664 5736032 1625488 5738112 1625656 5738160 +1626800 5736136 1626664 5736032 1625656 5738160 1625760 5738184 +1626664 5736032 1625120 5738032 1625488 5738112 1625656 5738160 +1626800 5736136 1626664 5736032 1625760 5738184 1626040 5738272 +1626800 5736136 1627632 5730600 1626664 5736032 1625760 5738184 +1626664 5736032 1625488 5738112 1625656 5738160 1625760 5738184 +1626800 5736136 1627856 5736056 1627632 5730600 1626664 5736032 +1626800 5736136 1626992 5736208 1627856 5736056 1626664 5736032 +1626992 5736208 1627168 5736256 1627856 5736056 1626664 5736032 +1626800 5736136 1626992 5736208 1626664 5736032 1625760 5738184 +1627856 5736056 1627656 5730600 1627632 5730600 1626664 5736032 +1627632 5730600 1627560 5730576 1626664 5736032 1627856 5736056 +1627856 5736056 1627632 5730600 1626664 5736032 1626992 5736208 +1621784 5733192 1621712 5733232 1624904 5738000 1626664 5736032 +1626664 5736032 1626504 5735936 1621808 5733136 1621784 5733192 +1626664 5736032 1626504 5735936 1621784 5733192 1624904 5738000 +1626504 5735936 1621808 5733136 1621784 5733192 1624904 5738000 +1626664 5736032 1627328 5730448 1626504 5735936 1624904 5738000 +1627328 5730448 1626504 5735936 1626664 5736032 1627360 5730472 +1626664 5736032 1627440 5730528 1627360 5730472 1626504 5735936 +1626664 5736032 1627560 5730576 1627440 5730528 1626504 5735936 +1627560 5730576 1627520 5730552 1627440 5730528 1626504 5735936 +1627440 5730528 1627360 5730472 1626504 5735936 1627560 5730576 +1626664 5736032 1627632 5730600 1627560 5730576 1626504 5735936 +1627560 5730576 1627440 5730528 1626504 5735936 1627632 5730600 +1626504 5735936 1624904 5738000 1626664 5736032 1627632 5730600 +1627360 5730472 1627328 5730448 1626504 5735936 1627440 5730528 +1626504 5735936 1627328 5730448 1621808 5733136 1621784 5733192 +1627328 5730448 1621808 5733136 1626504 5735936 1627360 5730472 +1621808 5733136 1626504 5735936 1627328 5730448 1621800 5732912 +1626664 5736032 1626504 5735936 1624904 5738000 1625120 5738032 +1626504 5735936 1621784 5733192 1624904 5738000 1625120 5738032 +1626664 5736032 1627632 5730600 1626504 5735936 1625120 5738032 +1626664 5736032 1626504 5735936 1625120 5738032 1625488 5738112 +1626664 5736032 1626504 5735936 1625488 5738112 1625656 5738160 +1626664 5736032 1627632 5730600 1626504 5735936 1625656 5738160 +1626504 5735936 1625120 5738032 1625488 5738112 1625656 5738160 +1626504 5735936 1624904 5738000 1625120 5738032 1625488 5738112 +1626664 5736032 1627856 5736056 1627632 5730600 1626504 5735936 +1627632 5730600 1627560 5730576 1626504 5735936 1627856 5736056 +1626664 5736032 1627856 5736056 1626504 5735936 1625656 5738160 +1627856 5736056 1627656 5730600 1627632 5730600 1626504 5735936 +1626664 5736032 1626504 5735936 1625656 5738160 1625760 5738184 +1626664 5736032 1626992 5736208 1627856 5736056 1626504 5735936 +1621784 5733192 1621712 5733232 1624904 5738000 1626504 5735936 +1626504 5735936 1626320 5735888 1624904 5738000 1625120 5738032 +1621784 5733192 1626320 5735888 1626504 5735936 1621808 5733136 +1621784 5733192 1624904 5738000 1626320 5735888 1621808 5733136 +1626504 5735936 1627328 5730448 1621808 5733136 1626320 5735888 +1621808 5733136 1621784 5733192 1626320 5735888 1627328 5730448 +1626504 5735936 1627328 5730448 1626320 5735888 1625120 5738032 +1626504 5735936 1627360 5730472 1627328 5730448 1626320 5735888 +1626504 5735936 1627440 5730528 1627360 5730472 1626320 5735888 +1626504 5735936 1627560 5730576 1627440 5730528 1626320 5735888 +1627560 5730576 1627520 5730552 1627440 5730528 1626320 5735888 +1626504 5735936 1627632 5730600 1627560 5730576 1626320 5735888 +1627560 5730576 1627440 5730528 1626320 5735888 1627632 5730600 +1626504 5735936 1627856 5736056 1627632 5730600 1626320 5735888 +1627440 5730528 1627360 5730472 1626320 5735888 1627560 5730576 +1627328 5730448 1621808 5733136 1626320 5735888 1627360 5730472 +1626504 5735936 1627632 5730600 1626320 5735888 1625120 5738032 +1627360 5730472 1627328 5730448 1626320 5735888 1627440 5730528 +1626320 5735888 1621784 5733192 1624904 5738000 1625120 5738032 +1627328 5730448 1621800 5732912 1621808 5733136 1626320 5735888 +1627328 5730448 1627296 5730408 1621800 5732912 1626320 5735888 +1621808 5733136 1621784 5733192 1626320 5735888 1621800 5732912 +1627328 5730448 1621800 5732912 1626320 5735888 1627360 5730472 +1626504 5735936 1626320 5735888 1625120 5738032 1625488 5738112 +1626320 5735888 1624904 5738000 1625120 5738032 1625488 5738112 +1626504 5735936 1627632 5730600 1626320 5735888 1625488 5738112 +1626504 5735936 1626320 5735888 1625488 5738112 1625656 5738160 +1626504 5735936 1626320 5735888 1625656 5738160 1626664 5736032 +1626504 5735936 1627632 5730600 1626320 5735888 1626664 5736032 +1626320 5735888 1625488 5738112 1625656 5738160 1626664 5736032 +1626320 5735888 1625120 5738032 1625488 5738112 1625656 5738160 +1625656 5738160 1625760 5738184 1626664 5736032 1626320 5735888 +1625760 5738184 1626800 5736136 1626664 5736032 1626320 5735888 +1626664 5736032 1626504 5735936 1626320 5735888 1626800 5736136 +1625760 5738184 1626040 5738272 1626800 5736136 1626320 5735888 +1625656 5738160 1625760 5738184 1626320 5735888 1625488 5738112 +1625760 5738184 1626800 5736136 1626320 5735888 1625656 5738160 +1624904 5738000 1626320 5735888 1621784 5733192 1621712 5733232 +1621784 5733192 1626240 5735904 1626320 5735888 1621808 5733136 +1626240 5735904 1624904 5738000 1626320 5735888 1621808 5733136 +1621784 5733192 1624904 5738000 1626240 5735904 1621808 5733136 +1626320 5735888 1621800 5732912 1621808 5733136 1626240 5735904 +1626320 5735888 1621800 5732912 1626240 5735904 1624904 5738000 +1621808 5733136 1621784 5733192 1626240 5735904 1621800 5732912 +1626320 5735888 1626240 5735904 1624904 5738000 1625120 5738032 +1626320 5735888 1621800 5732912 1626240 5735904 1625120 5738032 +1626240 5735904 1621784 5733192 1624904 5738000 1625120 5738032 +1626320 5735888 1626240 5735904 1625120 5738032 1625488 5738112 +1626320 5735888 1621800 5732912 1626240 5735904 1625488 5738112 +1626240 5735904 1624904 5738000 1625120 5738032 1625488 5738112 +1626320 5735888 1627328 5730448 1621800 5732912 1626240 5735904 +1627328 5730448 1627296 5730408 1621800 5732912 1626240 5735904 +1626320 5735888 1627328 5730448 1626240 5735904 1625488 5738112 +1621800 5732912 1621808 5733136 1626240 5735904 1627328 5730448 +1626320 5735888 1627360 5730472 1627328 5730448 1626240 5735904 +1626320 5735888 1627360 5730472 1626240 5735904 1625488 5738112 +1626320 5735888 1627440 5730528 1627360 5730472 1626240 5735904 +1626320 5735888 1627440 5730528 1626240 5735904 1625488 5738112 +1626320 5735888 1627560 5730576 1627440 5730528 1626240 5735904 +1627360 5730472 1627328 5730448 1626240 5735904 1627440 5730528 +1627328 5730448 1621800 5732912 1626240 5735904 1627360 5730472 +1626320 5735888 1626240 5735904 1625488 5738112 1625656 5738160 +1626320 5735888 1627440 5730528 1626240 5735904 1625656 5738160 +1626240 5735904 1625120 5738032 1625488 5738112 1625656 5738160 +1626320 5735888 1626240 5735904 1625656 5738160 1625760 5738184 +1626320 5735888 1627440 5730528 1626240 5735904 1625760 5738184 +1626240 5735904 1625488 5738112 1625656 5738160 1625760 5738184 +1626320 5735888 1626240 5735904 1625760 5738184 1626800 5736136 +1626320 5735888 1627440 5730528 1626240 5735904 1626800 5736136 +1626320 5735888 1626240 5735904 1626800 5736136 1626664 5736032 +1626320 5735888 1627440 5730528 1626240 5735904 1626664 5736032 +1626320 5735888 1626240 5735904 1626664 5736032 1626504 5735936 +1626320 5735888 1627440 5730528 1626240 5735904 1626504 5735936 +1626240 5735904 1626800 5736136 1626664 5736032 1626504 5735936 +1625760 5738184 1626040 5738272 1626800 5736136 1626240 5735904 +1626240 5735904 1625656 5738160 1625760 5738184 1626800 5736136 +1626240 5735904 1625760 5738184 1626800 5736136 1626664 5736032 +1624904 5738000 1626240 5735904 1621784 5733192 1621712 5733232 +1626240 5735904 1626096 5736000 1624904 5738000 1625120 5738032 +1626240 5735904 1626096 5736000 1625120 5738032 1625488 5738112 +1626096 5736000 1624904 5738000 1625120 5738032 1625488 5738112 +1621784 5733192 1626096 5736000 1626240 5735904 1621808 5733136 +1626240 5735904 1621800 5732912 1621808 5733136 1626096 5736000 +1626240 5735904 1621808 5733136 1626096 5736000 1625488 5738112 +1626096 5736000 1621784 5733192 1624904 5738000 1625120 5738032 +1621784 5733192 1624904 5738000 1626096 5736000 1621808 5733136 +1626240 5735904 1626096 5736000 1625488 5738112 1625656 5738160 +1626096 5736000 1625120 5738032 1625488 5738112 1625656 5738160 +1626240 5735904 1621808 5733136 1626096 5736000 1625656 5738160 +1626240 5735904 1626096 5736000 1625656 5738160 1625760 5738184 +1626240 5735904 1621808 5733136 1626096 5736000 1625760 5738184 +1626096 5736000 1625488 5738112 1625656 5738160 1625760 5738184 +1626240 5735904 1626096 5736000 1625760 5738184 1626800 5736136 +1626240 5735904 1621808 5733136 1626096 5736000 1626800 5736136 +1625760 5738184 1626040 5738272 1626800 5736136 1626096 5736000 +1626096 5736000 1625656 5738160 1625760 5738184 1626800 5736136 +1626240 5735904 1626096 5736000 1626800 5736136 1626664 5736032 +1626240 5735904 1621808 5733136 1626096 5736000 1626664 5736032 +1626240 5735904 1626096 5736000 1626664 5736032 1626504 5735936 +1626240 5735904 1621808 5733136 1626096 5736000 1626504 5735936 +1626240 5735904 1626096 5736000 1626504 5735936 1626320 5735888 +1626096 5736000 1625760 5738184 1626800 5736136 1626664 5736032 +1626096 5736000 1626800 5736136 1626664 5736032 1626504 5735936 +1624904 5738000 1626096 5736000 1621784 5733192 1621712 5733232 +1626096 5736000 1626064 5736040 1624904 5738000 1625120 5738032 +1626096 5736000 1626064 5736040 1625120 5738032 1625488 5738112 +1626096 5736000 1626064 5736040 1625488 5738112 1625656 5738160 +1626064 5736040 1625120 5738032 1625488 5738112 1625656 5738160 +1626064 5736040 1624904 5738000 1625120 5738032 1625488 5738112 +1626096 5736000 1621784 5733192 1626064 5736040 1625656 5738160 +1621784 5733192 1626064 5736040 1626096 5736000 1621808 5733136 +1626064 5736040 1621784 5733192 1624904 5738000 1625120 5738032 +1626096 5736000 1626064 5736040 1625656 5738160 1625760 5738184 +1626064 5736040 1625488 5738112 1625656 5738160 1625760 5738184 +1626096 5736000 1621784 5733192 1626064 5736040 1625760 5738184 +1626096 5736000 1626064 5736040 1625760 5738184 1626800 5736136 +1626096 5736000 1621784 5733192 1626064 5736040 1626800 5736136 +1626064 5736040 1625656 5738160 1625760 5738184 1626800 5736136 +1625760 5738184 1626040 5738272 1626800 5736136 1626064 5736040 +1625760 5738184 1626040 5738272 1626064 5736040 1625656 5738160 +1626096 5736000 1626064 5736040 1626800 5736136 1626664 5736032 +1626096 5736000 1621784 5733192 1626064 5736040 1626664 5736032 +1626800 5736136 1626664 5736032 1626064 5736040 1626040 5738272 +1626040 5738272 1626992 5736208 1626800 5736136 1626064 5736040 +1626096 5736000 1626064 5736040 1626664 5736032 1626504 5735936 +1626096 5736000 1621784 5733192 1626064 5736040 1626504 5735936 +1626096 5736000 1626064 5736040 1626504 5735936 1626240 5735904 +1626064 5736040 1626800 5736136 1626664 5736032 1626504 5735936 +1624904 5738000 1626064 5736040 1621784 5733192 1621712 5733232 +1626064 5736040 1626048 5736096 1625488 5738112 1625656 5738160 +1626064 5736040 1626048 5736096 1625656 5738160 1625760 5738184 +1626048 5736096 1625488 5738112 1625656 5738160 1625760 5738184 +1625120 5738032 1626048 5736096 1626064 5736040 1624904 5738000 +1626064 5736040 1621784 5733192 1624904 5738000 1626048 5736096 +1624904 5738000 1625120 5738032 1626048 5736096 1621784 5733192 +1626064 5736040 1621784 5733192 1626048 5736096 1625760 5738184 +1626064 5736040 1626096 5736000 1621784 5733192 1626048 5736096 +1626048 5736096 1625120 5738032 1625488 5738112 1625656 5738160 +1625120 5738032 1625488 5738112 1626048 5736096 1624904 5738000 +1626064 5736040 1626048 5736096 1625760 5738184 1626040 5738272 +1626048 5736096 1625656 5738160 1625760 5738184 1626040 5738272 +1626064 5736040 1621784 5733192 1626048 5736096 1626040 5738272 +1626064 5736040 1626048 5736096 1626040 5738272 1626800 5736136 +1626064 5736040 1621784 5733192 1626048 5736096 1626800 5736136 +1626048 5736096 1625760 5738184 1626040 5738272 1626800 5736136 +1626064 5736040 1626048 5736096 1626800 5736136 1626664 5736032 +1626064 5736040 1621784 5733192 1626048 5736096 1626664 5736032 +1626048 5736096 1626040 5738272 1626800 5736136 1626664 5736032 +1626064 5736040 1626048 5736096 1626664 5736032 1626504 5735936 +1626064 5736040 1621784 5733192 1626048 5736096 1626504 5735936 +1626048 5736096 1626800 5736136 1626664 5736032 1626504 5735936 +1626040 5738272 1626992 5736208 1626800 5736136 1626048 5736096 +1626064 5736040 1626048 5736096 1626504 5735936 1626096 5736000 +1626064 5736040 1621784 5733192 1626048 5736096 1626096 5736000 +1626504 5735936 1626240 5735904 1626096 5736000 1626048 5736096 +1626504 5735936 1626320 5735888 1626240 5735904 1626048 5736096 +1626048 5736096 1626664 5736032 1626504 5735936 1626240 5735904 +1626096 5736000 1626064 5736040 1626048 5736096 1626240 5735904 +1621784 5733192 1621712 5733232 1624904 5738000 1626048 5736096 +1626040 5738272 1626072 5736440 1626048 5736096 1625760 5738184 +1626048 5736096 1625656 5738160 1625760 5738184 1626072 5736440 +1626048 5736096 1625488 5738112 1625656 5738160 1626072 5736440 +1625656 5738160 1625760 5738184 1626072 5736440 1625488 5738112 +1626048 5736096 1625120 5738032 1625488 5738112 1626072 5736440 +1625488 5738112 1625656 5738160 1626072 5736440 1625120 5738032 +1626072 5736440 1626800 5736136 1626048 5736096 1625120 5738032 +1626048 5736096 1624904 5738000 1625120 5738032 1626072 5736440 +1626048 5736096 1621784 5733192 1624904 5738000 1626072 5736440 +1625120 5738032 1625488 5738112 1626072 5736440 1624904 5738000 +1626048 5736096 1624904 5738000 1626072 5736440 1626800 5736136 +1626040 5738272 1626800 5736136 1626072 5736440 1625760 5738184 +1625760 5738184 1626040 5738272 1626072 5736440 1625656 5738160 +1626048 5736096 1626072 5736440 1626800 5736136 1626664 5736032 +1626048 5736096 1624904 5738000 1626072 5736440 1626664 5736032 +1626072 5736440 1626040 5738272 1626800 5736136 1626664 5736032 +1626048 5736096 1626072 5736440 1626664 5736032 1626504 5735936 +1626048 5736096 1624904 5738000 1626072 5736440 1626504 5735936 +1626072 5736440 1626800 5736136 1626664 5736032 1626504 5735936 +1626048 5736096 1626072 5736440 1626504 5735936 1626240 5735904 +1626800 5736136 1626072 5736440 1626040 5738272 1626992 5736208 +1626800 5736136 1626664 5736032 1626072 5736440 1626992 5736208 +1626072 5736440 1625760 5738184 1626040 5738272 1626992 5736208 +1626040 5738272 1627736 5737704 1626992 5736208 1626072 5736440 +1626040 5738272 1627736 5737704 1626072 5736440 1625760 5738184 +1626040 5738272 1626136 5738328 1627736 5737704 1626072 5736440 +1626040 5738272 1626136 5738328 1626072 5736440 1625760 5738184 +1626136 5738328 1626688 5738608 1627736 5737704 1626072 5736440 +1627736 5737704 1626992 5736208 1626072 5736440 1626136 5738328 +1626992 5736208 1626800 5736136 1626072 5736440 1627736 5737704 +1627736 5737704 1627376 5736376 1626992 5736208 1626072 5736440 +1627736 5737704 1627624 5736560 1627376 5736376 1626072 5736440 +1627376 5736376 1627168 5736256 1626992 5736208 1626072 5736440 +1627736 5737704 1627376 5736376 1626072 5736440 1626136 5738328 +1626992 5736208 1626800 5736136 1626072 5736440 1627376 5736376 +1626072 5736440 1626056 5736464 1625120 5738032 1625488 5738112 +1626072 5736440 1626056 5736464 1625488 5738112 1625656 5738160 +1626072 5736440 1626056 5736464 1625656 5738160 1625760 5738184 +1626056 5736464 1625488 5738112 1625656 5738160 1625760 5738184 +1626056 5736464 1625120 5738032 1625488 5738112 1625656 5738160 +1624904 5738000 1626056 5736464 1626072 5736440 1626048 5736096 +1624904 5738000 1626056 5736464 1626048 5736096 1621784 5733192 +1626072 5736440 1626048 5736096 1626056 5736464 1625760 5738184 +1626056 5736464 1624904 5738000 1625120 5738032 1625488 5738112 +1624904 5738000 1625120 5738032 1626056 5736464 1626048 5736096 +1626072 5736440 1626056 5736464 1625760 5738184 1626040 5738272 +1626056 5736464 1625656 5738160 1625760 5738184 1626040 5738272 +1626072 5736440 1626056 5736464 1626040 5738272 1626136 5738328 +1626072 5736440 1626056 5736464 1626136 5738328 1627736 5737704 +1626056 5736464 1626040 5738272 1626136 5738328 1627736 5737704 +1626072 5736440 1626048 5736096 1626056 5736464 1627736 5737704 +1626056 5736464 1625760 5738184 1626040 5738272 1626136 5738328 +1626136 5738328 1626688 5738608 1627736 5737704 1626056 5736464 +1626072 5736440 1626056 5736464 1627736 5737704 1627376 5736376 +1626056 5736464 1626136 5738328 1627736 5737704 1627376 5736376 +1626072 5736440 1626048 5736096 1626056 5736464 1627376 5736376 +1627736 5737704 1627624 5736560 1627376 5736376 1626056 5736464 +1626072 5736440 1626056 5736464 1627376 5736376 1626992 5736208 +1626072 5736440 1626048 5736096 1626056 5736464 1626992 5736208 +1627376 5736376 1627168 5736256 1626992 5736208 1626056 5736464 +1626056 5736464 1627736 5737704 1627376 5736376 1626992 5736208 +1626072 5736440 1626056 5736464 1626992 5736208 1626800 5736136 +1626056 5736464 1626032 5736528 1625488 5738112 1625656 5738160 +1626056 5736464 1626032 5736528 1625656 5738160 1625760 5738184 +1626056 5736464 1626032 5736528 1625760 5738184 1626040 5738272 +1626032 5736528 1625656 5738160 1625760 5738184 1626040 5738272 +1626032 5736528 1625488 5738112 1625656 5738160 1625760 5738184 +1625120 5738032 1626032 5736528 1626056 5736464 1624904 5738000 +1626056 5736464 1624904 5738000 1626032 5736528 1626040 5738272 +1626056 5736464 1626048 5736096 1624904 5738000 1626032 5736528 +1626048 5736096 1621784 5733192 1624904 5738000 1626032 5736528 +1626056 5736464 1626072 5736440 1626048 5736096 1626032 5736528 +1624904 5738000 1625120 5738032 1626032 5736528 1626048 5736096 +1626056 5736464 1626048 5736096 1626032 5736528 1626040 5738272 +1626032 5736528 1625120 5738032 1625488 5738112 1625656 5738160 +1625120 5738032 1625488 5738112 1626032 5736528 1624904 5738000 +1626056 5736464 1626032 5736528 1626040 5738272 1626136 5738328 +1626032 5736528 1625760 5738184 1626040 5738272 1626136 5738328 +1626056 5736464 1626032 5736528 1626136 5738328 1627736 5737704 +1626056 5736464 1626032 5736528 1627736 5737704 1627376 5736376 +1626032 5736528 1626136 5738328 1627736 5737704 1627376 5736376 +1626056 5736464 1626048 5736096 1626032 5736528 1627376 5736376 +1627736 5737704 1627624 5736560 1627376 5736376 1626032 5736528 +1626032 5736528 1626040 5738272 1626136 5738328 1627736 5737704 +1626136 5738328 1626688 5738608 1627736 5737704 1626032 5736528 +1626056 5736464 1626032 5736528 1627376 5736376 1626992 5736208 +1626032 5736528 1627736 5737704 1627376 5736376 1626992 5736208 +1626056 5736464 1626048 5736096 1626032 5736528 1626992 5736208 +1627376 5736376 1627168 5736256 1626992 5736208 1626032 5736528 +1626056 5736464 1626032 5736528 1626992 5736208 1626072 5736440 +1626056 5736464 1626048 5736096 1626032 5736528 1626072 5736440 +1626032 5736528 1627376 5736376 1626992 5736208 1626072 5736440 +1626992 5736208 1626800 5736136 1626072 5736440 1626032 5736528 +1626800 5736136 1626664 5736032 1626072 5736440 1626032 5736528 +1626992 5736208 1626800 5736136 1626032 5736528 1627376 5736376 +1626072 5736440 1626056 5736464 1626032 5736528 1626800 5736136 +1626032 5736528 1626008 5736584 1625488 5738112 1625656 5738160 +1626032 5736528 1626008 5736584 1625656 5738160 1625760 5738184 +1626032 5736528 1626008 5736584 1625760 5738184 1626040 5738272 +1626032 5736528 1626008 5736584 1626040 5738272 1626136 5738328 +1626008 5736584 1625760 5738184 1626040 5738272 1626136 5738328 +1626008 5736584 1625656 5738160 1625760 5738184 1626040 5738272 +1626008 5736584 1625488 5738112 1625656 5738160 1625760 5738184 +1626032 5736528 1625120 5738032 1626008 5736584 1626136 5738328 +1625120 5738032 1626008 5736584 1626032 5736528 1624904 5738000 +1626032 5736528 1626048 5736096 1624904 5738000 1626008 5736584 +1626048 5736096 1621784 5733192 1624904 5738000 1626008 5736584 +1626032 5736528 1626056 5736464 1626048 5736096 1626008 5736584 +1626008 5736584 1626136 5738328 1626032 5736528 1626048 5736096 +1624904 5738000 1625120 5738032 1626008 5736584 1626048 5736096 +1626008 5736584 1625120 5738032 1625488 5738112 1625656 5738160 +1626032 5736528 1626008 5736584 1626136 5738328 1627736 5737704 +1626008 5736584 1626040 5738272 1626136 5738328 1627736 5737704 +1626032 5736528 1626008 5736584 1627736 5737704 1627376 5736376 +1626032 5736528 1626008 5736584 1627376 5736376 1626992 5736208 +1626008 5736584 1627736 5737704 1627376 5736376 1626992 5736208 +1626032 5736528 1626048 5736096 1626008 5736584 1626992 5736208 +1627736 5737704 1627624 5736560 1627376 5736376 1626008 5736584 +1627376 5736376 1627168 5736256 1626992 5736208 1626008 5736584 +1626008 5736584 1626136 5738328 1627736 5737704 1627376 5736376 +1626136 5738328 1626688 5738608 1627736 5737704 1626008 5736584 +1626032 5736528 1626008 5736584 1626992 5736208 1626800 5736136 +1625120 5738032 1625488 5738112 1626008 5736584 1624904 5738000 +1624904 5738000 1625920 5736648 1626048 5736096 1621784 5733192 +1626048 5736096 1625920 5736648 1626008 5736584 1626032 5736528 +1626048 5736096 1625920 5736648 1626032 5736528 1626056 5736464 +1626048 5736096 1625920 5736648 1626056 5736464 1626072 5736440 +1625920 5736648 1626008 5736584 1626032 5736528 1626056 5736464 +1626008 5736584 1625920 5736648 1624904 5738000 1625120 5738032 +1625920 5736648 1625120 5738032 1626008 5736584 1626032 5736528 +1626008 5736584 1625920 5736648 1625120 5738032 1625488 5738112 +1625920 5736648 1624904 5738000 1625120 5738032 1625488 5738112 +1626008 5736584 1625920 5736648 1625488 5738112 1625656 5738160 +1626008 5736584 1625920 5736648 1625656 5738160 1625760 5738184 +1626008 5736584 1625920 5736648 1625760 5738184 1626040 5738272 +1626008 5736584 1625920 5736648 1626040 5738272 1626136 5738328 +1625920 5736648 1625656 5738160 1625760 5738184 1626040 5738272 +1625920 5736648 1625488 5738112 1625656 5738160 1625760 5738184 +1626008 5736584 1626032 5736528 1625920 5736648 1626040 5738272 +1625920 5736648 1625120 5738032 1625488 5738112 1625656 5738160 +1625920 5736648 1626048 5736096 1624904 5738000 1625120 5738032 +1626048 5736096 1624904 5738000 1625920 5736648 1626056 5736464 +1624904 5738000 1625880 5736656 1626048 5736096 1621784 5733192 +1626048 5736096 1626064 5736040 1621784 5733192 1625880 5736656 +1625920 5736648 1625880 5736656 1624904 5738000 1625120 5738032 +1625920 5736648 1625880 5736656 1625120 5738032 1625488 5738112 +1625920 5736648 1625880 5736656 1625488 5738112 1625656 5738160 +1625880 5736656 1625120 5738032 1625488 5738112 1625656 5738160 +1625920 5736648 1625880 5736656 1625656 5738160 1625760 5738184 +1625920 5736648 1625880 5736656 1625760 5738184 1626040 5738272 +1625880 5736656 1625488 5738112 1625656 5738160 1625760 5738184 +1625880 5736656 1624904 5738000 1625120 5738032 1625488 5738112 +1625920 5736648 1626048 5736096 1625880 5736656 1625760 5738184 +1626048 5736096 1625880 5736656 1625920 5736648 1626056 5736464 +1626048 5736096 1625880 5736656 1626056 5736464 1626072 5736440 +1625920 5736648 1626032 5736528 1626056 5736464 1625880 5736656 +1625920 5736648 1626008 5736584 1626032 5736528 1625880 5736656 +1625880 5736656 1625760 5738184 1625920 5736648 1626032 5736528 +1626056 5736464 1626048 5736096 1625880 5736656 1626032 5736528 +1624904 5738000 1625120 5738032 1625880 5736656 1621784 5733192 +1625880 5736656 1626056 5736464 1626048 5736096 1621784 5733192 +1624904 5738000 1625880 5736656 1621784 5733192 1621712 5733232 +1621784 5733192 1625752 5736648 1625880 5736656 1626048 5736096 +1621784 5733192 1625752 5736648 1626048 5736096 1626064 5736040 +1625752 5736648 1625880 5736656 1626048 5736096 1626064 5736040 +1621784 5733192 1625752 5736648 1626064 5736040 1626096 5736000 +1625880 5736656 1625752 5736648 1624904 5738000 1625120 5738032 +1625880 5736656 1625752 5736648 1625120 5738032 1625488 5738112 +1625880 5736656 1625752 5736648 1625488 5738112 1625656 5738160 +1625752 5736648 1624904 5738000 1625120 5738032 1625488 5738112 +1625752 5736648 1625488 5738112 1625880 5736656 1626048 5736096 +1625880 5736656 1626056 5736464 1626048 5736096 1625752 5736648 +1626048 5736096 1626064 5736040 1625752 5736648 1626056 5736464 +1626056 5736464 1626072 5736440 1626048 5736096 1625752 5736648 +1625880 5736656 1626032 5736528 1626056 5736464 1625752 5736648 +1625880 5736656 1625920 5736648 1626032 5736528 1625752 5736648 +1625880 5736656 1626032 5736528 1625752 5736648 1625488 5738112 +1626056 5736464 1626048 5736096 1625752 5736648 1626032 5736528 +1625752 5736648 1621784 5733192 1624904 5738000 1625120 5738032 +1621784 5733192 1624904 5738000 1625752 5736648 1626064 5736040 +1624904 5738000 1625752 5736648 1621784 5733192 1621712 5733232 +1624904 5738000 1625752 5736648 1621712 5733232 1621616 5733232 +1624904 5738000 1625120 5738032 1625752 5736648 1621712 5733232 +1625752 5736648 1626064 5736040 1621784 5733192 1621712 5733232 +1624904 5738000 1625448 5736544 1621712 5733232 1621616 5733232 +1625752 5736648 1625448 5736544 1624904 5738000 1625120 5738032 +1625752 5736648 1625448 5736544 1625120 5738032 1625488 5738112 +1625752 5736648 1621712 5733232 1625448 5736544 1625120 5738032 +1625448 5736544 1621712 5733232 1624904 5738000 1625120 5738032 +1621712 5733232 1625448 5736544 1625752 5736648 1621784 5733192 +1625448 5736544 1625120 5738032 1625752 5736648 1621784 5733192 +1625752 5736648 1626064 5736040 1621784 5733192 1625448 5736544 +1625752 5736648 1626048 5736096 1626064 5736040 1625448 5736544 +1625752 5736648 1626056 5736464 1626048 5736096 1625448 5736544 +1626064 5736040 1626096 5736000 1621784 5733192 1625448 5736544 +1626096 5736000 1621808 5733136 1621784 5733192 1625448 5736544 +1625752 5736648 1626048 5736096 1625448 5736544 1625120 5738032 +1626064 5736040 1626096 5736000 1625448 5736544 1626048 5736096 +1621712 5733232 1624904 5738000 1625448 5736544 1621784 5733192 +1621784 5733192 1621712 5733232 1625448 5736544 1626096 5736000 +1624904 5738000 1625152 5736368 1621712 5733232 1621616 5733232 +1625448 5736544 1625152 5736368 1624904 5738000 1625120 5738032 +1621712 5733232 1625152 5736368 1625448 5736544 1621784 5733192 +1625152 5736368 1624904 5738000 1625448 5736544 1621784 5733192 +1621712 5733232 1624904 5738000 1625152 5736368 1621784 5733192 +1625448 5736544 1626096 5736000 1621784 5733192 1625152 5736368 +1626096 5736000 1621808 5733136 1621784 5733192 1625152 5736368 +1626096 5736000 1626240 5735904 1621808 5733136 1625152 5736368 +1626240 5735904 1621800 5732912 1621808 5733136 1625152 5736368 +1621808 5733136 1621784 5733192 1625152 5736368 1626240 5735904 +1625448 5736544 1626064 5736040 1626096 5736000 1625152 5736368 +1625448 5736544 1626048 5736096 1626064 5736040 1625152 5736368 +1625448 5736544 1625752 5736648 1626048 5736096 1625152 5736368 +1626064 5736040 1626096 5736000 1625152 5736368 1626048 5736096 +1625448 5736544 1626048 5736096 1625152 5736368 1624904 5738000 +1621784 5733192 1621712 5733232 1625152 5736368 1621808 5733136 +1626096 5736000 1626240 5735904 1625152 5736368 1626064 5736040 +1624904 5738000 1624896 5736208 1621712 5733232 1621616 5733232 +1624904 5738000 1624896 5736208 1621616 5733232 1615632 5735512 +1625152 5736368 1624896 5736208 1624904 5738000 1625448 5736544 +1621712 5733232 1624896 5736208 1625152 5736368 1621784 5733192 +1625152 5736368 1621808 5733136 1621784 5733192 1624896 5736208 +1625152 5736368 1626240 5735904 1621808 5733136 1624896 5736208 +1626240 5735904 1621800 5732912 1621808 5733136 1624896 5736208 +1625152 5736368 1626096 5736000 1626240 5735904 1624896 5736208 +1626240 5735904 1621808 5733136 1624896 5736208 1626096 5736000 +1621808 5733136 1621784 5733192 1624896 5736208 1626240 5735904 +1624896 5736208 1624904 5738000 1625152 5736368 1626096 5736000 +1621784 5733192 1621712 5733232 1624896 5736208 1621808 5733136 +1624896 5736208 1621784 5733192 1621712 5733232 1621616 5733232 +1624904 5738000 1625152 5736368 1624896 5736208 1621616 5733232 +1625152 5736368 1626064 5736040 1626096 5736000 1624896 5736208 +1626096 5736000 1626240 5735904 1624896 5736208 1626064 5736040 +1625152 5736368 1626048 5736096 1626064 5736040 1624896 5736208 +1625152 5736368 1626064 5736040 1624896 5736208 1624904 5738000 +1621808 5733136 1624808 5736120 1626240 5735904 1621800 5732912 +1626240 5735904 1624808 5736120 1624896 5736208 1626096 5736000 +1624896 5736208 1626064 5736040 1626096 5736000 1624808 5736120 +1626096 5736000 1626240 5735904 1624808 5736120 1626064 5736040 +1626240 5735904 1627328 5730448 1621800 5732912 1624808 5736120 +1624896 5736208 1624808 5736120 1621808 5733136 1621784 5733192 +1624896 5736208 1624808 5736120 1621784 5733192 1621712 5733232 +1624808 5736120 1621808 5733136 1621784 5733192 1621712 5733232 +1624808 5736120 1621712 5733232 1624896 5736208 1626064 5736040 +1624896 5736208 1624808 5736120 1621712 5733232 1621616 5733232 +1624896 5736208 1624808 5736120 1621616 5733232 1624904 5738000 +1621616 5733232 1615632 5735512 1624904 5738000 1624808 5736120 +1624808 5736120 1621784 5733192 1621712 5733232 1621616 5733232 +1624896 5736208 1626064 5736040 1624808 5736120 1624904 5738000 +1624808 5736120 1621712 5733232 1621616 5733232 1624904 5738000 +1621808 5733136 1621784 5733192 1624808 5736120 1621800 5732912 +1624808 5736120 1626096 5736000 1626240 5735904 1621800 5732912 +1624896 5736208 1624808 5736120 1624904 5738000 1625152 5736368 +1624896 5736208 1625152 5736368 1626064 5736040 1624808 5736120 +1624808 5736120 1624736 5736008 1621800 5732912 1621808 5733136 +1621800 5732912 1624736 5736008 1626240 5735904 1627328 5730448 +1621800 5732912 1624736 5736008 1627328 5730448 1627296 5730408 +1624736 5736008 1627328 5730448 1621800 5732912 1621808 5733136 +1624736 5736008 1624808 5736120 1626240 5735904 1627328 5730448 +1626240 5735904 1627360 5730472 1627328 5730448 1624736 5736008 +1624808 5736120 1624736 5736008 1621808 5733136 1621784 5733192 +1624736 5736008 1621800 5732912 1621808 5733136 1621784 5733192 +1624808 5736120 1624736 5736008 1621784 5733192 1621712 5733232 +1624808 5736120 1624736 5736008 1621712 5733232 1621616 5733232 +1624736 5736008 1621784 5733192 1621712 5733232 1621616 5733232 +1624808 5736120 1624736 5736008 1621616 5733232 1624904 5738000 +1621616 5733232 1615632 5735512 1624904 5738000 1624736 5736008 +1624808 5736120 1624736 5736008 1624904 5738000 1624896 5736208 +1624736 5736008 1621712 5733232 1621616 5733232 1624904 5738000 +1624736 5736008 1621808 5733136 1621784 5733192 1621712 5733232 +1624808 5736120 1626240 5735904 1624736 5736008 1624904 5738000 +1626240 5735904 1624736 5736008 1624808 5736120 1626096 5736000 +1624808 5736120 1626064 5736040 1626096 5736000 1624736 5736008 +1624808 5736120 1624896 5736208 1626064 5736040 1624736 5736008 +1626064 5736040 1626096 5736000 1624736 5736008 1624896 5736208 +1626240 5735904 1627328 5730448 1624736 5736008 1626096 5736000 +1624736 5736008 1624904 5738000 1624808 5736120 1624896 5736208 +1626096 5736000 1626240 5735904 1624736 5736008 1626064 5736040 +1624896 5736208 1625152 5736368 1626064 5736040 1624736 5736008 +1621800 5732912 1624608 5735568 1627328 5730448 1627296 5730408 +1627328 5730448 1624608 5735568 1624736 5736008 1626240 5735904 +1624736 5736008 1624608 5735568 1621800 5732912 1621808 5733136 +1624736 5736008 1624608 5735568 1621808 5733136 1621784 5733192 +1624608 5735568 1621800 5732912 1621808 5733136 1621784 5733192 +1624608 5735568 1621784 5733192 1624736 5736008 1626240 5735904 +1624736 5736008 1626096 5736000 1626240 5735904 1624608 5735568 +1626240 5735904 1627328 5730448 1624608 5735568 1626096 5736000 +1624736 5736008 1626096 5736000 1624608 5735568 1621784 5733192 +1624608 5735568 1627328 5730448 1621800 5732912 1621808 5733136 +1627328 5730448 1621800 5732912 1624608 5735568 1626240 5735904 +1627328 5730448 1624608 5735568 1626240 5735904 1627360 5730472 +1624608 5735568 1626096 5736000 1626240 5735904 1627360 5730472 +1626240 5735904 1627440 5730528 1627360 5730472 1624608 5735568 +1626240 5735904 1627440 5730528 1624608 5735568 1626096 5736000 +1626240 5735904 1626320 5735888 1627440 5730528 1624608 5735568 +1626240 5735904 1626320 5735888 1624608 5735568 1626096 5736000 +1626320 5735888 1627560 5730576 1627440 5730528 1624608 5735568 +1627440 5730528 1627360 5730472 1624608 5735568 1626320 5735888 +1627328 5730448 1621800 5732912 1624608 5735568 1627360 5730472 +1627360 5730472 1627328 5730448 1624608 5735568 1627440 5730528 +1624736 5736008 1624608 5735568 1621784 5733192 1621712 5733232 +1624608 5735568 1621808 5733136 1621784 5733192 1621712 5733232 +1624736 5736008 1626096 5736000 1624608 5735568 1621712 5733232 +1624736 5736008 1624608 5735568 1621712 5733232 1621616 5733232 +1624736 5736008 1626096 5736000 1624608 5735568 1621616 5733232 +1624736 5736008 1624608 5735568 1621616 5733232 1624904 5738000 +1624608 5735568 1621784 5733192 1621712 5733232 1621616 5733232 +1624736 5736008 1626064 5736040 1626096 5736000 1624608 5735568 +1624736 5736008 1624896 5736208 1626064 5736040 1624608 5735568 +1624736 5736008 1626064 5736040 1624608 5735568 1621616 5733232 +1626096 5736000 1626240 5735904 1624608 5735568 1626064 5736040 +1621800 5732912 1624520 5735400 1627328 5730448 1627296 5730408 +1621800 5732912 1624520 5735400 1627296 5730408 1621776 5732752 +1627296 5730408 1621752 5732672 1621776 5732752 1624520 5735400 +1624520 5735400 1627328 5730448 1627296 5730408 1621776 5732752 +1624608 5735568 1624520 5735400 1621800 5732912 1621808 5733136 +1624608 5735568 1624520 5735400 1621808 5733136 1621784 5733192 +1624608 5735568 1624520 5735400 1621784 5733192 1621712 5733232 +1624520 5735400 1621808 5733136 1621784 5733192 1621712 5733232 +1624520 5735400 1621800 5732912 1621808 5733136 1621784 5733192 +1624608 5735568 1627328 5730448 1624520 5735400 1621712 5733232 +1627328 5730448 1624520 5735400 1624608 5735568 1627360 5730472 +1624520 5735400 1621712 5733232 1624608 5735568 1627360 5730472 +1621800 5732912 1621808 5733136 1624520 5735400 1621776 5732752 +1624520 5735400 1627360 5730472 1627328 5730448 1627296 5730408 +1624608 5735568 1627440 5730528 1627360 5730472 1624520 5735400 +1624608 5735568 1626320 5735888 1627440 5730528 1624520 5735400 +1626320 5735888 1627560 5730576 1627440 5730528 1624520 5735400 +1624608 5735568 1626240 5735904 1626320 5735888 1624520 5735400 +1624608 5735568 1626096 5736000 1626240 5735904 1624520 5735400 +1626320 5735888 1627440 5730528 1624520 5735400 1626240 5735904 +1624608 5735568 1626240 5735904 1624520 5735400 1621712 5733232 +1627360 5730472 1627328 5730448 1624520 5735400 1627440 5730528 +1627440 5730528 1627360 5730472 1624520 5735400 1626320 5735888 +1624608 5735568 1624520 5735400 1621712 5733232 1621616 5733232 +1624520 5735400 1621784 5733192 1621712 5733232 1621616 5733232 +1624608 5735568 1626240 5735904 1624520 5735400 1621616 5733232 +1624608 5735568 1624520 5735400 1621616 5733232 1624736 5736008 +1624608 5735568 1626240 5735904 1624520 5735400 1624736 5736008 +1621616 5733232 1624904 5738000 1624736 5736008 1624520 5735400 +1624520 5735400 1621712 5733232 1621616 5733232 1624736 5736008 +1621776 5732752 1624432 5735296 1627296 5730408 1621752 5732672 +1627296 5730408 1624432 5735296 1624520 5735400 1627328 5730448 +1624520 5735400 1624432 5735296 1621776 5732752 1621800 5732912 +1624520 5735400 1624432 5735296 1621800 5732912 1621808 5733136 +1624432 5735296 1621776 5732752 1621800 5732912 1621808 5733136 +1624520 5735400 1624432 5735296 1621808 5733136 1621784 5733192 +1624520 5735400 1624432 5735296 1621784 5733192 1621712 5733232 +1624520 5735400 1624432 5735296 1621712 5733232 1621616 5733232 +1624432 5735296 1621784 5733192 1621712 5733232 1621616 5733232 +1624432 5735296 1621808 5733136 1621784 5733192 1621712 5733232 +1624432 5735296 1621800 5732912 1621808 5733136 1621784 5733192 +1624432 5735296 1621616 5733232 1624520 5735400 1627328 5730448 +1624520 5735400 1627360 5730472 1627328 5730448 1624432 5735296 +1627328 5730448 1627296 5730408 1624432 5735296 1627360 5730472 +1624520 5735400 1627440 5730528 1627360 5730472 1624432 5735296 +1624520 5735400 1627440 5730528 1624432 5735296 1621616 5733232 +1627360 5730472 1627328 5730448 1624432 5735296 1627440 5730528 +1624432 5735296 1627296 5730408 1621776 5732752 1621800 5732912 +1627296 5730408 1621776 5732752 1624432 5735296 1627328 5730448 +1624520 5735400 1626320 5735888 1627440 5730528 1624432 5735296 +1626320 5735888 1627560 5730576 1627440 5730528 1624432 5735296 +1624520 5735400 1626240 5735904 1626320 5735888 1624432 5735296 +1624520 5735400 1624608 5735568 1626240 5735904 1624432 5735296 +1627440 5730528 1627360 5730472 1624432 5735296 1626320 5735888 +1624520 5735400 1626240 5735904 1624432 5735296 1621616 5733232 +1626320 5735888 1627440 5730528 1624432 5735296 1626240 5735904 +1624520 5735400 1624432 5735296 1621616 5733232 1624736 5736008 +1624432 5735296 1621712 5733232 1621616 5733232 1624736 5736008 +1624520 5735400 1626240 5735904 1624432 5735296 1624736 5736008 +1624520 5735400 1624432 5735296 1624736 5736008 1624608 5735568 +1624520 5735400 1626240 5735904 1624432 5735296 1624608 5735568 +1621616 5733232 1624904 5738000 1624736 5736008 1624432 5735296 +1624432 5735296 1621616 5733232 1624736 5736008 1624608 5735568 +1621616 5733232 1624176 5735160 1624432 5735296 1621712 5733232 +1624432 5735296 1621784 5733192 1621712 5733232 1624176 5735160 +1621712 5733232 1621616 5733232 1624176 5735160 1621784 5733192 +1624432 5735296 1621808 5733136 1621784 5733192 1624176 5735160 +1621784 5733192 1621712 5733232 1624176 5735160 1621808 5733136 +1624432 5735296 1621800 5732912 1621808 5733136 1624176 5735160 +1624432 5735296 1621776 5732752 1621800 5732912 1624176 5735160 +1621808 5733136 1621784 5733192 1624176 5735160 1621800 5732912 +1621800 5732912 1621808 5733136 1624176 5735160 1621776 5732752 +1624432 5735296 1627296 5730408 1621776 5732752 1624176 5735160 +1627296 5730408 1621752 5732672 1621776 5732752 1624176 5735160 +1621776 5732752 1621800 5732912 1624176 5735160 1627296 5730408 +1624176 5735160 1624736 5736008 1624432 5735296 1627296 5730408 +1624432 5735296 1627328 5730448 1627296 5730408 1624176 5735160 +1624432 5735296 1627360 5730472 1627328 5730448 1624176 5735160 +1627296 5730408 1621776 5732752 1624176 5735160 1627328 5730448 +1624432 5735296 1627328 5730448 1624176 5735160 1624736 5736008 +1621616 5733232 1624736 5736008 1624176 5735160 1621712 5733232 +1624736 5736008 1624176 5735160 1621616 5733232 1624904 5738000 +1621616 5733232 1615632 5735512 1624904 5738000 1624176 5735160 +1624736 5736008 1624432 5735296 1624176 5735160 1624904 5738000 +1624176 5735160 1621712 5733232 1621616 5733232 1624904 5738000 +1624736 5736008 1624176 5735160 1624904 5738000 1624808 5736120 +1624432 5735296 1624176 5735160 1624736 5736008 1624608 5735568 +1624432 5735296 1627328 5730448 1624176 5735160 1624608 5735568 +1624176 5735160 1624904 5738000 1624736 5736008 1624608 5735568 +1624432 5735296 1624176 5735160 1624608 5735568 1624520 5735400 +1624432 5735296 1627328 5730448 1624176 5735160 1624520 5735400 +1624176 5735160 1624736 5736008 1624608 5735568 1624520 5735400 +1624176 5735160 1624072 5735064 1621808 5733136 1621784 5733192 +1624176 5735160 1624072 5735064 1621784 5733192 1621712 5733232 +1624176 5735160 1624072 5735064 1621712 5733232 1621616 5733232 +1624072 5735064 1621784 5733192 1621712 5733232 1621616 5733232 +1624072 5735064 1621808 5733136 1621784 5733192 1621712 5733232 +1621800 5732912 1624072 5735064 1624176 5735160 1621776 5732752 +1624176 5735160 1627296 5730408 1621776 5732752 1624072 5735064 +1627296 5730408 1621752 5732672 1621776 5732752 1624072 5735064 +1621776 5732752 1621800 5732912 1624072 5735064 1627296 5730408 +1624176 5735160 1627328 5730448 1627296 5730408 1624072 5735064 +1627296 5730408 1621776 5732752 1624072 5735064 1627328 5730448 +1624176 5735160 1624432 5735296 1627328 5730448 1624072 5735064 +1624432 5735296 1627360 5730472 1627328 5730448 1624072 5735064 +1624432 5735296 1627440 5730528 1627360 5730472 1624072 5735064 +1627328 5730448 1627296 5730408 1624072 5735064 1627360 5730472 +1624432 5735296 1627360 5730472 1624072 5735064 1624176 5735160 +1624176 5735160 1624432 5735296 1624072 5735064 1621616 5733232 +1624176 5735160 1624072 5735064 1621616 5733232 1624904 5738000 +1624072 5735064 1621712 5733232 1621616 5733232 1624904 5738000 +1621616 5733232 1615632 5735512 1624904 5738000 1624072 5735064 +1624176 5735160 1624432 5735296 1624072 5735064 1624904 5738000 +1624072 5735064 1621800 5732912 1621808 5733136 1621784 5733192 +1621800 5732912 1621808 5733136 1624072 5735064 1621776 5732752 +1624176 5735160 1624072 5735064 1624904 5738000 1624736 5736008 +1624176 5735160 1624072 5735064 1624736 5736008 1624608 5735568 +1624176 5735160 1624432 5735296 1624072 5735064 1624736 5736008 +1624072 5735064 1621616 5733232 1624904 5738000 1624736 5736008 +1624904 5738000 1624808 5736120 1624736 5736008 1624072 5735064 +1621776 5732752 1624016 5734848 1627296 5730408 1621752 5732672 +1627296 5730408 1624016 5734848 1624072 5735064 1627328 5730448 +1624072 5735064 1624016 5734848 1621776 5732752 1621800 5732912 +1624072 5735064 1627360 5730472 1627328 5730448 1624016 5734848 +1624072 5735064 1624432 5735296 1627360 5730472 1624016 5734848 +1627328 5730448 1627296 5730408 1624016 5734848 1627360 5730472 +1624432 5735296 1627440 5730528 1627360 5730472 1624016 5734848 +1624432 5735296 1627440 5730528 1624016 5734848 1624072 5735064 +1624432 5735296 1626320 5735888 1627440 5730528 1624016 5734848 +1624432 5735296 1626320 5735888 1624016 5734848 1624072 5735064 +1626320 5735888 1627560 5730576 1627440 5730528 1624016 5734848 +1627440 5730528 1627360 5730472 1624016 5734848 1626320 5735888 +1627360 5730472 1627328 5730448 1624016 5734848 1627440 5730528 +1624072 5735064 1624176 5735160 1624432 5735296 1624016 5734848 +1624432 5735296 1626320 5735888 1624016 5734848 1624176 5735160 +1624016 5734848 1621800 5732912 1624072 5735064 1624176 5735160 +1624072 5735064 1624016 5734848 1621800 5732912 1621808 5733136 +1624016 5734848 1621776 5732752 1621800 5732912 1621808 5733136 +1624072 5735064 1624016 5734848 1621808 5733136 1621784 5733192 +1624072 5735064 1624016 5734848 1621784 5733192 1621712 5733232 +1624072 5735064 1624016 5734848 1621712 5733232 1621616 5733232 +1624016 5734848 1621808 5733136 1621784 5733192 1621712 5733232 +1624072 5735064 1624176 5735160 1624016 5734848 1621712 5733232 +1624016 5734848 1621800 5732912 1621808 5733136 1621784 5733192 +1624016 5734848 1627296 5730408 1621776 5732752 1621800 5732912 +1627296 5730408 1621776 5732752 1624016 5734848 1627328 5730448 +1624432 5735296 1626240 5735904 1626320 5735888 1624016 5734848 +1621776 5732752 1624008 5734832 1627296 5730408 1621752 5732672 +1624016 5734848 1624008 5734832 1621776 5732752 1621800 5732912 +1624016 5734848 1624008 5734832 1621800 5732912 1621808 5733136 +1624016 5734848 1624008 5734832 1621808 5733136 1621784 5733192 +1624008 5734832 1621800 5732912 1621808 5733136 1621784 5733192 +1624016 5734848 1624008 5734832 1621784 5733192 1621712 5733232 +1624016 5734848 1624008 5734832 1621712 5733232 1624072 5735064 +1621712 5733232 1621616 5733232 1624072 5735064 1624008 5734832 +1624008 5734832 1621784 5733192 1621712 5733232 1624072 5735064 +1624008 5734832 1621808 5733136 1621784 5733192 1621712 5733232 +1624008 5734832 1621776 5732752 1621800 5732912 1621808 5733136 +1624016 5734848 1627296 5730408 1624008 5734832 1624072 5735064 +1627296 5730408 1624008 5734832 1624016 5734848 1627328 5730448 +1624016 5734848 1627360 5730472 1627328 5730448 1624008 5734832 +1624016 5734848 1627440 5730528 1627360 5730472 1624008 5734832 +1627360 5730472 1627328 5730448 1624008 5734832 1627440 5730528 +1624016 5734848 1626320 5735888 1627440 5730528 1624008 5734832 +1626320 5735888 1627560 5730576 1627440 5730528 1624008 5734832 +1624016 5734848 1624432 5735296 1626320 5735888 1624008 5734832 +1624016 5734848 1624176 5735160 1624432 5735296 1624008 5734832 +1626320 5735888 1627440 5730528 1624008 5734832 1624432 5735296 +1627440 5730528 1627360 5730472 1624008 5734832 1626320 5735888 +1624008 5734832 1624072 5735064 1624016 5734848 1624432 5735296 +1627328 5730448 1627296 5730408 1624008 5734832 1627360 5730472 +1624008 5734832 1627296 5730408 1621776 5732752 1621800 5732912 +1627296 5730408 1621776 5732752 1624008 5734832 1627328 5730448 +1624432 5735296 1626240 5735904 1626320 5735888 1624008 5734832 +1624008 5734832 1623904 5734736 1621800 5732912 1621808 5733136 +1624008 5734832 1623904 5734736 1621808 5733136 1621784 5733192 +1624008 5734832 1623904 5734736 1621784 5733192 1621712 5733232 +1623904 5734736 1621808 5733136 1621784 5733192 1621712 5733232 +1624008 5734832 1623904 5734736 1621712 5733232 1624072 5735064 +1621712 5733232 1621616 5733232 1624072 5735064 1623904 5734736 +1621616 5733232 1624904 5738000 1624072 5735064 1623904 5734736 +1624008 5734832 1623904 5734736 1624072 5735064 1624016 5734848 +1624072 5735064 1624016 5734848 1623904 5734736 1621616 5733232 +1623904 5734736 1621784 5733192 1621712 5733232 1621616 5733232 +1623904 5734736 1621800 5732912 1621808 5733136 1621784 5733192 +1621776 5732752 1623904 5734736 1624008 5734832 1627296 5730408 +1621776 5732752 1623904 5734736 1627296 5730408 1621752 5732672 +1627296 5730408 1627288 5730392 1621752 5732672 1623904 5734736 +1623904 5734736 1624008 5734832 1627296 5730408 1621752 5732672 +1624008 5734832 1627296 5730408 1623904 5734736 1624016 5734848 +1624008 5734832 1627328 5730448 1627296 5730408 1623904 5734736 +1624008 5734832 1627360 5730472 1627328 5730448 1623904 5734736 +1624008 5734832 1627440 5730528 1627360 5730472 1623904 5734736 +1624008 5734832 1626320 5735888 1627440 5730528 1623904 5734736 +1627360 5730472 1627328 5730448 1623904 5734736 1627440 5730528 +1627296 5730408 1621752 5732672 1623904 5734736 1627328 5730448 +1624008 5734832 1627440 5730528 1623904 5734736 1624016 5734848 +1627328 5730448 1627296 5730408 1623904 5734736 1627360 5730472 +1623904 5734736 1621776 5732752 1621800 5732912 1621808 5733136 +1621776 5732752 1621800 5732912 1623904 5734736 1621752 5732672 +1624072 5735064 1623808 5734704 1621616 5733232 1624904 5738000 +1621616 5733232 1623808 5734704 1623904 5734736 1621712 5733232 +1623904 5734736 1623808 5734704 1624072 5735064 1624016 5734848 +1623904 5734736 1623808 5734704 1624016 5734848 1624008 5734832 +1623904 5734736 1621784 5733192 1621712 5733232 1623808 5734704 +1621712 5733232 1621616 5733232 1623808 5734704 1621784 5733192 +1623904 5734736 1621808 5733136 1621784 5733192 1623808 5734704 +1621784 5733192 1621712 5733232 1623808 5734704 1621808 5733136 +1623904 5734736 1621800 5732912 1621808 5733136 1623808 5734704 +1621808 5733136 1621784 5733192 1623808 5734704 1621800 5732912 +1623904 5734736 1621776 5732752 1621800 5732912 1623808 5734704 +1621800 5732912 1621808 5733136 1623808 5734704 1621776 5732752 +1623808 5734704 1624016 5734848 1623904 5734736 1621776 5732752 +1623904 5734736 1621752 5732672 1621776 5732752 1623808 5734704 +1623904 5734736 1627296 5730408 1621752 5732672 1623808 5734704 +1627296 5730408 1627288 5730392 1621752 5732672 1623808 5734704 +1623904 5734736 1627328 5730448 1627296 5730408 1623808 5734704 +1621776 5732752 1621800 5732912 1623808 5734704 1621752 5732672 +1623904 5734736 1627296 5730408 1623808 5734704 1624016 5734848 +1621752 5732672 1621776 5732752 1623808 5734704 1627296 5730408 +1623808 5734704 1621616 5733232 1624072 5735064 1624016 5734848 +1621616 5733232 1624072 5735064 1623808 5734704 1621712 5733232 +1624072 5735064 1623664 5734632 1621616 5733232 1624904 5738000 +1621616 5733232 1615632 5735512 1624904 5738000 1623664 5734632 +1624904 5738000 1624072 5735064 1623664 5734632 1615632 5735512 +1624072 5735064 1623664 5734632 1624904 5738000 1624736 5736008 +1623808 5734704 1623664 5734632 1624072 5735064 1624016 5734848 +1621616 5733232 1621440 5733160 1615632 5735512 1623664 5734632 +1621616 5733232 1623664 5734632 1623808 5734704 1621712 5733232 +1623808 5734704 1621784 5733192 1621712 5733232 1623664 5734632 +1623808 5734704 1621808 5733136 1621784 5733192 1623664 5734632 +1621784 5733192 1621712 5733232 1623664 5734632 1621808 5733136 +1623808 5734704 1621800 5732912 1621808 5733136 1623664 5734632 +1621808 5733136 1621784 5733192 1623664 5734632 1621800 5732912 +1623808 5734704 1621776 5732752 1621800 5732912 1623664 5734632 +1621800 5732912 1621808 5733136 1623664 5734632 1621776 5732752 +1623808 5734704 1621752 5732672 1621776 5732752 1623664 5734632 +1621776 5732752 1621800 5732912 1623664 5734632 1621752 5732672 +1623808 5734704 1627296 5730408 1621752 5732672 1623664 5734632 +1623808 5734704 1623904 5734736 1627296 5730408 1623664 5734632 +1627296 5730408 1627288 5730392 1621752 5732672 1623664 5734632 +1623904 5734736 1627328 5730448 1627296 5730408 1623664 5734632 +1621752 5732672 1621776 5732752 1623664 5734632 1627296 5730408 +1627296 5730408 1621752 5732672 1623664 5734632 1623904 5734736 +1623664 5734632 1624072 5735064 1623808 5734704 1623904 5734736 +1621712 5733232 1621616 5733232 1623664 5734632 1621784 5733192 +1624072 5735064 1623808 5734704 1623664 5734632 1624904 5738000 +1623664 5734632 1621712 5733232 1621616 5733232 1615632 5735512 +1615632 5735512 1622352 5744936 1624904 5738000 1623664 5734632 +1623664 5734632 1623592 5734560 1621776 5732752 1621800 5732912 +1623664 5734632 1623592 5734560 1621800 5732912 1621808 5733136 +1623664 5734632 1623592 5734560 1621808 5733136 1621784 5733192 +1623664 5734632 1623592 5734560 1621784 5733192 1621712 5733232 +1623592 5734560 1621800 5732912 1621808 5733136 1621784 5733192 +1623592 5734560 1621808 5733136 1621784 5733192 1621712 5733232 +1623592 5734560 1621776 5732752 1621800 5732912 1621808 5733136 +1621752 5732672 1623592 5734560 1623664 5734632 1627296 5730408 +1621752 5732672 1623592 5734560 1627296 5730408 1627288 5730392 +1621752 5732672 1623592 5734560 1627288 5730392 1621632 5732520 +1623592 5734560 1623664 5734632 1627296 5730408 1627288 5730392 +1623664 5734632 1623904 5734736 1627296 5730408 1623592 5734560 +1623664 5734632 1623808 5734704 1623904 5734736 1623592 5734560 +1623904 5734736 1627328 5730448 1627296 5730408 1623592 5734560 +1623904 5734736 1627360 5730472 1627328 5730448 1623592 5734560 +1627296 5730408 1627288 5730392 1623592 5734560 1627328 5730448 +1623904 5734736 1627328 5730448 1623592 5734560 1623808 5734704 +1623664 5734632 1623592 5734560 1621712 5733232 1621616 5733232 +1623592 5734560 1621784 5733192 1621712 5733232 1621616 5733232 +1623664 5734632 1623808 5734704 1623592 5734560 1621616 5733232 +1623664 5734632 1623592 5734560 1621616 5733232 1615632 5735512 +1623664 5734632 1623592 5734560 1615632 5735512 1624904 5738000 +1623664 5734632 1623592 5734560 1624904 5738000 1624072 5735064 +1621616 5733232 1621440 5733160 1615632 5735512 1623592 5734560 +1623592 5734560 1621712 5733232 1621616 5733232 1615632 5735512 +1623664 5734632 1623808 5734704 1623592 5734560 1624904 5738000 +1623592 5734560 1621616 5733232 1615632 5735512 1624904 5738000 +1623592 5734560 1621752 5732672 1621776 5732752 1621800 5732912 +1621752 5732672 1621776 5732752 1623592 5734560 1627288 5730392 +1615632 5735512 1622352 5744936 1624904 5738000 1623592 5734560 +1623592 5734560 1623464 5734448 1621808 5733136 1621784 5733192 +1623592 5734560 1623464 5734448 1621784 5733192 1621712 5733232 +1623592 5734560 1623464 5734448 1621712 5733232 1621616 5733232 +1623464 5734448 1621808 5733136 1621784 5733192 1621712 5733232 +1623464 5734448 1621784 5733192 1621712 5733232 1621616 5733232 +1621800 5732912 1623464 5734448 1623592 5734560 1621776 5732752 +1623592 5734560 1623464 5734448 1621616 5733232 1615632 5735512 +1623464 5734448 1621712 5733232 1621616 5733232 1615632 5735512 +1621616 5733232 1621440 5733160 1615632 5735512 1623464 5734448 +1623592 5734560 1623464 5734448 1615632 5735512 1624904 5738000 +1623592 5734560 1623464 5734448 1624904 5738000 1623664 5734632 +1624904 5738000 1624072 5735064 1623664 5734632 1623464 5734448 +1623464 5734448 1621616 5733232 1615632 5735512 1624904 5738000 +1623464 5734448 1615632 5735512 1624904 5738000 1623664 5734632 +1623592 5734560 1621752 5732672 1621776 5732752 1623464 5734448 +1621776 5732752 1621800 5732912 1623464 5734448 1621752 5732672 +1623592 5734560 1621752 5732672 1623464 5734448 1623664 5734632 +1623592 5734560 1627288 5730392 1621752 5732672 1623464 5734448 +1623592 5734560 1627296 5730408 1627288 5730392 1623464 5734448 +1627288 5730392 1621632 5732520 1621752 5732672 1623464 5734448 +1623592 5734560 1627328 5730448 1627296 5730408 1623464 5734448 +1627296 5730408 1627288 5730392 1623464 5734448 1627328 5730448 +1623592 5734560 1623904 5734736 1627328 5730448 1623464 5734448 +1623904 5734736 1627360 5730472 1627328 5730448 1623464 5734448 +1627328 5730448 1627296 5730408 1623464 5734448 1623904 5734736 +1623592 5734560 1623808 5734704 1623904 5734736 1623464 5734448 +1621752 5732672 1621776 5732752 1623464 5734448 1627288 5730392 +1623592 5734560 1623904 5734736 1623464 5734448 1623664 5734632 +1627288 5730392 1621752 5732672 1623464 5734448 1627296 5730408 +1623464 5734448 1621800 5732912 1621808 5733136 1621784 5733192 +1621800 5732912 1621808 5733136 1623464 5734448 1621776 5732752 +1615632 5735512 1622352 5744936 1624904 5738000 1623464 5734448 +1621752 5732672 1623440 5734328 1627288 5730392 1621632 5732520 +1623464 5734448 1623440 5734328 1621752 5732672 1621776 5732752 +1623464 5734448 1623440 5734328 1621776 5732752 1621800 5732912 +1623440 5734328 1621752 5732672 1621776 5732752 1621800 5732912 +1627288 5730392 1623440 5734328 1623464 5734448 1627296 5730408 +1623464 5734448 1627328 5730448 1627296 5730408 1623440 5734328 +1627288 5730392 1621752 5732672 1623440 5734328 1627296 5730408 +1623464 5734448 1623904 5734736 1627328 5730448 1623440 5734328 +1627328 5730448 1627296 5730408 1623440 5734328 1623904 5734736 +1623464 5734448 1623592 5734560 1623904 5734736 1623440 5734328 +1623904 5734736 1627360 5730472 1627328 5730448 1623440 5734328 +1623904 5734736 1627328 5730448 1623440 5734328 1623592 5734560 +1623592 5734560 1623808 5734704 1623904 5734736 1623440 5734328 +1623592 5734560 1623664 5734632 1623808 5734704 1623440 5734328 +1623592 5734560 1623808 5734704 1623440 5734328 1623464 5734448 +1623904 5734736 1627328 5730448 1623440 5734328 1623808 5734704 +1627296 5730408 1627288 5730392 1623440 5734328 1627328 5730448 +1623464 5734448 1623592 5734560 1623440 5734328 1621800 5732912 +1623464 5734448 1623440 5734328 1621800 5732912 1621808 5733136 +1623440 5734328 1621776 5732752 1621800 5732912 1621808 5733136 +1623464 5734448 1623440 5734328 1621808 5733136 1621784 5733192 +1623464 5734448 1623440 5734328 1621784 5733192 1621712 5733232 +1623464 5734448 1623440 5734328 1621712 5733232 1621616 5733232 +1623440 5734328 1621808 5733136 1621784 5733192 1621712 5733232 +1623464 5734448 1623592 5734560 1623440 5734328 1621712 5733232 +1623440 5734328 1621800 5732912 1621808 5733136 1621784 5733192 +1623440 5734328 1627288 5730392 1621752 5732672 1621776 5732752 +1623440 5734328 1623504 5734344 1627328 5730448 1627296 5730408 +1623440 5734328 1623904 5734736 1623504 5734344 1627296 5730408 +1623504 5734344 1623904 5734736 1627328 5730448 1627296 5730408 +1627328 5730448 1623504 5734344 1623904 5734736 1627360 5730472 +1623904 5734736 1623504 5734344 1623440 5734328 1623808 5734704 +1623504 5734344 1627296 5730408 1623440 5734328 1623808 5734704 +1623440 5734328 1623592 5734560 1623808 5734704 1623504 5734344 +1623592 5734560 1623664 5734632 1623808 5734704 1623504 5734344 +1623440 5734328 1623592 5734560 1623504 5734344 1627296 5730408 +1623440 5734328 1623464 5734448 1623592 5734560 1623504 5734344 +1623440 5734328 1623464 5734448 1623504 5734344 1627296 5730408 +1623808 5734704 1623904 5734736 1623504 5734344 1623592 5734560 +1623592 5734560 1623808 5734704 1623504 5734344 1623464 5734448 +1623440 5734328 1623504 5734344 1627296 5730408 1627288 5730392 +1623504 5734344 1627328 5730448 1627296 5730408 1627288 5730392 +1623440 5734328 1623464 5734448 1623504 5734344 1627288 5730392 +1623440 5734328 1623504 5734344 1627288 5730392 1621752 5732672 +1623440 5734328 1623464 5734448 1623504 5734344 1621752 5732672 +1627288 5730392 1621632 5732520 1621752 5732672 1623504 5734344 +1623504 5734344 1627296 5730408 1627288 5730392 1621752 5732672 +1623440 5734328 1623504 5734344 1621752 5732672 1621776 5732752 +1623904 5734736 1627328 5730448 1623504 5734344 1623808 5734704 +1623504 5734344 1623656 5734432 1627328 5730448 1627296 5730408 +1623504 5734344 1623656 5734432 1627296 5730408 1627288 5730392 +1627328 5730448 1623656 5734432 1623904 5734736 1627360 5730472 +1623904 5734736 1627440 5730528 1627360 5730472 1623656 5734432 +1623904 5734736 1624008 5734832 1627440 5730528 1623656 5734432 +1624008 5734832 1626320 5735888 1627440 5730528 1623656 5734432 +1627440 5730528 1627360 5730472 1623656 5734432 1624008 5734832 +1627360 5730472 1627328 5730448 1623656 5734432 1627440 5730528 +1623504 5734344 1623904 5734736 1623656 5734432 1627296 5730408 +1623904 5734736 1623656 5734432 1623504 5734344 1623808 5734704 +1623504 5734344 1623592 5734560 1623808 5734704 1623656 5734432 +1623592 5734560 1623664 5734632 1623808 5734704 1623656 5734432 +1623592 5734560 1623664 5734632 1623656 5734432 1623504 5734344 +1623504 5734344 1623464 5734448 1623592 5734560 1623656 5734432 +1623504 5734344 1623440 5734328 1623464 5734448 1623656 5734432 +1623592 5734560 1623664 5734632 1623656 5734432 1623464 5734448 +1623656 5734432 1627296 5730408 1623504 5734344 1623464 5734448 +1623808 5734704 1623904 5734736 1623656 5734432 1623664 5734632 +1623656 5734432 1627360 5730472 1627328 5730448 1627296 5730408 +1623656 5734432 1623808 5734704 1623904 5734736 1624008 5734832 +1624008 5734832 1623792 5734448 1623656 5734432 1623904 5734736 +1627440 5730528 1623792 5734448 1624008 5734832 1626320 5735888 +1627440 5730528 1623792 5734448 1626320 5735888 1627560 5730576 +1624008 5734832 1624432 5735296 1626320 5735888 1623792 5734448 +1624008 5734832 1624016 5734848 1624432 5735296 1623792 5734448 +1626320 5735888 1627440 5730528 1623792 5734448 1624432 5735296 +1623656 5734432 1623792 5734448 1627440 5730528 1627360 5730472 +1623656 5734432 1623792 5734448 1627360 5730472 1627328 5730448 +1623792 5734448 1627440 5730528 1627360 5730472 1627328 5730448 +1624432 5735296 1626240 5735904 1626320 5735888 1623792 5734448 +1623656 5734432 1623792 5734448 1627328 5730448 1627296 5730408 +1623656 5734432 1623792 5734448 1627296 5730408 1623504 5734344 +1627296 5730408 1627288 5730392 1623504 5734344 1623792 5734448 +1623504 5734344 1623656 5734432 1623792 5734448 1627288 5730392 +1623792 5734448 1627360 5730472 1627328 5730448 1627296 5730408 +1627288 5730392 1621752 5732672 1623504 5734344 1623792 5734448 +1623792 5734448 1627328 5730448 1627296 5730408 1627288 5730392 +1623792 5734448 1623504 5734344 1623656 5734432 1623904 5734736 +1623656 5734432 1623808 5734704 1623904 5734736 1623792 5734448 +1623904 5734736 1624008 5734832 1623792 5734448 1623808 5734704 +1623656 5734432 1623664 5734632 1623808 5734704 1623792 5734448 +1623656 5734432 1623592 5734560 1623664 5734632 1623792 5734448 +1623656 5734432 1623664 5734632 1623792 5734448 1623504 5734344 +1623808 5734704 1623904 5734736 1623792 5734448 1623664 5734632 +1627440 5730528 1627360 5730472 1623792 5734448 1626320 5735888 +1624008 5734832 1624432 5735296 1623792 5734448 1623904 5734736 +1627440 5730528 1624104 5734392 1626320 5735888 1627560 5730576 +1627440 5730528 1624104 5734392 1627560 5730576 1627520 5730552 +1626320 5735888 1627632 5730600 1627560 5730576 1624104 5734392 +1626320 5735888 1624104 5734392 1623792 5734448 1624432 5735296 +1623792 5734448 1624008 5734832 1624432 5735296 1624104 5734392 +1624008 5734832 1624016 5734848 1624432 5735296 1624104 5734392 +1624016 5734848 1624176 5735160 1624432 5735296 1624104 5734392 +1624008 5734832 1624016 5734848 1624104 5734392 1623792 5734448 +1624432 5735296 1626320 5735888 1624104 5734392 1624016 5734848 +1626320 5735888 1624104 5734392 1624432 5735296 1626240 5735904 +1624432 5735296 1624520 5735400 1626240 5735904 1624104 5734392 +1624520 5735400 1624608 5735568 1626240 5735904 1624104 5734392 +1624104 5734392 1624016 5734848 1624432 5735296 1624520 5735400 +1626240 5735904 1626320 5735888 1624104 5734392 1624520 5735400 +1623792 5734448 1624104 5734392 1627440 5730528 1627360 5730472 +1623792 5734448 1624104 5734392 1627360 5730472 1627328 5730448 +1623792 5734448 1624104 5734392 1627328 5730448 1627296 5730408 +1624104 5734392 1627360 5730472 1627328 5730448 1627296 5730408 +1623792 5734448 1624104 5734392 1627296 5730408 1627288 5730392 +1623792 5734448 1624104 5734392 1627288 5730392 1623504 5734344 +1623792 5734448 1624104 5734392 1623504 5734344 1623656 5734432 +1624104 5734392 1627328 5730448 1627296 5730408 1627288 5730392 +1627288 5730392 1621752 5732672 1623504 5734344 1624104 5734392 +1623504 5734344 1623792 5734448 1624104 5734392 1621752 5732672 +1621752 5732672 1623440 5734328 1623504 5734344 1624104 5734392 +1623504 5734344 1623792 5734448 1624104 5734392 1623440 5734328 +1627288 5730392 1621632 5732520 1621752 5732672 1624104 5734392 +1621752 5732672 1623440 5734328 1624104 5734392 1627288 5730392 +1621752 5732672 1621776 5732752 1623440 5734328 1624104 5734392 +1623440 5734328 1623504 5734344 1624104 5734392 1621776 5732752 +1621776 5732752 1621800 5732912 1623440 5734328 1624104 5734392 +1621752 5732672 1621776 5732752 1624104 5734392 1627288 5730392 +1624104 5734392 1627296 5730408 1627288 5730392 1621752 5732672 +1624104 5734392 1627440 5730528 1627360 5730472 1627328 5730448 +1624104 5734392 1623504 5734344 1623792 5734448 1624008 5734832 +1623792 5734448 1623904 5734736 1624008 5734832 1624104 5734392 +1623792 5734448 1623808 5734704 1623904 5734736 1624104 5734392 +1624008 5734832 1624016 5734848 1624104 5734392 1623904 5734736 +1623792 5734448 1623904 5734736 1624104 5734392 1623504 5734344 +1627440 5730528 1627360 5730472 1624104 5734392 1627560 5730576 +1624104 5734392 1626240 5735904 1626320 5735888 1627560 5730576 +1627560 5730576 1624264 5734424 1626320 5735888 1627632 5730600 +1624104 5734392 1624264 5734424 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1624264 5734424 +1624264 5734424 1626320 5735888 1627560 5730576 1627440 5730528 +1624104 5734392 1624264 5734424 1627440 5730528 1627360 5730472 +1624264 5734424 1627560 5730576 1627440 5730528 1627360 5730472 +1624104 5734392 1624264 5734424 1627360 5730472 1627328 5730448 +1624104 5734392 1624264 5734424 1627328 5730448 1627296 5730408 +1624104 5734392 1624264 5734424 1627296 5730408 1627288 5730392 +1624264 5734424 1627328 5730448 1627296 5730408 1627288 5730392 +1624104 5734392 1624264 5734424 1627288 5730392 1621752 5732672 +1624264 5734424 1627360 5730472 1627328 5730448 1627296 5730408 +1624264 5734424 1627440 5730528 1627360 5730472 1627328 5730448 +1624104 5734392 1626320 5735888 1624264 5734424 1627288 5730392 +1626320 5735888 1624264 5734424 1624104 5734392 1626240 5735904 +1626320 5735888 1627560 5730576 1624264 5734424 1626240 5735904 +1624104 5734392 1624520 5735400 1626240 5735904 1624264 5734424 +1624104 5734392 1624432 5735296 1624520 5735400 1624264 5734424 +1624520 5735400 1624608 5735568 1626240 5735904 1624264 5734424 +1624104 5734392 1624016 5734848 1624432 5735296 1624264 5734424 +1624016 5734848 1624176 5735160 1624432 5735296 1624264 5734424 +1624432 5735296 1624520 5735400 1624264 5734424 1624176 5735160 +1624104 5734392 1624008 5734832 1624016 5734848 1624264 5734424 +1624104 5734392 1623904 5734736 1624008 5734832 1624264 5734424 +1624016 5734848 1624176 5735160 1624264 5734424 1624008 5734832 +1624016 5734848 1624072 5735064 1624176 5735160 1624264 5734424 +1624520 5735400 1626240 5735904 1624264 5734424 1624432 5735296 +1624264 5734424 1627288 5730392 1624104 5734392 1624008 5734832 +1626240 5735904 1626320 5735888 1624264 5734424 1624520 5735400 +1626240 5735904 1624536 5734640 1624520 5735400 1624608 5735568 +1626240 5735904 1624264 5734424 1624536 5734640 1624608 5735568 +1624536 5734640 1624264 5734424 1624520 5735400 1624608 5735568 +1626240 5735904 1624536 5734640 1624608 5735568 1626096 5736000 +1624520 5735400 1624536 5734640 1624264 5734424 1624432 5735296 +1624536 5734640 1626240 5735904 1624264 5734424 1624432 5735296 +1624520 5735400 1624608 5735568 1624536 5734640 1624432 5735296 +1624264 5734424 1624176 5735160 1624432 5735296 1624536 5734640 +1624264 5734424 1624176 5735160 1624536 5734640 1626240 5735904 +1624264 5734424 1624016 5734848 1624176 5735160 1624536 5734640 +1624264 5734424 1624016 5734848 1624536 5734640 1626240 5735904 +1624176 5735160 1624432 5735296 1624536 5734640 1624016 5734848 +1624264 5734424 1624008 5734832 1624016 5734848 1624536 5734640 +1624264 5734424 1624008 5734832 1624536 5734640 1626240 5735904 +1624016 5734848 1624176 5735160 1624536 5734640 1624008 5734832 +1624264 5734424 1624104 5734392 1624008 5734832 1624536 5734640 +1624016 5734848 1624072 5735064 1624176 5735160 1624536 5734640 +1624016 5734848 1624072 5735064 1624536 5734640 1624008 5734832 +1624176 5735160 1624432 5735296 1624536 5734640 1624072 5735064 +1624432 5735296 1624520 5735400 1624536 5734640 1624176 5735160 +1624264 5734424 1624536 5734640 1626240 5735904 1626320 5735888 +1624264 5734424 1624008 5734832 1624536 5734640 1626320 5735888 +1624264 5734424 1624536 5734640 1626320 5735888 1627560 5730576 +1624264 5734424 1624536 5734640 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1624536 5734640 +1624264 5734424 1624008 5734832 1624536 5734640 1627440 5730528 +1624536 5734640 1626320 5735888 1627560 5730576 1627440 5730528 +1624536 5734640 1624608 5735568 1626240 5735904 1626320 5735888 +1626320 5735888 1627632 5730600 1627560 5730576 1624536 5734640 +1626320 5735888 1626504 5735936 1627632 5730600 1624536 5734640 +1627560 5730576 1627440 5730528 1624536 5734640 1627632 5730600 +1624264 5734424 1624536 5734640 1627440 5730528 1627360 5730472 +1624536 5734640 1626240 5735904 1626320 5735888 1627632 5730600 +1627632 5730600 1624728 5734744 1626320 5735888 1626504 5735936 +1624536 5734640 1624728 5734744 1627632 5730600 1627560 5730576 +1624536 5734640 1624728 5734744 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1624728 5734744 +1624536 5734640 1624728 5734744 1627440 5730528 1624264 5734424 +1624728 5734744 1627560 5730576 1627440 5730528 1624264 5734424 +1624536 5734640 1626320 5735888 1624728 5734744 1624264 5734424 +1624728 5734744 1626320 5735888 1627632 5730600 1627560 5730576 +1624728 5734744 1627632 5730600 1627560 5730576 1627440 5730528 +1627440 5730528 1627360 5730472 1624264 5734424 1624728 5734744 +1624264 5734424 1624536 5734640 1624728 5734744 1627360 5730472 +1627440 5730528 1627360 5730472 1624728 5734744 1627560 5730576 +1627360 5730472 1627328 5730448 1624264 5734424 1624728 5734744 +1626320 5735888 1624728 5734744 1624536 5734640 1626240 5735904 +1624536 5734640 1624608 5735568 1626240 5735904 1624728 5734744 +1624728 5734744 1624264 5734424 1624536 5734640 1624608 5735568 +1626320 5735888 1627632 5730600 1624728 5734744 1626240 5735904 +1624608 5735568 1626096 5736000 1626240 5735904 1624728 5734744 +1624608 5735568 1626096 5736000 1624728 5734744 1624536 5734640 +1624536 5734640 1624520 5735400 1624608 5735568 1624728 5734744 +1624608 5735568 1626096 5736000 1624728 5734744 1624520 5735400 +1624536 5734640 1624520 5735400 1624728 5734744 1624264 5734424 +1624536 5734640 1624432 5735296 1624520 5735400 1624728 5734744 +1624536 5734640 1624432 5735296 1624728 5734744 1624264 5734424 +1624520 5735400 1624608 5735568 1624728 5734744 1624432 5735296 +1624608 5735568 1626064 5736040 1626096 5736000 1624728 5734744 +1624536 5734640 1624176 5735160 1624432 5735296 1624728 5734744 +1626240 5735904 1626320 5735888 1624728 5734744 1626096 5736000 +1627632 5730600 1625040 5734896 1626320 5735888 1626504 5735936 +1624728 5734744 1625040 5734896 1627632 5730600 1627560 5730576 +1624728 5734744 1626320 5735888 1625040 5734896 1627560 5730576 +1626320 5735888 1625040 5734896 1624728 5734744 1626240 5735904 +1625040 5734896 1627560 5730576 1624728 5734744 1626240 5735904 +1627632 5730600 1627560 5730576 1625040 5734896 1626504 5735936 +1625040 5734896 1626240 5735904 1626320 5735888 1626504 5735936 +1624728 5734744 1625040 5734896 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1625040 5734896 +1624728 5734744 1625040 5734896 1627440 5730528 1627360 5730472 +1625040 5734896 1627632 5730600 1627560 5730576 1627440 5730528 +1624728 5734744 1626240 5735904 1625040 5734896 1627440 5730528 +1627632 5730600 1625040 5734896 1626504 5735936 1627856 5736056 +1624728 5734744 1626096 5736000 1626240 5735904 1625040 5734896 +1624728 5734744 1626096 5736000 1625040 5734896 1627440 5730528 +1626240 5735904 1626320 5735888 1625040 5734896 1626096 5736000 +1624728 5734744 1624608 5735568 1626096 5736000 1625040 5734896 +1624728 5734744 1624520 5735400 1624608 5735568 1625040 5734896 +1624728 5734744 1624520 5735400 1625040 5734896 1627440 5730528 +1624608 5735568 1626096 5736000 1625040 5734896 1624520 5735400 +1624728 5734744 1624432 5735296 1624520 5735400 1625040 5734896 +1624520 5735400 1624608 5735568 1625040 5734896 1624432 5735296 +1624728 5734744 1624536 5734640 1624432 5735296 1625040 5734896 +1624728 5734744 1624432 5735296 1625040 5734896 1627440 5730528 +1624608 5735568 1626064 5736040 1626096 5736000 1625040 5734896 +1624608 5735568 1626064 5736040 1625040 5734896 1624520 5735400 +1624608 5735568 1624736 5736008 1626064 5736040 1625040 5734896 +1624736 5736008 1624896 5736208 1626064 5736040 1625040 5734896 +1624608 5735568 1624736 5736008 1625040 5734896 1624520 5735400 +1626064 5736040 1626096 5736000 1625040 5734896 1624736 5736008 +1626096 5736000 1626240 5735904 1625040 5734896 1626064 5736040 +1626504 5735936 1625176 5734984 1625040 5734896 1626320 5735888 +1625040 5734896 1625176 5734984 1627632 5730600 1627560 5730576 +1625040 5734896 1625176 5734984 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1625176 5734984 +1625176 5734984 1627632 5730600 1627560 5730576 1627440 5730528 +1625176 5734984 1627440 5730528 1625040 5734896 1626320 5735888 +1625040 5734896 1626240 5735904 1626320 5735888 1625176 5734984 +1626320 5735888 1626504 5735936 1625176 5734984 1626240 5735904 +1625040 5734896 1626096 5736000 1626240 5735904 1625176 5734984 +1625040 5734896 1626096 5736000 1625176 5734984 1627440 5730528 +1626240 5735904 1626320 5735888 1625176 5734984 1626096 5736000 +1625176 5734984 1626504 5735936 1627632 5730600 1627560 5730576 +1626504 5735936 1627632 5730600 1625176 5734984 1626320 5735888 +1625040 5734896 1625176 5734984 1627440 5730528 1624728 5734744 +1627632 5730600 1625176 5734984 1626504 5735936 1627856 5736056 +1625040 5734896 1626064 5736040 1626096 5736000 1625176 5734984 +1626096 5736000 1626240 5735904 1625176 5734984 1626064 5736040 +1625040 5734896 1626064 5736040 1625176 5734984 1627440 5730528 +1625040 5734896 1624736 5736008 1626064 5736040 1625176 5734984 +1625040 5734896 1624736 5736008 1625176 5734984 1627440 5730528 +1624736 5736008 1624896 5736208 1626064 5736040 1625176 5734984 +1624736 5736008 1624808 5736120 1624896 5736208 1625176 5734984 +1624736 5736008 1624896 5736208 1625176 5734984 1625040 5734896 +1625040 5734896 1624608 5735568 1624736 5736008 1625176 5734984 +1625040 5734896 1624608 5735568 1625176 5734984 1627440 5730528 +1625040 5734896 1624520 5735400 1624608 5735568 1625176 5734984 +1625040 5734896 1624432 5735296 1624520 5735400 1625176 5734984 +1625040 5734896 1624520 5735400 1625176 5734984 1627440 5730528 +1624736 5736008 1624896 5736208 1625176 5734984 1624608 5735568 +1624608 5735568 1624736 5736008 1625176 5734984 1624520 5735400 +1626064 5736040 1626096 5736000 1625176 5734984 1624896 5736208 +1624896 5736208 1625152 5736368 1626064 5736040 1625176 5734984 +1624896 5736208 1625152 5736368 1625176 5734984 1624736 5736008 +1625152 5736368 1626048 5736096 1626064 5736040 1625176 5734984 +1626064 5736040 1626096 5736000 1625176 5734984 1625152 5736368 +1625176 5734984 1625440 5735200 1626320 5735888 1626504 5735936 +1626240 5735904 1625440 5735200 1625176 5734984 1626096 5736000 +1625176 5734984 1626064 5736040 1626096 5736000 1625440 5735200 +1626096 5736000 1626240 5735904 1625440 5735200 1626064 5736040 +1625176 5734984 1626064 5736040 1625440 5735200 1626504 5735936 +1625176 5734984 1625440 5735200 1626504 5735936 1627632 5730600 +1625440 5735200 1626320 5735888 1626504 5735936 1627632 5730600 +1625176 5734984 1625440 5735200 1627632 5730600 1627560 5730576 +1625176 5734984 1626064 5736040 1625440 5735200 1627632 5730600 +1625440 5735200 1626240 5735904 1626320 5735888 1626504 5735936 +1626240 5735904 1626320 5735888 1625440 5735200 1626096 5736000 +1626504 5735936 1627856 5736056 1627632 5730600 1625440 5735200 +1626504 5735936 1627856 5736056 1625440 5735200 1626320 5735888 +1627632 5730600 1625176 5734984 1625440 5735200 1627856 5736056 +1627856 5736056 1627656 5730600 1627632 5730600 1625440 5735200 +1626504 5735936 1626664 5736032 1627856 5736056 1625440 5735200 +1625176 5734984 1625152 5736368 1626064 5736040 1625440 5735200 +1626064 5736040 1626096 5736000 1625440 5735200 1625152 5736368 +1625176 5734984 1625152 5736368 1625440 5735200 1627632 5730600 +1625152 5736368 1626048 5736096 1626064 5736040 1625440 5735200 +1625176 5734984 1624896 5736208 1625152 5736368 1625440 5735200 +1625176 5734984 1624896 5736208 1625440 5735200 1627632 5730600 +1625176 5734984 1624736 5736008 1624896 5736208 1625440 5735200 +1625176 5734984 1624736 5736008 1625440 5735200 1627632 5730600 +1624736 5736008 1624808 5736120 1624896 5736208 1625440 5735200 +1624736 5736008 1624808 5736120 1625440 5735200 1625176 5734984 +1625176 5734984 1624608 5735568 1624736 5736008 1625440 5735200 +1625176 5734984 1624608 5735568 1625440 5735200 1627632 5730600 +1624736 5736008 1624808 5736120 1625440 5735200 1624608 5735568 +1625176 5734984 1624520 5735400 1624608 5735568 1625440 5735200 +1625152 5736368 1626064 5736040 1625440 5735200 1624896 5736208 +1624896 5736208 1625152 5736368 1625440 5735200 1624808 5736120 +1626096 5736000 1625576 5735360 1625440 5735200 1626064 5736040 +1625440 5735200 1625152 5736368 1626064 5736040 1625576 5735360 +1626064 5736040 1626096 5736000 1625576 5735360 1625152 5736368 +1625576 5735360 1626240 5735904 1625440 5735200 1625152 5736368 +1625440 5735200 1625576 5735360 1626240 5735904 1626320 5735888 +1625440 5735200 1625576 5735360 1626320 5735888 1626504 5735936 +1625440 5735200 1625576 5735360 1626504 5735936 1627856 5736056 +1625440 5735200 1625152 5736368 1625576 5735360 1626504 5735936 +1625576 5735360 1626240 5735904 1626320 5735888 1626504 5735936 +1625576 5735360 1626096 5736000 1626240 5735904 1626320 5735888 +1626096 5736000 1626240 5735904 1625576 5735360 1626064 5736040 +1625152 5736368 1626048 5736096 1626064 5736040 1625576 5735360 +1625152 5736368 1626048 5736096 1625576 5735360 1625440 5735200 +1626064 5736040 1626096 5736000 1625576 5735360 1626048 5736096 +1625152 5736368 1625448 5736544 1626048 5736096 1625576 5735360 +1625440 5735200 1624896 5736208 1625152 5736368 1625576 5735360 +1625152 5736368 1626048 5736096 1625576 5735360 1624896 5736208 +1625440 5735200 1624896 5736208 1625576 5735360 1626504 5735936 +1625440 5735200 1624808 5736120 1624896 5736208 1625576 5735360 +1625440 5735200 1624808 5736120 1625576 5735360 1626504 5735936 +1625440 5735200 1624736 5736008 1624808 5736120 1625576 5735360 +1625440 5735200 1624736 5736008 1625576 5735360 1626504 5735936 +1625440 5735200 1624608 5735568 1624736 5736008 1625576 5735360 +1625440 5735200 1624608 5735568 1625576 5735360 1626504 5735936 +1624736 5736008 1624808 5736120 1625576 5735360 1624608 5735568 +1625440 5735200 1625176 5734984 1624608 5735568 1625576 5735360 +1624896 5736208 1625152 5736368 1625576 5735360 1624808 5736120 +1624808 5736120 1624896 5736208 1625576 5735360 1624736 5736008 +1625152 5736368 1625736 5735632 1625576 5735360 1624896 5736208 +1625736 5735632 1626048 5736096 1625576 5735360 1624896 5736208 +1625576 5735360 1625736 5735632 1626048 5736096 1626064 5736040 +1625576 5735360 1625736 5735632 1626064 5736040 1626096 5736000 +1625576 5735360 1624896 5736208 1625736 5735632 1626096 5736000 +1625576 5735360 1625736 5735632 1626096 5736000 1626240 5735904 +1625736 5735632 1626064 5736040 1626096 5736000 1626240 5735904 +1625576 5735360 1625736 5735632 1626240 5735904 1626320 5735888 +1625576 5735360 1625736 5735632 1626320 5735888 1626504 5735936 +1625576 5735360 1624896 5736208 1625736 5735632 1626320 5735888 +1625736 5735632 1626096 5736000 1626240 5735904 1626320 5735888 +1625736 5735632 1625152 5736368 1626048 5736096 1626064 5736040 +1625736 5735632 1626048 5736096 1626064 5736040 1626096 5736000 +1626048 5736096 1625736 5735632 1625152 5736368 1625448 5736544 +1626048 5736096 1626064 5736040 1625736 5735632 1625448 5736544 +1626048 5736096 1625736 5735632 1625448 5736544 1625752 5736648 +1625152 5736368 1625448 5736544 1625736 5735632 1624896 5736208 +1625576 5735360 1624808 5736120 1624896 5736208 1625736 5735632 +1624896 5736208 1625152 5736368 1625736 5735632 1624808 5736120 +1625576 5735360 1624808 5736120 1625736 5735632 1626320 5735888 +1625576 5735360 1624736 5736008 1624808 5736120 1625736 5735632 +1625576 5735360 1624736 5736008 1625736 5735632 1626320 5735888 +1625576 5735360 1624608 5735568 1624736 5736008 1625736 5735632 +1624808 5736120 1624896 5736208 1625736 5735632 1624736 5736008 +1626096 5736000 1625800 5735688 1625736 5735632 1626064 5736040 +1625736 5735632 1625800 5735688 1626240 5735904 1626320 5735888 +1625736 5735632 1625800 5735688 1626320 5735888 1625576 5735360 +1626320 5735888 1626504 5735936 1625576 5735360 1625800 5735688 +1625800 5735688 1626240 5735904 1626320 5735888 1625576 5735360 +1625800 5735688 1625576 5735360 1625736 5735632 1626064 5736040 +1625736 5735632 1626048 5736096 1626064 5736040 1625800 5735688 +1626064 5736040 1626096 5736000 1625800 5735688 1626048 5736096 +1625736 5735632 1625448 5736544 1626048 5736096 1625800 5735688 +1625736 5735632 1625448 5736544 1625800 5735688 1625576 5735360 +1625448 5736544 1625752 5736648 1626048 5736096 1625800 5735688 +1626048 5736096 1626064 5736040 1625800 5735688 1625448 5736544 +1625736 5735632 1625152 5736368 1625448 5736544 1625800 5735688 +1625448 5736544 1626048 5736096 1625800 5735688 1625152 5736368 +1625736 5735632 1625152 5736368 1625800 5735688 1625576 5735360 +1625736 5735632 1624896 5736208 1625152 5736368 1625800 5735688 +1625800 5735688 1626096 5736000 1626240 5735904 1626320 5735888 +1626096 5736000 1626240 5735904 1625800 5735688 1626064 5736040 +1625800 5735688 1625896 5735736 1626240 5735904 1626320 5735888 +1625800 5735688 1625896 5735736 1626320 5735888 1625576 5735360 +1626320 5735888 1626504 5735936 1625576 5735360 1625896 5735736 +1625800 5735688 1625896 5735736 1625576 5735360 1625736 5735632 +1625896 5735736 1626320 5735888 1625576 5735360 1625736 5735632 +1625896 5735736 1626240 5735904 1626320 5735888 1625576 5735360 +1625800 5735688 1626096 5736000 1625896 5735736 1625736 5735632 +1626096 5736000 1625896 5735736 1625800 5735688 1626064 5736040 +1625800 5735688 1626048 5736096 1626064 5736040 1625896 5735736 +1625800 5735688 1625448 5736544 1626048 5736096 1625896 5735736 +1625896 5735736 1625736 5735632 1625800 5735688 1626048 5736096 +1626064 5736040 1626096 5736000 1625896 5735736 1626048 5736096 +1625896 5735736 1626096 5736000 1626240 5735904 1626320 5735888 +1626096 5736000 1626240 5735904 1625896 5735736 1626064 5736040 +1625576 5735360 1625984 5735736 1626320 5735888 1626504 5735936 +1625896 5735736 1625984 5735736 1625576 5735360 1625736 5735632 +1625896 5735736 1625984 5735736 1625736 5735632 1625800 5735688 +1625984 5735736 1625576 5735360 1625736 5735632 1625800 5735688 +1626320 5735888 1625984 5735736 1625896 5735736 1626240 5735904 +1625896 5735736 1626096 5736000 1626240 5735904 1625984 5735736 +1626240 5735904 1626320 5735888 1625984 5735736 1626096 5736000 +1625896 5735736 1626096 5736000 1625984 5735736 1625800 5735688 +1625896 5735736 1626064 5736040 1626096 5736000 1625984 5735736 +1625896 5735736 1626048 5736096 1626064 5736040 1625984 5735736 +1626096 5736000 1626240 5735904 1625984 5735736 1626064 5736040 +1625896 5735736 1626064 5736040 1625984 5735736 1625800 5735688 +1625984 5735736 1626320 5735888 1625576 5735360 1625736 5735632 +1626320 5735888 1625576 5735360 1625984 5735736 1626240 5735904 +1625576 5735360 1626064 5735680 1626504 5735936 1625440 5735200 +1626504 5735936 1627856 5736056 1625440 5735200 1626064 5735680 +1625440 5735200 1625576 5735360 1626064 5735680 1627856 5736056 +1626320 5735888 1626064 5735680 1625576 5735360 1625984 5735736 +1627856 5736056 1627632 5730600 1625440 5735200 1626064 5735680 +1627856 5736056 1627632 5730600 1626064 5735680 1626504 5735936 +1627632 5730600 1625176 5734984 1625440 5735200 1626064 5735680 +1625440 5735200 1625576 5735360 1626064 5735680 1627632 5730600 +1627856 5736056 1627656 5730600 1627632 5730600 1626064 5735680 +1626504 5735936 1626664 5736032 1627856 5736056 1626064 5735680 +1625576 5735360 1625736 5735632 1625984 5735736 1626064 5735680 +1625984 5735736 1626320 5735888 1626064 5735680 1625736 5735632 +1625736 5735632 1625800 5735688 1625984 5735736 1626064 5735680 +1625984 5735736 1626320 5735888 1626064 5735680 1625800 5735688 +1625800 5735688 1625896 5735736 1625984 5735736 1626064 5735680 +1625984 5735736 1626320 5735888 1626064 5735680 1625896 5735736 +1625800 5735688 1625896 5735736 1626064 5735680 1625736 5735632 +1625736 5735632 1625800 5735688 1626064 5735680 1625576 5735360 +1625576 5735360 1625736 5735632 1626064 5735680 1625440 5735200 +1626320 5735888 1626064 5735680 1625984 5735736 1626240 5735904 +1626064 5735680 1625896 5735736 1625984 5735736 1626240 5735904 +1625984 5735736 1626096 5736000 1626240 5735904 1626064 5735680 +1626064 5735680 1626320 5735888 1626504 5735936 1627856 5736056 +1626320 5735888 1626504 5735936 1626064 5735680 1626240 5735904 +1627856 5736056 1626096 5735584 1626064 5735680 1626504 5735936 +1626064 5735680 1626096 5735584 1627632 5730600 1625440 5735200 +1627632 5730600 1625176 5734984 1625440 5735200 1626096 5735584 +1626064 5735680 1626096 5735584 1625440 5735200 1625576 5735360 +1626096 5735584 1627632 5730600 1625440 5735200 1625576 5735360 +1627632 5730600 1626096 5735584 1627856 5736056 1627656 5730600 +1627856 5736056 1626096 5735584 1626504 5735936 1626664 5736032 +1626064 5735680 1626096 5735584 1625576 5735360 1625736 5735632 +1626096 5735584 1625440 5735200 1625576 5735360 1625736 5735632 +1626064 5735680 1626096 5735584 1625736 5735632 1625800 5735688 +1626064 5735680 1626096 5735584 1625800 5735688 1625896 5735736 +1626064 5735680 1626096 5735584 1625896 5735736 1625984 5735736 +1626096 5735584 1625736 5735632 1625800 5735688 1625896 5735736 +1626096 5735584 1625576 5735360 1625736 5735632 1625800 5735688 +1626064 5735680 1626320 5735888 1626504 5735936 1626096 5735584 +1626504 5735936 1627856 5736056 1626096 5735584 1626320 5735888 +1626096 5735584 1625896 5735736 1626064 5735680 1626320 5735888 +1626096 5735584 1627856 5736056 1627632 5730600 1625440 5735200 +1627856 5736056 1627632 5730600 1626096 5735584 1626504 5735936 +1626064 5735680 1626240 5735904 1626320 5735888 1626096 5735584 +1625440 5735200 1626088 5735544 1627632 5730600 1625176 5734984 +1626096 5735584 1626088 5735544 1625440 5735200 1625576 5735360 +1626096 5735584 1626088 5735544 1625576 5735360 1625736 5735632 +1626088 5735544 1625440 5735200 1625576 5735360 1625736 5735632 +1626096 5735584 1626088 5735544 1625736 5735632 1625800 5735688 +1626088 5735544 1625576 5735360 1625736 5735632 1625800 5735688 +1626096 5735584 1626088 5735544 1625800 5735688 1625896 5735736 +1626096 5735584 1626088 5735544 1625896 5735736 1626064 5735680 +1625896 5735736 1625984 5735736 1626064 5735680 1626088 5735544 +1626088 5735544 1625800 5735688 1625896 5735736 1626064 5735680 +1626088 5735544 1625736 5735632 1625800 5735688 1625896 5735736 +1627632 5730600 1626088 5735544 1626096 5735584 1627856 5736056 +1627632 5730600 1626088 5735544 1627856 5736056 1627656 5730600 +1626088 5735544 1626096 5735584 1627856 5736056 1627656 5730600 +1626096 5735584 1627856 5736056 1626088 5735544 1626064 5735680 +1626096 5735584 1626504 5735936 1627856 5736056 1626088 5735544 +1626096 5735584 1626320 5735888 1626504 5735936 1626088 5735544 +1626504 5735936 1626664 5736032 1627856 5736056 1626088 5735544 +1627856 5736056 1627656 5730600 1626088 5735544 1626504 5735936 +1626096 5735584 1626504 5735936 1626088 5735544 1626064 5735680 +1626088 5735544 1627632 5730600 1625440 5735200 1625576 5735360 +1627632 5730600 1625440 5735200 1626088 5735544 1627656 5730600 +1627856 5736056 1627720 5730568 1627656 5730600 1626088 5735544 +1626088 5735544 1626112 5735488 1627656 5730600 1627632 5730600 +1627856 5736056 1626112 5735488 1626088 5735544 1626504 5735936 +1627856 5736056 1626112 5735488 1626504 5735936 1626664 5736032 +1626112 5735488 1626088 5735544 1626504 5735936 1626664 5736032 +1626088 5735544 1626096 5735584 1626504 5735936 1626112 5735488 +1626096 5735584 1626320 5735888 1626504 5735936 1626112 5735488 +1626096 5735584 1626064 5735680 1626320 5735888 1626112 5735488 +1626504 5735936 1626664 5736032 1626112 5735488 1626320 5735888 +1626096 5735584 1626320 5735888 1626112 5735488 1626088 5735544 +1626088 5735544 1626096 5735584 1626112 5735488 1627632 5730600 +1626088 5735544 1626112 5735488 1627632 5730600 1625440 5735200 +1627632 5730600 1625176 5734984 1625440 5735200 1626112 5735488 +1627632 5730600 1627560 5730576 1625176 5734984 1626112 5735488 +1626112 5735488 1627656 5730600 1627632 5730600 1625176 5734984 +1626088 5735544 1626112 5735488 1625440 5735200 1625576 5735360 +1626088 5735544 1626112 5735488 1625576 5735360 1625736 5735632 +1626088 5735544 1626112 5735488 1625736 5735632 1625800 5735688 +1626112 5735488 1625440 5735200 1625576 5735360 1625736 5735632 +1626088 5735544 1626096 5735584 1626112 5735488 1625736 5735632 +1625440 5735200 1625576 5735360 1626112 5735488 1625176 5734984 +1626112 5735488 1627856 5736056 1627656 5730600 1627632 5730600 +1627856 5736056 1627656 5730600 1626112 5735488 1626664 5736032 +1627656 5730600 1626112 5735488 1627856 5736056 1627720 5730568 +1627856 5736056 1626112 5735488 1626664 5736032 1626992 5736208 +1626112 5735488 1626144 5735440 1627656 5730600 1627632 5730600 +1626112 5735488 1626144 5735440 1627632 5730600 1625176 5734984 +1627632 5730600 1627560 5730576 1625176 5734984 1626144 5735440 +1627560 5730576 1627440 5730528 1625176 5734984 1626144 5735440 +1626112 5735488 1626144 5735440 1625176 5734984 1625440 5735200 +1625176 5734984 1625440 5735200 1626144 5735440 1627560 5730576 +1626112 5735488 1626144 5735440 1625440 5735200 1625576 5735360 +1626144 5735440 1625176 5734984 1625440 5735200 1625576 5735360 +1626112 5735488 1626144 5735440 1625576 5735360 1625736 5735632 +1626144 5735440 1627656 5730600 1627632 5730600 1627560 5730576 +1626112 5735488 1627856 5736056 1626144 5735440 1625576 5735360 +1627856 5736056 1626144 5735440 1626112 5735488 1626664 5736032 +1627856 5736056 1627656 5730600 1626144 5735440 1626664 5736032 +1626112 5735488 1626504 5735936 1626664 5736032 1626144 5735440 +1626112 5735488 1626320 5735888 1626504 5735936 1626144 5735440 +1626112 5735488 1626096 5735584 1626320 5735888 1626144 5735440 +1626504 5735936 1626664 5736032 1626144 5735440 1626320 5735888 +1626096 5735584 1626064 5735680 1626320 5735888 1626144 5735440 +1626320 5735888 1626504 5735936 1626144 5735440 1626096 5735584 +1626112 5735488 1626088 5735544 1626096 5735584 1626144 5735440 +1626144 5735440 1625576 5735360 1626112 5735488 1626096 5735584 +1626664 5736032 1627856 5736056 1626144 5735440 1626504 5735936 +1626144 5735440 1627856 5736056 1627656 5730600 1627632 5730600 +1627656 5730600 1626144 5735440 1627856 5736056 1627720 5730568 +1627856 5736056 1626144 5735440 1626664 5736032 1626992 5736208 +1627856 5736056 1626192 5735400 1626144 5735440 1626664 5736032 +1626192 5735400 1627656 5730600 1626144 5735440 1626664 5736032 +1627856 5736056 1627656 5730600 1626192 5735400 1626664 5736032 +1626144 5735440 1626504 5735936 1626664 5736032 1626192 5735400 +1626664 5736032 1627856 5736056 1626192 5735400 1626504 5735936 +1626144 5735440 1626504 5735936 1626192 5735400 1627656 5730600 +1626144 5735440 1626320 5735888 1626504 5735936 1626192 5735400 +1626144 5735440 1626320 5735888 1626192 5735400 1627656 5730600 +1626144 5735440 1626096 5735584 1626320 5735888 1626192 5735400 +1626144 5735440 1626112 5735488 1626096 5735584 1626192 5735400 +1626144 5735440 1626096 5735584 1626192 5735400 1627656 5730600 +1626320 5735888 1626504 5735936 1626192 5735400 1626096 5735584 +1626096 5735584 1626064 5735680 1626320 5735888 1626192 5735400 +1626504 5735936 1626664 5736032 1626192 5735400 1626320 5735888 +1626144 5735440 1626192 5735400 1627656 5730600 1627632 5730600 +1626144 5735440 1626096 5735584 1626192 5735400 1627632 5730600 +1626192 5735400 1627856 5736056 1627656 5730600 1627632 5730600 +1626144 5735440 1626192 5735400 1627632 5730600 1627560 5730576 +1626144 5735440 1626192 5735400 1627560 5730576 1625176 5734984 +1627560 5730576 1627440 5730528 1625176 5734984 1626192 5735400 +1626144 5735440 1626096 5735584 1626192 5735400 1625176 5734984 +1626144 5735440 1626192 5735400 1625176 5734984 1625440 5735200 +1626192 5735400 1627560 5730576 1625176 5734984 1625440 5735200 +1626144 5735440 1626192 5735400 1625440 5735200 1625576 5735360 +1626144 5735440 1626096 5735584 1626192 5735400 1625576 5735360 +1626192 5735400 1625176 5734984 1625440 5735200 1625576 5735360 +1626144 5735440 1626192 5735400 1625576 5735360 1626112 5735488 +1626192 5735400 1627632 5730600 1627560 5730576 1625176 5734984 +1626192 5735400 1627656 5730600 1627632 5730600 1627560 5730576 +1627656 5730600 1626192 5735400 1627856 5736056 1627720 5730568 +1627856 5736056 1626192 5735400 1626664 5736032 1626992 5736208 +1626192 5735400 1626328 5735392 1627656 5730600 1627632 5730600 +1626192 5735400 1627856 5736056 1626328 5735392 1627632 5730600 +1627856 5736056 1626328 5735392 1626192 5735400 1626664 5736032 +1626192 5735400 1626504 5735936 1626664 5736032 1626328 5735392 +1626328 5735392 1627632 5730600 1626192 5735400 1626504 5735936 +1626664 5736032 1627856 5736056 1626328 5735392 1626504 5735936 +1626328 5735392 1627856 5736056 1627656 5730600 1627632 5730600 +1627856 5736056 1627656 5730600 1626328 5735392 1626664 5736032 +1626192 5735400 1626320 5735888 1626504 5735936 1626328 5735392 +1626504 5735936 1626664 5736032 1626328 5735392 1626320 5735888 +1626192 5735400 1626320 5735888 1626328 5735392 1627632 5730600 +1626192 5735400 1626096 5735584 1626320 5735888 1626328 5735392 +1626192 5735400 1626096 5735584 1626328 5735392 1627632 5730600 +1626096 5735584 1626064 5735680 1626320 5735888 1626328 5735392 +1626192 5735400 1626144 5735440 1626096 5735584 1626328 5735392 +1626144 5735440 1626112 5735488 1626096 5735584 1626328 5735392 +1626192 5735400 1626144 5735440 1626328 5735392 1627632 5730600 +1626096 5735584 1626320 5735888 1626328 5735392 1626112 5735488 +1626144 5735440 1626112 5735488 1626328 5735392 1626192 5735400 +1626112 5735488 1626088 5735544 1626096 5735584 1626328 5735392 +1626320 5735888 1626504 5735936 1626328 5735392 1626096 5735584 +1626192 5735400 1626328 5735392 1627632 5730600 1627560 5730576 +1626328 5735392 1627656 5730600 1627632 5730600 1627560 5730576 +1626192 5735400 1626144 5735440 1626328 5735392 1627560 5730576 +1626192 5735400 1626328 5735392 1627560 5730576 1625176 5734984 +1627560 5730576 1627440 5730528 1625176 5734984 1626328 5735392 +1626192 5735400 1626328 5735392 1625176 5734984 1625440 5735200 +1626192 5735400 1626144 5735440 1626328 5735392 1625176 5734984 +1626328 5735392 1627632 5730600 1627560 5730576 1625176 5734984 +1627656 5730600 1626328 5735392 1627856 5736056 1627720 5730568 +1627856 5736056 1626328 5735392 1626664 5736032 1626992 5736208 +1626328 5735392 1626504 5735936 1626664 5736032 1626992 5736208 +1627856 5736056 1627656 5730600 1626328 5735392 1626992 5736208 +1627856 5736056 1626328 5735392 1626992 5736208 1627168 5736256 +1626664 5736032 1626800 5736136 1626992 5736208 1626328 5735392 +1626328 5735392 1626480 5735432 1627656 5730600 1627632 5730600 +1626328 5735392 1626480 5735432 1627632 5730600 1627560 5730576 +1626328 5735392 1627856 5736056 1626480 5735432 1627632 5730600 +1627856 5736056 1626480 5735432 1626328 5735392 1626992 5736208 +1626480 5735432 1627632 5730600 1626328 5735392 1626992 5736208 +1626480 5735432 1627856 5736056 1627656 5730600 1627632 5730600 +1627856 5736056 1627656 5730600 1626480 5735432 1626992 5736208 +1627856 5736056 1626480 5735432 1626992 5736208 1627168 5736256 +1626480 5735432 1626328 5735392 1626992 5736208 1627168 5736256 +1627856 5736056 1627656 5730600 1626480 5735432 1627168 5736256 +1627856 5736056 1626480 5735432 1627168 5736256 1627376 5736376 +1627656 5730600 1626480 5735432 1627856 5736056 1627720 5730568 +1626328 5735392 1626664 5736032 1626992 5736208 1626480 5735432 +1626328 5735392 1626504 5735936 1626664 5736032 1626480 5735432 +1626328 5735392 1626320 5735888 1626504 5735936 1626480 5735432 +1626504 5735936 1626664 5736032 1626480 5735432 1626320 5735888 +1626328 5735392 1626320 5735888 1626480 5735432 1627632 5730600 +1626992 5736208 1627168 5736256 1626480 5735432 1626664 5736032 +1626664 5736032 1626800 5736136 1626992 5736208 1626480 5735432 +1626328 5735392 1626096 5735584 1626320 5735888 1626480 5735432 +1626664 5736032 1626992 5736208 1626480 5735432 1626504 5735936 +1626480 5735432 1626712 5735520 1627656 5730600 1627632 5730600 +1626480 5735432 1626712 5735520 1627632 5730600 1626328 5735392 +1626480 5735432 1627856 5736056 1626712 5735520 1627632 5730600 +1627856 5736056 1626712 5735520 1626480 5735432 1627168 5736256 +1626712 5735520 1627632 5730600 1626480 5735432 1627168 5736256 +1626712 5735520 1627856 5736056 1627656 5730600 1627632 5730600 +1627856 5736056 1627656 5730600 1626712 5735520 1627168 5736256 +1626480 5735432 1626992 5736208 1627168 5736256 1626712 5735520 +1626480 5735432 1626664 5736032 1626992 5736208 1626712 5735520 +1626480 5735432 1626664 5736032 1626712 5735520 1627632 5730600 +1627168 5736256 1627856 5736056 1626712 5735520 1626992 5736208 +1626992 5736208 1627168 5736256 1626712 5735520 1626664 5736032 +1626664 5736032 1626800 5736136 1626992 5736208 1626712 5735520 +1626664 5736032 1626800 5736136 1626712 5735520 1626480 5735432 +1626992 5736208 1627168 5736256 1626712 5735520 1626800 5736136 +1627856 5736056 1626712 5735520 1627168 5736256 1627376 5736376 +1627656 5730600 1626712 5735520 1627856 5736056 1627720 5730568 +1626480 5735432 1626504 5735936 1626664 5736032 1626712 5735520 +1626480 5735432 1626320 5735888 1626504 5735936 1626712 5735520 +1626664 5736032 1626800 5736136 1626712 5735520 1626504 5735936 +1626480 5735432 1626504 5735936 1626712 5735520 1627632 5730600 +1626712 5735520 1627384 5735808 1627656 5730600 1627632 5730600 +1627856 5736056 1627384 5735808 1626712 5735520 1627168 5736256 +1626712 5735520 1626992 5736208 1627168 5736256 1627384 5735808 +1627384 5735808 1627656 5730600 1626712 5735520 1626992 5736208 +1627168 5736256 1627856 5736056 1627384 5735808 1626992 5736208 +1627856 5736056 1627656 5730600 1627384 5735808 1627168 5736256 +1626712 5735520 1626800 5736136 1626992 5736208 1627384 5735808 +1626992 5736208 1627168 5736256 1627384 5735808 1626800 5736136 +1626712 5735520 1626800 5736136 1627384 5735808 1627656 5730600 +1626712 5735520 1626664 5736032 1626800 5736136 1627384 5735808 +1627856 5736056 1627384 5735808 1627168 5736256 1627376 5736376 +1627856 5736056 1627384 5735808 1627376 5736376 1627624 5736560 +1627384 5735808 1626992 5736208 1627168 5736256 1627376 5736376 +1627856 5736056 1627656 5730600 1627384 5735808 1627376 5736376 +1627656 5730600 1627384 5735808 1627856 5736056 1627720 5730568 +1624896 5736208 1625192 5736144 1625736 5735632 1624808 5736120 +1624896 5736208 1625152 5736368 1625192 5736144 1624808 5736120 +1625192 5736144 1625152 5736368 1625736 5735632 1624808 5736120 +1625736 5735632 1625192 5736144 1625152 5736368 1625800 5735688 +1625192 5736144 1624896 5736208 1625152 5736368 1625800 5735688 +1625736 5735632 1624808 5736120 1625192 5736144 1625800 5735688 +1625152 5736368 1625448 5736544 1625800 5735688 1625192 5736144 +1625448 5736544 1626048 5736096 1625800 5735688 1625192 5736144 +1625448 5736544 1625752 5736648 1626048 5736096 1625192 5736144 +1626048 5736096 1625896 5735736 1625800 5735688 1625192 5736144 +1625152 5736368 1625448 5736544 1625192 5736144 1624896 5736208 +1625448 5736544 1626048 5736096 1625192 5736144 1625152 5736368 +1625800 5735688 1625736 5735632 1625192 5736144 1626048 5736096 +1625736 5735632 1624736 5736008 1624808 5736120 1625192 5736144 +1624808 5736120 1624896 5736208 1625192 5736144 1624736 5736008 +1625736 5735632 1624736 5736008 1625192 5736144 1625800 5735688 +1625736 5735632 1625576 5735360 1624736 5736008 1625192 5736144 +1625576 5735360 1624608 5735568 1624736 5736008 1625192 5736144 +1625576 5735360 1625440 5735200 1624608 5735568 1625192 5736144 +1625736 5735632 1625576 5735360 1625192 5736144 1625800 5735688 +1624736 5736008 1624808 5736120 1625192 5736144 1624608 5735568 +1625576 5735360 1624608 5735568 1625192 5736144 1625736 5735632 +1625192 5736144 1625088 5735952 1624608 5735568 1624736 5736008 +1624608 5735568 1625088 5735952 1625576 5735360 1625440 5735200 +1625192 5736144 1625576 5735360 1625088 5735952 1624736 5736008 +1625088 5735952 1625440 5735200 1624608 5735568 1624736 5736008 +1625088 5735952 1625192 5736144 1625576 5735360 1625440 5735200 +1624608 5735568 1625088 5735952 1625440 5735200 1625176 5734984 +1625192 5736144 1625088 5735952 1624736 5736008 1624808 5736120 +1625192 5736144 1625088 5735952 1624808 5736120 1624896 5736208 +1625088 5735952 1624608 5735568 1624736 5736008 1624808 5736120 +1625192 5736144 1625088 5735952 1624896 5736208 1625152 5736368 +1625192 5736144 1625576 5735360 1625088 5735952 1624896 5736208 +1625088 5735952 1624736 5736008 1624808 5736120 1624896 5736208 +1625576 5735360 1625088 5735952 1625192 5736144 1625736 5735632 +1625088 5735952 1624896 5736208 1625192 5736144 1625736 5735632 +1625192 5736144 1625800 5735688 1625736 5735632 1625088 5735952 +1625576 5735360 1625440 5735200 1625088 5735952 1625736 5735632 +1625440 5735200 1624928 5735800 1625088 5735952 1625576 5735360 +1625088 5735952 1624928 5735800 1624608 5735568 1624736 5736008 +1625088 5735952 1624928 5735800 1624736 5736008 1624808 5736120 +1624928 5735800 1624608 5735568 1624736 5736008 1624808 5736120 +1624928 5735800 1624808 5736120 1625088 5735952 1625576 5735360 +1625088 5735952 1625736 5735632 1625576 5735360 1624928 5735800 +1624928 5735800 1625440 5735200 1624608 5735568 1624736 5736008 +1625440 5735200 1624608 5735568 1624928 5735800 1625576 5735360 +1624608 5735568 1624928 5735800 1625440 5735200 1625176 5734984 +1624608 5735568 1624736 5736008 1624928 5735800 1625176 5734984 +1624928 5735800 1625576 5735360 1625440 5735200 1625176 5734984 +1624608 5735568 1624928 5735800 1625176 5734984 1624520 5735400 +1625088 5735952 1624928 5735800 1624808 5736120 1624896 5736208 +1624928 5735800 1624904 5735760 1624608 5735568 1624736 5736008 +1624928 5735800 1624904 5735760 1624736 5736008 1624808 5736120 +1624928 5735800 1625176 5734984 1624904 5735760 1624736 5736008 +1624904 5735760 1625176 5734984 1624608 5735568 1624736 5736008 +1625176 5734984 1624904 5735760 1624928 5735800 1625440 5735200 +1624904 5735760 1624736 5736008 1624928 5735800 1625440 5735200 +1624928 5735800 1625576 5735360 1625440 5735200 1624904 5735760 +1624928 5735800 1625088 5735952 1625576 5735360 1624904 5735760 +1624928 5735800 1625576 5735360 1624904 5735760 1624736 5736008 +1625440 5735200 1625176 5734984 1624904 5735760 1625576 5735360 +1625176 5734984 1624608 5735568 1624904 5735760 1625440 5735200 +1624608 5735568 1624904 5735760 1625176 5734984 1624520 5735400 +1624904 5735760 1624864 5735680 1624608 5735568 1624736 5736008 +1624904 5735760 1624864 5735680 1624736 5736008 1624928 5735800 +1624904 5735760 1625176 5734984 1624864 5735680 1624736 5736008 +1625176 5734984 1624864 5735680 1624904 5735760 1625440 5735200 +1624904 5735760 1625576 5735360 1625440 5735200 1624864 5735680 +1624904 5735760 1624928 5735800 1625576 5735360 1624864 5735680 +1624864 5735680 1624736 5736008 1624904 5735760 1625576 5735360 +1625440 5735200 1625176 5734984 1624864 5735680 1625576 5735360 +1624864 5735680 1625176 5734984 1624608 5735568 1624736 5736008 +1625176 5734984 1624608 5735568 1624864 5735680 1625440 5735200 +1624608 5735568 1624864 5735680 1625176 5734984 1624520 5735400 +1625176 5734984 1625040 5734896 1624520 5735400 1624864 5735680 +1624608 5735568 1624736 5736008 1624864 5735680 1624520 5735400 +1624864 5735680 1625440 5735200 1625176 5734984 1624520 5735400 +1625440 5735200 1624880 5735664 1624864 5735680 1625576 5735360 +1624864 5735680 1624904 5735760 1625576 5735360 1624880 5735664 +1624904 5735760 1624928 5735800 1625576 5735360 1624880 5735664 +1624928 5735800 1625088 5735952 1625576 5735360 1624880 5735664 +1625088 5735952 1625736 5735632 1625576 5735360 1624880 5735664 +1624928 5735800 1625088 5735952 1624880 5735664 1624904 5735760 +1624904 5735760 1624928 5735800 1624880 5735664 1624864 5735680 +1625576 5735360 1625440 5735200 1624880 5735664 1625088 5735952 +1624864 5735680 1624880 5735664 1625176 5734984 1624520 5735400 +1625176 5734984 1625040 5734896 1624520 5735400 1624880 5735664 +1625040 5734896 1624432 5735296 1624520 5735400 1624880 5735664 +1624520 5735400 1624864 5735680 1624880 5735664 1625040 5734896 +1624880 5735664 1624520 5735400 1624864 5735680 1624904 5735760 +1624880 5735664 1625440 5735200 1625176 5734984 1625040 5734896 +1625440 5735200 1625176 5734984 1624880 5735664 1625576 5735360 +1624864 5735680 1624880 5735664 1624520 5735400 1624608 5735568 +1624864 5735680 1624880 5735664 1624608 5735568 1624736 5736008 +1624880 5735664 1625040 5734896 1624520 5735400 1624608 5735568 +1624864 5735680 1624904 5735760 1624880 5735664 1624608 5735568 +1624880 5735664 1624968 5735512 1625176 5734984 1625040 5734896 +1624880 5735664 1624968 5735512 1625040 5734896 1624520 5735400 +1625040 5734896 1624432 5735296 1624520 5735400 1624968 5735512 +1624880 5735664 1624968 5735512 1624520 5735400 1624608 5735568 +1624968 5735512 1625040 5734896 1624520 5735400 1624608 5735568 +1624968 5735512 1625176 5734984 1625040 5734896 1624520 5735400 +1624880 5735664 1625440 5735200 1624968 5735512 1624608 5735568 +1625440 5735200 1624968 5735512 1624880 5735664 1625576 5735360 +1624880 5735664 1625088 5735952 1625576 5735360 1624968 5735512 +1624880 5735664 1624928 5735800 1625088 5735952 1624968 5735512 +1625088 5735952 1625736 5735632 1625576 5735360 1624968 5735512 +1624880 5735664 1624904 5735760 1624928 5735800 1624968 5735512 +1624928 5735800 1625088 5735952 1624968 5735512 1624904 5735760 +1624880 5735664 1624864 5735680 1624904 5735760 1624968 5735512 +1625088 5735952 1625576 5735360 1624968 5735512 1624928 5735800 +1624968 5735512 1624608 5735568 1624880 5735664 1624904 5735760 +1625576 5735360 1625440 5735200 1624968 5735512 1625088 5735952 +1624968 5735512 1625440 5735200 1625176 5734984 1625040 5734896 +1625440 5735200 1625176 5734984 1624968 5735512 1625576 5735360 +1624880 5735664 1624968 5735512 1624608 5735568 1624864 5735680 +1624968 5735512 1625016 5735360 1625040 5734896 1624520 5735400 +1625040 5734896 1624432 5735296 1624520 5735400 1625016 5735360 +1624968 5735512 1625016 5735360 1624520 5735400 1624608 5735568 +1625040 5734896 1624728 5734744 1624432 5735296 1625016 5735360 +1624520 5735400 1624968 5735512 1625016 5735360 1624432 5735296 +1625176 5734984 1625016 5735360 1624968 5735512 1625440 5735200 +1624968 5735512 1625440 5735200 1625016 5735360 1624520 5735400 +1624968 5735512 1625576 5735360 1625440 5735200 1625016 5735360 +1624968 5735512 1625088 5735952 1625576 5735360 1625016 5735360 +1625440 5735200 1625176 5734984 1625016 5735360 1625576 5735360 +1624968 5735512 1625576 5735360 1625016 5735360 1624520 5735400 +1625016 5735360 1625176 5734984 1625040 5734896 1624432 5735296 +1625176 5734984 1625040 5734896 1625016 5735360 1625440 5735200 +1625440 5735200 1625064 5735304 1625016 5735360 1625576 5735360 +1625016 5735360 1624968 5735512 1625576 5735360 1625064 5735304 +1624968 5735512 1625088 5735952 1625576 5735360 1625064 5735304 +1625576 5735360 1625440 5735200 1625064 5735304 1624968 5735512 +1625064 5735304 1625176 5734984 1625016 5735360 1624968 5735512 +1625016 5735360 1625064 5735304 1625176 5734984 1625040 5734896 +1625016 5735360 1625064 5735304 1625040 5734896 1624432 5735296 +1625016 5735360 1624968 5735512 1625064 5735304 1625040 5734896 +1625064 5735304 1625440 5735200 1625176 5734984 1625040 5734896 +1625440 5735200 1625176 5734984 1625064 5735304 1625576 5735360 +1625576 5735360 1625128 5735296 1625064 5735304 1624968 5735512 +1625576 5735360 1625128 5735296 1624968 5735512 1625088 5735952 +1625064 5735304 1625016 5735360 1624968 5735512 1625128 5735296 +1624968 5735512 1625576 5735360 1625128 5735296 1625016 5735360 +1625128 5735296 1625440 5735200 1625064 5735304 1625016 5735360 +1625064 5735304 1625128 5735296 1625440 5735200 1625176 5734984 +1625064 5735304 1625128 5735296 1625176 5734984 1625040 5734896 +1625064 5735304 1625016 5735360 1625128 5735296 1625176 5734984 +1625128 5735296 1625576 5735360 1625440 5735200 1625176 5734984 +1625576 5735360 1625440 5735200 1625128 5735296 1624968 5735512 +1625576 5735360 1625296 5735368 1624968 5735512 1625088 5735952 +1625576 5735360 1625296 5735368 1625088 5735952 1625736 5735632 +1624968 5735512 1624928 5735800 1625088 5735952 1625296 5735368 +1625296 5735368 1624968 5735512 1625088 5735952 1625736 5735632 +1624968 5735512 1625296 5735368 1625128 5735296 1625016 5735360 +1625128 5735296 1625064 5735304 1625016 5735360 1625296 5735368 +1625296 5735368 1625576 5735360 1625128 5735296 1625016 5735360 +1625128 5735296 1625296 5735368 1625576 5735360 1625440 5735200 +1625128 5735296 1625296 5735368 1625440 5735200 1625176 5734984 +1625128 5735296 1625016 5735360 1625296 5735368 1625440 5735200 +1625576 5735360 1625440 5735200 1625296 5735368 1625736 5735632 +1625296 5735368 1625016 5735360 1624968 5735512 1625088 5735952 +1625088 5735952 1625192 5736144 1625736 5735632 1625296 5735368 +1625736 5735632 1625448 5735448 1625296 5735368 1625088 5735952 +1625296 5735368 1624968 5735512 1625088 5735952 1625448 5735448 +1625088 5735952 1625736 5735632 1625448 5735448 1624968 5735512 +1624968 5735512 1624928 5735800 1625088 5735952 1625448 5735448 +1625296 5735368 1625448 5735448 1625576 5735360 1625440 5735200 +1625296 5735368 1625448 5735448 1625440 5735200 1625128 5735296 +1625448 5735448 1625440 5735200 1625296 5735368 1624968 5735512 +1625296 5735368 1625016 5735360 1624968 5735512 1625448 5735448 +1625448 5735448 1625736 5735632 1625576 5735360 1625440 5735200 +1625736 5735632 1625576 5735360 1625448 5735448 1625088 5735952 +1625736 5735632 1625448 5735448 1625088 5735952 1625192 5736144 +1625088 5735952 1625488 5735496 1625448 5735448 1624968 5735512 +1625088 5735952 1625488 5735496 1624968 5735512 1624928 5735800 +1625448 5735448 1625296 5735368 1624968 5735512 1625488 5735496 +1624968 5735512 1625088 5735952 1625488 5735496 1625296 5735368 +1625296 5735368 1625016 5735360 1624968 5735512 1625488 5735496 +1625488 5735496 1625736 5735632 1625448 5735448 1625296 5735368 +1625448 5735448 1625488 5735496 1625736 5735632 1625576 5735360 +1625448 5735448 1625488 5735496 1625576 5735360 1625440 5735200 +1625448 5735448 1625296 5735368 1625488 5735496 1625576 5735360 +1625488 5735496 1625088 5735952 1625736 5735632 1625576 5735360 +1625088 5735952 1625736 5735632 1625488 5735496 1624968 5735512 +1625736 5735632 1625488 5735496 1625088 5735952 1625192 5736144 +1625736 5735632 1625600 5735728 1625192 5736144 1625800 5735688 +1625736 5735632 1625088 5735952 1625600 5735728 1625800 5735688 +1625600 5735728 1625088 5735952 1625192 5736144 1625800 5735688 +1625192 5736144 1626048 5736096 1625800 5735688 1625600 5735728 +1625192 5736144 1625448 5736544 1626048 5736096 1625600 5735728 +1625448 5736544 1625752 5736648 1626048 5736096 1625600 5735728 +1626048 5736096 1625896 5735736 1625800 5735688 1625600 5735728 +1626048 5736096 1626064 5736040 1625896 5735736 1625600 5735728 +1625800 5735688 1625736 5735632 1625600 5735728 1625896 5735736 +1625192 5736144 1625448 5736544 1625600 5735728 1625088 5735952 +1625192 5736144 1625152 5736368 1625448 5736544 1625600 5735728 +1626048 5736096 1625896 5735736 1625600 5735728 1625448 5736544 +1625088 5735952 1625600 5735728 1625736 5735632 1625488 5735496 +1625088 5735952 1625192 5736144 1625600 5735728 1625488 5735496 +1625736 5735632 1625576 5735360 1625488 5735496 1625600 5735728 +1625600 5735728 1625800 5735688 1625736 5735632 1625488 5735496 +1625088 5735952 1625600 5735728 1625488 5735496 1624968 5735512 +1625448 5736544 1625680 5735832 1625600 5735728 1625192 5736144 +1626048 5736096 1625680 5735832 1625448 5736544 1625752 5736648 +1625448 5736544 1626048 5736096 1625680 5735832 1625192 5736144 +1625600 5735728 1625088 5735952 1625192 5736144 1625680 5735832 +1625680 5735832 1626048 5736096 1625600 5735728 1625192 5736144 +1625448 5736544 1625680 5735832 1625192 5736144 1625152 5736368 +1625600 5735728 1625680 5735832 1626048 5736096 1625896 5735736 +1626048 5736096 1626064 5736040 1625896 5735736 1625680 5735832 +1625600 5735728 1625680 5735832 1625896 5735736 1625800 5735688 +1625600 5735728 1625680 5735832 1625800 5735688 1625736 5735632 +1625680 5735832 1625896 5735736 1625800 5735688 1625736 5735632 +1625680 5735832 1625448 5736544 1626048 5736096 1626064 5736040 +1625600 5735728 1625680 5735832 1625736 5735632 1625488 5735496 +1625600 5735728 1625192 5736144 1625680 5735832 1625736 5735632 +1625896 5735736 1625800 5735688 1625680 5735832 1626064 5736040 +1626064 5736040 1625984 5735736 1625896 5735736 1625680 5735832 +1626048 5736096 1625840 5735952 1625448 5736544 1625752 5736648 +1626048 5736096 1625840 5735952 1625752 5736648 1626056 5736464 +1625840 5735952 1625448 5736544 1625752 5736648 1626056 5736464 +1626048 5736096 1625840 5735952 1626056 5736464 1626072 5736440 +1625680 5735832 1625840 5735952 1626048 5736096 1626064 5736040 +1625680 5735832 1625840 5735952 1626064 5736040 1625896 5735736 +1625840 5735952 1626048 5736096 1626064 5736040 1625896 5735736 +1625680 5735832 1625448 5736544 1625840 5735952 1625896 5735736 +1625448 5736544 1625840 5735952 1625680 5735832 1625192 5736144 +1625680 5735832 1625600 5735728 1625192 5736144 1625840 5735952 +1625840 5735952 1625896 5735736 1625680 5735832 1625192 5736144 +1626048 5736096 1626064 5736040 1625840 5735952 1626056 5736464 +1625840 5735952 1625192 5736144 1625448 5736544 1625752 5736648 +1625752 5736648 1626032 5736528 1626056 5736464 1625840 5735952 +1625448 5736544 1625840 5735952 1625192 5736144 1625152 5736368 +1625680 5735832 1625840 5735952 1625896 5735736 1625800 5735688 +1626064 5736040 1625984 5735736 1625896 5735736 1625840 5735952 +1625896 5735736 1625680 5735832 1625840 5735952 1625984 5735736 +1626064 5736040 1625984 5735736 1625840 5735952 1626048 5736096 +1626064 5736040 1626096 5736000 1625984 5735736 1625840 5735952 +1626064 5736040 1626096 5736000 1625840 5735952 1626048 5736096 +1625984 5735736 1625896 5735736 1625840 5735952 1626096 5736000 +1626096 5736000 1626240 5735904 1625984 5735736 1625840 5735952 +1625840 5735952 1625856 5735992 1626056 5736464 1626048 5736096 +1625752 5736648 1625856 5735992 1625840 5735952 1625448 5736544 +1626056 5736464 1626072 5736440 1626048 5736096 1625856 5735992 +1626048 5736096 1625840 5735952 1625856 5735992 1626072 5736440 +1625840 5735952 1625856 5735992 1626048 5736096 1626064 5736040 +1625856 5735992 1626072 5736440 1626048 5736096 1626064 5736040 +1625840 5735952 1625856 5735992 1626064 5736040 1626096 5736000 +1625856 5735992 1626048 5736096 1626064 5736040 1626096 5736000 +1625840 5735952 1625448 5736544 1625856 5735992 1626096 5736000 +1625840 5735952 1625192 5736144 1625448 5736544 1625856 5735992 +1625448 5736544 1625752 5736648 1625856 5735992 1625192 5736144 +1625840 5735952 1625680 5735832 1625192 5736144 1625856 5735992 +1625680 5735832 1625600 5735728 1625192 5736144 1625856 5735992 +1625840 5735952 1625680 5735832 1625856 5735992 1626096 5736000 +1625192 5736144 1625448 5736544 1625856 5735992 1625680 5735832 +1625856 5735992 1625752 5736648 1626056 5736464 1626072 5736440 +1625752 5736648 1626056 5736464 1625856 5735992 1625448 5736544 +1626056 5736464 1625856 5735992 1625752 5736648 1626032 5736528 +1625192 5736144 1625152 5736368 1625448 5736544 1625856 5735992 +1625840 5735952 1625856 5735992 1626096 5736000 1625984 5735736 +1625448 5736544 1625848 5736032 1625856 5735992 1625192 5736144 +1625856 5735992 1625680 5735832 1625192 5736144 1625848 5736032 +1625680 5735832 1625600 5735728 1625192 5736144 1625848 5736032 +1625192 5736144 1625448 5736544 1625848 5736032 1625680 5735832 +1625856 5735992 1625840 5735952 1625680 5735832 1625848 5736032 +1625680 5735832 1625192 5736144 1625848 5736032 1625840 5735952 +1625848 5736032 1625752 5736648 1625856 5735992 1625840 5735952 +1625856 5735992 1625848 5736032 1625752 5736648 1626056 5736464 +1625856 5735992 1625848 5736032 1626056 5736464 1626072 5736440 +1625856 5735992 1625848 5736032 1626072 5736440 1626048 5736096 +1625856 5735992 1625848 5736032 1626048 5736096 1626064 5736040 +1625848 5736032 1626072 5736440 1626048 5736096 1626064 5736040 +1625856 5735992 1625848 5736032 1626064 5736040 1626096 5736000 +1625848 5736032 1626056 5736464 1626072 5736440 1626048 5736096 +1625856 5735992 1625840 5735952 1625848 5736032 1626064 5736040 +1625848 5736032 1625752 5736648 1626056 5736464 1626072 5736440 +1625848 5736032 1625448 5736544 1625752 5736648 1626056 5736464 +1625448 5736544 1625752 5736648 1625848 5736032 1625192 5736144 +1625752 5736648 1626032 5736528 1626056 5736464 1625848 5736032 +1625448 5736544 1625848 5736032 1625192 5736144 1625152 5736368 +1625848 5736032 1625808 5736088 1625752 5736648 1626056 5736464 +1625848 5736032 1625808 5736088 1626056 5736464 1626072 5736440 +1625848 5736032 1625808 5736088 1626072 5736440 1626048 5736096 +1625848 5736032 1625808 5736088 1626048 5736096 1626064 5736040 +1625808 5736088 1626056 5736464 1626072 5736440 1626048 5736096 +1625808 5736088 1625752 5736648 1626056 5736464 1626072 5736440 +1625848 5736032 1625448 5736544 1625808 5736088 1626048 5736096 +1625448 5736544 1625808 5736088 1625848 5736032 1625192 5736144 +1625848 5736032 1625680 5735832 1625192 5736144 1625808 5736088 +1625680 5735832 1625600 5735728 1625192 5736144 1625808 5736088 +1625848 5736032 1625840 5735952 1625680 5735832 1625808 5736088 +1625680 5735832 1625192 5736144 1625808 5736088 1625840 5735952 +1625848 5736032 1625856 5735992 1625840 5735952 1625808 5736088 +1625808 5736088 1626048 5736096 1625848 5736032 1625840 5735952 +1625192 5736144 1625448 5736544 1625808 5736088 1625680 5735832 +1625808 5736088 1625448 5736544 1625752 5736648 1626056 5736464 +1625448 5736544 1625752 5736648 1625808 5736088 1625192 5736144 +1625752 5736648 1626032 5736528 1626056 5736464 1625808 5736088 +1625448 5736544 1625808 5736088 1625192 5736144 1625152 5736368 +1625192 5736144 1625744 5736128 1625808 5736088 1625680 5735832 +1625192 5736144 1625744 5736128 1625680 5735832 1625600 5735728 +1625808 5736088 1625840 5735952 1625680 5735832 1625744 5736128 +1625808 5736088 1625848 5736032 1625840 5735952 1625744 5736128 +1625680 5735832 1625192 5736144 1625744 5736128 1625840 5735952 +1625744 5736128 1625448 5736544 1625808 5736088 1625840 5735952 +1625808 5736088 1625744 5736128 1625448 5736544 1625752 5736648 +1625808 5736088 1625744 5736128 1625752 5736648 1626056 5736464 +1625808 5736088 1625744 5736128 1626056 5736464 1626072 5736440 +1625808 5736088 1625744 5736128 1626072 5736440 1626048 5736096 +1625744 5736128 1625752 5736648 1626056 5736464 1626072 5736440 +1625808 5736088 1625840 5735952 1625744 5736128 1626072 5736440 +1625744 5736128 1625448 5736544 1625752 5736648 1626056 5736464 +1625744 5736128 1625192 5736144 1625448 5736544 1625752 5736648 +1625192 5736144 1625448 5736544 1625744 5736128 1625680 5735832 +1625752 5736648 1626032 5736528 1626056 5736464 1625744 5736128 +1625448 5736544 1625744 5736128 1625192 5736144 1625152 5736368 +1625744 5736128 1625512 5736176 1625448 5736544 1625752 5736648 +1625744 5736128 1625512 5736176 1625752 5736648 1626056 5736464 +1625744 5736128 1625192 5736144 1625512 5736176 1625752 5736648 +1625192 5736144 1625512 5736176 1625744 5736128 1625680 5735832 +1625192 5736144 1625512 5736176 1625680 5735832 1625600 5735728 +1625744 5736128 1625840 5735952 1625680 5735832 1625512 5736176 +1625512 5736176 1625752 5736648 1625744 5736128 1625680 5735832 +1625512 5736176 1625744 5736128 1625680 5735832 1625600 5735728 +1625512 5736176 1625192 5736144 1625448 5736544 1625752 5736648 +1625192 5736144 1625448 5736544 1625512 5736176 1625600 5735728 +1625192 5736144 1625512 5736176 1625600 5735728 1625088 5735952 +1625512 5736176 1625680 5735832 1625600 5735728 1625088 5735952 +1625600 5735728 1625488 5735496 1625088 5735952 1625512 5736176 +1625192 5736144 1625448 5736544 1625512 5736176 1625088 5735952 +1625448 5736544 1625512 5736176 1625192 5736144 1625152 5736368 +1625192 5736144 1624896 5736208 1625152 5736368 1625512 5736176 +1625448 5736544 1625752 5736648 1625512 5736176 1625152 5736368 +1625512 5736176 1625088 5735952 1625192 5736144 1625152 5736368 +1625152 5736368 1625472 5736176 1625192 5736144 1624896 5736208 +1625192 5736144 1625472 5736176 1625512 5736176 1625088 5735952 +1625472 5736176 1625152 5736368 1625512 5736176 1625088 5735952 +1625192 5736144 1625152 5736368 1625472 5736176 1625088 5735952 +1625512 5736176 1625600 5735728 1625088 5735952 1625472 5736176 +1625512 5736176 1625680 5735832 1625600 5735728 1625472 5736176 +1625600 5735728 1625488 5735496 1625088 5735952 1625472 5736176 +1625512 5736176 1625744 5736128 1625680 5735832 1625472 5736176 +1625512 5736176 1625680 5735832 1625472 5736176 1625152 5736368 +1625088 5735952 1625192 5736144 1625472 5736176 1625600 5735728 +1625600 5735728 1625088 5735952 1625472 5736176 1625680 5735832 +1625512 5736176 1625472 5736176 1625152 5736368 1625448 5736544 +1625512 5736176 1625472 5736176 1625448 5736544 1625752 5736648 +1625512 5736176 1625680 5735832 1625472 5736176 1625448 5736544 +1625472 5736176 1625192 5736144 1625152 5736368 1625448 5736544 +1625152 5736368 1625328 5736224 1625192 5736144 1624896 5736208 +1625472 5736176 1625328 5736224 1625152 5736368 1625448 5736544 +1625472 5736176 1625192 5736144 1625328 5736224 1625448 5736544 +1625192 5736144 1625328 5736224 1625472 5736176 1625088 5735952 +1625328 5736224 1625192 5736144 1625152 5736368 1625448 5736544 +1625472 5736176 1625328 5736224 1625448 5736544 1625512 5736176 +1625152 5736368 1625256 5736208 1625192 5736144 1624896 5736208 +1625328 5736224 1625256 5736208 1625152 5736368 1625448 5736544 +1625192 5736144 1625256 5736208 1625328 5736224 1625472 5736176 +1627752 5730520 1629216 5731112 1629872 5726768 1629776 5726856 +1629216 5731112 1629416 5736656 1629872 5726768 1629776 5726856 +1627752 5730520 1629416 5736656 1629216 5731112 1629776 5726856 +1627752 5730520 1629216 5731112 1629776 5726856 1629584 5726976 +1627752 5730520 1629416 5736656 1629216 5731112 1629584 5726976 +1629216 5731112 1629872 5726768 1629776 5726856 1629584 5726976 +1629416 5736656 1629216 5731112 1627752 5730520 1629320 5736568 +1629416 5736656 1629872 5726768 1629216 5731112 1629320 5736568 +1629216 5731112 1629584 5726976 1627752 5730520 1629320 5736568 +1627752 5730520 1627744 5730544 1629320 5736568 1629216 5731112 +1627752 5730520 1627744 5730544 1629216 5731112 1629584 5726976 +1629320 5736568 1629416 5736656 1629216 5731112 1627744 5730544 +1629872 5726768 1629216 5731112 1629416 5736656 1629928 5726696 +1629872 5726768 1629776 5726856 1629216 5731112 1629928 5726696 +1629216 5731112 1629320 5736568 1629416 5736656 1629928 5726696 +1629416 5736656 1629432 5736720 1629928 5726696 1629216 5731112 +1629416 5736656 1629432 5736720 1629216 5731112 1629320 5736568 +1629928 5726696 1629872 5726768 1629216 5731112 1629432 5736720 +1627752 5730520 1629216 5731112 1629584 5726976 1627736 5730496 +1627752 5730520 1627744 5730544 1629216 5731112 1627736 5730496 +1629216 5731112 1629776 5726856 1629584 5726976 1627736 5730496 +1629584 5726976 1627648 5730440 1627736 5730496 1629216 5731112 +1627744 5730544 1629288 5736552 1629320 5736568 1629216 5731112 +1627744 5730544 1629008 5736448 1629288 5736552 1629216 5731112 +1627744 5730544 1629008 5736448 1629216 5731112 1627752 5730520 +1629320 5736568 1629416 5736656 1629216 5731112 1629288 5736552 +1627744 5730544 1627720 5730568 1629008 5736448 1629216 5731112 +1629008 5736448 1629288 5736552 1629216 5731112 1627720 5730568 +1627720 5730568 1628488 5736312 1629008 5736448 1629216 5731112 +1629008 5736448 1629288 5736552 1629216 5731112 1628488 5736312 +1627720 5730568 1627856 5736056 1628488 5736312 1629216 5731112 +1628488 5736312 1629008 5736448 1629216 5731112 1627856 5736056 +1627744 5730544 1627720 5730568 1629216 5731112 1627752 5730520 +1627720 5730568 1627856 5736056 1629216 5731112 1627744 5730544 +1627720 5730568 1627656 5730600 1627856 5736056 1629216 5731112 +1627856 5736056 1628488 5736312 1629216 5731112 1627656 5730600 +1627720 5730568 1627656 5730600 1629216 5731112 1627744 5730544 +1627856 5736056 1628256 5736240 1628488 5736312 1629216 5731112 +1627656 5730600 1627384 5735808 1627856 5736056 1629216 5731112 +1627656 5730600 1626712 5735520 1627384 5735808 1629216 5731112 +1627656 5730600 1627632 5730600 1626712 5735520 1629216 5731112 +1627856 5736056 1628488 5736312 1629216 5731112 1627384 5735808 +1627656 5730600 1626712 5735520 1629216 5731112 1627720 5730568 +1627384 5735808 1627856 5736056 1629216 5731112 1626712 5735520 +1629288 5736552 1629320 5736568 1629216 5731112 1629008 5736448 +1629432 5736720 1629944 5726624 1629928 5726696 1629216 5731112 +1629216 5731112 1629304 5731208 1629928 5726696 1629872 5726768 +1629216 5731112 1629304 5731208 1629872 5726768 1629776 5726856 +1629216 5731112 1629432 5736720 1629304 5731208 1629776 5726856 +1629304 5731208 1629432 5736720 1629928 5726696 1629872 5726768 +1629216 5731112 1629304 5731208 1629776 5726856 1629584 5726976 +1629304 5731208 1629928 5726696 1629872 5726768 1629776 5726856 +1629432 5736720 1629304 5731208 1629216 5731112 1629416 5736656 +1629216 5731112 1629320 5736568 1629416 5736656 1629304 5731208 +1629304 5731208 1629776 5726856 1629216 5731112 1629320 5736568 +1629432 5736720 1629928 5726696 1629304 5731208 1629416 5736656 +1629216 5731112 1629288 5736552 1629320 5736568 1629304 5731208 +1629320 5736568 1629416 5736656 1629304 5731208 1629288 5736552 +1629216 5731112 1629288 5736552 1629304 5731208 1629776 5726856 +1629416 5736656 1629432 5736720 1629304 5731208 1629320 5736568 +1629216 5731112 1629008 5736448 1629288 5736552 1629304 5731208 +1629216 5731112 1628488 5736312 1629008 5736448 1629304 5731208 +1629216 5731112 1628488 5736312 1629304 5731208 1629776 5726856 +1629216 5731112 1627856 5736056 1628488 5736312 1629304 5731208 +1628488 5736312 1629008 5736448 1629304 5731208 1627856 5736056 +1629216 5731112 1627856 5736056 1629304 5731208 1629776 5726856 +1629216 5731112 1627384 5735808 1627856 5736056 1629304 5731208 +1629216 5731112 1627384 5735808 1629304 5731208 1629776 5726856 +1627856 5736056 1628488 5736312 1629304 5731208 1627384 5735808 +1629288 5736552 1629320 5736568 1629304 5731208 1629008 5736448 +1627856 5736056 1628256 5736240 1628488 5736312 1629304 5731208 +1628488 5736312 1629008 5736448 1629304 5731208 1628256 5736240 +1627856 5736056 1628256 5736240 1629304 5731208 1627384 5735808 +1629216 5731112 1626712 5735520 1627384 5735808 1629304 5731208 +1629216 5731112 1627656 5730600 1626712 5735520 1629304 5731208 +1627656 5730600 1627632 5730600 1626712 5735520 1629304 5731208 +1629216 5731112 1627656 5730600 1629304 5731208 1629776 5726856 +1627384 5735808 1627856 5736056 1629304 5731208 1626712 5735520 +1629216 5731112 1627720 5730568 1627656 5730600 1629304 5731208 +1626712 5735520 1627384 5735808 1629304 5731208 1627656 5730600 +1629008 5736448 1629288 5736552 1629304 5731208 1628488 5736312 +1629928 5726696 1629304 5731208 1629432 5736720 1629944 5726624 +1629928 5726696 1629872 5726768 1629304 5731208 1629944 5726624 +1629304 5731208 1629416 5736656 1629432 5736720 1629944 5726624 +1629432 5736720 1631312 5744824 1629944 5726624 1629304 5731208 +1629432 5736720 1629320 5731248 1629304 5731208 1629416 5736656 +1629320 5731248 1629944 5726624 1629304 5731208 1629416 5736656 +1629432 5736720 1629944 5726624 1629320 5731248 1629416 5736656 +1629304 5731208 1629320 5736568 1629416 5736656 1629320 5731248 +1629304 5731208 1629288 5736552 1629320 5736568 1629320 5731248 +1629304 5731208 1629288 5736552 1629320 5731248 1629944 5726624 +1629416 5736656 1629432 5736720 1629320 5731248 1629320 5736568 +1629304 5731208 1629008 5736448 1629288 5736552 1629320 5731248 +1629288 5736552 1629320 5736568 1629320 5731248 1629008 5736448 +1629304 5731208 1629008 5736448 1629320 5731248 1629944 5726624 +1629320 5736568 1629416 5736656 1629320 5731248 1629288 5736552 +1629304 5731208 1628488 5736312 1629008 5736448 1629320 5731248 +1629304 5731208 1628256 5736240 1628488 5736312 1629320 5731248 +1629304 5731208 1628256 5736240 1629320 5731248 1629944 5726624 +1629008 5736448 1629288 5736552 1629320 5731248 1628488 5736312 +1629304 5731208 1627856 5736056 1628256 5736240 1629320 5731248 +1628256 5736240 1628488 5736312 1629320 5731248 1627856 5736056 +1629304 5731208 1627856 5736056 1629320 5731248 1629944 5726624 +1629304 5731208 1627384 5735808 1627856 5736056 1629320 5731248 +1629304 5731208 1627384 5735808 1629320 5731248 1629944 5726624 +1629304 5731208 1626712 5735520 1627384 5735808 1629320 5731248 +1629304 5731208 1626712 5735520 1629320 5731248 1629944 5726624 +1627384 5735808 1627856 5736056 1629320 5731248 1626712 5735520 +1627856 5736056 1628256 5736240 1629320 5731248 1627384 5735808 +1629304 5731208 1627656 5730600 1626712 5735520 1629320 5731248 +1627656 5730600 1627632 5730600 1626712 5735520 1629320 5731248 +1627632 5730600 1626480 5735432 1626712 5735520 1629320 5731248 +1629304 5731208 1629216 5731112 1627656 5730600 1629320 5731248 +1629304 5731208 1629216 5731112 1629320 5731248 1629944 5726624 +1626712 5735520 1627384 5735808 1629320 5731248 1627632 5730600 +1629216 5731112 1627720 5730568 1627656 5730600 1629320 5731248 +1627656 5730600 1627632 5730600 1629320 5731248 1629216 5731112 +1628488 5736312 1629008 5736448 1629320 5731248 1628256 5736240 +1629944 5726624 1629320 5731248 1629432 5736720 1631312 5744824 +1629304 5731208 1629320 5731248 1629944 5726624 1629928 5726696 +1629304 5731208 1629320 5731248 1629928 5726696 1629872 5726768 +1629304 5731208 1629216 5731112 1629320 5731248 1629928 5726696 +1629320 5731248 1629432 5736720 1629944 5726624 1629928 5726696 +1626712 5735520 1629272 5731304 1627632 5730600 1626480 5735432 +1627632 5730600 1629272 5731304 1629320 5731248 1627656 5730600 +1629272 5731304 1626712 5735520 1629320 5731248 1627656 5730600 +1627632 5730600 1626712 5735520 1629272 5731304 1627656 5730600 +1629320 5731248 1629272 5731304 1626712 5735520 1627384 5735808 +1629320 5731248 1627656 5730600 1629272 5731304 1627384 5735808 +1629272 5731304 1627632 5730600 1626712 5735520 1627384 5735808 +1629320 5731248 1629272 5731304 1627384 5735808 1627856 5736056 +1629320 5731248 1627656 5730600 1629272 5731304 1627856 5736056 +1629272 5731304 1626712 5735520 1627384 5735808 1627856 5736056 +1629320 5731248 1629272 5731304 1627856 5736056 1628256 5736240 +1629320 5731248 1629272 5731304 1628256 5736240 1628488 5736312 +1629320 5731248 1627656 5730600 1629272 5731304 1628488 5736312 +1629272 5731304 1627384 5735808 1627856 5736056 1628256 5736240 +1629272 5731304 1627856 5736056 1628256 5736240 1628488 5736312 +1629320 5731248 1629216 5731112 1627656 5730600 1629272 5731304 +1627656 5730600 1627632 5730600 1629272 5731304 1629216 5731112 +1629320 5731248 1629304 5731208 1629216 5731112 1629272 5731304 +1629320 5731248 1629304 5731208 1629272 5731304 1628488 5736312 +1629216 5731112 1627720 5730568 1627656 5730600 1629272 5731304 +1627656 5730600 1627632 5730600 1629272 5731304 1627720 5730568 +1629216 5731112 1627744 5730544 1627720 5730568 1629272 5731304 +1629216 5731112 1627720 5730568 1629272 5731304 1629304 5731208 +1629320 5731248 1629272 5731304 1628488 5736312 1629008 5736448 +1629272 5731304 1628256 5736240 1628488 5736312 1629008 5736448 +1629320 5731248 1629304 5731208 1629272 5731304 1629008 5736448 +1629320 5731248 1629272 5731304 1629008 5736448 1629288 5736552 +1629320 5731248 1629272 5731304 1629288 5736552 1629320 5736568 +1629320 5731248 1629304 5731208 1629272 5731304 1629320 5736568 +1629272 5731304 1629008 5736448 1629288 5736552 1629320 5736568 +1629320 5731248 1629272 5731304 1629320 5736568 1629416 5736656 +1629272 5731304 1629288 5736552 1629320 5736568 1629416 5736656 +1629320 5731248 1629272 5731304 1629416 5736656 1629432 5736720 +1629320 5731248 1629304 5731208 1629272 5731304 1629416 5736656 +1629272 5731304 1628488 5736312 1629008 5736448 1629288 5736552 +1626712 5735520 1629208 5731336 1627632 5730600 1626480 5735432 +1627632 5730600 1626328 5735392 1626480 5735432 1629208 5731336 +1629272 5731304 1629208 5731336 1626712 5735520 1627384 5735808 +1629272 5731304 1627632 5730600 1629208 5731336 1627384 5735808 +1627632 5730600 1629208 5731336 1629272 5731304 1627656 5730600 +1629272 5731304 1627720 5730568 1627656 5730600 1629208 5731336 +1629208 5731336 1627384 5735808 1629272 5731304 1627720 5730568 +1627656 5730600 1627632 5730600 1629208 5731336 1627720 5730568 +1626712 5735520 1627384 5735808 1629208 5731336 1626480 5735432 +1629208 5731336 1627656 5730600 1627632 5730600 1626480 5735432 +1629272 5731304 1629208 5731336 1627384 5735808 1627856 5736056 +1629208 5731336 1626712 5735520 1627384 5735808 1627856 5736056 +1629272 5731304 1627720 5730568 1629208 5731336 1627856 5736056 +1629272 5731304 1629208 5731336 1627856 5736056 1628256 5736240 +1629272 5731304 1627720 5730568 1629208 5731336 1628256 5736240 +1629208 5731336 1627384 5735808 1627856 5736056 1628256 5736240 +1629272 5731304 1629216 5731112 1627720 5730568 1629208 5731336 +1627720 5730568 1627656 5730600 1629208 5731336 1629216 5731112 +1629272 5731304 1629216 5731112 1629208 5731336 1628256 5736240 +1629216 5731112 1627744 5730544 1627720 5730568 1629208 5731336 +1629272 5731304 1629208 5731336 1628256 5736240 1628488 5736312 +1629272 5731304 1629208 5731336 1628488 5736312 1629008 5736448 +1629272 5731304 1629216 5731112 1629208 5731336 1629008 5736448 +1629208 5731336 1627856 5736056 1628256 5736240 1628488 5736312 +1629208 5731336 1628256 5736240 1628488 5736312 1629008 5736448 +1629272 5731304 1629304 5731208 1629216 5731112 1629208 5731336 +1629272 5731304 1629320 5731248 1629304 5731208 1629208 5731336 +1629272 5731304 1629304 5731208 1629208 5731336 1629008 5736448 +1629216 5731112 1627720 5730568 1629208 5731336 1629304 5731208 +1629272 5731304 1629208 5731336 1629008 5736448 1629288 5736552 +1629208 5731336 1628488 5736312 1629008 5736448 1629288 5736552 +1629272 5731304 1629304 5731208 1629208 5731336 1629288 5736552 +1629272 5731304 1629208 5731336 1629288 5736552 1629320 5736568 +1626480 5735432 1628976 5731296 1627632 5730600 1626328 5735392 +1629208 5731336 1628976 5731296 1626480 5735432 1626712 5735520 +1629208 5731336 1628976 5731296 1626712 5735520 1627384 5735808 +1628976 5731296 1626480 5735432 1626712 5735520 1627384 5735808 +1629208 5731336 1628976 5731296 1627384 5735808 1627856 5736056 +1629208 5731336 1627632 5730600 1628976 5731296 1627384 5735808 +1627632 5730600 1628976 5731296 1629208 5731336 1627656 5730600 +1629208 5731336 1627720 5730568 1627656 5730600 1628976 5731296 +1629208 5731336 1629216 5731112 1627720 5730568 1628976 5731296 +1627720 5730568 1627656 5730600 1628976 5731296 1629216 5731112 +1628976 5731296 1627384 5735808 1629208 5731336 1629216 5731112 +1627656 5730600 1627632 5730600 1628976 5731296 1627720 5730568 +1628976 5731296 1627632 5730600 1626480 5735432 1626712 5735520 +1627632 5730600 1626480 5735432 1628976 5731296 1627656 5730600 +1629216 5731112 1627744 5730544 1627720 5730568 1628976 5731296 +1629216 5731112 1627744 5730544 1628976 5731296 1629208 5731336 +1627720 5730568 1627656 5730600 1628976 5731296 1627744 5730544 +1629216 5731112 1627752 5730520 1627744 5730544 1628976 5731296 +1629216 5731112 1627752 5730520 1628976 5731296 1629208 5731336 +1629216 5731112 1627736 5730496 1627752 5730520 1628976 5731296 +1627744 5730544 1627720 5730568 1628976 5731296 1627752 5730520 +1629208 5731336 1629304 5731208 1629216 5731112 1628976 5731296 +1626480 5735432 1628864 5731328 1627632 5730600 1626328 5735392 +1628976 5731296 1628864 5731328 1626480 5735432 1626712 5735520 +1628976 5731296 1628864 5731328 1626712 5735520 1627384 5735808 +1628976 5731296 1628864 5731328 1627384 5735808 1629208 5731336 +1628864 5731328 1626712 5735520 1627384 5735808 1629208 5731336 +1627384 5735808 1627856 5736056 1629208 5731336 1628864 5731328 +1627384 5735808 1627856 5736056 1628864 5731328 1626712 5735520 +1629208 5731336 1628976 5731296 1628864 5731328 1627856 5736056 +1628864 5731328 1626480 5735432 1626712 5735520 1627384 5735808 +1628976 5731296 1627632 5730600 1628864 5731328 1629208 5731336 +1627632 5730600 1628864 5731328 1628976 5731296 1627656 5730600 +1628976 5731296 1627720 5730568 1627656 5730600 1628864 5731328 +1628976 5731296 1627744 5730544 1627720 5730568 1628864 5731328 +1627720 5730568 1627656 5730600 1628864 5731328 1627744 5730544 +1628864 5731328 1629208 5731336 1628976 5731296 1627744 5730544 +1627656 5730600 1627632 5730600 1628864 5731328 1627720 5730568 +1628864 5731328 1627632 5730600 1626480 5735432 1626712 5735520 +1627632 5730600 1626480 5735432 1628864 5731328 1627656 5730600 +1627856 5736056 1628256 5736240 1629208 5731336 1628864 5731328 +1628976 5731296 1627752 5730520 1627744 5730544 1628864 5731328 +1627744 5730544 1627720 5730568 1628864 5731328 1627752 5730520 +1628976 5731296 1627752 5730520 1628864 5731328 1629208 5731336 +1628976 5731296 1629216 5731112 1627752 5730520 1628864 5731328 +1628976 5731296 1629208 5731336 1629216 5731112 1628864 5731328 +1629216 5731112 1627736 5730496 1627752 5730520 1628864 5731328 +1628976 5731296 1629216 5731112 1628864 5731328 1629208 5731336 +1627752 5730520 1627744 5730544 1628864 5731328 1629216 5731112 +1626480 5735432 1628768 5731368 1627632 5730600 1626328 5735392 +1627632 5730600 1627560 5730576 1626328 5735392 1628768 5731368 +1626480 5735432 1628864 5731328 1628768 5731368 1626328 5735392 +1628768 5731368 1628864 5731328 1627632 5730600 1626328 5735392 +1628864 5731328 1628768 5731368 1626480 5735432 1626712 5735520 +1628768 5731368 1626328 5735392 1626480 5735432 1626712 5735520 +1628864 5731328 1628768 5731368 1626712 5735520 1627384 5735808 +1628864 5731328 1628768 5731368 1627384 5735808 1627856 5736056 +1628864 5731328 1628768 5731368 1627856 5736056 1629208 5731336 +1628768 5731368 1627384 5735808 1627856 5736056 1629208 5731336 +1628864 5731328 1628768 5731368 1629208 5731336 1628976 5731296 +1628768 5731368 1626712 5735520 1627384 5735808 1627856 5736056 +1628768 5731368 1626480 5735432 1626712 5735520 1627384 5735808 +1628864 5731328 1627632 5730600 1628768 5731368 1629208 5731336 +1627632 5730600 1628768 5731368 1628864 5731328 1627656 5730600 +1627632 5730600 1626328 5735392 1628768 5731368 1627656 5730600 +1628864 5731328 1627720 5730568 1627656 5730600 1628768 5731368 +1628864 5731328 1627744 5730544 1627720 5730568 1628768 5731368 +1628864 5731328 1627752 5730520 1627744 5730544 1628768 5731368 +1627744 5730544 1627720 5730568 1628768 5731368 1627752 5730520 +1627720 5730568 1627656 5730600 1628768 5731368 1627744 5730544 +1628768 5731368 1629208 5731336 1628864 5731328 1627752 5730520 +1627656 5730600 1627632 5730600 1628768 5731368 1627720 5730568 +1627856 5736056 1628256 5736240 1629208 5731336 1628768 5731368 +1627856 5736056 1628256 5736240 1628768 5731368 1627384 5735808 +1629208 5731336 1628864 5731328 1628768 5731368 1628256 5736240 +1628256 5736240 1628488 5736312 1629208 5731336 1628768 5731368 +1629208 5731336 1628864 5731328 1628768 5731368 1628488 5736312 +1628256 5736240 1628488 5736312 1628768 5731368 1627856 5736056 +1628864 5731328 1629216 5731112 1627752 5730520 1628768 5731368 +1628488 5736312 1629008 5736448 1629208 5731336 1628768 5731368 +1626328 5735392 1628640 5731360 1627632 5730600 1627560 5730576 +1628768 5731368 1628640 5731360 1626328 5735392 1626480 5735432 +1628768 5731368 1628640 5731360 1626480 5735432 1626712 5735520 +1628640 5731360 1626328 5735392 1626480 5735432 1626712 5735520 +1628768 5731368 1627632 5730600 1628640 5731360 1626712 5735520 +1627632 5730600 1628640 5731360 1628768 5731368 1627656 5730600 +1628640 5731360 1626712 5735520 1628768 5731368 1627656 5730600 +1628768 5731368 1628640 5731360 1626712 5735520 1627384 5735808 +1628640 5731360 1626480 5735432 1626712 5735520 1627384 5735808 +1628768 5731368 1627656 5730600 1628640 5731360 1627384 5735808 +1628768 5731368 1628640 5731360 1627384 5735808 1627856 5736056 +1628768 5731368 1627720 5730568 1627656 5730600 1628640 5731360 +1628768 5731368 1627720 5730568 1628640 5731360 1627384 5735808 +1627656 5730600 1627632 5730600 1628640 5731360 1627720 5730568 +1628768 5731368 1627744 5730544 1627720 5730568 1628640 5731360 +1628768 5731368 1627744 5730544 1628640 5731360 1627384 5735808 +1628768 5731368 1627752 5730520 1627744 5730544 1628640 5731360 +1628768 5731368 1627752 5730520 1628640 5731360 1627384 5735808 +1628768 5731368 1628864 5731328 1627752 5730520 1628640 5731360 +1628768 5731368 1628864 5731328 1628640 5731360 1627384 5735808 +1627752 5730520 1627744 5730544 1628640 5731360 1628864 5731328 +1627744 5730544 1627720 5730568 1628640 5731360 1627752 5730520 +1627720 5730568 1627656 5730600 1628640 5731360 1627744 5730544 +1626328 5735392 1626480 5735432 1628640 5731360 1627560 5730576 +1628640 5731360 1627656 5730600 1627632 5730600 1627560 5730576 +1628864 5731328 1629216 5731112 1627752 5730520 1628640 5731360 +1629216 5731112 1627736 5730496 1627752 5730520 1628640 5731360 +1628864 5731328 1629216 5731112 1628640 5731360 1628768 5731368 +1627752 5730520 1627744 5730544 1628640 5731360 1629216 5731112 +1628864 5731328 1628976 5731296 1629216 5731112 1628640 5731360 +1626328 5735392 1628640 5731360 1627560 5730576 1625176 5734984 +1627560 5730576 1628376 5731232 1628640 5731360 1627632 5730600 +1628640 5731360 1628376 5731232 1626328 5735392 1626480 5735432 +1628640 5731360 1628376 5731232 1626480 5735432 1626712 5735520 +1628640 5731360 1628376 5731232 1626712 5735520 1627384 5735808 +1628376 5731232 1626328 5735392 1626480 5735432 1626712 5735520 +1628376 5731232 1626712 5735520 1628640 5731360 1627632 5730600 +1628640 5731360 1627656 5730600 1627632 5730600 1628376 5731232 +1627632 5730600 1627560 5730576 1628376 5731232 1627656 5730600 +1628640 5731360 1627720 5730568 1627656 5730600 1628376 5731232 +1628640 5731360 1627744 5730544 1627720 5730568 1628376 5731232 +1627720 5730568 1627656 5730600 1628376 5731232 1627744 5730544 +1628640 5731360 1627752 5730520 1627744 5730544 1628376 5731232 +1628640 5731360 1629216 5731112 1627752 5730520 1628376 5731232 +1629216 5731112 1627736 5730496 1627752 5730520 1628376 5731232 +1627752 5730520 1627744 5730544 1628376 5731232 1629216 5731112 +1627744 5730544 1627720 5730568 1628376 5731232 1627752 5730520 +1628640 5731360 1629216 5731112 1628376 5731232 1626712 5735520 +1627656 5730600 1627632 5730600 1628376 5731232 1627720 5730568 +1628376 5731232 1627560 5730576 1626328 5735392 1626480 5735432 +1628640 5731360 1628864 5731328 1629216 5731112 1628376 5731232 +1628640 5731360 1628768 5731368 1628864 5731328 1628376 5731232 +1629216 5731112 1627752 5730520 1628376 5731232 1628864 5731328 +1628640 5731360 1628864 5731328 1628376 5731232 1626712 5735520 +1628864 5731328 1628976 5731296 1629216 5731112 1628376 5731232 +1627560 5730576 1626328 5735392 1628376 5731232 1627632 5730600 +1626328 5735392 1628376 5731232 1627560 5730576 1625176 5734984 +1627560 5730576 1627440 5730528 1625176 5734984 1628376 5731232 +1627560 5730576 1627520 5730552 1627440 5730528 1628376 5731232 +1627440 5730528 1625040 5734896 1625176 5734984 1628376 5731232 +1627440 5730528 1625040 5734896 1628376 5731232 1627560 5730576 +1627440 5730528 1624728 5734744 1625040 5734896 1628376 5731232 +1626328 5735392 1626480 5735432 1628376 5731232 1625176 5734984 +1628376 5731232 1627632 5730600 1627560 5730576 1627440 5730528 +1626328 5735392 1628376 5731232 1625176 5734984 1626192 5735400 +1625176 5734984 1626328 5735392 1628376 5731232 1625040 5734896 +1627720 5730568 1628336 5731192 1628376 5731232 1627744 5730544 +1628376 5731232 1627752 5730520 1627744 5730544 1628336 5731192 +1627744 5730544 1627720 5730568 1628336 5731192 1627752 5730520 +1628376 5731232 1629216 5731112 1627752 5730520 1628336 5731192 +1629216 5731112 1627736 5730496 1627752 5730520 1628336 5731192 +1628376 5731232 1628864 5731328 1629216 5731112 1628336 5731192 +1629216 5731112 1627752 5730520 1628336 5731192 1628864 5731328 +1627752 5730520 1627744 5730544 1628336 5731192 1629216 5731112 +1628376 5731232 1628336 5731192 1627656 5730600 1627632 5730600 +1628376 5731232 1628336 5731192 1627632 5730600 1627560 5730576 +1628336 5731192 1627656 5730600 1627632 5730600 1627560 5730576 +1628864 5731328 1628976 5731296 1629216 5731112 1628336 5731192 +1628376 5731232 1628640 5731360 1628864 5731328 1628336 5731192 +1628336 5731192 1627560 5730576 1628376 5731232 1628864 5731328 +1628376 5731232 1628336 5731192 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1628336 5731192 +1628376 5731232 1628336 5731192 1627440 5730528 1625040 5734896 +1628376 5731232 1628336 5731192 1625040 5734896 1625176 5734984 +1628336 5731192 1627440 5730528 1625040 5734896 1625176 5734984 +1627440 5730528 1624728 5734744 1625040 5734896 1628336 5731192 +1628336 5731192 1627632 5730600 1627560 5730576 1627440 5730528 +1628376 5731232 1628864 5731328 1628336 5731192 1625176 5734984 +1628336 5731192 1627560 5730576 1627440 5730528 1625040 5734896 +1628336 5731192 1627720 5730568 1627656 5730600 1627632 5730600 +1627720 5730568 1627656 5730600 1628336 5731192 1627744 5730544 +1628376 5731232 1628336 5731192 1625176 5734984 1626328 5735392 +1628336 5731192 1625040 5734896 1625176 5734984 1626328 5735392 +1628376 5731232 1628336 5731192 1626328 5735392 1626480 5735432 +1628376 5731232 1628864 5731328 1628336 5731192 1626328 5735392 +1625176 5734984 1626192 5735400 1626328 5735392 1628336 5731192 +1627752 5730520 1628304 5731136 1629216 5731112 1627736 5730496 +1629216 5731112 1628304 5731136 1628336 5731192 1628864 5731328 +1628336 5731192 1628376 5731232 1628864 5731328 1628304 5731136 +1628864 5731328 1629216 5731112 1628304 5731136 1628376 5731232 +1628336 5731192 1628304 5731136 1627752 5730520 1627744 5730544 +1628336 5731192 1628304 5731136 1627744 5730544 1627720 5730568 +1628304 5731136 1627752 5730520 1627744 5730544 1627720 5730568 +1629216 5731112 1628304 5731136 1628864 5731328 1628976 5731296 +1628376 5731232 1628640 5731360 1628864 5731328 1628304 5731136 +1628640 5731360 1628768 5731368 1628864 5731328 1628304 5731136 +1628376 5731232 1628640 5731360 1628304 5731136 1628336 5731192 +1628864 5731328 1629216 5731112 1628304 5731136 1628640 5731360 +1628304 5731136 1627720 5730568 1628336 5731192 1628376 5731232 +1628336 5731192 1628304 5731136 1627720 5730568 1627656 5730600 +1628304 5731136 1627744 5730544 1627720 5730568 1627656 5730600 +1628336 5731192 1628304 5731136 1627656 5730600 1627632 5730600 +1628336 5731192 1628304 5731136 1627632 5730600 1627560 5730576 +1628336 5731192 1628376 5731232 1628304 5731136 1627632 5730600 +1628304 5731136 1627720 5730568 1627656 5730600 1627632 5730600 +1628304 5731136 1629216 5731112 1627752 5730520 1627744 5730544 +1629216 5731112 1627752 5730520 1628304 5731136 1628864 5731328 +1627752 5730520 1628288 5731016 1629216 5731112 1627736 5730496 +1628304 5731136 1628288 5731016 1627752 5730520 1627744 5730544 +1628304 5731136 1628288 5731016 1627744 5730544 1627720 5730568 +1628304 5731136 1628288 5731016 1627720 5730568 1627656 5730600 +1628288 5731016 1627744 5730544 1627720 5730568 1627656 5730600 +1628304 5731136 1628288 5731016 1627656 5730600 1627632 5730600 +1628288 5731016 1627752 5730520 1627744 5730544 1627720 5730568 +1628304 5731136 1629216 5731112 1628288 5731016 1627656 5730600 +1629216 5731112 1628288 5731016 1628304 5731136 1628864 5731328 +1628304 5731136 1628640 5731360 1628864 5731328 1628288 5731016 +1628640 5731360 1628768 5731368 1628864 5731328 1628288 5731016 +1629216 5731112 1628288 5731016 1628864 5731328 1628976 5731296 +1629216 5731112 1628288 5731016 1628976 5731296 1629208 5731336 +1628304 5731136 1628376 5731232 1628640 5731360 1628288 5731016 +1628304 5731136 1628336 5731192 1628376 5731232 1628288 5731016 +1628640 5731360 1628864 5731328 1628288 5731016 1628376 5731232 +1628288 5731016 1627656 5730600 1628304 5731136 1628376 5731232 +1628864 5731328 1628976 5731296 1628288 5731016 1628640 5731360 +1628288 5731016 1629216 5731112 1627752 5730520 1627744 5730544 +1629216 5731112 1627752 5730520 1628288 5731016 1628976 5731296 +1627752 5730520 1628440 5730936 1629216 5731112 1627736 5730496 +1628288 5731016 1628440 5730936 1627752 5730520 1627744 5730544 +1629216 5731112 1628440 5730936 1628288 5731016 1628976 5731296 +1629216 5731112 1628440 5730936 1628976 5731296 1629208 5731336 +1628288 5731016 1628864 5731328 1628976 5731296 1628440 5730936 +1628288 5731016 1628640 5731360 1628864 5731328 1628440 5730936 +1628640 5731360 1628768 5731368 1628864 5731328 1628440 5730936 +1628288 5731016 1628376 5731232 1628640 5731360 1628440 5730936 +1628864 5731328 1628976 5731296 1628440 5730936 1628640 5731360 +1628288 5731016 1628304 5731136 1628376 5731232 1628440 5730936 +1628304 5731136 1628336 5731192 1628376 5731232 1628440 5730936 +1628376 5731232 1628640 5731360 1628440 5730936 1628336 5731192 +1628304 5731136 1628336 5731192 1628440 5730936 1628288 5731016 +1628640 5731360 1628864 5731328 1628440 5730936 1628376 5731232 +1628440 5730936 1627752 5730520 1628288 5731016 1628304 5731136 +1628976 5731296 1629216 5731112 1628440 5730936 1628864 5731328 +1627752 5730520 1628288 5731016 1628440 5730936 1627736 5730496 +1628440 5730936 1628976 5731296 1629216 5731112 1627736 5730496 +1629216 5731112 1629584 5726976 1627736 5730496 1628440 5730936 +1627736 5730496 1627752 5730520 1628440 5730936 1629584 5726976 +1629216 5731112 1629776 5726856 1629584 5726976 1628440 5730936 +1629216 5731112 1629584 5726976 1628440 5730936 1628976 5731296 +1629584 5726976 1627648 5730440 1627736 5730496 1628440 5730936 +1629584 5726976 1628608 5730968 1629216 5731112 1629776 5726856 +1629216 5731112 1628608 5730968 1628440 5730936 1628976 5731296 +1629216 5731112 1628608 5730968 1628976 5731296 1629208 5731336 +1628440 5730936 1628864 5731328 1628976 5731296 1628608 5730968 +1628440 5730936 1628640 5731360 1628864 5731328 1628608 5730968 +1628640 5731360 1628768 5731368 1628864 5731328 1628608 5730968 +1628640 5731360 1628768 5731368 1628608 5730968 1628440 5730936 +1628440 5730936 1628376 5731232 1628640 5731360 1628608 5730968 +1628440 5730936 1628336 5731192 1628376 5731232 1628608 5730968 +1628640 5731360 1628768 5731368 1628608 5730968 1628376 5731232 +1628864 5731328 1628976 5731296 1628608 5730968 1628768 5731368 +1628608 5730968 1629584 5726976 1628440 5730936 1628376 5731232 +1628976 5731296 1629216 5731112 1628608 5730968 1628864 5731328 +1629216 5731112 1629584 5726976 1628608 5730968 1628976 5731296 +1628440 5730936 1628608 5730968 1629584 5726976 1627736 5730496 +1628440 5730936 1628608 5730968 1627736 5730496 1627752 5730520 +1628440 5730936 1628376 5731232 1628608 5730968 1627736 5730496 +1628608 5730968 1629216 5731112 1629584 5726976 1627736 5730496 +1629584 5726976 1627648 5730440 1627736 5730496 1628608 5730968 +1629584 5726976 1628944 5731008 1629216 5731112 1629776 5726856 +1628608 5730968 1628944 5731008 1629584 5726976 1627736 5730496 +1628944 5731008 1629216 5731112 1629584 5726976 1627736 5730496 +1628608 5730968 1629216 5731112 1628944 5731008 1627736 5730496 +1629216 5731112 1628944 5731008 1628608 5730968 1628976 5731296 +1629216 5731112 1628944 5731008 1628976 5731296 1629208 5731336 +1628608 5730968 1628864 5731328 1628976 5731296 1628944 5731008 +1628608 5730968 1628768 5731368 1628864 5731328 1628944 5731008 +1629216 5731112 1629584 5726976 1628944 5731008 1628976 5731296 +1628944 5731008 1627736 5730496 1628608 5730968 1628864 5731328 +1628976 5731296 1629216 5731112 1628944 5731008 1628864 5731328 +1629584 5726976 1627648 5730440 1627736 5730496 1628944 5731008 +1628608 5730968 1628944 5731008 1627736 5730496 1628440 5730936 +1629584 5726976 1629136 5731064 1629216 5731112 1629776 5726856 +1628944 5731008 1629136 5731064 1629584 5726976 1627736 5730496 +1629216 5731112 1629136 5731064 1628944 5731008 1628976 5731296 +1629216 5731112 1629136 5731064 1628976 5731296 1629208 5731336 +1629136 5731064 1629584 5726976 1628944 5731008 1628976 5731296 +1628944 5731008 1628864 5731328 1628976 5731296 1629136 5731064 +1629216 5731112 1629584 5726976 1629136 5731064 1628976 5731296 +1629320 5731248 1629464 5735560 1629944 5726624 1629928 5726696 +1629432 5736720 1629464 5735560 1629320 5731248 1629416 5736656 +1629320 5731248 1629272 5731304 1629416 5736656 1629464 5735560 +1629416 5736656 1629432 5736720 1629464 5735560 1629272 5731304 +1629272 5731304 1629320 5736568 1629416 5736656 1629464 5735560 +1629272 5731304 1629288 5736552 1629320 5736568 1629464 5735560 +1629272 5731304 1629288 5736552 1629464 5735560 1629320 5731248 +1629416 5736656 1629432 5736720 1629464 5735560 1629320 5736568 +1629272 5731304 1629208 5731336 1629288 5736552 1629464 5735560 +1629288 5736552 1629320 5736568 1629464 5735560 1629208 5731336 +1629272 5731304 1629208 5731336 1629464 5735560 1629320 5731248 +1629320 5736568 1629416 5736656 1629464 5735560 1629288 5736552 +1629320 5731248 1629272 5731304 1629464 5735560 1629928 5726696 +1629464 5735560 1629432 5736720 1629944 5726624 1629928 5726696 +1629432 5736720 1629944 5726624 1629464 5735560 1629416 5736656 +1629208 5731336 1629008 5736448 1629288 5736552 1629464 5735560 +1629208 5731336 1628488 5736312 1629008 5736448 1629464 5735560 +1629288 5736552 1629320 5736568 1629464 5735560 1629008 5736448 +1629208 5731336 1628488 5736312 1629464 5735560 1629272 5731304 +1629208 5731336 1628768 5731368 1628488 5736312 1629464 5735560 +1628488 5736312 1629008 5736448 1629464 5735560 1628768 5731368 +1629208 5731336 1628864 5731328 1628768 5731368 1629464 5735560 +1628768 5731368 1628256 5736240 1628488 5736312 1629464 5735560 +1628488 5736312 1629008 5736448 1629464 5735560 1628256 5736240 +1628768 5731368 1627856 5736056 1628256 5736240 1629464 5735560 +1628768 5731368 1627384 5735808 1627856 5736056 1629464 5735560 +1628768 5731368 1628640 5731360 1627384 5735808 1629464 5735560 +1627384 5735808 1627856 5736056 1629464 5735560 1628640 5731360 +1628640 5731360 1626712 5735520 1627384 5735808 1629464 5735560 +1627856 5736056 1628256 5736240 1629464 5735560 1627384 5735808 +1628256 5736240 1628488 5736312 1629464 5735560 1627856 5736056 +1629208 5731336 1628768 5731368 1629464 5735560 1629272 5731304 +1628768 5731368 1628640 5731360 1629464 5735560 1629208 5731336 +1629008 5736448 1629288 5736552 1629464 5735560 1628488 5736312 +1629944 5726624 1629464 5735560 1629432 5736720 1631312 5744824 +1629944 5726624 1629928 5726696 1629464 5735560 1631312 5744824 +1629464 5735560 1629416 5736656 1629432 5736720 1631312 5744824 +1629432 5736720 1630952 5743928 1631312 5744824 1629464 5735560 +1630952 5743928 1630992 5744048 1631312 5744824 1629464 5735560 +1629432 5736720 1630952 5743928 1629464 5735560 1629416 5736656 +1629432 5736720 1630864 5743768 1630952 5743928 1629464 5735560 +1631312 5744824 1629944 5726624 1629464 5735560 1630952 5743928 +1629320 5731248 1629464 5735560 1629928 5726696 1629304 5731208 +1629944 5726624 1629464 5735560 1631312 5744824 1751256 5699792 +1629464 5735560 1629328 5735456 1627384 5735808 1627856 5736056 +1628640 5731360 1629328 5735456 1629464 5735560 1628768 5731368 +1627384 5735808 1629328 5735456 1628640 5731360 1626712 5735520 +1629464 5735560 1629328 5735456 1627856 5736056 1628256 5736240 +1629328 5735456 1627384 5735808 1627856 5736056 1628256 5736240 +1629464 5735560 1629328 5735456 1628256 5736240 1628488 5736312 +1629464 5735560 1629328 5735456 1628488 5736312 1629008 5736448 +1629328 5735456 1627856 5736056 1628256 5736240 1628488 5736312 +1629328 5735456 1628256 5736240 1628488 5736312 1629008 5736448 +1629464 5735560 1629208 5731336 1628768 5731368 1629328 5735456 +1629208 5731336 1628864 5731328 1628768 5731368 1629328 5735456 +1628768 5731368 1628640 5731360 1629328 5735456 1629208 5731336 +1629464 5735560 1629272 5731304 1629208 5731336 1629328 5735456 +1629464 5735560 1629320 5731248 1629272 5731304 1629328 5735456 +1629208 5731336 1628768 5731368 1629328 5735456 1629272 5731304 +1629464 5735560 1629272 5731304 1629328 5735456 1629008 5736448 +1629328 5735456 1628640 5731360 1627384 5735808 1627856 5736056 +1628640 5731360 1627384 5735808 1629328 5735456 1628768 5731368 +1629464 5735560 1629328 5735456 1629008 5736448 1629288 5736552 +1627384 5735808 1629280 5735448 1628640 5731360 1626712 5735520 +1628640 5731360 1628376 5731232 1626712 5735520 1629280 5735448 +1629328 5735456 1629280 5735448 1627384 5735808 1627856 5736056 +1629328 5735456 1629280 5735448 1627856 5736056 1628256 5736240 +1629328 5735456 1629280 5735448 1628256 5736240 1628488 5736312 +1629280 5735448 1627856 5736056 1628256 5736240 1628488 5736312 +1629328 5735456 1629280 5735448 1628488 5736312 1629008 5736448 +1629328 5735456 1629280 5735448 1629008 5736448 1629464 5735560 +1629280 5735448 1628256 5736240 1628488 5736312 1629008 5736448 +1629280 5735448 1628488 5736312 1629008 5736448 1629464 5735560 +1629280 5735448 1627384 5735808 1627856 5736056 1628256 5736240 +1629328 5735456 1628640 5731360 1629280 5735448 1629464 5735560 +1628640 5731360 1629280 5735448 1629328 5735456 1628768 5731368 +1629328 5735456 1629208 5731336 1628768 5731368 1629280 5735448 +1629208 5731336 1628864 5731328 1628768 5731368 1629280 5735448 +1629328 5735456 1629272 5731304 1629208 5731336 1629280 5735448 +1629280 5735448 1629464 5735560 1629328 5735456 1629208 5731336 +1628768 5731368 1628640 5731360 1629280 5735448 1629208 5731336 +1627384 5735808 1627856 5736056 1629280 5735448 1626712 5735520 +1629280 5735448 1628768 5731368 1628640 5731360 1626712 5735520 +1629008 5736448 1629288 5736552 1629464 5735560 1629280 5735448 +1626712 5735520 1629208 5735392 1628640 5731360 1628376 5731232 +1629280 5735448 1629208 5735392 1626712 5735520 1627384 5735808 +1629280 5735448 1629208 5735392 1627384 5735808 1627856 5736056 +1629208 5735392 1626712 5735520 1627384 5735808 1627856 5736056 +1629280 5735448 1629208 5735392 1627856 5736056 1628256 5736240 +1629280 5735448 1629208 5735392 1628256 5736240 1628488 5736312 +1629280 5735448 1629208 5735392 1628488 5736312 1629008 5736448 +1629208 5735392 1628256 5736240 1628488 5736312 1629008 5736448 +1629280 5735448 1629208 5735392 1629008 5736448 1629464 5735560 +1629208 5735392 1627856 5736056 1628256 5736240 1628488 5736312 +1629208 5735392 1627384 5735808 1627856 5736056 1628256 5736240 +1629280 5735448 1628640 5731360 1629208 5735392 1629008 5736448 +1628640 5731360 1629208 5735392 1629280 5735448 1628768 5731368 +1629280 5735448 1629208 5731336 1628768 5731368 1629208 5735392 +1629208 5731336 1628864 5731328 1628768 5731368 1629208 5735392 +1629280 5735448 1629328 5735456 1629208 5731336 1629208 5735392 +1629328 5735456 1629272 5731304 1629208 5731336 1629208 5735392 +1629328 5735456 1629272 5731304 1629208 5735392 1629280 5735448 +1629328 5735456 1629464 5735560 1629272 5731304 1629208 5735392 +1629208 5731336 1628768 5731368 1629208 5735392 1629272 5731304 +1629208 5735392 1629008 5736448 1629280 5735448 1629328 5735456 +1628768 5731368 1628640 5731360 1629208 5735392 1629208 5731336 +1629208 5735392 1628640 5731360 1626712 5735520 1627384 5735808 +1628640 5731360 1626712 5735520 1629208 5735392 1628768 5731368 +1626712 5735520 1629064 5735344 1628640 5731360 1628376 5731232 +1629208 5735392 1629064 5735344 1626712 5735520 1627384 5735808 +1629208 5735392 1629064 5735344 1627384 5735808 1627856 5736056 +1629208 5735392 1629064 5735344 1627856 5736056 1628256 5736240 +1629064 5735344 1627384 5735808 1627856 5736056 1628256 5736240 +1629208 5735392 1629064 5735344 1628256 5736240 1628488 5736312 +1629208 5735392 1629064 5735344 1628488 5736312 1629008 5736448 +1629208 5735392 1629064 5735344 1629008 5736448 1629280 5735448 +1629064 5735344 1628488 5736312 1629008 5736448 1629280 5735448 +1629008 5736448 1629464 5735560 1629280 5735448 1629064 5735344 +1629064 5735344 1628256 5736240 1628488 5736312 1629008 5736448 +1629064 5735344 1627856 5736056 1628256 5736240 1628488 5736312 +1629064 5735344 1626712 5735520 1627384 5735808 1627856 5736056 +1629208 5735392 1628640 5731360 1629064 5735344 1629280 5735448 +1628640 5731360 1629064 5735344 1629208 5735392 1628768 5731368 +1629208 5735392 1629208 5731336 1628768 5731368 1629064 5735344 +1629208 5731336 1628864 5731328 1628768 5731368 1629064 5735344 +1629208 5735392 1629272 5731304 1629208 5731336 1629064 5735344 +1629064 5735344 1629280 5735448 1629208 5735392 1629208 5731336 +1628768 5731368 1628640 5731360 1629064 5735344 1629208 5731336 +1629064 5735344 1628640 5731360 1626712 5735520 1627384 5735808 +1628640 5731360 1626712 5735520 1629064 5735344 1628768 5731368 +1626712 5735520 1628824 5735312 1628640 5731360 1628376 5731232 +1629064 5735344 1628824 5735312 1626712 5735520 1627384 5735808 +1629064 5735344 1628824 5735312 1627384 5735808 1627856 5736056 +1629064 5735344 1628824 5735312 1627856 5736056 1628256 5736240 +1629064 5735344 1628824 5735312 1628256 5736240 1628488 5736312 +1628824 5735312 1627856 5736056 1628256 5736240 1628488 5736312 +1629064 5735344 1628824 5735312 1628488 5736312 1629008 5736448 +1628824 5735312 1627384 5735808 1627856 5736056 1628256 5736240 +1628824 5735312 1626712 5735520 1627384 5735808 1627856 5736056 +1629064 5735344 1628640 5731360 1628824 5735312 1628488 5736312 +1628640 5731360 1628824 5735312 1629064 5735344 1628768 5731368 +1629064 5735344 1629208 5731336 1628768 5731368 1628824 5735312 +1629208 5731336 1628864 5731328 1628768 5731368 1628824 5735312 +1629064 5735344 1629208 5735392 1629208 5731336 1628824 5735312 +1628824 5735312 1628488 5736312 1629064 5735344 1629208 5731336 +1628768 5731368 1628640 5731360 1628824 5735312 1629208 5731336 +1628824 5735312 1628640 5731360 1626712 5735520 1627384 5735808 +1628640 5731360 1626712 5735520 1628824 5735312 1628768 5731368 +1626712 5735520 1628736 5735280 1628640 5731360 1628376 5731232 +1626712 5735520 1628736 5735280 1628376 5731232 1626480 5735432 +1628824 5735312 1628736 5735280 1626712 5735520 1627384 5735808 +1628824 5735312 1628736 5735280 1627384 5735808 1627856 5736056 +1628824 5735312 1628736 5735280 1627856 5736056 1628256 5736240 +1628824 5735312 1628736 5735280 1628256 5736240 1628488 5736312 +1628824 5735312 1628736 5735280 1628488 5736312 1629064 5735344 +1628736 5735280 1627856 5736056 1628256 5736240 1628488 5736312 +1628736 5735280 1627384 5735808 1627856 5736056 1628256 5736240 +1628736 5735280 1626712 5735520 1627384 5735808 1627856 5736056 +1628824 5735312 1628640 5731360 1628736 5735280 1628488 5736312 +1628640 5731360 1628736 5735280 1628824 5735312 1628768 5731368 +1628824 5735312 1629208 5731336 1628768 5731368 1628736 5735280 +1629208 5731336 1628864 5731328 1628768 5731368 1628736 5735280 +1628824 5735312 1629064 5735344 1629208 5731336 1628736 5735280 +1629064 5735344 1629208 5735392 1629208 5731336 1628736 5735280 +1629208 5731336 1628768 5731368 1628736 5735280 1629064 5735344 +1628736 5735280 1628488 5736312 1628824 5735312 1629064 5735344 +1628768 5731368 1628640 5731360 1628736 5735280 1629208 5731336 +1626712 5735520 1627384 5735808 1628736 5735280 1628376 5731232 +1628736 5735280 1628768 5731368 1628640 5731360 1628376 5731232 +1626712 5735520 1628672 5735216 1628376 5731232 1626480 5735432 +1628376 5731232 1628672 5735216 1628736 5735280 1628640 5731360 +1628376 5731232 1626328 5735392 1626480 5735432 1628672 5735216 +1628736 5735280 1628672 5735216 1626712 5735520 1627384 5735808 +1628736 5735280 1628672 5735216 1627384 5735808 1627856 5736056 +1628736 5735280 1628672 5735216 1627856 5736056 1628256 5736240 +1628736 5735280 1628672 5735216 1628256 5736240 1628488 5736312 +1628672 5735216 1627384 5735808 1627856 5736056 1628256 5736240 +1628672 5735216 1626712 5735520 1627384 5735808 1627856 5736056 +1628672 5735216 1628256 5736240 1628736 5735280 1628640 5731360 +1628672 5735216 1628640 5731360 1628376 5731232 1626480 5735432 +1628736 5735280 1628768 5731368 1628640 5731360 1628672 5735216 +1628640 5731360 1628376 5731232 1628672 5735216 1628768 5731368 +1628736 5735280 1629208 5731336 1628768 5731368 1628672 5735216 +1629208 5731336 1628864 5731328 1628768 5731368 1628672 5735216 +1628736 5735280 1629064 5735344 1629208 5731336 1628672 5735216 +1629064 5735344 1629208 5735392 1629208 5731336 1628672 5735216 +1628736 5735280 1628824 5735312 1629064 5735344 1628672 5735216 +1629064 5735344 1629208 5731336 1628672 5735216 1628824 5735312 +1629208 5731336 1628768 5731368 1628672 5735216 1629064 5735344 +1628736 5735280 1628824 5735312 1628672 5735216 1628256 5736240 +1628768 5731368 1628640 5731360 1628672 5735216 1629208 5731336 +1626712 5735520 1627384 5735808 1628672 5735216 1626480 5735432 +1628672 5735216 1628560 5735016 1626480 5735432 1626712 5735520 +1626480 5735432 1628560 5735016 1628376 5731232 1626328 5735392 +1628672 5735216 1628376 5731232 1628560 5735016 1626712 5735520 +1628376 5731232 1628560 5735016 1628672 5735216 1628640 5731360 +1628376 5731232 1626480 5735432 1628560 5735016 1628640 5731360 +1628672 5735216 1628768 5731368 1628640 5731360 1628560 5735016 +1628560 5735016 1626712 5735520 1628672 5735216 1628768 5731368 +1628640 5731360 1628376 5731232 1628560 5735016 1628768 5731368 +1628560 5735016 1628376 5731232 1626480 5735432 1626712 5735520 +1628672 5735216 1629208 5731336 1628768 5731368 1628560 5735016 +1628768 5731368 1628640 5731360 1628560 5735016 1629208 5731336 +1629208 5731336 1628864 5731328 1628768 5731368 1628560 5735016 +1628672 5735216 1629064 5735344 1629208 5731336 1628560 5735016 +1629064 5735344 1629208 5735392 1629208 5731336 1628560 5735016 +1629208 5735392 1629272 5731304 1629208 5731336 1628560 5735016 +1628672 5735216 1628824 5735312 1629064 5735344 1628560 5735016 +1628672 5735216 1628736 5735280 1628824 5735312 1628560 5735016 +1629064 5735344 1629208 5735392 1628560 5735016 1628824 5735312 +1628672 5735216 1628824 5735312 1628560 5735016 1626712 5735520 +1629208 5731336 1628768 5731368 1628560 5735016 1629208 5735392 +1628672 5735216 1628560 5735016 1626712 5735520 1627384 5735808 +1628560 5735016 1626480 5735432 1626712 5735520 1627384 5735808 +1628672 5735216 1628560 5735016 1627384 5735808 1627856 5736056 +1628672 5735216 1628560 5735016 1627856 5736056 1628256 5736240 +1628672 5735216 1628824 5735312 1628560 5735016 1627856 5736056 +1628560 5735016 1626712 5735520 1627384 5735808 1627856 5736056 +1628376 5731232 1628504 5734856 1628560 5735016 1628640 5731360 +1628504 5734856 1626480 5735432 1628560 5735016 1628640 5731360 +1628376 5731232 1626480 5735432 1628504 5734856 1628640 5731360 +1626480 5735432 1628504 5734856 1628376 5731232 1626328 5735392 +1626480 5735432 1628560 5735016 1628504 5734856 1626328 5735392 +1628504 5734856 1628640 5731360 1628376 5731232 1626328 5735392 +1628376 5731232 1628336 5731192 1626328 5735392 1628504 5734856 +1628560 5735016 1628768 5731368 1628640 5731360 1628504 5734856 +1628560 5735016 1628768 5731368 1628504 5734856 1626480 5735432 +1628640 5731360 1628376 5731232 1628504 5734856 1628768 5731368 +1628560 5735016 1629208 5731336 1628768 5731368 1628504 5734856 +1628560 5735016 1629208 5731336 1628504 5734856 1626480 5735432 +1629208 5731336 1628864 5731328 1628768 5731368 1628504 5734856 +1628768 5731368 1628640 5731360 1628504 5734856 1629208 5731336 +1628560 5735016 1628504 5734856 1626480 5735432 1626712 5735520 +1628560 5735016 1629208 5731336 1628504 5734856 1626712 5735520 +1628504 5734856 1626328 5735392 1626480 5735432 1626712 5735520 +1628560 5735016 1628504 5734856 1626712 5735520 1627384 5735808 +1628560 5735016 1629208 5731336 1628504 5734856 1627384 5735808 +1628504 5734856 1626480 5735432 1626712 5735520 1627384 5735808 +1628560 5735016 1629208 5735392 1629208 5731336 1628504 5734856 +1628560 5735016 1629208 5735392 1628504 5734856 1627384 5735808 +1629208 5731336 1628768 5731368 1628504 5734856 1629208 5735392 +1629208 5735392 1629272 5731304 1629208 5731336 1628504 5734856 +1628560 5735016 1629064 5735344 1629208 5735392 1628504 5734856 +1628560 5735016 1629064 5735344 1628504 5734856 1627384 5735808 +1628560 5735016 1628824 5735312 1629064 5735344 1628504 5734856 +1629208 5735392 1629208 5731336 1628504 5734856 1629064 5735344 +1628560 5735016 1628504 5734856 1627384 5735808 1627856 5736056 +1628376 5731232 1628496 5734816 1628504 5734856 1628640 5731360 +1628504 5734856 1628768 5731368 1628640 5731360 1628496 5734816 +1628496 5734816 1626328 5735392 1628504 5734856 1628768 5731368 +1628640 5731360 1628376 5731232 1628496 5734816 1628768 5731368 +1628376 5731232 1626328 5735392 1628496 5734816 1628640 5731360 +1628504 5734856 1628496 5734816 1626328 5735392 1626480 5735432 +1628504 5734856 1628496 5734816 1626480 5735432 1626712 5735520 +1628504 5734856 1628768 5731368 1628496 5734816 1626712 5735520 +1628496 5734816 1628376 5731232 1626328 5735392 1626480 5735432 +1628496 5734816 1626328 5735392 1626480 5735432 1626712 5735520 +1626328 5735392 1628496 5734816 1628376 5731232 1628336 5731192 +1628504 5734856 1629208 5731336 1628768 5731368 1628496 5734816 +1628768 5731368 1628640 5731360 1628496 5734816 1629208 5731336 +1628504 5734856 1629208 5731336 1628496 5734816 1626712 5735520 +1628504 5734856 1629208 5735392 1629208 5731336 1628496 5734816 +1628504 5734856 1629208 5735392 1628496 5734816 1626712 5735520 +1629208 5731336 1628864 5731328 1628768 5731368 1628496 5734816 +1629208 5735392 1629272 5731304 1629208 5731336 1628496 5734816 +1629208 5731336 1628768 5731368 1628496 5734816 1629208 5735392 +1628504 5734856 1628496 5734816 1626712 5735520 1627384 5735808 +1628496 5734816 1626480 5735432 1626712 5735520 1627384 5735808 +1628504 5734856 1629208 5735392 1628496 5734816 1627384 5735808 +1628504 5734856 1628496 5734816 1627384 5735808 1628560 5735016 +1628504 5734856 1629064 5735344 1629208 5735392 1628496 5734816 +1628504 5734856 1629064 5735344 1628496 5734816 1627384 5735808 +1629208 5735392 1629208 5731336 1628496 5734816 1629064 5735344 +1628504 5734856 1628560 5735016 1629064 5735344 1628496 5734816 +1629208 5735392 1628512 5734776 1628496 5734816 1629064 5735344 +1628512 5734776 1629208 5731336 1628496 5734816 1629064 5735344 +1629208 5735392 1629208 5731336 1628512 5734776 1629064 5735344 +1629208 5731336 1628512 5734776 1629208 5735392 1629272 5731304 +1629208 5731336 1628496 5734816 1628512 5734776 1629272 5731304 +1628512 5734776 1629064 5735344 1629208 5735392 1629272 5731304 +1629208 5735392 1629328 5735456 1629272 5731304 1628512 5734776 +1629208 5735392 1629328 5735456 1628512 5734776 1629064 5735344 +1629208 5735392 1629280 5735448 1629328 5735456 1628512 5734776 +1629328 5735456 1629464 5735560 1629272 5731304 1628512 5734776 +1629272 5731304 1629208 5731336 1628512 5734776 1629328 5735456 +1628496 5734816 1628512 5734776 1629208 5731336 1628768 5731368 +1628496 5734816 1628512 5734776 1628768 5731368 1628640 5731360 +1628496 5734816 1628512 5734776 1628640 5731360 1628376 5731232 +1628512 5734776 1628768 5731368 1628640 5731360 1628376 5731232 +1628496 5734816 1629064 5735344 1628512 5734776 1628376 5731232 +1628496 5734816 1628512 5734776 1628376 5731232 1626328 5735392 +1628512 5734776 1628640 5731360 1628376 5731232 1626328 5735392 +1628496 5734816 1628512 5734776 1626328 5735392 1626480 5735432 +1628496 5734816 1629064 5735344 1628512 5734776 1626480 5735432 +1628512 5734776 1628376 5731232 1626328 5735392 1626480 5735432 +1628512 5734776 1629272 5731304 1629208 5731336 1628768 5731368 +1629208 5731336 1628864 5731328 1628768 5731368 1628512 5734776 +1628496 5734816 1628512 5734776 1626480 5735432 1626712 5735520 +1628496 5734816 1628512 5734776 1626712 5735520 1627384 5735808 +1628512 5734776 1626328 5735392 1626480 5735432 1626712 5735520 +1628496 5734816 1629064 5735344 1628512 5734776 1626712 5735520 +1628376 5731232 1628336 5731192 1626328 5735392 1628512 5734776 +1628512 5734776 1629208 5731336 1628768 5731368 1628640 5731360 +1628496 5734816 1628504 5734856 1629064 5735344 1628512 5734776 +1628496 5734816 1628504 5734856 1628512 5734776 1626712 5735520 +1629064 5735344 1629208 5735392 1628512 5734776 1628504 5734856 +1628504 5734856 1628560 5735016 1629064 5735344 1628512 5734776 +1629064 5735344 1629208 5735392 1628512 5734776 1628560 5735016 +1628560 5735016 1628824 5735312 1629064 5735344 1628512 5734776 +1628504 5734856 1628560 5735016 1628512 5734776 1628496 5734816 +1629272 5731304 1628648 5734680 1629328 5735456 1629464 5735560 +1629328 5735456 1628648 5734680 1628512 5734776 1629208 5735392 +1628648 5734680 1629272 5731304 1628512 5734776 1629208 5735392 +1628512 5734776 1629064 5735344 1629208 5735392 1628648 5734680 +1628512 5734776 1629064 5735344 1628648 5734680 1629272 5731304 +1629328 5735456 1629272 5731304 1628648 5734680 1629208 5735392 +1628512 5734776 1628560 5735016 1629064 5735344 1628648 5734680 +1628512 5734776 1628560 5735016 1628648 5734680 1629272 5731304 +1629064 5735344 1629208 5735392 1628648 5734680 1628560 5735016 +1629328 5735456 1628648 5734680 1629208 5735392 1629280 5735448 +1629208 5735392 1629328 5735456 1628648 5734680 1629064 5735344 +1628512 5734776 1628648 5734680 1629272 5731304 1629208 5731336 +1628512 5734776 1628648 5734680 1629208 5731336 1628768 5731368 +1628512 5734776 1628560 5735016 1628648 5734680 1628768 5731368 +1628648 5734680 1629328 5735456 1629272 5731304 1629208 5731336 +1629208 5731336 1628864 5731328 1628768 5731368 1628648 5734680 +1628648 5734680 1629272 5731304 1629208 5731336 1628768 5731368 +1628512 5734776 1628504 5734856 1628560 5735016 1628648 5734680 +1628512 5734776 1628504 5734856 1628648 5734680 1628768 5731368 +1628560 5735016 1629064 5735344 1628648 5734680 1628504 5734856 +1628560 5735016 1628824 5735312 1629064 5735344 1628648 5734680 +1629064 5735344 1629208 5735392 1628648 5734680 1628824 5735312 +1628560 5735016 1628824 5735312 1628648 5734680 1628504 5734856 +1628560 5735016 1628672 5735216 1628824 5735312 1628648 5734680 +1628560 5735016 1628672 5735216 1628648 5734680 1628504 5734856 +1628672 5735216 1628736 5735280 1628824 5735312 1628648 5734680 +1628824 5735312 1629064 5735344 1628648 5734680 1628672 5735216 +1628512 5734776 1628648 5734680 1628768 5731368 1628640 5731360 +1628512 5734776 1628648 5734680 1628640 5731360 1628376 5731232 +1628512 5734776 1628648 5734680 1628376 5731232 1626328 5735392 +1628648 5734680 1629208 5731336 1628768 5731368 1628640 5731360 +1628512 5734776 1628504 5734856 1628648 5734680 1628376 5731232 +1628648 5734680 1628768 5731368 1628640 5731360 1628376 5731232 +1628512 5734776 1628496 5734816 1628504 5734856 1628648 5734680 +1628824 5735312 1628656 5734712 1628672 5735216 1628736 5735280 +1628672 5735216 1628656 5734712 1628648 5734680 1628560 5735016 +1628656 5734712 1628824 5735312 1628648 5734680 1628560 5735016 +1628672 5735216 1628824 5735312 1628656 5734712 1628560 5735016 +1628648 5734680 1628504 5734856 1628560 5735016 1628656 5734712 +1628648 5734680 1628504 5734856 1628656 5734712 1628824 5735312 +1628648 5734680 1628512 5734776 1628504 5734856 1628656 5734712 +1628648 5734680 1628512 5734776 1628656 5734712 1628824 5735312 +1628504 5734856 1628560 5735016 1628656 5734712 1628512 5734776 +1628560 5735016 1628672 5735216 1628656 5734712 1628504 5734856 +1628648 5734680 1628656 5734712 1628824 5735312 1629064 5735344 +1628648 5734680 1628656 5734712 1629064 5735344 1629208 5735392 +1628648 5734680 1628512 5734776 1628656 5734712 1629208 5735392 +1628656 5734712 1628672 5735216 1628824 5735312 1629064 5735344 +1628648 5734680 1628656 5734712 1629208 5735392 1629328 5735456 +1628656 5734712 1628824 5735312 1629064 5735344 1629208 5735392 +1628512 5734776 1628496 5734816 1628504 5734856 1628656 5734712 +1628648 5734680 1628944 5734832 1629272 5731304 1629208 5731336 +1629328 5735456 1628944 5734832 1628648 5734680 1629208 5735392 +1628648 5734680 1629208 5735392 1628944 5734832 1629208 5731336 +1628944 5734832 1629328 5735456 1629272 5731304 1629208 5731336 +1629328 5735456 1629272 5731304 1628944 5734832 1629208 5735392 +1629328 5735456 1628944 5734832 1629208 5735392 1629280 5735448 +1629272 5731304 1628944 5734832 1629328 5735456 1629464 5735560 +1629272 5731304 1629208 5731336 1628944 5734832 1629464 5735560 +1628944 5734832 1629208 5735392 1629328 5735456 1629464 5735560 +1629272 5731304 1628944 5734832 1629464 5735560 1629320 5731248 +1629272 5731304 1629208 5731336 1628944 5734832 1629320 5731248 +1628944 5734832 1629328 5735456 1629464 5735560 1629320 5731248 +1628648 5734680 1628656 5734712 1629208 5735392 1628944 5734832 +1628656 5734712 1629064 5735344 1629208 5735392 1628944 5734832 +1629208 5735392 1629328 5735456 1628944 5734832 1629064 5735344 +1628648 5734680 1628656 5734712 1628944 5734832 1629208 5731336 +1628656 5734712 1629064 5735344 1628944 5734832 1628648 5734680 +1629464 5735560 1629928 5726696 1629320 5731248 1628944 5734832 +1628648 5734680 1628944 5734832 1629208 5731336 1628768 5731368 +1628656 5734712 1628824 5735312 1629064 5735344 1628944 5734832 +1629064 5735344 1629208 5735392 1628944 5734832 1628824 5735312 +1628656 5734712 1628672 5735216 1628824 5735312 1628944 5734832 +1628656 5734712 1628560 5735016 1628672 5735216 1628944 5734832 +1628672 5735216 1628824 5735312 1628944 5734832 1628560 5735016 +1628656 5734712 1628560 5735016 1628944 5734832 1628648 5734680 +1628672 5735216 1628736 5735280 1628824 5735312 1628944 5734832 +1628656 5734712 1628504 5734856 1628560 5735016 1628944 5734832 +1628824 5735312 1629064 5735344 1628944 5734832 1628672 5735216 +1628944 5734832 1629168 5734864 1629320 5731248 1629272 5731304 +1628944 5734832 1629168 5734864 1629272 5731304 1629208 5731336 +1628944 5734832 1629168 5734864 1629208 5731336 1628648 5734680 +1628944 5734832 1629168 5734864 1628648 5734680 1628656 5734712 +1629168 5734864 1629272 5731304 1629208 5731336 1628648 5734680 +1629168 5734864 1629464 5735560 1629320 5731248 1629272 5731304 +1628944 5734832 1629464 5735560 1629168 5734864 1628648 5734680 +1629168 5734864 1629320 5731248 1629272 5731304 1629208 5731336 +1629464 5735560 1629168 5734864 1628944 5734832 1629328 5735456 +1629464 5735560 1629320 5731248 1629168 5734864 1629328 5735456 +1629168 5734864 1628648 5734680 1628944 5734832 1629328 5735456 +1628944 5734832 1629208 5735392 1629328 5735456 1629168 5734864 +1628944 5734832 1629064 5735344 1629208 5735392 1629168 5734864 +1628944 5734832 1628824 5735312 1629064 5735344 1629168 5734864 +1628944 5734832 1629064 5735344 1629168 5734864 1628648 5734680 +1629208 5735392 1629328 5735456 1629168 5734864 1629064 5735344 +1629208 5735392 1629280 5735448 1629328 5735456 1629168 5734864 +1629328 5735456 1629464 5735560 1629168 5734864 1629208 5735392 +1629320 5731248 1629168 5734864 1629464 5735560 1629928 5726696 +1629208 5731336 1628768 5731368 1628648 5734680 1629168 5734864 +1629464 5735560 1629696 5735040 1629944 5726624 1629928 5726696 +1629696 5735040 1631312 5744824 1629944 5726624 1629928 5726696 +1629464 5735560 1631312 5744824 1629696 5735040 1629928 5726696 +1629464 5735560 1629696 5735040 1629928 5726696 1629320 5731248 +1629464 5735560 1631312 5744824 1629696 5735040 1629320 5731248 +1629464 5735560 1629696 5735040 1629320 5731248 1629168 5734864 +1629320 5731248 1629272 5731304 1629168 5734864 1629696 5735040 +1629464 5735560 1629696 5735040 1629168 5734864 1629328 5735456 +1629464 5735560 1631312 5744824 1629696 5735040 1629328 5735456 +1629272 5731304 1629208 5731336 1629168 5734864 1629696 5735040 +1629208 5731336 1628648 5734680 1629168 5734864 1629696 5735040 +1629272 5731304 1629208 5731336 1629696 5735040 1629320 5731248 +1629696 5735040 1629928 5726696 1629320 5731248 1629272 5731304 +1629168 5734864 1629208 5735392 1629328 5735456 1629696 5735040 +1629328 5735456 1629464 5735560 1629696 5735040 1629208 5735392 +1629168 5734864 1629064 5735344 1629208 5735392 1629696 5735040 +1629208 5735392 1629280 5735448 1629328 5735456 1629696 5735040 +1629168 5734864 1629208 5735392 1629696 5735040 1629208 5731336 +1629696 5735040 1629944 5726624 1629928 5726696 1629320 5731248 +1631312 5744824 1629696 5735040 1629464 5735560 1630952 5743928 +1631312 5744824 1629944 5726624 1629696 5735040 1630952 5743928 +1629696 5735040 1629328 5735456 1629464 5735560 1630952 5743928 +1631312 5744824 1629696 5735040 1630952 5743928 1630992 5744048 +1629464 5735560 1629432 5736720 1630952 5743928 1629696 5735040 +1629464 5735560 1629432 5736720 1629696 5735040 1629328 5735456 +1629464 5735560 1629416 5736656 1629432 5736720 1629696 5735040 +1629432 5736720 1630864 5743768 1630952 5743928 1629696 5735040 +1630952 5743928 1631312 5744824 1629696 5735040 1629432 5736720 +1629928 5726696 1629304 5731208 1629320 5731248 1629696 5735040 +1629944 5726624 1629696 5735040 1631312 5744824 1751256 5699792 +1629696 5735040 1630120 5735160 1629944 5726624 1629928 5726696 +1631312 5744824 1630120 5735160 1629696 5735040 1630952 5743928 +1629696 5735040 1630952 5743928 1630120 5735160 1629928 5726696 +1630120 5735160 1631312 5744824 1629944 5726624 1629928 5726696 +1631312 5744824 1629944 5726624 1630120 5735160 1630952 5743928 +1631312 5744824 1630120 5735160 1630952 5743928 1630992 5744048 +1629696 5735040 1630120 5735160 1629928 5726696 1629320 5731248 +1630120 5735160 1629944 5726624 1629928 5726696 1629320 5731248 +1629696 5735040 1630952 5743928 1630120 5735160 1629320 5731248 +1629696 5735040 1630120 5735160 1629320 5731248 1629272 5731304 +1629696 5735040 1630120 5735160 1629272 5731304 1629208 5731336 +1629696 5735040 1630952 5743928 1630120 5735160 1629272 5731304 +1630120 5735160 1629928 5726696 1629320 5731248 1629272 5731304 +1629696 5735040 1629432 5736720 1630952 5743928 1630120 5735160 +1630952 5743928 1631312 5744824 1630120 5735160 1629432 5736720 +1629696 5735040 1629432 5736720 1630120 5735160 1629272 5731304 +1629432 5736720 1630864 5743768 1630952 5743928 1630120 5735160 +1630952 5743928 1631312 5744824 1630120 5735160 1630864 5743768 +1629432 5736720 1630632 5743536 1630864 5743768 1630120 5735160 +1629432 5736720 1630864 5743768 1630120 5735160 1629696 5735040 +1629696 5735040 1629464 5735560 1629432 5736720 1630120 5735160 +1629696 5735040 1629464 5735560 1630120 5735160 1629272 5731304 +1629696 5735040 1629328 5735456 1629464 5735560 1630120 5735160 +1629464 5735560 1629416 5736656 1629432 5736720 1630120 5735160 +1629464 5735560 1629320 5736568 1629416 5736656 1630120 5735160 +1629432 5736720 1630864 5743768 1630120 5735160 1629416 5736656 +1629464 5735560 1629416 5736656 1630120 5735160 1629696 5735040 +1629928 5726696 1629304 5731208 1629320 5731248 1630120 5735160 +1629944 5726624 1630120 5735160 1631312 5744824 1751256 5699792 +1629944 5726624 1629928 5726696 1630120 5735160 1751256 5699792 +1630120 5735160 1630952 5743928 1631312 5744824 1751256 5699792 +1629944 5726624 1630120 5735160 1751256 5699792 1629944 5726576 +1631312 5744824 1760125 5760125 1751256 5699792 1630120 5735160 +1631312 5744824 1630440 5735312 1630120 5735160 1630952 5743928 +1630120 5735160 1630864 5743768 1630952 5743928 1630440 5735312 +1630440 5735312 1751256 5699792 1630120 5735160 1630864 5743768 +1630952 5743928 1631312 5744824 1630440 5735312 1630864 5743768 +1631312 5744824 1630440 5735312 1630952 5743928 1630992 5744048 +1631312 5744824 1751256 5699792 1630440 5735312 1630952 5743928 +1630120 5735160 1629432 5736720 1630864 5743768 1630440 5735312 +1630864 5743768 1630952 5743928 1630440 5735312 1629432 5736720 +1630120 5735160 1629432 5736720 1630440 5735312 1751256 5699792 +1629432 5736720 1630632 5743536 1630864 5743768 1630440 5735312 +1630864 5743768 1630952 5743928 1630440 5735312 1630632 5743536 +1629432 5736720 1630424 5743368 1630632 5743536 1630440 5735312 +1629432 5736720 1630632 5743536 1630440 5735312 1630120 5735160 +1630120 5735160 1629416 5736656 1629432 5736720 1630440 5735312 +1630120 5735160 1629416 5736656 1630440 5735312 1751256 5699792 +1630120 5735160 1629464 5735560 1629416 5736656 1630440 5735312 +1630120 5735160 1629464 5735560 1630440 5735312 1751256 5699792 +1629464 5735560 1629320 5736568 1629416 5736656 1630440 5735312 +1629432 5736720 1630632 5743536 1630440 5735312 1629416 5736656 +1629416 5736656 1629432 5736720 1630440 5735312 1629464 5735560 +1630120 5735160 1629696 5735040 1629464 5735560 1630440 5735312 +1630120 5735160 1630440 5735312 1751256 5699792 1629944 5726624 +1630120 5735160 1630440 5735312 1629944 5726624 1629928 5726696 +1630120 5735160 1630440 5735312 1629928 5726696 1629320 5731248 +1630440 5735312 1629944 5726624 1629928 5726696 1629320 5731248 +1630120 5735160 1629464 5735560 1630440 5735312 1629320 5731248 +1630440 5735312 1631312 5744824 1751256 5699792 1629944 5726624 +1630120 5735160 1630440 5735312 1629320 5731248 1629272 5731304 +1751256 5699792 1629944 5726576 1629944 5726624 1630440 5735312 +1629928 5726696 1629304 5731208 1629320 5731248 1630440 5735312 +1630440 5735312 1751256 5699792 1629944 5726624 1629928 5726696 +1751256 5699792 1630440 5735312 1631312 5744824 1760125 5760125 +1630440 5735312 1630608 5735424 1751256 5699792 1629944 5726624 +1631312 5744824 1630608 5735424 1630440 5735312 1630952 5743928 +1630440 5735312 1630864 5743768 1630952 5743928 1630608 5735424 +1630440 5735312 1630632 5743536 1630864 5743768 1630608 5735424 +1630864 5743768 1630952 5743928 1630608 5735424 1630632 5743536 +1630440 5735312 1629432 5736720 1630632 5743536 1630608 5735424 +1630632 5743536 1630864 5743768 1630608 5735424 1629432 5736720 +1631312 5744824 1630608 5735424 1630952 5743928 1630992 5744048 +1630952 5743928 1631312 5744824 1630608 5735424 1630864 5743768 +1630440 5735312 1629432 5736720 1630608 5735424 1629944 5726624 +1630608 5735424 1631312 5744824 1751256 5699792 1629944 5726624 +1631312 5744824 1751256 5699792 1630608 5735424 1630952 5743928 +1751256 5699792 1629944 5726576 1629944 5726624 1630608 5735424 +1629944 5726624 1630440 5735312 1630608 5735424 1629944 5726576 +1751256 5699792 1629944 5726576 1630608 5735424 1631312 5744824 +1751256 5699792 1743888 5687504 1629944 5726576 1630608 5735424 +1629432 5736720 1630424 5743368 1630632 5743536 1630608 5735424 +1630440 5735312 1629416 5736656 1629432 5736720 1630608 5735424 +1629432 5736720 1630632 5743536 1630608 5735424 1629416 5736656 +1630440 5735312 1629416 5736656 1630608 5735424 1629944 5726624 +1630440 5735312 1629464 5735560 1629416 5736656 1630608 5735424 +1629464 5735560 1629320 5736568 1629416 5736656 1630608 5735424 +1630440 5735312 1629464 5735560 1630608 5735424 1629944 5726624 +1630440 5735312 1630120 5735160 1629464 5735560 1630608 5735424 +1629416 5736656 1629432 5736720 1630608 5735424 1629464 5735560 +1630440 5735312 1630608 5735424 1629944 5726624 1629928 5726696 +1630440 5735312 1630608 5735424 1629928 5726696 1629320 5731248 +1630440 5735312 1630608 5735424 1629320 5731248 1630120 5735160 +1630608 5735424 1629944 5726576 1629944 5726624 1629928 5726696 +1630440 5735312 1629464 5735560 1630608 5735424 1629320 5731248 +1629928 5726696 1629304 5731208 1629320 5731248 1630608 5735424 +1630608 5735424 1629944 5726624 1629928 5726696 1629320 5731248 +1751256 5699792 1630608 5735424 1631312 5744824 1760125 5760125 +1630608 5735424 1630704 5735512 1751256 5699792 1629944 5726576 +1630608 5735424 1631312 5744824 1630704 5735512 1629944 5726576 +1631312 5744824 1630704 5735512 1630608 5735424 1630952 5743928 +1631312 5744824 1630704 5735512 1630952 5743928 1630992 5744048 +1630608 5735424 1630864 5743768 1630952 5743928 1630704 5735512 +1630608 5735424 1630632 5743536 1630864 5743768 1630704 5735512 +1630608 5735424 1629432 5736720 1630632 5743536 1630704 5735512 +1630632 5743536 1630864 5743768 1630704 5735512 1629432 5736720 +1630608 5735424 1629416 5736656 1629432 5736720 1630704 5735512 +1629432 5736720 1630632 5743536 1630704 5735512 1629416 5736656 +1630864 5743768 1630952 5743928 1630704 5735512 1630632 5743536 +1630704 5735512 1629944 5726576 1630608 5735424 1629416 5736656 +1630952 5743928 1631312 5744824 1630704 5735512 1630864 5743768 +1630704 5735512 1631312 5744824 1751256 5699792 1629944 5726576 +1631312 5744824 1751256 5699792 1630704 5735512 1630952 5743928 +1751256 5699792 1743888 5687504 1629944 5726576 1630704 5735512 +1743888 5687504 1743800 5687320 1629944 5726576 1630704 5735512 +1751256 5699792 1743976 5687584 1743888 5687504 1630704 5735512 +1629944 5726576 1630608 5735424 1630704 5735512 1743888 5687504 +1751256 5699792 1743888 5687504 1630704 5735512 1631312 5744824 +1630608 5735424 1630704 5735512 1629944 5726576 1629944 5726624 +1630608 5735424 1630704 5735512 1629944 5726624 1629928 5726696 +1630704 5735512 1743888 5687504 1629944 5726576 1629944 5726624 +1630608 5735424 1629416 5736656 1630704 5735512 1629928 5726696 +1630704 5735512 1629944 5726576 1629944 5726624 1629928 5726696 +1629432 5736720 1630424 5743368 1630632 5743536 1630704 5735512 +1629432 5736720 1630424 5743368 1630704 5735512 1629416 5736656 +1630632 5743536 1630864 5743768 1630704 5735512 1630424 5743368 +1629432 5736720 1629784 5742896 1630424 5743368 1630704 5735512 +1630608 5735424 1629464 5735560 1629416 5736656 1630704 5735512 +1629464 5735560 1629320 5736568 1629416 5736656 1630704 5735512 +1629416 5736656 1629432 5736720 1630704 5735512 1629464 5735560 +1630608 5735424 1629464 5735560 1630704 5735512 1629928 5726696 +1630608 5735424 1630440 5735312 1629464 5735560 1630704 5735512 +1630608 5735424 1630704 5735512 1629928 5726696 1629320 5731248 +1630608 5735424 1630704 5735512 1629320 5731248 1630440 5735312 +1630704 5735512 1629944 5726624 1629928 5726696 1629320 5731248 +1630608 5735424 1629464 5735560 1630704 5735512 1629320 5731248 +1629928 5726696 1629304 5731208 1629320 5731248 1630704 5735512 +1751256 5699792 1630704 5735512 1631312 5744824 1760125 5760125 +1629432 5736720 1630688 5735528 1630704 5735512 1629416 5736656 +1630424 5743368 1630688 5735528 1629432 5736720 1629784 5742896 +1630704 5735512 1629464 5735560 1629416 5736656 1630688 5735528 +1629416 5736656 1629432 5736720 1630688 5735528 1629464 5735560 +1629464 5735560 1629320 5736568 1629416 5736656 1630688 5735528 +1630688 5735528 1630424 5743368 1630704 5735512 1629464 5735560 +1629432 5736720 1630424 5743368 1630688 5735528 1629416 5736656 +1630704 5735512 1630688 5735528 1630424 5743368 1630632 5743536 +1630704 5735512 1630688 5735528 1630632 5743536 1630864 5743768 +1630704 5735512 1629464 5735560 1630688 5735528 1630632 5743536 +1630688 5735528 1629432 5736720 1630424 5743368 1630632 5743536 +1630704 5735512 1630608 5735424 1629464 5735560 1630688 5735528 +1629464 5735560 1629416 5736656 1630688 5735528 1630608 5735424 +1630704 5735512 1630608 5735424 1630688 5735528 1630632 5743536 +1630608 5735424 1630440 5735312 1629464 5735560 1630688 5735528 +1629464 5735560 1629416 5736656 1630688 5735528 1630440 5735312 +1630440 5735312 1630120 5735160 1629464 5735560 1630688 5735528 +1630608 5735424 1630440 5735312 1630688 5735528 1630704 5735512 +1630632 5743536 1630704 5735568 1630704 5735512 1630688 5735528 +1630704 5735512 1630704 5735568 1630864 5743768 1630952 5743928 +1630704 5735512 1630704 5735568 1630952 5743928 1631312 5744824 +1630952 5743928 1630992 5744048 1631312 5744824 1630704 5735568 +1630704 5735568 1630864 5743768 1630952 5743928 1631312 5744824 +1630704 5735512 1630704 5735568 1631312 5744824 1751256 5699792 +1630704 5735568 1630952 5743928 1631312 5744824 1751256 5699792 +1630704 5735512 1630704 5735568 1751256 5699792 1743888 5687504 +1630704 5735568 1751256 5699792 1630704 5735512 1630688 5735528 +1630704 5735568 1630632 5743536 1630864 5743768 1630952 5743928 +1630632 5743536 1630864 5743768 1630704 5735568 1630688 5735528 +1630632 5743536 1630704 5735568 1630688 5735528 1630424 5743368 +1630704 5735568 1630704 5735512 1630688 5735528 1630424 5743368 +1630688 5735528 1629432 5736720 1630424 5743368 1630704 5735568 +1630688 5735528 1629432 5736720 1630704 5735568 1630704 5735512 +1629432 5736720 1629784 5742896 1630424 5743368 1630704 5735568 +1630688 5735528 1629416 5736656 1629432 5736720 1630704 5735568 +1630688 5735528 1629464 5735560 1629416 5736656 1630704 5735568 +1630688 5735528 1629464 5735560 1630704 5735568 1630704 5735512 +1629464 5735560 1629320 5736568 1629416 5736656 1630704 5735568 +1630688 5735528 1630440 5735312 1629464 5735560 1630704 5735568 +1629464 5735560 1629416 5736656 1630704 5735568 1630440 5735312 +1630688 5735528 1630440 5735312 1630704 5735568 1630704 5735512 +1629432 5736720 1630424 5743368 1630704 5735568 1629416 5736656 +1629416 5736656 1629432 5736720 1630704 5735568 1629464 5735560 +1630632 5743536 1630864 5743768 1630704 5735568 1630424 5743368 +1630440 5735312 1630120 5735160 1629464 5735560 1630704 5735568 +1630424 5743368 1630632 5743536 1630704 5735568 1629432 5736720 +1630688 5735528 1630608 5735424 1630440 5735312 1630704 5735568 +1630688 5735528 1630608 5735424 1630704 5735568 1630704 5735512 +1630440 5735312 1629464 5735560 1630704 5735568 1630608 5735424 +1630688 5735528 1630704 5735512 1630608 5735424 1630704 5735568 +1631312 5744824 1760125 5760125 1751256 5699792 1630704 5735568 +1630424 5743368 1630672 5735640 1629432 5736720 1629784 5742896 +1629432 5736720 1630672 5735640 1630704 5735568 1629416 5736656 +1630704 5735568 1629464 5735560 1629416 5736656 1630672 5735640 +1630704 5735568 1630440 5735312 1629464 5735560 1630672 5735640 +1629464 5735560 1629320 5736568 1629416 5736656 1630672 5735640 +1630704 5735568 1630608 5735424 1630440 5735312 1630672 5735640 +1630440 5735312 1629464 5735560 1630672 5735640 1630608 5735424 +1629416 5736656 1629432 5736720 1630672 5735640 1629464 5735560 +1629464 5735560 1629416 5736656 1630672 5735640 1630440 5735312 +1629432 5736720 1630424 5743368 1630672 5735640 1629416 5736656 +1630672 5735640 1630424 5743368 1630704 5735568 1630608 5735424 +1630440 5735312 1630120 5735160 1629464 5735560 1630672 5735640 +1630704 5735568 1630672 5735640 1630424 5743368 1630632 5743536 +1630672 5735640 1629432 5736720 1630424 5743368 1630632 5743536 +1630704 5735568 1630608 5735424 1630672 5735640 1630632 5743536 +1630704 5735568 1630672 5735640 1630632 5743536 1630864 5743768 +1630704 5735568 1630672 5735640 1630864 5743768 1630952 5743928 +1630704 5735568 1630672 5735640 1630952 5743928 1631312 5744824 +1630704 5735568 1630608 5735424 1630672 5735640 1630952 5743928 +1630672 5735640 1630632 5743536 1630864 5743768 1630952 5743928 +1630672 5735640 1630424 5743368 1630632 5743536 1630864 5743768 +1630704 5735568 1630688 5735528 1630608 5735424 1630672 5735640 +1630608 5735424 1630440 5735312 1630672 5735640 1630688 5735528 +1630704 5735568 1630688 5735528 1630672 5735640 1630952 5743928 +1630688 5735528 1630704 5735512 1630608 5735424 1630672 5735640 +1629416 5736656 1630480 5735720 1629464 5735560 1629320 5736568 +1630672 5735640 1630480 5735720 1629416 5736656 1629432 5736720 +1629464 5735560 1630480 5735720 1630672 5735640 1630440 5735312 +1630672 5735640 1630608 5735424 1630440 5735312 1630480 5735720 +1630672 5735640 1630688 5735528 1630608 5735424 1630480 5735720 +1630440 5735312 1629464 5735560 1630480 5735720 1630608 5735424 +1630672 5735640 1630608 5735424 1630480 5735720 1629432 5736720 +1630672 5735640 1630480 5735720 1629432 5736720 1630424 5743368 +1630480 5735720 1629464 5735560 1629416 5736656 1629432 5736720 +1629464 5735560 1629416 5736656 1630480 5735720 1630440 5735312 +1629464 5735560 1630480 5735720 1630440 5735312 1630120 5735160 +1630480 5735720 1630608 5735424 1630440 5735312 1630120 5735160 +1629464 5735560 1629416 5736656 1630480 5735720 1630120 5735160 +1629464 5735560 1630480 5735720 1630120 5735160 1629696 5735040 +1629416 5736656 1630248 5735688 1629464 5735560 1629320 5736568 +1630248 5735688 1630480 5735720 1629464 5735560 1629320 5736568 +1629464 5735560 1629288 5736552 1629320 5736568 1630248 5735688 +1630480 5735720 1630248 5735688 1629416 5736656 1629432 5736720 +1630480 5735720 1630248 5735688 1629432 5736720 1630672 5735640 +1630480 5735720 1629464 5735560 1630248 5735688 1629432 5736720 +1629464 5735560 1630248 5735688 1630480 5735720 1630120 5735160 +1629464 5735560 1629320 5736568 1630248 5735688 1630120 5735160 +1630248 5735688 1629432 5736720 1630480 5735720 1630120 5735160 +1629416 5736656 1629432 5736720 1630248 5735688 1629320 5736568 +1630480 5735720 1630440 5735312 1630120 5735160 1630248 5735688 +1630480 5735720 1630608 5735424 1630440 5735312 1630248 5735688 +1630480 5735720 1630440 5735312 1630248 5735688 1629432 5736720 +1630120 5735160 1629464 5735560 1630248 5735688 1630440 5735312 +1629464 5735560 1630248 5735688 1630120 5735160 1629696 5735040 +1629464 5735560 1630192 5735704 1630248 5735688 1630120 5735160 +1630192 5735704 1629320 5736568 1630248 5735688 1630120 5735160 +1629464 5735560 1629320 5736568 1630192 5735704 1630120 5735160 +1630248 5735688 1630192 5735704 1629320 5736568 1629416 5736656 +1630248 5735688 1630120 5735160 1630192 5735704 1629416 5736656 +1630192 5735704 1629464 5735560 1629320 5736568 1629416 5736656 +1629320 5736568 1630192 5735704 1629464 5735560 1629288 5736552 +1630248 5735688 1630440 5735312 1630120 5735160 1630192 5735704 +1630248 5735688 1630192 5735704 1629416 5736656 1629432 5736720 +1630248 5735688 1630120 5735160 1630192 5735704 1629432 5736720 +1630192 5735704 1629320 5736568 1629416 5736656 1629432 5736720 +1630248 5735688 1630192 5735704 1629432 5736720 1630480 5735720 +1630248 5735688 1630120 5735160 1630192 5735704 1630480 5735720 +1629432 5736720 1630672 5735640 1630480 5735720 1630192 5735704 +1630192 5735704 1629416 5736656 1629432 5736720 1630480 5735720 +1629464 5735560 1630192 5735704 1630120 5735160 1629696 5735040 +1630192 5735704 1629968 5735816 1629320 5736568 1629416 5736656 +1630192 5735704 1629464 5735560 1629968 5735816 1629416 5736656 +1629464 5735560 1629968 5735816 1630192 5735704 1630120 5735160 +1630192 5735704 1630248 5735688 1630120 5735160 1629968 5735816 +1629968 5735816 1629416 5736656 1630192 5735704 1630120 5735160 +1629968 5735816 1629464 5735560 1629320 5736568 1629416 5736656 +1629464 5735560 1629320 5736568 1629968 5735816 1630120 5735160 +1630192 5735704 1629968 5735816 1629416 5736656 1629432 5736720 +1629968 5735816 1629320 5736568 1629416 5736656 1629432 5736720 +1630192 5735704 1630120 5735160 1629968 5735816 1629432 5736720 +1629320 5736568 1629968 5735816 1629464 5735560 1629288 5736552 +1629320 5736568 1629416 5736656 1629968 5735816 1629288 5736552 +1629968 5735816 1630120 5735160 1629464 5735560 1629288 5736552 +1629464 5735560 1629008 5736448 1629288 5736552 1629968 5735816 +1630192 5735704 1629968 5735816 1629432 5736720 1630480 5735720 +1630192 5735704 1630120 5735160 1629968 5735816 1630480 5735720 +1629968 5735816 1629416 5736656 1629432 5736720 1630480 5735720 +1629432 5736720 1630672 5735640 1630480 5735720 1629968 5735816 +1630192 5735704 1629968 5735816 1630480 5735720 1630248 5735688 +1629464 5735560 1629968 5735816 1630120 5735160 1629696 5735040 +1629464 5735560 1629840 5735800 1629968 5735816 1630120 5735160 +1629968 5735816 1630192 5735704 1630120 5735160 1629840 5735800 +1630192 5735704 1630248 5735688 1630120 5735160 1629840 5735800 +1629840 5735800 1629288 5736552 1629968 5735816 1630192 5735704 +1630120 5735160 1629464 5735560 1629840 5735800 1630192 5735704 +1629464 5735560 1629288 5736552 1629840 5735800 1630120 5735160 +1629288 5736552 1629840 5735800 1629464 5735560 1629008 5736448 +1629968 5735816 1629840 5735800 1629288 5736552 1629320 5736568 +1629968 5735816 1629840 5735800 1629320 5736568 1629416 5736656 +1629968 5735816 1629840 5735800 1629416 5736656 1629432 5736720 +1629968 5735816 1630192 5735704 1629840 5735800 1629416 5736656 +1629840 5735800 1629464 5735560 1629288 5736552 1629320 5736568 +1629840 5735800 1629288 5736552 1629320 5736568 1629416 5736656 +1629464 5735560 1629840 5735800 1630120 5735160 1629696 5735040 +1629840 5735800 1629680 5735728 1629288 5736552 1629320 5736568 +1629840 5735800 1629464 5735560 1629680 5735728 1629320 5736568 +1629464 5735560 1629680 5735728 1629840 5735800 1630120 5735160 +1629840 5735800 1630192 5735704 1630120 5735160 1629680 5735728 +1629680 5735728 1629320 5736568 1629840 5735800 1630120 5735160 +1629680 5735728 1629464 5735560 1629288 5736552 1629320 5736568 +1629464 5735560 1629288 5736552 1629680 5735728 1630120 5735160 +1629288 5736552 1629680 5735728 1629464 5735560 1629008 5736448 +1629288 5736552 1629320 5736568 1629680 5735728 1629008 5736448 +1629680 5735728 1630120 5735160 1629464 5735560 1629008 5736448 +1629840 5735800 1629680 5735728 1629320 5736568 1629416 5736656 +1629464 5735560 1629280 5735448 1629008 5736448 1629680 5735728 +1629464 5735560 1629680 5735728 1630120 5735160 1629696 5735040 +1629464 5735560 1629680 5735728 1629696 5735040 1629328 5735456 +1629680 5735728 1629840 5735800 1630120 5735160 1629696 5735040 +1629464 5735560 1629008 5736448 1629680 5735728 1629696 5735040 +1630120 5735160 1629808 5735480 1629680 5735728 1629840 5735800 +1630120 5735160 1629808 5735480 1629840 5735800 1630192 5735704 +1630120 5735160 1629808 5735480 1630192 5735704 1630248 5735688 +1629840 5735800 1629968 5735816 1630192 5735704 1629808 5735480 +1630192 5735704 1630120 5735160 1629808 5735480 1629968 5735816 +1629808 5735480 1629680 5735728 1629840 5735800 1629968 5735816 +1629808 5735480 1629696 5735040 1629680 5735728 1629840 5735800 +1630120 5735160 1629696 5735040 1629808 5735480 1630192 5735704 +1629680 5735728 1629808 5735480 1629696 5735040 1629464 5735560 +1629696 5735040 1629328 5735456 1629464 5735560 1629808 5735480 +1629680 5735728 1629840 5735800 1629808 5735480 1629464 5735560 +1629808 5735480 1630120 5735160 1629696 5735040 1629464 5735560 +1629464 5735560 1629664 5735456 1629696 5735040 1629328 5735456 +1629696 5735040 1629208 5735392 1629328 5735456 1629664 5735456 +1629696 5735040 1629664 5735456 1629808 5735480 1630120 5735160 +1629464 5735560 1629808 5735480 1629664 5735456 1629328 5735456 +1629664 5735456 1629808 5735480 1629696 5735040 1629328 5735456 +1629808 5735480 1629664 5735456 1629464 5735560 1629680 5735728 +1629808 5735480 1629664 5735456 1629680 5735728 1629840 5735800 +1629808 5735480 1629696 5735040 1629664 5735456 1629680 5735728 +1629664 5735456 1629328 5735456 1629464 5735560 1629680 5735728 +1629328 5735456 1629464 5735360 1629696 5735040 1629208 5735392 +1629664 5735456 1629464 5735360 1629328 5735456 1629464 5735560 +1629664 5735456 1629464 5735360 1629464 5735560 1629680 5735728 +1629664 5735456 1629696 5735040 1629464 5735360 1629464 5735560 +1629696 5735040 1629464 5735360 1629664 5735456 1629808 5735480 +1629328 5735456 1629464 5735560 1629464 5735360 1629208 5735392 +1629464 5735360 1629664 5735456 1629696 5735040 1629208 5735392 +1629328 5735456 1629464 5735360 1629208 5735392 1629280 5735448 +1629696 5735040 1629168 5734864 1629208 5735392 1629464 5735360 +1629208 5735392 1629328 5735456 1629464 5735360 1629168 5734864 +1629168 5734864 1629064 5735344 1629208 5735392 1629464 5735360 +1629696 5735040 1629168 5734864 1629464 5735360 1629664 5735456 +1629464 5735360 1629352 5735280 1629208 5735392 1629328 5735456 +1629208 5735392 1629352 5735280 1629168 5734864 1629064 5735344 +1629168 5734864 1628944 5734832 1629064 5735344 1629352 5735280 +1629464 5735360 1629352 5735280 1629328 5735456 1629464 5735560 +1629464 5735360 1629168 5734864 1629352 5735280 1629328 5735456 +1629352 5735280 1629064 5735344 1629208 5735392 1629328 5735456 +1629352 5735280 1629464 5735360 1629168 5734864 1629064 5735344 +1629208 5735392 1629280 5735448 1629328 5735456 1629352 5735280 +1629328 5735456 1629464 5735360 1629352 5735280 1629280 5735448 +1629208 5735392 1629280 5735448 1629352 5735280 1629064 5735344 +1629168 5734864 1629352 5735280 1629464 5735360 1629696 5735040 +1629352 5735280 1629328 5735456 1629464 5735360 1629696 5735040 +1629464 5735360 1629664 5735456 1629696 5735040 1629352 5735280 +1629168 5734864 1629064 5735344 1629352 5735280 1629696 5735040 +1629064 5735344 1629312 5735264 1629168 5734864 1628944 5734832 +1629352 5735280 1629312 5735264 1629064 5735344 1629208 5735392 +1629352 5735280 1629312 5735264 1629208 5735392 1629280 5735448 +1629312 5735264 1629064 5735344 1629208 5735392 1629280 5735448 +1629352 5735280 1629168 5734864 1629312 5735264 1629280 5735448 +1629168 5734864 1629312 5735264 1629352 5735280 1629696 5735040 +1629312 5735264 1629280 5735448 1629352 5735280 1629696 5735040 +1629312 5735264 1629168 5734864 1629064 5735344 1629208 5735392 +1629168 5734864 1629064 5735344 1629312 5735264 1629696 5735040 +1629352 5735280 1629312 5735264 1629280 5735448 1629328 5735456 +1629352 5735280 1629464 5735360 1629696 5735040 1629312 5735264 +1629064 5735344 1629256 5735208 1629168 5734864 1628944 5734832 +1629312 5735264 1629256 5735208 1629064 5735344 1629208 5735392 +1629312 5735264 1629256 5735208 1629208 5735392 1629280 5735448 +1629312 5735264 1629168 5734864 1629256 5735208 1629208 5735392 +1629168 5734864 1629256 5735208 1629312 5735264 1629696 5735040 +1629312 5735264 1629352 5735280 1629696 5735040 1629256 5735208 +1629256 5735208 1629208 5735392 1629312 5735264 1629352 5735280 +1629696 5735040 1629168 5734864 1629256 5735208 1629352 5735280 +1629256 5735208 1629168 5734864 1629064 5735344 1629208 5735392 +1629168 5734864 1629064 5735344 1629256 5735208 1629696 5735040 +1629352 5735280 1629464 5735360 1629696 5735040 1629256 5735208 +1629696 5735040 1629248 5735168 1629256 5735208 1629352 5735280 +1629256 5735208 1629312 5735264 1629352 5735280 1629248 5735168 +1629352 5735280 1629696 5735040 1629248 5735168 1629312 5735264 +1629248 5735168 1629168 5734864 1629256 5735208 1629312 5735264 +1629256 5735208 1629248 5735168 1629168 5734864 1629064 5735344 +1629168 5734864 1628944 5734832 1629064 5735344 1629248 5735168 +1628944 5734832 1628824 5735312 1629064 5735344 1629248 5735168 +1629256 5735208 1629248 5735168 1629064 5735344 1629208 5735392 +1629256 5735208 1629312 5735264 1629248 5735168 1629064 5735344 +1629064 5735344 1629256 5735208 1629248 5735168 1628944 5734832 +1629248 5735168 1629696 5735040 1629168 5734864 1628944 5734832 +1629696 5735040 1629168 5734864 1629248 5735168 1629352 5735280 +1629696 5735040 1629248 5735168 1629352 5735280 1629464 5735360 +1629248 5735168 1629296 5735120 1629168 5734864 1628944 5734832 +1629696 5735040 1629296 5735120 1629248 5735168 1629352 5735280 +1629248 5735168 1629312 5735264 1629352 5735280 1629296 5735120 +1629248 5735168 1629256 5735208 1629312 5735264 1629296 5735120 +1629312 5735264 1629352 5735280 1629296 5735120 1629256 5735208 +1629296 5735120 1629168 5734864 1629248 5735168 1629256 5735208 +1629352 5735280 1629696 5735040 1629296 5735120 1629312 5735264 +1629696 5735040 1629168 5734864 1629296 5735120 1629352 5735280 +1629696 5735040 1629296 5735120 1629352 5735280 1629464 5735360 +1629352 5735280 1629376 5735128 1629296 5735120 1629312 5735264 +1629296 5735120 1629256 5735208 1629312 5735264 1629376 5735128 +1629296 5735120 1629248 5735168 1629256 5735208 1629376 5735128 +1629312 5735264 1629352 5735280 1629376 5735128 1629256 5735208 +1629376 5735128 1629696 5735040 1629296 5735120 1629256 5735208 +1629296 5735120 1629376 5735128 1629696 5735040 1629168 5734864 +1629296 5735120 1629376 5735128 1629168 5734864 1629248 5735168 +1629296 5735120 1629256 5735208 1629376 5735128 1629168 5734864 +1629376 5735128 1629352 5735280 1629696 5735040 1629168 5734864 +1629352 5735280 1629696 5735040 1629376 5735128 1629312 5735264 +1629696 5735040 1629376 5735128 1629352 5735280 1629464 5735360 +1629696 5735040 1629376 5735128 1629464 5735360 1629664 5735456 +1629696 5735040 1629168 5734864 1629376 5735128 1629464 5735360 +1629376 5735128 1629312 5735264 1629352 5735280 1629464 5735360 +1629696 5735040 1629616 5735200 1629664 5735456 1629808 5735480 +1629696 5735040 1629616 5735200 1629808 5735480 1630120 5735160 +1629808 5735480 1630192 5735704 1630120 5735160 1629616 5735200 +1629616 5735200 1629664 5735456 1629808 5735480 1630120 5735160 +1629464 5735360 1629616 5735200 1629696 5735040 1629376 5735128 +1629696 5735040 1629168 5734864 1629376 5735128 1629616 5735200 +1629696 5735040 1629376 5735128 1629616 5735200 1630120 5735160 +1629616 5735200 1629464 5735360 1629664 5735456 1629808 5735480 +1629464 5735360 1629664 5735456 1629616 5735200 1629376 5735128 +1629464 5735360 1629616 5735200 1629376 5735128 1629352 5735280 +1629616 5735200 1629968 5735296 1630120 5735160 1629696 5735040 +1630120 5735160 1629968 5735296 1629808 5735480 1630192 5735704 +1630120 5735160 1629968 5735296 1630192 5735704 1630248 5735688 +1629808 5735480 1629968 5735816 1630192 5735704 1629968 5735296 +1629968 5735296 1629808 5735480 1630192 5735704 1630248 5735688 +1629808 5735480 1629968 5735296 1629616 5735200 1629664 5735456 +1629616 5735200 1629968 5735296 1629696 5735040 1629376 5735128 +1629616 5735200 1629808 5735480 1629968 5735296 1629696 5735040 +1629968 5735296 1630248 5735688 1630120 5735160 1629696 5735040 +1629968 5735296 1629616 5735200 1629808 5735480 1630192 5735704 +1630120 5735160 1629968 5735296 1630248 5735688 1630440 5735312 +1629968 5735296 1630192 5735704 1630248 5735688 1630440 5735312 +1630120 5735160 1629696 5735040 1629968 5735296 1630440 5735312 +1630248 5735688 1630480 5735720 1630440 5735312 1629968 5735296 +1630248 5735688 1630064 5735368 1629968 5735296 1630192 5735704 +1629968 5735296 1629808 5735480 1630192 5735704 1630064 5735368 +1630192 5735704 1630248 5735688 1630064 5735368 1629808 5735480 +1629808 5735480 1629968 5735816 1630192 5735704 1630064 5735368 +1630064 5735368 1630440 5735312 1629968 5735296 1629808 5735480 +1629968 5735296 1629616 5735200 1629808 5735480 1630064 5735368 +1630248 5735688 1630440 5735312 1630064 5735368 1630192 5735704 +1629968 5735296 1630064 5735368 1630440 5735312 1630120 5735160 +1629968 5735296 1630064 5735368 1630120 5735160 1629696 5735040 +1629968 5735296 1629808 5735480 1630064 5735368 1630120 5735160 +1630064 5735368 1630248 5735688 1630440 5735312 1630120 5735160 +1630440 5735312 1630064 5735368 1630248 5735688 1630480 5735720 +1630064 5735368 1630040 5735432 1630192 5735704 1630248 5735688 +1630192 5735704 1630040 5735432 1629808 5735480 1629968 5735816 +1629808 5735480 1629840 5735800 1629968 5735816 1630040 5735432 +1629808 5735480 1630040 5735432 1630064 5735368 1629968 5735296 +1629808 5735480 1630040 5735432 1629968 5735296 1629616 5735200 +1630064 5735368 1629968 5735296 1630040 5735432 1630248 5735688 +1630064 5735368 1630040 5735432 1630248 5735688 1630440 5735312 +1630040 5735432 1629968 5735816 1630192 5735704 1630248 5735688 +1630040 5735432 1629968 5735296 1629808 5735480 1629968 5735816 +1629968 5735816 1629968 5735472 1629808 5735480 1629840 5735800 +1630040 5735432 1629968 5735472 1629968 5735816 1630192 5735704 +1629808 5735480 1629680 5735728 1629840 5735800 1629968 5735472 +1630040 5735432 1629968 5735472 1630192 5735704 1630248 5735688 +1630040 5735432 1629808 5735480 1629968 5735472 1630192 5735704 +1629808 5735480 1629968 5735472 1630040 5735432 1629968 5735296 +1630040 5735432 1630064 5735368 1629968 5735296 1629968 5735472 +1629808 5735480 1629968 5735472 1629968 5735296 1629616 5735200 +1629968 5735472 1630192 5735704 1630040 5735432 1629968 5735296 +1629968 5735816 1630192 5735704 1629968 5735472 1629840 5735800 +1629968 5735472 1629968 5735296 1629808 5735480 1629840 5735800 +1629968 5735472 1629904 5735488 1629840 5735800 1629968 5735816 +1629840 5735800 1629904 5735488 1629808 5735480 1629680 5735728 +1629968 5735472 1629904 5735488 1629968 5735816 1630192 5735704 +1629968 5735472 1629808 5735480 1629904 5735488 1629968 5735816 +1629808 5735480 1629904 5735488 1629968 5735472 1629968 5735296 +1629808 5735480 1629904 5735488 1629968 5735296 1629616 5735200 +1629968 5735472 1630040 5735432 1629968 5735296 1629904 5735488 +1629904 5735488 1629968 5735816 1629968 5735472 1629968 5735296 +1629904 5735488 1629808 5735480 1629840 5735800 1629968 5735816 +1629808 5735480 1629840 5735800 1629904 5735488 1629968 5735296 +1629168 5734864 1629432 5733200 1629208 5731336 1628648 5734680 +1629168 5734864 1629432 5733200 1628648 5734680 1628944 5734832 +1629168 5734864 1629696 5735040 1629432 5733200 1628648 5734680 +1629432 5733200 1629696 5735040 1629208 5731336 1628648 5734680 +1629208 5731336 1629432 5733200 1629696 5735040 1629272 5731304 +1629696 5735040 1630120 5735160 1629272 5731304 1629432 5733200 +1629208 5731336 1628648 5734680 1629432 5733200 1629272 5731304 +1629432 5733200 1629168 5734864 1629696 5735040 1630120 5735160 +1629272 5731304 1629208 5731336 1629432 5733200 1630120 5735160 +1630120 5735160 1629320 5731248 1629272 5731304 1629432 5733200 +1630120 5735160 1629320 5731248 1629432 5733200 1629696 5735040 +1629272 5731304 1629208 5731336 1629432 5733200 1629320 5731248 +1630120 5735160 1630440 5735312 1629320 5731248 1629432 5733200 +1630120 5735160 1630440 5735312 1629432 5733200 1629696 5735040 +1630440 5735312 1630608 5735424 1629320 5731248 1629432 5733200 +1630608 5735424 1630704 5735512 1629320 5731248 1629432 5733200 +1630608 5735424 1630704 5735512 1629432 5733200 1630440 5735312 +1629320 5731248 1629272 5731304 1629432 5733200 1630704 5735512 +1630440 5735312 1630608 5735424 1629432 5733200 1630120 5735160 +1629208 5731336 1628768 5731368 1628648 5734680 1629432 5733200 +1628768 5731368 1628640 5731360 1628648 5734680 1629432 5733200 +1628648 5734680 1629168 5734864 1629432 5733200 1628640 5731360 +1629208 5731336 1628768 5731368 1629432 5733200 1629272 5731304 +1629208 5731336 1628864 5731328 1628768 5731368 1629432 5733200 +1628768 5731368 1628640 5731360 1629432 5733200 1629208 5731336 +1628640 5731360 1628376 5731232 1628648 5734680 1629432 5733200 +1628376 5731232 1628512 5734776 1628648 5734680 1629432 5733200 +1628376 5731232 1626328 5735392 1628512 5734776 1629432 5733200 +1628640 5731360 1628376 5731232 1629432 5733200 1628768 5731368 +1628648 5734680 1629168 5734864 1629432 5733200 1628512 5734776 +1628376 5731232 1628512 5734776 1629432 5733200 1628640 5731360 +1630704 5735512 1629928 5726696 1629320 5731248 1629432 5733200 +1630704 5735512 1629624 5733200 1629432 5733200 1630608 5735424 +1629432 5733200 1630440 5735312 1630608 5735424 1629624 5733200 +1630608 5735424 1630704 5735512 1629624 5733200 1630440 5735312 +1629624 5733200 1629320 5731248 1629432 5733200 1630440 5735312 +1630704 5735512 1629320 5731248 1629624 5733200 1630608 5735424 +1629432 5733200 1629624 5733200 1629320 5731248 1629272 5731304 +1629432 5733200 1630440 5735312 1629624 5733200 1629272 5731304 +1629624 5733200 1630704 5735512 1629320 5731248 1629272 5731304 +1629432 5733200 1629624 5733200 1629272 5731304 1629208 5731336 +1629432 5733200 1629624 5733200 1629208 5731336 1628768 5731368 +1629432 5733200 1630440 5735312 1629624 5733200 1629208 5731336 +1629624 5733200 1629320 5731248 1629272 5731304 1629208 5731336 +1629432 5733200 1630120 5735160 1630440 5735312 1629624 5733200 +1629432 5733200 1629696 5735040 1630120 5735160 1629624 5733200 +1630440 5735312 1630608 5735424 1629624 5733200 1630120 5735160 +1629432 5733200 1629696 5735040 1629624 5733200 1629208 5731336 +1629432 5733200 1629168 5734864 1629696 5735040 1629624 5733200 +1629696 5735040 1630120 5735160 1629624 5733200 1629168 5734864 +1629432 5733200 1628648 5734680 1629168 5734864 1629624 5733200 +1629432 5733200 1629168 5734864 1629624 5733200 1629208 5731336 +1630120 5735160 1630440 5735312 1629624 5733200 1629696 5735040 +1629320 5731248 1629624 5733200 1630704 5735512 1629928 5726696 +1629624 5733200 1629800 5733120 1629320 5731248 1629272 5731304 +1629624 5733200 1630704 5735512 1629800 5733120 1629272 5731304 +1630704 5735512 1629800 5733120 1629624 5733200 1630608 5735424 +1629624 5733200 1630440 5735312 1630608 5735424 1629800 5733120 +1629624 5733200 1630120 5735160 1630440 5735312 1629800 5733120 +1630440 5735312 1630608 5735424 1629800 5733120 1630120 5735160 +1629800 5733120 1629272 5731304 1629624 5733200 1630120 5735160 +1630608 5735424 1630704 5735512 1629800 5733120 1630440 5735312 +1629800 5733120 1630704 5735512 1629320 5731248 1629272 5731304 +1630704 5735512 1629320 5731248 1629800 5733120 1630608 5735424 +1629624 5733200 1629800 5733120 1629272 5731304 1629208 5731336 +1629800 5733120 1629320 5731248 1629272 5731304 1629208 5731336 +1629624 5733200 1630120 5735160 1629800 5733120 1629208 5731336 +1629624 5733200 1629800 5733120 1629208 5731336 1629432 5733200 +1629208 5731336 1628768 5731368 1629432 5733200 1629800 5733120 +1629624 5733200 1630120 5735160 1629800 5733120 1629432 5733200 +1629800 5733120 1629272 5731304 1629208 5731336 1629432 5733200 +1629624 5733200 1629696 5735040 1630120 5735160 1629800 5733120 +1629624 5733200 1629168 5734864 1629696 5735040 1629800 5733120 +1630120 5735160 1630440 5735312 1629800 5733120 1629696 5735040 +1629624 5733200 1629696 5735040 1629800 5733120 1629432 5733200 +1629320 5731248 1629800 5733120 1630704 5735512 1629928 5726696 +1630704 5735512 1629944 5726624 1629928 5726696 1629800 5733120 +1629320 5731248 1629272 5731304 1629800 5733120 1629928 5726696 +1629800 5733120 1630608 5735424 1630704 5735512 1629928 5726696 +1629320 5731248 1629800 5733120 1629928 5726696 1629304 5731208 +1629928 5726696 1629928 5733104 1630704 5735512 1629944 5726624 +1630704 5735512 1629928 5733104 1629800 5733120 1630608 5735424 +1629800 5733120 1630440 5735312 1630608 5735424 1629928 5733104 +1629800 5733120 1630120 5735160 1630440 5735312 1629928 5733104 +1629800 5733120 1629696 5735040 1630120 5735160 1629928 5733104 +1630120 5735160 1630440 5735312 1629928 5733104 1629696 5735040 +1630440 5735312 1630608 5735424 1629928 5733104 1630120 5735160 +1629928 5733104 1629928 5726696 1629800 5733120 1629696 5735040 +1630608 5735424 1630704 5735512 1629928 5733104 1630440 5735312 +1629800 5733120 1629624 5733200 1629696 5735040 1629928 5733104 +1629624 5733200 1629168 5734864 1629696 5735040 1629928 5733104 +1629696 5735040 1630120 5735160 1629928 5733104 1629624 5733200 +1629800 5733120 1629624 5733200 1629928 5733104 1629928 5726696 +1630704 5735512 1629928 5726696 1629928 5733104 1630608 5735424 +1629800 5733120 1629928 5733104 1629928 5726696 1629320 5731248 +1629800 5733120 1629928 5733104 1629320 5731248 1629272 5731304 +1629800 5733120 1629928 5733104 1629272 5731304 1629208 5731336 +1629800 5733120 1629624 5733200 1629928 5733104 1629272 5731304 +1629928 5733104 1630704 5735512 1629928 5726696 1629320 5731248 +1629928 5726696 1629304 5731208 1629320 5731248 1629928 5733104 +1629928 5733104 1629928 5726696 1629320 5731248 1629272 5731304 +1629928 5726696 1630040 5733128 1630704 5735512 1629944 5726624 +1629928 5733104 1630040 5733128 1629928 5726696 1629320 5731248 +1630704 5735512 1629944 5726576 1629944 5726624 1630040 5733128 +1629928 5733104 1630704 5735512 1630040 5733128 1629320 5731248 +1630704 5735512 1630040 5733128 1629928 5733104 1630608 5735424 +1629928 5733104 1630440 5735312 1630608 5735424 1630040 5733128 +1629928 5733104 1630120 5735160 1630440 5735312 1630040 5733128 +1629928 5733104 1629696 5735040 1630120 5735160 1630040 5733128 +1629928 5733104 1629624 5733200 1629696 5735040 1630040 5733128 +1629624 5733200 1629168 5734864 1629696 5735040 1630040 5733128 +1629696 5735040 1630120 5735160 1630040 5733128 1629624 5733200 +1630120 5735160 1630440 5735312 1630040 5733128 1629696 5735040 +1630440 5735312 1630608 5735424 1630040 5733128 1630120 5735160 +1629928 5733104 1629800 5733120 1629624 5733200 1630040 5733128 +1629624 5733200 1629696 5735040 1630040 5733128 1629800 5733120 +1630040 5733128 1629320 5731248 1629928 5733104 1629800 5733120 +1630608 5735424 1630704 5735512 1630040 5733128 1630440 5735312 +1629928 5726696 1629320 5731248 1630040 5733128 1629944 5726624 +1630040 5733128 1630608 5735424 1630704 5735512 1629944 5726624 +1629928 5726696 1629304 5731208 1629320 5731248 1630040 5733128 +1629928 5733104 1630040 5733128 1629320 5731248 1629272 5731304 +1630040 5733128 1630128 5733192 1629944 5726624 1629928 5726696 +1629944 5726624 1630128 5733192 1630704 5735512 1629944 5726576 +1630040 5733128 1630128 5733192 1629928 5726696 1629320 5731248 +1630128 5733192 1629944 5726624 1629928 5726696 1629320 5731248 +1630040 5733128 1630128 5733192 1629320 5731248 1629928 5733104 +1630040 5733128 1630704 5735512 1630128 5733192 1629320 5731248 +1630704 5735512 1630128 5733192 1630040 5733128 1630608 5735424 +1630040 5733128 1630440 5735312 1630608 5735424 1630128 5733192 +1630040 5733128 1630120 5735160 1630440 5735312 1630128 5733192 +1630040 5733128 1629696 5735040 1630120 5735160 1630128 5733192 +1630040 5733128 1629624 5733200 1629696 5735040 1630128 5733192 +1629624 5733200 1629168 5734864 1629696 5735040 1630128 5733192 +1630040 5733128 1629800 5733120 1629624 5733200 1630128 5733192 +1629624 5733200 1629696 5735040 1630128 5733192 1629800 5733120 +1629696 5735040 1630120 5735160 1630128 5733192 1629624 5733200 +1630120 5735160 1630440 5735312 1630128 5733192 1629696 5735040 +1630040 5733128 1629928 5733104 1629800 5733120 1630128 5733192 +1629800 5733120 1629624 5733200 1630128 5733192 1629928 5733104 +1630440 5735312 1630608 5735424 1630128 5733192 1630120 5735160 +1630128 5733192 1629320 5731248 1630040 5733128 1629928 5733104 +1630608 5735424 1630704 5735512 1630128 5733192 1630440 5735312 +1630128 5733192 1630704 5735512 1629944 5726624 1629928 5726696 +1630704 5735512 1629944 5726624 1630128 5733192 1630608 5735424 +1629928 5726696 1629304 5731208 1629320 5731248 1630128 5733192 +1629944 5726624 1630200 5733272 1630704 5735512 1629944 5726576 +1630128 5733192 1630200 5733272 1629944 5726624 1629928 5726696 +1630128 5733192 1630200 5733272 1629928 5726696 1629320 5731248 +1630128 5733192 1630200 5733272 1629320 5731248 1630040 5733128 +1630200 5733272 1629944 5726624 1629928 5726696 1629320 5731248 +1630128 5733192 1630704 5735512 1630200 5733272 1629320 5731248 +1630704 5735512 1630200 5733272 1630128 5733192 1630608 5735424 +1630128 5733192 1630440 5735312 1630608 5735424 1630200 5733272 +1630128 5733192 1630120 5735160 1630440 5735312 1630200 5733272 +1630128 5733192 1629696 5735040 1630120 5735160 1630200 5733272 +1630128 5733192 1629624 5733200 1629696 5735040 1630200 5733272 +1629624 5733200 1629168 5734864 1629696 5735040 1630200 5733272 +1630128 5733192 1629800 5733120 1629624 5733200 1630200 5733272 +1630128 5733192 1629928 5733104 1629800 5733120 1630200 5733272 +1629624 5733200 1629696 5735040 1630200 5733272 1629800 5733120 +1629696 5735040 1630120 5735160 1630200 5733272 1629624 5733200 +1630120 5735160 1630440 5735312 1630200 5733272 1629696 5735040 +1630440 5735312 1630608 5735424 1630200 5733272 1630120 5735160 +1630200 5733272 1629320 5731248 1630128 5733192 1629800 5733120 +1630608 5735424 1630704 5735512 1630200 5733272 1630440 5735312 +1630200 5733272 1630704 5735512 1629944 5726624 1629928 5726696 +1630704 5735512 1629944 5726624 1630200 5733272 1630608 5735424 +1629928 5726696 1629304 5731208 1629320 5731248 1630200 5733272 +1629944 5726624 1630456 5733648 1630704 5735512 1629944 5726576 +1630704 5735512 1743888 5687504 1629944 5726576 1630456 5733648 +1743888 5687504 1743800 5687320 1629944 5726576 1630456 5733648 +1630704 5735512 1751256 5699792 1743888 5687504 1630456 5733648 +1751256 5699792 1743976 5687584 1743888 5687504 1630456 5733648 +1743888 5687504 1629944 5726576 1630456 5733648 1751256 5699792 +1630704 5735512 1630704 5735568 1751256 5699792 1630456 5733648 +1629944 5726576 1629944 5726624 1630456 5733648 1743888 5687504 +1630200 5733272 1630456 5733648 1629944 5726624 1629928 5726696 +1630200 5733272 1630456 5733648 1629928 5726696 1629320 5731248 +1630200 5733272 1630704 5735512 1630456 5733648 1629928 5726696 +1630704 5735512 1630456 5733648 1630200 5733272 1630608 5735424 +1630200 5733272 1630440 5735312 1630608 5735424 1630456 5733648 +1630200 5733272 1630120 5735160 1630440 5735312 1630456 5733648 +1630200 5733272 1629696 5735040 1630120 5735160 1630456 5733648 +1630200 5733272 1629624 5733200 1629696 5735040 1630456 5733648 +1629624 5733200 1629168 5734864 1629696 5735040 1630456 5733648 +1629624 5733200 1629432 5733200 1629168 5734864 1630456 5733648 +1630200 5733272 1629800 5733120 1629624 5733200 1630456 5733648 +1629624 5733200 1629168 5734864 1630456 5733648 1630200 5733272 +1629696 5735040 1630120 5735160 1630456 5733648 1629168 5734864 +1630120 5735160 1630440 5735312 1630456 5733648 1629696 5735040 +1630440 5735312 1630608 5735424 1630456 5733648 1630120 5735160 +1630456 5733648 1629928 5726696 1630200 5733272 1629624 5733200 +1630608 5735424 1630704 5735512 1630456 5733648 1630440 5735312 +1629944 5726624 1629928 5726696 1630456 5733648 1629944 5726576 +1630456 5733648 1630608 5735424 1630704 5735512 1751256 5699792 +1751256 5699792 1630704 5733848 1630704 5735512 1630704 5735568 +1630456 5733648 1630704 5733848 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1630704 5733848 +1630456 5733648 1630704 5733848 1743888 5687504 1629944 5726576 +1743888 5687504 1743800 5687320 1629944 5726576 1630704 5733848 +1630704 5733848 1751256 5699792 1743888 5687504 1629944 5726576 +1630456 5733648 1630704 5733848 1629944 5726576 1629944 5726624 +1630704 5733848 1743888 5687504 1629944 5726576 1629944 5726624 +1630456 5733648 1630704 5733848 1629944 5726624 1629928 5726696 +1630704 5733848 1629944 5726576 1629944 5726624 1629928 5726696 +1630456 5733648 1630704 5733848 1629928 5726696 1630200 5733272 +1629928 5726696 1629320 5731248 1630200 5733272 1630704 5733848 +1629320 5731248 1630128 5733192 1630200 5733272 1630704 5733848 +1630200 5733272 1630456 5733648 1630704 5733848 1629320 5731248 +1630704 5733848 1629944 5726624 1629928 5726696 1629320 5731248 +1630456 5733648 1630704 5735512 1630704 5733848 1630200 5733272 +1630704 5735512 1630704 5733848 1630456 5733648 1630608 5735424 +1630456 5733648 1630440 5735312 1630608 5735424 1630704 5733848 +1630456 5733648 1630120 5735160 1630440 5735312 1630704 5733848 +1630456 5733648 1629696 5735040 1630120 5735160 1630704 5733848 +1630456 5733648 1629168 5734864 1629696 5735040 1630704 5733848 +1630120 5735160 1630440 5735312 1630704 5733848 1629696 5735040 +1630440 5735312 1630608 5735424 1630704 5733848 1630120 5735160 +1630704 5733848 1630200 5733272 1630456 5733648 1629696 5735040 +1630608 5735424 1630704 5735512 1630704 5733848 1630440 5735312 +1630704 5733848 1630704 5735512 1751256 5699792 1743888 5687504 +1630704 5735512 1751256 5699792 1630704 5733848 1630608 5735424 +1629928 5726696 1629304 5731208 1629320 5731248 1630704 5733848 +1751256 5699792 1630736 5733944 1630704 5735512 1630704 5735568 +1751256 5699792 1630736 5733944 1630704 5735568 1631312 5744824 +1630704 5735568 1630952 5743928 1631312 5744824 1630736 5733944 +1630736 5733944 1630704 5735512 1630704 5735568 1631312 5744824 +1630704 5735512 1630688 5735528 1630704 5735568 1630736 5733944 +1630704 5733848 1630736 5733944 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1630736 5733944 +1630704 5733848 1630736 5733944 1743888 5687504 1629944 5726576 +1743888 5687504 1743800 5687320 1629944 5726576 1630736 5733944 +1630704 5733848 1630736 5733944 1629944 5726576 1629944 5726624 +1630736 5733944 1743888 5687504 1629944 5726576 1629944 5726624 +1630704 5733848 1630736 5733944 1629944 5726624 1629928 5726696 +1630736 5733944 1751256 5699792 1743888 5687504 1629944 5726576 +1630704 5733848 1630704 5735512 1630736 5733944 1629944 5726624 +1630704 5735512 1630736 5733944 1630704 5733848 1630608 5735424 +1630704 5733848 1630440 5735312 1630608 5735424 1630736 5733944 +1630704 5733848 1630120 5735160 1630440 5735312 1630736 5733944 +1630704 5733848 1629696 5735040 1630120 5735160 1630736 5733944 +1630704 5733848 1630456 5733648 1629696 5735040 1630736 5733944 +1630456 5733648 1629168 5734864 1629696 5735040 1630736 5733944 +1629696 5735040 1630120 5735160 1630736 5733944 1630456 5733648 +1630120 5735160 1630440 5735312 1630736 5733944 1629696 5735040 +1630440 5735312 1630608 5735424 1630736 5733944 1630120 5735160 +1630736 5733944 1629944 5726624 1630704 5733848 1630456 5733648 +1630608 5735424 1630704 5735512 1630736 5733944 1630440 5735312 +1751256 5699792 1743888 5687504 1630736 5733944 1631312 5744824 +1630736 5733944 1630608 5735424 1630704 5735512 1630704 5735568 +1751256 5699792 1630736 5733944 1631312 5744824 1760125 5760125 +1630120 5735160 1630720 5734000 1630736 5733944 1629696 5735040 +1630736 5733944 1630456 5733648 1629696 5735040 1630720 5734000 +1630456 5733648 1629168 5734864 1629696 5735040 1630720 5734000 +1630736 5733944 1630704 5733848 1630456 5733648 1630720 5734000 +1630456 5733648 1629696 5735040 1630720 5734000 1630704 5733848 +1629696 5735040 1630120 5735160 1630720 5734000 1630456 5733648 +1630736 5733944 1630720 5734000 1630440 5735312 1630608 5735424 +1630736 5733944 1630720 5734000 1630608 5735424 1630704 5735512 +1630720 5734000 1630440 5735312 1630608 5735424 1630704 5735512 +1630720 5734000 1630704 5735512 1630736 5733944 1630704 5733848 +1630736 5733944 1630720 5734000 1630704 5735512 1630704 5735568 +1630720 5734000 1630120 5735160 1630440 5735312 1630608 5735424 +1630120 5735160 1630440 5735312 1630720 5734000 1629696 5735040 +1629696 5735040 1630664 5734072 1630720 5734000 1630456 5733648 +1629696 5735040 1630664 5734072 1630456 5733648 1629168 5734864 +1630720 5734000 1630704 5733848 1630456 5733648 1630664 5734072 +1630720 5734000 1630736 5733944 1630704 5733848 1630664 5734072 +1630456 5733648 1629696 5735040 1630664 5734072 1630704 5733848 +1629696 5735040 1630120 5735160 1630664 5734072 1630456 5733648 +1630664 5734072 1630120 5735160 1630720 5734000 1630704 5733848 +1630720 5734000 1630664 5734072 1630120 5735160 1630440 5735312 +1630720 5734000 1630664 5734072 1630440 5735312 1630608 5735424 +1630720 5734000 1630664 5734072 1630608 5735424 1630704 5735512 +1630720 5734000 1630664 5734072 1630704 5735512 1630736 5733944 +1630664 5734072 1630440 5735312 1630608 5735424 1630704 5735512 +1630720 5734000 1630704 5733848 1630664 5734072 1630704 5735512 +1630664 5734072 1630120 5735160 1630440 5735312 1630608 5735424 +1630664 5734072 1629696 5735040 1630120 5735160 1630440 5735312 +1629696 5735040 1630568 5734144 1630456 5733648 1629168 5734864 +1630456 5733648 1629624 5733200 1629168 5734864 1630568 5734144 +1629624 5733200 1629432 5733200 1629168 5734864 1630568 5734144 +1630456 5733648 1630200 5733272 1629624 5733200 1630568 5734144 +1630568 5734144 1630664 5734072 1630456 5733648 1629624 5733200 +1629168 5734864 1629696 5735040 1630568 5734144 1629624 5733200 +1630456 5733648 1630568 5734144 1630664 5734072 1630704 5733848 +1630456 5733648 1629624 5733200 1630568 5734144 1630704 5733848 +1630664 5734072 1630720 5734000 1630704 5733848 1630568 5734144 +1630568 5734144 1629696 5735040 1630664 5734072 1630704 5733848 +1630664 5734072 1630568 5734144 1629696 5735040 1630120 5735160 +1630664 5734072 1630704 5733848 1630568 5734144 1630120 5735160 +1629696 5735040 1630120 5735160 1630568 5734144 1629168 5734864 +1630664 5734072 1630568 5734144 1630120 5735160 1630440 5735312 +1630664 5734072 1630704 5733848 1630568 5734144 1630440 5735312 +1630568 5734144 1629696 5735040 1630120 5735160 1630440 5735312 +1630664 5734072 1630568 5734144 1630440 5735312 1630608 5735424 +1630664 5734072 1630568 5734144 1630608 5735424 1630704 5735512 +1630664 5734072 1630704 5733848 1630568 5734144 1630608 5735424 +1630568 5734144 1630120 5735160 1630440 5735312 1630608 5735424 +1629624 5733200 1630392 5734184 1630568 5734144 1630456 5733648 +1629168 5734864 1630392 5734184 1629624 5733200 1629432 5733200 +1629168 5734864 1630392 5734184 1629432 5733200 1628648 5734680 +1629624 5733200 1630392 5734184 1630456 5733648 1630200 5733272 +1630392 5734184 1629168 5734864 1630568 5734144 1630456 5733648 +1630568 5734144 1630704 5733848 1630456 5733648 1630392 5734184 +1629168 5734864 1630568 5734144 1630392 5734184 1629432 5733200 +1629624 5733200 1629432 5733200 1630392 5734184 1630456 5733648 +1630568 5734144 1630392 5734184 1629168 5734864 1629696 5735040 +1630568 5734144 1630456 5733648 1630392 5734184 1629696 5735040 +1630392 5734184 1629432 5733200 1629168 5734864 1629696 5735040 +1630568 5734144 1630392 5734184 1629696 5735040 1630120 5735160 +1630568 5734144 1630456 5733648 1630392 5734184 1630120 5735160 +1630392 5734184 1629168 5734864 1629696 5735040 1630120 5735160 +1630568 5734144 1630392 5734184 1630120 5735160 1630440 5735312 +1630568 5734144 1630456 5733648 1630392 5734184 1630440 5735312 +1630392 5734184 1629696 5735040 1630120 5735160 1630440 5735312 +1630568 5734144 1630392 5734184 1630440 5735312 1630608 5735424 +1629168 5734864 1630224 5734232 1629432 5733200 1628648 5734680 +1629432 5733200 1630224 5734232 1630392 5734184 1629624 5733200 +1630392 5734184 1630224 5734232 1629168 5734864 1629696 5735040 +1630224 5734232 1629696 5735040 1630392 5734184 1629624 5733200 +1630392 5734184 1630456 5733648 1629624 5733200 1630224 5734232 +1630392 5734184 1630568 5734144 1630456 5733648 1630224 5734232 +1629624 5733200 1629432 5733200 1630224 5734232 1630456 5733648 +1630456 5733648 1630200 5733272 1629624 5733200 1630224 5734232 +1629624 5733200 1629432 5733200 1630224 5734232 1630200 5733272 +1630200 5733272 1629800 5733120 1629624 5733200 1630224 5734232 +1630392 5734184 1630456 5733648 1630224 5734232 1629696 5735040 +1630456 5733648 1630200 5733272 1630224 5734232 1630392 5734184 +1630224 5734232 1629432 5733200 1629168 5734864 1629696 5735040 +1629432 5733200 1629168 5734864 1630224 5734232 1629624 5733200 +1630392 5734184 1630224 5734232 1629696 5735040 1630120 5735160 +1630224 5734232 1629168 5734864 1629696 5735040 1630120 5735160 +1630392 5734184 1630456 5733648 1630224 5734232 1630120 5735160 +1630392 5734184 1630224 5734232 1630120 5735160 1630440 5735312 +1629168 5734864 1630048 5734248 1629432 5733200 1628648 5734680 +1630224 5734232 1630048 5734248 1629168 5734864 1629696 5735040 +1630224 5734232 1630048 5734248 1629696 5735040 1630120 5735160 +1630048 5734248 1629168 5734864 1629696 5735040 1630120 5735160 +1630224 5734232 1629432 5733200 1630048 5734248 1630120 5735160 +1629432 5733200 1630048 5734248 1630224 5734232 1629624 5733200 +1630224 5734232 1630200 5733272 1629624 5733200 1630048 5734248 +1630200 5733272 1629800 5733120 1629624 5733200 1630048 5734248 +1630224 5734232 1630456 5733648 1630200 5733272 1630048 5734248 +1630200 5733272 1629624 5733200 1630048 5734248 1630456 5733648 +1630224 5734232 1630392 5734184 1630456 5733648 1630048 5734248 +1630048 5734248 1630120 5735160 1630224 5734232 1630456 5733648 +1629624 5733200 1629432 5733200 1630048 5734248 1630200 5733272 +1630048 5734248 1629432 5733200 1629168 5734864 1629696 5735040 +1629432 5733200 1629168 5734864 1630048 5734248 1629624 5733200 +1630224 5734232 1630048 5734248 1630120 5735160 1630392 5734184 +1629168 5734864 1629920 5734216 1629432 5733200 1628648 5734680 +1629168 5734864 1629920 5734216 1628648 5734680 1628944 5734832 +1628648 5734680 1628656 5734712 1628944 5734832 1629920 5734216 +1629432 5733200 1628512 5734776 1628648 5734680 1629920 5734216 +1629920 5734216 1629432 5733200 1628648 5734680 1628944 5734832 +1630048 5734248 1629920 5734216 1629168 5734864 1629696 5735040 +1630048 5734248 1629920 5734216 1629696 5735040 1630120 5735160 +1630048 5734248 1629432 5733200 1629920 5734216 1629696 5735040 +1629432 5733200 1629920 5734216 1630048 5734248 1629624 5733200 +1630048 5734248 1630200 5733272 1629624 5733200 1629920 5734216 +1630048 5734248 1630456 5733648 1630200 5733272 1629920 5734216 +1630200 5733272 1629800 5733120 1629624 5733200 1629920 5734216 +1630048 5734248 1630224 5734232 1630456 5733648 1629920 5734216 +1630200 5733272 1629624 5733200 1629920 5734216 1630456 5733648 +1629920 5734216 1629696 5735040 1630048 5734248 1630456 5733648 +1629624 5733200 1629432 5733200 1629920 5734216 1630200 5733272 +1629168 5734864 1629696 5735040 1629920 5734216 1628944 5734832 +1629920 5734216 1629624 5733200 1629432 5733200 1628648 5734680 +1628648 5734680 1629760 5734112 1629432 5733200 1628512 5734776 +1629920 5734216 1629760 5734112 1628648 5734680 1628944 5734832 +1629920 5734216 1629760 5734112 1628944 5734832 1629168 5734864 +1628648 5734680 1628656 5734712 1628944 5734832 1629760 5734112 +1629760 5734112 1628648 5734680 1628944 5734832 1629168 5734864 +1629920 5734216 1629760 5734112 1629168 5734864 1629696 5735040 +1629760 5734112 1628944 5734832 1629168 5734864 1629696 5735040 +1629920 5734216 1629760 5734112 1629696 5735040 1630048 5734248 +1629920 5734216 1629432 5733200 1629760 5734112 1629696 5735040 +1629432 5733200 1629760 5734112 1629920 5734216 1629624 5733200 +1629920 5734216 1630200 5733272 1629624 5733200 1629760 5734112 +1630200 5733272 1629800 5733120 1629624 5733200 1629760 5734112 +1629920 5734216 1630456 5733648 1630200 5733272 1629760 5734112 +1629920 5734216 1630048 5734248 1630456 5733648 1629760 5734112 +1630200 5733272 1629624 5733200 1629760 5734112 1630456 5733648 +1629760 5734112 1629696 5735040 1629920 5734216 1630456 5733648 +1629624 5733200 1629432 5733200 1629760 5734112 1630200 5733272 +1629760 5734112 1629432 5733200 1628648 5734680 1628944 5734832 +1629432 5733200 1628648 5734680 1629760 5734112 1629624 5733200 +1628648 5734680 1629664 5734016 1629432 5733200 1628512 5734776 +1629760 5734112 1629664 5734016 1628648 5734680 1628944 5734832 +1628648 5734680 1628656 5734712 1628944 5734832 1629664 5734016 +1629760 5734112 1629664 5734016 1628944 5734832 1629168 5734864 +1629760 5734112 1629664 5734016 1629168 5734864 1629696 5735040 +1629664 5734016 1628648 5734680 1628944 5734832 1629168 5734864 +1629760 5734112 1629432 5733200 1629664 5734016 1629168 5734864 +1629432 5733200 1629664 5734016 1629760 5734112 1629624 5733200 +1629760 5734112 1630200 5733272 1629624 5733200 1629664 5734016 +1630200 5733272 1629800 5733120 1629624 5733200 1629664 5734016 +1629760 5734112 1630456 5733648 1630200 5733272 1629664 5734016 +1629760 5734112 1629920 5734216 1630456 5733648 1629664 5734016 +1630200 5733272 1629624 5733200 1629664 5734016 1630456 5733648 +1629664 5734016 1629168 5734864 1629760 5734112 1630456 5733648 +1629624 5733200 1629432 5733200 1629664 5734016 1630200 5733272 +1629664 5734016 1629432 5733200 1628648 5734680 1628944 5734832 +1629432 5733200 1628648 5734680 1629664 5734016 1629624 5733200 +1628648 5734680 1629432 5733824 1629432 5733200 1628512 5734776 +1629664 5734016 1629432 5733824 1628648 5734680 1628944 5734832 +1628648 5734680 1628656 5734712 1628944 5734832 1629432 5733824 +1629664 5734016 1629432 5733824 1628944 5734832 1629168 5734864 +1629664 5734016 1629432 5733824 1629168 5734864 1629760 5734112 +1629432 5733824 1628648 5734680 1628944 5734832 1629168 5734864 +1629664 5734016 1629432 5733200 1629432 5733824 1629168 5734864 +1629432 5733200 1629432 5733824 1629664 5734016 1629624 5733200 +1629664 5734016 1630200 5733272 1629624 5733200 1629432 5733824 +1629432 5733824 1629168 5734864 1629664 5734016 1629624 5733200 +1629432 5733824 1629432 5733200 1628648 5734680 1628944 5734832 +1629432 5733200 1628648 5734680 1629432 5733824 1629624 5733200 +1629432 5733200 1629016 5733664 1628512 5734776 1628648 5734680 +1628512 5734776 1629016 5733664 1628376 5731232 1626328 5735392 +1628512 5734776 1629016 5733664 1626328 5735392 1626480 5735432 +1629016 5733664 1628376 5731232 1626328 5735392 1626480 5735432 +1628512 5734776 1629016 5733664 1626480 5735432 1626712 5735520 +1629432 5733200 1629016 5733664 1628648 5734680 1629432 5733824 +1629016 5733664 1628512 5734776 1628648 5734680 1629432 5733824 +1629432 5733200 1628376 5731232 1629016 5733664 1629432 5733824 +1628376 5731232 1628336 5731192 1626328 5735392 1629016 5733664 +1628376 5731232 1629016 5733664 1629432 5733200 1628640 5731360 +1629432 5733200 1628768 5731368 1628640 5731360 1629016 5733664 +1629016 5733664 1629432 5733824 1629432 5733200 1628640 5731360 +1628648 5734680 1628944 5734832 1629432 5733824 1629016 5733664 +1629016 5733664 1626480 5735432 1628512 5734776 1628648 5734680 +1629432 5733200 1629016 5733664 1629432 5733824 1629624 5733200 +1629016 5733664 1628640 5731360 1628376 5731232 1626328 5735392 +1629016 5733664 1628832 5733560 1626328 5735392 1626480 5735432 +1629016 5733664 1628832 5733560 1626480 5735432 1628512 5734776 +1628832 5733560 1626328 5735392 1626480 5735432 1628512 5734776 +1626480 5735432 1626712 5735520 1628512 5734776 1628832 5733560 +1628832 5733560 1628376 5731232 1626328 5735392 1626480 5735432 +1626328 5735392 1628832 5733560 1628376 5731232 1628336 5731192 +1626328 5735392 1626480 5735432 1628832 5733560 1628336 5731192 +1628832 5733560 1629016 5733664 1628376 5731232 1628336 5731192 +1626328 5735392 1628832 5733560 1628336 5731192 1625176 5734984 +1628336 5731192 1625040 5734896 1625176 5734984 1628832 5733560 +1628336 5731192 1627440 5730528 1625040 5734896 1628832 5733560 +1626328 5735392 1626480 5735432 1628832 5733560 1625176 5734984 +1628832 5733560 1628376 5731232 1628336 5731192 1625040 5734896 +1626328 5735392 1628832 5733560 1625176 5734984 1626192 5735400 +1625176 5734984 1626328 5735392 1628832 5733560 1625040 5734896 +1629016 5733664 1628832 5733560 1628512 5734776 1628648 5734680 +1629016 5733664 1628832 5733560 1628648 5734680 1629432 5733824 +1628832 5733560 1626480 5735432 1628512 5734776 1628648 5734680 +1628376 5731232 1628832 5733560 1629016 5733664 1628640 5731360 +1628376 5731232 1628336 5731192 1628832 5733560 1628640 5731360 +1629016 5733664 1629432 5733200 1628640 5731360 1628832 5733560 +1629432 5733200 1628768 5731368 1628640 5731360 1628832 5733560 +1629016 5733664 1629432 5733824 1629432 5733200 1628832 5733560 +1628640 5731360 1628376 5731232 1628832 5733560 1629432 5733200 +1629016 5733664 1629432 5733200 1628832 5733560 1628648 5734680 +1628832 5733560 1628768 5733488 1625040 5734896 1625176 5734984 +1625040 5734896 1628768 5733488 1628336 5731192 1627440 5730528 +1628832 5733560 1628336 5731192 1628768 5733488 1625176 5734984 +1628768 5733488 1627440 5730528 1625040 5734896 1625176 5734984 +1628768 5733488 1628832 5733560 1628336 5731192 1627440 5730528 +1625040 5734896 1628768 5733488 1627440 5730528 1624728 5734744 +1628336 5731192 1628768 5733488 1628832 5733560 1628376 5731232 +1628768 5733488 1625176 5734984 1628832 5733560 1628376 5731232 +1628832 5733560 1628640 5731360 1628376 5731232 1628768 5733488 +1628832 5733560 1628640 5731360 1628768 5733488 1625176 5734984 +1628336 5731192 1627440 5730528 1628768 5733488 1628376 5731232 +1628376 5731232 1628336 5731192 1628768 5733488 1628640 5731360 +1628336 5731192 1627560 5730576 1627440 5730528 1628768 5733488 +1628832 5733560 1628768 5733488 1625176 5734984 1626328 5735392 +1628768 5733488 1625040 5734896 1625176 5734984 1626328 5735392 +1628832 5733560 1628768 5733488 1626328 5735392 1626480 5735432 +1628832 5733560 1628768 5733488 1626480 5735432 1628512 5734776 +1626480 5735432 1626712 5735520 1628512 5734776 1628768 5733488 +1628832 5733560 1628768 5733488 1628512 5734776 1628648 5734680 +1628768 5733488 1626480 5735432 1628512 5734776 1628648 5734680 +1628768 5733488 1626328 5735392 1626480 5735432 1628512 5734776 +1628832 5733560 1628640 5731360 1628768 5733488 1628648 5734680 +1625176 5734984 1626192 5735400 1626328 5735392 1628768 5733488 +1628768 5733488 1625176 5734984 1626328 5735392 1626480 5735432 +1628832 5733560 1628768 5733488 1628648 5734680 1629016 5733664 +1628832 5733560 1629432 5733200 1628640 5731360 1628768 5733488 +1629432 5733200 1628768 5731368 1628640 5731360 1628768 5733488 +1628832 5733560 1629432 5733200 1628768 5733488 1628648 5734680 +1628640 5731360 1628376 5731232 1628768 5733488 1628768 5731368 +1629432 5733200 1629208 5731336 1628768 5731368 1628768 5733488 +1628832 5733560 1629016 5733664 1629432 5733200 1628768 5733488 +1629432 5733200 1628768 5731368 1628768 5733488 1628832 5733560 +1627440 5730528 1628736 5733424 1628768 5733488 1628336 5731192 +1628768 5733488 1628736 5733424 1625040 5734896 1625176 5734984 +1628768 5733488 1628736 5733424 1625176 5734984 1626328 5735392 +1628736 5733424 1625040 5734896 1625176 5734984 1626328 5735392 +1628736 5733424 1626328 5735392 1628768 5733488 1628336 5731192 +1628768 5733488 1628376 5731232 1628336 5731192 1628736 5733424 +1628336 5731192 1627440 5730528 1628736 5733424 1628376 5731232 +1628768 5733488 1628376 5731232 1628736 5733424 1626328 5735392 +1628736 5733424 1627440 5730528 1625040 5734896 1625176 5734984 +1627440 5730528 1625040 5734896 1628736 5733424 1628336 5731192 +1625040 5734896 1628736 5733424 1627440 5730528 1624728 5734744 +1628768 5733488 1628640 5731360 1628376 5731232 1628736 5733424 +1628768 5733488 1628768 5731368 1628640 5731360 1628736 5733424 +1628768 5733488 1629432 5733200 1628768 5731368 1628736 5733424 +1628768 5731368 1628640 5731360 1628736 5733424 1629432 5733200 +1628768 5733488 1629432 5733200 1628736 5733424 1626328 5735392 +1628376 5731232 1628336 5731192 1628736 5733424 1628640 5731360 +1628640 5731360 1628376 5731232 1628736 5733424 1628768 5731368 +1627440 5730528 1628736 5733424 1628336 5731192 1627560 5730576 +1629432 5733200 1629208 5731336 1628768 5731368 1628736 5733424 +1625176 5734984 1626192 5735400 1626328 5735392 1628736 5733424 +1628768 5733488 1628736 5733424 1626328 5735392 1626480 5735432 +1628736 5733424 1625176 5734984 1626328 5735392 1626480 5735432 +1628768 5733488 1628736 5733424 1626480 5735432 1628512 5734776 +1628768 5733488 1628736 5733424 1628512 5734776 1628648 5734680 +1626480 5735432 1626712 5735520 1628512 5734776 1628736 5733424 +1628768 5733488 1629432 5733200 1628736 5733424 1628512 5734776 +1628736 5733424 1626328 5735392 1626480 5735432 1628512 5734776 +1628768 5733488 1628832 5733560 1629432 5733200 1628736 5733424 +1629432 5733200 1628768 5731368 1628736 5733424 1628832 5733560 +1628768 5733488 1628832 5733560 1628736 5733424 1628512 5734776 +1628832 5733560 1629016 5733664 1629432 5733200 1628736 5733424 +1628736 5733424 1628688 5733368 1625040 5734896 1625176 5734984 +1628736 5733424 1628688 5733368 1625176 5734984 1626328 5735392 +1628736 5733424 1628688 5733368 1626328 5735392 1626480 5735432 +1628688 5733368 1625176 5734984 1626328 5735392 1626480 5735432 +1628688 5733368 1625040 5734896 1625176 5734984 1626328 5735392 +1628736 5733424 1627440 5730528 1628688 5733368 1626480 5735432 +1627440 5730528 1628688 5733368 1628736 5733424 1628336 5731192 +1628736 5733424 1628376 5731232 1628336 5731192 1628688 5733368 +1628736 5733424 1628640 5731360 1628376 5731232 1628688 5733368 +1628376 5731232 1628336 5731192 1628688 5733368 1628640 5731360 +1628688 5733368 1626480 5735432 1628736 5733424 1628640 5731360 +1628336 5731192 1627440 5730528 1628688 5733368 1628376 5731232 +1628688 5733368 1627440 5730528 1625040 5734896 1625176 5734984 +1627440 5730528 1625040 5734896 1628688 5733368 1628336 5731192 +1625040 5734896 1628688 5733368 1627440 5730528 1624728 5734744 +1628736 5733424 1628768 5731368 1628640 5731360 1628688 5733368 +1628736 5733424 1629432 5733200 1628768 5731368 1628688 5733368 +1628736 5733424 1628832 5733560 1629432 5733200 1628688 5733368 +1628640 5731360 1628376 5731232 1628688 5733368 1628768 5731368 +1628736 5733424 1629432 5733200 1628688 5733368 1626480 5735432 +1628768 5731368 1628640 5731360 1628688 5733368 1629432 5733200 +1627440 5730528 1628688 5733368 1628336 5731192 1627560 5730576 +1629432 5733200 1629208 5731336 1628768 5731368 1628688 5733368 +1625176 5734984 1626192 5735400 1626328 5735392 1628688 5733368 +1628736 5733424 1628688 5733368 1626480 5735432 1628512 5734776 +1626480 5735432 1626712 5735520 1628512 5734776 1628688 5733368 +1628688 5733368 1626328 5735392 1626480 5735432 1628512 5734776 +1628736 5733424 1628688 5733368 1628512 5734776 1628768 5733488 +1628512 5734776 1628648 5734680 1628768 5733488 1628688 5733368 +1628736 5733424 1629432 5733200 1628688 5733368 1628768 5733488 +1628688 5733368 1626480 5735432 1628512 5734776 1628768 5733488 +1628688 5733368 1628664 5733376 1625040 5734896 1625176 5734984 +1628688 5733368 1628664 5733376 1625176 5734984 1626328 5735392 +1628688 5733368 1628664 5733376 1626328 5735392 1626480 5735432 +1628688 5733368 1628664 5733376 1626480 5735432 1628512 5734776 +1626480 5735432 1626712 5735520 1628512 5734776 1628664 5733376 +1628664 5733376 1626328 5735392 1626480 5735432 1628512 5734776 +1628664 5733376 1625176 5734984 1626328 5735392 1626480 5735432 +1628664 5733376 1625040 5734896 1625176 5734984 1626328 5735392 +1628688 5733368 1627440 5730528 1628664 5733376 1628512 5734776 +1627440 5730528 1628664 5733376 1628688 5733368 1628336 5731192 +1628688 5733368 1628376 5731232 1628336 5731192 1628664 5733376 +1628688 5733368 1628640 5731360 1628376 5731232 1628664 5733376 +1628688 5733368 1628768 5731368 1628640 5731360 1628664 5733376 +1628376 5731232 1628336 5731192 1628664 5733376 1628640 5731360 +1628664 5733376 1628512 5734776 1628688 5733368 1628640 5731360 +1628336 5731192 1627440 5730528 1628664 5733376 1628376 5731232 +1628664 5733376 1627440 5730528 1625040 5734896 1625176 5734984 +1627440 5730528 1625040 5734896 1628664 5733376 1628336 5731192 +1625040 5734896 1628664 5733376 1627440 5730528 1624728 5734744 +1627440 5730528 1628664 5733376 1628336 5731192 1627560 5730576 +1625176 5734984 1626192 5735400 1626328 5735392 1628664 5733376 +1628688 5733368 1628664 5733376 1628512 5734776 1628768 5733488 +1628512 5734776 1628648 5734680 1628768 5733488 1628664 5733376 +1628648 5734680 1628832 5733560 1628768 5733488 1628664 5733376 +1628664 5733376 1626480 5735432 1628512 5734776 1628648 5734680 +1628688 5733368 1628664 5733376 1628768 5733488 1628736 5733424 +1628688 5733368 1628640 5731360 1628664 5733376 1628736 5733424 +1628768 5733488 1628736 5733424 1628664 5733376 1628648 5734680 +1628336 5731192 1628648 5733280 1628664 5733376 1628376 5731232 +1628664 5733376 1628640 5731360 1628376 5731232 1628648 5733280 +1628664 5733376 1628688 5733368 1628640 5731360 1628648 5733280 +1628688 5733368 1628768 5731368 1628640 5731360 1628648 5733280 +1628688 5733368 1628768 5731368 1628648 5733280 1628664 5733376 +1628640 5731360 1628376 5731232 1628648 5733280 1628768 5731368 +1628376 5731232 1628336 5731192 1628648 5733280 1628640 5731360 +1628648 5733280 1627440 5730528 1628664 5733376 1628688 5733368 +1628664 5733376 1628648 5733280 1627440 5730528 1625040 5734896 +1628664 5733376 1628648 5733280 1625040 5734896 1625176 5734984 +1628664 5733376 1628648 5733280 1625176 5734984 1626328 5735392 +1628664 5733376 1628648 5733280 1626328 5735392 1626480 5735432 +1628648 5733280 1625040 5734896 1625176 5734984 1626328 5735392 +1628664 5733376 1628688 5733368 1628648 5733280 1626328 5735392 +1628648 5733280 1627440 5730528 1625040 5734896 1625176 5734984 +1628648 5733280 1628336 5731192 1627440 5730528 1625040 5734896 +1628336 5731192 1627440 5730528 1628648 5733280 1628376 5731232 +1627440 5730528 1624728 5734744 1625040 5734896 1628648 5733280 +1628688 5733368 1629432 5733200 1628768 5731368 1628648 5733280 +1628688 5733368 1629432 5733200 1628648 5733280 1628664 5733376 +1628688 5733368 1628736 5733424 1629432 5733200 1628648 5733280 +1628736 5733424 1628832 5733560 1629432 5733200 1628648 5733280 +1628688 5733368 1628736 5733424 1628648 5733280 1628664 5733376 +1628768 5731368 1628640 5731360 1628648 5733280 1629432 5733200 +1629432 5733200 1628768 5731368 1628648 5733280 1628736 5733424 +1627440 5730528 1628648 5733280 1628336 5731192 1627560 5730576 +1629432 5733200 1629208 5731336 1628768 5731368 1628648 5733280 +1625176 5734984 1626192 5735400 1626328 5735392 1628648 5733280 +1628648 5733280 1628728 5733192 1628768 5731368 1628640 5731360 +1628648 5733280 1628728 5733192 1628640 5731360 1628376 5731232 +1628728 5733192 1628768 5731368 1628640 5731360 1628376 5731232 +1628648 5733280 1628728 5733192 1628376 5731232 1628336 5731192 +1628648 5733280 1629432 5733200 1628728 5733192 1628376 5731232 +1628728 5733192 1629432 5733200 1628768 5731368 1628640 5731360 +1629432 5733200 1628728 5733192 1628648 5733280 1628736 5733424 +1629432 5733200 1628728 5733192 1628736 5733424 1628832 5733560 +1628648 5733280 1628688 5733368 1628736 5733424 1628728 5733192 +1628648 5733280 1628664 5733376 1628688 5733368 1628728 5733192 +1628728 5733192 1628376 5731232 1628648 5733280 1628688 5733368 +1629432 5733200 1628768 5731368 1628728 5733192 1628832 5733560 +1628728 5733192 1628688 5733368 1628736 5733424 1628832 5733560 +1628768 5731368 1628728 5733192 1629432 5733200 1629208 5731336 +1629432 5733200 1629800 5733120 1629208 5731336 1628728 5733192 +1628768 5731368 1628640 5731360 1628728 5733192 1629208 5731336 +1628728 5733192 1628832 5733560 1629432 5733200 1629208 5731336 +1628768 5731368 1628728 5733192 1629208 5731336 1628864 5731328 +1629432 5733200 1628728 5733192 1628832 5733560 1629016 5733664 +1628736 5733424 1628768 5733488 1628832 5733560 1628728 5733192 +1629208 5731336 1628792 5733136 1629432 5733200 1629800 5733120 +1629432 5733200 1628792 5733136 1628728 5733192 1628832 5733560 +1628728 5733192 1628736 5733424 1628832 5733560 1628792 5733136 +1628792 5733136 1629208 5731336 1628728 5733192 1628736 5733424 +1628832 5733560 1629432 5733200 1628792 5733136 1628736 5733424 +1629432 5733200 1629208 5731336 1628792 5733136 1628832 5733560 +1628728 5733192 1628688 5733368 1628736 5733424 1628792 5733136 +1628728 5733192 1628792 5733136 1629208 5731336 1628768 5731368 +1628728 5733192 1628792 5733136 1628768 5731368 1628640 5731360 +1628728 5733192 1628792 5733136 1628640 5731360 1628376 5731232 +1628728 5733192 1628792 5733136 1628376 5731232 1628648 5733280 +1628792 5733136 1628768 5731368 1628640 5731360 1628376 5731232 +1628728 5733192 1628736 5733424 1628792 5733136 1628376 5731232 +1628792 5733136 1629432 5733200 1629208 5731336 1628768 5731368 +1629208 5731336 1628864 5731328 1628768 5731368 1628792 5733136 +1628792 5733136 1629208 5731336 1628768 5731368 1628640 5731360 +1629432 5733200 1628792 5733136 1628832 5733560 1629016 5733664 +1629432 5733200 1628792 5733136 1629016 5733664 1629432 5733824 +1628792 5733136 1628736 5733424 1628832 5733560 1629016 5733664 +1629432 5733200 1629208 5731336 1628792 5733136 1629016 5733664 +1628736 5733424 1628768 5733488 1628832 5733560 1628792 5733136 +1628736 5733424 1628768 5733488 1628792 5733136 1628728 5733192 +1628832 5733560 1629016 5733664 1628792 5733136 1628768 5733488 +1629208 5731336 1628928 5733096 1629432 5733200 1629800 5733120 +1628792 5733136 1628928 5733096 1629208 5731336 1628768 5731368 +1628792 5733136 1629432 5733200 1628928 5733096 1628768 5731368 +1629432 5733200 1628928 5733096 1628792 5733136 1629016 5733664 +1629432 5733200 1628928 5733096 1629016 5733664 1629432 5733824 +1628928 5733096 1628768 5731368 1628792 5733136 1629016 5733664 +1628928 5733096 1629432 5733200 1629208 5731336 1628768 5731368 +1629432 5733200 1629208 5731336 1628928 5733096 1629016 5733664 +1629208 5731336 1628864 5731328 1628768 5731368 1628928 5733096 +1628792 5733136 1628928 5733096 1628768 5731368 1628640 5731360 +1628792 5733136 1628928 5733096 1628640 5731360 1628376 5731232 +1628928 5733096 1629208 5731336 1628768 5731368 1628640 5731360 +1628792 5733136 1629016 5733664 1628928 5733096 1628640 5731360 +1628792 5733136 1628832 5733560 1629016 5733664 1628928 5733096 +1628792 5733136 1628768 5733488 1628832 5733560 1628928 5733096 +1628792 5733136 1628768 5733488 1628928 5733096 1628640 5731360 +1629016 5733664 1629432 5733200 1628928 5733096 1628832 5733560 +1628832 5733560 1629016 5733664 1628928 5733096 1628768 5733488 +1628792 5733136 1628736 5733424 1628768 5733488 1628928 5733096 +1628792 5733136 1628728 5733192 1628736 5733424 1628928 5733096 +1628768 5733488 1628832 5733560 1628928 5733096 1628736 5733424 +1628792 5733136 1628736 5733424 1628928 5733096 1628640 5731360 +1629208 5731336 1629088 5733088 1629432 5733200 1629800 5733120 +1628928 5733096 1629088 5733088 1629208 5731336 1628768 5731368 +1628928 5733096 1629088 5733088 1628768 5731368 1628640 5731360 +1628928 5733096 1629432 5733200 1629088 5733088 1628768 5731368 +1629432 5733200 1629088 5733088 1628928 5733096 1629016 5733664 +1629432 5733200 1629088 5733088 1629016 5733664 1629432 5733824 +1628928 5733096 1628832 5733560 1629016 5733664 1629088 5733088 +1629088 5733088 1628768 5731368 1628928 5733096 1628832 5733560 +1629016 5733664 1629432 5733200 1629088 5733088 1628832 5733560 +1629432 5733200 1629624 5733200 1629800 5733120 1629088 5733088 +1629208 5731336 1629088 5733088 1629800 5733120 1629272 5731304 +1629208 5731336 1628864 5731328 1628768 5731368 1629088 5733088 +1628928 5733096 1628768 5733488 1628832 5733560 1629088 5733088 +1629208 5731336 1628768 5731368 1629088 5733088 1629800 5733120 +1629088 5733088 1629016 5733664 1629432 5733200 1629800 5733120 +1629624 5733200 1629768 5733656 1630200 5733272 1629800 5733120 +1630200 5733272 1630128 5733192 1629800 5733120 1629768 5733656 +1630128 5733192 1629928 5733104 1629800 5733120 1629768 5733656 +1630128 5733192 1629928 5733104 1629768 5733656 1630200 5733272 +1629800 5733120 1629624 5733200 1629768 5733656 1629928 5733104 +1630128 5733192 1630040 5733128 1629928 5733104 1629768 5733656 +1630200 5733272 1629768 5733656 1629664 5734016 1630456 5733648 +1629664 5734016 1629760 5734112 1630456 5733648 1629768 5733656 +1629760 5734112 1629920 5734216 1630456 5733648 1629768 5733656 +1629920 5734216 1630048 5734248 1630456 5733648 1629768 5733656 +1630048 5734248 1630224 5734232 1630456 5733648 1629768 5733656 +1630048 5734248 1630224 5734232 1629768 5733656 1629920 5734216 +1630224 5734232 1630392 5734184 1630456 5733648 1629768 5733656 +1629920 5734216 1630048 5734248 1629768 5733656 1629760 5734112 +1629760 5734112 1629920 5734216 1629768 5733656 1629664 5734016 +1630456 5733648 1630200 5733272 1629768 5733656 1630224 5734232 +1629664 5734016 1629768 5733656 1629624 5733200 1629432 5733824 +1629624 5733200 1629432 5733200 1629432 5733824 1629768 5733656 +1629432 5733824 1629664 5734016 1629768 5733656 1629432 5733200 +1629432 5733200 1629016 5733664 1629432 5733824 1629768 5733656 +1629624 5733200 1629432 5733200 1629768 5733656 1629800 5733120 +1629768 5733656 1630456 5733648 1630200 5733272 1630128 5733192 +1629768 5733656 1629432 5733824 1629664 5734016 1629760 5734112 +1630224 5734232 1629928 5733664 1629768 5733656 1630048 5734248 +1629768 5733656 1629920 5734216 1630048 5734248 1629928 5733664 +1630048 5734248 1630224 5734232 1629928 5733664 1629920 5734216 +1630456 5733648 1629928 5733664 1630224 5734232 1630392 5734184 +1629768 5733656 1629760 5734112 1629920 5734216 1629928 5733664 +1629920 5734216 1630048 5734248 1629928 5733664 1629760 5734112 +1629768 5733656 1629664 5734016 1629760 5734112 1629928 5733664 +1629760 5734112 1629920 5734216 1629928 5733664 1629664 5734016 +1629768 5733656 1629928 5733664 1630456 5733648 1630200 5733272 +1629768 5733656 1629928 5733664 1630200 5733272 1630128 5733192 +1629768 5733656 1629928 5733664 1630128 5733192 1629928 5733104 +1629768 5733656 1629928 5733664 1629928 5733104 1629800 5733120 +1629928 5733664 1630128 5733192 1629928 5733104 1629800 5733120 +1629768 5733656 1629928 5733664 1629800 5733120 1629624 5733200 +1630128 5733192 1630040 5733128 1629928 5733104 1629928 5733664 +1629928 5733664 1630456 5733648 1630200 5733272 1630128 5733192 +1629928 5733664 1630200 5733272 1630128 5733192 1629928 5733104 +1629928 5733664 1629800 5733120 1629768 5733656 1629664 5734016 +1629768 5733656 1629432 5733824 1629664 5734016 1629928 5733664 +1629928 5733664 1630224 5734232 1630456 5733648 1630200 5733272 +1630224 5734232 1630456 5733648 1629928 5733664 1630048 5734248 +1630456 5733648 1630024 5733688 1630224 5734232 1630392 5734184 +1630456 5733648 1630024 5733688 1630392 5734184 1630568 5734144 +1629928 5733664 1630024 5733688 1630456 5733648 1630200 5733272 +1629928 5733664 1630024 5733688 1630200 5733272 1630128 5733192 +1629928 5733664 1630224 5734232 1630024 5733688 1630200 5733272 +1630224 5734232 1630024 5733688 1629928 5733664 1630048 5734248 +1629928 5733664 1629920 5734216 1630048 5734248 1630024 5733688 +1629928 5733664 1629760 5734112 1629920 5734216 1630024 5733688 +1629920 5734216 1630048 5734248 1630024 5733688 1629760 5734112 +1629928 5733664 1629664 5734016 1629760 5734112 1630024 5733688 +1630024 5733688 1630200 5733272 1629928 5733664 1629760 5734112 +1630048 5734248 1630224 5734232 1630024 5733688 1629920 5734216 +1630456 5733648 1630200 5733272 1630024 5733688 1630392 5734184 +1630024 5733688 1630048 5734248 1630224 5734232 1630392 5734184 +1630456 5733648 1630120 5733728 1630392 5734184 1630568 5734144 +1630392 5734184 1630120 5733728 1630024 5733688 1630224 5734232 +1630024 5733688 1630120 5733728 1630456 5733648 1630200 5733272 +1630024 5733688 1630120 5733728 1630200 5733272 1629928 5733664 +1630120 5733728 1630200 5733272 1630024 5733688 1630224 5734232 +1630024 5733688 1630048 5734248 1630224 5734232 1630120 5733728 +1630224 5734232 1630392 5734184 1630120 5733728 1630048 5734248 +1630024 5733688 1629920 5734216 1630048 5734248 1630120 5733728 +1630024 5733688 1629760 5734112 1629920 5734216 1630120 5733728 +1630024 5733688 1629928 5733664 1629760 5734112 1630120 5733728 +1629920 5734216 1630048 5734248 1630120 5733728 1629760 5734112 +1630024 5733688 1629760 5734112 1630120 5733728 1630200 5733272 +1630048 5734248 1630224 5734232 1630120 5733728 1629920 5734216 +1630120 5733728 1630392 5734184 1630456 5733648 1630200 5733272 +1630392 5734184 1630456 5733648 1630120 5733728 1630224 5734232 +1630456 5733648 1630152 5733752 1630392 5734184 1630568 5734144 +1630120 5733728 1630152 5733752 1630456 5733648 1630200 5733272 +1630392 5734184 1630152 5733752 1630120 5733728 1630224 5734232 +1630120 5733728 1630048 5734248 1630224 5734232 1630152 5733752 +1630120 5733728 1629920 5734216 1630048 5734248 1630152 5733752 +1630048 5734248 1630224 5734232 1630152 5733752 1629920 5734216 +1630120 5733728 1629760 5734112 1629920 5734216 1630152 5733752 +1630120 5733728 1630024 5733688 1629760 5734112 1630152 5733752 +1629920 5734216 1630048 5734248 1630152 5733752 1629760 5734112 +1630152 5733752 1630456 5733648 1630120 5733728 1629760 5734112 +1630224 5734232 1630392 5734184 1630152 5733752 1630048 5734248 +1630392 5734184 1630456 5733648 1630152 5733752 1630224 5734232 +1630224 5734232 1630168 5733792 1630152 5733752 1630048 5734248 +1630152 5733752 1629920 5734216 1630048 5734248 1630168 5733792 +1630152 5733752 1629760 5734112 1629920 5734216 1630168 5733792 +1629920 5734216 1630048 5734248 1630168 5733792 1629760 5734112 +1630152 5733752 1630120 5733728 1629760 5734112 1630168 5733792 +1630120 5733728 1630024 5733688 1629760 5734112 1630168 5733792 +1630024 5733688 1629928 5733664 1629760 5734112 1630168 5733792 +1630120 5733728 1630024 5733688 1630168 5733792 1630152 5733752 +1629760 5734112 1629920 5734216 1630168 5733792 1630024 5733688 +1630048 5734248 1630224 5734232 1630168 5733792 1629920 5734216 +1630168 5733792 1630392 5734184 1630152 5733752 1630120 5733728 +1630152 5733752 1630168 5733792 1630392 5734184 1630456 5733648 +1630392 5734184 1630568 5734144 1630456 5733648 1630168 5733792 +1630152 5733752 1630168 5733792 1630456 5733648 1630120 5733728 +1630152 5733752 1630120 5733728 1630168 5733792 1630456 5733648 +1630168 5733792 1630224 5734232 1630392 5734184 1630456 5733648 +1630224 5734232 1630392 5734184 1630168 5733792 1630048 5734248 +1630168 5733792 1630176 5733832 1630392 5734184 1630456 5733648 +1630392 5734184 1630568 5734144 1630456 5733648 1630176 5733832 +1630568 5734144 1630704 5733848 1630456 5733648 1630176 5733832 +1630168 5733792 1630176 5733832 1630456 5733648 1630152 5733752 +1630456 5733648 1630168 5733792 1630176 5733832 1630568 5734144 +1630168 5733792 1630224 5734232 1630176 5733832 1630456 5733648 +1630224 5734232 1630176 5733832 1630168 5733792 1630048 5734248 +1630168 5733792 1629920 5734216 1630048 5734248 1630176 5733832 +1630168 5733792 1629760 5734112 1629920 5734216 1630176 5733832 +1630168 5733792 1630024 5733688 1629760 5734112 1630176 5733832 +1630024 5733688 1629928 5733664 1629760 5734112 1630176 5733832 +1630168 5733792 1630120 5733728 1630024 5733688 1630176 5733832 +1629760 5734112 1629920 5734216 1630176 5733832 1630024 5733688 +1630168 5733792 1630152 5733752 1630120 5733728 1630176 5733832 +1630024 5733688 1629760 5734112 1630176 5733832 1630120 5733728 +1629920 5734216 1630048 5734248 1630176 5733832 1629760 5734112 +1630176 5733832 1630456 5733648 1630168 5733792 1630120 5733728 +1630048 5734248 1630224 5734232 1630176 5733832 1629920 5734216 +1630176 5733832 1630224 5734232 1630392 5734184 1630568 5734144 +1630224 5734232 1630392 5734184 1630176 5733832 1630048 5734248 +1629920 5734216 1630168 5733856 1630176 5733832 1629760 5734112 +1630176 5733832 1630024 5733688 1629760 5734112 1630168 5733856 +1630024 5733688 1629928 5733664 1629760 5734112 1630168 5733856 +1630176 5733832 1630120 5733728 1630024 5733688 1630168 5733856 +1630176 5733832 1630168 5733792 1630120 5733728 1630168 5733856 +1630024 5733688 1629760 5734112 1630168 5733856 1630120 5733728 +1630168 5733792 1630152 5733752 1630120 5733728 1630168 5733856 +1630120 5733728 1630024 5733688 1630168 5733856 1630168 5733792 +1629760 5734112 1629920 5734216 1630168 5733856 1630024 5733688 +1630176 5733832 1630168 5733856 1630048 5734248 1630224 5734232 +1630168 5733856 1630224 5734232 1630176 5733832 1630168 5733792 +1630176 5733832 1630168 5733856 1630224 5734232 1630392 5734184 +1630168 5733856 1630048 5734248 1630224 5734232 1630392 5734184 +1630176 5733832 1630168 5733856 1630392 5734184 1630568 5734144 +1630176 5733832 1630168 5733792 1630168 5733856 1630392 5734184 +1630168 5733856 1629920 5734216 1630048 5734248 1630224 5734232 +1629920 5734216 1630048 5734248 1630168 5733856 1629760 5734112 +1629760 5734112 1630128 5733880 1630024 5733688 1629928 5733664 +1630024 5733688 1630128 5733880 1630168 5733856 1630120 5733728 +1629760 5734112 1630128 5733880 1629928 5733664 1629664 5734016 +1630168 5733856 1630168 5733792 1630120 5733728 1630128 5733880 +1630168 5733856 1630176 5733832 1630168 5733792 1630128 5733880 +1630120 5733728 1630024 5733688 1630128 5733880 1630168 5733792 +1630168 5733792 1630152 5733752 1630120 5733728 1630128 5733880 +1630168 5733792 1630120 5733728 1630128 5733880 1630176 5733832 +1630168 5733856 1630128 5733880 1629760 5734112 1629920 5734216 +1630128 5733880 1629920 5734216 1630168 5733856 1630176 5733832 +1630168 5733856 1630128 5733880 1629920 5734216 1630048 5734248 +1630128 5733880 1629760 5734112 1629920 5734216 1630048 5734248 +1630168 5733856 1630128 5733880 1630048 5734248 1630224 5734232 +1630168 5733856 1630128 5733880 1630224 5734232 1630392 5734184 +1630168 5733856 1630176 5733832 1630128 5733880 1630224 5734232 +1630128 5733880 1629920 5734216 1630048 5734248 1630224 5734232 +1629760 5734112 1629920 5734216 1630128 5733880 1629928 5733664 +1630128 5733880 1630120 5733728 1630024 5733688 1629928 5733664 +1629928 5733664 1630040 5733912 1630128 5733880 1630024 5733688 +1629760 5734112 1630040 5733912 1629928 5733664 1629664 5734016 +1629928 5733664 1629768 5733656 1629664 5734016 1630040 5733912 +1629664 5734016 1629760 5734112 1630040 5733912 1629768 5733656 +1629768 5733656 1629432 5733824 1629664 5734016 1630040 5733912 +1630128 5733880 1630040 5733912 1629760 5734112 1629920 5734216 +1630128 5733880 1630040 5733912 1629920 5734216 1630048 5734248 +1630128 5733880 1630040 5733912 1630048 5734248 1630224 5734232 +1630040 5733912 1629920 5734216 1630048 5734248 1630224 5734232 +1630128 5733880 1630040 5733912 1630224 5734232 1630168 5733856 +1630040 5733912 1629760 5734112 1629920 5734216 1630048 5734248 +1630040 5733912 1630224 5734232 1630128 5733880 1630024 5733688 +1630128 5733880 1630120 5733728 1630024 5733688 1630040 5733912 +1630024 5733688 1629928 5733664 1630040 5733912 1630120 5733728 +1630128 5733880 1630168 5733792 1630120 5733728 1630040 5733912 +1630128 5733880 1630120 5733728 1630040 5733912 1630224 5734232 +1629760 5734112 1629920 5734216 1630040 5733912 1629664 5734016 +1629928 5733664 1629768 5733656 1630040 5733912 1630024 5733688 +1630040 5733912 1629952 5733912 1629664 5734016 1629760 5734112 +1629768 5733656 1629952 5733912 1630040 5733912 1629928 5733664 +1629768 5733656 1629664 5734016 1629952 5733912 1629928 5733664 +1629664 5734016 1629952 5733912 1629768 5733656 1629432 5733824 +1630040 5733912 1629952 5733912 1629760 5734112 1629920 5734216 +1629952 5733912 1629664 5734016 1629760 5734112 1629920 5734216 +1630040 5733912 1629952 5733912 1629920 5734216 1630048 5734248 +1630040 5733912 1629928 5733664 1629952 5733912 1629920 5734216 +1630040 5733912 1630024 5733688 1629928 5733664 1629952 5733912 +1630040 5733912 1630120 5733728 1630024 5733688 1629952 5733912 +1629928 5733664 1629768 5733656 1629952 5733912 1630024 5733688 +1630040 5733912 1630024 5733688 1629952 5733912 1629920 5734216 +1629952 5733912 1629768 5733656 1629664 5734016 1629760 5734112 +1629768 5733656 1629880 5733880 1629952 5733912 1629928 5733664 +1629880 5733880 1629664 5734016 1629952 5733912 1629928 5733664 +1629768 5733656 1629664 5734016 1629880 5733880 1629928 5733664 +1629952 5733912 1630024 5733688 1629928 5733664 1629880 5733880 +1629952 5733912 1630024 5733688 1629880 5733880 1629664 5734016 +1629928 5733664 1629768 5733656 1629880 5733880 1630024 5733688 +1629664 5734016 1629880 5733880 1629768 5733656 1629432 5733824 +1629952 5733912 1630040 5733912 1630024 5733688 1629880 5733880 +1629952 5733912 1629880 5733880 1629664 5734016 1629760 5734112 +1629952 5733912 1630024 5733688 1629880 5733880 1629760 5734112 +1629880 5733880 1629768 5733656 1629664 5734016 1629760 5734112 +1629952 5733912 1629880 5733880 1629760 5734112 1629920 5734216 +1629880 5733880 1629840 5733848 1629664 5734016 1629760 5734112 +1629768 5733656 1629840 5733848 1629880 5733880 1629928 5733664 +1629880 5733880 1630024 5733688 1629928 5733664 1629840 5733848 +1629840 5733848 1629664 5734016 1629880 5733880 1629928 5733664 +1629768 5733656 1629664 5734016 1629840 5733848 1629928 5733664 +1629664 5734016 1629840 5733848 1629768 5733656 1629432 5733824 +1629840 5733848 1629768 5733800 1629664 5734016 1629880 5733880 +1629768 5733656 1629768 5733800 1629840 5733848 1629928 5733664 +1629840 5733848 1629880 5733880 1629928 5733664 1629768 5733800 +1629768 5733800 1629664 5734016 1629840 5733848 1629928 5733664 +1629768 5733656 1629664 5734016 1629768 5733800 1629928 5733664 +1629664 5734016 1629768 5733800 1629768 5733656 1629432 5733824 +1629664 5734016 1629840 5733848 1629768 5733800 1629432 5733824 +1629768 5733800 1629928 5733664 1629768 5733656 1629432 5733824 +1629768 5733656 1629432 5733200 1629432 5733824 1629768 5733800 +1629768 5733656 1629728 5733768 1629768 5733800 1629928 5733664 +1629432 5733824 1629728 5733768 1629768 5733656 1629432 5733200 +1629768 5733800 1629728 5733768 1629432 5733824 1629664 5734016 +1629768 5733800 1629728 5733768 1629664 5734016 1629840 5733848 +1629768 5733800 1629768 5733656 1629728 5733768 1629664 5734016 +1629728 5733768 1629768 5733656 1629432 5733824 1629664 5734016 +1629728 5733768 1629696 5733736 1629432 5733824 1629664 5734016 +1629432 5733824 1629696 5733736 1629768 5733656 1629432 5733200 +1629696 5733736 1629728 5733768 1629768 5733656 1629432 5733200 +1629768 5733656 1629624 5733200 1629432 5733200 1629696 5733736 +1629432 5733824 1629696 5733736 1629432 5733200 1629016 5733664 +1629728 5733768 1629768 5733656 1629696 5733736 1629664 5734016 +1629768 5733656 1629696 5733736 1629728 5733768 1629768 5733800 +1629696 5733736 1629432 5733200 1629432 5733824 1629664 5734016 +1629728 5733768 1629696 5733736 1629664 5734016 1629768 5733800 +1629768 5733656 1629704 5733720 1629696 5733736 1629728 5733768 +1629704 5733720 1629432 5733200 1629696 5733736 1629728 5733768 +1629768 5733656 1629432 5733200 1629704 5733720 1629728 5733768 +1629696 5733736 1629704 5733720 1629432 5733200 1629432 5733824 +1629696 5733736 1629728 5733768 1629704 5733720 1629432 5733824 +1629704 5733720 1629768 5733656 1629432 5733200 1629432 5733824 +1629432 5733200 1629704 5733720 1629768 5733656 1629624 5733200 +1629432 5733200 1629432 5733824 1629704 5733720 1629624 5733200 +1629704 5733720 1629728 5733768 1629768 5733656 1629624 5733200 +1629432 5733200 1629016 5733664 1629432 5733824 1629704 5733720 +1629768 5733656 1629704 5733720 1629728 5733768 1629768 5733800 +1629696 5733736 1629704 5733720 1629432 5733824 1629664 5734016 +1629768 5733656 1629800 5733120 1629624 5733200 1629704 5733720 +1628648 5734680 1629224 5733944 1629016 5733664 1628832 5733560 +1629432 5733824 1629224 5733944 1628648 5734680 1628944 5734832 +1628648 5734680 1628656 5734712 1628944 5734832 1629224 5733944 +1629224 5733944 1629016 5733664 1628648 5734680 1628944 5734832 +1629432 5733824 1629016 5733664 1629224 5733944 1628944 5734832 +1629432 5733824 1629224 5733944 1628944 5734832 1629168 5734864 +1629432 5733824 1629016 5733664 1629224 5733944 1629168 5734864 +1629432 5733824 1629224 5733944 1629168 5734864 1629664 5734016 +1629168 5734864 1629760 5734112 1629664 5734016 1629224 5733944 +1629168 5734864 1629696 5735040 1629760 5734112 1629224 5733944 +1629432 5733824 1629016 5733664 1629224 5733944 1629664 5734016 +1629664 5734016 1629432 5733824 1629224 5733944 1629760 5734112 +1629224 5733944 1628944 5734832 1629168 5734864 1629760 5734112 +1629224 5733944 1628648 5734680 1628944 5734832 1629168 5734864 +1628648 5734680 1629064 5733856 1629016 5733664 1628832 5733560 +1629224 5733944 1629064 5733856 1628648 5734680 1628944 5734832 +1629016 5733664 1629064 5733856 1629224 5733944 1629432 5733824 +1629064 5733856 1628648 5734680 1629224 5733944 1629432 5733824 +1629224 5733944 1629664 5734016 1629432 5733824 1629064 5733856 +1628648 5734680 1629224 5733944 1629064 5733856 1628832 5733560 +1629064 5733856 1629432 5733824 1629016 5733664 1628832 5733560 +1628648 5734680 1629064 5733856 1628832 5733560 1628768 5733488 +1628832 5733560 1628896 5733792 1629064 5733856 1629016 5733664 +1629064 5733856 1628896 5733792 1628648 5734680 1629224 5733944 +1628896 5733792 1628648 5734680 1629064 5733856 1629016 5733664 +1629064 5733856 1629432 5733824 1629016 5733664 1628896 5733792 +1628832 5733560 1628648 5734680 1628896 5733792 1629016 5733664 +1628648 5734680 1628896 5733792 1628832 5733560 1628768 5733488 +1628648 5734680 1628896 5733792 1628768 5733488 1628664 5733376 +1628648 5734680 1628896 5733792 1628664 5733376 1628512 5734776 +1628896 5733792 1628768 5733488 1628664 5733376 1628512 5734776 +1628664 5733376 1626480 5735432 1628512 5734776 1628896 5733792 +1628648 5734680 1629064 5733856 1628896 5733792 1628512 5734776 +1628896 5733792 1629016 5733664 1628832 5733560 1628768 5733488 +1628768 5733488 1628736 5733424 1628664 5733376 1628896 5733792 +1628896 5733792 1628832 5733560 1628768 5733488 1628664 5733376 +1628896 5733792 1628856 5733792 1628512 5734776 1628648 5734680 +1628664 5733376 1628856 5733792 1628896 5733792 1628768 5733488 +1628512 5734776 1628856 5733792 1628664 5733376 1626480 5735432 +1628896 5733792 1628856 5733792 1628648 5734680 1629064 5733856 +1628856 5733792 1628512 5734776 1628648 5734680 1629064 5733856 +1628648 5734680 1629224 5733944 1629064 5733856 1628856 5733792 +1628896 5733792 1628768 5733488 1628856 5733792 1629064 5733856 +1628856 5733792 1628664 5733376 1628512 5734776 1628648 5734680 +1628664 5733376 1628512 5734776 1628856 5733792 1628768 5733488 +1628664 5733376 1628856 5733792 1628768 5733488 1628736 5733424 +1628896 5733792 1628832 5733560 1628768 5733488 1628856 5733792 +1628768 5733488 1628664 5733376 1628856 5733792 1628832 5733560 +1628896 5733792 1628832 5733560 1628856 5733792 1629064 5733856 +1628896 5733792 1629016 5733664 1628832 5733560 1628856 5733792 +1628512 5734776 1628752 5733752 1628664 5733376 1626480 5735432 +1628856 5733792 1628752 5733752 1628512 5734776 1628648 5734680 +1628856 5733792 1628752 5733752 1628648 5734680 1629064 5733856 +1628856 5733792 1628664 5733376 1628752 5733752 1628648 5734680 +1628664 5733376 1628752 5733752 1628856 5733792 1628768 5733488 +1628856 5733792 1628832 5733560 1628768 5733488 1628752 5733752 +1628752 5733752 1628648 5734680 1628856 5733792 1628832 5733560 +1628768 5733488 1628664 5733376 1628752 5733752 1628832 5733560 +1628752 5733752 1628664 5733376 1628512 5734776 1628648 5734680 +1628664 5733376 1628512 5734776 1628752 5733752 1628768 5733488 +1628664 5733376 1628752 5733752 1628768 5733488 1628736 5733424 +1628856 5733792 1628896 5733792 1628832 5733560 1628752 5733752 +1628512 5734776 1628616 5733640 1626480 5735432 1626712 5735520 +1628664 5733376 1628616 5733640 1628512 5734776 1628752 5733752 +1626480 5735432 1628616 5733640 1628664 5733376 1626328 5735392 +1628664 5733376 1628648 5733280 1626328 5735392 1628616 5733640 +1626328 5735392 1626480 5735432 1628616 5733640 1628648 5733280 +1628648 5733280 1625176 5734984 1626328 5735392 1628616 5733640 +1628512 5734776 1628616 5733640 1626712 5735520 1628496 5734816 +1628512 5734776 1628648 5734680 1628752 5733752 1628616 5733640 +1628752 5733752 1628664 5733376 1628616 5733640 1628648 5734680 +1628648 5734680 1628856 5733792 1628752 5733752 1628616 5733640 +1628512 5734776 1628648 5734680 1628616 5733640 1626712 5735520 +1628664 5733376 1628616 5733640 1628752 5733752 1628768 5733488 +1628616 5733640 1628648 5734680 1628752 5733752 1628768 5733488 +1628752 5733752 1628832 5733560 1628768 5733488 1628616 5733640 +1628752 5733752 1628856 5733792 1628832 5733560 1628616 5733640 +1628752 5733752 1628832 5733560 1628616 5733640 1628648 5734680 +1628768 5733488 1628664 5733376 1628616 5733640 1628832 5733560 +1628616 5733640 1626328 5735392 1626480 5735432 1626712 5735520 +1628664 5733376 1628648 5733280 1628616 5733640 1628768 5733488 +1628664 5733376 1628616 5733640 1628768 5733488 1628736 5733424 +1628664 5733376 1628616 5733640 1628736 5733424 1628688 5733368 +1628616 5733640 1628832 5733560 1628768 5733488 1628736 5733424 +1628664 5733376 1628648 5733280 1628616 5733640 1628736 5733424 +1628648 5733280 1628400 5733272 1625040 5734896 1625176 5734984 +1628648 5733280 1628400 5733272 1625176 5734984 1626328 5735392 +1628648 5733280 1628400 5733272 1626328 5735392 1628616 5733640 +1626328 5735392 1626480 5735432 1628616 5733640 1628400 5733272 +1628648 5733280 1628400 5733272 1628616 5733640 1628664 5733376 +1628616 5733640 1628664 5733376 1628400 5733272 1626480 5735432 +1628400 5733272 1625176 5734984 1626328 5735392 1626480 5735432 +1628400 5733272 1625040 5734896 1625176 5734984 1626328 5735392 +1627440 5730528 1628400 5733272 1628648 5733280 1628336 5731192 +1628648 5733280 1628376 5731232 1628336 5731192 1628400 5733272 +1628648 5733280 1628728 5733192 1628376 5731232 1628400 5733272 +1628728 5733192 1628792 5733136 1628376 5731232 1628400 5733272 +1628792 5733136 1628640 5731360 1628376 5731232 1628400 5733272 +1628792 5733136 1628640 5731360 1628400 5733272 1628728 5733192 +1628728 5733192 1628792 5733136 1628400 5733272 1628648 5733280 +1628336 5731192 1627440 5730528 1628400 5733272 1628376 5731232 +1628376 5731232 1628336 5731192 1628400 5733272 1628640 5731360 +1628792 5733136 1628928 5733096 1628640 5731360 1628400 5733272 +1625040 5734896 1628400 5733272 1627440 5730528 1624728 5734744 +1626480 5735432 1626712 5735520 1628616 5733640 1628400 5733272 +1626712 5735520 1628512 5734776 1628616 5733640 1628400 5733272 +1626480 5735432 1626712 5735520 1628400 5733272 1626328 5735392 +1628616 5733640 1628664 5733376 1628400 5733272 1628512 5734776 +1626712 5735520 1628496 5734816 1628512 5734776 1628400 5733272 +1628512 5734776 1628648 5734680 1628616 5733640 1628400 5733272 +1626712 5735520 1628512 5734776 1628400 5733272 1626480 5735432 +1628400 5733272 1627440 5730528 1625040 5734896 1625176 5734984 +1628616 5733640 1628736 5733424 1628664 5733376 1628400 5733272 +1627440 5730528 1625040 5734896 1628400 5733272 1628336 5731192 +1628648 5733280 1628728 5733192 1628400 5733272 1628664 5733376 +1627440 5730528 1628400 5733272 1628336 5731192 1627560 5730576 +1627440 5730528 1628400 5733272 1627560 5730576 1627520 5730552 +1628400 5733272 1628376 5731232 1628336 5731192 1627560 5730576 +1628336 5731192 1627632 5730600 1627560 5730576 1628400 5733272 +1627440 5730528 1625040 5734896 1628400 5733272 1627560 5730576 +1625176 5734984 1626192 5735400 1626328 5735392 1628400 5733272 +1625040 5734896 1628248 5733088 1627440 5730528 1624728 5734744 +1627440 5730528 1627360 5730472 1624728 5734744 1628248 5733088 +1624728 5734744 1625040 5734896 1628248 5733088 1627360 5730472 +1627360 5730472 1624264 5734424 1624728 5734744 1628248 5733088 +1624264 5734424 1624536 5734640 1624728 5734744 1628248 5733088 +1627360 5730472 1624264 5734424 1628248 5733088 1627440 5730528 +1624728 5734744 1625040 5734896 1628248 5733088 1624264 5734424 +1628400 5733272 1628248 5733088 1625040 5734896 1625176 5734984 +1628400 5733272 1628248 5733088 1625176 5734984 1626328 5735392 +1628400 5733272 1628248 5733088 1626328 5735392 1626480 5735432 +1628400 5733272 1628248 5733088 1626480 5735432 1626712 5735520 +1628248 5733088 1626328 5735392 1626480 5735432 1626712 5735520 +1628248 5733088 1625176 5734984 1626328 5735392 1626480 5735432 +1628400 5733272 1628248 5733088 1626712 5735520 1628512 5734776 +1628400 5733272 1628248 5733088 1628512 5734776 1628616 5733640 +1628248 5733088 1626480 5735432 1626712 5735520 1628512 5734776 +1626712 5735520 1628496 5734816 1628512 5734776 1628248 5733088 +1628248 5733088 1625040 5734896 1625176 5734984 1626328 5735392 +1627440 5730528 1628248 5733088 1628400 5733272 1627560 5730576 +1627440 5730528 1628248 5733088 1627560 5730576 1627520 5730552 +1628400 5733272 1627560 5730576 1628248 5733088 1628512 5734776 +1625040 5734896 1625176 5734984 1628248 5733088 1624728 5734744 +1628248 5733088 1627560 5730576 1627440 5730528 1627360 5730472 +1628400 5733272 1628336 5731192 1627560 5730576 1628248 5733088 +1628400 5733272 1628376 5731232 1628336 5731192 1628248 5733088 +1628400 5733272 1628640 5731360 1628376 5731232 1628248 5733088 +1628400 5733272 1628792 5733136 1628640 5731360 1628248 5733088 +1628400 5733272 1628728 5733192 1628792 5733136 1628248 5733088 +1628792 5733136 1628640 5731360 1628248 5733088 1628728 5733192 +1628400 5733272 1628648 5733280 1628728 5733192 1628248 5733088 +1628376 5731232 1628336 5731192 1628248 5733088 1628640 5731360 +1628640 5731360 1628376 5731232 1628248 5733088 1628792 5733136 +1628792 5733136 1628928 5733096 1628640 5731360 1628248 5733088 +1628336 5731192 1627632 5730600 1627560 5730576 1628248 5733088 +1627560 5730576 1627440 5730528 1628248 5733088 1628336 5731192 +1628400 5733272 1628728 5733192 1628248 5733088 1628512 5734776 +1628336 5731192 1627560 5730576 1628248 5733088 1628376 5731232 +1625176 5734984 1626192 5735400 1626328 5735392 1628248 5733088 +1627360 5730472 1627328 5730448 1624264 5734424 1628248 5733088 +1627360 5730472 1627328 5730448 1628248 5733088 1627440 5730528 +1624264 5734424 1624728 5734744 1628248 5733088 1627328 5730448 +1627328 5730448 1627296 5730408 1624264 5734424 1628248 5733088 +1628248 5733088 1628208 5733016 1624264 5734424 1624728 5734744 +1624264 5734424 1624536 5734640 1624728 5734744 1628208 5733016 +1628248 5733088 1628208 5733016 1624728 5734744 1625040 5734896 +1628208 5733016 1624264 5734424 1624728 5734744 1625040 5734896 +1628248 5733088 1628208 5733016 1625040 5734896 1625176 5734984 +1628208 5733016 1624728 5734744 1625040 5734896 1625176 5734984 +1628248 5733088 1628208 5733016 1625176 5734984 1626328 5735392 +1628248 5733088 1628208 5733016 1626328 5735392 1626480 5735432 +1628208 5733016 1625040 5734896 1625176 5734984 1626328 5735392 +1628248 5733088 1627328 5730448 1628208 5733016 1626328 5735392 +1628208 5733016 1627328 5730448 1624264 5734424 1624728 5734744 +1625176 5734984 1626192 5735400 1626328 5735392 1628208 5733016 +1624264 5734424 1628208 5733016 1627328 5730448 1627296 5730408 +1627328 5730448 1628208 5733016 1628248 5733088 1627360 5730472 +1628248 5733088 1627440 5730528 1627360 5730472 1628208 5733016 +1628208 5733016 1626328 5735392 1628248 5733088 1627440 5730528 +1628248 5733088 1627560 5730576 1627440 5730528 1628208 5733016 +1627560 5730576 1627520 5730552 1627440 5730528 1628208 5733016 +1627440 5730528 1627360 5730472 1628208 5733016 1627560 5730576 +1628248 5733088 1628336 5731192 1627560 5730576 1628208 5733016 +1628336 5731192 1627632 5730600 1627560 5730576 1628208 5733016 +1628248 5733088 1628336 5731192 1628208 5733016 1626328 5735392 +1627560 5730576 1627440 5730528 1628208 5733016 1628336 5731192 +1627328 5730448 1624264 5734424 1628208 5733016 1627360 5730472 +1628248 5733088 1628376 5731232 1628336 5731192 1628208 5733016 +1628248 5733088 1628640 5731360 1628376 5731232 1628208 5733016 +1628248 5733088 1628792 5733136 1628640 5731360 1628208 5733016 +1628248 5733088 1628728 5733192 1628792 5733136 1628208 5733016 +1628640 5731360 1628376 5731232 1628208 5733016 1628792 5733136 +1628792 5733136 1628928 5733096 1628640 5731360 1628208 5733016 +1628640 5731360 1628376 5731232 1628208 5733016 1628928 5733096 +1628792 5733136 1628928 5733096 1628208 5733016 1628248 5733088 +1628336 5731192 1627560 5730576 1628208 5733016 1628376 5731232 +1628248 5733088 1628792 5733136 1628208 5733016 1626328 5735392 +1628376 5731232 1628336 5731192 1628208 5733016 1628640 5731360 +1628928 5733096 1628768 5731368 1628640 5731360 1628208 5733016 +1628640 5731360 1628376 5731232 1628208 5733016 1628768 5731368 +1628928 5733096 1628768 5731368 1628208 5733016 1628792 5733136 +1628928 5733096 1629088 5733088 1628768 5731368 1628208 5733016 +1627360 5730472 1627328 5730448 1628208 5733016 1627440 5730528 +1628208 5733016 1628184 5732984 1624264 5734424 1624728 5734744 +1624264 5734424 1624536 5734640 1624728 5734744 1628184 5732984 +1628208 5733016 1628184 5732984 1624728 5734744 1625040 5734896 +1628208 5733016 1628184 5732984 1625040 5734896 1625176 5734984 +1628184 5732984 1624728 5734744 1625040 5734896 1625176 5734984 +1628208 5733016 1628184 5732984 1625176 5734984 1626328 5735392 +1628184 5732984 1625040 5734896 1625176 5734984 1626328 5735392 +1628208 5733016 1628184 5732984 1626328 5735392 1628248 5733088 +1626328 5735392 1626480 5735432 1628248 5733088 1628184 5732984 +1626480 5735432 1626712 5735520 1628248 5733088 1628184 5732984 +1628248 5733088 1628208 5733016 1628184 5732984 1626480 5735432 +1628184 5732984 1625176 5734984 1626328 5735392 1626480 5735432 +1628184 5732984 1624264 5734424 1624728 5734744 1625040 5734896 +1628208 5733016 1627328 5730448 1628184 5732984 1628248 5733088 +1627328 5730448 1628184 5732984 1628208 5733016 1627360 5730472 +1627328 5730448 1624264 5734424 1628184 5732984 1627360 5730472 +1628184 5732984 1628248 5733088 1628208 5733016 1627360 5730472 +1628184 5732984 1627328 5730448 1624264 5734424 1624728 5734744 +1625176 5734984 1626192 5735400 1626328 5735392 1628184 5732984 +1624264 5734424 1628184 5732984 1627328 5730448 1627296 5730408 +1628208 5733016 1627440 5730528 1627360 5730472 1628184 5732984 +1628208 5733016 1627560 5730576 1627440 5730528 1628184 5732984 +1627560 5730576 1627520 5730552 1627440 5730528 1628184 5732984 +1628208 5733016 1628336 5731192 1627560 5730576 1628184 5732984 +1627560 5730576 1627440 5730528 1628184 5732984 1628336 5731192 +1628336 5731192 1627632 5730600 1627560 5730576 1628184 5732984 +1628208 5733016 1628376 5731232 1628336 5731192 1628184 5732984 +1628336 5731192 1627560 5730576 1628184 5732984 1628376 5731232 +1628208 5733016 1628376 5731232 1628184 5732984 1628248 5733088 +1627360 5730472 1627328 5730448 1628184 5732984 1627440 5730528 +1628208 5733016 1628640 5731360 1628376 5731232 1628184 5732984 +1628208 5733016 1628768 5731368 1628640 5731360 1628184 5732984 +1628376 5731232 1628336 5731192 1628184 5732984 1628640 5731360 +1628208 5733016 1628768 5731368 1628184 5732984 1628248 5733088 +1628640 5731360 1628376 5731232 1628184 5732984 1628768 5731368 +1628208 5733016 1628928 5733096 1628768 5731368 1628184 5732984 +1628768 5731368 1628640 5731360 1628184 5732984 1628928 5733096 +1628208 5733016 1628792 5733136 1628928 5733096 1628184 5732984 +1628208 5733016 1628248 5733088 1628792 5733136 1628184 5732984 +1628928 5733096 1629088 5733088 1628768 5731368 1628184 5732984 +1628208 5733016 1628792 5733136 1628184 5732984 1628248 5733088 +1628928 5733096 1628768 5731368 1628184 5732984 1628792 5733136 +1627440 5730528 1627360 5730472 1628184 5732984 1627560 5730576 +1628184 5732984 1628176 5732880 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1628176 5732880 +1627560 5730576 1628176 5732880 1628336 5731192 1627632 5730600 +1628336 5731192 1628176 5732880 1628184 5732984 1628376 5731232 +1628184 5732984 1628640 5731360 1628376 5731232 1628176 5732880 +1628376 5731232 1628336 5731192 1628176 5732880 1628640 5731360 +1628176 5732880 1628336 5731192 1627560 5730576 1627440 5730528 +1628336 5731192 1627560 5730576 1628176 5732880 1628376 5731232 +1628184 5732984 1628640 5731360 1628176 5732880 1627440 5730528 +1628184 5732984 1628768 5731368 1628640 5731360 1628176 5732880 +1628184 5732984 1628928 5733096 1628768 5731368 1628176 5732880 +1628928 5733096 1629088 5733088 1628768 5731368 1628176 5732880 +1628640 5731360 1628376 5731232 1628176 5732880 1628768 5731368 +1628184 5732984 1628928 5733096 1628176 5732880 1627440 5730528 +1628768 5731368 1628640 5731360 1628176 5732880 1628928 5733096 +1628184 5732984 1628792 5733136 1628928 5733096 1628176 5732880 +1628928 5733096 1628768 5731368 1628176 5732880 1628792 5733136 +1628184 5732984 1628208 5733016 1628792 5733136 1628176 5732880 +1628208 5733016 1628248 5733088 1628792 5733136 1628176 5732880 +1628184 5732984 1628208 5733016 1628176 5732880 1627440 5730528 +1628792 5733136 1628928 5733096 1628176 5732880 1628208 5733016 +1628184 5732984 1628176 5732880 1627440 5730528 1627360 5730472 +1628176 5732880 1627560 5730576 1627440 5730528 1627360 5730472 +1628184 5732984 1628176 5732880 1627360 5730472 1627328 5730448 +1628184 5732984 1628176 5732880 1627328 5730448 1624264 5734424 +1628176 5732880 1627360 5730472 1627328 5730448 1624264 5734424 +1628184 5732984 1628176 5732880 1624264 5734424 1624728 5734744 +1624264 5734424 1624536 5734640 1624728 5734744 1628176 5732880 +1628176 5732880 1627328 5730448 1624264 5734424 1624728 5734744 +1628184 5732984 1628176 5732880 1624728 5734744 1625040 5734896 +1628184 5732984 1628176 5732880 1625040 5734896 1625176 5734984 +1628176 5732880 1624264 5734424 1624728 5734744 1625040 5734896 +1628184 5732984 1628208 5733016 1628176 5732880 1625040 5734896 +1627328 5730448 1627296 5730408 1624264 5734424 1628176 5732880 +1628176 5732880 1627440 5730528 1627360 5730472 1627328 5730448 +1628928 5733096 1628208 5732824 1628176 5732880 1628792 5733136 +1628768 5731368 1628208 5732824 1628928 5733096 1629088 5733088 +1628208 5732824 1628768 5731368 1628176 5732880 1628792 5733136 +1628928 5733096 1628768 5731368 1628208 5732824 1628792 5733136 +1628176 5732880 1628208 5732824 1628768 5731368 1628640 5731360 +1628176 5732880 1628208 5732824 1628640 5731360 1628376 5731232 +1628176 5732880 1628208 5732824 1628376 5731232 1628336 5731192 +1628208 5732824 1628640 5731360 1628376 5731232 1628336 5731192 +1628176 5732880 1628792 5733136 1628208 5732824 1628336 5731192 +1628176 5732880 1628208 5732824 1628336 5731192 1627560 5730576 +1628336 5731192 1627632 5730600 1627560 5730576 1628208 5732824 +1628208 5732824 1628376 5731232 1628336 5731192 1627560 5730576 +1628176 5732880 1628208 5732824 1627560 5730576 1627440 5730528 +1627560 5730576 1627520 5730552 1627440 5730528 1628208 5732824 +1628176 5732880 1628208 5732824 1627440 5730528 1627360 5730472 +1628176 5732880 1628792 5733136 1628208 5732824 1627440 5730528 +1628208 5732824 1628336 5731192 1627560 5730576 1627440 5730528 +1628208 5732824 1628928 5733096 1628768 5731368 1628640 5731360 +1628208 5732824 1628768 5731368 1628640 5731360 1628376 5731232 +1628176 5732880 1628208 5733016 1628792 5733136 1628208 5732824 +1628792 5733136 1628928 5733096 1628208 5732824 1628208 5733016 +1628208 5733016 1628248 5733088 1628792 5733136 1628208 5732824 +1628248 5733088 1628728 5733192 1628792 5733136 1628208 5732824 +1628792 5733136 1628928 5733096 1628208 5732824 1628248 5733088 +1628176 5732880 1628184 5732984 1628208 5733016 1628208 5732824 +1628176 5732880 1628208 5733016 1628208 5732824 1627440 5730528 +1628208 5733016 1628248 5733088 1628208 5732824 1628176 5732880 +1628768 5731368 1628336 5732728 1628928 5733096 1629088 5733088 +1628768 5731368 1628336 5732728 1629088 5733088 1629208 5731336 +1628208 5732824 1628336 5732728 1628768 5731368 1628640 5731360 +1628336 5732728 1628208 5732824 1628928 5733096 1629088 5733088 +1628208 5732824 1628928 5733096 1628336 5732728 1628640 5731360 +1628928 5733096 1628336 5732728 1628208 5732824 1628792 5733136 +1628208 5732824 1628248 5733088 1628792 5733136 1628336 5732728 +1628248 5733088 1628728 5733192 1628792 5733136 1628336 5732728 +1628248 5733088 1628400 5733272 1628728 5733192 1628336 5732728 +1628248 5733088 1628728 5733192 1628336 5732728 1628208 5732824 +1628208 5732824 1628208 5733016 1628248 5733088 1628336 5732728 +1628248 5733088 1628728 5733192 1628336 5732728 1628208 5733016 +1628928 5733096 1629088 5733088 1628336 5732728 1628792 5733136 +1628336 5732728 1628640 5731360 1628208 5732824 1628208 5733016 +1628792 5733136 1628928 5733096 1628336 5732728 1628728 5733192 +1628768 5731368 1628640 5731360 1628336 5732728 1629088 5733088 +1628208 5732824 1628336 5732728 1628640 5731360 1628376 5731232 +1628208 5732824 1628336 5732728 1628376 5731232 1628336 5731192 +1628336 5732728 1628768 5731368 1628640 5731360 1628376 5731232 +1628208 5732824 1628208 5733016 1628336 5732728 1628376 5731232 +1628208 5732824 1628176 5732880 1628208 5733016 1628336 5732728 +1629088 5733088 1628472 5732696 1628336 5732728 1628928 5733096 +1628768 5731368 1628472 5732696 1629088 5733088 1629208 5731336 +1628768 5731368 1628472 5732696 1629208 5731336 1628864 5731328 +1628472 5732696 1628768 5731368 1628336 5732728 1628928 5733096 +1628336 5732728 1628792 5733136 1628928 5733096 1628472 5732696 +1628928 5733096 1629088 5733088 1628472 5732696 1628792 5733136 +1628336 5732728 1628792 5733136 1628472 5732696 1628768 5731368 +1628768 5731368 1628336 5732728 1628472 5732696 1629208 5731336 +1629088 5733088 1629208 5731336 1628472 5732696 1628928 5733096 +1628336 5732728 1628728 5733192 1628792 5733136 1628472 5732696 +1628336 5732728 1628248 5733088 1628728 5733192 1628472 5732696 +1628248 5733088 1628400 5733272 1628728 5733192 1628472 5732696 +1628336 5732728 1628208 5733016 1628248 5733088 1628472 5732696 +1628336 5732728 1628248 5733088 1628472 5732696 1628768 5731368 +1628792 5733136 1628928 5733096 1628472 5732696 1628728 5733192 +1628728 5733192 1628792 5733136 1628472 5732696 1628248 5733088 +1628336 5732728 1628472 5732696 1628768 5731368 1628640 5731360 +1628336 5732728 1628472 5732696 1628640 5731360 1628376 5731232 +1628336 5732728 1628248 5733088 1628472 5732696 1628640 5731360 +1628472 5732696 1629208 5731336 1628768 5731368 1628640 5731360 +1629088 5733088 1629800 5733120 1629208 5731336 1628472 5732696 +1628472 5732696 1628664 5732696 1629208 5731336 1628768 5731368 +1629208 5731336 1628864 5731328 1628768 5731368 1628664 5732696 +1628472 5732696 1628664 5732696 1628768 5731368 1628640 5731360 +1628664 5732696 1629208 5731336 1628768 5731368 1628640 5731360 +1628472 5732696 1628664 5732696 1628640 5731360 1628336 5732728 +1629088 5733088 1628664 5732696 1628472 5732696 1628928 5733096 +1628472 5732696 1628792 5733136 1628928 5733096 1628664 5732696 +1629088 5733088 1629208 5731336 1628664 5732696 1628928 5733096 +1628472 5732696 1628728 5733192 1628792 5733136 1628664 5732696 +1628792 5733136 1628928 5733096 1628664 5732696 1628728 5733192 +1628928 5733096 1629088 5733088 1628664 5732696 1628792 5733136 +1628472 5732696 1628248 5733088 1628728 5733192 1628664 5732696 +1629208 5731336 1628664 5732696 1629088 5733088 1629800 5733120 +1629088 5733088 1629432 5733200 1629800 5733120 1628664 5732696 +1628664 5732696 1628928 5733096 1629088 5733088 1629800 5733120 +1629208 5731336 1628664 5732696 1629800 5733120 1629272 5731304 +1628472 5732696 1628728 5733192 1628664 5732696 1628640 5731360 +1628664 5732696 1629800 5733120 1629208 5731336 1628768 5731368 +1629208 5731336 1628848 5732736 1629800 5733120 1629272 5731304 +1629800 5733120 1628848 5732736 1628664 5732696 1629088 5733088 +1629800 5733120 1628848 5732736 1629088 5733088 1629432 5733200 +1628664 5732696 1628928 5733096 1629088 5733088 1628848 5732736 +1629800 5733120 1629208 5731336 1628848 5732736 1629432 5733200 +1629800 5733120 1628848 5732736 1629432 5733200 1629624 5733200 +1628664 5732696 1628792 5733136 1628928 5733096 1628848 5732736 +1628664 5732696 1628728 5733192 1628792 5733136 1628848 5732736 +1628928 5733096 1629088 5733088 1628848 5732736 1628792 5733136 +1628848 5732736 1628928 5733096 1629088 5733088 1629432 5733200 +1628664 5732696 1628848 5732736 1629208 5731336 1628768 5731368 +1628664 5732696 1628848 5732736 1628768 5731368 1628640 5731360 +1628848 5732736 1629800 5733120 1629208 5731336 1628768 5731368 +1629208 5731336 1628864 5731328 1628768 5731368 1628848 5732736 +1628848 5732736 1628768 5731368 1628664 5732696 1628792 5733136 +1629432 5733200 1629120 5732912 1628848 5732736 1629088 5733088 +1629120 5732912 1629800 5733120 1628848 5732736 1629088 5733088 +1628848 5732736 1629120 5732912 1629800 5733120 1629208 5731336 +1628848 5732736 1629120 5732912 1629208 5731336 1628768 5731368 +1628848 5732736 1629088 5733088 1629120 5732912 1629208 5731336 +1629120 5732912 1629432 5733200 1629800 5733120 1629208 5731336 +1629432 5733200 1629800 5733120 1629120 5732912 1629088 5733088 +1629800 5733120 1629120 5732912 1629432 5733200 1629624 5733200 +1629800 5733120 1629208 5731336 1629120 5732912 1629624 5733200 +1629120 5732912 1629088 5733088 1629432 5733200 1629624 5733200 +1629800 5733120 1629272 5731304 1629208 5731336 1629120 5732912 +1629800 5733120 1629928 5733104 1629272 5731304 1629120 5732912 +1629208 5731336 1628848 5732736 1629120 5732912 1629272 5731304 +1629800 5733120 1629272 5731304 1629120 5732912 1629624 5733200 +1628848 5732736 1628928 5733096 1629088 5733088 1629120 5732912 +1629088 5733088 1629432 5733200 1629120 5732912 1628928 5733096 +1628848 5732736 1628792 5733136 1628928 5733096 1629120 5732912 +1628848 5732736 1628928 5733096 1629120 5732912 1629208 5731336 +1629120 5732912 1629248 5732952 1629800 5733120 1629272 5731304 +1629800 5733120 1629928 5733104 1629272 5731304 1629248 5732952 +1629928 5733104 1629320 5731248 1629272 5731304 1629248 5732952 +1629272 5731304 1629120 5732912 1629248 5732952 1629928 5733104 +1629120 5732912 1629624 5733200 1629248 5732952 1629272 5731304 +1629248 5732952 1629624 5733200 1629800 5733120 1629928 5733104 +1629624 5733200 1629248 5732952 1629120 5732912 1629432 5733200 +1629248 5732952 1629272 5731304 1629120 5732912 1629432 5733200 +1629120 5732912 1629088 5733088 1629432 5733200 1629248 5732952 +1629120 5732912 1628928 5733096 1629088 5733088 1629248 5732952 +1629120 5732912 1629088 5733088 1629248 5732952 1629272 5731304 +1629624 5733200 1629800 5733120 1629248 5732952 1629432 5733200 +1629432 5733200 1629624 5733200 1629248 5732952 1629088 5733088 +1629120 5732912 1629248 5732952 1629272 5731304 1629208 5731336 +1629120 5732912 1629248 5732952 1629208 5731336 1628848 5732736 +1629248 5732952 1629928 5733104 1629272 5731304 1629208 5731336 +1629120 5732912 1629088 5733088 1629248 5732952 1629208 5731336 +1629928 5733104 1629416 5732952 1629248 5732952 1629800 5733120 +1629272 5731304 1629416 5732952 1629928 5733104 1629320 5731248 +1629248 5732952 1629416 5732952 1629272 5731304 1629208 5731336 +1629248 5732952 1629624 5733200 1629800 5733120 1629416 5732952 +1629800 5733120 1629928 5733104 1629416 5732952 1629624 5733200 +1629416 5732952 1629208 5731336 1629248 5732952 1629624 5733200 +1629248 5732952 1629432 5733200 1629624 5733200 1629416 5732952 +1629624 5733200 1629800 5733120 1629416 5732952 1629432 5733200 +1629248 5732952 1629432 5733200 1629416 5732952 1629208 5731336 +1629416 5732952 1629928 5733104 1629272 5731304 1629208 5731336 +1629928 5733104 1629272 5731304 1629416 5732952 1629800 5733120 +1629248 5732952 1629088 5733088 1629432 5733200 1629416 5732952 +1629248 5732952 1629416 5732952 1629208 5731336 1629120 5732912 +1629208 5731336 1628848 5732736 1629120 5732912 1629416 5732952 +1629208 5731336 1628768 5731368 1628848 5732736 1629416 5732952 +1629416 5732952 1629272 5731304 1629208 5731336 1628848 5732736 +1629248 5732952 1629432 5733200 1629416 5732952 1629120 5732912 +1629120 5732912 1629248 5732952 1629416 5732952 1628848 5732736 +1629272 5731304 1629624 5732928 1629928 5733104 1629320 5731248 +1629416 5732952 1629624 5732928 1629272 5731304 1629208 5731336 +1629416 5732952 1629624 5732928 1629208 5731336 1628848 5732736 +1629416 5732952 1629928 5733104 1629624 5732928 1629208 5731336 +1629928 5733104 1629624 5732928 1629416 5732952 1629800 5733120 +1629416 5732952 1629624 5733200 1629800 5733120 1629624 5732928 +1629416 5732952 1629432 5733200 1629624 5733200 1629624 5732928 +1629624 5732928 1629208 5731336 1629416 5732952 1629624 5733200 +1629800 5733120 1629928 5733104 1629624 5732928 1629624 5733200 +1629272 5731304 1629208 5731336 1629624 5732928 1629320 5731248 +1629624 5732928 1629800 5733120 1629928 5733104 1629320 5731248 +1629928 5733104 1630040 5733128 1629320 5731248 1629624 5732928 +1629320 5731248 1629272 5731304 1629624 5732928 1630040 5733128 +1630040 5733128 1630128 5733192 1629320 5731248 1629624 5732928 +1629928 5733104 1630040 5733128 1629624 5732928 1629800 5733120 +1629624 5732928 1629856 5732960 1629320 5731248 1629272 5731304 +1629320 5731248 1629856 5732960 1630040 5733128 1630128 5733192 +1629624 5732928 1629856 5732960 1629272 5731304 1629208 5731336 +1629624 5732928 1630040 5733128 1629856 5732960 1629272 5731304 +1629856 5732960 1630128 5733192 1629320 5731248 1629272 5731304 +1629856 5732960 1629624 5732928 1630040 5733128 1630128 5733192 +1629320 5731248 1629856 5732960 1630128 5733192 1630200 5733272 +1630040 5733128 1629856 5732960 1629624 5732928 1629928 5733104 +1629856 5732960 1629272 5731304 1629624 5732928 1629928 5733104 +1629624 5732928 1629800 5733120 1629928 5733104 1629856 5732960 +1629624 5732928 1629624 5733200 1629800 5733120 1629856 5732960 +1629624 5732928 1629800 5733120 1629856 5732960 1629272 5731304 +1630040 5733128 1630128 5733192 1629856 5732960 1629928 5733104 +1629928 5733104 1630040 5733128 1629856 5732960 1629800 5733120 +1630200 5733272 1630104 5733016 1629320 5731248 1630128 5733192 +1630104 5733016 1630704 5733848 1629320 5731248 1630128 5733192 +1630200 5733272 1630704 5733848 1630104 5733016 1630128 5733192 +1629320 5731248 1629856 5732960 1630128 5733192 1630104 5733016 +1630128 5733192 1630200 5733272 1630104 5733016 1629856 5732960 +1629856 5732960 1630040 5733128 1630128 5733192 1630104 5733016 +1630128 5733192 1630200 5733272 1630104 5733016 1630040 5733128 +1629320 5731248 1629272 5731304 1629856 5732960 1630104 5733016 +1629320 5731248 1629856 5732960 1630104 5733016 1630704 5733848 +1629856 5732960 1629928 5733104 1630040 5733128 1630104 5733016 +1630040 5733128 1630128 5733192 1630104 5733016 1629928 5733104 +1629856 5732960 1629928 5733104 1630104 5733016 1629320 5731248 +1629320 5731248 1630104 5733016 1630704 5733848 1629928 5726696 +1629320 5731248 1629856 5732960 1630104 5733016 1629928 5726696 +1630104 5733016 1630200 5733272 1630704 5733848 1629928 5726696 +1630704 5733848 1630104 5733016 1630200 5733272 1630456 5733648 +1630704 5733848 1629944 5726624 1629928 5726696 1630104 5733016 +1629320 5731248 1630104 5733016 1629928 5726696 1629304 5731208 +1629856 5732960 1629800 5733120 1629928 5733104 1630104 5733016 +1630704 5733848 1630536 5733184 1630104 5733016 1630200 5733272 +1630104 5733016 1630128 5733192 1630200 5733272 1630536 5733184 +1630104 5733016 1630040 5733128 1630128 5733192 1630536 5733184 +1630200 5733272 1630704 5733848 1630536 5733184 1630128 5733192 +1630704 5733848 1629928 5726696 1630536 5733184 1630200 5733272 +1630536 5733184 1629928 5726696 1630104 5733016 1630128 5733192 +1630104 5733016 1630536 5733184 1629928 5726696 1629320 5731248 +1630104 5733016 1630536 5733184 1629320 5731248 1629856 5732960 +1630536 5733184 1630704 5733848 1629928 5726696 1629320 5731248 +1630104 5733016 1630128 5733192 1630536 5733184 1629320 5731248 +1630704 5733848 1630536 5733184 1630200 5733272 1630456 5733648 +1630536 5733184 1630128 5733192 1630200 5733272 1630456 5733648 +1630704 5733848 1629928 5726696 1630536 5733184 1630456 5733648 +1629928 5726696 1630536 5733184 1630704 5733848 1629944 5726624 +1629928 5726696 1629320 5731248 1630536 5733184 1629944 5726624 +1630536 5733184 1630456 5733648 1630704 5733848 1629944 5726624 +1630704 5733848 1630736 5733944 1629944 5726624 1630536 5733184 +1630704 5733848 1630736 5733944 1630536 5733184 1630456 5733648 +1630736 5733944 1629944 5726576 1629944 5726624 1630536 5733184 +1629944 5726624 1629928 5726696 1630536 5733184 1630736 5733944 +1629928 5726696 1629304 5731208 1629320 5731248 1630536 5733184 +1629944 5726576 1630688 5733312 1743888 5687504 1743800 5687320 +1630736 5733944 1630688 5733312 1629944 5726576 1629944 5726624 +1630688 5733312 1743888 5687504 1629944 5726576 1629944 5726624 +1630736 5733944 1743888 5687504 1630688 5733312 1629944 5726624 +1630736 5733944 1630688 5733312 1629944 5726624 1630536 5733184 +1630736 5733944 1743888 5687504 1630688 5733312 1630536 5733184 +1630688 5733312 1629944 5726576 1629944 5726624 1630536 5733184 +1630736 5733944 1630688 5733312 1630536 5733184 1630704 5733848 +1630536 5733184 1630456 5733648 1630704 5733848 1630688 5733312 +1630736 5733944 1743888 5687504 1630688 5733312 1630704 5733848 +1630688 5733312 1629944 5726624 1630536 5733184 1630456 5733648 +1630704 5733848 1630736 5733944 1630688 5733312 1630456 5733648 +1630536 5733184 1630200 5733272 1630456 5733648 1630688 5733312 +1629944 5726624 1629928 5726696 1630536 5733184 1630688 5733312 +1629928 5726696 1629320 5731248 1630536 5733184 1630688 5733312 +1630536 5733184 1630456 5733648 1630688 5733312 1629320 5731248 +1629944 5726624 1629928 5726696 1630688 5733312 1629944 5726576 +1629320 5731248 1630104 5733016 1630536 5733184 1630688 5733312 +1629928 5726696 1629320 5731248 1630688 5733312 1629944 5726624 +1743888 5687504 1630688 5733312 1630736 5733944 1751256 5699792 +1743888 5687504 1630688 5733312 1751256 5699792 1743976 5687584 +1743888 5687504 1629944 5726576 1630688 5733312 1751256 5699792 +1630688 5733312 1630704 5733848 1630736 5733944 1751256 5699792 +1630736 5733944 1631312 5744824 1751256 5699792 1630688 5733312 +1629928 5726696 1629304 5731208 1629320 5731248 1630688 5733312 +1630736 5733944 1630752 5733408 1630688 5733312 1630704 5733848 +1630752 5733408 1751256 5699792 1630688 5733312 1630704 5733848 +1630736 5733944 1751256 5699792 1630752 5733408 1630704 5733848 +1630688 5733312 1630456 5733648 1630704 5733848 1630752 5733408 +1630688 5733312 1630536 5733184 1630456 5733648 1630752 5733408 +1630688 5733312 1630456 5733648 1630752 5733408 1751256 5699792 +1630704 5733848 1630736 5733944 1630752 5733408 1630456 5733648 +1630688 5733312 1630752 5733408 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1630752 5733408 +1630688 5733312 1630752 5733408 1743888 5687504 1629944 5726576 +1743888 5687504 1743800 5687320 1629944 5726576 1630752 5733408 +1630688 5733312 1630752 5733408 1629944 5726576 1629944 5726624 +1630752 5733408 1743888 5687504 1629944 5726576 1629944 5726624 +1630688 5733312 1630456 5733648 1630752 5733408 1629944 5726624 +1630752 5733408 1630736 5733944 1751256 5699792 1743888 5687504 +1630688 5733312 1630752 5733408 1629944 5726624 1629928 5726696 +1630752 5733408 1629944 5726576 1629944 5726624 1629928 5726696 +1630688 5733312 1630456 5733648 1630752 5733408 1629928 5726696 +1630688 5733312 1630752 5733408 1629928 5726696 1629320 5731248 +1630752 5733408 1751256 5699792 1743888 5687504 1629944 5726576 +1751256 5699792 1630752 5733408 1630736 5733944 1631312 5744824 +1630752 5733408 1630944 5733600 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1630944 5733600 +1630752 5733408 1630736 5733944 1630944 5733600 1743888 5687504 +1630736 5733944 1630944 5733600 1630752 5733408 1630704 5733848 +1630752 5733408 1630456 5733648 1630704 5733848 1630944 5733600 +1630944 5733600 1743888 5687504 1630752 5733408 1630704 5733848 +1630944 5733600 1630736 5733944 1751256 5699792 1743888 5687504 +1630736 5733944 1751256 5699792 1630944 5733600 1630704 5733848 +1630752 5733408 1630944 5733600 1743888 5687504 1629944 5726576 +1743888 5687504 1743800 5687320 1629944 5726576 1630944 5733600 +1630752 5733408 1630944 5733600 1629944 5726576 1629944 5726624 +1630752 5733408 1630944 5733600 1629944 5726624 1629928 5726696 +1630944 5733600 1629944 5726576 1629944 5726624 1629928 5726696 +1630944 5733600 1751256 5699792 1743888 5687504 1629944 5726576 +1630752 5733408 1630704 5733848 1630944 5733600 1629928 5726696 +1630752 5733408 1630944 5733600 1629928 5726696 1630688 5733312 +1630944 5733600 1629944 5726624 1629928 5726696 1630688 5733312 +1630752 5733408 1630704 5733848 1630944 5733600 1630688 5733312 +1629928 5726696 1629320 5731248 1630688 5733312 1630944 5733600 +1630944 5733600 1743888 5687504 1629944 5726576 1629944 5726624 +1751256 5699792 1630944 5733600 1630736 5733944 1631312 5744824 +1751256 5699792 1743888 5687504 1630944 5733600 1631312 5744824 +1630944 5733600 1630704 5733848 1630736 5733944 1631312 5744824 +1630736 5733944 1630704 5735568 1631312 5744824 1630944 5733600 +1630736 5733944 1630704 5735568 1630944 5733600 1630704 5733848 +1630704 5735568 1630952 5743928 1631312 5744824 1630944 5733600 +1630736 5733944 1630704 5735512 1630704 5735568 1630944 5733600 +1630736 5733944 1630704 5735512 1630944 5733600 1630704 5733848 +1630704 5735568 1631312 5744824 1630944 5733600 1630704 5735512 +1630704 5735512 1630688 5735528 1630704 5735568 1630944 5733600 +1631312 5744824 1751256 5699792 1630944 5733600 1630704 5735568 +1630736 5733944 1630720 5734000 1630704 5735512 1630944 5733600 +1630736 5733944 1630720 5734000 1630944 5733600 1630704 5733848 +1630704 5735512 1630704 5735568 1630944 5733600 1630720 5734000 +1630720 5734000 1630664 5734072 1630704 5735512 1630944 5733600 +1751256 5699792 1630944 5733600 1631312 5744824 1760125 5760125 +1630944 5733600 1631104 5733736 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1631104 5733736 +1630944 5733600 1631104 5733736 1743888 5687504 1629944 5726576 +1743888 5687504 1743800 5687320 1629944 5726576 1631104 5733736 +1631104 5733736 1751256 5699792 1743888 5687504 1629944 5726576 +1630944 5733600 1631312 5744824 1631104 5733736 1629944 5726576 +1631104 5733736 1631312 5744824 1751256 5699792 1743888 5687504 +1630944 5733600 1631104 5733736 1629944 5726576 1629944 5726624 +1630944 5733600 1631104 5733736 1629944 5726624 1629928 5726696 +1630944 5733600 1631104 5733736 1629928 5726696 1630688 5733312 +1631104 5733736 1629944 5726624 1629928 5726696 1630688 5733312 +1631104 5733736 1743888 5687504 1629944 5726576 1629944 5726624 +1630944 5733600 1631312 5744824 1631104 5733736 1630688 5733312 +1630944 5733600 1631104 5733736 1630688 5733312 1630752 5733408 +1629928 5726696 1629320 5731248 1630688 5733312 1631104 5733736 +1631104 5733736 1629944 5726576 1629944 5726624 1629928 5726696 +1631312 5744824 1631104 5733736 1630944 5733600 1630704 5735568 +1631104 5733736 1630688 5733312 1630944 5733600 1630704 5735568 +1631312 5744824 1751256 5699792 1631104 5733736 1630704 5735568 +1631312 5744824 1631104 5733736 1630704 5735568 1630952 5743928 +1630944 5733600 1630704 5735512 1630704 5735568 1631104 5733736 +1630944 5733600 1630704 5735512 1631104 5733736 1630688 5733312 +1630944 5733600 1630720 5734000 1630704 5735512 1631104 5733736 +1630944 5733600 1630720 5734000 1631104 5733736 1630688 5733312 +1630704 5735512 1630704 5735568 1631104 5733736 1630720 5734000 +1630704 5735512 1630688 5735528 1630704 5735568 1631104 5733736 +1630720 5734000 1630664 5734072 1630704 5735512 1631104 5733736 +1630720 5734000 1630664 5734072 1631104 5733736 1630944 5733600 +1630704 5735512 1630704 5735568 1631104 5733736 1630664 5734072 +1630664 5734072 1630608 5735424 1630704 5735512 1631104 5733736 +1630704 5735568 1631312 5744824 1631104 5733736 1630704 5735512 +1630944 5733600 1630736 5733944 1630720 5734000 1631104 5733736 +1630944 5733600 1630736 5733944 1631104 5733736 1630688 5733312 +1630944 5733600 1630704 5733848 1630736 5733944 1631104 5733736 +1630944 5733600 1630752 5733408 1630704 5733848 1631104 5733736 +1630944 5733600 1630704 5733848 1631104 5733736 1630688 5733312 +1630720 5734000 1630664 5734072 1631104 5733736 1630736 5733944 +1630736 5733944 1630720 5734000 1631104 5733736 1630704 5733848 +1751256 5699792 1631104 5733736 1631312 5744824 1760125 5760125 +1631104 5733736 1631176 5733840 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1631176 5733840 +1631104 5733736 1631176 5733840 1743888 5687504 1629944 5726576 +1743888 5687504 1743800 5687320 1629944 5726576 1631176 5733840 +1631104 5733736 1631176 5733840 1629944 5726576 1629944 5726624 +1631176 5733840 1743888 5687504 1629944 5726576 1629944 5726624 +1631176 5733840 1751256 5699792 1743888 5687504 1629944 5726576 +1631104 5733736 1631312 5744824 1631176 5733840 1629944 5726624 +1631312 5744824 1631176 5733840 1631104 5733736 1630704 5735568 +1631176 5733840 1629944 5726624 1631104 5733736 1630704 5735568 +1631176 5733840 1631312 5744824 1751256 5699792 1743888 5687504 +1631312 5744824 1751256 5699792 1631176 5733840 1630704 5735568 +1631312 5744824 1631176 5733840 1630704 5735568 1630952 5743928 +1631104 5733736 1631176 5733840 1629944 5726624 1629928 5726696 +1631104 5733736 1631176 5733840 1629928 5726696 1630688 5733312 +1631176 5733840 1629944 5726576 1629944 5726624 1629928 5726696 +1631104 5733736 1630704 5735568 1631176 5733840 1629928 5726696 +1631104 5733736 1630704 5735512 1630704 5735568 1631176 5733840 +1631104 5733736 1630704 5735512 1631176 5733840 1629928 5726696 +1630704 5735568 1631312 5744824 1631176 5733840 1630704 5735512 +1631104 5733736 1630664 5734072 1630704 5735512 1631176 5733840 +1631104 5733736 1630664 5734072 1631176 5733840 1629928 5726696 +1630704 5735512 1630688 5735528 1630704 5735568 1631176 5733840 +1630664 5734072 1630608 5735424 1630704 5735512 1631176 5733840 +1631104 5733736 1630720 5734000 1630664 5734072 1631176 5733840 +1631104 5733736 1630720 5734000 1631176 5733840 1629928 5726696 +1631104 5733736 1630736 5733944 1630720 5734000 1631176 5733840 +1631104 5733736 1630736 5733944 1631176 5733840 1629928 5726696 +1630664 5734072 1630704 5735512 1631176 5733840 1630720 5734000 +1630720 5734000 1630664 5734072 1631176 5733840 1630736 5733944 +1630704 5735512 1630704 5735568 1631176 5733840 1630664 5734072 +1631104 5733736 1630704 5733848 1630736 5733944 1631176 5733840 +1751256 5699792 1631176 5733840 1631312 5744824 1760125 5760125 +1631176 5733840 1631224 5733936 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1631224 5733936 +1631176 5733840 1631224 5733936 1743888 5687504 1629944 5726576 +1743888 5687504 1743800 5687320 1629944 5726576 1631224 5733936 +1631176 5733840 1631224 5733936 1629944 5726576 1629944 5726624 +1631176 5733840 1631224 5733936 1629944 5726624 1629928 5726696 +1631224 5733936 1743888 5687504 1629944 5726576 1629944 5726624 +1631224 5733936 1751256 5699792 1743888 5687504 1629944 5726576 +1631176 5733840 1631312 5744824 1631224 5733936 1629944 5726624 +1631312 5744824 1631224 5733936 1631176 5733840 1630704 5735568 +1631176 5733840 1630704 5735512 1630704 5735568 1631224 5733936 +1631224 5733936 1629944 5726624 1631176 5733840 1630704 5735512 +1630704 5735568 1631312 5744824 1631224 5733936 1630704 5735512 +1631224 5733936 1631312 5744824 1751256 5699792 1743888 5687504 +1631312 5744824 1751256 5699792 1631224 5733936 1630704 5735568 +1631312 5744824 1631224 5733936 1630704 5735568 1630952 5743928 +1630704 5735512 1630688 5735528 1630704 5735568 1631224 5733936 +1631176 5733840 1630664 5734072 1630704 5735512 1631224 5733936 +1630704 5735512 1630704 5735568 1631224 5733936 1630664 5734072 +1631176 5733840 1630664 5734072 1631224 5733936 1629944 5726624 +1631176 5733840 1630720 5734000 1630664 5734072 1631224 5733936 +1631176 5733840 1630720 5734000 1631224 5733936 1629944 5726624 +1630664 5734072 1630608 5735424 1630704 5735512 1631224 5733936 +1630704 5735512 1630704 5735568 1631224 5733936 1630608 5735424 +1631176 5733840 1630736 5733944 1630720 5734000 1631224 5733936 +1631176 5733840 1630736 5733944 1631224 5733936 1629944 5726624 +1631176 5733840 1631104 5733736 1630736 5733944 1631224 5733936 +1630720 5734000 1630664 5734072 1631224 5733936 1630736 5733944 +1630664 5734072 1630608 5735424 1631224 5733936 1630720 5734000 +1630664 5734072 1630568 5734144 1630608 5735424 1631224 5733936 +1751256 5699792 1631224 5733936 1631312 5744824 1760125 5760125 +1631312 5744824 1631920 5751080 1760125 5760125 1631224 5733936 +1751256 5699792 1631224 5733936 1760125 5760125 1751376 5699848 +1751256 5699792 1743888 5687504 1631224 5733936 1760125 5760125 +1631224 5733936 1630704 5735568 1631312 5744824 1760125 5760125 +1760125 5760125 1631240 5734008 1631312 5744824 1631920 5751080 +1631312 5744824 1631240 5734008 1631224 5733936 1630704 5735568 +1631224 5733936 1630704 5735512 1630704 5735568 1631240 5734008 +1631224 5733936 1630608 5735424 1630704 5735512 1631240 5734008 +1630704 5735512 1630704 5735568 1631240 5734008 1630608 5735424 +1631240 5734008 1760125 5760125 1631224 5733936 1630608 5735424 +1630704 5735568 1631312 5744824 1631240 5734008 1630704 5735512 +1631312 5744824 1760125 5760125 1631240 5734008 1630704 5735568 +1631312 5744824 1631240 5734008 1630704 5735568 1630952 5743928 +1630704 5735512 1630688 5735528 1630704 5735568 1631240 5734008 +1631224 5733936 1630664 5734072 1630608 5735424 1631240 5734008 +1630608 5735424 1630704 5735512 1631240 5734008 1630664 5734072 +1631224 5733936 1630664 5734072 1631240 5734008 1760125 5760125 +1631224 5733936 1630720 5734000 1630664 5734072 1631240 5734008 +1631224 5733936 1630720 5734000 1631240 5734008 1760125 5760125 +1631224 5733936 1630736 5733944 1630720 5734000 1631240 5734008 +1631224 5733936 1630736 5733944 1631240 5734008 1760125 5760125 +1630664 5734072 1630608 5735424 1631240 5734008 1630720 5734000 +1631224 5733936 1631176 5733840 1630736 5733944 1631240 5734008 +1630720 5734000 1630664 5734072 1631240 5734008 1630736 5733944 +1630664 5734072 1630568 5734144 1630608 5735424 1631240 5734008 +1630608 5735424 1630704 5735512 1631240 5734008 1630568 5734144 +1630664 5734072 1630568 5734144 1631240 5734008 1630720 5734000 +1630568 5734144 1630440 5735312 1630608 5735424 1631240 5734008 +1631224 5733936 1631240 5734008 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1631240 5734008 +1631224 5733936 1631240 5734008 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1631240 5734008 +1631224 5733936 1631240 5734008 1743888 5687504 1629944 5726576 +1631224 5733936 1630736 5733944 1631240 5734008 1743888 5687504 +1631240 5734008 1631312 5744824 1760125 5760125 1751256 5699792 +1631240 5734008 1760125 5760125 1751256 5699792 1743888 5687504 +1631240 5734008 1631216 5734056 1630608 5735424 1630704 5735512 +1631240 5734008 1631216 5734056 1630704 5735512 1630704 5735568 +1631216 5734056 1630608 5735424 1630704 5735512 1630704 5735568 +1631240 5734008 1631216 5734056 1630704 5735568 1631312 5744824 +1631240 5734008 1630568 5734144 1631216 5734056 1630704 5735568 +1631216 5734056 1630568 5734144 1630608 5735424 1630704 5735512 +1630704 5735512 1630688 5735528 1630704 5735568 1631216 5734056 +1630568 5734144 1631216 5734056 1631240 5734008 1630664 5734072 +1631216 5734056 1630704 5735568 1631240 5734008 1630664 5734072 +1630568 5734144 1630608 5735424 1631216 5734056 1630664 5734072 +1631240 5734008 1630720 5734000 1630664 5734072 1631216 5734056 +1631240 5734008 1630720 5734000 1631216 5734056 1630704 5735568 +1631240 5734008 1630736 5733944 1630720 5734000 1631216 5734056 +1631240 5734008 1630736 5733944 1631216 5734056 1630704 5735568 +1631240 5734008 1631224 5733936 1630736 5733944 1631216 5734056 +1631240 5734008 1631224 5733936 1631216 5734056 1630704 5735568 +1630720 5734000 1630664 5734072 1631216 5734056 1630736 5733944 +1631224 5733936 1631176 5733840 1630736 5733944 1631216 5734056 +1631176 5733840 1631104 5733736 1630736 5733944 1631216 5734056 +1631224 5733936 1631176 5733840 1631216 5734056 1631240 5734008 +1630736 5733944 1630720 5734000 1631216 5734056 1631176 5733840 +1630664 5734072 1630568 5734144 1631216 5734056 1630720 5734000 +1630608 5735424 1631216 5734056 1630568 5734144 1630440 5735312 +1631216 5734056 1631160 5734184 1630704 5735512 1630704 5735568 +1631216 5734056 1631160 5734184 1630704 5735568 1631240 5734008 +1631160 5734184 1630704 5735512 1630704 5735568 1631240 5734008 +1630704 5735568 1631312 5744824 1631240 5734008 1631160 5734184 +1630608 5735424 1631160 5734184 1631216 5734056 1630568 5734144 +1630608 5735424 1630704 5735512 1631160 5734184 1630568 5734144 +1631216 5734056 1630568 5734144 1631160 5734184 1631240 5734008 +1631216 5734056 1630664 5734072 1630568 5734144 1631160 5734184 +1630568 5734144 1630608 5735424 1631160 5734184 1630664 5734072 +1631216 5734056 1630664 5734072 1631160 5734184 1631240 5734008 +1631160 5734184 1630608 5735424 1630704 5735512 1630704 5735568 +1630704 5735512 1630688 5735528 1630704 5735568 1631160 5734184 +1631216 5734056 1630720 5734000 1630664 5734072 1631160 5734184 +1631216 5734056 1630720 5734000 1631160 5734184 1631240 5734008 +1630664 5734072 1630568 5734144 1631160 5734184 1630720 5734000 +1631216 5734056 1630736 5733944 1630720 5734000 1631160 5734184 +1631216 5734056 1630736 5733944 1631160 5734184 1631240 5734008 +1631216 5734056 1631176 5733840 1630736 5733944 1631160 5734184 +1630720 5734000 1630664 5734072 1631160 5734184 1630736 5733944 +1630608 5735424 1631160 5734184 1630568 5734144 1630440 5735312 +1630608 5735424 1630704 5735512 1631160 5734184 1630440 5735312 +1631160 5734184 1630664 5734072 1630568 5734144 1630440 5735312 +1630568 5734144 1630392 5734184 1630440 5735312 1631160 5734184 +1630568 5734144 1631064 5734304 1631160 5734184 1630664 5734072 +1631064 5734304 1630440 5735312 1631160 5734184 1630664 5734072 +1630568 5734144 1630440 5735312 1631064 5734304 1630664 5734072 +1631160 5734184 1630720 5734000 1630664 5734072 1631064 5734304 +1631160 5734184 1630720 5734000 1631064 5734304 1630440 5735312 +1630664 5734072 1630568 5734144 1631064 5734304 1630720 5734000 +1631160 5734184 1630736 5733944 1630720 5734000 1631064 5734304 +1631160 5734184 1631064 5734304 1630440 5735312 1630608 5735424 +1631160 5734184 1630720 5734000 1631064 5734304 1630608 5735424 +1631160 5734184 1631064 5734304 1630608 5735424 1630704 5735512 +1631160 5734184 1630720 5734000 1631064 5734304 1630704 5735512 +1631064 5734304 1630568 5734144 1630440 5735312 1630608 5735424 +1631160 5734184 1631064 5734304 1630704 5735512 1630704 5735568 +1631064 5734304 1630440 5735312 1630608 5735424 1630704 5735512 +1630440 5735312 1631064 5734304 1630568 5734144 1630392 5734184 +1631064 5734304 1630880 5734424 1630440 5735312 1630608 5735424 +1631064 5734304 1630568 5734144 1630880 5734424 1630608 5735424 +1630568 5734144 1630880 5734424 1631064 5734304 1630664 5734072 +1630880 5734424 1630608 5735424 1631064 5734304 1630664 5734072 +1630880 5734424 1630568 5734144 1630440 5735312 1630608 5735424 +1630568 5734144 1630440 5735312 1630880 5734424 1630664 5734072 +1631064 5734304 1630720 5734000 1630664 5734072 1630880 5734424 +1631064 5734304 1630880 5734424 1630608 5735424 1630704 5735512 +1631064 5734304 1630880 5734424 1630704 5735512 1631160 5734184 +1630880 5734424 1630440 5735312 1630608 5735424 1630704 5735512 +1631064 5734304 1630664 5734072 1630880 5734424 1630704 5735512 +1630440 5735312 1630880 5734424 1630568 5734144 1630392 5734184 +1630440 5735312 1630608 5735424 1630880 5734424 1630392 5734184 +1630880 5734424 1630664 5734072 1630568 5734144 1630392 5734184 +1630440 5735312 1630880 5734424 1630392 5734184 1630120 5735160 +1630440 5735312 1630608 5735424 1630880 5734424 1630120 5735160 +1630392 5734184 1630224 5734232 1630120 5735160 1630880 5734424 +1630224 5734232 1630048 5734248 1630120 5735160 1630880 5734424 +1630120 5735160 1630440 5735312 1630880 5734424 1630224 5734232 +1630880 5734424 1630568 5734144 1630392 5734184 1630224 5734232 +1630120 5735160 1630808 5734464 1630224 5734232 1630048 5734248 +1630880 5734424 1630808 5734464 1630120 5735160 1630440 5735312 +1630880 5734424 1630808 5734464 1630440 5735312 1630608 5735424 +1630880 5734424 1630808 5734464 1630608 5735424 1630704 5735512 +1630808 5734464 1630440 5735312 1630608 5735424 1630704 5735512 +1630880 5734424 1630224 5734232 1630808 5734464 1630704 5735512 +1630808 5734464 1630224 5734232 1630120 5735160 1630440 5735312 +1630808 5734464 1630120 5735160 1630440 5735312 1630608 5735424 +1630224 5734232 1630808 5734464 1630880 5734424 1630392 5734184 +1630808 5734464 1630704 5735512 1630880 5734424 1630392 5734184 +1630224 5734232 1630120 5735160 1630808 5734464 1630392 5734184 +1630880 5734424 1630808 5734464 1630704 5735512 1631064 5734304 +1630880 5734424 1630568 5734144 1630392 5734184 1630808 5734464 +1630880 5734424 1630568 5734144 1630808 5734464 1630704 5735512 +1630880 5734424 1630664 5734072 1630568 5734144 1630808 5734464 +1630880 5734424 1631064 5734304 1630664 5734072 1630808 5734464 +1630880 5734424 1630664 5734072 1630808 5734464 1630704 5735512 +1630392 5734184 1630224 5734232 1630808 5734464 1630568 5734144 +1630568 5734144 1630392 5734184 1630808 5734464 1630664 5734072 +1630808 5734464 1630768 5734504 1630120 5735160 1630440 5735312 +1630808 5734464 1630224 5734232 1630768 5734504 1630440 5735312 +1630224 5734232 1630768 5734504 1630808 5734464 1630392 5734184 +1630768 5734504 1630440 5735312 1630808 5734464 1630392 5734184 +1630768 5734504 1630224 5734232 1630120 5735160 1630440 5735312 +1630224 5734232 1630120 5735160 1630768 5734504 1630392 5734184 +1630120 5735160 1630768 5734504 1630224 5734232 1630048 5734248 +1630808 5734464 1630768 5734504 1630440 5735312 1630608 5735424 +1630808 5734464 1630768 5734504 1630608 5735424 1630704 5735512 +1630808 5734464 1630768 5734504 1630704 5735512 1630880 5734424 +1630768 5734504 1630608 5735424 1630704 5735512 1630880 5734424 +1630768 5734504 1630120 5735160 1630440 5735312 1630608 5735424 +1630808 5734464 1630392 5734184 1630768 5734504 1630880 5734424 +1630768 5734504 1630440 5735312 1630608 5735424 1630704 5735512 +1630808 5734464 1630568 5734144 1630392 5734184 1630768 5734504 +1630808 5734464 1630568 5734144 1630768 5734504 1630880 5734424 +1630392 5734184 1630224 5734232 1630768 5734504 1630568 5734144 +1630704 5735512 1631064 5734304 1630880 5734424 1630768 5734504 +1630808 5734464 1630664 5734072 1630568 5734144 1630768 5734504 +1630768 5734504 1630624 5734576 1630120 5735160 1630440 5735312 +1630768 5734504 1630624 5734576 1630440 5735312 1630608 5735424 +1630624 5734576 1630120 5735160 1630440 5735312 1630608 5735424 +1630768 5734504 1630224 5734232 1630624 5734576 1630608 5735424 +1630224 5734232 1630624 5734576 1630768 5734504 1630392 5734184 +1630768 5734504 1630568 5734144 1630392 5734184 1630624 5734576 +1630624 5734576 1630608 5735424 1630768 5734504 1630568 5734144 +1630392 5734184 1630224 5734232 1630624 5734576 1630568 5734144 +1630624 5734576 1630224 5734232 1630120 5735160 1630440 5735312 +1630224 5734232 1630120 5735160 1630624 5734576 1630392 5734184 +1630120 5735160 1630624 5734576 1630224 5734232 1630048 5734248 +1630120 5735160 1630440 5735312 1630624 5734576 1630048 5734248 +1630624 5734576 1630392 5734184 1630224 5734232 1630048 5734248 +1630120 5735160 1630624 5734576 1630048 5734248 1629696 5735040 +1630768 5734504 1630624 5734576 1630608 5735424 1630704 5735512 +1630768 5734504 1630808 5734464 1630568 5734144 1630624 5734576 +1630624 5734576 1630456 5734584 1630120 5735160 1630440 5735312 +1630624 5734576 1630456 5734584 1630440 5735312 1630608 5735424 +1630624 5734576 1630048 5734248 1630456 5734584 1630440 5735312 +1630456 5734584 1630048 5734248 1630120 5735160 1630440 5735312 +1630120 5735160 1630456 5734584 1630048 5734248 1629696 5735040 +1630120 5735160 1630440 5735312 1630456 5734584 1629696 5735040 +1630456 5734584 1630624 5734576 1630048 5734248 1629696 5735040 +1630048 5734248 1629920 5734216 1629696 5735040 1630456 5734584 +1630048 5734248 1630456 5734584 1630624 5734576 1630224 5734232 +1630456 5734584 1630440 5735312 1630624 5734576 1630224 5734232 +1630624 5734576 1630392 5734184 1630224 5734232 1630456 5734584 +1630624 5734576 1630568 5734144 1630392 5734184 1630456 5734584 +1630624 5734576 1630768 5734504 1630568 5734144 1630456 5734584 +1630624 5734576 1630568 5734144 1630456 5734584 1630440 5735312 +1630392 5734184 1630224 5734232 1630456 5734584 1630568 5734144 +1630048 5734248 1629696 5735040 1630456 5734584 1630224 5734232 +1630224 5734232 1630048 5734248 1630456 5734584 1630392 5734184 +1630048 5734248 1630430 5734574 1630456 5734584 1630224 5734232 +1630430 5734574 1629696 5735040 1630456 5734584 1630224 5734232 +1630048 5734248 1629696 5735040 1630430 5734574 1630224 5734232 +1630456 5734584 1630430 5734574 1629696 5735040 1630120 5735160 +1630456 5734584 1630430 5734574 1630120 5735160 1630440 5735312 +1630456 5734584 1630224 5734232 1630430 5734574 1630120 5735160 +1630430 5734574 1630048 5734248 1629696 5735040 1630120 5735160 +1629696 5735040 1630430 5734574 1630048 5734248 1629920 5734216 +1630456 5734584 1630392 5734184 1630224 5734232 1630430 5734574 +1630456 5734584 1630568 5734144 1630392 5734184 1630430 5734574 +1630456 5734584 1630392 5734184 1630430 5734574 1630120 5735160 +1630224 5734232 1630048 5734248 1630430 5734574 1630392 5734184 +1629168 5734864 1629712 5734288 1629760 5734112 1629224 5733944 +1629760 5734112 1629664 5734016 1629224 5733944 1629712 5734288 +1629224 5733944 1629168 5734864 1629712 5734288 1629664 5734016 +1629168 5734864 1629696 5735040 1629712 5734288 1629224 5733944 +1629712 5734288 1629696 5735040 1629760 5734112 1629664 5734016 +1629760 5734112 1629712 5734288 1629696 5735040 1629920 5734216 +1629712 5734288 1629168 5734864 1629696 5735040 1629920 5734216 +1629760 5734112 1629664 5734016 1629712 5734288 1629920 5734216 +1629696 5735040 1630048 5734248 1629920 5734216 1629712 5734288 +1629696 5735040 1630048 5734248 1629712 5734288 1629168 5734864 +1629696 5735040 1630430 5734574 1630048 5734248 1629712 5734288 +1629920 5734216 1629760 5734112 1629712 5734288 1630048 5734248 +1629664 5734016 1629432 5733824 1629224 5733944 1629712 5734288 +1629168 5734864 1629712 5734288 1629224 5733944 1628944 5734832 +1629696 5735040 1630120 5735160 1630430 5734574 1629712 5734288 +1629696 5735040 1630430 5734574 1629712 5734288 1629168 5734864 +1630430 5734574 1630224 5734232 1630048 5734248 1629712 5734288 +1629712 5734288 1630430 5734574 1630048 5734248 1629920 5734216 +1629224 5733944 1629560 5734232 1629712 5734288 1629664 5734016 +1629712 5734288 1629760 5734112 1629664 5734016 1629560 5734232 +1629664 5734016 1629224 5733944 1629560 5734232 1629760 5734112 +1629712 5734288 1629560 5734232 1629168 5734864 1629696 5735040 +1629560 5734232 1629168 5734864 1629712 5734288 1629760 5734112 +1629712 5734288 1629920 5734216 1629760 5734112 1629560 5734232 +1629224 5733944 1629168 5734864 1629560 5734232 1629664 5734016 +1629224 5733944 1629560 5734232 1629664 5734016 1629432 5733824 +1629560 5734232 1629760 5734112 1629664 5734016 1629432 5733824 +1629224 5733944 1629168 5734864 1629560 5734232 1629432 5733824 +1629224 5733944 1629560 5734232 1629432 5733824 1629064 5733856 +1629168 5734864 1629560 5734232 1629224 5733944 1628944 5734832 +1629224 5733944 1629480 5734176 1629560 5734232 1629432 5733824 +1629480 5734176 1629168 5734864 1629560 5734232 1629432 5733824 +1629560 5734232 1629480 5734176 1629168 5734864 1629712 5734288 +1629224 5733944 1629480 5734176 1629432 5733824 1629064 5733856 +1629224 5733944 1629168 5734864 1629480 5734176 1629432 5733824 +1629560 5734232 1629664 5734016 1629432 5733824 1629480 5734176 +1629560 5734232 1629760 5734112 1629664 5734016 1629480 5734176 +1629560 5734232 1629664 5734016 1629480 5734176 1629168 5734864 +1629432 5733824 1629224 5733944 1629480 5734176 1629664 5734016 +1629168 5734864 1629480 5734176 1629224 5733944 1628944 5734832 +1629168 5734864 1629560 5734232 1629480 5734176 1628944 5734832 +1629480 5734176 1629432 5733824 1629224 5733944 1628944 5734832 +1629224 5733944 1628648 5734680 1628944 5734832 1629480 5734176 +1760125 5760125 1631936 5739320 1631312 5744824 1631920 5751080 +1631312 5744824 1631312 5744920 1631920 5751080 1631936 5739320 +1631312 5744920 1631896 5750984 1631920 5751080 1631936 5739320 +1631920 5751080 1760125 5760125 1631936 5739320 1631312 5744920 +1631240 5734008 1631936 5739320 1760125 5760125 1751256 5699792 +1760125 5760125 1751376 5699848 1751256 5699792 1631936 5739320 +1631312 5744824 1631936 5739320 1631240 5734008 1630704 5735568 +1631240 5734008 1631160 5734184 1630704 5735568 1631936 5739320 +1631160 5734184 1630704 5735512 1630704 5735568 1631936 5739320 +1631240 5734008 1631216 5734056 1631160 5734184 1631936 5739320 +1630704 5735568 1631312 5744824 1631936 5739320 1631160 5734184 +1760125 5760125 1631936 5739320 1631920 5751080 1631896 5751280 +1631240 5734008 1631160 5734184 1631936 5739320 1751256 5699792 +1760125 5760125 1751256 5699792 1631936 5739320 1631920 5751080 +1631936 5739320 1630704 5735568 1631312 5744824 1631312 5744920 +1631312 5744824 1631936 5739320 1630704 5735568 1630952 5743928 +1631936 5739320 1631160 5734184 1630704 5735568 1630952 5743928 +1631312 5744824 1631312 5744920 1631936 5739320 1630952 5743928 +1631312 5744824 1631936 5739320 1630952 5743928 1630992 5744048 +1631312 5744824 1631312 5744920 1631936 5739320 1630992 5744048 +1631312 5744824 1631936 5739320 1630992 5744048 1630976 5744216 +1630704 5735568 1630672 5735640 1630952 5743928 1631936 5739320 +1630704 5735568 1630672 5735640 1631936 5739320 1631160 5734184 +1631936 5739320 1630672 5735640 1630952 5743928 1630992 5744048 +1630672 5735640 1630864 5743768 1630952 5743928 1631936 5739320 +1630672 5735640 1630864 5743768 1631936 5739320 1630704 5735568 +1630952 5743928 1630992 5744048 1631936 5739320 1630864 5743768 +1630672 5735640 1630632 5743536 1630864 5743768 1631936 5739320 +1630672 5735640 1630632 5743536 1631936 5739320 1630704 5735568 +1630864 5743768 1630952 5743928 1631936 5739320 1630632 5743536 +1630672 5735640 1630424 5743368 1630632 5743536 1631936 5739320 +1630672 5735640 1630424 5743368 1631936 5739320 1630704 5735568 +1630672 5735640 1629432 5736720 1630424 5743368 1631936 5739320 +1629432 5736720 1629784 5742896 1630424 5743368 1631936 5739320 +1629432 5736720 1628176 5739664 1629784 5742896 1631936 5739320 +1629784 5742896 1630312 5743312 1630424 5743368 1631936 5739320 +1629432 5736720 1628160 5739568 1628176 5739664 1631936 5739320 +1628176 5739664 1629784 5742896 1631936 5739320 1628160 5739568 +1629784 5742896 1630424 5743368 1631936 5739320 1628176 5739664 +1630672 5735640 1629432 5736720 1631936 5739320 1630704 5735568 +1629432 5736720 1628160 5739568 1631936 5739320 1630672 5735640 +1630672 5735640 1630480 5735720 1629432 5736720 1631936 5739320 +1630672 5735640 1630480 5735720 1631936 5739320 1630704 5735568 +1630480 5735720 1629968 5735816 1629432 5736720 1631936 5739320 +1629432 5736720 1628160 5739568 1631936 5739320 1630480 5735720 +1630632 5743536 1630864 5743768 1631936 5739320 1630424 5743368 +1630424 5743368 1630632 5743536 1631936 5739320 1629784 5742896 +1628176 5739664 1629688 5742824 1629784 5742896 1631936 5739320 +1628176 5739664 1629688 5742824 1631936 5739320 1628160 5739568 +1629784 5742896 1630424 5743368 1631936 5739320 1629688 5742824 +1628176 5739664 1629640 5742832 1629688 5742824 1631936 5739320 +1629432 5736720 1629344 5736744 1628160 5739568 1631936 5739320 +1631240 5734008 1631936 5739320 1751256 5699792 1743888 5687504 +1751256 5699792 1632040 5739168 1631936 5739320 1760125 5760125 +1751256 5699792 1632040 5739168 1760125 5760125 1751376 5699848 +1631936 5739320 1632040 5739168 1631240 5734008 1631160 5734184 +1631240 5734008 1631216 5734056 1631160 5734184 1632040 5739168 +1631936 5739320 1632040 5739168 1631160 5734184 1630704 5735568 +1631160 5734184 1630704 5735512 1630704 5735568 1632040 5739168 +1631936 5739320 1632040 5739168 1630704 5735568 1630672 5735640 +1632040 5739168 1631160 5734184 1630704 5735568 1630672 5735640 +1632040 5739168 1631240 5734008 1631160 5734184 1630704 5735568 +1631936 5739320 1631920 5751080 1760125 5760125 1632040 5739168 +1631936 5739320 1631312 5744920 1631920 5751080 1632040 5739168 +1631312 5744920 1631896 5750984 1631920 5751080 1632040 5739168 +1631936 5739320 1631312 5744824 1631312 5744920 1632040 5739168 +1631312 5744920 1631920 5751080 1632040 5739168 1631312 5744824 +1760125 5760125 1751256 5699792 1632040 5739168 1631920 5751080 +1631920 5751080 1631896 5751280 1760125 5760125 1632040 5739168 +1631920 5751080 1760125 5760125 1632040 5739168 1631312 5744920 +1632040 5739168 1630672 5735640 1631936 5739320 1631312 5744824 +1631936 5739320 1630992 5744048 1631312 5744824 1632040 5739168 +1632040 5739168 1751256 5699792 1631240 5734008 1631160 5734184 +1751256 5699792 1631240 5734008 1632040 5739168 1760125 5760125 +1631936 5739320 1632040 5739168 1630672 5735640 1630480 5735720 +1632040 5739168 1630704 5735568 1630672 5735640 1630480 5735720 +1631936 5739320 1631312 5744824 1632040 5739168 1630480 5735720 +1631936 5739320 1632040 5739168 1630480 5735720 1629432 5736720 +1631936 5739320 1631312 5744824 1632040 5739168 1629432 5736720 +1632040 5739168 1630672 5735640 1630480 5735720 1629432 5736720 +1630480 5735720 1629968 5735816 1629432 5736720 1632040 5739168 +1631936 5739320 1632040 5739168 1629432 5736720 1628160 5739568 +1631240 5734008 1632040 5739168 1751256 5699792 1743888 5687504 +1751256 5699792 1632160 5739160 1760125 5760125 1751376 5699848 +1760125 5760125 1632160 5739160 1632040 5739168 1631920 5751080 +1760125 5760125 1751256 5699792 1632160 5739160 1631920 5751080 +1760125 5760125 1632160 5739160 1631920 5751080 1631896 5751280 +1632040 5739168 1631312 5744920 1631920 5751080 1632160 5739160 +1631312 5744920 1631896 5750984 1631920 5751080 1632160 5739160 +1632040 5739168 1631312 5744824 1631312 5744920 1632160 5739160 +1632040 5739168 1631936 5739320 1631312 5744824 1632160 5739160 +1631312 5744824 1631312 5744920 1632160 5739160 1631936 5739320 +1631920 5751080 1760125 5760125 1632160 5739160 1631312 5744920 +1631312 5744920 1631920 5751080 1632160 5739160 1631312 5744824 +1631936 5739320 1630992 5744048 1631312 5744824 1632160 5739160 +1631312 5744824 1631312 5744920 1632160 5739160 1630992 5744048 +1631936 5739320 1630992 5744048 1632160 5739160 1632040 5739168 +1632160 5739160 1751256 5699792 1632040 5739168 1631936 5739320 +1632040 5739168 1632160 5739160 1751256 5699792 1631240 5734008 +1632160 5739160 1760125 5760125 1751256 5699792 1631240 5734008 +1632040 5739168 1632160 5739160 1631240 5734008 1631160 5734184 +1631240 5734008 1631216 5734056 1631160 5734184 1632160 5739160 +1632040 5739168 1632160 5739160 1631160 5734184 1630704 5735568 +1631160 5734184 1630704 5735512 1630704 5735568 1632160 5739160 +1632040 5739168 1632160 5739160 1630704 5735568 1630672 5735640 +1632040 5739168 1632160 5739160 1630672 5735640 1630480 5735720 +1632160 5739160 1631160 5734184 1630704 5735568 1630672 5735640 +1632160 5739160 1631240 5734008 1631160 5734184 1630704 5735568 +1632040 5739168 1631936 5739320 1632160 5739160 1630672 5735640 +1632160 5739160 1751256 5699792 1631240 5734008 1631160 5734184 +1631936 5739320 1630952 5743928 1630992 5744048 1632160 5739160 +1631936 5739320 1630952 5743928 1632160 5739160 1632040 5739168 +1630992 5744048 1631312 5744824 1632160 5739160 1630952 5743928 +1630992 5744048 1630976 5744216 1631312 5744824 1632160 5739160 +1631936 5739320 1630864 5743768 1630952 5743928 1632160 5739160 +1751256 5699792 1743888 5687504 1631240 5734008 1632160 5739160 +1751256 5699792 1743888 5687504 1632160 5739160 1760125 5760125 +1751256 5699792 1743976 5687584 1743888 5687504 1632160 5739160 +1743888 5687504 1631224 5733936 1631240 5734008 1632160 5739160 +1631240 5734008 1631160 5734184 1632160 5739160 1743888 5687504 +1632160 5739160 1632320 5739232 1760125 5760125 1751256 5699792 +1632160 5739160 1632320 5739232 1751256 5699792 1743888 5687504 +1632160 5739160 1631920 5751080 1632320 5739232 1743888 5687504 +1632320 5739232 1760125 5760125 1751256 5699792 1743888 5687504 +1751256 5699792 1743976 5687584 1743888 5687504 1632320 5739232 +1760125 5760125 1751376 5699848 1751256 5699792 1632320 5739232 +1631920 5751080 1632320 5739232 1632160 5739160 1631312 5744920 +1632320 5739232 1743888 5687504 1632160 5739160 1631312 5744920 +1631920 5751080 1632320 5739232 1631312 5744920 1631896 5750984 +1760125 5760125 1632320 5739232 1631920 5751080 1631896 5751280 +1632160 5739160 1631312 5744824 1631312 5744920 1632320 5739232 +1632160 5739160 1631312 5744824 1632320 5739232 1743888 5687504 +1632160 5739160 1630992 5744048 1631312 5744824 1632320 5739232 +1632160 5739160 1630992 5744048 1632320 5739232 1743888 5687504 +1631312 5744920 1631920 5751080 1632320 5739232 1631312 5744824 +1631312 5744824 1631312 5744920 1632320 5739232 1630992 5744048 +1632160 5739160 1630952 5743928 1630992 5744048 1632320 5739232 +1632160 5739160 1630952 5743928 1632320 5739232 1743888 5687504 +1630992 5744048 1631312 5744824 1632320 5739232 1630952 5743928 +1632320 5739232 1631920 5751080 1760125 5760125 1751256 5699792 +1631920 5751080 1760125 5760125 1632320 5739232 1631312 5744920 +1632160 5739160 1631936 5739320 1630952 5743928 1632320 5739232 +1632160 5739160 1631936 5739320 1632320 5739232 1743888 5687504 +1632160 5739160 1632040 5739168 1631936 5739320 1632320 5739232 +1630952 5743928 1630992 5744048 1632320 5739232 1631936 5739320 +1630992 5744048 1630976 5744216 1631312 5744824 1632320 5739232 +1631936 5739320 1630864 5743768 1630952 5743928 1632320 5739232 +1630952 5743928 1630992 5744048 1632320 5739232 1630864 5743768 +1631936 5739320 1630864 5743768 1632320 5739232 1632160 5739160 +1631936 5739320 1630632 5743536 1630864 5743768 1632320 5739232 +1632160 5739160 1632320 5739232 1743888 5687504 1631240 5734008 +1632320 5739232 1751256 5699792 1743888 5687504 1631240 5734008 +1632160 5739160 1631936 5739320 1632320 5739232 1631240 5734008 +1743888 5687504 1631224 5733936 1631240 5734008 1632320 5739232 +1632160 5739160 1632320 5739232 1631240 5734008 1631160 5734184 +1632160 5739160 1631936 5739320 1632320 5739232 1631160 5734184 +1631240 5734008 1631216 5734056 1631160 5734184 1632320 5739232 +1632160 5739160 1632320 5739232 1631160 5734184 1630704 5735568 +1632160 5739160 1631936 5739320 1632320 5739232 1630704 5735568 +1631160 5734184 1630704 5735512 1630704 5735568 1632320 5739232 +1632160 5739160 1632320 5739232 1630704 5735568 1630672 5735640 +1632320 5739232 1631240 5734008 1631160 5734184 1630704 5735568 +1632320 5739232 1743888 5687504 1631240 5734008 1631160 5734184 +1760125 5760125 1632432 5739272 1631920 5751080 1631896 5751280 +1632320 5739232 1632432 5739272 1760125 5760125 1751256 5699792 +1632320 5739232 1632432 5739272 1751256 5699792 1743888 5687504 +1632320 5739232 1632432 5739272 1743888 5687504 1631240 5734008 +1632432 5739272 1751256 5699792 1743888 5687504 1631240 5734008 +1751256 5699792 1743976 5687584 1743888 5687504 1632432 5739272 +1760125 5760125 1751376 5699848 1751256 5699792 1632432 5739272 +1743888 5687504 1631224 5733936 1631240 5734008 1632432 5739272 +1632432 5739272 1760125 5760125 1751256 5699792 1743888 5687504 +1632320 5739232 1631920 5751080 1632432 5739272 1631240 5734008 +1631920 5751080 1632432 5739272 1632320 5739232 1631312 5744920 +1631920 5751080 1632432 5739272 1631312 5744920 1631896 5750984 +1632320 5739232 1631312 5744824 1631312 5744920 1632432 5739272 +1632320 5739232 1630992 5744048 1631312 5744824 1632432 5739272 +1632320 5739232 1630952 5743928 1630992 5744048 1632432 5739272 +1631312 5744824 1631312 5744920 1632432 5739272 1630992 5744048 +1630992 5744048 1631312 5744824 1632432 5739272 1630952 5743928 +1632320 5739232 1630864 5743768 1630952 5743928 1632432 5739272 +1630952 5743928 1630992 5744048 1632432 5739272 1630864 5743768 +1632432 5739272 1631240 5734008 1632320 5739232 1630864 5743768 +1632432 5739272 1631312 5744824 1631312 5744920 1631896 5750984 +1632432 5739272 1631920 5751080 1760125 5760125 1751256 5699792 +1631920 5751080 1760125 5760125 1632432 5739272 1631896 5750984 +1630992 5744048 1630976 5744216 1631312 5744824 1632432 5739272 +1632320 5739232 1631936 5739320 1630864 5743768 1632432 5739272 +1630864 5743768 1630952 5743928 1632432 5739272 1631936 5739320 +1632320 5739232 1631936 5739320 1632432 5739272 1631240 5734008 +1632320 5739232 1632160 5739160 1631936 5739320 1632432 5739272 +1631936 5739320 1630632 5743536 1630864 5743768 1632432 5739272 +1630864 5743768 1630952 5743928 1632432 5739272 1630632 5743536 +1631936 5739320 1630632 5743536 1632432 5739272 1632320 5739232 +1631936 5739320 1630424 5743368 1630632 5743536 1632432 5739272 +1631312 5744920 1631096 5748624 1631896 5750984 1632432 5739272 +1632320 5739232 1632432 5739272 1631240 5734008 1631160 5734184 +1632432 5739272 1743888 5687504 1631240 5734008 1631160 5734184 +1631240 5734008 1631216 5734056 1631160 5734184 1632432 5739272 +1632320 5739232 1632432 5739272 1631160 5734184 1630704 5735568 +1631160 5734184 1630704 5735512 1630704 5735568 1632432 5739272 +1632320 5739232 1632432 5739272 1630704 5735568 1632160 5739160 +1630704 5735568 1630672 5735640 1632160 5739160 1632432 5739272 +1632432 5739272 1631160 5734184 1630704 5735568 1632160 5739160 +1632320 5739232 1631936 5739320 1632432 5739272 1632160 5739160 +1632432 5739272 1631240 5734008 1631160 5734184 1630704 5735568 +1751256 5699792 1632528 5739272 1760125 5760125 1751376 5699848 +1632432 5739272 1632528 5739272 1751256 5699792 1743888 5687504 +1632432 5739272 1632528 5739272 1743888 5687504 1631240 5734008 +1632432 5739272 1632528 5739272 1631240 5734008 1631160 5734184 +1632528 5739272 1743888 5687504 1631240 5734008 1631160 5734184 +1751256 5699792 1743976 5687584 1743888 5687504 1632528 5739272 +1631240 5734008 1631216 5734056 1631160 5734184 1632528 5739272 +1743888 5687504 1631224 5733936 1631240 5734008 1632528 5739272 +1632528 5739272 1751256 5699792 1743888 5687504 1631240 5734008 +1760125 5760125 1632528 5739272 1632432 5739272 1631920 5751080 +1760125 5760125 1632528 5739272 1631920 5751080 1631896 5751280 +1632432 5739272 1631920 5751080 1632528 5739272 1631160 5734184 +1632432 5739272 1631896 5750984 1631920 5751080 1632528 5739272 +1632432 5739272 1631312 5744920 1631896 5750984 1632528 5739272 +1632432 5739272 1631312 5744824 1631312 5744920 1632528 5739272 +1631312 5744920 1631896 5750984 1632528 5739272 1631312 5744824 +1632432 5739272 1630992 5744048 1631312 5744824 1632528 5739272 +1632432 5739272 1630952 5743928 1630992 5744048 1632528 5739272 +1632432 5739272 1630864 5743768 1630952 5743928 1632528 5739272 +1630992 5744048 1631312 5744824 1632528 5739272 1630952 5743928 +1630952 5743928 1630992 5744048 1632528 5739272 1630864 5743768 +1632432 5739272 1630632 5743536 1630864 5743768 1632528 5739272 +1630864 5743768 1630952 5743928 1632528 5739272 1630632 5743536 +1631312 5744824 1631312 5744920 1632528 5739272 1630992 5744048 +1631920 5751080 1760125 5760125 1632528 5739272 1631896 5750984 +1632432 5739272 1630632 5743536 1632528 5739272 1631160 5734184 +1631896 5750984 1631920 5751080 1632528 5739272 1631312 5744920 +1632528 5739272 1760125 5760125 1751256 5699792 1743888 5687504 +1760125 5760125 1751256 5699792 1632528 5739272 1631920 5751080 +1630992 5744048 1630976 5744216 1631312 5744824 1632528 5739272 +1632432 5739272 1631936 5739320 1630632 5743536 1632528 5739272 +1631312 5744920 1631096 5748624 1631896 5750984 1632528 5739272 +1632432 5739272 1632528 5739272 1631160 5734184 1630704 5735568 +1632528 5739272 1631240 5734008 1631160 5734184 1630704 5735568 +1631160 5734184 1630704 5735512 1630704 5735568 1632528 5739272 +1632432 5739272 1632528 5739272 1630704 5735568 1632160 5739160 +1630704 5735568 1630672 5735640 1632160 5739160 1632528 5739272 +1632432 5739272 1632528 5739272 1632160 5739160 1632320 5739232 +1632528 5739272 1630704 5735568 1632160 5739160 1632320 5739232 +1632432 5739272 1630632 5743536 1632528 5739272 1632320 5739232 +1632528 5739272 1631160 5734184 1630704 5735568 1632160 5739160 +1632528 5739272 1632616 5739192 1631240 5734008 1631160 5734184 +1632528 5739272 1632616 5739192 1631160 5734184 1630704 5735568 +1632616 5739192 1631240 5734008 1631160 5734184 1630704 5735568 +1631160 5734184 1630704 5735512 1630704 5735568 1632616 5739192 +1631240 5734008 1631216 5734056 1631160 5734184 1632616 5739192 +1631240 5734008 1632616 5739192 1743888 5687504 1631224 5733936 +1743888 5687504 1632616 5739192 1632528 5739272 1751256 5699792 +1743888 5687504 1632616 5739192 1751256 5699792 1743976 5687584 +1632528 5739272 1760125 5760125 1751256 5699792 1632616 5739192 +1760125 5760125 1751376 5699848 1751256 5699792 1632616 5739192 +1751256 5699792 1743888 5687504 1632616 5739192 1760125 5760125 +1632528 5739272 1760125 5760125 1632616 5739192 1630704 5735568 +1632528 5739272 1631920 5751080 1760125 5760125 1632616 5739192 +1631920 5751080 1631896 5751280 1760125 5760125 1632616 5739192 +1632528 5739272 1631896 5750984 1631920 5751080 1632616 5739192 +1632528 5739272 1631312 5744920 1631896 5750984 1632616 5739192 +1632528 5739272 1631312 5744824 1631312 5744920 1632616 5739192 +1632528 5739272 1630992 5744048 1631312 5744824 1632616 5739192 +1631896 5750984 1631920 5751080 1632616 5739192 1631312 5744920 +1631312 5744920 1631896 5750984 1632616 5739192 1631312 5744824 +1760125 5760125 1751256 5699792 1632616 5739192 1631920 5751080 +1632528 5739272 1631312 5744824 1632616 5739192 1630704 5735568 +1631920 5751080 1760125 5760125 1632616 5739192 1631896 5750984 +1632616 5739192 1743888 5687504 1631240 5734008 1631160 5734184 +1743888 5687504 1631240 5734008 1632616 5739192 1751256 5699792 +1631312 5744920 1631096 5748624 1631896 5750984 1632616 5739192 +1632528 5739272 1632616 5739192 1630704 5735568 1632160 5739160 +1632616 5739192 1631160 5734184 1630704 5735568 1632160 5739160 +1630704 5735568 1630672 5735640 1632160 5739160 1632616 5739192 +1630704 5735568 1630672 5735640 1632616 5739192 1631160 5734184 +1630672 5735640 1632040 5739168 1632160 5739160 1632616 5739192 +1632528 5739272 1632616 5739192 1632160 5739160 1632320 5739232 +1632528 5739272 1632616 5739192 1632320 5739232 1632432 5739272 +1632616 5739192 1632160 5739160 1632320 5739232 1632432 5739272 +1632528 5739272 1631312 5744824 1632616 5739192 1632432 5739272 +1632160 5739160 1632320 5739232 1632616 5739192 1630672 5735640 +1631240 5734008 1632696 5739008 1743888 5687504 1631224 5733936 +1743888 5687504 1629944 5726576 1631224 5733936 1632696 5739008 +1743888 5687504 1743800 5687320 1629944 5726576 1632696 5739008 +1629944 5726576 1629944 5726624 1631224 5733936 1632696 5739008 +1631224 5733936 1631240 5734008 1632696 5739008 1629944 5726576 +1632616 5739192 1632696 5739008 1631240 5734008 1631160 5734184 +1632616 5739192 1632696 5739008 1631160 5734184 1630704 5735568 +1632616 5739192 1632696 5739008 1630704 5735568 1630672 5735640 +1632696 5739008 1631160 5734184 1630704 5735568 1630672 5735640 +1631160 5734184 1630704 5735512 1630704 5735568 1632696 5739008 +1631240 5734008 1631216 5734056 1631160 5734184 1632696 5739008 +1632616 5739192 1632696 5739008 1630672 5735640 1632160 5739160 +1632696 5739008 1630704 5735568 1630672 5735640 1632160 5739160 +1630672 5735640 1632040 5739168 1632160 5739160 1632696 5739008 +1630672 5735640 1632040 5739168 1632696 5739008 1630704 5735568 +1630672 5735640 1630480 5735720 1632040 5739168 1632696 5739008 +1632160 5739160 1632616 5739192 1632696 5739008 1632040 5739168 +1632696 5739008 1631240 5734008 1631160 5734184 1630704 5735568 +1632616 5739192 1743888 5687504 1632696 5739008 1632160 5739160 +1743888 5687504 1632696 5739008 1632616 5739192 1751256 5699792 +1743888 5687504 1632696 5739008 1751256 5699792 1743976 5687584 +1632616 5739192 1760125 5760125 1751256 5699792 1632696 5739008 +1760125 5760125 1751376 5699848 1751256 5699792 1632696 5739008 +1632616 5739192 1631920 5751080 1760125 5760125 1632696 5739008 +1631920 5751080 1631896 5751280 1760125 5760125 1632696 5739008 +1760125 5760125 1751256 5699792 1632696 5739008 1631920 5751080 +1632616 5739192 1631896 5750984 1631920 5751080 1632696 5739008 +1632616 5739192 1631312 5744920 1631896 5750984 1632696 5739008 +1632616 5739192 1631312 5744824 1631312 5744920 1632696 5739008 +1631920 5751080 1760125 5760125 1632696 5739008 1631896 5750984 +1631896 5750984 1631920 5751080 1632696 5739008 1631312 5744920 +1632696 5739008 1632160 5739160 1632616 5739192 1631312 5744920 +1751256 5699792 1743888 5687504 1632696 5739008 1760125 5760125 +1632696 5739008 1751256 5699792 1743888 5687504 1629944 5726576 +1631240 5734008 1631160 5734184 1632696 5739008 1631224 5733936 +1631312 5744920 1631096 5748624 1631896 5750984 1632696 5739008 +1632616 5739192 1632696 5739008 1632160 5739160 1632320 5739232 +1632696 5739008 1632040 5739168 1632160 5739160 1632320 5739232 +1632616 5739192 1632696 5739008 1632320 5739232 1632432 5739272 +1632616 5739192 1631312 5744920 1632696 5739008 1632320 5739232 +1632696 5739008 1632544 5738712 1630704 5735568 1630672 5735640 +1632696 5739008 1632544 5738712 1630672 5735640 1632040 5739168 +1632544 5738712 1630704 5735568 1630672 5735640 1632040 5739168 +1630704 5735568 1632544 5738712 1631160 5734184 1630704 5735512 +1632696 5739008 1632544 5738712 1632040 5739168 1632160 5739160 +1632544 5738712 1630672 5735640 1632040 5739168 1632160 5739160 +1630672 5735640 1630480 5735720 1632040 5739168 1632544 5738712 +1632040 5739168 1632160 5739160 1632544 5738712 1630480 5735720 +1630672 5735640 1630480 5735720 1632544 5738712 1630704 5735568 +1632696 5739008 1632544 5738712 1632160 5739160 1632320 5739232 +1632544 5738712 1632040 5739168 1632160 5739160 1632320 5739232 +1631160 5734184 1632544 5738712 1632696 5739008 1631240 5734008 +1631160 5734184 1632544 5738712 1631240 5734008 1631216 5734056 +1632696 5739008 1631240 5734008 1632544 5738712 1632320 5739232 +1632544 5738712 1631160 5734184 1630704 5735568 1630672 5735640 +1631160 5734184 1630704 5735568 1632544 5738712 1631240 5734008 +1632696 5739008 1631224 5733936 1631240 5734008 1632544 5738712 +1630480 5735720 1629432 5736720 1632040 5739168 1632544 5738712 +1632040 5739168 1632160 5739160 1632544 5738712 1629432 5736720 +1630480 5735720 1629432 5736720 1632544 5738712 1630672 5735640 +1630480 5735720 1629968 5735816 1629432 5736720 1632544 5738712 +1629432 5736720 1631936 5739320 1632040 5739168 1632544 5738712 +1632696 5739008 1632544 5738712 1632320 5739232 1632616 5739192 +1630480 5735720 1632328 5738560 1632544 5738712 1630672 5735640 +1632544 5738712 1630704 5735568 1630672 5735640 1632328 5738560 +1630672 5735640 1630480 5735720 1632328 5738560 1630704 5735568 +1630480 5735720 1629432 5736720 1632328 5738560 1630672 5735640 +1632544 5738712 1631160 5734184 1630704 5735568 1632328 5738560 +1630704 5735568 1630672 5735640 1632328 5738560 1631160 5734184 +1631160 5734184 1630704 5735512 1630704 5735568 1632328 5738560 +1632328 5738560 1629432 5736720 1632544 5738712 1631160 5734184 +1632544 5738712 1631240 5734008 1631160 5734184 1632328 5738560 +1631240 5734008 1631216 5734056 1631160 5734184 1632328 5738560 +1632544 5738712 1632696 5739008 1631240 5734008 1632328 5738560 +1631160 5734184 1630704 5735568 1632328 5738560 1631240 5734008 +1632544 5738712 1631240 5734008 1632328 5738560 1629432 5736720 +1632544 5738712 1632328 5738560 1629432 5736720 1632040 5739168 +1632544 5738712 1632328 5738560 1632040 5739168 1632160 5739160 +1632544 5738712 1632328 5738560 1632160 5739160 1632320 5739232 +1632328 5738560 1630480 5735720 1629432 5736720 1632040 5739168 +1632544 5738712 1631240 5734008 1632328 5738560 1632160 5739160 +1632328 5738560 1629432 5736720 1632040 5739168 1632160 5739160 +1629432 5736720 1632328 5738560 1630480 5735720 1629968 5735816 +1629432 5736720 1631936 5739320 1632040 5739168 1632328 5738560 +1629432 5736720 1631912 5738592 1632328 5738560 1630480 5735720 +1631912 5738592 1632040 5739168 1632328 5738560 1630480 5735720 +1632328 5738560 1630672 5735640 1630480 5735720 1631912 5738592 +1632328 5738560 1630704 5735568 1630672 5735640 1631912 5738592 +1630480 5735720 1629432 5736720 1631912 5738592 1630672 5735640 +1632328 5738560 1630672 5735640 1631912 5738592 1632040 5739168 +1629432 5736720 1632040 5739168 1631912 5738592 1630480 5735720 +1632328 5738560 1631912 5738592 1632040 5739168 1632160 5739160 +1632328 5738560 1631912 5738592 1632160 5739160 1632544 5738712 +1632328 5738560 1630672 5735640 1631912 5738592 1632160 5739160 +1631912 5738592 1629432 5736720 1632040 5739168 1632160 5739160 +1629432 5736720 1631912 5738592 1630480 5735720 1629968 5735816 +1632040 5739168 1631912 5738592 1629432 5736720 1631936 5739320 +1632040 5739168 1632160 5739160 1631912 5738592 1631936 5739320 +1631912 5738592 1630480 5735720 1629432 5736720 1631936 5739320 +1629432 5736720 1628160 5739568 1631936 5739320 1631912 5738592 +1629432 5736720 1628160 5739568 1631912 5738592 1630480 5735720 +1628160 5739568 1628176 5739664 1631936 5739320 1631912 5738592 +1631936 5739320 1632040 5739168 1631912 5738592 1628160 5739568 +1629432 5736720 1629344 5736744 1628160 5739568 1631912 5738592 +1629432 5736720 1631504 5738552 1631912 5738592 1630480 5735720 +1631912 5738592 1630672 5735640 1630480 5735720 1631504 5738552 +1631912 5738592 1632328 5738560 1630672 5735640 1631504 5738552 +1631504 5738552 1628160 5739568 1631912 5738592 1630672 5735640 +1630480 5735720 1629432 5736720 1631504 5738552 1630672 5735640 +1629432 5736720 1628160 5739568 1631504 5738552 1630480 5735720 +1629432 5736720 1631504 5738552 1630480 5735720 1629968 5735816 +1631912 5738592 1631504 5738552 1628160 5739568 1631936 5739320 +1631912 5738592 1630672 5735640 1631504 5738552 1631936 5739320 +1631504 5738552 1629432 5736720 1628160 5739568 1631936 5739320 +1628160 5739568 1628176 5739664 1631936 5739320 1631504 5738552 +1628176 5739664 1629688 5742824 1631936 5739320 1631504 5738552 +1628160 5739568 1628176 5739664 1631504 5738552 1629432 5736720 +1631936 5739320 1631912 5738592 1631504 5738552 1628176 5739664 +1631912 5738592 1631504 5738552 1631936 5739320 1632040 5739168 +1631912 5738592 1631504 5738552 1632040 5739168 1632160 5739160 +1631912 5738592 1630672 5735640 1631504 5738552 1632040 5739168 +1631504 5738552 1628176 5739664 1631936 5739320 1632040 5739168 +1628160 5739568 1631504 5738552 1629432 5736720 1629344 5736744 +1628160 5739568 1628176 5739664 1631504 5738552 1629344 5736744 +1631504 5738552 1630480 5735720 1629432 5736720 1629344 5736744 +1628160 5739568 1631504 5738552 1629344 5736744 1628096 5737824 +1629344 5736744 1629248 5736760 1628096 5737824 1631504 5738552 +1628160 5739568 1628176 5739664 1631504 5738552 1628096 5737824 +1628160 5739568 1631504 5738552 1628096 5737824 1628072 5737856 +1631504 5738552 1629432 5736720 1629344 5736744 1628096 5737824 +1628160 5739568 1631456 5738568 1631504 5738552 1628096 5737824 +1631456 5738568 1628176 5739664 1631504 5738552 1628096 5737824 +1628160 5739568 1628176 5739664 1631456 5738568 1628096 5737824 +1631504 5738552 1631456 5738568 1628176 5739664 1631936 5739320 +1628176 5739664 1629688 5742824 1631936 5739320 1631456 5738568 +1631504 5738552 1628096 5737824 1631456 5738568 1631936 5739320 +1631456 5738568 1628160 5739568 1628176 5739664 1631936 5739320 +1631504 5738552 1629344 5736744 1628096 5737824 1631456 5738568 +1629344 5736744 1629248 5736760 1628096 5737824 1631456 5738568 +1628096 5737824 1628160 5739568 1631456 5738568 1629344 5736744 +1631504 5738552 1629344 5736744 1631456 5738568 1631936 5739320 +1628160 5739568 1631456 5738568 1628096 5737824 1628072 5737856 +1631504 5738552 1631456 5738568 1631936 5739320 1632040 5739168 +1631504 5738552 1629344 5736744 1631456 5738568 1632040 5739168 +1631456 5738568 1628176 5739664 1631936 5739320 1632040 5739168 +1631504 5738552 1631456 5738568 1632040 5739168 1631912 5738592 +1631504 5738552 1629432 5736720 1629344 5736744 1631456 5738568 +1631504 5738552 1629432 5736720 1631456 5738568 1632040 5739168 +1631504 5738552 1630480 5735720 1629432 5736720 1631456 5738568 +1631504 5738552 1630672 5735640 1630480 5735720 1631456 5738568 +1631504 5738552 1630480 5735720 1631456 5738568 1632040 5739168 +1629344 5736744 1628096 5737824 1631456 5738568 1629432 5736720 +1630480 5735720 1629968 5735816 1629432 5736720 1631456 5738568 +1629432 5736720 1629344 5736744 1631456 5738568 1630480 5735720 +1631936 5739320 1631392 5738624 1628176 5739664 1629688 5742824 +1628176 5739664 1631392 5738624 1631456 5738568 1628160 5739568 +1631392 5738624 1631936 5739320 1631456 5738568 1628160 5739568 +1631456 5738568 1628096 5737824 1628160 5739568 1631392 5738624 +1631456 5738568 1629344 5736744 1628096 5737824 1631392 5738624 +1629344 5736744 1629248 5736760 1628096 5737824 1631392 5738624 +1628160 5739568 1628176 5739664 1631392 5738624 1628096 5737824 +1631456 5738568 1629344 5736744 1631392 5738624 1631936 5739320 +1628096 5737824 1628160 5739568 1631392 5738624 1629344 5736744 +1628176 5739664 1631936 5739320 1631392 5738624 1628160 5739568 +1631456 5738568 1631392 5738624 1631936 5739320 1632040 5739168 +1631456 5738568 1629344 5736744 1631392 5738624 1632040 5739168 +1631392 5738624 1628176 5739664 1631936 5739320 1632040 5739168 +1631456 5738568 1629432 5736720 1629344 5736744 1631392 5738624 +1629344 5736744 1628096 5737824 1631392 5738624 1629432 5736720 +1631456 5738568 1629432 5736720 1631392 5738624 1632040 5739168 +1628096 5737824 1628072 5737856 1628160 5739568 1631392 5738624 +1631456 5738568 1631392 5738624 1632040 5739168 1631504 5738552 +1631456 5738568 1629432 5736720 1631392 5738624 1631504 5738552 +1631392 5738624 1631936 5739320 1632040 5739168 1631504 5738552 +1632040 5739168 1631912 5738592 1631504 5738552 1631392 5738624 +1632040 5739168 1632160 5739160 1631912 5738592 1631392 5738624 +1632040 5739168 1631912 5738592 1631392 5738624 1631936 5739320 +1631504 5738552 1631456 5738568 1631392 5738624 1631912 5738592 +1631456 5738568 1630480 5735720 1629432 5736720 1631392 5738624 +1631392 5738624 1631352 5738632 1628160 5739568 1628176 5739664 +1628096 5737824 1631352 5738632 1631392 5738624 1629344 5736744 +1628096 5737824 1631352 5738632 1629344 5736744 1629248 5736760 +1631392 5738624 1629432 5736720 1629344 5736744 1631352 5738632 +1629344 5736744 1628096 5737824 1631352 5738632 1629432 5736720 +1631392 5738624 1629432 5736720 1631352 5738632 1628176 5739664 +1631392 5738624 1631352 5738632 1628176 5739664 1631936 5739320 +1628176 5739664 1629688 5742824 1631936 5739320 1631352 5738632 +1631352 5738632 1628160 5739568 1628176 5739664 1631936 5739320 +1631392 5738624 1631352 5738632 1631936 5739320 1632040 5739168 +1631392 5738624 1629432 5736720 1631352 5738632 1631936 5739320 +1631352 5738632 1628096 5737824 1628160 5739568 1628176 5739664 +1628096 5737824 1628160 5739568 1631352 5738632 1629344 5736744 +1631392 5738624 1631456 5738568 1629432 5736720 1631352 5738632 +1629432 5736720 1629344 5736744 1631352 5738632 1631456 5738568 +1631392 5738624 1631456 5738568 1631352 5738632 1631936 5739320 +1628160 5739568 1631352 5738632 1628096 5737824 1628072 5737856 +1631456 5738568 1630480 5735720 1629432 5736720 1631352 5738632 +1631352 5738632 1631240 5738608 1628160 5739568 1628176 5739664 +1631352 5738632 1631240 5738608 1628176 5739664 1631936 5739320 +1628176 5739664 1629688 5742824 1631936 5739320 1631240 5738608 +1631352 5738632 1631240 5738608 1631936 5739320 1631392 5738624 +1631240 5738608 1628160 5739568 1628176 5739664 1631936 5739320 +1631352 5738632 1628096 5737824 1631240 5738608 1631936 5739320 +1628096 5737824 1631240 5738608 1631352 5738632 1629344 5736744 +1628096 5737824 1631240 5738608 1629344 5736744 1629248 5736760 +1631352 5738632 1629432 5736720 1629344 5736744 1631240 5738608 +1631352 5738632 1631456 5738568 1629432 5736720 1631240 5738608 +1629432 5736720 1629344 5736744 1631240 5738608 1631456 5738568 +1631240 5738608 1631936 5739320 1631352 5738632 1631456 5738568 +1629344 5736744 1628096 5737824 1631240 5738608 1629432 5736720 +1628096 5737824 1628160 5739568 1631240 5738608 1629344 5736744 +1631240 5738608 1628096 5737824 1628160 5739568 1628176 5739664 +1631352 5738632 1631392 5738624 1631456 5738568 1631240 5738608 +1628160 5739568 1631240 5738608 1628096 5737824 1628072 5737856 +1631456 5738568 1630480 5735720 1629432 5736720 1631240 5738608 +1631456 5738568 1630480 5735720 1631240 5738608 1631352 5738632 +1631456 5738568 1631504 5738552 1630480 5735720 1631240 5738608 +1631504 5738552 1630672 5735640 1630480 5735720 1631240 5738608 +1631456 5738568 1631504 5738552 1631240 5738608 1631352 5738632 +1629432 5736720 1629344 5736744 1631240 5738608 1630480 5735720 +1630480 5735720 1629968 5735816 1629432 5736720 1631240 5738608 +1630480 5735720 1629432 5736720 1631240 5738608 1631504 5738552 +1629432 5736720 1631192 5738560 1631240 5738608 1630480 5735720 +1631240 5738608 1631192 5738560 1629344 5736744 1628096 5737824 +1629344 5736744 1629248 5736760 1628096 5737824 1631192 5738560 +1631192 5738560 1628096 5737824 1631240 5738608 1630480 5735720 +1631240 5738608 1631192 5738560 1628096 5737824 1628160 5739568 +1631192 5738560 1629344 5736744 1628096 5737824 1628160 5739568 +1631240 5738608 1630480 5735720 1631192 5738560 1628160 5739568 +1631192 5738560 1629432 5736720 1629344 5736744 1628096 5737824 +1629432 5736720 1629344 5736744 1631192 5738560 1630480 5735720 +1631240 5738608 1631192 5738560 1628160 5739568 1628176 5739664 +1631240 5738608 1631192 5738560 1628176 5739664 1631936 5739320 +1631240 5738608 1630480 5735720 1631192 5738560 1628176 5739664 +1631192 5738560 1628096 5737824 1628160 5739568 1628176 5739664 +1628096 5737824 1628072 5737856 1628160 5739568 1631192 5738560 +1629432 5736720 1631192 5738560 1630480 5735720 1629968 5735816 +1631240 5738608 1631504 5738552 1630480 5735720 1631192 5738560 +1631504 5738552 1630672 5735640 1630480 5735720 1631192 5738560 +1631504 5738552 1631912 5738592 1630672 5735640 1631192 5738560 +1631240 5738608 1631456 5738568 1631504 5738552 1631192 5738560 +1631240 5738608 1631352 5738632 1631456 5738568 1631192 5738560 +1630480 5735720 1629432 5736720 1631192 5738560 1630672 5735640 +1631240 5738608 1631456 5738568 1631192 5738560 1628176 5739664 +1631504 5738552 1630672 5735640 1631192 5738560 1631456 5738568 +1628096 5737824 1631152 5738560 1631192 5738560 1629344 5736744 +1628096 5737824 1631152 5738560 1629344 5736744 1629248 5736760 +1631192 5738560 1631152 5738560 1628160 5739568 1628176 5739664 +1631192 5738560 1629432 5736720 1629344 5736744 1631152 5738560 +1629344 5736744 1628096 5737824 1631152 5738560 1629432 5736720 +1631152 5738560 1628176 5739664 1631192 5738560 1629432 5736720 +1631192 5738560 1630480 5735720 1629432 5736720 1631152 5738560 +1631192 5738560 1630672 5735640 1630480 5735720 1631152 5738560 +1631192 5738560 1631504 5738552 1630672 5735640 1631152 5738560 +1629432 5736720 1629344 5736744 1631152 5738560 1630480 5735720 +1631192 5738560 1630672 5735640 1631152 5738560 1628176 5739664 +1630480 5735720 1629432 5736720 1631152 5738560 1630672 5735640 +1631192 5738560 1631152 5738560 1628176 5739664 1631240 5738608 +1628176 5739664 1631936 5739320 1631240 5738608 1631152 5738560 +1628176 5739664 1629688 5742824 1631936 5739320 1631152 5738560 +1631936 5739320 1631352 5738632 1631240 5738608 1631152 5738560 +1631152 5738560 1628160 5739568 1628176 5739664 1631936 5739320 +1631192 5738560 1630672 5735640 1631152 5738560 1631240 5738608 +1631240 5738608 1631192 5738560 1631152 5738560 1631936 5739320 +1631152 5738560 1628096 5737824 1628160 5739568 1628176 5739664 +1628096 5737824 1628160 5739568 1631152 5738560 1629344 5736744 +1628160 5739568 1631152 5738560 1628096 5737824 1628072 5737856 +1630480 5735720 1629968 5735816 1629432 5736720 1631152 5738560 +1631936 5739320 1631112 5738584 1628176 5739664 1629688 5742824 +1631152 5738560 1631112 5738584 1631936 5739320 1631240 5738608 +1631936 5739320 1631352 5738632 1631240 5738608 1631112 5738584 +1628176 5739664 1631112 5738584 1631152 5738560 1628160 5739568 +1631152 5738560 1631112 5738584 1631240 5738608 1631192 5738560 +1631152 5738560 1628096 5737824 1628160 5739568 1631112 5738584 +1628160 5739568 1628176 5739664 1631112 5738584 1628096 5737824 +1631152 5738560 1628096 5737824 1631112 5738584 1631240 5738608 +1631152 5738560 1629344 5736744 1628096 5737824 1631112 5738584 +1629344 5736744 1629248 5736760 1628096 5737824 1631112 5738584 +1631152 5738560 1629432 5736720 1629344 5736744 1631112 5738584 +1631152 5738560 1630480 5735720 1629432 5736720 1631112 5738584 +1628096 5737824 1628160 5739568 1631112 5738584 1629344 5736744 +1631152 5738560 1629432 5736720 1631112 5738584 1631240 5738608 +1629344 5736744 1628096 5737824 1631112 5738584 1629432 5736720 +1631112 5738584 1628176 5739664 1631936 5739320 1631240 5738608 +1628176 5739664 1631936 5739320 1631112 5738584 1628160 5739568 +1628096 5737824 1628072 5737856 1628160 5739568 1631112 5738584 +1631936 5739320 1631088 5738648 1628176 5739664 1629688 5742824 +1631112 5738584 1631088 5738648 1631936 5739320 1631240 5738608 +1631936 5739320 1631352 5738632 1631240 5738608 1631088 5738648 +1631936 5739320 1631392 5738624 1631352 5738632 1631088 5738648 +1631112 5738584 1631088 5738648 1631240 5738608 1631152 5738560 +1631240 5738608 1631112 5738584 1631088 5738648 1631352 5738632 +1631112 5738584 1628176 5739664 1631088 5738648 1631240 5738608 +1628176 5739664 1631088 5738648 1631112 5738584 1628160 5739568 +1631112 5738584 1628096 5737824 1628160 5739568 1631088 5738648 +1631112 5738584 1629344 5736744 1628096 5737824 1631088 5738648 +1629344 5736744 1629248 5736760 1628096 5737824 1631088 5738648 +1628096 5737824 1628160 5739568 1631088 5738648 1629344 5736744 +1631112 5738584 1629432 5736720 1629344 5736744 1631088 5738648 +1631088 5738648 1631240 5738608 1631112 5738584 1629344 5736744 +1628160 5739568 1628176 5739664 1631088 5738648 1628096 5737824 +1631936 5739320 1631352 5738632 1631088 5738648 1629688 5742824 +1631088 5738648 1628160 5739568 1628176 5739664 1629688 5742824 +1628176 5739664 1629640 5742832 1629688 5742824 1631088 5738648 +1628096 5737824 1628072 5737856 1628160 5739568 1631088 5738648 +1631936 5739320 1631088 5738648 1629688 5742824 1629784 5742896 +1629688 5742824 1631120 5738680 1631088 5738648 1628176 5739664 +1631088 5738648 1631120 5738680 1631936 5739320 1631352 5738632 +1631088 5738648 1631120 5738680 1631352 5738632 1631240 5738608 +1631936 5739320 1631392 5738624 1631352 5738632 1631120 5738680 +1631088 5738648 1631120 5738680 1631240 5738608 1631112 5738584 +1631120 5738680 1631352 5738632 1631240 5738608 1631112 5738584 +1631240 5738608 1631152 5738560 1631112 5738584 1631120 5738680 +1631240 5738608 1631152 5738560 1631120 5738680 1631352 5738632 +1631240 5738608 1631192 5738560 1631152 5738560 1631120 5738680 +1631112 5738584 1631088 5738648 1631120 5738680 1631152 5738560 +1631120 5738680 1631936 5739320 1631352 5738632 1631240 5738608 +1631120 5738680 1631112 5738584 1631088 5738648 1628176 5739664 +1631088 5738648 1628160 5739568 1628176 5739664 1631120 5738680 +1631120 5738680 1629688 5742824 1631936 5739320 1631352 5738632 +1629688 5742824 1631936 5739320 1631120 5738680 1628176 5739664 +1629688 5742824 1631120 5738680 1628176 5739664 1629640 5742832 +1631936 5739320 1631120 5738680 1629688 5742824 1629784 5742896 +1631120 5738680 1631200 5738752 1631936 5739320 1631352 5738632 +1631936 5739320 1631392 5738624 1631352 5738632 1631200 5738752 +1631936 5739320 1632040 5739168 1631392 5738624 1631200 5738752 +1631120 5738680 1631200 5738752 1631352 5738632 1631240 5738608 +1631120 5738680 1631200 5738752 1631240 5738608 1631152 5738560 +1631352 5738632 1631240 5738608 1631200 5738752 1631392 5738624 +1631120 5738680 1629688 5742824 1631200 5738752 1631240 5738608 +1629688 5742824 1631200 5738752 1631120 5738680 1628176 5739664 +1631120 5738680 1631088 5738648 1628176 5739664 1631200 5738752 +1631200 5738752 1631240 5738608 1631120 5738680 1628176 5739664 +1631200 5738752 1629688 5742824 1631936 5739320 1631392 5738624 +1629688 5742824 1631936 5739320 1631200 5738752 1628176 5739664 +1629688 5742824 1631200 5738752 1628176 5739664 1629640 5742832 +1631936 5739320 1631200 5738752 1629688 5742824 1629784 5742896 +1631200 5738752 1631264 5738848 1631936 5739320 1631392 5738624 +1631936 5739320 1632040 5739168 1631392 5738624 1631264 5738848 +1631200 5738752 1631264 5738848 1631392 5738624 1631352 5738632 +1631200 5738752 1631264 5738848 1631352 5738632 1631240 5738608 +1631392 5738624 1631352 5738632 1631264 5738848 1632040 5739168 +1631200 5738752 1629688 5742824 1631264 5738848 1631352 5738632 +1629688 5742824 1631264 5738848 1631200 5738752 1628176 5739664 +1631200 5738752 1631120 5738680 1628176 5739664 1631264 5738848 +1631120 5738680 1631088 5738648 1628176 5739664 1631264 5738848 +1631264 5738848 1631352 5738632 1631200 5738752 1631120 5738680 +1628176 5739664 1629688 5742824 1631264 5738848 1631120 5738680 +1631264 5738848 1629688 5742824 1631936 5739320 1632040 5739168 +1629688 5742824 1631936 5739320 1631264 5738848 1628176 5739664 +1632040 5739168 1631912 5738592 1631392 5738624 1631264 5738848 +1632040 5739168 1632160 5739160 1631912 5738592 1631264 5738848 +1632040 5739168 1631912 5738592 1631264 5738848 1631936 5739320 +1631392 5738624 1631352 5738632 1631264 5738848 1631912 5738592 +1629688 5742824 1631264 5738848 1628176 5739664 1629640 5742832 +1631912 5738592 1631504 5738552 1631392 5738624 1631264 5738848 +1631392 5738624 1631352 5738632 1631264 5738848 1631504 5738552 +1631912 5738592 1631504 5738552 1631264 5738848 1632040 5739168 +1631504 5738552 1631456 5738568 1631392 5738624 1631264 5738848 +1631936 5739320 1631264 5738848 1629688 5742824 1629784 5742896 +1631264 5738848 1631400 5738976 1631936 5739320 1632040 5739168 +1631264 5738848 1631400 5738976 1632040 5739168 1631912 5738592 +1632040 5739168 1632160 5739160 1631912 5738592 1631400 5738976 +1631400 5738976 1631936 5739320 1632040 5739168 1631912 5738592 +1631264 5738848 1629688 5742824 1631400 5738976 1631912 5738592 +1629688 5742824 1631400 5738976 1631264 5738848 1628176 5739664 +1631264 5738848 1631120 5738680 1628176 5739664 1631400 5738976 +1631400 5738976 1631912 5738592 1631264 5738848 1628176 5739664 +1631400 5738976 1629688 5742824 1631936 5739320 1632040 5739168 +1629688 5742824 1631936 5739320 1631400 5738976 1628176 5739664 +1631264 5738848 1631400 5738976 1631912 5738592 1631504 5738552 +1631400 5738976 1632040 5739168 1631912 5738592 1631504 5738552 +1631264 5738848 1628176 5739664 1631400 5738976 1631504 5738552 +1629688 5742824 1631400 5738976 1628176 5739664 1629640 5742832 +1631264 5738848 1631400 5738976 1631504 5738552 1631392 5738624 +1631264 5738848 1631400 5738976 1631392 5738624 1631352 5738632 +1631264 5738848 1628176 5739664 1631400 5738976 1631392 5738624 +1631400 5738976 1631912 5738592 1631504 5738552 1631392 5738624 +1631504 5738552 1631456 5738568 1631392 5738624 1631400 5738976 +1631936 5739320 1631400 5738976 1629688 5742824 1629784 5742896 +1631400 5738976 1631448 5739216 1631936 5739320 1632040 5739168 +1631400 5738976 1631448 5739216 1632040 5739168 1631912 5738592 +1631400 5738976 1629688 5742824 1631448 5739216 1632040 5739168 +1629688 5742824 1631448 5739216 1631400 5738976 1628176 5739664 +1631400 5738976 1631264 5738848 1628176 5739664 1631448 5739216 +1631264 5738848 1631120 5738680 1628176 5739664 1631448 5739216 +1631120 5738680 1631088 5738648 1628176 5739664 1631448 5739216 +1631088 5738648 1628160 5739568 1628176 5739664 1631448 5739216 +1631264 5738848 1631200 5738752 1631120 5738680 1631448 5739216 +1631120 5738680 1631088 5738648 1631448 5739216 1631264 5738848 +1631264 5738848 1631120 5738680 1631448 5739216 1631400 5738976 +1631448 5739216 1632040 5739168 1631400 5738976 1631264 5738848 +1628176 5739664 1629688 5742824 1631448 5739216 1631088 5738648 +1631448 5739216 1629688 5742824 1631936 5739320 1632040 5739168 +1629688 5742824 1631936 5739320 1631448 5739216 1628176 5739664 +1629688 5742824 1631448 5739216 1628176 5739664 1629640 5742832 +1631936 5739320 1631448 5739216 1629688 5742824 1629784 5742896 +1631936 5739320 1632040 5739168 1631448 5739216 1629784 5742896 +1631448 5739216 1628176 5739664 1629688 5742824 1629784 5742896 +1631936 5739320 1631448 5739216 1629784 5742896 1630424 5743368 +1631448 5739216 1631568 5739328 1631936 5739320 1632040 5739168 +1631448 5739216 1631568 5739328 1632040 5739168 1631400 5738976 +1632040 5739168 1631912 5738592 1631400 5738976 1631568 5739328 +1631568 5739328 1631936 5739320 1632040 5739168 1631400 5738976 +1631448 5739216 1629784 5742896 1631568 5739328 1631400 5738976 +1631568 5739328 1629784 5742896 1631936 5739320 1632040 5739168 +1631936 5739320 1631568 5739328 1629784 5742896 1630424 5743368 +1629784 5742896 1630312 5743312 1630424 5743368 1631568 5739328 +1631936 5739320 1632040 5739168 1631568 5739328 1630424 5743368 +1631568 5739328 1631448 5739216 1629784 5742896 1630424 5743368 +1631936 5739320 1631568 5739328 1630424 5743368 1630632 5743536 +1629784 5742896 1631568 5739328 1631448 5739216 1629688 5742824 +1631568 5739328 1631400 5738976 1631448 5739216 1629688 5742824 +1631448 5739216 1628176 5739664 1629688 5742824 1631568 5739328 +1629784 5742896 1630424 5743368 1631568 5739328 1629688 5742824 +1631568 5739328 1631680 5739464 1631936 5739320 1632040 5739168 +1630424 5743368 1631680 5739464 1631568 5739328 1629784 5742896 +1630424 5743368 1631680 5739464 1629784 5742896 1630312 5743312 +1631680 5739464 1631936 5739320 1631568 5739328 1629784 5742896 +1631568 5739328 1629688 5742824 1629784 5742896 1631680 5739464 +1631568 5739328 1629688 5742824 1631680 5739464 1631936 5739320 +1629784 5742896 1630424 5743368 1631680 5739464 1629688 5742824 +1630424 5743368 1631936 5739320 1631680 5739464 1629784 5742896 +1631936 5739320 1631680 5739464 1630424 5743368 1630632 5743536 +1631936 5739320 1631568 5739328 1631680 5739464 1630632 5743536 +1631680 5739464 1629784 5742896 1630424 5743368 1630632 5743536 +1631936 5739320 1631680 5739464 1630632 5743536 1632432 5739272 +1631936 5739320 1631568 5739328 1631680 5739464 1632432 5739272 +1631936 5739320 1631680 5739464 1632432 5739272 1632320 5739232 +1630632 5743536 1632528 5739272 1632432 5739272 1631680 5739464 +1630632 5743536 1630864 5743768 1632528 5739272 1631680 5739464 +1630864 5743768 1630952 5743928 1632528 5739272 1631680 5739464 +1632528 5739272 1632432 5739272 1631680 5739464 1630864 5743768 +1632432 5739272 1631936 5739320 1631680 5739464 1632528 5739272 +1631680 5739464 1630424 5743368 1630632 5743536 1630864 5743768 +1631568 5739328 1631448 5739216 1629688 5742824 1631680 5739464 +1631448 5739216 1628176 5739664 1629688 5742824 1631680 5739464 +1631568 5739328 1631448 5739216 1631680 5739464 1631936 5739320 +1629688 5742824 1629784 5742896 1631680 5739464 1631448 5739216 +1632528 5739272 1631728 5739480 1630864 5743768 1630952 5743928 +1630864 5743768 1631728 5739480 1631680 5739464 1630632 5743536 +1631728 5739480 1632528 5739272 1631680 5739464 1630632 5743536 +1630864 5743768 1632528 5739272 1631728 5739480 1630632 5743536 +1631680 5739464 1631728 5739480 1632528 5739272 1632432 5739272 +1631680 5739464 1630632 5743536 1631728 5739480 1632432 5739272 +1631728 5739480 1630864 5743768 1632528 5739272 1632432 5739272 +1631680 5739464 1631728 5739480 1632432 5739272 1631936 5739320 +1631680 5739464 1631728 5739480 1631936 5739320 1631568 5739328 +1631680 5739464 1630632 5743536 1631728 5739480 1631936 5739320 +1632432 5739272 1632320 5739232 1631936 5739320 1631728 5739480 +1631728 5739480 1632528 5739272 1632432 5739272 1631936 5739320 +1631680 5739464 1630424 5743368 1630632 5743536 1631728 5739480 +1631680 5739464 1630424 5743368 1631728 5739480 1631936 5739320 +1630632 5743536 1630864 5743768 1631728 5739480 1630424 5743368 +1631680 5739464 1629784 5742896 1630424 5743368 1631728 5739480 +1629784 5742896 1630312 5743312 1630424 5743368 1631728 5739480 +1631680 5739464 1629784 5742896 1631728 5739480 1631936 5739320 +1631680 5739464 1629688 5742824 1629784 5742896 1631728 5739480 +1630424 5743368 1630632 5743536 1631728 5739480 1629784 5742896 +1631936 5739320 1631800 5739456 1632432 5739272 1632320 5739232 +1632432 5739272 1631800 5739456 1631728 5739480 1632528 5739272 +1631728 5739480 1630864 5743768 1632528 5739272 1631800 5739456 +1630864 5743768 1630952 5743928 1632528 5739272 1631800 5739456 +1631800 5739456 1631936 5739320 1631728 5739480 1630864 5743768 +1631728 5739480 1630632 5743536 1630864 5743768 1631800 5739456 +1632432 5739272 1631936 5739320 1631800 5739456 1632528 5739272 +1632528 5739272 1632432 5739272 1631800 5739456 1630864 5743768 +1631728 5739480 1631800 5739456 1631936 5739320 1631680 5739464 +1631936 5739320 1631568 5739328 1631680 5739464 1631800 5739456 +1631936 5739320 1632040 5739168 1631568 5739328 1631800 5739456 +1631728 5739480 1630864 5743768 1631800 5739456 1631680 5739464 +1631800 5739456 1632432 5739272 1631936 5739320 1631568 5739328 +1631680 5739464 1631728 5739480 1631800 5739456 1631568 5739328 +1629568 5725912 1626864 5719976 1613592 5703136 1614696 5707712 +1629568 5725912 1663880 5646248 1626864 5719976 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1626864 5719976 +1663880 5646248 1626864 5719976 1629568 5725912 1663944 5646256 +1663880 5646248 1613592 5703136 1626864 5719976 1663944 5646256 +1626864 5719976 1614696 5707712 1629568 5725912 1663944 5646256 +1629568 5725912 1629600 5725952 1663944 5646256 1626864 5719976 +1629568 5725912 1629600 5725952 1626864 5719976 1614696 5707712 +1663944 5646256 1663880 5646248 1626864 5719976 1629600 5725952 +1629600 5725952 1629624 5725984 1663944 5646256 1626864 5719976 +1663944 5646256 1663880 5646248 1626864 5719976 1629624 5725984 +1629600 5725952 1629624 5725984 1626864 5719976 1629568 5725912 +1629624 5725984 1629736 5726176 1663944 5646256 1626864 5719976 +1663944 5646256 1663880 5646248 1626864 5719976 1629736 5726176 +1629624 5725984 1629736 5726176 1626864 5719976 1629600 5725952 +1629736 5726176 1629944 5726576 1663944 5646256 1626864 5719976 +1629568 5725912 1626864 5719976 1614696 5707712 1619328 5717256 +1629568 5725912 1629600 5725952 1626864 5719976 1619328 5717256 +1626864 5719976 1613592 5703136 1614696 5707712 1619328 5717256 +1629568 5725912 1626864 5719976 1619328 5717256 1619360 5717312 +1629568 5725912 1629600 5725952 1626864 5719976 1619360 5717312 +1629568 5725912 1626864 5719976 1619360 5717312 1619392 5717424 +1629568 5725912 1629600 5725952 1626864 5719976 1619392 5717424 +1629568 5725912 1626864 5719976 1619392 5717424 1619392 5717504 +1629568 5725912 1629600 5725952 1626864 5719976 1619392 5717504 +1629568 5725912 1626864 5719976 1619392 5717504 1621040 5722712 +1629568 5725912 1629600 5725952 1626864 5719976 1621040 5722712 +1626864 5719976 1619392 5717424 1619392 5717504 1621040 5722712 +1626864 5719976 1619360 5717312 1619392 5717424 1619392 5717504 +1626864 5719976 1619328 5717256 1619360 5717312 1619392 5717424 +1626864 5719976 1614696 5707712 1619328 5717256 1619360 5717312 +1614696 5707712 1614704 5707744 1619328 5717256 1626864 5719976 +1614696 5707712 1614704 5707744 1626864 5719976 1613592 5703136 +1619328 5717256 1619360 5717312 1626864 5719976 1614704 5707744 +1614704 5707744 1619296 5717232 1619328 5717256 1626864 5719976 +1619392 5717504 1620992 5722672 1621040 5722712 1626864 5719976 +1621040 5722712 1629568 5725912 1626864 5719976 1620992 5722672 +1619392 5717504 1620992 5722672 1626864 5719976 1619392 5717424 +1629568 5725912 1626864 5719976 1621040 5722712 1621088 5722784 +1629568 5725912 1629600 5725952 1626864 5719976 1621088 5722784 +1629568 5725912 1626864 5719976 1621088 5722784 1629464 5725960 +1629568 5725912 1629600 5725952 1626864 5719976 1629464 5725960 +1621088 5722784 1621280 5723224 1629464 5725960 1626864 5719976 +1621280 5723224 1629248 5726144 1629464 5725960 1626864 5719976 +1621280 5723224 1629248 5726144 1626864 5719976 1621088 5722784 +1629464 5725960 1629568 5725912 1626864 5719976 1629248 5726144 +1626864 5719976 1620992 5722672 1621040 5722712 1621088 5722784 +1629248 5726144 1629392 5726056 1629464 5725960 1626864 5719976 +1621280 5723224 1621280 5723304 1629248 5726144 1626864 5719976 +1621280 5723224 1621280 5723304 1626864 5719976 1621088 5722784 +1629248 5726144 1629464 5725960 1626864 5719976 1621280 5723304 +1626864 5719976 1621040 5722712 1621088 5722784 1621280 5723224 +1619392 5717504 1620872 5722632 1620992 5722672 1626864 5719976 +1626864 5719976 1663880 5646248 1613592 5703136 1614696 5707712 +1613592 5703136 1626864 5719976 1663880 5646248 1611560 5699312 +1621280 5723304 1629224 5726184 1629248 5726144 1626864 5719976 +1629248 5726144 1629464 5725960 1626864 5719976 1629224 5726184 +1621280 5723304 1629224 5726184 1626864 5719976 1621280 5723224 +1621280 5723304 1629224 5726312 1629224 5726184 1626864 5719976 +1626864 5719976 1626912 5719928 1663944 5646256 1663880 5646248 +1626864 5719976 1626912 5719928 1663880 5646248 1613592 5703136 +1626864 5719976 1629736 5726176 1626912 5719928 1613592 5703136 +1626912 5719928 1663944 5646256 1663880 5646248 1613592 5703136 +1629736 5726176 1626912 5719928 1626864 5719976 1629624 5725984 +1626912 5719928 1613592 5703136 1626864 5719976 1629624 5725984 +1626864 5719976 1629600 5725952 1629624 5725984 1626912 5719928 +1626864 5719976 1629600 5725952 1626912 5719928 1613592 5703136 +1626864 5719976 1629568 5725912 1629600 5725952 1626912 5719928 +1626864 5719976 1629568 5725912 1626912 5719928 1613592 5703136 +1626864 5719976 1629464 5725960 1629568 5725912 1626912 5719928 +1629600 5725952 1629624 5725984 1626912 5719928 1629568 5725912 +1629624 5725984 1629736 5726176 1626912 5719928 1629600 5725952 +1663944 5646256 1626912 5719928 1629736 5726176 1629944 5726576 +1626864 5719976 1626912 5719928 1613592 5703136 1614696 5707712 +1626912 5719928 1663880 5646248 1613592 5703136 1614696 5707712 +1626864 5719976 1629568 5725912 1626912 5719928 1614696 5707712 +1626864 5719976 1626912 5719928 1614696 5707712 1614704 5707744 +1626864 5719976 1629568 5725912 1626912 5719928 1614704 5707744 +1613592 5703136 1614680 5707680 1614696 5707712 1626912 5719928 +1626864 5719976 1626912 5719928 1614704 5707744 1619328 5717256 +1626864 5719976 1629568 5725912 1626912 5719928 1619328 5717256 +1626912 5719928 1614696 5707712 1614704 5707744 1619328 5717256 +1626864 5719976 1626912 5719928 1619328 5717256 1619360 5717312 +1626864 5719976 1629568 5725912 1626912 5719928 1619360 5717312 +1626864 5719976 1626912 5719928 1619360 5717312 1619392 5717424 +1626864 5719976 1629568 5725912 1626912 5719928 1619392 5717424 +1626864 5719976 1626912 5719928 1619392 5717424 1619392 5717504 +1626912 5719928 1619328 5717256 1619360 5717312 1619392 5717424 +1614704 5707744 1619296 5717232 1619328 5717256 1626912 5719928 +1626912 5719928 1614704 5707744 1619328 5717256 1619360 5717312 +1626912 5719928 1613592 5703136 1614696 5707712 1614704 5707744 +1626912 5719928 1629736 5726176 1663944 5646256 1663880 5646248 +1629736 5726176 1663944 5646256 1626912 5719928 1629624 5725984 +1663880 5646248 1611560 5699312 1613592 5703136 1626912 5719928 +1663944 5646256 1627008 5719872 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1627008 5719872 +1663944 5646256 1627008 5719872 1629944 5726576 1743800 5687320 +1626912 5719928 1627008 5719872 1663944 5646256 1663880 5646248 +1626912 5719928 1627008 5719872 1663880 5646248 1613592 5703136 +1626912 5719928 1627008 5719872 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1627008 5719872 +1627008 5719872 1663880 5646248 1613592 5703136 1614696 5707712 +1626912 5719928 1627008 5719872 1614696 5707712 1614704 5707744 +1627008 5719872 1613592 5703136 1614696 5707712 1614704 5707744 +1626912 5719928 1627008 5719872 1614704 5707744 1619328 5717256 +1614704 5707744 1619296 5717232 1619328 5717256 1627008 5719872 +1626912 5719928 1627008 5719872 1619328 5717256 1619360 5717312 +1627008 5719872 1614704 5707744 1619328 5717256 1619360 5717312 +1626912 5719928 1627008 5719872 1619360 5717312 1619392 5717424 +1627008 5719872 1614696 5707712 1614704 5707744 1619328 5717256 +1627008 5719872 1663944 5646256 1663880 5646248 1613592 5703136 +1626912 5719928 1629736 5726176 1627008 5719872 1619360 5717312 +1629736 5726176 1627008 5719872 1626912 5719928 1629624 5725984 +1626912 5719928 1629600 5725952 1629624 5725984 1627008 5719872 +1626912 5719928 1629568 5725912 1629600 5725952 1627008 5719872 +1626912 5719928 1626864 5719976 1629568 5725912 1627008 5719872 +1626864 5719976 1629464 5725960 1629568 5725912 1627008 5719872 +1629568 5725912 1629600 5725952 1627008 5719872 1626864 5719976 +1629600 5725952 1629624 5725984 1627008 5719872 1629568 5725912 +1627008 5719872 1619360 5717312 1626912 5719928 1626864 5719976 +1629624 5725984 1629736 5726176 1627008 5719872 1629600 5725952 +1663944 5646256 1663880 5646248 1627008 5719872 1629944 5726576 +1627008 5719872 1629624 5725984 1629736 5726176 1629944 5726576 +1663880 5646248 1611560 5699312 1613592 5703136 1627008 5719872 +1629944 5726576 1627112 5719824 1627008 5719872 1629736 5726176 +1629944 5726576 1627112 5719824 1629736 5726176 1629904 5726504 +1629944 5726576 1663944 5646256 1627112 5719824 1629736 5726176 +1663944 5646256 1627112 5719824 1629944 5726576 1743800 5687320 +1627008 5719872 1627112 5719824 1663944 5646256 1663880 5646248 +1627112 5719824 1629944 5726576 1663944 5646256 1663880 5646248 +1627008 5719872 1627112 5719824 1663880 5646248 1613592 5703136 +1627008 5719872 1627112 5719824 1613592 5703136 1614696 5707712 +1627008 5719872 1627112 5719824 1614696 5707712 1614704 5707744 +1613592 5703136 1614680 5707680 1614696 5707712 1627112 5719824 +1627112 5719824 1613592 5703136 1614696 5707712 1614704 5707744 +1627008 5719872 1627112 5719824 1614704 5707744 1619328 5717256 +1627112 5719824 1614696 5707712 1614704 5707744 1619328 5717256 +1627008 5719872 1627112 5719824 1619328 5717256 1619360 5717312 +1614704 5707744 1619296 5717232 1619328 5717256 1627112 5719824 +1627008 5719872 1627112 5719824 1619360 5717312 1626912 5719928 +1627112 5719824 1614704 5707744 1619328 5717256 1619360 5717312 +1627112 5719824 1663880 5646248 1613592 5703136 1614696 5707712 +1627112 5719824 1663944 5646256 1663880 5646248 1613592 5703136 +1627112 5719824 1619360 5717312 1627008 5719872 1629736 5726176 +1627008 5719872 1629624 5725984 1629736 5726176 1627112 5719824 +1629736 5726176 1629944 5726576 1627112 5719824 1629624 5725984 +1627008 5719872 1629600 5725952 1629624 5725984 1627112 5719824 +1627008 5719872 1629568 5725912 1629600 5725952 1627112 5719824 +1627008 5719872 1626864 5719976 1629568 5725912 1627112 5719824 +1626864 5719976 1629464 5725960 1629568 5725912 1627112 5719824 +1627008 5719872 1626912 5719928 1626864 5719976 1627112 5719824 +1629568 5725912 1629600 5725952 1627112 5719824 1626864 5719976 +1629624 5725984 1629736 5726176 1627112 5719824 1629600 5725952 +1629600 5725952 1629624 5725984 1627112 5719824 1629568 5725912 +1627008 5719872 1626864 5719976 1627112 5719824 1619360 5717312 +1663880 5646248 1611560 5699312 1613592 5703136 1627112 5719824 +1627112 5719824 1627152 5719784 1663944 5646256 1663880 5646248 +1629944 5726576 1627152 5719784 1627112 5719824 1629736 5726176 +1627112 5719824 1629624 5725984 1629736 5726176 1627152 5719784 +1629944 5726576 1627152 5719784 1629736 5726176 1629904 5726504 +1627112 5719824 1629600 5725952 1629624 5725984 1627152 5719784 +1629624 5725984 1629736 5726176 1627152 5719784 1629600 5725952 +1629736 5726176 1629944 5726576 1627152 5719784 1629624 5725984 +1627112 5719824 1629600 5725952 1627152 5719784 1663880 5646248 +1627152 5719784 1629944 5726576 1663944 5646256 1663880 5646248 +1629944 5726576 1663944 5646256 1627152 5719784 1629736 5726176 +1663944 5646256 1627152 5719784 1629944 5726576 1743800 5687320 +1627112 5719824 1629568 5725912 1629600 5725952 1627152 5719784 +1627112 5719824 1626864 5719976 1629568 5725912 1627152 5719784 +1629600 5725952 1629624 5725984 1627152 5719784 1629568 5725912 +1627112 5719824 1629568 5725912 1627152 5719784 1663880 5646248 +1627112 5719824 1627152 5719784 1663880 5646248 1613592 5703136 +1627152 5719784 1663944 5646256 1663880 5646248 1613592 5703136 +1627112 5719824 1629568 5725912 1627152 5719784 1613592 5703136 +1627112 5719824 1627152 5719784 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1627152 5719784 +1627112 5719824 1627152 5719784 1614696 5707712 1614704 5707744 +1627112 5719824 1627152 5719784 1614704 5707744 1619328 5717256 +1627152 5719784 1614696 5707712 1614704 5707744 1619328 5717256 +1627112 5719824 1629568 5725912 1627152 5719784 1619328 5717256 +1614704 5707744 1619296 5717232 1619328 5717256 1627152 5719784 +1627112 5719824 1627152 5719784 1619328 5717256 1619360 5717312 +1627152 5719784 1614704 5707744 1619328 5717256 1619360 5717312 +1627112 5719824 1627152 5719784 1619360 5717312 1627008 5719872 +1627112 5719824 1629568 5725912 1627152 5719784 1627008 5719872 +1619360 5717312 1626912 5719928 1627008 5719872 1627152 5719784 +1627152 5719784 1619328 5717256 1619360 5717312 1627008 5719872 +1627152 5719784 1613592 5703136 1614696 5707712 1614704 5707744 +1627152 5719784 1663880 5646248 1613592 5703136 1614696 5707712 +1663880 5646248 1611560 5699312 1613592 5703136 1627152 5719784 +1627152 5719784 1627232 5719704 1663944 5646256 1663880 5646248 +1627152 5719784 1627232 5719704 1663880 5646248 1613592 5703136 +1627232 5719704 1663944 5646256 1663880 5646248 1613592 5703136 +1627152 5719784 1629944 5726576 1627232 5719704 1613592 5703136 +1629944 5726576 1627232 5719704 1627152 5719784 1629736 5726176 +1629944 5726576 1627232 5719704 1629736 5726176 1629904 5726504 +1627152 5719784 1629624 5725984 1629736 5726176 1627232 5719704 +1627152 5719784 1629600 5725952 1629624 5725984 1627232 5719704 +1627152 5719784 1629568 5725912 1629600 5725952 1627232 5719704 +1629600 5725952 1629624 5725984 1627232 5719704 1629568 5725912 +1629624 5725984 1629736 5726176 1627232 5719704 1629600 5725952 +1627232 5719704 1613592 5703136 1627152 5719784 1629568 5725912 +1629736 5726176 1629944 5726576 1627232 5719704 1629624 5725984 +1627232 5719704 1629944 5726576 1663944 5646256 1663880 5646248 +1629944 5726576 1663944 5646256 1627232 5719704 1629736 5726176 +1663944 5646256 1627232 5719704 1629944 5726576 1743800 5687320 +1627152 5719784 1627112 5719824 1629568 5725912 1627232 5719704 +1627152 5719784 1627232 5719704 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1627232 5719704 +1627232 5719704 1663880 5646248 1613592 5703136 1614696 5707712 +1627152 5719784 1629568 5725912 1627232 5719704 1614696 5707712 +1627152 5719784 1627232 5719704 1614696 5707712 1614704 5707744 +1627152 5719784 1627232 5719704 1614704 5707744 1619328 5717256 +1627152 5719784 1627232 5719704 1619328 5717256 1619360 5717312 +1627232 5719704 1614704 5707744 1619328 5717256 1619360 5717312 +1627152 5719784 1629568 5725912 1627232 5719704 1619360 5717312 +1614704 5707744 1619296 5717232 1619328 5717256 1627232 5719704 +1627152 5719784 1627232 5719704 1619360 5717312 1627008 5719872 +1627232 5719704 1619328 5717256 1619360 5717312 1627008 5719872 +1627152 5719784 1627232 5719704 1627008 5719872 1627112 5719824 +1627152 5719784 1629568 5725912 1627232 5719704 1627008 5719872 +1619360 5717312 1626912 5719928 1627008 5719872 1627232 5719704 +1619360 5717312 1626912 5719928 1627232 5719704 1619328 5717256 +1619360 5717312 1619392 5717424 1626912 5719928 1627232 5719704 +1627008 5719872 1627152 5719784 1627232 5719704 1626912 5719928 +1627232 5719704 1614696 5707712 1614704 5707744 1619328 5717256 +1627232 5719704 1613592 5703136 1614696 5707712 1614704 5707744 +1663880 5646248 1611560 5699312 1613592 5703136 1627232 5719704 +1627232 5719704 1627280 5719664 1663944 5646256 1663880 5646248 +1627232 5719704 1627280 5719664 1663880 5646248 1613592 5703136 +1627232 5719704 1627280 5719664 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1627280 5719664 +1627280 5719664 1663880 5646248 1613592 5703136 1614696 5707712 +1627280 5719664 1663944 5646256 1663880 5646248 1613592 5703136 +1627232 5719704 1629944 5726576 1627280 5719664 1614696 5707712 +1629944 5726576 1627280 5719664 1627232 5719704 1629736 5726176 +1629944 5726576 1627280 5719664 1629736 5726176 1629904 5726504 +1627232 5719704 1629624 5725984 1629736 5726176 1627280 5719664 +1627232 5719704 1629600 5725952 1629624 5725984 1627280 5719664 +1627232 5719704 1629568 5725912 1629600 5725952 1627280 5719664 +1627232 5719704 1627152 5719784 1629568 5725912 1627280 5719664 +1629568 5725912 1629600 5725952 1627280 5719664 1627152 5719784 +1629600 5725952 1629624 5725984 1627280 5719664 1629568 5725912 +1629624 5725984 1629736 5726176 1627280 5719664 1629600 5725952 +1627280 5719664 1614696 5707712 1627232 5719704 1627152 5719784 +1629736 5726176 1629944 5726576 1627280 5719664 1629624 5725984 +1627280 5719664 1629944 5726576 1663944 5646256 1663880 5646248 +1629944 5726576 1663944 5646256 1627280 5719664 1629736 5726176 +1663944 5646256 1627280 5719664 1629944 5726576 1743800 5687320 +1627152 5719784 1627112 5719824 1629568 5725912 1627280 5719664 +1627232 5719704 1627280 5719664 1614696 5707712 1614704 5707744 +1627280 5719664 1613592 5703136 1614696 5707712 1614704 5707744 +1627232 5719704 1627152 5719784 1627280 5719664 1614704 5707744 +1627232 5719704 1627280 5719664 1614704 5707744 1619328 5717256 +1627232 5719704 1627280 5719664 1619328 5717256 1619360 5717312 +1627232 5719704 1627280 5719664 1619360 5717312 1626912 5719928 +1627280 5719664 1619328 5717256 1619360 5717312 1626912 5719928 +1627232 5719704 1627152 5719784 1627280 5719664 1626912 5719928 +1619360 5717312 1619392 5717424 1626912 5719928 1627280 5719664 +1614704 5707744 1619296 5717232 1619328 5717256 1627280 5719664 +1627232 5719704 1627280 5719664 1626912 5719928 1627008 5719872 +1627280 5719664 1614704 5707744 1619328 5717256 1619360 5717312 +1627280 5719664 1614696 5707712 1614704 5707744 1619328 5717256 +1663880 5646248 1611560 5699312 1613592 5703136 1627280 5719664 +1627280 5719664 1627312 5719640 1663944 5646256 1663880 5646248 +1627280 5719664 1627312 5719640 1663880 5646248 1613592 5703136 +1627280 5719664 1627312 5719640 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1627312 5719640 +1627280 5719664 1627312 5719640 1614696 5707712 1614704 5707744 +1627312 5719640 1613592 5703136 1614696 5707712 1614704 5707744 +1627312 5719640 1663880 5646248 1613592 5703136 1614696 5707712 +1627312 5719640 1663944 5646256 1663880 5646248 1613592 5703136 +1627280 5719664 1629944 5726576 1627312 5719640 1614704 5707744 +1629944 5726576 1627312 5719640 1627280 5719664 1629736 5726176 +1629944 5726576 1627312 5719640 1629736 5726176 1629904 5726504 +1627280 5719664 1629624 5725984 1629736 5726176 1627312 5719640 +1627280 5719664 1629600 5725952 1629624 5725984 1627312 5719640 +1627280 5719664 1629568 5725912 1629600 5725952 1627312 5719640 +1627280 5719664 1627152 5719784 1629568 5725912 1627312 5719640 +1627280 5719664 1627232 5719704 1627152 5719784 1627312 5719640 +1629568 5725912 1629600 5725952 1627312 5719640 1627152 5719784 +1629600 5725952 1629624 5725984 1627312 5719640 1629568 5725912 +1629624 5725984 1629736 5726176 1627312 5719640 1629600 5725952 +1627312 5719640 1614704 5707744 1627280 5719664 1627152 5719784 +1629736 5726176 1629944 5726576 1627312 5719640 1629624 5725984 +1627312 5719640 1629944 5726576 1663944 5646256 1663880 5646248 +1629944 5726576 1663944 5646256 1627312 5719640 1629736 5726176 +1663944 5646256 1627312 5719640 1629944 5726576 1743800 5687320 +1627152 5719784 1627112 5719824 1629568 5725912 1627312 5719640 +1627112 5719824 1626864 5719976 1629568 5725912 1627312 5719640 +1627152 5719784 1627112 5719824 1627312 5719640 1627280 5719664 +1629568 5725912 1629600 5725952 1627312 5719640 1627112 5719824 +1627280 5719664 1627312 5719640 1614704 5707744 1619328 5717256 +1627312 5719640 1614696 5707712 1614704 5707744 1619328 5717256 +1627280 5719664 1627152 5719784 1627312 5719640 1619328 5717256 +1614704 5707744 1619296 5717232 1619328 5717256 1627312 5719640 +1627280 5719664 1627312 5719640 1619328 5717256 1619360 5717312 +1627280 5719664 1627312 5719640 1619360 5717312 1626912 5719928 +1627280 5719664 1627152 5719784 1627312 5719640 1619360 5717312 +1627312 5719640 1614704 5707744 1619328 5717256 1619360 5717312 +1663880 5646248 1611560 5699312 1613592 5703136 1627312 5719640 +1627312 5719640 1627336 5719640 1663944 5646256 1663880 5646248 +1627312 5719640 1627336 5719640 1663880 5646248 1613592 5703136 +1627312 5719640 1627336 5719640 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1627336 5719640 +1627312 5719640 1627336 5719640 1614696 5707712 1614704 5707744 +1627312 5719640 1627336 5719640 1614704 5707744 1619328 5717256 +1627336 5719640 1613592 5703136 1614696 5707712 1614704 5707744 +1627336 5719640 1663880 5646248 1613592 5703136 1614696 5707712 +1627336 5719640 1663944 5646256 1663880 5646248 1613592 5703136 +1627312 5719640 1629944 5726576 1627336 5719640 1614704 5707744 +1629944 5726576 1627336 5719640 1627312 5719640 1629736 5726176 +1629944 5726576 1627336 5719640 1629736 5726176 1629904 5726504 +1627312 5719640 1629624 5725984 1629736 5726176 1627336 5719640 +1627312 5719640 1629600 5725952 1629624 5725984 1627336 5719640 +1627312 5719640 1629568 5725912 1629600 5725952 1627336 5719640 +1627312 5719640 1627112 5719824 1629568 5725912 1627336 5719640 +1627112 5719824 1626864 5719976 1629568 5725912 1627336 5719640 +1629568 5725912 1629600 5725952 1627336 5719640 1627112 5719824 +1629600 5725952 1629624 5725984 1627336 5719640 1629568 5725912 +1629624 5725984 1629736 5726176 1627336 5719640 1629600 5725952 +1627336 5719640 1614704 5707744 1627312 5719640 1627112 5719824 +1629736 5726176 1629944 5726576 1627336 5719640 1629624 5725984 +1629944 5726576 1663944 5646256 1627336 5719640 1629736 5726176 +1627336 5719640 1629944 5726576 1663944 5646256 1663880 5646248 +1663944 5646256 1627336 5719640 1629944 5726576 1743800 5687320 +1627312 5719640 1627152 5719784 1627112 5719824 1627336 5719640 +1627312 5719640 1627280 5719664 1627152 5719784 1627336 5719640 +1627280 5719664 1627232 5719704 1627152 5719784 1627336 5719640 +1627280 5719664 1627232 5719704 1627336 5719640 1627312 5719640 +1627112 5719824 1629568 5725912 1627336 5719640 1627152 5719784 +1627312 5719640 1627280 5719664 1627336 5719640 1614704 5707744 +1627152 5719784 1627112 5719824 1627336 5719640 1627232 5719704 +1663880 5646248 1611560 5699312 1613592 5703136 1627336 5719640 +1629944 5726576 1627384 5719672 1627336 5719640 1629736 5726176 +1629944 5726576 1627384 5719672 1629736 5726176 1629904 5726504 +1627336 5719640 1629624 5725984 1629736 5726176 1627384 5719672 +1627336 5719640 1629600 5725952 1629624 5725984 1627384 5719672 +1627336 5719640 1629568 5725912 1629600 5725952 1627384 5719672 +1627336 5719640 1627112 5719824 1629568 5725912 1627384 5719672 +1627112 5719824 1626864 5719976 1629568 5725912 1627384 5719672 +1627336 5719640 1627152 5719784 1627112 5719824 1627384 5719672 +1627112 5719824 1629568 5725912 1627384 5719672 1627152 5719784 +1629568 5725912 1629600 5725952 1627384 5719672 1627112 5719824 +1629600 5725952 1629624 5725984 1627384 5719672 1629568 5725912 +1629624 5725984 1629736 5726176 1627384 5719672 1629600 5725952 +1629736 5726176 1629944 5726576 1627384 5719672 1629624 5725984 +1627336 5719640 1627384 5719672 1663944 5646256 1663880 5646248 +1627336 5719640 1627384 5719672 1663880 5646248 1613592 5703136 +1627336 5719640 1627384 5719672 1613592 5703136 1614696 5707712 +1627384 5719672 1629944 5726576 1663944 5646256 1663880 5646248 +1627384 5719672 1663944 5646256 1663880 5646248 1613592 5703136 +1627384 5719672 1613592 5703136 1627336 5719640 1627152 5719784 +1629944 5726576 1663944 5646256 1627384 5719672 1629736 5726176 +1663944 5646256 1627384 5719672 1629944 5726576 1743800 5687320 +1627336 5719640 1627232 5719704 1627152 5719784 1627384 5719672 +1627336 5719640 1627280 5719664 1627232 5719704 1627384 5719672 +1627336 5719640 1627312 5719640 1627280 5719664 1627384 5719672 +1627152 5719784 1627112 5719824 1627384 5719672 1627232 5719704 +1627336 5719640 1627280 5719664 1627384 5719672 1613592 5703136 +1627232 5719704 1627152 5719784 1627384 5719672 1627280 5719664 +1663880 5646248 1611560 5699312 1613592 5703136 1627384 5719672 +1627384 5719672 1627400 5719704 1663944 5646256 1663880 5646248 +1629944 5726576 1627400 5719704 1627384 5719672 1629736 5726176 +1629944 5726576 1627400 5719704 1629736 5726176 1629904 5726504 +1627384 5719672 1629624 5725984 1629736 5726176 1627400 5719704 +1627384 5719672 1629600 5725952 1629624 5725984 1627400 5719704 +1627384 5719672 1629568 5725912 1629600 5725952 1627400 5719704 +1627384 5719672 1627112 5719824 1629568 5725912 1627400 5719704 +1627112 5719824 1626864 5719976 1629568 5725912 1627400 5719704 +1626864 5719976 1629464 5725960 1629568 5725912 1627400 5719704 +1627112 5719824 1627008 5719872 1626864 5719976 1627400 5719704 +1627384 5719672 1627152 5719784 1627112 5719824 1627400 5719704 +1627384 5719672 1627232 5719704 1627152 5719784 1627400 5719704 +1627152 5719784 1627112 5719824 1627400 5719704 1627232 5719704 +1627112 5719824 1626864 5719976 1627400 5719704 1627152 5719784 +1629568 5725912 1629600 5725952 1627400 5719704 1626864 5719976 +1629600 5725952 1629624 5725984 1627400 5719704 1629568 5725912 +1629624 5725984 1629736 5726176 1627400 5719704 1629600 5725952 +1627400 5719704 1663944 5646256 1627384 5719672 1627232 5719704 +1629736 5726176 1629944 5726576 1627400 5719704 1629624 5725984 +1629944 5726576 1663944 5646256 1627400 5719704 1629736 5726176 +1663944 5646256 1627400 5719704 1629944 5726576 1743800 5687320 +1627384 5719672 1627280 5719664 1627232 5719704 1627400 5719704 +1627384 5719672 1627336 5719640 1627280 5719664 1627400 5719704 +1627232 5719704 1627152 5719784 1627400 5719704 1627280 5719664 +1627384 5719672 1627280 5719664 1627400 5719704 1663944 5646256 +1627400 5719704 1627448 5719792 1663944 5646256 1627384 5719672 +1663944 5646256 1663880 5646248 1627384 5719672 1627448 5719792 +1627400 5719704 1629944 5726576 1627448 5719792 1627384 5719672 +1629944 5726576 1627448 5719792 1627400 5719704 1629736 5726176 +1629944 5726576 1627448 5719792 1629736 5726176 1629904 5726504 +1627400 5719704 1629624 5725984 1629736 5726176 1627448 5719792 +1627400 5719704 1629600 5725952 1629624 5725984 1627448 5719792 +1627400 5719704 1629568 5725912 1629600 5725952 1627448 5719792 +1627400 5719704 1626864 5719976 1629568 5725912 1627448 5719792 +1626864 5719976 1629464 5725960 1629568 5725912 1627448 5719792 +1626864 5719976 1629248 5726144 1629464 5725960 1627448 5719792 +1627400 5719704 1627112 5719824 1626864 5719976 1627448 5719792 +1627112 5719824 1627008 5719872 1626864 5719976 1627448 5719792 +1627008 5719872 1626912 5719928 1626864 5719976 1627448 5719792 +1627112 5719824 1627008 5719872 1627448 5719792 1627400 5719704 +1627400 5719704 1627152 5719784 1627112 5719824 1627448 5719792 +1627112 5719824 1627008 5719872 1627448 5719792 1627152 5719784 +1627400 5719704 1627232 5719704 1627152 5719784 1627448 5719792 +1627400 5719704 1627280 5719664 1627232 5719704 1627448 5719792 +1627152 5719784 1627112 5719824 1627448 5719792 1627232 5719704 +1626864 5719976 1629464 5725960 1627448 5719792 1627008 5719872 +1629568 5725912 1629600 5725952 1627448 5719792 1629464 5725960 +1629600 5725952 1629624 5725984 1627448 5719792 1629568 5725912 +1629624 5725984 1629736 5726176 1627448 5719792 1629600 5725952 +1627448 5719792 1627384 5719672 1627400 5719704 1627232 5719704 +1629736 5726176 1629944 5726576 1627448 5719792 1629624 5725984 +1627448 5719792 1629944 5726576 1663944 5646256 1627384 5719672 +1629944 5726576 1663944 5646256 1627448 5719792 1629736 5726176 +1663944 5646256 1627448 5719792 1629944 5726576 1743800 5687320 +1629464 5725960 1627448 5719840 1626864 5719976 1629248 5726144 +1626864 5719976 1627448 5719840 1627448 5719792 1627008 5719872 +1626864 5719976 1627448 5719840 1627008 5719872 1626912 5719928 +1627448 5719792 1627112 5719824 1627008 5719872 1627448 5719840 +1627448 5719792 1627152 5719784 1627112 5719824 1627448 5719840 +1627112 5719824 1627008 5719872 1627448 5719840 1627152 5719784 +1627448 5719792 1627232 5719704 1627152 5719784 1627448 5719840 +1627152 5719784 1627112 5719824 1627448 5719840 1627232 5719704 +1627448 5719792 1627400 5719704 1627232 5719704 1627448 5719840 +1627008 5719872 1626864 5719976 1627448 5719840 1627112 5719824 +1627448 5719792 1627448 5719840 1629464 5725960 1629568 5725912 +1627448 5719792 1627448 5719840 1629568 5725912 1629600 5725952 +1627448 5719792 1627448 5719840 1629600 5725952 1629624 5725984 +1627448 5719840 1629464 5725960 1629568 5725912 1629600 5725952 +1627448 5719840 1629600 5725952 1627448 5719792 1627232 5719704 +1627448 5719840 1626864 5719976 1629464 5725960 1629568 5725912 +1626864 5719976 1629464 5725960 1627448 5719840 1627008 5719872 +1629464 5725960 1627400 5719960 1626864 5719976 1629248 5726144 +1627448 5719840 1627400 5719960 1629464 5725960 1629568 5725912 +1627448 5719840 1627400 5719960 1629568 5725912 1629600 5725952 +1627448 5719840 1626864 5719976 1627400 5719960 1629568 5725912 +1626864 5719976 1627400 5719960 1627448 5719840 1627008 5719872 +1626864 5719976 1627400 5719960 1627008 5719872 1626912 5719928 +1627448 5719840 1627112 5719824 1627008 5719872 1627400 5719960 +1627448 5719840 1627152 5719784 1627112 5719824 1627400 5719960 +1627448 5719840 1627232 5719704 1627152 5719784 1627400 5719960 +1627112 5719824 1627008 5719872 1627400 5719960 1627152 5719784 +1627400 5719960 1629568 5725912 1627448 5719840 1627152 5719784 +1627008 5719872 1626864 5719976 1627400 5719960 1627112 5719824 +1627400 5719960 1626864 5719976 1629464 5725960 1629568 5725912 +1626864 5719976 1629464 5725960 1627400 5719960 1627008 5719872 +1629464 5725960 1627376 5720016 1626864 5719976 1629248 5726144 +1626864 5719976 1629224 5726184 1629248 5726144 1627376 5720016 +1627400 5719960 1627376 5720016 1629464 5725960 1629568 5725912 +1627400 5719960 1627376 5720016 1629568 5725912 1627448 5719840 +1627400 5719960 1626864 5719976 1627376 5720016 1629568 5725912 +1626864 5719976 1627376 5720016 1627400 5719960 1627008 5719872 +1626864 5719976 1627376 5720016 1627008 5719872 1626912 5719928 +1627400 5719960 1627112 5719824 1627008 5719872 1627376 5720016 +1627400 5719960 1627152 5719784 1627112 5719824 1627376 5720016 +1627376 5720016 1629568 5725912 1627400 5719960 1627112 5719824 +1627376 5720016 1627112 5719824 1627008 5719872 1626912 5719928 +1629464 5725960 1629568 5725912 1627376 5720016 1629248 5726144 +1627376 5720016 1626912 5719928 1626864 5719976 1629248 5726144 +1629464 5725960 1627376 5720016 1629248 5726144 1629392 5726056 +1629248 5726144 1627328 5720072 1626864 5719976 1629224 5726184 +1627376 5720016 1627328 5720072 1629248 5726144 1629464 5725960 +1627376 5720016 1627328 5720072 1629464 5725960 1629568 5725912 +1627328 5720072 1629248 5726144 1629464 5725960 1629568 5725912 +1627376 5720016 1627328 5720072 1629568 5725912 1627400 5719960 +1627376 5720016 1626864 5719976 1627328 5720072 1629568 5725912 +1626864 5719976 1627328 5720072 1627376 5720016 1626912 5719928 +1627376 5720016 1627008 5719872 1626912 5719928 1627328 5720072 +1627376 5720016 1627112 5719824 1627008 5719872 1627328 5720072 +1627008 5719872 1626912 5719928 1627328 5720072 1627112 5719824 +1627376 5720016 1627400 5719960 1627112 5719824 1627328 5720072 +1627328 5720072 1629568 5725912 1627376 5720016 1627112 5719824 +1626912 5719928 1626864 5719976 1627328 5720072 1627008 5719872 +1627328 5720072 1626864 5719976 1629248 5726144 1629464 5725960 +1626864 5719976 1629248 5726144 1627328 5720072 1626912 5719928 +1629248 5726144 1629392 5726056 1629464 5725960 1627328 5720072 +1629248 5726144 1627240 5720136 1626864 5719976 1629224 5726184 +1627328 5720072 1627240 5720136 1629248 5726144 1629464 5725960 +1627328 5720072 1627240 5720136 1629464 5725960 1629568 5725912 +1627328 5720072 1627240 5720136 1629568 5725912 1627376 5720016 +1627240 5720136 1629248 5726144 1629464 5725960 1629568 5725912 +1627328 5720072 1626864 5719976 1627240 5720136 1629568 5725912 +1626864 5719976 1627240 5720136 1627328 5720072 1626912 5719928 +1627328 5720072 1627008 5719872 1626912 5719928 1627240 5720136 +1627328 5720072 1627112 5719824 1627008 5719872 1627240 5720136 +1627328 5720072 1627376 5720016 1627112 5719824 1627240 5720136 +1627008 5719872 1626912 5719928 1627240 5720136 1627112 5719824 +1627240 5720136 1629568 5725912 1627328 5720072 1627112 5719824 +1626912 5719928 1626864 5719976 1627240 5720136 1627008 5719872 +1629248 5726144 1629464 5725960 1627240 5720136 1629224 5726184 +1627240 5720136 1626912 5719928 1626864 5719976 1629224 5726184 +1629248 5726144 1629392 5726056 1629464 5725960 1627240 5720136 +1626864 5719976 1621280 5723304 1629224 5726184 1627240 5720136 +1629224 5726184 1629248 5726144 1627240 5720136 1621280 5723304 +1626864 5719976 1621280 5723304 1627240 5720136 1626912 5719928 +1626864 5719976 1621280 5723224 1621280 5723304 1627240 5720136 +1621280 5723304 1629224 5726312 1629224 5726184 1627240 5720136 +1626864 5719976 1627192 5720152 1627240 5720136 1626912 5719928 +1627240 5720136 1627008 5719872 1626912 5719928 1627192 5720152 +1627240 5720136 1627112 5719824 1627008 5719872 1627192 5720152 +1627240 5720136 1627328 5720072 1627112 5719824 1627192 5720152 +1627008 5719872 1626912 5719928 1627192 5720152 1627112 5719824 +1627192 5720152 1621280 5723304 1627240 5720136 1627112 5719824 +1626912 5719928 1626864 5719976 1627192 5720152 1627008 5719872 +1626864 5719976 1621280 5723304 1627192 5720152 1626912 5719928 +1621280 5723304 1627192 5720152 1626864 5719976 1621280 5723224 +1627240 5720136 1627192 5720152 1621280 5723304 1629224 5726184 +1627240 5720136 1627192 5720152 1629224 5726184 1629248 5726144 +1627240 5720136 1627192 5720152 1629248 5726144 1629464 5725960 +1627192 5720152 1629224 5726184 1629248 5726144 1629464 5725960 +1627240 5720136 1627192 5720152 1629464 5725960 1629568 5725912 +1627240 5720136 1627112 5719824 1627192 5720152 1629464 5725960 +1627192 5720152 1626864 5719976 1621280 5723304 1629224 5726184 +1629248 5726144 1629392 5726056 1629464 5725960 1627192 5720152 +1621280 5723304 1629224 5726312 1629224 5726184 1627192 5720152 +1627192 5720152 1621280 5723304 1629224 5726184 1629248 5726144 +1627192 5720152 1627144 5720152 1621280 5723304 1629224 5726184 +1627192 5720152 1626864 5719976 1627144 5720152 1629224 5726184 +1626864 5719976 1627144 5720152 1627192 5720152 1626912 5719928 +1627192 5720152 1627008 5719872 1626912 5719928 1627144 5720152 +1627192 5720152 1627112 5719824 1627008 5719872 1627144 5720152 +1627192 5720152 1627240 5720136 1627112 5719824 1627144 5720152 +1627240 5720136 1627328 5720072 1627112 5719824 1627144 5720152 +1627112 5719824 1627008 5719872 1627144 5720152 1627240 5720136 +1627008 5719872 1626912 5719928 1627144 5720152 1627112 5719824 +1627144 5720152 1629224 5726184 1627192 5720152 1627240 5720136 +1626912 5719928 1626864 5719976 1627144 5720152 1627008 5719872 +1627144 5720152 1626864 5719976 1621280 5723304 1629224 5726184 +1626864 5719976 1621280 5723304 1627144 5720152 1626912 5719928 +1621280 5723304 1627144 5720152 1626864 5719976 1621280 5723224 +1626864 5719976 1621088 5722784 1621280 5723224 1627144 5720152 +1621280 5723304 1629224 5726184 1627144 5720152 1621280 5723224 +1627144 5720152 1626912 5719928 1626864 5719976 1621280 5723224 +1621280 5723304 1629224 5726312 1629224 5726184 1627144 5720152 +1627192 5720152 1627144 5720152 1629224 5726184 1629248 5726144 +1627192 5720152 1627144 5720152 1629248 5726144 1629464 5725960 +1627144 5720152 1621280 5723304 1629224 5726184 1629248 5726144 +1627192 5720152 1627240 5720136 1627144 5720152 1629248 5726144 +1621280 5723224 1627064 5720152 1626864 5719976 1621088 5722784 +1626864 5719976 1627064 5720152 1627144 5720152 1626912 5719928 +1627144 5720152 1627008 5719872 1626912 5719928 1627064 5720152 +1627144 5720152 1627112 5719824 1627008 5719872 1627064 5720152 +1627064 5720152 1621280 5723224 1627144 5720152 1627008 5719872 +1626912 5719928 1626864 5719976 1627064 5720152 1627008 5719872 +1626864 5719976 1621280 5723224 1627064 5720152 1626912 5719928 +1627144 5720152 1627064 5720152 1621280 5723224 1621280 5723304 +1627144 5720152 1627064 5720152 1621280 5723304 1629224 5726184 +1627144 5720152 1627064 5720152 1629224 5726184 1629248 5726144 +1627064 5720152 1621280 5723304 1629224 5726184 1629248 5726144 +1627144 5720152 1627008 5719872 1627064 5720152 1629248 5726144 +1627064 5720152 1626864 5719976 1621280 5723224 1621280 5723304 +1627064 5720152 1621280 5723224 1621280 5723304 1629224 5726184 +1621280 5723304 1629224 5726312 1629224 5726184 1627064 5720152 +1627144 5720152 1627064 5720152 1629248 5726144 1627192 5720152 +1621280 5723224 1626976 5720112 1626864 5719976 1621088 5722784 +1627064 5720152 1626976 5720112 1621280 5723224 1621280 5723304 +1627064 5720152 1626864 5719976 1626976 5720112 1621280 5723304 +1626864 5719976 1626976 5720112 1627064 5720152 1626912 5719928 +1627064 5720152 1627008 5719872 1626912 5719928 1626976 5720112 +1627064 5720152 1627144 5720152 1627008 5719872 1626976 5720112 +1626976 5720112 1621280 5723304 1627064 5720152 1627008 5719872 +1626912 5719928 1626864 5719976 1626976 5720112 1627008 5719872 +1626976 5720112 1626864 5719976 1621280 5723224 1621280 5723304 +1626864 5719976 1621280 5723224 1626976 5720112 1626912 5719928 +1627064 5720152 1626976 5720112 1621280 5723304 1629224 5726184 +1621280 5723224 1626912 5720080 1626864 5719976 1621088 5722784 +1626976 5720112 1626912 5720080 1621280 5723224 1621280 5723304 +1626976 5720112 1626912 5720080 1621280 5723304 1627064 5720152 +1626976 5720112 1626864 5719976 1626912 5720080 1621280 5723304 +1626864 5719976 1626912 5720080 1626976 5720112 1626912 5719928 +1626976 5720112 1627008 5719872 1626912 5719928 1626912 5720080 +1626912 5720080 1621280 5723304 1626976 5720112 1626912 5719928 +1621280 5723224 1621280 5723304 1626912 5720080 1621088 5722784 +1626864 5719976 1621040 5722712 1621088 5722784 1626912 5720080 +1626912 5720080 1626912 5719928 1626864 5719976 1621088 5722784 +1626912 5720080 1626864 5720032 1621088 5722784 1621280 5723224 +1626912 5720080 1626864 5720032 1621280 5723224 1621280 5723304 +1621088 5722784 1626864 5720032 1626864 5719976 1621040 5722712 +1626864 5719976 1620992 5722672 1621040 5722712 1626864 5720032 +1626912 5720080 1626864 5719976 1626864 5720032 1621280 5723224 +1626864 5719976 1626864 5720032 1626912 5720080 1626912 5719928 +1626864 5720032 1621040 5722712 1621088 5722784 1621280 5723224 +1626864 5720032 1626912 5720080 1626864 5719976 1621040 5722712 +1614704 5707744 1619864 5714184 1627312 5719640 1627336 5719640 +1614704 5707744 1619864 5714184 1627336 5719640 1614696 5707712 +1619864 5714184 1627312 5719640 1627336 5719640 1614696 5707712 +1627336 5719640 1613592 5703136 1614696 5707712 1619864 5714184 +1613592 5703136 1614680 5707680 1614696 5707712 1619864 5714184 +1627336 5719640 1613592 5703136 1619864 5714184 1627312 5719640 +1614696 5707712 1614704 5707744 1619864 5714184 1613592 5703136 +1627336 5719640 1627384 5719672 1613592 5703136 1619864 5714184 +1619328 5717256 1619864 5714184 1614704 5707744 1619296 5717232 +1614704 5707744 1614696 5707848 1619296 5717232 1619864 5714184 +1619296 5717232 1619328 5717256 1619864 5714184 1614696 5707848 +1614696 5707848 1614688 5707952 1619296 5717232 1619864 5714184 +1614696 5707848 1614688 5707952 1619864 5714184 1614704 5707744 +1619296 5717232 1619328 5717256 1619864 5714184 1614688 5707952 +1619328 5717256 1627312 5719640 1619864 5714184 1619296 5717232 +1614704 5707744 1614696 5707848 1619864 5714184 1614696 5707712 +1619864 5714184 1619328 5717256 1627312 5719640 1627336 5719640 +1627312 5719640 1619864 5714184 1619328 5717256 1619360 5717312 +1619864 5714184 1619296 5717232 1619328 5717256 1619360 5717312 +1627312 5719640 1627336 5719640 1619864 5714184 1619360 5717312 +1627312 5719640 1619864 5714184 1619360 5717312 1627280 5719664 +1619360 5717312 1626912 5719928 1627280 5719664 1619864 5714184 +1626912 5719928 1627232 5719704 1627280 5719664 1619864 5714184 +1619360 5717312 1619392 5717424 1626912 5719928 1619864 5714184 +1626912 5719928 1627280 5719664 1619864 5714184 1619392 5717424 +1619392 5717424 1626864 5719976 1626912 5719928 1619864 5714184 +1627312 5719640 1627336 5719640 1619864 5714184 1627280 5719664 +1627280 5719664 1627312 5719640 1619864 5714184 1626912 5719928 +1619864 5714184 1619328 5717256 1619360 5717312 1619392 5717424 +1614688 5707952 1614664 5708048 1619296 5717232 1619864 5714184 +1619296 5717232 1619328 5717256 1619864 5714184 1614664 5708048 +1614688 5707952 1614664 5708048 1619864 5714184 1614696 5707848 +1614664 5708048 1614648 5708080 1619296 5717232 1619864 5714184 +1619296 5717232 1619328 5717256 1619864 5714184 1614648 5708080 +1614648 5708080 1619280 5717232 1619296 5717232 1619864 5714184 +1614648 5708080 1614576 5708144 1619280 5717232 1619864 5714184 +1619296 5717232 1619328 5717256 1619864 5714184 1619280 5717232 +1619280 5717232 1619296 5717232 1619864 5714184 1614576 5708144 +1614576 5708144 1618888 5717376 1619280 5717232 1619864 5714184 +1614576 5708144 1618888 5717376 1619864 5714184 1614648 5708080 +1614576 5708144 1613840 5708448 1618888 5717376 1619864 5714184 +1614576 5708144 1613840 5708448 1619864 5714184 1614648 5708080 +1614576 5708144 1613896 5708408 1613840 5708448 1619864 5714184 +1613840 5708448 1611528 5715552 1618888 5717376 1619864 5714184 +1613840 5708448 1611528 5715552 1619864 5714184 1614576 5708144 +1613840 5708448 1611512 5715528 1611528 5715552 1619864 5714184 +1613840 5708448 1611512 5715528 1619864 5714184 1614576 5708144 +1613840 5708448 1613784 5708464 1611512 5715528 1619864 5714184 +1611528 5715552 1618856 5717400 1618888 5717376 1619864 5714184 +1611528 5715552 1618856 5717400 1619864 5714184 1611512 5715528 +1619280 5717232 1619296 5717232 1619864 5714184 1618888 5717376 +1611528 5715552 1618824 5717440 1618856 5717400 1619864 5714184 +1618888 5717376 1619248 5717248 1619280 5717232 1619864 5714184 +1618888 5717376 1619280 5717232 1619864 5714184 1618856 5717400 +1614664 5708048 1614648 5708080 1619864 5714184 1614688 5707952 +1614648 5708080 1614576 5708144 1619864 5714184 1614664 5708048 +1627336 5719640 1619792 5714008 1619864 5714184 1627312 5719640 +1619864 5714184 1619792 5714008 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619792 5714008 +1619864 5714184 1619792 5714008 1614696 5707712 1614704 5707744 +1619792 5714008 1613592 5703136 1614696 5707712 1614704 5707744 +1613592 5703136 1619792 5714008 1627336 5719640 1627384 5719672 +1619864 5714184 1619792 5714008 1614704 5707744 1614696 5707848 +1619792 5714008 1614696 5707712 1614704 5707744 1614696 5707848 +1619864 5714184 1619792 5714008 1614696 5707848 1614688 5707952 +1619864 5714184 1619792 5714008 1614688 5707952 1614664 5708048 +1619792 5714008 1614696 5707848 1614688 5707952 1614664 5708048 +1619792 5714008 1614704 5707744 1614696 5707848 1614688 5707952 +1619864 5714184 1627336 5719640 1619792 5714008 1614664 5708048 +1619792 5714008 1627336 5719640 1613592 5703136 1614696 5707712 +1619864 5714184 1619792 5714008 1614664 5708048 1614648 5708080 +1619792 5714008 1614688 5707952 1614664 5708048 1614648 5708080 +1619864 5714184 1627336 5719640 1619792 5714008 1614648 5708080 +1619864 5714184 1619792 5714008 1614648 5708080 1614576 5708144 +1619864 5714184 1619792 5714008 1614576 5708144 1613840 5708448 +1619864 5714184 1619792 5714008 1613840 5708448 1611512 5715528 +1619792 5714008 1614576 5708144 1613840 5708448 1611512 5715528 +1619864 5714184 1619792 5714008 1611512 5715528 1611528 5715552 +1619792 5714008 1613840 5708448 1611512 5715528 1611528 5715552 +1614576 5708144 1613896 5708408 1613840 5708448 1619792 5714008 +1613840 5708448 1613784 5708464 1611512 5715528 1619792 5714008 +1619864 5714184 1619792 5714008 1611528 5715552 1618856 5717400 +1619792 5714008 1611512 5715528 1611528 5715552 1618856 5717400 +1619864 5714184 1619792 5714008 1618856 5717400 1618888 5717376 +1619792 5714008 1611528 5715552 1618856 5717400 1618888 5717376 +1619864 5714184 1627336 5719640 1619792 5714008 1618888 5717376 +1611528 5715552 1618824 5717440 1618856 5717400 1619792 5714008 +1619864 5714184 1619792 5714008 1618888 5717376 1619280 5717232 +1619792 5714008 1614664 5708048 1614648 5708080 1614576 5708144 +1619792 5714008 1614648 5708080 1614576 5708144 1613840 5708448 +1613592 5703136 1619656 5713744 1627336 5719640 1627384 5719672 +1627336 5719640 1619656 5713744 1619792 5714008 1619864 5714184 +1619792 5714008 1619656 5713744 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619656 5713744 +1619792 5714008 1619656 5713744 1614696 5707712 1614704 5707744 +1619792 5714008 1619656 5713744 1614704 5707744 1614696 5707848 +1619656 5713744 1614696 5707712 1614704 5707744 1614696 5707848 +1619792 5714008 1619656 5713744 1614696 5707848 1614688 5707952 +1619656 5713744 1614704 5707744 1614696 5707848 1614688 5707952 +1619792 5714008 1619656 5713744 1614688 5707952 1614664 5708048 +1619792 5714008 1619656 5713744 1614664 5708048 1614648 5708080 +1619656 5713744 1614688 5707952 1614664 5708048 1614648 5708080 +1619656 5713744 1614696 5707848 1614688 5707952 1614664 5708048 +1619792 5714008 1627336 5719640 1619656 5713744 1614648 5708080 +1619656 5713744 1627336 5719640 1613592 5703136 1614696 5707712 +1619656 5713744 1613592 5703136 1614696 5707712 1614704 5707744 +1619792 5714008 1619656 5713744 1614648 5708080 1614576 5708144 +1619656 5713744 1614664 5708048 1614648 5708080 1614576 5708144 +1619792 5714008 1627336 5719640 1619656 5713744 1614576 5708144 +1619792 5714008 1619656 5713744 1614576 5708144 1613840 5708448 +1619792 5714008 1619656 5713744 1613840 5708448 1611512 5715528 +1619792 5714008 1619656 5713744 1611512 5715528 1611528 5715552 +1619656 5713744 1613840 5708448 1611512 5715528 1611528 5715552 +1619792 5714008 1619656 5713744 1611528 5715552 1618856 5717400 +1619656 5713744 1611512 5715528 1611528 5715552 1618856 5717400 +1614576 5708144 1613896 5708408 1613840 5708448 1619656 5713744 +1613840 5708448 1613784 5708464 1611512 5715528 1619656 5713744 +1619792 5714008 1619656 5713744 1618856 5717400 1618888 5717376 +1619656 5713744 1611528 5715552 1618856 5717400 1618888 5717376 +1619792 5714008 1619656 5713744 1618888 5717376 1619864 5714184 +1619792 5714008 1627336 5719640 1619656 5713744 1618888 5717376 +1611528 5715552 1618824 5717440 1618856 5717400 1619656 5713744 +1619656 5713744 1614648 5708080 1614576 5708144 1613840 5708448 +1619656 5713744 1614576 5708144 1613840 5708448 1611512 5715528 +1613592 5703136 1619688 5713672 1627336 5719640 1627384 5719672 +1619656 5713744 1619688 5713672 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619688 5713672 +1619656 5713744 1619688 5713672 1614696 5707712 1614704 5707744 +1619656 5713744 1619688 5713672 1614704 5707744 1614696 5707848 +1619656 5713744 1619688 5713672 1614696 5707848 1614688 5707952 +1619688 5713672 1614704 5707744 1614696 5707848 1614688 5707952 +1619656 5713744 1619688 5713672 1614688 5707952 1614664 5708048 +1619688 5713672 1614696 5707848 1614688 5707952 1614664 5708048 +1619656 5713744 1619688 5713672 1614664 5708048 1614648 5708080 +1619656 5713744 1619688 5713672 1614648 5708080 1614576 5708144 +1619688 5713672 1614664 5708048 1614648 5708080 1614576 5708144 +1619688 5713672 1614688 5707952 1614664 5708048 1614648 5708080 +1619688 5713672 1613592 5703136 1614696 5707712 1614704 5707744 +1619688 5713672 1614696 5707712 1614704 5707744 1614696 5707848 +1619656 5713744 1627336 5719640 1619688 5713672 1614576 5708144 +1627336 5719640 1619688 5713672 1619656 5713744 1619792 5714008 +1627336 5719640 1613592 5703136 1619688 5713672 1619792 5714008 +1627336 5719640 1619688 5713672 1619792 5714008 1619864 5714184 +1627336 5719640 1613592 5703136 1619688 5713672 1619864 5714184 +1627336 5719640 1619688 5713672 1619864 5714184 1627312 5719640 +1619688 5713672 1614576 5708144 1619656 5713744 1619792 5714008 +1619688 5713672 1619656 5713744 1619792 5714008 1619864 5714184 +1619688 5713672 1627336 5719640 1613592 5703136 1614696 5707712 +1619656 5713744 1619688 5713672 1614576 5708144 1613840 5708448 +1627336 5719640 1619824 5713672 1619688 5713672 1619864 5714184 +1619824 5713672 1613592 5703136 1619688 5713672 1619864 5714184 +1627336 5719640 1613592 5703136 1619824 5713672 1619864 5714184 +1627336 5719640 1619824 5713672 1619864 5714184 1627312 5719640 +1619824 5713672 1619688 5713672 1619864 5714184 1627312 5719640 +1627336 5719640 1613592 5703136 1619824 5713672 1627312 5719640 +1613592 5703136 1619824 5713672 1627336 5719640 1627384 5719672 +1619864 5714184 1627280 5719664 1627312 5719640 1619824 5713672 +1619688 5713672 1619792 5714008 1619864 5714184 1619824 5713672 +1619688 5713672 1619792 5714008 1619824 5713672 1613592 5703136 +1619864 5714184 1627312 5719640 1619824 5713672 1619792 5714008 +1619688 5713672 1619656 5713744 1619792 5714008 1619824 5713672 +1619688 5713672 1619656 5713744 1619824 5713672 1613592 5703136 +1619792 5714008 1619864 5714184 1619824 5713672 1619656 5713744 +1619688 5713672 1619824 5713672 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619824 5713672 +1619688 5713672 1619656 5713744 1619824 5713672 1614696 5707712 +1619824 5713672 1627336 5719640 1613592 5703136 1614696 5707712 +1619688 5713672 1619824 5713672 1614696 5707712 1614704 5707744 +1619688 5713672 1619656 5713744 1619824 5713672 1614704 5707744 +1619824 5713672 1613592 5703136 1614696 5707712 1614704 5707744 +1619688 5713672 1619824 5713672 1614704 5707744 1614696 5707848 +1619688 5713672 1619656 5713744 1619824 5713672 1614696 5707848 +1619688 5713672 1619824 5713672 1614696 5707848 1614688 5707952 +1619688 5713672 1619656 5713744 1619824 5713672 1614688 5707952 +1619688 5713672 1619824 5713672 1614688 5707952 1614664 5708048 +1619824 5713672 1614696 5707712 1614704 5707744 1614696 5707848 +1619824 5713672 1614704 5707744 1614696 5707848 1614688 5707952 +1619824 5713672 1619952 5713672 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1619952 5713672 +1619824 5713672 1619952 5713672 1614696 5707712 1614704 5707744 +1619952 5713672 1613592 5703136 1614696 5707712 1614704 5707744 +1627336 5719640 1619952 5713672 1619824 5713672 1627312 5719640 +1619824 5713672 1627312 5719640 1619952 5713672 1614704 5707744 +1619952 5713672 1627336 5719640 1613592 5703136 1614696 5707712 +1627336 5719640 1613592 5703136 1619952 5713672 1627312 5719640 +1619824 5713672 1619864 5714184 1627312 5719640 1619952 5713672 +1619824 5713672 1619792 5714008 1619864 5714184 1619952 5713672 +1627312 5719640 1627336 5719640 1619952 5713672 1619864 5714184 +1619824 5713672 1619792 5714008 1619952 5713672 1614704 5707744 +1619864 5714184 1627312 5719640 1619952 5713672 1619792 5714008 +1613592 5703136 1619952 5713672 1627336 5719640 1627384 5719672 +1619864 5714184 1627280 5719664 1627312 5719640 1619952 5713672 +1619824 5713672 1619656 5713744 1619792 5714008 1619952 5713672 +1619824 5713672 1619952 5713672 1614704 5707744 1614696 5707848 +1619952 5713672 1614696 5707712 1614704 5707744 1614696 5707848 +1619824 5713672 1619792 5714008 1619952 5713672 1614696 5707848 +1619824 5713672 1619952 5713672 1614696 5707848 1614688 5707952 +1619824 5713672 1619792 5714008 1619952 5713672 1614688 5707952 +1619824 5713672 1619952 5713672 1614688 5707952 1619688 5713672 +1619952 5713672 1614704 5707744 1614696 5707848 1614688 5707952 +1619952 5713672 1620040 5713712 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1620040 5713712 +1619952 5713672 1620040 5713712 1614696 5707712 1614704 5707744 +1619952 5713672 1627336 5719640 1620040 5713712 1614696 5707712 +1627336 5719640 1620040 5713712 1619952 5713672 1627312 5719640 +1619952 5713672 1619864 5714184 1627312 5719640 1620040 5713712 +1620040 5713712 1614696 5707712 1619952 5713672 1619864 5714184 +1627312 5719640 1627336 5719640 1620040 5713712 1619864 5714184 +1620040 5713712 1627336 5719640 1613592 5703136 1614696 5707712 +1627336 5719640 1613592 5703136 1620040 5713712 1627312 5719640 +1619952 5713672 1619792 5714008 1619864 5714184 1620040 5713712 +1619952 5713672 1619824 5713672 1619792 5714008 1620040 5713712 +1619864 5714184 1627312 5719640 1620040 5713712 1619792 5714008 +1619952 5713672 1619792 5714008 1620040 5713712 1614696 5707712 +1613592 5703136 1620040 5713712 1627336 5719640 1627384 5719672 +1619864 5714184 1627280 5719664 1627312 5719640 1620040 5713712 +1619864 5714184 1620072 5713752 1620040 5713712 1619792 5714008 +1620040 5713712 1620072 5713752 1627312 5719640 1627336 5719640 +1620072 5713752 1627336 5719640 1620040 5713712 1619792 5714008 +1620040 5713712 1620072 5713752 1627336 5719640 1613592 5703136 +1620072 5713752 1619864 5714184 1627312 5719640 1627336 5719640 +1619864 5714184 1627312 5719640 1620072 5713752 1619792 5714008 +1620040 5713712 1619952 5713672 1619792 5714008 1620072 5713752 +1619952 5713672 1619824 5713672 1619792 5714008 1620072 5713752 +1619792 5714008 1619864 5714184 1620072 5713752 1619952 5713672 +1620040 5713712 1619952 5713672 1620072 5713752 1627336 5719640 +1627312 5719640 1620072 5713752 1619864 5714184 1627280 5719664 +1627312 5719640 1627336 5719640 1620072 5713752 1627280 5719664 +1620072 5713752 1619792 5714008 1619864 5714184 1627280 5719664 +1619864 5714184 1626912 5719928 1627280 5719664 1620072 5713752 +1626912 5719928 1627232 5719704 1627280 5719664 1620072 5713752 +1619864 5714184 1619392 5717424 1626912 5719928 1620072 5713752 +1619864 5714184 1626912 5719928 1620072 5713752 1619792 5714008 +1627280 5719664 1627312 5719640 1620072 5713752 1626912 5719928 +1627336 5719640 1620104 5713768 1620072 5713752 1627312 5719640 +1620040 5713712 1620104 5713768 1627336 5719640 1613592 5703136 +1620040 5713712 1620104 5713768 1613592 5703136 1614696 5707712 +1620072 5713752 1627280 5719664 1627312 5719640 1620104 5713768 +1627312 5719640 1627336 5719640 1620104 5713768 1627280 5719664 +1620104 5713768 1620040 5713712 1620072 5713752 1627280 5719664 +1620040 5713712 1620072 5713752 1620104 5713768 1613592 5703136 +1627336 5719640 1613592 5703136 1620104 5713768 1627312 5719640 +1627336 5719640 1627384 5719672 1613592 5703136 1620104 5713768 +1620072 5713752 1626912 5719928 1627280 5719664 1620104 5713768 +1626912 5719928 1627232 5719704 1627280 5719664 1620104 5713768 +1627280 5719664 1627312 5719640 1620104 5713768 1626912 5719928 +1620072 5713752 1626912 5719928 1620104 5713768 1620040 5713712 +1620072 5713752 1619864 5714184 1626912 5719928 1620104 5713768 +1619864 5714184 1619392 5717424 1626912 5719928 1620104 5713768 +1620072 5713752 1619864 5714184 1620104 5713768 1620040 5713712 +1620072 5713752 1619792 5714008 1619864 5714184 1620104 5713768 +1620072 5713752 1619952 5713672 1619792 5714008 1620104 5713768 +1620072 5713752 1619792 5714008 1620104 5713768 1620040 5713712 +1626912 5719928 1627280 5719664 1620104 5713768 1619864 5714184 +1619864 5714184 1626912 5719928 1620104 5713768 1619792 5714008 +1626912 5719928 1620160 5713848 1619864 5714184 1619392 5717424 +1626912 5719928 1620104 5713768 1620160 5713848 1619392 5717424 +1620160 5713848 1620104 5713768 1619864 5714184 1619392 5717424 +1626912 5719928 1620160 5713848 1619392 5717424 1626864 5719976 +1619864 5714184 1619360 5717312 1619392 5717424 1620160 5713848 +1619392 5717424 1626912 5719928 1620160 5713848 1619360 5717312 +1619864 5714184 1619360 5717312 1620160 5713848 1620104 5713768 +1620104 5713768 1620160 5713848 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620160 5713848 +1620104 5713768 1620160 5713848 1627280 5719664 1627312 5719640 +1620104 5713768 1620160 5713848 1627312 5719640 1627336 5719640 +1620160 5713848 1627280 5719664 1627312 5719640 1627336 5719640 +1620104 5713768 1619864 5714184 1620160 5713848 1627336 5719640 +1620104 5713768 1620160 5713848 1627336 5719640 1613592 5703136 +1620160 5713848 1619392 5717424 1626912 5719928 1627280 5719664 +1620160 5713848 1626912 5719928 1627280 5719664 1627312 5719640 +1619864 5714184 1620160 5713848 1620104 5713768 1619792 5714008 +1620104 5713768 1620072 5713752 1619792 5714008 1620160 5713848 +1620072 5713752 1619952 5713672 1619792 5714008 1620160 5713848 +1620160 5713848 1627336 5719640 1620104 5713768 1620072 5713752 +1619864 5714184 1619360 5717312 1620160 5713848 1619792 5714008 +1619792 5714008 1619864 5714184 1620160 5713848 1620072 5713752 +1619864 5714184 1619328 5717256 1619360 5717312 1620160 5713848 +1619392 5717424 1620272 5714120 1620160 5713848 1619360 5717312 +1620160 5713848 1620272 5714120 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620272 5714120 +1620272 5714120 1627280 5719664 1620160 5713848 1619360 5717312 +1620272 5714120 1619392 5717424 1626912 5719928 1627280 5719664 +1619392 5717424 1626912 5719928 1620272 5714120 1619360 5717312 +1626912 5719928 1620272 5714120 1619392 5717424 1626864 5719976 +1620160 5713848 1619864 5714184 1619360 5717312 1620272 5714120 +1619360 5717312 1619392 5717424 1620272 5714120 1619864 5714184 +1620160 5713848 1619864 5714184 1620272 5714120 1627280 5719664 +1620160 5713848 1619792 5714008 1619864 5714184 1620272 5714120 +1620160 5713848 1620272 5714120 1627280 5719664 1627312 5719640 +1620160 5713848 1620272 5714120 1627312 5719640 1627336 5719640 +1620160 5713848 1620272 5714120 1627336 5719640 1620104 5713768 +1620272 5714120 1626912 5719928 1627280 5719664 1627312 5719640 +1620160 5713848 1619864 5714184 1620272 5714120 1627336 5719640 +1620272 5714120 1627280 5719664 1627312 5719640 1627336 5719640 +1619864 5714184 1619328 5717256 1619360 5717312 1620272 5714120 +1619360 5717312 1619392 5717424 1620272 5714120 1619328 5717256 +1619864 5714184 1619328 5717256 1620272 5714120 1620160 5713848 +1619864 5714184 1619296 5717232 1619328 5717256 1620272 5714120 +1619864 5714184 1619296 5717232 1620272 5714120 1620160 5713848 +1619864 5714184 1619280 5717232 1619296 5717232 1620272 5714120 +1619328 5717256 1619360 5717312 1620272 5714120 1619296 5717232 +1620272 5714120 1620344 5714224 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620344 5714224 +1620272 5714120 1620344 5714224 1627280 5719664 1627312 5719640 +1620344 5714224 1626912 5719928 1627280 5719664 1627312 5719640 +1620272 5714120 1619392 5717424 1620344 5714224 1627312 5719640 +1619392 5717424 1620344 5714224 1620272 5714120 1619360 5717312 +1620272 5714120 1619328 5717256 1619360 5717312 1620344 5714224 +1620344 5714224 1627312 5719640 1620272 5714120 1619328 5717256 +1619360 5717312 1619392 5717424 1620344 5714224 1619328 5717256 +1619392 5717424 1626912 5719928 1620344 5714224 1619360 5717312 +1620344 5714224 1619392 5717424 1626912 5719928 1627280 5719664 +1626912 5719928 1620344 5714224 1619392 5717424 1626864 5719976 +1619392 5717424 1619392 5717504 1626864 5719976 1620344 5714224 +1620344 5714224 1619360 5717312 1619392 5717424 1626864 5719976 +1626912 5719928 1627280 5719664 1620344 5714224 1626864 5719976 +1620272 5714120 1620344 5714224 1627312 5719640 1627336 5719640 +1620272 5714120 1620344 5714224 1627336 5719640 1620160 5713848 +1627336 5719640 1620104 5713768 1620160 5713848 1620344 5714224 +1620344 5714224 1627280 5719664 1627312 5719640 1627336 5719640 +1620272 5714120 1619328 5717256 1620344 5714224 1620160 5713848 +1620344 5714224 1627312 5719640 1627336 5719640 1620160 5713848 +1620272 5714120 1619296 5717232 1619328 5717256 1620344 5714224 +1619328 5717256 1619360 5717312 1620344 5714224 1619296 5717232 +1620272 5714120 1619296 5717232 1620344 5714224 1620160 5713848 +1620272 5714120 1619864 5714184 1619296 5717232 1620344 5714224 +1620272 5714120 1619864 5714184 1620344 5714224 1620160 5713848 +1620272 5714120 1620160 5713848 1619864 5714184 1620344 5714224 +1619864 5714184 1619280 5717232 1619296 5717232 1620344 5714224 +1619296 5717232 1619328 5717256 1620344 5714224 1619864 5714184 +1627280 5719664 1620512 5714368 1626912 5719928 1627232 5719704 +1620344 5714224 1620512 5714368 1627280 5719664 1627312 5719640 +1620344 5714224 1620512 5714368 1627312 5719640 1627336 5719640 +1620512 5714368 1627280 5719664 1627312 5719640 1627336 5719640 +1620344 5714224 1626912 5719928 1620512 5714368 1627336 5719640 +1620512 5714368 1626912 5719928 1627280 5719664 1627312 5719640 +1626912 5719928 1620512 5714368 1620344 5714224 1626864 5719976 +1620512 5714368 1627336 5719640 1620344 5714224 1626864 5719976 +1620344 5714224 1619392 5717424 1626864 5719976 1620512 5714368 +1619392 5717424 1619392 5717504 1626864 5719976 1620512 5714368 +1620344 5714224 1619360 5717312 1619392 5717424 1620512 5714368 +1620344 5714224 1619328 5717256 1619360 5717312 1620512 5714368 +1620344 5714224 1619296 5717232 1619328 5717256 1620512 5714368 +1619328 5717256 1619360 5717312 1620512 5714368 1619296 5717232 +1619360 5717312 1619392 5717424 1620512 5714368 1619328 5717256 +1620344 5714224 1619296 5717232 1620512 5714368 1627336 5719640 +1626864 5719976 1626912 5719928 1620512 5714368 1619392 5717424 +1619392 5717424 1626864 5719976 1620512 5714368 1619360 5717312 +1626912 5719928 1627280 5719664 1620512 5714368 1626864 5719976 +1620344 5714224 1620512 5714368 1627336 5719640 1620160 5713848 +1627336 5719640 1620104 5713768 1620160 5713848 1620512 5714368 +1620344 5714224 1620512 5714368 1620160 5713848 1620272 5714120 +1620512 5714368 1627312 5719640 1627336 5719640 1620160 5713848 +1620344 5714224 1619296 5717232 1620512 5714368 1620272 5714120 +1620512 5714368 1627336 5719640 1620160 5713848 1620272 5714120 +1620344 5714224 1619864 5714184 1619296 5717232 1620512 5714368 +1619296 5717232 1619328 5717256 1620512 5714368 1619864 5714184 +1620344 5714224 1619864 5714184 1620512 5714368 1620272 5714120 +1619864 5714184 1619280 5717232 1619296 5717232 1620512 5714368 +1620344 5714224 1620272 5714120 1619864 5714184 1620512 5714368 +1626864 5719976 1620552 5714440 1619392 5717424 1619392 5717504 +1620512 5714368 1620552 5714440 1626864 5719976 1626912 5719928 +1619392 5717424 1620552 5714440 1620512 5714368 1619360 5717312 +1620512 5714368 1619328 5717256 1619360 5717312 1620552 5714440 +1620512 5714368 1619296 5717232 1619328 5717256 1620552 5714440 +1620512 5714368 1619864 5714184 1619296 5717232 1620552 5714440 +1619296 5717232 1619328 5717256 1620552 5714440 1619864 5714184 +1619328 5717256 1619360 5717312 1620552 5714440 1619296 5717232 +1619360 5717312 1619392 5717424 1620552 5714440 1619328 5717256 +1619864 5714184 1619280 5717232 1619296 5717232 1620552 5714440 +1620512 5714368 1619864 5714184 1620552 5714440 1626912 5719928 +1620512 5714368 1620552 5714440 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620552 5714440 +1620512 5714368 1620552 5714440 1627280 5719664 1627312 5719640 +1620512 5714368 1620552 5714440 1627312 5719640 1627336 5719640 +1620512 5714368 1620552 5714440 1627336 5719640 1620160 5713848 +1620552 5714440 1627280 5719664 1627312 5719640 1627336 5719640 +1620552 5714440 1626864 5719976 1626912 5719928 1627280 5719664 +1620512 5714368 1619864 5714184 1620552 5714440 1627336 5719640 +1620552 5714440 1626912 5719928 1627280 5719664 1627312 5719640 +1620552 5714440 1619392 5717424 1626864 5719976 1626912 5719928 +1619392 5717424 1626864 5719976 1620552 5714440 1619360 5717312 +1620512 5714368 1620344 5714224 1619864 5714184 1620552 5714440 +1619864 5714184 1619296 5717232 1620552 5714440 1620344 5714224 +1620512 5714368 1620344 5714224 1620552 5714440 1627336 5719640 +1620344 5714224 1620272 5714120 1619864 5714184 1620552 5714440 +1626864 5719976 1620560 5714512 1619392 5717424 1619392 5717504 +1620552 5714440 1620560 5714512 1626864 5719976 1626912 5719928 +1620552 5714440 1620560 5714512 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620560 5714512 +1620552 5714440 1620560 5714512 1627280 5719664 1627312 5719640 +1620552 5714440 1620560 5714512 1627312 5719640 1627336 5719640 +1620560 5714512 1626912 5719928 1627280 5719664 1627312 5719640 +1620560 5714512 1626864 5719976 1626912 5719928 1627280 5719664 +1620552 5714440 1619392 5717424 1620560 5714512 1627312 5719640 +1619392 5717424 1620560 5714512 1620552 5714440 1619360 5717312 +1620552 5714440 1619328 5717256 1619360 5717312 1620560 5714512 +1620552 5714440 1619296 5717232 1619328 5717256 1620560 5714512 +1620552 5714440 1619864 5714184 1619296 5717232 1620560 5714512 +1620552 5714440 1620344 5714224 1619864 5714184 1620560 5714512 +1619864 5714184 1619296 5717232 1620560 5714512 1620344 5714224 +1619296 5717232 1619328 5717256 1620560 5714512 1619864 5714184 +1619328 5717256 1619360 5717312 1620560 5714512 1619296 5717232 +1619864 5714184 1619280 5717232 1619296 5717232 1620560 5714512 +1620560 5714512 1627312 5719640 1620552 5714440 1620344 5714224 +1619360 5717312 1619392 5717424 1620560 5714512 1619328 5717256 +1620560 5714512 1619392 5717424 1626864 5719976 1626912 5719928 +1619392 5717424 1626864 5719976 1620560 5714512 1619360 5717312 +1620344 5714224 1620272 5714120 1619864 5714184 1620560 5714512 +1620552 5714440 1620512 5714368 1620344 5714224 1620560 5714512 +1620344 5714224 1619864 5714184 1620560 5714512 1620512 5714368 +1620552 5714440 1620512 5714368 1620560 5714512 1627312 5719640 +1626864 5719976 1620520 5714728 1619392 5717424 1619392 5717504 +1626864 5719976 1620520 5714728 1619392 5717504 1620992 5722672 +1620560 5714512 1620520 5714728 1626864 5719976 1626912 5719928 +1620560 5714512 1620520 5714728 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620520 5714728 +1620560 5714512 1620520 5714728 1627280 5719664 1627312 5719640 +1620560 5714512 1620520 5714728 1627312 5719640 1620552 5714440 +1620520 5714728 1626912 5719928 1627280 5719664 1627312 5719640 +1620520 5714728 1626864 5719976 1626912 5719928 1627280 5719664 +1620560 5714512 1619392 5717424 1620520 5714728 1627312 5719640 +1619392 5717424 1620520 5714728 1620560 5714512 1619360 5717312 +1620560 5714512 1619328 5717256 1619360 5717312 1620520 5714728 +1620560 5714512 1619296 5717232 1619328 5717256 1620520 5714728 +1620560 5714512 1619864 5714184 1619296 5717232 1620520 5714728 +1620560 5714512 1620344 5714224 1619864 5714184 1620520 5714728 +1620560 5714512 1620512 5714368 1620344 5714224 1620520 5714728 +1619864 5714184 1619296 5717232 1620520 5714728 1620344 5714224 +1619296 5717232 1619328 5717256 1620520 5714728 1619864 5714184 +1619864 5714184 1619280 5717232 1619296 5717232 1620520 5714728 +1619864 5714184 1619280 5717232 1620520 5714728 1620344 5714224 +1619296 5717232 1619328 5717256 1620520 5714728 1619280 5717232 +1619328 5717256 1619360 5717312 1620520 5714728 1619296 5717232 +1620520 5714728 1627312 5719640 1620560 5714512 1620344 5714224 +1619360 5717312 1619392 5717424 1620520 5714728 1619328 5717256 +1626864 5719976 1626912 5719928 1620520 5714728 1619392 5717504 +1620520 5714728 1619360 5717312 1619392 5717424 1619392 5717504 +1619864 5714184 1618888 5717376 1619280 5717232 1620520 5714728 +1620344 5714224 1620272 5714120 1619864 5714184 1620520 5714728 +1619864 5714184 1620456 5714784 1620520 5714728 1620344 5714224 +1620520 5714728 1620560 5714512 1620344 5714224 1620456 5714784 +1620560 5714512 1620512 5714368 1620344 5714224 1620456 5714784 +1620560 5714512 1620512 5714368 1620456 5714784 1620520 5714728 +1620344 5714224 1619864 5714184 1620456 5714784 1620512 5714368 +1620520 5714728 1620456 5714784 1619280 5717232 1619296 5717232 +1620520 5714728 1620456 5714784 1619296 5717232 1619328 5717256 +1620456 5714784 1619280 5717232 1619296 5717232 1619328 5717256 +1620520 5714728 1620456 5714784 1619328 5717256 1619360 5717312 +1620456 5714784 1619296 5717232 1619328 5717256 1619360 5717312 +1620520 5714728 1620456 5714784 1619360 5717312 1619392 5717424 +1620456 5714784 1619328 5717256 1619360 5717312 1619392 5717424 +1620456 5714784 1619392 5717424 1620520 5714728 1620560 5714512 +1620520 5714728 1620456 5714784 1619392 5717424 1619392 5717504 +1620456 5714784 1619864 5714184 1619280 5717232 1619296 5717232 +1619864 5714184 1619280 5717232 1620456 5714784 1620344 5714224 +1619280 5717232 1620456 5714784 1619864 5714184 1618888 5717376 +1619864 5714184 1620456 5714784 1620344 5714224 1620272 5714120 +1620560 5714512 1620552 5714440 1620512 5714368 1620456 5714784 +1620456 5714784 1620424 5714784 1619280 5717232 1619296 5717232 +1620456 5714784 1620424 5714784 1619296 5717232 1619328 5717256 +1620456 5714784 1620424 5714784 1619328 5717256 1619360 5717312 +1620424 5714784 1619280 5717232 1619296 5717232 1619328 5717256 +1620456 5714784 1619864 5714184 1620424 5714784 1619328 5717256 +1619864 5714184 1620424 5714784 1620456 5714784 1620344 5714224 +1620456 5714784 1620512 5714368 1620344 5714224 1620424 5714784 +1620456 5714784 1620560 5714512 1620512 5714368 1620424 5714784 +1620456 5714784 1620520 5714728 1620560 5714512 1620424 5714784 +1620560 5714512 1620512 5714368 1620424 5714784 1620520 5714728 +1620512 5714368 1620344 5714224 1620424 5714784 1620560 5714512 +1620424 5714784 1619328 5717256 1620456 5714784 1620520 5714728 +1620344 5714224 1619864 5714184 1620424 5714784 1620512 5714368 +1620424 5714784 1619864 5714184 1619280 5717232 1619296 5717232 +1619864 5714184 1619280 5717232 1620424 5714784 1620344 5714224 +1619280 5717232 1620424 5714784 1619864 5714184 1618888 5717376 +1619864 5714184 1620424 5714784 1620344 5714224 1620272 5714120 +1620560 5714512 1620552 5714440 1620512 5714368 1620424 5714784 +1620424 5714784 1620384 5714776 1619280 5717232 1619296 5717232 +1620424 5714784 1620384 5714776 1619296 5717232 1619328 5717256 +1620424 5714784 1619864 5714184 1620384 5714776 1619296 5717232 +1619864 5714184 1620384 5714776 1620424 5714784 1620344 5714224 +1620424 5714784 1620512 5714368 1620344 5714224 1620384 5714776 +1620424 5714784 1620560 5714512 1620512 5714368 1620384 5714776 +1620424 5714784 1620520 5714728 1620560 5714512 1620384 5714776 +1620424 5714784 1620456 5714784 1620520 5714728 1620384 5714776 +1620560 5714512 1620512 5714368 1620384 5714776 1620520 5714728 +1620512 5714368 1620344 5714224 1620384 5714776 1620560 5714512 +1620384 5714776 1619296 5717232 1620424 5714784 1620520 5714728 +1620344 5714224 1619864 5714184 1620384 5714776 1620512 5714368 +1620384 5714776 1619864 5714184 1619280 5717232 1619296 5717232 +1619864 5714184 1619280 5717232 1620384 5714776 1620344 5714224 +1619280 5717232 1620384 5714776 1619864 5714184 1618888 5717376 +1619864 5714184 1620384 5714776 1620344 5714224 1620272 5714120 +1620560 5714512 1620552 5714440 1620512 5714368 1620384 5714776 +1620384 5714776 1620352 5714744 1619280 5717232 1619296 5717232 +1620384 5714776 1620352 5714744 1619296 5717232 1620424 5714784 +1620384 5714776 1619864 5714184 1620352 5714744 1619296 5717232 +1619864 5714184 1620352 5714744 1620384 5714776 1620344 5714224 +1620384 5714776 1620512 5714368 1620344 5714224 1620352 5714744 +1620384 5714776 1620560 5714512 1620512 5714368 1620352 5714744 +1620384 5714776 1620520 5714728 1620560 5714512 1620352 5714744 +1620384 5714776 1620424 5714784 1620520 5714728 1620352 5714744 +1620424 5714784 1620456 5714784 1620520 5714728 1620352 5714744 +1620520 5714728 1620560 5714512 1620352 5714744 1620424 5714784 +1620560 5714512 1620512 5714368 1620352 5714744 1620520 5714728 +1620512 5714368 1620344 5714224 1620352 5714744 1620560 5714512 +1620352 5714744 1619296 5717232 1620384 5714776 1620424 5714784 +1620344 5714224 1619864 5714184 1620352 5714744 1620512 5714368 +1620352 5714744 1619864 5714184 1619280 5717232 1619296 5717232 +1619864 5714184 1619280 5717232 1620352 5714744 1620344 5714224 +1619280 5717232 1620352 5714744 1619864 5714184 1618888 5717376 +1619864 5714184 1620352 5714744 1620344 5714224 1620272 5714120 +1620560 5714512 1620552 5714440 1620512 5714368 1620352 5714744 +1620344 5714224 1620256 5714592 1620352 5714744 1620512 5714368 +1620352 5714744 1620560 5714512 1620512 5714368 1620256 5714592 +1620352 5714744 1620520 5714728 1620560 5714512 1620256 5714592 +1620512 5714368 1620344 5714224 1620256 5714592 1620560 5714512 +1620256 5714592 1619864 5714184 1620352 5714744 1620560 5714512 +1620352 5714744 1620256 5714592 1619864 5714184 1619280 5717232 +1620352 5714744 1620256 5714592 1619280 5717232 1619296 5717232 +1620352 5714744 1620560 5714512 1620256 5714592 1619280 5717232 +1620256 5714592 1620344 5714224 1619864 5714184 1619280 5717232 +1620344 5714224 1619864 5714184 1620256 5714592 1620512 5714368 +1619864 5714184 1618888 5717376 1619280 5717232 1620256 5714592 +1619864 5714184 1620256 5714592 1620344 5714224 1620272 5714120 +1620560 5714512 1620552 5714440 1620512 5714368 1620256 5714592 +1620560 5714512 1620552 5714440 1620256 5714592 1620352 5714744 +1620512 5714368 1620344 5714224 1620256 5714592 1620552 5714440 +1620256 5714592 1620144 5714440 1619864 5714184 1619280 5717232 +1620344 5714224 1620144 5714440 1620256 5714592 1620512 5714368 +1620256 5714592 1620552 5714440 1620512 5714368 1620144 5714440 +1620144 5714440 1619864 5714184 1620256 5714592 1620512 5714368 +1620344 5714224 1619864 5714184 1620144 5714440 1620512 5714368 +1619864 5714184 1620144 5714440 1620344 5714224 1620272 5714120 +1619864 5714184 1620144 5714440 1620272 5714120 1620160 5713848 +1619864 5714184 1620256 5714592 1620144 5714440 1620272 5714120 +1620144 5714440 1620512 5714368 1620344 5714224 1620272 5714120 +1620256 5714592 1619920 5714264 1619280 5717232 1620352 5714744 +1619280 5717232 1619296 5717232 1620352 5714744 1619920 5714264 +1619864 5714184 1619920 5714264 1620256 5714592 1620144 5714440 +1619864 5714184 1619920 5714264 1620144 5714440 1620272 5714120 +1619864 5714184 1619920 5714264 1620272 5714120 1620160 5713848 +1619920 5714264 1620256 5714592 1620144 5714440 1620272 5714120 +1620256 5714592 1620144 5714440 1619920 5714264 1620352 5714744 +1619920 5714264 1619864 5714184 1619280 5717232 1620352 5714744 +1619864 5714184 1619280 5717232 1619920 5714264 1620272 5714120 +1619280 5717232 1619920 5714264 1619864 5714184 1618888 5717376 +1619280 5717232 1620352 5714744 1619920 5714264 1618888 5717376 +1619920 5714264 1620272 5714120 1619864 5714184 1618888 5717376 +1620144 5714440 1620344 5714224 1620272 5714120 1619920 5714264 +1619280 5717232 1619920 5714264 1618888 5717376 1619248 5717248 +1619864 5714184 1619792 5714008 1618888 5717376 1619920 5714264 +1619656 5713744 1617312 5711816 1611512 5715528 1611528 5715552 +1619656 5713744 1617312 5711816 1611528 5715552 1618856 5717400 +1617312 5711816 1611512 5715528 1611528 5715552 1618856 5717400 +1619656 5713744 1617312 5711816 1618856 5717400 1618888 5717376 +1611512 5715528 1617312 5711816 1613840 5708448 1613784 5708464 +1611512 5715528 1617312 5711816 1613784 5708464 1611464 5715504 +1617312 5711816 1613784 5708464 1611512 5715528 1611528 5715552 +1617312 5711816 1619656 5713744 1613840 5708448 1613784 5708464 +1611528 5715552 1618824 5717440 1618856 5717400 1617312 5711816 +1611528 5715552 1618824 5717440 1617312 5711816 1611512 5715528 +1618856 5717400 1619656 5713744 1617312 5711816 1618824 5717440 +1611528 5715552 1618816 5717464 1618824 5717440 1617312 5711816 +1619656 5713744 1613840 5708448 1617312 5711816 1618856 5717400 +1613840 5708448 1617312 5711816 1619656 5713744 1614576 5708144 +1613840 5708448 1617312 5711816 1614576 5708144 1613896 5708408 +1613840 5708448 1613784 5708464 1617312 5711816 1614576 5708144 +1617312 5711816 1618856 5717400 1619656 5713744 1614576 5708144 +1619656 5713744 1619688 5713672 1614576 5708144 1617312 5711816 +1619688 5713672 1614648 5708080 1614576 5708144 1617312 5711816 +1619688 5713672 1614664 5708048 1614648 5708080 1617312 5711816 +1614648 5708080 1614576 5708144 1617312 5711816 1614664 5708048 +1619688 5713672 1614688 5707952 1614664 5708048 1617312 5711816 +1619688 5713672 1619824 5713672 1614688 5707952 1617312 5711816 +1619824 5713672 1619952 5713672 1614688 5707952 1617312 5711816 +1619824 5713672 1619952 5713672 1617312 5711816 1619688 5713672 +1614664 5708048 1614648 5708080 1617312 5711816 1614688 5707952 +1614688 5707952 1614664 5708048 1617312 5711816 1619952 5713672 +1619952 5713672 1614696 5707848 1614688 5707952 1617312 5711816 +1619952 5713672 1614696 5707848 1617312 5711816 1619824 5713672 +1614688 5707952 1614664 5708048 1617312 5711816 1614696 5707848 +1619952 5713672 1614704 5707744 1614696 5707848 1617312 5711816 +1619952 5713672 1614696 5707712 1614704 5707744 1617312 5711816 +1619952 5713672 1620040 5713712 1614696 5707712 1617312 5711816 +1614696 5707712 1614704 5707744 1617312 5711816 1620040 5713712 +1620040 5713712 1613592 5703136 1614696 5707712 1617312 5711816 +1619952 5713672 1620040 5713712 1617312 5711816 1619824 5713672 +1614704 5707744 1614696 5707848 1617312 5711816 1614696 5707712 +1614696 5707848 1614688 5707952 1617312 5711816 1614704 5707744 +1619656 5713744 1619688 5713672 1617312 5711816 1618856 5717400 +1619688 5713672 1619824 5713672 1617312 5711816 1619656 5713744 +1614576 5708144 1613840 5708448 1617312 5711816 1614648 5708080 +1611512 5715528 1617184 5711760 1613784 5708464 1611464 5715504 +1613784 5708464 1617184 5711760 1617312 5711816 1613840 5708448 +1617312 5711816 1617184 5711760 1611512 5715528 1611528 5715552 +1617312 5711816 1617184 5711760 1611528 5715552 1618824 5717440 +1617184 5711760 1611512 5715528 1611528 5715552 1618824 5717440 +1617312 5711816 1614576 5708144 1613840 5708448 1617184 5711760 +1614576 5708144 1613896 5708408 1613840 5708448 1617184 5711760 +1613840 5708448 1613784 5708464 1617184 5711760 1614576 5708144 +1611528 5715552 1618816 5717464 1618824 5717440 1617184 5711760 +1617312 5711816 1617184 5711760 1618824 5717440 1618856 5717400 +1617184 5711760 1618824 5717440 1617312 5711816 1614576 5708144 +1617184 5711760 1613784 5708464 1611512 5715528 1611528 5715552 +1613784 5708464 1611512 5715528 1617184 5711760 1613840 5708448 +1617312 5711816 1614648 5708080 1614576 5708144 1617184 5711760 +1614576 5708144 1613840 5708448 1617184 5711760 1614648 5708080 +1617312 5711816 1614664 5708048 1614648 5708080 1617184 5711760 +1617312 5711816 1614688 5707952 1614664 5708048 1617184 5711760 +1614664 5708048 1614648 5708080 1617184 5711760 1614688 5707952 +1617312 5711816 1614696 5707848 1614688 5707952 1617184 5711760 +1614688 5707952 1614664 5708048 1617184 5711760 1614696 5707848 +1617312 5711816 1614704 5707744 1614696 5707848 1617184 5711760 +1614696 5707848 1614688 5707952 1617184 5711760 1614704 5707744 +1617312 5711816 1614696 5707712 1614704 5707744 1617184 5711760 +1617312 5711816 1614704 5707744 1617184 5711760 1618824 5717440 +1614648 5708080 1614576 5708144 1617184 5711760 1614664 5708048 +1611512 5715528 1617000 5711648 1613784 5708464 1611464 5715504 +1617184 5711760 1617000 5711648 1611512 5715528 1611528 5715552 +1617184 5711760 1617000 5711648 1611528 5715552 1618824 5717440 +1617184 5711760 1613784 5708464 1617000 5711648 1611528 5715552 +1613784 5708464 1617000 5711648 1617184 5711760 1613840 5708448 +1617184 5711760 1614576 5708144 1613840 5708448 1617000 5711648 +1614576 5708144 1613896 5708408 1613840 5708448 1617000 5711648 +1617184 5711760 1614648 5708080 1614576 5708144 1617000 5711648 +1614576 5708144 1613840 5708448 1617000 5711648 1614648 5708080 +1617000 5711648 1611528 5715552 1617184 5711760 1614648 5708080 +1613840 5708448 1613784 5708464 1617000 5711648 1614576 5708144 +1617000 5711648 1613784 5708464 1611512 5715528 1611528 5715552 +1613784 5708464 1611512 5715528 1617000 5711648 1613840 5708448 +1617184 5711760 1614664 5708048 1614648 5708080 1617000 5711648 +1614648 5708080 1614576 5708144 1617000 5711648 1614664 5708048 +1617184 5711760 1614688 5707952 1614664 5708048 1617000 5711648 +1617184 5711760 1614696 5707848 1614688 5707952 1617000 5711648 +1614688 5707952 1614664 5708048 1617000 5711648 1614696 5707848 +1617184 5711760 1614704 5707744 1614696 5707848 1617000 5711648 +1614696 5707848 1614688 5707952 1617000 5711648 1614704 5707744 +1617184 5711760 1617312 5711816 1614704 5707744 1617000 5711648 +1614704 5707744 1614696 5707848 1617000 5711648 1617312 5711816 +1617312 5711816 1614696 5707712 1614704 5707744 1617000 5711648 +1617184 5711760 1617312 5711816 1617000 5711648 1611528 5715552 +1614664 5708048 1614648 5708080 1617000 5711648 1614688 5707952 +1611512 5715528 1616808 5711600 1613784 5708464 1611464 5715504 +1613784 5708464 1610752 5708648 1611464 5715504 1616808 5711600 +1617000 5711648 1616808 5711600 1611512 5715528 1611528 5715552 +1617000 5711648 1616808 5711600 1611528 5715552 1617184 5711760 +1611528 5715552 1618824 5717440 1617184 5711760 1616808 5711600 +1616808 5711600 1611512 5715528 1611528 5715552 1617184 5711760 +1617000 5711648 1613784 5708464 1616808 5711600 1617184 5711760 +1613784 5708464 1616808 5711600 1617000 5711648 1613840 5708448 +1617000 5711648 1614576 5708144 1613840 5708448 1616808 5711600 +1614576 5708144 1613896 5708408 1613840 5708448 1616808 5711600 +1617000 5711648 1614648 5708080 1614576 5708144 1616808 5711600 +1617000 5711648 1614664 5708048 1614648 5708080 1616808 5711600 +1614648 5708080 1614576 5708144 1616808 5711600 1614664 5708048 +1614576 5708144 1613840 5708448 1616808 5711600 1614648 5708080 +1616808 5711600 1617184 5711760 1617000 5711648 1614664 5708048 +1613840 5708448 1613784 5708464 1616808 5711600 1614576 5708144 +1611512 5715528 1611528 5715552 1616808 5711600 1611464 5715504 +1616808 5711600 1613840 5708448 1613784 5708464 1611464 5715504 +1617000 5711648 1614688 5707952 1614664 5708048 1616808 5711600 +1614664 5708048 1614648 5708080 1616808 5711600 1614688 5707952 +1617000 5711648 1614696 5707848 1614688 5707952 1616808 5711600 +1617000 5711648 1614688 5707952 1616808 5711600 1617184 5711760 +1611464 5715504 1616736 5711544 1613784 5708464 1610752 5708648 +1616808 5711600 1616736 5711544 1611464 5715504 1611512 5715528 +1616808 5711600 1616736 5711544 1611512 5715528 1611528 5715552 +1616736 5711544 1611464 5715504 1611512 5715528 1611528 5715552 +1616808 5711600 1616736 5711544 1611528 5715552 1617184 5711760 +1616808 5711600 1613784 5708464 1616736 5711544 1611528 5715552 +1613784 5708464 1616736 5711544 1616808 5711600 1613840 5708448 +1616808 5711600 1614576 5708144 1613840 5708448 1616736 5711544 +1614576 5708144 1613896 5708408 1613840 5708448 1616736 5711544 +1616808 5711600 1614648 5708080 1614576 5708144 1616736 5711544 +1616808 5711600 1614664 5708048 1614648 5708080 1616736 5711544 +1616808 5711600 1614688 5707952 1614664 5708048 1616736 5711544 +1614664 5708048 1614648 5708080 1616736 5711544 1614688 5707952 +1614648 5708080 1614576 5708144 1616736 5711544 1614664 5708048 +1614576 5708144 1613840 5708448 1616736 5711544 1614648 5708080 +1616736 5711544 1611528 5715552 1616808 5711600 1614688 5707952 +1613840 5708448 1613784 5708464 1616736 5711544 1614576 5708144 +1616736 5711544 1613784 5708464 1611464 5715504 1611512 5715528 +1613784 5708464 1611464 5715504 1616736 5711544 1613840 5708448 +1616808 5711600 1617000 5711648 1614688 5707952 1616736 5711544 +1614688 5707952 1614664 5708048 1616736 5711544 1617000 5711648 +1617000 5711648 1614696 5707848 1614688 5707952 1616736 5711544 +1616808 5711600 1617000 5711648 1616736 5711544 1611528 5715552 +1611464 5715504 1616712 5711552 1613784 5708464 1610752 5708648 +1616736 5711544 1616712 5711552 1611464 5715504 1611512 5715528 +1616736 5711544 1616712 5711552 1611512 5715528 1611528 5715552 +1616736 5711544 1616712 5711552 1611528 5715552 1616808 5711600 +1616712 5711552 1611512 5715528 1611528 5715552 1616808 5711600 +1611528 5715552 1617184 5711760 1616808 5711600 1616712 5711552 +1616712 5711552 1611464 5715504 1611512 5715528 1611528 5715552 +1616736 5711544 1613784 5708464 1616712 5711552 1616808 5711600 +1613784 5708464 1616712 5711552 1616736 5711544 1613840 5708448 +1616736 5711544 1614576 5708144 1613840 5708448 1616712 5711552 +1614576 5708144 1613896 5708408 1613840 5708448 1616712 5711552 +1616736 5711544 1614648 5708080 1614576 5708144 1616712 5711552 +1616736 5711544 1614664 5708048 1614648 5708080 1616712 5711552 +1614576 5708144 1613840 5708448 1616712 5711552 1614648 5708080 +1616712 5711552 1616808 5711600 1616736 5711544 1614648 5708080 +1613840 5708448 1613784 5708464 1616712 5711552 1614576 5708144 +1616712 5711552 1613784 5708464 1611464 5715504 1611512 5715528 +1613784 5708464 1611464 5715504 1616712 5711552 1613840 5708448 +1614648 5708080 1616688 5711480 1616736 5711544 1614664 5708048 +1616736 5711544 1614688 5707952 1614664 5708048 1616688 5711480 +1616736 5711544 1617000 5711648 1614688 5707952 1616688 5711480 +1614688 5707952 1614664 5708048 1616688 5711480 1617000 5711648 +1617000 5711648 1614696 5707848 1614688 5707952 1616688 5711480 +1617000 5711648 1614704 5707744 1614696 5707848 1616688 5711480 +1614688 5707952 1614664 5708048 1616688 5711480 1614696 5707848 +1617000 5711648 1614704 5707744 1616688 5711480 1616736 5711544 +1614696 5707848 1614688 5707952 1616688 5711480 1614704 5707744 +1617000 5711648 1617312 5711816 1614704 5707744 1616688 5711480 +1614664 5708048 1614648 5708080 1616688 5711480 1614688 5707952 +1616712 5711552 1616688 5711480 1614648 5708080 1614576 5708144 +1616712 5711552 1616688 5711480 1614576 5708144 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1616688 5711480 +1616688 5711480 1614648 5708080 1614576 5708144 1613840 5708448 +1616712 5711552 1616688 5711480 1613840 5708448 1613784 5708464 +1616688 5711480 1614576 5708144 1613840 5708448 1613784 5708464 +1616712 5711552 1616736 5711544 1616688 5711480 1613784 5708464 +1616712 5711552 1616688 5711480 1613784 5708464 1611464 5715504 +1613784 5708464 1610752 5708648 1611464 5715504 1616688 5711480 +1616688 5711480 1613840 5708448 1613784 5708464 1611464 5715504 +1616712 5711552 1616688 5711480 1611464 5715504 1611512 5715528 +1616712 5711552 1616688 5711480 1611512 5715528 1611528 5715552 +1616712 5711552 1616736 5711544 1616688 5711480 1611512 5715528 +1616688 5711480 1613784 5708464 1611464 5715504 1611512 5715528 +1614648 5708080 1614576 5708144 1616688 5711480 1614664 5708048 +1616688 5711480 1616712 5711552 1616736 5711544 1617000 5711648 +1616736 5711544 1616808 5711600 1617000 5711648 1616688 5711480 +1617000 5711648 1614704 5707744 1616688 5711480 1616808 5711600 +1616736 5711544 1616808 5711600 1616688 5711480 1616712 5711552 +1616688 5711480 1616688 5711408 1614704 5707744 1614696 5707848 +1617000 5711648 1616688 5711408 1616688 5711480 1616808 5711600 +1616688 5711480 1616688 5711408 1614696 5707848 1614688 5707952 +1616688 5711408 1614704 5707744 1614696 5707848 1614688 5707952 +1616688 5711480 1616688 5711408 1614688 5707952 1614664 5708048 +1616688 5711408 1614696 5707848 1614688 5707952 1614664 5708048 +1614704 5707744 1616688 5711408 1617000 5711648 1617312 5711816 +1614704 5707744 1616688 5711408 1617312 5711816 1614696 5707712 +1617000 5711648 1617184 5711760 1617312 5711816 1616688 5711408 +1616688 5711480 1616688 5711408 1614664 5708048 1614648 5708080 +1616688 5711408 1614688 5707952 1614664 5708048 1614648 5708080 +1616688 5711480 1616688 5711408 1614648 5708080 1614576 5708144 +1616688 5711408 1614664 5708048 1614648 5708080 1614576 5708144 +1616688 5711480 1616688 5711408 1614576 5708144 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1616688 5711408 +1616688 5711480 1616688 5711408 1613840 5708448 1613784 5708464 +1616688 5711408 1614576 5708144 1613840 5708448 1613784 5708464 +1616688 5711480 1616688 5711408 1613784 5708464 1611464 5715504 +1616688 5711408 1614648 5708080 1614576 5708144 1613840 5708448 +1616688 5711480 1616808 5711600 1616688 5711408 1613784 5708464 +1616688 5711408 1617312 5711816 1614704 5707744 1614696 5707848 +1617000 5711648 1617312 5711816 1616688 5711408 1616808 5711600 +1616688 5711480 1616736 5711544 1616808 5711600 1616688 5711408 +1616808 5711600 1617000 5711648 1616688 5711408 1616736 5711544 +1616688 5711480 1616736 5711544 1616688 5711408 1613784 5708464 +1616688 5711480 1616712 5711552 1616736 5711544 1616688 5711408 +1617312 5711816 1616728 5711296 1616688 5711408 1617000 5711648 +1614704 5707744 1616728 5711296 1617312 5711816 1614696 5707712 +1617312 5711816 1616728 5711296 1617000 5711648 1617184 5711760 +1616728 5711296 1616688 5711408 1617000 5711648 1617184 5711760 +1616688 5711408 1616728 5711296 1614704 5707744 1614696 5707848 +1616688 5711408 1616728 5711296 1614696 5707848 1614688 5707952 +1616688 5711408 1616728 5711296 1614688 5707952 1614664 5708048 +1616728 5711296 1614696 5707848 1614688 5707952 1614664 5708048 +1616688 5711408 1616728 5711296 1614664 5708048 1614648 5708080 +1616728 5711296 1614688 5707952 1614664 5708048 1614648 5708080 +1616688 5711408 1616728 5711296 1614648 5708080 1614576 5708144 +1616728 5711296 1614664 5708048 1614648 5708080 1614576 5708144 +1616688 5711408 1616728 5711296 1614576 5708144 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1616728 5711296 +1616728 5711296 1614648 5708080 1614576 5708144 1613840 5708448 +1616688 5711408 1616728 5711296 1613840 5708448 1613784 5708464 +1616728 5711296 1614704 5707744 1614696 5707848 1614688 5707952 +1616728 5711296 1613840 5708448 1616688 5711408 1617000 5711648 +1616688 5711408 1616808 5711600 1617000 5711648 1616728 5711296 +1616688 5711408 1616736 5711544 1616808 5711600 1616728 5711296 +1617000 5711648 1617184 5711760 1616728 5711296 1616808 5711600 +1616688 5711408 1616736 5711544 1616728 5711296 1613840 5708448 +1616808 5711600 1617000 5711648 1616728 5711296 1616736 5711544 +1616728 5711296 1617312 5711816 1614704 5707744 1614696 5707848 +1617312 5711816 1614704 5707744 1616728 5711296 1617184 5711760 +1616688 5711408 1616688 5711480 1616736 5711544 1616728 5711296 +1614704 5707744 1616752 5711280 1617312 5711816 1614696 5707712 +1617312 5711816 1620040 5713712 1614696 5707712 1616752 5711280 +1616752 5711280 1616728 5711296 1617312 5711816 1614696 5707712 +1616728 5711296 1616752 5711280 1614704 5707744 1614696 5707848 +1616728 5711296 1616752 5711280 1614696 5707848 1614688 5707952 +1616728 5711296 1616752 5711280 1614688 5707952 1614664 5708048 +1616728 5711296 1616752 5711280 1614664 5708048 1614648 5708080 +1616752 5711280 1614688 5707952 1614664 5708048 1614648 5708080 +1616728 5711296 1616752 5711280 1614648 5708080 1614576 5708144 +1616752 5711280 1614664 5708048 1614648 5708080 1614576 5708144 +1616728 5711296 1616752 5711280 1614576 5708144 1613840 5708448 +1616752 5711280 1614696 5707848 1614688 5707952 1614664 5708048 +1616752 5711280 1614704 5707744 1614696 5707848 1614688 5707952 +1617312 5711816 1616752 5711280 1616728 5711296 1617184 5711760 +1617312 5711816 1614696 5707712 1616752 5711280 1617184 5711760 +1616728 5711296 1617000 5711648 1617184 5711760 1616752 5711280 +1616728 5711296 1616808 5711600 1617000 5711648 1616752 5711280 +1617000 5711648 1617184 5711760 1616752 5711280 1616808 5711600 +1616728 5711296 1616736 5711544 1616808 5711600 1616752 5711280 +1616728 5711296 1616688 5711408 1616736 5711544 1616752 5711280 +1616808 5711600 1617000 5711648 1616752 5711280 1616736 5711544 +1616736 5711544 1616808 5711600 1616752 5711280 1616688 5711408 +1617184 5711760 1617312 5711816 1616752 5711280 1617000 5711648 +1614704 5707744 1614696 5707848 1616752 5711280 1614696 5707712 +1616728 5711296 1616688 5711408 1616752 5711280 1614576 5708144 +1616688 5711408 1616688 5711480 1616736 5711544 1616752 5711280 +1614696 5707712 1616744 5711240 1617312 5711816 1620040 5713712 +1617312 5711816 1616744 5711240 1616752 5711280 1617184 5711760 +1617312 5711816 1614696 5707712 1616744 5711240 1617184 5711760 +1616752 5711280 1616744 5711240 1614696 5707712 1614704 5707744 +1616744 5711240 1617312 5711816 1614696 5707712 1614704 5707744 +1616752 5711280 1617000 5711648 1617184 5711760 1616744 5711240 +1617184 5711760 1617312 5711816 1616744 5711240 1617000 5711648 +1616752 5711280 1616808 5711600 1617000 5711648 1616744 5711240 +1616752 5711280 1616744 5711240 1614704 5707744 1614696 5707848 +1616744 5711240 1614696 5707712 1614704 5707744 1614696 5707848 +1616752 5711280 1616744 5711240 1614696 5707848 1614688 5707952 +1616752 5711280 1616744 5711240 1614688 5707952 1614664 5708048 +1616752 5711280 1616744 5711240 1614664 5708048 1614648 5708080 +1616752 5711280 1616744 5711240 1614648 5708080 1614576 5708144 +1616744 5711240 1614664 5708048 1614648 5708080 1614576 5708144 +1616752 5711280 1616744 5711240 1614576 5708144 1616728 5711296 +1616744 5711240 1614648 5708080 1614576 5708144 1616728 5711296 +1614576 5708144 1613840 5708448 1616728 5711296 1616744 5711240 +1614576 5708144 1613896 5708408 1613840 5708448 1616744 5711240 +1616728 5711296 1616752 5711280 1616744 5711240 1613840 5708448 +1614576 5708144 1613840 5708448 1616744 5711240 1614648 5708080 +1613840 5708448 1616688 5711408 1616728 5711296 1616744 5711240 +1616728 5711296 1616752 5711280 1616744 5711240 1616688 5711408 +1613840 5708448 1616688 5711408 1616744 5711240 1614576 5708144 +1613840 5708448 1613784 5708464 1616688 5711408 1616744 5711240 +1616744 5711240 1614688 5707952 1614664 5708048 1614648 5708080 +1616744 5711240 1614696 5707848 1614688 5707952 1614664 5708048 +1616744 5711240 1614704 5707744 1614696 5707848 1614688 5707952 +1616744 5711240 1616728 5711296 1616752 5711280 1617000 5711648 +1613840 5708448 1616712 5711216 1616744 5711240 1614576 5708144 +1616712 5711216 1616688 5711408 1616744 5711240 1614576 5708144 +1613840 5708448 1616688 5711408 1616712 5711216 1614576 5708144 +1613840 5708448 1616712 5711216 1614576 5708144 1613896 5708408 +1616744 5711240 1614648 5708080 1614576 5708144 1616712 5711216 +1616744 5711240 1614648 5708080 1616712 5711216 1616688 5711408 +1616744 5711240 1614664 5708048 1614648 5708080 1616712 5711216 +1616744 5711240 1614664 5708048 1616712 5711216 1616688 5711408 +1614648 5708080 1614576 5708144 1616712 5711216 1614664 5708048 +1614576 5708144 1613840 5708448 1616712 5711216 1614648 5708080 +1616688 5711408 1616712 5711216 1613840 5708448 1613784 5708464 +1616688 5711408 1616744 5711240 1616712 5711216 1613784 5708464 +1616712 5711216 1614576 5708144 1613840 5708448 1613784 5708464 +1616688 5711408 1616712 5711216 1613784 5708464 1616688 5711480 +1616744 5711240 1616712 5711216 1616688 5711408 1616728 5711296 +1616744 5711240 1614664 5708048 1616712 5711216 1616728 5711296 +1616712 5711216 1613784 5708464 1616688 5711408 1616728 5711296 +1616744 5711240 1616712 5711216 1616728 5711296 1616752 5711280 +1616744 5711240 1614688 5707952 1614664 5708048 1616712 5711216 +1616744 5711240 1614688 5707952 1616712 5711216 1616728 5711296 +1614664 5708048 1614648 5708080 1616712 5711216 1614688 5707952 +1616744 5711240 1614696 5707848 1614688 5707952 1616712 5711216 +1616744 5711240 1614696 5707848 1616712 5711216 1616728 5711296 +1614688 5707952 1614664 5708048 1616712 5711216 1614696 5707848 +1616744 5711240 1614704 5707744 1614696 5707848 1616712 5711216 +1616744 5711240 1614704 5707744 1616712 5711216 1616728 5711296 +1616744 5711240 1614696 5707712 1614704 5707744 1616712 5711216 +1614696 5707848 1614688 5707952 1616712 5711216 1614704 5707744 +1616712 5711216 1616656 5711232 1616688 5711408 1616728 5711296 +1616712 5711216 1613784 5708464 1616656 5711232 1616728 5711296 +1616656 5711232 1613784 5708464 1616688 5711408 1616728 5711296 +1613784 5708464 1616656 5711232 1616712 5711216 1613840 5708448 +1616656 5711232 1616728 5711296 1616712 5711216 1613840 5708448 +1616712 5711216 1614576 5708144 1613840 5708448 1616656 5711232 +1616712 5711216 1614576 5708144 1616656 5711232 1616728 5711296 +1613784 5708464 1616688 5711408 1616656 5711232 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1616656 5711232 +1616712 5711216 1614648 5708080 1614576 5708144 1616656 5711232 +1616712 5711216 1614648 5708080 1616656 5711232 1616728 5711296 +1614576 5708144 1613840 5708448 1616656 5711232 1614648 5708080 +1616712 5711216 1614664 5708048 1614648 5708080 1616656 5711232 +1613840 5708448 1613784 5708464 1616656 5711232 1614576 5708144 +1616688 5711408 1616656 5711232 1613784 5708464 1616688 5711480 +1616688 5711408 1616728 5711296 1616656 5711232 1616688 5711480 +1616656 5711232 1613840 5708448 1613784 5708464 1616688 5711480 +1613784 5708464 1611464 5715504 1616688 5711480 1616656 5711232 +1616712 5711216 1616656 5711232 1616728 5711296 1616744 5711240 +1613784 5708464 1616456 5711216 1616656 5711232 1613840 5708448 +1616456 5711216 1616688 5711480 1616656 5711232 1613840 5708448 +1613784 5708464 1616688 5711480 1616456 5711216 1613840 5708448 +1616656 5711232 1614576 5708144 1613840 5708448 1616456 5711216 +1616656 5711232 1614648 5708080 1614576 5708144 1616456 5711216 +1616656 5711232 1614648 5708080 1616456 5711216 1616688 5711480 +1613840 5708448 1613784 5708464 1616456 5711216 1614576 5708144 +1614576 5708144 1613896 5708408 1613840 5708448 1616456 5711216 +1616656 5711232 1616712 5711216 1614648 5708080 1616456 5711216 +1614648 5708080 1614576 5708144 1616456 5711216 1616712 5711216 +1616656 5711232 1616712 5711216 1616456 5711216 1616688 5711480 +1616712 5711216 1614664 5708048 1614648 5708080 1616456 5711216 +1614576 5708144 1613840 5708448 1616456 5711216 1614648 5708080 +1616656 5711232 1616456 5711216 1616688 5711480 1616688 5711408 +1616656 5711232 1616456 5711216 1616688 5711408 1616728 5711296 +1616656 5711232 1616712 5711216 1616456 5711216 1616688 5711408 +1616456 5711216 1613784 5708464 1616688 5711480 1616688 5711408 +1616688 5711480 1616456 5711216 1613784 5708464 1611464 5715504 +1613784 5708464 1610752 5708648 1611464 5715504 1616456 5711216 +1616688 5711480 1616688 5711408 1616456 5711216 1611464 5715504 +1616456 5711216 1613840 5708448 1613784 5708464 1611464 5715504 +1616688 5711480 1616456 5711216 1611464 5715504 1611512 5715528 +1616688 5711480 1616688 5711408 1616456 5711216 1611512 5715528 +1616456 5711216 1613784 5708464 1611464 5715504 1611512 5715528 +1616688 5711480 1616456 5711216 1611512 5715528 1616712 5711552 +1616688 5711480 1616688 5711408 1616456 5711216 1616712 5711552 +1611512 5715528 1611528 5715552 1616712 5711552 1616456 5711216 +1616456 5711216 1611464 5715504 1611512 5715528 1616712 5711552 +1611464 5715504 1616328 5711160 1613784 5708464 1610752 5708648 +1613784 5708464 1616328 5711160 1616456 5711216 1613840 5708448 +1616456 5711216 1614576 5708144 1613840 5708448 1616328 5711160 +1616328 5711160 1611464 5715504 1616456 5711216 1614576 5708144 +1613840 5708448 1613784 5708464 1616328 5711160 1614576 5708144 +1613784 5708464 1611464 5715504 1616328 5711160 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1616328 5711160 +1616456 5711216 1614648 5708080 1614576 5708144 1616328 5711160 +1616456 5711216 1616712 5711216 1614648 5708080 1616328 5711160 +1614576 5708144 1613840 5708448 1616328 5711160 1614648 5708080 +1616456 5711216 1616712 5711216 1616328 5711160 1611464 5715504 +1616712 5711216 1614664 5708048 1614648 5708080 1616328 5711160 +1616712 5711216 1614664 5708048 1616328 5711160 1616456 5711216 +1616712 5711216 1614688 5707952 1614664 5708048 1616328 5711160 +1616456 5711216 1616656 5711232 1616712 5711216 1616328 5711160 +1614648 5708080 1614576 5708144 1616328 5711160 1614664 5708048 +1616456 5711216 1616328 5711160 1611464 5715504 1611512 5715528 +1616456 5711216 1616712 5711216 1616328 5711160 1611512 5715528 +1616328 5711160 1613784 5708464 1611464 5715504 1611512 5715528 +1616456 5711216 1616328 5711160 1611512 5715528 1616712 5711552 +1616456 5711216 1616712 5711216 1616328 5711160 1616712 5711552 +1611512 5715528 1611528 5715552 1616712 5711552 1616328 5711160 +1616328 5711160 1611464 5715504 1611512 5715528 1616712 5711552 +1616456 5711216 1616328 5711160 1616712 5711552 1616688 5711480 +1611464 5715504 1616264 5711104 1613784 5708464 1610752 5708648 +1616328 5711160 1616264 5711104 1611464 5715504 1611512 5715528 +1616328 5711160 1613784 5708464 1616264 5711104 1611512 5715528 +1613784 5708464 1616264 5711104 1616328 5711160 1613840 5708448 +1616328 5711160 1614576 5708144 1613840 5708448 1616264 5711104 +1616328 5711160 1614648 5708080 1614576 5708144 1616264 5711104 +1614576 5708144 1613840 5708448 1616264 5711104 1614648 5708080 +1616264 5711104 1611512 5715528 1616328 5711160 1614648 5708080 +1613840 5708448 1613784 5708464 1616264 5711104 1614576 5708144 +1616264 5711104 1613784 5708464 1611464 5715504 1611512 5715528 +1613784 5708464 1611464 5715504 1616264 5711104 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1616264 5711104 +1616328 5711160 1614664 5708048 1614648 5708080 1616264 5711104 +1614648 5708080 1614576 5708144 1616264 5711104 1614664 5708048 +1616328 5711160 1614664 5708048 1616264 5711104 1611512 5715528 +1616328 5711160 1616712 5711216 1614664 5708048 1616264 5711104 +1616328 5711160 1616456 5711216 1616712 5711216 1616264 5711104 +1616328 5711160 1616456 5711216 1616264 5711104 1611512 5715528 +1616712 5711216 1614688 5707952 1614664 5708048 1616264 5711104 +1616712 5711216 1614664 5708048 1616264 5711104 1616456 5711216 +1616456 5711216 1616656 5711232 1616712 5711216 1616264 5711104 +1614664 5708048 1614648 5708080 1616264 5711104 1616712 5711216 +1616328 5711160 1616264 5711104 1611512 5715528 1616712 5711552 +1614576 5708144 1616232 5711064 1616264 5711104 1614648 5708080 +1616264 5711104 1614664 5708048 1614648 5708080 1616232 5711064 +1614648 5708080 1614576 5708144 1616232 5711064 1614664 5708048 +1616264 5711104 1616232 5711064 1613840 5708448 1613784 5708464 +1616232 5711064 1613784 5708464 1616264 5711104 1614664 5708048 +1616264 5711104 1616232 5711064 1613784 5708464 1611464 5715504 +1613784 5708464 1610752 5708648 1611464 5715504 1616232 5711064 +1616232 5711064 1613840 5708448 1613784 5708464 1611464 5715504 +1616264 5711104 1616232 5711064 1611464 5715504 1611512 5715528 +1616264 5711104 1616232 5711064 1611512 5715528 1616328 5711160 +1616264 5711104 1614664 5708048 1616232 5711064 1611512 5715528 +1616232 5711064 1613784 5708464 1611464 5715504 1611512 5715528 +1616232 5711064 1614576 5708144 1613840 5708448 1613784 5708464 +1614576 5708144 1613840 5708448 1616232 5711064 1614648 5708080 +1613840 5708448 1616232 5711064 1614576 5708144 1613896 5708408 +1616264 5711104 1616712 5711216 1614664 5708048 1616232 5711064 +1614664 5708048 1614648 5708080 1616232 5711064 1616712 5711216 +1616264 5711104 1616712 5711216 1616232 5711064 1611512 5715528 +1616712 5711216 1614688 5707952 1614664 5708048 1616232 5711064 +1614664 5708048 1614648 5708080 1616232 5711064 1614688 5707952 +1616264 5711104 1616456 5711216 1616712 5711216 1616232 5711064 +1616264 5711104 1616328 5711160 1616456 5711216 1616232 5711064 +1616264 5711104 1616456 5711216 1616232 5711064 1611512 5715528 +1616456 5711216 1616656 5711232 1616712 5711216 1616232 5711064 +1616712 5711216 1614688 5707952 1616232 5711064 1616456 5711216 +1616712 5711216 1614696 5707848 1614688 5707952 1616232 5711064 +1616232 5711064 1616168 5710928 1614688 5707952 1614664 5708048 +1616232 5711064 1616168 5710928 1614664 5708048 1614648 5708080 +1616232 5711064 1616168 5710928 1614648 5708080 1614576 5708144 +1616168 5710928 1614664 5708048 1614648 5708080 1614576 5708144 +1616232 5711064 1616712 5711216 1616168 5710928 1614576 5708144 +1616232 5711064 1616168 5710928 1614576 5708144 1613840 5708448 +1616168 5710928 1614648 5708080 1614576 5708144 1613840 5708448 +1616232 5711064 1616168 5710928 1613840 5708448 1613784 5708464 +1616232 5711064 1616168 5710928 1613784 5708464 1611464 5715504 +1613784 5708464 1610752 5708648 1611464 5715504 1616168 5710928 +1616232 5711064 1616168 5710928 1611464 5715504 1611512 5715528 +1616168 5710928 1613784 5708464 1611464 5715504 1611512 5715528 +1616232 5711064 1616168 5710928 1611512 5715528 1616264 5711104 +1616168 5710928 1613840 5708448 1613784 5708464 1611464 5715504 +1616232 5711064 1616712 5711216 1616168 5710928 1611512 5715528 +1616168 5710928 1614576 5708144 1613840 5708448 1613784 5708464 +1616168 5710928 1616712 5711216 1614688 5707952 1614664 5708048 +1616168 5710928 1614688 5707952 1614664 5708048 1614648 5708080 +1614576 5708144 1613896 5708408 1613840 5708448 1616168 5710928 +1616712 5711216 1616168 5710928 1616232 5711064 1616456 5711216 +1616168 5710928 1611512 5715528 1616232 5711064 1616456 5711216 +1616712 5711216 1614688 5707952 1616168 5710928 1616456 5711216 +1616232 5711064 1616264 5711104 1616456 5711216 1616168 5710928 +1616712 5711216 1616168 5710928 1616456 5711216 1616656 5711232 +1614688 5707952 1616168 5710928 1616712 5711216 1614696 5707848 +1616168 5710928 1616144 5710736 1614688 5707952 1614664 5708048 +1616168 5710928 1616712 5711216 1616144 5710736 1614664 5708048 +1616712 5711216 1616144 5710736 1616168 5710928 1616456 5711216 +1616144 5710736 1616712 5711216 1614688 5707952 1614664 5708048 +1616168 5710928 1616144 5710736 1614664 5708048 1614648 5708080 +1616168 5710928 1616144 5710736 1614648 5708080 1614576 5708144 +1616168 5710928 1616144 5710736 1614576 5708144 1613840 5708448 +1616144 5710736 1614648 5708080 1614576 5708144 1613840 5708448 +1616168 5710928 1616144 5710736 1613840 5708448 1613784 5708464 +1616144 5710736 1614576 5708144 1613840 5708448 1613784 5708464 +1616168 5710928 1616144 5710736 1613784 5708464 1611464 5715504 +1616144 5710736 1614688 5707952 1614664 5708048 1614648 5708080 +1616168 5710928 1616712 5711216 1616144 5710736 1613784 5708464 +1616144 5710736 1614664 5708048 1614648 5708080 1614576 5708144 +1614576 5708144 1613896 5708408 1613840 5708448 1616144 5710736 +1614688 5707952 1616144 5710736 1616712 5711216 1614696 5707848 +1614688 5707952 1614664 5708048 1616144 5710736 1614696 5707848 +1616144 5710736 1616168 5710928 1616712 5711216 1614696 5707848 +1616712 5711216 1614704 5707744 1614696 5707848 1616144 5710736 +1616712 5711216 1614704 5707744 1616144 5710736 1616168 5710928 +1614696 5707848 1614688 5707952 1616144 5710736 1614704 5707744 +1616712 5711216 1616744 5711240 1614704 5707744 1616144 5710736 +1616712 5711216 1616168 5710616 1616144 5710736 1616168 5710928 +1616144 5710736 1616168 5710616 1614704 5707744 1614696 5707848 +1616144 5710736 1616712 5711216 1616168 5710616 1614696 5707848 +1616168 5710616 1616712 5711216 1614704 5707744 1614696 5707848 +1616144 5710736 1616168 5710616 1614696 5707848 1614688 5707952 +1616144 5710736 1616168 5710616 1614688 5707952 1614664 5708048 +1616144 5710736 1616168 5710616 1614664 5708048 1614648 5708080 +1616168 5710616 1614688 5707952 1614664 5708048 1614648 5708080 +1616144 5710736 1616712 5711216 1616168 5710616 1614648 5708080 +1616144 5710736 1616168 5710616 1614648 5708080 1614576 5708144 +1616144 5710736 1616168 5710616 1614576 5708144 1613840 5708448 +1616144 5710736 1616168 5710616 1613840 5708448 1613784 5708464 +1616168 5710616 1614576 5708144 1613840 5708448 1613784 5708464 +1616144 5710736 1616168 5710616 1613784 5708464 1616168 5710928 +1616168 5710616 1614664 5708048 1614648 5708080 1614576 5708144 +1616144 5710736 1616712 5711216 1616168 5710616 1613784 5708464 +1616168 5710616 1614648 5708080 1614576 5708144 1613840 5708448 +1614576 5708144 1613896 5708408 1613840 5708448 1616168 5710616 +1616168 5710616 1614696 5707848 1614688 5707952 1614664 5708048 +1616168 5710616 1614704 5707744 1614696 5707848 1614688 5707952 +1614704 5707744 1616168 5710616 1616712 5711216 1616744 5711240 +1614704 5707744 1614696 5707848 1616168 5710616 1616744 5711240 +1616168 5710616 1616144 5710736 1616712 5711216 1616744 5711240 +1614704 5707744 1616168 5710616 1616744 5711240 1614696 5707712 +1616744 5711240 1617312 5711816 1614696 5707712 1616168 5710616 +1614704 5707744 1614696 5707848 1616168 5710616 1614696 5707712 +1616168 5710616 1616712 5711216 1616744 5711240 1614696 5707712 +1614696 5707712 1616232 5710512 1616744 5711240 1617312 5711816 +1614696 5707712 1616232 5710512 1617312 5711816 1620040 5713712 +1617312 5711816 1619952 5713672 1620040 5713712 1616232 5710512 +1614696 5707712 1616232 5710512 1620040 5713712 1613592 5703136 +1616232 5710512 1616744 5711240 1617312 5711816 1620040 5713712 +1616744 5711240 1617184 5711760 1617312 5711816 1616232 5710512 +1614696 5707712 1616168 5710616 1616232 5710512 1620040 5713712 +1616232 5710512 1616168 5710616 1616744 5711240 1617312 5711816 +1616168 5710616 1616232 5710512 1614696 5707712 1614704 5707744 +1616168 5710616 1616232 5710512 1614704 5707744 1614696 5707848 +1616168 5710616 1616744 5711240 1616232 5710512 1614696 5707848 +1616232 5710512 1620040 5713712 1614696 5707712 1614704 5707744 +1616232 5710512 1614696 5707712 1614704 5707744 1614696 5707848 +1616168 5710616 1616232 5710512 1614696 5707848 1614688 5707952 +1616232 5710512 1614704 5707744 1614696 5707848 1614688 5707952 +1616168 5710616 1616744 5711240 1616232 5710512 1614688 5707952 +1616168 5710616 1616232 5710512 1614688 5707952 1614664 5708048 +1616168 5710616 1616232 5710512 1614664 5708048 1614648 5708080 +1616168 5710616 1616232 5710512 1614648 5708080 1614576 5708144 +1616232 5710512 1614664 5708048 1614648 5708080 1614576 5708144 +1616168 5710616 1616744 5711240 1616232 5710512 1614576 5708144 +1616168 5710616 1616232 5710512 1614576 5708144 1613840 5708448 +1616232 5710512 1614688 5707952 1614664 5708048 1614648 5708080 +1616232 5710512 1614696 5707848 1614688 5707952 1614664 5708048 +1616744 5711240 1616232 5710512 1616168 5710616 1616712 5711216 +1616232 5710512 1614576 5708144 1616168 5710616 1616712 5711216 +1616168 5710616 1616144 5710736 1616712 5711216 1616232 5710512 +1616144 5710736 1616168 5710928 1616712 5711216 1616232 5710512 +1616168 5710928 1616456 5711216 1616712 5711216 1616232 5710512 +1616168 5710616 1616144 5710736 1616232 5710512 1614576 5708144 +1616144 5710736 1616168 5710928 1616232 5710512 1616168 5710616 +1616744 5711240 1617312 5711816 1616232 5710512 1616712 5711216 +1616712 5711216 1616744 5711240 1616232 5710512 1616168 5710928 +1620040 5713712 1616280 5710480 1616232 5710512 1617312 5711816 +1620040 5713712 1616280 5710480 1617312 5711816 1619952 5713672 +1616280 5710480 1616232 5710512 1617312 5711816 1619952 5713672 +1614696 5707712 1616280 5710480 1620040 5713712 1613592 5703136 +1617312 5711816 1619824 5713672 1619952 5713672 1616280 5710480 +1616232 5710512 1616744 5711240 1617312 5711816 1616280 5710480 +1617312 5711816 1619952 5713672 1616280 5710480 1616744 5711240 +1616744 5711240 1617184 5711760 1617312 5711816 1616280 5710480 +1616232 5710512 1616280 5710480 1614696 5707712 1614704 5707744 +1616280 5710480 1614704 5707744 1616232 5710512 1616744 5711240 +1616232 5710512 1616712 5711216 1616744 5711240 1616280 5710480 +1616744 5711240 1617312 5711816 1616280 5710480 1616712 5711216 +1616232 5710512 1616712 5711216 1616280 5710480 1614704 5707744 +1616280 5710480 1620040 5713712 1614696 5707712 1614704 5707744 +1620040 5713712 1614696 5707712 1616280 5710480 1619952 5713672 +1616232 5710512 1616280 5710480 1614704 5707744 1614696 5707848 +1616232 5710512 1616280 5710480 1614696 5707848 1614688 5707952 +1616280 5710480 1614696 5707712 1614704 5707744 1614696 5707848 +1616232 5710512 1616712 5711216 1616280 5710480 1614688 5707952 +1616280 5710480 1614704 5707744 1614696 5707848 1614688 5707952 +1616232 5710512 1616280 5710480 1614688 5707952 1614664 5708048 +1616280 5710480 1614696 5707848 1614688 5707952 1614664 5708048 +1616232 5710512 1616712 5711216 1616280 5710480 1614664 5708048 +1616232 5710512 1616280 5710480 1614664 5708048 1614648 5708080 +1616232 5710512 1616280 5710480 1614648 5708080 1614576 5708144 +1616232 5710512 1616280 5710480 1614576 5708144 1616168 5710616 +1616232 5710512 1616712 5711216 1616280 5710480 1614576 5708144 +1616280 5710480 1614664 5708048 1614648 5708080 1614576 5708144 +1616280 5710480 1614688 5707952 1614664 5708048 1614648 5708080 +1616232 5710512 1616168 5710928 1616712 5711216 1616280 5710480 +1616168 5710928 1616456 5711216 1616712 5711216 1616280 5710480 +1616232 5710512 1616144 5710736 1616168 5710928 1616280 5710480 +1616232 5710512 1616168 5710616 1616144 5710736 1616280 5710480 +1616144 5710736 1616168 5710928 1616280 5710480 1616168 5710616 +1616232 5710512 1616168 5710616 1616280 5710480 1614576 5708144 +1616712 5711216 1616744 5711240 1616280 5710480 1616168 5710928 +1616168 5710928 1616712 5711216 1616280 5710480 1616144 5710736 +1614696 5707712 1616296 5710448 1620040 5713712 1613592 5703136 +1616280 5710480 1616296 5710448 1614696 5707712 1614704 5707744 +1616280 5710480 1616296 5710448 1614704 5707744 1614696 5707848 +1616296 5710448 1614696 5707712 1614704 5707744 1614696 5707848 +1616280 5710480 1620040 5713712 1616296 5710448 1614696 5707848 +1620040 5713712 1616296 5710448 1616280 5710480 1619952 5713672 +1616280 5710480 1617312 5711816 1619952 5713672 1616296 5710448 +1616280 5710480 1616744 5711240 1617312 5711816 1616296 5710448 +1617312 5711816 1619952 5713672 1616296 5710448 1616744 5711240 +1617312 5711816 1619824 5713672 1619952 5713672 1616296 5710448 +1616280 5710480 1616712 5711216 1616744 5711240 1616296 5710448 +1616744 5711240 1617312 5711816 1616296 5710448 1616712 5711216 +1616744 5711240 1617184 5711760 1617312 5711816 1616296 5710448 +1616280 5710480 1616168 5710928 1616712 5711216 1616296 5710448 +1616296 5710448 1614696 5707848 1616280 5710480 1616712 5711216 +1619952 5713672 1620040 5713712 1616296 5710448 1617312 5711816 +1616296 5710448 1620040 5713712 1614696 5707712 1614704 5707744 +1620040 5713712 1614696 5707712 1616296 5710448 1619952 5713672 +1616280 5710480 1616296 5710448 1614696 5707848 1614688 5707952 +1616280 5710480 1616296 5710448 1614688 5707952 1614664 5708048 +1616296 5710448 1614704 5707744 1614696 5707848 1614688 5707952 +1616280 5710480 1616712 5711216 1616296 5710448 1614664 5708048 +1616296 5710448 1614696 5707848 1614688 5707952 1614664 5708048 +1616280 5710480 1616296 5710448 1614664 5708048 1614648 5708080 +1616296 5710448 1614688 5707952 1614664 5708048 1614648 5708080 +1616280 5710480 1616712 5711216 1616296 5710448 1614648 5708080 +1616280 5710480 1616296 5710448 1614648 5708080 1614576 5708144 +1616280 5710480 1616296 5710448 1614576 5708144 1616232 5710512 +1614576 5708144 1616168 5710616 1616232 5710512 1616296 5710448 +1616280 5710480 1616712 5711216 1616296 5710448 1616232 5710512 +1616296 5710448 1614648 5708080 1614576 5708144 1616232 5710512 +1616296 5710448 1614664 5708048 1614648 5708080 1614576 5708144 +1614696 5707712 1616376 5710416 1620040 5713712 1613592 5703136 +1614696 5707712 1616376 5710416 1613592 5703136 1614680 5707680 +1620040 5713712 1620104 5713768 1613592 5703136 1616376 5710416 +1616296 5710448 1616376 5710416 1614696 5707712 1614704 5707744 +1616296 5710448 1616376 5710416 1614704 5707744 1614696 5707848 +1616296 5710448 1616376 5710416 1614696 5707848 1614688 5707952 +1616376 5710416 1614704 5707744 1614696 5707848 1614688 5707952 +1616376 5710416 1614696 5707712 1614704 5707744 1614696 5707848 +1616296 5710448 1620040 5713712 1616376 5710416 1614688 5707952 +1620040 5713712 1616376 5710416 1616296 5710448 1619952 5713672 +1616296 5710448 1617312 5711816 1619952 5713672 1616376 5710416 +1616296 5710448 1616744 5711240 1617312 5711816 1616376 5710416 +1616296 5710448 1616712 5711216 1616744 5711240 1616376 5710416 +1616744 5711240 1617312 5711816 1616376 5710416 1616712 5711216 +1617312 5711816 1619824 5713672 1619952 5713672 1616376 5710416 +1616296 5710448 1616280 5710480 1616712 5711216 1616376 5710416 +1616712 5711216 1616744 5711240 1616376 5710416 1616280 5710480 +1616744 5711240 1617184 5711760 1617312 5711816 1616376 5710416 +1616280 5710480 1616168 5710928 1616712 5711216 1616376 5710416 +1616712 5711216 1616744 5711240 1616376 5710416 1616168 5710928 +1616280 5710480 1616168 5710928 1616376 5710416 1616296 5710448 +1616168 5710928 1616456 5711216 1616712 5711216 1616376 5710416 +1617312 5711816 1619952 5713672 1616376 5710416 1616744 5711240 +1616376 5710416 1614688 5707952 1616296 5710448 1616280 5710480 +1619952 5713672 1620040 5713712 1616376 5710416 1617312 5711816 +1614696 5707712 1614704 5707744 1616376 5710416 1613592 5703136 +1616376 5710416 1619952 5713672 1620040 5713712 1613592 5703136 +1616296 5710448 1616376 5710416 1614688 5707952 1614664 5708048 +1616296 5710448 1616376 5710416 1614664 5708048 1614648 5708080 +1616376 5710416 1614696 5707848 1614688 5707952 1614664 5708048 +1616296 5710448 1616280 5710480 1616376 5710416 1614648 5708080 +1616376 5710416 1614688 5707952 1614664 5708048 1614648 5708080 +1616296 5710448 1616376 5710416 1614648 5708080 1614576 5708144 +1616280 5710480 1616144 5710736 1616168 5710928 1616376 5710416 +1616376 5710416 1616568 5710400 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1616568 5710400 +1613592 5703136 1616568 5710400 1620040 5713712 1620104 5713768 +1616376 5710416 1616568 5710400 1614696 5707712 1614704 5707744 +1616568 5710400 1613592 5703136 1614696 5707712 1614704 5707744 +1616376 5710416 1616568 5710400 1614704 5707744 1614696 5707848 +1616376 5710416 1616568 5710400 1614696 5707848 1614688 5707952 +1616376 5710416 1616568 5710400 1614688 5707952 1614664 5708048 +1616568 5710400 1614696 5707848 1614688 5707952 1614664 5708048 +1616568 5710400 1614704 5707744 1614696 5707848 1614688 5707952 +1616568 5710400 1614696 5707712 1614704 5707744 1614696 5707848 +1616376 5710416 1620040 5713712 1616568 5710400 1614664 5708048 +1620040 5713712 1616568 5710400 1616376 5710416 1619952 5713672 +1616376 5710416 1617312 5711816 1619952 5713672 1616568 5710400 +1617312 5711816 1619824 5713672 1619952 5713672 1616568 5710400 +1616376 5710416 1616744 5711240 1617312 5711816 1616568 5710400 +1616376 5710416 1616712 5711216 1616744 5711240 1616568 5710400 +1616376 5710416 1616168 5710928 1616712 5711216 1616568 5710400 +1616712 5711216 1616744 5711240 1616568 5710400 1616168 5710928 +1616744 5711240 1617184 5711760 1617312 5711816 1616568 5710400 +1616168 5710928 1616456 5711216 1616712 5711216 1616568 5710400 +1616712 5711216 1616744 5711240 1616568 5710400 1616456 5711216 +1616168 5710928 1616456 5711216 1616568 5710400 1616376 5710416 +1616376 5710416 1616280 5710480 1616168 5710928 1616568 5710400 +1616168 5710928 1616456 5711216 1616568 5710400 1616280 5710480 +1616376 5710416 1616296 5710448 1616280 5710480 1616568 5710400 +1616744 5711240 1617312 5711816 1616568 5710400 1616712 5711216 +1617312 5711816 1619952 5713672 1616568 5710400 1616744 5711240 +1616568 5710400 1614664 5708048 1616376 5710416 1616280 5710480 +1619952 5713672 1620040 5713712 1616568 5710400 1617312 5711816 +1616568 5710400 1620040 5713712 1613592 5703136 1614696 5707712 +1620040 5713712 1613592 5703136 1616568 5710400 1619952 5713672 +1616376 5710416 1616568 5710400 1614664 5708048 1614648 5708080 +1616456 5711216 1616656 5711232 1616712 5711216 1616568 5710400 +1616168 5710928 1616232 5711064 1616456 5711216 1616568 5710400 +1616280 5710480 1616144 5710736 1616168 5710928 1616568 5710400 +1616168 5710928 1616456 5711216 1616568 5710400 1616144 5710736 +1616280 5710480 1616168 5710616 1616144 5710736 1616568 5710400 +1616280 5710480 1616144 5710736 1616568 5710400 1616376 5710416 +1613592 5703136 1616712 5710416 1620040 5713712 1620104 5713768 +1616568 5710400 1616712 5710416 1613592 5703136 1614696 5707712 +1613592 5703136 1614680 5707680 1614696 5707712 1616712 5710416 +1616568 5710400 1616712 5710416 1614696 5707712 1614704 5707744 +1616568 5710400 1616712 5710416 1614704 5707744 1614696 5707848 +1616712 5710416 1614696 5707712 1614704 5707744 1614696 5707848 +1616568 5710400 1616712 5710416 1614696 5707848 1614688 5707952 +1616568 5710400 1616712 5710416 1614688 5707952 1614664 5708048 +1616712 5710416 1614704 5707744 1614696 5707848 1614688 5707952 +1614696 5707712 1614704 5707744 1616712 5710416 1614680 5707680 +1616568 5710400 1620040 5713712 1616712 5710416 1614688 5707952 +1620040 5713712 1616712 5710416 1616568 5710400 1619952 5713672 +1616568 5710400 1617312 5711816 1619952 5713672 1616712 5710416 +1617312 5711816 1619824 5713672 1619952 5713672 1616712 5710416 +1616568 5710400 1616744 5711240 1617312 5711816 1616712 5710416 +1616744 5711240 1617184 5711760 1617312 5711816 1616712 5710416 +1616568 5710400 1616712 5711216 1616744 5711240 1616712 5710416 +1616568 5710400 1616456 5711216 1616712 5711216 1616712 5710416 +1616744 5711240 1617312 5711816 1616712 5710416 1616712 5711216 +1617312 5711816 1619952 5713672 1616712 5710416 1616744 5711240 +1616712 5710416 1614688 5707952 1616568 5710400 1616712 5711216 +1619952 5713672 1620040 5713712 1616712 5710416 1617312 5711816 +1616712 5710416 1620040 5713712 1613592 5703136 1614680 5707680 +1620040 5713712 1613592 5703136 1616712 5710416 1619952 5713672 +1613592 5703136 1613584 5703232 1614680 5707680 1616712 5710416 +1613592 5703136 1617040 5710544 1620040 5713712 1620104 5713768 +1616712 5710416 1617040 5710544 1613592 5703136 1614680 5707680 +1616712 5710416 1617040 5710544 1614680 5707680 1614696 5707712 +1616712 5710416 1617040 5710544 1614696 5707712 1614704 5707744 +1617040 5710544 1614680 5707680 1614696 5707712 1614704 5707744 +1616712 5710416 1617040 5710544 1614704 5707744 1614696 5707848 +1617040 5710544 1613592 5703136 1614680 5707680 1614696 5707712 +1616712 5710416 1620040 5713712 1617040 5710544 1614704 5707744 +1620040 5713712 1617040 5710544 1616712 5710416 1619952 5713672 +1616712 5710416 1617312 5711816 1619952 5713672 1617040 5710544 +1617312 5711816 1619824 5713672 1619952 5713672 1617040 5710544 +1616712 5710416 1616744 5711240 1617312 5711816 1617040 5710544 +1616744 5711240 1617184 5711760 1617312 5711816 1617040 5710544 +1616744 5711240 1617000 5711648 1617184 5711760 1617040 5710544 +1617184 5711760 1617312 5711816 1617040 5710544 1617000 5711648 +1616712 5710416 1616712 5711216 1616744 5711240 1617040 5710544 +1616712 5710416 1616568 5710400 1616712 5711216 1617040 5710544 +1616744 5711240 1617000 5711648 1617040 5710544 1616712 5711216 +1617312 5711816 1619952 5713672 1617040 5710544 1617184 5711760 +1617040 5710544 1614704 5707744 1616712 5710416 1616712 5711216 +1619952 5713672 1620040 5713712 1617040 5710544 1617312 5711816 +1617040 5710544 1620040 5713712 1613592 5703136 1614680 5707680 +1620040 5713712 1613592 5703136 1617040 5710544 1619952 5713672 +1616744 5711240 1616752 5711280 1617000 5711648 1617040 5710544 +1613592 5703136 1613584 5703232 1614680 5707680 1617040 5710544 +1613592 5703136 1617144 5710648 1620040 5713712 1620104 5713768 +1617040 5710544 1617144 5710648 1613592 5703136 1614680 5707680 +1620040 5713712 1617144 5710648 1617040 5710544 1619952 5713672 +1617040 5710544 1617312 5711816 1619952 5713672 1617144 5710648 +1617312 5711816 1619824 5713672 1619952 5713672 1617144 5710648 +1617040 5710544 1617184 5711760 1617312 5711816 1617144 5710648 +1617040 5710544 1617000 5711648 1617184 5711760 1617144 5710648 +1617040 5710544 1616744 5711240 1617000 5711648 1617144 5710648 +1617000 5711648 1617184 5711760 1617144 5710648 1616744 5711240 +1617040 5710544 1616712 5711216 1616744 5711240 1617144 5710648 +1616744 5711240 1617000 5711648 1617144 5710648 1616712 5711216 +1617040 5710544 1616712 5710416 1616712 5711216 1617144 5710648 +1617184 5711760 1617312 5711816 1617144 5710648 1617000 5711648 +1617312 5711816 1619952 5713672 1617144 5710648 1617184 5711760 +1617144 5710648 1613592 5703136 1617040 5710544 1616712 5711216 +1619952 5713672 1620040 5713712 1617144 5710648 1617312 5711816 +1620040 5713712 1613592 5703136 1617144 5710648 1619952 5713672 +1616744 5711240 1616752 5711280 1617000 5711648 1617144 5710648 +1616744 5711240 1616752 5711280 1617144 5710648 1616712 5711216 +1617000 5711648 1617184 5711760 1617144 5710648 1616752 5711280 +1616752 5711280 1616808 5711600 1617000 5711648 1617144 5710648 +1619952 5713672 1617256 5710832 1617312 5711816 1619824 5713672 +1617312 5711816 1619688 5713672 1619824 5713672 1617256 5710832 +1619824 5713672 1619952 5713672 1617256 5710832 1619688 5713672 +1617312 5711816 1617256 5710832 1617144 5710648 1617184 5711760 +1617144 5710648 1617000 5711648 1617184 5711760 1617256 5710832 +1617144 5710648 1616752 5711280 1617000 5711648 1617256 5710832 +1617000 5711648 1617184 5711760 1617256 5710832 1616752 5711280 +1617184 5711760 1617312 5711816 1617256 5710832 1617000 5711648 +1617144 5710648 1617256 5710832 1619952 5713672 1620040 5713712 +1617256 5710832 1620040 5713712 1617144 5710648 1616752 5711280 +1617144 5710648 1617256 5710832 1620040 5713712 1613592 5703136 +1619952 5713672 1620040 5713712 1617256 5710832 1619824 5713672 +1617256 5710832 1617184 5711760 1617312 5711816 1619688 5713672 +1616752 5711280 1616808 5711600 1617000 5711648 1617256 5710832 +1617144 5710648 1616744 5711240 1616752 5711280 1617256 5710832 +1617144 5710648 1616712 5711216 1616744 5711240 1617256 5710832 +1616752 5711280 1617000 5711648 1617256 5710832 1616744 5711240 +1617144 5710648 1617040 5710544 1616712 5711216 1617256 5710832 +1617144 5710648 1616712 5711216 1617256 5710832 1620040 5713712 +1616744 5711240 1616752 5711280 1617256 5710832 1616712 5711216 +1617312 5711816 1619656 5713744 1619688 5713672 1617256 5710832 +1617256 5710832 1617368 5711048 1619688 5713672 1619824 5713672 +1617256 5710832 1617368 5711048 1619824 5713672 1619952 5713672 +1617368 5711048 1619688 5713672 1619824 5713672 1619952 5713672 +1617256 5710832 1617368 5711048 1619952 5713672 1620040 5713712 +1617368 5711048 1619824 5713672 1619952 5713672 1620040 5713712 +1617256 5710832 1617368 5711048 1620040 5713712 1617144 5710648 +1617256 5710832 1617312 5711816 1617368 5711048 1620040 5713712 +1617312 5711816 1617368 5711048 1617256 5710832 1617184 5711760 +1617256 5710832 1617000 5711648 1617184 5711760 1617368 5711048 +1617256 5710832 1616752 5711280 1617000 5711648 1617368 5711048 +1617256 5710832 1616744 5711240 1616752 5711280 1617368 5711048 +1616752 5711280 1617000 5711648 1617368 5711048 1616744 5711240 +1617000 5711648 1617184 5711760 1617368 5711048 1616752 5711280 +1617368 5711048 1620040 5713712 1617256 5710832 1616744 5711240 +1617184 5711760 1617312 5711816 1617368 5711048 1617000 5711648 +1617368 5711048 1617312 5711816 1619688 5713672 1619824 5713672 +1617312 5711816 1619688 5713672 1617368 5711048 1617184 5711760 +1616752 5711280 1616808 5711600 1617000 5711648 1617368 5711048 +1617256 5710832 1616712 5711216 1616744 5711240 1617368 5711048 +1619688 5713672 1617368 5711048 1617312 5711816 1619656 5713744 +1617368 5711048 1617480 5711200 1619688 5713672 1619824 5713672 +1617368 5711048 1617480 5711200 1619824 5713672 1619952 5713672 +1617368 5711048 1617480 5711200 1619952 5713672 1620040 5713712 +1617480 5711200 1619824 5713672 1619952 5713672 1620040 5713712 +1617368 5711048 1617480 5711200 1620040 5713712 1617256 5710832 +1617480 5711200 1619952 5713672 1620040 5713712 1617256 5710832 +1620040 5713712 1617144 5710648 1617256 5710832 1617480 5711200 +1617480 5711200 1619688 5713672 1619824 5713672 1619952 5713672 +1617368 5711048 1617312 5711816 1617480 5711200 1617256 5710832 +1617312 5711816 1617480 5711200 1617368 5711048 1617184 5711760 +1617368 5711048 1617000 5711648 1617184 5711760 1617480 5711200 +1617368 5711048 1616752 5711280 1617000 5711648 1617480 5711200 +1617480 5711200 1617256 5710832 1617368 5711048 1617000 5711648 +1617184 5711760 1617312 5711816 1617480 5711200 1617000 5711648 +1617480 5711200 1617312 5711816 1619688 5713672 1619824 5713672 +1617312 5711816 1619688 5713672 1617480 5711200 1617184 5711760 +1619688 5713672 1617480 5711200 1617312 5711816 1619656 5713744 +1620040 5713712 1617632 5711328 1617480 5711200 1619952 5713672 +1617480 5711200 1619824 5713672 1619952 5713672 1617632 5711328 +1619952 5713672 1620040 5713712 1617632 5711328 1619824 5713672 +1617256 5710832 1617632 5711328 1620040 5713712 1617144 5710648 +1620040 5713712 1613592 5703136 1617144 5710648 1617632 5711328 +1617480 5711200 1617632 5711328 1617256 5710832 1617368 5711048 +1617480 5711200 1619688 5713672 1619824 5713672 1617632 5711328 +1619824 5713672 1619952 5713672 1617632 5711328 1619688 5713672 +1617480 5711200 1617312 5711816 1619688 5713672 1617632 5711328 +1619688 5713672 1619824 5713672 1617632 5711328 1617312 5711816 +1617632 5711328 1617368 5711048 1617480 5711200 1617312 5711816 +1617480 5711200 1617184 5711760 1617312 5711816 1617632 5711328 +1617480 5711200 1617000 5711648 1617184 5711760 1617632 5711328 +1617480 5711200 1617184 5711760 1617632 5711328 1617368 5711048 +1617256 5710832 1617368 5711048 1617632 5711328 1617144 5710648 +1617312 5711816 1619688 5713672 1617632 5711328 1617184 5711760 +1620040 5713712 1617144 5710648 1617632 5711328 1619952 5713672 +1617312 5711816 1619656 5713744 1619688 5713672 1617632 5711328 +1613592 5703136 1617912 5711456 1620040 5713712 1620104 5713768 +1613592 5703136 1617912 5711456 1620104 5713768 1627336 5719640 +1620040 5713712 1620072 5713752 1620104 5713768 1617912 5711456 +1617144 5710648 1617912 5711456 1613592 5703136 1617040 5710544 +1620040 5713712 1617912 5711456 1617144 5710648 1617632 5711328 +1617144 5710648 1617256 5710832 1617632 5711328 1617912 5711456 +1617632 5711328 1620040 5713712 1617912 5711456 1617256 5710832 +1617256 5710832 1617368 5711048 1617632 5711328 1617912 5711456 +1617256 5710832 1617368 5711048 1617912 5711456 1617144 5710648 +1617632 5711328 1620040 5713712 1617912 5711456 1617368 5711048 +1617368 5711048 1617480 5711200 1617632 5711328 1617912 5711456 +1620040 5713712 1617912 5711456 1617632 5711328 1619952 5713672 +1617632 5711328 1619824 5713672 1619952 5713672 1617912 5711456 +1617632 5711328 1619688 5713672 1619824 5713672 1617912 5711456 +1619824 5713672 1619952 5713672 1617912 5711456 1619688 5713672 +1617912 5711456 1617368 5711048 1617632 5711328 1619688 5713672 +1617632 5711328 1617312 5711816 1619688 5713672 1617912 5711456 +1619688 5713672 1619824 5713672 1617912 5711456 1617312 5711816 +1617632 5711328 1617312 5711816 1617912 5711456 1617368 5711048 +1617632 5711328 1617184 5711760 1617312 5711816 1617912 5711456 +1619952 5713672 1620040 5713712 1617912 5711456 1619824 5713672 +1617912 5711456 1613592 5703136 1617144 5710648 1617256 5710832 +1613592 5703136 1617144 5710648 1617912 5711456 1620104 5713768 +1617912 5711456 1619952 5713672 1620040 5713712 1620104 5713768 +1617312 5711816 1619656 5713744 1619688 5713672 1617912 5711456 +1620104 5713768 1618088 5711560 1617912 5711456 1620040 5713712 +1613592 5703136 1618088 5711560 1620104 5713768 1627336 5719640 +1620104 5713768 1618088 5711560 1620040 5713712 1620072 5713752 +1617912 5711456 1618088 5711560 1613592 5703136 1617144 5710648 +1613592 5703136 1617040 5710544 1617144 5710648 1618088 5711560 +1617912 5711456 1618088 5711560 1617144 5710648 1617256 5710832 +1618088 5711560 1617144 5710648 1617912 5711456 1620040 5713712 +1617912 5711456 1619952 5713672 1620040 5713712 1618088 5711560 +1620040 5713712 1620104 5713768 1618088 5711560 1619952 5713672 +1617912 5711456 1619824 5713672 1619952 5713672 1618088 5711560 +1617912 5711456 1619688 5713672 1619824 5713672 1618088 5711560 +1617912 5711456 1617312 5711816 1619688 5713672 1618088 5711560 +1619688 5713672 1619824 5713672 1618088 5711560 1617312 5711816 +1617912 5711456 1617632 5711328 1617312 5711816 1618088 5711560 +1619824 5713672 1619952 5713672 1618088 5711560 1619688 5713672 +1617912 5711456 1617312 5711816 1618088 5711560 1617144 5710648 +1619952 5713672 1620040 5713712 1618088 5711560 1619824 5713672 +1618088 5711560 1620104 5713768 1613592 5703136 1617144 5710648 +1620104 5713768 1613592 5703136 1618088 5711560 1620040 5713712 +1617312 5711816 1619656 5713744 1619688 5713672 1618088 5711560 +1617312 5711816 1619656 5713744 1618088 5711560 1617912 5711456 +1619688 5713672 1619824 5713672 1618088 5711560 1619656 5713744 +1617312 5711816 1618856 5717400 1619656 5713744 1618088 5711560 +1619824 5713672 1618184 5711672 1618088 5711560 1619688 5713672 +1618088 5711560 1619656 5713744 1619688 5713672 1618184 5711672 +1619688 5713672 1619824 5713672 1618184 5711672 1619656 5713744 +1618088 5711560 1618184 5711672 1619952 5713672 1620040 5713712 +1618088 5711560 1618184 5711672 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1618184 5711672 +1618184 5711672 1619952 5713672 1620040 5713712 1620104 5713768 +1618184 5711672 1620104 5713768 1618088 5711560 1619656 5713744 +1618088 5711560 1618184 5711672 1620104 5713768 1613592 5703136 +1618184 5711672 1620040 5713712 1620104 5713768 1613592 5703136 +1620104 5713768 1627336 5719640 1613592 5703136 1618184 5711672 +1618088 5711560 1618184 5711672 1613592 5703136 1617144 5710648 +1618088 5711560 1619656 5713744 1618184 5711672 1613592 5703136 +1618184 5711672 1619824 5713672 1619952 5713672 1620040 5713712 +1619824 5713672 1619952 5713672 1618184 5711672 1619688 5713672 +1618088 5711560 1617312 5711816 1619656 5713744 1618184 5711672 +1618088 5711560 1617912 5711456 1617312 5711816 1618184 5711672 +1619656 5713744 1619688 5713672 1618184 5711672 1617312 5711816 +1618088 5711560 1617312 5711816 1618184 5711672 1613592 5703136 +1617312 5711816 1618856 5717400 1619656 5713744 1618184 5711672 +1618184 5711672 1618264 5711808 1619656 5713744 1619688 5713672 +1618184 5711672 1618264 5711808 1619688 5713672 1619824 5713672 +1618264 5711808 1619656 5713744 1619688 5713672 1619824 5713672 +1618184 5711672 1617312 5711816 1618264 5711808 1619824 5713672 +1618184 5711672 1618264 5711808 1619824 5713672 1619952 5713672 +1618264 5711808 1619688 5713672 1619824 5713672 1619952 5713672 +1618184 5711672 1618264 5711808 1619952 5713672 1620040 5713712 +1618184 5711672 1618264 5711808 1620040 5713712 1620104 5713768 +1618184 5711672 1617312 5711816 1618264 5711808 1620040 5713712 +1618264 5711808 1619824 5713672 1619952 5713672 1620040 5713712 +1618264 5711808 1617312 5711816 1619656 5713744 1619688 5713672 +1619656 5713744 1618264 5711808 1617312 5711816 1618856 5717400 +1617312 5711816 1618264 5711808 1618184 5711672 1618088 5711560 +1618264 5711808 1618280 5712016 1619656 5713744 1619688 5713672 +1618264 5711808 1618280 5712016 1619688 5713672 1619824 5713672 +1618264 5711808 1618280 5712016 1619824 5713672 1619952 5713672 +1618280 5712016 1619688 5713672 1619824 5713672 1619952 5713672 +1618264 5711808 1618280 5712016 1619952 5713672 1620040 5713712 +1618280 5712016 1619656 5713744 1619688 5713672 1619824 5713672 +1618264 5711808 1617312 5711816 1618280 5712016 1619952 5713672 +1617312 5711816 1618280 5712016 1618264 5711808 1618184 5711672 +1618280 5712016 1619952 5713672 1618264 5711808 1618184 5711672 +1618280 5712016 1617312 5711816 1619656 5713744 1619688 5713672 +1617312 5711816 1619656 5713744 1618280 5712016 1618184 5711672 +1619656 5713744 1618280 5712016 1617312 5711816 1618856 5717400 +1617312 5711816 1618280 5712016 1618184 5711672 1618088 5711560 +1618280 5712016 1618256 5712040 1619656 5713744 1619688 5713672 +1618280 5712016 1618256 5712040 1619688 5713672 1619824 5713672 +1618280 5712016 1617312 5711816 1618256 5712040 1619688 5713672 +1617312 5711816 1618256 5712040 1618280 5712016 1618184 5711672 +1618280 5712016 1618264 5711808 1618184 5711672 1618256 5712040 +1618256 5712040 1619688 5713672 1618280 5712016 1618264 5711808 +1618184 5711672 1617312 5711816 1618256 5712040 1618264 5711808 +1618256 5712040 1617312 5711816 1619656 5713744 1619688 5713672 +1617312 5711816 1619656 5713744 1618256 5712040 1618184 5711672 +1619656 5713744 1618256 5712040 1617312 5711816 1618856 5717400 +1617312 5711816 1618256 5712040 1618184 5711672 1618088 5711560 +1618256 5712040 1618248 5712072 1619656 5713744 1619688 5713672 +1618256 5712040 1618248 5712072 1619688 5713672 1618280 5712016 +1619688 5713672 1619824 5713672 1618280 5712016 1618248 5712072 +1618248 5712072 1619656 5713744 1619688 5713672 1618280 5712016 +1618256 5712040 1617312 5711816 1618248 5712072 1618280 5712016 +1617312 5711816 1618248 5712072 1618256 5712040 1618184 5711672 +1618256 5712040 1618264 5711808 1618184 5711672 1618248 5712072 +1618248 5712072 1618280 5712016 1618256 5712040 1618184 5711672 +1618248 5712072 1617312 5711816 1619656 5713744 1619688 5713672 +1617312 5711816 1619656 5713744 1618248 5712072 1618184 5711672 +1619656 5713744 1618248 5712072 1617312 5711816 1618856 5717400 +1617312 5711816 1618248 5712072 1618184 5711672 1618088 5711560 +1618248 5712072 1618160 5712112 1619656 5713744 1619688 5713672 +1618248 5712072 1618160 5712112 1619688 5713672 1618280 5712016 +1618248 5712072 1617312 5711816 1618160 5712112 1619688 5713672 +1617312 5711816 1618160 5712112 1618248 5712072 1618184 5711672 +1618248 5712072 1618256 5712040 1618184 5711672 1618160 5712112 +1618256 5712040 1618264 5711808 1618184 5711672 1618160 5712112 +1618256 5712040 1618280 5712016 1618264 5711808 1618160 5712112 +1618256 5712040 1618264 5711808 1618160 5712112 1618248 5712072 +1618160 5712112 1619688 5713672 1618248 5712072 1618256 5712040 +1618184 5711672 1617312 5711816 1618160 5712112 1618264 5711808 +1618160 5712112 1617312 5711816 1619656 5713744 1619688 5713672 +1617312 5711816 1619656 5713744 1618160 5712112 1618184 5711672 +1619656 5713744 1618160 5712112 1617312 5711816 1618856 5717400 +1617312 5711816 1618160 5712112 1618184 5711672 1618088 5711560 +1617312 5711816 1618160 5712112 1618088 5711560 1617912 5711456 +1617312 5711816 1618160 5712112 1617912 5711456 1617632 5711328 +1618160 5712112 1618264 5711808 1618184 5711672 1618088 5711560 +1617312 5711816 1619656 5713744 1618160 5712112 1617912 5711456 +1618160 5712112 1618184 5711672 1618088 5711560 1617912 5711456 +1617912 5711456 1618048 5712072 1618160 5712112 1618088 5711560 +1617312 5711816 1618048 5712072 1617912 5711456 1617632 5711328 +1618048 5712072 1617312 5711816 1618160 5712112 1618088 5711560 +1618160 5712112 1618048 5712072 1617312 5711816 1619656 5713744 +1618160 5712112 1618048 5712072 1619656 5713744 1619688 5713672 +1618160 5712112 1618088 5711560 1618048 5712072 1619656 5713744 +1618048 5712072 1617912 5711456 1617312 5711816 1619656 5713744 +1617912 5711456 1617312 5711816 1618048 5712072 1618088 5711560 +1617312 5711816 1618856 5717400 1619656 5713744 1618048 5712072 +1617312 5711816 1618824 5717440 1618856 5717400 1618048 5712072 +1618856 5717400 1618888 5717376 1619656 5713744 1618048 5712072 +1619656 5713744 1618160 5712112 1618048 5712072 1618856 5717400 +1617312 5711816 1618856 5717400 1618048 5712072 1617912 5711456 +1618160 5712112 1618184 5711672 1618088 5711560 1618048 5712072 +1618088 5711560 1617912 5711456 1618048 5712072 1618184 5711672 +1618160 5712112 1618264 5711808 1618184 5711672 1618048 5712072 +1618160 5712112 1618256 5712040 1618264 5711808 1618048 5712072 +1618256 5712040 1618280 5712016 1618264 5711808 1618048 5712072 +1618160 5712112 1618248 5712072 1618256 5712040 1618048 5712072 +1618264 5711808 1618184 5711672 1618048 5712072 1618256 5712040 +1618160 5712112 1618256 5712040 1618048 5712072 1619656 5713744 +1618184 5711672 1618088 5711560 1618048 5712072 1618264 5711808 +1617312 5711816 1617888 5712008 1617912 5711456 1617632 5711328 +1618048 5712072 1617888 5712008 1617312 5711816 1618856 5717400 +1617312 5711816 1618824 5717440 1618856 5717400 1617888 5712008 +1618048 5712072 1617912 5711456 1617888 5712008 1618856 5717400 +1617912 5711456 1617888 5712008 1618048 5712072 1618088 5711560 +1618048 5712072 1618184 5711672 1618088 5711560 1617888 5712008 +1617888 5712008 1618856 5717400 1618048 5712072 1618184 5711672 +1618088 5711560 1617912 5711456 1617888 5712008 1618184 5711672 +1617888 5712008 1617912 5711456 1617312 5711816 1618856 5717400 +1617912 5711456 1617312 5711816 1617888 5712008 1618088 5711560 +1618048 5712072 1617888 5712008 1618856 5717400 1619656 5713744 +1618856 5717400 1618888 5717376 1619656 5713744 1617888 5712008 +1618048 5712072 1617888 5712008 1619656 5713744 1618160 5712112 +1617888 5712008 1617312 5711816 1618856 5717400 1619656 5713744 +1618048 5712072 1618184 5711672 1617888 5712008 1619656 5713744 +1618048 5712072 1618264 5711808 1618184 5711672 1617888 5712008 +1618184 5711672 1618088 5711560 1617888 5712008 1618264 5711808 +1618048 5712072 1618256 5712040 1618264 5711808 1617888 5712008 +1618048 5712072 1618264 5711808 1617888 5712008 1619656 5713744 +1617312 5711816 1617736 5711920 1617912 5711456 1617632 5711328 +1617736 5711920 1617888 5712008 1617912 5711456 1617632 5711328 +1617312 5711816 1617736 5711920 1617632 5711328 1617184 5711760 +1617888 5712008 1617736 5711920 1617312 5711816 1618856 5717400 +1617912 5711456 1617736 5711920 1617888 5712008 1618088 5711560 +1617912 5711456 1617632 5711328 1617736 5711920 1618088 5711560 +1617888 5712008 1618184 5711672 1618088 5711560 1617736 5711920 +1617736 5711920 1617312 5711816 1617888 5712008 1618088 5711560 +1617312 5711816 1617888 5712008 1617736 5711920 1617632 5711328 +1617632 5711328 1617680 5711880 1617736 5711920 1617912 5711456 +1617736 5711920 1618088 5711560 1617912 5711456 1617680 5711880 +1617680 5711880 1617312 5711816 1617736 5711920 1617912 5711456 +1617632 5711328 1617312 5711816 1617680 5711880 1617912 5711456 +1617312 5711816 1617680 5711880 1617632 5711328 1617184 5711760 +1617736 5711920 1617680 5711880 1617312 5711816 1617888 5712008 +1617312 5711816 1617656 5711880 1617680 5711880 1617632 5711328 +1617656 5711880 1617736 5711920 1617680 5711880 1617632 5711328 +1617680 5711880 1617912 5711456 1617632 5711328 1617656 5711880 +1617312 5711816 1617736 5711920 1617656 5711880 1617632 5711328 +1617312 5711816 1617656 5711880 1617632 5711328 1617184 5711760 +1617736 5711920 1617656 5711880 1617312 5711816 1617888 5712008 +1617632 5711328 1617552 5711848 1617656 5711880 1617680 5711880 +1617632 5711328 1617552 5711848 1617680 5711880 1617912 5711456 +1617680 5711880 1617736 5711920 1617912 5711456 1617552 5711848 +1617552 5711848 1617656 5711880 1617680 5711880 1617912 5711456 +1617552 5711848 1617312 5711816 1617656 5711880 1617680 5711880 +1617656 5711880 1617552 5711848 1617312 5711816 1617736 5711920 +1617656 5711880 1617552 5711848 1617736 5711920 1617680 5711880 +1617656 5711880 1617680 5711880 1617552 5711848 1617736 5711920 +1617552 5711848 1617632 5711328 1617312 5711816 1617736 5711920 +1617632 5711328 1617312 5711816 1617552 5711848 1617912 5711456 +1617312 5711816 1617552 5711848 1617632 5711328 1617184 5711760 +1617312 5711816 1617888 5712008 1617736 5711920 1617552 5711848 +1627384 5719672 1617728 5707184 1613592 5703136 1627336 5719640 +1613592 5703136 1620104 5713768 1627336 5719640 1617728 5707184 +1613592 5703136 1618184 5711672 1620104 5713768 1617728 5707184 +1618184 5711672 1620040 5713712 1620104 5713768 1617728 5707184 +1618184 5711672 1620040 5713712 1617728 5707184 1613592 5703136 +1620040 5713712 1620072 5713752 1620104 5713768 1617728 5707184 +1620104 5713768 1620160 5713848 1627336 5719640 1617728 5707184 +1620160 5713848 1620512 5714368 1627336 5719640 1617728 5707184 +1620104 5713768 1620160 5713848 1617728 5707184 1620040 5713712 +1627336 5719640 1627384 5719672 1617728 5707184 1620160 5713848 +1663880 5646248 1617728 5707184 1627384 5719672 1663944 5646256 +1617728 5707184 1663880 5646248 1613592 5703136 1618184 5711672 +1627384 5719672 1663880 5646248 1617728 5707184 1627336 5719640 +1618184 5711672 1618264 5711808 1620040 5713712 1617728 5707184 +1620040 5713712 1620104 5713768 1617728 5707184 1618264 5711808 +1618184 5711672 1618264 5711808 1617728 5707184 1613592 5703136 +1613592 5703136 1618088 5711560 1618184 5711672 1617728 5707184 +1618184 5711672 1618264 5711808 1617728 5707184 1618088 5711560 +1613592 5703136 1618088 5711560 1617728 5707184 1663880 5646248 +1613592 5703136 1617144 5710648 1618088 5711560 1617728 5707184 +1613592 5703136 1617040 5710544 1617144 5710648 1617728 5707184 +1613592 5703136 1614680 5707680 1617040 5710544 1617728 5707184 +1614680 5707680 1614696 5707712 1617040 5710544 1617728 5707184 +1614696 5707712 1614704 5707744 1617040 5710544 1617728 5707184 +1614704 5707744 1616712 5710416 1617040 5710544 1617728 5707184 +1614704 5707744 1616712 5710416 1617728 5707184 1614696 5707712 +1614704 5707744 1614696 5707848 1616712 5710416 1617728 5707184 +1614704 5707744 1614696 5707848 1617728 5707184 1614696 5707712 +1614696 5707848 1614688 5707952 1616712 5710416 1617728 5707184 +1614696 5707848 1614688 5707952 1617728 5707184 1614704 5707744 +1614688 5707952 1616568 5710400 1616712 5710416 1617728 5707184 +1614688 5707952 1614664 5708048 1616568 5710400 1617728 5707184 +1614664 5708048 1616376 5710416 1616568 5710400 1617728 5707184 +1616568 5710400 1616712 5710416 1617728 5707184 1614664 5708048 +1614688 5707952 1614664 5708048 1617728 5707184 1614696 5707848 +1616712 5710416 1617040 5710544 1617728 5707184 1616568 5710400 +1614696 5707712 1614704 5707744 1617728 5707184 1614680 5707680 +1614680 5707680 1614696 5707712 1617728 5707184 1613592 5703136 +1617040 5710544 1617144 5710648 1617728 5707184 1616712 5710416 +1613592 5703136 1614680 5707680 1617728 5707184 1663880 5646248 +1617144 5710648 1617912 5711456 1618088 5711560 1617728 5707184 +1617144 5710648 1618088 5711560 1617728 5707184 1617040 5710544 +1618088 5711560 1618184 5711672 1617728 5707184 1617144 5710648 +1618264 5711808 1619952 5713672 1620040 5713712 1617728 5707184 +1613592 5703136 1617728 5707184 1663880 5646248 1611560 5699312 +1663880 5646248 1611528 5699256 1611560 5699312 1617728 5707184 +1613592 5703136 1614680 5707680 1617728 5707184 1611560 5699312 +1617728 5707184 1627384 5719672 1663880 5646248 1611528 5699256 +1663880 5646248 1601624 5681136 1611528 5699256 1617728 5707184 +1613592 5703136 1617728 5707184 1611560 5699312 1613464 5703016 +1611560 5699312 1613592 5703136 1617728 5707184 1611528 5699256 +1613592 5703136 1613584 5703232 1614680 5707680 1617728 5707184 +1614680 5707680 1614696 5707712 1617728 5707184 1613584 5703232 +1613592 5703136 1613584 5703232 1617728 5707184 1611560 5699312 +1613584 5703232 1614648 5707656 1614680 5707680 1617728 5707184 +1614680 5707680 1614696 5707712 1617728 5707184 1614648 5707656 +1613584 5703232 1614576 5707608 1614648 5707656 1617728 5707184 +1613584 5703232 1613552 5703272 1614576 5707608 1617728 5707184 +1614648 5707656 1614680 5707680 1617728 5707184 1614576 5707608 +1613584 5703232 1614576 5707608 1617728 5707184 1613592 5703136 +1663880 5646248 1617792 5707104 1627384 5719672 1663944 5646256 +1617728 5707184 1617792 5707104 1663880 5646248 1611528 5699256 +1617728 5707184 1617792 5707104 1611528 5699256 1611560 5699312 +1617792 5707104 1663880 5646248 1611528 5699256 1611560 5699312 +1617728 5707184 1627384 5719672 1617792 5707104 1611560 5699312 +1627384 5719672 1617792 5707104 1617728 5707184 1627336 5719640 +1617728 5707184 1620160 5713848 1627336 5719640 1617792 5707104 +1620160 5713848 1620512 5714368 1627336 5719640 1617792 5707104 +1617728 5707184 1620104 5713768 1620160 5713848 1617792 5707104 +1617728 5707184 1620040 5713712 1620104 5713768 1617792 5707104 +1617728 5707184 1618264 5711808 1620040 5713712 1617792 5707104 +1620040 5713712 1620072 5713752 1620104 5713768 1617792 5707104 +1620104 5713768 1620160 5713848 1617792 5707104 1620040 5713712 +1620040 5713712 1620104 5713768 1617792 5707104 1618264 5711808 +1620160 5713848 1627336 5719640 1617792 5707104 1620104 5713768 +1617792 5707104 1611560 5699312 1617728 5707184 1618264 5711808 +1627336 5719640 1627384 5719672 1617792 5707104 1620160 5713848 +1617792 5707104 1627384 5719672 1663880 5646248 1611528 5699256 +1627384 5719672 1663880 5646248 1617792 5707104 1627336 5719640 +1663880 5646248 1601624 5681136 1611528 5699256 1617792 5707104 +1617728 5707184 1618184 5711672 1618264 5711808 1617792 5707104 +1618264 5711808 1620040 5713712 1617792 5707104 1618184 5711672 +1617728 5707184 1618088 5711560 1618184 5711672 1617792 5707104 +1617728 5707184 1618088 5711560 1617792 5707104 1611560 5699312 +1618184 5711672 1618264 5711808 1617792 5707104 1618088 5711560 +1617728 5707184 1617144 5710648 1618088 5711560 1617792 5707104 +1618264 5711808 1619952 5713672 1620040 5713712 1617792 5707104 +1617728 5707184 1617792 5707104 1611560 5699312 1613592 5703136 +1617792 5707104 1611528 5699256 1611560 5699312 1613592 5703136 +1617728 5707184 1617792 5707104 1613592 5703136 1613584 5703232 +1617728 5707184 1618088 5711560 1617792 5707104 1613584 5703232 +1611560 5699312 1613464 5703016 1613592 5703136 1617792 5707104 +1617792 5707104 1611560 5699312 1613592 5703136 1613584 5703232 +1617728 5707184 1617792 5707104 1613584 5703232 1614576 5707608 +1617792 5707104 1613592 5703136 1613584 5703232 1614576 5707608 +1617728 5707184 1618088 5711560 1617792 5707104 1614576 5707608 +1613584 5703232 1613552 5703272 1614576 5707608 1617792 5707104 +1617728 5707184 1617792 5707104 1614576 5707608 1614648 5707656 +1617728 5707184 1618088 5711560 1617792 5707104 1614648 5707656 +1617728 5707184 1617792 5707104 1614648 5707656 1614680 5707680 +1617792 5707104 1613584 5703232 1614576 5707608 1614648 5707656 +1663880 5646248 1617824 5707096 1627384 5719672 1663944 5646256 +1617792 5707104 1617824 5707096 1663880 5646248 1611528 5699256 +1617792 5707104 1617824 5707096 1611528 5699256 1611560 5699312 +1617792 5707104 1617824 5707096 1611560 5699312 1613592 5703136 +1617824 5707096 1611528 5699256 1611560 5699312 1613592 5703136 +1617824 5707096 1663880 5646248 1611528 5699256 1611560 5699312 +1617792 5707104 1627384 5719672 1617824 5707096 1613592 5703136 +1627384 5719672 1617824 5707096 1617792 5707104 1627336 5719640 +1617792 5707104 1620160 5713848 1627336 5719640 1617824 5707096 +1620160 5713848 1620512 5714368 1627336 5719640 1617824 5707096 +1617792 5707104 1620104 5713768 1620160 5713848 1617824 5707096 +1617792 5707104 1620040 5713712 1620104 5713768 1617824 5707096 +1620040 5713712 1620072 5713752 1620104 5713768 1617824 5707096 +1617792 5707104 1618264 5711808 1620040 5713712 1617824 5707096 +1617792 5707104 1618184 5711672 1618264 5711808 1617824 5707096 +1620040 5713712 1620104 5713768 1617824 5707096 1618264 5711808 +1618264 5711808 1620040 5713712 1617824 5707096 1618184 5711672 +1620104 5713768 1620160 5713848 1617824 5707096 1620040 5713712 +1620160 5713848 1627336 5719640 1617824 5707096 1620104 5713768 +1617824 5707096 1613592 5703136 1617792 5707104 1618184 5711672 +1627336 5719640 1627384 5719672 1617824 5707096 1620160 5713848 +1663880 5646248 1601624 5681136 1611528 5699256 1617824 5707096 +1617792 5707104 1618088 5711560 1618184 5711672 1617824 5707096 +1618184 5711672 1618264 5711808 1617824 5707096 1618088 5711560 +1617792 5707104 1617728 5707184 1618088 5711560 1617824 5707096 +1617792 5707104 1617728 5707184 1617824 5707096 1613592 5703136 +1618088 5711560 1618184 5711672 1617824 5707096 1617728 5707184 +1617728 5707184 1617144 5710648 1618088 5711560 1617824 5707096 +1618264 5711808 1619952 5713672 1620040 5713712 1617824 5707096 +1617824 5707096 1627384 5719672 1663880 5646248 1611528 5699256 +1627384 5719672 1663880 5646248 1617824 5707096 1627336 5719640 +1611560 5699312 1613464 5703016 1613592 5703136 1617824 5707096 +1617792 5707104 1617824 5707096 1613592 5703136 1613584 5703232 +1617824 5707096 1611560 5699312 1613592 5703136 1613584 5703232 +1617792 5707104 1617824 5707096 1613584 5703232 1614576 5707608 +1617792 5707104 1617728 5707184 1617824 5707096 1613584 5703232 +1663880 5646248 1617856 5707112 1627384 5719672 1663944 5646256 +1617824 5707096 1617856 5707112 1663880 5646248 1611528 5699256 +1617824 5707096 1617856 5707112 1611528 5699256 1611560 5699312 +1617824 5707096 1617856 5707112 1611560 5699312 1613592 5703136 +1617824 5707096 1617856 5707112 1613592 5703136 1613584 5703232 +1617856 5707112 1611528 5699256 1611560 5699312 1613592 5703136 +1617856 5707112 1627384 5719672 1663880 5646248 1611528 5699256 +1663880 5646248 1601624 5681136 1611528 5699256 1617856 5707112 +1617856 5707112 1663880 5646248 1611528 5699256 1611560 5699312 +1617824 5707096 1627384 5719672 1617856 5707112 1613592 5703136 +1627384 5719672 1617856 5707112 1617824 5707096 1627336 5719640 +1617824 5707096 1620160 5713848 1627336 5719640 1617856 5707112 +1620160 5713848 1620512 5714368 1627336 5719640 1617856 5707112 +1620512 5714368 1620552 5714440 1627336 5719640 1617856 5707112 +1617824 5707096 1620104 5713768 1620160 5713848 1617856 5707112 +1617824 5707096 1620040 5713712 1620104 5713768 1617856 5707112 +1620040 5713712 1620072 5713752 1620104 5713768 1617856 5707112 +1617824 5707096 1618264 5711808 1620040 5713712 1617856 5707112 +1617824 5707096 1618184 5711672 1618264 5711808 1617856 5707112 +1617824 5707096 1618088 5711560 1618184 5711672 1617856 5707112 +1618264 5711808 1620040 5713712 1617856 5707112 1618184 5711672 +1618184 5711672 1618264 5711808 1617856 5707112 1618088 5711560 +1620040 5713712 1620104 5713768 1617856 5707112 1618264 5711808 +1620104 5713768 1620160 5713848 1617856 5707112 1620040 5713712 +1620160 5713848 1620512 5714368 1617856 5707112 1620104 5713768 +1627384 5719672 1663880 5646248 1617856 5707112 1627336 5719640 +1620160 5713848 1620272 5714120 1620512 5714368 1617856 5707112 +1617824 5707096 1617728 5707184 1618088 5711560 1617856 5707112 +1618088 5711560 1618184 5711672 1617856 5707112 1617728 5707184 +1617824 5707096 1617792 5707104 1617728 5707184 1617856 5707112 +1617728 5707184 1618088 5711560 1617856 5707112 1617792 5707104 +1617728 5707184 1617144 5710648 1618088 5711560 1617856 5707112 +1618088 5711560 1618184 5711672 1617856 5707112 1617144 5710648 +1617144 5710648 1617912 5711456 1618088 5711560 1617856 5707112 +1617728 5707184 1617144 5710648 1617856 5707112 1617792 5707104 +1617728 5707184 1617040 5710544 1617144 5710648 1617856 5707112 +1618264 5711808 1619952 5713672 1620040 5713712 1617856 5707112 +1617856 5707112 1613592 5703136 1617824 5707096 1617792 5707104 +1627336 5719640 1627384 5719672 1617856 5707112 1620512 5714368 +1611560 5699312 1613464 5703016 1613592 5703136 1617856 5707112 +1663880 5646248 1617904 5707152 1627384 5719672 1663944 5646256 +1617856 5707112 1617904 5707152 1663880 5646248 1611528 5699256 +1617904 5707152 1627384 5719672 1663880 5646248 1611528 5699256 +1617856 5707112 1627384 5719672 1617904 5707152 1611528 5699256 +1627384 5719672 1617904 5707152 1617856 5707112 1627336 5719640 +1627384 5719672 1663880 5646248 1617904 5707152 1627336 5719640 +1617904 5707152 1611528 5699256 1617856 5707112 1627336 5719640 +1663880 5646248 1601624 5681136 1611528 5699256 1617904 5707152 +1617856 5707112 1617904 5707152 1611528 5699256 1611560 5699312 +1617856 5707112 1617904 5707152 1611560 5699312 1613592 5703136 +1617904 5707152 1663880 5646248 1611528 5699256 1611560 5699312 +1617856 5707112 1627336 5719640 1617904 5707152 1611560 5699312 +1617856 5707112 1620512 5714368 1627336 5719640 1617904 5707152 +1617856 5707112 1620160 5713848 1620512 5714368 1617904 5707152 +1620512 5714368 1620552 5714440 1627336 5719640 1617904 5707152 +1617856 5707112 1620104 5713768 1620160 5713848 1617904 5707152 +1620160 5713848 1620512 5714368 1617904 5707152 1620104 5713768 +1617856 5707112 1620040 5713712 1620104 5713768 1617904 5707152 +1620040 5713712 1620072 5713752 1620104 5713768 1617904 5707152 +1617856 5707112 1618264 5711808 1620040 5713712 1617904 5707152 +1617856 5707112 1618184 5711672 1618264 5711808 1617904 5707152 +1617856 5707112 1618088 5711560 1618184 5711672 1617904 5707152 +1617856 5707112 1617144 5710648 1618088 5711560 1617904 5707152 +1618184 5711672 1618264 5711808 1617904 5707152 1618088 5711560 +1618088 5711560 1618184 5711672 1617904 5707152 1617144 5710648 +1618264 5711808 1620040 5713712 1617904 5707152 1618184 5711672 +1620040 5713712 1620104 5713768 1617904 5707152 1618264 5711808 +1620104 5713768 1620160 5713848 1617904 5707152 1620040 5713712 +1617856 5707112 1617144 5710648 1617904 5707152 1611560 5699312 +1627336 5719640 1627384 5719672 1617904 5707152 1620512 5714368 +1620160 5713848 1620272 5714120 1620512 5714368 1617904 5707152 +1617144 5710648 1617912 5711456 1618088 5711560 1617904 5707152 +1617856 5707112 1617728 5707184 1617144 5710648 1617904 5707152 +1617144 5710648 1618088 5711560 1617904 5707152 1617728 5707184 +1617856 5707112 1617728 5707184 1617904 5707152 1611560 5699312 +1617856 5707112 1617792 5707104 1617728 5707184 1617904 5707152 +1617728 5707184 1617040 5710544 1617144 5710648 1617904 5707152 +1617144 5710648 1618088 5711560 1617904 5707152 1617040 5710544 +1617728 5707184 1616712 5710416 1617040 5710544 1617904 5707152 +1617728 5707184 1617040 5710544 1617904 5707152 1617856 5707112 +1618264 5711808 1619952 5713672 1620040 5713712 1617904 5707152 +1620512 5714368 1627336 5719640 1617904 5707152 1620160 5713848 +1627336 5719640 1617944 5707208 1620512 5714368 1620552 5714440 +1617904 5707152 1617944 5707208 1627336 5719640 1627384 5719672 +1617904 5707152 1620512 5714368 1617944 5707208 1627384 5719672 +1617904 5707152 1617944 5707208 1627384 5719672 1663880 5646248 +1617904 5707152 1617944 5707208 1663880 5646248 1611528 5699256 +1617904 5707152 1620512 5714368 1617944 5707208 1663880 5646248 +1617944 5707208 1620512 5714368 1627336 5719640 1627384 5719672 +1627384 5719672 1663944 5646256 1663880 5646248 1617944 5707208 +1617944 5707208 1627336 5719640 1627384 5719672 1663880 5646248 +1620512 5714368 1617944 5707208 1617904 5707152 1620160 5713848 +1617944 5707208 1663880 5646248 1617904 5707152 1620160 5713848 +1620512 5714368 1627336 5719640 1617944 5707208 1620160 5713848 +1617904 5707152 1620104 5713768 1620160 5713848 1617944 5707208 +1617904 5707152 1620104 5713768 1617944 5707208 1663880 5646248 +1617904 5707152 1620040 5713712 1620104 5713768 1617944 5707208 +1617904 5707152 1620040 5713712 1617944 5707208 1663880 5646248 +1620104 5713768 1620160 5713848 1617944 5707208 1620040 5713712 +1620040 5713712 1620072 5713752 1620104 5713768 1617944 5707208 +1617904 5707152 1618264 5711808 1620040 5713712 1617944 5707208 +1617904 5707152 1618264 5711808 1617944 5707208 1663880 5646248 +1617904 5707152 1618184 5711672 1618264 5711808 1617944 5707208 +1617904 5707152 1618184 5711672 1617944 5707208 1663880 5646248 +1617904 5707152 1618088 5711560 1618184 5711672 1617944 5707208 +1617904 5707152 1618088 5711560 1617944 5707208 1663880 5646248 +1617904 5707152 1617144 5710648 1618088 5711560 1617944 5707208 +1617904 5707152 1617144 5710648 1617944 5707208 1663880 5646248 +1617904 5707152 1617040 5710544 1617144 5710648 1617944 5707208 +1617904 5707152 1617040 5710544 1617944 5707208 1663880 5646248 +1618088 5711560 1618184 5711672 1617944 5707208 1617144 5710648 +1617144 5710648 1618088 5711560 1617944 5707208 1617040 5710544 +1618184 5711672 1618264 5711808 1617944 5707208 1618088 5711560 +1618264 5711808 1620040 5713712 1617944 5707208 1618184 5711672 +1620040 5713712 1620104 5713768 1617944 5707208 1618264 5711808 +1620512 5714368 1617944 5707208 1620160 5713848 1620272 5714120 +1617144 5710648 1617912 5711456 1618088 5711560 1617944 5707208 +1617904 5707152 1617728 5707184 1617040 5710544 1617944 5707208 +1617904 5707152 1617728 5707184 1617944 5707208 1663880 5646248 +1617040 5710544 1617144 5710648 1617944 5707208 1617728 5707184 +1617728 5707184 1616712 5710416 1617040 5710544 1617944 5707208 +1617904 5707152 1617856 5707112 1617728 5707184 1617944 5707208 +1618264 5711808 1619952 5713672 1620040 5713712 1617944 5707208 +1620160 5713848 1620512 5714368 1617944 5707208 1620104 5713768 +1617944 5707208 1617984 5707264 1627336 5719640 1627384 5719672 +1617944 5707208 1620512 5714368 1617984 5707264 1627384 5719672 +1620512 5714368 1617984 5707264 1617944 5707208 1620160 5713848 +1617984 5707264 1627384 5719672 1617944 5707208 1620160 5713848 +1620512 5714368 1627336 5719640 1617984 5707264 1620160 5713848 +1627336 5719640 1617984 5707264 1620512 5714368 1620552 5714440 +1617944 5707208 1617984 5707264 1627384 5719672 1663880 5646248 +1617944 5707208 1617984 5707264 1663880 5646248 1617904 5707152 +1617984 5707264 1627336 5719640 1627384 5719672 1663880 5646248 +1617944 5707208 1620160 5713848 1617984 5707264 1663880 5646248 +1627384 5719672 1663944 5646256 1663880 5646248 1617984 5707264 +1617984 5707264 1620512 5714368 1627336 5719640 1627384 5719672 +1620512 5714368 1617984 5707264 1620160 5713848 1620272 5714120 +1617944 5707208 1620104 5713768 1620160 5713848 1617984 5707264 +1617944 5707208 1620104 5713768 1617984 5707264 1663880 5646248 +1620160 5713848 1620512 5714368 1617984 5707264 1620104 5713768 +1617944 5707208 1620040 5713712 1620104 5713768 1617984 5707264 +1617944 5707208 1620040 5713712 1617984 5707264 1663880 5646248 +1620040 5713712 1620072 5713752 1620104 5713768 1617984 5707264 +1617944 5707208 1618264 5711808 1620040 5713712 1617984 5707264 +1617944 5707208 1618264 5711808 1617984 5707264 1663880 5646248 +1620040 5713712 1620104 5713768 1617984 5707264 1618264 5711808 +1617944 5707208 1618184 5711672 1618264 5711808 1617984 5707264 +1617944 5707208 1618184 5711672 1617984 5707264 1663880 5646248 +1617944 5707208 1618088 5711560 1618184 5711672 1617984 5707264 +1617944 5707208 1618088 5711560 1617984 5707264 1663880 5646248 +1617944 5707208 1617144 5710648 1618088 5711560 1617984 5707264 +1617944 5707208 1617144 5710648 1617984 5707264 1663880 5646248 +1617944 5707208 1617040 5710544 1617144 5710648 1617984 5707264 +1617944 5707208 1617040 5710544 1617984 5707264 1663880 5646248 +1617944 5707208 1617728 5707184 1617040 5710544 1617984 5707264 +1617944 5707208 1617728 5707184 1617984 5707264 1663880 5646248 +1617144 5710648 1618088 5711560 1617984 5707264 1617040 5710544 +1617040 5710544 1617144 5710648 1617984 5707264 1617728 5707184 +1618088 5711560 1618184 5711672 1617984 5707264 1617144 5710648 +1617728 5707184 1616712 5710416 1617040 5710544 1617984 5707264 +1617728 5707184 1616712 5710416 1617984 5707264 1617944 5707208 +1617040 5710544 1617144 5710648 1617984 5707264 1616712 5710416 +1617728 5707184 1616568 5710400 1616712 5710416 1617984 5707264 +1618184 5711672 1618264 5711808 1617984 5707264 1618088 5711560 +1618264 5711808 1620040 5713712 1617984 5707264 1618184 5711672 +1617144 5710648 1617912 5711456 1618088 5711560 1617984 5707264 +1617944 5707208 1617904 5707152 1617728 5707184 1617984 5707264 +1618264 5711808 1619952 5713672 1620040 5713712 1617984 5707264 +1620104 5713768 1620160 5713848 1617984 5707264 1620040 5713712 +1627384 5719672 1618032 5707320 1617984 5707264 1627336 5719640 +1618032 5707320 1663880 5646248 1617984 5707264 1627336 5719640 +1627384 5719672 1663880 5646248 1618032 5707320 1627336 5719640 +1663880 5646248 1618032 5707320 1627384 5719672 1663944 5646256 +1617984 5707264 1618032 5707320 1663880 5646248 1617944 5707208 +1663880 5646248 1617904 5707152 1617944 5707208 1618032 5707320 +1663880 5646248 1611528 5699256 1617904 5707152 1618032 5707320 +1617984 5707264 1627336 5719640 1618032 5707320 1617944 5707208 +1618032 5707320 1627384 5719672 1663880 5646248 1617904 5707152 +1617944 5707208 1617984 5707264 1618032 5707320 1617904 5707152 +1617984 5707264 1620512 5714368 1627336 5719640 1618032 5707320 +1627336 5719640 1627384 5719672 1618032 5707320 1620512 5714368 +1617984 5707264 1620512 5714368 1618032 5707320 1617944 5707208 +1617984 5707264 1620160 5713848 1620512 5714368 1618032 5707320 +1617984 5707264 1620104 5713768 1620160 5713848 1618032 5707320 +1617984 5707264 1620104 5713768 1618032 5707320 1617944 5707208 +1620160 5713848 1620512 5714368 1618032 5707320 1620104 5713768 +1620512 5714368 1620552 5714440 1627336 5719640 1618032 5707320 +1620512 5714368 1627336 5719640 1618032 5707320 1620160 5713848 +1620160 5713848 1620272 5714120 1620512 5714368 1618032 5707320 +1617984 5707264 1620040 5713712 1620104 5713768 1618032 5707320 +1620104 5713768 1620160 5713848 1618032 5707320 1620040 5713712 +1617984 5707264 1620040 5713712 1618032 5707320 1617944 5707208 +1617984 5707264 1618264 5711808 1620040 5713712 1618032 5707320 +1617984 5707264 1618264 5711808 1618032 5707320 1617944 5707208 +1620040 5713712 1620072 5713752 1620104 5713768 1618032 5707320 +1617984 5707264 1618184 5711672 1618264 5711808 1618032 5707320 +1617984 5707264 1618184 5711672 1618032 5707320 1617944 5707208 +1618264 5711808 1620040 5713712 1618032 5707320 1618184 5711672 +1617984 5707264 1618088 5711560 1618184 5711672 1618032 5707320 +1617984 5707264 1618088 5711560 1618032 5707320 1617944 5707208 +1617984 5707264 1617144 5710648 1618088 5711560 1618032 5707320 +1617984 5707264 1617144 5710648 1618032 5707320 1617944 5707208 +1617984 5707264 1617040 5710544 1617144 5710648 1618032 5707320 +1617984 5707264 1617040 5710544 1618032 5707320 1617944 5707208 +1617984 5707264 1616712 5710416 1617040 5710544 1618032 5707320 +1617984 5707264 1616712 5710416 1618032 5707320 1617944 5707208 +1617040 5710544 1617144 5710648 1618032 5707320 1616712 5710416 +1617144 5710648 1618088 5711560 1618032 5707320 1617040 5710544 +1617984 5707264 1617728 5707184 1616712 5710416 1618032 5707320 +1617984 5707264 1617728 5707184 1618032 5707320 1617944 5707208 +1617984 5707264 1617944 5707208 1617728 5707184 1618032 5707320 +1616712 5710416 1617040 5710544 1618032 5707320 1617728 5707184 +1617728 5707184 1616568 5710400 1616712 5710416 1618032 5707320 +1618088 5711560 1618184 5711672 1618032 5707320 1617144 5710648 +1618184 5711672 1618264 5711808 1618032 5707320 1618088 5711560 +1617144 5710648 1617912 5711456 1618088 5711560 1618032 5707320 +1618264 5711808 1619952 5713672 1620040 5713712 1618032 5707320 +1620040 5713712 1620104 5713768 1618032 5707320 1618264 5711808 +1618032 5707320 1618072 5707384 1627336 5719640 1627384 5719672 +1618032 5707320 1620512 5714368 1618072 5707384 1627384 5719672 +1618032 5707320 1618072 5707384 1627384 5719672 1663880 5646248 +1618072 5707384 1627336 5719640 1627384 5719672 1663880 5646248 +1618032 5707320 1618072 5707384 1663880 5646248 1617904 5707152 +1618032 5707320 1620512 5714368 1618072 5707384 1663880 5646248 +1618072 5707384 1620512 5714368 1627336 5719640 1627384 5719672 +1627336 5719640 1618072 5707384 1620512 5714368 1620552 5714440 +1627384 5719672 1663944 5646256 1663880 5646248 1618072 5707384 +1620512 5714368 1618072 5707384 1618032 5707320 1620160 5713848 +1618032 5707320 1620104 5713768 1620160 5713848 1618072 5707384 +1618032 5707320 1620040 5713712 1620104 5713768 1618072 5707384 +1620104 5713768 1620160 5713848 1618072 5707384 1620040 5713712 +1618072 5707384 1663880 5646248 1618032 5707320 1620040 5713712 +1620512 5714368 1627336 5719640 1618072 5707384 1620160 5713848 +1620040 5713712 1620072 5713752 1620104 5713768 1618072 5707384 +1620160 5713848 1620512 5714368 1618072 5707384 1620104 5713768 +1620512 5714368 1618072 5707384 1620160 5713848 1620272 5714120 +1618032 5707320 1618264 5711808 1620040 5713712 1618072 5707384 +1620040 5713712 1620104 5713768 1618072 5707384 1618264 5711808 +1618032 5707320 1618264 5711808 1618072 5707384 1663880 5646248 +1618032 5707320 1618184 5711672 1618264 5711808 1618072 5707384 +1618032 5707320 1618184 5711672 1618072 5707384 1663880 5646248 +1618032 5707320 1618088 5711560 1618184 5711672 1618072 5707384 +1618032 5707320 1618088 5711560 1618072 5707384 1663880 5646248 +1618184 5711672 1618264 5711808 1618072 5707384 1618088 5711560 +1618032 5707320 1617144 5710648 1618088 5711560 1618072 5707384 +1618032 5707320 1617144 5710648 1618072 5707384 1663880 5646248 +1618032 5707320 1617040 5710544 1617144 5710648 1618072 5707384 +1618032 5707320 1617040 5710544 1618072 5707384 1663880 5646248 +1618032 5707320 1616712 5710416 1617040 5710544 1618072 5707384 +1618032 5707320 1616712 5710416 1618072 5707384 1663880 5646248 +1618032 5707320 1617728 5707184 1616712 5710416 1618072 5707384 +1618032 5707320 1617728 5707184 1618072 5707384 1663880 5646248 +1616712 5710416 1617040 5710544 1618072 5707384 1617728 5707184 +1617040 5710544 1617144 5710648 1618072 5707384 1616712 5710416 +1617728 5707184 1616568 5710400 1616712 5710416 1618072 5707384 +1618032 5707320 1617984 5707264 1617728 5707184 1618072 5707384 +1617144 5710648 1618088 5711560 1618072 5707384 1617040 5710544 +1618088 5711560 1618184 5711672 1618072 5707384 1617144 5710648 +1617144 5710648 1617912 5711456 1618088 5711560 1618072 5707384 +1617144 5710648 1617912 5711456 1618072 5707384 1617040 5710544 +1618088 5711560 1618184 5711672 1618072 5707384 1617912 5711456 +1617144 5710648 1617256 5710832 1617912 5711456 1618072 5707384 +1618264 5711808 1619952 5713672 1620040 5713712 1618072 5707384 +1618264 5711808 1620040 5713712 1618072 5707384 1618184 5711672 +1627384 5719672 1618120 5707440 1618072 5707384 1627336 5719640 +1618072 5707384 1618120 5707440 1663880 5646248 1618032 5707320 +1663880 5646248 1617904 5707152 1618032 5707320 1618120 5707440 +1618072 5707384 1620512 5714368 1627336 5719640 1618120 5707440 +1627336 5719640 1627384 5719672 1618120 5707440 1620512 5714368 +1618120 5707440 1618032 5707320 1618072 5707384 1620512 5714368 +1618072 5707384 1620160 5713848 1620512 5714368 1618120 5707440 +1620512 5714368 1627336 5719640 1618120 5707440 1620160 5713848 +1618072 5707384 1620160 5713848 1618120 5707440 1618032 5707320 +1618120 5707440 1627384 5719672 1663880 5646248 1618032 5707320 +1627384 5719672 1663880 5646248 1618120 5707440 1627336 5719640 +1620512 5714368 1620552 5714440 1627336 5719640 1618120 5707440 +1663880 5646248 1618120 5707440 1627384 5719672 1663944 5646256 +1618072 5707384 1620104 5713768 1620160 5713848 1618120 5707440 +1618072 5707384 1620040 5713712 1620104 5713768 1618120 5707440 +1618072 5707384 1618264 5711808 1620040 5713712 1618120 5707440 +1620040 5713712 1620104 5713768 1618120 5707440 1618264 5711808 +1618072 5707384 1618264 5711808 1618120 5707440 1618032 5707320 +1620160 5713848 1620512 5714368 1618120 5707440 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1618120 5707440 +1620104 5713768 1620160 5713848 1618120 5707440 1620040 5713712 +1620160 5713848 1620272 5714120 1620512 5714368 1618120 5707440 +1618264 5711808 1619952 5713672 1620040 5713712 1618120 5707440 +1618072 5707384 1618184 5711672 1618264 5711808 1618120 5707440 +1618264 5711808 1620040 5713712 1618120 5707440 1618184 5711672 +1618072 5707384 1618184 5711672 1618120 5707440 1618032 5707320 +1618072 5707384 1618088 5711560 1618184 5711672 1618120 5707440 +1618072 5707384 1618088 5711560 1618120 5707440 1618032 5707320 +1618072 5707384 1617912 5711456 1618088 5711560 1618120 5707440 +1618072 5707384 1617912 5711456 1618120 5707440 1618032 5707320 +1618088 5711560 1618184 5711672 1618120 5707440 1617912 5711456 +1618072 5707384 1617144 5710648 1617912 5711456 1618120 5707440 +1618072 5707384 1617144 5710648 1618120 5707440 1618032 5707320 +1618072 5707384 1617040 5710544 1617144 5710648 1618120 5707440 +1618072 5707384 1617040 5710544 1618120 5707440 1618032 5707320 +1618072 5707384 1616712 5710416 1617040 5710544 1618120 5707440 +1618072 5707384 1616712 5710416 1618120 5707440 1618032 5707320 +1618072 5707384 1617728 5707184 1616712 5710416 1618120 5707440 +1618072 5707384 1617728 5707184 1618120 5707440 1618032 5707320 +1618072 5707384 1618032 5707320 1617728 5707184 1618120 5707440 +1616712 5710416 1617040 5710544 1618120 5707440 1617728 5707184 +1617728 5707184 1616568 5710400 1616712 5710416 1618120 5707440 +1617040 5710544 1617144 5710648 1618120 5707440 1616712 5710416 +1617912 5711456 1618088 5711560 1618120 5707440 1617144 5710648 +1617144 5710648 1617256 5710832 1617912 5711456 1618120 5707440 +1617144 5710648 1617912 5711456 1618120 5707440 1617040 5710544 +1618184 5711672 1618264 5711808 1618120 5707440 1618088 5711560 +1618120 5707440 1618184 5707536 1627336 5719640 1627384 5719672 +1620512 5714368 1618184 5707536 1618120 5707440 1620160 5713848 +1618120 5707440 1620104 5713768 1620160 5713848 1618184 5707536 +1620160 5713848 1620512 5714368 1618184 5707536 1620104 5713768 +1618120 5707440 1620104 5713768 1618184 5707536 1627384 5719672 +1618120 5707440 1618184 5707536 1627384 5719672 1663880 5646248 +1618184 5707536 1627336 5719640 1627384 5719672 1663880 5646248 +1618120 5707440 1618184 5707536 1663880 5646248 1618032 5707320 +1618120 5707440 1620104 5713768 1618184 5707536 1663880 5646248 +1618184 5707536 1620512 5714368 1627336 5719640 1627384 5719672 +1620512 5714368 1627336 5719640 1618184 5707536 1620160 5713848 +1627336 5719640 1618184 5707536 1620512 5714368 1620552 5714440 +1627384 5719672 1663944 5646256 1663880 5646248 1618184 5707536 +1618120 5707440 1620040 5713712 1620104 5713768 1618184 5707536 +1618120 5707440 1618264 5711808 1620040 5713712 1618184 5707536 +1618120 5707440 1618184 5711672 1618264 5711808 1618184 5707536 +1618264 5711808 1620040 5713712 1618184 5707536 1618184 5711672 +1620104 5713768 1620160 5713848 1618184 5707536 1620040 5713712 +1618120 5707440 1618184 5711672 1618184 5707536 1663880 5646248 +1620040 5713712 1620072 5713752 1620104 5713768 1618184 5707536 +1620040 5713712 1620104 5713768 1618184 5707536 1618264 5711808 +1620512 5714368 1618184 5707536 1620160 5713848 1620272 5714120 +1618264 5711808 1619952 5713672 1620040 5713712 1618184 5707536 +1618120 5707440 1618088 5711560 1618184 5711672 1618184 5707536 +1618184 5711672 1618264 5711808 1618184 5707536 1618088 5711560 +1618120 5707440 1618088 5711560 1618184 5707536 1663880 5646248 +1618120 5707440 1617912 5711456 1618088 5711560 1618184 5707536 +1618120 5707440 1617912 5711456 1618184 5707536 1663880 5646248 +1618120 5707440 1617144 5710648 1617912 5711456 1618184 5707536 +1618120 5707440 1617144 5710648 1618184 5707536 1663880 5646248 +1617912 5711456 1618088 5711560 1618184 5707536 1617144 5710648 +1617144 5710648 1617256 5710832 1617912 5711456 1618184 5707536 +1618120 5707440 1617040 5710544 1617144 5710648 1618184 5707536 +1618120 5707440 1617040 5710544 1618184 5707536 1663880 5646248 +1618120 5707440 1616712 5710416 1617040 5710544 1618184 5707536 +1618120 5707440 1616712 5710416 1618184 5707536 1663880 5646248 +1618120 5707440 1617728 5707184 1616712 5710416 1618184 5707536 +1618120 5707440 1617728 5707184 1618184 5707536 1663880 5646248 +1618120 5707440 1618072 5707384 1617728 5707184 1618184 5707536 +1617728 5707184 1616568 5710400 1616712 5710416 1618184 5707536 +1616712 5710416 1617040 5710544 1618184 5707536 1617728 5707184 +1617144 5710648 1617912 5711456 1618184 5707536 1617040 5710544 +1617040 5710544 1617144 5710648 1618184 5707536 1616712 5710416 +1618088 5711560 1618184 5711672 1618184 5707536 1617912 5711456 +1618184 5707536 1618184 5707576 1618264 5711808 1620040 5713712 +1618184 5707536 1618088 5711560 1618184 5707576 1620040 5713712 +1618184 5707576 1618184 5711672 1618264 5711808 1620040 5713712 +1618184 5707536 1618184 5707576 1620040 5713712 1620104 5713768 +1618184 5707536 1618088 5711560 1618184 5707576 1620104 5713768 +1618184 5707576 1618264 5711808 1620040 5713712 1620104 5713768 +1618184 5707536 1618184 5707576 1620104 5713768 1620160 5713848 +1618184 5707536 1618088 5711560 1618184 5707576 1620160 5713848 +1618184 5707536 1618184 5707576 1620160 5713848 1620512 5714368 +1620040 5713712 1620072 5713752 1620104 5713768 1618184 5707576 +1618184 5707576 1620040 5713712 1620104 5713768 1620160 5713848 +1618264 5711808 1619952 5713672 1620040 5713712 1618184 5707576 +1618184 5707536 1617912 5711456 1618088 5711560 1618184 5707576 +1618184 5707536 1617912 5711456 1618184 5707576 1620160 5713848 +1618088 5711560 1618184 5711672 1618184 5707576 1617912 5711456 +1618184 5707536 1617144 5710648 1617912 5711456 1618184 5707576 +1618184 5707536 1617144 5710648 1618184 5707576 1620160 5713848 +1618184 5707536 1617040 5710544 1617144 5710648 1618184 5707576 +1618184 5707536 1617040 5710544 1618184 5707576 1620160 5713848 +1617144 5710648 1617912 5711456 1618184 5707576 1617040 5710544 +1617144 5710648 1617256 5710832 1617912 5711456 1618184 5707576 +1618184 5707536 1616712 5710416 1617040 5710544 1618184 5707576 +1618184 5707536 1616712 5710416 1618184 5707576 1620160 5713848 +1618184 5707536 1617728 5707184 1616712 5710416 1618184 5707576 +1618184 5707536 1617728 5707184 1618184 5707576 1620160 5713848 +1618184 5707536 1618120 5707440 1617728 5707184 1618184 5707576 +1618184 5707536 1618120 5707440 1618184 5707576 1620160 5713848 +1618120 5707440 1618072 5707384 1617728 5707184 1618184 5707576 +1618072 5707384 1618032 5707320 1617728 5707184 1618184 5707576 +1618120 5707440 1618072 5707384 1618184 5707576 1618184 5707536 +1617728 5707184 1616568 5710400 1616712 5710416 1618184 5707576 +1617728 5707184 1616712 5710416 1618184 5707576 1618072 5707384 +1617040 5710544 1617144 5710648 1618184 5707576 1616712 5710416 +1616712 5710416 1617040 5710544 1618184 5707576 1617728 5707184 +1617912 5711456 1618088 5711560 1618184 5707576 1617144 5710648 +1616712 5710416 1618112 5707624 1617728 5707184 1616568 5710400 +1616712 5710416 1618184 5707576 1618112 5707624 1616568 5710400 +1618112 5707624 1618184 5707576 1617728 5707184 1616568 5710400 +1617728 5707184 1614664 5708048 1616568 5710400 1618112 5707624 +1617728 5707184 1618112 5707624 1618184 5707576 1618072 5707384 +1618112 5707624 1616712 5710416 1618184 5707576 1618072 5707384 +1617728 5707184 1616568 5710400 1618112 5707624 1618072 5707384 +1618184 5707576 1618120 5707440 1618072 5707384 1618112 5707624 +1618184 5707576 1618120 5707440 1618112 5707624 1616712 5710416 +1617728 5707184 1618112 5707624 1618072 5707384 1618032 5707320 +1618184 5707576 1618184 5707536 1618120 5707440 1618112 5707624 +1618184 5707576 1618184 5707536 1618112 5707624 1616712 5710416 +1618120 5707440 1618072 5707384 1618112 5707624 1618184 5707536 +1618072 5707384 1617728 5707184 1618112 5707624 1618120 5707440 +1618184 5707576 1618112 5707624 1616712 5710416 1617040 5710544 +1618184 5707576 1618184 5707536 1618112 5707624 1617040 5710544 +1618112 5707624 1616568 5710400 1616712 5710416 1617040 5710544 +1618184 5707576 1618112 5707624 1617040 5710544 1617144 5710648 +1618184 5707576 1618184 5707536 1618112 5707624 1617144 5710648 +1618184 5707576 1618112 5707624 1617144 5710648 1617912 5711456 +1618184 5707576 1618184 5707536 1618112 5707624 1617912 5711456 +1618112 5707624 1617040 5710544 1617144 5710648 1617912 5711456 +1617144 5710648 1617256 5710832 1617912 5711456 1618112 5707624 +1618112 5707624 1616712 5710416 1617040 5710544 1617144 5710648 +1618184 5707576 1618112 5707624 1617912 5711456 1618088 5711560 +1618184 5707576 1618112 5707624 1618088 5711560 1618184 5711672 +1618184 5707576 1618184 5707536 1618112 5707624 1618088 5711560 +1618112 5707624 1617144 5710648 1617912 5711456 1618088 5711560 +1617728 5707184 1618080 5707632 1618112 5707624 1618072 5707384 +1618080 5707632 1616568 5710400 1618112 5707624 1618072 5707384 +1617728 5707184 1618080 5707632 1618072 5707384 1618032 5707320 +1618080 5707632 1618112 5707624 1618072 5707384 1618032 5707320 +1616568 5710400 1618080 5707632 1617728 5707184 1614664 5708048 +1618112 5707624 1618080 5707632 1616568 5710400 1616712 5710416 +1618112 5707624 1618080 5707632 1616712 5710416 1617040 5710544 +1618112 5707624 1618072 5707384 1618080 5707632 1617040 5710544 +1618080 5707632 1617728 5707184 1616568 5710400 1616712 5710416 +1618080 5707632 1616568 5710400 1616712 5710416 1617040 5710544 +1617728 5707184 1618080 5707632 1618032 5707320 1617984 5707264 +1618112 5707624 1618120 5707440 1618072 5707384 1618080 5707632 +1618112 5707624 1618120 5707440 1618080 5707632 1617040 5710544 +1618072 5707384 1618032 5707320 1618080 5707632 1618120 5707440 +1618112 5707624 1618184 5707536 1618120 5707440 1618080 5707632 +1618112 5707624 1618080 5707632 1617040 5710544 1617144 5710648 +1618080 5707632 1616712 5710416 1617040 5710544 1617144 5710648 +1618112 5707624 1618120 5707440 1618080 5707632 1617144 5710648 +1618112 5707624 1618080 5707632 1617144 5710648 1617912 5711456 +1617728 5707184 1616568 5710400 1618080 5707632 1618032 5707320 +1618080 5707632 1618048 5707616 1616568 5710400 1616712 5710416 +1618080 5707632 1617728 5707184 1618048 5707616 1616712 5710416 +1616568 5710400 1618048 5707616 1617728 5707184 1614664 5708048 +1616568 5710400 1618048 5707616 1614664 5708048 1616376 5710416 +1617728 5707184 1614688 5707952 1614664 5708048 1618048 5707616 +1618080 5707632 1618048 5707616 1616712 5710416 1617040 5710544 +1617728 5707184 1618048 5707616 1618080 5707632 1618032 5707320 +1618048 5707616 1616712 5710416 1618080 5707632 1618032 5707320 +1618080 5707632 1618072 5707384 1618032 5707320 1618048 5707616 +1618080 5707632 1618120 5707440 1618072 5707384 1618048 5707616 +1618080 5707632 1618120 5707440 1618048 5707616 1616712 5710416 +1618072 5707384 1618032 5707320 1618048 5707616 1618120 5707440 +1617728 5707184 1618048 5707616 1618032 5707320 1617984 5707264 +1617728 5707184 1618048 5707616 1617984 5707264 1617944 5707208 +1618080 5707632 1618112 5707624 1618120 5707440 1618048 5707616 +1618120 5707440 1618072 5707384 1618048 5707616 1618112 5707624 +1618080 5707632 1618112 5707624 1618048 5707616 1616712 5710416 +1618112 5707624 1618184 5707536 1618120 5707440 1618048 5707616 +1618120 5707440 1618072 5707384 1618048 5707616 1618184 5707536 +1618112 5707624 1618184 5707576 1618184 5707536 1618048 5707616 +1618112 5707624 1618184 5707536 1618048 5707616 1618080 5707632 +1618032 5707320 1617984 5707264 1618048 5707616 1618072 5707384 +1618048 5707616 1614664 5708048 1616568 5710400 1616712 5710416 +1618048 5707616 1617984 5707264 1617728 5707184 1614664 5708048 +1614664 5708048 1617960 5707536 1617728 5707184 1614688 5707952 +1618048 5707616 1617960 5707536 1614664 5708048 1616568 5710400 +1614664 5708048 1616376 5710416 1616568 5710400 1617960 5707536 +1617728 5707184 1614696 5707848 1614688 5707952 1617960 5707536 +1618048 5707616 1617960 5707536 1616568 5710400 1616712 5710416 +1618048 5707616 1617960 5707536 1616712 5710416 1618080 5707632 +1617960 5707536 1614664 5708048 1616568 5710400 1616712 5710416 +1618048 5707616 1617728 5707184 1617960 5707536 1616712 5710416 +1617728 5707184 1617960 5707536 1618048 5707616 1617984 5707264 +1617728 5707184 1617960 5707536 1617984 5707264 1617944 5707208 +1618048 5707616 1618032 5707320 1617984 5707264 1617960 5707536 +1618048 5707616 1618072 5707384 1618032 5707320 1617960 5707536 +1618048 5707616 1618120 5707440 1618072 5707384 1617960 5707536 +1618048 5707616 1618184 5707536 1618120 5707440 1617960 5707536 +1618032 5707320 1617984 5707264 1617960 5707536 1618072 5707384 +1618072 5707384 1618032 5707320 1617960 5707536 1618120 5707440 +1617960 5707536 1616712 5710416 1618048 5707616 1618120 5707440 +1617984 5707264 1617728 5707184 1617960 5707536 1618032 5707320 +1614664 5708048 1616568 5710400 1617960 5707536 1614688 5707952 +1617960 5707536 1617984 5707264 1617728 5707184 1614688 5707952 +1617960 5707536 1617912 5707496 1614688 5707952 1614664 5708048 +1614688 5707952 1617912 5707496 1617728 5707184 1614696 5707848 +1617960 5707536 1617912 5707496 1614664 5708048 1616568 5710400 +1614664 5708048 1616376 5710416 1616568 5710400 1617912 5707496 +1617912 5707496 1614688 5707952 1614664 5708048 1616568 5710400 +1617960 5707536 1617912 5707496 1616568 5710400 1616712 5710416 +1617960 5707536 1617912 5707496 1616712 5710416 1618048 5707616 +1617912 5707496 1614664 5708048 1616568 5710400 1616712 5710416 +1617960 5707536 1617728 5707184 1617912 5707496 1616712 5710416 +1617728 5707184 1617912 5707496 1617960 5707536 1617984 5707264 +1617728 5707184 1617912 5707496 1617984 5707264 1617944 5707208 +1617960 5707536 1618032 5707320 1617984 5707264 1617912 5707496 +1617960 5707536 1618072 5707384 1618032 5707320 1617912 5707496 +1617960 5707536 1618120 5707440 1618072 5707384 1617912 5707496 +1618032 5707320 1617984 5707264 1617912 5707496 1618072 5707384 +1617912 5707496 1616712 5710416 1617960 5707536 1618072 5707384 +1617984 5707264 1617728 5707184 1617912 5707496 1618032 5707320 +1617912 5707496 1617728 5707184 1614688 5707952 1614664 5708048 +1617728 5707184 1614688 5707952 1617912 5707496 1617984 5707264 +1614688 5707952 1617872 5707448 1617728 5707184 1614696 5707848 +1617912 5707496 1617872 5707448 1614688 5707952 1614664 5708048 +1617912 5707496 1617872 5707448 1614664 5708048 1616568 5710400 +1614664 5708048 1616376 5710416 1616568 5710400 1617872 5707448 +1617912 5707496 1617872 5707448 1616568 5710400 1616712 5710416 +1617872 5707448 1614688 5707952 1614664 5708048 1616568 5710400 +1617912 5707496 1617728 5707184 1617872 5707448 1616568 5710400 +1617728 5707184 1617872 5707448 1617912 5707496 1617984 5707264 +1617728 5707184 1617872 5707448 1617984 5707264 1617944 5707208 +1617728 5707184 1617872 5707448 1617944 5707208 1617904 5707152 +1617912 5707496 1618032 5707320 1617984 5707264 1617872 5707448 +1617912 5707496 1618072 5707384 1618032 5707320 1617872 5707448 +1617912 5707496 1617960 5707536 1618072 5707384 1617872 5707448 +1618032 5707320 1617984 5707264 1617872 5707448 1618072 5707384 +1617872 5707448 1616568 5710400 1617912 5707496 1618072 5707384 +1617872 5707448 1618032 5707320 1617984 5707264 1617944 5707208 +1617872 5707448 1617728 5707184 1614688 5707952 1614664 5708048 +1617728 5707184 1614688 5707952 1617872 5707448 1617944 5707208 +1614688 5707952 1617824 5707400 1617728 5707184 1614696 5707848 +1617728 5707184 1614704 5707744 1614696 5707848 1617824 5707400 +1617872 5707448 1617824 5707400 1614688 5707952 1614664 5708048 +1617872 5707448 1617824 5707400 1614664 5708048 1616568 5710400 +1614664 5708048 1616376 5710416 1616568 5710400 1617824 5707400 +1617872 5707448 1617824 5707400 1616568 5710400 1617912 5707496 +1616568 5710400 1616712 5710416 1617912 5707496 1617824 5707400 +1617824 5707400 1614664 5708048 1616568 5710400 1617912 5707496 +1617824 5707400 1614688 5707952 1614664 5708048 1616568 5710400 +1617872 5707448 1617728 5707184 1617824 5707400 1617912 5707496 +1617728 5707184 1617824 5707400 1617872 5707448 1617944 5707208 +1617872 5707448 1617984 5707264 1617944 5707208 1617824 5707400 +1617728 5707184 1617824 5707400 1617944 5707208 1617904 5707152 +1617872 5707448 1618032 5707320 1617984 5707264 1617824 5707400 +1617824 5707400 1617912 5707496 1617872 5707448 1617984 5707264 +1617944 5707208 1617728 5707184 1617824 5707400 1617984 5707264 +1614688 5707952 1614664 5708048 1617824 5707400 1614696 5707848 +1617824 5707400 1617944 5707208 1617728 5707184 1614696 5707848 +1614696 5707848 1617784 5707360 1617728 5707184 1614704 5707744 +1617728 5707184 1614696 5707712 1614704 5707744 1617784 5707360 +1617824 5707400 1617784 5707360 1614696 5707848 1614688 5707952 +1617824 5707400 1617784 5707360 1614688 5707952 1614664 5708048 +1617784 5707360 1614696 5707848 1614688 5707952 1614664 5708048 +1617824 5707400 1617784 5707360 1614664 5708048 1616568 5710400 +1614664 5708048 1616376 5710416 1616568 5710400 1617784 5707360 +1617824 5707400 1617784 5707360 1616568 5710400 1617912 5707496 +1617784 5707360 1614688 5707952 1614664 5708048 1616568 5710400 +1617824 5707400 1617728 5707184 1617784 5707360 1616568 5710400 +1617728 5707184 1617784 5707360 1617824 5707400 1617944 5707208 +1617728 5707184 1617784 5707360 1617944 5707208 1617904 5707152 +1617824 5707400 1617984 5707264 1617944 5707208 1617784 5707360 +1617824 5707400 1617872 5707448 1617984 5707264 1617784 5707360 +1617784 5707360 1616568 5710400 1617824 5707400 1617984 5707264 +1617944 5707208 1617728 5707184 1617784 5707360 1617984 5707264 +1614696 5707848 1614688 5707952 1617784 5707360 1614704 5707744 +1617784 5707360 1617944 5707208 1617728 5707184 1614704 5707744 +1614704 5707744 1617720 5707304 1617728 5707184 1614696 5707712 +1617784 5707360 1617720 5707304 1614704 5707744 1614696 5707848 +1617728 5707184 1614680 5707680 1614696 5707712 1617720 5707304 +1617784 5707360 1617720 5707304 1614696 5707848 1614688 5707952 +1617720 5707304 1614704 5707744 1614696 5707848 1614688 5707952 +1617784 5707360 1617720 5707304 1614688 5707952 1614664 5708048 +1617784 5707360 1617720 5707304 1614664 5708048 1616568 5710400 +1614664 5708048 1616376 5710416 1616568 5710400 1617720 5707304 +1617720 5707304 1614688 5707952 1614664 5708048 1616568 5710400 +1617784 5707360 1617720 5707304 1616568 5710400 1617824 5707400 +1616568 5710400 1617912 5707496 1617824 5707400 1617720 5707304 +1617912 5707496 1617872 5707448 1617824 5707400 1617720 5707304 +1616568 5710400 1616712 5710416 1617912 5707496 1617720 5707304 +1617824 5707400 1617784 5707360 1617720 5707304 1617912 5707496 +1617720 5707304 1614664 5708048 1616568 5710400 1617912 5707496 +1617720 5707304 1614696 5707848 1614688 5707952 1614664 5708048 +1617784 5707360 1617728 5707184 1617720 5707304 1617824 5707400 +1617728 5707184 1617720 5707304 1617784 5707360 1617944 5707208 +1614704 5707744 1614696 5707848 1617720 5707304 1614696 5707712 +1617720 5707304 1617784 5707360 1617728 5707184 1614696 5707712 +1627384 5719672 1621664 5703552 1618184 5707536 1627336 5719640 +1618184 5707536 1621664 5703552 1663880 5646248 1618120 5707440 +1663880 5646248 1618032 5707320 1618120 5707440 1621664 5703552 +1663880 5646248 1617904 5707152 1618032 5707320 1621664 5703552 +1663880 5646248 1611528 5699256 1617904 5707152 1621664 5703552 +1617904 5707152 1617944 5707208 1618032 5707320 1621664 5703552 +1617904 5707152 1618032 5707320 1621664 5703552 1611528 5699256 +1618032 5707320 1618072 5707384 1618120 5707440 1621664 5703552 +1618032 5707320 1618120 5707440 1621664 5703552 1617904 5707152 +1618120 5707440 1618184 5707536 1621664 5703552 1618032 5707320 +1618184 5707536 1620512 5714368 1627336 5719640 1621664 5703552 +1627336 5719640 1627384 5719672 1621664 5703552 1620512 5714368 +1618184 5707536 1620160 5713848 1620512 5714368 1621664 5703552 +1618184 5707536 1618184 5707576 1620160 5713848 1621664 5703552 +1618184 5707576 1620104 5713768 1620160 5713848 1621664 5703552 +1618184 5707576 1620104 5713768 1621664 5703552 1618184 5707536 +1620512 5714368 1627336 5719640 1621664 5703552 1620160 5713848 +1620160 5713848 1620512 5714368 1621664 5703552 1620104 5713768 +1620512 5714368 1620552 5714440 1627336 5719640 1621664 5703552 +1627336 5719640 1627384 5719672 1621664 5703552 1620552 5714440 +1620512 5714368 1620552 5714440 1621664 5703552 1620160 5713848 +1620552 5714440 1627312 5719640 1627336 5719640 1621664 5703552 +1663880 5646248 1621664 5703552 1627384 5719672 1663944 5646256 +1627384 5719672 1627448 5719792 1663944 5646256 1621664 5703552 +1611528 5699256 1611560 5699312 1617904 5707152 1621664 5703552 +1611528 5699256 1611560 5699312 1621664 5703552 1663880 5646248 +1617904 5707152 1618032 5707320 1621664 5703552 1611560 5699312 +1618184 5707576 1620040 5713712 1620104 5713768 1621664 5703552 +1618184 5707576 1618264 5711808 1620040 5713712 1621664 5703552 +1618184 5707576 1620040 5713712 1621664 5703552 1618184 5707536 +1620104 5713768 1620160 5713848 1621664 5703552 1620040 5713712 +1620040 5713712 1620072 5713752 1620104 5713768 1621664 5703552 +1663880 5646248 1601624 5681136 1611528 5699256 1621664 5703552 +1663880 5646248 1663776 5646144 1601624 5681136 1621664 5703552 +1611528 5699256 1611560 5699312 1621664 5703552 1601624 5681136 +1663776 5646144 1657088 5639464 1601624 5681136 1621664 5703552 +1601624 5681136 1611448 5699192 1611528 5699256 1621664 5703552 +1611528 5699256 1611560 5699312 1621664 5703552 1611448 5699192 +1601624 5681136 1610904 5698784 1611448 5699192 1621664 5703552 +1601624 5681136 1611448 5699192 1621664 5703552 1663776 5646144 +1620160 5713848 1620272 5714120 1620512 5714368 1621664 5703552 +1611560 5699312 1617856 5707112 1617904 5707152 1621664 5703552 +1617904 5707152 1618032 5707320 1621664 5703552 1617856 5707112 +1611560 5699312 1613592 5703136 1617856 5707112 1621664 5703552 +1613592 5703136 1617824 5707096 1617856 5707112 1621664 5703552 +1613592 5703136 1613584 5703232 1617824 5707096 1621664 5703552 +1613592 5703136 1617824 5707096 1621664 5703552 1611560 5699312 +1611560 5699312 1613592 5703136 1621664 5703552 1611528 5699256 +1617856 5707112 1617904 5707152 1621664 5703552 1617824 5707096 +1611560 5699312 1613464 5703016 1613592 5703136 1621664 5703552 +1613592 5703136 1617824 5707096 1621664 5703552 1613464 5703016 +1611560 5699312 1613464 5703016 1621664 5703552 1611528 5699256 +1613464 5703016 1613512 5703064 1613592 5703136 1621664 5703552 +1611560 5699312 1613304 5702872 1613464 5703016 1621664 5703552 +1621664 5703552 1663944 5646256 1663880 5646248 1663776 5646144 +1627384 5719672 1663944 5646256 1621664 5703552 1627336 5719640 +1621664 5703552 1618120 5707440 1618184 5707536 1618184 5707576 +1663776 5646144 1621720 5703464 1621664 5703552 1663880 5646248 +1601624 5681136 1621720 5703464 1663776 5646144 1657088 5639464 +1621664 5703552 1621720 5703464 1601624 5681136 1611448 5699192 +1621720 5703464 1663776 5646144 1601624 5681136 1611448 5699192 +1601624 5681136 1610904 5698784 1611448 5699192 1621720 5703464 +1601624 5681136 1610904 5698784 1621720 5703464 1663776 5646144 +1610904 5698784 1610928 5698816 1611448 5699192 1621720 5703464 +1601624 5681136 1610848 5698768 1610904 5698784 1621720 5703464 +1621664 5703552 1621720 5703464 1611448 5699192 1611528 5699256 +1621664 5703552 1621720 5703464 1611528 5699256 1611560 5699312 +1621664 5703552 1621720 5703464 1611560 5699312 1613464 5703016 +1621720 5703464 1611528 5699256 1611560 5699312 1613464 5703016 +1621720 5703464 1611448 5699192 1611528 5699256 1611560 5699312 +1611448 5699192 1611528 5699256 1621720 5703464 1610904 5698784 +1621664 5703552 1621720 5703464 1613464 5703016 1613592 5703136 +1621664 5703552 1621720 5703464 1613592 5703136 1617824 5707096 +1621720 5703464 1611560 5699312 1613464 5703016 1613592 5703136 +1613464 5703016 1613512 5703064 1613592 5703136 1621720 5703464 +1611560 5699312 1613304 5702872 1613464 5703016 1621720 5703464 +1621664 5703552 1663944 5646256 1663880 5646248 1621720 5703464 +1663880 5646248 1663776 5646144 1621720 5703464 1663944 5646256 +1621664 5703552 1627384 5719672 1663944 5646256 1621720 5703464 +1627384 5719672 1627448 5719792 1663944 5646256 1621720 5703464 +1663944 5646256 1663880 5646248 1621720 5703464 1627384 5719672 +1621664 5703552 1627336 5719640 1627384 5719672 1621720 5703464 +1621664 5703552 1620552 5714440 1627336 5719640 1621720 5703464 +1627384 5719672 1663944 5646256 1621720 5703464 1627336 5719640 +1621720 5703464 1613592 5703136 1621664 5703552 1627336 5719640 +1663776 5646144 1601624 5681136 1621720 5703464 1663880 5646248 +1663944 5646256 1621744 5703440 1627384 5719672 1627448 5719792 +1627384 5719672 1621744 5703440 1621720 5703464 1627336 5719640 +1621720 5703464 1621744 5703440 1663944 5646256 1663880 5646248 +1621720 5703464 1621744 5703440 1663880 5646248 1663776 5646144 +1621744 5703440 1663944 5646256 1663880 5646248 1663776 5646144 +1621720 5703464 1621664 5703552 1627336 5719640 1621744 5703440 +1621664 5703552 1620552 5714440 1627336 5719640 1621744 5703440 +1627336 5719640 1627384 5719672 1621744 5703440 1621664 5703552 +1621744 5703440 1627384 5719672 1663944 5646256 1663880 5646248 +1627384 5719672 1663944 5646256 1621744 5703440 1627336 5719640 +1621744 5703440 1663776 5646144 1621720 5703464 1621664 5703552 +1621720 5703464 1621744 5703440 1663776 5646144 1601624 5681136 +1621720 5703464 1621744 5703440 1601624 5681136 1610904 5698784 +1621744 5703440 1663880 5646248 1663776 5646144 1601624 5681136 +1663776 5646144 1657088 5639464 1601624 5681136 1621744 5703440 +1601624 5681136 1610848 5698768 1610904 5698784 1621744 5703440 +1621720 5703464 1621744 5703440 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1621744 5703440 +1621720 5703464 1621744 5703440 1611448 5699192 1611528 5699256 +1621744 5703440 1610904 5698784 1611448 5699192 1611528 5699256 +1621720 5703464 1621744 5703440 1611528 5699256 1611560 5699312 +1621720 5703464 1621744 5703440 1611560 5699312 1613464 5703016 +1621720 5703464 1621744 5703440 1613464 5703016 1613592 5703136 +1621744 5703440 1611560 5699312 1613464 5703016 1613592 5703136 +1621744 5703440 1611528 5699256 1611560 5699312 1613464 5703016 +1621744 5703440 1611448 5699192 1611528 5699256 1611560 5699312 +1613464 5703016 1613512 5703064 1613592 5703136 1621744 5703440 +1621720 5703464 1621744 5703440 1613592 5703136 1621664 5703552 +1611560 5699312 1613304 5702872 1613464 5703016 1621744 5703440 +1621744 5703440 1601624 5681136 1610904 5698784 1611448 5699192 +1621720 5703464 1621664 5703552 1621744 5703440 1613592 5703136 +1621744 5703440 1663776 5646144 1601624 5681136 1610904 5698784 +1663944 5646256 1621824 5703424 1627384 5719672 1627448 5719792 +1621744 5703440 1621824 5703424 1663944 5646256 1663880 5646248 +1621744 5703440 1627384 5719672 1621824 5703424 1663880 5646248 +1621824 5703424 1627384 5719672 1663944 5646256 1663880 5646248 +1621744 5703440 1621824 5703424 1663880 5646248 1663776 5646144 +1621744 5703440 1621824 5703424 1663776 5646144 1601624 5681136 +1621744 5703440 1627384 5719672 1621824 5703424 1601624 5681136 +1663776 5646144 1657088 5639464 1601624 5681136 1621824 5703424 +1621824 5703424 1663880 5646248 1663776 5646144 1601624 5681136 +1621824 5703424 1663944 5646256 1663880 5646248 1663776 5646144 +1627384 5719672 1621824 5703424 1621744 5703440 1627336 5719640 +1627384 5719672 1663944 5646256 1621824 5703424 1627336 5719640 +1621824 5703424 1601624 5681136 1621744 5703440 1627336 5719640 +1621744 5703440 1621664 5703552 1627336 5719640 1621824 5703424 +1621744 5703440 1621664 5703552 1621824 5703424 1601624 5681136 +1621664 5703552 1620552 5714440 1627336 5719640 1621824 5703424 +1621664 5703552 1620512 5714368 1620552 5714440 1621824 5703424 +1620552 5714440 1627336 5719640 1621824 5703424 1620512 5714368 +1621664 5703552 1620160 5713848 1620512 5714368 1621824 5703424 +1621664 5703552 1620104 5713768 1620160 5713848 1621824 5703424 +1620512 5714368 1620552 5714440 1621824 5703424 1620160 5713848 +1620552 5714440 1627312 5719640 1627336 5719640 1621824 5703424 +1621664 5703552 1620160 5713848 1621824 5703424 1621744 5703440 +1620160 5713848 1620272 5714120 1620512 5714368 1621824 5703424 +1621744 5703440 1621720 5703464 1621664 5703552 1621824 5703424 +1621744 5703440 1621720 5703464 1621824 5703424 1601624 5681136 +1621664 5703552 1620160 5713848 1621824 5703424 1621720 5703464 +1627336 5719640 1627384 5719672 1621824 5703424 1620552 5714440 +1621744 5703440 1621824 5703424 1601624 5681136 1610904 5698784 +1621824 5703424 1663776 5646144 1601624 5681136 1610904 5698784 +1621744 5703440 1621720 5703464 1621824 5703424 1610904 5698784 +1601624 5681136 1610848 5698768 1610904 5698784 1621824 5703424 +1621744 5703440 1621824 5703424 1610904 5698784 1611448 5699192 +1621744 5703440 1621720 5703464 1621824 5703424 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1621824 5703424 +1621744 5703440 1621824 5703424 1611448 5699192 1611528 5699256 +1621744 5703440 1621720 5703464 1621824 5703424 1611528 5699256 +1621744 5703440 1621824 5703424 1611528 5699256 1611560 5699312 +1621824 5703424 1610904 5698784 1611448 5699192 1611528 5699256 +1621824 5703424 1601624 5681136 1610904 5698784 1611448 5699192 +1627384 5719672 1621856 5703472 1621824 5703424 1627336 5719640 +1627384 5719672 1663944 5646256 1621856 5703472 1627336 5719640 +1621824 5703424 1621856 5703472 1663944 5646256 1663880 5646248 +1621856 5703472 1627384 5719672 1663944 5646256 1663880 5646248 +1621856 5703472 1663880 5646248 1621824 5703424 1627336 5719640 +1663944 5646256 1621856 5703472 1627384 5719672 1627448 5719792 +1621824 5703424 1621856 5703472 1663880 5646248 1663776 5646144 +1621824 5703424 1620552 5714440 1627336 5719640 1621856 5703472 +1627336 5719640 1627384 5719672 1621856 5703472 1620552 5714440 +1621824 5703424 1620552 5714440 1621856 5703472 1663880 5646248 +1621824 5703424 1620512 5714368 1620552 5714440 1621856 5703472 +1621824 5703424 1620512 5714368 1621856 5703472 1663880 5646248 +1621824 5703424 1620160 5713848 1620512 5714368 1621856 5703472 +1621824 5703424 1620160 5713848 1621856 5703472 1663880 5646248 +1620512 5714368 1620552 5714440 1621856 5703472 1620160 5713848 +1621824 5703424 1621664 5703552 1620160 5713848 1621856 5703472 +1621824 5703424 1621664 5703552 1621856 5703472 1663880 5646248 +1621664 5703552 1620104 5713768 1620160 5713848 1621856 5703472 +1621664 5703552 1620040 5713712 1620104 5713768 1621856 5703472 +1621664 5703552 1620104 5713768 1621856 5703472 1621824 5703424 +1620160 5713848 1620512 5714368 1621856 5703472 1620104 5713768 +1620552 5714440 1627312 5719640 1627336 5719640 1621856 5703472 +1621824 5703424 1621720 5703464 1621664 5703552 1621856 5703472 +1621824 5703424 1621720 5703464 1621856 5703472 1663880 5646248 +1621664 5703552 1620104 5713768 1621856 5703472 1621720 5703464 +1620160 5713848 1620272 5714120 1620512 5714368 1621856 5703472 +1621824 5703424 1621744 5703440 1621720 5703464 1621856 5703472 +1621824 5703424 1621744 5703440 1621856 5703472 1663880 5646248 +1621720 5703464 1621664 5703552 1621856 5703472 1621744 5703440 +1620552 5714440 1627336 5719640 1621856 5703472 1620512 5714368 +1621856 5703472 1621912 5703512 1663944 5646256 1663880 5646248 +1621856 5703472 1627384 5719672 1621912 5703512 1663880 5646248 +1627384 5719672 1621912 5703512 1621856 5703472 1627336 5719640 +1621856 5703472 1620552 5714440 1627336 5719640 1621912 5703512 +1621912 5703512 1663880 5646248 1621856 5703472 1620552 5714440 +1627336 5719640 1627384 5719672 1621912 5703512 1620552 5714440 +1621912 5703512 1627384 5719672 1663944 5646256 1663880 5646248 +1627384 5719672 1663944 5646256 1621912 5703512 1627336 5719640 +1621856 5703472 1621912 5703512 1663880 5646248 1621824 5703424 +1621912 5703512 1663944 5646256 1663880 5646248 1621824 5703424 +1621856 5703472 1620552 5714440 1621912 5703512 1621824 5703424 +1620552 5714440 1627312 5719640 1627336 5719640 1621912 5703512 +1663944 5646256 1621912 5703512 1627384 5719672 1627448 5719792 +1663880 5646248 1663776 5646144 1621824 5703424 1621912 5703512 +1621856 5703472 1620512 5714368 1620552 5714440 1621912 5703512 +1620552 5714440 1627336 5719640 1621912 5703512 1620512 5714368 +1621856 5703472 1620512 5714368 1621912 5703512 1621824 5703424 +1621856 5703472 1620160 5713848 1620512 5714368 1621912 5703512 +1621856 5703472 1620160 5713848 1621912 5703512 1621824 5703424 +1621856 5703472 1620104 5713768 1620160 5713848 1621912 5703512 +1621856 5703472 1620104 5713768 1621912 5703512 1621824 5703424 +1620160 5713848 1620512 5714368 1621912 5703512 1620104 5713768 +1621856 5703472 1621664 5703552 1620104 5713768 1621912 5703512 +1621856 5703472 1621664 5703552 1621912 5703512 1621824 5703424 +1621664 5703552 1620040 5713712 1620104 5713768 1621912 5703512 +1621856 5703472 1621720 5703464 1621664 5703552 1621912 5703512 +1621664 5703552 1620040 5713712 1621912 5703512 1621856 5703472 +1620040 5713712 1620072 5713752 1620104 5713768 1621912 5703512 +1620104 5713768 1620160 5713848 1621912 5703512 1620040 5713712 +1621664 5703552 1618184 5707576 1620040 5713712 1621912 5703512 +1618184 5707576 1618264 5711808 1620040 5713712 1621912 5703512 +1621664 5703552 1618184 5707536 1618184 5707576 1621912 5703512 +1620040 5713712 1620104 5713768 1621912 5703512 1618184 5707576 +1621664 5703552 1618184 5707576 1621912 5703512 1621856 5703472 +1620160 5713848 1620272 5714120 1620512 5714368 1621912 5703512 +1620512 5714368 1620552 5714440 1621912 5703512 1620160 5713848 +1621912 5703512 1621952 5703576 1663944 5646256 1663880 5646248 +1621912 5703512 1621952 5703576 1663880 5646248 1621824 5703424 +1621912 5703512 1627384 5719672 1621952 5703576 1663880 5646248 +1627384 5719672 1621952 5703576 1621912 5703512 1627336 5719640 +1621912 5703512 1620552 5714440 1627336 5719640 1621952 5703576 +1621912 5703512 1620512 5714368 1620552 5714440 1621952 5703576 +1620552 5714440 1627336 5719640 1621952 5703576 1620512 5714368 +1621952 5703576 1663880 5646248 1621912 5703512 1620512 5714368 +1627336 5719640 1627384 5719672 1621952 5703576 1620552 5714440 +1621952 5703576 1627384 5719672 1663944 5646256 1663880 5646248 +1627384 5719672 1663944 5646256 1621952 5703576 1627336 5719640 +1620552 5714440 1627312 5719640 1627336 5719640 1621952 5703576 +1663944 5646256 1621952 5703576 1627384 5719672 1627448 5719792 +1621912 5703512 1620160 5713848 1620512 5714368 1621952 5703576 +1620512 5714368 1620552 5714440 1621952 5703576 1620160 5713848 +1621912 5703512 1620160 5713848 1621952 5703576 1663880 5646248 +1621912 5703512 1620104 5713768 1620160 5713848 1621952 5703576 +1621912 5703512 1620104 5713768 1621952 5703576 1663880 5646248 +1621912 5703512 1620040 5713712 1620104 5713768 1621952 5703576 +1621912 5703512 1620040 5713712 1621952 5703576 1663880 5646248 +1620104 5713768 1620160 5713848 1621952 5703576 1620040 5713712 +1621912 5703512 1618184 5707576 1620040 5713712 1621952 5703576 +1621912 5703512 1618184 5707576 1621952 5703576 1663880 5646248 +1618184 5707576 1618264 5711808 1620040 5713712 1621952 5703576 +1620040 5713712 1620072 5713752 1620104 5713768 1621952 5703576 +1620040 5713712 1620104 5713768 1621952 5703576 1618184 5707576 +1621912 5703512 1621664 5703552 1618184 5707576 1621952 5703576 +1621912 5703512 1621664 5703552 1621952 5703576 1663880 5646248 +1621664 5703552 1618184 5707536 1618184 5707576 1621952 5703576 +1618184 5707576 1620040 5713712 1621952 5703576 1618184 5707536 +1621912 5703512 1621856 5703472 1621664 5703552 1621952 5703576 +1621664 5703552 1618184 5707536 1621952 5703576 1621912 5703512 +1620160 5713848 1620272 5714120 1620512 5714368 1621952 5703576 +1620160 5713848 1620512 5714368 1621952 5703576 1620104 5713768 +1621664 5703552 1618120 5707440 1618184 5707536 1621952 5703576 +1621952 5703576 1621976 5703632 1663944 5646256 1663880 5646248 +1627384 5719672 1621976 5703632 1621952 5703576 1627336 5719640 +1621952 5703576 1620552 5714440 1627336 5719640 1621976 5703632 +1621952 5703576 1620512 5714368 1620552 5714440 1621976 5703632 +1621952 5703576 1620160 5713848 1620512 5714368 1621976 5703632 +1620512 5714368 1620552 5714440 1621976 5703632 1620160 5713848 +1620552 5714440 1627336 5719640 1621976 5703632 1620512 5714368 +1621976 5703632 1663944 5646256 1621952 5703576 1620160 5713848 +1627336 5719640 1627384 5719672 1621976 5703632 1620552 5714440 +1627384 5719672 1663944 5646256 1621976 5703632 1627336 5719640 +1620552 5714440 1627312 5719640 1627336 5719640 1621976 5703632 +1663944 5646256 1621976 5703632 1627384 5719672 1627448 5719792 +1620160 5713848 1620272 5714120 1620512 5714368 1621976 5703632 +1621952 5703576 1620104 5713768 1620160 5713848 1621976 5703632 +1620160 5713848 1620512 5714368 1621976 5703632 1620104 5713768 +1621952 5703576 1620104 5713768 1621976 5703632 1663944 5646256 +1621952 5703576 1620040 5713712 1620104 5713768 1621976 5703632 +1621952 5703576 1620040 5713712 1621976 5703632 1663944 5646256 +1620040 5713712 1620072 5713752 1620104 5713768 1621976 5703632 +1621952 5703576 1618184 5707576 1620040 5713712 1621976 5703632 +1621952 5703576 1618184 5707576 1621976 5703632 1663944 5646256 +1620040 5713712 1620104 5713768 1621976 5703632 1618184 5707576 +1618184 5707576 1618264 5711808 1620040 5713712 1621976 5703632 +1621952 5703576 1618184 5707536 1618184 5707576 1621976 5703632 +1621952 5703576 1618184 5707536 1621976 5703632 1663944 5646256 +1621952 5703576 1621664 5703552 1618184 5707536 1621976 5703632 +1621952 5703576 1621664 5703552 1621976 5703632 1663944 5646256 +1618184 5707536 1618184 5707576 1621976 5703632 1621664 5703552 +1618184 5707576 1620040 5713712 1621976 5703632 1618184 5707536 +1621952 5703576 1621912 5703512 1621664 5703552 1621976 5703632 +1620104 5713768 1620160 5713848 1621976 5703632 1620040 5713712 +1621664 5703552 1618120 5707440 1618184 5707536 1621976 5703632 +1621976 5703632 1622032 5703760 1663944 5646256 1621952 5703576 +1663944 5646256 1663880 5646248 1621952 5703576 1622032 5703760 +1621976 5703632 1627384 5719672 1622032 5703760 1621952 5703576 +1627384 5719672 1622032 5703760 1621976 5703632 1627336 5719640 +1621976 5703632 1620552 5714440 1627336 5719640 1622032 5703760 +1621976 5703632 1620512 5714368 1620552 5714440 1622032 5703760 +1621976 5703632 1620160 5713848 1620512 5714368 1622032 5703760 +1621976 5703632 1620104 5713768 1620160 5713848 1622032 5703760 +1620160 5713848 1620512 5714368 1622032 5703760 1620104 5713768 +1620512 5714368 1620552 5714440 1622032 5703760 1620160 5713848 +1620552 5714440 1627336 5719640 1622032 5703760 1620512 5714368 +1622032 5703760 1621952 5703576 1621976 5703632 1620104 5713768 +1627336 5719640 1627384 5719672 1622032 5703760 1620552 5714440 +1622032 5703760 1627384 5719672 1663944 5646256 1621952 5703576 +1627384 5719672 1663944 5646256 1622032 5703760 1627336 5719640 +1620552 5714440 1627312 5719640 1627336 5719640 1622032 5703760 +1663944 5646256 1622032 5703760 1627384 5719672 1627448 5719792 +1620160 5713848 1620272 5714120 1620512 5714368 1622032 5703760 +1621976 5703632 1620040 5713712 1620104 5713768 1622032 5703760 +1620104 5713768 1620160 5713848 1622032 5703760 1620040 5713712 +1621976 5703632 1620040 5713712 1622032 5703760 1621952 5703576 +1621976 5703632 1618184 5707576 1620040 5713712 1622032 5703760 +1621976 5703632 1618184 5707576 1622032 5703760 1621952 5703576 +1618184 5707576 1618264 5711808 1620040 5713712 1622032 5703760 +1620040 5713712 1620072 5713752 1620104 5713768 1622032 5703760 +1621976 5703632 1618184 5707536 1618184 5707576 1622032 5703760 +1621976 5703632 1618184 5707536 1622032 5703760 1621952 5703576 +1618184 5707576 1620040 5713712 1622032 5703760 1618184 5707536 +1621976 5703632 1621664 5703552 1618184 5707536 1622032 5703760 +1621976 5703632 1621664 5703552 1622032 5703760 1621952 5703576 +1621976 5703632 1621952 5703576 1621664 5703552 1622032 5703760 +1618184 5707536 1618184 5707576 1622032 5703760 1621664 5703552 +1620040 5713712 1620104 5713768 1622032 5703760 1618184 5707576 +1621664 5703552 1618120 5707440 1618184 5707536 1622032 5703760 +1620552 5714440 1622032 5703808 1622032 5703760 1620512 5714368 +1622032 5703760 1620160 5713848 1620512 5714368 1622032 5703808 +1622032 5703760 1620104 5713768 1620160 5713848 1622032 5703808 +1622032 5703760 1620040 5713712 1620104 5713768 1622032 5703808 +1620104 5713768 1620160 5713848 1622032 5703808 1620040 5713712 +1620160 5713848 1620512 5714368 1622032 5703808 1620104 5713768 +1620512 5714368 1620552 5714440 1622032 5703808 1620160 5713848 +1622032 5703760 1622032 5703808 1627336 5719640 1627384 5719672 +1622032 5703808 1627384 5719672 1622032 5703760 1620040 5713712 +1622032 5703760 1622032 5703808 1627384 5719672 1663944 5646256 +1622032 5703808 1620552 5714440 1627336 5719640 1627384 5719672 +1620552 5714440 1627336 5719640 1622032 5703808 1620512 5714368 +1620040 5713712 1620072 5713752 1620104 5713768 1622032 5703808 +1627336 5719640 1622032 5703808 1620552 5714440 1627312 5719640 +1620160 5713848 1620272 5714120 1620512 5714368 1622032 5703808 +1622032 5703760 1618184 5707576 1620040 5713712 1622032 5703808 +1620040 5713712 1620104 5713768 1622032 5703808 1618184 5707576 +1622032 5703760 1618184 5707576 1622032 5703808 1627384 5719672 +1622032 5703760 1618184 5707536 1618184 5707576 1622032 5703808 +1622032 5703760 1618184 5707536 1622032 5703808 1627384 5719672 +1618184 5707576 1618264 5711808 1620040 5713712 1622032 5703808 +1622032 5703760 1621664 5703552 1618184 5707536 1622032 5703808 +1622032 5703760 1621664 5703552 1622032 5703808 1627384 5719672 +1618184 5707536 1618184 5707576 1622032 5703808 1621664 5703552 +1622032 5703760 1621976 5703632 1621664 5703552 1622032 5703808 +1622032 5703760 1621976 5703632 1622032 5703808 1627384 5719672 +1621976 5703632 1621952 5703576 1621664 5703552 1622032 5703808 +1621664 5703552 1618184 5707536 1622032 5703808 1621976 5703632 +1618184 5707576 1620040 5713712 1622032 5703808 1618184 5707536 +1621664 5703552 1618120 5707440 1618184 5707536 1622032 5703808 +1618184 5707536 1618184 5707576 1622032 5703808 1618120 5707440 +1621664 5703552 1618032 5707320 1618120 5707440 1622032 5703808 +1621664 5703552 1618120 5707440 1622032 5703808 1621976 5703632 +1622032 5703808 1621968 5703872 1620040 5713712 1620104 5713768 +1622032 5703808 1621968 5703872 1620104 5713768 1620160 5713848 +1621968 5703872 1620040 5713712 1620104 5713768 1620160 5713848 +1622032 5703808 1621968 5703872 1620160 5713848 1620512 5714368 +1621968 5703872 1620104 5713768 1620160 5713848 1620512 5714368 +1622032 5703808 1621968 5703872 1620512 5714368 1620552 5714440 +1622032 5703808 1618184 5707576 1621968 5703872 1620512 5714368 +1621968 5703872 1618184 5707576 1620040 5713712 1620104 5713768 +1620040 5713712 1621968 5703872 1618184 5707576 1618264 5711808 +1620040 5713712 1620072 5713752 1620104 5713768 1621968 5703872 +1620160 5713848 1620272 5714120 1620512 5714368 1621968 5703872 +1618184 5707576 1621968 5703872 1622032 5703808 1618184 5707536 +1621968 5703872 1620512 5714368 1622032 5703808 1618184 5707536 +1618184 5707576 1620040 5713712 1621968 5703872 1618184 5707536 +1622032 5703808 1618120 5707440 1618184 5707536 1621968 5703872 +1622032 5703808 1618120 5707440 1621968 5703872 1620512 5714368 +1618184 5707536 1618184 5707576 1621968 5703872 1618120 5707440 +1622032 5703808 1621664 5703552 1618120 5707440 1621968 5703872 +1622032 5703808 1621664 5703552 1621968 5703872 1620512 5714368 +1618120 5707440 1618184 5707536 1621968 5703872 1621664 5703552 +1621664 5703552 1618032 5707320 1618120 5707440 1621968 5703872 +1618120 5707440 1618184 5707536 1621968 5703872 1618032 5707320 +1618032 5707320 1618072 5707384 1618120 5707440 1621968 5703872 +1621664 5703552 1617904 5707152 1618032 5707320 1621968 5703872 +1617904 5707152 1617944 5707208 1618032 5707320 1621968 5703872 +1621664 5703552 1617856 5707112 1617904 5707152 1621968 5703872 +1618032 5707320 1618120 5707440 1621968 5703872 1617904 5707152 +1622032 5703808 1621976 5703632 1621664 5703552 1621968 5703872 +1622032 5703808 1621976 5703632 1621968 5703872 1620512 5714368 +1621976 5703632 1621952 5703576 1621664 5703552 1621968 5703872 +1622032 5703808 1622032 5703760 1621976 5703632 1621968 5703872 +1622032 5703808 1622032 5703760 1621968 5703872 1620512 5714368 +1621976 5703632 1621664 5703552 1621968 5703872 1622032 5703760 +1621664 5703552 1617904 5707152 1621968 5703872 1621976 5703632 +1621968 5703872 1621944 5703896 1620040 5713712 1620104 5713768 +1621968 5703872 1621944 5703896 1620104 5713768 1620160 5713848 +1621968 5703872 1621944 5703896 1620160 5713848 1620512 5714368 +1621944 5703896 1620104 5713768 1620160 5713848 1620512 5714368 +1621968 5703872 1621944 5703896 1620512 5714368 1622032 5703808 +1621944 5703896 1620040 5713712 1620104 5713768 1620160 5713848 +1621968 5703872 1618184 5707576 1621944 5703896 1620512 5714368 +1618184 5707576 1621944 5703896 1621968 5703872 1618184 5707536 +1621944 5703896 1620512 5714368 1621968 5703872 1618184 5707536 +1621944 5703896 1618184 5707576 1620040 5713712 1620104 5713768 +1618184 5707576 1620040 5713712 1621944 5703896 1618184 5707536 +1620040 5713712 1621944 5703896 1618184 5707576 1618264 5711808 +1620040 5713712 1620072 5713752 1620104 5713768 1621944 5703896 +1620160 5713848 1620272 5714120 1620512 5714368 1621944 5703896 +1621968 5703872 1618120 5707440 1618184 5707536 1621944 5703896 +1621968 5703872 1618120 5707440 1621944 5703896 1620512 5714368 +1618184 5707536 1618184 5707576 1621944 5703896 1618120 5707440 +1621968 5703872 1618032 5707320 1618120 5707440 1621944 5703896 +1621968 5703872 1618032 5707320 1621944 5703896 1620512 5714368 +1618032 5707320 1618072 5707384 1618120 5707440 1621944 5703896 +1621968 5703872 1617904 5707152 1618032 5707320 1621944 5703896 +1621968 5703872 1617904 5707152 1621944 5703896 1620512 5714368 +1617904 5707152 1617944 5707208 1618032 5707320 1621944 5703896 +1618032 5707320 1618120 5707440 1621944 5703896 1617904 5707152 +1621968 5703872 1621664 5703552 1617904 5707152 1621944 5703896 +1621968 5703872 1621664 5703552 1621944 5703896 1620512 5714368 +1621664 5703552 1617856 5707112 1617904 5707152 1621944 5703896 +1617904 5707152 1618032 5707320 1621944 5703896 1621664 5703552 +1618120 5707440 1618184 5707536 1621944 5703896 1618032 5707320 +1621968 5703872 1621976 5703632 1621664 5703552 1621944 5703896 +1621968 5703872 1621976 5703632 1621944 5703896 1620512 5714368 +1621976 5703632 1621952 5703576 1621664 5703552 1621944 5703896 +1621664 5703552 1617904 5707152 1621944 5703896 1621976 5703632 +1621968 5703872 1622032 5703760 1621976 5703632 1621944 5703896 +1617904 5707152 1621912 5703896 1621664 5703552 1617856 5707112 +1621664 5703552 1621912 5703896 1621944 5703896 1621976 5703632 +1621912 5703896 1617904 5707152 1621944 5703896 1621976 5703632 +1621664 5703552 1617904 5707152 1621912 5703896 1621976 5703632 +1621664 5703552 1621912 5703896 1621976 5703632 1621952 5703576 +1621944 5703896 1621912 5703896 1617904 5707152 1618032 5707320 +1621944 5703896 1621976 5703632 1621912 5703896 1618032 5707320 +1621912 5703896 1621664 5703552 1617904 5707152 1618032 5707320 +1617904 5707152 1617944 5707208 1618032 5707320 1621912 5703896 +1621944 5703896 1621912 5703896 1618032 5707320 1618120 5707440 +1621944 5703896 1621976 5703632 1621912 5703896 1618120 5707440 +1618032 5707320 1618072 5707384 1618120 5707440 1621912 5703896 +1621912 5703896 1617904 5707152 1618032 5707320 1618120 5707440 +1621944 5703896 1621912 5703896 1618120 5707440 1618184 5707536 +1621944 5703896 1621912 5703896 1618184 5707536 1618184 5707576 +1621944 5703896 1621912 5703896 1618184 5707576 1620040 5713712 +1621944 5703896 1621976 5703632 1621912 5703896 1618184 5707576 +1621912 5703896 1618032 5707320 1618120 5707440 1618184 5707536 +1621912 5703896 1618120 5707440 1618184 5707536 1618184 5707576 +1621944 5703896 1621968 5703872 1621976 5703632 1621912 5703896 +1621944 5703896 1621968 5703872 1621912 5703896 1618184 5707576 +1621976 5703632 1621664 5703552 1621912 5703896 1621968 5703872 +1621968 5703872 1622032 5703760 1621976 5703632 1621912 5703896 +1621912 5703896 1621872 5703872 1617904 5707152 1618032 5707320 +1621912 5703896 1621664 5703552 1621872 5703872 1618032 5707320 +1621664 5703552 1621872 5703872 1621912 5703896 1621976 5703632 +1621872 5703872 1618032 5707320 1621912 5703896 1621976 5703632 +1621872 5703872 1621664 5703552 1617904 5707152 1618032 5707320 +1621664 5703552 1617904 5707152 1621872 5703872 1621976 5703632 +1617904 5707152 1617944 5707208 1618032 5707320 1621872 5703872 +1617904 5707152 1621872 5703872 1621664 5703552 1617856 5707112 +1621664 5703552 1621872 5703872 1621976 5703632 1621952 5703576 +1621912 5703896 1621968 5703872 1621976 5703632 1621872 5703872 +1621912 5703896 1621968 5703872 1621872 5703872 1618032 5707320 +1621976 5703632 1621664 5703552 1621872 5703872 1621968 5703872 +1621912 5703896 1621872 5703872 1618032 5707320 1618120 5707440 +1621872 5703872 1617904 5707152 1618032 5707320 1618120 5707440 +1621912 5703896 1621968 5703872 1621872 5703872 1618120 5707440 +1621912 5703896 1621872 5703872 1618120 5707440 1618184 5707536 +1621912 5703896 1621968 5703872 1621872 5703872 1618184 5707536 +1618032 5707320 1618072 5707384 1618120 5707440 1621872 5703872 +1621872 5703872 1618032 5707320 1618120 5707440 1618184 5707536 +1621968 5703872 1622032 5703760 1621976 5703632 1621872 5703872 +1621976 5703632 1621664 5703552 1621872 5703872 1622032 5703760 +1621968 5703872 1622032 5703808 1622032 5703760 1621872 5703872 +1621968 5703872 1622032 5703760 1621872 5703872 1621912 5703896 +1621912 5703896 1621872 5703872 1618184 5707536 1618184 5707576 +1621912 5703896 1621944 5703896 1621968 5703872 1621872 5703872 +1621872 5703872 1621840 5703840 1617904 5707152 1618032 5707320 +1621872 5703872 1621840 5703840 1618032 5707320 1618120 5707440 +1621872 5703872 1621664 5703552 1621840 5703840 1618032 5707320 +1621664 5703552 1621840 5703840 1621872 5703872 1621976 5703632 +1621872 5703872 1622032 5703760 1621976 5703632 1621840 5703840 +1621840 5703840 1618032 5707320 1621872 5703872 1622032 5703760 +1621976 5703632 1621664 5703552 1621840 5703840 1622032 5703760 +1621840 5703840 1621664 5703552 1617904 5707152 1618032 5707320 +1621664 5703552 1617904 5707152 1621840 5703840 1621976 5703632 +1617904 5707152 1617944 5707208 1618032 5707320 1621840 5703840 +1617904 5707152 1621840 5703840 1621664 5703552 1617856 5707112 +1617904 5707152 1618032 5707320 1621840 5703840 1617856 5707112 +1621840 5703840 1621976 5703632 1621664 5703552 1617856 5707112 +1621664 5703552 1621840 5703840 1621976 5703632 1621952 5703576 +1621840 5703840 1622032 5703760 1621976 5703632 1621952 5703576 +1621664 5703552 1617856 5707112 1621840 5703840 1621952 5703576 +1621872 5703872 1621968 5703872 1622032 5703760 1621840 5703840 +1622032 5703760 1621976 5703632 1621840 5703840 1621968 5703872 +1621872 5703872 1621968 5703872 1621840 5703840 1618032 5707320 +1621968 5703872 1622032 5703808 1622032 5703760 1621840 5703840 +1621872 5703872 1621912 5703896 1621968 5703872 1621840 5703840 +1621664 5703552 1621840 5703840 1621952 5703576 1621912 5703512 +1621664 5703552 1617824 5707096 1617856 5707112 1621840 5703840 +1621664 5703552 1621792 5703784 1621840 5703840 1621952 5703576 +1621792 5703784 1617856 5707112 1621840 5703840 1621952 5703576 +1621664 5703552 1617856 5707112 1621792 5703784 1621952 5703576 +1621840 5703840 1621792 5703784 1617856 5707112 1617904 5707152 +1621840 5703840 1621792 5703784 1617904 5707152 1618032 5707320 +1621840 5703840 1621952 5703576 1621792 5703784 1617904 5707152 +1621792 5703784 1621664 5703552 1617856 5707112 1617904 5707152 +1621840 5703840 1621976 5703632 1621952 5703576 1621792 5703784 +1621840 5703840 1622032 5703760 1621976 5703632 1621792 5703784 +1621840 5703840 1621976 5703632 1621792 5703784 1617904 5707152 +1621952 5703576 1621664 5703552 1621792 5703784 1621976 5703632 +1621664 5703552 1621792 5703784 1621952 5703576 1621912 5703512 +1617856 5707112 1621792 5703784 1621664 5703552 1617824 5707096 +1621792 5703784 1621752 5703728 1617856 5707112 1617904 5707152 +1621792 5703784 1621664 5703552 1621752 5703728 1617904 5707152 +1621664 5703552 1621752 5703728 1621792 5703784 1621952 5703576 +1621792 5703784 1621976 5703632 1621952 5703576 1621752 5703728 +1621752 5703728 1617904 5707152 1621792 5703784 1621976 5703632 +1621952 5703576 1621664 5703552 1621752 5703728 1621976 5703632 +1621752 5703728 1621664 5703552 1617856 5707112 1617904 5707152 +1621664 5703552 1617856 5707112 1621752 5703728 1621952 5703576 +1621792 5703784 1621752 5703728 1617904 5707152 1621840 5703840 +1621792 5703784 1621840 5703840 1621976 5703632 1621752 5703728 +1621664 5703552 1621752 5703728 1621952 5703576 1621912 5703512 +1621752 5703728 1621976 5703632 1621952 5703576 1621912 5703512 +1621664 5703552 1617856 5707112 1621752 5703728 1621912 5703512 +1621664 5703552 1621752 5703728 1621912 5703512 1621856 5703472 +1621664 5703552 1617856 5707112 1621752 5703728 1621856 5703472 +1621664 5703552 1621752 5703728 1621856 5703472 1621720 5703464 +1621752 5703728 1621952 5703576 1621912 5703512 1621856 5703472 +1617856 5707112 1621752 5703728 1621664 5703552 1617824 5707096 +1621752 5703728 1621720 5703680 1617856 5707112 1617904 5707152 +1621752 5703728 1621720 5703680 1617904 5707152 1621792 5703784 +1621752 5703728 1621664 5703552 1621720 5703680 1617904 5707152 +1621664 5703552 1621720 5703680 1621752 5703728 1621856 5703472 +1621720 5703680 1617904 5707152 1621752 5703728 1621856 5703472 +1621720 5703680 1621664 5703552 1617856 5707112 1617904 5707152 +1621664 5703552 1617856 5707112 1621720 5703680 1621856 5703472 +1621664 5703552 1621720 5703680 1621856 5703472 1621720 5703464 +1621752 5703728 1621912 5703512 1621856 5703472 1621720 5703680 +1621752 5703728 1621912 5703512 1621720 5703680 1617904 5707152 +1621856 5703472 1621664 5703552 1621720 5703680 1621912 5703512 +1621752 5703728 1621952 5703576 1621912 5703512 1621720 5703680 +1621752 5703728 1621976 5703632 1621952 5703576 1621720 5703680 +1621752 5703728 1621952 5703576 1621720 5703680 1617904 5707152 +1621912 5703512 1621856 5703472 1621720 5703680 1621952 5703576 +1617856 5707112 1621720 5703680 1621664 5703552 1617824 5707096 +1621720 5703680 1621664 5703600 1617856 5707112 1617904 5707152 +1621720 5703680 1621664 5703600 1617904 5707152 1621752 5703728 +1621720 5703680 1621664 5703552 1621664 5703600 1617904 5707152 +1621664 5703552 1621664 5703600 1621720 5703680 1621856 5703472 +1621664 5703600 1621664 5703552 1617856 5707112 1617904 5707152 +1617856 5707112 1621664 5703600 1621664 5703552 1617824 5707096 +1617856 5707112 1617904 5707152 1621664 5703600 1617824 5707096 +1621664 5703600 1621720 5703680 1621664 5703552 1617824 5707096 +1621664 5703552 1613592 5703136 1617824 5707096 1621664 5703600 +1621824 5703424 1621752 5702000 1601624 5681136 1610904 5698784 +1621752 5702000 1663776 5646144 1601624 5681136 1610904 5698784 +1621824 5703424 1663776 5646144 1621752 5702000 1610904 5698784 +1601624 5681136 1621752 5702000 1663776 5646144 1657088 5639464 +1601624 5681136 1610848 5698768 1610904 5698784 1621752 5702000 +1663776 5646144 1621752 5702000 1621824 5703424 1663880 5646248 +1663776 5646144 1601624 5681136 1621752 5702000 1663880 5646248 +1621752 5702000 1610904 5698784 1621824 5703424 1663880 5646248 +1621824 5703424 1621912 5703512 1663880 5646248 1621752 5702000 +1621912 5703512 1621952 5703576 1663880 5646248 1621752 5702000 +1621952 5703576 1663944 5646256 1663880 5646248 1621752 5702000 +1621952 5703576 1663944 5646256 1621752 5702000 1621912 5703512 +1621952 5703576 1622032 5703760 1663944 5646256 1621752 5702000 +1621952 5703576 1622032 5703760 1621752 5702000 1621912 5703512 +1663944 5646256 1663880 5646248 1621752 5702000 1622032 5703760 +1621952 5703576 1621976 5703632 1622032 5703760 1621752 5702000 +1621952 5703576 1621976 5703632 1621752 5702000 1621912 5703512 +1622032 5703760 1663944 5646256 1621752 5702000 1621976 5703632 +1622032 5703760 1627384 5719672 1663944 5646256 1621752 5702000 +1621824 5703424 1621856 5703472 1621912 5703512 1621752 5702000 +1621824 5703424 1621912 5703512 1621752 5702000 1610904 5698784 +1663880 5646248 1663776 5646144 1621752 5702000 1663944 5646256 +1621912 5703512 1621952 5703576 1621752 5702000 1621824 5703424 +1621824 5703424 1621752 5702000 1610904 5698784 1611448 5699192 +1621752 5702000 1601624 5681136 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1621752 5702000 +1621824 5703424 1621912 5703512 1621752 5702000 1611448 5699192 +1621824 5703424 1621752 5702000 1611448 5699192 1611528 5699256 +1621824 5703424 1621912 5703512 1621752 5702000 1611528 5699256 +1621824 5703424 1621752 5702000 1611528 5699256 1621744 5703440 +1621824 5703424 1621912 5703512 1621752 5702000 1621744 5703440 +1611528 5699256 1611560 5699312 1621744 5703440 1621752 5702000 +1621744 5703440 1621824 5703424 1621752 5702000 1611560 5699312 +1611560 5699312 1613464 5703016 1621744 5703440 1621752 5702000 +1613464 5703016 1613592 5703136 1621744 5703440 1621752 5702000 +1613592 5703136 1621720 5703464 1621744 5703440 1621752 5702000 +1613592 5703136 1621720 5703464 1621752 5702000 1613464 5703016 +1621744 5703440 1621824 5703424 1621752 5702000 1621720 5703464 +1613464 5703016 1613592 5703136 1621752 5702000 1611560 5699312 +1611560 5699312 1613464 5703016 1621752 5702000 1611528 5699256 +1613464 5703016 1613512 5703064 1613592 5703136 1621752 5702000 +1613592 5703136 1621664 5703552 1621720 5703464 1621752 5702000 +1613592 5703136 1621664 5703552 1621752 5702000 1613464 5703016 +1613592 5703136 1617824 5707096 1621664 5703552 1621752 5702000 +1621720 5703464 1621744 5703440 1621752 5702000 1621664 5703552 +1611560 5699312 1613304 5702872 1613464 5703016 1621752 5702000 +1621752 5702000 1611448 5699192 1611528 5699256 1611560 5699312 +1621752 5702000 1610904 5698784 1611448 5699192 1611528 5699256 +1621752 5702000 1621448 5701528 1601624 5681136 1610904 5698784 +1621752 5702000 1621448 5701528 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1621448 5701528 +1621448 5701528 1601624 5681136 1610904 5698784 1611448 5699192 +1663776 5646144 1621448 5701528 1621752 5702000 1663880 5646248 +1621752 5702000 1663880 5646248 1621448 5701528 1611448 5699192 +1621448 5701528 1663776 5646144 1601624 5681136 1610904 5698784 +1663776 5646144 1601624 5681136 1621448 5701528 1663880 5646248 +1601624 5681136 1621448 5701528 1663776 5646144 1657088 5639464 +1601624 5681136 1610848 5698768 1610904 5698784 1621448 5701528 +1621752 5702000 1663944 5646256 1663880 5646248 1621448 5701528 +1621752 5702000 1621448 5701528 1611448 5699192 1611528 5699256 +1621448 5701528 1610904 5698784 1611448 5699192 1611528 5699256 +1621752 5702000 1663880 5646248 1621448 5701528 1611528 5699256 +1621752 5702000 1621448 5701528 1611528 5699256 1611560 5699312 +1621752 5702000 1663880 5646248 1621448 5701528 1611560 5699312 +1621752 5702000 1621448 5701528 1611560 5699312 1613464 5703016 +1621752 5702000 1663880 5646248 1621448 5701528 1613464 5703016 +1621752 5702000 1621448 5701528 1613464 5703016 1613592 5703136 +1621752 5702000 1663880 5646248 1621448 5701528 1613592 5703136 +1621752 5702000 1621448 5701528 1613592 5703136 1621664 5703552 +1621752 5702000 1663880 5646248 1621448 5701528 1621664 5703552 +1613592 5703136 1617824 5707096 1621664 5703552 1621448 5701528 +1621448 5701528 1613464 5703016 1613592 5703136 1621664 5703552 +1621448 5701528 1611560 5699312 1613464 5703016 1613592 5703136 +1613464 5703016 1613512 5703064 1613592 5703136 1621448 5701528 +1621752 5702000 1621448 5701528 1621664 5703552 1621720 5703464 +1611560 5699312 1613304 5702872 1613464 5703016 1621448 5701528 +1613464 5703016 1613592 5703136 1621448 5701528 1613304 5702872 +1611560 5699312 1611552 5699400 1613304 5702872 1621448 5701528 +1613304 5702872 1613344 5702912 1613464 5703016 1621448 5701528 +1621448 5701528 1611528 5699256 1611560 5699312 1613304 5702872 +1621448 5701528 1611448 5699192 1611528 5699256 1611560 5699312 +1621448 5701528 1621464 5701464 1601624 5681136 1610904 5698784 +1621464 5701464 1663776 5646144 1601624 5681136 1610904 5698784 +1621448 5701528 1621464 5701464 1610904 5698784 1611448 5699192 +1621448 5701528 1621464 5701464 1611448 5699192 1611528 5699256 +1610904 5698784 1610928 5698816 1611448 5699192 1621464 5701464 +1621464 5701464 1610904 5698784 1611448 5699192 1611528 5699256 +1621464 5701464 1601624 5681136 1610904 5698784 1611448 5699192 +1621448 5701528 1663776 5646144 1621464 5701464 1611528 5699256 +1663776 5646144 1621464 5701464 1621448 5701528 1663880 5646248 +1663776 5646144 1601624 5681136 1621464 5701464 1663880 5646248 +1621448 5701528 1621752 5702000 1663880 5646248 1621464 5701464 +1621464 5701464 1611528 5699256 1621448 5701528 1621752 5702000 +1663880 5646248 1663776 5646144 1621464 5701464 1621752 5702000 +1601624 5681136 1621464 5701464 1663776 5646144 1657088 5639464 +1601624 5681136 1610848 5698768 1610904 5698784 1621464 5701464 +1621752 5702000 1663944 5646256 1663880 5646248 1621464 5701464 +1621448 5701528 1621464 5701464 1611528 5699256 1611560 5699312 +1621464 5701464 1611448 5699192 1611528 5699256 1611560 5699312 +1621448 5701528 1621752 5702000 1621464 5701464 1611560 5699312 +1621448 5701528 1621464 5701464 1611560 5699312 1613304 5702872 +1621448 5701528 1621752 5702000 1621464 5701464 1613304 5702872 +1611560 5699312 1611552 5699400 1613304 5702872 1621464 5701464 +1621448 5701528 1621464 5701464 1613304 5702872 1613464 5703016 +1621448 5701528 1621752 5702000 1621464 5701464 1613464 5703016 +1621448 5701528 1621464 5701464 1613464 5703016 1613592 5703136 +1621448 5701528 1621752 5702000 1621464 5701464 1613592 5703136 +1621448 5701528 1621464 5701464 1613592 5703136 1621664 5703552 +1613464 5703016 1613512 5703064 1613592 5703136 1621464 5701464 +1621464 5701464 1613304 5702872 1613464 5703016 1613592 5703136 +1613304 5702872 1613344 5702912 1613464 5703016 1621464 5701464 +1621464 5701464 1611560 5699312 1613304 5702872 1613464 5703016 +1621464 5701464 1611528 5699256 1611560 5699312 1613304 5702872 +1621464 5701464 1621488 5701424 1601624 5681136 1610904 5698784 +1621464 5701464 1663776 5646144 1621488 5701424 1610904 5698784 +1663776 5646144 1621488 5701424 1621464 5701464 1663880 5646248 +1621488 5701424 1610904 5698784 1621464 5701464 1663880 5646248 +1621488 5701424 1663776 5646144 1601624 5681136 1610904 5698784 +1663776 5646144 1601624 5681136 1621488 5701424 1663880 5646248 +1621464 5701464 1621488 5701424 1610904 5698784 1611448 5699192 +1621488 5701424 1601624 5681136 1610904 5698784 1611448 5699192 +1621464 5701464 1663880 5646248 1621488 5701424 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1621488 5701424 +1621464 5701464 1621488 5701424 1611448 5699192 1611528 5699256 +1621464 5701464 1663880 5646248 1621488 5701424 1611528 5699256 +1621464 5701464 1621488 5701424 1611528 5699256 1611560 5699312 +1621464 5701464 1663880 5646248 1621488 5701424 1611560 5699312 +1621488 5701424 1611448 5699192 1611528 5699256 1611560 5699312 +1621488 5701424 1610904 5698784 1611448 5699192 1611528 5699256 +1621464 5701464 1621752 5702000 1663880 5646248 1621488 5701424 +1621464 5701464 1621752 5702000 1621488 5701424 1611560 5699312 +1663880 5646248 1663776 5646144 1621488 5701424 1621752 5702000 +1621464 5701464 1621448 5701528 1621752 5702000 1621488 5701424 +1621464 5701464 1621448 5701528 1621488 5701424 1611560 5699312 +1621752 5702000 1663880 5646248 1621488 5701424 1621448 5701528 +1601624 5681136 1621488 5701424 1663776 5646144 1657088 5639464 +1601624 5681136 1610848 5698768 1610904 5698784 1621488 5701424 +1621752 5702000 1663944 5646256 1663880 5646248 1621488 5701424 +1621464 5701464 1621488 5701424 1611560 5699312 1613304 5702872 +1621488 5701424 1621576 5701360 1663880 5646248 1663776 5646144 +1621488 5701424 1621752 5702000 1621576 5701360 1663776 5646144 +1621488 5701424 1621576 5701360 1663776 5646144 1601624 5681136 +1621576 5701360 1663880 5646248 1663776 5646144 1601624 5681136 +1621488 5701424 1621576 5701360 1601624 5681136 1610904 5698784 +1621488 5701424 1621576 5701360 1610904 5698784 1611448 5699192 +1621576 5701360 1601624 5681136 1610904 5698784 1611448 5699192 +1621488 5701424 1621752 5702000 1621576 5701360 1611448 5699192 +1621576 5701360 1663776 5646144 1601624 5681136 1610904 5698784 +1621576 5701360 1621752 5702000 1663880 5646248 1663776 5646144 +1610904 5698784 1610928 5698816 1611448 5699192 1621576 5701360 +1621488 5701424 1621576 5701360 1611448 5699192 1611528 5699256 +1621576 5701360 1610904 5698784 1611448 5699192 1611528 5699256 +1621488 5701424 1621752 5702000 1621576 5701360 1611528 5699256 +1621488 5701424 1621576 5701360 1611528 5699256 1611560 5699312 +1621752 5702000 1621576 5701360 1621488 5701424 1621448 5701528 +1621576 5701360 1611528 5699256 1621488 5701424 1621448 5701528 +1621752 5702000 1663880 5646248 1621576 5701360 1621448 5701528 +1621488 5701424 1621464 5701464 1621448 5701528 1621576 5701360 +1663776 5646144 1657088 5639464 1601624 5681136 1621576 5701360 +1663776 5646144 1657088 5639464 1621576 5701360 1663880 5646248 +1601624 5681136 1610904 5698784 1621576 5701360 1657088 5639464 +1657088 5639464 1601592 5681064 1601624 5681136 1621576 5701360 +1601624 5681136 1610848 5698768 1610904 5698784 1621576 5701360 +1663776 5646144 1663688 5645984 1657088 5639464 1621576 5701360 +1663880 5646248 1621576 5701360 1621752 5702000 1663944 5646256 +1621752 5702000 1622032 5703760 1663944 5646256 1621576 5701360 +1663880 5646248 1663776 5646144 1621576 5701360 1663944 5646256 +1621576 5701360 1621448 5701528 1621752 5702000 1663944 5646256 +1663944 5646256 1621712 5701344 1621752 5702000 1622032 5703760 +1621752 5702000 1621976 5703632 1622032 5703760 1621712 5701344 +1663944 5646256 1621712 5701344 1622032 5703760 1627384 5719672 +1621712 5701344 1621752 5702000 1622032 5703760 1627384 5719672 +1622032 5703760 1622032 5703808 1627384 5719672 1621712 5701344 +1621752 5702000 1621712 5701344 1621576 5701360 1621448 5701528 +1621712 5701344 1663944 5646256 1621576 5701360 1621448 5701528 +1663944 5646256 1621576 5701360 1621712 5701344 1627384 5719672 +1621712 5701344 1621448 5701528 1621752 5702000 1622032 5703760 +1621576 5701360 1621488 5701424 1621448 5701528 1621712 5701344 +1663944 5646256 1621712 5701344 1627384 5719672 1627448 5719792 +1621576 5701360 1621712 5701344 1663944 5646256 1663880 5646248 +1621576 5701360 1621712 5701344 1663880 5646248 1663776 5646144 +1621576 5701360 1621712 5701344 1663776 5646144 1657088 5639464 +1621712 5701344 1663880 5646248 1663776 5646144 1657088 5639464 +1621576 5701360 1621448 5701528 1621712 5701344 1657088 5639464 +1621712 5701344 1627384 5719672 1663944 5646256 1663880 5646248 +1621576 5701360 1621712 5701344 1657088 5639464 1601624 5681136 +1621712 5701344 1663776 5646144 1657088 5639464 1601624 5681136 +1621576 5701360 1621712 5701344 1601624 5681136 1610904 5698784 +1621576 5701360 1621712 5701344 1610904 5698784 1611448 5699192 +1621576 5701360 1621448 5701528 1621712 5701344 1610904 5698784 +1657088 5639464 1601592 5681064 1601624 5681136 1621712 5701344 +1621712 5701344 1657088 5639464 1601624 5681136 1610904 5698784 +1601624 5681136 1610848 5698768 1610904 5698784 1621712 5701344 +1663776 5646144 1663688 5645984 1657088 5639464 1621712 5701344 +1621712 5701344 1663944 5646256 1663880 5646248 1663776 5646144 +1627384 5719672 1621816 5701384 1621712 5701344 1622032 5703760 +1621712 5701344 1621752 5702000 1622032 5703760 1621816 5701384 +1621752 5702000 1621976 5703632 1622032 5703760 1621816 5701384 +1622032 5703760 1627384 5719672 1621816 5701384 1621752 5702000 +1627384 5719672 1621816 5701384 1622032 5703760 1622032 5703808 +1621712 5701344 1621816 5701384 1663944 5646256 1663880 5646248 +1621816 5701384 1663880 5646248 1621712 5701344 1621752 5702000 +1621712 5701344 1621448 5701528 1621752 5702000 1621816 5701384 +1621752 5702000 1622032 5703760 1621816 5701384 1621448 5701528 +1621712 5701344 1621576 5701360 1621448 5701528 1621816 5701384 +1621712 5701344 1621448 5701528 1621816 5701384 1663880 5646248 +1663944 5646256 1621816 5701384 1627384 5719672 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1621816 5701384 +1663944 5646256 1621816 5701384 1627448 5719792 1629944 5726576 +1621816 5701384 1627448 5719792 1663944 5646256 1663880 5646248 +1627384 5719672 1627448 5719792 1621816 5701384 1622032 5703760 +1621712 5701344 1621816 5701384 1663880 5646248 1663776 5646144 +1621712 5701344 1621816 5701384 1663776 5646144 1657088 5639464 +1621712 5701344 1621816 5701384 1657088 5639464 1601624 5681136 +1621816 5701384 1663776 5646144 1657088 5639464 1601624 5681136 +1621816 5701384 1663944 5646256 1663880 5646248 1663776 5646144 +1621712 5701344 1621448 5701528 1621816 5701384 1601624 5681136 +1657088 5639464 1601592 5681064 1601624 5681136 1621816 5701384 +1621712 5701344 1621816 5701384 1601624 5681136 1610904 5698784 +1663776 5646144 1663688 5645984 1657088 5639464 1621816 5701384 +1621816 5701384 1663880 5646248 1663776 5646144 1657088 5639464 +1627448 5719792 1622216 5701544 1621816 5701384 1627384 5719672 +1627448 5719792 1663944 5646256 1622216 5701544 1627384 5719672 +1627448 5719792 1622216 5701544 1627384 5719672 1627400 5719704 +1663944 5646256 1622216 5701544 1627448 5719792 1629944 5726576 +1621816 5701384 1622216 5701544 1663944 5646256 1663880 5646248 +1621816 5701384 1622216 5701544 1663880 5646248 1663776 5646144 +1622216 5701544 1627448 5719792 1663944 5646256 1663880 5646248 +1622216 5701544 1663944 5646256 1663880 5646248 1663776 5646144 +1622216 5701544 1663776 5646144 1621816 5701384 1627384 5719672 +1621816 5701384 1622032 5703760 1627384 5719672 1622216 5701544 +1621816 5701384 1621752 5702000 1622032 5703760 1622216 5701544 +1621816 5701384 1621448 5701528 1621752 5702000 1622216 5701544 +1621752 5702000 1621976 5703632 1622032 5703760 1622216 5701544 +1621752 5702000 1621952 5703576 1621976 5703632 1622216 5701544 +1621752 5702000 1621912 5703512 1621952 5703576 1622216 5701544 +1621976 5703632 1622032 5703760 1622216 5701544 1621952 5703576 +1621952 5703576 1621976 5703632 1622216 5701544 1621912 5703512 +1621752 5702000 1621912 5703512 1622216 5701544 1621816 5701384 +1622032 5703760 1622032 5703808 1627384 5719672 1622216 5701544 +1622032 5703808 1627336 5719640 1627384 5719672 1622216 5701544 +1622032 5703760 1622032 5703808 1622216 5701544 1621976 5703632 +1627384 5719672 1627448 5719792 1622216 5701544 1622032 5703808 +1621816 5701384 1621752 5702000 1622216 5701544 1663776 5646144 +1621816 5701384 1622216 5701544 1663776 5646144 1657088 5639464 +1621752 5702000 1621824 5703424 1621912 5703512 1622216 5701544 +1622216 5701544 1622440 5701576 1663944 5646256 1663880 5646248 +1627448 5719792 1622440 5701576 1622216 5701544 1627384 5719672 +1622216 5701544 1627384 5719672 1622440 5701576 1663880 5646248 +1622440 5701576 1627448 5719792 1663944 5646256 1663880 5646248 +1627448 5719792 1663944 5646256 1622440 5701576 1627384 5719672 +1622216 5701544 1622032 5703808 1627384 5719672 1622440 5701576 +1622032 5703808 1627336 5719640 1627384 5719672 1622440 5701576 +1622216 5701544 1622032 5703760 1622032 5703808 1622440 5701576 +1622216 5701544 1621976 5703632 1622032 5703760 1622440 5701576 +1622216 5701544 1621952 5703576 1621976 5703632 1622440 5701576 +1622216 5701544 1621912 5703512 1621952 5703576 1622440 5701576 +1622216 5701544 1621752 5702000 1621912 5703512 1622440 5701576 +1621952 5703576 1621976 5703632 1622440 5701576 1621912 5703512 +1621912 5703512 1621952 5703576 1622440 5701576 1621752 5702000 +1622216 5701544 1621816 5701384 1621752 5702000 1622440 5701576 +1622032 5703760 1622032 5703808 1622440 5701576 1621976 5703632 +1621976 5703632 1622032 5703760 1622440 5701576 1621952 5703576 +1627384 5719672 1627448 5719792 1622440 5701576 1622032 5703808 +1622216 5701544 1621752 5702000 1622440 5701576 1663880 5646248 +1622032 5703808 1627384 5719672 1622440 5701576 1622032 5703760 +1627448 5719792 1622440 5701576 1627384 5719672 1627400 5719704 +1663944 5646256 1622440 5701576 1627448 5719792 1629944 5726576 +1622216 5701544 1622440 5701576 1663880 5646248 1663776 5646144 +1622216 5701544 1622440 5701576 1663776 5646144 1621816 5701384 +1622440 5701576 1663944 5646256 1663880 5646248 1663776 5646144 +1622216 5701544 1621752 5702000 1622440 5701576 1621816 5701384 +1622440 5701576 1663880 5646248 1663776 5646144 1621816 5701384 +1663776 5646144 1657088 5639464 1621816 5701384 1622440 5701576 +1657088 5639464 1601624 5681136 1621816 5701384 1622440 5701576 +1601624 5681136 1621712 5701344 1621816 5701384 1622440 5701576 +1601624 5681136 1621712 5701344 1622440 5701576 1657088 5639464 +1621816 5701384 1622216 5701544 1622440 5701576 1621712 5701344 +1657088 5639464 1601592 5681064 1601624 5681136 1622440 5701576 +1601624 5681136 1610904 5698784 1621712 5701344 1622440 5701576 +1663776 5646144 1663688 5645984 1657088 5639464 1622440 5701576 +1663776 5646144 1657088 5639464 1622440 5701576 1663880 5646248 +1657088 5639464 1601624 5681136 1622440 5701576 1663776 5646144 +1621752 5702000 1621824 5703424 1621912 5703512 1622440 5701576 +1621752 5702000 1621824 5703424 1622440 5701576 1622216 5701544 +1621912 5703512 1621952 5703576 1622440 5701576 1621824 5703424 +1621824 5703424 1621856 5703472 1621912 5703512 1622440 5701576 +1621752 5702000 1621744 5703440 1621824 5703424 1622440 5701576 +1622440 5701576 1622664 5701568 1663944 5646256 1663880 5646248 +1622440 5701576 1622664 5701568 1663880 5646248 1663776 5646144 +1622664 5701568 1663944 5646256 1663880 5646248 1663776 5646144 +1622440 5701576 1627448 5719792 1622664 5701568 1663776 5646144 +1627448 5719792 1622664 5701568 1622440 5701576 1627384 5719672 +1622440 5701576 1622032 5703808 1627384 5719672 1622664 5701568 +1622032 5703808 1627336 5719640 1627384 5719672 1622664 5701568 +1622664 5701568 1663776 5646144 1622440 5701576 1622032 5703808 +1627384 5719672 1627448 5719792 1622664 5701568 1622032 5703808 +1622664 5701568 1627448 5719792 1663944 5646256 1663880 5646248 +1627448 5719792 1663944 5646256 1622664 5701568 1627384 5719672 +1622440 5701576 1622032 5703760 1622032 5703808 1622664 5701568 +1622440 5701576 1621976 5703632 1622032 5703760 1622664 5701568 +1622440 5701576 1621952 5703576 1621976 5703632 1622664 5701568 +1622440 5701576 1621912 5703512 1621952 5703576 1622664 5701568 +1622440 5701576 1621824 5703424 1621912 5703512 1622664 5701568 +1621912 5703512 1621952 5703576 1622664 5701568 1621824 5703424 +1621976 5703632 1622032 5703760 1622664 5701568 1621952 5703576 +1621952 5703576 1621976 5703632 1622664 5701568 1621912 5703512 +1622032 5703808 1627384 5719672 1622664 5701568 1622032 5703760 +1622440 5701576 1621824 5703424 1622664 5701568 1663776 5646144 +1621824 5703424 1621856 5703472 1621912 5703512 1622664 5701568 +1622032 5703760 1622032 5703808 1622664 5701568 1621976 5703632 +1627448 5719792 1622664 5701568 1627384 5719672 1627400 5719704 +1663944 5646256 1622664 5701568 1627448 5719792 1629944 5726576 +1622440 5701576 1622664 5701568 1663776 5646144 1657088 5639464 +1622664 5701568 1663880 5646248 1663776 5646144 1657088 5639464 +1622440 5701576 1621824 5703424 1622664 5701568 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1622664 5701568 +1622440 5701576 1622664 5701568 1657088 5639464 1601624 5681136 +1622440 5701576 1622664 5701568 1601624 5681136 1621712 5701344 +1622440 5701576 1622664 5701568 1621712 5701344 1621816 5701384 +1622664 5701568 1601624 5681136 1621712 5701344 1621816 5701384 +1622440 5701576 1622664 5701568 1621816 5701384 1622216 5701544 +1622664 5701568 1621712 5701344 1621816 5701384 1622216 5701544 +1622440 5701576 1621824 5703424 1622664 5701568 1622216 5701544 +1657088 5639464 1601592 5681064 1601624 5681136 1622664 5701568 +1601624 5681136 1610904 5698784 1621712 5701344 1622664 5701568 +1622664 5701568 1663776 5646144 1657088 5639464 1601624 5681136 +1622664 5701568 1657088 5639464 1601624 5681136 1621712 5701344 +1622440 5701576 1621752 5702000 1621824 5703424 1622664 5701568 +1622440 5701576 1622216 5701544 1621752 5702000 1622664 5701568 +1621824 5703424 1621912 5703512 1622664 5701568 1621752 5702000 +1622440 5701576 1621752 5702000 1622664 5701568 1622216 5701544 +1621752 5702000 1621744 5703440 1621824 5703424 1622664 5701568 +1622664 5701568 1622880 5701536 1663944 5646256 1663880 5646248 +1622664 5701568 1622880 5701536 1663880 5646248 1663776 5646144 +1622664 5701568 1622880 5701536 1663776 5646144 1657088 5639464 +1622880 5701536 1663880 5646248 1663776 5646144 1657088 5639464 +1622880 5701536 1663944 5646256 1663880 5646248 1663776 5646144 +1622664 5701568 1627448 5719792 1622880 5701536 1657088 5639464 +1627448 5719792 1622880 5701536 1622664 5701568 1627384 5719672 +1622664 5701568 1622032 5703808 1627384 5719672 1622880 5701536 +1622032 5703808 1627336 5719640 1627384 5719672 1622880 5701536 +1622664 5701568 1622032 5703760 1622032 5703808 1622880 5701536 +1622032 5703808 1627384 5719672 1622880 5701536 1622032 5703760 +1622880 5701536 1657088 5639464 1622664 5701568 1622032 5703760 +1627384 5719672 1627448 5719792 1622880 5701536 1622032 5703808 +1622880 5701536 1627448 5719792 1663944 5646256 1663880 5646248 +1627448 5719792 1663944 5646256 1622880 5701536 1627384 5719672 +1622664 5701568 1621976 5703632 1622032 5703760 1622880 5701536 +1622664 5701568 1621952 5703576 1621976 5703632 1622880 5701536 +1622664 5701568 1621912 5703512 1621952 5703576 1622880 5701536 +1622664 5701568 1621824 5703424 1621912 5703512 1622880 5701536 +1621952 5703576 1621976 5703632 1622880 5701536 1621912 5703512 +1622032 5703760 1622032 5703808 1622880 5701536 1621976 5703632 +1622664 5701568 1621912 5703512 1622880 5701536 1657088 5639464 +1621976 5703632 1622032 5703760 1622880 5701536 1621952 5703576 +1627448 5719792 1622880 5701536 1627384 5719672 1627400 5719704 +1663944 5646256 1622880 5701536 1627448 5719792 1629944 5726576 +1663776 5646144 1663688 5645984 1657088 5639464 1622880 5701536 +1622664 5701568 1622880 5701536 1657088 5639464 1601624 5681136 +1622880 5701536 1663776 5646144 1657088 5639464 1601624 5681136 +1622664 5701568 1621912 5703512 1622880 5701536 1601624 5681136 +1657088 5639464 1601592 5681064 1601624 5681136 1622880 5701536 +1622664 5701568 1622880 5701536 1601624 5681136 1621712 5701344 +1622664 5701568 1622880 5701536 1621712 5701344 1621816 5701384 +1622664 5701568 1622880 5701536 1621816 5701384 1622216 5701544 +1622664 5701568 1621912 5703512 1622880 5701536 1621816 5701384 +1601624 5681136 1610904 5698784 1621712 5701344 1622880 5701536 +1622880 5701536 1657088 5639464 1601624 5681136 1621712 5701344 +1622880 5701536 1601624 5681136 1621712 5701344 1621816 5701384 +1622880 5701536 1623016 5701528 1663944 5646256 1663880 5646248 +1622880 5701536 1623016 5701528 1663880 5646248 1663776 5646144 +1622880 5701536 1623016 5701528 1663776 5646144 1657088 5639464 +1622880 5701536 1623016 5701528 1657088 5639464 1601624 5681136 +1623016 5701528 1663776 5646144 1657088 5639464 1601624 5681136 +1623016 5701528 1663880 5646248 1663776 5646144 1657088 5639464 +1623016 5701528 1627448 5719792 1663944 5646256 1663880 5646248 +1623016 5701528 1663944 5646256 1663880 5646248 1663776 5646144 +1622880 5701536 1627448 5719792 1623016 5701528 1601624 5681136 +1627448 5719792 1623016 5701528 1622880 5701536 1627384 5719672 +1622880 5701536 1622032 5703808 1627384 5719672 1623016 5701528 +1622032 5703808 1627336 5719640 1627384 5719672 1623016 5701528 +1622880 5701536 1622032 5703760 1622032 5703808 1623016 5701528 +1622880 5701536 1621976 5703632 1622032 5703760 1623016 5701528 +1622032 5703760 1622032 5703808 1623016 5701528 1621976 5703632 +1622032 5703808 1627384 5719672 1623016 5701528 1622032 5703760 +1627448 5719792 1663944 5646256 1623016 5701528 1627384 5719672 +1623016 5701528 1601624 5681136 1622880 5701536 1621976 5703632 +1627384 5719672 1627448 5719792 1623016 5701528 1622032 5703808 +1622880 5701536 1621952 5703576 1621976 5703632 1623016 5701528 +1622880 5701536 1621912 5703512 1621952 5703576 1623016 5701528 +1622880 5701536 1622664 5701568 1621912 5703512 1623016 5701528 +1621976 5703632 1622032 5703760 1623016 5701528 1621952 5703576 +1622880 5701536 1621912 5703512 1623016 5701528 1601624 5681136 +1621952 5703576 1621976 5703632 1623016 5701528 1621912 5703512 +1657088 5639464 1601592 5681064 1601624 5681136 1623016 5701528 +1627448 5719792 1623016 5701528 1627384 5719672 1627400 5719704 +1663944 5646256 1623016 5701528 1627448 5719792 1629944 5726576 +1663776 5646144 1663688 5645984 1657088 5639464 1623016 5701528 +1622880 5701536 1623016 5701528 1601624 5681136 1621712 5701344 +1623016 5701528 1657088 5639464 1601624 5681136 1621712 5701344 +1622880 5701536 1621912 5703512 1623016 5701528 1621712 5701344 +1601624 5681136 1610904 5698784 1621712 5701344 1623016 5701528 +1622880 5701536 1623016 5701528 1621712 5701344 1621816 5701384 +1623016 5701528 1623192 5701576 1663944 5646256 1663880 5646248 +1623016 5701528 1627448 5719792 1623192 5701576 1663880 5646248 +1627448 5719792 1623192 5701576 1623016 5701528 1627384 5719672 +1627448 5719792 1663944 5646256 1623192 5701576 1627384 5719672 +1623192 5701576 1663880 5646248 1623016 5701528 1627384 5719672 +1623192 5701576 1627448 5719792 1663944 5646256 1663880 5646248 +1623016 5701528 1623192 5701576 1663880 5646248 1663776 5646144 +1623016 5701528 1623192 5701576 1663776 5646144 1657088 5639464 +1623016 5701528 1623192 5701576 1657088 5639464 1601624 5681136 +1623016 5701528 1623192 5701576 1601624 5681136 1621712 5701344 +1623192 5701576 1663776 5646144 1657088 5639464 1601624 5681136 +1623192 5701576 1663944 5646256 1663880 5646248 1663776 5646144 +1623016 5701528 1627384 5719672 1623192 5701576 1601624 5681136 +1623192 5701576 1663880 5646248 1663776 5646144 1657088 5639464 +1623016 5701528 1622032 5703808 1627384 5719672 1623192 5701576 +1622032 5703808 1627336 5719640 1627384 5719672 1623192 5701576 +1622032 5703808 1620552 5714440 1627336 5719640 1623192 5701576 +1623016 5701528 1622032 5703760 1622032 5703808 1623192 5701576 +1623016 5701528 1621976 5703632 1622032 5703760 1623192 5701576 +1623016 5701528 1621952 5703576 1621976 5703632 1623192 5701576 +1621976 5703632 1622032 5703760 1623192 5701576 1621952 5703576 +1622032 5703760 1622032 5703808 1623192 5701576 1621976 5703632 +1623016 5701528 1621952 5703576 1623192 5701576 1601624 5681136 +1627384 5719672 1627448 5719792 1623192 5701576 1627336 5719640 +1622032 5703808 1627336 5719640 1623192 5701576 1622032 5703760 +1623016 5701528 1621912 5703512 1621952 5703576 1623192 5701576 +1623016 5701528 1622880 5701536 1621912 5703512 1623192 5701576 +1622880 5701536 1622664 5701568 1621912 5703512 1623192 5701576 +1622664 5701568 1621824 5703424 1621912 5703512 1623192 5701576 +1622880 5701536 1622664 5701568 1623192 5701576 1623016 5701528 +1621952 5703576 1621976 5703632 1623192 5701576 1621912 5703512 +1623016 5701528 1622880 5701536 1623192 5701576 1601624 5681136 +1621912 5703512 1621952 5703576 1623192 5701576 1622664 5701568 +1657088 5639464 1601592 5681064 1601624 5681136 1623192 5701576 +1627448 5719792 1623192 5701576 1627384 5719672 1627400 5719704 +1663944 5646256 1623192 5701576 1627448 5719792 1629944 5726576 +1663776 5646144 1663688 5645984 1657088 5639464 1623192 5701576 +1627448 5719792 1623296 5701624 1623192 5701576 1627384 5719672 +1627448 5719792 1663944 5646256 1623296 5701624 1627384 5719672 +1623192 5701576 1627336 5719640 1627384 5719672 1623296 5701624 +1623192 5701576 1622032 5703808 1627336 5719640 1623296 5701624 +1622032 5703808 1620552 5714440 1627336 5719640 1623296 5701624 +1627384 5719672 1627448 5719792 1623296 5701624 1627336 5719640 +1627336 5719640 1627384 5719672 1623296 5701624 1622032 5703808 +1623192 5701576 1623296 5701624 1663944 5646256 1663880 5646248 +1623296 5701624 1627448 5719792 1663944 5646256 1663880 5646248 +1623192 5701576 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663944 5646256 1663880 5646248 1663776 5646144 +1623296 5701624 1663776 5646144 1623192 5701576 1622032 5703808 +1623192 5701576 1623296 5701624 1663776 5646144 1657088 5639464 +1623192 5701576 1622032 5703760 1622032 5703808 1623296 5701624 +1622032 5703808 1627336 5719640 1623296 5701624 1622032 5703760 +1623192 5701576 1621976 5703632 1622032 5703760 1623296 5701624 +1623192 5701576 1621952 5703576 1621976 5703632 1623296 5701624 +1623192 5701576 1621912 5703512 1621952 5703576 1623296 5701624 +1621952 5703576 1621976 5703632 1623296 5701624 1621912 5703512 +1621976 5703632 1622032 5703760 1623296 5701624 1621952 5703576 +1623192 5701576 1621912 5703512 1623296 5701624 1663776 5646144 +1622032 5703760 1622032 5703808 1623296 5701624 1621976 5703632 +1623192 5701576 1622664 5701568 1621912 5703512 1623296 5701624 +1622664 5701568 1621824 5703424 1621912 5703512 1623296 5701624 +1623192 5701576 1622880 5701536 1622664 5701568 1623296 5701624 +1623192 5701576 1623016 5701528 1622880 5701536 1623296 5701624 +1621912 5703512 1621952 5703576 1623296 5701624 1622664 5701568 +1623192 5701576 1622880 5701536 1623296 5701624 1663776 5646144 +1622664 5701568 1621912 5703512 1623296 5701624 1622880 5701536 +1627448 5719792 1623296 5701624 1627384 5719672 1627400 5719704 +1663944 5646256 1623296 5701624 1627448 5719792 1629944 5726576 +1623296 5701624 1623408 5701720 1663944 5646256 1663880 5646248 +1623296 5701624 1627448 5719792 1623408 5701720 1663880 5646248 +1627448 5719792 1623408 5701720 1623296 5701624 1627384 5719672 +1623296 5701624 1627336 5719640 1627384 5719672 1623408 5701720 +1623408 5701720 1663880 5646248 1623296 5701624 1627336 5719640 +1627384 5719672 1627448 5719792 1623408 5701720 1627336 5719640 +1623408 5701720 1627448 5719792 1663944 5646256 1663880 5646248 +1627448 5719792 1663944 5646256 1623408 5701720 1627384 5719672 +1623296 5701624 1622032 5703808 1627336 5719640 1623408 5701720 +1623296 5701624 1622032 5703760 1622032 5703808 1623408 5701720 +1622032 5703808 1620552 5714440 1627336 5719640 1623408 5701720 +1627336 5719640 1627384 5719672 1623408 5701720 1622032 5703808 +1623296 5701624 1622032 5703760 1623408 5701720 1663880 5646248 +1622032 5703808 1627336 5719640 1623408 5701720 1622032 5703760 +1623296 5701624 1623408 5701720 1663880 5646248 1663776 5646144 +1623296 5701624 1621976 5703632 1622032 5703760 1623408 5701720 +1622032 5703760 1622032 5703808 1623408 5701720 1621976 5703632 +1623296 5701624 1621976 5703632 1623408 5701720 1663880 5646248 +1623296 5701624 1621952 5703576 1621976 5703632 1623408 5701720 +1623296 5701624 1621952 5703576 1623408 5701720 1663880 5646248 +1623296 5701624 1621912 5703512 1621952 5703576 1623408 5701720 +1623296 5701624 1621912 5703512 1623408 5701720 1663880 5646248 +1623296 5701624 1622664 5701568 1621912 5703512 1623408 5701720 +1622664 5701568 1621824 5703424 1621912 5703512 1623408 5701720 +1623296 5701624 1622664 5701568 1623408 5701720 1663880 5646248 +1621912 5703512 1621952 5703576 1623408 5701720 1622664 5701568 +1621952 5703576 1621976 5703632 1623408 5701720 1621912 5703512 +1621976 5703632 1622032 5703760 1623408 5701720 1621952 5703576 +1623296 5701624 1622880 5701536 1622664 5701568 1623408 5701720 +1623296 5701624 1622880 5701536 1623408 5701720 1663880 5646248 +1623296 5701624 1623192 5701576 1622880 5701536 1623408 5701720 +1623192 5701576 1623016 5701528 1622880 5701536 1623408 5701720 +1623296 5701624 1623192 5701576 1623408 5701720 1663880 5646248 +1622664 5701568 1621912 5703512 1623408 5701720 1622880 5701536 +1622880 5701536 1622664 5701568 1623408 5701720 1623192 5701576 +1627448 5719792 1623408 5701720 1627384 5719672 1627400 5719704 +1663944 5646256 1623408 5701720 1627448 5719792 1629944 5726576 +1623408 5701720 1623576 5701960 1663944 5646256 1663880 5646248 +1623408 5701720 1623576 5701960 1663880 5646248 1623296 5701624 +1623408 5701720 1627448 5719792 1623576 5701960 1663880 5646248 +1627448 5719792 1623576 5701960 1623408 5701720 1627384 5719672 +1623408 5701720 1627336 5719640 1627384 5719672 1623576 5701960 +1623408 5701720 1622032 5703808 1627336 5719640 1623576 5701960 +1622032 5703808 1620552 5714440 1627336 5719640 1623576 5701960 +1627336 5719640 1627384 5719672 1623576 5701960 1622032 5703808 +1623576 5701960 1663880 5646248 1623408 5701720 1622032 5703808 +1627384 5719672 1627448 5719792 1623576 5701960 1627336 5719640 +1623576 5701960 1627448 5719792 1663944 5646256 1663880 5646248 +1627448 5719792 1663944 5646256 1623576 5701960 1627384 5719672 +1623408 5701720 1622032 5703760 1622032 5703808 1623576 5701960 +1623408 5701720 1621976 5703632 1622032 5703760 1623576 5701960 +1622032 5703808 1627336 5719640 1623576 5701960 1622032 5703760 +1623408 5701720 1621976 5703632 1623576 5701960 1663880 5646248 +1622032 5703760 1622032 5703808 1623576 5701960 1621976 5703632 +1623408 5701720 1621952 5703576 1621976 5703632 1623576 5701960 +1621976 5703632 1622032 5703760 1623576 5701960 1621952 5703576 +1623408 5701720 1621952 5703576 1623576 5701960 1663880 5646248 +1623408 5701720 1621912 5703512 1621952 5703576 1623576 5701960 +1623408 5701720 1621912 5703512 1623576 5701960 1663880 5646248 +1623408 5701720 1622664 5701568 1621912 5703512 1623576 5701960 +1622664 5701568 1621824 5703424 1621912 5703512 1623576 5701960 +1623408 5701720 1622664 5701568 1623576 5701960 1663880 5646248 +1623408 5701720 1622880 5701536 1622664 5701568 1623576 5701960 +1623408 5701720 1622880 5701536 1623576 5701960 1663880 5646248 +1622664 5701568 1621912 5703512 1623576 5701960 1622880 5701536 +1621912 5703512 1621952 5703576 1623576 5701960 1622664 5701568 +1621952 5703576 1621976 5703632 1623576 5701960 1621912 5703512 +1623408 5701720 1623192 5701576 1622880 5701536 1623576 5701960 +1627448 5719792 1623576 5701960 1627384 5719672 1627400 5719704 +1663944 5646256 1623576 5701960 1627448 5719792 1629944 5726576 +1623576 5701960 1623840 5702400 1663944 5646256 1663880 5646248 +1623576 5701960 1623840 5702400 1663880 5646248 1623408 5701720 +1623576 5701960 1627448 5719792 1623840 5702400 1663880 5646248 +1627448 5719792 1623840 5702400 1623576 5701960 1627384 5719672 +1623576 5701960 1627336 5719640 1627384 5719672 1623840 5702400 +1623576 5701960 1622032 5703808 1627336 5719640 1623840 5702400 +1622032 5703808 1620552 5714440 1627336 5719640 1623840 5702400 +1622032 5703808 1620512 5714368 1620552 5714440 1623840 5702400 +1623576 5701960 1622032 5703760 1622032 5703808 1623840 5702400 +1622032 5703808 1620552 5714440 1623840 5702400 1622032 5703760 +1627336 5719640 1627384 5719672 1623840 5702400 1620552 5714440 +1623840 5702400 1663880 5646248 1623576 5701960 1622032 5703760 +1627384 5719672 1627448 5719792 1623840 5702400 1627336 5719640 +1623840 5702400 1627448 5719792 1663944 5646256 1663880 5646248 +1627448 5719792 1663944 5646256 1623840 5702400 1627384 5719672 +1623576 5701960 1621976 5703632 1622032 5703760 1623840 5702400 +1623576 5701960 1621952 5703576 1621976 5703632 1623840 5702400 +1622032 5703760 1622032 5703808 1623840 5702400 1621976 5703632 +1623576 5701960 1621952 5703576 1623840 5702400 1663880 5646248 +1621976 5703632 1622032 5703760 1623840 5702400 1621952 5703576 +1623576 5701960 1621912 5703512 1621952 5703576 1623840 5702400 +1621952 5703576 1621976 5703632 1623840 5702400 1621912 5703512 +1623576 5701960 1621912 5703512 1623840 5702400 1663880 5646248 +1623576 5701960 1622664 5701568 1621912 5703512 1623840 5702400 +1620552 5714440 1627312 5719640 1627336 5719640 1623840 5702400 +1627448 5719792 1623840 5702400 1627384 5719672 1627400 5719704 +1663944 5646256 1623840 5702400 1627448 5719792 1629944 5726576 +1623840 5702400 1623944 5702640 1663944 5646256 1663880 5646248 +1627448 5719792 1623944 5702640 1623840 5702400 1627384 5719672 +1623840 5702400 1627336 5719640 1627384 5719672 1623944 5702640 +1623840 5702400 1620552 5714440 1627336 5719640 1623944 5702640 +1623840 5702400 1622032 5703808 1620552 5714440 1623944 5702640 +1622032 5703808 1620512 5714368 1620552 5714440 1623944 5702640 +1622032 5703808 1621968 5703872 1620512 5714368 1623944 5702640 +1621968 5703872 1621944 5703896 1620512 5714368 1623944 5702640 +1621944 5703896 1620160 5713848 1620512 5714368 1623944 5702640 +1621968 5703872 1621944 5703896 1623944 5702640 1622032 5703808 +1622032 5703808 1621968 5703872 1623944 5702640 1623840 5702400 +1620512 5714368 1620552 5714440 1623944 5702640 1621944 5703896 +1623840 5702400 1622032 5703760 1622032 5703808 1623944 5702640 +1622032 5703808 1621968 5703872 1623944 5702640 1622032 5703760 +1623840 5702400 1621976 5703632 1622032 5703760 1623944 5702640 +1622032 5703760 1622032 5703808 1623944 5702640 1621976 5703632 +1620552 5714440 1627336 5719640 1623944 5702640 1620512 5714368 +1627336 5719640 1627384 5719672 1623944 5702640 1620552 5714440 +1623944 5702640 1663944 5646256 1623840 5702400 1621976 5703632 +1627384 5719672 1627448 5719792 1623944 5702640 1627336 5719640 +1627448 5719792 1663944 5646256 1623944 5702640 1627384 5719672 +1623840 5702400 1621952 5703576 1621976 5703632 1623944 5702640 +1623840 5702400 1621912 5703512 1621952 5703576 1623944 5702640 +1621976 5703632 1622032 5703760 1623944 5702640 1621952 5703576 +1623840 5702400 1621952 5703576 1623944 5702640 1663944 5646256 +1620552 5714440 1627312 5719640 1627336 5719640 1623944 5702640 +1627448 5719792 1623944 5702640 1627384 5719672 1627400 5719704 +1663944 5646256 1623944 5702640 1627448 5719792 1629944 5726576 +1620512 5714368 1623888 5702776 1621944 5703896 1620160 5713848 +1621944 5703896 1623888 5702776 1623944 5702640 1621968 5703872 +1623944 5702640 1622032 5703808 1621968 5703872 1623888 5702776 +1621968 5703872 1621944 5703896 1623888 5702776 1622032 5703808 +1623944 5702640 1622032 5703760 1622032 5703808 1623888 5702776 +1622032 5703808 1621968 5703872 1623888 5702776 1622032 5703760 +1623944 5702640 1623888 5702776 1620512 5714368 1620552 5714440 +1623944 5702640 1621976 5703632 1622032 5703760 1623888 5702776 +1622032 5703760 1622032 5703808 1623888 5702776 1621976 5703632 +1623944 5702640 1621952 5703576 1621976 5703632 1623888 5702776 +1621976 5703632 1622032 5703760 1623888 5702776 1621952 5703576 +1623944 5702640 1623888 5702776 1620552 5714440 1627336 5719640 +1623888 5702776 1620512 5714368 1620552 5714440 1627336 5719640 +1623944 5702640 1623888 5702776 1627336 5719640 1627384 5719672 +1623888 5702776 1620552 5714440 1627336 5719640 1627384 5719672 +1623944 5702640 1623888 5702776 1627384 5719672 1627448 5719792 +1623888 5702776 1627384 5719672 1623944 5702640 1621952 5703576 +1623888 5702776 1621944 5703896 1620512 5714368 1620552 5714440 +1621944 5703896 1620512 5714368 1623888 5702776 1621968 5703872 +1623944 5702640 1623840 5702400 1621952 5703576 1623888 5702776 +1623840 5702400 1621912 5703512 1621952 5703576 1623888 5702776 +1621952 5703576 1621976 5703632 1623888 5702776 1621912 5703512 +1623944 5702640 1623840 5702400 1623888 5702776 1627384 5719672 +1623840 5702400 1621912 5703512 1623888 5702776 1623944 5702640 +1623840 5702400 1623576 5701960 1621912 5703512 1623888 5702776 +1621912 5703512 1621952 5703576 1623888 5702776 1623576 5701960 +1623576 5701960 1622664 5701568 1621912 5703512 1623888 5702776 +1623840 5702400 1623576 5701960 1623888 5702776 1623944 5702640 +1620552 5714440 1627312 5719640 1627336 5719640 1623888 5702776 +1623888 5702776 1623848 5702776 1621912 5703512 1621952 5703576 +1623888 5702776 1623848 5702776 1621952 5703576 1621976 5703632 +1623848 5702776 1621912 5703512 1621952 5703576 1621976 5703632 +1623888 5702776 1623848 5702776 1621976 5703632 1622032 5703760 +1623888 5702776 1623848 5702776 1622032 5703760 1622032 5703808 +1623888 5702776 1623848 5702776 1622032 5703808 1621968 5703872 +1623848 5702776 1621952 5703576 1621976 5703632 1622032 5703760 +1623848 5702776 1621976 5703632 1622032 5703760 1622032 5703808 +1623888 5702776 1623576 5701960 1623848 5702776 1622032 5703808 +1623848 5702776 1623576 5701960 1621912 5703512 1621952 5703576 +1621912 5703512 1623848 5702776 1623576 5701960 1622664 5701568 +1621912 5703512 1623848 5702776 1622664 5701568 1621824 5703424 +1621912 5703512 1621952 5703576 1623848 5702776 1622664 5701568 +1623848 5702776 1623888 5702776 1623576 5701960 1622664 5701568 +1623576 5701960 1622880 5701536 1622664 5701568 1623848 5702776 +1623576 5701960 1623848 5702776 1623888 5702776 1623840 5702400 +1623848 5702776 1622032 5703808 1623888 5702776 1623840 5702400 +1623576 5701960 1622664 5701568 1623848 5702776 1623840 5702400 +1623888 5702776 1623944 5702640 1623840 5702400 1623848 5702776 +1623888 5702776 1623944 5702640 1623848 5702776 1622032 5703808 +1623840 5702400 1623576 5701960 1623848 5702776 1623944 5702640 +1620512 5714368 1623816 5702824 1621944 5703896 1620160 5713848 +1623888 5702776 1623816 5702824 1620512 5714368 1620552 5714440 +1623888 5702776 1623816 5702824 1620552 5714440 1627336 5719640 +1623888 5702776 1623816 5702824 1627336 5719640 1627384 5719672 +1623816 5702824 1620512 5714368 1620552 5714440 1627336 5719640 +1621944 5703896 1623816 5702824 1623888 5702776 1621968 5703872 +1623888 5702776 1622032 5703808 1621968 5703872 1623816 5702824 +1623888 5702776 1623848 5702776 1622032 5703808 1623816 5702824 +1622032 5703808 1621968 5703872 1623816 5702824 1623848 5702776 +1623848 5702776 1622032 5703760 1622032 5703808 1623816 5702824 +1622032 5703808 1621968 5703872 1623816 5702824 1622032 5703760 +1623848 5702776 1622032 5703760 1623816 5702824 1623888 5702776 +1623848 5702776 1621976 5703632 1622032 5703760 1623816 5702824 +1623848 5702776 1621976 5703632 1623816 5702824 1623888 5702776 +1622032 5703760 1622032 5703808 1623816 5702824 1621976 5703632 +1623848 5702776 1621952 5703576 1621976 5703632 1623816 5702824 +1623848 5702776 1621952 5703576 1623816 5702824 1623888 5702776 +1623848 5702776 1621912 5703512 1621952 5703576 1623816 5702824 +1623848 5702776 1621912 5703512 1623816 5702824 1623888 5702776 +1621952 5703576 1621976 5703632 1623816 5702824 1621912 5703512 +1621976 5703632 1622032 5703760 1623816 5702824 1621952 5703576 +1621968 5703872 1621944 5703896 1623816 5702824 1622032 5703808 +1623848 5702776 1622664 5701568 1621912 5703512 1623816 5702824 +1622664 5701568 1621824 5703424 1621912 5703512 1623816 5702824 +1623848 5702776 1622664 5701568 1623816 5702824 1623888 5702776 +1621912 5703512 1621952 5703576 1623816 5702824 1622664 5701568 +1623888 5702776 1623848 5702776 1623816 5702824 1627336 5719640 +1623816 5702824 1621944 5703896 1620512 5714368 1620552 5714440 +1621944 5703896 1620512 5714368 1623816 5702824 1621968 5703872 +1623848 5702776 1623576 5701960 1622664 5701568 1623816 5702824 +1623848 5702776 1623576 5701960 1623816 5702824 1623888 5702776 +1622664 5701568 1621912 5703512 1623816 5702824 1623576 5701960 +1623848 5702776 1623840 5702400 1623576 5701960 1623816 5702824 +1623848 5702776 1623840 5702400 1623816 5702824 1623888 5702776 +1623576 5701960 1622880 5701536 1622664 5701568 1623816 5702824 +1623576 5701960 1622664 5701568 1623816 5702824 1623840 5702400 +1623848 5702776 1623944 5702640 1623840 5702400 1623816 5702824 +1620552 5714440 1627312 5719640 1627336 5719640 1623816 5702824 +1623816 5702824 1623720 5702872 1622032 5703760 1622032 5703808 +1623816 5702824 1623720 5702872 1622032 5703808 1621968 5703872 +1623720 5702872 1622032 5703760 1622032 5703808 1621968 5703872 +1621976 5703632 1623720 5702872 1623816 5702824 1621952 5703576 +1623816 5702824 1621912 5703512 1621952 5703576 1623720 5702872 +1623816 5702824 1622664 5701568 1621912 5703512 1623720 5702872 +1622664 5701568 1621824 5703424 1621912 5703512 1623720 5702872 +1622664 5701568 1621752 5702000 1621824 5703424 1623720 5702872 +1622664 5701568 1621824 5703424 1623720 5702872 1623816 5702824 +1621912 5703512 1621952 5703576 1623720 5702872 1621824 5703424 +1621952 5703576 1621976 5703632 1623720 5702872 1621912 5703512 +1623816 5702824 1623720 5702872 1621968 5703872 1621944 5703896 +1623720 5702872 1622032 5703808 1621968 5703872 1621944 5703896 +1623816 5702824 1623576 5701960 1622664 5701568 1623720 5702872 +1622664 5701568 1621824 5703424 1623720 5702872 1623576 5701960 +1623816 5702824 1623576 5701960 1623720 5702872 1621944 5703896 +1623816 5702824 1623720 5702872 1621944 5703896 1620512 5714368 +1621944 5703896 1620160 5713848 1620512 5714368 1623720 5702872 +1621944 5703896 1620104 5713768 1620160 5713848 1623720 5702872 +1623720 5702872 1621968 5703872 1621944 5703896 1620160 5713848 +1623816 5702824 1623720 5702872 1620512 5714368 1620552 5714440 +1623816 5702824 1623576 5701960 1623720 5702872 1620512 5714368 +1620512 5714368 1623816 5702824 1623720 5702872 1620160 5713848 +1623720 5702872 1621976 5703632 1622032 5703760 1622032 5703808 +1621976 5703632 1622032 5703760 1623720 5702872 1621952 5703576 +1623576 5701960 1622880 5701536 1622664 5701568 1623720 5702872 +1623816 5702824 1623840 5702400 1623576 5701960 1623720 5702872 +1623576 5701960 1622664 5701568 1623720 5702872 1623840 5702400 +1623816 5702824 1623848 5702776 1623840 5702400 1623720 5702872 +1623816 5702824 1623848 5702776 1623720 5702872 1620512 5714368 +1623840 5702400 1623576 5701960 1623720 5702872 1623848 5702776 +1623848 5702776 1623944 5702640 1623840 5702400 1623720 5702872 +1621824 5703424 1621856 5703472 1621912 5703512 1623720 5702872 +1620160 5713848 1620272 5714120 1620512 5714368 1623720 5702872 +1621824 5703424 1623616 5702904 1623720 5702872 1622664 5701568 +1621824 5703424 1623616 5702904 1622664 5701568 1621752 5702000 +1623616 5702904 1623720 5702872 1622664 5701568 1621752 5702000 +1623720 5702872 1623576 5701960 1622664 5701568 1623616 5702904 +1622664 5701568 1621752 5702000 1623616 5702904 1623576 5701960 +1623720 5702872 1623616 5702904 1621912 5703512 1621952 5703576 +1623720 5702872 1623616 5702904 1621952 5703576 1621976 5703632 +1623616 5702904 1621912 5703512 1621952 5703576 1621976 5703632 +1623720 5702872 1623840 5702400 1623576 5701960 1623616 5702904 +1623576 5701960 1622664 5701568 1623616 5702904 1623840 5702400 +1623616 5702904 1621976 5703632 1623720 5702872 1623840 5702400 +1623720 5702872 1623616 5702904 1621976 5703632 1622032 5703760 +1623616 5702904 1621952 5703576 1621976 5703632 1622032 5703760 +1623720 5702872 1623616 5702904 1622032 5703760 1622032 5703808 +1623720 5702872 1623616 5702904 1622032 5703808 1621968 5703872 +1623720 5702872 1623616 5702904 1621968 5703872 1621944 5703896 +1623616 5702904 1622032 5703808 1621968 5703872 1621944 5703896 +1623720 5702872 1623616 5702904 1621944 5703896 1620160 5713848 +1623616 5702904 1622032 5703760 1622032 5703808 1621968 5703872 +1623720 5702872 1623840 5702400 1623616 5702904 1621944 5703896 +1623616 5702904 1621976 5703632 1622032 5703760 1622032 5703808 +1623616 5702904 1621824 5703424 1621912 5703512 1621952 5703576 +1621824 5703424 1621912 5703512 1623616 5702904 1621752 5702000 +1623576 5701960 1622880 5701536 1622664 5701568 1623616 5702904 +1623720 5702872 1623848 5702776 1623840 5702400 1623616 5702904 +1621912 5703512 1623616 5702904 1621824 5703424 1621856 5703472 +1621824 5703424 1623616 5702904 1621752 5702000 1621744 5703440 +1622664 5701568 1622440 5701576 1621752 5702000 1623616 5702904 +1621752 5702000 1623448 5702888 1623616 5702904 1622664 5701568 +1623616 5702904 1623576 5701960 1622664 5701568 1623448 5702888 +1622664 5701568 1621752 5702000 1623448 5702888 1623576 5701960 +1623616 5702904 1623840 5702400 1623576 5701960 1623448 5702888 +1623576 5701960 1622664 5701568 1623448 5702888 1623840 5702400 +1623616 5702904 1623720 5702872 1623840 5702400 1623448 5702888 +1623616 5702904 1623448 5702888 1621824 5703424 1621912 5703512 +1623616 5702904 1623448 5702888 1621912 5703512 1621952 5703576 +1623616 5702904 1623448 5702888 1621952 5703576 1621976 5703632 +1623616 5702904 1623448 5702888 1621976 5703632 1622032 5703760 +1623448 5702888 1621952 5703576 1621976 5703632 1622032 5703760 +1623616 5702904 1623448 5702888 1622032 5703760 1622032 5703808 +1623448 5702888 1621976 5703632 1622032 5703760 1622032 5703808 +1623616 5702904 1623448 5702888 1622032 5703808 1621968 5703872 +1623448 5702888 1621912 5703512 1621952 5703576 1621976 5703632 +1623448 5702888 1621824 5703424 1621912 5703512 1621952 5703576 +1623448 5702888 1622032 5703808 1623616 5702904 1623840 5702400 +1623448 5702888 1621752 5702000 1621824 5703424 1621912 5703512 +1623576 5701960 1622880 5701536 1622664 5701568 1623448 5702888 +1621824 5703424 1621856 5703472 1621912 5703512 1623448 5702888 +1621824 5703424 1623448 5702888 1621752 5702000 1621744 5703440 +1621752 5702000 1621824 5703424 1623448 5702888 1622664 5701568 +1621752 5702000 1623448 5702888 1622664 5701568 1622440 5701576 +1621752 5702000 1623448 5702888 1622440 5701576 1622216 5701544 +1623448 5702888 1623576 5701960 1622664 5701568 1622440 5701576 +1621752 5702000 1621824 5703424 1623448 5702888 1622440 5701576 +1623448 5702888 1623064 5702776 1621824 5703424 1621912 5703512 +1623448 5702888 1623064 5702776 1621912 5703512 1621952 5703576 +1623448 5702888 1623064 5702776 1621952 5703576 1621976 5703632 +1623448 5702888 1623064 5702776 1621976 5703632 1622032 5703760 +1623448 5702888 1623064 5702776 1622032 5703760 1622032 5703808 +1623064 5702776 1621952 5703576 1621976 5703632 1622032 5703760 +1623064 5702776 1621912 5703512 1621952 5703576 1621976 5703632 +1623064 5702776 1621824 5703424 1621912 5703512 1621952 5703576 +1621824 5703424 1621856 5703472 1621912 5703512 1623064 5702776 +1621824 5703424 1623064 5702776 1621752 5702000 1621744 5703440 +1623448 5702888 1621752 5702000 1623064 5702776 1622032 5703760 +1621752 5702000 1623064 5702776 1623448 5702888 1622440 5701576 +1621752 5702000 1623064 5702776 1622440 5701576 1622216 5701544 +1623064 5702776 1622032 5703760 1623448 5702888 1622440 5701576 +1623064 5702776 1621752 5702000 1621824 5703424 1621912 5703512 +1621752 5702000 1621824 5703424 1623064 5702776 1622440 5701576 +1623448 5702888 1622664 5701568 1622440 5701576 1623064 5702776 +1623448 5702888 1623576 5701960 1622664 5701568 1623064 5702776 +1623448 5702888 1623840 5702400 1623576 5701960 1623064 5702776 +1623576 5701960 1622664 5701568 1623064 5702776 1623840 5702400 +1623448 5702888 1623616 5702904 1623840 5702400 1623064 5702776 +1623576 5701960 1622880 5701536 1622664 5701568 1623064 5702776 +1623576 5701960 1622880 5701536 1623064 5702776 1623840 5702400 +1623576 5701960 1623408 5701720 1622880 5701536 1623064 5702776 +1623576 5701960 1623408 5701720 1623064 5702776 1623840 5702400 +1622880 5701536 1622664 5701568 1623064 5702776 1623408 5701720 +1623408 5701720 1623192 5701576 1622880 5701536 1623064 5702776 +1623192 5701576 1623016 5701528 1622880 5701536 1623064 5702776 +1623408 5701720 1623296 5701624 1623192 5701576 1623064 5702776 +1623408 5701720 1623192 5701576 1623064 5702776 1623576 5701960 +1622880 5701536 1622664 5701568 1623064 5702776 1623192 5701576 +1623448 5702888 1623840 5702400 1623064 5702776 1622032 5703760 +1622440 5701576 1621752 5702000 1623064 5702776 1622664 5701568 +1622664 5701568 1622440 5701576 1623064 5702776 1622880 5701536 +1621824 5703424 1622880 5702712 1621752 5702000 1621744 5703440 +1623064 5702776 1622880 5702712 1621824 5703424 1621912 5703512 +1623064 5702776 1622880 5702712 1621912 5703512 1621952 5703576 +1623064 5702776 1622880 5702712 1621952 5703576 1621976 5703632 +1623064 5702776 1622880 5702712 1621976 5703632 1622032 5703760 +1623064 5702776 1622880 5702712 1622032 5703760 1623448 5702888 +1622880 5702712 1621952 5703576 1621976 5703632 1622032 5703760 +1622880 5702712 1621912 5703512 1621952 5703576 1621976 5703632 +1621824 5703424 1621856 5703472 1621912 5703512 1622880 5702712 +1622880 5702712 1621824 5703424 1621912 5703512 1621952 5703576 +1623064 5702776 1621752 5702000 1622880 5702712 1622032 5703760 +1621752 5702000 1622880 5702712 1623064 5702776 1622440 5701576 +1621752 5702000 1622880 5702712 1622440 5701576 1622216 5701544 +1623064 5702776 1622664 5701568 1622440 5701576 1622880 5702712 +1622880 5702712 1622032 5703760 1623064 5702776 1622664 5701568 +1622440 5701576 1621752 5702000 1622880 5702712 1622664 5701568 +1622880 5702712 1621752 5702000 1621824 5703424 1621912 5703512 +1621752 5702000 1621824 5703424 1622880 5702712 1622440 5701576 +1623064 5702776 1622880 5701536 1622664 5701568 1622880 5702712 +1623064 5702776 1623192 5701576 1622880 5701536 1622880 5702712 +1623192 5701576 1623016 5701528 1622880 5701536 1622880 5702712 +1623064 5702776 1623408 5701720 1623192 5701576 1622880 5702712 +1623408 5701720 1623296 5701624 1623192 5701576 1622880 5702712 +1623064 5702776 1623576 5701960 1623408 5701720 1622880 5702712 +1623064 5702776 1623840 5702400 1623576 5701960 1622880 5702712 +1623192 5701576 1622880 5701536 1622880 5702712 1623408 5701720 +1623408 5701720 1623192 5701576 1622880 5702712 1623576 5701960 +1622664 5701568 1622440 5701576 1622880 5702712 1622880 5701536 +1623064 5702776 1623576 5701960 1622880 5702712 1622032 5703760 +1622880 5701536 1622664 5701568 1622880 5702712 1623192 5701576 +1621824 5703424 1622632 5702592 1621752 5702000 1621744 5703440 +1622880 5702712 1622632 5702592 1621824 5703424 1621912 5703512 +1621824 5703424 1621856 5703472 1621912 5703512 1622632 5702592 +1622880 5702712 1622632 5702592 1621912 5703512 1621952 5703576 +1622880 5702712 1622632 5702592 1621952 5703576 1621976 5703632 +1622632 5702592 1621824 5703424 1621912 5703512 1621952 5703576 +1622880 5702712 1621752 5702000 1622632 5702592 1621952 5703576 +1621752 5702000 1622632 5702592 1622880 5702712 1622440 5701576 +1621752 5702000 1622632 5702592 1622440 5701576 1622216 5701544 +1622880 5702712 1622664 5701568 1622440 5701576 1622632 5702592 +1622880 5702712 1622880 5701536 1622664 5701568 1622632 5702592 +1622664 5701568 1622440 5701576 1622632 5702592 1622880 5701536 +1622632 5702592 1621952 5703576 1622880 5702712 1622880 5701536 +1622440 5701576 1621752 5702000 1622632 5702592 1622664 5701568 +1622632 5702592 1621752 5702000 1621824 5703424 1621912 5703512 +1621752 5702000 1621824 5703424 1622632 5702592 1622440 5701576 +1622880 5702712 1623192 5701576 1622880 5701536 1622632 5702592 +1623192 5701576 1623016 5701528 1622880 5701536 1622632 5702592 +1622880 5702712 1623408 5701720 1623192 5701576 1622632 5702592 +1623408 5701720 1623296 5701624 1623192 5701576 1622632 5702592 +1622880 5702712 1623576 5701960 1623408 5701720 1622632 5702592 +1622880 5701536 1622664 5701568 1622632 5702592 1623192 5701576 +1622880 5702712 1623408 5701720 1622632 5702592 1621952 5703576 +1623192 5701576 1622880 5701536 1622632 5702592 1623408 5701720 +1621752 5702000 1622256 5702336 1622440 5701576 1622216 5701544 +1621752 5702000 1622256 5702336 1622216 5701544 1621816 5701384 +1622440 5701576 1622256 5702336 1622632 5702592 1622664 5701568 +1622632 5702592 1622880 5701536 1622664 5701568 1622256 5702336 +1622256 5702336 1621752 5702000 1622632 5702592 1622664 5701568 +1622632 5702592 1622256 5702336 1621752 5702000 1621824 5703424 +1621752 5702000 1621744 5703440 1621824 5703424 1622256 5702336 +1621752 5702000 1621720 5703464 1621744 5703440 1622256 5702336 +1622632 5702592 1622256 5702336 1621824 5703424 1621912 5703512 +1622632 5702592 1622664 5701568 1622256 5702336 1621824 5703424 +1621824 5703424 1622632 5702592 1622256 5702336 1621744 5703440 +1621752 5702000 1621744 5703440 1622256 5702336 1622216 5701544 +1622256 5702336 1622664 5701568 1622440 5701576 1622216 5701544 +1622256 5702336 1621952 5702272 1621744 5703440 1621824 5703424 +1621744 5703440 1621952 5702272 1621752 5702000 1621720 5703464 +1622256 5702336 1621952 5702272 1621824 5703424 1622632 5702592 +1621752 5702000 1621952 5702272 1622256 5702336 1622216 5701544 +1622256 5702336 1622440 5701576 1622216 5701544 1621952 5702272 +1621752 5702000 1621952 5702272 1622216 5701544 1621816 5701384 +1622256 5702336 1622216 5701544 1621952 5702272 1621824 5703424 +1621952 5702272 1621752 5702000 1621744 5703440 1621824 5703424 +1621752 5702000 1621744 5703440 1621952 5702272 1622216 5701544 +1621752 5702000 1621936 5702248 1622216 5701544 1621816 5701384 +1622216 5701544 1621936 5702248 1621952 5702272 1622256 5702336 +1622216 5701544 1621936 5702248 1622256 5702336 1622440 5701576 +1621936 5702248 1621752 5702000 1621952 5702272 1622256 5702336 +1621952 5702272 1621936 5702248 1621752 5702000 1621744 5703440 +1621752 5702000 1621720 5703464 1621744 5703440 1621936 5702248 +1621952 5702272 1621936 5702248 1621744 5703440 1621824 5703424 +1621952 5702272 1622256 5702336 1621936 5702248 1621744 5703440 +1621936 5702248 1622216 5701544 1621752 5702000 1621744 5703440 +1622216 5701544 1621752 5702000 1621936 5702248 1622256 5702336 +1621744 5703440 1621880 5702208 1621752 5702000 1621720 5703464 +1621752 5702000 1621664 5703552 1621720 5703464 1621880 5702208 +1621936 5702248 1621880 5702208 1621744 5703440 1621952 5702272 +1621744 5703440 1621824 5703424 1621952 5702272 1621880 5702208 +1621752 5702000 1621880 5702208 1621936 5702248 1622216 5701544 +1621752 5702000 1621880 5702208 1622216 5701544 1621816 5701384 +1621936 5702248 1622216 5701544 1621880 5702208 1621952 5702272 +1621936 5702248 1622256 5702336 1622216 5701544 1621880 5702208 +1621744 5703440 1621952 5702272 1621880 5702208 1621720 5703464 +1621880 5702208 1622216 5701544 1621752 5702000 1621720 5703464 +1621720 5703464 1621848 5702168 1621752 5702000 1621664 5703552 +1621880 5702208 1621848 5702168 1621720 5703464 1621744 5703440 +1621880 5702208 1621848 5702168 1621744 5703440 1621952 5702272 +1621880 5702208 1621752 5702000 1621848 5702168 1621744 5703440 +1621752 5702000 1621848 5702168 1621880 5702208 1622216 5701544 +1621752 5702000 1621848 5702168 1622216 5701544 1621816 5701384 +1621880 5702208 1621936 5702248 1622216 5701544 1621848 5702168 +1621936 5702248 1622256 5702336 1622216 5701544 1621848 5702168 +1621848 5702168 1621744 5703440 1621880 5702208 1621936 5702248 +1622216 5701544 1621752 5702000 1621848 5702168 1621936 5702248 +1621848 5702168 1621752 5702000 1621720 5703464 1621744 5703440 +1621752 5702000 1621720 5703464 1621848 5702168 1622216 5701544 +1621712 5701344 1615968 5699848 1610904 5698784 1621576 5701360 +1610904 5698784 1611448 5699192 1621576 5701360 1615968 5699848 +1611448 5699192 1611528 5699256 1621576 5701360 1615968 5699848 +1611448 5699192 1611528 5699256 1615968 5699848 1610904 5698784 +1621576 5701360 1621712 5701344 1615968 5699848 1611528 5699256 +1610904 5698784 1610928 5698816 1611448 5699192 1615968 5699848 +1611528 5699256 1621488 5701424 1621576 5701360 1615968 5699848 +1611528 5699256 1621488 5701424 1615968 5699848 1611448 5699192 +1621576 5701360 1621712 5701344 1615968 5699848 1621488 5701424 +1611528 5699256 1611560 5699312 1621488 5701424 1615968 5699848 +1611528 5699256 1611560 5699312 1615968 5699848 1611448 5699192 +1611560 5699312 1621464 5701464 1621488 5701424 1615968 5699848 +1611560 5699312 1621464 5701464 1615968 5699848 1611528 5699256 +1621488 5701424 1621576 5701360 1615968 5699848 1621464 5701464 +1601624 5681136 1615968 5699848 1621712 5701344 1623016 5701528 +1610904 5698784 1615968 5699848 1601624 5681136 1610848 5698768 +1615968 5699848 1601624 5681136 1610904 5698784 1611448 5699192 +1621712 5701344 1601624 5681136 1615968 5699848 1621576 5701360 +1611560 5699312 1613304 5702872 1621464 5701464 1615968 5699848 +1621464 5701464 1621488 5701424 1615968 5699848 1613304 5702872 +1611560 5699312 1613304 5702872 1615968 5699848 1611528 5699256 +1611560 5699312 1611552 5699400 1613304 5702872 1615968 5699848 +1611560 5699312 1611552 5699400 1615968 5699848 1611528 5699256 +1611552 5699400 1613256 5702848 1613304 5702872 1615968 5699848 +1611552 5699400 1612208 5702072 1613256 5702848 1615968 5699848 +1612208 5702072 1612232 5702104 1613256 5702848 1615968 5699848 +1612232 5702104 1612256 5702160 1613256 5702848 1615968 5699848 +1612208 5702072 1612232 5702104 1615968 5699848 1611552 5699400 +1611552 5699400 1611528 5699488 1612208 5702072 1615968 5699848 +1612208 5702072 1612232 5702104 1615968 5699848 1611528 5699488 +1611528 5699488 1612184 5702056 1612208 5702072 1615968 5699848 +1613256 5702848 1613304 5702872 1615968 5699848 1612232 5702104 +1611552 5699400 1611528 5699488 1615968 5699848 1611560 5699312 +1613304 5702872 1613464 5703016 1621464 5701464 1615968 5699848 +1621464 5701464 1621488 5701424 1615968 5699848 1613464 5703016 +1613464 5703016 1613592 5703136 1621464 5701464 1615968 5699848 +1621464 5701464 1621488 5701424 1615968 5699848 1613592 5703136 +1613592 5703136 1621448 5701528 1621464 5701464 1615968 5699848 +1621464 5701464 1621488 5701424 1615968 5699848 1621448 5701528 +1613592 5703136 1621664 5703552 1621448 5701528 1615968 5699848 +1621664 5703552 1621752 5702000 1621448 5701528 1615968 5699848 +1613592 5703136 1617824 5707096 1621664 5703552 1615968 5699848 +1613592 5703136 1613584 5703232 1617824 5707096 1615968 5699848 +1617824 5707096 1621664 5703600 1621664 5703552 1615968 5699848 +1621664 5703552 1621448 5701528 1615968 5699848 1617824 5707096 +1621448 5701528 1621464 5701464 1615968 5699848 1621664 5703552 +1613464 5703016 1613512 5703064 1613592 5703136 1615968 5699848 +1613592 5703136 1617824 5707096 1615968 5699848 1613464 5703016 +1613304 5702872 1613344 5702912 1613464 5703016 1615968 5699848 +1613464 5703016 1613592 5703136 1615968 5699848 1613304 5702872 +1613304 5702872 1613464 5703016 1615968 5699848 1613256 5702848 +1615968 5699848 1615776 5699960 1612208 5702072 1612232 5702104 +1615968 5699848 1615776 5699960 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1615776 5699960 +1615776 5699960 1612208 5702072 1612232 5702104 1613256 5702848 +1611528 5699488 1615776 5699960 1615968 5699848 1611552 5699400 +1611528 5699488 1612208 5702072 1615776 5699960 1611552 5699400 +1612208 5702072 1615776 5699960 1611528 5699488 1612184 5702056 +1615968 5699848 1611552 5699400 1615776 5699960 1613256 5702848 +1615776 5699960 1611528 5699488 1612208 5702072 1612232 5702104 +1615968 5699848 1615776 5699960 1613256 5702848 1613304 5702872 +1615776 5699960 1612232 5702104 1613256 5702848 1613304 5702872 +1615968 5699848 1611552 5699400 1615776 5699960 1613304 5702872 +1615968 5699848 1611560 5699312 1611552 5699400 1615776 5699960 +1615968 5699848 1611528 5699256 1611560 5699312 1615776 5699960 +1615968 5699848 1611448 5699192 1611528 5699256 1615776 5699960 +1611552 5699400 1611528 5699488 1615776 5699960 1611560 5699312 +1615968 5699848 1611528 5699256 1615776 5699960 1613304 5702872 +1611560 5699312 1611552 5699400 1615776 5699960 1611528 5699256 +1615968 5699848 1615776 5699960 1613304 5702872 1613464 5703016 +1615968 5699848 1611528 5699256 1615776 5699960 1613464 5703016 +1615776 5699960 1613256 5702848 1613304 5702872 1613464 5703016 +1613304 5702872 1613344 5702912 1613464 5703016 1615776 5699960 +1615968 5699848 1615776 5699960 1613464 5703016 1613592 5703136 +1615968 5699848 1611528 5699256 1615776 5699960 1613592 5703136 +1613464 5703016 1613512 5703064 1613592 5703136 1615776 5699960 +1615968 5699848 1615776 5699960 1613592 5703136 1617824 5707096 +1613592 5703136 1613584 5703232 1617824 5707096 1615776 5699960 +1615968 5699848 1615776 5699960 1617824 5707096 1621664 5703552 +1615968 5699848 1611528 5699256 1615776 5699960 1617824 5707096 +1615776 5699960 1613464 5703016 1613592 5703136 1617824 5707096 +1615776 5699960 1613304 5702872 1613464 5703016 1613592 5703136 +1611528 5699488 1615600 5700000 1615776 5699960 1611552 5699400 +1615600 5700000 1612208 5702072 1615776 5699960 1611552 5699400 +1615776 5699960 1611560 5699312 1611552 5699400 1615600 5700000 +1611552 5699400 1611528 5699488 1615600 5700000 1611560 5699312 +1615776 5699960 1611560 5699312 1615600 5700000 1612208 5702072 +1612208 5702072 1615600 5700000 1611528 5699488 1612184 5702056 +1611528 5699488 1612208 5702072 1615600 5700000 1611552 5699400 +1615776 5699960 1615600 5700000 1612208 5702072 1612232 5702104 +1615776 5699960 1615600 5700000 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1615600 5700000 +1615776 5699960 1615600 5700000 1613256 5702848 1613304 5702872 +1615600 5700000 1612232 5702104 1613256 5702848 1613304 5702872 +1615776 5699960 1611560 5699312 1615600 5700000 1613304 5702872 +1615600 5700000 1611528 5699488 1612208 5702072 1612232 5702104 +1615600 5700000 1612208 5702072 1612232 5702104 1613256 5702848 +1615776 5699960 1615600 5700000 1613304 5702872 1613464 5703016 +1615600 5700000 1613256 5702848 1613304 5702872 1613464 5703016 +1615776 5699960 1611560 5699312 1615600 5700000 1613464 5703016 +1615776 5699960 1611528 5699256 1611560 5699312 1615600 5700000 +1615776 5699960 1615968 5699848 1611528 5699256 1615600 5700000 +1615968 5699848 1611448 5699192 1611528 5699256 1615600 5700000 +1615776 5699960 1615968 5699848 1615600 5700000 1613464 5703016 +1611560 5699312 1611552 5699400 1615600 5700000 1611528 5699256 +1611528 5699256 1611560 5699312 1615600 5700000 1615968 5699848 +1613304 5702872 1613344 5702912 1613464 5703016 1615600 5700000 +1615776 5699960 1615600 5700000 1613464 5703016 1613592 5703136 +1615776 5699960 1615968 5699848 1615600 5700000 1613592 5703136 +1613464 5703016 1613512 5703064 1613592 5703136 1615600 5700000 +1615600 5700000 1613304 5702872 1613464 5703016 1613592 5703136 +1615776 5699960 1615600 5700000 1613592 5703136 1617824 5707096 +1615600 5700000 1615392 5700008 1612208 5702072 1612232 5702104 +1612208 5702072 1615392 5700008 1611528 5699488 1612184 5702056 +1615600 5700000 1611528 5699488 1615392 5700008 1612232 5702104 +1611528 5699488 1615392 5700008 1615600 5700000 1611552 5699400 +1615600 5700000 1611560 5699312 1611552 5699400 1615392 5700008 +1615600 5700000 1611528 5699256 1611560 5699312 1615392 5700008 +1611560 5699312 1611552 5699400 1615392 5700008 1611528 5699256 +1615392 5700008 1612232 5702104 1615600 5700000 1611528 5699256 +1611552 5699400 1611528 5699488 1615392 5700008 1611560 5699312 +1615392 5700008 1611528 5699488 1612208 5702072 1612232 5702104 +1611528 5699488 1612208 5702072 1615392 5700008 1611552 5699400 +1615600 5700000 1615392 5700008 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1615392 5700008 +1615600 5700000 1615392 5700008 1613256 5702848 1613304 5702872 +1615600 5700000 1615392 5700008 1613304 5702872 1613464 5703016 +1615392 5700008 1613256 5702848 1613304 5702872 1613464 5703016 +1615392 5700008 1612208 5702072 1612232 5702104 1613256 5702848 +1615600 5700000 1611528 5699256 1615392 5700008 1613464 5703016 +1615392 5700008 1612232 5702104 1613256 5702848 1613304 5702872 +1615600 5700000 1615392 5700008 1613464 5703016 1613592 5703136 +1615392 5700008 1613304 5702872 1613464 5703016 1613592 5703136 +1615600 5700000 1611528 5699256 1615392 5700008 1613592 5703136 +1613464 5703016 1613512 5703064 1613592 5703136 1615392 5700008 +1615600 5700000 1615968 5699848 1611528 5699256 1615392 5700008 +1615968 5699848 1611448 5699192 1611528 5699256 1615392 5700008 +1615968 5699848 1610904 5698784 1611448 5699192 1615392 5700008 +1615600 5700000 1615776 5699960 1615968 5699848 1615392 5700008 +1611528 5699256 1611560 5699312 1615392 5700008 1611448 5699192 +1615600 5700000 1615968 5699848 1615392 5700008 1613592 5703136 +1615968 5699848 1611448 5699192 1615392 5700008 1615600 5700000 +1613304 5702872 1613344 5702912 1613464 5703016 1615392 5700008 +1615600 5700000 1615392 5700008 1613592 5703136 1615776 5699960 +1612208 5702072 1615168 5700080 1611528 5699488 1612184 5702056 +1611528 5699488 1611480 5699576 1612184 5702056 1615168 5700080 +1615392 5700008 1615168 5700080 1612208 5702072 1612232 5702104 +1615392 5700008 1615168 5700080 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1615168 5700080 +1615168 5700080 1612208 5702072 1612232 5702104 1613256 5702848 +1615392 5700008 1611528 5699488 1615168 5700080 1613256 5702848 +1611528 5699488 1615168 5700080 1615392 5700008 1611552 5699400 +1615392 5700008 1611560 5699312 1611552 5699400 1615168 5700080 +1615392 5700008 1611528 5699256 1611560 5699312 1615168 5700080 +1615392 5700008 1611448 5699192 1611528 5699256 1615168 5700080 +1611560 5699312 1611552 5699400 1615168 5700080 1611528 5699256 +1615168 5700080 1613256 5702848 1615392 5700008 1611528 5699256 +1611552 5699400 1611528 5699488 1615168 5700080 1611560 5699312 +1615392 5700008 1615168 5700080 1613256 5702848 1613304 5702872 +1615392 5700008 1615168 5700080 1613304 5702872 1613464 5703016 +1615392 5700008 1615168 5700080 1613464 5703016 1613592 5703136 +1615168 5700080 1613304 5702872 1613464 5703016 1613592 5703136 +1615168 5700080 1612232 5702104 1613256 5702848 1613304 5702872 +1615392 5700008 1611528 5699256 1615168 5700080 1613592 5703136 +1615168 5700080 1613256 5702848 1613304 5702872 1613464 5703016 +1613464 5703016 1613512 5703064 1613592 5703136 1615168 5700080 +1615392 5700008 1615168 5700080 1613592 5703136 1615600 5700000 +1615168 5700080 1613464 5703016 1613592 5703136 1615600 5700000 +1615392 5700008 1611528 5699256 1615168 5700080 1615600 5700000 +1613304 5702872 1613344 5702912 1613464 5703016 1615168 5700080 +1613592 5703136 1615776 5699960 1615600 5700000 1615168 5700080 +1612208 5702072 1612232 5702104 1615168 5700080 1612184 5702056 +1615168 5700080 1611552 5699400 1611528 5699488 1612184 5702056 +1611552 5699400 1615072 5700064 1615168 5700080 1611560 5699312 +1615168 5700080 1611528 5699256 1611560 5699312 1615072 5700064 +1615168 5700080 1615392 5700008 1611528 5699256 1615072 5700064 +1615392 5700008 1611448 5699192 1611528 5699256 1615072 5700064 +1615392 5700008 1615968 5699848 1611448 5699192 1615072 5700064 +1615968 5699848 1610904 5698784 1611448 5699192 1615072 5700064 +1615392 5700008 1615968 5699848 1615072 5700064 1615168 5700080 +1611448 5699192 1611528 5699256 1615072 5700064 1615968 5699848 +1611528 5699256 1611560 5699312 1615072 5700064 1611448 5699192 +1611560 5699312 1611552 5699400 1615072 5700064 1611528 5699256 +1615392 5700008 1615600 5700000 1615968 5699848 1615072 5700064 +1615072 5700064 1611528 5699488 1615168 5700080 1615392 5700008 +1615168 5700080 1615072 5700064 1611528 5699488 1612184 5702056 +1611528 5699488 1611480 5699576 1612184 5702056 1615072 5700064 +1615168 5700080 1615072 5700064 1612184 5702056 1612208 5702072 +1615168 5700080 1615072 5700064 1612208 5702072 1612232 5702104 +1615072 5700064 1612184 5702056 1612208 5702072 1612232 5702104 +1615168 5700080 1615072 5700064 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1615072 5700064 +1615168 5700080 1615072 5700064 1613256 5702848 1613304 5702872 +1615072 5700064 1612232 5702104 1613256 5702848 1613304 5702872 +1615168 5700080 1615072 5700064 1613304 5702872 1613464 5703016 +1615168 5700080 1615072 5700064 1613464 5703016 1613592 5703136 +1615168 5700080 1615072 5700064 1613592 5703136 1615600 5700000 +1615072 5700064 1613256 5702848 1613304 5702872 1613464 5703016 +1615072 5700064 1613304 5702872 1613464 5703016 1613592 5703136 +1613464 5703016 1613512 5703064 1613592 5703136 1615072 5700064 +1613304 5702872 1613344 5702912 1613464 5703016 1615072 5700064 +1615072 5700064 1612208 5702072 1612232 5702104 1613256 5702848 +1615168 5700080 1615392 5700008 1615072 5700064 1613592 5703136 +1615072 5700064 1611528 5699488 1612184 5702056 1612208 5702072 +1615072 5700064 1611552 5699400 1611528 5699488 1612184 5702056 +1611552 5699400 1611528 5699488 1615072 5700064 1611560 5699312 +1615968 5699848 1614856 5699920 1615072 5700064 1615392 5700008 +1611448 5699192 1614856 5699920 1615968 5699848 1610904 5698784 +1611448 5699192 1614856 5699920 1610904 5698784 1610928 5698816 +1615072 5700064 1615168 5700080 1615392 5700008 1614856 5699920 +1615072 5700064 1614856 5699920 1611448 5699192 1611528 5699256 +1615968 5699848 1601624 5681136 1610904 5698784 1614856 5699920 +1615072 5700064 1614856 5699920 1611528 5699256 1611560 5699312 +1614856 5699920 1611448 5699192 1611528 5699256 1611560 5699312 +1615072 5700064 1614856 5699920 1611560 5699312 1611552 5699400 +1614856 5699920 1611528 5699256 1611560 5699312 1611552 5699400 +1615968 5699848 1614856 5699920 1615392 5700008 1615600 5700000 +1614856 5699920 1611552 5699400 1615072 5700064 1615392 5700008 +1615072 5700064 1614856 5699920 1611552 5699400 1611528 5699488 +1614856 5699920 1611560 5699312 1611552 5699400 1611528 5699488 +1615072 5700064 1614856 5699920 1611528 5699488 1612184 5702056 +1611528 5699488 1611480 5699576 1612184 5702056 1614856 5699920 +1611480 5699576 1611440 5699632 1612184 5702056 1614856 5699920 +1615072 5700064 1614856 5699920 1612184 5702056 1612208 5702072 +1615072 5700064 1614856 5699920 1612208 5702072 1612232 5702104 +1615072 5700064 1614856 5699920 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614856 5699920 +1614856 5699920 1612208 5702072 1612232 5702104 1613256 5702848 +1615072 5700064 1614856 5699920 1613256 5702848 1613304 5702872 +1615072 5700064 1614856 5699920 1613304 5702872 1613464 5703016 +1614856 5699920 1612232 5702104 1613256 5702848 1613304 5702872 +1614856 5699920 1612184 5702056 1612208 5702072 1612232 5702104 +1612184 5702056 1612208 5702072 1614856 5699920 1611480 5699576 +1615072 5700064 1615392 5700008 1614856 5699920 1613304 5702872 +1614856 5699920 1611552 5699400 1611528 5699488 1611480 5699576 +1611448 5699192 1611528 5699256 1614856 5699920 1610904 5698784 +1615968 5699848 1610904 5698784 1614856 5699920 1615392 5700008 +1611528 5699256 1614728 5699896 1614856 5699920 1611448 5699192 +1614856 5699920 1614728 5699896 1611560 5699312 1611552 5699400 +1614856 5699920 1614728 5699896 1611552 5699400 1611528 5699488 +1614728 5699896 1611560 5699312 1611552 5699400 1611528 5699488 +1614856 5699920 1614728 5699896 1611528 5699488 1611480 5699576 +1614856 5699920 1614728 5699896 1611480 5699576 1612184 5702056 +1611480 5699576 1611440 5699632 1612184 5702056 1614728 5699896 +1614728 5699896 1611552 5699400 1611528 5699488 1611480 5699576 +1614856 5699920 1614728 5699896 1612184 5702056 1612208 5702072 +1614728 5699896 1611480 5699576 1612184 5702056 1612208 5702072 +1614856 5699920 1614728 5699896 1612208 5702072 1612232 5702104 +1614856 5699920 1614728 5699896 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614728 5699896 +1614856 5699920 1614728 5699896 1613256 5702848 1613304 5702872 +1614728 5699896 1612232 5702104 1613256 5702848 1613304 5702872 +1614856 5699920 1614728 5699896 1613304 5702872 1615072 5700064 +1613304 5702872 1613464 5703016 1615072 5700064 1614728 5699896 +1614728 5699896 1613256 5702848 1613304 5702872 1615072 5700064 +1614728 5699896 1612208 5702072 1612232 5702104 1613256 5702848 +1614728 5699896 1612184 5702056 1612208 5702072 1612232 5702104 +1614728 5699896 1611528 5699488 1611480 5699576 1612184 5702056 +1614856 5699920 1610904 5698784 1611448 5699192 1614728 5699896 +1614856 5699920 1615968 5699848 1610904 5698784 1614728 5699896 +1610904 5698784 1610928 5698816 1611448 5699192 1614728 5699896 +1611448 5699192 1611528 5699256 1614728 5699896 1610904 5698784 +1615968 5699848 1601624 5681136 1610904 5698784 1614728 5699896 +1610904 5698784 1611448 5699192 1614728 5699896 1615968 5699848 +1614728 5699896 1615072 5700064 1614856 5699920 1615968 5699848 +1614856 5699920 1615392 5700008 1615968 5699848 1614728 5699896 +1614728 5699896 1611528 5699256 1611560 5699312 1611552 5699400 +1611528 5699256 1611560 5699312 1614728 5699896 1611448 5699192 +1612184 5702056 1614600 5699912 1611480 5699576 1611440 5699632 +1614728 5699896 1614600 5699912 1612184 5702056 1612208 5702072 +1614728 5699896 1614600 5699912 1612208 5702072 1612232 5702104 +1614600 5699912 1612184 5702056 1612208 5702072 1612232 5702104 +1614728 5699896 1614600 5699912 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614600 5699912 +1614728 5699896 1614600 5699912 1613256 5702848 1613304 5702872 +1614728 5699896 1614600 5699912 1613304 5702872 1615072 5700064 +1613304 5702872 1613464 5703016 1615072 5700064 1614600 5699912 +1614600 5699912 1613256 5702848 1613304 5702872 1615072 5700064 +1614728 5699896 1614600 5699912 1615072 5700064 1614856 5699920 +1614600 5699912 1613304 5702872 1615072 5700064 1614856 5699920 +1614600 5699912 1612232 5702104 1613256 5702848 1613304 5702872 +1614600 5699912 1612208 5702072 1612232 5702104 1613256 5702848 +1611480 5699576 1614600 5699912 1614728 5699896 1611528 5699488 +1614728 5699896 1611552 5699400 1611528 5699488 1614600 5699912 +1614728 5699896 1611560 5699312 1611552 5699400 1614600 5699912 +1611552 5699400 1611528 5699488 1614600 5699912 1611560 5699312 +1611528 5699488 1611480 5699576 1614600 5699912 1611552 5699400 +1614728 5699896 1611528 5699256 1611560 5699312 1614600 5699912 +1611560 5699312 1611552 5699400 1614600 5699912 1611528 5699256 +1614728 5699896 1611528 5699256 1614600 5699912 1614856 5699920 +1614728 5699896 1611448 5699192 1611528 5699256 1614600 5699912 +1614728 5699896 1610904 5698784 1611448 5699192 1614600 5699912 +1610904 5698784 1610928 5698816 1611448 5699192 1614600 5699912 +1614728 5699896 1615968 5699848 1610904 5698784 1614600 5699912 +1611528 5699256 1611560 5699312 1614600 5699912 1611448 5699192 +1614728 5699896 1610904 5698784 1614600 5699912 1614856 5699920 +1611448 5699192 1611528 5699256 1614600 5699912 1610904 5698784 +1614600 5699912 1611480 5699576 1612184 5702056 1612208 5702072 +1611480 5699576 1612184 5702056 1614600 5699912 1611528 5699488 +1612184 5702056 1614280 5699976 1611480 5699576 1611440 5699632 +1612184 5702056 1614280 5699976 1611440 5699632 1611408 5699664 +1614600 5699912 1614280 5699976 1612184 5702056 1612208 5702072 +1614600 5699912 1614280 5699976 1612208 5702072 1612232 5702104 +1614600 5699912 1614280 5699976 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614280 5699976 +1614280 5699976 1612208 5702072 1612232 5702104 1613256 5702848 +1614600 5699912 1614280 5699976 1613256 5702848 1613304 5702872 +1614600 5699912 1614280 5699976 1613304 5702872 1615072 5700064 +1613304 5702872 1613464 5703016 1615072 5700064 1614280 5699976 +1614600 5699912 1614280 5699976 1615072 5700064 1614856 5699920 +1614280 5699976 1613256 5702848 1613304 5702872 1615072 5700064 +1614280 5699976 1612232 5702104 1613256 5702848 1613304 5702872 +1614280 5699976 1612184 5702056 1612208 5702072 1612232 5702104 +1614600 5699912 1611480 5699576 1614280 5699976 1615072 5700064 +1611480 5699576 1614280 5699976 1614600 5699912 1611528 5699488 +1614600 5699912 1611552 5699400 1611528 5699488 1614280 5699976 +1614600 5699912 1611560 5699312 1611552 5699400 1614280 5699976 +1614600 5699912 1611528 5699256 1611560 5699312 1614280 5699976 +1611560 5699312 1611552 5699400 1614280 5699976 1611528 5699256 +1611552 5699400 1611528 5699488 1614280 5699976 1611560 5699312 +1614600 5699912 1611448 5699192 1611528 5699256 1614280 5699976 +1614280 5699976 1615072 5700064 1614600 5699912 1611528 5699256 +1611528 5699488 1611480 5699576 1614280 5699976 1611552 5699400 +1612184 5702056 1612208 5702072 1614280 5699976 1611440 5699632 +1614280 5699976 1611528 5699488 1611480 5699576 1611440 5699632 +1612184 5702056 1614160 5699968 1611440 5699632 1611408 5699664 +1611440 5699632 1614160 5699968 1614280 5699976 1611480 5699576 +1614280 5699976 1614160 5699968 1612184 5702056 1612208 5702072 +1614280 5699976 1614160 5699968 1612208 5702072 1612232 5702104 +1614280 5699976 1614160 5699968 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614160 5699968 +1614280 5699976 1614160 5699968 1613256 5702848 1613304 5702872 +1614160 5699968 1612232 5702104 1613256 5702848 1613304 5702872 +1614280 5699976 1614160 5699968 1613304 5702872 1615072 5700064 +1614160 5699968 1612208 5702072 1612232 5702104 1613256 5702848 +1614160 5699968 1612184 5702056 1612208 5702072 1612232 5702104 +1614160 5699968 1613304 5702872 1614280 5699976 1611480 5699576 +1614280 5699976 1611528 5699488 1611480 5699576 1614160 5699968 +1611480 5699576 1611440 5699632 1614160 5699968 1611528 5699488 +1614280 5699976 1611552 5699400 1611528 5699488 1614160 5699968 +1614280 5699976 1611560 5699312 1611552 5699400 1614160 5699968 +1614280 5699976 1611528 5699256 1611560 5699312 1614160 5699968 +1614280 5699976 1614600 5699912 1611528 5699256 1614160 5699968 +1611528 5699256 1611560 5699312 1614160 5699968 1614600 5699912 +1611560 5699312 1611552 5699400 1614160 5699968 1611528 5699256 +1614600 5699912 1611448 5699192 1611528 5699256 1614160 5699968 +1614600 5699912 1611448 5699192 1614160 5699968 1614280 5699976 +1611528 5699256 1611560 5699312 1614160 5699968 1611448 5699192 +1614600 5699912 1610904 5698784 1611448 5699192 1614160 5699968 +1611552 5699400 1611528 5699488 1614160 5699968 1611560 5699312 +1614280 5699976 1614600 5699912 1614160 5699968 1613304 5702872 +1611528 5699488 1611480 5699576 1614160 5699968 1611552 5699400 +1614160 5699968 1611440 5699632 1612184 5702056 1612208 5702072 +1611440 5699632 1612184 5702056 1614160 5699968 1611480 5699576 +1614600 5699912 1614056 5699912 1614160 5699968 1614280 5699976 +1614160 5699968 1614056 5699912 1611448 5699192 1611528 5699256 +1614160 5699968 1614056 5699912 1611528 5699256 1611560 5699312 +1614160 5699968 1614056 5699912 1611560 5699312 1611552 5699400 +1614056 5699912 1611528 5699256 1611560 5699312 1611552 5699400 +1614056 5699912 1611448 5699192 1611528 5699256 1611560 5699312 +1611448 5699192 1614056 5699912 1614600 5699912 1610904 5698784 +1611448 5699192 1614056 5699912 1610904 5698784 1610928 5698816 +1614600 5699912 1614728 5699896 1610904 5698784 1614056 5699912 +1614728 5699896 1615968 5699848 1610904 5698784 1614056 5699912 +1610904 5698784 1611448 5699192 1614056 5699912 1614728 5699896 +1614160 5699968 1614056 5699912 1611552 5699400 1611528 5699488 +1614056 5699912 1611560 5699312 1611552 5699400 1611528 5699488 +1614160 5699968 1614056 5699912 1611528 5699488 1611480 5699576 +1614160 5699968 1614056 5699912 1611480 5699576 1611440 5699632 +1614056 5699912 1611552 5699400 1611528 5699488 1611480 5699576 +1614056 5699912 1611528 5699488 1611480 5699576 1611440 5699632 +1614056 5699912 1611440 5699632 1614160 5699968 1614280 5699976 +1614160 5699968 1614056 5699912 1611440 5699632 1612184 5702056 +1611440 5699632 1611408 5699664 1612184 5702056 1614056 5699912 +1614056 5699912 1611480 5699576 1611440 5699632 1612184 5702056 +1614160 5699968 1614056 5699912 1612184 5702056 1612208 5702072 +1614160 5699968 1614056 5699912 1612208 5702072 1612232 5702104 +1614160 5699968 1614056 5699912 1612232 5702104 1613256 5702848 +1614056 5699912 1612184 5702056 1612208 5702072 1612232 5702104 +1614160 5699968 1614280 5699976 1614056 5699912 1612232 5702104 +1614056 5699912 1611440 5699632 1612184 5702056 1612208 5702072 +1614056 5699912 1610904 5698784 1611448 5699192 1611528 5699256 +1614600 5699912 1614728 5699896 1614056 5699912 1614280 5699976 +1614728 5699896 1613984 5699832 1614056 5699912 1614600 5699912 +1610904 5698784 1613984 5699832 1614728 5699896 1615968 5699848 +1614728 5699896 1614856 5699920 1615968 5699848 1613984 5699832 +1610904 5698784 1613984 5699832 1615968 5699848 1601624 5681136 +1614056 5699912 1613984 5699832 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613984 5699832 +1614056 5699912 1613984 5699832 1611448 5699192 1611528 5699256 +1614056 5699912 1613984 5699832 1611528 5699256 1611560 5699312 +1614056 5699912 1613984 5699832 1611560 5699312 1611552 5699400 +1614056 5699912 1613984 5699832 1611552 5699400 1611528 5699488 +1613984 5699832 1611560 5699312 1611552 5699400 1611528 5699488 +1613984 5699832 1611528 5699256 1611560 5699312 1611552 5699400 +1613984 5699832 1610904 5698784 1611448 5699192 1611528 5699256 +1614056 5699912 1613984 5699832 1611528 5699488 1611480 5699576 +1613984 5699832 1611552 5699400 1611528 5699488 1611480 5699576 +1614056 5699912 1613984 5699832 1611480 5699576 1611440 5699632 +1614056 5699912 1613984 5699832 1611440 5699632 1612184 5702056 +1611440 5699632 1611408 5699664 1612184 5702056 1613984 5699832 +1613984 5699832 1611528 5699488 1611480 5699576 1611440 5699632 +1613984 5699832 1611480 5699576 1611440 5699632 1612184 5702056 +1614056 5699912 1613984 5699832 1612184 5702056 1612208 5702072 +1613984 5699832 1611448 5699192 1611528 5699256 1611560 5699312 +1613984 5699832 1612184 5702056 1614056 5699912 1614600 5699912 +1614056 5699912 1614280 5699976 1614600 5699912 1613984 5699832 +1614600 5699912 1614728 5699896 1613984 5699832 1614280 5699976 +1614056 5699912 1614160 5699968 1614280 5699976 1613984 5699832 +1614056 5699912 1614280 5699976 1613984 5699832 1612184 5702056 +1610904 5698784 1611448 5699192 1613984 5699832 1615968 5699848 +1614728 5699896 1615968 5699848 1613984 5699832 1614600 5699912 +1610904 5698784 1613896 5699672 1615968 5699848 1601624 5681136 +1615968 5699848 1613896 5699672 1613984 5699832 1614728 5699896 +1615968 5699848 1613896 5699672 1614728 5699896 1614856 5699920 +1615968 5699848 1610904 5698784 1613896 5699672 1614728 5699896 +1613984 5699832 1613896 5699672 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613896 5699672 +1613984 5699832 1613896 5699672 1611448 5699192 1611528 5699256 +1613984 5699832 1613896 5699672 1611528 5699256 1611560 5699312 +1613984 5699832 1613896 5699672 1611560 5699312 1611552 5699400 +1613984 5699832 1613896 5699672 1611552 5699400 1611528 5699488 +1613984 5699832 1613896 5699672 1611528 5699488 1611480 5699576 +1613896 5699672 1611552 5699400 1611528 5699488 1611480 5699576 +1613896 5699672 1611560 5699312 1611552 5699400 1611528 5699488 +1613896 5699672 1611448 5699192 1611528 5699256 1611560 5699312 +1613984 5699832 1613896 5699672 1611480 5699576 1611440 5699632 +1613896 5699672 1611528 5699488 1611480 5699576 1611440 5699632 +1613984 5699832 1613896 5699672 1611440 5699632 1612184 5702056 +1613896 5699672 1611528 5699256 1611560 5699312 1611552 5699400 +1613896 5699672 1610904 5698784 1611448 5699192 1611528 5699256 +1613896 5699672 1611440 5699632 1613984 5699832 1614728 5699896 +1613984 5699832 1614600 5699912 1614728 5699896 1613896 5699672 +1613984 5699832 1614280 5699976 1614600 5699912 1613896 5699672 +1614728 5699896 1615968 5699848 1613896 5699672 1614600 5699912 +1613984 5699832 1614056 5699912 1614280 5699976 1613896 5699672 +1613984 5699832 1614280 5699976 1613896 5699672 1611440 5699632 +1614600 5699912 1614728 5699896 1613896 5699672 1614280 5699976 +1613896 5699672 1615968 5699848 1610904 5698784 1611448 5699192 +1610904 5698784 1613856 5699232 1601624 5681136 1610848 5698768 +1601624 5681136 1601592 5681216 1610848 5698768 1613856 5699232 +1615968 5699848 1613856 5699232 1610904 5698784 1613896 5699672 +1601624 5681136 1613856 5699232 1615968 5699848 1621712 5701344 +1615968 5699848 1613856 5699232 1613896 5699672 1614728 5699896 +1615968 5699848 1613856 5699232 1614728 5699896 1614856 5699920 +1613856 5699232 1610904 5698784 1613896 5699672 1614728 5699896 +1613856 5699232 1613896 5699672 1614728 5699896 1614856 5699920 +1610904 5698784 1613896 5699672 1613856 5699232 1610848 5698768 +1613856 5699232 1615968 5699848 1601624 5681136 1610848 5698768 +1615968 5699848 1601624 5681136 1613856 5699232 1614856 5699920 +1613896 5699672 1614600 5699912 1614728 5699896 1613856 5699232 +1613896 5699672 1614600 5699912 1613856 5699232 1610904 5698784 +1614728 5699896 1614856 5699920 1613856 5699232 1614600 5699912 +1615968 5699848 1613856 5699232 1614856 5699920 1615392 5700008 +1613896 5699672 1614280 5699976 1614600 5699912 1613856 5699232 +1610904 5698784 1611448 5699192 1613896 5699672 1613856 5699232 +1610904 5698784 1610928 5698816 1611448 5699192 1613856 5699232 +1613896 5699672 1614600 5699912 1613856 5699232 1611448 5699192 +1610904 5698784 1611448 5699192 1613856 5699232 1610848 5698768 +1611448 5699192 1611528 5699256 1613896 5699672 1613856 5699232 +1613896 5699672 1614600 5699912 1613856 5699232 1611528 5699256 +1611528 5699256 1611560 5699312 1613896 5699672 1613856 5699232 +1613896 5699672 1614600 5699912 1613856 5699232 1611560 5699312 +1611560 5699312 1611552 5699400 1613896 5699672 1613856 5699232 +1613896 5699672 1614600 5699912 1613856 5699232 1611552 5699400 +1611552 5699400 1611528 5699488 1613896 5699672 1613856 5699232 +1611560 5699312 1611552 5699400 1613856 5699232 1611528 5699256 +1611528 5699256 1611560 5699312 1613856 5699232 1611448 5699192 +1611448 5699192 1611528 5699256 1613856 5699232 1610904 5698784 +1601624 5681136 1613808 5699080 1615968 5699848 1621712 5701344 +1613856 5699232 1613808 5699080 1601624 5681136 1610848 5698768 +1601624 5681136 1601592 5681216 1610848 5698768 1613808 5699080 +1601592 5681216 1602160 5695928 1610848 5698768 1613808 5699080 +1613856 5699232 1613808 5699080 1610848 5698768 1610904 5698784 +1613856 5699232 1613808 5699080 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613808 5699080 +1613808 5699080 1610848 5698768 1610904 5698784 1611448 5699192 +1610848 5698768 1610904 5698784 1613808 5699080 1601592 5681216 +1613856 5699232 1615968 5699848 1613808 5699080 1611448 5699192 +1615968 5699848 1613808 5699080 1613856 5699232 1614856 5699920 +1613856 5699232 1614728 5699896 1614856 5699920 1613808 5699080 +1613856 5699232 1614600 5699912 1614728 5699896 1613808 5699080 +1613808 5699080 1611448 5699192 1613856 5699232 1614728 5699896 +1614856 5699920 1615968 5699848 1613808 5699080 1614728 5699896 +1613808 5699080 1615968 5699848 1601624 5681136 1601592 5681216 +1615968 5699848 1601624 5681136 1613808 5699080 1614856 5699920 +1615968 5699848 1613808 5699080 1614856 5699920 1615392 5700008 +1613856 5699232 1613808 5699080 1611448 5699192 1611528 5699256 +1613808 5699080 1610904 5698784 1611448 5699192 1611528 5699256 +1613856 5699232 1614728 5699896 1613808 5699080 1611528 5699256 +1613856 5699232 1613808 5699080 1611528 5699256 1611560 5699312 +1613856 5699232 1614728 5699896 1613808 5699080 1611560 5699312 +1613856 5699232 1613808 5699080 1611560 5699312 1611552 5699400 +1613856 5699232 1614728 5699896 1613808 5699080 1611552 5699400 +1613856 5699232 1613808 5699080 1611552 5699400 1613896 5699672 +1613808 5699080 1611528 5699256 1611560 5699312 1611552 5699400 +1613808 5699080 1611448 5699192 1611528 5699256 1611560 5699312 +1610848 5698768 1613728 5698992 1601592 5681216 1602160 5695928 +1601592 5681216 1613728 5698992 1613808 5699080 1601624 5681136 +1613808 5699080 1613728 5698992 1610848 5698768 1610904 5698784 +1613808 5699080 1613728 5698992 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613728 5698992 +1613808 5699080 1613728 5698992 1611448 5699192 1611528 5699256 +1613728 5698992 1610904 5698784 1611448 5699192 1611528 5699256 +1613728 5698992 1610848 5698768 1610904 5698784 1611448 5699192 +1613808 5699080 1615968 5699848 1601624 5681136 1613728 5698992 +1601624 5681136 1601592 5681216 1613728 5698992 1615968 5699848 +1615968 5699848 1621712 5701344 1601624 5681136 1613728 5698992 +1613728 5698992 1611528 5699256 1613808 5699080 1615968 5699848 +1613808 5699080 1614856 5699920 1615968 5699848 1613728 5698992 +1613728 5698992 1601592 5681216 1610848 5698768 1610904 5698784 +1601592 5681216 1610848 5698768 1613728 5698992 1601624 5681136 +1613808 5699080 1613728 5698992 1611528 5699256 1611560 5699312 +1613728 5698992 1611448 5699192 1611528 5699256 1611560 5699312 +1613808 5699080 1615968 5699848 1613728 5698992 1611560 5699312 +1613808 5699080 1613728 5698992 1611560 5699312 1611552 5699400 +1613808 5699080 1615968 5699848 1613728 5698992 1611552 5699400 +1613808 5699080 1613728 5698992 1611552 5699400 1613856 5699232 +1613808 5699080 1615968 5699848 1613728 5698992 1613856 5699232 +1611552 5699400 1613896 5699672 1613856 5699232 1613728 5698992 +1611552 5699400 1611528 5699488 1613896 5699672 1613728 5698992 +1613856 5699232 1613808 5699080 1613728 5698992 1613896 5699672 +1613728 5698992 1611560 5699312 1611552 5699400 1613896 5699672 +1613728 5698992 1611528 5699256 1611560 5699312 1611552 5699400 +1610848 5698768 1613656 5698968 1601592 5681216 1602160 5695928 +1613728 5698992 1613656 5698968 1610848 5698768 1610904 5698784 +1613728 5698992 1613656 5698968 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613656 5698968 +1613728 5698992 1613656 5698968 1611448 5699192 1611528 5699256 +1613728 5698992 1613656 5698968 1611528 5699256 1611560 5699312 +1613656 5698968 1611448 5699192 1611528 5699256 1611560 5699312 +1613656 5698968 1610904 5698784 1611448 5699192 1611528 5699256 +1613656 5698968 1610848 5698768 1610904 5698784 1611448 5699192 +1613728 5698992 1601592 5681216 1613656 5698968 1611560 5699312 +1601592 5681216 1613656 5698968 1613728 5698992 1601624 5681136 +1613728 5698992 1615968 5699848 1601624 5681136 1613656 5698968 +1613656 5698968 1611560 5699312 1613728 5698992 1601624 5681136 +1613656 5698968 1601592 5681216 1610848 5698768 1610904 5698784 +1601592 5681216 1610848 5698768 1613656 5698968 1601624 5681136 +1613728 5698992 1613656 5698968 1611560 5699312 1611552 5699400 +1613656 5698968 1611528 5699256 1611560 5699312 1611552 5699400 +1613728 5698992 1601624 5681136 1613656 5698968 1611552 5699400 +1613728 5698992 1613656 5698968 1611552 5699400 1613896 5699672 +1613728 5698992 1601624 5681136 1613656 5698968 1613896 5699672 +1611552 5699400 1611528 5699488 1613896 5699672 1613656 5698968 +1613728 5698992 1613656 5698968 1613896 5699672 1613856 5699232 +1613728 5698992 1601624 5681136 1613656 5698968 1613856 5699232 +1613728 5698992 1613656 5698968 1613856 5699232 1613808 5699080 +1613728 5698992 1601624 5681136 1613656 5698968 1613808 5699080 +1613656 5698968 1613896 5699672 1613856 5699232 1613808 5699080 +1613656 5698968 1611552 5699400 1613896 5699672 1613856 5699232 +1613656 5698968 1611560 5699312 1611552 5699400 1613896 5699672 +1610848 5698768 1613632 5698952 1601592 5681216 1602160 5695928 +1613656 5698968 1613632 5698952 1610848 5698768 1610904 5698784 +1613656 5698968 1613632 5698952 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613632 5698952 +1613656 5698968 1613632 5698952 1611448 5699192 1611528 5699256 +1613656 5698968 1613632 5698952 1611528 5699256 1611560 5699312 +1613656 5698968 1613632 5698952 1611560 5699312 1611552 5699400 +1613632 5698952 1611528 5699256 1611560 5699312 1611552 5699400 +1613632 5698952 1611448 5699192 1611528 5699256 1611560 5699312 +1613632 5698952 1610904 5698784 1611448 5699192 1611528 5699256 +1613632 5698952 1610848 5698768 1610904 5698784 1611448 5699192 +1613656 5698968 1601592 5681216 1613632 5698952 1611552 5699400 +1601592 5681216 1613632 5698952 1613656 5698968 1601624 5681136 +1613656 5698968 1613728 5698992 1601624 5681136 1613632 5698952 +1613728 5698992 1615968 5699848 1601624 5681136 1613632 5698952 +1613632 5698952 1611552 5699400 1613656 5698968 1613728 5698992 +1601624 5681136 1601592 5681216 1613632 5698952 1613728 5698992 +1613632 5698952 1601592 5681216 1610848 5698768 1610904 5698784 +1601592 5681216 1610848 5698768 1613632 5698952 1601624 5681136 +1613656 5698968 1613632 5698952 1611552 5699400 1613896 5699672 +1613632 5698952 1611560 5699312 1611552 5699400 1613896 5699672 +1613656 5698968 1613728 5698992 1613632 5698952 1613896 5699672 +1611552 5699400 1611528 5699488 1613896 5699672 1613632 5698952 +1613656 5698968 1613632 5698952 1613896 5699672 1613856 5699232 +1613656 5698968 1613728 5698992 1613632 5698952 1613856 5699232 +1613656 5698968 1613632 5698952 1613856 5699232 1613808 5699080 +1613632 5698952 1611552 5699400 1613896 5699672 1613856 5699232 +1610848 5698768 1613488 5698888 1601592 5681216 1602160 5695928 +1613632 5698952 1613488 5698888 1610848 5698768 1610904 5698784 +1613632 5698952 1613488 5698888 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613488 5698888 +1613632 5698952 1613488 5698888 1611448 5699192 1611528 5699256 +1613632 5698952 1613488 5698888 1611528 5699256 1611560 5699312 +1613632 5698952 1613488 5698888 1611560 5699312 1611552 5699400 +1613632 5698952 1613488 5698888 1611552 5699400 1613896 5699672 +1613488 5698888 1611560 5699312 1611552 5699400 1613896 5699672 +1613488 5698888 1611528 5699256 1611560 5699312 1611552 5699400 +1613488 5698888 1611448 5699192 1611528 5699256 1611560 5699312 +1613488 5698888 1610904 5698784 1611448 5699192 1611528 5699256 +1613488 5698888 1610848 5698768 1610904 5698784 1611448 5699192 +1613632 5698952 1601592 5681216 1613488 5698888 1613896 5699672 +1601592 5681216 1613488 5698888 1613632 5698952 1601624 5681136 +1613632 5698952 1613728 5698992 1601624 5681136 1613488 5698888 +1613728 5698992 1615968 5699848 1601624 5681136 1613488 5698888 +1613632 5698952 1613656 5698968 1613728 5698992 1613488 5698888 +1613488 5698888 1613896 5699672 1613632 5698952 1613728 5698992 +1601624 5681136 1601592 5681216 1613488 5698888 1613728 5698992 +1613488 5698888 1601592 5681216 1610848 5698768 1610904 5698784 +1601592 5681216 1610848 5698768 1613488 5698888 1601624 5681136 +1611552 5699400 1611528 5699488 1613896 5699672 1613488 5698888 +1611552 5699400 1611528 5699488 1613488 5698888 1611560 5699312 +1611528 5699488 1611480 5699576 1613896 5699672 1613488 5698888 +1613896 5699672 1613632 5698952 1613488 5698888 1611528 5699488 +1613632 5698952 1613488 5698888 1613896 5699672 1613856 5699232 +1613488 5698888 1611528 5699488 1613896 5699672 1613856 5699232 +1613632 5698952 1613728 5698992 1613488 5698888 1613856 5699232 +1613632 5698952 1613488 5698888 1613856 5699232 1613656 5698968 +1610848 5698768 1613440 5698848 1601592 5681216 1602160 5695928 +1613488 5698888 1613440 5698848 1610848 5698768 1610904 5698784 +1613488 5698888 1613440 5698848 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613440 5698848 +1613488 5698888 1613440 5698848 1611448 5699192 1611528 5699256 +1613488 5698888 1613440 5698848 1611528 5699256 1611560 5699312 +1613488 5698888 1613440 5698848 1611560 5699312 1611552 5699400 +1613488 5698888 1613440 5698848 1611552 5699400 1611528 5699488 +1613440 5698848 1611560 5699312 1611552 5699400 1611528 5699488 +1613440 5698848 1611528 5699256 1611560 5699312 1611552 5699400 +1613440 5698848 1611448 5699192 1611528 5699256 1611560 5699312 +1613440 5698848 1610904 5698784 1611448 5699192 1611528 5699256 +1613440 5698848 1610848 5698768 1610904 5698784 1611448 5699192 +1613488 5698888 1601592 5681216 1613440 5698848 1611528 5699488 +1601592 5681216 1613440 5698848 1613488 5698888 1601624 5681136 +1613488 5698888 1613728 5698992 1601624 5681136 1613440 5698848 +1613728 5698992 1615968 5699848 1601624 5681136 1613440 5698848 +1615968 5699848 1621712 5701344 1601624 5681136 1613440 5698848 +1613728 5698992 1613808 5699080 1615968 5699848 1613440 5698848 +1613488 5698888 1613632 5698952 1613728 5698992 1613440 5698848 +1613632 5698952 1613656 5698968 1613728 5698992 1613440 5698848 +1613728 5698992 1615968 5699848 1613440 5698848 1613632 5698952 +1613440 5698848 1611528 5699488 1613488 5698888 1613632 5698952 +1601624 5681136 1601592 5681216 1613440 5698848 1615968 5699848 +1613440 5698848 1601592 5681216 1610848 5698768 1610904 5698784 +1601592 5681216 1610848 5698768 1613440 5698848 1601624 5681136 +1613488 5698888 1613440 5698848 1611528 5699488 1613896 5699672 +1615968 5699848 1613424 5698816 1613440 5698848 1613728 5698992 +1601624 5681136 1613424 5698816 1615968 5699848 1621712 5701344 +1615968 5699848 1613424 5698816 1613728 5698992 1613808 5699080 +1613440 5698848 1613632 5698952 1613728 5698992 1613424 5698816 +1613728 5698992 1615968 5699848 1613424 5698816 1613632 5698952 +1613632 5698952 1613656 5698968 1613728 5698992 1613424 5698816 +1613440 5698848 1613488 5698888 1613632 5698952 1613424 5698816 +1613632 5698952 1613728 5698992 1613424 5698816 1613488 5698888 +1613440 5698848 1613424 5698816 1601624 5681136 1601592 5681216 +1613424 5698816 1601592 5681216 1613440 5698848 1613488 5698888 +1613440 5698848 1613424 5698816 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613424 5698816 +1613424 5698816 1601624 5681136 1601592 5681216 1610848 5698768 +1613440 5698848 1613424 5698816 1610848 5698768 1610904 5698784 +1613440 5698848 1613424 5698816 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613424 5698816 +1613440 5698848 1613424 5698816 1611448 5699192 1611528 5699256 +1613440 5698848 1613424 5698816 1611528 5699256 1611560 5699312 +1613440 5698848 1613424 5698816 1611560 5699312 1611552 5699400 +1613424 5698816 1611448 5699192 1611528 5699256 1611560 5699312 +1613424 5698816 1610904 5698784 1611448 5699192 1611528 5699256 +1613424 5698816 1610848 5698768 1610904 5698784 1611448 5699192 +1613440 5698848 1613488 5698888 1613424 5698816 1611560 5699312 +1613424 5698816 1601592 5681216 1610848 5698768 1610904 5698784 +1613424 5698816 1615968 5699848 1601624 5681136 1601592 5681216 +1615968 5699848 1601624 5681136 1613424 5698816 1613728 5698992 +1601624 5681136 1613400 5698720 1615968 5699848 1621712 5701344 +1613424 5698816 1613400 5698720 1601624 5681136 1601592 5681216 +1613424 5698816 1613400 5698720 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613400 5698720 +1613424 5698816 1613400 5698720 1610848 5698768 1610904 5698784 +1613400 5698720 1601592 5681216 1610848 5698768 1610904 5698784 +1613424 5698816 1613400 5698720 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613400 5698720 +1613424 5698816 1613400 5698720 1611448 5699192 1611528 5699256 +1613424 5698816 1613400 5698720 1611528 5699256 1611560 5699312 +1613424 5698816 1613400 5698720 1611560 5699312 1613440 5698848 +1613400 5698720 1611448 5699192 1611528 5699256 1611560 5699312 +1613400 5698720 1610904 5698784 1611448 5699192 1611528 5699256 +1613400 5698720 1610848 5698768 1610904 5698784 1611448 5699192 +1613400 5698720 1601624 5681136 1601592 5681216 1610848 5698768 +1613424 5698816 1615968 5699848 1613400 5698720 1611560 5699312 +1615968 5699848 1613400 5698720 1613424 5698816 1613728 5698992 +1613424 5698816 1613632 5698952 1613728 5698992 1613400 5698720 +1615968 5699848 1613400 5698720 1613728 5698992 1613808 5699080 +1613632 5698952 1613656 5698968 1613728 5698992 1613400 5698720 +1613424 5698816 1613488 5698888 1613632 5698952 1613400 5698720 +1613632 5698952 1613728 5698992 1613400 5698720 1613488 5698888 +1613424 5698816 1613440 5698848 1613488 5698888 1613400 5698720 +1613400 5698720 1611560 5699312 1613424 5698816 1613488 5698888 +1613728 5698992 1615968 5699848 1613400 5698720 1613632 5698952 +1613400 5698720 1615968 5699848 1601624 5681136 1601592 5681216 +1615968 5699848 1601624 5681136 1613400 5698720 1613728 5698992 +1601624 5681136 1613456 5698608 1615968 5699848 1621712 5701344 +1601624 5681136 1613456 5698608 1621712 5701344 1623016 5701528 +1615968 5699848 1621576 5701360 1621712 5701344 1613456 5698608 +1613400 5698720 1613456 5698608 1601624 5681136 1601592 5681216 +1613400 5698720 1613456 5698608 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613456 5698608 +1613400 5698720 1613456 5698608 1610848 5698768 1610904 5698784 +1613400 5698720 1613456 5698608 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613456 5698608 +1613456 5698608 1610848 5698768 1610904 5698784 1611448 5699192 +1613400 5698720 1613456 5698608 1611448 5699192 1611528 5699256 +1613456 5698608 1601592 5681216 1610848 5698768 1610904 5698784 +1613456 5698608 1601624 5681136 1601592 5681216 1610848 5698768 +1613400 5698720 1615968 5699848 1613456 5698608 1611448 5699192 +1615968 5699848 1613456 5698608 1613400 5698720 1613728 5698992 +1615968 5699848 1613456 5698608 1613728 5698992 1613808 5699080 +1615968 5699848 1613456 5698608 1613808 5699080 1614856 5699920 +1613400 5698720 1613632 5698952 1613728 5698992 1613456 5698608 +1613400 5698720 1613488 5698888 1613632 5698952 1613456 5698608 +1613632 5698952 1613656 5698968 1613728 5698992 1613456 5698608 +1613400 5698720 1613424 5698816 1613488 5698888 1613456 5698608 +1613488 5698888 1613632 5698952 1613456 5698608 1613424 5698816 +1613424 5698816 1613440 5698848 1613488 5698888 1613456 5698608 +1613632 5698952 1613728 5698992 1613456 5698608 1613488 5698888 +1613456 5698608 1611448 5699192 1613400 5698720 1613424 5698816 +1613456 5698608 1613632 5698952 1613728 5698992 1613808 5699080 +1601624 5681136 1601592 5681216 1613456 5698608 1621712 5701344 +1613456 5698608 1613808 5699080 1615968 5699848 1621712 5701344 +1601624 5681136 1613648 5698408 1621712 5701344 1623016 5701528 +1601624 5681136 1613648 5698408 1623016 5701528 1623192 5701576 +1621712 5701344 1613648 5698408 1613456 5698608 1615968 5699848 +1621712 5701344 1613648 5698408 1615968 5699848 1621576 5701360 +1621712 5701344 1622880 5701536 1623016 5701528 1613648 5698408 +1601624 5681136 1613456 5698608 1613648 5698408 1623016 5701528 +1613648 5698408 1615968 5699848 1621712 5701344 1623016 5701528 +1613456 5698608 1613648 5698408 1601624 5681136 1601592 5681216 +1613648 5698408 1623016 5701528 1601624 5681136 1601592 5681216 +1613456 5698608 1613648 5698408 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613648 5698408 +1613456 5698608 1613648 5698408 1610848 5698768 1610904 5698784 +1613456 5698608 1613648 5698408 1610904 5698784 1611448 5699192 +1613648 5698408 1601592 5681216 1610848 5698768 1610904 5698784 +1613648 5698408 1601624 5681136 1601592 5681216 1610848 5698768 +1613648 5698408 1610904 5698784 1613456 5698608 1615968 5699848 +1613456 5698608 1613808 5699080 1615968 5699848 1613648 5698408 +1615968 5699848 1621712 5701344 1613648 5698408 1613808 5699080 +1613456 5698608 1613728 5698992 1613808 5699080 1613648 5698408 +1613808 5699080 1614856 5699920 1615968 5699848 1613648 5698408 +1615968 5699848 1621712 5701344 1613648 5698408 1614856 5699920 +1613808 5699080 1614728 5699896 1614856 5699920 1613648 5698408 +1613456 5698608 1613632 5698952 1613728 5698992 1613648 5698408 +1613728 5698992 1613808 5699080 1613648 5698408 1613632 5698952 +1613632 5698952 1613656 5698968 1613728 5698992 1613648 5698408 +1613456 5698608 1613488 5698888 1613632 5698952 1613648 5698408 +1613456 5698608 1613632 5698952 1613648 5698408 1610904 5698784 +1613808 5699080 1614856 5699920 1613648 5698408 1613728 5698992 +1614856 5699920 1615392 5700008 1615968 5699848 1613648 5698408 +1601624 5681136 1613656 5698376 1623016 5701528 1623192 5701576 +1623016 5701528 1613656 5698376 1613648 5698408 1621712 5701344 +1623016 5701528 1613656 5698376 1621712 5701344 1622880 5701536 +1613648 5698408 1613656 5698376 1601624 5681136 1601592 5681216 +1613656 5698376 1601592 5681216 1613648 5698408 1621712 5701344 +1613648 5698408 1615968 5699848 1621712 5701344 1613656 5698376 +1621712 5701344 1623016 5701528 1613656 5698376 1615968 5699848 +1613648 5698408 1614856 5699920 1615968 5699848 1613656 5698376 +1615968 5699848 1621576 5701360 1621712 5701344 1613656 5698376 +1613648 5698408 1614856 5699920 1613656 5698376 1601592 5681216 +1615968 5699848 1621712 5701344 1613656 5698376 1614856 5699920 +1613656 5698376 1623016 5701528 1601624 5681136 1601592 5681216 +1623016 5701528 1601624 5681136 1613656 5698376 1621712 5701344 +1613648 5698408 1613808 5699080 1614856 5699920 1613656 5698376 +1614856 5699920 1615968 5699848 1613656 5698376 1613808 5699080 +1613648 5698408 1613808 5699080 1613656 5698376 1601592 5681216 +1613808 5699080 1614728 5699896 1614856 5699920 1613656 5698376 +1613648 5698408 1613656 5698376 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613656 5698376 +1613656 5698376 1601624 5681136 1601592 5681216 1610848 5698768 +1613648 5698408 1613808 5699080 1613656 5698376 1610848 5698768 +1613648 5698408 1613656 5698376 1610848 5698768 1610904 5698784 +1613648 5698408 1613808 5699080 1613656 5698376 1610904 5698784 +1613648 5698408 1613656 5698376 1610904 5698784 1613456 5698608 +1613648 5698408 1613808 5699080 1613656 5698376 1613456 5698608 +1610904 5698784 1611448 5699192 1613456 5698608 1613656 5698376 +1613656 5698376 1610848 5698768 1610904 5698784 1613456 5698608 +1613656 5698376 1601592 5681216 1610848 5698768 1610904 5698784 +1613648 5698408 1613728 5698992 1613808 5699080 1613656 5698376 +1614856 5699920 1615392 5700008 1615968 5699848 1613656 5698376 +1601624 5681136 1613704 5698312 1623016 5701528 1623192 5701576 +1613656 5698376 1613704 5698312 1601624 5681136 1601592 5681216 +1613656 5698376 1613704 5698312 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613704 5698312 +1613704 5698312 1601624 5681136 1601592 5681216 1610848 5698768 +1613656 5698376 1623016 5701528 1613704 5698312 1610848 5698768 +1623016 5701528 1613704 5698312 1613656 5698376 1621712 5701344 +1613656 5698376 1615968 5699848 1621712 5701344 1613704 5698312 +1615968 5699848 1621576 5701360 1621712 5701344 1613704 5698312 +1623016 5701528 1613704 5698312 1621712 5701344 1622880 5701536 +1613656 5698376 1614856 5699920 1615968 5699848 1613704 5698312 +1615968 5699848 1621712 5701344 1613704 5698312 1614856 5699920 +1613656 5698376 1613808 5699080 1614856 5699920 1613704 5698312 +1614856 5699920 1615968 5699848 1613704 5698312 1613808 5699080 +1613704 5698312 1610848 5698768 1613656 5698376 1613808 5699080 +1621712 5701344 1623016 5701528 1613704 5698312 1615968 5699848 +1613704 5698312 1623016 5701528 1601624 5681136 1601592 5681216 +1623016 5701528 1601624 5681136 1613704 5698312 1621712 5701344 +1613808 5699080 1614728 5699896 1614856 5699920 1613704 5698312 +1613656 5698376 1613648 5698408 1613808 5699080 1613704 5698312 +1613808 5699080 1614856 5699920 1613704 5698312 1613648 5698408 +1613656 5698376 1613648 5698408 1613704 5698312 1610848 5698768 +1613656 5698376 1613704 5698312 1610848 5698768 1610904 5698784 +1613704 5698312 1601592 5681216 1610848 5698768 1610904 5698784 +1613656 5698376 1613648 5698408 1613704 5698312 1610904 5698784 +1613656 5698376 1613704 5698312 1610904 5698784 1613456 5698608 +1613648 5698408 1613728 5698992 1613808 5699080 1613704 5698312 +1613808 5699080 1614856 5699920 1613704 5698312 1613728 5698992 +1613648 5698408 1613632 5698952 1613728 5698992 1613704 5698312 +1613648 5698408 1613728 5698992 1613704 5698312 1613656 5698376 +1614856 5699920 1615392 5700008 1615968 5699848 1613704 5698312 +1601624 5681136 1613736 5698080 1623016 5701528 1623192 5701576 +1613704 5698312 1613736 5698080 1601624 5681136 1601592 5681216 +1613704 5698312 1613736 5698080 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613736 5698080 +1613704 5698312 1613736 5698080 1610848 5698768 1610904 5698784 +1613736 5698080 1601592 5681216 1610848 5698768 1610904 5698784 +1613736 5698080 1601624 5681136 1601592 5681216 1610848 5698768 +1613704 5698312 1623016 5701528 1613736 5698080 1610904 5698784 +1623016 5701528 1613736 5698080 1613704 5698312 1621712 5701344 +1623016 5701528 1613736 5698080 1621712 5701344 1622880 5701536 +1613704 5698312 1615968 5699848 1621712 5701344 1613736 5698080 +1613704 5698312 1614856 5699920 1615968 5699848 1613736 5698080 +1615968 5699848 1621576 5701360 1621712 5701344 1613736 5698080 +1613704 5698312 1613808 5699080 1614856 5699920 1613736 5698080 +1615968 5699848 1621712 5701344 1613736 5698080 1614856 5699920 +1613736 5698080 1610904 5698784 1613704 5698312 1614856 5699920 +1621712 5701344 1623016 5701528 1613736 5698080 1615968 5699848 +1613736 5698080 1623016 5701528 1601624 5681136 1601592 5681216 +1623016 5701528 1601624 5681136 1613736 5698080 1621712 5701344 +1613704 5698312 1613736 5698080 1610904 5698784 1613656 5698376 +1613736 5698080 1610848 5698768 1610904 5698784 1613656 5698376 +1613704 5698312 1614856 5699920 1613736 5698080 1613656 5698376 +1610904 5698784 1613456 5698608 1613656 5698376 1613736 5698080 +1610904 5698784 1613456 5698608 1613736 5698080 1610848 5698768 +1610904 5698784 1611448 5699192 1613456 5698608 1613736 5698080 +1613456 5698608 1613648 5698408 1613656 5698376 1613736 5698080 +1613656 5698376 1613704 5698312 1613736 5698080 1613456 5698608 +1614856 5699920 1615392 5700008 1615968 5699848 1613736 5698080 +1601624 5681136 1613728 5697776 1623016 5701528 1623192 5701576 +1613736 5698080 1613728 5697776 1601624 5681136 1601592 5681216 +1613736 5698080 1613728 5697776 1601592 5681216 1610848 5698768 +1601592 5681216 1602160 5695928 1610848 5698768 1613728 5697776 +1601592 5681216 1601128 5681664 1602160 5695928 1613728 5697776 +1602160 5695928 1610784 5698784 1610848 5698768 1613728 5697776 +1613736 5698080 1613728 5697776 1610848 5698768 1610904 5698784 +1613736 5698080 1613728 5697776 1610904 5698784 1613456 5698608 +1613728 5697776 1610848 5698768 1610904 5698784 1613456 5698608 +1610848 5698768 1610904 5698784 1613728 5697776 1602160 5695928 +1613728 5697776 1601624 5681136 1601592 5681216 1602160 5695928 +1613736 5698080 1623016 5701528 1613728 5697776 1613456 5698608 +1623016 5701528 1613728 5697776 1613736 5698080 1621712 5701344 +1623016 5701528 1613728 5697776 1621712 5701344 1622880 5701536 +1613736 5698080 1615968 5699848 1621712 5701344 1613728 5697776 +1615968 5699848 1621576 5701360 1621712 5701344 1613728 5697776 +1613736 5698080 1614856 5699920 1615968 5699848 1613728 5697776 +1613728 5697776 1613456 5698608 1613736 5698080 1615968 5699848 +1621712 5701344 1623016 5701528 1613728 5697776 1615968 5699848 +1613728 5697776 1623016 5701528 1601624 5681136 1601592 5681216 +1623016 5701528 1601624 5681136 1613728 5697776 1621712 5701344 +1610904 5698784 1611448 5699192 1613456 5698608 1613728 5697776 +1613736 5698080 1613728 5697776 1613456 5698608 1613656 5698376 +1601624 5681136 1613696 5697608 1623016 5701528 1623192 5701576 +1613728 5697776 1613696 5697608 1601624 5681136 1601592 5681216 +1613728 5697776 1613696 5697608 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1613696 5697608 +1613728 5697776 1613696 5697608 1602160 5695928 1610848 5698768 +1602160 5695928 1610784 5698784 1610848 5698768 1613696 5697608 +1613728 5697776 1613696 5697608 1610848 5698768 1610904 5698784 +1613696 5697608 1602160 5695928 1610848 5698768 1610904 5698784 +1613728 5697776 1613696 5697608 1610904 5698784 1613456 5698608 +1613728 5697776 1613696 5697608 1613456 5698608 1613736 5698080 +1613696 5697608 1610848 5698768 1610904 5698784 1613456 5698608 +1613696 5697608 1601592 5681216 1602160 5695928 1610848 5698768 +1613696 5697608 1601624 5681136 1601592 5681216 1602160 5695928 +1613728 5697776 1623016 5701528 1613696 5697608 1613456 5698608 +1623016 5701528 1613696 5697608 1613728 5697776 1621712 5701344 +1623016 5701528 1613696 5697608 1621712 5701344 1622880 5701536 +1613728 5697776 1615968 5699848 1621712 5701344 1613696 5697608 +1615968 5699848 1621576 5701360 1621712 5701344 1613696 5697608 +1613728 5697776 1613736 5698080 1615968 5699848 1613696 5697608 +1613696 5697608 1613456 5698608 1613728 5697776 1615968 5699848 +1621712 5701344 1623016 5701528 1613696 5697608 1615968 5699848 +1613696 5697608 1623016 5701528 1601624 5681136 1601592 5681216 +1623016 5701528 1601624 5681136 1613696 5697608 1621712 5701344 +1610904 5698784 1611448 5699192 1613456 5698608 1613696 5697608 +1610904 5698784 1610928 5698816 1611448 5699192 1613696 5697608 +1613456 5698608 1613728 5697776 1613696 5697608 1611448 5699192 +1610904 5698784 1611448 5699192 1613696 5697608 1610848 5698768 +1611448 5699192 1613400 5698720 1613456 5698608 1613696 5697608 +1601624 5681136 1613640 5697488 1623016 5701528 1623192 5701576 +1613696 5697608 1613640 5697488 1601624 5681136 1601592 5681216 +1613696 5697608 1613640 5697488 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1613640 5697488 +1613696 5697608 1613640 5697488 1602160 5695928 1610848 5698768 +1602160 5695928 1610784 5698784 1610848 5698768 1613640 5697488 +1613696 5697608 1613640 5697488 1610848 5698768 1610904 5698784 +1613696 5697608 1613640 5697488 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613640 5697488 +1613640 5697488 1610848 5698768 1610904 5698784 1611448 5699192 +1610848 5698768 1610904 5698784 1613640 5697488 1610784 5698784 +1613640 5697488 1601592 5681216 1602160 5695928 1610784 5698784 +1613640 5697488 1623016 5701528 1601624 5681136 1601592 5681216 +1602160 5695928 1608624 5699288 1610784 5698784 1613640 5697488 +1613640 5697488 1601624 5681136 1601592 5681216 1602160 5695928 +1613696 5697608 1623016 5701528 1613640 5697488 1611448 5699192 +1623016 5701528 1613640 5697488 1613696 5697608 1621712 5701344 +1623016 5701528 1613640 5697488 1621712 5701344 1622880 5701536 +1613696 5697608 1615968 5699848 1621712 5701344 1613640 5697488 +1615968 5699848 1621576 5701360 1621712 5701344 1613640 5697488 +1613696 5697608 1613728 5697776 1615968 5699848 1613640 5697488 +1623016 5701528 1601624 5681136 1613640 5697488 1621712 5701344 +1613640 5697488 1611448 5699192 1613696 5697608 1615968 5699848 +1621712 5701344 1623016 5701528 1613640 5697488 1615968 5699848 +1613696 5697608 1613640 5697488 1611448 5699192 1613456 5698608 +1613696 5697608 1613640 5697488 1613456 5698608 1613728 5697776 +1613456 5698608 1613736 5698080 1613728 5697776 1613640 5697488 +1613640 5697488 1610904 5698784 1611448 5699192 1613456 5698608 +1613696 5697608 1615968 5699848 1613640 5697488 1613728 5697776 +1613640 5697488 1611448 5699192 1613456 5698608 1613728 5697776 +1611448 5699192 1613400 5698720 1613456 5698608 1613640 5697488 +1602160 5695928 1613528 5697360 1601592 5681216 1601128 5681664 +1613640 5697488 1613528 5697360 1602160 5695928 1610784 5698784 +1613640 5697488 1613528 5697360 1610784 5698784 1610848 5698768 +1613640 5697488 1613528 5697360 1610848 5698768 1610904 5698784 +1613528 5697360 1610784 5698784 1610848 5698768 1610904 5698784 +1613640 5697488 1613528 5697360 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613528 5697360 +1613640 5697488 1613528 5697360 1611448 5699192 1613456 5698608 +1613528 5697360 1610904 5698784 1611448 5699192 1613456 5698608 +1613528 5697360 1610848 5698768 1610904 5698784 1611448 5699192 +1613528 5697360 1602160 5695928 1610784 5698784 1610848 5698768 +1613640 5697488 1601592 5681216 1613528 5697360 1613456 5698608 +1613528 5697360 1601592 5681216 1602160 5695928 1610784 5698784 +1602160 5695928 1608624 5699288 1610784 5698784 1613528 5697360 +1601592 5681216 1613528 5697360 1613640 5697488 1601624 5681136 +1613640 5697488 1623016 5701528 1601624 5681136 1613528 5697360 +1623016 5701528 1623192 5701576 1601624 5681136 1613528 5697360 +1613528 5697360 1613456 5698608 1613640 5697488 1623016 5701528 +1613640 5697488 1621712 5701344 1623016 5701528 1613528 5697360 +1621712 5701344 1622880 5701536 1623016 5701528 1613528 5697360 +1623016 5701528 1601624 5681136 1613528 5697360 1621712 5701344 +1613640 5697488 1621712 5701344 1613528 5697360 1613456 5698608 +1601592 5681216 1602160 5695928 1613528 5697360 1601624 5681136 +1601624 5681136 1601592 5681216 1613528 5697360 1623016 5701528 +1613640 5697488 1615968 5699848 1621712 5701344 1613528 5697360 +1613640 5697488 1613528 5697360 1613456 5698608 1613728 5697776 +1613456 5698608 1613736 5698080 1613728 5697776 1613528 5697360 +1613640 5697488 1613528 5697360 1613728 5697776 1613696 5697608 +1613528 5697360 1611448 5699192 1613456 5698608 1613728 5697776 +1613640 5697488 1621712 5701344 1613528 5697360 1613696 5697608 +1613528 5697360 1613456 5698608 1613728 5697776 1613696 5697608 +1611448 5699192 1613400 5698720 1613456 5698608 1613528 5697360 +1602160 5695928 1613312 5697192 1601592 5681216 1601128 5681664 +1613528 5697360 1613312 5697192 1602160 5695928 1610784 5698784 +1613528 5697360 1613312 5697192 1610784 5698784 1610848 5698768 +1613528 5697360 1613312 5697192 1610848 5698768 1610904 5698784 +1613528 5697360 1613312 5697192 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613312 5697192 +1613312 5697192 1610848 5698768 1610904 5698784 1611448 5699192 +1613528 5697360 1613312 5697192 1611448 5699192 1613456 5698608 +1613528 5697360 1613312 5697192 1613456 5698608 1613728 5697776 +1613312 5697192 1611448 5699192 1613456 5698608 1613728 5697776 +1613456 5698608 1613736 5698080 1613728 5697776 1613312 5697192 +1613456 5698608 1613736 5698080 1613312 5697192 1611448 5699192 +1613728 5697776 1613528 5697360 1613312 5697192 1613736 5698080 +1613312 5697192 1610904 5698784 1611448 5699192 1613456 5698608 +1613312 5697192 1610784 5698784 1610848 5698768 1610904 5698784 +1613312 5697192 1602160 5695928 1610784 5698784 1610848 5698768 +1613528 5697360 1601592 5681216 1613312 5697192 1613728 5697776 +1601592 5681216 1613312 5697192 1613528 5697360 1601624 5681136 +1613312 5697192 1613728 5697776 1613528 5697360 1601624 5681136 +1613312 5697192 1601592 5681216 1602160 5695928 1610784 5698784 +1601592 5681216 1602160 5695928 1613312 5697192 1601624 5681136 +1602160 5695928 1608624 5699288 1610784 5698784 1613312 5697192 +1613528 5697360 1623016 5701528 1601624 5681136 1613312 5697192 +1623016 5701528 1623192 5701576 1601624 5681136 1613312 5697192 +1613528 5697360 1621712 5701344 1623016 5701528 1613312 5697192 +1613528 5697360 1623016 5701528 1613312 5697192 1613728 5697776 +1601624 5681136 1601592 5681216 1613312 5697192 1623016 5701528 +1613528 5697360 1613312 5697192 1613728 5697776 1613696 5697608 +1611448 5699192 1613400 5698720 1613456 5698608 1613312 5697192 +1613456 5698608 1613656 5698376 1613736 5698080 1613312 5697192 +1602160 5695928 1613072 5696952 1601592 5681216 1601128 5681664 +1613312 5697192 1613072 5696952 1602160 5695928 1610784 5698784 +1613312 5697192 1613072 5696952 1610784 5698784 1610848 5698768 +1613312 5697192 1613072 5696952 1610848 5698768 1610904 5698784 +1613312 5697192 1613072 5696952 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613072 5696952 +1613312 5697192 1613072 5696952 1611448 5699192 1613456 5698608 +1613072 5696952 1610904 5698784 1611448 5699192 1613456 5698608 +1613312 5697192 1613072 5696952 1613456 5698608 1613736 5698080 +1613072 5696952 1610848 5698768 1610904 5698784 1611448 5699192 +1613072 5696952 1610784 5698784 1610848 5698768 1610904 5698784 +1613072 5696952 1602160 5695928 1610784 5698784 1610848 5698768 +1613312 5697192 1601592 5681216 1613072 5696952 1613456 5698608 +1601592 5681216 1613072 5696952 1613312 5697192 1601624 5681136 +1613312 5697192 1623016 5701528 1601624 5681136 1613072 5696952 +1623016 5701528 1623192 5701576 1601624 5681136 1613072 5696952 +1613072 5696952 1613456 5698608 1613312 5697192 1623016 5701528 +1601624 5681136 1601592 5681216 1613072 5696952 1623016 5701528 +1601592 5681216 1602160 5695928 1613072 5696952 1601624 5681136 +1613072 5696952 1601592 5681216 1602160 5695928 1610784 5698784 +1602160 5695928 1608624 5699288 1610784 5698784 1613072 5696952 +1602160 5695928 1602200 5696008 1608624 5699288 1613072 5696952 +1608624 5699288 1610736 5698824 1610784 5698784 1613072 5696952 +1610784 5698784 1610848 5698768 1613072 5696952 1608624 5699288 +1602160 5695928 1608624 5699288 1613072 5696952 1601592 5681216 +1613312 5697192 1613528 5697360 1623016 5701528 1613072 5696952 +1613528 5697360 1621712 5701344 1623016 5701528 1613072 5696952 +1623016 5701528 1601624 5681136 1613072 5696952 1613528 5697360 +1613312 5697192 1613528 5697360 1613072 5696952 1613456 5698608 +1611448 5699192 1613400 5698720 1613456 5698608 1613072 5696952 +1602160 5695928 1613008 5696896 1601592 5681216 1601128 5681664 +1601592 5681216 1613008 5696896 1613072 5696952 1601624 5681136 +1601592 5681216 1602160 5695928 1613008 5696896 1601624 5681136 +1613072 5696952 1623016 5701528 1601624 5681136 1613008 5696896 +1623016 5701528 1623192 5701576 1601624 5681136 1613008 5696896 +1613072 5696952 1613528 5697360 1623016 5701528 1613008 5696896 +1613008 5696896 1602160 5695928 1613072 5696952 1623016 5701528 +1601624 5681136 1601592 5681216 1613008 5696896 1623016 5701528 +1613072 5696952 1613008 5696896 1602160 5695928 1608624 5699288 +1602160 5695928 1602200 5696008 1608624 5699288 1613008 5696896 +1613072 5696952 1623016 5701528 1613008 5696896 1608624 5699288 +1613008 5696896 1601592 5681216 1602160 5695928 1608624 5699288 +1613072 5696952 1613008 5696896 1608624 5699288 1610784 5698784 +1613008 5696896 1602160 5695928 1608624 5699288 1610784 5698784 +1608624 5699288 1610736 5698824 1610784 5698784 1613008 5696896 +1613072 5696952 1613008 5696896 1610784 5698784 1610848 5698768 +1613072 5696952 1613008 5696896 1610848 5698768 1610904 5698784 +1613072 5696952 1613008 5696896 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1613008 5696896 +1613072 5696952 1613008 5696896 1611448 5699192 1613456 5698608 +1613008 5696896 1610848 5698768 1610904 5698784 1611448 5699192 +1613008 5696896 1610784 5698784 1610848 5698768 1610904 5698784 +1613072 5696952 1623016 5701528 1613008 5696896 1611448 5699192 +1613008 5696896 1608624 5699288 1610784 5698784 1610848 5698768 +1602160 5695928 1612840 5696712 1601592 5681216 1601128 5681664 +1601592 5681216 1612840 5696712 1613008 5696896 1601624 5681136 +1612840 5696712 1602160 5695928 1613008 5696896 1601624 5681136 +1601592 5681216 1602160 5695928 1612840 5696712 1601624 5681136 +1613008 5696896 1623016 5701528 1601624 5681136 1612840 5696712 +1623016 5701528 1623192 5701576 1601624 5681136 1612840 5696712 +1601624 5681136 1601592 5681216 1612840 5696712 1623016 5701528 +1613008 5696896 1623016 5701528 1612840 5696712 1602160 5695928 +1613008 5696896 1613072 5696952 1623016 5701528 1612840 5696712 +1613008 5696896 1613072 5696952 1612840 5696712 1602160 5695928 +1613072 5696952 1613528 5697360 1623016 5701528 1612840 5696712 +1613528 5697360 1621712 5701344 1623016 5701528 1612840 5696712 +1621712 5701344 1622880 5701536 1623016 5701528 1612840 5696712 +1613528 5697360 1613640 5697488 1621712 5701344 1612840 5696712 +1613528 5697360 1621712 5701344 1612840 5696712 1613072 5696952 +1613072 5696952 1613528 5697360 1612840 5696712 1613008 5696896 +1623016 5701528 1601624 5681136 1612840 5696712 1621712 5701344 +1613008 5696896 1612840 5696712 1602160 5695928 1608624 5699288 +1602160 5695928 1602200 5696008 1608624 5699288 1612840 5696712 +1613008 5696896 1612840 5696712 1608624 5699288 1610784 5698784 +1613008 5696896 1613072 5696952 1612840 5696712 1610784 5698784 +1612840 5696712 1601592 5681216 1602160 5695928 1608624 5699288 +1608624 5699288 1610736 5698824 1610784 5698784 1612840 5696712 +1612840 5696712 1602160 5695928 1608624 5699288 1610784 5698784 +1613008 5696896 1612840 5696712 1610784 5698784 1610848 5698768 +1612840 5696712 1608624 5699288 1610784 5698784 1610848 5698768 +1613008 5696896 1613072 5696952 1612840 5696712 1610848 5698768 +1613008 5696896 1612840 5696712 1610848 5698768 1610904 5698784 +1613008 5696896 1613072 5696952 1612840 5696712 1610904 5698784 +1613008 5696896 1612840 5696712 1610904 5698784 1611448 5699192 +1612840 5696712 1610784 5698784 1610848 5698768 1610904 5698784 +1613072 5696952 1613312 5697192 1613528 5697360 1612840 5696712 +1601624 5681136 1612736 5696520 1623016 5701528 1623192 5701576 +1601624 5681136 1612736 5696520 1623192 5701576 1657088 5639464 +1612840 5696712 1612736 5696520 1601624 5681136 1601592 5681216 +1612840 5696712 1623016 5701528 1612736 5696520 1601592 5681216 +1612840 5696712 1612736 5696520 1601592 5681216 1602160 5695928 +1601592 5681216 1601128 5681664 1602160 5695928 1612736 5696520 +1601128 5681664 1601088 5681704 1602160 5695928 1612736 5696520 +1601592 5681216 1601160 5681616 1601128 5681664 1612736 5696520 +1612736 5696520 1601624 5681136 1601592 5681216 1601128 5681664 +1612840 5696712 1612736 5696520 1602160 5695928 1608624 5699288 +1602160 5695928 1602200 5696008 1608624 5699288 1612736 5696520 +1602200 5696008 1602224 5696056 1608624 5699288 1612736 5696520 +1602200 5696008 1602224 5696056 1612736 5696520 1602160 5695928 +1602224 5696056 1608544 5699312 1608624 5699288 1612736 5696520 +1608624 5699288 1612840 5696712 1612736 5696520 1602224 5696056 +1612840 5696712 1623016 5701528 1612736 5696520 1608624 5699288 +1602160 5695928 1602200 5696008 1612736 5696520 1601128 5681664 +1601624 5681136 1601592 5681216 1612736 5696520 1623192 5701576 +1612736 5696520 1612840 5696712 1623016 5701528 1623192 5701576 +1623016 5701528 1612736 5696520 1612840 5696712 1621712 5701344 +1612736 5696520 1608624 5699288 1612840 5696712 1621712 5701344 +1623016 5701528 1623192 5701576 1612736 5696520 1621712 5701344 +1623016 5701528 1612736 5696520 1621712 5701344 1622880 5701536 +1612840 5696712 1613528 5697360 1621712 5701344 1612736 5696520 +1612840 5696712 1613528 5697360 1612736 5696520 1608624 5699288 +1613528 5697360 1613640 5697488 1621712 5701344 1612736 5696520 +1612840 5696712 1613072 5696952 1613528 5697360 1612736 5696520 +1612840 5696712 1613072 5696952 1612736 5696520 1608624 5699288 +1613528 5697360 1621712 5701344 1612736 5696520 1613072 5696952 +1612840 5696712 1613008 5696896 1613072 5696952 1612736 5696520 +1612840 5696712 1613008 5696896 1612736 5696520 1608624 5699288 +1613072 5696952 1613528 5697360 1612736 5696520 1613008 5696896 +1621712 5701344 1623016 5701528 1612736 5696520 1613528 5697360 +1612840 5696712 1612736 5696520 1608624 5699288 1610784 5698784 +1612840 5696712 1612736 5696520 1610784 5698784 1610848 5698768 +1612736 5696520 1602224 5696056 1608624 5699288 1610784 5698784 +1612840 5696712 1613008 5696896 1612736 5696520 1610848 5698768 +1608624 5699288 1610736 5698824 1610784 5698784 1612736 5696520 +1612736 5696520 1608624 5699288 1610784 5698784 1610848 5698768 +1612840 5696712 1612736 5696520 1610848 5698768 1610904 5698784 +1612736 5696520 1610784 5698784 1610848 5698768 1610904 5698784 +1612840 5696712 1613008 5696896 1612736 5696520 1610904 5698784 +1612840 5696712 1612736 5696520 1610904 5698784 1613008 5696896 +1613072 5696952 1613312 5697192 1613528 5697360 1612736 5696520 +1623192 5701576 1612560 5696144 1612736 5696520 1623016 5701528 +1601624 5681136 1612560 5696144 1623192 5701576 1657088 5639464 +1612736 5696520 1612560 5696144 1601624 5681136 1601592 5681216 +1612736 5696520 1612560 5696144 1601592 5681216 1601128 5681664 +1612736 5696520 1612560 5696144 1601128 5681664 1602160 5695928 +1601128 5681664 1601088 5681704 1602160 5695928 1612560 5696144 +1602160 5695928 1612736 5696520 1612560 5696144 1601088 5681704 +1601088 5681704 1602112 5695896 1602160 5695928 1612560 5696144 +1601592 5681216 1601160 5681616 1601128 5681664 1612560 5696144 +1612560 5696144 1601592 5681216 1601128 5681664 1601088 5681704 +1612736 5696520 1612560 5696144 1602160 5695928 1602200 5696008 +1612736 5696520 1612560 5696144 1602200 5696008 1602224 5696056 +1612736 5696520 1612560 5696144 1602224 5696056 1608624 5699288 +1612560 5696144 1602200 5696008 1602224 5696056 1608624 5699288 +1612560 5696144 1601088 5681704 1602160 5695928 1602200 5696008 +1602224 5696056 1608544 5699312 1608624 5699288 1612560 5696144 +1612736 5696520 1612560 5696144 1608624 5699288 1610784 5698784 +1612560 5696144 1602224 5696056 1608624 5699288 1610784 5698784 +1612560 5696144 1602160 5695928 1602200 5696008 1602224 5696056 +1612560 5696144 1601624 5681136 1601592 5681216 1601128 5681664 +1612560 5696144 1610784 5698784 1612736 5696520 1623016 5701528 +1612736 5696520 1621712 5701344 1623016 5701528 1612560 5696144 +1623016 5701528 1623192 5701576 1612560 5696144 1621712 5701344 +1612736 5696520 1621712 5701344 1612560 5696144 1610784 5698784 +1608624 5699288 1610736 5698824 1610784 5698784 1612560 5696144 +1621712 5701344 1622880 5701536 1623016 5701528 1612560 5696144 +1612736 5696520 1613528 5697360 1621712 5701344 1612560 5696144 +1612736 5696520 1613528 5697360 1612560 5696144 1610784 5698784 +1621712 5701344 1623016 5701528 1612560 5696144 1613528 5697360 +1612736 5696520 1613072 5696952 1613528 5697360 1612560 5696144 +1612736 5696520 1613072 5696952 1612560 5696144 1610784 5698784 +1613528 5697360 1613640 5697488 1621712 5701344 1612560 5696144 +1612736 5696520 1613008 5696896 1613072 5696952 1612560 5696144 +1613528 5697360 1621712 5701344 1612560 5696144 1613072 5696952 +1612736 5696520 1612560 5696144 1610784 5698784 1610848 5698768 +1612736 5696520 1612560 5696144 1610848 5698768 1610904 5698784 +1612560 5696144 1608624 5699288 1610784 5698784 1610848 5698768 +1612736 5696520 1613072 5696952 1612560 5696144 1610848 5698768 +1613072 5696952 1613312 5697192 1613528 5697360 1612560 5696144 +1612560 5696144 1623192 5701576 1601624 5681136 1601592 5681216 +1623192 5701576 1601624 5681136 1612560 5696144 1623016 5701528 +1601624 5681136 1612480 5696016 1623192 5701576 1657088 5639464 +1612560 5696144 1612480 5696016 1601624 5681136 1601592 5681216 +1612560 5696144 1612480 5696016 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612480 5696016 +1612560 5696144 1612480 5696016 1601128 5681664 1601088 5681704 +1612560 5696144 1612480 5696016 1601088 5681704 1602160 5695928 +1612560 5696144 1612480 5696016 1602160 5695928 1602200 5696008 +1612480 5696016 1601088 5681704 1602160 5695928 1602200 5696008 +1601088 5681704 1602112 5695896 1602160 5695928 1612480 5696016 +1612480 5696016 1601128 5681664 1601088 5681704 1602160 5695928 +1612560 5696144 1612480 5696016 1602200 5696008 1602224 5696056 +1612560 5696144 1612480 5696016 1602224 5696056 1608624 5699288 +1612560 5696144 1612480 5696016 1608624 5699288 1610784 5698784 +1612480 5696016 1602224 5696056 1608624 5699288 1610784 5698784 +1612480 5696016 1602160 5695928 1602200 5696008 1602224 5696056 +1602224 5696056 1608544 5699312 1608624 5699288 1612480 5696016 +1612560 5696144 1612480 5696016 1610784 5698784 1610848 5698768 +1612480 5696016 1608624 5699288 1610784 5698784 1610848 5698768 +1612480 5696016 1602200 5696008 1602224 5696056 1608624 5699288 +1612480 5696016 1601592 5681216 1601128 5681664 1601088 5681704 +1612480 5696016 1623192 5701576 1601624 5681136 1601592 5681216 +1608624 5699288 1610736 5698824 1610784 5698784 1612480 5696016 +1612560 5696144 1612480 5696016 1610848 5698768 1612736 5696520 +1612480 5696016 1601624 5681136 1601592 5681216 1601128 5681664 +1612560 5696144 1623192 5701576 1612480 5696016 1610848 5698768 +1623192 5701576 1612480 5696016 1612560 5696144 1623016 5701528 +1612560 5696144 1621712 5701344 1623016 5701528 1612480 5696016 +1612560 5696144 1613528 5697360 1621712 5701344 1612480 5696016 +1621712 5701344 1623016 5701528 1612480 5696016 1613528 5697360 +1623192 5701576 1601624 5681136 1612480 5696016 1623016 5701528 +1621712 5701344 1622880 5701536 1623016 5701528 1612480 5696016 +1613528 5697360 1613640 5697488 1621712 5701344 1612480 5696016 +1612560 5696144 1613072 5696952 1613528 5697360 1612480 5696016 +1612480 5696016 1610848 5698768 1612560 5696144 1613528 5697360 +1623016 5701528 1623192 5701576 1612480 5696016 1621712 5701344 +1612480 5696016 1612248 5695760 1602160 5695928 1602200 5696008 +1612480 5696016 1612248 5695760 1602200 5696008 1602224 5696056 +1612248 5695760 1602160 5695928 1602200 5696008 1602224 5696056 +1602160 5695928 1612248 5695760 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612248 5695760 +1601088 5681704 1612248 5695760 1612480 5696016 1601128 5681664 +1612480 5696016 1612248 5695760 1602224 5696056 1608624 5699288 +1612480 5696016 1612248 5695760 1608624 5699288 1610784 5698784 +1612480 5696016 1612248 5695760 1610784 5698784 1610848 5698768 +1612248 5695760 1608624 5699288 1610784 5698784 1610848 5698768 +1612248 5695760 1602200 5696008 1602224 5696056 1608624 5699288 +1602224 5696056 1608544 5699312 1608624 5699288 1612248 5695760 +1612480 5696016 1612248 5695760 1610848 5698768 1612560 5696144 +1612248 5695760 1610784 5698784 1610848 5698768 1612560 5696144 +1612248 5695760 1602224 5696056 1608624 5699288 1610784 5698784 +1612480 5696016 1601592 5681216 1601128 5681664 1612248 5695760 +1601592 5681216 1601160 5681616 1601128 5681664 1612248 5695760 +1601128 5681664 1601088 5681704 1612248 5695760 1601592 5681216 +1612248 5695760 1602112 5695896 1602160 5695928 1602200 5696008 +1612480 5696016 1601592 5681216 1612248 5695760 1612560 5696144 +1612248 5695760 1601128 5681664 1601088 5681704 1602112 5695896 +1608624 5699288 1610736 5698824 1610784 5698784 1612248 5695760 +1610848 5698768 1612736 5696520 1612560 5696144 1612248 5695760 +1612480 5696016 1601624 5681136 1601592 5681216 1612248 5695760 +1601592 5681216 1601128 5681664 1612248 5695760 1601624 5681136 +1612480 5696016 1623192 5701576 1601624 5681136 1612248 5695760 +1623192 5701576 1657088 5639464 1601624 5681136 1612248 5695760 +1612480 5696016 1623016 5701528 1623192 5701576 1612248 5695760 +1623192 5701576 1601624 5681136 1612248 5695760 1623016 5701528 +1612480 5696016 1623016 5701528 1612248 5695760 1612560 5696144 +1601624 5681136 1601592 5681216 1612248 5695760 1623192 5701576 +1612480 5696016 1621712 5701344 1623016 5701528 1612248 5695760 +1602112 5695896 1612224 5695736 1601088 5681704 1602016 5695848 +1612248 5695760 1612224 5695736 1602112 5695896 1602160 5695928 +1612248 5695760 1612224 5695736 1602160 5695928 1602200 5696008 +1612248 5695760 1612224 5695736 1602200 5696008 1602224 5696056 +1612248 5695760 1612224 5695736 1602224 5696056 1608624 5699288 +1612224 5695736 1602200 5696008 1602224 5696056 1608624 5699288 +1612224 5695736 1602112 5695896 1602160 5695928 1602200 5696008 +1602224 5696056 1608544 5699312 1608624 5699288 1612224 5695736 +1612248 5695760 1612224 5695736 1608624 5699288 1610784 5698784 +1612248 5695760 1612224 5695736 1610784 5698784 1610848 5698768 +1612248 5695760 1612224 5695736 1610848 5698768 1612560 5696144 +1612224 5695736 1602224 5696056 1608624 5699288 1610784 5698784 +1612224 5695736 1608624 5699288 1610784 5698784 1610848 5698768 +1612224 5695736 1602160 5695928 1602200 5696008 1602224 5696056 +1612248 5695760 1601088 5681704 1612224 5695736 1610848 5698768 +1601088 5681704 1612224 5695736 1612248 5695760 1601128 5681664 +1612248 5695760 1601592 5681216 1601128 5681664 1612224 5695736 +1601592 5681216 1601160 5681616 1601128 5681664 1612224 5695736 +1612248 5695760 1601624 5681136 1601592 5681216 1612224 5695736 +1601592 5681216 1601128 5681664 1612224 5695736 1601624 5681136 +1612224 5695736 1610848 5698768 1612248 5695760 1601624 5681136 +1601128 5681664 1601088 5681704 1612224 5695736 1601592 5681216 +1612224 5695736 1601088 5681704 1602112 5695896 1602160 5695928 +1601088 5681704 1602112 5695896 1612224 5695736 1601128 5681664 +1608624 5699288 1610736 5698824 1610784 5698784 1612224 5695736 +1612248 5695760 1623192 5701576 1601624 5681136 1612224 5695736 +1623192 5701576 1657088 5639464 1601624 5681136 1612224 5695736 +1601624 5681136 1601592 5681216 1612224 5695736 1623192 5701576 +1612248 5695760 1623192 5701576 1612224 5695736 1610848 5698768 +1612248 5695760 1623016 5701528 1623192 5701576 1612224 5695736 +1612248 5695760 1612480 5696016 1623016 5701528 1612224 5695736 +1612248 5695760 1623016 5701528 1612224 5695736 1610848 5698768 +1623192 5701576 1601624 5681136 1612224 5695736 1623016 5701528 +1601624 5681136 1612192 5695688 1623192 5701576 1657088 5639464 +1612224 5695736 1612192 5695688 1601624 5681136 1601592 5681216 +1612224 5695736 1612192 5695688 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612192 5695688 +1612192 5695688 1601624 5681136 1601592 5681216 1601128 5681664 +1612224 5695736 1612192 5695688 1601128 5681664 1601088 5681704 +1612192 5695688 1601592 5681216 1601128 5681664 1601088 5681704 +1612224 5695736 1623192 5701576 1612192 5695688 1601088 5681704 +1612224 5695736 1612192 5695688 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612192 5695688 +1612192 5695688 1601128 5681664 1601088 5681704 1602112 5695896 +1612224 5695736 1612192 5695688 1602112 5695896 1602160 5695928 +1612224 5695736 1612192 5695688 1602160 5695928 1602200 5696008 +1612224 5695736 1612192 5695688 1602200 5696008 1602224 5696056 +1612224 5695736 1612192 5695688 1602224 5696056 1608624 5699288 +1612224 5695736 1612192 5695688 1608624 5699288 1610784 5698784 +1612192 5695688 1602224 5696056 1608624 5699288 1610784 5698784 +1612192 5695688 1602160 5695928 1602200 5696008 1602224 5696056 +1602224 5696056 1608544 5699312 1608624 5699288 1612192 5695688 +1612224 5695736 1612192 5695688 1610784 5698784 1610848 5698768 +1612224 5695736 1612192 5695688 1610848 5698768 1612248 5695760 +1612192 5695688 1608624 5699288 1610784 5698784 1610848 5698768 +1612192 5695688 1602200 5696008 1602224 5696056 1608624 5699288 +1612192 5695688 1602112 5695896 1602160 5695928 1602200 5696008 +1612224 5695736 1623192 5701576 1612192 5695688 1610848 5698768 +1612192 5695688 1601088 5681704 1602112 5695896 1602160 5695928 +1612192 5695688 1623192 5701576 1601624 5681136 1601592 5681216 +1608624 5699288 1610736 5698824 1610784 5698784 1612192 5695688 +1623192 5701576 1612192 5695688 1612224 5695736 1623016 5701528 +1612224 5695736 1612248 5695760 1623016 5701528 1612192 5695688 +1612248 5695760 1612480 5696016 1623016 5701528 1612192 5695688 +1612248 5695760 1612480 5696016 1612192 5695688 1612224 5695736 +1612192 5695688 1610848 5698768 1612224 5695736 1612248 5695760 +1623192 5701576 1601624 5681136 1612192 5695688 1623016 5701528 +1623016 5701528 1623192 5701576 1612192 5695688 1612480 5696016 +1612480 5696016 1621712 5701344 1623016 5701528 1612192 5695688 +1601624 5681136 1612176 5695584 1623192 5701576 1657088 5639464 +1612192 5695688 1612176 5695584 1601624 5681136 1601592 5681216 +1612192 5695688 1612176 5695584 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612176 5695584 +1612192 5695688 1612176 5695584 1601128 5681664 1601088 5681704 +1612176 5695584 1601592 5681216 1601128 5681664 1601088 5681704 +1612192 5695688 1612176 5695584 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612176 5695584 +1612176 5695584 1601128 5681664 1601088 5681704 1602112 5695896 +1612192 5695688 1612176 5695584 1602112 5695896 1602160 5695928 +1612176 5695584 1601088 5681704 1602112 5695896 1602160 5695928 +1612192 5695688 1612176 5695584 1602160 5695928 1602200 5696008 +1612192 5695688 1612176 5695584 1602200 5696008 1602224 5696056 +1612192 5695688 1612176 5695584 1602224 5696056 1608624 5699288 +1612192 5695688 1612176 5695584 1608624 5699288 1610784 5698784 +1612192 5695688 1612176 5695584 1610784 5698784 1610848 5698768 +1612176 5695584 1602200 5696008 1602224 5696056 1608624 5699288 +1602224 5696056 1608544 5699312 1608624 5699288 1612176 5695584 +1612176 5695584 1602224 5696056 1608624 5699288 1610784 5698784 +1612176 5695584 1602160 5695928 1602200 5696008 1602224 5696056 +1612176 5695584 1602112 5695896 1602160 5695928 1602200 5696008 +1612176 5695584 1601624 5681136 1601592 5681216 1601128 5681664 +1612192 5695688 1623192 5701576 1612176 5695584 1610784 5698784 +1623192 5701576 1612176 5695584 1612192 5695688 1623016 5701528 +1612176 5695584 1610784 5698784 1612192 5695688 1623016 5701528 +1612176 5695584 1623192 5701576 1601624 5681136 1601592 5681216 +1608624 5699288 1610736 5698824 1610784 5698784 1612176 5695584 +1612192 5695688 1612480 5696016 1623016 5701528 1612176 5695584 +1612192 5695688 1612248 5695760 1612480 5696016 1612176 5695584 +1612192 5695688 1612224 5695736 1612248 5695760 1612176 5695584 +1612248 5695760 1612480 5696016 1612176 5695584 1612224 5695736 +1612192 5695688 1612224 5695736 1612176 5695584 1610784 5698784 +1623016 5701528 1623192 5701576 1612176 5695584 1612480 5696016 +1612480 5696016 1623016 5701528 1612176 5695584 1612248 5695760 +1612480 5696016 1621712 5701344 1623016 5701528 1612176 5695584 +1612480 5696016 1613528 5697360 1621712 5701344 1612176 5695584 +1623016 5701528 1623192 5701576 1612176 5695584 1621712 5701344 +1621712 5701344 1622880 5701536 1623016 5701528 1612176 5695584 +1612480 5696016 1621712 5701344 1612176 5695584 1612248 5695760 +1623192 5701576 1601624 5681136 1612176 5695584 1623016 5701528 +1601624 5681136 1612216 5695512 1623192 5701576 1657088 5639464 +1612176 5695584 1612216 5695512 1601624 5681136 1601592 5681216 +1612176 5695584 1612216 5695512 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612216 5695512 +1612176 5695584 1612216 5695512 1601128 5681664 1601088 5681704 +1612176 5695584 1612216 5695512 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612216 5695512 +1612216 5695512 1601128 5681664 1601088 5681704 1602112 5695896 +1612176 5695584 1612216 5695512 1602112 5695896 1602160 5695928 +1612216 5695512 1601088 5681704 1602112 5695896 1602160 5695928 +1612176 5695584 1612216 5695512 1602160 5695928 1602200 5696008 +1612216 5695512 1601592 5681216 1601128 5681664 1601088 5681704 +1612216 5695512 1601624 5681136 1601592 5681216 1601128 5681664 +1612176 5695584 1623192 5701576 1612216 5695512 1602160 5695928 +1623192 5701576 1612216 5695512 1612176 5695584 1623016 5701528 +1612176 5695584 1621712 5701344 1623016 5701528 1612216 5695512 +1621712 5701344 1622880 5701536 1623016 5701528 1612216 5695512 +1612176 5695584 1612480 5696016 1621712 5701344 1612216 5695512 +1612480 5696016 1613528 5697360 1621712 5701344 1612216 5695512 +1612480 5696016 1612560 5696144 1613528 5697360 1612216 5695512 +1613528 5697360 1621712 5701344 1612216 5695512 1612560 5696144 +1621712 5701344 1623016 5701528 1612216 5695512 1613528 5697360 +1613528 5697360 1613640 5697488 1621712 5701344 1612216 5695512 +1612560 5696144 1613072 5696952 1613528 5697360 1612216 5695512 +1612176 5695584 1612248 5695760 1612480 5696016 1612216 5695512 +1612176 5695584 1612224 5695736 1612248 5695760 1612216 5695512 +1612176 5695584 1612192 5695688 1612224 5695736 1612216 5695512 +1612224 5695736 1612248 5695760 1612216 5695512 1612192 5695688 +1612248 5695760 1612480 5696016 1612216 5695512 1612224 5695736 +1612480 5696016 1612560 5696144 1612216 5695512 1612248 5695760 +1612216 5695512 1602160 5695928 1612176 5695584 1612192 5695688 +1623016 5701528 1623192 5701576 1612216 5695512 1621712 5701344 +1612216 5695512 1623192 5701576 1601624 5681136 1601592 5681216 +1623192 5701576 1601624 5681136 1612216 5695512 1623016 5701528 +1601624 5681136 1612216 5695400 1623192 5701576 1657088 5639464 +1623192 5701576 1663776 5646144 1657088 5639464 1612216 5695400 +1601624 5681136 1612216 5695400 1657088 5639464 1601592 5681064 +1612216 5695512 1612216 5695400 1601624 5681136 1601592 5681216 +1612216 5695512 1612216 5695400 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612216 5695400 +1612216 5695512 1612216 5695400 1601128 5681664 1601088 5681704 +1612216 5695512 1612216 5695400 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612216 5695400 +1612216 5695512 1612216 5695400 1602112 5695896 1602160 5695928 +1612216 5695400 1601088 5681704 1602112 5695896 1602160 5695928 +1612216 5695512 1612216 5695400 1602160 5695928 1612176 5695584 +1612216 5695400 1602112 5695896 1602160 5695928 1612176 5695584 +1602160 5695928 1602200 5696008 1612176 5695584 1612216 5695400 +1602160 5695928 1602200 5696008 1612216 5695400 1602112 5695896 +1612176 5695584 1612216 5695512 1612216 5695400 1602200 5696008 +1602200 5696008 1602224 5696056 1612176 5695584 1612216 5695400 +1602224 5696056 1608624 5699288 1612176 5695584 1612216 5695400 +1602224 5696056 1608544 5699312 1608624 5699288 1612216 5695400 +1608624 5699288 1610784 5698784 1612176 5695584 1612216 5695400 +1612176 5695584 1612216 5695512 1612216 5695400 1608624 5699288 +1602224 5696056 1608624 5699288 1612216 5695400 1602200 5696008 +1602200 5696008 1602224 5696056 1612216 5695400 1602160 5695928 +1612216 5695400 1601128 5681664 1601088 5681704 1602112 5695896 +1612216 5695400 1601592 5681216 1601128 5681664 1601088 5681704 +1612216 5695400 1601624 5681136 1601592 5681216 1601128 5681664 +1612216 5695512 1623192 5701576 1612216 5695400 1612176 5695584 +1623192 5701576 1612216 5695400 1612216 5695512 1623016 5701528 +1612216 5695512 1621712 5701344 1623016 5701528 1612216 5695400 +1612216 5695512 1613528 5697360 1621712 5701344 1612216 5695400 +1612216 5695512 1612560 5696144 1613528 5697360 1612216 5695400 +1612216 5695512 1612480 5696016 1612560 5696144 1612216 5695400 +1612560 5696144 1613528 5697360 1612216 5695400 1612480 5696016 +1613528 5697360 1621712 5701344 1612216 5695400 1612560 5696144 +1621712 5701344 1622880 5701536 1623016 5701528 1612216 5695400 +1613528 5697360 1613640 5697488 1621712 5701344 1612216 5695400 +1613528 5697360 1613640 5697488 1612216 5695400 1612560 5696144 +1612560 5696144 1613072 5696952 1613528 5697360 1612216 5695400 +1613640 5697488 1615968 5699848 1621712 5701344 1612216 5695400 +1612216 5695512 1612248 5695760 1612480 5696016 1612216 5695400 +1621712 5701344 1623016 5701528 1612216 5695400 1613640 5697488 +1612216 5695400 1612176 5695584 1612216 5695512 1612480 5696016 +1623016 5701528 1623192 5701576 1612216 5695400 1621712 5701344 +1601624 5681136 1601592 5681216 1612216 5695400 1657088 5639464 +1612216 5695400 1623016 5701528 1623192 5701576 1657088 5639464 +1657088 5639464 1612128 5695248 1612216 5695400 1623192 5701576 +1657088 5639464 1612128 5695248 1623192 5701576 1663776 5646144 +1601624 5681136 1612128 5695248 1657088 5639464 1601592 5681064 +1612216 5695400 1612128 5695248 1601624 5681136 1601592 5681216 +1612216 5695400 1612128 5695248 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612128 5695248 +1612216 5695400 1612128 5695248 1601128 5681664 1601088 5681704 +1612216 5695400 1612128 5695248 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612128 5695248 +1612216 5695400 1612128 5695248 1602112 5695896 1602160 5695928 +1612216 5695400 1612128 5695248 1602160 5695928 1602200 5696008 +1612128 5695248 1602112 5695896 1602160 5695928 1602200 5696008 +1612216 5695400 1612128 5695248 1602200 5696008 1602224 5696056 +1612128 5695248 1602160 5695928 1602200 5696008 1602224 5696056 +1612216 5695400 1612128 5695248 1602224 5696056 1608624 5699288 +1612216 5695400 1612128 5695248 1608624 5699288 1612176 5695584 +1602224 5696056 1608544 5699312 1608624 5699288 1612128 5695248 +1608624 5699288 1610784 5698784 1612176 5695584 1612128 5695248 +1612216 5695400 1612128 5695248 1612176 5695584 1612216 5695512 +1612128 5695248 1608544 5699312 1608624 5699288 1612176 5695584 +1612128 5695248 1602200 5696008 1602224 5696056 1608544 5699312 +1612128 5695248 1601088 5681704 1602112 5695896 1602160 5695928 +1612128 5695248 1601128 5681664 1601088 5681704 1602112 5695896 +1602224 5696056 1602504 5696992 1608544 5699312 1612128 5695248 +1612128 5695248 1601592 5681216 1601128 5681664 1601088 5681704 +1612128 5695248 1601624 5681136 1601592 5681216 1601128 5681664 +1612128 5695248 1612176 5695584 1612216 5695400 1623192 5701576 +1612216 5695400 1623016 5701528 1623192 5701576 1612128 5695248 +1623192 5701576 1657088 5639464 1612128 5695248 1623016 5701528 +1612216 5695400 1621712 5701344 1623016 5701528 1612128 5695248 +1621712 5701344 1622880 5701536 1623016 5701528 1612128 5695248 +1612216 5695400 1613640 5697488 1621712 5701344 1612128 5695248 +1612216 5695400 1621712 5701344 1612128 5695248 1612176 5695584 +1623016 5701528 1623192 5701576 1612128 5695248 1621712 5701344 +1612128 5695248 1657088 5639464 1601624 5681136 1601592 5681216 +1657088 5639464 1601624 5681136 1612128 5695248 1623192 5701576 +1601624 5681136 1612120 5695192 1657088 5639464 1601592 5681064 +1612128 5695248 1612120 5695192 1601624 5681136 1601592 5681216 +1612128 5695248 1612120 5695192 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612120 5695192 +1612128 5695248 1612120 5695192 1601128 5681664 1601088 5681704 +1612128 5695248 1612120 5695192 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612120 5695192 +1612128 5695248 1612120 5695192 1602112 5695896 1602160 5695928 +1612128 5695248 1612120 5695192 1602160 5695928 1602200 5696008 +1612128 5695248 1612120 5695192 1602200 5696008 1602224 5696056 +1612120 5695192 1602160 5695928 1602200 5696008 1602224 5696056 +1612128 5695248 1612120 5695192 1602224 5696056 1608544 5699312 +1612128 5695248 1612120 5695192 1608544 5699312 1608624 5699288 +1612120 5695192 1602200 5696008 1602224 5696056 1608544 5699312 +1612128 5695248 1612120 5695192 1608624 5699288 1612176 5695584 +1612120 5695192 1602224 5696056 1608544 5699312 1608624 5699288 +1612120 5695192 1602112 5695896 1602160 5695928 1602200 5696008 +1612120 5695192 1601088 5681704 1602112 5695896 1602160 5695928 +1602224 5696056 1602504 5696992 1608544 5699312 1612120 5695192 +1612120 5695192 1601128 5681664 1601088 5681704 1602112 5695896 +1612120 5695192 1601592 5681216 1601128 5681664 1601088 5681704 +1612120 5695192 1601624 5681136 1601592 5681216 1601128 5681664 +1612128 5695248 1657088 5639464 1612120 5695192 1608624 5699288 +1657088 5639464 1612120 5695192 1612128 5695248 1623192 5701576 +1612128 5695248 1623016 5701528 1623192 5701576 1612120 5695192 +1657088 5639464 1612120 5695192 1623192 5701576 1663776 5646144 +1657088 5639464 1601624 5681136 1612120 5695192 1623192 5701576 +1612128 5695248 1621712 5701344 1623016 5701528 1612120 5695192 +1623016 5701528 1623192 5701576 1612120 5695192 1621712 5701344 +1621712 5701344 1622880 5701536 1623016 5701528 1612120 5695192 +1612128 5695248 1612216 5695400 1621712 5701344 1612120 5695192 +1612216 5695400 1613640 5697488 1621712 5701344 1612120 5695192 +1612216 5695400 1613528 5697360 1613640 5697488 1612120 5695192 +1612216 5695400 1612560 5696144 1613528 5697360 1612120 5695192 +1613640 5697488 1615968 5699848 1621712 5701344 1612120 5695192 +1613640 5697488 1621712 5701344 1612120 5695192 1613528 5697360 +1612216 5695400 1613528 5697360 1612120 5695192 1612128 5695248 +1621712 5701344 1623016 5701528 1612120 5695192 1613640 5697488 +1612120 5695192 1608624 5699288 1612128 5695248 1612216 5695400 +1623192 5701576 1657088 5639464 1612120 5695192 1623016 5701528 +1612120 5695192 1657088 5639464 1601624 5681136 1601592 5681216 +1601624 5681136 1612136 5695120 1657088 5639464 1601592 5681064 +1657088 5639464 1612136 5695120 1612120 5695192 1623192 5701576 +1657088 5639464 1612136 5695120 1623192 5701576 1663776 5646144 +1623192 5701576 1623296 5701624 1663776 5646144 1612136 5695120 +1657088 5639464 1612136 5695120 1663776 5646144 1663688 5645984 +1612136 5695120 1601624 5681136 1612120 5695192 1623192 5701576 +1612120 5695192 1623016 5701528 1623192 5701576 1612136 5695120 +1612120 5695192 1621712 5701344 1623016 5701528 1612136 5695120 +1621712 5701344 1622880 5701536 1623016 5701528 1612136 5695120 +1612120 5695192 1621712 5701344 1612136 5695120 1601624 5681136 +1612120 5695192 1613640 5697488 1621712 5701344 1612136 5695120 +1621712 5701344 1623016 5701528 1612136 5695120 1613640 5697488 +1613640 5697488 1615968 5699848 1621712 5701344 1612136 5695120 +1612120 5695192 1613528 5697360 1613640 5697488 1612136 5695120 +1612120 5695192 1612216 5695400 1613528 5697360 1612136 5695120 +1612216 5695400 1612560 5696144 1613528 5697360 1612136 5695120 +1612216 5695400 1612480 5696016 1612560 5696144 1612136 5695120 +1612216 5695400 1612560 5696144 1612136 5695120 1612120 5695192 +1612560 5696144 1613072 5696952 1613528 5697360 1612136 5695120 +1613528 5697360 1613640 5697488 1612136 5695120 1612560 5696144 +1612120 5695192 1612216 5695400 1612136 5695120 1601624 5681136 +1612120 5695192 1612128 5695248 1612216 5695400 1612136 5695120 +1612216 5695400 1612560 5696144 1612136 5695120 1612128 5695248 +1612120 5695192 1612128 5695248 1612136 5695120 1601624 5681136 +1613640 5697488 1621712 5701344 1612136 5695120 1613528 5697360 +1623016 5701528 1623192 5701576 1612136 5695120 1621712 5701344 +1612120 5695192 1612136 5695120 1601624 5681136 1601592 5681216 +1612120 5695192 1612128 5695248 1612136 5695120 1601592 5681216 +1612120 5695192 1612136 5695120 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612136 5695120 +1612120 5695192 1612128 5695248 1612136 5695120 1601128 5681664 +1612120 5695192 1612136 5695120 1601128 5681664 1601088 5681704 +1612120 5695192 1612128 5695248 1612136 5695120 1601088 5681704 +1612120 5695192 1612136 5695120 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612136 5695120 +1612120 5695192 1612136 5695120 1602112 5695896 1602160 5695928 +1612120 5695192 1612136 5695120 1602160 5695928 1602200 5696008 +1612120 5695192 1612136 5695120 1602200 5696008 1602224 5696056 +1612120 5695192 1612136 5695120 1602224 5696056 1608544 5699312 +1612136 5695120 1602160 5695928 1602200 5696008 1602224 5696056 +1612136 5695120 1602112 5695896 1602160 5695928 1602200 5696008 +1612120 5695192 1612128 5695248 1612136 5695120 1602224 5696056 +1612136 5695120 1601088 5681704 1602112 5695896 1602160 5695928 +1612136 5695120 1601128 5681664 1601088 5681704 1602112 5695896 +1612136 5695120 1601592 5681216 1601128 5681664 1601088 5681704 +1612136 5695120 1601624 5681136 1601592 5681216 1601128 5681664 +1612136 5695120 1657088 5639464 1601624 5681136 1601592 5681216 +1612136 5695120 1623016 5701528 1623192 5701576 1663776 5646144 +1657088 5639464 1601624 5681136 1612136 5695120 1663776 5646144 +1601624 5681136 1612160 5695080 1657088 5639464 1601592 5681064 +1612136 5695120 1612160 5695080 1601624 5681136 1601592 5681216 +1612136 5695120 1612160 5695080 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612160 5695080 +1612136 5695120 1612160 5695080 1601128 5681664 1601088 5681704 +1612136 5695120 1612160 5695080 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612160 5695080 +1612136 5695120 1612160 5695080 1602112 5695896 1602160 5695928 +1612136 5695120 1612160 5695080 1602160 5695928 1602200 5696008 +1612160 5695080 1601088 5681704 1602112 5695896 1602160 5695928 +1612160 5695080 1601128 5681664 1601088 5681704 1602112 5695896 +1612160 5695080 1601592 5681216 1601128 5681664 1601088 5681704 +1612160 5695080 1601624 5681136 1601592 5681216 1601128 5681664 +1657088 5639464 1612160 5695080 1612136 5695120 1663776 5646144 +1612136 5695120 1623192 5701576 1663776 5646144 1612160 5695080 +1623192 5701576 1623296 5701624 1663776 5646144 1612160 5695080 +1657088 5639464 1612160 5695080 1663776 5646144 1663688 5645984 +1612136 5695120 1623016 5701528 1623192 5701576 1612160 5695080 +1623192 5701576 1663776 5646144 1612160 5695080 1623016 5701528 +1612136 5695120 1621712 5701344 1623016 5701528 1612160 5695080 +1612136 5695120 1613640 5697488 1621712 5701344 1612160 5695080 +1621712 5701344 1622880 5701536 1623016 5701528 1612160 5695080 +1613640 5697488 1615968 5699848 1621712 5701344 1612160 5695080 +1612136 5695120 1613528 5697360 1613640 5697488 1612160 5695080 +1613640 5697488 1621712 5701344 1612160 5695080 1613528 5697360 +1612136 5695120 1612560 5696144 1613528 5697360 1612160 5695080 +1612136 5695120 1612216 5695400 1612560 5696144 1612160 5695080 +1612216 5695400 1612480 5696016 1612560 5696144 1612160 5695080 +1612216 5695400 1612216 5695512 1612480 5696016 1612160 5695080 +1612216 5695400 1612480 5696016 1612160 5695080 1612136 5695120 +1612136 5695120 1612128 5695248 1612216 5695400 1612160 5695080 +1612216 5695400 1612480 5696016 1612160 5695080 1612128 5695248 +1612560 5696144 1613072 5696952 1613528 5697360 1612160 5695080 +1612560 5696144 1613528 5697360 1612160 5695080 1612480 5696016 +1612136 5695120 1612120 5695192 1612128 5695248 1612160 5695080 +1613528 5697360 1613640 5697488 1612160 5695080 1612560 5696144 +1621712 5701344 1623016 5701528 1612160 5695080 1613640 5697488 +1623016 5701528 1623192 5701576 1612160 5695080 1621712 5701344 +1663776 5646144 1657088 5639464 1612160 5695080 1623192 5701576 +1612136 5695120 1612128 5695248 1612160 5695080 1602160 5695928 +1612160 5695080 1657088 5639464 1601624 5681136 1601592 5681216 +1657088 5639464 1601624 5681136 1612160 5695080 1663776 5646144 +1613640 5697488 1612184 5695104 1612160 5695080 1613528 5697360 +1621712 5701344 1612184 5695104 1613640 5697488 1615968 5699848 +1612160 5695080 1612560 5696144 1613528 5697360 1612184 5695104 +1613528 5697360 1613640 5697488 1612184 5695104 1612560 5696144 +1612560 5696144 1613072 5696952 1613528 5697360 1612184 5695104 +1612160 5695080 1612480 5696016 1612560 5696144 1612184 5695104 +1612160 5695080 1612216 5695400 1612480 5696016 1612184 5695104 +1612216 5695400 1612216 5695512 1612480 5696016 1612184 5695104 +1612160 5695080 1612128 5695248 1612216 5695400 1612184 5695104 +1612216 5695400 1612480 5696016 1612184 5695104 1612128 5695248 +1612160 5695080 1612136 5695120 1612128 5695248 1612184 5695104 +1612128 5695248 1612216 5695400 1612184 5695104 1612136 5695120 +1612480 5696016 1612560 5696144 1612184 5695104 1612216 5695400 +1612136 5695120 1612120 5695192 1612128 5695248 1612184 5695104 +1612128 5695248 1612216 5695400 1612184 5695104 1612120 5695192 +1612136 5695120 1612120 5695192 1612184 5695104 1612160 5695080 +1612560 5696144 1613528 5697360 1612184 5695104 1612480 5696016 +1612160 5695080 1612184 5695104 1621712 5701344 1623016 5701528 +1621712 5701344 1622880 5701536 1623016 5701528 1612184 5695104 +1612160 5695080 1612184 5695104 1623016 5701528 1623192 5701576 +1612160 5695080 1612184 5695104 1623192 5701576 1663776 5646144 +1612184 5695104 1621712 5701344 1623016 5701528 1623192 5701576 +1612184 5695104 1623192 5701576 1612160 5695080 1612136 5695120 +1612184 5695104 1613640 5697488 1621712 5701344 1623016 5701528 +1613640 5697488 1621712 5701344 1612184 5695104 1613528 5697360 +1623192 5701576 1612240 5695096 1612160 5695080 1612184 5695104 +1663776 5646144 1612240 5695096 1623192 5701576 1623296 5701624 +1623192 5701576 1612240 5695096 1612184 5695104 1623016 5701528 +1612240 5695096 1612160 5695080 1612184 5695104 1623016 5701528 +1612184 5695104 1621712 5701344 1623016 5701528 1612240 5695096 +1612184 5695104 1621712 5701344 1612240 5695096 1612160 5695080 +1621712 5701344 1622880 5701536 1623016 5701528 1612240 5695096 +1623016 5701528 1623192 5701576 1612240 5695096 1621712 5701344 +1612160 5695080 1612240 5695096 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1612240 5695096 +1612160 5695080 1612240 5695096 1657088 5639464 1601624 5681136 +1657088 5639464 1601592 5681064 1601624 5681136 1612240 5695096 +1612240 5695096 1663776 5646144 1657088 5639464 1601624 5681136 +1612160 5695080 1612240 5695096 1601624 5681136 1601592 5681216 +1612184 5695104 1613640 5697488 1621712 5701344 1612240 5695096 +1612184 5695104 1613640 5697488 1612240 5695096 1612160 5695080 +1613640 5697488 1615968 5699848 1621712 5701344 1612240 5695096 +1621712 5701344 1623016 5701528 1612240 5695096 1613640 5697488 +1612240 5695096 1601624 5681136 1612160 5695080 1612184 5695104 +1612184 5695104 1613528 5697360 1613640 5697488 1612240 5695096 +1612184 5695104 1612560 5696144 1613528 5697360 1612240 5695096 +1612184 5695104 1612560 5696144 1612240 5695096 1612160 5695080 +1612560 5696144 1613072 5696952 1613528 5697360 1612240 5695096 +1612184 5695104 1612480 5696016 1612560 5696144 1612240 5695096 +1612560 5696144 1613528 5697360 1612240 5695096 1612480 5696016 +1612184 5695104 1612480 5696016 1612240 5695096 1612160 5695080 +1612184 5695104 1612216 5695400 1612480 5696016 1612240 5695096 +1612184 5695104 1612128 5695248 1612216 5695400 1612240 5695096 +1612184 5695104 1612128 5695248 1612240 5695096 1612160 5695080 +1612216 5695400 1612216 5695512 1612480 5696016 1612240 5695096 +1612184 5695104 1612120 5695192 1612128 5695248 1612240 5695096 +1612128 5695248 1612216 5695400 1612240 5695096 1612120 5695192 +1612184 5695104 1612120 5695192 1612240 5695096 1612160 5695080 +1612216 5695400 1612480 5696016 1612240 5695096 1612128 5695248 +1612184 5695104 1612136 5695120 1612120 5695192 1612240 5695096 +1612480 5696016 1612560 5696144 1612240 5695096 1612216 5695400 +1613640 5697488 1621712 5701344 1612240 5695096 1613528 5697360 +1613528 5697360 1613640 5697488 1612240 5695096 1612560 5696144 +1623192 5701576 1663776 5646144 1612240 5695096 1623016 5701528 +1612240 5695096 1623192 5701576 1663776 5646144 1657088 5639464 +1663776 5646144 1612648 5695152 1623192 5701576 1623296 5701624 +1623192 5701576 1612648 5695152 1612240 5695096 1623016 5701528 +1623192 5701576 1663776 5646144 1612648 5695152 1623016 5701528 +1612240 5695096 1621712 5701344 1623016 5701528 1612648 5695152 +1621712 5701344 1622880 5701536 1623016 5701528 1612648 5695152 +1612240 5695096 1613640 5697488 1621712 5701344 1612648 5695152 +1613640 5697488 1615968 5699848 1621712 5701344 1612648 5695152 +1615968 5699848 1621576 5701360 1621712 5701344 1612648 5695152 +1613640 5697488 1613696 5697608 1615968 5699848 1612648 5695152 +1613640 5697488 1615968 5699848 1612648 5695152 1612240 5695096 +1621712 5701344 1623016 5701528 1612648 5695152 1615968 5699848 +1612240 5695096 1613528 5697360 1613640 5697488 1612648 5695152 +1613640 5697488 1615968 5699848 1612648 5695152 1613528 5697360 +1612240 5695096 1612560 5696144 1613528 5697360 1612648 5695152 +1612240 5695096 1612480 5696016 1612560 5696144 1612648 5695152 +1612560 5696144 1613072 5696952 1613528 5697360 1612648 5695152 +1612560 5696144 1612736 5696520 1613072 5696952 1612648 5695152 +1612736 5696520 1613008 5696896 1613072 5696952 1612648 5695152 +1613072 5696952 1613528 5697360 1612648 5695152 1612736 5696520 +1613072 5696952 1613312 5697192 1613528 5697360 1612648 5695152 +1613072 5696952 1613312 5697192 1612648 5695152 1612736 5696520 +1612240 5695096 1612216 5695400 1612480 5696016 1612648 5695152 +1612480 5696016 1612560 5696144 1612648 5695152 1612216 5695400 +1612216 5695400 1612216 5695512 1612480 5696016 1612648 5695152 +1612480 5696016 1612560 5696144 1612648 5695152 1612216 5695512 +1612216 5695512 1612248 5695760 1612480 5696016 1612648 5695152 +1612480 5696016 1612560 5696144 1612648 5695152 1612248 5695760 +1612216 5695512 1612248 5695760 1612648 5695152 1612216 5695400 +1612216 5695512 1612224 5695736 1612248 5695760 1612648 5695152 +1612240 5695096 1612128 5695248 1612216 5695400 1612648 5695152 +1612216 5695400 1612216 5695512 1612648 5695152 1612240 5695096 +1613528 5697360 1613640 5697488 1612648 5695152 1613312 5697192 +1612560 5696144 1612736 5696520 1612648 5695152 1612480 5696016 +1623016 5701528 1623192 5701576 1612648 5695152 1621712 5701344 +1612240 5695096 1612648 5695152 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1612648 5695152 +1612240 5695096 1612648 5695152 1657088 5639464 1601624 5681136 +1657088 5639464 1601592 5681064 1601624 5681136 1612648 5695152 +1612240 5695096 1612648 5695152 1601624 5681136 1612160 5695080 +1612648 5695152 1657088 5639464 1601624 5681136 1612160 5695080 +1601624 5681136 1601592 5681216 1612160 5695080 1612648 5695152 +1612240 5695096 1612648 5695152 1612160 5695080 1612184 5695104 +1612648 5695152 1623192 5701576 1663776 5646144 1657088 5639464 +1612648 5695152 1663776 5646144 1657088 5639464 1601624 5681136 +1612648 5695152 1612160 5695080 1612240 5695096 1612216 5695400 +1663776 5646144 1612896 5695232 1623192 5701576 1623296 5701624 +1623192 5701576 1612896 5695232 1612648 5695152 1623016 5701528 +1623192 5701576 1663776 5646144 1612896 5695232 1623016 5701528 +1612648 5695152 1621712 5701344 1623016 5701528 1612896 5695232 +1623016 5701528 1623192 5701576 1612896 5695232 1621712 5701344 +1621712 5701344 1622880 5701536 1623016 5701528 1612896 5695232 +1612648 5695152 1615968 5699848 1621712 5701344 1612896 5695232 +1615968 5699848 1621576 5701360 1621712 5701344 1612896 5695232 +1612648 5695152 1613640 5697488 1615968 5699848 1612896 5695232 +1613640 5697488 1613696 5697608 1615968 5699848 1612896 5695232 +1612648 5695152 1613528 5697360 1613640 5697488 1612896 5695232 +1613640 5697488 1615968 5699848 1612896 5695232 1613528 5697360 +1615968 5699848 1621712 5701344 1612896 5695232 1613640 5697488 +1612648 5695152 1613312 5697192 1613528 5697360 1612896 5695232 +1612648 5695152 1613072 5696952 1613312 5697192 1612896 5695232 +1612648 5695152 1612736 5696520 1613072 5696952 1612896 5695232 +1612648 5695152 1612560 5696144 1612736 5696520 1612896 5695232 +1612736 5696520 1613008 5696896 1613072 5696952 1612896 5695232 +1612736 5696520 1613072 5696952 1612896 5695232 1612560 5696144 +1613072 5696952 1613312 5697192 1612896 5695232 1612736 5696520 +1613528 5697360 1613640 5697488 1612896 5695232 1613312 5697192 +1613312 5697192 1613528 5697360 1612896 5695232 1613072 5696952 +1612648 5695152 1612480 5696016 1612560 5696144 1612896 5695232 +1612648 5695152 1612248 5695760 1612480 5696016 1612896 5695232 +1612560 5696144 1612736 5696520 1612896 5695232 1612480 5696016 +1612648 5695152 1612216 5695512 1612248 5695760 1612896 5695232 +1612480 5696016 1612560 5696144 1612896 5695232 1612248 5695760 +1621712 5701344 1623016 5701528 1612896 5695232 1615968 5699848 +1612648 5695152 1612896 5695232 1663776 5646144 1657088 5639464 +1612896 5695232 1623192 5701576 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1612896 5695232 +1612896 5695232 1657088 5639464 1612648 5695152 1612248 5695760 +1612648 5695152 1612896 5695232 1657088 5639464 1601624 5681136 +1657088 5639464 1601592 5681064 1601624 5681136 1612896 5695232 +1612648 5695152 1612896 5695232 1601624 5681136 1612160 5695080 +1612896 5695232 1663776 5646144 1657088 5639464 1601624 5681136 +1612648 5695152 1612248 5695760 1612896 5695232 1601624 5681136 +1663776 5646144 1613232 5695376 1623192 5701576 1623296 5701624 +1612896 5695232 1613232 5695376 1663776 5646144 1657088 5639464 +1612896 5695232 1623192 5701576 1613232 5695376 1657088 5639464 +1623192 5701576 1613232 5695376 1612896 5695232 1623016 5701528 +1612896 5695232 1621712 5701344 1623016 5701528 1613232 5695376 +1613232 5695376 1657088 5639464 1612896 5695232 1621712 5701344 +1623016 5701528 1623192 5701576 1613232 5695376 1621712 5701344 +1613232 5695376 1623192 5701576 1663776 5646144 1657088 5639464 +1623192 5701576 1663776 5646144 1613232 5695376 1623016 5701528 +1663776 5646144 1663688 5645984 1657088 5639464 1613232 5695376 +1621712 5701344 1622880 5701536 1623016 5701528 1613232 5695376 +1612896 5695232 1615968 5699848 1621712 5701344 1613232 5695376 +1621712 5701344 1623016 5701528 1613232 5695376 1615968 5699848 +1612896 5695232 1615968 5699848 1613232 5695376 1657088 5639464 +1615968 5699848 1621576 5701360 1621712 5701344 1613232 5695376 +1615968 5699848 1621488 5701424 1621576 5701360 1613232 5695376 +1621712 5701344 1623016 5701528 1613232 5695376 1621576 5701360 +1612896 5695232 1613640 5697488 1615968 5699848 1613232 5695376 +1612896 5695232 1613640 5697488 1613232 5695376 1657088 5639464 +1613640 5697488 1613696 5697608 1615968 5699848 1613232 5695376 +1613696 5697608 1613728 5697776 1615968 5699848 1613232 5695376 +1612896 5695232 1613528 5697360 1613640 5697488 1613232 5695376 +1612896 5695232 1613528 5697360 1613232 5695376 1657088 5639464 +1612896 5695232 1613312 5697192 1613528 5697360 1613232 5695376 +1612896 5695232 1613312 5697192 1613232 5695376 1657088 5639464 +1613528 5697360 1613640 5697488 1613232 5695376 1613312 5697192 +1613640 5697488 1613696 5697608 1613232 5695376 1613528 5697360 +1612896 5695232 1613072 5696952 1613312 5697192 1613232 5695376 +1612896 5695232 1613072 5696952 1613232 5695376 1657088 5639464 +1612896 5695232 1612736 5696520 1613072 5696952 1613232 5695376 +1612896 5695232 1612736 5696520 1613232 5695376 1657088 5639464 +1612736 5696520 1613008 5696896 1613072 5696952 1613232 5695376 +1612736 5696520 1612840 5696712 1613008 5696896 1613232 5695376 +1613008 5696896 1613072 5696952 1613232 5695376 1612840 5696712 +1612896 5695232 1612560 5696144 1612736 5696520 1613232 5695376 +1612896 5695232 1612560 5696144 1613232 5695376 1657088 5639464 +1612896 5695232 1612480 5696016 1612560 5696144 1613232 5695376 +1612896 5695232 1612480 5696016 1613232 5695376 1657088 5639464 +1612560 5696144 1612736 5696520 1613232 5695376 1612480 5696016 +1612736 5696520 1612840 5696712 1613232 5695376 1612560 5696144 +1613312 5697192 1613528 5697360 1613232 5695376 1613072 5696952 +1613072 5696952 1613312 5697192 1613232 5695376 1613008 5696896 +1612896 5695232 1612248 5695760 1612480 5696016 1613232 5695376 +1615968 5699848 1621576 5701360 1613232 5695376 1613696 5697608 +1612896 5695232 1613232 5695376 1657088 5639464 1601624 5681136 +1613232 5695376 1663776 5646144 1657088 5639464 1601624 5681136 +1612896 5695232 1612480 5696016 1613232 5695376 1601624 5681136 +1657088 5639464 1601592 5681064 1601624 5681136 1613232 5695376 +1657088 5639464 1601592 5681064 1613232 5695376 1663776 5646144 +1657088 5639464 1601560 5681032 1601592 5681064 1613232 5695376 +1601624 5681136 1612896 5695232 1613232 5695376 1601592 5681064 +1612896 5695232 1613232 5695376 1601624 5681136 1612648 5695152 +1663776 5646144 1613448 5695424 1623192 5701576 1623296 5701624 +1613232 5695376 1613448 5695424 1663776 5646144 1657088 5639464 +1613232 5695376 1613448 5695424 1657088 5639464 1601592 5681064 +1613448 5695424 1663776 5646144 1657088 5639464 1601592 5681064 +1613232 5695376 1623192 5701576 1613448 5695424 1601592 5681064 +1623192 5701576 1613448 5695424 1613232 5695376 1623016 5701528 +1613232 5695376 1621712 5701344 1623016 5701528 1613448 5695424 +1613232 5695376 1621576 5701360 1621712 5701344 1613448 5695424 +1621712 5701344 1623016 5701528 1613448 5695424 1621576 5701360 +1613448 5695424 1601592 5681064 1613232 5695376 1621576 5701360 +1623016 5701528 1623192 5701576 1613448 5695424 1621712 5701344 +1613448 5695424 1623192 5701576 1663776 5646144 1657088 5639464 +1623192 5701576 1663776 5646144 1613448 5695424 1623016 5701528 +1613232 5695376 1613448 5695424 1601592 5681064 1601624 5681136 +1613448 5695424 1657088 5639464 1601592 5681064 1601624 5681136 +1613232 5695376 1621576 5701360 1613448 5695424 1601624 5681136 +1663776 5646144 1663688 5645984 1657088 5639464 1613448 5695424 +1613232 5695376 1615968 5699848 1621576 5701360 1613448 5695424 +1615968 5699848 1621488 5701424 1621576 5701360 1613448 5695424 +1621576 5701360 1621712 5701344 1613448 5695424 1615968 5699848 +1613232 5695376 1615968 5699848 1613448 5695424 1601624 5681136 +1621712 5701344 1622880 5701536 1623016 5701528 1613448 5695424 +1657088 5639464 1601560 5681032 1601592 5681064 1613448 5695424 +1613232 5695376 1613696 5697608 1615968 5699848 1613448 5695424 +1613232 5695376 1613696 5697608 1613448 5695424 1601624 5681136 +1615968 5699848 1621576 5701360 1613448 5695424 1613696 5697608 +1613696 5697608 1613728 5697776 1615968 5699848 1613448 5695424 +1613232 5695376 1613640 5697488 1613696 5697608 1613448 5695424 +1613232 5695376 1613640 5697488 1613448 5695424 1601624 5681136 +1613232 5695376 1613528 5697360 1613640 5697488 1613448 5695424 +1613232 5695376 1613528 5697360 1613448 5695424 1601624 5681136 +1613640 5697488 1613696 5697608 1613448 5695424 1613528 5697360 +1613232 5695376 1613312 5697192 1613528 5697360 1613448 5695424 +1613232 5695376 1613312 5697192 1613448 5695424 1601624 5681136 +1613232 5695376 1613072 5696952 1613312 5697192 1613448 5695424 +1613232 5695376 1613072 5696952 1613448 5695424 1601624 5681136 +1613312 5697192 1613528 5697360 1613448 5695424 1613072 5696952 +1613528 5697360 1613640 5697488 1613448 5695424 1613312 5697192 +1613232 5695376 1613008 5696896 1613072 5696952 1613448 5695424 +1613232 5695376 1613008 5696896 1613448 5695424 1601624 5681136 +1613232 5695376 1612840 5696712 1613008 5696896 1613448 5695424 +1613232 5695376 1612840 5696712 1613448 5695424 1601624 5681136 +1613232 5695376 1612736 5696520 1612840 5696712 1613448 5695424 +1613232 5695376 1612736 5696520 1613448 5695424 1601624 5681136 +1612840 5696712 1613008 5696896 1613448 5695424 1612736 5696520 +1613232 5695376 1612560 5696144 1612736 5696520 1613448 5695424 +1613232 5695376 1612560 5696144 1613448 5695424 1601624 5681136 +1612736 5696520 1612840 5696712 1613448 5695424 1612560 5696144 +1613232 5695376 1612480 5696016 1612560 5696144 1613448 5695424 +1613072 5696952 1613312 5697192 1613448 5695424 1613008 5696896 +1613008 5696896 1613072 5696952 1613448 5695424 1612840 5696712 +1613696 5697608 1615968 5699848 1613448 5695424 1613640 5697488 +1613232 5695376 1613448 5695424 1601624 5681136 1612896 5695232 +1613232 5695376 1612560 5696144 1613448 5695424 1612896 5695232 +1613448 5695424 1601592 5681064 1601624 5681136 1612896 5695232 +1601624 5681136 1612648 5695152 1612896 5695232 1613448 5695424 +1663776 5646144 1613656 5695408 1623192 5701576 1623296 5701624 +1613448 5695424 1613656 5695408 1663776 5646144 1657088 5639464 +1613448 5695424 1613656 5695408 1657088 5639464 1601592 5681064 +1613448 5695424 1613656 5695408 1601592 5681064 1601624 5681136 +1613656 5695408 1657088 5639464 1601592 5681064 1601624 5681136 +1613656 5695408 1663776 5646144 1657088 5639464 1601592 5681064 +1613448 5695424 1623192 5701576 1613656 5695408 1601624 5681136 +1623192 5701576 1613656 5695408 1613448 5695424 1623016 5701528 +1613448 5695424 1621712 5701344 1623016 5701528 1613656 5695408 +1613448 5695424 1621576 5701360 1621712 5701344 1613656 5695408 +1613448 5695424 1615968 5699848 1621576 5701360 1613656 5695408 +1615968 5699848 1621488 5701424 1621576 5701360 1613656 5695408 +1621576 5701360 1621712 5701344 1613656 5695408 1615968 5699848 +1621712 5701344 1623016 5701528 1613656 5695408 1621576 5701360 +1613656 5695408 1601624 5681136 1613448 5695424 1615968 5699848 +1623016 5701528 1623192 5701576 1613656 5695408 1621712 5701344 +1613656 5695408 1623192 5701576 1663776 5646144 1657088 5639464 +1623192 5701576 1663776 5646144 1613656 5695408 1623016 5701528 +1613448 5695424 1613656 5695408 1601624 5681136 1612896 5695232 +1613656 5695408 1601592 5681064 1601624 5681136 1612896 5695232 +1613448 5695424 1615968 5699848 1613656 5695408 1612896 5695232 +1663776 5646144 1663688 5645984 1657088 5639464 1613656 5695408 +1613448 5695424 1613696 5697608 1615968 5699848 1613656 5695408 +1615968 5699848 1621576 5701360 1613656 5695408 1613696 5697608 +1613448 5695424 1613696 5697608 1613656 5695408 1612896 5695232 +1621712 5701344 1622880 5701536 1623016 5701528 1613656 5695408 +1613696 5697608 1613728 5697776 1615968 5699848 1613656 5695408 +1657088 5639464 1601560 5681032 1601592 5681064 1613656 5695408 +1613448 5695424 1613640 5697488 1613696 5697608 1613656 5695408 +1613448 5695424 1613640 5697488 1613656 5695408 1612896 5695232 +1613696 5697608 1615968 5699848 1613656 5695408 1613640 5697488 +1613448 5695424 1613528 5697360 1613640 5697488 1613656 5695408 +1613448 5695424 1613528 5697360 1613656 5695408 1612896 5695232 +1613448 5695424 1613312 5697192 1613528 5697360 1613656 5695408 +1613448 5695424 1613312 5697192 1613656 5695408 1612896 5695232 +1613528 5697360 1613640 5697488 1613656 5695408 1613312 5697192 +1613448 5695424 1613072 5696952 1613312 5697192 1613656 5695408 +1613448 5695424 1613072 5696952 1613656 5695408 1612896 5695232 +1613448 5695424 1613008 5696896 1613072 5696952 1613656 5695408 +1613312 5697192 1613528 5697360 1613656 5695408 1613072 5696952 +1613640 5697488 1613696 5697608 1613656 5695408 1613528 5697360 +1613448 5695424 1613656 5695408 1612896 5695232 1613232 5695376 +1613448 5695424 1613072 5696952 1613656 5695408 1613232 5695376 +1613656 5695408 1601624 5681136 1612896 5695232 1613232 5695376 +1601624 5681136 1612648 5695152 1612896 5695232 1613656 5695408 +1601624 5681136 1612648 5695152 1613656 5695408 1601592 5681064 +1612896 5695232 1613232 5695376 1613656 5695408 1612648 5695152 +1601624 5681136 1612160 5695080 1612648 5695152 1613656 5695408 +1663776 5646144 1613744 5695376 1623192 5701576 1623296 5701624 +1613656 5695408 1613744 5695376 1663776 5646144 1657088 5639464 +1613656 5695408 1613744 5695376 1657088 5639464 1601592 5681064 +1613656 5695408 1613744 5695376 1601592 5681064 1601624 5681136 +1613656 5695408 1613744 5695376 1601624 5681136 1612648 5695152 +1613744 5695376 1601592 5681064 1601624 5681136 1612648 5695152 +1613744 5695376 1657088 5639464 1601592 5681064 1601624 5681136 +1613744 5695376 1663776 5646144 1657088 5639464 1601592 5681064 +1613656 5695408 1623192 5701576 1613744 5695376 1612648 5695152 +1623192 5701576 1613744 5695376 1613656 5695408 1623016 5701528 +1613656 5695408 1621712 5701344 1623016 5701528 1613744 5695376 +1613656 5695408 1621576 5701360 1621712 5701344 1613744 5695376 +1613656 5695408 1615968 5699848 1621576 5701360 1613744 5695376 +1615968 5699848 1621488 5701424 1621576 5701360 1613744 5695376 +1613656 5695408 1613696 5697608 1615968 5699848 1613744 5695376 +1615968 5699848 1621576 5701360 1613744 5695376 1613696 5697608 +1621576 5701360 1621712 5701344 1613744 5695376 1615968 5699848 +1621712 5701344 1623016 5701528 1613744 5695376 1621576 5701360 +1613744 5695376 1612648 5695152 1613656 5695408 1613696 5697608 +1623016 5701528 1623192 5701576 1613744 5695376 1621712 5701344 +1613744 5695376 1623192 5701576 1663776 5646144 1657088 5639464 +1623192 5701576 1663776 5646144 1613744 5695376 1623016 5701528 +1663776 5646144 1663688 5645984 1657088 5639464 1613744 5695376 +1613656 5695408 1613640 5697488 1613696 5697608 1613744 5695376 +1613696 5697608 1615968 5699848 1613744 5695376 1613640 5697488 +1613656 5695408 1613640 5697488 1613744 5695376 1612648 5695152 +1621712 5701344 1622880 5701536 1623016 5701528 1613744 5695376 +1613696 5697608 1613728 5697776 1615968 5699848 1613744 5695376 +1657088 5639464 1601560 5681032 1601592 5681064 1613744 5695376 +1601624 5681136 1612160 5695080 1612648 5695152 1613744 5695376 +1613656 5695408 1613528 5697360 1613640 5697488 1613744 5695376 +1613656 5695408 1613528 5697360 1613744 5695376 1612648 5695152 +1613640 5697488 1613696 5697608 1613744 5695376 1613528 5697360 +1613656 5695408 1613312 5697192 1613528 5697360 1613744 5695376 +1613656 5695408 1613312 5697192 1613744 5695376 1612648 5695152 +1613656 5695408 1613072 5696952 1613312 5697192 1613744 5695376 +1613528 5697360 1613640 5697488 1613744 5695376 1613312 5697192 +1613656 5695408 1613744 5695376 1612648 5695152 1612896 5695232 +1613744 5695376 1601624 5681136 1612648 5695152 1612896 5695232 +1613656 5695408 1613312 5697192 1613744 5695376 1612896 5695232 +1613656 5695408 1613744 5695376 1612896 5695232 1613232 5695376 +1613656 5695408 1613312 5697192 1613744 5695376 1613232 5695376 +1613656 5695408 1613744 5695376 1613232 5695376 1613448 5695424 +1613656 5695408 1613312 5697192 1613744 5695376 1613448 5695424 +1613744 5695376 1612896 5695232 1613232 5695376 1613448 5695424 +1613744 5695376 1612648 5695152 1612896 5695232 1613232 5695376 +1663776 5646144 1613792 5695344 1623192 5701576 1623296 5701624 +1613744 5695376 1613792 5695344 1663776 5646144 1657088 5639464 +1613792 5695344 1623192 5701576 1663776 5646144 1657088 5639464 +1613744 5695376 1613792 5695344 1657088 5639464 1601592 5681064 +1613744 5695376 1613792 5695344 1601592 5681064 1601624 5681136 +1613744 5695376 1613792 5695344 1601624 5681136 1612648 5695152 +1613744 5695376 1613792 5695344 1612648 5695152 1612896 5695232 +1613792 5695344 1601624 5681136 1612648 5695152 1612896 5695232 +1613792 5695344 1601592 5681064 1601624 5681136 1612648 5695152 +1613792 5695344 1657088 5639464 1601592 5681064 1601624 5681136 +1613792 5695344 1663776 5646144 1657088 5639464 1601592 5681064 +1613744 5695376 1623192 5701576 1613792 5695344 1612896 5695232 +1623192 5701576 1613792 5695344 1613744 5695376 1623016 5701528 +1623192 5701576 1663776 5646144 1613792 5695344 1623016 5701528 +1613744 5695376 1621712 5701344 1623016 5701528 1613792 5695344 +1613744 5695376 1621576 5701360 1621712 5701344 1613792 5695344 +1613744 5695376 1615968 5699848 1621576 5701360 1613792 5695344 +1615968 5699848 1621488 5701424 1621576 5701360 1613792 5695344 +1613744 5695376 1613696 5697608 1615968 5699848 1613792 5695344 +1613744 5695376 1613640 5697488 1613696 5697608 1613792 5695344 +1613696 5697608 1615968 5699848 1613792 5695344 1613640 5697488 +1615968 5699848 1621576 5701360 1613792 5695344 1613696 5697608 +1621576 5701360 1621712 5701344 1613792 5695344 1615968 5699848 +1621712 5701344 1623016 5701528 1613792 5695344 1621576 5701360 +1613792 5695344 1612896 5695232 1613744 5695376 1613640 5697488 +1623016 5701528 1623192 5701576 1613792 5695344 1621712 5701344 +1663776 5646144 1663688 5645984 1657088 5639464 1613792 5695344 +1613744 5695376 1613528 5697360 1613640 5697488 1613792 5695344 +1613640 5697488 1613696 5697608 1613792 5695344 1613528 5697360 +1613744 5695376 1613528 5697360 1613792 5695344 1612896 5695232 +1621712 5701344 1622880 5701536 1623016 5701528 1613792 5695344 +1613696 5697608 1613728 5697776 1615968 5699848 1613792 5695344 +1657088 5639464 1601560 5681032 1601592 5681064 1613792 5695344 +1601624 5681136 1612160 5695080 1612648 5695152 1613792 5695344 +1613744 5695376 1613312 5697192 1613528 5697360 1613792 5695344 +1613744 5695376 1613792 5695344 1612896 5695232 1613232 5695376 +1613792 5695344 1612648 5695152 1612896 5695232 1613232 5695376 +1613744 5695376 1613528 5697360 1613792 5695344 1613232 5695376 +1613744 5695376 1613792 5695344 1613232 5695376 1613448 5695424 +1613744 5695376 1613528 5697360 1613792 5695344 1613448 5695424 +1613744 5695376 1613792 5695344 1613448 5695424 1613656 5695408 +1613744 5695376 1613528 5697360 1613792 5695344 1613656 5695408 +1613792 5695344 1613232 5695376 1613448 5695424 1613656 5695408 +1613792 5695344 1612896 5695232 1613232 5695376 1613448 5695424 +1663776 5646144 1613832 5695328 1623192 5701576 1623296 5701624 +1613792 5695344 1613832 5695328 1663776 5646144 1657088 5639464 +1613792 5695344 1623192 5701576 1613832 5695328 1657088 5639464 +1623192 5701576 1613832 5695328 1613792 5695344 1623016 5701528 +1613832 5695328 1657088 5639464 1613792 5695344 1623016 5701528 +1613832 5695328 1623192 5701576 1663776 5646144 1657088 5639464 +1623192 5701576 1663776 5646144 1613832 5695328 1623016 5701528 +1613792 5695344 1613832 5695328 1657088 5639464 1601592 5681064 +1613832 5695328 1663776 5646144 1657088 5639464 1601592 5681064 +1613792 5695344 1623016 5701528 1613832 5695328 1601592 5681064 +1613792 5695344 1613832 5695328 1601592 5681064 1601624 5681136 +1613792 5695344 1623016 5701528 1613832 5695328 1601624 5681136 +1613792 5695344 1613832 5695328 1601624 5681136 1612648 5695152 +1613792 5695344 1623016 5701528 1613832 5695328 1612648 5695152 +1613792 5695344 1613832 5695328 1612648 5695152 1612896 5695232 +1613792 5695344 1613832 5695328 1612896 5695232 1613232 5695376 +1613792 5695344 1623016 5701528 1613832 5695328 1613232 5695376 +1613832 5695328 1612648 5695152 1612896 5695232 1613232 5695376 +1613832 5695328 1601624 5681136 1612648 5695152 1612896 5695232 +1613832 5695328 1601592 5681064 1601624 5681136 1612648 5695152 +1613832 5695328 1657088 5639464 1601592 5681064 1601624 5681136 +1613792 5695344 1621712 5701344 1623016 5701528 1613832 5695328 +1613792 5695344 1621712 5701344 1613832 5695328 1613232 5695376 +1623016 5701528 1623192 5701576 1613832 5695328 1621712 5701344 +1613792 5695344 1621576 5701360 1621712 5701344 1613832 5695328 +1613792 5695344 1621576 5701360 1613832 5695328 1613232 5695376 +1613792 5695344 1615968 5699848 1621576 5701360 1613832 5695328 +1615968 5699848 1621488 5701424 1621576 5701360 1613832 5695328 +1613792 5695344 1615968 5699848 1613832 5695328 1613232 5695376 +1613792 5695344 1613696 5697608 1615968 5699848 1613832 5695328 +1613792 5695344 1613640 5697488 1613696 5697608 1613832 5695328 +1613792 5695344 1613528 5697360 1613640 5697488 1613832 5695328 +1613640 5697488 1613696 5697608 1613832 5695328 1613528 5697360 +1613792 5695344 1613528 5697360 1613832 5695328 1613232 5695376 +1613696 5697608 1615968 5699848 1613832 5695328 1613640 5697488 +1615968 5699848 1621576 5701360 1613832 5695328 1613696 5697608 +1621576 5701360 1621712 5701344 1613832 5695328 1615968 5699848 +1621712 5701344 1623016 5701528 1613832 5695328 1621576 5701360 +1663776 5646144 1663688 5645984 1657088 5639464 1613832 5695328 +1613792 5695344 1613744 5695376 1613528 5697360 1613832 5695328 +1613528 5697360 1613640 5697488 1613832 5695328 1613744 5695376 +1613792 5695344 1613744 5695376 1613832 5695328 1613232 5695376 +1621712 5701344 1622880 5701536 1623016 5701528 1613832 5695328 +1613696 5697608 1613728 5697776 1615968 5699848 1613832 5695328 +1657088 5639464 1601560 5681032 1601592 5681064 1613832 5695328 +1601624 5681136 1612160 5695080 1612648 5695152 1613832 5695328 +1613744 5695376 1613312 5697192 1613528 5697360 1613832 5695328 +1613792 5695344 1613832 5695328 1613232 5695376 1613448 5695424 +1657088 5639464 1613864 5695256 1613832 5695328 1663776 5646144 +1613832 5695328 1623192 5701576 1663776 5646144 1613864 5695256 +1623192 5701576 1623296 5701624 1663776 5646144 1613864 5695256 +1663776 5646144 1657088 5639464 1613864 5695256 1623192 5701576 +1613864 5695256 1601592 5681064 1613832 5695328 1623192 5701576 +1613832 5695328 1623016 5701528 1623192 5701576 1613864 5695256 +1613832 5695328 1621712 5701344 1623016 5701528 1613864 5695256 +1623192 5701576 1663776 5646144 1613864 5695256 1623016 5701528 +1613832 5695328 1621712 5701344 1613864 5695256 1601592 5681064 +1623016 5701528 1623192 5701576 1613864 5695256 1621712 5701344 +1613832 5695328 1613864 5695256 1601592 5681064 1601624 5681136 +1613832 5695328 1621712 5701344 1613864 5695256 1601624 5681136 +1613864 5695256 1657088 5639464 1601592 5681064 1601624 5681136 +1613832 5695328 1613864 5695256 1601624 5681136 1612648 5695152 +1613832 5695328 1621712 5701344 1613864 5695256 1612648 5695152 +1613832 5695328 1613864 5695256 1612648 5695152 1612896 5695232 +1613832 5695328 1621712 5701344 1613864 5695256 1612896 5695232 +1613832 5695328 1613864 5695256 1612896 5695232 1613232 5695376 +1613832 5695328 1613864 5695256 1613232 5695376 1613792 5695344 +1613832 5695328 1621712 5701344 1613864 5695256 1613792 5695344 +1613864 5695256 1612896 5695232 1613232 5695376 1613792 5695344 +1613864 5695256 1612648 5695152 1612896 5695232 1613232 5695376 +1613864 5695256 1601624 5681136 1612648 5695152 1612896 5695232 +1613864 5695256 1601592 5681064 1601624 5681136 1612648 5695152 +1613832 5695328 1621576 5701360 1621712 5701344 1613864 5695256 +1621712 5701344 1623016 5701528 1613864 5695256 1621576 5701360 +1613832 5695328 1621576 5701360 1613864 5695256 1613792 5695344 +1613832 5695328 1615968 5699848 1621576 5701360 1613864 5695256 +1615968 5699848 1621488 5701424 1621576 5701360 1613864 5695256 +1613832 5695328 1615968 5699848 1613864 5695256 1613792 5695344 +1613832 5695328 1613696 5697608 1615968 5699848 1613864 5695256 +1621576 5701360 1621712 5701344 1613864 5695256 1615968 5699848 +1657088 5639464 1601592 5681064 1613864 5695256 1663776 5646144 +1657088 5639464 1613864 5695256 1663776 5646144 1663688 5645984 +1621712 5701344 1622880 5701536 1623016 5701528 1613864 5695256 +1601592 5681064 1613864 5695256 1657088 5639464 1601560 5681032 +1601624 5681136 1612160 5695080 1612648 5695152 1613864 5695256 +1613232 5695376 1613448 5695424 1613792 5695344 1613864 5695256 +1613792 5695344 1613832 5695328 1613864 5695256 1613448 5695424 +1613232 5695376 1613448 5695424 1613864 5695256 1612896 5695232 +1613448 5695424 1613656 5695408 1613792 5695344 1613864 5695256 +1613792 5695344 1613832 5695328 1613864 5695256 1613656 5695408 +1613656 5695408 1613744 5695376 1613792 5695344 1613864 5695256 +1613792 5695344 1613832 5695328 1613864 5695256 1613744 5695376 +1613656 5695408 1613744 5695376 1613864 5695256 1613448 5695424 +1613448 5695424 1613656 5695408 1613864 5695256 1613232 5695376 +1613864 5695256 1613840 5695128 1601592 5681064 1601624 5681136 +1613864 5695256 1613840 5695128 1601624 5681136 1612648 5695152 +1613840 5695128 1601592 5681064 1601624 5681136 1612648 5695152 +1613864 5695256 1613840 5695128 1612648 5695152 1612896 5695232 +1613864 5695256 1613840 5695128 1612896 5695232 1613232 5695376 +1613864 5695256 1613840 5695128 1613232 5695376 1613448 5695424 +1613840 5695128 1612896 5695232 1613232 5695376 1613448 5695424 +1613840 5695128 1612648 5695152 1612896 5695232 1613232 5695376 +1613840 5695128 1601624 5681136 1612648 5695152 1612896 5695232 +1613864 5695256 1657088 5639464 1613840 5695128 1613448 5695424 +1657088 5639464 1613840 5695128 1613864 5695256 1663776 5646144 +1613864 5695256 1623192 5701576 1663776 5646144 1613840 5695128 +1623192 5701576 1623296 5701624 1663776 5646144 1613840 5695128 +1623296 5701624 1663880 5646248 1663776 5646144 1613840 5695128 +1623192 5701576 1623296 5701624 1613840 5695128 1613864 5695256 +1613864 5695256 1623016 5701528 1623192 5701576 1613840 5695128 +1623192 5701576 1623296 5701624 1613840 5695128 1623016 5701528 +1613864 5695256 1621712 5701344 1623016 5701528 1613840 5695128 +1613864 5695256 1621576 5701360 1621712 5701344 1613840 5695128 +1623016 5701528 1623192 5701576 1613840 5695128 1621712 5701344 +1613840 5695128 1613448 5695424 1613864 5695256 1621712 5701344 +1663776 5646144 1657088 5639464 1613840 5695128 1623296 5701624 +1613840 5695128 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1613840 5695128 1663776 5646144 +1657088 5639464 1613840 5695128 1663776 5646144 1663688 5645984 +1621712 5701344 1622880 5701536 1623016 5701528 1613840 5695128 +1601592 5681064 1613840 5695128 1657088 5639464 1601560 5681032 +1601624 5681136 1612160 5695080 1612648 5695152 1613840 5695128 +1601624 5681136 1612160 5695080 1613840 5695128 1601592 5681064 +1612648 5695152 1612896 5695232 1613840 5695128 1612160 5695080 +1601624 5681136 1601592 5681216 1612160 5695080 1613840 5695128 +1612160 5695080 1612240 5695096 1612648 5695152 1613840 5695128 +1613864 5695256 1613840 5695128 1613448 5695424 1613656 5695408 +1613840 5695128 1613232 5695376 1613448 5695424 1613656 5695408 +1613864 5695256 1621712 5701344 1613840 5695128 1613656 5695408 +1613864 5695256 1613840 5695128 1613656 5695408 1613744 5695376 +1613864 5695256 1621712 5701344 1613840 5695128 1613744 5695376 +1613864 5695256 1613840 5695128 1613744 5695376 1613792 5695344 +1613864 5695256 1613840 5695128 1613792 5695344 1613832 5695328 +1613864 5695256 1621712 5701344 1613840 5695128 1613792 5695344 +1613840 5695128 1613656 5695408 1613744 5695376 1613792 5695344 +1613840 5695128 1613448 5695424 1613656 5695408 1613744 5695376 +1613840 5695128 1613728 5694936 1601592 5681064 1601624 5681136 +1613840 5695128 1613728 5694936 1601624 5681136 1612160 5695080 +1613728 5694936 1601592 5681064 1601624 5681136 1612160 5695080 +1613840 5695128 1657088 5639464 1613728 5694936 1612160 5695080 +1657088 5639464 1613728 5694936 1613840 5695128 1663776 5646144 +1613840 5695128 1623296 5701624 1663776 5646144 1613728 5694936 +1623296 5701624 1663880 5646248 1663776 5646144 1613728 5694936 +1613840 5695128 1623192 5701576 1623296 5701624 1613728 5694936 +1613840 5695128 1623016 5701528 1623192 5701576 1613728 5694936 +1623192 5701576 1623296 5701624 1613728 5694936 1623016 5701528 +1613840 5695128 1621712 5701344 1623016 5701528 1613728 5694936 +1623296 5701624 1663776 5646144 1613728 5694936 1623192 5701576 +1613728 5694936 1612160 5695080 1613840 5695128 1623016 5701528 +1663776 5646144 1657088 5639464 1613728 5694936 1623296 5701624 +1613728 5694936 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1613728 5694936 1663776 5646144 +1657088 5639464 1613728 5694936 1663776 5646144 1663688 5645984 +1601592 5681064 1613728 5694936 1657088 5639464 1601560 5681032 +1613840 5695128 1613728 5694936 1612160 5695080 1612648 5695152 +1613728 5694936 1601624 5681136 1612160 5695080 1612648 5695152 +1613840 5695128 1613728 5694936 1612648 5695152 1612896 5695232 +1613840 5695128 1613728 5694936 1612896 5695232 1613232 5695376 +1613840 5695128 1613728 5694936 1613232 5695376 1613448 5695424 +1613840 5695128 1613728 5694936 1613448 5695424 1613656 5695408 +1613728 5694936 1613232 5695376 1613448 5695424 1613656 5695408 +1613728 5694936 1612896 5695232 1613232 5695376 1613448 5695424 +1613728 5694936 1612648 5695152 1612896 5695232 1613232 5695376 +1613840 5695128 1623016 5701528 1613728 5694936 1613656 5695408 +1613728 5694936 1612160 5695080 1612648 5695152 1612896 5695232 +1601624 5681136 1601592 5681216 1612160 5695080 1613728 5694936 +1612160 5695080 1612240 5695096 1612648 5695152 1613728 5694936 +1612160 5695080 1612240 5695096 1613728 5694936 1601624 5681136 +1612648 5695152 1612896 5695232 1613728 5694936 1612240 5695096 +1612160 5695080 1612184 5695104 1612240 5695096 1613728 5694936 +1613840 5695128 1613728 5694936 1613656 5695408 1613744 5695376 +1613728 5694936 1613688 5694912 1612160 5695080 1612240 5695096 +1613688 5694912 1601624 5681136 1612160 5695080 1612240 5695096 +1601624 5681136 1613688 5694912 1613728 5694936 1601592 5681064 +1613728 5694936 1601624 5681136 1613688 5694912 1612240 5695096 +1612160 5695080 1613688 5694912 1601624 5681136 1601592 5681216 +1613728 5694936 1613688 5694912 1612240 5695096 1612648 5695152 +1613688 5694912 1612160 5695080 1612240 5695096 1612648 5695152 +1613728 5694936 1601624 5681136 1613688 5694912 1612648 5695152 +1613728 5694936 1613688 5694912 1612648 5695152 1612896 5695232 +1613728 5694936 1613688 5694912 1612896 5695232 1613232 5695376 +1613728 5694936 1613688 5694912 1613232 5695376 1613448 5695424 +1613728 5694936 1613688 5694912 1613448 5695424 1613656 5695408 +1613728 5694936 1613688 5694912 1613656 5695408 1613840 5695128 +1613688 5694912 1613232 5695376 1613448 5695424 1613656 5695408 +1613688 5694912 1612896 5695232 1613232 5695376 1613448 5695424 +1613728 5694936 1601624 5681136 1613688 5694912 1613656 5695408 +1613688 5694912 1612648 5695152 1612896 5695232 1613232 5695376 +1613688 5694912 1612240 5695096 1612648 5695152 1612896 5695232 +1612160 5695080 1612184 5695104 1612240 5695096 1613688 5694912 +1613688 5694912 1613592 5694904 1612160 5695080 1612240 5695096 +1613688 5694912 1613592 5694904 1612240 5695096 1612648 5695152 +1613592 5694904 1612160 5695080 1612240 5695096 1612648 5695152 +1613688 5694912 1601624 5681136 1613592 5694904 1612648 5695152 +1601624 5681136 1613592 5694904 1613688 5694912 1613728 5694936 +1613592 5694904 1601624 5681136 1612160 5695080 1612240 5695096 +1612160 5695080 1613592 5694904 1601624 5681136 1601592 5681216 +1613688 5694912 1613592 5694904 1612648 5695152 1612896 5695232 +1613592 5694904 1612240 5695096 1612648 5695152 1612896 5695232 +1613688 5694912 1601624 5681136 1613592 5694904 1612896 5695232 +1613688 5694912 1613592 5694904 1612896 5695232 1613232 5695376 +1613688 5694912 1613592 5694904 1613232 5695376 1613448 5695424 +1613688 5694912 1613592 5694904 1613448 5695424 1613656 5695408 +1613688 5694912 1613592 5694904 1613656 5695408 1613728 5694936 +1613656 5695408 1613840 5695128 1613728 5694936 1613592 5694904 +1613728 5694936 1613688 5694912 1613592 5694904 1613840 5695128 +1613592 5694904 1613448 5695424 1613656 5695408 1613840 5695128 +1613592 5694904 1613232 5695376 1613448 5695424 1613656 5695408 +1613688 5694912 1601624 5681136 1613592 5694904 1613728 5694936 +1613592 5694904 1612896 5695232 1613232 5695376 1613448 5695424 +1613592 5694904 1612648 5695152 1612896 5695232 1613232 5695376 +1612160 5695080 1612184 5695104 1612240 5695096 1613592 5694904 +1613656 5695408 1613744 5695376 1613840 5695128 1613592 5694904 +1613592 5694904 1613384 5694896 1612160 5695080 1612240 5695096 +1613592 5694904 1613384 5694896 1612240 5695096 1612648 5695152 +1613592 5694904 1613384 5694896 1612648 5695152 1612896 5695232 +1613384 5694896 1612240 5695096 1612648 5695152 1612896 5695232 +1613384 5694896 1612160 5695080 1612240 5695096 1612648 5695152 +1613592 5694904 1601624 5681136 1613384 5694896 1612896 5695232 +1601624 5681136 1613384 5694896 1613592 5694904 1613688 5694912 +1613384 5694896 1601624 5681136 1612160 5695080 1612240 5695096 +1612160 5695080 1613384 5694896 1601624 5681136 1601592 5681216 +1613592 5694904 1613384 5694896 1612896 5695232 1613232 5695376 +1613384 5694896 1612648 5695152 1612896 5695232 1613232 5695376 +1613592 5694904 1601624 5681136 1613384 5694896 1613232 5695376 +1613592 5694904 1613384 5694896 1613232 5695376 1613448 5695424 +1613592 5694904 1613384 5694896 1613448 5695424 1613656 5695408 +1613592 5694904 1601624 5681136 1613384 5694896 1613448 5695424 +1613384 5694896 1612896 5695232 1613232 5695376 1613448 5695424 +1612160 5695080 1612184 5695104 1612240 5695096 1613384 5694896 +1613384 5694896 1613080 5694848 1612160 5695080 1612240 5695096 +1613384 5694896 1613080 5694848 1612240 5695096 1612648 5695152 +1613384 5694896 1613080 5694848 1612648 5695152 1612896 5695232 +1613384 5694896 1613080 5694848 1612896 5695232 1613232 5695376 +1613080 5694848 1612648 5695152 1612896 5695232 1613232 5695376 +1613080 5694848 1612240 5695096 1612648 5695152 1612896 5695232 +1613080 5694848 1612160 5695080 1612240 5695096 1612648 5695152 +1613384 5694896 1601624 5681136 1613080 5694848 1613232 5695376 +1601624 5681136 1613080 5694848 1613384 5694896 1613592 5694904 +1601624 5681136 1613080 5694848 1613592 5694904 1613688 5694912 +1601624 5681136 1613080 5694848 1613688 5694912 1613728 5694936 +1613080 5694848 1613232 5695376 1613384 5694896 1613592 5694904 +1613080 5694848 1613384 5694896 1613592 5694904 1613688 5694912 +1613080 5694848 1601624 5681136 1612160 5695080 1612240 5695096 +1601624 5681136 1612160 5695080 1613080 5694848 1613688 5694912 +1612160 5695080 1613080 5694848 1601624 5681136 1601592 5681216 +1612160 5695080 1612240 5695096 1613080 5694848 1601592 5681216 +1613080 5694848 1613688 5694912 1601624 5681136 1601592 5681216 +1612160 5695080 1613080 5694848 1601592 5681216 1601128 5681664 +1613384 5694896 1613080 5694848 1613232 5695376 1613448 5695424 +1612160 5695080 1612184 5695104 1612240 5695096 1613080 5694848 +1613080 5694848 1612712 5694704 1612160 5695080 1612240 5695096 +1613080 5694848 1612712 5694704 1612240 5695096 1612648 5695152 +1613080 5694848 1612712 5694704 1612648 5695152 1612896 5695232 +1612712 5694704 1612160 5695080 1612240 5695096 1612648 5695152 +1613080 5694848 1601592 5681216 1612712 5694704 1612648 5695152 +1612712 5694704 1601592 5681216 1612160 5695080 1612240 5695096 +1612160 5695080 1612712 5694704 1601592 5681216 1601128 5681664 +1601592 5681216 1612712 5694704 1613080 5694848 1601624 5681136 +1612712 5694704 1612648 5695152 1613080 5694848 1601624 5681136 +1613080 5694848 1613688 5694912 1601624 5681136 1612712 5694704 +1613688 5694912 1613728 5694936 1601624 5681136 1612712 5694704 +1613080 5694848 1613592 5694904 1613688 5694912 1612712 5694704 +1613080 5694848 1613384 5694896 1613592 5694904 1612712 5694704 +1613592 5694904 1613688 5694912 1612712 5694704 1613384 5694896 +1613080 5694848 1613384 5694896 1612712 5694704 1612648 5695152 +1613688 5694912 1601624 5681136 1612712 5694704 1613592 5694904 +1601592 5681216 1612160 5695080 1612712 5694704 1601624 5681136 +1601624 5681136 1601592 5681216 1612712 5694704 1613688 5694912 +1612160 5695080 1612184 5695104 1612240 5695096 1612712 5694704 +1601592 5681216 1612608 5694640 1612712 5694704 1601624 5681136 +1612608 5694640 1612160 5695080 1612712 5694704 1601624 5681136 +1601592 5681216 1612160 5695080 1612608 5694640 1601624 5681136 +1612712 5694704 1612608 5694640 1612160 5695080 1612240 5695096 +1612712 5694704 1612608 5694640 1612240 5695096 1612648 5695152 +1612712 5694704 1612608 5694640 1612648 5695152 1613080 5694848 +1612712 5694704 1601624 5681136 1612608 5694640 1612648 5695152 +1612608 5694640 1601592 5681216 1612160 5695080 1612240 5695096 +1612608 5694640 1612160 5695080 1612240 5695096 1612648 5695152 +1612160 5695080 1612608 5694640 1601592 5681216 1601128 5681664 +1612160 5695080 1612240 5695096 1612608 5694640 1601128 5681664 +1612608 5694640 1601624 5681136 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612608 5694640 +1612160 5695080 1612608 5694640 1601128 5681664 1601088 5681704 +1612160 5695080 1612240 5695096 1612608 5694640 1601088 5681704 +1612160 5695080 1612608 5694640 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612608 5694640 +1612160 5695080 1612240 5695096 1612608 5694640 1602112 5695896 +1612160 5695080 1612608 5694640 1602112 5695896 1602160 5695928 +1612608 5694640 1601128 5681664 1601088 5681704 1602112 5695896 +1612608 5694640 1601592 5681216 1601128 5681664 1601088 5681704 +1612712 5694704 1613688 5694912 1601624 5681136 1612608 5694640 +1613688 5694912 1613728 5694936 1601624 5681136 1612608 5694640 +1612712 5694704 1613592 5694904 1613688 5694912 1612608 5694640 +1612712 5694704 1613384 5694896 1613592 5694904 1612608 5694640 +1612712 5694704 1613080 5694848 1613384 5694896 1612608 5694640 +1613384 5694896 1613592 5694904 1612608 5694640 1613080 5694848 +1613592 5694904 1613688 5694912 1612608 5694640 1613384 5694896 +1612712 5694704 1613080 5694848 1612608 5694640 1612648 5695152 +1601624 5681136 1601592 5681216 1612608 5694640 1613688 5694912 +1613688 5694912 1601624 5681136 1612608 5694640 1613592 5694904 +1612160 5695080 1612184 5695104 1612240 5695096 1612608 5694640 +1601624 5681136 1612592 5694608 1613688 5694912 1613728 5694936 +1612608 5694640 1612592 5694608 1601624 5681136 1601592 5681216 +1612608 5694640 1613688 5694912 1612592 5694608 1601592 5681216 +1612608 5694640 1612592 5694608 1601592 5681216 1601128 5681664 +1612592 5694608 1601624 5681136 1601592 5681216 1601128 5681664 +1612608 5694640 1613688 5694912 1612592 5694608 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612592 5694608 +1612592 5694608 1613688 5694912 1601624 5681136 1601592 5681216 +1612608 5694640 1612592 5694608 1601128 5681664 1601088 5681704 +1612608 5694640 1613688 5694912 1612592 5694608 1601088 5681704 +1612592 5694608 1601592 5681216 1601128 5681664 1601088 5681704 +1612608 5694640 1612592 5694608 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612592 5694608 +1612608 5694640 1613688 5694912 1612592 5694608 1602112 5695896 +1612608 5694640 1612592 5694608 1602112 5695896 1612160 5695080 +1612608 5694640 1612592 5694608 1612160 5695080 1612240 5695096 +1612608 5694640 1613688 5694912 1612592 5694608 1612240 5695096 +1612608 5694640 1612592 5694608 1612240 5695096 1612648 5695152 +1602112 5695896 1602160 5695928 1612160 5695080 1612592 5694608 +1602160 5695928 1612136 5695120 1612160 5695080 1612592 5694608 +1612592 5694608 1602160 5695928 1612160 5695080 1612240 5695096 +1612592 5694608 1601088 5681704 1602112 5695896 1602160 5695928 +1612592 5694608 1601128 5681664 1601088 5681704 1602112 5695896 +1613688 5694912 1612592 5694608 1612608 5694640 1613592 5694904 +1612608 5694640 1613384 5694896 1613592 5694904 1612592 5694608 +1612608 5694640 1613080 5694848 1613384 5694896 1612592 5694608 +1612608 5694640 1612712 5694704 1613080 5694848 1612592 5694608 +1613080 5694848 1613384 5694896 1612592 5694608 1612712 5694704 +1613384 5694896 1613592 5694904 1612592 5694608 1613080 5694848 +1612592 5694608 1612240 5695096 1612608 5694640 1612712 5694704 +1613688 5694912 1601624 5681136 1612592 5694608 1613592 5694904 +1613592 5694904 1613688 5694912 1612592 5694608 1613384 5694896 +1612160 5695080 1612184 5695104 1612240 5695096 1612592 5694608 +1601624 5681136 1612584 5694512 1613688 5694912 1613728 5694936 +1612592 5694608 1612584 5694512 1601624 5681136 1601592 5681216 +1612592 5694608 1612584 5694512 1601592 5681216 1601128 5681664 +1612592 5694608 1612584 5694512 1601128 5681664 1601088 5681704 +1612584 5694512 1601592 5681216 1601128 5681664 1601088 5681704 +1601592 5681216 1601160 5681616 1601128 5681664 1612584 5694512 +1612584 5694512 1601624 5681136 1601592 5681216 1601128 5681664 +1612592 5694608 1613688 5694912 1612584 5694512 1601088 5681704 +1613688 5694912 1612584 5694512 1612592 5694608 1613592 5694904 +1612584 5694512 1601088 5681704 1612592 5694608 1613592 5694904 +1612584 5694512 1613688 5694912 1601624 5681136 1601592 5681216 +1613688 5694912 1601624 5681136 1612584 5694512 1613592 5694904 +1612592 5694608 1612584 5694512 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612584 5694512 +1612584 5694512 1601128 5681664 1601088 5681704 1602112 5695896 +1612592 5694608 1613592 5694904 1612584 5694512 1602112 5695896 +1612592 5694608 1612584 5694512 1602112 5695896 1602160 5695928 +1612592 5694608 1613592 5694904 1612584 5694512 1602160 5695928 +1612592 5694608 1612584 5694512 1602160 5695928 1612160 5695080 +1612592 5694608 1613592 5694904 1612584 5694512 1612160 5695080 +1602160 5695928 1612136 5695120 1612160 5695080 1612584 5694512 +1612592 5694608 1612584 5694512 1612160 5695080 1612240 5695096 +1612584 5694512 1602112 5695896 1602160 5695928 1612160 5695080 +1612584 5694512 1601088 5681704 1602112 5695896 1602160 5695928 +1612592 5694608 1613384 5694896 1613592 5694904 1612584 5694512 +1612592 5694608 1613080 5694848 1613384 5694896 1612584 5694512 +1612592 5694608 1612712 5694704 1613080 5694848 1612584 5694512 +1612592 5694608 1612608 5694640 1612712 5694704 1612584 5694512 +1613080 5694848 1613384 5694896 1612584 5694512 1612712 5694704 +1612592 5694608 1612712 5694704 1612584 5694512 1612160 5695080 +1613592 5694904 1613688 5694912 1612584 5694512 1613384 5694896 +1613384 5694896 1613592 5694904 1612584 5694512 1613080 5694848 +1601624 5681136 1612680 5694440 1613688 5694912 1613728 5694936 +1612584 5694512 1612680 5694440 1601624 5681136 1601592 5681216 +1612584 5694512 1612680 5694440 1601592 5681216 1601128 5681664 +1612584 5694512 1613688 5694912 1612680 5694440 1601592 5681216 +1613688 5694912 1612680 5694440 1612584 5694512 1613592 5694904 +1612584 5694512 1613384 5694896 1613592 5694904 1612680 5694440 +1612680 5694440 1601592 5681216 1612584 5694512 1613384 5694896 +1613592 5694904 1613688 5694912 1612680 5694440 1613384 5694896 +1612680 5694440 1613688 5694912 1601624 5681136 1601592 5681216 +1613688 5694912 1601624 5681136 1612680 5694440 1613592 5694904 +1612584 5694512 1613080 5694848 1613384 5694896 1612680 5694440 +1612584 5694512 1612712 5694704 1613080 5694848 1612680 5694440 +1612584 5694512 1612592 5694608 1612712 5694704 1612680 5694440 +1612592 5694608 1612608 5694640 1612712 5694704 1612680 5694440 +1612592 5694608 1612608 5694640 1612680 5694440 1612584 5694512 +1612712 5694704 1613080 5694848 1612680 5694440 1612608 5694640 +1613384 5694896 1613592 5694904 1612680 5694440 1613080 5694848 +1612584 5694512 1612592 5694608 1612680 5694440 1601592 5681216 +1613080 5694848 1613384 5694896 1612680 5694440 1612712 5694704 +1601624 5681136 1612848 5694408 1613688 5694912 1613728 5694936 +1612680 5694440 1612848 5694408 1601624 5681136 1601592 5681216 +1613688 5694912 1612848 5694408 1612680 5694440 1613592 5694904 +1612680 5694440 1613384 5694896 1613592 5694904 1612848 5694408 +1612680 5694440 1613080 5694848 1613384 5694896 1612848 5694408 +1613384 5694896 1613592 5694904 1612848 5694408 1613080 5694848 +1612848 5694408 1601624 5681136 1612680 5694440 1613080 5694848 +1613592 5694904 1613688 5694912 1612848 5694408 1613384 5694896 +1613688 5694912 1601624 5681136 1612848 5694408 1613592 5694904 +1612680 5694440 1612712 5694704 1613080 5694848 1612848 5694408 +1612680 5694440 1612608 5694640 1612712 5694704 1612848 5694408 +1613080 5694848 1613384 5694896 1612848 5694408 1612712 5694704 +1612680 5694440 1612712 5694704 1612848 5694408 1601624 5681136 +1601624 5681136 1612880 5694392 1613688 5694912 1613728 5694936 +1601624 5681136 1612880 5694392 1613728 5694936 1601592 5681064 +1613728 5694936 1657088 5639464 1601592 5681064 1612880 5694392 +1612880 5694392 1613688 5694912 1613728 5694936 1601592 5681064 +1612848 5694408 1612880 5694392 1601624 5681136 1612680 5694440 +1601624 5681136 1601592 5681216 1612680 5694440 1612880 5694392 +1601592 5681216 1612584 5694512 1612680 5694440 1612880 5694392 +1612680 5694440 1612848 5694408 1612880 5694392 1601592 5681216 +1612848 5694408 1613688 5694912 1612880 5694392 1612680 5694440 +1613688 5694912 1612880 5694392 1612848 5694408 1613592 5694904 +1612848 5694408 1613384 5694896 1613592 5694904 1612880 5694392 +1612848 5694408 1613080 5694848 1613384 5694896 1612880 5694392 +1612848 5694408 1612712 5694704 1613080 5694848 1612880 5694392 +1613384 5694896 1613592 5694904 1612880 5694392 1613080 5694848 +1612880 5694392 1612680 5694440 1612848 5694408 1613080 5694848 +1613592 5694904 1613688 5694912 1612880 5694392 1613384 5694896 +1601624 5681136 1601592 5681216 1612880 5694392 1601592 5681064 +1612880 5694392 1613592 5694904 1613688 5694912 1613728 5694936 +1612880 5694392 1612848 5694408 1613080 5694848 1612896 5694408 +1612848 5694408 1612712 5694704 1613080 5694848 1612896 5694408 +1612848 5694408 1612712 5694704 1612896 5694408 1612880 5694392 +1612880 5694392 1612848 5694408 1612896 5694408 1613592 5694904 +1612880 5694392 1612896 5694408 1613592 5694904 1613688 5694912 +1612880 5694392 1612848 5694408 1612896 5694408 1613688 5694912 +1613080 5694848 1613384 5694896 1612896 5694408 1612712 5694704 +1612880 5694392 1612896 5694408 1613688 5694912 1613728 5694936 +1612896 5694408 1613384 5694896 1613592 5694904 1613688 5694912 +1612848 5694408 1612680 5694440 1612712 5694704 1612896 5694408 +1612880 5694392 1612936 5694392 1601592 5681064 1601624 5681136 +1601592 5681064 1612936 5694392 1613728 5694936 1657088 5639464 +1613728 5694936 1663776 5646144 1657088 5639464 1612936 5694392 +1613728 5694936 1612936 5694392 1612880 5694392 1613688 5694912 +1612880 5694392 1612936 5694392 1601624 5681136 1601592 5681216 +1612880 5694392 1612896 5694408 1613688 5694912 1612936 5694392 +1613688 5694912 1613728 5694936 1612936 5694392 1612896 5694408 +1612896 5694408 1613592 5694904 1613688 5694912 1612936 5694392 +1613688 5694912 1613728 5694936 1612936 5694392 1613592 5694904 +1612896 5694408 1613592 5694904 1612936 5694392 1612880 5694392 +1612896 5694408 1613384 5694896 1613592 5694904 1612936 5694392 +1613592 5694904 1613688 5694912 1612936 5694392 1613384 5694896 +1612896 5694408 1613384 5694896 1612936 5694392 1612880 5694392 +1612896 5694408 1613080 5694848 1613384 5694896 1612936 5694392 +1612896 5694408 1612712 5694704 1613080 5694848 1612936 5694392 +1612896 5694408 1613080 5694848 1612936 5694392 1612880 5694392 +1613384 5694896 1613592 5694904 1612936 5694392 1613080 5694848 +1612880 5694392 1612896 5694408 1612936 5694392 1601624 5681136 +1612936 5694392 1657088 5639464 1601592 5681064 1601624 5681136 +1612936 5694392 1613688 5694912 1613728 5694936 1657088 5639464 +1601592 5681064 1612936 5694392 1657088 5639464 1601560 5681032 +1657088 5639464 1612952 5694360 1612936 5694392 1613728 5694936 +1657088 5639464 1612952 5694360 1613728 5694936 1663776 5646144 +1612936 5694392 1612952 5694360 1601592 5681064 1601624 5681136 +1612936 5694392 1612952 5694360 1601624 5681136 1612880 5694392 +1601624 5681136 1601592 5681216 1612880 5694392 1612952 5694360 +1612880 5694392 1612936 5694392 1612952 5694360 1601592 5681216 +1601592 5681216 1612680 5694440 1612880 5694392 1612952 5694360 +1612880 5694392 1612936 5694392 1612952 5694360 1612680 5694440 +1601592 5681216 1612584 5694512 1612680 5694440 1612952 5694360 +1612680 5694440 1612848 5694408 1612880 5694392 1612952 5694360 +1601592 5681216 1612680 5694440 1612952 5694360 1601624 5681136 +1612936 5694392 1612952 5694360 1612880 5694392 1612896 5694408 +1612952 5694360 1601592 5681064 1601624 5681136 1601592 5681216 +1612952 5694360 1612880 5694392 1612936 5694392 1613728 5694936 +1612936 5694392 1613688 5694912 1613728 5694936 1612952 5694360 +1613728 5694936 1657088 5639464 1612952 5694360 1613688 5694912 +1612936 5694392 1613592 5694904 1613688 5694912 1612952 5694360 +1612936 5694392 1613384 5694896 1613592 5694904 1612952 5694360 +1613592 5694904 1613688 5694912 1612952 5694360 1613384 5694896 +1612936 5694392 1613080 5694848 1613384 5694896 1612952 5694360 +1613384 5694896 1613592 5694904 1612952 5694360 1613080 5694848 +1612936 5694392 1612896 5694408 1613080 5694848 1612952 5694360 +1612936 5694392 1613080 5694848 1612952 5694360 1612880 5694392 +1613688 5694912 1613728 5694936 1612952 5694360 1613592 5694904 +1612952 5694360 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612952 5694360 1613728 5694936 +1601592 5681064 1612952 5694360 1657088 5639464 1601560 5681032 +1612952 5694360 1612936 5694272 1601592 5681064 1601624 5681136 +1612952 5694360 1612936 5694272 1601624 5681136 1601592 5681216 +1612952 5694360 1612936 5694272 1601592 5681216 1612680 5694440 +1601592 5681216 1612584 5694512 1612680 5694440 1612936 5694272 +1612952 5694360 1612936 5694272 1612680 5694440 1612880 5694392 +1612952 5694360 1612936 5694272 1612880 5694392 1612936 5694392 +1612680 5694440 1612848 5694408 1612880 5694392 1612936 5694272 +1612880 5694392 1612952 5694360 1612936 5694272 1612848 5694408 +1612936 5694272 1601592 5681216 1612680 5694440 1612848 5694408 +1612936 5694272 1601624 5681136 1601592 5681216 1612680 5694440 +1612936 5694272 1601592 5681064 1601624 5681136 1601592 5681216 +1612952 5694360 1657088 5639464 1612936 5694272 1612880 5694392 +1657088 5639464 1612936 5694272 1612952 5694360 1613728 5694936 +1612952 5694360 1613688 5694912 1613728 5694936 1612936 5694272 +1657088 5639464 1612936 5694272 1613728 5694936 1663776 5646144 +1613728 5694936 1623296 5701624 1663776 5646144 1612936 5694272 +1612952 5694360 1613592 5694904 1613688 5694912 1612936 5694272 +1613688 5694912 1613728 5694936 1612936 5694272 1613592 5694904 +1612952 5694360 1613384 5694896 1613592 5694904 1612936 5694272 +1612936 5694272 1612880 5694392 1612952 5694360 1613592 5694904 +1613728 5694936 1663776 5646144 1612936 5694272 1613688 5694912 +1612936 5694272 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612936 5694272 1663776 5646144 +1657088 5639464 1612936 5694272 1663776 5646144 1663688 5645984 +1601592 5681064 1612936 5694272 1657088 5639464 1601560 5681032 +1612936 5694272 1612944 5694152 1601592 5681064 1601624 5681136 +1612936 5694272 1612944 5694152 1601624 5681136 1601592 5681216 +1612936 5694272 1612944 5694152 1601592 5681216 1612680 5694440 +1601592 5681216 1612584 5694512 1612680 5694440 1612944 5694152 +1601592 5681216 1601128 5681664 1612584 5694512 1612944 5694152 +1601128 5681664 1601088 5681704 1612584 5694512 1612944 5694152 +1601088 5681704 1602112 5695896 1612584 5694512 1612944 5694152 +1601592 5681216 1601160 5681616 1601128 5681664 1612944 5694152 +1601128 5681664 1601088 5681704 1612944 5694152 1601592 5681216 +1612584 5694512 1612680 5694440 1612944 5694152 1601088 5681704 +1612936 5694272 1612944 5694152 1612680 5694440 1612848 5694408 +1612680 5694440 1612936 5694272 1612944 5694152 1612584 5694512 +1612944 5694152 1601624 5681136 1601592 5681216 1601128 5681664 +1612944 5694152 1601592 5681064 1601624 5681136 1601592 5681216 +1612936 5694272 1657088 5639464 1612944 5694152 1612680 5694440 +1657088 5639464 1612944 5694152 1612936 5694272 1663776 5646144 +1612936 5694272 1613728 5694936 1663776 5646144 1612944 5694152 +1613728 5694936 1623296 5701624 1663776 5646144 1612944 5694152 +1612936 5694272 1613688 5694912 1613728 5694936 1612944 5694152 +1612936 5694272 1613592 5694904 1613688 5694912 1612944 5694152 +1613728 5694936 1663776 5646144 1612944 5694152 1613688 5694912 +1612936 5694272 1612952 5694360 1613592 5694904 1612944 5694152 +1613592 5694904 1613688 5694912 1612944 5694152 1612952 5694360 +1612952 5694360 1613384 5694896 1613592 5694904 1612944 5694152 +1613688 5694912 1613728 5694936 1612944 5694152 1613592 5694904 +1612944 5694152 1612680 5694440 1612936 5694272 1612952 5694360 +1663776 5646144 1657088 5639464 1612944 5694152 1613728 5694936 +1612944 5694152 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612944 5694152 1663776 5646144 +1657088 5639464 1612944 5694152 1663776 5646144 1663688 5645984 +1601592 5681064 1612944 5694152 1657088 5639464 1601560 5681032 +1612944 5694152 1612920 5694072 1601592 5681064 1601624 5681136 +1612944 5694152 1612920 5694072 1601624 5681136 1601592 5681216 +1612944 5694152 1612920 5694072 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612920 5694072 +1612944 5694152 1612920 5694072 1601128 5681664 1601088 5681704 +1612944 5694152 1612920 5694072 1601088 5681704 1612584 5694512 +1601088 5681704 1602112 5695896 1612584 5694512 1612920 5694072 +1601088 5681704 1602016 5695848 1602112 5695896 1612920 5694072 +1612584 5694512 1612944 5694152 1612920 5694072 1602112 5695896 +1612920 5694072 1601128 5681664 1601088 5681704 1602112 5695896 +1612944 5694152 1612920 5694072 1612584 5694512 1612680 5694440 +1612920 5694072 1602112 5695896 1612584 5694512 1612680 5694440 +1612944 5694152 1612920 5694072 1612680 5694440 1612936 5694272 +1612920 5694072 1601592 5681216 1601128 5681664 1601088 5681704 +1612920 5694072 1601624 5681136 1601592 5681216 1601128 5681664 +1612920 5694072 1601592 5681064 1601624 5681136 1601592 5681216 +1612944 5694152 1657088 5639464 1612920 5694072 1612680 5694440 +1657088 5639464 1612920 5694072 1612944 5694152 1663776 5646144 +1612944 5694152 1613728 5694936 1663776 5646144 1612920 5694072 +1613728 5694936 1623296 5701624 1663776 5646144 1612920 5694072 +1623296 5701624 1663880 5646248 1663776 5646144 1612920 5694072 +1613728 5694936 1623192 5701576 1623296 5701624 1612920 5694072 +1613728 5694936 1623016 5701528 1623192 5701576 1612920 5694072 +1623296 5701624 1663776 5646144 1612920 5694072 1623192 5701576 +1612944 5694152 1613688 5694912 1613728 5694936 1612920 5694072 +1612944 5694152 1613592 5694904 1613688 5694912 1612920 5694072 +1613728 5694936 1623192 5701576 1612920 5694072 1613688 5694912 +1612920 5694072 1612680 5694440 1612944 5694152 1613688 5694912 +1663776 5646144 1657088 5639464 1612920 5694072 1623296 5701624 +1612920 5694072 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612920 5694072 1663776 5646144 +1657088 5639464 1612920 5694072 1663776 5646144 1663688 5645984 +1601592 5681064 1612920 5694072 1657088 5639464 1601560 5681032 +1602112 5695896 1602160 5695928 1612584 5694512 1612920 5694072 +1612584 5694512 1612680 5694440 1612920 5694072 1602160 5695928 +1602112 5695896 1602160 5695928 1612920 5694072 1601088 5681704 +1602160 5695928 1612160 5695080 1612584 5694512 1612920 5694072 +1612920 5694072 1612840 5693952 1601592 5681064 1601624 5681136 +1612920 5694072 1612840 5693952 1601624 5681136 1601592 5681216 +1612920 5694072 1612840 5693952 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612840 5693952 +1612920 5694072 1612840 5693952 1601128 5681664 1601088 5681704 +1612920 5694072 1612840 5693952 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612840 5693952 +1612920 5694072 1612840 5693952 1602112 5695896 1602160 5695928 +1612840 5693952 1601088 5681704 1602112 5695896 1602160 5695928 +1612840 5693952 1601128 5681664 1601088 5681704 1602112 5695896 +1612840 5693952 1601592 5681216 1601128 5681664 1601088 5681704 +1612840 5693952 1601624 5681136 1601592 5681216 1601128 5681664 +1612840 5693952 1601592 5681064 1601624 5681136 1601592 5681216 +1612920 5694072 1657088 5639464 1612840 5693952 1602160 5695928 +1657088 5639464 1612840 5693952 1612920 5694072 1663776 5646144 +1612920 5694072 1623296 5701624 1663776 5646144 1612840 5693952 +1623296 5701624 1663880 5646248 1663776 5646144 1612840 5693952 +1612920 5694072 1623192 5701576 1623296 5701624 1612840 5693952 +1612920 5694072 1613728 5694936 1623192 5701576 1612840 5693952 +1613728 5694936 1623016 5701528 1623192 5701576 1612840 5693952 +1623192 5701576 1623296 5701624 1612840 5693952 1613728 5694936 +1612920 5694072 1613688 5694912 1613728 5694936 1612840 5693952 +1623296 5701624 1663776 5646144 1612840 5693952 1623192 5701576 +1612840 5693952 1602160 5695928 1612920 5694072 1613728 5694936 +1663776 5646144 1657088 5639464 1612840 5693952 1623296 5701624 +1657088 5639464 1601592 5681064 1612840 5693952 1663776 5646144 +1612840 5693952 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1612840 5693952 1663776 5646144 1663688 5645984 +1601592 5681064 1612840 5693952 1657088 5639464 1601560 5681032 +1612920 5694072 1612840 5693952 1602160 5695928 1612584 5694512 +1612920 5694072 1612840 5693952 1612584 5694512 1612680 5694440 +1612840 5693952 1602112 5695896 1602160 5695928 1612584 5694512 +1612920 5694072 1612840 5693952 1612680 5694440 1612944 5694152 +1612920 5694072 1613728 5694936 1612840 5693952 1612680 5694440 +1602160 5695928 1612160 5695080 1612584 5694512 1612840 5693952 +1602160 5695928 1612160 5695080 1612840 5693952 1602112 5695896 +1602160 5695928 1612136 5695120 1612160 5695080 1612840 5693952 +1612160 5695080 1612592 5694608 1612584 5694512 1612840 5693952 +1612840 5693952 1612160 5695080 1612584 5694512 1612680 5694440 +1602112 5695896 1612680 5693808 1601088 5681704 1602016 5695848 +1612840 5693952 1612680 5693808 1602112 5695896 1602160 5695928 +1612680 5693808 1601088 5681704 1602112 5695896 1602160 5695928 +1612840 5693952 1612680 5693808 1602160 5695928 1612160 5695080 +1612680 5693808 1602112 5695896 1602160 5695928 1612160 5695080 +1601088 5681704 1612680 5693808 1612840 5693952 1601128 5681664 +1601088 5681704 1602112 5695896 1612680 5693808 1601128 5681664 +1612840 5693952 1601592 5681216 1601128 5681664 1612680 5693808 +1601592 5681216 1601160 5681616 1601128 5681664 1612680 5693808 +1601128 5681664 1601088 5681704 1612680 5693808 1601592 5681216 +1612840 5693952 1601624 5681136 1601592 5681216 1612680 5693808 +1601592 5681216 1601128 5681664 1612680 5693808 1601624 5681136 +1612840 5693952 1601592 5681064 1601624 5681136 1612680 5693808 +1601624 5681136 1601592 5681216 1612680 5693808 1601592 5681064 +1612840 5693952 1601592 5681064 1612680 5693808 1612160 5695080 +1612840 5693952 1657088 5639464 1601592 5681064 1612680 5693808 +1601592 5681064 1601624 5681136 1612680 5693808 1657088 5639464 +1612840 5693952 1657088 5639464 1612680 5693808 1612160 5695080 +1612840 5693952 1663776 5646144 1657088 5639464 1612680 5693808 +1612840 5693952 1623296 5701624 1663776 5646144 1612680 5693808 +1612840 5693952 1663776 5646144 1612680 5693808 1612160 5695080 +1657088 5639464 1601592 5681064 1612680 5693808 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1612680 5693808 +1657088 5639464 1601560 5681032 1601592 5681064 1612680 5693808 +1602160 5695928 1612136 5695120 1612160 5695080 1612680 5693808 +1612160 5695080 1612840 5693952 1612680 5693808 1612136 5695120 +1602160 5695928 1602200 5696008 1612136 5695120 1612680 5693808 +1602160 5695928 1612136 5695120 1612680 5693808 1602112 5695896 +1612840 5693952 1612680 5693808 1612160 5695080 1612584 5694512 +1612680 5693808 1612136 5695120 1612160 5695080 1612584 5694512 +1612840 5693952 1663776 5646144 1612680 5693808 1612584 5694512 +1612160 5695080 1612592 5694608 1612584 5694512 1612680 5693808 +1612840 5693952 1612680 5693808 1612584 5694512 1612680 5694440 +1612840 5693952 1612680 5693808 1612680 5694440 1612920 5694072 +1612840 5693952 1663776 5646144 1612680 5693808 1612680 5694440 +1612680 5693808 1612160 5695080 1612584 5694512 1612680 5694440 +1612680 5693808 1612504 5693584 1601592 5681064 1601624 5681136 +1612680 5693808 1657088 5639464 1612504 5693584 1601624 5681136 +1612504 5693584 1657088 5639464 1601592 5681064 1601624 5681136 +1612680 5693808 1612504 5693584 1601624 5681136 1601592 5681216 +1612680 5693808 1657088 5639464 1612504 5693584 1601592 5681216 +1612680 5693808 1612504 5693584 1601592 5681216 1601128 5681664 +1612680 5693808 1657088 5639464 1612504 5693584 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612504 5693584 +1612680 5693808 1612504 5693584 1601128 5681664 1601088 5681704 +1612680 5693808 1657088 5639464 1612504 5693584 1601088 5681704 +1612680 5693808 1612504 5693584 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612504 5693584 +1612680 5693808 1612504 5693584 1602112 5695896 1602160 5695928 +1612680 5693808 1657088 5639464 1612504 5693584 1602160 5695928 +1612504 5693584 1601088 5681704 1602112 5695896 1602160 5695928 +1612680 5693808 1612504 5693584 1602160 5695928 1612136 5695120 +1612504 5693584 1602112 5695896 1602160 5695928 1612136 5695120 +1612680 5693808 1657088 5639464 1612504 5693584 1612136 5695120 +1602160 5695928 1602200 5696008 1612136 5695120 1612504 5693584 +1612504 5693584 1601128 5681664 1601088 5681704 1602112 5695896 +1612504 5693584 1601592 5681216 1601128 5681664 1601088 5681704 +1612504 5693584 1601624 5681136 1601592 5681216 1601128 5681664 +1612504 5693584 1601592 5681064 1601624 5681136 1601592 5681216 +1657088 5639464 1612504 5693584 1612680 5693808 1663776 5646144 +1612504 5693584 1612136 5695120 1612680 5693808 1663776 5646144 +1612680 5693808 1612840 5693952 1663776 5646144 1612504 5693584 +1612680 5693808 1612840 5693952 1612504 5693584 1612136 5695120 +1612840 5693952 1623296 5701624 1663776 5646144 1612504 5693584 +1623296 5701624 1663880 5646248 1663776 5646144 1612504 5693584 +1612840 5693952 1623192 5701576 1623296 5701624 1612504 5693584 +1612840 5693952 1623296 5701624 1612504 5693584 1612680 5693808 +1657088 5639464 1601592 5681064 1612504 5693584 1663776 5646144 +1663776 5646144 1657088 5639464 1612504 5693584 1623296 5701624 +1657088 5639464 1612504 5693584 1663776 5646144 1663688 5645984 +1601592 5681064 1612504 5693584 1657088 5639464 1601560 5681032 +1612680 5693808 1612504 5693584 1612136 5695120 1612160 5695080 +1612680 5693808 1612840 5693952 1612504 5693584 1612160 5695080 +1612680 5693808 1612504 5693584 1612160 5695080 1612584 5694512 +1612680 5693808 1612840 5693952 1612504 5693584 1612584 5694512 +1612504 5693584 1602160 5695928 1612136 5695120 1612160 5695080 +1612504 5693584 1612136 5695120 1612160 5695080 1612584 5694512 +1612160 5695080 1612592 5694608 1612584 5694512 1612504 5693584 +1612680 5693808 1612504 5693584 1612584 5694512 1612680 5694440 +1612504 5693584 1612440 5693432 1601592 5681064 1601624 5681136 +1612504 5693584 1657088 5639464 1612440 5693432 1601624 5681136 +1612504 5693584 1612440 5693432 1601624 5681136 1601592 5681216 +1612440 5693432 1601592 5681064 1601624 5681136 1601592 5681216 +1612504 5693584 1657088 5639464 1612440 5693432 1601592 5681216 +1612504 5693584 1612440 5693432 1601592 5681216 1601128 5681664 +1612504 5693584 1657088 5639464 1612440 5693432 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612440 5693432 +1612504 5693584 1612440 5693432 1601128 5681664 1601088 5681704 +1612504 5693584 1657088 5639464 1612440 5693432 1601088 5681704 +1612504 5693584 1612440 5693432 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612440 5693432 +1612504 5693584 1612440 5693432 1602112 5695896 1602160 5695928 +1612504 5693584 1612440 5693432 1602160 5695928 1612136 5695120 +1612440 5693432 1602112 5695896 1602160 5695928 1612136 5695120 +1612504 5693584 1657088 5639464 1612440 5693432 1612136 5695120 +1602160 5695928 1602200 5696008 1612136 5695120 1612440 5693432 +1612504 5693584 1612440 5693432 1612136 5695120 1612160 5695080 +1612440 5693432 1602160 5695928 1612136 5695120 1612160 5695080 +1612504 5693584 1657088 5639464 1612440 5693432 1612160 5695080 +1612440 5693432 1601088 5681704 1602112 5695896 1602160 5695928 +1612440 5693432 1601128 5681664 1601088 5681704 1602112 5695896 +1612440 5693432 1601592 5681216 1601128 5681664 1601088 5681704 +1612440 5693432 1601624 5681136 1601592 5681216 1601128 5681664 +1657088 5639464 1612440 5693432 1612504 5693584 1663776 5646144 +1612440 5693432 1612160 5695080 1612504 5693584 1663776 5646144 +1612440 5693432 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612440 5693432 1663776 5646144 +1612504 5693584 1623296 5701624 1663776 5646144 1612440 5693432 +1623296 5701624 1663880 5646248 1663776 5646144 1612440 5693432 +1612504 5693584 1623296 5701624 1612440 5693432 1612160 5695080 +1612504 5693584 1612840 5693952 1623296 5701624 1612440 5693432 +1612504 5693584 1612840 5693952 1612440 5693432 1612160 5695080 +1612840 5693952 1623192 5701576 1623296 5701624 1612440 5693432 +1612840 5693952 1613728 5694936 1623192 5701576 1612440 5693432 +1613728 5694936 1623016 5701528 1623192 5701576 1612440 5693432 +1612840 5693952 1612920 5694072 1613728 5694936 1612440 5693432 +1623192 5701576 1623296 5701624 1612440 5693432 1613728 5694936 +1612840 5693952 1613728 5694936 1612440 5693432 1612504 5693584 +1612504 5693584 1612680 5693808 1612840 5693952 1612440 5693432 +1612504 5693584 1612680 5693808 1612440 5693432 1612160 5695080 +1612840 5693952 1613728 5694936 1612440 5693432 1612680 5693808 +1663776 5646144 1657088 5639464 1612440 5693432 1623296 5701624 +1623296 5701624 1663776 5646144 1612440 5693432 1623192 5701576 +1657088 5639464 1612440 5693432 1663776 5646144 1663688 5645984 +1601592 5681064 1612440 5693432 1657088 5639464 1601560 5681032 +1612504 5693584 1612440 5693432 1612160 5695080 1612584 5694512 +1612440 5693432 1612400 5693248 1601592 5681064 1601624 5681136 +1612440 5693432 1612400 5693248 1601624 5681136 1601592 5681216 +1612440 5693432 1612400 5693248 1601592 5681216 1601128 5681664 +1612400 5693248 1601624 5681136 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612400 5693248 +1612440 5693432 1612400 5693248 1601128 5681664 1601088 5681704 +1612440 5693432 1612400 5693248 1601088 5681704 1602112 5695896 +1601088 5681704 1602016 5695848 1602112 5695896 1612400 5693248 +1612440 5693432 1612400 5693248 1602112 5695896 1602160 5695928 +1612440 5693432 1612400 5693248 1602160 5695928 1612136 5695120 +1612440 5693432 1612400 5693248 1612136 5695120 1612160 5695080 +1602160 5695928 1602200 5696008 1612136 5695120 1612400 5693248 +1612400 5693248 1602112 5695896 1602160 5695928 1612136 5695120 +1602112 5695896 1602160 5695928 1612400 5693248 1602016 5695848 +1612400 5693248 1601128 5681664 1601088 5681704 1602016 5695848 +1612400 5693248 1601592 5681216 1601128 5681664 1601088 5681704 +1612400 5693248 1601592 5681064 1601624 5681136 1601592 5681216 +1612440 5693432 1657088 5639464 1612400 5693248 1612136 5695120 +1657088 5639464 1612400 5693248 1612440 5693432 1663776 5646144 +1657088 5639464 1601592 5681064 1612400 5693248 1663776 5646144 +1612440 5693432 1623296 5701624 1663776 5646144 1612400 5693248 +1623296 5701624 1663880 5646248 1663776 5646144 1612400 5693248 +1612400 5693248 1612136 5695120 1612440 5693432 1623296 5701624 +1663776 5646144 1657088 5639464 1612400 5693248 1623296 5701624 +1612400 5693248 1657088 5639464 1601592 5681064 1601624 5681136 +1612440 5693432 1623192 5701576 1623296 5701624 1612400 5693248 +1612440 5693432 1613728 5694936 1623192 5701576 1612400 5693248 +1613728 5694936 1623016 5701528 1623192 5701576 1612400 5693248 +1612440 5693432 1612840 5693952 1613728 5694936 1612400 5693248 +1612840 5693952 1612920 5694072 1613728 5694936 1612400 5693248 +1613728 5694936 1623192 5701576 1612400 5693248 1612840 5693952 +1612440 5693432 1612680 5693808 1612840 5693952 1612400 5693248 +1612840 5693952 1613728 5694936 1612400 5693248 1612680 5693808 +1612440 5693432 1612504 5693584 1612680 5693808 1612400 5693248 +1623296 5701624 1663776 5646144 1612400 5693248 1623192 5701576 +1612440 5693432 1612680 5693808 1612400 5693248 1612136 5695120 +1623192 5701576 1623296 5701624 1612400 5693248 1613728 5694936 +1657088 5639464 1612400 5693248 1663776 5646144 1663688 5645984 +1601088 5681704 1600992 5681736 1602016 5695848 1612400 5693248 +1601592 5681064 1612400 5693248 1657088 5639464 1601560 5681032 +1657088 5639464 1612408 5693168 1612400 5693248 1663776 5646144 +1657088 5639464 1601592 5681064 1612408 5693168 1663776 5646144 +1612400 5693248 1623296 5701624 1663776 5646144 1612408 5693168 +1623296 5701624 1663880 5646248 1663776 5646144 1612408 5693168 +1663776 5646144 1657088 5639464 1612408 5693168 1623296 5701624 +1612400 5693248 1623192 5701576 1623296 5701624 1612408 5693168 +1623296 5701624 1663776 5646144 1612408 5693168 1623192 5701576 +1612400 5693248 1612408 5693168 1601592 5681064 1601624 5681136 +1612408 5693168 1657088 5639464 1601592 5681064 1601624 5681136 +1612400 5693248 1612408 5693168 1601624 5681136 1601592 5681216 +1612400 5693248 1612408 5693168 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1612408 5693168 +1612400 5693248 1612408 5693168 1601128 5681664 1601088 5681704 +1612408 5693168 1601592 5681216 1601128 5681664 1601088 5681704 +1612400 5693248 1612408 5693168 1601088 5681704 1602016 5695848 +1612400 5693248 1612408 5693168 1602016 5695848 1602112 5695896 +1612400 5693248 1612408 5693168 1602112 5695896 1602160 5695928 +1612408 5693168 1602016 5695848 1602112 5695896 1602160 5695928 +1612400 5693248 1612408 5693168 1602160 5695928 1612136 5695120 +1612408 5693168 1601088 5681704 1602016 5695848 1602112 5695896 +1612408 5693168 1601128 5681664 1601088 5681704 1602016 5695848 +1612408 5693168 1601624 5681136 1601592 5681216 1601128 5681664 +1612408 5693168 1601592 5681064 1601624 5681136 1601592 5681216 +1612408 5693168 1602160 5695928 1612400 5693248 1623192 5701576 +1612400 5693248 1613728 5694936 1623192 5701576 1612408 5693168 +1613728 5694936 1623016 5701528 1623192 5701576 1612408 5693168 +1612400 5693248 1612840 5693952 1613728 5694936 1612408 5693168 +1612840 5693952 1612920 5694072 1613728 5694936 1612408 5693168 +1612400 5693248 1612680 5693808 1612840 5693952 1612408 5693168 +1612840 5693952 1613728 5694936 1612408 5693168 1612680 5693808 +1612400 5693248 1612440 5693432 1612680 5693808 1612408 5693168 +1612680 5693808 1612840 5693952 1612408 5693168 1612440 5693432 +1612440 5693432 1612504 5693584 1612680 5693808 1612408 5693168 +1612680 5693808 1612840 5693952 1612408 5693168 1612504 5693584 +1612440 5693432 1612504 5693584 1612408 5693168 1612400 5693248 +1623192 5701576 1623296 5701624 1612408 5693168 1613728 5694936 +1612400 5693248 1612440 5693432 1612408 5693168 1602160 5695928 +1613728 5694936 1623192 5701576 1612408 5693168 1612840 5693952 +1657088 5639464 1612408 5693168 1663776 5646144 1663688 5645984 +1601088 5681704 1600992 5681736 1602016 5695848 1612408 5693168 +1601592 5681064 1612408 5693168 1657088 5639464 1601560 5681032 +1612408 5693168 1612440 5693112 1601592 5681064 1601624 5681136 +1612408 5693168 1657088 5639464 1612440 5693112 1601624 5681136 +1657088 5639464 1612440 5693112 1612408 5693168 1663776 5646144 +1612408 5693168 1623296 5701624 1663776 5646144 1612440 5693112 +1623296 5701624 1663880 5646248 1663776 5646144 1612440 5693112 +1612440 5693112 1601624 5681136 1612408 5693168 1623296 5701624 +1663776 5646144 1657088 5639464 1612440 5693112 1623296 5701624 +1612440 5693112 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612440 5693112 1663776 5646144 +1612408 5693168 1623192 5701576 1623296 5701624 1612440 5693112 +1623296 5701624 1663776 5646144 1612440 5693112 1623192 5701576 +1612408 5693168 1623192 5701576 1612440 5693112 1601624 5681136 +1612408 5693168 1613728 5694936 1623192 5701576 1612440 5693112 +1613728 5694936 1623016 5701528 1623192 5701576 1612440 5693112 +1612408 5693168 1613728 5694936 1612440 5693112 1601624 5681136 +1623192 5701576 1623296 5701624 1612440 5693112 1613728 5694936 +1612408 5693168 1612440 5693112 1601624 5681136 1601592 5681216 +1612440 5693112 1601592 5681064 1601624 5681136 1601592 5681216 +1612408 5693168 1613728 5694936 1612440 5693112 1601592 5681216 +1612408 5693168 1612440 5693112 1601592 5681216 1601128 5681664 +1612408 5693168 1612440 5693112 1601128 5681664 1601088 5681704 +1612408 5693168 1613728 5694936 1612440 5693112 1601088 5681704 +1601592 5681216 1601160 5681616 1601128 5681664 1612440 5693112 +1612408 5693168 1612440 5693112 1601088 5681704 1602016 5695848 +1612440 5693112 1601128 5681664 1601088 5681704 1602016 5695848 +1612408 5693168 1613728 5694936 1612440 5693112 1602016 5695848 +1612408 5693168 1612440 5693112 1602016 5695848 1602112 5695896 +1612408 5693168 1612440 5693112 1602112 5695896 1602160 5695928 +1612408 5693168 1613728 5694936 1612440 5693112 1602112 5695896 +1612440 5693112 1601088 5681704 1602016 5695848 1602112 5695896 +1612440 5693112 1601592 5681216 1601128 5681664 1601088 5681704 +1612440 5693112 1601624 5681136 1601592 5681216 1601128 5681664 +1612408 5693168 1612840 5693952 1613728 5694936 1612440 5693112 +1612840 5693952 1612920 5694072 1613728 5694936 1612440 5693112 +1612408 5693168 1612840 5693952 1612440 5693112 1602112 5695896 +1612920 5694072 1613688 5694912 1613728 5694936 1612440 5693112 +1612408 5693168 1612680 5693808 1612840 5693952 1612440 5693112 +1612408 5693168 1612680 5693808 1612440 5693112 1602112 5695896 +1612408 5693168 1612504 5693584 1612680 5693808 1612440 5693112 +1612408 5693168 1612504 5693584 1612440 5693112 1602112 5695896 +1612680 5693808 1612840 5693952 1612440 5693112 1612504 5693584 +1612408 5693168 1612440 5693432 1612504 5693584 1612440 5693112 +1612408 5693168 1612440 5693432 1612440 5693112 1602112 5695896 +1612504 5693584 1612680 5693808 1612440 5693112 1612440 5693432 +1612408 5693168 1612400 5693248 1612440 5693432 1612440 5693112 +1612408 5693168 1612400 5693248 1612440 5693112 1602112 5695896 +1612440 5693432 1612504 5693584 1612440 5693112 1612400 5693248 +1613728 5694936 1623192 5701576 1612440 5693112 1612920 5694072 +1612840 5693952 1612920 5694072 1612440 5693112 1612680 5693808 +1657088 5639464 1612440 5693112 1663776 5646144 1663688 5645984 +1601088 5681704 1600992 5681736 1602016 5695848 1612440 5693112 +1601592 5681064 1612440 5693112 1657088 5639464 1601560 5681032 +1663776 5646144 1612544 5693040 1623296 5701624 1663880 5646248 +1623296 5701624 1612544 5693040 1612440 5693112 1623192 5701576 +1612440 5693112 1612544 5693040 1663776 5646144 1657088 5639464 +1612544 5693040 1657088 5639464 1612440 5693112 1623192 5701576 +1612440 5693112 1612544 5693040 1657088 5639464 1601592 5681064 +1612544 5693040 1663776 5646144 1657088 5639464 1601592 5681064 +1612440 5693112 1612544 5693040 1601592 5681064 1601624 5681136 +1612440 5693112 1612544 5693040 1601624 5681136 1601592 5681216 +1612544 5693040 1601592 5681064 1601624 5681136 1601592 5681216 +1612440 5693112 1623192 5701576 1612544 5693040 1601592 5681216 +1612544 5693040 1657088 5639464 1601592 5681064 1601624 5681136 +1612544 5693040 1623296 5701624 1663776 5646144 1657088 5639464 +1623296 5701624 1663776 5646144 1612544 5693040 1623192 5701576 +1612440 5693112 1613728 5694936 1623192 5701576 1612544 5693040 +1613728 5694936 1623016 5701528 1623192 5701576 1612544 5693040 +1623192 5701576 1623296 5701624 1612544 5693040 1613728 5694936 +1612440 5693112 1613728 5694936 1612544 5693040 1601592 5681216 +1612440 5693112 1612920 5694072 1613728 5694936 1612544 5693040 +1612440 5693112 1612840 5693952 1612920 5694072 1612544 5693040 +1612440 5693112 1612840 5693952 1612544 5693040 1601592 5681216 +1612920 5694072 1613688 5694912 1613728 5694936 1612544 5693040 +1612920 5694072 1613728 5694936 1612544 5693040 1612840 5693952 +1613728 5694936 1623192 5701576 1612544 5693040 1612920 5694072 +1612440 5693112 1612544 5693040 1601592 5681216 1601128 5681664 +1612440 5693112 1612680 5693808 1612840 5693952 1612544 5693040 +1612840 5693952 1612920 5694072 1612544 5693040 1612680 5693808 +1612440 5693112 1612680 5693808 1612544 5693040 1601592 5681216 +1612440 5693112 1612504 5693584 1612680 5693808 1612544 5693040 +1612440 5693112 1612504 5693584 1612544 5693040 1601592 5681216 +1612440 5693112 1612440 5693432 1612504 5693584 1612544 5693040 +1612440 5693112 1612440 5693432 1612544 5693040 1601592 5681216 +1612504 5693584 1612680 5693808 1612544 5693040 1612440 5693432 +1612440 5693112 1612400 5693248 1612440 5693432 1612544 5693040 +1612440 5693112 1612400 5693248 1612544 5693040 1601592 5681216 +1612440 5693432 1612504 5693584 1612544 5693040 1612400 5693248 +1612440 5693112 1612408 5693168 1612400 5693248 1612544 5693040 +1612680 5693808 1612840 5693952 1612544 5693040 1612504 5693584 +1663776 5646144 1663688 5645984 1657088 5639464 1612544 5693040 +1657088 5639464 1601560 5681032 1601592 5681064 1612544 5693040 +1663776 5646144 1612736 5692952 1623296 5701624 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1612736 5692952 +1612544 5693040 1612736 5692952 1663776 5646144 1657088 5639464 +1612544 5693040 1612736 5692952 1657088 5639464 1601592 5681064 +1612544 5693040 1612736 5692952 1601592 5681064 1601624 5681136 +1612736 5692952 1657088 5639464 1601592 5681064 1601624 5681136 +1612544 5693040 1612736 5692952 1601624 5681136 1601592 5681216 +1612544 5693040 1612736 5692952 1601592 5681216 1612440 5693112 +1612736 5692952 1601592 5681064 1601624 5681136 1601592 5681216 +1612736 5692952 1663776 5646144 1657088 5639464 1601592 5681064 +1612544 5693040 1623296 5701624 1612736 5692952 1601592 5681216 +1623296 5701624 1612736 5692952 1612544 5693040 1623192 5701576 +1612544 5693040 1613728 5694936 1623192 5701576 1612736 5692952 +1613728 5694936 1623016 5701528 1623192 5701576 1612736 5692952 +1613728 5694936 1613840 5695128 1623016 5701528 1612736 5692952 +1613728 5694936 1623016 5701528 1612736 5692952 1612544 5693040 +1612736 5692952 1601592 5681216 1612544 5693040 1613728 5694936 +1623192 5701576 1623296 5701624 1612736 5692952 1623016 5701528 +1663776 5646144 1657088 5639464 1612736 5692952 1663880 5646248 +1612736 5692952 1623192 5701576 1623296 5701624 1663880 5646248 +1612544 5693040 1612920 5694072 1613728 5694936 1612736 5692952 +1613728 5694936 1623016 5701528 1612736 5692952 1612920 5694072 +1612544 5693040 1612920 5694072 1612736 5692952 1601592 5681216 +1612920 5694072 1613688 5694912 1613728 5694936 1612736 5692952 +1613728 5694936 1623016 5701528 1612736 5692952 1613688 5694912 +1612920 5694072 1612944 5694152 1613688 5694912 1612736 5692952 +1612544 5693040 1612840 5693952 1612920 5694072 1612736 5692952 +1612544 5693040 1612680 5693808 1612840 5693952 1612736 5692952 +1612544 5693040 1612680 5693808 1612736 5692952 1601592 5681216 +1612840 5693952 1612920 5694072 1612736 5692952 1612680 5693808 +1612920 5694072 1613688 5694912 1612736 5692952 1612840 5693952 +1612544 5693040 1612504 5693584 1612680 5693808 1612736 5692952 +1612680 5693808 1612840 5693952 1612736 5692952 1612504 5693584 +1612544 5693040 1612504 5693584 1612736 5692952 1601592 5681216 +1612544 5693040 1612440 5693432 1612504 5693584 1612736 5692952 +1612544 5693040 1612440 5693432 1612736 5692952 1601592 5681216 +1612544 5693040 1612400 5693248 1612440 5693432 1612736 5692952 +1612504 5693584 1612680 5693808 1612736 5692952 1612440 5693432 +1663776 5646144 1663688 5645984 1657088 5639464 1612736 5692952 +1657088 5639464 1601560 5681032 1601592 5681064 1612736 5692952 +1612736 5692952 1612880 5692928 1663880 5646248 1663776 5646144 +1663880 5646248 1612880 5692928 1623296 5701624 1623408 5701720 +1612736 5692952 1612880 5692928 1663776 5646144 1657088 5639464 +1612880 5692928 1663880 5646248 1663776 5646144 1657088 5639464 +1612736 5692952 1612880 5692928 1657088 5639464 1601592 5681064 +1612736 5692952 1612880 5692928 1601592 5681064 1601624 5681136 +1612736 5692952 1612880 5692928 1601624 5681136 1601592 5681216 +1612880 5692928 1657088 5639464 1601592 5681064 1601624 5681136 +1612880 5692928 1663776 5646144 1657088 5639464 1601592 5681064 +1612736 5692952 1623296 5701624 1612880 5692928 1601624 5681136 +1623296 5701624 1612880 5692928 1612736 5692952 1623192 5701576 +1612736 5692952 1623016 5701528 1623192 5701576 1612880 5692928 +1612736 5692952 1613728 5694936 1623016 5701528 1612880 5692928 +1613728 5694936 1613840 5695128 1623016 5701528 1612880 5692928 +1613728 5694936 1613840 5695128 1612880 5692928 1612736 5692952 +1613840 5695128 1621712 5701344 1623016 5701528 1612880 5692928 +1612736 5692952 1613688 5694912 1613728 5694936 1612880 5692928 +1613728 5694936 1613840 5695128 1612880 5692928 1613688 5694912 +1623016 5701528 1623192 5701576 1612880 5692928 1613840 5695128 +1612880 5692928 1601624 5681136 1612736 5692952 1613688 5694912 +1623192 5701576 1623296 5701624 1612880 5692928 1623016 5701528 +1623296 5701624 1663880 5646248 1612880 5692928 1623192 5701576 +1612880 5692928 1623296 5701624 1663880 5646248 1663776 5646144 +1612736 5692952 1612920 5694072 1613688 5694912 1612880 5692928 +1613688 5694912 1613728 5694936 1612880 5692928 1612920 5694072 +1612736 5692952 1612920 5694072 1612880 5692928 1601624 5681136 +1612920 5694072 1612944 5694152 1613688 5694912 1612880 5692928 +1612736 5692952 1612840 5693952 1612920 5694072 1612880 5692928 +1612736 5692952 1612840 5693952 1612880 5692928 1601624 5681136 +1612920 5694072 1613688 5694912 1612880 5692928 1612840 5693952 +1612736 5692952 1612680 5693808 1612840 5693952 1612880 5692928 +1612736 5692952 1612504 5693584 1612680 5693808 1612880 5692928 +1612736 5692952 1612504 5693584 1612880 5692928 1601624 5681136 +1612680 5693808 1612840 5693952 1612880 5692928 1612504 5693584 +1612840 5693952 1612920 5694072 1612880 5692928 1612680 5693808 +1612736 5692952 1612440 5693432 1612504 5693584 1612880 5692928 +1663776 5646144 1663688 5645984 1657088 5639464 1612880 5692928 +1657088 5639464 1601560 5681032 1601592 5681064 1612880 5692928 +1663880 5646248 1613016 5692968 1623296 5701624 1623408 5701720 +1623296 5701624 1613016 5692968 1612880 5692928 1623192 5701576 +1612880 5692928 1623016 5701528 1623192 5701576 1613016 5692968 +1612880 5692928 1613840 5695128 1623016 5701528 1613016 5692968 +1612880 5692928 1613728 5694936 1613840 5695128 1613016 5692968 +1612880 5692928 1613688 5694912 1613728 5694936 1613016 5692968 +1613728 5694936 1613840 5695128 1613016 5692968 1613688 5694912 +1613840 5695128 1621712 5701344 1623016 5701528 1613016 5692968 +1612880 5692928 1612920 5694072 1613688 5694912 1613016 5692968 +1613688 5694912 1613728 5694936 1613016 5692968 1612920 5694072 +1613840 5695128 1623016 5701528 1613016 5692968 1613728 5694936 +1623016 5701528 1623192 5701576 1613016 5692968 1613840 5695128 +1613016 5692968 1663880 5646248 1612880 5692928 1612920 5694072 +1623192 5701576 1623296 5701624 1613016 5692968 1623016 5701528 +1612880 5692928 1613016 5692968 1663880 5646248 1663776 5646144 +1612880 5692928 1613016 5692968 1663776 5646144 1657088 5639464 +1612880 5692928 1613016 5692968 1657088 5639464 1601592 5681064 +1613016 5692968 1663776 5646144 1657088 5639464 1601592 5681064 +1612880 5692928 1613016 5692968 1601592 5681064 1601624 5681136 +1612880 5692928 1613016 5692968 1601624 5681136 1612736 5692952 +1613016 5692968 1657088 5639464 1601592 5681064 1601624 5681136 +1612880 5692928 1612920 5694072 1613016 5692968 1601624 5681136 +1613016 5692968 1663880 5646248 1663776 5646144 1657088 5639464 +1612920 5694072 1612944 5694152 1613688 5694912 1613016 5692968 +1613016 5692968 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1613016 5692968 1623192 5701576 +1612880 5692928 1612840 5693952 1612920 5694072 1613016 5692968 +1612920 5694072 1613688 5694912 1613016 5692968 1612840 5693952 +1612880 5692928 1612840 5693952 1613016 5692968 1601624 5681136 +1612880 5692928 1612680 5693808 1612840 5693952 1613016 5692968 +1612880 5692928 1612680 5693808 1613016 5692968 1601624 5681136 +1612840 5693952 1612920 5694072 1613016 5692968 1612680 5693808 +1612880 5692928 1612504 5693584 1612680 5693808 1613016 5692968 +1612880 5692928 1612736 5692952 1612504 5693584 1613016 5692968 +1612880 5692928 1612736 5692952 1613016 5692968 1601624 5681136 +1612504 5693584 1612680 5693808 1613016 5692968 1612736 5692952 +1612680 5693808 1612840 5693952 1613016 5692968 1612504 5693584 +1612736 5692952 1612440 5693432 1612504 5693584 1613016 5692968 +1663776 5646144 1663688 5645984 1657088 5639464 1613016 5692968 +1657088 5639464 1601560 5681032 1601592 5681064 1613016 5692968 +1623016 5701528 1613112 5693056 1613840 5695128 1621712 5701344 +1613840 5695128 1613112 5693056 1613016 5692968 1613728 5694936 +1613016 5692968 1613688 5694912 1613728 5694936 1613112 5693056 +1613016 5692968 1612920 5694072 1613688 5694912 1613112 5693056 +1613688 5694912 1613728 5694936 1613112 5693056 1612920 5694072 +1613016 5692968 1612840 5693952 1612920 5694072 1613112 5693056 +1612920 5694072 1613688 5694912 1613112 5693056 1612840 5693952 +1613728 5694936 1613840 5695128 1613112 5693056 1613688 5694912 +1613016 5692968 1613112 5693056 1623016 5701528 1623192 5701576 +1613016 5692968 1613112 5693056 1623192 5701576 1623296 5701624 +1613112 5693056 1623016 5701528 1623192 5701576 1623296 5701624 +1612920 5694072 1612944 5694152 1613688 5694912 1613112 5693056 +1612920 5694072 1612944 5694152 1613112 5693056 1612840 5693952 +1613688 5694912 1613728 5694936 1613112 5693056 1612944 5694152 +1613112 5693056 1623296 5701624 1613016 5692968 1612840 5693952 +1613016 5692968 1613112 5693056 1623296 5701624 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1613112 5693056 +1613112 5693056 1623192 5701576 1623296 5701624 1663880 5646248 +1613016 5692968 1613112 5693056 1663880 5646248 1663776 5646144 +1613016 5692968 1613112 5693056 1663776 5646144 1657088 5639464 +1613016 5692968 1612840 5693952 1613112 5693056 1663776 5646144 +1613112 5693056 1623296 5701624 1663880 5646248 1663776 5646144 +1613112 5693056 1613840 5695128 1623016 5701528 1623192 5701576 +1613840 5695128 1623016 5701528 1613112 5693056 1613728 5694936 +1612944 5694152 1613592 5694904 1613688 5694912 1613112 5693056 +1613016 5692968 1612680 5693808 1612840 5693952 1613112 5693056 +1612840 5693952 1612920 5694072 1613112 5693056 1612680 5693808 +1613016 5692968 1612680 5693808 1613112 5693056 1663776 5646144 +1613016 5692968 1612504 5693584 1612680 5693808 1613112 5693056 +1613016 5692968 1612504 5693584 1613112 5693056 1663776 5646144 +1612680 5693808 1612840 5693952 1613112 5693056 1612504 5693584 +1613016 5692968 1612736 5692952 1612504 5693584 1613112 5693056 +1613016 5692968 1612880 5692928 1612736 5692952 1613112 5693056 +1613016 5692968 1612880 5692928 1613112 5693056 1663776 5646144 +1612736 5692952 1612504 5693584 1613112 5693056 1612880 5692928 +1612504 5693584 1612680 5693808 1613112 5693056 1612736 5692952 +1612736 5692952 1612440 5693432 1612504 5693584 1613112 5693056 +1612736 5692952 1612544 5693040 1612440 5693432 1613112 5693056 +1612736 5692952 1612440 5693432 1613112 5693056 1612880 5692928 +1612504 5693584 1612680 5693808 1613112 5693056 1612440 5693432 +1623016 5701528 1613216 5693184 1613840 5695128 1621712 5701344 +1613840 5695128 1613864 5695256 1621712 5701344 1613216 5693184 +1613112 5693056 1613216 5693184 1623016 5701528 1623192 5701576 +1613112 5693056 1613216 5693184 1623192 5701576 1623296 5701624 +1613112 5693056 1613216 5693184 1623296 5701624 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1613216 5693184 +1613216 5693184 1623192 5701576 1623296 5701624 1663880 5646248 +1613112 5693056 1613216 5693184 1663880 5646248 1663776 5646144 +1613216 5693184 1623016 5701528 1623192 5701576 1623296 5701624 +1613112 5693056 1613840 5695128 1613216 5693184 1663880 5646248 +1613840 5695128 1613216 5693184 1613112 5693056 1613728 5694936 +1613112 5693056 1613688 5694912 1613728 5694936 1613216 5693184 +1613112 5693056 1612944 5694152 1613688 5694912 1613216 5693184 +1613688 5694912 1613728 5694936 1613216 5693184 1612944 5694152 +1613112 5693056 1612920 5694072 1612944 5694152 1613216 5693184 +1613112 5693056 1612840 5693952 1612920 5694072 1613216 5693184 +1612944 5694152 1613688 5694912 1613216 5693184 1612920 5694072 +1613112 5693056 1612680 5693808 1612840 5693952 1613216 5693184 +1612840 5693952 1612920 5694072 1613216 5693184 1612680 5693808 +1612920 5694072 1612944 5694152 1613216 5693184 1612840 5693952 +1613216 5693184 1663880 5646248 1613112 5693056 1612680 5693808 +1613728 5694936 1613840 5695128 1613216 5693184 1613688 5694912 +1623016 5701528 1623192 5701576 1613216 5693184 1621712 5701344 +1613216 5693184 1613728 5694936 1613840 5695128 1621712 5701344 +1612944 5694152 1613592 5694904 1613688 5694912 1613216 5693184 +1613112 5693056 1612504 5693584 1612680 5693808 1613216 5693184 +1612680 5693808 1612840 5693952 1613216 5693184 1612504 5693584 +1613112 5693056 1612504 5693584 1613216 5693184 1663880 5646248 +1613112 5693056 1612440 5693432 1612504 5693584 1613216 5693184 +1623016 5701528 1613216 5693184 1621712 5701344 1622880 5701536 +1663880 5646248 1613384 5693288 1623296 5701624 1623408 5701720 +1623296 5701624 1613384 5693288 1613216 5693184 1623192 5701576 +1613216 5693184 1613384 5693288 1663880 5646248 1613112 5693056 +1623296 5701624 1663880 5646248 1613384 5693288 1623192 5701576 +1663880 5646248 1663776 5646144 1613112 5693056 1613384 5693288 +1613112 5693056 1613216 5693184 1613384 5693288 1663776 5646144 +1663776 5646144 1613016 5692968 1613112 5693056 1613384 5693288 +1613112 5693056 1613216 5693184 1613384 5693288 1613016 5692968 +1663776 5646144 1657088 5639464 1613016 5692968 1613384 5693288 +1657088 5639464 1601592 5681064 1613016 5692968 1613384 5693288 +1613016 5692968 1613112 5693056 1613384 5693288 1657088 5639464 +1663776 5646144 1657088 5639464 1613384 5693288 1663880 5646248 +1613216 5693184 1623016 5701528 1623192 5701576 1613384 5693288 +1623192 5701576 1623296 5701624 1613384 5693288 1623016 5701528 +1613216 5693184 1621712 5701344 1623016 5701528 1613384 5693288 +1613216 5693184 1613840 5695128 1621712 5701344 1613384 5693288 +1613840 5695128 1613864 5695256 1621712 5701344 1613384 5693288 +1623016 5701528 1623192 5701576 1613384 5693288 1621712 5701344 +1621712 5701344 1623016 5701528 1613384 5693288 1613840 5695128 +1613384 5693288 1613112 5693056 1613216 5693184 1613840 5695128 +1613216 5693184 1613728 5694936 1613840 5695128 1613384 5693288 +1613840 5695128 1621712 5701344 1613384 5693288 1613728 5694936 +1613216 5693184 1613688 5694912 1613728 5694936 1613384 5693288 +1613216 5693184 1612944 5694152 1613688 5694912 1613384 5693288 +1613216 5693184 1612920 5694072 1612944 5694152 1613384 5693288 +1612944 5694152 1613688 5694912 1613384 5693288 1612920 5694072 +1613216 5693184 1612840 5693952 1612920 5694072 1613384 5693288 +1613216 5693184 1612680 5693808 1612840 5693952 1613384 5693288 +1612920 5694072 1612944 5694152 1613384 5693288 1612840 5693952 +1613688 5694912 1613728 5694936 1613384 5693288 1612944 5694152 +1613216 5693184 1612840 5693952 1613384 5693288 1613112 5693056 +1613728 5694936 1613840 5695128 1613384 5693288 1613688 5694912 +1613384 5693288 1623296 5701624 1663880 5646248 1663776 5646144 +1612944 5694152 1613592 5694904 1613688 5694912 1613384 5693288 +1663776 5646144 1663688 5645984 1657088 5639464 1613384 5693288 +1621712 5701344 1622880 5701536 1623016 5701528 1613384 5693288 +1613384 5693288 1613488 5693384 1623016 5701528 1623192 5701576 +1613384 5693288 1613488 5693384 1623192 5701576 1623296 5701624 +1613384 5693288 1621712 5701344 1613488 5693384 1623296 5701624 +1613384 5693288 1613488 5693384 1623296 5701624 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1613488 5693384 +1613488 5693384 1623192 5701576 1623296 5701624 1663880 5646248 +1613384 5693288 1621712 5701344 1613488 5693384 1663880 5646248 +1613488 5693384 1621712 5701344 1623016 5701528 1623192 5701576 +1613488 5693384 1623016 5701528 1623192 5701576 1623296 5701624 +1621712 5701344 1613488 5693384 1613384 5693288 1613840 5695128 +1613384 5693288 1613728 5694936 1613840 5695128 1613488 5693384 +1621712 5701344 1613488 5693384 1613840 5695128 1613864 5695256 +1613488 5693384 1663880 5646248 1613384 5693288 1613728 5694936 +1621712 5701344 1623016 5701528 1613488 5693384 1613840 5695128 +1613840 5695128 1621712 5701344 1613488 5693384 1613728 5694936 +1613384 5693288 1613688 5694912 1613728 5694936 1613488 5693384 +1613728 5694936 1613840 5695128 1613488 5693384 1613688 5694912 +1613384 5693288 1613688 5694912 1613488 5693384 1663880 5646248 +1613384 5693288 1612944 5694152 1613688 5694912 1613488 5693384 +1613384 5693288 1612920 5694072 1612944 5694152 1613488 5693384 +1613384 5693288 1612840 5693952 1612920 5694072 1613488 5693384 +1612920 5694072 1612944 5694152 1613488 5693384 1612840 5693952 +1613384 5693288 1612840 5693952 1613488 5693384 1663880 5646248 +1613384 5693288 1613216 5693184 1612840 5693952 1613488 5693384 +1612944 5694152 1613688 5694912 1613488 5693384 1612920 5694072 +1613688 5694912 1613728 5694936 1613488 5693384 1612944 5694152 +1613384 5693288 1613488 5693384 1663880 5646248 1663776 5646144 +1613384 5693288 1612840 5693952 1613488 5693384 1663776 5646144 +1613488 5693384 1623296 5701624 1663880 5646248 1663776 5646144 +1613384 5693288 1613488 5693384 1663776 5646144 1657088 5639464 +1612944 5694152 1613592 5694904 1613688 5694912 1613488 5693384 +1623016 5701528 1613488 5693384 1621712 5701344 1622880 5701536 +1621712 5701344 1613584 5693568 1613840 5695128 1613864 5695256 +1613488 5693384 1613584 5693568 1621712 5701344 1623016 5701528 +1613488 5693384 1613584 5693568 1623016 5701528 1623192 5701576 +1613488 5693384 1613840 5695128 1613584 5693568 1623192 5701576 +1613584 5693568 1621712 5701344 1623016 5701528 1623192 5701576 +1613584 5693568 1613840 5695128 1621712 5701344 1623016 5701528 +1613488 5693384 1613584 5693568 1623192 5701576 1623296 5701624 +1613840 5695128 1613584 5693568 1613488 5693384 1613728 5694936 +1613488 5693384 1613688 5694912 1613728 5694936 1613584 5693568 +1613584 5693568 1623192 5701576 1613488 5693384 1613688 5694912 +1613728 5694936 1613840 5695128 1613584 5693568 1613688 5694912 +1613488 5693384 1612944 5694152 1613688 5694912 1613584 5693568 +1613688 5694912 1613728 5694936 1613584 5693568 1612944 5694152 +1613488 5693384 1612944 5694152 1613584 5693568 1623192 5701576 +1613488 5693384 1612920 5694072 1612944 5694152 1613584 5693568 +1613488 5693384 1612840 5693952 1612920 5694072 1613584 5693568 +1613488 5693384 1613384 5693288 1612840 5693952 1613584 5693568 +1613488 5693384 1612840 5693952 1613584 5693568 1623192 5701576 +1612920 5694072 1612944 5694152 1613584 5693568 1612840 5693952 +1612944 5694152 1613688 5694912 1613584 5693568 1612920 5694072 +1613840 5695128 1621712 5701344 1613584 5693568 1613728 5694936 +1612944 5694152 1613592 5694904 1613688 5694912 1613584 5693568 +1613688 5694912 1613728 5694936 1613584 5693568 1613592 5694904 +1612944 5694152 1612952 5694360 1613592 5694904 1613584 5693568 +1612952 5694360 1613384 5694896 1613592 5694904 1613584 5693568 +1612944 5694152 1612952 5694360 1613584 5693568 1612920 5694072 +1612944 5694152 1612936 5694272 1612952 5694360 1613584 5693568 +1613592 5694904 1613688 5694912 1613584 5693568 1612952 5694360 +1621712 5701344 1622880 5701536 1623016 5701528 1613584 5693568 +1621712 5701344 1613656 5693824 1613840 5695128 1613864 5695256 +1613584 5693568 1613656 5693824 1621712 5701344 1623016 5701528 +1613584 5693568 1613656 5693824 1623016 5701528 1623192 5701576 +1613584 5693568 1613840 5695128 1613656 5693824 1623016 5701528 +1613840 5695128 1613656 5693824 1613584 5693568 1613728 5694936 +1613656 5693824 1623016 5701528 1613584 5693568 1613728 5694936 +1613584 5693568 1613688 5694912 1613728 5694936 1613656 5693824 +1613584 5693568 1613592 5694904 1613688 5694912 1613656 5693824 +1613584 5693568 1613592 5694904 1613656 5693824 1623016 5701528 +1613688 5694912 1613728 5694936 1613656 5693824 1613592 5694904 +1613728 5694936 1613840 5695128 1613656 5693824 1613688 5694912 +1613656 5693824 1613840 5695128 1621712 5701344 1623016 5701528 +1613840 5695128 1621712 5701344 1613656 5693824 1613728 5694936 +1613584 5693568 1612952 5694360 1613592 5694904 1613656 5693824 +1613592 5694904 1613688 5694912 1613656 5693824 1612952 5694360 +1613584 5693568 1612952 5694360 1613656 5693824 1623016 5701528 +1613584 5693568 1612944 5694152 1612952 5694360 1613656 5693824 +1613584 5693568 1612944 5694152 1613656 5693824 1623016 5701528 +1612952 5694360 1613384 5694896 1613592 5694904 1613656 5693824 +1613592 5694904 1613688 5694912 1613656 5693824 1613384 5694896 +1613584 5693568 1612920 5694072 1612944 5694152 1613656 5693824 +1613584 5693568 1612920 5694072 1613656 5693824 1623016 5701528 +1612944 5694152 1612952 5694360 1613656 5693824 1612920 5694072 +1613584 5693568 1612840 5693952 1612920 5694072 1613656 5693824 +1612952 5694360 1613080 5694848 1613384 5694896 1613656 5693824 +1612944 5694152 1612936 5694272 1612952 5694360 1613656 5693824 +1612952 5694360 1613384 5694896 1613656 5693824 1612944 5694152 +1621712 5701344 1622880 5701536 1623016 5701528 1613656 5693824 +1621712 5701344 1613752 5694024 1613840 5695128 1613864 5695256 +1621712 5701344 1613752 5694024 1613864 5695256 1621576 5701360 +1613656 5693824 1613752 5694024 1621712 5701344 1623016 5701528 +1613656 5693824 1613752 5694024 1623016 5701528 1613584 5693568 +1623016 5701528 1623192 5701576 1613584 5693568 1613752 5694024 +1613752 5694024 1621712 5701344 1623016 5701528 1613584 5693568 +1613656 5693824 1613840 5695128 1613752 5694024 1613584 5693568 +1613840 5695128 1613752 5694024 1613656 5693824 1613728 5694936 +1613656 5693824 1613688 5694912 1613728 5694936 1613752 5694024 +1613656 5693824 1613592 5694904 1613688 5694912 1613752 5694024 +1613656 5693824 1613384 5694896 1613592 5694904 1613752 5694024 +1613656 5693824 1612952 5694360 1613384 5694896 1613752 5694024 +1613384 5694896 1613592 5694904 1613752 5694024 1612952 5694360 +1613592 5694904 1613688 5694912 1613752 5694024 1613384 5694896 +1613688 5694912 1613728 5694936 1613752 5694024 1613592 5694904 +1613752 5694024 1613584 5693568 1613656 5693824 1612952 5694360 +1613728 5694936 1613840 5695128 1613752 5694024 1613688 5694912 +1621712 5701344 1623016 5701528 1613752 5694024 1613864 5695256 +1613752 5694024 1613728 5694936 1613840 5695128 1613864 5695256 +1612952 5694360 1613080 5694848 1613384 5694896 1613752 5694024 +1613656 5693824 1612944 5694152 1612952 5694360 1613752 5694024 +1613656 5693824 1612920 5694072 1612944 5694152 1613752 5694024 +1612952 5694360 1613384 5694896 1613752 5694024 1612944 5694152 +1613656 5693824 1612944 5694152 1613752 5694024 1613584 5693568 +1612944 5694152 1612936 5694272 1612952 5694360 1613752 5694024 +1621712 5701344 1622880 5701536 1623016 5701528 1613752 5694024 +1613752 5694024 1613800 5694064 1623016 5701528 1613584 5693568 +1623016 5701528 1623192 5701576 1613584 5693568 1613800 5694064 +1613752 5694024 1613800 5694064 1613584 5693568 1613656 5693824 +1613800 5694064 1623016 5701528 1613584 5693568 1613656 5693824 +1621712 5701344 1613800 5694064 1613752 5694024 1613864 5695256 +1621712 5701344 1613800 5694064 1613864 5695256 1621576 5701360 +1613752 5694024 1613840 5695128 1613864 5695256 1613800 5694064 +1613864 5695256 1621712 5701344 1613800 5694064 1613840 5695128 +1613752 5694024 1613840 5695128 1613800 5694064 1613656 5693824 +1613752 5694024 1613728 5694936 1613840 5695128 1613800 5694064 +1613840 5695128 1613864 5695256 1613800 5694064 1613728 5694936 +1613752 5694024 1613688 5694912 1613728 5694936 1613800 5694064 +1613752 5694024 1613592 5694904 1613688 5694912 1613800 5694064 +1613752 5694024 1613384 5694896 1613592 5694904 1613800 5694064 +1613752 5694024 1612952 5694360 1613384 5694896 1613800 5694064 +1613592 5694904 1613688 5694912 1613800 5694064 1613384 5694896 +1613688 5694912 1613728 5694936 1613800 5694064 1613592 5694904 +1613752 5694024 1613384 5694896 1613800 5694064 1613656 5693824 +1613728 5694936 1613840 5695128 1613800 5694064 1613688 5694912 +1613800 5694064 1621712 5701344 1623016 5701528 1613584 5693568 +1621712 5701344 1623016 5701528 1613800 5694064 1613864 5695256 +1623016 5701528 1613800 5694064 1621712 5701344 1622880 5701536 +1613800 5694064 1613800 5694104 1613840 5695128 1613864 5695256 +1613800 5694064 1613800 5694104 1613864 5695256 1621712 5701344 +1613864 5695256 1621576 5701360 1621712 5701344 1613800 5694104 +1613800 5694104 1613840 5695128 1613864 5695256 1621712 5701344 +1613728 5694936 1613800 5694104 1613800 5694064 1613688 5694912 +1613800 5694064 1613592 5694904 1613688 5694912 1613800 5694104 +1613800 5694064 1613384 5694896 1613592 5694904 1613800 5694104 +1613800 5694064 1613752 5694024 1613384 5694896 1613800 5694104 +1613752 5694024 1612952 5694360 1613384 5694896 1613800 5694104 +1613752 5694024 1612944 5694152 1612952 5694360 1613800 5694104 +1613752 5694024 1612952 5694360 1613800 5694104 1613800 5694064 +1613384 5694896 1613592 5694904 1613800 5694104 1612952 5694360 +1613592 5694904 1613688 5694912 1613800 5694104 1613384 5694896 +1613688 5694912 1613728 5694936 1613800 5694104 1613592 5694904 +1613800 5694064 1613752 5694024 1613800 5694104 1621712 5701344 +1613800 5694064 1613800 5694104 1621712 5701344 1623016 5701528 +1613800 5694104 1613728 5694936 1613840 5695128 1613864 5695256 +1613728 5694936 1613840 5695128 1613800 5694104 1613688 5694912 +1612952 5694360 1613080 5694848 1613384 5694896 1613800 5694104 +1621712 5701344 1613840 5694144 1613864 5695256 1621576 5701360 +1613864 5695256 1613840 5694144 1613800 5694104 1613840 5695128 +1613864 5695256 1615968 5699848 1621576 5701360 1613840 5694144 +1613800 5694104 1613840 5694144 1621712 5701344 1613800 5694064 +1621712 5701344 1623016 5701528 1613800 5694064 1613840 5694144 +1613800 5694064 1613800 5694104 1613840 5694144 1623016 5701528 +1623016 5701528 1613584 5693568 1613800 5694064 1613840 5694144 +1623016 5701528 1623192 5701576 1613584 5693568 1613840 5694144 +1613584 5693568 1613656 5693824 1613800 5694064 1613840 5694144 +1613800 5694064 1613800 5694104 1613840 5694144 1613584 5693568 +1623016 5701528 1613584 5693568 1613840 5694144 1621712 5701344 +1613800 5694104 1613728 5694936 1613840 5695128 1613840 5694144 +1613840 5695128 1613864 5695256 1613840 5694144 1613728 5694936 +1613840 5694144 1613800 5694064 1613800 5694104 1613728 5694936 +1613800 5694104 1613688 5694912 1613728 5694936 1613840 5694144 +1613800 5694104 1613592 5694904 1613688 5694912 1613840 5694144 +1613800 5694104 1613384 5694896 1613592 5694904 1613840 5694144 +1613800 5694104 1612952 5694360 1613384 5694896 1613840 5694144 +1613592 5694904 1613688 5694912 1613840 5694144 1613384 5694896 +1613728 5694936 1613840 5695128 1613840 5694144 1613688 5694912 +1613800 5694104 1613384 5694896 1613840 5694144 1613800 5694064 +1613688 5694912 1613728 5694936 1613840 5694144 1613592 5694904 +1621712 5701344 1623016 5701528 1613840 5694144 1621576 5701360 +1613840 5694144 1613840 5695128 1613864 5695256 1621576 5701360 +1621712 5701344 1622880 5701536 1623016 5701528 1613840 5694144 +1613584 5693568 1613904 5694160 1623016 5701528 1623192 5701576 +1613584 5693568 1613904 5694160 1623192 5701576 1613488 5693384 +1613840 5694144 1613904 5694160 1613584 5693568 1613800 5694064 +1613584 5693568 1613656 5693824 1613800 5694064 1613904 5694160 +1613656 5693824 1613752 5694024 1613800 5694064 1613904 5694160 +1613840 5694144 1613904 5694160 1613800 5694064 1613800 5694104 +1613800 5694064 1613840 5694144 1613904 5694160 1613656 5693824 +1623016 5701528 1613904 5694160 1613840 5694144 1621712 5701344 +1613840 5694144 1621576 5701360 1621712 5701344 1613904 5694160 +1613840 5694144 1613864 5695256 1621576 5701360 1613904 5694160 +1613864 5695256 1615968 5699848 1621576 5701360 1613904 5694160 +1621712 5701344 1623016 5701528 1613904 5694160 1621576 5701360 +1621576 5701360 1621712 5701344 1613904 5694160 1613864 5695256 +1613840 5694144 1613864 5695256 1613904 5694160 1613800 5694064 +1613840 5694144 1613840 5695128 1613864 5695256 1613904 5694160 +1613864 5695256 1621576 5701360 1613904 5694160 1613840 5695128 +1613840 5694144 1613728 5694936 1613840 5695128 1613904 5694160 +1613840 5694144 1613688 5694912 1613728 5694936 1613904 5694160 +1613728 5694936 1613840 5695128 1613904 5694160 1613688 5694912 +1613840 5694144 1613592 5694904 1613688 5694912 1613904 5694160 +1613840 5694144 1613688 5694912 1613904 5694160 1613800 5694064 +1613840 5695128 1613864 5695256 1613904 5694160 1613728 5694936 +1613584 5693568 1613656 5693824 1613904 5694160 1623192 5701576 +1613904 5694160 1621712 5701344 1623016 5701528 1623192 5701576 +1623016 5701528 1613904 5694160 1621712 5701344 1622880 5701536 +1613584 5693568 1613984 5694128 1623192 5701576 1613488 5693384 +1623192 5701576 1613984 5694128 1613904 5694160 1623016 5701528 +1623192 5701576 1623296 5701624 1613488 5693384 1613984 5694128 +1613904 5694160 1613984 5694128 1613584 5693568 1613656 5693824 +1613904 5694160 1613984 5694128 1613656 5693824 1613800 5694064 +1613656 5693824 1613752 5694024 1613800 5694064 1613984 5694128 +1613904 5694160 1613984 5694128 1613800 5694064 1613840 5694144 +1613984 5694128 1613584 5693568 1613656 5693824 1613800 5694064 +1613984 5694128 1613800 5694064 1613904 5694160 1623016 5701528 +1613904 5694160 1621712 5701344 1623016 5701528 1613984 5694128 +1623016 5701528 1623192 5701576 1613984 5694128 1621712 5701344 +1613904 5694160 1621576 5701360 1621712 5701344 1613984 5694128 +1613904 5694160 1613864 5695256 1621576 5701360 1613984 5694128 +1613904 5694160 1613840 5695128 1613864 5695256 1613984 5694128 +1613864 5695256 1615968 5699848 1621576 5701360 1613984 5694128 +1615968 5699848 1621488 5701424 1621576 5701360 1613984 5694128 +1613864 5695256 1613832 5695328 1615968 5699848 1613984 5694128 +1621576 5701360 1621712 5701344 1613984 5694128 1615968 5699848 +1613864 5695256 1615968 5699848 1613984 5694128 1613840 5695128 +1613904 5694160 1613728 5694936 1613840 5695128 1613984 5694128 +1613840 5695128 1613864 5695256 1613984 5694128 1613728 5694936 +1613904 5694160 1613688 5694912 1613728 5694936 1613984 5694128 +1613904 5694160 1613728 5694936 1613984 5694128 1613800 5694064 +1621712 5701344 1623016 5701528 1613984 5694128 1621576 5701360 +1613584 5693568 1613656 5693824 1613984 5694128 1613488 5693384 +1613984 5694128 1623016 5701528 1623192 5701576 1613488 5693384 +1621712 5701344 1622880 5701536 1623016 5701528 1613984 5694128 +1613984 5694128 1614056 5694128 1613488 5693384 1613584 5693568 +1613488 5693384 1614056 5694128 1623192 5701576 1623296 5701624 +1613488 5693384 1614056 5694128 1623296 5701624 1663880 5646248 +1613984 5694128 1614056 5694128 1613584 5693568 1613656 5693824 +1614056 5694128 1613488 5693384 1613584 5693568 1613656 5693824 +1613984 5694128 1614056 5694128 1613656 5693824 1613800 5694064 +1613984 5694128 1623192 5701576 1614056 5694128 1613656 5693824 +1623192 5701576 1614056 5694128 1613984 5694128 1623016 5701528 +1613984 5694128 1621712 5701344 1623016 5701528 1614056 5694128 +1613984 5694128 1621576 5701360 1621712 5701344 1614056 5694128 +1621712 5701344 1623016 5701528 1614056 5694128 1621576 5701360 +1613984 5694128 1615968 5699848 1621576 5701360 1614056 5694128 +1615968 5699848 1621488 5701424 1621576 5701360 1614056 5694128 +1613984 5694128 1613864 5695256 1615968 5699848 1614056 5694128 +1613864 5695256 1613832 5695328 1615968 5699848 1614056 5694128 +1615968 5699848 1621576 5701360 1614056 5694128 1613864 5695256 +1613984 5694128 1613840 5695128 1613864 5695256 1614056 5694128 +1613984 5694128 1613728 5694936 1613840 5695128 1614056 5694128 +1613864 5695256 1615968 5699848 1614056 5694128 1613840 5695128 +1613840 5695128 1613864 5695256 1614056 5694128 1613728 5694936 +1613984 5694128 1613904 5694160 1613728 5694936 1614056 5694128 +1613728 5694936 1613840 5695128 1614056 5694128 1613904 5694160 +1613904 5694160 1613688 5694912 1613728 5694936 1614056 5694128 +1621576 5701360 1621712 5701344 1614056 5694128 1615968 5699848 +1614056 5694128 1613656 5693824 1613984 5694128 1613904 5694160 +1623016 5701528 1623192 5701576 1614056 5694128 1621712 5701344 +1614056 5694128 1623296 5701624 1613488 5693384 1613584 5693568 +1621712 5701344 1622880 5701536 1623016 5701528 1614056 5694128 +1614056 5694128 1623016 5701528 1623192 5701576 1623296 5701624 +1613488 5693384 1614120 5694152 1623296 5701624 1663880 5646248 +1623296 5701624 1614120 5694152 1614056 5694128 1623192 5701576 +1614056 5694128 1614120 5694152 1613488 5693384 1613584 5693568 +1614056 5694128 1614120 5694152 1613584 5693568 1613656 5693824 +1614120 5694152 1613584 5693568 1614056 5694128 1623192 5701576 +1614056 5694128 1623016 5701528 1623192 5701576 1614120 5694152 +1623192 5701576 1623296 5701624 1614120 5694152 1623016 5701528 +1614056 5694128 1621712 5701344 1623016 5701528 1614120 5694152 +1614056 5694128 1621576 5701360 1621712 5701344 1614120 5694152 +1614056 5694128 1615968 5699848 1621576 5701360 1614120 5694152 +1615968 5699848 1621488 5701424 1621576 5701360 1614120 5694152 +1621576 5701360 1621712 5701344 1614120 5694152 1615968 5699848 +1614056 5694128 1613864 5695256 1615968 5699848 1614120 5694152 +1613864 5695256 1613832 5695328 1615968 5699848 1614120 5694152 +1614056 5694128 1613840 5695128 1613864 5695256 1614120 5694152 +1613864 5695256 1615968 5699848 1614120 5694152 1613840 5695128 +1614056 5694128 1613728 5694936 1613840 5695128 1614120 5694152 +1614056 5694128 1613904 5694160 1613728 5694936 1614120 5694152 +1613904 5694160 1613688 5694912 1613728 5694936 1614120 5694152 +1613840 5695128 1613864 5695256 1614120 5694152 1613728 5694936 +1613728 5694936 1613840 5695128 1614120 5694152 1613904 5694160 +1614056 5694128 1613984 5694128 1613904 5694160 1614120 5694152 +1613904 5694160 1613728 5694936 1614120 5694152 1613984 5694128 +1615968 5699848 1621576 5701360 1614120 5694152 1613864 5695256 +1621712 5701344 1623016 5701528 1614120 5694152 1621576 5701360 +1621712 5701344 1622880 5701536 1623016 5701528 1614120 5694152 +1614056 5694128 1613984 5694128 1614120 5694152 1613584 5693568 +1623016 5701528 1623192 5701576 1614120 5694152 1621712 5701344 +1614120 5694152 1623296 5701624 1613488 5693384 1613584 5693568 +1623296 5701624 1613488 5693384 1614120 5694152 1623192 5701576 +1621576 5701360 1614216 5694264 1615968 5699848 1621488 5701424 +1614120 5694152 1614216 5694264 1621576 5701360 1621712 5701344 +1615968 5699848 1614216 5694264 1614120 5694152 1613864 5695256 +1615968 5699848 1614216 5694264 1613864 5695256 1613832 5695328 +1614120 5694152 1613840 5695128 1613864 5695256 1614216 5694264 +1614120 5694152 1613728 5694936 1613840 5695128 1614216 5694264 +1613840 5695128 1613864 5695256 1614216 5694264 1613728 5694936 +1614120 5694152 1613904 5694160 1613728 5694936 1614216 5694264 +1614120 5694152 1613984 5694128 1613904 5694160 1614216 5694264 +1613904 5694160 1613688 5694912 1613728 5694936 1614216 5694264 +1613728 5694936 1613840 5695128 1614216 5694264 1613904 5694160 +1613864 5695256 1615968 5699848 1614216 5694264 1613840 5695128 +1614120 5694152 1614216 5694264 1621712 5701344 1623016 5701528 +1614216 5694264 1621576 5701360 1621712 5701344 1623016 5701528 +1621712 5701344 1622880 5701536 1623016 5701528 1614216 5694264 +1614120 5694152 1614216 5694264 1623016 5701528 1623192 5701576 +1614120 5694152 1614216 5694264 1623192 5701576 1623296 5701624 +1614216 5694264 1621712 5701344 1623016 5701528 1623192 5701576 +1614216 5694264 1623016 5701528 1623192 5701576 1623296 5701624 +1614120 5694152 1613904 5694160 1614216 5694264 1623296 5701624 +1614120 5694152 1614216 5694264 1623296 5701624 1613488 5693384 +1623296 5701624 1663880 5646248 1613488 5693384 1614216 5694264 +1614216 5694264 1623192 5701576 1623296 5701624 1613488 5693384 +1614120 5694152 1614216 5694264 1613488 5693384 1613584 5693568 +1614120 5694152 1613904 5694160 1614216 5694264 1613488 5693384 +1614216 5694264 1615968 5699848 1621576 5701360 1621712 5701344 +1615968 5699848 1621576 5701360 1614216 5694264 1613864 5695256 +1615968 5699848 1614256 5694448 1613864 5695256 1613832 5695328 +1613864 5695256 1614256 5694448 1614216 5694264 1613840 5695128 +1614216 5694264 1613728 5694936 1613840 5695128 1614256 5694448 +1614216 5694264 1613904 5694160 1613728 5694936 1614256 5694448 +1613904 5694160 1613688 5694912 1613728 5694936 1614256 5694448 +1613904 5694160 1613688 5694912 1614256 5694448 1614216 5694264 +1613728 5694936 1613840 5695128 1614256 5694448 1613688 5694912 +1613904 5694160 1613840 5694144 1613688 5694912 1614256 5694448 +1614216 5694264 1614120 5694152 1613904 5694160 1614256 5694448 +1613840 5695128 1613864 5695256 1614256 5694448 1613728 5694936 +1614256 5694448 1615968 5699848 1614216 5694264 1613904 5694160 +1614216 5694264 1614256 5694448 1615968 5699848 1621576 5701360 +1615968 5699848 1621488 5701424 1621576 5701360 1614256 5694448 +1614216 5694264 1614256 5694448 1621576 5701360 1621712 5701344 +1614216 5694264 1614256 5694448 1621712 5701344 1623016 5701528 +1614216 5694264 1613904 5694160 1614256 5694448 1621712 5701344 +1614256 5694448 1615968 5699848 1621576 5701360 1621712 5701344 +1614256 5694448 1613864 5695256 1615968 5699848 1621576 5701360 +1613864 5695256 1615968 5699848 1614256 5694448 1613840 5695128 +1615968 5699848 1614280 5694808 1613864 5695256 1613832 5695328 +1615968 5699848 1614280 5694808 1613832 5695328 1613696 5697608 +1613832 5695328 1613640 5697488 1613696 5697608 1614280 5694808 +1614280 5694808 1613864 5695256 1613832 5695328 1613696 5697608 +1615968 5699848 1614280 5694808 1613696 5697608 1613728 5697776 +1614256 5694448 1614280 5694808 1615968 5699848 1621576 5701360 +1615968 5699848 1621488 5701424 1621576 5701360 1614280 5694808 +1614256 5694448 1614280 5694808 1621576 5701360 1621712 5701344 +1614256 5694448 1614280 5694808 1621712 5701344 1614216 5694264 +1614280 5694808 1615968 5699848 1621576 5701360 1621712 5701344 +1614256 5694448 1613864 5695256 1614280 5694808 1621712 5701344 +1613864 5695256 1614280 5694808 1614256 5694448 1613840 5695128 +1614256 5694448 1613728 5694936 1613840 5695128 1614280 5694808 +1614256 5694448 1613688 5694912 1613728 5694936 1614280 5694808 +1614280 5694808 1621712 5701344 1614256 5694448 1613728 5694936 +1613840 5695128 1613864 5695256 1614280 5694808 1613728 5694936 +1615968 5699848 1621576 5701360 1614280 5694808 1613696 5697608 +1614280 5694808 1613840 5695128 1613864 5695256 1613832 5695328 +1613696 5697608 1614344 5695072 1614280 5694808 1613832 5695328 +1613696 5697608 1614344 5695072 1613832 5695328 1613640 5697488 +1613832 5695328 1613528 5697360 1613640 5697488 1614344 5695072 +1614344 5695072 1614280 5694808 1613832 5695328 1613640 5697488 +1614280 5694808 1613864 5695256 1613832 5695328 1614344 5695072 +1613832 5695328 1613640 5697488 1614344 5695072 1613864 5695256 +1615968 5699848 1614344 5695072 1613696 5697608 1613728 5697776 +1614280 5694808 1614344 5695072 1615968 5699848 1621576 5701360 +1615968 5699848 1621488 5701424 1621576 5701360 1614344 5695072 +1614280 5694808 1614344 5695072 1621576 5701360 1621712 5701344 +1614280 5694808 1614344 5695072 1621712 5701344 1614256 5694448 +1621712 5701344 1614216 5694264 1614256 5694448 1614344 5695072 +1614344 5695072 1621576 5701360 1621712 5701344 1614256 5694448 +1614344 5695072 1615968 5699848 1621576 5701360 1621712 5701344 +1614344 5695072 1614256 5694448 1614280 5694808 1613864 5695256 +1614280 5694808 1613840 5695128 1613864 5695256 1614344 5695072 +1613864 5695256 1613832 5695328 1614344 5695072 1613840 5695128 +1614280 5694808 1613728 5694936 1613840 5695128 1614344 5695072 +1614280 5694808 1613840 5695128 1614344 5695072 1614256 5694448 +1614344 5695072 1613696 5697608 1615968 5699848 1621576 5701360 +1613696 5697608 1615968 5699848 1614344 5695072 1613640 5697488 +1621576 5701360 1614440 5695208 1615968 5699848 1621488 5701424 +1614344 5695072 1614440 5695208 1621576 5701360 1621712 5701344 +1614344 5695072 1614440 5695208 1621712 5701344 1614256 5694448 +1621712 5701344 1614216 5694264 1614256 5694448 1614440 5695208 +1614344 5695072 1614440 5695208 1614256 5694448 1614280 5694808 +1614440 5695208 1621712 5701344 1614256 5694448 1614280 5694808 +1614440 5695208 1621576 5701360 1621712 5701344 1614256 5694448 +1615968 5699848 1614440 5695208 1614344 5695072 1613696 5697608 +1615968 5699848 1614440 5695208 1613696 5697608 1613728 5697776 +1614344 5695072 1613696 5697608 1614440 5695208 1614280 5694808 +1614344 5695072 1613640 5697488 1613696 5697608 1614440 5695208 +1614344 5695072 1613832 5695328 1613640 5697488 1614440 5695208 +1613832 5695328 1613528 5697360 1613640 5697488 1614440 5695208 +1613832 5695328 1613744 5695376 1613528 5697360 1614440 5695208 +1613528 5697360 1613640 5697488 1614440 5695208 1613744 5695376 +1613832 5695328 1613744 5695376 1614440 5695208 1614344 5695072 +1614344 5695072 1613864 5695256 1613832 5695328 1614440 5695208 +1613832 5695328 1613744 5695376 1614440 5695208 1613864 5695256 +1614344 5695072 1613840 5695128 1613864 5695256 1614440 5695208 +1613832 5695328 1613792 5695344 1613744 5695376 1614440 5695208 +1613696 5697608 1615968 5699848 1614440 5695208 1613640 5697488 +1614344 5695072 1613864 5695256 1614440 5695208 1614280 5694808 +1613640 5697488 1613696 5697608 1614440 5695208 1613528 5697360 +1614440 5695208 1615968 5699848 1621576 5701360 1621712 5701344 +1615968 5699848 1621576 5701360 1614440 5695208 1613696 5697608 +1613744 5695376 1613312 5697192 1613528 5697360 1614440 5695208 +1621576 5701360 1614568 5695320 1615968 5699848 1621488 5701424 +1614440 5695208 1614568 5695320 1621576 5701360 1621712 5701344 +1614440 5695208 1614568 5695320 1621712 5701344 1614256 5694448 +1621712 5701344 1614216 5694264 1614256 5694448 1614568 5695320 +1621712 5701344 1623016 5701528 1614216 5694264 1614568 5695320 +1623016 5701528 1623192 5701576 1614216 5694264 1614568 5695320 +1621712 5701344 1622880 5701536 1623016 5701528 1614568 5695320 +1614216 5694264 1614256 5694448 1614568 5695320 1623016 5701528 +1614440 5695208 1614568 5695320 1614256 5694448 1614280 5694808 +1614440 5695208 1614568 5695320 1614280 5694808 1614344 5695072 +1614256 5694448 1614280 5694808 1614568 5695320 1614216 5694264 +1614568 5695320 1621576 5701360 1621712 5701344 1623016 5701528 +1614440 5695208 1615968 5699848 1614568 5695320 1614280 5694808 +1615968 5699848 1614568 5695320 1614440 5695208 1613696 5697608 +1615968 5699848 1614568 5695320 1613696 5697608 1613728 5697776 +1615968 5699848 1614568 5695320 1613728 5697776 1613736 5698080 +1614440 5695208 1613640 5697488 1613696 5697608 1614568 5695320 +1614440 5695208 1613528 5697360 1613640 5697488 1614568 5695320 +1614440 5695208 1613744 5695376 1613528 5697360 1614568 5695320 +1614440 5695208 1613832 5695328 1613744 5695376 1614568 5695320 +1613744 5695376 1613528 5697360 1614568 5695320 1613832 5695328 +1614440 5695208 1613864 5695256 1613832 5695328 1614568 5695320 +1613832 5695328 1613792 5695344 1613744 5695376 1614568 5695320 +1613640 5697488 1613696 5697608 1614568 5695320 1613528 5697360 +1613528 5697360 1613640 5697488 1614568 5695320 1613744 5695376 +1614568 5695320 1614280 5694808 1614440 5695208 1613832 5695328 +1614568 5695320 1613640 5697488 1613696 5697608 1613728 5697776 +1614568 5695320 1615968 5699848 1621576 5701360 1621712 5701344 +1615968 5699848 1621576 5701360 1614568 5695320 1613728 5697776 +1613744 5695376 1613312 5697192 1613528 5697360 1614568 5695320 +1623016 5701528 1614696 5695376 1614568 5695320 1621712 5701344 +1614216 5694264 1614696 5695376 1623016 5701528 1623192 5701576 +1623016 5701528 1614696 5695376 1621712 5701344 1622880 5701536 +1614568 5695320 1614696 5695376 1614216 5694264 1614256 5694448 +1614568 5695320 1614696 5695376 1614256 5694448 1614280 5694808 +1614696 5695376 1614216 5694264 1614256 5694448 1614280 5694808 +1614568 5695320 1614696 5695376 1614280 5694808 1614440 5695208 +1614280 5694808 1614344 5695072 1614440 5695208 1614696 5695376 +1614696 5695376 1614256 5694448 1614280 5694808 1614440 5695208 +1614568 5695320 1621576 5701360 1621712 5701344 1614696 5695376 +1621712 5701344 1623016 5701528 1614696 5695376 1621576 5701360 +1614568 5695320 1615968 5699848 1621576 5701360 1614696 5695376 +1615968 5699848 1621488 5701424 1621576 5701360 1614696 5695376 +1621576 5701360 1621712 5701344 1614696 5695376 1615968 5699848 +1614696 5695376 1614440 5695208 1614568 5695320 1615968 5699848 +1614568 5695320 1613728 5697776 1615968 5699848 1614696 5695376 +1613728 5697776 1613736 5698080 1615968 5699848 1614696 5695376 +1614568 5695320 1613696 5697608 1613728 5697776 1614696 5695376 +1614568 5695320 1613640 5697488 1613696 5697608 1614696 5695376 +1613696 5697608 1613728 5697776 1614696 5695376 1613640 5697488 +1614568 5695320 1613528 5697360 1613640 5697488 1614696 5695376 +1614568 5695320 1613744 5695376 1613528 5697360 1614696 5695376 +1614568 5695320 1613832 5695328 1613744 5695376 1614696 5695376 +1613528 5697360 1613640 5697488 1614696 5695376 1613744 5695376 +1613640 5697488 1613696 5697608 1614696 5695376 1613528 5697360 +1615968 5699848 1621576 5701360 1614696 5695376 1613728 5697776 +1614568 5695320 1613744 5695376 1614696 5695376 1614440 5695208 +1613728 5697776 1615968 5699848 1614696 5695376 1613696 5697608 +1614696 5695376 1623016 5701528 1614216 5694264 1614256 5694448 +1623016 5701528 1614216 5694264 1614696 5695376 1621712 5701344 +1613744 5695376 1613312 5697192 1613528 5697360 1614696 5695376 +1614216 5694264 1614856 5695400 1623016 5701528 1623192 5701576 +1614216 5694264 1614856 5695400 1623192 5701576 1623296 5701624 +1614696 5695376 1614856 5695400 1614216 5694264 1614256 5694448 +1614696 5695376 1614856 5695400 1614256 5694448 1614280 5694808 +1614696 5695376 1614856 5695400 1614280 5694808 1614440 5695208 +1614856 5695400 1614256 5694448 1614280 5694808 1614440 5695208 +1614280 5694808 1614344 5695072 1614440 5695208 1614856 5695400 +1614696 5695376 1614856 5695400 1614440 5695208 1614568 5695320 +1614856 5695400 1614216 5694264 1614256 5694448 1614280 5694808 +1614696 5695376 1623016 5701528 1614856 5695400 1614440 5695208 +1623016 5701528 1614856 5695400 1614696 5695376 1621712 5701344 +1614696 5695376 1621576 5701360 1621712 5701344 1614856 5695400 +1623016 5701528 1614856 5695400 1621712 5701344 1622880 5701536 +1614696 5695376 1615968 5699848 1621576 5701360 1614856 5695400 +1615968 5699848 1621488 5701424 1621576 5701360 1614856 5695400 +1621576 5701360 1621712 5701344 1614856 5695400 1615968 5699848 +1614696 5695376 1613728 5697776 1615968 5699848 1614856 5695400 +1613728 5697776 1613736 5698080 1615968 5699848 1614856 5695400 +1615968 5699848 1621576 5701360 1614856 5695400 1613728 5697776 +1614696 5695376 1613696 5697608 1613728 5697776 1614856 5695400 +1614696 5695376 1613640 5697488 1613696 5697608 1614856 5695400 +1614696 5695376 1613528 5697360 1613640 5697488 1614856 5695400 +1613728 5697776 1615968 5699848 1614856 5695400 1613696 5697608 +1613696 5697608 1613728 5697776 1614856 5695400 1613640 5697488 +1614856 5695400 1614440 5695208 1614696 5695376 1613640 5697488 +1621712 5701344 1623016 5701528 1614856 5695400 1621576 5701360 +1614216 5694264 1614256 5694448 1614856 5695400 1623192 5701576 +1614856 5695400 1621712 5701344 1623016 5701528 1623192 5701576 +1623192 5701576 1615056 5695464 1614856 5695400 1623016 5701528 +1614216 5694264 1615056 5695464 1623192 5701576 1623296 5701624 +1614856 5695400 1615056 5695464 1614216 5694264 1614256 5694448 +1614856 5695400 1615056 5695464 1614256 5694448 1614280 5694808 +1615056 5695464 1614256 5694448 1614856 5695400 1623016 5701528 +1614856 5695400 1621712 5701344 1623016 5701528 1615056 5695464 +1623016 5701528 1623192 5701576 1615056 5695464 1621712 5701344 +1621712 5701344 1622880 5701536 1623016 5701528 1615056 5695464 +1614856 5695400 1621576 5701360 1621712 5701344 1615056 5695464 +1614856 5695400 1615968 5699848 1621576 5701360 1615056 5695464 +1615968 5699848 1621488 5701424 1621576 5701360 1615056 5695464 +1614856 5695400 1613728 5697776 1615968 5699848 1615056 5695464 +1615968 5699848 1621576 5701360 1615056 5695464 1613728 5697776 +1613728 5697776 1613736 5698080 1615968 5699848 1615056 5695464 +1614856 5695400 1613696 5697608 1613728 5697776 1615056 5695464 +1613728 5697776 1615968 5699848 1615056 5695464 1613696 5697608 +1614856 5695400 1613640 5697488 1613696 5697608 1615056 5695464 +1614856 5695400 1614696 5695376 1613640 5697488 1615056 5695464 +1614696 5695376 1613528 5697360 1613640 5697488 1615056 5695464 +1613696 5697608 1613728 5697776 1615056 5695464 1613640 5697488 +1613640 5697488 1613696 5697608 1615056 5695464 1614696 5695376 +1621576 5701360 1621712 5701344 1615056 5695464 1615968 5699848 +1614856 5695400 1614696 5695376 1615056 5695464 1614256 5694448 +1621712 5701344 1623016 5701528 1615056 5695464 1621576 5701360 +1615056 5695464 1623192 5701576 1614216 5694264 1614256 5694448 +1623192 5701576 1614216 5694264 1615056 5695464 1623016 5701528 +1615056 5695464 1615200 5695576 1623016 5701528 1623192 5701576 +1623016 5701528 1615200 5695576 1621712 5701344 1622880 5701536 +1621712 5701344 1615200 5695576 1615056 5695464 1621576 5701360 +1615056 5695464 1615968 5699848 1621576 5701360 1615200 5695576 +1615968 5699848 1621488 5701424 1621576 5701360 1615200 5695576 +1615056 5695464 1613728 5697776 1615968 5699848 1615200 5695576 +1613728 5697776 1613736 5698080 1615968 5699848 1615200 5695576 +1615056 5695464 1613696 5697608 1613728 5697776 1615200 5695576 +1613728 5697776 1615968 5699848 1615200 5695576 1613696 5697608 +1615056 5695464 1613640 5697488 1613696 5697608 1615200 5695576 +1613696 5697608 1613728 5697776 1615200 5695576 1613640 5697488 +1615056 5695464 1614696 5695376 1613640 5697488 1615200 5695576 +1615056 5695464 1614856 5695400 1614696 5695376 1615200 5695576 +1614696 5695376 1613528 5697360 1613640 5697488 1615200 5695576 +1614696 5695376 1613744 5695376 1613528 5697360 1615200 5695576 +1613640 5697488 1613696 5697608 1615200 5695576 1613528 5697360 +1614696 5695376 1613528 5697360 1615200 5695576 1614856 5695400 +1615968 5699848 1621576 5701360 1615200 5695576 1613728 5697776 +1621576 5701360 1621712 5701344 1615200 5695576 1615968 5699848 +1615056 5695464 1614856 5695400 1615200 5695576 1623192 5701576 +1615056 5695464 1615200 5695576 1623192 5701576 1614216 5694264 +1615200 5695576 1623016 5701528 1623192 5701576 1614216 5694264 +1623192 5701576 1623296 5701624 1614216 5694264 1615200 5695576 +1615056 5695464 1615200 5695576 1614216 5694264 1614256 5694448 +1615056 5695464 1614856 5695400 1615200 5695576 1614216 5694264 +1615200 5695576 1621712 5701344 1623016 5701528 1623192 5701576 +1621712 5701344 1623016 5701528 1615200 5695576 1621576 5701360 +1621576 5701360 1615376 5695816 1615968 5699848 1621488 5701424 +1615968 5699848 1615376 5695816 1615200 5695576 1613728 5697776 +1615200 5695576 1613696 5697608 1613728 5697776 1615376 5695816 +1615968 5699848 1615376 5695816 1613728 5697776 1613736 5698080 +1615200 5695576 1613640 5697488 1613696 5697608 1615376 5695816 +1613696 5697608 1613728 5697776 1615376 5695816 1613640 5697488 +1615200 5695576 1613528 5697360 1613640 5697488 1615376 5695816 +1613640 5697488 1613696 5697608 1615376 5695816 1613528 5697360 +1615200 5695576 1614696 5695376 1613528 5697360 1615376 5695816 +1614696 5695376 1613744 5695376 1613528 5697360 1615376 5695816 +1613528 5697360 1613640 5697488 1615376 5695816 1614696 5695376 +1615200 5695576 1614856 5695400 1614696 5695376 1615376 5695816 +1615200 5695576 1615056 5695464 1614856 5695400 1615376 5695816 +1614696 5695376 1613528 5697360 1615376 5695816 1614856 5695400 +1613728 5697776 1615968 5699848 1615376 5695816 1613696 5697608 +1615200 5695576 1615376 5695816 1621576 5701360 1621712 5701344 +1615376 5695816 1621712 5701344 1615200 5695576 1614856 5695400 +1615200 5695576 1615376 5695816 1621712 5701344 1623016 5701528 +1621712 5701344 1622880 5701536 1623016 5701528 1615376 5695816 +1615376 5695816 1621576 5701360 1621712 5701344 1623016 5701528 +1615200 5695576 1615376 5695816 1623016 5701528 1623192 5701576 +1615200 5695576 1615376 5695816 1623192 5701576 1614216 5694264 +1615200 5695576 1614856 5695400 1615376 5695816 1623192 5701576 +1615376 5695816 1621712 5701344 1623016 5701528 1623192 5701576 +1615376 5695816 1615968 5699848 1621576 5701360 1621712 5701344 +1615968 5699848 1621576 5701360 1615376 5695816 1613728 5697776 +1621576 5701360 1615512 5696024 1615968 5699848 1621488 5701424 +1615376 5695816 1615512 5696024 1621576 5701360 1621712 5701344 +1615376 5695816 1615512 5696024 1621712 5701344 1623016 5701528 +1621712 5701344 1622880 5701536 1623016 5701528 1615512 5696024 +1615376 5695816 1615512 5696024 1623016 5701528 1623192 5701576 +1615512 5696024 1621712 5701344 1623016 5701528 1623192 5701576 +1615376 5695816 1615512 5696024 1623192 5701576 1615200 5695576 +1615512 5696024 1621576 5701360 1621712 5701344 1623016 5701528 +1615376 5695816 1615968 5699848 1615512 5696024 1623192 5701576 +1615968 5699848 1615512 5696024 1615376 5695816 1613728 5697776 +1615968 5699848 1621576 5701360 1615512 5696024 1613728 5697776 +1615968 5699848 1615512 5696024 1613728 5697776 1613736 5698080 +1615968 5699848 1621576 5701360 1615512 5696024 1613736 5698080 +1615968 5699848 1615512 5696024 1613736 5698080 1614856 5699920 +1615376 5695816 1613696 5697608 1613728 5697776 1615512 5696024 +1615376 5695816 1613640 5697488 1613696 5697608 1615512 5696024 +1615376 5695816 1613528 5697360 1613640 5697488 1615512 5696024 +1613640 5697488 1613696 5697608 1615512 5696024 1613528 5697360 +1615376 5695816 1614696 5695376 1613528 5697360 1615512 5696024 +1613696 5697608 1613728 5697776 1615512 5696024 1613640 5697488 +1615512 5696024 1623192 5701576 1615376 5695816 1613528 5697360 +1615512 5696024 1613696 5697608 1613728 5697776 1613736 5698080 +1615512 5696024 1615968 5699848 1621576 5701360 1621712 5701344 +1621576 5701360 1615632 5696264 1615968 5699848 1621488 5701424 +1615968 5699848 1615632 5696264 1615512 5696024 1613736 5698080 +1615632 5696264 1621576 5701360 1615512 5696024 1613736 5698080 +1615968 5699848 1621576 5701360 1615632 5696264 1613736 5698080 +1615968 5699848 1615632 5696264 1613736 5698080 1614856 5699920 +1615512 5696024 1613728 5697776 1613736 5698080 1615632 5696264 +1613736 5698080 1615968 5699848 1615632 5696264 1613728 5697776 +1615512 5696024 1613728 5697776 1615632 5696264 1621576 5701360 +1615512 5696024 1613696 5697608 1613728 5697776 1615632 5696264 +1615512 5696024 1613696 5697608 1615632 5696264 1621576 5701360 +1613728 5697776 1613736 5698080 1615632 5696264 1613696 5697608 +1615512 5696024 1613640 5697488 1613696 5697608 1615632 5696264 +1615512 5696024 1613528 5697360 1613640 5697488 1615632 5696264 +1615512 5696024 1613640 5697488 1615632 5696264 1621576 5701360 +1613696 5697608 1613728 5697776 1615632 5696264 1613640 5697488 +1615512 5696024 1615632 5696264 1621576 5701360 1621712 5701344 +1615512 5696024 1613640 5697488 1615632 5696264 1621712 5701344 +1615632 5696264 1615968 5699848 1621576 5701360 1621712 5701344 +1615512 5696024 1615632 5696264 1621712 5701344 1623016 5701528 +1615512 5696024 1613640 5697488 1615632 5696264 1623016 5701528 +1621712 5701344 1622880 5701536 1623016 5701528 1615632 5696264 +1615512 5696024 1615632 5696264 1623016 5701528 1623192 5701576 +1615632 5696264 1621576 5701360 1621712 5701344 1623016 5701528 +1621576 5701360 1615680 5696424 1615968 5699848 1621488 5701424 +1615632 5696264 1615680 5696424 1621576 5701360 1621712 5701344 +1615632 5696264 1615968 5699848 1615680 5696424 1621712 5701344 +1615968 5699848 1615680 5696424 1615632 5696264 1613736 5698080 +1615632 5696264 1613728 5697776 1613736 5698080 1615680 5696424 +1615680 5696424 1621712 5701344 1615632 5696264 1613728 5697776 +1613736 5698080 1615968 5699848 1615680 5696424 1613728 5697776 +1615680 5696424 1615968 5699848 1621576 5701360 1621712 5701344 +1615968 5699848 1621576 5701360 1615680 5696424 1613736 5698080 +1615968 5699848 1615680 5696424 1613736 5698080 1614856 5699920 +1615632 5696264 1613696 5697608 1613728 5697776 1615680 5696424 +1613728 5697776 1613736 5698080 1615680 5696424 1613696 5697608 +1615632 5696264 1613696 5697608 1615680 5696424 1621712 5701344 +1615632 5696264 1613640 5697488 1613696 5697608 1615680 5696424 +1615632 5696264 1613640 5697488 1615680 5696424 1621712 5701344 +1613696 5697608 1613728 5697776 1615680 5696424 1613640 5697488 +1615632 5696264 1615512 5696024 1613640 5697488 1615680 5696424 +1615632 5696264 1615680 5696424 1621712 5701344 1623016 5701528 +1613736 5698080 1615696 5696632 1615680 5696424 1613728 5697776 +1615680 5696424 1613696 5697608 1613728 5697776 1615696 5696632 +1613728 5697776 1613736 5698080 1615696 5696632 1613696 5697608 +1615696 5696632 1615968 5699848 1615680 5696424 1613696 5697608 +1615680 5696424 1615696 5696632 1615968 5699848 1621576 5701360 +1615968 5699848 1621488 5701424 1621576 5701360 1615696 5696632 +1615680 5696424 1615696 5696632 1621576 5701360 1621712 5701344 +1615680 5696424 1613696 5697608 1615696 5696632 1621576 5701360 +1615696 5696632 1613736 5698080 1615968 5699848 1621576 5701360 +1613736 5698080 1615968 5699848 1615696 5696632 1613728 5697776 +1615968 5699848 1615696 5696632 1613736 5698080 1614856 5699920 +1615680 5696424 1613640 5697488 1613696 5697608 1615696 5696632 +1613696 5697608 1613728 5697776 1615696 5696632 1613640 5697488 +1615680 5696424 1613640 5697488 1615696 5696632 1621576 5701360 +1615680 5696424 1615632 5696264 1613640 5697488 1615696 5696632 +1615680 5696424 1615632 5696264 1615696 5696632 1621576 5701360 +1613640 5697488 1613696 5697608 1615696 5696632 1615632 5696264 +1615632 5696264 1615512 5696024 1613640 5697488 1615696 5696632 +1615512 5696024 1613528 5697360 1613640 5697488 1615696 5696632 +1613640 5697488 1613696 5697608 1615696 5696632 1615512 5696024 +1615632 5696264 1615512 5696024 1615696 5696632 1615680 5696424 +1615696 5696632 1615648 5697056 1615968 5699848 1621576 5701360 +1615968 5699848 1621488 5701424 1621576 5701360 1615648 5697056 +1615696 5696632 1615648 5697056 1621576 5701360 1615680 5696424 +1615696 5696632 1613736 5698080 1615648 5697056 1621576 5701360 +1613736 5698080 1615648 5697056 1615696 5696632 1613728 5697776 +1615696 5696632 1613696 5697608 1613728 5697776 1615648 5697056 +1615696 5696632 1613640 5697488 1613696 5697608 1615648 5697056 +1613696 5697608 1613728 5697776 1615648 5697056 1613640 5697488 +1615648 5697056 1621576 5701360 1615696 5696632 1613640 5697488 +1613728 5697776 1613736 5698080 1615648 5697056 1613696 5697608 +1615648 5697056 1613736 5698080 1615968 5699848 1621576 5701360 +1613736 5698080 1615968 5699848 1615648 5697056 1613728 5697776 +1615968 5699848 1615648 5697056 1613736 5698080 1614856 5699920 +1615968 5699848 1621576 5701360 1615648 5697056 1614856 5699920 +1615648 5697056 1613728 5697776 1613736 5698080 1614856 5699920 +1613736 5698080 1613704 5698312 1614856 5699920 1615648 5697056 +1613736 5698080 1613704 5698312 1615648 5697056 1613728 5697776 +1613704 5698312 1613808 5699080 1614856 5699920 1615648 5697056 +1614856 5699920 1615968 5699848 1615648 5697056 1613704 5698312 +1615696 5696632 1615512 5696024 1613640 5697488 1615648 5697056 +1615968 5699848 1615648 5697056 1614856 5699920 1615392 5700008 +1615648 5697056 1615528 5697784 1615968 5699848 1621576 5701360 +1614856 5699920 1615528 5697784 1615648 5697056 1613704 5698312 +1615528 5697784 1615968 5699848 1615648 5697056 1613704 5698312 +1614856 5699920 1615968 5699848 1615528 5697784 1613704 5698312 +1615648 5697056 1613736 5698080 1613704 5698312 1615528 5697784 +1615648 5697056 1613736 5698080 1615528 5697784 1615968 5699848 +1615648 5697056 1613728 5697776 1613736 5698080 1615528 5697784 +1615648 5697056 1613696 5697608 1613728 5697776 1615528 5697784 +1615648 5697056 1613640 5697488 1613696 5697608 1615528 5697784 +1615648 5697056 1613696 5697608 1615528 5697784 1615968 5699848 +1613728 5697776 1613736 5698080 1615528 5697784 1613696 5697608 +1613736 5698080 1613704 5698312 1615528 5697784 1613728 5697776 +1614856 5699920 1615528 5697784 1613704 5698312 1613808 5699080 +1614856 5699920 1615968 5699848 1615528 5697784 1613808 5699080 +1613704 5698312 1613728 5698992 1613808 5699080 1615528 5697784 +1613704 5698312 1613808 5699080 1615528 5697784 1613736 5698080 +1614856 5699920 1615528 5697784 1613808 5699080 1614728 5699896 +1613808 5699080 1613856 5699232 1614728 5699896 1615528 5697784 +1614856 5699920 1615968 5699848 1615528 5697784 1614728 5699896 +1615528 5697784 1613704 5698312 1613808 5699080 1614728 5699896 +1615968 5699848 1615528 5697784 1614856 5699920 1615392 5700008 +1614856 5699920 1615072 5700064 1615392 5700008 1615528 5697784 +1615968 5699848 1615648 5697056 1615528 5697784 1615392 5700008 +1615528 5697784 1614728 5699896 1614856 5699920 1615392 5700008 +1615968 5699848 1615528 5697784 1615392 5700008 1615600 5700000 +1615392 5700008 1615456 5698048 1614856 5699920 1615072 5700064 +1614856 5699920 1615456 5698048 1615528 5697784 1614728 5699896 +1615456 5698048 1615392 5700008 1615528 5697784 1614728 5699896 +1614856 5699920 1615392 5700008 1615456 5698048 1614728 5699896 +1615528 5697784 1613808 5699080 1614728 5699896 1615456 5698048 +1613808 5699080 1613856 5699232 1614728 5699896 1615456 5698048 +1615528 5697784 1613808 5699080 1615456 5698048 1615392 5700008 +1614728 5699896 1614856 5699920 1615456 5698048 1613856 5699232 +1615528 5697784 1613704 5698312 1613808 5699080 1615456 5698048 +1615528 5697784 1613704 5698312 1615456 5698048 1615392 5700008 +1613704 5698312 1613728 5698992 1613808 5699080 1615456 5698048 +1615528 5697784 1613736 5698080 1613704 5698312 1615456 5698048 +1615528 5697784 1613736 5698080 1615456 5698048 1615392 5700008 +1615528 5697784 1613728 5697776 1613736 5698080 1615456 5698048 +1615528 5697784 1613696 5697608 1613728 5697776 1615456 5698048 +1615528 5697784 1613728 5697776 1615456 5698048 1615392 5700008 +1613704 5698312 1613808 5699080 1615456 5698048 1613736 5698080 +1613736 5698080 1613704 5698312 1615456 5698048 1613728 5697776 +1613856 5699232 1614600 5699912 1614728 5699896 1615456 5698048 +1613808 5699080 1613856 5699232 1615456 5698048 1613704 5698312 +1615528 5697784 1615456 5698048 1615392 5700008 1615968 5699848 +1615528 5697784 1615456 5698048 1615968 5699848 1615648 5697056 +1615528 5697784 1613728 5697776 1615456 5698048 1615968 5699848 +1615456 5698048 1614856 5699920 1615392 5700008 1615968 5699848 +1615392 5700008 1615600 5700000 1615968 5699848 1615456 5698048 +1615392 5700008 1615456 5698128 1615456 5698048 1614856 5699920 +1615392 5700008 1615456 5698128 1614856 5699920 1615072 5700064 +1615456 5698128 1615968 5699848 1615456 5698048 1614856 5699920 +1615456 5698048 1614728 5699896 1614856 5699920 1615456 5698128 +1615456 5698048 1613856 5699232 1614728 5699896 1615456 5698128 +1615456 5698048 1613808 5699080 1613856 5699232 1615456 5698128 +1613856 5699232 1614728 5699896 1615456 5698128 1613808 5699080 +1614856 5699920 1615392 5700008 1615456 5698128 1614728 5699896 +1615456 5698048 1613808 5699080 1615456 5698128 1615968 5699848 +1614728 5699896 1614856 5699920 1615456 5698128 1613856 5699232 +1615392 5700008 1615968 5699848 1615456 5698128 1614856 5699920 +1615968 5699848 1615456 5698128 1615392 5700008 1615600 5700000 +1613856 5699232 1614600 5699912 1614728 5699896 1615456 5698128 +1615456 5698048 1613704 5698312 1613808 5699080 1615456 5698128 +1613808 5699080 1613856 5699232 1615456 5698128 1613704 5698312 +1615456 5698048 1613704 5698312 1615456 5698128 1615968 5699848 +1613704 5698312 1613728 5698992 1613808 5699080 1615456 5698128 +1615456 5698048 1613736 5698080 1613704 5698312 1615456 5698128 +1615456 5698048 1613736 5698080 1615456 5698128 1615968 5699848 +1615456 5698048 1613728 5697776 1613736 5698080 1615456 5698128 +1613704 5698312 1613808 5699080 1615456 5698128 1613736 5698080 +1615456 5698048 1615456 5698128 1615968 5699848 1615528 5697784 +1615968 5699848 1615648 5697056 1615528 5697784 1615456 5698128 +1615456 5698048 1613736 5698080 1615456 5698128 1615528 5697784 +1615456 5698128 1615392 5700008 1615968 5699848 1615528 5697784 +1615528 5697784 1615560 5698200 1615968 5699848 1615648 5697056 +1615968 5699848 1621576 5701360 1615648 5697056 1615560 5698200 +1615968 5699848 1621488 5701424 1621576 5701360 1615560 5698200 +1621576 5701360 1615696 5696632 1615648 5697056 1615560 5698200 +1615648 5697056 1615528 5697784 1615560 5698200 1621576 5701360 +1615968 5699848 1615560 5698200 1615456 5698128 1615392 5700008 +1615560 5698200 1615528 5697784 1615456 5698128 1615392 5700008 +1615456 5698128 1614856 5699920 1615392 5700008 1615560 5698200 +1614856 5699920 1615072 5700064 1615392 5700008 1615560 5698200 +1615456 5698128 1614728 5699896 1614856 5699920 1615560 5698200 +1615456 5698128 1613856 5699232 1614728 5699896 1615560 5698200 +1615392 5700008 1615968 5699848 1615560 5698200 1614856 5699920 +1615456 5698128 1614728 5699896 1615560 5698200 1615528 5697784 +1614856 5699920 1615392 5700008 1615560 5698200 1614728 5699896 +1615528 5697784 1615456 5698128 1615560 5698200 1615648 5697056 +1615560 5698200 1615392 5700008 1615968 5699848 1621576 5701360 +1615968 5699848 1615560 5698200 1615392 5700008 1615600 5700000 +1615456 5698128 1615560 5698200 1615528 5697784 1615456 5698048 +1615456 5698128 1614728 5699896 1615560 5698200 1615456 5698048 +1615560 5698200 1615648 5697056 1615528 5697784 1615456 5698048 +1615648 5697056 1615648 5698224 1621576 5701360 1615696 5696632 +1621576 5701360 1615648 5698224 1615560 5698200 1615968 5699848 +1621576 5701360 1615648 5698224 1615968 5699848 1621488 5701424 +1615560 5698200 1615648 5698224 1615648 5697056 1615528 5697784 +1615560 5698200 1615648 5698224 1615528 5697784 1615456 5698048 +1615648 5698224 1615648 5697056 1615528 5697784 1615456 5698048 +1615648 5698224 1615456 5698048 1615560 5698200 1615968 5699848 +1615560 5698200 1615392 5700008 1615968 5699848 1615648 5698224 +1615968 5699848 1621576 5701360 1615648 5698224 1615392 5700008 +1615560 5698200 1614856 5699920 1615392 5700008 1615648 5698224 +1615560 5698200 1615392 5700008 1615648 5698224 1615456 5698048 +1615648 5698224 1621576 5701360 1615648 5697056 1615528 5697784 +1621576 5701360 1615648 5697056 1615648 5698224 1615968 5699848 +1615392 5700008 1615600 5700000 1615968 5699848 1615648 5698224 +1615560 5698200 1615648 5698224 1615456 5698048 1615456 5698128 +1621576 5701360 1615720 5698296 1615968 5699848 1621488 5701424 +1615968 5699848 1621464 5701464 1621488 5701424 1615720 5698296 +1615968 5699848 1615720 5698296 1615648 5698224 1615392 5700008 +1615648 5698224 1615560 5698200 1615392 5700008 1615720 5698296 +1615392 5700008 1615968 5699848 1615720 5698296 1615560 5698200 +1615560 5698200 1614856 5699920 1615392 5700008 1615720 5698296 +1614856 5699920 1615072 5700064 1615392 5700008 1615720 5698296 +1615392 5700008 1615968 5699848 1615720 5698296 1614856 5699920 +1615560 5698200 1614728 5699896 1614856 5699920 1615720 5698296 +1615560 5698200 1614856 5699920 1615720 5698296 1615648 5698224 +1615720 5698296 1621576 5701360 1615648 5698224 1615560 5698200 +1615648 5698224 1615720 5698296 1621576 5701360 1615648 5697056 +1621576 5701360 1615696 5696632 1615648 5697056 1615720 5698296 +1615648 5698224 1615720 5698296 1615648 5697056 1615528 5697784 +1615648 5698224 1615720 5698296 1615528 5697784 1615456 5698048 +1615648 5698224 1615560 5698200 1615720 5698296 1615528 5697784 +1615720 5698296 1621576 5701360 1615648 5697056 1615528 5697784 +1621576 5701360 1615648 5697056 1615720 5698296 1621488 5701424 +1615720 5698296 1615392 5700008 1615968 5699848 1621488 5701424 +1615968 5699848 1615720 5698296 1615392 5700008 1615600 5700000 +1615720 5698296 1615792 5698416 1621488 5701424 1621576 5701360 +1621488 5701424 1615792 5698416 1615968 5699848 1621464 5701464 +1615720 5698296 1615792 5698416 1621576 5701360 1615648 5697056 +1615792 5698416 1621488 5701424 1621576 5701360 1615648 5697056 +1621576 5701360 1615696 5696632 1615648 5697056 1615792 5698416 +1621576 5701360 1615696 5696632 1615792 5698416 1621488 5701424 +1621576 5701360 1615680 5696424 1615696 5696632 1615792 5698416 +1615720 5698296 1615792 5698416 1615648 5697056 1615528 5697784 +1615648 5697056 1615720 5698296 1615792 5698416 1615696 5696632 +1615720 5698296 1615968 5699848 1615792 5698416 1615648 5697056 +1615968 5699848 1615792 5698416 1615720 5698296 1615392 5700008 +1615720 5698296 1614856 5699920 1615392 5700008 1615792 5698416 +1614856 5699920 1615072 5700064 1615392 5700008 1615792 5698416 +1615720 5698296 1615560 5698200 1614856 5699920 1615792 5698416 +1614856 5699920 1615392 5700008 1615792 5698416 1615560 5698200 +1615560 5698200 1614728 5699896 1614856 5699920 1615792 5698416 +1615720 5698296 1615648 5698224 1615560 5698200 1615792 5698416 +1615792 5698416 1615648 5697056 1615720 5698296 1615560 5698200 +1615392 5700008 1615968 5699848 1615792 5698416 1614856 5699920 +1615792 5698416 1615968 5699848 1621488 5701424 1621576 5701360 +1615968 5699848 1621488 5701424 1615792 5698416 1615392 5700008 +1615968 5699848 1615792 5698416 1615392 5700008 1615600 5700000 +1615968 5699848 1615792 5698416 1615600 5700000 1615776 5699960 +1615792 5698416 1614856 5699920 1615392 5700008 1615600 5700000 +1615968 5699848 1621488 5701424 1615792 5698416 1615600 5700000 +1621488 5701424 1615848 5698584 1615968 5699848 1621464 5701464 +1615792 5698416 1615848 5698584 1621488 5701424 1621576 5701360 +1615792 5698416 1615848 5698584 1621576 5701360 1615696 5696632 +1621576 5701360 1615680 5696424 1615696 5696632 1615848 5698584 +1615792 5698416 1615848 5698584 1615696 5696632 1615648 5697056 +1615848 5698584 1621576 5701360 1615696 5696632 1615648 5697056 +1615792 5698416 1615848 5698584 1615648 5697056 1615720 5698296 +1615848 5698584 1621488 5701424 1621576 5701360 1615696 5696632 +1615792 5698416 1615968 5699848 1615848 5698584 1615648 5697056 +1615968 5699848 1615848 5698584 1615792 5698416 1615600 5700000 +1615968 5699848 1615848 5698584 1615600 5700000 1615776 5699960 +1615848 5698584 1615648 5697056 1615792 5698416 1615600 5700000 +1615848 5698584 1615968 5699848 1621488 5701424 1621576 5701360 +1615968 5699848 1621488 5701424 1615848 5698584 1615600 5700000 +1615792 5698416 1615392 5700008 1615600 5700000 1615848 5698584 +1615792 5698416 1614856 5699920 1615392 5700008 1615848 5698584 +1614856 5699920 1615072 5700064 1615392 5700008 1615848 5698584 +1615792 5698416 1615560 5698200 1614856 5699920 1615848 5698584 +1615792 5698416 1615720 5698296 1615560 5698200 1615848 5698584 +1615560 5698200 1614728 5699896 1614856 5699920 1615848 5698584 +1615560 5698200 1614728 5699896 1615848 5698584 1615792 5698416 +1615560 5698200 1615456 5698128 1614728 5699896 1615848 5698584 +1615560 5698200 1615456 5698128 1615848 5698584 1615792 5698416 +1615456 5698128 1613856 5699232 1614728 5699896 1615848 5698584 +1614728 5699896 1614856 5699920 1615848 5698584 1615456 5698128 +1614856 5699920 1615392 5700008 1615848 5698584 1614728 5699896 +1615792 5698416 1615560 5698200 1615848 5698584 1615648 5697056 +1615600 5700000 1615968 5699848 1615848 5698584 1615392 5700008 +1615392 5700008 1615600 5700000 1615848 5698584 1614856 5699920 +1621488 5701424 1615920 5698664 1615968 5699848 1621464 5701464 +1615848 5698584 1615920 5698664 1621488 5701424 1621576 5701360 +1615848 5698584 1615920 5698664 1621576 5701360 1615696 5696632 +1615848 5698584 1615920 5698664 1615696 5696632 1615648 5697056 +1621576 5701360 1615680 5696424 1615696 5696632 1615920 5698664 +1615848 5698584 1615920 5698664 1615648 5697056 1615792 5698416 +1615920 5698664 1615696 5696632 1615648 5697056 1615792 5698416 +1615648 5697056 1615720 5698296 1615792 5698416 1615920 5698664 +1615920 5698664 1621576 5701360 1615696 5696632 1615648 5697056 +1615920 5698664 1621488 5701424 1621576 5701360 1615696 5696632 +1615848 5698584 1615968 5699848 1615920 5698664 1615792 5698416 +1615968 5699848 1615920 5698664 1615848 5698584 1615600 5700000 +1615968 5699848 1615920 5698664 1615600 5700000 1615776 5699960 +1615848 5698584 1615392 5700008 1615600 5700000 1615920 5698664 +1615920 5698664 1615792 5698416 1615848 5698584 1615392 5700008 +1615600 5700000 1615968 5699848 1615920 5698664 1615392 5700008 +1615920 5698664 1615968 5699848 1621488 5701424 1621576 5701360 +1615968 5699848 1621488 5701424 1615920 5698664 1615600 5700000 +1615848 5698584 1614856 5699920 1615392 5700008 1615920 5698664 +1621488 5701424 1615976 5698704 1615968 5699848 1621464 5701464 +1615920 5698664 1615976 5698704 1621488 5701424 1621576 5701360 +1615920 5698664 1615976 5698704 1621576 5701360 1615696 5696632 +1621576 5701360 1615680 5696424 1615696 5696632 1615976 5698704 +1615920 5698664 1615976 5698704 1615696 5696632 1615648 5697056 +1615920 5698664 1615976 5698704 1615648 5697056 1615792 5698416 +1615920 5698664 1615976 5698704 1615792 5698416 1615848 5698584 +1615648 5697056 1615720 5698296 1615792 5698416 1615976 5698704 +1615976 5698704 1615696 5696632 1615648 5697056 1615792 5698416 +1615976 5698704 1621576 5701360 1615696 5696632 1615648 5697056 +1615976 5698704 1621488 5701424 1621576 5701360 1615696 5696632 +1615920 5698664 1615968 5699848 1615976 5698704 1615792 5698416 +1615968 5699848 1615976 5698704 1615920 5698664 1615600 5700000 +1615976 5698704 1615968 5699848 1621488 5701424 1621576 5701360 +1615696 5696632 1616160 5698656 1621576 5701360 1615680 5696424 +1615976 5698704 1616160 5698656 1615696 5696632 1615648 5697056 +1615976 5698704 1616160 5698656 1615648 5697056 1615792 5698416 +1615976 5698704 1616160 5698656 1615792 5698416 1615920 5698664 +1615792 5698416 1615848 5698584 1615920 5698664 1616160 5698656 +1615920 5698664 1615976 5698704 1616160 5698656 1615848 5698584 +1615648 5697056 1615720 5698296 1615792 5698416 1616160 5698656 +1615648 5697056 1615528 5697784 1615720 5698296 1616160 5698656 +1615528 5697784 1615648 5698224 1615720 5698296 1616160 5698656 +1615720 5698296 1615792 5698416 1616160 5698656 1615528 5697784 +1616160 5698656 1615720 5698296 1615792 5698416 1615848 5698584 +1616160 5698656 1615696 5696632 1615648 5697056 1615528 5697784 +1621576 5701360 1616160 5698656 1615976 5698704 1621488 5701424 +1615976 5698704 1615968 5699848 1621488 5701424 1616160 5698656 +1615968 5699848 1621464 5701464 1621488 5701424 1616160 5698656 +1621488 5701424 1621576 5701360 1616160 5698656 1615968 5699848 +1615976 5698704 1615968 5699848 1616160 5698656 1615920 5698664 +1615976 5698704 1615920 5698664 1615968 5699848 1616160 5698656 +1616160 5698656 1621576 5701360 1615696 5696632 1615648 5697056 +1621576 5701360 1615696 5696632 1616160 5698656 1621488 5701424 +1615696 5696632 1616304 5698552 1621576 5701360 1615680 5696424 +1621576 5701360 1621712 5701344 1615680 5696424 1616304 5698552 +1621712 5701344 1615632 5696264 1615680 5696424 1616304 5698552 +1615680 5696424 1615696 5696632 1616304 5698552 1621712 5701344 +1616160 5698656 1616304 5698552 1615696 5696632 1615648 5697056 +1616160 5698656 1616304 5698552 1615648 5697056 1615528 5697784 +1616160 5698656 1616304 5698552 1615528 5697784 1615720 5698296 +1615528 5697784 1615648 5698224 1615720 5698296 1616304 5698552 +1616160 5698656 1616304 5698552 1615720 5698296 1615792 5698416 +1616304 5698552 1615528 5697784 1615720 5698296 1615792 5698416 +1616160 5698656 1616304 5698552 1615792 5698416 1615848 5698584 +1616304 5698552 1615648 5697056 1615528 5697784 1615720 5698296 +1616304 5698552 1615696 5696632 1615648 5697056 1615528 5697784 +1616160 5698656 1621576 5701360 1616304 5698552 1615792 5698416 +1621576 5701360 1616304 5698552 1616160 5698656 1621488 5701424 +1616160 5698656 1615968 5699848 1621488 5701424 1616304 5698552 +1615968 5699848 1621464 5701464 1621488 5701424 1616304 5698552 +1615968 5699848 1621448 5701528 1621464 5701464 1616304 5698552 +1615968 5699848 1621464 5701464 1616304 5698552 1616160 5698656 +1616160 5698656 1615976 5698704 1615968 5699848 1616304 5698552 +1616304 5698552 1615792 5698416 1616160 5698656 1615968 5699848 +1621488 5701424 1621576 5701360 1616304 5698552 1621464 5701464 +1615696 5696632 1615648 5697056 1616304 5698552 1615680 5696424 +1616304 5698552 1621488 5701424 1621576 5701360 1621712 5701344 +1615680 5696424 1616392 5698520 1621712 5701344 1615632 5696264 +1621712 5701344 1616392 5698520 1616304 5698552 1621576 5701360 +1616304 5698552 1616392 5698520 1615680 5696424 1615696 5696632 +1616304 5698552 1616392 5698520 1615696 5696632 1615648 5697056 +1616392 5698520 1615680 5696424 1615696 5696632 1615648 5697056 +1616304 5698552 1616392 5698520 1615648 5697056 1615528 5697784 +1616304 5698552 1616392 5698520 1615528 5697784 1615720 5698296 +1615528 5697784 1615648 5698224 1615720 5698296 1616392 5698520 +1616304 5698552 1616392 5698520 1615720 5698296 1615792 5698416 +1616392 5698520 1615648 5697056 1615528 5697784 1615720 5698296 +1616392 5698520 1615696 5696632 1615648 5697056 1615528 5697784 +1616392 5698520 1615720 5698296 1616304 5698552 1621576 5701360 +1616304 5698552 1621488 5701424 1621576 5701360 1616392 5698520 +1621576 5701360 1621712 5701344 1616392 5698520 1621488 5701424 +1616304 5698552 1621464 5701464 1621488 5701424 1616392 5698520 +1616304 5698552 1615968 5699848 1621464 5701464 1616392 5698520 +1615968 5699848 1621448 5701528 1621464 5701464 1616392 5698520 +1616304 5698552 1616160 5698656 1615968 5699848 1616392 5698520 +1615968 5699848 1621464 5701464 1616392 5698520 1616160 5698656 +1616160 5698656 1615976 5698704 1615968 5699848 1616392 5698520 +1621464 5701464 1621488 5701424 1616392 5698520 1615968 5699848 +1616304 5698552 1616160 5698656 1616392 5698520 1615720 5698296 +1621488 5701424 1621576 5701360 1616392 5698520 1621464 5701464 +1616392 5698520 1621712 5701344 1615680 5696424 1615696 5696632 +1621712 5701344 1615680 5696424 1616392 5698520 1621576 5701360 +1615680 5696424 1616456 5698536 1621712 5701344 1615632 5696264 +1616392 5698520 1616456 5698536 1615680 5696424 1615696 5696632 +1616392 5698520 1616456 5698536 1615696 5696632 1615648 5697056 +1616392 5698520 1616456 5698536 1615648 5697056 1615528 5697784 +1616456 5698536 1615680 5696424 1615696 5696632 1615648 5697056 +1616392 5698520 1621712 5701344 1616456 5698536 1615648 5697056 +1621712 5701344 1616456 5698536 1616392 5698520 1621576 5701360 +1616392 5698520 1621488 5701424 1621576 5701360 1616456 5698536 +1616392 5698520 1621464 5701464 1621488 5701424 1616456 5698536 +1621488 5701424 1621576 5701360 1616456 5698536 1621464 5701464 +1616392 5698520 1615968 5699848 1621464 5701464 1616456 5698536 +1615968 5699848 1621448 5701528 1621464 5701464 1616456 5698536 +1616392 5698520 1616160 5698656 1615968 5699848 1616456 5698536 +1616392 5698520 1616304 5698552 1616160 5698656 1616456 5698536 +1616160 5698656 1615968 5699848 1616456 5698536 1616304 5698552 +1616160 5698656 1615976 5698704 1615968 5699848 1616456 5698536 +1615968 5699848 1621464 5701464 1616456 5698536 1616160 5698656 +1621464 5701464 1621488 5701424 1616456 5698536 1615968 5699848 +1616456 5698536 1615648 5697056 1616392 5698520 1616304 5698552 +1621576 5701360 1621712 5701344 1616456 5698536 1621488 5701424 +1616456 5698536 1621712 5701344 1615680 5696424 1615696 5696632 +1621712 5701344 1615680 5696424 1616456 5698536 1621576 5701360 +1621488 5701424 1616528 5698576 1616456 5698536 1621464 5701464 +1616456 5698536 1615968 5699848 1621464 5701464 1616528 5698576 +1615968 5699848 1621448 5701528 1621464 5701464 1616528 5698576 +1621464 5701464 1621488 5701424 1616528 5698576 1615968 5699848 +1616456 5698536 1616160 5698656 1615968 5699848 1616528 5698576 +1616456 5698536 1616304 5698552 1616160 5698656 1616528 5698576 +1616456 5698536 1616392 5698520 1616304 5698552 1616528 5698576 +1616160 5698656 1615976 5698704 1615968 5699848 1616528 5698576 +1616160 5698656 1615968 5699848 1616528 5698576 1616304 5698552 +1615968 5699848 1621464 5701464 1616528 5698576 1616160 5698656 +1616456 5698536 1616528 5698576 1621576 5701360 1621712 5701344 +1616528 5698576 1621712 5701344 1616456 5698536 1616304 5698552 +1616456 5698536 1616528 5698576 1621712 5701344 1615680 5696424 +1621712 5701344 1615632 5696264 1615680 5696424 1616528 5698576 +1616528 5698576 1621576 5701360 1621712 5701344 1615680 5696424 +1616456 5698536 1616528 5698576 1615680 5696424 1615696 5696632 +1616456 5698536 1616528 5698576 1615696 5696632 1615648 5697056 +1616456 5698536 1616528 5698576 1615648 5697056 1616392 5698520 +1616528 5698576 1615680 5696424 1615696 5696632 1615648 5697056 +1616456 5698536 1616304 5698552 1616528 5698576 1615648 5697056 +1616528 5698576 1621712 5701344 1615680 5696424 1615696 5696632 +1616528 5698576 1621488 5701424 1621576 5701360 1621712 5701344 +1621488 5701424 1621576 5701360 1616528 5698576 1621464 5701464 +1621464 5701464 1616560 5698616 1615968 5699848 1621448 5701528 +1616528 5698576 1616560 5698616 1621464 5701464 1621488 5701424 +1615968 5699848 1616560 5698616 1616528 5698576 1616160 5698656 +1615968 5699848 1616560 5698616 1616160 5698656 1615976 5698704 +1616528 5698576 1616304 5698552 1616160 5698656 1616560 5698616 +1616528 5698576 1616456 5698536 1616304 5698552 1616560 5698616 +1616456 5698536 1616392 5698520 1616304 5698552 1616560 5698616 +1616304 5698552 1616160 5698656 1616560 5698616 1616456 5698536 +1616160 5698656 1615968 5699848 1616560 5698616 1616304 5698552 +1616528 5698576 1616456 5698536 1616560 5698616 1621488 5701424 +1616528 5698576 1616560 5698616 1621488 5701424 1621576 5701360 +1616560 5698616 1621464 5701464 1621488 5701424 1621576 5701360 +1616528 5698576 1616560 5698616 1621576 5701360 1621712 5701344 +1616528 5698576 1616560 5698616 1621712 5701344 1615680 5696424 +1621712 5701344 1615632 5696264 1615680 5696424 1616560 5698616 +1616528 5698576 1616560 5698616 1615680 5696424 1615696 5696632 +1616560 5698616 1621576 5701360 1621712 5701344 1615680 5696424 +1616528 5698576 1616456 5698536 1616560 5698616 1615680 5696424 +1616560 5698616 1621488 5701424 1621576 5701360 1621712 5701344 +1616560 5698616 1615968 5699848 1621464 5701464 1621488 5701424 +1615968 5699848 1621464 5701464 1616560 5698616 1616160 5698656 +1615680 5696424 1616592 5698624 1621712 5701344 1615632 5696264 +1616560 5698616 1616592 5698624 1615680 5696424 1616528 5698576 +1615680 5696424 1615696 5696632 1616528 5698576 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1615696 5696632 +1615696 5696632 1615648 5697056 1616528 5698576 1616592 5698624 +1621712 5701344 1616592 5698624 1616560 5698616 1621576 5701360 +1616560 5698616 1621488 5701424 1621576 5701360 1616592 5698624 +1616560 5698616 1621464 5701464 1621488 5701424 1616592 5698624 +1621576 5701360 1621712 5701344 1616592 5698624 1621488 5701424 +1621488 5701424 1621576 5701360 1616592 5698624 1621464 5701464 +1616560 5698616 1615968 5699848 1621464 5701464 1616592 5698624 +1615968 5699848 1621448 5701528 1621464 5701464 1616592 5698624 +1621464 5701464 1621488 5701424 1616592 5698624 1615968 5699848 +1616560 5698616 1615968 5699848 1616592 5698624 1616528 5698576 +1616560 5698616 1616160 5698656 1615968 5699848 1616592 5698624 +1616160 5698656 1615976 5698704 1615968 5699848 1616592 5698624 +1616560 5698616 1616304 5698552 1616160 5698656 1616592 5698624 +1615968 5699848 1621464 5701464 1616592 5698624 1616160 5698656 +1616560 5698616 1616160 5698656 1616592 5698624 1616528 5698576 +1616592 5698624 1621712 5701344 1615680 5696424 1615696 5696632 +1621712 5701344 1615680 5696424 1616592 5698624 1621576 5701360 +1621464 5701464 1616624 5698656 1615968 5699848 1621448 5701528 +1616592 5698624 1616624 5698656 1621464 5701464 1621488 5701424 +1616592 5698624 1616624 5698656 1621488 5701424 1621576 5701360 +1616624 5698656 1621464 5701464 1621488 5701424 1621576 5701360 +1616592 5698624 1616624 5698656 1621576 5701360 1621712 5701344 +1616624 5698656 1621488 5701424 1621576 5701360 1621712 5701344 +1615968 5699848 1616624 5698656 1616592 5698624 1616160 5698656 +1615968 5699848 1616624 5698656 1616160 5698656 1615976 5698704 +1616592 5698624 1616560 5698616 1616160 5698656 1616624 5698656 +1616560 5698616 1616304 5698552 1616160 5698656 1616624 5698656 +1616160 5698656 1615968 5699848 1616624 5698656 1616560 5698616 +1616592 5698624 1616560 5698616 1616624 5698656 1621712 5701344 +1616592 5698624 1616624 5698656 1621712 5701344 1615680 5696424 +1621712 5701344 1615632 5696264 1615680 5696424 1616624 5698656 +1616624 5698656 1621576 5701360 1621712 5701344 1615680 5696424 +1616592 5698624 1616624 5698656 1615680 5696424 1615696 5696632 +1616592 5698624 1616624 5698656 1615696 5696632 1616528 5698576 +1616592 5698624 1616560 5698616 1616624 5698656 1615696 5696632 +1616624 5698656 1621712 5701344 1615680 5696424 1615696 5696632 +1616624 5698656 1615968 5699848 1621464 5701464 1621488 5701424 +1615968 5699848 1621464 5701464 1616624 5698656 1616160 5698656 +1621464 5701464 1616616 5698720 1615968 5699848 1621448 5701528 +1616624 5698656 1616616 5698720 1621464 5701464 1621488 5701424 +1616624 5698656 1616616 5698720 1621488 5701424 1621576 5701360 +1616624 5698656 1615968 5699848 1616616 5698720 1621488 5701424 +1615968 5699848 1616616 5698720 1616624 5698656 1616160 5698656 +1615968 5699848 1616616 5698720 1616160 5698656 1615976 5698704 +1616624 5698656 1616560 5698616 1616160 5698656 1616616 5698720 +1616560 5698616 1616304 5698552 1616160 5698656 1616616 5698720 +1616560 5698616 1616456 5698536 1616304 5698552 1616616 5698720 +1616560 5698616 1616304 5698552 1616616 5698720 1616624 5698656 +1616624 5698656 1616592 5698624 1616560 5698616 1616616 5698720 +1616560 5698616 1616304 5698552 1616616 5698720 1616592 5698624 +1616616 5698720 1621488 5701424 1616624 5698656 1616592 5698624 +1616160 5698656 1615968 5699848 1616616 5698720 1616304 5698552 +1616616 5698720 1615968 5699848 1621464 5701464 1621488 5701424 +1615968 5699848 1621464 5701464 1616616 5698720 1616160 5698656 +1621464 5701464 1616624 5698800 1615968 5699848 1621448 5701528 +1616616 5698720 1616624 5698800 1621464 5701464 1621488 5701424 +1616616 5698720 1616624 5698800 1621488 5701424 1616624 5698656 +1621488 5701424 1621576 5701360 1616624 5698656 1616624 5698800 +1621576 5701360 1621712 5701344 1616624 5698656 1616624 5698800 +1616624 5698656 1616616 5698720 1616624 5698800 1621576 5701360 +1616624 5698800 1621464 5701464 1621488 5701424 1621576 5701360 +1616616 5698720 1615968 5699848 1616624 5698800 1616624 5698656 +1615968 5699848 1616624 5698800 1616616 5698720 1616160 5698656 +1615968 5699848 1616624 5698800 1616160 5698656 1615976 5698704 +1615968 5699848 1616624 5698800 1615976 5698704 1615920 5698664 +1616616 5698720 1616304 5698552 1616160 5698656 1616624 5698800 +1616616 5698720 1616560 5698616 1616304 5698552 1616624 5698800 +1616624 5698800 1616624 5698656 1616616 5698720 1616304 5698552 +1616624 5698800 1616304 5698552 1616160 5698656 1615976 5698704 +1621464 5701464 1621488 5701424 1616624 5698800 1621448 5701528 +1616624 5698800 1615976 5698704 1615968 5699848 1621448 5701528 +1615968 5699848 1621664 5703552 1621448 5701528 1616624 5698800 +1616624 5698800 1616600 5698864 1621448 5701528 1621464 5701464 +1616624 5698800 1616600 5698864 1621464 5701464 1621488 5701424 +1616600 5698864 1621448 5701528 1621464 5701464 1621488 5701424 +1616624 5698800 1616600 5698864 1621488 5701424 1621576 5701360 +1616624 5698800 1615968 5699848 1616600 5698864 1621488 5701424 +1615968 5699848 1616600 5698864 1616624 5698800 1615976 5698704 +1616624 5698800 1616160 5698656 1615976 5698704 1616600 5698864 +1615968 5699848 1616600 5698864 1615976 5698704 1615920 5698664 +1616624 5698800 1616304 5698552 1616160 5698656 1616600 5698864 +1616160 5698656 1615976 5698704 1616600 5698864 1616304 5698552 +1616624 5698800 1616616 5698720 1616304 5698552 1616600 5698864 +1616616 5698720 1616560 5698616 1616304 5698552 1616600 5698864 +1616560 5698616 1616456 5698536 1616304 5698552 1616600 5698864 +1616616 5698720 1616592 5698624 1616560 5698616 1616600 5698864 +1616616 5698720 1616560 5698616 1616600 5698864 1616624 5698800 +1616304 5698552 1616160 5698656 1616600 5698864 1616560 5698616 +1616600 5698864 1621488 5701424 1616624 5698800 1616616 5698720 +1615976 5698704 1615968 5699848 1616600 5698864 1616160 5698656 +1616600 5698864 1615968 5699848 1621448 5701528 1621464 5701464 +1615968 5699848 1621448 5701528 1616600 5698864 1615976 5698704 +1621448 5701528 1616600 5698864 1615968 5699848 1621664 5703552 +1615968 5699848 1616440 5698960 1615976 5698704 1615920 5698664 +1615976 5698704 1616440 5698960 1616600 5698864 1616160 5698656 +1616600 5698864 1616304 5698552 1616160 5698656 1616440 5698960 +1616600 5698864 1616560 5698616 1616304 5698552 1616440 5698960 +1616304 5698552 1616160 5698656 1616440 5698960 1616560 5698616 +1616560 5698616 1616456 5698536 1616304 5698552 1616440 5698960 +1616600 5698864 1616616 5698720 1616560 5698616 1616440 5698960 +1616616 5698720 1616592 5698624 1616560 5698616 1616440 5698960 +1616600 5698864 1616624 5698800 1616616 5698720 1616440 5698960 +1616560 5698616 1616304 5698552 1616440 5698960 1616616 5698720 +1616160 5698656 1615976 5698704 1616440 5698960 1616304 5698552 +1616440 5698960 1615968 5699848 1616600 5698864 1616616 5698720 +1616600 5698864 1616440 5698960 1615968 5699848 1621448 5701528 +1615976 5698704 1615968 5699848 1616440 5698960 1616160 5698656 +1615968 5699848 1616208 5699040 1615976 5698704 1615920 5698664 +1615968 5699848 1616208 5699040 1615920 5698664 1615600 5700000 +1615968 5699848 1616208 5699040 1615600 5700000 1615776 5699960 +1615920 5698664 1615392 5700008 1615600 5700000 1616208 5699040 +1616208 5699040 1615976 5698704 1615920 5698664 1615600 5700000 +1616440 5698960 1616208 5699040 1615968 5699848 1616600 5698864 +1615976 5698704 1616208 5699040 1616440 5698960 1616160 5698656 +1616440 5698960 1616304 5698552 1616160 5698656 1616208 5699040 +1616208 5699040 1615968 5699848 1616440 5698960 1616160 5698656 +1615968 5699848 1616440 5698960 1616208 5699040 1615600 5700000 +1616208 5699040 1616160 5698656 1615976 5698704 1615920 5698664 +1615600 5700000 1616128 5699088 1615920 5698664 1615392 5700008 +1615920 5698664 1615848 5698584 1615392 5700008 1616128 5699088 +1616208 5699040 1616128 5699088 1615600 5700000 1615968 5699848 +1615600 5700000 1615776 5699960 1615968 5699848 1616128 5699088 +1615968 5699848 1616208 5699040 1616128 5699088 1615776 5699960 +1615920 5698664 1616128 5699088 1616208 5699040 1615976 5698704 +1616208 5699040 1616128 5699088 1615968 5699848 1616440 5698960 +1616208 5699040 1615976 5698704 1616128 5699088 1615968 5699848 +1616208 5699040 1616160 5698656 1615976 5698704 1616128 5699088 +1615600 5700000 1615776 5699960 1616128 5699088 1615392 5700008 +1616128 5699088 1615976 5698704 1615920 5698664 1615392 5700008 +1615392 5700008 1616104 5699088 1615920 5698664 1615848 5698584 +1616128 5699088 1616104 5699088 1615392 5700008 1615600 5700000 +1616128 5699088 1616104 5699088 1615600 5700000 1615776 5699960 +1616128 5699088 1616104 5699088 1615776 5699960 1615968 5699848 +1616104 5699088 1615392 5700008 1615600 5700000 1615776 5699960 +1616128 5699088 1616104 5699088 1615968 5699848 1616208 5699040 +1616104 5699088 1615600 5700000 1615776 5699960 1615968 5699848 +1615920 5698664 1616104 5699088 1616128 5699088 1615976 5698704 +1616128 5699088 1616208 5699040 1615976 5698704 1616104 5699088 +1616208 5699040 1616160 5698656 1615976 5698704 1616104 5699088 +1615976 5698704 1615920 5698664 1616104 5699088 1616208 5699040 +1616128 5699088 1616208 5699040 1616104 5699088 1615968 5699848 +1616104 5699088 1615920 5698664 1615392 5700008 1615600 5700000 +1615920 5698664 1615392 5700008 1616104 5699088 1615976 5698704 +1616104 5699088 1616088 5699168 1615968 5699848 1616128 5699088 +1615968 5699848 1616208 5699040 1616128 5699088 1616088 5699168 +1616128 5699088 1616104 5699088 1616088 5699168 1616208 5699040 +1615968 5699848 1616440 5698960 1616208 5699040 1616088 5699168 +1616208 5699040 1616128 5699088 1616088 5699168 1616440 5698960 +1615968 5699848 1616600 5698864 1616440 5698960 1616088 5699168 +1615776 5699960 1616088 5699168 1616104 5699088 1615600 5700000 +1616104 5699088 1615392 5700008 1615600 5700000 1616088 5699168 +1615600 5700000 1615776 5699960 1616088 5699168 1615392 5700008 +1616104 5699088 1615920 5698664 1615392 5700008 1616088 5699168 +1615920 5698664 1615848 5698584 1615392 5700008 1616088 5699168 +1615392 5700008 1615600 5700000 1616088 5699168 1615848 5698584 +1615920 5698664 1615848 5698584 1616088 5699168 1616104 5699088 +1616104 5699088 1615920 5698664 1616088 5699168 1616128 5699088 +1616104 5699088 1615976 5698704 1615920 5698664 1616088 5699168 +1616088 5699168 1615776 5699960 1615968 5699848 1616440 5698960 +1615776 5699960 1615968 5699848 1616088 5699168 1615600 5700000 +1615848 5698584 1614856 5699920 1615392 5700008 1616088 5699168 +1614856 5699920 1615072 5700064 1615392 5700008 1616088 5699168 +1615848 5698584 1614728 5699896 1614856 5699920 1616088 5699168 +1615848 5698584 1614856 5699920 1616088 5699168 1615920 5698664 +1615392 5700008 1615600 5700000 1616088 5699168 1614856 5699920 +1614856 5699920 1616016 5699184 1615848 5698584 1614728 5699896 +1615848 5698584 1616016 5699184 1616088 5699168 1615920 5698664 +1616088 5699168 1616104 5699088 1615920 5698664 1616016 5699184 +1615920 5698664 1615848 5698584 1616016 5699184 1616104 5699088 +1616104 5699088 1615976 5698704 1615920 5698664 1616016 5699184 +1615920 5698664 1615848 5698584 1616016 5699184 1615976 5698704 +1616104 5699088 1616208 5699040 1615976 5698704 1616016 5699184 +1616104 5699088 1615976 5698704 1616016 5699184 1616088 5699168 +1616016 5699184 1614856 5699920 1616088 5699168 1616104 5699088 +1615848 5698584 1614856 5699920 1616016 5699184 1615920 5698664 +1616088 5699168 1616016 5699184 1614856 5699920 1615392 5700008 +1614856 5699920 1615072 5700064 1615392 5700008 1616016 5699184 +1616088 5699168 1616016 5699184 1615392 5700008 1615600 5700000 +1616088 5699168 1616016 5699184 1615600 5700000 1615776 5699960 +1616016 5699184 1615392 5700008 1615600 5700000 1615776 5699960 +1616088 5699168 1616104 5699088 1616016 5699184 1615776 5699960 +1616088 5699168 1616016 5699184 1615776 5699960 1615968 5699848 +1616016 5699184 1615600 5700000 1615776 5699960 1615968 5699848 +1616088 5699168 1616016 5699184 1615968 5699848 1616440 5698960 +1616088 5699168 1616104 5699088 1616016 5699184 1615968 5699848 +1616016 5699184 1615848 5698584 1614856 5699920 1615392 5700008 +1616016 5699184 1614856 5699920 1615392 5700008 1615600 5700000 +1616088 5699168 1616072 5699200 1615968 5699848 1616440 5698960 +1615968 5699848 1616600 5698864 1616440 5698960 1616072 5699200 +1616088 5699168 1616072 5699200 1616440 5698960 1616208 5699040 +1616088 5699168 1616072 5699200 1616208 5699040 1616128 5699088 +1616072 5699200 1615968 5699848 1616440 5698960 1616208 5699040 +1615968 5699848 1616072 5699200 1616016 5699184 1615776 5699960 +1616088 5699168 1616016 5699184 1616072 5699200 1616208 5699040 +1616072 5699200 1616016 5699184 1615968 5699848 1616440 5698960 +1616440 5698960 1616152 5699304 1615968 5699848 1616600 5698864 +1615968 5699848 1621448 5701528 1616600 5698864 1616152 5699304 +1616072 5699200 1616152 5699304 1616440 5698960 1616208 5699040 +1616072 5699200 1616152 5699304 1616208 5699040 1616088 5699168 +1616208 5699040 1616128 5699088 1616088 5699168 1616152 5699304 +1616128 5699088 1616104 5699088 1616088 5699168 1616152 5699304 +1616088 5699168 1616072 5699200 1616152 5699304 1616128 5699088 +1616152 5699304 1616440 5698960 1616208 5699040 1616128 5699088 +1616072 5699200 1616152 5699304 1616088 5699168 1616016 5699184 +1616072 5699200 1615968 5699848 1616152 5699304 1616088 5699168 +1615968 5699848 1616152 5699304 1616072 5699200 1616016 5699184 +1615968 5699848 1616152 5699304 1616016 5699184 1615776 5699960 +1616152 5699304 1616088 5699168 1616072 5699200 1616016 5699184 +1616440 5698960 1616208 5699040 1616152 5699304 1616600 5698864 +1616152 5699304 1616016 5699184 1615968 5699848 1616600 5698864 +1616600 5698864 1616256 5699472 1621448 5701528 1621464 5701464 +1616600 5698864 1616256 5699472 1621464 5701464 1621488 5701424 +1615968 5699848 1616256 5699472 1616600 5698864 1616152 5699304 +1616600 5698864 1616440 5698960 1616152 5699304 1616256 5699472 +1616152 5699304 1615968 5699848 1616256 5699472 1616440 5698960 +1616440 5698960 1616208 5699040 1616152 5699304 1616256 5699472 +1616600 5698864 1616440 5698960 1616256 5699472 1621464 5701464 +1615968 5699848 1616256 5699472 1616152 5699304 1616016 5699184 +1616256 5699472 1615968 5699848 1621448 5701528 1621464 5701464 +1615968 5699848 1621448 5701528 1616256 5699472 1616152 5699304 +1621448 5701528 1616256 5699472 1615968 5699848 1621664 5703552 +1616256 5699472 1616256 5699536 1621448 5701528 1621464 5701464 +1616256 5699472 1616256 5699536 1621464 5701464 1616600 5698864 +1621464 5701464 1621488 5701424 1616600 5698864 1616256 5699536 +1616256 5699472 1616256 5699536 1616600 5698864 1616440 5698960 +1616256 5699536 1615968 5699848 1621448 5701528 1621464 5701464 +1616256 5699536 1621448 5701528 1621464 5701464 1616600 5698864 +1616256 5699472 1615968 5699848 1616256 5699536 1616600 5698864 +1615968 5699848 1616256 5699536 1616256 5699472 1616152 5699304 +1615968 5699848 1616256 5699536 1616152 5699304 1616016 5699184 +1615968 5699848 1621448 5701528 1616256 5699536 1616152 5699304 +1616256 5699536 1616600 5698864 1616256 5699472 1616152 5699304 +1621448 5701528 1616256 5699536 1615968 5699848 1621664 5703552 +1616256 5699536 1616112 5699736 1621448 5701528 1621464 5701464 +1615968 5699848 1616112 5699736 1616256 5699536 1616152 5699304 +1615968 5699848 1616112 5699736 1616152 5699304 1616016 5699184 +1615968 5699848 1616112 5699736 1616016 5699184 1615776 5699960 +1616152 5699304 1616072 5699200 1616016 5699184 1616112 5699736 +1616112 5699736 1621448 5701528 1616256 5699536 1616152 5699304 +1616112 5699736 1616256 5699536 1616152 5699304 1616016 5699184 +1616256 5699536 1616256 5699472 1616152 5699304 1616112 5699736 +1615968 5699848 1621448 5701528 1616112 5699736 1616016 5699184 +1621448 5701528 1616112 5699736 1615968 5699848 1621664 5703552 +1657088 5639464 1612232 5689456 1613016 5692968 1613384 5693288 +1613016 5692968 1612232 5689456 1601592 5681064 1601624 5681136 +1613016 5692968 1612232 5689456 1601624 5681136 1612880 5692928 +1601624 5681136 1612736 5692952 1612880 5692928 1612232 5689456 +1601624 5681136 1601592 5681216 1612736 5692952 1612232 5689456 +1612736 5692952 1612880 5692928 1612232 5689456 1601592 5681216 +1601592 5681216 1612544 5693040 1612736 5692952 1612232 5689456 +1601592 5681216 1612440 5693112 1612544 5693040 1612232 5689456 +1612736 5692952 1612880 5692928 1612232 5689456 1612544 5693040 +1612544 5693040 1612736 5692952 1612232 5689456 1612440 5693112 +1601592 5681216 1612440 5693112 1612232 5689456 1601624 5681136 +1612880 5692928 1613016 5692968 1612232 5689456 1612736 5692952 +1612232 5689456 1601592 5681064 1601624 5681136 1601592 5681216 +1657088 5639464 1612232 5689456 1613384 5693288 1663776 5646144 +1612232 5689456 1613016 5692968 1613384 5693288 1663776 5646144 +1613016 5692968 1613112 5693056 1613384 5693288 1612232 5689456 +1613384 5693288 1663776 5646144 1612232 5689456 1613112 5693056 +1613112 5693056 1613216 5693184 1613384 5693288 1612232 5689456 +1613384 5693288 1613488 5693384 1663776 5646144 1612232 5689456 +1613384 5693288 1613488 5693384 1612232 5689456 1613112 5693056 +1663776 5646144 1657088 5639464 1612232 5689456 1613488 5693384 +1613488 5693384 1663880 5646248 1663776 5646144 1612232 5689456 +1613488 5693384 1623296 5701624 1663880 5646248 1612232 5689456 +1623296 5701624 1623408 5701720 1663880 5646248 1612232 5689456 +1613488 5693384 1614216 5694264 1623296 5701624 1612232 5689456 +1623296 5701624 1663880 5646248 1612232 5689456 1614216 5694264 +1663776 5646144 1657088 5639464 1612232 5689456 1663880 5646248 +1613488 5693384 1614216 5694264 1612232 5689456 1613384 5693288 +1614216 5694264 1623192 5701576 1623296 5701624 1612232 5689456 +1614216 5694264 1623192 5701576 1612232 5689456 1613488 5693384 +1623296 5701624 1663880 5646248 1612232 5689456 1623192 5701576 +1663880 5646248 1663776 5646144 1612232 5689456 1623296 5701624 +1612232 5689456 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612232 5689456 1663776 5646144 +1612232 5689456 1612880 5692928 1613016 5692968 1613112 5693056 +1601592 5681216 1601128 5681664 1612440 5693112 1612232 5689456 +1612440 5693112 1612544 5693040 1612232 5689456 1601128 5681664 +1601592 5681216 1601128 5681664 1612232 5689456 1601624 5681136 +1601592 5681216 1601160 5681616 1601128 5681664 1612232 5689456 +1601128 5681664 1601088 5681704 1612440 5693112 1612232 5689456 +1601088 5681704 1602016 5695848 1612440 5693112 1612232 5689456 +1612440 5693112 1612544 5693040 1612232 5689456 1602016 5695848 +1602016 5695848 1602112 5695896 1612440 5693112 1612232 5689456 +1602016 5695848 1602112 5695896 1612232 5689456 1601088 5681704 +1612440 5693112 1612544 5693040 1612232 5689456 1602112 5695896 +1602112 5695896 1612408 5693168 1612440 5693112 1612232 5689456 +1602112 5695896 1602160 5695928 1612408 5693168 1612232 5689456 +1612440 5693112 1612544 5693040 1612232 5689456 1612408 5693168 +1602160 5695928 1612400 5693248 1612408 5693168 1612232 5689456 +1612408 5693168 1612440 5693112 1612232 5689456 1602160 5695928 +1602112 5695896 1602160 5695928 1612232 5689456 1602016 5695848 +1601088 5681704 1602016 5695848 1612232 5689456 1601128 5681664 +1601128 5681664 1601088 5681704 1612232 5689456 1601592 5681216 +1657088 5639464 1612232 5689456 1663776 5646144 1663688 5645984 +1601088 5681704 1600992 5681736 1602016 5695848 1612232 5689456 +1614216 5694264 1615200 5695576 1623192 5701576 1612232 5689456 +1614216 5694264 1615200 5695576 1612232 5689456 1613488 5693384 +1623192 5701576 1623296 5701624 1612232 5689456 1615200 5695576 +1615200 5695576 1615376 5695816 1623192 5701576 1612232 5689456 +1613488 5693384 1614120 5694152 1614216 5694264 1612232 5689456 +1614216 5694264 1615200 5695576 1612232 5689456 1614120 5694152 +1613488 5693384 1614120 5694152 1612232 5689456 1613384 5693288 +1613488 5693384 1613584 5693568 1614120 5694152 1612232 5689456 +1614216 5694264 1615056 5695464 1615200 5695576 1612232 5689456 +1601592 5681064 1612232 5689456 1657088 5639464 1601560 5681032 +1663880 5646248 1612288 5689416 1623296 5701624 1623408 5701720 +1623296 5701624 1612288 5689416 1612232 5689456 1623192 5701576 +1612232 5689456 1615200 5695576 1623192 5701576 1612288 5689416 +1623192 5701576 1623296 5701624 1612288 5689416 1615200 5695576 +1612232 5689456 1612288 5689416 1663880 5646248 1663776 5646144 +1612232 5689456 1612288 5689416 1663776 5646144 1657088 5639464 +1612288 5689416 1663880 5646248 1663776 5646144 1657088 5639464 +1615200 5695576 1615376 5695816 1623192 5701576 1612288 5689416 +1612232 5689456 1612288 5689416 1657088 5639464 1601592 5681064 +1612288 5689416 1663776 5646144 1657088 5639464 1601592 5681064 +1612232 5689456 1612288 5689416 1601592 5681064 1601624 5681136 +1612232 5689456 1612288 5689416 1601624 5681136 1601592 5681216 +1612288 5689416 1657088 5639464 1601592 5681064 1601624 5681136 +1612288 5689416 1601624 5681136 1612232 5689456 1615200 5695576 +1612288 5689416 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1612288 5689416 1623192 5701576 +1663776 5646144 1663688 5645984 1657088 5639464 1612288 5689416 +1612232 5689456 1614216 5694264 1615200 5695576 1612288 5689416 +1612232 5689456 1614120 5694152 1614216 5694264 1612288 5689416 +1615200 5695576 1623192 5701576 1612288 5689416 1614216 5694264 +1612232 5689456 1614120 5694152 1612288 5689416 1601624 5681136 +1614216 5694264 1615200 5695576 1612288 5689416 1614120 5694152 +1612232 5689456 1613488 5693384 1614120 5694152 1612288 5689416 +1614120 5694152 1614216 5694264 1612288 5689416 1613488 5693384 +1612232 5689456 1613384 5693288 1613488 5693384 1612288 5689416 +1612232 5689456 1613112 5693056 1613384 5693288 1612288 5689416 +1613112 5693056 1613216 5693184 1613384 5693288 1612288 5689416 +1612232 5689456 1613016 5692968 1613112 5693056 1612288 5689416 +1613112 5693056 1613384 5693288 1612288 5689416 1613016 5692968 +1613384 5693288 1613488 5693384 1612288 5689416 1613112 5693056 +1612232 5689456 1613016 5692968 1612288 5689416 1601624 5681136 +1612232 5689456 1612880 5692928 1613016 5692968 1612288 5689416 +1612232 5689456 1612736 5692952 1612880 5692928 1612288 5689416 +1613016 5692968 1613112 5693056 1612288 5689416 1612880 5692928 +1612232 5689456 1612880 5692928 1612288 5689416 1601624 5681136 +1613488 5693384 1613584 5693568 1614120 5694152 1612288 5689416 +1613488 5693384 1614120 5694152 1612288 5689416 1613384 5693288 +1614216 5694264 1615056 5695464 1615200 5695576 1612288 5689416 +1657088 5639464 1601560 5681032 1601592 5681064 1612288 5689416 +1657088 5639464 1612312 5689384 1612288 5689416 1663776 5646144 +1612288 5689416 1663880 5646248 1663776 5646144 1612312 5689384 +1663776 5646144 1657088 5639464 1612312 5689384 1663880 5646248 +1612288 5689416 1612312 5689384 1601592 5681064 1601624 5681136 +1612288 5689416 1612312 5689384 1601624 5681136 1612232 5689456 +1601624 5681136 1601592 5681216 1612232 5689456 1612312 5689384 +1601592 5681216 1601128 5681664 1612232 5689456 1612312 5689384 +1612232 5689456 1612288 5689416 1612312 5689384 1601592 5681216 +1612312 5689384 1601592 5681064 1601624 5681136 1601592 5681216 +1612288 5689416 1623296 5701624 1663880 5646248 1612312 5689384 +1623296 5701624 1623408 5701720 1663880 5646248 1612312 5689384 +1663880 5646248 1663776 5646144 1612312 5689384 1623296 5701624 +1612312 5689384 1612232 5689456 1612288 5689416 1623296 5701624 +1612288 5689416 1623192 5701576 1623296 5701624 1612312 5689384 +1612288 5689416 1615200 5695576 1623192 5701576 1612312 5689384 +1612288 5689416 1614216 5694264 1615200 5695576 1612312 5689384 +1615200 5695576 1623192 5701576 1612312 5689384 1614216 5694264 +1615200 5695576 1615376 5695816 1623192 5701576 1612312 5689384 +1623296 5701624 1663880 5646248 1612312 5689384 1623192 5701576 +1612288 5689416 1614216 5694264 1612312 5689384 1612232 5689456 +1623192 5701576 1623296 5701624 1612312 5689384 1615200 5695576 +1612312 5689384 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612312 5689384 1663776 5646144 +1657088 5639464 1612312 5689384 1663776 5646144 1663688 5645984 +1612288 5689416 1614120 5694152 1614216 5694264 1612312 5689384 +1612288 5689416 1613488 5693384 1614120 5694152 1612312 5689384 +1614216 5694264 1615200 5695576 1612312 5689384 1614120 5694152 +1612288 5689416 1613488 5693384 1612312 5689384 1612232 5689456 +1614120 5694152 1614216 5694264 1612312 5689384 1613488 5693384 +1613488 5693384 1613584 5693568 1614120 5694152 1612312 5689384 +1612288 5689416 1613384 5693288 1613488 5693384 1612312 5689384 +1613488 5693384 1614120 5694152 1612312 5689384 1613384 5693288 +1612288 5689416 1613112 5693056 1613384 5693288 1612312 5689384 +1612288 5689416 1613016 5692968 1613112 5693056 1612312 5689384 +1613112 5693056 1613216 5693184 1613384 5693288 1612312 5689384 +1612288 5689416 1612880 5692928 1613016 5692968 1612312 5689384 +1613112 5693056 1613384 5693288 1612312 5689384 1613016 5692968 +1612288 5689416 1613016 5692968 1612312 5689384 1612232 5689456 +1613384 5693288 1613488 5693384 1612312 5689384 1613112 5693056 +1614216 5694264 1615056 5695464 1615200 5695576 1612312 5689384 +1601592 5681064 1612312 5689384 1657088 5639464 1601560 5681032 +1612312 5689384 1612336 5689264 1601592 5681064 1601624 5681136 +1612312 5689384 1612336 5689264 1601624 5681136 1601592 5681216 +1612312 5689384 1612336 5689264 1601592 5681216 1612232 5689456 +1601592 5681216 1601128 5681664 1612232 5689456 1612336 5689264 +1612312 5689384 1612336 5689264 1612232 5689456 1612288 5689416 +1612336 5689264 1601624 5681136 1601592 5681216 1612232 5689456 +1612336 5689264 1601592 5681064 1601624 5681136 1601592 5681216 +1612312 5689384 1657088 5639464 1612336 5689264 1612232 5689456 +1657088 5639464 1612336 5689264 1612312 5689384 1663776 5646144 +1612312 5689384 1663880 5646248 1663776 5646144 1612336 5689264 +1612312 5689384 1623296 5701624 1663880 5646248 1612336 5689264 +1623296 5701624 1623408 5701720 1663880 5646248 1612336 5689264 +1663880 5646248 1663776 5646144 1612336 5689264 1623296 5701624 +1612312 5689384 1623192 5701576 1623296 5701624 1612336 5689264 +1623296 5701624 1663880 5646248 1612336 5689264 1623192 5701576 +1612312 5689384 1615200 5695576 1623192 5701576 1612336 5689264 +1612312 5689384 1614216 5694264 1615200 5695576 1612336 5689264 +1612312 5689384 1614120 5694152 1614216 5694264 1612336 5689264 +1614216 5694264 1615200 5695576 1612336 5689264 1614120 5694152 +1615200 5695576 1615376 5695816 1623192 5701576 1612336 5689264 +1623192 5701576 1623296 5701624 1612336 5689264 1615200 5695576 +1615200 5695576 1623192 5701576 1612336 5689264 1614216 5694264 +1612336 5689264 1612232 5689456 1612312 5689384 1614120 5694152 +1663776 5646144 1657088 5639464 1612336 5689264 1663880 5646248 +1612336 5689264 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612336 5689264 1663776 5646144 +1657088 5639464 1612336 5689264 1663776 5646144 1663688 5645984 +1612312 5689384 1613488 5693384 1614120 5694152 1612336 5689264 +1612312 5689384 1613384 5693288 1613488 5693384 1612336 5689264 +1614120 5694152 1614216 5694264 1612336 5689264 1613488 5693384 +1612312 5689384 1613488 5693384 1612336 5689264 1612232 5689456 +1613488 5693384 1613584 5693568 1614120 5694152 1612336 5689264 +1614216 5694264 1615056 5695464 1615200 5695576 1612336 5689264 +1601592 5681064 1612336 5689264 1657088 5639464 1601560 5681032 +1612336 5689264 1612320 5689216 1601592 5681064 1601624 5681136 +1612336 5689264 1612320 5689216 1601624 5681136 1601592 5681216 +1612336 5689264 1612320 5689216 1601592 5681216 1612232 5689456 +1601592 5681216 1601128 5681664 1612232 5689456 1612320 5689216 +1612336 5689264 1612320 5689216 1612232 5689456 1612312 5689384 +1601592 5681216 1601160 5681616 1601128 5681664 1612320 5689216 +1612232 5689456 1612288 5689416 1612312 5689384 1612320 5689216 +1612232 5689456 1612312 5689384 1612320 5689216 1601128 5681664 +1612320 5689216 1601624 5681136 1601592 5681216 1601128 5681664 +1612320 5689216 1601592 5681064 1601624 5681136 1601592 5681216 +1612336 5689264 1657088 5639464 1612320 5689216 1612312 5689384 +1657088 5639464 1612320 5689216 1612336 5689264 1663776 5646144 +1612336 5689264 1663880 5646248 1663776 5646144 1612320 5689216 +1612336 5689264 1623296 5701624 1663880 5646248 1612320 5689216 +1623296 5701624 1623408 5701720 1663880 5646248 1612320 5689216 +1612336 5689264 1623192 5701576 1623296 5701624 1612320 5689216 +1663880 5646248 1663776 5646144 1612320 5689216 1623296 5701624 +1612320 5689216 1612312 5689384 1612336 5689264 1623296 5701624 +1663776 5646144 1657088 5639464 1612320 5689216 1663880 5646248 +1612320 5689216 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1612320 5689216 1663776 5646144 +1601128 5681664 1601088 5681704 1612232 5689456 1612320 5689216 +1601128 5681664 1601088 5681704 1612320 5689216 1601592 5681216 +1612232 5689456 1612312 5689384 1612320 5689216 1601088 5681704 +1601088 5681704 1602016 5695848 1612232 5689456 1612320 5689216 +1657088 5639464 1612320 5689216 1663776 5646144 1663688 5645984 +1601592 5681064 1612320 5689216 1657088 5639464 1601560 5681032 +1612320 5689216 1612192 5689088 1601592 5681064 1601624 5681136 +1612320 5689216 1612192 5689088 1601624 5681136 1601592 5681216 +1612320 5689216 1612192 5689088 1601592 5681216 1601128 5681664 +1612320 5689216 1612192 5689088 1601128 5681664 1601088 5681704 +1601592 5681216 1601160 5681616 1601128 5681664 1612192 5689088 +1612192 5689088 1601592 5681216 1601128 5681664 1601088 5681704 +1612192 5689088 1601624 5681136 1601592 5681216 1601128 5681664 +1612192 5689088 1601592 5681064 1601624 5681136 1601592 5681216 +1612320 5689216 1657088 5639464 1612192 5689088 1601088 5681704 +1657088 5639464 1612192 5689088 1612320 5689216 1663776 5646144 +1612192 5689088 1657088 5639464 1601592 5681064 1601624 5681136 +1612320 5689216 1612192 5689088 1601088 5681704 1612232 5689456 +1612192 5689088 1601128 5681664 1601088 5681704 1612232 5689456 +1612320 5689216 1612192 5689088 1612232 5689456 1612312 5689384 +1612320 5689216 1657088 5639464 1612192 5689088 1612232 5689456 +1601088 5681704 1602016 5695848 1612232 5689456 1612192 5689088 +1602016 5695848 1602112 5695896 1612232 5689456 1612192 5689088 +1601088 5681704 1602016 5695848 1612192 5689088 1601128 5681664 +1602112 5695896 1602160 5695928 1612232 5689456 1612192 5689088 +1602016 5695848 1602112 5695896 1612192 5689088 1601088 5681704 +1612232 5689456 1612320 5689216 1612192 5689088 1602112 5695896 +1601088 5681704 1600992 5681736 1602016 5695848 1612192 5689088 +1601592 5681064 1612192 5689088 1657088 5639464 1601560 5681032 +1601088 5681704 1612088 5689040 1612192 5689088 1601128 5681664 +1612192 5689088 1601592 5681216 1601128 5681664 1612088 5689040 +1601128 5681664 1601088 5681704 1612088 5689040 1601592 5681216 +1601592 5681216 1601160 5681616 1601128 5681664 1612088 5689040 +1612192 5689088 1601624 5681136 1601592 5681216 1612088 5689040 +1601592 5681216 1601128 5681664 1612088 5689040 1601624 5681136 +1612192 5689088 1601592 5681064 1601624 5681136 1612088 5689040 +1601624 5681136 1601592 5681216 1612088 5689040 1601592 5681064 +1612192 5689088 1657088 5639464 1601592 5681064 1612088 5689040 +1612088 5689040 1602016 5695848 1612192 5689088 1601592 5681064 +1601088 5681704 1602016 5695848 1612088 5689040 1601128 5681664 +1612192 5689088 1612088 5689040 1602016 5695848 1602112 5695896 +1612192 5689088 1612088 5689040 1602112 5695896 1612232 5689456 +1612192 5689088 1601592 5681064 1612088 5689040 1612232 5689456 +1612088 5689040 1601088 5681704 1602016 5695848 1602112 5695896 +1602112 5695896 1602160 5695928 1612232 5689456 1612088 5689040 +1602160 5695928 1612408 5693168 1612232 5689456 1612088 5689040 +1612232 5689456 1612192 5689088 1612088 5689040 1602160 5695928 +1612088 5689040 1602016 5695848 1602112 5695896 1602160 5695928 +1612192 5689088 1612088 5689040 1612232 5689456 1612320 5689216 +1602016 5695848 1612088 5689040 1601088 5681704 1600992 5681736 +1612088 5689040 1611920 5689032 1602016 5695848 1602112 5695896 +1612088 5689040 1601088 5681704 1611920 5689032 1602112 5695896 +1601088 5681704 1611920 5689032 1612088 5689040 1601128 5681664 +1612088 5689040 1601592 5681216 1601128 5681664 1611920 5689032 +1601592 5681216 1601160 5681616 1601128 5681664 1611920 5689032 +1612088 5689040 1601624 5681136 1601592 5681216 1611920 5689032 +1601592 5681216 1601128 5681664 1611920 5689032 1601624 5681136 +1612088 5689040 1601592 5681064 1601624 5681136 1611920 5689032 +1611920 5689032 1602112 5695896 1612088 5689040 1601624 5681136 +1601128 5681664 1601088 5681704 1611920 5689032 1601592 5681216 +1611920 5689032 1601088 5681704 1602016 5695848 1602112 5695896 +1601088 5681704 1602016 5695848 1611920 5689032 1601128 5681664 +1612088 5689040 1611920 5689032 1602112 5695896 1602160 5695928 +1611920 5689032 1602016 5695848 1602112 5695896 1602160 5695928 +1612088 5689040 1601624 5681136 1611920 5689032 1602160 5695928 +1612088 5689040 1611920 5689032 1602160 5695928 1612232 5689456 +1602160 5695928 1612408 5693168 1612232 5689456 1611920 5689032 +1612088 5689040 1611920 5689032 1612232 5689456 1612192 5689088 +1612088 5689040 1601624 5681136 1611920 5689032 1612232 5689456 +1602160 5695928 1612400 5693248 1612408 5693168 1611920 5689032 +1612408 5693168 1612440 5693112 1612232 5689456 1611920 5689032 +1612232 5689456 1612088 5689040 1611920 5689032 1612408 5693168 +1611920 5689032 1602112 5695896 1602160 5695928 1612408 5693168 +1602016 5695848 1611920 5689032 1601088 5681704 1600992 5681736 +1611920 5689032 1611688 5689072 1602016 5695848 1602112 5695896 +1611688 5689072 1601088 5681704 1602016 5695848 1602112 5695896 +1611920 5689032 1611688 5689072 1602112 5695896 1602160 5695928 +1611688 5689072 1602016 5695848 1602112 5695896 1602160 5695928 +1611920 5689032 1601088 5681704 1611688 5689072 1602160 5695928 +1601088 5681704 1611688 5689072 1611920 5689032 1601128 5681664 +1601088 5681704 1602016 5695848 1611688 5689072 1601128 5681664 +1611920 5689032 1601592 5681216 1601128 5681664 1611688 5689072 +1611920 5689032 1601624 5681136 1601592 5681216 1611688 5689072 +1601128 5681664 1601088 5681704 1611688 5689072 1601592 5681216 +1601592 5681216 1601160 5681616 1601128 5681664 1611688 5689072 +1611920 5689032 1612088 5689040 1601624 5681136 1611688 5689072 +1601592 5681216 1601128 5681664 1611688 5689072 1601624 5681136 +1611688 5689072 1602160 5695928 1611920 5689032 1601624 5681136 +1611920 5689032 1611688 5689072 1602160 5695928 1612408 5693168 +1611920 5689032 1611688 5689072 1612408 5693168 1612232 5689456 +1611688 5689072 1602112 5695896 1602160 5695928 1612408 5693168 +1611920 5689032 1601624 5681136 1611688 5689072 1612232 5689456 +1602160 5695928 1612400 5693248 1612408 5693168 1611688 5689072 +1612408 5693168 1612440 5693112 1612232 5689456 1611688 5689072 +1612232 5689456 1611920 5689032 1611688 5689072 1612440 5693112 +1612440 5693112 1612544 5693040 1612232 5689456 1611688 5689072 +1611920 5689032 1611688 5689072 1612232 5689456 1612088 5689040 +1611688 5689072 1602160 5695928 1612408 5693168 1612440 5693112 +1602016 5695848 1611688 5689072 1601088 5681704 1600992 5681736 +1611688 5689072 1611600 5689064 1602016 5695848 1602112 5695896 +1601088 5681704 1611600 5689064 1611688 5689072 1601128 5681664 +1611688 5689072 1601592 5681216 1601128 5681664 1611600 5689064 +1601128 5681664 1601088 5681704 1611600 5689064 1601592 5681216 +1611688 5689072 1601592 5681216 1611600 5689064 1602112 5695896 +1611600 5689064 1601088 5681704 1602016 5695848 1602112 5695896 +1601088 5681704 1602016 5695848 1611600 5689064 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1611600 5689064 +1611688 5689072 1601624 5681136 1601592 5681216 1611600 5689064 +1611688 5689072 1611920 5689032 1601624 5681136 1611600 5689064 +1601592 5681216 1601128 5681664 1611600 5689064 1601624 5681136 +1611688 5689072 1611920 5689032 1611600 5689064 1602112 5695896 +1611920 5689032 1612088 5689040 1601624 5681136 1611600 5689064 +1601624 5681136 1601592 5681216 1611600 5689064 1611920 5689032 +1611688 5689072 1611600 5689064 1602112 5695896 1602160 5695928 +1611600 5689064 1602016 5695848 1602112 5695896 1602160 5695928 +1611688 5689072 1611920 5689032 1611600 5689064 1602160 5695928 +1611688 5689072 1611600 5689064 1602160 5695928 1612408 5693168 +1611688 5689072 1611920 5689032 1611600 5689064 1612408 5693168 +1611600 5689064 1602112 5695896 1602160 5695928 1612408 5693168 +1602160 5695928 1612400 5693248 1612408 5693168 1611600 5689064 +1611688 5689072 1611600 5689064 1612408 5693168 1612440 5693112 +1611688 5689072 1611920 5689032 1611600 5689064 1612440 5693112 +1611600 5689064 1602160 5695928 1612408 5693168 1612440 5693112 +1611688 5689072 1611600 5689064 1612440 5693112 1612232 5689456 +1611688 5689072 1611600 5689064 1612232 5689456 1611920 5689032 +1612440 5693112 1612544 5693040 1612232 5689456 1611600 5689064 +1611688 5689072 1611920 5689032 1611600 5689064 1612232 5689456 +1611600 5689064 1612408 5693168 1612440 5693112 1612232 5689456 +1602016 5695848 1611600 5689064 1601088 5681704 1600992 5681736 +1611600 5689064 1611536 5689032 1602016 5695848 1602112 5695896 +1611600 5689064 1611536 5689032 1602112 5695896 1602160 5695928 +1611536 5689032 1602016 5695848 1602112 5695896 1602160 5695928 +1611600 5689064 1601088 5681704 1611536 5689032 1602160 5695928 +1601088 5681704 1611536 5689032 1611600 5689064 1601128 5681664 +1611600 5689064 1601592 5681216 1601128 5681664 1611536 5689032 +1611600 5689064 1601624 5681136 1601592 5681216 1611536 5689032 +1601592 5681216 1601128 5681664 1611536 5689032 1601624 5681136 +1611536 5689032 1602160 5695928 1611600 5689064 1601624 5681136 +1601128 5681664 1601088 5681704 1611536 5689032 1601592 5681216 +1611536 5689032 1601088 5681704 1602016 5695848 1602112 5695896 +1601088 5681704 1602016 5695848 1611536 5689032 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1611536 5689032 +1611600 5689064 1611920 5689032 1601624 5681136 1611536 5689032 +1611600 5689064 1611688 5689072 1611920 5689032 1611536 5689032 +1601624 5681136 1601592 5681216 1611536 5689032 1611920 5689032 +1611600 5689064 1611688 5689072 1611536 5689032 1602160 5695928 +1611920 5689032 1612088 5689040 1601624 5681136 1611536 5689032 +1611920 5689032 1601624 5681136 1611536 5689032 1611688 5689072 +1611600 5689064 1611536 5689032 1602160 5695928 1612408 5693168 +1611536 5689032 1602112 5695896 1602160 5695928 1612408 5693168 +1611600 5689064 1611688 5689072 1611536 5689032 1612408 5693168 +1611600 5689064 1611536 5689032 1612408 5693168 1612440 5693112 +1611600 5689064 1611688 5689072 1611536 5689032 1612440 5693112 +1611536 5689032 1602160 5695928 1612408 5693168 1612440 5693112 +1602160 5695928 1612400 5693248 1612408 5693168 1611536 5689032 +1611600 5689064 1611536 5689032 1612440 5693112 1612232 5689456 +1602016 5695848 1611536 5689032 1601088 5681704 1600992 5681736 +1611536 5689032 1611520 5689000 1601624 5681136 1601592 5681216 +1611536 5689032 1611520 5689000 1601592 5681216 1601128 5681664 +1611520 5689000 1601624 5681136 1601592 5681216 1601128 5681664 +1611536 5689032 1611520 5689000 1601128 5681664 1601088 5681704 +1611520 5689000 1601592 5681216 1601128 5681664 1601088 5681704 +1611536 5689032 1611920 5689032 1611520 5689000 1601088 5681704 +1611536 5689032 1611520 5689000 1601088 5681704 1602016 5695848 +1611520 5689000 1601128 5681664 1601088 5681704 1602016 5695848 +1611536 5689032 1611520 5689000 1602016 5695848 1602112 5695896 +1611536 5689032 1611520 5689000 1602112 5695896 1602160 5695928 +1611536 5689032 1611520 5689000 1602160 5695928 1612408 5693168 +1611520 5689000 1602016 5695848 1602112 5695896 1602160 5695928 +1611536 5689032 1611920 5689032 1611520 5689000 1602160 5695928 +1611520 5689000 1601088 5681704 1602016 5695848 1602112 5695896 +1611520 5689000 1611920 5689032 1601624 5681136 1601592 5681216 +1601592 5681216 1601160 5681616 1601128 5681664 1611520 5689000 +1601624 5681136 1611520 5689000 1611920 5689032 1612088 5689040 +1601624 5681136 1601592 5681216 1611520 5689000 1612088 5689040 +1611520 5689000 1611536 5689032 1611920 5689032 1612088 5689040 +1601624 5681136 1611520 5689000 1612088 5689040 1601592 5681064 +1611920 5689032 1611520 5689000 1611536 5689032 1611688 5689072 +1611536 5689032 1611600 5689064 1611688 5689072 1611520 5689000 +1611520 5689000 1602160 5695928 1611536 5689032 1611600 5689064 +1611920 5689032 1612088 5689040 1611520 5689000 1611688 5689072 +1611688 5689072 1611920 5689032 1611520 5689000 1611600 5689064 +1601088 5681704 1600992 5681736 1602016 5695848 1611520 5689000 +1601088 5681704 1611480 5688984 1611520 5689000 1601128 5681664 +1611520 5689000 1601592 5681216 1601128 5681664 1611480 5688984 +1611520 5689000 1601624 5681136 1601592 5681216 1611480 5688984 +1601592 5681216 1601128 5681664 1611480 5688984 1601624 5681136 +1601128 5681664 1601088 5681704 1611480 5688984 1601592 5681216 +1611520 5689000 1611480 5688984 1602016 5695848 1602112 5695896 +1611520 5689000 1611480 5688984 1602112 5695896 1602160 5695928 +1611520 5689000 1611480 5688984 1602160 5695928 1611536 5689032 +1602160 5695928 1612408 5693168 1611536 5689032 1611480 5688984 +1611536 5689032 1611520 5689000 1611480 5688984 1612408 5693168 +1611480 5688984 1602112 5695896 1602160 5695928 1612408 5693168 +1611480 5688984 1602016 5695848 1602112 5695896 1602160 5695928 +1611520 5689000 1612088 5689040 1601624 5681136 1611480 5688984 +1601624 5681136 1601592 5681216 1611480 5688984 1612088 5689040 +1611480 5688984 1611536 5689032 1611520 5689000 1612088 5689040 +1611480 5688984 1601088 5681704 1602016 5695848 1602112 5695896 +1601088 5681704 1602016 5695848 1611480 5688984 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1611480 5688984 +1611520 5689000 1611920 5689032 1612088 5689040 1611480 5688984 +1612088 5689040 1601624 5681136 1611480 5688984 1611920 5689032 +1611520 5689000 1611920 5689032 1611480 5688984 1611536 5689032 +1611520 5689000 1611688 5689072 1611920 5689032 1611480 5688984 +1612088 5689040 1601592 5681064 1601624 5681136 1611480 5688984 +1612408 5693168 1612440 5693112 1611536 5689032 1611480 5688984 +1602160 5695928 1612400 5693248 1612408 5693168 1611480 5688984 +1602016 5695848 1611480 5688984 1601088 5681704 1600992 5681736 +1611480 5688984 1611392 5688904 1601624 5681136 1601592 5681216 +1611480 5688984 1611392 5688904 1601592 5681216 1601128 5681664 +1611392 5688904 1601624 5681136 1601592 5681216 1601128 5681664 +1611480 5688984 1611392 5688904 1601128 5681664 1601088 5681704 +1611392 5688904 1601592 5681216 1601128 5681664 1601088 5681704 +1612088 5689040 1611392 5688904 1611480 5688984 1611920 5689032 +1611480 5688984 1611920 5689032 1611392 5688904 1601088 5681704 +1611480 5688984 1611392 5688904 1601088 5681704 1602016 5695848 +1611392 5688904 1601128 5681664 1601088 5681704 1602016 5695848 +1611480 5688984 1611392 5688904 1602016 5695848 1602112 5695896 +1611480 5688984 1611392 5688904 1602112 5695896 1602160 5695928 +1611480 5688984 1611392 5688904 1602160 5695928 1612408 5693168 +1611480 5688984 1611392 5688904 1612408 5693168 1611536 5689032 +1611392 5688904 1602112 5695896 1602160 5695928 1612408 5693168 +1611392 5688904 1602016 5695848 1602112 5695896 1602160 5695928 +1611480 5688984 1611920 5689032 1611392 5688904 1612408 5693168 +1611392 5688904 1601088 5681704 1602016 5695848 1602112 5695896 +1611392 5688904 1612088 5689040 1601624 5681136 1601592 5681216 +1612088 5689040 1601624 5681136 1611392 5688904 1611920 5689032 +1601592 5681216 1601160 5681616 1601128 5681664 1611392 5688904 +1611480 5688984 1611520 5689000 1611920 5689032 1611392 5688904 +1611920 5689032 1612088 5689040 1611392 5688904 1611520 5689000 +1611520 5689000 1611688 5689072 1611920 5689032 1611392 5688904 +1611480 5688984 1611520 5689000 1611392 5688904 1612408 5693168 +1601624 5681136 1611392 5688904 1612088 5689040 1601592 5681064 +1601624 5681136 1601592 5681216 1611392 5688904 1601592 5681064 +1611392 5688904 1611920 5689032 1612088 5689040 1601592 5681064 +1612088 5689040 1612192 5689088 1601592 5681064 1611392 5688904 +1602160 5695928 1612400 5693248 1612408 5693168 1611392 5688904 +1601088 5681704 1600992 5681736 1602016 5695848 1611392 5688904 +1612088 5689040 1611360 5688848 1611392 5688904 1611920 5689032 +1611392 5688904 1611520 5689000 1611920 5689032 1611360 5688848 +1611520 5689000 1611688 5689072 1611920 5689032 1611360 5688848 +1611360 5688848 1601592 5681064 1611392 5688904 1611520 5689000 +1611920 5689032 1612088 5689040 1611360 5688848 1611520 5689000 +1612088 5689040 1601592 5681064 1611360 5688848 1611920 5689032 +1611392 5688904 1611480 5688984 1611520 5689000 1611360 5688848 +1611392 5688904 1611360 5688848 1601592 5681064 1601624 5681136 +1611392 5688904 1611360 5688848 1601624 5681136 1601592 5681216 +1611392 5688904 1611360 5688848 1601592 5681216 1601128 5681664 +1611392 5688904 1611360 5688848 1601128 5681664 1601088 5681704 +1611360 5688848 1601592 5681216 1601128 5681664 1601088 5681704 +1611392 5688904 1611360 5688848 1601088 5681704 1602016 5695848 +1611360 5688848 1601128 5681664 1601088 5681704 1602016 5695848 +1611392 5688904 1611360 5688848 1602016 5695848 1602112 5695896 +1611360 5688848 1601088 5681704 1602016 5695848 1602112 5695896 +1611392 5688904 1611360 5688848 1602112 5695896 1602160 5695928 +1611392 5688904 1611360 5688848 1602160 5695928 1612408 5693168 +1611360 5688848 1602016 5695848 1602112 5695896 1602160 5695928 +1611360 5688848 1601624 5681136 1601592 5681216 1601128 5681664 +1611392 5688904 1611520 5689000 1611360 5688848 1602160 5695928 +1611360 5688848 1612088 5689040 1601592 5681064 1601624 5681136 +1601592 5681216 1601160 5681616 1601128 5681664 1611360 5688848 +1611360 5688848 1601592 5681064 1601624 5681136 1601592 5681216 +1601592 5681064 1611360 5688848 1612088 5689040 1612192 5689088 +1601088 5681704 1600992 5681736 1602016 5695848 1611360 5688848 +1611360 5688848 1611360 5688736 1601592 5681064 1601624 5681136 +1611360 5688848 1612088 5689040 1611360 5688736 1601624 5681136 +1612088 5689040 1611360 5688736 1611360 5688848 1611920 5689032 +1611360 5688848 1611520 5689000 1611920 5689032 1611360 5688736 +1611360 5688848 1611392 5688904 1611520 5689000 1611360 5688736 +1611520 5689000 1611688 5689072 1611920 5689032 1611360 5688736 +1611520 5689000 1611920 5689032 1611360 5688736 1611392 5688904 +1611360 5688736 1601624 5681136 1611360 5688848 1611392 5688904 +1611920 5689032 1612088 5689040 1611360 5688736 1611520 5689000 +1611360 5688736 1612088 5689040 1601592 5681064 1601624 5681136 +1612088 5689040 1601592 5681064 1611360 5688736 1611920 5689032 +1611392 5688904 1611480 5688984 1611520 5689000 1611360 5688736 +1611360 5688848 1611360 5688736 1601624 5681136 1601592 5681216 +1611360 5688848 1611360 5688736 1601592 5681216 1601128 5681664 +1611360 5688848 1611360 5688736 1601128 5681664 1601088 5681704 +1611360 5688848 1611360 5688736 1601088 5681704 1602016 5695848 +1611360 5688736 1601128 5681664 1601088 5681704 1602016 5695848 +1611360 5688848 1611360 5688736 1602016 5695848 1602112 5695896 +1611360 5688736 1601592 5681216 1601128 5681664 1601088 5681704 +1611360 5688736 1601592 5681064 1601624 5681136 1601592 5681216 +1611360 5688848 1611392 5688904 1611360 5688736 1602016 5695848 +1601592 5681216 1601160 5681616 1601128 5681664 1611360 5688736 +1611360 5688736 1601624 5681136 1601592 5681216 1601128 5681664 +1601592 5681064 1611360 5688736 1612088 5689040 1612192 5689088 +1601088 5681704 1600992 5681736 1602016 5695848 1611360 5688736 +1612192 5689088 1611416 5688480 1601592 5681064 1612088 5689040 +1611416 5688480 1657088 5639464 1601592 5681064 1612088 5689040 +1612192 5689088 1657088 5639464 1611416 5688480 1612088 5689040 +1601592 5681064 1611360 5688736 1612088 5689040 1611416 5688480 +1601592 5681064 1601624 5681136 1611360 5688736 1611416 5688480 +1601624 5681136 1601592 5681216 1611360 5688736 1611416 5688480 +1601624 5681136 1601592 5681216 1611416 5688480 1601592 5681064 +1601592 5681064 1601624 5681136 1611416 5688480 1657088 5639464 +1611360 5688736 1611920 5689032 1612088 5689040 1611416 5688480 +1611360 5688736 1611520 5689000 1611920 5689032 1611416 5688480 +1611520 5689000 1611688 5689072 1611920 5689032 1611416 5688480 +1611360 5688736 1611392 5688904 1611520 5689000 1611416 5688480 +1611920 5689032 1612088 5689040 1611416 5688480 1611520 5689000 +1601592 5681216 1601128 5681664 1611360 5688736 1611416 5688480 +1601128 5681664 1601088 5681704 1611360 5688736 1611416 5688480 +1601088 5681704 1602016 5695848 1611360 5688736 1611416 5688480 +1601592 5681216 1601128 5681664 1611416 5688480 1601624 5681136 +1601592 5681216 1601160 5681616 1601128 5681664 1611416 5688480 +1601128 5681664 1601088 5681704 1611416 5688480 1601592 5681216 +1611360 5688736 1611520 5689000 1611416 5688480 1601088 5681704 +1612088 5689040 1612192 5689088 1611416 5688480 1611920 5689032 +1657088 5639464 1611416 5688480 1612192 5689088 1612320 5689216 +1601592 5681064 1611416 5688480 1657088 5639464 1601560 5681032 +1611416 5688480 1611408 5688288 1601592 5681064 1601624 5681136 +1611416 5688480 1611408 5688288 1601624 5681136 1601592 5681216 +1611416 5688480 1611408 5688288 1601592 5681216 1601128 5681664 +1611408 5688288 1601624 5681136 1601592 5681216 1601128 5681664 +1611408 5688288 1601592 5681064 1601624 5681136 1601592 5681216 +1657088 5639464 1611408 5688288 1611416 5688480 1612192 5689088 +1611416 5688480 1612192 5689088 1611408 5688288 1601128 5681664 +1611416 5688480 1612088 5689040 1612192 5689088 1611408 5688288 +1612192 5689088 1657088 5639464 1611408 5688288 1612088 5689040 +1611416 5688480 1612088 5689040 1611408 5688288 1601128 5681664 +1611408 5688288 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1611408 5688288 1612192 5689088 +1601592 5681216 1601160 5681616 1601128 5681664 1611408 5688288 +1611416 5688480 1611408 5688288 1601128 5681664 1601088 5681704 +1611416 5688480 1611408 5688288 1601088 5681704 1611360 5688736 +1601088 5681704 1602016 5695848 1611360 5688736 1611408 5688288 +1611408 5688288 1601592 5681216 1601128 5681664 1601088 5681704 +1611416 5688480 1612088 5689040 1611408 5688288 1611360 5688736 +1611408 5688288 1601128 5681664 1601088 5681704 1611360 5688736 +1611416 5688480 1611920 5689032 1612088 5689040 1611408 5688288 +1657088 5639464 1611408 5688288 1612192 5689088 1612320 5689216 +1601592 5681064 1611408 5688288 1657088 5639464 1601560 5681032 +1611408 5688288 1611488 5688024 1601592 5681064 1601624 5681136 +1611408 5688288 1611488 5688024 1601624 5681136 1601592 5681216 +1611408 5688288 1611488 5688024 1601592 5681216 1601128 5681664 +1611408 5688288 1611488 5688024 1601128 5681664 1601088 5681704 +1611488 5688024 1601592 5681216 1601128 5681664 1601088 5681704 +1611488 5688024 1601624 5681136 1601592 5681216 1601128 5681664 +1611488 5688024 1601592 5681064 1601624 5681136 1601592 5681216 +1611408 5688288 1657088 5639464 1611488 5688024 1601088 5681704 +1657088 5639464 1611488 5688024 1611408 5688288 1612192 5689088 +1611408 5688288 1612088 5689040 1612192 5689088 1611488 5688024 +1611408 5688288 1611416 5688480 1612088 5689040 1611488 5688024 +1611488 5688024 1601088 5681704 1611408 5688288 1612088 5689040 +1612192 5689088 1657088 5639464 1611488 5688024 1612088 5689040 +1611488 5688024 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1611488 5688024 1612192 5689088 +1601592 5681216 1601160 5681616 1601128 5681664 1611488 5688024 +1611408 5688288 1611488 5688024 1601088 5681704 1611360 5688736 +1657088 5639464 1611488 5688024 1612192 5689088 1612320 5689216 +1611488 5688024 1612088 5689040 1612192 5689088 1612320 5689216 +1657088 5639464 1601592 5681064 1611488 5688024 1612320 5689216 +1657088 5639464 1611488 5688024 1612320 5689216 1663776 5646144 +1657088 5639464 1601592 5681064 1611488 5688024 1663776 5646144 +1612320 5689216 1663880 5646248 1663776 5646144 1611488 5688024 +1611488 5688024 1612192 5689088 1612320 5689216 1663776 5646144 +1657088 5639464 1611488 5688024 1663776 5646144 1663688 5645984 +1601592 5681064 1611488 5688024 1657088 5639464 1601560 5681032 +1611488 5688024 1611480 5687816 1601592 5681064 1601624 5681136 +1611488 5688024 1611480 5687816 1601624 5681136 1601592 5681216 +1611488 5688024 1611480 5687816 1601592 5681216 1601128 5681664 +1611488 5688024 1611480 5687816 1601128 5681664 1601088 5681704 +1611488 5688024 1611480 5687816 1601088 5681704 1611408 5688288 +1611480 5687816 1601128 5681664 1601088 5681704 1611408 5688288 +1611480 5687816 1601592 5681216 1601128 5681664 1601088 5681704 +1611480 5687816 1601624 5681136 1601592 5681216 1601128 5681664 +1611480 5687816 1601592 5681064 1601624 5681136 1601592 5681216 +1611488 5688024 1657088 5639464 1611480 5687816 1611408 5688288 +1657088 5639464 1611480 5687816 1611488 5688024 1663776 5646144 +1611480 5687816 1611408 5688288 1611488 5688024 1663776 5646144 +1611480 5687816 1657088 5639464 1601592 5681064 1601624 5681136 +1657088 5639464 1601592 5681064 1611480 5687816 1663776 5646144 +1601592 5681216 1601160 5681616 1601128 5681664 1611480 5687816 +1601088 5681704 1611360 5688736 1611408 5688288 1611480 5687816 +1611488 5688024 1612320 5689216 1663776 5646144 1611480 5687816 +1611488 5688024 1612320 5689216 1611480 5687816 1611408 5688288 +1663776 5646144 1657088 5639464 1611480 5687816 1612320 5689216 +1612320 5689216 1663880 5646248 1663776 5646144 1611480 5687816 +1663776 5646144 1657088 5639464 1611480 5687816 1663880 5646248 +1612320 5689216 1623296 5701624 1663880 5646248 1611480 5687816 +1612320 5689216 1663880 5646248 1611480 5687816 1611488 5688024 +1611488 5688024 1612192 5689088 1612320 5689216 1611480 5687816 +1611488 5688024 1612088 5689040 1612192 5689088 1611480 5687816 +1611488 5688024 1612192 5689088 1611480 5687816 1611408 5688288 +1612320 5689216 1663880 5646248 1611480 5687816 1612192 5689088 +1657088 5639464 1611480 5687816 1663776 5646144 1663688 5645984 +1601592 5681064 1611480 5687816 1657088 5639464 1601560 5681032 +1657088 5639464 1657056 5639384 1601560 5681032 1611480 5687816 +1601592 5681064 1601624 5681136 1611480 5687816 1601560 5681032 +1611480 5687816 1663776 5646144 1657088 5639464 1601560 5681032 +1601560 5681032 1611456 5687704 1657088 5639464 1657056 5639384 +1657088 5639464 1611456 5687704 1611480 5687816 1663776 5646144 +1657088 5639464 1601560 5681032 1611456 5687704 1663776 5646144 +1611480 5687816 1663880 5646248 1663776 5646144 1611456 5687704 +1611456 5687704 1601560 5681032 1611480 5687816 1663880 5646248 +1663776 5646144 1657088 5639464 1611456 5687704 1663880 5646248 +1611480 5687816 1612320 5689216 1663880 5646248 1611456 5687704 +1663880 5646248 1663776 5646144 1611456 5687704 1612320 5689216 +1611480 5687816 1612320 5689216 1611456 5687704 1601560 5681032 +1612320 5689216 1623296 5701624 1663880 5646248 1611456 5687704 +1611480 5687816 1612192 5689088 1612320 5689216 1611456 5687704 +1611480 5687816 1612192 5689088 1611456 5687704 1601560 5681032 +1612320 5689216 1663880 5646248 1611456 5687704 1612192 5689088 +1611480 5687816 1611488 5688024 1612192 5689088 1611456 5687704 +1657088 5639464 1611456 5687704 1663776 5646144 1663688 5645984 +1611480 5687816 1611456 5687704 1601560 5681032 1601592 5681064 +1611480 5687816 1611456 5687704 1601592 5681064 1601624 5681136 +1611480 5687816 1611456 5687704 1601624 5681136 1601592 5681216 +1611480 5687816 1611456 5687704 1601592 5681216 1601128 5681664 +1611480 5687816 1611456 5687704 1601128 5681664 1601088 5681704 +1611480 5687816 1611456 5687704 1601088 5681704 1611408 5688288 +1611480 5687816 1611456 5687704 1611408 5688288 1611488 5688024 +1611456 5687704 1601128 5681664 1601088 5681704 1611408 5688288 +1611456 5687704 1601592 5681216 1601128 5681664 1601088 5681704 +1611456 5687704 1601624 5681136 1601592 5681216 1601128 5681664 +1611456 5687704 1601592 5681064 1601624 5681136 1601592 5681216 +1611480 5687816 1612192 5689088 1611456 5687704 1611408 5688288 +1611456 5687704 1657088 5639464 1601560 5681032 1601592 5681064 +1601592 5681216 1601160 5681616 1601128 5681664 1611456 5687704 +1601088 5681704 1611360 5688736 1611408 5688288 1611456 5687704 +1611456 5687704 1601560 5681032 1601592 5681064 1601624 5681136 +1657088 5639464 1611264 5687512 1611456 5687704 1663776 5646144 +1601560 5681032 1611264 5687512 1657088 5639464 1657056 5639384 +1611456 5687704 1611264 5687512 1601560 5681032 1601592 5681064 +1611456 5687704 1657088 5639464 1611264 5687512 1601592 5681064 +1611264 5687512 1657088 5639464 1601560 5681032 1601592 5681064 +1611456 5687704 1611264 5687512 1601592 5681064 1601624 5681136 +1611456 5687704 1657088 5639464 1611264 5687512 1601624 5681136 +1611456 5687704 1611264 5687512 1601624 5681136 1601592 5681216 +1611456 5687704 1657088 5639464 1611264 5687512 1601592 5681216 +1611456 5687704 1611264 5687512 1601592 5681216 1601128 5681664 +1611456 5687704 1657088 5639464 1611264 5687512 1601128 5681664 +1611456 5687704 1611264 5687512 1601128 5681664 1601088 5681704 +1611456 5687704 1657088 5639464 1611264 5687512 1601088 5681704 +1611456 5687704 1611264 5687512 1601088 5681704 1611408 5688288 +1611456 5687704 1657088 5639464 1611264 5687512 1611408 5688288 +1611456 5687704 1611264 5687512 1611408 5688288 1611480 5687816 +1611456 5687704 1657088 5639464 1611264 5687512 1611480 5687816 +1611408 5688288 1611488 5688024 1611480 5687816 1611264 5687512 +1611480 5687816 1611456 5687704 1611264 5687512 1611488 5688024 +1611264 5687512 1601088 5681704 1611408 5688288 1611488 5688024 +1611264 5687512 1601128 5681664 1601088 5681704 1611408 5688288 +1611264 5687512 1601592 5681216 1601128 5681664 1601088 5681704 +1611264 5687512 1601624 5681136 1601592 5681216 1601128 5681664 +1611264 5687512 1601560 5681032 1601592 5681064 1601624 5681136 +1601592 5681216 1601160 5681616 1601128 5681664 1611264 5687512 +1601088 5681704 1611360 5688736 1611408 5688288 1611264 5687512 +1601088 5681704 1602016 5695848 1611360 5688736 1611264 5687512 +1602016 5695848 1611360 5688848 1611360 5688736 1611264 5687512 +1611360 5688736 1611416 5688480 1611408 5688288 1611264 5687512 +1611408 5688288 1611488 5688024 1611264 5687512 1611360 5688736 +1601088 5681704 1602016 5695848 1611264 5687512 1601128 5681664 +1611360 5688736 1611408 5688288 1611264 5687512 1602016 5695848 +1601088 5681704 1600992 5681736 1602016 5695848 1611264 5687512 +1611264 5687512 1601592 5681064 1601624 5681136 1601592 5681216 +1611264 5687512 1611224 5687456 1601560 5681032 1601592 5681064 +1611264 5687512 1657088 5639464 1611224 5687456 1601592 5681064 +1657088 5639464 1611224 5687456 1611264 5687512 1611456 5687704 +1657088 5639464 1611224 5687456 1611456 5687704 1663776 5646144 +1611224 5687456 1601592 5681064 1611264 5687512 1611456 5687704 +1611224 5687456 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1611224 5687456 1611456 5687704 +1601560 5681032 1611224 5687456 1657088 5639464 1657056 5639384 +1611264 5687512 1611224 5687456 1601592 5681064 1601624 5681136 +1611224 5687456 1601560 5681032 1601592 5681064 1601624 5681136 +1611264 5687512 1611456 5687704 1611224 5687456 1601624 5681136 +1611264 5687512 1611224 5687456 1601624 5681136 1601592 5681216 +1611264 5687512 1611456 5687704 1611224 5687456 1601592 5681216 +1611264 5687512 1611224 5687456 1601592 5681216 1601128 5681664 +1611264 5687512 1611456 5687704 1611224 5687456 1601128 5681664 +1611264 5687512 1611224 5687456 1601128 5681664 1601088 5681704 +1611264 5687512 1611456 5687704 1611224 5687456 1601088 5681704 +1611264 5687512 1611224 5687456 1601088 5681704 1602016 5695848 +1611264 5687512 1611456 5687704 1611224 5687456 1602016 5695848 +1611264 5687512 1611224 5687456 1602016 5695848 1611360 5688736 +1611264 5687512 1611456 5687704 1611224 5687456 1611360 5688736 +1602016 5695848 1611360 5688848 1611360 5688736 1611224 5687456 +1611360 5688736 1611264 5687512 1611224 5687456 1611360 5688848 +1602016 5695848 1602112 5695896 1611360 5688848 1611224 5687456 +1611224 5687456 1601088 5681704 1602016 5695848 1611360 5688848 +1611224 5687456 1601128 5681664 1601088 5681704 1602016 5695848 +1611224 5687456 1601592 5681216 1601128 5681664 1601088 5681704 +1611224 5687456 1601592 5681064 1601624 5681136 1601592 5681216 +1601592 5681216 1601160 5681616 1601128 5681664 1611224 5687456 +1611264 5687512 1611224 5687456 1611360 5688736 1611408 5688288 +1611264 5687512 1611456 5687704 1611224 5687456 1611408 5688288 +1611224 5687456 1611360 5688848 1611360 5688736 1611408 5688288 +1611360 5688736 1611416 5688480 1611408 5688288 1611224 5687456 +1611264 5687512 1611224 5687456 1611408 5688288 1611488 5688024 +1601088 5681704 1600992 5681736 1602016 5695848 1611224 5687456 +1611224 5687456 1601624 5681136 1601592 5681216 1601128 5681664 +1657088 5639464 1611288 5687432 1611456 5687704 1663776 5646144 +1611456 5687704 1611288 5687432 1611224 5687456 1611264 5687512 +1611288 5687432 1657088 5639464 1611224 5687456 1611264 5687512 +1611224 5687456 1611288 5687432 1657088 5639464 1601560 5681032 +1611224 5687456 1611288 5687432 1601560 5681032 1601592 5681064 +1611224 5687456 1611288 5687432 1601592 5681064 1601624 5681136 +1611288 5687432 1601560 5681032 1601592 5681064 1601624 5681136 +1611224 5687456 1611264 5687512 1611288 5687432 1601624 5681136 +1611288 5687432 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1611288 5687432 1663776 5646144 +1611288 5687432 1611264 5687512 1611456 5687704 1663776 5646144 +1657088 5639464 1657056 5639384 1601560 5681032 1611288 5687432 +1611456 5687704 1663880 5646248 1663776 5646144 1611288 5687432 +1611224 5687456 1611288 5687432 1601624 5681136 1601592 5681216 +1657088 5639464 1611288 5687432 1663776 5646144 1663688 5645984 +1611288 5687432 1611440 5687464 1663776 5646144 1657088 5639464 +1611288 5687432 1611440 5687464 1657088 5639464 1601560 5681032 +1611440 5687464 1663776 5646144 1657088 5639464 1601560 5681032 +1611288 5687432 1611440 5687464 1601560 5681032 1601592 5681064 +1611288 5687432 1611440 5687464 1601592 5681064 1601624 5681136 +1611440 5687464 1657088 5639464 1601560 5681032 1601592 5681064 +1611288 5687432 1611456 5687704 1611440 5687464 1601592 5681064 +1611456 5687704 1611440 5687464 1611288 5687432 1611264 5687512 +1611288 5687432 1611224 5687456 1611264 5687512 1611440 5687464 +1611440 5687464 1601592 5681064 1611288 5687432 1611264 5687512 +1611440 5687464 1611456 5687704 1663776 5646144 1657088 5639464 +1611456 5687704 1663776 5646144 1611440 5687464 1611264 5687512 +1657088 5639464 1657056 5639384 1601560 5681032 1611440 5687464 +1663776 5646144 1611440 5687464 1611456 5687704 1663880 5646248 +1663776 5646144 1657088 5639464 1611440 5687464 1663880 5646248 +1611440 5687464 1611264 5687512 1611456 5687704 1663880 5646248 +1611456 5687704 1612320 5689216 1663880 5646248 1611440 5687464 +1611456 5687704 1612320 5689216 1611440 5687464 1611264 5687512 +1663880 5646248 1663776 5646144 1611440 5687464 1612320 5689216 +1612320 5689216 1623296 5701624 1663880 5646248 1611440 5687464 +1611456 5687704 1612192 5689088 1612320 5689216 1611440 5687464 +1611456 5687704 1612192 5689088 1611440 5687464 1611264 5687512 +1612320 5689216 1663880 5646248 1611440 5687464 1612192 5689088 +1611456 5687704 1611480 5687816 1612192 5689088 1611440 5687464 +1611456 5687704 1611480 5687816 1611440 5687464 1611264 5687512 +1612192 5689088 1612320 5689216 1611440 5687464 1611480 5687816 +1611480 5687816 1611488 5688024 1612192 5689088 1611440 5687464 +1663776 5646144 1663688 5645984 1657088 5639464 1611440 5687464 +1612320 5689216 1611584 5687552 1611440 5687464 1612192 5689088 +1611584 5687552 1663880 5646248 1611440 5687464 1612192 5689088 +1612320 5689216 1663880 5646248 1611584 5687552 1612192 5689088 +1611440 5687464 1611584 5687552 1663880 5646248 1663776 5646144 +1611440 5687464 1611584 5687552 1663776 5646144 1657088 5639464 +1611440 5687464 1611584 5687552 1657088 5639464 1601560 5681032 +1611440 5687464 1612192 5689088 1611584 5687552 1657088 5639464 +1611584 5687552 1612320 5689216 1663880 5646248 1663776 5646144 +1611584 5687552 1663880 5646248 1663776 5646144 1657088 5639464 +1663880 5646248 1611584 5687552 1612320 5689216 1623296 5701624 +1663880 5646248 1611584 5687552 1623296 5701624 1623408 5701720 +1663880 5646248 1663776 5646144 1611584 5687552 1623296 5701624 +1611584 5687552 1612192 5689088 1612320 5689216 1623296 5701624 +1612320 5689216 1612336 5689264 1623296 5701624 1611584 5687552 +1611440 5687464 1611480 5687816 1612192 5689088 1611584 5687552 +1611440 5687464 1611480 5687816 1611584 5687552 1657088 5639464 +1612192 5689088 1612320 5689216 1611584 5687552 1611480 5687816 +1611440 5687464 1611456 5687704 1611480 5687816 1611584 5687552 +1611440 5687464 1611456 5687704 1611584 5687552 1657088 5639464 +1611440 5687464 1611264 5687512 1611456 5687704 1611584 5687552 +1611480 5687816 1612192 5689088 1611584 5687552 1611456 5687704 +1611480 5687816 1611488 5688024 1612192 5689088 1611584 5687552 +1611488 5688024 1612088 5689040 1612192 5689088 1611584 5687552 +1612192 5689088 1612320 5689216 1611584 5687552 1611488 5688024 +1611480 5687816 1611488 5688024 1611584 5687552 1611456 5687704 +1663776 5646144 1663688 5645984 1657088 5639464 1611584 5687552 +1663880 5646248 1611736 5687600 1623296 5701624 1623408 5701720 +1611584 5687552 1611736 5687600 1663880 5646248 1663776 5646144 +1611584 5687552 1623296 5701624 1611736 5687600 1663776 5646144 +1611736 5687600 1623296 5701624 1663880 5646248 1663776 5646144 +1611584 5687552 1611736 5687600 1663776 5646144 1657088 5639464 +1611584 5687552 1611736 5687600 1657088 5639464 1611440 5687464 +1657088 5639464 1601560 5681032 1611440 5687464 1611736 5687600 +1611736 5687600 1663880 5646248 1663776 5646144 1657088 5639464 +1611584 5687552 1623296 5701624 1611736 5687600 1611440 5687464 +1611736 5687600 1663776 5646144 1657088 5639464 1611440 5687464 +1623296 5701624 1611736 5687600 1611584 5687552 1612320 5689216 +1611736 5687600 1611440 5687464 1611584 5687552 1612320 5689216 +1611584 5687552 1612192 5689088 1612320 5689216 1611736 5687600 +1611584 5687552 1612192 5689088 1611736 5687600 1611440 5687464 +1623296 5701624 1663880 5646248 1611736 5687600 1612320 5689216 +1623296 5701624 1611736 5687600 1612320 5689216 1612336 5689264 +1611584 5687552 1611488 5688024 1612192 5689088 1611736 5687600 +1611584 5687552 1611488 5688024 1611736 5687600 1611440 5687464 +1612192 5689088 1612320 5689216 1611736 5687600 1611488 5688024 +1611488 5688024 1612088 5689040 1612192 5689088 1611736 5687600 +1612192 5689088 1612320 5689216 1611736 5687600 1612088 5689040 +1611488 5688024 1611408 5688288 1612088 5689040 1611736 5687600 +1611488 5688024 1612088 5689040 1611736 5687600 1611584 5687552 +1612320 5689216 1623296 5701624 1611736 5687600 1612192 5689088 +1611584 5687552 1611480 5687816 1611488 5688024 1611736 5687600 +1611584 5687552 1611480 5687816 1611736 5687600 1611440 5687464 +1611488 5688024 1612088 5689040 1611736 5687600 1611480 5687816 +1611584 5687552 1611456 5687704 1611480 5687816 1611736 5687600 +1611584 5687552 1611456 5687704 1611736 5687600 1611440 5687464 +1611584 5687552 1611440 5687464 1611456 5687704 1611736 5687600 +1611480 5687816 1611488 5688024 1611736 5687600 1611456 5687704 +1663776 5646144 1663688 5645984 1657088 5639464 1611736 5687600 +1663880 5646248 1611968 5687600 1623296 5701624 1623408 5701720 +1611736 5687600 1611968 5687600 1663880 5646248 1663776 5646144 +1611736 5687600 1611968 5687600 1663776 5646144 1657088 5639464 +1611968 5687600 1663880 5646248 1663776 5646144 1657088 5639464 +1611736 5687600 1623296 5701624 1611968 5687600 1657088 5639464 +1623296 5701624 1611968 5687600 1611736 5687600 1612320 5689216 +1611968 5687600 1657088 5639464 1611736 5687600 1612320 5689216 +1611968 5687600 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1611968 5687600 1612320 5689216 +1623296 5701624 1611968 5687600 1612320 5689216 1612336 5689264 +1611968 5687600 1611736 5687600 1612320 5689216 1612336 5689264 +1623296 5701624 1663880 5646248 1611968 5687600 1612336 5689264 +1611736 5687600 1611968 5687600 1657088 5639464 1611440 5687464 +1657088 5639464 1601560 5681032 1611440 5687464 1611968 5687600 +1601560 5681032 1601592 5681064 1611440 5687464 1611968 5687600 +1601560 5681032 1601592 5681064 1611968 5687600 1657088 5639464 +1601592 5681064 1611288 5687432 1611440 5687464 1611968 5687600 +1611736 5687600 1611968 5687600 1611440 5687464 1611584 5687552 +1611968 5687600 1663776 5646144 1657088 5639464 1601560 5681032 +1611736 5687600 1612320 5689216 1611968 5687600 1611584 5687552 +1657088 5639464 1657056 5639384 1601560 5681032 1611968 5687600 +1611440 5687464 1611584 5687552 1611968 5687600 1601592 5681064 +1623296 5701624 1611968 5687600 1612336 5689264 1623192 5701576 +1623296 5701624 1663880 5646248 1611968 5687600 1623192 5701576 +1611968 5687600 1612320 5689216 1612336 5689264 1623192 5701576 +1612336 5689264 1615200 5695576 1623192 5701576 1611968 5687600 +1611736 5687600 1612192 5689088 1612320 5689216 1611968 5687600 +1611736 5687600 1612088 5689040 1612192 5689088 1611968 5687600 +1611736 5687600 1612088 5689040 1611968 5687600 1611584 5687552 +1612320 5689216 1612336 5689264 1611968 5687600 1612192 5689088 +1611736 5687600 1611488 5688024 1612088 5689040 1611968 5687600 +1612088 5689040 1612192 5689088 1611968 5687600 1611488 5688024 +1611736 5687600 1611488 5688024 1611968 5687600 1611584 5687552 +1611488 5688024 1611408 5688288 1612088 5689040 1611968 5687600 +1611736 5687600 1611480 5687816 1611488 5688024 1611968 5687600 +1612192 5689088 1612320 5689216 1611968 5687600 1612088 5689040 +1663776 5646144 1663688 5645984 1657088 5639464 1611968 5687600 +1663880 5646248 1612112 5687552 1623296 5701624 1623408 5701720 +1611968 5687600 1612112 5687552 1663880 5646248 1663776 5646144 +1611968 5687600 1612112 5687552 1663776 5646144 1657088 5639464 +1611968 5687600 1612112 5687552 1657088 5639464 1601560 5681032 +1611968 5687600 1612112 5687552 1601560 5681032 1601592 5681064 +1611968 5687600 1612112 5687552 1601592 5681064 1611440 5687464 +1612112 5687552 1601560 5681032 1601592 5681064 1611440 5687464 +1601592 5681064 1611288 5687432 1611440 5687464 1612112 5687552 +1601592 5681064 1611288 5687432 1612112 5687552 1601560 5681032 +1601592 5681064 1601624 5681136 1611288 5687432 1612112 5687552 +1611440 5687464 1611968 5687600 1612112 5687552 1611288 5687432 +1612112 5687552 1657088 5639464 1601560 5681032 1601592 5681064 +1612112 5687552 1663776 5646144 1657088 5639464 1601560 5681032 +1612112 5687552 1663880 5646248 1663776 5646144 1657088 5639464 +1611968 5687600 1623296 5701624 1612112 5687552 1611440 5687464 +1623296 5701624 1612112 5687552 1611968 5687600 1623192 5701576 +1612112 5687552 1611440 5687464 1611968 5687600 1623192 5701576 +1612112 5687552 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1612112 5687552 1623192 5701576 +1657088 5639464 1657056 5639384 1601560 5681032 1612112 5687552 +1611968 5687600 1612112 5687552 1611440 5687464 1611584 5687552 +1612112 5687552 1611288 5687432 1611440 5687464 1611584 5687552 +1611968 5687600 1612112 5687552 1611584 5687552 1611736 5687600 +1611968 5687600 1623192 5701576 1612112 5687552 1611736 5687600 +1612112 5687552 1611440 5687464 1611584 5687552 1611736 5687600 +1611968 5687600 1612336 5689264 1623192 5701576 1612112 5687552 +1611968 5687600 1612336 5689264 1612112 5687552 1611736 5687600 +1623192 5701576 1623296 5701624 1612112 5687552 1612336 5689264 +1611968 5687600 1612320 5689216 1612336 5689264 1612112 5687552 +1611968 5687600 1612192 5689088 1612320 5689216 1612112 5687552 +1611968 5687600 1612192 5689088 1612112 5687552 1611736 5687600 +1612320 5689216 1612336 5689264 1612112 5687552 1612192 5689088 +1612336 5689264 1623192 5701576 1612112 5687552 1612320 5689216 +1612336 5689264 1615200 5695576 1623192 5701576 1612112 5687552 +1623192 5701576 1623296 5701624 1612112 5687552 1615200 5695576 +1612336 5689264 1615200 5695576 1612112 5687552 1612320 5689216 +1615200 5695576 1615376 5695816 1623192 5701576 1612112 5687552 +1612336 5689264 1614216 5694264 1615200 5695576 1612112 5687552 +1611968 5687600 1612088 5689040 1612192 5689088 1612112 5687552 +1611968 5687600 1611488 5688024 1612088 5689040 1612112 5687552 +1612192 5689088 1612320 5689216 1612112 5687552 1612088 5689040 +1611968 5687600 1612088 5689040 1612112 5687552 1611736 5687600 +1663776 5646144 1663688 5645984 1657088 5639464 1612112 5687552 +1612112 5687552 1612184 5687456 1601560 5681032 1601592 5681064 +1612112 5687552 1612184 5687456 1601592 5681064 1611288 5687432 +1601592 5681064 1601624 5681136 1611288 5687432 1612184 5687456 +1612112 5687552 1612184 5687456 1611288 5687432 1611440 5687464 +1612184 5687456 1601592 5681064 1611288 5687432 1611440 5687464 +1612112 5687552 1612184 5687456 1611440 5687464 1611584 5687552 +1612184 5687456 1611288 5687432 1611440 5687464 1611584 5687552 +1612184 5687456 1601560 5681032 1601592 5681064 1611288 5687432 +1657088 5639464 1612184 5687456 1612112 5687552 1663776 5646144 +1612112 5687552 1663880 5646248 1663776 5646144 1612184 5687456 +1663776 5646144 1657088 5639464 1612184 5687456 1663880 5646248 +1612112 5687552 1623296 5701624 1663880 5646248 1612184 5687456 +1623296 5701624 1623408 5701720 1663880 5646248 1612184 5687456 +1663880 5646248 1663776 5646144 1612184 5687456 1623296 5701624 +1612112 5687552 1623296 5701624 1612184 5687456 1611584 5687552 +1612112 5687552 1623192 5701576 1623296 5701624 1612184 5687456 +1612112 5687552 1615200 5695576 1623192 5701576 1612184 5687456 +1623296 5701624 1663880 5646248 1612184 5687456 1623192 5701576 +1612112 5687552 1615200 5695576 1612184 5687456 1611584 5687552 +1623192 5701576 1623296 5701624 1612184 5687456 1615200 5695576 +1612184 5687456 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1612184 5687456 1663776 5646144 +1601560 5681032 1612184 5687456 1657088 5639464 1657056 5639384 +1612112 5687552 1612184 5687456 1611584 5687552 1611736 5687600 +1612184 5687456 1611440 5687464 1611584 5687552 1611736 5687600 +1612112 5687552 1612184 5687456 1611736 5687600 1611968 5687600 +1612112 5687552 1615200 5695576 1612184 5687456 1611968 5687600 +1612184 5687456 1611584 5687552 1611736 5687600 1611968 5687600 +1615200 5695576 1615376 5695816 1623192 5701576 1612184 5687456 +1615200 5695576 1615376 5695816 1612184 5687456 1612112 5687552 +1623192 5701576 1623296 5701624 1612184 5687456 1615376 5695816 +1612112 5687552 1612336 5689264 1615200 5695576 1612184 5687456 +1615200 5695576 1615376 5695816 1612184 5687456 1612336 5689264 +1612112 5687552 1612336 5689264 1612184 5687456 1611968 5687600 +1612112 5687552 1612320 5689216 1612336 5689264 1612184 5687456 +1612112 5687552 1612320 5689216 1612184 5687456 1611968 5687600 +1612112 5687552 1612192 5689088 1612320 5689216 1612184 5687456 +1612336 5689264 1615200 5695576 1612184 5687456 1612320 5689216 +1612336 5689264 1614216 5694264 1615200 5695576 1612184 5687456 +1657088 5639464 1612184 5687456 1663776 5646144 1663688 5645984 +1615376 5695816 1615512 5696024 1623192 5701576 1612184 5687456 +1612184 5687456 1612184 5687376 1601560 5681032 1601592 5681064 +1612184 5687456 1612184 5687376 1601592 5681064 1611288 5687432 +1612184 5687456 1612184 5687376 1611288 5687432 1611440 5687464 +1601592 5681064 1601624 5681136 1611288 5687432 1612184 5687376 +1601624 5681136 1611224 5687456 1611288 5687432 1612184 5687376 +1612184 5687456 1612184 5687376 1611440 5687464 1611584 5687552 +1612184 5687376 1611288 5687432 1611440 5687464 1611584 5687552 +1612184 5687456 1612184 5687376 1611584 5687552 1611736 5687600 +1612184 5687376 1611440 5687464 1611584 5687552 1611736 5687600 +1612184 5687376 1601624 5681136 1611288 5687432 1611440 5687464 +1612184 5687376 1601560 5681032 1601592 5681064 1601624 5681136 +1612184 5687456 1657088 5639464 1612184 5687376 1611736 5687600 +1657088 5639464 1612184 5687376 1612184 5687456 1663776 5646144 +1612184 5687456 1663880 5646248 1663776 5646144 1612184 5687376 +1612184 5687456 1623296 5701624 1663880 5646248 1612184 5687376 +1623296 5701624 1623408 5701720 1663880 5646248 1612184 5687376 +1663880 5646248 1663776 5646144 1612184 5687376 1623296 5701624 +1612184 5687456 1623192 5701576 1623296 5701624 1612184 5687376 +1623296 5701624 1663880 5646248 1612184 5687376 1623192 5701576 +1612184 5687456 1615376 5695816 1623192 5701576 1612184 5687376 +1623192 5701576 1623296 5701624 1612184 5687376 1615376 5695816 +1612184 5687376 1611736 5687600 1612184 5687456 1615376 5695816 +1663776 5646144 1657088 5639464 1612184 5687376 1663880 5646248 +1612184 5687376 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1612184 5687376 1663776 5646144 +1601560 5681032 1612184 5687376 1657088 5639464 1657056 5639384 +1612184 5687456 1612184 5687376 1611736 5687600 1611968 5687600 +1612184 5687376 1611584 5687552 1611736 5687600 1611968 5687600 +1612184 5687456 1612184 5687376 1611968 5687600 1612112 5687552 +1612184 5687456 1615376 5695816 1612184 5687376 1612112 5687552 +1612184 5687376 1611736 5687600 1611968 5687600 1612112 5687552 +1612184 5687456 1615200 5695576 1615376 5695816 1612184 5687376 +1612184 5687456 1612336 5689264 1615200 5695576 1612184 5687376 +1615376 5695816 1623192 5701576 1612184 5687376 1615200 5695576 +1612184 5687456 1612336 5689264 1612184 5687376 1612112 5687552 +1615200 5695576 1615376 5695816 1612184 5687376 1612336 5689264 +1612184 5687456 1612320 5689216 1612336 5689264 1612184 5687376 +1612336 5689264 1614216 5694264 1615200 5695576 1612184 5687376 +1657088 5639464 1612184 5687376 1663776 5646144 1663688 5645984 +1615376 5695816 1615512 5696024 1623192 5701576 1612184 5687376 +1612184 5687376 1612096 5687208 1601560 5681032 1601592 5681064 +1612184 5687376 1612096 5687208 1601592 5681064 1601624 5681136 +1612184 5687376 1612096 5687208 1601624 5681136 1611288 5687432 +1601624 5681136 1611224 5687456 1611288 5687432 1612096 5687208 +1612184 5687376 1612096 5687208 1611288 5687432 1611440 5687464 +1612184 5687376 1612096 5687208 1611440 5687464 1611584 5687552 +1612096 5687208 1601624 5681136 1611288 5687432 1611440 5687464 +1612184 5687376 1612096 5687208 1611584 5687552 1611736 5687600 +1612096 5687208 1611440 5687464 1611584 5687552 1611736 5687600 +1612184 5687376 1612096 5687208 1611736 5687600 1611968 5687600 +1612096 5687208 1611584 5687552 1611736 5687600 1611968 5687600 +1612096 5687208 1611288 5687432 1611440 5687464 1611584 5687552 +1612096 5687208 1601592 5681064 1601624 5681136 1611288 5687432 +1612096 5687208 1601560 5681032 1601592 5681064 1601624 5681136 +1612184 5687376 1657088 5639464 1612096 5687208 1611968 5687600 +1657088 5639464 1612096 5687208 1612184 5687376 1663776 5646144 +1612184 5687376 1663880 5646248 1663776 5646144 1612096 5687208 +1612184 5687376 1623296 5701624 1663880 5646248 1612096 5687208 +1612096 5687208 1611968 5687600 1612184 5687376 1663880 5646248 +1663776 5646144 1657088 5639464 1612096 5687208 1663880 5646248 +1612096 5687208 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1612096 5687208 1663776 5646144 +1601560 5681032 1612096 5687208 1657088 5639464 1657056 5639384 +1612184 5687376 1612096 5687208 1611968 5687600 1612112 5687552 +1657088 5639464 1612096 5687208 1663776 5646144 1663688 5645984 +1612096 5687208 1612088 5687168 1601560 5681032 1601592 5681064 +1612096 5687208 1612088 5687168 1601592 5681064 1601624 5681136 +1612096 5687208 1612088 5687168 1601624 5681136 1611288 5687432 +1601624 5681136 1611224 5687456 1611288 5687432 1612088 5687168 +1612096 5687208 1612088 5687168 1611288 5687432 1611440 5687464 +1612096 5687208 1612088 5687168 1611440 5687464 1611584 5687552 +1612096 5687208 1612088 5687168 1611584 5687552 1611736 5687600 +1612088 5687168 1611288 5687432 1611440 5687464 1611584 5687552 +1612088 5687168 1601624 5681136 1611288 5687432 1611440 5687464 +1612088 5687168 1601592 5681064 1601624 5681136 1611288 5687432 +1612088 5687168 1601560 5681032 1601592 5681064 1601624 5681136 +1612096 5687208 1657088 5639464 1612088 5687168 1611584 5687552 +1657088 5639464 1612088 5687168 1612096 5687208 1663776 5646144 +1612096 5687208 1663880 5646248 1663776 5646144 1612088 5687168 +1612096 5687208 1612184 5687376 1663880 5646248 1612088 5687168 +1612184 5687376 1623296 5701624 1663880 5646248 1612088 5687168 +1663880 5646248 1663776 5646144 1612088 5687168 1612184 5687376 +1612088 5687168 1611584 5687552 1612096 5687208 1612184 5687376 +1663776 5646144 1657088 5639464 1612088 5687168 1663880 5646248 +1657088 5639464 1601560 5681032 1612088 5687168 1663776 5646144 +1612088 5687168 1657088 5639464 1601560 5681032 1601592 5681064 +1601560 5681032 1612088 5687168 1657088 5639464 1657056 5639384 +1657088 5639464 1612088 5687168 1663776 5646144 1663688 5645984 +1657088 5639464 1612096 5687136 1612088 5687168 1663776 5646144 +1612088 5687168 1663880 5646248 1663776 5646144 1612096 5687136 +1612088 5687168 1612184 5687376 1663880 5646248 1612096 5687136 +1612184 5687376 1623296 5701624 1663880 5646248 1612096 5687136 +1623296 5701624 1623408 5701720 1663880 5646248 1612096 5687136 +1612184 5687376 1623192 5701576 1623296 5701624 1612096 5687136 +1612088 5687168 1612096 5687208 1612184 5687376 1612096 5687136 +1612184 5687376 1623296 5701624 1612096 5687136 1612096 5687208 +1663880 5646248 1663776 5646144 1612096 5687136 1623296 5701624 +1663776 5646144 1657088 5639464 1612096 5687136 1663880 5646248 +1612096 5687136 1601560 5681032 1612088 5687168 1612096 5687208 +1612088 5687168 1612096 5687136 1601560 5681032 1601592 5681064 +1612088 5687168 1612096 5687136 1601592 5681064 1601624 5681136 +1612088 5687168 1612096 5687136 1601624 5681136 1611288 5687432 +1601624 5681136 1611224 5687456 1611288 5687432 1612096 5687136 +1612088 5687168 1612096 5687136 1611288 5687432 1611440 5687464 +1612088 5687168 1612096 5687136 1611440 5687464 1611584 5687552 +1612096 5687136 1601624 5681136 1611288 5687432 1611440 5687464 +1612096 5687136 1601592 5681064 1601624 5681136 1611288 5687432 +1612088 5687168 1612096 5687208 1612096 5687136 1611440 5687464 +1612096 5687136 1657088 5639464 1601560 5681032 1601592 5681064 +1612096 5687136 1601560 5681032 1601592 5681064 1601624 5681136 +1601560 5681032 1612096 5687136 1657088 5639464 1657056 5639384 +1657088 5639464 1612096 5687136 1663776 5646144 1663688 5645984 +1657088 5639464 1601560 5681032 1612096 5687136 1663776 5646144 +1612096 5687136 1612128 5687096 1601560 5681032 1601592 5681064 +1612096 5687136 1612128 5687096 1601592 5681064 1601624 5681136 +1612096 5687136 1612128 5687096 1601624 5681136 1611288 5687432 +1601624 5681136 1611224 5687456 1611288 5687432 1612128 5687096 +1612096 5687136 1612128 5687096 1611288 5687432 1611440 5687464 +1612128 5687096 1601560 5681032 1601592 5681064 1601624 5681136 +1612128 5687096 1601592 5681064 1601624 5681136 1611288 5687432 +1601560 5681032 1612128 5687096 1657088 5639464 1657056 5639384 +1612096 5687136 1657088 5639464 1612128 5687096 1611288 5687432 +1657088 5639464 1612128 5687096 1612096 5687136 1663776 5646144 +1612096 5687136 1663880 5646248 1663776 5646144 1612128 5687096 +1612096 5687136 1623296 5701624 1663880 5646248 1612128 5687096 +1623296 5701624 1623408 5701720 1663880 5646248 1612128 5687096 +1612096 5687136 1612184 5687376 1623296 5701624 1612128 5687096 +1612184 5687376 1623192 5701576 1623296 5701624 1612128 5687096 +1612096 5687136 1612096 5687208 1612184 5687376 1612128 5687096 +1612184 5687376 1623296 5701624 1612128 5687096 1612096 5687208 +1612096 5687136 1612088 5687168 1612096 5687208 1612128 5687096 +1623296 5701624 1663880 5646248 1612128 5687096 1612184 5687376 +1663880 5646248 1663776 5646144 1612128 5687096 1623296 5701624 +1657088 5639464 1612128 5687096 1663776 5646144 1663688 5645984 +1612128 5687096 1611288 5687432 1612096 5687136 1612096 5687208 +1663776 5646144 1657088 5639464 1612128 5687096 1663880 5646248 +1612128 5687096 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1612128 5687096 1663776 5646144 +1657088 5639464 1612248 5686976 1663776 5646144 1663688 5645984 +1663776 5646144 1612248 5686976 1612128 5687096 1663880 5646248 +1612128 5687096 1623296 5701624 1663880 5646248 1612248 5686976 +1623296 5701624 1623408 5701720 1663880 5646248 1612248 5686976 +1612128 5687096 1612184 5687376 1623296 5701624 1612248 5686976 +1612128 5687096 1612096 5687208 1612184 5687376 1612248 5686976 +1612184 5687376 1623192 5701576 1623296 5701624 1612248 5686976 +1612184 5687376 1615376 5695816 1623192 5701576 1612248 5686976 +1623192 5701576 1623296 5701624 1612248 5686976 1615376 5695816 +1612184 5687376 1615200 5695576 1615376 5695816 1612248 5686976 +1615376 5695816 1623192 5701576 1612248 5686976 1615200 5695576 +1612184 5687376 1615200 5695576 1612248 5686976 1612128 5687096 +1623296 5701624 1663880 5646248 1612248 5686976 1623192 5701576 +1612184 5687376 1612336 5689264 1615200 5695576 1612248 5686976 +1612184 5687376 1612184 5687456 1612336 5689264 1612248 5686976 +1615200 5695576 1615376 5695816 1612248 5686976 1612336 5689264 +1612184 5687376 1612184 5687456 1612248 5686976 1612128 5687096 +1612336 5689264 1615200 5695576 1612248 5686976 1612184 5687456 +1612184 5687456 1612320 5689216 1612336 5689264 1612248 5686976 +1612336 5689264 1614216 5694264 1615200 5695576 1612248 5686976 +1615200 5695576 1615376 5695816 1612248 5686976 1614216 5694264 +1612336 5689264 1614120 5694152 1614216 5694264 1612248 5686976 +1612336 5689264 1614216 5694264 1612248 5686976 1612184 5687456 +1663880 5646248 1663776 5646144 1612248 5686976 1623296 5701624 +1612248 5686976 1657088 5639464 1612128 5687096 1612184 5687376 +1612128 5687096 1612248 5686976 1657088 5639464 1601560 5681032 +1657088 5639464 1657056 5639384 1601560 5681032 1612248 5686976 +1612128 5687096 1612248 5686976 1601560 5681032 1601592 5681064 +1612128 5687096 1612248 5686976 1601592 5681064 1601624 5681136 +1612128 5687096 1612248 5686976 1601624 5681136 1611288 5687432 +1601624 5681136 1611224 5687456 1611288 5687432 1612248 5686976 +1612128 5687096 1612248 5686976 1611288 5687432 1612096 5687136 +1612248 5686976 1601592 5681064 1601624 5681136 1611224 5687456 +1611288 5687432 1612128 5687096 1612248 5686976 1611224 5687456 +1601624 5681136 1601592 5681216 1611224 5687456 1612248 5686976 +1612248 5686976 1601560 5681032 1601592 5681064 1601624 5681136 +1612128 5687096 1612184 5687376 1612248 5686976 1611288 5687432 +1612248 5686976 1657088 5639464 1601560 5681032 1601592 5681064 +1612248 5686976 1663776 5646144 1657088 5639464 1601560 5681032 +1663776 5646144 1657088 5639464 1612248 5686976 1663880 5646248 +1614216 5694264 1615056 5695464 1615200 5695576 1612248 5686976 +1615376 5695816 1615512 5696024 1623192 5701576 1612248 5686976 +1601560 5681032 1612296 5686888 1657088 5639464 1657056 5639384 +1612248 5686976 1612296 5686888 1601560 5681032 1601592 5681064 +1612248 5686976 1612296 5686888 1601592 5681064 1601624 5681136 +1612248 5686976 1612296 5686888 1601624 5681136 1611224 5687456 +1612248 5686976 1612296 5686888 1611224 5687456 1611288 5687432 +1612296 5686888 1601624 5681136 1611224 5687456 1611288 5687432 +1612248 5686976 1612296 5686888 1611288 5687432 1612128 5687096 +1612296 5686888 1611224 5687456 1611288 5687432 1612128 5687096 +1611288 5687432 1612096 5687136 1612128 5687096 1612296 5686888 +1601624 5681136 1601592 5681216 1611224 5687456 1612296 5686888 +1612296 5686888 1601592 5681064 1601624 5681136 1611224 5687456 +1612296 5686888 1601560 5681032 1601592 5681064 1601624 5681136 +1657088 5639464 1612296 5686888 1612248 5686976 1663776 5646144 +1657088 5639464 1612296 5686888 1663776 5646144 1663688 5645984 +1612248 5686976 1663776 5646144 1612296 5686888 1612128 5687096 +1612248 5686976 1663880 5646248 1663776 5646144 1612296 5686888 +1612248 5686976 1623296 5701624 1663880 5646248 1612296 5686888 +1623296 5701624 1623408 5701720 1663880 5646248 1612296 5686888 +1612248 5686976 1623192 5701576 1623296 5701624 1612296 5686888 +1612248 5686976 1615376 5695816 1623192 5701576 1612296 5686888 +1612248 5686976 1615200 5695576 1615376 5695816 1612296 5686888 +1615376 5695816 1623192 5701576 1612296 5686888 1615200 5695576 +1612248 5686976 1614216 5694264 1615200 5695576 1612296 5686888 +1615200 5695576 1615376 5695816 1612296 5686888 1614216 5694264 +1623192 5701576 1623296 5701624 1612296 5686888 1615376 5695816 +1612248 5686976 1612336 5689264 1614216 5694264 1612296 5686888 +1614216 5694264 1615200 5695576 1612296 5686888 1612336 5689264 +1612336 5689264 1614120 5694152 1614216 5694264 1612296 5686888 +1612248 5686976 1612184 5687456 1612336 5689264 1612296 5686888 +1612248 5686976 1612184 5687376 1612184 5687456 1612296 5686888 +1612248 5686976 1612128 5687096 1612184 5687376 1612296 5686888 +1612184 5687456 1612336 5689264 1612296 5686888 1612184 5687376 +1612184 5687456 1612320 5689216 1612336 5689264 1612296 5686888 +1612336 5689264 1614216 5694264 1612296 5686888 1612184 5687456 +1623296 5701624 1663880 5646248 1612296 5686888 1623192 5701576 +1663776 5646144 1657088 5639464 1612296 5686888 1663880 5646248 +1612248 5686976 1612184 5687376 1612296 5686888 1612128 5687096 +1663880 5646248 1663776 5646144 1612296 5686888 1623296 5701624 +1612296 5686888 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1612296 5686888 1663776 5646144 +1614216 5694264 1615056 5695464 1615200 5695576 1612296 5686888 +1615376 5695816 1615512 5696024 1623192 5701576 1612296 5686888 +1601560 5681032 1612304 5686856 1657088 5639464 1657056 5639384 +1612296 5686888 1612304 5686856 1601560 5681032 1601592 5681064 +1612296 5686888 1612304 5686856 1601592 5681064 1601624 5681136 +1612296 5686888 1612304 5686856 1601624 5681136 1611224 5687456 +1612296 5686888 1612304 5686856 1611224 5687456 1611288 5687432 +1612296 5686888 1612304 5686856 1611288 5687432 1612128 5687096 +1611288 5687432 1612096 5687136 1612128 5687096 1612304 5686856 +1612304 5686856 1611224 5687456 1611288 5687432 1612128 5687096 +1612296 5686888 1612304 5686856 1612128 5687096 1612248 5686976 +1612304 5686856 1611288 5687432 1612128 5687096 1612248 5686976 +1601624 5681136 1601592 5681216 1611224 5687456 1612304 5686856 +1612304 5686856 1601624 5681136 1611224 5687456 1611288 5687432 +1612304 5686856 1601592 5681064 1601624 5681136 1611224 5687456 +1612304 5686856 1601560 5681032 1601592 5681064 1601624 5681136 +1612296 5686888 1657088 5639464 1612304 5686856 1612248 5686976 +1657088 5639464 1612304 5686856 1612296 5686888 1663776 5646144 +1657088 5639464 1612304 5686856 1663776 5646144 1663688 5645984 +1612296 5686888 1663880 5646248 1663776 5646144 1612304 5686856 +1612296 5686888 1623296 5701624 1663880 5646248 1612304 5686856 +1623296 5701624 1623408 5701720 1663880 5646248 1612304 5686856 +1612296 5686888 1623192 5701576 1623296 5701624 1612304 5686856 +1612296 5686888 1615376 5695816 1623192 5701576 1612304 5686856 +1612296 5686888 1615200 5695576 1615376 5695816 1612304 5686856 +1612296 5686888 1614216 5694264 1615200 5695576 1612304 5686856 +1615200 5695576 1615376 5695816 1612304 5686856 1614216 5694264 +1612296 5686888 1612336 5689264 1614216 5694264 1612304 5686856 +1614216 5694264 1615200 5695576 1612304 5686856 1612336 5689264 +1615376 5695816 1623192 5701576 1612304 5686856 1615200 5695576 +1612336 5689264 1614120 5694152 1614216 5694264 1612304 5686856 +1612296 5686888 1612184 5687456 1612336 5689264 1612304 5686856 +1623192 5701576 1623296 5701624 1612304 5686856 1615376 5695816 +1663880 5646248 1663776 5646144 1612304 5686856 1623296 5701624 +1623296 5701624 1663880 5646248 1612304 5686856 1623192 5701576 +1612304 5686856 1612248 5686976 1612296 5686888 1612336 5689264 +1663776 5646144 1657088 5639464 1612304 5686856 1663880 5646248 +1612304 5686856 1657088 5639464 1601560 5681032 1601592 5681064 +1657088 5639464 1601560 5681032 1612304 5686856 1663776 5646144 +1614216 5694264 1615056 5695464 1615200 5695576 1612304 5686856 +1615376 5695816 1615512 5696024 1623192 5701576 1612304 5686856 +1601560 5681032 1612280 5686776 1657088 5639464 1657056 5639384 +1601560 5681032 1612280 5686776 1657056 5639384 1601464 5680984 +1612304 5686856 1612280 5686776 1601560 5681032 1601592 5681064 +1612304 5686856 1612280 5686776 1601592 5681064 1601624 5681136 +1612304 5686856 1612280 5686776 1601624 5681136 1611224 5687456 +1601624 5681136 1601592 5681216 1611224 5687456 1612280 5686776 +1612304 5686856 1612280 5686776 1611224 5687456 1611288 5687432 +1612304 5686856 1612280 5686776 1611288 5687432 1612128 5687096 +1612304 5686856 1612280 5686776 1612128 5687096 1612248 5686976 +1611288 5687432 1612096 5687136 1612128 5687096 1612280 5686776 +1612280 5686776 1611288 5687432 1612128 5687096 1612248 5686976 +1612304 5686856 1612280 5686776 1612248 5686976 1612296 5686888 +1612280 5686776 1612128 5687096 1612248 5686976 1612296 5686888 +1612280 5686776 1611224 5687456 1611288 5687432 1612128 5687096 +1612280 5686776 1601624 5681136 1611224 5687456 1611288 5687432 +1612280 5686776 1601592 5681064 1601624 5681136 1611224 5687456 +1612280 5686776 1601560 5681032 1601592 5681064 1601624 5681136 +1612304 5686856 1657088 5639464 1612280 5686776 1612296 5686888 +1657088 5639464 1612280 5686776 1612304 5686856 1663776 5646144 +1657088 5639464 1612280 5686776 1663776 5646144 1663688 5645984 +1612304 5686856 1663880 5646248 1663776 5646144 1612280 5686776 +1612304 5686856 1623296 5701624 1663880 5646248 1612280 5686776 +1623296 5701624 1623408 5701720 1663880 5646248 1612280 5686776 +1612304 5686856 1623192 5701576 1623296 5701624 1612280 5686776 +1663880 5646248 1663776 5646144 1612280 5686776 1623296 5701624 +1612280 5686776 1612296 5686888 1612304 5686856 1623296 5701624 +1663776 5646144 1657088 5639464 1612280 5686776 1663880 5646248 +1601560 5681032 1601592 5681064 1612280 5686776 1657056 5639384 +1612280 5686776 1663776 5646144 1657088 5639464 1657056 5639384 +1657056 5639384 1612216 5686664 1612280 5686776 1657088 5639464 +1601560 5681032 1612216 5686664 1657056 5639384 1601464 5680984 +1657056 5639384 1601560 5681032 1612216 5686664 1657088 5639464 +1612280 5686776 1612216 5686664 1601560 5681032 1601592 5681064 +1612280 5686776 1612216 5686664 1601592 5681064 1601624 5681136 +1612280 5686776 1612216 5686664 1601624 5681136 1611224 5687456 +1601624 5681136 1601592 5681216 1611224 5687456 1612216 5686664 +1612280 5686776 1612216 5686664 1611224 5687456 1611288 5687432 +1612280 5686776 1612216 5686664 1611288 5687432 1612128 5687096 +1611288 5687432 1612096 5687136 1612128 5687096 1612216 5686664 +1611288 5687432 1611440 5687464 1612096 5687136 1612216 5686664 +1612280 5686776 1612216 5686664 1612128 5687096 1612248 5686976 +1612280 5686776 1612216 5686664 1612248 5686976 1612296 5686888 +1612128 5687096 1612248 5686976 1612216 5686664 1612096 5687136 +1612216 5686664 1611224 5687456 1611288 5687432 1612096 5687136 +1612216 5686664 1601624 5681136 1611224 5687456 1611288 5687432 +1612216 5686664 1601592 5681064 1601624 5681136 1611224 5687456 +1612216 5686664 1601560 5681032 1601592 5681064 1601624 5681136 +1612216 5686664 1612248 5686976 1612280 5686776 1657088 5639464 +1612280 5686776 1663776 5646144 1657088 5639464 1612216 5686664 +1657088 5639464 1657056 5639384 1612216 5686664 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1612216 5686664 +1612280 5686776 1663880 5646248 1663776 5646144 1612216 5686664 +1612280 5686776 1623296 5701624 1663880 5646248 1612216 5686664 +1612280 5686776 1663880 5646248 1612216 5686664 1612248 5686976 +1663776 5646144 1657088 5639464 1612216 5686664 1663880 5646248 +1612216 5686664 1657056 5639384 1601560 5681032 1601592 5681064 +1601560 5681032 1612216 5686496 1657056 5639384 1601464 5680984 +1657056 5639384 1612216 5686496 1612216 5686664 1657088 5639464 +1612216 5686664 1663776 5646144 1657088 5639464 1612216 5686496 +1663776 5646144 1663688 5645984 1657088 5639464 1612216 5686496 +1612216 5686496 1601560 5681032 1612216 5686664 1663776 5646144 +1657088 5639464 1657056 5639384 1612216 5686496 1663776 5646144 +1657056 5639384 1601560 5681032 1612216 5686496 1657088 5639464 +1612216 5686664 1663880 5646248 1663776 5646144 1612216 5686496 +1663776 5646144 1657088 5639464 1612216 5686496 1663880 5646248 +1612216 5686664 1663880 5646248 1612216 5686496 1601560 5681032 +1612216 5686664 1612280 5686776 1663880 5646248 1612216 5686496 +1612280 5686776 1623296 5701624 1663880 5646248 1612216 5686496 +1623296 5701624 1623408 5701720 1663880 5646248 1612216 5686496 +1612280 5686776 1612304 5686856 1623296 5701624 1612216 5686496 +1612304 5686856 1623192 5701576 1623296 5701624 1612216 5686496 +1623296 5701624 1663880 5646248 1612216 5686496 1612304 5686856 +1612216 5686664 1612280 5686776 1612216 5686496 1601560 5681032 +1612280 5686776 1612304 5686856 1612216 5686496 1612216 5686664 +1663880 5646248 1663776 5646144 1612216 5686496 1623296 5701624 +1612216 5686664 1612216 5686496 1601560 5681032 1601592 5681064 +1612216 5686664 1612280 5686776 1612216 5686496 1601592 5681064 +1612216 5686496 1657056 5639384 1601560 5681032 1601592 5681064 +1612216 5686664 1612216 5686496 1601592 5681064 1601624 5681136 +1612216 5686664 1612280 5686776 1612216 5686496 1601624 5681136 +1612216 5686664 1612216 5686496 1601624 5681136 1611224 5687456 +1601624 5681136 1601592 5681216 1611224 5687456 1612216 5686496 +1612216 5686664 1612216 5686496 1611224 5687456 1611288 5687432 +1612216 5686664 1612216 5686496 1611288 5687432 1612096 5687136 +1612216 5686664 1612280 5686776 1612216 5686496 1611288 5687432 +1612216 5686496 1601624 5681136 1611224 5687456 1611288 5687432 +1612216 5686496 1601592 5681064 1601624 5681136 1611224 5687456 +1612216 5686496 1601560 5681032 1601592 5681064 1601624 5681136 +1663880 5646248 1612272 5686464 1623296 5701624 1623408 5701720 +1623296 5701624 1612272 5686464 1612216 5686496 1612304 5686856 +1612216 5686496 1612280 5686776 1612304 5686856 1612272 5686464 +1623296 5701624 1612272 5686464 1612304 5686856 1623192 5701576 +1612304 5686856 1615376 5695816 1623192 5701576 1612272 5686464 +1612304 5686856 1623192 5701576 1612272 5686464 1612280 5686776 +1612272 5686464 1663880 5646248 1612216 5686496 1612280 5686776 +1612216 5686496 1612216 5686664 1612280 5686776 1612272 5686464 +1612280 5686776 1612304 5686856 1612272 5686464 1612216 5686664 +1612216 5686496 1612216 5686664 1612272 5686464 1663880 5646248 +1612216 5686496 1612272 5686464 1663880 5646248 1663776 5646144 +1612216 5686496 1612272 5686464 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1612272 5686464 +1612216 5686496 1612272 5686464 1657088 5639464 1657056 5639384 +1612272 5686464 1663776 5646144 1657088 5639464 1657056 5639384 +1612216 5686496 1612216 5686664 1612272 5686464 1657056 5639384 +1612216 5686496 1612272 5686464 1657056 5639384 1601560 5681032 +1657056 5639384 1601464 5680984 1601560 5681032 1612272 5686464 +1612272 5686464 1657088 5639464 1657056 5639384 1601560 5681032 +1612216 5686496 1612272 5686464 1601560 5681032 1601592 5681064 +1612216 5686496 1612216 5686664 1612272 5686464 1601592 5681064 +1612272 5686464 1657056 5639384 1601560 5681032 1601592 5681064 +1612272 5686464 1623296 5701624 1663880 5646248 1663776 5646144 +1612272 5686464 1663880 5646248 1663776 5646144 1657088 5639464 +1612216 5686496 1612272 5686464 1601592 5681064 1601624 5681136 +1612272 5686464 1601560 5681032 1601592 5681064 1601624 5681136 +1612216 5686496 1612216 5686664 1612272 5686464 1601624 5681136 +1612216 5686496 1612272 5686464 1601624 5681136 1611224 5687456 +1623296 5701624 1663880 5646248 1612272 5686464 1623192 5701576 +1663880 5646248 1612336 5686456 1623296 5701624 1623408 5701720 +1612272 5686464 1612336 5686456 1663880 5646248 1663776 5646144 +1612272 5686464 1612336 5686456 1663776 5646144 1657088 5639464 +1612272 5686464 1612336 5686456 1657088 5639464 1657056 5639384 +1663776 5646144 1663688 5645984 1657088 5639464 1612336 5686456 +1612272 5686464 1612336 5686456 1657056 5639384 1601560 5681032 +1612336 5686456 1657088 5639464 1657056 5639384 1601560 5681032 +1657056 5639384 1601464 5680984 1601560 5681032 1612336 5686456 +1612272 5686464 1612336 5686456 1601560 5681032 1601592 5681064 +1612336 5686456 1657056 5639384 1601560 5681032 1601592 5681064 +1612272 5686464 1612336 5686456 1601592 5681064 1601624 5681136 +1612336 5686456 1663880 5646248 1663776 5646144 1657088 5639464 +1612336 5686456 1663776 5646144 1657088 5639464 1657056 5639384 +1612336 5686456 1623296 5701624 1663880 5646248 1663776 5646144 +1612272 5686464 1623296 5701624 1612336 5686456 1601592 5681064 +1623296 5701624 1612336 5686456 1612272 5686464 1623192 5701576 +1612272 5686464 1612304 5686856 1623192 5701576 1612336 5686456 +1612304 5686856 1615376 5695816 1623192 5701576 1612336 5686456 +1612304 5686856 1615200 5695576 1615376 5695816 1612336 5686456 +1612304 5686856 1614216 5694264 1615200 5695576 1612336 5686456 +1615376 5695816 1623192 5701576 1612336 5686456 1615200 5695576 +1612304 5686856 1615200 5695576 1612336 5686456 1612272 5686464 +1612272 5686464 1612280 5686776 1612304 5686856 1612336 5686456 +1612272 5686464 1612216 5686664 1612280 5686776 1612336 5686456 +1612304 5686856 1615200 5695576 1612336 5686456 1612280 5686776 +1612280 5686776 1612304 5686856 1612336 5686456 1612216 5686664 +1612272 5686464 1612216 5686496 1612216 5686664 1612336 5686456 +1623296 5701624 1663880 5646248 1612336 5686456 1623192 5701576 +1612336 5686456 1601592 5681064 1612272 5686464 1612216 5686664 +1623192 5701576 1623296 5701624 1612336 5686456 1615376 5695816 +1615376 5695816 1615512 5696024 1623192 5701576 1612336 5686456 +1615376 5695816 1612352 5686496 1612336 5686456 1615200 5695576 +1615376 5695816 1623192 5701576 1612352 5686496 1615200 5695576 +1612336 5686456 1612304 5686856 1615200 5695576 1612352 5686496 +1612304 5686856 1614216 5694264 1615200 5695576 1612352 5686496 +1612304 5686856 1612336 5689264 1614216 5694264 1612352 5686496 +1614216 5694264 1615200 5695576 1612352 5686496 1612336 5689264 +1612304 5686856 1612296 5686888 1612336 5689264 1612352 5686496 +1612304 5686856 1612336 5689264 1612352 5686496 1612336 5686456 +1612336 5689264 1614120 5694152 1614216 5694264 1612352 5686496 +1615200 5695576 1615376 5695816 1612352 5686496 1614216 5694264 +1612336 5686456 1612280 5686776 1612304 5686856 1612352 5686496 +1612304 5686856 1612336 5689264 1612352 5686496 1612280 5686776 +1612336 5686456 1612216 5686664 1612280 5686776 1612352 5686496 +1612336 5686456 1612272 5686464 1612216 5686664 1612352 5686496 +1612280 5686776 1612304 5686856 1612352 5686496 1612216 5686664 +1612216 5686664 1612280 5686776 1612352 5686496 1612272 5686464 +1612272 5686464 1612216 5686496 1612216 5686664 1612352 5686496 +1612272 5686464 1612216 5686496 1612352 5686496 1612336 5686456 +1612216 5686664 1612280 5686776 1612352 5686496 1612216 5686496 +1612352 5686496 1623192 5701576 1612336 5686456 1612272 5686464 +1612336 5686456 1612352 5686496 1623192 5701576 1623296 5701624 +1612352 5686496 1615376 5695816 1623192 5701576 1623296 5701624 +1612336 5686456 1612272 5686464 1612352 5686496 1623296 5701624 +1612336 5686456 1612352 5686496 1623296 5701624 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1612352 5686496 +1612336 5686456 1612352 5686496 1663880 5646248 1663776 5646144 +1612336 5686456 1612272 5686464 1612352 5686496 1663880 5646248 +1612352 5686496 1623192 5701576 1623296 5701624 1663880 5646248 +1614216 5694264 1615056 5695464 1615200 5695576 1612352 5686496 +1623192 5701576 1612352 5686496 1615376 5695816 1615512 5696024 +1663880 5646248 1612448 5686536 1623296 5701624 1623408 5701720 +1612352 5686496 1612448 5686536 1663880 5646248 1612336 5686456 +1612352 5686496 1623296 5701624 1612448 5686536 1612336 5686456 +1612448 5686536 1623296 5701624 1663880 5646248 1612336 5686456 +1663880 5646248 1663776 5646144 1612336 5686456 1612448 5686536 +1663880 5646248 1663776 5646144 1612448 5686536 1623296 5701624 +1663776 5646144 1657088 5639464 1612336 5686456 1612448 5686536 +1663776 5646144 1663688 5645984 1657088 5639464 1612448 5686536 +1657088 5639464 1657056 5639384 1612336 5686456 1612448 5686536 +1663776 5646144 1657088 5639464 1612448 5686536 1663880 5646248 +1612336 5686456 1612352 5686496 1612448 5686536 1657088 5639464 +1623296 5701624 1612448 5686536 1612352 5686496 1623192 5701576 +1612352 5686496 1615376 5695816 1623192 5701576 1612448 5686536 +1612448 5686536 1612336 5686456 1612352 5686496 1615376 5695816 +1612352 5686496 1615200 5695576 1615376 5695816 1612448 5686536 +1615376 5695816 1623192 5701576 1612448 5686536 1615200 5695576 +1612352 5686496 1615200 5695576 1612448 5686536 1612336 5686456 +1623296 5701624 1663880 5646248 1612448 5686536 1623192 5701576 +1612352 5686496 1614216 5694264 1615200 5695576 1612448 5686536 +1612352 5686496 1614216 5694264 1612448 5686536 1612336 5686456 +1615200 5695576 1615376 5695816 1612448 5686536 1614216 5694264 +1612352 5686496 1612336 5689264 1614216 5694264 1612448 5686536 +1612352 5686496 1612336 5689264 1612448 5686536 1612336 5686456 +1612352 5686496 1612304 5686856 1612336 5689264 1612448 5686536 +1612352 5686496 1612304 5686856 1612448 5686536 1612336 5686456 +1612336 5689264 1614216 5694264 1612448 5686536 1612304 5686856 +1612304 5686856 1612296 5686888 1612336 5689264 1612448 5686536 +1612336 5689264 1614216 5694264 1612448 5686536 1612296 5686888 +1612304 5686856 1612296 5686888 1612448 5686536 1612352 5686496 +1612352 5686496 1612280 5686776 1612304 5686856 1612448 5686536 +1612352 5686496 1612280 5686776 1612448 5686536 1612336 5686456 +1612304 5686856 1612296 5686888 1612448 5686536 1612280 5686776 +1612336 5689264 1614120 5694152 1614216 5694264 1612448 5686536 +1612296 5686888 1612184 5687456 1612336 5689264 1612448 5686536 +1612336 5689264 1614216 5694264 1612448 5686536 1612184 5687456 +1612296 5686888 1612184 5687456 1612448 5686536 1612304 5686856 +1612296 5686888 1612184 5687376 1612184 5687456 1612448 5686536 +1612184 5687456 1612320 5689216 1612336 5689264 1612448 5686536 +1614216 5694264 1615200 5695576 1612448 5686536 1612336 5689264 +1612352 5686496 1612216 5686664 1612280 5686776 1612448 5686536 +1612352 5686496 1612216 5686664 1612448 5686536 1612336 5686456 +1612280 5686776 1612304 5686856 1612448 5686536 1612216 5686664 +1612352 5686496 1612216 5686496 1612216 5686664 1612448 5686536 +1623192 5701576 1623296 5701624 1612448 5686536 1615376 5695816 +1614216 5694264 1615056 5695464 1615200 5695576 1612448 5686536 +1615376 5695816 1615512 5696024 1623192 5701576 1612448 5686536 +1612448 5686536 1612488 5686576 1663880 5646248 1663776 5646144 +1612448 5686536 1623296 5701624 1612488 5686576 1663776 5646144 +1623296 5701624 1612488 5686576 1612448 5686536 1623192 5701576 +1612488 5686576 1663776 5646144 1612448 5686536 1623192 5701576 +1612488 5686576 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1612488 5686576 1623192 5701576 +1663880 5646248 1612488 5686576 1623296 5701624 1623408 5701720 +1612448 5686536 1612488 5686576 1663776 5646144 1657088 5639464 +1612488 5686576 1663880 5646248 1663776 5646144 1657088 5639464 +1612448 5686536 1623192 5701576 1612488 5686576 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1612488 5686576 +1612448 5686536 1612488 5686576 1657088 5639464 1612336 5686456 +1612448 5686536 1615376 5695816 1623192 5701576 1612488 5686576 +1612448 5686536 1615200 5695576 1615376 5695816 1612488 5686576 +1612448 5686536 1614216 5694264 1615200 5695576 1612488 5686576 +1615200 5695576 1615376 5695816 1612488 5686576 1614216 5694264 +1612448 5686536 1614216 5694264 1612488 5686576 1657088 5639464 +1623192 5701576 1623296 5701624 1612488 5686576 1615376 5695816 +1612448 5686536 1612336 5689264 1614216 5694264 1612488 5686576 +1614216 5694264 1615200 5695576 1612488 5686576 1612336 5689264 +1612448 5686536 1612336 5689264 1612488 5686576 1657088 5639464 +1612448 5686536 1612184 5687456 1612336 5689264 1612488 5686576 +1612448 5686536 1612184 5687456 1612488 5686576 1657088 5639464 +1612336 5689264 1614120 5694152 1614216 5694264 1612488 5686576 +1612184 5687456 1612320 5689216 1612336 5689264 1612488 5686576 +1612184 5687456 1612320 5689216 1612488 5686576 1612448 5686536 +1612184 5687456 1612112 5687552 1612320 5689216 1612488 5686576 +1612448 5686536 1612296 5686888 1612184 5687456 1612488 5686576 +1612448 5686536 1612296 5686888 1612488 5686576 1657088 5639464 +1612184 5687456 1612320 5689216 1612488 5686576 1612296 5686888 +1612448 5686536 1612304 5686856 1612296 5686888 1612488 5686576 +1612448 5686536 1612304 5686856 1612488 5686576 1657088 5639464 +1612448 5686536 1612280 5686776 1612304 5686856 1612488 5686576 +1612448 5686536 1612280 5686776 1612488 5686576 1657088 5639464 +1612304 5686856 1612296 5686888 1612488 5686576 1612280 5686776 +1612448 5686536 1612216 5686664 1612280 5686776 1612488 5686576 +1612296 5686888 1612184 5687376 1612184 5687456 1612488 5686576 +1612296 5686888 1612184 5687456 1612488 5686576 1612304 5686856 +1612336 5689264 1614216 5694264 1612488 5686576 1612320 5689216 +1615376 5695816 1623192 5701576 1612488 5686576 1615200 5695576 +1614216 5694264 1615056 5695464 1615200 5695576 1612488 5686576 +1615376 5695816 1615512 5696024 1623192 5701576 1612488 5686576 +1612488 5686576 1612632 5686728 1663880 5646248 1663776 5646144 +1612488 5686576 1612632 5686728 1663776 5646144 1657088 5639464 +1612632 5686728 1663880 5646248 1663776 5646144 1657088 5639464 +1612488 5686576 1623296 5701624 1612632 5686728 1657088 5639464 +1623296 5701624 1612632 5686728 1612488 5686576 1623192 5701576 +1612488 5686576 1615376 5695816 1623192 5701576 1612632 5686728 +1612632 5686728 1657088 5639464 1612488 5686576 1615376 5695816 +1623192 5701576 1623296 5701624 1612632 5686728 1615376 5695816 +1612632 5686728 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1612632 5686728 1623192 5701576 +1663880 5646248 1612632 5686728 1623296 5701624 1623408 5701720 +1663776 5646144 1663688 5645984 1657088 5639464 1612632 5686728 +1612488 5686576 1612632 5686728 1657088 5639464 1612448 5686536 +1612488 5686576 1615200 5695576 1615376 5695816 1612632 5686728 +1612488 5686576 1614216 5694264 1615200 5695576 1612632 5686728 +1612488 5686576 1612336 5689264 1614216 5694264 1612632 5686728 +1614216 5694264 1615200 5695576 1612632 5686728 1612336 5689264 +1615376 5695816 1623192 5701576 1612632 5686728 1615200 5695576 +1612488 5686576 1612336 5689264 1612632 5686728 1657088 5639464 +1612336 5689264 1614120 5694152 1614216 5694264 1612632 5686728 +1612488 5686576 1612320 5689216 1612336 5689264 1612632 5686728 +1612336 5689264 1614216 5694264 1612632 5686728 1612320 5689216 +1612488 5686576 1612320 5689216 1612632 5686728 1657088 5639464 +1612488 5686576 1612184 5687456 1612320 5689216 1612632 5686728 +1612488 5686576 1612184 5687456 1612632 5686728 1657088 5639464 +1612488 5686576 1612296 5686888 1612184 5687456 1612632 5686728 +1612488 5686576 1612296 5686888 1612632 5686728 1657088 5639464 +1612184 5687456 1612112 5687552 1612320 5689216 1612632 5686728 +1612296 5686888 1612184 5687376 1612184 5687456 1612632 5686728 +1612296 5686888 1612184 5687376 1612632 5686728 1612488 5686576 +1612296 5686888 1612248 5686976 1612184 5687376 1612632 5686728 +1612296 5686888 1612248 5686976 1612632 5686728 1612488 5686576 +1612248 5686976 1612128 5687096 1612184 5687376 1612632 5686728 +1612184 5687376 1612184 5687456 1612632 5686728 1612248 5686976 +1612184 5687456 1612320 5689216 1612632 5686728 1612184 5687376 +1612488 5686576 1612304 5686856 1612296 5686888 1612632 5686728 +1612488 5686576 1612304 5686856 1612632 5686728 1657088 5639464 +1612296 5686888 1612248 5686976 1612632 5686728 1612304 5686856 +1612488 5686576 1612280 5686776 1612304 5686856 1612632 5686728 +1612488 5686576 1612280 5686776 1612632 5686728 1657088 5639464 +1612488 5686576 1612448 5686536 1612280 5686776 1612632 5686728 +1612304 5686856 1612296 5686888 1612632 5686728 1612280 5686776 +1612320 5689216 1612336 5689264 1612632 5686728 1612184 5687456 +1615200 5695576 1615376 5695816 1612632 5686728 1614216 5694264 +1614216 5694264 1615056 5695464 1615200 5695576 1612632 5686728 +1615376 5695816 1615512 5696024 1623192 5701576 1612632 5686728 +1612632 5686728 1612704 5686768 1663880 5646248 1663776 5646144 +1612632 5686728 1612704 5686768 1663776 5646144 1657088 5639464 +1612632 5686728 1612704 5686768 1657088 5639464 1612488 5686576 +1612704 5686768 1663776 5646144 1657088 5639464 1612488 5686576 +1612704 5686768 1663880 5646248 1663776 5646144 1657088 5639464 +1612632 5686728 1623296 5701624 1612704 5686768 1612488 5686576 +1623296 5701624 1612704 5686768 1612632 5686728 1623192 5701576 +1612632 5686728 1615376 5695816 1623192 5701576 1612704 5686768 +1612632 5686728 1615200 5695576 1615376 5695816 1612704 5686768 +1615376 5695816 1623192 5701576 1612704 5686768 1615200 5695576 +1612704 5686768 1612488 5686576 1612632 5686728 1615200 5695576 +1623192 5701576 1623296 5701624 1612704 5686768 1615376 5695816 +1612704 5686768 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1612704 5686768 1623192 5701576 +1663880 5646248 1612704 5686768 1623296 5701624 1623408 5701720 +1663776 5646144 1663688 5645984 1657088 5639464 1612704 5686768 +1657088 5639464 1612448 5686536 1612488 5686576 1612704 5686768 +1612488 5686576 1612632 5686728 1612704 5686768 1612448 5686536 +1657088 5639464 1612448 5686536 1612704 5686768 1663776 5646144 +1657088 5639464 1612336 5686456 1612448 5686536 1612704 5686768 +1612632 5686728 1614216 5694264 1615200 5695576 1612704 5686768 +1612632 5686728 1612336 5689264 1614216 5694264 1612704 5686768 +1612632 5686728 1612320 5689216 1612336 5689264 1612704 5686768 +1612336 5689264 1614216 5694264 1612704 5686768 1612320 5689216 +1615200 5695576 1615376 5695816 1612704 5686768 1614216 5694264 +1612632 5686728 1612320 5689216 1612704 5686768 1612488 5686576 +1612336 5689264 1614120 5694152 1614216 5694264 1612704 5686768 +1612632 5686728 1612184 5687456 1612320 5689216 1612704 5686768 +1612320 5689216 1612336 5689264 1612704 5686768 1612184 5687456 +1612632 5686728 1612184 5687456 1612704 5686768 1612488 5686576 +1612184 5687456 1612112 5687552 1612320 5689216 1612704 5686768 +1612632 5686728 1612184 5687376 1612184 5687456 1612704 5686768 +1612632 5686728 1612184 5687376 1612704 5686768 1612488 5686576 +1612632 5686728 1612248 5686976 1612184 5687376 1612704 5686768 +1612632 5686728 1612248 5686976 1612704 5686768 1612488 5686576 +1612632 5686728 1612296 5686888 1612248 5686976 1612704 5686768 +1612632 5686728 1612296 5686888 1612704 5686768 1612488 5686576 +1612632 5686728 1612304 5686856 1612296 5686888 1612704 5686768 +1612248 5686976 1612128 5687096 1612184 5687376 1612704 5686768 +1612248 5686976 1612184 5687376 1612704 5686768 1612296 5686888 +1612184 5687376 1612184 5687456 1612704 5686768 1612248 5686976 +1612184 5687456 1612320 5689216 1612704 5686768 1612184 5687376 +1614216 5694264 1615200 5695576 1612704 5686768 1612336 5689264 +1614216 5694264 1615056 5695464 1615200 5695576 1612704 5686768 +1615376 5695816 1615512 5696024 1623192 5701576 1612704 5686768 +1612704 5686768 1612848 5686808 1663880 5646248 1663776 5646144 +1612704 5686768 1612848 5686808 1663776 5646144 1657088 5639464 +1612704 5686768 1612848 5686808 1657088 5639464 1612448 5686536 +1612848 5686808 1663776 5646144 1657088 5639464 1612448 5686536 +1612848 5686808 1663880 5646248 1663776 5646144 1657088 5639464 +1612704 5686768 1623296 5701624 1612848 5686808 1612448 5686536 +1623296 5701624 1612848 5686808 1612704 5686768 1623192 5701576 +1612704 5686768 1615376 5695816 1623192 5701576 1612848 5686808 +1612704 5686768 1615200 5695576 1615376 5695816 1612848 5686808 +1612704 5686768 1614216 5694264 1615200 5695576 1612848 5686808 +1615200 5695576 1615376 5695816 1612848 5686808 1614216 5694264 +1615376 5695816 1623192 5701576 1612848 5686808 1615200 5695576 +1612848 5686808 1612448 5686536 1612704 5686768 1614216 5694264 +1623192 5701576 1623296 5701624 1612848 5686808 1615376 5695816 +1612848 5686808 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1612848 5686808 1623192 5701576 +1663880 5646248 1612848 5686808 1623296 5701624 1623408 5701720 +1663776 5646144 1663688 5645984 1657088 5639464 1612848 5686808 +1657088 5639464 1612336 5686456 1612448 5686536 1612848 5686808 +1612448 5686536 1612704 5686768 1612848 5686808 1612336 5686456 +1657088 5639464 1612336 5686456 1612848 5686808 1663776 5646144 +1657088 5639464 1657056 5639384 1612336 5686456 1612848 5686808 +1612704 5686768 1612848 5686808 1612448 5686536 1612488 5686576 +1612704 5686768 1612848 5686808 1612488 5686576 1612632 5686728 +1612848 5686808 1612336 5686456 1612448 5686536 1612488 5686576 +1612704 5686768 1614216 5694264 1612848 5686808 1612488 5686576 +1612336 5686456 1612352 5686496 1612448 5686536 1612848 5686808 +1612704 5686768 1612336 5689264 1614216 5694264 1612848 5686808 +1612704 5686768 1612320 5689216 1612336 5689264 1612848 5686808 +1612704 5686768 1612184 5687456 1612320 5689216 1612848 5686808 +1612320 5689216 1612336 5689264 1612848 5686808 1612184 5687456 +1614216 5694264 1615200 5695576 1612848 5686808 1612336 5689264 +1612704 5686768 1612184 5687456 1612848 5686808 1612488 5686576 +1612336 5689264 1614120 5694152 1614216 5694264 1612848 5686808 +1614216 5694264 1615200 5695576 1612848 5686808 1614120 5694152 +1612336 5689264 1613488 5693384 1614120 5694152 1612848 5686808 +1612184 5687456 1612112 5687552 1612320 5689216 1612848 5686808 +1612704 5686768 1612184 5687376 1612184 5687456 1612848 5686808 +1612184 5687456 1612320 5689216 1612848 5686808 1612184 5687376 +1612704 5686768 1612184 5687376 1612848 5686808 1612488 5686576 +1612704 5686768 1612248 5686976 1612184 5687376 1612848 5686808 +1612336 5689264 1614120 5694152 1612848 5686808 1612320 5689216 +1614216 5694264 1615056 5695464 1615200 5695576 1612848 5686808 +1615376 5695816 1615512 5696024 1623192 5701576 1612848 5686808 +1612848 5686808 1612896 5686792 1663880 5646248 1663776 5646144 +1612848 5686808 1612896 5686792 1663776 5646144 1657088 5639464 +1612848 5686808 1612896 5686792 1657088 5639464 1612336 5686456 +1612896 5686792 1663776 5646144 1657088 5639464 1612336 5686456 +1612896 5686792 1663880 5646248 1663776 5646144 1657088 5639464 +1612848 5686808 1623296 5701624 1612896 5686792 1612336 5686456 +1623296 5701624 1612896 5686792 1612848 5686808 1623192 5701576 +1612848 5686808 1615376 5695816 1623192 5701576 1612896 5686792 +1612848 5686808 1615200 5695576 1615376 5695816 1612896 5686792 +1612848 5686808 1614216 5694264 1615200 5695576 1612896 5686792 +1612848 5686808 1614120 5694152 1614216 5694264 1612896 5686792 +1614216 5694264 1615200 5695576 1612896 5686792 1614120 5694152 +1615200 5695576 1615376 5695816 1612896 5686792 1614216 5694264 +1615376 5695816 1623192 5701576 1612896 5686792 1615200 5695576 +1612896 5686792 1612336 5686456 1612848 5686808 1614120 5694152 +1623192 5701576 1623296 5701624 1612896 5686792 1615376 5695816 +1612896 5686792 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1663880 5646248 1612896 5686792 1623192 5701576 +1663880 5646248 1612896 5686792 1623296 5701624 1623408 5701720 +1612848 5686808 1612336 5689264 1614120 5694152 1612896 5686792 +1614120 5694152 1614216 5694264 1612896 5686792 1612336 5689264 +1612848 5686808 1612336 5689264 1612896 5686792 1612336 5686456 +1612336 5689264 1613488 5693384 1614120 5694152 1612896 5686792 +1663776 5646144 1663688 5645984 1657088 5639464 1612896 5686792 +1612848 5686808 1612896 5686792 1612336 5686456 1612448 5686536 +1612848 5686808 1612896 5686792 1612448 5686536 1612488 5686576 +1612896 5686792 1657088 5639464 1612336 5686456 1612448 5686536 +1612848 5686808 1612336 5689264 1612896 5686792 1612488 5686576 +1612896 5686792 1612336 5686456 1612448 5686536 1612488 5686576 +1657088 5639464 1657056 5639384 1612336 5686456 1612896 5686792 +1612848 5686808 1612896 5686792 1612488 5686576 1612704 5686768 +1612488 5686576 1612632 5686728 1612704 5686768 1612896 5686792 +1612896 5686792 1612448 5686536 1612488 5686576 1612632 5686728 +1612848 5686808 1612336 5689264 1612896 5686792 1612704 5686768 +1612704 5686768 1612848 5686808 1612896 5686792 1612632 5686728 +1612336 5686456 1612352 5686496 1612448 5686536 1612896 5686792 +1612848 5686808 1612320 5689216 1612336 5689264 1612896 5686792 +1612848 5686808 1612184 5687456 1612320 5689216 1612896 5686792 +1612848 5686808 1612184 5687376 1612184 5687456 1612896 5686792 +1612848 5686808 1612184 5687456 1612896 5686792 1612704 5686768 +1612336 5689264 1614120 5694152 1612896 5686792 1612320 5689216 +1612184 5687456 1612112 5687552 1612320 5689216 1612896 5686792 +1612320 5689216 1612336 5689264 1612896 5686792 1612184 5687456 +1614216 5694264 1615056 5695464 1615200 5695576 1612896 5686792 +1615376 5695816 1615512 5696024 1623192 5701576 1612896 5686792 +1612896 5686792 1613016 5686640 1612336 5686456 1612448 5686536 +1657088 5639464 1613016 5686640 1612896 5686792 1663776 5646144 +1612896 5686792 1663880 5646248 1663776 5646144 1613016 5686640 +1663776 5646144 1657088 5639464 1613016 5686640 1663880 5646248 +1612896 5686792 1623296 5701624 1663880 5646248 1613016 5686640 +1663880 5646248 1663776 5646144 1613016 5686640 1623296 5701624 +1612896 5686792 1623296 5701624 1613016 5686640 1612448 5686536 +1612896 5686792 1623192 5701576 1623296 5701624 1613016 5686640 +1612896 5686792 1615376 5695816 1623192 5701576 1613016 5686640 +1612896 5686792 1615200 5695576 1615376 5695816 1613016 5686640 +1612896 5686792 1614216 5694264 1615200 5695576 1613016 5686640 +1612896 5686792 1614120 5694152 1614216 5694264 1613016 5686640 +1612896 5686792 1612336 5689264 1614120 5694152 1613016 5686640 +1614120 5694152 1614216 5694264 1613016 5686640 1612336 5689264 +1614216 5694264 1615200 5695576 1613016 5686640 1614120 5694152 +1615200 5695576 1615376 5695816 1613016 5686640 1614216 5694264 +1615376 5695816 1623192 5701576 1613016 5686640 1615200 5695576 +1623296 5701624 1663880 5646248 1613016 5686640 1623192 5701576 +1612896 5686792 1612336 5689264 1613016 5686640 1612448 5686536 +1623192 5701576 1623296 5701624 1613016 5686640 1615376 5695816 +1613016 5686640 1657088 5639464 1612336 5686456 1612448 5686536 +1657088 5639464 1612336 5686456 1613016 5686640 1663776 5646144 +1623296 5701624 1623408 5701720 1663880 5646248 1613016 5686640 +1612896 5686792 1612320 5689216 1612336 5689264 1613016 5686640 +1612336 5689264 1613488 5693384 1614120 5694152 1613016 5686640 +1657088 5639464 1613016 5686640 1663776 5646144 1663688 5645984 +1612896 5686792 1613016 5686640 1612448 5686536 1612488 5686576 +1612896 5686792 1613016 5686640 1612488 5686576 1612632 5686728 +1612896 5686792 1613016 5686640 1612632 5686728 1612704 5686768 +1613016 5686640 1612488 5686576 1612632 5686728 1612704 5686768 +1613016 5686640 1612336 5686456 1612448 5686536 1612488 5686576 +1612896 5686792 1612336 5689264 1613016 5686640 1612704 5686768 +1613016 5686640 1612448 5686536 1612488 5686576 1612632 5686728 +1612336 5686456 1613016 5686640 1657088 5639464 1657056 5639384 +1612336 5686456 1612448 5686536 1613016 5686640 1657056 5639384 +1613016 5686640 1663776 5646144 1657088 5639464 1657056 5639384 +1612336 5686456 1613016 5686640 1657056 5639384 1601560 5681032 +1612336 5686456 1612448 5686536 1613016 5686640 1601560 5681032 +1657056 5639384 1601464 5680984 1601560 5681032 1613016 5686640 +1612336 5686456 1613016 5686640 1601560 5681032 1601592 5681064 +1613016 5686640 1657088 5639464 1657056 5639384 1601560 5681032 +1612896 5686792 1613016 5686640 1612704 5686768 1612848 5686808 +1612336 5686456 1612352 5686496 1612448 5686536 1613016 5686640 +1614216 5694264 1615056 5695464 1615200 5695576 1613016 5686640 +1615376 5695816 1615512 5696024 1623192 5701576 1613016 5686640 +1613016 5686640 1612968 5686624 1612336 5686456 1612448 5686536 +1613016 5686640 1612968 5686624 1612448 5686536 1612488 5686576 +1612968 5686624 1612336 5686456 1612448 5686536 1612488 5686576 +1613016 5686640 1601560 5681032 1612968 5686624 1612488 5686576 +1612968 5686624 1601560 5681032 1612336 5686456 1612448 5686536 +1601560 5681032 1612968 5686624 1613016 5686640 1657056 5639384 +1601560 5681032 1612336 5686456 1612968 5686624 1657056 5639384 +1612968 5686624 1612488 5686576 1613016 5686640 1657056 5639384 +1601560 5681032 1612968 5686624 1657056 5639384 1601464 5680984 +1612336 5686456 1612968 5686624 1601560 5681032 1601592 5681064 +1613016 5686640 1612968 5686624 1612488 5686576 1612632 5686728 +1613016 5686640 1612968 5686624 1612632 5686728 1612704 5686768 +1613016 5686640 1612968 5686624 1612704 5686768 1612896 5686792 +1612968 5686624 1612632 5686728 1612704 5686768 1612896 5686792 +1612968 5686624 1612448 5686536 1612488 5686576 1612632 5686728 +1613016 5686640 1657056 5639384 1612968 5686624 1612896 5686792 +1612968 5686624 1612488 5686576 1612632 5686728 1612704 5686768 +1613016 5686640 1657088 5639464 1657056 5639384 1612968 5686624 +1613016 5686640 1657088 5639464 1612968 5686624 1612896 5686792 +1613016 5686640 1663776 5646144 1657088 5639464 1612968 5686624 +1657056 5639384 1601560 5681032 1612968 5686624 1657088 5639464 +1612704 5686768 1612848 5686808 1612896 5686792 1612968 5686624 +1612896 5686792 1613016 5686640 1612968 5686624 1612848 5686808 +1612704 5686768 1612848 5686808 1612968 5686624 1612632 5686728 +1612336 5686456 1612352 5686496 1612448 5686536 1612968 5686624 +1612968 5686624 1613008 5686504 1601560 5681032 1612336 5686456 +1612968 5686624 1657056 5639384 1613008 5686504 1612336 5686456 +1613008 5686504 1657056 5639384 1601560 5681032 1612336 5686456 +1612968 5686624 1613008 5686504 1612336 5686456 1612448 5686536 +1612968 5686624 1657056 5639384 1613008 5686504 1612448 5686536 +1613008 5686504 1601560 5681032 1612336 5686456 1612448 5686536 +1612968 5686624 1613008 5686504 1612448 5686536 1612488 5686576 +1612968 5686624 1613008 5686504 1612488 5686576 1612632 5686728 +1612968 5686624 1657056 5639384 1613008 5686504 1612488 5686576 +1613008 5686504 1612336 5686456 1612448 5686536 1612488 5686576 +1657056 5639384 1613008 5686504 1612968 5686624 1657088 5639464 +1613008 5686504 1612488 5686576 1612968 5686624 1657088 5639464 +1657056 5639384 1601560 5681032 1613008 5686504 1657088 5639464 +1601560 5681032 1613008 5686504 1657056 5639384 1601464 5680984 +1601560 5681032 1601592 5681064 1612336 5686456 1613008 5686504 +1612336 5686456 1612448 5686536 1613008 5686504 1601592 5681064 +1601560 5681032 1601592 5681064 1613008 5686504 1657056 5639384 +1601592 5681064 1612272 5686464 1612336 5686456 1613008 5686504 +1612968 5686624 1613016 5686640 1657088 5639464 1613008 5686504 +1612968 5686624 1613016 5686640 1613008 5686504 1612488 5686576 +1613016 5686640 1663776 5646144 1657088 5639464 1613008 5686504 +1613016 5686640 1663880 5646248 1663776 5646144 1613008 5686504 +1613016 5686640 1623296 5701624 1663880 5646248 1613008 5686504 +1663880 5646248 1663776 5646144 1613008 5686504 1623296 5701624 +1613016 5686640 1623192 5701576 1623296 5701624 1613008 5686504 +1663776 5646144 1657088 5639464 1613008 5686504 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1613008 5686504 +1657088 5639464 1657056 5639384 1613008 5686504 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1613008 5686504 +1613016 5686640 1623296 5701624 1613008 5686504 1612968 5686624 +1612336 5686456 1612352 5686496 1612448 5686536 1613008 5686504 +1613008 5686504 1613040 5686488 1663880 5646248 1663776 5646144 +1613008 5686504 1623296 5701624 1613040 5686488 1663776 5646144 +1613040 5686488 1623296 5701624 1663880 5646248 1663776 5646144 +1623296 5701624 1613040 5686488 1613008 5686504 1613016 5686640 +1613040 5686488 1663776 5646144 1613008 5686504 1613016 5686640 +1623296 5701624 1613040 5686488 1613016 5686640 1623192 5701576 +1613040 5686488 1613008 5686504 1613016 5686640 1623192 5701576 +1613016 5686640 1615376 5695816 1623192 5701576 1613040 5686488 +1613016 5686640 1615376 5695816 1613040 5686488 1613008 5686504 +1613016 5686640 1615200 5695576 1615376 5695816 1613040 5686488 +1613016 5686640 1614216 5694264 1615200 5695576 1613040 5686488 +1613016 5686640 1615200 5695576 1613040 5686488 1613008 5686504 +1623192 5701576 1623296 5701624 1613040 5686488 1615376 5695816 +1615376 5695816 1623192 5701576 1613040 5686488 1615200 5695576 +1613008 5686504 1613040 5686488 1663776 5646144 1657088 5639464 +1613040 5686488 1663880 5646248 1663776 5646144 1657088 5639464 +1613008 5686504 1613016 5686640 1613040 5686488 1657088 5639464 +1623296 5701624 1663880 5646248 1613040 5686488 1623192 5701576 +1663880 5646248 1613040 5686488 1623296 5701624 1623408 5701720 +1613008 5686504 1613040 5686488 1657088 5639464 1657056 5639384 +1613008 5686504 1613016 5686640 1613040 5686488 1657056 5639384 +1613008 5686504 1613040 5686488 1657056 5639384 1601560 5681032 +1613008 5686504 1613040 5686488 1601560 5681032 1601592 5681064 +1613008 5686504 1613016 5686640 1613040 5686488 1601592 5681064 +1613040 5686488 1657056 5639384 1601560 5681032 1601592 5681064 +1613040 5686488 1663776 5646144 1657088 5639464 1657056 5639384 +1613040 5686488 1657088 5639464 1657056 5639384 1601560 5681032 +1657056 5639384 1601464 5680984 1601560 5681032 1613040 5686488 +1663776 5646144 1663688 5645984 1657088 5639464 1613040 5686488 +1613008 5686504 1613040 5686488 1601592 5681064 1612336 5686456 +1613008 5686504 1613040 5686488 1612336 5686456 1612448 5686536 +1613040 5686488 1601560 5681032 1601592 5681064 1612336 5686456 +1613008 5686504 1613016 5686640 1613040 5686488 1612336 5686456 +1601592 5681064 1612272 5686464 1612336 5686456 1613040 5686488 +1613008 5686504 1612968 5686624 1613016 5686640 1613040 5686488 +1615376 5695816 1615512 5696024 1623192 5701576 1613040 5686488 +1613040 5686488 1613056 5686432 1601560 5681032 1601592 5681064 +1613040 5686488 1613056 5686432 1601592 5681064 1612336 5686456 +1613056 5686432 1601560 5681032 1601592 5681064 1612336 5686456 +1613040 5686488 1657056 5639384 1613056 5686432 1612336 5686456 +1613056 5686432 1657056 5639384 1601560 5681032 1601592 5681064 +1657056 5639384 1613056 5686432 1613040 5686488 1657088 5639464 +1613056 5686432 1612336 5686456 1613040 5686488 1657088 5639464 +1613040 5686488 1663776 5646144 1657088 5639464 1613056 5686432 +1613040 5686488 1663880 5646248 1663776 5646144 1613056 5686432 +1613040 5686488 1623296 5701624 1663880 5646248 1613056 5686432 +1663880 5646248 1663776 5646144 1613056 5686432 1623296 5701624 +1613040 5686488 1623296 5701624 1613056 5686432 1612336 5686456 +1663776 5646144 1657088 5639464 1613056 5686432 1663880 5646248 +1613040 5686488 1623192 5701576 1623296 5701624 1613056 5686432 +1623296 5701624 1663880 5646248 1613056 5686432 1623192 5701576 +1613040 5686488 1623192 5701576 1613056 5686432 1612336 5686456 +1613040 5686488 1615376 5695816 1623192 5701576 1613056 5686432 +1613040 5686488 1615376 5695816 1613056 5686432 1612336 5686456 +1613040 5686488 1615200 5695576 1615376 5695816 1613056 5686432 +1613040 5686488 1615200 5695576 1613056 5686432 1612336 5686456 +1613040 5686488 1613016 5686640 1615200 5695576 1613056 5686432 +1613016 5686640 1614216 5694264 1615200 5695576 1613056 5686432 +1613040 5686488 1613016 5686640 1613056 5686432 1612336 5686456 +1613040 5686488 1613008 5686504 1613016 5686640 1613056 5686432 +1615376 5695816 1623192 5701576 1613056 5686432 1615200 5695576 +1615200 5695576 1615376 5695816 1613056 5686432 1613016 5686640 +1623192 5701576 1623296 5701624 1613056 5686432 1615376 5695816 +1657056 5639384 1601560 5681032 1613056 5686432 1657088 5639464 +1623296 5701624 1623408 5701720 1663880 5646248 1613056 5686432 +1657088 5639464 1657056 5639384 1613056 5686432 1663776 5646144 +1601560 5681032 1613056 5686432 1657056 5639384 1601464 5680984 +1663776 5646144 1663688 5645984 1657088 5639464 1613056 5686432 +1613040 5686488 1613056 5686432 1612336 5686456 1613008 5686504 +1612336 5686456 1612448 5686536 1613008 5686504 1613056 5686432 +1613056 5686432 1601592 5681064 1612336 5686456 1612448 5686536 +1613040 5686488 1613016 5686640 1613056 5686432 1613008 5686504 +1612448 5686536 1612488 5686576 1613008 5686504 1613056 5686432 +1613008 5686504 1613040 5686488 1613056 5686432 1612448 5686536 +1601592 5681064 1612272 5686464 1612336 5686456 1613056 5686432 +1612336 5686456 1612352 5686496 1612448 5686536 1613056 5686432 +1615376 5695816 1615512 5696024 1623192 5701576 1613056 5686432 +1615200 5695576 1613088 5686584 1613016 5686640 1614216 5694264 +1613016 5686640 1614120 5694152 1614216 5694264 1613088 5686584 +1613016 5686640 1612336 5689264 1614120 5694152 1613088 5686584 +1613016 5686640 1612896 5686792 1612336 5689264 1613088 5686584 +1612336 5689264 1614120 5694152 1613088 5686584 1612896 5686792 +1614120 5694152 1614216 5694264 1613088 5686584 1612336 5689264 +1614216 5694264 1615200 5695576 1613088 5686584 1614120 5694152 +1613016 5686640 1613088 5686584 1613056 5686432 1613040 5686488 +1613016 5686640 1613088 5686584 1613040 5686488 1613008 5686504 +1613088 5686584 1613056 5686432 1613040 5686488 1613008 5686504 +1613056 5686432 1613088 5686584 1615200 5695576 1615376 5695816 +1613056 5686432 1613088 5686584 1615376 5695816 1623192 5701576 +1613088 5686584 1615200 5695576 1615376 5695816 1623192 5701576 +1613056 5686432 1613088 5686584 1623192 5701576 1623296 5701624 +1613056 5686432 1613088 5686584 1623296 5701624 1663880 5646248 +1613088 5686584 1615376 5695816 1623192 5701576 1623296 5701624 +1613088 5686584 1623296 5701624 1613056 5686432 1613040 5686488 +1615200 5695576 1615376 5695816 1613088 5686584 1614216 5694264 +1612896 5686792 1612320 5689216 1612336 5689264 1613088 5686584 +1612336 5689264 1613488 5693384 1614120 5694152 1613088 5686584 +1613016 5686640 1613088 5686584 1613008 5686504 1612968 5686624 +1613088 5686584 1613008 5686504 1613016 5686640 1612896 5686792 +1615200 5695576 1613088 5686584 1614216 5694264 1615056 5695464 +1615376 5695816 1615512 5696024 1623192 5701576 1613088 5686584 +1613056 5686432 1613152 5686608 1623296 5701624 1663880 5646248 +1613056 5686432 1613152 5686608 1663880 5646248 1663776 5646144 +1623296 5701624 1613152 5686608 1613088 5686584 1623192 5701576 +1613088 5686584 1615376 5695816 1623192 5701576 1613152 5686608 +1613088 5686584 1615200 5695576 1615376 5695816 1613152 5686608 +1615376 5695816 1623192 5701576 1613152 5686608 1615200 5695576 +1623192 5701576 1623296 5701624 1613152 5686608 1615376 5695816 +1613088 5686584 1614216 5694264 1615200 5695576 1613152 5686608 +1613088 5686584 1614120 5694152 1614216 5694264 1613152 5686608 +1613088 5686584 1612336 5689264 1614120 5694152 1613152 5686608 +1613088 5686584 1612896 5686792 1612336 5689264 1613152 5686608 +1613088 5686584 1613016 5686640 1612896 5686792 1613152 5686608 +1612896 5686792 1612336 5689264 1613152 5686608 1613016 5686640 +1612336 5689264 1614120 5694152 1613152 5686608 1612896 5686792 +1614120 5694152 1614216 5694264 1613152 5686608 1612336 5689264 +1615200 5695576 1615376 5695816 1613152 5686608 1614216 5694264 +1614216 5694264 1615200 5695576 1613152 5686608 1614120 5694152 +1623296 5701624 1623408 5701720 1663880 5646248 1613152 5686608 +1612896 5686792 1612320 5689216 1612336 5689264 1613152 5686608 +1612896 5686792 1612320 5689216 1613152 5686608 1613016 5686640 +1612336 5689264 1614120 5694152 1613152 5686608 1612320 5689216 +1612336 5689264 1613488 5693384 1614120 5694152 1613152 5686608 +1612336 5689264 1613488 5693384 1613152 5686608 1612320 5689216 +1614120 5694152 1614216 5694264 1613152 5686608 1613488 5693384 +1612896 5686792 1612184 5687456 1612320 5689216 1613152 5686608 +1613088 5686584 1613008 5686504 1613016 5686640 1613152 5686608 +1613152 5686608 1613056 5686432 1613088 5686584 1613016 5686640 +1613056 5686432 1613088 5686584 1613152 5686608 1663880 5646248 +1613152 5686608 1623192 5701576 1623296 5701624 1663880 5646248 +1612336 5689264 1612312 5689384 1613488 5693384 1613152 5686608 +1613488 5693384 1613584 5693568 1614120 5694152 1613152 5686608 +1614216 5694264 1615056 5695464 1615200 5695576 1613152 5686608 +1615376 5695816 1615512 5696024 1623192 5701576 1613152 5686608 +1615376 5695816 1613168 5686648 1613152 5686608 1615200 5695576 +1613152 5686608 1614216 5694264 1615200 5695576 1613168 5686648 +1615200 5695576 1615376 5695816 1613168 5686648 1614216 5694264 +1613152 5686608 1613168 5686648 1623192 5701576 1623296 5701624 +1613152 5686608 1614120 5694152 1614216 5694264 1613168 5686648 +1613152 5686608 1613488 5693384 1614120 5694152 1613168 5686648 +1614216 5694264 1615200 5695576 1613168 5686648 1614120 5694152 +1614120 5694152 1614216 5694264 1613168 5686648 1613488 5693384 +1613152 5686608 1612336 5689264 1613488 5693384 1613168 5686648 +1613152 5686608 1612320 5689216 1612336 5689264 1613168 5686648 +1613488 5693384 1614120 5694152 1613168 5686648 1612336 5689264 +1613152 5686608 1612896 5686792 1612320 5689216 1613168 5686648 +1613152 5686608 1613016 5686640 1612896 5686792 1613168 5686648 +1613152 5686608 1613088 5686584 1613016 5686640 1613168 5686648 +1613016 5686640 1612896 5686792 1613168 5686648 1613088 5686584 +1612320 5689216 1612336 5689264 1613168 5686648 1612896 5686792 +1612896 5686792 1612320 5689216 1613168 5686648 1613016 5686640 +1612336 5689264 1613488 5693384 1613168 5686648 1612320 5689216 +1612896 5686792 1612184 5687456 1612320 5689216 1613168 5686648 +1613088 5686584 1613008 5686504 1613016 5686640 1613168 5686648 +1613168 5686648 1623296 5701624 1613152 5686608 1613088 5686584 +1613152 5686608 1613168 5686648 1623296 5701624 1663880 5646248 +1613152 5686608 1613168 5686648 1663880 5646248 1613056 5686432 +1613168 5686648 1623192 5701576 1623296 5701624 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1613168 5686648 +1613152 5686608 1613088 5686584 1613168 5686648 1663880 5646248 +1613168 5686648 1615376 5695816 1623192 5701576 1623296 5701624 +1615376 5695816 1623192 5701576 1613168 5686648 1615200 5695576 +1612336 5689264 1612312 5689384 1613488 5693384 1613168 5686648 +1613488 5693384 1613584 5693568 1614120 5694152 1613168 5686648 +1614216 5694264 1615056 5695464 1615200 5695576 1613168 5686648 +1623192 5701576 1613168 5686648 1615376 5695816 1615512 5696024 +1613168 5686648 1613272 5686816 1623192 5701576 1623296 5701624 +1613168 5686648 1613272 5686816 1623296 5701624 1663880 5646248 +1623296 5701624 1623408 5701720 1663880 5646248 1613272 5686816 +1623408 5701720 1623576 5701960 1663880 5646248 1613272 5686816 +1663880 5646248 1613168 5686648 1613272 5686816 1623408 5701720 +1613168 5686648 1613272 5686816 1663880 5646248 1613152 5686608 +1663880 5646248 1613056 5686432 1613152 5686608 1613272 5686816 +1663880 5646248 1663776 5646144 1613056 5686432 1613272 5686816 +1613272 5686816 1623408 5701720 1663880 5646248 1613056 5686432 +1613056 5686432 1613088 5686584 1613152 5686608 1613272 5686816 +1613152 5686608 1613168 5686648 1613272 5686816 1613056 5686432 +1613272 5686816 1623192 5701576 1623296 5701624 1623408 5701720 +1613168 5686648 1615376 5695816 1613272 5686816 1613152 5686608 +1615376 5695816 1613272 5686816 1613168 5686648 1615200 5695576 +1613168 5686648 1614216 5694264 1615200 5695576 1613272 5686816 +1613168 5686648 1614120 5694152 1614216 5694264 1613272 5686816 +1614216 5694264 1615200 5695576 1613272 5686816 1614120 5694152 +1613168 5686648 1613488 5693384 1614120 5694152 1613272 5686816 +1613168 5686648 1612336 5689264 1613488 5693384 1613272 5686816 +1614120 5694152 1614216 5694264 1613272 5686816 1613488 5693384 +1613488 5693384 1614120 5694152 1613272 5686816 1612336 5689264 +1613168 5686648 1612320 5689216 1612336 5689264 1613272 5686816 +1613168 5686648 1612896 5686792 1612320 5689216 1613272 5686816 +1612336 5689264 1613488 5693384 1613272 5686816 1612320 5689216 +1613168 5686648 1613016 5686640 1612896 5686792 1613272 5686816 +1612320 5689216 1612336 5689264 1613272 5686816 1612896 5686792 +1612896 5686792 1612184 5687456 1612320 5689216 1613272 5686816 +1612896 5686792 1612848 5686808 1612184 5687456 1613272 5686816 +1612848 5686808 1612184 5687376 1612184 5687456 1613272 5686816 +1612896 5686792 1612848 5686808 1613272 5686816 1613168 5686648 +1612320 5689216 1612336 5689264 1613272 5686816 1612184 5687456 +1612184 5687456 1612112 5687552 1612320 5689216 1613272 5686816 +1612184 5687456 1612320 5689216 1613272 5686816 1612848 5686808 +1613272 5686816 1613152 5686608 1613168 5686648 1612896 5686792 +1615200 5695576 1615376 5695816 1613272 5686816 1614216 5694264 +1613272 5686816 1615376 5695816 1623192 5701576 1623296 5701624 +1615376 5695816 1623192 5701576 1613272 5686816 1615200 5695576 +1612336 5689264 1612312 5689384 1613488 5693384 1613272 5686816 +1613488 5693384 1613584 5693568 1614120 5694152 1613272 5686816 +1614216 5694264 1615056 5695464 1615200 5695576 1613272 5686816 +1623192 5701576 1613272 5686816 1615376 5695816 1615512 5696024 +1663880 5646248 1613336 5686872 1623408 5701720 1623576 5701960 +1613272 5686816 1613336 5686872 1663880 5646248 1613056 5686432 +1663880 5646248 1663776 5646144 1613056 5686432 1613336 5686872 +1613272 5686816 1613336 5686872 1613056 5686432 1613152 5686608 +1663776 5646144 1657088 5639464 1613056 5686432 1613336 5686872 +1613056 5686432 1613152 5686608 1613336 5686872 1663776 5646144 +1623408 5701720 1613336 5686872 1613272 5686816 1623296 5701624 +1613272 5686816 1623296 5701624 1613336 5686872 1613152 5686608 +1623408 5701720 1663880 5646248 1613336 5686872 1623296 5701624 +1613336 5686872 1623408 5701720 1663880 5646248 1663776 5646144 +1613056 5686432 1613088 5686584 1613152 5686608 1613336 5686872 +1613272 5686816 1613336 5686872 1613152 5686608 1613168 5686648 +1613336 5686872 1613056 5686432 1613152 5686608 1613168 5686648 +1613272 5686816 1623296 5701624 1613336 5686872 1613168 5686648 +1613272 5686816 1623192 5701576 1623296 5701624 1613336 5686872 +1623296 5701624 1623408 5701720 1613336 5686872 1623192 5701576 +1613272 5686816 1623192 5701576 1613336 5686872 1613168 5686648 +1613272 5686816 1615376 5695816 1623192 5701576 1613336 5686872 +1613272 5686816 1615376 5695816 1613336 5686872 1613168 5686648 +1623192 5701576 1623296 5701624 1613336 5686872 1615376 5695816 +1613272 5686816 1615200 5695576 1615376 5695816 1613336 5686872 +1613272 5686816 1615200 5695576 1613336 5686872 1613168 5686648 +1613272 5686816 1614216 5694264 1615200 5695576 1613336 5686872 +1613272 5686816 1614120 5694152 1614216 5694264 1613336 5686872 +1613272 5686816 1613488 5693384 1614120 5694152 1613336 5686872 +1614120 5694152 1614216 5694264 1613336 5686872 1613488 5693384 +1613272 5686816 1612336 5689264 1613488 5693384 1613336 5686872 +1613272 5686816 1612320 5689216 1612336 5689264 1613336 5686872 +1613488 5693384 1614120 5694152 1613336 5686872 1612336 5689264 +1612336 5689264 1613488 5693384 1613336 5686872 1612320 5689216 +1613272 5686816 1612184 5687456 1612320 5689216 1613336 5686872 +1612320 5689216 1612336 5689264 1613336 5686872 1612184 5687456 +1612184 5687456 1612112 5687552 1612320 5689216 1613336 5686872 +1613272 5686816 1612184 5687456 1613336 5686872 1613168 5686648 +1613272 5686816 1612848 5686808 1612184 5687456 1613336 5686872 +1613272 5686816 1612896 5686792 1612848 5686808 1613336 5686872 +1612848 5686808 1612184 5687376 1612184 5687456 1613336 5686872 +1613272 5686816 1613168 5686648 1612896 5686792 1613336 5686872 +1612184 5687456 1612320 5689216 1613336 5686872 1612848 5686808 +1613272 5686816 1612896 5686792 1613336 5686872 1613168 5686648 +1612848 5686808 1612184 5687456 1613336 5686872 1612896 5686792 +1614216 5694264 1615200 5695576 1613336 5686872 1614120 5694152 +1615376 5695816 1623192 5701576 1613336 5686872 1615200 5695576 +1615200 5695576 1615376 5695816 1613336 5686872 1614216 5694264 +1612336 5689264 1612312 5689384 1613488 5693384 1613336 5686872 +1613488 5693384 1613584 5693568 1614120 5694152 1613336 5686872 +1614216 5694264 1615056 5695464 1615200 5695576 1613336 5686872 +1615376 5695816 1615512 5696024 1623192 5701576 1613336 5686872 +1623192 5701576 1623296 5701624 1613336 5686872 1615512 5696024 +1615376 5695816 1615512 5696024 1613336 5686872 1615200 5695576 +1615512 5696024 1623016 5701528 1623192 5701576 1613336 5686872 +1663880 5646248 1613472 5686904 1623408 5701720 1623576 5701960 +1623408 5701720 1613472 5686904 1613336 5686872 1623296 5701624 +1613336 5686872 1623192 5701576 1623296 5701624 1613472 5686904 +1623408 5701720 1663880 5646248 1613472 5686904 1623296 5701624 +1623296 5701624 1623408 5701720 1613472 5686904 1623192 5701576 +1613472 5686904 1663880 5646248 1613336 5686872 1623192 5701576 +1613336 5686872 1613472 5686904 1663880 5646248 1663776 5646144 +1613336 5686872 1613472 5686904 1663776 5646144 1613056 5686432 +1663776 5646144 1657088 5639464 1613056 5686432 1613472 5686904 +1613056 5686432 1613336 5686872 1613472 5686904 1657088 5639464 +1613336 5686872 1613472 5686904 1613056 5686432 1613152 5686608 +1613472 5686904 1657088 5639464 1613056 5686432 1613152 5686608 +1613336 5686872 1613472 5686904 1613152 5686608 1613168 5686648 +1613472 5686904 1613056 5686432 1613152 5686608 1613168 5686648 +1657088 5639464 1657056 5639384 1613056 5686432 1613472 5686904 +1613472 5686904 1623408 5701720 1663880 5646248 1663776 5646144 +1613336 5686872 1623192 5701576 1613472 5686904 1613168 5686648 +1663776 5646144 1663688 5645984 1657088 5639464 1613472 5686904 +1613472 5686904 1663880 5646248 1663776 5646144 1657088 5639464 +1613056 5686432 1613088 5686584 1613152 5686608 1613472 5686904 +1613336 5686872 1613472 5686904 1613168 5686648 1613272 5686816 +1613472 5686904 1613152 5686608 1613168 5686648 1613272 5686816 +1613336 5686872 1623192 5701576 1613472 5686904 1613272 5686816 +1613336 5686872 1615512 5696024 1623192 5701576 1613472 5686904 +1623192 5701576 1623296 5701624 1613472 5686904 1615512 5696024 +1613336 5686872 1615512 5696024 1613472 5686904 1613272 5686816 +1613336 5686872 1615376 5695816 1615512 5696024 1613472 5686904 +1613336 5686872 1615376 5695816 1613472 5686904 1613272 5686816 +1615512 5696024 1623192 5701576 1613472 5686904 1615376 5695816 +1613336 5686872 1615200 5695576 1615376 5695816 1613472 5686904 +1613336 5686872 1615200 5695576 1613472 5686904 1613272 5686816 +1613336 5686872 1614216 5694264 1615200 5695576 1613472 5686904 +1613336 5686872 1614216 5694264 1613472 5686904 1613272 5686816 +1613336 5686872 1614120 5694152 1614216 5694264 1613472 5686904 +1613336 5686872 1613488 5693384 1614120 5694152 1613472 5686904 +1613336 5686872 1612336 5689264 1613488 5693384 1613472 5686904 +1613488 5693384 1614120 5694152 1613472 5686904 1612336 5689264 +1613336 5686872 1612320 5689216 1612336 5689264 1613472 5686904 +1613336 5686872 1612184 5687456 1612320 5689216 1613472 5686904 +1612336 5689264 1613488 5693384 1613472 5686904 1612320 5689216 +1612320 5689216 1612336 5689264 1613472 5686904 1612184 5687456 +1613336 5686872 1612848 5686808 1612184 5687456 1613472 5686904 +1612184 5687456 1612112 5687552 1612320 5689216 1613472 5686904 +1613336 5686872 1612184 5687456 1613472 5686904 1613272 5686816 +1614120 5694152 1614216 5694264 1613472 5686904 1613488 5693384 +1615200 5695576 1615376 5695816 1613472 5686904 1614216 5694264 +1614216 5694264 1615200 5695576 1613472 5686904 1614120 5694152 +1612336 5689264 1612312 5689384 1613488 5693384 1613472 5686904 +1613488 5693384 1613584 5693568 1614120 5694152 1613472 5686904 +1614216 5694264 1615056 5695464 1615200 5695576 1613472 5686904 +1615376 5695816 1615512 5696024 1613472 5686904 1615200 5695576 +1615512 5696024 1623016 5701528 1623192 5701576 1613472 5686904 +1613472 5686904 1613488 5686880 1613056 5686432 1613152 5686608 +1657088 5639464 1613488 5686880 1613472 5686904 1663776 5646144 +1613472 5686904 1613488 5686880 1613152 5686608 1613168 5686648 +1613488 5686880 1613056 5686432 1613152 5686608 1613168 5686648 +1613472 5686904 1613488 5686880 1613168 5686648 1613272 5686816 +1613488 5686880 1613152 5686608 1613168 5686648 1613272 5686816 +1613056 5686432 1613488 5686880 1657088 5639464 1657056 5639384 +1613472 5686904 1663776 5646144 1613488 5686880 1613272 5686816 +1613488 5686880 1657088 5639464 1613056 5686432 1613152 5686608 +1657088 5639464 1613056 5686432 1613488 5686880 1663776 5646144 +1657088 5639464 1613488 5686880 1663776 5646144 1663688 5645984 +1613472 5686904 1663880 5646248 1663776 5646144 1613488 5686880 +1663776 5646144 1657088 5639464 1613488 5686880 1663880 5646248 +1613472 5686904 1663880 5646248 1613488 5686880 1613272 5686816 +1613472 5686904 1623408 5701720 1663880 5646248 1613488 5686880 +1623408 5701720 1623576 5701960 1663880 5646248 1613488 5686880 +1613472 5686904 1623408 5701720 1613488 5686880 1613272 5686816 +1613472 5686904 1623296 5701624 1623408 5701720 1613488 5686880 +1613472 5686904 1623296 5701624 1613488 5686880 1613272 5686816 +1623408 5701720 1663880 5646248 1613488 5686880 1623296 5701624 +1613472 5686904 1623192 5701576 1623296 5701624 1613488 5686880 +1613472 5686904 1615512 5696024 1623192 5701576 1613488 5686880 +1613472 5686904 1615512 5696024 1613488 5686880 1613272 5686816 +1623296 5701624 1623408 5701720 1613488 5686880 1623192 5701576 +1623192 5701576 1623296 5701624 1613488 5686880 1615512 5696024 +1663880 5646248 1663776 5646144 1613488 5686880 1623408 5701720 +1613056 5686432 1613088 5686584 1613152 5686608 1613488 5686880 +1613472 5686904 1613488 5686880 1613272 5686816 1613336 5686872 +1613488 5686880 1613168 5686648 1613272 5686816 1613336 5686872 +1613472 5686904 1615512 5696024 1613488 5686880 1613336 5686872 +1613472 5686904 1615376 5695816 1615512 5696024 1613488 5686880 +1615512 5696024 1623192 5701576 1613488 5686880 1615376 5695816 +1613472 5686904 1615376 5695816 1613488 5686880 1613336 5686872 +1613472 5686904 1615200 5695576 1615376 5695816 1613488 5686880 +1613472 5686904 1615200 5695576 1613488 5686880 1613336 5686872 +1615376 5695816 1615512 5696024 1613488 5686880 1615200 5695576 +1613472 5686904 1614216 5694264 1615200 5695576 1613488 5686880 +1613472 5686904 1614216 5694264 1613488 5686880 1613336 5686872 +1613472 5686904 1614120 5694152 1614216 5694264 1613488 5686880 +1613472 5686904 1614120 5694152 1613488 5686880 1613336 5686872 +1613472 5686904 1613488 5693384 1614120 5694152 1613488 5686880 +1614216 5694264 1615200 5695576 1613488 5686880 1614120 5694152 +1614216 5694264 1615056 5695464 1615200 5695576 1613488 5686880 +1615200 5695576 1615376 5695816 1613488 5686880 1614216 5694264 +1615512 5696024 1623016 5701528 1623192 5701576 1613488 5686880 +1663880 5646248 1613536 5686904 1623408 5701720 1623576 5701960 +1623408 5701720 1613536 5686904 1613488 5686880 1623296 5701624 +1613536 5686904 1663880 5646248 1613488 5686880 1623296 5701624 +1613488 5686880 1623192 5701576 1623296 5701624 1613536 5686904 +1613488 5686880 1623192 5701576 1613536 5686904 1663880 5646248 +1623296 5701624 1623408 5701720 1613536 5686904 1623192 5701576 +1613488 5686880 1615512 5696024 1623192 5701576 1613536 5686904 +1613488 5686880 1615512 5696024 1613536 5686904 1663880 5646248 +1613488 5686880 1615376 5695816 1615512 5696024 1613536 5686904 +1613488 5686880 1615376 5695816 1613536 5686904 1663880 5646248 +1623192 5701576 1623296 5701624 1613536 5686904 1615512 5696024 +1615512 5696024 1623192 5701576 1613536 5686904 1615376 5695816 +1613488 5686880 1613536 5686904 1663880 5646248 1663776 5646144 +1613488 5686880 1615376 5695816 1613536 5686904 1663776 5646144 +1613488 5686880 1613536 5686904 1663776 5646144 1657088 5639464 +1613488 5686880 1615376 5695816 1613536 5686904 1657088 5639464 +1613536 5686904 1623408 5701720 1663880 5646248 1663776 5646144 +1613488 5686880 1613536 5686904 1657088 5639464 1613056 5686432 +1613488 5686880 1615376 5695816 1613536 5686904 1613056 5686432 +1613536 5686904 1663776 5646144 1657088 5639464 1613056 5686432 +1657088 5639464 1657056 5639384 1613056 5686432 1613536 5686904 +1613488 5686880 1613536 5686904 1613056 5686432 1613152 5686608 +1663776 5646144 1663688 5645984 1657088 5639464 1613536 5686904 +1613536 5686904 1663880 5646248 1663776 5646144 1657088 5639464 +1623408 5701720 1663880 5646248 1613536 5686904 1623296 5701624 +1613488 5686880 1615200 5695576 1615376 5695816 1613536 5686904 +1613488 5686880 1615200 5695576 1613536 5686904 1613056 5686432 +1615376 5695816 1615512 5696024 1613536 5686904 1615200 5695576 +1613488 5686880 1614216 5694264 1615200 5695576 1613536 5686904 +1613488 5686880 1614216 5694264 1613536 5686904 1613056 5686432 +1615200 5695576 1615376 5695816 1613536 5686904 1614216 5694264 +1613488 5686880 1614120 5694152 1614216 5694264 1613536 5686904 +1613488 5686880 1614120 5694152 1613536 5686904 1613056 5686432 +1613488 5686880 1613472 5686904 1614120 5694152 1613536 5686904 +1613488 5686880 1613472 5686904 1613536 5686904 1613056 5686432 +1613472 5686904 1613488 5693384 1614120 5694152 1613536 5686904 +1613472 5686904 1612336 5689264 1613488 5693384 1613536 5686904 +1613472 5686904 1612320 5689216 1612336 5689264 1613536 5686904 +1612336 5689264 1613488 5693384 1613536 5686904 1612320 5689216 +1613472 5686904 1612184 5687456 1612320 5689216 1613536 5686904 +1613488 5693384 1614120 5694152 1613536 5686904 1612336 5689264 +1614120 5694152 1614216 5694264 1613536 5686904 1613488 5693384 +1613472 5686904 1612320 5689216 1613536 5686904 1613488 5686880 +1612336 5689264 1612312 5689384 1613488 5693384 1613536 5686904 +1613488 5693384 1613584 5693568 1614120 5694152 1613536 5686904 +1614216 5694264 1615056 5695464 1615200 5695576 1613536 5686904 +1614216 5694264 1615200 5695576 1613536 5686904 1614120 5694152 +1615512 5696024 1623016 5701528 1623192 5701576 1613536 5686904 +1623192 5701576 1623296 5701624 1613536 5686904 1623016 5701528 +1615512 5696024 1623016 5701528 1613536 5686904 1615376 5695816 +1615512 5696024 1615632 5696264 1623016 5701528 1613536 5686904 +1663880 5646248 1613592 5686944 1623408 5701720 1623576 5701960 +1613536 5686904 1613592 5686944 1663880 5646248 1663776 5646144 +1613592 5686944 1623408 5701720 1663880 5646248 1663776 5646144 +1613536 5686904 1623408 5701720 1613592 5686944 1663776 5646144 +1613536 5686904 1613592 5686944 1663776 5646144 1657088 5639464 +1613536 5686904 1613592 5686944 1657088 5639464 1613056 5686432 +1613592 5686944 1663880 5646248 1663776 5646144 1657088 5639464 +1657088 5639464 1657056 5639384 1613056 5686432 1613592 5686944 +1613536 5686904 1613592 5686944 1613056 5686432 1613488 5686880 +1613536 5686904 1623408 5701720 1613592 5686944 1613056 5686432 +1663776 5646144 1663688 5645984 1657088 5639464 1613592 5686944 +1613592 5686944 1663776 5646144 1657088 5639464 1613056 5686432 +1623408 5701720 1613592 5686944 1613536 5686904 1623296 5701624 +1613536 5686904 1623192 5701576 1623296 5701624 1613592 5686944 +1623296 5701624 1623408 5701720 1613592 5686944 1623192 5701576 +1613536 5686904 1623016 5701528 1623192 5701576 1613592 5686944 +1623192 5701576 1623296 5701624 1613592 5686944 1623016 5701528 +1613592 5686944 1613056 5686432 1613536 5686904 1623016 5701528 +1623408 5701720 1663880 5646248 1613592 5686944 1623296 5701624 +1613536 5686904 1615512 5696024 1623016 5701528 1613592 5686944 +1623016 5701528 1623192 5701576 1613592 5686944 1615512 5696024 +1613536 5686904 1615376 5695816 1615512 5696024 1613592 5686944 +1613536 5686904 1615200 5695576 1615376 5695816 1613592 5686944 +1615376 5695816 1615512 5696024 1613592 5686944 1615200 5695576 +1613536 5686904 1615200 5695576 1613592 5686944 1613056 5686432 +1613536 5686904 1614216 5694264 1615200 5695576 1613592 5686944 +1615200 5695576 1615376 5695816 1613592 5686944 1614216 5694264 +1613536 5686904 1614216 5694264 1613592 5686944 1613056 5686432 +1615512 5696024 1615632 5696264 1623016 5701528 1613592 5686944 +1614216 5694264 1615056 5695464 1615200 5695576 1613592 5686944 +1613536 5686904 1614120 5694152 1614216 5694264 1613592 5686944 +1613536 5686904 1614120 5694152 1613592 5686944 1613056 5686432 +1614216 5694264 1615200 5695576 1613592 5686944 1614120 5694152 +1613536 5686904 1613488 5693384 1614120 5694152 1613592 5686944 +1613536 5686904 1613488 5693384 1613592 5686944 1613056 5686432 +1613536 5686904 1612336 5689264 1613488 5693384 1613592 5686944 +1613536 5686904 1612320 5689216 1612336 5689264 1613592 5686944 +1613536 5686904 1613472 5686904 1612320 5689216 1613592 5686944 +1612320 5689216 1612336 5689264 1613592 5686944 1613472 5686904 +1613472 5686904 1612184 5687456 1612320 5689216 1613592 5686944 +1613472 5686904 1613336 5686872 1612184 5687456 1613592 5686944 +1612320 5689216 1612336 5689264 1613592 5686944 1612184 5687456 +1613472 5686904 1612184 5687456 1613592 5686944 1613536 5686904 +1612184 5687456 1612112 5687552 1612320 5689216 1613592 5686944 +1613536 5686904 1613472 5686904 1613592 5686944 1613056 5686432 +1612336 5689264 1613488 5693384 1613592 5686944 1612320 5689216 +1613488 5693384 1614120 5694152 1613592 5686944 1612336 5689264 +1613536 5686904 1613488 5686880 1613472 5686904 1613592 5686944 +1612336 5689264 1612312 5689384 1613488 5693384 1613592 5686944 +1613488 5693384 1613584 5693568 1614120 5694152 1613592 5686944 +1614120 5694152 1614216 5694264 1613592 5686944 1613488 5693384 +1615512 5696024 1623016 5701528 1613592 5686944 1615376 5695816 +1613592 5686944 1613600 5686968 1623016 5701528 1623192 5701576 +1613592 5686944 1613600 5686968 1623192 5701576 1623296 5701624 +1613592 5686944 1613600 5686968 1623296 5701624 1623408 5701720 +1613600 5686968 1623016 5701528 1623192 5701576 1623296 5701624 +1613600 5686968 1623192 5701576 1623296 5701624 1623408 5701720 +1613592 5686944 1615512 5696024 1613600 5686968 1623408 5701720 +1613592 5686944 1613600 5686968 1623408 5701720 1663880 5646248 +1623016 5701528 1613600 5686968 1615512 5696024 1615632 5696264 +1615512 5696024 1613600 5686968 1613592 5686944 1615376 5695816 +1615512 5696024 1623016 5701528 1613600 5686968 1615376 5695816 +1613592 5686944 1615200 5695576 1615376 5695816 1613600 5686968 +1613592 5686944 1614216 5694264 1615200 5695576 1613600 5686968 +1615200 5695576 1615376 5695816 1613600 5686968 1614216 5694264 +1613600 5686968 1623408 5701720 1613592 5686944 1614216 5694264 +1613592 5686944 1614120 5694152 1614216 5694264 1613600 5686968 +1614216 5694264 1615200 5695576 1613600 5686968 1614120 5694152 +1613592 5686944 1614120 5694152 1613600 5686968 1623408 5701720 +1614216 5694264 1615056 5695464 1615200 5695576 1613600 5686968 +1613592 5686944 1613488 5693384 1614120 5694152 1613600 5686968 +1613592 5686944 1613488 5693384 1613600 5686968 1623408 5701720 +1614120 5694152 1614216 5694264 1613600 5686968 1613488 5693384 +1613592 5686944 1612336 5689264 1613488 5693384 1613600 5686968 +1613592 5686944 1612336 5689264 1613600 5686968 1623408 5701720 +1613592 5686944 1612320 5689216 1612336 5689264 1613600 5686968 +1613592 5686944 1612184 5687456 1612320 5689216 1613600 5686968 +1613592 5686944 1613472 5686904 1612184 5687456 1613600 5686968 +1613472 5686904 1613336 5686872 1612184 5687456 1613600 5686968 +1612184 5687456 1612320 5689216 1613600 5686968 1613336 5686872 +1613592 5686944 1613536 5686904 1613472 5686904 1613600 5686968 +1613472 5686904 1613336 5686872 1613600 5686968 1613536 5686904 +1613336 5686872 1612848 5686808 1612184 5687456 1613600 5686968 +1612184 5687456 1612112 5687552 1612320 5689216 1613600 5686968 +1613592 5686944 1613536 5686904 1613600 5686968 1623408 5701720 +1612320 5689216 1612336 5689264 1613600 5686968 1612184 5687456 +1612336 5689264 1613488 5693384 1613600 5686968 1612320 5689216 +1613536 5686904 1613488 5686880 1613472 5686904 1613600 5686968 +1612336 5689264 1612312 5689384 1613488 5693384 1613600 5686968 +1612312 5689384 1613384 5693288 1613488 5693384 1613600 5686968 +1612336 5689264 1612312 5689384 1613600 5686968 1612320 5689216 +1613488 5693384 1613584 5693568 1614120 5694152 1613600 5686968 +1613488 5693384 1614120 5694152 1613600 5686968 1612312 5689384 +1615376 5695816 1615512 5696024 1613600 5686968 1615200 5695576 +1613600 5686968 1615512 5696024 1623016 5701528 1623192 5701576 +1663880 5646248 1613632 5687000 1623408 5701720 1623576 5701960 +1613592 5686944 1613632 5687000 1663880 5646248 1663776 5646144 +1613592 5686944 1613632 5687000 1663776 5646144 1657088 5639464 +1613592 5686944 1623408 5701720 1613632 5687000 1663776 5646144 +1613632 5687000 1623408 5701720 1663880 5646248 1663776 5646144 +1623408 5701720 1613632 5687000 1613592 5686944 1613600 5686968 +1613632 5687000 1663776 5646144 1613592 5686944 1613600 5686968 +1623408 5701720 1663880 5646248 1613632 5687000 1613600 5686968 +1623408 5701720 1613632 5687000 1613600 5686968 1623296 5701624 +1613600 5686968 1623192 5701576 1623296 5701624 1613632 5687000 +1613600 5686968 1623016 5701528 1623192 5701576 1613632 5687000 +1623192 5701576 1623296 5701624 1613632 5687000 1623016 5701528 +1623296 5701624 1623408 5701720 1613632 5687000 1623192 5701576 +1623408 5701720 1663880 5646248 1613632 5687000 1623296 5701624 +1613632 5687000 1613592 5686944 1613600 5686968 1623016 5701528 +1613600 5686968 1615512 5696024 1623016 5701528 1613632 5687000 +1613600 5686968 1615376 5695816 1615512 5696024 1613632 5687000 +1623016 5701528 1623192 5701576 1613632 5687000 1615512 5696024 +1613600 5686968 1615376 5695816 1613632 5687000 1613592 5686944 +1615512 5696024 1615632 5696264 1623016 5701528 1613632 5687000 +1613600 5686968 1615200 5695576 1615376 5695816 1613632 5687000 +1613600 5686968 1614216 5694264 1615200 5695576 1613632 5687000 +1613600 5686968 1614120 5694152 1614216 5694264 1613632 5687000 +1614216 5694264 1615200 5695576 1613632 5687000 1614120 5694152 +1613600 5686968 1614120 5694152 1613632 5687000 1613592 5686944 +1613600 5686968 1613488 5693384 1614120 5694152 1613632 5687000 +1614120 5694152 1614216 5694264 1613632 5687000 1613488 5693384 +1613600 5686968 1613488 5693384 1613632 5687000 1613592 5686944 +1613488 5693384 1613584 5693568 1614120 5694152 1613632 5687000 +1614216 5694264 1615056 5695464 1615200 5695576 1613632 5687000 +1613600 5686968 1612312 5689384 1613488 5693384 1613632 5687000 +1612312 5689384 1613384 5693288 1613488 5693384 1613632 5687000 +1613600 5686968 1612312 5689384 1613632 5687000 1613592 5686944 +1613488 5693384 1614120 5694152 1613632 5687000 1612312 5689384 +1613600 5686968 1612336 5689264 1612312 5689384 1613632 5687000 +1613600 5686968 1612336 5689264 1613632 5687000 1613592 5686944 +1613600 5686968 1612320 5689216 1612336 5689264 1613632 5687000 +1613600 5686968 1612320 5689216 1613632 5687000 1613592 5686944 +1613600 5686968 1612184 5687456 1612320 5689216 1613632 5687000 +1613600 5686968 1613336 5686872 1612184 5687456 1613632 5687000 +1613600 5686968 1613472 5686904 1613336 5686872 1613632 5687000 +1613336 5686872 1612184 5687456 1613632 5687000 1613472 5686904 +1613600 5686968 1613536 5686904 1613472 5686904 1613632 5687000 +1613336 5686872 1612848 5686808 1612184 5687456 1613632 5687000 +1612184 5687456 1612112 5687552 1612320 5689216 1613632 5687000 +1613600 5686968 1613472 5686904 1613632 5687000 1613592 5686944 +1612184 5687456 1612320 5689216 1613632 5687000 1613336 5686872 +1612320 5689216 1612336 5689264 1613632 5687000 1612184 5687456 +1612336 5689264 1612312 5689384 1613632 5687000 1612320 5689216 +1612312 5689384 1613488 5693384 1613632 5687000 1612336 5689264 +1615200 5695576 1615376 5695816 1613632 5687000 1614216 5694264 +1615512 5696024 1623016 5701528 1613632 5687000 1615376 5695816 +1615376 5695816 1615512 5696024 1613632 5687000 1615200 5695576 +1612320 5689216 1613616 5687016 1612184 5687456 1612112 5687552 +1612184 5687456 1613616 5687016 1613632 5687000 1613336 5686872 +1613632 5687000 1613472 5686904 1613336 5686872 1613616 5687016 +1613632 5687000 1613600 5686968 1613472 5686904 1613616 5687016 +1613472 5686904 1613336 5686872 1613616 5687016 1613600 5686968 +1613600 5686968 1613536 5686904 1613472 5686904 1613616 5687016 +1613616 5687016 1612320 5689216 1613632 5687000 1613600 5686968 +1612184 5687456 1612320 5689216 1613616 5687016 1613336 5686872 +1612184 5687456 1613616 5687016 1613336 5686872 1612848 5686808 +1613336 5686872 1612184 5687456 1613616 5687016 1613472 5686904 +1613632 5687000 1613616 5687016 1612320 5689216 1612336 5689264 +1613632 5687000 1613600 5686968 1613616 5687016 1612336 5689264 +1613616 5687016 1612184 5687456 1612320 5689216 1612336 5689264 +1613632 5687000 1613616 5687016 1612336 5689264 1612312 5689384 +1613632 5687000 1613600 5686968 1613616 5687016 1612312 5689384 +1613616 5687016 1612320 5689216 1612336 5689264 1612312 5689384 +1613632 5687000 1613616 5687016 1612312 5689384 1613488 5693384 +1613632 5687000 1613600 5686968 1613616 5687016 1613488 5693384 +1612312 5689384 1613384 5693288 1613488 5693384 1613616 5687016 +1613632 5687000 1613616 5687016 1613488 5693384 1614120 5694152 +1613616 5687016 1612336 5689264 1612312 5689384 1613488 5693384 +1613632 5687000 1613640 5687040 1615512 5696024 1623016 5701528 +1613640 5687040 1615376 5695816 1615512 5696024 1623016 5701528 +1613632 5687000 1615376 5695816 1613640 5687040 1623016 5701528 +1613632 5687000 1613640 5687040 1623016 5701528 1623192 5701576 +1613632 5687000 1615376 5695816 1613640 5687040 1623192 5701576 +1613632 5687000 1613640 5687040 1623192 5701576 1623296 5701624 +1613632 5687000 1615376 5695816 1613640 5687040 1623296 5701624 +1613640 5687040 1623016 5701528 1623192 5701576 1623296 5701624 +1613632 5687000 1613640 5687040 1623296 5701624 1623408 5701720 +1613640 5687040 1615512 5696024 1623016 5701528 1623192 5701576 +1615512 5696024 1615632 5696264 1623016 5701528 1613640 5687040 +1615376 5695816 1613640 5687040 1613632 5687000 1615200 5695576 +1613640 5687040 1623296 5701624 1613632 5687000 1615200 5695576 +1615376 5695816 1615512 5696024 1613640 5687040 1615200 5695576 +1613632 5687000 1614216 5694264 1615200 5695576 1613640 5687040 +1613632 5687000 1614216 5694264 1613640 5687040 1623296 5701624 +1613632 5687000 1614120 5694152 1614216 5694264 1613640 5687040 +1613632 5687000 1613488 5693384 1614120 5694152 1613640 5687040 +1613632 5687000 1613488 5693384 1613640 5687040 1623296 5701624 +1614120 5694152 1614216 5694264 1613640 5687040 1613488 5693384 +1613632 5687000 1613616 5687016 1613488 5693384 1613640 5687040 +1613488 5693384 1614120 5694152 1613640 5687040 1613616 5687016 +1613632 5687000 1613616 5687016 1613640 5687040 1623296 5701624 +1613488 5693384 1613584 5693568 1614120 5694152 1613640 5687040 +1614216 5694264 1615056 5695464 1615200 5695576 1613640 5687040 +1613616 5687016 1612312 5689384 1613488 5693384 1613640 5687040 +1613488 5693384 1614120 5694152 1613640 5687040 1612312 5689384 +1612312 5689384 1613384 5693288 1613488 5693384 1613640 5687040 +1613616 5687016 1612312 5689384 1613640 5687040 1613632 5687000 +1613616 5687016 1612336 5689264 1612312 5689384 1613640 5687040 +1613616 5687016 1612336 5689264 1613640 5687040 1613632 5687000 +1613616 5687016 1612320 5689216 1612336 5689264 1613640 5687040 +1613616 5687016 1612184 5687456 1612320 5689216 1613640 5687040 +1613616 5687016 1613336 5686872 1612184 5687456 1613640 5687040 +1613336 5686872 1612848 5686808 1612184 5687456 1613640 5687040 +1612184 5687456 1612112 5687552 1612320 5689216 1613640 5687040 +1612184 5687456 1612320 5689216 1613640 5687040 1613336 5686872 +1613616 5687016 1613336 5686872 1613640 5687040 1613632 5687000 +1613616 5687016 1613472 5686904 1613336 5686872 1613640 5687040 +1612320 5689216 1612336 5689264 1613640 5687040 1612184 5687456 +1612336 5689264 1612312 5689384 1613640 5687040 1612320 5689216 +1612312 5689384 1613488 5693384 1613640 5687040 1612336 5689264 +1614216 5694264 1615200 5695576 1613640 5687040 1614120 5694152 +1615200 5695576 1615376 5695816 1613640 5687040 1614216 5694264 +1612320 5689216 1613592 5687080 1612184 5687456 1612112 5687552 +1613592 5687080 1613640 5687040 1612184 5687456 1612112 5687552 +1612320 5689216 1613592 5687080 1612112 5687552 1612192 5689088 +1612320 5689216 1613640 5687040 1613592 5687080 1612112 5687552 +1612184 5687456 1613592 5687080 1613640 5687040 1613336 5686872 +1613592 5687080 1612320 5689216 1613640 5687040 1613336 5686872 +1612184 5687456 1612112 5687552 1613592 5687080 1613336 5686872 +1612184 5687456 1613592 5687080 1613336 5686872 1612848 5686808 +1612184 5687456 1613592 5687080 1612848 5686808 1612184 5687376 +1612184 5687456 1612112 5687552 1613592 5687080 1612848 5686808 +1613592 5687080 1613640 5687040 1613336 5686872 1612848 5686808 +1613640 5687040 1613616 5687016 1613336 5686872 1613592 5687080 +1613640 5687040 1613616 5687016 1613592 5687080 1612320 5689216 +1613336 5686872 1612848 5686808 1613592 5687080 1613616 5687016 +1613336 5686872 1612896 5686792 1612848 5686808 1613592 5687080 +1613616 5687016 1613472 5686904 1613336 5686872 1613592 5687080 +1613616 5687016 1613600 5686968 1613472 5686904 1613592 5687080 +1613616 5687016 1613632 5687000 1613600 5686968 1613592 5687080 +1613600 5686968 1613536 5686904 1613472 5686904 1613592 5687080 +1613336 5686872 1612848 5686808 1613592 5687080 1613472 5686904 +1613616 5687016 1613600 5686968 1613592 5687080 1613640 5687040 +1613472 5686904 1613336 5686872 1613592 5687080 1613600 5686968 +1613640 5687040 1613592 5687080 1612320 5689216 1612336 5689264 +1613640 5687040 1613616 5687016 1613592 5687080 1612336 5689264 +1613592 5687080 1612112 5687552 1612320 5689216 1612336 5689264 +1613640 5687040 1613592 5687080 1612336 5689264 1612312 5689384 +1612184 5687456 1613552 5687088 1612848 5686808 1612184 5687376 +1613592 5687080 1613552 5687088 1612184 5687456 1612112 5687552 +1613592 5687080 1612848 5686808 1613552 5687088 1612112 5687552 +1612848 5686808 1613552 5687088 1613592 5687080 1613336 5686872 +1613552 5687088 1612112 5687552 1613592 5687080 1613336 5686872 +1612848 5686808 1612184 5687456 1613552 5687088 1613336 5686872 +1613592 5687080 1613472 5686904 1613336 5686872 1613552 5687088 +1613592 5687080 1613472 5686904 1613552 5687088 1612112 5687552 +1613336 5686872 1612848 5686808 1613552 5687088 1613472 5686904 +1613592 5687080 1613552 5687088 1612112 5687552 1612320 5689216 +1613552 5687088 1612184 5687456 1612112 5687552 1612320 5689216 +1613592 5687080 1613472 5686904 1613552 5687088 1612320 5689216 +1612112 5687552 1612192 5689088 1612320 5689216 1613552 5687088 +1612112 5687552 1612192 5689088 1613552 5687088 1612184 5687456 +1612112 5687552 1612088 5689040 1612192 5689088 1613552 5687088 +1613592 5687080 1613552 5687088 1612320 5689216 1612336 5689264 +1612320 5689216 1613592 5687080 1613552 5687088 1612192 5689088 +1612848 5686808 1613552 5687088 1613336 5686872 1612896 5686792 +1613552 5687088 1612848 5686808 1612184 5687456 1612112 5687552 +1613592 5687080 1613600 5686968 1613472 5686904 1613552 5687088 +1613592 5687080 1613616 5687016 1613600 5686968 1613552 5687088 +1613616 5687016 1613632 5687000 1613600 5686968 1613552 5687088 +1613600 5686968 1613536 5686904 1613472 5686904 1613552 5687088 +1613600 5686968 1613592 5686944 1613536 5686904 1613552 5687088 +1613592 5687080 1613616 5687016 1613552 5687088 1612320 5689216 +1613472 5686904 1613336 5686872 1613552 5687088 1613536 5686904 +1613592 5687080 1613640 5687040 1613616 5687016 1613552 5687088 +1613600 5686968 1613536 5686904 1613552 5687088 1613616 5687016 +1613536 5686904 1613488 5686880 1613472 5686904 1613552 5687088 +1612184 5687456 1613440 5687080 1612848 5686808 1612184 5687376 +1612848 5686808 1613440 5687080 1613552 5687088 1613336 5686872 +1612848 5686808 1612184 5687456 1613440 5687080 1613336 5686872 +1613552 5687088 1613472 5686904 1613336 5686872 1613440 5687080 +1613336 5686872 1612848 5686808 1613440 5687080 1613472 5686904 +1613552 5687088 1613536 5686904 1613472 5686904 1613440 5687080 +1613440 5687080 1612184 5687456 1613552 5687088 1613472 5686904 +1612848 5686808 1613440 5687080 1613336 5686872 1612896 5686792 +1613336 5686872 1613272 5686816 1612896 5686792 1613440 5687080 +1612848 5686808 1612184 5687456 1613440 5687080 1612896 5686792 +1613440 5687080 1613472 5686904 1613336 5686872 1612896 5686792 +1613552 5687088 1613440 5687080 1612184 5687456 1612112 5687552 +1613440 5687080 1612848 5686808 1612184 5687456 1612112 5687552 +1613552 5687088 1613440 5687080 1612112 5687552 1612192 5689088 +1612112 5687552 1612088 5689040 1612192 5689088 1613440 5687080 +1613440 5687080 1612184 5687456 1612112 5687552 1612192 5689088 +1613552 5687088 1613440 5687080 1612192 5689088 1612320 5689216 +1613440 5687080 1612112 5687552 1612192 5689088 1612320 5689216 +1613552 5687088 1613440 5687080 1612320 5689216 1613592 5687080 +1613552 5687088 1613472 5686904 1613440 5687080 1612320 5689216 +1613440 5687080 1613352 5687104 1612184 5687456 1612112 5687552 +1612184 5687456 1613352 5687104 1612848 5686808 1612184 5687376 +1612848 5686808 1613352 5687104 1613440 5687080 1612896 5686792 +1612848 5686808 1612184 5687456 1613352 5687104 1612896 5686792 +1613352 5687104 1612848 5686808 1612184 5687456 1612112 5687552 +1613440 5687080 1612896 5686792 1613352 5687104 1612112 5687552 +1613440 5687080 1613352 5687104 1612112 5687552 1612192 5689088 +1612112 5687552 1612088 5689040 1612192 5689088 1613352 5687104 +1613440 5687080 1612896 5686792 1613352 5687104 1612192 5689088 +1613440 5687080 1613352 5687104 1612192 5689088 1612320 5689216 +1613440 5687080 1612896 5686792 1613352 5687104 1612320 5689216 +1613352 5687104 1612112 5687552 1612192 5689088 1612320 5689216 +1613440 5687080 1613352 5687104 1612320 5689216 1613552 5687088 +1613440 5687080 1612896 5686792 1613352 5687104 1613552 5687088 +1612320 5689216 1613592 5687080 1613552 5687088 1613352 5687104 +1613352 5687104 1612184 5687456 1612112 5687552 1612192 5689088 +1613352 5687104 1612192 5689088 1612320 5689216 1613552 5687088 +1613440 5687080 1613336 5686872 1612896 5686792 1613352 5687104 +1613336 5686872 1613272 5686816 1612896 5686792 1613352 5687104 +1613272 5686816 1613168 5686648 1612896 5686792 1613352 5687104 +1613440 5687080 1613336 5686872 1613352 5687104 1613552 5687088 +1613440 5687080 1613472 5686904 1613336 5686872 1613352 5687104 +1612896 5686792 1612848 5686808 1613352 5687104 1613272 5686816 +1613336 5686872 1613272 5686816 1613352 5687104 1613440 5687080 +1612192 5689088 1613336 5687136 1613352 5687104 1612112 5687552 +1612192 5689088 1613336 5687136 1612112 5687552 1612088 5689040 +1613352 5687104 1612184 5687456 1612112 5687552 1613336 5687136 +1613352 5687104 1612848 5686808 1612184 5687456 1613336 5687136 +1613352 5687104 1612896 5686792 1612848 5686808 1613336 5687136 +1612184 5687456 1612112 5687552 1613336 5687136 1612848 5686808 +1612848 5686808 1612184 5687376 1612184 5687456 1613336 5687136 +1612848 5686808 1612184 5687456 1613336 5687136 1612896 5686792 +1613336 5687136 1612320 5689216 1613352 5687104 1612896 5686792 +1612192 5689088 1612320 5689216 1613336 5687136 1612112 5687552 +1613352 5687104 1613336 5687136 1612320 5689216 1613552 5687088 +1613352 5687104 1613336 5687136 1613552 5687088 1613440 5687080 +1613336 5687136 1612320 5689216 1613552 5687088 1613440 5687080 +1613336 5687136 1612192 5689088 1612320 5689216 1613552 5687088 +1612320 5689216 1613592 5687080 1613552 5687088 1613336 5687136 +1613352 5687104 1612896 5686792 1613336 5687136 1613440 5687080 +1613352 5687104 1613272 5686816 1612896 5686792 1613336 5687136 +1613352 5687104 1613336 5686872 1613272 5686816 1613336 5687136 +1613272 5686816 1613168 5686648 1612896 5686792 1613336 5687136 +1612896 5686792 1612848 5686808 1613336 5687136 1613272 5686816 +1613352 5687104 1613272 5686816 1613336 5687136 1613440 5687080 +1612112 5687552 1612192 5689088 1613336 5687136 1612184 5687456 +1612192 5689088 1613296 5687152 1612112 5687552 1612088 5689040 +1613336 5687136 1613296 5687152 1612192 5689088 1612320 5689216 +1613296 5687152 1612112 5687552 1612192 5689088 1612320 5689216 +1613336 5687136 1612112 5687552 1613296 5687152 1612320 5689216 +1613336 5687136 1613296 5687152 1612320 5689216 1613552 5687088 +1613336 5687136 1612112 5687552 1613296 5687152 1613552 5687088 +1613336 5687136 1613296 5687152 1613552 5687088 1613440 5687080 +1612320 5689216 1613592 5687080 1613552 5687088 1613296 5687152 +1613296 5687152 1612192 5689088 1612320 5689216 1613552 5687088 +1612112 5687552 1613296 5687152 1613336 5687136 1612184 5687456 +1613336 5687136 1612848 5686808 1612184 5687456 1613296 5687152 +1612848 5686808 1612184 5687376 1612184 5687456 1613296 5687152 +1613296 5687152 1613552 5687088 1613336 5687136 1612848 5686808 +1612112 5687552 1612192 5689088 1613296 5687152 1612184 5687456 +1612184 5687456 1612112 5687552 1613296 5687152 1612184 5687376 +1612848 5686808 1612184 5687376 1613296 5687152 1613336 5687136 +1613336 5687136 1612896 5686792 1612848 5686808 1613296 5687152 +1613336 5687136 1612896 5686792 1613296 5687152 1613552 5687088 +1612848 5686808 1612184 5687376 1613296 5687152 1612896 5686792 +1613336 5687136 1613272 5686816 1612896 5686792 1613296 5687152 +1613272 5686816 1613168 5686648 1612896 5686792 1613296 5687152 +1613336 5687136 1613272 5686816 1613296 5687152 1613552 5687088 +1612896 5686792 1612848 5686808 1613296 5687152 1613272 5686816 +1613336 5687136 1613352 5687104 1613272 5686816 1613296 5687152 +1613352 5687104 1613336 5686872 1613272 5686816 1613296 5687152 +1613336 5687136 1613352 5687104 1613296 5687152 1613552 5687088 +1613352 5687104 1613336 5686872 1613296 5687152 1613336 5687136 +1613272 5686816 1612896 5686792 1613296 5687152 1613336 5686872 +1612848 5686808 1612704 5686768 1612184 5687376 1613296 5687152 +1613352 5687104 1613440 5687080 1613336 5686872 1613296 5687152 +1613296 5687152 1613264 5687192 1612192 5689088 1612320 5689216 +1613296 5687152 1612112 5687552 1613264 5687192 1612320 5689216 +1612192 5689088 1613264 5687192 1612112 5687552 1612088 5689040 +1612112 5687552 1613264 5687192 1613296 5687152 1612184 5687456 +1613264 5687192 1612320 5689216 1613296 5687152 1612184 5687456 +1612112 5687552 1612192 5689088 1613264 5687192 1612184 5687456 +1613296 5687152 1612184 5687376 1612184 5687456 1613264 5687192 +1613296 5687152 1612184 5687376 1613264 5687192 1612320 5689216 +1612184 5687456 1612112 5687552 1613264 5687192 1612184 5687376 +1613296 5687152 1612848 5686808 1612184 5687376 1613264 5687192 +1613296 5687152 1612848 5686808 1613264 5687192 1612320 5689216 +1613296 5687152 1612896 5686792 1612848 5686808 1613264 5687192 +1613296 5687152 1612896 5686792 1613264 5687192 1612320 5689216 +1612848 5686808 1612184 5687376 1613264 5687192 1612896 5686792 +1613296 5687152 1613272 5686816 1612896 5686792 1613264 5687192 +1612184 5687376 1612184 5687456 1613264 5687192 1612848 5686808 +1612848 5686808 1612704 5686768 1612184 5687376 1613264 5687192 +1613264 5687192 1612112 5687552 1612192 5689088 1612320 5689216 +1613296 5687152 1613264 5687192 1612320 5689216 1613552 5687088 +1613296 5687152 1612896 5686792 1613264 5687192 1613552 5687088 +1613264 5687192 1612192 5689088 1612320 5689216 1613552 5687088 +1612320 5689216 1613592 5687080 1613552 5687088 1613264 5687192 +1612320 5689216 1613592 5687080 1613264 5687192 1612192 5689088 +1613552 5687088 1613296 5687152 1613264 5687192 1613592 5687080 +1612320 5689216 1612336 5689264 1613592 5687080 1613264 5687192 +1612320 5689216 1612336 5689264 1613264 5687192 1612192 5689088 +1613592 5687080 1613552 5687088 1613264 5687192 1612336 5689264 +1612336 5689264 1613640 5687040 1613592 5687080 1613264 5687192 +1613296 5687152 1613264 5687192 1613552 5687088 1613336 5687136 +1613296 5687152 1612896 5686792 1613264 5687192 1613336 5687136 +1613552 5687088 1613440 5687080 1613336 5687136 1613264 5687192 +1613264 5687192 1613592 5687080 1613552 5687088 1613336 5687136 +1612336 5689264 1613232 5687320 1613264 5687192 1612320 5689216 +1613264 5687192 1612192 5689088 1612320 5689216 1613232 5687320 +1612320 5689216 1612336 5689264 1613232 5687320 1612192 5689088 +1613232 5687320 1613592 5687080 1613264 5687192 1612192 5689088 +1612336 5689264 1613592 5687080 1613232 5687320 1612320 5689216 +1613264 5687192 1613232 5687320 1613592 5687080 1613552 5687088 +1613264 5687192 1613232 5687320 1613552 5687088 1613336 5687136 +1613552 5687088 1613440 5687080 1613336 5687136 1613232 5687320 +1613264 5687192 1613232 5687320 1613336 5687136 1613296 5687152 +1613264 5687192 1612192 5689088 1613232 5687320 1613336 5687136 +1613232 5687320 1612336 5689264 1613592 5687080 1613552 5687088 +1613232 5687320 1613592 5687080 1613552 5687088 1613336 5687136 +1613592 5687080 1613232 5687320 1612336 5689264 1613640 5687040 +1613264 5687192 1612112 5687552 1612192 5689088 1613232 5687320 +1612192 5689088 1612320 5689216 1613232 5687320 1612112 5687552 +1613264 5687192 1612184 5687456 1612112 5687552 1613232 5687320 +1613264 5687192 1612184 5687376 1612184 5687456 1613232 5687320 +1612184 5687456 1612112 5687552 1613232 5687320 1612184 5687376 +1612112 5687552 1612088 5689040 1612192 5689088 1613232 5687320 +1613264 5687192 1612848 5686808 1612184 5687376 1613232 5687320 +1612184 5687376 1612184 5687456 1613232 5687320 1612848 5686808 +1613264 5687192 1612896 5686792 1612848 5686808 1613232 5687320 +1613264 5687192 1612848 5686808 1613232 5687320 1613336 5687136 +1612112 5687552 1612192 5689088 1613232 5687320 1612184 5687456 +1612848 5686808 1612704 5686768 1612184 5687376 1613232 5687320 +1613232 5687320 1613280 5687472 1613592 5687080 1613552 5687088 +1613232 5687320 1612336 5689264 1613280 5687472 1613552 5687088 +1613280 5687472 1612336 5689264 1613592 5687080 1613552 5687088 +1612336 5689264 1613280 5687472 1613232 5687320 1612320 5689216 +1613280 5687472 1613552 5687088 1613232 5687320 1612320 5689216 +1613232 5687320 1612192 5689088 1612320 5689216 1613280 5687472 +1613232 5687320 1612112 5687552 1612192 5689088 1613280 5687472 +1612112 5687552 1612088 5689040 1612192 5689088 1613280 5687472 +1613232 5687320 1612112 5687552 1613280 5687472 1613552 5687088 +1612192 5689088 1612320 5689216 1613280 5687472 1612112 5687552 +1613232 5687320 1612184 5687456 1612112 5687552 1613280 5687472 +1612112 5687552 1612192 5689088 1613280 5687472 1612184 5687456 +1613232 5687320 1612184 5687376 1612184 5687456 1613280 5687472 +1613232 5687320 1612184 5687456 1613280 5687472 1613552 5687088 +1612320 5689216 1612336 5689264 1613280 5687472 1612192 5689088 +1613232 5687320 1613280 5687472 1613552 5687088 1613336 5687136 +1613552 5687088 1613440 5687080 1613336 5687136 1613280 5687472 +1613232 5687320 1613280 5687472 1613336 5687136 1613264 5687192 +1613232 5687320 1612184 5687456 1613280 5687472 1613336 5687136 +1613280 5687472 1613592 5687080 1613552 5687088 1613336 5687136 +1612336 5689264 1613592 5687080 1613280 5687472 1612320 5689216 +1613592 5687080 1613280 5687472 1612336 5689264 1613640 5687040 +1613592 5687080 1613552 5687088 1613280 5687472 1613640 5687040 +1613280 5687472 1612320 5689216 1612336 5689264 1613640 5687040 +1612336 5689264 1612312 5689384 1613640 5687040 1613280 5687472 +1612336 5689264 1612312 5689384 1613280 5687472 1612320 5689216 +1613640 5687040 1613592 5687080 1613280 5687472 1612312 5689384 +1612312 5689384 1613488 5693384 1613640 5687040 1613280 5687472 +1613488 5693384 1614120 5694152 1613640 5687040 1613280 5687472 +1612312 5689384 1613384 5693288 1613488 5693384 1613280 5687472 +1613640 5687040 1613592 5687080 1613280 5687472 1613488 5693384 +1612312 5689384 1613488 5693384 1613280 5687472 1612336 5689264 +1613640 5687040 1613408 5687664 1613488 5693384 1614120 5694152 +1613408 5687664 1613280 5687472 1613488 5693384 1614120 5694152 +1613640 5687040 1613408 5687664 1614120 5694152 1614216 5694264 +1613408 5687664 1613488 5693384 1614120 5694152 1614216 5694264 +1613640 5687040 1613280 5687472 1613408 5687664 1614216 5694264 +1613280 5687472 1613408 5687664 1613640 5687040 1613592 5687080 +1613280 5687472 1613408 5687664 1613592 5687080 1613552 5687088 +1613280 5687472 1613488 5693384 1613408 5687664 1613552 5687088 +1613280 5687472 1613408 5687664 1613552 5687088 1613336 5687136 +1613408 5687664 1614216 5694264 1613640 5687040 1613592 5687080 +1613408 5687664 1613640 5687040 1613592 5687080 1613552 5687088 +1613488 5693384 1613584 5693568 1614120 5694152 1613408 5687664 +1613488 5693384 1613408 5687664 1613280 5687472 1612312 5689384 +1613488 5693384 1614120 5694152 1613408 5687664 1612312 5689384 +1613488 5693384 1613408 5687664 1612312 5689384 1613384 5693288 +1613488 5693384 1614120 5694152 1613408 5687664 1613384 5693288 +1613408 5687664 1613552 5687088 1613280 5687472 1612312 5689384 +1613280 5687472 1612336 5689264 1612312 5689384 1613408 5687664 +1613280 5687472 1612336 5689264 1613408 5687664 1613552 5687088 +1613280 5687472 1612320 5689216 1612336 5689264 1613408 5687664 +1613280 5687472 1612320 5689216 1613408 5687664 1613552 5687088 +1613280 5687472 1612192 5689088 1612320 5689216 1613408 5687664 +1613280 5687472 1612192 5689088 1613408 5687664 1613552 5687088 +1613280 5687472 1612112 5687552 1612192 5689088 1613408 5687664 +1613280 5687472 1612184 5687456 1612112 5687552 1613408 5687664 +1612112 5687552 1612088 5689040 1612192 5689088 1613408 5687664 +1613280 5687472 1612112 5687552 1613408 5687664 1613552 5687088 +1612192 5689088 1612320 5689216 1613408 5687664 1612112 5687552 +1612320 5689216 1612336 5689264 1613408 5687664 1612192 5689088 +1612336 5689264 1612312 5689384 1613408 5687664 1612320 5689216 +1612312 5689384 1613112 5693056 1613384 5693288 1613408 5687664 +1613408 5687664 1612336 5689264 1612312 5689384 1613384 5693288 +1613640 5687040 1613408 5687664 1614216 5694264 1615200 5695576 +1614216 5694264 1613424 5687768 1613408 5687664 1614120 5694152 +1613408 5687664 1613488 5693384 1614120 5694152 1613424 5687768 +1613408 5687664 1613384 5693288 1613488 5693384 1613424 5687768 +1613488 5693384 1614120 5694152 1613424 5687768 1613384 5693288 +1613408 5687664 1612312 5689384 1613384 5693288 1613424 5687768 +1613384 5693288 1613488 5693384 1613424 5687768 1612312 5689384 +1614216 5694264 1613640 5687040 1613424 5687768 1614120 5694152 +1614120 5694152 1614216 5694264 1613424 5687768 1613488 5693384 +1613408 5687664 1613424 5687768 1613640 5687040 1613592 5687080 +1613424 5687768 1613640 5687040 1613408 5687664 1612312 5689384 +1613488 5693384 1613584 5693568 1614120 5694152 1613424 5687768 +1612312 5689384 1613112 5693056 1613384 5693288 1613424 5687768 +1613408 5687664 1612336 5689264 1612312 5689384 1613424 5687768 +1612312 5689384 1613384 5693288 1613424 5687768 1612336 5689264 +1613408 5687664 1612336 5689264 1613424 5687768 1613640 5687040 +1613408 5687664 1612320 5689216 1612336 5689264 1613424 5687768 +1613408 5687664 1612192 5689088 1612320 5689216 1613424 5687768 +1613408 5687664 1612112 5687552 1612192 5689088 1613424 5687768 +1612112 5687552 1612088 5689040 1612192 5689088 1613424 5687768 +1613408 5687664 1613280 5687472 1612112 5687552 1613424 5687768 +1613280 5687472 1612184 5687456 1612112 5687552 1613424 5687768 +1613280 5687472 1612184 5687456 1613424 5687768 1613408 5687664 +1613280 5687472 1613232 5687320 1612184 5687456 1613424 5687768 +1612112 5687552 1612192 5689088 1613424 5687768 1612184 5687456 +1612192 5689088 1612320 5689216 1613424 5687768 1612112 5687552 +1613408 5687664 1613280 5687472 1613424 5687768 1613640 5687040 +1612320 5689216 1612336 5689264 1613424 5687768 1612192 5689088 +1612336 5689264 1612312 5689384 1613424 5687768 1612320 5689216 +1613640 5687040 1613424 5687768 1614216 5694264 1615200 5695576 +1613640 5687040 1613408 5687664 1613424 5687768 1615200 5695576 +1613424 5687768 1614120 5694152 1614216 5694264 1615200 5695576 +1614216 5694264 1615056 5695464 1615200 5695576 1613424 5687768 +1613640 5687040 1613424 5687768 1615200 5695576 1615376 5695816 +1612192 5689088 1613296 5687768 1612112 5687552 1612088 5689040 +1612112 5687552 1613296 5687768 1613424 5687768 1612184 5687456 +1613424 5687768 1613280 5687472 1612184 5687456 1613296 5687768 +1613296 5687768 1612192 5689088 1613424 5687768 1613280 5687472 +1613424 5687768 1613408 5687664 1613280 5687472 1613296 5687768 +1613280 5687472 1612184 5687456 1613296 5687768 1613408 5687664 +1613424 5687768 1613408 5687664 1613296 5687768 1612192 5689088 +1613280 5687472 1613232 5687320 1612184 5687456 1613296 5687768 +1612184 5687456 1612112 5687552 1613296 5687768 1613280 5687472 +1613424 5687768 1613296 5687768 1612192 5689088 1612320 5689216 +1613424 5687768 1613408 5687664 1613296 5687768 1612320 5689216 +1613296 5687768 1612112 5687552 1612192 5689088 1612320 5689216 +1613424 5687768 1613296 5687768 1612320 5689216 1612336 5689264 +1612112 5687552 1612192 5689088 1613296 5687768 1612184 5687456 +1612192 5689088 1613200 5687752 1612112 5687552 1612088 5689040 +1613296 5687768 1613200 5687752 1612192 5689088 1612320 5689216 +1613296 5687768 1612112 5687552 1613200 5687752 1612320 5689216 +1613296 5687768 1613200 5687752 1612320 5689216 1613424 5687768 +1612112 5687552 1613200 5687752 1613296 5687768 1612184 5687456 +1613200 5687752 1612320 5689216 1613296 5687768 1612184 5687456 +1613296 5687768 1613280 5687472 1612184 5687456 1613200 5687752 +1613296 5687768 1613408 5687664 1613280 5687472 1613200 5687752 +1613296 5687768 1613408 5687664 1613200 5687752 1612320 5689216 +1613296 5687768 1613424 5687768 1613408 5687664 1613200 5687752 +1613280 5687472 1613232 5687320 1612184 5687456 1613200 5687752 +1613232 5687320 1612184 5687376 1612184 5687456 1613200 5687752 +1613280 5687472 1613232 5687320 1613200 5687752 1613408 5687664 +1612112 5687552 1612192 5689088 1613200 5687752 1612184 5687456 +1612184 5687456 1612112 5687552 1613200 5687752 1613232 5687320 +1613200 5687752 1612112 5687552 1612192 5689088 1612320 5689216 +1612184 5687456 1613120 5687704 1613232 5687320 1612184 5687376 +1613232 5687320 1612848 5686808 1612184 5687376 1613120 5687704 +1613120 5687704 1613200 5687752 1613232 5687320 1612184 5687376 +1613232 5687320 1613120 5687704 1613200 5687752 1613280 5687472 +1613232 5687320 1612184 5687376 1613120 5687704 1613280 5687472 +1613200 5687752 1613408 5687664 1613280 5687472 1613120 5687704 +1612184 5687456 1613200 5687752 1613120 5687704 1612184 5687376 +1613200 5687752 1613120 5687704 1612184 5687456 1612112 5687552 +1613200 5687752 1613120 5687704 1612112 5687552 1612192 5689088 +1612112 5687552 1612088 5689040 1612192 5689088 1613120 5687704 +1613120 5687704 1612184 5687376 1612184 5687456 1612112 5687552 +1613120 5687704 1612184 5687456 1612112 5687552 1612192 5689088 +1613200 5687752 1613120 5687704 1612192 5689088 1612320 5689216 +1613120 5687704 1612192 5689088 1613200 5687752 1613280 5687472 +1612192 5689088 1613008 5687736 1612112 5687552 1612088 5689040 +1612192 5689088 1613120 5687704 1613008 5687736 1612088 5689040 +1613120 5687704 1613008 5687736 1612192 5689088 1613200 5687752 +1613008 5687736 1612088 5689040 1612192 5689088 1613200 5687752 +1613120 5687704 1612112 5687552 1613008 5687736 1613200 5687752 +1612112 5687552 1611968 5687600 1612088 5689040 1613008 5687736 +1613008 5687736 1613120 5687704 1612112 5687552 1612088 5689040 +1612112 5687552 1613008 5687736 1613120 5687704 1612184 5687456 +1613120 5687704 1612184 5687376 1612184 5687456 1613008 5687736 +1613120 5687704 1613232 5687320 1612184 5687376 1613008 5687736 +1613232 5687320 1612848 5686808 1612184 5687376 1613008 5687736 +1613232 5687320 1612848 5686808 1613008 5687736 1613120 5687704 +1613120 5687704 1613280 5687472 1613232 5687320 1613008 5687736 +1613232 5687320 1613264 5687192 1612848 5686808 1613008 5687736 +1612184 5687376 1612184 5687456 1613008 5687736 1612848 5686808 +1613008 5687736 1613200 5687752 1613120 5687704 1613232 5687320 +1612112 5687552 1612088 5689040 1613008 5687736 1612184 5687456 +1612848 5686808 1612704 5686768 1612184 5687376 1613008 5687736 +1612184 5687456 1612112 5687552 1613008 5687736 1612184 5687376 +1612192 5689088 1612320 5689216 1613200 5687752 1613008 5687736 +1612192 5689088 1612320 5689216 1613008 5687736 1612088 5689040 +1612320 5689216 1613296 5687768 1613200 5687752 1613008 5687736 +1613200 5687752 1613120 5687704 1613008 5687736 1612320 5689216 +1613008 5687736 1612896 5687808 1612088 5689040 1612192 5689088 +1613008 5687736 1612896 5687808 1612192 5689088 1612320 5689216 +1612896 5687808 1612088 5689040 1612192 5689088 1612320 5689216 +1613008 5687736 1612112 5687552 1612896 5687808 1612320 5689216 +1612088 5689040 1612896 5687808 1612112 5687552 1611968 5687600 +1612112 5687552 1612896 5687808 1613008 5687736 1612184 5687456 +1612112 5687552 1612088 5689040 1612896 5687808 1612184 5687456 +1612896 5687808 1612320 5689216 1613008 5687736 1612184 5687456 +1612896 5687808 1612112 5687552 1612088 5689040 1612192 5689088 +1613008 5687736 1612184 5687376 1612184 5687456 1612896 5687808 +1613008 5687736 1612184 5687376 1612896 5687808 1612320 5689216 +1613008 5687736 1612848 5686808 1612184 5687376 1612896 5687808 +1612184 5687456 1612112 5687552 1612896 5687808 1612184 5687376 +1613008 5687736 1612896 5687808 1612320 5689216 1613200 5687752 +1612896 5687808 1612192 5689088 1612320 5689216 1613200 5687752 +1613008 5687736 1612184 5687376 1612896 5687808 1613200 5687752 +1612320 5689216 1613296 5687768 1613200 5687752 1612896 5687808 +1612320 5689216 1613296 5687768 1612896 5687808 1612192 5689088 +1613008 5687736 1612896 5687808 1613200 5687752 1613120 5687704 +1612320 5689216 1613424 5687768 1613296 5687768 1612896 5687808 +1613200 5687752 1613008 5687736 1612896 5687808 1613296 5687768 +1612112 5687552 1612864 5687848 1612896 5687808 1612184 5687456 +1612112 5687552 1612088 5689040 1612864 5687848 1612184 5687456 +1612088 5689040 1612864 5687848 1612112 5687552 1611968 5687600 +1612864 5687848 1612184 5687456 1612112 5687552 1611968 5687600 +1612088 5689040 1612896 5687808 1612864 5687848 1611968 5687600 +1612088 5689040 1612864 5687848 1611968 5687600 1611488 5688024 +1612896 5687808 1612184 5687376 1612184 5687456 1612864 5687848 +1612896 5687808 1612864 5687848 1612088 5689040 1612192 5689088 +1612864 5687848 1611968 5687600 1612088 5689040 1612192 5689088 +1612896 5687808 1612864 5687848 1612192 5689088 1612320 5689216 +1612896 5687808 1612864 5687848 1612320 5689216 1613296 5687768 +1612864 5687848 1612192 5689088 1612320 5689216 1613296 5687768 +1612896 5687808 1612864 5687848 1613296 5687768 1613200 5687752 +1612864 5687848 1612320 5689216 1613296 5687768 1613200 5687752 +1612864 5687848 1612088 5689040 1612192 5689088 1612320 5689216 +1612864 5687848 1613200 5687752 1612896 5687808 1612184 5687456 +1612320 5689216 1613424 5687768 1613296 5687768 1612864 5687848 +1612896 5687808 1612864 5687848 1613200 5687752 1613008 5687736 +1612320 5689216 1612856 5687888 1612864 5687848 1612192 5689088 +1612320 5689216 1613296 5687768 1612856 5687888 1612192 5689088 +1612856 5687888 1613296 5687768 1612864 5687848 1612192 5689088 +1612864 5687848 1612856 5687888 1613296 5687768 1613200 5687752 +1612856 5687888 1612320 5689216 1613296 5687768 1613200 5687752 +1612864 5687848 1612192 5689088 1612856 5687888 1613200 5687752 +1612864 5687848 1612856 5687888 1613200 5687752 1612896 5687808 +1612864 5687848 1612192 5689088 1612856 5687888 1612896 5687808 +1612856 5687888 1613296 5687768 1613200 5687752 1612896 5687808 +1612864 5687848 1612088 5689040 1612192 5689088 1612856 5687888 +1612864 5687848 1611968 5687600 1612088 5689040 1612856 5687888 +1612864 5687848 1611968 5687600 1612856 5687888 1612896 5687808 +1611968 5687600 1611488 5688024 1612088 5689040 1612856 5687888 +1612192 5689088 1612320 5689216 1612856 5687888 1612088 5689040 +1612864 5687848 1612112 5687552 1611968 5687600 1612856 5687888 +1612864 5687848 1612184 5687456 1612112 5687552 1612856 5687888 +1611968 5687600 1612088 5689040 1612856 5687888 1612112 5687552 +1612864 5687848 1612112 5687552 1612856 5687888 1612896 5687808 +1612088 5689040 1612192 5689088 1612856 5687888 1611968 5687600 +1613296 5687768 1612856 5687888 1612320 5689216 1613424 5687768 +1613200 5687752 1613008 5687736 1612896 5687808 1612856 5687888 +1613200 5687752 1613008 5687736 1612856 5687888 1613296 5687768 +1612896 5687808 1612864 5687848 1612856 5687888 1613008 5687736 +1613200 5687752 1613120 5687704 1613008 5687736 1612856 5687888 +1612856 5687888 1612848 5687960 1613296 5687768 1613200 5687752 +1612856 5687888 1612320 5689216 1612848 5687960 1613200 5687752 +1612320 5689216 1612848 5687960 1612856 5687888 1612192 5689088 +1612848 5687960 1613200 5687752 1612856 5687888 1612192 5689088 +1612848 5687960 1612320 5689216 1613296 5687768 1613200 5687752 +1612856 5687888 1612088 5689040 1612192 5689088 1612848 5687960 +1612856 5687888 1612088 5689040 1612848 5687960 1613200 5687752 +1612192 5689088 1612320 5689216 1612848 5687960 1612088 5689040 +1612856 5687888 1612848 5687960 1613200 5687752 1613008 5687736 +1612848 5687960 1613296 5687768 1613200 5687752 1613008 5687736 +1612856 5687888 1612088 5689040 1612848 5687960 1613008 5687736 +1613200 5687752 1613120 5687704 1613008 5687736 1612848 5687960 +1612320 5689216 1613296 5687768 1612848 5687960 1612192 5689088 +1612856 5687888 1611968 5687600 1612088 5689040 1612848 5687960 +1612856 5687888 1611968 5687600 1612848 5687960 1613008 5687736 +1612856 5687888 1612112 5687552 1611968 5687600 1612848 5687960 +1612856 5687888 1612112 5687552 1612848 5687960 1613008 5687736 +1611968 5687600 1611488 5688024 1612088 5689040 1612848 5687960 +1612088 5689040 1612192 5689088 1612848 5687960 1611968 5687600 +1612856 5687888 1612864 5687848 1612112 5687552 1612848 5687960 +1611968 5687600 1612088 5689040 1612848 5687960 1612112 5687552 +1613296 5687768 1612848 5687960 1612320 5689216 1613424 5687768 +1613296 5687768 1613200 5687752 1612848 5687960 1613424 5687768 +1612848 5687960 1612192 5689088 1612320 5689216 1613424 5687768 +1612320 5689216 1612336 5689264 1613424 5687768 1612848 5687960 +1612320 5689216 1612336 5689264 1612848 5687960 1612192 5689088 +1613424 5687768 1613296 5687768 1612848 5687960 1612336 5689264 +1612336 5689264 1612312 5689384 1613424 5687768 1612848 5687960 +1612856 5687888 1612848 5687960 1613008 5687736 1612896 5687808 +1612848 5687960 1612808 5688104 1613424 5687768 1613296 5687768 +1612848 5687960 1612808 5688104 1613296 5687768 1613200 5687752 +1612848 5687960 1612336 5689264 1612808 5688104 1613296 5687768 +1612808 5688104 1612336 5689264 1613424 5687768 1613296 5687768 +1612336 5689264 1612808 5688104 1612848 5687960 1612320 5689216 +1612808 5688104 1613296 5687768 1612848 5687960 1612320 5689216 +1612848 5687960 1612192 5689088 1612320 5689216 1612808 5688104 +1612848 5687960 1612088 5689040 1612192 5689088 1612808 5688104 +1612848 5687960 1612088 5689040 1612808 5688104 1613296 5687768 +1612848 5687960 1611968 5687600 1612088 5689040 1612808 5688104 +1612088 5689040 1612192 5689088 1612808 5688104 1611968 5687600 +1612848 5687960 1611968 5687600 1612808 5688104 1613296 5687768 +1611968 5687600 1611488 5688024 1612088 5689040 1612808 5688104 +1612088 5689040 1612192 5689088 1612808 5688104 1611488 5688024 +1611968 5687600 1611488 5688024 1612808 5688104 1612848 5687960 +1611488 5688024 1611408 5688288 1612088 5689040 1612808 5688104 +1611968 5687600 1611736 5687600 1611488 5688024 1612808 5688104 +1612192 5689088 1612320 5689216 1612808 5688104 1612088 5689040 +1612848 5687960 1612112 5687552 1611968 5687600 1612808 5688104 +1612848 5687960 1612112 5687552 1612808 5688104 1613296 5687768 +1612848 5687960 1612856 5687888 1612112 5687552 1612808 5688104 +1611968 5687600 1611488 5688024 1612808 5688104 1612112 5687552 +1612320 5689216 1612336 5689264 1612808 5688104 1612192 5689088 +1613424 5687768 1612808 5688104 1612336 5689264 1612312 5689384 +1612336 5689264 1613424 5687768 1612808 5688104 1612320 5689216 +1612192 5689088 1612672 5688344 1612808 5688104 1612088 5689040 +1612808 5688104 1611488 5688024 1612088 5689040 1612672 5688344 +1612808 5688104 1611968 5687600 1611488 5688024 1612672 5688344 +1611488 5688024 1612088 5689040 1612672 5688344 1611968 5687600 +1612808 5688104 1612112 5687552 1611968 5687600 1612672 5688344 +1611968 5687600 1611488 5688024 1612672 5688344 1612112 5687552 +1611488 5688024 1611408 5688288 1612088 5689040 1612672 5688344 +1611488 5688024 1611408 5688288 1612672 5688344 1611968 5687600 +1611408 5688288 1611416 5688480 1612088 5689040 1612672 5688344 +1611408 5688288 1611416 5688480 1612672 5688344 1611488 5688024 +1611968 5687600 1611736 5687600 1611488 5688024 1612672 5688344 +1611416 5688480 1611920 5689032 1612088 5689040 1612672 5688344 +1612192 5689088 1612320 5689216 1612672 5688344 1612088 5689040 +1612088 5689040 1612192 5689088 1612672 5688344 1611416 5688480 +1612672 5688344 1612320 5689216 1612808 5688104 1612112 5687552 +1612808 5688104 1612848 5687960 1612112 5687552 1612672 5688344 +1612808 5688104 1612672 5688344 1612320 5689216 1612336 5689264 +1612808 5688104 1612112 5687552 1612672 5688344 1612336 5689264 +1612808 5688104 1612672 5688344 1612336 5689264 1613424 5687768 +1612808 5688104 1612672 5688344 1613424 5687768 1613296 5687768 +1612808 5688104 1612112 5687552 1612672 5688344 1613424 5687768 +1612672 5688344 1612320 5689216 1612336 5689264 1613424 5687768 +1612336 5689264 1612312 5689384 1613424 5687768 1612672 5688344 +1612672 5688344 1612192 5689088 1612320 5689216 1612336 5689264 +1612336 5689264 1612640 5688440 1612672 5688344 1612320 5689216 +1612336 5689264 1613424 5687768 1612640 5688440 1612320 5689216 +1613424 5687768 1612640 5688440 1612336 5689264 1612312 5689384 +1612672 5688344 1612640 5688440 1613424 5687768 1612808 5688104 +1612672 5688344 1612192 5689088 1612320 5689216 1612640 5688440 +1612672 5688344 1612088 5689040 1612192 5689088 1612640 5688440 +1612672 5688344 1611416 5688480 1612088 5689040 1612640 5688440 +1612672 5688344 1611408 5688288 1611416 5688480 1612640 5688440 +1612672 5688344 1611488 5688024 1611408 5688288 1612640 5688440 +1612672 5688344 1611968 5687600 1611488 5688024 1612640 5688440 +1612672 5688344 1612112 5687552 1611968 5687600 1612640 5688440 +1611488 5688024 1611408 5688288 1612640 5688440 1611968 5687600 +1611408 5688288 1611416 5688480 1612640 5688440 1611488 5688024 +1611968 5687600 1611736 5687600 1611488 5688024 1612640 5688440 +1611416 5688480 1611920 5689032 1612088 5689040 1612640 5688440 +1611416 5688480 1611520 5689000 1611920 5689032 1612640 5688440 +1612088 5689040 1612192 5689088 1612640 5688440 1611920 5689032 +1611416 5688480 1611920 5689032 1612640 5688440 1611408 5688288 +1612320 5689216 1612336 5689264 1612640 5688440 1612192 5689088 +1612192 5689088 1612320 5689216 1612640 5688440 1612088 5689040 +1612640 5688440 1613424 5687768 1612672 5688344 1611968 5687600 +1612336 5689264 1612648 5688560 1612640 5688440 1612320 5689216 +1612336 5689264 1613424 5687768 1612648 5688560 1612320 5689216 +1612640 5688440 1612648 5688560 1613424 5687768 1612672 5688344 +1612648 5688560 1612336 5689264 1613424 5687768 1612672 5688344 +1612648 5688560 1612672 5688344 1612640 5688440 1612320 5689216 +1612640 5688440 1612192 5689088 1612320 5689216 1612648 5688560 +1612320 5689216 1612336 5689264 1612648 5688560 1612192 5689088 +1612640 5688440 1612192 5689088 1612648 5688560 1612672 5688344 +1613424 5687768 1612648 5688560 1612336 5689264 1612312 5689384 +1612648 5688560 1612320 5689216 1612336 5689264 1612312 5689384 +1613424 5687768 1612648 5688560 1612312 5689384 1613384 5693288 +1613424 5687768 1612672 5688344 1612648 5688560 1612312 5689384 +1613424 5687768 1612808 5688104 1612672 5688344 1612648 5688560 +1613424 5687768 1612808 5688104 1612648 5688560 1612312 5689384 +1612672 5688344 1612640 5688440 1612648 5688560 1612808 5688104 +1613424 5687768 1613296 5687768 1612808 5688104 1612648 5688560 +1612640 5688440 1612088 5689040 1612192 5689088 1612648 5688560 +1612640 5688440 1611920 5689032 1612088 5689040 1612648 5688560 +1612640 5688440 1612088 5689040 1612648 5688560 1612672 5688344 +1612192 5689088 1612320 5689216 1612648 5688560 1612088 5689040 +1613424 5687768 1612712 5688680 1612312 5689384 1613384 5693288 +1613424 5687768 1612712 5688680 1613384 5693288 1613488 5693384 +1613424 5687768 1612712 5688680 1613488 5693384 1614120 5694152 +1613424 5687768 1612648 5688560 1612712 5688680 1613488 5693384 +1612712 5688680 1612312 5689384 1613384 5693288 1613488 5693384 +1612648 5688560 1612712 5688680 1613424 5687768 1612808 5688104 +1612712 5688680 1613488 5693384 1613424 5687768 1612808 5688104 +1612648 5688560 1612312 5689384 1612712 5688680 1612808 5688104 +1612712 5688680 1612648 5688560 1612312 5689384 1613384 5693288 +1613424 5687768 1613296 5687768 1612808 5688104 1612712 5688680 +1612312 5689384 1613112 5693056 1613384 5693288 1612712 5688680 +1613384 5693288 1613488 5693384 1612712 5688680 1613112 5693056 +1613112 5693056 1613216 5693184 1613384 5693288 1612712 5688680 +1612312 5689384 1613016 5692968 1613112 5693056 1612712 5688680 +1612312 5689384 1613112 5693056 1612712 5688680 1612648 5688560 +1612312 5689384 1612712 5688680 1612648 5688560 1612336 5689264 +1612648 5688560 1612320 5689216 1612336 5689264 1612712 5688680 +1612648 5688560 1612192 5689088 1612320 5689216 1612712 5688680 +1612320 5689216 1612336 5689264 1612712 5688680 1612192 5689088 +1612712 5688680 1612808 5688104 1612648 5688560 1612192 5689088 +1612312 5689384 1613112 5693056 1612712 5688680 1612336 5689264 +1612648 5688560 1612088 5689040 1612192 5689088 1612712 5688680 +1612336 5689264 1612312 5689384 1612712 5688680 1612320 5689216 +1612648 5688560 1612712 5688680 1612808 5688104 1612672 5688344 +1612712 5688680 1613424 5687768 1612808 5688104 1612672 5688344 +1612648 5688560 1612192 5689088 1612712 5688680 1612672 5688344 +1612648 5688560 1612712 5688680 1612672 5688344 1612640 5688440 +1613424 5687768 1612816 5688784 1613488 5693384 1614120 5694152 +1613488 5693384 1612816 5688784 1612712 5688680 1613384 5693288 +1612712 5688680 1612816 5688784 1613424 5687768 1612808 5688104 +1612816 5688784 1612808 5688104 1612712 5688680 1613384 5693288 +1612712 5688680 1613112 5693056 1613384 5693288 1612816 5688784 +1613384 5693288 1613488 5693384 1612816 5688784 1613112 5693056 +1612712 5688680 1613112 5693056 1612816 5688784 1612808 5688104 +1613112 5693056 1613216 5693184 1613384 5693288 1612816 5688784 +1612712 5688680 1612816 5688784 1612808 5688104 1612672 5688344 +1612816 5688784 1613424 5687768 1612808 5688104 1612672 5688344 +1612712 5688680 1613112 5693056 1612816 5688784 1612672 5688344 +1612816 5688784 1613488 5693384 1613424 5687768 1612808 5688104 +1613488 5693384 1613424 5687768 1612816 5688784 1613384 5693288 +1613424 5687768 1613296 5687768 1612808 5688104 1612816 5688784 +1612712 5688680 1612312 5689384 1613112 5693056 1612816 5688784 +1612712 5688680 1612312 5689384 1612816 5688784 1612672 5688344 +1613112 5693056 1613384 5693288 1612816 5688784 1612312 5689384 +1612312 5689384 1613016 5692968 1613112 5693056 1612816 5688784 +1612312 5689384 1612288 5689416 1613016 5692968 1612816 5688784 +1613112 5693056 1613384 5693288 1612816 5688784 1613016 5692968 +1612712 5688680 1612336 5689264 1612312 5689384 1612816 5688784 +1612712 5688680 1612336 5689264 1612816 5688784 1612672 5688344 +1612312 5689384 1613016 5692968 1612816 5688784 1612336 5689264 +1612712 5688680 1612320 5689216 1612336 5689264 1612816 5688784 +1612712 5688680 1612192 5689088 1612320 5689216 1612816 5688784 +1612712 5688680 1612320 5689216 1612816 5688784 1612672 5688344 +1612336 5689264 1612312 5689384 1612816 5688784 1612320 5689216 +1612712 5688680 1612816 5688784 1612672 5688344 1612648 5688560 +1613424 5687768 1612944 5688856 1613488 5693384 1614120 5694152 +1612944 5688856 1612816 5688784 1613488 5693384 1614120 5694152 +1612816 5688784 1612944 5688856 1613424 5687768 1612808 5688104 +1612816 5688784 1612944 5688856 1612808 5688104 1612672 5688344 +1612816 5688784 1612944 5688856 1612672 5688344 1612712 5688680 +1612944 5688856 1613424 5687768 1612808 5688104 1612672 5688344 +1612816 5688784 1613488 5693384 1612944 5688856 1612672 5688344 +1613488 5693384 1612944 5688856 1612816 5688784 1613384 5693288 +1612816 5688784 1613112 5693056 1613384 5693288 1612944 5688856 +1613488 5693384 1614120 5694152 1612944 5688856 1613384 5693288 +1612816 5688784 1613016 5692968 1613112 5693056 1612944 5688856 +1613112 5693056 1613384 5693288 1612944 5688856 1613016 5692968 +1613112 5693056 1613216 5693184 1613384 5693288 1612944 5688856 +1612816 5688784 1612312 5689384 1613016 5692968 1612944 5688856 +1612312 5689384 1612288 5689416 1613016 5692968 1612944 5688856 +1613016 5692968 1613112 5693056 1612944 5688856 1612288 5689416 +1612288 5689416 1612880 5692928 1613016 5692968 1612944 5688856 +1612312 5689384 1612288 5689416 1612944 5688856 1612816 5688784 +1612944 5688856 1612672 5688344 1612816 5688784 1612312 5689384 +1613384 5693288 1613488 5693384 1612944 5688856 1613112 5693056 +1613424 5687768 1612808 5688104 1612944 5688856 1614120 5694152 +1613424 5687768 1612944 5688856 1614120 5694152 1614216 5694264 +1613424 5687768 1613296 5687768 1612808 5688104 1612944 5688856 +1613488 5693384 1613584 5693568 1614120 5694152 1612944 5688856 +1612816 5688784 1612336 5689264 1612312 5689384 1612944 5688856 +1612312 5689384 1612288 5689416 1612944 5688856 1612336 5689264 +1612816 5688784 1612320 5689216 1612336 5689264 1612944 5688856 +1612816 5688784 1612336 5689264 1612944 5688856 1612672 5688344 +1614120 5694152 1613088 5688888 1612944 5688856 1613488 5693384 +1612944 5688856 1613384 5693288 1613488 5693384 1613088 5688888 +1613488 5693384 1614120 5694152 1613088 5688888 1613384 5693288 +1614120 5694152 1613424 5687768 1613088 5688888 1613488 5693384 +1612944 5688856 1613112 5693056 1613384 5693288 1613088 5688888 +1612944 5688856 1613016 5692968 1613112 5693056 1613088 5688888 +1613384 5693288 1613488 5693384 1613088 5688888 1613112 5693056 +1612944 5688856 1612288 5689416 1613016 5692968 1613088 5688888 +1612944 5688856 1612312 5689384 1612288 5689416 1613088 5688888 +1613016 5692968 1613112 5693056 1613088 5688888 1612288 5689416 +1612288 5689416 1613016 5692968 1613088 5688888 1612312 5689384 +1613112 5693056 1613216 5693184 1613384 5693288 1613088 5688888 +1612288 5689416 1612880 5692928 1613016 5692968 1613088 5688888 +1612944 5688856 1612336 5689264 1612312 5689384 1613088 5688888 +1612312 5689384 1612288 5689416 1613088 5688888 1612336 5689264 +1613112 5693056 1613384 5693288 1613088 5688888 1613016 5692968 +1612944 5688856 1613088 5688888 1613424 5687768 1612808 5688104 +1613088 5688888 1614120 5694152 1613424 5687768 1612808 5688104 +1612944 5688856 1613088 5688888 1612808 5688104 1612672 5688344 +1612944 5688856 1613088 5688888 1612672 5688344 1612816 5688784 +1613088 5688888 1613424 5687768 1612808 5688104 1612672 5688344 +1613088 5688888 1612672 5688344 1612944 5688856 1612336 5689264 +1613424 5687768 1613088 5688888 1614120 5694152 1614216 5694264 +1613424 5687768 1612808 5688104 1613088 5688888 1614216 5694264 +1613424 5687768 1613088 5688888 1614216 5694264 1615200 5695576 +1613088 5688888 1613488 5693384 1614120 5694152 1614216 5694264 +1613424 5687768 1613296 5687768 1612808 5688104 1613088 5688888 +1613424 5687768 1613296 5687768 1613088 5688888 1614216 5694264 +1612808 5688104 1612672 5688344 1613088 5688888 1613296 5687768 +1613296 5687768 1612848 5687960 1612808 5688104 1613088 5688888 +1614120 5694152 1613088 5688888 1613488 5693384 1613584 5693568 +1612944 5688856 1612816 5688784 1612336 5689264 1613088 5688888 +1613088 5688888 1613336 5688792 1613424 5687768 1613296 5687768 +1613088 5688888 1614216 5694264 1613336 5688792 1613296 5687768 +1613424 5687768 1613336 5688792 1614216 5694264 1615200 5695576 +1613336 5688792 1613088 5688888 1614216 5694264 1615200 5695576 +1613336 5688792 1615200 5695576 1613424 5687768 1613296 5687768 +1614216 5694264 1613336 5688792 1613088 5688888 1614120 5694152 +1613336 5688792 1613296 5687768 1613088 5688888 1614120 5694152 +1614216 5694264 1615200 5695576 1613336 5688792 1614120 5694152 +1613088 5688888 1613488 5693384 1614120 5694152 1613336 5688792 +1613088 5688888 1613384 5693288 1613488 5693384 1613336 5688792 +1613088 5688888 1613112 5693056 1613384 5693288 1613336 5688792 +1613384 5693288 1613488 5693384 1613336 5688792 1613112 5693056 +1613088 5688888 1613112 5693056 1613336 5688792 1613296 5687768 +1613112 5693056 1613216 5693184 1613384 5693288 1613336 5688792 +1613488 5693384 1614120 5694152 1613336 5688792 1613384 5693288 +1613088 5688888 1613016 5692968 1613112 5693056 1613336 5688792 +1613088 5688888 1612288 5689416 1613016 5692968 1613336 5688792 +1613112 5693056 1613384 5693288 1613336 5688792 1613016 5692968 +1613088 5688888 1613016 5692968 1613336 5688792 1613296 5687768 +1614120 5694152 1614216 5694264 1613336 5688792 1613488 5693384 +1613088 5688888 1613336 5688792 1613296 5687768 1612808 5688104 +1613336 5688792 1613424 5687768 1613296 5687768 1612808 5688104 +1613088 5688888 1613016 5692968 1613336 5688792 1612808 5688104 +1613088 5688888 1613336 5688792 1612808 5688104 1612672 5688344 +1613088 5688888 1613016 5692968 1613336 5688792 1612672 5688344 +1613088 5688888 1613336 5688792 1612672 5688344 1612944 5688856 +1612672 5688344 1612816 5688784 1612944 5688856 1613336 5688792 +1613088 5688888 1613016 5692968 1613336 5688792 1612944 5688856 +1612672 5688344 1612712 5688680 1612816 5688784 1613336 5688792 +1612944 5688856 1613088 5688888 1613336 5688792 1612816 5688784 +1613336 5688792 1612808 5688104 1612672 5688344 1612816 5688784 +1613336 5688792 1613296 5687768 1612808 5688104 1612672 5688344 +1613296 5687768 1612848 5687960 1612808 5688104 1613336 5688792 +1613488 5693384 1613584 5693568 1614120 5694152 1613336 5688792 +1614216 5694264 1615056 5695464 1615200 5695576 1613336 5688792 +1613424 5687768 1613336 5688792 1615200 5695576 1613640 5687040 +1613424 5687768 1613336 5688792 1613640 5687040 1613408 5687664 +1613336 5688792 1614216 5694264 1615200 5695576 1613640 5687040 +1613424 5687768 1613296 5687768 1613336 5688792 1613640 5687040 +1615200 5695576 1615376 5695816 1613640 5687040 1613336 5688792 +1615200 5695576 1613392 5688832 1613336 5688792 1614216 5694264 +1613336 5688792 1614120 5694152 1614216 5694264 1613392 5688832 +1614216 5694264 1615200 5695576 1613392 5688832 1614120 5694152 +1613392 5688832 1613640 5687040 1613336 5688792 1614120 5694152 +1613336 5688792 1613488 5693384 1614120 5694152 1613392 5688832 +1614120 5694152 1614216 5694264 1613392 5688832 1613488 5693384 +1613336 5688792 1613384 5693288 1613488 5693384 1613392 5688832 +1613336 5688792 1613112 5693056 1613384 5693288 1613392 5688832 +1613336 5688792 1613016 5692968 1613112 5693056 1613392 5688832 +1613112 5693056 1613384 5693288 1613392 5688832 1613016 5692968 +1613112 5693056 1613216 5693184 1613384 5693288 1613392 5688832 +1613384 5693288 1613488 5693384 1613392 5688832 1613112 5693056 +1613336 5688792 1613016 5692968 1613392 5688832 1613640 5687040 +1613336 5688792 1613088 5688888 1613016 5692968 1613392 5688832 +1613088 5688888 1612288 5689416 1613016 5692968 1613392 5688832 +1613016 5692968 1613112 5693056 1613392 5688832 1612288 5689416 +1613088 5688888 1612312 5689384 1612288 5689416 1613392 5688832 +1613336 5688792 1613088 5688888 1613392 5688832 1613640 5687040 +1612288 5689416 1612880 5692928 1613016 5692968 1613392 5688832 +1613088 5688888 1612288 5689416 1613392 5688832 1613336 5688792 +1613488 5693384 1614120 5694152 1613392 5688832 1613384 5693288 +1613488 5693384 1613584 5693568 1614120 5694152 1613392 5688832 +1615200 5695576 1613392 5688832 1614216 5694264 1615056 5695464 +1613336 5688792 1613392 5688832 1613640 5687040 1613424 5687768 +1613640 5687040 1613408 5687664 1613424 5687768 1613392 5688832 +1613392 5688832 1615200 5695576 1613640 5687040 1613424 5687768 +1613336 5688792 1613392 5688832 1613424 5687768 1613296 5687768 +1613336 5688792 1613088 5688888 1613392 5688832 1613424 5687768 +1613640 5687040 1613392 5688832 1615200 5695576 1615376 5695816 +1613640 5687040 1613424 5687768 1613392 5688832 1615376 5695816 +1613640 5687040 1613392 5688832 1615376 5695816 1615512 5696024 +1615200 5695576 1615376 5695816 1613392 5688832 1614216 5694264 +1613392 5688832 1613448 5688912 1613640 5687040 1613424 5687768 +1613640 5687040 1613408 5687664 1613424 5687768 1613448 5688912 +1615376 5695816 1613448 5688912 1613392 5688832 1615200 5695576 +1615376 5695816 1613640 5687040 1613448 5688912 1615200 5695576 +1613640 5687040 1613448 5688912 1615376 5695816 1615512 5696024 +1613392 5688832 1613448 5688912 1613424 5687768 1613336 5688792 +1613392 5688832 1614216 5694264 1615200 5695576 1613448 5688912 +1615200 5695576 1615376 5695816 1613448 5688912 1614216 5694264 +1613392 5688832 1614120 5694152 1614216 5694264 1613448 5688912 +1613392 5688832 1613488 5693384 1614120 5694152 1613448 5688912 +1614120 5694152 1614216 5694264 1613448 5688912 1613488 5693384 +1613392 5688832 1613384 5693288 1613488 5693384 1613448 5688912 +1613488 5693384 1614120 5694152 1613448 5688912 1613384 5693288 +1613392 5688832 1613112 5693056 1613384 5693288 1613448 5688912 +1613392 5688832 1613016 5692968 1613112 5693056 1613448 5688912 +1613392 5688832 1612288 5689416 1613016 5692968 1613448 5688912 +1613016 5692968 1613112 5693056 1613448 5688912 1612288 5689416 +1613392 5688832 1613088 5688888 1612288 5689416 1613448 5688912 +1612288 5689416 1613016 5692968 1613448 5688912 1613088 5688888 +1613088 5688888 1612312 5689384 1612288 5689416 1613448 5688912 +1613088 5688888 1612336 5689264 1612312 5689384 1613448 5688912 +1613088 5688888 1612312 5689384 1613448 5688912 1613392 5688832 +1612288 5689416 1613016 5692968 1613448 5688912 1612312 5689384 +1613112 5693056 1613216 5693184 1613384 5693288 1613448 5688912 +1613112 5693056 1613384 5693288 1613448 5688912 1613016 5692968 +1612288 5689416 1612880 5692928 1613016 5692968 1613448 5688912 +1613392 5688832 1613336 5688792 1613088 5688888 1613448 5688912 +1613384 5693288 1613488 5693384 1613448 5688912 1613112 5693056 +1613488 5693384 1613584 5693568 1614120 5694152 1613448 5688912 +1614216 5694264 1615056 5695464 1615200 5695576 1613448 5688912 +1614216 5694264 1615200 5695576 1613448 5688912 1614120 5694152 +1613392 5688832 1613088 5688888 1613448 5688912 1613424 5687768 +1613448 5688912 1615376 5695816 1613640 5687040 1613424 5687768 +1615376 5695816 1613504 5689056 1613448 5688912 1615200 5695576 +1613448 5688912 1614216 5694264 1615200 5695576 1613504 5689056 +1613504 5689056 1613640 5687040 1613448 5688912 1614216 5694264 +1615200 5695576 1615376 5695816 1613504 5689056 1614216 5694264 +1613640 5687040 1613504 5689056 1615376 5695816 1615512 5696024 +1613640 5687040 1613504 5689056 1615512 5696024 1623016 5701528 +1613640 5687040 1613448 5688912 1613504 5689056 1623016 5701528 +1613640 5687040 1613504 5689056 1623016 5701528 1623192 5701576 +1613640 5687040 1613504 5689056 1623192 5701576 1623296 5701624 +1613640 5687040 1613448 5688912 1613504 5689056 1623192 5701576 +1613504 5689056 1615376 5695816 1615512 5696024 1623016 5701528 +1615376 5695816 1615512 5696024 1613504 5689056 1615200 5695576 +1613504 5689056 1615512 5696024 1623016 5701528 1623192 5701576 +1615512 5696024 1615632 5696264 1623016 5701528 1613504 5689056 +1614216 5694264 1615056 5695464 1615200 5695576 1613504 5689056 +1613448 5688912 1614120 5694152 1614216 5694264 1613504 5689056 +1614216 5694264 1615200 5695576 1613504 5689056 1614120 5694152 +1613448 5688912 1613488 5693384 1614120 5694152 1613504 5689056 +1613448 5688912 1613384 5693288 1613488 5693384 1613504 5689056 +1613488 5693384 1614120 5694152 1613504 5689056 1613384 5693288 +1613448 5688912 1613384 5693288 1613504 5689056 1613640 5687040 +1613448 5688912 1613112 5693056 1613384 5693288 1613504 5689056 +1613112 5693056 1613216 5693184 1613384 5693288 1613504 5689056 +1613384 5693288 1613488 5693384 1613504 5689056 1613112 5693056 +1613448 5688912 1613016 5692968 1613112 5693056 1613504 5689056 +1613448 5688912 1612288 5689416 1613016 5692968 1613504 5689056 +1613448 5688912 1612312 5689384 1612288 5689416 1613504 5689056 +1612288 5689416 1613016 5692968 1613504 5689056 1612312 5689384 +1613448 5688912 1613088 5688888 1612312 5689384 1613504 5689056 +1613088 5688888 1612336 5689264 1612312 5689384 1613504 5689056 +1613448 5688912 1613392 5688832 1613088 5688888 1613504 5689056 +1612312 5689384 1612288 5689416 1613504 5689056 1613088 5688888 +1613016 5692968 1613112 5693056 1613504 5689056 1612288 5689416 +1612288 5689416 1612880 5692928 1613016 5692968 1613504 5689056 +1612288 5689416 1612880 5692928 1613504 5689056 1612312 5689384 +1613016 5692968 1613112 5693056 1613504 5689056 1612880 5692928 +1613448 5688912 1613088 5688888 1613504 5689056 1613640 5687040 +1613112 5693056 1613384 5693288 1613504 5689056 1613016 5692968 +1612288 5689416 1612232 5689456 1612880 5692928 1613504 5689056 +1613488 5693384 1613584 5693568 1614120 5694152 1613504 5689056 +1614120 5694152 1614216 5694264 1613504 5689056 1613488 5693384 +1613448 5688912 1613504 5689056 1613640 5687040 1613424 5687768 +1613640 5687040 1613408 5687664 1613424 5687768 1613504 5689056 +1613448 5688912 1613504 5689056 1613424 5687768 1613392 5688832 +1613448 5688912 1613088 5688888 1613504 5689056 1613424 5687768 +1613504 5689056 1623192 5701576 1613640 5687040 1613424 5687768 +1613016 5692968 1613480 5689256 1613504 5689056 1612880 5692928 +1613480 5689256 1613112 5693056 1613504 5689056 1612880 5692928 +1613016 5692968 1613112 5693056 1613480 5689256 1612880 5692928 +1613504 5689056 1612288 5689416 1612880 5692928 1613480 5689256 +1613504 5689056 1612288 5689416 1613480 5689256 1613112 5693056 +1613504 5689056 1612312 5689384 1612288 5689416 1613480 5689256 +1613504 5689056 1612312 5689384 1613480 5689256 1613112 5693056 +1613504 5689056 1613088 5688888 1612312 5689384 1613480 5689256 +1613504 5689056 1613088 5688888 1613480 5689256 1613112 5693056 +1613088 5688888 1612336 5689264 1612312 5689384 1613480 5689256 +1612312 5689384 1612288 5689416 1613480 5689256 1613088 5688888 +1613504 5689056 1613448 5688912 1613088 5688888 1613480 5689256 +1612880 5692928 1613016 5692968 1613480 5689256 1612288 5689416 +1612288 5689416 1612880 5692928 1613480 5689256 1612312 5689384 +1613504 5689056 1613480 5689256 1613112 5693056 1613384 5693288 +1613504 5689056 1613088 5688888 1613480 5689256 1613384 5693288 +1613480 5689256 1613016 5692968 1613112 5693056 1613384 5693288 +1613112 5693056 1613216 5693184 1613384 5693288 1613480 5689256 +1613504 5689056 1613480 5689256 1613384 5693288 1613488 5693384 +1613504 5689056 1613088 5688888 1613480 5689256 1613488 5693384 +1613504 5689056 1613480 5689256 1613488 5693384 1614120 5694152 +1613504 5689056 1613088 5688888 1613480 5689256 1614120 5694152 +1613480 5689256 1613384 5693288 1613488 5693384 1614120 5694152 +1613480 5689256 1613112 5693056 1613384 5693288 1613488 5693384 +1612288 5689416 1612232 5689456 1612880 5692928 1613480 5689256 +1612232 5689456 1612736 5692952 1612880 5692928 1613480 5689256 +1612880 5692928 1613016 5692968 1613480 5689256 1612232 5689456 +1612288 5689416 1612232 5689456 1613480 5689256 1612312 5689384 +1613488 5693384 1613584 5693568 1614120 5694152 1613480 5689256 +1613504 5689056 1613480 5689256 1614120 5694152 1614216 5694264 +1613504 5689056 1613088 5688888 1613480 5689256 1614216 5694264 +1613504 5689056 1613480 5689256 1614216 5694264 1615200 5695576 +1613504 5689056 1613088 5688888 1613480 5689256 1615200 5695576 +1613480 5689256 1613488 5693384 1614120 5694152 1614216 5694264 +1613504 5689056 1613480 5689256 1615200 5695576 1615376 5695816 +1614216 5694264 1615056 5695464 1615200 5695576 1613480 5689256 +1613480 5689256 1614120 5694152 1614216 5694264 1615200 5695576 +1612880 5692928 1613448 5689368 1612232 5689456 1612736 5692952 +1613480 5689256 1613448 5689368 1612880 5692928 1613016 5692968 +1613480 5689256 1612232 5689456 1613448 5689368 1613016 5692968 +1613480 5689256 1613448 5689368 1613016 5692968 1613112 5693056 +1613480 5689256 1613448 5689368 1613112 5693056 1613384 5693288 +1613480 5689256 1612232 5689456 1613448 5689368 1613384 5693288 +1613448 5689368 1613016 5692968 1613112 5693056 1613384 5693288 +1613448 5689368 1612232 5689456 1612880 5692928 1613016 5692968 +1613112 5693056 1613216 5693184 1613384 5693288 1613448 5689368 +1613448 5689368 1612880 5692928 1613016 5692968 1613112 5693056 +1613480 5689256 1613448 5689368 1613384 5693288 1613488 5693384 +1613448 5689368 1613112 5693056 1613384 5693288 1613488 5693384 +1613480 5689256 1612232 5689456 1613448 5689368 1613488 5693384 +1613480 5689256 1613448 5689368 1613488 5693384 1614120 5694152 +1613480 5689256 1612232 5689456 1613448 5689368 1614120 5694152 +1613480 5689256 1613448 5689368 1614120 5694152 1614216 5694264 +1613480 5689256 1612232 5689456 1613448 5689368 1614216 5694264 +1613448 5689368 1613488 5693384 1614120 5694152 1614216 5694264 +1613448 5689368 1613384 5693288 1613488 5693384 1614120 5694152 +1612232 5689456 1613448 5689368 1613480 5689256 1612288 5689416 +1613448 5689368 1614216 5694264 1613480 5689256 1612288 5689416 +1612232 5689456 1612880 5692928 1613448 5689368 1612288 5689416 +1613480 5689256 1612312 5689384 1612288 5689416 1613448 5689368 +1613480 5689256 1613088 5688888 1612312 5689384 1613448 5689368 +1613088 5688888 1612336 5689264 1612312 5689384 1613448 5689368 +1613088 5688888 1612336 5689264 1613448 5689368 1613480 5689256 +1613480 5689256 1613088 5688888 1613448 5689368 1614216 5694264 +1613480 5689256 1613504 5689056 1613088 5688888 1613448 5689368 +1612312 5689384 1612288 5689416 1613448 5689368 1612336 5689264 +1613088 5688888 1612944 5688856 1612336 5689264 1613448 5689368 +1612336 5689264 1612312 5689384 1613448 5689368 1612944 5688856 +1613088 5688888 1612944 5688856 1613448 5689368 1613480 5689256 +1612288 5689416 1612232 5689456 1613448 5689368 1612312 5689384 +1613488 5693384 1613584 5693568 1614120 5694152 1613448 5689368 +1612944 5688856 1612816 5688784 1612336 5689264 1613448 5689368 +1613480 5689256 1613448 5689368 1614216 5694264 1615200 5695576 +1613448 5689368 1613416 5689384 1612880 5692928 1613016 5692968 +1612880 5692928 1613416 5689384 1612232 5689456 1612736 5692952 +1613448 5689368 1612232 5689456 1613416 5689384 1613016 5692968 +1612232 5689456 1613416 5689384 1613448 5689368 1612288 5689416 +1613416 5689384 1613016 5692968 1613448 5689368 1612288 5689416 +1613416 5689384 1612232 5689456 1612880 5692928 1613016 5692968 +1613448 5689368 1613416 5689384 1613016 5692968 1613112 5693056 +1613448 5689368 1612312 5689384 1612288 5689416 1613416 5689384 +1613448 5689368 1612312 5689384 1613416 5689384 1613016 5692968 +1612288 5689416 1612232 5689456 1613416 5689384 1612312 5689384 +1613448 5689368 1612336 5689264 1612312 5689384 1613416 5689384 +1613448 5689368 1612944 5688856 1612336 5689264 1613416 5689384 +1613448 5689368 1612944 5688856 1613416 5689384 1613016 5692968 +1612336 5689264 1612312 5689384 1613416 5689384 1612944 5688856 +1613448 5689368 1613088 5688888 1612944 5688856 1613416 5689384 +1612944 5688856 1612336 5689264 1613416 5689384 1613088 5688888 +1613448 5689368 1613480 5689256 1613088 5688888 1613416 5689384 +1613480 5689256 1613504 5689056 1613088 5688888 1613416 5689384 +1613448 5689368 1613480 5689256 1613416 5689384 1613016 5692968 +1613088 5688888 1612944 5688856 1613416 5689384 1613480 5689256 +1612312 5689384 1612288 5689416 1613416 5689384 1612336 5689264 +1612232 5689456 1612880 5692928 1613416 5689384 1612288 5689416 +1612944 5688856 1612816 5688784 1612336 5689264 1613416 5689384 +1612880 5692928 1613376 5689456 1612232 5689456 1612736 5692952 +1613416 5689384 1613376 5689456 1612880 5692928 1613016 5692968 +1613416 5689384 1613376 5689456 1613016 5692968 1613448 5689368 +1613376 5689456 1612880 5692928 1613016 5692968 1613448 5689368 +1613016 5692968 1613112 5693056 1613448 5689368 1613376 5689456 +1613112 5693056 1613384 5693288 1613448 5689368 1613376 5689456 +1613384 5693288 1613488 5693384 1613448 5689368 1613376 5689456 +1613384 5693288 1613488 5693384 1613376 5689456 1613112 5693056 +1613448 5689368 1613416 5689384 1613376 5689456 1613488 5693384 +1613112 5693056 1613216 5693184 1613384 5693288 1613376 5689456 +1613016 5692968 1613112 5693056 1613376 5689456 1612880 5692928 +1613112 5693056 1613384 5693288 1613376 5689456 1613016 5692968 +1613488 5693384 1614120 5694152 1613448 5689368 1613376 5689456 +1613416 5689384 1612232 5689456 1613376 5689456 1613448 5689368 +1612232 5689456 1613376 5689456 1613416 5689384 1612288 5689416 +1613416 5689384 1612312 5689384 1612288 5689416 1613376 5689456 +1613416 5689384 1612336 5689264 1612312 5689384 1613376 5689456 +1612312 5689384 1612288 5689416 1613376 5689456 1612336 5689264 +1613416 5689384 1612944 5688856 1612336 5689264 1613376 5689456 +1613416 5689384 1613088 5688888 1612944 5688856 1613376 5689456 +1612944 5688856 1612336 5689264 1613376 5689456 1613088 5688888 +1613416 5689384 1613480 5689256 1613088 5688888 1613376 5689456 +1612336 5689264 1612312 5689384 1613376 5689456 1612944 5688856 +1613376 5689456 1613448 5689368 1613416 5689384 1613088 5688888 +1612288 5689416 1612232 5689456 1613376 5689456 1612312 5689384 +1613376 5689456 1612232 5689456 1612880 5692928 1613016 5692968 +1612232 5689456 1612880 5692928 1613376 5689456 1612288 5689416 +1612944 5688856 1612816 5688784 1612336 5689264 1613376 5689456 +1612880 5692928 1613344 5689512 1612232 5689456 1612736 5692952 +1613376 5689456 1613344 5689512 1612880 5692928 1613016 5692968 +1613376 5689456 1613344 5689512 1613016 5692968 1613112 5693056 +1613376 5689456 1613344 5689512 1613112 5693056 1613384 5693288 +1613376 5689456 1613344 5689512 1613384 5693288 1613488 5693384 +1613376 5689456 1613344 5689512 1613488 5693384 1613448 5689368 +1613344 5689512 1613384 5693288 1613488 5693384 1613448 5689368 +1613376 5689456 1613344 5689512 1613448 5689368 1613416 5689384 +1613112 5693056 1613216 5693184 1613384 5693288 1613344 5689512 +1613344 5689512 1613016 5692968 1613112 5693056 1613384 5693288 +1613344 5689512 1613112 5693056 1613384 5693288 1613488 5693384 +1613488 5693384 1614120 5694152 1613448 5689368 1613344 5689512 +1613344 5689512 1612880 5692928 1613016 5692968 1613112 5693056 +1613376 5689456 1612232 5689456 1613344 5689512 1613448 5689368 +1612232 5689456 1613344 5689512 1613376 5689456 1612288 5689416 +1612232 5689456 1612880 5692928 1613344 5689512 1612288 5689416 +1613376 5689456 1612312 5689384 1612288 5689416 1613344 5689512 +1613376 5689456 1612336 5689264 1612312 5689384 1613344 5689512 +1613376 5689456 1612944 5688856 1612336 5689264 1613344 5689512 +1612336 5689264 1612312 5689384 1613344 5689512 1612944 5688856 +1613376 5689456 1613088 5688888 1612944 5688856 1613344 5689512 +1613376 5689456 1613416 5689384 1613088 5688888 1613344 5689512 +1612944 5688856 1612336 5689264 1613344 5689512 1613088 5688888 +1612312 5689384 1612288 5689416 1613344 5689512 1612336 5689264 +1613344 5689512 1613448 5689368 1613376 5689456 1613088 5688888 +1612288 5689416 1612232 5689456 1613344 5689512 1612312 5689384 +1613344 5689512 1612232 5689456 1612880 5692928 1613016 5692968 +1612944 5688856 1612816 5688784 1612336 5689264 1613344 5689512 +1612880 5692928 1613280 5689560 1612232 5689456 1612736 5692952 +1612232 5689456 1613280 5689560 1613344 5689512 1612288 5689416 +1613280 5689560 1612880 5692928 1613344 5689512 1612288 5689416 +1613344 5689512 1612312 5689384 1612288 5689416 1613280 5689560 +1613344 5689512 1612312 5689384 1613280 5689560 1612880 5692928 +1612288 5689416 1612232 5689456 1613280 5689560 1612312 5689384 +1613344 5689512 1612336 5689264 1612312 5689384 1613280 5689560 +1613344 5689512 1612944 5688856 1612336 5689264 1613280 5689560 +1613344 5689512 1612944 5688856 1613280 5689560 1612880 5692928 +1613344 5689512 1613088 5688888 1612944 5688856 1613280 5689560 +1612944 5688856 1612336 5689264 1613280 5689560 1613088 5688888 +1613344 5689512 1613376 5689456 1613088 5688888 1613280 5689560 +1613376 5689456 1613416 5689384 1613088 5688888 1613280 5689560 +1613344 5689512 1613376 5689456 1613280 5689560 1612880 5692928 +1613088 5688888 1612944 5688856 1613280 5689560 1613376 5689456 +1612336 5689264 1612312 5689384 1613280 5689560 1612944 5688856 +1612312 5689384 1612288 5689416 1613280 5689560 1612336 5689264 +1613344 5689512 1613280 5689560 1612880 5692928 1613016 5692968 +1613344 5689512 1613376 5689456 1613280 5689560 1613016 5692968 +1613280 5689560 1612232 5689456 1612880 5692928 1613016 5692968 +1613344 5689512 1613280 5689560 1613016 5692968 1613112 5693056 +1613344 5689512 1613280 5689560 1613112 5693056 1613384 5693288 +1613344 5689512 1613376 5689456 1613280 5689560 1613112 5693056 +1613280 5689560 1612880 5692928 1613016 5692968 1613112 5693056 +1612944 5688856 1612816 5688784 1612336 5689264 1613280 5689560 +1612232 5689456 1612880 5692928 1613280 5689560 1612288 5689416 +1612880 5692928 1613216 5689568 1612232 5689456 1612736 5692952 +1613280 5689560 1613216 5689568 1612880 5692928 1613016 5692968 +1613280 5689560 1613216 5689568 1613016 5692968 1613112 5693056 +1613280 5689560 1612232 5689456 1613216 5689568 1613016 5692968 +1612232 5689456 1613216 5689568 1613280 5689560 1612288 5689416 +1612232 5689456 1612880 5692928 1613216 5689568 1612288 5689416 +1613280 5689560 1612312 5689384 1612288 5689416 1613216 5689568 +1613280 5689560 1612336 5689264 1612312 5689384 1613216 5689568 +1612312 5689384 1612288 5689416 1613216 5689568 1612336 5689264 +1613280 5689560 1612944 5688856 1612336 5689264 1613216 5689568 +1613280 5689560 1613088 5688888 1612944 5688856 1613216 5689568 +1613280 5689560 1613376 5689456 1613088 5688888 1613216 5689568 +1613376 5689456 1613416 5689384 1613088 5688888 1613216 5689568 +1613088 5688888 1612944 5688856 1613216 5689568 1613416 5689384 +1613280 5689560 1613344 5689512 1613376 5689456 1613216 5689568 +1613416 5689384 1613480 5689256 1613088 5688888 1613216 5689568 +1613376 5689456 1613416 5689384 1613216 5689568 1613344 5689512 +1612944 5688856 1612336 5689264 1613216 5689568 1613088 5688888 +1612336 5689264 1612312 5689384 1613216 5689568 1612944 5688856 +1612944 5688856 1612816 5688784 1612336 5689264 1613216 5689568 +1613216 5689568 1613016 5692968 1613280 5689560 1613344 5689512 +1612288 5689416 1612232 5689456 1613216 5689568 1612312 5689384 +1613216 5689568 1612232 5689456 1612880 5692928 1613016 5692968 +1612944 5688856 1613112 5689528 1613216 5689568 1613088 5688888 +1612944 5688856 1612336 5689264 1613112 5689528 1613088 5688888 +1613112 5689528 1612336 5689264 1613216 5689568 1613088 5688888 +1613216 5689568 1613416 5689384 1613088 5688888 1613112 5689528 +1613216 5689568 1613376 5689456 1613416 5689384 1613112 5689528 +1613216 5689568 1613376 5689456 1613112 5689528 1612336 5689264 +1613416 5689384 1613088 5688888 1613112 5689528 1613376 5689456 +1613416 5689384 1613480 5689256 1613088 5688888 1613112 5689528 +1613216 5689568 1613344 5689512 1613376 5689456 1613112 5689528 +1613088 5688888 1612944 5688856 1613112 5689528 1613416 5689384 +1613216 5689568 1613112 5689528 1612336 5689264 1612312 5689384 +1613216 5689568 1613376 5689456 1613112 5689528 1612312 5689384 +1613112 5689528 1612944 5688856 1612336 5689264 1612312 5689384 +1613216 5689568 1613112 5689528 1612312 5689384 1612288 5689416 +1613216 5689568 1613376 5689456 1613112 5689528 1612288 5689416 +1613112 5689528 1612336 5689264 1612312 5689384 1612288 5689416 +1612336 5689264 1613112 5689528 1612944 5688856 1612816 5688784 +1613216 5689568 1613112 5689528 1612288 5689416 1612232 5689456 +1613216 5689568 1613376 5689456 1613112 5689528 1612232 5689456 +1613216 5689568 1613112 5689528 1612232 5689456 1612880 5692928 +1613112 5689528 1612312 5689384 1612288 5689416 1612232 5689456 +1612944 5688856 1613080 5689496 1613112 5689528 1613088 5688888 +1613080 5689496 1612336 5689264 1613112 5689528 1613088 5688888 +1613112 5689528 1613080 5689496 1612336 5689264 1612312 5689384 +1613112 5689528 1613088 5688888 1613080 5689496 1612312 5689384 +1613080 5689496 1612944 5688856 1612336 5689264 1612312 5689384 +1613112 5689528 1613416 5689384 1613088 5688888 1613080 5689496 +1613112 5689528 1613416 5689384 1613080 5689496 1612312 5689384 +1613088 5688888 1612944 5688856 1613080 5689496 1613416 5689384 +1613112 5689528 1613376 5689456 1613416 5689384 1613080 5689496 +1613112 5689528 1613216 5689568 1613376 5689456 1613080 5689496 +1613112 5689528 1613376 5689456 1613080 5689496 1612312 5689384 +1613416 5689384 1613480 5689256 1613088 5688888 1613080 5689496 +1613416 5689384 1613088 5688888 1613080 5689496 1613376 5689456 +1612944 5688856 1612336 5689264 1613080 5689496 1613088 5688888 +1613112 5689528 1613080 5689496 1612312 5689384 1612288 5689416 +1613112 5689528 1613376 5689456 1613080 5689496 1612288 5689416 +1613080 5689496 1612336 5689264 1612312 5689384 1612288 5689416 +1613112 5689528 1613080 5689496 1612288 5689416 1612232 5689456 +1613112 5689528 1613376 5689456 1613080 5689496 1612232 5689456 +1613080 5689496 1612312 5689384 1612288 5689416 1612232 5689456 +1612336 5689264 1613080 5689496 1612944 5688856 1612816 5688784 +1613112 5689528 1613080 5689496 1612232 5689456 1613216 5689568 +1613080 5689496 1612904 5689264 1612336 5689264 1612312 5689384 +1613080 5689496 1612904 5689264 1612312 5689384 1612288 5689416 +1613080 5689496 1612944 5688856 1612904 5689264 1612312 5689384 +1612944 5688856 1612904 5689264 1613080 5689496 1613088 5688888 +1613080 5689496 1613416 5689384 1613088 5688888 1612904 5689264 +1613416 5689384 1613480 5689256 1613088 5688888 1612904 5689264 +1613416 5689384 1613448 5689368 1613480 5689256 1612904 5689264 +1613416 5689384 1613480 5689256 1612904 5689264 1613080 5689496 +1613480 5689256 1613504 5689056 1613088 5688888 1612904 5689264 +1612944 5688856 1612336 5689264 1612904 5689264 1613088 5688888 +1613080 5689496 1613376 5689456 1613416 5689384 1612904 5689264 +1612904 5689264 1612312 5689384 1613080 5689496 1613416 5689384 +1613088 5688888 1612944 5688856 1612904 5689264 1613480 5689256 +1612904 5689264 1612944 5688856 1612336 5689264 1612312 5689384 +1612336 5689264 1612904 5689264 1612944 5688856 1612816 5688784 +1612336 5689264 1612904 5689264 1612816 5688784 1612320 5689216 +1612904 5689264 1613088 5688888 1612944 5688856 1612816 5688784 +1612336 5689264 1612312 5689384 1612904 5689264 1612320 5689216 +1612904 5689264 1612944 5688856 1612816 5688784 1612320 5689216 +1612816 5688784 1612712 5688680 1612320 5689216 1612904 5689264 +1612904 5689264 1612808 5689208 1612320 5689216 1612336 5689264 +1612904 5689264 1612816 5688784 1612808 5689208 1612336 5689264 +1612808 5689208 1612816 5688784 1612320 5689216 1612336 5689264 +1612904 5689264 1612808 5689208 1612336 5689264 1612312 5689384 +1612904 5689264 1612808 5689208 1612312 5689384 1613080 5689496 +1612808 5689208 1612320 5689216 1612336 5689264 1612312 5689384 +1612904 5689264 1612816 5688784 1612808 5689208 1612312 5689384 +1612816 5688784 1612808 5689208 1612904 5689264 1612944 5688856 +1612808 5689208 1612312 5689384 1612904 5689264 1612944 5688856 +1612904 5689264 1613088 5688888 1612944 5688856 1612808 5689208 +1612816 5688784 1612320 5689216 1612808 5689208 1612944 5688856 +1612320 5689216 1612808 5689208 1612816 5688784 1612712 5688680 +1612808 5689208 1612704 5689216 1612336 5689264 1612312 5689384 +1612320 5689216 1612704 5689216 1612808 5689208 1612816 5688784 +1612808 5689208 1612704 5689216 1612312 5689384 1612904 5689264 +1612312 5689384 1613080 5689496 1612904 5689264 1612704 5689216 +1612312 5689384 1612288 5689416 1613080 5689496 1612704 5689216 +1612704 5689216 1612336 5689264 1612312 5689384 1613080 5689496 +1612904 5689264 1612808 5689208 1612704 5689216 1613080 5689496 +1612808 5689208 1612816 5688784 1612704 5689216 1612904 5689264 +1612808 5689208 1612944 5688856 1612816 5688784 1612704 5689216 +1612704 5689216 1612320 5689216 1612336 5689264 1612312 5689384 +1612320 5689216 1612336 5689264 1612704 5689216 1612816 5688784 +1612320 5689216 1612704 5689216 1612816 5688784 1612712 5688680 +1612320 5689216 1612704 5689216 1612712 5688680 1612192 5689088 +1612704 5689216 1612808 5689208 1612816 5688784 1612712 5688680 +1612320 5689216 1612336 5689264 1612704 5689216 1612712 5688680 +1612704 5689216 1612616 5689272 1613080 5689496 1612904 5689264 +1613080 5689496 1612616 5689272 1612312 5689384 1612288 5689416 +1612312 5689384 1612616 5689272 1612704 5689216 1612336 5689264 +1612616 5689272 1612336 5689264 1612312 5689384 1612288 5689416 +1612704 5689216 1612616 5689272 1612904 5689264 1612808 5689208 +1612704 5689216 1612320 5689216 1612336 5689264 1612616 5689272 +1612336 5689264 1612312 5689384 1612616 5689272 1612320 5689216 +1613080 5689496 1612616 5689272 1612288 5689416 1612232 5689456 +1612704 5689216 1612320 5689216 1612616 5689272 1612904 5689264 +1612704 5689216 1612712 5688680 1612320 5689216 1612616 5689272 +1612616 5689272 1612288 5689416 1613080 5689496 1612904 5689264 +1612288 5689416 1612528 5689400 1612616 5689272 1612312 5689384 +1612528 5689400 1613080 5689496 1612616 5689272 1612312 5689384 +1612616 5689272 1612336 5689264 1612312 5689384 1612528 5689400 +1612312 5689384 1612288 5689416 1612528 5689400 1612336 5689264 +1612616 5689272 1612320 5689216 1612336 5689264 1612528 5689400 +1612616 5689272 1612336 5689264 1612528 5689400 1613080 5689496 +1612288 5689416 1613080 5689496 1612528 5689400 1612312 5689384 +1613080 5689496 1612528 5689400 1612288 5689416 1612232 5689456 +1613080 5689496 1612528 5689400 1612232 5689456 1613112 5689528 +1613080 5689496 1612616 5689272 1612528 5689400 1613112 5689528 +1612528 5689400 1612312 5689384 1612288 5689416 1612232 5689456 +1612528 5689400 1612288 5689416 1612232 5689456 1613112 5689528 +1612616 5689272 1612528 5689400 1613080 5689496 1612904 5689264 +1612616 5689272 1612528 5689400 1612904 5689264 1612704 5689216 +1612616 5689272 1612336 5689264 1612528 5689400 1612904 5689264 +1612528 5689400 1613112 5689528 1613080 5689496 1612904 5689264 +1612232 5689456 1613216 5689568 1613112 5689528 1612528 5689400 +1612232 5689456 1612512 5689592 1613216 5689568 1613112 5689528 +1612232 5689456 1612880 5692928 1612512 5689592 1613112 5689528 +1612880 5692928 1612512 5689592 1612232 5689456 1612736 5692952 +1612512 5689592 1613112 5689528 1612232 5689456 1612736 5692952 +1612232 5689456 1612544 5693040 1612736 5692952 1612512 5689592 +1612232 5689456 1612544 5693040 1612512 5689592 1613112 5689528 +1612232 5689456 1612440 5693112 1612544 5693040 1612512 5689592 +1612736 5692952 1612880 5692928 1612512 5689592 1612544 5693040 +1612512 5689592 1612880 5692928 1613216 5689568 1613112 5689528 +1612880 5692928 1613216 5689568 1612512 5689592 1612736 5692952 +1612232 5689456 1612512 5689592 1613112 5689528 1612528 5689400 +1612232 5689456 1612544 5693040 1612512 5689592 1612528 5689400 +1612512 5689592 1613216 5689568 1613112 5689528 1612528 5689400 +1613112 5689528 1613080 5689496 1612528 5689400 1612512 5689592 +1613112 5689528 1613080 5689496 1612512 5689592 1613216 5689568 +1613080 5689496 1612904 5689264 1612528 5689400 1612512 5689592 +1613080 5689496 1612904 5689264 1612512 5689592 1613112 5689528 +1612232 5689456 1612512 5689592 1612528 5689400 1612288 5689416 +1612232 5689456 1612544 5693040 1612512 5689592 1612288 5689416 +1612528 5689400 1612312 5689384 1612288 5689416 1612512 5689592 +1612904 5689264 1612616 5689272 1612528 5689400 1612512 5689592 +1612528 5689400 1612288 5689416 1612512 5689592 1612904 5689264 +1613216 5689568 1612512 5689592 1612880 5692928 1613016 5692968 +1612512 5689592 1612544 5689712 1613216 5689568 1613112 5689528 +1612512 5689592 1612880 5692928 1612544 5689712 1613112 5689528 +1612544 5689712 1612880 5692928 1613216 5689568 1613112 5689528 +1612512 5689592 1612544 5689712 1613112 5689528 1613080 5689496 +1612512 5689592 1612880 5692928 1612544 5689712 1613080 5689496 +1612512 5689592 1612544 5689712 1613080 5689496 1612904 5689264 +1612544 5689712 1613216 5689568 1613112 5689528 1613080 5689496 +1612880 5692928 1612544 5689712 1612512 5689592 1612736 5692952 +1612544 5689712 1613080 5689496 1612512 5689592 1612736 5692952 +1612512 5689592 1612544 5693040 1612736 5692952 1612544 5689712 +1612512 5689592 1612544 5693040 1612544 5689712 1613080 5689496 +1612512 5689592 1612232 5689456 1612544 5693040 1612544 5689712 +1612512 5689592 1612232 5689456 1612544 5689712 1613080 5689496 +1612512 5689592 1612288 5689416 1612232 5689456 1612544 5689712 +1612232 5689456 1612440 5693112 1612544 5693040 1612544 5689712 +1612232 5689456 1611600 5689064 1612440 5693112 1612544 5689712 +1612232 5689456 1612440 5693112 1612544 5689712 1612512 5689592 +1612544 5693040 1612736 5692952 1612544 5689712 1612440 5693112 +1612880 5692928 1613216 5689568 1612544 5689712 1612736 5692952 +1612736 5692952 1612880 5692928 1612544 5689712 1612544 5693040 +1613216 5689568 1612544 5689712 1612880 5692928 1613016 5692968 +1612544 5689712 1612592 5689784 1613216 5689568 1613112 5689528 +1612544 5689712 1612880 5692928 1612592 5689784 1613112 5689528 +1612880 5692928 1612592 5689784 1612544 5689712 1612736 5692952 +1612592 5689784 1613112 5689528 1612544 5689712 1612736 5692952 +1612592 5689784 1612880 5692928 1613216 5689568 1613112 5689528 +1612880 5692928 1613216 5689568 1612592 5689784 1612736 5692952 +1612544 5689712 1612592 5689784 1613112 5689528 1613080 5689496 +1612592 5689784 1613216 5689568 1613112 5689528 1613080 5689496 +1612544 5689712 1612592 5689784 1613080 5689496 1612512 5689592 +1612544 5689712 1612736 5692952 1612592 5689784 1613080 5689496 +1612544 5689712 1612544 5693040 1612736 5692952 1612592 5689784 +1612544 5689712 1612440 5693112 1612544 5693040 1612592 5689784 +1612544 5689712 1612232 5689456 1612440 5693112 1612592 5689784 +1612232 5689456 1611600 5689064 1612440 5693112 1612592 5689784 +1612544 5689712 1612512 5689592 1612232 5689456 1612592 5689784 +1612440 5693112 1612544 5693040 1612592 5689784 1612232 5689456 +1612544 5689712 1612232 5689456 1612592 5689784 1613080 5689496 +1612736 5692952 1612880 5692928 1612592 5689784 1612544 5693040 +1612544 5693040 1612736 5692952 1612592 5689784 1612440 5693112 +1613216 5689568 1612592 5689784 1612880 5692928 1613016 5692968 +1613216 5689568 1613112 5689528 1612592 5689784 1613016 5692968 +1612592 5689784 1612736 5692952 1612880 5692928 1613016 5692968 +1613216 5689568 1612592 5689784 1613016 5692968 1613280 5689560 +1612592 5689784 1612744 5689952 1613216 5689568 1613112 5689528 +1612592 5689784 1612744 5689952 1613112 5689528 1613080 5689496 +1612744 5689952 1613216 5689568 1613112 5689528 1613080 5689496 +1612592 5689784 1613016 5692968 1612744 5689952 1613080 5689496 +1612744 5689952 1613016 5692968 1613216 5689568 1613112 5689528 +1613216 5689568 1612744 5689952 1613016 5692968 1613280 5689560 +1613216 5689568 1613112 5689528 1612744 5689952 1613280 5689560 +1612744 5689952 1612592 5689784 1613016 5692968 1613280 5689560 +1612592 5689784 1612744 5689952 1613080 5689496 1612544 5689712 +1613016 5692968 1613112 5693056 1613280 5689560 1612744 5689952 +1613016 5692968 1612744 5689952 1612592 5689784 1612880 5692928 +1612744 5689952 1613080 5689496 1612592 5689784 1612880 5692928 +1612592 5689784 1612736 5692952 1612880 5692928 1612744 5689952 +1612592 5689784 1612544 5693040 1612736 5692952 1612744 5689952 +1612592 5689784 1612544 5693040 1612744 5689952 1613080 5689496 +1612736 5692952 1612880 5692928 1612744 5689952 1612544 5693040 +1613016 5692968 1613280 5689560 1612744 5689952 1612880 5692928 +1612592 5689784 1612440 5693112 1612544 5693040 1612744 5689952 +1612592 5689784 1612232 5689456 1612440 5693112 1612744 5689952 +1612544 5693040 1612736 5692952 1612744 5689952 1612440 5693112 +1612592 5689784 1612440 5693112 1612744 5689952 1613080 5689496 +1612880 5692928 1613016 5692968 1612744 5689952 1612736 5692952 +1613016 5692968 1612776 5689992 1612744 5689952 1612880 5692928 +1612776 5689992 1613280 5689560 1612744 5689952 1612880 5692928 +1613016 5692968 1613280 5689560 1612776 5689992 1612880 5692928 +1612744 5689952 1612776 5689992 1613280 5689560 1613216 5689568 +1612744 5689952 1612776 5689992 1613216 5689568 1613112 5689528 +1612744 5689952 1612776 5689992 1613112 5689528 1613080 5689496 +1612744 5689952 1612880 5692928 1612776 5689992 1613112 5689528 +1612776 5689992 1613016 5692968 1613280 5689560 1613216 5689568 +1612776 5689992 1613280 5689560 1613216 5689568 1613112 5689528 +1613280 5689560 1612776 5689992 1613016 5692968 1613112 5693056 +1612744 5689952 1612736 5692952 1612880 5692928 1612776 5689992 +1612744 5689952 1612544 5693040 1612736 5692952 1612776 5689992 +1612744 5689952 1612440 5693112 1612544 5693040 1612776 5689992 +1612544 5693040 1612736 5692952 1612776 5689992 1612440 5693112 +1612744 5689952 1612440 5693112 1612776 5689992 1613112 5689528 +1612880 5692928 1613016 5692968 1612776 5689992 1612736 5692952 +1612744 5689952 1612592 5689784 1612440 5693112 1612776 5689992 +1612736 5692952 1612880 5692928 1612776 5689992 1612544 5693040 +1612440 5693112 1612768 5690096 1612776 5689992 1612744 5689952 +1612440 5693112 1612544 5693040 1612768 5690096 1612744 5689952 +1612776 5689992 1612768 5690096 1612544 5693040 1612736 5692952 +1612768 5690096 1612736 5692952 1612776 5689992 1612744 5689952 +1612768 5690096 1612440 5693112 1612544 5693040 1612736 5692952 +1612440 5693112 1612768 5690096 1612744 5689952 1612592 5689784 +1612440 5693112 1612544 5693040 1612768 5690096 1612592 5689784 +1612440 5693112 1612768 5690096 1612592 5689784 1612232 5689456 +1612440 5693112 1612544 5693040 1612768 5690096 1612232 5689456 +1612440 5693112 1612768 5690096 1612232 5689456 1611600 5689064 +1612440 5693112 1612544 5693040 1612768 5690096 1611600 5689064 +1612592 5689784 1612544 5689712 1612232 5689456 1612768 5690096 +1612768 5690096 1612592 5689784 1612232 5689456 1611600 5689064 +1612768 5690096 1612776 5689992 1612744 5689952 1612592 5689784 +1612768 5690096 1612744 5689952 1612592 5689784 1612232 5689456 +1612232 5689456 1611688 5689072 1611600 5689064 1612768 5690096 +1612440 5693112 1612768 5690096 1611600 5689064 1611536 5689032 +1612776 5689992 1612768 5690096 1612736 5692952 1612880 5692928 +1612768 5690096 1612544 5693040 1612736 5692952 1612880 5692928 +1612776 5689992 1612768 5690096 1612880 5692928 1613016 5692968 +1612776 5689992 1612744 5689952 1612768 5690096 1613016 5692968 +1612776 5689992 1612768 5690096 1613016 5692968 1613280 5689560 +1612768 5690096 1612880 5692928 1613016 5692968 1613280 5689560 +1612776 5689992 1612768 5690096 1613280 5689560 1613216 5689568 +1612776 5689992 1612744 5689952 1612768 5690096 1613216 5689568 +1612768 5690096 1613016 5692968 1613280 5689560 1613216 5689568 +1612776 5689992 1612768 5690096 1613216 5689568 1613112 5689528 +1613016 5692968 1613112 5693056 1613280 5689560 1612768 5690096 +1613016 5692968 1613112 5693056 1612768 5690096 1612880 5692928 +1613280 5689560 1613216 5689568 1612768 5690096 1613112 5693056 +1613112 5693056 1613344 5689512 1613280 5689560 1612768 5690096 +1612768 5690096 1612736 5692952 1612880 5692928 1613016 5692968 +1612768 5690096 1612744 5690128 1612440 5693112 1612544 5693040 +1612768 5690096 1611600 5689064 1612744 5690128 1612544 5693040 +1612744 5690128 1611600 5689064 1612440 5693112 1612544 5693040 +1611600 5689064 1612744 5690128 1612768 5690096 1612232 5689456 +1612744 5690128 1612544 5693040 1612768 5690096 1612232 5689456 +1611600 5689064 1612440 5693112 1612744 5690128 1612232 5689456 +1612768 5690096 1612592 5689784 1612232 5689456 1612744 5690128 +1612768 5690096 1612592 5689784 1612744 5690128 1612544 5693040 +1612232 5689456 1611600 5689064 1612744 5690128 1612592 5689784 +1612592 5689784 1612544 5689712 1612232 5689456 1612744 5690128 +1612768 5690096 1612744 5690128 1612544 5693040 1612736 5692952 +1612768 5690096 1612592 5689784 1612744 5690128 1612736 5692952 +1612744 5690128 1612440 5693112 1612544 5693040 1612736 5692952 +1612768 5690096 1612744 5690128 1612736 5692952 1612880 5692928 +1612768 5690096 1612592 5689784 1612744 5690128 1612880 5692928 +1612744 5690128 1612544 5693040 1612736 5692952 1612880 5692928 +1612768 5690096 1612744 5689952 1612592 5689784 1612744 5690128 +1612768 5690096 1612744 5689952 1612744 5690128 1612880 5692928 +1612592 5689784 1612232 5689456 1612744 5690128 1612744 5689952 +1612768 5690096 1612776 5689992 1612744 5689952 1612744 5690128 +1611600 5689064 1612744 5690128 1612232 5689456 1611688 5689072 +1612440 5693112 1612744 5690128 1611600 5689064 1611536 5689032 +1612768 5690096 1612744 5690128 1612880 5692928 1613016 5692968 +1612768 5690096 1612744 5689952 1612744 5690128 1613016 5692968 +1612744 5690128 1612736 5692952 1612880 5692928 1613016 5692968 +1612768 5690096 1612744 5690128 1613016 5692968 1613112 5693056 +1612744 5690128 1612720 5690120 1612440 5693112 1612544 5693040 +1612744 5690128 1612720 5690120 1612544 5693040 1612736 5692952 +1612720 5690120 1612440 5693112 1612544 5693040 1612736 5692952 +1612744 5690128 1611600 5689064 1612720 5690120 1612736 5692952 +1611600 5689064 1612720 5690120 1612744 5690128 1612232 5689456 +1612720 5690120 1612736 5692952 1612744 5690128 1612232 5689456 +1612720 5690120 1611600 5689064 1612440 5693112 1612544 5693040 +1611600 5689064 1612440 5693112 1612720 5690120 1612232 5689456 +1612744 5690128 1612592 5689784 1612232 5689456 1612720 5690120 +1612744 5690128 1612592 5689784 1612720 5690120 1612736 5692952 +1612232 5689456 1611600 5689064 1612720 5690120 1612592 5689784 +1612592 5689784 1612544 5689712 1612232 5689456 1612720 5690120 +1612744 5690128 1612744 5689952 1612592 5689784 1612720 5690120 +1612744 5690128 1612744 5689952 1612720 5690120 1612736 5692952 +1612592 5689784 1612232 5689456 1612720 5690120 1612744 5689952 +1612744 5690128 1612720 5690120 1612736 5692952 1612880 5692928 +1612744 5690128 1612768 5690096 1612744 5689952 1612720 5690120 +1612744 5690128 1612768 5690096 1612720 5690120 1612736 5692952 +1612744 5689952 1612592 5689784 1612720 5690120 1612768 5690096 +1612768 5690096 1612776 5689992 1612744 5689952 1612720 5690120 +1612744 5689952 1612592 5689784 1612720 5690120 1612776 5689992 +1612768 5690096 1612776 5689992 1612720 5690120 1612744 5690128 +1611600 5689064 1612720 5690120 1612232 5689456 1611688 5689072 +1612440 5693112 1612720 5690120 1611600 5689064 1611536 5689032 +1612720 5690120 1612664 5690184 1612440 5693112 1612544 5693040 +1612720 5690120 1612664 5690184 1612544 5693040 1612736 5692952 +1612720 5690120 1612664 5690184 1612736 5692952 1612744 5690128 +1612664 5690184 1612544 5693040 1612736 5692952 1612744 5690128 +1612664 5690184 1612440 5693112 1612544 5693040 1612736 5692952 +1612720 5690120 1611600 5689064 1612664 5690184 1612744 5690128 +1611600 5689064 1612664 5690184 1612720 5690120 1612232 5689456 +1612720 5690120 1612592 5689784 1612232 5689456 1612664 5690184 +1612664 5690184 1612744 5690128 1612720 5690120 1612592 5689784 +1612232 5689456 1611600 5689064 1612664 5690184 1612592 5689784 +1612664 5690184 1611600 5689064 1612440 5693112 1612544 5693040 +1611600 5689064 1612440 5693112 1612664 5690184 1612232 5689456 +1612720 5690120 1612744 5689952 1612592 5689784 1612664 5690184 +1612592 5689784 1612232 5689456 1612664 5690184 1612744 5689952 +1612720 5690120 1612744 5689952 1612664 5690184 1612744 5690128 +1612592 5689784 1612544 5689712 1612232 5689456 1612664 5690184 +1612592 5689784 1612544 5689712 1612664 5690184 1612744 5689952 +1612232 5689456 1611600 5689064 1612664 5690184 1612544 5689712 +1612544 5689712 1612512 5689592 1612232 5689456 1612664 5690184 +1612720 5690120 1612776 5689992 1612744 5689952 1612664 5690184 +1612736 5692952 1612880 5692928 1612744 5690128 1612664 5690184 +1612744 5690128 1612720 5690120 1612664 5690184 1612880 5692928 +1612736 5692952 1612880 5692928 1612664 5690184 1612544 5693040 +1612880 5692928 1613016 5692968 1612744 5690128 1612664 5690184 +1612744 5690128 1612720 5690120 1612664 5690184 1613016 5692968 +1612880 5692928 1613016 5692968 1612664 5690184 1612736 5692952 +1611600 5689064 1612664 5690184 1612232 5689456 1611688 5689072 +1612440 5693112 1612664 5690184 1611600 5689064 1611536 5689032 +1612440 5693112 1612544 5693040 1612664 5690184 1611536 5689032 +1612664 5690184 1612232 5689456 1611600 5689064 1611536 5689032 +1612440 5693112 1612664 5690184 1611536 5689032 1612408 5693168 +1613016 5692968 1612768 5690096 1612744 5690128 1612664 5690184 +1612664 5690184 1612520 5690272 1612440 5693112 1612544 5693040 +1612664 5690184 1612520 5690272 1612544 5693040 1612736 5692952 +1612664 5690184 1612520 5690272 1612736 5692952 1612880 5692928 +1612520 5690272 1612544 5693040 1612736 5692952 1612880 5692928 +1612520 5690272 1612440 5693112 1612544 5693040 1612736 5692952 +1612664 5690184 1611536 5689032 1612520 5690272 1612880 5692928 +1612520 5690272 1611536 5689032 1612440 5693112 1612544 5693040 +1612664 5690184 1612520 5690272 1612880 5692928 1613016 5692968 +1612520 5690272 1612736 5692952 1612880 5692928 1613016 5692968 +1612664 5690184 1611536 5689032 1612520 5690272 1613016 5692968 +1612664 5690184 1612520 5690272 1613016 5692968 1612744 5690128 +1612440 5693112 1612520 5690272 1611536 5689032 1612408 5693168 +1612440 5693112 1612544 5693040 1612520 5690272 1612408 5693168 +1612520 5690272 1612664 5690184 1611536 5689032 1612408 5693168 +1611536 5689032 1611480 5688984 1612408 5693168 1612520 5690272 +1611536 5689032 1612520 5690272 1612664 5690184 1611600 5689064 +1612520 5690272 1613016 5692968 1612664 5690184 1611600 5689064 +1612664 5690184 1612232 5689456 1611600 5689064 1612520 5690272 +1612664 5690184 1612544 5689712 1612232 5689456 1612520 5690272 +1612664 5690184 1612544 5689712 1612520 5690272 1613016 5692968 +1612232 5689456 1611600 5689064 1612520 5690272 1612544 5689712 +1611536 5689032 1612408 5693168 1612520 5690272 1611600 5689064 +1612544 5689712 1612512 5689592 1612232 5689456 1612520 5690272 +1612664 5690184 1612592 5689784 1612544 5689712 1612520 5690272 +1612664 5690184 1612744 5689952 1612592 5689784 1612520 5690272 +1612544 5689712 1612232 5689456 1612520 5690272 1612592 5689784 +1612664 5690184 1612592 5689784 1612520 5690272 1613016 5692968 +1612232 5689456 1611688 5689072 1611600 5689064 1612520 5690272 +1611600 5689064 1611536 5689032 1612520 5690272 1612232 5689456 +1611536 5689032 1612376 5690304 1612520 5690272 1611600 5689064 +1612376 5690304 1612408 5693168 1612520 5690272 1611600 5689064 +1611536 5689032 1612408 5693168 1612376 5690304 1611600 5689064 +1612520 5690272 1612376 5690304 1612408 5693168 1612440 5693112 +1612520 5690272 1612376 5690304 1612440 5693112 1612544 5693040 +1612520 5690272 1612376 5690304 1612544 5693040 1612736 5692952 +1612520 5690272 1612376 5690304 1612736 5692952 1612880 5692928 +1612520 5690272 1612376 5690304 1612880 5692928 1613016 5692968 +1612376 5690304 1612544 5693040 1612736 5692952 1612880 5692928 +1612376 5690304 1612440 5693112 1612544 5693040 1612736 5692952 +1612520 5690272 1611600 5689064 1612376 5690304 1612880 5692928 +1612376 5690304 1611536 5689032 1612408 5693168 1612440 5693112 +1612376 5690304 1612408 5693168 1612440 5693112 1612544 5693040 +1612408 5693168 1612376 5690304 1611536 5689032 1611480 5688984 +1612408 5693168 1612440 5693112 1612376 5690304 1611480 5688984 +1612376 5690304 1611600 5689064 1611536 5689032 1611480 5688984 +1612408 5693168 1612376 5690304 1611480 5688984 1611392 5688904 +1612408 5693168 1612440 5693112 1612376 5690304 1611392 5688904 +1611536 5689032 1611520 5689000 1611480 5688984 1612376 5690304 +1612408 5693168 1612376 5690304 1611392 5688904 1602160 5695928 +1612376 5690304 1611536 5689032 1611480 5688984 1611392 5688904 +1612520 5690272 1612232 5689456 1611600 5689064 1612376 5690304 +1612520 5690272 1612544 5689712 1612232 5689456 1612376 5690304 +1612520 5690272 1612592 5689784 1612544 5689712 1612376 5690304 +1612544 5689712 1612232 5689456 1612376 5690304 1612592 5689784 +1612520 5690272 1612592 5689784 1612376 5690304 1612880 5692928 +1611600 5689064 1611536 5689032 1612376 5690304 1612232 5689456 +1612544 5689712 1612512 5689592 1612232 5689456 1612376 5690304 +1612520 5690272 1612664 5690184 1612592 5689784 1612376 5690304 +1612232 5689456 1611688 5689072 1611600 5689064 1612376 5690304 +1612232 5689456 1611600 5689064 1612376 5690304 1612544 5689712 +1612376 5690304 1612208 5690280 1612408 5693168 1612440 5693112 +1612376 5690304 1611392 5688904 1612208 5690280 1612440 5693112 +1612208 5690280 1611392 5688904 1612408 5693168 1612440 5693112 +1611392 5688904 1612208 5690280 1612376 5690304 1611480 5688984 +1612208 5690280 1612440 5693112 1612376 5690304 1611480 5688984 +1611392 5688904 1612408 5693168 1612208 5690280 1611480 5688984 +1612408 5693168 1612208 5690280 1611392 5688904 1602160 5695928 +1612376 5690304 1612208 5690280 1612440 5693112 1612544 5693040 +1612376 5690304 1612208 5690280 1612544 5693040 1612736 5692952 +1612376 5690304 1612208 5690280 1612736 5692952 1612880 5692928 +1612208 5690280 1612408 5693168 1612440 5693112 1612544 5693040 +1612376 5690304 1611480 5688984 1612208 5690280 1612736 5692952 +1612208 5690280 1612440 5693112 1612544 5693040 1612736 5692952 +1612376 5690304 1611536 5689032 1611480 5688984 1612208 5690280 +1612376 5690304 1611536 5689032 1612208 5690280 1612736 5692952 +1612376 5690304 1611600 5689064 1611536 5689032 1612208 5690280 +1612376 5690304 1612232 5689456 1611600 5689064 1612208 5690280 +1612376 5690304 1612232 5689456 1612208 5690280 1612736 5692952 +1611600 5689064 1611536 5689032 1612208 5690280 1612232 5689456 +1611480 5688984 1611392 5688904 1612208 5690280 1611536 5689032 +1611536 5689032 1611520 5689000 1611480 5688984 1612208 5690280 +1611536 5689032 1611480 5688984 1612208 5690280 1611600 5689064 +1612232 5689456 1611688 5689072 1611600 5689064 1612208 5690280 +1612376 5690304 1612544 5689712 1612232 5689456 1612208 5690280 +1612376 5690304 1612592 5689784 1612544 5689712 1612208 5690280 +1612376 5690304 1612520 5690272 1612592 5689784 1612208 5690280 +1612232 5689456 1611600 5689064 1612208 5690280 1612544 5689712 +1612376 5690304 1612592 5689784 1612208 5690280 1612736 5692952 +1612544 5689712 1612512 5689592 1612232 5689456 1612208 5690280 +1612544 5689712 1612232 5689456 1612208 5690280 1612592 5689784 +1612208 5690280 1612048 5690184 1612408 5693168 1612440 5693112 +1612208 5690280 1612048 5690184 1612440 5693112 1612544 5693040 +1612208 5690280 1611392 5688904 1612048 5690184 1612440 5693112 +1611392 5688904 1612048 5690184 1612208 5690280 1611480 5688984 +1612048 5690184 1612440 5693112 1612208 5690280 1611480 5688984 +1612048 5690184 1611392 5688904 1612408 5693168 1612440 5693112 +1611392 5688904 1612408 5693168 1612048 5690184 1611480 5688984 +1612208 5690280 1611536 5689032 1611480 5688984 1612048 5690184 +1612208 5690280 1611536 5689032 1612048 5690184 1612440 5693112 +1611480 5688984 1611392 5688904 1612048 5690184 1611536 5689032 +1611536 5689032 1611520 5689000 1611480 5688984 1612048 5690184 +1612408 5693168 1612048 5690184 1611392 5688904 1602160 5695928 +1612408 5693168 1612440 5693112 1612048 5690184 1602160 5695928 +1612048 5690184 1611480 5688984 1611392 5688904 1602160 5695928 +1611392 5688904 1611360 5688848 1602160 5695928 1612048 5690184 +1612208 5690280 1611600 5689064 1611536 5689032 1612048 5690184 +1612208 5690280 1612232 5689456 1611600 5689064 1612048 5690184 +1612208 5690280 1612544 5689712 1612232 5689456 1612048 5690184 +1612232 5689456 1611600 5689064 1612048 5690184 1612544 5689712 +1612208 5690280 1612544 5689712 1612048 5690184 1612440 5693112 +1612544 5689712 1612512 5689592 1612232 5689456 1612048 5690184 +1611536 5689032 1611480 5688984 1612048 5690184 1611600 5689064 +1611600 5689064 1611536 5689032 1612048 5690184 1612232 5689456 +1612408 5693168 1612048 5690184 1602160 5695928 1612400 5693248 +1612232 5689456 1611688 5689072 1611600 5689064 1612048 5690184 +1612232 5689456 1611920 5689032 1611688 5689072 1612048 5690184 +1612232 5689456 1611688 5689072 1612048 5690184 1612544 5689712 +1611600 5689064 1611536 5689032 1612048 5690184 1611688 5689072 +1612208 5690280 1612592 5689784 1612544 5689712 1612048 5690184 +1612208 5690280 1612376 5690304 1612592 5689784 1612048 5690184 +1612544 5689712 1612232 5689456 1612048 5690184 1612592 5689784 +1612208 5690280 1612592 5689784 1612048 5690184 1612440 5693112 +1611392 5688904 1611896 5690040 1612048 5690184 1611480 5688984 +1612048 5690184 1611536 5689032 1611480 5688984 1611896 5690040 +1611896 5690040 1602160 5695928 1612048 5690184 1611536 5689032 +1611480 5688984 1611392 5688904 1611896 5690040 1611536 5689032 +1612048 5690184 1611600 5689064 1611536 5689032 1611896 5690040 +1611536 5689032 1611480 5688984 1611896 5690040 1611600 5689064 +1612048 5690184 1611600 5689064 1611896 5690040 1602160 5695928 +1611536 5689032 1611520 5689000 1611480 5688984 1611896 5690040 +1612048 5690184 1611896 5690040 1602160 5695928 1612408 5693168 +1612048 5690184 1611896 5690040 1612408 5693168 1612440 5693112 +1612048 5690184 1611600 5689064 1611896 5690040 1612408 5693168 +1611896 5690040 1611392 5688904 1602160 5695928 1612408 5693168 +1602160 5695928 1611896 5690040 1611392 5688904 1611360 5688848 +1611392 5688904 1602160 5695928 1611896 5690040 1611480 5688984 +1612048 5690184 1611688 5689072 1611600 5689064 1611896 5690040 +1612048 5690184 1611688 5689072 1611896 5690040 1612408 5693168 +1611600 5689064 1611536 5689032 1611896 5690040 1611688 5689072 +1602160 5695928 1612400 5693248 1612408 5693168 1611896 5690040 +1612048 5690184 1612232 5689456 1611688 5689072 1611896 5690040 +1612232 5689456 1611920 5689032 1611688 5689072 1611896 5690040 +1612048 5690184 1612544 5689712 1612232 5689456 1611896 5690040 +1612048 5690184 1612592 5689784 1612544 5689712 1611896 5690040 +1612048 5690184 1612544 5689712 1611896 5690040 1612408 5693168 +1612544 5689712 1612512 5689592 1612232 5689456 1611896 5690040 +1611688 5689072 1611600 5689064 1611896 5690040 1612232 5689456 +1612232 5689456 1611688 5689072 1611896 5690040 1612544 5689712 +1611896 5690040 1611840 5689928 1602160 5695928 1612408 5693168 +1611896 5690040 1611840 5689928 1612408 5693168 1612048 5690184 +1602160 5695928 1611840 5689928 1611392 5688904 1611360 5688848 +1602160 5695928 1611840 5689928 1611360 5688848 1602112 5695896 +1611896 5690040 1611392 5688904 1611840 5689928 1612408 5693168 +1611392 5688904 1611840 5689928 1611896 5690040 1611480 5688984 +1611896 5690040 1611536 5689032 1611480 5688984 1611840 5689928 +1611896 5690040 1611600 5689064 1611536 5689032 1611840 5689928 +1611536 5689032 1611480 5688984 1611840 5689928 1611600 5689064 +1611896 5690040 1611688 5689072 1611600 5689064 1611840 5689928 +1611600 5689064 1611536 5689032 1611840 5689928 1611688 5689072 +1611536 5689032 1611520 5689000 1611480 5688984 1611840 5689928 +1611840 5689928 1612408 5693168 1611896 5690040 1611688 5689072 +1611480 5688984 1611392 5688904 1611840 5689928 1611536 5689032 +1611840 5689928 1611360 5688848 1602160 5695928 1612408 5693168 +1611840 5689928 1611480 5688984 1611392 5688904 1611360 5688848 +1611896 5690040 1612232 5689456 1611688 5689072 1611840 5689928 +1612232 5689456 1611920 5689032 1611688 5689072 1611840 5689928 +1611688 5689072 1611600 5689064 1611840 5689928 1612232 5689456 +1611896 5690040 1612232 5689456 1611840 5689928 1612408 5693168 +1602160 5695928 1612400 5693248 1612408 5693168 1611840 5689928 +1611896 5690040 1612544 5689712 1612232 5689456 1611840 5689928 +1611688 5689072 1611840 5689808 1612232 5689456 1611920 5689032 +1611840 5689928 1611840 5689808 1611688 5689072 1611600 5689064 +1611840 5689928 1611840 5689808 1611600 5689064 1611536 5689032 +1611840 5689928 1611840 5689808 1611536 5689032 1611480 5688984 +1611840 5689808 1611600 5689064 1611536 5689032 1611480 5688984 +1611840 5689808 1611688 5689072 1611600 5689064 1611536 5689032 +1611536 5689032 1611520 5689000 1611480 5688984 1611840 5689808 +1611840 5689928 1611840 5689808 1611480 5688984 1611392 5688904 +1611840 5689808 1611536 5689032 1611480 5688984 1611392 5688904 +1611840 5689928 1612232 5689456 1611840 5689808 1611392 5688904 +1611840 5689928 1611840 5689808 1611392 5688904 1611360 5688848 +1611840 5689808 1612232 5689456 1611688 5689072 1611600 5689064 +1612232 5689456 1611840 5689808 1611840 5689928 1611896 5690040 +1611840 5689808 1611392 5688904 1611840 5689928 1611896 5690040 +1612232 5689456 1611688 5689072 1611840 5689808 1611896 5690040 +1612232 5689456 1611840 5689808 1611896 5690040 1612544 5689712 +1611896 5690040 1612048 5690184 1612544 5689712 1611840 5689808 +1612232 5689456 1611840 5689808 1612544 5689712 1612512 5689592 +1612232 5689456 1611688 5689072 1611840 5689808 1612544 5689712 +1611840 5689808 1611840 5689928 1611896 5690040 1612544 5689712 +1611688 5689072 1611920 5689672 1612232 5689456 1611920 5689032 +1611840 5689808 1611920 5689672 1611688 5689072 1611600 5689064 +1611840 5689808 1611920 5689672 1611600 5689064 1611536 5689032 +1611840 5689808 1612232 5689456 1611920 5689672 1611600 5689064 +1612232 5689456 1611920 5689672 1611840 5689808 1612544 5689712 +1612232 5689456 1611920 5689672 1612544 5689712 1612512 5689592 +1611920 5689672 1611600 5689064 1611840 5689808 1612544 5689712 +1611688 5689072 1611600 5689064 1611920 5689672 1611920 5689032 +1611920 5689672 1612544 5689712 1612232 5689456 1611920 5689032 +1611840 5689808 1611896 5690040 1612544 5689712 1611920 5689672 +1611896 5690040 1612048 5690184 1612544 5689712 1611920 5689672 +1612048 5690184 1612592 5689784 1612544 5689712 1611920 5689672 +1611840 5689808 1611896 5690040 1611920 5689672 1611600 5689064 +1612544 5689712 1612232 5689456 1611920 5689672 1612048 5690184 +1611840 5689808 1611840 5689928 1611896 5690040 1611920 5689672 +1611840 5689808 1611840 5689928 1611920 5689672 1611600 5689064 +1611896 5690040 1612048 5690184 1611920 5689672 1611840 5689928 +1612232 5689456 1612088 5689040 1611920 5689032 1611920 5689672 +1611920 5689672 1612016 5689576 1611920 5689032 1611688 5689072 +1611920 5689672 1612016 5689576 1611688 5689072 1611600 5689064 +1611920 5689672 1612232 5689456 1612016 5689576 1611688 5689072 +1612232 5689456 1612016 5689576 1611920 5689672 1612544 5689712 +1612232 5689456 1612016 5689576 1612544 5689712 1612512 5689592 +1611920 5689672 1612048 5690184 1612544 5689712 1612016 5689576 +1612048 5690184 1612592 5689784 1612544 5689712 1612016 5689576 +1611920 5689672 1611896 5690040 1612048 5690184 1612016 5689576 +1612016 5689576 1611688 5689072 1611920 5689672 1612048 5690184 +1612544 5689712 1612232 5689456 1612016 5689576 1612048 5690184 +1612016 5689576 1612232 5689456 1611920 5689032 1611688 5689072 +1612232 5689456 1611920 5689032 1612016 5689576 1612544 5689712 +1611920 5689032 1612016 5689576 1612232 5689456 1612088 5689040 +1612232 5689456 1612192 5689088 1612088 5689040 1612016 5689576 +1611920 5689032 1611688 5689072 1612016 5689576 1612088 5689040 +1612016 5689576 1612544 5689712 1612232 5689456 1612088 5689040 +1611360 5688848 1611264 5689408 1611840 5689928 1611392 5688904 +1602160 5695928 1611264 5689408 1611360 5688848 1602112 5695896 +1611360 5688848 1602016 5695848 1602112 5695896 1611264 5689408 +1611360 5688848 1611224 5687456 1602016 5695848 1611264 5689408 +1611360 5688848 1611360 5688736 1611224 5687456 1611264 5689408 +1611360 5688736 1611408 5688288 1611224 5687456 1611264 5689408 +1611224 5687456 1602016 5695848 1611264 5689408 1611360 5688736 +1602112 5695896 1602160 5695928 1611264 5689408 1602016 5695848 +1602016 5695848 1602112 5695896 1611264 5689408 1611224 5687456 +1611224 5687456 1601088 5681704 1602016 5695848 1611264 5689408 +1611224 5687456 1601088 5681704 1611264 5689408 1611360 5688736 +1602016 5695848 1602112 5695896 1611264 5689408 1601088 5681704 +1611224 5687456 1601128 5681664 1601088 5681704 1611264 5689408 +1611840 5689928 1611264 5689408 1602160 5695928 1612408 5693168 +1611840 5689928 1611264 5689408 1612408 5693168 1611896 5690040 +1612408 5693168 1612048 5690184 1611896 5690040 1611264 5689408 +1611264 5689408 1602160 5695928 1612408 5693168 1611896 5690040 +1611840 5689928 1611840 5689808 1611392 5688904 1611264 5689408 +1611392 5688904 1611360 5688848 1611264 5689408 1611840 5689808 +1611840 5689808 1611480 5688984 1611392 5688904 1611264 5689408 +1611840 5689808 1611536 5689032 1611480 5688984 1611264 5689408 +1611840 5689808 1611600 5689064 1611536 5689032 1611264 5689408 +1611536 5689032 1611480 5688984 1611264 5689408 1611600 5689064 +1611840 5689808 1611920 5689672 1611600 5689064 1611264 5689408 +1611600 5689064 1611536 5689032 1611264 5689408 1611920 5689672 +1611536 5689032 1611520 5689000 1611480 5688984 1611264 5689408 +1611392 5688904 1611360 5688848 1611264 5689408 1611480 5688984 +1611480 5688984 1611392 5688904 1611264 5689408 1611536 5689032 +1611840 5689808 1611920 5689672 1611264 5689408 1611840 5689928 +1611920 5689672 1611688 5689072 1611600 5689064 1611264 5689408 +1611600 5689064 1611536 5689032 1611264 5689408 1611688 5689072 +1611920 5689672 1611688 5689072 1611264 5689408 1611840 5689808 +1611920 5689672 1612016 5689576 1611688 5689072 1611264 5689408 +1611264 5689408 1611896 5690040 1611840 5689928 1611840 5689808 +1602160 5695928 1612408 5693168 1611264 5689408 1602112 5695896 +1602160 5695928 1612400 5693248 1612408 5693168 1611264 5689408 +1612408 5693168 1611896 5690040 1611264 5689408 1612400 5693248 +1602160 5695928 1612400 5693248 1611264 5689408 1602112 5695896 +1602160 5695928 1612136 5695120 1612400 5693248 1611264 5689408 +1611360 5688848 1611360 5688736 1611264 5689408 1611392 5688904 +1601088 5681704 1600992 5681736 1602016 5695848 1611264 5689408 +1611920 5689672 1611336 5689352 1611264 5689408 1611840 5689808 +1611264 5689408 1611840 5689928 1611840 5689808 1611336 5689352 +1611264 5689408 1611336 5689352 1611688 5689072 1611600 5689064 +1611264 5689408 1611336 5689352 1611600 5689064 1611536 5689032 +1611264 5689408 1611336 5689352 1611536 5689032 1611480 5688984 +1611336 5689352 1611600 5689064 1611536 5689032 1611480 5688984 +1611536 5689032 1611520 5689000 1611480 5688984 1611336 5689352 +1611264 5689408 1611336 5689352 1611480 5688984 1611392 5688904 +1611336 5689352 1611536 5689032 1611480 5688984 1611392 5688904 +1611264 5689408 1611336 5689352 1611392 5688904 1611360 5688848 +1611336 5689352 1611688 5689072 1611600 5689064 1611536 5689032 +1611688 5689072 1611336 5689352 1611920 5689672 1612016 5689576 +1611336 5689352 1611392 5688904 1611264 5689408 1611840 5689808 +1611336 5689352 1611920 5689672 1611688 5689072 1611600 5689064 +1611920 5689672 1611688 5689072 1611336 5689352 1611840 5689808 +1611688 5689072 1611368 5689344 1611920 5689672 1612016 5689576 +1611336 5689352 1611368 5689344 1611688 5689072 1611600 5689064 +1611336 5689352 1611920 5689672 1611368 5689344 1611600 5689064 +1611336 5689352 1611368 5689344 1611600 5689064 1611536 5689032 +1611336 5689352 1611368 5689344 1611536 5689032 1611480 5688984 +1611336 5689352 1611368 5689344 1611480 5688984 1611392 5688904 +1611336 5689352 1611920 5689672 1611368 5689344 1611480 5688984 +1611536 5689032 1611520 5689000 1611480 5688984 1611368 5689344 +1611368 5689344 1611600 5689064 1611536 5689032 1611480 5688984 +1611368 5689344 1611688 5689072 1611600 5689064 1611536 5689032 +1611920 5689672 1611368 5689344 1611336 5689352 1611840 5689808 +1611368 5689344 1611480 5688984 1611336 5689352 1611840 5689808 +1611336 5689352 1611264 5689408 1611840 5689808 1611368 5689344 +1611336 5689352 1611264 5689408 1611368 5689344 1611480 5688984 +1611264 5689408 1611840 5689928 1611840 5689808 1611368 5689344 +1611920 5689672 1611688 5689072 1611368 5689344 1611840 5689808 +1611840 5689808 1611920 5689672 1611368 5689344 1611264 5689408 +1611368 5689344 1611920 5689672 1611688 5689072 1611600 5689064 +1611688 5689072 1611456 5689352 1611920 5689672 1612016 5689576 +1611688 5689072 1611456 5689352 1612016 5689576 1611920 5689032 +1611456 5689352 1611368 5689344 1611920 5689672 1612016 5689576 +1611920 5689672 1611456 5689352 1611368 5689344 1611840 5689808 +1611920 5689672 1612016 5689576 1611456 5689352 1611840 5689808 +1611688 5689072 1611368 5689344 1611456 5689352 1612016 5689576 +1611368 5689344 1611264 5689408 1611840 5689808 1611456 5689352 +1611368 5689344 1611336 5689352 1611264 5689408 1611456 5689352 +1611264 5689408 1611840 5689928 1611840 5689808 1611456 5689352 +1611840 5689808 1611920 5689672 1611456 5689352 1611264 5689408 +1611368 5689344 1611456 5689352 1611688 5689072 1611600 5689064 +1611368 5689344 1611456 5689352 1611600 5689064 1611536 5689032 +1611368 5689344 1611456 5689352 1611536 5689032 1611480 5688984 +1611456 5689352 1612016 5689576 1611688 5689072 1611600 5689064 +1611456 5689352 1611688 5689072 1611600 5689064 1611536 5689032 +1611456 5689352 1611536 5689032 1611368 5689344 1611264 5689408 +1612016 5689576 1611920 5689032 1611688 5689072 1611496 5689368 +1611456 5689352 1611840 5689808 1611920 5689672 1611496 5689368 +1611456 5689352 1611840 5689808 1611496 5689368 1611688 5689072 +1611456 5689352 1611264 5689408 1611840 5689808 1611496 5689368 +1611264 5689408 1611840 5689928 1611840 5689808 1611496 5689368 +1611456 5689352 1611264 5689408 1611496 5689368 1611688 5689072 +1611840 5689808 1611920 5689672 1611496 5689368 1611264 5689408 +1611456 5689352 1611496 5689368 1611688 5689072 1611600 5689064 +1611456 5689352 1611264 5689408 1611496 5689368 1611600 5689064 +1611496 5689368 1612016 5689576 1611688 5689072 1611600 5689064 +1611920 5689672 1612016 5689576 1611496 5689368 1611840 5689808 +1611456 5689352 1611368 5689344 1611264 5689408 1611496 5689368 +1611456 5689352 1611496 5689368 1611600 5689064 1611536 5689032 +1611688 5689072 1611592 5689384 1612016 5689576 1611920 5689032 +1611688 5689072 1611496 5689368 1611592 5689384 1611920 5689032 +1612016 5689576 1612088 5689040 1611920 5689032 1611592 5689384 +1611496 5689368 1611592 5689384 1611688 5689072 1611600 5689064 +1611496 5689368 1612016 5689576 1611592 5689384 1611600 5689064 +1611592 5689384 1611920 5689032 1611688 5689072 1611600 5689064 +1612016 5689576 1611592 5689384 1611496 5689368 1611920 5689672 +1611592 5689384 1611600 5689064 1611496 5689368 1611920 5689672 +1611592 5689384 1611920 5689672 1612016 5689576 1611920 5689032 +1611496 5689368 1611592 5689384 1611600 5689064 1611456 5689352 +1611496 5689368 1611840 5689808 1611920 5689672 1611592 5689384 +1611496 5689368 1611840 5689808 1611592 5689384 1611600 5689064 +1611496 5689368 1611264 5689408 1611840 5689808 1611592 5689384 +1611920 5689672 1612016 5689576 1611592 5689384 1611840 5689808 +1611592 5689384 1611672 5689408 1611920 5689032 1611688 5689072 +1611592 5689384 1611672 5689408 1611688 5689072 1611600 5689064 +1611592 5689384 1612016 5689576 1611672 5689408 1611688 5689072 +1611920 5689032 1611672 5689408 1612016 5689576 1612088 5689040 +1612016 5689576 1611672 5689408 1611592 5689384 1611920 5689672 +1611672 5689408 1611688 5689072 1611592 5689384 1611920 5689672 +1611592 5689384 1611840 5689808 1611920 5689672 1611672 5689408 +1611592 5689384 1611840 5689808 1611672 5689408 1611688 5689072 +1611920 5689672 1612016 5689576 1611672 5689408 1611840 5689808 +1611672 5689408 1612016 5689576 1611920 5689032 1611688 5689072 +1612016 5689576 1611920 5689032 1611672 5689408 1611920 5689672 +1611592 5689384 1611496 5689368 1611840 5689808 1611672 5689408 +1611920 5689672 1611720 5689448 1611672 5689408 1611840 5689808 +1611672 5689408 1611592 5689384 1611840 5689808 1611720 5689448 +1611920 5689672 1612016 5689576 1611720 5689448 1611840 5689808 +1611840 5689808 1611920 5689672 1611720 5689448 1611592 5689384 +1611720 5689448 1612016 5689576 1611672 5689408 1611592 5689384 +1611672 5689408 1611720 5689448 1612016 5689576 1611920 5689032 +1612016 5689576 1612088 5689040 1611920 5689032 1611720 5689448 +1611672 5689408 1611720 5689448 1611920 5689032 1611688 5689072 +1611672 5689408 1611592 5689384 1611720 5689448 1611920 5689032 +1611720 5689448 1611920 5689672 1612016 5689576 1611920 5689032 +1611592 5689384 1611496 5689368 1611840 5689808 1611720 5689448 +1611592 5689384 1611712 5689544 1611720 5689448 1611672 5689408 +1611592 5689384 1611840 5689808 1611712 5689544 1611672 5689408 +1611720 5689448 1611712 5689544 1611840 5689808 1611920 5689672 +1611720 5689448 1611712 5689544 1611920 5689672 1612016 5689576 +1611712 5689544 1611592 5689384 1611840 5689808 1611920 5689672 +1611712 5689544 1611840 5689808 1611920 5689672 1612016 5689576 +1611720 5689448 1611712 5689544 1612016 5689576 1611920 5689032 +1611712 5689544 1612016 5689576 1611720 5689448 1611672 5689408 +1611840 5689808 1611712 5689544 1611592 5689384 1611496 5689368 +1611840 5689808 1611712 5689544 1611496 5689368 1611264 5689408 +1611840 5689808 1611712 5689544 1611264 5689408 1611840 5689928 +1611264 5689408 1611896 5690040 1611840 5689928 1611712 5689544 +1611712 5689544 1611496 5689368 1611264 5689408 1611840 5689928 +1611840 5689808 1611920 5689672 1611712 5689544 1611840 5689928 +1611712 5689544 1611672 5689408 1611592 5689384 1611496 5689368 +1611496 5689368 1611456 5689352 1611264 5689408 1611712 5689544 +1611712 5689544 1611592 5689384 1611496 5689368 1611264 5689408 +1611712 5689544 1611664 5689584 1611840 5689928 1611840 5689808 +1611840 5689928 1611664 5689584 1611264 5689408 1611896 5690040 +1611264 5689408 1611664 5689584 1611712 5689544 1611496 5689368 +1611264 5689408 1611840 5689928 1611664 5689584 1611496 5689368 +1611712 5689544 1611664 5689584 1611840 5689808 1611920 5689672 +1611664 5689584 1611840 5689928 1611840 5689808 1611920 5689672 +1611712 5689544 1611496 5689368 1611664 5689584 1611920 5689672 +1611664 5689584 1611264 5689408 1611840 5689928 1611840 5689808 +1611712 5689544 1611664 5689584 1611920 5689672 1612016 5689576 +1611264 5689408 1611664 5689584 1611496 5689368 1611456 5689352 +1611712 5689544 1611592 5689384 1611496 5689368 1611664 5689584 +1611496 5689368 1611264 5689408 1611664 5689584 1611592 5689384 +1611712 5689544 1611592 5689384 1611664 5689584 1611920 5689672 +1611712 5689544 1611672 5689408 1611592 5689384 1611664 5689584 +1611712 5689544 1611720 5689448 1611672 5689408 1611664 5689584 +1611712 5689544 1611672 5689408 1611664 5689584 1611920 5689672 +1611592 5689384 1611496 5689368 1611664 5689584 1611672 5689408 +1611264 5689408 1611640 5689608 1611664 5689584 1611496 5689368 +1611840 5689928 1611640 5689608 1611264 5689408 1611896 5690040 +1611664 5689584 1611592 5689384 1611496 5689368 1611640 5689608 +1611496 5689368 1611264 5689408 1611640 5689608 1611592 5689384 +1611664 5689584 1611640 5689608 1611840 5689928 1611840 5689808 +1611640 5689608 1611264 5689408 1611840 5689928 1611840 5689808 +1611664 5689584 1611640 5689608 1611840 5689808 1611920 5689672 +1611640 5689608 1611840 5689808 1611664 5689584 1611592 5689384 +1611264 5689408 1611840 5689928 1611640 5689608 1611496 5689368 +1611264 5689408 1611640 5689608 1611496 5689368 1611456 5689352 +1611664 5689584 1611672 5689408 1611592 5689384 1611640 5689608 +1611640 5689608 1611608 5689632 1611840 5689928 1611840 5689808 +1611640 5689608 1611264 5689408 1611608 5689632 1611840 5689808 +1611840 5689928 1611608 5689632 1611264 5689408 1611896 5690040 +1611640 5689608 1611608 5689632 1611840 5689808 1611664 5689584 +1611264 5689408 1611608 5689632 1611640 5689608 1611496 5689368 +1611640 5689608 1611592 5689384 1611496 5689368 1611608 5689632 +1611608 5689632 1611840 5689808 1611640 5689608 1611592 5689384 +1611264 5689408 1611840 5689928 1611608 5689632 1611496 5689368 +1611640 5689608 1611664 5689584 1611592 5689384 1611608 5689632 +1611496 5689368 1611264 5689408 1611608 5689632 1611592 5689384 +1611608 5689632 1611264 5689408 1611840 5689928 1611840 5689808 +1611264 5689408 1611608 5689632 1611496 5689368 1611456 5689352 +1611896 5690040 1611512 5689656 1612408 5693168 1612048 5690184 +1611264 5689408 1612400 5693248 1612408 5693168 1611512 5689656 +1611840 5689928 1611608 5689632 1611264 5689408 1611512 5689656 +1611608 5689632 1611496 5689368 1611264 5689408 1611512 5689656 +1611264 5689408 1612408 5693168 1611512 5689656 1611496 5689368 +1611608 5689632 1611496 5689368 1611512 5689656 1611840 5689928 +1611608 5689632 1611592 5689384 1611496 5689368 1611512 5689656 +1611608 5689632 1611640 5689608 1611592 5689384 1611512 5689656 +1611496 5689368 1611264 5689408 1611512 5689656 1611592 5689384 +1611608 5689632 1611592 5689384 1611512 5689656 1611840 5689928 +1611840 5689928 1611840 5689808 1611608 5689632 1611512 5689656 +1611840 5689808 1611640 5689608 1611608 5689632 1611512 5689656 +1611608 5689632 1611592 5689384 1611512 5689656 1611840 5689808 +1611840 5689928 1611840 5689808 1611512 5689656 1611896 5690040 +1611496 5689368 1611456 5689352 1611264 5689408 1611512 5689656 +1611496 5689368 1611456 5689352 1611512 5689656 1611592 5689384 +1611264 5689408 1612408 5693168 1611512 5689656 1611456 5689352 +1611456 5689352 1611368 5689344 1611264 5689408 1611512 5689656 +1612408 5693168 1611472 5689648 1611264 5689408 1612400 5693248 +1611512 5689656 1611472 5689648 1612408 5693168 1611896 5690040 +1611512 5689656 1611472 5689648 1611896 5690040 1611840 5689928 +1612408 5693168 1612048 5690184 1611896 5690040 1611472 5689648 +1611472 5689648 1612408 5693168 1611896 5690040 1611840 5689928 +1611264 5689408 1611472 5689648 1611512 5689656 1611456 5689352 +1611512 5689656 1611472 5689648 1611840 5689928 1611840 5689808 +1611512 5689656 1611456 5689352 1611472 5689648 1611840 5689928 +1611472 5689648 1611264 5689408 1612408 5693168 1611896 5690040 +1611264 5689408 1612408 5693168 1611472 5689648 1611456 5689352 +1611512 5689656 1611496 5689368 1611456 5689352 1611472 5689648 +1611512 5689656 1611592 5689384 1611496 5689368 1611472 5689648 +1611456 5689352 1611264 5689408 1611472 5689648 1611496 5689368 +1611512 5689656 1611496 5689368 1611472 5689648 1611840 5689928 +1611264 5689408 1611472 5689648 1611456 5689352 1611368 5689344 +1611264 5689408 1611472 5689648 1611368 5689344 1611336 5689352 +1611472 5689648 1611496 5689368 1611456 5689352 1611368 5689344 +1611264 5689408 1612408 5693168 1611472 5689648 1611368 5689344 +1612408 5693168 1611376 5689632 1611264 5689408 1612400 5693248 +1611264 5689408 1602160 5695928 1612400 5693248 1611376 5689632 +1612400 5693248 1612408 5693168 1611376 5689632 1602160 5695928 +1611264 5689408 1602112 5695896 1602160 5695928 1611376 5689632 +1602160 5695928 1612136 5695120 1612400 5693248 1611376 5689632 +1611472 5689648 1611376 5689632 1612408 5693168 1611896 5690040 +1612408 5693168 1612048 5690184 1611896 5690040 1611376 5689632 +1611472 5689648 1611376 5689632 1611896 5690040 1611840 5689928 +1611472 5689648 1611376 5689632 1611840 5689928 1611512 5689656 +1611376 5689632 1612408 5693168 1611896 5690040 1611840 5689928 +1611472 5689648 1611264 5689408 1611376 5689632 1611840 5689928 +1611264 5689408 1611376 5689632 1611472 5689648 1611368 5689344 +1611264 5689408 1611376 5689632 1611368 5689344 1611336 5689352 +1611376 5689632 1611840 5689928 1611472 5689648 1611368 5689344 +1611376 5689632 1611472 5689648 1611368 5689344 1611336 5689352 +1612408 5693168 1611896 5690040 1611376 5689632 1612400 5693248 +1611472 5689648 1611456 5689352 1611368 5689344 1611376 5689632 +1611472 5689648 1611496 5689368 1611456 5689352 1611376 5689632 +1611472 5689648 1611496 5689368 1611376 5689632 1611840 5689928 +1611368 5689344 1611336 5689352 1611376 5689632 1611456 5689352 +1611472 5689648 1611512 5689656 1611496 5689368 1611376 5689632 +1611456 5689352 1611368 5689344 1611376 5689632 1611496 5689368 +1611376 5689632 1611336 5689352 1611264 5689408 1602160 5695928 +1602160 5695928 1611360 5689624 1611264 5689408 1602112 5695896 +1611376 5689632 1611360 5689624 1602160 5695928 1612400 5693248 +1611376 5689632 1611360 5689624 1612400 5693248 1612408 5693168 +1602160 5695928 1612136 5695120 1612400 5693248 1611360 5689624 +1611360 5689624 1602160 5695928 1612400 5693248 1612408 5693168 +1611376 5689632 1611360 5689624 1612408 5693168 1611896 5690040 +1612408 5693168 1612048 5690184 1611896 5690040 1611360 5689624 +1611360 5689624 1612400 5693248 1612408 5693168 1611896 5690040 +1611376 5689632 1611360 5689624 1611896 5690040 1611840 5689928 +1611376 5689632 1611264 5689408 1611360 5689624 1611896 5690040 +1611264 5689408 1611360 5689624 1611376 5689632 1611336 5689352 +1611264 5689408 1602160 5695928 1611360 5689624 1611336 5689352 +1611376 5689632 1611368 5689344 1611336 5689352 1611360 5689624 +1611376 5689632 1611456 5689352 1611368 5689344 1611360 5689624 +1611368 5689344 1611336 5689352 1611360 5689624 1611456 5689352 +1611360 5689624 1611896 5690040 1611376 5689632 1611456 5689352 +1611376 5689632 1611496 5689368 1611456 5689352 1611360 5689624 +1611376 5689632 1611472 5689648 1611496 5689368 1611360 5689624 +1611456 5689352 1611368 5689344 1611360 5689624 1611496 5689368 +1611376 5689632 1611496 5689368 1611360 5689624 1611896 5690040 +1611336 5689352 1611264 5689408 1611360 5689624 1611368 5689344 +1611360 5689624 1611264 5689408 1602160 5695928 1612400 5693248 +1611264 5689408 1611328 5689576 1611360 5689624 1611336 5689352 +1611264 5689408 1602160 5695928 1611328 5689576 1611336 5689352 +1602160 5695928 1611328 5689576 1611264 5689408 1602112 5695896 +1611360 5689624 1611368 5689344 1611336 5689352 1611328 5689576 +1611336 5689352 1611264 5689408 1611328 5689576 1611368 5689344 +1611360 5689624 1611456 5689352 1611368 5689344 1611328 5689576 +1611360 5689624 1611496 5689368 1611456 5689352 1611328 5689576 +1611456 5689352 1611368 5689344 1611328 5689576 1611496 5689368 +1611360 5689624 1611376 5689632 1611496 5689368 1611328 5689576 +1611376 5689632 1611472 5689648 1611496 5689368 1611328 5689576 +1611496 5689368 1611456 5689352 1611328 5689576 1611472 5689648 +1611472 5689648 1611512 5689656 1611496 5689368 1611328 5689576 +1611376 5689632 1611472 5689648 1611328 5689576 1611360 5689624 +1611368 5689344 1611336 5689352 1611328 5689576 1611456 5689352 +1611360 5689624 1611328 5689576 1602160 5695928 1612400 5693248 +1611328 5689576 1602160 5695928 1611360 5689624 1611376 5689632 +1611328 5689576 1611264 5689480 1602160 5695928 1611360 5689624 +1611264 5689408 1611264 5689480 1611328 5689576 1611336 5689352 +1611264 5689408 1602160 5695928 1611264 5689480 1611336 5689352 +1611328 5689576 1611368 5689344 1611336 5689352 1611264 5689480 +1611264 5689480 1602160 5695928 1611328 5689576 1611368 5689344 +1611336 5689352 1611264 5689408 1611264 5689480 1611368 5689344 +1602160 5695928 1611264 5689480 1611264 5689408 1602112 5695896 +1611264 5689480 1611336 5689352 1611264 5689408 1602112 5695896 +1602160 5695928 1611328 5689576 1611264 5689480 1602112 5695896 +1611264 5689408 1602016 5695848 1602112 5695896 1611264 5689480 +1611264 5689408 1602016 5695848 1611264 5689480 1611336 5689352 +1611264 5689408 1601088 5681704 1602016 5695848 1611264 5689480 +1602112 5695896 1602160 5695928 1611264 5689480 1602016 5695848 +1611328 5689576 1611456 5689352 1611368 5689344 1611264 5689480 +1623192 5701576 1614768 5689000 1613504 5689056 1623016 5701528 +1623192 5701576 1613640 5687040 1614768 5689000 1623016 5701528 +1613640 5687040 1614768 5689000 1623192 5701576 1623296 5701624 +1614768 5689000 1623016 5701528 1623192 5701576 1623296 5701624 +1613640 5687040 1613504 5689056 1614768 5689000 1623296 5701624 +1613504 5689056 1614768 5689000 1613640 5687040 1613424 5687768 +1613640 5687040 1613408 5687664 1613424 5687768 1614768 5689000 +1614768 5689000 1623296 5701624 1613640 5687040 1613424 5687768 +1613640 5687040 1614768 5689000 1623296 5701624 1613632 5687000 +1613640 5687040 1614768 5689000 1613632 5687000 1613616 5687016 +1613640 5687040 1613424 5687768 1614768 5689000 1613632 5687000 +1614768 5689000 1623192 5701576 1623296 5701624 1613632 5687000 +1623296 5701624 1623408 5701720 1613632 5687000 1614768 5689000 +1623296 5701624 1623408 5701720 1614768 5689000 1623192 5701576 +1613632 5687000 1613640 5687040 1614768 5689000 1623408 5701720 +1623408 5701720 1663880 5646248 1613632 5687000 1614768 5689000 +1623408 5701720 1663880 5646248 1614768 5689000 1623296 5701624 +1623408 5701720 1623576 5701960 1663880 5646248 1614768 5689000 +1663880 5646248 1663776 5646144 1613632 5687000 1614768 5689000 +1613632 5687000 1613640 5687040 1614768 5689000 1663880 5646248 +1614768 5689000 1613424 5687768 1613504 5689056 1623016 5701528 +1613504 5689056 1615512 5696024 1623016 5701528 1614768 5689000 +1623016 5701528 1623192 5701576 1614768 5689000 1615512 5696024 +1613504 5689056 1615512 5696024 1614768 5689000 1613424 5687768 +1613504 5689056 1615376 5695816 1615512 5696024 1614768 5689000 +1613504 5689056 1615376 5695816 1614768 5689000 1613424 5687768 +1613504 5689056 1615200 5695576 1615376 5695816 1614768 5689000 +1613504 5689056 1613480 5689256 1615200 5695576 1614768 5689000 +1613480 5689256 1614216 5694264 1615200 5695576 1614768 5689000 +1613480 5689256 1614216 5694264 1614768 5689000 1613504 5689056 +1613504 5689056 1613480 5689256 1614768 5689000 1613424 5687768 +1615376 5695816 1615512 5696024 1614768 5689000 1615200 5695576 +1615200 5695576 1615376 5695816 1614768 5689000 1614216 5694264 +1615512 5696024 1623016 5701528 1614768 5689000 1615376 5695816 +1615512 5696024 1615632 5696264 1623016 5701528 1614768 5689000 +1614216 5694264 1615056 5695464 1615200 5695576 1614768 5689000 +1613480 5689256 1613448 5689368 1614216 5694264 1614768 5689000 +1614216 5694264 1615200 5695576 1614768 5689000 1613448 5689368 +1613448 5689368 1614120 5694152 1614216 5694264 1614768 5689000 +1613448 5689368 1613488 5693384 1614120 5694152 1614768 5689000 +1614216 5694264 1615200 5695576 1614768 5689000 1614120 5694152 +1614120 5694152 1614216 5694264 1614768 5689000 1613488 5693384 +1613480 5689256 1613448 5689368 1614768 5689000 1613504 5689056 +1613448 5689368 1613344 5689512 1613488 5693384 1614768 5689000 +1613448 5689368 1613376 5689456 1613344 5689512 1614768 5689000 +1613344 5689512 1613384 5693288 1613488 5693384 1614768 5689000 +1613488 5693384 1614120 5694152 1614768 5689000 1613384 5693288 +1613344 5689512 1613112 5693056 1613384 5693288 1614768 5689000 +1613344 5689512 1613384 5693288 1614768 5689000 1613448 5689368 +1613488 5693384 1613584 5693568 1614120 5694152 1614768 5689000 +1613448 5689368 1613344 5689512 1614768 5689000 1613480 5689256 +1613504 5689056 1614768 5689000 1613424 5687768 1613448 5688912 +1613424 5687768 1613392 5688832 1613448 5688912 1614768 5689000 +1614768 5689000 1613640 5687040 1613424 5687768 1613392 5688832 +1613504 5689056 1613480 5689256 1614768 5689000 1613448 5688912 +1613424 5687768 1613336 5688792 1613392 5688832 1614768 5689000 +1613448 5688912 1613504 5689056 1614768 5689000 1613392 5688832 +1623408 5701720 1614848 5688968 1614768 5689000 1623296 5701624 +1663880 5646248 1614848 5688968 1623408 5701720 1623576 5701960 +1614768 5689000 1623192 5701576 1623296 5701624 1614848 5688968 +1614768 5689000 1623016 5701528 1623192 5701576 1614848 5688968 +1623296 5701624 1623408 5701720 1614848 5688968 1623192 5701576 +1614768 5689000 1615512 5696024 1623016 5701528 1614848 5688968 +1623016 5701528 1623192 5701576 1614848 5688968 1615512 5696024 +1623192 5701576 1623296 5701624 1614848 5688968 1623016 5701528 +1614768 5689000 1614848 5688968 1663880 5646248 1613632 5687000 +1663880 5646248 1663776 5646144 1613632 5687000 1614848 5688968 +1614768 5689000 1614848 5688968 1613632 5687000 1613640 5687040 +1613632 5687000 1613616 5687016 1613640 5687040 1614848 5688968 +1614768 5689000 1614848 5688968 1613640 5687040 1613424 5687768 +1613640 5687040 1613408 5687664 1613424 5687768 1614848 5688968 +1614768 5689000 1614848 5688968 1613424 5687768 1613392 5688832 +1614848 5688968 1613632 5687000 1613640 5687040 1613424 5687768 +1614848 5688968 1663880 5646248 1613632 5687000 1613640 5687040 +1614848 5688968 1613424 5687768 1614768 5689000 1615512 5696024 +1614768 5689000 1615376 5695816 1615512 5696024 1614848 5688968 +1615512 5696024 1623016 5701528 1614848 5688968 1615376 5695816 +1614768 5689000 1615376 5695816 1614848 5688968 1613424 5687768 +1614768 5689000 1615200 5695576 1615376 5695816 1614848 5688968 +1614768 5689000 1615200 5695576 1614848 5688968 1613424 5687768 +1614768 5689000 1614216 5694264 1615200 5695576 1614848 5688968 +1614768 5689000 1614120 5694152 1614216 5694264 1614848 5688968 +1614768 5689000 1613488 5693384 1614120 5694152 1614848 5688968 +1614768 5689000 1613384 5693288 1613488 5693384 1614848 5688968 +1614120 5694152 1614216 5694264 1614848 5688968 1613488 5693384 +1614768 5689000 1613488 5693384 1614848 5688968 1613424 5687768 +1615200 5695576 1615376 5695816 1614848 5688968 1614216 5694264 +1614216 5694264 1615200 5695576 1614848 5688968 1614120 5694152 +1615376 5695816 1615512 5696024 1614848 5688968 1615200 5695576 +1613488 5693384 1613584 5693568 1614120 5694152 1614848 5688968 +1615512 5696024 1615632 5696264 1623016 5701528 1614848 5688968 +1614216 5694264 1615056 5695464 1615200 5695576 1614848 5688968 +1614848 5688968 1623408 5701720 1663880 5646248 1613632 5687000 +1623408 5701720 1663880 5646248 1614848 5688968 1623296 5701624 +1663880 5646248 1614856 5688976 1623408 5701720 1623576 5701960 +1614848 5688968 1614856 5688976 1663880 5646248 1613632 5687000 +1614856 5688976 1623408 5701720 1663880 5646248 1613632 5687000 +1663880 5646248 1663776 5646144 1613632 5687000 1614856 5688976 +1614848 5688968 1614856 5688976 1613632 5687000 1613640 5687040 +1614848 5688968 1623408 5701720 1614856 5688976 1613632 5687000 +1623408 5701720 1614856 5688976 1614848 5688968 1623296 5701624 +1614848 5688968 1623192 5701576 1623296 5701624 1614856 5688976 +1614848 5688968 1623016 5701528 1623192 5701576 1614856 5688976 +1614848 5688968 1615512 5696024 1623016 5701528 1614856 5688976 +1623192 5701576 1623296 5701624 1614856 5688976 1623016 5701528 +1614848 5688968 1615376 5695816 1615512 5696024 1614856 5688976 +1615512 5696024 1623016 5701528 1614856 5688976 1615376 5695816 +1623016 5701528 1623192 5701576 1614856 5688976 1615512 5696024 +1623408 5701720 1663880 5646248 1614856 5688976 1623296 5701624 +1614848 5688968 1615200 5695576 1615376 5695816 1614856 5688976 +1615376 5695816 1615512 5696024 1614856 5688976 1615200 5695576 +1614848 5688968 1614216 5694264 1615200 5695576 1614856 5688976 +1614848 5688968 1614120 5694152 1614216 5694264 1614856 5688976 +1614848 5688968 1613488 5693384 1614120 5694152 1614856 5688976 +1614848 5688968 1614768 5689000 1613488 5693384 1614856 5688976 +1614768 5689000 1613384 5693288 1613488 5693384 1614856 5688976 +1613488 5693384 1614120 5694152 1614856 5688976 1614768 5689000 +1614216 5694264 1615200 5695576 1614856 5688976 1614120 5694152 +1614120 5694152 1614216 5694264 1614856 5688976 1613488 5693384 +1615200 5695576 1615376 5695816 1614856 5688976 1614216 5694264 +1613488 5693384 1613584 5693568 1614120 5694152 1614856 5688976 +1615512 5696024 1615632 5696264 1623016 5701528 1614856 5688976 +1614216 5694264 1615056 5695464 1615200 5695576 1614856 5688976 +1614856 5688976 1613632 5687000 1614848 5688968 1614768 5689000 +1623296 5701624 1623408 5701720 1614856 5688976 1623192 5701576 +1663880 5646248 1614904 5688968 1623408 5701720 1623576 5701960 +1614856 5688976 1614904 5688968 1663880 5646248 1613632 5687000 +1614856 5688976 1623408 5701720 1614904 5688968 1613632 5687000 +1623408 5701720 1614904 5688968 1614856 5688976 1623296 5701624 +1614904 5688968 1613632 5687000 1614856 5688976 1623296 5701624 +1663880 5646248 1663776 5646144 1613632 5687000 1614904 5688968 +1614904 5688968 1623408 5701720 1663880 5646248 1613632 5687000 +1623408 5701720 1663880 5646248 1614904 5688968 1623296 5701624 +1614856 5688976 1614904 5688968 1613632 5687000 1614848 5688968 +1614904 5688968 1663880 5646248 1613632 5687000 1614848 5688968 +1614856 5688976 1623296 5701624 1614904 5688968 1614848 5688968 +1613632 5687000 1613640 5687040 1614848 5688968 1614904 5688968 +1613632 5687000 1613616 5687016 1613640 5687040 1614904 5688968 +1613632 5687000 1613640 5687040 1614904 5688968 1663880 5646248 +1613640 5687040 1613424 5687768 1614848 5688968 1614904 5688968 +1614848 5688968 1614856 5688976 1614904 5688968 1613640 5687040 +1614856 5688976 1623192 5701576 1623296 5701624 1614904 5688968 +1614856 5688976 1623016 5701528 1623192 5701576 1614904 5688968 +1614856 5688976 1615512 5696024 1623016 5701528 1614904 5688968 +1614856 5688976 1615376 5695816 1615512 5696024 1614904 5688968 +1623016 5701528 1623192 5701576 1614904 5688968 1615512 5696024 +1614856 5688976 1615200 5695576 1615376 5695816 1614904 5688968 +1615376 5695816 1615512 5696024 1614904 5688968 1615200 5695576 +1615512 5696024 1623016 5701528 1614904 5688968 1615376 5695816 +1614856 5688976 1615200 5695576 1614904 5688968 1614848 5688968 +1623296 5701624 1623408 5701720 1614904 5688968 1623192 5701576 +1614856 5688976 1614216 5694264 1615200 5695576 1614904 5688968 +1615200 5695576 1615376 5695816 1614904 5688968 1614216 5694264 +1614856 5688976 1614216 5694264 1614904 5688968 1614848 5688968 +1614856 5688976 1614120 5694152 1614216 5694264 1614904 5688968 +1614856 5688976 1614120 5694152 1614904 5688968 1614848 5688968 +1614856 5688976 1613488 5693384 1614120 5694152 1614904 5688968 +1614856 5688976 1614768 5689000 1613488 5693384 1614904 5688968 +1614768 5689000 1613384 5693288 1613488 5693384 1614904 5688968 +1614856 5688976 1614768 5689000 1614904 5688968 1614848 5688968 +1614856 5688976 1614848 5688968 1614768 5689000 1614904 5688968 +1614120 5694152 1614216 5694264 1614904 5688968 1613488 5693384 +1613488 5693384 1614120 5694152 1614904 5688968 1614768 5689000 +1614216 5694264 1615200 5695576 1614904 5688968 1614120 5694152 +1613488 5693384 1613584 5693568 1614120 5694152 1614904 5688968 +1615512 5696024 1615632 5696264 1623016 5701528 1614904 5688968 +1614216 5694264 1615056 5695464 1615200 5695576 1614904 5688968 +1623192 5701576 1623296 5701624 1614904 5688968 1623016 5701528 +1663880 5646248 1614992 5688968 1623408 5701720 1623576 5701960 +1614904 5688968 1614992 5688968 1663880 5646248 1613632 5687000 +1614904 5688968 1614992 5688968 1613632 5687000 1613640 5687040 +1613632 5687000 1613616 5687016 1613640 5687040 1614992 5688968 +1663880 5646248 1663776 5646144 1613632 5687000 1614992 5688968 +1614992 5688968 1663880 5646248 1613632 5687000 1613640 5687040 +1614904 5688968 1623408 5701720 1614992 5688968 1613640 5687040 +1623408 5701720 1614992 5688968 1614904 5688968 1623296 5701624 +1614904 5688968 1623192 5701576 1623296 5701624 1614992 5688968 +1614992 5688968 1613640 5687040 1614904 5688968 1623192 5701576 +1623296 5701624 1623408 5701720 1614992 5688968 1623192 5701576 +1614904 5688968 1614992 5688968 1613640 5687040 1614848 5688968 +1614904 5688968 1623016 5701528 1623192 5701576 1614992 5688968 +1614904 5688968 1615512 5696024 1623016 5701528 1614992 5688968 +1614904 5688968 1615376 5695816 1615512 5696024 1614992 5688968 +1614904 5688968 1615200 5695576 1615376 5695816 1614992 5688968 +1615512 5696024 1623016 5701528 1614992 5688968 1615376 5695816 +1614904 5688968 1614216 5694264 1615200 5695576 1614992 5688968 +1615200 5695576 1615376 5695816 1614992 5688968 1614216 5694264 +1615376 5695816 1615512 5696024 1614992 5688968 1615200 5695576 +1623192 5701576 1623296 5701624 1614992 5688968 1623016 5701528 +1614904 5688968 1614216 5694264 1614992 5688968 1613640 5687040 +1614904 5688968 1614120 5694152 1614216 5694264 1614992 5688968 +1614216 5694264 1615200 5695576 1614992 5688968 1614120 5694152 +1614904 5688968 1614120 5694152 1614992 5688968 1613640 5687040 +1614904 5688968 1613488 5693384 1614120 5694152 1614992 5688968 +1614904 5688968 1613488 5693384 1614992 5688968 1613640 5687040 +1614904 5688968 1614768 5689000 1613488 5693384 1614992 5688968 +1614768 5689000 1613384 5693288 1613488 5693384 1614992 5688968 +1614904 5688968 1614856 5688976 1614768 5689000 1614992 5688968 +1614856 5688976 1614848 5688968 1614768 5689000 1614992 5688968 +1614904 5688968 1614856 5688976 1614992 5688968 1613640 5687040 +1613488 5693384 1614120 5694152 1614992 5688968 1614768 5689000 +1614768 5689000 1613488 5693384 1614992 5688968 1614856 5688976 +1614120 5694152 1614216 5694264 1614992 5688968 1613488 5693384 +1613488 5693384 1613584 5693568 1614120 5694152 1614992 5688968 +1615512 5696024 1615632 5696264 1623016 5701528 1614992 5688968 +1615512 5696024 1615632 5696264 1614992 5688968 1615376 5695816 +1614216 5694264 1615056 5695464 1615200 5695576 1614992 5688968 +1615632 5696264 1621712 5701344 1623016 5701528 1614992 5688968 +1623016 5701528 1623192 5701576 1614992 5688968 1615632 5696264 +1614992 5688968 1623408 5701720 1663880 5646248 1613632 5687000 +1623408 5701720 1663880 5646248 1614992 5688968 1623296 5701624 +1663880 5646248 1615080 5688984 1623408 5701720 1623576 5701960 +1614992 5688968 1615080 5688984 1663880 5646248 1613632 5687000 +1615080 5688984 1623408 5701720 1663880 5646248 1613632 5687000 +1663880 5646248 1663776 5646144 1613632 5687000 1615080 5688984 +1663880 5646248 1663776 5646144 1615080 5688984 1623408 5701720 +1663776 5646144 1613592 5686944 1613632 5687000 1615080 5688984 +1614992 5688968 1615080 5688984 1613632 5687000 1613640 5687040 +1613632 5687000 1613616 5687016 1613640 5687040 1615080 5688984 +1614992 5688968 1615080 5688984 1613640 5687040 1614904 5688968 +1613632 5687000 1613640 5687040 1615080 5688984 1663776 5646144 +1614992 5688968 1623408 5701720 1615080 5688984 1613640 5687040 +1623408 5701720 1615080 5688984 1614992 5688968 1623296 5701624 +1623408 5701720 1663880 5646248 1615080 5688984 1623296 5701624 +1614992 5688968 1623192 5701576 1623296 5701624 1615080 5688984 +1614992 5688968 1623016 5701528 1623192 5701576 1615080 5688984 +1623192 5701576 1623296 5701624 1615080 5688984 1623016 5701528 +1614992 5688968 1615632 5696264 1623016 5701528 1615080 5688984 +1623016 5701528 1623192 5701576 1615080 5688984 1615632 5696264 +1614992 5688968 1615512 5696024 1615632 5696264 1615080 5688984 +1614992 5688968 1615376 5695816 1615512 5696024 1615080 5688984 +1614992 5688968 1615200 5695576 1615376 5695816 1615080 5688984 +1614992 5688968 1614216 5694264 1615200 5695576 1615080 5688984 +1615376 5695816 1615512 5696024 1615080 5688984 1615200 5695576 +1614992 5688968 1614120 5694152 1614216 5694264 1615080 5688984 +1614216 5694264 1615200 5695576 1615080 5688984 1614120 5694152 +1615200 5695576 1615376 5695816 1615080 5688984 1614216 5694264 +1614992 5688968 1613488 5693384 1614120 5694152 1615080 5688984 +1614120 5694152 1614216 5694264 1615080 5688984 1613488 5693384 +1614992 5688968 1614768 5689000 1613488 5693384 1615080 5688984 +1614768 5689000 1613384 5693288 1613488 5693384 1615080 5688984 +1614768 5689000 1613344 5689512 1613384 5693288 1615080 5688984 +1614768 5689000 1613384 5693288 1615080 5688984 1614992 5688968 +1614992 5688968 1614856 5688976 1614768 5689000 1615080 5688984 +1614992 5688968 1614904 5688968 1614856 5688976 1615080 5688984 +1614856 5688976 1614848 5688968 1614768 5689000 1615080 5688984 +1614768 5689000 1613384 5693288 1615080 5688984 1614856 5688976 +1613488 5693384 1614120 5694152 1615080 5688984 1613384 5693288 +1613488 5693384 1613584 5693568 1614120 5694152 1615080 5688984 +1615512 5696024 1615632 5696264 1615080 5688984 1615376 5695816 +1614216 5694264 1615056 5695464 1615200 5695576 1615080 5688984 +1615632 5696264 1621712 5701344 1623016 5701528 1615080 5688984 +1615632 5696264 1623016 5701528 1615080 5688984 1615512 5696024 +1615080 5688984 1613640 5687040 1614992 5688968 1614856 5688976 +1623296 5701624 1623408 5701720 1615080 5688984 1623192 5701576 +1663880 5646248 1615168 5689016 1623408 5701720 1623576 5701960 +1615080 5688984 1615168 5689016 1663880 5646248 1663776 5646144 +1615080 5688984 1623408 5701720 1615168 5689016 1663776 5646144 +1615168 5689016 1623408 5701720 1663880 5646248 1663776 5646144 +1615080 5688984 1615168 5689016 1663776 5646144 1613632 5687000 +1615080 5688984 1623408 5701720 1615168 5689016 1613632 5687000 +1615168 5689016 1663880 5646248 1663776 5646144 1613632 5687000 +1623408 5701720 1615168 5689016 1615080 5688984 1623296 5701624 +1615168 5689016 1613632 5687000 1615080 5688984 1623296 5701624 +1663776 5646144 1613592 5686944 1613632 5687000 1615168 5689016 +1623408 5701720 1663880 5646248 1615168 5689016 1623296 5701624 +1615080 5688984 1615168 5689016 1613632 5687000 1613640 5687040 +1615080 5688984 1623296 5701624 1615168 5689016 1613640 5687040 +1613632 5687000 1613616 5687016 1613640 5687040 1615168 5689016 +1615168 5689016 1663776 5646144 1613632 5687000 1613640 5687040 +1615080 5688984 1615168 5689016 1613640 5687040 1614992 5688968 +1615080 5688984 1623192 5701576 1623296 5701624 1615168 5689016 +1615080 5688984 1623192 5701576 1615168 5689016 1613640 5687040 +1623296 5701624 1623408 5701720 1615168 5689016 1623192 5701576 +1615080 5688984 1623016 5701528 1623192 5701576 1615168 5689016 +1615080 5688984 1623016 5701528 1615168 5689016 1613640 5687040 +1615080 5688984 1615632 5696264 1623016 5701528 1615168 5689016 +1615080 5688984 1615632 5696264 1615168 5689016 1613640 5687040 +1623016 5701528 1623192 5701576 1615168 5689016 1615632 5696264 +1615632 5696264 1621712 5701344 1623016 5701528 1615168 5689016 +1615080 5688984 1615512 5696024 1615632 5696264 1615168 5689016 +1615080 5688984 1615512 5696024 1615168 5689016 1613640 5687040 +1615632 5696264 1623016 5701528 1615168 5689016 1615512 5696024 +1615080 5688984 1615376 5695816 1615512 5696024 1615168 5689016 +1615080 5688984 1615200 5695576 1615376 5695816 1615168 5689016 +1615080 5688984 1615200 5695576 1615168 5689016 1613640 5687040 +1615080 5688984 1614216 5694264 1615200 5695576 1615168 5689016 +1615080 5688984 1614120 5694152 1614216 5694264 1615168 5689016 +1615200 5695576 1615376 5695816 1615168 5689016 1614216 5694264 +1615080 5688984 1613488 5693384 1614120 5694152 1615168 5689016 +1614120 5694152 1614216 5694264 1615168 5689016 1613488 5693384 +1615080 5688984 1613488 5693384 1615168 5689016 1613640 5687040 +1614216 5694264 1615200 5695576 1615168 5689016 1614120 5694152 +1615080 5688984 1613384 5693288 1613488 5693384 1615168 5689016 +1613488 5693384 1614120 5694152 1615168 5689016 1613384 5693288 +1615080 5688984 1613384 5693288 1615168 5689016 1613640 5687040 +1615080 5688984 1614768 5689000 1613384 5693288 1615168 5689016 +1615080 5688984 1614768 5689000 1615168 5689016 1613640 5687040 +1614768 5689000 1613344 5689512 1613384 5693288 1615168 5689016 +1615080 5688984 1614856 5688976 1614768 5689000 1615168 5689016 +1615080 5688984 1614856 5688976 1615168 5689016 1613640 5687040 +1614768 5689000 1613384 5693288 1615168 5689016 1614856 5688976 +1614856 5688976 1614848 5688968 1614768 5689000 1615168 5689016 +1615080 5688984 1614992 5688968 1614856 5688976 1615168 5689016 +1613384 5693288 1613488 5693384 1615168 5689016 1614768 5689000 +1613488 5693384 1613584 5693568 1614120 5694152 1615168 5689016 +1615376 5695816 1615512 5696024 1615168 5689016 1615200 5695576 +1614216 5694264 1615056 5695464 1615200 5695576 1615168 5689016 +1615512 5696024 1615632 5696264 1615168 5689016 1615376 5695816 +1623192 5701576 1623296 5701624 1615168 5689016 1623016 5701528 +1663880 5646248 1615264 5689048 1623408 5701720 1623576 5701960 +1615168 5689016 1615264 5689048 1663880 5646248 1663776 5646144 +1615168 5689016 1623408 5701720 1615264 5689048 1663776 5646144 +1615168 5689016 1615264 5689048 1663776 5646144 1613632 5687000 +1615264 5689048 1663880 5646248 1663776 5646144 1613632 5687000 +1615168 5689016 1623408 5701720 1615264 5689048 1613632 5687000 +1615168 5689016 1615264 5689048 1613632 5687000 1613640 5687040 +1615168 5689016 1623408 5701720 1615264 5689048 1613640 5687040 +1613632 5687000 1613616 5687016 1613640 5687040 1615264 5689048 +1615264 5689048 1663776 5646144 1613632 5687000 1613640 5687040 +1663776 5646144 1613592 5686944 1613632 5687000 1615264 5689048 +1663776 5646144 1657088 5639464 1613592 5686944 1615264 5689048 +1613592 5686944 1613600 5686968 1613632 5687000 1615264 5689048 +1663776 5646144 1613592 5686944 1615264 5689048 1663880 5646248 +1613632 5687000 1613640 5687040 1615264 5689048 1613592 5686944 +1623408 5701720 1615264 5689048 1615168 5689016 1623296 5701624 +1615264 5689048 1613640 5687040 1615168 5689016 1623296 5701624 +1615168 5689016 1623192 5701576 1623296 5701624 1615264 5689048 +1615168 5689016 1623192 5701576 1615264 5689048 1613640 5687040 +1623408 5701720 1663880 5646248 1615264 5689048 1623296 5701624 +1623296 5701624 1623408 5701720 1615264 5689048 1623192 5701576 +1615264 5689048 1623408 5701720 1663880 5646248 1663776 5646144 +1615168 5689016 1615264 5689048 1613640 5687040 1615080 5688984 +1615168 5689016 1623016 5701528 1623192 5701576 1615264 5689048 +1615168 5689016 1623016 5701528 1615264 5689048 1613640 5687040 +1623192 5701576 1623296 5701624 1615264 5689048 1623016 5701528 +1615168 5689016 1615632 5696264 1623016 5701528 1615264 5689048 +1615168 5689016 1615632 5696264 1615264 5689048 1613640 5687040 +1615168 5689016 1615512 5696024 1615632 5696264 1615264 5689048 +1615168 5689016 1615512 5696024 1615264 5689048 1613640 5687040 +1615632 5696264 1623016 5701528 1615264 5689048 1615512 5696024 +1615632 5696264 1621712 5701344 1623016 5701528 1615264 5689048 +1615168 5689016 1615376 5695816 1615512 5696024 1615264 5689048 +1615168 5689016 1615376 5695816 1615264 5689048 1613640 5687040 +1615512 5696024 1615632 5696264 1615264 5689048 1615376 5695816 +1615168 5689016 1615200 5695576 1615376 5695816 1615264 5689048 +1615168 5689016 1614216 5694264 1615200 5695576 1615264 5689048 +1615168 5689016 1614216 5694264 1615264 5689048 1613640 5687040 +1615168 5689016 1614120 5694152 1614216 5694264 1615264 5689048 +1615168 5689016 1613488 5693384 1614120 5694152 1615264 5689048 +1614216 5694264 1615200 5695576 1615264 5689048 1614120 5694152 +1615168 5689016 1613384 5693288 1613488 5693384 1615264 5689048 +1613488 5693384 1614120 5694152 1615264 5689048 1613384 5693288 +1615168 5689016 1613384 5693288 1615264 5689048 1613640 5687040 +1614120 5694152 1614216 5694264 1615264 5689048 1613488 5693384 +1615168 5689016 1614768 5689000 1613384 5693288 1615264 5689048 +1613384 5693288 1613488 5693384 1615264 5689048 1614768 5689000 +1615168 5689016 1614768 5689000 1615264 5689048 1613640 5687040 +1614768 5689000 1613344 5689512 1613384 5693288 1615264 5689048 +1613384 5693288 1613488 5693384 1615264 5689048 1613344 5689512 +1615168 5689016 1614856 5688976 1614768 5689000 1615264 5689048 +1613344 5689512 1613112 5693056 1613384 5693288 1615264 5689048 +1614768 5689000 1613448 5689368 1613344 5689512 1615264 5689048 +1614768 5689000 1613344 5689512 1615264 5689048 1615168 5689016 +1613488 5693384 1613584 5693568 1614120 5694152 1615264 5689048 +1615200 5695576 1615376 5695816 1615264 5689048 1614216 5694264 +1614216 5694264 1615056 5695464 1615200 5695576 1615264 5689048 +1615376 5695816 1615512 5696024 1615264 5689048 1615200 5695576 +1623016 5701528 1623192 5701576 1615264 5689048 1615632 5696264 +1663880 5646248 1615304 5689072 1623408 5701720 1623576 5701960 +1623408 5701720 1615304 5689072 1615264 5689048 1623296 5701624 +1615304 5689072 1663880 5646248 1615264 5689048 1623296 5701624 +1615264 5689048 1623192 5701576 1623296 5701624 1615304 5689072 +1615264 5689048 1623016 5701528 1623192 5701576 1615304 5689072 +1623296 5701624 1623408 5701720 1615304 5689072 1623192 5701576 +1615264 5689048 1623016 5701528 1615304 5689072 1663880 5646248 +1623192 5701576 1623296 5701624 1615304 5689072 1623016 5701528 +1615264 5689048 1615304 5689072 1663880 5646248 1663776 5646144 +1615264 5689048 1615304 5689072 1663776 5646144 1613592 5686944 +1663776 5646144 1657088 5639464 1613592 5686944 1615304 5689072 +1615264 5689048 1623016 5701528 1615304 5689072 1613592 5686944 +1615304 5689072 1623408 5701720 1663880 5646248 1663776 5646144 +1615304 5689072 1663880 5646248 1663776 5646144 1613592 5686944 +1615264 5689048 1615304 5689072 1613592 5686944 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1615304 5689072 +1615304 5689072 1663776 5646144 1613592 5686944 1613632 5687000 +1615264 5689048 1615304 5689072 1613632 5687000 1613640 5687040 +1615264 5689048 1623016 5701528 1615304 5689072 1613632 5687000 +1615264 5689048 1615632 5696264 1623016 5701528 1615304 5689072 +1623016 5701528 1623192 5701576 1615304 5689072 1615632 5696264 +1615264 5689048 1615632 5696264 1615304 5689072 1613632 5687000 +1615264 5689048 1615512 5696024 1615632 5696264 1615304 5689072 +1615264 5689048 1615376 5695816 1615512 5696024 1615304 5689072 +1615264 5689048 1615376 5695816 1615304 5689072 1613632 5687000 +1615512 5696024 1615632 5696264 1615304 5689072 1615376 5695816 +1615632 5696264 1621712 5701344 1623016 5701528 1615304 5689072 +1615264 5689048 1615200 5695576 1615376 5695816 1615304 5689072 +1615376 5695816 1615512 5696024 1615304 5689072 1615200 5695576 +1615264 5689048 1615200 5695576 1615304 5689072 1613632 5687000 +1615264 5689048 1614216 5694264 1615200 5695576 1615304 5689072 +1615264 5689048 1614120 5694152 1614216 5694264 1615304 5689072 +1615264 5689048 1613488 5693384 1614120 5694152 1615304 5689072 +1615264 5689048 1613384 5693288 1613488 5693384 1615304 5689072 +1614120 5694152 1614216 5694264 1615304 5689072 1613488 5693384 +1615264 5689048 1613344 5689512 1613384 5693288 1615304 5689072 +1613384 5693288 1613488 5693384 1615304 5689072 1613344 5689512 +1615264 5689048 1614768 5689000 1613344 5689512 1615304 5689072 +1613344 5689512 1613384 5693288 1615304 5689072 1614768 5689000 +1613488 5693384 1614120 5694152 1615304 5689072 1613384 5693288 +1613344 5689512 1613112 5693056 1613384 5693288 1615304 5689072 +1615264 5689048 1614768 5689000 1615304 5689072 1613632 5687000 +1614768 5689000 1613448 5689368 1613344 5689512 1615304 5689072 +1615264 5689048 1615168 5689016 1614768 5689000 1615304 5689072 +1614768 5689000 1613344 5689512 1615304 5689072 1615168 5689016 +1615168 5689016 1614856 5688976 1614768 5689000 1615304 5689072 +1615264 5689048 1615168 5689016 1615304 5689072 1613632 5687000 +1613488 5693384 1613584 5693568 1614120 5694152 1615304 5689072 +1614216 5694264 1615200 5695576 1615304 5689072 1614120 5694152 +1614216 5694264 1615056 5695464 1615200 5695576 1615304 5689072 +1615200 5695576 1615376 5695816 1615304 5689072 1614216 5694264 +1615632 5696264 1623016 5701528 1615304 5689072 1615512 5696024 +1623408 5701720 1663880 5646248 1615304 5689072 1623296 5701624 +1663880 5646248 1615352 5689088 1623408 5701720 1623576 5701960 +1615304 5689072 1615352 5689088 1663880 5646248 1663776 5646144 +1615304 5689072 1615352 5689088 1663776 5646144 1613592 5686944 +1663776 5646144 1657088 5639464 1613592 5686944 1615352 5689088 +1615304 5689072 1615352 5689088 1613592 5686944 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1615352 5689088 +1615352 5689088 1663880 5646248 1663776 5646144 1613592 5686944 +1615352 5689088 1663776 5646144 1613592 5686944 1613632 5687000 +1615304 5689072 1615352 5689088 1613632 5687000 1615264 5689048 +1615352 5689088 1613592 5686944 1613632 5687000 1615264 5689048 +1613632 5687000 1613640 5687040 1615264 5689048 1615352 5689088 +1615304 5689072 1623408 5701720 1615352 5689088 1615264 5689048 +1623408 5701720 1615352 5689088 1615304 5689072 1623296 5701624 +1623408 5701720 1663880 5646248 1615352 5689088 1623296 5701624 +1615304 5689072 1623192 5701576 1623296 5701624 1615352 5689088 +1615304 5689072 1623016 5701528 1623192 5701576 1615352 5689088 +1615304 5689072 1615632 5696264 1623016 5701528 1615352 5689088 +1623192 5701576 1623296 5701624 1615352 5689088 1623016 5701528 +1623016 5701528 1623192 5701576 1615352 5689088 1615632 5696264 +1615632 5696264 1621712 5701344 1623016 5701528 1615352 5689088 +1615304 5689072 1615512 5696024 1615632 5696264 1615352 5689088 +1615632 5696264 1623016 5701528 1615352 5689088 1615512 5696024 +1615304 5689072 1615376 5695816 1615512 5696024 1615352 5689088 +1615304 5689072 1615200 5695576 1615376 5695816 1615352 5689088 +1615376 5695816 1615512 5696024 1615352 5689088 1615200 5695576 +1615304 5689072 1614216 5694264 1615200 5695576 1615352 5689088 +1615200 5695576 1615376 5695816 1615352 5689088 1614216 5694264 +1615304 5689072 1614120 5694152 1614216 5694264 1615352 5689088 +1615304 5689072 1613488 5693384 1614120 5694152 1615352 5689088 +1615304 5689072 1613384 5693288 1613488 5693384 1615352 5689088 +1615304 5689072 1613344 5689512 1613384 5693288 1615352 5689088 +1613488 5693384 1614120 5694152 1615352 5689088 1613384 5693288 +1615304 5689072 1614768 5689000 1613344 5689512 1615352 5689088 +1613344 5689512 1613384 5693288 1615352 5689088 1614768 5689000 +1615304 5689072 1615168 5689016 1614768 5689000 1615352 5689088 +1613384 5693288 1613488 5693384 1615352 5689088 1613344 5689512 +1613344 5689512 1613112 5693056 1613384 5693288 1615352 5689088 +1614768 5689000 1613448 5689368 1613344 5689512 1615352 5689088 +1613488 5693384 1613584 5693568 1614120 5694152 1615352 5689088 +1614120 5694152 1614216 5694264 1615352 5689088 1613488 5693384 +1614216 5694264 1615056 5695464 1615200 5695576 1615352 5689088 +1614216 5694264 1615200 5695576 1615352 5689088 1614120 5694152 +1615512 5696024 1615632 5696264 1615352 5689088 1615376 5695816 +1615352 5689088 1615264 5689048 1615304 5689072 1614768 5689000 +1623296 5701624 1623408 5701720 1615352 5689088 1623192 5701576 +1615352 5689088 1623408 5701720 1663880 5646248 1663776 5646144 +1663880 5646248 1615392 5689120 1623408 5701720 1623576 5701960 +1623408 5701720 1615392 5689120 1615352 5689088 1623296 5701624 +1623408 5701720 1663880 5646248 1615392 5689120 1623296 5701624 +1615392 5689120 1663880 5646248 1615352 5689088 1623296 5701624 +1615352 5689088 1623192 5701576 1623296 5701624 1615392 5689120 +1615352 5689088 1623192 5701576 1615392 5689120 1663880 5646248 +1623296 5701624 1623408 5701720 1615392 5689120 1623192 5701576 +1615352 5689088 1623016 5701528 1623192 5701576 1615392 5689120 +1615352 5689088 1623016 5701528 1615392 5689120 1663880 5646248 +1615352 5689088 1615632 5696264 1623016 5701528 1615392 5689120 +1615352 5689088 1615632 5696264 1615392 5689120 1663880 5646248 +1615352 5689088 1615512 5696024 1615632 5696264 1615392 5689120 +1615352 5689088 1615512 5696024 1615392 5689120 1663880 5646248 +1623016 5701528 1623192 5701576 1615392 5689120 1615632 5696264 +1615632 5696264 1623016 5701528 1615392 5689120 1615512 5696024 +1615632 5696264 1621712 5701344 1623016 5701528 1615392 5689120 +1615352 5689088 1615376 5695816 1615512 5696024 1615392 5689120 +1615352 5689088 1615376 5695816 1615392 5689120 1663880 5646248 +1615512 5696024 1615632 5696264 1615392 5689120 1615376 5695816 +1615352 5689088 1615200 5695576 1615376 5695816 1615392 5689120 +1615352 5689088 1615200 5695576 1615392 5689120 1663880 5646248 +1615352 5689088 1614216 5694264 1615200 5695576 1615392 5689120 +1615352 5689088 1614216 5694264 1615392 5689120 1663880 5646248 +1615200 5695576 1615376 5695816 1615392 5689120 1614216 5694264 +1614216 5694264 1615056 5695464 1615200 5695576 1615392 5689120 +1615352 5689088 1614120 5694152 1614216 5694264 1615392 5689120 +1615352 5689088 1614120 5694152 1615392 5689120 1663880 5646248 +1614216 5694264 1615200 5695576 1615392 5689120 1614120 5694152 +1615352 5689088 1613488 5693384 1614120 5694152 1615392 5689120 +1615352 5689088 1613384 5693288 1613488 5693384 1615392 5689120 +1615352 5689088 1613384 5693288 1615392 5689120 1663880 5646248 +1615352 5689088 1613344 5689512 1613384 5693288 1615392 5689120 +1615352 5689088 1614768 5689000 1613344 5689512 1615392 5689120 +1613384 5693288 1613488 5693384 1615392 5689120 1613344 5689512 +1615352 5689088 1615304 5689072 1614768 5689000 1615392 5689120 +1614768 5689000 1613344 5689512 1615392 5689120 1615304 5689072 +1615304 5689072 1615168 5689016 1614768 5689000 1615392 5689120 +1615352 5689088 1615304 5689072 1615392 5689120 1663880 5646248 +1613344 5689512 1613384 5693288 1615392 5689120 1614768 5689000 +1613344 5689512 1613112 5693056 1613384 5693288 1615392 5689120 +1613384 5693288 1613488 5693384 1615392 5689120 1613112 5693056 +1613112 5693056 1613216 5693184 1613384 5693288 1615392 5689120 +1613344 5689512 1613280 5689560 1613112 5693056 1615392 5689120 +1613344 5689512 1613112 5693056 1615392 5689120 1614768 5689000 +1614768 5689000 1613448 5689368 1613344 5689512 1615392 5689120 +1613488 5693384 1613584 5693568 1614120 5694152 1615392 5689120 +1613488 5693384 1614120 5694152 1615392 5689120 1613384 5693288 +1614120 5694152 1614216 5694264 1615392 5689120 1613488 5693384 +1615376 5695816 1615512 5696024 1615392 5689120 1615200 5695576 +1623192 5701576 1623296 5701624 1615392 5689120 1623016 5701528 +1615352 5689088 1615392 5689120 1663880 5646248 1663776 5646144 +1615352 5689088 1615304 5689072 1615392 5689120 1663776 5646144 +1615392 5689120 1623408 5701720 1663880 5646248 1663776 5646144 +1615352 5689088 1615392 5689120 1663776 5646144 1613592 5686944 +1663776 5646144 1657088 5639464 1613592 5686944 1615392 5689120 +1615352 5689088 1615304 5689072 1615392 5689120 1613592 5686944 +1615352 5689088 1615392 5689120 1613592 5686944 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1615392 5689120 +1615352 5689088 1615392 5689120 1613632 5687000 1615264 5689048 +1615352 5689088 1615304 5689072 1615392 5689120 1613632 5687000 +1615392 5689120 1663776 5646144 1613592 5686944 1613632 5687000 +1615392 5689120 1663880 5646248 1663776 5646144 1613592 5686944 +1663880 5646248 1615440 5689168 1623408 5701720 1623576 5701960 +1623408 5701720 1615440 5689168 1615392 5689120 1623296 5701624 +1615440 5689168 1663880 5646248 1615392 5689120 1623296 5701624 +1615392 5689120 1623192 5701576 1623296 5701624 1615440 5689168 +1615392 5689120 1623192 5701576 1615440 5689168 1663880 5646248 +1623296 5701624 1623408 5701720 1615440 5689168 1623192 5701576 +1615392 5689120 1615440 5689168 1663880 5646248 1663776 5646144 +1615392 5689120 1623192 5701576 1615440 5689168 1663776 5646144 +1615440 5689168 1623408 5701720 1663880 5646248 1663776 5646144 +1623408 5701720 1663880 5646248 1615440 5689168 1623296 5701624 +1615392 5689120 1623016 5701528 1623192 5701576 1615440 5689168 +1615392 5689120 1623016 5701528 1615440 5689168 1663776 5646144 +1623192 5701576 1623296 5701624 1615440 5689168 1623016 5701528 +1615392 5689120 1615632 5696264 1623016 5701528 1615440 5689168 +1615392 5689120 1615632 5696264 1615440 5689168 1663776 5646144 +1615392 5689120 1615512 5696024 1615632 5696264 1615440 5689168 +1615392 5689120 1615512 5696024 1615440 5689168 1663776 5646144 +1615392 5689120 1615376 5695816 1615512 5696024 1615440 5689168 +1615392 5689120 1615376 5695816 1615440 5689168 1663776 5646144 +1615632 5696264 1623016 5701528 1615440 5689168 1615512 5696024 +1615512 5696024 1615632 5696264 1615440 5689168 1615376 5695816 +1615632 5696264 1621712 5701344 1623016 5701528 1615440 5689168 +1615392 5689120 1615200 5695576 1615376 5695816 1615440 5689168 +1615392 5689120 1615200 5695576 1615440 5689168 1663776 5646144 +1615376 5695816 1615512 5696024 1615440 5689168 1615200 5695576 +1615392 5689120 1614216 5694264 1615200 5695576 1615440 5689168 +1615392 5689120 1614216 5694264 1615440 5689168 1663776 5646144 +1615392 5689120 1614120 5694152 1614216 5694264 1615440 5689168 +1615392 5689120 1614120 5694152 1615440 5689168 1663776 5646144 +1614216 5694264 1615200 5695576 1615440 5689168 1614120 5694152 +1614216 5694264 1615056 5695464 1615200 5695576 1615440 5689168 +1615392 5689120 1613488 5693384 1614120 5694152 1615440 5689168 +1615392 5689120 1613488 5693384 1615440 5689168 1663776 5646144 +1614120 5694152 1614216 5694264 1615440 5689168 1613488 5693384 +1613488 5693384 1613584 5693568 1614120 5694152 1615440 5689168 +1615392 5689120 1613384 5693288 1613488 5693384 1615440 5689168 +1615392 5689120 1613112 5693056 1613384 5693288 1615440 5689168 +1615392 5689120 1613112 5693056 1615440 5689168 1663776 5646144 +1613112 5693056 1613216 5693184 1613384 5693288 1615440 5689168 +1615392 5689120 1613344 5689512 1613112 5693056 1615440 5689168 +1613112 5693056 1613384 5693288 1615440 5689168 1613344 5689512 +1615392 5689120 1613344 5689512 1615440 5689168 1663776 5646144 +1613344 5689512 1613280 5689560 1613112 5693056 1615440 5689168 +1615392 5689120 1614768 5689000 1613344 5689512 1615440 5689168 +1615392 5689120 1615304 5689072 1614768 5689000 1615440 5689168 +1615392 5689120 1615352 5689088 1615304 5689072 1615440 5689168 +1615304 5689072 1615168 5689016 1614768 5689000 1615440 5689168 +1615304 5689072 1615168 5689016 1615440 5689168 1615392 5689120 +1615392 5689120 1615304 5689072 1615440 5689168 1663776 5646144 +1615168 5689016 1614856 5688976 1614768 5689000 1615440 5689168 +1614768 5689000 1613344 5689512 1615440 5689168 1615168 5689016 +1613344 5689512 1613112 5693056 1615440 5689168 1614768 5689000 +1614768 5689000 1613448 5689368 1613344 5689512 1615440 5689168 +1615304 5689072 1615264 5689048 1615168 5689016 1615440 5689168 +1613384 5693288 1613488 5693384 1615440 5689168 1613112 5693056 +1613488 5693384 1614120 5694152 1615440 5689168 1613384 5693288 +1615200 5695576 1615376 5695816 1615440 5689168 1614216 5694264 +1623016 5701528 1623192 5701576 1615440 5689168 1615632 5696264 +1615392 5689120 1615440 5689168 1663776 5646144 1613592 5686944 +1663776 5646144 1657088 5639464 1613592 5686944 1615440 5689168 +1615392 5689120 1615304 5689072 1615440 5689168 1613592 5686944 +1615440 5689168 1663880 5646248 1663776 5646144 1613592 5686944 +1615392 5689120 1615440 5689168 1613592 5686944 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1615440 5689168 +1615392 5689120 1615304 5689072 1615440 5689168 1613632 5687000 +1615392 5689120 1615440 5689168 1613632 5687000 1615352 5689088 +1615440 5689168 1663776 5646144 1613592 5686944 1613632 5687000 +1615632 5696264 1615488 5689272 1615440 5689168 1615512 5696024 +1615488 5689272 1623016 5701528 1615440 5689168 1615512 5696024 +1615440 5689168 1615376 5695816 1615512 5696024 1615488 5689272 +1615440 5689168 1615200 5695576 1615376 5695816 1615488 5689272 +1615440 5689168 1615200 5695576 1615488 5689272 1623016 5701528 +1615512 5696024 1615632 5696264 1615488 5689272 1615376 5695816 +1615376 5695816 1615512 5696024 1615488 5689272 1615200 5695576 +1615632 5696264 1623016 5701528 1615488 5689272 1615512 5696024 +1623016 5701528 1615488 5689272 1615632 5696264 1621712 5701344 +1615440 5689168 1614216 5694264 1615200 5695576 1615488 5689272 +1615200 5695576 1615376 5695816 1615488 5689272 1614216 5694264 +1615440 5689168 1614216 5694264 1615488 5689272 1623016 5701528 +1615440 5689168 1614120 5694152 1614216 5694264 1615488 5689272 +1615440 5689168 1613488 5693384 1614120 5694152 1615488 5689272 +1615440 5689168 1613488 5693384 1615488 5689272 1623016 5701528 +1614120 5694152 1614216 5694264 1615488 5689272 1613488 5693384 +1613488 5693384 1613584 5693568 1614120 5694152 1615488 5689272 +1614216 5694264 1615056 5695464 1615200 5695576 1615488 5689272 +1615440 5689168 1613384 5693288 1613488 5693384 1615488 5689272 +1613488 5693384 1614120 5694152 1615488 5689272 1613384 5693288 +1615440 5689168 1613384 5693288 1615488 5689272 1623016 5701528 +1615440 5689168 1613112 5693056 1613384 5693288 1615488 5689272 +1615440 5689168 1613344 5689512 1613112 5693056 1615488 5689272 +1613112 5693056 1613216 5693184 1613384 5693288 1615488 5689272 +1613344 5689512 1613280 5689560 1613112 5693056 1615488 5689272 +1613344 5689512 1613280 5689560 1615488 5689272 1615440 5689168 +1615440 5689168 1613344 5689512 1615488 5689272 1623016 5701528 +1615440 5689168 1614768 5689000 1613344 5689512 1615488 5689272 +1613344 5689512 1613280 5689560 1615488 5689272 1614768 5689000 +1615440 5689168 1615168 5689016 1614768 5689000 1615488 5689272 +1615440 5689168 1615304 5689072 1615168 5689016 1615488 5689272 +1615440 5689168 1615392 5689120 1615304 5689072 1615488 5689272 +1615392 5689120 1615352 5689088 1615304 5689072 1615488 5689272 +1615304 5689072 1615168 5689016 1615488 5689272 1615392 5689120 +1615168 5689016 1614856 5688976 1614768 5689000 1615488 5689272 +1615168 5689016 1614768 5689000 1615488 5689272 1615304 5689072 +1615440 5689168 1615392 5689120 1615488 5689272 1623016 5701528 +1614768 5689000 1613344 5689512 1615488 5689272 1615168 5689016 +1614768 5689000 1613448 5689368 1613344 5689512 1615488 5689272 +1613280 5689560 1612768 5690096 1613112 5693056 1615488 5689272 +1613280 5689560 1612768 5690096 1615488 5689272 1613344 5689512 +1613280 5689560 1613216 5689568 1612768 5690096 1615488 5689272 +1615304 5689072 1615264 5689048 1615168 5689016 1615488 5689272 +1612768 5690096 1613016 5692968 1613112 5693056 1615488 5689272 +1613112 5693056 1613384 5693288 1615488 5689272 1612768 5690096 +1613384 5693288 1613488 5693384 1615488 5689272 1613112 5693056 +1614216 5694264 1615200 5695576 1615488 5689272 1614120 5694152 +1615440 5689168 1615488 5689272 1623016 5701528 1623192 5701576 +1615440 5689168 1615488 5689272 1623192 5701576 1623296 5701624 +1615440 5689168 1615488 5689272 1623296 5701624 1623408 5701720 +1615488 5689272 1623192 5701576 1623296 5701624 1623408 5701720 +1615440 5689168 1615392 5689120 1615488 5689272 1623408 5701720 +1615440 5689168 1615488 5689272 1623408 5701720 1663880 5646248 +1623408 5701720 1623576 5701960 1663880 5646248 1615488 5689272 +1615488 5689272 1623296 5701624 1623408 5701720 1663880 5646248 +1615440 5689168 1615488 5689272 1663880 5646248 1663776 5646144 +1615440 5689168 1615392 5689120 1615488 5689272 1663880 5646248 +1615488 5689272 1615632 5696264 1623016 5701528 1623192 5701576 +1615488 5689272 1623016 5701528 1623192 5701576 1623296 5701624 +1615488 5689272 1615488 5689328 1615512 5696024 1615632 5696264 +1615376 5695816 1615488 5689328 1615488 5689272 1615200 5695576 +1615488 5689272 1614216 5694264 1615200 5695576 1615488 5689328 +1615376 5695816 1615512 5696024 1615488 5689328 1615200 5695576 +1615200 5695576 1615376 5695816 1615488 5689328 1614216 5694264 +1615488 5689272 1614216 5694264 1615488 5689328 1615632 5696264 +1615488 5689272 1615488 5689328 1615632 5696264 1623016 5701528 +1615488 5689272 1615488 5689328 1623016 5701528 1623192 5701576 +1615488 5689328 1615512 5696024 1615632 5696264 1623016 5701528 +1615488 5689272 1614216 5694264 1615488 5689328 1623192 5701576 +1615488 5689328 1615632 5696264 1623016 5701528 1623192 5701576 +1615488 5689328 1615376 5695816 1615512 5696024 1615632 5696264 +1614216 5694264 1615056 5695464 1615200 5695576 1615488 5689328 +1615632 5696264 1621712 5701344 1623016 5701528 1615488 5689328 +1615488 5689272 1614120 5694152 1614216 5694264 1615488 5689328 +1614216 5694264 1615200 5695576 1615488 5689328 1614120 5694152 +1615488 5689272 1614120 5694152 1615488 5689328 1623192 5701576 +1615488 5689272 1613488 5693384 1614120 5694152 1615488 5689328 +1615488 5689272 1613384 5693288 1613488 5693384 1615488 5689328 +1615488 5689272 1613384 5693288 1615488 5689328 1623192 5701576 +1613488 5693384 1614120 5694152 1615488 5689328 1613384 5693288 +1613488 5693384 1613584 5693568 1614120 5694152 1615488 5689328 +1615488 5689272 1613112 5693056 1613384 5693288 1615488 5689328 +1613112 5693056 1613216 5693184 1613384 5693288 1615488 5689328 +1613384 5693288 1613488 5693384 1615488 5689328 1613112 5693056 +1615488 5689272 1613112 5693056 1615488 5689328 1623192 5701576 +1615488 5689272 1612768 5690096 1613112 5693056 1615488 5689328 +1615488 5689272 1613280 5689560 1612768 5690096 1615488 5689328 +1615488 5689272 1613344 5689512 1613280 5689560 1615488 5689328 +1615488 5689272 1614768 5689000 1613344 5689512 1615488 5689328 +1613344 5689512 1613280 5689560 1615488 5689328 1614768 5689000 +1615488 5689272 1615168 5689016 1614768 5689000 1615488 5689328 +1614768 5689000 1613344 5689512 1615488 5689328 1615168 5689016 +1615168 5689016 1614856 5688976 1614768 5689000 1615488 5689328 +1615488 5689272 1615304 5689072 1615168 5689016 1615488 5689328 +1615488 5689272 1615392 5689120 1615304 5689072 1615488 5689328 +1615488 5689272 1615440 5689168 1615392 5689120 1615488 5689328 +1615392 5689120 1615352 5689088 1615304 5689072 1615488 5689328 +1615392 5689120 1615304 5689072 1615488 5689328 1615440 5689168 +1615304 5689072 1615168 5689016 1615488 5689328 1615392 5689120 +1615168 5689016 1614768 5689000 1615488 5689328 1615304 5689072 +1613280 5689560 1613216 5689568 1612768 5690096 1615488 5689328 +1614768 5689000 1613448 5689368 1613344 5689512 1615488 5689328 +1613280 5689560 1612768 5690096 1615488 5689328 1613344 5689512 +1615488 5689272 1615440 5689168 1615488 5689328 1623192 5701576 +1615304 5689072 1615264 5689048 1615168 5689016 1615488 5689328 +1612768 5690096 1613016 5692968 1613112 5693056 1615488 5689328 +1612768 5690096 1613112 5693056 1615488 5689328 1613280 5689560 +1613112 5693056 1613384 5693288 1615488 5689328 1612768 5690096 +1614120 5694152 1614216 5694264 1615488 5689328 1613488 5693384 +1615488 5689272 1615488 5689328 1623192 5701576 1623296 5701624 +1615488 5689272 1615488 5689328 1623296 5701624 1623408 5701720 +1615488 5689328 1623016 5701528 1623192 5701576 1623296 5701624 +1615488 5689272 1615440 5689168 1615488 5689328 1623296 5701624 +1613112 5693056 1615416 5689384 1612768 5690096 1613016 5692968 +1615416 5689384 1615488 5689328 1612768 5690096 1613016 5692968 +1612768 5690096 1612744 5690128 1613016 5692968 1615416 5689384 +1613112 5693056 1615488 5689328 1615416 5689384 1613016 5692968 +1612768 5690096 1615416 5689384 1615488 5689328 1613280 5689560 +1612768 5690096 1613016 5692968 1615416 5689384 1613280 5689560 +1612768 5690096 1615416 5689384 1613280 5689560 1613216 5689568 +1615416 5689384 1613112 5693056 1615488 5689328 1613280 5689560 +1615488 5689328 1613344 5689512 1613280 5689560 1615416 5689384 +1615488 5689328 1614768 5689000 1613344 5689512 1615416 5689384 +1615488 5689328 1615168 5689016 1614768 5689000 1615416 5689384 +1615168 5689016 1614856 5688976 1614768 5689000 1615416 5689384 +1615168 5689016 1614856 5688976 1615416 5689384 1615488 5689328 +1614768 5689000 1613344 5689512 1615416 5689384 1614856 5688976 +1614856 5688976 1614848 5688968 1614768 5689000 1615416 5689384 +1615488 5689328 1615304 5689072 1615168 5689016 1615416 5689384 +1615168 5689016 1614856 5688976 1615416 5689384 1615304 5689072 +1615488 5689328 1615392 5689120 1615304 5689072 1615416 5689384 +1615392 5689120 1615352 5689088 1615304 5689072 1615416 5689384 +1615488 5689328 1615440 5689168 1615392 5689120 1615416 5689384 +1615488 5689328 1615488 5689272 1615440 5689168 1615416 5689384 +1615440 5689168 1615392 5689120 1615416 5689384 1615488 5689272 +1615392 5689120 1615304 5689072 1615416 5689384 1615440 5689168 +1615304 5689072 1615168 5689016 1615416 5689384 1615392 5689120 +1615488 5689328 1615488 5689272 1615416 5689384 1613112 5693056 +1614768 5689000 1613448 5689368 1613344 5689512 1615416 5689384 +1613344 5689512 1613280 5689560 1615416 5689384 1614768 5689000 +1615168 5689016 1615080 5688984 1614856 5688976 1615416 5689384 +1615168 5689016 1615080 5688984 1615416 5689384 1615304 5689072 +1614856 5688976 1614768 5689000 1615416 5689384 1615080 5688984 +1615080 5688984 1614992 5688968 1614856 5688976 1615416 5689384 +1614856 5688976 1614768 5689000 1615416 5689384 1614992 5688968 +1614992 5688968 1614904 5688968 1614856 5688976 1615416 5689384 +1615080 5688984 1614992 5688968 1615416 5689384 1615168 5689016 +1615304 5689072 1615264 5689048 1615168 5689016 1615416 5689384 +1615168 5689016 1615080 5688984 1615416 5689384 1615264 5689048 +1615304 5689072 1615264 5689048 1615416 5689384 1615392 5689120 +1613280 5689560 1612768 5690096 1615416 5689384 1613344 5689512 +1615488 5689328 1615416 5689384 1613112 5693056 1613384 5693288 +1613112 5693056 1613216 5693184 1613384 5693288 1615416 5689384 +1615488 5689328 1615416 5689384 1613384 5693288 1613488 5693384 +1615488 5689328 1615488 5689272 1615416 5689384 1613488 5693384 +1615416 5689384 1613016 5692968 1613112 5693056 1613384 5693288 +1615488 5689328 1615416 5689384 1613488 5693384 1614120 5694152 +1615416 5689384 1613384 5693288 1613488 5693384 1614120 5694152 +1615488 5689328 1615488 5689272 1615416 5689384 1614120 5694152 +1613488 5693384 1613584 5693568 1614120 5694152 1615416 5689384 +1615416 5689384 1613112 5693056 1613384 5693288 1613488 5693384 +1615488 5689328 1615416 5689384 1614120 5694152 1614216 5694264 +1615488 5689328 1615416 5689384 1614216 5694264 1615200 5695576 +1615488 5689328 1615488 5689272 1615416 5689384 1615200 5695576 +1615488 5689328 1615416 5689384 1615200 5695576 1615376 5695816 +1615416 5689384 1613488 5693384 1614120 5694152 1614216 5694264 +1614216 5694264 1615056 5695464 1615200 5695576 1615416 5689384 +1615416 5689384 1614120 5694152 1614216 5694264 1615200 5695576 +1614768 5689000 1615384 5689384 1615416 5689384 1614856 5688976 +1615416 5689384 1614992 5688968 1614856 5688976 1615384 5689384 +1614992 5688968 1614904 5688968 1614856 5688976 1615384 5689384 +1615384 5689384 1613344 5689512 1615416 5689384 1614992 5688968 +1614856 5688976 1614768 5689000 1615384 5689384 1614992 5688968 +1614768 5689000 1615384 5689384 1614856 5688976 1614848 5688968 +1614768 5689000 1613344 5689512 1615384 5689384 1614856 5688976 +1613344 5689512 1615384 5689384 1614768 5689000 1613448 5689368 +1615416 5689384 1615384 5689384 1613344 5689512 1613280 5689560 +1615416 5689384 1614992 5688968 1615384 5689384 1613280 5689560 +1615384 5689384 1614768 5689000 1613344 5689512 1613280 5689560 +1615416 5689384 1615080 5688984 1614992 5688968 1615384 5689384 +1614992 5688968 1614856 5688976 1615384 5689384 1615080 5688984 +1615416 5689384 1615080 5688984 1615384 5689384 1613280 5689560 +1615416 5689384 1615168 5689016 1615080 5688984 1615384 5689384 +1615416 5689384 1615264 5689048 1615168 5689016 1615384 5689384 +1615416 5689384 1615264 5689048 1615384 5689384 1613280 5689560 +1615168 5689016 1615080 5688984 1615384 5689384 1615264 5689048 +1615080 5688984 1614992 5688968 1615384 5689384 1615168 5689016 +1615416 5689384 1615304 5689072 1615264 5689048 1615384 5689384 +1615264 5689048 1615168 5689016 1615384 5689384 1615304 5689072 +1615416 5689384 1615304 5689072 1615384 5689384 1613280 5689560 +1615416 5689384 1615392 5689120 1615304 5689072 1615384 5689384 +1615392 5689120 1615352 5689088 1615304 5689072 1615384 5689384 +1615416 5689384 1615392 5689120 1615384 5689384 1613280 5689560 +1615416 5689384 1615440 5689168 1615392 5689120 1615384 5689384 +1615416 5689384 1615488 5689272 1615440 5689168 1615384 5689384 +1615416 5689384 1615488 5689328 1615488 5689272 1615384 5689384 +1615416 5689384 1615488 5689272 1615384 5689384 1613280 5689560 +1615440 5689168 1615392 5689120 1615384 5689384 1615488 5689272 +1615392 5689120 1615304 5689072 1615384 5689384 1615440 5689168 +1615304 5689072 1615264 5689048 1615384 5689384 1615392 5689120 +1615416 5689384 1615384 5689384 1613280 5689560 1612768 5690096 +1615416 5689384 1615488 5689272 1615384 5689384 1612768 5690096 +1615416 5689384 1615384 5689384 1612768 5690096 1613016 5692968 +1615416 5689384 1615488 5689272 1615384 5689384 1613016 5692968 +1612768 5690096 1612744 5690128 1613016 5692968 1615384 5689384 +1613280 5689560 1613216 5689568 1612768 5690096 1615384 5689384 +1615384 5689384 1613344 5689512 1613280 5689560 1612768 5690096 +1615416 5689384 1615384 5689384 1613016 5692968 1613112 5693056 +1615416 5689384 1615488 5689272 1615384 5689384 1613112 5693056 +1615384 5689384 1612768 5690096 1613016 5692968 1613112 5693056 +1615416 5689384 1615384 5689384 1613112 5693056 1613384 5693288 +1613112 5693056 1613216 5693184 1613384 5693288 1615384 5689384 +1615416 5689384 1615488 5689272 1615384 5689384 1613384 5693288 +1615384 5689384 1613016 5692968 1613112 5693056 1613384 5693288 +1615384 5689384 1613280 5689560 1612768 5690096 1613016 5692968 +1615416 5689384 1615384 5689384 1613384 5693288 1613488 5693384 +1615416 5689384 1615488 5689272 1615384 5689384 1613488 5693384 +1615416 5689384 1615384 5689384 1613488 5693384 1614120 5694152 +1615384 5689384 1613112 5693056 1613384 5693288 1613488 5693384 +1615384 5689384 1615312 5689360 1613344 5689512 1613280 5689560 +1615384 5689384 1614768 5689000 1615312 5689360 1613280 5689560 +1614768 5689000 1615312 5689360 1615384 5689384 1614856 5688976 +1614768 5689000 1613344 5689512 1615312 5689360 1614856 5688976 +1615384 5689384 1614992 5688968 1614856 5688976 1615312 5689360 +1615384 5689384 1615080 5688984 1614992 5688968 1615312 5689360 +1614992 5688968 1614904 5688968 1614856 5688976 1615312 5689360 +1614992 5688968 1614904 5688968 1615312 5689360 1615080 5688984 +1614768 5689000 1615312 5689360 1614856 5688976 1614848 5688968 +1615312 5689360 1613280 5689560 1615384 5689384 1615080 5688984 +1614856 5688976 1614768 5689000 1615312 5689360 1614904 5688968 +1615312 5689360 1614768 5689000 1613344 5689512 1613280 5689560 +1613344 5689512 1615312 5689360 1614768 5689000 1613448 5689368 +1615384 5689384 1615312 5689360 1613280 5689560 1612768 5690096 +1615312 5689360 1613344 5689512 1613280 5689560 1612768 5690096 +1615384 5689384 1615080 5688984 1615312 5689360 1612768 5690096 +1613280 5689560 1613216 5689568 1612768 5690096 1615312 5689360 +1615384 5689384 1615168 5689016 1615080 5688984 1615312 5689360 +1615080 5688984 1614992 5688968 1615312 5689360 1615168 5689016 +1615384 5689384 1615168 5689016 1615312 5689360 1612768 5690096 +1615384 5689384 1615264 5689048 1615168 5689016 1615312 5689360 +1615384 5689384 1615304 5689072 1615264 5689048 1615312 5689360 +1615384 5689384 1615304 5689072 1615312 5689360 1612768 5690096 +1615264 5689048 1615168 5689016 1615312 5689360 1615304 5689072 +1615168 5689016 1615080 5688984 1615312 5689360 1615264 5689048 +1615384 5689384 1615392 5689120 1615304 5689072 1615312 5689360 +1615304 5689072 1615264 5689048 1615312 5689360 1615392 5689120 +1615392 5689120 1615352 5689088 1615304 5689072 1615312 5689360 +1615384 5689384 1615440 5689168 1615392 5689120 1615312 5689360 +1615384 5689384 1615488 5689272 1615440 5689168 1615312 5689360 +1615384 5689384 1615416 5689384 1615488 5689272 1615312 5689360 +1615440 5689168 1615392 5689120 1615312 5689360 1615488 5689272 +1615384 5689384 1615488 5689272 1615312 5689360 1612768 5690096 +1615392 5689120 1615304 5689072 1615312 5689360 1615440 5689168 +1615384 5689384 1615312 5689360 1612768 5690096 1613016 5692968 +1615384 5689384 1615312 5689360 1613016 5692968 1613112 5693056 +1615384 5689384 1615488 5689272 1615312 5689360 1613112 5693056 +1612768 5690096 1612744 5690128 1613016 5692968 1615312 5689360 +1615312 5689360 1613280 5689560 1612768 5690096 1613016 5692968 +1615384 5689384 1615312 5689360 1613112 5693056 1613384 5693288 +1615312 5689360 1612768 5690096 1613016 5692968 1613112 5693056 +1614768 5689000 1615224 5689304 1615312 5689360 1614856 5688976 +1615224 5689304 1613344 5689512 1615312 5689360 1614856 5688976 +1614768 5689000 1615224 5689304 1614856 5688976 1614848 5688968 +1615312 5689360 1614904 5688968 1614856 5688976 1615224 5689304 +1615312 5689360 1614904 5688968 1615224 5689304 1613344 5689512 +1614856 5688976 1614768 5689000 1615224 5689304 1614904 5688968 +1615312 5689360 1614992 5688968 1614904 5688968 1615224 5689304 +1615312 5689360 1614992 5688968 1615224 5689304 1613344 5689512 +1615312 5689360 1615080 5688984 1614992 5688968 1615224 5689304 +1615312 5689360 1615080 5688984 1615224 5689304 1613344 5689512 +1615312 5689360 1615168 5689016 1615080 5688984 1615224 5689304 +1615312 5689360 1615168 5689016 1615224 5689304 1613344 5689512 +1614992 5688968 1614904 5688968 1615224 5689304 1615080 5688984 +1615080 5688984 1614992 5688968 1615224 5689304 1615168 5689016 +1614904 5688968 1614856 5688976 1615224 5689304 1614992 5688968 +1615312 5689360 1615224 5689304 1613344 5689512 1613280 5689560 +1614768 5689000 1613344 5689512 1615224 5689304 1614856 5688976 +1613344 5689512 1615224 5689304 1614768 5689000 1613448 5689368 +1613344 5689512 1615224 5689304 1613448 5689368 1613376 5689456 +1613344 5689512 1615312 5689360 1615224 5689304 1613448 5689368 +1615224 5689304 1614856 5688976 1614768 5689000 1613448 5689368 +1615312 5689360 1615264 5689048 1615168 5689016 1615224 5689304 +1615312 5689360 1615264 5689048 1615224 5689304 1613344 5689512 +1615168 5689016 1615080 5688984 1615224 5689304 1615264 5689048 +1615312 5689360 1615304 5689072 1615264 5689048 1615224 5689304 +1615312 5689360 1615392 5689120 1615304 5689072 1615224 5689304 +1615392 5689120 1615352 5689088 1615304 5689072 1615224 5689304 +1615392 5689120 1615352 5689088 1615224 5689304 1615312 5689360 +1615312 5689360 1615392 5689120 1615224 5689304 1613344 5689512 +1615304 5689072 1615264 5689048 1615224 5689304 1615352 5689088 +1615264 5689048 1615168 5689016 1615224 5689304 1615304 5689072 +1615312 5689360 1615440 5689168 1615392 5689120 1615224 5689304 +1615392 5689120 1615352 5689088 1615224 5689304 1615440 5689168 +1615312 5689360 1615440 5689168 1615224 5689304 1613344 5689512 +1615312 5689360 1615488 5689272 1615440 5689168 1615224 5689304 +1614768 5689000 1613480 5689256 1613448 5689368 1615224 5689304 +1614768 5689000 1615176 5689288 1615224 5689304 1614856 5688976 +1615224 5689304 1614904 5688968 1614856 5688976 1615176 5689288 +1614768 5689000 1615176 5689288 1614856 5688976 1614848 5688968 +1615224 5689304 1614992 5688968 1614904 5688968 1615176 5689288 +1614904 5688968 1614856 5688976 1615176 5689288 1614992 5688968 +1615224 5689304 1615080 5688984 1614992 5688968 1615176 5689288 +1615224 5689304 1615168 5689016 1615080 5688984 1615176 5689288 +1615224 5689304 1615264 5689048 1615168 5689016 1615176 5689288 +1615080 5688984 1614992 5688968 1615176 5689288 1615168 5689016 +1615168 5689016 1615080 5688984 1615176 5689288 1615264 5689048 +1614992 5688968 1614904 5688968 1615176 5689288 1615080 5688984 +1615176 5689288 1613448 5689368 1615224 5689304 1615264 5689048 +1614856 5688976 1614768 5689000 1615176 5689288 1614904 5688968 +1614768 5689000 1613448 5689368 1615176 5689288 1614856 5688976 +1615224 5689304 1615176 5689288 1613448 5689368 1613344 5689512 +1613448 5689368 1613376 5689456 1613344 5689512 1615176 5689288 +1615224 5689304 1615176 5689288 1613344 5689512 1615312 5689360 +1613344 5689512 1613280 5689560 1615312 5689360 1615176 5689288 +1615224 5689304 1615264 5689048 1615176 5689288 1615312 5689360 +1615176 5689288 1614768 5689000 1613448 5689368 1613344 5689512 +1615176 5689288 1613448 5689368 1613344 5689512 1615312 5689360 +1615224 5689304 1615304 5689072 1615264 5689048 1615176 5689288 +1615264 5689048 1615168 5689016 1615176 5689288 1615304 5689072 +1615224 5689304 1615304 5689072 1615176 5689288 1615312 5689360 +1615224 5689304 1615352 5689088 1615304 5689072 1615176 5689288 +1613448 5689368 1615176 5689288 1614768 5689000 1613480 5689256 +1615176 5689288 1615096 5689256 1613448 5689368 1613344 5689512 +1613448 5689368 1613376 5689456 1613344 5689512 1615096 5689256 +1615176 5689288 1614768 5689000 1615096 5689256 1613344 5689512 +1614768 5689000 1615096 5689256 1615176 5689288 1614856 5688976 +1614768 5689000 1613448 5689368 1615096 5689256 1614856 5688976 +1614768 5689000 1615096 5689256 1614856 5688976 1614848 5688968 +1615176 5689288 1614904 5688968 1614856 5688976 1615096 5689256 +1615176 5689288 1614992 5688968 1614904 5688968 1615096 5689256 +1615176 5689288 1615080 5688984 1614992 5688968 1615096 5689256 +1614992 5688968 1614904 5688968 1615096 5689256 1615080 5688984 +1615176 5689288 1615168 5689016 1615080 5688984 1615096 5689256 +1615176 5689288 1615264 5689048 1615168 5689016 1615096 5689256 +1615176 5689288 1615304 5689072 1615264 5689048 1615096 5689256 +1615168 5689016 1615080 5688984 1615096 5689256 1615264 5689048 +1615080 5688984 1614992 5688968 1615096 5689256 1615168 5689016 +1614904 5688968 1614856 5688976 1615096 5689256 1614992 5688968 +1615096 5689256 1613344 5689512 1615176 5689288 1615264 5689048 +1614856 5688976 1614768 5689000 1615096 5689256 1614904 5688968 +1615096 5689256 1614768 5689000 1613448 5689368 1613344 5689512 +1615176 5689288 1615096 5689256 1613344 5689512 1615312 5689360 +1615176 5689288 1615096 5689256 1615312 5689360 1615224 5689304 +1613344 5689512 1613280 5689560 1615312 5689360 1615096 5689256 +1615096 5689256 1613448 5689368 1613344 5689512 1615312 5689360 +1615176 5689288 1615264 5689048 1615096 5689256 1615312 5689360 +1613448 5689368 1615096 5689256 1614768 5689000 1613480 5689256 +1614768 5689000 1615000 5689240 1615096 5689256 1614856 5688976 +1615000 5689240 1613448 5689368 1615096 5689256 1614856 5688976 +1614768 5689000 1613448 5689368 1615000 5689240 1614856 5688976 +1614768 5689000 1615000 5689240 1614856 5688976 1614848 5688968 +1615096 5689256 1614904 5688968 1614856 5688976 1615000 5689240 +1615096 5689256 1614904 5688968 1615000 5689240 1613448 5689368 +1614856 5688976 1614768 5689000 1615000 5689240 1614904 5688968 +1615096 5689256 1614992 5688968 1614904 5688968 1615000 5689240 +1615096 5689256 1614992 5688968 1615000 5689240 1613448 5689368 +1615096 5689256 1615080 5688984 1614992 5688968 1615000 5689240 +1615096 5689256 1615080 5688984 1615000 5689240 1613448 5689368 +1615096 5689256 1615168 5689016 1615080 5688984 1615000 5689240 +1614992 5688968 1614904 5688968 1615000 5689240 1615080 5688984 +1614904 5688968 1614856 5688976 1615000 5689240 1614992 5688968 +1615096 5689256 1615000 5689240 1613448 5689368 1613344 5689512 +1615096 5689256 1615080 5688984 1615000 5689240 1613344 5689512 +1615000 5689240 1614768 5689000 1613448 5689368 1613344 5689512 +1613448 5689368 1613376 5689456 1613344 5689512 1615000 5689240 +1615096 5689256 1615000 5689240 1613344 5689512 1615312 5689360 +1615096 5689256 1615080 5688984 1615000 5689240 1615312 5689360 +1613344 5689512 1613280 5689560 1615312 5689360 1615000 5689240 +1613280 5689560 1612768 5690096 1615312 5689360 1615000 5689240 +1615312 5689360 1615096 5689256 1615000 5689240 1613280 5689560 +1615000 5689240 1613448 5689368 1613344 5689512 1613280 5689560 +1615096 5689256 1615000 5689240 1615312 5689360 1615176 5689288 +1615096 5689256 1615080 5688984 1615000 5689240 1615176 5689288 +1615312 5689360 1615224 5689304 1615176 5689288 1615000 5689240 +1615000 5689240 1613280 5689560 1615312 5689360 1615176 5689288 +1613448 5689368 1615000 5689240 1614768 5689000 1613480 5689256 +1615000 5689240 1614904 5689200 1613448 5689368 1613344 5689512 +1615000 5689240 1614768 5689000 1614904 5689200 1613344 5689512 +1614768 5689000 1614904 5689200 1615000 5689240 1614856 5688976 +1615000 5689240 1614904 5688968 1614856 5688976 1614904 5689200 +1614904 5689200 1613344 5689512 1615000 5689240 1614904 5688968 +1614856 5688976 1614768 5689000 1614904 5689200 1614904 5688968 +1614904 5689200 1614768 5689000 1613448 5689368 1613344 5689512 +1614768 5689000 1613448 5689368 1614904 5689200 1614856 5688976 +1613448 5689368 1613376 5689456 1613344 5689512 1614904 5689200 +1614768 5689000 1614904 5689200 1614856 5688976 1614848 5688968 +1615000 5689240 1614992 5688968 1614904 5688968 1614904 5689200 +1614904 5688968 1614856 5688976 1614904 5689200 1614992 5688968 +1615000 5689240 1614992 5688968 1614904 5689200 1613344 5689512 +1615000 5689240 1615080 5688984 1614992 5688968 1614904 5689200 +1615000 5689240 1614904 5689200 1613344 5689512 1613280 5689560 +1613448 5689368 1614904 5689200 1614768 5689000 1613480 5689256 +1614904 5689200 1614864 5689176 1613448 5689368 1613344 5689512 +1614904 5689200 1614864 5689176 1613344 5689512 1615000 5689240 +1614904 5689200 1614768 5689000 1614864 5689176 1613344 5689512 +1614768 5689000 1614864 5689176 1614904 5689200 1614856 5688976 +1614768 5689000 1613448 5689368 1614864 5689176 1614856 5688976 +1614904 5689200 1614904 5688968 1614856 5688976 1614864 5689176 +1614904 5689200 1614992 5688968 1614904 5688968 1614864 5689176 +1614864 5689176 1613344 5689512 1614904 5689200 1614904 5688968 +1614856 5688976 1614768 5689000 1614864 5689176 1614904 5688968 +1614864 5689176 1614768 5689000 1613448 5689368 1613344 5689512 +1613448 5689368 1613376 5689456 1613344 5689512 1614864 5689176 +1614768 5689000 1614864 5689176 1614856 5688976 1614848 5688968 +1613448 5689368 1614864 5689176 1614768 5689000 1613480 5689256 +1614864 5689176 1614856 5688976 1614768 5689000 1613480 5689256 +1613448 5689368 1613344 5689512 1614864 5689176 1613480 5689256 +1614768 5689000 1613504 5689056 1613480 5689256 1614864 5689176 +1614768 5689000 1614840 5689152 1614864 5689176 1614856 5688976 +1614840 5689152 1613480 5689256 1614864 5689176 1614856 5688976 +1614864 5689176 1614904 5688968 1614856 5688976 1614840 5689152 +1614864 5689176 1614904 5688968 1614840 5689152 1613480 5689256 +1614856 5688976 1614768 5689000 1614840 5689152 1614904 5688968 +1614864 5689176 1614904 5689200 1614904 5688968 1614840 5689152 +1614768 5689000 1613480 5689256 1614840 5689152 1614856 5688976 +1614768 5689000 1614840 5689152 1614856 5688976 1614848 5688968 +1613480 5689256 1614840 5689152 1614768 5689000 1613504 5689056 +1614864 5689176 1614840 5689152 1613480 5689256 1613448 5689368 +1614864 5689176 1614904 5688968 1614840 5689152 1613448 5689368 +1614840 5689152 1614768 5689000 1613480 5689256 1613448 5689368 +1614864 5689176 1614840 5689152 1613448 5689368 1613344 5689512 +1614840 5689152 1614768 5689040 1613480 5689256 1613448 5689368 +1614768 5689000 1614768 5689040 1614840 5689152 1614856 5688976 +1614840 5689152 1614904 5688968 1614856 5688976 1614768 5689040 +1614768 5689040 1613480 5689256 1614840 5689152 1614856 5688976 +1614768 5689000 1613480 5689256 1614768 5689040 1614856 5688976 +1614768 5689000 1614768 5689040 1614856 5688976 1614848 5688968 +1613480 5689256 1614768 5689040 1614768 5689000 1613504 5689056 +1613480 5689256 1614840 5689152 1614768 5689040 1613504 5689056 +1614768 5689040 1614856 5688976 1614768 5689000 1613504 5689056 +1614768 5689000 1613448 5688912 1613504 5689056 1614768 5689040 +1614768 5689000 1614072 5688456 1613392 5688832 1613448 5688912 +1614072 5688456 1613424 5687768 1613392 5688832 1613448 5688912 +1613424 5687768 1614072 5688456 1614768 5689000 1614848 5688968 +1613424 5687768 1614072 5688456 1614848 5688968 1613640 5687040 +1613424 5687768 1614072 5688456 1613640 5687040 1613408 5687664 +1613424 5687768 1613392 5688832 1614072 5688456 1613640 5687040 +1614072 5688456 1614768 5689000 1614848 5688968 1613640 5687040 +1614848 5688968 1614904 5688968 1613640 5687040 1614072 5688456 +1613640 5687040 1613424 5687768 1614072 5688456 1614904 5688968 +1614848 5688968 1614904 5688968 1614072 5688456 1614768 5689000 +1614768 5689000 1614848 5688968 1614072 5688456 1613448 5688912 +1614904 5688968 1614992 5688968 1613640 5687040 1614072 5688456 +1613640 5687040 1613424 5687768 1614072 5688456 1614992 5688968 +1614992 5688968 1615080 5688984 1613640 5687040 1614072 5688456 +1614904 5688968 1614992 5688968 1614072 5688456 1614848 5688968 +1613392 5688832 1614072 5688456 1613424 5687768 1613336 5688792 +1613392 5688832 1613448 5688912 1614072 5688456 1613336 5688792 +1614072 5688456 1613640 5687040 1613424 5687768 1613336 5688792 +1613424 5687768 1613296 5687768 1613336 5688792 1614072 5688456 +1614848 5688968 1614856 5688976 1614904 5688968 1614072 5688456 +1614768 5689000 1614072 5688456 1613448 5688912 1613504 5689056 +1614072 5688456 1613392 5688832 1613448 5688912 1613504 5689056 +1614768 5689000 1614848 5688968 1614072 5688456 1613504 5689056 +1614768 5689000 1614072 5688456 1613504 5689056 1614768 5689040 +1613504 5689056 1613480 5689256 1614768 5689040 1614072 5688456 +1614768 5689000 1614848 5688968 1614072 5688456 1614768 5689040 +1614072 5688456 1613448 5688912 1613504 5689056 1614768 5689040 +1614072 5688456 1614136 5688440 1613640 5687040 1613424 5687768 +1613640 5687040 1613408 5687664 1613424 5687768 1614136 5688440 +1613640 5687040 1614136 5688440 1614992 5688968 1615080 5688984 +1614072 5688456 1614136 5688440 1613424 5687768 1613336 5688792 +1614072 5688456 1614992 5688968 1614136 5688440 1613424 5687768 +1614136 5688440 1615080 5688984 1613640 5687040 1613424 5687768 +1613640 5687040 1614136 5688440 1615080 5688984 1615168 5689016 +1614136 5688440 1614072 5688456 1614992 5688968 1615080 5688984 +1614992 5688968 1614136 5688440 1614072 5688456 1614904 5688968 +1614072 5688456 1614848 5688968 1614904 5688968 1614136 5688440 +1614072 5688456 1614768 5689000 1614848 5688968 1614136 5688440 +1614848 5688968 1614904 5688968 1614136 5688440 1614768 5689000 +1614136 5688440 1613424 5687768 1614072 5688456 1614768 5689000 +1614072 5688456 1614768 5689040 1614768 5689000 1614136 5688440 +1614992 5688968 1615080 5688984 1614136 5688440 1614904 5688968 +1614904 5688968 1614992 5688968 1614136 5688440 1614848 5688968 +1614848 5688968 1614856 5688976 1614904 5688968 1614136 5688440 +1615080 5688984 1614216 5688432 1614136 5688440 1614992 5688968 +1614136 5688440 1614216 5688432 1613640 5687040 1613424 5687768 +1613640 5687040 1613408 5687664 1613424 5687768 1614216 5688432 +1614136 5688440 1614216 5688432 1613424 5687768 1614072 5688456 +1613640 5687040 1614216 5688432 1615080 5688984 1615168 5689016 +1614216 5688432 1613424 5687768 1614136 5688440 1614992 5688968 +1614136 5688440 1614904 5688968 1614992 5688968 1614216 5688432 +1614992 5688968 1615080 5688984 1614216 5688432 1614904 5688968 +1614136 5688440 1614904 5688968 1614216 5688432 1613424 5687768 +1614216 5688432 1615080 5688984 1613640 5687040 1613424 5687768 +1614136 5688440 1614848 5688968 1614904 5688968 1614216 5688432 +1614136 5688440 1614768 5689000 1614848 5688968 1614216 5688432 +1614136 5688440 1614072 5688456 1614768 5689000 1614216 5688432 +1614768 5689000 1614848 5688968 1614216 5688432 1614072 5688456 +1614072 5688456 1614768 5689040 1614768 5689000 1614216 5688432 +1614136 5688440 1614072 5688456 1614216 5688432 1613424 5687768 +1614904 5688968 1614992 5688968 1614216 5688432 1614848 5688968 +1614848 5688968 1614904 5688968 1614216 5688432 1614768 5689000 +1614848 5688968 1614856 5688976 1614904 5688968 1614216 5688432 +1615080 5688984 1613640 5687040 1614216 5688432 1614992 5688968 +1613640 5687040 1614312 5688440 1615080 5688984 1615168 5689016 +1614312 5688440 1614216 5688432 1615080 5688984 1615168 5689016 +1614216 5688432 1614312 5688440 1613640 5687040 1613424 5687768 +1613640 5687040 1614312 5688440 1615168 5689016 1615264 5689048 +1613640 5687040 1614312 5688440 1615264 5689048 1613632 5687000 +1614312 5688440 1615080 5688984 1615168 5689016 1615264 5689048 +1615080 5688984 1614312 5688440 1614216 5688432 1614992 5688968 +1614216 5688432 1614904 5688968 1614992 5688968 1614312 5688440 +1615080 5688984 1615168 5689016 1614312 5688440 1614992 5688968 +1614216 5688432 1614848 5688968 1614904 5688968 1614312 5688440 +1614904 5688968 1614992 5688968 1614312 5688440 1614848 5688968 +1614216 5688432 1614768 5689000 1614848 5688968 1614312 5688440 +1614216 5688432 1614072 5688456 1614768 5689000 1614312 5688440 +1614216 5688432 1614136 5688440 1614072 5688456 1614312 5688440 +1614072 5688456 1614768 5689000 1614312 5688440 1614136 5688440 +1614072 5688456 1614768 5689040 1614768 5689000 1614312 5688440 +1614848 5688968 1614904 5688968 1614312 5688440 1614768 5689000 +1614768 5689000 1614848 5688968 1614312 5688440 1614072 5688456 +1614848 5688968 1614856 5688976 1614904 5688968 1614312 5688440 +1614312 5688440 1613640 5687040 1614216 5688432 1614136 5688440 +1614992 5688968 1615080 5688984 1614312 5688440 1614904 5688968 +1613640 5687040 1614216 5688432 1614312 5688440 1615264 5689048 +1613640 5687040 1614392 5688480 1615264 5689048 1613632 5687000 +1615264 5689048 1614392 5688480 1614312 5688440 1615168 5689016 +1614392 5688480 1613640 5687040 1614312 5688440 1615168 5689016 +1614312 5688440 1615080 5688984 1615168 5689016 1614392 5688480 +1614312 5688440 1615080 5688984 1614392 5688480 1613640 5687040 +1614312 5688440 1614992 5688968 1615080 5688984 1614392 5688480 +1614312 5688440 1614992 5688968 1614392 5688480 1613640 5687040 +1615080 5688984 1615168 5689016 1614392 5688480 1614992 5688968 +1615264 5689048 1613640 5687040 1614392 5688480 1615168 5689016 +1615168 5689016 1615264 5689048 1614392 5688480 1615080 5688984 +1614312 5688440 1614904 5688968 1614992 5688968 1614392 5688480 +1614312 5688440 1614848 5688968 1614904 5688968 1614392 5688480 +1614312 5688440 1614848 5688968 1614392 5688480 1613640 5687040 +1614992 5688968 1615080 5688984 1614392 5688480 1614904 5688968 +1614312 5688440 1614768 5689000 1614848 5688968 1614392 5688480 +1614848 5688968 1614904 5688968 1614392 5688480 1614768 5689000 +1614312 5688440 1614768 5689000 1614392 5688480 1613640 5687040 +1614312 5688440 1614072 5688456 1614768 5689000 1614392 5688480 +1614312 5688440 1614072 5688456 1614392 5688480 1613640 5687040 +1614312 5688440 1614136 5688440 1614072 5688456 1614392 5688480 +1614312 5688440 1614136 5688440 1614392 5688480 1613640 5687040 +1614312 5688440 1614216 5688432 1614136 5688440 1614392 5688480 +1614312 5688440 1614216 5688432 1614392 5688480 1613640 5687040 +1614136 5688440 1614072 5688456 1614392 5688480 1614216 5688432 +1614072 5688456 1614768 5689040 1614768 5689000 1614392 5688480 +1614768 5689000 1614848 5688968 1614392 5688480 1614768 5689040 +1614072 5688456 1613504 5689056 1614768 5689040 1614392 5688480 +1614072 5688456 1614768 5689040 1614392 5688480 1614136 5688440 +1614848 5688968 1614856 5688976 1614904 5688968 1614392 5688480 +1614904 5688968 1614992 5688968 1614392 5688480 1614848 5688968 +1614312 5688440 1614392 5688480 1613640 5687040 1614216 5688432 +1613640 5687040 1614416 5688480 1615264 5689048 1613632 5687000 +1614392 5688480 1614416 5688480 1613640 5687040 1614312 5688440 +1614392 5688480 1615264 5689048 1614416 5688480 1614312 5688440 +1615264 5689048 1614416 5688480 1614392 5688480 1615168 5689016 +1614416 5688480 1614312 5688440 1614392 5688480 1615168 5689016 +1614416 5688480 1615264 5689048 1613640 5687040 1614312 5688440 +1615264 5689048 1613640 5687040 1614416 5688480 1615168 5689016 +1614392 5688480 1615080 5688984 1615168 5689016 1614416 5688480 +1614392 5688480 1614992 5688968 1615080 5688984 1614416 5688480 +1614392 5688480 1614904 5688968 1614992 5688968 1614416 5688480 +1614992 5688968 1615080 5688984 1614416 5688480 1614904 5688968 +1614392 5688480 1614904 5688968 1614416 5688480 1614312 5688440 +1615168 5689016 1615264 5689048 1614416 5688480 1615080 5688984 +1615080 5688984 1615168 5689016 1614416 5688480 1614992 5688968 +1614392 5688480 1614848 5688968 1614904 5688968 1614416 5688480 +1614392 5688480 1614768 5689000 1614848 5688968 1614416 5688480 +1614904 5688968 1614992 5688968 1614416 5688480 1614848 5688968 +1614392 5688480 1614768 5689040 1614768 5689000 1614416 5688480 +1614392 5688480 1614768 5689000 1614416 5688480 1614312 5688440 +1614848 5688968 1614856 5688976 1614904 5688968 1614416 5688480 +1614848 5688968 1614904 5688968 1614416 5688480 1614768 5689000 +1613640 5687040 1614216 5688432 1614312 5688440 1614416 5688480 +1614416 5688480 1614472 5688520 1615168 5689016 1615264 5689048 +1614416 5688480 1615080 5688984 1614472 5688520 1615264 5689048 +1614416 5688480 1614472 5688520 1615264 5689048 1613640 5687040 +1615264 5689048 1613632 5687000 1613640 5687040 1614472 5688520 +1613632 5687000 1613616 5687016 1613640 5687040 1614472 5688520 +1615264 5689048 1615352 5689088 1613632 5687000 1614472 5688520 +1614472 5688520 1615168 5689016 1615264 5689048 1613632 5687000 +1614416 5688480 1614472 5688520 1613640 5687040 1614312 5688440 +1614416 5688480 1615080 5688984 1614472 5688520 1613640 5687040 +1613640 5687040 1614416 5688480 1614472 5688520 1613632 5687000 +1614472 5688520 1615080 5688984 1615168 5689016 1615264 5689048 +1615080 5688984 1614472 5688520 1614416 5688480 1614992 5688968 +1615080 5688984 1615168 5689016 1614472 5688520 1614992 5688968 +1614416 5688480 1614904 5688968 1614992 5688968 1614472 5688520 +1614416 5688480 1614848 5688968 1614904 5688968 1614472 5688520 +1614904 5688968 1614992 5688968 1614472 5688520 1614848 5688968 +1614472 5688520 1613640 5687040 1614416 5688480 1614848 5688968 +1614848 5688968 1614856 5688976 1614904 5688968 1614472 5688520 +1614992 5688968 1615080 5688984 1614472 5688520 1614904 5688968 +1614416 5688480 1614768 5689000 1614848 5688968 1614472 5688520 +1614416 5688480 1614392 5688480 1614768 5689000 1614472 5688520 +1614848 5688968 1614904 5688968 1614472 5688520 1614768 5689000 +1614392 5688480 1614768 5689040 1614768 5689000 1614472 5688520 +1614392 5688480 1614768 5689040 1614472 5688520 1614416 5688480 +1614392 5688480 1614072 5688456 1614768 5689040 1614472 5688520 +1614392 5688480 1614072 5688456 1614472 5688520 1614416 5688480 +1614768 5689040 1614768 5689000 1614472 5688520 1614072 5688456 +1614072 5688456 1613504 5689056 1614768 5689040 1614472 5688520 +1614392 5688480 1614136 5688440 1614072 5688456 1614472 5688520 +1614416 5688480 1614392 5688480 1614472 5688520 1613640 5687040 +1614768 5689000 1614848 5688968 1614472 5688520 1614768 5689040 +1614072 5688456 1614472 5688576 1614472 5688520 1614392 5688480 +1614472 5688576 1614768 5689040 1614472 5688520 1614392 5688480 +1614472 5688520 1614416 5688480 1614392 5688480 1614472 5688576 +1614472 5688520 1614416 5688480 1614472 5688576 1614768 5689040 +1614072 5688456 1614768 5689040 1614472 5688576 1614392 5688480 +1614392 5688480 1614072 5688456 1614472 5688576 1614416 5688480 +1614472 5688520 1614472 5688576 1614768 5689040 1614768 5689000 +1614472 5688520 1614416 5688480 1614472 5688576 1614768 5689000 +1614472 5688576 1614072 5688456 1614768 5689040 1614768 5689000 +1614768 5689040 1614472 5688576 1614072 5688456 1613504 5689056 +1614768 5689040 1614768 5689000 1614472 5688576 1613504 5689056 +1614472 5688576 1614392 5688480 1614072 5688456 1613504 5689056 +1614768 5689040 1614472 5688576 1613504 5689056 1613480 5689256 +1614072 5688456 1614472 5688576 1614392 5688480 1614136 5688440 +1614072 5688456 1613504 5689056 1614472 5688576 1614136 5688440 +1614392 5688480 1614216 5688432 1614136 5688440 1614472 5688576 +1614392 5688480 1614312 5688440 1614216 5688432 1614472 5688576 +1614472 5688576 1614416 5688480 1614392 5688480 1614216 5688432 +1614136 5688440 1614072 5688456 1614472 5688576 1614216 5688432 +1614072 5688456 1613448 5688912 1613504 5689056 1614472 5688576 +1614472 5688520 1614472 5688576 1614768 5689000 1614848 5688968 +1614472 5688520 1614416 5688480 1614472 5688576 1614848 5688968 +1614472 5688520 1614472 5688576 1614848 5688968 1614904 5688968 +1614472 5688520 1614416 5688480 1614472 5688576 1614904 5688968 +1614472 5688520 1614472 5688576 1614904 5688968 1614992 5688968 +1614472 5688576 1614768 5689040 1614768 5689000 1614848 5688968 +1614848 5688968 1614856 5688976 1614904 5688968 1614472 5688576 +1614472 5688576 1614768 5689000 1614848 5688968 1614904 5688968 +1614472 5688576 1614408 5688648 1614768 5689040 1614768 5689000 +1614472 5688576 1613504 5689056 1614408 5688648 1614768 5689000 +1614408 5688648 1613504 5689056 1614768 5689040 1614768 5689000 +1614768 5689040 1614408 5688648 1613504 5689056 1613480 5689256 +1614408 5688648 1614472 5688576 1613504 5689056 1613480 5689256 +1614768 5689040 1614768 5689000 1614408 5688648 1613480 5689256 +1614768 5689040 1614408 5688648 1613480 5689256 1614840 5689152 +1614472 5688576 1614408 5688648 1614768 5689000 1614848 5688968 +1613504 5689056 1614408 5688648 1614472 5688576 1614072 5688456 +1613504 5689056 1613480 5689256 1614408 5688648 1614072 5688456 +1614408 5688648 1614768 5689000 1614472 5688576 1614072 5688456 +1614472 5688576 1614136 5688440 1614072 5688456 1614408 5688648 +1614472 5688576 1614136 5688440 1614408 5688648 1614768 5689000 +1614072 5688456 1613504 5689056 1614408 5688648 1614136 5688440 +1614472 5688576 1614216 5688432 1614136 5688440 1614408 5688648 +1614472 5688576 1614216 5688432 1614408 5688648 1614768 5689000 +1614136 5688440 1614072 5688456 1614408 5688648 1614216 5688432 +1614472 5688576 1614392 5688480 1614216 5688432 1614408 5688648 +1614472 5688576 1614392 5688480 1614408 5688648 1614768 5689000 +1614392 5688480 1614312 5688440 1614216 5688432 1614408 5688648 +1614392 5688480 1614312 5688440 1614408 5688648 1614472 5688576 +1614472 5688576 1614416 5688480 1614392 5688480 1614408 5688648 +1614216 5688432 1614136 5688440 1614408 5688648 1614312 5688440 +1613504 5689056 1614408 5688648 1614072 5688456 1613448 5688912 +1614408 5688648 1614360 5688680 1614768 5689040 1614768 5689000 +1614408 5688648 1613480 5689256 1614360 5688680 1614768 5689000 +1614360 5688680 1613480 5689256 1614768 5689040 1614768 5689000 +1614408 5688648 1614360 5688680 1614768 5689000 1614472 5688576 +1614768 5689040 1614360 5688680 1613480 5689256 1614840 5689152 +1613480 5689256 1614360 5688680 1614408 5688648 1613504 5689056 +1614360 5688680 1614768 5689000 1614408 5688648 1613504 5689056 +1614408 5688648 1614072 5688456 1613504 5689056 1614360 5688680 +1614408 5688648 1614072 5688456 1614360 5688680 1614768 5689000 +1613504 5689056 1613480 5689256 1614360 5688680 1614072 5688456 +1613480 5689256 1614768 5689040 1614360 5688680 1613504 5689056 +1614408 5688648 1614136 5688440 1614072 5688456 1614360 5688680 +1614408 5688648 1614136 5688440 1614360 5688680 1614768 5689000 +1614072 5688456 1613504 5689056 1614360 5688680 1614136 5688440 +1614408 5688648 1614216 5688432 1614136 5688440 1614360 5688680 +1614408 5688648 1614216 5688432 1614360 5688680 1614768 5689000 +1614136 5688440 1614072 5688456 1614360 5688680 1614216 5688432 +1614408 5688648 1614312 5688440 1614216 5688432 1614360 5688680 +1614408 5688648 1614312 5688440 1614360 5688680 1614768 5689000 +1614216 5688432 1614136 5688440 1614360 5688680 1614312 5688440 +1614408 5688648 1614392 5688480 1614312 5688440 1614360 5688680 +1614408 5688648 1614392 5688480 1614360 5688680 1614768 5689000 +1614408 5688648 1614472 5688576 1614392 5688480 1614360 5688680 +1614312 5688440 1614216 5688432 1614360 5688680 1614392 5688480 +1614072 5688456 1613448 5688912 1613504 5689056 1614360 5688680 +1614072 5688456 1614288 5688696 1614360 5688680 1614136 5688440 +1614072 5688456 1613504 5689056 1614288 5688696 1614136 5688440 +1614360 5688680 1614288 5688696 1613504 5689056 1613480 5689256 +1614288 5688696 1613480 5689256 1614360 5688680 1614136 5688440 +1614360 5688680 1614288 5688696 1613480 5689256 1614768 5689040 +1614360 5688680 1614288 5688696 1614768 5689040 1614768 5689000 +1613480 5689256 1614840 5689152 1614768 5689040 1614288 5688696 +1614288 5688696 1613504 5689056 1613480 5689256 1614768 5689040 +1614360 5688680 1614136 5688440 1614288 5688696 1614768 5689040 +1614288 5688696 1614072 5688456 1613504 5689056 1613480 5689256 +1614360 5688680 1614216 5688432 1614136 5688440 1614288 5688696 +1614136 5688440 1614072 5688456 1614288 5688696 1614216 5688432 +1614360 5688680 1614312 5688440 1614216 5688432 1614288 5688696 +1614360 5688680 1614312 5688440 1614288 5688696 1614768 5689040 +1614216 5688432 1614136 5688440 1614288 5688696 1614312 5688440 +1614360 5688680 1614392 5688480 1614312 5688440 1614288 5688696 +1613504 5689056 1614288 5688696 1614072 5688456 1613448 5688912 +1614072 5688456 1614200 5688680 1614288 5688696 1614136 5688440 +1614288 5688696 1614216 5688432 1614136 5688440 1614200 5688680 +1614200 5688680 1613504 5689056 1614288 5688696 1614216 5688432 +1614136 5688440 1614072 5688456 1614200 5688680 1614216 5688432 +1614288 5688696 1614200 5688680 1613504 5689056 1613480 5689256 +1614288 5688696 1614216 5688432 1614200 5688680 1613480 5689256 +1614200 5688680 1614072 5688456 1613504 5689056 1613480 5689256 +1614288 5688696 1614200 5688680 1613480 5689256 1614768 5689040 +1614288 5688696 1614312 5688440 1614216 5688432 1614200 5688680 +1614216 5688432 1614136 5688440 1614200 5688680 1614312 5688440 +1614288 5688696 1614312 5688440 1614200 5688680 1613480 5689256 +1614288 5688696 1614360 5688680 1614312 5688440 1614200 5688680 +1613504 5689056 1614200 5688680 1614072 5688456 1613448 5688912 +1613504 5689056 1613480 5689256 1614200 5688680 1613448 5688912 +1614072 5688456 1613392 5688832 1613448 5688912 1614200 5688680 +1614072 5688456 1613448 5688912 1614200 5688680 1614136 5688440 +1613448 5688912 1614160 5688664 1614072 5688456 1613392 5688832 +1614200 5688680 1614160 5688664 1613448 5688912 1613504 5689056 +1614200 5688680 1614160 5688664 1613504 5689056 1613480 5689256 +1614200 5688680 1614072 5688456 1614160 5688664 1613504 5689056 +1614072 5688456 1614160 5688664 1614200 5688680 1614136 5688440 +1614200 5688680 1614216 5688432 1614136 5688440 1614160 5688664 +1614200 5688680 1614312 5688440 1614216 5688432 1614160 5688664 +1614072 5688456 1613448 5688912 1614160 5688664 1614136 5688440 +1614160 5688664 1613504 5689056 1614200 5688680 1614216 5688432 +1614136 5688440 1614072 5688456 1614160 5688664 1614216 5688432 +1614160 5688664 1614072 5688456 1613448 5688912 1613504 5689056 +1613448 5688912 1614120 5688624 1614072 5688456 1613392 5688832 +1614120 5688624 1614160 5688664 1614072 5688456 1613392 5688832 +1614072 5688456 1613336 5688792 1613392 5688832 1614120 5688624 +1614072 5688456 1614120 5688624 1614160 5688664 1614136 5688440 +1614072 5688456 1613392 5688832 1614120 5688624 1614136 5688440 +1614120 5688624 1613448 5688912 1614160 5688664 1614136 5688440 +1613448 5688912 1614160 5688664 1614120 5688624 1613392 5688832 +1614160 5688664 1614216 5688432 1614136 5688440 1614120 5688624 +1614160 5688664 1614200 5688680 1614216 5688432 1614120 5688624 +1614200 5688680 1614312 5688440 1614216 5688432 1614120 5688624 +1614160 5688664 1614200 5688680 1614120 5688624 1613448 5688912 +1614136 5688440 1614072 5688456 1614120 5688624 1614216 5688432 +1614216 5688432 1614136 5688440 1614120 5688624 1614200 5688680 +1614160 5688664 1614120 5688624 1613448 5688912 1613504 5689056 +1614160 5688664 1614200 5688680 1614120 5688624 1613504 5689056 +1614120 5688624 1613392 5688832 1613448 5688912 1613504 5689056 +1614160 5688664 1614120 5688624 1613504 5689056 1614200 5688680 +1614120 5688624 1614072 5688544 1613392 5688832 1613448 5688912 +1614120 5688624 1614072 5688456 1614072 5688544 1613448 5688912 +1614072 5688456 1614072 5688544 1614120 5688624 1614136 5688440 +1614072 5688544 1613448 5688912 1614120 5688624 1614136 5688440 +1614072 5688544 1614072 5688456 1613392 5688832 1613448 5688912 +1613392 5688832 1614072 5688544 1614072 5688456 1613336 5688792 +1614072 5688456 1613392 5688832 1614072 5688544 1614136 5688440 +1614120 5688624 1614216 5688432 1614136 5688440 1614072 5688544 +1614120 5688624 1614072 5688544 1613448 5688912 1613504 5689056 +1613056 5686432 1612408 5685072 1601560 5681032 1601592 5681064 +1613056 5686432 1657056 5639384 1612408 5685072 1601592 5681064 +1613056 5686432 1612408 5685072 1601592 5681064 1612336 5686456 +1613056 5686432 1657056 5639384 1612408 5685072 1612336 5686456 +1613056 5686432 1612408 5685072 1612336 5686456 1612448 5686536 +1612408 5685072 1601560 5681032 1601592 5681064 1612336 5686456 +1657056 5639384 1612408 5685072 1613056 5686432 1657088 5639464 +1612408 5685072 1612336 5686456 1613056 5686432 1657088 5639464 +1613056 5686432 1613592 5686944 1657088 5639464 1612408 5685072 +1613056 5686432 1613592 5686944 1612408 5685072 1612336 5686456 +1613056 5686432 1613536 5686904 1613592 5686944 1612408 5685072 +1657088 5639464 1657056 5639384 1612408 5685072 1613592 5686944 +1612408 5685072 1657056 5639384 1601560 5681032 1601592 5681064 +1657056 5639384 1601560 5681032 1612408 5685072 1657088 5639464 +1601560 5681032 1612408 5685072 1657056 5639384 1601464 5680984 +1613592 5686944 1663776 5646144 1657088 5639464 1612408 5685072 +1657088 5639464 1657056 5639384 1612408 5685072 1663776 5646144 +1613592 5686944 1615440 5689168 1663776 5646144 1612408 5685072 +1613592 5686944 1615440 5689168 1612408 5685072 1613056 5686432 +1615440 5689168 1663880 5646248 1663776 5646144 1612408 5685072 +1663776 5646144 1663688 5645984 1657088 5639464 1612408 5685072 +1663776 5646144 1657088 5639464 1612408 5685072 1615440 5689168 +1601592 5681064 1612272 5686464 1612336 5686456 1612408 5685072 +1612336 5686456 1613056 5686432 1612408 5685072 1612272 5686464 +1601592 5681064 1612272 5686464 1612408 5685072 1601560 5681032 +1601592 5681064 1601624 5681136 1612272 5686464 1612408 5685072 +1601592 5681064 1601624 5681136 1612408 5685072 1601560 5681032 +1612272 5686464 1612336 5686456 1612408 5685072 1601624 5681136 +1601624 5681136 1612216 5686496 1612272 5686464 1612408 5685072 +1601624 5681136 1612216 5686496 1612408 5685072 1601592 5681064 +1612272 5686464 1612336 5686456 1612408 5685072 1612216 5686496 +1601624 5681136 1611224 5687456 1612216 5686496 1612408 5685072 +1601624 5681136 1601592 5681216 1611224 5687456 1612408 5685072 +1601624 5681136 1601592 5681216 1612408 5685072 1601592 5681064 +1611224 5687456 1611288 5687432 1612216 5686496 1612408 5685072 +1611224 5687456 1612216 5686496 1612408 5685072 1601592 5681216 +1612216 5686496 1612272 5686464 1612408 5685072 1611224 5687456 +1601592 5681216 1601128 5681664 1611224 5687456 1612408 5685072 +1613592 5686944 1613632 5687000 1615440 5689168 1612408 5685072 +1615440 5689168 1612496 5685080 1612408 5685072 1613592 5686944 +1612496 5685080 1663776 5646144 1612408 5685072 1613592 5686944 +1612408 5685072 1613056 5686432 1613592 5686944 1612496 5685080 +1612408 5685072 1613056 5686432 1612496 5685080 1663776 5646144 +1612408 5685072 1612336 5686456 1613056 5686432 1612496 5685080 +1612408 5685072 1612336 5686456 1612496 5685080 1663776 5646144 +1612336 5686456 1612448 5686536 1613056 5686432 1612496 5685080 +1612408 5685072 1612272 5686464 1612336 5686456 1612496 5685080 +1613056 5686432 1613536 5686904 1613592 5686944 1612496 5685080 +1613592 5686944 1615440 5689168 1612496 5685080 1613056 5686432 +1613056 5686432 1613592 5686944 1612496 5685080 1612336 5686456 +1663776 5646144 1612496 5685080 1615440 5689168 1663880 5646248 +1612408 5685072 1612496 5685080 1663776 5646144 1657088 5639464 +1612408 5685072 1612336 5686456 1612496 5685080 1657088 5639464 +1612496 5685080 1615440 5689168 1663776 5646144 1657088 5639464 +1612408 5685072 1612496 5685080 1657088 5639464 1657056 5639384 +1612408 5685072 1612336 5686456 1612496 5685080 1657056 5639384 +1612408 5685072 1612496 5685080 1657056 5639384 1601560 5681032 +1612408 5685072 1612336 5686456 1612496 5685080 1601560 5681032 +1612496 5685080 1657088 5639464 1657056 5639384 1601560 5681032 +1612408 5685072 1612496 5685080 1601560 5681032 1601592 5681064 +1657056 5639384 1601464 5680984 1601560 5681032 1612496 5685080 +1663776 5646144 1663688 5645984 1657088 5639464 1612496 5685080 +1612496 5685080 1663776 5646144 1657088 5639464 1657056 5639384 +1615440 5689168 1663776 5646144 1612496 5685080 1613592 5686944 +1615440 5689168 1612496 5685080 1613592 5686944 1613632 5687000 +1612496 5685080 1613056 5686432 1613592 5686944 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1612496 5685080 +1615440 5689168 1612496 5685080 1613632 5687000 1615392 5689120 +1615440 5689168 1663776 5646144 1612496 5685080 1613632 5687000 +1612496 5685080 1612576 5685128 1663776 5646144 1657088 5639464 +1663776 5646144 1612576 5685128 1615440 5689168 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1612576 5685128 +1612496 5685080 1612576 5685128 1657088 5639464 1657056 5639384 +1612496 5685080 1615440 5689168 1612576 5685128 1657088 5639464 +1615440 5689168 1612576 5685128 1612496 5685080 1613632 5687000 +1615440 5689168 1612576 5685128 1613632 5687000 1615392 5689120 +1613632 5687000 1615352 5689088 1615392 5689120 1612576 5685128 +1615440 5689168 1663776 5646144 1612576 5685128 1615392 5689120 +1612576 5685128 1657088 5639464 1612496 5685080 1613632 5687000 +1612576 5685128 1612496 5685080 1613632 5687000 1615392 5689120 +1612576 5685128 1615440 5689168 1663776 5646144 1657088 5639464 +1612496 5685080 1613592 5686944 1613632 5687000 1612576 5685128 +1612496 5685080 1613056 5686432 1613592 5686944 1612576 5685128 +1613056 5686432 1613536 5686904 1613592 5686944 1612576 5685128 +1613056 5686432 1613536 5686904 1612576 5685128 1612496 5685080 +1613592 5686944 1613600 5686968 1613632 5687000 1612576 5685128 +1612496 5685080 1612336 5686456 1613056 5686432 1612576 5685128 +1612496 5685080 1612408 5685072 1612336 5686456 1612576 5685128 +1612336 5686456 1612448 5686536 1613056 5686432 1612576 5685128 +1612408 5685072 1612272 5686464 1612336 5686456 1612576 5685128 +1613056 5686432 1613536 5686904 1612576 5685128 1612336 5686456 +1612336 5686456 1613056 5686432 1612576 5685128 1612408 5685072 +1613056 5686432 1613488 5686880 1613536 5686904 1612576 5685128 +1612496 5685080 1612408 5685072 1612576 5685128 1657088 5639464 +1613632 5687000 1615392 5689120 1612576 5685128 1613592 5686944 +1613592 5686944 1613632 5687000 1612576 5685128 1613536 5686904 +1663776 5646144 1612616 5685152 1615440 5689168 1663880 5646248 +1615440 5689168 1612616 5685152 1612576 5685128 1615392 5689120 +1615440 5689168 1663776 5646144 1612616 5685152 1615392 5689120 +1612576 5685128 1613632 5687000 1615392 5689120 1612616 5685152 +1613632 5687000 1615352 5689088 1615392 5689120 1612616 5685152 +1612616 5685152 1663776 5646144 1612576 5685128 1613632 5687000 +1615392 5689120 1615440 5689168 1612616 5685152 1613632 5687000 +1612576 5685128 1613592 5686944 1613632 5687000 1612616 5685152 +1613592 5686944 1613600 5686968 1613632 5687000 1612616 5685152 +1613632 5687000 1615392 5689120 1612616 5685152 1613592 5686944 +1612576 5685128 1613592 5686944 1612616 5685152 1663776 5646144 +1612576 5685128 1612616 5685152 1663776 5646144 1657088 5639464 +1612576 5685128 1612616 5685152 1657088 5639464 1612496 5685080 +1612576 5685128 1613592 5686944 1612616 5685152 1657088 5639464 +1612616 5685152 1615440 5689168 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1612616 5685152 +1612576 5685128 1613536 5686904 1613592 5686944 1612616 5685152 +1612576 5685128 1613056 5686432 1613536 5686904 1612616 5685152 +1612576 5685128 1612336 5686456 1613056 5686432 1612616 5685152 +1612336 5686456 1612448 5686536 1613056 5686432 1612616 5685152 +1613056 5686432 1613536 5686904 1612616 5685152 1612336 5686456 +1612576 5685128 1612408 5685072 1612336 5686456 1612616 5685152 +1612576 5685128 1612496 5685080 1612408 5685072 1612616 5685152 +1612408 5685072 1612272 5686464 1612336 5686456 1612616 5685152 +1612336 5686456 1613056 5686432 1612616 5685152 1612408 5685072 +1613056 5686432 1613488 5686880 1613536 5686904 1612616 5685152 +1612576 5685128 1612408 5685072 1612616 5685152 1657088 5639464 +1613592 5686944 1613632 5687000 1612616 5685152 1613536 5686904 +1613536 5686904 1613592 5686944 1612616 5685152 1613056 5686432 +1663776 5646144 1612640 5685184 1615440 5689168 1663880 5646248 +1615440 5689168 1612640 5685184 1612616 5685152 1615392 5689120 +1612640 5685184 1663776 5646144 1612616 5685152 1615392 5689120 +1615440 5689168 1663776 5646144 1612640 5685184 1615392 5689120 +1612616 5685152 1613632 5687000 1615392 5689120 1612640 5685184 +1612616 5685152 1613632 5687000 1612640 5685184 1663776 5646144 +1615392 5689120 1615440 5689168 1612640 5685184 1613632 5687000 +1612616 5685152 1613592 5686944 1613632 5687000 1612640 5685184 +1613592 5686944 1613600 5686968 1613632 5687000 1612640 5685184 +1612616 5685152 1613592 5686944 1612640 5685184 1663776 5646144 +1613632 5687000 1615352 5689088 1615392 5689120 1612640 5685184 +1613632 5687000 1615392 5689120 1612640 5685184 1613592 5686944 +1612616 5685152 1612640 5685184 1663776 5646144 1657088 5639464 +1612616 5685152 1613536 5686904 1613592 5686944 1612640 5685184 +1612616 5685152 1613536 5686904 1612640 5685184 1663776 5646144 +1613592 5686944 1613632 5687000 1612640 5685184 1613536 5686904 +1612616 5685152 1613056 5686432 1613536 5686904 1612640 5685184 +1612616 5685152 1612336 5686456 1613056 5686432 1612640 5685184 +1612336 5686456 1612448 5686536 1613056 5686432 1612640 5685184 +1612616 5685152 1612408 5685072 1612336 5686456 1612640 5685184 +1612408 5685072 1612272 5686464 1612336 5686456 1612640 5685184 +1612336 5686456 1613056 5686432 1612640 5685184 1612408 5685072 +1612616 5685152 1612576 5685128 1612408 5685072 1612640 5685184 +1612576 5685128 1612496 5685080 1612408 5685072 1612640 5685184 +1612408 5685072 1612336 5686456 1612640 5685184 1612576 5685128 +1612616 5685152 1612576 5685128 1612640 5685184 1663776 5646144 +1613056 5686432 1613488 5686880 1613536 5686904 1612640 5685184 +1613536 5686904 1613592 5686944 1612640 5685184 1613056 5686432 +1613056 5686432 1613536 5686904 1612640 5685184 1612336 5686456 +1612336 5686456 1612448 5686536 1613056 5686432 1612656 5685232 +1612640 5685184 1612408 5685072 1612336 5686456 1612656 5685232 +1612408 5685072 1612272 5686464 1612336 5686456 1612656 5685232 +1612408 5685072 1612272 5686464 1612656 5685232 1612640 5685184 +1612640 5685184 1612576 5685128 1612408 5685072 1612656 5685232 +1612576 5685128 1612496 5685080 1612408 5685072 1612656 5685232 +1612408 5685072 1612272 5686464 1612656 5685232 1612576 5685128 +1612640 5685184 1612616 5685152 1612576 5685128 1612656 5685232 +1613056 5686432 1613488 5686880 1613536 5686904 1612656 5685232 +1612336 5686456 1613056 5686432 1612656 5685232 1612272 5686464 +1612640 5685184 1612656 5685232 1613536 5686904 1613592 5686944 +1612640 5685184 1612656 5685232 1613592 5686944 1613632 5687000 +1612656 5685232 1613056 5686432 1613536 5686904 1613592 5686944 +1612408 5685072 1612216 5686496 1612272 5686464 1612656 5685232 +1612640 5685184 1612576 5685128 1612656 5685232 1613592 5686944 +1613056 5686432 1612664 5685288 1612336 5686456 1612448 5686536 +1612656 5685232 1612664 5685288 1613056 5686432 1613536 5686904 +1613056 5686432 1613488 5686880 1613536 5686904 1612664 5685288 +1612656 5685232 1612336 5686456 1612664 5685288 1613536 5686904 +1612664 5685288 1612336 5686456 1613056 5686432 1613536 5686904 +1612336 5686456 1612664 5685288 1612656 5685232 1612272 5686464 +1612656 5685232 1612408 5685072 1612272 5686464 1612664 5685288 +1612656 5685232 1612576 5685128 1612408 5685072 1612664 5685288 +1612576 5685128 1612496 5685080 1612408 5685072 1612664 5685288 +1612408 5685072 1612272 5686464 1612664 5685288 1612576 5685128 +1612656 5685232 1612640 5685184 1612576 5685128 1612664 5685288 +1612336 5686456 1613056 5686432 1612664 5685288 1612272 5686464 +1612664 5685288 1613536 5686904 1612656 5685232 1612576 5685128 +1612272 5686464 1612336 5686456 1612664 5685288 1612408 5685072 +1612656 5685232 1612664 5685288 1613536 5686904 1613592 5686944 +1612664 5685288 1613056 5686432 1613536 5686904 1613592 5686944 +1612656 5685232 1612576 5685128 1612664 5685288 1613592 5686944 +1612656 5685232 1612664 5685288 1613592 5686944 1612640 5685184 +1612408 5685072 1612216 5686496 1612272 5686464 1612664 5685288 +1613056 5686432 1612656 5685384 1612336 5686456 1612448 5686536 +1612336 5686456 1612656 5685384 1612664 5685288 1612272 5686464 +1612336 5686456 1613056 5686432 1612656 5685384 1612272 5686464 +1612656 5685384 1613056 5686432 1612664 5685288 1612272 5686464 +1612664 5685288 1612656 5685384 1613056 5686432 1613536 5686904 +1612664 5685288 1612408 5685072 1612272 5686464 1612656 5685384 +1612664 5685288 1612576 5685128 1612408 5685072 1612656 5685384 +1612576 5685128 1612496 5685080 1612408 5685072 1612656 5685384 +1612664 5685288 1612656 5685232 1612576 5685128 1612656 5685384 +1612664 5685288 1612576 5685128 1612656 5685384 1613056 5686432 +1612272 5686464 1612336 5686456 1612656 5685384 1612408 5685072 +1612408 5685072 1612272 5686464 1612656 5685384 1612576 5685128 +1612408 5685072 1612216 5686496 1612272 5686464 1612656 5685384 +1613056 5686432 1612664 5685488 1612336 5686456 1612448 5686536 +1612336 5686456 1612664 5685488 1612656 5685384 1612272 5686464 +1612664 5685488 1613056 5686432 1612656 5685384 1612272 5686464 +1612656 5685384 1612408 5685072 1612272 5686464 1612664 5685488 +1612656 5685384 1612408 5685072 1612664 5685488 1613056 5686432 +1612272 5686464 1612336 5686456 1612664 5685488 1612408 5685072 +1612656 5685384 1612664 5685488 1613056 5686432 1612664 5685288 +1612656 5685384 1612408 5685072 1612664 5685488 1612664 5685288 +1612664 5685488 1612336 5686456 1613056 5686432 1612664 5685288 +1613056 5686432 1613536 5686904 1612664 5685288 1612664 5685488 +1612336 5686456 1613056 5686432 1612664 5685488 1612272 5686464 +1612656 5685384 1612576 5685128 1612408 5685072 1612664 5685488 +1612408 5685072 1612216 5686496 1612272 5686464 1612664 5685488 +1613056 5686432 1612648 5685552 1612336 5686456 1612448 5686536 +1612664 5685488 1612648 5685552 1613056 5686432 1612664 5685288 +1612336 5686456 1612648 5685552 1612664 5685488 1612272 5686464 +1612664 5685488 1612408 5685072 1612272 5686464 1612648 5685552 +1612664 5685488 1612656 5685384 1612408 5685072 1612648 5685552 +1612408 5685072 1612272 5686464 1612648 5685552 1612656 5685384 +1612648 5685552 1613056 5686432 1612664 5685488 1612656 5685384 +1612272 5686464 1612336 5686456 1612648 5685552 1612408 5685072 +1612656 5685384 1612576 5685128 1612408 5685072 1612648 5685552 +1612336 5686456 1613056 5686432 1612648 5685552 1612272 5686464 +1612408 5685072 1612216 5686496 1612272 5686464 1612648 5685552 +1612408 5685072 1612216 5686496 1612648 5685552 1612656 5685384 +1612272 5686464 1612336 5686456 1612648 5685552 1612216 5686496 +1612408 5685072 1611224 5687456 1612216 5686496 1612648 5685552 +1612408 5685072 1612552 5685552 1612648 5685552 1612656 5685384 +1612408 5685072 1612216 5686496 1612552 5685552 1612656 5685384 +1612648 5685552 1612664 5685488 1612656 5685384 1612552 5685552 +1612656 5685384 1612408 5685072 1612552 5685552 1612664 5685488 +1612408 5685072 1612552 5685552 1612656 5685384 1612576 5685128 +1612552 5685552 1612216 5686496 1612648 5685552 1612664 5685488 +1612648 5685552 1612552 5685552 1612216 5686496 1612272 5686464 +1612648 5685552 1612552 5685552 1612272 5686464 1612336 5686456 +1612648 5685552 1612664 5685488 1612552 5685552 1612336 5686456 +1612648 5685552 1612552 5685552 1612336 5686456 1613056 5686432 +1612552 5685552 1612408 5685072 1612216 5686496 1612272 5686464 +1612552 5685552 1612216 5686496 1612272 5686464 1612336 5686456 +1612216 5686496 1612552 5685552 1612408 5685072 1611224 5687456 +1612408 5685072 1612480 5685480 1612552 5685552 1612656 5685384 +1612552 5685552 1612664 5685488 1612656 5685384 1612480 5685480 +1612480 5685480 1612216 5686496 1612552 5685552 1612664 5685488 +1612656 5685384 1612408 5685072 1612480 5685480 1612664 5685488 +1612408 5685072 1612216 5686496 1612480 5685480 1612656 5685384 +1612552 5685552 1612648 5685552 1612664 5685488 1612480 5685480 +1612408 5685072 1612480 5685480 1612656 5685384 1612576 5685128 +1612408 5685072 1612480 5685480 1612576 5685128 1612496 5685080 +1612656 5685384 1612664 5685288 1612576 5685128 1612480 5685480 +1612664 5685288 1612656 5685232 1612576 5685128 1612480 5685480 +1612480 5685480 1612664 5685488 1612656 5685384 1612664 5685288 +1612408 5685072 1612216 5686496 1612480 5685480 1612576 5685128 +1612576 5685128 1612408 5685072 1612480 5685480 1612664 5685288 +1612552 5685552 1612480 5685480 1612216 5686496 1612272 5686464 +1612552 5685552 1612664 5685488 1612480 5685480 1612272 5686464 +1612480 5685480 1612408 5685072 1612216 5686496 1612272 5686464 +1612552 5685552 1612480 5685480 1612272 5686464 1612336 5686456 +1612216 5686496 1612480 5685480 1612408 5685072 1611224 5687456 +1612480 5685480 1612464 5685456 1612216 5686496 1612272 5686464 +1612408 5685072 1612464 5685456 1612480 5685480 1612576 5685128 +1612408 5685072 1612464 5685456 1612576 5685128 1612496 5685080 +1612464 5685456 1612216 5686496 1612480 5685480 1612576 5685128 +1612464 5685456 1612480 5685480 1612576 5685128 1612496 5685080 +1612480 5685480 1612664 5685288 1612576 5685128 1612464 5685456 +1612480 5685480 1612656 5685384 1612664 5685288 1612464 5685456 +1612664 5685288 1612656 5685232 1612576 5685128 1612464 5685456 +1612656 5685232 1612640 5685184 1612576 5685128 1612464 5685456 +1612480 5685480 1612664 5685488 1612656 5685384 1612464 5685456 +1612480 5685480 1612656 5685384 1612464 5685456 1612216 5686496 +1612576 5685128 1612496 5685080 1612464 5685456 1612656 5685232 +1612664 5685288 1612656 5685232 1612464 5685456 1612656 5685384 +1612216 5686496 1612464 5685456 1612408 5685072 1611224 5687456 +1612408 5685072 1612216 5686496 1612464 5685456 1612496 5685080 +1612464 5685456 1612448 5685352 1612216 5686496 1612480 5685480 +1612216 5686496 1612448 5685352 1612408 5685072 1611224 5687456 +1612408 5685072 1612448 5685352 1612464 5685456 1612496 5685080 +1612464 5685456 1612576 5685128 1612496 5685080 1612448 5685352 +1612464 5685456 1612656 5685232 1612576 5685128 1612448 5685352 +1612576 5685128 1612496 5685080 1612448 5685352 1612656 5685232 +1612464 5685456 1612664 5685288 1612656 5685232 1612448 5685352 +1612656 5685232 1612640 5685184 1612576 5685128 1612448 5685352 +1612656 5685232 1612576 5685128 1612448 5685352 1612664 5685288 +1612464 5685456 1612656 5685384 1612664 5685288 1612448 5685352 +1612464 5685456 1612480 5685480 1612656 5685384 1612448 5685352 +1612664 5685288 1612656 5685232 1612448 5685352 1612656 5685384 +1612408 5685072 1612216 5686496 1612448 5685352 1612496 5685080 +1612448 5685352 1612216 5686496 1612464 5685456 1612656 5685384 +1612496 5685080 1612408 5685072 1612448 5685352 1612576 5685128 +1612448 5685352 1612448 5685304 1612408 5685072 1612216 5686496 +1612496 5685080 1612448 5685304 1612448 5685352 1612576 5685128 +1612448 5685352 1612656 5685232 1612576 5685128 1612448 5685304 +1612656 5685232 1612640 5685184 1612576 5685128 1612448 5685304 +1612656 5685232 1612640 5685184 1612448 5685304 1612448 5685352 +1612640 5685184 1612616 5685152 1612576 5685128 1612448 5685304 +1612448 5685352 1612664 5685288 1612656 5685232 1612448 5685304 +1612656 5685232 1612640 5685184 1612448 5685304 1612664 5685288 +1612448 5685352 1612656 5685384 1612664 5685288 1612448 5685304 +1612664 5685288 1612656 5685232 1612448 5685304 1612656 5685384 +1612448 5685352 1612464 5685456 1612656 5685384 1612448 5685304 +1612448 5685304 1612408 5685072 1612448 5685352 1612656 5685384 +1612496 5685080 1612408 5685072 1612448 5685304 1612576 5685128 +1612576 5685128 1612496 5685080 1612448 5685304 1612640 5685184 +1612216 5686496 1612432 5685256 1612408 5685072 1611224 5687456 +1612216 5686496 1612432 5685256 1611224 5687456 1611288 5687432 +1612408 5685072 1601592 5681216 1611224 5687456 1612432 5685256 +1612432 5685256 1612448 5685352 1612408 5685072 1611224 5687456 +1612408 5685072 1612432 5685256 1612448 5685352 1612448 5685304 +1612408 5685072 1611224 5687456 1612432 5685256 1612448 5685304 +1612408 5685072 1612432 5685256 1612448 5685304 1612496 5685080 +1612408 5685072 1611224 5687456 1612432 5685256 1612496 5685080 +1612432 5685256 1612448 5685352 1612448 5685304 1612496 5685080 +1612432 5685256 1612216 5686496 1612448 5685352 1612448 5685304 +1612448 5685304 1612576 5685128 1612496 5685080 1612432 5685256 +1612496 5685080 1612408 5685072 1612432 5685256 1612576 5685128 +1612448 5685304 1612576 5685128 1612432 5685256 1612448 5685352 +1612216 5686496 1612448 5685352 1612432 5685256 1611224 5687456 +1612448 5685304 1612640 5685184 1612576 5685128 1612432 5685256 +1612448 5685304 1612656 5685232 1612640 5685184 1612432 5685256 +1612448 5685304 1612664 5685288 1612656 5685232 1612432 5685256 +1612640 5685184 1612616 5685152 1612576 5685128 1612432 5685256 +1612448 5685304 1612656 5685232 1612432 5685256 1612448 5685352 +1612576 5685128 1612496 5685080 1612432 5685256 1612616 5685152 +1612640 5685184 1612616 5685152 1612432 5685256 1612656 5685232 +1612448 5685352 1612432 5685256 1612216 5686496 1612464 5685456 +1611224 5687456 1612392 5685168 1612408 5685072 1601592 5681216 +1612432 5685256 1612392 5685168 1611224 5687456 1612216 5686496 +1612392 5685168 1612408 5685072 1611224 5687456 1612216 5686496 +1611224 5687456 1611288 5687432 1612216 5686496 1612392 5685168 +1612408 5685072 1612392 5685168 1612432 5685256 1612496 5685080 +1612408 5685072 1611224 5687456 1612392 5685168 1612496 5685080 +1612432 5685256 1612576 5685128 1612496 5685080 1612392 5685168 +1612432 5685256 1612496 5685080 1612392 5685168 1612216 5686496 +1612432 5685256 1612392 5685168 1612216 5686496 1612448 5685352 +1612392 5685168 1611224 5687456 1612216 5686496 1612448 5685352 +1612432 5685256 1612496 5685080 1612392 5685168 1612448 5685352 +1612432 5685256 1612392 5685168 1612448 5685352 1612448 5685304 +1612216 5686496 1612464 5685456 1612448 5685352 1612392 5685168 +1612216 5686496 1612480 5685480 1612464 5685456 1612392 5685168 +1612448 5685352 1612432 5685256 1612392 5685168 1612464 5685456 +1612216 5686496 1612464 5685456 1612392 5685168 1611224 5687456 +1612392 5685168 1612384 5685136 1611224 5687456 1612216 5686496 +1612392 5685168 1612408 5685072 1612384 5685136 1612216 5686496 +1612384 5685136 1612408 5685072 1611224 5687456 1612216 5686496 +1612408 5685072 1612384 5685136 1612392 5685168 1612496 5685080 +1612384 5685136 1612216 5686496 1612392 5685168 1612496 5685080 +1612408 5685072 1611224 5687456 1612384 5685136 1612496 5685080 +1611224 5687456 1611288 5687432 1612216 5686496 1612384 5685136 +1611224 5687456 1612384 5685136 1612408 5685072 1601592 5681216 +1612408 5685072 1601624 5681136 1601592 5681216 1612384 5685136 +1611224 5687456 1612216 5686496 1612384 5685136 1601592 5681216 +1612384 5685136 1612496 5685080 1612408 5685072 1601624 5681136 +1612408 5685072 1601592 5681064 1601624 5681136 1612384 5685136 +1601592 5681216 1611224 5687456 1612384 5685136 1601624 5681136 +1612392 5685168 1612384 5685136 1612216 5686496 1612464 5685456 +1612392 5685168 1612432 5685256 1612496 5685080 1612384 5685136 +1611224 5687456 1612384 5685136 1601592 5681216 1601128 5681664 +1612384 5685136 1612376 5685128 1601624 5681136 1601592 5681216 +1612408 5685072 1612376 5685128 1612384 5685136 1612496 5685080 +1612384 5685136 1612408 5685072 1612376 5685128 1601592 5681216 +1612376 5685128 1612408 5685072 1601624 5681136 1601592 5681216 +1601624 5681136 1612376 5685128 1612408 5685072 1601592 5681064 +1612384 5685136 1612376 5685128 1601592 5681216 1611224 5687456 +1612376 5685128 1601624 5681136 1601592 5681216 1611224 5687456 +1612384 5685136 1612376 5685128 1611224 5687456 1612216 5686496 +1612384 5685136 1612408 5685072 1612376 5685128 1612216 5686496 +1612384 5685136 1612376 5685128 1612216 5686496 1612392 5685168 +1612384 5685136 1612408 5685072 1612376 5685128 1612392 5685168 +1612376 5685128 1611224 5687456 1612216 5686496 1612392 5685168 +1611224 5687456 1611288 5687432 1612216 5686496 1612376 5685128 +1612376 5685128 1601592 5681216 1611224 5687456 1612216 5686496 +1612216 5686496 1612464 5685456 1612392 5685168 1612376 5685128 +1612216 5686496 1612480 5685480 1612464 5685456 1612376 5685128 +1612464 5685456 1612448 5685352 1612392 5685168 1612376 5685128 +1612216 5686496 1612464 5685456 1612376 5685128 1611224 5687456 +1612392 5685168 1612384 5685136 1612376 5685128 1612464 5685456 +1601592 5681216 1601128 5681664 1611224 5687456 1612376 5685128 +1657056 5639384 1610432 5683584 1612496 5685080 1657088 5639464 +1657056 5639384 1601560 5681032 1610432 5683584 1657088 5639464 +1610432 5683584 1601560 5681032 1612496 5685080 1657088 5639464 +1612496 5685080 1610432 5683584 1601560 5681032 1612408 5685072 +1610432 5683584 1657056 5639384 1601560 5681032 1612408 5685072 +1612496 5685080 1657088 5639464 1610432 5683584 1612408 5685072 +1601560 5681032 1601592 5681064 1612408 5685072 1610432 5683584 +1601592 5681064 1601624 5681136 1612408 5685072 1610432 5683584 +1601560 5681032 1601592 5681064 1610432 5683584 1657056 5639384 +1601592 5681064 1601624 5681136 1610432 5683584 1601560 5681032 +1612408 5685072 1612496 5685080 1610432 5683584 1601624 5681136 +1601560 5681032 1610432 5683584 1657056 5639384 1601464 5680984 +1601560 5681032 1601592 5681064 1610432 5683584 1601464 5680984 +1610432 5683584 1657088 5639464 1657056 5639384 1601464 5680984 +1657056 5639384 1599875 5599875 1601464 5680984 1610432 5683584 +1612496 5685080 1612576 5685128 1657088 5639464 1610432 5683584 +1612576 5685128 1612616 5685152 1657088 5639464 1610432 5683584 +1657088 5639464 1657056 5639384 1610432 5683584 1612616 5685152 +1612496 5685080 1612576 5685128 1610432 5683584 1612408 5685072 +1612576 5685128 1612616 5685152 1610432 5683584 1612496 5685080 +1612616 5685152 1663776 5646144 1657088 5639464 1610432 5683584 +1601624 5681136 1612376 5685128 1612408 5685072 1610432 5683584 +1601624 5681136 1612376 5685128 1610432 5683584 1601592 5681064 +1612408 5685072 1612496 5685080 1610432 5683584 1612376 5685128 +1601624 5681136 1601592 5681216 1612376 5685128 1610432 5683584 +1601624 5681136 1601592 5681216 1610432 5683584 1601592 5681064 +1601592 5681216 1611224 5687456 1612376 5685128 1610432 5683584 +1601592 5681216 1611224 5687456 1610432 5683584 1601624 5681136 +1612376 5685128 1612408 5685072 1610432 5683584 1611224 5687456 +1611224 5687456 1612216 5686496 1612376 5685128 1610432 5683584 +1611224 5687456 1612216 5686496 1610432 5683584 1601592 5681216 +1612216 5686496 1612464 5685456 1612376 5685128 1610432 5683584 +1612376 5685128 1612408 5685072 1610432 5683584 1612216 5686496 +1611224 5687456 1611288 5687432 1612216 5686496 1610432 5683584 +1601592 5681216 1601128 5681664 1611224 5687456 1610432 5683584 +1601128 5681664 1601088 5681704 1611224 5687456 1610432 5683584 +1601088 5681704 1611264 5689408 1611224 5687456 1610432 5683584 +1611224 5687456 1612216 5686496 1610432 5683584 1601088 5681704 +1601592 5681216 1601160 5681616 1601128 5681664 1610432 5683584 +1601592 5681216 1601128 5681664 1610432 5683584 1601624 5681136 +1601128 5681664 1601088 5681704 1610432 5683584 1601592 5681216 +1612616 5685152 1610520 5683528 1610432 5683584 1612576 5685128 +1610432 5683584 1610520 5683528 1657088 5639464 1657056 5639384 +1610432 5683584 1610520 5683528 1657056 5639384 1601464 5680984 +1610520 5683528 1657088 5639464 1657056 5639384 1601464 5680984 +1657056 5639384 1599875 5599875 1601464 5680984 1610520 5683528 +1610520 5683528 1601464 5680984 1610432 5683584 1612576 5685128 +1610520 5683528 1612616 5685152 1657088 5639464 1657056 5639384 +1612616 5685152 1657088 5639464 1610520 5683528 1612576 5685128 +1610432 5683584 1610520 5683528 1601464 5680984 1601560 5681032 +1610432 5683584 1610520 5683528 1601560 5681032 1601592 5681064 +1610520 5683528 1657056 5639384 1601464 5680984 1601560 5681032 +1610432 5683584 1612576 5685128 1610520 5683528 1601592 5681064 +1610432 5683584 1610520 5683528 1601592 5681064 1601624 5681136 +1610520 5683528 1601464 5680984 1601560 5681032 1601592 5681064 +1610432 5683584 1612496 5685080 1612576 5685128 1610520 5683528 +1612576 5685128 1612616 5685152 1610520 5683528 1612496 5685080 +1610432 5683584 1612408 5685072 1612496 5685080 1610520 5683528 +1610432 5683584 1612408 5685072 1610520 5683528 1601592 5681064 +1610432 5683584 1612376 5685128 1612408 5685072 1610520 5683528 +1612408 5685072 1612496 5685080 1610520 5683528 1612376 5685128 +1610432 5683584 1612376 5685128 1610520 5683528 1601592 5681064 +1612496 5685080 1612576 5685128 1610520 5683528 1612408 5685072 +1657088 5639464 1610520 5683528 1612616 5685152 1663776 5646144 +1610432 5683584 1612216 5686496 1612376 5685128 1610520 5683528 +1610520 5683528 1610616 5683496 1657088 5639464 1657056 5639384 +1610520 5683528 1610616 5683496 1657056 5639384 1601464 5680984 +1610520 5683528 1610616 5683496 1601464 5680984 1601560 5681032 +1610616 5683496 1657056 5639384 1601464 5680984 1601560 5681032 +1610616 5683496 1657088 5639464 1657056 5639384 1601464 5680984 +1657056 5639384 1599875 5599875 1601464 5680984 1610616 5683496 +1610520 5683528 1612616 5685152 1610616 5683496 1601560 5681032 +1612616 5685152 1610616 5683496 1610520 5683528 1612576 5685128 +1610520 5683528 1612496 5685080 1612576 5685128 1610616 5683496 +1612616 5685152 1657088 5639464 1610616 5683496 1612576 5685128 +1610616 5683496 1601560 5681032 1610520 5683528 1612496 5685080 +1612576 5685128 1612616 5685152 1610616 5683496 1612496 5685080 +1610616 5683496 1612616 5685152 1657088 5639464 1657056 5639384 +1610520 5683528 1610616 5683496 1601560 5681032 1601592 5681064 +1610520 5683528 1610616 5683496 1601592 5681064 1610432 5683584 +1610616 5683496 1601464 5680984 1601560 5681032 1601592 5681064 +1610520 5683528 1612496 5685080 1610616 5683496 1601592 5681064 +1610520 5683528 1612408 5685072 1612496 5685080 1610616 5683496 +1612496 5685080 1612576 5685128 1610616 5683496 1612408 5685072 +1610520 5683528 1612376 5685128 1612408 5685072 1610616 5683496 +1610520 5683528 1610432 5683584 1612376 5685128 1610616 5683496 +1612376 5685128 1612408 5685072 1610616 5683496 1610432 5683584 +1610520 5683528 1610432 5683584 1610616 5683496 1601592 5681064 +1612408 5685072 1612496 5685080 1610616 5683496 1612376 5685128 +1657088 5639464 1610616 5683496 1612616 5685152 1663776 5646144 +1610432 5683584 1612216 5686496 1612376 5685128 1610616 5683496 +1612616 5685152 1610648 5683504 1610616 5683496 1612576 5685128 +1610648 5683504 1657088 5639464 1610616 5683496 1612576 5685128 +1610616 5683496 1612496 5685080 1612576 5685128 1610648 5683504 +1610616 5683496 1612408 5685072 1612496 5685080 1610648 5683504 +1612576 5685128 1612616 5685152 1610648 5683504 1612496 5685080 +1610616 5683496 1612408 5685072 1610648 5683504 1657088 5639464 +1612496 5685080 1612576 5685128 1610648 5683504 1612408 5685072 +1610616 5683496 1610648 5683504 1657088 5639464 1657056 5639384 +1610616 5683496 1610648 5683504 1657056 5639384 1601464 5680984 +1610616 5683496 1612408 5685072 1610648 5683504 1657056 5639384 +1610616 5683496 1612376 5685128 1612408 5685072 1610648 5683504 +1612408 5685072 1612496 5685080 1610648 5683504 1612376 5685128 +1610616 5683496 1612376 5685128 1610648 5683504 1657056 5639384 +1610616 5683496 1610432 5683584 1612376 5685128 1610648 5683504 +1610616 5683496 1610432 5683584 1610648 5683504 1657056 5639384 +1610616 5683496 1610520 5683528 1610432 5683584 1610648 5683504 +1610616 5683496 1610520 5683528 1610648 5683504 1657056 5639384 +1610432 5683584 1612376 5685128 1610648 5683504 1610520 5683528 +1612376 5685128 1612408 5685072 1610648 5683504 1610432 5683584 +1657088 5639464 1610648 5683504 1612616 5685152 1663776 5646144 +1610432 5683584 1612216 5686496 1612376 5685128 1610648 5683504 +1610648 5683504 1612616 5685152 1657088 5639464 1657056 5639384 +1612616 5685152 1657088 5639464 1610648 5683504 1612576 5685128 +1657088 5639464 1610736 5683552 1612616 5685152 1663776 5646144 +1610648 5683504 1610736 5683552 1657088 5639464 1657056 5639384 +1612616 5685152 1610736 5683552 1610648 5683504 1612576 5685128 +1610648 5683504 1612496 5685080 1612576 5685128 1610736 5683552 +1610648 5683504 1612408 5685072 1612496 5685080 1610736 5683552 +1610648 5683504 1612376 5685128 1612408 5685072 1610736 5683552 +1612496 5685080 1612576 5685128 1610736 5683552 1612408 5685072 +1612408 5685072 1612496 5685080 1610736 5683552 1612376 5685128 +1610648 5683504 1610432 5683584 1612376 5685128 1610736 5683552 +1612376 5685128 1612408 5685072 1610736 5683552 1610432 5683584 +1610648 5683504 1610520 5683528 1610432 5683584 1610736 5683552 +1610648 5683504 1610616 5683496 1610520 5683528 1610736 5683552 +1610432 5683584 1612376 5685128 1610736 5683552 1610520 5683528 +1610432 5683584 1612216 5686496 1612376 5685128 1610736 5683552 +1610736 5683552 1657088 5639464 1610648 5683504 1610520 5683528 +1612576 5685128 1612616 5685152 1610736 5683552 1612496 5685080 +1612616 5685152 1657088 5639464 1610736 5683552 1612576 5685128 +1657088 5639464 1610824 5683608 1612616 5685152 1663776 5646144 +1610736 5683552 1610824 5683608 1657088 5639464 1610648 5683504 +1612616 5685152 1610824 5683608 1610736 5683552 1612576 5685128 +1612616 5685152 1657088 5639464 1610824 5683608 1612576 5685128 +1610824 5683608 1657088 5639464 1610736 5683552 1612576 5685128 +1610736 5683552 1612496 5685080 1612576 5685128 1610824 5683608 +1612576 5685128 1612616 5685152 1610824 5683608 1612496 5685080 +1610736 5683552 1612408 5685072 1612496 5685080 1610824 5683608 +1610736 5683552 1612408 5685072 1610824 5683608 1657088 5639464 +1610736 5683552 1612376 5685128 1612408 5685072 1610824 5683608 +1610736 5683552 1610432 5683584 1612376 5685128 1610824 5683608 +1612408 5685072 1612496 5685080 1610824 5683608 1612376 5685128 +1610736 5683552 1610432 5683584 1610824 5683608 1657088 5639464 +1612376 5685128 1612408 5685072 1610824 5683608 1610432 5683584 +1610736 5683552 1610520 5683528 1610432 5683584 1610824 5683608 +1610432 5683584 1612216 5686496 1612376 5685128 1610824 5683608 +1612496 5685080 1612576 5685128 1610824 5683608 1612408 5685072 +1612616 5685152 1610912 5683672 1610824 5683608 1612576 5685128 +1610824 5683608 1612496 5685080 1612576 5685128 1610912 5683672 +1612576 5685128 1612616 5685152 1610912 5683672 1612496 5685080 +1610912 5683672 1657088 5639464 1610824 5683608 1612496 5685080 +1610824 5683608 1610912 5683672 1657088 5639464 1610736 5683552 +1612616 5685152 1657088 5639464 1610912 5683672 1612576 5685128 +1657088 5639464 1610912 5683672 1612616 5685152 1663776 5646144 +1610824 5683608 1612408 5685072 1612496 5685080 1610912 5683672 +1612496 5685080 1612576 5685128 1610912 5683672 1612408 5685072 +1610824 5683608 1612408 5685072 1610912 5683672 1657088 5639464 +1610824 5683608 1612376 5685128 1612408 5685072 1610912 5683672 +1610824 5683608 1612376 5685128 1610912 5683672 1657088 5639464 +1610824 5683608 1610432 5683584 1612376 5685128 1610912 5683672 +1610824 5683608 1610736 5683552 1610432 5683584 1610912 5683672 +1610824 5683608 1610432 5683584 1610912 5683672 1657088 5639464 +1612376 5685128 1612408 5685072 1610912 5683672 1610432 5683584 +1610432 5683584 1612216 5686496 1612376 5685128 1610912 5683672 +1612376 5685128 1612408 5685072 1610912 5683672 1612216 5686496 +1612216 5686496 1612464 5685456 1612376 5685128 1610912 5683672 +1610432 5683584 1612216 5686496 1610912 5683672 1610824 5683608 +1610432 5683584 1611224 5687456 1612216 5686496 1610912 5683672 +1610432 5683584 1601088 5681704 1611224 5687456 1610912 5683672 +1610432 5683584 1611224 5687456 1610912 5683672 1610824 5683608 +1612216 5686496 1612376 5685128 1610912 5683672 1611224 5687456 +1611224 5687456 1611288 5687432 1612216 5686496 1610912 5683672 +1612408 5685072 1612496 5685080 1610912 5683672 1612376 5685128 +1610912 5683672 1610944 5683704 1612376 5685128 1612408 5685072 +1610944 5683704 1612216 5686496 1612376 5685128 1612408 5685072 +1612376 5685128 1610944 5683704 1612216 5686496 1612464 5685456 +1610912 5683672 1612216 5686496 1610944 5683704 1612408 5685072 +1612216 5686496 1610944 5683704 1610912 5683672 1611224 5687456 +1612216 5686496 1612376 5685128 1610944 5683704 1611224 5687456 +1610944 5683704 1612408 5685072 1610912 5683672 1611224 5687456 +1612216 5686496 1610944 5683704 1611224 5687456 1611288 5687432 +1610912 5683672 1610432 5683584 1611224 5687456 1610944 5683704 +1610432 5683584 1601088 5681704 1611224 5687456 1610944 5683704 +1610912 5683672 1610824 5683608 1610432 5683584 1610944 5683704 +1610912 5683672 1610432 5683584 1610944 5683704 1612408 5685072 +1611224 5687456 1612216 5686496 1610944 5683704 1610432 5683584 +1610912 5683672 1610944 5683704 1612408 5685072 1612496 5685080 +1610912 5683672 1610944 5683704 1612496 5685080 1612576 5685128 +1610912 5683672 1610944 5683704 1612576 5685128 1612616 5685152 +1610944 5683704 1612496 5685080 1612576 5685128 1612616 5685152 +1610944 5683704 1612376 5685128 1612408 5685072 1612496 5685080 +1610912 5683672 1610432 5683584 1610944 5683704 1612616 5685152 +1610912 5683672 1610944 5683704 1612616 5685152 1657088 5639464 +1610944 5683704 1612408 5685072 1612496 5685080 1612576 5685128 +1612616 5685152 1610992 5683744 1610944 5683704 1612576 5685128 +1612616 5685152 1610912 5683672 1610992 5683744 1612576 5685128 +1610944 5683704 1612496 5685080 1612576 5685128 1610992 5683744 +1612576 5685128 1612616 5685152 1610992 5683744 1612496 5685080 +1610992 5683744 1610912 5683672 1610944 5683704 1612496 5685080 +1610912 5683672 1610992 5683744 1612616 5685152 1657088 5639464 +1610912 5683672 1610944 5683704 1610992 5683744 1657088 5639464 +1610992 5683744 1612576 5685128 1612616 5685152 1657088 5639464 +1610912 5683672 1610992 5683744 1657088 5639464 1610824 5683608 +1612616 5685152 1663776 5646144 1657088 5639464 1610992 5683744 +1610944 5683704 1612408 5685072 1612496 5685080 1610992 5683744 +1612496 5685080 1612576 5685128 1610992 5683744 1612408 5685072 +1610944 5683704 1612376 5685128 1612408 5685072 1610992 5683744 +1610944 5683704 1612216 5686496 1612376 5685128 1610992 5683744 +1612376 5685128 1612408 5685072 1610992 5683744 1612216 5686496 +1610944 5683704 1612216 5686496 1610992 5683744 1610912 5683672 +1610944 5683704 1611224 5687456 1612216 5686496 1610992 5683744 +1612216 5686496 1612376 5685128 1610992 5683744 1611224 5687456 +1610944 5683704 1611224 5687456 1610992 5683744 1610912 5683672 +1612216 5686496 1612464 5685456 1612376 5685128 1610992 5683744 +1610944 5683704 1610432 5683584 1611224 5687456 1610992 5683744 +1611224 5687456 1612216 5686496 1610992 5683744 1610432 5683584 +1610944 5683704 1610432 5683584 1610992 5683744 1610912 5683672 +1610432 5683584 1601088 5681704 1611224 5687456 1610992 5683744 +1611224 5687456 1611288 5687432 1612216 5686496 1610992 5683744 +1610944 5683704 1610912 5683672 1610432 5683584 1610992 5683744 +1612408 5685072 1612496 5685080 1610992 5683744 1612376 5685128 +1610992 5683744 1611032 5683792 1612376 5685128 1612408 5685072 +1610992 5683744 1612216 5686496 1611032 5683792 1612408 5685072 +1611032 5683792 1612216 5686496 1612376 5685128 1612408 5685072 +1612216 5686496 1611032 5683792 1610992 5683744 1611224 5687456 +1612216 5686496 1612376 5685128 1611032 5683792 1611224 5687456 +1610992 5683744 1610432 5683584 1611224 5687456 1611032 5683792 +1611032 5683792 1612408 5685072 1610992 5683744 1610432 5683584 +1611224 5687456 1612216 5686496 1611032 5683792 1610432 5683584 +1610432 5683584 1601088 5681704 1611224 5687456 1611032 5683792 +1612376 5685128 1611032 5683792 1612216 5686496 1612464 5685456 +1610992 5683744 1610944 5683704 1610432 5683584 1611032 5683792 +1610432 5683584 1611224 5687456 1611032 5683792 1610944 5683704 +1610992 5683744 1610944 5683704 1611032 5683792 1612408 5685072 +1612216 5686496 1611032 5683792 1611224 5687456 1611288 5687432 +1610944 5683704 1610912 5683672 1610432 5683584 1611032 5683792 +1610992 5683744 1611032 5683792 1612408 5685072 1612496 5685080 +1610992 5683744 1611032 5683792 1612496 5685080 1612576 5685128 +1610992 5683744 1611032 5683792 1612576 5685128 1612616 5685152 +1610992 5683744 1611032 5683792 1612616 5685152 1657088 5639464 +1611032 5683792 1612496 5685080 1612576 5685128 1612616 5685152 +1610992 5683744 1610944 5683704 1611032 5683792 1612616 5685152 +1611032 5683792 1612376 5685128 1612408 5685072 1612496 5685080 +1611032 5683792 1612408 5685072 1612496 5685080 1612576 5685128 +1610992 5683744 1611080 5683832 1612616 5685152 1657088 5639464 +1612616 5685152 1611080 5683832 1611032 5683792 1612576 5685128 +1611080 5683832 1610992 5683744 1611032 5683792 1612576 5685128 +1611032 5683792 1612496 5685080 1612576 5685128 1611080 5683832 +1611032 5683792 1612496 5685080 1611080 5683832 1610992 5683744 +1612576 5685128 1612616 5685152 1611080 5683832 1612496 5685080 +1612616 5685152 1610992 5683744 1611080 5683832 1612576 5685128 +1611032 5683792 1612408 5685072 1612496 5685080 1611080 5683832 +1611032 5683792 1612408 5685072 1611080 5683832 1610992 5683744 +1612496 5685080 1612576 5685128 1611080 5683832 1612408 5685072 +1611032 5683792 1612376 5685128 1612408 5685072 1611080 5683832 +1611032 5683792 1612376 5685128 1611080 5683832 1610992 5683744 +1611032 5683792 1612216 5686496 1612376 5685128 1611080 5683832 +1611032 5683792 1612216 5686496 1611080 5683832 1610992 5683744 +1611032 5683792 1611224 5687456 1612216 5686496 1611080 5683832 +1611032 5683792 1611224 5687456 1611080 5683832 1610992 5683744 +1612376 5685128 1612408 5685072 1611080 5683832 1612216 5686496 +1611032 5683792 1610432 5683584 1611224 5687456 1611080 5683832 +1611032 5683792 1610432 5683584 1611080 5683832 1610992 5683744 +1611224 5687456 1612216 5686496 1611080 5683832 1610432 5683584 +1611032 5683792 1610944 5683704 1610432 5683584 1611080 5683832 +1612216 5686496 1612376 5685128 1611080 5683832 1611224 5687456 +1610432 5683584 1601088 5681704 1611224 5687456 1611080 5683832 +1612216 5686496 1612464 5685456 1612376 5685128 1611080 5683832 +1611224 5687456 1611288 5687432 1612216 5686496 1611080 5683832 +1612408 5685072 1612496 5685080 1611080 5683832 1612376 5685128 +1611080 5683832 1611136 5683904 1612376 5685128 1612408 5685072 +1612216 5686496 1611136 5683904 1611080 5683832 1611224 5687456 +1611080 5683832 1610432 5683584 1611224 5687456 1611136 5683904 +1611080 5683832 1611032 5683792 1610432 5683584 1611136 5683904 +1610432 5683584 1611224 5687456 1611136 5683904 1611032 5683792 +1611032 5683792 1610944 5683704 1610432 5683584 1611136 5683904 +1611224 5687456 1612216 5686496 1611136 5683904 1610432 5683584 +1611080 5683832 1611032 5683792 1611136 5683904 1612408 5685072 +1610432 5683584 1601088 5681704 1611224 5687456 1611136 5683904 +1612376 5685128 1611136 5683904 1612216 5686496 1612464 5685456 +1612216 5686496 1611136 5683904 1611224 5687456 1611288 5687432 +1611136 5683904 1612216 5686496 1612376 5685128 1612408 5685072 +1612216 5686496 1612376 5685128 1611136 5683904 1611224 5687456 +1611080 5683832 1611136 5683904 1612408 5685072 1612496 5685080 +1611080 5683832 1611136 5683904 1612496 5685080 1612576 5685128 +1611136 5683904 1612376 5685128 1612408 5685072 1612496 5685080 +1611080 5683832 1611032 5683792 1611136 5683904 1612496 5685080 +1610432 5683584 1611136 5683952 1611136 5683904 1611032 5683792 +1610432 5683584 1611136 5683952 1611032 5683792 1610944 5683704 +1611136 5683904 1611080 5683832 1611032 5683792 1611136 5683952 +1611032 5683792 1610432 5683584 1611136 5683952 1611080 5683832 +1611136 5683904 1611136 5683952 1611224 5687456 1612216 5686496 +1611224 5687456 1611136 5683952 1610432 5683584 1601088 5681704 +1611224 5687456 1611288 5687432 1612216 5686496 1611136 5683952 +1611136 5683952 1612216 5686496 1611136 5683904 1611080 5683832 +1611136 5683904 1611136 5683952 1612216 5686496 1612376 5685128 +1611136 5683952 1611224 5687456 1612216 5686496 1612376 5685128 +1612216 5686496 1612464 5685456 1612376 5685128 1611136 5683952 +1611136 5683904 1611136 5683952 1612376 5685128 1612408 5685072 +1611136 5683904 1611136 5683952 1612408 5685072 1612496 5685080 +1611136 5683904 1611080 5683832 1611136 5683952 1612408 5685072 +1611136 5683952 1612216 5686496 1612376 5685128 1612408 5685072 +1611136 5683952 1610432 5683584 1611224 5687456 1612216 5686496 +1610432 5683584 1611224 5687456 1611136 5683952 1611032 5683792 +1611224 5687456 1611072 5684032 1610432 5683584 1601088 5681704 +1611136 5683952 1611072 5684032 1611224 5687456 1612216 5686496 +1611136 5683952 1611072 5684032 1612216 5686496 1612376 5685128 +1612216 5686496 1612464 5685456 1612376 5685128 1611072 5684032 +1611224 5687456 1611288 5687432 1612216 5686496 1611072 5684032 +1611136 5683952 1611072 5684032 1612376 5685128 1612408 5685072 +1611072 5684032 1612216 5686496 1612376 5685128 1612408 5685072 +1611136 5683952 1611072 5684032 1612408 5685072 1611136 5683904 +1611072 5684032 1611224 5687456 1612216 5686496 1612376 5685128 +1611136 5683952 1610432 5683584 1611072 5684032 1612408 5685072 +1610432 5683584 1611072 5684032 1611136 5683952 1611032 5683792 +1611136 5683952 1611080 5683832 1611032 5683792 1611072 5684032 +1610432 5683584 1611072 5684032 1611032 5683792 1610944 5683704 +1611136 5683952 1611136 5683904 1611080 5683832 1611072 5684032 +1611032 5683792 1610992 5683744 1610944 5683704 1611072 5684032 +1610944 5683704 1610432 5683584 1611072 5684032 1610992 5683744 +1610432 5683584 1611072 5684032 1610944 5683704 1610912 5683672 +1611072 5684032 1612408 5685072 1611136 5683952 1611080 5683832 +1611032 5683792 1610992 5683744 1611072 5684032 1611080 5683832 +1611072 5684032 1610432 5683584 1611224 5687456 1612216 5686496 +1610432 5683584 1611224 5687456 1611072 5684032 1610944 5683704 +1611224 5687456 1611016 5684048 1610432 5683584 1601088 5681704 +1611072 5684032 1611016 5684048 1611224 5687456 1612216 5686496 +1611224 5687456 1611288 5687432 1612216 5686496 1611016 5684048 +1611072 5684032 1611016 5684048 1612216 5686496 1612376 5685128 +1611072 5684032 1611016 5684048 1612376 5685128 1612408 5685072 +1612216 5686496 1612464 5685456 1612376 5685128 1611016 5684048 +1611016 5684048 1610432 5683584 1611224 5687456 1612216 5686496 +1611016 5684048 1611224 5687456 1612216 5686496 1612376 5685128 +1611072 5684032 1610432 5683584 1611016 5684048 1612376 5685128 +1610432 5683584 1611016 5684048 1611072 5684032 1610944 5683704 +1611072 5684032 1610992 5683744 1610944 5683704 1611016 5684048 +1611072 5684032 1611032 5683792 1610992 5683744 1611016 5684048 +1610992 5683744 1610944 5683704 1611016 5684048 1611032 5683792 +1610432 5683584 1611016 5684048 1610944 5683704 1610912 5683672 +1610432 5683584 1611016 5684048 1610912 5683672 1610824 5683608 +1610432 5683584 1611016 5684048 1610824 5683608 1610736 5683552 +1611016 5684048 1610944 5683704 1610912 5683672 1610824 5683608 +1611072 5684032 1611080 5683832 1611032 5683792 1611016 5684048 +1611072 5684032 1611136 5683952 1611080 5683832 1611016 5684048 +1611032 5683792 1610992 5683744 1611016 5684048 1611080 5683832 +1610432 5683584 1611224 5687456 1611016 5684048 1610824 5683608 +1611016 5684048 1612376 5685128 1611072 5684032 1611080 5683832 +1610944 5683704 1610912 5683672 1611016 5684048 1610992 5683744 +1611224 5687456 1610968 5684040 1610432 5683584 1601088 5681704 +1611016 5684048 1610968 5684040 1611224 5687456 1612216 5686496 +1610968 5684040 1610432 5683584 1611224 5687456 1612216 5686496 +1611224 5687456 1611288 5687432 1612216 5686496 1610968 5684040 +1611016 5684048 1610432 5683584 1610968 5684040 1612216 5686496 +1610432 5683584 1610968 5684040 1611016 5684048 1610824 5683608 +1610432 5683584 1610968 5684040 1610824 5683608 1610736 5683552 +1610432 5683584 1611224 5687456 1610968 5684040 1610824 5683608 +1611016 5684048 1610912 5683672 1610824 5683608 1610968 5684040 +1611016 5684048 1610944 5683704 1610912 5683672 1610968 5684040 +1610912 5683672 1610824 5683608 1610968 5684040 1610944 5683704 +1610968 5684040 1612216 5686496 1611016 5684048 1610944 5683704 +1610824 5683608 1610432 5683584 1610968 5684040 1610912 5683672 +1611016 5684048 1610968 5684040 1612216 5686496 1612376 5685128 +1611016 5684048 1610992 5683744 1610944 5683704 1610968 5684040 +1611016 5684048 1611032 5683792 1610992 5683744 1610968 5684040 +1611016 5684048 1611080 5683832 1611032 5683792 1610968 5684040 +1611032 5683792 1610992 5683744 1610968 5684040 1611080 5683832 +1610944 5683704 1610912 5683672 1610968 5684040 1610992 5683744 +1611016 5684048 1611072 5684032 1611080 5683832 1610968 5684040 +1611016 5684048 1611080 5683832 1610968 5684040 1612216 5686496 +1610992 5683744 1610944 5683704 1610968 5684040 1611032 5683792 +1610968 5684040 1610880 5684024 1611224 5687456 1612216 5686496 +1610968 5684040 1610432 5683584 1610880 5684024 1612216 5686496 +1610432 5683584 1610880 5684024 1610968 5684040 1610824 5683608 +1610432 5683584 1610880 5684024 1610824 5683608 1610736 5683552 +1610880 5684024 1612216 5686496 1610968 5684040 1610824 5683608 +1610880 5684024 1610432 5683584 1611224 5687456 1612216 5686496 +1610432 5683584 1611224 5687456 1610880 5684024 1610824 5683608 +1611224 5687456 1610880 5684024 1610432 5683584 1601088 5681704 +1611224 5687456 1611288 5687432 1612216 5686496 1610880 5684024 +1610968 5684040 1610880 5684024 1612216 5686496 1611016 5684048 +1610968 5684040 1610912 5683672 1610824 5683608 1610880 5684024 +1610968 5684040 1610912 5683672 1610880 5684024 1612216 5686496 +1610824 5683608 1610432 5683584 1610880 5684024 1610912 5683672 +1610968 5684040 1610944 5683704 1610912 5683672 1610880 5684024 +1610968 5684040 1610944 5683704 1610880 5684024 1612216 5686496 +1610968 5684040 1610992 5683744 1610944 5683704 1610880 5684024 +1610968 5684040 1610992 5683744 1610880 5684024 1612216 5686496 +1610944 5683704 1610912 5683672 1610880 5684024 1610992 5683744 +1610912 5683672 1610824 5683608 1610880 5684024 1610944 5683704 +1610968 5684040 1611032 5683792 1610992 5683744 1610880 5684024 +1610968 5684040 1611032 5683792 1610880 5684024 1612216 5686496 +1610968 5684040 1611080 5683832 1611032 5683792 1610880 5684024 +1610992 5683744 1610944 5683704 1610880 5684024 1611032 5683792 +1610880 5684024 1610832 5684024 1611224 5687456 1612216 5686496 +1610880 5684024 1610832 5684024 1612216 5686496 1610968 5684040 +1610832 5684024 1611224 5687456 1612216 5686496 1610968 5684040 +1610880 5684024 1610432 5683584 1610832 5684024 1610968 5684040 +1610432 5683584 1610832 5684024 1610880 5684024 1610824 5683608 +1610432 5683584 1610832 5684024 1610824 5683608 1610736 5683552 +1610880 5684024 1610912 5683672 1610824 5683608 1610832 5684024 +1610832 5684024 1610968 5684040 1610880 5684024 1610912 5683672 +1610832 5684024 1610912 5683672 1610824 5683608 1610736 5683552 +1610832 5684024 1610432 5683584 1611224 5687456 1612216 5686496 +1610432 5683584 1611224 5687456 1610832 5684024 1610736 5683552 +1611224 5687456 1610832 5684024 1610432 5683584 1601088 5681704 +1610432 5683584 1610832 5684024 1610736 5683552 1610520 5683528 +1611224 5687456 1611288 5687432 1612216 5686496 1610832 5684024 +1612216 5686496 1611016 5684048 1610968 5684040 1610832 5684024 +1610880 5684024 1610944 5683704 1610912 5683672 1610832 5684024 +1610912 5683672 1610824 5683608 1610832 5684024 1610944 5683704 +1610880 5684024 1610944 5683704 1610832 5684024 1610968 5684040 +1610880 5684024 1610992 5683744 1610944 5683704 1610832 5684024 +1610832 5684024 1610744 5684016 1611224 5687456 1612216 5686496 +1610832 5684024 1610744 5684016 1612216 5686496 1610968 5684040 +1610832 5684024 1610432 5683584 1610744 5684016 1612216 5686496 +1610432 5683584 1610744 5684016 1610832 5684024 1610736 5683552 +1610832 5684024 1610824 5683608 1610736 5683552 1610744 5684016 +1610832 5684024 1610912 5683672 1610824 5683608 1610744 5684016 +1610824 5683608 1610736 5683552 1610744 5684016 1610912 5683672 +1610832 5684024 1610944 5683704 1610912 5683672 1610744 5684016 +1610912 5683672 1610824 5683608 1610744 5684016 1610944 5683704 +1610744 5684016 1612216 5686496 1610832 5684024 1610944 5683704 +1610736 5683552 1610432 5683584 1610744 5684016 1610824 5683608 +1610744 5684016 1610432 5683584 1611224 5687456 1612216 5686496 +1611224 5687456 1610744 5684016 1610432 5683584 1601088 5681704 +1610432 5683584 1610744 5684016 1610736 5683552 1610520 5683528 +1610432 5683584 1611224 5687456 1610744 5684016 1610736 5683552 +1611224 5687456 1611288 5687432 1612216 5686496 1610744 5684016 +1610832 5684024 1610880 5684024 1610944 5683704 1610744 5684016 +1610744 5684016 1610672 5683992 1611224 5687456 1612216 5686496 +1611224 5687456 1610672 5683992 1610432 5683584 1601088 5681704 +1610432 5683584 1610672 5683992 1610744 5684016 1610736 5683552 +1610744 5684016 1610824 5683608 1610736 5683552 1610672 5683992 +1610744 5684016 1610912 5683672 1610824 5683608 1610672 5683992 +1610744 5684016 1610944 5683704 1610912 5683672 1610672 5683992 +1610824 5683608 1610736 5683552 1610672 5683992 1610912 5683672 +1610672 5683992 1611224 5687456 1610744 5684016 1610912 5683672 +1610432 5683584 1610672 5683992 1610736 5683552 1610520 5683528 +1610736 5683552 1610432 5683584 1610672 5683992 1610824 5683608 +1610432 5683584 1611224 5687456 1610672 5683992 1610736 5683552 +1611224 5687456 1610576 5683944 1610432 5683584 1601088 5681704 +1611224 5687456 1610672 5683992 1610576 5683944 1601088 5681704 +1611224 5687456 1610576 5683944 1601088 5681704 1611264 5689408 +1610432 5683584 1601128 5681664 1601088 5681704 1610576 5683944 +1610672 5683992 1610576 5683944 1611224 5687456 1610744 5684016 +1610432 5683584 1610576 5683944 1610672 5683992 1610736 5683552 +1610432 5683584 1610576 5683944 1610736 5683552 1610520 5683528 +1610736 5683552 1610648 5683504 1610520 5683528 1610576 5683944 +1610672 5683992 1610824 5683608 1610736 5683552 1610576 5683944 +1610672 5683992 1610912 5683672 1610824 5683608 1610576 5683944 +1610576 5683944 1611224 5687456 1610672 5683992 1610824 5683608 +1610576 5683944 1610824 5683608 1610736 5683552 1610520 5683528 +1610576 5683944 1610520 5683528 1610432 5683584 1601088 5681704 +1601088 5681704 1610528 5683880 1610432 5683584 1601128 5681664 +1610576 5683944 1610528 5683880 1601088 5681704 1611224 5687456 +1610576 5683944 1610528 5683880 1611224 5687456 1610672 5683992 +1601088 5681704 1611264 5689408 1611224 5687456 1610528 5683880 +1601088 5681704 1611224 5687456 1610528 5683880 1601128 5681664 +1610528 5683880 1610576 5683944 1610432 5683584 1601128 5681664 +1610576 5683944 1610432 5683584 1610528 5683880 1611224 5687456 +1610432 5683584 1610528 5683880 1610576 5683944 1610520 5683528 +1610576 5683944 1610736 5683552 1610520 5683528 1610528 5683880 +1610736 5683552 1610648 5683504 1610520 5683528 1610528 5683880 +1610576 5683944 1610824 5683608 1610736 5683552 1610528 5683880 +1610736 5683552 1610520 5683528 1610528 5683880 1610824 5683608 +1610576 5683944 1610672 5683992 1610824 5683608 1610528 5683880 +1610672 5683992 1610912 5683672 1610824 5683608 1610528 5683880 +1610824 5683608 1610736 5683552 1610528 5683880 1610672 5683992 +1610432 5683584 1601128 5681664 1610528 5683880 1610520 5683528 +1610528 5683880 1611224 5687456 1610576 5683944 1610672 5683992 +1610520 5683528 1610432 5683584 1610528 5683880 1610736 5683552 +1610432 5683584 1601592 5681216 1601128 5681664 1610528 5683880 +1610528 5683880 1610496 5683784 1601128 5681664 1601088 5681704 +1610432 5683584 1610496 5683784 1610528 5683880 1610520 5683528 +1610432 5683584 1601128 5681664 1610496 5683784 1610520 5683528 +1610496 5683784 1601128 5681664 1610528 5683880 1610520 5683528 +1610528 5683880 1610736 5683552 1610520 5683528 1610496 5683784 +1610736 5683552 1610648 5683504 1610520 5683528 1610496 5683784 +1610648 5683504 1610616 5683496 1610520 5683528 1610496 5683784 +1610528 5683880 1610824 5683608 1610736 5683552 1610496 5683784 +1610528 5683880 1610672 5683992 1610824 5683608 1610496 5683784 +1610528 5683880 1610824 5683608 1610496 5683784 1601128 5681664 +1610520 5683528 1610432 5683584 1610496 5683784 1610648 5683504 +1610736 5683552 1610648 5683504 1610496 5683784 1610824 5683608 +1601128 5681664 1610496 5683784 1610432 5683584 1601592 5681216 +1610496 5683784 1610520 5683528 1610432 5683584 1601592 5681216 +1601128 5681664 1610496 5683784 1601592 5681216 1601160 5681616 +1610432 5683584 1601624 5681136 1601592 5681216 1610496 5683784 +1601128 5681664 1610528 5683880 1610496 5683784 1601592 5681216 +1610432 5683584 1610432 5683632 1610496 5683784 1610520 5683528 +1610432 5683584 1601592 5681216 1610432 5683632 1610520 5683528 +1610432 5683632 1601592 5681216 1610496 5683784 1610520 5683528 +1601592 5681216 1610432 5683632 1610432 5683584 1601624 5681136 +1610496 5683784 1610648 5683504 1610520 5683528 1610432 5683632 +1610496 5683784 1610432 5683632 1601592 5681216 1601128 5681664 +1610432 5683632 1610432 5683584 1601592 5681216 1601128 5681664 +1610496 5683784 1610520 5683528 1610432 5683632 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1610432 5683632 +1610496 5683784 1610432 5683632 1601128 5681664 1610528 5683880 +1610496 5683784 1610520 5683528 1610432 5683632 1610528 5683880 +1601128 5681664 1601088 5681704 1610528 5683880 1610432 5683632 +1601088 5681704 1611224 5687456 1610528 5683880 1610432 5683632 +1610528 5683880 1610496 5683784 1610432 5683632 1601088 5681704 +1610432 5683632 1601592 5681216 1601128 5681664 1601088 5681704 +1611224 5687456 1610536 5684592 1601088 5681704 1611264 5689408 +1610528 5683880 1610536 5684592 1611224 5687456 1610576 5683944 +1610528 5683880 1601088 5681704 1610536 5684592 1610576 5683944 +1611224 5687456 1610672 5683992 1610576 5683944 1610536 5684592 +1610576 5683944 1610528 5683880 1610536 5684592 1610672 5683992 +1610536 5684592 1601088 5681704 1611224 5687456 1610672 5683992 +1611224 5687456 1610744 5684016 1610672 5683992 1610536 5684592 +1610672 5683992 1610576 5683944 1610536 5684592 1610744 5684016 +1611224 5687456 1612216 5686496 1610744 5684016 1610536 5684592 +1612216 5686496 1610832 5684024 1610744 5684016 1610536 5684592 +1612216 5686496 1610968 5684040 1610832 5684024 1610536 5684592 +1610968 5684040 1610880 5684024 1610832 5684024 1610536 5684592 +1610968 5684040 1610880 5684024 1610536 5684592 1612216 5686496 +1610832 5684024 1610744 5684016 1610536 5684592 1610880 5684024 +1612216 5686496 1610968 5684040 1610536 5684592 1611224 5687456 +1611224 5687456 1612216 5686496 1610536 5684592 1601088 5681704 +1610744 5684016 1610672 5683992 1610536 5684592 1610832 5684024 +1601088 5681704 1610536 5684592 1610528 5683880 1610432 5683632 +1610536 5684592 1610576 5683944 1610528 5683880 1610432 5683632 +1601088 5681704 1610536 5684592 1610432 5683632 1601128 5681664 +1601088 5681704 1611224 5687456 1610536 5684592 1601128 5681664 +1610536 5684592 1610528 5683880 1610432 5683632 1601128 5681664 +1610528 5683880 1610496 5683784 1610432 5683632 1610536 5684592 +1610528 5683880 1610496 5683784 1610536 5684592 1610576 5683944 +1610432 5683632 1601128 5681664 1610536 5684592 1610496 5683784 +1611224 5687456 1611288 5687432 1612216 5686496 1610536 5684592 +1612216 5686496 1610968 5684040 1610536 5684592 1611288 5687432 +1611224 5687456 1611288 5687432 1610536 5684592 1601088 5681704 +1611288 5687432 1612216 5686664 1612216 5686496 1610536 5684592 +1612216 5686496 1611016 5684048 1610968 5684040 1610536 5684592 +1610968 5684040 1610880 5684024 1610536 5684592 1611016 5684048 +1612216 5686496 1611016 5684048 1610536 5684592 1611288 5687432 +1612216 5686496 1612376 5685128 1611016 5684048 1610536 5684592 +1612216 5686496 1612376 5685128 1610536 5684592 1611288 5687432 +1612216 5686496 1612464 5685456 1612376 5685128 1610536 5684592 +1612216 5686496 1612464 5685456 1610536 5684592 1611288 5687432 +1612216 5686496 1612480 5685480 1612464 5685456 1610536 5684592 +1612464 5685456 1612392 5685168 1612376 5685128 1610536 5684592 +1612464 5685456 1612448 5685352 1612392 5685168 1610536 5684592 +1612464 5685456 1612392 5685168 1610536 5684592 1612216 5686496 +1612392 5685168 1612384 5685136 1612376 5685128 1610536 5684592 +1612376 5685128 1611072 5684032 1611016 5684048 1610536 5684592 +1612376 5685128 1612408 5685072 1611072 5684032 1610536 5684592 +1611016 5684048 1610968 5684040 1610536 5684592 1611072 5684032 +1612376 5685128 1611072 5684032 1610536 5684592 1612392 5685168 +1610432 5683632 1601592 5681216 1601128 5681664 1610536 5684592 +1610432 5683632 1610432 5683584 1601592 5681216 1610536 5684592 +1601128 5681664 1601088 5681704 1610536 5684592 1601592 5681216 +1601592 5681216 1601160 5681616 1601128 5681664 1610536 5684592 +1610432 5683632 1601592 5681216 1610536 5684592 1610496 5683784 +1610536 5684592 1610672 5684808 1612216 5686496 1612464 5685456 +1612216 5686496 1612480 5685480 1612464 5685456 1610672 5684808 +1610536 5684592 1610672 5684808 1612464 5685456 1612392 5685168 +1610672 5684808 1612216 5686496 1612464 5685456 1612392 5685168 +1612464 5685456 1612448 5685352 1612392 5685168 1610672 5684808 +1610672 5684808 1611288 5687432 1612216 5686496 1612464 5685456 +1610536 5684592 1611288 5687432 1610672 5684808 1612392 5685168 +1612216 5686496 1610672 5684808 1611288 5687432 1612216 5686664 +1611288 5687432 1610672 5684808 1610536 5684592 1611224 5687456 +1611288 5687432 1612216 5686496 1610672 5684808 1611224 5687456 +1610536 5684592 1601088 5681704 1611224 5687456 1610672 5684808 +1610672 5684808 1612392 5685168 1610536 5684592 1611224 5687456 +1610536 5684592 1610672 5684808 1612392 5685168 1612376 5685128 +1610672 5684808 1612464 5685456 1612392 5685168 1612376 5685128 +1610536 5684592 1611224 5687456 1610672 5684808 1612376 5685128 +1612392 5685168 1612384 5685136 1612376 5685128 1610672 5684808 +1610536 5684592 1610672 5684808 1612376 5685128 1611072 5684032 +1612376 5685128 1612408 5685072 1611072 5684032 1610672 5684808 +1610536 5684592 1611224 5687456 1610672 5684808 1611072 5684032 +1610672 5684808 1612392 5685168 1612376 5685128 1611072 5684032 +1610536 5684592 1610672 5684808 1611072 5684032 1611016 5684048 +1610536 5684592 1611224 5687456 1610672 5684808 1611016 5684048 +1610536 5684592 1610672 5684808 1611016 5684048 1610968 5684040 +1610672 5684808 1612376 5685128 1611072 5684032 1611016 5684048 +1610672 5684808 1610768 5684904 1612464 5685456 1612392 5685168 +1612464 5685456 1610768 5684904 1612216 5686496 1612480 5685480 +1612464 5685456 1612448 5685352 1612392 5685168 1610768 5684904 +1612392 5685168 1610672 5684808 1610768 5684904 1612448 5685352 +1610672 5684808 1610768 5684904 1612392 5685168 1612376 5685128 +1610768 5684904 1612448 5685352 1612392 5685168 1612376 5685128 +1612216 5686496 1610768 5684904 1610672 5684808 1611288 5687432 +1610672 5684808 1611288 5687432 1610768 5684904 1612376 5685128 +1610672 5684808 1611224 5687456 1611288 5687432 1610768 5684904 +1611288 5687432 1612216 5686496 1610768 5684904 1611224 5687456 +1610672 5684808 1611224 5687456 1610768 5684904 1612376 5685128 +1610768 5684904 1612216 5686496 1612464 5685456 1612448 5685352 +1612216 5686496 1612464 5685456 1610768 5684904 1611288 5687432 +1612392 5685168 1612384 5685136 1612376 5685128 1610768 5684904 +1612448 5685352 1612432 5685256 1612392 5685168 1610768 5684904 +1612216 5686496 1610768 5684904 1611288 5687432 1612216 5686664 +1610672 5684808 1610536 5684592 1611224 5687456 1610768 5684904 +1610672 5684808 1610768 5684904 1612376 5685128 1611072 5684032 +1612376 5685128 1612408 5685072 1611072 5684032 1610768 5684904 +1610768 5684904 1612392 5685168 1612376 5685128 1611072 5684032 +1610672 5684808 1611224 5687456 1610768 5684904 1611072 5684032 +1610672 5684808 1610768 5684904 1611072 5684032 1611016 5684048 +1610672 5684808 1611224 5687456 1610768 5684904 1611016 5684048 +1610768 5684904 1612376 5685128 1611072 5684032 1611016 5684048 +1610672 5684808 1610768 5684904 1611016 5684048 1610536 5684592 +1612464 5685456 1610840 5684936 1612216 5686496 1612480 5685480 +1610768 5684904 1610840 5684936 1612464 5685456 1612448 5685352 +1610768 5684904 1610840 5684936 1612448 5685352 1612392 5685168 +1610768 5684904 1610840 5684936 1612392 5685168 1612376 5685128 +1610840 5684936 1612448 5685352 1612392 5685168 1612376 5685128 +1610768 5684904 1610840 5684936 1612376 5685128 1611072 5684032 +1612376 5685128 1612408 5685072 1611072 5684032 1610840 5684936 +1610840 5684936 1612392 5685168 1612376 5685128 1612408 5685072 +1611072 5684032 1610768 5684904 1610840 5684936 1612408 5685072 +1610840 5684936 1612464 5685456 1612448 5685352 1612392 5685168 +1610768 5684904 1612216 5686496 1610840 5684936 1611072 5684032 +1612216 5686496 1610840 5684936 1610768 5684904 1611288 5687432 +1610768 5684904 1611224 5687456 1611288 5687432 1610840 5684936 +1610768 5684904 1610672 5684808 1611224 5687456 1610840 5684936 +1610840 5684936 1611072 5684032 1610768 5684904 1611224 5687456 +1611288 5687432 1612216 5686496 1610840 5684936 1611224 5687456 +1610840 5684936 1612216 5686496 1612464 5685456 1612448 5685352 +1612216 5686496 1612464 5685456 1610840 5684936 1611288 5687432 +1612392 5685168 1612384 5685136 1612376 5685128 1610840 5684936 +1612448 5685352 1612432 5685256 1612392 5685168 1610840 5684936 +1612216 5686496 1610840 5684936 1611288 5687432 1612216 5686664 +1610768 5684904 1610840 5684936 1611072 5684032 1611016 5684048 +1610840 5684936 1612408 5685072 1611072 5684032 1611016 5684048 +1610768 5684904 1611224 5687456 1610840 5684936 1611016 5684048 +1612408 5685072 1611136 5683952 1611072 5684032 1610840 5684936 +1610768 5684904 1610840 5684936 1611016 5684048 1610672 5684808 +1610768 5684904 1611224 5687456 1610840 5684936 1610672 5684808 +1610840 5684936 1611072 5684032 1611016 5684048 1610672 5684808 +1611016 5684048 1610536 5684592 1610672 5684808 1610840 5684936 +1612408 5685072 1610880 5684928 1610840 5684936 1612376 5685128 +1610840 5684936 1612392 5685168 1612376 5685128 1610880 5684928 +1612376 5685128 1612408 5685072 1610880 5684928 1612392 5685168 +1610840 5684936 1612448 5685352 1612392 5685168 1610880 5684928 +1612392 5685168 1612376 5685128 1610880 5684928 1612448 5685352 +1612408 5685072 1611072 5684032 1610880 5684928 1612376 5685128 +1610840 5684936 1610880 5684928 1611072 5684032 1611016 5684048 +1610880 5684928 1612408 5685072 1611072 5684032 1611016 5684048 +1610840 5684936 1612464 5685456 1612448 5685352 1610880 5684928 +1612448 5685352 1612392 5685168 1610880 5684928 1612464 5685456 +1610840 5684936 1612216 5686496 1612464 5685456 1610880 5684928 +1612216 5686496 1612480 5685480 1612464 5685456 1610880 5684928 +1612464 5685456 1612448 5685352 1610880 5684928 1612216 5686496 +1610880 5684928 1611016 5684048 1610840 5684936 1612216 5686496 +1610840 5684936 1611288 5687432 1612216 5686496 1610880 5684928 +1612392 5685168 1612384 5685136 1612376 5685128 1610880 5684928 +1612448 5685352 1612432 5685256 1612392 5685168 1610880 5684928 +1610840 5684936 1610880 5684928 1611016 5684048 1610672 5684808 +1610880 5684928 1611072 5684032 1611016 5684048 1610672 5684808 +1610840 5684936 1612216 5686496 1610880 5684928 1610672 5684808 +1611072 5684032 1610880 5684928 1612408 5685072 1611136 5683952 +1611016 5684048 1610536 5684592 1610672 5684808 1610880 5684928 +1610840 5684936 1610880 5684928 1610672 5684808 1610768 5684904 +1610840 5684936 1612216 5686496 1610880 5684928 1610768 5684904 +1610880 5684928 1611016 5684048 1610672 5684808 1610768 5684904 +1610880 5684928 1610944 5684896 1611072 5684032 1611016 5684048 +1610880 5684928 1612408 5685072 1610944 5684896 1611016 5684048 +1612408 5685072 1610944 5684896 1610880 5684928 1612376 5685128 +1610880 5684928 1612392 5685168 1612376 5685128 1610944 5684896 +1610880 5684928 1612448 5685352 1612392 5685168 1610944 5684896 +1612392 5685168 1612376 5685128 1610944 5684896 1612448 5685352 +1612408 5685072 1611072 5684032 1610944 5684896 1612376 5685128 +1610880 5684928 1612464 5685456 1612448 5685352 1610944 5684896 +1612448 5685352 1612392 5685168 1610944 5684896 1612464 5685456 +1610944 5684896 1611016 5684048 1610880 5684928 1612464 5685456 +1612376 5685128 1612408 5685072 1610944 5684896 1612392 5685168 +1610944 5684896 1612408 5685072 1611072 5684032 1611016 5684048 +1610880 5684928 1610944 5684896 1611016 5684048 1610672 5684808 +1610944 5684896 1611072 5684032 1611016 5684048 1610672 5684808 +1610880 5684928 1612464 5685456 1610944 5684896 1610672 5684808 +1610880 5684928 1612216 5686496 1612464 5685456 1610944 5684896 +1612216 5686496 1612480 5685480 1612464 5685456 1610944 5684896 +1612464 5685456 1612448 5685352 1610944 5684896 1612216 5686496 +1610880 5684928 1612216 5686496 1610944 5684896 1610672 5684808 +1610880 5684928 1610840 5684936 1612216 5686496 1610944 5684896 +1612392 5685168 1612384 5685136 1612376 5685128 1610944 5684896 +1612448 5685352 1612432 5685256 1612392 5685168 1610944 5684896 +1610880 5684928 1610944 5684896 1610672 5684808 1610768 5684904 +1610880 5684928 1612216 5686496 1610944 5684896 1610768 5684904 +1610944 5684896 1611016 5684048 1610672 5684808 1610768 5684904 +1611072 5684032 1610944 5684896 1612408 5685072 1611136 5683952 +1611016 5684048 1610536 5684592 1610672 5684808 1610944 5684896 +1611016 5684048 1610536 5684592 1610944 5684896 1611072 5684032 +1610672 5684808 1610768 5684904 1610944 5684896 1610536 5684592 +1611016 5684048 1610968 5684040 1610536 5684592 1610944 5684896 +1610880 5684928 1610944 5684896 1610768 5684904 1610840 5684936 +1612408 5685072 1611024 5684888 1610944 5684896 1612376 5685128 +1612408 5685072 1611072 5684032 1611024 5684888 1612376 5685128 +1610944 5684896 1612392 5685168 1612376 5685128 1611024 5684888 +1610944 5684896 1612448 5685352 1612392 5685168 1611024 5684888 +1610944 5684896 1612464 5685456 1612448 5685352 1611024 5684888 +1612448 5685352 1612392 5685168 1611024 5684888 1612464 5685456 +1612376 5685128 1612408 5685072 1611024 5684888 1612392 5685168 +1610944 5684896 1612216 5686496 1612464 5685456 1611024 5684888 +1612464 5685456 1612448 5685352 1611024 5684888 1612216 5686496 +1612216 5686496 1612480 5685480 1612464 5685456 1611024 5684888 +1612392 5685168 1612376 5685128 1611024 5684888 1612448 5685352 +1610944 5684896 1611024 5684888 1611072 5684032 1611016 5684048 +1611024 5684888 1612408 5685072 1611072 5684032 1611016 5684048 +1610944 5684896 1611024 5684888 1611016 5684048 1610536 5684592 +1611024 5684888 1611072 5684032 1611016 5684048 1610536 5684592 +1611024 5684888 1610536 5684592 1610944 5684896 1612216 5686496 +1610944 5684896 1610880 5684928 1612216 5686496 1611024 5684888 +1612216 5686496 1612464 5685456 1611024 5684888 1610880 5684928 +1610944 5684896 1610880 5684928 1611024 5684888 1610536 5684592 +1610880 5684928 1610840 5684936 1612216 5686496 1611024 5684888 +1612392 5685168 1612384 5685136 1612376 5685128 1611024 5684888 +1612448 5685352 1612432 5685256 1612392 5685168 1611024 5684888 +1611072 5684032 1611024 5684888 1612408 5685072 1611136 5683952 +1611072 5684032 1611016 5684048 1611024 5684888 1611136 5683952 +1611024 5684888 1612376 5685128 1612408 5685072 1611136 5683952 +1612408 5685072 1611136 5683904 1611136 5683952 1611024 5684888 +1610944 5684896 1611024 5684888 1610536 5684592 1610672 5684808 +1611016 5684048 1610968 5684040 1610536 5684592 1611024 5684888 +1611024 5684888 1611048 5684928 1612216 5686496 1612464 5685456 +1611024 5684888 1611048 5684928 1612464 5685456 1612448 5685352 +1611024 5684888 1611048 5684928 1612448 5685352 1612392 5685168 +1611048 5684928 1612464 5685456 1612448 5685352 1612392 5685168 +1611024 5684888 1610880 5684928 1611048 5684928 1612392 5685168 +1611048 5684928 1610880 5684928 1612216 5686496 1612464 5685456 +1612216 5686496 1612480 5685480 1612464 5685456 1611048 5684928 +1611048 5684928 1612216 5686496 1612464 5685456 1612448 5685352 +1611024 5684888 1611048 5684928 1612392 5685168 1612376 5685128 +1611048 5684928 1612448 5685352 1612392 5685168 1612376 5685128 +1611024 5684888 1611048 5684928 1612376 5685128 1612408 5685072 +1611024 5684888 1610880 5684928 1611048 5684928 1612408 5685072 +1611024 5684888 1611048 5684928 1612408 5685072 1611136 5683952 +1611048 5684928 1612376 5685128 1612408 5685072 1611136 5683952 +1611024 5684888 1610880 5684928 1611048 5684928 1611136 5683952 +1611048 5684928 1612392 5685168 1612376 5685128 1612408 5685072 +1610880 5684928 1611048 5684928 1611024 5684888 1610944 5684896 +1611048 5684928 1611136 5683952 1611024 5684888 1610944 5684896 +1612216 5686496 1611048 5684928 1610880 5684928 1610840 5684936 +1612216 5686496 1612464 5685456 1611048 5684928 1610840 5684936 +1612216 5686496 1611048 5684928 1610840 5684936 1611288 5687432 +1612392 5685168 1612384 5685136 1612376 5685128 1611048 5684928 +1612448 5685352 1612432 5685256 1612392 5685168 1611048 5684928 +1612408 5685072 1611136 5683904 1611136 5683952 1611048 5684928 +1611024 5684888 1611048 5684928 1611136 5683952 1611072 5684032 +1611024 5684888 1611048 5684928 1611072 5684032 1611016 5684048 +1611024 5684888 1610944 5684896 1611048 5684928 1611072 5684032 +1611048 5684928 1612408 5685072 1611136 5683952 1611072 5684032 +1610880 5684928 1610840 5684936 1611048 5684928 1610944 5684896 +1611048 5684928 1611064 5684960 1612216 5686496 1612464 5685456 +1612216 5686496 1612480 5685480 1612464 5685456 1611064 5684960 +1611048 5684928 1611064 5684960 1612464 5685456 1612448 5685352 +1611048 5684928 1611064 5684960 1612448 5685352 1612392 5685168 +1611048 5684928 1611064 5684960 1612392 5685168 1612376 5685128 +1611064 5684960 1612448 5685352 1612392 5685168 1612376 5685128 +1611064 5684960 1612216 5686496 1612464 5685456 1612448 5685352 +1611064 5684960 1612464 5685456 1612448 5685352 1612392 5685168 +1611048 5684928 1611064 5684960 1612376 5685128 1612408 5685072 +1611064 5684960 1612392 5685168 1612376 5685128 1612408 5685072 +1611048 5684928 1611064 5684960 1612408 5685072 1611136 5683952 +1610840 5684936 1611064 5684960 1611048 5684928 1610880 5684928 +1612216 5686496 1611064 5684960 1610840 5684936 1611288 5687432 +1610840 5684936 1611224 5687456 1611288 5687432 1611064 5684960 +1612392 5685168 1612384 5685136 1612376 5685128 1611064 5684960 +1612448 5685352 1612432 5685256 1612392 5685168 1611064 5684960 +1612216 5686496 1611064 5684960 1611288 5687432 1612216 5686664 +1611048 5684928 1610880 5684928 1611064 5684960 1612408 5685072 +1611048 5684928 1610944 5684896 1610880 5684928 1611064 5684960 +1611048 5684928 1611024 5684888 1610944 5684896 1611064 5684960 +1610880 5684928 1610840 5684936 1611064 5684960 1610944 5684896 +1611048 5684928 1610944 5684896 1611064 5684960 1612408 5685072 +1611064 5684960 1611288 5687432 1612216 5686496 1612464 5685456 +1610840 5684936 1611288 5687432 1611064 5684960 1610880 5684928 +1611288 5687432 1611088 5685000 1611064 5684960 1610840 5684936 +1611288 5687432 1612216 5686496 1611088 5685000 1610840 5684936 +1611288 5687432 1611088 5685000 1610840 5684936 1611224 5687456 +1611288 5687432 1612216 5686496 1611088 5685000 1611224 5687456 +1610840 5684936 1610768 5684904 1611224 5687456 1611088 5685000 +1611088 5685000 1611064 5684960 1610840 5684936 1611224 5687456 +1612216 5686496 1611088 5685000 1611288 5687432 1612216 5686664 +1611064 5684960 1611088 5685000 1612216 5686496 1612464 5685456 +1611088 5685000 1611288 5687432 1612216 5686496 1612464 5685456 +1611064 5684960 1611088 5685000 1612464 5685456 1612448 5685352 +1612216 5686496 1612480 5685480 1612464 5685456 1611088 5685000 +1611064 5684960 1611088 5685000 1612448 5685352 1612392 5685168 +1611064 5684960 1611088 5685000 1612392 5685168 1612376 5685128 +1611064 5684960 1611088 5685000 1612376 5685128 1612408 5685072 +1611088 5685000 1612392 5685168 1612376 5685128 1612408 5685072 +1611088 5685000 1612464 5685456 1612448 5685352 1612392 5685168 +1611088 5685000 1612448 5685352 1612392 5685168 1612376 5685128 +1611064 5684960 1611088 5685000 1612408 5685072 1611048 5684928 +1611088 5685000 1612376 5685128 1612408 5685072 1611048 5684928 +1612408 5685072 1611136 5683952 1611048 5684928 1611088 5685000 +1612392 5685168 1612384 5685136 1612376 5685128 1611088 5685000 +1612448 5685352 1612432 5685256 1612392 5685168 1611088 5685000 +1611088 5685000 1612216 5686496 1612464 5685456 1612448 5685352 +1611088 5685000 1611048 5684928 1611064 5684960 1610840 5684936 +1611064 5684960 1610880 5684928 1610840 5684936 1611088 5685000 +1611064 5684960 1610944 5684896 1610880 5684928 1611088 5685000 +1610840 5684936 1611224 5687456 1611088 5685000 1610880 5684928 +1611064 5684960 1610880 5684928 1611088 5685000 1611048 5684928 +1611088 5685000 1611184 5685272 1612216 5686496 1612464 5685456 +1611088 5685000 1611288 5687432 1611184 5685272 1612464 5685456 +1611288 5687432 1611184 5685272 1611088 5685000 1611224 5687456 +1611184 5685272 1612464 5685456 1611088 5685000 1611224 5687456 +1611184 5685272 1611288 5687432 1612216 5686496 1612464 5685456 +1612216 5686496 1612480 5685480 1612464 5685456 1611184 5685272 +1611288 5687432 1612216 5686496 1611184 5685272 1611224 5687456 +1611088 5685000 1610840 5684936 1611224 5687456 1611184 5685272 +1611088 5685000 1610840 5684936 1611184 5685272 1612464 5685456 +1611224 5687456 1611288 5687432 1611184 5685272 1610840 5684936 +1610840 5684936 1610768 5684904 1611224 5687456 1611184 5685272 +1611224 5687456 1611288 5687432 1611184 5685272 1610768 5684904 +1610768 5684904 1610672 5684808 1611224 5687456 1611184 5685272 +1610840 5684936 1610768 5684904 1611184 5685272 1611088 5685000 +1611088 5685000 1610880 5684928 1610840 5684936 1611184 5685272 +1612216 5686496 1611184 5685272 1611288 5687432 1612216 5686664 +1611088 5685000 1611184 5685272 1612464 5685456 1612448 5685352 +1611184 5685272 1612216 5686496 1612464 5685456 1612448 5685352 +1611088 5685000 1610840 5684936 1611184 5685272 1612448 5685352 +1611088 5685000 1611184 5685272 1612448 5685352 1612392 5685168 +1611088 5685000 1610840 5684936 1611184 5685272 1612392 5685168 +1611088 5685000 1611184 5685272 1612392 5685168 1612376 5685128 +1611088 5685000 1611184 5685272 1612376 5685128 1612408 5685072 +1611088 5685000 1610840 5684936 1611184 5685272 1612376 5685128 +1611184 5685272 1612448 5685352 1612392 5685168 1612376 5685128 +1612392 5685168 1612384 5685136 1612376 5685128 1611184 5685272 +1612448 5685352 1612432 5685256 1612392 5685168 1611184 5685272 +1611184 5685272 1612464 5685456 1612448 5685352 1612392 5685168 +1611184 5685272 1611264 5685432 1612216 5686496 1612464 5685456 +1611184 5685272 1611264 5685432 1612464 5685456 1612448 5685352 +1611264 5685432 1612216 5686496 1612464 5685456 1612448 5685352 +1611184 5685272 1611288 5687432 1611264 5685432 1612448 5685352 +1612216 5686496 1612480 5685480 1612464 5685456 1611264 5685432 +1611288 5687432 1611264 5685432 1611184 5685272 1611224 5687456 +1611184 5685272 1610768 5684904 1611224 5687456 1611264 5685432 +1611264 5685432 1612448 5685352 1611184 5685272 1610768 5684904 +1611224 5687456 1611288 5687432 1611264 5685432 1610768 5684904 +1611264 5685432 1611288 5687432 1612216 5686496 1612464 5685456 +1611288 5687432 1612216 5686496 1611264 5685432 1611224 5687456 +1611184 5685272 1610840 5684936 1610768 5684904 1611264 5685432 +1610768 5684904 1610672 5684808 1611224 5687456 1611264 5685432 +1612216 5686496 1611264 5685432 1611288 5687432 1612216 5686664 +1611184 5685272 1611264 5685432 1612448 5685352 1612392 5685168 +1611264 5685432 1612464 5685456 1612448 5685352 1612392 5685168 +1611184 5685272 1610768 5684904 1611264 5685432 1612392 5685168 +1611184 5685272 1611264 5685432 1612392 5685168 1612376 5685128 +1611184 5685272 1610768 5684904 1611264 5685432 1612376 5685128 +1611184 5685272 1611264 5685432 1612376 5685128 1611088 5685000 +1612392 5685168 1612384 5685136 1612376 5685128 1611264 5685432 +1612448 5685352 1612432 5685256 1612392 5685168 1611264 5685432 +1611264 5685432 1612448 5685352 1612392 5685168 1612376 5685128 +1611264 5685432 1611440 5685632 1612216 5686496 1612464 5685456 +1611264 5685432 1611440 5685632 1612464 5685456 1612448 5685352 +1611264 5685432 1611440 5685632 1612448 5685352 1612392 5685168 +1611440 5685632 1612464 5685456 1612448 5685352 1612392 5685168 +1612216 5686496 1612480 5685480 1612464 5685456 1611440 5685632 +1612216 5686496 1612272 5686464 1612480 5685480 1611440 5685632 +1611440 5685632 1612480 5685480 1612464 5685456 1612448 5685352 +1611264 5685432 1611288 5687432 1611440 5685632 1612392 5685168 +1611288 5687432 1611440 5685632 1611264 5685432 1611224 5687456 +1611264 5685432 1610768 5684904 1611224 5687456 1611440 5685632 +1611440 5685632 1612392 5685168 1611264 5685432 1611224 5687456 +1611440 5685632 1611288 5687432 1612216 5686496 1612272 5686464 +1612272 5686464 1612552 5685552 1612480 5685480 1611440 5685632 +1612480 5685480 1612464 5685456 1611440 5685632 1612272 5686464 +1611288 5687432 1612216 5686496 1611440 5685632 1611224 5687456 +1612448 5685352 1612432 5685256 1612392 5685168 1611440 5685632 +1612216 5686496 1611440 5685632 1611288 5687432 1612216 5686664 +1611264 5685432 1611440 5685632 1612392 5685168 1612376 5685128 +1611440 5685632 1612448 5685352 1612392 5685168 1612376 5685128 +1611264 5685432 1611440 5685632 1612376 5685128 1611184 5685272 +1611264 5685432 1611224 5687456 1611440 5685632 1612376 5685128 +1612392 5685168 1612384 5685136 1612376 5685128 1611440 5685632 +1612272 5686464 1611504 5685680 1611440 5685632 1612216 5686496 +1612272 5686464 1612480 5685480 1611504 5685680 1612216 5686496 +1611440 5685632 1611288 5687432 1612216 5686496 1611504 5685680 +1612216 5686496 1612272 5686464 1611504 5685680 1611288 5687432 +1612480 5685480 1611504 5685680 1612272 5686464 1612552 5685552 +1611440 5685632 1611504 5685680 1612480 5685480 1612464 5685456 +1611440 5685632 1611504 5685680 1612464 5685456 1612448 5685352 +1611440 5685632 1611504 5685680 1612448 5685352 1612392 5685168 +1611440 5685632 1611504 5685680 1612392 5685168 1612376 5685128 +1611504 5685680 1612448 5685352 1612392 5685168 1612376 5685128 +1611504 5685680 1612464 5685456 1612448 5685352 1612392 5685168 +1611504 5685680 1612480 5685480 1612464 5685456 1612448 5685352 +1611440 5685632 1611224 5687456 1611288 5687432 1611504 5685680 +1611440 5685632 1611264 5685432 1611224 5687456 1611504 5685680 +1611288 5687432 1612216 5686496 1611504 5685680 1611224 5687456 +1611504 5685680 1612376 5685128 1611440 5685632 1611224 5687456 +1611504 5685680 1612272 5686464 1612480 5685480 1612464 5685456 +1612392 5685168 1612384 5685136 1612376 5685128 1611504 5685680 +1612448 5685352 1612432 5685256 1612392 5685168 1611504 5685680 +1611288 5687432 1612216 5686664 1612216 5686496 1611504 5685680 +1611440 5685632 1611504 5685680 1612376 5685128 1611264 5685432 +1611504 5685680 1611648 5685832 1612272 5686464 1612480 5685480 +1611648 5685832 1612216 5686496 1612272 5686464 1612480 5685480 +1612216 5686496 1611648 5685832 1611504 5685680 1611288 5687432 +1612216 5686496 1612272 5686464 1611648 5685832 1611288 5687432 +1611504 5685680 1611224 5687456 1611288 5687432 1611648 5685832 +1611288 5687432 1612216 5686496 1611648 5685832 1611224 5687456 +1612272 5686464 1612552 5685552 1612480 5685480 1611648 5685832 +1612480 5685480 1611504 5685680 1611648 5685832 1612552 5685552 +1612272 5686464 1612552 5685552 1611648 5685832 1612216 5686496 +1611504 5685680 1611440 5685632 1611224 5687456 1611648 5685832 +1611440 5685632 1611264 5685432 1611224 5687456 1611648 5685832 +1611224 5687456 1611288 5687432 1611648 5685832 1611440 5685632 +1611504 5685680 1611648 5685832 1612480 5685480 1612464 5685456 +1611648 5685832 1612552 5685552 1612480 5685480 1612464 5685456 +1611504 5685680 1611648 5685832 1612464 5685456 1612448 5685352 +1611504 5685680 1611648 5685832 1612448 5685352 1612392 5685168 +1611648 5685832 1612480 5685480 1612464 5685456 1612448 5685352 +1611504 5685680 1611440 5685632 1611648 5685832 1612448 5685352 +1612216 5686496 1611648 5685832 1611288 5687432 1612216 5686664 +1612216 5686496 1612272 5686464 1611648 5685832 1612216 5686664 +1611648 5685832 1611224 5687456 1611288 5687432 1612216 5686664 +1611288 5687432 1612096 5687136 1612216 5686664 1611648 5685832 +1612272 5686464 1612336 5686456 1612552 5685552 1611648 5685832 +1612272 5686464 1611936 5686104 1611648 5685832 1612216 5686496 +1611936 5686104 1612552 5685552 1611648 5685832 1612216 5686496 +1611648 5685832 1612216 5686664 1612216 5686496 1611936 5686104 +1612216 5686496 1612272 5686464 1611936 5686104 1612216 5686664 +1611648 5685832 1612216 5686664 1611936 5686104 1612552 5685552 +1612272 5686464 1612552 5685552 1611936 5686104 1612216 5686496 +1611648 5685832 1611936 5686104 1612552 5685552 1612480 5685480 +1611648 5685832 1611936 5686104 1612480 5685480 1612464 5685456 +1611648 5685832 1612216 5686664 1611936 5686104 1612464 5685456 +1611936 5686104 1612272 5686464 1612552 5685552 1612480 5685480 +1611936 5686104 1612552 5685552 1612480 5685480 1612464 5685456 +1611648 5685832 1611936 5686104 1612464 5685456 1612448 5685352 +1611648 5685832 1611288 5687432 1612216 5686664 1611936 5686104 +1611648 5685832 1611288 5687432 1611936 5686104 1612464 5685456 +1612216 5686664 1612216 5686496 1611936 5686104 1611288 5687432 +1611648 5685832 1611224 5687456 1611288 5687432 1611936 5686104 +1611288 5687432 1612096 5687136 1612216 5686664 1611936 5686104 +1612552 5685552 1611936 5686104 1612272 5686464 1612336 5686456 +1612552 5685552 1612480 5685480 1611936 5686104 1612336 5686456 +1611936 5686104 1612216 5686496 1612272 5686464 1612336 5686456 +1612552 5685552 1611936 5686104 1612336 5686456 1612648 5685552 +1611936 5686104 1611992 5686232 1612216 5686664 1612216 5686496 +1611936 5686104 1611992 5686232 1612216 5686496 1612272 5686464 +1611992 5686232 1612216 5686664 1612216 5686496 1612272 5686464 +1611936 5686104 1611288 5687432 1611992 5686232 1612272 5686464 +1611936 5686104 1611992 5686232 1612272 5686464 1612336 5686456 +1611992 5686232 1612216 5686496 1612272 5686464 1612336 5686456 +1611936 5686104 1611288 5687432 1611992 5686232 1612336 5686456 +1611992 5686232 1611288 5687432 1612216 5686664 1612216 5686496 +1612216 5686664 1611992 5686232 1611288 5687432 1612096 5687136 +1611288 5687432 1611440 5687464 1612096 5687136 1611992 5686232 +1612216 5686664 1611992 5686232 1612096 5687136 1612128 5687096 +1612216 5686664 1612216 5686496 1611992 5686232 1612096 5687136 +1611288 5687432 1611992 5686232 1611936 5686104 1611648 5685832 +1611992 5686232 1612336 5686456 1611936 5686104 1611648 5685832 +1611288 5687432 1611992 5686232 1611648 5685832 1611224 5687456 +1611936 5686104 1611992 5686232 1612336 5686456 1612552 5685552 +1611936 5686104 1611992 5686232 1612552 5685552 1612480 5685480 +1611936 5686104 1611648 5685832 1611992 5686232 1612552 5685552 +1611992 5686232 1612272 5686464 1612336 5686456 1612552 5685552 +1612336 5686456 1612648 5685552 1612552 5685552 1611992 5686232 +1611992 5686232 1611648 5685832 1611288 5687432 1612096 5687136 +1612096 5687136 1611984 5686312 1611288 5687432 1611440 5687464 +1612096 5687136 1611984 5686312 1611440 5687464 1612088 5687168 +1612096 5687136 1611992 5686232 1611984 5686312 1611440 5687464 +1611992 5686232 1611984 5686312 1612096 5687136 1612216 5686664 +1612096 5687136 1612128 5687096 1612216 5686664 1611984 5686312 +1611992 5686232 1611984 5686312 1612216 5686664 1612216 5686496 +1611992 5686232 1611984 5686312 1612216 5686496 1612272 5686464 +1611992 5686232 1611984 5686312 1612272 5686464 1612336 5686456 +1611984 5686312 1612216 5686664 1612216 5686496 1612272 5686464 +1611984 5686312 1611440 5687464 1612096 5687136 1612216 5686664 +1611984 5686312 1612096 5687136 1612216 5686664 1612216 5686496 +1611992 5686232 1611288 5687432 1611984 5686312 1612272 5686464 +1611288 5687432 1611984 5686312 1611992 5686232 1611648 5685832 +1611288 5687432 1611984 5686312 1611648 5685832 1611224 5687456 +1611992 5686232 1611936 5686104 1611648 5685832 1611984 5686312 +1611984 5686312 1612272 5686464 1611992 5686232 1611936 5686104 +1611648 5685832 1611288 5687432 1611984 5686312 1611936 5686104 +1611984 5686312 1611648 5685832 1611288 5687432 1611440 5687464 +1611984 5686312 1611960 5686352 1611440 5687464 1612096 5687136 +1611440 5687464 1612088 5687168 1612096 5687136 1611960 5686352 +1611984 5686312 1611960 5686352 1612096 5687136 1612216 5686664 +1611960 5686352 1611440 5687464 1612096 5687136 1612216 5686664 +1612096 5687136 1612128 5687096 1612216 5686664 1611960 5686352 +1612096 5687136 1612128 5687096 1611960 5686352 1611440 5687464 +1612128 5687096 1612248 5686976 1612216 5686664 1611960 5686352 +1611984 5686312 1611960 5686352 1612216 5686664 1612216 5686496 +1611984 5686312 1611960 5686352 1612216 5686496 1612272 5686464 +1611960 5686352 1611288 5687432 1611440 5687464 1612096 5687136 +1611984 5686312 1611288 5687432 1611960 5686352 1612216 5686496 +1611288 5687432 1611960 5686352 1611984 5686312 1611648 5685832 +1611288 5687432 1611960 5686352 1611648 5685832 1611224 5687456 +1611288 5687432 1611440 5687464 1611960 5686352 1611648 5685832 +1611984 5686312 1611936 5686104 1611648 5685832 1611960 5686352 +1611984 5686312 1611992 5686232 1611936 5686104 1611960 5686352 +1611936 5686104 1611648 5685832 1611960 5686352 1611992 5686232 +1611960 5686352 1612216 5686496 1611984 5686312 1611992 5686232 +1611648 5685832 1611288 5687432 1611960 5686352 1611936 5686104 +1612216 5686664 1612216 5686496 1611960 5686352 1612128 5687096 +1611288 5687432 1611888 5686408 1611648 5685832 1611224 5687456 +1611648 5685832 1611440 5685632 1611224 5687456 1611888 5686408 +1611960 5686352 1611888 5686408 1611288 5687432 1611440 5687464 +1611888 5686408 1611960 5686352 1611648 5685832 1611224 5687456 +1611960 5686352 1611648 5685832 1611888 5686408 1611440 5687464 +1611288 5687432 1611440 5687464 1611888 5686408 1611224 5687456 +1611960 5686352 1611888 5686408 1611440 5687464 1612096 5687136 +1611440 5687464 1612088 5687168 1612096 5687136 1611888 5686408 +1611960 5686352 1611888 5686408 1612096 5687136 1612128 5687096 +1611960 5686352 1611888 5686408 1612128 5687096 1612216 5686664 +1611888 5686408 1612096 5687136 1612128 5687096 1612216 5686664 +1611888 5686408 1611288 5687432 1611440 5687464 1612096 5687136 +1611888 5686408 1611440 5687464 1612096 5687136 1612128 5687096 +1611960 5686352 1611648 5685832 1611888 5686408 1612216 5686664 +1612128 5687096 1612248 5686976 1612216 5686664 1611888 5686408 +1611648 5685832 1611888 5686408 1611960 5686352 1611936 5686104 +1611648 5685832 1611224 5687456 1611888 5686408 1611936 5686104 +1611888 5686408 1612216 5686664 1611960 5686352 1611936 5686104 +1611960 5686352 1611992 5686232 1611936 5686104 1611888 5686408 +1611960 5686352 1611992 5686232 1611888 5686408 1612216 5686664 +1611960 5686352 1611984 5686312 1611992 5686232 1611888 5686408 +1611936 5686104 1611648 5685832 1611888 5686408 1611992 5686232 +1611960 5686352 1611888 5686408 1612216 5686664 1612216 5686496 +1611888 5686408 1612128 5687096 1612216 5686664 1612216 5686496 +1611960 5686352 1611992 5686232 1611888 5686408 1612216 5686496 +1611960 5686352 1611888 5686408 1612216 5686496 1611984 5686312 +1611888 5686408 1611816 5686424 1611224 5687456 1611288 5687432 +1611224 5687456 1611816 5686424 1611648 5685832 1611440 5685632 +1611224 5687456 1611816 5686424 1611440 5685632 1611264 5685432 +1611648 5685832 1611816 5686424 1611888 5686408 1611936 5686104 +1611888 5686408 1611936 5686104 1611816 5686424 1611288 5687432 +1611816 5686424 1611440 5685632 1611224 5687456 1611288 5687432 +1611888 5686408 1611816 5686424 1611288 5687432 1611440 5687464 +1611816 5686424 1611224 5687456 1611288 5687432 1611440 5687464 +1611888 5686408 1611816 5686424 1611440 5687464 1612096 5687136 +1611440 5687464 1612088 5687168 1612096 5687136 1611816 5686424 +1611888 5686408 1611816 5686424 1612096 5687136 1612128 5687096 +1611888 5686408 1611816 5686424 1612128 5687096 1612216 5686664 +1611888 5686408 1611816 5686424 1612216 5686664 1612216 5686496 +1611816 5686424 1611440 5687464 1612096 5687136 1612128 5687096 +1611816 5686424 1612096 5687136 1612128 5687096 1612216 5686664 +1611888 5686408 1611936 5686104 1611816 5686424 1612216 5686664 +1611816 5686424 1611288 5687432 1611440 5687464 1612096 5687136 +1611648 5685832 1611504 5685680 1611440 5685632 1611816 5686424 +1612128 5687096 1612248 5686976 1612216 5686664 1611816 5686424 +1611816 5686424 1611936 5686104 1611648 5685832 1611440 5685632 +1611888 5686408 1611992 5686232 1611936 5686104 1611816 5686424 +1611936 5686104 1611648 5685832 1611816 5686424 1611992 5686232 +1611888 5686408 1611992 5686232 1611816 5686424 1612216 5686664 +1611888 5686408 1611960 5686352 1611992 5686232 1611816 5686424 +1611224 5687456 1611712 5686408 1611440 5685632 1611264 5685432 +1611440 5685632 1611712 5686408 1611816 5686424 1611648 5685832 +1611816 5686424 1611712 5686408 1611224 5687456 1611288 5687432 +1611816 5686424 1611712 5686408 1611288 5687432 1611440 5687464 +1611712 5686408 1611224 5687456 1611288 5687432 1611440 5687464 +1611816 5686424 1611712 5686408 1611440 5687464 1612096 5687136 +1611440 5687464 1612088 5687168 1612096 5687136 1611712 5686408 +1611712 5686408 1611288 5687432 1611440 5687464 1612096 5687136 +1611816 5686424 1611712 5686408 1612096 5687136 1612128 5687096 +1611440 5685632 1611712 5686408 1611648 5685832 1611504 5685680 +1611712 5686408 1611816 5686424 1611648 5685832 1611504 5685680 +1611712 5686408 1612096 5687136 1611816 5686424 1611648 5685832 +1611816 5686424 1611936 5686104 1611648 5685832 1611712 5686408 +1611648 5685832 1611504 5685680 1611712 5686408 1611936 5686104 +1611816 5686424 1611992 5686232 1611936 5686104 1611712 5686408 +1611816 5686424 1611936 5686104 1611712 5686408 1612096 5687136 +1611712 5686408 1611440 5685632 1611224 5687456 1611288 5687432 +1611440 5685632 1611224 5687456 1611712 5686408 1611504 5685680 +1611224 5687456 1611392 5686312 1611440 5685632 1611264 5685432 +1611224 5687456 1611392 5686312 1611264 5685432 1610768 5684904 +1611264 5685432 1611184 5685272 1610768 5684904 1611392 5686312 +1611392 5686312 1611440 5685632 1611264 5685432 1610768 5684904 +1611224 5687456 1611392 5686312 1610768 5684904 1610672 5684808 +1611392 5686312 1611264 5685432 1610768 5684904 1610672 5684808 +1611712 5686408 1611392 5686312 1611224 5687456 1611288 5687432 +1611712 5686408 1611392 5686312 1611288 5687432 1611440 5687464 +1611712 5686408 1611440 5685632 1611392 5686312 1611288 5687432 +1611440 5685632 1611392 5686312 1611712 5686408 1611504 5685680 +1611712 5686408 1611648 5685832 1611504 5685680 1611392 5686312 +1611712 5686408 1611936 5686104 1611648 5685832 1611392 5686312 +1611392 5686312 1611288 5687432 1611712 5686408 1611648 5685832 +1611504 5685680 1611440 5685632 1611392 5686312 1611648 5685832 +1611224 5687456 1611392 5686312 1610672 5684808 1610536 5684592 +1611224 5687456 1611288 5687432 1611392 5686312 1610672 5684808 +1611392 5686312 1611504 5685680 1611440 5685632 1611264 5685432 +1610672 5684808 1611224 5686216 1611392 5686312 1610768 5684904 +1611392 5686312 1611264 5685432 1610768 5684904 1611224 5686216 +1611264 5685432 1611184 5685272 1610768 5684904 1611224 5686216 +1611264 5685432 1611184 5685272 1611224 5686216 1611392 5686312 +1611392 5686312 1611440 5685632 1611264 5685432 1611224 5686216 +1611264 5685432 1611184 5685272 1611224 5686216 1611440 5685632 +1610672 5684808 1611224 5687456 1611224 5686216 1610768 5684904 +1611184 5685272 1610840 5684936 1610768 5684904 1611224 5686216 +1610768 5684904 1610672 5684808 1611224 5686216 1611184 5685272 +1611224 5687456 1611224 5686216 1610672 5684808 1610536 5684592 +1611392 5686312 1611224 5686216 1611224 5687456 1611288 5687432 +1611224 5686216 1611224 5687456 1611392 5686312 1611440 5685632 +1611392 5686312 1611504 5685680 1611440 5685632 1611224 5686216 +1611440 5685632 1611264 5685432 1611224 5686216 1611504 5685680 +1611392 5686312 1611648 5685832 1611504 5685680 1611224 5686216 +1611392 5686312 1611712 5686408 1611648 5685832 1611224 5686216 +1611392 5686312 1611648 5685832 1611224 5686216 1611224 5687456 +1611504 5685680 1611440 5685632 1611224 5686216 1611648 5685832 +1610672 5684808 1611136 5686104 1611224 5686216 1610768 5684904 +1610672 5684808 1611224 5687456 1611136 5686104 1610768 5684904 +1611224 5686216 1611184 5685272 1610768 5684904 1611136 5686104 +1611224 5686216 1611264 5685432 1611184 5685272 1611136 5686104 +1611224 5686216 1611440 5685632 1611264 5685432 1611136 5686104 +1611264 5685432 1611184 5685272 1611136 5686104 1611440 5685632 +1611224 5686216 1611504 5685680 1611440 5685632 1611136 5686104 +1611440 5685632 1611264 5685432 1611136 5686104 1611504 5685680 +1610768 5684904 1610672 5684808 1611136 5686104 1611184 5685272 +1611184 5685272 1610840 5684936 1610768 5684904 1611136 5686104 +1611184 5685272 1610768 5684904 1611136 5686104 1611264 5685432 +1611224 5687456 1611136 5686104 1610672 5684808 1610536 5684592 +1611224 5687456 1611224 5686216 1611136 5686104 1610536 5684592 +1611136 5686104 1610768 5684904 1610672 5684808 1610536 5684592 +1611224 5687456 1611136 5686104 1610536 5684592 1601088 5681704 +1611224 5686216 1611648 5685832 1611504 5685680 1611136 5686104 +1611504 5685680 1611440 5685632 1611136 5686104 1611648 5685832 +1611224 5686216 1611392 5686312 1611648 5685832 1611136 5686104 +1611224 5686216 1611136 5686104 1611224 5687456 1611392 5686312 +1611136 5686104 1611224 5687456 1611224 5686216 1611648 5685832 +1611136 5686104 1611016 5685968 1611224 5687456 1611224 5686216 +1611224 5687456 1611016 5685968 1610536 5684592 1601088 5681704 +1611224 5687456 1611016 5685968 1601088 5681704 1611264 5689408 +1611224 5687456 1611136 5686104 1611016 5685968 1601088 5681704 +1610536 5684592 1601128 5681664 1601088 5681704 1611016 5685968 +1611016 5685968 1611136 5686104 1610536 5684592 1601088 5681704 +1610536 5684592 1611016 5685968 1611136 5686104 1610672 5684808 +1611016 5685968 1611224 5687456 1611136 5686104 1610672 5684808 +1611136 5686104 1610768 5684904 1610672 5684808 1611016 5685968 +1611136 5686104 1611184 5685272 1610768 5684904 1611016 5685968 +1611136 5686104 1611184 5685272 1611016 5685968 1611224 5687456 +1610768 5684904 1610672 5684808 1611016 5685968 1611184 5685272 +1611184 5685272 1610840 5684936 1610768 5684904 1611016 5685968 +1611184 5685272 1610840 5684936 1611016 5685968 1611136 5686104 +1610768 5684904 1610672 5684808 1611016 5685968 1610840 5684936 +1611136 5686104 1611264 5685432 1611184 5685272 1611016 5685968 +1611136 5686104 1611440 5685632 1611264 5685432 1611016 5685968 +1611136 5686104 1611504 5685680 1611440 5685632 1611016 5685968 +1611184 5685272 1610840 5684936 1611016 5685968 1611264 5685432 +1611136 5686104 1611440 5685632 1611016 5685968 1611224 5687456 +1611264 5685432 1611184 5685272 1611016 5685968 1611440 5685632 +1611184 5685272 1611088 5685000 1610840 5684936 1611016 5685968 +1610536 5684592 1601088 5681704 1611016 5685968 1610672 5684808 +1610672 5684808 1610536 5684592 1611016 5685968 1610768 5684904 +1601088 5681704 1610960 5685920 1610536 5684592 1601128 5681664 +1611016 5685968 1610960 5685920 1601088 5681704 1611224 5687456 +1601088 5681704 1611264 5689408 1611224 5687456 1610960 5685920 +1611016 5685968 1610960 5685920 1611224 5687456 1611136 5686104 +1611224 5687456 1611224 5686216 1611136 5686104 1610960 5685920 +1610960 5685920 1601088 5681704 1611224 5687456 1611136 5686104 +1611016 5685968 1610536 5684592 1610960 5685920 1611136 5686104 +1610536 5684592 1610960 5685920 1611016 5685968 1610672 5684808 +1610960 5685920 1611136 5686104 1611016 5685968 1610672 5684808 +1610960 5685920 1610536 5684592 1601088 5681704 1611224 5687456 +1610536 5684592 1601088 5681704 1610960 5685920 1610672 5684808 +1611016 5685968 1610768 5684904 1610672 5684808 1610960 5685920 +1611016 5685968 1610840 5684936 1610768 5684904 1610960 5685920 +1611016 5685968 1611184 5685272 1610840 5684936 1610960 5685920 +1611016 5685968 1611264 5685432 1611184 5685272 1610960 5685920 +1610840 5684936 1610768 5684904 1610960 5685920 1611184 5685272 +1611184 5685272 1610840 5684936 1610960 5685920 1611264 5685432 +1611016 5685968 1611440 5685632 1611264 5685432 1610960 5685920 +1611016 5685968 1611136 5686104 1611440 5685632 1610960 5685920 +1611264 5685432 1611184 5685272 1610960 5685920 1611440 5685632 +1611184 5685272 1611088 5685000 1610840 5684936 1610960 5685920 +1611016 5685968 1611440 5685632 1610960 5685920 1611136 5686104 +1610672 5684808 1610536 5684592 1610960 5685920 1610768 5684904 +1610768 5684904 1610672 5684808 1610960 5685920 1610840 5684936 +1601088 5681704 1610656 5685736 1610536 5684592 1601128 5681664 +1610960 5685920 1610656 5685736 1601088 5681704 1611224 5687456 +1610656 5685736 1610536 5684592 1601088 5681704 1611224 5687456 +1601088 5681704 1611264 5689408 1611224 5687456 1610656 5685736 +1601088 5681704 1611264 5689408 1610656 5685736 1610536 5684592 +1611264 5689408 1611360 5688736 1611224 5687456 1610656 5685736 +1601088 5681704 1602016 5695848 1611264 5689408 1610656 5685736 +1601088 5681704 1602016 5695848 1610656 5685736 1610536 5684592 +1602016 5695848 1611264 5689480 1611264 5689408 1610656 5685736 +1611264 5689408 1611224 5687456 1610656 5685736 1602016 5695848 +1610960 5685920 1610656 5685736 1611224 5687456 1611136 5686104 +1611224 5687456 1611224 5686216 1611136 5686104 1610656 5685736 +1610960 5685920 1610656 5685736 1611136 5686104 1611016 5685968 +1611224 5687456 1611136 5686104 1610656 5685736 1611264 5689408 +1610960 5685920 1610536 5684592 1610656 5685736 1611136 5686104 +1610536 5684592 1610656 5685736 1610960 5685920 1610672 5684808 +1610536 5684592 1601088 5681704 1610656 5685736 1610672 5684808 +1610960 5685920 1610768 5684904 1610672 5684808 1610656 5685736 +1610656 5685736 1611136 5686104 1610960 5685920 1610768 5684904 +1610672 5684808 1610536 5684592 1610656 5685736 1610768 5684904 +1601088 5681704 1600992 5681736 1602016 5695848 1610656 5685736 +1610960 5685920 1610840 5684936 1610768 5684904 1610656 5685736 +1610960 5685920 1611184 5685272 1610840 5684936 1610656 5685736 +1610960 5685920 1611264 5685432 1611184 5685272 1610656 5685736 +1610960 5685920 1611440 5685632 1611264 5685432 1610656 5685736 +1611184 5685272 1610840 5684936 1610656 5685736 1611264 5685432 +1611184 5685272 1611088 5685000 1610840 5684936 1610656 5685736 +1610768 5684904 1610672 5684808 1610656 5685736 1610840 5684936 +1610960 5685920 1611264 5685432 1610656 5685736 1611136 5686104 +1610840 5684936 1610768 5684904 1610656 5685736 1611184 5685272 +1601088 5681704 1610448 5685656 1610656 5685736 1610536 5684592 +1610448 5685656 1602016 5695848 1610656 5685736 1610536 5684592 +1610656 5685736 1610672 5684808 1610536 5684592 1610448 5685656 +1610536 5684592 1601088 5681704 1610448 5685656 1610672 5684808 +1610656 5685736 1610672 5684808 1610448 5685656 1602016 5695848 +1610656 5685736 1610448 5685656 1602016 5695848 1611264 5689408 +1610656 5685736 1610672 5684808 1610448 5685656 1611264 5689408 +1610448 5685656 1601088 5681704 1602016 5695848 1611264 5689408 +1602016 5695848 1611264 5689480 1611264 5689408 1610448 5685656 +1610656 5685736 1610448 5685656 1611264 5689408 1611224 5687456 +1610656 5685736 1610672 5684808 1610448 5685656 1611224 5687456 +1611264 5689408 1611360 5688736 1611224 5687456 1610448 5685656 +1610448 5685656 1602016 5695848 1611264 5689408 1611224 5687456 +1601088 5681704 1610448 5685656 1610536 5684592 1601128 5681664 +1610448 5685656 1610672 5684808 1610536 5684592 1601128 5681664 +1610536 5684592 1601592 5681216 1601128 5681664 1610448 5685656 +1610536 5684592 1601592 5681216 1610448 5685656 1610672 5684808 +1601592 5681216 1601160 5681616 1601128 5681664 1610448 5685656 +1601128 5681664 1601088 5681704 1610448 5685656 1601592 5681216 +1610656 5685736 1610448 5685656 1611224 5687456 1611136 5686104 +1610656 5685736 1610768 5684904 1610672 5684808 1610448 5685656 +1610656 5685736 1610768 5684904 1610448 5685656 1611224 5687456 +1610672 5684808 1610536 5684592 1610448 5685656 1610768 5684904 +1610656 5685736 1610840 5684936 1610768 5684904 1610448 5685656 +1610656 5685736 1610840 5684936 1610448 5685656 1611224 5687456 +1610768 5684904 1610672 5684808 1610448 5685656 1610840 5684936 +1602016 5695848 1610448 5685656 1601088 5681704 1600992 5681736 +1610656 5685736 1611184 5685272 1610840 5684936 1610448 5685656 +1601088 5681704 1602016 5695848 1610448 5685656 1601128 5681664 +1610536 5684592 1610432 5683632 1601592 5681216 1610448 5685656 +1610448 5685656 1610312 5685648 1602016 5695848 1611264 5689408 +1610448 5685656 1601088 5681704 1610312 5685648 1611264 5689408 +1602016 5695848 1611264 5689480 1611264 5689408 1610312 5685648 +1610448 5685656 1610312 5685648 1611264 5689408 1611224 5687456 +1610312 5685648 1602016 5695848 1611264 5689408 1611224 5687456 +1610448 5685656 1601088 5681704 1610312 5685648 1611224 5687456 +1611264 5689408 1611360 5688736 1611224 5687456 1610312 5685648 +1610448 5685656 1610312 5685648 1611224 5687456 1610656 5685736 +1610448 5685656 1601088 5681704 1610312 5685648 1610656 5685736 +1610312 5685648 1611264 5689408 1611224 5687456 1610656 5685736 +1611224 5687456 1611136 5686104 1610656 5685736 1610312 5685648 +1611224 5687456 1611136 5686104 1610312 5685648 1611264 5689408 +1610656 5685736 1610448 5685656 1610312 5685648 1611136 5686104 +1611224 5687456 1611224 5686216 1611136 5686104 1610312 5685648 +1611136 5686104 1610960 5685920 1610656 5685736 1610312 5685648 +1602016 5695848 1610312 5685648 1601088 5681704 1600992 5681736 +1601088 5681704 1610312 5685648 1610448 5685656 1601128 5681664 +1610312 5685648 1610656 5685736 1610448 5685656 1601128 5681664 +1610448 5685656 1601592 5681216 1601128 5681664 1610312 5685648 +1610448 5685656 1601592 5681216 1610312 5685648 1610656 5685736 +1610448 5685656 1610536 5684592 1601592 5681216 1610312 5685648 +1610448 5685656 1610672 5684808 1610536 5684592 1610312 5685648 +1610448 5685656 1610768 5684904 1610672 5684808 1610312 5685648 +1610672 5684808 1610536 5684592 1610312 5685648 1610768 5684904 +1610448 5685656 1610768 5684904 1610312 5685648 1610656 5685736 +1610536 5684592 1601592 5681216 1610312 5685648 1610672 5684808 +1601592 5681216 1601160 5681616 1601128 5681664 1610312 5685648 +1601592 5681216 1601128 5681664 1610312 5685648 1610536 5684592 +1610448 5685656 1610840 5684936 1610768 5684904 1610312 5685648 +1601128 5681664 1601088 5681704 1610312 5685648 1601592 5681216 +1610312 5685648 1601088 5681704 1602016 5695848 1611264 5689408 +1601088 5681704 1602016 5695848 1610312 5685648 1601128 5681664 +1610536 5684592 1610432 5683632 1601592 5681216 1610312 5685648 +1610432 5683632 1610432 5683584 1601592 5681216 1610312 5685648 +1610536 5684592 1610432 5683632 1610312 5685648 1610672 5684808 +1601592 5681216 1601128 5681664 1610312 5685648 1610432 5683632 +1610536 5684592 1610496 5683784 1610432 5683632 1610312 5685648 +1602016 5695848 1610200 5685672 1601088 5681704 1600992 5681736 +1610312 5685648 1610200 5685672 1602016 5695848 1611264 5689408 +1610312 5685648 1610200 5685672 1611264 5689408 1611224 5687456 +1611264 5689408 1611360 5688736 1611224 5687456 1610200 5685672 +1602016 5695848 1611264 5689480 1611264 5689408 1610200 5685672 +1610312 5685648 1610200 5685672 1611224 5687456 1611136 5686104 +1610200 5685672 1611264 5689408 1611224 5687456 1611136 5686104 +1611224 5687456 1611224 5686216 1611136 5686104 1610200 5685672 +1610312 5685648 1610200 5685672 1611136 5686104 1610656 5685736 +1610200 5685672 1611224 5687456 1611136 5686104 1610656 5685736 +1610312 5685648 1610200 5685672 1610656 5685736 1610448 5685656 +1611136 5686104 1610960 5685920 1610656 5685736 1610200 5685672 +1611136 5686104 1610960 5685920 1610200 5685672 1611224 5687456 +1611136 5686104 1611016 5685968 1610960 5685920 1610200 5685672 +1610200 5685672 1610960 5685920 1610656 5685736 1610448 5685656 +1610200 5685672 1602016 5695848 1611264 5689408 1611224 5687456 +1610312 5685648 1601088 5681704 1610200 5685672 1610448 5685656 +1601088 5681704 1610200 5685672 1610312 5685648 1601128 5681664 +1601088 5681704 1602016 5695848 1610200 5685672 1601128 5681664 +1610312 5685648 1601592 5681216 1601128 5681664 1610200 5685672 +1601592 5681216 1601160 5681616 1601128 5681664 1610200 5685672 +1610312 5685648 1610432 5683632 1601592 5681216 1610200 5685672 +1610432 5683632 1610432 5683584 1601592 5681216 1610200 5685672 +1601592 5681216 1601128 5681664 1610200 5685672 1610432 5683632 +1610200 5685672 1610448 5685656 1610312 5685648 1610432 5683632 +1601128 5681664 1601088 5681704 1610200 5685672 1601592 5681216 +1610200 5685672 1601088 5681704 1602016 5695848 1611264 5689408 +1610312 5685648 1610536 5684592 1610432 5683632 1610200 5685672 +1610312 5685648 1610672 5684808 1610536 5684592 1610200 5685672 +1610312 5685648 1610768 5684904 1610672 5684808 1610200 5685672 +1610432 5683632 1601592 5681216 1610200 5685672 1610536 5684592 +1610536 5684592 1610496 5683784 1610432 5683632 1610200 5685672 +1610312 5685648 1610672 5684808 1610200 5685672 1610448 5685656 +1610536 5684592 1610432 5683632 1610200 5685672 1610672 5684808 +1602016 5695848 1610168 5685696 1601088 5681704 1600992 5681736 +1601088 5681704 1610168 5685696 1610200 5685672 1601128 5681664 +1610168 5685696 1602016 5695848 1610200 5685672 1601128 5681664 +1601088 5681704 1602016 5695848 1610168 5685696 1601128 5681664 +1610200 5685672 1601592 5681216 1601128 5681664 1610168 5685696 +1601592 5681216 1601160 5681616 1601128 5681664 1610168 5685696 +1610200 5685672 1601592 5681216 1610168 5685696 1602016 5695848 +1601128 5681664 1601088 5681704 1610168 5685696 1601592 5681216 +1610200 5685672 1610432 5683632 1601592 5681216 1610168 5685696 +1610432 5683632 1610432 5683584 1601592 5681216 1610168 5685696 +1610200 5685672 1610536 5684592 1610432 5683632 1610168 5685696 +1610536 5684592 1610496 5683784 1610432 5683632 1610168 5685696 +1610200 5685672 1610536 5684592 1610168 5685696 1602016 5695848 +1610432 5683632 1601592 5681216 1610168 5685696 1610536 5684592 +1601592 5681216 1601128 5681664 1610168 5685696 1610432 5683632 +1610200 5685672 1610168 5685696 1602016 5695848 1611264 5689408 +1602016 5695848 1611264 5689480 1611264 5689408 1610168 5685696 +1610200 5685672 1610536 5684592 1610168 5685696 1611264 5689408 +1610168 5685696 1601088 5681704 1602016 5695848 1611264 5689408 +1610200 5685672 1610168 5685696 1611264 5689408 1611224 5687456 +1610200 5685672 1610168 5685696 1611224 5687456 1611136 5686104 +1611264 5689408 1611360 5688736 1611224 5687456 1610168 5685696 +1611360 5688736 1611408 5688288 1611224 5687456 1610168 5685696 +1611264 5689408 1611360 5688848 1611360 5688736 1610168 5685696 +1610200 5685672 1610168 5685696 1611136 5686104 1610960 5685920 +1610168 5685696 1611224 5687456 1611136 5686104 1610960 5685920 +1611224 5687456 1611224 5686216 1611136 5686104 1610168 5685696 +1611136 5686104 1611016 5685968 1610960 5685920 1610168 5685696 +1610200 5685672 1610168 5685696 1610960 5685920 1610656 5685736 +1610168 5685696 1611136 5686104 1610960 5685920 1610656 5685736 +1610200 5685672 1610168 5685696 1610656 5685736 1610448 5685656 +1610200 5685672 1610168 5685696 1610448 5685656 1610312 5685648 +1610168 5685696 1610960 5685920 1610656 5685736 1610448 5685656 +1610168 5685696 1610656 5685736 1610448 5685656 1610312 5685648 +1610200 5685672 1610536 5684592 1610168 5685696 1610312 5685648 +1610168 5685696 1611360 5688736 1611224 5687456 1611136 5686104 +1610168 5685696 1602016 5695848 1611264 5689408 1611360 5688736 +1610200 5685672 1610672 5684808 1610536 5684592 1610168 5685696 +1602016 5695848 1610080 5685800 1601088 5681704 1600992 5681736 +1602016 5695848 1610168 5685696 1610080 5685800 1600992 5681736 +1610080 5685800 1610168 5685696 1601088 5681704 1600992 5681736 +1602016 5695848 1610080 5685800 1600992 5681736 1601824 5695840 +1610168 5685696 1610080 5685800 1602016 5695848 1611264 5689408 +1610080 5685800 1600992 5681736 1602016 5695848 1611264 5689408 +1602016 5695848 1611264 5689480 1611264 5689408 1610080 5685800 +1602016 5695848 1611264 5689480 1610080 5685800 1600992 5681736 +1602016 5695848 1602112 5695896 1611264 5689480 1610080 5685800 +1611264 5689408 1610168 5685696 1610080 5685800 1611264 5689480 +1610168 5685696 1601088 5681704 1610080 5685800 1611264 5689408 +1601088 5681704 1610080 5685800 1610168 5685696 1601128 5681664 +1601088 5681704 1600992 5681736 1610080 5685800 1601128 5681664 +1610168 5685696 1601592 5681216 1601128 5681664 1610080 5685800 +1601592 5681216 1601160 5681616 1601128 5681664 1610080 5685800 +1610080 5685800 1611264 5689408 1610168 5685696 1601592 5681216 +1601128 5681664 1601088 5681704 1610080 5685800 1601592 5681216 +1610168 5685696 1610432 5683632 1601592 5681216 1610080 5685800 +1610432 5683632 1610432 5683584 1601592 5681216 1610080 5685800 +1601592 5681216 1601128 5681664 1610080 5685800 1610432 5683632 +1610168 5685696 1610432 5683632 1610080 5685800 1611264 5689408 +1610168 5685696 1610536 5684592 1610432 5683632 1610080 5685800 +1610168 5685696 1610200 5685672 1610536 5684592 1610080 5685800 +1610536 5684592 1610496 5683784 1610432 5683632 1610080 5685800 +1610168 5685696 1610536 5684592 1610080 5685800 1611264 5689408 +1610432 5683632 1601592 5681216 1610080 5685800 1610536 5684592 +1610168 5685696 1610080 5685800 1611264 5689408 1611360 5688736 +1611264 5689408 1611360 5688848 1611360 5688736 1610080 5685800 +1610168 5685696 1610080 5685800 1611360 5688736 1611224 5687456 +1611360 5688736 1611408 5688288 1611224 5687456 1610080 5685800 +1610080 5685800 1611264 5689480 1611264 5689408 1611360 5688736 +1610168 5685696 1610536 5684592 1610080 5685800 1611224 5687456 +1610168 5685696 1610080 5685800 1611224 5687456 1611136 5686104 +1610168 5685696 1610080 5685800 1611136 5686104 1610960 5685920 +1610080 5685800 1611360 5688736 1611224 5687456 1611136 5686104 +1610168 5685696 1610080 5685800 1610960 5685920 1610656 5685736 +1610080 5685800 1611136 5686104 1610960 5685920 1610656 5685736 +1611224 5687456 1611224 5686216 1611136 5686104 1610080 5685800 +1611224 5687456 1611224 5686216 1610080 5685800 1611360 5688736 +1611136 5686104 1611016 5685968 1610960 5685920 1610080 5685800 +1610960 5685920 1610656 5685736 1610080 5685800 1611016 5685968 +1610168 5685696 1610080 5685800 1610656 5685736 1610448 5685656 +1610080 5685800 1610960 5685920 1610656 5685736 1610448 5685656 +1610168 5685696 1610080 5685800 1610448 5685656 1610312 5685648 +1610168 5685696 1610080 5685800 1610312 5685648 1610200 5685672 +1610080 5685800 1610656 5685736 1610448 5685656 1610312 5685648 +1610168 5685696 1610536 5684592 1610080 5685800 1610312 5685648 +1610080 5685800 1611224 5686216 1611136 5686104 1611016 5685968 +1610080 5685800 1611264 5689408 1611360 5688736 1611224 5687456 +1611224 5687456 1611392 5686312 1611224 5686216 1610080 5685800 +1602016 5695848 1610032 5685920 1610080 5685800 1600992 5681736 +1610032 5685920 1611264 5689480 1610080 5685800 1600992 5681736 +1611264 5689480 1610032 5685920 1602016 5695848 1602112 5695896 +1610080 5685800 1610032 5685920 1611264 5689480 1611264 5689408 +1610080 5685800 1600992 5681736 1610032 5685920 1611264 5689408 +1610032 5685920 1602016 5695848 1611264 5689480 1611264 5689408 +1602016 5695848 1611264 5689480 1610032 5685920 1600992 5681736 +1602016 5695848 1610032 5685920 1600992 5681736 1601824 5695840 +1610080 5685800 1601088 5681704 1600992 5681736 1610032 5685920 +1600992 5681736 1602016 5695848 1610032 5685920 1601088 5681704 +1610080 5685800 1601088 5681704 1610032 5685920 1611264 5689408 +1610080 5685800 1601128 5681664 1601088 5681704 1610032 5685920 +1610080 5685800 1601128 5681664 1610032 5685920 1611264 5689408 +1601088 5681704 1600992 5681736 1610032 5685920 1601128 5681664 +1610080 5685800 1610032 5685920 1611264 5689408 1611360 5688736 +1610080 5685800 1601128 5681664 1610032 5685920 1611360 5688736 +1611264 5689408 1611360 5688848 1611360 5688736 1610032 5685920 +1610032 5685920 1611264 5689480 1611264 5689408 1611360 5688736 +1610080 5685800 1601592 5681216 1601128 5681664 1610032 5685920 +1610080 5685800 1601592 5681216 1610032 5685920 1611360 5688736 +1601128 5681664 1601088 5681704 1610032 5685920 1601592 5681216 +1601592 5681216 1601160 5681616 1601128 5681664 1610032 5685920 +1610080 5685800 1610432 5683632 1601592 5681216 1610032 5685920 +1610080 5685800 1610032 5685920 1611360 5688736 1611224 5687456 +1610080 5685800 1601592 5681216 1610032 5685920 1611224 5687456 +1611360 5688736 1611408 5688288 1611224 5687456 1610032 5685920 +1610080 5685800 1610032 5685920 1611224 5687456 1611224 5686216 +1610080 5685800 1601592 5681216 1610032 5685920 1611224 5686216 +1610080 5685800 1610032 5685920 1611224 5686216 1611136 5686104 +1610080 5685800 1601592 5681216 1610032 5685920 1611136 5686104 +1610032 5685920 1611224 5687456 1611224 5686216 1611136 5686104 +1610032 5685920 1611264 5689408 1611360 5688736 1611224 5687456 +1610080 5685800 1610032 5685920 1611136 5686104 1611016 5685968 +1610080 5685800 1601592 5681216 1610032 5685920 1611016 5685968 +1610032 5685920 1611224 5686216 1611136 5686104 1611016 5685968 +1610080 5685800 1610032 5685920 1611016 5685968 1610960 5685920 +1610080 5685800 1610032 5685920 1610960 5685920 1610656 5685736 +1610080 5685800 1601592 5681216 1610032 5685920 1610656 5685736 +1610080 5685800 1610032 5685920 1610656 5685736 1610448 5685656 +1610032 5685920 1610960 5685920 1610656 5685736 1610448 5685656 +1610080 5685800 1601592 5681216 1610032 5685920 1610448 5685656 +1610032 5685920 1611016 5685968 1610960 5685920 1610656 5685736 +1610080 5685800 1610032 5685920 1610448 5685656 1610312 5685648 +1610032 5685920 1611136 5686104 1611016 5685968 1610960 5685920 +1610032 5685920 1611360 5688736 1611224 5687456 1611224 5686216 +1611224 5687456 1611392 5686312 1611224 5686216 1610032 5685920 +1610032 5685920 1610032 5685992 1611264 5689480 1611264 5689408 +1610032 5685920 1602016 5695848 1610032 5685992 1611264 5689408 +1611264 5689480 1610032 5685992 1602016 5695848 1602112 5695896 +1610032 5685920 1610032 5685992 1611264 5689408 1611360 5688736 +1610032 5685992 1611264 5689480 1611264 5689408 1611360 5688736 +1610032 5685920 1602016 5695848 1610032 5685992 1611360 5688736 +1611264 5689408 1611360 5688848 1611360 5688736 1610032 5685992 +1602016 5695848 1610032 5685992 1610032 5685920 1600992 5681736 +1610032 5685920 1601088 5681704 1600992 5681736 1610032 5685992 +1610032 5685992 1611360 5688736 1610032 5685920 1601088 5681704 +1600992 5681736 1602016 5695848 1610032 5685992 1601088 5681704 +1610032 5685992 1602016 5695848 1611264 5689480 1611264 5689408 +1602016 5695848 1610032 5685992 1600992 5681736 1601824 5695840 +1610032 5685920 1601128 5681664 1601088 5681704 1610032 5685992 +1610032 5685920 1610032 5685992 1611360 5688736 1611224 5687456 +1610032 5685920 1601088 5681704 1610032 5685992 1611224 5687456 +1611360 5688736 1611408 5688288 1611224 5687456 1610032 5685992 +1610032 5685992 1611264 5689408 1611360 5688736 1611224 5687456 +1610032 5685920 1610032 5685992 1611224 5687456 1611224 5686216 +1610032 5685920 1601088 5681704 1610032 5685992 1611224 5686216 +1610032 5685920 1610032 5685992 1611224 5686216 1611136 5686104 +1610032 5685920 1601088 5681704 1610032 5685992 1611136 5686104 +1610032 5685920 1610032 5685992 1611136 5686104 1611016 5685968 +1610032 5685920 1601088 5681704 1610032 5685992 1611016 5685968 +1610032 5685992 1611224 5686216 1611136 5686104 1611016 5685968 +1610032 5685992 1611360 5688736 1611224 5687456 1611224 5686216 +1610032 5685920 1610032 5685992 1611016 5685968 1610960 5685920 +1610032 5685920 1601088 5681704 1610032 5685992 1610960 5685920 +1610032 5685992 1611136 5686104 1611016 5685968 1610960 5685920 +1610032 5685920 1610032 5685992 1610960 5685920 1610656 5685736 +1610032 5685920 1610032 5685992 1610656 5685736 1610448 5685656 +1610032 5685920 1601088 5681704 1610032 5685992 1610448 5685656 +1610032 5685920 1610032 5685992 1610448 5685656 1610080 5685800 +1610032 5685992 1610656 5685736 1610448 5685656 1610080 5685800 +1610032 5685920 1601088 5681704 1610032 5685992 1610080 5685800 +1610032 5685992 1610960 5685920 1610656 5685736 1610448 5685656 +1610448 5685656 1610312 5685648 1610080 5685800 1610032 5685992 +1610448 5685656 1610312 5685648 1610032 5685992 1610656 5685736 +1610080 5685800 1610032 5685920 1610032 5685992 1610312 5685648 +1610312 5685648 1610168 5685696 1610080 5685800 1610032 5685992 +1610032 5685992 1611016 5685968 1610960 5685920 1610656 5685736 +1610032 5685992 1611224 5687456 1611224 5686216 1611136 5686104 +1602016 5695848 1611264 5689480 1610032 5685992 1600992 5681736 +1611224 5687456 1611392 5686312 1611224 5686216 1610032 5685992 +1611264 5689408 1610096 5686136 1610032 5685992 1611264 5689480 +1611360 5688736 1610096 5686136 1611264 5689408 1611360 5688848 +1610032 5685992 1610096 5686136 1611360 5688736 1611224 5687456 +1611360 5688736 1611408 5688288 1611224 5687456 1610096 5686136 +1610032 5685992 1602016 5695848 1611264 5689480 1610096 5686136 +1611264 5689480 1611264 5689408 1610096 5686136 1602016 5695848 +1602016 5695848 1602112 5695896 1611264 5689480 1610096 5686136 +1610096 5686136 1611224 5687456 1610032 5685992 1602016 5695848 +1610032 5685992 1610096 5686136 1611224 5687456 1611224 5686216 +1610096 5686136 1611360 5688736 1611224 5687456 1611224 5686216 +1610032 5685992 1602016 5695848 1610096 5686136 1611224 5686216 +1610032 5685992 1610096 5686136 1611224 5686216 1611136 5686104 +1610032 5685992 1610096 5686136 1611136 5686104 1611016 5685968 +1610032 5685992 1602016 5695848 1610096 5686136 1611016 5685968 +1610032 5685992 1610096 5686136 1611016 5685968 1610960 5685920 +1610096 5686136 1611136 5686104 1611016 5685968 1610960 5685920 +1610032 5685992 1602016 5695848 1610096 5686136 1610960 5685920 +1610096 5686136 1611224 5687456 1611224 5686216 1611136 5686104 +1610032 5685992 1610096 5686136 1610960 5685920 1610656 5685736 +1610032 5685992 1602016 5695848 1610096 5686136 1610656 5685736 +1610096 5686136 1611016 5685968 1610960 5685920 1610656 5685736 +1610032 5685992 1610096 5686136 1610656 5685736 1610448 5685656 +1610032 5685992 1610096 5686136 1610448 5685656 1610312 5685648 +1610032 5685992 1602016 5695848 1610096 5686136 1610312 5685648 +1610096 5686136 1610656 5685736 1610448 5685656 1610312 5685648 +1610032 5685992 1610096 5686136 1610312 5685648 1610080 5685800 +1610096 5686136 1610448 5685656 1610312 5685648 1610080 5685800 +1610032 5685992 1610096 5686136 1610080 5685800 1610032 5685920 +1610032 5685992 1602016 5695848 1610096 5686136 1610080 5685800 +1610312 5685648 1610168 5685696 1610080 5685800 1610096 5686136 +1610096 5686136 1610960 5685920 1610656 5685736 1610448 5685656 +1610096 5686136 1611224 5686216 1611136 5686104 1611016 5685968 +1610032 5685992 1600992 5681736 1602016 5695848 1610096 5686136 +1610096 5686136 1611264 5689408 1611360 5688736 1611224 5687456 +1611264 5689408 1611360 5688736 1610096 5686136 1611264 5689480 +1611224 5687456 1611392 5686312 1611224 5686216 1610096 5686136 +1611224 5687456 1610272 5686400 1611360 5688736 1611408 5688288 +1610096 5686136 1610272 5686400 1611224 5687456 1611224 5686216 +1610096 5686136 1610272 5686400 1611224 5686216 1611136 5686104 +1610272 5686400 1611224 5687456 1611224 5686216 1611136 5686104 +1610096 5686136 1610272 5686400 1611136 5686104 1611016 5685968 +1610096 5686136 1610272 5686400 1611016 5685968 1610960 5685920 +1610096 5686136 1610272 5686400 1610960 5685920 1610656 5685736 +1610272 5686400 1611016 5685968 1610960 5685920 1610656 5685736 +1610272 5686400 1611224 5686216 1611136 5686104 1611016 5685968 +1610096 5686136 1610272 5686400 1610656 5685736 1610448 5685656 +1610272 5686400 1611136 5686104 1611016 5685968 1610960 5685920 +1611360 5688736 1610272 5686400 1610096 5686136 1611264 5689408 +1611360 5688736 1610272 5686400 1611264 5689408 1611360 5688848 +1611360 5688736 1611224 5687456 1610272 5686400 1611264 5689408 +1610096 5686136 1611264 5689408 1610272 5686400 1610656 5685736 +1610096 5686136 1611264 5689480 1611264 5689408 1610272 5686400 +1610096 5686136 1602016 5695848 1611264 5689480 1610272 5686400 +1611264 5689408 1611360 5688736 1610272 5686400 1611264 5689480 +1610096 5686136 1611264 5689480 1610272 5686400 1610656 5685736 +1610272 5686400 1611360 5688736 1611224 5687456 1611224 5686216 +1611224 5687456 1611392 5686312 1611224 5686216 1610272 5686400 +1611224 5687456 1610560 5686784 1611360 5688736 1611408 5688288 +1611360 5688736 1611416 5688480 1611408 5688288 1610560 5686784 +1611360 5688736 1610560 5686784 1610272 5686400 1611264 5689408 +1611360 5688736 1610560 5686784 1611264 5689408 1611360 5688848 +1610560 5686784 1611224 5687456 1610272 5686400 1611264 5689408 +1611224 5687456 1610272 5686400 1610560 5686784 1611408 5688288 +1610560 5686784 1611264 5689408 1611360 5688736 1611408 5688288 +1611224 5687456 1610560 5686784 1611408 5688288 1611264 5687512 +1610272 5686400 1611264 5689480 1611264 5689408 1610560 5686784 +1610272 5686400 1610560 5686784 1611224 5687456 1611224 5686216 +1610272 5686400 1610560 5686784 1611224 5686216 1611136 5686104 +1610272 5686400 1611264 5689408 1610560 5686784 1611136 5686104 +1610560 5686784 1611408 5688288 1611224 5687456 1611224 5686216 +1610272 5686400 1610560 5686784 1611136 5686104 1611016 5685968 +1610560 5686784 1611224 5687456 1611224 5686216 1611136 5686104 +1611224 5687456 1611392 5686312 1611224 5686216 1610560 5686784 +1611224 5687456 1611392 5686312 1610560 5686784 1611408 5688288 +1611224 5686216 1611136 5686104 1610560 5686784 1611392 5686312 +1611224 5687456 1611288 5687432 1611392 5686312 1610560 5686784 +1611224 5687456 1611288 5687432 1610560 5686784 1611408 5688288 +1611288 5687432 1611712 5686408 1611392 5686312 1610560 5686784 +1611392 5686312 1611224 5686216 1610560 5686784 1611288 5687432 +1611408 5688288 1610672 5686912 1610560 5686784 1611360 5688736 +1611408 5688288 1610672 5686912 1611360 5688736 1611416 5688480 +1611408 5688288 1611224 5687456 1610672 5686912 1611360 5688736 +1610560 5686784 1610672 5686912 1611224 5687456 1611288 5687432 +1610672 5686912 1611408 5688288 1611224 5687456 1611288 5687432 +1610672 5686912 1611288 5687432 1610560 5686784 1611360 5688736 +1610560 5686784 1611264 5689408 1611360 5688736 1610672 5686912 +1611360 5688736 1611408 5688288 1610672 5686912 1611264 5689408 +1611264 5689408 1611360 5688848 1611360 5688736 1610672 5686912 +1610560 5686784 1610272 5686400 1611264 5689408 1610672 5686912 +1610560 5686784 1611264 5689408 1610672 5686912 1611288 5687432 +1611224 5687456 1610672 5686912 1611408 5688288 1611264 5687512 +1610560 5686784 1610672 5686912 1611288 5687432 1611392 5686312 +1610672 5686912 1611224 5687456 1611288 5687432 1611392 5686312 +1610560 5686784 1611264 5689408 1610672 5686912 1611392 5686312 +1611288 5687432 1611712 5686408 1611392 5686312 1610672 5686912 +1610560 5686784 1610672 5686912 1611392 5686312 1611224 5686216 +1610560 5686784 1611264 5689408 1610672 5686912 1611224 5686216 +1610560 5686784 1610672 5686912 1611224 5686216 1611136 5686104 +1610672 5686912 1611288 5687432 1611392 5686312 1611224 5686216 +1610672 5686912 1610760 5687016 1611224 5687456 1611288 5687432 +1610672 5686912 1611408 5688288 1610760 5687016 1611288 5687432 +1611408 5688288 1610760 5687016 1610672 5686912 1611360 5688736 +1610672 5686912 1611264 5689408 1611360 5688736 1610760 5687016 +1611264 5689408 1611360 5688848 1611360 5688736 1610760 5687016 +1611408 5688288 1610760 5687016 1611360 5688736 1611416 5688480 +1610760 5687016 1611288 5687432 1610672 5686912 1611264 5689408 +1611360 5688736 1611408 5688288 1610760 5687016 1611264 5689408 +1610760 5687016 1611408 5688288 1611224 5687456 1611288 5687432 +1610672 5686912 1610760 5687016 1611288 5687432 1611392 5686312 +1610760 5687016 1611224 5687456 1611288 5687432 1611392 5686312 +1610672 5686912 1611264 5689408 1610760 5687016 1611392 5686312 +1610672 5686912 1610560 5686784 1611264 5689408 1610760 5687016 +1611224 5687456 1610760 5687016 1611408 5688288 1611264 5687512 +1611288 5687432 1611712 5686408 1611392 5686312 1610760 5687016 +1611408 5688288 1611224 5687456 1610760 5687016 1611360 5688736 +1610672 5686912 1610760 5687016 1611392 5686312 1611224 5686216 +1610672 5686912 1611264 5689408 1610760 5687016 1611224 5686216 +1610760 5687016 1611288 5687432 1611392 5686312 1611224 5686216 +1610672 5686912 1610760 5687016 1611224 5686216 1610560 5686784 +1611408 5688288 1610816 5687168 1611360 5688736 1611416 5688480 +1611360 5688736 1610816 5687168 1610760 5687016 1611264 5689408 +1610760 5687016 1610672 5686912 1611264 5689408 1610816 5687168 +1611360 5688736 1610816 5687168 1611264 5689408 1611360 5688848 +1611264 5689408 1611360 5688736 1610816 5687168 1610672 5686912 +1610816 5687168 1611408 5688288 1610760 5687016 1610672 5686912 +1610672 5686912 1610560 5686784 1611264 5689408 1610816 5687168 +1610672 5686912 1610560 5686784 1610816 5687168 1610760 5687016 +1611264 5689408 1611360 5688736 1610816 5687168 1610560 5686784 +1610560 5686784 1610272 5686400 1611264 5689408 1610816 5687168 +1610760 5687016 1610816 5687168 1611408 5688288 1611224 5687456 +1610760 5687016 1610816 5687168 1611224 5687456 1611288 5687432 +1610760 5687016 1610816 5687168 1611288 5687432 1611392 5686312 +1610760 5687016 1610672 5686912 1610816 5687168 1611288 5687432 +1611408 5688288 1611264 5687512 1611224 5687456 1610816 5687168 +1611408 5688288 1611488 5688024 1611264 5687512 1610816 5687168 +1610816 5687168 1611264 5687512 1611224 5687456 1611288 5687432 +1610816 5687168 1611360 5688736 1611408 5688288 1611264 5687512 +1611360 5688736 1611408 5688288 1610816 5687168 1611264 5689408 +1610816 5687168 1610816 5687248 1611264 5689408 1611360 5688736 +1611264 5689408 1611360 5688848 1611360 5688736 1610816 5687248 +1611264 5689408 1610816 5687248 1610560 5686784 1610272 5686400 +1610560 5686784 1610816 5687248 1610816 5687168 1610672 5686912 +1610816 5687168 1610760 5687016 1610672 5686912 1610816 5687248 +1610672 5686912 1610560 5686784 1610816 5687248 1610760 5687016 +1610816 5687248 1610672 5686912 1610560 5686784 1610272 5686400 +1610816 5687168 1610760 5687016 1610816 5687248 1611360 5688736 +1610816 5687168 1610816 5687248 1611360 5688736 1611408 5688288 +1611360 5688736 1611416 5688480 1611408 5688288 1610816 5687248 +1610816 5687248 1611264 5689408 1611360 5688736 1611408 5688288 +1610816 5687168 1610816 5687248 1611408 5688288 1611264 5687512 +1611408 5688288 1611488 5688024 1611264 5687512 1610816 5687248 +1610816 5687168 1610816 5687248 1611264 5687512 1611224 5687456 +1610816 5687168 1610816 5687248 1611224 5687456 1611288 5687432 +1610816 5687248 1611408 5688288 1611264 5687512 1611224 5687456 +1610816 5687168 1610760 5687016 1610816 5687248 1611224 5687456 +1610816 5687248 1611360 5688736 1611408 5688288 1611264 5687512 +1610816 5687248 1610272 5686400 1611264 5689408 1611360 5688736 +1611264 5689408 1610816 5687248 1610272 5686400 1611264 5689480 +1610272 5686400 1610807 5687274 1610816 5687248 1610560 5686784 +1610807 5687274 1611264 5689408 1610816 5687248 1610560 5686784 +1610816 5687248 1610672 5686912 1610560 5686784 1610807 5687274 +1610560 5686784 1610272 5686400 1610807 5687274 1610672 5686912 +1610816 5687248 1610760 5687016 1610672 5686912 1610807 5687274 +1610816 5687248 1610816 5687168 1610760 5687016 1610807 5687274 +1610760 5687016 1610672 5686912 1610807 5687274 1610816 5687168 +1610816 5687248 1610816 5687168 1610807 5687274 1611264 5689408 +1610672 5686912 1610560 5686784 1610807 5687274 1610760 5687016 +1610272 5686400 1611264 5689408 1610807 5687274 1610560 5686784 +1610816 5687248 1610807 5687274 1611264 5689408 1611360 5688736 +1611264 5689408 1611360 5688848 1611360 5688736 1610807 5687274 +1610816 5687248 1610807 5687274 1611360 5688736 1611408 5688288 +1611360 5688736 1611416 5688480 1611408 5688288 1610807 5687274 +1610816 5687248 1610816 5687168 1610807 5687274 1611408 5688288 +1610807 5687274 1610272 5686400 1611264 5689408 1611360 5688736 +1610816 5687248 1610807 5687274 1611408 5688288 1611264 5687512 +1611408 5688288 1611488 5688024 1611264 5687512 1610807 5687274 +1610807 5687274 1611360 5688736 1611408 5688288 1611264 5687512 +1610816 5687248 1610816 5687168 1610807 5687274 1611264 5687512 +1610816 5687248 1610807 5687274 1611264 5687512 1611224 5687456 +1610816 5687248 1610807 5687274 1611224 5687456 1610816 5687168 +1610816 5687248 1610816 5687168 1610807 5687274 1611224 5687456 +1610807 5687274 1611408 5688288 1611264 5687512 1611224 5687456 +1610807 5687274 1611264 5689408 1611360 5688736 1611408 5688288 +1611264 5689408 1610807 5687274 1610272 5686400 1611264 5689480 +1610096 5686136 1610536 5688000 1611264 5689480 1610272 5686400 +1610096 5686136 1602016 5695848 1610536 5688000 1610272 5686400 +1611264 5689480 1610536 5688000 1602016 5695848 1602112 5695896 +1610536 5688000 1610096 5686136 1602016 5695848 1602112 5695896 +1602016 5695848 1610536 5688000 1610096 5686136 1610032 5685992 +1602016 5695848 1602112 5695896 1610536 5688000 1610032 5685992 +1610536 5688000 1610272 5686400 1610096 5686136 1610032 5685992 +1611264 5689480 1610536 5688000 1602112 5695896 1602160 5695928 +1611264 5689480 1610536 5688000 1602160 5695928 1611328 5689576 +1610536 5688000 1602016 5695848 1602112 5695896 1602160 5695928 +1610536 5688000 1602160 5695928 1611264 5689480 1610272 5686400 +1602016 5695848 1610536 5688000 1610032 5685992 1600992 5681736 +1611264 5689480 1611264 5689408 1610272 5686400 1610536 5688000 +1610272 5686400 1610096 5686136 1610536 5688000 1611264 5689408 +1611264 5689480 1611264 5689408 1610536 5688000 1602160 5695928 +1611264 5689408 1610807 5687274 1610272 5686400 1610536 5688000 +1610272 5686400 1610096 5686136 1610536 5688000 1610807 5687274 +1611264 5689408 1611360 5688736 1610807 5687274 1610536 5688000 +1611264 5689408 1611360 5688848 1611360 5688736 1610536 5688000 +1611360 5688736 1610807 5687274 1610536 5688000 1611360 5688848 +1610807 5687274 1610560 5686784 1610272 5686400 1610536 5688000 +1610272 5686400 1610096 5686136 1610536 5688000 1610560 5686784 +1610807 5687274 1610672 5686912 1610560 5686784 1610536 5688000 +1611264 5689408 1611392 5688904 1611360 5688848 1610536 5688000 +1611360 5688736 1611408 5688288 1610807 5687274 1610536 5688000 +1611360 5688736 1611416 5688480 1611408 5688288 1610536 5688000 +1611408 5688288 1611264 5687512 1610807 5687274 1610536 5688000 +1611408 5688288 1611488 5688024 1611264 5687512 1610536 5688000 +1611488 5688024 1611480 5687816 1611264 5687512 1610536 5688000 +1611480 5687816 1611456 5687704 1611264 5687512 1610536 5688000 +1611488 5688024 1611480 5687816 1610536 5688000 1611408 5688288 +1611264 5687512 1610807 5687274 1610536 5688000 1611480 5687816 +1611360 5688736 1611416 5688480 1610536 5688000 1611360 5688848 +1611264 5687512 1611224 5687456 1610807 5687274 1610536 5688000 +1611264 5687512 1611224 5687456 1610536 5688000 1611480 5687816 +1611224 5687456 1610816 5687248 1610807 5687274 1610536 5688000 +1611408 5688288 1611488 5688024 1610536 5688000 1611416 5688480 +1610807 5687274 1610560 5686784 1610536 5688000 1611224 5687456 +1611264 5689408 1611360 5688848 1610536 5688000 1611264 5689480 +1611264 5689480 1610368 5688304 1602160 5695928 1611328 5689576 +1602160 5695928 1610368 5688304 1610536 5688000 1602112 5695896 +1610368 5688304 1611264 5689480 1610536 5688000 1602112 5695896 +1602160 5695928 1611264 5689480 1610368 5688304 1602112 5695896 +1610536 5688000 1602016 5695848 1602112 5695896 1610368 5688304 +1610536 5688000 1610032 5685992 1602016 5695848 1610368 5688304 +1610536 5688000 1610032 5685992 1610368 5688304 1611264 5689480 +1602016 5695848 1602112 5695896 1610368 5688304 1610032 5685992 +1610536 5688000 1610096 5686136 1610032 5685992 1610368 5688304 +1610032 5685992 1602016 5695848 1610368 5688304 1610096 5686136 +1610536 5688000 1610096 5686136 1610368 5688304 1611264 5689480 +1610536 5688000 1610272 5686400 1610096 5686136 1610368 5688304 +1610536 5688000 1610272 5686400 1610368 5688304 1611264 5689480 +1610536 5688000 1610560 5686784 1610272 5686400 1610368 5688304 +1610096 5686136 1610032 5685992 1610368 5688304 1610272 5686400 +1602112 5695896 1602160 5695928 1610368 5688304 1602016 5695848 +1610536 5688000 1610368 5688304 1611264 5689480 1611264 5689408 +1610536 5688000 1610272 5686400 1610368 5688304 1611264 5689408 +1610368 5688304 1602160 5695928 1611264 5689480 1611264 5689408 +1610032 5685992 1600992 5681736 1602016 5695848 1610368 5688304 +1610032 5685992 1600992 5681736 1610368 5688304 1610096 5686136 +1602016 5695848 1602112 5695896 1610368 5688304 1600992 5681736 +1610032 5685992 1601088 5681704 1600992 5681736 1610368 5688304 +1610032 5685992 1601088 5681704 1610368 5688304 1610096 5686136 +1610032 5685992 1610032 5685920 1601088 5681704 1610368 5688304 +1600992 5681736 1601824 5695840 1602016 5695848 1610368 5688304 +1600992 5681736 1602016 5695848 1610368 5688304 1601088 5681704 +1610536 5688000 1610368 5688304 1611264 5689408 1611360 5688848 +1610536 5688000 1610272 5686400 1610368 5688304 1611360 5688848 +1610536 5688000 1610368 5688304 1611360 5688848 1611360 5688736 +1610536 5688000 1610272 5686400 1610368 5688304 1611360 5688736 +1610536 5688000 1610368 5688304 1611360 5688736 1611416 5688480 +1610536 5688000 1610272 5686400 1610368 5688304 1611416 5688480 +1610368 5688304 1611360 5688848 1611360 5688736 1611416 5688480 +1610536 5688000 1610368 5688304 1611416 5688480 1611408 5688288 +1610536 5688000 1610272 5686400 1610368 5688304 1611408 5688288 +1610368 5688304 1611360 5688736 1611416 5688480 1611408 5688288 +1610368 5688304 1611264 5689480 1611264 5689408 1611360 5688848 +1611264 5689408 1611392 5688904 1611360 5688848 1610368 5688304 +1610536 5688000 1610368 5688304 1611408 5688288 1611488 5688024 +1610368 5688304 1611264 5689408 1611360 5688848 1611360 5688736 +1610368 5688304 1610248 5688560 1611264 5689480 1611264 5689408 +1610368 5688304 1602160 5695928 1610248 5688560 1611264 5689408 +1602160 5695928 1610248 5688560 1610368 5688304 1602112 5695896 +1610248 5688560 1611264 5689408 1610368 5688304 1602112 5695896 +1610248 5688560 1602160 5695928 1611264 5689480 1611264 5689408 +1611264 5689480 1610248 5688560 1602160 5695928 1611328 5689576 +1602160 5695928 1611360 5689624 1611328 5689576 1610248 5688560 +1611264 5689480 1611264 5689408 1610248 5688560 1611328 5689576 +1611328 5689576 1611264 5689480 1610248 5688560 1611360 5689624 +1610368 5688304 1602016 5695848 1602112 5695896 1610248 5688560 +1610368 5688304 1602016 5695848 1610248 5688560 1611264 5689408 +1602112 5695896 1602160 5695928 1610248 5688560 1602016 5695848 +1610368 5688304 1600992 5681736 1602016 5695848 1610248 5688560 +1610368 5688304 1600992 5681736 1610248 5688560 1611264 5689408 +1602016 5695848 1602112 5695896 1610248 5688560 1600992 5681736 +1600992 5681736 1601824 5695840 1602016 5695848 1610248 5688560 +1610368 5688304 1610248 5688560 1611264 5689408 1611360 5688848 +1610248 5688560 1611264 5689480 1611264 5689408 1611360 5688848 +1610368 5688304 1600992 5681736 1610248 5688560 1611360 5688848 +1611264 5689408 1611392 5688904 1611360 5688848 1610248 5688560 +1602160 5695928 1611360 5689624 1610248 5688560 1602112 5695896 +1602160 5695928 1612400 5693248 1611360 5689624 1610248 5688560 +1611360 5689624 1611328 5689576 1610248 5688560 1612400 5693248 +1602160 5695928 1612136 5695120 1612400 5693248 1610248 5688560 +1612400 5693248 1612408 5693168 1611360 5689624 1610248 5688560 +1602160 5695928 1612400 5693248 1610248 5688560 1602112 5695896 +1610368 5688304 1601088 5681704 1600992 5681736 1610248 5688560 +1610368 5688304 1601088 5681704 1610248 5688560 1611360 5688848 +1600992 5681736 1602016 5695848 1610248 5688560 1601088 5681704 +1610368 5688304 1610032 5685992 1601088 5681704 1610248 5688560 +1610368 5688304 1610096 5686136 1610032 5685992 1610248 5688560 +1610368 5688304 1610096 5686136 1610248 5688560 1611360 5688848 +1610032 5685992 1610032 5685920 1601088 5681704 1610248 5688560 +1610032 5685992 1601088 5681704 1610248 5688560 1610096 5686136 +1610368 5688304 1610272 5686400 1610096 5686136 1610248 5688560 +1601088 5681704 1600992 5681736 1610248 5688560 1610032 5685992 +1610368 5688304 1610248 5688560 1611360 5688848 1611360 5688736 +1610368 5688304 1610096 5686136 1610248 5688560 1611360 5688736 +1610368 5688304 1610248 5688560 1611360 5688736 1611416 5688480 +1610248 5688560 1611264 5689408 1611360 5688848 1611360 5688736 +1612400 5693248 1610224 5688760 1602160 5695928 1612136 5695120 +1602160 5695928 1610224 5688760 1610248 5688560 1602112 5695896 +1610248 5688560 1602016 5695848 1602112 5695896 1610224 5688760 +1610248 5688560 1600992 5681736 1602016 5695848 1610224 5688760 +1602016 5695848 1602112 5695896 1610224 5688760 1600992 5681736 +1610248 5688560 1601088 5681704 1600992 5681736 1610224 5688760 +1600992 5681736 1602016 5695848 1610224 5688760 1601088 5681704 +1600992 5681736 1601824 5695840 1602016 5695848 1610224 5688760 +1610224 5688760 1612400 5693248 1610248 5688560 1601088 5681704 +1602112 5695896 1602160 5695928 1610224 5688760 1602016 5695848 +1602160 5695928 1612400 5693248 1610224 5688760 1602112 5695896 +1610248 5688560 1610224 5688760 1612400 5693248 1611360 5689624 +1610248 5688560 1610224 5688760 1611360 5689624 1611328 5689576 +1610248 5688560 1610224 5688760 1611328 5689576 1611264 5689480 +1610224 5688760 1611360 5689624 1611328 5689576 1611264 5689480 +1610248 5688560 1610224 5688760 1611264 5689480 1611264 5689408 +1610248 5688560 1610224 5688760 1611264 5689408 1611360 5688848 +1610224 5688760 1611264 5689480 1611264 5689408 1611360 5688848 +1610224 5688760 1611328 5689576 1611264 5689480 1611264 5689408 +1612400 5693248 1612408 5693168 1611360 5689624 1610224 5688760 +1612408 5693168 1611896 5690040 1611360 5689624 1610224 5688760 +1610248 5688560 1610224 5688760 1611360 5688848 1611360 5688736 +1610224 5688760 1611264 5689408 1611360 5688848 1611360 5688736 +1611264 5689408 1611392 5688904 1611360 5688848 1610224 5688760 +1610248 5688560 1601088 5681704 1610224 5688760 1611360 5688736 +1610224 5688760 1602160 5695928 1612400 5693248 1612408 5693168 +1610224 5688760 1612408 5693168 1611360 5689624 1611328 5689576 +1610248 5688560 1610032 5685992 1601088 5681704 1610224 5688760 +1610248 5688560 1610224 5688760 1611360 5688736 1610368 5688304 +1612400 5693248 1610232 5688872 1602160 5695928 1612136 5695120 +1610224 5688760 1610232 5688872 1612400 5693248 1612408 5693168 +1610232 5688872 1602160 5695928 1612400 5693248 1612408 5693168 +1610224 5688760 1610232 5688872 1612408 5693168 1611360 5689624 +1612408 5693168 1611896 5690040 1611360 5689624 1610232 5688872 +1610232 5688872 1612400 5693248 1612408 5693168 1611360 5689624 +1610224 5688760 1602160 5695928 1610232 5688872 1611360 5689624 +1602160 5695928 1610232 5688872 1610224 5688760 1602112 5695896 +1602160 5695928 1612400 5693248 1610232 5688872 1602112 5695896 +1610224 5688760 1602016 5695848 1602112 5695896 1610232 5688872 +1610224 5688760 1600992 5681736 1602016 5695848 1610232 5688872 +1610232 5688872 1611360 5689624 1610224 5688760 1602016 5695848 +1602112 5695896 1602160 5695928 1610232 5688872 1602016 5695848 +1610224 5688760 1610232 5688872 1611360 5689624 1611328 5689576 +1610224 5688760 1610232 5688872 1611328 5689576 1611264 5689480 +1610224 5688760 1610232 5688872 1611264 5689480 1611264 5689408 +1610232 5688872 1611328 5689576 1611264 5689480 1611264 5689408 +1610224 5688760 1610232 5688872 1611264 5689408 1611360 5688848 +1610224 5688760 1610232 5688872 1611360 5688848 1611360 5688736 +1610232 5688872 1611264 5689408 1611360 5688848 1611360 5688736 +1610232 5688872 1611264 5689480 1611264 5689408 1611360 5688848 +1610232 5688872 1612408 5693168 1611360 5689624 1611328 5689576 +1610224 5688760 1610232 5688872 1611360 5688736 1610248 5688560 +1611264 5689408 1611392 5688904 1611360 5688848 1610232 5688872 +1610224 5688760 1602016 5695848 1610232 5688872 1611360 5688736 +1610232 5688872 1611360 5689624 1611328 5689576 1611264 5689480 +1610232 5688872 1610296 5689016 1612400 5693248 1612408 5693168 +1610232 5688872 1602160 5695928 1610296 5689016 1612408 5693168 +1602160 5695928 1610296 5689016 1610232 5688872 1602112 5695896 +1602160 5695928 1612400 5693248 1610296 5689016 1602112 5695896 +1610296 5689016 1612408 5693168 1610232 5688872 1602112 5695896 +1610296 5689016 1602160 5695928 1612400 5693248 1612408 5693168 +1612400 5693248 1610296 5689016 1602160 5695928 1612136 5695120 +1610232 5688872 1610296 5689016 1612408 5693168 1611360 5689624 +1610296 5689016 1612400 5693248 1612408 5693168 1611360 5689624 +1610232 5688872 1602112 5695896 1610296 5689016 1611360 5689624 +1612408 5693168 1611896 5690040 1611360 5689624 1610296 5689016 +1610232 5688872 1610296 5689016 1611360 5689624 1611328 5689576 +1610232 5688872 1602112 5695896 1610296 5689016 1611328 5689576 +1610296 5689016 1612408 5693168 1611360 5689624 1611328 5689576 +1610232 5688872 1602016 5695848 1602112 5695896 1610296 5689016 +1610232 5688872 1610296 5689016 1611328 5689576 1611264 5689480 +1610232 5688872 1610296 5689016 1611264 5689480 1611264 5689408 +1610232 5688872 1610296 5689016 1611264 5689408 1611360 5688848 +1610296 5689016 1611264 5689480 1611264 5689408 1611360 5688848 +1610232 5688872 1610296 5689016 1611360 5688848 1611360 5688736 +1610232 5688872 1610296 5689016 1611360 5688736 1610224 5688760 +1610296 5689016 1611360 5688848 1611360 5688736 1610224 5688760 +1610296 5689016 1611264 5689408 1611360 5688848 1611360 5688736 +1610232 5688872 1602112 5695896 1610296 5689016 1610224 5688760 +1610296 5689016 1611360 5689624 1611328 5689576 1611264 5689480 +1611360 5688736 1610248 5688560 1610224 5688760 1610296 5689016 +1611264 5689408 1611392 5688904 1611360 5688848 1610296 5689016 +1610296 5689016 1611328 5689576 1611264 5689480 1611264 5689408 +1602160 5695928 1610336 5689160 1610296 5689016 1602112 5695896 +1602160 5695928 1612400 5693248 1610336 5689160 1602112 5695896 +1610296 5689016 1610232 5688872 1602112 5695896 1610336 5689160 +1602112 5695896 1602160 5695928 1610336 5689160 1610232 5688872 +1610296 5689016 1610336 5689160 1612400 5693248 1612408 5693168 +1610336 5689160 1602160 5695928 1612400 5693248 1612408 5693168 +1610296 5689016 1610336 5689160 1612408 5693168 1611360 5689624 +1610336 5689160 1612400 5693248 1612408 5693168 1611360 5689624 +1610336 5689160 1611360 5689624 1610296 5689016 1610232 5688872 +1612408 5693168 1611896 5690040 1611360 5689624 1610336 5689160 +1612400 5693248 1610336 5689160 1602160 5695928 1612136 5695120 +1610296 5689016 1610336 5689160 1611360 5689624 1611328 5689576 +1610336 5689160 1612408 5693168 1611360 5689624 1611328 5689576 +1610296 5689016 1610232 5688872 1610336 5689160 1611328 5689576 +1610296 5689016 1610336 5689160 1611328 5689576 1611264 5689480 +1610296 5689016 1610232 5688872 1610336 5689160 1611264 5689480 +1610336 5689160 1611360 5689624 1611328 5689576 1611264 5689480 +1610232 5688872 1602016 5695848 1602112 5695896 1610336 5689160 +1610296 5689016 1610336 5689160 1611264 5689480 1611264 5689408 +1610296 5689016 1610336 5689160 1611264 5689408 1611360 5688848 +1610296 5689016 1610336 5689160 1611360 5688848 1611360 5688736 +1610296 5689016 1610232 5688872 1610336 5689160 1611360 5688848 +1610336 5689160 1611328 5689576 1611264 5689480 1611264 5689408 +1611264 5689408 1611392 5688904 1611360 5688848 1610336 5689160 +1610336 5689160 1611264 5689480 1611264 5689408 1611360 5688848 +1610336 5689160 1610296 5689296 1612400 5693248 1612408 5693168 +1610336 5689160 1602160 5695928 1610296 5689296 1612408 5693168 +1602160 5695928 1610296 5689296 1610336 5689160 1602112 5695896 +1602160 5695928 1612400 5693248 1610296 5689296 1602112 5695896 +1610336 5689160 1610232 5688872 1602112 5695896 1610296 5689296 +1610296 5689296 1612408 5693168 1610336 5689160 1610232 5688872 +1602112 5695896 1602160 5695928 1610296 5689296 1610232 5688872 +1610296 5689296 1602160 5695928 1612400 5693248 1612408 5693168 +1610336 5689160 1610296 5689016 1610232 5688872 1610296 5689296 +1610232 5688872 1602112 5695896 1610296 5689296 1610296 5689016 +1610336 5689160 1610296 5689016 1610296 5689296 1612408 5693168 +1610336 5689160 1610296 5689296 1612408 5693168 1611360 5689624 +1610296 5689296 1612400 5693248 1612408 5693168 1611360 5689624 +1610336 5689160 1610296 5689016 1610296 5689296 1611360 5689624 +1610336 5689160 1610296 5689296 1611360 5689624 1611328 5689576 +1610336 5689160 1610296 5689016 1610296 5689296 1611328 5689576 +1610296 5689296 1612408 5693168 1611360 5689624 1611328 5689576 +1612408 5693168 1611896 5690040 1611360 5689624 1610296 5689296 +1612408 5693168 1611896 5690040 1610296 5689296 1612400 5693248 +1612408 5693168 1612048 5690184 1611896 5690040 1610296 5689296 +1611360 5689624 1611328 5689576 1610296 5689296 1611896 5690040 +1612400 5693248 1610296 5689296 1602160 5695928 1612136 5695120 +1610296 5689296 1602112 5695896 1602160 5695928 1612136 5695120 +1612400 5693248 1610296 5689296 1612136 5695120 1612440 5693432 +1612400 5693248 1612408 5693168 1610296 5689296 1612136 5695120 +1602160 5695928 1602200 5696008 1612136 5695120 1610296 5689296 +1611896 5690040 1611376 5689632 1611360 5689624 1610296 5689296 +1610336 5689160 1610296 5689296 1611328 5689576 1611264 5689480 +1610336 5689160 1610296 5689016 1610296 5689296 1611264 5689480 +1610296 5689296 1611360 5689624 1611328 5689576 1611264 5689480 +1610336 5689160 1610296 5689296 1611264 5689480 1611264 5689408 +1610336 5689160 1610296 5689016 1610296 5689296 1611264 5689408 +1610296 5689296 1611328 5689576 1611264 5689480 1611264 5689408 +1610232 5688872 1602016 5695848 1602112 5695896 1610296 5689296 +1610232 5688872 1602016 5695848 1610296 5689296 1610296 5689016 +1602112 5695896 1602160 5695928 1610296 5689296 1602016 5695848 +1610232 5688872 1610224 5688760 1602016 5695848 1610296 5689296 +1610336 5689160 1610296 5689296 1611264 5689408 1611360 5688848 +1610232 5688872 1610272 5689312 1610296 5689296 1610296 5689016 +1610272 5689312 1602016 5695848 1610296 5689296 1610296 5689016 +1610296 5689296 1610336 5689160 1610296 5689016 1610272 5689312 +1610296 5689296 1610336 5689160 1610272 5689312 1602016 5695848 +1610296 5689016 1610232 5688872 1610272 5689312 1610336 5689160 +1610232 5688872 1602016 5695848 1610272 5689312 1610296 5689016 +1602016 5695848 1610272 5689312 1610232 5688872 1610224 5688760 +1610296 5689296 1610272 5689312 1602016 5695848 1602112 5695896 +1610296 5689296 1610336 5689160 1610272 5689312 1602112 5695896 +1610296 5689296 1610272 5689312 1602112 5695896 1602160 5695928 +1610296 5689296 1610336 5689160 1610272 5689312 1602160 5695928 +1610296 5689296 1610272 5689312 1602160 5695928 1612136 5695120 +1610296 5689296 1610336 5689160 1610272 5689312 1612136 5695120 +1610272 5689312 1602112 5695896 1602160 5695928 1612136 5695120 +1602160 5695928 1602200 5696008 1612136 5695120 1610272 5689312 +1612136 5695120 1610296 5689296 1610272 5689312 1602200 5696008 +1602160 5695928 1602200 5696008 1610272 5689312 1602112 5695896 +1602200 5696008 1602224 5696056 1612136 5695120 1610272 5689312 +1610272 5689312 1610232 5688872 1602016 5695848 1602112 5695896 +1610296 5689296 1610272 5689312 1612136 5695120 1612400 5693248 +1610296 5689296 1610336 5689160 1610272 5689312 1612400 5693248 +1610272 5689312 1602200 5696008 1612136 5695120 1612400 5693248 +1612136 5695120 1612440 5693432 1612400 5693248 1610272 5689312 +1610296 5689296 1610272 5689312 1612400 5693248 1612408 5693168 +1610296 5689296 1610336 5689160 1610272 5689312 1612408 5693168 +1610296 5689296 1610272 5689312 1612408 5693168 1611896 5690040 +1610296 5689296 1610336 5689160 1610272 5689312 1611896 5690040 +1610272 5689312 1612400 5693248 1612408 5693168 1611896 5690040 +1612408 5693168 1612048 5690184 1611896 5690040 1610272 5689312 +1610296 5689296 1610272 5689312 1611896 5690040 1611360 5689624 +1610296 5689296 1610336 5689160 1610272 5689312 1611360 5689624 +1610272 5689312 1612408 5693168 1611896 5690040 1611360 5689624 +1610296 5689296 1610272 5689312 1611360 5689624 1611328 5689576 +1610296 5689296 1610336 5689160 1610272 5689312 1611328 5689576 +1610296 5689296 1610272 5689312 1611328 5689576 1611264 5689480 +1610296 5689296 1610336 5689160 1610272 5689312 1611264 5689480 +1610272 5689312 1611360 5689624 1611328 5689576 1611264 5689480 +1610272 5689312 1611896 5690040 1611360 5689624 1611328 5689576 +1610272 5689312 1612136 5695120 1612400 5693248 1612408 5693168 +1611896 5690040 1611376 5689632 1611360 5689624 1610272 5689312 +1610296 5689296 1610272 5689312 1611264 5689480 1611264 5689408 +1610272 5689312 1602016 5695848 1602112 5695896 1602160 5695928 +1610272 5689312 1610232 5689368 1612136 5695120 1612400 5693248 +1610232 5689368 1602200 5696008 1612136 5695120 1612400 5693248 +1612136 5695120 1612440 5693432 1612400 5693248 1610232 5689368 +1612136 5695120 1610232 5689368 1602200 5696008 1602224 5696056 +1602200 5696008 1610232 5689368 1610272 5689312 1602160 5695928 +1602200 5696008 1612136 5695120 1610232 5689368 1602160 5695928 +1610272 5689312 1602112 5695896 1602160 5695928 1610232 5689368 +1602160 5695928 1602200 5696008 1610232 5689368 1602112 5695896 +1610272 5689312 1602112 5695896 1610232 5689368 1612400 5693248 +1610272 5689312 1610232 5689368 1612400 5693248 1612408 5693168 +1610232 5689368 1612136 5695120 1612400 5693248 1612408 5693168 +1610272 5689312 1610232 5689368 1612408 5693168 1611896 5690040 +1610272 5689312 1610232 5689368 1611896 5690040 1611360 5689624 +1610232 5689368 1612408 5693168 1611896 5690040 1611360 5689624 +1612408 5693168 1612048 5690184 1611896 5690040 1610232 5689368 +1610272 5689312 1610232 5689368 1611360 5689624 1611328 5689576 +1610232 5689368 1611896 5690040 1611360 5689624 1611328 5689576 +1610272 5689312 1610232 5689368 1611328 5689576 1611264 5689480 +1610272 5689312 1610232 5689368 1611264 5689480 1610296 5689296 +1610232 5689368 1611328 5689576 1611264 5689480 1610296 5689296 +1610232 5689368 1611360 5689624 1611328 5689576 1611264 5689480 +1610272 5689312 1602112 5695896 1610232 5689368 1610296 5689296 +1610232 5689368 1612400 5693248 1612408 5693168 1611896 5690040 +1611896 5690040 1611376 5689632 1611360 5689624 1610232 5689368 +1611264 5689480 1611264 5689408 1610296 5689296 1610232 5689368 +1610272 5689312 1602016 5695848 1602112 5695896 1610232 5689368 +1602112 5695896 1602160 5695928 1610232 5689368 1602016 5695848 +1610272 5689312 1610232 5688872 1602016 5695848 1610232 5689368 +1610272 5689312 1610232 5688872 1610232 5689368 1610296 5689296 +1610272 5689312 1610296 5689016 1610232 5688872 1610232 5689368 +1610272 5689312 1610336 5689160 1610296 5689016 1610232 5689368 +1610232 5688872 1602016 5695848 1610232 5689368 1610296 5689016 +1610272 5689312 1610296 5689016 1610232 5689368 1610296 5689296 +1610232 5688872 1610224 5688760 1602016 5695848 1610232 5689368 +1610224 5688760 1600992 5681736 1602016 5695848 1610232 5689368 +1610232 5688872 1610224 5688760 1610232 5689368 1610296 5689016 +1602016 5695848 1602112 5695896 1610232 5689368 1610224 5688760 +1610232 5689368 1610184 5689408 1612136 5695120 1612400 5693248 +1610232 5689368 1610184 5689408 1612400 5693248 1612408 5693168 +1610184 5689408 1602200 5696008 1612136 5695120 1612400 5693248 +1610184 5689408 1612136 5695120 1612400 5693248 1612408 5693168 +1610232 5689368 1602200 5696008 1610184 5689408 1612408 5693168 +1602200 5696008 1610184 5689408 1610232 5689368 1602160 5695928 +1602200 5696008 1612136 5695120 1610184 5689408 1602160 5695928 +1610184 5689408 1612408 5693168 1610232 5689368 1602160 5695928 +1612136 5695120 1612440 5693432 1612400 5693248 1610184 5689408 +1612136 5695120 1610184 5689408 1602200 5696008 1602224 5696056 +1612136 5695120 1612400 5693248 1610184 5689408 1602224 5696056 +1610184 5689408 1602160 5695928 1602200 5696008 1602224 5696056 +1612136 5695120 1610184 5689408 1602224 5696056 1612120 5695192 +1610232 5689368 1602112 5695896 1602160 5695928 1610184 5689408 +1610232 5689368 1602112 5695896 1610184 5689408 1612408 5693168 +1602160 5695928 1602200 5696008 1610184 5689408 1602112 5695896 +1610232 5689368 1602016 5695848 1602112 5695896 1610184 5689408 +1610232 5689368 1602016 5695848 1610184 5689408 1612408 5693168 +1602112 5695896 1602160 5695928 1610184 5689408 1602016 5695848 +1610232 5689368 1610184 5689408 1612408 5693168 1611896 5690040 +1610184 5689408 1612400 5693248 1612408 5693168 1611896 5690040 +1610232 5689368 1602016 5695848 1610184 5689408 1611896 5690040 +1610232 5689368 1610184 5689408 1611896 5690040 1611360 5689624 +1610232 5689368 1602016 5695848 1610184 5689408 1611360 5689624 +1610232 5689368 1610184 5689408 1611360 5689624 1611328 5689576 +1610232 5689368 1602016 5695848 1610184 5689408 1611328 5689576 +1610184 5689408 1611896 5690040 1611360 5689624 1611328 5689576 +1612408 5693168 1612048 5690184 1611896 5690040 1610184 5689408 +1610232 5689368 1610184 5689408 1611328 5689576 1611264 5689480 +1610184 5689408 1612408 5693168 1611896 5690040 1611360 5689624 +1611896 5690040 1611376 5689632 1611360 5689624 1610184 5689408 +1610232 5689368 1610224 5688760 1602016 5695848 1610184 5689408 +1610224 5688760 1600992 5681736 1602016 5695848 1610184 5689408 +1610232 5689368 1610224 5688760 1610184 5689408 1611328 5689576 +1602016 5695848 1602112 5695896 1610184 5689408 1600992 5681736 +1610224 5688760 1601088 5681704 1600992 5681736 1610184 5689408 +1600992 5681736 1601824 5695840 1602016 5695848 1610184 5689408 +1610232 5689368 1610232 5688872 1610224 5688760 1610184 5689408 +1610232 5689368 1610232 5688872 1610184 5689408 1611328 5689576 +1610232 5689368 1610296 5689016 1610232 5688872 1610184 5689408 +1610232 5689368 1610296 5689016 1610184 5689408 1611328 5689576 +1610232 5689368 1610272 5689312 1610296 5689016 1610184 5689408 +1610232 5689368 1610272 5689312 1610184 5689408 1611328 5689576 +1610272 5689312 1610336 5689160 1610296 5689016 1610184 5689408 +1610296 5689016 1610232 5688872 1610184 5689408 1610272 5689312 +1610232 5688872 1610224 5688760 1610184 5689408 1610296 5689016 +1610224 5688760 1600992 5681736 1610184 5689408 1610232 5688872 +1600992 5681736 1610008 5689456 1610184 5689408 1610224 5688760 +1610008 5689456 1602016 5695848 1610184 5689408 1610224 5688760 +1610184 5689408 1610008 5689456 1602016 5695848 1602112 5695896 +1610184 5689408 1610224 5688760 1610008 5689456 1602112 5695896 +1600992 5681736 1610008 5689456 1610224 5688760 1601088 5681704 +1610008 5689456 1610184 5689408 1610224 5688760 1601088 5681704 +1610224 5688760 1610248 5688560 1601088 5681704 1610008 5689456 +1610224 5688760 1610248 5688560 1610008 5689456 1610184 5689408 +1601088 5681704 1600992 5681736 1610008 5689456 1610248 5688560 +1610184 5689408 1610008 5689456 1602112 5695896 1602160 5695928 +1610184 5689408 1610224 5688760 1610008 5689456 1602160 5695928 +1610184 5689408 1610008 5689456 1602160 5695928 1602200 5696008 +1610184 5689408 1610224 5688760 1610008 5689456 1602200 5696008 +1610184 5689408 1610008 5689456 1602200 5696008 1602224 5696056 +1610184 5689408 1610224 5688760 1610008 5689456 1602224 5696056 +1610008 5689456 1602160 5695928 1602200 5696008 1602224 5696056 +1610008 5689456 1602016 5695848 1602112 5695896 1602160 5695928 +1610184 5689408 1610008 5689456 1602224 5696056 1612136 5695120 +1610184 5689408 1610008 5689456 1612136 5695120 1612400 5693248 +1610184 5689408 1610224 5688760 1610008 5689456 1612400 5693248 +1610008 5689456 1602200 5696008 1602224 5696056 1612136 5695120 +1610184 5689408 1610008 5689456 1612400 5693248 1612408 5693168 +1610184 5689408 1610008 5689456 1612408 5693168 1611896 5690040 +1610008 5689456 1612136 5695120 1612400 5693248 1612408 5693168 +1610184 5689408 1610224 5688760 1610008 5689456 1611896 5690040 +1610008 5689456 1612400 5693248 1612408 5693168 1611896 5690040 +1612136 5695120 1612440 5693432 1612400 5693248 1610008 5689456 +1612408 5693168 1612048 5690184 1611896 5690040 1610008 5689456 +1612408 5693168 1612440 5693112 1612048 5690184 1610008 5689456 +1612440 5693112 1612208 5690280 1612048 5690184 1610008 5689456 +1611896 5690040 1610184 5689408 1610008 5689456 1612048 5690184 +1612408 5693168 1612440 5693112 1610008 5689456 1612400 5693248 +1612048 5690184 1611896 5690040 1610008 5689456 1612440 5693112 +1602224 5696056 1612120 5695192 1612136 5695120 1610008 5689456 +1610008 5689456 1602224 5696056 1612136 5695120 1612400 5693248 +1610008 5689456 1602112 5695896 1602160 5695928 1602200 5696008 +1602016 5695848 1610008 5689456 1600992 5681736 1601824 5695840 +1610184 5689408 1610008 5689456 1611896 5690040 1611360 5689624 +1610008 5689456 1612048 5690184 1611896 5690040 1611360 5689624 +1610184 5689408 1610224 5688760 1610008 5689456 1611360 5689624 +1610184 5689408 1610008 5689456 1611360 5689624 1611328 5689576 +1611896 5690040 1611376 5689632 1611360 5689624 1610008 5689456 +1610184 5689408 1610232 5688872 1610224 5688760 1610008 5689456 +1610184 5689408 1610232 5688872 1610008 5689456 1611360 5689624 +1610224 5688760 1610248 5688560 1610008 5689456 1610232 5688872 +1610184 5689408 1610296 5689016 1610232 5688872 1610008 5689456 +1610184 5689408 1610296 5689016 1610008 5689456 1611360 5689624 +1610184 5689408 1610272 5689312 1610296 5689016 1610008 5689456 +1610184 5689408 1610272 5689312 1610008 5689456 1611360 5689624 +1610272 5689312 1610336 5689160 1610296 5689016 1610008 5689456 +1610184 5689408 1610232 5689368 1610272 5689312 1610008 5689456 +1610296 5689016 1610232 5688872 1610008 5689456 1610272 5689312 +1610232 5688872 1610224 5688760 1610008 5689456 1610296 5689016 +1600992 5681736 1602016 5695848 1610008 5689456 1601088 5681704 +1610008 5689456 1600992 5681736 1602016 5695848 1602112 5695896 +1610248 5688560 1610032 5685992 1601088 5681704 1610008 5689456 +1610032 5685992 1610032 5685920 1601088 5681704 1610008 5689456 +1610248 5688560 1610032 5685992 1610008 5689456 1610224 5688760 +1610248 5688560 1610096 5686136 1610032 5685992 1610008 5689456 +1601088 5681704 1600992 5681736 1610008 5689456 1610032 5685992 +1602016 5695848 1609672 5689488 1600992 5681736 1601824 5695840 +1600992 5681736 1609672 5689488 1610008 5689456 1601088 5681704 +1610008 5689456 1610032 5685992 1601088 5681704 1609672 5689488 +1610032 5685992 1610032 5685920 1601088 5681704 1609672 5689488 +1609672 5689488 1602016 5695848 1610008 5689456 1610032 5685992 +1601088 5681704 1600992 5681736 1609672 5689488 1610032 5685992 +1600992 5681736 1602016 5695848 1609672 5689488 1601088 5681704 +1610008 5689456 1609672 5689488 1602016 5695848 1602112 5695896 +1610008 5689456 1609672 5689488 1602112 5695896 1602160 5695928 +1610008 5689456 1609672 5689488 1602160 5695928 1602200 5696008 +1610008 5689456 1609672 5689488 1602200 5696008 1602224 5696056 +1610008 5689456 1609672 5689488 1602224 5696056 1612136 5695120 +1609672 5689488 1602200 5696008 1602224 5696056 1612136 5695120 +1609672 5689488 1602112 5695896 1602160 5695928 1602200 5696008 +1602224 5696056 1612120 5695192 1612136 5695120 1609672 5689488 +1610008 5689456 1609672 5689488 1612136 5695120 1612400 5693248 +1610008 5689456 1609672 5689488 1612400 5693248 1612408 5693168 +1609672 5689488 1602224 5696056 1612136 5695120 1612400 5693248 +1610008 5689456 1609672 5689488 1612408 5693168 1612440 5693112 +1612136 5695120 1612440 5693432 1612400 5693248 1609672 5689488 +1609672 5689488 1612136 5695120 1612400 5693248 1612408 5693168 +1609672 5689488 1602160 5695928 1602200 5696008 1602224 5696056 +1610008 5689456 1610032 5685992 1609672 5689488 1612408 5693168 +1609672 5689488 1600992 5681736 1602016 5695848 1602112 5695896 +1609672 5689488 1602016 5695848 1602112 5695896 1602160 5695928 +1610008 5689456 1610248 5688560 1610032 5685992 1609672 5689488 +1610008 5689456 1610224 5688760 1610248 5688560 1609672 5689488 +1610008 5689456 1610232 5688872 1610224 5688760 1609672 5689488 +1610224 5688760 1610248 5688560 1609672 5689488 1610232 5688872 +1610248 5688560 1610096 5686136 1610032 5685992 1609672 5689488 +1610248 5688560 1610368 5688304 1610096 5686136 1609672 5689488 +1610032 5685992 1601088 5681704 1609672 5689488 1610096 5686136 +1610008 5689456 1610296 5689016 1610232 5688872 1609672 5689488 +1610008 5689456 1610232 5688872 1609672 5689488 1612408 5693168 +1610248 5688560 1610096 5686136 1609672 5689488 1610224 5688760 +1602016 5695848 1609400 5689560 1600992 5681736 1601824 5695840 +1609672 5689488 1609400 5689560 1602016 5695848 1602112 5695896 +1609672 5689488 1600992 5681736 1609400 5689560 1602112 5695896 +1609400 5689560 1600992 5681736 1602016 5695848 1602112 5695896 +1609672 5689488 1609400 5689560 1602112 5695896 1602160 5695928 +1609672 5689488 1609400 5689560 1602160 5695928 1602200 5696008 +1609672 5689488 1609400 5689560 1602200 5696008 1602224 5696056 +1609672 5689488 1609400 5689560 1602224 5696056 1612136 5695120 +1609672 5689488 1609400 5689560 1612136 5695120 1612400 5693248 +1609400 5689560 1602224 5696056 1612136 5695120 1612400 5693248 +1612136 5695120 1612440 5693432 1612400 5693248 1609400 5689560 +1609400 5689560 1602160 5695928 1602200 5696008 1602224 5696056 +1602224 5696056 1612120 5695192 1612136 5695120 1609400 5689560 +1612136 5695120 1612400 5693248 1609400 5689560 1612120 5695192 +1602224 5696056 1608544 5699312 1612120 5695192 1609400 5689560 +1609672 5689488 1609400 5689560 1612400 5693248 1612408 5693168 +1609672 5689488 1609400 5689560 1612408 5693168 1610008 5689456 +1609400 5689560 1612136 5695120 1612400 5693248 1612408 5693168 +1612408 5693168 1612440 5693112 1610008 5689456 1609400 5689560 +1609400 5689560 1612400 5693248 1612408 5693168 1610008 5689456 +1609400 5689560 1602200 5696008 1602224 5696056 1612120 5695192 +1609672 5689488 1600992 5681736 1609400 5689560 1610008 5689456 +1609400 5689560 1602016 5695848 1602112 5695896 1602160 5695928 +1609400 5689560 1602112 5695896 1602160 5695928 1602200 5696008 +1600992 5681736 1609400 5689560 1609672 5689488 1601088 5681704 +1609400 5689560 1610008 5689456 1609672 5689488 1601088 5681704 +1600992 5681736 1602016 5695848 1609400 5689560 1601088 5681704 +1609672 5689488 1610032 5685992 1601088 5681704 1609400 5689560 +1610032 5685992 1610032 5685920 1601088 5681704 1609400 5689560 +1609672 5689488 1610096 5686136 1610032 5685992 1609400 5689560 +1609672 5689488 1610248 5688560 1610096 5686136 1609400 5689560 +1610248 5688560 1610368 5688304 1610096 5686136 1609400 5689560 +1610096 5686136 1610032 5685992 1609400 5689560 1610248 5688560 +1609672 5689488 1610248 5688560 1609400 5689560 1610008 5689456 +1610032 5685992 1601088 5681704 1609400 5689560 1610096 5686136 +1601088 5681704 1600992 5681736 1609400 5689560 1610032 5685992 +1609672 5689488 1610224 5688760 1610248 5688560 1609400 5689560 +1609672 5689488 1610232 5688872 1610224 5688760 1609400 5689560 +1610248 5688560 1610096 5686136 1609400 5689560 1610224 5688760 +1609672 5689488 1610224 5688760 1609400 5689560 1610008 5689456 +1602016 5695848 1609280 5689560 1600992 5681736 1601824 5695840 +1609400 5689560 1609280 5689560 1602016 5695848 1602112 5695896 +1609400 5689560 1600992 5681736 1609280 5689560 1602112 5695896 +1600992 5681736 1609280 5689560 1609400 5689560 1601088 5681704 +1600992 5681736 1602016 5695848 1609280 5689560 1601088 5681704 +1609280 5689560 1602112 5695896 1609400 5689560 1601088 5681704 +1609280 5689560 1600992 5681736 1602016 5695848 1602112 5695896 +1609400 5689560 1609280 5689560 1602112 5695896 1602160 5695928 +1609280 5689560 1602016 5695848 1602112 5695896 1602160 5695928 +1609400 5689560 1601088 5681704 1609280 5689560 1602160 5695928 +1609400 5689560 1609280 5689560 1602160 5695928 1602200 5696008 +1609400 5689560 1609280 5689560 1602200 5696008 1602224 5696056 +1609400 5689560 1609280 5689560 1602224 5696056 1612120 5695192 +1609280 5689560 1602200 5696008 1602224 5696056 1612120 5695192 +1602224 5696056 1608544 5699312 1612120 5695192 1609280 5689560 +1609400 5689560 1609280 5689560 1612120 5695192 1612136 5695120 +1609400 5689560 1609280 5689560 1612136 5695120 1612400 5693248 +1609400 5689560 1609280 5689560 1612400 5693248 1612408 5693168 +1609280 5689560 1612136 5695120 1612400 5693248 1612408 5693168 +1612136 5695120 1612440 5693432 1612400 5693248 1609280 5689560 +1609280 5689560 1612120 5695192 1612136 5695120 1612400 5693248 +1609400 5689560 1609280 5689560 1612408 5693168 1610008 5689456 +1609280 5689560 1602224 5696056 1612120 5695192 1612136 5695120 +1609400 5689560 1601088 5681704 1609280 5689560 1612408 5693168 +1609280 5689560 1602112 5695896 1602160 5695928 1602200 5696008 +1609280 5689560 1602160 5695928 1602200 5696008 1602224 5696056 +1609400 5689560 1610032 5685992 1601088 5681704 1609280 5689560 +1610032 5685992 1610032 5685920 1601088 5681704 1609280 5689560 +1609400 5689560 1610032 5685992 1609280 5689560 1612408 5693168 +1601088 5681704 1600992 5681736 1609280 5689560 1610032 5685992 +1609400 5689560 1610096 5686136 1610032 5685992 1609280 5689560 +1609400 5689560 1610248 5688560 1610096 5686136 1609280 5689560 +1610248 5688560 1610368 5688304 1610096 5686136 1609280 5689560 +1609400 5689560 1610224 5688760 1610248 5688560 1609280 5689560 +1610248 5688560 1610096 5686136 1609280 5689560 1610224 5688760 +1609400 5689560 1610224 5688760 1609280 5689560 1612408 5693168 +1610096 5686136 1610032 5685992 1609280 5689560 1610248 5688560 +1610032 5685992 1601088 5681704 1609280 5689560 1610096 5686136 +1609400 5689560 1609672 5689488 1610224 5688760 1609280 5689560 +1609672 5689488 1610232 5688872 1610224 5688760 1609280 5689560 +1610224 5688760 1610248 5688560 1609280 5689560 1609672 5689488 +1609400 5689560 1609672 5689488 1609280 5689560 1612408 5693168 +1602016 5695848 1609232 5689536 1600992 5681736 1601824 5695840 +1600992 5681736 1600928 5681744 1601824 5695840 1609232 5689536 +1600992 5681736 1609232 5689536 1609280 5689560 1601088 5681704 +1609232 5689536 1602016 5695848 1609280 5689560 1601088 5681704 +1602016 5695848 1609280 5689560 1609232 5689536 1601824 5695840 +1609232 5689536 1601088 5681704 1600992 5681736 1601824 5695840 +1609280 5689560 1610032 5685992 1601088 5681704 1609232 5689536 +1610032 5685992 1610032 5685920 1601088 5681704 1609232 5689536 +1609280 5689560 1610032 5685992 1609232 5689536 1602016 5695848 +1601088 5681704 1600992 5681736 1609232 5689536 1610032 5685992 +1609280 5689560 1609232 5689536 1602016 5695848 1602112 5695896 +1609280 5689560 1610032 5685992 1609232 5689536 1602112 5695896 +1609232 5689536 1601824 5695840 1602016 5695848 1602112 5695896 +1609280 5689560 1609232 5689536 1602112 5695896 1602160 5695928 +1609280 5689560 1610032 5685992 1609232 5689536 1602160 5695928 +1609232 5689536 1602016 5695848 1602112 5695896 1602160 5695928 +1609280 5689560 1609232 5689536 1602160 5695928 1602200 5696008 +1609280 5689560 1610032 5685992 1609232 5689536 1602200 5696008 +1609232 5689536 1602112 5695896 1602160 5695928 1602200 5696008 +1609280 5689560 1609232 5689536 1602200 5696008 1602224 5696056 +1609280 5689560 1609232 5689536 1602224 5696056 1612120 5695192 +1609280 5689560 1610032 5685992 1609232 5689536 1602224 5696056 +1609232 5689536 1602160 5695928 1602200 5696008 1602224 5696056 +1609280 5689560 1610096 5686136 1610032 5685992 1609232 5689536 +1609280 5689560 1610096 5686136 1609232 5689536 1602224 5696056 +1610032 5685992 1601088 5681704 1609232 5689536 1610096 5686136 +1609280 5689560 1610248 5688560 1610096 5686136 1609232 5689536 +1610248 5688560 1610368 5688304 1610096 5686136 1609232 5689536 +1609280 5689560 1610224 5688760 1610248 5688560 1609232 5689536 +1609280 5689560 1609672 5689488 1610224 5688760 1609232 5689536 +1609672 5689488 1610232 5688872 1610224 5688760 1609232 5689536 +1610224 5688760 1610248 5688560 1609232 5689536 1609672 5689488 +1609280 5689560 1609672 5689488 1609232 5689536 1602224 5696056 +1610248 5688560 1610096 5686136 1609232 5689536 1610224 5688760 +1610096 5686136 1610032 5685992 1609232 5689536 1610248 5688560 +1609280 5689560 1609400 5689560 1609672 5689488 1609232 5689536 +1609672 5689488 1610224 5688760 1609232 5689536 1609400 5689560 +1609280 5689560 1609400 5689560 1609232 5689536 1602224 5696056 +1609232 5689536 1609240 5689504 1610032 5685992 1601088 5681704 +1609240 5689504 1610096 5686136 1610032 5685992 1601088 5681704 +1610032 5685992 1610032 5685920 1601088 5681704 1609240 5689504 +1609232 5689536 1609240 5689504 1601088 5681704 1600992 5681736 +1609232 5689536 1610096 5686136 1609240 5689504 1600992 5681736 +1609232 5689536 1609240 5689504 1600992 5681736 1601824 5695840 +1609240 5689504 1610032 5685992 1601088 5681704 1600992 5681736 +1610096 5686136 1609240 5689504 1609232 5689536 1610248 5688560 +1610096 5686136 1609240 5689504 1610248 5688560 1610368 5688304 +1610096 5686136 1610032 5685992 1609240 5689504 1610368 5688304 +1610096 5686136 1609240 5689504 1610368 5688304 1610272 5686400 +1609240 5689504 1600992 5681736 1609232 5689536 1610248 5688560 +1609232 5689536 1610224 5688760 1610248 5688560 1609240 5689504 +1609232 5689536 1609672 5689488 1610224 5688760 1609240 5689504 +1609672 5689488 1610232 5688872 1610224 5688760 1609240 5689504 +1609232 5689536 1609400 5689560 1609672 5689488 1609240 5689504 +1609672 5689488 1610224 5688760 1609240 5689504 1609400 5689560 +1609232 5689536 1609400 5689560 1609240 5689504 1600992 5681736 +1610224 5688760 1610248 5688560 1609240 5689504 1609672 5689488 +1609240 5689504 1610224 5688760 1610248 5688560 1610368 5688304 +1609232 5689536 1609280 5689560 1609400 5689560 1609240 5689504 +1609400 5689560 1609672 5689488 1609240 5689504 1609280 5689560 +1609232 5689536 1609280 5689560 1609240 5689504 1600992 5681736 +1610032 5685992 1609160 5689392 1609240 5689504 1610096 5686136 +1609160 5689392 1601088 5681704 1609240 5689504 1610096 5686136 +1609240 5689504 1610368 5688304 1610096 5686136 1609160 5689392 +1609240 5689504 1610248 5688560 1610368 5688304 1609160 5689392 +1609240 5689504 1610248 5688560 1609160 5689392 1601088 5681704 +1610368 5688304 1610096 5686136 1609160 5689392 1610248 5688560 +1610096 5686136 1610032 5685992 1609160 5689392 1610368 5688304 +1610032 5685992 1601088 5681704 1609160 5689392 1610096 5686136 +1601088 5681704 1609160 5689392 1610032 5685992 1610032 5685920 +1610368 5688304 1610272 5686400 1610096 5686136 1609160 5689392 +1610368 5688304 1610536 5688000 1610272 5686400 1609160 5689392 +1610368 5688304 1610272 5686400 1609160 5689392 1610248 5688560 +1610096 5686136 1610032 5685992 1609160 5689392 1610272 5686400 +1609240 5689504 1609160 5689392 1601088 5681704 1600992 5681736 +1609240 5689504 1610248 5688560 1609160 5689392 1600992 5681736 +1609160 5689392 1610032 5685992 1601088 5681704 1600992 5681736 +1609240 5689504 1609160 5689392 1600992 5681736 1609232 5689536 +1609240 5689504 1610248 5688560 1609160 5689392 1609232 5689536 +1600992 5681736 1601824 5695840 1609232 5689536 1609160 5689392 +1600992 5681736 1600928 5681744 1601824 5695840 1609160 5689392 +1601824 5695840 1602016 5695848 1609232 5689536 1609160 5689392 +1609232 5689536 1609240 5689504 1609160 5689392 1602016 5695848 +1602016 5695848 1602112 5695896 1609232 5689536 1609160 5689392 +1602016 5695848 1602112 5695896 1609160 5689392 1601824 5695840 +1609232 5689536 1609240 5689504 1609160 5689392 1602112 5695896 +1601824 5695840 1602016 5695848 1609160 5689392 1600992 5681736 +1609160 5689392 1601088 5681704 1600992 5681736 1601824 5695840 +1602112 5695896 1602160 5695928 1609232 5689536 1609160 5689392 +1609240 5689504 1610224 5688760 1610248 5688560 1609160 5689392 +1610248 5688560 1610368 5688304 1609160 5689392 1610224 5688760 +1609240 5689504 1610224 5688760 1609160 5689392 1609232 5689536 +1609240 5689504 1609672 5689488 1610224 5688760 1609160 5689392 +1609240 5689504 1609672 5689488 1609160 5689392 1609232 5689536 +1609672 5689488 1610232 5688872 1610224 5688760 1609160 5689392 +1609240 5689504 1609400 5689560 1609672 5689488 1609160 5689392 +1609240 5689504 1609400 5689560 1609160 5689392 1609232 5689536 +1609240 5689504 1609280 5689560 1609400 5689560 1609160 5689392 +1609672 5689488 1610224 5688760 1609160 5689392 1609400 5689560 +1610224 5688760 1610248 5688560 1609160 5689392 1609672 5689488 +1601824 5695840 1609120 5689368 1600992 5681736 1600928 5681744 +1609160 5689392 1609120 5689368 1601824 5695840 1602016 5695848 +1609160 5689392 1600992 5681736 1609120 5689368 1602016 5695848 +1609120 5689368 1600992 5681736 1601824 5695840 1602016 5695848 +1609160 5689392 1609120 5689368 1602016 5695848 1602112 5695896 +1609160 5689392 1600992 5681736 1609120 5689368 1602112 5695896 +1609160 5689392 1609120 5689368 1602112 5695896 1609232 5689536 +1609160 5689392 1600992 5681736 1609120 5689368 1609232 5689536 +1609120 5689368 1602016 5695848 1602112 5695896 1609232 5689536 +1609160 5689392 1609120 5689368 1609232 5689536 1609240 5689504 +1609120 5689368 1601824 5695840 1602016 5695848 1602112 5695896 +1600992 5681736 1609120 5689368 1609160 5689392 1601088 5681704 +1609120 5689368 1609232 5689536 1609160 5689392 1601088 5681704 +1600992 5681736 1601824 5695840 1609120 5689368 1601088 5681704 +1609160 5689392 1610032 5685992 1601088 5681704 1609120 5689368 +1609160 5689392 1610032 5685992 1609120 5689368 1609232 5689536 +1609160 5689392 1610096 5686136 1610032 5685992 1609120 5689368 +1609160 5689392 1610096 5686136 1609120 5689368 1609232 5689536 +1610032 5685992 1601088 5681704 1609120 5689368 1610096 5686136 +1609160 5689392 1610272 5686400 1610096 5686136 1609120 5689368 +1609160 5689392 1610272 5686400 1609120 5689368 1609232 5689536 +1610096 5686136 1610032 5685992 1609120 5689368 1610272 5686400 +1610032 5685992 1610032 5685920 1601088 5681704 1609120 5689368 +1609160 5689392 1610368 5688304 1610272 5686400 1609120 5689368 +1610368 5688304 1610536 5688000 1610272 5686400 1609120 5689368 +1609160 5689392 1610368 5688304 1609120 5689368 1609232 5689536 +1609160 5689392 1610248 5688560 1610368 5688304 1609120 5689368 +1609160 5689392 1610224 5688760 1610248 5688560 1609120 5689368 +1609160 5689392 1610224 5688760 1609120 5689368 1609232 5689536 +1610248 5688560 1610368 5688304 1609120 5689368 1610224 5688760 +1610272 5686400 1610096 5686136 1609120 5689368 1610368 5688304 +1610368 5688304 1610272 5686400 1609120 5689368 1610248 5688560 +1601088 5681704 1600992 5681736 1609120 5689368 1610032 5685992 +1602112 5695896 1602160 5695928 1609232 5689536 1609120 5689368 +1602112 5695896 1602160 5695928 1609120 5689368 1602016 5695848 +1609232 5689536 1609160 5689392 1609120 5689368 1602160 5695928 +1602160 5695928 1602200 5696008 1609232 5689536 1609120 5689368 +1609160 5689392 1609672 5689488 1610224 5688760 1609120 5689368 +1601824 5695840 1609040 5689376 1600992 5681736 1600928 5681744 +1609120 5689368 1609040 5689376 1601824 5695840 1602016 5695848 +1609120 5689368 1600992 5681736 1609040 5689376 1602016 5695848 +1600992 5681736 1609040 5689376 1609120 5689368 1601088 5681704 +1609040 5689376 1602016 5695848 1609120 5689368 1601088 5681704 +1609040 5689376 1600992 5681736 1601824 5695840 1602016 5695848 +1600992 5681736 1601824 5695840 1609040 5689376 1601088 5681704 +1609120 5689368 1609040 5689376 1602016 5695848 1602112 5695896 +1609040 5689376 1601824 5695840 1602016 5695848 1602112 5695896 +1609120 5689368 1601088 5681704 1609040 5689376 1602112 5695896 +1609120 5689368 1609040 5689376 1602112 5695896 1602160 5695928 +1609120 5689368 1601088 5681704 1609040 5689376 1602160 5695928 +1609040 5689376 1602016 5695848 1602112 5695896 1602160 5695928 +1609120 5689368 1610032 5685992 1601088 5681704 1609040 5689376 +1609120 5689368 1610032 5685992 1609040 5689376 1602160 5695928 +1601088 5681704 1600992 5681736 1609040 5689376 1610032 5685992 +1609120 5689368 1610096 5686136 1610032 5685992 1609040 5689376 +1609120 5689368 1610096 5686136 1609040 5689376 1602160 5695928 +1609120 5689368 1610272 5686400 1610096 5686136 1609040 5689376 +1609120 5689368 1610272 5686400 1609040 5689376 1602160 5695928 +1610096 5686136 1610032 5685992 1609040 5689376 1610272 5686400 +1609120 5689368 1610368 5688304 1610272 5686400 1609040 5689376 +1610368 5688304 1610536 5688000 1610272 5686400 1609040 5689376 +1609120 5689368 1610368 5688304 1609040 5689376 1602160 5695928 +1610272 5686400 1610096 5686136 1609040 5689376 1610368 5688304 +1610032 5685992 1610032 5685920 1601088 5681704 1609040 5689376 +1609120 5689368 1610248 5688560 1610368 5688304 1609040 5689376 +1609120 5689368 1610248 5688560 1609040 5689376 1602160 5695928 +1609120 5689368 1610224 5688760 1610248 5688560 1609040 5689376 +1610368 5688304 1610272 5686400 1609040 5689376 1610248 5688560 +1610032 5685992 1601088 5681704 1609040 5689376 1610096 5686136 +1609120 5689368 1609040 5689376 1602160 5695928 1609232 5689536 +1609120 5689368 1610248 5688560 1609040 5689376 1609232 5689536 +1609040 5689376 1602112 5695896 1602160 5695928 1609232 5689536 +1609120 5689368 1609040 5689376 1609232 5689536 1609160 5689392 +1609120 5689368 1610248 5688560 1609040 5689376 1609160 5689392 +1609232 5689536 1609240 5689504 1609160 5689392 1609040 5689376 +1602160 5695928 1602200 5696008 1609232 5689536 1609040 5689376 +1609040 5689376 1602160 5695928 1609232 5689536 1609160 5689392 +1601824 5695840 1608984 5689416 1600992 5681736 1600928 5681744 +1609040 5689376 1608984 5689416 1601824 5695840 1602016 5695848 +1609040 5689376 1608984 5689416 1602016 5695848 1602112 5695896 +1608984 5689416 1601824 5695840 1602016 5695848 1602112 5695896 +1609040 5689376 1600992 5681736 1608984 5689416 1602112 5695896 +1600992 5681736 1608984 5689416 1609040 5689376 1601088 5681704 +1609040 5689376 1610032 5685992 1601088 5681704 1608984 5689416 +1610032 5685992 1610032 5685920 1601088 5681704 1608984 5689416 +1608984 5689416 1602112 5695896 1609040 5689376 1610032 5685992 +1601088 5681704 1600992 5681736 1608984 5689416 1610032 5685992 +1608984 5689416 1600992 5681736 1601824 5695840 1602016 5695848 +1600992 5681736 1601824 5695840 1608984 5689416 1601088 5681704 +1609040 5689376 1608984 5689416 1602112 5695896 1602160 5695928 +1608984 5689416 1602016 5695848 1602112 5695896 1602160 5695928 +1609040 5689376 1610032 5685992 1608984 5689416 1602160 5695928 +1609040 5689376 1608984 5689416 1602160 5695928 1609232 5689536 +1609040 5689376 1610032 5685992 1608984 5689416 1609232 5689536 +1608984 5689416 1602112 5695896 1602160 5695928 1609232 5689536 +1602160 5695928 1602200 5696008 1609232 5689536 1608984 5689416 +1609232 5689536 1609040 5689376 1608984 5689416 1602200 5696008 +1602160 5695928 1602200 5696008 1608984 5689416 1602112 5695896 +1609040 5689376 1610096 5686136 1610032 5685992 1608984 5689416 +1609040 5689376 1608984 5689416 1609232 5689536 1609160 5689392 +1609040 5689376 1610032 5685992 1608984 5689416 1609160 5689392 +1608984 5689416 1602200 5696008 1609232 5689536 1609160 5689392 +1609232 5689536 1609240 5689504 1609160 5689392 1608984 5689416 +1609040 5689376 1608984 5689416 1609160 5689392 1609120 5689368 +1602200 5696008 1602224 5696056 1609232 5689536 1608984 5689416 +1609232 5689536 1609160 5689392 1608984 5689416 1602224 5696056 +1602200 5696008 1602224 5696056 1608984 5689416 1602160 5695928 +1602224 5696056 1609280 5689560 1609232 5689536 1608984 5689416 +1601824 5695840 1608896 5689464 1600992 5681736 1600928 5681744 +1608984 5689416 1608896 5689464 1601824 5695840 1602016 5695848 +1608984 5689416 1608896 5689464 1602016 5695848 1602112 5695896 +1608984 5689416 1608896 5689464 1602112 5695896 1602160 5695928 +1608896 5689464 1602016 5695848 1602112 5695896 1602160 5695928 +1608896 5689464 1600992 5681736 1601824 5695840 1602016 5695848 +1608896 5689464 1601824 5695840 1602016 5695848 1602112 5695896 +1608984 5689416 1600992 5681736 1608896 5689464 1602160 5695928 +1600992 5681736 1608896 5689464 1608984 5689416 1601088 5681704 +1600992 5681736 1601824 5695840 1608896 5689464 1601088 5681704 +1608984 5689416 1610032 5685992 1601088 5681704 1608896 5689464 +1608984 5689416 1609040 5689376 1610032 5685992 1608896 5689464 +1610032 5685992 1610032 5685920 1601088 5681704 1608896 5689464 +1610032 5685992 1601088 5681704 1608896 5689464 1609040 5689376 +1608896 5689464 1602160 5695928 1608984 5689416 1609040 5689376 +1601088 5681704 1600992 5681736 1608896 5689464 1610032 5685992 +1608984 5689416 1608896 5689464 1602160 5695928 1602200 5696008 +1608896 5689464 1602112 5695896 1602160 5695928 1602200 5696008 +1608984 5689416 1609040 5689376 1608896 5689464 1602200 5696008 +1608984 5689416 1608896 5689464 1602200 5696008 1602224 5696056 +1608984 5689416 1609040 5689376 1608896 5689464 1602224 5696056 +1608896 5689464 1602160 5695928 1602200 5696008 1602224 5696056 +1609040 5689376 1610096 5686136 1610032 5685992 1608896 5689464 +1608984 5689416 1608896 5689464 1602224 5696056 1609232 5689536 +1608984 5689416 1609040 5689376 1608896 5689464 1609232 5689536 +1608984 5689416 1608896 5689464 1609232 5689536 1609160 5689392 +1608896 5689464 1602200 5696008 1602224 5696056 1609232 5689536 +1602224 5696056 1609280 5689560 1609232 5689536 1608896 5689464 +1602224 5696056 1612120 5695192 1609280 5689560 1608896 5689464 +1602224 5696056 1608544 5699312 1612120 5695192 1608896 5689464 +1612120 5695192 1612136 5695120 1609280 5689560 1608896 5689464 +1612120 5695192 1612136 5695120 1608896 5689464 1602224 5696056 +1612136 5695120 1612400 5693248 1609280 5689560 1608896 5689464 +1602224 5696056 1612120 5695192 1608896 5689464 1602200 5696008 +1609232 5689536 1608984 5689416 1608896 5689464 1609280 5689560 +1609280 5689560 1609232 5689536 1608896 5689464 1612136 5695120 +1601824 5695840 1608840 5689480 1600992 5681736 1600928 5681744 +1608840 5689480 1608896 5689464 1600992 5681736 1600928 5681744 +1608896 5689464 1608840 5689480 1601824 5695840 1602016 5695848 +1608896 5689464 1600992 5681736 1608840 5689480 1602016 5695848 +1600992 5681736 1608840 5689480 1608896 5689464 1601088 5681704 +1600992 5681736 1600928 5681744 1608840 5689480 1601088 5681704 +1608840 5689480 1602016 5695848 1608896 5689464 1601088 5681704 +1601824 5695840 1602016 5695848 1608840 5689480 1600928 5681744 +1608896 5689464 1608840 5689480 1602016 5695848 1602112 5695896 +1608896 5689464 1608840 5689480 1602112 5695896 1602160 5695928 +1608896 5689464 1608840 5689480 1602160 5695928 1602200 5696008 +1608840 5689480 1602112 5695896 1602160 5695928 1602200 5696008 +1608840 5689480 1601824 5695840 1602016 5695848 1602112 5695896 +1608896 5689464 1601088 5681704 1608840 5689480 1602200 5696008 +1608840 5689480 1602016 5695848 1602112 5695896 1602160 5695928 +1608896 5689464 1610032 5685992 1601088 5681704 1608840 5689480 +1608896 5689464 1610032 5685992 1608840 5689480 1602200 5696008 +1601088 5681704 1600992 5681736 1608840 5689480 1610032 5685992 +1610032 5685992 1610032 5685920 1601088 5681704 1608840 5689480 +1608896 5689464 1609040 5689376 1610032 5685992 1608840 5689480 +1608896 5689464 1608984 5689416 1609040 5689376 1608840 5689480 +1608896 5689464 1608984 5689416 1608840 5689480 1602200 5696008 +1609040 5689376 1610032 5685992 1608840 5689480 1608984 5689416 +1610032 5685992 1601088 5681704 1608840 5689480 1609040 5689376 +1601824 5695840 1608840 5689480 1600928 5681744 1600832 5681736 +1608896 5689464 1608840 5689480 1602200 5696008 1602224 5696056 +1608840 5689480 1602160 5695928 1602200 5696008 1602224 5696056 +1608896 5689464 1608984 5689416 1608840 5689480 1602224 5696056 +1608896 5689464 1608840 5689480 1602224 5696056 1612120 5695192 +1608896 5689464 1608984 5689416 1608840 5689480 1612120 5695192 +1608896 5689464 1608840 5689480 1612120 5695192 1612136 5695120 +1608896 5689464 1608984 5689416 1608840 5689480 1612136 5695120 +1602224 5696056 1608544 5699312 1612120 5695192 1608840 5689480 +1608896 5689464 1608840 5689480 1612136 5695120 1609280 5689560 +1608896 5689464 1608984 5689416 1608840 5689480 1609280 5689560 +1608840 5689480 1612120 5695192 1612136 5695120 1609280 5689560 +1612136 5695120 1612400 5693248 1609280 5689560 1608840 5689480 +1612400 5693248 1612408 5693168 1609280 5689560 1608840 5689480 +1612136 5695120 1612440 5693432 1612400 5693248 1608840 5689480 +1612136 5695120 1612400 5693248 1608840 5689480 1612120 5695192 +1609280 5689560 1608896 5689464 1608840 5689480 1612400 5693248 +1608840 5689480 1602200 5696008 1602224 5696056 1612120 5695192 +1608840 5689480 1602224 5696056 1612120 5695192 1612136 5695120 +1609040 5689376 1610096 5686136 1610032 5685992 1608840 5689480 +1609040 5689376 1610272 5686400 1610096 5686136 1608840 5689480 +1609040 5689376 1610096 5686136 1608840 5689480 1608984 5689416 +1610032 5685992 1601088 5681704 1608840 5689480 1610096 5686136 +1608896 5689464 1608840 5689480 1609280 5689560 1609232 5689536 +1608896 5689464 1608984 5689416 1608840 5689480 1609232 5689536 +1608840 5689480 1612400 5693248 1609280 5689560 1609232 5689536 +1608896 5689464 1608840 5689480 1609232 5689536 1608984 5689416 +1600928 5681744 1608736 5689448 1608840 5689480 1600992 5681736 +1608840 5689480 1601088 5681704 1600992 5681736 1608736 5689448 +1600992 5681736 1600928 5681744 1608736 5689448 1601088 5681704 +1608840 5689480 1610032 5685992 1601088 5681704 1608736 5689448 +1601088 5681704 1600992 5681736 1608736 5689448 1610032 5685992 +1608840 5689480 1608736 5689448 1601824 5695840 1602016 5695848 +1608736 5689448 1600928 5681744 1601824 5695840 1602016 5695848 +1608840 5689480 1608736 5689448 1602016 5695848 1602112 5695896 +1608736 5689448 1601824 5695840 1602016 5695848 1602112 5695896 +1608736 5689448 1602112 5695896 1608840 5689480 1610032 5685992 +1610032 5685992 1610032 5685920 1601088 5681704 1608736 5689448 +1601088 5681704 1600992 5681736 1608736 5689448 1610032 5685920 +1610032 5685992 1610032 5685920 1608736 5689448 1608840 5689480 +1608840 5689480 1608736 5689448 1602112 5695896 1602160 5695928 +1608840 5689480 1608736 5689448 1602160 5695928 1602200 5696008 +1608840 5689480 1608736 5689448 1602200 5696008 1602224 5696056 +1608736 5689448 1602160 5695928 1602200 5696008 1602224 5696056 +1608736 5689448 1602016 5695848 1602112 5695896 1602160 5695928 +1608840 5689480 1610032 5685992 1608736 5689448 1602224 5696056 +1608736 5689448 1602112 5695896 1602160 5695928 1602200 5696008 +1608840 5689480 1610096 5686136 1610032 5685992 1608736 5689448 +1610032 5685992 1610032 5685920 1608736 5689448 1610096 5686136 +1608840 5689480 1610096 5686136 1608736 5689448 1602224 5696056 +1601824 5695840 1608736 5689448 1600928 5681744 1600832 5681736 +1600928 5681744 1601824 5695840 1608736 5689448 1600992 5681736 +1608840 5689480 1608736 5689448 1602224 5696056 1612120 5695192 +1608736 5689448 1602200 5696008 1602224 5696056 1612120 5695192 +1608840 5689480 1610096 5686136 1608736 5689448 1612120 5695192 +1602224 5696056 1608544 5699312 1612120 5695192 1608736 5689448 +1610032 5685920 1601128 5681664 1601088 5681704 1608736 5689448 +1608840 5689480 1608736 5689448 1612120 5695192 1612136 5695120 +1608840 5689480 1609040 5689376 1610096 5686136 1608736 5689448 +1608840 5689480 1609040 5689376 1608736 5689448 1612120 5695192 +1609040 5689376 1610272 5686400 1610096 5686136 1608736 5689448 +1608840 5689480 1608984 5689416 1609040 5689376 1608736 5689448 +1608840 5689480 1608896 5689464 1608984 5689416 1608736 5689448 +1608840 5689480 1608896 5689464 1608736 5689448 1612120 5695192 +1608984 5689416 1609040 5689376 1608736 5689448 1608896 5689464 +1610096 5686136 1610032 5685992 1608736 5689448 1609040 5689376 +1609040 5689376 1610096 5686136 1608736 5689448 1608984 5689416 +1608736 5689448 1608616 5689368 1601824 5695840 1602016 5695848 +1608736 5689448 1608616 5689368 1602016 5695848 1602112 5695896 +1608616 5689368 1601824 5695840 1602016 5695848 1602112 5695896 +1608736 5689448 1608616 5689368 1602112 5695896 1602160 5695928 +1608616 5689368 1602016 5695848 1602112 5695896 1602160 5695928 +1608736 5689448 1608616 5689368 1602160 5695928 1602200 5696008 +1601824 5695840 1608616 5689368 1600928 5681744 1600832 5681736 +1608736 5689448 1600928 5681744 1608616 5689368 1602160 5695928 +1600928 5681744 1608616 5689368 1608736 5689448 1600992 5681736 +1608736 5689448 1601088 5681704 1600992 5681736 1608616 5689368 +1608736 5689448 1610032 5685920 1601088 5681704 1608616 5689368 +1601088 5681704 1600992 5681736 1608616 5689368 1610032 5685920 +1608736 5689448 1610032 5685992 1610032 5685920 1608616 5689368 +1610032 5685920 1601088 5681704 1608616 5689368 1610032 5685992 +1608736 5689448 1610096 5686136 1610032 5685992 1608616 5689368 +1610032 5685992 1610032 5685920 1608616 5689368 1610096 5686136 +1608736 5689448 1609040 5689376 1610096 5686136 1608616 5689368 +1610096 5686136 1610032 5685992 1608616 5689368 1609040 5689376 +1609040 5689376 1610272 5686400 1610096 5686136 1608616 5689368 +1610096 5686136 1610032 5685992 1608616 5689368 1610272 5686400 +1609040 5689376 1610368 5688304 1610272 5686400 1608616 5689368 +1610368 5688304 1610536 5688000 1610272 5686400 1608616 5689368 +1610272 5686400 1610096 5686136 1608616 5689368 1610368 5688304 +1609040 5689376 1610248 5688560 1610368 5688304 1608616 5689368 +1610368 5688304 1610272 5686400 1608616 5689368 1610248 5688560 +1609040 5689376 1610248 5688560 1608616 5689368 1608736 5689448 +1609040 5689376 1609120 5689368 1610248 5688560 1608616 5689368 +1608616 5689368 1602160 5695928 1608736 5689448 1609040 5689376 +1600992 5681736 1600928 5681744 1608616 5689368 1601088 5681704 +1608616 5689368 1600928 5681744 1601824 5695840 1602016 5695848 +1600928 5681744 1601824 5695840 1608616 5689368 1600992 5681736 +1610032 5685920 1601128 5681664 1601088 5681704 1608616 5689368 +1608736 5689448 1608984 5689416 1609040 5689376 1608616 5689368 +1608736 5689448 1608896 5689464 1608984 5689416 1608616 5689368 +1609040 5689376 1610248 5688560 1608616 5689368 1608984 5689416 +1608736 5689448 1608984 5689416 1608616 5689368 1602160 5695928 +1601824 5695840 1608392 5689208 1600928 5681744 1600832 5681736 +1608616 5689368 1608392 5689208 1601824 5695840 1602016 5695848 +1608392 5689208 1600928 5681744 1601824 5695840 1602016 5695848 +1608616 5689368 1608392 5689208 1602016 5695848 1602112 5695896 +1608616 5689368 1608392 5689208 1602112 5695896 1602160 5695928 +1608392 5689208 1602016 5695848 1602112 5695896 1602160 5695928 +1608616 5689368 1608392 5689208 1602160 5695928 1608736 5689448 +1608392 5689208 1601824 5695840 1602016 5695848 1602112 5695896 +1608616 5689368 1600928 5681744 1608392 5689208 1602160 5695928 +1600928 5681744 1608392 5689208 1608616 5689368 1600992 5681736 +1600928 5681744 1601824 5695840 1608392 5689208 1600992 5681736 +1608616 5689368 1601088 5681704 1600992 5681736 1608392 5689208 +1608616 5689368 1610032 5685920 1601088 5681704 1608392 5689208 +1608616 5689368 1610032 5685992 1610032 5685920 1608392 5689208 +1610032 5685920 1601088 5681704 1608392 5689208 1610032 5685992 +1608616 5689368 1610096 5686136 1610032 5685992 1608392 5689208 +1610032 5685992 1610032 5685920 1608392 5689208 1610096 5686136 +1608616 5689368 1610272 5686400 1610096 5686136 1608392 5689208 +1608616 5689368 1610368 5688304 1610272 5686400 1608392 5689208 +1610368 5688304 1610536 5688000 1610272 5686400 1608392 5689208 +1610272 5686400 1610096 5686136 1608392 5689208 1610368 5688304 +1608616 5689368 1610248 5688560 1610368 5688304 1608392 5689208 +1610368 5688304 1610272 5686400 1608392 5689208 1610248 5688560 +1608616 5689368 1609040 5689376 1610248 5688560 1608392 5689208 +1610248 5688560 1610368 5688304 1608392 5689208 1609040 5689376 +1610096 5686136 1610032 5685992 1608392 5689208 1610272 5686400 +1608616 5689368 1608984 5689416 1609040 5689376 1608392 5689208 +1609040 5689376 1609120 5689368 1610248 5688560 1608392 5689208 +1609120 5689368 1610224 5688760 1610248 5688560 1608392 5689208 +1609040 5689376 1609120 5689368 1608392 5689208 1608616 5689368 +1610248 5688560 1610368 5688304 1608392 5689208 1609120 5689368 +1601088 5681704 1600992 5681736 1608392 5689208 1610032 5685920 +1608392 5689208 1602160 5695928 1608616 5689368 1609040 5689376 +1600992 5681736 1600928 5681744 1608392 5689208 1601088 5681704 +1610032 5685920 1601128 5681664 1601088 5681704 1608392 5689208 +1610032 5685920 1601128 5681664 1608392 5689208 1610032 5685992 +1610032 5685920 1601592 5681216 1601128 5681664 1608392 5689208 +1601088 5681704 1600992 5681736 1608392 5689208 1601128 5681664 +1610032 5685920 1608288 5689072 1608392 5689208 1610032 5685992 +1608288 5689072 1601128 5681664 1608392 5689208 1610032 5685992 +1610032 5685920 1601128 5681664 1608288 5689072 1610032 5685992 +1608392 5689208 1610096 5686136 1610032 5685992 1608288 5689072 +1608392 5689208 1610096 5686136 1608288 5689072 1601128 5681664 +1610032 5685992 1610032 5685920 1608288 5689072 1610096 5686136 +1608392 5689208 1610272 5686400 1610096 5686136 1608288 5689072 +1608392 5689208 1610272 5686400 1608288 5689072 1601128 5681664 +1610096 5686136 1610032 5685992 1608288 5689072 1610272 5686400 +1608392 5689208 1610368 5688304 1610272 5686400 1608288 5689072 +1608392 5689208 1610368 5688304 1608288 5689072 1601128 5681664 +1610368 5688304 1610536 5688000 1610272 5686400 1608288 5689072 +1608392 5689208 1610248 5688560 1610368 5688304 1608288 5689072 +1608392 5689208 1610248 5688560 1608288 5689072 1601128 5681664 +1610368 5688304 1610272 5686400 1608288 5689072 1610248 5688560 +1608392 5689208 1609120 5689368 1610248 5688560 1608288 5689072 +1608392 5689208 1609120 5689368 1608288 5689072 1601128 5681664 +1609120 5689368 1610224 5688760 1610248 5688560 1608288 5689072 +1610248 5688560 1610368 5688304 1608288 5689072 1609120 5689368 +1610272 5686400 1610096 5686136 1608288 5689072 1610368 5688304 +1601128 5681664 1608288 5689072 1610032 5685920 1601592 5681216 +1608392 5689208 1609040 5689376 1609120 5689368 1608288 5689072 +1608392 5689208 1609040 5689376 1608288 5689072 1601128 5681664 +1608392 5689208 1608616 5689368 1609040 5689376 1608288 5689072 +1609120 5689368 1610248 5688560 1608288 5689072 1609040 5689376 +1608392 5689208 1608288 5689072 1601128 5681664 1601088 5681704 +1608392 5689208 1609040 5689376 1608288 5689072 1601088 5681704 +1608288 5689072 1610032 5685920 1601128 5681664 1601088 5681704 +1608392 5689208 1608288 5689072 1601088 5681704 1600992 5681736 +1608392 5689208 1609040 5689376 1608288 5689072 1600992 5681736 +1608392 5689208 1608288 5689072 1600992 5681736 1600928 5681744 +1608392 5689208 1609040 5689376 1608288 5689072 1600928 5681744 +1608392 5689208 1608288 5689072 1600928 5681744 1601824 5695840 +1608392 5689208 1608288 5689072 1601824 5695840 1602016 5695848 +1608392 5689208 1609040 5689376 1608288 5689072 1602016 5695848 +1608288 5689072 1600928 5681744 1601824 5695840 1602016 5695848 +1600928 5681744 1600832 5681736 1601824 5695840 1608288 5689072 +1608288 5689072 1601088 5681704 1600992 5681736 1600928 5681744 +1608392 5689208 1608288 5689072 1602016 5695848 1602112 5695896 +1608288 5689072 1601824 5695840 1602016 5695848 1602112 5695896 +1608392 5689208 1609040 5689376 1608288 5689072 1602112 5695896 +1608392 5689208 1608288 5689072 1602112 5695896 1602160 5695928 +1608288 5689072 1600992 5681736 1600928 5681744 1601824 5695840 +1608288 5689072 1601128 5681664 1601088 5681704 1600992 5681736 +1608288 5689072 1608240 5688912 1601128 5681664 1601088 5681704 +1608288 5689072 1610032 5685920 1608240 5688912 1601088 5681704 +1610032 5685920 1608240 5688912 1608288 5689072 1610032 5685992 +1608240 5688912 1601088 5681704 1608288 5689072 1610032 5685992 +1608288 5689072 1610096 5686136 1610032 5685992 1608240 5688912 +1608288 5689072 1610096 5686136 1608240 5688912 1601088 5681704 +1610032 5685992 1610032 5685920 1608240 5688912 1610096 5686136 +1608240 5688912 1610032 5685920 1601128 5681664 1601088 5681704 +1610032 5685920 1601128 5681664 1608240 5688912 1610032 5685992 +1608288 5689072 1610272 5686400 1610096 5686136 1608240 5688912 +1608288 5689072 1610272 5686400 1608240 5688912 1601088 5681704 +1610096 5686136 1610032 5685992 1608240 5688912 1610272 5686400 +1608288 5689072 1610368 5688304 1610272 5686400 1608240 5688912 +1608288 5689072 1610368 5688304 1608240 5688912 1601088 5681704 +1610368 5688304 1610536 5688000 1610272 5686400 1608240 5688912 +1610272 5686400 1610096 5686136 1608240 5688912 1610368 5688304 +1608288 5689072 1610248 5688560 1610368 5688304 1608240 5688912 +1608288 5689072 1610248 5688560 1608240 5688912 1601088 5681704 +1608288 5689072 1609120 5689368 1610248 5688560 1608240 5688912 +1608288 5689072 1609120 5689368 1608240 5688912 1601088 5681704 +1610248 5688560 1610368 5688304 1608240 5688912 1609120 5689368 +1609120 5689368 1610224 5688760 1610248 5688560 1608240 5688912 +1608288 5689072 1609040 5689376 1609120 5689368 1608240 5688912 +1608288 5689072 1609040 5689376 1608240 5688912 1601088 5681704 +1609120 5689368 1610248 5688560 1608240 5688912 1609040 5689376 +1610368 5688304 1610272 5686400 1608240 5688912 1610248 5688560 +1601128 5681664 1608240 5688912 1610032 5685920 1601592 5681216 +1601128 5681664 1601088 5681704 1608240 5688912 1601592 5681216 +1608240 5688912 1610032 5685992 1610032 5685920 1601592 5681216 +1608288 5689072 1608392 5689208 1609040 5689376 1608240 5688912 +1608288 5689072 1608392 5689208 1608240 5688912 1601088 5681704 +1608392 5689208 1608616 5689368 1609040 5689376 1608240 5688912 +1609040 5689376 1609120 5689368 1608240 5688912 1608392 5689208 +1601128 5681664 1608240 5688912 1601592 5681216 1601160 5681616 +1608288 5689072 1608240 5688912 1601088 5681704 1600992 5681736 +1608240 5688912 1601128 5681664 1601088 5681704 1600992 5681736 +1608288 5689072 1608392 5689208 1608240 5688912 1600992 5681736 +1608288 5689072 1608240 5688912 1600992 5681736 1600928 5681744 +1608288 5689072 1608392 5689208 1608240 5688912 1600928 5681744 +1608288 5689072 1608240 5688912 1600928 5681744 1601824 5695840 +1608288 5689072 1608240 5688912 1601824 5695840 1602016 5695848 +1608288 5689072 1608240 5688912 1602016 5695848 1602112 5695896 +1608288 5689072 1608392 5689208 1608240 5688912 1602016 5695848 +1600928 5681744 1600832 5681736 1601824 5695840 1608240 5688912 +1608240 5688912 1600992 5681736 1600928 5681744 1601824 5695840 +1608240 5688912 1600928 5681744 1601824 5695840 1602016 5695848 +1608240 5688912 1601088 5681704 1600992 5681736 1600928 5681744 +1610032 5685920 1610080 5685800 1601592 5681216 1608240 5688912 +1610032 5685920 1608224 5688712 1608240 5688912 1610032 5685992 +1608240 5688912 1610096 5686136 1610032 5685992 1608224 5688712 +1608240 5688912 1610272 5686400 1610096 5686136 1608224 5688712 +1610096 5686136 1610032 5685992 1608224 5688712 1610272 5686400 +1608224 5688712 1601592 5681216 1608240 5688912 1610272 5686400 +1610032 5685992 1610032 5685920 1608224 5688712 1610096 5686136 +1608240 5688912 1610368 5688304 1610272 5686400 1608224 5688712 +1610272 5686400 1610096 5686136 1608224 5688712 1610368 5688304 +1610368 5688304 1610536 5688000 1610272 5686400 1608224 5688712 +1608240 5688912 1610368 5688304 1608224 5688712 1601592 5681216 +1608240 5688912 1610248 5688560 1610368 5688304 1608224 5688712 +1608240 5688912 1610248 5688560 1608224 5688712 1601592 5681216 +1610368 5688304 1610272 5686400 1608224 5688712 1610248 5688560 +1608240 5688912 1609120 5689368 1610248 5688560 1608224 5688712 +1608240 5688912 1609120 5689368 1608224 5688712 1601592 5681216 +1609120 5689368 1610224 5688760 1610248 5688560 1608224 5688712 +1608240 5688912 1609040 5689376 1609120 5689368 1608224 5688712 +1608240 5688912 1609040 5689376 1608224 5688712 1601592 5681216 +1609120 5689368 1610248 5688560 1608224 5688712 1609040 5689376 +1608240 5688912 1608392 5689208 1609040 5689376 1608224 5688712 +1610248 5688560 1610368 5688304 1608224 5688712 1609120 5689368 +1608240 5688912 1608224 5688712 1601592 5681216 1601128 5681664 +1608240 5688912 1608224 5688712 1601128 5681664 1601088 5681704 +1608240 5688912 1608224 5688712 1601088 5681704 1600992 5681736 +1608224 5688712 1601128 5681664 1601088 5681704 1600992 5681736 +1608240 5688912 1609040 5689376 1608224 5688712 1600992 5681736 +1608224 5688712 1610032 5685920 1601592 5681216 1601128 5681664 +1608224 5688712 1601592 5681216 1601128 5681664 1601088 5681704 +1610032 5685920 1601592 5681216 1608224 5688712 1610032 5685992 +1601592 5681216 1601160 5681616 1601128 5681664 1608224 5688712 +1608240 5688912 1608224 5688712 1600992 5681736 1600928 5681744 +1608224 5688712 1601088 5681704 1600992 5681736 1600928 5681744 +1608240 5688912 1609040 5689376 1608224 5688712 1600928 5681744 +1608240 5688912 1608224 5688712 1600928 5681744 1601824 5695840 +1608240 5688912 1609040 5689376 1608224 5688712 1601824 5695840 +1600928 5681744 1600832 5681736 1601824 5695840 1608224 5688712 +1608240 5688912 1608224 5688712 1601824 5695840 1602016 5695848 +1608224 5688712 1600992 5681736 1600928 5681744 1601824 5695840 +1601592 5681216 1608224 5688712 1610032 5685920 1610080 5685800 +1608224 5688712 1608200 5688584 1601592 5681216 1601128 5681664 +1608224 5688712 1608200 5688584 1601128 5681664 1601088 5681704 +1608224 5688712 1608200 5688584 1601088 5681704 1600992 5681736 +1608224 5688712 1608200 5688584 1600992 5681736 1600928 5681744 +1608200 5688584 1601088 5681704 1600992 5681736 1600928 5681744 +1608200 5688584 1601592 5681216 1601128 5681664 1601088 5681704 +1608200 5688584 1601128 5681664 1601088 5681704 1600992 5681736 +1608224 5688712 1610032 5685920 1608200 5688584 1600928 5681744 +1610032 5685920 1608200 5688584 1608224 5688712 1610032 5685992 +1608224 5688712 1610096 5686136 1610032 5685992 1608200 5688584 +1608224 5688712 1610272 5686400 1610096 5686136 1608200 5688584 +1608224 5688712 1610368 5688304 1610272 5686400 1608200 5688584 +1610368 5688304 1610536 5688000 1610272 5686400 1608200 5688584 +1610368 5688304 1610536 5688000 1608200 5688584 1608224 5688712 +1610272 5686400 1610096 5686136 1608200 5688584 1610536 5688000 +1610096 5686136 1610032 5685992 1608200 5688584 1610272 5686400 +1608224 5688712 1610248 5688560 1610368 5688304 1608200 5688584 +1610368 5688304 1610536 5688000 1608200 5688584 1610248 5688560 +1608224 5688712 1609120 5689368 1610248 5688560 1608200 5688584 +1610248 5688560 1610368 5688304 1608200 5688584 1609120 5689368 +1608224 5688712 1609040 5689376 1609120 5689368 1608200 5688584 +1609120 5689368 1610224 5688760 1610248 5688560 1608200 5688584 +1610536 5688000 1610560 5686784 1610272 5686400 1608200 5688584 +1608200 5688584 1600928 5681744 1608224 5688712 1609120 5689368 +1610032 5685992 1610032 5685920 1608200 5688584 1610096 5686136 +1608200 5688584 1610032 5685920 1601592 5681216 1601128 5681664 +1610032 5685920 1601592 5681216 1608200 5688584 1610032 5685992 +1601592 5681216 1601160 5681616 1601128 5681664 1608200 5688584 +1608224 5688712 1608200 5688584 1600928 5681744 1601824 5695840 +1608200 5688584 1600992 5681736 1600928 5681744 1601824 5695840 +1608224 5688712 1609120 5689368 1608200 5688584 1601824 5695840 +1600928 5681744 1600832 5681736 1601824 5695840 1608200 5688584 +1608224 5688712 1608200 5688584 1601824 5695840 1608240 5688912 +1608224 5688712 1609120 5689368 1608200 5688584 1608240 5688912 +1601824 5695840 1602016 5695848 1608240 5688912 1608200 5688584 +1608200 5688584 1600928 5681744 1601824 5695840 1608240 5688912 +1601592 5681216 1608200 5688584 1610032 5685920 1610080 5685800 +1608200 5688584 1608072 5688280 1601592 5681216 1601128 5681664 +1608200 5688584 1608072 5688280 1601128 5681664 1601088 5681704 +1608200 5688584 1608072 5688280 1601088 5681704 1600992 5681736 +1608200 5688584 1608072 5688280 1600992 5681736 1600928 5681744 +1608200 5688584 1608072 5688280 1600928 5681744 1601824 5695840 +1608072 5688280 1600992 5681736 1600928 5681744 1601824 5695840 +1608072 5688280 1601128 5681664 1601088 5681704 1600992 5681736 +1608072 5688280 1601088 5681704 1600992 5681736 1600928 5681744 +1608072 5688280 1601592 5681216 1601128 5681664 1601088 5681704 +1608200 5688584 1610032 5685920 1608072 5688280 1601824 5695840 +1610032 5685920 1608072 5688280 1608200 5688584 1610032 5685992 +1608200 5688584 1610096 5686136 1610032 5685992 1608072 5688280 +1608200 5688584 1610272 5686400 1610096 5686136 1608072 5688280 +1608200 5688584 1610536 5688000 1610272 5686400 1608072 5688280 +1608200 5688584 1610368 5688304 1610536 5688000 1608072 5688280 +1608200 5688584 1610248 5688560 1610368 5688304 1608072 5688280 +1610368 5688304 1610536 5688000 1608072 5688280 1610248 5688560 +1610536 5688000 1610272 5686400 1608072 5688280 1610368 5688304 +1610272 5686400 1610096 5686136 1608072 5688280 1610536 5688000 +1608200 5688584 1609120 5689368 1610248 5688560 1608072 5688280 +1610536 5688000 1610560 5686784 1610272 5686400 1608072 5688280 +1610096 5686136 1610032 5685992 1608072 5688280 1610272 5686400 +1608072 5688280 1601824 5695840 1608200 5688584 1610248 5688560 +1610032 5685992 1610032 5685920 1608072 5688280 1610096 5686136 +1601592 5681216 1601160 5681616 1601128 5681664 1608072 5688280 +1600928 5681744 1600832 5681736 1601824 5695840 1608072 5688280 +1608072 5688280 1610032 5685920 1601592 5681216 1601128 5681664 +1610032 5685920 1601592 5681216 1608072 5688280 1610032 5685992 +1608200 5688584 1608072 5688280 1601824 5695840 1608240 5688912 +1608072 5688280 1600928 5681744 1601824 5695840 1608240 5688912 +1608200 5688584 1610248 5688560 1608072 5688280 1608240 5688912 +1608200 5688584 1608072 5688280 1608240 5688912 1608224 5688712 +1608200 5688584 1610248 5688560 1608072 5688280 1608224 5688712 +1601824 5695840 1602016 5695848 1608240 5688912 1608072 5688280 +1602016 5695848 1608288 5689072 1608240 5688912 1608072 5688280 +1601824 5695840 1602016 5695848 1608072 5688280 1600928 5681744 +1608072 5688280 1602016 5695848 1608240 5688912 1608224 5688712 +1601592 5681216 1608072 5688280 1610032 5685920 1610080 5685800 +1608072 5688280 1608040 5688080 1601592 5681216 1601128 5681664 +1608072 5688280 1608040 5688080 1601128 5681664 1601088 5681704 +1608072 5688280 1608040 5688080 1601088 5681704 1600992 5681736 +1608072 5688280 1608040 5688080 1600992 5681736 1600928 5681744 +1608072 5688280 1608040 5688080 1600928 5681744 1601824 5695840 +1608072 5688280 1608040 5688080 1601824 5695840 1602016 5695848 +1608040 5688080 1601088 5681704 1600992 5681736 1600928 5681744 +1608040 5688080 1600992 5681736 1600928 5681744 1601824 5695840 +1608040 5688080 1601128 5681664 1601088 5681704 1600992 5681736 +1601592 5681216 1601160 5681616 1601128 5681664 1608040 5688080 +1600928 5681744 1600832 5681736 1601824 5695840 1608040 5688080 +1608040 5688080 1601592 5681216 1601128 5681664 1601088 5681704 +1608072 5688280 1610032 5685920 1608040 5688080 1601824 5695840 +1610032 5685920 1608040 5688080 1608072 5688280 1610032 5685992 +1608072 5688280 1610096 5686136 1610032 5685992 1608040 5688080 +1608072 5688280 1610272 5686400 1610096 5686136 1608040 5688080 +1608072 5688280 1610536 5688000 1610272 5686400 1608040 5688080 +1608072 5688280 1610368 5688304 1610536 5688000 1608040 5688080 +1608072 5688280 1610248 5688560 1610368 5688304 1608040 5688080 +1608072 5688280 1608200 5688584 1610248 5688560 1608040 5688080 +1610248 5688560 1610368 5688304 1608040 5688080 1608200 5688584 +1610368 5688304 1610536 5688000 1608040 5688080 1610248 5688560 +1610536 5688000 1610272 5686400 1608040 5688080 1610368 5688304 +1608200 5688584 1609120 5689368 1610248 5688560 1608040 5688080 +1610536 5688000 1610560 5686784 1610272 5686400 1608040 5688080 +1610272 5686400 1610096 5686136 1608040 5688080 1610536 5688000 +1610096 5686136 1610032 5685992 1608040 5688080 1610272 5686400 +1610032 5685920 1601592 5681216 1608040 5688080 1610032 5685992 +1608040 5688080 1601824 5695840 1608072 5688280 1608200 5688584 +1610032 5685992 1610032 5685920 1608040 5688080 1610096 5686136 +1608040 5688080 1610032 5685920 1601592 5681216 1601128 5681664 +1601592 5681216 1608040 5688080 1610032 5685920 1610080 5685800 +1608040 5688080 1610032 5685992 1610032 5685920 1610080 5685800 +1601592 5681216 1601128 5681664 1608040 5688080 1610080 5685800 +1601592 5681216 1608040 5688080 1610080 5685800 1610432 5683632 +1601592 5681216 1608040 5688080 1610432 5683632 1610432 5683584 +1601592 5681216 1601128 5681664 1608040 5688080 1610432 5683632 +1608040 5688080 1610032 5685920 1610080 5685800 1610432 5683632 +1610080 5685800 1610536 5684592 1610432 5683632 1608040 5688080 +1601592 5681216 1608048 5687808 1610432 5683632 1610432 5683584 +1608040 5688080 1608048 5687808 1601592 5681216 1601128 5681664 +1608048 5687808 1610432 5683632 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1608048 5687808 +1608040 5688080 1608048 5687808 1601128 5681664 1601088 5681704 +1608040 5688080 1608048 5687808 1601088 5681704 1600992 5681736 +1608040 5688080 1608048 5687808 1600992 5681736 1600928 5681744 +1608048 5687808 1601128 5681664 1601088 5681704 1600992 5681736 +1608048 5687808 1601592 5681216 1601128 5681664 1601088 5681704 +1608040 5688080 1610432 5683632 1608048 5687808 1600992 5681736 +1610432 5683632 1608048 5687808 1608040 5688080 1610080 5685800 +1610432 5683632 1601592 5681216 1608048 5687808 1610080 5685800 +1608048 5687808 1600992 5681736 1608040 5688080 1610080 5685800 +1608040 5688080 1610032 5685920 1610080 5685800 1608048 5687808 +1608040 5688080 1610032 5685992 1610032 5685920 1608048 5687808 +1608040 5688080 1610096 5686136 1610032 5685992 1608048 5687808 +1608040 5688080 1610272 5686400 1610096 5686136 1608048 5687808 +1608040 5688080 1610536 5688000 1610272 5686400 1608048 5687808 +1608040 5688080 1610368 5688304 1610536 5688000 1608048 5687808 +1608040 5688080 1610248 5688560 1610368 5688304 1608048 5687808 +1608040 5688080 1608200 5688584 1610248 5688560 1608048 5687808 +1610368 5688304 1610536 5688000 1608048 5687808 1610248 5688560 +1610536 5688000 1610560 5686784 1610272 5686400 1608048 5687808 +1610536 5688000 1610272 5686400 1608048 5687808 1610368 5688304 +1610272 5686400 1610096 5686136 1608048 5687808 1610536 5688000 +1610032 5685992 1610032 5685920 1608048 5687808 1610096 5686136 +1610096 5686136 1610032 5685992 1608048 5687808 1610272 5686400 +1608040 5688080 1610248 5688560 1608048 5687808 1600992 5681736 +1610080 5685800 1610432 5683632 1608048 5687808 1610032 5685920 +1610032 5685920 1610080 5685800 1608048 5687808 1610032 5685992 +1610432 5683632 1608048 5687808 1610080 5685800 1610536 5684592 +1608048 5687808 1608160 5687640 1610432 5683632 1601592 5681216 +1610432 5683632 1610432 5683584 1601592 5681216 1608160 5687640 +1608048 5687808 1608160 5687640 1601592 5681216 1601128 5681664 +1608048 5687808 1610080 5685800 1608160 5687640 1601128 5681664 +1601592 5681216 1601128 5681664 1608160 5687640 1610432 5683584 +1608160 5687640 1610080 5685800 1610432 5683632 1610432 5683584 +1601592 5681216 1601160 5681616 1601128 5681664 1608160 5687640 +1610432 5683584 1601624 5681136 1601592 5681216 1608160 5687640 +1608048 5687808 1608160 5687640 1601128 5681664 1601088 5681704 +1608160 5687640 1601592 5681216 1601128 5681664 1601088 5681704 +1608048 5687808 1610080 5685800 1608160 5687640 1601088 5681704 +1608048 5687808 1608160 5687640 1601088 5681704 1600992 5681736 +1610080 5685800 1608160 5687640 1608048 5687808 1610032 5685920 +1608160 5687640 1601088 5681704 1608048 5687808 1610032 5685920 +1610080 5685800 1610432 5683632 1608160 5687640 1610032 5685920 +1608048 5687808 1610032 5685992 1610032 5685920 1608160 5687640 +1608048 5687808 1610096 5686136 1610032 5685992 1608160 5687640 +1608048 5687808 1610096 5686136 1608160 5687640 1601088 5681704 +1608048 5687808 1610272 5686400 1610096 5686136 1608160 5687640 +1608048 5687808 1610536 5688000 1610272 5686400 1608160 5687640 +1610536 5688000 1610560 5686784 1610272 5686400 1608160 5687640 +1608048 5687808 1610368 5688304 1610536 5688000 1608160 5687640 +1608048 5687808 1610248 5688560 1610368 5688304 1608160 5687640 +1608048 5687808 1608040 5688080 1610248 5688560 1608160 5687640 +1608040 5688080 1608200 5688584 1610248 5688560 1608160 5687640 +1608040 5688080 1608072 5688280 1608200 5688584 1608160 5687640 +1608200 5688584 1610248 5688560 1608160 5687640 1608072 5688280 +1608040 5688080 1608072 5688280 1608160 5687640 1608048 5687808 +1610248 5688560 1610368 5688304 1608160 5687640 1608200 5688584 +1608200 5688584 1609120 5689368 1610248 5688560 1608160 5687640 +1610368 5688304 1610536 5688000 1608160 5687640 1610248 5688560 +1610536 5688000 1610560 5686784 1608160 5687640 1610368 5688304 +1610096 5686136 1610032 5685992 1608160 5687640 1610272 5686400 +1608048 5687808 1608040 5688080 1608160 5687640 1601088 5681704 +1610272 5686400 1610096 5686136 1608160 5687640 1610560 5686784 +1610536 5688000 1610807 5687274 1610560 5686784 1608160 5687640 +1610032 5685920 1610080 5685800 1608160 5687640 1610032 5685992 +1610032 5685992 1610032 5685920 1608160 5687640 1610096 5686136 +1610432 5683632 1608160 5687640 1610080 5685800 1610536 5684592 +1610096 5686136 1608216 5687592 1608160 5687640 1610272 5686400 +1608160 5687640 1610560 5686784 1610272 5686400 1608216 5687592 +1608160 5687640 1610536 5688000 1610560 5686784 1608216 5687592 +1608160 5687640 1610368 5688304 1610536 5688000 1608216 5687592 +1610536 5688000 1610560 5686784 1608216 5687592 1610368 5688304 +1608160 5687640 1610248 5688560 1610368 5688304 1608216 5687592 +1608160 5687640 1608200 5688584 1610248 5688560 1608216 5687592 +1608160 5687640 1608072 5688280 1608200 5688584 1608216 5687592 +1608160 5687640 1608040 5688080 1608072 5688280 1608216 5687592 +1608072 5688280 1608200 5688584 1608216 5687592 1608040 5688080 +1608160 5687640 1608048 5687808 1608040 5688080 1608216 5687592 +1608200 5688584 1610248 5688560 1608216 5687592 1608072 5688280 +1608200 5688584 1609120 5689368 1610248 5688560 1608216 5687592 +1610248 5688560 1610368 5688304 1608216 5687592 1608200 5688584 +1610368 5688304 1610536 5688000 1608216 5687592 1610248 5688560 +1610272 5686400 1610096 5686136 1608216 5687592 1610560 5686784 +1610560 5686784 1610272 5686400 1608216 5687592 1610536 5688000 +1610536 5688000 1610807 5687274 1610560 5686784 1608216 5687592 +1608216 5687592 1610032 5685992 1608160 5687640 1608040 5688080 +1610096 5686136 1610032 5685992 1608216 5687592 1610272 5686400 +1608160 5687640 1608216 5687592 1610032 5685992 1610032 5685920 +1608160 5687640 1608040 5688080 1608216 5687592 1610032 5685920 +1608216 5687592 1610096 5686136 1610032 5685992 1610032 5685920 +1608160 5687640 1608216 5687592 1610032 5685920 1610080 5685800 +1608160 5687640 1608040 5688080 1608216 5687592 1610080 5685800 +1608160 5687640 1608216 5687592 1610080 5685800 1610432 5683632 +1608160 5687640 1608216 5687592 1610432 5683632 1610432 5683584 +1608160 5687640 1608216 5687592 1610432 5683584 1601592 5681216 +1608160 5687640 1608216 5687592 1601592 5681216 1601128 5681664 +1608216 5687592 1610432 5683632 1610432 5683584 1601592 5681216 +1610432 5683584 1601624 5681136 1601592 5681216 1608216 5687592 +1608160 5687640 1608040 5688080 1608216 5687592 1601592 5681216 +1608216 5687592 1610080 5685800 1610432 5683632 1610432 5683584 +1608216 5687592 1610032 5685920 1610080 5685800 1610432 5683632 +1608216 5687592 1610032 5685992 1610032 5685920 1610080 5685800 +1610080 5685800 1610536 5684592 1610432 5683632 1608216 5687592 +1610536 5688000 1608496 5687544 1608216 5687592 1610368 5688304 +1610536 5688000 1610560 5686784 1608496 5687544 1610368 5688304 +1608216 5687592 1610248 5688560 1610368 5688304 1608496 5687544 +1610368 5688304 1610536 5688000 1608496 5687544 1610248 5688560 +1608216 5687592 1608200 5688584 1610248 5688560 1608496 5687544 +1608216 5687592 1608072 5688280 1608200 5688584 1608496 5687544 +1608216 5687592 1608040 5688080 1608072 5688280 1608496 5687544 +1608216 5687592 1608160 5687640 1608040 5688080 1608496 5687544 +1608040 5688080 1608072 5688280 1608496 5687544 1608160 5687640 +1608160 5687640 1608048 5687808 1608040 5688080 1608496 5687544 +1608160 5687640 1608048 5687808 1608496 5687544 1608216 5687592 +1608040 5688080 1608072 5688280 1608496 5687544 1608048 5687808 +1608072 5688280 1608200 5688584 1608496 5687544 1608040 5688080 +1608200 5688584 1609120 5689368 1610248 5688560 1608496 5687544 +1608200 5688584 1610248 5688560 1608496 5687544 1608072 5688280 +1610248 5688560 1610368 5688304 1608496 5687544 1608200 5688584 +1608216 5687592 1608496 5687544 1610560 5686784 1610272 5686400 +1608496 5687544 1610536 5688000 1610560 5686784 1610272 5686400 +1608216 5687592 1608496 5687544 1610272 5686400 1610096 5686136 +1608496 5687544 1610560 5686784 1610272 5686400 1610096 5686136 +1610560 5686784 1608496 5687544 1610536 5688000 1610807 5687274 +1608496 5687544 1610096 5686136 1608216 5687592 1608160 5687640 +1608216 5687592 1608496 5687544 1610096 5686136 1610032 5685992 +1608496 5687544 1610272 5686400 1610096 5686136 1610032 5685992 +1608216 5687592 1608496 5687544 1610032 5685992 1610032 5685920 +1608216 5687592 1608160 5687640 1608496 5687544 1610032 5685920 +1608496 5687544 1610096 5686136 1610032 5685992 1610032 5685920 +1608216 5687592 1608496 5687544 1610032 5685920 1610080 5685800 +1608496 5687544 1608592 5687544 1610560 5686784 1610272 5686400 +1608496 5687544 1610536 5688000 1608592 5687544 1610272 5686400 +1610536 5688000 1608592 5687544 1608496 5687544 1610368 5688304 +1608592 5687544 1610272 5686400 1608496 5687544 1610368 5688304 +1608592 5687544 1610536 5688000 1610560 5686784 1610272 5686400 +1608496 5687544 1610248 5688560 1610368 5688304 1608592 5687544 +1608496 5687544 1610248 5688560 1608592 5687544 1610272 5686400 +1610368 5688304 1610536 5688000 1608592 5687544 1610248 5688560 +1608496 5687544 1608200 5688584 1610248 5688560 1608592 5687544 +1608496 5687544 1608200 5688584 1608592 5687544 1610272 5686400 +1608200 5688584 1609120 5689368 1610248 5688560 1608592 5687544 +1609120 5689368 1610224 5688760 1610248 5688560 1608592 5687544 +1608200 5688584 1608224 5688712 1609120 5689368 1608592 5687544 +1610248 5688560 1610368 5688304 1608592 5687544 1609120 5689368 +1608496 5687544 1608072 5688280 1608200 5688584 1608592 5687544 +1608496 5687544 1608072 5688280 1608592 5687544 1610272 5686400 +1608496 5687544 1608040 5688080 1608072 5688280 1608592 5687544 +1608496 5687544 1608048 5687808 1608040 5688080 1608592 5687544 +1608496 5687544 1608040 5688080 1608592 5687544 1610272 5686400 +1608072 5688280 1608200 5688584 1608592 5687544 1608040 5688080 +1608200 5688584 1609120 5689368 1608592 5687544 1608072 5688280 +1608496 5687544 1608592 5687544 1610272 5686400 1610096 5686136 +1608592 5687544 1610560 5686784 1610272 5686400 1610096 5686136 +1608496 5687544 1608040 5688080 1608592 5687544 1610096 5686136 +1608496 5687544 1608592 5687544 1610096 5686136 1610032 5685992 +1608496 5687544 1608040 5688080 1608592 5687544 1610032 5685992 +1608592 5687544 1610272 5686400 1610096 5686136 1610032 5685992 +1610560 5686784 1608592 5687544 1610536 5688000 1610807 5687274 +1608496 5687544 1608592 5687544 1610032 5685992 1610032 5685920 +1610536 5688000 1610560 5686784 1608592 5687544 1610368 5688304 +1610368 5688304 1608856 5687656 1608592 5687544 1610248 5688560 +1608856 5687656 1610536 5688000 1608592 5687544 1610248 5688560 +1608592 5687544 1609120 5689368 1610248 5688560 1608856 5687656 +1610248 5688560 1610368 5688304 1608856 5687656 1609120 5689368 +1608592 5687544 1609120 5689368 1608856 5687656 1610536 5688000 +1608592 5687544 1608200 5688584 1609120 5689368 1608856 5687656 +1608592 5687544 1608200 5688584 1608856 5687656 1610536 5688000 +1609120 5689368 1610224 5688760 1610248 5688560 1608856 5687656 +1608200 5688584 1608224 5688712 1609120 5689368 1608856 5687656 +1608200 5688584 1608224 5688712 1608856 5687656 1608592 5687544 +1608224 5688712 1609040 5689376 1609120 5689368 1608856 5687656 +1609120 5689368 1610248 5688560 1608856 5687656 1608224 5688712 +1608592 5687544 1608072 5688280 1608200 5688584 1608856 5687656 +1608592 5687544 1608072 5688280 1608856 5687656 1610536 5688000 +1608200 5688584 1608224 5688712 1608856 5687656 1608072 5688280 +1608592 5687544 1608040 5688080 1608072 5688280 1608856 5687656 +1608592 5687544 1608040 5688080 1608856 5687656 1610536 5688000 +1608592 5687544 1608496 5687544 1608040 5688080 1608856 5687656 +1608496 5687544 1608048 5687808 1608040 5688080 1608856 5687656 +1608592 5687544 1608496 5687544 1608856 5687656 1610536 5688000 +1608040 5688080 1608072 5688280 1608856 5687656 1608496 5687544 +1608072 5688280 1608200 5688584 1608856 5687656 1608040 5688080 +1608592 5687544 1608856 5687656 1610536 5688000 1610560 5686784 +1608592 5687544 1608856 5687656 1610560 5686784 1610272 5686400 +1608592 5687544 1608856 5687656 1610272 5686400 1610096 5686136 +1608856 5687656 1610560 5686784 1610272 5686400 1610096 5686136 +1608592 5687544 1608496 5687544 1608856 5687656 1610096 5686136 +1608592 5687544 1608856 5687656 1610096 5686136 1610032 5685992 +1610536 5688000 1610807 5687274 1610560 5686784 1608856 5687656 +1608856 5687656 1610536 5688000 1610560 5686784 1610272 5686400 +1608856 5687656 1610368 5688304 1610536 5688000 1610560 5686784 +1610368 5688304 1610536 5688000 1608856 5687656 1610248 5688560 +1610560 5686784 1608960 5687656 1610536 5688000 1610807 5687274 +1608856 5687656 1608960 5687656 1610560 5686784 1610272 5686400 +1608856 5687656 1608960 5687656 1610272 5686400 1610096 5686136 +1608856 5687656 1608960 5687656 1610096 5686136 1608592 5687544 +1608960 5687656 1610272 5686400 1610096 5686136 1608592 5687544 +1610096 5686136 1610032 5685992 1608592 5687544 1608960 5687656 +1608960 5687656 1610560 5686784 1610272 5686400 1610096 5686136 +1610536 5688000 1608960 5687656 1608856 5687656 1610368 5688304 +1608856 5687656 1610368 5688304 1608960 5687656 1608592 5687544 +1608856 5687656 1610248 5688560 1610368 5688304 1608960 5687656 +1608856 5687656 1609120 5689368 1610248 5688560 1608960 5687656 +1609120 5689368 1610224 5688760 1610248 5688560 1608960 5687656 +1608856 5687656 1608224 5688712 1609120 5689368 1608960 5687656 +1609120 5689368 1610248 5688560 1608960 5687656 1608224 5688712 +1608224 5688712 1609040 5689376 1609120 5689368 1608960 5687656 +1608856 5687656 1608200 5688584 1608224 5688712 1608960 5687656 +1608856 5687656 1608072 5688280 1608200 5688584 1608960 5687656 +1608224 5688712 1609120 5689368 1608960 5687656 1608200 5688584 +1610368 5688304 1610536 5688000 1608960 5687656 1610248 5688560 +1608856 5687656 1608200 5688584 1608960 5687656 1608592 5687544 +1610248 5688560 1610368 5688304 1608960 5687656 1609120 5689368 +1608960 5687656 1610536 5688000 1610560 5686784 1610272 5686400 +1610536 5688000 1610560 5686784 1608960 5687656 1610368 5688304 +1609120 5689368 1608968 5687672 1608960 5687656 1608224 5688712 +1609120 5689368 1608968 5687672 1608224 5688712 1609040 5689376 +1610248 5688560 1608968 5687672 1609120 5689368 1610224 5688760 +1608960 5687656 1608200 5688584 1608224 5688712 1608968 5687672 +1608224 5688712 1609120 5689368 1608968 5687672 1608200 5688584 +1608960 5687656 1608856 5687656 1608200 5688584 1608968 5687672 +1608856 5687656 1608072 5688280 1608200 5688584 1608968 5687672 +1608200 5688584 1608224 5688712 1608968 5687672 1608856 5687656 +1608960 5687656 1608968 5687672 1610248 5688560 1610368 5688304 +1608960 5687656 1608968 5687672 1610368 5688304 1610536 5688000 +1608968 5687672 1610248 5688560 1610368 5688304 1610536 5688000 +1608968 5687672 1610536 5688000 1608960 5687656 1608856 5687656 +1608960 5687656 1608968 5687672 1610536 5688000 1610560 5686784 +1610536 5688000 1610807 5687274 1610560 5686784 1608968 5687672 +1608968 5687672 1610368 5688304 1610536 5688000 1610560 5686784 +1608960 5687656 1608968 5687672 1610560 5686784 1610272 5686400 +1608960 5687656 1608856 5687656 1608968 5687672 1610560 5686784 +1608968 5687672 1609120 5689368 1610248 5688560 1610368 5688304 +1609120 5689368 1610248 5688560 1608968 5687672 1608224 5688712 +1608960 5687656 1608992 5687624 1610096 5686136 1608592 5687544 +1608960 5687656 1608992 5687624 1608592 5687544 1608856 5687656 +1608992 5687624 1610096 5686136 1608592 5687544 1608856 5687656 +1608992 5687624 1610272 5686400 1610096 5686136 1608592 5687544 +1610096 5686136 1610032 5685992 1608592 5687544 1608992 5687624 +1608592 5687544 1608856 5687656 1608992 5687624 1610032 5685992 +1610096 5686136 1610032 5685992 1608992 5687624 1610272 5686400 +1610032 5685992 1608496 5687544 1608592 5687544 1608992 5687624 +1610272 5686400 1608992 5687624 1608960 5687656 1610560 5686784 +1610272 5686400 1610096 5686136 1608992 5687624 1610560 5686784 +1608960 5687656 1608968 5687672 1610560 5686784 1608992 5687624 +1610560 5686784 1610272 5686400 1608992 5687624 1608968 5687672 +1608968 5687672 1610536 5688000 1610560 5686784 1608992 5687624 +1610536 5688000 1610807 5687274 1610560 5686784 1608992 5687624 +1610560 5686784 1610272 5686400 1608992 5687624 1610536 5688000 +1608968 5687672 1610368 5688304 1610536 5688000 1608992 5687624 +1608968 5687672 1610248 5688560 1610368 5688304 1608992 5687624 +1608968 5687672 1610368 5688304 1608992 5687624 1608960 5687656 +1610536 5688000 1610560 5686784 1608992 5687624 1610368 5688304 +1608960 5687656 1608968 5687672 1608992 5687624 1608856 5687656 +1608992 5687624 1609048 5687576 1610272 5686400 1610096 5686136 +1608992 5687624 1609048 5687576 1610096 5686136 1610032 5685992 +1608992 5687624 1610560 5686784 1609048 5687576 1610032 5685992 +1609048 5687576 1610272 5686400 1610096 5686136 1610032 5685992 +1609048 5687576 1610560 5686784 1610272 5686400 1610096 5686136 +1608992 5687624 1609048 5687576 1610032 5685992 1608592 5687544 +1608992 5687624 1609048 5687576 1608592 5687544 1608856 5687656 +1608992 5687624 1609048 5687576 1608856 5687656 1608960 5687656 +1609048 5687576 1610096 5686136 1610032 5685992 1608592 5687544 +1608992 5687624 1610560 5686784 1609048 5687576 1608856 5687656 +1610032 5685992 1608496 5687544 1608592 5687544 1609048 5687576 +1609048 5687576 1610032 5685992 1608592 5687544 1608856 5687656 +1610560 5686784 1609048 5687576 1608992 5687624 1610536 5688000 +1609048 5687576 1608856 5687656 1608992 5687624 1610536 5688000 +1610560 5686784 1610272 5686400 1609048 5687576 1610536 5688000 +1610560 5686784 1609048 5687576 1610536 5688000 1610807 5687274 +1608992 5687624 1610368 5688304 1610536 5688000 1609048 5687576 +1608992 5687624 1610368 5688304 1609048 5687576 1608856 5687656 +1610536 5688000 1610560 5686784 1609048 5687576 1610368 5688304 +1608992 5687624 1608968 5687672 1610368 5688304 1609048 5687576 +1608992 5687624 1608968 5687672 1609048 5687576 1608856 5687656 +1608968 5687672 1610248 5688560 1610368 5688304 1609048 5687576 +1608968 5687672 1610248 5688560 1609048 5687576 1608992 5687624 +1610368 5688304 1610536 5688000 1609048 5687576 1610248 5688560 +1608968 5687672 1609120 5689368 1610248 5688560 1609048 5687576 +1610032 5685992 1609088 5687488 1609048 5687576 1610096 5686136 +1609048 5687576 1610272 5686400 1610096 5686136 1609088 5687488 +1610096 5686136 1610032 5685992 1609088 5687488 1610272 5686400 +1609048 5687576 1610560 5686784 1610272 5686400 1609088 5687488 +1610272 5686400 1610096 5686136 1609088 5687488 1610560 5686784 +1609088 5687488 1608592 5687544 1609048 5687576 1610560 5686784 +1608592 5687544 1609088 5687488 1610032 5685992 1608496 5687544 +1609048 5687576 1610536 5688000 1610560 5686784 1609088 5687488 +1610560 5686784 1610272 5686400 1609088 5687488 1610536 5688000 +1609048 5687576 1610536 5688000 1609088 5687488 1608592 5687544 +1610032 5685992 1608592 5687544 1609088 5687488 1610096 5686136 +1609048 5687576 1609088 5687488 1608592 5687544 1608856 5687656 +1609048 5687576 1609088 5687488 1608856 5687656 1608992 5687624 +1608856 5687656 1608960 5687656 1608992 5687624 1609088 5687488 +1609048 5687576 1610536 5688000 1609088 5687488 1608992 5687624 +1609088 5687488 1610032 5685992 1608592 5687544 1608856 5687656 +1609088 5687488 1608592 5687544 1608856 5687656 1608992 5687624 +1610536 5688000 1610807 5687274 1610560 5686784 1609088 5687488 +1609048 5687576 1610368 5688304 1610536 5688000 1609088 5687488 +1609048 5687576 1610368 5688304 1609088 5687488 1608992 5687624 +1610536 5688000 1610560 5686784 1609088 5687488 1610368 5688304 +1609048 5687576 1610248 5688560 1610368 5688304 1609088 5687488 +1608592 5687544 1609096 5687376 1610032 5685992 1608496 5687544 +1609096 5687376 1609088 5687488 1610032 5685992 1608496 5687544 +1609088 5687488 1609096 5687376 1608592 5687544 1608856 5687656 +1609088 5687488 1610032 5685992 1609096 5687376 1608856 5687656 +1610032 5685992 1609096 5687376 1609088 5687488 1610096 5686136 +1610032 5685992 1608496 5687544 1609096 5687376 1610096 5686136 +1609088 5687488 1610272 5686400 1610096 5686136 1609096 5687376 +1609088 5687488 1610560 5686784 1610272 5686400 1609096 5687376 +1610272 5686400 1610096 5686136 1609096 5687376 1610560 5686784 +1609088 5687488 1610536 5688000 1610560 5686784 1609096 5687376 +1610560 5686784 1610272 5686400 1609096 5687376 1610536 5688000 +1609088 5687488 1610368 5688304 1610536 5688000 1609096 5687376 +1609096 5687376 1608856 5687656 1609088 5687488 1610536 5688000 +1610096 5686136 1610032 5685992 1609096 5687376 1610272 5686400 +1608592 5687544 1608856 5687656 1609096 5687376 1608496 5687544 +1609088 5687488 1609096 5687376 1608856 5687656 1608992 5687624 +1610536 5688000 1610807 5687274 1610560 5686784 1609096 5687376 +1610032 5685992 1610032 5685920 1608496 5687544 1609096 5687376 +1610032 5685992 1610032 5685920 1609096 5687376 1610096 5686136 +1608496 5687544 1608592 5687544 1609096 5687376 1610032 5685920 +1610032 5685920 1608216 5687592 1608496 5687544 1609096 5687376 +1609096 5687376 1609072 5687288 1608496 5687544 1608592 5687544 +1609096 5687376 1610032 5685920 1609072 5687288 1608592 5687544 +1609072 5687288 1610032 5685920 1608496 5687544 1608592 5687544 +1609096 5687376 1609072 5687288 1608592 5687544 1608856 5687656 +1609096 5687376 1610032 5685920 1609072 5687288 1608856 5687656 +1609072 5687288 1608496 5687544 1608592 5687544 1608856 5687656 +1609096 5687376 1609072 5687288 1608856 5687656 1609088 5687488 +1608496 5687544 1609072 5687288 1610032 5685920 1608216 5687592 +1608496 5687544 1608592 5687544 1609072 5687288 1608216 5687592 +1609072 5687288 1609096 5687376 1610032 5685920 1608216 5687592 +1610032 5685920 1609072 5687288 1609096 5687376 1610032 5685992 +1609072 5687288 1608856 5687656 1609096 5687376 1610032 5685992 +1609096 5687376 1610096 5686136 1610032 5685992 1609072 5687288 +1609096 5687376 1610096 5686136 1609072 5687288 1608856 5687656 +1610032 5685920 1608216 5687592 1609072 5687288 1610032 5685992 +1609096 5687376 1610272 5686400 1610096 5686136 1609072 5687288 +1609096 5687376 1610272 5686400 1609072 5687288 1608856 5687656 +1610096 5686136 1610032 5685992 1609072 5687288 1610272 5686400 +1609096 5687376 1610560 5686784 1610272 5686400 1609072 5687288 +1609096 5687376 1610560 5686784 1609072 5687288 1608856 5687656 +1609096 5687376 1610536 5688000 1610560 5686784 1609072 5687288 +1610272 5686400 1610096 5686136 1609072 5687288 1610560 5686784 +1610032 5685992 1610032 5685920 1609072 5687288 1610096 5686136 +1610032 5685920 1610080 5685800 1608216 5687592 1609072 5687288 +1610032 5685920 1609016 5687224 1609072 5687288 1610032 5685992 +1609016 5687224 1608216 5687592 1609072 5687288 1610032 5685992 +1610032 5685920 1608216 5687592 1609016 5687224 1610032 5685992 +1609072 5687288 1609016 5687224 1608216 5687592 1608496 5687544 +1609072 5687288 1609016 5687224 1608496 5687544 1608592 5687544 +1609072 5687288 1610032 5685992 1609016 5687224 1608592 5687544 +1609072 5687288 1609016 5687224 1608592 5687544 1608856 5687656 +1609016 5687224 1608496 5687544 1608592 5687544 1608856 5687656 +1609072 5687288 1610032 5685992 1609016 5687224 1608856 5687656 +1609072 5687288 1609016 5687224 1608856 5687656 1609096 5687376 +1609072 5687288 1610032 5685992 1609016 5687224 1609096 5687376 +1609016 5687224 1608592 5687544 1608856 5687656 1609096 5687376 +1608856 5687656 1609088 5687488 1609096 5687376 1609016 5687224 +1609016 5687224 1610032 5685920 1608216 5687592 1608496 5687544 +1609016 5687224 1608216 5687592 1608496 5687544 1608592 5687544 +1609072 5687288 1610096 5686136 1610032 5685992 1609016 5687224 +1609072 5687288 1610272 5686400 1610096 5686136 1609016 5687224 +1609072 5687288 1610272 5686400 1609016 5687224 1609096 5687376 +1610032 5685992 1610032 5685920 1609016 5687224 1610096 5686136 +1609072 5687288 1610560 5686784 1610272 5686400 1609016 5687224 +1610096 5686136 1610032 5685992 1609016 5687224 1610272 5686400 +1608216 5687592 1609016 5687224 1610032 5685920 1610080 5685800 +1609016 5687224 1609000 5687192 1608216 5687592 1608496 5687544 +1609016 5687224 1610032 5685920 1609000 5687192 1608496 5687544 +1610032 5685920 1609000 5687192 1609016 5687224 1610032 5685992 +1609016 5687224 1610096 5686136 1610032 5685992 1609000 5687192 +1610032 5685920 1608216 5687592 1609000 5687192 1610032 5685992 +1609000 5687192 1608496 5687544 1609016 5687224 1610096 5686136 +1610032 5685992 1610032 5685920 1609000 5687192 1610096 5686136 +1609000 5687192 1610032 5685920 1608216 5687592 1608496 5687544 +1609016 5687224 1609000 5687192 1608496 5687544 1608592 5687544 +1609016 5687224 1609000 5687192 1608592 5687544 1608856 5687656 +1609000 5687192 1608216 5687592 1608496 5687544 1608592 5687544 +1609016 5687224 1610096 5686136 1609000 5687192 1608592 5687544 +1609016 5687224 1610272 5686400 1610096 5686136 1609000 5687192 +1609016 5687224 1609072 5687288 1610272 5686400 1609000 5687192 +1610096 5686136 1610032 5685992 1609000 5687192 1610272 5686400 +1609072 5687288 1610560 5686784 1610272 5686400 1609000 5687192 +1609016 5687224 1609072 5687288 1609000 5687192 1608592 5687544 +1610272 5686400 1610096 5686136 1609000 5687192 1609072 5687288 +1608216 5687592 1609000 5687192 1610032 5685920 1610080 5685800 +1609000 5687192 1610032 5685992 1610032 5685920 1610080 5685800 +1608216 5687592 1608496 5687544 1609000 5687192 1610080 5685800 +1608216 5687592 1609000 5687192 1610080 5685800 1610432 5683632 +1608216 5687592 1608704 5686888 1610432 5683632 1610432 5683584 +1608216 5687592 1608704 5686888 1610432 5683584 1601592 5681216 +1608216 5687592 1608704 5686888 1601592 5681216 1608160 5687640 +1601592 5681216 1601128 5681664 1608160 5687640 1608704 5686888 +1608704 5686888 1610432 5683584 1601592 5681216 1608160 5687640 +1608704 5686888 1610080 5685800 1610432 5683632 1610432 5683584 +1610432 5683584 1601624 5681136 1601592 5681216 1608704 5686888 +1608216 5687592 1610080 5685800 1608704 5686888 1608160 5687640 +1608704 5686888 1610432 5683632 1610432 5683584 1601592 5681216 +1610080 5685800 1608704 5686888 1608216 5687592 1609000 5687192 +1610080 5685800 1610432 5683632 1608704 5686888 1609000 5687192 +1608216 5687592 1608496 5687544 1609000 5687192 1608704 5686888 +1608496 5687544 1608592 5687544 1609000 5687192 1608704 5686888 +1608496 5687544 1608592 5687544 1608704 5686888 1608216 5687592 +1608704 5686888 1608160 5687640 1608216 5687592 1608496 5687544 +1608592 5687544 1609016 5687224 1609000 5687192 1608704 5686888 +1609000 5687192 1610080 5685800 1608704 5686888 1608592 5687544 +1610080 5685800 1608704 5686888 1609000 5687192 1610032 5685920 +1609000 5687192 1610032 5685992 1610032 5685920 1608704 5686888 +1610080 5685800 1610432 5683632 1608704 5686888 1610032 5685920 +1609000 5687192 1610096 5686136 1610032 5685992 1608704 5686888 +1609000 5687192 1610272 5686400 1610096 5686136 1608704 5686888 +1610032 5685992 1610032 5685920 1608704 5686888 1610096 5686136 +1608704 5686888 1608592 5687544 1609000 5687192 1610096 5686136 +1610032 5685920 1610080 5685800 1608704 5686888 1610032 5685992 +1610432 5683632 1608704 5686888 1610080 5685800 1610536 5684592 +1608704 5686888 1608448 5686648 1601592 5681216 1608160 5687640 +1608704 5686888 1608448 5686648 1608160 5687640 1608216 5687592 +1601592 5681216 1601128 5681664 1608160 5687640 1608448 5686648 +1601128 5681664 1601088 5681704 1608160 5687640 1608448 5686648 +1601128 5681664 1601088 5681704 1608448 5686648 1601592 5681216 +1608448 5686648 1601088 5681704 1608160 5687640 1608216 5687592 +1608704 5686888 1610432 5683584 1608448 5686648 1608216 5687592 +1608448 5686648 1610432 5683584 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1608448 5686648 +1601592 5681216 1608448 5686648 1610432 5683584 1601624 5681136 +1608448 5686648 1608704 5686888 1610432 5683584 1601624 5681136 +1610432 5683584 1601592 5681064 1601624 5681136 1608448 5686648 +1601592 5681216 1601128 5681664 1608448 5686648 1601624 5681136 +1601088 5681704 1608048 5687808 1608160 5687640 1608448 5686648 +1601088 5681704 1608048 5687808 1608448 5686648 1601128 5681664 +1608160 5687640 1608216 5687592 1608448 5686648 1608048 5687808 +1601088 5681704 1600992 5681736 1608048 5687808 1608448 5686648 +1608704 5686888 1608448 5686648 1608216 5687592 1608496 5687544 +1610432 5683584 1608448 5686648 1608704 5686888 1610432 5683632 +1610432 5683584 1601624 5681136 1608448 5686648 1610432 5683632 +1608704 5686888 1610080 5685800 1610432 5683632 1608448 5686648 +1608448 5686648 1608216 5687592 1608704 5686888 1610080 5685800 +1608704 5686888 1610032 5685920 1610080 5685800 1608448 5686648 +1610080 5685800 1610432 5683632 1608448 5686648 1610032 5685920 +1608704 5686888 1610032 5685920 1608448 5686648 1608216 5687592 +1610432 5683632 1610432 5683584 1608448 5686648 1610080 5685800 +1608704 5686888 1610032 5685992 1610032 5685920 1608448 5686648 +1608704 5686888 1610096 5686136 1610032 5685992 1608448 5686648 +1608704 5686888 1610032 5685992 1608448 5686648 1608216 5687592 +1610032 5685920 1610080 5685800 1608448 5686648 1610032 5685992 +1610080 5685800 1610536 5684592 1610432 5683632 1608448 5686648 +1610080 5685800 1610536 5684592 1608448 5686648 1610032 5685920 +1610536 5684592 1610496 5683784 1610432 5683632 1608448 5686648 +1610432 5683632 1610432 5683584 1608448 5686648 1610536 5684592 +1610080 5685800 1610168 5685696 1610536 5684592 1608448 5686648 +1610432 5683584 1608336 5686512 1608448 5686648 1610432 5683632 +1608336 5686512 1601624 5681136 1608448 5686648 1610432 5683632 +1610432 5683584 1601624 5681136 1608336 5686512 1610432 5683632 +1601624 5681136 1608336 5686512 1610432 5683584 1601592 5681064 +1608448 5686648 1608336 5686512 1601624 5681136 1601592 5681216 +1608448 5686648 1610432 5683632 1608336 5686512 1601592 5681216 +1608336 5686512 1610432 5683584 1601624 5681136 1601592 5681216 +1608448 5686648 1608336 5686512 1601592 5681216 1601128 5681664 +1608448 5686648 1610432 5683632 1608336 5686512 1601128 5681664 +1608448 5686648 1608336 5686512 1601128 5681664 1601088 5681704 +1608448 5686648 1610432 5683632 1608336 5686512 1601088 5681704 +1608448 5686648 1608336 5686512 1601088 5681704 1608048 5687808 +1608448 5686648 1610432 5683632 1608336 5686512 1608048 5687808 +1608336 5686512 1601128 5681664 1601088 5681704 1608048 5687808 +1608336 5686512 1601592 5681216 1601128 5681664 1601088 5681704 +1601592 5681216 1601160 5681616 1601128 5681664 1608336 5686512 +1608336 5686512 1601624 5681136 1601592 5681216 1601128 5681664 +1601088 5681704 1600992 5681736 1608048 5687808 1608336 5686512 +1608448 5686648 1608336 5686512 1608048 5687808 1608160 5687640 +1608448 5686648 1610432 5683632 1608336 5686512 1608160 5687640 +1608336 5686512 1601088 5681704 1608048 5687808 1608160 5687640 +1608448 5686648 1608336 5686512 1608160 5687640 1608216 5687592 +1608448 5686648 1610432 5683632 1608336 5686512 1608216 5687592 +1608448 5686648 1608336 5686512 1608216 5687592 1608704 5686888 +1608336 5686512 1608048 5687808 1608160 5687640 1608216 5687592 +1608448 5686648 1610536 5684592 1610432 5683632 1608336 5686512 +1608448 5686648 1610536 5684592 1608336 5686512 1608216 5687592 +1610432 5683632 1610432 5683584 1608336 5686512 1610536 5684592 +1610536 5684592 1610496 5683784 1610432 5683632 1608336 5686512 +1608448 5686648 1610080 5685800 1610536 5684592 1608336 5686512 +1608448 5686648 1610080 5685800 1608336 5686512 1608216 5687592 +1608448 5686648 1610032 5685920 1610080 5685800 1608336 5686512 +1608448 5686648 1610032 5685920 1608336 5686512 1608216 5687592 +1608448 5686648 1610032 5685992 1610032 5685920 1608336 5686512 +1608448 5686648 1610032 5685992 1608336 5686512 1608216 5687592 +1610032 5685920 1610080 5685800 1608336 5686512 1610032 5685992 +1610536 5684592 1610432 5683632 1608336 5686512 1610080 5685800 +1608448 5686648 1608704 5686888 1610032 5685992 1608336 5686512 +1610080 5685800 1610168 5685696 1610536 5684592 1608336 5686512 +1610080 5685800 1610536 5684592 1608336 5686512 1610032 5685920 +1608336 5686512 1608296 5686424 1601624 5681136 1601592 5681216 +1608336 5686512 1610432 5683584 1608296 5686424 1601592 5681216 +1610432 5683584 1608296 5686424 1608336 5686512 1610432 5683632 +1608336 5686512 1610536 5684592 1610432 5683632 1608296 5686424 +1608296 5686424 1601592 5681216 1608336 5686512 1610536 5684592 +1610432 5683632 1610432 5683584 1608296 5686424 1610536 5684592 +1601624 5681136 1608296 5686424 1610432 5683584 1601592 5681064 +1608336 5686512 1608296 5686424 1601592 5681216 1601128 5681664 +1608296 5686424 1601624 5681136 1601592 5681216 1601128 5681664 +1608336 5686512 1610536 5684592 1608296 5686424 1601128 5681664 +1608336 5686512 1608296 5686424 1601128 5681664 1601088 5681704 +1608336 5686512 1610536 5684592 1608296 5686424 1601088 5681704 +1608336 5686512 1608296 5686424 1601088 5681704 1608048 5687808 +1608336 5686512 1610536 5684592 1608296 5686424 1608048 5687808 +1608336 5686512 1608296 5686424 1608048 5687808 1608160 5687640 +1608336 5686512 1610536 5684592 1608296 5686424 1608160 5687640 +1608296 5686424 1601088 5681704 1608048 5687808 1608160 5687640 +1608296 5686424 1601128 5681664 1601088 5681704 1608048 5687808 +1601592 5681216 1601160 5681616 1601128 5681664 1608296 5686424 +1608296 5686424 1601592 5681216 1601128 5681664 1601088 5681704 +1601088 5681704 1600992 5681736 1608048 5687808 1608296 5686424 +1608336 5686512 1608296 5686424 1608160 5687640 1608216 5687592 +1608296 5686424 1610432 5683584 1601624 5681136 1601592 5681216 +1610432 5683584 1601624 5681136 1608296 5686424 1610432 5683632 +1610536 5684592 1610496 5683784 1610432 5683632 1608296 5686424 +1608336 5686512 1610080 5685800 1610536 5684592 1608296 5686424 +1610536 5684592 1610432 5683632 1608296 5686424 1610080 5685800 +1608336 5686512 1610080 5685800 1608296 5686424 1608160 5687640 +1610080 5685800 1610168 5685696 1610536 5684592 1608296 5686424 +1608336 5686512 1610032 5685920 1610080 5685800 1608296 5686424 +1608336 5686512 1610032 5685920 1608296 5686424 1608160 5687640 +1608336 5686512 1610032 5685992 1610032 5685920 1608296 5686424 +1608336 5686512 1610032 5685992 1608296 5686424 1608160 5687640 +1608336 5686512 1608448 5686648 1610032 5685992 1608296 5686424 +1608336 5686512 1608448 5686648 1608296 5686424 1608160 5687640 +1610032 5685992 1610032 5685920 1608296 5686424 1608448 5686648 +1610080 5685800 1610536 5684592 1608296 5686424 1610032 5685920 +1608448 5686648 1608704 5686888 1610032 5685992 1608296 5686424 +1610032 5685920 1610080 5685800 1608296 5686424 1610032 5685992 +1601624 5681136 1608280 5686200 1610432 5683584 1601592 5681064 +1608296 5686424 1608280 5686200 1601624 5681136 1601592 5681216 +1608296 5686424 1608280 5686200 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1608280 5686200 +1608296 5686424 1608280 5686200 1601128 5681664 1601088 5681704 +1608280 5686200 1601592 5681216 1601128 5681664 1601088 5681704 +1608296 5686424 1608280 5686200 1601088 5681704 1608048 5687808 +1608296 5686424 1608280 5686200 1608048 5687808 1608160 5687640 +1608280 5686200 1601128 5681664 1601088 5681704 1608048 5687808 +1601088 5681704 1600992 5681736 1608048 5687808 1608280 5686200 +1608280 5686200 1601624 5681136 1601592 5681216 1601128 5681664 +1608296 5686424 1610432 5683584 1608280 5686200 1608048 5687808 +1610432 5683584 1608280 5686200 1608296 5686424 1610432 5683632 +1608296 5686424 1610536 5684592 1610432 5683632 1608280 5686200 +1608296 5686424 1610080 5685800 1610536 5684592 1608280 5686200 +1610536 5684592 1610432 5683632 1608280 5686200 1610080 5685800 +1610432 5683584 1601624 5681136 1608280 5686200 1610432 5683632 +1608280 5686200 1608048 5687808 1608296 5686424 1610080 5685800 +1610432 5683632 1610432 5683584 1608280 5686200 1610536 5684592 +1608280 5686200 1610432 5683584 1601624 5681136 1601592 5681216 +1610536 5684592 1610496 5683784 1610432 5683632 1608280 5686200 +1608296 5686424 1610032 5685920 1610080 5685800 1608280 5686200 +1610080 5685800 1610536 5684592 1608280 5686200 1610032 5685920 +1608296 5686424 1610032 5685920 1608280 5686200 1608048 5687808 +1610080 5685800 1610168 5685696 1610536 5684592 1608280 5686200 +1610080 5685800 1610168 5685696 1608280 5686200 1610032 5685920 +1610536 5684592 1610432 5683632 1608280 5686200 1610168 5685696 +1610168 5685696 1610200 5685672 1610536 5684592 1608280 5686200 +1608296 5686424 1610032 5685992 1610032 5685920 1608280 5686200 +1608296 5686424 1608448 5686648 1610032 5685992 1608280 5686200 +1608296 5686424 1608336 5686512 1608448 5686648 1608280 5686200 +1608448 5686648 1610032 5685992 1608280 5686200 1608336 5686512 +1608296 5686424 1608336 5686512 1608280 5686200 1608048 5687808 +1610032 5685920 1610080 5685800 1608280 5686200 1610032 5685992 +1608448 5686648 1608704 5686888 1610032 5685992 1608280 5686200 +1610032 5685992 1610032 5685920 1608280 5686200 1608448 5686648 +1601624 5681136 1608304 5686080 1610432 5683584 1601592 5681064 +1610432 5683584 1608304 5686080 1608280 5686200 1610432 5683632 +1610432 5683584 1601624 5681136 1608304 5686080 1610432 5683632 +1608280 5686200 1610536 5684592 1610432 5683632 1608304 5686080 +1608280 5686200 1610168 5685696 1610536 5684592 1608304 5686080 +1610432 5683632 1610432 5683584 1608304 5686080 1610536 5684592 +1610168 5685696 1610200 5685672 1610536 5684592 1608304 5686080 +1610536 5684592 1610432 5683632 1608304 5686080 1610168 5685696 +1608280 5686200 1608304 5686080 1601624 5681136 1601592 5681216 +1608304 5686080 1610432 5683584 1601624 5681136 1601592 5681216 +1608280 5686200 1608304 5686080 1601592 5681216 1601128 5681664 +1608280 5686200 1608304 5686080 1601128 5681664 1601088 5681704 +1601592 5681216 1601160 5681616 1601128 5681664 1608304 5686080 +1608280 5686200 1608304 5686080 1601088 5681704 1608048 5687808 +1608304 5686080 1601592 5681216 1601128 5681664 1601088 5681704 +1608304 5686080 1601624 5681136 1601592 5681216 1601128 5681664 +1608304 5686080 1601088 5681704 1608280 5686200 1610168 5685696 +1610536 5684592 1610496 5683784 1610432 5683632 1608304 5686080 +1608280 5686200 1610080 5685800 1610168 5685696 1608304 5686080 +1608280 5686200 1610032 5685920 1610080 5685800 1608304 5686080 +1610168 5685696 1610536 5684592 1608304 5686080 1610080 5685800 +1608280 5686200 1610032 5685920 1608304 5686080 1601088 5681704 +1608280 5686200 1610032 5685992 1610032 5685920 1608304 5686080 +1610032 5685920 1610080 5685800 1608304 5686080 1610032 5685992 +1608280 5686200 1610032 5685992 1608304 5686080 1601088 5681704 +1610080 5685800 1610168 5685696 1608304 5686080 1610032 5685920 +1608280 5686200 1608448 5686648 1610032 5685992 1608304 5686080 +1608280 5686200 1608336 5686512 1608448 5686648 1608304 5686080 +1608280 5686200 1608448 5686648 1608304 5686080 1601088 5681704 +1610032 5685992 1610032 5685920 1608304 5686080 1608448 5686648 +1608448 5686648 1608704 5686888 1610032 5685992 1608304 5686080 +1608704 5686888 1610096 5686136 1610032 5685992 1608304 5686080 +1610032 5685992 1610032 5685920 1608304 5686080 1608704 5686888 +1608448 5686648 1608704 5686888 1608304 5686080 1608280 5686200 +1610168 5685696 1608344 5686056 1608304 5686080 1610080 5685800 +1608344 5686056 1610536 5684592 1608304 5686080 1610080 5685800 +1610536 5684592 1608344 5686056 1610168 5685696 1610200 5685672 +1608304 5686080 1608344 5686056 1610536 5684592 1610432 5683632 +1608304 5686080 1608344 5686056 1610432 5683632 1610432 5683584 +1608304 5686080 1610080 5685800 1608344 5686056 1610432 5683584 +1608304 5686080 1608344 5686056 1610432 5683584 1601624 5681136 +1610432 5683584 1601592 5681064 1601624 5681136 1608344 5686056 +1608344 5686056 1610432 5683632 1610432 5683584 1601624 5681136 +1608304 5686080 1608344 5686056 1601624 5681136 1601592 5681216 +1608304 5686080 1610080 5685800 1608344 5686056 1601624 5681136 +1608344 5686056 1610168 5685696 1610536 5684592 1610432 5683632 +1608344 5686056 1610536 5684592 1610432 5683632 1610432 5683584 +1610168 5685696 1610536 5684592 1608344 5686056 1610080 5685800 +1610536 5684592 1610496 5683784 1610432 5683632 1608344 5686056 +1608304 5686080 1610032 5685920 1610080 5685800 1608344 5686056 +1608304 5686080 1610032 5685992 1610032 5685920 1608344 5686056 +1610080 5685800 1610168 5685696 1608344 5686056 1610032 5685920 +1608304 5686080 1610032 5685992 1608344 5686056 1601624 5681136 +1608304 5686080 1608704 5686888 1610032 5685992 1608344 5686056 +1610032 5685992 1610032 5685920 1608344 5686056 1608704 5686888 +1608304 5686080 1608704 5686888 1608344 5686056 1601624 5681136 +1608704 5686888 1610096 5686136 1610032 5685992 1608344 5686056 +1608304 5686080 1608448 5686648 1608704 5686888 1608344 5686056 +1608304 5686080 1608448 5686648 1608344 5686056 1601624 5681136 +1608704 5686888 1610032 5685992 1608344 5686056 1608448 5686648 +1610032 5685920 1610080 5685800 1608344 5686056 1610032 5685992 +1608304 5686080 1608280 5686200 1608448 5686648 1608344 5686056 +1608304 5686080 1608280 5686200 1608344 5686056 1601624 5681136 +1608280 5686200 1608336 5686512 1608448 5686648 1608344 5686056 +1608280 5686200 1608296 5686424 1608336 5686512 1608344 5686056 +1608336 5686512 1608448 5686648 1608344 5686056 1608296 5686424 +1608448 5686648 1608704 5686888 1608344 5686056 1608336 5686512 +1608280 5686200 1608296 5686424 1608344 5686056 1608304 5686080 +1610536 5684592 1608392 5686016 1608344 5686056 1610168 5685696 +1610536 5684592 1608392 5686016 1610168 5685696 1610200 5685672 +1608344 5686056 1608392 5686016 1610432 5683632 1610432 5683584 +1608344 5686056 1608392 5686016 1610432 5683584 1601624 5681136 +1610432 5683584 1601592 5681064 1601624 5681136 1608392 5686016 +1608344 5686056 1608392 5686016 1601624 5681136 1608304 5686080 +1608392 5686016 1610432 5683584 1601624 5681136 1608304 5686080 +1601624 5681136 1601592 5681216 1608304 5686080 1608392 5686016 +1608392 5686016 1610432 5683632 1610432 5683584 1601624 5681136 +1608392 5686016 1608304 5686080 1608344 5686056 1610168 5685696 +1608344 5686056 1610080 5685800 1610168 5685696 1608392 5686016 +1608344 5686056 1610032 5685920 1610080 5685800 1608392 5686016 +1610168 5685696 1610536 5684592 1608392 5686016 1610080 5685800 +1608344 5686056 1610032 5685920 1608392 5686016 1608304 5686080 +1610080 5685800 1610168 5685696 1608392 5686016 1610032 5685920 +1608392 5686016 1610536 5684592 1610432 5683632 1610432 5683584 +1610536 5684592 1610432 5683632 1608392 5686016 1610168 5685696 +1610432 5683632 1608392 5686016 1610536 5684592 1610496 5683784 +1608344 5686056 1610032 5685992 1610032 5685920 1608392 5686016 +1608344 5686056 1608704 5686888 1610032 5685992 1608392 5686016 +1610032 5685920 1610080 5685800 1608392 5686016 1610032 5685992 +1608704 5686888 1610096 5686136 1610032 5685992 1608392 5686016 +1608344 5686056 1608704 5686888 1608392 5686016 1608304 5686080 +1608344 5686056 1608448 5686648 1608704 5686888 1608392 5686016 +1608704 5686888 1610032 5685992 1608392 5686016 1608448 5686648 +1608344 5686056 1608448 5686648 1608392 5686016 1608304 5686080 +1608344 5686056 1608336 5686512 1608448 5686648 1608392 5686016 +1608344 5686056 1608296 5686424 1608336 5686512 1608392 5686016 +1608344 5686056 1608280 5686200 1608296 5686424 1608392 5686016 +1608296 5686424 1608336 5686512 1608392 5686016 1608280 5686200 +1608344 5686056 1608280 5686200 1608392 5686016 1608304 5686080 +1608448 5686648 1608704 5686888 1608392 5686016 1608336 5686512 +1608336 5686512 1608448 5686648 1608392 5686016 1608296 5686424 +1610032 5685992 1610032 5685920 1608392 5686016 1608704 5686888 +1608344 5686056 1608304 5686080 1608280 5686200 1608392 5686016 +1610168 5685696 1608504 5685952 1608392 5686016 1610080 5685800 +1610168 5685696 1610536 5684592 1608504 5685952 1610080 5685800 +1610536 5684592 1608504 5685952 1610168 5685696 1610200 5685672 +1608392 5686016 1610032 5685920 1610080 5685800 1608504 5685952 +1608392 5686016 1610032 5685992 1610032 5685920 1608504 5685952 +1610080 5685800 1610168 5685696 1608504 5685952 1610032 5685920 +1610032 5685920 1610080 5685800 1608504 5685952 1610032 5685992 +1608504 5685952 1610536 5684592 1608392 5686016 1610032 5685992 +1608392 5686016 1608504 5685952 1610536 5684592 1610432 5683632 +1608504 5685952 1610168 5685696 1610536 5684592 1610432 5683632 +1608392 5686016 1608504 5685952 1610432 5683632 1610432 5683584 +1608392 5686016 1608504 5685952 1610432 5683584 1601624 5681136 +1608392 5686016 1610032 5685992 1608504 5685952 1610432 5683584 +1608504 5685952 1610536 5684592 1610432 5683632 1610432 5683584 +1610536 5684592 1610496 5683784 1610432 5683632 1608504 5685952 +1608392 5686016 1608704 5686888 1610032 5685992 1608504 5685952 +1608392 5686016 1608448 5686648 1608704 5686888 1608504 5685952 +1610032 5685992 1610032 5685920 1608504 5685952 1608704 5686888 +1608704 5686888 1610096 5686136 1610032 5685992 1608504 5685952 +1608392 5686016 1608448 5686648 1608504 5685952 1610432 5683584 +1608392 5686016 1608336 5686512 1608448 5686648 1608504 5685952 +1608448 5686648 1608704 5686888 1608504 5685952 1608336 5686512 +1608392 5686016 1608336 5686512 1608504 5685952 1610432 5683584 +1608392 5686016 1608296 5686424 1608336 5686512 1608504 5685952 +1608392 5686016 1608280 5686200 1608296 5686424 1608504 5685952 +1608392 5686016 1608344 5686056 1608280 5686200 1608504 5685952 +1608392 5686016 1608280 5686200 1608504 5685952 1610432 5683584 +1608336 5686512 1608448 5686648 1608504 5685952 1608296 5686424 +1608296 5686424 1608336 5686512 1608504 5685952 1608280 5686200 +1608704 5686888 1610032 5685992 1608504 5685952 1608448 5686648 +1608504 5685952 1608648 5685912 1610536 5684592 1610432 5683632 +1608504 5685952 1610168 5685696 1608648 5685912 1610432 5683632 +1610168 5685696 1608648 5685912 1608504 5685952 1610080 5685800 +1608504 5685952 1610032 5685920 1610080 5685800 1608648 5685912 +1610168 5685696 1610536 5684592 1608648 5685912 1610080 5685800 +1608648 5685912 1610432 5683632 1608504 5685952 1610032 5685920 +1610080 5685800 1610168 5685696 1608648 5685912 1610032 5685920 +1608648 5685912 1610168 5685696 1610536 5684592 1610432 5683632 +1610536 5684592 1608648 5685912 1610168 5685696 1610200 5685672 +1608504 5685952 1610032 5685992 1610032 5685920 1608648 5685912 +1608504 5685952 1608704 5686888 1610032 5685992 1608648 5685912 +1610032 5685920 1610080 5685800 1608648 5685912 1610032 5685992 +1608504 5685952 1608704 5686888 1608648 5685912 1610432 5683632 +1608704 5686888 1610096 5686136 1610032 5685992 1608648 5685912 +1610032 5685992 1610032 5685920 1608648 5685912 1608704 5686888 +1608504 5685952 1608648 5685912 1610432 5683632 1610432 5683584 +1608648 5685912 1610536 5684592 1610432 5683632 1610432 5683584 +1608504 5685952 1608704 5686888 1608648 5685912 1610432 5683584 +1608504 5685952 1608648 5685912 1610432 5683584 1608392 5686016 +1610536 5684592 1610496 5683784 1610432 5683632 1608648 5685912 +1608504 5685952 1608448 5686648 1608704 5686888 1608648 5685912 +1608504 5685952 1608336 5686512 1608448 5686648 1608648 5685912 +1608704 5686888 1610032 5685992 1608648 5685912 1608448 5686648 +1608504 5685952 1608336 5686512 1608648 5685912 1610432 5683584 +1608504 5685952 1608296 5686424 1608336 5686512 1608648 5685912 +1608448 5686648 1608704 5686888 1608648 5685912 1608336 5686512 +1610168 5685696 1608712 5685880 1608648 5685912 1610080 5685800 +1610168 5685696 1610536 5684592 1608712 5685880 1610080 5685800 +1608648 5685912 1610032 5685920 1610080 5685800 1608712 5685880 +1608648 5685912 1610032 5685992 1610032 5685920 1608712 5685880 +1610080 5685800 1610168 5685696 1608712 5685880 1610032 5685920 +1610032 5685920 1610080 5685800 1608712 5685880 1610032 5685992 +1608648 5685912 1608712 5685880 1610536 5684592 1610432 5683632 +1608712 5685880 1610168 5685696 1610536 5684592 1610432 5683632 +1608648 5685912 1608712 5685880 1610432 5683632 1610432 5683584 +1608712 5685880 1610536 5684592 1610432 5683632 1610432 5683584 +1608712 5685880 1610432 5683584 1608648 5685912 1610032 5685992 +1610536 5684592 1608712 5685880 1610168 5685696 1610200 5685672 +1608648 5685912 1608704 5686888 1610032 5685992 1608712 5685880 +1608648 5685912 1608448 5686648 1608704 5686888 1608712 5685880 +1610032 5685992 1610032 5685920 1608712 5685880 1608704 5686888 +1608648 5685912 1608448 5686648 1608712 5685880 1610432 5683584 +1608704 5686888 1610096 5686136 1610032 5685992 1608712 5685880 +1610032 5685992 1610032 5685920 1608712 5685880 1610096 5686136 +1608704 5686888 1610096 5686136 1608712 5685880 1608448 5686648 +1608648 5685912 1608712 5685880 1610432 5683584 1608504 5685952 +1608712 5685880 1610432 5683632 1610432 5683584 1608504 5685952 +1608648 5685912 1608448 5686648 1608712 5685880 1608504 5685952 +1610432 5683584 1608392 5686016 1608504 5685952 1608712 5685880 +1608704 5686888 1609000 5687192 1610096 5686136 1608712 5685880 +1610536 5684592 1610496 5683784 1610432 5683632 1608712 5685880 +1608648 5685912 1608336 5686512 1608448 5686648 1608712 5685880 +1610536 5684592 1608768 5685824 1608712 5685880 1610168 5685696 +1610536 5684592 1610432 5683632 1608768 5685824 1610168 5685696 +1608768 5685824 1610432 5683632 1608712 5685880 1610168 5685696 +1608712 5685880 1610080 5685800 1610168 5685696 1608768 5685824 +1608712 5685880 1610032 5685920 1610080 5685800 1608768 5685824 +1610168 5685696 1610536 5684592 1608768 5685824 1610080 5685800 +1608712 5685880 1610032 5685920 1608768 5685824 1610432 5683632 +1610080 5685800 1610168 5685696 1608768 5685824 1610032 5685920 +1608712 5685880 1610032 5685992 1610032 5685920 1608768 5685824 +1608712 5685880 1610096 5686136 1610032 5685992 1608768 5685824 +1610032 5685920 1610080 5685800 1608768 5685824 1610032 5685992 +1608712 5685880 1610096 5686136 1608768 5685824 1610432 5683632 +1610032 5685992 1610032 5685920 1608768 5685824 1610096 5686136 +1608712 5685880 1608768 5685824 1610432 5683632 1610432 5683584 +1608712 5685880 1610096 5686136 1608768 5685824 1610432 5683584 +1608768 5685824 1610536 5684592 1610432 5683632 1610432 5683584 +1608712 5685880 1608768 5685824 1610432 5683584 1608504 5685952 +1608712 5685880 1610096 5686136 1608768 5685824 1608504 5685952 +1608768 5685824 1610432 5683632 1610432 5683584 1608504 5685952 +1608712 5685880 1608704 5686888 1610096 5686136 1608768 5685824 +1610096 5686136 1610032 5685992 1608768 5685824 1608704 5686888 +1608712 5685880 1608704 5686888 1608768 5685824 1608504 5685952 +1610536 5684592 1608768 5685824 1610168 5685696 1610200 5685672 +1608712 5685880 1608448 5686648 1608704 5686888 1608768 5685824 +1610432 5683584 1608392 5686016 1608504 5685952 1608768 5685824 +1608712 5685880 1608768 5685824 1608504 5685952 1608648 5685912 +1608712 5685880 1608704 5686888 1608768 5685824 1608648 5685912 +1608768 5685824 1610432 5683584 1608504 5685952 1608648 5685912 +1608704 5686888 1609000 5687192 1610096 5686136 1608768 5685824 +1610432 5683632 1608768 5685824 1610536 5684592 1610496 5683784 +1608768 5685824 1608800 5685752 1608504 5685952 1608648 5685912 +1608768 5685824 1610432 5683584 1608800 5685752 1608648 5685912 +1608800 5685752 1610432 5683584 1608504 5685952 1608648 5685912 +1610432 5683584 1608800 5685752 1608768 5685824 1610432 5683632 +1608800 5685752 1608648 5685912 1608768 5685824 1610432 5683632 +1610432 5683584 1608504 5685952 1608800 5685752 1610432 5683632 +1608768 5685824 1610536 5684592 1610432 5683632 1608800 5685752 +1608768 5685824 1610536 5684592 1608800 5685752 1608648 5685912 +1608768 5685824 1610168 5685696 1610536 5684592 1608800 5685752 +1608768 5685824 1610168 5685696 1608800 5685752 1608648 5685912 +1608768 5685824 1610080 5685800 1610168 5685696 1608800 5685752 +1608768 5685824 1610080 5685800 1608800 5685752 1608648 5685912 +1610168 5685696 1610536 5684592 1608800 5685752 1610080 5685800 +1608768 5685824 1610032 5685920 1610080 5685800 1608800 5685752 +1608768 5685824 1610032 5685920 1608800 5685752 1608648 5685912 +1608768 5685824 1610032 5685992 1610032 5685920 1608800 5685752 +1608768 5685824 1610032 5685992 1608800 5685752 1608648 5685912 +1610080 5685800 1610168 5685696 1608800 5685752 1610032 5685920 +1610032 5685920 1610080 5685800 1608800 5685752 1610032 5685992 +1610536 5684592 1610432 5683632 1608800 5685752 1610168 5685696 +1608768 5685824 1610096 5686136 1610032 5685992 1608800 5685752 +1610432 5683632 1610432 5683584 1608800 5685752 1610536 5684592 +1610168 5685696 1610200 5685672 1610536 5684592 1608800 5685752 +1608504 5685952 1608800 5685752 1610432 5683584 1608392 5686016 +1608504 5685952 1608648 5685912 1608800 5685752 1608392 5686016 +1608800 5685752 1610432 5683632 1610432 5683584 1608392 5686016 +1610432 5683584 1601624 5681136 1608392 5686016 1608800 5685752 +1610432 5683584 1601624 5681136 1608800 5685752 1610432 5683632 +1610432 5683584 1601592 5681064 1601624 5681136 1608800 5685752 +1601624 5681136 1608304 5686080 1608392 5686016 1608800 5685752 +1608392 5686016 1608504 5685952 1608800 5685752 1601624 5681136 +1608768 5685824 1608800 5685752 1608648 5685912 1608712 5685880 +1608768 5685824 1610032 5685992 1608800 5685752 1608712 5685880 +1608800 5685752 1608504 5685952 1608648 5685912 1608712 5685880 +1610536 5684592 1610496 5683784 1610432 5683632 1608800 5685752 +1610432 5683584 1608816 5685680 1608800 5685752 1610432 5683632 +1608816 5685680 1601624 5681136 1608800 5685752 1610432 5683632 +1601624 5681136 1608816 5685680 1610432 5683584 1601592 5681064 +1608800 5685752 1610536 5684592 1610432 5683632 1608816 5685680 +1608800 5685752 1610536 5684592 1608816 5685680 1601624 5681136 +1610432 5683632 1610432 5683584 1608816 5685680 1610536 5684592 +1608800 5685752 1610168 5685696 1610536 5684592 1608816 5685680 +1608800 5685752 1610080 5685800 1610168 5685696 1608816 5685680 +1608800 5685752 1610080 5685800 1608816 5685680 1601624 5681136 +1608800 5685752 1610032 5685920 1610080 5685800 1608816 5685680 +1610080 5685800 1610168 5685696 1608816 5685680 1610032 5685920 +1608800 5685752 1610032 5685920 1608816 5685680 1601624 5681136 +1608800 5685752 1610032 5685992 1610032 5685920 1608816 5685680 +1610168 5685696 1610536 5684592 1608816 5685680 1610080 5685800 +1610536 5684592 1610432 5683632 1608816 5685680 1610168 5685696 +1610168 5685696 1610200 5685672 1610536 5684592 1608816 5685680 +1610432 5683584 1601624 5681136 1608816 5685680 1610432 5683632 +1608800 5685752 1608816 5685680 1601624 5681136 1608392 5686016 +1608800 5685752 1610032 5685920 1608816 5685680 1608392 5686016 +1601624 5681136 1608304 5686080 1608392 5686016 1608816 5685680 +1608816 5685680 1610432 5683584 1601624 5681136 1608392 5686016 +1608800 5685752 1608816 5685680 1608392 5686016 1608504 5685952 +1608800 5685752 1608816 5685680 1608504 5685952 1608648 5685912 +1608800 5685752 1610032 5685920 1608816 5685680 1608648 5685912 +1608800 5685752 1608816 5685680 1608648 5685912 1608712 5685880 +1608816 5685680 1601624 5681136 1608392 5686016 1608504 5685952 +1608816 5685680 1608392 5686016 1608504 5685952 1608648 5685912 +1610536 5684592 1610496 5683784 1610432 5683632 1608816 5685680 +1601624 5681136 1608792 5685560 1610432 5683584 1601592 5681064 +1608816 5685680 1608792 5685560 1601624 5681136 1608392 5686016 +1601624 5681136 1608304 5686080 1608392 5686016 1608792 5685560 +1601624 5681136 1601592 5681216 1608304 5686080 1608792 5685560 +1608304 5686080 1608392 5686016 1608792 5685560 1601592 5681216 +1608304 5686080 1608344 5686056 1608392 5686016 1608792 5685560 +1608392 5686016 1608816 5685680 1608792 5685560 1608304 5686080 +1608816 5685680 1610432 5683584 1608792 5685560 1608392 5686016 +1610432 5683584 1608792 5685560 1608816 5685680 1610432 5683632 +1608816 5685680 1610536 5684592 1610432 5683632 1608792 5685560 +1608816 5685680 1610168 5685696 1610536 5684592 1608792 5685560 +1610536 5684592 1610432 5683632 1608792 5685560 1610168 5685696 +1608816 5685680 1610080 5685800 1610168 5685696 1608792 5685560 +1608816 5685680 1610032 5685920 1610080 5685800 1608792 5685560 +1610168 5685696 1610536 5684592 1608792 5685560 1610080 5685800 +1610432 5683584 1601624 5681136 1608792 5685560 1610432 5683632 +1610168 5685696 1610200 5685672 1610536 5684592 1608792 5685560 +1608792 5685560 1608392 5686016 1608816 5685680 1610080 5685800 +1610432 5683632 1610432 5683584 1608792 5685560 1610536 5684592 +1608792 5685560 1610432 5683584 1601624 5681136 1601592 5681216 +1608816 5685680 1608792 5685560 1608392 5686016 1608504 5685952 +1608792 5685560 1608304 5686080 1608392 5686016 1608504 5685952 +1608816 5685680 1610080 5685800 1608792 5685560 1608504 5685952 +1601592 5681216 1601128 5681664 1608304 5686080 1608792 5685560 +1608816 5685680 1608792 5685560 1608504 5685952 1608648 5685912 +1608816 5685680 1608792 5685560 1608648 5685912 1608800 5685752 +1608648 5685912 1608712 5685880 1608800 5685752 1608792 5685560 +1608816 5685680 1610080 5685800 1608792 5685560 1608800 5685752 +1608792 5685560 1608392 5686016 1608504 5685952 1608648 5685912 +1608792 5685560 1608504 5685952 1608648 5685912 1608800 5685752 +1610536 5684592 1610496 5683784 1610432 5683632 1608792 5685560 +1610536 5684592 1610496 5683784 1608792 5685560 1610168 5685696 +1610432 5683632 1610432 5683584 1608792 5685560 1610496 5683784 +1610536 5684592 1610528 5683880 1610496 5683784 1608792 5685560 +1601624 5681136 1608696 5685384 1610432 5683584 1601592 5681064 +1610432 5683584 1608696 5685384 1608792 5685560 1610432 5683632 +1610432 5683584 1601624 5681136 1608696 5685384 1610432 5683632 +1608792 5685560 1610496 5683784 1610432 5683632 1608696 5685384 +1610432 5683632 1610432 5683584 1608696 5685384 1610496 5683784 +1608792 5685560 1608696 5685384 1601624 5681136 1601592 5681216 +1608792 5685560 1608696 5685384 1601592 5681216 1608304 5686080 +1608792 5685560 1608696 5685384 1608304 5686080 1608392 5686016 +1608696 5685384 1601592 5681216 1608304 5686080 1608392 5686016 +1608304 5686080 1608344 5686056 1608392 5686016 1608696 5685384 +1608696 5685384 1610432 5683584 1601624 5681136 1601592 5681216 +1608792 5685560 1608696 5685384 1608392 5686016 1608504 5685952 +1608696 5685384 1608304 5686080 1608392 5686016 1608504 5685952 +1608696 5685384 1601624 5681136 1601592 5681216 1608304 5686080 +1608696 5685384 1608504 5685952 1608792 5685560 1610496 5683784 +1608792 5685560 1608696 5685384 1608504 5685952 1608648 5685912 +1601592 5681216 1601128 5681664 1608304 5686080 1608696 5685384 +1608792 5685560 1610536 5684592 1610496 5683784 1608696 5685384 +1608792 5685560 1610168 5685696 1610536 5684592 1608696 5685384 +1608792 5685560 1610080 5685800 1610168 5685696 1608696 5685384 +1610168 5685696 1610200 5685672 1610536 5684592 1608696 5685384 +1610496 5683784 1610432 5683632 1608696 5685384 1610536 5684592 +1608792 5685560 1610168 5685696 1608696 5685384 1608504 5685952 +1610536 5684592 1610496 5683784 1608696 5685384 1610168 5685696 +1610536 5684592 1610528 5683880 1610496 5683784 1608696 5685384 +1610536 5684592 1610576 5683944 1610528 5683880 1608696 5685384 +1610496 5683784 1610432 5683632 1608696 5685384 1610528 5683880 +1610536 5684592 1610528 5683880 1608696 5685384 1610168 5685696 +1601624 5681136 1608664 5685224 1610432 5683584 1601592 5681064 +1608696 5685384 1608664 5685224 1601624 5681136 1601592 5681216 +1608696 5685384 1610432 5683584 1608664 5685224 1601592 5681216 +1610432 5683584 1608664 5685224 1608696 5685384 1610432 5683632 +1608696 5685384 1610496 5683784 1610432 5683632 1608664 5685224 +1608664 5685224 1601592 5681216 1608696 5685384 1610496 5683784 +1610432 5683632 1610432 5683584 1608664 5685224 1610496 5683784 +1608664 5685224 1610432 5683584 1601624 5681136 1601592 5681216 +1608696 5685384 1610528 5683880 1610496 5683784 1608664 5685224 +1610496 5683784 1610432 5683632 1608664 5685224 1610528 5683880 +1608696 5685384 1610528 5683880 1608664 5685224 1601592 5681216 +1608696 5685384 1608664 5685224 1601592 5681216 1608304 5686080 +1608696 5685384 1608664 5685224 1608304 5686080 1608392 5686016 +1608696 5685384 1608664 5685224 1608392 5686016 1608504 5685952 +1608304 5686080 1608344 5686056 1608392 5686016 1608664 5685224 +1608664 5685224 1601624 5681136 1601592 5681216 1608304 5686080 +1608696 5685384 1610528 5683880 1608664 5685224 1608392 5686016 +1608664 5685224 1601592 5681216 1608304 5686080 1608392 5686016 +1601592 5681216 1601128 5681664 1608304 5686080 1608664 5685224 +1608696 5685384 1610536 5684592 1610528 5683880 1608664 5685224 +1610536 5684592 1610576 5683944 1610528 5683880 1608664 5685224 +1608696 5685384 1610536 5684592 1608664 5685224 1608392 5686016 +1610528 5683880 1610496 5683784 1608664 5685224 1610536 5684592 +1608696 5685384 1610168 5685696 1610536 5684592 1608664 5685224 +1608696 5685384 1608792 5685560 1610168 5685696 1608664 5685224 +1608792 5685560 1610080 5685800 1610168 5685696 1608664 5685224 +1608696 5685384 1608792 5685560 1608664 5685224 1608392 5686016 +1610168 5685696 1610200 5685672 1610536 5684592 1608664 5685224 +1610168 5685696 1610200 5685672 1608664 5685224 1608792 5685560 +1610536 5684592 1610528 5683880 1608664 5685224 1610200 5685672 +1610432 5683584 1601624 5681136 1608664 5685224 1610432 5683632 +1610200 5685672 1610672 5684808 1610536 5684592 1608664 5685224 +1610496 5683784 1608712 5685184 1608664 5685224 1610528 5683880 +1608664 5685224 1608712 5685184 1610432 5683632 1610432 5683584 +1608664 5685224 1610536 5684592 1610528 5683880 1608712 5685184 +1610536 5684592 1610576 5683944 1610528 5683880 1608712 5685184 +1610528 5683880 1610496 5683784 1608712 5685184 1610536 5684592 +1608664 5685224 1610200 5685672 1610536 5684592 1608712 5685184 +1608664 5685224 1610168 5685696 1610200 5685672 1608712 5685184 +1610536 5684592 1610528 5683880 1608712 5685184 1610200 5685672 +1608664 5685224 1608792 5685560 1610168 5685696 1608712 5685184 +1608664 5685224 1608696 5685384 1608792 5685560 1608712 5685184 +1608792 5685560 1610080 5685800 1610168 5685696 1608712 5685184 +1610168 5685696 1610200 5685672 1608712 5685184 1608792 5685560 +1608792 5685560 1610168 5685696 1608712 5685184 1608696 5685384 +1610200 5685672 1610536 5684592 1608712 5685184 1610168 5685696 +1608712 5685184 1610432 5683584 1608664 5685224 1608696 5685384 +1608664 5685224 1608712 5685184 1610432 5683584 1601624 5681136 +1610432 5683584 1601592 5681064 1601624 5681136 1608712 5685184 +1608712 5685184 1610432 5683632 1610432 5683584 1601624 5681136 +1608664 5685224 1608712 5685184 1601624 5681136 1601592 5681216 +1608664 5685224 1608696 5685384 1608712 5685184 1601624 5681136 +1608712 5685184 1610496 5683784 1610432 5683632 1610432 5683584 +1610496 5683784 1610432 5683632 1608712 5685184 1610528 5683880 +1610200 5685672 1610672 5684808 1610536 5684592 1608712 5685184 +1601624 5681136 1608736 5685128 1610432 5683584 1601592 5681064 +1610432 5683584 1608736 5685128 1608712 5685184 1610432 5683632 +1610432 5683584 1601624 5681136 1608736 5685128 1610432 5683632 +1608712 5685184 1608736 5685128 1601624 5681136 1608664 5685224 +1608736 5685128 1610432 5683584 1601624 5681136 1608664 5685224 +1601624 5681136 1601592 5681216 1608664 5685224 1608736 5685128 +1601624 5681136 1601592 5681216 1608736 5685128 1610432 5683584 +1601592 5681216 1608304 5686080 1608664 5685224 1608736 5685128 +1608664 5685224 1608712 5685184 1608736 5685128 1601592 5681216 +1608712 5685184 1610496 5683784 1610432 5683632 1608736 5685128 +1610432 5683632 1610432 5683584 1608736 5685128 1610496 5683784 +1608736 5685128 1608664 5685224 1608712 5685184 1610496 5683784 +1608712 5685184 1610528 5683880 1610496 5683784 1608736 5685128 +1608712 5685184 1610536 5684592 1610528 5683880 1608736 5685128 +1610536 5684592 1610576 5683944 1610528 5683880 1608736 5685128 +1608712 5685184 1610200 5685672 1610536 5684592 1608736 5685128 +1610536 5684592 1610528 5683880 1608736 5685128 1610200 5685672 +1608712 5685184 1610168 5685696 1610200 5685672 1608736 5685128 +1608712 5685184 1608792 5685560 1610168 5685696 1608736 5685128 +1608792 5685560 1610080 5685800 1610168 5685696 1608736 5685128 +1608792 5685560 1608816 5685680 1610080 5685800 1608736 5685128 +1608792 5685560 1610080 5685800 1608736 5685128 1608712 5685184 +1610200 5685672 1610536 5684592 1608736 5685128 1610168 5685696 +1608712 5685184 1608696 5685384 1608792 5685560 1608736 5685128 +1610168 5685696 1610200 5685672 1608736 5685128 1610080 5685800 +1610496 5683784 1610432 5683632 1608736 5685128 1610528 5683880 +1608712 5685184 1608792 5685560 1608736 5685128 1608664 5685224 +1610528 5683880 1610496 5683784 1608736 5685128 1610536 5684592 +1610200 5685672 1610672 5684808 1610536 5684592 1608736 5685128 +1601624 5681136 1608768 5685096 1610432 5683584 1601592 5681064 +1608736 5685128 1608768 5685096 1601624 5681136 1601592 5681216 +1610432 5683584 1608768 5685096 1608736 5685128 1610432 5683632 +1610432 5683584 1601624 5681136 1608768 5685096 1610432 5683632 +1608768 5685096 1601624 5681136 1608736 5685128 1610432 5683632 +1608736 5685128 1610496 5683784 1610432 5683632 1608768 5685096 +1608736 5685128 1610496 5683784 1608768 5685096 1601624 5681136 +1610432 5683632 1610432 5683584 1608768 5685096 1610496 5683784 +1608736 5685128 1610528 5683880 1610496 5683784 1608768 5685096 +1608736 5685128 1610528 5683880 1608768 5685096 1601624 5681136 +1610496 5683784 1610432 5683632 1608768 5685096 1610528 5683880 +1608736 5685128 1610536 5684592 1610528 5683880 1608768 5685096 +1608736 5685128 1610536 5684592 1608768 5685096 1601624 5681136 +1610536 5684592 1610576 5683944 1610528 5683880 1608768 5685096 +1608736 5685128 1610200 5685672 1610536 5684592 1608768 5685096 +1608736 5685128 1610200 5685672 1608768 5685096 1601624 5681136 +1608736 5685128 1610168 5685696 1610200 5685672 1608768 5685096 +1608736 5685128 1610168 5685696 1608768 5685096 1601624 5681136 +1610200 5685672 1610536 5684592 1608768 5685096 1610168 5685696 +1608736 5685128 1610080 5685800 1610168 5685696 1608768 5685096 +1608736 5685128 1610080 5685800 1608768 5685096 1601624 5681136 +1608736 5685128 1608792 5685560 1610080 5685800 1608768 5685096 +1608736 5685128 1608792 5685560 1608768 5685096 1601624 5681136 +1608792 5685560 1608816 5685680 1610080 5685800 1608768 5685096 +1608736 5685128 1608712 5685184 1608792 5685560 1608768 5685096 +1608736 5685128 1608712 5685184 1608768 5685096 1601624 5681136 +1608792 5685560 1610080 5685800 1608768 5685096 1608712 5685184 +1610168 5685696 1610200 5685672 1608768 5685096 1610080 5685800 +1608712 5685184 1608696 5685384 1608792 5685560 1608768 5685096 +1608712 5685184 1608664 5685224 1608696 5685384 1608768 5685096 +1608792 5685560 1610080 5685800 1608768 5685096 1608696 5685384 +1608712 5685184 1608696 5685384 1608768 5685096 1608736 5685128 +1610080 5685800 1610168 5685696 1608768 5685096 1608792 5685560 +1610528 5683880 1610496 5683784 1608768 5685096 1610536 5684592 +1610536 5684592 1610528 5683880 1608768 5685096 1610200 5685672 +1610200 5685672 1610672 5684808 1610536 5684592 1608768 5685096 +1610528 5683880 1608872 5685040 1610536 5684592 1610576 5683944 +1608768 5685096 1608872 5685040 1610528 5683880 1610496 5683784 +1608872 5685040 1610536 5684592 1610528 5683880 1610496 5683784 +1608768 5685096 1610536 5684592 1608872 5685040 1610496 5683784 +1608768 5685096 1608872 5685040 1610496 5683784 1610432 5683632 +1608768 5685096 1608872 5685040 1610432 5683632 1610432 5683584 +1608768 5685096 1608872 5685040 1610432 5683584 1601624 5681136 +1608768 5685096 1610536 5684592 1608872 5685040 1610432 5683584 +1608872 5685040 1610496 5683784 1610432 5683632 1610432 5683584 +1608872 5685040 1610528 5683880 1610496 5683784 1610432 5683632 +1610536 5684592 1608872 5685040 1608768 5685096 1610200 5685672 +1610536 5684592 1610528 5683880 1608872 5685040 1610200 5685672 +1608872 5685040 1610432 5683584 1608768 5685096 1610200 5685672 +1608768 5685096 1610168 5685696 1610200 5685672 1608872 5685040 +1608768 5685096 1610168 5685696 1608872 5685040 1610432 5683584 +1608768 5685096 1610080 5685800 1610168 5685696 1608872 5685040 +1608768 5685096 1610080 5685800 1608872 5685040 1610432 5683584 +1610168 5685696 1610200 5685672 1608872 5685040 1610080 5685800 +1608768 5685096 1608792 5685560 1610080 5685800 1608872 5685040 +1608768 5685096 1608792 5685560 1608872 5685040 1610432 5683584 +1608792 5685560 1608816 5685680 1610080 5685800 1608872 5685040 +1608768 5685096 1608696 5685384 1608792 5685560 1608872 5685040 +1608768 5685096 1608696 5685384 1608872 5685040 1610432 5683584 +1610080 5685800 1610168 5685696 1608872 5685040 1608792 5685560 +1608768 5685096 1608712 5685184 1608696 5685384 1608872 5685040 +1608712 5685184 1608664 5685224 1608696 5685384 1608872 5685040 +1608768 5685096 1608712 5685184 1608872 5685040 1610432 5683584 +1608696 5685384 1608792 5685560 1608872 5685040 1608712 5685184 +1608768 5685096 1608736 5685128 1608712 5685184 1608872 5685040 +1608792 5685560 1610080 5685800 1608872 5685040 1608696 5685384 +1610200 5685672 1610536 5684592 1608872 5685040 1610168 5685696 +1610536 5684592 1608872 5685040 1610200 5685672 1610672 5684808 +1608872 5685040 1608912 5685032 1610536 5684592 1610528 5683880 +1608872 5685040 1608912 5685032 1610528 5683880 1610496 5683784 +1608872 5685040 1610200 5685672 1608912 5685032 1610496 5683784 +1608912 5685032 1610536 5684592 1610528 5683880 1610496 5683784 +1608912 5685032 1610200 5685672 1610536 5684592 1610528 5683880 +1610536 5684592 1610576 5683944 1610528 5683880 1608912 5685032 +1608872 5685040 1608912 5685032 1610496 5683784 1610432 5683632 +1608912 5685032 1610528 5683880 1610496 5683784 1610432 5683632 +1608872 5685040 1610200 5685672 1608912 5685032 1610432 5683632 +1608872 5685040 1608912 5685032 1610432 5683632 1610432 5683584 +1608872 5685040 1610200 5685672 1608912 5685032 1610432 5683584 +1608872 5685040 1608912 5685032 1610432 5683584 1608768 5685096 +1608912 5685032 1610496 5683784 1610432 5683632 1610432 5683584 +1610200 5685672 1608912 5685032 1608872 5685040 1610168 5685696 +1608912 5685032 1610432 5683584 1608872 5685040 1610168 5685696 +1610200 5685672 1610536 5684592 1608912 5685032 1610168 5685696 +1608872 5685040 1610080 5685800 1610168 5685696 1608912 5685032 +1608872 5685040 1610080 5685800 1608912 5685032 1610432 5683584 +1608872 5685040 1608792 5685560 1610080 5685800 1608912 5685032 +1608872 5685040 1608792 5685560 1608912 5685032 1610432 5683584 +1608792 5685560 1608816 5685680 1610080 5685800 1608912 5685032 +1610080 5685800 1610168 5685696 1608912 5685032 1608792 5685560 +1608872 5685040 1608696 5685384 1608792 5685560 1608912 5685032 +1608872 5685040 1608696 5685384 1608912 5685032 1610432 5683584 +1608872 5685040 1608712 5685184 1608696 5685384 1608912 5685032 +1608712 5685184 1608664 5685224 1608696 5685384 1608912 5685032 +1608872 5685040 1608712 5685184 1608912 5685032 1610432 5683584 +1608792 5685560 1610080 5685800 1608912 5685032 1608696 5685384 +1608872 5685040 1608768 5685096 1608712 5685184 1608912 5685032 +1608696 5685384 1608792 5685560 1608912 5685032 1608712 5685184 +1610168 5685696 1610200 5685672 1608912 5685032 1610080 5685800 +1610536 5684592 1608912 5685032 1610200 5685672 1610672 5684808 +1608912 5685032 1609040 5684992 1610528 5683880 1610496 5683784 +1608912 5685032 1609040 5684992 1610496 5683784 1610432 5683632 +1609040 5684992 1610528 5683880 1610496 5683784 1610432 5683632 +1610536 5684592 1609040 5684992 1608912 5685032 1610200 5685672 +1608912 5685032 1610200 5685672 1609040 5684992 1610432 5683632 +1608912 5685032 1610168 5685696 1610200 5685672 1609040 5684992 +1610200 5685672 1610536 5684592 1609040 5684992 1610168 5685696 +1608912 5685032 1610168 5685696 1609040 5684992 1610432 5683632 +1609040 5684992 1610536 5684592 1610528 5683880 1610496 5683784 +1610536 5684592 1610528 5683880 1609040 5684992 1610200 5685672 +1610528 5683880 1609040 5684992 1610536 5684592 1610576 5683944 +1608912 5685032 1609040 5684992 1610432 5683632 1610432 5683584 +1609040 5684992 1610496 5683784 1610432 5683632 1610432 5683584 +1608912 5685032 1610168 5685696 1609040 5684992 1610432 5683584 +1608912 5685032 1609040 5684992 1610432 5683584 1608872 5685040 +1608912 5685032 1610168 5685696 1609040 5684992 1608872 5685040 +1610432 5683584 1608768 5685096 1608872 5685040 1609040 5684992 +1609040 5684992 1610432 5683632 1610432 5683584 1608872 5685040 +1608912 5685032 1610080 5685800 1610168 5685696 1609040 5684992 +1608912 5685032 1610080 5685800 1609040 5684992 1608872 5685040 +1610168 5685696 1610200 5685672 1609040 5684992 1610080 5685800 +1608912 5685032 1608792 5685560 1610080 5685800 1609040 5684992 +1608912 5685032 1608792 5685560 1609040 5684992 1608872 5685040 +1608792 5685560 1608816 5685680 1610080 5685800 1609040 5684992 +1608816 5685680 1610032 5685920 1610080 5685800 1609040 5684992 +1608792 5685560 1608816 5685680 1609040 5684992 1608912 5685032 +1608912 5685032 1608696 5685384 1608792 5685560 1609040 5684992 +1610080 5685800 1610168 5685696 1609040 5684992 1608816 5685680 +1610536 5684592 1609040 5684992 1610200 5685672 1610672 5684808 +1608872 5685040 1609056 5684960 1610432 5683584 1608768 5685096 +1609040 5684992 1609056 5684960 1608872 5685040 1608912 5685032 +1609040 5684992 1610432 5683584 1609056 5684960 1608912 5685032 +1609056 5684960 1610432 5683584 1608872 5685040 1608912 5685032 +1610432 5683584 1609056 5684960 1609040 5684992 1610432 5683632 +1609040 5684992 1610496 5683784 1610432 5683632 1609056 5684960 +1609040 5684992 1610528 5683880 1610496 5683784 1609056 5684960 +1610496 5683784 1610432 5683632 1609056 5684960 1610528 5683880 +1609040 5684992 1610536 5684592 1610528 5683880 1609056 5684960 +1610528 5683880 1610496 5683784 1609056 5684960 1610536 5684592 +1609056 5684960 1608912 5685032 1609040 5684992 1610536 5684592 +1609040 5684992 1610200 5685672 1610536 5684592 1609056 5684960 +1609040 5684992 1610168 5685696 1610200 5685672 1609056 5684960 +1609040 5684992 1610080 5685800 1610168 5685696 1609056 5684960 +1610536 5684592 1610528 5683880 1609056 5684960 1610200 5685672 +1609040 5684992 1610168 5685696 1609056 5684960 1608912 5685032 +1610200 5685672 1610536 5684592 1609056 5684960 1610168 5685696 +1610536 5684592 1610576 5683944 1610528 5683880 1609056 5684960 +1610432 5683584 1608872 5685040 1609056 5684960 1610432 5683632 +1610432 5683632 1610432 5683584 1609056 5684960 1610496 5683784 +1610200 5685672 1610672 5684808 1610536 5684592 1609056 5684960 +1609056 5684960 1609088 5684944 1610528 5683880 1610496 5683784 +1609056 5684960 1609088 5684944 1610496 5683784 1610432 5683632 +1609088 5684944 1610528 5683880 1610496 5683784 1610432 5683632 +1610536 5684592 1609088 5684944 1609056 5684960 1610200 5685672 +1609056 5684960 1610168 5685696 1610200 5685672 1609088 5684944 +1609056 5684960 1609040 5684992 1610168 5685696 1609088 5684944 +1609040 5684992 1610080 5685800 1610168 5685696 1609088 5684944 +1609040 5684992 1610080 5685800 1609088 5684944 1609056 5684960 +1610200 5685672 1610536 5684592 1609088 5684944 1610168 5685696 +1610168 5685696 1610200 5685672 1609088 5684944 1610080 5685800 +1610528 5683880 1609088 5684944 1610536 5684592 1610576 5683944 +1609056 5684960 1609040 5684992 1609088 5684944 1610432 5683632 +1609088 5684944 1610536 5684592 1610528 5683880 1610496 5683784 +1609056 5684960 1609088 5684944 1610432 5683632 1610432 5683584 +1609088 5684944 1610496 5683784 1610432 5683632 1610432 5683584 +1609056 5684960 1609040 5684992 1609088 5684944 1610432 5683584 +1609056 5684960 1609088 5684944 1610432 5683584 1608872 5685040 +1610432 5683584 1608768 5685096 1608872 5685040 1609088 5684944 +1609056 5684960 1609088 5684944 1608872 5685040 1608912 5685032 +1609056 5684960 1609040 5684992 1609088 5684944 1608872 5685040 +1609088 5684944 1610432 5683632 1610432 5683584 1608872 5685040 +1609040 5684992 1608816 5685680 1610080 5685800 1609088 5684944 +1610536 5684592 1610528 5683880 1609088 5684944 1610200 5685672 +1610536 5684592 1609088 5684944 1610200 5685672 1610672 5684808 +1610432 5683632 1609144 5684888 1609088 5684944 1610496 5683784 +1609088 5684944 1610528 5683880 1610496 5683784 1609144 5684888 +1610496 5683784 1610432 5683632 1609144 5684888 1610528 5683880 +1609088 5684944 1610536 5684592 1610528 5683880 1609144 5684888 +1610528 5683880 1610496 5683784 1609144 5684888 1610536 5684592 +1610536 5684592 1610576 5683944 1610528 5683880 1609144 5684888 +1609144 5684888 1610432 5683584 1609088 5684944 1610536 5684592 +1609088 5684944 1609144 5684888 1610432 5683584 1608872 5685040 +1610432 5683584 1608768 5685096 1608872 5685040 1609144 5684888 +1609088 5684944 1609144 5684888 1608872 5685040 1609056 5684960 +1608872 5685040 1608912 5685032 1609056 5684960 1609144 5684888 +1609088 5684944 1610536 5684592 1609144 5684888 1609056 5684960 +1609144 5684888 1610432 5683584 1608872 5685040 1609056 5684960 +1609088 5684944 1610200 5685672 1610536 5684592 1609144 5684888 +1609088 5684944 1610168 5685696 1610200 5685672 1609144 5684888 +1609088 5684944 1610080 5685800 1610168 5685696 1609144 5684888 +1609088 5684944 1609040 5684992 1610080 5685800 1609144 5684888 +1610168 5685696 1610200 5685672 1609144 5684888 1610080 5685800 +1610536 5684592 1610528 5683880 1609144 5684888 1610200 5685672 +1609088 5684944 1610080 5685800 1609144 5684888 1609056 5684960 +1610200 5685672 1610536 5684592 1609144 5684888 1610168 5685696 +1609144 5684888 1610432 5683632 1610432 5683584 1608872 5685040 +1610432 5683632 1610432 5683584 1609144 5684888 1610496 5683784 +1610200 5685672 1610672 5684808 1610536 5684592 1609144 5684888 +1608768 5685096 1609168 5684752 1610432 5683584 1601624 5681136 +1610432 5683584 1601592 5681064 1601624 5681136 1609168 5684752 +1610432 5683584 1609168 5684752 1608872 5685040 1609144 5684888 +1608768 5685096 1609168 5684752 1601624 5681136 1608736 5685128 +1609168 5684752 1609144 5684888 1610432 5683584 1601624 5681136 +1608872 5685040 1609056 5684960 1609144 5684888 1609168 5684752 +1609144 5684888 1610432 5683584 1609168 5684752 1609056 5684960 +1608872 5685040 1608912 5685032 1609056 5684960 1609168 5684752 +1608912 5685032 1609040 5684992 1609056 5684960 1609168 5684752 +1609056 5684960 1609088 5684944 1609144 5684888 1609168 5684752 +1609056 5684960 1609144 5684888 1609168 5684752 1608912 5685032 +1610432 5683584 1609168 5684752 1609144 5684888 1610432 5683632 +1609168 5684752 1609056 5684960 1609144 5684888 1610432 5683632 +1610432 5683584 1601624 5681136 1609168 5684752 1610432 5683632 +1609168 5684752 1608768 5685096 1608872 5685040 1608912 5685032 +1609144 5684888 1610496 5683784 1610432 5683632 1609168 5684752 +1609144 5684888 1610528 5683880 1610496 5683784 1609168 5684752 +1609144 5684888 1610536 5684592 1610528 5683880 1609168 5684752 +1610528 5683880 1610496 5683784 1609168 5684752 1610536 5684592 +1609144 5684888 1610536 5684592 1609168 5684752 1609056 5684960 +1610536 5684592 1610576 5683944 1610528 5683880 1609168 5684752 +1609144 5684888 1610200 5685672 1610536 5684592 1609168 5684752 +1610432 5683632 1610432 5683584 1609168 5684752 1610496 5683784 +1610496 5683784 1610432 5683632 1609168 5684752 1610528 5683880 +1608768 5685096 1608872 5685040 1609168 5684752 1601624 5681136 +1601624 5681136 1609120 5684624 1610432 5683584 1601592 5681064 +1609168 5684752 1609120 5684624 1601624 5681136 1608768 5685096 +1601624 5681136 1608736 5685128 1608768 5685096 1609120 5684624 +1608768 5685096 1609168 5684752 1609120 5684624 1608736 5685128 +1601624 5681136 1601592 5681216 1608736 5685128 1609120 5684624 +1609168 5684752 1610432 5683584 1609120 5684624 1608768 5685096 +1610432 5683584 1609120 5684624 1609168 5684752 1610432 5683632 +1609120 5684624 1608768 5685096 1609168 5684752 1610432 5683632 +1609120 5684624 1610432 5683584 1601624 5681136 1608736 5685128 +1610432 5683584 1601624 5681136 1609120 5684624 1610432 5683632 +1609168 5684752 1610496 5683784 1610432 5683632 1609120 5684624 +1609168 5684752 1610496 5683784 1609120 5684624 1608768 5685096 +1610432 5683632 1610432 5683584 1609120 5684624 1610496 5683784 +1609168 5684752 1610528 5683880 1610496 5683784 1609120 5684624 +1609168 5684752 1610536 5684592 1610528 5683880 1609120 5684624 +1609168 5684752 1609144 5684888 1610536 5684592 1609120 5684624 +1610536 5684592 1610576 5683944 1610528 5683880 1609120 5684624 +1609168 5684752 1610536 5684592 1609120 5684624 1608768 5685096 +1610496 5683784 1610432 5683632 1609120 5684624 1610528 5683880 +1610528 5683880 1610496 5683784 1609120 5684624 1610536 5684592 +1609168 5684752 1609120 5684624 1608768 5685096 1608872 5685040 +1609120 5684624 1608736 5685128 1608768 5685096 1608872 5685040 +1609168 5684752 1610536 5684592 1609120 5684624 1608872 5685040 +1609168 5684752 1609120 5684624 1608872 5685040 1608912 5685032 +1609168 5684752 1609120 5684624 1608912 5685032 1609056 5684960 +1608912 5685032 1609040 5684992 1609056 5684960 1609120 5684624 +1609168 5684752 1610536 5684592 1609120 5684624 1609056 5684960 +1609168 5684752 1609120 5684624 1609056 5684960 1609144 5684888 +1609120 5684624 1608872 5685040 1608912 5685032 1609056 5684960 +1609120 5684624 1608768 5685096 1608872 5685040 1608912 5685032 +1601624 5681136 1609072 5684560 1610432 5683584 1601592 5681064 +1609120 5684624 1609072 5684560 1601624 5681136 1608736 5685128 +1609072 5684560 1610432 5683584 1601624 5681136 1608736 5685128 +1601624 5681136 1601592 5681216 1608736 5685128 1609072 5684560 +1601624 5681136 1601592 5681216 1609072 5684560 1610432 5683584 +1609120 5684624 1609072 5684560 1608736 5685128 1608768 5685096 +1609120 5684624 1609072 5684560 1608768 5685096 1608872 5685040 +1609072 5684560 1608736 5685128 1608768 5685096 1608872 5685040 +1601592 5681216 1608664 5685224 1608736 5685128 1609072 5684560 +1601592 5681216 1608664 5685224 1609072 5684560 1601624 5681136 +1601592 5681216 1608304 5686080 1608664 5685224 1609072 5684560 +1608736 5685128 1608768 5685096 1609072 5684560 1608664 5685224 +1609120 5684624 1610432 5683584 1609072 5684560 1608872 5685040 +1610432 5683584 1609072 5684560 1609120 5684624 1610432 5683632 +1610432 5683584 1601624 5681136 1609072 5684560 1610432 5683632 +1609120 5684624 1610496 5683784 1610432 5683632 1609072 5684560 +1609072 5684560 1608872 5685040 1609120 5684624 1610496 5683784 +1610432 5683632 1610432 5683584 1609072 5684560 1610496 5683784 +1608664 5685224 1608712 5685184 1608736 5685128 1609072 5684560 +1609120 5684624 1610528 5683880 1610496 5683784 1609072 5684560 +1610496 5683784 1610432 5683632 1609072 5684560 1610528 5683880 +1609120 5684624 1610528 5683880 1609072 5684560 1608872 5685040 +1609120 5684624 1610536 5684592 1610528 5683880 1609072 5684560 +1609120 5684624 1609072 5684560 1608872 5685040 1608912 5685032 +1609072 5684560 1608768 5685096 1608872 5685040 1608912 5685032 +1609120 5684624 1610528 5683880 1609072 5684560 1608912 5685032 +1609120 5684624 1609072 5684560 1608912 5685032 1609056 5684960 +1608912 5685032 1609040 5684992 1609056 5684960 1609072 5684560 +1609120 5684624 1609072 5684560 1609056 5684960 1609168 5684752 +1609120 5684624 1610528 5683880 1609072 5684560 1609056 5684960 +1609072 5684560 1608872 5685040 1608912 5685032 1609056 5684960 +1601624 5681136 1609032 5684488 1610432 5683584 1601592 5681064 +1609072 5684560 1609032 5684488 1601624 5681136 1601592 5681216 +1609072 5684560 1610432 5683584 1609032 5684488 1601592 5681216 +1610432 5683584 1609032 5684488 1609072 5684560 1610432 5683632 +1609032 5684488 1601592 5681216 1609072 5684560 1610432 5683632 +1609032 5684488 1610432 5683584 1601624 5681136 1601592 5681216 +1609072 5684560 1609032 5684488 1601592 5681216 1608664 5685224 +1609032 5684488 1601624 5681136 1601592 5681216 1608664 5685224 +1609072 5684560 1610432 5683632 1609032 5684488 1608664 5685224 +1601592 5681216 1608304 5686080 1608664 5685224 1609032 5684488 +1609072 5684560 1609032 5684488 1608664 5685224 1608736 5685128 +1609072 5684560 1610432 5683632 1609032 5684488 1608736 5685128 +1609032 5684488 1601592 5681216 1608664 5685224 1608736 5685128 +1610432 5683584 1601624 5681136 1609032 5684488 1610432 5683632 +1609072 5684560 1609032 5684488 1608736 5685128 1608768 5685096 +1609072 5684560 1610432 5683632 1609032 5684488 1608768 5685096 +1609072 5684560 1609032 5684488 1608768 5685096 1608872 5685040 +1609072 5684560 1609032 5684488 1608872 5685040 1608912 5685032 +1609072 5684560 1610432 5683632 1609032 5684488 1608872 5685040 +1609032 5684488 1608664 5685224 1608736 5685128 1608768 5685096 +1609032 5684488 1608736 5685128 1608768 5685096 1608872 5685040 +1609072 5684560 1610496 5683784 1610432 5683632 1609032 5684488 +1609072 5684560 1610496 5683784 1609032 5684488 1608872 5685040 +1610432 5683632 1610432 5683584 1609032 5684488 1610496 5683784 +1609072 5684560 1610528 5683880 1610496 5683784 1609032 5684488 +1609072 5684560 1610528 5683880 1609032 5684488 1608872 5685040 +1610496 5683784 1610432 5683632 1609032 5684488 1610528 5683880 +1608664 5685224 1608712 5685184 1608736 5685128 1609032 5684488 +1609072 5684560 1609120 5684624 1610528 5683880 1609032 5684488 +1609072 5684560 1609120 5684624 1609032 5684488 1608872 5685040 +1610528 5683880 1610496 5683784 1609032 5684488 1609120 5684624 +1609120 5684624 1610536 5684592 1610528 5683880 1609032 5684488 +1601624 5681136 1608968 5684424 1610432 5683584 1601592 5681064 +1609032 5684488 1608968 5684424 1601624 5681136 1601592 5681216 +1609032 5684488 1608968 5684424 1601592 5681216 1608664 5685224 +1608968 5684424 1601624 5681136 1601592 5681216 1608664 5685224 +1609032 5684488 1610432 5683584 1608968 5684424 1608664 5685224 +1609032 5684488 1608968 5684424 1608664 5685224 1608736 5685128 +1608968 5684424 1601592 5681216 1608664 5685224 1608736 5685128 +1609032 5684488 1610432 5683584 1608968 5684424 1608736 5685128 +1601592 5681216 1608304 5686080 1608664 5685224 1608968 5684424 +1609032 5684488 1608968 5684424 1608736 5685128 1608768 5685096 +1609032 5684488 1610432 5683584 1608968 5684424 1608768 5685096 +1608968 5684424 1608664 5685224 1608736 5685128 1608768 5685096 +1610432 5683584 1608968 5684424 1609032 5684488 1610432 5683632 +1609032 5684488 1610496 5683784 1610432 5683632 1608968 5684424 +1608968 5684424 1608768 5685096 1609032 5684488 1610432 5683632 +1608968 5684424 1610432 5683584 1601624 5681136 1601592 5681216 +1610432 5683584 1601624 5681136 1608968 5684424 1610432 5683632 +1609032 5684488 1608968 5684424 1608768 5685096 1608872 5685040 +1609032 5684488 1610432 5683632 1608968 5684424 1608872 5685040 +1609032 5684488 1608968 5684424 1608872 5685040 1609072 5684560 +1608872 5685040 1608912 5685032 1609072 5684560 1608968 5684424 +1609032 5684488 1610432 5683632 1608968 5684424 1609072 5684560 +1608968 5684424 1608736 5685128 1608768 5685096 1608872 5685040 +1608968 5684424 1608768 5685096 1608872 5685040 1609072 5684560 +1608664 5685224 1608712 5685184 1608736 5685128 1608968 5684424 +1601624 5681136 1608696 5684208 1610432 5683584 1601592 5681064 +1610432 5683584 1610520 5683528 1601592 5681064 1608696 5684208 +1601592 5681064 1601624 5681136 1608696 5684208 1610520 5683528 +1610520 5683528 1610616 5683496 1601592 5681064 1608696 5684208 +1608968 5684424 1608696 5684208 1601624 5681136 1601592 5681216 +1608968 5684424 1608696 5684208 1601592 5681216 1608664 5685224 +1608968 5684424 1608696 5684208 1608664 5685224 1608736 5685128 +1608696 5684208 1601592 5681216 1608664 5685224 1608736 5685128 +1608968 5684424 1608696 5684208 1608736 5685128 1608768 5685096 +1608696 5684208 1608664 5685224 1608736 5685128 1608768 5685096 +1601592 5681216 1608304 5686080 1608664 5685224 1608696 5684208 +1608664 5685224 1608736 5685128 1608696 5684208 1608304 5686080 +1608968 5684424 1608696 5684208 1608768 5685096 1608872 5685040 +1608304 5686080 1608392 5686016 1608664 5685224 1608696 5684208 +1601592 5681216 1601128 5681664 1608304 5686080 1608696 5684208 +1608696 5684208 1601624 5681136 1601592 5681216 1608304 5686080 +1608968 5684424 1610432 5683584 1608696 5684208 1608768 5685096 +1610432 5683584 1608696 5684208 1608968 5684424 1610432 5683632 +1601624 5681136 1601592 5681216 1608696 5684208 1601592 5681064 +1608664 5685224 1608712 5685184 1608736 5685128 1608696 5684208 +1608696 5684208 1608968 5684424 1610432 5683584 1610520 5683528 +1608696 5684208 1608368 5684000 1601592 5681064 1601624 5681136 +1601592 5681064 1608368 5684000 1610520 5683528 1610616 5683496 +1610520 5683528 1608368 5684000 1608696 5684208 1610432 5683584 +1608696 5684208 1608368 5684000 1601624 5681136 1601592 5681216 +1608368 5684000 1601592 5681064 1601624 5681136 1601592 5681216 +1608696 5684208 1608368 5684000 1601592 5681216 1608304 5686080 +1608696 5684208 1608368 5684000 1608304 5686080 1608664 5685224 +1608696 5684208 1608368 5684000 1608664 5685224 1608736 5685128 +1608696 5684208 1608368 5684000 1608736 5685128 1608768 5685096 +1608368 5684000 1608304 5686080 1608664 5685224 1608736 5685128 +1608304 5686080 1608392 5686016 1608664 5685224 1608368 5684000 +1601592 5681216 1601128 5681664 1608304 5686080 1608368 5684000 +1601592 5681216 1601160 5681616 1601128 5681664 1608368 5684000 +1601128 5681664 1601088 5681704 1608304 5686080 1608368 5684000 +1601088 5681704 1608280 5686200 1608304 5686080 1608368 5684000 +1601128 5681664 1601088 5681704 1608368 5684000 1601592 5681216 +1608368 5684000 1601088 5681704 1608304 5686080 1608664 5685224 +1608368 5684000 1601624 5681136 1601592 5681216 1601128 5681664 +1608664 5685224 1608712 5685184 1608736 5685128 1608368 5684000 +1608696 5684208 1610432 5683584 1608368 5684000 1608736 5685128 +1608696 5684208 1608968 5684424 1610432 5683584 1608368 5684000 +1608368 5684000 1610520 5683528 1601592 5681064 1601624 5681136 +1610520 5683528 1601592 5681064 1608368 5684000 1610432 5683584 +1601592 5681064 1608272 5683896 1610520 5683528 1610616 5683496 +1601592 5681064 1608272 5683896 1610616 5683496 1601560 5681032 +1601592 5681064 1608368 5684000 1608272 5683896 1610616 5683496 +1608272 5683896 1608368 5684000 1610520 5683528 1610616 5683496 +1608368 5684000 1608272 5683896 1601592 5681064 1601624 5681136 +1608368 5684000 1608272 5683896 1601624 5681136 1601592 5681216 +1608368 5684000 1608272 5683896 1601592 5681216 1601128 5681664 +1608272 5683896 1601624 5681136 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1608272 5683896 +1608368 5684000 1608272 5683896 1601128 5681664 1601088 5681704 +1608368 5684000 1608272 5683896 1601088 5681704 1608304 5686080 +1601088 5681704 1608280 5686200 1608304 5686080 1608272 5683896 +1608272 5683896 1601128 5681664 1601088 5681704 1608304 5686080 +1608368 5684000 1608272 5683896 1608304 5686080 1608664 5685224 +1608368 5684000 1608272 5683896 1608664 5685224 1608736 5685128 +1608304 5686080 1608392 5686016 1608664 5685224 1608272 5683896 +1608272 5683896 1601088 5681704 1608304 5686080 1608664 5685224 +1608272 5683896 1601592 5681216 1601128 5681664 1601088 5681704 +1608272 5683896 1610616 5683496 1601592 5681064 1601624 5681136 +1608272 5683896 1601592 5681064 1601624 5681136 1601592 5681216 +1608368 5684000 1610520 5683528 1608272 5683896 1608664 5685224 +1610520 5683528 1608272 5683896 1608368 5684000 1610432 5683584 +1608368 5684000 1608696 5684208 1610432 5683584 1608272 5683896 +1610520 5683528 1610616 5683496 1608272 5683896 1610432 5683584 +1608696 5684208 1608968 5684424 1610432 5683584 1608272 5683896 +1608272 5683896 1608664 5685224 1608368 5684000 1608696 5684208 +1610432 5683584 1610520 5683528 1608272 5683896 1608696 5684208 +1610616 5683496 1608232 5683800 1608272 5683896 1610520 5683528 +1601592 5681064 1608232 5683800 1610616 5683496 1601560 5681032 +1610616 5683496 1601464 5680984 1601560 5681032 1608232 5683800 +1610616 5683496 1601560 5681032 1608232 5683800 1610520 5683528 +1608272 5683896 1608232 5683800 1601592 5681064 1601624 5681136 +1608232 5683800 1601624 5681136 1608272 5683896 1610520 5683528 +1608272 5683896 1610432 5683584 1610520 5683528 1608232 5683800 +1610520 5683528 1610616 5683496 1608232 5683800 1610432 5683584 +1608272 5683896 1610432 5683584 1608232 5683800 1601624 5681136 +1601592 5681064 1601624 5681136 1608232 5683800 1601560 5681032 +1608272 5683896 1608232 5683800 1601624 5681136 1601592 5681216 +1608272 5683896 1608232 5683800 1601592 5681216 1601128 5681664 +1601592 5681216 1601160 5681616 1601128 5681664 1608232 5683800 +1608272 5683896 1608232 5683800 1601128 5681664 1601088 5681704 +1608232 5683800 1601592 5681216 1601128 5681664 1601088 5681704 +1608272 5683896 1608232 5683800 1601088 5681704 1608304 5686080 +1601088 5681704 1608280 5686200 1608304 5686080 1608232 5683800 +1608272 5683896 1608232 5683800 1608304 5686080 1608664 5685224 +1608232 5683800 1601128 5681664 1601088 5681704 1608304 5686080 +1608232 5683800 1601592 5681064 1601624 5681136 1601592 5681216 +1608272 5683896 1610432 5683584 1608232 5683800 1608304 5686080 +1608232 5683800 1601624 5681136 1601592 5681216 1601128 5681664 +1608272 5683896 1608696 5684208 1610432 5683584 1608232 5683800 +1608272 5683896 1608368 5684000 1608696 5684208 1608232 5683800 +1608272 5683896 1608368 5684000 1608232 5683800 1608304 5686080 +1610432 5683584 1610520 5683528 1608232 5683800 1608696 5684208 +1608696 5684208 1608968 5684424 1610432 5683584 1608232 5683800 +1608696 5684208 1610432 5683584 1608232 5683800 1608368 5684000 +1601560 5681032 1608144 5683608 1610616 5683496 1601464 5680984 +1608232 5683800 1608144 5683608 1601560 5681032 1601592 5681064 +1610616 5683496 1608144 5683608 1608232 5683800 1610520 5683528 +1608232 5683800 1610432 5683584 1610520 5683528 1608144 5683608 +1610520 5683528 1610616 5683496 1608144 5683608 1610432 5683584 +1608144 5683608 1610616 5683496 1601560 5681032 1601592 5681064 +1610616 5683496 1601560 5681032 1608144 5683608 1610520 5683528 +1608232 5683800 1608696 5684208 1610432 5683584 1608144 5683608 +1610432 5683584 1610520 5683528 1608144 5683608 1608696 5684208 +1608232 5683800 1608144 5683608 1601592 5681064 1601624 5681136 +1608144 5683608 1601560 5681032 1601592 5681064 1601624 5681136 +1608232 5683800 1608144 5683608 1601624 5681136 1601592 5681216 +1608144 5683608 1601592 5681064 1601624 5681136 1601592 5681216 +1608232 5683800 1608696 5684208 1608144 5683608 1601592 5681216 +1608696 5684208 1608968 5684424 1610432 5683584 1608144 5683608 +1608232 5683800 1608144 5683608 1601592 5681216 1601128 5681664 +1608232 5683800 1608144 5683608 1601128 5681664 1601088 5681704 +1601592 5681216 1601160 5681616 1601128 5681664 1608144 5683608 +1608232 5683800 1608144 5683608 1601088 5681704 1608304 5686080 +1601088 5681704 1608280 5686200 1608304 5686080 1608144 5683608 +1608144 5683608 1601128 5681664 1601088 5681704 1608304 5686080 +1608232 5683800 1608144 5683608 1608304 5686080 1608272 5683896 +1608144 5683608 1601624 5681136 1601592 5681216 1601128 5681664 +1608232 5683800 1608696 5684208 1608144 5683608 1608304 5686080 +1608144 5683608 1601592 5681216 1601128 5681664 1601088 5681704 +1608232 5683800 1608368 5684000 1608696 5684208 1608144 5683608 +1601560 5681032 1608136 5683496 1610616 5683496 1601464 5680984 +1608144 5683608 1608136 5683496 1601560 5681032 1601592 5681064 +1608144 5683608 1608136 5683496 1601592 5681064 1601624 5681136 +1608136 5683496 1601560 5681032 1601592 5681064 1601624 5681136 +1608144 5683608 1610616 5683496 1608136 5683496 1601624 5681136 +1610616 5683496 1608136 5683496 1608144 5683608 1610520 5683528 +1610616 5683496 1601560 5681032 1608136 5683496 1610520 5683528 +1608144 5683608 1610432 5683584 1610520 5683528 1608136 5683496 +1608144 5683608 1608696 5684208 1610432 5683584 1608136 5683496 +1610432 5683584 1610520 5683528 1608136 5683496 1608696 5684208 +1608136 5683496 1601624 5681136 1608144 5683608 1608696 5684208 +1610520 5683528 1610616 5683496 1608136 5683496 1610432 5683584 +1608136 5683496 1610616 5683496 1601560 5681032 1601592 5681064 +1608144 5683608 1608232 5683800 1608696 5684208 1608136 5683496 +1608696 5684208 1610432 5683584 1608136 5683496 1608232 5683800 +1608144 5683608 1608232 5683800 1608136 5683496 1601624 5681136 +1608144 5683608 1608136 5683496 1601624 5681136 1601592 5681216 +1608136 5683496 1601592 5681064 1601624 5681136 1601592 5681216 +1608144 5683608 1608232 5683800 1608136 5683496 1601592 5681216 +1608144 5683608 1608136 5683496 1601592 5681216 1601128 5681664 +1608696 5684208 1608968 5684424 1610432 5683584 1608136 5683496 +1608232 5683800 1608368 5684000 1608696 5684208 1608136 5683496 +1601560 5681032 1608168 5683464 1610616 5683496 1601464 5680984 +1610616 5683496 1608168 5683464 1608136 5683496 1610520 5683528 +1608168 5683464 1601560 5681032 1608136 5683496 1610520 5683528 +1610616 5683496 1601560 5681032 1608168 5683464 1610520 5683528 +1608136 5683496 1610432 5683584 1610520 5683528 1608168 5683464 +1608136 5683496 1610432 5683584 1608168 5683464 1601560 5681032 +1610520 5683528 1610616 5683496 1608168 5683464 1610432 5683584 +1608136 5683496 1608696 5684208 1610432 5683584 1608168 5683464 +1608136 5683496 1608232 5683800 1608696 5684208 1608168 5683464 +1608136 5683496 1608232 5683800 1608168 5683464 1601560 5681032 +1608696 5684208 1610432 5683584 1608168 5683464 1608232 5683800 +1610432 5683584 1610520 5683528 1608168 5683464 1608696 5684208 +1608136 5683496 1608168 5683464 1601560 5681032 1601592 5681064 +1608136 5683496 1608232 5683800 1608168 5683464 1601592 5681064 +1608168 5683464 1610616 5683496 1601560 5681032 1601592 5681064 +1608136 5683496 1608168 5683464 1601592 5681064 1601624 5681136 +1608136 5683496 1608232 5683800 1608168 5683464 1601624 5681136 +1608136 5683496 1608168 5683464 1601624 5681136 1601592 5681216 +1608168 5683464 1601560 5681032 1601592 5681064 1601624 5681136 +1608136 5683496 1608144 5683608 1608232 5683800 1608168 5683464 +1608232 5683800 1608696 5684208 1608168 5683464 1608144 5683608 +1608136 5683496 1608144 5683608 1608168 5683464 1601624 5681136 +1608696 5684208 1608968 5684424 1610432 5683584 1608168 5683464 +1608232 5683800 1608368 5684000 1608696 5684208 1608168 5683464 +1608232 5683800 1608368 5684000 1608168 5683464 1608144 5683608 +1608232 5683800 1608272 5683896 1608368 5684000 1608168 5683464 +1608696 5684208 1610432 5683584 1608168 5683464 1608368 5684000 +1608696 5684208 1608200 5683472 1608168 5683464 1608368 5684000 +1608200 5683472 1610432 5683584 1608168 5683464 1608368 5684000 +1608696 5684208 1610432 5683584 1608200 5683472 1608368 5684000 +1608168 5683464 1608200 5683472 1610432 5683584 1610520 5683528 +1608168 5683464 1608200 5683472 1610520 5683528 1610616 5683496 +1608168 5683464 1608368 5684000 1608200 5683472 1610616 5683496 +1608168 5683464 1608200 5683472 1610616 5683496 1601560 5681032 +1608200 5683472 1608696 5684208 1610432 5683584 1610520 5683528 +1608200 5683472 1610432 5683584 1610520 5683528 1610616 5683496 +1610432 5683584 1608200 5683472 1608696 5684208 1608968 5684424 +1608168 5683464 1608232 5683800 1608368 5684000 1608200 5683472 +1608168 5683464 1608144 5683608 1608232 5683800 1608200 5683472 +1608168 5683464 1608144 5683608 1608200 5683472 1610616 5683496 +1608232 5683800 1608272 5683896 1608368 5684000 1608200 5683472 +1608368 5684000 1608696 5684208 1608200 5683472 1608232 5683800 +1608168 5683464 1608136 5683496 1608144 5683608 1608200 5683472 +1608144 5683608 1608232 5683800 1608200 5683472 1608136 5683496 +1608168 5683464 1608136 5683496 1608200 5683472 1610616 5683496 +1608232 5683800 1608368 5684000 1608200 5683472 1608144 5683608 +1601560 5681032 1608240 5683448 1610616 5683496 1601464 5680984 +1608168 5683464 1608240 5683448 1601560 5681032 1601592 5681064 +1610616 5683496 1608240 5683448 1608168 5683464 1608200 5683472 +1610616 5683496 1608240 5683448 1608200 5683472 1610520 5683528 +1608240 5683448 1608168 5683464 1608200 5683472 1610520 5683528 +1608168 5683464 1608200 5683472 1608240 5683448 1601592 5681064 +1608240 5683448 1610616 5683496 1601560 5681032 1601592 5681064 +1608200 5683472 1610432 5683584 1610520 5683528 1608240 5683448 +1610520 5683528 1610616 5683496 1608240 5683448 1610432 5683584 +1608200 5683472 1610432 5683584 1608240 5683448 1608168 5683464 +1608200 5683472 1608696 5684208 1610432 5683584 1608240 5683448 +1608200 5683472 1608696 5684208 1608240 5683448 1608168 5683464 +1608200 5683472 1608368 5684000 1608696 5684208 1608240 5683448 +1608200 5683472 1608368 5684000 1608240 5683448 1608168 5683464 +1608696 5684208 1610432 5683584 1608240 5683448 1608368 5684000 +1608200 5683472 1608232 5683800 1608368 5684000 1608240 5683448 +1608200 5683472 1608232 5683800 1608240 5683448 1608168 5683464 +1608368 5684000 1608696 5684208 1608240 5683448 1608232 5683800 +1608232 5683800 1608272 5683896 1608368 5684000 1608240 5683448 +1610432 5683584 1610520 5683528 1608240 5683448 1608696 5684208 +1608168 5683464 1608240 5683448 1601592 5681064 1601624 5681136 +1610616 5683496 1601560 5681032 1608240 5683448 1610520 5683528 +1608696 5684208 1608968 5684424 1610432 5683584 1608240 5683448 +1608200 5683472 1608144 5683608 1608232 5683800 1608240 5683448 +1608200 5683472 1608136 5683496 1608144 5683608 1608240 5683448 +1608200 5683472 1608144 5683608 1608240 5683448 1608168 5683464 +1608232 5683800 1608368 5684000 1608240 5683448 1608144 5683608 +1601560 5681032 1608608 5683328 1610616 5683496 1601464 5680984 +1608240 5683448 1608608 5683328 1601560 5681032 1601592 5681064 +1608240 5683448 1608608 5683328 1601592 5681064 1608168 5683464 +1608240 5683448 1608608 5683328 1608168 5683464 1608200 5683472 +1608608 5683328 1601560 5681032 1601592 5681064 1608168 5683464 +1608240 5683448 1610616 5683496 1608608 5683328 1608168 5683464 +1601592 5681064 1601624 5681136 1608168 5683464 1608608 5683328 +1610616 5683496 1608608 5683328 1608240 5683448 1610520 5683528 +1608240 5683448 1610432 5683584 1610520 5683528 1608608 5683328 +1608608 5683328 1608168 5683464 1608240 5683448 1610432 5683584 +1608240 5683448 1608696 5684208 1610432 5683584 1608608 5683328 +1610432 5683584 1610520 5683528 1608608 5683328 1608696 5684208 +1608240 5683448 1608368 5684000 1608696 5684208 1608608 5683328 +1608240 5683448 1608232 5683800 1608368 5684000 1608608 5683328 +1608368 5684000 1608696 5684208 1608608 5683328 1608232 5683800 +1608240 5683448 1608232 5683800 1608608 5683328 1608168 5683464 +1608232 5683800 1608272 5683896 1608368 5684000 1608608 5683328 +1608240 5683448 1608144 5683608 1608232 5683800 1608608 5683328 +1608696 5684208 1610432 5683584 1608608 5683328 1608368 5684000 +1610520 5683528 1610616 5683496 1608608 5683328 1610432 5683584 +1608608 5683328 1610616 5683496 1601560 5681032 1601592 5681064 +1610616 5683496 1601560 5681032 1608608 5683328 1610520 5683528 +1608696 5684208 1608968 5684424 1610432 5683584 1608608 5683328 +1610432 5683584 1610520 5683528 1608608 5683328 1608968 5684424 +1608696 5684208 1608968 5684424 1608608 5683328 1608368 5684000 +1608968 5684424 1610432 5683632 1610432 5683584 1608608 5683328 +1610432 5683584 1610520 5683528 1608608 5683328 1610432 5683632 +1608968 5684424 1609032 5684488 1610432 5683632 1608608 5683328 +1608968 5684424 1610432 5683632 1608608 5683328 1608696 5684208 +1601560 5681032 1608768 5683304 1610616 5683496 1601464 5680984 +1608608 5683328 1608768 5683304 1601560 5681032 1601592 5681064 +1610616 5683496 1608768 5683304 1608608 5683328 1610520 5683528 +1610616 5683496 1601560 5681032 1608768 5683304 1610520 5683528 +1608608 5683328 1610432 5683584 1610520 5683528 1608768 5683304 +1608608 5683328 1610432 5683632 1610432 5683584 1608768 5683304 +1610432 5683584 1610520 5683528 1608768 5683304 1610432 5683632 +1608768 5683304 1601560 5681032 1608608 5683328 1610432 5683632 +1610520 5683528 1610616 5683496 1608768 5683304 1610432 5683584 +1608608 5683328 1608968 5684424 1610432 5683632 1608768 5683304 +1610432 5683632 1610432 5683584 1608768 5683304 1608968 5684424 +1608608 5683328 1608968 5684424 1608768 5683304 1601560 5681032 +1608968 5684424 1609032 5684488 1610432 5683632 1608768 5683304 +1608608 5683328 1608696 5684208 1608968 5684424 1608768 5683304 +1608608 5683328 1608368 5684000 1608696 5684208 1608768 5683304 +1608608 5683328 1608696 5684208 1608768 5683304 1601560 5681032 +1608968 5684424 1610432 5683632 1608768 5683304 1608696 5684208 +1601560 5681032 1608864 5683304 1610616 5683496 1601464 5680984 +1610616 5683496 1657056 5639384 1601464 5680984 1608864 5683304 +1610616 5683496 1608864 5683304 1608768 5683304 1610520 5683528 +1608864 5683304 1601560 5681032 1608768 5683304 1610520 5683528 +1601560 5681032 1608768 5683304 1608864 5683304 1601464 5680984 +1608864 5683304 1610520 5683528 1610616 5683496 1601464 5680984 +1608768 5683304 1610432 5683584 1610520 5683528 1608864 5683304 +1608768 5683304 1610432 5683584 1608864 5683304 1601560 5681032 +1610520 5683528 1610616 5683496 1608864 5683304 1610432 5683584 +1608768 5683304 1610432 5683632 1610432 5683584 1608864 5683304 +1608768 5683304 1608968 5684424 1610432 5683632 1608864 5683304 +1608768 5683304 1608968 5684424 1608864 5683304 1601560 5681032 +1610432 5683632 1610432 5683584 1608864 5683304 1608968 5684424 +1610432 5683584 1610520 5683528 1608864 5683304 1610432 5683632 +1608768 5683304 1608864 5683304 1601560 5681032 1608608 5683328 +1608968 5684424 1609032 5684488 1610432 5683632 1608864 5683304 +1608768 5683304 1608696 5684208 1608968 5684424 1608864 5683304 +1608968 5684424 1610432 5683632 1608864 5683304 1608696 5684208 +1608768 5683304 1608696 5684208 1608864 5683304 1601560 5681032 +1608768 5683304 1608608 5683328 1608696 5684208 1608864 5683304 +1608968 5684424 1609000 5683352 1608864 5683304 1608696 5684208 +1609000 5683352 1610432 5683632 1608864 5683304 1608696 5684208 +1608864 5683304 1609000 5683352 1610432 5683632 1610432 5683584 +1608864 5683304 1608696 5684208 1609000 5683352 1610432 5683584 +1608864 5683304 1609000 5683352 1610432 5683584 1610520 5683528 +1608864 5683304 1609000 5683352 1610520 5683528 1610616 5683496 +1608864 5683304 1608696 5684208 1609000 5683352 1610616 5683496 +1608864 5683304 1609000 5683352 1610616 5683496 1601464 5680984 +1609000 5683352 1610432 5683632 1610432 5683584 1610520 5683528 +1609000 5683352 1610432 5683584 1610520 5683528 1610616 5683496 +1609000 5683352 1608968 5684424 1610432 5683632 1610432 5683584 +1608968 5684424 1610432 5683632 1609000 5683352 1608696 5684208 +1610432 5683632 1609000 5683352 1608968 5684424 1609032 5684488 +1610432 5683632 1609000 5683352 1609032 5684488 1610496 5683784 +1610432 5683632 1610432 5683584 1609000 5683352 1609032 5684488 +1609000 5683352 1608696 5684208 1608968 5684424 1609032 5684488 +1608864 5683304 1608768 5683304 1608696 5684208 1609000 5683352 +1608696 5684208 1608968 5684424 1609000 5683352 1608768 5683304 +1608864 5683304 1608768 5683304 1609000 5683352 1610616 5683496 +1608768 5683304 1608608 5683328 1608696 5684208 1609000 5683352 +1610432 5683632 1609264 5683496 1609032 5684488 1610496 5683784 +1609264 5683496 1609000 5683352 1609032 5684488 1610496 5683784 +1609000 5683352 1609264 5683496 1610432 5683632 1610432 5683584 +1609000 5683352 1609264 5683496 1610432 5683584 1610520 5683528 +1609000 5683352 1609264 5683496 1610520 5683528 1610616 5683496 +1609264 5683496 1610432 5683632 1610432 5683584 1610520 5683528 +1609000 5683352 1609032 5684488 1609264 5683496 1610520 5683528 +1610432 5683632 1610432 5683584 1609264 5683496 1610496 5683784 +1609032 5684488 1609264 5683496 1609000 5683352 1608968 5684424 +1609032 5684488 1610496 5683784 1609264 5683496 1608968 5684424 +1609264 5683496 1610520 5683528 1609000 5683352 1608968 5684424 +1609000 5683352 1608696 5684208 1608968 5684424 1609264 5683496 +1609000 5683352 1608768 5683304 1608696 5684208 1609264 5683496 +1609000 5683352 1608696 5684208 1609264 5683496 1610520 5683528 +1608968 5684424 1609032 5684488 1609264 5683496 1608696 5684208 +1609032 5684488 1610528 5683880 1610496 5683784 1609264 5683496 +1610496 5683784 1610432 5683632 1609264 5683496 1610528 5683880 +1609032 5684488 1610528 5683880 1609264 5683496 1608968 5684424 +1609032 5684488 1609120 5684624 1610528 5683880 1609264 5683496 +1609032 5684488 1609120 5684624 1609264 5683496 1608968 5684424 +1610528 5683880 1610496 5683784 1609264 5683496 1609120 5684624 +1609032 5684488 1609072 5684560 1609120 5684624 1609264 5683496 +1609120 5684624 1610536 5684592 1610528 5683880 1609264 5683496 +1610496 5683784 1609360 5683512 1609264 5683496 1610528 5683880 +1610496 5683784 1610432 5683632 1609360 5683512 1610528 5683880 +1609264 5683496 1609360 5683512 1610432 5683632 1610432 5683584 +1609360 5683512 1610496 5683784 1610432 5683632 1610432 5683584 +1609264 5683496 1609360 5683512 1610432 5683584 1610520 5683528 +1609264 5683496 1609360 5683512 1610520 5683528 1609000 5683352 +1610520 5683528 1610616 5683496 1609000 5683352 1609360 5683512 +1610616 5683496 1608864 5683304 1609000 5683352 1609360 5683512 +1609000 5683352 1609264 5683496 1609360 5683512 1610616 5683496 +1609360 5683512 1610432 5683584 1610520 5683528 1610616 5683496 +1609360 5683512 1610432 5683632 1610432 5683584 1610520 5683528 +1609360 5683512 1609000 5683352 1609264 5683496 1610528 5683880 +1609264 5683496 1609120 5684624 1610528 5683880 1609360 5683512 +1610528 5683880 1610496 5683784 1609360 5683512 1609120 5684624 +1609264 5683496 1609120 5684624 1609360 5683512 1609000 5683352 +1609264 5683496 1609032 5684488 1609120 5684624 1609360 5683512 +1609264 5683496 1608968 5684424 1609032 5684488 1609360 5683512 +1609264 5683496 1608968 5684424 1609360 5683512 1609000 5683352 +1609264 5683496 1608696 5684208 1608968 5684424 1609360 5683512 +1609032 5684488 1609120 5684624 1609360 5683512 1608968 5684424 +1609120 5684624 1610528 5683880 1609360 5683512 1609032 5684488 +1609032 5684488 1609072 5684560 1609120 5684624 1609360 5683512 +1609120 5684624 1610536 5684592 1610528 5683880 1609360 5683512 +1609000 5683352 1609448 5683488 1610616 5683496 1608864 5683304 +1609360 5683512 1609448 5683488 1609000 5683352 1609264 5683496 +1609360 5683512 1610616 5683496 1609448 5683488 1609264 5683496 +1609448 5683488 1610616 5683496 1609000 5683352 1609264 5683496 +1610616 5683496 1609448 5683488 1609360 5683512 1610520 5683528 +1610616 5683496 1609000 5683352 1609448 5683488 1610520 5683528 +1609448 5683488 1609264 5683496 1609360 5683512 1610520 5683528 +1609360 5683512 1610432 5683584 1610520 5683528 1609448 5683488 +1609360 5683512 1610432 5683584 1609448 5683488 1609264 5683496 +1610520 5683528 1610616 5683496 1609448 5683488 1610432 5683584 +1609360 5683512 1610432 5683632 1610432 5683584 1609448 5683488 +1609360 5683512 1610496 5683784 1610432 5683632 1609448 5683488 +1609360 5683512 1610496 5683784 1609448 5683488 1609264 5683496 +1609360 5683512 1610528 5683880 1610496 5683784 1609448 5683488 +1609360 5683512 1609120 5684624 1610528 5683880 1609448 5683488 +1610496 5683784 1610432 5683632 1609448 5683488 1610528 5683880 +1609360 5683512 1609120 5684624 1609448 5683488 1609264 5683496 +1610528 5683880 1610496 5683784 1609448 5683488 1609120 5684624 +1610432 5683584 1610520 5683528 1609448 5683488 1610432 5683632 +1610432 5683632 1610432 5683584 1609448 5683488 1610496 5683784 +1609360 5683512 1609032 5684488 1609120 5684624 1609448 5683488 +1609120 5684624 1610528 5683880 1609448 5683488 1609032 5684488 +1609360 5683512 1609032 5684488 1609448 5683488 1609264 5683496 +1609360 5683512 1608968 5684424 1609032 5684488 1609448 5683488 +1609032 5684488 1609072 5684560 1609120 5684624 1609448 5683488 +1609120 5684624 1610536 5684592 1610528 5683880 1609448 5683488 +1609120 5684624 1609464 5683512 1609448 5683488 1609032 5684488 +1609464 5683512 1610528 5683880 1609448 5683488 1609032 5684488 +1609120 5684624 1610528 5683880 1609464 5683512 1609032 5684488 +1609448 5683488 1609464 5683512 1610528 5683880 1610496 5683784 +1609448 5683488 1609032 5684488 1609464 5683512 1610496 5683784 +1609464 5683512 1609120 5684624 1610528 5683880 1610496 5683784 +1609448 5683488 1609464 5683512 1610496 5683784 1610432 5683632 +1609448 5683488 1609032 5684488 1609464 5683512 1610432 5683632 +1609464 5683512 1610528 5683880 1610496 5683784 1610432 5683632 +1609448 5683488 1609464 5683512 1610432 5683632 1610432 5683584 +1609448 5683488 1609032 5684488 1609464 5683512 1610432 5683584 +1609464 5683512 1610496 5683784 1610432 5683632 1610432 5683584 +1609448 5683488 1609464 5683512 1610432 5683584 1610520 5683528 +1609448 5683488 1609360 5683512 1609032 5684488 1609464 5683512 +1609032 5684488 1609120 5684624 1609464 5683512 1609360 5683512 +1609448 5683488 1609360 5683512 1609464 5683512 1610432 5683584 +1609360 5683512 1608968 5684424 1609032 5684488 1609464 5683512 +1609120 5684624 1609464 5683512 1609032 5684488 1609072 5684560 +1610528 5683880 1609464 5683512 1609120 5684624 1610536 5684592 +1610616 5683496 1609480 5683480 1609448 5683488 1610520 5683528 +1609480 5683480 1609000 5683352 1609448 5683488 1610520 5683528 +1609000 5683352 1609480 5683480 1610616 5683496 1608864 5683304 +1609448 5683488 1609480 5683480 1609000 5683352 1609264 5683496 +1609448 5683488 1610432 5683584 1610520 5683528 1609480 5683480 +1610520 5683528 1610616 5683496 1609480 5683480 1610432 5683584 +1609448 5683488 1610432 5683584 1609480 5683480 1609000 5683352 +1609448 5683488 1609464 5683512 1610432 5683584 1609480 5683480 +1609448 5683488 1609464 5683512 1609480 5683480 1609000 5683352 +1610432 5683584 1610520 5683528 1609480 5683480 1609464 5683512 +1609464 5683512 1610432 5683632 1610432 5683584 1609480 5683480 +1609464 5683512 1610496 5683784 1610432 5683632 1609480 5683480 +1610432 5683584 1610520 5683528 1609480 5683480 1610432 5683632 +1609464 5683512 1610432 5683632 1609480 5683480 1609448 5683488 +1610616 5683496 1609000 5683352 1609480 5683480 1610520 5683528 +1609000 5683352 1609464 5683456 1610616 5683496 1608864 5683304 +1610616 5683496 1601464 5680984 1608864 5683304 1609464 5683456 +1609464 5683456 1609480 5683480 1610616 5683496 1608864 5683304 +1609480 5683480 1609464 5683456 1609000 5683352 1609448 5683488 +1609480 5683480 1609464 5683456 1609448 5683488 1609464 5683512 +1609000 5683352 1609264 5683496 1609448 5683488 1609464 5683456 +1609264 5683496 1609360 5683512 1609448 5683488 1609464 5683456 +1609264 5683496 1609360 5683512 1609464 5683456 1609000 5683352 +1609448 5683488 1609480 5683480 1609464 5683456 1609360 5683512 +1609480 5683480 1610616 5683496 1609464 5683456 1609448 5683488 +1610616 5683496 1609464 5683456 1609480 5683480 1610520 5683528 +1609480 5683480 1610432 5683584 1610520 5683528 1609464 5683456 +1609480 5683480 1610432 5683632 1610432 5683584 1609464 5683456 +1610616 5683496 1608864 5683304 1609464 5683456 1610520 5683528 +1609464 5683456 1609448 5683488 1609480 5683480 1610432 5683584 +1610520 5683528 1610616 5683496 1609464 5683456 1610432 5683584 +1609000 5683352 1609264 5683496 1609464 5683456 1608864 5683304 +1609464 5683456 1609504 5683440 1608864 5683304 1609000 5683352 +1608864 5683304 1609504 5683440 1610616 5683496 1601464 5680984 +1609464 5683456 1610616 5683496 1609504 5683440 1609000 5683352 +1610616 5683496 1609504 5683440 1609464 5683456 1610520 5683528 +1609504 5683440 1609000 5683352 1609464 5683456 1610520 5683528 +1609504 5683440 1610616 5683496 1608864 5683304 1609000 5683352 +1610616 5683496 1608864 5683304 1609504 5683440 1610520 5683528 +1609464 5683456 1610432 5683584 1610520 5683528 1609504 5683440 +1609464 5683456 1609480 5683480 1610432 5683584 1609504 5683440 +1609480 5683480 1610432 5683632 1610432 5683584 1609504 5683440 +1609480 5683480 1610432 5683632 1609504 5683440 1609464 5683456 +1609464 5683456 1609480 5683480 1609504 5683440 1609000 5683352 +1610520 5683528 1610616 5683496 1609504 5683440 1610432 5683584 +1609480 5683480 1609464 5683512 1610432 5683632 1609504 5683440 +1610432 5683584 1610520 5683528 1609504 5683440 1610432 5683632 +1609464 5683456 1609504 5683440 1609000 5683352 1609264 5683496 +1610616 5683496 1609600 5683216 1601464 5680984 1608864 5683304 +1601464 5680984 1601560 5681032 1608864 5683304 1609600 5683216 +1608864 5683304 1610616 5683496 1609600 5683216 1601560 5681032 +1657056 5639384 1609600 5683216 1610616 5683496 1610648 5683504 +1601464 5680984 1609600 5683216 1657056 5639384 1599875 5599875 +1601560 5681032 1608768 5683304 1608864 5683304 1609600 5683216 +1608864 5683304 1610616 5683496 1609600 5683216 1608768 5683304 +1601560 5681032 1608768 5683304 1609600 5683216 1601464 5680984 +1610616 5683496 1609600 5683216 1608864 5683304 1609504 5683440 +1609600 5683216 1608768 5683304 1608864 5683304 1609504 5683440 +1657056 5639384 1609600 5683216 1610648 5683504 1657088 5639464 +1601560 5681032 1608608 5683328 1608768 5683304 1609600 5683216 +1608864 5683304 1609000 5683352 1609504 5683440 1609600 5683216 +1608864 5683304 1609000 5683352 1609600 5683216 1608768 5683304 +1609000 5683352 1609464 5683456 1609504 5683440 1609600 5683216 +1609504 5683440 1610616 5683496 1609600 5683216 1609464 5683456 +1609000 5683352 1609464 5683456 1609600 5683216 1608864 5683304 +1609600 5683216 1657056 5639384 1601464 5680984 1601560 5681032 +1610616 5683496 1609600 5683216 1609504 5683440 1610520 5683528 +1609600 5683216 1609464 5683456 1609504 5683440 1610520 5683528 +1609504 5683440 1610432 5683584 1610520 5683528 1609600 5683216 +1609504 5683440 1610432 5683584 1609600 5683216 1609464 5683456 +1610520 5683528 1610616 5683496 1609600 5683216 1610432 5683584 +1609504 5683440 1610432 5683632 1610432 5683584 1609600 5683216 +1609000 5683352 1609264 5683496 1609464 5683456 1609600 5683216 +1609464 5683456 1609504 5683440 1609600 5683216 1609264 5683496 +1609264 5683496 1609360 5683512 1609464 5683456 1609600 5683216 +1609000 5683352 1609264 5683496 1609600 5683216 1608864 5683304 +1657056 5639384 1601464 5680984 1609600 5683216 1610648 5683504 +1610616 5683496 1610648 5683504 1609600 5683216 1610520 5683528 +1610648 5683504 1609632 5683200 1609600 5683216 1610616 5683496 +1657056 5639384 1609632 5683200 1610648 5683504 1657088 5639464 +1610648 5683504 1657056 5639384 1609632 5683200 1610616 5683496 +1609600 5683216 1609632 5683200 1657056 5639384 1601464 5680984 +1657056 5639384 1599875 5599875 1601464 5680984 1609632 5683200 +1609600 5683216 1609632 5683200 1601464 5680984 1601560 5681032 +1609600 5683216 1609632 5683200 1601560 5681032 1608768 5683304 +1609600 5683216 1609632 5683200 1608768 5683304 1608864 5683304 +1609600 5683216 1609632 5683200 1608864 5683304 1609000 5683352 +1609632 5683200 1601560 5681032 1608768 5683304 1608864 5683304 +1601560 5681032 1608608 5683328 1608768 5683304 1609632 5683200 +1609632 5683200 1601464 5680984 1601560 5681032 1608768 5683304 +1609632 5683200 1657056 5639384 1601464 5680984 1601560 5681032 +1609632 5683200 1608864 5683304 1609600 5683216 1610616 5683496 +1609600 5683216 1610520 5683528 1610616 5683496 1609632 5683200 +1610616 5683496 1610648 5683504 1609632 5683200 1610520 5683528 +1609600 5683216 1610432 5683584 1610520 5683528 1609632 5683200 +1609600 5683216 1609504 5683440 1610432 5683584 1609632 5683200 +1610432 5683584 1610520 5683528 1609632 5683200 1609504 5683440 +1609504 5683440 1610432 5683632 1610432 5683584 1609632 5683200 +1609600 5683216 1609504 5683440 1609632 5683200 1608864 5683304 +1610520 5683528 1610616 5683496 1609632 5683200 1610432 5683584 +1609632 5683200 1610648 5683504 1657056 5639384 1601464 5680984 +1601464 5680984 1609648 5683176 1657056 5639384 1599875 5599875 +1609632 5683200 1609648 5683176 1601464 5680984 1601560 5681032 +1609632 5683200 1609648 5683176 1601560 5681032 1608768 5683304 +1609632 5683200 1609648 5683176 1608768 5683304 1608864 5683304 +1609632 5683200 1609648 5683176 1608864 5683304 1609600 5683216 +1608864 5683304 1609000 5683352 1609600 5683216 1609648 5683176 +1609648 5683176 1608768 5683304 1608864 5683304 1609600 5683216 +1601560 5681032 1608608 5683328 1608768 5683304 1609648 5683176 +1609648 5683176 1601560 5681032 1608768 5683304 1608864 5683304 +1609648 5683176 1657056 5639384 1601464 5680984 1601560 5681032 +1609648 5683176 1601464 5680984 1601560 5681032 1608768 5683304 +1657056 5639384 1609648 5683176 1609632 5683200 1610648 5683504 +1657056 5639384 1601464 5680984 1609648 5683176 1610648 5683504 +1657056 5639384 1609648 5683176 1610648 5683504 1657088 5639464 +1609632 5683200 1610616 5683496 1610648 5683504 1609648 5683176 +1609632 5683200 1610520 5683528 1610616 5683496 1609648 5683176 +1610616 5683496 1610648 5683504 1609648 5683176 1610520 5683528 +1609632 5683200 1610432 5683584 1610520 5683528 1609648 5683176 +1610520 5683528 1610616 5683496 1609648 5683176 1610432 5683584 +1609632 5683200 1609504 5683440 1610432 5683584 1609648 5683176 +1610648 5683504 1657056 5639384 1609648 5683176 1610616 5683496 +1609632 5683200 1610432 5683584 1609648 5683176 1609600 5683216 +1609648 5683176 1609696 5683144 1657056 5639384 1601464 5680984 +1609696 5683144 1610648 5683504 1657056 5639384 1601464 5680984 +1657056 5639384 1599875 5599875 1601464 5680984 1609696 5683144 +1657056 5639384 1609696 5683144 1610648 5683504 1657088 5639464 +1609648 5683176 1609696 5683144 1601464 5680984 1601560 5681032 +1609696 5683144 1657056 5639384 1601464 5680984 1601560 5681032 +1609648 5683176 1610648 5683504 1609696 5683144 1601560 5681032 +1609648 5683176 1609696 5683144 1601560 5681032 1608768 5683304 +1601560 5681032 1608608 5683328 1608768 5683304 1609696 5683144 +1609648 5683176 1609696 5683144 1608768 5683304 1608864 5683304 +1609648 5683176 1609696 5683144 1608864 5683304 1609600 5683216 +1609696 5683144 1601464 5680984 1601560 5681032 1608768 5683304 +1609648 5683176 1610648 5683504 1609696 5683144 1608864 5683304 +1609696 5683144 1601560 5681032 1608768 5683304 1608864 5683304 +1610648 5683504 1609696 5683144 1609648 5683176 1610616 5683496 +1610648 5683504 1657056 5639384 1609696 5683144 1610616 5683496 +1609648 5683176 1610520 5683528 1610616 5683496 1609696 5683144 +1609648 5683176 1610432 5683584 1610520 5683528 1609696 5683144 +1610520 5683528 1610616 5683496 1609696 5683144 1610432 5683584 +1609696 5683144 1608864 5683304 1609648 5683176 1610432 5683584 +1609648 5683176 1609632 5683200 1610432 5683584 1609696 5683144 +1610432 5683584 1610520 5683528 1609696 5683144 1609632 5683200 +1609632 5683200 1609504 5683440 1610432 5683584 1609696 5683144 +1609648 5683176 1609632 5683200 1609696 5683144 1608864 5683304 +1610616 5683496 1610648 5683504 1609696 5683144 1610520 5683528 +1609696 5683144 1609800 5683160 1657056 5639384 1601464 5680984 +1610648 5683504 1609800 5683160 1609696 5683144 1610616 5683496 +1609800 5683160 1657056 5639384 1609696 5683144 1610616 5683496 +1657056 5639384 1609800 5683160 1610648 5683504 1657088 5639464 +1610648 5683504 1657056 5639384 1609800 5683160 1610616 5683496 +1609696 5683144 1610520 5683528 1610616 5683496 1609800 5683160 +1609696 5683144 1610520 5683528 1609800 5683160 1657056 5639384 +1610616 5683496 1610648 5683504 1609800 5683160 1610520 5683528 +1609696 5683144 1610432 5683584 1610520 5683528 1609800 5683160 +1609696 5683144 1609632 5683200 1610432 5683584 1609800 5683160 +1609696 5683144 1609632 5683200 1609800 5683160 1657056 5639384 +1609632 5683200 1609504 5683440 1610432 5683584 1609800 5683160 +1609632 5683200 1609504 5683440 1609800 5683160 1609696 5683144 +1609632 5683200 1609600 5683216 1609504 5683440 1609800 5683160 +1610432 5683584 1610520 5683528 1609800 5683160 1609504 5683440 +1609504 5683440 1610432 5683632 1610432 5683584 1609800 5683160 +1609504 5683440 1609480 5683480 1610432 5683632 1609800 5683160 +1609504 5683440 1610432 5683632 1609800 5683160 1609632 5683200 +1610432 5683584 1610520 5683528 1609800 5683160 1610432 5683632 +1609696 5683144 1609648 5683176 1609632 5683200 1609800 5683160 +1610520 5683528 1610616 5683496 1609800 5683160 1610432 5683584 +1610432 5683584 1609848 5683192 1609800 5683160 1610432 5683632 +1609848 5683192 1610520 5683528 1609800 5683160 1610432 5683632 +1610432 5683584 1610520 5683528 1609848 5683192 1610432 5683632 +1609800 5683160 1609504 5683440 1610432 5683632 1609848 5683192 +1609504 5683440 1609480 5683480 1610432 5683632 1609848 5683192 +1609800 5683160 1609504 5683440 1609848 5683192 1610520 5683528 +1609800 5683160 1609632 5683200 1609504 5683440 1609848 5683192 +1609800 5683160 1609696 5683144 1609632 5683200 1609848 5683192 +1609632 5683200 1609600 5683216 1609504 5683440 1609848 5683192 +1609800 5683160 1609632 5683200 1609848 5683192 1610520 5683528 +1610432 5683632 1610432 5683584 1609848 5683192 1609504 5683440 +1609504 5683440 1610432 5683632 1609848 5683192 1609632 5683200 +1609800 5683160 1609848 5683192 1610520 5683528 1610616 5683496 +1609800 5683160 1609848 5683192 1610616 5683496 1610648 5683504 +1609800 5683160 1609632 5683200 1609848 5683192 1610616 5683496 +1609848 5683192 1610432 5683584 1610520 5683528 1610616 5683496 +1610432 5683632 1609984 5683328 1609504 5683440 1609480 5683480 +1609504 5683440 1609464 5683456 1609480 5683480 1609984 5683328 +1609984 5683328 1609848 5683192 1609504 5683440 1609480 5683480 +1610432 5683632 1609848 5683192 1609984 5683328 1609480 5683480 +1610432 5683632 1609984 5683328 1609480 5683480 1609464 5683512 +1610432 5683632 1609848 5683192 1609984 5683328 1609464 5683512 +1610432 5683632 1609984 5683328 1609464 5683512 1610496 5683784 +1609984 5683328 1609504 5683440 1609480 5683480 1609464 5683512 +1609848 5683192 1609984 5683328 1610432 5683632 1610432 5683584 +1609984 5683328 1609464 5683512 1610432 5683632 1610432 5683584 +1609848 5683192 1609504 5683440 1609984 5683328 1610432 5683584 +1609848 5683192 1609984 5683328 1610432 5683584 1610520 5683528 +1609848 5683192 1609984 5683328 1610520 5683528 1610616 5683496 +1609848 5683192 1609504 5683440 1609984 5683328 1610616 5683496 +1609984 5683328 1610432 5683584 1610520 5683528 1610616 5683496 +1609984 5683328 1610432 5683632 1610432 5683584 1610520 5683528 +1609504 5683440 1609984 5683328 1609848 5683192 1609632 5683200 +1609848 5683192 1609984 5683328 1610616 5683496 1609800 5683160 +1609984 5683328 1610080 5683496 1610432 5683632 1610432 5683584 +1610080 5683496 1609464 5683512 1610432 5683632 1610432 5683584 +1609984 5683328 1609464 5683512 1610080 5683496 1610432 5683584 +1610432 5683632 1610080 5683496 1609464 5683512 1610496 5683784 +1610432 5683632 1610432 5683584 1610080 5683496 1610496 5683784 +1610080 5683496 1609984 5683328 1609464 5683512 1610496 5683784 +1609464 5683512 1610528 5683880 1610496 5683784 1610080 5683496 +1609464 5683512 1609120 5684624 1610528 5683880 1610080 5683496 +1609464 5683512 1609032 5684488 1609120 5684624 1610080 5683496 +1609464 5683512 1609120 5684624 1610080 5683496 1609984 5683328 +1610496 5683784 1610432 5683632 1610080 5683496 1610528 5683880 +1610528 5683880 1610496 5683784 1610080 5683496 1609120 5684624 +1609464 5683512 1610080 5683496 1609984 5683328 1609480 5683480 +1609464 5683512 1609120 5684624 1610080 5683496 1609480 5683480 +1610080 5683496 1610432 5683584 1609984 5683328 1609480 5683480 +1609984 5683328 1609504 5683440 1609480 5683480 1610080 5683496 +1609504 5683440 1609464 5683456 1609480 5683480 1610080 5683496 +1609984 5683328 1609848 5683192 1609504 5683440 1610080 5683496 +1609984 5683328 1609504 5683440 1610080 5683496 1610432 5683584 +1609480 5683480 1609464 5683512 1610080 5683496 1609504 5683440 +1609984 5683328 1610080 5683496 1610432 5683584 1610520 5683528 +1610080 5683496 1610432 5683632 1610432 5683584 1610520 5683528 +1609984 5683328 1609504 5683440 1610080 5683496 1610520 5683528 +1609984 5683328 1610080 5683496 1610520 5683528 1610616 5683496 +1609120 5684624 1610536 5684592 1610528 5683880 1610080 5683496 +1609120 5684624 1609168 5684752 1610536 5684592 1610080 5683496 +1609120 5684624 1610536 5684592 1610080 5683496 1609464 5683512 +1610536 5684592 1610576 5683944 1610528 5683880 1610080 5683496 +1610528 5683880 1610496 5683784 1610080 5683496 1610536 5684592 +1610536 5684592 1610128 5683648 1609120 5684624 1609168 5684752 +1609120 5684624 1610128 5683648 1610080 5683496 1609464 5683512 +1609120 5684624 1610536 5684592 1610128 5683648 1609464 5683512 +1609120 5684624 1610128 5683648 1609464 5683512 1609032 5684488 +1610128 5683648 1610536 5684592 1610080 5683496 1609464 5683512 +1610080 5683496 1609480 5683480 1609464 5683512 1610128 5683648 +1610080 5683496 1610128 5683648 1610536 5684592 1610528 5683880 +1610536 5684592 1610576 5683944 1610528 5683880 1610128 5683648 +1610080 5683496 1609464 5683512 1610128 5683648 1610528 5683880 +1610128 5683648 1609120 5684624 1610536 5684592 1610528 5683880 +1610080 5683496 1610128 5683648 1610528 5683880 1610496 5683784 +1610080 5683496 1609464 5683512 1610128 5683648 1610496 5683784 +1610080 5683496 1610128 5683648 1610496 5683784 1610432 5683632 +1610080 5683496 1610128 5683648 1610432 5683632 1610432 5683584 +1610080 5683496 1609464 5683512 1610128 5683648 1610432 5683584 +1610080 5683496 1610128 5683648 1610432 5683584 1610520 5683528 +1610128 5683648 1610496 5683784 1610432 5683632 1610432 5683584 +1610128 5683648 1610528 5683880 1610496 5683784 1610432 5683632 +1610128 5683648 1610536 5684592 1610528 5683880 1610496 5683784 +1609120 5684624 1610152 5683888 1610128 5683648 1609464 5683512 +1610152 5683888 1610536 5684592 1610128 5683648 1609464 5683512 +1609120 5684624 1610536 5684592 1610152 5683888 1609464 5683512 +1610536 5684592 1610152 5683888 1609120 5684624 1609168 5684752 +1610536 5684592 1610128 5683648 1610152 5683888 1609168 5684752 +1610152 5683888 1609464 5683512 1609120 5684624 1609168 5684752 +1610536 5684592 1610152 5683888 1609168 5684752 1609144 5684888 +1610128 5683648 1610080 5683496 1609464 5683512 1610152 5683888 +1609120 5684624 1610152 5683888 1609464 5683512 1609032 5684488 +1610152 5683888 1610128 5683648 1609464 5683512 1609032 5684488 +1609120 5684624 1609168 5684752 1610152 5683888 1609032 5684488 +1609464 5683512 1609360 5683512 1609032 5684488 1610152 5683888 +1610128 5683648 1610152 5683888 1610536 5684592 1610528 5683880 +1610128 5683648 1609464 5683512 1610152 5683888 1610528 5683880 +1610152 5683888 1609168 5684752 1610536 5684592 1610528 5683880 +1610536 5684592 1610576 5683944 1610528 5683880 1610152 5683888 +1610536 5684592 1610576 5683944 1610152 5683888 1609168 5684752 +1610528 5683880 1610128 5683648 1610152 5683888 1610576 5683944 +1610536 5684592 1610672 5683992 1610576 5683944 1610152 5683888 +1609120 5684624 1610152 5683888 1609032 5684488 1609072 5684560 +1610128 5683648 1610152 5683888 1610528 5683880 1610496 5683784 +1610128 5683648 1609464 5683512 1610152 5683888 1610496 5683784 +1610152 5683888 1610576 5683944 1610528 5683880 1610496 5683784 +1610128 5683648 1610152 5683888 1610496 5683784 1610432 5683632 +1610128 5683648 1609464 5683512 1610152 5683888 1610432 5683632 +1610128 5683648 1610152 5683888 1610432 5683632 1610432 5683584 +1610152 5683888 1610528 5683880 1610496 5683784 1610432 5683632 +1610152 5683888 1610128 5683904 1609120 5684624 1609168 5684752 +1610152 5683888 1609032 5684488 1610128 5683904 1609168 5684752 +1610152 5683888 1610128 5683904 1609168 5684752 1610536 5684592 +1610152 5683888 1610128 5683904 1610536 5684592 1610576 5683944 +1610152 5683888 1609032 5684488 1610128 5683904 1610576 5683944 +1610128 5683904 1609120 5684624 1609168 5684752 1610536 5684592 +1610128 5683904 1609168 5684752 1610536 5684592 1610576 5683944 +1609168 5684752 1609144 5684888 1610536 5684592 1610128 5683904 +1609032 5684488 1610128 5683904 1610152 5683888 1609464 5683512 +1610152 5683888 1610128 5683648 1609464 5683512 1610128 5683904 +1610128 5683904 1610576 5683944 1610152 5683888 1610128 5683648 +1609032 5684488 1610128 5683904 1609464 5683512 1609360 5683512 +1610128 5683648 1610080 5683496 1609464 5683512 1610128 5683904 +1609464 5683512 1609032 5684488 1610128 5683904 1610128 5683648 +1610152 5683888 1610128 5683904 1610576 5683944 1610528 5683880 +1610128 5683904 1609032 5684488 1609120 5684624 1609168 5684752 +1609032 5684488 1609120 5684624 1610128 5683904 1609464 5683512 +1610536 5684592 1610672 5683992 1610576 5683944 1610128 5683904 +1609120 5684624 1610128 5683904 1609032 5684488 1609072 5684560 +1609168 5684752 1610160 5684024 1610128 5683904 1609120 5684624 +1610128 5683904 1610160 5684024 1610536 5684592 1610576 5683944 +1610128 5683904 1610160 5684024 1610576 5683944 1610152 5683888 +1610160 5684024 1610536 5684592 1610576 5683944 1610152 5683888 +1610536 5684592 1610160 5684024 1609168 5684752 1609144 5684888 +1610576 5683944 1610528 5683880 1610152 5683888 1610160 5684024 +1610152 5683888 1610128 5683904 1610160 5684024 1610528 5683880 +1610576 5683944 1610528 5683880 1610160 5684024 1610536 5684592 +1610128 5683904 1609032 5684488 1609120 5684624 1610160 5684024 +1609120 5684624 1609168 5684752 1610160 5684024 1609032 5684488 +1610160 5684024 1610152 5683888 1610128 5683904 1609032 5684488 +1610128 5683904 1609464 5683512 1609032 5684488 1610160 5684024 +1609464 5683512 1609360 5683512 1609032 5684488 1610160 5684024 +1610128 5683904 1610128 5683648 1609464 5683512 1610160 5684024 +1609032 5684488 1609120 5684624 1610160 5684024 1609464 5683512 +1610128 5683904 1609464 5683512 1610160 5684024 1610152 5683888 +1610160 5684024 1609168 5684752 1610536 5684592 1610576 5683944 +1609168 5684752 1610536 5684592 1610160 5684024 1609120 5684624 +1610528 5683880 1610496 5683784 1610152 5683888 1610160 5684024 +1610536 5684592 1610672 5683992 1610576 5683944 1610160 5684024 +1609032 5684488 1609072 5684560 1609120 5684624 1610160 5684024 +1610536 5684592 1610288 5684272 1609168 5684752 1609144 5684888 +1610160 5684024 1610288 5684272 1610536 5684592 1610576 5683944 +1610160 5684024 1610288 5684272 1610576 5683944 1610528 5683880 +1610160 5684024 1609168 5684752 1610288 5684272 1610576 5683944 +1609168 5684752 1610288 5684272 1610160 5684024 1609120 5684624 +1610160 5684024 1609032 5684488 1609120 5684624 1610288 5684272 +1610288 5684272 1610576 5683944 1610160 5684024 1609120 5684624 +1610288 5684272 1609168 5684752 1610536 5684592 1610576 5683944 +1609168 5684752 1610536 5684592 1610288 5684272 1609120 5684624 +1610536 5684592 1610672 5683992 1610576 5683944 1610288 5684272 +1610536 5684592 1610744 5684016 1610672 5683992 1610288 5684272 +1610576 5683944 1610160 5684024 1610288 5684272 1610672 5683992 +1610536 5684592 1610672 5683992 1610288 5684272 1609168 5684752 +1610672 5683992 1610400 5684392 1610536 5684592 1610744 5684016 +1610400 5684392 1610288 5684272 1610536 5684592 1610744 5684016 +1610536 5684592 1610400 5684392 1610288 5684272 1609168 5684752 +1610536 5684592 1610744 5684016 1610400 5684392 1609168 5684752 +1610536 5684592 1610400 5684392 1609168 5684752 1609144 5684888 +1610400 5684392 1610672 5683992 1610288 5684272 1609168 5684752 +1610288 5684272 1609120 5684624 1609168 5684752 1610400 5684392 +1610672 5683992 1610288 5684272 1610400 5684392 1610744 5684016 +1610288 5684272 1610400 5684392 1610672 5683992 1610576 5683944 +1610288 5684272 1610400 5684392 1610576 5683944 1610160 5684024 +1610288 5684272 1609168 5684752 1610400 5684392 1610576 5683944 +1610400 5684392 1610744 5684016 1610672 5683992 1610576 5683944 +1610536 5684592 1610832 5684024 1610744 5684016 1610400 5684392 +1663880 5646248 1623272 5697000 1623408 5701720 1623576 5701960 +1663880 5646248 1615488 5689272 1623272 5697000 1623576 5701960 +1663880 5646248 1623272 5697000 1623576 5701960 1623840 5702400 +1663880 5646248 1615488 5689272 1623272 5697000 1623840 5702400 +1623272 5697000 1623408 5701720 1623576 5701960 1623840 5702400 +1663880 5646248 1623272 5697000 1623840 5702400 1663944 5646256 +1663880 5646248 1615488 5689272 1623272 5697000 1663944 5646256 +1623272 5697000 1623576 5701960 1623840 5702400 1663944 5646256 +1623840 5702400 1623944 5702640 1663944 5646256 1623272 5697000 +1623840 5702400 1623944 5702640 1623272 5697000 1623576 5701960 +1663944 5646256 1663880 5646248 1623272 5697000 1623944 5702640 +1623944 5702640 1627448 5719792 1663944 5646256 1623272 5697000 +1623408 5701720 1623272 5697000 1615488 5689272 1623296 5701624 +1615488 5689272 1615488 5689328 1623296 5701624 1623272 5697000 +1623296 5701624 1623408 5701720 1623272 5697000 1615488 5689328 +1623272 5697000 1663880 5646248 1615488 5689272 1615488 5689328 +1615488 5689272 1623272 5697000 1663880 5646248 1615440 5689168 +1623272 5697000 1663944 5646256 1663880 5646248 1615440 5689168 +1663880 5646248 1663776 5646144 1615440 5689168 1623272 5697000 +1615488 5689272 1615488 5689328 1623272 5697000 1615440 5689168 +1623272 5697000 1623296 5701624 1623408 5701720 1623576 5701960 +1615488 5689328 1623192 5701576 1623296 5701624 1623272 5697000 +1623296 5701624 1623408 5701720 1623272 5697000 1623192 5701576 +1615488 5689328 1623192 5701576 1623272 5697000 1615488 5689272 +1615488 5689328 1623016 5701528 1623192 5701576 1623272 5697000 +1615488 5689328 1623016 5701528 1623272 5697000 1615488 5689272 +1615488 5689328 1615632 5696264 1623016 5701528 1623272 5697000 +1615488 5689328 1615632 5696264 1623272 5697000 1615488 5689272 +1623016 5701528 1623192 5701576 1623272 5697000 1615632 5696264 +1615488 5689328 1615512 5696024 1615632 5696264 1623272 5697000 +1615488 5689328 1615512 5696024 1623272 5697000 1615488 5689272 +1615632 5696264 1623016 5701528 1623272 5697000 1615512 5696024 +1615488 5689328 1615376 5695816 1615512 5696024 1623272 5697000 +1615488 5689328 1615376 5695816 1623272 5697000 1615488 5689272 +1615512 5696024 1615632 5696264 1623272 5697000 1615376 5695816 +1615488 5689328 1615200 5695576 1615376 5695816 1623272 5697000 +1615632 5696264 1621712 5701344 1623016 5701528 1623272 5697000 +1623016 5701528 1623192 5701576 1623272 5697000 1621712 5701344 +1615632 5696264 1621712 5701344 1623272 5697000 1615512 5696024 +1621712 5701344 1622880 5701536 1623016 5701528 1623272 5697000 +1623016 5701528 1623192 5701576 1623272 5697000 1622880 5701536 +1621712 5701344 1622880 5701536 1623272 5697000 1615632 5696264 +1615632 5696264 1615680 5696424 1621712 5701344 1623272 5697000 +1615680 5696424 1616624 5698656 1621712 5701344 1623272 5697000 +1616624 5698656 1621576 5701360 1621712 5701344 1623272 5697000 +1616624 5698656 1621576 5701360 1623272 5697000 1615680 5696424 +1616624 5698656 1616624 5698800 1621576 5701360 1623272 5697000 +1615680 5696424 1615696 5696632 1616624 5698656 1623272 5697000 +1615632 5696264 1615680 5696424 1623272 5697000 1615512 5696024 +1621712 5701344 1622880 5701536 1623272 5697000 1621576 5701360 +1615680 5696424 1616624 5698656 1623272 5697000 1615632 5696264 +1621712 5701344 1621816 5701384 1622880 5701536 1623272 5697000 +1621816 5701384 1622664 5701568 1622880 5701536 1623272 5697000 +1622880 5701536 1623016 5701528 1623272 5697000 1621816 5701384 +1621712 5701344 1621816 5701384 1623272 5697000 1621576 5701360 +1623192 5701576 1623296 5701624 1623272 5697000 1623016 5701528 +1623272 5697000 1623304 5696976 1663944 5646256 1663880 5646248 +1623272 5697000 1623304 5696976 1663880 5646248 1615440 5689168 +1623304 5696976 1663944 5646256 1663880 5646248 1615440 5689168 +1623944 5702640 1623304 5696976 1623272 5697000 1623840 5702400 +1623272 5697000 1623576 5701960 1623840 5702400 1623304 5696976 +1623272 5697000 1623408 5701720 1623576 5701960 1623304 5696976 +1623576 5701960 1623840 5702400 1623304 5696976 1623408 5701720 +1623840 5702400 1623944 5702640 1623304 5696976 1623576 5701960 +1663944 5646256 1623304 5696976 1623944 5702640 1627448 5719792 +1663880 5646248 1663776 5646144 1615440 5689168 1623304 5696976 +1623304 5696976 1623944 5702640 1663944 5646256 1663880 5646248 +1623944 5702640 1663944 5646256 1623304 5696976 1623840 5702400 +1623272 5697000 1623304 5696976 1615440 5689168 1615488 5689272 +1623304 5696976 1663880 5646248 1615440 5689168 1615488 5689272 +1623272 5697000 1623304 5696976 1615488 5689272 1615488 5689328 +1623272 5697000 1623304 5696976 1615488 5689328 1615376 5695816 +1623304 5696976 1615440 5689168 1615488 5689272 1615488 5689328 +1623272 5697000 1623296 5701624 1623408 5701720 1623304 5696976 +1623408 5701720 1623576 5701960 1623304 5696976 1623296 5701624 +1623272 5697000 1623192 5701576 1623296 5701624 1623304 5696976 +1623272 5697000 1623296 5701624 1623304 5696976 1615488 5689328 +1663944 5646256 1623376 5696968 1623944 5702640 1627448 5719792 +1623304 5696976 1623376 5696968 1663944 5646256 1663880 5646248 +1623304 5696976 1623376 5696968 1663880 5646248 1615440 5689168 +1623304 5696976 1623376 5696968 1615440 5689168 1615488 5689272 +1623376 5696968 1663880 5646248 1615440 5689168 1615488 5689272 +1663880 5646248 1663776 5646144 1615440 5689168 1623376 5696968 +1623376 5696968 1663944 5646256 1663880 5646248 1615440 5689168 +1623944 5702640 1623376 5696968 1623304 5696976 1623840 5702400 +1623304 5696976 1623576 5701960 1623840 5702400 1623376 5696968 +1623304 5696976 1623408 5701720 1623576 5701960 1623376 5696968 +1623304 5696976 1623296 5701624 1623408 5701720 1623376 5696968 +1623408 5701720 1623576 5701960 1623376 5696968 1623296 5701624 +1623576 5701960 1623840 5702400 1623376 5696968 1623408 5701720 +1623304 5696976 1623376 5696968 1615488 5689272 1615488 5689328 +1623376 5696968 1615440 5689168 1615488 5689272 1615488 5689328 +1623304 5696976 1623376 5696968 1615488 5689328 1623272 5697000 +1623944 5702640 1663944 5646256 1623376 5696968 1623840 5702400 +1623376 5696968 1623944 5702640 1663944 5646256 1663880 5646248 +1623840 5702400 1623944 5702640 1623376 5696968 1623576 5701960 +1623304 5696976 1623296 5701624 1623376 5696968 1615488 5689328 +1623304 5696976 1623272 5697000 1623296 5701624 1623376 5696968 +1623296 5701624 1623408 5701720 1623376 5696968 1623272 5697000 +1623272 5697000 1623192 5701576 1623296 5701624 1623376 5696968 +1623296 5701624 1623408 5701720 1623376 5696968 1623192 5701576 +1623304 5696976 1623272 5697000 1623376 5696968 1615488 5689328 +1623272 5697000 1623192 5701576 1623376 5696968 1623304 5696976 +1623272 5697000 1623016 5701528 1623192 5701576 1623376 5696968 +1663944 5646256 1623464 5696976 1623944 5702640 1627448 5719792 +1623944 5702640 1623464 5696976 1623376 5696968 1623840 5702400 +1623464 5696976 1663944 5646256 1623376 5696968 1623840 5702400 +1623376 5696968 1623464 5696976 1663944 5646256 1663880 5646248 +1623376 5696968 1623464 5696976 1663880 5646248 1615440 5689168 +1623376 5696968 1623464 5696976 1615440 5689168 1615488 5689272 +1623376 5696968 1623464 5696976 1615488 5689272 1615488 5689328 +1663880 5646248 1663776 5646144 1615440 5689168 1623464 5696976 +1623464 5696976 1663880 5646248 1615440 5689168 1615488 5689272 +1623376 5696968 1623840 5702400 1623464 5696976 1615488 5689272 +1623464 5696976 1623944 5702640 1663944 5646256 1663880 5646248 +1623464 5696976 1663944 5646256 1663880 5646248 1615440 5689168 +1623376 5696968 1623576 5701960 1623840 5702400 1623464 5696976 +1623376 5696968 1623408 5701720 1623576 5701960 1623464 5696976 +1623376 5696968 1623296 5701624 1623408 5701720 1623464 5696976 +1623376 5696968 1623192 5701576 1623296 5701624 1623464 5696976 +1623296 5701624 1623408 5701720 1623464 5696976 1623192 5701576 +1623408 5701720 1623576 5701960 1623464 5696976 1623296 5701624 +1623376 5696968 1623272 5697000 1623192 5701576 1623464 5696976 +1623192 5701576 1623296 5701624 1623464 5696976 1623272 5697000 +1623840 5702400 1623944 5702640 1623464 5696976 1623576 5701960 +1623376 5696968 1623272 5697000 1623464 5696976 1615488 5689272 +1623576 5701960 1623840 5702400 1623464 5696976 1623408 5701720 +1623376 5696968 1623304 5696976 1623272 5697000 1623464 5696976 +1623944 5702640 1663944 5646256 1623464 5696976 1623840 5702400 +1623272 5697000 1623016 5701528 1623192 5701576 1623464 5696976 +1623192 5701576 1623296 5701624 1623464 5696976 1623016 5701528 +1623272 5697000 1623016 5701528 1623464 5696976 1623376 5696968 +1623272 5697000 1622880 5701536 1623016 5701528 1623464 5696976 +1663944 5646256 1623496 5696992 1623944 5702640 1627448 5719792 +1623464 5696976 1623496 5696992 1663944 5646256 1663880 5646248 +1623464 5696976 1623496 5696992 1663880 5646248 1615440 5689168 +1663880 5646248 1663776 5646144 1615440 5689168 1623496 5696992 +1623464 5696976 1623496 5696992 1615440 5689168 1615488 5689272 +1623496 5696992 1663944 5646256 1663880 5646248 1615440 5689168 +1623464 5696976 1623944 5702640 1623496 5696992 1615440 5689168 +1623944 5702640 1623496 5696992 1623464 5696976 1623840 5702400 +1623464 5696976 1623576 5701960 1623840 5702400 1623496 5696992 +1623464 5696976 1623408 5701720 1623576 5701960 1623496 5696992 +1623464 5696976 1623296 5701624 1623408 5701720 1623496 5696992 +1623464 5696976 1623192 5701576 1623296 5701624 1623496 5696992 +1623464 5696976 1623016 5701528 1623192 5701576 1623496 5696992 +1623192 5701576 1623296 5701624 1623496 5696992 1623016 5701528 +1623296 5701624 1623408 5701720 1623496 5696992 1623192 5701576 +1623576 5701960 1623840 5702400 1623496 5696992 1623408 5701720 +1623408 5701720 1623576 5701960 1623496 5696992 1623296 5701624 +1623944 5702640 1663944 5646256 1623496 5696992 1623840 5702400 +1623496 5696992 1615440 5689168 1623464 5696976 1623016 5701528 +1623840 5702400 1623944 5702640 1623496 5696992 1623576 5701960 +1623496 5696992 1623944 5702640 1663944 5646256 1663880 5646248 +1623464 5696976 1623272 5697000 1623016 5701528 1623496 5696992 +1623016 5701528 1623192 5701576 1623496 5696992 1623272 5697000 +1623464 5696976 1623376 5696968 1623272 5697000 1623496 5696992 +1623272 5697000 1622880 5701536 1623016 5701528 1623496 5696992 +1623376 5696968 1623304 5696976 1623272 5697000 1623496 5696992 +1623464 5696976 1623376 5696968 1623496 5696992 1615440 5689168 +1623272 5697000 1623016 5701528 1623496 5696992 1623376 5696968 +1663944 5646256 1623536 5697008 1623944 5702640 1627448 5719792 +1623944 5702640 1623536 5697008 1623496 5696992 1623840 5702400 +1623944 5702640 1663944 5646256 1623536 5697008 1623840 5702400 +1623536 5697008 1663944 5646256 1623496 5696992 1623840 5702400 +1623496 5696992 1623576 5701960 1623840 5702400 1623536 5697008 +1623496 5696992 1623408 5701720 1623576 5701960 1623536 5697008 +1623496 5696992 1623296 5701624 1623408 5701720 1623536 5697008 +1623496 5696992 1623192 5701576 1623296 5701624 1623536 5697008 +1623496 5696992 1623016 5701528 1623192 5701576 1623536 5697008 +1623496 5696992 1623272 5697000 1623016 5701528 1623536 5697008 +1623016 5701528 1623192 5701576 1623536 5697008 1623272 5697000 +1623192 5701576 1623296 5701624 1623536 5697008 1623016 5701528 +1623272 5697000 1622880 5701536 1623016 5701528 1623536 5697008 +1623408 5701720 1623576 5701960 1623536 5697008 1623296 5701624 +1623296 5701624 1623408 5701720 1623536 5697008 1623192 5701576 +1623840 5702400 1623944 5702640 1623536 5697008 1623576 5701960 +1623496 5696992 1623272 5697000 1623536 5697008 1663944 5646256 +1623576 5701960 1623840 5702400 1623536 5697008 1623408 5701720 +1623496 5696992 1623536 5697008 1663944 5646256 1663880 5646248 +1623496 5696992 1623536 5697008 1663880 5646248 1615440 5689168 +1663880 5646248 1663776 5646144 1615440 5689168 1623536 5697008 +1623496 5696992 1623536 5697008 1615440 5689168 1623464 5696976 +1615440 5689168 1615488 5689272 1623464 5696976 1623536 5697008 +1623536 5697008 1663880 5646248 1615440 5689168 1623464 5696976 +1623496 5696992 1623272 5697000 1623536 5697008 1623464 5696976 +1623536 5697008 1623944 5702640 1663944 5646256 1663880 5646248 +1623536 5697008 1663944 5646256 1663880 5646248 1615440 5689168 +1623496 5696992 1623376 5696968 1623272 5697000 1623536 5697008 +1663944 5646256 1623632 5697024 1623944 5702640 1627448 5719792 +1623944 5702640 1623632 5697024 1623536 5697008 1623840 5702400 +1623632 5697024 1663944 5646256 1623536 5697008 1623840 5702400 +1623944 5702640 1663944 5646256 1623632 5697024 1623840 5702400 +1623536 5697008 1623576 5701960 1623840 5702400 1623632 5697024 +1623840 5702400 1623944 5702640 1623632 5697024 1623576 5701960 +1623536 5697008 1623576 5701960 1623632 5697024 1663944 5646256 +1623536 5697008 1623632 5697024 1663944 5646256 1663880 5646248 +1623536 5697008 1623576 5701960 1623632 5697024 1663880 5646248 +1623632 5697024 1623944 5702640 1663944 5646256 1663880 5646248 +1623536 5697008 1623632 5697024 1663880 5646248 1615440 5689168 +1663880 5646248 1663776 5646144 1615440 5689168 1623632 5697024 +1623536 5697008 1623576 5701960 1623632 5697024 1615440 5689168 +1623536 5697008 1623632 5697024 1615440 5689168 1623464 5696976 +1615440 5689168 1615488 5689272 1623464 5696976 1623632 5697024 +1615488 5689272 1623376 5696968 1623464 5696976 1623632 5697024 +1623536 5697008 1623576 5701960 1623632 5697024 1623464 5696976 +1623536 5697008 1623632 5697024 1623464 5696976 1623496 5696992 +1623536 5697008 1623576 5701960 1623632 5697024 1623496 5696992 +1623464 5696976 1623496 5696992 1623632 5697024 1615488 5689272 +1623632 5697024 1663944 5646256 1663880 5646248 1615440 5689168 +1623632 5697024 1663880 5646248 1615440 5689168 1615488 5689272 +1623536 5697008 1623408 5701720 1623576 5701960 1623632 5697024 +1623536 5697008 1623296 5701624 1623408 5701720 1623632 5697024 +1623536 5697008 1623296 5701624 1623632 5697024 1623496 5696992 +1623536 5697008 1623192 5701576 1623296 5701624 1623632 5697024 +1623536 5697008 1623016 5701528 1623192 5701576 1623632 5697024 +1623536 5697008 1623272 5697000 1623016 5701528 1623632 5697024 +1623536 5697008 1623496 5696992 1623272 5697000 1623632 5697024 +1623016 5701528 1623192 5701576 1623632 5697024 1623272 5697000 +1623272 5697000 1622880 5701536 1623016 5701528 1623632 5697024 +1623296 5701624 1623408 5701720 1623632 5697024 1623192 5701576 +1623536 5697008 1623272 5697000 1623632 5697024 1623496 5696992 +1623192 5701576 1623296 5701624 1623632 5697024 1623016 5701528 +1623576 5701960 1623840 5702400 1623632 5697024 1623408 5701720 +1623408 5701720 1623576 5701960 1623632 5697024 1623296 5701624 +1663944 5646256 1623704 5697048 1623944 5702640 1627448 5719792 +1623632 5697024 1623704 5697048 1663944 5646256 1663880 5646248 +1623632 5697024 1623944 5702640 1623704 5697048 1663880 5646248 +1623944 5702640 1623704 5697048 1623632 5697024 1623840 5702400 +1623632 5697024 1623576 5701960 1623840 5702400 1623704 5697048 +1623704 5697048 1663880 5646248 1623632 5697024 1623576 5701960 +1623840 5702400 1623944 5702640 1623704 5697048 1623576 5701960 +1623632 5697024 1623408 5701720 1623576 5701960 1623704 5697048 +1623576 5701960 1623840 5702400 1623704 5697048 1623408 5701720 +1623632 5697024 1623408 5701720 1623704 5697048 1663880 5646248 +1623632 5697024 1623704 5697048 1663880 5646248 1615440 5689168 +1663880 5646248 1663776 5646144 1615440 5689168 1623704 5697048 +1623704 5697048 1663944 5646256 1663880 5646248 1615440 5689168 +1623632 5697024 1623408 5701720 1623704 5697048 1615440 5689168 +1623632 5697024 1623704 5697048 1615440 5689168 1615488 5689272 +1623632 5697024 1623704 5697048 1615488 5689272 1623464 5696976 +1623632 5697024 1623408 5701720 1623704 5697048 1615488 5689272 +1623704 5697048 1663880 5646248 1615440 5689168 1615488 5689272 +1623704 5697048 1623944 5702640 1663944 5646256 1663880 5646248 +1623944 5702640 1663944 5646256 1623704 5697048 1623840 5702400 +1623632 5697024 1623296 5701624 1623408 5701720 1623704 5697048 +1623632 5697024 1623192 5701576 1623296 5701624 1623704 5697048 +1623632 5697024 1623192 5701576 1623704 5697048 1615488 5689272 +1623632 5697024 1623016 5701528 1623192 5701576 1623704 5697048 +1623632 5697024 1623272 5697000 1623016 5701528 1623704 5697048 +1623632 5697024 1623536 5697008 1623272 5697000 1623704 5697048 +1623536 5697008 1623496 5696992 1623272 5697000 1623704 5697048 +1623272 5697000 1623016 5701528 1623704 5697048 1623536 5697008 +1623272 5697000 1622880 5701536 1623016 5701528 1623704 5697048 +1623192 5701576 1623296 5701624 1623704 5697048 1623016 5701528 +1623632 5697024 1623536 5697008 1623704 5697048 1615488 5689272 +1623016 5701528 1623192 5701576 1623704 5697048 1623272 5697000 +1623408 5701720 1623576 5701960 1623704 5697048 1623296 5701624 +1623296 5701624 1623408 5701720 1623704 5697048 1623192 5701576 +1663944 5646256 1623728 5697072 1623944 5702640 1627448 5719792 +1623704 5697048 1623728 5697072 1663944 5646256 1663880 5646248 +1623704 5697048 1623728 5697072 1663880 5646248 1615440 5689168 +1623704 5697048 1623944 5702640 1623728 5697072 1663880 5646248 +1623944 5702640 1623728 5697072 1623704 5697048 1623840 5702400 +1623944 5702640 1663944 5646256 1623728 5697072 1623840 5702400 +1623704 5697048 1623576 5701960 1623840 5702400 1623728 5697072 +1623704 5697048 1623408 5701720 1623576 5701960 1623728 5697072 +1623576 5701960 1623840 5702400 1623728 5697072 1623408 5701720 +1623704 5697048 1623296 5701624 1623408 5701720 1623728 5697072 +1623408 5701720 1623576 5701960 1623728 5697072 1623296 5701624 +1623728 5697072 1663880 5646248 1623704 5697048 1623296 5701624 +1623840 5702400 1623944 5702640 1623728 5697072 1623576 5701960 +1623728 5697072 1623944 5702640 1663944 5646256 1663880 5646248 +1623704 5697048 1623192 5701576 1623296 5701624 1623728 5697072 +1623704 5697048 1623016 5701528 1623192 5701576 1623728 5697072 +1623704 5697048 1623272 5697000 1623016 5701528 1623728 5697072 +1623704 5697048 1623536 5697008 1623272 5697000 1623728 5697072 +1623536 5697008 1623496 5696992 1623272 5697000 1623728 5697072 +1623704 5697048 1623632 5697024 1623536 5697008 1623728 5697072 +1623536 5697008 1623272 5697000 1623728 5697072 1623632 5697024 +1623272 5697000 1622880 5701536 1623016 5701528 1623728 5697072 +1623016 5701528 1623192 5701576 1623728 5697072 1623272 5697000 +1623272 5697000 1623016 5701528 1623728 5697072 1623536 5697008 +1623296 5701624 1623408 5701720 1623728 5697072 1623192 5701576 +1623704 5697048 1623632 5697024 1623728 5697072 1663880 5646248 +1623192 5701576 1623296 5701624 1623728 5697072 1623016 5701528 +1663944 5646256 1623760 5697136 1623944 5702640 1627448 5719792 +1623944 5702640 1623760 5697136 1623728 5697072 1623840 5702400 +1623944 5702640 1663944 5646256 1623760 5697136 1623840 5702400 +1623728 5697072 1623576 5701960 1623840 5702400 1623760 5697136 +1623840 5702400 1623944 5702640 1623760 5697136 1623576 5701960 +1623728 5697072 1623408 5701720 1623576 5701960 1623760 5697136 +1623728 5697072 1623296 5701624 1623408 5701720 1623760 5697136 +1623408 5701720 1623576 5701960 1623760 5697136 1623296 5701624 +1623728 5697072 1623192 5701576 1623296 5701624 1623760 5697136 +1623296 5701624 1623408 5701720 1623760 5697136 1623192 5701576 +1623576 5701960 1623840 5702400 1623760 5697136 1623408 5701720 +1623728 5697072 1623760 5697136 1663944 5646256 1663880 5646248 +1623760 5697136 1623944 5702640 1663944 5646256 1663880 5646248 +1623728 5697072 1623760 5697136 1663880 5646248 1623704 5697048 +1623760 5697136 1663880 5646248 1623728 5697072 1623192 5701576 +1623728 5697072 1623016 5701528 1623192 5701576 1623760 5697136 +1623728 5697072 1623272 5697000 1623016 5701528 1623760 5697136 +1623272 5697000 1622880 5701536 1623016 5701528 1623760 5697136 +1623728 5697072 1623536 5697008 1623272 5697000 1623760 5697136 +1623536 5697008 1623496 5696992 1623272 5697000 1623760 5697136 +1623728 5697072 1623632 5697024 1623536 5697008 1623760 5697136 +1623728 5697072 1623704 5697048 1623632 5697024 1623760 5697136 +1623272 5697000 1623016 5701528 1623760 5697136 1623536 5697008 +1623536 5697008 1623272 5697000 1623760 5697136 1623632 5697024 +1623192 5701576 1623296 5701624 1623760 5697136 1623016 5701528 +1623728 5697072 1623632 5697024 1623760 5697136 1663880 5646248 +1623016 5701528 1623192 5701576 1623760 5697136 1623272 5697000 +1623760 5697136 1623760 5697304 1623840 5702400 1623944 5702640 +1623760 5697136 1623576 5701960 1623760 5697304 1623944 5702640 +1623760 5697136 1623760 5697304 1623944 5702640 1663944 5646256 +1623944 5702640 1627448 5719792 1663944 5646256 1623760 5697304 +1623760 5697304 1623840 5702400 1623944 5702640 1663944 5646256 +1623760 5697136 1623760 5697304 1663944 5646256 1663880 5646248 +1623760 5697136 1623576 5701960 1623760 5697304 1663944 5646256 +1623760 5697304 1623576 5701960 1623840 5702400 1623944 5702640 +1623576 5701960 1623760 5697304 1623760 5697136 1623408 5701720 +1623760 5697304 1663944 5646256 1623760 5697136 1623408 5701720 +1623760 5697136 1623296 5701624 1623408 5701720 1623760 5697304 +1623760 5697136 1623296 5701624 1623760 5697304 1663944 5646256 +1623760 5697136 1623192 5701576 1623296 5701624 1623760 5697304 +1623760 5697136 1623192 5701576 1623760 5697304 1663944 5646256 +1623296 5701624 1623408 5701720 1623760 5697304 1623192 5701576 +1623576 5701960 1623840 5702400 1623760 5697304 1623408 5701720 +1623760 5697136 1623016 5701528 1623192 5701576 1623760 5697304 +1623760 5697136 1623016 5701528 1623760 5697304 1663944 5646256 +1623192 5701576 1623296 5701624 1623760 5697304 1623016 5701528 +1623408 5701720 1623576 5701960 1623760 5697304 1623296 5701624 +1623760 5697136 1623272 5697000 1623016 5701528 1623760 5697304 +1623272 5697000 1622880 5701536 1623016 5701528 1623760 5697304 +1623760 5697136 1623536 5697008 1623272 5697000 1623760 5697304 +1623536 5697008 1623496 5696992 1623272 5697000 1623760 5697304 +1623760 5697136 1623536 5697008 1623760 5697304 1663944 5646256 +1623760 5697136 1623632 5697024 1623536 5697008 1623760 5697304 +1623760 5697136 1623728 5697072 1623632 5697024 1623760 5697304 +1623536 5697008 1623272 5697000 1623760 5697304 1623632 5697024 +1623760 5697136 1623632 5697024 1623760 5697304 1663944 5646256 +1623272 5697000 1621816 5701384 1622880 5701536 1623760 5697304 +1621816 5701384 1622664 5701568 1622880 5701536 1623760 5697304 +1622880 5701536 1623016 5701528 1623760 5697304 1621816 5701384 +1623016 5701528 1623192 5701576 1623760 5697304 1622880 5701536 +1623272 5697000 1621816 5701384 1623760 5697304 1623536 5697008 +1623272 5697000 1621712 5701344 1621816 5701384 1623760 5697304 +1621816 5701384 1622880 5701536 1623760 5697304 1621712 5701344 +1623272 5697000 1621576 5701360 1621712 5701344 1623760 5697304 +1623272 5697000 1621712 5701344 1623760 5697304 1623536 5697008 +1622880 5701536 1623720 5697416 1621816 5701384 1622664 5701568 +1623760 5697304 1623720 5697416 1622880 5701536 1623016 5701528 +1623760 5697304 1621816 5701384 1623720 5697416 1623016 5701528 +1623720 5697416 1621816 5701384 1622880 5701536 1623016 5701528 +1621816 5701384 1623720 5697416 1623760 5697304 1621712 5701344 +1623720 5697416 1623016 5701528 1623760 5697304 1621712 5701344 +1621816 5701384 1622880 5701536 1623720 5697416 1621712 5701344 +1623760 5697304 1623720 5697416 1623016 5701528 1623192 5701576 +1623720 5697416 1622880 5701536 1623016 5701528 1623192 5701576 +1623760 5697304 1623720 5697416 1623192 5701576 1623296 5701624 +1623760 5697304 1623720 5697416 1623296 5701624 1623408 5701720 +1623720 5697416 1623192 5701576 1623296 5701624 1623408 5701720 +1623760 5697304 1621712 5701344 1623720 5697416 1623408 5701720 +1623720 5697416 1623016 5701528 1623192 5701576 1623296 5701624 +1623760 5697304 1623720 5697416 1623408 5701720 1623576 5701960 +1623720 5697416 1623296 5701624 1623408 5701720 1623576 5701960 +1623760 5697304 1621712 5701344 1623720 5697416 1623576 5701960 +1623760 5697304 1623720 5697416 1623576 5701960 1623840 5702400 +1623760 5697304 1623720 5697416 1623840 5702400 1623944 5702640 +1623760 5697304 1623720 5697416 1623944 5702640 1663944 5646256 +1623760 5697304 1621712 5701344 1623720 5697416 1623944 5702640 +1623720 5697416 1623576 5701960 1623840 5702400 1623944 5702640 +1623720 5697416 1623408 5701720 1623576 5701960 1623840 5702400 +1623760 5697304 1623272 5697000 1621712 5701344 1623720 5697416 +1623760 5697304 1623272 5697000 1623720 5697416 1623944 5702640 +1621712 5701344 1621816 5701384 1623720 5697416 1623272 5697000 +1623272 5697000 1621576 5701360 1621712 5701344 1623720 5697416 +1623760 5697304 1623536 5697008 1623272 5697000 1623720 5697416 +1623536 5697008 1623496 5696992 1623272 5697000 1623720 5697416 +1623760 5697304 1623632 5697024 1623536 5697008 1623720 5697416 +1623760 5697304 1623536 5697008 1623720 5697416 1623944 5702640 +1623272 5697000 1621712 5701344 1623720 5697416 1623536 5697008 +1622880 5701536 1623696 5697472 1621816 5701384 1622664 5701568 +1623720 5697416 1623696 5697472 1622880 5701536 1623016 5701528 +1623696 5697472 1621816 5701384 1622880 5701536 1623016 5701528 +1623720 5697416 1623696 5697472 1623016 5701528 1623192 5701576 +1623696 5697472 1622880 5701536 1623016 5701528 1623192 5701576 +1623720 5697416 1621816 5701384 1623696 5697472 1623192 5701576 +1621816 5701384 1623696 5697472 1623720 5697416 1621712 5701344 +1621816 5701384 1622880 5701536 1623696 5697472 1621712 5701344 +1623696 5697472 1623192 5701576 1623720 5697416 1621712 5701344 +1623720 5697416 1623272 5697000 1621712 5701344 1623696 5697472 +1623720 5697416 1623272 5697000 1623696 5697472 1623192 5701576 +1621712 5701344 1621816 5701384 1623696 5697472 1623272 5697000 +1623720 5697416 1623696 5697472 1623192 5701576 1623296 5701624 +1623696 5697472 1623016 5701528 1623192 5701576 1623296 5701624 +1623720 5697416 1623696 5697472 1623296 5701624 1623408 5701720 +1623720 5697416 1623696 5697472 1623408 5701720 1623576 5701960 +1623696 5697472 1623296 5701624 1623408 5701720 1623576 5701960 +1623720 5697416 1623272 5697000 1623696 5697472 1623576 5701960 +1623696 5697472 1623192 5701576 1623296 5701624 1623408 5701720 +1623720 5697416 1623696 5697472 1623576 5701960 1623840 5702400 +1623696 5697472 1623408 5701720 1623576 5701960 1623840 5702400 +1623720 5697416 1623696 5697472 1623840 5702400 1623944 5702640 +1623720 5697416 1623272 5697000 1623696 5697472 1623840 5702400 +1623272 5697000 1621576 5701360 1621712 5701344 1623696 5697472 +1623720 5697416 1623536 5697008 1623272 5697000 1623696 5697472 +1623536 5697008 1623496 5696992 1623272 5697000 1623696 5697472 +1623720 5697416 1623536 5697008 1623696 5697472 1623840 5702400 +1623272 5697000 1621712 5701344 1623696 5697472 1623536 5697008 +1623720 5697416 1623760 5697304 1623536 5697008 1623696 5697472 +1623696 5697472 1623672 5697496 1621712 5701344 1621816 5701384 +1623696 5697472 1623272 5697000 1623672 5697496 1621816 5701384 +1623696 5697472 1623672 5697496 1621816 5701384 1622880 5701536 +1621816 5701384 1622664 5701568 1622880 5701536 1623672 5697496 +1623696 5697472 1623672 5697496 1622880 5701536 1623016 5701528 +1623696 5697472 1623272 5697000 1623672 5697496 1623016 5701528 +1623672 5697496 1621816 5701384 1622880 5701536 1623016 5701528 +1623672 5697496 1623272 5697000 1621712 5701344 1621816 5701384 +1623696 5697472 1623672 5697496 1623016 5701528 1623192 5701576 +1623672 5697496 1622880 5701536 1623016 5701528 1623192 5701576 +1623696 5697472 1623272 5697000 1623672 5697496 1623192 5701576 +1623696 5697472 1623672 5697496 1623192 5701576 1623296 5701624 +1623696 5697472 1623272 5697000 1623672 5697496 1623296 5701624 +1623672 5697496 1623016 5701528 1623192 5701576 1623296 5701624 +1623672 5697496 1621712 5701344 1621816 5701384 1622880 5701536 +1623272 5697000 1623672 5697496 1623696 5697472 1623536 5697008 +1623272 5697000 1623672 5697496 1623536 5697008 1623496 5696992 +1623672 5697496 1623296 5701624 1623696 5697472 1623536 5697008 +1623272 5697000 1621712 5701344 1623672 5697496 1623536 5697008 +1623696 5697472 1623672 5697496 1623296 5701624 1623408 5701720 +1623696 5697472 1623536 5697008 1623672 5697496 1623408 5701720 +1623672 5697496 1623192 5701576 1623296 5701624 1623408 5701720 +1623696 5697472 1623672 5697496 1623408 5701720 1623576 5701960 +1621712 5701344 1623672 5697496 1623272 5697000 1621576 5701360 +1623696 5697472 1623720 5697416 1623536 5697008 1623672 5697496 +1623696 5697472 1623720 5697416 1623672 5697496 1623408 5701720 +1623536 5697008 1623272 5697000 1623672 5697496 1623720 5697416 +1623720 5697416 1623760 5697304 1623536 5697008 1623672 5697496 +1623672 5697496 1623648 5697496 1621712 5701344 1621816 5701384 +1623672 5697496 1623272 5697000 1623648 5697496 1621816 5701384 +1623272 5697000 1623648 5697496 1623672 5697496 1623536 5697008 +1623272 5697000 1623648 5697496 1623536 5697008 1623496 5696992 +1623648 5697496 1621816 5701384 1623672 5697496 1623536 5697008 +1623648 5697496 1623672 5697496 1623536 5697008 1623496 5696992 +1623648 5697496 1623272 5697000 1621712 5701344 1621816 5701384 +1623272 5697000 1621712 5701344 1623648 5697496 1623496 5696992 +1623672 5697496 1623648 5697496 1621816 5701384 1622880 5701536 +1621816 5701384 1622664 5701568 1622880 5701536 1623648 5697496 +1623672 5697496 1623648 5697496 1622880 5701536 1623016 5701528 +1623672 5697496 1623648 5697496 1623016 5701528 1623192 5701576 +1623648 5697496 1622880 5701536 1623016 5701528 1623192 5701576 +1623648 5697496 1621712 5701344 1621816 5701384 1622880 5701536 +1623672 5697496 1623536 5697008 1623648 5697496 1623192 5701576 +1623672 5697496 1623648 5697496 1623192 5701576 1623296 5701624 +1623648 5697496 1621816 5701384 1622880 5701536 1623016 5701528 +1623672 5697496 1623720 5697416 1623536 5697008 1623648 5697496 +1623672 5697496 1623720 5697416 1623648 5697496 1623192 5701576 +1623536 5697008 1623496 5696992 1623648 5697496 1623720 5697416 +1621712 5701344 1623648 5697496 1623272 5697000 1621576 5701360 +1623720 5697416 1623760 5697304 1623536 5697008 1623648 5697496 +1623672 5697496 1623696 5697472 1623720 5697416 1623648 5697496 +1623672 5697496 1623696 5697472 1623648 5697496 1623192 5701576 +1623720 5697416 1623536 5697008 1623648 5697496 1623696 5697472 +1623272 5697000 1623648 5697496 1623496 5696992 1623376 5696968 +1623648 5697496 1623568 5697456 1621712 5701344 1621816 5701384 +1623648 5697496 1623568 5697456 1621816 5701384 1622880 5701536 +1621816 5701384 1622664 5701568 1622880 5701536 1623568 5697456 +1623568 5697456 1621712 5701344 1621816 5701384 1622880 5701536 +1623648 5697496 1623272 5697000 1623568 5697456 1622880 5701536 +1623272 5697000 1623568 5697456 1623648 5697496 1623496 5696992 +1623648 5697496 1623536 5697008 1623496 5696992 1623568 5697456 +1623648 5697496 1623720 5697416 1623536 5697008 1623568 5697456 +1623536 5697008 1623496 5696992 1623568 5697456 1623720 5697416 +1623568 5697456 1622880 5701536 1623648 5697496 1623720 5697416 +1623496 5696992 1623272 5697000 1623568 5697456 1623536 5697008 +1623568 5697456 1623272 5697000 1621712 5701344 1621816 5701384 +1623648 5697496 1623568 5697456 1622880 5701536 1623016 5701528 +1623272 5697000 1621712 5701344 1623568 5697456 1623496 5696992 +1623648 5697496 1623696 5697472 1623720 5697416 1623568 5697456 +1623720 5697416 1623536 5697008 1623568 5697456 1623696 5697472 +1623648 5697496 1623696 5697472 1623568 5697456 1622880 5701536 +1621712 5701344 1623568 5697456 1623272 5697000 1621576 5701360 +1621712 5701344 1621816 5701384 1623568 5697456 1621576 5701360 +1623272 5697000 1616624 5698656 1621576 5701360 1623568 5697456 +1623568 5697456 1623496 5696992 1623272 5697000 1621576 5701360 +1623720 5697416 1623760 5697304 1623536 5697008 1623568 5697456 +1623536 5697008 1623496 5696992 1623568 5697456 1623760 5697304 +1623720 5697416 1623760 5697304 1623568 5697456 1623696 5697472 +1623760 5697304 1623632 5697024 1623536 5697008 1623568 5697456 +1623648 5697496 1623672 5697496 1623696 5697472 1623568 5697456 +1623272 5697000 1623568 5697456 1623496 5696992 1623376 5696968 +1621576 5701360 1623480 5697392 1623272 5697000 1616624 5698656 +1623272 5697000 1623480 5697392 1623568 5697456 1623496 5696992 +1623568 5697456 1623536 5697008 1623496 5696992 1623480 5697392 +1623568 5697456 1623760 5697304 1623536 5697008 1623480 5697392 +1623536 5697008 1623496 5696992 1623480 5697392 1623760 5697304 +1623760 5697304 1623632 5697024 1623536 5697008 1623480 5697392 +1623760 5697304 1623632 5697024 1623480 5697392 1623568 5697456 +1623536 5697008 1623496 5696992 1623480 5697392 1623632 5697024 +1623760 5697304 1623760 5697136 1623632 5697024 1623480 5697392 +1623760 5697304 1623760 5697136 1623480 5697392 1623568 5697456 +1623760 5697136 1623728 5697072 1623632 5697024 1623480 5697392 +1623632 5697024 1623536 5697008 1623480 5697392 1623760 5697136 +1623480 5697392 1621576 5701360 1623568 5697456 1623760 5697304 +1623496 5696992 1623272 5697000 1623480 5697392 1623536 5697008 +1623272 5697000 1621576 5701360 1623480 5697392 1623496 5696992 +1623568 5697456 1623480 5697392 1621576 5701360 1621712 5701344 +1623568 5697456 1623480 5697392 1621712 5701344 1621816 5701384 +1623568 5697456 1623760 5697304 1623480 5697392 1621712 5701344 +1623480 5697392 1623272 5697000 1621576 5701360 1621712 5701344 +1623568 5697456 1623720 5697416 1623760 5697304 1623480 5697392 +1623272 5697000 1623480 5697392 1623496 5696992 1623376 5696968 +1623496 5696992 1623464 5696976 1623376 5696968 1623480 5697392 +1623480 5697392 1623536 5697008 1623496 5696992 1623376 5696968 +1623272 5697000 1621576 5701360 1623480 5697392 1623376 5696968 +1623272 5697000 1623480 5697392 1623376 5696968 1623304 5696976 +1621576 5701360 1623432 5697336 1623272 5697000 1616624 5698656 +1623480 5697392 1623432 5697336 1621576 5701360 1621712 5701344 +1623432 5697336 1623272 5697000 1621576 5701360 1621712 5701344 +1623480 5697392 1623272 5697000 1623432 5697336 1621712 5701344 +1623272 5697000 1623432 5697336 1623480 5697392 1623376 5696968 +1623272 5697000 1621576 5701360 1623432 5697336 1623376 5696968 +1623432 5697336 1621712 5701344 1623480 5697392 1623376 5696968 +1623272 5697000 1623432 5697336 1623376 5696968 1623304 5696976 +1623480 5697392 1623432 5697336 1621712 5701344 1623568 5697456 +1623480 5697392 1623496 5696992 1623376 5696968 1623432 5697336 +1623496 5696992 1623464 5696976 1623376 5696968 1623432 5697336 +1623480 5697392 1623536 5697008 1623496 5696992 1623432 5697336 +1623480 5697392 1623632 5697024 1623536 5697008 1623432 5697336 +1623480 5697392 1623760 5697136 1623632 5697024 1623432 5697336 +1623760 5697136 1623728 5697072 1623632 5697024 1623432 5697336 +1623632 5697024 1623536 5697008 1623432 5697336 1623760 5697136 +1623480 5697392 1623760 5697304 1623760 5697136 1623432 5697336 +1623480 5697392 1623568 5697456 1623760 5697304 1623432 5697336 +1623760 5697136 1623632 5697024 1623432 5697336 1623760 5697304 +1623536 5697008 1623496 5696992 1623432 5697336 1623632 5697024 +1623480 5697392 1623760 5697304 1623432 5697336 1621712 5701344 +1623376 5696968 1623272 5697000 1623432 5697336 1623496 5696992 +1623496 5696992 1623376 5696968 1623432 5697336 1623536 5697008 +1623432 5697336 1623384 5697304 1621576 5701360 1621712 5701344 +1623432 5697336 1623272 5697000 1623384 5697304 1621712 5701344 +1623272 5697000 1623384 5697304 1623432 5697336 1623376 5696968 +1623384 5697304 1621712 5701344 1623432 5697336 1623376 5696968 +1623384 5697304 1623272 5697000 1621576 5701360 1621712 5701344 +1621576 5701360 1623384 5697304 1623272 5697000 1616624 5698656 +1623432 5697336 1623384 5697304 1621712 5701344 1623480 5697392 +1623384 5697304 1621576 5701360 1621712 5701344 1623480 5697392 +1623432 5697336 1623376 5696968 1623384 5697304 1623480 5697392 +1623432 5697336 1623496 5696992 1623376 5696968 1623384 5697304 +1623496 5696992 1623464 5696976 1623376 5696968 1623384 5697304 +1623432 5697336 1623496 5696992 1623384 5697304 1623480 5697392 +1623376 5696968 1623272 5697000 1623384 5697304 1623496 5696992 +1623272 5697000 1623384 5697304 1623376 5696968 1623304 5696976 +1621712 5701344 1623568 5697456 1623480 5697392 1623384 5697304 +1623432 5697336 1623536 5697008 1623496 5696992 1623384 5697304 +1623432 5697336 1623536 5697008 1623384 5697304 1623480 5697392 +1623432 5697336 1623632 5697024 1623536 5697008 1623384 5697304 +1623496 5696992 1623376 5696968 1623384 5697304 1623536 5697008 +1623272 5697000 1621576 5701360 1623384 5697304 1623376 5696968 +1623384 5697304 1623312 5697232 1621576 5701360 1621712 5701344 +1623384 5697304 1623312 5697232 1621712 5701344 1623480 5697392 +1623384 5697304 1623272 5697000 1623312 5697232 1621712 5701344 +1621576 5701360 1623312 5697232 1623272 5697000 1616624 5698656 +1623272 5697000 1615680 5696424 1616624 5698656 1623312 5697232 +1621576 5701360 1623312 5697232 1616624 5698656 1616624 5698800 +1623272 5697000 1623312 5697232 1623384 5697304 1623376 5696968 +1623384 5697304 1623496 5696992 1623376 5696968 1623312 5697232 +1623496 5696992 1623464 5696976 1623376 5696968 1623312 5697232 +1623496 5696992 1623464 5696976 1623312 5697232 1623384 5697304 +1623312 5697232 1621712 5701344 1623384 5697304 1623496 5696992 +1623384 5697304 1623536 5697008 1623496 5696992 1623312 5697232 +1623496 5696992 1623464 5696976 1623312 5697232 1623536 5697008 +1623384 5697304 1623536 5697008 1623312 5697232 1621712 5701344 +1623272 5697000 1623312 5697232 1623376 5696968 1623304 5696976 +1623384 5697304 1623432 5697336 1623536 5697008 1623312 5697232 +1623376 5696968 1623272 5697000 1623312 5697232 1623464 5696976 +1623312 5697232 1616624 5698656 1621576 5701360 1621712 5701344 +1623312 5697232 1623376 5696968 1623272 5697000 1616624 5698656 +1616624 5698656 1623264 5697136 1623272 5697000 1615680 5696424 +1623312 5697232 1623264 5697136 1616624 5698656 1621576 5701360 +1616624 5698656 1616624 5698800 1621576 5701360 1623264 5697136 +1623312 5697232 1623264 5697136 1621576 5701360 1621712 5701344 +1623312 5697232 1623272 5697000 1623264 5697136 1621576 5701360 +1623272 5697000 1623264 5697136 1623312 5697232 1623376 5696968 +1623272 5697000 1616624 5698656 1623264 5697136 1623376 5696968 +1623272 5697000 1623264 5697136 1623376 5696968 1623304 5696976 +1623312 5697232 1623464 5696976 1623376 5696968 1623264 5697136 +1623312 5697232 1623496 5696992 1623464 5696976 1623264 5697136 +1623312 5697232 1623536 5697008 1623496 5696992 1623264 5697136 +1623464 5696976 1623376 5696968 1623264 5697136 1623496 5696992 +1623264 5697136 1621576 5701360 1623312 5697232 1623496 5696992 +1623376 5696968 1623272 5697000 1623264 5697136 1623464 5696976 +1623264 5697136 1623272 5697000 1616624 5698656 1621576 5701360 +1663944 5646256 1625104 5698680 1623944 5702640 1627448 5719792 +1623944 5702640 1627384 5719672 1627448 5719792 1625104 5698680 +1623944 5702640 1623888 5702776 1627384 5719672 1625104 5698680 +1627448 5719792 1663944 5646256 1625104 5698680 1627384 5719672 +1625104 5698680 1623760 5697304 1623944 5702640 1627384 5719672 +1627384 5719672 1627400 5719704 1627448 5719792 1625104 5698680 +1663944 5646256 1625104 5698680 1627448 5719792 1629944 5726576 +1625104 5698680 1627384 5719672 1627448 5719792 1629944 5726576 +1627448 5719792 1629736 5726176 1629944 5726576 1625104 5698680 +1663944 5646256 1623760 5697304 1625104 5698680 1629944 5726576 +1623944 5702640 1625104 5698680 1623760 5697304 1623720 5697416 +1623944 5702640 1627384 5719672 1625104 5698680 1623720 5697416 +1625104 5698680 1663944 5646256 1623760 5697304 1623720 5697416 +1623760 5697304 1625104 5698680 1663944 5646256 1623760 5697136 +1623760 5697304 1623720 5697416 1625104 5698680 1623760 5697136 +1625104 5698680 1629944 5726576 1663944 5646256 1623760 5697136 +1663944 5646256 1663880 5646248 1623760 5697136 1625104 5698680 +1663944 5646256 1663880 5646248 1625104 5698680 1629944 5726576 +1623760 5697136 1623760 5697304 1625104 5698680 1663880 5646248 +1623944 5702640 1625104 5698680 1623720 5697416 1623840 5702400 +1623944 5702640 1627384 5719672 1625104 5698680 1623840 5702400 +1625104 5698680 1623760 5697304 1623720 5697416 1623840 5702400 +1623720 5697416 1623696 5697472 1623840 5702400 1625104 5698680 +1623720 5697416 1623696 5697472 1625104 5698680 1623760 5697304 +1623840 5702400 1623944 5702640 1625104 5698680 1623696 5697472 +1663944 5646256 1625104 5698680 1629944 5726576 1743800 5687320 +1623696 5697472 1623576 5701960 1623840 5702400 1625104 5698680 +1623840 5702400 1623944 5702640 1625104 5698680 1623576 5701960 +1623696 5697472 1623408 5701720 1623576 5701960 1625104 5698680 +1623696 5697472 1623672 5697496 1623408 5701720 1625104 5698680 +1623408 5701720 1623576 5701960 1625104 5698680 1623672 5697496 +1623696 5697472 1623672 5697496 1625104 5698680 1623720 5697416 +1623672 5697496 1623296 5701624 1623408 5701720 1625104 5698680 +1623672 5697496 1623192 5701576 1623296 5701624 1625104 5698680 +1623672 5697496 1623192 5701576 1625104 5698680 1623696 5697472 +1623408 5701720 1623576 5701960 1625104 5698680 1623296 5701624 +1623672 5697496 1623648 5697496 1623192 5701576 1625104 5698680 +1623648 5697496 1623016 5701528 1623192 5701576 1625104 5698680 +1623648 5697496 1622880 5701536 1623016 5701528 1625104 5698680 +1623192 5701576 1623296 5701624 1625104 5698680 1623016 5701528 +1623672 5697496 1623648 5697496 1625104 5698680 1623696 5697472 +1623648 5697496 1623016 5701528 1625104 5698680 1623672 5697496 +1623296 5701624 1623408 5701720 1625104 5698680 1623192 5701576 +1623576 5701960 1623840 5702400 1625104 5698680 1623408 5701720 +1663880 5646248 1623728 5697072 1623760 5697136 1625104 5698680 +1663880 5646248 1623728 5697072 1625104 5698680 1663944 5646256 +1623760 5697136 1623760 5697304 1625104 5698680 1623728 5697072 +1663880 5646248 1623704 5697048 1623728 5697072 1625104 5698680 +1623760 5697304 1625032 5698608 1625104 5698680 1623760 5697136 +1625032 5698608 1623720 5697416 1625104 5698680 1623760 5697136 +1623760 5697304 1623720 5697416 1625032 5698608 1623760 5697136 +1625104 5698680 1625032 5698608 1623720 5697416 1623696 5697472 +1625104 5698680 1623760 5697136 1625032 5698608 1623696 5697472 +1625104 5698680 1623728 5697072 1623760 5697136 1625032 5698608 +1625104 5698680 1623728 5697072 1625032 5698608 1623696 5697472 +1623760 5697136 1623760 5697304 1625032 5698608 1623728 5697072 +1625104 5698680 1625032 5698608 1623696 5697472 1623672 5697496 +1625104 5698680 1623728 5697072 1625032 5698608 1623672 5697496 +1625032 5698608 1623720 5697416 1623696 5697472 1623672 5697496 +1625104 5698680 1625032 5698608 1623672 5697496 1623648 5697496 +1625104 5698680 1623728 5697072 1625032 5698608 1623648 5697496 +1625032 5698608 1623696 5697472 1623672 5697496 1623648 5697496 +1625104 5698680 1625032 5698608 1623648 5697496 1623016 5701528 +1625104 5698680 1623728 5697072 1625032 5698608 1623016 5701528 +1625104 5698680 1625032 5698608 1623016 5701528 1623192 5701576 +1625104 5698680 1623728 5697072 1625032 5698608 1623192 5701576 +1623648 5697496 1622880 5701536 1623016 5701528 1625032 5698608 +1625104 5698680 1625032 5698608 1623192 5701576 1623296 5701624 +1625032 5698608 1623672 5697496 1623648 5697496 1623016 5701528 +1625032 5698608 1623648 5697496 1623016 5701528 1623192 5701576 +1625104 5698680 1663880 5646248 1623728 5697072 1625032 5698608 +1625032 5698608 1623760 5697304 1623720 5697416 1623696 5697472 +1663880 5646248 1625048 5698520 1625104 5698680 1663944 5646256 +1625104 5698680 1629944 5726576 1663944 5646256 1625048 5698520 +1623728 5697072 1625048 5698520 1663880 5646248 1623704 5697048 +1625104 5698680 1625048 5698520 1623728 5697072 1625032 5698608 +1625048 5698520 1663880 5646248 1623728 5697072 1625032 5698608 +1623728 5697072 1623760 5697136 1625032 5698608 1625048 5698520 +1623760 5697136 1623760 5697304 1625032 5698608 1625048 5698520 +1623728 5697072 1623760 5697136 1625048 5698520 1663880 5646248 +1623760 5697304 1623720 5697416 1625032 5698608 1625048 5698520 +1623760 5697304 1623720 5697416 1625048 5698520 1623760 5697136 +1623760 5697136 1623760 5697304 1625048 5698520 1623728 5697072 +1625032 5698608 1625104 5698680 1625048 5698520 1623720 5697416 +1663880 5646248 1623728 5697072 1625048 5698520 1663944 5646256 +1625048 5698520 1625032 5698608 1625104 5698680 1663944 5646256 +1623720 5697416 1623696 5697472 1625032 5698608 1625048 5698520 +1623720 5697416 1623696 5697472 1625048 5698520 1623760 5697304 +1623696 5697472 1623672 5697496 1625032 5698608 1625048 5698520 +1623672 5697496 1623648 5697496 1625032 5698608 1625048 5698520 +1625032 5698608 1625104 5698680 1625048 5698520 1623672 5697496 +1623696 5697472 1623672 5697496 1625048 5698520 1623720 5697416 +1663944 5646256 1625128 5698480 1625104 5698680 1629944 5726576 +1625104 5698680 1627448 5719792 1629944 5726576 1625128 5698480 +1625104 5698680 1627384 5719672 1627448 5719792 1625128 5698480 +1627448 5719792 1629736 5726176 1629944 5726576 1625128 5698480 +1629944 5726576 1663944 5646256 1625128 5698480 1627448 5719792 +1663944 5646256 1625048 5698520 1625128 5698480 1629944 5726576 +1625048 5698520 1625128 5698480 1663944 5646256 1663880 5646248 +1625048 5698520 1625104 5698680 1625128 5698480 1663880 5646248 +1625128 5698480 1629944 5726576 1663944 5646256 1663880 5646248 +1663944 5646256 1625128 5698480 1629944 5726576 1743800 5687320 +1625048 5698520 1625128 5698480 1663880 5646248 1623728 5697072 +1625048 5698520 1625128 5698480 1623728 5697072 1623760 5697136 +1625048 5698520 1625104 5698680 1625128 5698480 1623760 5697136 +1625128 5698480 1663944 5646256 1663880 5646248 1623728 5697072 +1625048 5698520 1625128 5698480 1623760 5697136 1623760 5697304 +1625048 5698520 1625128 5698480 1623760 5697304 1623720 5697416 +1625128 5698480 1623728 5697072 1623760 5697136 1623760 5697304 +1625048 5698520 1625104 5698680 1625128 5698480 1623760 5697304 +1663880 5646248 1623704 5697048 1623728 5697072 1625128 5698480 +1625128 5698480 1663880 5646248 1623728 5697072 1623760 5697136 +1625104 5698680 1625128 5698480 1625048 5698520 1625032 5698608 +1625128 5698480 1623760 5697304 1625048 5698520 1625032 5698608 +1625128 5698480 1625032 5698608 1625104 5698680 1627448 5719792 +1629944 5726576 1625240 5698480 1625128 5698480 1627448 5719792 +1625128 5698480 1625104 5698680 1627448 5719792 1625240 5698480 +1625104 5698680 1627384 5719672 1627448 5719792 1625240 5698480 +1625104 5698680 1623944 5702640 1627384 5719672 1625240 5698480 +1623944 5702640 1623888 5702776 1627384 5719672 1625240 5698480 +1627384 5719672 1627448 5719792 1625240 5698480 1623944 5702640 +1625104 5698680 1623840 5702400 1623944 5702640 1625240 5698480 +1627384 5719672 1627400 5719704 1627448 5719792 1625240 5698480 +1625104 5698680 1623944 5702640 1625240 5698480 1625128 5698480 +1629944 5726576 1625240 5698480 1627448 5719792 1629736 5726176 +1627448 5719792 1629944 5726576 1625240 5698480 1627384 5719672 +1625128 5698480 1625240 5698480 1663944 5646256 1663880 5646248 +1625128 5698480 1625240 5698480 1663880 5646248 1623728 5697072 +1625240 5698480 1663944 5646256 1663880 5646248 1623728 5697072 +1663944 5646256 1625240 5698480 1629944 5726576 1743800 5687320 +1663944 5646256 1625240 5698480 1743800 5687320 1664040 5646192 +1629944 5726576 1743888 5687504 1743800 5687320 1625240 5698480 +1663880 5646248 1623704 5697048 1623728 5697072 1625240 5698480 +1663880 5646248 1623704 5697048 1625240 5698480 1663944 5646256 +1623728 5697072 1625128 5698480 1625240 5698480 1623704 5697048 +1663880 5646248 1615440 5689168 1623704 5697048 1625240 5698480 +1625128 5698480 1625240 5698480 1623728 5697072 1623760 5697136 +1625128 5698480 1625240 5698480 1623760 5697136 1623760 5697304 +1625240 5698480 1623704 5697048 1623728 5697072 1623760 5697136 +1625128 5698480 1625032 5698608 1625104 5698680 1625240 5698480 +1625240 5698480 1623760 5697136 1625128 5698480 1625104 5698680 +1625240 5698480 1743800 5687320 1663944 5646256 1663880 5646248 +1629944 5726576 1743800 5687320 1625240 5698480 1627448 5719792 +1743800 5687320 1625560 5698512 1629944 5726576 1743888 5687504 +1625240 5698480 1625560 5698512 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1625560 5698512 +1625560 5698512 1629944 5726576 1743800 5687320 1663944 5646256 +1625240 5698480 1625560 5698512 1663944 5646256 1663880 5646248 +1625240 5698480 1625560 5698512 1663880 5646248 1623704 5697048 +1663880 5646248 1615440 5689168 1623704 5697048 1625560 5698512 +1625560 5698512 1743800 5687320 1663944 5646256 1663880 5646248 +1625240 5698480 1625560 5698512 1623704 5697048 1623728 5697072 +1625560 5698512 1663880 5646248 1623704 5697048 1623728 5697072 +1625240 5698480 1625560 5698512 1623728 5697072 1623760 5697136 +1625560 5698512 1623704 5697048 1623728 5697072 1623760 5697136 +1625240 5698480 1625560 5698512 1623760 5697136 1625128 5698480 +1625560 5698512 1663944 5646256 1663880 5646248 1623704 5697048 +1625240 5698480 1629944 5726576 1625560 5698512 1623760 5697136 +1629944 5726576 1625560 5698512 1625240 5698480 1627448 5719792 +1629944 5726576 1625560 5698512 1627448 5719792 1629736 5726176 +1625240 5698480 1627384 5719672 1627448 5719792 1625560 5698512 +1625240 5698480 1623944 5702640 1627384 5719672 1625560 5698512 +1623944 5702640 1623888 5702776 1627384 5719672 1625560 5698512 +1625240 5698480 1625104 5698680 1623944 5702640 1625560 5698512 +1623944 5702640 1627384 5719672 1625560 5698512 1625104 5698680 +1625104 5698680 1623840 5702400 1623944 5702640 1625560 5698512 +1623944 5702640 1627384 5719672 1625560 5698512 1623840 5702400 +1625104 5698680 1623840 5702400 1625560 5698512 1625240 5698480 +1627384 5719672 1627400 5719704 1627448 5719792 1625560 5698512 +1625240 5698480 1625128 5698480 1625104 5698680 1625560 5698512 +1627384 5719672 1627448 5719792 1625560 5698512 1623944 5702640 +1625104 5698680 1623576 5701960 1623840 5702400 1625560 5698512 +1629944 5726576 1743800 5687320 1625560 5698512 1627448 5719792 +1625560 5698512 1623760 5697136 1625240 5698480 1625104 5698680 +1627448 5719792 1629944 5726576 1625560 5698512 1627384 5719672 +1663944 5646256 1625656 5698464 1743800 5687320 1664040 5646192 +1625560 5698512 1625656 5698464 1663944 5646256 1663880 5646248 +1625656 5698464 1743800 5687320 1663944 5646256 1663880 5646248 +1743800 5687320 1625656 5698464 1625560 5698512 1629944 5726576 +1743800 5687320 1663944 5646256 1625656 5698464 1629944 5726576 +1743800 5687320 1625656 5698464 1629944 5726576 1743888 5687504 +1625560 5698512 1629944 5726576 1625656 5698464 1663880 5646248 +1625560 5698512 1627448 5719792 1629944 5726576 1625656 5698464 +1627448 5719792 1629736 5726176 1629944 5726576 1625656 5698464 +1629944 5726576 1743800 5687320 1625656 5698464 1627448 5719792 +1625560 5698512 1627448 5719792 1625656 5698464 1663880 5646248 +1625560 5698512 1625656 5698464 1663880 5646248 1623704 5697048 +1625560 5698512 1625656 5698464 1623704 5697048 1623728 5697072 +1663880 5646248 1615440 5689168 1623704 5697048 1625656 5698464 +1625656 5698464 1663944 5646256 1663880 5646248 1623704 5697048 +1625560 5698512 1625656 5698464 1623728 5697072 1623760 5697136 +1625656 5698464 1623704 5697048 1623728 5697072 1623760 5697136 +1625560 5698512 1625656 5698464 1623760 5697136 1625240 5698480 +1625656 5698464 1623728 5697072 1623760 5697136 1625240 5698480 +1625560 5698512 1627448 5719792 1625656 5698464 1625240 5698480 +1623760 5697136 1625128 5698480 1625240 5698480 1625656 5698464 +1625656 5698464 1663880 5646248 1623704 5697048 1623728 5697072 +1625560 5698512 1627384 5719672 1627448 5719792 1625656 5698464 +1627384 5719672 1627400 5719704 1627448 5719792 1625656 5698464 +1625560 5698512 1623944 5702640 1627384 5719672 1625656 5698464 +1623944 5702640 1623888 5702776 1627384 5719672 1625656 5698464 +1625560 5698512 1623840 5702400 1623944 5702640 1625656 5698464 +1625560 5698512 1623944 5702640 1625656 5698464 1625240 5698480 +1627448 5719792 1629944 5726576 1625656 5698464 1627384 5719672 +1627384 5719672 1627448 5719792 1625656 5698464 1623944 5702640 +1663944 5646256 1625712 5698432 1743800 5687320 1664040 5646192 +1625656 5698464 1625712 5698432 1663944 5646256 1663880 5646248 +1625656 5698464 1743800 5687320 1625712 5698432 1663880 5646248 +1743800 5687320 1625712 5698432 1625656 5698464 1629944 5726576 +1625712 5698432 1663880 5646248 1625656 5698464 1629944 5726576 +1625712 5698432 1743800 5687320 1663944 5646256 1663880 5646248 +1743800 5687320 1625712 5698432 1629944 5726576 1743888 5687504 +1625656 5698464 1625712 5698432 1663880 5646248 1623704 5697048 +1625712 5698432 1663944 5646256 1663880 5646248 1623704 5697048 +1625656 5698464 1629944 5726576 1625712 5698432 1623704 5697048 +1663880 5646248 1615440 5689168 1623704 5697048 1625712 5698432 +1625656 5698464 1627448 5719792 1629944 5726576 1625712 5698432 +1625656 5698464 1627448 5719792 1625712 5698432 1623704 5697048 +1629944 5726576 1743800 5687320 1625712 5698432 1627448 5719792 +1627448 5719792 1629736 5726176 1629944 5726576 1625712 5698432 +1625656 5698464 1627384 5719672 1627448 5719792 1625712 5698432 +1625656 5698464 1627384 5719672 1625712 5698432 1623704 5697048 +1627384 5719672 1627400 5719704 1627448 5719792 1625712 5698432 +1627448 5719792 1629944 5726576 1625712 5698432 1627384 5719672 +1625656 5698464 1625712 5698432 1623704 5697048 1623728 5697072 +1625656 5698464 1627384 5719672 1625712 5698432 1623728 5697072 +1625656 5698464 1625712 5698432 1623728 5697072 1623760 5697136 +1625656 5698464 1627384 5719672 1625712 5698432 1623760 5697136 +1625712 5698432 1663880 5646248 1623704 5697048 1623728 5697072 +1625656 5698464 1625712 5698432 1623760 5697136 1625240 5698480 +1625656 5698464 1627384 5719672 1625712 5698432 1625240 5698480 +1625712 5698432 1623728 5697072 1623760 5697136 1625240 5698480 +1625656 5698464 1625712 5698432 1625240 5698480 1625560 5698512 +1623760 5697136 1625128 5698480 1625240 5698480 1625712 5698432 +1625712 5698432 1623704 5697048 1623728 5697072 1623760 5697136 +1625656 5698464 1623944 5702640 1627384 5719672 1625712 5698432 +1623944 5702640 1623888 5702776 1627384 5719672 1625712 5698432 +1625656 5698464 1623944 5702640 1625712 5698432 1625240 5698480 +1625656 5698464 1625560 5698512 1623944 5702640 1625712 5698432 +1627384 5719672 1627448 5719792 1625712 5698432 1623944 5702640 +1743800 5687320 1663944 5646256 1625712 5698432 1629944 5726576 +1663944 5646256 1625776 5698376 1743800 5687320 1664040 5646192 +1625712 5698432 1625776 5698376 1663944 5646256 1663880 5646248 +1625712 5698432 1625776 5698376 1663880 5646248 1623704 5697048 +1625776 5698376 1663944 5646256 1663880 5646248 1623704 5697048 +1625712 5698432 1743800 5687320 1625776 5698376 1623704 5697048 +1663880 5646248 1615440 5689168 1623704 5697048 1625776 5698376 +1625712 5698432 1625776 5698376 1623704 5697048 1623728 5697072 +1625776 5698376 1663880 5646248 1623704 5697048 1623728 5697072 +1625712 5698432 1743800 5687320 1625776 5698376 1623728 5697072 +1625712 5698432 1625776 5698376 1623728 5697072 1623760 5697136 +1625712 5698432 1743800 5687320 1625776 5698376 1623760 5697136 +1625712 5698432 1625776 5698376 1623760 5697136 1625240 5698480 +1625712 5698432 1743800 5687320 1625776 5698376 1625240 5698480 +1625776 5698376 1623704 5697048 1623728 5697072 1623760 5697136 +1625712 5698432 1625776 5698376 1625240 5698480 1625656 5698464 +1625712 5698432 1743800 5687320 1625776 5698376 1625656 5698464 +1625776 5698376 1623760 5697136 1625240 5698480 1625656 5698464 +1625240 5698480 1625560 5698512 1625656 5698464 1625776 5698376 +1623760 5697136 1625128 5698480 1625240 5698480 1625776 5698376 +1625776 5698376 1623728 5697072 1623760 5697136 1625240 5698480 +1743800 5687320 1625776 5698376 1625712 5698432 1629944 5726576 +1625712 5698432 1627448 5719792 1629944 5726576 1625776 5698376 +1625776 5698376 1625656 5698464 1625712 5698432 1627448 5719792 +1627448 5719792 1629736 5726176 1629944 5726576 1625776 5698376 +1743800 5687320 1625776 5698376 1629944 5726576 1743888 5687504 +1625712 5698432 1627384 5719672 1627448 5719792 1625776 5698376 +1627448 5719792 1629944 5726576 1625776 5698376 1627384 5719672 +1625712 5698432 1627384 5719672 1625776 5698376 1625656 5698464 +1627384 5719672 1627400 5719704 1627448 5719792 1625776 5698376 +1625712 5698432 1623944 5702640 1627384 5719672 1625776 5698376 +1623944 5702640 1623888 5702776 1627384 5719672 1625776 5698376 +1625712 5698432 1623944 5702640 1625776 5698376 1625656 5698464 +1627384 5719672 1627448 5719792 1625776 5698376 1623944 5702640 +1625712 5698432 1625656 5698464 1623944 5702640 1625776 5698376 +1629944 5726576 1743800 5687320 1625776 5698376 1627448 5719792 +1625776 5698376 1743800 5687320 1663944 5646256 1663880 5646248 +1743800 5687320 1663944 5646256 1625776 5698376 1629944 5726576 +1743800 5687320 1625808 5698384 1629944 5726576 1743888 5687504 +1629944 5726576 1625808 5698384 1625776 5698376 1627448 5719792 +1625776 5698376 1627384 5719672 1627448 5719792 1625808 5698384 +1629944 5726576 1743800 5687320 1625808 5698384 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1625808 5698384 +1629944 5726576 1625808 5698384 1627448 5719792 1629736 5726176 +1625776 5698376 1623944 5702640 1627384 5719672 1625808 5698384 +1623944 5702640 1623888 5702776 1627384 5719672 1625808 5698384 +1627384 5719672 1627448 5719792 1625808 5698384 1623944 5702640 +1625776 5698376 1625712 5698432 1623944 5702640 1625808 5698384 +1623944 5702640 1627384 5719672 1625808 5698384 1625712 5698432 +1625712 5698432 1625656 5698464 1623944 5702640 1625808 5698384 +1625656 5698464 1625560 5698512 1623944 5702640 1625808 5698384 +1623944 5702640 1627384 5719672 1625808 5698384 1625656 5698464 +1625712 5698432 1625656 5698464 1625808 5698384 1625776 5698376 +1627448 5719792 1629944 5726576 1625808 5698384 1627384 5719672 +1625808 5698384 1743800 5687320 1625776 5698376 1625712 5698432 +1625776 5698376 1625808 5698384 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1625808 5698384 +1625776 5698376 1625808 5698384 1663944 5646256 1663880 5646248 +1625776 5698376 1625808 5698384 1663880 5646248 1623704 5697048 +1625776 5698376 1625808 5698384 1623704 5697048 1623728 5697072 +1625808 5698384 1663880 5646248 1623704 5697048 1623728 5697072 +1663880 5646248 1615440 5689168 1623704 5697048 1625808 5698384 +1625776 5698376 1625808 5698384 1623728 5697072 1623760 5697136 +1625808 5698384 1663944 5646256 1663880 5646248 1623704 5697048 +1625776 5698376 1625712 5698432 1625808 5698384 1623728 5697072 +1625808 5698384 1743800 5687320 1663944 5646256 1663880 5646248 +1625808 5698384 1629944 5726576 1743800 5687320 1663944 5646256 +1629944 5726576 1625936 5698488 1625808 5698384 1627448 5719792 +1625936 5698488 1743800 5687320 1625808 5698384 1627448 5719792 +1629944 5726576 1743800 5687320 1625936 5698488 1627448 5719792 +1629944 5726576 1625936 5698488 1627448 5719792 1629736 5726176 +1743800 5687320 1625936 5698488 1629944 5726576 1743888 5687504 +1625808 5698384 1627384 5719672 1627448 5719792 1625936 5698488 +1625808 5698384 1623944 5702640 1627384 5719672 1625936 5698488 +1623944 5702640 1623888 5702776 1627384 5719672 1625936 5698488 +1625808 5698384 1623944 5702640 1625936 5698488 1743800 5687320 +1627448 5719792 1629944 5726576 1625936 5698488 1627384 5719672 +1627384 5719672 1627400 5719704 1627448 5719792 1625936 5698488 +1625808 5698384 1625656 5698464 1623944 5702640 1625936 5698488 +1623944 5702640 1627384 5719672 1625936 5698488 1625656 5698464 +1625808 5698384 1625656 5698464 1625936 5698488 1743800 5687320 +1625656 5698464 1625560 5698512 1623944 5702640 1625936 5698488 +1625560 5698512 1623840 5702400 1623944 5702640 1625936 5698488 +1625560 5698512 1625104 5698680 1623840 5702400 1625936 5698488 +1623840 5702400 1623944 5702640 1625936 5698488 1625104 5698680 +1625560 5698512 1625240 5698480 1625104 5698680 1625936 5698488 +1623944 5702640 1627384 5719672 1625936 5698488 1623840 5702400 +1625560 5698512 1625104 5698680 1625936 5698488 1625656 5698464 +1625104 5698680 1623576 5701960 1623840 5702400 1625936 5698488 +1625656 5698464 1625560 5698512 1625936 5698488 1625808 5698384 +1625808 5698384 1625712 5698432 1625656 5698464 1625936 5698488 +1625808 5698384 1625712 5698432 1625936 5698488 1743800 5687320 +1625656 5698464 1625560 5698512 1625936 5698488 1625712 5698432 +1625808 5698384 1625776 5698376 1625712 5698432 1625936 5698488 +1627384 5719672 1627448 5719792 1625936 5698488 1623944 5702640 +1625808 5698384 1625936 5698488 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1625936 5698488 +1625808 5698384 1625712 5698432 1625936 5698488 1663944 5646256 +1625936 5698488 1629944 5726576 1743800 5687320 1663944 5646256 +1625808 5698384 1625936 5698488 1663944 5646256 1663880 5646248 +1625808 5698384 1625712 5698432 1625936 5698488 1663880 5646248 +1625808 5698384 1625936 5698488 1663880 5646248 1623704 5697048 +1625936 5698488 1743800 5687320 1663944 5646256 1663880 5646248 +1625936 5698488 1626032 5698672 1743800 5687320 1663944 5646256 +1626032 5698672 1629944 5726576 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1626032 5698672 +1625936 5698488 1629944 5726576 1626032 5698672 1663944 5646256 +1629944 5726576 1626032 5698672 1625936 5698488 1627448 5719792 +1629944 5726576 1743800 5687320 1626032 5698672 1627448 5719792 +1625936 5698488 1627384 5719672 1627448 5719792 1626032 5698672 +1626032 5698672 1663944 5646256 1625936 5698488 1627384 5719672 +1627448 5719792 1629944 5726576 1626032 5698672 1627384 5719672 +1627384 5719672 1627400 5719704 1627448 5719792 1626032 5698672 +1629944 5726576 1626032 5698672 1627448 5719792 1629736 5726176 +1743800 5687320 1626032 5698672 1629944 5726576 1743888 5687504 +1625936 5698488 1623944 5702640 1627384 5719672 1626032 5698672 +1623944 5702640 1623888 5702776 1627384 5719672 1626032 5698672 +1625936 5698488 1623840 5702400 1623944 5702640 1626032 5698672 +1625936 5698488 1625104 5698680 1623840 5702400 1626032 5698672 +1625936 5698488 1625560 5698512 1625104 5698680 1626032 5698672 +1625104 5698680 1623840 5702400 1626032 5698672 1625560 5698512 +1625560 5698512 1625240 5698480 1625104 5698680 1626032 5698672 +1623840 5702400 1623944 5702640 1626032 5698672 1625104 5698680 +1627384 5719672 1627448 5719792 1626032 5698672 1623944 5702640 +1625936 5698488 1625560 5698512 1626032 5698672 1663944 5646256 +1625936 5698488 1625656 5698464 1625560 5698512 1626032 5698672 +1625560 5698512 1625104 5698680 1626032 5698672 1625656 5698464 +1625936 5698488 1625656 5698464 1626032 5698672 1663944 5646256 +1625104 5698680 1623576 5701960 1623840 5702400 1626032 5698672 +1625104 5698680 1623576 5701960 1626032 5698672 1625560 5698512 +1623840 5702400 1623944 5702640 1626032 5698672 1623576 5701960 +1625104 5698680 1623408 5701720 1623576 5701960 1626032 5698672 +1625936 5698488 1625712 5698432 1625656 5698464 1626032 5698672 +1623944 5702640 1627384 5719672 1626032 5698672 1623840 5702400 +1625936 5698488 1626032 5698672 1663944 5646256 1663880 5646248 +1626032 5698672 1743800 5687320 1663944 5646256 1663880 5646248 +1625936 5698488 1625656 5698464 1626032 5698672 1663880 5646248 +1625936 5698488 1626032 5698672 1663880 5646248 1625808 5698384 +1626032 5698672 1626112 5698760 1743800 5687320 1663944 5646256 +1626032 5698672 1629944 5726576 1626112 5698760 1663944 5646256 +1629944 5726576 1626112 5698760 1626032 5698672 1627448 5719792 +1629944 5726576 1743800 5687320 1626112 5698760 1627448 5719792 +1626112 5698760 1663944 5646256 1626032 5698672 1627448 5719792 +1626112 5698760 1629944 5726576 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1626112 5698760 +1626032 5698672 1626112 5698760 1663944 5646256 1663880 5646248 +1626112 5698760 1743800 5687320 1663944 5646256 1663880 5646248 +1626032 5698672 1627448 5719792 1626112 5698760 1663880 5646248 +1626032 5698672 1627384 5719672 1627448 5719792 1626112 5698760 +1626032 5698672 1627384 5719672 1626112 5698760 1663880 5646248 +1627448 5719792 1629944 5726576 1626112 5698760 1627384 5719672 +1626032 5698672 1623944 5702640 1627384 5719672 1626112 5698760 +1623944 5702640 1623888 5702776 1627384 5719672 1626112 5698760 +1626032 5698672 1623944 5702640 1626112 5698760 1663880 5646248 +1627384 5719672 1627448 5719792 1626112 5698760 1623944 5702640 +1627384 5719672 1627400 5719704 1627448 5719792 1626112 5698760 +1629944 5726576 1626112 5698760 1627448 5719792 1629736 5726176 +1743800 5687320 1626112 5698760 1629944 5726576 1743888 5687504 +1626032 5698672 1623840 5702400 1623944 5702640 1626112 5698760 +1626032 5698672 1623840 5702400 1626112 5698760 1663880 5646248 +1626032 5698672 1623576 5701960 1623840 5702400 1626112 5698760 +1626032 5698672 1623576 5701960 1626112 5698760 1663880 5646248 +1623944 5702640 1627384 5719672 1626112 5698760 1623840 5702400 +1626032 5698672 1625104 5698680 1623576 5701960 1626112 5698760 +1626032 5698672 1625560 5698512 1625104 5698680 1626112 5698760 +1625560 5698512 1625240 5698480 1625104 5698680 1626112 5698760 +1626032 5698672 1625656 5698464 1625560 5698512 1626112 5698760 +1626032 5698672 1625560 5698512 1626112 5698760 1663880 5646248 +1623576 5701960 1623840 5702400 1626112 5698760 1625104 5698680 +1625104 5698680 1623576 5701960 1626112 5698760 1625560 5698512 +1625104 5698680 1623408 5701720 1623576 5701960 1626112 5698760 +1623840 5702400 1623944 5702640 1626112 5698760 1623576 5701960 +1626032 5698672 1626112 5698760 1663880 5646248 1625936 5698488 +1626032 5698672 1625560 5698512 1626112 5698760 1625936 5698488 +1626112 5698760 1663944 5646256 1663880 5646248 1625936 5698488 +1663880 5646248 1625808 5698384 1625936 5698488 1626112 5698760 +1629944 5726576 1626248 5698816 1626112 5698760 1627448 5719792 +1629944 5726576 1743800 5687320 1626248 5698816 1627448 5719792 +1626112 5698760 1627384 5719672 1627448 5719792 1626248 5698816 +1627448 5719792 1629944 5726576 1626248 5698816 1627384 5719672 +1626112 5698760 1626248 5698816 1743800 5687320 1663944 5646256 +1626248 5698816 1629944 5726576 1743800 5687320 1663944 5646256 +1626112 5698760 1626248 5698816 1663944 5646256 1663880 5646248 +1626248 5698816 1743800 5687320 1663944 5646256 1663880 5646248 +1626248 5698816 1663880 5646248 1626112 5698760 1627384 5719672 +1743800 5687320 1664040 5646192 1663944 5646256 1626248 5698816 +1626112 5698760 1626248 5698816 1663880 5646248 1625936 5698488 +1626248 5698816 1663944 5646256 1663880 5646248 1625936 5698488 +1626112 5698760 1627384 5719672 1626248 5698816 1625936 5698488 +1626112 5698760 1623944 5702640 1627384 5719672 1626248 5698816 +1623944 5702640 1623888 5702776 1627384 5719672 1626248 5698816 +1623888 5702776 1627336 5719640 1627384 5719672 1626248 5698816 +1627384 5719672 1627448 5719792 1626248 5698816 1623888 5702776 +1626112 5698760 1623944 5702640 1626248 5698816 1625936 5698488 +1626112 5698760 1623840 5702400 1623944 5702640 1626248 5698816 +1626112 5698760 1623840 5702400 1626248 5698816 1625936 5698488 +1623944 5702640 1623888 5702776 1626248 5698816 1623840 5702400 +1627384 5719672 1627400 5719704 1627448 5719792 1626248 5698816 +1629944 5726576 1626248 5698816 1627448 5719792 1629736 5726176 +1743800 5687320 1626248 5698816 1629944 5726576 1743888 5687504 +1626112 5698760 1623576 5701960 1623840 5702400 1626248 5698816 +1626112 5698760 1623576 5701960 1626248 5698816 1625936 5698488 +1626112 5698760 1625104 5698680 1623576 5701960 1626248 5698816 +1626112 5698760 1625104 5698680 1626248 5698816 1625936 5698488 +1623840 5702400 1623944 5702640 1626248 5698816 1623576 5701960 +1626112 5698760 1625560 5698512 1625104 5698680 1626248 5698816 +1625104 5698680 1623408 5701720 1623576 5701960 1626248 5698816 +1623576 5701960 1623840 5702400 1626248 5698816 1625104 5698680 +1663880 5646248 1625808 5698384 1625936 5698488 1626248 5698816 +1626112 5698760 1626248 5698816 1625936 5698488 1626032 5698672 +1626112 5698760 1625104 5698680 1626248 5698816 1626032 5698672 +1626248 5698816 1663880 5646248 1625936 5698488 1626032 5698672 +1626248 5698816 1626296 5698872 1743800 5687320 1663944 5646256 +1626248 5698816 1629944 5726576 1626296 5698872 1663944 5646256 +1629944 5726576 1626296 5698872 1626248 5698816 1627448 5719792 +1626248 5698816 1627384 5719672 1627448 5719792 1626296 5698872 +1626296 5698872 1663944 5646256 1626248 5698816 1627384 5719672 +1627448 5719792 1629944 5726576 1626296 5698872 1627384 5719672 +1626296 5698872 1629944 5726576 1743800 5687320 1663944 5646256 +1626248 5698816 1623888 5702776 1627384 5719672 1626296 5698872 +1623888 5702776 1627336 5719640 1627384 5719672 1626296 5698872 +1626248 5698816 1623944 5702640 1623888 5702776 1626296 5698872 +1627384 5719672 1627448 5719792 1626296 5698872 1623888 5702776 +1626248 5698816 1623944 5702640 1626296 5698872 1663944 5646256 +1623888 5702776 1627384 5719672 1626296 5698872 1623944 5702640 +1626248 5698816 1626296 5698872 1663944 5646256 1663880 5646248 +1626296 5698872 1743800 5687320 1663944 5646256 1663880 5646248 +1626248 5698816 1623944 5702640 1626296 5698872 1663880 5646248 +1626248 5698816 1626296 5698872 1663880 5646248 1625936 5698488 +1743800 5687320 1664040 5646192 1663944 5646256 1626296 5698872 +1629944 5726576 1743800 5687320 1626296 5698872 1627448 5719792 +1626248 5698816 1623840 5702400 1623944 5702640 1626296 5698872 +1623944 5702640 1623888 5702776 1626296 5698872 1623840 5702400 +1626248 5698816 1623840 5702400 1626296 5698872 1663880 5646248 +1626248 5698816 1623576 5701960 1623840 5702400 1626296 5698872 +1626248 5698816 1623576 5701960 1626296 5698872 1663880 5646248 +1623840 5702400 1623944 5702640 1626296 5698872 1623576 5701960 +1627384 5719672 1627400 5719704 1627448 5719792 1626296 5698872 +1629944 5726576 1626296 5698872 1627448 5719792 1629736 5726176 +1743800 5687320 1626296 5698872 1629944 5726576 1743888 5687504 +1626248 5698816 1625104 5698680 1623576 5701960 1626296 5698872 +1626248 5698816 1625104 5698680 1626296 5698872 1663880 5646248 +1626248 5698816 1626112 5698760 1625104 5698680 1626296 5698872 +1626248 5698816 1626112 5698760 1626296 5698872 1663880 5646248 +1623576 5701960 1623840 5702400 1626296 5698872 1625104 5698680 +1626112 5698760 1625560 5698512 1625104 5698680 1626296 5698872 +1625104 5698680 1623408 5701720 1623576 5701960 1626296 5698872 +1625104 5698680 1623576 5701960 1626296 5698872 1626112 5698760 +1626296 5698872 1626344 5698984 1743800 5687320 1663944 5646256 +1626296 5698872 1626344 5698984 1663944 5646256 1663880 5646248 +1743800 5687320 1664040 5646192 1663944 5646256 1626344 5698984 +1626296 5698872 1629944 5726576 1626344 5698984 1663944 5646256 +1629944 5726576 1626344 5698984 1626296 5698872 1627448 5719792 +1626296 5698872 1627384 5719672 1627448 5719792 1626344 5698984 +1626296 5698872 1623888 5702776 1627384 5719672 1626344 5698984 +1623888 5702776 1627336 5719640 1627384 5719672 1626344 5698984 +1627384 5719672 1627448 5719792 1626344 5698984 1623888 5702776 +1626296 5698872 1623944 5702640 1623888 5702776 1626344 5698984 +1626296 5698872 1623840 5702400 1623944 5702640 1626344 5698984 +1623888 5702776 1627384 5719672 1626344 5698984 1623944 5702640 +1623944 5702640 1623888 5702776 1626344 5698984 1623840 5702400 +1626344 5698984 1663944 5646256 1626296 5698872 1623840 5702400 +1627448 5719792 1629944 5726576 1626344 5698984 1627384 5719672 +1626296 5698872 1623576 5701960 1623840 5702400 1626344 5698984 +1623840 5702400 1623944 5702640 1626344 5698984 1623576 5701960 +1626296 5698872 1623576 5701960 1626344 5698984 1663944 5646256 +1626296 5698872 1625104 5698680 1623576 5701960 1626344 5698984 +1626296 5698872 1625104 5698680 1626344 5698984 1663944 5646256 +1623576 5701960 1623840 5702400 1626344 5698984 1625104 5698680 +1627384 5719672 1627400 5719704 1627448 5719792 1626344 5698984 +1629944 5726576 1626344 5698984 1627448 5719792 1629736 5726176 +1743800 5687320 1626344 5698984 1629944 5726576 1743888 5687504 +1626344 5698984 1629944 5726576 1743800 5687320 1663944 5646256 +1629944 5726576 1743800 5687320 1626344 5698984 1627448 5719792 +1625104 5698680 1623408 5701720 1623576 5701960 1626344 5698984 +1626296 5698872 1626112 5698760 1625104 5698680 1626344 5698984 +1626296 5698872 1626248 5698816 1626112 5698760 1626344 5698984 +1626296 5698872 1626112 5698760 1626344 5698984 1663944 5646256 +1625104 5698680 1623576 5701960 1626344 5698984 1626112 5698760 +1626112 5698760 1625560 5698512 1625104 5698680 1626344 5698984 +1627384 5719672 1626320 5699032 1623888 5702776 1627336 5719640 +1623888 5702776 1626320 5699032 1626344 5698984 1623944 5702640 +1626344 5698984 1626320 5699032 1627384 5719672 1627448 5719792 +1623888 5702776 1627384 5719672 1626320 5699032 1623944 5702640 +1626344 5698984 1623840 5702400 1623944 5702640 1626320 5699032 +1626344 5698984 1623576 5701960 1623840 5702400 1626320 5699032 +1623944 5702640 1623888 5702776 1626320 5699032 1623840 5702400 +1623840 5702400 1623944 5702640 1626320 5699032 1623576 5701960 +1626344 5698984 1625104 5698680 1623576 5701960 1626320 5699032 +1623576 5701960 1623840 5702400 1626320 5699032 1625104 5698680 +1626344 5698984 1626112 5698760 1625104 5698680 1626320 5699032 +1625104 5698680 1623576 5701960 1626320 5699032 1626112 5698760 +1626112 5698760 1625560 5698512 1625104 5698680 1626320 5699032 +1626320 5699032 1627384 5719672 1626344 5698984 1626112 5698760 +1625104 5698680 1623408 5701720 1623576 5701960 1626320 5699032 +1626344 5698984 1626296 5698872 1626112 5698760 1626320 5699032 +1626296 5698872 1626248 5698816 1626112 5698760 1626320 5699032 +1626112 5698760 1625104 5698680 1626320 5699032 1626248 5698816 +1626344 5698984 1626296 5698872 1626320 5699032 1627384 5719672 +1626296 5698872 1626248 5698816 1626320 5699032 1626344 5698984 +1626320 5699032 1626264 5699064 1623576 5701960 1623840 5702400 +1626264 5699064 1625104 5698680 1623576 5701960 1623840 5702400 +1626320 5699032 1626264 5699064 1623840 5702400 1623944 5702640 +1626264 5699064 1623576 5701960 1623840 5702400 1623944 5702640 +1626320 5699032 1626264 5699064 1623944 5702640 1623888 5702776 +1625104 5698680 1626264 5699064 1626320 5699032 1626112 5698760 +1625104 5698680 1623576 5701960 1626264 5699064 1626112 5698760 +1626320 5699032 1626248 5698816 1626112 5698760 1626264 5699064 +1626320 5699032 1626296 5698872 1626248 5698816 1626264 5699064 +1626248 5698816 1626112 5698760 1626264 5699064 1626296 5698872 +1626112 5698760 1625104 5698680 1626264 5699064 1626248 5698816 +1625104 5698680 1626264 5699064 1626112 5698760 1625560 5698512 +1626112 5698760 1626032 5698672 1625560 5698512 1626264 5699064 +1625104 5698680 1626264 5699064 1625560 5698512 1625240 5698480 +1625104 5698680 1623576 5701960 1626264 5699064 1625560 5698512 +1626264 5699064 1626248 5698816 1626112 5698760 1625560 5698512 +1626320 5699032 1626296 5698872 1626264 5699064 1623944 5702640 +1623576 5701960 1626264 5699064 1625104 5698680 1623408 5701720 +1623576 5701960 1623840 5702400 1626264 5699064 1623408 5701720 +1626264 5699064 1625560 5698512 1625104 5698680 1623408 5701720 +1625104 5698680 1623296 5701624 1623408 5701720 1626264 5699064 +1626320 5699032 1626344 5698984 1626296 5698872 1626264 5699064 +1626296 5698872 1626248 5698816 1626264 5699064 1626344 5698984 +1626320 5699032 1626344 5698984 1626264 5699064 1623944 5702640 +1625104 5698680 1626200 5699080 1626264 5699064 1625560 5698512 +1625104 5698680 1626200 5699080 1625560 5698512 1625240 5698480 +1626200 5699080 1623408 5701720 1626264 5699064 1625560 5698512 +1626264 5699064 1626112 5698760 1625560 5698512 1626200 5699080 +1626112 5698760 1626032 5698672 1625560 5698512 1626200 5699080 +1626032 5698672 1625656 5698464 1625560 5698512 1626200 5699080 +1626264 5699064 1626112 5698760 1626200 5699080 1623408 5701720 +1625560 5698512 1625104 5698680 1626200 5699080 1626032 5698672 +1626264 5699064 1626248 5698816 1626112 5698760 1626200 5699080 +1626264 5699064 1626248 5698816 1626200 5699080 1623408 5701720 +1626264 5699064 1626296 5698872 1626248 5698816 1626200 5699080 +1626264 5699064 1626296 5698872 1626200 5699080 1623408 5701720 +1626264 5699064 1626344 5698984 1626296 5698872 1626200 5699080 +1626248 5698816 1626112 5698760 1626200 5699080 1626296 5698872 +1626112 5698760 1626032 5698672 1626200 5699080 1626248 5698816 +1623408 5701720 1626200 5699080 1625104 5698680 1623296 5701624 +1625104 5698680 1623408 5701720 1626200 5699080 1625560 5698512 +1626264 5699064 1626200 5699080 1623408 5701720 1623576 5701960 +1626264 5699064 1626200 5699080 1623576 5701960 1623840 5702400 +1626264 5699064 1626200 5699080 1623840 5702400 1623944 5702640 +1626200 5699080 1623576 5701960 1623840 5702400 1623944 5702640 +1626264 5699064 1626296 5698872 1626200 5699080 1623944 5702640 +1626200 5699080 1625104 5698680 1623408 5701720 1623576 5701960 +1626264 5699064 1626200 5699080 1623944 5702640 1626320 5699032 +1626200 5699080 1623408 5701720 1623576 5701960 1623840 5702400 +1626200 5699080 1626016 5699032 1623408 5701720 1623576 5701960 +1623408 5701720 1626016 5699032 1625104 5698680 1623296 5701624 +1626200 5699080 1625104 5698680 1626016 5699032 1623576 5701960 +1625104 5698680 1626016 5699032 1626200 5699080 1625560 5698512 +1625104 5698680 1626016 5699032 1625560 5698512 1625240 5698480 +1626200 5699080 1626032 5698672 1625560 5698512 1626016 5699032 +1626200 5699080 1626112 5698760 1626032 5698672 1626016 5699032 +1626032 5698672 1625656 5698464 1625560 5698512 1626016 5699032 +1626032 5698672 1625560 5698512 1626016 5699032 1626112 5698760 +1626200 5699080 1626248 5698816 1626112 5698760 1626016 5699032 +1626112 5698760 1626032 5698672 1626016 5699032 1626248 5698816 +1626200 5699080 1626296 5698872 1626248 5698816 1626016 5699032 +1626016 5699032 1623576 5701960 1626200 5699080 1626248 5698816 +1625560 5698512 1625104 5698680 1626016 5699032 1626032 5698672 +1626016 5699032 1625104 5698680 1623408 5701720 1623576 5701960 +1625104 5698680 1623408 5701720 1626016 5699032 1625560 5698512 +1626200 5699080 1626016 5699032 1623576 5701960 1623840 5702400 +1626200 5699080 1626016 5699032 1623840 5702400 1623944 5702640 +1626016 5699032 1623408 5701720 1623576 5701960 1623840 5702400 +1626200 5699080 1626248 5698816 1626016 5699032 1623840 5702400 +1625104 5698680 1625640 5698856 1625560 5698512 1625240 5698480 +1625560 5698512 1625640 5698856 1626016 5699032 1626032 5698672 +1625560 5698512 1625640 5698856 1626032 5698672 1625656 5698464 +1626016 5699032 1626112 5698760 1626032 5698672 1625640 5698856 +1626032 5698672 1625936 5698488 1625656 5698464 1625640 5698856 +1625656 5698464 1625560 5698512 1625640 5698856 1625936 5698488 +1625560 5698512 1625104 5698680 1625640 5698856 1625656 5698464 +1625640 5698856 1626016 5699032 1626032 5698672 1625936 5698488 +1625640 5698856 1625104 5698680 1626016 5699032 1626032 5698672 +1626016 5699032 1625640 5698856 1625104 5698680 1623408 5701720 +1625104 5698680 1623296 5701624 1623408 5701720 1625640 5698856 +1625640 5698856 1625560 5698512 1625104 5698680 1623408 5701720 +1626016 5699032 1625640 5698856 1623408 5701720 1623576 5701960 +1626016 5699032 1626032 5698672 1625640 5698856 1623408 5701720 +1625936 5698488 1625712 5698432 1625656 5698464 1625640 5698856 +1623408 5701720 1625432 5698864 1625104 5698680 1623296 5701624 +1625104 5698680 1625432 5698864 1625640 5698856 1625560 5698512 +1625104 5698680 1625432 5698864 1625560 5698512 1625240 5698480 +1625104 5698680 1625432 5698864 1625240 5698480 1625128 5698480 +1625432 5698864 1625640 5698856 1625560 5698512 1625240 5698480 +1625432 5698864 1623408 5701720 1625640 5698856 1625560 5698512 +1625640 5698856 1625656 5698464 1625560 5698512 1625432 5698864 +1623408 5701720 1625640 5698856 1625432 5698864 1623296 5701624 +1625432 5698864 1625240 5698480 1625104 5698680 1623296 5701624 +1625640 5698856 1625432 5698864 1623408 5701720 1626016 5699032 +1625640 5698856 1625560 5698512 1625432 5698864 1626016 5699032 +1625432 5698864 1623296 5701624 1623408 5701720 1626016 5699032 +1623408 5701720 1623576 5701960 1626016 5699032 1625432 5698864 +1623576 5701960 1623840 5702400 1626016 5699032 1625432 5698864 +1623408 5701720 1623576 5701960 1625432 5698864 1623296 5701624 +1626016 5699032 1625640 5698856 1625432 5698864 1623576 5701960 +1625104 5698680 1623192 5701576 1623296 5701624 1625432 5698864 +1625432 5698864 1625328 5698848 1623296 5701624 1623408 5701720 +1625432 5698864 1625328 5698848 1623408 5701720 1623576 5701960 +1625328 5698848 1623296 5701624 1623408 5701720 1623576 5701960 +1625432 5698864 1625104 5698680 1625328 5698848 1623576 5701960 +1625104 5698680 1625328 5698848 1625432 5698864 1625240 5698480 +1625432 5698864 1625560 5698512 1625240 5698480 1625328 5698848 +1625104 5698680 1625328 5698848 1625240 5698480 1625128 5698480 +1625432 5698864 1625640 5698856 1625560 5698512 1625328 5698848 +1625328 5698848 1623576 5701960 1625432 5698864 1625560 5698512 +1625240 5698480 1625104 5698680 1625328 5698848 1625560 5698512 +1625328 5698848 1625104 5698680 1623296 5701624 1623408 5701720 +1625432 5698864 1625328 5698848 1623576 5701960 1626016 5699032 +1623296 5701624 1625328 5698848 1625104 5698680 1623192 5701576 +1625104 5698680 1623296 5701624 1625328 5698848 1625240 5698480 +1625328 5698848 1625176 5698752 1623296 5701624 1623408 5701720 +1623296 5701624 1625176 5698752 1625104 5698680 1623192 5701576 +1625104 5698680 1625032 5698608 1623192 5701576 1625176 5698752 +1625104 5698680 1625176 5698752 1625328 5698848 1625240 5698480 +1625104 5698680 1625176 5698752 1625240 5698480 1625128 5698480 +1625328 5698848 1625560 5698512 1625240 5698480 1625176 5698752 +1625176 5698752 1623296 5701624 1625328 5698848 1625240 5698480 +1623296 5701624 1625328 5698848 1625176 5698752 1623192 5701576 +1625176 5698752 1625240 5698480 1625104 5698680 1623192 5701576 +1627384 5719672 1625464 5700552 1623888 5702776 1627336 5719640 +1623888 5702776 1625464 5700552 1626320 5699032 1623944 5702640 +1626320 5699032 1626264 5699064 1623944 5702640 1625464 5700552 +1623944 5702640 1623888 5702776 1625464 5700552 1626264 5699064 +1626264 5699064 1626200 5699080 1623944 5702640 1625464 5700552 +1626200 5699080 1623840 5702400 1623944 5702640 1625464 5700552 +1626264 5699064 1626200 5699080 1625464 5700552 1626320 5699032 +1623944 5702640 1623888 5702776 1625464 5700552 1623840 5702400 +1626200 5699080 1626016 5699032 1623840 5702400 1625464 5700552 +1623840 5702400 1623944 5702640 1625464 5700552 1626016 5699032 +1626200 5699080 1626016 5699032 1625464 5700552 1626264 5699064 +1626320 5699032 1625464 5700552 1627384 5719672 1626344 5698984 +1626016 5699032 1623576 5701960 1623840 5702400 1625464 5700552 +1623840 5702400 1623944 5702640 1625464 5700552 1623576 5701960 +1626016 5699032 1623576 5701960 1625464 5700552 1626200 5699080 +1626016 5699032 1625432 5698864 1623576 5701960 1625464 5700552 +1626016 5699032 1625432 5698864 1625464 5700552 1626200 5699080 +1625432 5698864 1625328 5698848 1623576 5701960 1625464 5700552 +1625432 5698864 1625328 5698848 1625464 5700552 1626016 5699032 +1625328 5698848 1623408 5701720 1623576 5701960 1625464 5700552 +1625328 5698848 1623296 5701624 1623408 5701720 1625464 5700552 +1623408 5701720 1623576 5701960 1625464 5700552 1623296 5701624 +1625328 5698848 1625176 5698752 1623296 5701624 1625464 5700552 +1623296 5701624 1623408 5701720 1625464 5700552 1625176 5698752 +1625328 5698848 1625176 5698752 1625464 5700552 1625432 5698864 +1626016 5699032 1625640 5698856 1625432 5698864 1625464 5700552 +1623576 5701960 1623840 5702400 1625464 5700552 1623408 5701720 +1623888 5702776 1627384 5719672 1625464 5700552 1623944 5702640 +1625176 5698752 1623192 5701576 1623296 5701624 1625464 5700552 +1623296 5701624 1623408 5701720 1625464 5700552 1623192 5701576 +1625176 5698752 1623192 5701576 1625464 5700552 1625328 5698848 +1625176 5698752 1625104 5698680 1623192 5701576 1625464 5700552 +1625104 5698680 1625032 5698608 1623192 5701576 1625464 5700552 +1625032 5698608 1623016 5701528 1623192 5701576 1625464 5700552 +1625176 5698752 1625104 5698680 1625464 5700552 1625328 5698848 +1625104 5698680 1625032 5698608 1625464 5700552 1625176 5698752 +1623192 5701576 1623296 5701624 1625464 5700552 1625032 5698608 +1625464 5700552 1627384 5719672 1626320 5699032 1626264 5699064 +1626320 5699032 1625640 5700288 1627384 5719672 1626344 5698984 +1625464 5700552 1625640 5700288 1626320 5699032 1626264 5699064 +1625464 5700552 1625640 5700288 1626264 5699064 1626200 5699080 +1625464 5700552 1625640 5700288 1626200 5699080 1626016 5699032 +1625640 5700288 1626264 5699064 1626200 5699080 1626016 5699032 +1625464 5700552 1625640 5700288 1626016 5699032 1625432 5698864 +1625464 5700552 1625640 5700288 1625432 5698864 1625328 5698848 +1625640 5700288 1626016 5699032 1625432 5698864 1625328 5698848 +1625640 5700288 1626200 5699080 1626016 5699032 1625432 5698864 +1625464 5700552 1625640 5700288 1625328 5698848 1625176 5698752 +1625640 5700288 1625432 5698864 1625328 5698848 1625176 5698752 +1625464 5700552 1625640 5700288 1625176 5698752 1625104 5698680 +1626016 5699032 1625640 5698856 1625432 5698864 1625640 5700288 +1625640 5700288 1627384 5719672 1626320 5699032 1626264 5699064 +1625640 5700288 1626320 5699032 1626264 5699064 1626200 5699080 +1627384 5719672 1625640 5700288 1625464 5700552 1623888 5702776 +1625464 5700552 1627384 5719672 1625640 5700288 1625176 5698752 +1627384 5719672 1625704 5700272 1625640 5700288 1625464 5700552 +1625704 5700272 1626320 5699032 1625640 5700288 1625464 5700552 +1627384 5719672 1626320 5699032 1625704 5700272 1625464 5700552 +1626320 5699032 1625704 5700272 1627384 5719672 1626344 5698984 +1625640 5700288 1625704 5700272 1626320 5699032 1626264 5699064 +1625640 5700288 1625464 5700552 1625704 5700272 1626264 5699064 +1625704 5700272 1627384 5719672 1626320 5699032 1626264 5699064 +1625640 5700288 1625704 5700272 1626264 5699064 1626200 5699080 +1625640 5700288 1625704 5700272 1626200 5699080 1626016 5699032 +1625640 5700288 1625704 5700272 1626016 5699032 1625432 5698864 +1625704 5700272 1626200 5699080 1626016 5699032 1625432 5698864 +1625640 5700288 1625704 5700272 1625432 5698864 1625328 5698848 +1625640 5700288 1625464 5700552 1625704 5700272 1625432 5698864 +1626016 5699032 1625640 5698856 1625432 5698864 1625704 5700272 +1625704 5700272 1626320 5699032 1626264 5699064 1626200 5699080 +1625704 5700272 1626264 5699064 1626200 5699080 1626016 5699032 +1627384 5719672 1625704 5700272 1625464 5700552 1623888 5702776 +1625704 5700272 1625848 5700312 1626320 5699032 1626264 5699064 +1625848 5700312 1627384 5719672 1626320 5699032 1626264 5699064 +1625704 5700272 1627384 5719672 1625848 5700312 1626264 5699064 +1627384 5719672 1625848 5700312 1625704 5700272 1625464 5700552 +1627384 5719672 1626320 5699032 1625848 5700312 1625464 5700552 +1625704 5700272 1625640 5700288 1625464 5700552 1625848 5700312 +1625848 5700312 1626264 5699064 1625704 5700272 1625640 5700288 +1625464 5700552 1627384 5719672 1625848 5700312 1625640 5700288 +1626320 5699032 1625848 5700312 1627384 5719672 1626344 5698984 +1627384 5719672 1627448 5719792 1626344 5698984 1625848 5700312 +1626320 5699032 1626264 5699064 1625848 5700312 1626344 5698984 +1625848 5700312 1625464 5700552 1627384 5719672 1627448 5719792 +1627448 5719792 1629944 5726576 1626344 5698984 1625848 5700312 +1627384 5719672 1627400 5719704 1627448 5719792 1625848 5700312 +1626344 5698984 1626320 5699032 1625848 5700312 1627448 5719792 +1625704 5700272 1625848 5700312 1626264 5699064 1626200 5699080 +1625848 5700312 1626320 5699032 1626264 5699064 1626200 5699080 +1625704 5700272 1625640 5700288 1625848 5700312 1626200 5699080 +1625704 5700272 1625848 5700312 1626200 5699080 1626016 5699032 +1627384 5719672 1625848 5700312 1625464 5700552 1623888 5702776 +1627384 5719672 1625848 5700312 1623888 5702776 1627336 5719640 +1627384 5719672 1627448 5719792 1625848 5700312 1623888 5702776 +1625848 5700312 1625640 5700288 1625464 5700552 1623888 5702776 +1625464 5700552 1623944 5702640 1623888 5702776 1625848 5700312 +1625464 5700552 1623840 5702400 1623944 5702640 1625848 5700312 +1625464 5700552 1623944 5702640 1625848 5700312 1625640 5700288 +1623888 5702776 1627384 5719672 1625848 5700312 1623944 5702640 +1627448 5719792 1626104 5700496 1625848 5700312 1627384 5719672 +1626104 5700496 1626344 5698984 1625848 5700312 1627384 5719672 +1625848 5700312 1623888 5702776 1627384 5719672 1626104 5700496 +1623888 5702776 1627336 5719640 1627384 5719672 1626104 5700496 +1623888 5702776 1623816 5702824 1627336 5719640 1626104 5700496 +1627384 5719672 1627448 5719792 1626104 5700496 1627336 5719640 +1625848 5700312 1623888 5702776 1626104 5700496 1626344 5698984 +1623888 5702776 1627336 5719640 1626104 5700496 1625848 5700312 +1627448 5719792 1626344 5698984 1626104 5700496 1627384 5719672 +1626344 5698984 1626104 5700496 1627448 5719792 1629944 5726576 +1627448 5719792 1626104 5700496 1627384 5719672 1627400 5719704 +1625848 5700312 1626104 5700496 1626344 5698984 1626320 5699032 +1625848 5700312 1626104 5700496 1626320 5699032 1626264 5699064 +1625848 5700312 1623888 5702776 1626104 5700496 1626264 5699064 +1626104 5700496 1627448 5719792 1626344 5698984 1626320 5699032 +1625848 5700312 1626104 5700496 1626264 5699064 1626200 5699080 +1626104 5700496 1626320 5699032 1626264 5699064 1626200 5699080 +1625848 5700312 1623888 5702776 1626104 5700496 1626200 5699080 +1626104 5700496 1626344 5698984 1626320 5699032 1626264 5699064 +1625848 5700312 1626104 5700496 1626200 5699080 1625704 5700272 +1625848 5700312 1623944 5702640 1623888 5702776 1626104 5700496 +1625848 5700312 1623944 5702640 1626104 5700496 1626200 5699080 +1623888 5702776 1627336 5719640 1626104 5700496 1623944 5702640 +1625848 5700312 1625464 5700552 1623944 5702640 1626104 5700496 +1625464 5700552 1623840 5702400 1623944 5702640 1626104 5700496 +1625848 5700312 1625464 5700552 1626104 5700496 1626200 5699080 +1625848 5700312 1625640 5700288 1625464 5700552 1626104 5700496 +1623944 5702640 1623888 5702776 1626104 5700496 1625464 5700552 +1626104 5700496 1626200 5700576 1626344 5698984 1626320 5699032 +1626200 5700576 1627448 5719792 1626344 5698984 1626320 5699032 +1626104 5700496 1627448 5719792 1626200 5700576 1626320 5699032 +1627448 5719792 1626200 5700576 1626104 5700496 1627384 5719672 +1626104 5700496 1627336 5719640 1627384 5719672 1626200 5700576 +1626104 5700496 1623888 5702776 1627336 5719640 1626200 5700576 +1623888 5702776 1623816 5702824 1627336 5719640 1626200 5700576 +1627336 5719640 1627384 5719672 1626200 5700576 1623888 5702776 +1626104 5700496 1623944 5702640 1623888 5702776 1626200 5700576 +1623888 5702776 1627336 5719640 1626200 5700576 1623944 5702640 +1626200 5700576 1626320 5699032 1626104 5700496 1623944 5702640 +1627384 5719672 1627448 5719792 1626200 5700576 1627336 5719640 +1627448 5719792 1626344 5698984 1626200 5700576 1627384 5719672 +1626344 5698984 1626200 5700576 1627448 5719792 1629944 5726576 +1626344 5698984 1626320 5699032 1626200 5700576 1629944 5726576 +1626200 5700576 1627384 5719672 1627448 5719792 1629944 5726576 +1627448 5719792 1626200 5700576 1627384 5719672 1627400 5719704 +1627448 5719792 1629736 5726176 1629944 5726576 1626200 5700576 +1626344 5698984 1626200 5700576 1629944 5726576 1743800 5687320 +1626104 5700496 1626200 5700576 1626320 5699032 1626264 5699064 +1626104 5700496 1626200 5700576 1626264 5699064 1626200 5699080 +1626200 5700576 1626344 5698984 1626320 5699032 1626264 5699064 +1626104 5700496 1623944 5702640 1626200 5700576 1626264 5699064 +1626104 5700496 1625464 5700552 1623944 5702640 1626200 5700576 +1625464 5700552 1623840 5702400 1623944 5702640 1626200 5700576 +1623944 5702640 1623888 5702776 1626200 5700576 1625464 5700552 +1626104 5700496 1625464 5700552 1626200 5700576 1626264 5699064 +1626104 5700496 1625848 5700312 1625464 5700552 1626200 5700576 +1626200 5700576 1626264 5700656 1626344 5698984 1626320 5699032 +1626200 5700576 1626264 5700656 1626320 5699032 1626264 5699064 +1626200 5700576 1629944 5726576 1626264 5700656 1626320 5699032 +1626264 5700656 1629944 5726576 1626344 5698984 1626320 5699032 +1629944 5726576 1626264 5700656 1626200 5700576 1627448 5719792 +1629944 5726576 1626344 5698984 1626264 5700656 1627448 5719792 +1626264 5700656 1626320 5699032 1626200 5700576 1627448 5719792 +1626200 5700576 1627384 5719672 1627448 5719792 1626264 5700656 +1626200 5700576 1627336 5719640 1627384 5719672 1626264 5700656 +1626200 5700576 1623888 5702776 1627336 5719640 1626264 5700656 +1623888 5702776 1623816 5702824 1627336 5719640 1626264 5700656 +1626200 5700576 1623944 5702640 1623888 5702776 1626264 5700656 +1623888 5702776 1627336 5719640 1626264 5700656 1623944 5702640 +1626200 5700576 1625464 5700552 1623944 5702640 1626264 5700656 +1623944 5702640 1623888 5702776 1626264 5700656 1625464 5700552 +1625464 5700552 1623840 5702400 1623944 5702640 1626264 5700656 +1627336 5719640 1627384 5719672 1626264 5700656 1623888 5702776 +1626200 5700576 1625464 5700552 1626264 5700656 1626320 5699032 +1627384 5719672 1627448 5719792 1626264 5700656 1627336 5719640 +1627448 5719792 1629944 5726576 1626264 5700656 1627384 5719672 +1627384 5719672 1627400 5719704 1627448 5719792 1626264 5700656 +1629944 5726576 1626264 5700656 1627448 5719792 1629736 5726176 +1626344 5698984 1626264 5700656 1629944 5726576 1743800 5687320 +1626264 5700656 1627448 5719792 1629944 5726576 1743800 5687320 +1626344 5698984 1626320 5699032 1626264 5700656 1743800 5687320 +1629944 5726576 1743888 5687504 1743800 5687320 1626264 5700656 +1626344 5698984 1626264 5700656 1743800 5687320 1663944 5646256 +1626200 5700576 1626104 5700496 1625464 5700552 1626264 5700656 +1629944 5726576 1626280 5700680 1626264 5700656 1627448 5719792 +1626280 5700680 1743800 5687320 1626264 5700656 1627448 5719792 +1629944 5726576 1743800 5687320 1626280 5700680 1627448 5719792 +1626264 5700656 1627384 5719672 1627448 5719792 1626280 5700680 +1627448 5719792 1629944 5726576 1626280 5700680 1627384 5719672 +1626264 5700656 1627384 5719672 1626280 5700680 1743800 5687320 +1626264 5700656 1627336 5719640 1627384 5719672 1626280 5700680 +1626264 5700656 1627336 5719640 1626280 5700680 1743800 5687320 +1626264 5700656 1623888 5702776 1627336 5719640 1626280 5700680 +1623888 5702776 1623816 5702824 1627336 5719640 1626280 5700680 +1626264 5700656 1623888 5702776 1626280 5700680 1743800 5687320 +1626264 5700656 1623944 5702640 1623888 5702776 1626280 5700680 +1626264 5700656 1625464 5700552 1623944 5702640 1626280 5700680 +1626264 5700656 1625464 5700552 1626280 5700680 1743800 5687320 +1623944 5702640 1623888 5702776 1626280 5700680 1625464 5700552 +1625464 5700552 1623840 5702400 1623944 5702640 1626280 5700680 +1626264 5700656 1626200 5700576 1625464 5700552 1626280 5700680 +1623888 5702776 1627336 5719640 1626280 5700680 1623944 5702640 +1627336 5719640 1627384 5719672 1626280 5700680 1623888 5702776 +1627384 5719672 1627448 5719792 1626280 5700680 1627336 5719640 +1627384 5719672 1627400 5719704 1627448 5719792 1626280 5700680 +1629944 5726576 1626280 5700680 1627448 5719792 1629736 5726176 +1743800 5687320 1626280 5700680 1629944 5726576 1743888 5687504 +1626264 5700656 1626280 5700680 1743800 5687320 1626344 5698984 +1626264 5700656 1625464 5700552 1626280 5700680 1626344 5698984 +1626280 5700680 1629944 5726576 1743800 5687320 1626344 5698984 +1626264 5700656 1626280 5700680 1626344 5698984 1626320 5699032 +1626264 5700656 1625464 5700552 1626280 5700680 1626320 5699032 +1626264 5700656 1626280 5700680 1626320 5699032 1626200 5700576 +1743800 5687320 1663944 5646256 1626344 5698984 1626280 5700680 +1626280 5700680 1743800 5687320 1626344 5698984 1626320 5699032 +1627336 5719640 1626264 5700792 1623888 5702776 1623816 5702824 +1623888 5702776 1626264 5700792 1626280 5700680 1623944 5702640 +1626264 5700792 1627336 5719640 1626280 5700680 1623944 5702640 +1623888 5702776 1627336 5719640 1626264 5700792 1623944 5702640 +1626280 5700680 1625464 5700552 1623944 5702640 1626264 5700792 +1626280 5700680 1626264 5700656 1625464 5700552 1626264 5700792 +1626280 5700680 1626264 5700656 1626264 5700792 1627336 5719640 +1625464 5700552 1623944 5702640 1626264 5700792 1626264 5700656 +1625464 5700552 1623840 5702400 1623944 5702640 1626264 5700792 +1626264 5700656 1626200 5700576 1625464 5700552 1626264 5700792 +1626264 5700656 1626200 5700576 1626264 5700792 1626280 5700680 +1625464 5700552 1623944 5702640 1626264 5700792 1626200 5700576 +1623944 5702640 1623888 5702776 1626264 5700792 1625464 5700552 +1626280 5700680 1626264 5700792 1627336 5719640 1627384 5719672 +1626280 5700680 1626264 5700656 1626264 5700792 1627384 5719672 +1626264 5700792 1623888 5702776 1627336 5719640 1627384 5719672 +1626280 5700680 1626264 5700792 1627384 5719672 1627448 5719792 +1626280 5700680 1626264 5700792 1627448 5719792 1629944 5726576 +1626280 5700680 1626264 5700656 1626264 5700792 1629944 5726576 +1626280 5700680 1626264 5700792 1629944 5726576 1743800 5687320 +1626264 5700792 1627336 5719640 1627384 5719672 1627448 5719792 +1626264 5700792 1627384 5719672 1627448 5719792 1629944 5726576 +1627384 5719672 1627400 5719704 1627448 5719792 1626264 5700792 +1627448 5719792 1629736 5726176 1629944 5726576 1626264 5700792 +1626200 5700576 1626104 5700496 1625464 5700552 1626264 5700792 +1625464 5700552 1623944 5702640 1626264 5700792 1626104 5700496 +1626200 5700576 1626104 5700496 1626264 5700792 1626264 5700656 +1626104 5700496 1625848 5700312 1625464 5700552 1626264 5700792 +1625464 5700552 1626152 5700864 1626264 5700792 1626104 5700496 +1626152 5700864 1623944 5702640 1626264 5700792 1626104 5700496 +1623944 5702640 1626152 5700864 1625464 5700552 1623840 5702400 +1625464 5700552 1623944 5702640 1626152 5700864 1626104 5700496 +1626264 5700792 1626152 5700864 1623944 5702640 1623888 5702776 +1626264 5700792 1626104 5700496 1626152 5700864 1623888 5702776 +1626264 5700792 1626152 5700864 1623888 5702776 1627336 5719640 +1623888 5702776 1623816 5702824 1627336 5719640 1626152 5700864 +1626264 5700792 1626152 5700864 1627336 5719640 1627384 5719672 +1626264 5700792 1626104 5700496 1626152 5700864 1627336 5719640 +1626152 5700864 1625464 5700552 1623944 5702640 1623888 5702776 +1626152 5700864 1623944 5702640 1623888 5702776 1627336 5719640 +1625464 5700552 1626152 5700864 1626104 5700496 1625848 5700312 +1626264 5700792 1626200 5700576 1626104 5700496 1626152 5700864 +1626264 5700792 1626200 5700576 1626152 5700864 1627336 5719640 +1626104 5700496 1625464 5700552 1626152 5700864 1626200 5700576 +1626264 5700792 1626264 5700656 1626200 5700576 1626152 5700864 +1626264 5700792 1626280 5700680 1626264 5700656 1626152 5700864 +1626264 5700792 1626264 5700656 1626152 5700864 1627336 5719640 +1626200 5700576 1626104 5700496 1626152 5700864 1626264 5700656 +1626152 5700864 1625688 5700856 1623944 5702640 1623888 5702776 +1623944 5702640 1625688 5700856 1625464 5700552 1623840 5702400 +1625464 5700552 1623576 5701960 1623840 5702400 1625688 5700856 +1623840 5702400 1623944 5702640 1625688 5700856 1623576 5701960 +1625464 5700552 1625688 5700856 1626152 5700864 1626104 5700496 +1625688 5700856 1623944 5702640 1626152 5700864 1626104 5700496 +1626152 5700864 1626200 5700576 1626104 5700496 1625688 5700856 +1623944 5702640 1626152 5700864 1625688 5700856 1623840 5702400 +1625688 5700856 1626104 5700496 1625464 5700552 1623576 5701960 +1625464 5700552 1623408 5701720 1623576 5701960 1625688 5700856 +1625464 5700552 1625688 5700856 1626104 5700496 1625848 5700312 +1625688 5700856 1626152 5700864 1626104 5700496 1625848 5700312 +1625464 5700552 1623576 5701960 1625688 5700856 1625848 5700312 +1625464 5700552 1625688 5700856 1625848 5700312 1625640 5700288 +1625688 5700856 1625584 5700840 1623576 5701960 1623840 5702400 +1625688 5700856 1625584 5700840 1623840 5702400 1623944 5702640 +1625584 5700840 1623576 5701960 1623840 5702400 1623944 5702640 +1625688 5700856 1625584 5700840 1623944 5702640 1626152 5700864 +1625688 5700856 1625464 5700552 1625584 5700840 1623944 5702640 +1625464 5700552 1625584 5700840 1625688 5700856 1625848 5700312 +1625584 5700840 1625464 5700552 1623576 5701960 1623840 5702400 +1623576 5701960 1625584 5700840 1625464 5700552 1623408 5701720 +1625584 5700840 1625688 5700856 1625464 5700552 1623408 5701720 +1623576 5701960 1623840 5702400 1625584 5700840 1623408 5701720 +1625464 5700552 1623296 5701624 1623408 5701720 1625584 5700840 +1625464 5700552 1625472 5700768 1625584 5700840 1625688 5700856 +1623408 5701720 1625472 5700768 1625464 5700552 1623296 5701624 +1625584 5700840 1625472 5700768 1623408 5701720 1623576 5701960 +1625584 5700840 1625464 5700552 1625472 5700768 1623576 5701960 +1625584 5700840 1625472 5700768 1623576 5701960 1623840 5702400 +1625584 5700840 1625472 5700768 1623840 5702400 1623944 5702640 +1625584 5700840 1625464 5700552 1625472 5700768 1623840 5702400 +1625472 5700768 1625464 5700552 1623408 5701720 1623576 5701960 +1625472 5700768 1623408 5701720 1623576 5701960 1623840 5702400 +1625472 5700768 1625440 5700736 1623408 5701720 1623576 5701960 +1625472 5700768 1625464 5700552 1625440 5700736 1623576 5701960 +1623408 5701720 1625440 5700736 1625464 5700552 1623296 5701624 +1625464 5700552 1623192 5701576 1623296 5701624 1625440 5700736 +1625472 5700768 1625440 5700736 1623576 5701960 1623840 5702400 +1625464 5700552 1625440 5700736 1625472 5700768 1625584 5700840 +1625440 5700736 1623296 5701624 1623408 5701720 1623576 5701960 +1625440 5700736 1625472 5700768 1625464 5700552 1623296 5701624 +1623296 5701624 1625432 5700712 1625464 5700552 1623192 5701576 +1625440 5700736 1625432 5700712 1623296 5701624 1623408 5701720 +1625432 5700712 1625464 5700552 1623296 5701624 1623408 5701720 +1625440 5700736 1625432 5700712 1623408 5701720 1623576 5701960 +1625440 5700736 1625464 5700552 1625432 5700712 1623408 5701720 +1625464 5700552 1625432 5700712 1625440 5700736 1625472 5700768 +1625464 5700552 1623296 5701624 1625432 5700712 1625472 5700768 +1625464 5700552 1625432 5700712 1625472 5700768 1625584 5700840 +1625432 5700712 1623408 5701720 1625440 5700736 1625472 5700768 +1625432 5700712 1625448 5700568 1623296 5701624 1623408 5701720 +1625464 5700552 1625448 5700568 1625432 5700712 1625472 5700768 +1623296 5701624 1625448 5700568 1625464 5700552 1623192 5701576 +1623296 5701624 1625432 5700712 1625448 5700568 1623192 5701576 +1625448 5700568 1625432 5700712 1625464 5700552 1623192 5701576 +1625464 5700552 1625032 5698608 1623192 5701576 1625448 5700568 +1625032 5698608 1623016 5701528 1623192 5701576 1625448 5700568 +1625464 5700552 1625104 5698680 1625032 5698608 1625448 5700568 +1623192 5701576 1623296 5701624 1625448 5700568 1625032 5698608 +1625464 5700552 1625176 5698752 1625104 5698680 1625448 5700568 +1625104 5698680 1625032 5698608 1625448 5700568 1625176 5698752 +1625464 5700552 1625640 5700288 1625176 5698752 1625448 5700568 +1625640 5700288 1625328 5698848 1625176 5698752 1625448 5700568 +1625176 5698752 1625104 5698680 1625448 5700568 1625640 5700288 +1625464 5700552 1625640 5700288 1625448 5700568 1625432 5700712 +1625032 5698608 1623192 5701576 1625448 5700568 1625104 5698680 +1625472 5700768 1625216 5700952 1623840 5702400 1625584 5700840 +1623840 5702400 1623944 5702640 1625584 5700840 1625216 5700952 +1625472 5700768 1623576 5701960 1625216 5700952 1625584 5700840 +1623944 5702640 1625688 5700856 1625584 5700840 1625216 5700952 +1623944 5702640 1625688 5700856 1625216 5700952 1623840 5702400 +1623944 5702640 1626152 5700864 1625688 5700856 1625216 5700952 +1625584 5700840 1625472 5700768 1625216 5700952 1625688 5700856 +1623576 5701960 1625216 5700952 1625472 5700768 1625440 5700736 +1625216 5700952 1625584 5700840 1625472 5700768 1625440 5700736 +1623576 5701960 1623840 5702400 1625216 5700952 1625440 5700736 +1623576 5701960 1625216 5700952 1625440 5700736 1623408 5701720 +1623576 5701960 1623840 5702400 1625216 5700952 1623408 5701720 +1625216 5700952 1625472 5700768 1625440 5700736 1623408 5701720 +1625216 5700952 1623576 5701960 1623840 5702400 1623944 5702640 +1625440 5700736 1625432 5700712 1623408 5701720 1625216 5700952 +1623408 5701720 1623576 5701960 1625216 5700952 1625432 5700712 +1625432 5700712 1623296 5701624 1623408 5701720 1625216 5700952 +1625432 5700712 1625448 5700568 1623296 5701624 1625216 5700952 +1625448 5700568 1623192 5701576 1623296 5701624 1625216 5700952 +1625448 5700568 1623192 5701576 1625216 5700952 1625432 5700712 +1623408 5701720 1623576 5701960 1625216 5700952 1623296 5701624 +1625448 5700568 1625032 5698608 1623192 5701576 1625216 5700952 +1625448 5700568 1625032 5698608 1625216 5700952 1625432 5700712 +1623192 5701576 1623296 5701624 1625216 5700952 1625032 5698608 +1625032 5698608 1623016 5701528 1623192 5701576 1625216 5700952 +1623296 5701624 1623408 5701720 1625216 5700952 1623192 5701576 +1625440 5700736 1625432 5700712 1625216 5700952 1625472 5700768 +1625432 5700712 1625448 5700568 1625216 5700952 1625440 5700736 +1625448 5700568 1625104 5698680 1625032 5698608 1625216 5700952 +1625448 5700568 1625104 5698680 1625216 5700952 1625432 5700712 +1625448 5700568 1625176 5698752 1625104 5698680 1625216 5700952 +1625032 5698608 1623192 5701576 1625216 5700952 1625104 5698680 +1623944 5702640 1625320 5700968 1625216 5700952 1623840 5702400 +1625216 5700952 1625320 5700968 1625688 5700856 1625584 5700840 +1625320 5700968 1623944 5702640 1625688 5700856 1625584 5700840 +1625216 5700952 1623944 5702640 1625320 5700968 1625584 5700840 +1625688 5700856 1625320 5700968 1623944 5702640 1626152 5700864 +1623944 5702640 1623888 5702776 1626152 5700864 1625320 5700968 +1625688 5700856 1625584 5700840 1625320 5700968 1626152 5700864 +1625320 5700968 1625216 5700952 1623944 5702640 1626152 5700864 +1625216 5700952 1625320 5700968 1625584 5700840 1625472 5700768 +1625216 5700952 1625320 5700968 1625472 5700768 1625440 5700736 +1625216 5700952 1623944 5702640 1625320 5700968 1625440 5700736 +1625320 5700968 1625688 5700856 1625584 5700840 1625472 5700768 +1625320 5700968 1625584 5700840 1625472 5700768 1625440 5700736 +1625216 5700952 1625320 5700968 1625440 5700736 1625432 5700712 +1626152 5700864 1625448 5701040 1623944 5702640 1623888 5702776 +1623944 5702640 1625448 5701040 1625320 5700968 1625216 5700952 +1623944 5702640 1625448 5701040 1625216 5700952 1623840 5702400 +1625448 5701040 1626152 5700864 1625320 5700968 1625216 5700952 +1625448 5701040 1625320 5700968 1625216 5700952 1623840 5702400 +1625320 5700968 1625448 5701040 1626152 5700864 1625688 5700856 +1625320 5700968 1625448 5701040 1625688 5700856 1625584 5700840 +1625320 5700968 1625216 5700952 1625448 5701040 1625584 5700840 +1625320 5700968 1625448 5701040 1625584 5700840 1625472 5700768 +1625448 5701040 1625688 5700856 1625584 5700840 1625472 5700768 +1625320 5700968 1625216 5700952 1625448 5701040 1625472 5700768 +1625448 5701040 1626152 5700864 1625688 5700856 1625584 5700840 +1625320 5700968 1625448 5701040 1625472 5700768 1625440 5700736 +1623944 5702640 1626152 5700864 1625448 5701040 1623840 5702400 +1625216 5700952 1623576 5701960 1623840 5702400 1625448 5701040 +1625448 5701040 1623944 5702640 1626152 5700864 1625688 5700856 +1626152 5700864 1625568 5701176 1623944 5702640 1623888 5702776 +1626152 5700864 1625568 5701176 1623888 5702776 1627336 5719640 +1623944 5702640 1625568 5701176 1625448 5701040 1623840 5702400 +1625448 5701040 1625216 5700952 1623840 5702400 1625568 5701176 +1625448 5701040 1625320 5700968 1625216 5700952 1625568 5701176 +1623840 5702400 1623944 5702640 1625568 5701176 1625216 5700952 +1626152 5700864 1625448 5701040 1625568 5701176 1623888 5702776 +1625568 5701176 1623840 5702400 1623944 5702640 1623888 5702776 +1625216 5700952 1623576 5701960 1623840 5702400 1625568 5701176 +1625448 5701040 1625568 5701176 1626152 5700864 1625688 5700856 +1625448 5701040 1625568 5701176 1625688 5700856 1625584 5700840 +1625568 5701176 1623888 5702776 1626152 5700864 1625688 5700856 +1625568 5701176 1625688 5700856 1625448 5701040 1625216 5700952 +1623888 5702776 1625616 5701256 1625568 5701176 1623944 5702640 +1626152 5700864 1625616 5701256 1623888 5702776 1627336 5719640 +1623888 5702776 1623816 5702824 1627336 5719640 1625616 5701256 +1626152 5700864 1625616 5701256 1627336 5719640 1626264 5700792 +1627336 5719640 1627384 5719672 1626264 5700792 1625616 5701256 +1625616 5701256 1623888 5702776 1627336 5719640 1626264 5700792 +1625568 5701176 1625616 5701256 1626152 5700864 1625688 5700856 +1625616 5701256 1625688 5700856 1625568 5701176 1623944 5702640 +1625568 5701176 1623840 5702400 1623944 5702640 1625616 5701256 +1623944 5702640 1623888 5702776 1625616 5701256 1623840 5702400 +1625568 5701176 1625216 5700952 1623840 5702400 1625616 5701256 +1625568 5701176 1625448 5701040 1625216 5700952 1625616 5701256 +1625568 5701176 1625216 5700952 1625616 5701256 1625688 5700856 +1623840 5702400 1623944 5702640 1625616 5701256 1625216 5700952 +1626152 5700864 1625688 5700856 1625616 5701256 1626264 5700792 +1623888 5702776 1627336 5719640 1625616 5701256 1623944 5702640 +1625216 5700952 1623576 5701960 1623840 5702400 1625616 5701256 +1625568 5701176 1625616 5701256 1625688 5700856 1625448 5701040 +1627336 5719640 1625592 5701352 1623888 5702776 1623816 5702824 +1625616 5701256 1625592 5701352 1627336 5719640 1626264 5700792 +1627336 5719640 1627384 5719672 1626264 5700792 1625592 5701352 +1625616 5701256 1625592 5701352 1626264 5700792 1626152 5700864 +1625592 5701352 1627336 5719640 1626264 5700792 1626152 5700864 +1625616 5701256 1625592 5701352 1626152 5700864 1625688 5700856 +1625616 5701256 1623888 5702776 1625592 5701352 1626152 5700864 +1623888 5702776 1625592 5701352 1625616 5701256 1623944 5702640 +1625616 5701256 1623840 5702400 1623944 5702640 1625592 5701352 +1625616 5701256 1625216 5700952 1623840 5702400 1625592 5701352 +1623840 5702400 1623944 5702640 1625592 5701352 1625216 5700952 +1625616 5701256 1625568 5701176 1625216 5700952 1625592 5701352 +1625568 5701176 1625448 5701040 1625216 5700952 1625592 5701352 +1625448 5701040 1625320 5700968 1625216 5700952 1625592 5701352 +1625568 5701176 1625448 5701040 1625592 5701352 1625616 5701256 +1625216 5700952 1623840 5702400 1625592 5701352 1625448 5701040 +1625592 5701352 1626152 5700864 1625616 5701256 1625568 5701176 +1623944 5702640 1623888 5702776 1625592 5701352 1623840 5702400 +1625592 5701352 1623888 5702776 1627336 5719640 1626264 5700792 +1623888 5702776 1627336 5719640 1625592 5701352 1623944 5702640 +1625216 5700952 1623576 5701960 1623840 5702400 1625592 5701352 +1627336 5719640 1625520 5701424 1623888 5702776 1623816 5702824 +1625592 5701352 1625520 5701424 1627336 5719640 1626264 5700792 +1627336 5719640 1627384 5719672 1626264 5700792 1625520 5701424 +1625592 5701352 1625520 5701424 1626264 5700792 1626152 5700864 +1625592 5701352 1623888 5702776 1625520 5701424 1626264 5700792 +1623888 5702776 1625520 5701424 1625592 5701352 1623944 5702640 +1625592 5701352 1623840 5702400 1623944 5702640 1625520 5701424 +1625592 5701352 1625216 5700952 1623840 5702400 1625520 5701424 +1625592 5701352 1625448 5701040 1625216 5700952 1625520 5701424 +1625592 5701352 1625568 5701176 1625448 5701040 1625520 5701424 +1625216 5700952 1623840 5702400 1625520 5701424 1625448 5701040 +1625448 5701040 1625320 5700968 1625216 5700952 1625520 5701424 +1625216 5700952 1623840 5702400 1625520 5701424 1625320 5700968 +1625592 5701352 1625616 5701256 1625568 5701176 1625520 5701424 +1625448 5701040 1625320 5700968 1625520 5701424 1625568 5701176 +1623840 5702400 1623944 5702640 1625520 5701424 1625216 5700952 +1625520 5701424 1626264 5700792 1625592 5701352 1625568 5701176 +1623944 5702640 1623888 5702776 1625520 5701424 1623840 5702400 +1625520 5701424 1623888 5702776 1627336 5719640 1626264 5700792 +1623888 5702776 1627336 5719640 1625520 5701424 1623944 5702640 +1625216 5700952 1623576 5701960 1623840 5702400 1625520 5701424 +1623944 5702640 1624952 5701864 1625520 5701424 1623840 5702400 +1625520 5701424 1625216 5700952 1623840 5702400 1624952 5701864 +1625520 5701424 1625320 5700968 1625216 5700952 1624952 5701864 +1623840 5702400 1623944 5702640 1624952 5701864 1625216 5700952 +1624952 5701864 1623888 5702776 1625520 5701424 1625216 5700952 +1625520 5701424 1624952 5701864 1623888 5702776 1627336 5719640 +1623888 5702776 1623816 5702824 1627336 5719640 1624952 5701864 +1625520 5701424 1624952 5701864 1627336 5719640 1626264 5700792 +1625520 5701424 1625216 5700952 1624952 5701864 1627336 5719640 +1624952 5701864 1623944 5702640 1623888 5702776 1627336 5719640 +1623944 5702640 1623888 5702776 1624952 5701864 1623840 5702400 +1625216 5700952 1623576 5701960 1623840 5702400 1624952 5701864 +1625216 5700952 1623408 5701720 1623576 5701960 1624952 5701864 +1625216 5700952 1623296 5701624 1623408 5701720 1624952 5701864 +1625216 5700952 1623408 5701720 1624952 5701864 1625520 5701424 +1623840 5702400 1623944 5702640 1624952 5701864 1623576 5701960 +1623576 5701960 1623840 5702400 1624952 5701864 1623408 5701720 +1624952 5701864 1624720 5701944 1623840 5702400 1623944 5702640 +1624952 5701864 1623576 5701960 1624720 5701944 1623944 5702640 +1624952 5701864 1624720 5701944 1623944 5702640 1623888 5702776 +1624720 5701944 1623840 5702400 1623944 5702640 1623888 5702776 +1624952 5701864 1624720 5701944 1623888 5702776 1627336 5719640 +1624952 5701864 1623576 5701960 1624720 5701944 1623888 5702776 +1624720 5701944 1623576 5701960 1623840 5702400 1623944 5702640 +1623576 5701960 1624720 5701944 1624952 5701864 1623408 5701720 +1623576 5701960 1623840 5702400 1624720 5701944 1623408 5701720 +1624952 5701864 1625216 5700952 1623408 5701720 1624720 5701944 +1625216 5700952 1623296 5701624 1623408 5701720 1624720 5701944 +1624952 5701864 1625520 5701424 1625216 5700952 1624720 5701944 +1624720 5701944 1623888 5702776 1624952 5701864 1625216 5700952 +1623408 5701720 1623576 5701960 1624720 5701944 1625216 5700952 +1623576 5701960 1624408 5702000 1624720 5701944 1623408 5701720 +1624408 5702000 1623840 5702400 1624720 5701944 1623408 5701720 +1623576 5701960 1623840 5702400 1624408 5702000 1623408 5701720 +1624720 5701944 1624408 5702000 1623840 5702400 1623944 5702640 +1624720 5701944 1623408 5701720 1624408 5702000 1623944 5702640 +1624408 5702000 1623576 5701960 1623840 5702400 1623944 5702640 +1624720 5701944 1624408 5702000 1623944 5702640 1623888 5702776 +1624720 5701944 1625216 5700952 1623408 5701720 1624408 5702000 +1624720 5701944 1625216 5700952 1624408 5702000 1623944 5702640 +1623408 5701720 1623576 5701960 1624408 5702000 1625216 5700952 +1624720 5701944 1624952 5701864 1625216 5700952 1624408 5702000 +1625216 5700952 1623296 5701624 1623408 5701720 1624408 5702000 +1624408 5702000 1624360 5701968 1623408 5701720 1623576 5701960 +1623408 5701720 1624360 5701968 1625216 5700952 1623296 5701624 +1624408 5702000 1625216 5700952 1624360 5701968 1623576 5701960 +1624408 5702000 1624360 5701968 1623576 5701960 1623840 5702400 +1624360 5701968 1623408 5701720 1623576 5701960 1623840 5702400 +1624408 5702000 1624360 5701968 1623840 5702400 1623944 5702640 +1624408 5702000 1625216 5700952 1624360 5701968 1623840 5702400 +1624360 5701968 1625216 5700952 1623408 5701720 1623576 5701960 +1625216 5700952 1624360 5701968 1624408 5702000 1624720 5701944 +1625216 5700952 1624360 5701968 1624720 5701944 1624952 5701864 +1625216 5700952 1623408 5701720 1624360 5701968 1624720 5701944 +1624360 5701968 1623840 5702400 1624408 5702000 1624720 5701944 +1623408 5701720 1624328 5701880 1625216 5700952 1623296 5701624 +1625216 5700952 1624328 5701880 1624360 5701968 1624720 5701944 +1625216 5700952 1624328 5701880 1624720 5701944 1624952 5701864 +1624328 5701880 1624360 5701968 1624720 5701944 1624952 5701864 +1623408 5701720 1624360 5701968 1624328 5701880 1623296 5701624 +1624328 5701880 1624952 5701864 1625216 5700952 1623296 5701624 +1624360 5701968 1624328 5701880 1623408 5701720 1623576 5701960 +1624360 5701968 1624328 5701880 1623576 5701960 1623840 5702400 +1624328 5701880 1623296 5701624 1623408 5701720 1623576 5701960 +1624360 5701968 1624328 5701880 1623840 5702400 1624408 5702000 +1624328 5701880 1623408 5701720 1623576 5701960 1623840 5702400 +1624328 5701880 1623840 5702400 1624360 5701968 1624720 5701944 +1625216 5700952 1624328 5701880 1624952 5701864 1625520 5701424 +1625216 5700952 1623192 5701576 1623296 5701624 1624328 5701880 +1624360 5701968 1624408 5702000 1624720 5701944 1624328 5701880 +1624720 5701944 1624952 5701864 1624328 5701880 1624408 5702000 +1624360 5701968 1624408 5702000 1624328 5701880 1623840 5702400 +1624328 5701880 1624304 5701504 1623296 5701624 1623408 5701720 +1624328 5701880 1624304 5701504 1623408 5701720 1623576 5701960 +1624304 5701504 1623296 5701624 1623408 5701720 1623576 5701960 +1624328 5701880 1625216 5700952 1624304 5701504 1623576 5701960 +1625216 5700952 1624304 5701504 1624328 5701880 1624952 5701864 +1624328 5701880 1624720 5701944 1624952 5701864 1624304 5701504 +1624328 5701880 1624408 5702000 1624720 5701944 1624304 5701504 +1624304 5701504 1623576 5701960 1624328 5701880 1624720 5701944 +1624952 5701864 1625216 5700952 1624304 5701504 1624720 5701944 +1624328 5701880 1624304 5701504 1623576 5701960 1623840 5702400 +1624304 5701504 1625216 5700952 1623296 5701624 1623408 5701720 +1625216 5700952 1623296 5701624 1624304 5701504 1624952 5701864 +1625216 5700952 1624304 5701504 1624952 5701864 1625520 5701424 +1623296 5701624 1624304 5701504 1625216 5700952 1623192 5701576 +1625216 5700952 1625032 5698608 1623192 5701576 1624304 5701504 +1625032 5698608 1623016 5701528 1623192 5701576 1624304 5701504 +1623296 5701624 1623408 5701720 1624304 5701504 1623192 5701576 +1624304 5701504 1624952 5701864 1625216 5700952 1625032 5698608 +1625216 5700952 1625104 5698680 1625032 5698608 1624304 5701504 +1625032 5698608 1623192 5701576 1624304 5701504 1625104 5698680 +1625216 5700952 1625104 5698680 1624304 5701504 1624952 5701864 +1623192 5701576 1623296 5701624 1624304 5701504 1625032 5698608 +1625216 5700952 1625448 5700568 1625104 5698680 1624304 5701504 +1625216 5700952 1625432 5700712 1625448 5700568 1624304 5701504 +1625448 5700568 1625176 5698752 1625104 5698680 1624304 5701504 +1625216 5700952 1625448 5700568 1624304 5701504 1624952 5701864 +1625104 5698680 1625032 5698608 1624304 5701504 1625448 5700568 +1625032 5698608 1624224 5701288 1624304 5701504 1625104 5698680 +1623192 5701576 1624224 5701288 1625032 5698608 1623016 5701528 +1624224 5701288 1623192 5701576 1624304 5701504 1625104 5698680 +1623192 5701576 1624304 5701504 1624224 5701288 1623016 5701528 +1624304 5701504 1625448 5700568 1625104 5698680 1624224 5701288 +1625104 5698680 1625032 5698608 1624224 5701288 1625448 5700568 +1625448 5700568 1625176 5698752 1625104 5698680 1624224 5701288 +1625104 5698680 1625032 5698608 1624224 5701288 1625176 5698752 +1624304 5701504 1625448 5700568 1624224 5701288 1623192 5701576 +1625448 5700568 1625176 5698752 1624224 5701288 1624304 5701504 +1624304 5701504 1624224 5701288 1623192 5701576 1623296 5701624 +1624304 5701504 1624224 5701288 1623296 5701624 1623408 5701720 +1624304 5701504 1624224 5701288 1623408 5701720 1623576 5701960 +1624304 5701504 1625448 5700568 1624224 5701288 1623408 5701720 +1624224 5701288 1623016 5701528 1623192 5701576 1623296 5701624 +1624224 5701288 1623192 5701576 1623296 5701624 1623408 5701720 +1625032 5698608 1623648 5697496 1623016 5701528 1624224 5701288 +1625448 5700568 1625640 5700288 1625176 5698752 1624224 5701288 +1625032 5698608 1623016 5701528 1624224 5701288 1625104 5698680 +1624304 5701504 1625216 5700952 1625448 5700568 1624224 5701288 +1625216 5700952 1625432 5700712 1625448 5700568 1624224 5701288 +1624304 5701504 1625216 5700952 1624224 5701288 1623408 5701720 +1624304 5701504 1624952 5701864 1625216 5700952 1624224 5701288 +1625448 5700568 1625176 5698752 1624224 5701288 1625216 5700952 +1624224 5701288 1624224 5701208 1623016 5701528 1623192 5701576 +1624224 5701288 1624224 5701208 1623192 5701576 1623296 5701624 +1624224 5701208 1623016 5701528 1623192 5701576 1623296 5701624 +1624224 5701288 1625032 5698608 1624224 5701208 1623296 5701624 +1624224 5701288 1624224 5701208 1623296 5701624 1623408 5701720 +1623016 5701528 1624224 5701208 1625032 5698608 1623648 5697496 +1623016 5701528 1624224 5701208 1623648 5697496 1622880 5701536 +1625032 5698608 1623672 5697496 1623648 5697496 1624224 5701208 +1625032 5698608 1624224 5701208 1624224 5701288 1625104 5698680 +1624224 5701288 1625176 5698752 1625104 5698680 1624224 5701208 +1624224 5701288 1625448 5700568 1625176 5698752 1624224 5701208 +1625176 5698752 1625104 5698680 1624224 5701208 1625448 5700568 +1624224 5701208 1623296 5701624 1624224 5701288 1625448 5700568 +1624224 5701288 1625216 5700952 1625448 5700568 1624224 5701208 +1625216 5700952 1625432 5700712 1625448 5700568 1624224 5701208 +1625448 5700568 1625176 5698752 1624224 5701208 1625216 5700952 +1624224 5701288 1625216 5700952 1624224 5701208 1623296 5701624 +1625448 5700568 1625640 5700288 1625176 5698752 1624224 5701208 +1625104 5698680 1625032 5698608 1624224 5701208 1625176 5698752 +1624224 5701208 1623648 5697496 1623016 5701528 1623192 5701576 +1624224 5701208 1625104 5698680 1625032 5698608 1623648 5697496 +1624224 5701288 1624304 5701504 1625216 5700952 1624224 5701208 +1624304 5701504 1624952 5701864 1625216 5700952 1624224 5701208 +1624224 5701288 1624304 5701504 1624224 5701208 1623296 5701624 +1625216 5700952 1625448 5700568 1624224 5701208 1624304 5701504 +1624224 5701208 1624288 5701080 1625176 5698752 1625104 5698680 +1625448 5700568 1624288 5701080 1624224 5701208 1625216 5700952 +1625448 5700568 1624288 5701080 1625216 5700952 1625432 5700712 +1625448 5700568 1625176 5698752 1624288 5701080 1625216 5700952 +1624224 5701208 1624304 5701504 1625216 5700952 1624288 5701080 +1625216 5700952 1625448 5700568 1624288 5701080 1624304 5701504 +1624304 5701504 1624952 5701864 1625216 5700952 1624288 5701080 +1625176 5698752 1624288 5701080 1625448 5700568 1625640 5700288 +1624224 5701208 1624288 5701080 1625104 5698680 1625032 5698608 +1624288 5701080 1625176 5698752 1625104 5698680 1625032 5698608 +1624224 5701208 1624304 5701504 1624288 5701080 1625032 5698608 +1624224 5701208 1624288 5701080 1625032 5698608 1623648 5697496 +1625032 5698608 1623672 5697496 1623648 5697496 1624288 5701080 +1624224 5701208 1624288 5701080 1623648 5697496 1623016 5701528 +1623648 5697496 1622880 5701536 1623016 5701528 1624288 5701080 +1624288 5701080 1625104 5698680 1625032 5698608 1623648 5697496 +1624224 5701208 1624288 5701080 1623016 5701528 1623192 5701576 +1624224 5701208 1624288 5701080 1623192 5701576 1623296 5701624 +1624288 5701080 1623648 5697496 1623016 5701528 1623192 5701576 +1624224 5701208 1624304 5701504 1624288 5701080 1623192 5701576 +1624288 5701080 1625032 5698608 1623648 5697496 1623016 5701528 +1624288 5701080 1625448 5700568 1625176 5698752 1625104 5698680 +1624224 5701208 1624224 5701288 1624304 5701504 1624288 5701080 +1624304 5701504 1625216 5700952 1624288 5701080 1624224 5701288 +1624224 5701208 1624224 5701288 1624288 5701080 1623192 5701576 +1625448 5700568 1624344 5701024 1624288 5701080 1625216 5700952 +1625448 5700568 1624344 5701024 1625216 5700952 1625432 5700712 +1624344 5701024 1625176 5698752 1624288 5701080 1625216 5700952 +1625448 5700568 1625176 5698752 1624344 5701024 1625216 5700952 +1624288 5701080 1624304 5701504 1625216 5700952 1624344 5701024 +1624288 5701080 1624304 5701504 1624344 5701024 1625176 5698752 +1625216 5700952 1625448 5700568 1624344 5701024 1624304 5701504 +1624304 5701504 1624952 5701864 1625216 5700952 1624344 5701024 +1624288 5701080 1624224 5701288 1624304 5701504 1624344 5701024 +1624288 5701080 1624224 5701288 1624344 5701024 1625176 5698752 +1624304 5701504 1625216 5700952 1624344 5701024 1624224 5701288 +1625176 5698752 1624344 5701024 1625448 5700568 1625640 5700288 +1624288 5701080 1624344 5701024 1625176 5698752 1625104 5698680 +1624288 5701080 1624344 5701024 1625104 5698680 1625032 5698608 +1624288 5701080 1624224 5701288 1624344 5701024 1625032 5698608 +1624344 5701024 1625448 5700568 1625176 5698752 1625104 5698680 +1624288 5701080 1624344 5701024 1625032 5698608 1623648 5697496 +1624344 5701024 1625104 5698680 1625032 5698608 1623648 5697496 +1624288 5701080 1624224 5701288 1624344 5701024 1623648 5697496 +1625032 5698608 1623672 5697496 1623648 5697496 1624344 5701024 +1624288 5701080 1624344 5701024 1623648 5697496 1623016 5701528 +1623648 5697496 1622880 5701536 1623016 5701528 1624344 5701024 +1624288 5701080 1624224 5701288 1624344 5701024 1623016 5701528 +1624288 5701080 1624344 5701024 1623016 5701528 1623192 5701576 +1624344 5701024 1625032 5698608 1623648 5697496 1623016 5701528 +1624344 5701024 1625176 5698752 1625104 5698680 1625032 5698608 +1624288 5701080 1624224 5701208 1624224 5701288 1624344 5701024 +1624344 5701024 1624408 5700984 1625176 5698752 1625104 5698680 +1624408 5700984 1625448 5700568 1625176 5698752 1625104 5698680 +1624344 5701024 1625448 5700568 1624408 5700984 1625104 5698680 +1625448 5700568 1624408 5700984 1624344 5701024 1625216 5700952 +1625448 5700568 1625176 5698752 1624408 5700984 1625216 5700952 +1625448 5700568 1624408 5700984 1625216 5700952 1625432 5700712 +1624344 5701024 1624304 5701504 1625216 5700952 1624408 5700984 +1624408 5700984 1625104 5698680 1624344 5701024 1624304 5701504 +1625216 5700952 1625448 5700568 1624408 5700984 1624304 5701504 +1624344 5701024 1624224 5701288 1624304 5701504 1624408 5700984 +1624304 5701504 1625216 5700952 1624408 5700984 1624224 5701288 +1624344 5701024 1624224 5701288 1624408 5700984 1625104 5698680 +1624304 5701504 1624952 5701864 1625216 5700952 1624408 5700984 +1624304 5701504 1624952 5701864 1624408 5700984 1624224 5701288 +1625216 5700952 1625448 5700568 1624408 5700984 1624952 5701864 +1624304 5701504 1624720 5701944 1624952 5701864 1624408 5700984 +1624952 5701864 1625520 5701424 1625216 5700952 1624408 5700984 +1624344 5701024 1624288 5701080 1624224 5701288 1624408 5700984 +1625176 5698752 1624408 5700984 1625448 5700568 1625640 5700288 +1624344 5701024 1624408 5700984 1625104 5698680 1625032 5698608 +1624344 5701024 1624408 5700984 1625032 5698608 1623648 5697496 +1624408 5700984 1625176 5698752 1625104 5698680 1625032 5698608 +1624344 5701024 1624224 5701288 1624408 5700984 1625032 5698608 +1624408 5700984 1624496 5700960 1625448 5700568 1625176 5698752 +1624408 5700984 1624496 5700960 1625176 5698752 1625104 5698680 +1624408 5700984 1625216 5700952 1624496 5700960 1625104 5698680 +1624496 5700960 1625448 5700568 1625176 5698752 1625104 5698680 +1624496 5700960 1625216 5700952 1625448 5700568 1625176 5698752 +1625448 5700568 1624496 5700960 1625216 5700952 1625432 5700712 +1624408 5700984 1624496 5700960 1625104 5698680 1625032 5698608 +1625216 5700952 1624496 5700960 1624408 5700984 1624952 5701864 +1624496 5700960 1625104 5698680 1624408 5700984 1624952 5701864 +1625216 5700952 1625448 5700568 1624496 5700960 1624952 5701864 +1624408 5700984 1624304 5701504 1624952 5701864 1624496 5700960 +1624408 5700984 1624304 5701504 1624496 5700960 1625104 5698680 +1624408 5700984 1624224 5701288 1624304 5701504 1624496 5700960 +1624408 5700984 1624224 5701288 1624496 5700960 1625104 5698680 +1624952 5701864 1625216 5700952 1624496 5700960 1624304 5701504 +1624304 5701504 1624720 5701944 1624952 5701864 1624496 5700960 +1624408 5700984 1624344 5701024 1624224 5701288 1624496 5700960 +1624408 5700984 1624344 5701024 1624496 5700960 1625104 5698680 +1624224 5701288 1624304 5701504 1624496 5700960 1624344 5701024 +1624304 5701504 1624952 5701864 1624496 5700960 1624224 5701288 +1625216 5700952 1624496 5700960 1624952 5701864 1625520 5701424 +1624344 5701024 1624288 5701080 1624224 5701288 1624496 5700960 +1625448 5700568 1625640 5700288 1625176 5698752 1624496 5700960 +1624496 5700960 1624824 5700984 1625216 5700952 1625448 5700568 +1624496 5700960 1624824 5700984 1625448 5700568 1625176 5698752 +1624496 5700960 1624952 5701864 1624824 5700984 1625448 5700568 +1624824 5700984 1624952 5701864 1625216 5700952 1625448 5700568 +1625216 5700952 1625432 5700712 1625448 5700568 1624824 5700984 +1624952 5701864 1624824 5700984 1624496 5700960 1624304 5701504 +1624824 5700984 1625448 5700568 1624496 5700960 1624304 5701504 +1624952 5701864 1625216 5700952 1624824 5700984 1624304 5701504 +1624952 5701864 1624824 5700984 1624304 5701504 1624720 5701944 +1624496 5700960 1624224 5701288 1624304 5701504 1624824 5700984 +1625216 5700952 1624824 5700984 1624952 5701864 1625520 5701424 +1625216 5700952 1625448 5700568 1624824 5700984 1625520 5701424 +1624824 5700984 1624304 5701504 1624952 5701864 1625520 5701424 +1625216 5700952 1624824 5700984 1625520 5701424 1625320 5700968 +1624824 5700984 1625064 5700936 1625448 5700568 1624496 5700960 +1625216 5700952 1625064 5700936 1624824 5700984 1625520 5701424 +1625064 5700936 1625448 5700568 1624824 5700984 1625520 5701424 +1625216 5700952 1625064 5700936 1625520 5701424 1625320 5700968 +1625448 5700568 1625064 5700936 1625216 5700952 1625432 5700712 +1625448 5700568 1624824 5700984 1625064 5700936 1625432 5700712 +1624824 5700984 1624952 5701864 1625520 5701424 1625064 5700936 +1625520 5701424 1625216 5700952 1625064 5700936 1624952 5701864 +1624824 5700984 1624952 5701864 1625064 5700936 1625448 5700568 +1624824 5700984 1624304 5701504 1624952 5701864 1625064 5700936 +1625216 5700952 1625432 5700712 1625064 5700936 1625520 5701424 +1625216 5700952 1625440 5700736 1625432 5700712 1625064 5700936 +1626280 5700680 1627968 5701176 1743800 5687320 1626344 5698984 +1629944 5726576 1627968 5701176 1626280 5700680 1626264 5700792 +1629944 5726576 1627968 5701176 1626264 5700792 1627448 5719792 +1627968 5701176 1626280 5700680 1626264 5700792 1627448 5719792 +1626280 5700680 1626264 5700792 1627968 5701176 1626344 5698984 +1626264 5700792 1627384 5719672 1627448 5719792 1627968 5701176 +1627448 5719792 1629944 5726576 1627968 5701176 1627384 5719672 +1626264 5700792 1627384 5719672 1627968 5701176 1626280 5700680 +1626264 5700792 1627336 5719640 1627384 5719672 1627968 5701176 +1626264 5700792 1627336 5719640 1627968 5701176 1626280 5700680 +1626264 5700792 1625520 5701424 1627336 5719640 1627968 5701176 +1626264 5700792 1625520 5701424 1627968 5701176 1626280 5700680 +1627336 5719640 1627384 5719672 1627968 5701176 1625520 5701424 +1627384 5719672 1627448 5719792 1627968 5701176 1627336 5719640 +1627384 5719672 1627400 5719704 1627448 5719792 1627968 5701176 +1629944 5726576 1627968 5701176 1627448 5719792 1629736 5726176 +1743800 5687320 1627968 5701176 1629944 5726576 1743888 5687504 +1626264 5700792 1625592 5701352 1625520 5701424 1627968 5701176 +1626264 5700792 1625592 5701352 1627968 5701176 1626280 5700680 +1625520 5701424 1627336 5719640 1627968 5701176 1625592 5701352 +1626264 5700792 1626152 5700864 1625592 5701352 1627968 5701176 +1626264 5700792 1626152 5700864 1627968 5701176 1626280 5700680 +1626152 5700864 1625616 5701256 1625592 5701352 1627968 5701176 +1625592 5701352 1625520 5701424 1627968 5701176 1626152 5700864 +1625520 5701424 1624952 5701864 1627336 5719640 1627968 5701176 +1625520 5701424 1624952 5701864 1627968 5701176 1625592 5701352 +1627336 5719640 1627384 5719672 1627968 5701176 1624952 5701864 +1627968 5701176 1629944 5726576 1743800 5687320 1626344 5698984 +1624952 5701864 1623888 5702776 1627336 5719640 1627968 5701176 +1623888 5702776 1623816 5702824 1627336 5719640 1627968 5701176 +1627336 5719640 1627384 5719672 1627968 5701176 1623888 5702776 +1624952 5701864 1623888 5702776 1627968 5701176 1625520 5701424 +1624952 5701864 1624720 5701944 1623888 5702776 1627968 5701176 +1629944 5726576 1743800 5687320 1627968 5701176 1627448 5719792 +1743800 5687320 1663944 5646256 1626344 5698984 1627968 5701176 +1626344 5698984 1626280 5700680 1627968 5701176 1663944 5646256 +1663944 5646256 1626296 5698872 1626344 5698984 1627968 5701176 +1626344 5698984 1626280 5700680 1627968 5701176 1626296 5698872 +1663944 5646256 1663880 5646248 1626296 5698872 1627968 5701176 +1626296 5698872 1626344 5698984 1627968 5701176 1663880 5646248 +1663880 5646248 1626248 5698816 1626296 5698872 1627968 5701176 +1743800 5687320 1664040 5646192 1663944 5646256 1627968 5701176 +1743800 5687320 1663944 5646256 1627968 5701176 1629944 5726576 +1663944 5646256 1663880 5646248 1627968 5701176 1743800 5687320 +1626280 5700680 1627968 5701176 1626344 5698984 1626320 5699032 +1627968 5701176 1626296 5698872 1626344 5698984 1626320 5699032 +1626280 5700680 1626264 5700792 1627968 5701176 1626320 5699032 +1626280 5700680 1627968 5701176 1626320 5699032 1626264 5700656 +1626280 5700680 1626264 5700792 1627968 5701176 1626264 5700656 +1626320 5699032 1626200 5700576 1626264 5700656 1627968 5701176 +1627968 5701176 1626344 5698984 1626320 5699032 1626264 5700656 +1743800 5687320 1628128 5701160 1629944 5726576 1743888 5687504 +1627968 5701176 1628128 5701160 1743800 5687320 1663944 5646256 +1628128 5701160 1629944 5726576 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1628128 5701160 +1629944 5726576 1628128 5701160 1627968 5701176 1627448 5719792 +1627968 5701176 1627384 5719672 1627448 5719792 1628128 5701160 +1629944 5726576 1743800 5687320 1628128 5701160 1627448 5719792 +1627968 5701176 1627336 5719640 1627384 5719672 1628128 5701160 +1627384 5719672 1627448 5719792 1628128 5701160 1627336 5719640 +1627968 5701176 1623888 5702776 1627336 5719640 1628128 5701160 +1623888 5702776 1623816 5702824 1627336 5719640 1628128 5701160 +1627336 5719640 1627384 5719672 1628128 5701160 1623888 5702776 +1627384 5719672 1627400 5719704 1627448 5719792 1628128 5701160 +1629944 5726576 1628128 5701160 1627448 5719792 1629736 5726176 +1627968 5701176 1624952 5701864 1623888 5702776 1628128 5701160 +1627448 5719792 1629944 5726576 1628128 5701160 1627384 5719672 +1627968 5701176 1623888 5702776 1628128 5701160 1663944 5646256 +1627968 5701176 1628128 5701160 1663944 5646256 1663880 5646248 +1627968 5701176 1628128 5701160 1663880 5646248 1626296 5698872 +1627968 5701176 1628128 5701160 1626296 5698872 1626344 5698984 +1627968 5701176 1628128 5701160 1626344 5698984 1626320 5699032 +1628128 5701160 1663880 5646248 1626296 5698872 1626344 5698984 +1663880 5646248 1626248 5698816 1626296 5698872 1628128 5701160 +1628128 5701160 1743800 5687320 1663944 5646256 1663880 5646248 +1627968 5701176 1623888 5702776 1628128 5701160 1626344 5698984 +1628128 5701160 1663944 5646256 1663880 5646248 1626296 5698872 +1628128 5701160 1628288 5701200 1743800 5687320 1663944 5646256 +1628128 5701160 1629944 5726576 1628288 5701200 1663944 5646256 +1629944 5726576 1628288 5701200 1628128 5701160 1627448 5719792 +1628288 5701200 1663944 5646256 1628128 5701160 1627448 5719792 +1628288 5701200 1629944 5726576 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1628288 5701200 +1629944 5726576 1628288 5701200 1627448 5719792 1629736 5726176 +1743800 5687320 1628288 5701200 1629944 5726576 1743888 5687504 +1628128 5701160 1628288 5701200 1663944 5646256 1663880 5646248 +1628288 5701200 1743800 5687320 1663944 5646256 1663880 5646248 +1628128 5701160 1627448 5719792 1628288 5701200 1663880 5646248 +1628128 5701160 1627384 5719672 1627448 5719792 1628288 5701200 +1628128 5701160 1627336 5719640 1627384 5719672 1628288 5701200 +1628128 5701160 1627336 5719640 1628288 5701200 1663880 5646248 +1627448 5719792 1629944 5726576 1628288 5701200 1627384 5719672 +1628128 5701160 1623888 5702776 1627336 5719640 1628288 5701200 +1623888 5702776 1623816 5702824 1627336 5719640 1628288 5701200 +1627336 5719640 1627384 5719672 1628288 5701200 1623888 5702776 +1628128 5701160 1623888 5702776 1628288 5701200 1663880 5646248 +1628128 5701160 1627968 5701176 1623888 5702776 1628288 5701200 +1628128 5701160 1627968 5701176 1628288 5701200 1663880 5646248 +1623888 5702776 1627336 5719640 1628288 5701200 1627968 5701176 +1627384 5719672 1627400 5719704 1627448 5719792 1628288 5701200 +1627968 5701176 1624952 5701864 1623888 5702776 1628288 5701200 +1627384 5719672 1627448 5719792 1628288 5701200 1627336 5719640 +1628128 5701160 1628288 5701200 1663880 5646248 1626296 5698872 +1628128 5701160 1627968 5701176 1628288 5701200 1626296 5698872 +1628128 5701160 1628288 5701200 1626296 5698872 1626344 5698984 +1628128 5701160 1627968 5701176 1628288 5701200 1626344 5698984 +1628128 5701160 1628288 5701200 1626344 5698984 1627968 5701176 +1663880 5646248 1626248 5698816 1626296 5698872 1628288 5701200 +1628288 5701200 1663944 5646256 1663880 5646248 1626296 5698872 +1628288 5701200 1663880 5646248 1626296 5698872 1626344 5698984 +1629944 5726576 1743800 5687320 1628288 5701200 1627448 5719792 +1628288 5701200 1628632 5701384 1743800 5687320 1663944 5646256 +1628288 5701200 1628632 5701384 1663944 5646256 1663880 5646248 +1628632 5701384 1743800 5687320 1663944 5646256 1663880 5646248 +1743800 5687320 1664040 5646192 1663944 5646256 1628632 5701384 +1743800 5687320 1628632 5701384 1629944 5726576 1743888 5687504 +1628288 5701200 1628632 5701384 1663880 5646248 1626296 5698872 +1628632 5701384 1663944 5646256 1663880 5646248 1626296 5698872 +1663880 5646248 1626248 5698816 1626296 5698872 1628632 5701384 +1628288 5701200 1628632 5701384 1626296 5698872 1626344 5698984 +1628288 5701200 1628632 5701384 1626344 5698984 1628128 5701160 +1628632 5701384 1663880 5646248 1626296 5698872 1626344 5698984 +1628288 5701200 1629944 5726576 1628632 5701384 1626344 5698984 +1629944 5726576 1628632 5701384 1628288 5701200 1627448 5719792 +1628288 5701200 1627384 5719672 1627448 5719792 1628632 5701384 +1627384 5719672 1627400 5719704 1627448 5719792 1628632 5701384 +1629944 5726576 1628632 5701384 1627448 5719792 1629736 5726176 +1628288 5701200 1627336 5719640 1627384 5719672 1628632 5701384 +1628288 5701200 1623888 5702776 1627336 5719640 1628632 5701384 +1623888 5702776 1623816 5702824 1627336 5719640 1628632 5701384 +1623816 5702824 1620552 5714440 1627336 5719640 1628632 5701384 +1623816 5702824 1620552 5714440 1628632 5701384 1623888 5702776 +1623816 5702824 1620512 5714368 1620552 5714440 1628632 5701384 +1623888 5702776 1623816 5702824 1628632 5701384 1628288 5701200 +1623888 5702776 1623848 5702776 1623816 5702824 1628632 5701384 +1627384 5719672 1627448 5719792 1628632 5701384 1627336 5719640 +1620552 5714440 1627312 5719640 1627336 5719640 1628632 5701384 +1628288 5701200 1627968 5701176 1623888 5702776 1628632 5701384 +1623888 5702776 1623816 5702824 1628632 5701384 1627968 5701176 +1628288 5701200 1628128 5701160 1627968 5701176 1628632 5701384 +1627968 5701176 1624952 5701864 1623888 5702776 1628632 5701384 +1623888 5702776 1623816 5702824 1628632 5701384 1624952 5701864 +1627968 5701176 1624952 5701864 1628632 5701384 1628288 5701200 +1627968 5701176 1625520 5701424 1624952 5701864 1628632 5701384 +1624952 5701864 1624720 5701944 1623888 5702776 1628632 5701384 +1627336 5719640 1627384 5719672 1628632 5701384 1620552 5714440 +1628632 5701384 1626344 5698984 1628288 5701200 1627968 5701176 +1627448 5719792 1629944 5726576 1628632 5701384 1627384 5719672 +1628632 5701384 1629944 5726576 1743800 5687320 1663944 5646256 +1629944 5726576 1743800 5687320 1628632 5701384 1627448 5719792 +1743800 5687320 1628712 5701448 1629944 5726576 1743888 5687504 +1628632 5701384 1628712 5701448 1743800 5687320 1663944 5646256 +1628632 5701384 1628712 5701448 1663944 5646256 1663880 5646248 +1628632 5701384 1628712 5701448 1663880 5646248 1626296 5698872 +1628712 5701448 1663944 5646256 1663880 5646248 1626296 5698872 +1663880 5646248 1626248 5698816 1626296 5698872 1628712 5701448 +1743800 5687320 1664040 5646192 1663944 5646256 1628712 5701448 +1628712 5701448 1629944 5726576 1743800 5687320 1663944 5646256 +1628632 5701384 1628712 5701448 1626296 5698872 1626344 5698984 +1628712 5701448 1743800 5687320 1663944 5646256 1663880 5646248 +1628632 5701384 1629944 5726576 1628712 5701448 1626296 5698872 +1629944 5726576 1628712 5701448 1628632 5701384 1627448 5719792 +1629944 5726576 1628712 5701448 1627448 5719792 1629736 5726176 +1628632 5701384 1627384 5719672 1627448 5719792 1628712 5701448 +1628632 5701384 1627336 5719640 1627384 5719672 1628712 5701448 +1627384 5719672 1627400 5719704 1627448 5719792 1628712 5701448 +1628632 5701384 1620552 5714440 1627336 5719640 1628712 5701448 +1628632 5701384 1623816 5702824 1620552 5714440 1628712 5701448 +1628632 5701384 1623888 5702776 1623816 5702824 1628712 5701448 +1623816 5702824 1620552 5714440 1628712 5701448 1623888 5702776 +1623816 5702824 1620512 5714368 1620552 5714440 1628712 5701448 +1628632 5701384 1624952 5701864 1623888 5702776 1628712 5701448 +1623888 5702776 1623816 5702824 1628712 5701448 1624952 5701864 +1623888 5702776 1623848 5702776 1623816 5702824 1628712 5701448 +1627336 5719640 1627384 5719672 1628712 5701448 1620552 5714440 +1620552 5714440 1627312 5719640 1627336 5719640 1628712 5701448 +1628632 5701384 1627968 5701176 1624952 5701864 1628712 5701448 +1624952 5701864 1623888 5702776 1628712 5701448 1627968 5701176 +1628632 5701384 1628288 5701200 1627968 5701176 1628712 5701448 +1627968 5701176 1625520 5701424 1624952 5701864 1628712 5701448 +1624952 5701864 1624720 5701944 1623888 5702776 1628712 5701448 +1620552 5714440 1627336 5719640 1628712 5701448 1623816 5702824 +1627384 5719672 1627448 5719792 1628712 5701448 1627336 5719640 +1628712 5701448 1626296 5698872 1628632 5701384 1627968 5701176 +1627448 5719792 1629944 5726576 1628712 5701448 1627384 5719672 +1629944 5726576 1743800 5687320 1628712 5701448 1627448 5719792 +1629944 5726576 1628712 5701600 1627448 5719792 1629736 5726176 +1627448 5719792 1628712 5701600 1628712 5701448 1627384 5719672 +1627448 5719792 1628712 5701600 1627384 5719672 1627400 5719704 +1628712 5701448 1627336 5719640 1627384 5719672 1628712 5701600 +1628712 5701448 1620552 5714440 1627336 5719640 1628712 5701600 +1620552 5714440 1627312 5719640 1627336 5719640 1628712 5701600 +1628712 5701448 1623816 5702824 1620552 5714440 1628712 5701600 +1628712 5701448 1623888 5702776 1623816 5702824 1628712 5701600 +1628712 5701448 1624952 5701864 1623888 5702776 1628712 5701600 +1623888 5702776 1623816 5702824 1628712 5701600 1624952 5701864 +1623816 5702824 1620512 5714368 1620552 5714440 1628712 5701600 +1628712 5701448 1627968 5701176 1624952 5701864 1628712 5701600 +1624952 5701864 1623888 5702776 1628712 5701600 1627968 5701176 +1623888 5702776 1623848 5702776 1623816 5702824 1628712 5701600 +1620552 5714440 1627336 5719640 1628712 5701600 1623816 5702824 +1627968 5701176 1625520 5701424 1624952 5701864 1628712 5701600 +1624952 5701864 1623888 5702776 1628712 5701600 1625520 5701424 +1627968 5701176 1625520 5701424 1628712 5701600 1628712 5701448 +1627968 5701176 1625592 5701352 1625520 5701424 1628712 5701600 +1628712 5701448 1628632 5701384 1627968 5701176 1628712 5701600 +1627968 5701176 1625520 5701424 1628712 5701600 1628632 5701384 +1628632 5701384 1628288 5701200 1627968 5701176 1628712 5701600 +1627968 5701176 1625520 5701424 1628712 5701600 1628288 5701200 +1628288 5701200 1628128 5701160 1627968 5701176 1628712 5701600 +1628632 5701384 1628288 5701200 1628712 5701600 1628712 5701448 +1624952 5701864 1624720 5701944 1623888 5702776 1628712 5701600 +1623816 5702824 1620552 5714440 1628712 5701600 1623888 5702776 +1627336 5719640 1627384 5719672 1628712 5701600 1620552 5714440 +1627384 5719672 1627448 5719792 1628712 5701600 1627336 5719640 +1628712 5701448 1628712 5701600 1629944 5726576 1743800 5687320 +1628712 5701448 1628712 5701600 1743800 5687320 1663944 5646256 +1629944 5726576 1743888 5687504 1743800 5687320 1628712 5701600 +1628712 5701600 1743800 5687320 1628712 5701448 1628632 5701384 +1628712 5701600 1627448 5719792 1629944 5726576 1743800 5687320 +1627448 5719792 1629944 5726576 1628712 5701600 1627384 5719672 +1620552 5714440 1628664 5701664 1623816 5702824 1620512 5714368 +1628712 5701600 1628664 5701664 1620552 5714440 1627336 5719640 +1620552 5714440 1627312 5719640 1627336 5719640 1628664 5701664 +1628664 5701664 1623816 5702824 1620552 5714440 1627336 5719640 +1623816 5702824 1628664 5701664 1628712 5701600 1623888 5702776 +1628712 5701600 1624952 5701864 1623888 5702776 1628664 5701664 +1628712 5701600 1625520 5701424 1624952 5701864 1628664 5701664 +1624952 5701864 1623888 5702776 1628664 5701664 1625520 5701424 +1623816 5702824 1628664 5701664 1623888 5702776 1623848 5702776 +1623816 5702824 1620552 5714440 1628664 5701664 1623888 5702776 +1628712 5701600 1627968 5701176 1625520 5701424 1628664 5701664 +1625520 5701424 1624952 5701864 1628664 5701664 1627968 5701176 +1628712 5701600 1628288 5701200 1627968 5701176 1628664 5701664 +1627968 5701176 1625592 5701352 1625520 5701424 1628664 5701664 +1628288 5701200 1628128 5701160 1627968 5701176 1628664 5701664 +1628712 5701600 1628632 5701384 1628288 5701200 1628664 5701664 +1628288 5701200 1627968 5701176 1628664 5701664 1628632 5701384 +1627968 5701176 1625520 5701424 1628664 5701664 1628288 5701200 +1628712 5701600 1628712 5701448 1628632 5701384 1628664 5701664 +1624952 5701864 1624720 5701944 1623888 5702776 1628664 5701664 +1623888 5702776 1623816 5702824 1628664 5701664 1624952 5701864 +1628712 5701600 1628664 5701664 1627336 5719640 1627384 5719672 +1628664 5701664 1620552 5714440 1627336 5719640 1627384 5719672 +1628712 5701600 1628664 5701664 1627384 5719672 1627448 5719792 +1628712 5701600 1628632 5701384 1628664 5701664 1627384 5719672 +1620552 5714440 1628552 5701744 1623816 5702824 1620512 5714368 +1628664 5701664 1628552 5701744 1620552 5714440 1627336 5719640 +1628664 5701664 1628552 5701744 1627336 5719640 1627384 5719672 +1620552 5714440 1627312 5719640 1627336 5719640 1628552 5701744 +1628552 5701744 1620552 5714440 1627336 5719640 1627384 5719672 +1628664 5701664 1623816 5702824 1628552 5701744 1627384 5719672 +1623816 5702824 1628552 5701744 1628664 5701664 1623888 5702776 +1623816 5702824 1628552 5701744 1623888 5702776 1623848 5702776 +1623816 5702824 1620552 5714440 1628552 5701744 1623888 5702776 +1628552 5701744 1627384 5719672 1628664 5701664 1623888 5702776 +1628552 5701744 1623816 5702824 1620552 5714440 1627336 5719640 +1628664 5701664 1624952 5701864 1623888 5702776 1628552 5701744 +1628664 5701664 1625520 5701424 1624952 5701864 1628552 5701744 +1628664 5701664 1627968 5701176 1625520 5701424 1628552 5701744 +1625520 5701424 1624952 5701864 1628552 5701744 1627968 5701176 +1627968 5701176 1625592 5701352 1625520 5701424 1628552 5701744 +1628664 5701664 1627968 5701176 1628552 5701744 1627384 5719672 +1623888 5702776 1623816 5702824 1628552 5701744 1624952 5701864 +1628664 5701664 1628288 5701200 1627968 5701176 1628552 5701744 +1627968 5701176 1625520 5701424 1628552 5701744 1628288 5701200 +1628664 5701664 1628632 5701384 1628288 5701200 1628552 5701744 +1628288 5701200 1628128 5701160 1627968 5701176 1628552 5701744 +1627968 5701176 1625520 5701424 1628552 5701744 1628128 5701160 +1628664 5701664 1628712 5701600 1628632 5701384 1628552 5701744 +1628664 5701664 1628632 5701384 1628552 5701744 1627384 5719672 +1628288 5701200 1628128 5701160 1628552 5701744 1628632 5701384 +1624952 5701864 1624720 5701944 1623888 5702776 1628552 5701744 +1624952 5701864 1623888 5702776 1628552 5701744 1625520 5701424 +1628664 5701664 1628552 5701744 1627384 5719672 1628712 5701600 +1625520 5701424 1628488 5701744 1628552 5701744 1627968 5701176 +1628552 5701744 1628128 5701160 1627968 5701176 1628488 5701744 +1627968 5701176 1625520 5701424 1628488 5701744 1628128 5701160 +1625520 5701424 1628488 5701744 1627968 5701176 1625592 5701352 +1628488 5701744 1628128 5701160 1627968 5701176 1625592 5701352 +1625520 5701424 1624952 5701864 1628488 5701744 1625592 5701352 +1628552 5701744 1628288 5701200 1628128 5701160 1628488 5701744 +1628128 5701160 1627968 5701176 1628488 5701744 1628288 5701200 +1628488 5701744 1624952 5701864 1628552 5701744 1628288 5701200 +1627968 5701176 1626152 5700864 1625592 5701352 1628488 5701744 +1628552 5701744 1628632 5701384 1628288 5701200 1628488 5701744 +1628552 5701744 1628664 5701664 1628632 5701384 1628488 5701744 +1628288 5701200 1628128 5701160 1628488 5701744 1628632 5701384 +1628664 5701664 1628712 5701600 1628632 5701384 1628488 5701744 +1628552 5701744 1628664 5701664 1628488 5701744 1624952 5701864 +1628632 5701384 1628288 5701200 1628488 5701744 1628664 5701664 +1628552 5701744 1628488 5701744 1624952 5701864 1623888 5702776 +1628488 5701744 1625520 5701424 1624952 5701864 1623888 5702776 +1628552 5701744 1628488 5701744 1623888 5702776 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1628488 5701744 +1628552 5701744 1628488 5701744 1623816 5702824 1620552 5714440 +1623816 5702824 1620512 5714368 1620552 5714440 1628488 5701744 +1628488 5701744 1623888 5702776 1623816 5702824 1620552 5714440 +1628552 5701744 1628488 5701744 1620552 5714440 1627336 5719640 +1628552 5701744 1628664 5701664 1628488 5701744 1620552 5714440 +1624952 5701864 1624720 5701944 1623888 5702776 1628488 5701744 +1628488 5701744 1624952 5701864 1623888 5702776 1623816 5702824 +1627968 5701176 1628320 5701688 1628488 5701744 1628128 5701160 +1628488 5701744 1628288 5701200 1628128 5701160 1628320 5701688 +1628128 5701160 1627968 5701176 1628320 5701688 1628288 5701200 +1628488 5701744 1628320 5701688 1625592 5701352 1625520 5701424 +1628320 5701688 1625520 5701424 1628488 5701744 1628288 5701200 +1628488 5701744 1628320 5701688 1625520 5701424 1624952 5701864 +1628320 5701688 1625592 5701352 1625520 5701424 1624952 5701864 +1628488 5701744 1628320 5701688 1624952 5701864 1623888 5702776 +1628488 5701744 1628288 5701200 1628320 5701688 1623888 5702776 +1628320 5701688 1625520 5701424 1624952 5701864 1623888 5702776 +1628320 5701688 1627968 5701176 1625592 5701352 1625520 5701424 +1628488 5701744 1628632 5701384 1628288 5701200 1628320 5701688 +1628288 5701200 1628128 5701160 1628320 5701688 1628632 5701384 +1628488 5701744 1628632 5701384 1628320 5701688 1623888 5702776 +1627968 5701176 1625592 5701352 1628320 5701688 1628128 5701160 +1625592 5701352 1628320 5701688 1627968 5701176 1626152 5700864 +1628488 5701744 1628664 5701664 1628632 5701384 1628320 5701688 +1624952 5701864 1624720 5701944 1623888 5702776 1628320 5701688 +1628488 5701744 1628320 5701688 1623888 5702776 1623816 5702824 +1628320 5701688 1628144 5701568 1625592 5701352 1625520 5701424 +1628320 5701688 1628144 5701568 1625520 5701424 1624952 5701864 +1628320 5701688 1628144 5701568 1624952 5701864 1623888 5702776 +1628144 5701568 1625592 5701352 1625520 5701424 1624952 5701864 +1628320 5701688 1627968 5701176 1628144 5701568 1624952 5701864 +1627968 5701176 1628144 5701568 1628320 5701688 1628128 5701160 +1628320 5701688 1628288 5701200 1628128 5701160 1628144 5701568 +1628320 5701688 1628632 5701384 1628288 5701200 1628144 5701568 +1628144 5701568 1624952 5701864 1628320 5701688 1628288 5701200 +1628128 5701160 1627968 5701176 1628144 5701568 1628288 5701200 +1628144 5701568 1627968 5701176 1625592 5701352 1625520 5701424 +1627968 5701176 1625592 5701352 1628144 5701568 1628128 5701160 +1625592 5701352 1628144 5701568 1627968 5701176 1626152 5700864 +1625592 5701352 1628144 5701568 1626152 5700864 1625616 5701256 +1627968 5701176 1626264 5700792 1626152 5700864 1628144 5701568 +1627968 5701176 1626280 5700680 1626264 5700792 1628144 5701568 +1625592 5701352 1625520 5701424 1628144 5701568 1626152 5700864 +1628144 5701568 1628128 5701160 1627968 5701176 1626264 5700792 +1626152 5700864 1625592 5701352 1628144 5701568 1626264 5700792 +1626264 5700792 1627896 5701296 1627968 5701176 1626280 5700680 +1627968 5701176 1626264 5700656 1626280 5700680 1627896 5701296 +1628144 5701568 1627896 5701296 1626264 5700792 1626152 5700864 +1628144 5701568 1627968 5701176 1627896 5701296 1626152 5700864 +1627968 5701176 1627896 5701296 1628144 5701568 1628128 5701160 +1628144 5701568 1628288 5701200 1628128 5701160 1627896 5701296 +1627896 5701296 1626152 5700864 1628144 5701568 1628128 5701160 +1626264 5700792 1626152 5700864 1627896 5701296 1626280 5700680 +1627896 5701296 1628128 5701160 1627968 5701176 1626280 5700680 +1628144 5701568 1627896 5701296 1626152 5700864 1625592 5701352 +1626152 5700864 1625616 5701256 1625592 5701352 1627896 5701296 +1627896 5701296 1626264 5700792 1626152 5700864 1625592 5701352 +1628144 5701568 1627896 5701296 1625592 5701352 1625520 5701424 +1628144 5701568 1628128 5701160 1627896 5701296 1625592 5701352 +1627896 5701296 1627904 5701200 1626280 5700680 1626264 5700792 +1626280 5700680 1627904 5701200 1627968 5701176 1626264 5700656 +1627968 5701176 1626320 5699032 1626264 5700656 1627904 5701200 +1626264 5700656 1626280 5700680 1627904 5701200 1626320 5699032 +1626320 5699032 1626200 5700576 1626264 5700656 1627904 5701200 +1627896 5701296 1627904 5701200 1626264 5700792 1626152 5700864 +1627896 5701296 1627968 5701176 1627904 5701200 1626264 5700792 +1627968 5701176 1627904 5701200 1627896 5701296 1628128 5701160 +1627904 5701200 1626264 5700656 1626280 5700680 1626264 5700792 +1627904 5701200 1627896 5701296 1627968 5701176 1626320 5699032 +1627968 5701176 1626344 5698984 1626320 5699032 1627904 5701200 +1623264 5697136 1622632 5697992 1621576 5701360 1623312 5697232 +1623264 5697136 1616624 5698656 1622632 5697992 1623312 5697232 +1621576 5701360 1622632 5697992 1616624 5698656 1616624 5698800 +1621576 5701360 1622632 5697992 1616624 5698800 1621488 5701424 +1622632 5697992 1616624 5698656 1616624 5698800 1621488 5701424 +1622632 5697992 1621488 5701424 1621576 5701360 1623312 5697232 +1616624 5698656 1616616 5698720 1616624 5698800 1622632 5697992 +1616624 5698800 1616600 5698864 1621488 5701424 1622632 5697992 +1622632 5697992 1623264 5697136 1616624 5698656 1616624 5698800 +1621576 5701360 1621712 5701344 1623312 5697232 1622632 5697992 +1621712 5701344 1623384 5697304 1623312 5697232 1622632 5697992 +1621712 5701344 1623480 5697392 1623384 5697304 1622632 5697992 +1623384 5697304 1623312 5697232 1622632 5697992 1623480 5697392 +1623312 5697232 1623264 5697136 1622632 5697992 1623384 5697304 +1621576 5701360 1621712 5701344 1622632 5697992 1621488 5701424 +1623480 5697392 1623432 5697336 1623384 5697304 1622632 5697992 +1621712 5701344 1623568 5697456 1623480 5697392 1622632 5697992 +1621712 5701344 1621816 5701384 1623568 5697456 1622632 5697992 +1621816 5701384 1622880 5701536 1623568 5697456 1622632 5697992 +1621816 5701384 1622664 5701568 1622880 5701536 1622632 5697992 +1622880 5701536 1623648 5697496 1623568 5697456 1622632 5697992 +1622880 5701536 1623648 5697496 1622632 5697992 1621816 5701384 +1621816 5701384 1622880 5701536 1622632 5697992 1621712 5701344 +1623480 5697392 1623384 5697304 1622632 5697992 1623568 5697456 +1622880 5701536 1623016 5701528 1623648 5697496 1622632 5697992 +1623016 5701528 1624344 5701024 1623648 5697496 1622632 5697992 +1623648 5697496 1623568 5697456 1622632 5697992 1624344 5701024 +1622880 5701536 1623016 5701528 1622632 5697992 1621816 5701384 +1623016 5701528 1624344 5701024 1622632 5697992 1622880 5701536 +1624344 5701024 1625032 5698608 1623648 5697496 1622632 5697992 +1624344 5701024 1624408 5700984 1625032 5698608 1622632 5697992 +1624344 5701024 1624408 5700984 1622632 5697992 1623016 5701528 +1623648 5697496 1623568 5697456 1622632 5697992 1625032 5698608 +1625032 5698608 1623672 5697496 1623648 5697496 1622632 5697992 +1623648 5697496 1623568 5697456 1622632 5697992 1623672 5697496 +1625032 5698608 1625048 5698520 1623672 5697496 1622632 5697992 +1625032 5698608 1623672 5697496 1622632 5697992 1624408 5700984 +1623016 5701528 1624288 5701080 1624344 5701024 1622632 5697992 +1624408 5700984 1625104 5698680 1625032 5698608 1622632 5697992 +1623568 5697456 1623480 5697392 1622632 5697992 1623648 5697496 +1621712 5701344 1621816 5701384 1622632 5697992 1621576 5701360 +1616624 5698656 1622632 5697992 1623264 5697136 1623272 5697000 +1622632 5697992 1623312 5697232 1623264 5697136 1623272 5697000 +1616624 5698656 1622632 5697992 1623272 5697000 1615680 5696424 +1616624 5698656 1622632 5697992 1615680 5696424 1615696 5696632 +1616624 5698656 1616624 5698800 1622632 5697992 1615680 5696424 +1623272 5697000 1615632 5696264 1615680 5696424 1622632 5697992 +1622632 5697992 1623264 5697136 1623272 5697000 1615680 5696424 +1624408 5700984 1622680 5698032 1622632 5697992 1624344 5701024 +1624408 5700984 1625032 5698608 1622680 5698032 1624344 5701024 +1622632 5697992 1623016 5701528 1624344 5701024 1622680 5698032 +1624344 5701024 1624408 5700984 1622680 5698032 1623016 5701528 +1622680 5698032 1625032 5698608 1622632 5697992 1623016 5701528 +1622632 5697992 1622880 5701536 1623016 5701528 1622680 5698032 +1623016 5701528 1624344 5701024 1622680 5698032 1622880 5701536 +1622632 5697992 1621816 5701384 1622880 5701536 1622680 5698032 +1621816 5701384 1622664 5701568 1622880 5701536 1622680 5698032 +1622632 5697992 1621712 5701344 1621816 5701384 1622680 5698032 +1621816 5701384 1622880 5701536 1622680 5698032 1621712 5701344 +1622632 5697992 1621712 5701344 1622680 5698032 1625032 5698608 +1622880 5701536 1623016 5701528 1622680 5698032 1621816 5701384 +1622632 5697992 1622680 5698032 1625032 5698608 1623672 5697496 +1622680 5698032 1624408 5700984 1625032 5698608 1623672 5697496 +1622632 5697992 1621712 5701344 1622680 5698032 1623672 5697496 +1622632 5697992 1622680 5698032 1623672 5697496 1623648 5697496 +1622632 5697992 1622680 5698032 1623648 5697496 1623568 5697456 +1622632 5697992 1621712 5701344 1622680 5698032 1623568 5697456 +1622680 5698032 1623672 5697496 1623648 5697496 1623568 5697456 +1625032 5698608 1625048 5698520 1623672 5697496 1622680 5698032 +1622680 5698032 1625032 5698608 1623672 5697496 1623648 5697496 +1623016 5701528 1624288 5701080 1624344 5701024 1622680 5698032 +1625032 5698608 1622680 5698032 1624408 5700984 1625104 5698680 +1622632 5697992 1622680 5698032 1623568 5697456 1623480 5697392 +1622680 5698032 1623648 5697496 1623568 5697456 1623480 5697392 +1622632 5697992 1621712 5701344 1622680 5698032 1623480 5697392 +1622632 5697992 1622680 5698032 1623480 5697392 1623384 5697304 +1622632 5697992 1621712 5701344 1622680 5698032 1623384 5697304 +1622632 5697992 1622680 5698032 1623384 5697304 1623312 5697232 +1622632 5697992 1621712 5701344 1622680 5698032 1623312 5697232 +1622680 5698032 1623480 5697392 1623384 5697304 1623312 5697232 +1622632 5697992 1622680 5698032 1623312 5697232 1623264 5697136 +1623480 5697392 1623432 5697336 1623384 5697304 1622680 5698032 +1622680 5698032 1623568 5697456 1623480 5697392 1623384 5697304 +1622632 5697992 1621576 5701360 1621712 5701344 1622680 5698032 +1624408 5700984 1622704 5698072 1622680 5698032 1624344 5701024 +1624408 5700984 1625032 5698608 1622704 5698072 1624344 5701024 +1622680 5698032 1623016 5701528 1624344 5701024 1622704 5698072 +1624344 5701024 1624408 5700984 1622704 5698072 1623016 5701528 +1622680 5698032 1622704 5698072 1625032 5698608 1623672 5697496 +1622704 5698072 1624408 5700984 1625032 5698608 1623672 5697496 +1622704 5698072 1623672 5697496 1622680 5698032 1623016 5701528 +1622680 5698032 1622880 5701536 1623016 5701528 1622704 5698072 +1623016 5701528 1624344 5701024 1622704 5698072 1622880 5701536 +1622680 5698032 1622880 5701536 1622704 5698072 1623672 5697496 +1625032 5698608 1625048 5698520 1623672 5697496 1622704 5698072 +1622680 5698032 1621816 5701384 1622880 5701536 1622704 5698072 +1621816 5701384 1622664 5701568 1622880 5701536 1622704 5698072 +1622680 5698032 1621816 5701384 1622704 5698072 1623672 5697496 +1622880 5701536 1623016 5701528 1622704 5698072 1621816 5701384 +1622680 5698032 1621712 5701344 1621816 5701384 1622704 5698072 +1622680 5698032 1621712 5701344 1622704 5698072 1623672 5697496 +1622680 5698032 1622632 5697992 1621712 5701344 1622704 5698072 +1622680 5698032 1622632 5697992 1622704 5698072 1623672 5697496 +1621712 5701344 1621816 5701384 1622704 5698072 1622632 5697992 +1621816 5701384 1622880 5701536 1622704 5698072 1621712 5701344 +1622680 5698032 1622704 5698072 1623672 5697496 1623648 5697496 +1622704 5698072 1625032 5698608 1623672 5697496 1623648 5697496 +1622680 5698032 1622632 5697992 1622704 5698072 1623648 5697496 +1622680 5698032 1622704 5698072 1623648 5697496 1623568 5697456 +1622680 5698032 1622632 5697992 1622704 5698072 1623568 5697456 +1622680 5698032 1622704 5698072 1623568 5697456 1623480 5697392 +1622680 5698032 1622632 5697992 1622704 5698072 1623480 5697392 +1622704 5698072 1623648 5697496 1623568 5697456 1623480 5697392 +1622704 5698072 1623672 5697496 1623648 5697496 1623568 5697456 +1623016 5701528 1624288 5701080 1624344 5701024 1622704 5698072 +1625032 5698608 1622704 5698072 1624408 5700984 1625104 5698680 +1622680 5698032 1622704 5698072 1623480 5697392 1623384 5697304 +1622632 5697992 1621576 5701360 1621712 5701344 1622704 5698072 +1621712 5701344 1621816 5701384 1622704 5698072 1621576 5701360 +1622632 5697992 1621576 5701360 1622704 5698072 1622680 5698032 +1622632 5697992 1621488 5701424 1621576 5701360 1622704 5698072 +1623016 5701528 1622728 5698144 1622704 5698072 1622880 5701536 +1622728 5698144 1624344 5701024 1622704 5698072 1622880 5701536 +1623016 5701528 1624344 5701024 1622728 5698144 1622880 5701536 +1622704 5698072 1622728 5698144 1624344 5701024 1624408 5700984 +1622704 5698072 1622880 5701536 1622728 5698144 1624408 5700984 +1622704 5698072 1622728 5698144 1624408 5700984 1625032 5698608 +1622704 5698072 1622880 5701536 1622728 5698144 1625032 5698608 +1622728 5698144 1623016 5701528 1624344 5701024 1624408 5700984 +1622728 5698144 1624344 5701024 1624408 5700984 1625032 5698608 +1622704 5698072 1622728 5698144 1625032 5698608 1623672 5697496 +1622704 5698072 1622880 5701536 1622728 5698144 1623672 5697496 +1622728 5698144 1624408 5700984 1625032 5698608 1623672 5697496 +1622704 5698072 1622728 5698144 1623672 5697496 1623648 5697496 +1622704 5698072 1622880 5701536 1622728 5698144 1623648 5697496 +1622728 5698144 1625032 5698608 1623672 5697496 1623648 5697496 +1622704 5698072 1621816 5701384 1622880 5701536 1622728 5698144 +1622704 5698072 1621816 5701384 1622728 5698144 1623648 5697496 +1621816 5701384 1622664 5701568 1622880 5701536 1622728 5698144 +1622880 5701536 1623016 5701528 1622728 5698144 1621816 5701384 +1625032 5698608 1625048 5698520 1623672 5697496 1622728 5698144 +1622704 5698072 1621712 5701344 1621816 5701384 1622728 5698144 +1622704 5698072 1621712 5701344 1622728 5698144 1623648 5697496 +1621816 5701384 1622880 5701536 1622728 5698144 1621712 5701344 +1622704 5698072 1621576 5701360 1621712 5701344 1622728 5698144 +1622704 5698072 1621576 5701360 1622728 5698144 1623648 5697496 +1621712 5701344 1621816 5701384 1622728 5698144 1621576 5701360 +1622704 5698072 1622728 5698144 1623648 5697496 1623568 5697456 +1622704 5698072 1621576 5701360 1622728 5698144 1623568 5697456 +1622728 5698144 1623672 5697496 1623648 5697496 1623568 5697456 +1622704 5698072 1622728 5698144 1623568 5697456 1623480 5697392 +1624344 5701024 1622728 5698144 1623016 5701528 1624288 5701080 +1624408 5700984 1625104 5698680 1625032 5698608 1622728 5698144 +1622704 5698072 1622632 5697992 1621576 5701360 1622728 5698144 +1622704 5698072 1622632 5697992 1622728 5698144 1623568 5697456 +1621576 5701360 1621712 5701344 1622728 5698144 1622632 5697992 +1622704 5698072 1622680 5698032 1622632 5697992 1622728 5698144 +1622632 5697992 1621488 5701424 1621576 5701360 1622728 5698144 +1622880 5701536 1622712 5698216 1621816 5701384 1622664 5701568 +1622728 5698144 1622712 5698216 1622880 5701536 1623016 5701528 +1622728 5698144 1621816 5701384 1622712 5698216 1623016 5701528 +1622728 5698144 1622712 5698216 1623016 5701528 1624344 5701024 +1622728 5698144 1622712 5698216 1624344 5701024 1624408 5700984 +1622728 5698144 1621816 5701384 1622712 5698216 1624408 5700984 +1622712 5698216 1623016 5701528 1624344 5701024 1624408 5700984 +1622712 5698216 1622880 5701536 1623016 5701528 1624344 5701024 +1622728 5698144 1622712 5698216 1624408 5700984 1625032 5698608 +1622728 5698144 1622712 5698216 1625032 5698608 1623672 5697496 +1622712 5698216 1624344 5701024 1624408 5700984 1625032 5698608 +1622728 5698144 1621816 5701384 1622712 5698216 1623672 5697496 +1622712 5698216 1624408 5700984 1625032 5698608 1623672 5697496 +1622728 5698144 1622712 5698216 1623672 5697496 1623648 5697496 +1622712 5698216 1625032 5698608 1623672 5697496 1623648 5697496 +1622728 5698144 1621816 5701384 1622712 5698216 1623648 5697496 +1622728 5698144 1622712 5698216 1623648 5697496 1623568 5697456 +1621816 5701384 1622712 5698216 1622728 5698144 1621712 5701344 +1622712 5698216 1623648 5697496 1622728 5698144 1621712 5701344 +1625032 5698608 1625048 5698520 1623672 5697496 1622712 5698216 +1622728 5698144 1621576 5701360 1621712 5701344 1622712 5698216 +1622728 5698144 1621576 5701360 1622712 5698216 1623648 5697496 +1621712 5701344 1621816 5701384 1622712 5698216 1621576 5701360 +1622728 5698144 1622632 5697992 1621576 5701360 1622712 5698216 +1622728 5698144 1622632 5697992 1622712 5698216 1623648 5697496 +1622632 5697992 1621488 5701424 1621576 5701360 1622712 5698216 +1621576 5701360 1621712 5701344 1622712 5698216 1622632 5697992 +1622712 5698216 1621816 5701384 1622880 5701536 1623016 5701528 +1621816 5701384 1622880 5701536 1622712 5698216 1621712 5701344 +1623016 5701528 1624288 5701080 1624344 5701024 1622712 5698216 +1624408 5700984 1625104 5698680 1625032 5698608 1622712 5698216 +1622728 5698144 1622704 5698072 1622632 5697992 1622712 5698216 +1622728 5698144 1622704 5698072 1622712 5698216 1623648 5697496 +1622632 5697992 1621576 5701360 1622712 5698216 1622704 5698072 +1622704 5698072 1622680 5698032 1622632 5697992 1622712 5698216 +1622632 5697992 1622656 5698272 1622712 5698216 1622704 5698072 +1622632 5697992 1622656 5698272 1622704 5698072 1622680 5698032 +1621576 5701360 1622656 5698272 1622632 5697992 1621488 5701424 +1622632 5697992 1616624 5698800 1621488 5701424 1622656 5698272 +1622632 5697992 1616624 5698656 1616624 5698800 1622656 5698272 +1616624 5698800 1621488 5701424 1622656 5698272 1616624 5698656 +1621488 5701424 1621576 5701360 1622656 5698272 1616624 5698800 +1616624 5698656 1616616 5698720 1616624 5698800 1622656 5698272 +1616624 5698800 1616600 5698864 1621488 5701424 1622656 5698272 +1622632 5697992 1615680 5696424 1616624 5698656 1622656 5698272 +1622712 5698216 1622656 5698272 1621576 5701360 1621712 5701344 +1622712 5698216 1622656 5698272 1621712 5701344 1621816 5701384 +1622656 5698272 1621576 5701360 1621712 5701344 1621816 5701384 +1622656 5698272 1621816 5701384 1622712 5698216 1622704 5698072 +1622712 5698216 1622656 5698272 1621816 5701384 1622880 5701536 +1621816 5701384 1622664 5701568 1622880 5701536 1622656 5698272 +1622656 5698272 1621712 5701344 1621816 5701384 1622880 5701536 +1622712 5698216 1622656 5698272 1622880 5701536 1623016 5701528 +1622712 5698216 1622656 5698272 1623016 5701528 1624344 5701024 +1622712 5698216 1622656 5698272 1624344 5701024 1624408 5700984 +1622712 5698216 1622656 5698272 1624408 5700984 1625032 5698608 +1622656 5698272 1624344 5701024 1624408 5700984 1625032 5698608 +1622656 5698272 1623016 5701528 1624344 5701024 1624408 5700984 +1622712 5698216 1622656 5698272 1625032 5698608 1623672 5697496 +1622656 5698272 1622880 5701536 1623016 5701528 1624344 5701024 +1622712 5698216 1622704 5698072 1622656 5698272 1625032 5698608 +1622656 5698272 1621816 5701384 1622880 5701536 1623016 5701528 +1621576 5701360 1621712 5701344 1622656 5698272 1621488 5701424 +1623016 5701528 1624288 5701080 1624344 5701024 1622656 5698272 +1624408 5700984 1625104 5698680 1625032 5698608 1622656 5698272 +1622632 5697992 1616624 5698656 1622656 5698272 1622704 5698072 +1622712 5698216 1622728 5698144 1622704 5698072 1622656 5698272 +1622704 5698072 1622632 5697992 1622656 5698272 1622728 5698144 +1622712 5698216 1622728 5698144 1622656 5698272 1625032 5698608 +1616624 5698800 1622536 5698344 1622656 5698272 1616624 5698656 +1622656 5698272 1622632 5697992 1616624 5698656 1622536 5698344 +1616624 5698656 1616624 5698800 1622536 5698344 1622632 5697992 +1622656 5698272 1622536 5698344 1621488 5701424 1621576 5701360 +1616624 5698800 1622536 5698344 1616624 5698656 1616616 5698720 +1621488 5701424 1622536 5698344 1616624 5698800 1616600 5698864 +1622632 5697992 1615680 5696424 1616624 5698656 1622536 5698344 +1622656 5698272 1622536 5698344 1621576 5701360 1621712 5701344 +1622536 5698344 1621488 5701424 1621576 5701360 1621712 5701344 +1622656 5698272 1622536 5698344 1621712 5701344 1621816 5701384 +1622656 5698272 1622536 5698344 1621816 5701384 1622880 5701536 +1621816 5701384 1622664 5701568 1622880 5701536 1622536 5698344 +1622536 5698344 1621712 5701344 1621816 5701384 1622880 5701536 +1622656 5698272 1622536 5698344 1622880 5701536 1623016 5701528 +1622536 5698344 1621816 5701384 1622880 5701536 1623016 5701528 +1622656 5698272 1622536 5698344 1623016 5701528 1624344 5701024 +1622656 5698272 1622536 5698344 1624344 5701024 1624408 5700984 +1622536 5698344 1622880 5701536 1623016 5701528 1624344 5701024 +1622536 5698344 1621576 5701360 1621712 5701344 1621816 5701384 +1622536 5698344 1624344 5701024 1622656 5698272 1622632 5697992 +1623016 5701528 1624288 5701080 1624344 5701024 1622536 5698344 +1622656 5698272 1622704 5698072 1622632 5697992 1622536 5698344 +1622536 5698344 1616624 5698800 1621488 5701424 1621576 5701360 +1616624 5698800 1621488 5701424 1622536 5698344 1616624 5698656 +1621488 5701424 1622424 5698368 1616624 5698800 1616600 5698864 +1622536 5698344 1622424 5698368 1621488 5701424 1621576 5701360 +1622536 5698344 1622424 5698368 1621576 5701360 1621712 5701344 +1622536 5698344 1622424 5698368 1621712 5701344 1621816 5701384 +1622424 5698368 1621576 5701360 1621712 5701344 1621816 5701384 +1622536 5698344 1622424 5698368 1621816 5701384 1622880 5701536 +1621816 5701384 1622664 5701568 1622880 5701536 1622424 5698368 +1622536 5698344 1622424 5698368 1622880 5701536 1623016 5701528 +1622424 5698368 1621712 5701344 1621816 5701384 1622880 5701536 +1622424 5698368 1621488 5701424 1621576 5701360 1621712 5701344 +1622536 5698344 1616624 5698800 1622424 5698368 1622880 5701536 +1616624 5698800 1622424 5698368 1622536 5698344 1616624 5698656 +1622536 5698344 1622632 5697992 1616624 5698656 1622424 5698368 +1616624 5698800 1621488 5701424 1622424 5698368 1616624 5698656 +1622536 5698344 1622656 5698272 1622632 5697992 1622424 5698368 +1616624 5698800 1622424 5698368 1616624 5698656 1616616 5698720 +1622632 5697992 1615680 5696424 1616624 5698656 1622424 5698368 +1622424 5698368 1622880 5701536 1622536 5698344 1622632 5697992 +1616624 5698656 1616624 5698800 1622424 5698368 1622632 5697992 +1622424 5698368 1616624 5698800 1621488 5701424 1621576 5701360 +1622632 5697992 1622296 5698320 1622424 5698368 1622536 5698344 +1622296 5698320 1616624 5698656 1622424 5698368 1622536 5698344 +1622632 5697992 1616624 5698656 1622296 5698320 1622536 5698344 +1622632 5697992 1622296 5698320 1622536 5698344 1622656 5698272 +1616624 5698656 1622296 5698320 1622632 5697992 1615680 5696424 +1622632 5697992 1623272 5697000 1615680 5696424 1622296 5698320 +1616624 5698656 1622424 5698368 1622296 5698320 1615680 5696424 +1622296 5698320 1622536 5698344 1622632 5697992 1623272 5697000 +1616624 5698656 1622296 5698320 1615680 5696424 1615696 5696632 +1615680 5696424 1616624 5698656 1622296 5698320 1623272 5697000 +1623272 5697000 1615632 5696264 1615680 5696424 1622296 5698320 +1622424 5698368 1622296 5698320 1616624 5698656 1616624 5698800 +1622424 5698368 1622536 5698344 1622296 5698320 1616624 5698800 +1622424 5698368 1622296 5698320 1616624 5698800 1621488 5701424 +1622424 5698368 1622536 5698344 1622296 5698320 1621488 5701424 +1622296 5698320 1615680 5696424 1616624 5698656 1616624 5698800 +1616624 5698656 1616616 5698720 1616624 5698800 1622296 5698320 +1616624 5698800 1616600 5698864 1621488 5701424 1622296 5698320 +1622296 5698320 1616624 5698656 1616624 5698800 1621488 5701424 +1622424 5698368 1622296 5698320 1621488 5701424 1621576 5701360 +1622424 5698368 1622536 5698344 1622296 5698320 1621576 5701360 +1622296 5698320 1616624 5698800 1621488 5701424 1621576 5701360 +1622424 5698368 1622296 5698320 1621576 5701360 1621712 5701344 +1622424 5698368 1622536 5698344 1622296 5698320 1621712 5701344 +1622424 5698368 1622296 5698320 1621712 5701344 1621816 5701384 +1622296 5698320 1621488 5701424 1621576 5701360 1621712 5701344 +1622632 5697992 1623264 5697136 1623272 5697000 1622296 5698320 +1623272 5697000 1622064 5698152 1622296 5698320 1622632 5697992 +1623272 5697000 1615680 5696424 1622064 5698152 1622632 5697992 +1622064 5698152 1615680 5696424 1622296 5698320 1622632 5697992 +1622296 5698320 1622536 5698344 1622632 5697992 1622064 5698152 +1622296 5698320 1622064 5698152 1615680 5696424 1616624 5698656 +1622064 5698152 1623272 5697000 1615680 5696424 1616624 5698656 +1622296 5698320 1622064 5698152 1616624 5698656 1616624 5698800 +1622296 5698320 1622632 5697992 1622064 5698152 1616624 5698800 +1615680 5696424 1615696 5696632 1616624 5698656 1622064 5698152 +1615680 5696424 1615696 5696632 1622064 5698152 1623272 5697000 +1615696 5696632 1616592 5698624 1616624 5698656 1622064 5698152 +1616624 5698656 1616616 5698720 1616624 5698800 1622064 5698152 +1622064 5698152 1615696 5696632 1616624 5698656 1616624 5698800 +1615680 5696424 1622064 5698152 1623272 5697000 1615632 5696264 +1615680 5696424 1615696 5696632 1622064 5698152 1615632 5696264 +1622064 5698152 1622632 5697992 1623272 5697000 1615632 5696264 +1623272 5697000 1615512 5696024 1615632 5696264 1622064 5698152 +1622296 5698320 1622064 5698152 1616624 5698800 1621488 5701424 +1622296 5698320 1622064 5698152 1621488 5701424 1621576 5701360 +1622064 5698152 1616624 5698656 1616624 5698800 1621488 5701424 +1622296 5698320 1622632 5697992 1622064 5698152 1621576 5701360 +1616624 5698800 1616600 5698864 1621488 5701424 1622064 5698152 +1622064 5698152 1616624 5698800 1621488 5701424 1621576 5701360 +1622296 5698320 1622064 5698152 1621576 5701360 1621712 5701344 +1623272 5697000 1622064 5698152 1622632 5697992 1623264 5697136 +1623272 5697000 1621944 5698008 1622064 5698152 1622632 5697992 +1621944 5698008 1615632 5696264 1622064 5698152 1622632 5697992 +1622064 5698152 1622296 5698320 1622632 5697992 1621944 5698008 +1615632 5696264 1621944 5698008 1623272 5697000 1615512 5696024 +1615632 5696264 1622064 5698152 1621944 5698008 1615512 5696024 +1623272 5697000 1615376 5695816 1615512 5696024 1621944 5698008 +1623272 5697000 1615512 5696024 1621944 5698008 1622632 5697992 +1622064 5698152 1621944 5698008 1615632 5696264 1615680 5696424 +1622064 5698152 1621944 5698008 1615680 5696424 1615696 5696632 +1622064 5698152 1622632 5697992 1621944 5698008 1615696 5696632 +1621944 5698008 1615512 5696024 1615632 5696264 1615680 5696424 +1622064 5698152 1621944 5698008 1615696 5696632 1616624 5698656 +1621944 5698008 1615680 5696424 1615696 5696632 1616624 5698656 +1622064 5698152 1622632 5697992 1621944 5698008 1616624 5698656 +1615696 5696632 1616592 5698624 1616624 5698656 1621944 5698008 +1622064 5698152 1621944 5698008 1616624 5698656 1616624 5698800 +1622064 5698152 1622632 5697992 1621944 5698008 1616624 5698800 +1622064 5698152 1621944 5698008 1616624 5698800 1621488 5701424 +1622064 5698152 1622632 5697992 1621944 5698008 1621488 5701424 +1621944 5698008 1615696 5696632 1616624 5698656 1616624 5698800 +1616624 5698656 1616616 5698720 1616624 5698800 1621944 5698008 +1616624 5698800 1616600 5698864 1621488 5701424 1621944 5698008 +1621944 5698008 1616624 5698656 1616624 5698800 1621488 5701424 +1621944 5698008 1615632 5696264 1615680 5696424 1615696 5696632 +1622064 5698152 1621944 5698008 1621488 5701424 1621576 5701360 +1622064 5698152 1622632 5697992 1621944 5698008 1621576 5701360 +1622064 5698152 1621944 5698008 1621576 5701360 1622296 5698320 +1621944 5698008 1616624 5698800 1621488 5701424 1621576 5701360 +1623272 5697000 1621944 5698008 1622632 5697992 1623264 5697136 +1621944 5698008 1622064 5698152 1622632 5697992 1623264 5697136 +1622632 5697992 1623312 5697232 1623264 5697136 1621944 5698008 +1623272 5697000 1615512 5696024 1621944 5698008 1623264 5697136 +1615512 5696024 1621936 5697864 1623272 5697000 1615376 5695816 +1621944 5698008 1621936 5697864 1615512 5696024 1615632 5696264 +1621944 5698008 1621936 5697864 1615632 5696264 1615680 5696424 +1621944 5698008 1623272 5697000 1621936 5697864 1615680 5696424 +1621936 5697864 1615512 5696024 1615632 5696264 1615680 5696424 +1623272 5697000 1621936 5697864 1621944 5698008 1623264 5697136 +1621936 5697864 1615680 5696424 1621944 5698008 1623264 5697136 +1623272 5697000 1615512 5696024 1621936 5697864 1623264 5697136 +1621936 5697864 1623272 5697000 1615512 5696024 1615632 5696264 +1621944 5698008 1621936 5697864 1615680 5696424 1615696 5696632 +1621944 5698008 1621936 5697864 1615696 5696632 1616624 5698656 +1621936 5697864 1615632 5696264 1615680 5696424 1615696 5696632 +1621944 5698008 1623264 5697136 1621936 5697864 1616624 5698656 +1615696 5696632 1616592 5698624 1616624 5698656 1621936 5697864 +1621944 5698008 1621936 5697864 1616624 5698656 1616624 5698800 +1621936 5697864 1615680 5696424 1615696 5696632 1616624 5698656 +1621944 5698008 1622632 5697992 1623264 5697136 1621936 5697864 +1621944 5698008 1622064 5698152 1622632 5697992 1621936 5697864 +1621944 5698008 1622064 5698152 1621936 5697864 1616624 5698656 +1622632 5697992 1623312 5697232 1623264 5697136 1621936 5697864 +1622064 5698152 1622296 5698320 1622632 5697992 1621936 5697864 +1623264 5697136 1623272 5697000 1621936 5697864 1622632 5697992 +1622632 5697992 1623264 5697136 1621936 5697864 1622064 5698152 +1623264 5697136 1621968 5697856 1622632 5697992 1623312 5697232 +1621936 5697864 1621968 5697856 1623264 5697136 1623272 5697000 +1621936 5697864 1621968 5697856 1623272 5697000 1615512 5696024 +1621968 5697856 1622632 5697992 1623264 5697136 1623272 5697000 +1621936 5697864 1622632 5697992 1621968 5697856 1623272 5697000 +1622632 5697992 1621968 5697856 1621936 5697864 1622064 5698152 +1621936 5697864 1621944 5698008 1622064 5698152 1621968 5697856 +1622632 5697992 1623264 5697136 1621968 5697856 1622064 5698152 +1622632 5697992 1621968 5697856 1622064 5698152 1622296 5698320 +1621968 5697856 1623272 5697000 1621936 5697864 1621944 5698008 +1622064 5698152 1622632 5697992 1621968 5697856 1621944 5698008 +1621936 5697864 1622016 5697816 1623272 5697000 1615512 5696024 +1622016 5697816 1621968 5697856 1623272 5697000 1615512 5696024 +1621936 5697864 1621968 5697856 1622016 5697816 1615512 5696024 +1623272 5697000 1615376 5695816 1615512 5696024 1622016 5697816 +1623272 5697000 1622016 5697816 1621968 5697856 1623264 5697136 +1623272 5697000 1615512 5696024 1622016 5697816 1623264 5697136 +1621968 5697856 1622632 5697992 1623264 5697136 1622016 5697816 +1622016 5697816 1621936 5697864 1621968 5697856 1622632 5697992 +1621968 5697856 1622064 5698152 1622632 5697992 1622016 5697816 +1622632 5697992 1623264 5697136 1622016 5697816 1622064 5698152 +1621968 5697856 1622064 5698152 1622016 5697816 1621936 5697864 +1622632 5697992 1623312 5697232 1623264 5697136 1622016 5697816 +1622064 5698152 1622296 5698320 1622632 5697992 1622016 5697816 +1623264 5697136 1623272 5697000 1622016 5697816 1622632 5697992 +1621936 5697864 1622016 5697816 1615512 5696024 1615632 5696264 +1621968 5697856 1621944 5698008 1622064 5698152 1622016 5697816 +1621968 5697856 1621936 5697864 1621944 5698008 1622016 5697816 +1621968 5697856 1621944 5698008 1622016 5697816 1621936 5697864 +1622064 5698152 1622632 5697992 1622016 5697816 1621944 5698008 +1622632 5697992 1622080 5697800 1622016 5697816 1622064 5698152 +1622632 5697992 1623264 5697136 1622080 5697800 1622064 5698152 +1622080 5697800 1623264 5697136 1622016 5697816 1622064 5698152 +1622016 5697816 1621944 5698008 1622064 5698152 1622080 5697800 +1622016 5697816 1621944 5698008 1622080 5697800 1623264 5697136 +1622064 5698152 1622632 5697992 1622080 5697800 1621944 5698008 +1623264 5697136 1622080 5697800 1622632 5697992 1623312 5697232 +1622632 5697992 1622080 5697800 1622064 5698152 1622296 5698320 +1622016 5697816 1622080 5697800 1623264 5697136 1623272 5697000 +1622080 5697800 1622632 5697992 1623264 5697136 1623272 5697000 +1622016 5697816 1621944 5698008 1622080 5697800 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1615512 5696024 +1622016 5697816 1621968 5697856 1621944 5698008 1622080 5697800 +1621968 5697856 1621936 5697864 1621944 5698008 1622080 5697800 +1622016 5697816 1621968 5697856 1622080 5697800 1623272 5697000 +1621944 5698008 1622064 5698152 1622080 5697800 1621968 5697856 +1622080 5697800 1622272 5697816 1623264 5697136 1623272 5697000 +1622080 5697800 1622632 5697992 1622272 5697816 1623272 5697000 +1622632 5697992 1622272 5697816 1622080 5697800 1622064 5698152 +1622632 5697992 1623264 5697136 1622272 5697816 1622064 5698152 +1622272 5697816 1623272 5697000 1622080 5697800 1622064 5698152 +1622272 5697816 1622632 5697992 1623264 5697136 1623272 5697000 +1622080 5697800 1621944 5698008 1622064 5698152 1622272 5697816 +1623264 5697136 1622272 5697816 1622632 5697992 1623312 5697232 +1622632 5697992 1622272 5697816 1622064 5698152 1622296 5698320 +1622632 5697992 1623264 5697136 1622272 5697816 1622296 5698320 +1622272 5697816 1622080 5697800 1622064 5698152 1622296 5698320 +1622632 5697992 1622272 5697816 1622296 5698320 1622536 5698344 +1622080 5697800 1622272 5697816 1623272 5697000 1622016 5697816 +1622632 5697992 1622408 5697856 1622272 5697816 1622296 5698320 +1622272 5697816 1622408 5697856 1623264 5697136 1623272 5697000 +1622408 5697856 1623264 5697136 1622272 5697816 1622296 5698320 +1623264 5697136 1622408 5697856 1622632 5697992 1623312 5697232 +1623264 5697136 1622272 5697816 1622408 5697856 1623312 5697232 +1622272 5697816 1622064 5698152 1622296 5698320 1622408 5697856 +1622296 5698320 1622632 5697992 1622408 5697856 1622064 5698152 +1622272 5697816 1622080 5697800 1622064 5698152 1622408 5697856 +1622272 5697816 1622064 5698152 1622408 5697856 1623264 5697136 +1622632 5697992 1622408 5697856 1622296 5698320 1622536 5698344 +1622632 5697992 1622680 5698032 1623312 5697232 1622408 5697856 +1622632 5697992 1623312 5697232 1622408 5697856 1622296 5698320 +1627336 5719640 1627904 5703304 1620552 5714440 1627312 5719640 +1628552 5701744 1627904 5703304 1627336 5719640 1627384 5719672 +1628552 5701744 1627904 5703304 1627384 5719672 1628664 5701664 +1627904 5703304 1627336 5719640 1627384 5719672 1628664 5701664 +1620552 5714440 1627904 5703304 1628552 5701744 1628488 5701744 +1620552 5714440 1627336 5719640 1627904 5703304 1628488 5701744 +1620552 5714440 1627904 5703304 1628488 5701744 1623816 5702824 +1620552 5714440 1627904 5703304 1623816 5702824 1620512 5714368 +1623816 5702824 1623720 5702872 1620512 5714368 1627904 5703304 +1620512 5714368 1620552 5714440 1627904 5703304 1623720 5702872 +1623720 5702872 1620160 5713848 1620512 5714368 1627904 5703304 +1623720 5702872 1621944 5703896 1620160 5713848 1627904 5703304 +1621944 5703896 1620104 5713768 1620160 5713848 1627904 5703304 +1621944 5703896 1620104 5713768 1627904 5703304 1623720 5702872 +1621944 5703896 1620040 5713712 1620104 5713768 1627904 5703304 +1620512 5714368 1620552 5714440 1627904 5703304 1620160 5713848 +1623720 5702872 1623616 5702904 1621944 5703896 1627904 5703304 +1623720 5702872 1621944 5703896 1627904 5703304 1623816 5702824 +1620160 5713848 1620512 5714368 1627904 5703304 1620104 5713768 +1620552 5714440 1627336 5719640 1627904 5703304 1620512 5714368 +1627904 5703304 1628488 5701744 1623816 5702824 1623720 5702872 +1628488 5701744 1623888 5702776 1623816 5702824 1627904 5703304 +1623888 5702776 1623848 5702776 1623816 5702824 1627904 5703304 +1623816 5702824 1623720 5702872 1627904 5703304 1623888 5702776 +1627904 5703304 1628552 5701744 1628488 5701744 1623888 5702776 +1620160 5713848 1620272 5714120 1620512 5714368 1627904 5703304 +1627904 5703304 1620552 5714440 1627336 5719640 1627384 5719672 +1628488 5701744 1628320 5701688 1623888 5702776 1627904 5703304 +1628320 5701688 1624952 5701864 1623888 5702776 1627904 5703304 +1628320 5701688 1628144 5701568 1624952 5701864 1627904 5703304 +1628144 5701568 1625520 5701424 1624952 5701864 1627904 5703304 +1624952 5701864 1623888 5702776 1627904 5703304 1625520 5701424 +1628144 5701568 1625520 5701424 1627904 5703304 1628320 5701688 +1628144 5701568 1625592 5701352 1625520 5701424 1627904 5703304 +1625520 5701424 1624952 5701864 1627904 5703304 1625592 5701352 +1628144 5701568 1625592 5701352 1627904 5703304 1628320 5701688 +1628144 5701568 1627896 5701296 1625592 5701352 1627904 5703304 +1628144 5701568 1627896 5701296 1627904 5703304 1628320 5701688 +1625592 5701352 1625520 5701424 1627904 5703304 1627896 5701296 +1623888 5702776 1623816 5702824 1627904 5703304 1624952 5701864 +1628488 5701744 1628320 5701688 1627904 5703304 1628552 5701744 +1627896 5701296 1626152 5700864 1625592 5701352 1627904 5703304 +1624952 5701864 1624720 5701944 1623888 5702776 1627904 5703304 +1628320 5701688 1628144 5701568 1627904 5703304 1628488 5701744 +1627384 5719672 1628712 5701600 1628664 5701664 1627904 5703304 +1628664 5701664 1628552 5701744 1627904 5703304 1628712 5701600 +1627384 5719672 1628712 5701600 1627904 5703304 1627336 5719640 +1627384 5719672 1627448 5719792 1628712 5701600 1627904 5703304 +1627384 5719672 1627400 5719704 1627448 5719792 1627904 5703304 +1627384 5719672 1627448 5719792 1627904 5703304 1627336 5719640 +1628712 5701600 1628664 5701664 1627904 5703304 1627448 5719792 +1627448 5719792 1629944 5726576 1628712 5701600 1627904 5703304 +1628552 5701744 1628488 5701744 1627904 5703304 1628664 5701664 +1627904 5703304 1628360 5703512 1628712 5701600 1628664 5701664 +1627904 5703304 1628360 5703512 1628664 5701664 1628552 5701744 +1628360 5703512 1627448 5719792 1628712 5701600 1628664 5701664 +1627904 5703304 1627448 5719792 1628360 5703512 1628552 5701744 +1628360 5703512 1628712 5701600 1628664 5701664 1628552 5701744 +1627448 5719792 1628360 5703512 1627904 5703304 1627384 5719672 +1627448 5719792 1628360 5703512 1627384 5719672 1627400 5719704 +1627448 5719792 1628712 5701600 1628360 5703512 1627384 5719672 +1627904 5703304 1627336 5719640 1627384 5719672 1628360 5703512 +1627904 5703304 1620552 5714440 1627336 5719640 1628360 5703512 +1627904 5703304 1620512 5714368 1620552 5714440 1628360 5703512 +1627904 5703304 1620160 5713848 1620512 5714368 1628360 5703512 +1627904 5703304 1620104 5713768 1620160 5713848 1628360 5703512 +1627904 5703304 1621944 5703896 1620104 5713768 1628360 5703512 +1627904 5703304 1623720 5702872 1621944 5703896 1628360 5703512 +1621944 5703896 1620040 5713712 1620104 5713768 1628360 5703512 +1620160 5713848 1620512 5714368 1628360 5703512 1620104 5713768 +1620104 5713768 1620160 5713848 1628360 5703512 1621944 5703896 +1620512 5714368 1620552 5714440 1628360 5703512 1620160 5713848 +1620552 5714440 1627312 5719640 1627336 5719640 1628360 5703512 +1627336 5719640 1627384 5719672 1628360 5703512 1620552 5714440 +1620160 5713848 1620272 5714120 1620512 5714368 1628360 5703512 +1620552 5714440 1627336 5719640 1628360 5703512 1620512 5714368 +1628360 5703512 1628552 5701744 1627904 5703304 1621944 5703896 +1627384 5719672 1627448 5719792 1628360 5703512 1627336 5719640 +1628712 5701600 1628360 5703512 1627448 5719792 1629944 5726576 +1627448 5719792 1629736 5726176 1629944 5726576 1628360 5703512 +1628712 5701600 1628664 5701664 1628360 5703512 1629944 5726576 +1628360 5703512 1627384 5719672 1627448 5719792 1629944 5726576 +1628712 5701600 1628360 5703512 1629944 5726576 1743800 5687320 +1627904 5703304 1628360 5703512 1628552 5701744 1628488 5701744 +1628360 5703512 1628664 5701664 1628552 5701744 1628488 5701744 +1627904 5703304 1628360 5703512 1628488 5701744 1628320 5701688 +1627904 5703304 1621944 5703896 1628360 5703512 1628488 5701744 +1628360 5703512 1628448 5703536 1628712 5701600 1628664 5701664 +1628360 5703512 1629944 5726576 1628448 5703536 1628664 5701664 +1628360 5703512 1628448 5703536 1628664 5701664 1628552 5701744 +1628360 5703512 1628448 5703536 1628552 5701744 1628488 5701744 +1628448 5703536 1628712 5701600 1628664 5701664 1628552 5701744 +1628360 5703512 1629944 5726576 1628448 5703536 1628552 5701744 +1628712 5701600 1628448 5703536 1629944 5726576 1743800 5687320 +1629944 5726576 1743888 5687504 1743800 5687320 1628448 5703536 +1628712 5701600 1628448 5703536 1743800 5687320 1628712 5701448 +1629944 5726576 1628448 5703536 1628360 5703512 1627448 5719792 +1629944 5726576 1628448 5703536 1627448 5719792 1629736 5726176 +1628448 5703536 1628552 5701744 1628360 5703512 1627448 5719792 +1628360 5703512 1627384 5719672 1627448 5719792 1628448 5703536 +1627384 5719672 1627400 5719704 1627448 5719792 1628448 5703536 +1628360 5703512 1627384 5719672 1628448 5703536 1628552 5701744 +1628360 5703512 1627336 5719640 1627384 5719672 1628448 5703536 +1628360 5703512 1627336 5719640 1628448 5703536 1628552 5701744 +1627384 5719672 1627448 5719792 1628448 5703536 1627336 5719640 +1628360 5703512 1620552 5714440 1627336 5719640 1628448 5703536 +1620552 5714440 1627312 5719640 1627336 5719640 1628448 5703536 +1628360 5703512 1620552 5714440 1628448 5703536 1628552 5701744 +1628360 5703512 1620512 5714368 1620552 5714440 1628448 5703536 +1628360 5703512 1620160 5713848 1620512 5714368 1628448 5703536 +1628360 5703512 1620512 5714368 1628448 5703536 1628552 5701744 +1620552 5714440 1627336 5719640 1628448 5703536 1620512 5714368 +1627336 5719640 1627384 5719672 1628448 5703536 1620552 5714440 +1627448 5719792 1629944 5726576 1628448 5703536 1627384 5719672 +1628448 5703536 1743800 5687320 1628712 5701600 1628664 5701664 +1628448 5703536 1627448 5719792 1629944 5726576 1743800 5687320 +1743800 5687320 1628472 5703560 1629944 5726576 1743888 5687504 +1628448 5703536 1628472 5703560 1743800 5687320 1628712 5701600 +1628472 5703560 1629944 5726576 1743800 5687320 1628712 5701600 +1743800 5687320 1628712 5701448 1628712 5701600 1628472 5703560 +1628448 5703536 1628472 5703560 1628712 5701600 1628664 5701664 +1628448 5703536 1628472 5703560 1628664 5701664 1628552 5701744 +1628472 5703560 1743800 5687320 1628712 5701600 1628664 5701664 +1628448 5703536 1629944 5726576 1628472 5703560 1628664 5701664 +1629944 5726576 1628472 5703560 1628448 5703536 1627448 5719792 +1629944 5726576 1743800 5687320 1628472 5703560 1627448 5719792 +1629944 5726576 1628472 5703560 1627448 5719792 1629736 5726176 +1628448 5703536 1627384 5719672 1627448 5719792 1628472 5703560 +1627384 5719672 1627400 5719704 1627448 5719792 1628472 5703560 +1628448 5703536 1627336 5719640 1627384 5719672 1628472 5703560 +1628448 5703536 1620552 5714440 1627336 5719640 1628472 5703560 +1620552 5714440 1627312 5719640 1627336 5719640 1628472 5703560 +1627336 5719640 1627384 5719672 1628472 5703560 1620552 5714440 +1628448 5703536 1620512 5714368 1620552 5714440 1628472 5703560 +1628448 5703536 1628360 5703512 1620512 5714368 1628472 5703560 +1628360 5703512 1620160 5713848 1620512 5714368 1628472 5703560 +1628360 5703512 1620104 5713768 1620160 5713848 1628472 5703560 +1628360 5703512 1621944 5703896 1620104 5713768 1628472 5703560 +1620160 5713848 1620512 5714368 1628472 5703560 1620104 5713768 +1620512 5714368 1620552 5714440 1628472 5703560 1620160 5713848 +1620160 5713848 1620272 5714120 1620512 5714368 1628472 5703560 +1628360 5703512 1620104 5713768 1628472 5703560 1628448 5703536 +1620552 5714440 1627336 5719640 1628472 5703560 1620512 5714368 +1627384 5719672 1627448 5719792 1628472 5703560 1627336 5719640 +1628472 5703560 1628664 5701664 1628448 5703536 1628360 5703512 +1627448 5719792 1629944 5726576 1628472 5703560 1627384 5719672 +1628472 5703560 1628968 5703704 1743800 5687320 1628712 5701600 +1628472 5703560 1629944 5726576 1628968 5703704 1628712 5701600 +1629944 5726576 1628968 5703704 1628472 5703560 1627448 5719792 +1628968 5703704 1628712 5701600 1628472 5703560 1627448 5719792 +1628968 5703704 1629944 5726576 1743800 5687320 1628712 5701600 +1629944 5726576 1628968 5703704 1627448 5719792 1629736 5726176 +1628968 5703704 1628472 5703560 1627448 5719792 1629736 5726176 +1629944 5726576 1628968 5703704 1629736 5726176 1629904 5726504 +1627448 5719792 1629624 5725984 1629736 5726176 1628968 5703704 +1743800 5687320 1628968 5703704 1629944 5726576 1743888 5687504 +1629944 5726576 1743800 5687320 1628968 5703704 1629736 5726176 +1743800 5687320 1628712 5701448 1628712 5701600 1628968 5703704 +1628712 5701600 1628472 5703560 1628968 5703704 1628712 5701448 +1743800 5687320 1628712 5701448 1628968 5703704 1629944 5726576 +1743800 5687320 1663944 5646256 1628712 5701448 1628968 5703704 +1743800 5687320 1663944 5646256 1628968 5703704 1629944 5726576 +1743800 5687320 1664040 5646192 1663944 5646256 1628968 5703704 +1663944 5646256 1663880 5646248 1628712 5701448 1628968 5703704 +1628712 5701448 1628712 5701600 1628968 5703704 1663944 5646256 +1628472 5703560 1628968 5703704 1628712 5701600 1628664 5701664 +1628968 5703704 1628712 5701448 1628712 5701600 1628664 5701664 +1628472 5703560 1627448 5719792 1628968 5703704 1628664 5701664 +1628472 5703560 1628968 5703704 1628664 5701664 1628448 5703536 +1628472 5703560 1627448 5719792 1628968 5703704 1628448 5703536 +1628664 5701664 1628552 5701744 1628448 5703536 1628968 5703704 +1628552 5701744 1628360 5703512 1628448 5703536 1628968 5703704 +1628968 5703704 1628712 5701600 1628664 5701664 1628552 5701744 +1628448 5703536 1628472 5703560 1628968 5703704 1628552 5701744 +1628472 5703560 1627384 5719672 1627448 5719792 1628968 5703704 +1628472 5703560 1627384 5719672 1628968 5703704 1628448 5703536 +1627448 5719792 1629736 5726176 1628968 5703704 1627384 5719672 +1627384 5719672 1627400 5719704 1627448 5719792 1628968 5703704 +1628472 5703560 1627336 5719640 1627384 5719672 1628968 5703704 +1628472 5703560 1627336 5719640 1628968 5703704 1628448 5703536 +1628472 5703560 1620552 5714440 1627336 5719640 1628968 5703704 +1628472 5703560 1620552 5714440 1628968 5703704 1628448 5703536 +1620552 5714440 1627312 5719640 1627336 5719640 1628968 5703704 +1628472 5703560 1620512 5714368 1620552 5714440 1628968 5703704 +1628472 5703560 1620512 5714368 1628968 5703704 1628448 5703536 +1620552 5714440 1627336 5719640 1628968 5703704 1620512 5714368 +1628472 5703560 1620160 5713848 1620512 5714368 1628968 5703704 +1627336 5719640 1627384 5719672 1628968 5703704 1620552 5714440 +1627384 5719672 1627448 5719792 1628968 5703704 1627336 5719640 +1628968 5703704 1629472 5703936 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1629472 5703936 +1743800 5687320 1629472 5703936 1629944 5726576 1743888 5687504 +1629944 5726576 1632696 5739008 1743888 5687504 1629472 5703936 +1628968 5703704 1629472 5703936 1663944 5646256 1628712 5701448 +1629472 5703936 1743800 5687320 1663944 5646256 1628712 5701448 +1629944 5726576 1629472 5703936 1628968 5703704 1629736 5726176 +1629944 5726576 1629472 5703936 1629736 5726176 1629904 5726504 +1628968 5703704 1627448 5719792 1629736 5726176 1629472 5703936 +1628968 5703704 1627384 5719672 1627448 5719792 1629472 5703936 +1627384 5719672 1627400 5719704 1627448 5719792 1629472 5703936 +1627448 5719792 1629624 5725984 1629736 5726176 1629472 5703936 +1627448 5719792 1629736 5726176 1629472 5703936 1627384 5719672 +1629736 5726176 1629944 5726576 1629472 5703936 1627448 5719792 +1628968 5703704 1627384 5719672 1629472 5703936 1628712 5701448 +1629472 5703936 1743888 5687504 1743800 5687320 1663944 5646256 +1663944 5646256 1663880 5646248 1628712 5701448 1629472 5703936 +1628968 5703704 1629472 5703936 1628712 5701448 1628712 5701600 +1628968 5703704 1629472 5703936 1628712 5701600 1628664 5701664 +1629472 5703936 1663944 5646256 1628712 5701448 1628712 5701600 +1628968 5703704 1627384 5719672 1629472 5703936 1628664 5701664 +1629472 5703936 1628712 5701448 1628712 5701600 1628664 5701664 +1628968 5703704 1629472 5703936 1628664 5701664 1628552 5701744 +1629472 5703936 1629736 5726176 1629944 5726576 1743888 5687504 +1628968 5703704 1627336 5719640 1627384 5719672 1629472 5703936 +1627384 5719672 1627448 5719792 1629472 5703936 1627336 5719640 +1628968 5703704 1627336 5719640 1629472 5703936 1628664 5701664 +1628968 5703704 1620552 5714440 1627336 5719640 1629472 5703936 +1620552 5714440 1627312 5719640 1627336 5719640 1629472 5703936 +1628968 5703704 1620512 5714368 1620552 5714440 1629472 5703936 +1628968 5703704 1620512 5714368 1629472 5703936 1628664 5701664 +1628968 5703704 1628472 5703560 1620512 5714368 1629472 5703936 +1620512 5714368 1620552 5714440 1629472 5703936 1628472 5703560 +1628472 5703560 1620160 5713848 1620512 5714368 1629472 5703936 +1628968 5703704 1628472 5703560 1629472 5703936 1628664 5701664 +1620552 5714440 1627336 5719640 1629472 5703936 1620512 5714368 +1627336 5719640 1627384 5719672 1629472 5703936 1620552 5714440 +1743888 5687504 1629752 5704128 1629944 5726576 1632696 5739008 +1629472 5703936 1629752 5704128 1743888 5687504 1743800 5687320 +1629472 5703936 1629752 5704128 1743800 5687320 1663944 5646256 +1629472 5703936 1629752 5704128 1663944 5646256 1628712 5701448 +1743800 5687320 1664040 5646192 1663944 5646256 1629752 5704128 +1629752 5704128 1743888 5687504 1743800 5687320 1663944 5646256 +1629472 5703936 1629752 5704128 1628712 5701448 1628712 5701600 +1629752 5704128 1663944 5646256 1628712 5701448 1628712 5701600 +1629752 5704128 1743800 5687320 1663944 5646256 1628712 5701448 +1629472 5703936 1629944 5726576 1629752 5704128 1628712 5701600 +1663944 5646256 1663880 5646248 1628712 5701448 1629752 5704128 +1629472 5703936 1629752 5704128 1628712 5701600 1628664 5701664 +1629944 5726576 1629752 5704128 1629472 5703936 1629736 5726176 +1629944 5726576 1629752 5704128 1629736 5726176 1629904 5726504 +1629472 5703936 1627448 5719792 1629736 5726176 1629752 5704128 +1627448 5719792 1629624 5725984 1629736 5726176 1629752 5704128 +1629472 5703936 1627384 5719672 1627448 5719792 1629752 5704128 +1629472 5703936 1627336 5719640 1627384 5719672 1629752 5704128 +1627384 5719672 1627400 5719704 1627448 5719792 1629752 5704128 +1627384 5719672 1627448 5719792 1629752 5704128 1627336 5719640 +1627448 5719792 1629736 5726176 1629752 5704128 1627384 5719672 +1629752 5704128 1628712 5701600 1629472 5703936 1627336 5719640 +1629736 5726176 1629944 5726576 1629752 5704128 1627448 5719792 +1629752 5704128 1629944 5726576 1743888 5687504 1743800 5687320 +1629944 5726576 1743888 5687504 1629752 5704128 1629736 5726176 +1629472 5703936 1620552 5714440 1627336 5719640 1629752 5704128 +1627336 5719640 1627384 5719672 1629752 5704128 1620552 5714440 +1620552 5714440 1627312 5719640 1627336 5719640 1629752 5704128 +1629472 5703936 1620552 5714440 1629752 5704128 1628712 5701600 +1629472 5703936 1620512 5714368 1620552 5714440 1629752 5704128 +1629472 5703936 1628472 5703560 1620512 5714368 1629752 5704128 +1628472 5703560 1620160 5713848 1620512 5714368 1629752 5704128 +1629472 5703936 1628472 5703560 1629752 5704128 1628712 5701600 +1629472 5703936 1628968 5703704 1628472 5703560 1629752 5704128 +1628472 5703560 1620512 5714368 1629752 5704128 1628968 5703704 +1629472 5703936 1628968 5703704 1629752 5704128 1628712 5701600 +1620512 5714368 1620552 5714440 1629752 5704128 1628472 5703560 +1620552 5714440 1627336 5719640 1629752 5704128 1620512 5714368 +1743888 5687504 1629944 5704312 1629944 5726576 1632696 5739008 +1629752 5704128 1629944 5704312 1743888 5687504 1743800 5687320 +1629752 5704128 1629944 5704312 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1629944 5704312 +1629752 5704128 1629944 5704312 1663944 5646256 1628712 5701448 +1629752 5704128 1629944 5704312 1628712 5701448 1628712 5701600 +1629944 5704312 1743800 5687320 1663944 5646256 1628712 5701448 +1629752 5704128 1629944 5704312 1628712 5701600 1629472 5703936 +1629944 5704312 1663944 5646256 1628712 5701448 1628712 5701600 +1663944 5646256 1663880 5646248 1628712 5701448 1629944 5704312 +1629944 5704312 1743888 5687504 1743800 5687320 1663944 5646256 +1629752 5704128 1629944 5726576 1629944 5704312 1628712 5701600 +1629944 5726576 1629944 5704312 1629752 5704128 1629736 5726176 +1629944 5726576 1743888 5687504 1629944 5704312 1629736 5726176 +1629944 5726576 1629944 5704312 1629736 5726176 1629904 5726504 +1629752 5704128 1627448 5719792 1629736 5726176 1629944 5704312 +1627448 5719792 1629624 5725984 1629736 5726176 1629944 5704312 +1629752 5704128 1627384 5719672 1627448 5719792 1629944 5704312 +1627384 5719672 1627400 5719704 1627448 5719792 1629944 5704312 +1629752 5704128 1627336 5719640 1627384 5719672 1629944 5704312 +1629752 5704128 1620552 5714440 1627336 5719640 1629944 5704312 +1620552 5714440 1627312 5719640 1627336 5719640 1629944 5704312 +1627336 5719640 1627384 5719672 1629944 5704312 1620552 5714440 +1627384 5719672 1627448 5719792 1629944 5704312 1627336 5719640 +1627448 5719792 1629736 5726176 1629944 5704312 1627384 5719672 +1629944 5704312 1628712 5701600 1629752 5704128 1620552 5714440 +1629736 5726176 1629944 5726576 1629944 5704312 1627448 5719792 +1629944 5704312 1629944 5726576 1743888 5687504 1743800 5687320 +1629752 5704128 1620512 5714368 1620552 5714440 1629944 5704312 +1620552 5714440 1627336 5719640 1629944 5704312 1620512 5714368 +1629752 5704128 1628472 5703560 1620512 5714368 1629944 5704312 +1629752 5704128 1628968 5703704 1628472 5703560 1629944 5704312 +1628472 5703560 1620160 5713848 1620512 5714368 1629944 5704312 +1628472 5703560 1620104 5713768 1620160 5713848 1629944 5704312 +1620160 5713848 1620272 5714120 1620512 5714368 1629944 5704312 +1629752 5704128 1629472 5703936 1628968 5703704 1629944 5704312 +1628968 5703704 1628472 5703560 1629944 5704312 1629472 5703936 +1628472 5703560 1620160 5713848 1629944 5704312 1628968 5703704 +1629752 5704128 1629472 5703936 1629944 5704312 1628712 5701600 +1620512 5714368 1620552 5714440 1629944 5704312 1620160 5713848 +1743888 5687504 1630064 5704496 1629944 5726576 1632696 5739008 +1629944 5726576 1630064 5704496 1629944 5704312 1629736 5726176 +1630064 5704496 1743888 5687504 1629944 5704312 1629736 5726176 +1629944 5726576 1743888 5687504 1630064 5704496 1629736 5726176 +1629944 5726576 1630064 5704496 1629736 5726176 1629904 5726504 +1629944 5704312 1627448 5719792 1629736 5726176 1630064 5704496 +1629944 5704312 1627448 5719792 1630064 5704496 1743888 5687504 +1629736 5726176 1629944 5726576 1630064 5704496 1627448 5719792 +1627448 5719792 1629624 5725984 1629736 5726176 1630064 5704496 +1629944 5704312 1627384 5719672 1627448 5719792 1630064 5704496 +1629944 5704312 1627384 5719672 1630064 5704496 1743888 5687504 +1627384 5719672 1627400 5719704 1627448 5719792 1630064 5704496 +1629944 5704312 1627336 5719640 1627384 5719672 1630064 5704496 +1629944 5704312 1627336 5719640 1630064 5704496 1743888 5687504 +1629944 5704312 1620552 5714440 1627336 5719640 1630064 5704496 +1629944 5704312 1620512 5714368 1620552 5714440 1630064 5704496 +1629944 5704312 1620512 5714368 1630064 5704496 1743888 5687504 +1620552 5714440 1627312 5719640 1627336 5719640 1630064 5704496 +1620552 5714440 1627336 5719640 1630064 5704496 1620512 5714368 +1627336 5719640 1627384 5719672 1630064 5704496 1620552 5714440 +1627384 5719672 1627448 5719792 1630064 5704496 1627336 5719640 +1627448 5719792 1629736 5726176 1630064 5704496 1627384 5719672 +1629944 5704312 1630064 5704496 1743888 5687504 1743800 5687320 +1629944 5704312 1620512 5714368 1630064 5704496 1743800 5687320 +1630064 5704496 1629944 5726576 1743888 5687504 1743800 5687320 +1629944 5704312 1630064 5704496 1743800 5687320 1663944 5646256 +1629944 5704312 1620512 5714368 1630064 5704496 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630064 5704496 +1629944 5704312 1630064 5704496 1663944 5646256 1628712 5701448 +1629944 5704312 1620512 5714368 1630064 5704496 1628712 5701448 +1629944 5704312 1630064 5704496 1628712 5701448 1628712 5701600 +1663944 5646256 1663880 5646248 1628712 5701448 1630064 5704496 +1630064 5704496 1743800 5687320 1663944 5646256 1628712 5701448 +1630064 5704496 1743888 5687504 1743800 5687320 1663944 5646256 +1629944 5704312 1620160 5713848 1620512 5714368 1630064 5704496 +1620512 5714368 1620552 5714440 1630064 5704496 1620160 5713848 +1629944 5704312 1620160 5713848 1630064 5704496 1628712 5701448 +1629944 5704312 1628472 5703560 1620160 5713848 1630064 5704496 +1628472 5703560 1620104 5713768 1620160 5713848 1630064 5704496 +1629944 5704312 1628472 5703560 1630064 5704496 1628712 5701448 +1620160 5713848 1620272 5714120 1620512 5714368 1630064 5704496 +1629944 5704312 1628968 5703704 1628472 5703560 1630064 5704496 +1629944 5704312 1628968 5703704 1630064 5704496 1628712 5701448 +1629944 5704312 1629472 5703936 1628968 5703704 1630064 5704496 +1629944 5704312 1629472 5703936 1630064 5704496 1628712 5701448 +1628472 5703560 1620160 5713848 1630064 5704496 1628968 5703704 +1629944 5704312 1629752 5704128 1629472 5703936 1630064 5704496 +1629944 5704312 1629752 5704128 1630064 5704496 1628712 5701448 +1629472 5703936 1628968 5703704 1630064 5704496 1629752 5704128 +1628968 5703704 1628472 5703560 1630064 5704496 1629472 5703936 +1620160 5713848 1620512 5714368 1630064 5704496 1628472 5703560 +1743888 5687504 1630112 5704600 1629944 5726576 1632696 5739008 +1630064 5704496 1630112 5704600 1743888 5687504 1743800 5687320 +1630064 5704496 1629944 5726576 1630112 5704600 1743800 5687320 +1629944 5726576 1630112 5704600 1630064 5704496 1629736 5726176 +1630064 5704496 1627448 5719792 1629736 5726176 1630112 5704600 +1630112 5704600 1743800 5687320 1630064 5704496 1627448 5719792 +1629736 5726176 1629944 5726576 1630112 5704600 1627448 5719792 +1629944 5726576 1630112 5704600 1629736 5726176 1629904 5726504 +1627448 5719792 1629624 5725984 1629736 5726176 1630112 5704600 +1630112 5704600 1629944 5726576 1743888 5687504 1743800 5687320 +1629944 5726576 1743888 5687504 1630112 5704600 1629736 5726176 +1630064 5704496 1627384 5719672 1627448 5719792 1630112 5704600 +1627448 5719792 1629736 5726176 1630112 5704600 1627384 5719672 +1630064 5704496 1627384 5719672 1630112 5704600 1743800 5687320 +1627384 5719672 1627400 5719704 1627448 5719792 1630112 5704600 +1630064 5704496 1627336 5719640 1627384 5719672 1630112 5704600 +1630064 5704496 1627336 5719640 1630112 5704600 1743800 5687320 +1630064 5704496 1620552 5714440 1627336 5719640 1630112 5704600 +1630064 5704496 1620552 5714440 1630112 5704600 1743800 5687320 +1620552 5714440 1627312 5719640 1627336 5719640 1630112 5704600 +1630064 5704496 1620512 5714368 1620552 5714440 1630112 5704600 +1630064 5704496 1620160 5713848 1620512 5714368 1630112 5704600 +1630064 5704496 1620160 5713848 1630112 5704600 1743800 5687320 +1620512 5714368 1620552 5714440 1630112 5704600 1620160 5713848 +1620552 5714440 1627336 5719640 1630112 5704600 1620512 5714368 +1620160 5713848 1620272 5714120 1620512 5714368 1630112 5704600 +1627336 5719640 1627384 5719672 1630112 5704600 1620552 5714440 +1627384 5719672 1627448 5719792 1630112 5704600 1627336 5719640 +1630064 5704496 1630112 5704600 1743800 5687320 1663944 5646256 +1630112 5704600 1743888 5687504 1743800 5687320 1663944 5646256 +1630064 5704496 1620160 5713848 1630112 5704600 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630112 5704600 +1630064 5704496 1630112 5704600 1663944 5646256 1628712 5701448 +1630064 5704496 1628472 5703560 1620160 5713848 1630112 5704600 +1628472 5703560 1620104 5713768 1620160 5713848 1630112 5704600 +1628472 5703560 1628360 5703512 1620104 5713768 1630112 5704600 +1628360 5703512 1621944 5703896 1620104 5713768 1630112 5704600 +1620104 5713768 1620160 5713848 1630112 5704600 1628360 5703512 +1620160 5713848 1620512 5714368 1630112 5704600 1620104 5713768 +1630064 5704496 1628472 5703560 1630112 5704600 1663944 5646256 +1630064 5704496 1628968 5703704 1628472 5703560 1630112 5704600 +1630064 5704496 1628968 5703704 1630112 5704600 1663944 5646256 +1628472 5703560 1628448 5703536 1628360 5703512 1630112 5704600 +1630064 5704496 1629472 5703936 1628968 5703704 1630112 5704600 +1630064 5704496 1629472 5703936 1630112 5704600 1663944 5646256 +1630064 5704496 1629752 5704128 1629472 5703936 1630112 5704600 +1630064 5704496 1629752 5704128 1630112 5704600 1663944 5646256 +1628968 5703704 1628472 5703560 1630112 5704600 1629472 5703936 +1630064 5704496 1629944 5704312 1629752 5704128 1630112 5704600 +1629472 5703936 1628968 5703704 1630112 5704600 1629752 5704128 +1628472 5703560 1628360 5703512 1630112 5704600 1628968 5703704 +1743888 5687504 1630136 5704624 1629944 5726576 1632696 5739008 +1630112 5704600 1630136 5704624 1743888 5687504 1743800 5687320 +1630112 5704600 1630136 5704624 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630136 5704624 +1630136 5704624 1743888 5687504 1743800 5687320 1663944 5646256 +1630112 5704600 1629944 5726576 1630136 5704624 1663944 5646256 +1629944 5726576 1630136 5704624 1630112 5704600 1629736 5726176 +1630112 5704600 1627448 5719792 1629736 5726176 1630136 5704624 +1630112 5704600 1627384 5719672 1627448 5719792 1630136 5704624 +1627448 5719792 1629736 5726176 1630136 5704624 1627384 5719672 +1629944 5726576 1630136 5704624 1629736 5726176 1629904 5726504 +1627384 5719672 1627400 5719704 1627448 5719792 1630136 5704624 +1627448 5719792 1629624 5725984 1629736 5726176 1630136 5704624 +1630136 5704624 1663944 5646256 1630112 5704600 1627384 5719672 +1629736 5726176 1629944 5726576 1630136 5704624 1627448 5719792 +1630136 5704624 1629944 5726576 1743888 5687504 1743800 5687320 +1629944 5726576 1743888 5687504 1630136 5704624 1629736 5726176 +1630112 5704600 1627336 5719640 1627384 5719672 1630136 5704624 +1627384 5719672 1627448 5719792 1630136 5704624 1627336 5719640 +1630112 5704600 1627336 5719640 1630136 5704624 1663944 5646256 +1630112 5704600 1620552 5714440 1627336 5719640 1630136 5704624 +1620552 5714440 1627312 5719640 1627336 5719640 1630136 5704624 +1630112 5704600 1620512 5714368 1620552 5714440 1630136 5704624 +1630112 5704600 1620160 5713848 1620512 5714368 1630136 5704624 +1630112 5704600 1620104 5713768 1620160 5713848 1630136 5704624 +1630112 5704600 1628360 5703512 1620104 5713768 1630136 5704624 +1630112 5704600 1628472 5703560 1628360 5703512 1630136 5704624 +1628360 5703512 1621944 5703896 1620104 5713768 1630136 5704624 +1628360 5703512 1620104 5713768 1630136 5704624 1628472 5703560 +1620104 5713768 1620160 5713848 1630136 5704624 1628360 5703512 +1620160 5713848 1620512 5714368 1630136 5704624 1620104 5713768 +1620512 5714368 1620552 5714440 1630136 5704624 1620160 5713848 +1630112 5704600 1628472 5703560 1630136 5704624 1663944 5646256 +1620160 5713848 1620272 5714120 1620512 5714368 1630136 5704624 +1628472 5703560 1628448 5703536 1628360 5703512 1630136 5704624 +1620552 5714440 1627336 5719640 1630136 5704624 1620512 5714368 +1627336 5719640 1627384 5719672 1630136 5704624 1620552 5714440 +1630112 5704600 1630136 5704624 1663944 5646256 1630064 5704496 +1630136 5704624 1743800 5687320 1663944 5646256 1630064 5704496 +1630112 5704600 1628472 5703560 1630136 5704624 1630064 5704496 +1663944 5646256 1628712 5701448 1630064 5704496 1630136 5704624 +1663944 5646256 1628712 5701448 1630136 5704624 1743800 5687320 +1628712 5701448 1629944 5704312 1630064 5704496 1630136 5704624 +1663944 5646256 1663880 5646248 1628712 5701448 1630136 5704624 +1630064 5704496 1630112 5704600 1630136 5704624 1628712 5701448 +1630112 5704600 1628968 5703704 1628472 5703560 1630136 5704624 +1627336 5719640 1630128 5704656 1620552 5714440 1627312 5719640 +1620552 5714440 1630128 5704656 1630136 5704624 1620512 5714368 +1630136 5704624 1620160 5713848 1620512 5714368 1630128 5704656 +1630136 5704624 1620104 5713768 1620160 5713848 1630128 5704656 +1630136 5704624 1628360 5703512 1620104 5713768 1630128 5704656 +1628360 5703512 1621944 5703896 1620104 5713768 1630128 5704656 +1630136 5704624 1628472 5703560 1628360 5703512 1630128 5704656 +1630136 5704624 1630112 5704600 1628472 5703560 1630128 5704656 +1628472 5703560 1628360 5703512 1630128 5704656 1630112 5704600 +1628360 5703512 1620104 5713768 1630128 5704656 1628472 5703560 +1620104 5713768 1620160 5713848 1630128 5704656 1628360 5703512 +1620160 5713848 1620512 5714368 1630128 5704656 1620104 5713768 +1630128 5704656 1627336 5719640 1630136 5704624 1630112 5704600 +1620160 5713848 1620272 5714120 1620512 5714368 1630128 5704656 +1628472 5703560 1628448 5703536 1628360 5703512 1630128 5704656 +1620552 5714440 1627336 5719640 1630128 5704656 1620512 5714368 +1620512 5714368 1620552 5714440 1630128 5704656 1620160 5713848 +1630136 5704624 1630128 5704656 1627336 5719640 1627384 5719672 +1630136 5704624 1630128 5704656 1627384 5719672 1627448 5719792 +1630136 5704624 1630128 5704656 1627448 5719792 1629736 5726176 +1630128 5704656 1627384 5719672 1627448 5719792 1629736 5726176 +1627384 5719672 1627400 5719704 1627448 5719792 1630128 5704656 +1627448 5719792 1629624 5725984 1629736 5726176 1630128 5704656 +1630136 5704624 1630128 5704656 1629736 5726176 1629944 5726576 +1630128 5704656 1627448 5719792 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1630128 5704656 +1630136 5704624 1630112 5704600 1630128 5704656 1629944 5726576 +1630136 5704624 1630128 5704656 1629944 5726576 1743888 5687504 +1630128 5704656 1620552 5714440 1627336 5719640 1627384 5719672 +1630128 5704656 1627336 5719640 1627384 5719672 1627448 5719792 +1630112 5704600 1628968 5703704 1628472 5703560 1630128 5704656 +1630112 5704600 1628968 5703704 1630128 5704656 1630136 5704624 +1628472 5703560 1628360 5703512 1630128 5704656 1628968 5703704 +1630112 5704600 1629472 5703936 1628968 5703704 1630128 5704656 +1630112 5704600 1629472 5703936 1630128 5704656 1630136 5704624 +1630112 5704600 1629752 5704128 1629472 5703936 1630128 5704656 +1630112 5704600 1629752 5704128 1630128 5704656 1630136 5704624 +1630112 5704600 1630064 5704496 1629752 5704128 1630128 5704656 +1630112 5704600 1630064 5704496 1630128 5704656 1630136 5704624 +1629472 5703936 1628968 5703704 1630128 5704656 1629752 5704128 +1630064 5704496 1629944 5704312 1629752 5704128 1630128 5704656 +1630064 5704496 1629944 5704312 1630128 5704656 1630112 5704600 +1629752 5704128 1629472 5703936 1630128 5704656 1629944 5704312 +1628968 5703704 1628472 5703560 1630128 5704656 1629472 5703936 +1743888 5687504 1630152 5704824 1629944 5726576 1632696 5739008 +1630136 5704624 1630152 5704824 1743888 5687504 1743800 5687320 +1630136 5704624 1630152 5704824 1743800 5687320 1663944 5646256 +1629944 5726576 1630152 5704824 1630136 5704624 1630128 5704656 +1629944 5726576 1630152 5704824 1630128 5704656 1629736 5726176 +1630128 5704656 1627448 5719792 1629736 5726176 1630152 5704824 +1630128 5704656 1627384 5719672 1627448 5719792 1630152 5704824 +1627448 5719792 1629736 5726176 1630152 5704824 1627384 5719672 +1629944 5726576 1630152 5704824 1629736 5726176 1629904 5726504 +1627384 5719672 1627400 5719704 1627448 5719792 1630152 5704824 +1627448 5719792 1629624 5725984 1629736 5726176 1630152 5704824 +1629736 5726176 1629944 5726576 1630152 5704824 1627448 5719792 +1630152 5704824 1630136 5704624 1630128 5704656 1627384 5719672 +1630136 5704624 1630128 5704656 1630152 5704824 1743800 5687320 +1630152 5704824 1629944 5726576 1743888 5687504 1743800 5687320 +1630128 5704656 1627336 5719640 1627384 5719672 1630152 5704824 +1627384 5719672 1627448 5719792 1630152 5704824 1627336 5719640 +1630128 5704656 1627336 5719640 1630152 5704824 1630136 5704624 +1630128 5704656 1620552 5714440 1627336 5719640 1630152 5704824 +1620552 5714440 1627312 5719640 1627336 5719640 1630152 5704824 +1630128 5704656 1620552 5714440 1630152 5704824 1630136 5704624 +1630128 5704656 1620512 5714368 1620552 5714440 1630152 5704824 +1630128 5704656 1620512 5714368 1630152 5704824 1630136 5704624 +1620552 5714440 1627336 5719640 1630152 5704824 1620512 5714368 +1630128 5704656 1620160 5713848 1620512 5714368 1630152 5704824 +1630128 5704656 1620104 5713768 1620160 5713848 1630152 5704824 +1630128 5704656 1628360 5703512 1620104 5713768 1630152 5704824 +1628360 5703512 1621944 5703896 1620104 5713768 1630152 5704824 +1628360 5703512 1627904 5703304 1621944 5703896 1630152 5704824 +1621944 5703896 1620040 5713712 1620104 5713768 1630152 5704824 +1630128 5704656 1628472 5703560 1628360 5703512 1630152 5704824 +1630128 5704656 1628968 5703704 1628472 5703560 1630152 5704824 +1628472 5703560 1628360 5703512 1630152 5704824 1628968 5703704 +1628360 5703512 1621944 5703896 1630152 5704824 1628472 5703560 +1620104 5713768 1620160 5713848 1630152 5704824 1621944 5703896 +1620160 5713848 1620272 5714120 1620512 5714368 1630152 5704824 +1628472 5703560 1628448 5703536 1628360 5703512 1630152 5704824 +1630128 5704656 1628968 5703704 1630152 5704824 1630136 5704624 +1620512 5714368 1620552 5714440 1630152 5704824 1620160 5713848 +1620160 5713848 1620512 5714368 1630152 5704824 1620104 5713768 +1627336 5719640 1627384 5719672 1630152 5704824 1620552 5714440 +1630128 5704656 1629472 5703936 1628968 5703704 1630152 5704824 +1628968 5703704 1628472 5703560 1630152 5704824 1629472 5703936 +1630128 5704656 1629752 5704128 1629472 5703936 1630152 5704824 +1630128 5704656 1629752 5704128 1630152 5704824 1630136 5704624 +1630128 5704656 1629944 5704312 1629752 5704128 1630152 5704824 +1629752 5704128 1629472 5703936 1630152 5704824 1629944 5704312 +1630128 5704656 1630064 5704496 1629944 5704312 1630152 5704824 +1630128 5704656 1630112 5704600 1630064 5704496 1630152 5704824 +1630128 5704656 1630064 5704496 1630152 5704824 1630136 5704624 +1629944 5704312 1629752 5704128 1630152 5704824 1630064 5704496 +1629472 5703936 1628968 5703704 1630152 5704824 1629752 5704128 +1629944 5726576 1743888 5687504 1630152 5704824 1629736 5726176 +1627448 5719792 1630080 5705344 1630152 5704824 1627384 5719672 +1630152 5704824 1627336 5719640 1627384 5719672 1630080 5705344 +1627384 5719672 1627448 5719792 1630080 5705344 1627336 5719640 +1627448 5719792 1630080 5705344 1627384 5719672 1627400 5719704 +1629736 5726176 1630080 5705344 1627448 5719792 1629624 5725984 +1630152 5704824 1630080 5705344 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1630080 5705344 +1630152 5704824 1620552 5714440 1627336 5719640 1630080 5705344 +1627336 5719640 1627384 5719672 1630080 5705344 1620552 5714440 +1620552 5714440 1627312 5719640 1627336 5719640 1630080 5705344 +1630152 5704824 1620512 5714368 1620552 5714440 1630080 5705344 +1630152 5704824 1620160 5713848 1620512 5714368 1630080 5705344 +1620160 5713848 1620272 5714120 1620512 5714368 1630080 5705344 +1620512 5714368 1620552 5714440 1630080 5705344 1620160 5713848 +1630152 5704824 1620104 5713768 1620160 5713848 1630080 5705344 +1630152 5704824 1621944 5703896 1620104 5713768 1630080 5705344 +1621944 5703896 1620040 5713712 1620104 5713768 1630080 5705344 +1630152 5704824 1628360 5703512 1621944 5703896 1630080 5705344 +1628360 5703512 1627904 5703304 1621944 5703896 1630080 5705344 +1627904 5703304 1623720 5702872 1621944 5703896 1630080 5705344 +1628360 5703512 1627904 5703304 1630080 5705344 1630152 5704824 +1630152 5704824 1628472 5703560 1628360 5703512 1630080 5705344 +1628360 5703512 1627904 5703304 1630080 5705344 1628472 5703560 +1630152 5704824 1628968 5703704 1628472 5703560 1630080 5705344 +1630152 5704824 1629472 5703936 1628968 5703704 1630080 5705344 +1628968 5703704 1628472 5703560 1630080 5705344 1629472 5703936 +1628472 5703560 1628360 5703512 1630080 5705344 1628968 5703704 +1621944 5703896 1620104 5713768 1630080 5705344 1627904 5703304 +1628472 5703560 1628448 5703536 1628360 5703512 1630080 5705344 +1620160 5713848 1620512 5714368 1630080 5705344 1620104 5713768 +1620104 5713768 1620160 5713848 1630080 5705344 1621944 5703896 +1620552 5714440 1627336 5719640 1630080 5705344 1620512 5714368 +1630152 5704824 1629752 5704128 1629472 5703936 1630080 5705344 +1629472 5703936 1628968 5703704 1630080 5705344 1629752 5704128 +1630152 5704824 1629944 5704312 1629752 5704128 1630080 5705344 +1630080 5705344 1629944 5726576 1630152 5704824 1629752 5704128 +1630152 5704824 1630080 5705344 1629944 5726576 1743888 5687504 +1629944 5726576 1632696 5739008 1743888 5687504 1630080 5705344 +1630080 5705344 1629736 5726176 1629944 5726576 1743888 5687504 +1630152 5704824 1630080 5705344 1743888 5687504 1743800 5687320 +1630152 5704824 1630080 5705344 1743800 5687320 1630136 5704624 +1630152 5704824 1629752 5704128 1630080 5705344 1743800 5687320 +1630080 5705344 1629944 5726576 1743888 5687504 1743800 5687320 +1630080 5705344 1627448 5719792 1629736 5726176 1629944 5726576 +1627448 5719792 1629736 5726176 1630080 5705344 1627384 5719672 +1743888 5687504 1630096 5705696 1629944 5726576 1632696 5739008 +1629944 5726576 1630096 5705696 1630080 5705344 1629736 5726176 +1629944 5726576 1630096 5705696 1629736 5726176 1629904 5726504 +1630080 5705344 1630096 5705696 1743888 5687504 1743800 5687320 +1630080 5705344 1630096 5705696 1743800 5687320 1630152 5704824 +1743800 5687320 1630136 5704624 1630152 5704824 1630096 5705696 +1630096 5705696 1743888 5687504 1743800 5687320 1630152 5704824 +1630080 5705344 1627448 5719792 1629736 5726176 1630096 5705696 +1627448 5719792 1629624 5725984 1629736 5726176 1630096 5705696 +1629736 5726176 1629944 5726576 1630096 5705696 1627448 5719792 +1630096 5705696 1630152 5704824 1630080 5705344 1627448 5719792 +1630080 5705344 1627384 5719672 1627448 5719792 1630096 5705696 +1630080 5705344 1627336 5719640 1627384 5719672 1630096 5705696 +1630080 5705344 1620552 5714440 1627336 5719640 1630096 5705696 +1627336 5719640 1627384 5719672 1630096 5705696 1620552 5714440 +1620552 5714440 1627312 5719640 1627336 5719640 1630096 5705696 +1627384 5719672 1627400 5719704 1627448 5719792 1630096 5705696 +1630080 5705344 1620512 5714368 1620552 5714440 1630096 5705696 +1620552 5714440 1627336 5719640 1630096 5705696 1620512 5714368 +1630080 5705344 1620160 5713848 1620512 5714368 1630096 5705696 +1620160 5713848 1620272 5714120 1620512 5714368 1630096 5705696 +1630080 5705344 1620104 5713768 1620160 5713848 1630096 5705696 +1620160 5713848 1620512 5714368 1630096 5705696 1620104 5713768 +1630080 5705344 1621944 5703896 1620104 5713768 1630096 5705696 +1621944 5703896 1620040 5713712 1620104 5713768 1630096 5705696 +1630080 5705344 1627904 5703304 1621944 5703896 1630096 5705696 +1630080 5705344 1628360 5703512 1627904 5703304 1630096 5705696 +1627904 5703304 1623720 5702872 1621944 5703896 1630096 5705696 +1630080 5705344 1628472 5703560 1628360 5703512 1630096 5705696 +1628360 5703512 1627904 5703304 1630096 5705696 1628472 5703560 +1630080 5705344 1628968 5703704 1628472 5703560 1630096 5705696 +1627904 5703304 1621944 5703896 1630096 5705696 1628360 5703512 +1628472 5703560 1628448 5703536 1628360 5703512 1630096 5705696 +1620104 5713768 1620160 5713848 1630096 5705696 1621944 5703896 +1621944 5703896 1620104 5713768 1630096 5705696 1627904 5703304 +1620512 5714368 1620552 5714440 1630096 5705696 1620160 5713848 +1627448 5719792 1629736 5726176 1630096 5705696 1627384 5719672 +1630080 5705344 1628472 5703560 1630096 5705696 1630152 5704824 +1627384 5719672 1627448 5719792 1630096 5705696 1627336 5719640 +1630096 5705696 1629944 5726576 1743888 5687504 1743800 5687320 +1629944 5726576 1743888 5687504 1630096 5705696 1629736 5726176 +1620552 5714440 1630064 5705848 1630096 5705696 1620512 5714368 +1630096 5705696 1630064 5705848 1627336 5719640 1627384 5719672 +1627336 5719640 1630064 5705848 1620552 5714440 1627312 5719640 +1620552 5714440 1627336 5719640 1630064 5705848 1620512 5714368 +1630096 5705696 1620160 5713848 1620512 5714368 1630064 5705848 +1620512 5714368 1620552 5714440 1630064 5705848 1620160 5713848 +1620160 5713848 1620272 5714120 1620512 5714368 1630064 5705848 +1630096 5705696 1620104 5713768 1620160 5713848 1630064 5705848 +1630096 5705696 1621944 5703896 1620104 5713768 1630064 5705848 +1621944 5703896 1620040 5713712 1620104 5713768 1630064 5705848 +1620104 5713768 1620160 5713848 1630064 5705848 1621944 5703896 +1630096 5705696 1627904 5703304 1621944 5703896 1630064 5705848 +1627904 5703304 1623720 5702872 1621944 5703896 1630064 5705848 +1623720 5702872 1623616 5702904 1621944 5703896 1630064 5705848 +1627904 5703304 1623816 5702824 1623720 5702872 1630064 5705848 +1630096 5705696 1628360 5703512 1627904 5703304 1630064 5705848 +1630096 5705696 1628472 5703560 1628360 5703512 1630064 5705848 +1630096 5705696 1630080 5705344 1628472 5703560 1630064 5705848 +1628472 5703560 1628360 5703512 1630064 5705848 1630080 5705344 +1630080 5705344 1628968 5703704 1628472 5703560 1630064 5705848 +1628360 5703512 1627904 5703304 1630064 5705848 1628472 5703560 +1628472 5703560 1628448 5703536 1628360 5703512 1630064 5705848 +1621944 5703896 1620104 5713768 1630064 5705848 1623720 5702872 +1627904 5703304 1623720 5702872 1630064 5705848 1628360 5703512 +1620160 5713848 1620512 5714368 1630064 5705848 1620104 5713768 +1630096 5705696 1630064 5705848 1627384 5719672 1627448 5719792 +1630064 5705848 1627336 5719640 1627384 5719672 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1630064 5705848 +1630096 5705696 1630064 5705848 1627448 5719792 1629736 5726176 +1627448 5719792 1629624 5725984 1629736 5726176 1630064 5705848 +1630096 5705696 1630064 5705848 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1630064 5705848 +1630064 5705848 1627448 5719792 1629736 5726176 1629944 5726576 +1630064 5705848 1627384 5719672 1627448 5719792 1629736 5726176 +1630064 5705848 1629944 5726576 1630096 5705696 1630080 5705344 +1630096 5705696 1630064 5705848 1629944 5726576 1743888 5687504 +1630064 5705848 1620552 5714440 1627336 5719640 1627384 5719672 +1627336 5719640 1629984 5706008 1620552 5714440 1627312 5719640 +1620552 5714440 1629984 5706008 1630064 5705848 1620512 5714368 +1630064 5705848 1620160 5713848 1620512 5714368 1629984 5706008 +1620160 5713848 1620272 5714120 1620512 5714368 1629984 5706008 +1620512 5714368 1620552 5714440 1629984 5706008 1620160 5713848 +1620552 5714440 1627336 5719640 1629984 5706008 1620512 5714368 +1630064 5705848 1620104 5713768 1620160 5713848 1629984 5706008 +1620160 5713848 1620512 5714368 1629984 5706008 1620104 5713768 +1630064 5705848 1621944 5703896 1620104 5713768 1629984 5706008 +1621944 5703896 1620040 5713712 1620104 5713768 1629984 5706008 +1630064 5705848 1623720 5702872 1621944 5703896 1629984 5706008 +1630064 5705848 1627904 5703304 1623720 5702872 1629984 5706008 +1623720 5702872 1623616 5702904 1621944 5703896 1629984 5706008 +1627904 5703304 1623816 5702824 1623720 5702872 1629984 5706008 +1621944 5703896 1620104 5713768 1629984 5706008 1623720 5702872 +1623720 5702872 1621944 5703896 1629984 5706008 1627904 5703304 +1630064 5705848 1628360 5703512 1627904 5703304 1629984 5706008 +1627904 5703304 1623720 5702872 1629984 5706008 1628360 5703512 +1630064 5705848 1628472 5703560 1628360 5703512 1629984 5706008 +1630064 5705848 1630080 5705344 1628472 5703560 1629984 5706008 +1630064 5705848 1630096 5705696 1630080 5705344 1629984 5706008 +1630080 5705344 1628472 5703560 1629984 5706008 1630096 5705696 +1630080 5705344 1628968 5703704 1628472 5703560 1629984 5706008 +1630080 5705344 1628968 5703704 1629984 5706008 1630096 5705696 +1630080 5705344 1629472 5703936 1628968 5703704 1629984 5706008 +1628472 5703560 1628360 5703512 1629984 5706008 1628968 5703704 +1628472 5703560 1628448 5703536 1628360 5703512 1629984 5706008 +1628360 5703512 1627904 5703304 1629984 5706008 1628472 5703560 +1620104 5713768 1620160 5713848 1629984 5706008 1621944 5703896 +1630064 5705848 1629984 5706008 1627336 5719640 1627384 5719672 +1630064 5705848 1629984 5706008 1627384 5719672 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1629984 5706008 +1629984 5706008 1620552 5714440 1627336 5719640 1627384 5719672 +1630064 5705848 1629984 5706008 1627448 5719792 1629736 5726176 +1629984 5706008 1627384 5719672 1627448 5719792 1629736 5726176 +1627448 5719792 1629624 5725984 1629736 5726176 1629984 5706008 +1630064 5705848 1629984 5706008 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1629984 5706008 +1630064 5705848 1629984 5706008 1629944 5726576 1630096 5705696 +1629984 5706008 1627448 5719792 1629736 5726176 1629944 5726576 +1629984 5706008 1627336 5719640 1627384 5719672 1627448 5719792 +1629984 5706008 1629944 5726576 1630064 5705848 1630096 5705696 +1627336 5719640 1629904 5706120 1620552 5714440 1627312 5719640 +1629904 5706120 1629984 5706008 1620552 5714440 1627312 5719640 +1620552 5714440 1620560 5714512 1627312 5719640 1629904 5706120 +1629984 5706008 1629904 5706120 1627336 5719640 1627384 5719672 +1629984 5706008 1620552 5714440 1629904 5706120 1627384 5719672 +1620552 5714440 1629904 5706120 1629984 5706008 1620512 5714368 +1620552 5714440 1627312 5719640 1629904 5706120 1620512 5714368 +1629984 5706008 1620160 5713848 1620512 5714368 1629904 5706120 +1629984 5706008 1620104 5713768 1620160 5713848 1629904 5706120 +1620160 5713848 1620272 5714120 1620512 5714368 1629904 5706120 +1620160 5713848 1620512 5714368 1629904 5706120 1620104 5713768 +1629904 5706120 1627384 5719672 1629984 5706008 1620104 5713768 +1620512 5714368 1620552 5714440 1629904 5706120 1620160 5713848 +1627336 5719640 1627384 5719672 1629904 5706120 1627312 5719640 +1629984 5706008 1621944 5703896 1620104 5713768 1629904 5706120 +1621944 5703896 1620040 5713712 1620104 5713768 1629904 5706120 +1620104 5713768 1620160 5713848 1629904 5706120 1621944 5703896 +1629984 5706008 1621944 5703896 1629904 5706120 1627384 5719672 +1629984 5706008 1623720 5702872 1621944 5703896 1629904 5706120 +1623720 5702872 1623616 5702904 1621944 5703896 1629904 5706120 +1629984 5706008 1623720 5702872 1629904 5706120 1627384 5719672 +1629984 5706008 1627904 5703304 1623720 5702872 1629904 5706120 +1629984 5706008 1628360 5703512 1627904 5703304 1629904 5706120 +1627904 5703304 1623816 5702824 1623720 5702872 1629904 5706120 +1629984 5706008 1628360 5703512 1629904 5706120 1627384 5719672 +1623720 5702872 1621944 5703896 1629904 5706120 1627904 5703304 +1627904 5703304 1623720 5702872 1629904 5706120 1628360 5703512 +1629984 5706008 1628472 5703560 1628360 5703512 1629904 5706120 +1628360 5703512 1627904 5703304 1629904 5706120 1628472 5703560 +1629984 5706008 1628968 5703704 1628472 5703560 1629904 5706120 +1629984 5706008 1630080 5705344 1628968 5703704 1629904 5706120 +1629984 5706008 1630096 5705696 1630080 5705344 1629904 5706120 +1629984 5706008 1630064 5705848 1630096 5705696 1629904 5706120 +1630080 5705344 1629472 5703936 1628968 5703704 1629904 5706120 +1630080 5705344 1628968 5703704 1629904 5706120 1630096 5705696 +1628968 5703704 1628472 5703560 1629904 5706120 1630080 5705344 +1628472 5703560 1628448 5703536 1628360 5703512 1629904 5706120 +1629984 5706008 1630096 5705696 1629904 5706120 1627384 5719672 +1628472 5703560 1628360 5703512 1629904 5706120 1628968 5703704 +1621944 5703896 1620104 5713768 1629904 5706120 1623720 5702872 +1629984 5706008 1629904 5706120 1627384 5719672 1627448 5719792 +1629984 5706008 1629904 5706120 1627448 5719792 1629736 5726176 +1627384 5719672 1627400 5719704 1627448 5719792 1629904 5706120 +1629904 5706120 1627336 5719640 1627384 5719672 1627448 5719792 +1629984 5706008 1630096 5705696 1629904 5706120 1627448 5719792 +1620512 5714368 1629848 5706168 1620160 5713848 1620272 5714120 +1620160 5713848 1629848 5706168 1629904 5706120 1620104 5713768 +1629848 5706168 1620512 5714368 1629904 5706120 1620104 5713768 +1629904 5706120 1621944 5703896 1620104 5713768 1629848 5706168 +1621944 5703896 1620040 5713712 1620104 5713768 1629848 5706168 +1629904 5706120 1621944 5703896 1629848 5706168 1620512 5714368 +1620160 5713848 1620512 5714368 1629848 5706168 1620104 5713768 +1620104 5713768 1620160 5713848 1629848 5706168 1621944 5703896 +1629904 5706120 1629848 5706168 1620512 5714368 1620552 5714440 +1629904 5706120 1621944 5703896 1629848 5706168 1620552 5714440 +1629904 5706120 1629848 5706168 1620552 5714440 1627312 5719640 +1629904 5706120 1621944 5703896 1629848 5706168 1627312 5719640 +1629904 5706120 1629848 5706168 1627312 5719640 1627336 5719640 +1629904 5706120 1621944 5703896 1629848 5706168 1627336 5719640 +1629848 5706168 1620552 5714440 1627312 5719640 1627336 5719640 +1620552 5714440 1620560 5714512 1627312 5719640 1629848 5706168 +1629848 5706168 1620160 5713848 1620512 5714368 1620552 5714440 +1629848 5706168 1620512 5714368 1620552 5714440 1627312 5719640 +1629904 5706120 1629848 5706168 1627336 5719640 1627384 5719672 +1629904 5706120 1621944 5703896 1629848 5706168 1627384 5719672 +1629848 5706168 1627312 5719640 1627336 5719640 1627384 5719672 +1629904 5706120 1629848 5706168 1627384 5719672 1627448 5719792 +1629904 5706120 1623720 5702872 1621944 5703896 1629848 5706168 +1629904 5706120 1623720 5702872 1629848 5706168 1627384 5719672 +1623720 5702872 1623616 5702904 1621944 5703896 1629848 5706168 +1621944 5703896 1620104 5713768 1629848 5706168 1623720 5702872 +1629904 5706120 1627904 5703304 1623720 5702872 1629848 5706168 +1629904 5706120 1627904 5703304 1629848 5706168 1627384 5719672 +1627904 5703304 1623816 5702824 1623720 5702872 1629848 5706168 +1629904 5706120 1628360 5703512 1627904 5703304 1629848 5706168 +1629904 5706120 1628472 5703560 1628360 5703512 1629848 5706168 +1629904 5706120 1628472 5703560 1629848 5706168 1627384 5719672 +1628472 5703560 1628448 5703536 1628360 5703512 1629848 5706168 +1627904 5703304 1623720 5702872 1629848 5706168 1628360 5703512 +1628360 5703512 1627904 5703304 1629848 5706168 1628472 5703560 +1629904 5706120 1628968 5703704 1628472 5703560 1629848 5706168 +1628472 5703560 1628360 5703512 1629848 5706168 1628968 5703704 +1629904 5706120 1628968 5703704 1629848 5706168 1627384 5719672 +1629904 5706120 1630080 5705344 1628968 5703704 1629848 5706168 +1629904 5706120 1630080 5705344 1629848 5706168 1627384 5719672 +1630080 5705344 1629472 5703936 1628968 5703704 1629848 5706168 +1629904 5706120 1630096 5705696 1630080 5705344 1629848 5706168 +1629904 5706120 1629984 5706008 1630096 5705696 1629848 5706168 +1629904 5706120 1629984 5706008 1629848 5706168 1627384 5719672 +1629984 5706008 1630064 5705848 1630096 5705696 1629848 5706168 +1630096 5705696 1630080 5705344 1629848 5706168 1629984 5706008 +1630080 5705344 1628968 5703704 1629848 5706168 1630096 5705696 +1628968 5703704 1628472 5703560 1629848 5706168 1630080 5705344 +1623720 5702872 1621944 5703896 1629848 5706168 1627904 5703304 +1629848 5706168 1629824 5706192 1627312 5719640 1627336 5719640 +1629848 5706168 1629824 5706192 1627336 5719640 1627384 5719672 +1629824 5706192 1627312 5719640 1627336 5719640 1627384 5719672 +1627312 5719640 1629824 5706192 1620552 5714440 1620560 5714512 +1629848 5706168 1620552 5714440 1629824 5706192 1627384 5719672 +1629824 5706192 1620552 5714440 1627312 5719640 1627336 5719640 +1620552 5714440 1629824 5706192 1629848 5706168 1620512 5714368 +1629848 5706168 1620160 5713848 1620512 5714368 1629824 5706192 +1629824 5706192 1627384 5719672 1629848 5706168 1620160 5713848 +1629848 5706168 1620104 5713768 1620160 5713848 1629824 5706192 +1620160 5713848 1620512 5714368 1629824 5706192 1620104 5713768 +1629848 5706168 1620104 5713768 1629824 5706192 1627384 5719672 +1620552 5714440 1627312 5719640 1629824 5706192 1620512 5714368 +1620160 5713848 1620272 5714120 1620512 5714368 1629824 5706192 +1629848 5706168 1621944 5703896 1620104 5713768 1629824 5706192 +1621944 5703896 1620040 5713712 1620104 5713768 1629824 5706192 +1629848 5706168 1623720 5702872 1621944 5703896 1629824 5706192 +1623720 5702872 1623616 5702904 1621944 5703896 1629824 5706192 +1629848 5706168 1623720 5702872 1629824 5706192 1627384 5719672 +1620104 5713768 1620160 5713848 1629824 5706192 1621944 5703896 +1621944 5703896 1620104 5713768 1629824 5706192 1623720 5702872 +1620512 5714368 1620552 5714440 1629824 5706192 1620160 5713848 +1629848 5706168 1629824 5706192 1627384 5719672 1629904 5706120 +1629824 5706192 1627336 5719640 1627384 5719672 1629904 5706120 +1629848 5706168 1623720 5702872 1629824 5706192 1629904 5706120 +1627384 5719672 1627448 5719792 1629904 5706120 1629824 5706192 +1627384 5719672 1627448 5719792 1629824 5706192 1627336 5719640 +1627384 5719672 1627400 5719704 1627448 5719792 1629824 5706192 +1629904 5706120 1629848 5706168 1629824 5706192 1627448 5719792 +1629848 5706168 1627904 5703304 1623720 5702872 1629824 5706192 +1627904 5703304 1623816 5702824 1623720 5702872 1629824 5706192 +1623720 5702872 1621944 5703896 1629824 5706192 1627904 5703304 +1629848 5706168 1627904 5703304 1629824 5706192 1629904 5706120 +1629848 5706168 1628360 5703512 1627904 5703304 1629824 5706192 +1629848 5706168 1628360 5703512 1629824 5706192 1629904 5706120 +1629848 5706168 1628472 5703560 1628360 5703512 1629824 5706192 +1629848 5706168 1628968 5703704 1628472 5703560 1629824 5706192 +1629848 5706168 1628968 5703704 1629824 5706192 1629904 5706120 +1628472 5703560 1628448 5703536 1628360 5703512 1629824 5706192 +1628360 5703512 1627904 5703304 1629824 5706192 1628472 5703560 +1628472 5703560 1628360 5703512 1629824 5706192 1628968 5703704 +1629848 5706168 1630080 5705344 1628968 5703704 1629824 5706192 +1628968 5703704 1628472 5703560 1629824 5706192 1630080 5705344 +1630080 5705344 1629472 5703936 1628968 5703704 1629824 5706192 +1629848 5706168 1630080 5705344 1629824 5706192 1629904 5706120 +1629848 5706168 1630096 5705696 1630080 5705344 1629824 5706192 +1627904 5703304 1623720 5702872 1629824 5706192 1628360 5703512 +1627448 5719792 1629984 5706008 1629904 5706120 1629824 5706192 +1627312 5719640 1629808 5706208 1620552 5714440 1620560 5714512 +1629824 5706192 1629808 5706208 1627312 5719640 1627336 5719640 +1629824 5706192 1629808 5706208 1627336 5719640 1627384 5719672 +1629824 5706192 1629808 5706208 1627384 5719672 1627448 5719792 +1629808 5706208 1627336 5719640 1627384 5719672 1627448 5719792 +1629808 5706208 1627312 5719640 1627336 5719640 1627384 5719672 +1629824 5706192 1620552 5714440 1629808 5706208 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1629808 5706208 +1620552 5714440 1629808 5706208 1629824 5706192 1620512 5714368 +1629808 5706208 1627448 5719792 1629824 5706192 1620512 5714368 +1629808 5706208 1620552 5714440 1627312 5719640 1627336 5719640 +1620552 5714440 1627312 5719640 1629808 5706208 1620512 5714368 +1629824 5706192 1629808 5706208 1627448 5719792 1629904 5706120 +1629808 5706208 1627384 5719672 1627448 5719792 1629904 5706120 +1629824 5706192 1620512 5714368 1629808 5706208 1629904 5706120 +1629824 5706192 1620160 5713848 1620512 5714368 1629808 5706208 +1629824 5706192 1620104 5713768 1620160 5713848 1629808 5706208 +1629824 5706192 1621944 5703896 1620104 5713768 1629808 5706208 +1621944 5703896 1620040 5713712 1620104 5713768 1629808 5706208 +1620104 5713768 1620160 5713848 1629808 5706208 1621944 5703896 +1629824 5706192 1621944 5703896 1629808 5706208 1629904 5706120 +1620512 5714368 1620552 5714440 1629808 5706208 1620160 5713848 +1620160 5713848 1620272 5714120 1620512 5714368 1629808 5706208 +1629824 5706192 1623720 5702872 1621944 5703896 1629808 5706208 +1623720 5702872 1623616 5702904 1621944 5703896 1629808 5706208 +1629824 5706192 1627904 5703304 1623720 5702872 1629808 5706208 +1627904 5703304 1623816 5702824 1623720 5702872 1629808 5706208 +1621944 5703896 1620104 5713768 1629808 5706208 1623720 5702872 +1629824 5706192 1627904 5703304 1629808 5706208 1629904 5706120 +1623720 5702872 1621944 5703896 1629808 5706208 1627904 5703304 +1620160 5713848 1620512 5714368 1629808 5706208 1620104 5713768 +1629824 5706192 1629808 5706208 1629904 5706120 1629848 5706168 +1629824 5706192 1628360 5703512 1627904 5703304 1629808 5706208 +1627904 5703304 1623720 5702872 1629808 5706208 1628360 5703512 +1629824 5706192 1628360 5703512 1629808 5706208 1629904 5706120 +1629824 5706192 1628472 5703560 1628360 5703512 1629808 5706208 +1629824 5706192 1628472 5703560 1629808 5706208 1629904 5706120 +1628472 5703560 1628448 5703536 1628360 5703512 1629808 5706208 +1629824 5706192 1628968 5703704 1628472 5703560 1629808 5706208 +1629824 5706192 1630080 5705344 1628968 5703704 1629808 5706208 +1630080 5705344 1629472 5703936 1628968 5703704 1629808 5706208 +1629824 5706192 1630080 5705344 1629808 5706208 1629904 5706120 +1628472 5703560 1628360 5703512 1629808 5706208 1628968 5703704 +1628968 5703704 1628472 5703560 1629808 5706208 1630080 5705344 +1629824 5706192 1629848 5706168 1630080 5705344 1629808 5706208 +1628360 5703512 1627904 5703304 1629808 5706208 1628472 5703560 +1627448 5719792 1629984 5706008 1629904 5706120 1629808 5706208 +1620104 5713768 1629752 5706192 1621944 5703896 1620040 5713712 +1629808 5706208 1629752 5706192 1620104 5713768 1620160 5713848 +1621944 5703896 1629752 5706192 1629808 5706208 1623720 5702872 +1621944 5703896 1629752 5706192 1623720 5702872 1623616 5702904 +1629808 5706208 1623720 5702872 1629752 5706192 1620160 5713848 +1629752 5706192 1621944 5703896 1620104 5713768 1620160 5713848 +1629808 5706208 1627904 5703304 1623720 5702872 1629752 5706192 +1627904 5703304 1623816 5702824 1623720 5702872 1629752 5706192 +1629808 5706208 1628360 5703512 1627904 5703304 1629752 5706192 +1623720 5702872 1621944 5703896 1629752 5706192 1627904 5703304 +1629808 5706208 1628360 5703512 1629752 5706192 1620160 5713848 +1627904 5703304 1623720 5702872 1629752 5706192 1628360 5703512 +1629808 5706208 1629752 5706192 1620160 5713848 1620512 5714368 +1629752 5706192 1620104 5713768 1620160 5713848 1620512 5714368 +1629808 5706208 1629752 5706192 1620512 5714368 1620552 5714440 +1629808 5706208 1628360 5703512 1629752 5706192 1620552 5714440 +1629808 5706208 1629752 5706192 1620552 5714440 1627312 5719640 +1620552 5714440 1620560 5714512 1627312 5719640 1629752 5706192 +1629752 5706192 1620512 5714368 1620552 5714440 1627312 5719640 +1629808 5706208 1629752 5706192 1627312 5719640 1627336 5719640 +1629808 5706208 1629752 5706192 1627336 5719640 1627384 5719672 +1629808 5706208 1628360 5703512 1629752 5706192 1627336 5719640 +1629752 5706192 1620552 5714440 1627312 5719640 1627336 5719640 +1620160 5713848 1620272 5714120 1620512 5714368 1629752 5706192 +1629752 5706192 1620160 5713848 1620512 5714368 1620552 5714440 +1629808 5706208 1628472 5703560 1628360 5703512 1629752 5706192 +1628360 5703512 1627904 5703304 1629752 5706192 1628472 5703560 +1629808 5706208 1628472 5703560 1629752 5706192 1627336 5719640 +1628472 5703560 1628448 5703536 1628360 5703512 1629752 5706192 +1629808 5706208 1628968 5703704 1628472 5703560 1629752 5706192 +1629808 5706208 1628968 5703704 1629752 5706192 1627336 5719640 +1629808 5706208 1630080 5705344 1628968 5703704 1629752 5706192 +1629808 5706208 1629824 5706192 1630080 5705344 1629752 5706192 +1630080 5705344 1629472 5703936 1628968 5703704 1629752 5706192 +1629808 5706208 1629824 5706192 1629752 5706192 1627336 5719640 +1628968 5703704 1628472 5703560 1629752 5706192 1630080 5705344 +1630080 5705344 1628968 5703704 1629752 5706192 1629824 5706192 +1629824 5706192 1629848 5706168 1630080 5705344 1629752 5706192 +1629824 5706192 1629848 5706168 1629752 5706192 1629808 5706208 +1629848 5706168 1630096 5705696 1630080 5705344 1629752 5706192 +1629848 5706168 1629984 5706008 1630096 5705696 1629752 5706192 +1629848 5706168 1629904 5706120 1629984 5706008 1629752 5706192 +1629984 5706008 1630064 5705848 1630096 5705696 1629752 5706192 +1629984 5706008 1630064 5705848 1629752 5706192 1629904 5706120 +1630096 5705696 1630080 5705344 1629752 5706192 1630064 5705848 +1630080 5705344 1628968 5703704 1629752 5706192 1630096 5705696 +1629848 5706168 1629904 5706120 1629752 5706192 1629824 5706192 +1628472 5703560 1628360 5703512 1629752 5706192 1628968 5703704 +1621944 5703896 1620104 5713768 1629752 5706192 1623720 5702872 +1628968 5703704 1629736 5706152 1629752 5706192 1630080 5705344 +1628968 5703704 1629736 5706152 1630080 5705344 1629472 5703936 +1629752 5706192 1630096 5705696 1630080 5705344 1629736 5706152 +1629752 5706192 1630064 5705848 1630096 5705696 1629736 5706152 +1629752 5706192 1629984 5706008 1630064 5705848 1629736 5706152 +1629752 5706192 1629904 5706120 1629984 5706008 1629736 5706152 +1629752 5706192 1629848 5706168 1629904 5706120 1629736 5706152 +1629984 5706008 1630064 5705848 1629736 5706152 1629904 5706120 +1629904 5706120 1629984 5706008 1629736 5706152 1629848 5706168 +1630064 5705848 1630096 5705696 1629736 5706152 1629984 5706008 +1630080 5705344 1628968 5703704 1629736 5706152 1630096 5705696 +1630096 5705696 1630080 5705344 1629736 5706152 1630064 5705848 +1629752 5706192 1629824 5706192 1629848 5706168 1629736 5706152 +1629848 5706168 1629904 5706120 1629736 5706152 1629824 5706192 +1629752 5706192 1629808 5706208 1629824 5706192 1629736 5706152 +1629752 5706192 1629736 5706152 1628472 5703560 1628360 5703512 +1629752 5706192 1629736 5706152 1628360 5703512 1627904 5703304 +1628472 5703560 1628448 5703536 1628360 5703512 1629736 5706152 +1629752 5706192 1629736 5706152 1627904 5703304 1623720 5702872 +1627904 5703304 1623816 5702824 1623720 5702872 1629736 5706152 +1629736 5706152 1628360 5703512 1627904 5703304 1623720 5702872 +1629752 5706192 1629736 5706152 1623720 5702872 1621944 5703896 +1623720 5702872 1623616 5702904 1621944 5703896 1629736 5706152 +1629736 5706152 1627904 5703304 1623720 5702872 1621944 5703896 +1629736 5706152 1628472 5703560 1628360 5703512 1627904 5703304 +1629736 5706152 1621944 5703896 1629752 5706192 1629824 5706192 +1629752 5706192 1629736 5706152 1621944 5703896 1620104 5713768 +1629736 5706152 1628968 5703704 1628472 5703560 1628360 5703512 +1628968 5703704 1628472 5703560 1629736 5706152 1630080 5705344 +1629736 5706152 1629656 5706024 1627904 5703304 1623720 5702872 +1627904 5703304 1623816 5702824 1623720 5702872 1629656 5706024 +1629656 5706024 1628360 5703512 1627904 5703304 1623720 5702872 +1629736 5706152 1629656 5706024 1623720 5702872 1621944 5703896 +1623720 5702872 1623616 5702904 1621944 5703896 1629656 5706024 +1629656 5706024 1627904 5703304 1623720 5702872 1621944 5703896 +1629736 5706152 1629656 5706024 1621944 5703896 1629752 5706192 +1629656 5706024 1623720 5702872 1621944 5703896 1629752 5706192 +1628360 5703512 1629656 5706024 1629736 5706152 1628472 5703560 +1628360 5703512 1627904 5703304 1629656 5706024 1628472 5703560 +1628360 5703512 1629656 5706024 1628472 5703560 1628448 5703536 +1621944 5703896 1620104 5713768 1629752 5706192 1629656 5706024 +1629736 5706152 1628968 5703704 1628472 5703560 1629656 5706024 +1628472 5703560 1628360 5703512 1629656 5706024 1628968 5703704 +1629736 5706152 1628968 5703704 1629656 5706024 1629752 5706192 +1629736 5706152 1630080 5705344 1628968 5703704 1629656 5706024 +1630080 5705344 1629472 5703936 1628968 5703704 1629656 5706024 +1630080 5705344 1629752 5704128 1629472 5703936 1629656 5706024 +1629736 5706152 1630096 5705696 1630080 5705344 1629656 5706024 +1629736 5706152 1630064 5705848 1630096 5705696 1629656 5706024 +1629736 5706152 1629984 5706008 1630064 5705848 1629656 5706024 +1629736 5706152 1629904 5706120 1629984 5706008 1629656 5706024 +1629736 5706152 1629848 5706168 1629904 5706120 1629656 5706024 +1629984 5706008 1630064 5705848 1629656 5706024 1629904 5706120 +1630096 5705696 1630080 5705344 1629656 5706024 1630064 5705848 +1630064 5705848 1630096 5705696 1629656 5706024 1629984 5706008 +1628968 5703704 1628472 5703560 1629656 5706024 1629472 5703936 +1629736 5706152 1629904 5706120 1629656 5706024 1629752 5706192 +1630080 5705344 1629472 5703936 1629656 5706024 1630096 5705696 +1629472 5703936 1629616 5705808 1629656 5706024 1630080 5705344 +1629472 5703936 1629616 5705808 1630080 5705344 1629752 5704128 +1629616 5705808 1629656 5706024 1630080 5705344 1629752 5704128 +1629616 5705808 1628968 5703704 1629656 5706024 1630080 5705344 +1629472 5703936 1628968 5703704 1629616 5705808 1629752 5704128 +1629656 5706024 1629616 5705808 1628968 5703704 1628472 5703560 +1629656 5706024 1630080 5705344 1629616 5705808 1628472 5703560 +1629616 5705808 1629472 5703936 1628968 5703704 1628472 5703560 +1629656 5706024 1629616 5705808 1628472 5703560 1628360 5703512 +1629656 5706024 1630080 5705344 1629616 5705808 1628360 5703512 +1629656 5706024 1629616 5705808 1628360 5703512 1627904 5703304 +1629656 5706024 1629616 5705808 1627904 5703304 1623720 5702872 +1629656 5706024 1630080 5705344 1629616 5705808 1627904 5703304 +1628472 5703560 1628448 5703536 1628360 5703512 1629616 5705808 +1629616 5705808 1628472 5703560 1628360 5703512 1627904 5703304 +1629616 5705808 1628968 5703704 1628472 5703560 1628360 5703512 +1629656 5706024 1630096 5705696 1630080 5705344 1629616 5705808 +1630080 5705344 1629752 5704128 1629616 5705808 1630096 5705696 +1629656 5706024 1630096 5705696 1629616 5705808 1627904 5703304 +1629656 5706024 1630064 5705848 1630096 5705696 1629616 5705808 +1629656 5706024 1630064 5705848 1629616 5705808 1627904 5703304 +1629656 5706024 1629984 5706008 1630064 5705848 1629616 5705808 +1629656 5706024 1629984 5706008 1629616 5705808 1627904 5703304 +1629656 5706024 1629904 5706120 1629984 5706008 1629616 5705808 +1630064 5705848 1630096 5705696 1629616 5705808 1629984 5706008 +1630096 5705696 1630080 5705344 1629616 5705808 1630064 5705848 +1630080 5705344 1630152 5704824 1629752 5704128 1629616 5705808 +1629752 5704128 1629472 5703936 1629616 5705808 1630152 5704824 +1630080 5705344 1630152 5704824 1629616 5705808 1630096 5705696 +1630152 5704824 1629944 5704312 1629752 5704128 1629616 5705808 +1629616 5705808 1629696 5705552 1629752 5704128 1629472 5703936 +1629616 5705808 1630152 5704824 1629696 5705552 1629472 5703936 +1629616 5705808 1629696 5705552 1629472 5703936 1628968 5703704 +1629696 5705552 1629752 5704128 1629472 5703936 1628968 5703704 +1629616 5705808 1629696 5705552 1628968 5703704 1628472 5703560 +1629616 5705808 1630152 5704824 1629696 5705552 1628472 5703560 +1629696 5705552 1629472 5703936 1628968 5703704 1628472 5703560 +1629696 5705552 1630152 5704824 1629752 5704128 1629472 5703936 +1629752 5704128 1629696 5705552 1630152 5704824 1629944 5704312 +1629752 5704128 1629472 5703936 1629696 5705552 1629944 5704312 +1629696 5705552 1629616 5705808 1630152 5704824 1629944 5704312 +1630152 5704824 1630064 5704496 1629944 5704312 1629696 5705552 +1630152 5704824 1630064 5704496 1629696 5705552 1629616 5705808 +1629944 5704312 1629752 5704128 1629696 5705552 1630064 5704496 +1630152 5704824 1630128 5704656 1630064 5704496 1629696 5705552 +1629616 5705808 1629696 5705552 1628472 5703560 1628360 5703512 +1630152 5704824 1629696 5705552 1629616 5705808 1630080 5705344 +1629616 5705808 1630096 5705696 1630080 5705344 1629696 5705552 +1629696 5705552 1628472 5703560 1629616 5705808 1630096 5705696 +1630152 5704824 1630064 5704496 1629696 5705552 1630080 5705344 +1629616 5705808 1630064 5705848 1630096 5705696 1629696 5705552 +1630096 5705696 1630080 5705344 1629696 5705552 1630064 5705848 +1629616 5705808 1630064 5705848 1629696 5705552 1628472 5703560 +1629616 5705808 1629984 5706008 1630064 5705848 1629696 5705552 +1630080 5705344 1630152 5704824 1629696 5705552 1630096 5705696 +1629696 5705552 1629696 5705512 1629472 5703936 1628968 5703704 +1629696 5705552 1629696 5705512 1628968 5703704 1628472 5703560 +1629696 5705512 1629472 5703936 1628968 5703704 1628472 5703560 +1629696 5705552 1629696 5705512 1628472 5703560 1629616 5705808 +1629696 5705512 1628968 5703704 1628472 5703560 1629616 5705808 +1629752 5704128 1629696 5705512 1629696 5705552 1629944 5704312 +1629696 5705552 1629944 5704312 1629696 5705512 1629616 5705808 +1629696 5705512 1629752 5704128 1629472 5703936 1628968 5703704 +1629696 5705552 1630064 5704496 1629944 5704312 1629696 5705512 +1629944 5704312 1629752 5704128 1629696 5705512 1630064 5704496 +1629696 5705552 1630064 5704496 1629696 5705512 1629616 5705808 +1629752 5704128 1629472 5703936 1629696 5705512 1629944 5704312 +1629696 5705552 1630152 5704824 1630064 5704496 1629696 5705512 +1629696 5705552 1630152 5704824 1629696 5705512 1629616 5705808 +1629696 5705552 1630080 5705344 1630152 5704824 1629696 5705512 +1629696 5705552 1630080 5705344 1629696 5705512 1629616 5705808 +1630064 5704496 1629944 5704312 1629696 5705512 1630152 5704824 +1630152 5704824 1630128 5704656 1630064 5704496 1629696 5705512 +1630152 5704824 1630064 5704496 1629696 5705512 1630080 5705344 +1628472 5703560 1628360 5703512 1629616 5705808 1629696 5705512 +1629696 5705552 1630096 5705696 1630080 5705344 1629696 5705512 +1629696 5705552 1630064 5705848 1630096 5705696 1629696 5705512 +1629696 5705552 1630096 5705696 1629696 5705512 1629616 5705808 +1630080 5705344 1630152 5704824 1629696 5705512 1630096 5705696 +1628968 5703704 1629672 5705472 1629696 5705512 1629472 5703936 +1629696 5705512 1629672 5705472 1628472 5703560 1629616 5705808 +1629696 5705512 1629672 5705472 1629616 5705808 1629696 5705552 +1629672 5705472 1628472 5703560 1629616 5705808 1629696 5705552 +1629696 5705512 1629752 5704128 1629472 5703936 1629672 5705472 +1629472 5703936 1628968 5703704 1629672 5705472 1629752 5704128 +1629672 5705472 1629696 5705552 1629696 5705512 1629752 5704128 +1629696 5705512 1629944 5704312 1629752 5704128 1629672 5705472 +1629696 5705512 1630064 5704496 1629944 5704312 1629672 5705472 +1629752 5704128 1629472 5703936 1629672 5705472 1629944 5704312 +1629696 5705512 1630152 5704824 1630064 5704496 1629672 5705472 +1630064 5704496 1629944 5704312 1629672 5705472 1630152 5704824 +1629696 5705512 1630152 5704824 1629672 5705472 1629696 5705552 +1629944 5704312 1629752 5704128 1629672 5705472 1630064 5704496 +1629672 5705472 1628968 5703704 1628472 5703560 1629616 5705808 +1628968 5703704 1628472 5703560 1629672 5705472 1629472 5703936 +1630152 5704824 1630128 5704656 1630064 5704496 1629672 5705472 +1630128 5704656 1630112 5704600 1630064 5704496 1629672 5705472 +1630064 5704496 1629944 5704312 1629672 5705472 1630128 5704656 +1630152 5704824 1630128 5704656 1629672 5705472 1629696 5705512 +1629696 5705512 1630080 5705344 1630152 5704824 1629672 5705472 +1629696 5705512 1630096 5705696 1630080 5705344 1629672 5705472 +1630152 5704824 1630128 5704656 1629672 5705472 1630080 5705344 +1629696 5705512 1630080 5705344 1629672 5705472 1629696 5705552 +1628472 5703560 1628360 5703512 1629616 5705808 1629672 5705472 +1629672 5705472 1629568 5705376 1629616 5705808 1629696 5705552 +1629672 5705472 1629568 5705376 1629696 5705552 1629696 5705512 +1628472 5703560 1629568 5705376 1629672 5705472 1628968 5703704 +1629672 5705472 1628968 5703704 1629568 5705376 1629696 5705552 +1629672 5705472 1629472 5703936 1628968 5703704 1629568 5705376 +1629672 5705472 1629752 5704128 1629472 5703936 1629568 5705376 +1629672 5705472 1629944 5704312 1629752 5704128 1629568 5705376 +1629752 5704128 1629472 5703936 1629568 5705376 1629944 5704312 +1629672 5705472 1630064 5704496 1629944 5704312 1629568 5705376 +1629672 5705472 1630128 5704656 1630064 5704496 1629568 5705376 +1630128 5704656 1630112 5704600 1630064 5704496 1629568 5705376 +1629944 5704312 1629752 5704128 1629568 5705376 1630064 5704496 +1630064 5704496 1629944 5704312 1629568 5705376 1630128 5704656 +1628968 5703704 1628472 5703560 1629568 5705376 1629472 5703936 +1629672 5705472 1630128 5704656 1629568 5705376 1629696 5705552 +1629472 5703936 1628968 5703704 1629568 5705376 1629752 5704128 +1629672 5705472 1630152 5704824 1630128 5704656 1629568 5705376 +1630128 5704656 1630064 5704496 1629568 5705376 1630152 5704824 +1629672 5705472 1630080 5705344 1630152 5704824 1629568 5705376 +1629672 5705472 1630080 5705344 1629568 5705376 1629696 5705552 +1630152 5704824 1630128 5704656 1629568 5705376 1630080 5705344 +1629568 5705376 1628472 5703560 1629616 5705808 1629696 5705552 +1628472 5703560 1629616 5705808 1629568 5705376 1628968 5703704 +1629672 5705472 1629696 5705512 1630080 5705344 1629568 5705376 +1629616 5705808 1629568 5705376 1628472 5703560 1628360 5703512 +1628472 5703560 1628448 5703536 1628360 5703512 1629568 5705376 +1629616 5705808 1629696 5705552 1629568 5705376 1628360 5703512 +1629568 5705376 1628968 5703704 1628472 5703560 1628360 5703512 +1629616 5705808 1629568 5705376 1628360 5703512 1627904 5703304 +1629616 5705808 1629568 5705376 1627904 5703304 1629656 5706024 +1629616 5705808 1629696 5705552 1629568 5705376 1627904 5703304 +1629568 5705376 1628472 5703560 1628360 5703512 1627904 5703304 +1629616 5705808 1629376 5705272 1627904 5703304 1629656 5706024 +1627904 5703304 1623720 5702872 1629656 5706024 1629376 5705272 +1627904 5703304 1623816 5702824 1623720 5702872 1629376 5705272 +1623720 5702872 1621944 5703896 1629656 5706024 1629376 5705272 +1629656 5706024 1629616 5705808 1629376 5705272 1623720 5702872 +1629376 5705272 1629568 5705376 1627904 5703304 1623720 5702872 +1629568 5705376 1629376 5705272 1629616 5705808 1629696 5705552 +1629616 5705808 1629568 5705376 1629376 5705272 1629656 5706024 +1627904 5703304 1629376 5705272 1629568 5705376 1628360 5703512 +1627904 5703304 1623720 5702872 1629376 5705272 1628360 5703512 +1629376 5705272 1629616 5705808 1629568 5705376 1628360 5703512 +1629568 5705376 1628472 5703560 1628360 5703512 1629376 5705272 +1628472 5703560 1628448 5703536 1628360 5703512 1629376 5705272 +1629568 5705376 1628472 5703560 1629376 5705272 1629616 5705808 +1629568 5705376 1628968 5703704 1628472 5703560 1629376 5705272 +1629568 5705376 1629472 5703936 1628968 5703704 1629376 5705272 +1629568 5705376 1629752 5704128 1629472 5703936 1629376 5705272 +1629568 5705376 1629944 5704312 1629752 5704128 1629376 5705272 +1629568 5705376 1630064 5704496 1629944 5704312 1629376 5705272 +1629944 5704312 1629752 5704128 1629376 5705272 1630064 5704496 +1629568 5705376 1630128 5704656 1630064 5704496 1629376 5705272 +1630128 5704656 1630112 5704600 1630064 5704496 1629376 5705272 +1630128 5704656 1630136 5704624 1630112 5704600 1629376 5705272 +1629568 5705376 1630152 5704824 1630128 5704656 1629376 5705272 +1630064 5704496 1629944 5704312 1629376 5705272 1630112 5704600 +1630128 5704656 1630112 5704600 1629376 5705272 1630152 5704824 +1629472 5703936 1628968 5703704 1629376 5705272 1629752 5704128 +1629752 5704128 1629472 5703936 1629376 5705272 1629944 5704312 +1629568 5705376 1630080 5705344 1630152 5704824 1629376 5705272 +1629568 5705376 1630152 5704824 1629376 5705272 1629616 5705808 +1628968 5703704 1628472 5703560 1629376 5705272 1629472 5703936 +1628360 5703512 1627904 5703304 1629376 5705272 1628472 5703560 +1628472 5703560 1628360 5703512 1629376 5705272 1628968 5703704 +1629656 5706024 1629312 5705264 1623720 5702872 1621944 5703896 +1623720 5702872 1623616 5702904 1621944 5703896 1629312 5705264 +1623720 5702872 1629312 5705264 1629376 5705272 1627904 5703304 +1623720 5702872 1629312 5705264 1627904 5703304 1623816 5702824 +1629376 5705272 1629312 5705264 1629656 5706024 1629616 5705808 +1629656 5706024 1629312 5705264 1621944 5703896 1629752 5706192 +1629376 5705272 1628360 5703512 1627904 5703304 1629312 5705264 +1627904 5703304 1623720 5702872 1629312 5705264 1628360 5703512 +1629656 5706024 1629616 5705808 1629312 5705264 1621944 5703896 +1629312 5705264 1627904 5703304 1623720 5702872 1621944 5703896 +1629376 5705272 1629312 5705264 1629616 5705808 1629568 5705376 +1629312 5705264 1629616 5705808 1629376 5705272 1628360 5703512 +1629376 5705272 1628472 5703560 1628360 5703512 1629312 5705264 +1628472 5703560 1628448 5703536 1628360 5703512 1629312 5705264 +1628360 5703512 1627904 5703304 1629312 5705264 1628472 5703560 +1629376 5705272 1628472 5703560 1629312 5705264 1629616 5705808 +1629376 5705272 1628968 5703704 1628472 5703560 1629312 5705264 +1629376 5705272 1629472 5703936 1628968 5703704 1629312 5705264 +1629376 5705272 1629752 5704128 1629472 5703936 1629312 5705264 +1629376 5705272 1629944 5704312 1629752 5704128 1629312 5705264 +1629472 5703936 1628968 5703704 1629312 5705264 1629752 5704128 +1629376 5705272 1629752 5704128 1629312 5705264 1629616 5705808 +1628472 5703560 1628360 5703512 1629312 5705264 1628968 5703704 +1628968 5703704 1628472 5703560 1629312 5705264 1629472 5703936 +1621944 5703896 1629208 5705288 1629312 5705264 1623720 5702872 +1621944 5703896 1629208 5705288 1623720 5702872 1623616 5702904 +1621944 5703896 1629656 5706024 1629208 5705288 1623720 5702872 +1629656 5706024 1629208 5705288 1621944 5703896 1629752 5706192 +1629312 5705264 1629208 5705288 1629656 5706024 1629616 5705808 +1629312 5705264 1629208 5705288 1629616 5705808 1629376 5705272 +1629208 5705288 1629656 5706024 1629616 5705808 1629376 5705272 +1629208 5705288 1629376 5705272 1629312 5705264 1623720 5702872 +1629312 5705264 1627904 5703304 1623720 5702872 1629208 5705288 +1627904 5703304 1623816 5702824 1623720 5702872 1629208 5705288 +1623720 5702872 1621944 5703896 1629208 5705288 1627904 5703304 +1629312 5705264 1628360 5703512 1627904 5703304 1629208 5705288 +1629312 5705264 1628472 5703560 1628360 5703512 1629208 5705288 +1628360 5703512 1627904 5703304 1629208 5705288 1628472 5703560 +1628472 5703560 1628448 5703536 1628360 5703512 1629208 5705288 +1629312 5705264 1628472 5703560 1629208 5705288 1629376 5705272 +1627904 5703304 1623720 5702872 1629208 5705288 1628360 5703512 +1629208 5705288 1621944 5703896 1629656 5706024 1629616 5705808 +1629616 5705808 1629568 5705376 1629376 5705272 1629208 5705288 +1629376 5705272 1629312 5705264 1629208 5705288 1629568 5705376 +1629616 5705808 1629568 5705376 1629208 5705288 1629656 5706024 +1629616 5705808 1629696 5705552 1629568 5705376 1629208 5705288 +1629312 5705264 1628968 5703704 1628472 5703560 1629208 5705288 +1628472 5703560 1628360 5703512 1629208 5705288 1628968 5703704 +1629312 5705264 1628968 5703704 1629208 5705288 1629376 5705272 +1629312 5705264 1629472 5703936 1628968 5703704 1629208 5705288 +1629312 5705264 1629472 5703936 1629208 5705288 1629376 5705272 +1629312 5705264 1629752 5704128 1629472 5703936 1629208 5705288 +1628968 5703704 1628472 5703560 1629208 5705288 1629472 5703936 +1621944 5703896 1629064 5705344 1629208 5705288 1623720 5702872 +1621944 5703896 1629064 5705344 1623720 5702872 1623616 5702904 +1629208 5705288 1627904 5703304 1623720 5702872 1629064 5705344 +1627904 5703304 1623816 5702824 1623720 5702872 1629064 5705344 +1627904 5703304 1623816 5702824 1629064 5705344 1629208 5705288 +1627904 5703304 1623888 5702776 1623816 5702824 1629064 5705344 +1629064 5705344 1629656 5706024 1629208 5705288 1627904 5703304 +1623720 5702872 1621944 5703896 1629064 5705344 1623816 5702824 +1621944 5703896 1629656 5706024 1629064 5705344 1623720 5702872 +1629656 5706024 1629064 5705344 1621944 5703896 1629752 5706192 +1629656 5706024 1629064 5705344 1629752 5706192 1629736 5706152 +1629656 5706024 1629208 5705288 1629064 5705344 1629752 5706192 +1629064 5705344 1623720 5702872 1621944 5703896 1629752 5706192 +1629208 5705288 1628360 5703512 1627904 5703304 1629064 5705344 +1627904 5703304 1623816 5702824 1629064 5705344 1628360 5703512 +1629208 5705288 1628472 5703560 1628360 5703512 1629064 5705344 +1629208 5705288 1628472 5703560 1629064 5705344 1629656 5706024 +1628472 5703560 1628448 5703536 1628360 5703512 1629064 5705344 +1629208 5705288 1628968 5703704 1628472 5703560 1629064 5705344 +1628472 5703560 1628360 5703512 1629064 5705344 1628968 5703704 +1629208 5705288 1628968 5703704 1629064 5705344 1629656 5706024 +1628360 5703512 1627904 5703304 1629064 5705344 1628472 5703560 +1629208 5705288 1629064 5705344 1629656 5706024 1629616 5705808 +1629208 5705288 1628968 5703704 1629064 5705344 1629616 5705808 +1629064 5705344 1629752 5706192 1629656 5706024 1629616 5705808 +1629208 5705288 1629064 5705344 1629616 5705808 1629568 5705376 +1629208 5705288 1629472 5703936 1628968 5703704 1629064 5705344 +1621944 5703896 1620104 5713768 1629752 5706192 1629064 5705344 +1621944 5703896 1620040 5713712 1620104 5713768 1629064 5705344 +1621944 5703896 1620104 5713768 1629064 5705344 1623720 5702872 +1620104 5713768 1620160 5713848 1629752 5706192 1629064 5705344 +1629752 5706192 1629656 5706024 1629064 5705344 1620104 5713768 +1620104 5713768 1628648 5705608 1621944 5703896 1620040 5713712 +1621944 5703896 1628648 5705608 1629064 5705344 1623720 5702872 +1621944 5703896 1628648 5705608 1623720 5702872 1623616 5702904 +1621944 5703896 1628648 5705608 1623616 5702904 1621968 5703872 +1621944 5703896 1620104 5713768 1628648 5705608 1623616 5702904 +1629064 5705344 1623816 5702824 1623720 5702872 1628648 5705608 +1629064 5705344 1627904 5703304 1623816 5702824 1628648 5705608 +1629064 5705344 1628360 5703512 1627904 5703304 1628648 5705608 +1627904 5703304 1623816 5702824 1628648 5705608 1628360 5703512 +1627904 5703304 1623888 5702776 1623816 5702824 1628648 5705608 +1623888 5702776 1623848 5702776 1623816 5702824 1628648 5705608 +1627904 5703304 1623888 5702776 1628648 5705608 1628360 5703512 +1623816 5702824 1623720 5702872 1628648 5705608 1623888 5702776 +1628648 5705608 1620104 5713768 1629064 5705344 1628360 5703512 +1628648 5705608 1623816 5702824 1623720 5702872 1623616 5702904 +1627904 5703304 1624952 5701864 1623888 5702776 1628648 5705608 +1629064 5705344 1628472 5703560 1628360 5703512 1628648 5705608 +1628360 5703512 1627904 5703304 1628648 5705608 1628472 5703560 +1629064 5705344 1628968 5703704 1628472 5703560 1628648 5705608 +1629064 5705344 1628472 5703560 1628648 5705608 1620104 5713768 +1628472 5703560 1628448 5703536 1628360 5703512 1628648 5705608 +1629064 5705344 1628648 5705608 1620104 5713768 1629752 5706192 +1628648 5705608 1621944 5703896 1620104 5713768 1629752 5706192 +1629064 5705344 1628472 5703560 1628648 5705608 1629752 5706192 +1620104 5713768 1620160 5713848 1629752 5706192 1628648 5705608 +1620160 5713848 1620512 5714368 1629752 5706192 1628648 5705608 +1620104 5713768 1620160 5713848 1628648 5705608 1621944 5703896 +1620160 5713848 1620512 5714368 1628648 5705608 1620104 5713768 +1620160 5713848 1620272 5714120 1620512 5714368 1628648 5705608 +1629064 5705344 1628648 5705608 1629752 5706192 1629656 5706024 +1629752 5706192 1629736 5706152 1629656 5706024 1628648 5705608 +1629064 5705344 1628648 5705608 1629656 5706024 1629616 5705808 +1629064 5705344 1628472 5703560 1628648 5705608 1629616 5705808 +1628648 5705608 1629752 5706192 1629656 5706024 1629616 5705808 +1620512 5714368 1620552 5714440 1629752 5706192 1628648 5705608 +1620512 5714368 1620552 5714440 1628648 5705608 1620160 5713848 +1620552 5714440 1627312 5719640 1629752 5706192 1628648 5705608 +1629064 5705344 1628648 5705608 1629616 5705808 1629208 5705288 +1629752 5706192 1629656 5706024 1628648 5705608 1620552 5714440 +1620104 5713768 1628432 5705728 1621944 5703896 1620040 5713712 +1628648 5705608 1628432 5705728 1620104 5713768 1620160 5713848 +1628648 5705608 1621944 5703896 1628432 5705728 1620160 5713848 +1621944 5703896 1628432 5705728 1628648 5705608 1623616 5702904 +1621944 5703896 1628432 5705728 1623616 5702904 1621968 5703872 +1623616 5702904 1622032 5703808 1621968 5703872 1628432 5705728 +1628648 5705608 1623720 5702872 1623616 5702904 1628432 5705728 +1628432 5705728 1620160 5713848 1628648 5705608 1623720 5702872 +1628432 5705728 1623720 5702872 1623616 5702904 1621968 5703872 +1621944 5703896 1620104 5713768 1628432 5705728 1621968 5703872 +1628648 5705608 1623816 5702824 1623720 5702872 1628432 5705728 +1623720 5702872 1623616 5702904 1628432 5705728 1623816 5702824 +1628648 5705608 1623816 5702824 1628432 5705728 1620160 5713848 +1628648 5705608 1623888 5702776 1623816 5702824 1628432 5705728 +1623888 5702776 1623848 5702776 1623816 5702824 1628432 5705728 +1628648 5705608 1627904 5703304 1623888 5702776 1628432 5705728 +1628648 5705608 1628360 5703512 1627904 5703304 1628432 5705728 +1628648 5705608 1628472 5703560 1628360 5703512 1628432 5705728 +1628360 5703512 1627904 5703304 1628432 5705728 1628472 5703560 +1627904 5703304 1623888 5702776 1628432 5705728 1628360 5703512 +1628648 5705608 1628472 5703560 1628432 5705728 1620160 5713848 +1623888 5702776 1623816 5702824 1628432 5705728 1627904 5703304 +1623816 5702824 1623720 5702872 1628432 5705728 1623888 5702776 +1627904 5703304 1624952 5701864 1623888 5702776 1628432 5705728 +1628648 5705608 1628432 5705728 1620160 5713848 1620512 5714368 +1628648 5705608 1628432 5705728 1620512 5714368 1620552 5714440 +1628432 5705728 1620104 5713768 1620160 5713848 1620512 5714368 +1628648 5705608 1628472 5703560 1628432 5705728 1620552 5714440 +1628432 5705728 1620160 5713848 1620512 5714368 1620552 5714440 +1620160 5713848 1620272 5714120 1620512 5714368 1628432 5705728 +1628472 5703560 1628448 5703536 1628360 5703512 1628432 5705728 +1628648 5705608 1628432 5705728 1620552 5714440 1629752 5706192 +1628432 5705728 1620512 5714368 1620552 5714440 1629752 5706192 +1628648 5705608 1628472 5703560 1628432 5705728 1629752 5706192 +1620552 5714440 1627312 5719640 1629752 5706192 1628432 5705728 +1628648 5705608 1629064 5705344 1628472 5703560 1628432 5705728 +1628432 5705728 1621944 5703896 1620104 5713768 1620160 5713848 +1628648 5705608 1628432 5705728 1629752 5706192 1629656 5706024 +1629752 5706192 1629736 5706152 1629656 5706024 1628432 5705728 +1628648 5705608 1628472 5703560 1628432 5705728 1629656 5706024 +1628648 5705608 1628432 5705728 1629656 5706024 1629616 5705808 +1628432 5705728 1620552 5714440 1629752 5706192 1629656 5706024 +1620104 5713768 1628312 5705744 1621944 5703896 1620040 5713712 +1621944 5703896 1618184 5707576 1620040 5713712 1628312 5705744 +1620104 5713768 1628432 5705728 1628312 5705744 1620040 5713712 +1628312 5705744 1628432 5705728 1621944 5703896 1620040 5713712 +1620104 5713768 1628312 5705744 1620040 5713712 1620072 5713752 +1621944 5703896 1628312 5705744 1628432 5705728 1621968 5703872 +1628432 5705728 1623616 5702904 1621968 5703872 1628312 5705744 +1623616 5702904 1622032 5703808 1621968 5703872 1628312 5705744 +1621944 5703896 1620040 5713712 1628312 5705744 1621968 5703872 +1628432 5705728 1623720 5702872 1623616 5702904 1628312 5705744 +1623616 5702904 1621968 5703872 1628312 5705744 1623720 5702872 +1628432 5705728 1623816 5702824 1623720 5702872 1628312 5705744 +1623720 5702872 1623616 5702904 1628312 5705744 1623816 5702824 +1628312 5705744 1620104 5713768 1628432 5705728 1623816 5702824 +1621968 5703872 1621944 5703896 1628312 5705744 1623616 5702904 +1628432 5705728 1623888 5702776 1623816 5702824 1628312 5705744 +1623816 5702824 1623720 5702872 1628312 5705744 1623888 5702776 +1623888 5702776 1623848 5702776 1623816 5702824 1628312 5705744 +1628432 5705728 1623888 5702776 1628312 5705744 1620104 5713768 +1628432 5705728 1627904 5703304 1623888 5702776 1628312 5705744 +1628432 5705728 1628360 5703512 1627904 5703304 1628312 5705744 +1628432 5705728 1628472 5703560 1628360 5703512 1628312 5705744 +1628432 5705728 1628648 5705608 1628472 5703560 1628312 5705744 +1628472 5703560 1628360 5703512 1628312 5705744 1628648 5705608 +1628360 5703512 1627904 5703304 1628312 5705744 1628472 5703560 +1628432 5705728 1628648 5705608 1628312 5705744 1620104 5713768 +1627904 5703304 1623888 5702776 1628312 5705744 1628360 5703512 +1623888 5702776 1623816 5702824 1628312 5705744 1627904 5703304 +1627904 5703304 1624952 5701864 1623888 5702776 1628312 5705744 +1628472 5703560 1628448 5703536 1628360 5703512 1628312 5705744 +1628648 5705608 1629064 5705344 1628472 5703560 1628312 5705744 +1628432 5705728 1628312 5705744 1620104 5713768 1620160 5713848 +1628312 5705744 1620040 5713712 1620104 5713768 1620160 5713848 +1628432 5705728 1628312 5705744 1620160 5713848 1620512 5714368 +1628312 5705744 1620104 5713768 1620160 5713848 1620512 5714368 +1628432 5705728 1628648 5705608 1628312 5705744 1620512 5714368 +1628432 5705728 1628312 5705744 1620512 5714368 1620552 5714440 +1628432 5705728 1628312 5705744 1620552 5714440 1629752 5706192 +1628312 5705744 1620160 5713848 1620512 5714368 1620552 5714440 +1628432 5705728 1628648 5705608 1628312 5705744 1629752 5706192 +1620552 5714440 1627312 5719640 1629752 5706192 1628312 5705744 +1628312 5705744 1620512 5714368 1620552 5714440 1629752 5706192 +1620160 5713848 1620272 5714120 1620512 5714368 1628312 5705744 +1628432 5705728 1628312 5705744 1629752 5706192 1629656 5706024 +1623616 5702904 1627776 5705560 1628312 5705744 1623720 5702872 +1621968 5703872 1627776 5705560 1623616 5702904 1622032 5703808 +1623616 5702904 1623448 5702888 1622032 5703808 1627776 5705560 +1621968 5703872 1628312 5705744 1627776 5705560 1622032 5703808 +1628312 5705744 1623816 5702824 1623720 5702872 1627776 5705560 +1623720 5702872 1623616 5702904 1627776 5705560 1623816 5702824 +1628312 5705744 1623888 5702776 1623816 5702824 1627776 5705560 +1623888 5702776 1623848 5702776 1623816 5702824 1627776 5705560 +1623816 5702824 1623720 5702872 1627776 5705560 1623888 5702776 +1628312 5705744 1627776 5705560 1621968 5703872 1621944 5703896 +1628312 5705744 1627776 5705560 1621944 5703896 1620040 5713712 +1628312 5705744 1627776 5705560 1620040 5713712 1620104 5713768 +1621944 5703896 1618184 5707576 1620040 5713712 1627776 5705560 +1628312 5705744 1627776 5705560 1620104 5713768 1620160 5713848 +1627776 5705560 1620040 5713712 1620104 5713768 1620160 5713848 +1628312 5705744 1627776 5705560 1620160 5713848 1620512 5714368 +1627776 5705560 1620104 5713768 1620160 5713848 1620512 5714368 +1627776 5705560 1621944 5703896 1620040 5713712 1620104 5713768 +1627776 5705560 1622032 5703808 1621968 5703872 1621944 5703896 +1620040 5713712 1620072 5713752 1620104 5713768 1627776 5705560 +1628312 5705744 1627776 5705560 1620512 5714368 1620552 5714440 +1627776 5705560 1620160 5713848 1620512 5714368 1620552 5714440 +1627776 5705560 1621968 5703872 1621944 5703896 1620040 5713712 +1628312 5705744 1627904 5703304 1623888 5702776 1627776 5705560 +1623888 5702776 1623816 5702824 1627776 5705560 1627904 5703304 +1628312 5705744 1628360 5703512 1627904 5703304 1627776 5705560 +1628312 5705744 1628472 5703560 1628360 5703512 1627776 5705560 +1628312 5705744 1628648 5705608 1628472 5703560 1627776 5705560 +1628312 5705744 1628432 5705728 1628648 5705608 1627776 5705560 +1628472 5703560 1628360 5703512 1627776 5705560 1628648 5705608 +1628360 5703512 1627904 5703304 1627776 5705560 1628472 5703560 +1627904 5703304 1623888 5702776 1627776 5705560 1628360 5703512 +1627904 5703304 1624952 5701864 1623888 5702776 1627776 5705560 +1628312 5705744 1627776 5705560 1620552 5714440 1629752 5706192 +1620160 5713848 1620272 5714120 1620512 5714368 1627776 5705560 +1627776 5705560 1620552 5714440 1628312 5705744 1628648 5705608 +1628472 5703560 1628448 5703536 1628360 5703512 1627776 5705560 +1628648 5705608 1629064 5705344 1628472 5703560 1627776 5705560 +1623616 5702904 1622032 5703808 1627776 5705560 1623720 5702872 +1620040 5713712 1627640 5705584 1621944 5703896 1618184 5707576 +1627776 5705560 1627640 5705584 1620040 5713712 1620104 5713768 +1627776 5705560 1627640 5705584 1620104 5713768 1620160 5713848 +1627776 5705560 1627640 5705584 1620160 5713848 1620512 5714368 +1627640 5705584 1620104 5713768 1620160 5713848 1620512 5714368 +1627776 5705560 1627640 5705584 1620512 5714368 1620552 5714440 +1627640 5705584 1620160 5713848 1620512 5714368 1620552 5714440 +1627640 5705584 1620040 5713712 1620104 5713768 1620160 5713848 +1627776 5705560 1621944 5703896 1627640 5705584 1620552 5714440 +1621944 5703896 1621912 5703896 1618184 5707576 1627640 5705584 +1620040 5713712 1627640 5705584 1618184 5707576 1618264 5711808 +1620040 5713712 1620104 5713768 1627640 5705584 1618184 5707576 +1620040 5713712 1620072 5713752 1620104 5713768 1627640 5705584 +1627776 5705560 1627640 5705584 1620552 5714440 1628312 5705744 +1627640 5705584 1620512 5714368 1620552 5714440 1628312 5705744 +1627776 5705560 1621944 5703896 1627640 5705584 1628312 5705744 +1621944 5703896 1627640 5705584 1627776 5705560 1621968 5703872 +1627776 5705560 1622032 5703808 1621968 5703872 1627640 5705584 +1627776 5705560 1623616 5702904 1622032 5703808 1627640 5705584 +1623616 5702904 1623448 5702888 1622032 5703808 1627640 5705584 +1622032 5703808 1621968 5703872 1627640 5705584 1623616 5702904 +1627640 5705584 1628312 5705744 1627776 5705560 1623616 5702904 +1621968 5703872 1621944 5703896 1627640 5705584 1622032 5703808 +1620552 5714440 1629752 5706192 1628312 5705744 1627640 5705584 +1620160 5713848 1620272 5714120 1620512 5714368 1627640 5705584 +1627776 5705560 1623720 5702872 1623616 5702904 1627640 5705584 +1627776 5705560 1623816 5702824 1623720 5702872 1627640 5705584 +1623616 5702904 1622032 5703808 1627640 5705584 1623720 5702872 +1627776 5705560 1623816 5702824 1627640 5705584 1628312 5705744 +1627776 5705560 1623888 5702776 1623816 5702824 1627640 5705584 +1623816 5702824 1623720 5702872 1627640 5705584 1623888 5702776 +1627776 5705560 1627904 5703304 1623888 5702776 1627640 5705584 +1623888 5702776 1623848 5702776 1623816 5702824 1627640 5705584 +1627776 5705560 1627904 5703304 1627640 5705584 1628312 5705744 +1623888 5702776 1623816 5702824 1627640 5705584 1627904 5703304 +1627776 5705560 1628360 5703512 1627904 5703304 1627640 5705584 +1627904 5703304 1624952 5701864 1623888 5702776 1627640 5705584 +1623720 5702872 1623616 5702904 1627640 5705584 1623816 5702824 +1627640 5705584 1621968 5703872 1621944 5703896 1618184 5707576 +1627640 5705584 1627576 5705568 1618184 5707576 1620040 5713712 +1618184 5707576 1627576 5705568 1621944 5703896 1621912 5703896 +1618184 5707576 1618264 5711808 1620040 5713712 1627576 5705568 +1627640 5705584 1627576 5705568 1620040 5713712 1620104 5713768 +1627576 5705568 1618184 5707576 1620040 5713712 1620104 5713768 +1627640 5705584 1627576 5705568 1620104 5713768 1620160 5713848 +1627640 5705584 1627576 5705568 1620160 5713848 1620512 5714368 +1627640 5705584 1627576 5705568 1620512 5714368 1620552 5714440 +1627576 5705568 1620160 5713848 1620512 5714368 1620552 5714440 +1627640 5705584 1627576 5705568 1620552 5714440 1628312 5705744 +1627576 5705568 1620104 5713768 1620160 5713848 1620512 5714368 +1627576 5705568 1620040 5713712 1620104 5713768 1620160 5713848 +1627640 5705584 1621944 5703896 1627576 5705568 1620552 5714440 +1620040 5713712 1620072 5713752 1620104 5713768 1627576 5705568 +1620160 5713848 1620272 5714120 1620512 5714368 1627576 5705568 +1621944 5703896 1627576 5705568 1627640 5705584 1621968 5703872 +1627576 5705568 1620552 5714440 1627640 5705584 1621968 5703872 +1627640 5705584 1622032 5703808 1621968 5703872 1627576 5705568 +1627640 5705584 1623616 5702904 1622032 5703808 1627576 5705568 +1627640 5705584 1623720 5702872 1623616 5702904 1627576 5705568 +1623616 5702904 1623448 5702888 1622032 5703808 1627576 5705568 +1623616 5702904 1622032 5703808 1627576 5705568 1623720 5702872 +1627640 5705584 1623720 5702872 1627576 5705568 1620552 5714440 +1622032 5703808 1621968 5703872 1627576 5705568 1623616 5702904 +1627640 5705584 1623816 5702824 1623720 5702872 1627576 5705568 +1627640 5705584 1623888 5702776 1623816 5702824 1627576 5705568 +1623720 5702872 1623616 5702904 1627576 5705568 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1627576 5705568 +1627640 5705584 1623888 5702776 1627576 5705568 1620552 5714440 +1627640 5705584 1627904 5703304 1623888 5702776 1627576 5705568 +1623888 5702776 1623816 5702824 1627576 5705568 1627904 5703304 +1627640 5705584 1627776 5705560 1627904 5703304 1627576 5705568 +1627640 5705584 1627776 5705560 1627576 5705568 1620552 5714440 +1627904 5703304 1623888 5702776 1627576 5705568 1627776 5705560 +1627776 5705560 1628360 5703512 1627904 5703304 1627576 5705568 +1627904 5703304 1624952 5701864 1623888 5702776 1627576 5705568 +1623816 5702824 1623720 5702872 1627576 5705568 1623888 5702776 +1621968 5703872 1621944 5703896 1627576 5705568 1622032 5703808 +1627576 5705568 1621944 5703896 1618184 5707576 1620040 5713712 +1621944 5703896 1618184 5707576 1627576 5705568 1621968 5703872 +1627576 5705568 1627536 5705536 1623888 5702776 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1627536 5705536 +1627904 5703304 1627536 5705536 1627576 5705568 1627776 5705560 +1627576 5705568 1627640 5705584 1627776 5705560 1627536 5705536 +1627776 5705560 1627904 5703304 1627536 5705536 1627640 5705584 +1627904 5703304 1627536 5705536 1627776 5705560 1628360 5703512 +1627536 5705536 1627640 5705584 1627776 5705560 1628360 5703512 +1627776 5705560 1628472 5703560 1628360 5703512 1627536 5705536 +1623888 5702776 1627536 5705536 1627904 5703304 1624952 5701864 +1627576 5705568 1627536 5705536 1623816 5702824 1623720 5702872 +1627536 5705536 1623888 5702776 1623816 5702824 1623720 5702872 +1627576 5705568 1627536 5705536 1623720 5702872 1623616 5702904 +1627576 5705568 1627536 5705536 1623616 5702904 1622032 5703808 +1627536 5705536 1623720 5702872 1623616 5702904 1622032 5703808 +1623616 5702904 1623448 5702888 1622032 5703808 1627536 5705536 +1627576 5705568 1627536 5705536 1622032 5703808 1621968 5703872 +1627536 5705536 1623616 5702904 1622032 5703808 1621968 5703872 +1627536 5705536 1623816 5702824 1623720 5702872 1623616 5702904 +1627576 5705568 1627536 5705536 1621968 5703872 1621944 5703896 +1627536 5705536 1622032 5703808 1621968 5703872 1621944 5703896 +1627536 5705536 1627904 5703304 1623888 5702776 1623816 5702824 +1627904 5703304 1623888 5702776 1627536 5705536 1628360 5703512 +1627576 5705568 1627640 5705584 1627536 5705536 1621944 5703896 +1627576 5705568 1627536 5705536 1621944 5703896 1618184 5707576 +1621944 5703896 1621912 5703896 1618184 5707576 1627536 5705536 +1627536 5705536 1621968 5703872 1621944 5703896 1618184 5707576 +1627576 5705568 1627536 5705536 1618184 5707576 1620040 5713712 +1627576 5705568 1627536 5705536 1620040 5713712 1620104 5713768 +1618184 5707576 1618264 5711808 1620040 5713712 1627536 5705536 +1627576 5705568 1627536 5705536 1620104 5713768 1620160 5713848 +1620040 5713712 1620072 5713752 1620104 5713768 1627536 5705536 +1627536 5705536 1618184 5707576 1620040 5713712 1620104 5713768 +1627576 5705568 1627640 5705584 1627536 5705536 1620104 5713768 +1627536 5705536 1621944 5703896 1618184 5707576 1620040 5713712 +1623888 5702776 1627456 5705408 1627904 5703304 1624952 5701864 +1627536 5705536 1627456 5705408 1623888 5702776 1623816 5702824 +1627536 5705536 1627456 5705408 1623816 5702824 1623720 5702872 +1623888 5702776 1623848 5702776 1623816 5702824 1627456 5705408 +1627456 5705408 1627904 5703304 1623888 5702776 1623816 5702824 +1627536 5705536 1627456 5705408 1623720 5702872 1623616 5702904 +1627456 5705408 1623816 5702824 1623720 5702872 1623616 5702904 +1627536 5705536 1627456 5705408 1623616 5702904 1622032 5703808 +1623616 5702904 1623448 5702888 1622032 5703808 1627456 5705408 +1627536 5705536 1627456 5705408 1622032 5703808 1621968 5703872 +1627456 5705408 1623616 5702904 1622032 5703808 1621968 5703872 +1627536 5705536 1627456 5705408 1621968 5703872 1621944 5703896 +1627456 5705408 1622032 5703808 1621968 5703872 1621944 5703896 +1627456 5705408 1623720 5702872 1623616 5702904 1622032 5703808 +1627536 5705536 1627456 5705408 1621944 5703896 1618184 5707576 +1627456 5705408 1623888 5702776 1623816 5702824 1623720 5702872 +1627536 5705536 1627904 5703304 1627456 5705408 1621944 5703896 +1627904 5703304 1627456 5705408 1627536 5705536 1628360 5703512 +1627904 5703304 1623888 5702776 1627456 5705408 1628360 5703512 +1627536 5705536 1627776 5705560 1628360 5703512 1627456 5705408 +1627536 5705536 1627640 5705584 1627776 5705560 1627456 5705408 +1627776 5705560 1628472 5703560 1628360 5703512 1627456 5705408 +1627776 5705560 1628648 5705608 1628472 5703560 1627456 5705408 +1627776 5705560 1628472 5703560 1627456 5705408 1627536 5705536 +1628472 5703560 1628448 5703536 1628360 5703512 1627456 5705408 +1627456 5705408 1621944 5703896 1627536 5705536 1627776 5705560 +1628360 5703512 1627904 5703304 1627456 5705408 1628472 5703560 +1627456 5705408 1627416 5705352 1623888 5702776 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1627416 5705352 +1627456 5705408 1627904 5703304 1627416 5705352 1623816 5702824 +1627904 5703304 1627416 5705352 1627456 5705408 1628360 5703512 +1627904 5703304 1623888 5702776 1627416 5705352 1628360 5703512 +1627416 5705352 1623816 5702824 1627456 5705408 1628360 5703512 +1627416 5705352 1627904 5703304 1623888 5702776 1623816 5702824 +1623888 5702776 1627416 5705352 1627904 5703304 1624952 5701864 +1627416 5705352 1628360 5703512 1627904 5703304 1624952 5701864 +1627904 5703304 1625520 5701424 1624952 5701864 1627416 5705352 +1623888 5702776 1623816 5702824 1627416 5705352 1624952 5701864 +1623888 5702776 1627416 5705352 1624952 5701864 1624720 5701944 +1627456 5705408 1627416 5705352 1623816 5702824 1623720 5702872 +1627456 5705408 1627416 5705352 1623720 5702872 1623616 5702904 +1627416 5705352 1623888 5702776 1623816 5702824 1623720 5702872 +1627456 5705408 1628360 5703512 1627416 5705352 1623616 5702904 +1627456 5705408 1627416 5705352 1623616 5702904 1622032 5703808 +1627416 5705352 1623720 5702872 1623616 5702904 1622032 5703808 +1627456 5705408 1627416 5705352 1622032 5703808 1621968 5703872 +1623616 5702904 1623448 5702888 1622032 5703808 1627416 5705352 +1627456 5705408 1627416 5705352 1621968 5703872 1621944 5703896 +1627416 5705352 1622032 5703808 1621968 5703872 1621944 5703896 +1627456 5705408 1628360 5703512 1627416 5705352 1621944 5703896 +1627456 5705408 1627416 5705352 1621944 5703896 1627536 5705536 +1627416 5705352 1621968 5703872 1621944 5703896 1627536 5705536 +1627456 5705408 1628360 5703512 1627416 5705352 1627536 5705536 +1627416 5705352 1623616 5702904 1622032 5703808 1621968 5703872 +1621944 5703896 1618184 5707576 1627536 5705536 1627416 5705352 +1627416 5705352 1623816 5702824 1623720 5702872 1623616 5702904 +1627456 5705408 1628472 5703560 1628360 5703512 1627416 5705352 +1627456 5705408 1628472 5703560 1627416 5705352 1627536 5705536 +1628360 5703512 1627904 5703304 1627416 5705352 1628472 5703560 +1627456 5705408 1627776 5705560 1628472 5703560 1627416 5705352 +1627776 5705560 1628648 5705608 1628472 5703560 1627416 5705352 +1627456 5705408 1627776 5705560 1627416 5705352 1627536 5705536 +1627456 5705408 1627536 5705536 1627776 5705560 1627416 5705352 +1628472 5703560 1628448 5703536 1628360 5703512 1627416 5705352 +1628472 5703560 1628360 5703512 1627416 5705352 1627776 5705560 +1627416 5705352 1627256 5705232 1623888 5702776 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1627256 5705232 +1627256 5705232 1624952 5701864 1623888 5702776 1623816 5702824 +1627416 5705352 1627256 5705232 1623816 5702824 1623720 5702872 +1627256 5705232 1623888 5702776 1623816 5702824 1623720 5702872 +1627416 5705352 1624952 5701864 1627256 5705232 1623720 5702872 +1624952 5701864 1627256 5705232 1627416 5705352 1627904 5703304 +1627416 5705352 1628360 5703512 1627904 5703304 1627256 5705232 +1624952 5701864 1623888 5702776 1627256 5705232 1627904 5703304 +1624952 5701864 1627256 5705232 1627904 5703304 1625520 5701424 +1627416 5705352 1628472 5703560 1628360 5703512 1627256 5705232 +1627256 5705232 1623720 5702872 1627416 5705352 1628360 5703512 +1627904 5703304 1624952 5701864 1627256 5705232 1628360 5703512 +1623888 5702776 1627256 5705232 1624952 5701864 1624720 5701944 +1627416 5705352 1627256 5705232 1623720 5702872 1623616 5702904 +1627416 5705352 1627256 5705232 1623616 5702904 1622032 5703808 +1623616 5702904 1623448 5702888 1622032 5703808 1627256 5705232 +1627256 5705232 1623816 5702824 1623720 5702872 1623616 5702904 +1627416 5705352 1628360 5703512 1627256 5705232 1622032 5703808 +1627416 5705352 1627256 5705232 1622032 5703808 1621968 5703872 +1627256 5705232 1623616 5702904 1622032 5703808 1621968 5703872 +1627416 5705352 1627256 5705232 1621968 5703872 1621944 5703896 +1627416 5705352 1627256 5705232 1621944 5703896 1627536 5705536 +1627256 5705232 1621968 5703872 1621944 5703896 1627536 5705536 +1627416 5705352 1628360 5703512 1627256 5705232 1627536 5705536 +1627416 5705352 1627256 5705232 1627536 5705536 1627456 5705408 +1627256 5705232 1621944 5703896 1627536 5705536 1627456 5705408 +1627416 5705352 1628360 5703512 1627256 5705232 1627456 5705408 +1627256 5705232 1622032 5703808 1621968 5703872 1621944 5703896 +1621944 5703896 1618184 5707576 1627536 5705536 1627256 5705232 +1627256 5705232 1623720 5702872 1623616 5702904 1622032 5703808 +1627256 5705232 1627208 5705152 1624952 5701864 1623888 5702776 +1627256 5705232 1627208 5705152 1623888 5702776 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1627208 5705152 +1627256 5705232 1627904 5703304 1627208 5705152 1623816 5702824 +1627208 5705152 1624952 5701864 1623888 5702776 1623816 5702824 +1627208 5705152 1627904 5703304 1624952 5701864 1623888 5702776 +1624952 5701864 1627208 5705152 1627904 5703304 1625520 5701424 +1627256 5705232 1627208 5705152 1623816 5702824 1623720 5702872 +1627208 5705152 1623888 5702776 1623816 5702824 1623720 5702872 +1627256 5705232 1627904 5703304 1627208 5705152 1623720 5702872 +1627256 5705232 1627208 5705152 1623720 5702872 1623616 5702904 +1627256 5705232 1627904 5703304 1627208 5705152 1623616 5702904 +1627208 5705152 1623816 5702824 1623720 5702872 1623616 5702904 +1627904 5703304 1627208 5705152 1627256 5705232 1628360 5703512 +1627904 5703304 1624952 5701864 1627208 5705152 1628360 5703512 +1627256 5705232 1627416 5705352 1628360 5703512 1627208 5705152 +1627208 5705152 1623616 5702904 1627256 5705232 1627416 5705352 +1627416 5705352 1628472 5703560 1628360 5703512 1627208 5705152 +1627416 5705352 1628472 5703560 1627208 5705152 1627256 5705232 +1628360 5703512 1627904 5703304 1627208 5705152 1628472 5703560 +1628472 5703560 1628448 5703536 1628360 5703512 1627208 5705152 +1624952 5701864 1624720 5701944 1623888 5702776 1627208 5705152 +1627256 5705232 1627208 5705152 1623616 5702904 1622032 5703808 +1627256 5705232 1627208 5705152 1622032 5703808 1621968 5703872 +1623616 5702904 1623448 5702888 1622032 5703808 1627208 5705152 +1627256 5705232 1627416 5705352 1627208 5705152 1621968 5703872 +1627208 5705152 1623720 5702872 1623616 5702904 1622032 5703808 +1627256 5705232 1627208 5705152 1621968 5703872 1621944 5703896 +1627208 5705152 1622032 5703808 1621968 5703872 1621944 5703896 +1627256 5705232 1627208 5705152 1621944 5703896 1627536 5705536 +1627256 5705232 1627416 5705352 1627208 5705152 1621944 5703896 +1627208 5705152 1623616 5702904 1622032 5703808 1621968 5703872 +1627416 5705352 1627776 5705560 1628472 5703560 1627208 5705152 +1627904 5703304 1627216 5705096 1627208 5705152 1628360 5703512 +1627216 5705096 1624952 5701864 1627208 5705152 1628360 5703512 +1627904 5703304 1624952 5701864 1627216 5705096 1628360 5703512 +1627208 5705152 1627216 5705096 1624952 5701864 1623888 5702776 +1627208 5705152 1628360 5703512 1627216 5705096 1623888 5702776 +1627216 5705096 1627904 5703304 1624952 5701864 1623888 5702776 +1627208 5705152 1627216 5705096 1623888 5702776 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1627216 5705096 +1627208 5705152 1628360 5703512 1627216 5705096 1623816 5702824 +1627208 5705152 1627216 5705096 1623816 5702824 1623720 5702872 +1627216 5705096 1624952 5701864 1623888 5702776 1623816 5702824 +1624952 5701864 1627216 5705096 1627904 5703304 1625520 5701424 +1627208 5705152 1628472 5703560 1628360 5703512 1627216 5705096 +1627208 5705152 1628472 5703560 1627216 5705096 1623816 5702824 +1628360 5703512 1627904 5703304 1627216 5705096 1628472 5703560 +1627208 5705152 1627416 5705352 1628472 5703560 1627216 5705096 +1627208 5705152 1627416 5705352 1627216 5705096 1623816 5702824 +1627208 5705152 1627256 5705232 1627416 5705352 1627216 5705096 +1627208 5705152 1627256 5705232 1627216 5705096 1623816 5702824 +1627416 5705352 1628472 5703560 1627216 5705096 1627256 5705232 +1628472 5703560 1628360 5703512 1627216 5705096 1627416 5705352 +1628472 5703560 1628448 5703536 1628360 5703512 1627216 5705096 +1624952 5701864 1624720 5701944 1623888 5702776 1627216 5705096 +1627416 5705352 1627776 5705560 1628472 5703560 1627216 5705096 +1627776 5705560 1628648 5705608 1628472 5703560 1627216 5705096 +1627416 5705352 1627776 5705560 1627216 5705096 1627256 5705232 +1627416 5705352 1627456 5705408 1627776 5705560 1627216 5705096 +1628472 5703560 1628360 5703512 1627216 5705096 1627776 5705560 +1628472 5703560 1627416 5705032 1627776 5705560 1628648 5705608 +1627776 5705560 1628312 5705744 1628648 5705608 1627416 5705032 +1628472 5703560 1627216 5705096 1627416 5705032 1628648 5705608 +1627416 5705032 1627216 5705096 1627776 5705560 1628648 5705608 +1627216 5705096 1627416 5705032 1628472 5703560 1628360 5703512 +1627216 5705096 1627416 5705032 1628360 5703512 1627904 5703304 +1627216 5705096 1627776 5705560 1627416 5705032 1627904 5703304 +1627216 5705096 1627416 5705032 1627904 5703304 1624952 5701864 +1627416 5705032 1628648 5705608 1628472 5703560 1628360 5703512 +1627416 5705032 1628472 5703560 1628360 5703512 1627904 5703304 +1628472 5703560 1628448 5703536 1628360 5703512 1627416 5705032 +1628472 5703560 1627416 5705032 1628648 5705608 1629064 5705344 +1627416 5705032 1627776 5705560 1628648 5705608 1629064 5705344 +1628472 5703560 1628360 5703512 1627416 5705032 1629064 5705344 +1628472 5703560 1627416 5705032 1629064 5705344 1628968 5703704 +1627776 5705560 1627416 5705032 1627216 5705096 1627416 5705352 +1627416 5705032 1627904 5703304 1627216 5705096 1627416 5705352 +1627216 5705096 1627256 5705232 1627416 5705352 1627416 5705032 +1627216 5705096 1627256 5705232 1627416 5705032 1627904 5703304 +1627216 5705096 1627208 5705152 1627256 5705232 1627416 5705032 +1627776 5705560 1628648 5705608 1627416 5705032 1627416 5705352 +1627776 5705560 1627416 5705032 1627416 5705352 1627456 5705408 +1627776 5705560 1628648 5705608 1627416 5705032 1627456 5705408 +1627776 5705560 1627416 5705032 1627456 5705408 1627536 5705536 +1627416 5705352 1627456 5705408 1627416 5705032 1627256 5705232 +1627416 5705032 1627512 5705016 1628472 5703560 1628360 5703512 +1627416 5705032 1629064 5705344 1627512 5705016 1628360 5703512 +1627512 5705016 1629064 5705344 1628472 5703560 1628360 5703512 +1628472 5703560 1627512 5705016 1629064 5705344 1628968 5703704 +1627416 5705032 1627512 5705016 1628360 5703512 1627904 5703304 +1627416 5705032 1627512 5705016 1627904 5703304 1627216 5705096 +1627512 5705016 1628472 5703560 1628360 5703512 1627904 5703304 +1627416 5705032 1629064 5705344 1627512 5705016 1627904 5703304 +1628472 5703560 1628448 5703536 1628360 5703512 1627512 5705016 +1629064 5705344 1627512 5705016 1627416 5705032 1628648 5705608 +1627416 5705032 1627776 5705560 1628648 5705608 1627512 5705016 +1627776 5705560 1628312 5705744 1628648 5705608 1627512 5705016 +1627512 5705016 1627904 5703304 1627416 5705032 1627776 5705560 +1627416 5705032 1627456 5705408 1627776 5705560 1627512 5705016 +1627776 5705560 1628648 5705608 1627512 5705016 1627456 5705408 +1627416 5705032 1627456 5705408 1627512 5705016 1627904 5703304 +1629064 5705344 1628472 5703560 1627512 5705016 1628648 5705608 +1627416 5705032 1627416 5705352 1627456 5705408 1627512 5705016 +1627416 5705032 1627416 5705352 1627512 5705016 1627904 5703304 +1627456 5705408 1627776 5705560 1627512 5705016 1627416 5705352 +1627456 5705408 1627536 5705536 1627776 5705560 1627512 5705016 +1628648 5705608 1629064 5705344 1627512 5705016 1627776 5705560 +1627416 5705032 1627256 5705232 1627416 5705352 1627512 5705016 +1627512 5705016 1627528 5705000 1628472 5703560 1628360 5703512 +1627528 5705000 1629064 5705344 1628472 5703560 1628360 5703512 +1627512 5705016 1627528 5705000 1628360 5703512 1627904 5703304 +1627528 5705000 1628472 5703560 1628360 5703512 1627904 5703304 +1627512 5705016 1629064 5705344 1627528 5705000 1627904 5703304 +1629064 5705344 1627528 5705000 1627512 5705016 1628648 5705608 +1629064 5705344 1628472 5703560 1627528 5705000 1628648 5705608 +1627528 5705000 1627904 5703304 1627512 5705016 1628648 5705608 +1628472 5703560 1627528 5705000 1629064 5705344 1628968 5703704 +1627512 5705016 1627528 5705000 1627904 5703304 1627416 5705032 +1627904 5703304 1627216 5705096 1627416 5705032 1627528 5705000 +1627528 5705000 1628360 5703512 1627904 5703304 1627416 5705032 +1627512 5705016 1628648 5705608 1627528 5705000 1627416 5705032 +1628472 5703560 1628448 5703536 1628360 5703512 1627528 5705000 +1627512 5705016 1627776 5705560 1628648 5705608 1627528 5705000 +1627776 5705560 1628312 5705744 1628648 5705608 1627528 5705000 +1627512 5705016 1627456 5705408 1627776 5705560 1627528 5705000 +1627512 5705016 1627776 5705560 1627528 5705000 1627416 5705032 +1628648 5705608 1629064 5705344 1627528 5705000 1627776 5705560 +1627528 5705000 1627568 5704840 1627904 5703304 1627416 5705032 +1627904 5703304 1627216 5705096 1627416 5705032 1627568 5704840 +1627904 5703304 1624952 5701864 1627216 5705096 1627568 5704840 +1627528 5705000 1628360 5703512 1627568 5704840 1627416 5705032 +1627568 5704840 1628360 5703512 1627904 5703304 1627216 5705096 +1627416 5705032 1627528 5705000 1627568 5704840 1627216 5705096 +1628360 5703512 1627568 5704840 1627528 5705000 1628472 5703560 +1627528 5705000 1629064 5705344 1628472 5703560 1627568 5704840 +1627568 5704840 1627416 5705032 1627528 5705000 1629064 5705344 +1627528 5705000 1628648 5705608 1629064 5705344 1627568 5704840 +1629064 5705344 1628472 5703560 1627568 5704840 1628648 5705608 +1627528 5705000 1628648 5705608 1627568 5704840 1627416 5705032 +1628360 5703512 1627904 5703304 1627568 5704840 1628472 5703560 +1628472 5703560 1628360 5703512 1627568 5704840 1629064 5705344 +1627528 5705000 1627776 5705560 1628648 5705608 1627568 5704840 +1627776 5705560 1628312 5705744 1628648 5705608 1627568 5704840 +1627528 5705000 1627776 5705560 1627568 5704840 1627416 5705032 +1628648 5705608 1629064 5705344 1627568 5704840 1627776 5705560 +1629064 5705344 1628968 5703704 1628472 5703560 1627568 5704840 +1629064 5705344 1628968 5703704 1627568 5704840 1628648 5705608 +1628472 5703560 1628360 5703512 1627568 5704840 1628968 5703704 +1627528 5705000 1627568 5704840 1627416 5705032 1627512 5705016 +1628360 5703512 1627568 5704840 1628472 5703560 1628448 5703536 +1629064 5705344 1629208 5705288 1628968 5703704 1627568 5704840 +1627528 5705000 1627512 5705016 1627776 5705560 1627568 5704840 +1627568 5704840 1627552 5704744 1627216 5705096 1627416 5705032 +1627216 5705096 1627552 5704744 1627904 5703304 1624952 5701864 +1627904 5703304 1627552 5704744 1627568 5704840 1628360 5703512 +1627568 5704840 1628360 5703512 1627552 5704744 1627416 5705032 +1627568 5704840 1628472 5703560 1628360 5703512 1627552 5704744 +1628360 5703512 1627904 5703304 1627552 5704744 1628472 5703560 +1627568 5704840 1628472 5703560 1627552 5704744 1627416 5705032 +1627552 5704744 1627904 5703304 1627216 5705096 1627416 5705032 +1627904 5703304 1627216 5705096 1627552 5704744 1628360 5703512 +1627568 5704840 1627552 5704744 1627416 5705032 1627528 5705000 +1627568 5704840 1628968 5703704 1628472 5703560 1627552 5704744 +1627568 5704840 1628968 5703704 1627552 5704744 1627416 5705032 +1628472 5703560 1628360 5703512 1627552 5704744 1628968 5703704 +1627568 5704840 1629064 5705344 1628968 5703704 1627552 5704744 +1627568 5704840 1628648 5705608 1629064 5705344 1627552 5704744 +1627568 5704840 1629064 5705344 1627552 5704744 1627416 5705032 +1628968 5703704 1628472 5703560 1627552 5704744 1629064 5705344 +1628472 5703560 1628448 5703536 1628360 5703512 1627552 5704744 +1629064 5705344 1629208 5705288 1628968 5703704 1627552 5704744 +1627216 5705096 1627416 5704464 1624952 5701864 1623888 5702776 +1627904 5703304 1627416 5704464 1627216 5705096 1627552 5704744 +1627216 5705096 1627416 5704464 1623888 5702776 1623816 5702824 +1624952 5701864 1627416 5704464 1627904 5703304 1625520 5701424 +1627216 5705096 1627416 5705032 1627552 5704744 1627416 5704464 +1627216 5705096 1627552 5704744 1627416 5704464 1623888 5702776 +1627904 5703304 1627416 5704464 1627552 5704744 1628360 5703512 +1627416 5704464 1627216 5705096 1627552 5704744 1628360 5703512 +1627552 5704744 1628472 5703560 1628360 5703512 1627416 5704464 +1627552 5704744 1628472 5703560 1627416 5704464 1627216 5705096 +1627552 5704744 1628968 5703704 1628472 5703560 1627416 5704464 +1628360 5703512 1627904 5703304 1627416 5704464 1628472 5703560 +1627416 5704464 1627904 5703304 1624952 5701864 1623888 5702776 +1627904 5703304 1624952 5701864 1627416 5704464 1628360 5703512 +1628472 5703560 1628448 5703536 1628360 5703512 1627416 5704464 +1624952 5701864 1624720 5701944 1623888 5702776 1627416 5704464 +1624952 5701864 1627080 5703984 1627904 5703304 1625520 5701424 +1627904 5703304 1625592 5701352 1625520 5701424 1627080 5703984 +1624952 5701864 1627416 5704464 1627080 5703984 1625520 5701424 +1627080 5703984 1627416 5704464 1627904 5703304 1625520 5701424 +1627416 5704464 1627080 5703984 1624952 5701864 1623888 5702776 +1627416 5704464 1627080 5703984 1623888 5702776 1627216 5705096 +1623888 5702776 1623816 5702824 1627216 5705096 1627080 5703984 +1623888 5702776 1623848 5702776 1623816 5702824 1627080 5703984 +1627216 5705096 1627416 5704464 1627080 5703984 1623816 5702824 +1623816 5702824 1627208 5705152 1627216 5705096 1627080 5703984 +1627216 5705096 1627416 5704464 1627080 5703984 1627208 5705152 +1623816 5702824 1623720 5702872 1627208 5705152 1627080 5703984 +1623816 5702824 1627208 5705152 1627080 5703984 1623888 5702776 +1627416 5704464 1627080 5703984 1627216 5705096 1627552 5704744 +1627080 5703984 1625520 5701424 1624952 5701864 1623888 5702776 +1627080 5703984 1624952 5701864 1623888 5702776 1623816 5702824 +1627416 5704464 1627904 5703304 1627080 5703984 1627216 5705096 +1627904 5703304 1627080 5703984 1627416 5704464 1628360 5703512 +1624952 5701864 1624720 5701944 1623888 5702776 1627080 5703984 +1625520 5701424 1627024 5703888 1627904 5703304 1625592 5701352 +1625520 5701424 1627080 5703984 1627024 5703888 1625592 5701352 +1627024 5703888 1627080 5703984 1627904 5703304 1625592 5701352 +1627080 5703984 1627024 5703888 1625520 5701424 1624952 5701864 +1627024 5703888 1625592 5701352 1625520 5701424 1624952 5701864 +1627904 5703304 1627896 5701296 1625592 5701352 1627024 5703888 +1627080 5703984 1627024 5703888 1624952 5701864 1623888 5702776 +1627024 5703888 1625520 5701424 1624952 5701864 1623888 5702776 +1627080 5703984 1627904 5703304 1627024 5703888 1623888 5702776 +1627904 5703304 1627024 5703888 1627080 5703984 1627416 5704464 +1627080 5703984 1627024 5703888 1623888 5702776 1623816 5702824 +1623888 5702776 1623848 5702776 1623816 5702824 1627024 5703888 +1627080 5703984 1627024 5703888 1623816 5702824 1627208 5705152 +1623816 5702824 1623720 5702872 1627208 5705152 1627024 5703888 +1627080 5703984 1627024 5703888 1627208 5705152 1627216 5705096 +1627080 5703984 1627024 5703888 1627216 5705096 1627416 5704464 +1627024 5703888 1623816 5702824 1627208 5705152 1627216 5705096 +1627024 5703888 1624952 5701864 1623888 5702776 1623816 5702824 +1627080 5703984 1627904 5703304 1627024 5703888 1627216 5705096 +1627024 5703888 1623888 5702776 1623816 5702824 1627208 5705152 +1624952 5701864 1624720 5701944 1623888 5702776 1627024 5703888 +1627904 5703304 1627024 5703808 1627024 5703888 1627080 5703984 +1627024 5703808 1625592 5701352 1627024 5703888 1627080 5703984 +1627904 5703304 1625592 5701352 1627024 5703808 1627080 5703984 +1627024 5703888 1627024 5703808 1625592 5701352 1625520 5701424 +1627024 5703888 1627024 5703808 1625520 5701424 1624952 5701864 +1627024 5703888 1627080 5703984 1627024 5703808 1624952 5701864 +1627024 5703808 1627904 5703304 1625592 5701352 1625520 5701424 +1627024 5703808 1625592 5701352 1625520 5701424 1624952 5701864 +1627024 5703888 1627024 5703808 1624952 5701864 1623888 5702776 +1627024 5703808 1625520 5701424 1624952 5701864 1623888 5702776 +1627024 5703888 1627080 5703984 1627024 5703808 1623888 5702776 +1625592 5701352 1627024 5703808 1627904 5703304 1627896 5701296 +1627024 5703888 1627024 5703808 1623888 5702776 1623816 5702824 +1627904 5703304 1627024 5703808 1627080 5703984 1627416 5704464 +1624952 5701864 1624720 5701944 1623888 5702776 1627024 5703808 +1627024 5703808 1627056 5703704 1625592 5701352 1625520 5701424 +1627024 5703808 1627904 5703304 1627056 5703704 1625520 5701424 +1627904 5703304 1627056 5703704 1627024 5703808 1627080 5703984 +1627024 5703808 1627024 5703888 1627080 5703984 1627056 5703704 +1627056 5703704 1625520 5701424 1627024 5703808 1627080 5703984 +1627024 5703808 1627056 5703704 1625520 5701424 1624952 5701864 +1627024 5703808 1627056 5703704 1624952 5701864 1623888 5702776 +1627056 5703704 1625592 5701352 1625520 5701424 1624952 5701864 +1627024 5703808 1627080 5703984 1627056 5703704 1624952 5701864 +1625592 5701352 1627056 5703704 1627904 5703304 1627896 5701296 +1627904 5703304 1627056 5703704 1627080 5703984 1627416 5704464 +1627904 5703304 1628144 5701568 1627896 5701296 1627056 5703704 +1627056 5703704 1627896 5701296 1625592 5701352 1625520 5701424 +1627904 5703304 1627896 5701296 1627056 5703704 1627080 5703984 +1625592 5701352 1627056 5703704 1627896 5701296 1626152 5700864 +1627056 5703704 1627136 5703592 1627896 5701296 1625592 5701352 +1627896 5701296 1627136 5703592 1627904 5703304 1628144 5701568 +1627904 5703304 1628320 5701688 1628144 5701568 1627136 5703592 +1627136 5703592 1627056 5703704 1627904 5703304 1628144 5701568 +1627056 5703704 1627136 5703592 1625592 5701352 1625520 5701424 +1627056 5703704 1627136 5703592 1625520 5701424 1624952 5701864 +1627056 5703704 1627136 5703592 1624952 5701864 1627024 5703808 +1627136 5703592 1627896 5701296 1625592 5701352 1625520 5701424 +1627136 5703592 1625592 5701352 1625520 5701424 1624952 5701864 +1627904 5703304 1627136 5703592 1627056 5703704 1627080 5703984 +1627904 5703304 1627136 5703592 1627080 5703984 1627416 5704464 +1627904 5703304 1628144 5701568 1627136 5703592 1627080 5703984 +1627056 5703704 1627024 5703808 1627080 5703984 1627136 5703592 +1627056 5703704 1627080 5703984 1627136 5703592 1624952 5701864 +1627136 5703592 1628144 5701568 1627896 5701296 1625592 5701352 +1627896 5701296 1626152 5700864 1625592 5701352 1627136 5703592 +1628144 5701568 1627200 5703448 1627136 5703592 1627904 5703304 +1628144 5701568 1627200 5703448 1627904 5703304 1628320 5701688 +1627136 5703592 1627080 5703984 1627904 5703304 1627200 5703448 +1627200 5703448 1627896 5701296 1627136 5703592 1627904 5703304 +1627136 5703592 1627200 5703448 1627896 5701296 1625592 5701352 +1627136 5703592 1627200 5703448 1625592 5701352 1625520 5701424 +1627136 5703592 1627904 5703304 1627200 5703448 1625520 5701424 +1627136 5703592 1627200 5703448 1625520 5701424 1624952 5701864 +1627136 5703592 1627200 5703448 1624952 5701864 1627056 5703704 +1624952 5701864 1627024 5703808 1627056 5703704 1627200 5703448 +1627200 5703448 1625592 5701352 1625520 5701424 1624952 5701864 +1627136 5703592 1627904 5703304 1627200 5703448 1627056 5703704 +1627200 5703448 1625520 5701424 1624952 5701864 1627056 5703704 +1627200 5703448 1627896 5701296 1625592 5701352 1625520 5701424 +1627896 5701296 1626152 5700864 1625592 5701352 1627200 5703448 +1626152 5700864 1625616 5701256 1625592 5701352 1627200 5703448 +1627896 5701296 1626264 5700792 1626152 5700864 1627200 5703448 +1625592 5701352 1625520 5701424 1627200 5703448 1626152 5700864 +1627200 5703448 1628144 5701568 1627896 5701296 1626152 5700864 +1628144 5701568 1627896 5701296 1627200 5703448 1627904 5703304 +1628144 5701568 1627384 5703352 1627904 5703304 1628320 5701688 +1627904 5703304 1627384 5703352 1627200 5703448 1627136 5703592 +1627904 5703304 1627384 5703352 1627136 5703592 1627080 5703984 +1627904 5703304 1627384 5703352 1627080 5703984 1627416 5704464 +1627384 5703352 1627200 5703448 1627136 5703592 1627080 5703984 +1627384 5703352 1628144 5701568 1627200 5703448 1627136 5703592 +1627136 5703592 1627056 5703704 1627080 5703984 1627384 5703352 +1627200 5703448 1627384 5703352 1628144 5701568 1627896 5701296 +1627200 5703448 1627136 5703592 1627384 5703352 1627896 5701296 +1627200 5703448 1627384 5703352 1627896 5701296 1626152 5700864 +1627896 5701296 1626264 5700792 1626152 5700864 1627384 5703352 +1627200 5703448 1627136 5703592 1627384 5703352 1626152 5700864 +1627200 5703448 1627384 5703352 1626152 5700864 1625592 5701352 +1626152 5700864 1625616 5701256 1625592 5701352 1627384 5703352 +1627200 5703448 1627136 5703592 1627384 5703352 1625592 5701352 +1627200 5703448 1627384 5703352 1625592 5701352 1625520 5701424 +1627384 5703352 1627896 5701296 1626152 5700864 1625592 5701352 +1627384 5703352 1628144 5701568 1627896 5701296 1626152 5700864 +1627384 5703352 1627904 5703304 1628144 5701568 1627896 5701296 +1627904 5703304 1628144 5701568 1627384 5703352 1627080 5703984 +1628144 5701568 1627736 5703288 1627904 5703304 1628320 5701688 +1628144 5701568 1627384 5703352 1627736 5703288 1628320 5701688 +1627904 5703304 1628488 5701744 1628320 5701688 1627736 5703288 +1627384 5703352 1627736 5703288 1628144 5701568 1627896 5701296 +1627904 5703304 1627736 5703288 1627384 5703352 1627080 5703984 +1627904 5703304 1627736 5703288 1627080 5703984 1627416 5704464 +1627904 5703304 1627736 5703288 1627416 5704464 1628360 5703512 +1627384 5703352 1627136 5703592 1627080 5703984 1627736 5703288 +1627736 5703288 1628144 5701568 1627384 5703352 1627080 5703984 +1627736 5703288 1627384 5703352 1627080 5703984 1627416 5704464 +1627736 5703288 1627416 5704464 1627904 5703304 1628320 5701688 +1627552 5704744 1627992 5704624 1628968 5703704 1628472 5703560 +1627552 5704744 1627992 5704624 1628472 5703560 1627416 5704464 +1628472 5703560 1628360 5703512 1627416 5704464 1627992 5704624 +1627416 5704464 1627552 5704744 1627992 5704624 1628360 5703512 +1628360 5703512 1627904 5703304 1627416 5704464 1627992 5704624 +1628360 5703512 1627904 5703304 1627992 5704624 1628472 5703560 +1627416 5704464 1627552 5704744 1627992 5704624 1627904 5703304 +1627904 5703304 1627736 5703288 1627416 5704464 1627992 5704624 +1627992 5704624 1628968 5703704 1628472 5703560 1628360 5703512 +1629064 5705344 1627992 5704624 1627552 5704744 1627568 5704840 +1629064 5705344 1627992 5704624 1627568 5704840 1628648 5705608 +1627568 5704840 1627776 5705560 1628648 5705608 1627992 5704624 +1627776 5705560 1628312 5705744 1628648 5705608 1627992 5704624 +1628648 5705608 1629064 5705344 1627992 5704624 1628312 5705744 +1627776 5705560 1628312 5705744 1627992 5704624 1627568 5704840 +1628312 5705744 1628432 5705728 1628648 5705608 1627992 5704624 +1627568 5704840 1627528 5705000 1627776 5705560 1627992 5704624 +1627776 5705560 1628312 5705744 1627992 5704624 1627528 5705000 +1627992 5704624 1627552 5704744 1627568 5704840 1627528 5705000 +1628472 5703560 1628448 5703536 1628360 5703512 1627992 5704624 +1628968 5703704 1627992 5704624 1629064 5705344 1629208 5705288 +1627528 5705000 1627512 5705016 1627776 5705560 1627992 5704624 +1627992 5704624 1629064 5705344 1628968 5703704 1628472 5703560 +1629064 5705344 1628968 5703704 1627992 5704624 1628648 5705608 +1627552 5704744 1627568 5704840 1627992 5704624 1627416 5704464 +1627992 5704624 1627752 5704352 1627416 5704464 1627552 5704744 +1627904 5703304 1627752 5704352 1627992 5704624 1628360 5703512 +1627992 5704624 1628472 5703560 1628360 5703512 1627752 5704352 +1628360 5703512 1627904 5703304 1627752 5704352 1628472 5703560 +1627416 5704464 1627752 5704352 1627904 5703304 1627736 5703288 +1627416 5704464 1627752 5704352 1627736 5703288 1627080 5703984 +1627752 5704352 1627904 5703304 1627736 5703288 1627080 5703984 +1627992 5704624 1628968 5703704 1628472 5703560 1627752 5704352 +1628472 5703560 1628448 5703536 1628360 5703512 1627752 5704352 +1627736 5703288 1627384 5703352 1627080 5703984 1627752 5704352 +1627080 5703984 1627416 5704464 1627752 5704352 1627384 5703352 +1627736 5703288 1627384 5703352 1627752 5704352 1627904 5703304 +1627384 5703352 1627136 5703592 1627080 5703984 1627752 5704352 +1627080 5703984 1627416 5704464 1627752 5704352 1627136 5703592 +1627384 5703352 1627200 5703448 1627136 5703592 1627752 5704352 +1627136 5703592 1627056 5703704 1627080 5703984 1627752 5704352 +1627384 5703352 1627136 5703592 1627752 5704352 1627736 5703288 +1627992 5704624 1628472 5703560 1627752 5704352 1627552 5704744 +1627992 5704624 1627752 5704352 1627552 5704744 1627568 5704840 +1627752 5704352 1627080 5703984 1627416 5704464 1627552 5704744 +1627904 5703304 1627736 5703288 1627752 5704352 1628360 5703512 +1627136 5703592 1627624 5704144 1627384 5703352 1627200 5703448 +1627752 5704352 1627624 5704144 1627136 5703592 1627080 5703984 +1627752 5704352 1627624 5704144 1627080 5703984 1627416 5704464 +1627624 5704144 1627136 5703592 1627080 5703984 1627416 5704464 +1627624 5704144 1627384 5703352 1627136 5703592 1627080 5703984 +1627136 5703592 1627056 5703704 1627080 5703984 1627624 5704144 +1627384 5703352 1627624 5704144 1627752 5704352 1627736 5703288 +1627752 5704352 1627904 5703304 1627736 5703288 1627624 5704144 +1627736 5703288 1627384 5703352 1627624 5704144 1627904 5703304 +1627752 5704352 1627624 5704144 1627416 5704464 1627552 5704744 +1627752 5704352 1627904 5703304 1627624 5704144 1627416 5704464 +1627752 5704352 1628360 5703512 1627904 5703304 1627624 5704144 +1627752 5704352 1628472 5703560 1628360 5703512 1627624 5704144 +1627904 5703304 1627736 5703288 1627624 5704144 1628360 5703512 +1627752 5704352 1628360 5703512 1627624 5704144 1627416 5704464 +1627384 5703352 1627136 5703592 1627624 5704144 1627736 5703288 +1627136 5703592 1627592 5704048 1627384 5703352 1627200 5703448 +1627624 5704144 1627592 5704048 1627136 5703592 1627080 5703984 +1627624 5704144 1627592 5704048 1627080 5703984 1627416 5704464 +1627624 5704144 1627592 5704048 1627416 5704464 1627752 5704352 +1627592 5704048 1627136 5703592 1627080 5703984 1627416 5704464 +1627136 5703592 1627056 5703704 1627080 5703984 1627592 5704048 +1627592 5704048 1627384 5703352 1627136 5703592 1627080 5703984 +1627624 5704144 1627384 5703352 1627592 5704048 1627416 5704464 +1627384 5703352 1627592 5704048 1627624 5704144 1627736 5703288 +1627624 5704144 1627904 5703304 1627736 5703288 1627592 5704048 +1627624 5704144 1628360 5703512 1627904 5703304 1627592 5704048 +1627904 5703304 1627736 5703288 1627592 5704048 1628360 5703512 +1627624 5704144 1627752 5704352 1628360 5703512 1627592 5704048 +1627592 5704048 1627416 5704464 1627624 5704144 1628360 5703512 +1627736 5703288 1627384 5703352 1627592 5704048 1627904 5703304 +1627384 5703352 1627136 5703592 1627592 5704048 1627736 5703288 +1627736 5703288 1627592 5704000 1627592 5704048 1627904 5703304 +1627592 5704048 1628360 5703512 1627904 5703304 1627592 5704000 +1627592 5704048 1627624 5704144 1628360 5703512 1627592 5704000 +1628360 5703512 1627904 5703304 1627592 5704000 1627624 5704144 +1627624 5704144 1627752 5704352 1628360 5703512 1627592 5704000 +1627904 5703304 1627736 5703288 1627592 5704000 1628360 5703512 +1627592 5704000 1627384 5703352 1627592 5704048 1627624 5704144 +1627592 5704048 1627592 5704000 1627384 5703352 1627136 5703592 +1627384 5703352 1627200 5703448 1627136 5703592 1627592 5704000 +1627592 5704048 1627592 5704000 1627136 5703592 1627080 5703984 +1627592 5704048 1627592 5704000 1627080 5703984 1627416 5704464 +1627136 5703592 1627056 5703704 1627080 5703984 1627592 5704000 +1627592 5704048 1627624 5704144 1627592 5704000 1627080 5703984 +1627592 5704000 1627384 5703352 1627136 5703592 1627080 5703984 +1627592 5704000 1627736 5703288 1627384 5703352 1627136 5703592 +1627736 5703288 1627384 5703352 1627592 5704000 1627904 5703304 +1628360 5703512 1627664 5703936 1627592 5704000 1627624 5704144 +1627592 5704000 1627592 5704048 1627624 5704144 1627664 5703936 +1628360 5703512 1627904 5703304 1627664 5703936 1627624 5704144 +1627624 5704144 1628360 5703512 1627664 5703936 1627592 5704048 +1628360 5703512 1627664 5703936 1627624 5704144 1627752 5704352 +1628360 5703512 1627664 5703936 1627752 5704352 1628472 5703560 +1627752 5704352 1627992 5704624 1628472 5703560 1627664 5703936 +1628360 5703512 1627904 5703304 1627664 5703936 1628472 5703560 +1628360 5703512 1627664 5703936 1628472 5703560 1628448 5703536 +1627664 5703936 1627592 5704048 1627624 5704144 1627752 5704352 +1627664 5703936 1627624 5704144 1627752 5704352 1628472 5703560 +1627592 5704000 1627664 5703936 1627904 5703304 1627736 5703288 +1627664 5703936 1628360 5703512 1627904 5703304 1627736 5703288 +1627664 5703936 1627736 5703288 1627592 5704000 1627592 5704048 +1627592 5704000 1627664 5703936 1627736 5703288 1627384 5703352 +1627664 5703936 1627904 5703304 1627736 5703288 1627384 5703352 +1627592 5704000 1627664 5703936 1627384 5703352 1627136 5703592 +1627384 5703352 1627200 5703448 1627136 5703592 1627664 5703936 +1627592 5704000 1627664 5703936 1627136 5703592 1627080 5703984 +1627592 5704000 1627592 5704048 1627664 5703936 1627136 5703592 +1627664 5703936 1627736 5703288 1627384 5703352 1627136 5703592 +1627664 5703936 1627728 5703896 1627904 5703304 1627736 5703288 +1627664 5703936 1628360 5703512 1627728 5703896 1627736 5703288 +1628360 5703512 1627728 5703896 1627664 5703936 1628472 5703560 +1627664 5703936 1627752 5704352 1628472 5703560 1627728 5703896 +1627752 5704352 1627992 5704624 1628472 5703560 1627728 5703896 +1627728 5703896 1627736 5703288 1627664 5703936 1627752 5704352 +1628472 5703560 1628360 5703512 1627728 5703896 1627752 5704352 +1627728 5703896 1628360 5703512 1627904 5703304 1627736 5703288 +1628360 5703512 1627904 5703304 1627728 5703896 1628472 5703560 +1628360 5703512 1627728 5703896 1628472 5703560 1628448 5703536 +1627664 5703936 1627624 5704144 1627752 5704352 1627728 5703896 +1627752 5704352 1628472 5703560 1627728 5703896 1627624 5704144 +1627664 5703936 1627624 5704144 1627728 5703896 1627736 5703288 +1627664 5703936 1627592 5704048 1627624 5704144 1627728 5703896 +1627664 5703936 1627728 5703896 1627736 5703288 1627384 5703352 +1627728 5703896 1627904 5703304 1627736 5703288 1627384 5703352 +1627664 5703936 1627624 5704144 1627728 5703896 1627384 5703352 +1627664 5703936 1627728 5703896 1627384 5703352 1627136 5703592 +1628472 5703560 1627792 5703880 1627752 5704352 1627992 5704624 +1627752 5704352 1627792 5703880 1627728 5703896 1627624 5704144 +1628472 5703560 1627792 5703880 1627992 5704624 1628968 5703704 +1628472 5703560 1627728 5703896 1627792 5703880 1627992 5704624 +1627792 5703880 1627624 5704144 1627752 5704352 1627992 5704624 +1627728 5703896 1627792 5703880 1628472 5703560 1628360 5703512 +1627792 5703880 1627992 5704624 1628472 5703560 1628360 5703512 +1627792 5703880 1628360 5703512 1627728 5703896 1627624 5704144 +1627728 5703896 1627792 5703880 1628360 5703512 1627904 5703304 +1627792 5703880 1628472 5703560 1628360 5703512 1627904 5703304 +1627728 5703896 1627792 5703880 1627904 5703304 1627736 5703288 +1627728 5703896 1627792 5703880 1627736 5703288 1627384 5703352 +1627728 5703896 1627624 5704144 1627792 5703880 1627736 5703288 +1627792 5703880 1628360 5703512 1627904 5703304 1627736 5703288 +1628472 5703560 1628448 5703536 1628360 5703512 1627792 5703880 +1627728 5703896 1627664 5703936 1627624 5704144 1627792 5703880 +1627992 5704624 1627832 5703888 1627792 5703880 1627752 5704352 +1627992 5704624 1628472 5703560 1627832 5703888 1627752 5704352 +1628472 5703560 1627832 5703888 1627992 5704624 1628968 5703704 +1627792 5703880 1627832 5703888 1628472 5703560 1628360 5703512 +1627832 5703888 1627992 5704624 1628472 5703560 1628360 5703512 +1627832 5703888 1628360 5703512 1627792 5703880 1627752 5704352 +1627792 5703880 1627624 5704144 1627752 5704352 1627832 5703888 +1627752 5704352 1627992 5704624 1627832 5703888 1627624 5704144 +1627792 5703880 1627728 5703896 1627624 5704144 1627832 5703888 +1627792 5703880 1627728 5703896 1627832 5703888 1628360 5703512 +1627624 5704144 1627752 5704352 1627832 5703888 1627728 5703896 +1627792 5703880 1627832 5703888 1628360 5703512 1627904 5703304 +1627832 5703888 1628472 5703560 1628360 5703512 1627904 5703304 +1627792 5703880 1627728 5703896 1627832 5703888 1627904 5703304 +1627792 5703880 1627832 5703888 1627904 5703304 1627736 5703288 +1628472 5703560 1628448 5703536 1628360 5703512 1627832 5703888 +1627728 5703896 1627664 5703936 1627624 5704144 1627832 5703888 +1627832 5703888 1628064 5703824 1628472 5703560 1628360 5703512 +1628064 5703824 1627992 5704624 1628472 5703560 1628360 5703512 +1627832 5703888 1627992 5704624 1628064 5703824 1628360 5703512 +1627992 5704624 1628064 5703824 1627832 5703888 1627752 5704352 +1627832 5703888 1627624 5704144 1627752 5704352 1628064 5703824 +1627992 5704624 1628472 5703560 1628064 5703824 1627752 5704352 +1628064 5703824 1628360 5703512 1627832 5703888 1627752 5704352 +1628472 5703560 1628064 5703824 1627992 5704624 1628968 5703704 +1628472 5703560 1628360 5703512 1628064 5703824 1628968 5703704 +1628064 5703824 1627752 5704352 1627992 5704624 1628968 5703704 +1627832 5703888 1628064 5703824 1628360 5703512 1627904 5703304 +1628064 5703824 1628472 5703560 1628360 5703512 1627904 5703304 +1627832 5703888 1627752 5704352 1628064 5703824 1627904 5703304 +1627832 5703888 1628064 5703824 1627904 5703304 1627792 5703880 +1628472 5703560 1628448 5703536 1628360 5703512 1628064 5703824 +1627992 5704624 1629064 5705344 1628968 5703704 1628064 5703824 +1627992 5704624 1628168 5703832 1628064 5703824 1627752 5704352 +1627992 5704624 1628968 5703704 1628168 5703832 1627752 5704352 +1628168 5703832 1628968 5703704 1628064 5703824 1627752 5704352 +1628064 5703824 1627832 5703888 1627752 5704352 1628168 5703832 +1628064 5703824 1628168 5703832 1628968 5703704 1628472 5703560 +1628168 5703832 1627992 5704624 1628968 5703704 1628472 5703560 +1628064 5703824 1628168 5703832 1628472 5703560 1628360 5703512 +1628064 5703824 1627752 5704352 1628168 5703832 1628360 5703512 +1628064 5703824 1628168 5703832 1628360 5703512 1627904 5703304 +1628168 5703832 1628968 5703704 1628472 5703560 1628360 5703512 +1628472 5703560 1628448 5703536 1628360 5703512 1628168 5703832 +1628968 5703704 1628168 5703832 1627992 5704624 1629064 5705344 +1628168 5703832 1628360 5703944 1628968 5703704 1628472 5703560 +1628168 5703832 1627992 5704624 1628360 5703944 1628472 5703560 +1627992 5704624 1628360 5703944 1628168 5703832 1627752 5704352 +1628360 5703944 1628472 5703560 1628168 5703832 1627752 5704352 +1628360 5703944 1627992 5704624 1628968 5703704 1628472 5703560 +1628168 5703832 1628064 5703824 1627752 5704352 1628360 5703944 +1628168 5703832 1628064 5703824 1628360 5703944 1628472 5703560 +1627752 5704352 1627992 5704624 1628360 5703944 1628064 5703824 +1628064 5703824 1627832 5703888 1627752 5704352 1628360 5703944 +1627992 5704624 1628968 5703704 1628360 5703944 1627752 5704352 +1628168 5703832 1628360 5703944 1628472 5703560 1628360 5703512 +1628968 5703704 1628360 5703944 1627992 5704624 1629064 5705344 +1628968 5703704 1628472 5703560 1628360 5703944 1629064 5705344 +1628360 5703944 1627752 5704352 1627992 5704624 1629064 5705344 +1628968 5703704 1628360 5703944 1629064 5705344 1629208 5705288 +1628968 5703704 1628472 5703560 1628360 5703944 1629208 5705288 +1628360 5703944 1627992 5704624 1629064 5705344 1629208 5705288 +1627992 5704624 1628648 5705608 1629064 5705344 1628360 5703944 +1628968 5703704 1628360 5703944 1629208 5705288 1629472 5703936 +1628968 5703704 1628472 5703560 1628360 5703944 1629472 5703936 +1628360 5703944 1629064 5705344 1629208 5705288 1629472 5703936 +1629208 5705288 1629312 5705264 1629472 5703936 1628360 5703944 +1629208 5705288 1628392 5703960 1628360 5703944 1629064 5705344 +1628392 5703960 1629472 5703936 1628360 5703944 1629064 5705344 +1629208 5705288 1629472 5703936 1628392 5703960 1629064 5705344 +1628360 5703944 1627992 5704624 1629064 5705344 1628392 5703960 +1628360 5703944 1627992 5704624 1628392 5703960 1629472 5703936 +1628360 5703944 1627752 5704352 1627992 5704624 1628392 5703960 +1629064 5705344 1629208 5705288 1628392 5703960 1627992 5704624 +1627992 5704624 1628648 5705608 1629064 5705344 1628392 5703960 +1628360 5703944 1628392 5703960 1629472 5703936 1628968 5703704 +1628360 5703944 1628392 5703960 1628968 5703704 1628472 5703560 +1628360 5703944 1628392 5703960 1628472 5703560 1628168 5703832 +1628360 5703944 1627992 5704624 1628392 5703960 1628472 5703560 +1628392 5703960 1629208 5705288 1629472 5703936 1628968 5703704 +1628392 5703960 1629472 5703936 1628968 5703704 1628472 5703560 +1629472 5703936 1628392 5703960 1629208 5705288 1629312 5705264 +1629472 5703936 1628592 5703896 1628392 5703960 1629208 5705288 +1628392 5703960 1629064 5705344 1629208 5705288 1628592 5703896 +1629208 5705288 1629472 5703936 1628592 5703896 1629064 5705344 +1628592 5703896 1628968 5703704 1628392 5703960 1629064 5705344 +1629472 5703936 1628968 5703704 1628592 5703896 1629208 5705288 +1628392 5703960 1627992 5704624 1629064 5705344 1628592 5703896 +1629064 5705344 1629208 5705288 1628592 5703896 1627992 5704624 +1628392 5703960 1627992 5704624 1628592 5703896 1628968 5703704 +1628392 5703960 1628360 5703944 1627992 5704624 1628592 5703896 +1627992 5704624 1628648 5705608 1629064 5705344 1628592 5703896 +1628392 5703960 1628592 5703896 1628968 5703704 1628472 5703560 +1628392 5703960 1628592 5703896 1628472 5703560 1628360 5703944 +1628472 5703560 1628168 5703832 1628360 5703944 1628592 5703896 +1628392 5703960 1627992 5704624 1628592 5703896 1628360 5703944 +1628592 5703896 1629472 5703936 1628968 5703704 1628472 5703560 +1628592 5703896 1628968 5703704 1628472 5703560 1628360 5703944 +1629472 5703936 1628592 5703896 1629208 5705288 1629312 5705264 +1628592 5703896 1628760 5703880 1628968 5703704 1628472 5703560 +1628592 5703896 1629472 5703936 1628760 5703880 1628472 5703560 +1629472 5703936 1628760 5703880 1628592 5703896 1629208 5705288 +1628592 5703896 1629064 5705344 1629208 5705288 1628760 5703880 +1628592 5703896 1627992 5704624 1629064 5705344 1628760 5703880 +1629064 5705344 1629208 5705288 1628760 5703880 1627992 5704624 +1628760 5703880 1628472 5703560 1628592 5703896 1627992 5704624 +1629208 5705288 1629472 5703936 1628760 5703880 1629064 5705344 +1628760 5703880 1629472 5703936 1628968 5703704 1628472 5703560 +1629472 5703936 1628968 5703704 1628760 5703880 1629208 5705288 +1628592 5703896 1628392 5703960 1627992 5704624 1628760 5703880 +1627992 5704624 1628648 5705608 1629064 5705344 1628760 5703880 +1628592 5703896 1628760 5703880 1628472 5703560 1628360 5703944 +1629472 5703936 1628760 5703880 1629208 5705288 1629312 5705264 +1629208 5705288 1629008 5703912 1628760 5703880 1629064 5705344 +1628760 5703880 1627992 5704624 1629064 5705344 1629008 5703912 +1629008 5703912 1629472 5703936 1628760 5703880 1629064 5705344 +1628760 5703880 1629008 5703912 1629472 5703936 1628968 5703704 +1629008 5703912 1629208 5705288 1629472 5703936 1628968 5703704 +1628760 5703880 1629008 5703912 1628968 5703704 1628472 5703560 +1628760 5703880 1629064 5705344 1629008 5703912 1628968 5703704 +1629208 5705288 1629472 5703936 1629008 5703912 1629064 5705344 +1629472 5703936 1629008 5703912 1629208 5705288 1629312 5705264 +1629472 5703936 1628968 5703704 1629008 5703912 1629312 5705264 +1629008 5703912 1629064 5705344 1629208 5705288 1629312 5705264 +1629472 5703936 1629008 5703912 1629312 5705264 1629752 5704128 +1629008 5703912 1629288 5704040 1629472 5703936 1628968 5703704 +1629008 5703912 1629288 5704040 1628968 5703704 1628760 5703880 +1629008 5703912 1629312 5705264 1629288 5704040 1628968 5703704 +1629288 5704040 1629312 5705264 1629472 5703936 1628968 5703704 +1629472 5703936 1629288 5704040 1629312 5705264 1629752 5704128 +1629472 5703936 1628968 5703704 1629288 5704040 1629752 5704128 +1629288 5704040 1629008 5703912 1629312 5705264 1629752 5704128 +1629312 5705264 1629376 5705272 1629752 5704128 1629288 5704040 +1629312 5705264 1629288 5704040 1629008 5703912 1629208 5705288 +1629288 5704040 1628968 5703704 1629008 5703912 1629208 5705288 +1629008 5703912 1629064 5705344 1629208 5705288 1629288 5704040 +1629008 5703912 1628760 5703880 1629064 5705344 1629288 5704040 +1629008 5703912 1629064 5705344 1629288 5704040 1628968 5703704 +1629312 5705264 1629752 5704128 1629288 5704040 1629208 5705288 +1629208 5705288 1629312 5705264 1629288 5704040 1629064 5705344 +1629312 5705264 1629392 5704120 1629288 5704040 1629208 5705288 +1629312 5705264 1629752 5704128 1629392 5704120 1629208 5705288 +1629392 5704120 1629752 5704128 1629288 5704040 1629208 5705288 +1629752 5704128 1629392 5704120 1629312 5705264 1629376 5705272 +1629752 5704128 1629288 5704040 1629392 5704120 1629376 5705272 +1629392 5704120 1629208 5705288 1629312 5705264 1629376 5705272 +1629752 5704128 1629392 5704120 1629376 5705272 1629944 5704312 +1629376 5705272 1630064 5704496 1629944 5704312 1629392 5704120 +1629752 5704128 1629288 5704040 1629392 5704120 1629944 5704312 +1629392 5704120 1629312 5705264 1629376 5705272 1629944 5704312 +1629288 5704040 1629392 5704120 1629752 5704128 1629472 5703936 +1629392 5704120 1629944 5704312 1629752 5704128 1629472 5703936 +1629288 5704040 1629392 5704120 1629472 5703936 1628968 5703704 +1629288 5704040 1629208 5705288 1629392 5704120 1629472 5703936 +1629288 5704040 1629064 5705344 1629208 5705288 1629392 5704120 +1629944 5704312 1629432 5704184 1629376 5705272 1630064 5704496 +1629944 5704312 1629392 5704120 1629432 5704184 1630064 5704496 +1629376 5705272 1630112 5704600 1630064 5704496 1629432 5704184 +1629432 5704184 1629392 5704120 1629376 5705272 1630064 5704496 +1629376 5705272 1629432 5704184 1629392 5704120 1629312 5705264 +1629432 5704184 1629944 5704312 1629392 5704120 1629312 5705264 +1629392 5704120 1629208 5705288 1629312 5705264 1629432 5704184 +1629392 5704120 1629208 5705288 1629432 5704184 1629944 5704312 +1629376 5705272 1630064 5704496 1629432 5704184 1629312 5705264 +1629392 5704120 1629288 5704040 1629208 5705288 1629432 5704184 +1629392 5704120 1629288 5704040 1629432 5704184 1629944 5704312 +1629208 5705288 1629312 5705264 1629432 5704184 1629288 5704040 +1629312 5705264 1629376 5705272 1629432 5704184 1629208 5705288 +1629392 5704120 1629432 5704184 1629944 5704312 1629752 5704128 +1629392 5704120 1629432 5704184 1629752 5704128 1629472 5703936 +1629392 5704120 1629288 5704040 1629432 5704184 1629472 5703936 +1629432 5704184 1630064 5704496 1629944 5704312 1629752 5704128 +1629432 5704184 1629944 5704312 1629752 5704128 1629472 5703936 +1629392 5704120 1629432 5704184 1629472 5703936 1629288 5704040 +1629288 5704040 1629064 5705344 1629208 5705288 1629432 5704184 +1629208 5705288 1629312 5705264 1629432 5704184 1629064 5705344 +1629288 5704040 1629008 5703912 1629064 5705344 1629432 5704184 +1629008 5703912 1628760 5703880 1629064 5705344 1629432 5704184 +1629288 5704040 1629008 5703912 1629432 5704184 1629392 5704120 +1629064 5705344 1629208 5705288 1629432 5704184 1629008 5703912 +1629432 5704184 1629456 5704296 1630064 5704496 1629944 5704312 +1629456 5704296 1629376 5705272 1630064 5704496 1629944 5704312 +1629432 5704184 1629456 5704296 1629944 5704312 1629752 5704128 +1629456 5704296 1630064 5704496 1629944 5704312 1629752 5704128 +1629432 5704184 1629376 5705272 1629456 5704296 1629752 5704128 +1630064 5704496 1629456 5704296 1629376 5705272 1630112 5704600 +1630064 5704496 1629944 5704312 1629456 5704296 1630112 5704600 +1629456 5704296 1629432 5704184 1629376 5705272 1630112 5704600 +1629376 5705272 1630128 5704656 1630112 5704600 1629456 5704296 +1629376 5705272 1630128 5704656 1629456 5704296 1629432 5704184 +1630128 5704656 1630136 5704624 1630112 5704600 1629456 5704296 +1630112 5704600 1630064 5704496 1629456 5704296 1630128 5704656 +1629376 5705272 1629456 5704296 1629432 5704184 1629312 5705264 +1629376 5705272 1630128 5704656 1629456 5704296 1629312 5705264 +1629456 5704296 1629752 5704128 1629432 5704184 1629312 5705264 +1629376 5705272 1630152 5704824 1630128 5704656 1629456 5704296 +1629432 5704184 1629208 5705288 1629312 5705264 1629456 5704296 +1629432 5704184 1629064 5705344 1629208 5705288 1629456 5704296 +1629432 5704184 1629064 5705344 1629456 5704296 1629752 5704128 +1629312 5705264 1629376 5705272 1629456 5704296 1629208 5705288 +1629208 5705288 1629312 5705264 1629456 5704296 1629064 5705344 +1629432 5704184 1629456 5704296 1629752 5704128 1629472 5703936 +1629432 5704184 1629008 5703912 1629064 5705344 1629456 5704296 +1629064 5705344 1629208 5705288 1629456 5704296 1629008 5703912 +1629432 5704184 1629008 5703912 1629456 5704296 1629752 5704128 +1629008 5703912 1628760 5703880 1629064 5705344 1629456 5704296 +1629064 5705344 1629208 5705288 1629456 5704296 1628760 5703880 +1628760 5703880 1627992 5704624 1629064 5705344 1629456 5704296 +1629432 5704184 1629288 5704040 1629008 5703912 1629456 5704296 +1629432 5704184 1629288 5704040 1629456 5704296 1629752 5704128 +1629432 5704184 1629392 5704120 1629288 5704040 1629456 5704296 +1629432 5704184 1629392 5704120 1629456 5704296 1629752 5704128 +1629288 5704040 1629008 5703912 1629456 5704296 1629392 5704120 +1629008 5703912 1628760 5703880 1629456 5704296 1629288 5704040 +1629456 5704296 1628760 5703880 1629064 5705344 1629376 5704616 +1629064 5705344 1629208 5705288 1629376 5704616 1628760 5703880 +1628760 5703880 1627992 5704624 1629064 5705344 1629376 5704616 +1629064 5705344 1629208 5705288 1629376 5704616 1627992 5704624 +1628760 5703880 1627992 5704624 1629376 5704616 1629456 5704296 +1628760 5703880 1628592 5703896 1627992 5704624 1629376 5704616 +1628760 5703880 1628592 5703896 1629376 5704616 1629456 5704296 +1627992 5704624 1629064 5705344 1629376 5704616 1628592 5703896 +1629456 5704296 1629376 5704616 1629312 5705264 1629376 5705272 +1629456 5704296 1629376 5704616 1629376 5705272 1630128 5704656 +1629376 5704616 1629208 5705288 1629312 5705264 1629376 5705272 +1629456 5704296 1629376 5704616 1630128 5704656 1630112 5704600 +1629376 5704616 1629376 5705272 1630128 5704656 1630112 5704600 +1630128 5704656 1630136 5704624 1630112 5704600 1629376 5704616 +1629456 5704296 1629376 5704616 1630112 5704600 1630064 5704496 +1629456 5704296 1629376 5704616 1630064 5704496 1629944 5704312 +1629456 5704296 1629376 5704616 1629944 5704312 1629752 5704128 +1629376 5704616 1630128 5704656 1630112 5704600 1630064 5704496 +1629376 5704616 1630112 5704600 1630064 5704496 1629944 5704312 +1629376 5704616 1629312 5705264 1629376 5705272 1630128 5704656 +1629456 5704296 1629008 5703912 1628760 5703880 1629376 5704616 +1628760 5703880 1628592 5703896 1629376 5704616 1629008 5703912 +1628592 5703896 1628392 5703960 1627992 5704624 1629376 5704616 +1627992 5704624 1629064 5705344 1629376 5704616 1628392 5703960 +1628592 5703896 1628392 5703960 1629376 5704616 1628760 5703880 +1628392 5703960 1628360 5703944 1627992 5704624 1629376 5704616 +1629376 5705272 1630152 5704824 1630128 5704656 1629376 5704616 +1630128 5704656 1630112 5704600 1629376 5704616 1630152 5704824 +1629376 5705272 1629568 5705376 1630152 5704824 1629376 5704616 +1629376 5705272 1629568 5705376 1629376 5704616 1629312 5705264 +1630152 5704824 1630128 5704656 1629376 5704616 1629568 5705376 +1629456 5704296 1629008 5703912 1629376 5704616 1629944 5704312 +1627992 5704624 1628648 5705608 1629064 5705344 1629376 5704616 +1629568 5705376 1630080 5705344 1630152 5704824 1629376 5704616 +1629456 5704296 1629288 5704040 1629008 5703912 1629376 5704616 +1629008 5703912 1628760 5703880 1629376 5704616 1629288 5704040 +1629456 5704296 1629392 5704120 1629288 5704040 1629376 5704616 +1629456 5704296 1629288 5704040 1629376 5704616 1629944 5704312 +1629376 5704616 1629312 5704752 1629064 5705344 1629208 5705288 +1629376 5704616 1629312 5704752 1629208 5705288 1629312 5705264 +1629312 5704752 1629064 5705344 1629208 5705288 1629312 5705264 +1629376 5704616 1629312 5704752 1629312 5705264 1629376 5705272 +1629312 5704752 1629208 5705288 1629312 5705264 1629376 5705272 +1629376 5704616 1627992 5704624 1629312 5704752 1629376 5705272 +1627992 5704624 1629312 5704752 1629376 5704616 1628392 5703960 +1629312 5704752 1629376 5705272 1629376 5704616 1628392 5703960 +1629376 5704616 1629312 5704752 1629376 5705272 1629568 5705376 +1629312 5704752 1629312 5705264 1629376 5705272 1629568 5705376 +1629376 5704616 1628392 5703960 1629312 5704752 1629568 5705376 +1629376 5704616 1629312 5704752 1629568 5705376 1630152 5704824 +1629376 5704616 1628392 5703960 1629312 5704752 1630152 5704824 +1629312 5704752 1629376 5705272 1629568 5705376 1630152 5704824 +1629312 5704752 1627992 5704624 1629064 5705344 1629208 5705288 +1627992 5704624 1629064 5705344 1629312 5704752 1628392 5703960 +1629376 5704616 1628592 5703896 1628392 5703960 1629312 5704752 +1629376 5704616 1628592 5703896 1629312 5704752 1630152 5704824 +1628392 5703960 1627992 5704624 1629312 5704752 1628592 5703896 +1629376 5704616 1628760 5703880 1628592 5703896 1629312 5704752 +1629376 5704616 1628760 5703880 1629312 5704752 1630152 5704824 +1629376 5704616 1629008 5703912 1628760 5703880 1629312 5704752 +1629376 5704616 1629008 5703912 1629312 5704752 1630152 5704824 +1628760 5703880 1628592 5703896 1629312 5704752 1629008 5703912 +1629376 5704616 1629288 5704040 1629008 5703912 1629312 5704752 +1628592 5703896 1628392 5703960 1629312 5704752 1628760 5703880 +1627992 5704624 1629312 5704752 1628392 5703960 1628360 5703944 +1629376 5704616 1629312 5704752 1630152 5704824 1630128 5704656 +1629064 5705344 1629312 5704752 1627992 5704624 1628648 5705608 +1629568 5705376 1630080 5705344 1630152 5704824 1629312 5704752 +1629312 5704752 1629240 5704840 1629064 5705344 1629208 5705288 +1629312 5704752 1629240 5704840 1629208 5705288 1629312 5705264 +1629312 5704752 1629240 5704840 1629312 5705264 1629376 5705272 +1629240 5704840 1629208 5705288 1629312 5705264 1629376 5705272 +1629312 5704752 1629240 5704840 1629376 5705272 1629568 5705376 +1629240 5704840 1629064 5705344 1629208 5705288 1629312 5705264 +1629312 5704752 1627992 5704624 1629240 5704840 1629376 5705272 +1627992 5704624 1629240 5704840 1629312 5704752 1628392 5703960 +1629312 5704752 1628592 5703896 1628392 5703960 1629240 5704840 +1627992 5704624 1629064 5705344 1629240 5704840 1628392 5703960 +1629240 5704840 1629376 5705272 1629312 5704752 1628592 5703896 +1628392 5703960 1627992 5704624 1629240 5704840 1628592 5703896 +1629240 5704840 1627992 5704624 1629064 5705344 1629208 5705288 +1629312 5704752 1628760 5703880 1628592 5703896 1629240 5704840 +1628592 5703896 1628392 5703960 1629240 5704840 1628760 5703880 +1629312 5704752 1629008 5703912 1628760 5703880 1629240 5704840 +1629312 5704752 1629376 5704616 1629008 5703912 1629240 5704840 +1629008 5703912 1628760 5703880 1629240 5704840 1629376 5704616 +1629312 5704752 1629376 5704616 1629240 5704840 1629376 5705272 +1629376 5704616 1629288 5704040 1629008 5703912 1629240 5704840 +1628760 5703880 1628592 5703896 1629240 5704840 1629008 5703912 +1627992 5704624 1629240 5704840 1628392 5703960 1628360 5703944 +1629064 5705344 1629240 5704840 1627992 5704624 1628648 5705608 +1627992 5704624 1629120 5704920 1629240 5704840 1628392 5703960 +1629120 5704920 1629064 5705344 1629240 5704840 1628392 5703960 +1629240 5704840 1628592 5703896 1628392 5703960 1629120 5704920 +1629240 5704840 1628760 5703880 1628592 5703896 1629120 5704920 +1629240 5704840 1628760 5703880 1629120 5704920 1629064 5705344 +1628392 5703960 1627992 5704624 1629120 5704920 1628592 5703896 +1628592 5703896 1628392 5703960 1629120 5704920 1628760 5703880 +1629240 5704840 1629120 5704920 1629064 5705344 1629208 5705288 +1629240 5704840 1628760 5703880 1629120 5704920 1629208 5705288 +1629120 5704920 1627992 5704624 1629064 5705344 1629208 5705288 +1629240 5704840 1629120 5704920 1629208 5705288 1629312 5705264 +1629240 5704840 1629120 5704920 1629312 5705264 1629376 5705272 +1629240 5704840 1628760 5703880 1629120 5704920 1629312 5705264 +1629120 5704920 1629064 5705344 1629208 5705288 1629312 5705264 +1627992 5704624 1629064 5705344 1629120 5704920 1628392 5703960 +1629240 5704840 1629008 5703912 1628760 5703880 1629120 5704920 +1628760 5703880 1628592 5703896 1629120 5704920 1629008 5703912 +1629240 5704840 1629376 5704616 1629008 5703912 1629120 5704920 +1629240 5704840 1629312 5704752 1629376 5704616 1629120 5704920 +1629376 5704616 1629008 5703912 1629120 5704920 1629312 5704752 +1629240 5704840 1629312 5704752 1629120 5704920 1629312 5705264 +1629376 5704616 1629288 5704040 1629008 5703912 1629120 5704920 +1629008 5703912 1628760 5703880 1629120 5704920 1629376 5704616 +1627992 5704624 1629120 5704920 1628392 5703960 1628360 5703944 +1629064 5705344 1629120 5704920 1627992 5704624 1628648 5705608 +1627992 5704624 1628312 5705744 1628648 5705608 1629120 5704920 +1629064 5705344 1629208 5705288 1629120 5704920 1628648 5705608 +1629120 5704920 1628392 5703960 1627992 5704624 1628648 5705608 +1628648 5705608 1628936 5704944 1627992 5704624 1628312 5705744 +1627992 5704624 1628936 5704944 1629120 5704920 1628392 5703960 +1627992 5704624 1628648 5705608 1628936 5704944 1628392 5703960 +1629120 5704920 1628592 5703896 1628392 5703960 1628936 5704944 +1629120 5704920 1628760 5703880 1628592 5703896 1628936 5704944 +1629120 5704920 1629008 5703912 1628760 5703880 1628936 5704944 +1628592 5703896 1628392 5703960 1628936 5704944 1628760 5703880 +1628760 5703880 1628592 5703896 1628936 5704944 1629008 5703912 +1628936 5704944 1628648 5705608 1629120 5704920 1629008 5703912 +1628392 5703960 1627992 5704624 1628936 5704944 1628592 5703896 +1629120 5704920 1629376 5704616 1629008 5703912 1628936 5704944 +1629008 5703912 1628760 5703880 1628936 5704944 1629376 5704616 +1629120 5704920 1629312 5704752 1629376 5704616 1628936 5704944 +1629120 5704920 1629240 5704840 1629312 5704752 1628936 5704944 +1629312 5704752 1629376 5704616 1628936 5704944 1629240 5704840 +1629376 5704616 1629288 5704040 1629008 5703912 1628936 5704944 +1629120 5704920 1629240 5704840 1628936 5704944 1628648 5705608 +1629376 5704616 1629008 5703912 1628936 5704944 1629312 5704752 +1627992 5704624 1628936 5704944 1628392 5703960 1628360 5703944 +1629120 5704920 1628936 5704944 1628648 5705608 1629064 5705344 +1629120 5704920 1628936 5704944 1629064 5705344 1629208 5705288 +1629120 5704920 1629240 5704840 1628936 5704944 1629064 5705344 +1628936 5704944 1627992 5704624 1628648 5705608 1629064 5705344 +1628648 5705608 1628736 5704920 1627992 5704624 1628312 5705744 +1628736 5704920 1628936 5704944 1627992 5704624 1628312 5705744 +1627992 5704624 1627776 5705560 1628312 5705744 1628736 5704920 +1627992 5704624 1627776 5705560 1628736 5704920 1628936 5704944 +1628312 5705744 1628648 5705608 1628736 5704920 1627776 5705560 +1627992 5704624 1627528 5705000 1627776 5705560 1628736 5704920 +1628648 5705608 1628736 5704920 1628312 5705744 1628432 5705728 +1627992 5704624 1628736 5704920 1628936 5704944 1628392 5703960 +1627992 5704624 1627776 5705560 1628736 5704920 1628392 5703960 +1628736 5704920 1628648 5705608 1628936 5704944 1628392 5703960 +1628648 5705608 1628936 5704944 1628736 5704920 1628312 5705744 +1628936 5704944 1628592 5703896 1628392 5703960 1628736 5704920 +1628936 5704944 1628592 5703896 1628736 5704920 1628648 5705608 +1628392 5703960 1627992 5704624 1628736 5704920 1628592 5703896 +1628936 5704944 1628760 5703880 1628592 5703896 1628736 5704920 +1628936 5704944 1628760 5703880 1628736 5704920 1628648 5705608 +1628936 5704944 1629008 5703912 1628760 5703880 1628736 5704920 +1628936 5704944 1629008 5703912 1628736 5704920 1628648 5705608 +1628936 5704944 1629376 5704616 1629008 5703912 1628736 5704920 +1628936 5704944 1629376 5704616 1628736 5704920 1628648 5705608 +1628760 5703880 1628592 5703896 1628736 5704920 1629008 5703912 +1629008 5703912 1628760 5703880 1628736 5704920 1629376 5704616 +1629376 5704616 1629288 5704040 1629008 5703912 1628736 5704920 +1628592 5703896 1628392 5703960 1628736 5704920 1628760 5703880 +1628936 5704944 1628736 5704920 1628648 5705608 1629064 5705344 +1628936 5704944 1629376 5704616 1628736 5704920 1629064 5705344 +1628736 5704920 1628312 5705744 1628648 5705608 1629064 5705344 +1628936 5704944 1629312 5704752 1629376 5704616 1628736 5704920 +1627992 5704624 1628736 5704920 1628392 5703960 1628360 5703944 +1628936 5704944 1628736 5704920 1629064 5705344 1629120 5704920 +1628736 5704920 1628544 5704832 1627992 5704624 1627776 5705560 +1628736 5704920 1628392 5703960 1628544 5704832 1627776 5705560 +1628544 5704832 1628392 5703960 1627992 5704624 1627776 5705560 +1628736 5704920 1628544 5704832 1627776 5705560 1628312 5705744 +1628736 5704920 1628392 5703960 1628544 5704832 1628312 5705744 +1628544 5704832 1627992 5704624 1627776 5705560 1628312 5705744 +1628736 5704920 1628544 5704832 1628312 5705744 1628648 5705608 +1628736 5704920 1628392 5703960 1628544 5704832 1628648 5705608 +1628544 5704832 1627776 5705560 1628312 5705744 1628648 5705608 +1627992 5704624 1627528 5705000 1627776 5705560 1628544 5704832 +1628312 5705744 1628432 5705728 1628648 5705608 1628544 5704832 +1628312 5705744 1628432 5705728 1628544 5704832 1627776 5705560 +1628648 5705608 1628736 5704920 1628544 5704832 1628432 5705728 +1628392 5703960 1628544 5704832 1628736 5704920 1628592 5703896 +1628544 5704832 1628648 5705608 1628736 5704920 1628592 5703896 +1628736 5704920 1628544 5704832 1628648 5705608 1629064 5705344 +1628392 5703960 1627992 5704624 1628544 5704832 1628592 5703896 +1628736 5704920 1628760 5703880 1628592 5703896 1628544 5704832 +1628736 5704920 1628760 5703880 1628544 5704832 1628648 5705608 +1628592 5703896 1628392 5703960 1628544 5704832 1628760 5703880 +1628736 5704920 1629008 5703912 1628760 5703880 1628544 5704832 +1628736 5704920 1629008 5703912 1628544 5704832 1628648 5705608 +1628736 5704920 1629376 5704616 1629008 5703912 1628544 5704832 +1628760 5703880 1628592 5703896 1628544 5704832 1629008 5703912 +1627992 5704624 1628544 5704832 1628392 5703960 1628360 5703944 +1628544 5704832 1628120 5704736 1627776 5705560 1628312 5705744 +1627992 5704624 1628120 5704736 1628544 5704832 1628392 5703960 +1628544 5704832 1628120 5704736 1628312 5705744 1628432 5705728 +1627776 5705560 1628120 5704736 1627992 5704624 1627528 5705000 +1627992 5704624 1627568 5704840 1627528 5705000 1628120 5704736 +1627528 5705000 1627776 5705560 1628120 5704736 1627568 5704840 +1627992 5704624 1627552 5704744 1627568 5704840 1628120 5704736 +1628544 5704832 1628392 5703960 1628120 5704736 1628312 5705744 +1628544 5704832 1628592 5703896 1628392 5703960 1628120 5704736 +1628120 5704736 1627528 5705000 1627776 5705560 1628312 5705744 +1627992 5704624 1627568 5704840 1628120 5704736 1628392 5703960 +1627776 5705560 1628120 5704736 1627528 5705000 1627512 5705016 +1627992 5704624 1628120 5704736 1628392 5703960 1628360 5703944 +1628120 5704736 1628024 5704664 1627568 5704840 1627528 5705000 +1627568 5704840 1628024 5704664 1627992 5704624 1627552 5704744 +1627992 5704624 1628024 5704664 1628120 5704736 1628392 5703960 +1629008 5703912 1628688 5704264 1628544 5704832 1628736 5704920 +1629008 5703912 1628760 5703880 1628688 5704264 1628736 5704920 +1628688 5704264 1628760 5703880 1628544 5704832 1628736 5704920 +1629008 5703912 1628688 5704264 1628736 5704920 1629376 5704616 +1629008 5703912 1628760 5703880 1628688 5704264 1629376 5704616 +1628736 5704920 1628936 5704944 1629376 5704616 1628688 5704264 +1628688 5704264 1628544 5704832 1628736 5704920 1628936 5704944 +1629376 5704616 1629008 5703912 1628688 5704264 1628936 5704944 +1629008 5703912 1628688 5704264 1629376 5704616 1629288 5704040 +1629008 5703912 1628760 5703880 1628688 5704264 1629288 5704040 +1628688 5704264 1628936 5704944 1629376 5704616 1629288 5704040 +1628544 5704832 1628688 5704264 1628760 5703880 1628592 5703896 +1628688 5704264 1629008 5703912 1628760 5703880 1628592 5703896 +1628544 5704832 1628736 5704920 1628688 5704264 1628592 5703896 +1628544 5704832 1628688 5704264 1628592 5703896 1628392 5703960 +1628544 5704832 1628736 5704920 1628688 5704264 1628392 5703960 +1628544 5704832 1628688 5704264 1628392 5703960 1628120 5704736 +1628392 5703960 1627992 5704624 1628120 5704736 1628688 5704264 +1628544 5704832 1628736 5704920 1628688 5704264 1628120 5704736 +1628688 5704264 1628592 5703896 1628392 5703960 1627992 5704624 +1628120 5704736 1628544 5704832 1628688 5704264 1627992 5704624 +1627992 5704624 1628024 5704664 1628120 5704736 1628688 5704264 +1628688 5704264 1628760 5703880 1628592 5703896 1628392 5703960 +1628936 5704944 1629312 5704752 1629376 5704616 1628688 5704264 +1628936 5704944 1629312 5704752 1628688 5704264 1628736 5704920 +1628936 5704944 1629240 5704840 1629312 5704752 1628688 5704264 +1628936 5704944 1629120 5704920 1629240 5704840 1628688 5704264 +1628936 5704944 1629240 5704840 1628688 5704264 1628736 5704920 +1629376 5704616 1629288 5704040 1628688 5704264 1629312 5704752 +1629312 5704752 1629376 5704616 1628688 5704264 1629240 5704840 +1628392 5703960 1628360 5703944 1627992 5704624 1628688 5704264 +1629376 5704616 1629456 5704296 1629288 5704040 1628688 5704264 +1629376 5704616 1629456 5704296 1628688 5704264 1629312 5704752 +1629288 5704040 1629008 5703912 1628688 5704264 1629456 5704296 +1629456 5704296 1629392 5704120 1629288 5704040 1628688 5704264 +1628688 5704264 1628896 5704264 1629288 5704040 1629008 5703912 +1628688 5704264 1628896 5704264 1629008 5703912 1628760 5703880 +1628688 5704264 1628896 5704264 1628760 5703880 1628592 5703896 +1628688 5704264 1629456 5704296 1628896 5704264 1628760 5703880 +1628896 5704264 1629456 5704296 1629288 5704040 1629008 5703912 +1628896 5704264 1629288 5704040 1629008 5703912 1628760 5703880 +1629288 5704040 1628896 5704264 1629456 5704296 1629392 5704120 +1629288 5704040 1629008 5703912 1628896 5704264 1629392 5704120 +1628896 5704264 1628688 5704264 1629456 5704296 1629392 5704120 +1629456 5704296 1629432 5704184 1629392 5704120 1628896 5704264 +1629456 5704296 1628896 5704264 1628688 5704264 1629376 5704616 +1628896 5704264 1628760 5703880 1628688 5704264 1629376 5704616 +1629456 5704296 1629392 5704120 1628896 5704264 1629376 5704616 +1628688 5704264 1629312 5704752 1629376 5704616 1628896 5704264 +1628688 5704264 1629312 5704752 1628896 5704264 1628760 5703880 +1628688 5704264 1629240 5704840 1629312 5704752 1628896 5704264 +1628688 5704264 1629240 5704840 1628896 5704264 1628760 5703880 +1628688 5704264 1628936 5704944 1629240 5704840 1628896 5704264 +1628688 5704264 1628936 5704944 1628896 5704264 1628760 5703880 +1628936 5704944 1629120 5704920 1629240 5704840 1628896 5704264 +1628688 5704264 1628736 5704920 1628936 5704944 1628896 5704264 +1628688 5704264 1628736 5704920 1628896 5704264 1628760 5703880 +1628936 5704944 1629120 5704920 1628896 5704264 1628736 5704920 +1628688 5704264 1628544 5704832 1628736 5704920 1628896 5704264 +1629312 5704752 1629376 5704616 1628896 5704264 1629240 5704840 +1629240 5704840 1629312 5704752 1628896 5704264 1629120 5704920 +1629376 5704616 1629456 5704296 1628896 5704264 1629312 5704752 +1628896 5704264 1629016 5704288 1629456 5704296 1629392 5704120 +1629016 5704288 1629376 5704616 1629456 5704296 1629392 5704120 +1628896 5704264 1629376 5704616 1629016 5704288 1629392 5704120 +1628896 5704264 1629016 5704288 1629392 5704120 1629288 5704040 +1628896 5704264 1629016 5704288 1629288 5704040 1629008 5703912 +1628896 5704264 1629376 5704616 1629016 5704288 1629008 5703912 +1629016 5704288 1629456 5704296 1629392 5704120 1629288 5704040 +1628896 5704264 1629016 5704288 1629008 5703912 1628760 5703880 +1629016 5704288 1629392 5704120 1629288 5704040 1629008 5703912 +1629456 5704296 1629432 5704184 1629392 5704120 1629016 5704288 +1629456 5704296 1629432 5704184 1629016 5704288 1629376 5704616 +1629392 5704120 1629288 5704040 1629016 5704288 1629432 5704184 +1629376 5704616 1629016 5704288 1628896 5704264 1629312 5704752 +1629376 5704616 1629456 5704296 1629016 5704288 1629312 5704752 +1629016 5704288 1629008 5703912 1628896 5704264 1629312 5704752 +1628896 5704264 1629240 5704840 1629312 5704752 1629016 5704288 +1628896 5704264 1629240 5704840 1629016 5704288 1629008 5703912 +1628896 5704264 1629120 5704920 1629240 5704840 1629016 5704288 +1628896 5704264 1628936 5704944 1629120 5704920 1629016 5704288 +1628896 5704264 1628736 5704920 1628936 5704944 1629016 5704288 +1628896 5704264 1628936 5704944 1629016 5704288 1629008 5703912 +1629240 5704840 1629312 5704752 1629016 5704288 1629120 5704920 +1629120 5704920 1629240 5704840 1629016 5704288 1628936 5704944 +1629312 5704752 1629376 5704616 1629016 5704288 1629240 5704840 +1629016 5704288 1629120 5704328 1629456 5704296 1629432 5704184 +1629016 5704288 1629376 5704616 1629120 5704328 1629432 5704184 +1629376 5704616 1629120 5704328 1629016 5704288 1629312 5704752 +1629120 5704328 1629432 5704184 1629016 5704288 1629312 5704752 +1629120 5704328 1629376 5704616 1629456 5704296 1629432 5704184 +1629376 5704616 1629456 5704296 1629120 5704328 1629312 5704752 +1629016 5704288 1629120 5704328 1629432 5704184 1629392 5704120 +1629120 5704328 1629456 5704296 1629432 5704184 1629392 5704120 +1629016 5704288 1629312 5704752 1629120 5704328 1629392 5704120 +1629016 5704288 1629120 5704328 1629392 5704120 1629288 5704040 +1629016 5704288 1629312 5704752 1629120 5704328 1629288 5704040 +1629016 5704288 1629120 5704328 1629288 5704040 1629008 5703912 +1629120 5704328 1629432 5704184 1629392 5704120 1629288 5704040 +1629016 5704288 1629240 5704840 1629312 5704752 1629120 5704328 +1629016 5704288 1629240 5704840 1629120 5704328 1629288 5704040 +1629312 5704752 1629376 5704616 1629120 5704328 1629240 5704840 +1629016 5704288 1629120 5704920 1629240 5704840 1629120 5704328 +1629016 5704288 1629120 5704920 1629120 5704328 1629288 5704040 +1629016 5704288 1628936 5704944 1629120 5704920 1629120 5704328 +1629016 5704288 1628936 5704944 1629120 5704328 1629288 5704040 +1629016 5704288 1628896 5704264 1628936 5704944 1629120 5704328 +1629120 5704920 1629240 5704840 1629120 5704328 1628936 5704944 +1629240 5704840 1629312 5704752 1629120 5704328 1629120 5704920 +1629120 5704328 1629136 5704344 1629456 5704296 1629432 5704184 +1629136 5704344 1629376 5704616 1629456 5704296 1629432 5704184 +1629120 5704328 1629136 5704344 1629432 5704184 1629392 5704120 +1629136 5704344 1629456 5704296 1629432 5704184 1629392 5704120 +1629120 5704328 1629376 5704616 1629136 5704344 1629392 5704120 +1629376 5704616 1629136 5704344 1629120 5704328 1629312 5704752 +1629376 5704616 1629456 5704296 1629136 5704344 1629312 5704752 +1629120 5704328 1629240 5704840 1629312 5704752 1629136 5704344 +1629136 5704344 1629392 5704120 1629120 5704328 1629240 5704840 +1629312 5704752 1629376 5704616 1629136 5704344 1629240 5704840 +1629120 5704328 1629136 5704344 1629392 5704120 1629288 5704040 +1629120 5704328 1629120 5704920 1629240 5704840 1629136 5704344 +1629240 5704840 1629312 5704752 1629136 5704344 1629120 5704920 +1629120 5704328 1629120 5704920 1629136 5704344 1629392 5704120 +1629120 5704328 1628936 5704944 1629120 5704920 1629136 5704344 +1629120 5704328 1628936 5704944 1629136 5704344 1629392 5704120 +1629120 5704328 1629016 5704288 1628936 5704944 1629136 5704344 +1629120 5704328 1629016 5704288 1629136 5704344 1629392 5704120 +1629016 5704288 1628896 5704264 1628936 5704944 1629136 5704344 +1628936 5704944 1629120 5704920 1629136 5704344 1629016 5704288 +1629120 5704920 1629240 5704840 1629136 5704344 1628936 5704944 +1628936 5704944 1629128 5704416 1629136 5704344 1629016 5704288 +1629128 5704416 1629120 5704920 1629136 5704344 1629016 5704288 +1628936 5704944 1629120 5704920 1629128 5704416 1629016 5704288 +1628936 5704944 1629128 5704416 1629016 5704288 1628896 5704264 +1628936 5704944 1629120 5704920 1629128 5704416 1628896 5704264 +1628936 5704944 1629128 5704416 1628896 5704264 1628736 5704920 +1628936 5704944 1629120 5704920 1629128 5704416 1628736 5704920 +1629128 5704416 1629016 5704288 1628896 5704264 1628736 5704920 +1628896 5704264 1628688 5704264 1628736 5704920 1629128 5704416 +1629128 5704416 1629136 5704344 1629016 5704288 1628896 5704264 +1629136 5704344 1629120 5704328 1629016 5704288 1629128 5704416 +1629136 5704344 1629120 5704328 1629128 5704416 1629120 5704920 +1629016 5704288 1628896 5704264 1629128 5704416 1629120 5704328 +1629136 5704344 1629128 5704416 1629120 5704920 1629240 5704840 +1629136 5704344 1629120 5704328 1629128 5704416 1629240 5704840 +1629136 5704344 1629128 5704416 1629240 5704840 1629312 5704752 +1629136 5704344 1629120 5704328 1629128 5704416 1629312 5704752 +1629136 5704344 1629128 5704416 1629312 5704752 1629376 5704616 +1629136 5704344 1629120 5704328 1629128 5704416 1629376 5704616 +1629136 5704344 1629128 5704416 1629376 5704616 1629456 5704296 +1629136 5704344 1629128 5704416 1629456 5704296 1629432 5704184 +1629136 5704344 1629120 5704328 1629128 5704416 1629456 5704296 +1629128 5704416 1629240 5704840 1629312 5704752 1629376 5704616 +1629128 5704416 1629312 5704752 1629376 5704616 1629456 5704296 +1629128 5704416 1628936 5704944 1629120 5704920 1629240 5704840 +1629128 5704416 1629120 5704920 1629240 5704840 1629312 5704752 +1629128 5704416 1629056 5704520 1628936 5704944 1629120 5704920 +1629128 5704416 1629056 5704520 1629120 5704920 1629240 5704840 +1629128 5704416 1628736 5704920 1629056 5704520 1629240 5704840 +1629056 5704520 1628936 5704944 1629120 5704920 1629240 5704840 +1628736 5704920 1629056 5704520 1629128 5704416 1628896 5704264 +1629056 5704520 1629240 5704840 1629128 5704416 1628896 5704264 +1629128 5704416 1629016 5704288 1628896 5704264 1629056 5704520 +1629128 5704416 1629016 5704288 1629056 5704520 1629240 5704840 +1628736 5704920 1629056 5704520 1628896 5704264 1628688 5704264 +1628896 5704264 1628688 5704264 1629056 5704520 1629016 5704288 +1628736 5704920 1629056 5704520 1628688 5704264 1628544 5704832 +1628688 5704264 1628120 5704736 1628544 5704832 1629056 5704520 +1629056 5704520 1628896 5704264 1628688 5704264 1628544 5704832 +1629128 5704416 1629120 5704328 1629016 5704288 1629056 5704520 +1629056 5704520 1628736 5704920 1628936 5704944 1629120 5704920 +1628736 5704920 1628936 5704944 1629056 5704520 1628544 5704832 +1629128 5704416 1629056 5704520 1629240 5704840 1629312 5704752 +1629128 5704416 1629056 5704520 1629312 5704752 1629376 5704616 +1629128 5704416 1629056 5704520 1629376 5704616 1629456 5704296 +1629056 5704520 1629120 5704920 1629240 5704840 1629312 5704752 +1629128 5704416 1629016 5704288 1629056 5704520 1629376 5704616 +1629056 5704520 1629240 5704840 1629312 5704752 1629376 5704616 +1628544 5704832 1628976 5704584 1629056 5704520 1628688 5704264 +1628544 5704832 1628976 5704584 1628688 5704264 1628120 5704736 +1629056 5704520 1628896 5704264 1628688 5704264 1628976 5704584 +1629056 5704520 1629016 5704288 1628896 5704264 1628976 5704584 +1628688 5704264 1628544 5704832 1628976 5704584 1628896 5704264 +1628544 5704832 1628736 5704920 1628976 5704584 1628688 5704264 +1628976 5704584 1628736 5704920 1629056 5704520 1628896 5704264 +1629056 5704520 1628976 5704584 1628736 5704920 1628936 5704944 +1628976 5704584 1628544 5704832 1628736 5704920 1628936 5704944 +1629056 5704520 1628976 5704584 1628936 5704944 1629120 5704920 +1629056 5704520 1628976 5704584 1629120 5704920 1629240 5704840 +1629056 5704520 1628976 5704584 1629240 5704840 1629312 5704752 +1628976 5704584 1628936 5704944 1629120 5704920 1629240 5704840 +1629056 5704520 1628896 5704264 1628976 5704584 1629240 5704840 +1628976 5704584 1628736 5704920 1628936 5704944 1629120 5704920 +1628544 5704832 1628800 5704648 1628688 5704264 1628120 5704736 +1628688 5704264 1628800 5704648 1628976 5704584 1628896 5704264 +1628688 5704264 1628544 5704832 1628800 5704648 1628896 5704264 +1628976 5704584 1629056 5704520 1628896 5704264 1628800 5704648 +1628800 5704648 1628544 5704832 1628976 5704584 1628896 5704264 +1628976 5704584 1628800 5704648 1628544 5704832 1628736 5704920 +1628800 5704648 1628688 5704264 1628544 5704832 1628736 5704920 +1628976 5704584 1628800 5704648 1628736 5704920 1628936 5704944 +1628976 5704584 1628896 5704264 1628800 5704648 1628936 5704944 +1628800 5704648 1628544 5704832 1628736 5704920 1628936 5704944 +1628976 5704584 1628800 5704648 1628936 5704944 1629120 5704920 +1628800 5704648 1628672 5704648 1628544 5704832 1628736 5704920 +1628800 5704648 1628688 5704264 1628672 5704648 1628736 5704920 +1628688 5704264 1628672 5704648 1628800 5704648 1628896 5704264 +1628544 5704832 1628672 5704648 1628688 5704264 1628120 5704736 +1628688 5704264 1627992 5704624 1628120 5704736 1628672 5704648 +1628672 5704648 1628120 5704736 1628544 5704832 1628736 5704920 +1628672 5704648 1628800 5704648 1628688 5704264 1628120 5704736 +1628800 5704648 1628672 5704648 1628736 5704920 1628936 5704944 +1628672 5704648 1628552 5704608 1628120 5704736 1628544 5704832 +1628552 5704608 1628688 5704264 1628120 5704736 1628544 5704832 +1628120 5704736 1628552 5704608 1628688 5704264 1627992 5704624 +1628688 5704264 1628392 5703960 1627992 5704624 1628552 5704608 +1628120 5704736 1628544 5704832 1628552 5704608 1627992 5704624 +1628552 5704608 1628672 5704648 1628688 5704264 1628392 5703960 +1628688 5704264 1628592 5703896 1628392 5703960 1628552 5704608 +1627992 5704624 1628120 5704736 1628552 5704608 1628392 5703960 +1628672 5704648 1628552 5704608 1628544 5704832 1628736 5704920 +1628672 5704648 1628688 5704264 1628552 5704608 1628544 5704832 +1628688 5704264 1628552 5704608 1628672 5704648 1628800 5704648 +1628120 5704736 1628552 5704608 1627992 5704624 1628024 5704664 +1628120 5704736 1628544 5704832 1628552 5704608 1628024 5704664 +1628552 5704608 1628392 5703960 1627992 5704624 1628024 5704664 +1628392 5703960 1628360 5703944 1627992 5704624 1628552 5704608 +1628392 5703960 1628328 5704512 1628552 5704608 1628688 5704264 +1628328 5704512 1627992 5704624 1628552 5704608 1628688 5704264 +1628552 5704608 1628672 5704648 1628688 5704264 1628328 5704512 +1628392 5703960 1628328 5704512 1628688 5704264 1628592 5703896 +1628552 5704608 1628328 5704512 1627992 5704624 1628024 5704664 +1628552 5704608 1628688 5704264 1628328 5704512 1628024 5704664 +1628552 5704608 1628328 5704512 1628024 5704664 1628120 5704736 +1628552 5704608 1628328 5704512 1628120 5704736 1628544 5704832 +1628552 5704608 1628688 5704264 1628328 5704512 1628544 5704832 +1628552 5704608 1628328 5704512 1628544 5704832 1628672 5704648 +1628328 5704512 1627992 5704624 1628024 5704664 1628120 5704736 +1628328 5704512 1628024 5704664 1628120 5704736 1628544 5704832 +1627992 5704624 1628328 5704512 1628392 5703960 1628360 5703944 +1627992 5704624 1628328 5704512 1628360 5703944 1627752 5704352 +1628360 5703944 1628064 5703824 1627752 5704352 1628328 5704512 +1628328 5704512 1628392 5703960 1628360 5703944 1627752 5704352 +1628328 5704512 1627752 5704352 1627992 5704624 1628024 5704664 +1628392 5703960 1628360 5703944 1628328 5704512 1628688 5704264 +1627752 5704352 1628240 5704440 1628360 5703944 1628064 5703824 +1628360 5703944 1628168 5703832 1628064 5703824 1628240 5704440 +1628064 5703824 1627752 5704352 1628240 5704440 1628168 5703832 +1627752 5704352 1628240 5704440 1628064 5703824 1627832 5703888 +1628328 5704512 1628240 5704440 1627752 5704352 1627992 5704624 +1628360 5703944 1628240 5704440 1628328 5704512 1628392 5703960 +1628328 5704512 1628240 5704440 1627992 5704624 1628024 5704664 +1628240 5704440 1627752 5704352 1627992 5704624 1628024 5704664 +1628328 5704512 1628240 5704440 1628024 5704664 1628120 5704736 +1628328 5704512 1628240 5704440 1628120 5704736 1628544 5704832 +1628240 5704440 1627992 5704624 1628024 5704664 1628120 5704736 +1628328 5704512 1628392 5703960 1628240 5704440 1628120 5704736 +1628328 5704512 1628688 5704264 1628392 5703960 1628240 5704440 +1628328 5704512 1628552 5704608 1628688 5704264 1628240 5704440 +1628688 5704264 1628592 5703896 1628392 5703960 1628240 5704440 +1628392 5703960 1628360 5703944 1628240 5704440 1628688 5704264 +1628328 5704512 1628688 5704264 1628240 5704440 1628120 5704736 +1627752 5704352 1627992 5704624 1628240 5704440 1628064 5703824 +1628240 5704440 1628392 5703960 1628360 5703944 1628168 5703832 +1628064 5703824 1628224 5704400 1628240 5704440 1628168 5703832 +1628240 5704440 1628360 5703944 1628168 5703832 1628224 5704400 +1628168 5703832 1628064 5703824 1628224 5704400 1628360 5703944 +1627752 5704352 1628224 5704400 1628064 5703824 1627832 5703888 +1627752 5704352 1628224 5704400 1627832 5703888 1627624 5704144 +1627752 5704352 1628240 5704440 1628224 5704400 1627832 5703888 +1628064 5703824 1627832 5703888 1628224 5704400 1628168 5703832 +1628240 5704440 1628224 5704400 1627752 5704352 1627992 5704624 +1628240 5704440 1628224 5704400 1627992 5704624 1628024 5704664 +1628224 5704400 1627832 5703888 1627752 5704352 1627992 5704624 +1628224 5704400 1627992 5704624 1628240 5704440 1628360 5703944 +1628240 5704440 1628392 5703960 1628360 5703944 1628224 5704400 +1628360 5703944 1628168 5703832 1628224 5704400 1628392 5703960 +1628240 5704440 1628688 5704264 1628392 5703960 1628224 5704400 +1628688 5704264 1628592 5703896 1628392 5703960 1628224 5704400 +1628240 5704440 1628328 5704512 1628688 5704264 1628224 5704400 +1628328 5704512 1628552 5704608 1628688 5704264 1628224 5704400 +1628688 5704264 1628392 5703960 1628224 5704400 1628328 5704512 +1628240 5704440 1628328 5704512 1628224 5704400 1627992 5704624 +1628392 5703960 1628360 5703944 1628224 5704400 1628688 5704264 +1628168 5703832 1628208 5704296 1628224 5704400 1628360 5703944 +1628224 5704400 1628392 5703960 1628360 5703944 1628208 5704296 +1628360 5703944 1628168 5703832 1628208 5704296 1628392 5703960 +1628208 5704296 1628064 5703824 1628224 5704400 1628392 5703960 +1628224 5704400 1628208 5704296 1628064 5703824 1627832 5703888 +1628224 5704400 1628208 5704296 1627832 5703888 1627752 5704352 +1627832 5703888 1627624 5704144 1627752 5704352 1628208 5704296 +1628224 5704400 1628208 5704296 1627752 5704352 1627992 5704624 +1628224 5704400 1628392 5703960 1628208 5704296 1627752 5704352 +1628208 5704296 1628064 5703824 1627832 5703888 1627752 5704352 +1628208 5704296 1628168 5703832 1628064 5703824 1627832 5703888 +1628168 5703832 1628064 5703824 1628208 5704296 1628360 5703944 +1628224 5704400 1628688 5704264 1628392 5703960 1628208 5704296 +1628392 5703960 1628360 5703944 1628208 5704296 1628688 5704264 +1628688 5704264 1628592 5703896 1628392 5703960 1628208 5704296 +1628224 5704400 1628328 5704512 1628688 5704264 1628208 5704296 +1628328 5704512 1628552 5704608 1628688 5704264 1628208 5704296 +1628224 5704400 1628328 5704512 1628208 5704296 1627752 5704352 +1628224 5704400 1628240 5704440 1628328 5704512 1628208 5704296 +1628688 5704264 1628392 5703960 1628208 5704296 1628328 5704512 +1628208 5704296 1628288 5704216 1628392 5703960 1628360 5703944 +1628208 5704296 1628288 5704216 1628360 5703944 1628168 5703832 +1628288 5704216 1628392 5703960 1628360 5703944 1628168 5703832 +1628392 5703960 1628288 5704216 1628688 5704264 1628592 5703896 +1628208 5704296 1628688 5704264 1628288 5704216 1628168 5703832 +1628208 5704296 1628288 5704216 1628168 5703832 1628064 5703824 +1628288 5704216 1628360 5703944 1628168 5703832 1628064 5703824 +1628208 5704296 1628288 5704216 1628064 5703824 1627832 5703888 +1628208 5704296 1628688 5704264 1628288 5704216 1628064 5703824 +1628288 5704216 1628688 5704264 1628392 5703960 1628360 5703944 +1628688 5704264 1628288 5704216 1628208 5704296 1628328 5704512 +1628688 5704264 1628288 5704216 1628328 5704512 1628552 5704608 +1628208 5704296 1628224 5704400 1628328 5704512 1628288 5704216 +1628688 5704264 1628392 5703960 1628288 5704216 1628328 5704512 +1628288 5704216 1628064 5703824 1628208 5704296 1628224 5704400 +1628224 5704400 1628240 5704440 1628328 5704512 1628288 5704216 +1628328 5704512 1628688 5704264 1628288 5704216 1628224 5704400 +1628392 5703960 1628344 5704208 1628688 5704264 1628592 5703896 +1628688 5704264 1628344 5704208 1628288 5704216 1628328 5704512 +1628688 5704264 1628344 5704208 1628328 5704512 1628552 5704608 +1628688 5704264 1628392 5703960 1628344 5704208 1628328 5704512 +1628344 5704208 1628392 5703960 1628288 5704216 1628328 5704512 +1628288 5704216 1628344 5704208 1628392 5703960 1628360 5703944 +1628288 5704216 1628344 5704208 1628360 5703944 1628168 5703832 +1628288 5704216 1628328 5704512 1628344 5704208 1628360 5703944 +1628344 5704208 1628688 5704264 1628392 5703960 1628360 5703944 +1628288 5704216 1628224 5704400 1628328 5704512 1628344 5704208 +1628288 5704216 1628208 5704296 1628224 5704400 1628344 5704208 +1628288 5704216 1628224 5704400 1628344 5704208 1628360 5703944 +1628328 5704512 1628688 5704264 1628344 5704208 1628224 5704400 +1628224 5704400 1628240 5704440 1628328 5704512 1628344 5704208 +1628328 5704512 1628688 5704264 1628344 5704208 1628240 5704440 +1628224 5704400 1628240 5704440 1628344 5704208 1628288 5704216 +1620552 5714440 1627208 5706816 1627640 5705584 1627576 5705568 +1620552 5714440 1627208 5706816 1627576 5705568 1620512 5714368 +1627576 5705568 1620160 5713848 1620512 5714368 1627208 5706816 +1620512 5714368 1620552 5714440 1627208 5706816 1620160 5713848 +1627208 5706816 1627640 5705584 1627576 5705568 1620160 5713848 +1627576 5705568 1620104 5713768 1620160 5713848 1627208 5706816 +1620160 5713848 1620512 5714368 1627208 5706816 1620104 5713768 +1627576 5705568 1620104 5713768 1627208 5706816 1627640 5705584 +1620552 5714440 1628312 5705744 1627208 5706816 1620512 5714368 +1627576 5705568 1627536 5705536 1620104 5713768 1627208 5706816 +1627536 5705536 1620040 5713712 1620104 5713768 1627208 5706816 +1627576 5705568 1627536 5705536 1627208 5706816 1627640 5705584 +1620104 5713768 1620160 5713848 1627208 5706816 1620040 5713712 +1627536 5705536 1620040 5713712 1627208 5706816 1627576 5705568 +1620040 5713712 1620072 5713752 1620104 5713768 1627208 5706816 +1627640 5705584 1627208 5706816 1628312 5705744 1627776 5705560 +1627208 5706816 1628312 5705744 1627640 5705584 1627576 5705568 +1628312 5705744 1627208 5706816 1620552 5714440 1629752 5706192 +1627208 5706816 1620512 5714368 1620552 5714440 1629752 5706192 +1628312 5705744 1627208 5706816 1629752 5706192 1628432 5705728 +1620552 5714440 1627312 5719640 1629752 5706192 1627208 5706816 +1620552 5714440 1627312 5719640 1627208 5706816 1620512 5714368 +1620552 5714440 1620560 5714512 1627312 5719640 1627208 5706816 +1627312 5719640 1627336 5719640 1629752 5706192 1627208 5706816 +1627312 5719640 1627336 5719640 1627208 5706816 1620552 5714440 +1627336 5719640 1629808 5706208 1629752 5706192 1627208 5706816 +1627336 5719640 1627384 5719672 1629808 5706208 1627208 5706816 +1627336 5719640 1629808 5706208 1627208 5706816 1627312 5719640 +1627208 5706816 1629808 5706208 1629752 5706192 1628432 5705728 +1620160 5713848 1620272 5714120 1620512 5714368 1627208 5706816 +1629752 5706192 1629656 5706024 1628432 5705728 1627208 5706816 +1628312 5705744 1627640 5705584 1627208 5706816 1628432 5705728 +1627536 5705536 1618184 5707576 1620040 5713712 1627208 5706816 +1620040 5713712 1620104 5713768 1627208 5706816 1618184 5707576 +1618184 5707576 1618264 5711808 1620040 5713712 1627208 5706816 +1627536 5705536 1618184 5707576 1627208 5706816 1627576 5705568 +1627536 5705536 1621944 5703896 1618184 5707576 1627208 5706816 +1621944 5703896 1621912 5703896 1618184 5707576 1627208 5706816 +1627536 5705536 1621944 5703896 1627208 5706816 1627576 5705568 +1627536 5705536 1627256 5705232 1621944 5703896 1627208 5706816 +1627256 5705232 1627208 5705152 1621944 5703896 1627208 5706816 +1627536 5705536 1627456 5705408 1627256 5705232 1627208 5706816 +1627536 5705536 1627256 5705232 1627208 5706816 1627576 5705568 +1627208 5705152 1621968 5703872 1621944 5703896 1627208 5706816 +1627208 5705152 1622032 5703808 1621968 5703872 1627208 5706816 +1627208 5705152 1622032 5703808 1627208 5706816 1627256 5705232 +1621968 5703872 1621944 5703896 1627208 5706816 1622032 5703808 +1627256 5705232 1627208 5705152 1627208 5706816 1627536 5705536 +1627208 5705152 1623616 5702904 1622032 5703808 1627208 5706816 +1618184 5707576 1620040 5713712 1627208 5706816 1621944 5703896 +1621944 5703896 1618184 5707576 1627208 5706816 1621968 5703872 +1627640 5705584 1627248 5706768 1628312 5705744 1627776 5705560 +1627208 5706816 1627248 5706768 1627640 5705584 1627576 5705568 +1627208 5706816 1627248 5706768 1627576 5705568 1627536 5705536 +1627208 5706816 1627248 5706768 1627536 5705536 1627256 5705232 +1627248 5706768 1627576 5705568 1627536 5705536 1627256 5705232 +1627536 5705536 1627456 5705408 1627256 5705232 1627248 5706768 +1627248 5706768 1627640 5705584 1627576 5705568 1627536 5705536 +1627208 5706816 1628312 5705744 1627248 5706768 1627256 5705232 +1627248 5706768 1628312 5705744 1627640 5705584 1627576 5705568 +1628312 5705744 1627248 5706768 1627208 5706816 1628432 5705728 +1627208 5706816 1629752 5706192 1628432 5705728 1627248 5706768 +1627248 5706768 1627256 5705232 1627208 5706816 1629752 5706192 +1628432 5705728 1628312 5705744 1627248 5706768 1629752 5706192 +1628312 5705744 1627640 5705584 1627248 5706768 1628432 5705728 +1627208 5706816 1629808 5706208 1629752 5706192 1627248 5706768 +1629752 5706192 1629656 5706024 1628432 5705728 1627248 5706768 +1627208 5706816 1627248 5706768 1627256 5705232 1627208 5705152 +1627640 5705584 1627280 5706736 1628312 5705744 1627776 5705560 +1627248 5706768 1627280 5706736 1627640 5705584 1627576 5705568 +1627248 5706768 1627280 5706736 1627576 5705568 1627536 5705536 +1627248 5706768 1627280 5706736 1627536 5705536 1627256 5705232 +1627536 5705536 1627456 5705408 1627256 5705232 1627280 5706736 +1627248 5706768 1627280 5706736 1627256 5705232 1627208 5706816 +1627280 5706736 1627576 5705568 1627536 5705536 1627256 5705232 +1627280 5706736 1627640 5705584 1627576 5705568 1627536 5705536 +1628312 5705744 1627280 5706736 1627248 5706768 1628432 5705728 +1627248 5706768 1629752 5706192 1628432 5705728 1627280 5706736 +1627248 5706768 1627208 5706816 1629752 5706192 1627280 5706736 +1629752 5706192 1628432 5705728 1627280 5706736 1627208 5706816 +1628432 5705728 1628312 5705744 1627280 5706736 1629752 5706192 +1628312 5705744 1627640 5705584 1627280 5706736 1628432 5705728 +1627248 5706768 1627208 5706816 1627280 5706736 1627256 5705232 +1627280 5706736 1628312 5705744 1627640 5705584 1627576 5705568 +1627208 5706816 1629808 5706208 1629752 5706192 1627280 5706736 +1629752 5706192 1629656 5706024 1628432 5705728 1627280 5706736 +1629752 5706192 1627312 5706720 1627280 5706736 1627208 5706816 +1627280 5706736 1627248 5706768 1627208 5706816 1627312 5706720 +1627208 5706816 1629752 5706192 1627312 5706720 1627248 5706768 +1627280 5706736 1627312 5706720 1628432 5705728 1628312 5705744 +1627312 5706720 1628312 5705744 1627280 5706736 1627248 5706768 +1627280 5706736 1627312 5706720 1628312 5705744 1627640 5705584 +1628312 5705744 1627776 5705560 1627640 5705584 1627312 5706720 +1627312 5706720 1628432 5705728 1628312 5705744 1627776 5705560 +1627280 5706736 1627248 5706768 1627312 5706720 1627640 5705584 +1627640 5705584 1627280 5706736 1627312 5706720 1627776 5705560 +1627312 5706720 1629752 5706192 1628432 5705728 1628312 5705744 +1627280 5706736 1627312 5706720 1627640 5705584 1627576 5705568 +1627280 5706736 1627312 5706720 1627576 5705568 1627536 5705536 +1627280 5706736 1627312 5706720 1627536 5705536 1627256 5705232 +1627280 5706736 1627248 5706768 1627312 5706720 1627536 5705536 +1627312 5706720 1627776 5705560 1627640 5705584 1627576 5705568 +1627312 5706720 1627640 5705584 1627576 5705568 1627536 5705536 +1629752 5706192 1627312 5706720 1627208 5706816 1629808 5706208 +1628432 5705728 1627312 5706720 1629752 5706192 1629656 5706024 +1629752 5706192 1628432 5705728 1627312 5706720 1627208 5706816 +1627208 5706816 1627336 5706720 1627312 5706720 1627248 5706768 +1627312 5706720 1627280 5706736 1627248 5706768 1627336 5706720 +1627248 5706768 1627208 5706816 1627336 5706720 1627280 5706736 +1629752 5706192 1627336 5706720 1627208 5706816 1629808 5706208 +1627208 5706816 1627336 5719640 1629808 5706208 1627336 5706720 +1627208 5706816 1629808 5706208 1627336 5706720 1627248 5706768 +1627336 5706720 1629752 5706192 1627312 5706720 1627280 5706736 +1627312 5706720 1627336 5706720 1629752 5706192 1628432 5705728 +1627312 5706720 1627336 5706720 1628432 5705728 1628312 5705744 +1627312 5706720 1627336 5706720 1628312 5705744 1627776 5705560 +1627312 5706720 1627336 5706720 1627776 5705560 1627640 5705584 +1627336 5706720 1628312 5705744 1627776 5705560 1627640 5705584 +1627312 5706720 1627336 5706720 1627640 5705584 1627576 5705568 +1627336 5706720 1627776 5705560 1627640 5705584 1627576 5705568 +1627336 5706720 1628432 5705728 1628312 5705744 1627776 5705560 +1627312 5706720 1627336 5706720 1627576 5705568 1627536 5705536 +1629752 5706192 1629656 5706024 1628432 5705728 1627336 5706720 +1627312 5706720 1627280 5706736 1627336 5706720 1627576 5705568 +1627336 5706720 1629752 5706192 1628432 5705728 1628312 5705744 +1629752 5706192 1628432 5705728 1627336 5706720 1629808 5706208 +1629808 5706208 1627424 5706728 1627208 5706816 1627336 5719640 +1629808 5706208 1627424 5706728 1627336 5719640 1627384 5719672 +1627208 5706816 1627312 5719640 1627336 5719640 1627424 5706728 +1627336 5706720 1627424 5706728 1629808 5706208 1629752 5706192 +1627208 5706816 1627424 5706728 1627336 5706720 1627248 5706768 +1627336 5706720 1627280 5706736 1627248 5706768 1627424 5706728 +1627336 5706720 1627248 5706768 1627424 5706728 1629752 5706192 +1629808 5706208 1629752 5706192 1627424 5706728 1627336 5719640 +1627424 5706728 1627248 5706768 1627208 5706816 1627336 5719640 +1627336 5706720 1627424 5706728 1629752 5706192 1628432 5705728 +1627424 5706728 1629808 5706208 1629752 5706192 1628432 5705728 +1627336 5706720 1627248 5706768 1627424 5706728 1628432 5705728 +1629752 5706192 1629656 5706024 1628432 5705728 1627424 5706728 +1627336 5706720 1627424 5706728 1628432 5705728 1628312 5705744 +1627336 5706720 1627424 5706728 1628312 5705744 1627776 5705560 +1627336 5706720 1627424 5706728 1627776 5705560 1627640 5705584 +1627336 5706720 1627424 5706728 1627640 5705584 1627576 5705568 +1627424 5706728 1627776 5705560 1627640 5705584 1627576 5705568 +1627336 5706720 1627424 5706728 1627576 5705568 1627312 5706720 +1627424 5706728 1628312 5705744 1627776 5705560 1627640 5705584 +1627336 5706720 1627248 5706768 1627424 5706728 1627576 5705568 +1627424 5706728 1628432 5705728 1628312 5705744 1627776 5705560 +1627424 5706728 1629752 5706192 1628432 5705728 1628312 5705744 +1629808 5706208 1627456 5706736 1627336 5719640 1627384 5719672 +1627336 5719640 1627456 5706736 1627424 5706728 1627208 5706816 +1627336 5719640 1627456 5706736 1627208 5706816 1627312 5719640 +1627424 5706728 1627456 5706736 1629808 5706208 1629752 5706192 +1627424 5706728 1627456 5706736 1629752 5706192 1628432 5705728 +1627456 5706736 1629808 5706208 1629752 5706192 1628432 5705728 +1629752 5706192 1629656 5706024 1628432 5705728 1627456 5706736 +1627336 5719640 1629808 5706208 1627456 5706736 1627208 5706816 +1627424 5706728 1627248 5706768 1627208 5706816 1627456 5706736 +1627456 5706736 1628432 5705728 1627424 5706728 1627208 5706816 +1627456 5706736 1627336 5719640 1629808 5706208 1629752 5706192 +1627424 5706728 1627456 5706736 1628432 5705728 1628312 5705744 +1627456 5706736 1629752 5706192 1628432 5705728 1628312 5705744 +1627424 5706728 1627208 5706816 1627456 5706736 1628312 5705744 +1627424 5706728 1627456 5706736 1628312 5705744 1627776 5705560 +1627424 5706728 1627456 5706736 1627776 5705560 1627640 5705584 +1627424 5706728 1627456 5706736 1627640 5705584 1627576 5705568 +1627424 5706728 1627208 5706816 1627456 5706736 1627640 5705584 +1627456 5706736 1628312 5705744 1627776 5705560 1627640 5705584 +1627456 5706736 1628432 5705728 1628312 5705744 1627776 5705560 +1629808 5706208 1627456 5706792 1627336 5719640 1627384 5719672 +1627336 5719640 1627456 5706792 1627456 5706736 1627208 5706816 +1627456 5706736 1627424 5706728 1627208 5706816 1627456 5706792 +1627336 5719640 1627456 5706792 1627208 5706816 1627312 5719640 +1627208 5706816 1627336 5719640 1627456 5706792 1627424 5706728 +1627456 5706792 1629808 5706208 1627456 5706736 1627424 5706728 +1627424 5706728 1627248 5706768 1627208 5706816 1627456 5706792 +1627424 5706728 1627248 5706768 1627456 5706792 1627456 5706736 +1627424 5706728 1627336 5706720 1627248 5706768 1627456 5706792 +1627336 5706720 1627280 5706736 1627248 5706768 1627456 5706792 +1627424 5706728 1627336 5706720 1627456 5706792 1627456 5706736 +1627208 5706816 1627336 5719640 1627456 5706792 1627248 5706768 +1627248 5706768 1627208 5706816 1627456 5706792 1627336 5706720 +1627456 5706736 1627456 5706792 1629808 5706208 1629752 5706192 +1627456 5706736 1627456 5706792 1629752 5706192 1628432 5705728 +1627456 5706736 1627456 5706792 1628432 5705728 1628312 5705744 +1627456 5706792 1629752 5706192 1628432 5705728 1628312 5705744 +1629752 5706192 1629656 5706024 1628432 5705728 1627456 5706792 +1627456 5706736 1627424 5706728 1627456 5706792 1628312 5705744 +1627456 5706792 1627336 5719640 1629808 5706208 1629752 5706192 +1627456 5706792 1629808 5706208 1629752 5706192 1628432 5705728 +1627336 5719640 1629808 5706208 1627456 5706792 1627208 5706816 +1627456 5706736 1627456 5706792 1628312 5705744 1627776 5705560 +1627336 5719640 1627424 5706864 1627208 5706816 1627312 5719640 +1627208 5706816 1620552 5714440 1627312 5719640 1627424 5706864 +1627208 5706816 1620512 5714368 1620552 5714440 1627424 5706864 +1620552 5714440 1620560 5714512 1627312 5719640 1627424 5706864 +1627312 5719640 1627336 5719640 1627424 5706864 1620552 5714440 +1627208 5706816 1627424 5706864 1627456 5706792 1627248 5706768 +1627456 5706792 1627336 5706720 1627248 5706768 1627424 5706864 +1627336 5706720 1627280 5706736 1627248 5706768 1627424 5706864 +1627336 5706720 1627312 5706720 1627280 5706736 1627424 5706864 +1627456 5706792 1627424 5706728 1627336 5706720 1627424 5706864 +1627248 5706768 1627208 5706816 1627424 5706864 1627280 5706736 +1627336 5706720 1627280 5706736 1627424 5706864 1627456 5706792 +1627456 5706792 1627424 5706864 1627336 5719640 1629808 5706208 +1627336 5719640 1627384 5719672 1629808 5706208 1627424 5706864 +1627456 5706792 1627424 5706864 1629808 5706208 1629752 5706192 +1627456 5706792 1627424 5706864 1629752 5706192 1628432 5705728 +1627424 5706864 1627336 5719640 1629808 5706208 1629752 5706192 +1627424 5706864 1629752 5706192 1627456 5706792 1627336 5706720 +1627336 5719640 1629808 5706208 1627424 5706864 1627312 5719640 +1627424 5706864 1627248 5706768 1627208 5706816 1620552 5714440 +1627312 5719640 1627368 5706952 1620552 5714440 1620560 5714512 +1620552 5714440 1627368 5706952 1627424 5706864 1627208 5706816 +1620552 5714440 1627368 5706952 1627208 5706816 1620512 5714368 +1627208 5706816 1620160 5713848 1620512 5714368 1627368 5706952 +1627208 5706816 1620104 5713768 1620160 5713848 1627368 5706952 +1620160 5713848 1620512 5714368 1627368 5706952 1620104 5713768 +1627208 5706816 1620040 5713712 1620104 5713768 1627368 5706952 +1620512 5714368 1620552 5714440 1627368 5706952 1620160 5713848 +1620552 5714440 1627312 5719640 1627368 5706952 1620512 5714368 +1627368 5706952 1627424 5706864 1627208 5706816 1620104 5713768 +1627424 5706864 1627368 5706952 1627312 5719640 1627336 5719640 +1627368 5706952 1620552 5714440 1627312 5719640 1627336 5719640 +1620160 5713848 1620272 5714120 1620512 5714368 1627368 5706952 +1627424 5706864 1627368 5706952 1627336 5719640 1629808 5706208 +1627336 5719640 1627384 5719672 1629808 5706208 1627368 5706952 +1627368 5706952 1627312 5719640 1627336 5719640 1629808 5706208 +1627424 5706864 1627368 5706952 1629808 5706208 1629752 5706192 +1627424 5706864 1627368 5706952 1629752 5706192 1627456 5706792 +1627368 5706952 1627336 5719640 1629808 5706208 1629752 5706192 +1627368 5706952 1629752 5706192 1627424 5706864 1627208 5706816 +1627424 5706864 1627248 5706768 1627208 5706816 1627368 5706952 +1627208 5706816 1620104 5713768 1627368 5706952 1627248 5706768 +1627424 5706864 1627280 5706736 1627248 5706768 1627368 5706952 +1627424 5706864 1627248 5706768 1627368 5706952 1629752 5706192 +1627368 5706952 1627328 5706984 1620104 5713768 1620160 5713848 +1627368 5706952 1627328 5706984 1620160 5713848 1620512 5714368 +1627328 5706984 1620104 5713768 1620160 5713848 1620512 5714368 +1620104 5713768 1627328 5706984 1627208 5706816 1620040 5713712 +1627208 5706816 1618184 5707576 1620040 5713712 1627328 5706984 +1627368 5706952 1627328 5706984 1620512 5714368 1620552 5714440 +1627328 5706984 1620160 5713848 1620512 5714368 1620552 5714440 +1620104 5713768 1627328 5706984 1620040 5713712 1620072 5713752 +1627368 5706952 1627208 5706816 1627328 5706984 1620552 5714440 +1627368 5706952 1627328 5706984 1620552 5714440 1627312 5719640 +1627328 5706984 1620512 5714368 1620552 5714440 1627312 5719640 +1620552 5714440 1620560 5714512 1627312 5719640 1627328 5706984 +1627368 5706952 1627328 5706984 1627312 5719640 1627336 5719640 +1627368 5706952 1627208 5706816 1627328 5706984 1627336 5719640 +1627328 5706984 1620552 5714440 1627312 5719640 1627336 5719640 +1627328 5706984 1620040 5713712 1620104 5713768 1620160 5713848 +1627208 5706816 1627328 5706984 1627368 5706952 1627248 5706768 +1627368 5706952 1627328 5706984 1627336 5719640 1629808 5706208 +1627336 5719640 1627384 5719672 1629808 5706208 1627328 5706984 +1627328 5706984 1627312 5719640 1627336 5719640 1629808 5706208 +1627368 5706952 1627208 5706816 1627328 5706984 1629808 5706208 +1620160 5713848 1620272 5714120 1620512 5714368 1627328 5706984 +1627328 5706984 1627368 5706952 1627208 5706816 1620040 5713712 +1627368 5706952 1627328 5706984 1629808 5706208 1629752 5706192 +1620040 5713712 1627296 5706984 1627208 5706816 1618184 5707576 +1627328 5706984 1627296 5706984 1620040 5713712 1620104 5713768 +1620040 5713712 1627296 5706984 1618184 5707576 1618264 5711808 +1620040 5713712 1620072 5713752 1620104 5713768 1627296 5706984 +1627328 5706984 1627296 5706984 1620104 5713768 1620160 5713848 +1627328 5706984 1627296 5706984 1620160 5713848 1620512 5714368 +1627328 5706984 1627296 5706984 1620512 5714368 1620552 5714440 +1627296 5706984 1620160 5713848 1620512 5714368 1620552 5714440 +1627296 5706984 1620040 5713712 1620104 5713768 1620160 5713848 +1627328 5706984 1627296 5706984 1620552 5714440 1627312 5719640 +1627296 5706984 1620512 5714368 1620552 5714440 1627312 5719640 +1620552 5714440 1620560 5714512 1627312 5719640 1627296 5706984 +1627328 5706984 1627296 5706984 1627312 5719640 1627336 5719640 +1627296 5706984 1620104 5713768 1620160 5713848 1620512 5714368 +1627328 5706984 1627208 5706816 1627296 5706984 1627312 5719640 +1620160 5713848 1620272 5714120 1620512 5714368 1627296 5706984 +1627208 5706816 1627296 5706984 1627328 5706984 1627368 5706952 +1627296 5706984 1627312 5719640 1627328 5706984 1627368 5706952 +1627208 5706816 1627296 5706984 1627368 5706952 1627248 5706768 +1620040 5713712 1620104 5713768 1627296 5706984 1618184 5707576 +1627296 5706984 1627368 5706952 1627208 5706816 1618184 5707576 +1627208 5706816 1621944 5703896 1618184 5707576 1627296 5706984 +1627296 5706984 1627272 5706968 1618184 5707576 1620040 5713712 +1618184 5707576 1618264 5711808 1620040 5713712 1627272 5706968 +1627296 5706984 1627272 5706968 1620040 5713712 1620104 5713768 +1627272 5706968 1618184 5707576 1620040 5713712 1620104 5713768 +1627296 5706984 1627272 5706968 1620104 5713768 1620160 5713848 +1620040 5713712 1620072 5713752 1620104 5713768 1627272 5706968 +1627296 5706984 1627272 5706968 1620160 5713848 1620512 5714368 +1627272 5706968 1620040 5713712 1620104 5713768 1620160 5713848 +1627296 5706984 1627208 5706816 1627272 5706968 1620160 5713848 +1627208 5706816 1627272 5706968 1627296 5706984 1627368 5706952 +1627208 5706816 1618184 5707576 1627272 5706968 1627368 5706952 +1627208 5706816 1627272 5706968 1627368 5706952 1627248 5706768 +1627296 5706984 1627328 5706984 1627368 5706952 1627272 5706968 +1627272 5706968 1620160 5713848 1627296 5706984 1627328 5706984 +1627368 5706952 1627208 5706816 1627272 5706968 1627328 5706984 +1627272 5706968 1627208 5706816 1618184 5707576 1620040 5713712 +1618184 5707576 1627272 5706968 1627208 5706816 1621944 5703896 +1627208 5706816 1627248 5706936 1627272 5706968 1627368 5706952 +1627248 5706936 1618184 5707576 1627272 5706968 1627368 5706952 +1627208 5706816 1618184 5707576 1627248 5706936 1627368 5706952 +1627208 5706816 1627248 5706936 1627368 5706952 1627248 5706768 +1627248 5706936 1627272 5706968 1627368 5706952 1627248 5706768 +1627208 5706816 1618184 5707576 1627248 5706936 1627248 5706768 +1627272 5706968 1627328 5706984 1627368 5706952 1627248 5706936 +1627272 5706968 1627248 5706936 1618184 5707576 1620040 5713712 +1627272 5706968 1627248 5706936 1620040 5713712 1620104 5713768 +1618184 5707576 1618264 5711808 1620040 5713712 1627248 5706936 +1627272 5706968 1627368 5706952 1627248 5706936 1620040 5713712 +1627248 5706936 1627208 5706816 1618184 5707576 1620040 5713712 +1627368 5706952 1627424 5706864 1627248 5706768 1627248 5706936 +1627368 5706952 1627424 5706864 1627248 5706936 1627272 5706968 +1627248 5706768 1627208 5706816 1627248 5706936 1627424 5706864 +1627424 5706864 1627280 5706736 1627248 5706768 1627248 5706936 +1618184 5707576 1627248 5706936 1627208 5706816 1621944 5703896 +1618184 5707576 1627248 5706936 1621944 5703896 1621912 5703896 +1618184 5707576 1620040 5713712 1627248 5706936 1621944 5703896 +1627248 5706936 1627248 5706768 1627208 5706816 1621944 5703896 +1627208 5706816 1621968 5703872 1621944 5703896 1627248 5706936 +1627208 5706816 1627208 5706856 1627248 5706936 1627248 5706768 +1627208 5706816 1621944 5703896 1627208 5706856 1627248 5706768 +1627208 5706856 1621944 5703896 1627248 5706936 1627248 5706768 +1627248 5706936 1627424 5706864 1627248 5706768 1627208 5706856 +1627248 5706936 1627208 5706856 1621944 5703896 1618184 5707576 +1621944 5703896 1621912 5703896 1618184 5707576 1627208 5706856 +1627248 5706936 1627208 5706856 1618184 5707576 1620040 5713712 +1627248 5706936 1627248 5706768 1627208 5706856 1618184 5707576 +1627208 5706856 1627208 5706816 1621944 5703896 1618184 5707576 +1621944 5703896 1627208 5706856 1627208 5706816 1621968 5703872 +1626864 5719976 1620280 5716936 1619392 5717504 1620992 5722672 +1626864 5719976 1620520 5714728 1620280 5716936 1620992 5722672 +1620280 5716936 1620520 5714728 1619392 5717504 1620992 5722672 +1619392 5717504 1620280 5716936 1620520 5714728 1619392 5717424 +1619392 5717504 1620992 5722672 1620280 5716936 1619392 5717424 +1626864 5719976 1620280 5716936 1620992 5722672 1621040 5722712 +1619392 5717504 1620872 5722632 1620992 5722672 1620280 5716936 +1619392 5717504 1620872 5722632 1620280 5716936 1619392 5717424 +1620992 5722672 1626864 5719976 1620280 5716936 1620872 5722632 +1619392 5717504 1620792 5722624 1620872 5722632 1620280 5716936 +1620520 5714728 1620280 5716936 1626864 5719976 1626912 5719928 +1620280 5716936 1620992 5722672 1626864 5719976 1626912 5719928 +1620520 5714728 1620280 5716936 1626912 5719928 1627280 5719664 +1620520 5714728 1620456 5714784 1619392 5717424 1620280 5716936 +1619392 5717424 1619392 5717504 1620280 5716936 1620456 5714784 +1620456 5714784 1619360 5717312 1619392 5717424 1620280 5716936 +1619392 5717424 1619392 5717504 1620280 5716936 1619360 5717312 +1620456 5714784 1619328 5717256 1619360 5717312 1620280 5716936 +1620456 5714784 1620424 5714784 1619328 5717256 1620280 5716936 +1620424 5714784 1619296 5717232 1619328 5717256 1620280 5716936 +1620424 5714784 1619296 5717232 1620280 5716936 1620456 5714784 +1619328 5717256 1619360 5717312 1620280 5716936 1619296 5717232 +1619360 5717312 1619392 5717424 1620280 5716936 1619328 5717256 +1620456 5714784 1620424 5714784 1620280 5716936 1620520 5714728 +1620424 5714784 1620384 5714776 1619296 5717232 1620280 5716936 +1620424 5714784 1620384 5714776 1620280 5716936 1620456 5714784 +1619296 5717232 1619328 5717256 1620280 5716936 1620384 5714776 +1620384 5714776 1620352 5714744 1619296 5717232 1620280 5716936 +1620280 5716936 1626912 5719928 1620520 5714728 1620456 5714784 +1620520 5714728 1620320 5716856 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620320 5716856 +1620520 5714728 1620280 5716936 1620320 5716856 1627280 5719664 +1620320 5716856 1620280 5716936 1626912 5719928 1627280 5719664 +1620520 5714728 1620320 5716856 1627280 5719664 1627312 5719640 +1626912 5719928 1620320 5716856 1620280 5716936 1626864 5719976 +1620280 5716936 1620992 5722672 1626864 5719976 1620320 5716856 +1626912 5719928 1627280 5719664 1620320 5716856 1626864 5719976 +1620320 5716856 1620520 5714728 1620280 5716936 1626864 5719976 +1620280 5716936 1620320 5716856 1620520 5714728 1620456 5714784 +1620320 5716856 1627280 5719664 1620520 5714728 1620456 5714784 +1620280 5716936 1620320 5716856 1620456 5714784 1620424 5714784 +1620280 5716936 1620320 5716856 1620424 5714784 1620384 5714776 +1620320 5716856 1620456 5714784 1620424 5714784 1620384 5714776 +1620280 5716936 1620320 5716856 1620384 5714776 1619296 5717232 +1620320 5716856 1620424 5714784 1620384 5714776 1619296 5717232 +1620280 5716936 1620320 5716856 1619296 5717232 1619328 5717256 +1620384 5714776 1620352 5714744 1619296 5717232 1620320 5716856 +1620280 5716936 1626864 5719976 1620320 5716856 1619296 5717232 +1620320 5716856 1620520 5714728 1620456 5714784 1620424 5714784 +1620320 5716856 1620368 5716792 1620520 5714728 1620456 5714784 +1620320 5716856 1627280 5719664 1620368 5716792 1620456 5714784 +1620368 5716792 1627280 5719664 1620520 5714728 1620456 5714784 +1620520 5714728 1620368 5716792 1627280 5719664 1627312 5719640 +1620368 5716792 1620320 5716856 1627280 5719664 1627312 5719640 +1620520 5714728 1620368 5716792 1627312 5719640 1620560 5714512 +1620520 5714728 1620456 5714784 1620368 5716792 1627312 5719640 +1627280 5719664 1620368 5716792 1620320 5716856 1626912 5719928 +1627280 5719664 1620368 5716792 1626912 5719928 1627232 5719704 +1627280 5719664 1627312 5719640 1620368 5716792 1626912 5719928 +1620320 5716856 1626864 5719976 1626912 5719928 1620368 5716792 +1620368 5716792 1620456 5714784 1620320 5716856 1626864 5719976 +1626912 5719928 1627280 5719664 1620368 5716792 1626864 5719976 +1620320 5716856 1620280 5716936 1626864 5719976 1620368 5716792 +1620280 5716936 1620992 5722672 1626864 5719976 1620368 5716792 +1626864 5719976 1626912 5719928 1620368 5716792 1620280 5716936 +1620320 5716856 1620280 5716936 1620368 5716792 1620456 5714784 +1620320 5716856 1620368 5716792 1620456 5714784 1620424 5714784 +1620368 5716792 1620520 5714728 1620456 5714784 1620424 5714784 +1620320 5716856 1620280 5716936 1620368 5716792 1620424 5714784 +1620320 5716856 1620368 5716792 1620424 5714784 1620384 5714776 +1620320 5716856 1620368 5716792 1620384 5714776 1619296 5717232 +1620320 5716856 1620280 5716936 1620368 5716792 1619296 5717232 +1620368 5716792 1620424 5714784 1620384 5714776 1619296 5717232 +1620320 5716856 1620368 5716792 1619296 5717232 1620280 5716936 +1620384 5714776 1620352 5714744 1619296 5717232 1620368 5716792 +1619296 5717232 1620320 5716856 1620368 5716792 1620352 5714744 +1620384 5714776 1620352 5714744 1620368 5716792 1620424 5714784 +1620352 5714744 1619280 5717232 1619296 5717232 1620368 5716792 +1620368 5716792 1620456 5714784 1620424 5714784 1620384 5714776 +1620520 5714728 1620448 5716728 1627312 5719640 1620560 5714512 +1620368 5716792 1620448 5716728 1620520 5714728 1620456 5714784 +1620368 5716792 1627312 5719640 1620448 5716728 1620456 5714784 +1620448 5716728 1627312 5719640 1620520 5714728 1620456 5714784 +1620368 5716792 1620448 5716728 1620456 5714784 1620424 5714784 +1620368 5716792 1627312 5719640 1620448 5716728 1620424 5714784 +1620448 5716728 1620520 5714728 1620456 5714784 1620424 5714784 +1627312 5719640 1620448 5716728 1620368 5716792 1627280 5719664 +1620448 5716728 1620424 5714784 1620368 5716792 1627280 5719664 +1620368 5716792 1626912 5719928 1627280 5719664 1620448 5716728 +1626912 5719928 1627232 5719704 1627280 5719664 1620448 5716728 +1620368 5716792 1626912 5719928 1620448 5716728 1620424 5714784 +1627312 5719640 1620520 5714728 1620448 5716728 1627280 5719664 +1627280 5719664 1627312 5719640 1620448 5716728 1626912 5719928 +1620368 5716792 1626864 5719976 1626912 5719928 1620448 5716728 +1620368 5716792 1626864 5719976 1620448 5716728 1620424 5714784 +1626912 5719928 1627280 5719664 1620448 5716728 1626864 5719976 +1620368 5716792 1620280 5716936 1626864 5719976 1620448 5716728 +1620368 5716792 1620280 5716936 1620448 5716728 1620424 5714784 +1620280 5716936 1620992 5722672 1626864 5719976 1620448 5716728 +1626864 5719976 1626912 5719928 1620448 5716728 1620280 5716936 +1620368 5716792 1620320 5716856 1620280 5716936 1620448 5716728 +1620368 5716792 1620320 5716856 1620448 5716728 1620424 5714784 +1620280 5716936 1626864 5719976 1620448 5716728 1620320 5716856 +1620368 5716792 1620448 5716728 1620424 5714784 1620384 5714776 +1620368 5716792 1620320 5716856 1620448 5716728 1620384 5714776 +1620448 5716728 1620456 5714784 1620424 5714784 1620384 5714776 +1620368 5716792 1620448 5716728 1620384 5714776 1620352 5714744 +1620448 5716728 1620544 5716680 1620520 5714728 1620456 5714784 +1620520 5714728 1620544 5716680 1627312 5719640 1620560 5714512 +1620448 5716728 1620544 5716680 1620456 5714784 1620424 5714784 +1620448 5716728 1620544 5716680 1620424 5714784 1620384 5714776 +1620544 5716680 1620456 5714784 1620424 5714784 1620384 5714776 +1620448 5716728 1627312 5719640 1620544 5716680 1620384 5714776 +1627312 5719640 1620544 5716680 1620448 5716728 1627280 5719664 +1620544 5716680 1620384 5714776 1620448 5716728 1627280 5719664 +1620544 5716680 1627312 5719640 1620520 5714728 1620456 5714784 +1620448 5716728 1626912 5719928 1627280 5719664 1620544 5716680 +1626912 5719928 1627232 5719704 1627280 5719664 1620544 5716680 +1620448 5716728 1626864 5719976 1626912 5719928 1620544 5716680 +1620448 5716728 1626864 5719976 1620544 5716680 1620384 5714776 +1627280 5719664 1627312 5719640 1620544 5716680 1626912 5719928 +1626912 5719928 1627280 5719664 1620544 5716680 1626864 5719976 +1620448 5716728 1620280 5716936 1626864 5719976 1620544 5716680 +1626864 5719976 1626912 5719928 1620544 5716680 1620280 5716936 +1620280 5716936 1620992 5722672 1626864 5719976 1620544 5716680 +1626864 5719976 1626912 5719928 1620544 5716680 1620992 5722672 +1620280 5716936 1620872 5722632 1620992 5722672 1620544 5716680 +1620992 5722672 1621040 5722712 1626864 5719976 1620544 5716680 +1620448 5716728 1620320 5716856 1620280 5716936 1620544 5716680 +1620448 5716728 1620280 5716936 1620544 5716680 1620384 5714776 +1620280 5716936 1620992 5722672 1620544 5716680 1620448 5716728 +1620544 5716680 1620520 5714728 1620456 5714784 1620424 5714784 +1627312 5719640 1620520 5714728 1620544 5716680 1627280 5719664 +1620448 5716728 1620544 5716680 1620384 5714776 1620368 5716792 +1620520 5714728 1620584 5716664 1627312 5719640 1620560 5714512 +1620544 5716680 1620584 5716664 1620520 5714728 1620456 5714784 +1620584 5716664 1627312 5719640 1620520 5714728 1620456 5714784 +1620544 5716680 1620584 5716664 1620456 5714784 1620424 5714784 +1620544 5716680 1620584 5716664 1620424 5714784 1620384 5714776 +1620544 5716680 1620584 5716664 1620384 5714776 1620448 5716728 +1620584 5716664 1620520 5714728 1620456 5714784 1620424 5714784 +1620584 5716664 1620456 5714784 1620424 5714784 1620384 5714776 +1627312 5719640 1620584 5716664 1620544 5716680 1627280 5719664 +1627312 5719640 1620520 5714728 1620584 5716664 1627280 5719664 +1620544 5716680 1626912 5719928 1627280 5719664 1620584 5716664 +1626912 5719928 1627232 5719704 1627280 5719664 1620584 5716664 +1620544 5716680 1626864 5719976 1626912 5719928 1620584 5716664 +1620544 5716680 1620992 5722672 1626864 5719976 1620584 5716664 +1620544 5716680 1620280 5716936 1620992 5722672 1620584 5716664 +1620992 5722672 1626864 5719976 1620584 5716664 1620280 5716936 +1620280 5716936 1620872 5722632 1620992 5722672 1620584 5716664 +1620992 5722672 1621040 5722712 1626864 5719976 1620584 5716664 +1626912 5719928 1627280 5719664 1620584 5716664 1626864 5719976 +1626864 5719976 1626912 5719928 1620584 5716664 1620992 5722672 +1620544 5716680 1620448 5716728 1620280 5716936 1620584 5716664 +1627280 5719664 1627312 5719640 1620584 5716664 1626912 5719928 +1620544 5716680 1620280 5716936 1620584 5716664 1620384 5714776 +1620520 5714728 1620680 5716664 1627312 5719640 1620560 5714512 +1620584 5716664 1620680 5716664 1620520 5714728 1620456 5714784 +1620584 5716664 1627312 5719640 1620680 5716664 1620456 5714784 +1627312 5719640 1620680 5716664 1620584 5716664 1627280 5719664 +1620680 5716664 1620456 5714784 1620584 5716664 1627280 5719664 +1620584 5716664 1620680 5716664 1620456 5714784 1620424 5714784 +1627312 5719640 1620552 5714440 1620560 5714512 1620680 5716664 +1620584 5716664 1626912 5719928 1627280 5719664 1620680 5716664 +1626912 5719928 1627232 5719704 1627280 5719664 1620680 5716664 +1620584 5716664 1626912 5719928 1620680 5716664 1620456 5714784 +1627280 5719664 1627312 5719640 1620680 5716664 1626912 5719928 +1620584 5716664 1626864 5719976 1626912 5719928 1620680 5716664 +1620584 5716664 1626864 5719976 1620680 5716664 1620456 5714784 +1620584 5716664 1620992 5722672 1626864 5719976 1620680 5716664 +1620584 5716664 1620280 5716936 1620992 5722672 1620680 5716664 +1620584 5716664 1620544 5716680 1620280 5716936 1620680 5716664 +1620280 5716936 1620992 5722672 1620680 5716664 1620544 5716680 +1620280 5716936 1620872 5722632 1620992 5722672 1620680 5716664 +1620992 5722672 1621040 5722712 1626864 5719976 1620680 5716664 +1620584 5716664 1620544 5716680 1620680 5716664 1620456 5714784 +1626864 5719976 1626912 5719928 1620680 5716664 1620992 5722672 +1620992 5722672 1626864 5719976 1620680 5716664 1620280 5716936 +1620544 5716680 1620448 5716728 1620280 5716936 1620680 5716664 +1620280 5716936 1620992 5722672 1620680 5716664 1620448 5716728 +1620544 5716680 1620448 5716728 1620680 5716664 1620584 5716664 +1620448 5716728 1620320 5716856 1620280 5716936 1620680 5716664 +1620280 5716936 1620992 5722672 1620680 5716664 1620320 5716856 +1620448 5716728 1620320 5716856 1620680 5716664 1620544 5716680 +1620448 5716728 1620368 5716792 1620320 5716856 1620680 5716664 +1626912 5719928 1627280 5719664 1620680 5716664 1626864 5719976 +1620520 5714728 1620456 5714784 1620680 5716664 1620560 5714512 +1620680 5716664 1627280 5719664 1627312 5719640 1620560 5714512 +1620680 5716664 1620720 5716672 1620560 5714512 1620520 5714728 +1620720 5716672 1627312 5719640 1620560 5714512 1620520 5714728 +1620560 5714512 1620720 5716672 1627312 5719640 1620552 5714440 +1620680 5716664 1620720 5716672 1620520 5714728 1620456 5714784 +1620720 5716672 1620560 5714512 1620520 5714728 1620456 5714784 +1620680 5716664 1620720 5716672 1620456 5714784 1620584 5716664 +1620680 5716664 1627312 5719640 1620720 5716672 1620456 5714784 +1627312 5719640 1620720 5716672 1620680 5716664 1627280 5719664 +1627312 5719640 1620560 5714512 1620720 5716672 1627280 5719664 +1620680 5716664 1626912 5719928 1627280 5719664 1620720 5716672 +1626912 5719928 1627232 5719704 1627280 5719664 1620720 5716672 +1620680 5716664 1626864 5719976 1626912 5719928 1620720 5716672 +1626912 5719928 1627280 5719664 1620720 5716672 1626864 5719976 +1620680 5716664 1620992 5722672 1626864 5719976 1620720 5716672 +1620992 5722672 1621040 5722712 1626864 5719976 1620720 5716672 +1620680 5716664 1620280 5716936 1620992 5722672 1620720 5716672 +1620680 5716664 1620320 5716856 1620280 5716936 1620720 5716672 +1620280 5716936 1620872 5722632 1620992 5722672 1620720 5716672 +1620680 5716664 1620448 5716728 1620320 5716856 1620720 5716672 +1620320 5716856 1620280 5716936 1620720 5716672 1620448 5716728 +1620992 5722672 1626864 5719976 1620720 5716672 1620280 5716936 +1620280 5716936 1620992 5722672 1620720 5716672 1620320 5716856 +1620680 5716664 1620544 5716680 1620448 5716728 1620720 5716672 +1620680 5716664 1620584 5716664 1620544 5716680 1620720 5716672 +1620448 5716728 1620320 5716856 1620720 5716672 1620544 5716680 +1620448 5716728 1620368 5716792 1620320 5716856 1620720 5716672 +1626864 5719976 1626912 5719928 1620720 5716672 1620992 5722672 +1620720 5716672 1620456 5714784 1620680 5716664 1620544 5716680 +1627280 5719664 1627312 5719640 1620720 5716672 1626912 5719928 +1626864 5719976 1620768 5716712 1620992 5722672 1621040 5722712 +1620992 5722672 1620768 5716712 1620720 5716672 1620280 5716936 +1620768 5716712 1626864 5719976 1620720 5716672 1620280 5716936 +1620992 5722672 1626864 5719976 1620768 5716712 1620280 5716936 +1620992 5722672 1620768 5716712 1620280 5716936 1620872 5722632 +1620992 5722672 1626864 5719976 1620768 5716712 1620872 5722632 +1620280 5716936 1619392 5717504 1620872 5722632 1620768 5716712 +1620768 5716712 1620720 5716672 1620280 5716936 1620872 5722632 +1620720 5716672 1620320 5716856 1620280 5716936 1620768 5716712 +1620720 5716672 1620448 5716728 1620320 5716856 1620768 5716712 +1620720 5716672 1620448 5716728 1620768 5716712 1626864 5719976 +1620720 5716672 1620544 5716680 1620448 5716728 1620768 5716712 +1620448 5716728 1620320 5716856 1620768 5716712 1620544 5716680 +1620720 5716672 1620544 5716680 1620768 5716712 1626864 5719976 +1620280 5716936 1620872 5722632 1620768 5716712 1620320 5716856 +1620320 5716856 1620280 5716936 1620768 5716712 1620448 5716728 +1620720 5716672 1620680 5716664 1620544 5716680 1620768 5716712 +1620680 5716664 1620584 5716664 1620544 5716680 1620768 5716712 +1620720 5716672 1620680 5716664 1620768 5716712 1626864 5719976 +1620544 5716680 1620448 5716728 1620768 5716712 1620680 5716664 +1620448 5716728 1620368 5716792 1620320 5716856 1620768 5716712 +1620448 5716728 1620368 5716792 1620768 5716712 1620544 5716680 +1620320 5716856 1620280 5716936 1620768 5716712 1620368 5716792 +1620720 5716672 1620768 5716712 1626864 5719976 1626912 5719928 +1620720 5716672 1620680 5716664 1620768 5716712 1626912 5719928 +1620768 5716712 1620992 5722672 1626864 5719976 1626912 5719928 +1620720 5716672 1620768 5716712 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620768 5716712 +1620720 5716672 1620680 5716664 1620768 5716712 1627280 5719664 +1620768 5716712 1626864 5719976 1626912 5719928 1627280 5719664 +1620720 5716672 1620768 5716712 1627280 5719664 1627312 5719640 +1620720 5716672 1620680 5716664 1620768 5716712 1627312 5719640 +1620720 5716672 1620768 5716712 1627312 5719640 1620560 5714512 +1620720 5716672 1620680 5716664 1620768 5716712 1620560 5714512 +1620720 5716672 1620768 5716712 1620560 5714512 1620520 5714728 +1620720 5716672 1620680 5716664 1620768 5716712 1620520 5714728 +1620768 5716712 1627312 5719640 1620560 5714512 1620520 5714728 +1620720 5716672 1620768 5716712 1620520 5714728 1620456 5714784 +1620768 5716712 1626912 5719928 1627280 5719664 1627312 5719640 +1627312 5719640 1620552 5714440 1620560 5714512 1620768 5716712 +1620768 5716712 1627280 5719664 1627312 5719640 1620560 5714512 +1620768 5716712 1620808 5716760 1626864 5719976 1626912 5719928 +1620768 5716712 1620992 5722672 1620808 5716760 1626912 5719928 +1620808 5716760 1620992 5722672 1626864 5719976 1626912 5719928 +1620992 5722672 1620808 5716760 1620768 5716712 1620872 5722632 +1620808 5716760 1626912 5719928 1620768 5716712 1620872 5722632 +1620992 5722672 1626864 5719976 1620808 5716760 1620872 5722632 +1620768 5716712 1620280 5716936 1620872 5722632 1620808 5716760 +1620768 5716712 1620280 5716936 1620808 5716760 1626912 5719928 +1620872 5722632 1620992 5722672 1620808 5716760 1620280 5716936 +1626864 5719976 1620808 5716760 1620992 5722672 1621040 5722712 +1620280 5716936 1619392 5717504 1620872 5722632 1620808 5716760 +1620768 5716712 1620320 5716856 1620280 5716936 1620808 5716760 +1620768 5716712 1620320 5716856 1620808 5716760 1626912 5719928 +1620280 5716936 1620872 5722632 1620808 5716760 1620320 5716856 +1620768 5716712 1620368 5716792 1620320 5716856 1620808 5716760 +1620768 5716712 1620368 5716792 1620808 5716760 1626912 5719928 +1620320 5716856 1620280 5716936 1620808 5716760 1620368 5716792 +1620768 5716712 1620448 5716728 1620368 5716792 1620808 5716760 +1620768 5716712 1620544 5716680 1620448 5716728 1620808 5716760 +1620768 5716712 1620544 5716680 1620808 5716760 1626912 5719928 +1620768 5716712 1620680 5716664 1620544 5716680 1620808 5716760 +1620368 5716792 1620320 5716856 1620808 5716760 1620448 5716728 +1620448 5716728 1620368 5716792 1620808 5716760 1620544 5716680 +1620768 5716712 1620808 5716760 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620808 5716760 +1620768 5716712 1620544 5716680 1620808 5716760 1627280 5719664 +1620808 5716760 1626864 5719976 1626912 5719928 1627280 5719664 +1620768 5716712 1620808 5716760 1627280 5719664 1627312 5719640 +1620768 5716712 1620544 5716680 1620808 5716760 1627312 5719640 +1620808 5716760 1626912 5719928 1627280 5719664 1627312 5719640 +1620768 5716712 1620808 5716760 1627312 5719640 1620560 5714512 +1620768 5716712 1620544 5716680 1620808 5716760 1620560 5714512 +1620768 5716712 1620808 5716760 1620560 5714512 1620520 5714728 +1620768 5716712 1620544 5716680 1620808 5716760 1620520 5714728 +1620768 5716712 1620808 5716760 1620520 5714728 1620720 5716672 +1620808 5716760 1627280 5719664 1627312 5719640 1620560 5714512 +1627312 5719640 1620552 5714440 1620560 5714512 1620808 5716760 +1620808 5716760 1627312 5719640 1620560 5714512 1620520 5714728 +1620808 5716760 1620856 5716800 1626864 5719976 1626912 5719928 +1620808 5716760 1620856 5716800 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620856 5716800 +1620856 5716800 1626864 5719976 1626912 5719928 1627280 5719664 +1620992 5722672 1620856 5716800 1620808 5716760 1620872 5722632 +1620808 5716760 1620280 5716936 1620872 5722632 1620856 5716800 +1620872 5722632 1620992 5722672 1620856 5716800 1620280 5716936 +1620808 5716760 1620280 5716936 1620856 5716800 1627280 5719664 +1620856 5716800 1620992 5722672 1626864 5719976 1626912 5719928 +1620808 5716760 1620320 5716856 1620280 5716936 1620856 5716800 +1620280 5716936 1620872 5722632 1620856 5716800 1620320 5716856 +1620808 5716760 1620320 5716856 1620856 5716800 1627280 5719664 +1626864 5719976 1620856 5716800 1620992 5722672 1621040 5722712 +1620280 5716936 1619392 5717504 1620872 5722632 1620856 5716800 +1620280 5716936 1619392 5717424 1619392 5717504 1620856 5716800 +1620280 5716936 1619392 5717504 1620856 5716800 1620320 5716856 +1620872 5722632 1620992 5722672 1620856 5716800 1619392 5717504 +1619392 5717504 1620792 5722624 1620872 5722632 1620856 5716800 +1620992 5722672 1626864 5719976 1620856 5716800 1620872 5722632 +1620808 5716760 1620368 5716792 1620320 5716856 1620856 5716800 +1620808 5716760 1620856 5716800 1627280 5719664 1627312 5719640 +1620856 5716800 1626912 5719928 1627280 5719664 1627312 5719640 +1620808 5716760 1620320 5716856 1620856 5716800 1627312 5719640 +1620808 5716760 1620856 5716800 1627312 5719640 1620560 5714512 +1620808 5716760 1620320 5716856 1620856 5716800 1620560 5714512 +1627312 5719640 1620552 5714440 1620560 5714512 1620856 5716800 +1620856 5716800 1627280 5719664 1627312 5719640 1620560 5714512 +1620808 5716760 1620856 5716800 1620560 5714512 1620520 5714728 +1620808 5716760 1620856 5716800 1620520 5714728 1620768 5716712 +1620520 5714728 1620720 5716672 1620768 5716712 1620856 5716800 +1620808 5716760 1620320 5716856 1620856 5716800 1620768 5716712 +1620856 5716800 1627312 5719640 1620560 5714512 1620520 5714728 +1620856 5716800 1620560 5714512 1620520 5714728 1620768 5716712 +1620856 5716800 1620872 5716832 1626864 5719976 1626912 5719928 +1620856 5716800 1620872 5716832 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620872 5716832 +1620856 5716800 1620872 5716832 1627280 5719664 1627312 5719640 +1620872 5716832 1626912 5719928 1627280 5719664 1627312 5719640 +1620872 5716832 1626864 5719976 1626912 5719928 1627280 5719664 +1626864 5719976 1620872 5716832 1620992 5722672 1621040 5722712 +1620856 5716800 1620992 5722672 1620872 5716832 1627312 5719640 +1620992 5722672 1620872 5716832 1620856 5716800 1620872 5722632 +1620856 5716800 1619392 5717504 1620872 5722632 1620872 5716832 +1619392 5717504 1620792 5722624 1620872 5722632 1620872 5716832 +1620856 5716800 1620280 5716936 1619392 5717504 1620872 5716832 +1620280 5716936 1619392 5717424 1619392 5717504 1620872 5716832 +1620856 5716800 1620320 5716856 1620280 5716936 1620872 5716832 +1619392 5717504 1620872 5722632 1620872 5716832 1620280 5716936 +1620856 5716800 1620808 5716760 1620320 5716856 1620872 5716832 +1620320 5716856 1620280 5716936 1620872 5716832 1620808 5716760 +1620280 5716936 1619392 5717504 1620872 5716832 1620320 5716856 +1620872 5716832 1627312 5719640 1620856 5716800 1620808 5716760 +1620872 5722632 1620992 5722672 1620872 5716832 1619392 5717504 +1620872 5716832 1620992 5722672 1626864 5719976 1626912 5719928 +1620992 5722672 1626864 5719976 1620872 5716832 1620872 5722632 +1620808 5716760 1620368 5716792 1620320 5716856 1620872 5716832 +1620320 5716856 1620280 5716936 1620872 5716832 1620368 5716792 +1620808 5716760 1620368 5716792 1620872 5716832 1620856 5716800 +1620808 5716760 1620448 5716728 1620368 5716792 1620872 5716832 +1620808 5716760 1620448 5716728 1620872 5716832 1620856 5716800 +1620368 5716792 1620320 5716856 1620872 5716832 1620448 5716728 +1620808 5716760 1620544 5716680 1620448 5716728 1620872 5716832 +1620856 5716800 1620872 5716832 1627312 5719640 1620560 5714512 +1620872 5716832 1627280 5719664 1627312 5719640 1620560 5714512 +1620856 5716800 1620872 5716832 1620560 5714512 1620520 5714728 +1620856 5716800 1620808 5716760 1620872 5716832 1620560 5714512 +1627312 5719640 1620552 5714440 1620560 5714512 1620872 5716832 +1626864 5719976 1620896 5716896 1620992 5722672 1621040 5722712 +1620872 5716832 1620896 5716896 1626864 5719976 1626912 5719928 +1620872 5716832 1620896 5716896 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620896 5716896 +1620872 5716832 1620896 5716896 1627280 5719664 1627312 5719640 +1620872 5716832 1620896 5716896 1627312 5719640 1620560 5714512 +1620896 5716896 1626912 5719928 1627280 5719664 1627312 5719640 +1620896 5716896 1626864 5719976 1626912 5719928 1627280 5719664 +1620872 5716832 1620992 5722672 1620896 5716896 1627312 5719640 +1620992 5722672 1620896 5716896 1620872 5716832 1620872 5722632 +1620872 5716832 1619392 5717504 1620872 5722632 1620896 5716896 +1620872 5716832 1620280 5716936 1619392 5717504 1620896 5716896 +1620280 5716936 1619392 5717424 1619392 5717504 1620896 5716896 +1619392 5717504 1620792 5722624 1620872 5722632 1620896 5716896 +1620872 5716832 1620320 5716856 1620280 5716936 1620896 5716896 +1620872 5716832 1620368 5716792 1620320 5716856 1620896 5716896 +1620280 5716936 1619392 5717504 1620896 5716896 1620320 5716856 +1620320 5716856 1620280 5716936 1620896 5716896 1620368 5716792 +1619392 5717504 1620872 5722632 1620896 5716896 1620280 5716936 +1620896 5716896 1627312 5719640 1620872 5716832 1620368 5716792 +1620872 5722632 1620992 5722672 1620896 5716896 1619392 5717504 +1620896 5716896 1620992 5722672 1626864 5719976 1626912 5719928 +1620992 5722672 1626864 5719976 1620896 5716896 1620872 5722632 +1620872 5716832 1620448 5716728 1620368 5716792 1620896 5716896 +1620368 5716792 1620320 5716856 1620896 5716896 1620448 5716728 +1620872 5716832 1620448 5716728 1620896 5716896 1627312 5719640 +1620872 5716832 1620808 5716760 1620448 5716728 1620896 5716896 +1620872 5716832 1620856 5716800 1620808 5716760 1620896 5716896 +1620872 5716832 1620808 5716760 1620896 5716896 1627312 5719640 +1620448 5716728 1620368 5716792 1620896 5716896 1620808 5716760 +1620808 5716760 1620544 5716680 1620448 5716728 1620896 5716896 +1626864 5719976 1620928 5717008 1620992 5722672 1621040 5722712 +1620896 5716896 1620928 5717008 1626864 5719976 1626912 5719928 +1620896 5716896 1620928 5717008 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1620928 5717008 +1620896 5716896 1620928 5717008 1627280 5719664 1627312 5719640 +1620896 5716896 1620928 5717008 1627312 5719640 1620872 5716832 +1620928 5717008 1626912 5719928 1627280 5719664 1627312 5719640 +1620928 5717008 1626864 5719976 1626912 5719928 1627280 5719664 +1620896 5716896 1620992 5722672 1620928 5717008 1627312 5719640 +1620992 5722672 1620928 5717008 1620896 5716896 1620872 5722632 +1620992 5722672 1626864 5719976 1620928 5717008 1620872 5722632 +1620896 5716896 1619392 5717504 1620872 5722632 1620928 5717008 +1619392 5717504 1620792 5722624 1620872 5722632 1620928 5717008 +1620896 5716896 1620280 5716936 1619392 5717504 1620928 5717008 +1620280 5716936 1619392 5717424 1619392 5717504 1620928 5717008 +1620896 5716896 1620320 5716856 1620280 5716936 1620928 5717008 +1620896 5716896 1620368 5716792 1620320 5716856 1620928 5717008 +1620280 5716936 1619392 5717504 1620928 5717008 1620320 5716856 +1619392 5717504 1620792 5722624 1620928 5717008 1620280 5716936 +1620928 5717008 1627312 5719640 1620896 5716896 1620320 5716856 +1620872 5722632 1620992 5722672 1620928 5717008 1620792 5722624 +1620928 5717008 1620992 5722672 1626864 5719976 1626912 5719928 +1619392 5717504 1620656 5722632 1620792 5722624 1620928 5717008 +1620928 5717008 1620920 5717216 1620792 5722624 1620872 5722632 +1620928 5717008 1619392 5717504 1620920 5717216 1620872 5722632 +1620920 5717216 1619392 5717504 1620792 5722624 1620872 5722632 +1619392 5717504 1620920 5717216 1620928 5717008 1620280 5716936 +1619392 5717504 1620920 5717216 1620280 5716936 1619392 5717424 +1619392 5717504 1620792 5722624 1620920 5717216 1620280 5716936 +1620920 5717216 1620872 5722632 1620928 5717008 1620280 5716936 +1620928 5717008 1620320 5716856 1620280 5716936 1620920 5717216 +1620928 5717008 1620920 5717216 1620872 5722632 1620992 5722672 +1620928 5717008 1620280 5716936 1620920 5717216 1620992 5722672 +1620928 5717008 1620920 5717216 1620992 5722672 1626864 5719976 +1620928 5717008 1620280 5716936 1620920 5717216 1626864 5719976 +1620920 5717216 1620792 5722624 1620872 5722632 1620992 5722672 +1620992 5722672 1621040 5722712 1626864 5719976 1620920 5717216 +1620920 5717216 1620872 5722632 1620992 5722672 1626864 5719976 +1620928 5717008 1620920 5717216 1626864 5719976 1626912 5719928 +1620928 5717008 1620280 5716936 1620920 5717216 1626912 5719928 +1620920 5717216 1620992 5722672 1626864 5719976 1626912 5719928 +1620928 5717008 1620920 5717216 1626912 5719928 1627280 5719664 +1620792 5722624 1620920 5717216 1619392 5717504 1620656 5722632 +1619392 5717504 1620864 5717320 1620920 5717216 1620280 5716936 +1619392 5717504 1620864 5717320 1620280 5716936 1619392 5717424 +1619392 5717504 1620792 5722624 1620864 5717320 1620280 5716936 +1620864 5717320 1620792 5722624 1620920 5717216 1620280 5716936 +1620920 5717216 1620864 5717320 1620792 5722624 1620872 5722632 +1620864 5717320 1619392 5717504 1620792 5722624 1620872 5722632 +1620920 5717216 1620280 5716936 1620864 5717320 1620872 5722632 +1620920 5717216 1620864 5717320 1620872 5722632 1620992 5722672 +1620920 5717216 1620280 5716936 1620864 5717320 1620992 5722672 +1620864 5717320 1620792 5722624 1620872 5722632 1620992 5722672 +1620920 5717216 1620928 5717008 1620280 5716936 1620864 5717320 +1620920 5717216 1620864 5717320 1620992 5722672 1626864 5719976 +1620920 5717216 1620280 5716936 1620864 5717320 1626864 5719976 +1620920 5717216 1620864 5717320 1626864 5719976 1626912 5719928 +1620864 5717320 1620872 5722632 1620992 5722672 1626864 5719976 +1620992 5722672 1621040 5722712 1626864 5719976 1620864 5717320 +1620792 5722624 1620864 5717320 1619392 5717504 1620656 5722632 +1620792 5722624 1620872 5722632 1620864 5717320 1620656 5722632 +1620864 5717320 1620280 5716936 1619392 5717504 1620656 5722632 +1619392 5717504 1619336 5717528 1620656 5722632 1620864 5717320 +1619392 5717504 1620832 5717344 1620864 5717320 1620280 5716936 +1619392 5717504 1620832 5717344 1620280 5716936 1619392 5717424 +1620864 5717320 1620920 5717216 1620280 5716936 1620832 5717344 +1620832 5717344 1620656 5722632 1620864 5717320 1620920 5717216 +1620280 5716936 1619392 5717504 1620832 5717344 1620920 5717216 +1620920 5717216 1620928 5717008 1620280 5716936 1620832 5717344 +1620920 5717216 1620928 5717008 1620832 5717344 1620864 5717320 +1620280 5716936 1619392 5717504 1620832 5717344 1620928 5717008 +1620928 5717008 1620320 5716856 1620280 5716936 1620832 5717344 +1620864 5717320 1620832 5717344 1620656 5722632 1620792 5722624 +1620864 5717320 1620832 5717344 1620792 5722624 1620872 5722632 +1620864 5717320 1620920 5717216 1620832 5717344 1620872 5722632 +1620832 5717344 1619392 5717504 1620656 5722632 1620792 5722624 +1620864 5717320 1620832 5717344 1620872 5722632 1620992 5722672 +1620832 5717344 1620792 5722624 1620872 5722632 1620992 5722672 +1620864 5717320 1620920 5717216 1620832 5717344 1620992 5722672 +1620864 5717320 1620832 5717344 1620992 5722672 1626864 5719976 +1620832 5717344 1620656 5722632 1620792 5722624 1620872 5722632 +1620656 5722632 1620832 5717344 1619392 5717504 1619336 5717528 +1620656 5722632 1620792 5722624 1620832 5717344 1619336 5717528 +1620656 5722632 1620832 5717344 1619336 5717528 1619064 5717632 +1619392 5717504 1619352 5717512 1619336 5717528 1620832 5717344 +1619392 5717504 1619336 5717528 1620832 5717344 1620280 5716936 +1619392 5717504 1620808 5717344 1620280 5716936 1619392 5717424 +1620280 5716936 1620808 5717344 1620832 5717344 1620928 5717008 +1620808 5717344 1619392 5717504 1620832 5717344 1620928 5717008 +1620280 5716936 1620808 5717344 1620928 5717008 1620320 5716856 +1620832 5717344 1620920 5717216 1620928 5717008 1620808 5717344 +1620832 5717344 1620864 5717320 1620920 5717216 1620808 5717344 +1620928 5717008 1620280 5716936 1620808 5717344 1620920 5717216 +1620832 5717344 1620864 5717320 1620808 5717344 1619392 5717504 +1620920 5717216 1620928 5717008 1620808 5717344 1620864 5717320 +1620280 5716936 1619392 5717504 1620808 5717344 1620928 5717008 +1620832 5717344 1620808 5717344 1619392 5717504 1619336 5717528 +1620832 5717344 1620864 5717320 1620808 5717344 1619336 5717528 +1619392 5717504 1619352 5717512 1619336 5717528 1620808 5717344 +1620832 5717344 1620808 5717344 1619336 5717528 1620656 5722632 +1620832 5717344 1620808 5717344 1620656 5722632 1620792 5722624 +1620832 5717344 1620864 5717320 1620808 5717344 1620792 5722624 +1619336 5717528 1619064 5717632 1620656 5722632 1620808 5717344 +1620832 5717344 1620808 5717344 1620792 5722624 1620872 5722632 +1620808 5717344 1619336 5717528 1620656 5722632 1620792 5722624 +1620808 5717344 1620280 5716936 1619392 5717504 1619336 5717528 +1620808 5717344 1619392 5717504 1619336 5717528 1620656 5722632 +1619392 5717504 1620784 5717328 1620280 5716936 1619392 5717424 +1620808 5717344 1620784 5717328 1619392 5717504 1619336 5717528 +1620280 5716936 1620784 5717328 1620808 5717344 1620928 5717008 +1620808 5717344 1620920 5717216 1620928 5717008 1620784 5717328 +1620280 5716936 1620784 5717328 1620928 5717008 1620320 5716856 +1620808 5717344 1620864 5717320 1620920 5717216 1620784 5717328 +1620808 5717344 1620832 5717344 1620864 5717320 1620784 5717328 +1620920 5717216 1620928 5717008 1620784 5717328 1620864 5717320 +1620864 5717320 1620920 5717216 1620784 5717328 1620832 5717344 +1620784 5717328 1619392 5717504 1620808 5717344 1620832 5717344 +1620928 5717008 1620280 5716936 1620784 5717328 1620920 5717216 +1620280 5716936 1619392 5717504 1620784 5717328 1620928 5717008 +1620280 5716936 1620760 5717296 1620928 5717008 1620320 5716856 +1620928 5717008 1620896 5716896 1620320 5716856 1620760 5717296 +1620896 5716896 1620368 5716792 1620320 5716856 1620760 5717296 +1620320 5716856 1620280 5716936 1620760 5717296 1620896 5716896 +1620928 5717008 1620760 5717296 1620784 5717328 1620920 5717216 +1620784 5717328 1620864 5717320 1620920 5717216 1620760 5717296 +1620784 5717328 1620832 5717344 1620864 5717320 1620760 5717296 +1620920 5717216 1620928 5717008 1620760 5717296 1620864 5717320 +1620760 5717296 1620280 5716936 1620784 5717328 1620864 5717320 +1620784 5717328 1620760 5717296 1620280 5716936 1619392 5717504 +1620280 5716936 1619392 5717424 1619392 5717504 1620760 5717296 +1620784 5717328 1620760 5717296 1619392 5717504 1620808 5717344 +1620784 5717328 1620864 5717320 1620760 5717296 1619392 5717504 +1620280 5716936 1619392 5717504 1620760 5717296 1620320 5716856 +1620760 5717296 1620920 5717216 1620928 5717008 1620896 5716896 +1620896 5716896 1620720 5717224 1620760 5717296 1620928 5717008 +1620320 5716856 1620720 5717224 1620896 5716896 1620368 5716792 +1620896 5716896 1620448 5716728 1620368 5716792 1620720 5717224 +1620368 5716792 1620320 5716856 1620720 5717224 1620448 5716728 +1620760 5717296 1620720 5717224 1620320 5716856 1620280 5716936 +1620896 5716896 1620808 5716760 1620448 5716728 1620720 5717224 +1620448 5716728 1620368 5716792 1620720 5717224 1620808 5716760 +1620896 5716896 1620872 5716832 1620808 5716760 1620720 5717224 +1620808 5716760 1620544 5716680 1620448 5716728 1620720 5717224 +1620760 5717296 1620720 5717224 1620280 5716936 1619392 5717504 +1620720 5717224 1620280 5716936 1620760 5717296 1620928 5717008 +1620760 5717296 1620920 5717216 1620928 5717008 1620720 5717224 +1620928 5717008 1620896 5716896 1620720 5717224 1620920 5717216 +1620760 5717296 1620864 5717320 1620920 5717216 1620720 5717224 +1620760 5717296 1620920 5717216 1620720 5717224 1620280 5716936 +1620320 5716856 1620280 5716936 1620720 5717224 1620368 5716792 +1620896 5716896 1620808 5716760 1620720 5717224 1620928 5717008 +1620368 5716792 1620696 5717200 1620720 5717224 1620448 5716728 +1620720 5717224 1620808 5716760 1620448 5716728 1620696 5717200 +1620448 5716728 1620368 5716792 1620696 5717200 1620808 5716760 +1620720 5717224 1620896 5716896 1620808 5716760 1620696 5717200 +1620808 5716760 1620448 5716728 1620696 5717200 1620896 5716896 +1620896 5716896 1620872 5716832 1620808 5716760 1620696 5717200 +1620808 5716760 1620544 5716680 1620448 5716728 1620696 5717200 +1620720 5717224 1620696 5717200 1620320 5716856 1620280 5716936 +1620720 5717224 1620696 5717200 1620280 5716936 1620760 5717296 +1620280 5716936 1619392 5717504 1620760 5717296 1620696 5717200 +1620280 5716936 1619392 5717424 1619392 5717504 1620696 5717200 +1620760 5717296 1620720 5717224 1620696 5717200 1619392 5717504 +1619392 5717504 1620784 5717328 1620760 5717296 1620696 5717200 +1620696 5717200 1620320 5716856 1620280 5716936 1619392 5717504 +1620696 5717200 1620760 5717296 1620720 5717224 1620896 5716896 +1620720 5717224 1620928 5717008 1620896 5716896 1620696 5717200 +1620720 5717224 1620920 5717216 1620928 5717008 1620696 5717200 +1620896 5716896 1620808 5716760 1620696 5717200 1620928 5717008 +1620720 5717224 1620928 5717008 1620696 5717200 1620760 5717296 +1620696 5717200 1620368 5716792 1620320 5716856 1620280 5716936 +1620368 5716792 1620320 5716856 1620696 5717200 1620448 5716728 +1619392 5717504 1620656 5717184 1620280 5716936 1619392 5717424 +1620696 5717200 1620656 5717184 1619392 5717504 1620760 5717296 +1620696 5717200 1620656 5717184 1620760 5717296 1620720 5717224 +1619392 5717504 1620784 5717328 1620760 5717296 1620656 5717184 +1620656 5717184 1619392 5717504 1620760 5717296 1620720 5717224 +1620280 5716936 1620656 5717184 1620696 5717200 1620320 5716856 +1620696 5717200 1620368 5716792 1620320 5716856 1620656 5717184 +1620320 5716856 1620280 5716936 1620656 5717184 1620368 5716792 +1620696 5717200 1620368 5716792 1620656 5717184 1620720 5717224 +1620696 5717200 1620448 5716728 1620368 5716792 1620656 5717184 +1620696 5717200 1620808 5716760 1620448 5716728 1620656 5717184 +1620696 5717200 1620896 5716896 1620808 5716760 1620656 5717184 +1620808 5716760 1620448 5716728 1620656 5717184 1620896 5716896 +1620696 5717200 1620928 5717008 1620896 5716896 1620656 5717184 +1620896 5716896 1620808 5716760 1620656 5717184 1620928 5717008 +1620896 5716896 1620872 5716832 1620808 5716760 1620656 5717184 +1620808 5716760 1620544 5716680 1620448 5716728 1620656 5717184 +1620808 5716760 1620768 5716712 1620544 5716680 1620656 5717184 +1620808 5716760 1620544 5716680 1620656 5717184 1620896 5716896 +1620696 5717200 1620720 5717224 1620928 5717008 1620656 5717184 +1620368 5716792 1620320 5716856 1620656 5717184 1620448 5716728 +1620696 5717200 1620928 5717008 1620656 5717184 1620720 5717224 +1620448 5716728 1620368 5716792 1620656 5717184 1620544 5716680 +1620656 5717184 1620280 5716936 1619392 5717504 1620760 5717296 +1620280 5716936 1619392 5717504 1620656 5717184 1620320 5716856 +1619392 5717504 1620608 5717184 1620280 5716936 1619392 5717424 +1620656 5717184 1620608 5717184 1619392 5717504 1620760 5717296 +1619392 5717504 1620784 5717328 1620760 5717296 1620608 5717184 +1619392 5717504 1620808 5717344 1620784 5717328 1620608 5717184 +1620656 5717184 1620608 5717184 1620760 5717296 1620720 5717224 +1620656 5717184 1620608 5717184 1620720 5717224 1620696 5717200 +1620760 5717296 1620720 5717224 1620608 5717184 1620784 5717328 +1620656 5717184 1620280 5716936 1620608 5717184 1620720 5717224 +1620280 5716936 1620608 5717184 1620656 5717184 1620320 5716856 +1620280 5716936 1619392 5717504 1620608 5717184 1620320 5716856 +1620656 5717184 1620368 5716792 1620320 5716856 1620608 5717184 +1620656 5717184 1620448 5716728 1620368 5716792 1620608 5717184 +1620368 5716792 1620320 5716856 1620608 5717184 1620448 5716728 +1620656 5717184 1620544 5716680 1620448 5716728 1620608 5717184 +1620656 5717184 1620808 5716760 1620544 5716680 1620608 5717184 +1620808 5716760 1620768 5716712 1620544 5716680 1620608 5717184 +1620656 5717184 1620896 5716896 1620808 5716760 1620608 5717184 +1620448 5716728 1620368 5716792 1620608 5717184 1620544 5716680 +1620544 5716680 1620448 5716728 1620608 5717184 1620808 5716760 +1620608 5717184 1620720 5717224 1620656 5717184 1620808 5716760 +1620320 5716856 1620280 5716936 1620608 5717184 1620368 5716792 +1620608 5717184 1620280 5716936 1619392 5717504 1620784 5717328 +1619392 5717504 1620520 5717184 1620280 5716936 1619392 5717424 +1620280 5716936 1619360 5717312 1619392 5717424 1620520 5717184 +1620280 5716936 1620520 5717184 1620608 5717184 1620320 5716856 +1620520 5717184 1619392 5717504 1620608 5717184 1620320 5716856 +1619392 5717504 1620608 5717184 1620520 5717184 1619392 5717424 +1620520 5717184 1620320 5716856 1620280 5716936 1619392 5717424 +1620608 5717184 1620368 5716792 1620320 5716856 1620520 5717184 +1620608 5717184 1620368 5716792 1620520 5717184 1619392 5717504 +1620320 5716856 1620280 5716936 1620520 5717184 1620368 5716792 +1620608 5717184 1620448 5716728 1620368 5716792 1620520 5717184 +1620608 5717184 1620448 5716728 1620520 5717184 1619392 5717504 +1620608 5717184 1620544 5716680 1620448 5716728 1620520 5717184 +1620368 5716792 1620320 5716856 1620520 5717184 1620448 5716728 +1620608 5717184 1620520 5717184 1619392 5717504 1620784 5717328 +1620608 5717184 1620448 5716728 1620520 5717184 1620784 5717328 +1620520 5717184 1619392 5717424 1619392 5717504 1620784 5717328 +1619392 5717504 1620808 5717344 1620784 5717328 1620520 5717184 +1620608 5717184 1620520 5717184 1620784 5717328 1620760 5717296 +1620608 5717184 1620448 5716728 1620520 5717184 1620760 5717296 +1620608 5717184 1620520 5717184 1620760 5717296 1620720 5717224 +1620520 5717184 1619392 5717504 1620784 5717328 1620760 5717296 +1620520 5717184 1620472 5717192 1619392 5717424 1619392 5717504 +1619392 5717424 1620472 5717192 1620280 5716936 1619360 5717312 +1620520 5717184 1620472 5717192 1619392 5717504 1620784 5717328 +1620472 5717192 1619392 5717424 1619392 5717504 1620784 5717328 +1620520 5717184 1620280 5716936 1620472 5717192 1620784 5717328 +1620280 5716936 1620472 5717192 1620520 5717184 1620320 5716856 +1619392 5717504 1620808 5717344 1620784 5717328 1620472 5717192 +1619392 5717504 1620808 5717344 1620472 5717192 1619392 5717424 +1620784 5717328 1620520 5717184 1620472 5717192 1620808 5717344 +1619392 5717504 1619336 5717528 1620808 5717344 1620472 5717192 +1620472 5717192 1620280 5716936 1619392 5717424 1619392 5717504 +1620520 5717184 1620472 5717192 1620784 5717328 1620760 5717296 +1620472 5717192 1620808 5717344 1620784 5717328 1620760 5717296 +1620520 5717184 1620280 5716936 1620472 5717192 1620760 5717296 +1620520 5717184 1620472 5717192 1620760 5717296 1620608 5717184 +1619392 5717424 1620440 5717184 1620280 5716936 1619360 5717312 +1620472 5717192 1620440 5717184 1619392 5717424 1619392 5717504 +1620472 5717192 1620440 5717184 1619392 5717504 1620808 5717344 +1620472 5717192 1620280 5716936 1620440 5717184 1619392 5717504 +1620280 5716936 1620440 5717184 1620472 5717192 1620520 5717184 +1620280 5716936 1620440 5717184 1620520 5717184 1620320 5716856 +1620520 5717184 1620368 5716792 1620320 5716856 1620440 5717184 +1620440 5717184 1619392 5717504 1620472 5717192 1620520 5717184 +1620440 5717184 1620472 5717192 1620520 5717184 1620320 5716856 +1620440 5717184 1620280 5716936 1619392 5717424 1619392 5717504 +1620280 5716936 1619392 5717424 1620440 5717184 1620320 5716856 +1619392 5717424 1620408 5717168 1620280 5716936 1619360 5717312 +1620440 5717184 1620408 5717168 1619392 5717424 1619392 5717504 +1620440 5717184 1620408 5717168 1619392 5717504 1620472 5717192 +1620280 5716936 1620408 5717168 1620440 5717184 1620320 5716856 +1620440 5717184 1620520 5717184 1620320 5716856 1620408 5717168 +1620520 5717184 1620368 5716792 1620320 5716856 1620408 5717168 +1620440 5717184 1620472 5717192 1620520 5717184 1620408 5717168 +1620320 5716856 1620280 5716936 1620408 5717168 1620520 5717184 +1620440 5717184 1620520 5717184 1620408 5717168 1619392 5717504 +1620408 5717168 1620280 5716936 1619392 5717424 1619392 5717504 +1620280 5716936 1619392 5717424 1620408 5717168 1620320 5716856 +1619392 5717424 1620376 5717136 1620280 5716936 1619360 5717312 +1620408 5717168 1620376 5717136 1619392 5717424 1619392 5717504 +1620408 5717168 1620376 5717136 1619392 5717504 1620440 5717184 +1620408 5717168 1620280 5716936 1620376 5717136 1619392 5717504 +1620280 5716936 1620376 5717136 1620408 5717168 1620320 5716856 +1620408 5717168 1620520 5717184 1620320 5716856 1620376 5717136 +1620520 5717184 1620368 5716792 1620320 5716856 1620376 5717136 +1620408 5717168 1620440 5717184 1620520 5717184 1620376 5717136 +1620376 5717136 1619392 5717504 1620408 5717168 1620520 5717184 +1620376 5717136 1620280 5716936 1619392 5717424 1619392 5717504 +1620320 5716856 1620280 5716936 1620376 5717136 1620520 5717184 +1620280 5716936 1619392 5717424 1620376 5717136 1620320 5716856 +1619392 5717424 1620328 5717080 1620280 5716936 1619360 5717312 +1620280 5716936 1619328 5717256 1619360 5717312 1620328 5717080 +1620376 5717136 1620328 5717080 1619392 5717424 1619392 5717504 +1620280 5716936 1620328 5717080 1620376 5717136 1620320 5716856 +1620376 5717136 1620520 5717184 1620320 5716856 1620328 5717080 +1620520 5717184 1620368 5716792 1620320 5716856 1620328 5717080 +1620376 5717136 1620408 5717168 1620520 5717184 1620328 5717080 +1620320 5716856 1620280 5716936 1620328 5717080 1620520 5717184 +1620328 5717080 1619392 5717424 1620376 5717136 1620520 5717184 +1619392 5717424 1620376 5717136 1620328 5717080 1619360 5717312 +1620328 5717080 1620320 5716856 1620280 5716936 1619360 5717312 +1620328 5717080 1620280 5716992 1619360 5717312 1619392 5717424 +1619360 5717312 1620280 5716992 1620280 5716936 1619328 5717256 +1620280 5716936 1619296 5717232 1619328 5717256 1620280 5716992 +1620280 5716992 1620328 5717080 1620280 5716936 1619328 5717256 +1620328 5717080 1620280 5716992 1619392 5717424 1620376 5717136 +1620328 5717080 1620280 5716936 1620280 5716992 1619392 5717424 +1620280 5716936 1620280 5716992 1620328 5717080 1620320 5716856 +1620280 5716992 1619328 5717256 1619360 5717312 1619392 5717424 +1617184 5711760 1617944 5715264 1618824 5717440 1617312 5711816 +1617184 5711760 1611528 5715552 1617944 5715264 1617312 5711816 +1611528 5715552 1617944 5715264 1617184 5711760 1616808 5711600 +1617944 5715264 1617312 5711816 1617184 5711760 1616808 5711600 +1618824 5717440 1617944 5715264 1611528 5715552 1618816 5717464 +1611528 5715552 1611520 5715576 1618816 5717464 1617944 5715264 +1618816 5717464 1618824 5717440 1617944 5715264 1611520 5715576 +1618824 5717440 1618856 5717400 1617312 5711816 1617944 5715264 +1617312 5711816 1617184 5711760 1617944 5715264 1618856 5717400 +1618856 5717400 1617888 5712008 1617312 5711816 1617944 5715264 +1617312 5711816 1617184 5711760 1617944 5715264 1617888 5712008 +1618856 5717400 1617888 5712008 1617944 5715264 1618824 5717440 +1618856 5717400 1619656 5713744 1617888 5712008 1617944 5715264 +1617888 5712008 1617312 5711816 1617944 5715264 1619656 5713744 +1618856 5717400 1618888 5717376 1619656 5713744 1617944 5715264 +1618888 5717376 1619792 5714008 1619656 5713744 1617944 5715264 +1618888 5717376 1619792 5714008 1617944 5715264 1618856 5717400 +1618888 5717376 1619864 5714184 1619792 5714008 1617944 5715264 +1618888 5717376 1619864 5714184 1617944 5715264 1618856 5717400 +1619792 5714008 1619656 5713744 1617944 5715264 1619864 5714184 +1618856 5717400 1618888 5717376 1617944 5715264 1618824 5717440 +1619656 5713744 1617888 5712008 1617944 5715264 1619792 5714008 +1617888 5712008 1617736 5711920 1617312 5711816 1617944 5715264 +1611520 5715576 1611456 5715680 1618816 5717464 1617944 5715264 +1611456 5715680 1618832 5717504 1618816 5717464 1617944 5715264 +1611520 5715576 1611456 5715680 1617944 5715264 1611528 5715552 +1618816 5717464 1618824 5717440 1617944 5715264 1611456 5715680 +1617944 5715264 1618816 5717464 1618824 5717440 1618856 5717400 +1611528 5715552 1611520 5715576 1617944 5715264 1616808 5711600 +1611520 5715576 1611464 5715656 1611456 5715680 1617944 5715264 +1619656 5713744 1618048 5712072 1617888 5712008 1617944 5715264 +1617888 5712008 1617312 5711816 1617944 5715264 1618048 5712072 +1619656 5713744 1618160 5712112 1618048 5712072 1617944 5715264 +1619656 5713744 1619688 5713672 1618160 5712112 1617944 5715264 +1619656 5713744 1618160 5712112 1617944 5715264 1619792 5714008 +1618048 5712072 1617888 5712008 1617944 5715264 1618160 5712112 +1617184 5711760 1617000 5711648 1616808 5711600 1617944 5715264 +1611528 5715552 1617944 5715264 1616808 5711600 1616712 5711552 +1611528 5715552 1617944 5715264 1616712 5711552 1611512 5715528 +1617944 5715264 1617184 5711760 1616808 5711600 1616712 5711552 +1611528 5715552 1611520 5715576 1617944 5715264 1616712 5711552 +1616808 5711600 1616736 5711544 1616712 5711552 1617944 5715264 +1618888 5717376 1619920 5714264 1619864 5714184 1617944 5715264 +1618888 5717376 1619920 5714264 1617944 5715264 1618856 5717400 +1619864 5714184 1619792 5714008 1617944 5715264 1619920 5714264 +1618888 5717376 1619280 5717232 1619920 5714264 1617944 5715264 +1618888 5717376 1619280 5717232 1617944 5715264 1618856 5717400 +1619280 5717232 1620352 5714744 1619920 5714264 1617944 5715264 +1619280 5717232 1619296 5717232 1620352 5714744 1617944 5715264 +1619296 5717232 1620368 5716792 1620352 5714744 1617944 5715264 +1620352 5714744 1620256 5714592 1619920 5714264 1617944 5715264 +1620256 5714592 1620144 5714440 1619920 5714264 1617944 5715264 +1620352 5714744 1620256 5714592 1617944 5715264 1619296 5717232 +1619280 5717232 1619296 5717232 1617944 5715264 1618888 5717376 +1618888 5717376 1619248 5717248 1619280 5717232 1617944 5715264 +1618888 5717376 1619248 5717248 1617944 5715264 1618856 5717400 +1619280 5717232 1619296 5717232 1617944 5715264 1619248 5717248 +1618888 5717376 1618952 5717376 1619248 5717248 1617944 5715264 +1619920 5714264 1619864 5714184 1617944 5715264 1620256 5714592 +1618160 5712112 1617976 5715224 1619656 5713744 1619688 5713672 +1617944 5715264 1617976 5715224 1618160 5712112 1618048 5712072 +1617976 5715224 1619656 5713744 1618160 5712112 1618048 5712072 +1619656 5713744 1617976 5715224 1617944 5715264 1619792 5714008 +1617944 5715264 1619864 5714184 1619792 5714008 1617976 5715224 +1617944 5715264 1619920 5714264 1619864 5714184 1617976 5715224 +1619864 5714184 1619792 5714008 1617976 5715224 1619920 5714264 +1619656 5713744 1618160 5712112 1617976 5715224 1619792 5714008 +1619792 5714008 1619656 5713744 1617976 5715224 1619864 5714184 +1617944 5715264 1619920 5714264 1617976 5715224 1618048 5712072 +1617944 5715264 1617976 5715224 1618048 5712072 1617888 5712008 +1617944 5715264 1617976 5715224 1617888 5712008 1617312 5711816 +1617944 5715264 1617976 5715224 1617312 5711816 1617184 5711760 +1617944 5715264 1617976 5715224 1617184 5711760 1616808 5711600 +1617976 5715224 1617888 5712008 1617312 5711816 1617184 5711760 +1617976 5715224 1618160 5712112 1618048 5712072 1617888 5712008 +1617888 5712008 1617736 5711920 1617312 5711816 1617976 5715224 +1617944 5715264 1619920 5714264 1617976 5715224 1617184 5711760 +1617976 5715224 1618048 5712072 1617888 5712008 1617312 5711816 +1617944 5715264 1620256 5714592 1619920 5714264 1617976 5715224 +1619920 5714264 1619864 5714184 1617976 5715224 1620256 5714592 +1617944 5715264 1620352 5714744 1620256 5714592 1617976 5715224 +1620256 5714592 1620144 5714440 1619920 5714264 1617976 5715224 +1617944 5715264 1619296 5717232 1620352 5714744 1617976 5715224 +1619296 5717232 1620368 5716792 1620352 5714744 1617976 5715224 +1617944 5715264 1619280 5717232 1619296 5717232 1617976 5715224 +1620352 5714744 1620256 5714592 1617976 5715224 1619296 5717232 +1619296 5717232 1620352 5714744 1617976 5715224 1619280 5717232 +1617944 5715264 1619248 5717248 1619280 5717232 1617976 5715224 +1617944 5715264 1619280 5717232 1617976 5715224 1617184 5711760 +1620256 5714592 1619920 5714264 1617976 5715224 1620352 5714744 +1617976 5715224 1618080 5715184 1619920 5714264 1619864 5714184 +1618080 5715184 1620256 5714592 1619920 5714264 1619864 5714184 +1617976 5715224 1620256 5714592 1618080 5715184 1619864 5714184 +1617976 5715224 1618080 5715184 1619864 5714184 1619792 5714008 +1617976 5715224 1620256 5714592 1618080 5715184 1619792 5714008 +1618080 5715184 1619920 5714264 1619864 5714184 1619792 5714008 +1619920 5714264 1618080 5715184 1620256 5714592 1620144 5714440 +1617976 5715224 1618080 5715184 1619792 5714008 1619656 5713744 +1617976 5715224 1620256 5714592 1618080 5715184 1619656 5713744 +1618080 5715184 1619864 5714184 1619792 5714008 1619656 5713744 +1617976 5715224 1618080 5715184 1619656 5713744 1618160 5712112 +1617976 5715224 1618080 5715184 1618160 5712112 1618048 5712072 +1617976 5715224 1620256 5714592 1618080 5715184 1618048 5712072 +1619656 5713744 1619688 5713672 1618160 5712112 1618080 5715184 +1617976 5715224 1618080 5715184 1618048 5712072 1617888 5712008 +1618080 5715184 1619792 5714008 1619656 5713744 1618160 5712112 +1620256 5714592 1618080 5715184 1617976 5715224 1620352 5714744 +1618080 5715184 1618048 5712072 1617976 5715224 1620352 5714744 +1617976 5715224 1619296 5717232 1620352 5714744 1618080 5715184 +1617976 5715224 1619296 5717232 1618080 5715184 1618048 5712072 +1619296 5717232 1620368 5716792 1620352 5714744 1618080 5715184 +1619296 5717232 1620320 5716856 1620368 5716792 1618080 5715184 +1620368 5716792 1620384 5714776 1620352 5714744 1618080 5715184 +1620368 5716792 1620448 5716728 1620384 5714776 1618080 5715184 +1620368 5716792 1620384 5714776 1618080 5715184 1619296 5717232 +1619296 5717232 1620368 5716792 1618080 5715184 1617976 5715224 +1617976 5715224 1619280 5717232 1619296 5717232 1618080 5715184 +1617976 5715224 1619280 5717232 1618080 5715184 1618048 5712072 +1617976 5715224 1617944 5715264 1619280 5717232 1618080 5715184 +1617976 5715224 1617944 5715264 1618080 5715184 1618048 5712072 +1619296 5717232 1620368 5716792 1618080 5715184 1619280 5717232 +1619280 5717232 1619296 5717232 1618080 5715184 1617944 5715264 +1617944 5715264 1619248 5717248 1619280 5717232 1618080 5715184 +1617944 5715264 1619248 5717248 1618080 5715184 1617976 5715224 +1619280 5717232 1619296 5717232 1618080 5715184 1619248 5717248 +1617944 5715264 1618888 5717376 1619248 5717248 1618080 5715184 +1617944 5715264 1618856 5717400 1618888 5717376 1618080 5715184 +1617944 5715264 1618888 5717376 1618080 5715184 1617976 5715224 +1619248 5717248 1619280 5717232 1618080 5715184 1618888 5717376 +1618888 5717376 1618952 5717376 1619248 5717248 1618080 5715184 +1620352 5714744 1620256 5714592 1618080 5715184 1620384 5714776 +1618080 5715184 1619656 5713744 1618160 5712112 1618048 5712072 +1620256 5714592 1619920 5714264 1618080 5715184 1620352 5714744 +1620384 5714776 1618152 5715200 1620368 5716792 1620448 5716728 +1618080 5715184 1618152 5715200 1620384 5714776 1620352 5714744 +1620368 5716792 1618152 5715200 1618080 5715184 1619296 5717232 +1620368 5716792 1618152 5715200 1619296 5717232 1620320 5716856 +1618080 5715184 1619280 5717232 1619296 5717232 1618152 5715200 +1619296 5717232 1620368 5716792 1618152 5715200 1619280 5717232 +1618080 5715184 1619248 5717248 1619280 5717232 1618152 5715200 +1619280 5717232 1619296 5717232 1618152 5715200 1619248 5717248 +1618080 5715184 1618888 5717376 1619248 5717248 1618152 5715200 +1619248 5717248 1619280 5717232 1618152 5715200 1618888 5717376 +1618080 5715184 1617944 5715264 1618888 5717376 1618152 5715200 +1617944 5715264 1618856 5717400 1618888 5717376 1618152 5715200 +1618080 5715184 1617976 5715224 1617944 5715264 1618152 5715200 +1618888 5717376 1619248 5717248 1618152 5715200 1617944 5715264 +1618152 5715200 1620368 5716792 1620384 5714776 1620352 5714744 +1620368 5716792 1620384 5714776 1618152 5715200 1619296 5717232 +1618888 5717376 1618952 5717376 1619248 5717248 1618152 5715200 +1618080 5715184 1618152 5715200 1620352 5714744 1620256 5714592 +1618152 5715200 1620384 5714776 1620352 5714744 1620256 5714592 +1618080 5715184 1618152 5715200 1620256 5714592 1619920 5714264 +1618080 5715184 1618152 5715200 1619920 5714264 1619864 5714184 +1618080 5715184 1618152 5715200 1619864 5714184 1619792 5714008 +1618080 5715184 1618152 5715200 1619792 5714008 1619656 5713744 +1618152 5715200 1619864 5714184 1619792 5714008 1619656 5713744 +1620256 5714592 1620144 5714440 1619920 5714264 1618152 5715200 +1618080 5715184 1618152 5715200 1619656 5713744 1618160 5712112 +1618152 5715200 1619920 5714264 1619864 5714184 1619792 5714008 +1618152 5715200 1620352 5714744 1620256 5714592 1619920 5714264 +1618152 5715200 1620256 5714592 1619920 5714264 1619864 5714184 +1618080 5715184 1617944 5715264 1618152 5715200 1619656 5713744 +1620368 5716792 1618176 5715224 1619296 5717232 1620320 5716856 +1619296 5717232 1618176 5715224 1618152 5715200 1619280 5717232 +1618152 5715200 1619248 5717248 1619280 5717232 1618176 5715224 +1619280 5717232 1619296 5717232 1618176 5715224 1619248 5717248 +1618152 5715200 1618888 5717376 1619248 5717248 1618176 5715224 +1619248 5717248 1619280 5717232 1618176 5715224 1618888 5717376 +1618152 5715200 1617944 5715264 1618888 5717376 1618176 5715224 +1617944 5715264 1618856 5717400 1618888 5717376 1618176 5715224 +1618888 5717376 1619248 5717248 1618176 5715224 1617944 5715264 +1619296 5717232 1620368 5716792 1618176 5715224 1619280 5717232 +1618152 5715200 1618080 5715184 1617944 5715264 1618176 5715224 +1618080 5715184 1617976 5715224 1617944 5715264 1618176 5715224 +1617944 5715264 1618888 5717376 1618176 5715224 1617976 5715224 +1618080 5715184 1617976 5715224 1618176 5715224 1618152 5715200 +1618152 5715200 1618176 5715224 1620368 5716792 1620384 5714776 +1620368 5716792 1620448 5716728 1620384 5714776 1618176 5715224 +1618152 5715200 1618176 5715224 1620384 5714776 1620352 5714744 +1618152 5715200 1618176 5715224 1620352 5714744 1620256 5714592 +1618176 5715224 1620384 5714776 1620352 5714744 1620256 5714592 +1618176 5715224 1620368 5716792 1620384 5714776 1620352 5714744 +1618176 5715224 1620256 5714592 1618152 5715200 1618080 5715184 +1618176 5715224 1619296 5717232 1620368 5716792 1620384 5714776 +1618888 5717376 1618952 5717376 1619248 5717248 1618176 5715224 +1618152 5715200 1618176 5715224 1620256 5714592 1619920 5714264 +1618176 5715224 1620352 5714744 1620256 5714592 1619920 5714264 +1620256 5714592 1620144 5714440 1619920 5714264 1618176 5715224 +1618152 5715200 1618080 5715184 1618176 5715224 1619920 5714264 +1618152 5715200 1618176 5715224 1619920 5714264 1619864 5714184 +1618152 5715200 1618176 5715224 1619864 5714184 1619792 5714008 +1618152 5715200 1618080 5715184 1618176 5715224 1619864 5714184 +1618176 5715224 1620256 5714592 1619920 5714264 1619864 5714184 +1620368 5716792 1618240 5715296 1619296 5717232 1620320 5716856 +1619296 5717232 1618240 5715296 1618176 5715224 1619280 5717232 +1619296 5717232 1620368 5716792 1618240 5715296 1619280 5717232 +1618176 5715224 1619248 5717248 1619280 5717232 1618240 5715296 +1619280 5717232 1619296 5717232 1618240 5715296 1619248 5717248 +1618176 5715224 1618888 5717376 1619248 5717248 1618240 5715296 +1619248 5717248 1619280 5717232 1618240 5715296 1618888 5717376 +1618176 5715224 1617944 5715264 1618888 5717376 1618240 5715296 +1617944 5715264 1618856 5717400 1618888 5717376 1618240 5715296 +1618888 5717376 1619248 5717248 1618240 5715296 1618856 5717400 +1617944 5715264 1618856 5717400 1618240 5715296 1618176 5715224 +1618176 5715224 1617976 5715224 1617944 5715264 1618240 5715296 +1618240 5715296 1620368 5716792 1618176 5715224 1617944 5715264 +1617944 5715264 1618824 5717440 1618856 5717400 1618240 5715296 +1618176 5715224 1618240 5715296 1620368 5716792 1620384 5714776 +1618240 5715296 1619296 5717232 1620368 5716792 1620384 5714776 +1620368 5716792 1620448 5716728 1620384 5714776 1618240 5715296 +1618176 5715224 1617944 5715264 1618240 5715296 1620384 5714776 +1618176 5715224 1618240 5715296 1620384 5714776 1620352 5714744 +1618176 5715224 1617944 5715264 1618240 5715296 1620352 5714744 +1618176 5715224 1618240 5715296 1620352 5714744 1620256 5714592 +1618176 5715224 1618240 5715296 1620256 5714592 1619920 5714264 +1620256 5714592 1620144 5714440 1619920 5714264 1618240 5715296 +1618176 5715224 1617944 5715264 1618240 5715296 1619920 5714264 +1618240 5715296 1620352 5714744 1620256 5714592 1619920 5714264 +1618240 5715296 1620384 5714776 1620352 5714744 1620256 5714592 +1618240 5715296 1620368 5716792 1620384 5714776 1620352 5714744 +1618888 5717376 1618952 5717376 1619248 5717248 1618240 5715296 +1618176 5715224 1618240 5715296 1619920 5714264 1619864 5714184 +1618240 5715296 1620256 5714592 1619920 5714264 1619864 5714184 +1618176 5715224 1617944 5715264 1618240 5715296 1619864 5714184 +1618176 5715224 1618240 5715296 1619864 5714184 1618152 5715200 +1618240 5715296 1618232 5715400 1618856 5717400 1618888 5717376 +1618240 5715296 1618232 5715400 1618888 5717376 1619248 5717248 +1618232 5715400 1618856 5717400 1618888 5717376 1619248 5717248 +1618240 5715296 1618232 5715400 1619248 5717248 1619280 5717232 +1618240 5715296 1618232 5715400 1619280 5717232 1619296 5717232 +1618240 5715296 1618232 5715400 1619296 5717232 1620368 5716792 +1619296 5717232 1620320 5716856 1620368 5716792 1618232 5715400 +1618240 5715296 1618232 5715400 1620368 5716792 1620384 5714776 +1618232 5715400 1619280 5717232 1619296 5717232 1620368 5716792 +1618232 5715400 1619296 5717232 1620368 5716792 1620384 5714776 +1620368 5716792 1620448 5716728 1620384 5714776 1618232 5715400 +1618232 5715400 1619248 5717248 1619280 5717232 1619296 5717232 +1618232 5715400 1618888 5717376 1619248 5717248 1619280 5717232 +1617944 5715264 1618232 5715400 1618240 5715296 1618176 5715224 +1617944 5715264 1618856 5717400 1618232 5715400 1618176 5715224 +1617944 5715264 1618232 5715400 1618176 5715224 1617976 5715224 +1618856 5717400 1618232 5715400 1617944 5715264 1618824 5717440 +1618232 5715400 1618176 5715224 1617944 5715264 1618824 5717440 +1617944 5715264 1618816 5717464 1618824 5717440 1618232 5715400 +1618240 5715296 1618232 5715400 1620384 5714776 1620352 5714744 +1618232 5715400 1620368 5716792 1620384 5714776 1620352 5714744 +1618240 5715296 1618232 5715400 1620352 5714744 1620256 5714592 +1618240 5715296 1618176 5715224 1618232 5715400 1620352 5714744 +1618232 5715400 1618824 5717440 1618856 5717400 1618888 5717376 +1618888 5717376 1618952 5717376 1619248 5717248 1618232 5715400 +1617944 5715264 1618208 5715448 1618232 5715400 1618176 5715224 +1618232 5715400 1618208 5715448 1618824 5717440 1618856 5717400 +1618208 5715448 1617944 5715264 1618824 5717440 1618856 5717400 +1618824 5717440 1618208 5715448 1617944 5715264 1618816 5717464 +1618208 5715448 1618232 5715400 1617944 5715264 1618816 5717464 +1618824 5717440 1618856 5717400 1618208 5715448 1618816 5717464 +1617944 5715264 1611456 5715680 1618816 5717464 1618208 5715448 +1618232 5715400 1618208 5715448 1618856 5717400 1618888 5717376 +1618232 5715400 1618208 5715448 1618888 5717376 1619248 5717248 +1618232 5715400 1618208 5715448 1619248 5717248 1619280 5717232 +1618208 5715448 1618888 5717376 1619248 5717248 1619280 5717232 +1618232 5715400 1618208 5715448 1619280 5717232 1619296 5717232 +1618232 5715400 1618208 5715448 1619296 5717232 1620368 5716792 +1618208 5715448 1619248 5717248 1619280 5717232 1619296 5717232 +1618208 5715448 1618824 5717440 1618856 5717400 1618888 5717376 +1618208 5715448 1618856 5717400 1618888 5717376 1619248 5717248 +1618232 5715400 1617944 5715264 1618208 5715448 1619296 5717232 +1618888 5717376 1618952 5717376 1619248 5717248 1618208 5715448 +1617944 5715264 1618184 5715464 1618208 5715448 1618232 5715400 +1617944 5715264 1618816 5717464 1618184 5715464 1618232 5715400 +1617944 5715264 1618184 5715464 1618232 5715400 1618176 5715224 +1618184 5715464 1618208 5715448 1618232 5715400 1618176 5715224 +1617944 5715264 1618816 5717464 1618184 5715464 1618176 5715224 +1618184 5715464 1618816 5717464 1618208 5715448 1618232 5715400 +1618232 5715400 1618240 5715296 1618176 5715224 1618184 5715464 +1617944 5715264 1618184 5715464 1618176 5715224 1617976 5715224 +1618816 5717464 1618184 5715464 1617944 5715264 1611456 5715680 +1618208 5715448 1618184 5715464 1618816 5717464 1618824 5717440 +1618184 5715464 1617944 5715264 1618816 5717464 1618824 5717440 +1618208 5715448 1618184 5715464 1618824 5717440 1618856 5717400 +1618208 5715448 1618232 5715400 1618184 5715464 1618856 5717400 +1618208 5715448 1618184 5715464 1618856 5717400 1618888 5717376 +1618184 5715464 1618824 5717440 1618856 5717400 1618888 5717376 +1618208 5715448 1618232 5715400 1618184 5715464 1618888 5717376 +1618184 5715464 1618816 5717464 1618824 5717440 1618856 5717400 +1618208 5715448 1618184 5715464 1618888 5717376 1619248 5717248 +1618208 5715448 1618232 5715400 1618184 5715464 1619248 5717248 +1618208 5715448 1618184 5715464 1619248 5717248 1619280 5717232 +1618184 5715464 1618856 5717400 1618888 5717376 1619248 5717248 +1618888 5717376 1618952 5717376 1619248 5717248 1618184 5715464 +1618184 5715464 1618104 5715440 1618816 5717464 1618824 5717440 +1618184 5715464 1617944 5715264 1618104 5715440 1618824 5717440 +1617944 5715264 1618104 5715440 1618184 5715464 1618176 5715224 +1618104 5715440 1618824 5717440 1618184 5715464 1618176 5715224 +1618104 5715440 1617944 5715264 1618816 5717464 1618824 5717440 +1618184 5715464 1618232 5715400 1618176 5715224 1618104 5715440 +1618184 5715464 1618208 5715448 1618232 5715400 1618104 5715440 +1618184 5715464 1618208 5715448 1618104 5715440 1618824 5717440 +1618176 5715224 1617944 5715264 1618104 5715440 1618232 5715400 +1618232 5715400 1618176 5715224 1618104 5715440 1618208 5715448 +1617944 5715264 1618816 5717464 1618104 5715440 1618176 5715224 +1618232 5715400 1618240 5715296 1618176 5715224 1618104 5715440 +1618176 5715224 1617944 5715264 1618104 5715440 1618240 5715296 +1618232 5715400 1618240 5715296 1618104 5715440 1618208 5715448 +1617944 5715264 1618104 5715440 1618176 5715224 1617976 5715224 +1618104 5715440 1618240 5715296 1618176 5715224 1617976 5715224 +1617944 5715264 1618816 5717464 1618104 5715440 1617976 5715224 +1618176 5715224 1618080 5715184 1617976 5715224 1618104 5715440 +1618176 5715224 1618080 5715184 1618104 5715440 1618240 5715296 +1617976 5715224 1617944 5715264 1618104 5715440 1618080 5715184 +1618816 5717464 1618104 5715440 1617944 5715264 1611456 5715680 +1618176 5715224 1618152 5715200 1618080 5715184 1618104 5715440 +1618184 5715464 1618104 5715440 1618824 5717440 1618856 5717400 +1618104 5715440 1618040 5715424 1618816 5717464 1618824 5717440 +1618104 5715440 1618040 5715424 1618824 5717440 1618184 5715464 +1618104 5715440 1617944 5715264 1618040 5715424 1618824 5717440 +1617944 5715264 1618040 5715424 1618104 5715440 1617976 5715224 +1618040 5715424 1618824 5717440 1618104 5715440 1617976 5715224 +1618040 5715424 1617944 5715264 1618816 5717464 1618824 5717440 +1617944 5715264 1618816 5717464 1618040 5715424 1617976 5715224 +1618104 5715440 1618080 5715184 1617976 5715224 1618040 5715424 +1618104 5715440 1618080 5715184 1618040 5715424 1618824 5717440 +1617976 5715224 1617944 5715264 1618040 5715424 1618080 5715184 +1618104 5715440 1618176 5715224 1618080 5715184 1618040 5715424 +1618104 5715440 1618240 5715296 1618176 5715224 1618040 5715424 +1618104 5715440 1618176 5715224 1618040 5715424 1618824 5717440 +1618080 5715184 1617976 5715224 1618040 5715424 1618176 5715224 +1618816 5717464 1618040 5715424 1617944 5715264 1611456 5715680 +1618816 5717464 1618824 5717440 1618040 5715424 1611456 5715680 +1618040 5715424 1617976 5715224 1617944 5715264 1611456 5715680 +1618816 5717464 1618040 5715424 1611456 5715680 1618832 5717504 +1618176 5715224 1618152 5715200 1618080 5715184 1618040 5715424 +1617944 5715264 1611520 5715576 1611456 5715680 1618040 5715424 +1617944 5715264 1611520 5715576 1618040 5715424 1617976 5715224 +1617944 5715264 1611528 5715552 1611520 5715576 1618040 5715424 +1611456 5715680 1618816 5717464 1618040 5715424 1611520 5715576 +1611520 5715576 1611464 5715656 1611456 5715680 1618040 5715424 +1617944 5715264 1617992 5715384 1618040 5715424 1617976 5715224 +1618040 5715424 1618080 5715184 1617976 5715224 1617992 5715384 +1617992 5715384 1611520 5715576 1618040 5715424 1618080 5715184 +1617976 5715224 1617944 5715264 1617992 5715384 1618080 5715184 +1617944 5715264 1611520 5715576 1617992 5715384 1617976 5715224 +1618040 5715424 1618176 5715224 1618080 5715184 1617992 5715384 +1618080 5715184 1617976 5715224 1617992 5715384 1618176 5715224 +1618040 5715424 1618176 5715224 1617992 5715384 1611520 5715576 +1618040 5715424 1618104 5715440 1618176 5715224 1617992 5715384 +1611520 5715576 1617992 5715384 1617944 5715264 1611528 5715552 +1611520 5715576 1618040 5715424 1617992 5715384 1611528 5715552 +1617992 5715384 1617976 5715224 1617944 5715264 1611528 5715552 +1618176 5715224 1618152 5715200 1618080 5715184 1617992 5715384 +1618040 5715424 1617992 5715384 1611520 5715576 1611456 5715680 +1618040 5715424 1618176 5715224 1617992 5715384 1611456 5715680 +1617992 5715384 1611528 5715552 1611520 5715576 1611456 5715680 +1618040 5715424 1617992 5715384 1611456 5715680 1618816 5717464 +1618040 5715424 1617992 5715384 1618816 5717464 1618824 5717440 +1618040 5715424 1618176 5715224 1617992 5715384 1618816 5717464 +1611456 5715680 1618832 5717504 1618816 5717464 1617992 5715384 +1617992 5715384 1611520 5715576 1611456 5715680 1618816 5717464 +1617944 5715264 1616712 5711552 1611528 5715552 1617992 5715384 +1611520 5715576 1611464 5715656 1611456 5715680 1617992 5715384 +1617944 5715264 1617936 5715312 1617992 5715384 1617976 5715224 +1617992 5715384 1617936 5715312 1611528 5715552 1611520 5715576 +1617992 5715384 1617936 5715312 1611520 5715576 1611456 5715680 +1617992 5715384 1617944 5715264 1617936 5715312 1611456 5715680 +1617936 5715312 1617944 5715264 1611528 5715552 1611520 5715576 +1617936 5715312 1611528 5715552 1611520 5715576 1611456 5715680 +1617992 5715384 1617936 5715312 1611456 5715680 1618816 5717464 +1611528 5715552 1617936 5715312 1617944 5715264 1616712 5711552 +1611520 5715576 1611464 5715656 1611456 5715680 1617936 5715312 +1623576 5701960 1623224 5702088 1622880 5702712 1623064 5702776 +1623576 5701960 1623224 5702088 1623064 5702776 1623840 5702400 +1623064 5702776 1623448 5702888 1623840 5702400 1623224 5702088 +1623840 5702400 1623576 5701960 1623224 5702088 1623448 5702888 +1623448 5702888 1623616 5702904 1623840 5702400 1623224 5702088 +1623224 5702088 1623408 5701720 1622880 5702712 1623064 5702776 +1623224 5702088 1622880 5702712 1623064 5702776 1623448 5702888 +1622880 5702712 1623224 5702088 1623408 5701720 1622632 5702592 +1622880 5702712 1623064 5702776 1623224 5702088 1622632 5702592 +1623408 5701720 1623192 5701576 1622632 5702592 1623224 5702088 +1623408 5701720 1623296 5701624 1623192 5701576 1623224 5702088 +1623192 5701576 1622632 5702592 1623224 5702088 1623296 5701624 +1622632 5702592 1622880 5702712 1623224 5702088 1623192 5701576 +1623224 5702088 1623576 5701960 1623408 5701720 1623296 5701624 +1623576 5701960 1623408 5701720 1623224 5702088 1623840 5702400 +1623192 5701576 1622880 5701536 1622632 5702592 1623224 5702088 +1623192 5701576 1623016 5701528 1622880 5701536 1623224 5702088 +1623192 5701576 1623016 5701528 1623224 5702088 1623296 5701624 +1622632 5702592 1622880 5702712 1623224 5702088 1622880 5701536 +1622880 5701536 1622664 5701568 1622632 5702592 1623224 5702088 +1622632 5702592 1622880 5702712 1623224 5702088 1622664 5701568 +1622664 5701568 1622256 5702336 1622632 5702592 1623224 5702088 +1622880 5701536 1622664 5701568 1623224 5702088 1623016 5701528 +1623448 5702888 1623400 5702376 1623224 5702088 1623064 5702776 +1623224 5702088 1623400 5702376 1623840 5702400 1623576 5701960 +1623840 5702400 1623400 5702376 1623448 5702888 1623616 5702904 +1623840 5702400 1623400 5702376 1623616 5702904 1623720 5702872 +1623400 5702376 1623448 5702888 1623616 5702904 1623720 5702872 +1623400 5702376 1623720 5702872 1623840 5702400 1623576 5701960 +1623448 5702888 1623616 5702904 1623400 5702376 1623064 5702776 +1623224 5702088 1622880 5702712 1623064 5702776 1623400 5702376 +1623064 5702776 1623448 5702888 1623400 5702376 1622880 5702712 +1623224 5702088 1622632 5702592 1622880 5702712 1623400 5702376 +1623840 5702400 1623400 5702376 1623720 5702872 1623848 5702776 +1623224 5702088 1623400 5702376 1623576 5701960 1623408 5701720 +1623400 5702376 1623576 5701960 1623224 5702088 1622880 5702712 +1623400 5702376 1623424 5702448 1623616 5702904 1623720 5702872 +1623400 5702376 1623424 5702448 1623720 5702872 1623840 5702400 +1623424 5702448 1623616 5702904 1623720 5702872 1623840 5702400 +1623400 5702376 1623424 5702448 1623840 5702400 1623576 5701960 +1623400 5702376 1623448 5702888 1623424 5702448 1623840 5702400 +1623448 5702888 1623424 5702448 1623400 5702376 1623064 5702776 +1623400 5702376 1622880 5702712 1623064 5702776 1623424 5702448 +1623424 5702448 1623840 5702400 1623400 5702376 1623064 5702776 +1623448 5702888 1623616 5702904 1623424 5702448 1623064 5702776 +1623424 5702448 1623448 5702888 1623616 5702904 1623720 5702872 +1623720 5702872 1623848 5702776 1623840 5702400 1623424 5702448 +1623720 5702872 1623848 5702776 1623424 5702448 1623616 5702904 +1623840 5702400 1623400 5702376 1623424 5702448 1623848 5702776 +1623720 5702872 1623816 5702824 1623848 5702776 1623424 5702448 +1623848 5702776 1623944 5702640 1623840 5702400 1623424 5702448 +1623424 5702448 1623408 5702512 1623448 5702888 1623616 5702904 +1623424 5702448 1623064 5702776 1623408 5702512 1623616 5702904 +1623408 5702512 1623064 5702776 1623448 5702888 1623616 5702904 +1623064 5702776 1623408 5702512 1623424 5702448 1623400 5702376 +1623064 5702776 1623408 5702512 1623400 5702376 1622880 5702712 +1623408 5702512 1623616 5702904 1623424 5702448 1623400 5702376 +1623424 5702448 1623408 5702512 1623616 5702904 1623720 5702872 +1623424 5702448 1623408 5702512 1623720 5702872 1623848 5702776 +1623720 5702872 1623816 5702824 1623848 5702776 1623408 5702512 +1623424 5702448 1623400 5702376 1623408 5702512 1623848 5702776 +1623408 5702512 1623448 5702888 1623616 5702904 1623720 5702872 +1623424 5702448 1623408 5702512 1623848 5702776 1623840 5702400 +1623408 5702512 1623720 5702872 1623848 5702776 1623840 5702400 +1623424 5702448 1623408 5702512 1623840 5702400 1623400 5702376 +1623424 5702448 1623400 5702376 1623408 5702512 1623840 5702400 +1623848 5702776 1623944 5702640 1623840 5702400 1623408 5702512 +1623408 5702512 1623616 5702904 1623720 5702872 1623848 5702776 +1623064 5702776 1623448 5702888 1623408 5702512 1623400 5702376 +1623064 5702776 1623352 5702544 1623400 5702376 1622880 5702712 +1623400 5702376 1623352 5702544 1623408 5702512 1623424 5702448 +1623400 5702376 1623224 5702088 1622880 5702712 1623352 5702544 +1622880 5702712 1623064 5702776 1623352 5702544 1623224 5702088 +1623224 5702088 1622632 5702592 1622880 5702712 1623352 5702544 +1623408 5702512 1623352 5702544 1623064 5702776 1623448 5702888 +1623408 5702512 1623352 5702544 1623448 5702888 1623616 5702904 +1623064 5702776 1623448 5702888 1623352 5702544 1622880 5702712 +1623352 5702544 1623424 5702448 1623400 5702376 1623224 5702088 +1623352 5702544 1623448 5702888 1623408 5702512 1623424 5702448 +1623352 5702544 1623256 5702568 1622880 5702712 1623064 5702776 +1622880 5702712 1623256 5702568 1623224 5702088 1622632 5702592 +1623224 5702088 1623256 5702568 1623352 5702544 1623400 5702376 +1623224 5702088 1622880 5702712 1623256 5702568 1623400 5702376 +1623352 5702544 1623256 5702568 1623064 5702776 1623448 5702888 +1623256 5702568 1622880 5702712 1623064 5702776 1623448 5702888 +1623352 5702544 1623256 5702568 1623448 5702888 1623408 5702512 +1623352 5702544 1623400 5702376 1623256 5702568 1623448 5702888 +1623352 5702544 1623424 5702448 1623400 5702376 1623256 5702568 +1623256 5702568 1623224 5702088 1622880 5702712 1623064 5702776 +1622880 5702712 1623104 5702536 1623224 5702088 1622632 5702592 +1623224 5702088 1623104 5702536 1623256 5702568 1623400 5702376 +1623256 5702568 1623352 5702544 1623400 5702376 1623104 5702536 +1623104 5702536 1622880 5702712 1623256 5702568 1623400 5702376 +1622880 5702712 1623256 5702568 1623104 5702536 1622632 5702592 +1623104 5702536 1623400 5702376 1623224 5702088 1622632 5702592 +1623224 5702088 1622664 5701568 1622632 5702592 1623104 5702536 +1623256 5702568 1623104 5702536 1622880 5702712 1623064 5702776 +1623256 5702568 1623104 5702536 1623064 5702776 1623448 5702888 +1623256 5702568 1623400 5702376 1623104 5702536 1623064 5702776 +1623104 5702536 1622632 5702592 1622880 5702712 1623064 5702776 +1623104 5702536 1623000 5702536 1622632 5702592 1622880 5702712 +1623104 5702536 1623000 5702536 1622880 5702712 1623064 5702776 +1623000 5702536 1622632 5702592 1622880 5702712 1623064 5702776 +1623104 5702536 1623224 5702088 1623000 5702536 1623064 5702776 +1623224 5702088 1623000 5702536 1623104 5702536 1623400 5702376 +1623000 5702536 1623224 5702088 1622632 5702592 1622880 5702712 +1622632 5702592 1623000 5702536 1623224 5702088 1622664 5701568 +1623104 5702536 1623000 5702536 1623064 5702776 1623256 5702568 +1623000 5702536 1622856 5702512 1622632 5702592 1622880 5702712 +1623000 5702536 1622856 5702512 1622880 5702712 1623064 5702776 +1623000 5702536 1623224 5702088 1622856 5702512 1622880 5702712 +1623224 5702088 1622856 5702512 1623000 5702536 1623104 5702536 +1622856 5702512 1623224 5702088 1622632 5702592 1622880 5702712 +1622632 5702592 1622856 5702512 1623224 5702088 1622664 5701568 +1622632 5702592 1622880 5702712 1622856 5702512 1622664 5701568 +1622856 5702512 1623000 5702536 1623224 5702088 1622664 5701568 +1623224 5702088 1622880 5701536 1622664 5701568 1622856 5702512 +1622632 5702592 1622856 5702512 1622664 5701568 1622256 5702336 +1622632 5702592 1622880 5702712 1622856 5702512 1622256 5702336 +1622856 5702512 1623224 5702088 1622664 5701568 1622256 5702336 +1622664 5701568 1622440 5701576 1622256 5702336 1622856 5702512 +1622664 5701568 1622728 5702456 1622856 5702512 1623224 5702088 +1622728 5702456 1622256 5702336 1622856 5702512 1623224 5702088 +1622856 5702512 1623000 5702536 1623224 5702088 1622728 5702456 +1622664 5701568 1622728 5702456 1623224 5702088 1622880 5701536 +1622856 5702512 1622728 5702456 1622256 5702336 1622632 5702592 +1622856 5702512 1622728 5702456 1622632 5702592 1622880 5702712 +1622856 5702512 1623224 5702088 1622728 5702456 1622632 5702592 +1622728 5702456 1622664 5701568 1622256 5702336 1622632 5702592 +1622256 5702336 1622728 5702456 1622664 5701568 1622440 5701576 +1622664 5701568 1622256 5702336 1622728 5702456 1623224 5702088 +1622728 5702456 1622464 5702200 1622256 5702336 1622632 5702592 +1622728 5702456 1622664 5701568 1622464 5702200 1622632 5702592 +1622728 5702456 1622464 5702200 1622632 5702592 1622856 5702512 +1622256 5702336 1622464 5702200 1622664 5701568 1622440 5701576 +1622256 5702336 1622464 5702200 1622440 5701576 1622216 5701544 +1622256 5702336 1622464 5702200 1622216 5701544 1621936 5702248 +1622464 5702200 1622664 5701568 1622440 5701576 1622216 5701544 +1622256 5702336 1622464 5702200 1621936 5702248 1621952 5702272 +1622464 5702200 1622440 5701576 1622216 5701544 1621936 5702248 +1622216 5701544 1621848 5702168 1621936 5702248 1622464 5702200 +1622664 5701568 1622464 5702200 1622728 5702456 1623224 5702088 +1622464 5702200 1622632 5702592 1622728 5702456 1623224 5702088 +1622728 5702456 1622856 5702512 1623224 5702088 1622464 5702200 +1622664 5701568 1622464 5702200 1623224 5702088 1622880 5701536 +1622464 5702200 1621936 5702248 1622256 5702336 1622632 5702592 +1622464 5702200 1623224 5702088 1622664 5701568 1622440 5701576 +1622464 5702200 1622240 5702048 1621936 5702248 1622256 5702336 +1621936 5702248 1621952 5702272 1622256 5702336 1622240 5702048 +1622256 5702336 1622464 5702200 1622240 5702048 1621952 5702272 +1622216 5701544 1622240 5702048 1622464 5702200 1622440 5701576 +1622464 5702200 1622664 5701568 1622440 5701576 1622240 5702048 +1621936 5702248 1622240 5702048 1622216 5701544 1621848 5702168 +1621936 5702248 1622240 5702048 1621848 5702168 1621880 5702208 +1622240 5702048 1622216 5701544 1621848 5702168 1621880 5702208 +1622216 5701544 1621752 5702000 1621848 5702168 1622240 5702048 +1622216 5701544 1621816 5701384 1621752 5702000 1622240 5702048 +1621848 5702168 1621880 5702208 1622240 5702048 1621752 5702000 +1622464 5702200 1622240 5702048 1622256 5702336 1622632 5702592 +1622464 5702200 1622440 5701576 1622240 5702048 1622256 5702336 +1622240 5702048 1621880 5702208 1621936 5702248 1621952 5702272 +1622216 5701544 1621752 5702000 1622240 5702048 1622440 5701576 +1621752 5702000 1622120 5701944 1622216 5701544 1621816 5701384 +1621752 5702000 1622120 5701944 1621816 5701384 1621448 5701528 +1622240 5702048 1622120 5701944 1621752 5702000 1621848 5702168 +1622240 5702048 1622120 5701944 1621848 5702168 1621880 5702208 +1622240 5702048 1622120 5701944 1621880 5702208 1621936 5702248 +1622120 5701944 1621848 5702168 1621880 5702208 1621936 5702248 +1622120 5701944 1621752 5702000 1621848 5702168 1621880 5702208 +1622240 5702048 1622120 5701944 1621936 5702248 1621952 5702272 +1622240 5702048 1622216 5701544 1622120 5701944 1621936 5702248 +1622216 5701544 1622120 5701944 1622240 5702048 1622440 5701576 +1622240 5702048 1622464 5702200 1622440 5701576 1622120 5701944 +1622120 5701944 1621936 5702248 1622240 5702048 1622440 5701576 +1621752 5702000 1621848 5702168 1622120 5701944 1621816 5701384 +1622120 5701944 1622440 5701576 1622216 5701544 1621816 5701384 +1622120 5701944 1622096 5701880 1621816 5701384 1621752 5702000 +1621816 5701384 1621448 5701528 1621752 5702000 1622096 5701880 +1622096 5701880 1622216 5701544 1621816 5701384 1621752 5702000 +1622120 5701944 1622096 5701880 1621752 5702000 1621848 5702168 +1622120 5701944 1622216 5701544 1622096 5701880 1621752 5702000 +1622216 5701544 1622096 5701880 1622120 5701944 1622440 5701576 +1622216 5701544 1621816 5701384 1622096 5701880 1622440 5701576 +1622120 5701944 1622240 5702048 1622440 5701576 1622096 5701880 +1622240 5702048 1622464 5702200 1622440 5701576 1622096 5701880 +1622096 5701880 1621752 5702000 1622120 5701944 1622240 5702048 +1622440 5701576 1622216 5701544 1622096 5701880 1622240 5702048 +1622096 5701880 1622112 5701736 1621816 5701384 1621752 5702000 +1621816 5701384 1621448 5701528 1621752 5702000 1622112 5701736 +1622096 5701880 1622112 5701736 1621752 5702000 1622120 5701944 +1622112 5701736 1622216 5701544 1621816 5701384 1621752 5702000 +1622096 5701880 1622216 5701544 1622112 5701736 1621752 5702000 +1622216 5701544 1622112 5701736 1622096 5701880 1622440 5701576 +1622216 5701544 1621816 5701384 1622112 5701736 1622440 5701576 +1622112 5701736 1621752 5702000 1622096 5701880 1622440 5701576 +1622096 5701880 1622240 5702048 1622440 5701576 1622112 5701736 +1622240 5702048 1622464 5702200 1622440 5701576 1622112 5701736 +1622096 5701880 1622240 5702048 1622112 5701736 1621752 5702000 +1622440 5701576 1622216 5701544 1622112 5701736 1622240 5702048 +1622096 5701880 1622120 5701944 1622240 5702048 1622112 5701736 +1622096 5701880 1622120 5701944 1622112 5701736 1621752 5702000 +1622240 5702048 1622440 5701576 1622112 5701736 1622120 5701944 +1622112 5701736 1622208 5701672 1622216 5701544 1621816 5701384 +1622440 5701576 1622208 5701672 1622112 5701736 1622240 5702048 +1622208 5701672 1622216 5701544 1622112 5701736 1622240 5702048 +1622440 5701576 1622216 5701544 1622208 5701672 1622240 5702048 +1622440 5701576 1622208 5701672 1622240 5702048 1622464 5702200 +1622112 5701736 1622120 5701944 1622240 5702048 1622208 5701672 +1622112 5701736 1622120 5701944 1622208 5701672 1622216 5701544 +1622240 5702048 1622440 5701576 1622208 5701672 1622120 5701944 +1622112 5701736 1622096 5701880 1622120 5701944 1622208 5701672 +1622112 5701736 1622096 5701880 1622208 5701672 1622216 5701544 +1622120 5701944 1622240 5702048 1622208 5701672 1622096 5701880 +1622208 5701672 1622320 5701688 1622440 5701576 1622216 5701544 +1622208 5701672 1622320 5701688 1622216 5701544 1622112 5701736 +1622208 5701672 1622240 5702048 1622320 5701688 1622216 5701544 +1622320 5701688 1622240 5702048 1622440 5701576 1622216 5701544 +1622440 5701576 1622320 5701688 1622240 5702048 1622464 5702200 +1622440 5701576 1622216 5701544 1622320 5701688 1622464 5702200 +1622320 5701688 1622208 5701672 1622240 5702048 1622464 5702200 +1622440 5701576 1622320 5701688 1622464 5702200 1622664 5701568 +1622440 5701576 1622216 5701544 1622320 5701688 1622664 5701568 +1622320 5701688 1622240 5702048 1622464 5702200 1622664 5701568 +1622240 5702048 1622320 5701688 1622208 5701672 1622120 5701944 +1622320 5701688 1622216 5701544 1622208 5701672 1622120 5701944 +1622240 5702048 1622464 5702200 1622320 5701688 1622120 5701944 +1622464 5702200 1623224 5702088 1622664 5701568 1622320 5701688 +1622208 5701672 1622096 5701880 1622120 5701944 1622320 5701688 +1622208 5701672 1622096 5701880 1622320 5701688 1622216 5701544 +1622120 5701944 1622240 5702048 1622320 5701688 1622096 5701880 +1622208 5701672 1622112 5701736 1622096 5701880 1622320 5701688 +1622320 5701688 1622488 5701744 1622664 5701568 1622440 5701576 +1622320 5701688 1622488 5701744 1622440 5701576 1622216 5701544 +1622320 5701688 1622464 5702200 1622488 5701744 1622440 5701576 +1622488 5701744 1622464 5702200 1622664 5701568 1622440 5701576 +1622464 5702200 1622488 5701744 1622320 5701688 1622240 5702048 +1622488 5701744 1622440 5701576 1622320 5701688 1622240 5702048 +1622320 5701688 1622120 5701944 1622240 5702048 1622488 5701744 +1622464 5702200 1622664 5701568 1622488 5701744 1622240 5702048 +1622664 5701568 1622488 5701744 1622464 5702200 1623224 5702088 +1622664 5701568 1622440 5701576 1622488 5701744 1623224 5702088 +1622488 5701744 1622240 5702048 1622464 5702200 1623224 5702088 +1622664 5701568 1622488 5701744 1623224 5702088 1622880 5701536 +1622664 5701568 1622440 5701576 1622488 5701744 1622880 5701536 +1622464 5702200 1622728 5702456 1623224 5702088 1622488 5701744 +1622488 5701744 1622464 5702200 1623224 5702088 1622880 5701536 +1623224 5702088 1623016 5701528 1622880 5701536 1622488 5701744 +1622488 5701744 1622624 5701752 1622880 5701536 1622664 5701568 +1622488 5701744 1622624 5701752 1622664 5701568 1622440 5701576 +1622488 5701744 1623224 5702088 1622624 5701752 1622664 5701568 +1622624 5701752 1623224 5702088 1622880 5701536 1622664 5701568 +1623224 5702088 1622624 5701752 1622488 5701744 1622464 5702200 +1622624 5701752 1622664 5701568 1622488 5701744 1622464 5702200 +1622488 5701744 1622240 5702048 1622464 5702200 1622624 5701752 +1623224 5702088 1622624 5701752 1622464 5702200 1622728 5702456 +1622880 5701536 1622624 5701752 1623224 5702088 1623016 5701528 +1623224 5702088 1622880 5701536 1622624 5701752 1622464 5702200 +1622624 5701752 1622648 5701760 1622880 5701536 1622664 5701568 +1622624 5701752 1622648 5701760 1622664 5701568 1622488 5701744 +1622880 5701536 1622648 5701760 1623224 5702088 1623016 5701528 +1623224 5702088 1623192 5701576 1623016 5701528 1622648 5701760 +1622624 5701752 1623224 5702088 1622648 5701760 1622664 5701568 +1623224 5702088 1622648 5701760 1622624 5701752 1622464 5702200 +1623224 5702088 1622648 5701760 1622464 5702200 1622728 5702456 +1623224 5702088 1622648 5701760 1622728 5702456 1622856 5702512 +1622624 5701752 1622488 5701744 1622464 5702200 1622648 5701760 +1622648 5701760 1622664 5701568 1622624 5701752 1622464 5702200 +1622648 5701760 1622624 5701752 1622464 5702200 1622728 5702456 +1622648 5701760 1623016 5701528 1622880 5701536 1622664 5701568 +1622648 5701760 1622728 5702456 1623224 5702088 1623016 5701528 +1623016 5701528 1622848 5701744 1623224 5702088 1623192 5701576 +1623224 5702088 1623296 5701624 1623192 5701576 1622848 5701744 +1622848 5701744 1622648 5701760 1623224 5702088 1623192 5701576 +1622648 5701760 1622848 5701744 1623016 5701528 1622880 5701536 +1622648 5701760 1622848 5701744 1622880 5701536 1622664 5701568 +1622848 5701744 1623016 5701528 1622880 5701536 1622664 5701568 +1622648 5701760 1622848 5701744 1622664 5701568 1622624 5701752 +1623224 5702088 1622848 5701744 1622648 5701760 1622728 5702456 +1623224 5702088 1622848 5701744 1622728 5702456 1622856 5702512 +1623224 5702088 1623192 5701576 1622848 5701744 1622728 5702456 +1622648 5701760 1622464 5702200 1622728 5702456 1622848 5701744 +1622648 5701760 1622624 5701752 1622464 5702200 1622848 5701744 +1622728 5702456 1623224 5702088 1622848 5701744 1622464 5702200 +1622648 5701760 1622464 5702200 1622848 5701744 1622664 5701568 +1623016 5701528 1622880 5701536 1622848 5701744 1623192 5701576 +1622848 5701744 1622944 5701760 1623192 5701576 1623016 5701528 +1623192 5701576 1622944 5701760 1623224 5702088 1623296 5701624 +1623224 5702088 1623408 5701720 1623296 5701624 1622944 5701760 +1623224 5702088 1622944 5701760 1622848 5701744 1622728 5702456 +1623224 5702088 1622944 5701760 1622728 5702456 1622856 5702512 +1622944 5701760 1623296 5701624 1623192 5701576 1623016 5701528 +1622944 5701760 1622728 5702456 1623224 5702088 1623296 5701624 +1622848 5701744 1622464 5702200 1622728 5702456 1622944 5701760 +1622848 5701744 1622944 5701760 1623016 5701528 1622880 5701536 +1622944 5701760 1623192 5701576 1623016 5701528 1622880 5701536 +1622848 5701744 1622944 5701760 1622880 5701536 1622664 5701568 +1622848 5701744 1622728 5702456 1622944 5701760 1622880 5701536 +1623296 5701624 1623024 5701816 1623224 5702088 1623408 5701720 +1622944 5701760 1623024 5701816 1623296 5701624 1623192 5701576 +1623224 5702088 1623576 5701960 1623408 5701720 1623024 5701816 +1622944 5701760 1623024 5701816 1623192 5701576 1623016 5701528 +1622944 5701760 1623024 5701816 1623016 5701528 1622880 5701536 +1623024 5701816 1623296 5701624 1623192 5701576 1623016 5701528 +1622944 5701760 1623224 5702088 1623024 5701816 1623016 5701528 +1623224 5702088 1623024 5701816 1622944 5701760 1622728 5702456 +1623224 5702088 1623024 5701816 1622728 5702456 1622856 5702512 +1622944 5701760 1622848 5701744 1622728 5702456 1623024 5701816 +1623024 5701816 1623016 5701528 1622944 5701760 1622848 5701744 +1622728 5702456 1623224 5702088 1623024 5701816 1622848 5701744 +1623296 5701624 1623192 5701576 1623024 5701816 1623408 5701720 +1623024 5701816 1622728 5702456 1623224 5702088 1623408 5701720 +1622848 5701744 1622464 5702200 1622728 5702456 1623024 5701816 +1622848 5701744 1622464 5702200 1623024 5701816 1622944 5701760 +1622728 5702456 1623224 5702088 1623024 5701816 1622464 5702200 +1622848 5701744 1622648 5701760 1622464 5702200 1623024 5701816 +1623024 5701816 1623096 5701888 1623408 5701720 1623296 5701624 +1623408 5701720 1623096 5701888 1623224 5702088 1623576 5701960 +1623024 5701816 1623096 5701888 1623296 5701624 1623192 5701576 +1623096 5701888 1623408 5701720 1623296 5701624 1623192 5701576 +1623024 5701816 1623096 5701888 1623192 5701576 1623016 5701528 +1623024 5701816 1623224 5702088 1623096 5701888 1623192 5701576 +1623224 5702088 1623096 5701888 1623024 5701816 1622728 5702456 +1623224 5702088 1623408 5701720 1623096 5701888 1622728 5702456 +1623224 5702088 1623096 5701888 1622728 5702456 1622856 5702512 +1623024 5701816 1622464 5702200 1622728 5702456 1623096 5701888 +1623096 5701888 1623192 5701576 1623024 5701816 1622464 5702200 +1622728 5702456 1623224 5702088 1623096 5701888 1622464 5702200 +1623096 5701888 1623224 5702088 1623408 5701720 1623296 5701624 +1623024 5701816 1622848 5701744 1622464 5702200 1623096 5701888 +1622848 5701744 1622632 5702000 1622464 5702200 1623024 5701816 +1622848 5701744 1622648 5701760 1622632 5702000 1623024 5701816 +1622848 5701744 1622632 5702000 1623024 5701816 1622944 5701760 +1622632 5702000 1622648 5701760 1622464 5702200 1623024 5701816 +1622464 5702200 1622632 5702000 1622648 5701760 1622624 5701752 +1622632 5702000 1622848 5701744 1622648 5701760 1622624 5701752 +1622464 5702200 1623024 5701816 1622632 5702000 1622624 5701752 +1622464 5702200 1622632 5702000 1622624 5701752 1622488 5701744 +1622464 5702200 1623024 5701816 1622632 5702000 1622488 5701744 +1622464 5702200 1622632 5702000 1622488 5701744 1622240 5702048 +1622464 5702200 1623024 5701816 1622632 5702000 1622240 5702048 +1622488 5701744 1622320 5701688 1622240 5702048 1622632 5702000 +1622632 5702000 1622624 5701752 1622488 5701744 1622240 5702048 +1622632 5702000 1622648 5701760 1622624 5701752 1622488 5701744 +1622464 5702200 1623096 5701888 1623024 5701816 1622632 5702000 +1622464 5702200 1622728 5702456 1623096 5701888 1622632 5702000 +1622728 5702456 1623224 5702088 1623096 5701888 1622632 5702000 +1622728 5702456 1622856 5702512 1623224 5702088 1622632 5702000 +1622728 5702456 1623224 5702088 1622632 5702000 1622464 5702200 +1622464 5702200 1622728 5702456 1622632 5702000 1622240 5702048 +1623024 5701816 1622848 5701744 1622632 5702000 1623096 5701888 +1623096 5701888 1623024 5701816 1622632 5702000 1623224 5702088 +1622632 5702000 1622656 5701976 1622848 5701744 1622648 5701760 +1622632 5702000 1622656 5701976 1622648 5701760 1622624 5701752 +1622632 5702000 1623024 5701816 1622656 5701976 1622624 5701752 +1622656 5701976 1622848 5701744 1622648 5701760 1622624 5701752 +1622656 5701976 1623024 5701816 1622848 5701744 1622648 5701760 +1622848 5701744 1622656 5701976 1623024 5701816 1622944 5701760 +1622656 5701976 1622632 5702000 1623024 5701816 1622944 5701760 +1622848 5701744 1622648 5701760 1622656 5701976 1622944 5701760 +1623024 5701816 1622656 5701976 1622632 5702000 1623096 5701888 +1622656 5701976 1622624 5701752 1622632 5702000 1623096 5701888 +1623024 5701816 1622944 5701760 1622656 5701976 1623096 5701888 +1622632 5702000 1622656 5701976 1622624 5701752 1622488 5701744 +1622656 5701976 1622648 5701760 1622624 5701752 1622488 5701744 +1622632 5702000 1623096 5701888 1622656 5701976 1622488 5701744 +1622632 5702000 1622656 5701976 1622488 5701744 1622240 5702048 +1622632 5702000 1623224 5702088 1623096 5701888 1622656 5701976 +1622632 5702000 1623224 5702088 1622656 5701976 1622488 5701744 +1622632 5702000 1622728 5702456 1623224 5702088 1622656 5701976 +1622632 5702000 1622728 5702456 1622656 5701976 1622488 5701744 +1622728 5702456 1622856 5702512 1623224 5702088 1622656 5701976 +1622632 5702000 1622464 5702200 1622728 5702456 1622656 5701976 +1623096 5701888 1623024 5701816 1622656 5701976 1623224 5702088 +1623224 5702088 1623096 5701888 1622656 5701976 1622728 5702456 +1623024 5701816 1622704 5701944 1622656 5701976 1623096 5701888 +1622704 5701944 1622944 5701760 1622656 5701976 1623096 5701888 +1623024 5701816 1622944 5701760 1622704 5701944 1623096 5701888 +1622656 5701976 1622704 5701944 1622944 5701760 1622848 5701744 +1622656 5701976 1623096 5701888 1622704 5701944 1622848 5701744 +1622704 5701944 1623024 5701816 1622944 5701760 1622848 5701744 +1622656 5701976 1622704 5701944 1622848 5701744 1622648 5701760 +1622656 5701976 1622704 5701944 1622648 5701760 1622624 5701752 +1622656 5701976 1623096 5701888 1622704 5701944 1622648 5701760 +1622704 5701944 1622944 5701760 1622848 5701744 1622648 5701760 +1622656 5701976 1623224 5702088 1623096 5701888 1622704 5701944 +1622656 5701976 1623224 5702088 1622704 5701944 1622648 5701760 +1623096 5701888 1623024 5701816 1622704 5701944 1623224 5702088 +1622656 5701976 1622728 5702456 1623224 5702088 1622704 5701944 +1622656 5701976 1622728 5702456 1622704 5701944 1622648 5701760 +1622728 5702456 1622856 5702512 1623224 5702088 1622704 5701944 +1622656 5701976 1622632 5702000 1622728 5702456 1622704 5701944 +1622656 5701976 1622632 5702000 1622704 5701944 1622648 5701760 +1622632 5702000 1622464 5702200 1622728 5702456 1622704 5701944 +1623224 5702088 1623096 5701888 1622704 5701944 1622728 5702456 +1622728 5702456 1623224 5702088 1622704 5701944 1622632 5702000 +1623096 5701888 1622784 5701928 1622704 5701944 1623224 5702088 +1622784 5701928 1623024 5701816 1622704 5701944 1623224 5702088 +1622704 5701944 1622784 5701928 1623024 5701816 1622944 5701760 +1622704 5701944 1622784 5701928 1622944 5701760 1622848 5701744 +1622704 5701944 1623224 5702088 1622784 5701928 1622848 5701744 +1622784 5701928 1623024 5701816 1622944 5701760 1622848 5701744 +1622784 5701928 1623096 5701888 1623024 5701816 1622944 5701760 +1623096 5701888 1623024 5701816 1622784 5701928 1623224 5702088 +1622704 5701944 1622784 5701928 1622848 5701744 1622648 5701760 +1622784 5701928 1622944 5701760 1622848 5701744 1622648 5701760 +1622704 5701944 1622784 5701928 1622648 5701760 1622656 5701976 +1622704 5701944 1623224 5702088 1622784 5701928 1622648 5701760 +1622704 5701944 1622728 5702456 1623224 5702088 1622784 5701928 +1623224 5702088 1623096 5701888 1622784 5701928 1622728 5702456 +1622728 5702456 1622856 5702512 1623224 5702088 1622784 5701928 +1622856 5702512 1623000 5702536 1623224 5702088 1622784 5701928 +1623224 5702088 1623096 5701888 1622784 5701928 1622856 5702512 +1622704 5701944 1622728 5702456 1622784 5701928 1622648 5701760 +1622728 5702456 1622856 5702512 1622784 5701928 1622704 5701944 +1622704 5701944 1622632 5702000 1622728 5702456 1622784 5701928 +1622704 5701944 1622632 5702000 1622784 5701928 1622648 5701760 +1622632 5702000 1622464 5702200 1622728 5702456 1622784 5701928 +1622704 5701944 1622656 5701976 1622632 5702000 1622784 5701928 +1622704 5701944 1622656 5701976 1622784 5701928 1622648 5701760 +1622728 5702456 1622856 5702512 1622784 5701928 1622632 5702000 +1622632 5702000 1622728 5702456 1622784 5701928 1622656 5701976 +1623224 5702088 1622824 5701928 1622784 5701928 1622856 5702512 +1623224 5702088 1622824 5701928 1622856 5702512 1623000 5702536 +1622784 5701928 1622728 5702456 1622856 5702512 1622824 5701928 +1622856 5702512 1623224 5702088 1622824 5701928 1622728 5702456 +1622824 5701928 1623096 5701888 1622784 5701928 1622728 5702456 +1622784 5701928 1622824 5701928 1623096 5701888 1623024 5701816 +1622784 5701928 1622824 5701928 1623024 5701816 1622944 5701760 +1622784 5701928 1622824 5701928 1622944 5701760 1622848 5701744 +1622784 5701928 1622824 5701928 1622848 5701744 1622648 5701760 +1622824 5701928 1623024 5701816 1622944 5701760 1622848 5701744 +1622784 5701928 1622728 5702456 1622824 5701928 1622848 5701744 +1622824 5701928 1623096 5701888 1623024 5701816 1622944 5701760 +1622824 5701928 1623224 5702088 1623096 5701888 1623024 5701816 +1623224 5702088 1623096 5701888 1622824 5701928 1622856 5702512 +1622784 5701928 1622632 5702000 1622728 5702456 1622824 5701928 +1622728 5702456 1622856 5702512 1622824 5701928 1622632 5702000 +1622784 5701928 1622632 5702000 1622824 5701928 1622848 5701744 +1622632 5702000 1622464 5702200 1622728 5702456 1622824 5701928 +1622784 5701928 1622656 5701976 1622632 5702000 1622824 5701928 +1623224 5702088 1622872 5701952 1622856 5702512 1623000 5702536 +1622856 5702512 1622872 5701952 1622824 5701928 1622728 5702456 +1622824 5701928 1622632 5702000 1622728 5702456 1622872 5701952 +1622728 5702456 1622856 5702512 1622872 5701952 1622632 5702000 +1622872 5701952 1623224 5702088 1622824 5701928 1622632 5702000 +1622824 5701928 1622872 5701952 1623224 5702088 1623096 5701888 +1622824 5701928 1622872 5701952 1623096 5701888 1623024 5701816 +1622824 5701928 1622872 5701952 1623024 5701816 1622944 5701760 +1622824 5701928 1622872 5701952 1622944 5701760 1622848 5701744 +1622872 5701952 1623096 5701888 1623024 5701816 1622944 5701760 +1622824 5701928 1622632 5702000 1622872 5701952 1622944 5701760 +1622872 5701952 1623224 5702088 1623096 5701888 1623024 5701816 +1622872 5701952 1622856 5702512 1623224 5702088 1623096 5701888 +1622856 5702512 1623224 5702088 1622872 5701952 1622728 5702456 +1622632 5702000 1622464 5702200 1622728 5702456 1622872 5701952 +1622824 5701928 1622784 5701928 1622632 5702000 1622872 5701952 +1622632 5702000 1622728 5702456 1622872 5701952 1622784 5701928 +1622824 5701928 1622784 5701928 1622872 5701952 1622944 5701760 +1622784 5701928 1622656 5701976 1622632 5702000 1622872 5701952 +1622632 5702000 1622728 5702456 1622872 5701952 1622656 5701976 +1622784 5701928 1622704 5701944 1622656 5701976 1622872 5701952 +1622784 5701928 1622656 5701976 1622872 5701952 1622824 5701928 +1623224 5702088 1622912 5701984 1622856 5702512 1623000 5702536 +1623224 5702088 1622872 5701952 1622912 5701984 1623000 5702536 +1622912 5701984 1622872 5701952 1622856 5702512 1623000 5702536 +1623224 5702088 1622912 5701984 1623000 5702536 1623104 5702536 +1622872 5701952 1622912 5701984 1623224 5702088 1623096 5701888 +1622912 5701984 1623000 5702536 1623224 5702088 1623096 5701888 +1622872 5701952 1622912 5701984 1623096 5701888 1623024 5701816 +1622872 5701952 1622912 5701984 1623024 5701816 1622944 5701760 +1622912 5701984 1623224 5702088 1623096 5701888 1623024 5701816 +1622872 5701952 1622856 5702512 1622912 5701984 1623024 5701816 +1622856 5702512 1622912 5701984 1622872 5701952 1622728 5702456 +1622856 5702512 1623000 5702536 1622912 5701984 1622728 5702456 +1622872 5701952 1622632 5702000 1622728 5702456 1622912 5701984 +1622872 5701952 1622656 5701976 1622632 5702000 1622912 5701984 +1622632 5702000 1622728 5702456 1622912 5701984 1622656 5701976 +1622912 5701984 1623024 5701816 1622872 5701952 1622656 5701976 +1622728 5702456 1622856 5702512 1622912 5701984 1622632 5702000 +1622632 5702000 1622464 5702200 1622728 5702456 1622912 5701984 +1622872 5701952 1622784 5701928 1622656 5701976 1622912 5701984 +1622656 5701976 1622632 5702000 1622912 5701984 1622784 5701928 +1622872 5701952 1622784 5701928 1622912 5701984 1623024 5701816 +1622784 5701928 1622704 5701944 1622656 5701976 1622912 5701984 +1622872 5701952 1622824 5701928 1622784 5701928 1622912 5701984 +1622912 5701984 1622928 5702000 1623224 5702088 1623096 5701888 +1622928 5702000 1623000 5702536 1623224 5702088 1623096 5701888 +1622912 5701984 1623000 5702536 1622928 5702000 1623096 5701888 +1623224 5702088 1622928 5702000 1623000 5702536 1623104 5702536 +1623000 5702536 1622928 5702000 1622912 5701984 1622856 5702512 +1623000 5702536 1623224 5702088 1622928 5702000 1622856 5702512 +1622928 5702000 1623096 5701888 1622912 5701984 1622856 5702512 +1622912 5701984 1622728 5702456 1622856 5702512 1622928 5702000 +1622912 5701984 1622728 5702456 1622928 5702000 1623096 5701888 +1622856 5702512 1623000 5702536 1622928 5702000 1622728 5702456 +1622912 5701984 1622928 5702000 1623096 5701888 1623024 5701816 +1622912 5701984 1622632 5702000 1622728 5702456 1622928 5702000 +1622912 5701984 1622632 5702000 1622928 5702000 1623096 5701888 +1622728 5702456 1622856 5702512 1622928 5702000 1622632 5702000 +1622912 5701984 1622656 5701976 1622632 5702000 1622928 5702000 +1622632 5702000 1622464 5702200 1622728 5702456 1622928 5702000 +1622928 5702000 1622968 5702104 1623224 5702088 1623096 5701888 +1622928 5702000 1623000 5702536 1622968 5702104 1623096 5701888 +1623000 5702536 1622968 5702104 1622928 5702000 1622856 5702512 +1622968 5702104 1623096 5701888 1622928 5702000 1622856 5702512 +1622928 5702000 1622968 5702104 1623096 5701888 1622912 5701984 +1623224 5702088 1622968 5702104 1623000 5702536 1623104 5702536 +1623224 5702088 1622968 5702104 1623104 5702536 1623400 5702376 +1622928 5702000 1622728 5702456 1622856 5702512 1622968 5702104 +1622928 5702000 1622728 5702456 1622968 5702104 1623096 5701888 +1622856 5702512 1623000 5702536 1622968 5702104 1622728 5702456 +1622928 5702000 1622632 5702000 1622728 5702456 1622968 5702104 +1622928 5702000 1622632 5702000 1622968 5702104 1623096 5701888 +1622728 5702456 1622856 5702512 1622968 5702104 1622632 5702000 +1622968 5702104 1623104 5702536 1623224 5702088 1623096 5701888 +1623000 5702536 1623104 5702536 1622968 5702104 1622856 5702512 +1622928 5702000 1622912 5701984 1622632 5702000 1622968 5702104 +1622928 5702000 1622912 5701984 1622968 5702104 1623096 5701888 +1622632 5702000 1622728 5702456 1622968 5702104 1622912 5701984 +1622912 5701984 1622656 5701976 1622632 5702000 1622968 5702104 +1622632 5702000 1622728 5702456 1622968 5702104 1622656 5701976 +1622912 5701984 1622784 5701928 1622656 5701976 1622968 5702104 +1622912 5701984 1622656 5701976 1622968 5702104 1622928 5702000 +1622632 5702000 1622464 5702200 1622728 5702456 1622968 5702104 +1622968 5702104 1622992 5702184 1623104 5702536 1623224 5702088 +1623104 5702536 1623400 5702376 1623224 5702088 1622992 5702184 +1623104 5702536 1623256 5702568 1623400 5702376 1622992 5702184 +1623224 5702088 1622968 5702104 1622992 5702184 1623400 5702376 +1622968 5702104 1622992 5702184 1623224 5702088 1623096 5701888 +1622968 5702104 1623000 5702536 1622992 5702184 1623224 5702088 +1623000 5702536 1622992 5702184 1622968 5702104 1622856 5702512 +1622968 5702104 1622728 5702456 1622856 5702512 1622992 5702184 +1622968 5702104 1622632 5702000 1622728 5702456 1622992 5702184 +1622728 5702456 1622856 5702512 1622992 5702184 1622632 5702000 +1622968 5702104 1622656 5701976 1622632 5702000 1622992 5702184 +1622992 5702184 1623224 5702088 1622968 5702104 1622632 5702000 +1622856 5702512 1623000 5702536 1622992 5702184 1622728 5702456 +1623000 5702536 1623104 5702536 1622992 5702184 1622856 5702512 +1622992 5702184 1623000 5702536 1623104 5702536 1623400 5702376 +1622632 5702000 1622464 5702200 1622728 5702456 1622992 5702184 +1622856 5702512 1622992 5702224 1622992 5702184 1622728 5702456 +1622992 5702184 1622632 5702000 1622728 5702456 1622992 5702224 +1622992 5702184 1622968 5702104 1622632 5702000 1622992 5702224 +1622632 5702000 1622728 5702456 1622992 5702224 1622968 5702104 +1622968 5702104 1622656 5701976 1622632 5702000 1622992 5702224 +1622728 5702456 1622856 5702512 1622992 5702224 1622632 5702000 +1622992 5702184 1622992 5702224 1623000 5702536 1623104 5702536 +1622992 5702224 1622856 5702512 1623000 5702536 1623104 5702536 +1622992 5702184 1622992 5702224 1623104 5702536 1623400 5702376 +1623104 5702536 1623256 5702568 1623400 5702376 1622992 5702224 +1622992 5702184 1622992 5702224 1623400 5702376 1623224 5702088 +1622992 5702184 1622992 5702224 1623224 5702088 1622968 5702104 +1622992 5702224 1623000 5702536 1623104 5702536 1623400 5702376 +1622992 5702224 1623104 5702536 1623400 5702376 1623224 5702088 +1622992 5702224 1623224 5702088 1622992 5702184 1622968 5702104 +1622632 5702000 1622464 5702200 1622728 5702456 1622992 5702224 +1622856 5702512 1623000 5702536 1622992 5702224 1622728 5702456 +1622728 5702456 1622936 5702304 1622992 5702224 1622632 5702000 +1622992 5702224 1622968 5702104 1622632 5702000 1622936 5702304 +1622968 5702104 1622656 5701976 1622632 5702000 1622936 5702304 +1622992 5702224 1622992 5702184 1622968 5702104 1622936 5702304 +1622968 5702104 1622632 5702000 1622936 5702304 1622992 5702184 +1622632 5702000 1622728 5702456 1622936 5702304 1622968 5702104 +1622936 5702304 1622856 5702512 1622992 5702224 1622992 5702184 +1622728 5702456 1622936 5702304 1622632 5702000 1622464 5702200 +1622992 5702224 1622936 5702304 1622856 5702512 1623000 5702536 +1622992 5702224 1622936 5702304 1623000 5702536 1623104 5702536 +1622992 5702224 1622936 5702304 1623104 5702536 1623400 5702376 +1622992 5702224 1622992 5702184 1622936 5702304 1623104 5702536 +1622936 5702304 1622856 5702512 1623000 5702536 1623104 5702536 +1622936 5702304 1622728 5702456 1622856 5702512 1623000 5702536 +1622728 5702456 1622856 5702512 1622936 5702304 1622632 5702000 +1622632 5702000 1622896 5702328 1622936 5702304 1622968 5702104 +1622936 5702304 1622992 5702184 1622968 5702104 1622896 5702328 +1622632 5702000 1622896 5702328 1622968 5702104 1622656 5701976 +1622728 5702456 1622896 5702328 1622632 5702000 1622464 5702200 +1622632 5702000 1622240 5702048 1622464 5702200 1622896 5702328 +1622896 5702328 1622728 5702456 1622936 5702304 1622968 5702104 +1622936 5702304 1622896 5702328 1622728 5702456 1622856 5702512 +1622936 5702304 1622896 5702328 1622856 5702512 1623000 5702536 +1622936 5702304 1622896 5702328 1623000 5702536 1623104 5702536 +1622936 5702304 1622968 5702104 1622896 5702328 1623000 5702536 +1622896 5702328 1622728 5702456 1622856 5702512 1623000 5702536 +1622632 5702000 1622464 5702200 1622896 5702328 1622968 5702104 +1622728 5702456 1622856 5702512 1622896 5702328 1622464 5702200 +1622464 5702200 1622864 5702336 1622896 5702328 1622632 5702000 +1622464 5702200 1622728 5702456 1622864 5702336 1622632 5702000 +1622464 5702200 1622864 5702336 1622632 5702000 1622240 5702048 +1622864 5702336 1622728 5702456 1622896 5702328 1622632 5702000 +1622896 5702328 1622968 5702104 1622632 5702000 1622864 5702336 +1622968 5702104 1622656 5701976 1622632 5702000 1622864 5702336 +1622896 5702328 1622936 5702304 1622968 5702104 1622864 5702336 +1622936 5702304 1622992 5702184 1622968 5702104 1622864 5702336 +1622936 5702304 1622992 5702224 1622992 5702184 1622864 5702336 +1622936 5702304 1622992 5702184 1622864 5702336 1622896 5702328 +1622632 5702000 1622464 5702200 1622864 5702336 1622968 5702104 +1622896 5702328 1622936 5702304 1622864 5702336 1622728 5702456 +1622968 5702104 1622632 5702000 1622864 5702336 1622992 5702184 +1622896 5702328 1622864 5702336 1622728 5702456 1622856 5702512 +1622864 5702336 1622464 5702200 1622728 5702456 1622856 5702512 +1622896 5702328 1622864 5702336 1622856 5702512 1623000 5702536 +1622896 5702328 1622936 5702304 1622864 5702336 1622856 5702512 +1622864 5702336 1622784 5702312 1622728 5702456 1622856 5702512 +1622464 5702200 1622784 5702312 1622864 5702336 1622632 5702000 +1622464 5702200 1622728 5702456 1622784 5702312 1622632 5702000 +1622784 5702312 1622728 5702456 1622864 5702336 1622632 5702000 +1622864 5702336 1622968 5702104 1622632 5702000 1622784 5702312 +1622968 5702104 1622656 5701976 1622632 5702000 1622784 5702312 +1622968 5702104 1622912 5701984 1622656 5701976 1622784 5702312 +1622632 5702000 1622464 5702200 1622784 5702312 1622656 5701976 +1622864 5702336 1622968 5702104 1622784 5702312 1622728 5702456 +1622968 5702104 1622656 5701976 1622784 5702312 1622864 5702336 +1622464 5702200 1622784 5702312 1622632 5702000 1622240 5702048 +1622864 5702336 1622992 5702184 1622968 5702104 1622784 5702312 +1622864 5702336 1622936 5702304 1622992 5702184 1622784 5702312 +1622936 5702304 1622992 5702224 1622992 5702184 1622784 5702312 +1622864 5702336 1622936 5702304 1622784 5702312 1622728 5702456 +1622864 5702336 1622896 5702328 1622936 5702304 1622784 5702312 +1622936 5702304 1622992 5702184 1622784 5702312 1622896 5702328 +1622864 5702336 1622896 5702328 1622784 5702312 1622728 5702456 +1622968 5702104 1622656 5701976 1622784 5702312 1622992 5702184 +1622992 5702184 1622968 5702104 1622784 5702312 1622936 5702304 +1622632 5702000 1622720 5702232 1622784 5702312 1622656 5701976 +1622784 5702312 1622968 5702104 1622656 5701976 1622720 5702232 +1622968 5702104 1622912 5701984 1622656 5701976 1622720 5702232 +1622968 5702104 1622912 5701984 1622720 5702232 1622784 5702312 +1622912 5701984 1622784 5701928 1622656 5701976 1622720 5702232 +1622912 5701984 1622784 5701928 1622720 5702232 1622968 5702104 +1622656 5701976 1622632 5702000 1622720 5702232 1622784 5701928 +1622720 5702232 1622464 5702200 1622784 5702312 1622968 5702104 +1622784 5702312 1622720 5702232 1622464 5702200 1622728 5702456 +1622784 5702312 1622720 5702232 1622728 5702456 1622864 5702336 +1622784 5702312 1622968 5702104 1622720 5702232 1622728 5702456 +1622720 5702232 1622632 5702000 1622464 5702200 1622728 5702456 +1622632 5702000 1622464 5702200 1622720 5702232 1622656 5701976 +1622968 5702104 1622928 5702000 1622912 5701984 1622720 5702232 +1622968 5702104 1622928 5702000 1622720 5702232 1622784 5702312 +1622912 5701984 1622784 5701928 1622720 5702232 1622928 5702000 +1622784 5702312 1622992 5702184 1622968 5702104 1622720 5702232 +1622968 5702104 1622928 5702000 1622720 5702232 1622992 5702184 +1622784 5702312 1622992 5702184 1622720 5702232 1622728 5702456 +1622784 5701928 1622704 5701944 1622656 5701976 1622720 5702232 +1622784 5701928 1622704 5701944 1622720 5702232 1622912 5701984 +1622656 5701976 1622632 5702000 1622720 5702232 1622704 5701944 +1622464 5702200 1622720 5702232 1622632 5702000 1622240 5702048 +1622784 5702312 1622936 5702304 1622992 5702184 1622720 5702232 +1622912 5701984 1622872 5701952 1622784 5701928 1622720 5702232 +1622912 5701984 1622872 5701952 1622720 5702232 1622928 5702000 +1622784 5701928 1622704 5701944 1622720 5702232 1622872 5701952 +1622872 5701952 1622824 5701928 1622784 5701928 1622720 5702232 +1622720 5702232 1622672 5702152 1622464 5702200 1622728 5702456 +1622632 5702000 1622672 5702152 1622720 5702232 1622656 5701976 +1622720 5702232 1622704 5701944 1622656 5701976 1622672 5702152 +1622672 5702152 1622464 5702200 1622720 5702232 1622704 5701944 +1622656 5701976 1622632 5702000 1622672 5702152 1622704 5701944 +1622632 5702000 1622464 5702200 1622672 5702152 1622656 5701976 +1622720 5702232 1622784 5701928 1622704 5701944 1622672 5702152 +1622720 5702232 1622872 5701952 1622784 5701928 1622672 5702152 +1622704 5701944 1622656 5701976 1622672 5702152 1622784 5701928 +1622720 5702232 1622872 5701952 1622672 5702152 1622464 5702200 +1622784 5701928 1622704 5701944 1622672 5702152 1622872 5701952 +1622464 5702200 1622672 5702152 1622632 5702000 1622240 5702048 +1622872 5701952 1622824 5701928 1622784 5701928 1622672 5702152 +1622720 5702232 1622912 5701984 1622872 5701952 1622672 5702152 +1622720 5702232 1622928 5702000 1622912 5701984 1622672 5702152 +1622872 5701952 1622784 5701928 1622672 5702152 1622912 5701984 +1622720 5702232 1622928 5702000 1622672 5702152 1622464 5702200 +1622720 5702232 1622968 5702104 1622928 5702000 1622672 5702152 +1622720 5702232 1622992 5702184 1622968 5702104 1622672 5702152 +1622928 5702000 1622912 5701984 1622672 5702152 1622968 5702104 +1622720 5702232 1622968 5702104 1622672 5702152 1622464 5702200 +1622912 5701984 1622872 5701952 1622672 5702152 1622928 5702000 +1622672 5702152 1622656 5702096 1622464 5702200 1622720 5702232 +1622632 5702000 1622656 5702096 1622672 5702152 1622656 5701976 +1622672 5702152 1622704 5701944 1622656 5701976 1622656 5702096 +1622672 5702152 1622784 5701928 1622704 5701944 1622656 5702096 +1622704 5701944 1622656 5701976 1622656 5702096 1622784 5701928 +1622656 5702096 1622464 5702200 1622672 5702152 1622784 5701928 +1622656 5701976 1622632 5702000 1622656 5702096 1622704 5701944 +1622632 5702000 1622464 5702200 1622656 5702096 1622656 5701976 +1622672 5702152 1622872 5701952 1622784 5701928 1622656 5702096 +1622672 5702152 1622912 5701984 1622872 5701952 1622656 5702096 +1622784 5701928 1622704 5701944 1622656 5702096 1622872 5701952 +1622672 5702152 1622912 5701984 1622656 5702096 1622464 5702200 +1622872 5701952 1622784 5701928 1622656 5702096 1622912 5701984 +1622464 5702200 1622656 5702096 1622632 5702000 1622240 5702048 +1622872 5701952 1622824 5701928 1622784 5701928 1622656 5702096 +1622672 5702152 1622928 5702000 1622912 5701984 1622656 5702096 +1622656 5702096 1622632 5702032 1622464 5702200 1622672 5702152 +1622632 5702000 1622632 5702032 1622656 5702096 1622656 5701976 +1622632 5702000 1622464 5702200 1622632 5702032 1622656 5701976 +1622656 5702096 1622704 5701944 1622656 5701976 1622632 5702032 +1622632 5702032 1622464 5702200 1622656 5702096 1622656 5701976 +1622464 5702200 1622632 5702032 1622632 5702000 1622240 5702048 +1621664 5703552 1617496 5700904 1617824 5707096 1621664 5703600 +1621664 5703552 1615968 5699848 1617496 5700904 1621664 5703600 +1617496 5700904 1615968 5699848 1617824 5707096 1621664 5703600 +1617824 5707096 1617496 5700904 1615968 5699848 1615776 5699960 +1617824 5707096 1621664 5703600 1617496 5700904 1615776 5699960 +1615968 5699848 1617496 5700904 1621664 5703552 1621448 5701528 +1621664 5703552 1621752 5702000 1621448 5701528 1617496 5700904 +1617496 5700904 1621664 5703600 1621664 5703552 1621448 5701528 +1615968 5699848 1617496 5700904 1621448 5701528 1616112 5699736 +1621448 5701528 1616256 5699536 1616112 5699736 1617496 5700904 +1621448 5701528 1621464 5701464 1616256 5699536 1617496 5700904 +1621464 5701464 1616600 5698864 1616256 5699536 1617496 5700904 +1621464 5701464 1621488 5701424 1616600 5698864 1617496 5700904 +1621488 5701424 1616624 5698800 1616600 5698864 1617496 5700904 +1621488 5701424 1616624 5698800 1617496 5700904 1621464 5701464 +1621488 5701424 1621944 5698008 1616624 5698800 1617496 5700904 +1621488 5701424 1621944 5698008 1617496 5700904 1621464 5701464 +1621488 5701424 1621576 5701360 1621944 5698008 1617496 5700904 +1621944 5698008 1616624 5698656 1616624 5698800 1617496 5700904 +1616624 5698800 1616600 5698864 1617496 5700904 1621944 5698008 +1616600 5698864 1616256 5699472 1616256 5699536 1617496 5700904 +1621464 5701464 1621488 5701424 1617496 5700904 1621448 5701528 +1616600 5698864 1616256 5699536 1617496 5700904 1616624 5698800 +1616256 5699536 1616112 5699736 1617496 5700904 1616600 5698864 +1617496 5700904 1621664 5703552 1621448 5701528 1621464 5701464 +1616112 5699736 1615968 5699848 1617496 5700904 1616256 5699536 +1617824 5707096 1617856 5707112 1621664 5703600 1617496 5700904 +1617824 5707096 1617496 5700904 1615776 5699960 1613592 5703136 +1617824 5707096 1617496 5700904 1613592 5703136 1613584 5703232 +1617824 5707096 1621664 5703600 1617496 5700904 1613584 5703232 +1617496 5700904 1615968 5699848 1615776 5699960 1613592 5703136 +1617824 5707096 1617496 5700904 1613584 5703232 1617792 5707104 +1617496 5700904 1613592 5703136 1613584 5703232 1617792 5707104 +1617824 5707096 1621664 5703600 1617496 5700904 1617792 5707104 +1613584 5703232 1614576 5707608 1617792 5707104 1617496 5700904 +1617496 5700904 1615776 5699960 1613592 5703136 1613584 5703232 +1617496 5700904 1616112 5699736 1615968 5699848 1615776 5699960 +1615776 5699960 1615600 5700000 1613592 5703136 1617496 5700904 +1615776 5699960 1615600 5700000 1617496 5700904 1615968 5699848 +1613592 5703136 1613584 5703232 1617496 5700904 1615600 5700000 +1615600 5700000 1615168 5700080 1613592 5703136 1617496 5700904 +1615168 5700080 1615072 5700064 1613592 5703136 1617496 5700904 +1615600 5700000 1615392 5700008 1615168 5700080 1617496 5700904 +1613592 5703136 1613584 5703232 1617496 5700904 1615168 5700080 +1615600 5700000 1615168 5700080 1617496 5700904 1615776 5699960 +1613584 5703232 1617392 5700976 1617496 5700904 1613592 5703136 +1617392 5700976 1617792 5707104 1617496 5700904 1613592 5703136 +1617792 5707104 1617392 5700976 1613584 5703232 1614576 5707608 +1617496 5700904 1617392 5700976 1617792 5707104 1617824 5707096 +1617392 5700976 1613584 5703232 1617792 5707104 1617824 5707096 +1617496 5700904 1617392 5700976 1617824 5707096 1621664 5703600 +1617496 5700904 1613592 5703136 1617392 5700976 1621664 5703600 +1617496 5700904 1617392 5700976 1621664 5703600 1621664 5703552 +1617496 5700904 1617392 5700976 1621664 5703552 1621448 5701528 +1617392 5700976 1617824 5707096 1621664 5703600 1621664 5703552 +1617496 5700904 1613592 5703136 1617392 5700976 1621664 5703552 +1617824 5707096 1617856 5707112 1621664 5703600 1617392 5700976 +1617392 5700976 1617792 5707104 1617824 5707096 1621664 5703600 +1617496 5700904 1615168 5700080 1613592 5703136 1617392 5700976 +1613592 5703136 1613584 5703232 1617392 5700976 1615168 5700080 +1615168 5700080 1615072 5700064 1613592 5703136 1617392 5700976 +1617496 5700904 1615168 5700080 1617392 5700976 1621664 5703552 +1613584 5703232 1617792 5707104 1617392 5700976 1613592 5703136 +1617496 5700904 1615600 5700000 1615168 5700080 1617392 5700976 +1617496 5700904 1615600 5700000 1617392 5700976 1621664 5703552 +1615600 5700000 1615392 5700008 1615168 5700080 1617392 5700976 +1615168 5700080 1613592 5703136 1617392 5700976 1615600 5700000 +1617496 5700904 1615776 5699960 1615600 5700000 1617392 5700976 +1617496 5700904 1615776 5699960 1617392 5700976 1621664 5703552 +1617496 5700904 1615968 5699848 1615776 5699960 1617392 5700976 +1617496 5700904 1615968 5699848 1617392 5700976 1621664 5703552 +1617496 5700904 1616112 5699736 1615968 5699848 1617392 5700976 +1617496 5700904 1616112 5699736 1617392 5700976 1621664 5703552 +1615968 5699848 1615776 5699960 1617392 5700976 1616112 5699736 +1617496 5700904 1616256 5699536 1616112 5699736 1617392 5700976 +1615776 5699960 1615600 5700000 1617392 5700976 1615968 5699848 +1615600 5700000 1615168 5700080 1617392 5700976 1615776 5699960 +1617392 5700976 1617224 5701032 1613592 5703136 1613584 5703232 +1613592 5703136 1617224 5701032 1615168 5700080 1615072 5700064 +1617224 5701032 1615168 5700080 1613592 5703136 1613584 5703232 +1615168 5700080 1617224 5701032 1617392 5700976 1615600 5700000 +1615168 5700080 1617224 5701032 1615600 5700000 1615392 5700008 +1615168 5700080 1613592 5703136 1617224 5701032 1615600 5700000 +1617392 5700976 1615600 5700000 1617224 5701032 1613584 5703232 +1617392 5700976 1617224 5701032 1613584 5703232 1617792 5707104 +1617392 5700976 1617224 5701032 1617792 5707104 1617824 5707096 +1617224 5701032 1613592 5703136 1613584 5703232 1617792 5707104 +1613584 5703232 1614576 5707608 1617792 5707104 1617224 5701032 +1617392 5700976 1617224 5701032 1617824 5707096 1621664 5703600 +1617392 5700976 1615600 5700000 1617224 5701032 1617824 5707096 +1617224 5701032 1613584 5703232 1617792 5707104 1617824 5707096 +1617392 5700976 1615776 5699960 1615600 5700000 1617224 5701032 +1615600 5700000 1615168 5700080 1617224 5701032 1615776 5699960 +1617392 5700976 1615776 5699960 1617224 5701032 1617824 5707096 +1617392 5700976 1615968 5699848 1615776 5699960 1617224 5701032 +1617392 5700976 1616112 5699736 1615968 5699848 1617224 5701032 +1617392 5700976 1617496 5700904 1616112 5699736 1617224 5701032 +1616112 5699736 1615968 5699848 1617224 5701032 1617496 5700904 +1617496 5700904 1616256 5699536 1616112 5699736 1617224 5701032 +1616112 5699736 1615968 5699848 1617224 5701032 1616256 5699536 +1617496 5700904 1616600 5698864 1616256 5699536 1617224 5701032 +1617496 5700904 1616256 5699536 1617224 5701032 1617392 5700976 +1617392 5700976 1617496 5700904 1617224 5701032 1617824 5707096 +1615968 5699848 1615776 5699960 1617224 5701032 1616112 5699736 +1615776 5699960 1615600 5700000 1617224 5701032 1615968 5699848 +1613592 5703136 1617088 5701032 1615168 5700080 1615072 5700064 +1617224 5701032 1617088 5701032 1613592 5703136 1613584 5703232 +1617224 5701032 1617088 5701032 1613584 5703232 1617792 5707104 +1617088 5701032 1613592 5703136 1613584 5703232 1617792 5707104 +1617224 5701032 1615168 5700080 1617088 5701032 1617792 5707104 +1613584 5703232 1614576 5707608 1617792 5707104 1617088 5701032 +1615168 5700080 1617088 5701032 1617224 5701032 1615600 5700000 +1615168 5700080 1613592 5703136 1617088 5701032 1615600 5700000 +1617088 5701032 1617792 5707104 1617224 5701032 1615600 5700000 +1615168 5700080 1617088 5701032 1615600 5700000 1615392 5700008 +1617224 5701032 1615776 5699960 1615600 5700000 1617088 5701032 +1617224 5701032 1615776 5699960 1617088 5701032 1617792 5707104 +1615600 5700000 1615168 5700080 1617088 5701032 1615776 5699960 +1617088 5701032 1615168 5700080 1613592 5703136 1613584 5703232 +1617224 5701032 1617088 5701032 1617792 5707104 1617824 5707096 +1617224 5701032 1617088 5701032 1617824 5707096 1617392 5700976 +1617088 5701032 1613584 5703232 1617792 5707104 1617824 5707096 +1617224 5701032 1615776 5699960 1617088 5701032 1617824 5707096 +1617224 5701032 1615968 5699848 1615776 5699960 1617088 5701032 +1617224 5701032 1615968 5699848 1617088 5701032 1617824 5707096 +1615776 5699960 1615600 5700000 1617088 5701032 1615968 5699848 +1617224 5701032 1616112 5699736 1615968 5699848 1617088 5701032 +1617224 5701032 1616112 5699736 1617088 5701032 1617824 5707096 +1617224 5701032 1616256 5699536 1616112 5699736 1617088 5701032 +1617224 5701032 1616256 5699536 1617088 5701032 1617824 5707096 +1617224 5701032 1617496 5700904 1616256 5699536 1617088 5701032 +1617224 5701032 1617496 5700904 1617088 5701032 1617824 5707096 +1616256 5699536 1616112 5699736 1617088 5701032 1617496 5700904 +1617496 5700904 1616600 5698864 1616256 5699536 1617088 5701032 +1617224 5701032 1617392 5700976 1617496 5700904 1617088 5701032 +1617224 5701032 1617392 5700976 1617088 5701032 1617824 5707096 +1617496 5700904 1616256 5699536 1617088 5701032 1617392 5700976 +1616112 5699736 1615968 5699848 1617088 5701032 1616256 5699536 +1615968 5699848 1615776 5699960 1617088 5701032 1616112 5699736 +1613592 5703136 1616928 5700984 1615168 5700080 1615072 5700064 +1615168 5700080 1616928 5700984 1617088 5701032 1615600 5700000 +1615168 5700080 1613592 5703136 1616928 5700984 1615600 5700000 +1616928 5700984 1613592 5703136 1617088 5701032 1615600 5700000 +1615168 5700080 1616928 5700984 1615600 5700000 1615392 5700008 +1617088 5701032 1615776 5699960 1615600 5700000 1616928 5700984 +1615600 5700000 1615168 5700080 1616928 5700984 1615776 5699960 +1617088 5701032 1615776 5699960 1616928 5700984 1613592 5703136 +1617088 5701032 1615968 5699848 1615776 5699960 1616928 5700984 +1617088 5701032 1615968 5699848 1616928 5700984 1613592 5703136 +1615776 5699960 1615600 5700000 1616928 5700984 1615968 5699848 +1617088 5701032 1616928 5700984 1613592 5703136 1613584 5703232 +1617088 5701032 1615968 5699848 1616928 5700984 1613584 5703232 +1616928 5700984 1615168 5700080 1613592 5703136 1613584 5703232 +1617088 5701032 1616928 5700984 1613584 5703232 1617792 5707104 +1617088 5701032 1616112 5699736 1615968 5699848 1616928 5700984 +1617088 5701032 1616112 5699736 1616928 5700984 1613584 5703232 +1615968 5699848 1615776 5699960 1616928 5700984 1616112 5699736 +1617088 5701032 1616256 5699536 1616112 5699736 1616928 5700984 +1617088 5701032 1616256 5699536 1616928 5700984 1613584 5703232 +1617088 5701032 1617496 5700904 1616256 5699536 1616928 5700984 +1617088 5701032 1617496 5700904 1616928 5700984 1613584 5703232 +1617496 5700904 1616600 5698864 1616256 5699536 1616928 5700984 +1617088 5701032 1617392 5700976 1617496 5700904 1616928 5700984 +1617088 5701032 1617392 5700976 1616928 5700984 1613584 5703232 +1617496 5700904 1616256 5699536 1616928 5700984 1617392 5700976 +1617088 5701032 1617224 5701032 1617392 5700976 1616928 5700984 +1616256 5699536 1616112 5699736 1616928 5700984 1617496 5700904 +1616112 5699736 1615968 5699848 1616928 5700984 1616256 5699536 +1615168 5700080 1616736 5700904 1616928 5700984 1615600 5700000 +1616736 5700904 1613592 5703136 1616928 5700984 1615600 5700000 +1615168 5700080 1613592 5703136 1616736 5700904 1615600 5700000 +1613592 5703136 1616736 5700904 1615168 5700080 1615072 5700064 +1616928 5700984 1615776 5699960 1615600 5700000 1616736 5700904 +1616928 5700984 1615776 5699960 1616736 5700904 1613592 5703136 +1615600 5700000 1615168 5700080 1616736 5700904 1615776 5699960 +1616928 5700984 1616736 5700904 1613592 5703136 1613584 5703232 +1615168 5700080 1616736 5700904 1615600 5700000 1615392 5700008 +1616928 5700984 1615968 5699848 1615776 5699960 1616736 5700904 +1616928 5700984 1615968 5699848 1616736 5700904 1613592 5703136 +1615776 5699960 1615600 5700000 1616736 5700904 1615968 5699848 +1616928 5700984 1616112 5699736 1615968 5699848 1616736 5700904 +1616928 5700984 1616112 5699736 1616736 5700904 1613592 5703136 +1615968 5699848 1615776 5699960 1616736 5700904 1616112 5699736 +1616928 5700984 1616256 5699536 1616112 5699736 1616736 5700904 +1616928 5700984 1616256 5699536 1616736 5700904 1613592 5703136 +1616112 5699736 1615968 5699848 1616736 5700904 1616256 5699536 +1616928 5700984 1617496 5700904 1616256 5699536 1616736 5700904 +1616928 5700984 1617496 5700904 1616736 5700904 1613592 5703136 +1616928 5700984 1617392 5700976 1617496 5700904 1616736 5700904 +1617496 5700904 1616600 5698864 1616256 5699536 1616736 5700904 +1616256 5699536 1616112 5699736 1616736 5700904 1617496 5700904 +1616736 5700904 1616672 5700904 1613592 5703136 1616928 5700984 +1616736 5700904 1615168 5700080 1616672 5700904 1616928 5700984 +1615168 5700080 1616672 5700904 1616736 5700904 1615600 5700000 +1616736 5700904 1615776 5699960 1615600 5700000 1616672 5700904 +1616672 5700904 1616928 5700984 1616736 5700904 1615776 5699960 +1615600 5700000 1615168 5700080 1616672 5700904 1615776 5699960 +1616672 5700904 1615168 5700080 1613592 5703136 1616928 5700984 +1615168 5700080 1613592 5703136 1616672 5700904 1615600 5700000 +1613592 5703136 1616672 5700904 1615168 5700080 1615072 5700064 +1616736 5700904 1615968 5699848 1615776 5699960 1616672 5700904 +1615776 5699960 1615600 5700000 1616672 5700904 1615968 5699848 +1616736 5700904 1615968 5699848 1616672 5700904 1616928 5700984 +1613592 5703136 1613584 5703232 1616928 5700984 1616672 5700904 +1615168 5700080 1616672 5700904 1615600 5700000 1615392 5700008 +1616736 5700904 1616112 5699736 1615968 5699848 1616672 5700904 +1616736 5700904 1616112 5699736 1616672 5700904 1616928 5700984 +1615968 5699848 1615776 5699960 1616672 5700904 1616112 5699736 +1616736 5700904 1616256 5699536 1616112 5699736 1616672 5700904 +1616672 5700904 1616632 5700928 1613592 5703136 1616928 5700984 +1616672 5700904 1616632 5700928 1616928 5700984 1616736 5700904 +1616632 5700928 1613592 5703136 1616928 5700984 1616736 5700904 +1616672 5700904 1615168 5700080 1616632 5700928 1616736 5700904 +1615168 5700080 1616632 5700928 1616672 5700904 1615600 5700000 +1616672 5700904 1615776 5699960 1615600 5700000 1616632 5700928 +1616672 5700904 1615968 5699848 1615776 5699960 1616632 5700928 +1615776 5699960 1615600 5700000 1616632 5700928 1615968 5699848 +1616632 5700928 1616736 5700904 1616672 5700904 1615968 5699848 +1615600 5700000 1615168 5700080 1616632 5700928 1615776 5699960 +1616632 5700928 1615168 5700080 1613592 5703136 1616928 5700984 +1615168 5700080 1613592 5703136 1616632 5700928 1615600 5700000 +1613592 5703136 1616632 5700928 1615168 5700080 1615072 5700064 +1616672 5700904 1616112 5699736 1615968 5699848 1616632 5700928 +1613592 5703136 1613584 5703232 1616928 5700984 1616632 5700928 +1616928 5700984 1616736 5700904 1616632 5700928 1613584 5703232 +1613592 5703136 1613584 5703232 1616632 5700928 1615168 5700080 +1615168 5700080 1616632 5700928 1615600 5700000 1615392 5700008 +1613584 5703232 1617088 5701032 1616928 5700984 1616632 5700928 +1616928 5700984 1616736 5700904 1616632 5700928 1617088 5701032 +1613584 5703232 1617088 5701032 1616632 5700928 1613592 5703136 +1613584 5703232 1617792 5707104 1617088 5701032 1616632 5700928 +1613584 5703232 1616576 5701000 1616632 5700928 1613592 5703136 +1616632 5700928 1615168 5700080 1613592 5703136 1616576 5701000 +1616576 5701000 1617088 5701032 1616632 5700928 1615168 5700080 +1616632 5700928 1615600 5700000 1615168 5700080 1616576 5701000 +1616632 5700928 1615776 5699960 1615600 5700000 1616576 5701000 +1616632 5700928 1615968 5699848 1615776 5699960 1616576 5701000 +1615168 5700080 1613592 5703136 1616576 5701000 1615600 5700000 +1616632 5700928 1615776 5699960 1616576 5701000 1617088 5701032 +1615600 5700000 1615168 5700080 1616576 5701000 1615776 5699960 +1613584 5703232 1617088 5701032 1616576 5701000 1613592 5703136 +1615168 5700080 1615072 5700064 1613592 5703136 1616576 5701000 +1613592 5703136 1613584 5703232 1616576 5701000 1615168 5700080 +1617088 5701032 1616576 5701000 1613584 5703232 1617792 5707104 +1617088 5701032 1616632 5700928 1616576 5701000 1617792 5707104 +1616576 5701000 1613592 5703136 1613584 5703232 1617792 5707104 +1617088 5701032 1616576 5701000 1617792 5707104 1617824 5707096 +1613584 5703232 1614576 5707608 1617792 5707104 1616576 5701000 +1615600 5700000 1615392 5700008 1615168 5700080 1616576 5701000 +1616632 5700928 1616576 5701000 1617088 5701032 1616928 5700984 +1616632 5700928 1616576 5701000 1616928 5700984 1616736 5700904 +1616632 5700928 1616576 5701000 1616736 5700904 1616672 5700904 +1616632 5700928 1615776 5699960 1616576 5701000 1616736 5700904 +1616576 5701000 1617792 5707104 1617088 5701032 1616928 5700984 +1616576 5701000 1617088 5701032 1616928 5700984 1616736 5700904 +1613584 5703232 1616496 5701136 1616576 5701000 1613592 5703136 +1616496 5701136 1617792 5707104 1616576 5701000 1613592 5703136 +1613584 5703232 1617792 5707104 1616496 5701136 1613592 5703136 +1616576 5701000 1615168 5700080 1613592 5703136 1616496 5701136 +1616576 5701000 1615600 5700000 1615168 5700080 1616496 5701136 +1616576 5701000 1615776 5699960 1615600 5700000 1616496 5701136 +1616576 5701000 1616632 5700928 1615776 5699960 1616496 5701136 +1615600 5700000 1615168 5700080 1616496 5701136 1615776 5699960 +1616576 5701000 1615776 5699960 1616496 5701136 1617792 5707104 +1613592 5703136 1613584 5703232 1616496 5701136 1615168 5700080 +1615168 5700080 1615072 5700064 1613592 5703136 1616496 5701136 +1615168 5700080 1613592 5703136 1616496 5701136 1615600 5700000 +1616576 5701000 1616496 5701136 1617792 5707104 1617088 5701032 +1616576 5701000 1616496 5701136 1617088 5701032 1616928 5700984 +1616576 5701000 1615776 5699960 1616496 5701136 1616928 5700984 +1616496 5701136 1613584 5703232 1617792 5707104 1617088 5701032 +1617792 5707104 1617824 5707096 1617088 5701032 1616496 5701136 +1617792 5707104 1617824 5707096 1616496 5701136 1613584 5703232 +1616496 5701136 1617824 5707096 1617088 5701032 1616928 5700984 +1617792 5707104 1616496 5701136 1613584 5703232 1614576 5707608 +1615600 5700000 1615392 5700008 1615168 5700080 1616496 5701136 +1616576 5701000 1616496 5701136 1616928 5700984 1616736 5700904 +1617824 5707096 1617224 5701032 1617088 5701032 1616496 5701136 +1617824 5707096 1617392 5700976 1617224 5701032 1616496 5701136 +1617824 5707096 1617224 5701032 1616496 5701136 1617792 5707104 +1617088 5701032 1616928 5700984 1616496 5701136 1617224 5701032 +1616496 5701136 1616424 5701192 1617792 5707104 1617824 5707096 +1616496 5701136 1613584 5703232 1616424 5701192 1617824 5707096 +1616496 5701136 1616424 5701192 1617824 5707096 1617224 5701032 +1616424 5701192 1617792 5707104 1617824 5707096 1617224 5701032 +1616496 5701136 1613584 5703232 1616424 5701192 1617224 5701032 +1617824 5707096 1617392 5700976 1617224 5701032 1616424 5701192 +1613584 5703232 1616424 5701192 1616496 5701136 1613592 5703136 +1616496 5701136 1615168 5700080 1613592 5703136 1616424 5701192 +1616424 5701192 1617224 5701032 1616496 5701136 1615168 5700080 +1615168 5700080 1615072 5700064 1613592 5703136 1616424 5701192 +1615168 5700080 1615072 5700064 1616424 5701192 1616496 5701136 +1615072 5700064 1613464 5703016 1613592 5703136 1616424 5701192 +1613592 5703136 1613584 5703232 1616424 5701192 1615072 5700064 +1616424 5701192 1613584 5703232 1617792 5707104 1617824 5707096 +1613584 5703232 1617792 5707104 1616424 5701192 1613592 5703136 +1616496 5701136 1615600 5700000 1615168 5700080 1616424 5701192 +1616496 5701136 1615776 5699960 1615600 5700000 1616424 5701192 +1616496 5701136 1616576 5701000 1615776 5699960 1616424 5701192 +1616576 5701000 1616632 5700928 1615776 5699960 1616424 5701192 +1615776 5699960 1615600 5700000 1616424 5701192 1616576 5701000 +1615168 5700080 1615072 5700064 1616424 5701192 1615600 5700000 +1616496 5701136 1616576 5701000 1616424 5701192 1617224 5701032 +1615600 5700000 1615168 5700080 1616424 5701192 1615776 5699960 +1617792 5707104 1616424 5701192 1613584 5703232 1614576 5707608 +1615600 5700000 1615392 5700008 1615168 5700080 1616424 5701192 +1616496 5701136 1616424 5701192 1617224 5701032 1617088 5701032 +1616496 5701136 1616576 5701000 1616424 5701192 1617088 5701032 +1616424 5701192 1617824 5707096 1617224 5701032 1617088 5701032 +1616496 5701136 1616424 5701192 1617088 5701032 1616928 5700984 +1615072 5700064 1616368 5701208 1616424 5701192 1615168 5700080 +1616424 5701192 1615600 5700000 1615168 5700080 1616368 5701208 +1615168 5700080 1615072 5700064 1616368 5701208 1615600 5700000 +1613592 5703136 1616368 5701208 1615072 5700064 1613464 5703016 +1616424 5701192 1616368 5701208 1613592 5703136 1613584 5703232 +1616368 5701208 1613584 5703232 1616424 5701192 1615600 5700000 +1616424 5701192 1616368 5701208 1613584 5703232 1617792 5707104 +1616368 5701208 1613592 5703136 1613584 5703232 1617792 5707104 +1616424 5701192 1616368 5701208 1617792 5707104 1617824 5707096 +1616424 5701192 1616368 5701208 1617824 5707096 1617224 5701032 +1616424 5701192 1615600 5700000 1616368 5701208 1617824 5707096 +1616368 5701208 1613584 5703232 1617792 5707104 1617824 5707096 +1613592 5703136 1613584 5703232 1616368 5701208 1613464 5703016 +1616424 5701192 1615776 5699960 1615600 5700000 1616368 5701208 +1616424 5701192 1616576 5701000 1615776 5699960 1616368 5701208 +1616576 5701000 1616632 5700928 1615776 5699960 1616368 5701208 +1616424 5701192 1616496 5701136 1616576 5701000 1616368 5701208 +1616576 5701000 1615776 5699960 1616368 5701208 1616496 5701136 +1615600 5700000 1615168 5700080 1616368 5701208 1615776 5699960 +1616424 5701192 1616496 5701136 1616368 5701208 1617824 5707096 +1615776 5699960 1615600 5700000 1616368 5701208 1616576 5701000 +1613584 5703232 1614576 5707608 1617792 5707104 1616368 5701208 +1615072 5700064 1613304 5702872 1613464 5703016 1616368 5701208 +1613592 5703136 1616368 5701208 1613464 5703016 1613512 5703064 +1615600 5700000 1615392 5700008 1615168 5700080 1616368 5701208 +1615072 5700064 1613464 5703016 1616368 5701208 1615168 5700080 +1616368 5701208 1616304 5701200 1613464 5703016 1613592 5703136 +1616368 5701208 1616304 5701200 1613592 5703136 1613584 5703232 +1616304 5701200 1613464 5703016 1613592 5703136 1613584 5703232 +1616368 5701208 1616304 5701200 1613584 5703232 1617792 5707104 +1616368 5701208 1615072 5700064 1616304 5701200 1613584 5703232 +1613464 5703016 1616304 5701200 1615072 5700064 1613304 5702872 +1613464 5703016 1613512 5703064 1613592 5703136 1616304 5701200 +1615072 5700064 1616304 5701200 1616368 5701208 1615168 5700080 +1616368 5701208 1615600 5700000 1615168 5700080 1616304 5701200 +1616368 5701208 1615776 5699960 1615600 5700000 1616304 5701200 +1615600 5700000 1615168 5700080 1616304 5701200 1615776 5699960 +1616304 5701200 1613584 5703232 1616368 5701208 1615776 5699960 +1616368 5701208 1616576 5701000 1615776 5699960 1616304 5701200 +1616576 5701000 1616632 5700928 1615776 5699960 1616304 5701200 +1616368 5701208 1616496 5701136 1616576 5701000 1616304 5701200 +1616368 5701208 1616424 5701192 1616496 5701136 1616304 5701200 +1616496 5701136 1616576 5701000 1616304 5701200 1616424 5701192 +1615776 5699960 1615600 5700000 1616304 5701200 1616576 5701000 +1616368 5701208 1616424 5701192 1616304 5701200 1613584 5703232 +1616576 5701000 1615776 5699960 1616304 5701200 1616496 5701136 +1615600 5700000 1615392 5700008 1615168 5700080 1616304 5701200 +1615072 5700064 1613464 5703016 1616304 5701200 1615168 5700080 +1615168 5700080 1615072 5700064 1616304 5701200 1615600 5700000 +1616304 5701200 1615072 5700064 1613464 5703016 1613592 5703136 +1613464 5703016 1616120 5701120 1615072 5700064 1613304 5702872 +1616120 5701120 1616304 5701200 1615072 5700064 1613304 5702872 +1615072 5700064 1614280 5699976 1613304 5702872 1616120 5701120 +1615072 5700064 1616120 5701120 1616304 5701200 1615168 5700080 +1615072 5700064 1613304 5702872 1616120 5701120 1615168 5700080 +1613464 5703016 1616304 5701200 1616120 5701120 1613304 5702872 +1613464 5703016 1616120 5701120 1613304 5702872 1613344 5702912 +1616304 5701200 1615600 5700000 1615168 5700080 1616120 5701120 +1616304 5701200 1615776 5699960 1615600 5700000 1616120 5701120 +1616304 5701200 1616576 5701000 1615776 5699960 1616120 5701120 +1616576 5701000 1616632 5700928 1615776 5699960 1616120 5701120 +1616632 5700928 1615968 5699848 1615776 5699960 1616120 5701120 +1616576 5701000 1616632 5700928 1616120 5701120 1616304 5701200 +1615776 5699960 1615600 5700000 1616120 5701120 1616632 5700928 +1616304 5701200 1616496 5701136 1616576 5701000 1616120 5701120 +1615600 5700000 1615392 5700008 1615168 5700080 1616120 5701120 +1615168 5700080 1615072 5700064 1616120 5701120 1615392 5700008 +1615600 5700000 1615392 5700008 1616120 5701120 1615776 5699960 +1616304 5701200 1616120 5701120 1613464 5703016 1613592 5703136 +1616304 5701200 1616120 5701120 1613592 5703136 1613584 5703232 +1613464 5703016 1613512 5703064 1613592 5703136 1616120 5701120 +1613512 5703064 1613560 5703120 1613592 5703136 1616120 5701120 +1616120 5701120 1613304 5702872 1613464 5703016 1613512 5703064 +1613592 5703136 1616304 5701200 1616120 5701120 1613512 5703064 +1616120 5701120 1613592 5703136 1616304 5701200 1616576 5701000 +1615072 5700064 1616096 5701128 1616120 5701120 1615168 5700080 +1615072 5700064 1613304 5702872 1616096 5701128 1615168 5700080 +1613304 5702872 1616096 5701128 1615072 5700064 1614280 5699976 +1613304 5702872 1616120 5701120 1616096 5701128 1614280 5699976 +1616096 5701128 1615168 5700080 1615072 5700064 1614280 5699976 +1615072 5700064 1614600 5699912 1614280 5699976 1616096 5701128 +1616120 5701120 1616096 5701128 1613304 5702872 1613464 5703016 +1616096 5701128 1614280 5699976 1613304 5702872 1613464 5703016 +1616120 5701120 1615392 5700008 1615168 5700080 1616096 5701128 +1615168 5700080 1615072 5700064 1616096 5701128 1615392 5700008 +1616120 5701120 1615600 5700000 1615392 5700008 1616096 5701128 +1615392 5700008 1615168 5700080 1616096 5701128 1615600 5700000 +1616120 5701120 1616096 5701128 1613464 5703016 1613512 5703064 +1616096 5701128 1613304 5702872 1613464 5703016 1613512 5703064 +1616120 5701120 1616096 5701128 1613512 5703064 1613592 5703136 +1613512 5703064 1613560 5703120 1613592 5703136 1616096 5701128 +1616096 5701128 1613464 5703016 1613512 5703064 1613592 5703136 +1616096 5701128 1613592 5703136 1616120 5701120 1615600 5700000 +1613304 5702872 1613344 5702912 1613464 5703016 1616096 5701128 +1616120 5701120 1615776 5699960 1615600 5700000 1616096 5701128 +1616120 5701120 1616632 5700928 1615776 5699960 1616096 5701128 +1615600 5700000 1615392 5700008 1616096 5701128 1615776 5699960 +1616120 5701120 1615776 5699960 1616096 5701128 1613592 5703136 +1616120 5701120 1616096 5701128 1613592 5703136 1616304 5701200 +1613592 5703136 1613584 5703232 1616304 5701200 1616096 5701128 +1616096 5701128 1613512 5703064 1613592 5703136 1616304 5701200 +1616120 5701120 1615776 5699960 1616096 5701128 1616304 5701200 +1613304 5702872 1616096 5701128 1614280 5699976 1614160 5699968 +1616096 5701128 1615936 5701216 1613304 5702872 1613464 5703016 +1616096 5701128 1614280 5699976 1615936 5701216 1613464 5703016 +1615936 5701216 1614280 5699976 1613304 5702872 1613464 5703016 +1614280 5699976 1615936 5701216 1616096 5701128 1615072 5700064 +1615936 5701216 1613464 5703016 1616096 5701128 1615072 5700064 +1616096 5701128 1615168 5700080 1615072 5700064 1615936 5701216 +1616096 5701128 1615392 5700008 1615168 5700080 1615936 5701216 +1616096 5701128 1615392 5700008 1615936 5701216 1613464 5703016 +1615168 5700080 1615072 5700064 1615936 5701216 1615392 5700008 +1614280 5699976 1613304 5702872 1615936 5701216 1615072 5700064 +1615072 5700064 1614280 5699976 1615936 5701216 1615168 5700080 +1614280 5699976 1615936 5701216 1615072 5700064 1614600 5699912 +1616096 5701128 1615936 5701216 1613464 5703016 1613512 5703064 +1615936 5701216 1613304 5702872 1613464 5703016 1613512 5703064 +1616096 5701128 1615392 5700008 1615936 5701216 1613512 5703064 +1616096 5701128 1615600 5700000 1615392 5700008 1615936 5701216 +1615392 5700008 1615168 5700080 1615936 5701216 1615600 5700000 +1616096 5701128 1615600 5700000 1615936 5701216 1613512 5703064 +1616096 5701128 1615776 5699960 1615600 5700000 1615936 5701216 +1616096 5701128 1615936 5701216 1613512 5703064 1613592 5703136 +1616096 5701128 1615600 5700000 1615936 5701216 1613592 5703136 +1615936 5701216 1613464 5703016 1613512 5703064 1613592 5703136 +1616096 5701128 1615936 5701216 1613592 5703136 1616304 5701200 +1613592 5703136 1613584 5703232 1616304 5701200 1615936 5701216 +1613584 5703232 1616368 5701208 1616304 5701200 1615936 5701216 +1613584 5703232 1616368 5701208 1615936 5701216 1613592 5703136 +1613584 5703232 1617792 5707104 1616368 5701208 1615936 5701216 +1616096 5701128 1615600 5700000 1615936 5701216 1616304 5701200 +1616304 5701200 1616096 5701128 1615936 5701216 1616368 5701208 +1613512 5703064 1613560 5703120 1613592 5703136 1615936 5701216 +1615936 5701216 1613512 5703064 1613592 5703136 1613584 5703232 +1613304 5702872 1613344 5702912 1613464 5703016 1615936 5701216 +1616096 5701128 1615936 5701216 1616304 5701200 1616120 5701120 +1613304 5702872 1615936 5701216 1614280 5699976 1614160 5699968 +1615936 5701216 1615768 5701248 1613304 5702872 1613464 5703016 +1615936 5701216 1615768 5701248 1613464 5703016 1613512 5703064 +1615936 5701216 1614280 5699976 1615768 5701248 1613512 5703064 +1614280 5699976 1615768 5701248 1615936 5701216 1615072 5700064 +1615768 5701248 1613512 5703064 1615936 5701216 1615072 5700064 +1615768 5701248 1614280 5699976 1613304 5702872 1613464 5703016 +1615768 5701248 1613304 5702872 1613464 5703016 1613512 5703064 +1614280 5699976 1613304 5702872 1615768 5701248 1615072 5700064 +1615936 5701216 1615168 5700080 1615072 5700064 1615768 5701248 +1615936 5701216 1615392 5700008 1615168 5700080 1615768 5701248 +1615936 5701216 1615600 5700000 1615392 5700008 1615768 5701248 +1615392 5700008 1615168 5700080 1615768 5701248 1615600 5700000 +1615936 5701216 1615600 5700000 1615768 5701248 1613512 5703064 +1615072 5700064 1614280 5699976 1615768 5701248 1615168 5700080 +1615168 5700080 1615072 5700064 1615768 5701248 1615392 5700008 +1614280 5699976 1615768 5701248 1615072 5700064 1614600 5699912 +1615936 5701216 1615768 5701248 1613512 5703064 1613592 5703136 +1615768 5701248 1613464 5703016 1613512 5703064 1613592 5703136 +1615936 5701216 1615600 5700000 1615768 5701248 1613592 5703136 +1613512 5703064 1613560 5703120 1613592 5703136 1615768 5701248 +1615936 5701216 1616096 5701128 1615600 5700000 1615768 5701248 +1615600 5700000 1615392 5700008 1615768 5701248 1616096 5701128 +1615936 5701216 1616096 5701128 1615768 5701248 1613592 5703136 +1616096 5701128 1615776 5699960 1615600 5700000 1615768 5701248 +1615936 5701216 1615768 5701248 1613592 5703136 1613584 5703232 +1615936 5701216 1615768 5701248 1613584 5703232 1616368 5701208 +1613584 5703232 1617792 5707104 1616368 5701208 1615768 5701248 +1615936 5701216 1615768 5701248 1616368 5701208 1616304 5701200 +1615936 5701216 1616096 5701128 1615768 5701248 1616368 5701208 +1615768 5701248 1613512 5703064 1613592 5703136 1613584 5703232 +1615768 5701248 1613592 5703136 1613584 5703232 1616368 5701208 +1613304 5702872 1613344 5702912 1613464 5703016 1615768 5701248 +1613304 5702872 1613344 5702912 1615768 5701248 1614280 5699976 +1613464 5703016 1613512 5703064 1615768 5701248 1613344 5702912 +1613344 5702912 1613392 5702960 1613464 5703016 1615768 5701248 +1613304 5702872 1615768 5701248 1614280 5699976 1614160 5699968 +1615768 5701248 1615696 5701248 1613304 5702872 1613344 5702912 +1615696 5701248 1614280 5699976 1613304 5702872 1613344 5702912 +1614280 5699976 1615696 5701248 1615768 5701248 1615072 5700064 +1614280 5699976 1613304 5702872 1615696 5701248 1615072 5700064 +1615768 5701248 1615168 5700080 1615072 5700064 1615696 5701248 +1615072 5700064 1614280 5699976 1615696 5701248 1615168 5700080 +1615768 5701248 1615168 5700080 1615696 5701248 1613344 5702912 +1615768 5701248 1615392 5700008 1615168 5700080 1615696 5701248 +1615768 5701248 1615600 5700000 1615392 5700008 1615696 5701248 +1615768 5701248 1616096 5701128 1615600 5700000 1615696 5701248 +1615600 5700000 1615392 5700008 1615696 5701248 1616096 5701128 +1615168 5700080 1615072 5700064 1615696 5701248 1615392 5700008 +1615768 5701248 1616096 5701128 1615696 5701248 1613344 5702912 +1615392 5700008 1615168 5700080 1615696 5701248 1615600 5700000 +1614280 5699976 1615696 5701248 1615072 5700064 1614600 5699912 +1616096 5701128 1615776 5699960 1615600 5700000 1615696 5701248 +1615768 5701248 1615936 5701216 1616096 5701128 1615696 5701248 +1615768 5701248 1615696 5701248 1613344 5702912 1613464 5703016 +1615696 5701248 1613304 5702872 1613344 5702912 1613464 5703016 +1615768 5701248 1615696 5701248 1613464 5703016 1613512 5703064 +1615768 5701248 1615696 5701248 1613512 5703064 1613592 5703136 +1615696 5701248 1613464 5703016 1613512 5703064 1613592 5703136 +1615768 5701248 1616096 5701128 1615696 5701248 1613592 5703136 +1615768 5701248 1615696 5701248 1613592 5703136 1613584 5703232 +1615696 5701248 1613512 5703064 1613592 5703136 1613584 5703232 +1615768 5701248 1616096 5701128 1615696 5701248 1613584 5703232 +1613512 5703064 1613560 5703120 1613592 5703136 1615696 5701248 +1613344 5702912 1613392 5702960 1613464 5703016 1615696 5701248 +1615768 5701248 1615696 5701248 1613584 5703232 1616368 5701208 +1615696 5701248 1613344 5702912 1613464 5703016 1613512 5703064 +1613304 5702872 1615696 5701248 1614280 5699976 1614160 5699968 +1615696 5701248 1615512 5701184 1613304 5702872 1613344 5702912 +1615696 5701248 1614280 5699976 1615512 5701184 1613344 5702912 +1614280 5699976 1615512 5701184 1615696 5701248 1615072 5700064 +1615512 5701184 1613344 5702912 1615696 5701248 1615072 5700064 +1615512 5701184 1614280 5699976 1613304 5702872 1613344 5702912 +1614280 5699976 1613304 5702872 1615512 5701184 1615072 5700064 +1615696 5701248 1615512 5701184 1613344 5702912 1613464 5703016 +1615512 5701184 1613304 5702872 1613344 5702912 1613464 5703016 +1615696 5701248 1615072 5700064 1615512 5701184 1613464 5703016 +1615696 5701248 1615168 5700080 1615072 5700064 1615512 5701184 +1615696 5701248 1615168 5700080 1615512 5701184 1613464 5703016 +1615072 5700064 1614280 5699976 1615512 5701184 1615168 5700080 +1615696 5701248 1615392 5700008 1615168 5700080 1615512 5701184 +1615696 5701248 1615392 5700008 1615512 5701184 1613464 5703016 +1615168 5700080 1615072 5700064 1615512 5701184 1615392 5700008 +1615696 5701248 1615600 5700000 1615392 5700008 1615512 5701184 +1615696 5701248 1615600 5700000 1615512 5701184 1613464 5703016 +1615696 5701248 1616096 5701128 1615600 5700000 1615512 5701184 +1615696 5701248 1616096 5701128 1615512 5701184 1613464 5703016 +1615696 5701248 1615768 5701248 1616096 5701128 1615512 5701184 +1615696 5701248 1615768 5701248 1615512 5701184 1613464 5703016 +1616096 5701128 1615600 5700000 1615512 5701184 1615768 5701248 +1615392 5700008 1615168 5700080 1615512 5701184 1615600 5700000 +1615600 5700000 1615392 5700008 1615512 5701184 1616096 5701128 +1614280 5699976 1615512 5701184 1615072 5700064 1614600 5699912 +1616096 5701128 1615776 5699960 1615600 5700000 1615512 5701184 +1613344 5702912 1613392 5702960 1613464 5703016 1615512 5701184 +1615768 5701248 1615936 5701216 1616096 5701128 1615512 5701184 +1615768 5701248 1615936 5701216 1615512 5701184 1615696 5701248 +1616096 5701128 1615600 5700000 1615512 5701184 1615936 5701216 +1615696 5701248 1615512 5701184 1613464 5703016 1613512 5703064 +1615696 5701248 1615768 5701248 1615512 5701184 1613512 5703064 +1615512 5701184 1613344 5702912 1613464 5703016 1613512 5703064 +1615696 5701248 1615512 5701184 1613512 5703064 1613592 5703136 +1615696 5701248 1615512 5701184 1613592 5703136 1613584 5703232 +1615696 5701248 1615768 5701248 1615512 5701184 1613592 5703136 +1613512 5703064 1613560 5703120 1613592 5703136 1615512 5701184 +1615512 5701184 1613464 5703016 1613512 5703064 1613592 5703136 +1613304 5702872 1615512 5701184 1614280 5699976 1614160 5699968 +1613304 5702872 1613344 5702912 1615512 5701184 1614160 5699968 +1615512 5701184 1615072 5700064 1614280 5699976 1614160 5699968 +1613304 5702872 1615512 5701184 1614160 5699968 1613256 5702848 +1615512 5701184 1615352 5701048 1613304 5702872 1613344 5702912 +1615512 5701184 1615352 5701048 1613344 5702912 1613464 5703016 +1615352 5701048 1613304 5702872 1613344 5702912 1613464 5703016 +1615512 5701184 1614160 5699968 1615352 5701048 1613464 5703016 +1615352 5701048 1614160 5699968 1613304 5702872 1613344 5702912 +1615512 5701184 1615352 5701048 1613464 5703016 1613512 5703064 +1615352 5701048 1613344 5702912 1613464 5703016 1613512 5703064 +1615512 5701184 1614160 5699968 1615352 5701048 1613512 5703064 +1613344 5702912 1613392 5702960 1613464 5703016 1615352 5701048 +1615512 5701184 1615352 5701048 1613512 5703064 1613592 5703136 +1615512 5701184 1614160 5699968 1615352 5701048 1613592 5703136 +1615352 5701048 1613464 5703016 1613512 5703064 1613592 5703136 +1615512 5701184 1615352 5701048 1613592 5703136 1615696 5701248 +1613512 5703064 1613560 5703120 1613592 5703136 1615352 5701048 +1614160 5699968 1615352 5701048 1615512 5701184 1614280 5699976 +1615352 5701048 1613592 5703136 1615512 5701184 1614280 5699976 +1615512 5701184 1615072 5700064 1614280 5699976 1615352 5701048 +1615512 5701184 1615168 5700080 1615072 5700064 1615352 5701048 +1615512 5701184 1615168 5700080 1615352 5701048 1613592 5703136 +1615072 5700064 1614280 5699976 1615352 5701048 1615168 5700080 +1614160 5699968 1613304 5702872 1615352 5701048 1614280 5699976 +1615512 5701184 1615392 5700008 1615168 5700080 1615352 5701048 +1615168 5700080 1615072 5700064 1615352 5701048 1615392 5700008 +1615512 5701184 1615392 5700008 1615352 5701048 1613592 5703136 +1615512 5701184 1615600 5700000 1615392 5700008 1615352 5701048 +1615512 5701184 1615600 5700000 1615352 5701048 1613592 5703136 +1615392 5700008 1615168 5700080 1615352 5701048 1615600 5700000 +1615512 5701184 1616096 5701128 1615600 5700000 1615352 5701048 +1615512 5701184 1616096 5701128 1615352 5701048 1613592 5703136 +1615512 5701184 1615936 5701216 1616096 5701128 1615352 5701048 +1615512 5701184 1615936 5701216 1615352 5701048 1613592 5703136 +1615600 5700000 1615392 5700008 1615352 5701048 1616096 5701128 +1616096 5701128 1615600 5700000 1615352 5701048 1615936 5701216 +1615072 5700064 1614600 5699912 1614280 5699976 1615352 5701048 +1616096 5701128 1615776 5699960 1615600 5700000 1615352 5701048 +1615512 5701184 1615768 5701248 1615936 5701216 1615352 5701048 +1614280 5699976 1614160 5699968 1615352 5701048 1615072 5700064 +1613304 5702872 1615352 5701048 1614160 5699968 1613256 5702848 +1615352 5701048 1614280 5699976 1614160 5699968 1613256 5702848 +1613304 5702872 1613344 5702912 1615352 5701048 1613256 5702848 +1614160 5699968 1612232 5702104 1613256 5702848 1615352 5701048 +1615352 5701048 1615192 5700896 1614160 5699968 1613256 5702848 +1615352 5701048 1614280 5699976 1615192 5700896 1613256 5702848 +1615192 5700896 1614280 5699976 1614160 5699968 1613256 5702848 +1614160 5699968 1612232 5702104 1613256 5702848 1615192 5700896 +1614280 5699976 1615192 5700896 1615352 5701048 1615072 5700064 +1614280 5699976 1614160 5699968 1615192 5700896 1615072 5700064 +1615352 5701048 1615168 5700080 1615072 5700064 1615192 5700896 +1615352 5701048 1615392 5700008 1615168 5700080 1615192 5700896 +1615168 5700080 1615072 5700064 1615192 5700896 1615392 5700008 +1615192 5700896 1613256 5702848 1615352 5701048 1615392 5700008 +1615352 5701048 1615600 5700000 1615392 5700008 1615192 5700896 +1615392 5700008 1615168 5700080 1615192 5700896 1615600 5700000 +1615352 5701048 1615600 5700000 1615192 5700896 1613256 5702848 +1615352 5701048 1616096 5701128 1615600 5700000 1615192 5700896 +1614280 5699976 1615192 5700896 1615072 5700064 1614600 5699912 +1614280 5699976 1614160 5699968 1615192 5700896 1614600 5699912 +1615072 5700064 1614856 5699920 1614600 5699912 1615192 5700896 +1615072 5700064 1614600 5699912 1615192 5700896 1615168 5700080 +1615352 5701048 1615192 5700896 1613256 5702848 1613304 5702872 +1615352 5701048 1615600 5700000 1615192 5700896 1613304 5702872 +1615192 5700896 1614160 5699968 1613256 5702848 1613304 5702872 +1615352 5701048 1615192 5700896 1613304 5702872 1613344 5702912 +1615352 5701048 1615192 5700896 1613344 5702912 1613464 5703016 +1615352 5701048 1615192 5700896 1613464 5703016 1613512 5703064 +1615352 5701048 1615600 5700000 1615192 5700896 1613464 5703016 +1615192 5700896 1613304 5702872 1613344 5702912 1613464 5703016 +1613344 5702912 1613392 5702960 1613464 5703016 1615192 5700896 +1615192 5700896 1613256 5702848 1613304 5702872 1613344 5702912 +1615192 5700896 1615048 5700768 1613256 5702848 1613304 5702872 +1615192 5700896 1614160 5699968 1615048 5700768 1613304 5702872 +1615048 5700768 1614160 5699968 1613256 5702848 1613304 5702872 +1614160 5699968 1615048 5700768 1615192 5700896 1614280 5699976 +1615048 5700768 1613304 5702872 1615192 5700896 1614280 5699976 +1615192 5700896 1614600 5699912 1614280 5699976 1615048 5700768 +1615192 5700896 1614600 5699912 1615048 5700768 1613304 5702872 +1614160 5699968 1613256 5702848 1615048 5700768 1614280 5699976 +1614280 5699976 1614160 5699968 1615048 5700768 1614600 5699912 +1613256 5702848 1615048 5700768 1614160 5699968 1612232 5702104 +1615192 5700896 1615072 5700064 1614600 5699912 1615048 5700768 +1615192 5700896 1615072 5700064 1615048 5700768 1613304 5702872 +1614600 5699912 1614280 5699976 1615048 5700768 1615072 5700064 +1615072 5700064 1614856 5699920 1614600 5699912 1615048 5700768 +1615192 5700896 1615168 5700080 1615072 5700064 1615048 5700768 +1615192 5700896 1615168 5700080 1615048 5700768 1613304 5702872 +1615192 5700896 1615392 5700008 1615168 5700080 1615048 5700768 +1615192 5700896 1615392 5700008 1615048 5700768 1613304 5702872 +1615192 5700896 1615600 5700000 1615392 5700008 1615048 5700768 +1615072 5700064 1614600 5699912 1615048 5700768 1615168 5700080 +1615168 5700080 1615072 5700064 1615048 5700768 1615392 5700008 +1615192 5700896 1615048 5700768 1613304 5702872 1613344 5702912 +1615048 5700768 1614912 5700728 1613256 5702848 1613304 5702872 +1615048 5700768 1614160 5699968 1614912 5700728 1613304 5702872 +1614160 5699968 1614912 5700728 1615048 5700768 1614280 5699976 +1614912 5700728 1613304 5702872 1615048 5700768 1614280 5699976 +1614912 5700728 1614160 5699968 1613256 5702848 1613304 5702872 +1614160 5699968 1613256 5702848 1614912 5700728 1614280 5699976 +1615048 5700768 1614912 5700728 1613304 5702872 1615192 5700896 +1614912 5700728 1613256 5702848 1613304 5702872 1615192 5700896 +1615048 5700768 1614280 5699976 1614912 5700728 1615192 5700896 +1615048 5700768 1614600 5699912 1614280 5699976 1614912 5700728 +1615048 5700768 1615072 5700064 1614600 5699912 1614912 5700728 +1615048 5700768 1615072 5700064 1614912 5700728 1615192 5700896 +1614280 5699976 1614160 5699968 1614912 5700728 1614600 5699912 +1614600 5699912 1614280 5699976 1614912 5700728 1615072 5700064 +1613256 5702848 1614912 5700728 1614160 5699968 1612232 5702104 +1613256 5702848 1613304 5702872 1614912 5700728 1612232 5702104 +1614912 5700728 1614280 5699976 1614160 5699968 1612232 5702104 +1613256 5702848 1614912 5700728 1612232 5702104 1612256 5702160 +1615048 5700768 1615168 5700080 1615072 5700064 1614912 5700728 +1615072 5700064 1614600 5699912 1614912 5700728 1615168 5700080 +1615048 5700768 1615168 5700080 1614912 5700728 1615192 5700896 +1615072 5700064 1614856 5699920 1614600 5699912 1614912 5700728 +1615072 5700064 1614856 5699920 1614912 5700728 1615168 5700080 +1614600 5699912 1614280 5699976 1614912 5700728 1614856 5699920 +1614856 5699920 1614728 5699896 1614600 5699912 1614912 5700728 +1615048 5700768 1615392 5700008 1615168 5700080 1614912 5700728 +1613304 5702872 1613344 5702912 1615192 5700896 1614912 5700728 +1613304 5702872 1613344 5702912 1614912 5700728 1613256 5702848 +1615192 5700896 1615048 5700768 1614912 5700728 1613344 5702912 +1613344 5702912 1613464 5703016 1615192 5700896 1614912 5700728 +1613464 5703016 1615352 5701048 1615192 5700896 1614912 5700728 +1613464 5703016 1613512 5703064 1615352 5701048 1614912 5700728 +1615192 5700896 1615048 5700768 1614912 5700728 1615352 5701048 +1613464 5703016 1615352 5701048 1614912 5700728 1613344 5702912 +1613344 5702912 1613392 5702960 1613464 5703016 1614912 5700728 +1613344 5702912 1613464 5703016 1614912 5700728 1613304 5702872 +1614160 5699968 1614056 5699912 1612232 5702104 1614912 5700728 +1614160 5699968 1614792 5700712 1614912 5700728 1614280 5699976 +1614912 5700728 1614600 5699912 1614280 5699976 1614792 5700712 +1614792 5700712 1612232 5702104 1614912 5700728 1614600 5699912 +1614280 5699976 1614160 5699968 1614792 5700712 1614600 5699912 +1614912 5700728 1614856 5699920 1614600 5699912 1614792 5700712 +1614600 5699912 1614280 5699976 1614792 5700712 1614856 5699920 +1614912 5700728 1614856 5699920 1614792 5700712 1612232 5702104 +1614160 5699968 1612232 5702104 1614792 5700712 1614280 5699976 +1614912 5700728 1614792 5700712 1612232 5702104 1613256 5702848 +1614912 5700728 1614792 5700712 1613256 5702848 1613304 5702872 +1614912 5700728 1614792 5700712 1613304 5702872 1613344 5702912 +1614792 5700712 1613256 5702848 1613304 5702872 1613344 5702912 +1614912 5700728 1614856 5699920 1614792 5700712 1613344 5702912 +1614792 5700712 1614160 5699968 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614792 5700712 +1614792 5700712 1612232 5702104 1613256 5702848 1613304 5702872 +1614856 5699920 1614728 5699896 1614600 5699912 1614792 5700712 +1614600 5699912 1614280 5699976 1614792 5700712 1614728 5699896 +1614856 5699920 1614728 5699896 1614792 5700712 1614912 5700728 +1614912 5700728 1615072 5700064 1614856 5699920 1614792 5700712 +1614912 5700728 1615168 5700080 1615072 5700064 1614792 5700712 +1614912 5700728 1615072 5700064 1614792 5700712 1613344 5702912 +1614856 5699920 1614728 5699896 1614792 5700712 1615072 5700064 +1614912 5700728 1614792 5700712 1613344 5702912 1613464 5703016 +1614792 5700712 1613304 5702872 1613344 5702912 1613464 5703016 +1614912 5700728 1615072 5700064 1614792 5700712 1613464 5703016 +1614912 5700728 1614792 5700712 1613464 5703016 1615352 5701048 +1614912 5700728 1615072 5700064 1614792 5700712 1615352 5701048 +1613464 5703016 1613512 5703064 1615352 5701048 1614792 5700712 +1614912 5700728 1614792 5700712 1615352 5701048 1615192 5700896 +1614912 5700728 1615072 5700064 1614792 5700712 1615192 5700896 +1614912 5700728 1614792 5700712 1615192 5700896 1615048 5700768 +1614792 5700712 1613464 5703016 1615352 5701048 1615192 5700896 +1613344 5702912 1613392 5702960 1613464 5703016 1614792 5700712 +1614792 5700712 1613344 5702912 1613464 5703016 1615352 5701048 +1612232 5702104 1614792 5700712 1614160 5699968 1614056 5699912 +1614792 5700712 1614752 5700720 1612232 5702104 1613256 5702848 +1614792 5700712 1614160 5699968 1614752 5700720 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614752 5700720 +1614160 5699968 1614752 5700720 1614792 5700712 1614280 5699976 +1614792 5700712 1614600 5699912 1614280 5699976 1614752 5700720 +1614792 5700712 1614728 5699896 1614600 5699912 1614752 5700720 +1614752 5700720 1613256 5702848 1614792 5700712 1614600 5699912 +1614280 5699976 1614160 5699968 1614752 5700720 1614600 5699912 +1614752 5700720 1614160 5699968 1612232 5702104 1613256 5702848 +1614160 5699968 1612232 5702104 1614752 5700720 1614280 5699976 +1614792 5700712 1614752 5700720 1613256 5702848 1613304 5702872 +1614792 5700712 1614752 5700720 1613304 5702872 1613344 5702912 +1614792 5700712 1614752 5700720 1613344 5702912 1613464 5703016 +1614752 5700720 1613304 5702872 1613344 5702912 1613464 5703016 +1614752 5700720 1612232 5702104 1613256 5702848 1613304 5702872 +1614792 5700712 1614600 5699912 1614752 5700720 1613464 5703016 +1614752 5700720 1613256 5702848 1613304 5702872 1613344 5702912 +1613344 5702912 1613392 5702960 1613464 5703016 1614752 5700720 +1614792 5700712 1614752 5700720 1613464 5703016 1615352 5701048 +1614752 5700720 1613344 5702912 1613464 5703016 1615352 5701048 +1614792 5700712 1614600 5699912 1614752 5700720 1615352 5701048 +1613464 5703016 1613512 5703064 1615352 5701048 1614752 5700720 +1614792 5700712 1614752 5700720 1615352 5701048 1615192 5700896 +1614792 5700712 1614600 5699912 1614752 5700720 1615192 5700896 +1614792 5700712 1614752 5700720 1615192 5700896 1614912 5700728 +1614792 5700712 1614600 5699912 1614752 5700720 1614912 5700728 +1615192 5700896 1615048 5700768 1614912 5700728 1614752 5700720 +1614752 5700720 1615352 5701048 1615192 5700896 1614912 5700728 +1614752 5700720 1613464 5703016 1615352 5701048 1615192 5700896 +1612232 5702104 1614752 5700720 1614160 5699968 1614056 5699912 +1612232 5702104 1613256 5702848 1614752 5700720 1614056 5699912 +1614752 5700720 1614280 5699976 1614160 5699968 1614056 5699912 +1612232 5702104 1614752 5700720 1614056 5699912 1612208 5702072 +1612232 5702104 1613256 5702848 1614752 5700720 1612208 5702072 +1614752 5700720 1614160 5699968 1614056 5699912 1612208 5702072 +1614056 5699912 1612184 5702056 1612208 5702072 1614752 5700720 +1614056 5699912 1614440 5700688 1614752 5700720 1614160 5699968 +1614440 5700688 1612208 5702072 1614752 5700720 1614160 5699968 +1614752 5700720 1614280 5699976 1614160 5699968 1614440 5700688 +1614752 5700720 1614600 5699912 1614280 5699976 1614440 5700688 +1614752 5700720 1614792 5700712 1614600 5699912 1614440 5700688 +1614752 5700720 1614600 5699912 1614440 5700688 1612208 5702072 +1614280 5699976 1614160 5699968 1614440 5700688 1614600 5699912 +1614056 5699912 1612208 5702072 1614440 5700688 1614160 5699968 +1614160 5699968 1614056 5699912 1614440 5700688 1614280 5699976 +1614752 5700720 1614440 5700688 1612208 5702072 1612232 5702104 +1614752 5700720 1614440 5700688 1612232 5702104 1613256 5702848 +1614752 5700720 1614440 5700688 1613256 5702848 1613304 5702872 +1612232 5702104 1612256 5702160 1613256 5702848 1614440 5700688 +1614440 5700688 1612232 5702104 1613256 5702848 1613304 5702872 +1614752 5700720 1614600 5699912 1614440 5700688 1613304 5702872 +1614440 5700688 1614056 5699912 1612208 5702072 1612232 5702104 +1614752 5700720 1614440 5700688 1613304 5702872 1613344 5702912 +1614752 5700720 1614440 5700688 1613344 5702912 1613464 5703016 +1614752 5700720 1614440 5700688 1613464 5703016 1615352 5701048 +1614440 5700688 1613344 5702912 1613464 5703016 1615352 5701048 +1614440 5700688 1613256 5702848 1613304 5702872 1613344 5702912 +1613464 5703016 1613512 5703064 1615352 5701048 1614440 5700688 +1614752 5700720 1614600 5699912 1614440 5700688 1615352 5701048 +1614440 5700688 1613304 5702872 1613344 5702912 1613464 5703016 +1613344 5702912 1613392 5702960 1613464 5703016 1614440 5700688 +1614752 5700720 1614440 5700688 1615352 5701048 1615192 5700896 +1614440 5700688 1612208 5702072 1612232 5702104 1613256 5702848 +1612208 5702072 1614440 5700688 1614056 5699912 1612184 5702056 +1614440 5700688 1614120 5700592 1612208 5702072 1612232 5702104 +1614440 5700688 1614056 5699912 1614120 5700592 1612232 5702104 +1614056 5699912 1614120 5700592 1614440 5700688 1614160 5699968 +1614120 5700592 1612232 5702104 1614440 5700688 1614160 5699968 +1614120 5700592 1614056 5699912 1612208 5702072 1612232 5702104 +1614056 5699912 1612208 5702072 1614120 5700592 1614160 5699968 +1614440 5700688 1614280 5699976 1614160 5699968 1614120 5700592 +1614440 5700688 1614600 5699912 1614280 5699976 1614120 5700592 +1614440 5700688 1614280 5699976 1614120 5700592 1612232 5702104 +1614160 5699968 1614056 5699912 1614120 5700592 1614280 5699976 +1614440 5700688 1614120 5700592 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1614120 5700592 +1614440 5700688 1614120 5700592 1613256 5702848 1613304 5702872 +1614440 5700688 1614120 5700592 1613304 5702872 1613344 5702912 +1614120 5700592 1612208 5702072 1612232 5702104 1613256 5702848 +1614440 5700688 1614280 5699976 1614120 5700592 1613304 5702872 +1614120 5700592 1612232 5702104 1613256 5702848 1613304 5702872 +1612208 5702072 1614120 5700592 1614056 5699912 1612184 5702056 +1612208 5702072 1612232 5702104 1614120 5700592 1612184 5702056 +1614120 5700592 1614160 5699968 1614056 5699912 1612184 5702056 +1614056 5699912 1613984 5699832 1612184 5702056 1614120 5700592 +1614056 5699912 1613984 5699832 1614120 5700592 1614160 5699968 +1613984 5699832 1611440 5699632 1612184 5702056 1614120 5700592 +1611440 5699632 1611408 5699664 1612184 5702056 1614120 5700592 +1613984 5699832 1613896 5699672 1611440 5699632 1614120 5700592 +1612184 5702056 1612208 5702072 1614120 5700592 1611440 5699632 +1613984 5699832 1611440 5699632 1614120 5700592 1614056 5699912 +1614120 5700592 1613944 5700504 1611440 5699632 1612184 5702056 +1614120 5700592 1613984 5699832 1613944 5700504 1612184 5702056 +1613944 5700504 1613984 5699832 1611440 5699632 1612184 5702056 +1611440 5699632 1611408 5699664 1612184 5702056 1613944 5700504 +1611440 5699632 1613944 5700504 1613984 5699832 1613896 5699672 +1611440 5699632 1612184 5702056 1613944 5700504 1613896 5699672 +1613944 5700504 1614120 5700592 1613984 5699832 1613896 5699672 +1611440 5699632 1613944 5700504 1613896 5699672 1611480 5699576 +1611440 5699632 1612184 5702056 1613944 5700504 1611480 5699576 +1613896 5699672 1611528 5699488 1611480 5699576 1613944 5700504 +1613896 5699672 1613488 5698888 1611528 5699488 1613944 5700504 +1611480 5699576 1611440 5699632 1613944 5700504 1611528 5699488 +1613944 5700504 1613984 5699832 1613896 5699672 1611528 5699488 +1614120 5700592 1613944 5700504 1612184 5702056 1612208 5702072 +1614120 5700592 1613944 5700504 1612208 5702072 1612232 5702104 +1614120 5700592 1613944 5700504 1612232 5702104 1613256 5702848 +1612232 5702104 1612256 5702160 1613256 5702848 1613944 5700504 +1613944 5700504 1612208 5702072 1612232 5702104 1613256 5702848 +1614120 5700592 1613984 5699832 1613944 5700504 1613256 5702848 +1613944 5700504 1611440 5699632 1612184 5702056 1612208 5702072 +1614120 5700592 1613944 5700504 1613256 5702848 1613304 5702872 +1613944 5700504 1612184 5702056 1612208 5702072 1612232 5702104 +1613984 5699832 1613944 5700504 1614120 5700592 1614056 5699912 +1613944 5700504 1613256 5702848 1614120 5700592 1614056 5699912 +1614120 5700592 1614160 5699968 1614056 5699912 1613944 5700504 +1614120 5700592 1614280 5699976 1614160 5699968 1613944 5700504 +1614120 5700592 1614160 5699968 1613944 5700504 1613256 5702848 +1613984 5699832 1613896 5699672 1613944 5700504 1614056 5699912 +1614056 5699912 1613984 5699832 1613944 5700504 1614160 5699968 +1611528 5699488 1613504 5700176 1613896 5699672 1613488 5698888 +1611528 5699488 1613944 5700504 1613504 5700176 1613488 5698888 +1613504 5700176 1613944 5700504 1613896 5699672 1613488 5698888 +1613896 5699672 1613856 5699232 1613488 5698888 1613504 5700176 +1613944 5700504 1613504 5700176 1611528 5699488 1611480 5699576 +1613944 5700504 1613896 5699672 1613504 5700176 1611480 5699576 +1613504 5700176 1613488 5698888 1611528 5699488 1611480 5699576 +1611528 5699488 1613504 5700176 1613488 5698888 1613440 5698848 +1611528 5699488 1613504 5700176 1613440 5698848 1611552 5699400 +1611528 5699488 1611480 5699576 1613504 5700176 1611552 5699400 +1613504 5700176 1613896 5699672 1613488 5698888 1613440 5698848 +1613440 5698848 1611560 5699312 1611552 5699400 1613504 5700176 +1613504 5700176 1613488 5698888 1613440 5698848 1611552 5699400 +1613944 5700504 1613504 5700176 1611480 5699576 1611440 5699632 +1613944 5700504 1613504 5700176 1611440 5699632 1612184 5702056 +1611440 5699632 1611408 5699664 1612184 5702056 1613504 5700176 +1612184 5702056 1613944 5700504 1613504 5700176 1611408 5699664 +1611408 5699664 1612160 5702056 1612184 5702056 1613504 5700176 +1613944 5700504 1613504 5700176 1612184 5702056 1612208 5702072 +1613504 5700176 1611408 5699664 1612184 5702056 1612208 5702072 +1613944 5700504 1613896 5699672 1613504 5700176 1612208 5702072 +1613504 5700176 1611528 5699488 1611480 5699576 1611440 5699632 +1613504 5700176 1611480 5699576 1611440 5699632 1611408 5699664 +1613896 5699672 1613504 5700176 1613944 5700504 1613984 5699832 +1613504 5700176 1612208 5702072 1613944 5700504 1613984 5699832 +1613944 5700504 1614056 5699912 1613984 5699832 1613504 5700176 +1613944 5700504 1614056 5699912 1613504 5700176 1612208 5702072 +1613896 5699672 1613488 5698888 1613504 5700176 1613984 5699832 +1613984 5699832 1613896 5699672 1613504 5700176 1614056 5699912 +1613944 5700504 1613504 5700176 1612208 5702072 1612232 5702104 +1613944 5700504 1614160 5699968 1614056 5699912 1613504 5700176 +1613504 5700176 1613448 5700144 1611552 5699400 1611528 5699488 +1613504 5700176 1613448 5700144 1611528 5699488 1611480 5699576 +1613448 5700144 1611552 5699400 1611528 5699488 1611480 5699576 +1613504 5700176 1613440 5698848 1613448 5700144 1611480 5699576 +1613448 5700144 1613440 5698848 1611552 5699400 1611528 5699488 +1611552 5699400 1613448 5700144 1613440 5698848 1611560 5699312 +1613504 5700176 1613448 5700144 1611480 5699576 1611440 5699632 +1613448 5700144 1611528 5699488 1611480 5699576 1611440 5699632 +1613504 5700176 1613440 5698848 1613448 5700144 1611440 5699632 +1613440 5698848 1613448 5700144 1613504 5700176 1613488 5698888 +1613440 5698848 1611552 5699400 1613448 5700144 1613488 5698888 +1613504 5700176 1613896 5699672 1613488 5698888 1613448 5700144 +1613448 5700144 1611440 5699632 1613504 5700176 1613896 5699672 +1613504 5700176 1613984 5699832 1613896 5699672 1613448 5700144 +1613896 5699672 1613856 5699232 1613488 5698888 1613448 5700144 +1613488 5698888 1613440 5698848 1613448 5700144 1613896 5699672 +1613504 5700176 1613448 5700144 1611440 5699632 1611408 5699664 +1613504 5700176 1613448 5700144 1611408 5699664 1612184 5702056 +1613504 5700176 1613448 5700144 1612184 5702056 1612208 5702072 +1611408 5699664 1612160 5702056 1612184 5702056 1613448 5700144 +1613448 5700144 1611408 5699664 1612184 5702056 1612208 5702072 +1613504 5700176 1613448 5700144 1612208 5702072 1613944 5700504 +1613504 5700176 1613896 5699672 1613448 5700144 1612208 5702072 +1613448 5700144 1611480 5699576 1611440 5699632 1611408 5699664 +1613448 5700144 1611440 5699632 1611408 5699664 1612184 5702056 +1612184 5702056 1613240 5700112 1611408 5699664 1612160 5702056 +1611408 5699664 1611384 5699672 1612160 5702056 1613240 5700112 +1613448 5700144 1613240 5700112 1612184 5702056 1612208 5702072 +1613448 5700144 1613240 5700112 1612208 5702072 1613504 5700176 +1613240 5700112 1612184 5702056 1612208 5702072 1613504 5700176 +1612184 5702056 1612208 5702072 1613240 5700112 1612160 5702056 +1613240 5700112 1613448 5700144 1611408 5699664 1612160 5702056 +1612208 5702072 1613944 5700504 1613504 5700176 1613240 5700112 +1613504 5700176 1613448 5700144 1613240 5700112 1613944 5700504 +1612208 5702072 1613944 5700504 1613240 5700112 1612184 5702056 +1613448 5700144 1611408 5699664 1613240 5700112 1613504 5700176 +1611408 5699664 1613240 5700112 1613448 5700144 1611440 5699632 +1611408 5699664 1612160 5702056 1613240 5700112 1611440 5699632 +1613240 5700112 1613504 5700176 1613448 5700144 1611440 5699632 +1613448 5700144 1611480 5699576 1611440 5699632 1613240 5700112 +1613448 5700144 1611528 5699488 1611480 5699576 1613240 5700112 +1613448 5700144 1611552 5699400 1611528 5699488 1613240 5700112 +1611528 5699488 1611480 5699576 1613240 5700112 1611552 5699400 +1613448 5700144 1611552 5699400 1613240 5700112 1613504 5700176 +1613448 5700144 1613440 5698848 1611552 5699400 1613240 5700112 +1611552 5699400 1611528 5699488 1613240 5700112 1613440 5698848 +1613448 5700144 1613488 5698888 1613440 5698848 1613240 5700112 +1613448 5700144 1613488 5698888 1613240 5700112 1613504 5700176 +1613440 5698848 1611552 5699400 1613240 5700112 1613488 5698888 +1613440 5698848 1611560 5699312 1611552 5699400 1613240 5700112 +1611552 5699400 1611528 5699488 1613240 5700112 1611560 5699312 +1613440 5698848 1611560 5699312 1613240 5700112 1613488 5698888 +1613440 5698848 1613424 5698816 1611560 5699312 1613240 5700112 +1611480 5699576 1611440 5699632 1613240 5700112 1611528 5699488 +1613448 5700144 1613896 5699672 1613488 5698888 1613240 5700112 +1613488 5698888 1613440 5698848 1613240 5700112 1613896 5699672 +1613448 5700144 1613896 5699672 1613240 5700112 1613504 5700176 +1613448 5700144 1613504 5700176 1613896 5699672 1613240 5700112 +1613896 5699672 1613856 5699232 1613488 5698888 1613240 5700112 +1613488 5698888 1613440 5698848 1613240 5700112 1613856 5699232 +1613896 5699672 1613856 5699232 1613240 5700112 1613448 5700144 +1611440 5699632 1611408 5699664 1613240 5700112 1611480 5699576 +1612208 5702072 1612232 5702104 1613944 5700504 1613240 5700112 +1613856 5699232 1613632 5698952 1613488 5698888 1613240 5700112 +1613440 5698848 1613176 5700072 1613240 5700112 1613488 5698888 +1613240 5700112 1613856 5699232 1613488 5698888 1613176 5700072 +1613176 5700072 1611560 5699312 1613240 5700112 1613856 5699232 +1613488 5698888 1613440 5698848 1613176 5700072 1613856 5699232 +1613440 5698848 1611560 5699312 1613176 5700072 1613488 5698888 +1613240 5700112 1613896 5699672 1613856 5699232 1613176 5700072 +1613856 5699232 1613488 5698888 1613176 5700072 1613896 5699672 +1613240 5700112 1613896 5699672 1613176 5700072 1611560 5699312 +1613240 5700112 1613176 5700072 1611560 5699312 1611552 5699400 +1613240 5700112 1613176 5700072 1611552 5699400 1611528 5699488 +1613240 5700112 1613896 5699672 1613176 5700072 1611528 5699488 +1613240 5700112 1613176 5700072 1611528 5699488 1611480 5699576 +1613176 5700072 1611552 5699400 1611528 5699488 1611480 5699576 +1613240 5700112 1613896 5699672 1613176 5700072 1611480 5699576 +1613176 5700072 1613440 5698848 1611560 5699312 1611552 5699400 +1613176 5700072 1611560 5699312 1611552 5699400 1611528 5699488 +1611560 5699312 1613176 5700072 1613440 5698848 1613424 5698816 +1613240 5700112 1613176 5700072 1611480 5699576 1611440 5699632 +1613240 5700112 1613896 5699672 1613176 5700072 1611440 5699632 +1613176 5700072 1611528 5699488 1611480 5699576 1611440 5699632 +1613240 5700112 1613448 5700144 1613896 5699672 1613176 5700072 +1613240 5700112 1613448 5700144 1613176 5700072 1611440 5699632 +1613448 5700144 1613504 5700176 1613896 5699672 1613176 5700072 +1613896 5699672 1613856 5699232 1613176 5700072 1613448 5700144 +1613240 5700112 1613176 5700072 1611440 5699632 1611408 5699664 +1613240 5700112 1613448 5700144 1613176 5700072 1611408 5699664 +1613240 5700112 1613176 5700072 1611408 5699664 1612160 5702056 +1611408 5699664 1611384 5699672 1612160 5702056 1613176 5700072 +1613240 5700112 1613176 5700072 1612160 5702056 1612184 5702056 +1613240 5700112 1613176 5700072 1612184 5702056 1612208 5702072 +1613240 5700112 1613448 5700144 1613176 5700072 1612184 5702056 +1613176 5700072 1611408 5699664 1612160 5702056 1612184 5702056 +1613176 5700072 1611480 5699576 1611440 5699632 1611408 5699664 +1613176 5700072 1611440 5699632 1611408 5699664 1612160 5702056 +1613856 5699232 1613632 5698952 1613488 5698888 1613176 5700072 +1613176 5700072 1613128 5700032 1611560 5699312 1611552 5699400 +1613128 5700032 1613440 5698848 1611560 5699312 1611552 5699400 +1613176 5700072 1613440 5698848 1613128 5700032 1611552 5699400 +1613440 5698848 1613128 5700032 1613176 5700072 1613488 5698888 +1613440 5698848 1611560 5699312 1613128 5700032 1613488 5698888 +1613176 5700072 1613856 5699232 1613488 5698888 1613128 5700032 +1613176 5700072 1613896 5699672 1613856 5699232 1613128 5700032 +1613856 5699232 1613488 5698888 1613128 5700032 1613896 5699672 +1613128 5700032 1611552 5699400 1613176 5700072 1613896 5699672 +1613488 5698888 1613440 5698848 1613128 5700032 1613856 5699232 +1613176 5700072 1613448 5700144 1613896 5699672 1613128 5700032 +1613896 5699672 1613856 5699232 1613128 5700032 1613448 5700144 +1613448 5700144 1613504 5700176 1613896 5699672 1613128 5700032 +1613176 5700072 1613448 5700144 1613128 5700032 1611552 5699400 +1613176 5700072 1613128 5700032 1611552 5699400 1611528 5699488 +1613176 5700072 1613128 5700032 1611528 5699488 1611480 5699576 +1613176 5700072 1613128 5700032 1611480 5699576 1611440 5699632 +1613128 5700032 1611528 5699488 1611480 5699576 1611440 5699632 +1613128 5700032 1611560 5699312 1611552 5699400 1611528 5699488 +1613176 5700072 1613448 5700144 1613128 5700032 1611440 5699632 +1613128 5700032 1611552 5699400 1611528 5699488 1611480 5699576 +1611560 5699312 1613128 5700032 1613440 5698848 1613424 5698816 +1611560 5699312 1611552 5699400 1613128 5700032 1613424 5698816 +1613128 5700032 1613488 5698888 1613440 5698848 1613424 5698816 +1611560 5699312 1613128 5700032 1613424 5698816 1613400 5698720 +1613176 5700072 1613128 5700032 1611440 5699632 1611408 5699664 +1613128 5700032 1611480 5699576 1611440 5699632 1611408 5699664 +1613176 5700072 1613448 5700144 1613128 5700032 1611408 5699664 +1613176 5700072 1613240 5700112 1613448 5700144 1613128 5700032 +1613176 5700072 1613128 5700032 1611408 5699664 1612160 5702056 +1611408 5699664 1611384 5699672 1612160 5702056 1613128 5700032 +1613176 5700072 1613128 5700032 1612160 5702056 1612184 5702056 +1613176 5700072 1613128 5700032 1612184 5702056 1613240 5700112 +1613176 5700072 1613448 5700144 1613128 5700032 1612184 5702056 +1613128 5700032 1611440 5699632 1611408 5699664 1612160 5702056 +1613128 5700032 1611408 5699664 1612160 5702056 1612184 5702056 +1613856 5699232 1613632 5698952 1613488 5698888 1613128 5700032 +1613128 5700032 1613112 5700016 1611560 5699312 1611552 5699400 +1613128 5700032 1613424 5698816 1613112 5700016 1611552 5699400 +1613112 5700016 1613424 5698816 1611560 5699312 1611552 5699400 +1613128 5700032 1613112 5700016 1611552 5699400 1611528 5699488 +1613112 5700016 1611560 5699312 1611552 5699400 1611528 5699488 +1613128 5700032 1613424 5698816 1613112 5700016 1611528 5699488 +1613128 5700032 1613112 5700016 1611528 5699488 1611480 5699576 +1613128 5700032 1613112 5700016 1611480 5699576 1611440 5699632 +1613128 5700032 1613424 5698816 1613112 5700016 1611440 5699632 +1613128 5700032 1613112 5700016 1611440 5699632 1611408 5699664 +1613112 5700016 1611480 5699576 1611440 5699632 1611408 5699664 +1613128 5700032 1613424 5698816 1613112 5700016 1611408 5699664 +1613112 5700016 1611552 5699400 1611528 5699488 1611480 5699576 +1613112 5700016 1611528 5699488 1611480 5699576 1611440 5699632 +1613424 5698816 1613112 5700016 1613128 5700032 1613440 5698848 +1613112 5700016 1611408 5699664 1613128 5700032 1613440 5698848 +1613128 5700032 1613488 5698888 1613440 5698848 1613112 5700016 +1613128 5700032 1613488 5698888 1613112 5700016 1611408 5699664 +1613424 5698816 1611560 5699312 1613112 5700016 1613440 5698848 +1613128 5700032 1613856 5699232 1613488 5698888 1613112 5700016 +1613128 5700032 1613856 5699232 1613112 5700016 1611408 5699664 +1613488 5698888 1613440 5698848 1613112 5700016 1613856 5699232 +1613128 5700032 1613896 5699672 1613856 5699232 1613112 5700016 +1613128 5700032 1613448 5700144 1613896 5699672 1613112 5700016 +1613128 5700032 1613448 5700144 1613112 5700016 1611408 5699664 +1613448 5700144 1613504 5700176 1613896 5699672 1613112 5700016 +1613896 5699672 1613856 5699232 1613112 5700016 1613448 5700144 +1613856 5699232 1613488 5698888 1613112 5700016 1613896 5699672 +1613128 5700032 1613176 5700072 1613448 5700144 1613112 5700016 +1613440 5698848 1613424 5698816 1613112 5700016 1613488 5698888 +1611560 5699312 1613112 5700016 1613424 5698816 1613400 5698720 +1613128 5700032 1613112 5700016 1611408 5699664 1612160 5702056 +1611408 5699664 1611384 5699672 1612160 5702056 1613112 5700016 +1613128 5700032 1613448 5700144 1613112 5700016 1612160 5702056 +1613112 5700016 1611440 5699632 1611408 5699664 1612160 5702056 +1613128 5700032 1613112 5700016 1612160 5702056 1612184 5702056 +1613128 5700032 1613112 5700016 1612184 5702056 1613176 5700072 +1613128 5700032 1613448 5700144 1613112 5700016 1612184 5702056 +1613112 5700016 1611408 5699664 1612160 5702056 1612184 5702056 +1613856 5699232 1613632 5698952 1613488 5698888 1613112 5700016 +1613112 5700016 1613096 5699944 1611560 5699312 1611552 5699400 +1613112 5700016 1613096 5699944 1611552 5699400 1611528 5699488 +1613096 5699944 1611560 5699312 1611552 5699400 1611528 5699488 +1613112 5700016 1613424 5698816 1613096 5699944 1611528 5699488 +1613424 5698816 1613096 5699944 1613112 5700016 1613440 5698848 +1613096 5699944 1611528 5699488 1613112 5700016 1613440 5698848 +1613096 5699944 1613424 5698816 1611560 5699312 1611552 5699400 +1613424 5698816 1611560 5699312 1613096 5699944 1613440 5698848 +1613112 5700016 1613096 5699944 1611528 5699488 1611480 5699576 +1613096 5699944 1611552 5699400 1611528 5699488 1611480 5699576 +1613112 5700016 1613440 5698848 1613096 5699944 1611480 5699576 +1613112 5700016 1613096 5699944 1611480 5699576 1611440 5699632 +1613112 5700016 1613096 5699944 1611440 5699632 1611408 5699664 +1613112 5700016 1613440 5698848 1613096 5699944 1611440 5699632 +1613096 5699944 1611528 5699488 1611480 5699576 1611440 5699632 +1613112 5700016 1613488 5698888 1613440 5698848 1613096 5699944 +1613112 5700016 1613856 5699232 1613488 5698888 1613096 5699944 +1613112 5700016 1613856 5699232 1613096 5699944 1611440 5699632 +1613440 5698848 1613424 5698816 1613096 5699944 1613488 5698888 +1613112 5700016 1613896 5699672 1613856 5699232 1613096 5699944 +1613856 5699232 1613488 5698888 1613096 5699944 1613896 5699672 +1613112 5700016 1613896 5699672 1613096 5699944 1611440 5699632 +1613112 5700016 1613448 5700144 1613896 5699672 1613096 5699944 +1613112 5700016 1613128 5700032 1613448 5700144 1613096 5699944 +1613112 5700016 1613128 5700032 1613096 5699944 1611440 5699632 +1613448 5700144 1613504 5700176 1613896 5699672 1613096 5699944 +1613448 5700144 1613896 5699672 1613096 5699944 1613128 5700032 +1613896 5699672 1613856 5699232 1613096 5699944 1613448 5700144 +1613128 5700032 1613176 5700072 1613448 5700144 1613096 5699944 +1613128 5700032 1613176 5700072 1613096 5699944 1613112 5700016 +1613448 5700144 1613896 5699672 1613096 5699944 1613176 5700072 +1613488 5698888 1613440 5698848 1613096 5699944 1613856 5699232 +1611560 5699312 1613096 5699944 1613424 5698816 1613400 5698720 +1613176 5700072 1613240 5700112 1613448 5700144 1613096 5699944 +1613448 5700144 1613896 5699672 1613096 5699944 1613240 5700112 +1613176 5700072 1613240 5700112 1613096 5699944 1613128 5700032 +1613856 5699232 1613632 5698952 1613488 5698888 1613096 5699944 +1613096 5699944 1613112 5699888 1611560 5699312 1611552 5699400 +1613112 5699888 1613424 5698816 1611560 5699312 1611552 5699400 +1613096 5699944 1613112 5699888 1611552 5699400 1611528 5699488 +1613096 5699944 1613112 5699888 1611528 5699488 1611480 5699576 +1613112 5699888 1611560 5699312 1611552 5699400 1611528 5699488 +1613096 5699944 1613424 5698816 1613112 5699888 1611528 5699488 +1613424 5698816 1613112 5699888 1613096 5699944 1613440 5698848 +1613424 5698816 1611560 5699312 1613112 5699888 1613440 5698848 +1613096 5699944 1613488 5698888 1613440 5698848 1613112 5699888 +1613112 5699888 1611528 5699488 1613096 5699944 1613488 5698888 +1613440 5698848 1613424 5698816 1613112 5699888 1613488 5698888 +1613096 5699944 1613856 5699232 1613488 5698888 1613112 5699888 +1613096 5699944 1613896 5699672 1613856 5699232 1613112 5699888 +1613488 5698888 1613440 5698848 1613112 5699888 1613856 5699232 +1613096 5699944 1613896 5699672 1613112 5699888 1611528 5699488 +1613096 5699944 1613448 5700144 1613896 5699672 1613112 5699888 +1613896 5699672 1613856 5699232 1613112 5699888 1613448 5700144 +1613096 5699944 1613448 5700144 1613112 5699888 1611528 5699488 +1613448 5700144 1613504 5700176 1613896 5699672 1613112 5699888 +1613096 5699944 1613240 5700112 1613448 5700144 1613112 5699888 +1613096 5699944 1613240 5700112 1613112 5699888 1611528 5699488 +1613448 5700144 1613896 5699672 1613112 5699888 1613240 5700112 +1613856 5699232 1613488 5698888 1613112 5699888 1613896 5699672 +1611560 5699312 1613112 5699888 1613424 5698816 1613400 5698720 +1613096 5699944 1613176 5700072 1613240 5700112 1613112 5699888 +1613096 5699944 1613176 5700072 1613112 5699888 1611528 5699488 +1613240 5700112 1613448 5700144 1613112 5699888 1613176 5700072 +1613096 5699944 1613128 5700032 1613176 5700072 1613112 5699888 +1613096 5699944 1613112 5700016 1613128 5700032 1613112 5699888 +1613096 5699944 1613128 5700032 1613112 5699888 1611528 5699488 +1613176 5700072 1613240 5700112 1613112 5699888 1613128 5700032 +1613856 5699232 1613632 5698952 1613488 5698888 1613112 5699888 +1613488 5698888 1613440 5698848 1613112 5699888 1613632 5698952 +1613856 5699232 1613632 5698952 1613112 5699888 1613896 5699672 +1613856 5699232 1613656 5698968 1613632 5698952 1613112 5699888 +1613856 5699232 1613656 5698968 1613112 5699888 1613896 5699672 +1613856 5699232 1613808 5699080 1613656 5698968 1613112 5699888 +1613632 5698952 1613488 5698888 1613112 5699888 1613656 5698968 +1613112 5699888 1613152 5699640 1611560 5699312 1611552 5699400 +1613112 5699888 1613424 5698816 1613152 5699640 1611552 5699400 +1613424 5698816 1613152 5699640 1613112 5699888 1613440 5698848 +1613152 5699640 1611552 5699400 1613112 5699888 1613440 5698848 +1613152 5699640 1613424 5698816 1611560 5699312 1611552 5699400 +1613424 5698816 1611560 5699312 1613152 5699640 1613440 5698848 +1613112 5699888 1613152 5699640 1611552 5699400 1611528 5699488 +1613112 5699888 1613488 5698888 1613440 5698848 1613152 5699640 +1613112 5699888 1613488 5698888 1613152 5699640 1611552 5699400 +1613440 5698848 1613424 5698816 1613152 5699640 1613488 5698888 +1613112 5699888 1613632 5698952 1613488 5698888 1613152 5699640 +1613112 5699888 1613632 5698952 1613152 5699640 1611552 5699400 +1613488 5698888 1613440 5698848 1613152 5699640 1613632 5698952 +1611560 5699312 1613152 5699640 1613424 5698816 1613400 5698720 +1611560 5699312 1611552 5699400 1613152 5699640 1613400 5698720 +1613152 5699640 1613440 5698848 1613424 5698816 1613400 5698720 +1611560 5699312 1613152 5699640 1613400 5698720 1611528 5699256 +1613112 5699888 1613656 5698968 1613632 5698952 1613152 5699640 +1613112 5699888 1613656 5698968 1613152 5699640 1611552 5699400 +1613632 5698952 1613488 5698888 1613152 5699640 1613656 5698968 +1613112 5699888 1613856 5699232 1613656 5698968 1613152 5699640 +1613112 5699888 1613856 5699232 1613152 5699640 1611552 5699400 +1613112 5699888 1613896 5699672 1613856 5699232 1613152 5699640 +1613112 5699888 1613896 5699672 1613152 5699640 1611552 5699400 +1613112 5699888 1613448 5700144 1613896 5699672 1613152 5699640 +1613112 5699888 1613448 5700144 1613152 5699640 1611552 5699400 +1613448 5700144 1613504 5700176 1613896 5699672 1613152 5699640 +1613112 5699888 1613240 5700112 1613448 5700144 1613152 5699640 +1613896 5699672 1613856 5699232 1613152 5699640 1613448 5700144 +1613856 5699232 1613808 5699080 1613656 5698968 1613152 5699640 +1613856 5699232 1613656 5698968 1613152 5699640 1613896 5699672 +1613656 5698968 1613632 5698952 1613152 5699640 1613856 5699232 +1613152 5699640 1613144 5699584 1611560 5699312 1611552 5699400 +1613152 5699640 1613144 5699584 1611552 5699400 1613112 5699888 +1613144 5699584 1611560 5699312 1611552 5699400 1613112 5699888 +1613152 5699640 1613400 5698720 1613144 5699584 1613112 5699888 +1613144 5699584 1613400 5698720 1611560 5699312 1611552 5699400 +1611552 5699400 1611528 5699488 1613112 5699888 1613144 5699584 +1613400 5698720 1613144 5699584 1613152 5699640 1613424 5698816 +1613144 5699584 1613112 5699888 1613152 5699640 1613424 5698816 +1613152 5699640 1613440 5698848 1613424 5698816 1613144 5699584 +1613152 5699640 1613488 5698888 1613440 5698848 1613144 5699584 +1613152 5699640 1613488 5698888 1613144 5699584 1613112 5699888 +1613440 5698848 1613424 5698816 1613144 5699584 1613488 5698888 +1613400 5698720 1611560 5699312 1613144 5699584 1613424 5698816 +1613152 5699640 1613632 5698952 1613488 5698888 1613144 5699584 +1613488 5698888 1613440 5698848 1613144 5699584 1613632 5698952 +1613152 5699640 1613632 5698952 1613144 5699584 1613112 5699888 +1613152 5699640 1613656 5698968 1613632 5698952 1613144 5699584 +1613152 5699640 1613656 5698968 1613144 5699584 1613112 5699888 +1613632 5698952 1613488 5698888 1613144 5699584 1613656 5698968 +1613424 5698816 1613400 5698720 1613144 5699584 1613440 5698848 +1611560 5699312 1613144 5699584 1613400 5698720 1611528 5699256 +1613152 5699640 1613856 5699232 1613656 5698968 1613144 5699584 +1613152 5699640 1613856 5699232 1613144 5699584 1613112 5699888 +1613656 5698968 1613632 5698952 1613144 5699584 1613856 5699232 +1613856 5699232 1613808 5699080 1613656 5698968 1613144 5699584 +1613152 5699640 1613896 5699672 1613856 5699232 1613144 5699584 +1613152 5699640 1613896 5699672 1613144 5699584 1613112 5699888 +1613152 5699640 1613448 5700144 1613896 5699672 1613144 5699584 +1613856 5699232 1613656 5698968 1613144 5699584 1613896 5699672 +1613144 5699584 1613128 5699544 1611560 5699312 1611552 5699400 +1613144 5699584 1613128 5699544 1611552 5699400 1613112 5699888 +1613144 5699584 1613128 5699544 1613112 5699888 1613152 5699640 +1613128 5699544 1611552 5699400 1613112 5699888 1613152 5699640 +1613128 5699544 1611560 5699312 1611552 5699400 1613112 5699888 +1613144 5699584 1613400 5698720 1613128 5699544 1613152 5699640 +1613400 5698720 1613128 5699544 1613144 5699584 1613424 5698816 +1613128 5699544 1613152 5699640 1613144 5699584 1613424 5698816 +1613128 5699544 1613400 5698720 1611560 5699312 1611552 5699400 +1613400 5698720 1611560 5699312 1613128 5699544 1613424 5698816 +1611552 5699400 1611528 5699488 1613112 5699888 1613128 5699544 +1613112 5699888 1613152 5699640 1613128 5699544 1611528 5699488 +1611552 5699400 1611528 5699488 1613128 5699544 1611560 5699312 +1611528 5699488 1613096 5699944 1613112 5699888 1613128 5699544 +1613144 5699584 1613440 5698848 1613424 5698816 1613128 5699544 +1613144 5699584 1613488 5698888 1613440 5698848 1613128 5699544 +1613144 5699584 1613632 5698952 1613488 5698888 1613128 5699544 +1613488 5698888 1613440 5698848 1613128 5699544 1613632 5698952 +1613144 5699584 1613632 5698952 1613128 5699544 1613152 5699640 +1613424 5698816 1613400 5698720 1613128 5699544 1613440 5698848 +1613144 5699584 1613656 5698968 1613632 5698952 1613128 5699544 +1613632 5698952 1613488 5698888 1613128 5699544 1613656 5698968 +1613144 5699584 1613656 5698968 1613128 5699544 1613152 5699640 +1613144 5699584 1613856 5699232 1613656 5698968 1613128 5699544 +1613144 5699584 1613856 5699232 1613128 5699544 1613152 5699640 +1613656 5698968 1613632 5698952 1613128 5699544 1613856 5699232 +1613440 5698848 1613424 5698816 1613128 5699544 1613488 5698888 +1611560 5699312 1613128 5699544 1613400 5698720 1611528 5699256 +1613856 5699232 1613808 5699080 1613656 5698968 1613128 5699544 +1613144 5699584 1613896 5699672 1613856 5699232 1613128 5699544 +1613128 5699544 1613088 5699488 1611560 5699312 1611552 5699400 +1613128 5699544 1613088 5699488 1611552 5699400 1611528 5699488 +1613088 5699488 1611560 5699312 1611552 5699400 1611528 5699488 +1613128 5699544 1613400 5698720 1613088 5699488 1611528 5699488 +1613400 5698720 1613088 5699488 1613128 5699544 1613424 5698816 +1613128 5699544 1613440 5698848 1613424 5698816 1613088 5699488 +1613088 5699488 1611528 5699488 1613128 5699544 1613440 5698848 +1613424 5698816 1613400 5698720 1613088 5699488 1613440 5698848 +1613088 5699488 1613400 5698720 1611560 5699312 1611552 5699400 +1613400 5698720 1611560 5699312 1613088 5699488 1613424 5698816 +1613128 5699544 1613088 5699488 1611528 5699488 1613112 5699888 +1613128 5699544 1613088 5699488 1613112 5699888 1613152 5699640 +1613128 5699544 1613088 5699488 1613152 5699640 1613144 5699584 +1613088 5699488 1611552 5699400 1611528 5699488 1613112 5699888 +1613128 5699544 1613440 5698848 1613088 5699488 1613152 5699640 +1611528 5699488 1613096 5699944 1613112 5699888 1613088 5699488 +1611528 5699488 1613096 5699944 1613088 5699488 1611552 5699400 +1611528 5699488 1611480 5699576 1613096 5699944 1613088 5699488 +1613088 5699488 1613096 5699944 1613112 5699888 1613152 5699640 +1613128 5699544 1613488 5698888 1613440 5698848 1613088 5699488 +1613128 5699544 1613632 5698952 1613488 5698888 1613088 5699488 +1613128 5699544 1613656 5698968 1613632 5698952 1613088 5699488 +1613632 5698952 1613488 5698888 1613088 5699488 1613656 5698968 +1613440 5698848 1613424 5698816 1613088 5699488 1613488 5698888 +1613128 5699544 1613656 5698968 1613088 5699488 1613152 5699640 +1613128 5699544 1613856 5699232 1613656 5698968 1613088 5699488 +1613488 5698888 1613440 5698848 1613088 5699488 1613632 5698952 +1611560 5699312 1613088 5699488 1613400 5698720 1611528 5699256 +1611560 5699312 1611552 5699400 1613088 5699488 1611528 5699256 +1613088 5699488 1613424 5698816 1613400 5698720 1611528 5699256 +1613400 5698720 1611448 5699192 1611528 5699256 1613088 5699488 +1613400 5698720 1612928 5699440 1613088 5699488 1613424 5698816 +1613088 5699488 1613440 5698848 1613424 5698816 1612928 5699440 +1613088 5699488 1613488 5698888 1613440 5698848 1612928 5699440 +1612928 5699440 1611528 5699256 1613088 5699488 1613440 5698848 +1613424 5698816 1613400 5698720 1612928 5699440 1613440 5698848 +1613400 5698720 1611528 5699256 1612928 5699440 1613424 5698816 +1613088 5699488 1612928 5699440 1611528 5699256 1611560 5699312 +1613088 5699488 1612928 5699440 1611560 5699312 1611552 5699400 +1613088 5699488 1612928 5699440 1611552 5699400 1611528 5699488 +1613088 5699488 1612928 5699440 1611528 5699488 1613096 5699944 +1612928 5699440 1611552 5699400 1611528 5699488 1613096 5699944 +1612928 5699440 1611560 5699312 1611552 5699400 1611528 5699488 +1613088 5699488 1613440 5698848 1612928 5699440 1613096 5699944 +1612928 5699440 1613400 5698720 1611528 5699256 1611560 5699312 +1611528 5699488 1611480 5699576 1613096 5699944 1612928 5699440 +1613096 5699944 1613088 5699488 1612928 5699440 1611480 5699576 +1611528 5699488 1611480 5699576 1612928 5699440 1611552 5699400 +1613088 5699488 1612928 5699440 1613096 5699944 1613112 5699888 +1612928 5699440 1611480 5699576 1613096 5699944 1613112 5699888 +1613088 5699488 1613440 5698848 1612928 5699440 1613112 5699888 +1613088 5699488 1612928 5699440 1613112 5699888 1613152 5699640 +1613088 5699488 1612928 5699440 1613152 5699640 1613128 5699544 +1613152 5699640 1613144 5699584 1613128 5699544 1612928 5699440 +1613128 5699544 1613088 5699488 1612928 5699440 1613144 5699584 +1613088 5699488 1613440 5698848 1612928 5699440 1613128 5699544 +1612928 5699440 1613096 5699944 1613112 5699888 1613152 5699640 +1612928 5699440 1613112 5699888 1613152 5699640 1613144 5699584 +1611480 5699576 1611440 5699632 1613096 5699944 1612928 5699440 +1612928 5699440 1611528 5699256 1611560 5699312 1611552 5699400 +1611528 5699256 1612928 5699440 1613400 5698720 1611448 5699192 +1612928 5699440 1612888 5699392 1611528 5699256 1611560 5699312 +1612928 5699440 1613400 5698720 1612888 5699392 1611560 5699312 +1613400 5698720 1612888 5699392 1612928 5699440 1613424 5698816 +1612928 5699440 1613440 5698848 1613424 5698816 1612888 5699392 +1612928 5699440 1613088 5699488 1613440 5698848 1612888 5699392 +1613088 5699488 1613488 5698888 1613440 5698848 1612888 5699392 +1613440 5698848 1613424 5698816 1612888 5699392 1613088 5699488 +1612888 5699392 1611560 5699312 1612928 5699440 1613088 5699488 +1613424 5698816 1613400 5698720 1612888 5699392 1613440 5698848 +1612888 5699392 1613400 5698720 1611528 5699256 1611560 5699312 +1613400 5698720 1611528 5699256 1612888 5699392 1613424 5698816 +1612928 5699440 1612888 5699392 1611560 5699312 1611552 5699400 +1612928 5699440 1612888 5699392 1611552 5699400 1611528 5699488 +1612928 5699440 1612888 5699392 1611528 5699488 1611480 5699576 +1612888 5699392 1611552 5699400 1611528 5699488 1611480 5699576 +1612888 5699392 1611528 5699256 1611560 5699312 1611552 5699400 +1612928 5699440 1613088 5699488 1612888 5699392 1611480 5699576 +1612928 5699440 1612888 5699392 1611480 5699576 1613096 5699944 +1612928 5699440 1612888 5699392 1613096 5699944 1613112 5699888 +1612888 5699392 1611528 5699488 1611480 5699576 1613096 5699944 +1612928 5699440 1613088 5699488 1612888 5699392 1613096 5699944 +1611480 5699576 1611440 5699632 1613096 5699944 1612888 5699392 +1612888 5699392 1611560 5699312 1611552 5699400 1611528 5699488 +1611528 5699256 1612888 5699392 1613400 5698720 1611448 5699192 +1612888 5699392 1612872 5699312 1611528 5699256 1611560 5699312 +1612888 5699392 1612872 5699312 1611560 5699312 1611552 5699400 +1612872 5699312 1611528 5699256 1611560 5699312 1611552 5699400 +1612888 5699392 1613400 5698720 1612872 5699312 1611552 5699400 +1613400 5698720 1612872 5699312 1612888 5699392 1613424 5698816 +1612888 5699392 1613440 5698848 1613424 5698816 1612872 5699312 +1612888 5699392 1613088 5699488 1613440 5698848 1612872 5699312 +1613088 5699488 1613488 5698888 1613440 5698848 1612872 5699312 +1612888 5699392 1612928 5699440 1613088 5699488 1612872 5699312 +1613088 5699488 1613440 5698848 1612872 5699312 1612928 5699440 +1613440 5698848 1613424 5698816 1612872 5699312 1613088 5699488 +1612872 5699312 1611552 5699400 1612888 5699392 1612928 5699440 +1613424 5698816 1613400 5698720 1612872 5699312 1613440 5698848 +1612872 5699312 1613400 5698720 1611528 5699256 1611560 5699312 +1613400 5698720 1611528 5699256 1612872 5699312 1613424 5698816 +1612888 5699392 1612872 5699312 1611552 5699400 1611528 5699488 +1611528 5699256 1612872 5699312 1613400 5698720 1611448 5699192 +1611528 5699256 1611560 5699312 1612872 5699312 1611448 5699192 +1612872 5699312 1613424 5698816 1613400 5698720 1611448 5699192 +1613400 5698720 1613456 5698608 1611448 5699192 1612872 5699312 +1613400 5698720 1612912 5699144 1612872 5699312 1613424 5698816 +1612872 5699312 1613440 5698848 1613424 5698816 1612912 5699144 +1612872 5699312 1613088 5699488 1613440 5698848 1612912 5699144 +1613088 5699488 1613488 5698888 1613440 5698848 1612912 5699144 +1612872 5699312 1612928 5699440 1613088 5699488 1612912 5699144 +1613088 5699488 1613488 5698888 1612912 5699144 1612872 5699312 +1613440 5698848 1613424 5698816 1612912 5699144 1613488 5698888 +1612912 5699144 1611448 5699192 1612872 5699312 1613088 5699488 +1613424 5698816 1613400 5698720 1612912 5699144 1613440 5698848 +1613400 5698720 1611448 5699192 1612912 5699144 1613424 5698816 +1613088 5699488 1613632 5698952 1613488 5698888 1612912 5699144 +1612872 5699312 1612912 5699144 1611448 5699192 1611528 5699256 +1612872 5699312 1612912 5699144 1611528 5699256 1611560 5699312 +1612872 5699312 1612912 5699144 1611560 5699312 1611552 5699400 +1612872 5699312 1613088 5699488 1612912 5699144 1611560 5699312 +1612912 5699144 1613400 5698720 1611448 5699192 1611528 5699256 +1612912 5699144 1611448 5699192 1611528 5699256 1611560 5699312 +1611448 5699192 1612912 5699144 1613400 5698720 1613456 5698608 +1611448 5699192 1611528 5699256 1612912 5699144 1613456 5698608 +1612912 5699144 1613424 5698816 1613400 5698720 1613456 5698608 +1611448 5699192 1612912 5699144 1613456 5698608 1613072 5696952 +1611448 5699192 1611528 5699256 1612912 5699144 1613072 5696952 +1611448 5699192 1612912 5699144 1613072 5696952 1613008 5696896 +1613456 5698608 1613312 5697192 1613072 5696952 1612912 5699144 +1613456 5698608 1613736 5698080 1613312 5697192 1612912 5699144 +1612912 5699144 1613400 5698720 1613456 5698608 1613312 5697192 +1613072 5696952 1611448 5699192 1612912 5699144 1613312 5697192 +1613312 5697192 1612976 5698976 1613456 5698608 1613736 5698080 +1612912 5699144 1612976 5698976 1613312 5697192 1613072 5696952 +1612912 5699144 1613456 5698608 1612976 5698976 1613072 5696952 +1612976 5698976 1613456 5698608 1613312 5697192 1613072 5696952 +1613456 5698608 1612976 5698976 1612912 5699144 1613400 5698720 +1612976 5698976 1613072 5696952 1612912 5699144 1613400 5698720 +1612912 5699144 1613424 5698816 1613400 5698720 1612976 5698976 +1612912 5699144 1613440 5698848 1613424 5698816 1612976 5698976 +1612912 5699144 1613488 5698888 1613440 5698848 1612976 5698976 +1612912 5699144 1613088 5699488 1613488 5698888 1612976 5698976 +1612912 5699144 1612872 5699312 1613088 5699488 1612976 5698976 +1613488 5698888 1613440 5698848 1612976 5698976 1613088 5699488 +1613440 5698848 1613424 5698816 1612976 5698976 1613488 5698888 +1612912 5699144 1613088 5699488 1612976 5698976 1613072 5696952 +1613424 5698816 1613400 5698720 1612976 5698976 1613440 5698848 +1613456 5698608 1613312 5697192 1612976 5698976 1613400 5698720 +1613088 5699488 1613632 5698952 1613488 5698888 1612976 5698976 +1613400 5698720 1613456 5698608 1612976 5698976 1613424 5698816 +1612912 5699144 1612976 5698976 1613072 5696952 1611448 5699192 +1612912 5699144 1612976 5698976 1611448 5699192 1611528 5699256 +1612912 5699144 1613088 5699488 1612976 5698976 1611528 5699256 +1613072 5696952 1613008 5696896 1611448 5699192 1612976 5698976 +1612976 5698976 1613312 5697192 1613072 5696952 1613008 5696896 +1613008 5696896 1610904 5698784 1611448 5699192 1612976 5698976 +1612912 5699144 1612976 5698976 1611528 5699256 1611560 5699312 +1612976 5698976 1613008 5696896 1611448 5699192 1611528 5699256 +1613008 5696896 1612968 5698896 1612976 5698976 1613072 5696952 +1613008 5696896 1611448 5699192 1612968 5698896 1613072 5696952 +1612968 5698896 1611448 5699192 1612976 5698976 1613072 5696952 +1612976 5698976 1613312 5697192 1613072 5696952 1612968 5698896 +1612976 5698976 1613456 5698608 1613312 5697192 1612968 5698896 +1612976 5698976 1613456 5698608 1612968 5698896 1611448 5699192 +1612976 5698976 1613400 5698720 1613456 5698608 1612968 5698896 +1613456 5698608 1613312 5697192 1612968 5698896 1613400 5698720 +1612976 5698976 1613400 5698720 1612968 5698896 1611448 5699192 +1613072 5696952 1613008 5696896 1612968 5698896 1613312 5697192 +1613456 5698608 1613736 5698080 1613312 5697192 1612968 5698896 +1613312 5697192 1613072 5696952 1612968 5698896 1613456 5698608 +1611448 5699192 1612968 5698896 1613008 5696896 1610904 5698784 +1611448 5699192 1612976 5698976 1612968 5698896 1610904 5698784 +1612968 5698896 1613072 5696952 1613008 5696896 1610904 5698784 +1611448 5699192 1612968 5698896 1610904 5698784 1610928 5698816 +1613008 5696896 1612840 5696712 1610904 5698784 1612968 5698896 +1612976 5698976 1613424 5698816 1613400 5698720 1612968 5698896 +1612976 5698976 1613440 5698848 1613424 5698816 1612968 5698896 +1612976 5698976 1613424 5698816 1612968 5698896 1611448 5699192 +1613400 5698720 1613456 5698608 1612968 5698896 1613424 5698816 +1612976 5698976 1612968 5698896 1611448 5699192 1611528 5699256 +1612976 5698976 1612968 5698896 1611528 5699256 1612912 5699144 +1612968 5698896 1610904 5698784 1611448 5699192 1611528 5699256 +1612976 5698976 1613424 5698816 1612968 5698896 1612912 5699144 +1611528 5699256 1611560 5699312 1612912 5699144 1612968 5698896 +1612968 5698896 1611448 5699192 1611528 5699256 1612912 5699144 +1613008 5696896 1612936 5698848 1612968 5698896 1613072 5696952 +1612936 5698848 1610904 5698784 1612968 5698896 1613072 5696952 +1613008 5696896 1610904 5698784 1612936 5698848 1613072 5696952 +1612968 5698896 1613312 5697192 1613072 5696952 1612936 5698848 +1612968 5698896 1613312 5697192 1612936 5698848 1610904 5698784 +1613072 5696952 1613008 5696896 1612936 5698848 1613312 5697192 +1612968 5698896 1613456 5698608 1613312 5697192 1612936 5698848 +1612968 5698896 1613456 5698608 1612936 5698848 1610904 5698784 +1612968 5698896 1613400 5698720 1613456 5698608 1612936 5698848 +1612968 5698896 1613400 5698720 1612936 5698848 1610904 5698784 +1612968 5698896 1613424 5698816 1613400 5698720 1612936 5698848 +1613312 5697192 1613072 5696952 1612936 5698848 1613456 5698608 +1613456 5698608 1613736 5698080 1613312 5697192 1612936 5698848 +1613456 5698608 1613312 5697192 1612936 5698848 1613400 5698720 +1612968 5698896 1612936 5698848 1610904 5698784 1611448 5699192 +1612968 5698896 1612936 5698848 1611448 5699192 1611528 5699256 +1612968 5698896 1613400 5698720 1612936 5698848 1611528 5699256 +1612936 5698848 1613008 5696896 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1612936 5698848 +1612936 5698848 1610904 5698784 1611448 5699192 1611528 5699256 +1610904 5698784 1612936 5698848 1613008 5696896 1612840 5696712 +1612968 5698896 1612936 5698848 1611528 5699256 1612912 5699144 +1612968 5698896 1612936 5698848 1612912 5699144 1612976 5698976 +1612936 5698848 1611448 5699192 1611528 5699256 1612912 5699144 +1612968 5698896 1613400 5698720 1612936 5698848 1612976 5698976 +1611528 5699256 1611560 5699312 1612912 5699144 1612936 5698848 +1611560 5699312 1612872 5699312 1612912 5699144 1612936 5698848 +1611528 5699256 1611560 5699312 1612936 5698848 1611448 5699192 +1612936 5698848 1611560 5699312 1612912 5699144 1612976 5698976 +1612936 5698848 1612896 5698800 1610904 5698784 1611448 5699192 +1612936 5698848 1613008 5696896 1612896 5698800 1611448 5699192 +1613008 5696896 1612896 5698800 1612936 5698848 1613072 5696952 +1612936 5698848 1613312 5697192 1613072 5696952 1612896 5698800 +1612896 5698800 1611448 5699192 1612936 5698848 1613312 5697192 +1613072 5696952 1613008 5696896 1612896 5698800 1613312 5697192 +1612896 5698800 1613008 5696896 1610904 5698784 1611448 5699192 +1613008 5696896 1610904 5698784 1612896 5698800 1613072 5696952 +1610904 5698784 1610928 5698816 1611448 5699192 1612896 5698800 +1612936 5698848 1613456 5698608 1613312 5697192 1612896 5698800 +1613312 5697192 1613072 5696952 1612896 5698800 1613456 5698608 +1612936 5698848 1613456 5698608 1612896 5698800 1611448 5699192 +1613456 5698608 1613736 5698080 1613312 5697192 1612896 5698800 +1613312 5697192 1613072 5696952 1612896 5698800 1613736 5698080 +1613456 5698608 1613736 5698080 1612896 5698800 1612936 5698848 +1613736 5698080 1613728 5697776 1613312 5697192 1612896 5698800 +1613312 5697192 1613072 5696952 1612896 5698800 1613728 5697776 +1613736 5698080 1613728 5697776 1612896 5698800 1613456 5698608 +1613728 5697776 1613528 5697360 1613312 5697192 1612896 5698800 +1612936 5698848 1613400 5698720 1613456 5698608 1612896 5698800 +1612936 5698848 1613400 5698720 1612896 5698800 1611448 5699192 +1612936 5698848 1612968 5698896 1613400 5698720 1612896 5698800 +1613456 5698608 1613736 5698080 1612896 5698800 1613400 5698720 +1612936 5698848 1612896 5698800 1611448 5699192 1611528 5699256 +1612936 5698848 1612896 5698800 1611528 5699256 1611560 5699312 +1612896 5698800 1610904 5698784 1611448 5699192 1611528 5699256 +1612936 5698848 1613400 5698720 1612896 5698800 1611560 5699312 +1612896 5698800 1611448 5699192 1611528 5699256 1611560 5699312 +1610904 5698784 1612896 5698800 1613008 5696896 1612840 5696712 +1612936 5698848 1612896 5698800 1611560 5699312 1612912 5699144 +1611560 5699312 1612872 5699312 1612912 5699144 1612896 5698800 +1612896 5698800 1611528 5699256 1611560 5699312 1612912 5699144 +1612936 5698848 1613400 5698720 1612896 5698800 1612912 5699144 +1612936 5698848 1612896 5698800 1612912 5699144 1612976 5698976 +1613456 5698608 1613656 5698376 1613736 5698080 1612896 5698800 +1612896 5698800 1612856 5698792 1610904 5698784 1611448 5699192 +1612896 5698800 1612856 5698792 1611448 5699192 1611528 5699256 +1612856 5698792 1610904 5698784 1611448 5699192 1611528 5699256 +1612896 5698800 1613008 5696896 1612856 5698792 1611528 5699256 +1613008 5696896 1612856 5698792 1612896 5698800 1613072 5696952 +1612896 5698800 1613312 5697192 1613072 5696952 1612856 5698792 +1612896 5698800 1613728 5697776 1613312 5697192 1612856 5698792 +1613312 5697192 1613072 5696952 1612856 5698792 1613728 5697776 +1612856 5698792 1611528 5699256 1612896 5698800 1613728 5697776 +1613072 5696952 1613008 5696896 1612856 5698792 1613312 5697192 +1612856 5698792 1613008 5696896 1610904 5698784 1611448 5699192 +1610904 5698784 1610928 5698816 1611448 5699192 1612856 5698792 +1613008 5696896 1610904 5698784 1612856 5698792 1613072 5696952 +1612896 5698800 1613736 5698080 1613728 5697776 1612856 5698792 +1613728 5697776 1613312 5697192 1612856 5698792 1613736 5698080 +1612896 5698800 1613736 5698080 1612856 5698792 1611528 5699256 +1612896 5698800 1613456 5698608 1613736 5698080 1612856 5698792 +1612896 5698800 1613456 5698608 1612856 5698792 1611528 5699256 +1612896 5698800 1613400 5698720 1613456 5698608 1612856 5698792 +1613736 5698080 1613728 5697776 1612856 5698792 1613456 5698608 +1613728 5697776 1613528 5697360 1613312 5697192 1612856 5698792 +1612896 5698800 1612856 5698792 1611528 5699256 1611560 5699312 +1612896 5698800 1612856 5698792 1611560 5699312 1612912 5699144 +1611560 5699312 1612872 5699312 1612912 5699144 1612856 5698792 +1611560 5699312 1611552 5699400 1612872 5699312 1612856 5698792 +1612912 5699144 1612896 5698800 1612856 5698792 1612872 5699312 +1612856 5698792 1611448 5699192 1611528 5699256 1611560 5699312 +1612896 5698800 1613456 5698608 1612856 5698792 1612912 5699144 +1612856 5698792 1611528 5699256 1611560 5699312 1612872 5699312 +1610904 5698784 1612856 5698792 1613008 5696896 1612840 5696712 +1612896 5698800 1612856 5698792 1612912 5699144 1612936 5698848 +1612856 5698792 1612872 5699312 1612912 5699144 1612936 5698848 +1612896 5698800 1613456 5698608 1612856 5698792 1612936 5698848 +1612912 5699144 1612976 5698976 1612936 5698848 1612856 5698792 +1612976 5698976 1612968 5698896 1612936 5698848 1612856 5698792 +1612912 5699144 1612976 5698976 1612856 5698792 1612872 5699312 +1612936 5698848 1612896 5698800 1612856 5698792 1612976 5698976 +1613456 5698608 1613656 5698376 1613736 5698080 1612856 5698792 +1612856 5698792 1612712 5698808 1611448 5699192 1611528 5699256 +1612856 5698792 1612712 5698808 1611528 5699256 1611560 5699312 +1612712 5698808 1611448 5699192 1611528 5699256 1611560 5699312 +1610904 5698784 1612712 5698808 1612856 5698792 1613008 5696896 +1611448 5699192 1612712 5698808 1610904 5698784 1610928 5698816 +1611448 5699192 1612712 5698808 1610928 5698816 1611424 5699184 +1612856 5698792 1613072 5696952 1613008 5696896 1612712 5698808 +1612856 5698792 1613312 5697192 1613072 5696952 1612712 5698808 +1612856 5698792 1613728 5697776 1613312 5697192 1612712 5698808 +1613008 5696896 1610904 5698784 1612712 5698808 1613072 5696952 +1613072 5696952 1613008 5696896 1612712 5698808 1613312 5697192 +1612856 5698792 1613312 5697192 1612712 5698808 1611560 5699312 +1612712 5698808 1610928 5698816 1611448 5699192 1611528 5699256 +1610904 5698784 1610928 5698816 1612712 5698808 1613008 5696896 +1612856 5698792 1612712 5698808 1611560 5699312 1612872 5699312 +1611560 5699312 1611552 5699400 1612872 5699312 1612712 5698808 +1612856 5698792 1612712 5698808 1612872 5699312 1612912 5699144 +1612856 5698792 1612712 5698808 1612912 5699144 1612976 5698976 +1612712 5698808 1612872 5699312 1612912 5699144 1612976 5698976 +1612712 5698808 1611528 5699256 1611560 5699312 1612872 5699312 +1612856 5698792 1613312 5697192 1612712 5698808 1612976 5698976 +1612712 5698808 1611560 5699312 1612872 5699312 1612912 5699144 +1610904 5698784 1612712 5698808 1613008 5696896 1612840 5696712 +1612712 5698808 1613072 5696952 1613008 5696896 1612840 5696712 +1610904 5698784 1610928 5698816 1612712 5698808 1612840 5696712 +1610904 5698784 1612712 5698808 1612840 5696712 1612736 5696520 +1612856 5698792 1612712 5698808 1612976 5698976 1612936 5698848 +1612976 5698976 1612968 5698896 1612936 5698848 1612712 5698808 +1612712 5698808 1612912 5699144 1612976 5698976 1612936 5698848 +1612856 5698792 1613312 5697192 1612712 5698808 1612936 5698848 +1612856 5698792 1612712 5698808 1612936 5698848 1612896 5698800 +1612712 5698808 1612648 5698784 1610904 5698784 1610928 5698816 +1612712 5698808 1612648 5698784 1610928 5698816 1611448 5699192 +1610928 5698816 1611424 5699184 1611448 5699192 1612648 5698784 +1612712 5698808 1612648 5698784 1611448 5699192 1611528 5699256 +1612712 5698808 1612648 5698784 1611528 5699256 1611560 5699312 +1612712 5698808 1612648 5698784 1611560 5699312 1612872 5699312 +1611560 5699312 1611552 5699400 1612872 5699312 1612648 5698784 +1612648 5698784 1611528 5699256 1611560 5699312 1612872 5699312 +1612648 5698784 1610928 5698816 1611448 5699192 1611528 5699256 +1612648 5698784 1611448 5699192 1611528 5699256 1611560 5699312 +1612712 5698808 1612840 5696712 1612648 5698784 1612872 5699312 +1612648 5698784 1610904 5698784 1610928 5698816 1611448 5699192 +1612648 5698784 1612840 5696712 1610904 5698784 1610928 5698816 +1612712 5698808 1612648 5698784 1612872 5699312 1612912 5699144 +1612712 5698808 1612648 5698784 1612912 5699144 1612976 5698976 +1612648 5698784 1611560 5699312 1612872 5699312 1612912 5699144 +1612712 5698808 1612840 5696712 1612648 5698784 1612912 5699144 +1612840 5696712 1612648 5698784 1612712 5698808 1613008 5696896 +1612712 5698808 1613072 5696952 1613008 5696896 1612648 5698784 +1612840 5696712 1610904 5698784 1612648 5698784 1613008 5696896 +1612712 5698808 1613312 5697192 1613072 5696952 1612648 5698784 +1612712 5698808 1612856 5698792 1613312 5697192 1612648 5698784 +1612856 5698792 1613728 5697776 1613312 5697192 1612648 5698784 +1613072 5696952 1613008 5696896 1612648 5698784 1613312 5697192 +1613312 5697192 1613072 5696952 1612648 5698784 1612856 5698792 +1612648 5698784 1612912 5699144 1612712 5698808 1612856 5698792 +1613008 5696896 1612840 5696712 1612648 5698784 1613072 5696952 +1610904 5698784 1612648 5698784 1612840 5696712 1612736 5696520 +1612840 5696712 1612616 5698752 1612648 5698784 1613008 5696896 +1612616 5698752 1610904 5698784 1612648 5698784 1613008 5696896 +1612648 5698784 1612616 5698752 1610904 5698784 1610928 5698816 +1612648 5698784 1613008 5696896 1612616 5698752 1610928 5698816 +1612616 5698752 1612840 5696712 1610904 5698784 1610928 5698816 +1612648 5698784 1612616 5698752 1610928 5698816 1611448 5699192 +1610928 5698816 1611424 5699184 1611448 5699192 1612616 5698752 +1612648 5698784 1612616 5698752 1611448 5699192 1611528 5699256 +1612648 5698784 1613008 5696896 1612616 5698752 1611528 5699256 +1610928 5698816 1611400 5699192 1611424 5699184 1612616 5698752 +1612648 5698784 1612616 5698752 1611528 5699256 1611560 5699312 +1612648 5698784 1612616 5698752 1611560 5699312 1612872 5699312 +1612616 5698752 1611448 5699192 1611528 5699256 1611560 5699312 +1612648 5698784 1613008 5696896 1612616 5698752 1611560 5699312 +1611448 5699192 1611528 5699256 1612616 5698752 1611424 5699184 +1612616 5698752 1610904 5698784 1610928 5698816 1611424 5699184 +1612840 5696712 1610904 5698784 1612616 5698752 1613008 5696896 +1612648 5698784 1613072 5696952 1613008 5696896 1612616 5698752 +1612648 5698784 1613312 5697192 1613072 5696952 1612616 5698752 +1612648 5698784 1613312 5697192 1612616 5698752 1611560 5699312 +1613008 5696896 1612840 5696712 1612616 5698752 1613072 5696952 +1612648 5698784 1612856 5698792 1613312 5697192 1612616 5698752 +1612856 5698792 1613728 5697776 1613312 5697192 1612616 5698752 +1612648 5698784 1612712 5698808 1612856 5698792 1612616 5698752 +1613312 5697192 1613072 5696952 1612616 5698752 1612856 5698792 +1612648 5698784 1612712 5698808 1612616 5698752 1611560 5699312 +1612856 5698792 1613312 5697192 1612616 5698752 1612712 5698808 +1613072 5696952 1613008 5696896 1612616 5698752 1613312 5697192 +1610904 5698784 1612616 5698752 1612840 5696712 1612736 5696520 +1612616 5698752 1612576 5698656 1610904 5698784 1610928 5698816 +1612616 5698752 1612576 5698656 1610928 5698816 1611424 5699184 +1612616 5698752 1612576 5698656 1611424 5699184 1611448 5699192 +1612576 5698656 1610904 5698784 1610928 5698816 1611424 5699184 +1610928 5698816 1611400 5699192 1611424 5699184 1612576 5698656 +1612616 5698752 1612576 5698656 1611448 5699192 1611528 5699256 +1612576 5698656 1611424 5699184 1611448 5699192 1611528 5699256 +1612616 5698752 1612576 5698656 1611528 5699256 1611560 5699312 +1612576 5698656 1610928 5698816 1611424 5699184 1611448 5699192 +1612840 5696712 1612576 5698656 1612616 5698752 1613008 5696896 +1612616 5698752 1613072 5696952 1613008 5696896 1612576 5698656 +1613008 5696896 1612840 5696712 1612576 5698656 1613072 5696952 +1612616 5698752 1613072 5696952 1612576 5698656 1611528 5699256 +1612576 5698656 1612840 5696712 1610904 5698784 1610928 5698816 +1612840 5696712 1610904 5698784 1612576 5698656 1613008 5696896 +1612616 5698752 1613312 5697192 1613072 5696952 1612576 5698656 +1612616 5698752 1612856 5698792 1613312 5697192 1612576 5698656 +1612856 5698792 1613728 5697776 1613312 5697192 1612576 5698656 +1612856 5698792 1613736 5698080 1613728 5697776 1612576 5698656 +1613728 5697776 1613312 5697192 1612576 5698656 1613736 5698080 +1612856 5698792 1613736 5698080 1612576 5698656 1612616 5698752 +1613072 5696952 1613008 5696896 1612576 5698656 1613312 5697192 +1612616 5698752 1612712 5698808 1612856 5698792 1612576 5698656 +1612616 5698752 1612648 5698784 1612712 5698808 1612576 5698656 +1612856 5698792 1613736 5698080 1612576 5698656 1612712 5698808 +1612616 5698752 1612712 5698808 1612576 5698656 1611528 5699256 +1612856 5698792 1613456 5698608 1613736 5698080 1612576 5698656 +1613736 5698080 1613728 5697776 1612576 5698656 1613456 5698608 +1612856 5698792 1613456 5698608 1612576 5698656 1612712 5698808 +1612856 5698792 1612896 5698800 1613456 5698608 1612576 5698656 +1613728 5697776 1613528 5697360 1613312 5697192 1612576 5698656 +1613312 5697192 1613072 5696952 1612576 5698656 1613728 5697776 +1610904 5698784 1612576 5698656 1612840 5696712 1612736 5696520 +1613456 5698608 1613656 5698376 1613736 5698080 1612576 5698656 +1613072 5696952 1612608 5698536 1612576 5698656 1613312 5697192 +1612576 5698656 1612608 5698536 1613008 5696896 1612840 5696712 +1612608 5698536 1612840 5696712 1612576 5698656 1613312 5697192 +1612576 5698656 1612608 5698536 1612840 5696712 1610904 5698784 +1612608 5698536 1613008 5696896 1612840 5696712 1610904 5698784 +1612576 5698656 1612608 5698536 1610904 5698784 1610928 5698816 +1612576 5698656 1612608 5698536 1610928 5698816 1611424 5699184 +1610928 5698816 1611400 5699192 1611424 5699184 1612608 5698536 +1612576 5698656 1612608 5698536 1611424 5699184 1611448 5699192 +1612576 5698656 1612608 5698536 1611448 5699192 1611528 5699256 +1612608 5698536 1610928 5698816 1611424 5699184 1611448 5699192 +1612608 5698536 1610904 5698784 1610928 5698816 1611424 5699184 +1612576 5698656 1613312 5697192 1612608 5698536 1611448 5699192 +1612608 5698536 1612840 5696712 1610904 5698784 1610928 5698816 +1612608 5698536 1613072 5696952 1613008 5696896 1612840 5696712 +1613072 5696952 1613008 5696896 1612608 5698536 1613312 5697192 +1612576 5698656 1613728 5697776 1613312 5697192 1612608 5698536 +1612576 5698656 1613736 5698080 1613728 5697776 1612608 5698536 +1612576 5698656 1613456 5698608 1613736 5698080 1612608 5698536 +1613736 5698080 1613728 5697776 1612608 5698536 1613456 5698608 +1613312 5697192 1613072 5696952 1612608 5698536 1613728 5697776 +1612576 5698656 1613456 5698608 1612608 5698536 1611448 5699192 +1612576 5698656 1612856 5698792 1613456 5698608 1612608 5698536 +1613456 5698608 1613736 5698080 1612608 5698536 1612856 5698792 +1612576 5698656 1612712 5698808 1612856 5698792 1612608 5698536 +1612856 5698792 1612896 5698800 1613456 5698608 1612608 5698536 +1613456 5698608 1613736 5698080 1612608 5698536 1612896 5698800 +1612896 5698800 1613400 5698720 1613456 5698608 1612608 5698536 +1612576 5698656 1612616 5698752 1612712 5698808 1612608 5698536 +1612576 5698656 1612712 5698808 1612608 5698536 1611448 5699192 +1612856 5698792 1612896 5698800 1612608 5698536 1612712 5698808 +1613728 5697776 1613528 5697360 1613312 5697192 1612608 5698536 +1613312 5697192 1613072 5696952 1612608 5698536 1613528 5697360 +1613728 5697776 1613528 5697360 1612608 5698536 1613736 5698080 +1612840 5696712 1612736 5696520 1610904 5698784 1612608 5698536 +1613728 5697776 1613696 5697608 1613528 5697360 1612608 5698536 +1613456 5698608 1613656 5698376 1613736 5698080 1612608 5698536 +1613456 5698608 1613656 5698376 1612608 5698536 1612896 5698800 +1613736 5698080 1613728 5697776 1612608 5698536 1613656 5698376 +1613456 5698608 1613648 5698408 1613656 5698376 1612608 5698536 +1613656 5698376 1613704 5698312 1613736 5698080 1612608 5698536 +1613312 5697192 1612696 5698328 1612608 5698536 1613528 5697360 +1612696 5698328 1613072 5696952 1612608 5698536 1613528 5697360 +1612608 5698536 1612696 5698328 1613072 5696952 1613008 5696896 +1612608 5698536 1612696 5698328 1613008 5696896 1612840 5696712 +1612608 5698536 1612696 5698328 1612840 5696712 1610904 5698784 +1612608 5698536 1612696 5698328 1610904 5698784 1610928 5698816 +1612696 5698328 1613008 5696896 1612840 5696712 1610904 5698784 +1612608 5698536 1613528 5697360 1612696 5698328 1610904 5698784 +1612696 5698328 1613072 5696952 1613008 5696896 1612840 5696712 +1612696 5698328 1613312 5697192 1613072 5696952 1613008 5696896 +1612608 5698536 1613728 5697776 1613528 5697360 1612696 5698328 +1613528 5697360 1613312 5697192 1612696 5698328 1613728 5697776 +1612608 5698536 1613728 5697776 1612696 5698328 1610904 5698784 +1612608 5698536 1613736 5698080 1613728 5697776 1612696 5698328 +1612608 5698536 1613656 5698376 1613736 5698080 1612696 5698328 +1612608 5698536 1613656 5698376 1612696 5698328 1610904 5698784 +1613728 5697776 1613528 5697360 1612696 5698328 1613736 5698080 +1613736 5698080 1613728 5697776 1612696 5698328 1613656 5698376 +1612840 5696712 1612736 5696520 1610904 5698784 1612696 5698328 +1613312 5697192 1613072 5696952 1612696 5698328 1613528 5697360 +1613728 5697776 1613696 5697608 1613528 5697360 1612696 5698328 +1612608 5698536 1613456 5698608 1613656 5698376 1612696 5698328 +1612608 5698536 1612896 5698800 1613456 5698608 1612696 5698328 +1613656 5698376 1613736 5698080 1612696 5698328 1613456 5698608 +1612896 5698800 1613400 5698720 1613456 5698608 1612696 5698328 +1612608 5698536 1612856 5698792 1612896 5698800 1612696 5698328 +1612896 5698800 1613456 5698608 1612696 5698328 1612856 5698792 +1612608 5698536 1612856 5698792 1612696 5698328 1610904 5698784 +1612608 5698536 1612712 5698808 1612856 5698792 1612696 5698328 +1613456 5698608 1613648 5698408 1613656 5698376 1612696 5698328 +1613456 5698608 1613656 5698376 1612696 5698328 1612896 5698800 +1613656 5698376 1613704 5698312 1613736 5698080 1612696 5698328 +1612696 5698328 1612656 5698064 1610904 5698784 1612608 5698536 +1610904 5698784 1610928 5698816 1612608 5698536 1612656 5698064 +1612840 5696712 1612656 5698064 1612696 5698328 1613008 5696896 +1612696 5698328 1613072 5696952 1613008 5696896 1612656 5698064 +1613008 5696896 1612840 5696712 1612656 5698064 1613072 5696952 +1612696 5698328 1613312 5697192 1613072 5696952 1612656 5698064 +1613072 5696952 1613008 5696896 1612656 5698064 1613312 5697192 +1612840 5696712 1610904 5698784 1612656 5698064 1613008 5696896 +1610904 5698784 1612656 5698064 1612840 5696712 1612736 5696520 +1612656 5698064 1613008 5696896 1612840 5696712 1612736 5696520 +1610904 5698784 1612656 5698064 1612736 5696520 1610848 5698768 +1612736 5696520 1612560 5696144 1610848 5698768 1612656 5698064 +1612656 5698064 1612840 5696712 1612736 5696520 1610848 5698768 +1612696 5698328 1613312 5697192 1612656 5698064 1612608 5698536 +1612696 5698328 1613528 5697360 1613312 5697192 1612656 5698064 +1612696 5698328 1613728 5697776 1613528 5697360 1612656 5698064 +1613312 5697192 1613072 5696952 1612656 5698064 1613528 5697360 +1612696 5698328 1613736 5698080 1613728 5697776 1612656 5698064 +1613728 5697776 1613528 5697360 1612656 5698064 1613736 5698080 +1612696 5698328 1613656 5698376 1613736 5698080 1612656 5698064 +1612696 5698328 1613456 5698608 1613656 5698376 1612656 5698064 +1613736 5698080 1613728 5697776 1612656 5698064 1613656 5698376 +1612696 5698328 1613656 5698376 1612656 5698064 1612608 5698536 +1613528 5697360 1613312 5697192 1612656 5698064 1613728 5697776 +1612656 5698064 1610848 5698768 1610904 5698784 1612608 5698536 +1613728 5697776 1613696 5697608 1613528 5697360 1612656 5698064 +1613728 5697776 1613696 5697608 1612656 5698064 1613736 5698080 +1613696 5697608 1613640 5697488 1613528 5697360 1612656 5698064 +1613528 5697360 1613312 5697192 1612656 5698064 1613696 5697608 +1613656 5698376 1613704 5698312 1613736 5698080 1612656 5698064 +1612840 5696712 1612672 5697912 1612656 5698064 1613008 5696896 +1612840 5696712 1612736 5696520 1612672 5697912 1613008 5696896 +1612656 5698064 1613072 5696952 1613008 5696896 1612672 5697912 +1612656 5698064 1613312 5697192 1613072 5696952 1612672 5697912 +1613072 5696952 1613008 5696896 1612672 5697912 1613312 5697192 +1612656 5698064 1613528 5697360 1613312 5697192 1612672 5697912 +1613312 5697192 1613072 5696952 1612672 5697912 1613528 5697360 +1612672 5697912 1612736 5696520 1612656 5698064 1613528 5697360 +1613008 5696896 1612840 5696712 1612672 5697912 1613072 5696952 +1612656 5698064 1612672 5697912 1612736 5696520 1610848 5698768 +1612672 5697912 1612840 5696712 1612736 5696520 1610848 5698768 +1612736 5696520 1612560 5696144 1610848 5698768 1612672 5697912 +1612656 5698064 1613528 5697360 1612672 5697912 1610848 5698768 +1612656 5698064 1612672 5697912 1610848 5698768 1610904 5698784 +1612656 5698064 1613528 5697360 1612672 5697912 1610904 5698784 +1612672 5697912 1612736 5696520 1610848 5698768 1610904 5698784 +1612656 5698064 1613696 5697608 1613528 5697360 1612672 5697912 +1613528 5697360 1613312 5697192 1612672 5697912 1613696 5697608 +1612656 5698064 1613696 5697608 1612672 5697912 1610904 5698784 +1613696 5697608 1613640 5697488 1613528 5697360 1612672 5697912 +1613528 5697360 1613312 5697192 1612672 5697912 1613640 5697488 +1613696 5697608 1613640 5697488 1612672 5697912 1612656 5698064 +1612656 5698064 1612672 5697912 1610904 5698784 1612608 5698536 +1612656 5698064 1613728 5697776 1613696 5697608 1612672 5697912 +1612656 5698064 1613736 5698080 1613728 5697776 1612672 5697912 +1612656 5698064 1613736 5698080 1612672 5697912 1610904 5698784 +1612656 5698064 1613656 5698376 1613736 5698080 1612672 5697912 +1613696 5697608 1613640 5697488 1612672 5697912 1613728 5697776 +1613728 5697776 1613696 5697608 1612672 5697912 1613736 5698080 +1612672 5697912 1612712 5697840 1613072 5696952 1613008 5696896 +1612672 5697912 1613312 5697192 1612712 5697840 1613008 5696896 +1613312 5697192 1612712 5697840 1612672 5697912 1613528 5697360 +1612712 5697840 1613008 5696896 1612672 5697912 1613528 5697360 +1612672 5697912 1613640 5697488 1613528 5697360 1612712 5697840 +1612672 5697912 1613640 5697488 1612712 5697840 1613008 5696896 +1613528 5697360 1613312 5697192 1612712 5697840 1613640 5697488 +1612672 5697912 1612712 5697840 1613008 5696896 1612840 5696712 +1612672 5697912 1613640 5697488 1612712 5697840 1612840 5696712 +1612672 5697912 1612712 5697840 1612840 5696712 1612736 5696520 +1612672 5697912 1612712 5697840 1612736 5696520 1610848 5698768 +1612672 5697912 1613640 5697488 1612712 5697840 1612736 5696520 +1612712 5697840 1613072 5696952 1613008 5696896 1612840 5696712 +1612712 5697840 1613008 5696896 1612840 5696712 1612736 5696520 +1612712 5697840 1613312 5697192 1613072 5696952 1613008 5696896 +1613312 5697192 1613072 5696952 1612712 5697840 1613528 5697360 +1612672 5697912 1613696 5697608 1613640 5697488 1612712 5697840 +1612672 5697912 1613696 5697608 1612712 5697840 1612736 5696520 +1613640 5697488 1613528 5697360 1612712 5697840 1613696 5697608 +1612672 5697912 1613728 5697776 1613696 5697608 1612712 5697840 +1612672 5697912 1613728 5697776 1612712 5697840 1612736 5696520 +1613696 5697608 1613640 5697488 1612712 5697840 1613728 5697776 +1612672 5697912 1613736 5698080 1613728 5697776 1612712 5697840 +1612672 5697912 1613736 5698080 1612712 5697840 1612736 5696520 +1612672 5697912 1612656 5698064 1613736 5698080 1612712 5697840 +1612672 5697912 1612656 5698064 1612712 5697840 1612736 5696520 +1612656 5698064 1613656 5698376 1613736 5698080 1612712 5697840 +1613728 5697776 1613696 5697608 1612712 5697840 1613736 5698080 +1613736 5698080 1613728 5697776 1612712 5697840 1612656 5698064 +1613528 5697360 1612760 5697792 1612712 5697840 1613640 5697488 +1612712 5697840 1613696 5697608 1613640 5697488 1612760 5697792 +1613640 5697488 1613528 5697360 1612760 5697792 1613696 5697608 +1612760 5697792 1613312 5697192 1612712 5697840 1613696 5697608 +1612712 5697840 1612760 5697792 1613312 5697192 1613072 5696952 +1612712 5697840 1612760 5697792 1613072 5696952 1613008 5696896 +1612712 5697840 1612760 5697792 1613008 5696896 1612840 5696712 +1612712 5697840 1612760 5697792 1612840 5696712 1612736 5696520 +1612760 5697792 1613072 5696952 1613008 5696896 1612840 5696712 +1612712 5697840 1613696 5697608 1612760 5697792 1612840 5696712 +1612760 5697792 1613312 5697192 1613072 5696952 1613008 5696896 +1612760 5697792 1613528 5697360 1613312 5697192 1613072 5696952 +1613528 5697360 1613312 5697192 1612760 5697792 1613640 5697488 +1612712 5697840 1613728 5697776 1613696 5697608 1612760 5697792 +1613696 5697608 1613640 5697488 1612760 5697792 1613728 5697776 +1612712 5697840 1613728 5697776 1612760 5697792 1612840 5696712 +1612712 5697840 1613736 5698080 1613728 5697776 1612760 5697792 +1612712 5697840 1613736 5698080 1612760 5697792 1612840 5696712 +1613728 5697776 1613696 5697608 1612760 5697792 1613736 5698080 +1612712 5697840 1612656 5698064 1613736 5698080 1612760 5697792 +1612712 5697840 1612672 5697912 1612656 5698064 1612760 5697792 +1612712 5697840 1612672 5697912 1612760 5697792 1612840 5696712 +1612656 5698064 1613656 5698376 1613736 5698080 1612760 5697792 +1612656 5698064 1612696 5698328 1613656 5698376 1612760 5697792 +1613736 5698080 1613728 5697776 1612760 5697792 1613656 5698376 +1612656 5698064 1613656 5698376 1612760 5697792 1612672 5697912 +1613656 5698376 1613704 5698312 1613736 5698080 1612760 5697792 +1612760 5697792 1612880 5697688 1613312 5697192 1613072 5696952 +1612760 5697792 1612880 5697688 1613072 5696952 1613008 5696896 +1612760 5697792 1612880 5697688 1613008 5696896 1612840 5696712 +1612760 5697792 1612880 5697688 1612840 5696712 1612712 5697840 +1612880 5697688 1613072 5696952 1613008 5696896 1612840 5696712 +1612880 5697688 1613312 5697192 1613072 5696952 1613008 5696896 +1612760 5697792 1613528 5697360 1612880 5697688 1612840 5696712 +1613528 5697360 1612880 5697688 1612760 5697792 1613640 5697488 +1612760 5697792 1613696 5697608 1613640 5697488 1612880 5697688 +1612760 5697792 1613728 5697776 1613696 5697608 1612880 5697688 +1613696 5697608 1613640 5697488 1612880 5697688 1613728 5697776 +1612880 5697688 1612840 5696712 1612760 5697792 1613728 5697776 +1613640 5697488 1613528 5697360 1612880 5697688 1613696 5697608 +1612880 5697688 1613528 5697360 1613312 5697192 1613072 5696952 +1613528 5697360 1613312 5697192 1612880 5697688 1613640 5697488 +1612760 5697792 1613736 5698080 1613728 5697776 1612880 5697688 +1613728 5697776 1613696 5697608 1612880 5697688 1613736 5698080 +1612760 5697792 1613736 5698080 1612880 5697688 1612840 5696712 +1612760 5697792 1613656 5698376 1613736 5698080 1612880 5697688 +1612760 5697792 1613656 5698376 1612880 5697688 1612840 5696712 +1613736 5698080 1613728 5697776 1612880 5697688 1613656 5698376 +1612760 5697792 1612656 5698064 1613656 5698376 1612880 5697688 +1612760 5697792 1612656 5698064 1612880 5697688 1612840 5696712 +1612656 5698064 1612696 5698328 1613656 5698376 1612880 5697688 +1612696 5698328 1613456 5698608 1613656 5698376 1612880 5697688 +1612656 5698064 1612696 5698328 1612880 5697688 1612760 5697792 +1613656 5698376 1613736 5698080 1612880 5697688 1612696 5698328 +1612760 5697792 1612672 5697912 1612656 5698064 1612880 5697688 +1613656 5698376 1613704 5698312 1613736 5698080 1612880 5697688 +1612880 5697688 1612936 5697608 1613072 5696952 1613008 5696896 +1612880 5697688 1612936 5697608 1613008 5696896 1612840 5696712 +1612880 5697688 1612936 5697608 1612840 5696712 1612760 5697792 +1612840 5696712 1612712 5697840 1612760 5697792 1612936 5697608 +1612936 5697608 1613008 5696896 1612840 5696712 1612760 5697792 +1612936 5697608 1613072 5696952 1613008 5696896 1612840 5696712 +1613312 5697192 1612936 5697608 1612880 5697688 1613528 5697360 +1612880 5697688 1613528 5697360 1612936 5697608 1612760 5697792 +1612880 5697688 1613640 5697488 1613528 5697360 1612936 5697608 +1612880 5697688 1613696 5697608 1613640 5697488 1612936 5697608 +1612880 5697688 1613728 5697776 1613696 5697608 1612936 5697608 +1612880 5697688 1613736 5698080 1613728 5697776 1612936 5697608 +1613696 5697608 1613640 5697488 1612936 5697608 1613728 5697776 +1613528 5697360 1613312 5697192 1612936 5697608 1613640 5697488 +1612880 5697688 1613728 5697776 1612936 5697608 1612760 5697792 +1613640 5697488 1613528 5697360 1612936 5697608 1613696 5697608 +1612936 5697608 1613312 5697192 1613072 5696952 1613008 5696896 +1613312 5697192 1613072 5696952 1612936 5697608 1613528 5697360 +1612936 5697608 1612928 5697512 1612840 5696712 1612760 5697792 +1612840 5696712 1612712 5697840 1612760 5697792 1612928 5697512 +1612840 5696712 1612736 5696520 1612712 5697840 1612928 5697512 +1612936 5697608 1612928 5697512 1612760 5697792 1612880 5697688 +1612760 5697792 1612880 5697688 1612928 5697512 1612712 5697840 +1613008 5696896 1612928 5697512 1612936 5697608 1613072 5696952 +1612936 5697608 1613312 5697192 1613072 5696952 1612928 5697512 +1613072 5696952 1613008 5696896 1612928 5697512 1613312 5697192 +1612936 5697608 1613312 5697192 1612928 5697512 1612880 5697688 +1612936 5697608 1613528 5697360 1613312 5697192 1612928 5697512 +1612936 5697608 1613640 5697488 1613528 5697360 1612928 5697512 +1613312 5697192 1613072 5696952 1612928 5697512 1613528 5697360 +1612936 5697608 1613528 5697360 1612928 5697512 1612880 5697688 +1612928 5697512 1613008 5696896 1612840 5696712 1612712 5697840 +1613008 5696896 1612840 5696712 1612928 5697512 1613072 5696952 +1612928 5697512 1612872 5697288 1612712 5697840 1612760 5697792 +1612712 5697840 1612872 5697288 1612840 5696712 1612736 5696520 +1612712 5697840 1612872 5697288 1612736 5696520 1612672 5697912 +1612736 5696520 1610848 5698768 1612672 5697912 1612872 5697288 +1612872 5697288 1612840 5696712 1612736 5696520 1612672 5697912 +1612928 5697512 1612872 5697288 1612760 5697792 1612880 5697688 +1612840 5696712 1612872 5697288 1612928 5697512 1613008 5696896 +1612928 5697512 1613008 5696896 1612872 5697288 1612760 5697792 +1612928 5697512 1613072 5696952 1613008 5696896 1612872 5697288 +1612928 5697512 1613312 5697192 1613072 5696952 1612872 5697288 +1612928 5697512 1613528 5697360 1613312 5697192 1612872 5697288 +1612928 5697512 1613312 5697192 1612872 5697288 1612760 5697792 +1613072 5696952 1613008 5696896 1612872 5697288 1613312 5697192 +1612872 5697288 1612672 5697912 1612712 5697840 1612760 5697792 +1613008 5696896 1612840 5696712 1612872 5697288 1613072 5696952 +1612872 5697288 1613008 5696896 1612840 5696712 1612736 5696520 +1612672 5697912 1612792 5697112 1612736 5696520 1610848 5698768 +1612872 5697288 1612792 5697112 1612672 5697912 1612712 5697840 +1612736 5696520 1612560 5696144 1610848 5698768 1612792 5697112 +1610848 5698768 1612672 5697912 1612792 5697112 1612560 5696144 +1612736 5696520 1612792 5697112 1612872 5697288 1612840 5696712 +1612672 5697912 1612792 5697112 1610848 5698768 1610904 5698784 +1612560 5696144 1612248 5695760 1610848 5698768 1612792 5697112 +1612248 5695760 1612224 5695736 1610848 5698768 1612792 5697112 +1610848 5698768 1612672 5697912 1612792 5697112 1612248 5695760 +1612560 5696144 1612248 5695760 1612792 5697112 1612736 5696520 +1612560 5696144 1612480 5696016 1612248 5695760 1612792 5697112 +1612872 5697288 1612792 5697112 1612712 5697840 1612760 5697792 +1612872 5697288 1613008 5696896 1612840 5696712 1612792 5697112 +1612840 5696712 1612736 5696520 1612792 5697112 1613008 5696896 +1612872 5697288 1613072 5696952 1613008 5696896 1612792 5697112 +1612872 5697288 1613312 5697192 1613072 5696952 1612792 5697112 +1613008 5696896 1612840 5696712 1612792 5697112 1613072 5696952 +1612872 5697288 1613072 5696952 1612792 5697112 1612712 5697840 +1612672 5697912 1612712 5697840 1612792 5697112 1610848 5698768 +1612792 5697112 1612840 5696712 1612736 5696520 1612560 5696144 +1610848 5698768 1612720 5697008 1612248 5695760 1612224 5695736 +1610848 5698768 1612720 5697008 1612224 5695736 1612192 5695688 +1612792 5697112 1612720 5697008 1610848 5698768 1612672 5697912 +1610848 5698768 1610904 5698784 1612672 5697912 1612720 5697008 +1612672 5697912 1612792 5697112 1612720 5697008 1610904 5698784 +1612248 5695760 1612720 5697008 1612792 5697112 1612560 5696144 +1612792 5697112 1612736 5696520 1612560 5696144 1612720 5697008 +1612248 5695760 1612720 5697008 1612560 5696144 1612480 5696016 +1612560 5696144 1612480 5696016 1612720 5697008 1612736 5696520 +1610904 5698784 1612656 5698064 1612672 5697912 1612720 5697008 +1612792 5697112 1612720 5697008 1612672 5697912 1612712 5697840 +1612720 5697008 1610904 5698784 1612672 5697912 1612712 5697840 +1612792 5697112 1612720 5697008 1612712 5697840 1612872 5697288 +1612792 5697112 1612736 5696520 1612720 5697008 1612712 5697840 +1612792 5697112 1612840 5696712 1612736 5696520 1612720 5697008 +1612736 5696520 1612560 5696144 1612720 5697008 1612840 5696712 +1612792 5697112 1613008 5696896 1612840 5696712 1612720 5697008 +1612792 5697112 1613072 5696952 1613008 5696896 1612720 5697008 +1612792 5697112 1613008 5696896 1612720 5697008 1612712 5697840 +1612840 5696712 1612736 5696520 1612720 5697008 1613008 5696896 +1610848 5698768 1610904 5698784 1612720 5697008 1612224 5695736 +1612720 5697008 1612480 5696016 1612248 5695760 1612224 5695736 +1610848 5698768 1612544 5696864 1612224 5695736 1612192 5695688 +1612224 5695736 1612544 5696864 1612720 5697008 1612248 5695760 +1612720 5697008 1612544 5696864 1610848 5698768 1610904 5698784 +1612720 5697008 1612544 5696864 1610904 5698784 1612672 5697912 +1612720 5697008 1612544 5696864 1612672 5697912 1612712 5697840 +1612544 5696864 1610904 5698784 1612672 5697912 1612712 5697840 +1610904 5698784 1612656 5698064 1612672 5697912 1612544 5696864 +1612720 5697008 1612544 5696864 1612712 5697840 1612792 5697112 +1612544 5696864 1610848 5698768 1610904 5698784 1612672 5697912 +1612544 5696864 1612712 5697840 1612720 5697008 1612248 5695760 +1612720 5697008 1612480 5696016 1612248 5695760 1612544 5696864 +1612248 5695760 1612224 5695736 1612544 5696864 1612480 5696016 +1612720 5697008 1612560 5696144 1612480 5696016 1612544 5696864 +1612720 5697008 1612736 5696520 1612560 5696144 1612544 5696864 +1612720 5697008 1612840 5696712 1612736 5696520 1612544 5696864 +1612560 5696144 1612480 5696016 1612544 5696864 1612736 5696520 +1612736 5696520 1612560 5696144 1612544 5696864 1612840 5696712 +1612720 5697008 1613008 5696896 1612840 5696712 1612544 5696864 +1612720 5697008 1612840 5696712 1612544 5696864 1612712 5697840 +1612480 5696016 1612248 5695760 1612544 5696864 1612560 5696144 +1612544 5696864 1612224 5695736 1610848 5698768 1610904 5698784 +1612224 5695736 1610848 5698768 1612544 5696864 1612248 5695760 +1610848 5698768 1612496 5696752 1612224 5695736 1612192 5695688 +1610848 5698768 1612496 5696752 1612192 5695688 1610784 5698784 +1612544 5696864 1612496 5696752 1610848 5698768 1610904 5698784 +1612224 5695736 1612496 5696752 1612544 5696864 1612248 5695760 +1612544 5696864 1612480 5696016 1612248 5695760 1612496 5696752 +1612544 5696864 1612560 5696144 1612480 5696016 1612496 5696752 +1612480 5696016 1612248 5695760 1612496 5696752 1612560 5696144 +1612544 5696864 1612736 5696520 1612560 5696144 1612496 5696752 +1612544 5696864 1612840 5696712 1612736 5696520 1612496 5696752 +1612544 5696864 1612720 5697008 1612840 5696712 1612496 5696752 +1612736 5696520 1612560 5696144 1612496 5696752 1612840 5696712 +1612560 5696144 1612480 5696016 1612496 5696752 1612736 5696520 +1612496 5696752 1610848 5698768 1612544 5696864 1612840 5696712 +1612248 5695760 1612224 5695736 1612496 5696752 1612480 5696016 +1610848 5698768 1612544 5696864 1612496 5696752 1612192 5695688 +1612496 5696752 1612248 5695760 1612224 5695736 1612192 5695688 +1612496 5696752 1612560 5696144 1612480 5696016 1612488 5696720 +1612496 5696752 1612736 5696520 1612560 5696144 1612488 5696720 +1612560 5696144 1612480 5696016 1612488 5696720 1612736 5696520 +1612496 5696752 1612840 5696712 1612736 5696520 1612488 5696720 +1612496 5696752 1612544 5696864 1612840 5696712 1612488 5696720 +1612736 5696520 1612560 5696144 1612488 5696720 1612840 5696712 +1612496 5696752 1612840 5696712 1612488 5696720 1612224 5695736 +1612480 5696016 1612248 5695760 1612488 5696720 1612560 5696144 +1612496 5696752 1612488 5696720 1612224 5695736 1612192 5695688 +1612496 5696752 1612488 5696720 1612192 5695688 1610848 5698768 +1612192 5695688 1610784 5698784 1610848 5698768 1612488 5696720 +1612496 5696752 1612840 5696712 1612488 5696720 1610848 5698768 +1612496 5696752 1612488 5696720 1610848 5698768 1612544 5696864 +1612488 5696720 1612224 5695736 1612192 5695688 1610848 5698768 +1612488 5696720 1612248 5695760 1612224 5695736 1612192 5695688 +1612488 5696720 1612360 5696440 1610848 5698768 1612496 5696752 +1610848 5698768 1612360 5696440 1612192 5695688 1610784 5698784 +1612192 5695688 1612176 5695584 1610784 5698784 1612360 5696440 +1610848 5698768 1612544 5696864 1612496 5696752 1612360 5696440 +1612192 5695688 1612360 5696440 1612488 5696720 1612224 5695736 +1612488 5696720 1612248 5695760 1612224 5695736 1612360 5696440 +1612224 5695736 1612192 5695688 1612360 5696440 1612248 5695760 +1612488 5696720 1612480 5696016 1612248 5695760 1612360 5696440 +1612488 5696720 1612560 5696144 1612480 5696016 1612360 5696440 +1612488 5696720 1612736 5696520 1612560 5696144 1612360 5696440 +1612488 5696720 1612840 5696712 1612736 5696520 1612360 5696440 +1612560 5696144 1612480 5696016 1612360 5696440 1612736 5696520 +1612248 5695760 1612224 5695736 1612360 5696440 1612480 5696016 +1612480 5696016 1612248 5695760 1612360 5696440 1612560 5696144 +1612488 5696720 1612736 5696520 1612360 5696440 1612496 5696752 +1612360 5696440 1610784 5698784 1610848 5698768 1612496 5696752 +1612360 5696440 1612224 5695736 1612192 5695688 1610784 5698784 +1610784 5698784 1612272 5696312 1612192 5695688 1612176 5695584 +1612360 5696440 1612272 5696312 1610784 5698784 1610848 5698768 +1612360 5696440 1612272 5696312 1610848 5698768 1612496 5696752 +1612360 5696440 1612272 5696312 1612496 5696752 1612488 5696720 +1612272 5696312 1610784 5698784 1610848 5698768 1612496 5696752 +1610848 5698768 1612544 5696864 1612496 5696752 1612272 5696312 +1612360 5696440 1612192 5695688 1612272 5696312 1612496 5696752 +1612192 5695688 1612272 5696312 1612360 5696440 1612224 5695736 +1612360 5696440 1612248 5695760 1612224 5695736 1612272 5696312 +1612360 5696440 1612480 5696016 1612248 5695760 1612272 5696312 +1612248 5695760 1612224 5695736 1612272 5696312 1612480 5696016 +1612360 5696440 1612560 5696144 1612480 5696016 1612272 5696312 +1612360 5696440 1612736 5696520 1612560 5696144 1612272 5696312 +1612480 5696016 1612248 5695760 1612272 5696312 1612560 5696144 +1612272 5696312 1612496 5696752 1612360 5696440 1612560 5696144 +1612224 5695736 1612192 5695688 1612272 5696312 1612248 5695760 +1612272 5696312 1612192 5695688 1610784 5698784 1610848 5698768 +1612192 5695688 1610784 5698784 1612272 5696312 1612224 5695736 +1610784 5698784 1612144 5696176 1612192 5695688 1612176 5695584 +1610784 5698784 1612144 5696176 1612176 5695584 1608624 5699288 +1612144 5696176 1612192 5695688 1612176 5695584 1608624 5699288 +1612176 5695584 1612128 5695248 1608624 5699288 1612144 5696176 +1608624 5699288 1610784 5698784 1612144 5696176 1612128 5695248 +1612176 5695584 1612128 5695248 1612144 5696176 1612192 5695688 +1612176 5695584 1612216 5695400 1612128 5695248 1612144 5696176 +1612128 5695248 1612120 5695192 1608624 5699288 1612144 5696176 +1610784 5698784 1612144 5696176 1608624 5699288 1610736 5698824 +1612272 5696312 1612144 5696176 1610784 5698784 1610848 5698768 +1612272 5696312 1612144 5696176 1610848 5698768 1612496 5696752 +1610848 5698768 1612544 5696864 1612496 5696752 1612144 5696176 +1612272 5696312 1612144 5696176 1612496 5696752 1612360 5696440 +1612496 5696752 1612488 5696720 1612360 5696440 1612144 5696176 +1612144 5696176 1610848 5698768 1612496 5696752 1612360 5696440 +1612144 5696176 1610784 5698784 1610848 5698768 1612496 5696752 +1612272 5696312 1612192 5695688 1612144 5696176 1612360 5696440 +1612192 5695688 1612144 5696176 1612272 5696312 1612224 5695736 +1612272 5696312 1612248 5695760 1612224 5695736 1612144 5696176 +1612272 5696312 1612480 5696016 1612248 5695760 1612144 5696176 +1612272 5696312 1612560 5696144 1612480 5696016 1612144 5696176 +1612248 5695760 1612224 5695736 1612144 5696176 1612480 5696016 +1612144 5696176 1612360 5696440 1612272 5696312 1612480 5696016 +1612224 5695736 1612192 5695688 1612144 5696176 1612248 5695760 +1610784 5698784 1610848 5698768 1612144 5696176 1608624 5699288 +1612144 5696176 1612224 5695736 1612192 5695688 1612176 5695584 +1612144 5696176 1611704 5695976 1608624 5699288 1610784 5698784 +1612128 5695248 1611704 5695976 1612144 5696176 1612176 5695584 +1612144 5696176 1612192 5695688 1612176 5695584 1611704 5695976 +1612128 5695248 1611704 5695976 1612176 5695584 1612216 5695400 +1612176 5695584 1612128 5695248 1611704 5695976 1612192 5695688 +1608624 5699288 1611704 5695976 1612128 5695248 1612120 5695192 +1608624 5699288 1611704 5695976 1612120 5695192 1608544 5699312 +1611704 5695976 1612128 5695248 1612120 5695192 1608544 5699312 +1612120 5695192 1602224 5696056 1608544 5699312 1611704 5695976 +1608544 5699312 1608624 5699288 1611704 5695976 1602224 5696056 +1612120 5695192 1608736 5689448 1602224 5696056 1611704 5695976 +1608736 5689448 1602200 5696008 1602224 5696056 1611704 5695976 +1612120 5695192 1608736 5689448 1611704 5695976 1612128 5695248 +1602224 5696056 1608544 5699312 1611704 5695976 1608736 5689448 +1608624 5699288 1610736 5698824 1610784 5698784 1611704 5695976 +1612120 5695192 1608840 5689480 1608736 5689448 1611704 5695976 +1608736 5689448 1602224 5696056 1611704 5695976 1608840 5689480 +1612120 5695192 1608840 5689480 1611704 5695976 1612128 5695248 +1612120 5695192 1612136 5695120 1608840 5689480 1611704 5695976 +1612136 5695120 1612400 5693248 1608840 5689480 1611704 5695976 +1612120 5695192 1612136 5695120 1611704 5695976 1612128 5695248 +1608840 5689480 1608736 5689448 1611704 5695976 1612136 5695120 +1602224 5696056 1602504 5696992 1608544 5699312 1611704 5695976 +1612144 5696176 1611704 5695976 1610784 5698784 1610848 5698768 +1611704 5695976 1608624 5699288 1610784 5698784 1610848 5698768 +1612144 5696176 1611704 5695976 1610848 5698768 1612496 5696752 +1612144 5696176 1611704 5695976 1612496 5696752 1612360 5696440 +1612496 5696752 1612488 5696720 1612360 5696440 1611704 5695976 +1610848 5698768 1612544 5696864 1612496 5696752 1611704 5695976 +1612144 5696176 1611704 5695976 1612360 5696440 1612272 5696312 +1611704 5695976 1612496 5696752 1612360 5696440 1612272 5696312 +1611704 5695976 1610848 5698768 1612496 5696752 1612360 5696440 +1611704 5695976 1610784 5698784 1610848 5698768 1612496 5696752 +1612144 5696176 1612192 5695688 1611704 5695976 1612272 5696312 +1612144 5696176 1612224 5695736 1612192 5695688 1611704 5695976 +1612192 5695688 1612176 5695584 1611704 5695976 1612224 5695736 +1612144 5696176 1612248 5695760 1612224 5695736 1611704 5695976 +1612144 5696176 1612224 5695736 1611704 5695976 1612272 5696312 +1611704 5695976 1608544 5699312 1608624 5699288 1610784 5698784 +1612128 5695248 1612120 5695192 1611704 5695976 1612176 5695584 +1602224 5696056 1611680 5695944 1608736 5689448 1602200 5696008 +1608736 5689448 1611680 5695944 1611704 5695976 1608840 5689480 +1611704 5695976 1611680 5695944 1602224 5696056 1608544 5699312 +1611704 5695976 1611680 5695944 1608544 5699312 1608624 5699288 +1611680 5695944 1602224 5696056 1608544 5699312 1608624 5699288 +1611704 5695976 1612136 5695120 1608840 5689480 1611680 5695944 +1612136 5695120 1612400 5693248 1608840 5689480 1611680 5695944 +1612136 5695120 1612440 5693432 1612400 5693248 1611680 5695944 +1608840 5689480 1608736 5689448 1611680 5695944 1612400 5693248 +1612400 5693248 1609280 5689560 1608840 5689480 1611680 5695944 +1612136 5695120 1612400 5693248 1611680 5695944 1611704 5695976 +1611704 5695976 1612120 5695192 1612136 5695120 1611680 5695944 +1611704 5695976 1612128 5695248 1612120 5695192 1611680 5695944 +1612136 5695120 1612400 5693248 1611680 5695944 1612120 5695192 +1612120 5695192 1612136 5695120 1611680 5695944 1612128 5695248 +1602224 5696056 1602504 5696992 1608544 5699312 1611680 5695944 +1611704 5695976 1611680 5695944 1608624 5699288 1610784 5698784 +1611704 5695976 1611680 5695944 1610784 5698784 1610848 5698768 +1611680 5695944 1608544 5699312 1608624 5699288 1610784 5698784 +1608624 5699288 1610736 5698824 1610784 5698784 1611680 5695944 +1611680 5695944 1610784 5698784 1611704 5695976 1612128 5695248 +1611704 5695976 1612176 5695584 1612128 5695248 1611680 5695944 +1612176 5695584 1612216 5695400 1612128 5695248 1611680 5695944 +1611704 5695976 1612192 5695688 1612176 5695584 1611680 5695944 +1611704 5695976 1612224 5695736 1612192 5695688 1611680 5695944 +1612128 5695248 1612120 5695192 1611680 5695944 1612176 5695584 +1611704 5695976 1612192 5695688 1611680 5695944 1610784 5698784 +1612176 5695584 1612128 5695248 1611680 5695944 1612192 5695688 +1608736 5689448 1602224 5696056 1611680 5695944 1608840 5689480 +1611680 5695944 1608736 5689448 1602224 5696056 1608544 5699312 +1602224 5696056 1611592 5695912 1608736 5689448 1602200 5696008 +1608736 5689448 1611592 5695912 1611680 5695944 1608840 5689480 +1608736 5689448 1602224 5696056 1611592 5695912 1608840 5689480 +1611680 5695944 1612400 5693248 1608840 5689480 1611592 5695912 +1611680 5695944 1612136 5695120 1612400 5693248 1611592 5695912 +1612136 5695120 1612440 5693432 1612400 5693248 1611592 5695912 +1612400 5693248 1608840 5689480 1611592 5695912 1612136 5695120 +1612400 5693248 1609280 5689560 1608840 5689480 1611592 5695912 +1612400 5693248 1612408 5693168 1609280 5689560 1611592 5695912 +1612400 5693248 1609280 5689560 1611592 5695912 1612136 5695120 +1609280 5689560 1609232 5689536 1608840 5689480 1611592 5695912 +1611680 5695944 1612120 5695192 1612136 5695120 1611592 5695912 +1612136 5695120 1612400 5693248 1611592 5695912 1612120 5695192 +1611680 5695944 1612128 5695248 1612120 5695192 1611592 5695912 +1611680 5695944 1612176 5695584 1612128 5695248 1611592 5695912 +1612176 5695584 1612216 5695400 1612128 5695248 1611592 5695912 +1612120 5695192 1612136 5695120 1611592 5695912 1612128 5695248 +1612128 5695248 1612120 5695192 1611592 5695912 1612176 5695584 +1611680 5695944 1612192 5695688 1612176 5695584 1611592 5695912 +1611592 5695912 1602224 5696056 1611680 5695944 1612176 5695584 +1608840 5689480 1608736 5689448 1611592 5695912 1609280 5689560 +1611680 5695944 1611592 5695912 1602224 5696056 1608544 5699312 +1611680 5695944 1611592 5695912 1608544 5699312 1608624 5699288 +1611680 5695944 1611592 5695912 1608624 5699288 1610784 5698784 +1611592 5695912 1608544 5699312 1608624 5699288 1610784 5698784 +1608624 5699288 1610736 5698824 1610784 5698784 1611592 5695912 +1602224 5696056 1602504 5696992 1608544 5699312 1611592 5695912 +1611680 5695944 1611592 5695912 1610784 5698784 1611704 5695976 +1610784 5698784 1610848 5698768 1611704 5695976 1611592 5695912 +1611592 5695912 1608624 5699288 1610784 5698784 1610848 5698768 +1610848 5698768 1612496 5696752 1611704 5695976 1611592 5695912 +1611704 5695976 1611680 5695944 1611592 5695912 1610848 5698768 +1611680 5695944 1612176 5695584 1611592 5695912 1611704 5695976 +1611592 5695912 1608736 5689448 1602224 5696056 1608544 5699312 +1611592 5695912 1602224 5696056 1608544 5699312 1608624 5699288 +1608736 5689448 1611560 5695880 1611592 5695912 1608840 5689480 +1611560 5695880 1602224 5696056 1611592 5695912 1608840 5689480 +1608736 5689448 1602224 5696056 1611560 5695880 1608840 5689480 +1602224 5696056 1611560 5695880 1608736 5689448 1602200 5696008 +1611592 5695912 1609280 5689560 1608840 5689480 1611560 5695880 +1611592 5695912 1609280 5689560 1611560 5695880 1602224 5696056 +1608840 5689480 1608736 5689448 1611560 5695880 1609280 5689560 +1611592 5695912 1612400 5693248 1609280 5689560 1611560 5695880 +1611592 5695912 1612400 5693248 1611560 5695880 1602224 5696056 +1612400 5693248 1612408 5693168 1609280 5689560 1611560 5695880 +1611592 5695912 1612136 5695120 1612400 5693248 1611560 5695880 +1611592 5695912 1612136 5695120 1611560 5695880 1602224 5696056 +1612136 5695120 1612440 5693432 1612400 5693248 1611560 5695880 +1611592 5695912 1612120 5695192 1612136 5695120 1611560 5695880 +1611592 5695912 1612120 5695192 1611560 5695880 1602224 5696056 +1612136 5695120 1612400 5693248 1611560 5695880 1612120 5695192 +1612400 5693248 1609280 5689560 1611560 5695880 1612136 5695120 +1609280 5689560 1609232 5689536 1608840 5689480 1611560 5695880 +1611592 5695912 1612128 5695248 1612120 5695192 1611560 5695880 +1611592 5695912 1612128 5695248 1611560 5695880 1602224 5696056 +1612120 5695192 1612136 5695120 1611560 5695880 1612128 5695248 +1611592 5695912 1612176 5695584 1612128 5695248 1611560 5695880 +1611592 5695912 1612176 5695584 1611560 5695880 1602224 5696056 +1612176 5695584 1612216 5695400 1612128 5695248 1611560 5695880 +1611592 5695912 1611680 5695944 1612176 5695584 1611560 5695880 +1611592 5695912 1611680 5695944 1611560 5695880 1602224 5696056 +1612128 5695248 1612120 5695192 1611560 5695880 1612176 5695584 +1612176 5695584 1612128 5695248 1611560 5695880 1611680 5695944 +1611680 5695944 1612192 5695688 1612176 5695584 1611560 5695880 +1609280 5689560 1608840 5689480 1611560 5695880 1612400 5693248 +1611592 5695912 1611560 5695880 1602224 5696056 1608544 5699312 +1611592 5695912 1611680 5695944 1611560 5695880 1608544 5699312 +1611560 5695880 1608736 5689448 1602224 5696056 1608544 5699312 +1602224 5696056 1602504 5696992 1608544 5699312 1611560 5695880 +1611592 5695912 1611560 5695880 1608544 5699312 1608624 5699288 +1611592 5695912 1611680 5695944 1611560 5695880 1608624 5699288 +1611592 5695912 1611560 5695880 1608624 5699288 1610784 5698784 +1611592 5695912 1611680 5695944 1611560 5695880 1610784 5698784 +1611592 5695912 1611560 5695880 1610784 5698784 1610848 5698768 +1608624 5699288 1610736 5698824 1610784 5698784 1611560 5695880 +1611560 5695880 1602224 5696056 1608544 5699312 1608624 5699288 +1611560 5695880 1608544 5699312 1608624 5699288 1610784 5698784 +1611560 5695880 1611464 5695816 1602224 5696056 1608544 5699312 +1611560 5695880 1608736 5689448 1611464 5695816 1608544 5699312 +1608736 5689448 1611464 5695816 1611560 5695880 1608840 5689480 +1611560 5695880 1609280 5689560 1608840 5689480 1611464 5695816 +1611464 5695816 1608544 5699312 1611560 5695880 1609280 5689560 +1608840 5689480 1608736 5689448 1611464 5695816 1609280 5689560 +1611464 5695816 1608736 5689448 1602224 5696056 1608544 5699312 +1608736 5689448 1602224 5696056 1611464 5695816 1608840 5689480 +1602224 5696056 1611464 5695816 1608736 5689448 1602200 5696008 +1609280 5689560 1609232 5689536 1608840 5689480 1611464 5695816 +1602224 5696056 1602504 5696992 1608544 5699312 1611464 5695816 +1611560 5695880 1612400 5693248 1609280 5689560 1611464 5695816 +1609280 5689560 1608840 5689480 1611464 5695816 1612400 5693248 +1611560 5695880 1612400 5693248 1611464 5695816 1608544 5699312 +1612400 5693248 1612408 5693168 1609280 5689560 1611464 5695816 +1611560 5695880 1612136 5695120 1612400 5693248 1611464 5695816 +1611560 5695880 1612136 5695120 1611464 5695816 1608544 5699312 +1612136 5695120 1612440 5693432 1612400 5693248 1611464 5695816 +1612136 5695120 1612160 5695080 1612440 5693432 1611464 5695816 +1612440 5693432 1612400 5693248 1611464 5695816 1612160 5695080 +1611560 5695880 1612120 5695192 1612136 5695120 1611464 5695816 +1611560 5695880 1612120 5695192 1611464 5695816 1608544 5699312 +1611560 5695880 1612128 5695248 1612120 5695192 1611464 5695816 +1611560 5695880 1612128 5695248 1611464 5695816 1608544 5699312 +1612120 5695192 1612136 5695120 1611464 5695816 1612128 5695248 +1612136 5695120 1612160 5695080 1611464 5695816 1612120 5695192 +1612160 5695080 1612504 5693584 1612440 5693432 1611464 5695816 +1611560 5695880 1612176 5695584 1612128 5695248 1611464 5695816 +1611560 5695880 1612176 5695584 1611464 5695816 1608544 5699312 +1612128 5695248 1612120 5695192 1611464 5695816 1612176 5695584 +1612176 5695584 1612216 5695400 1612128 5695248 1611464 5695816 +1611560 5695880 1611680 5695944 1612176 5695584 1611464 5695816 +1612400 5693248 1609280 5689560 1611464 5695816 1612440 5693432 +1611560 5695880 1611464 5695816 1608544 5699312 1608624 5699288 +1611464 5695816 1602224 5696056 1608544 5699312 1608624 5699288 +1611560 5695880 1612176 5695584 1611464 5695816 1608624 5699288 +1611560 5695880 1611464 5695816 1608624 5699288 1610784 5698784 +1611560 5695880 1612176 5695584 1611464 5695816 1610784 5698784 +1611560 5695880 1611464 5695816 1610784 5698784 1611592 5695912 +1611560 5695880 1612176 5695584 1611464 5695816 1611592 5695912 +1610784 5698784 1610848 5698768 1611592 5695912 1611464 5695816 +1610848 5698768 1611704 5695976 1611592 5695912 1611464 5695816 +1611592 5695912 1611560 5695880 1611464 5695816 1610848 5698768 +1608624 5699288 1610736 5698824 1610784 5698784 1611464 5695816 +1611464 5695816 1608544 5699312 1608624 5699288 1610784 5698784 +1611464 5695816 1608624 5699288 1610784 5698784 1610848 5698768 +1611464 5695816 1611336 5695680 1602224 5696056 1608544 5699312 +1611464 5695816 1611336 5695680 1608544 5699312 1608624 5699288 +1611336 5695680 1602224 5696056 1608544 5699312 1608624 5699288 +1611464 5695816 1608736 5689448 1611336 5695680 1608624 5699288 +1608736 5689448 1611336 5695680 1611464 5695816 1608840 5689480 +1611464 5695816 1609280 5689560 1608840 5689480 1611336 5695680 +1611464 5695816 1612400 5693248 1609280 5689560 1611336 5695680 +1609280 5689560 1608840 5689480 1611336 5695680 1612400 5693248 +1611336 5695680 1608624 5699288 1611464 5695816 1612400 5693248 +1608840 5689480 1608736 5689448 1611336 5695680 1609280 5689560 +1611336 5695680 1608736 5689448 1602224 5696056 1608544 5699312 +1608736 5689448 1602224 5696056 1611336 5695680 1608840 5689480 +1602224 5696056 1611336 5695680 1608736 5689448 1602200 5696008 +1612400 5693248 1612408 5693168 1609280 5689560 1611336 5695680 +1609280 5689560 1609232 5689536 1608840 5689480 1611336 5695680 +1602224 5696056 1602504 5696992 1608544 5699312 1611336 5695680 +1611464 5695816 1612440 5693432 1612400 5693248 1611336 5695680 +1612400 5693248 1609280 5689560 1611336 5695680 1612440 5693432 +1611464 5695816 1612440 5693432 1611336 5695680 1608624 5699288 +1611464 5695816 1612160 5695080 1612440 5693432 1611336 5695680 +1611464 5695816 1612160 5695080 1611336 5695680 1608624 5699288 +1611464 5695816 1612136 5695120 1612160 5695080 1611336 5695680 +1611464 5695816 1612136 5695120 1611336 5695680 1608624 5699288 +1612160 5695080 1612440 5693432 1611336 5695680 1612136 5695120 +1611464 5695816 1612120 5695192 1612136 5695120 1611336 5695680 +1611464 5695816 1612120 5695192 1611336 5695680 1608624 5699288 +1612136 5695120 1612160 5695080 1611336 5695680 1612120 5695192 +1611464 5695816 1612128 5695248 1612120 5695192 1611336 5695680 +1611464 5695816 1612128 5695248 1611336 5695680 1608624 5699288 +1611464 5695816 1612176 5695584 1612128 5695248 1611336 5695680 +1612120 5695192 1612136 5695120 1611336 5695680 1612128 5695248 +1612160 5695080 1612504 5693584 1612440 5693432 1611336 5695680 +1612440 5693432 1612400 5693248 1611336 5695680 1612160 5695080 +1611464 5695816 1611336 5695680 1608624 5699288 1610784 5698784 +1611336 5695680 1608544 5699312 1608624 5699288 1610784 5698784 +1611464 5695816 1612128 5695248 1611336 5695680 1610784 5698784 +1608624 5699288 1610736 5698824 1610784 5698784 1611336 5695680 +1611464 5695816 1611336 5695680 1610784 5698784 1610848 5698768 +1611336 5695680 1611136 5695304 1602224 5696056 1608544 5699312 +1611336 5695680 1611136 5695304 1608544 5699312 1608624 5699288 +1611336 5695680 1611136 5695304 1608624 5699288 1610784 5698784 +1611136 5695304 1602224 5696056 1608544 5699312 1608624 5699288 +1611336 5695680 1608736 5689448 1611136 5695304 1608624 5699288 +1608736 5689448 1611136 5695304 1611336 5695680 1608840 5689480 +1611336 5695680 1609280 5689560 1608840 5689480 1611136 5695304 +1611336 5695680 1612400 5693248 1609280 5689560 1611136 5695304 +1611336 5695680 1612440 5693432 1612400 5693248 1611136 5695304 +1612400 5693248 1609280 5689560 1611136 5695304 1612440 5693432 +1609280 5689560 1608840 5689480 1611136 5695304 1612400 5693248 +1611136 5695304 1608624 5699288 1611336 5695680 1612440 5693432 +1608840 5689480 1608736 5689448 1611136 5695304 1609280 5689560 +1611136 5695304 1608736 5689448 1602224 5696056 1608544 5699312 +1608736 5689448 1602224 5696056 1611136 5695304 1608840 5689480 +1602224 5696056 1611136 5695304 1608736 5689448 1602200 5696008 +1602224 5696056 1608544 5699312 1611136 5695304 1602200 5696008 +1611136 5695304 1608840 5689480 1608736 5689448 1602200 5696008 +1608736 5689448 1602160 5695928 1602200 5696008 1611136 5695304 +1608736 5689448 1602160 5695928 1611136 5695304 1608840 5689480 +1602200 5696008 1602224 5696056 1611136 5695304 1602160 5695928 +1612400 5693248 1612408 5693168 1609280 5689560 1611136 5695304 +1612400 5693248 1612408 5693168 1611136 5695304 1612440 5693432 +1609280 5689560 1608840 5689480 1611136 5695304 1612408 5693168 +1612408 5693168 1609400 5689560 1609280 5689560 1611136 5695304 +1608736 5689448 1608616 5689368 1602160 5695928 1611136 5695304 +1609280 5689560 1609232 5689536 1608840 5689480 1611136 5695304 +1602224 5696056 1602504 5696992 1608544 5699312 1611136 5695304 +1611336 5695680 1612160 5695080 1612440 5693432 1611136 5695304 +1612440 5693432 1612400 5693248 1611136 5695304 1612160 5695080 +1611336 5695680 1612160 5695080 1611136 5695304 1608624 5699288 +1611336 5695680 1612136 5695120 1612160 5695080 1611136 5695304 +1611336 5695680 1612136 5695120 1611136 5695304 1608624 5699288 +1611336 5695680 1612120 5695192 1612136 5695120 1611136 5695304 +1611336 5695680 1612120 5695192 1611136 5695304 1608624 5699288 +1612136 5695120 1612160 5695080 1611136 5695304 1612120 5695192 +1611336 5695680 1612128 5695248 1612120 5695192 1611136 5695304 +1612160 5695080 1612504 5693584 1612440 5693432 1611136 5695304 +1612440 5693432 1612400 5693248 1611136 5695304 1612504 5693584 +1612160 5695080 1612504 5693584 1611136 5695304 1612136 5695120 +1612160 5695080 1612584 5694512 1612504 5693584 1611136 5695304 +1611136 5695304 1611120 5695240 1609280 5689560 1608840 5689480 +1611136 5695304 1611120 5695240 1608840 5689480 1608736 5689448 +1611120 5695240 1609280 5689560 1608840 5689480 1608736 5689448 +1611136 5695304 1612408 5693168 1611120 5695240 1608736 5689448 +1611136 5695304 1611120 5695240 1608736 5689448 1602160 5695928 +1611120 5695240 1608840 5689480 1608736 5689448 1602160 5695928 +1611136 5695304 1612408 5693168 1611120 5695240 1602160 5695928 +1611120 5695240 1612408 5693168 1609280 5689560 1608840 5689480 +1611136 5695304 1611120 5695240 1602160 5695928 1602200 5696008 +1611136 5695304 1612408 5693168 1611120 5695240 1602200 5696008 +1611120 5695240 1608736 5689448 1602160 5695928 1602200 5696008 +1611136 5695304 1611120 5695240 1602200 5696008 1602224 5696056 +1611136 5695304 1611120 5695240 1602224 5696056 1608544 5699312 +1611136 5695304 1611120 5695240 1608544 5699312 1608624 5699288 +1611136 5695304 1611120 5695240 1608624 5699288 1611336 5695680 +1611120 5695240 1602224 5696056 1608544 5699312 1608624 5699288 +1611136 5695304 1612408 5693168 1611120 5695240 1608624 5699288 +1611120 5695240 1602200 5696008 1602224 5696056 1608544 5699312 +1611120 5695240 1602160 5695928 1602200 5696008 1602224 5696056 +1609280 5689560 1611120 5695240 1612408 5693168 1609400 5689560 +1612408 5693168 1611120 5695240 1611136 5695304 1612400 5693248 +1611136 5695304 1612440 5693432 1612400 5693248 1611120 5695240 +1611136 5695304 1612504 5693584 1612440 5693432 1611120 5695240 +1612440 5693432 1612400 5693248 1611120 5695240 1612504 5693584 +1611120 5695240 1608624 5699288 1611136 5695304 1612504 5693584 +1612408 5693168 1609280 5689560 1611120 5695240 1612400 5693248 +1612400 5693248 1612408 5693168 1611120 5695240 1612440 5693432 +1608736 5689448 1608616 5689368 1602160 5695928 1611120 5695240 +1609280 5689560 1609232 5689536 1608840 5689480 1611120 5695240 +1611136 5695304 1612160 5695080 1612504 5693584 1611120 5695240 +1612504 5693584 1612440 5693432 1611120 5695240 1612160 5695080 +1611136 5695304 1612160 5695080 1611120 5695240 1608624 5699288 +1602224 5696056 1602504 5696992 1608544 5699312 1611120 5695240 +1608544 5699312 1608624 5699288 1611120 5695240 1602504 5696992 +1602224 5696056 1602504 5696992 1611120 5695240 1602200 5696008 +1602504 5696992 1608256 5699504 1608544 5699312 1611120 5695240 +1602224 5696056 1602224 5696096 1602504 5696992 1611120 5695240 +1611136 5695304 1612136 5695120 1612160 5695080 1611120 5695240 +1611136 5695304 1612136 5695120 1611120 5695240 1608624 5699288 +1611136 5695304 1612120 5695192 1612136 5695120 1611120 5695240 +1611136 5695304 1612120 5695192 1611120 5695240 1608624 5699288 +1611136 5695304 1611336 5695680 1612120 5695192 1611120 5695240 +1612160 5695080 1612504 5693584 1611120 5695240 1612136 5695120 +1612136 5695120 1612160 5695080 1611120 5695240 1612120 5695192 +1612160 5695080 1612584 5694512 1612504 5693584 1611120 5695240 +1611120 5695240 1611152 5695144 1609280 5689560 1608840 5689480 +1611120 5695240 1611152 5695144 1608840 5689480 1608736 5689448 +1611120 5695240 1611152 5695144 1608736 5689448 1602160 5695928 +1611152 5695144 1609280 5689560 1608840 5689480 1608736 5689448 +1611120 5695240 1612408 5693168 1611152 5695144 1608736 5689448 +1612408 5693168 1611152 5695144 1611120 5695240 1612400 5693248 +1611152 5695144 1608736 5689448 1611120 5695240 1612400 5693248 +1611152 5695144 1612408 5693168 1609280 5689560 1608840 5689480 +1612408 5693168 1609280 5689560 1611152 5695144 1612400 5693248 +1609280 5689560 1611152 5695144 1612408 5693168 1609400 5689560 +1609280 5689560 1608840 5689480 1611152 5695144 1609400 5689560 +1611152 5695144 1612400 5693248 1612408 5693168 1609400 5689560 +1611120 5695240 1612440 5693432 1612400 5693248 1611152 5695144 +1611120 5695240 1612504 5693584 1612440 5693432 1611152 5695144 +1611120 5695240 1612160 5695080 1612504 5693584 1611152 5695144 +1612504 5693584 1612440 5693432 1611152 5695144 1612160 5695080 +1611120 5695240 1612160 5695080 1611152 5695144 1608736 5689448 +1612400 5693248 1612408 5693168 1611152 5695144 1612440 5693432 +1612440 5693432 1612400 5693248 1611152 5695144 1612504 5693584 +1612408 5693168 1610008 5689456 1609400 5689560 1611152 5695144 +1609280 5689560 1609232 5689536 1608840 5689480 1611152 5695144 +1611120 5695240 1612136 5695120 1612160 5695080 1611152 5695144 +1612160 5695080 1612504 5693584 1611152 5695144 1612136 5695120 +1611120 5695240 1612136 5695120 1611152 5695144 1608736 5689448 +1611120 5695240 1612120 5695192 1612136 5695120 1611152 5695144 +1611120 5695240 1612120 5695192 1611152 5695144 1608736 5689448 +1611120 5695240 1611136 5695304 1612120 5695192 1611152 5695144 +1611120 5695240 1611136 5695304 1611152 5695144 1608736 5689448 +1611136 5695304 1611336 5695680 1612120 5695192 1611152 5695144 +1612136 5695120 1612160 5695080 1611152 5695144 1612120 5695192 +1612120 5695192 1612136 5695120 1611152 5695144 1611136 5695304 +1612160 5695080 1612584 5694512 1612504 5693584 1611152 5695144 +1612160 5695080 1612584 5694512 1611152 5695144 1612136 5695120 +1612504 5693584 1612440 5693432 1611152 5695144 1612584 5694512 +1612584 5694512 1612680 5693808 1612504 5693584 1611152 5695144 +1612160 5695080 1612592 5694608 1612584 5694512 1611152 5695144 +1611152 5695144 1611184 5695112 1612504 5693584 1612440 5693432 +1611152 5695144 1612584 5694512 1611184 5695112 1612440 5693432 +1611184 5695112 1612584 5694512 1612504 5693584 1612440 5693432 +1611152 5695144 1611184 5695112 1612440 5693432 1612400 5693248 +1611184 5695112 1612504 5693584 1612440 5693432 1612400 5693248 +1611152 5695144 1611184 5695112 1612400 5693248 1612408 5693168 +1611152 5695144 1612584 5694512 1611184 5695112 1612408 5693168 +1611152 5695144 1611184 5695112 1612408 5693168 1609400 5689560 +1611184 5695112 1612400 5693248 1612408 5693168 1609400 5689560 +1611152 5695144 1612584 5694512 1611184 5695112 1609400 5689560 +1611152 5695144 1611184 5695112 1609400 5689560 1609280 5689560 +1611152 5695144 1611184 5695112 1609280 5689560 1608840 5689480 +1611152 5695144 1612584 5694512 1611184 5695112 1609280 5689560 +1611184 5695112 1612408 5693168 1609400 5689560 1609280 5689560 +1611184 5695112 1612440 5693432 1612400 5693248 1612408 5693168 +1612504 5693584 1611184 5695112 1612584 5694512 1612680 5693808 +1612408 5693168 1610008 5689456 1609400 5689560 1611184 5695112 +1612584 5694512 1611184 5695112 1611152 5695144 1612160 5695080 +1611152 5695144 1612136 5695120 1612160 5695080 1611184 5695112 +1611184 5695112 1609280 5689560 1611152 5695144 1612136 5695120 +1612584 5694512 1612504 5693584 1611184 5695112 1612160 5695080 +1611152 5695144 1612120 5695192 1612136 5695120 1611184 5695112 +1612136 5695120 1612160 5695080 1611184 5695112 1612120 5695192 +1611152 5695144 1612120 5695192 1611184 5695112 1609280 5689560 +1611152 5695144 1611136 5695304 1612120 5695192 1611184 5695112 +1611152 5695144 1611136 5695304 1611184 5695112 1609280 5689560 +1611136 5695304 1611336 5695680 1612120 5695192 1611184 5695112 +1611152 5695144 1611120 5695240 1611136 5695304 1611184 5695112 +1611336 5695680 1612128 5695248 1612120 5695192 1611184 5695112 +1611336 5695680 1612128 5695248 1611184 5695112 1611136 5695304 +1611336 5695680 1611464 5695816 1612128 5695248 1611184 5695112 +1612120 5695192 1612136 5695120 1611184 5695112 1612128 5695248 +1611136 5695304 1611336 5695680 1611184 5695112 1611152 5695144 +1612160 5695080 1612584 5694512 1611184 5695112 1612136 5695120 +1612584 5694512 1611184 5695112 1612160 5695080 1612592 5694608 +1611184 5695112 1611408 5694992 1612504 5693584 1612440 5693432 +1611184 5695112 1611408 5694992 1612440 5693432 1612400 5693248 +1611408 5694992 1612504 5693584 1612440 5693432 1612400 5693248 +1611184 5695112 1612584 5694512 1611408 5694992 1612400 5693248 +1612584 5694512 1611408 5694992 1611184 5695112 1612160 5695080 +1611408 5694992 1612400 5693248 1611184 5695112 1612160 5695080 +1611408 5694992 1612584 5694512 1612504 5693584 1612440 5693432 +1612584 5694512 1612504 5693584 1611408 5694992 1612160 5695080 +1611184 5695112 1611408 5694992 1612400 5693248 1612408 5693168 +1612504 5693584 1611408 5694992 1612584 5694512 1612680 5693808 +1611184 5695112 1612136 5695120 1612160 5695080 1611408 5694992 +1611184 5695112 1612120 5695192 1612136 5695120 1611408 5694992 +1611184 5695112 1612120 5695192 1611408 5694992 1612400 5693248 +1612160 5695080 1612584 5694512 1611408 5694992 1612136 5695120 +1611184 5695112 1612128 5695248 1612120 5695192 1611408 5694992 +1612120 5695192 1612136 5695120 1611408 5694992 1612128 5695248 +1611184 5695112 1612128 5695248 1611408 5694992 1612400 5693248 +1611184 5695112 1611336 5695680 1612128 5695248 1611408 5694992 +1611184 5695112 1611336 5695680 1611408 5694992 1612400 5693248 +1611184 5695112 1611136 5695304 1611336 5695680 1611408 5694992 +1611184 5695112 1611136 5695304 1611408 5694992 1612400 5693248 +1611336 5695680 1611464 5695816 1612128 5695248 1611408 5694992 +1611336 5695680 1612128 5695248 1611408 5694992 1611136 5695304 +1612128 5695248 1612120 5695192 1611408 5694992 1611336 5695680 +1611184 5695112 1611152 5695144 1611136 5695304 1611408 5694992 +1612136 5695120 1612160 5695080 1611408 5694992 1612120 5695192 +1612584 5694512 1611408 5694992 1612160 5695080 1612592 5694608 +1611408 5694992 1611472 5694920 1612504 5693584 1612440 5693432 +1611408 5694992 1611472 5694920 1612440 5693432 1612400 5693248 +1611408 5694992 1611472 5694920 1612400 5693248 1611184 5695112 +1611472 5694920 1612440 5693432 1612400 5693248 1611184 5695112 +1611472 5694920 1612504 5693584 1612440 5693432 1612400 5693248 +1611408 5694992 1612584 5694512 1611472 5694920 1611184 5695112 +1612584 5694512 1611472 5694920 1611408 5694992 1612160 5695080 +1611408 5694992 1612136 5695120 1612160 5695080 1611472 5694920 +1611472 5694920 1611184 5695112 1611408 5694992 1612136 5695120 +1612160 5695080 1612584 5694512 1611472 5694920 1612136 5695120 +1611472 5694920 1612584 5694512 1612504 5693584 1612440 5693432 +1612584 5694512 1612504 5693584 1611472 5694920 1612160 5695080 +1612400 5693248 1612408 5693168 1611184 5695112 1611472 5694920 +1612504 5693584 1611472 5694920 1612584 5694512 1612680 5693808 +1611408 5694992 1612120 5695192 1612136 5695120 1611472 5694920 +1611408 5694992 1612128 5695248 1612120 5695192 1611472 5694920 +1612136 5695120 1612160 5695080 1611472 5694920 1612120 5695192 +1611408 5694992 1612120 5695192 1611472 5694920 1611184 5695112 +1612584 5694512 1611472 5694920 1612160 5695080 1612592 5694608 +1611472 5694920 1611512 5694768 1611184 5695112 1611408 5694992 +1612400 5693248 1611512 5694768 1611472 5694920 1612440 5693432 +1611472 5694920 1612504 5693584 1612440 5693432 1611512 5694768 +1612440 5693432 1612400 5693248 1611512 5694768 1612504 5693584 +1611472 5694920 1612584 5694512 1612504 5693584 1611512 5694768 +1612504 5693584 1612440 5693432 1611512 5694768 1612584 5694512 +1611472 5694920 1612584 5694512 1611512 5694768 1611408 5694992 +1611472 5694920 1612160 5695080 1612584 5694512 1611512 5694768 +1611472 5694920 1612136 5695120 1612160 5695080 1611512 5694768 +1611472 5694920 1612120 5695192 1612136 5695120 1611512 5694768 +1612584 5694512 1612504 5693584 1611512 5694768 1612160 5695080 +1611472 5694920 1612136 5695120 1611512 5694768 1611408 5694992 +1612160 5695080 1612584 5694512 1611512 5694768 1612136 5695120 +1611512 5694768 1612400 5693248 1611184 5695112 1611408 5694992 +1612400 5693248 1611184 5695112 1611512 5694768 1612440 5693432 +1611184 5695112 1611512 5694768 1612400 5693248 1612408 5693168 +1611184 5695112 1611512 5694768 1612408 5693168 1609400 5689560 +1611184 5695112 1611512 5694768 1609400 5689560 1609280 5689560 +1611512 5694768 1612408 5693168 1609400 5689560 1609280 5689560 +1611184 5695112 1611408 5694992 1611512 5694768 1609280 5689560 +1611512 5694768 1612440 5693432 1612400 5693248 1612408 5693168 +1611184 5695112 1611512 5694768 1609280 5689560 1611152 5695144 +1611512 5694768 1612400 5693248 1612408 5693168 1609400 5689560 +1612584 5694512 1612680 5693808 1612504 5693584 1611512 5694768 +1612408 5693168 1610008 5689456 1609400 5689560 1611512 5694768 +1612160 5695080 1612592 5694608 1612584 5694512 1611512 5694768 +1611512 5694768 1611568 5694712 1612504 5693584 1612440 5693432 +1611512 5694768 1611568 5694712 1612440 5693432 1612400 5693248 +1611568 5694712 1612504 5693584 1612440 5693432 1612400 5693248 +1612584 5694512 1611568 5694712 1611512 5694768 1612160 5695080 +1611512 5694768 1612136 5695120 1612160 5695080 1611568 5694712 +1611512 5694768 1611472 5694920 1612136 5695120 1611568 5694712 +1611472 5694920 1612120 5695192 1612136 5695120 1611568 5694712 +1612160 5695080 1612584 5694512 1611568 5694712 1612136 5695120 +1612136 5695120 1612160 5695080 1611568 5694712 1611472 5694920 +1611512 5694768 1611472 5694920 1611568 5694712 1612400 5693248 +1611512 5694768 1611568 5694712 1612400 5693248 1612408 5693168 +1611568 5694712 1612440 5693432 1612400 5693248 1612408 5693168 +1611512 5694768 1611472 5694920 1611568 5694712 1612408 5693168 +1611568 5694712 1612584 5694512 1612504 5693584 1612440 5693432 +1612584 5694512 1612504 5693584 1611568 5694712 1612160 5695080 +1611512 5694768 1611568 5694712 1612408 5693168 1609400 5689560 +1611512 5694768 1611568 5694712 1609400 5689560 1609280 5689560 +1611512 5694768 1611472 5694920 1611568 5694712 1609400 5689560 +1611568 5694712 1612400 5693248 1612408 5693168 1609400 5689560 +1612504 5693584 1611568 5694712 1612584 5694512 1612680 5693808 +1612408 5693168 1610008 5689456 1609400 5689560 1611568 5694712 +1612584 5694512 1611568 5694712 1612160 5695080 1612592 5694608 +1611568 5694712 1611712 5694648 1612504 5693584 1612440 5693432 +1611568 5694712 1611712 5694648 1612440 5693432 1612400 5693248 +1611568 5694712 1611712 5694648 1612400 5693248 1612408 5693168 +1611712 5694648 1612504 5693584 1612440 5693432 1612400 5693248 +1611568 5694712 1612584 5694512 1611712 5694648 1612400 5693248 +1612584 5694512 1611712 5694648 1611568 5694712 1612160 5695080 +1611568 5694712 1612136 5695120 1612160 5695080 1611712 5694648 +1611568 5694712 1611472 5694920 1612136 5695120 1611712 5694648 +1611472 5694920 1612120 5695192 1612136 5695120 1611712 5694648 +1611568 5694712 1611512 5694768 1611472 5694920 1611712 5694648 +1612136 5695120 1612160 5695080 1611712 5694648 1611472 5694920 +1611712 5694648 1612400 5693248 1611568 5694712 1611472 5694920 +1612160 5695080 1612584 5694512 1611712 5694648 1612136 5695120 +1611712 5694648 1612584 5694512 1612504 5693584 1612440 5693432 +1612584 5694512 1612504 5693584 1611712 5694648 1612160 5695080 +1612504 5693584 1611712 5694648 1612584 5694512 1612680 5693808 +1612584 5694512 1611712 5694648 1612160 5695080 1612592 5694608 +1611712 5694648 1612136 5695120 1612160 5695080 1612592 5694608 +1612584 5694512 1612504 5693584 1611712 5694648 1612592 5694608 +1612160 5695080 1612240 5695096 1612592 5694608 1611712 5694648 +1611712 5694648 1611752 5694600 1612504 5693584 1612440 5693432 +1611712 5694648 1611752 5694600 1612440 5693432 1612400 5693248 +1611712 5694648 1611752 5694600 1612400 5693248 1611568 5694712 +1612400 5693248 1612408 5693168 1611568 5694712 1611752 5694600 +1611752 5694600 1612440 5693432 1612400 5693248 1611568 5694712 +1611752 5694600 1612504 5693584 1612440 5693432 1612400 5693248 +1611712 5694648 1612584 5694512 1611752 5694600 1611568 5694712 +1612584 5694512 1611752 5694600 1611712 5694648 1612592 5694608 +1611752 5694600 1611568 5694712 1611712 5694648 1612592 5694608 +1612504 5693584 1611752 5694600 1612584 5694512 1612680 5693808 +1611752 5694600 1612680 5693808 1612504 5693584 1612440 5693432 +1612584 5694512 1612680 5693808 1611752 5694600 1612592 5694608 +1611712 5694648 1612160 5695080 1612592 5694608 1611752 5694600 +1611712 5694648 1612136 5695120 1612160 5695080 1611752 5694600 +1611712 5694648 1612160 5695080 1611752 5694600 1611568 5694712 +1612592 5694608 1612584 5694512 1611752 5694600 1612160 5695080 +1612160 5695080 1612240 5695096 1612592 5694608 1611752 5694600 +1612584 5694512 1612680 5694440 1612680 5693808 1611752 5694600 +1611568 5694712 1611768 5694560 1612400 5693248 1612408 5693168 +1611752 5694600 1611768 5694560 1611568 5694712 1611712 5694648 +1612400 5693248 1611768 5694560 1611752 5694600 1612440 5693432 +1611752 5694600 1612504 5693584 1612440 5693432 1611768 5694560 +1612440 5693432 1612400 5693248 1611768 5694560 1612504 5693584 +1611752 5694600 1612680 5693808 1612504 5693584 1611768 5694560 +1612504 5693584 1612440 5693432 1611768 5694560 1612680 5693808 +1611752 5694600 1612584 5694512 1612680 5693808 1611768 5694560 +1612680 5693808 1612504 5693584 1611768 5694560 1612584 5694512 +1611752 5694600 1612584 5694512 1611768 5694560 1611712 5694648 +1611752 5694600 1612592 5694608 1612584 5694512 1611768 5694560 +1611752 5694600 1612160 5695080 1612592 5694608 1611768 5694560 +1612584 5694512 1612680 5693808 1611768 5694560 1612592 5694608 +1611752 5694600 1612160 5695080 1611768 5694560 1611712 5694648 +1612592 5694608 1612584 5694512 1611768 5694560 1612160 5695080 +1611768 5694560 1612400 5693248 1611568 5694712 1611712 5694648 +1612400 5693248 1611568 5694712 1611768 5694560 1612440 5693432 +1611752 5694600 1611712 5694648 1612160 5695080 1611768 5694560 +1612160 5695080 1612240 5695096 1612592 5694608 1611768 5694560 +1612584 5694512 1612680 5694440 1612680 5693808 1611768 5694560 +1611568 5694712 1611776 5694448 1612400 5693248 1612408 5693168 +1611568 5694712 1611776 5694448 1612408 5693168 1609400 5689560 +1611776 5694448 1612400 5693248 1612408 5693168 1609400 5689560 +1611568 5694712 1611776 5694448 1609400 5689560 1611512 5694768 +1609400 5689560 1609280 5689560 1611512 5694768 1611776 5694448 +1609280 5689560 1611184 5695112 1611512 5694768 1611776 5694448 +1611776 5694448 1612408 5693168 1609400 5689560 1609280 5689560 +1611512 5694768 1611568 5694712 1611776 5694448 1609280 5689560 +1611768 5694560 1611776 5694448 1611568 5694712 1611712 5694648 +1611768 5694560 1611776 5694448 1611712 5694648 1611752 5694600 +1611768 5694560 1612400 5693248 1611776 5694448 1611712 5694648 +1612400 5693248 1611776 5694448 1611768 5694560 1612440 5693432 +1611768 5694560 1612504 5693584 1612440 5693432 1611776 5694448 +1611768 5694560 1612680 5693808 1612504 5693584 1611776 5694448 +1612504 5693584 1612440 5693432 1611776 5694448 1612680 5693808 +1611768 5694560 1612584 5694512 1612680 5693808 1611776 5694448 +1612680 5693808 1612504 5693584 1611776 5694448 1612584 5694512 +1611768 5694560 1612592 5694608 1612584 5694512 1611776 5694448 +1611776 5694448 1611712 5694648 1611768 5694560 1612584 5694512 +1612440 5693432 1612400 5693248 1611776 5694448 1612504 5693584 +1611568 5694712 1611712 5694648 1611776 5694448 1611512 5694768 +1611776 5694448 1612440 5693432 1612400 5693248 1612408 5693168 +1612408 5693168 1610008 5689456 1609400 5689560 1611776 5694448 +1612584 5694512 1612680 5694440 1612680 5693808 1611776 5694448 +1612408 5693168 1611768 5694392 1611776 5694448 1612400 5693248 +1611776 5694448 1611768 5694392 1609400 5689560 1609280 5689560 +1611776 5694448 1611768 5694392 1609280 5689560 1611512 5694768 +1609280 5689560 1611184 5695112 1611512 5694768 1611768 5694392 +1611512 5694768 1611776 5694448 1611768 5694392 1611184 5695112 +1611184 5695112 1611408 5694992 1611512 5694768 1611768 5694392 +1611768 5694392 1609400 5689560 1609280 5689560 1611184 5695112 +1609280 5689560 1611152 5695144 1611184 5695112 1611768 5694392 +1611776 5694448 1611768 5694392 1611512 5694768 1611568 5694712 +1611768 5694392 1611184 5695112 1611512 5694768 1611568 5694712 +1611776 5694448 1611768 5694392 1611568 5694712 1611712 5694648 +1611768 5694392 1611568 5694712 1611776 5694448 1612400 5693248 +1611776 5694448 1612440 5693432 1612400 5693248 1611768 5694392 +1612400 5693248 1612408 5693168 1611768 5694392 1612440 5693432 +1611776 5694448 1612504 5693584 1612440 5693432 1611768 5694392 +1611776 5694448 1612680 5693808 1612504 5693584 1611768 5694392 +1611776 5694448 1612584 5694512 1612680 5693808 1611768 5694392 +1612680 5693808 1612504 5693584 1611768 5694392 1612584 5694512 +1611776 5694448 1611768 5694560 1612584 5694512 1611768 5694392 +1612504 5693584 1612440 5693432 1611768 5694392 1612680 5693808 +1611776 5694448 1612584 5694512 1611768 5694392 1611568 5694712 +1612440 5693432 1612400 5693248 1611768 5694392 1612504 5693584 +1611768 5694392 1612408 5693168 1609400 5689560 1609280 5689560 +1612408 5693168 1609400 5689560 1611768 5694392 1612400 5693248 +1609400 5689560 1611768 5694392 1612408 5693168 1610008 5689456 +1612584 5694512 1612680 5694440 1612680 5693808 1611768 5694392 +1611768 5694392 1611712 5694312 1611184 5695112 1611512 5694768 +1611768 5694392 1611712 5694312 1611512 5694768 1611568 5694712 +1611712 5694312 1611184 5695112 1611512 5694768 1611568 5694712 +1611184 5695112 1611408 5694992 1611512 5694768 1611712 5694312 +1609280 5689560 1611712 5694312 1611768 5694392 1609400 5689560 +1611184 5695112 1611712 5694312 1609280 5689560 1611152 5695144 +1609280 5689560 1608840 5689480 1611152 5695144 1611712 5694312 +1611768 5694392 1611712 5694312 1611568 5694712 1611776 5694448 +1611712 5694312 1611512 5694768 1611568 5694712 1611776 5694448 +1611568 5694712 1611712 5694648 1611776 5694448 1611712 5694312 +1611768 5694392 1612408 5693168 1609400 5689560 1611712 5694312 +1609400 5689560 1609280 5689560 1611712 5694312 1612408 5693168 +1611768 5694392 1612408 5693168 1611712 5694312 1611776 5694448 +1611768 5694392 1612400 5693248 1612408 5693168 1611712 5694312 +1611768 5694392 1612440 5693432 1612400 5693248 1611712 5694312 +1611768 5694392 1612504 5693584 1612440 5693432 1611712 5694312 +1612440 5693432 1612400 5693248 1611712 5694312 1612504 5693584 +1611768 5694392 1612680 5693808 1612504 5693584 1611712 5694312 +1611768 5694392 1612584 5694512 1612680 5693808 1611712 5694312 +1612504 5693584 1612440 5693432 1611712 5694312 1612680 5693808 +1612408 5693168 1609400 5689560 1611712 5694312 1612400 5693248 +1611768 5694392 1612680 5693808 1611712 5694312 1611776 5694448 +1612400 5693248 1612408 5693168 1611712 5694312 1612440 5693432 +1611712 5694312 1611152 5695144 1611184 5695112 1611512 5694768 +1609280 5689560 1611152 5695144 1611712 5694312 1609400 5689560 +1612408 5693168 1610008 5689456 1609400 5689560 1611712 5694312 +1611152 5695144 1611608 5694232 1609280 5689560 1608840 5689480 +1611152 5695144 1611608 5694232 1608840 5689480 1608736 5689448 +1611712 5694312 1611608 5694232 1611152 5695144 1611184 5695112 +1611712 5694312 1611608 5694232 1611184 5695112 1611512 5694768 +1611712 5694312 1611608 5694232 1611512 5694768 1611568 5694712 +1611712 5694312 1611608 5694232 1611568 5694712 1611776 5694448 +1611184 5695112 1611408 5694992 1611512 5694768 1611608 5694232 +1611608 5694232 1611152 5695144 1611184 5695112 1611512 5694768 +1611608 5694232 1611184 5695112 1611512 5694768 1611568 5694712 +1611712 5694312 1609280 5689560 1611608 5694232 1611568 5694712 +1609280 5689560 1611608 5694232 1611712 5694312 1609400 5689560 +1611712 5694312 1612408 5693168 1609400 5689560 1611608 5694232 +1611712 5694312 1612400 5693248 1612408 5693168 1611608 5694232 +1612408 5693168 1609400 5689560 1611608 5694232 1612400 5693248 +1611712 5694312 1612440 5693432 1612400 5693248 1611608 5694232 +1611712 5694312 1612504 5693584 1612440 5693432 1611608 5694232 +1611712 5694312 1612680 5693808 1612504 5693584 1611608 5694232 +1612400 5693248 1612408 5693168 1611608 5694232 1612440 5693432 +1612440 5693432 1612400 5693248 1611608 5694232 1612504 5693584 +1611608 5694232 1611568 5694712 1611712 5694312 1612504 5693584 +1609400 5689560 1609280 5689560 1611608 5694232 1612408 5693168 +1611152 5695144 1611184 5695112 1611608 5694232 1608840 5689480 +1611608 5694232 1609400 5689560 1609280 5689560 1608840 5689480 +1612408 5693168 1610008 5689456 1609400 5689560 1611608 5694232 +1609280 5689560 1609232 5689536 1608840 5689480 1611608 5694232 +1611152 5695144 1611544 5694216 1608840 5689480 1608736 5689448 +1608840 5689480 1611544 5694216 1611608 5694232 1609280 5689560 +1611608 5694232 1611544 5694216 1611152 5695144 1611184 5695112 +1611608 5694232 1611544 5694216 1611184 5695112 1611512 5694768 +1611184 5695112 1611408 5694992 1611512 5694768 1611544 5694216 +1611608 5694232 1611544 5694216 1611512 5694768 1611568 5694712 +1611608 5694232 1611544 5694216 1611568 5694712 1611712 5694312 +1611568 5694712 1611776 5694448 1611712 5694312 1611544 5694216 +1611544 5694216 1611184 5695112 1611512 5694768 1611568 5694712 +1611544 5694216 1611512 5694768 1611568 5694712 1611712 5694312 +1611544 5694216 1611152 5695144 1611184 5695112 1611512 5694768 +1611544 5694216 1611712 5694312 1611608 5694232 1609280 5689560 +1611608 5694232 1609400 5689560 1609280 5689560 1611544 5694216 +1609280 5689560 1608840 5689480 1611544 5694216 1609400 5689560 +1611608 5694232 1612408 5693168 1609400 5689560 1611544 5694216 +1611608 5694232 1612400 5693248 1612408 5693168 1611544 5694216 +1611608 5694232 1612440 5693432 1612400 5693248 1611544 5694216 +1612400 5693248 1612408 5693168 1611544 5694216 1612440 5693432 +1611608 5694232 1612504 5693584 1612440 5693432 1611544 5694216 +1612408 5693168 1609400 5689560 1611544 5694216 1612400 5693248 +1611608 5694232 1612440 5693432 1611544 5694216 1611712 5694312 +1609400 5689560 1609280 5689560 1611544 5694216 1612408 5693168 +1611544 5694216 1608840 5689480 1611152 5695144 1611184 5695112 +1608840 5689480 1611152 5695144 1611544 5694216 1609280 5689560 +1612408 5693168 1610008 5689456 1609400 5689560 1611544 5694216 +1608840 5689480 1611544 5694216 1609280 5689560 1609232 5689536 +1611152 5695144 1611496 5694168 1608840 5689480 1608736 5689448 +1611152 5695144 1611496 5694168 1608736 5689448 1611120 5695240 +1611544 5694216 1611496 5694168 1611152 5695144 1611184 5695112 +1611544 5694216 1611496 5694168 1611184 5695112 1611512 5694768 +1611184 5695112 1611408 5694992 1611512 5694768 1611496 5694168 +1611544 5694216 1611496 5694168 1611512 5694768 1611568 5694712 +1611496 5694168 1611152 5695144 1611184 5695112 1611512 5694768 +1611544 5694216 1608840 5689480 1611496 5694168 1611512 5694768 +1608840 5689480 1611496 5694168 1611544 5694216 1609280 5689560 +1611544 5694216 1609400 5689560 1609280 5689560 1611496 5694168 +1611544 5694216 1612408 5693168 1609400 5689560 1611496 5694168 +1609400 5689560 1609280 5689560 1611496 5694168 1612408 5693168 +1611544 5694216 1612400 5693248 1612408 5693168 1611496 5694168 +1611544 5694216 1612440 5693432 1612400 5693248 1611496 5694168 +1611544 5694216 1611608 5694232 1612440 5693432 1611496 5694168 +1612440 5693432 1612400 5693248 1611496 5694168 1611608 5694232 +1611608 5694232 1612504 5693584 1612440 5693432 1611496 5694168 +1612400 5693248 1612408 5693168 1611496 5694168 1612440 5693432 +1612408 5693168 1609400 5689560 1611496 5694168 1612400 5693248 +1611496 5694168 1611512 5694768 1611544 5694216 1611608 5694232 +1609280 5689560 1608840 5689480 1611496 5694168 1609400 5689560 +1611152 5695144 1611184 5695112 1611496 5694168 1608736 5689448 +1611496 5694168 1609280 5689560 1608840 5689480 1608736 5689448 +1612408 5693168 1610008 5689456 1609400 5689560 1611496 5694168 +1609400 5689560 1609280 5689560 1611496 5694168 1610008 5689456 +1610008 5689456 1609672 5689488 1609400 5689560 1611496 5694168 +1612408 5693168 1612440 5693112 1610008 5689456 1611496 5694168 +1612408 5693168 1610008 5689456 1611496 5694168 1612400 5693248 +1608840 5689480 1611496 5694168 1609280 5689560 1609232 5689536 +1611152 5695144 1611464 5694160 1608736 5689448 1611120 5695240 +1608736 5689448 1611464 5694160 1611496 5694168 1608840 5689480 +1611496 5694168 1611464 5694160 1611152 5695144 1611184 5695112 +1611496 5694168 1611464 5694160 1611184 5695112 1611512 5694768 +1611184 5695112 1611408 5694992 1611512 5694768 1611464 5694160 +1611496 5694168 1611464 5694160 1611512 5694768 1611544 5694216 +1611512 5694768 1611568 5694712 1611544 5694216 1611464 5694160 +1611568 5694712 1611712 5694312 1611544 5694216 1611464 5694160 +1611544 5694216 1611496 5694168 1611464 5694160 1611568 5694712 +1611464 5694160 1611184 5695112 1611512 5694768 1611568 5694712 +1611464 5694160 1611152 5695144 1611184 5695112 1611512 5694768 +1611464 5694160 1611544 5694216 1611496 5694168 1608840 5689480 +1611496 5694168 1609280 5689560 1608840 5689480 1611464 5694160 +1608840 5689480 1608736 5689448 1611464 5694160 1609280 5689560 +1611496 5694168 1609400 5689560 1609280 5689560 1611464 5694160 +1611496 5694168 1610008 5689456 1609400 5689560 1611464 5694160 +1610008 5689456 1609672 5689488 1609400 5689560 1611464 5694160 +1609400 5689560 1609280 5689560 1611464 5694160 1610008 5689456 +1611496 5694168 1610008 5689456 1611464 5694160 1611544 5694216 +1609280 5689560 1608840 5689480 1611464 5694160 1609400 5689560 +1611464 5694160 1608736 5689448 1611152 5695144 1611184 5695112 +1608736 5689448 1611152 5695144 1611464 5694160 1608840 5689480 +1611496 5694168 1612408 5693168 1610008 5689456 1611464 5694160 +1610008 5689456 1609400 5689560 1611464 5694160 1612408 5693168 +1612408 5693168 1612440 5693112 1610008 5689456 1611464 5694160 +1611496 5694168 1612400 5693248 1612408 5693168 1611464 5694160 +1611496 5694168 1612440 5693432 1612400 5693248 1611464 5694160 +1611496 5694168 1612400 5693248 1611464 5694160 1611544 5694216 +1612408 5693168 1610008 5689456 1611464 5694160 1612400 5693248 +1609280 5689560 1609232 5689536 1608840 5689480 1611464 5694160 +1611152 5695144 1611360 5694104 1608736 5689448 1611120 5695240 +1608736 5689448 1602160 5695928 1611120 5695240 1611360 5694104 +1611464 5694160 1611360 5694104 1611152 5695144 1611184 5695112 +1611464 5694160 1611360 5694104 1611184 5695112 1611512 5694768 +1611184 5695112 1611408 5694992 1611512 5694768 1611360 5694104 +1611464 5694160 1611360 5694104 1611512 5694768 1611568 5694712 +1611360 5694104 1611152 5695144 1611184 5695112 1611512 5694768 +1611464 5694160 1608736 5689448 1611360 5694104 1611512 5694768 +1608736 5689448 1611360 5694104 1611464 5694160 1608840 5689480 +1611464 5694160 1609280 5689560 1608840 5689480 1611360 5694104 +1611464 5694160 1609400 5689560 1609280 5689560 1611360 5694104 +1609280 5689560 1608840 5689480 1611360 5694104 1609400 5689560 +1611464 5694160 1610008 5689456 1609400 5689560 1611360 5694104 +1611464 5694160 1612408 5693168 1610008 5689456 1611360 5694104 +1610008 5689456 1609672 5689488 1609400 5689560 1611360 5694104 +1612408 5693168 1612440 5693112 1610008 5689456 1611360 5694104 +1612408 5693168 1612440 5693112 1611360 5694104 1611464 5694160 +1612440 5693112 1612048 5690184 1610008 5689456 1611360 5694104 +1612440 5693112 1612208 5690280 1612048 5690184 1611360 5694104 +1612440 5693112 1612048 5690184 1611360 5694104 1612408 5693168 +1612048 5690184 1611896 5690040 1610008 5689456 1611360 5694104 +1610008 5689456 1609400 5689560 1611360 5694104 1612048 5690184 +1609400 5689560 1609280 5689560 1611360 5694104 1610008 5689456 +1611360 5694104 1611512 5694768 1611464 5694160 1612408 5693168 +1608840 5689480 1608736 5689448 1611360 5694104 1609280 5689560 +1611152 5695144 1611184 5695112 1611360 5694104 1611120 5695240 +1611360 5694104 1608840 5689480 1608736 5689448 1611120 5695240 +1611464 5694160 1612400 5693248 1612408 5693168 1611360 5694104 +1612408 5693168 1612440 5693112 1611360 5694104 1612400 5693248 +1611464 5694160 1611496 5694168 1612400 5693248 1611360 5694104 +1611496 5694168 1612440 5693432 1612400 5693248 1611360 5694104 +1611496 5694168 1611608 5694232 1612440 5693432 1611360 5694104 +1611496 5694168 1612440 5693432 1611360 5694104 1611464 5694160 +1611464 5694160 1611496 5694168 1611360 5694104 1611512 5694768 +1612400 5693248 1612408 5693168 1611360 5694104 1612440 5693432 +1609280 5689560 1609232 5689536 1608840 5689480 1611360 5694104 +1611360 5694104 1611344 5694080 1611120 5695240 1611152 5695144 +1611120 5695240 1611344 5694080 1608736 5689448 1602160 5695928 +1611360 5694104 1611344 5694080 1611152 5695144 1611184 5695112 +1611344 5694080 1611120 5695240 1611152 5695144 1611184 5695112 +1611360 5694104 1611344 5694080 1611184 5695112 1611512 5694768 +1611360 5694104 1608736 5689448 1611344 5694080 1611184 5695112 +1608736 5689448 1611344 5694080 1611360 5694104 1608840 5689480 +1611360 5694104 1609280 5689560 1608840 5689480 1611344 5694080 +1611360 5694104 1609400 5689560 1609280 5689560 1611344 5694080 +1611360 5694104 1610008 5689456 1609400 5689560 1611344 5694080 +1609400 5689560 1609280 5689560 1611344 5694080 1610008 5689456 +1610008 5689456 1609672 5689488 1609400 5689560 1611344 5694080 +1611360 5694104 1612048 5690184 1610008 5689456 1611344 5694080 +1611360 5694104 1612440 5693112 1612048 5690184 1611344 5694080 +1612440 5693112 1612208 5690280 1612048 5690184 1611344 5694080 +1611360 5694104 1612408 5693168 1612440 5693112 1611344 5694080 +1611360 5694104 1612400 5693248 1612408 5693168 1611344 5694080 +1612440 5693112 1612048 5690184 1611344 5694080 1612408 5693168 +1612408 5693168 1612440 5693112 1611344 5694080 1612400 5693248 +1612048 5690184 1611896 5690040 1610008 5689456 1611344 5694080 +1611896 5690040 1611360 5689624 1610008 5689456 1611344 5694080 +1612048 5690184 1611896 5690040 1611344 5694080 1612440 5693112 +1610008 5689456 1609400 5689560 1611344 5694080 1611896 5690040 +1609280 5689560 1608840 5689480 1611344 5694080 1609400 5689560 +1611344 5694080 1611184 5695112 1611360 5694104 1612400 5693248 +1608840 5689480 1608736 5689448 1611344 5694080 1609280 5689560 +1611344 5694080 1608736 5689448 1611120 5695240 1611152 5695144 +1608736 5689448 1611120 5695240 1611344 5694080 1608840 5689480 +1611360 5694104 1612440 5693432 1612400 5693248 1611344 5694080 +1612400 5693248 1612408 5693168 1611344 5694080 1612440 5693432 +1611360 5694104 1611496 5694168 1612440 5693432 1611344 5694080 +1611496 5694168 1611608 5694232 1612440 5693432 1611344 5694080 +1611360 5694104 1611464 5694160 1611496 5694168 1611344 5694080 +1611496 5694168 1612440 5693432 1611344 5694080 1611464 5694160 +1611360 5694104 1611464 5694160 1611344 5694080 1611184 5695112 +1612440 5693432 1612400 5693248 1611344 5694080 1611496 5694168 +1609280 5689560 1609232 5689536 1608840 5689480 1611344 5694080 +1611344 5694080 1611312 5693984 1609400 5689560 1609280 5689560 +1609400 5689560 1611312 5693984 1610008 5689456 1609672 5689488 +1610008 5689456 1611312 5693984 1611344 5694080 1611896 5690040 +1610008 5689456 1611312 5693984 1611896 5690040 1611360 5689624 +1611344 5694080 1612048 5690184 1611896 5690040 1611312 5693984 +1611344 5694080 1612440 5693112 1612048 5690184 1611312 5693984 +1612440 5693112 1612208 5690280 1612048 5690184 1611312 5693984 +1611344 5694080 1612408 5693168 1612440 5693112 1611312 5693984 +1611344 5694080 1612400 5693248 1612408 5693168 1611312 5693984 +1611344 5694080 1612440 5693432 1612400 5693248 1611312 5693984 +1612408 5693168 1612440 5693112 1611312 5693984 1612400 5693248 +1612400 5693248 1612408 5693168 1611312 5693984 1612440 5693432 +1612048 5690184 1611896 5690040 1611312 5693984 1612440 5693112 +1612440 5693112 1612048 5690184 1611312 5693984 1612408 5693168 +1611896 5690040 1610008 5689456 1611312 5693984 1612048 5690184 +1611344 5694080 1611312 5693984 1609280 5689560 1608840 5689480 +1611312 5693984 1609400 5689560 1609280 5689560 1608840 5689480 +1611344 5694080 1611312 5693984 1608840 5689480 1608736 5689448 +1611312 5693984 1609280 5689560 1608840 5689480 1608736 5689448 +1611344 5694080 1612440 5693432 1611312 5693984 1608736 5689448 +1611344 5694080 1611312 5693984 1608736 5689448 1611120 5695240 +1608736 5689448 1602160 5695928 1611120 5695240 1611312 5693984 +1602160 5695928 1602200 5696008 1611120 5695240 1611312 5693984 +1602160 5695928 1602200 5696008 1611312 5693984 1608736 5689448 +1602200 5696008 1602224 5696056 1611120 5695240 1611312 5693984 +1602200 5696008 1602224 5696056 1611312 5693984 1602160 5695928 +1602224 5696056 1602504 5696992 1611120 5695240 1611312 5693984 +1608736 5689448 1608616 5689368 1602160 5695928 1611312 5693984 +1611312 5693984 1608840 5689480 1608736 5689448 1602160 5695928 +1611344 5694080 1611312 5693984 1611120 5695240 1611152 5695144 +1611344 5694080 1611312 5693984 1611152 5695144 1611184 5695112 +1611344 5694080 1612440 5693432 1611312 5693984 1611152 5695144 +1611120 5695240 1611152 5695144 1611312 5693984 1602224 5696056 +1611312 5693984 1610008 5689456 1609400 5689560 1609280 5689560 +1610008 5689456 1609400 5689560 1611312 5693984 1611896 5690040 +1611344 5694080 1611496 5694168 1612440 5693432 1611312 5693984 +1612440 5693432 1612400 5693248 1611312 5693984 1611496 5694168 +1611496 5694168 1611608 5694232 1612440 5693432 1611312 5693984 +1611344 5694080 1611464 5694160 1611496 5694168 1611312 5693984 +1611344 5694080 1611360 5694104 1611464 5694160 1611312 5693984 +1611344 5694080 1611464 5694160 1611312 5693984 1611152 5695144 +1611496 5694168 1612440 5693432 1611312 5693984 1611464 5694160 +1609280 5689560 1609232 5689536 1608840 5689480 1611312 5693984 +1612440 5693432 1611368 5693952 1611312 5693984 1611496 5694168 +1612440 5693432 1611368 5693952 1611496 5694168 1611608 5694232 +1611368 5693952 1611312 5693984 1611496 5694168 1611608 5694232 +1611312 5693984 1611368 5693952 1612400 5693248 1612408 5693168 +1611312 5693984 1611368 5693952 1612408 5693168 1612440 5693112 +1611368 5693952 1612400 5693248 1612408 5693168 1612440 5693112 +1611496 5694168 1611544 5694216 1611608 5694232 1611368 5693952 +1612440 5693432 1611368 5693952 1611608 5694232 1612504 5693584 +1611312 5693984 1611368 5693952 1612440 5693112 1612048 5690184 +1612440 5693112 1612208 5690280 1612048 5690184 1611368 5693952 +1611368 5693952 1612408 5693168 1612440 5693112 1612048 5690184 +1611312 5693984 1611368 5693952 1612048 5690184 1611896 5690040 +1611368 5693952 1612440 5693112 1612048 5690184 1611896 5690040 +1611312 5693984 1611368 5693952 1611896 5690040 1610008 5689456 +1611896 5690040 1611360 5689624 1610008 5689456 1611368 5693952 +1611368 5693952 1612048 5690184 1611896 5690040 1610008 5689456 +1611368 5693952 1610008 5689456 1611312 5693984 1611496 5694168 +1611312 5693984 1611368 5693952 1610008 5689456 1609400 5689560 +1611368 5693952 1612440 5693432 1612400 5693248 1612408 5693168 +1612440 5693432 1612400 5693248 1611368 5693952 1611608 5694232 +1611312 5693984 1611464 5694160 1611496 5694168 1611368 5693952 +1611496 5694168 1611608 5694232 1611368 5693952 1611464 5694160 +1611312 5693984 1611344 5694080 1611464 5694160 1611368 5693952 +1611344 5694080 1611360 5694104 1611464 5694160 1611368 5693952 +1611344 5694080 1611360 5694104 1611368 5693952 1611312 5693984 +1611312 5693984 1611344 5694080 1611368 5693952 1610008 5689456 +1611464 5694160 1611496 5694168 1611368 5693952 1611360 5694104 +1611608 5694232 1611616 5693976 1611368 5693952 1611496 5694168 +1611368 5693952 1611464 5694160 1611496 5694168 1611616 5693976 +1611496 5694168 1611608 5694232 1611616 5693976 1611464 5694160 +1611608 5694232 1611616 5693976 1611496 5694168 1611544 5694216 +1612440 5693432 1611616 5693976 1611608 5694232 1612504 5693584 +1611608 5694232 1611712 5694312 1612504 5693584 1611616 5693976 +1611712 5694312 1612680 5693808 1612504 5693584 1611616 5693976 +1612504 5693584 1612440 5693432 1611616 5693976 1611712 5694312 +1611616 5693976 1612440 5693432 1611368 5693952 1611464 5694160 +1611368 5693952 1611616 5693976 1612440 5693432 1612400 5693248 +1611368 5693952 1611616 5693976 1612400 5693248 1612408 5693168 +1611368 5693952 1611464 5694160 1611616 5693976 1612400 5693248 +1612440 5693432 1612400 5693248 1611616 5693976 1612504 5693584 +1611608 5694232 1611712 5694312 1611616 5693976 1611496 5694168 +1611368 5693952 1611360 5694104 1611464 5694160 1611616 5693976 +1611712 5694312 1611688 5693968 1611616 5693976 1611608 5694232 +1612504 5693584 1611688 5693968 1611712 5694312 1612680 5693808 +1611712 5694312 1611768 5694392 1612680 5693808 1611688 5693968 +1611768 5694392 1612584 5694512 1612680 5693808 1611688 5693968 +1612680 5693808 1612504 5693584 1611688 5693968 1611768 5694392 +1611616 5693976 1611688 5693968 1612504 5693584 1612440 5693432 +1611616 5693976 1611688 5693968 1612440 5693432 1612400 5693248 +1611688 5693968 1612504 5693584 1612440 5693432 1612400 5693248 +1611616 5693976 1611688 5693968 1612400 5693248 1611368 5693952 +1612400 5693248 1612408 5693168 1611368 5693952 1611688 5693968 +1611688 5693968 1612440 5693432 1612400 5693248 1611368 5693952 +1611688 5693968 1611368 5693952 1611616 5693976 1611608 5694232 +1611616 5693976 1611496 5694168 1611608 5694232 1611688 5693968 +1612504 5693584 1612440 5693432 1611688 5693968 1612680 5693808 +1611712 5694312 1611768 5694392 1611688 5693968 1611608 5694232 +1611368 5693952 1611672 5693936 1612400 5693248 1612408 5693168 +1611368 5693952 1611672 5693936 1612408 5693168 1612440 5693112 +1611688 5693968 1611672 5693936 1611368 5693952 1611616 5693976 +1612400 5693248 1611672 5693936 1611688 5693968 1612440 5693432 +1611688 5693968 1612504 5693584 1612440 5693432 1611672 5693936 +1612440 5693432 1612400 5693248 1611672 5693936 1612504 5693584 +1611688 5693968 1612680 5693808 1612504 5693584 1611672 5693936 +1611688 5693968 1612504 5693584 1611672 5693936 1611616 5693976 +1611368 5693952 1611616 5693976 1611672 5693936 1612408 5693168 +1611672 5693936 1612440 5693432 1612400 5693248 1612408 5693168 +1611368 5693952 1611688 5693896 1612408 5693168 1612440 5693112 +1612408 5693168 1611688 5693896 1611672 5693936 1612400 5693248 +1611672 5693936 1611688 5693896 1611368 5693952 1611616 5693976 +1611672 5693936 1611688 5693896 1611616 5693976 1611688 5693968 +1611688 5693896 1611616 5693976 1611672 5693936 1612400 5693248 +1611672 5693936 1612440 5693432 1612400 5693248 1611688 5693896 +1612400 5693248 1612408 5693168 1611688 5693896 1612440 5693432 +1611672 5693936 1612504 5693584 1612440 5693432 1611688 5693896 +1611672 5693936 1611688 5693968 1612504 5693584 1611688 5693896 +1612504 5693584 1612440 5693432 1611688 5693896 1611688 5693968 +1611688 5693968 1612680 5693808 1612504 5693584 1611688 5693896 +1611672 5693936 1611688 5693968 1611688 5693896 1611616 5693976 +1612440 5693432 1612400 5693248 1611688 5693896 1612504 5693584 +1611688 5693896 1612408 5693168 1611368 5693952 1611616 5693976 +1612408 5693168 1611368 5693952 1611688 5693896 1612400 5693248 +1611368 5693952 1611672 5693840 1612408 5693168 1612440 5693112 +1611368 5693952 1611672 5693840 1612440 5693112 1612048 5690184 +1611688 5693896 1611672 5693840 1611368 5693952 1611616 5693976 +1611688 5693896 1611672 5693840 1611616 5693976 1611672 5693936 +1611616 5693976 1611688 5693968 1611672 5693936 1611672 5693840 +1611672 5693840 1611368 5693952 1611616 5693976 1611672 5693936 +1611688 5693896 1612408 5693168 1611672 5693840 1611672 5693936 +1612408 5693168 1611672 5693840 1611688 5693896 1612400 5693248 +1611688 5693896 1612440 5693432 1612400 5693248 1611672 5693840 +1611688 5693896 1612504 5693584 1612440 5693432 1611672 5693840 +1612440 5693432 1612400 5693248 1611672 5693840 1612504 5693584 +1611688 5693896 1611688 5693968 1612504 5693584 1611672 5693840 +1611672 5693840 1611672 5693936 1611688 5693896 1612504 5693584 +1612400 5693248 1612408 5693168 1611672 5693840 1612440 5693432 +1611368 5693952 1611616 5693976 1611672 5693840 1612440 5693112 +1611672 5693840 1612400 5693248 1612408 5693168 1612440 5693112 +1611368 5693952 1611624 5693816 1612440 5693112 1612048 5690184 +1612440 5693112 1612208 5690280 1612048 5690184 1611624 5693816 +1612440 5693112 1611624 5693816 1611672 5693840 1612408 5693168 +1611368 5693952 1611624 5693816 1612048 5690184 1611896 5690040 +1611672 5693840 1611624 5693816 1611368 5693952 1611616 5693976 +1611672 5693840 1611624 5693816 1611616 5693976 1611672 5693936 +1611616 5693976 1611688 5693968 1611672 5693936 1611624 5693816 +1611672 5693840 1611624 5693816 1611672 5693936 1611688 5693896 +1611624 5693816 1611616 5693976 1611672 5693936 1611688 5693896 +1611624 5693816 1611368 5693952 1611616 5693976 1611672 5693936 +1611624 5693816 1611688 5693896 1611672 5693840 1612408 5693168 +1611672 5693840 1612400 5693248 1612408 5693168 1611624 5693816 +1612408 5693168 1612440 5693112 1611624 5693816 1612400 5693248 +1611672 5693840 1612440 5693432 1612400 5693248 1611624 5693816 +1611672 5693840 1612400 5693248 1611624 5693816 1611688 5693896 +1611368 5693952 1611616 5693976 1611624 5693816 1612048 5690184 +1611624 5693816 1612408 5693168 1612440 5693112 1612048 5690184 +1612048 5690184 1611592 5693792 1611624 5693816 1612440 5693112 +1612048 5690184 1611592 5693792 1612440 5693112 1612208 5690280 +1611368 5693952 1611592 5693792 1612048 5690184 1611896 5690040 +1611368 5693952 1611592 5693792 1611896 5690040 1610008 5689456 +1611896 5690040 1611360 5689624 1610008 5689456 1611592 5693792 +1611592 5693792 1612048 5690184 1611896 5690040 1610008 5689456 +1611368 5693952 1611592 5693792 1610008 5689456 1611312 5693984 +1611592 5693792 1611896 5690040 1610008 5689456 1611312 5693984 +1610008 5689456 1609400 5689560 1611312 5693984 1611592 5693792 +1610008 5689456 1609672 5689488 1609400 5689560 1611592 5693792 +1610008 5689456 1609400 5689560 1611592 5693792 1611896 5690040 +1611312 5693984 1611368 5693952 1611592 5693792 1609400 5689560 +1609400 5689560 1609280 5689560 1611312 5693984 1611592 5693792 +1611624 5693816 1611592 5693792 1611368 5693952 1611616 5693976 +1611624 5693816 1611592 5693792 1611616 5693976 1611672 5693936 +1611592 5693792 1611616 5693976 1611624 5693816 1612440 5693112 +1611624 5693816 1612408 5693168 1612440 5693112 1611592 5693792 +1612440 5693112 1612048 5690184 1611592 5693792 1612408 5693168 +1611624 5693816 1612400 5693248 1612408 5693168 1611592 5693792 +1611624 5693816 1611672 5693840 1612400 5693248 1611592 5693792 +1612400 5693248 1612408 5693168 1611592 5693792 1611672 5693840 +1611672 5693840 1612440 5693432 1612400 5693248 1611592 5693792 +1611624 5693816 1611672 5693840 1611592 5693792 1611616 5693976 +1612408 5693168 1612440 5693112 1611592 5693792 1612400 5693248 +1611368 5693952 1611616 5693976 1611592 5693792 1611312 5693984 +1612048 5690184 1611896 5690040 1611592 5693792 1612440 5693112 +1611592 5693792 1611480 5693752 1611312 5693984 1611368 5693952 +1611312 5693984 1611480 5693752 1609400 5689560 1609280 5689560 +1611312 5693984 1611480 5693752 1609280 5689560 1608840 5689480 +1609400 5689560 1611480 5693752 1611592 5693792 1610008 5689456 +1609400 5689560 1611480 5693752 1610008 5689456 1609672 5689488 +1611592 5693792 1611896 5690040 1610008 5689456 1611480 5693752 +1611896 5690040 1611360 5689624 1610008 5689456 1611480 5693752 +1611592 5693792 1612048 5690184 1611896 5690040 1611480 5693752 +1611896 5690040 1610008 5689456 1611480 5693752 1612048 5690184 +1610008 5689456 1609400 5689560 1611480 5693752 1611896 5690040 +1611592 5693792 1611480 5693752 1611368 5693952 1611616 5693976 +1611592 5693792 1612048 5690184 1611480 5693752 1611368 5693952 +1611592 5693792 1612440 5693112 1612048 5690184 1611480 5693752 +1612440 5693112 1612208 5690280 1612048 5690184 1611480 5693752 +1611592 5693792 1612408 5693168 1612440 5693112 1611480 5693752 +1612048 5690184 1611896 5690040 1611480 5693752 1612440 5693112 +1611592 5693792 1612400 5693248 1612408 5693168 1611480 5693752 +1612408 5693168 1612440 5693112 1611480 5693752 1612400 5693248 +1611592 5693792 1611672 5693840 1612400 5693248 1611480 5693752 +1611592 5693792 1612400 5693248 1611480 5693752 1611368 5693952 +1612440 5693112 1612048 5690184 1611480 5693752 1612408 5693168 +1611480 5693752 1609280 5689560 1611312 5693984 1611368 5693952 +1611480 5693752 1610008 5689456 1609400 5689560 1609280 5689560 +1611312 5693984 1611408 5693680 1609280 5689560 1608840 5689480 +1611312 5693984 1611408 5693680 1608840 5689480 1608736 5689448 +1609280 5689560 1611408 5693680 1611480 5693752 1609400 5689560 +1609280 5689560 1609232 5689536 1608840 5689480 1611408 5693680 +1611480 5693752 1611408 5693680 1611312 5693984 1611368 5693952 +1611480 5693752 1611408 5693680 1611368 5693952 1611592 5693792 +1611408 5693680 1611368 5693952 1611480 5693752 1609400 5689560 +1611480 5693752 1610008 5689456 1609400 5689560 1611408 5693680 +1610008 5689456 1609672 5689488 1609400 5689560 1611408 5693680 +1609400 5689560 1609280 5689560 1611408 5693680 1610008 5689456 +1611480 5693752 1611896 5690040 1610008 5689456 1611408 5693680 +1611896 5690040 1611360 5689624 1610008 5689456 1611408 5693680 +1611480 5693752 1612048 5690184 1611896 5690040 1611408 5693680 +1611480 5693752 1612440 5693112 1612048 5690184 1611408 5693680 +1612440 5693112 1612208 5690280 1612048 5690184 1611408 5693680 +1612048 5690184 1611896 5690040 1611408 5693680 1612440 5693112 +1611896 5690040 1610008 5689456 1611408 5693680 1612048 5690184 +1611480 5693752 1612408 5693168 1612440 5693112 1611408 5693680 +1611480 5693752 1612400 5693248 1612408 5693168 1611408 5693680 +1612440 5693112 1612048 5690184 1611408 5693680 1612408 5693168 +1611480 5693752 1611592 5693792 1612400 5693248 1611408 5693680 +1612400 5693248 1612408 5693168 1611408 5693680 1611592 5693792 +1611592 5693792 1611672 5693840 1612400 5693248 1611408 5693680 +1612408 5693168 1612440 5693112 1611408 5693680 1612400 5693248 +1611480 5693752 1611592 5693792 1611408 5693680 1611368 5693952 +1610008 5689456 1609400 5689560 1611408 5693680 1611896 5690040 +1611312 5693984 1611368 5693952 1611408 5693680 1608840 5689480 +1611408 5693680 1609400 5689560 1609280 5689560 1608840 5689480 +1609400 5689560 1611192 5693224 1610008 5689456 1609672 5689488 +1611408 5693680 1611192 5693224 1609400 5689560 1609280 5689560 +1610008 5689456 1611192 5693224 1611408 5693680 1611896 5690040 +1610008 5689456 1611192 5693224 1611896 5690040 1611360 5689624 +1611408 5693680 1612048 5690184 1611896 5690040 1611192 5693224 +1611408 5693680 1612440 5693112 1612048 5690184 1611192 5693224 +1612440 5693112 1612208 5690280 1612048 5690184 1611192 5693224 +1612440 5693112 1612544 5693040 1612208 5690280 1611192 5693224 +1612208 5690280 1612048 5690184 1611192 5693224 1612544 5693040 +1612440 5693112 1612544 5693040 1611192 5693224 1611408 5693680 +1611408 5693680 1612408 5693168 1612440 5693112 1611192 5693224 +1612440 5693112 1612544 5693040 1611192 5693224 1612408 5693168 +1612048 5690184 1611896 5690040 1611192 5693224 1612208 5690280 +1612544 5693040 1612736 5692952 1612208 5690280 1611192 5693224 +1611408 5693680 1612400 5693248 1612408 5693168 1611192 5693224 +1611408 5693680 1611592 5693792 1612400 5693248 1611192 5693224 +1612408 5693168 1612440 5693112 1611192 5693224 1612400 5693248 +1611896 5690040 1610008 5689456 1611192 5693224 1612048 5690184 +1611408 5693680 1612400 5693248 1611192 5693224 1609280 5689560 +1611408 5693680 1611192 5693224 1609280 5689560 1608840 5689480 +1611408 5693680 1611192 5693224 1608840 5689480 1611312 5693984 +1608840 5689480 1608736 5689448 1611312 5693984 1611192 5693224 +1611312 5693984 1611408 5693680 1611192 5693224 1608736 5689448 +1608736 5689448 1602160 5695928 1611312 5693984 1611192 5693224 +1602160 5695928 1602200 5696008 1611312 5693984 1611192 5693224 +1602200 5696008 1602224 5696056 1611312 5693984 1611192 5693224 +1602200 5696008 1602224 5696056 1611192 5693224 1602160 5695928 +1611312 5693984 1611408 5693680 1611192 5693224 1602224 5696056 +1602224 5696056 1611120 5695240 1611312 5693984 1611192 5693224 +1602224 5696056 1611120 5695240 1611192 5693224 1602200 5696008 +1611312 5693984 1611408 5693680 1611192 5693224 1611120 5695240 +1602224 5696056 1602504 5696992 1611120 5695240 1611192 5693224 +1608736 5689448 1608616 5689368 1602160 5695928 1611192 5693224 +1608736 5689448 1602160 5695928 1611192 5693224 1608840 5689480 +1602160 5695928 1602200 5696008 1611192 5693224 1608736 5689448 +1611120 5695240 1611152 5695144 1611312 5693984 1611192 5693224 +1611312 5693984 1611408 5693680 1611192 5693224 1611152 5695144 +1611120 5695240 1611152 5695144 1611192 5693224 1602224 5696056 +1611152 5695144 1611344 5694080 1611312 5693984 1611192 5693224 +1611192 5693224 1609400 5689560 1609280 5689560 1608840 5689480 +1609280 5689560 1609232 5689536 1608840 5689480 1611192 5693224 +1611408 5693680 1611192 5693224 1611312 5693984 1611368 5693952 +1611408 5693680 1612400 5693248 1611192 5693224 1611312 5693984 +1611192 5693224 1609280 5689560 1608840 5689480 1608736 5689448 +1611192 5693224 1610008 5689456 1609400 5689560 1609280 5689560 +1610008 5689456 1609400 5689560 1611192 5693224 1611896 5690040 +1609280 5689560 1611064 5692984 1611192 5693224 1609400 5689560 +1608840 5689480 1611064 5692984 1609280 5689560 1609232 5689536 +1611192 5693224 1611064 5692984 1608840 5689480 1608736 5689448 +1611192 5693224 1611064 5692984 1608736 5689448 1602160 5695928 +1608736 5689448 1608616 5689368 1602160 5695928 1611064 5692984 +1611192 5693224 1611064 5692984 1602160 5695928 1602200 5696008 +1611192 5693224 1611064 5692984 1602200 5696008 1602224 5696056 +1611192 5693224 1611064 5692984 1602224 5696056 1611120 5695240 +1611064 5692984 1602200 5696008 1602224 5696056 1611120 5695240 +1602224 5696056 1602504 5696992 1611120 5695240 1611064 5692984 +1611192 5693224 1611064 5692984 1611120 5695240 1611152 5695144 +1611064 5692984 1602224 5696056 1611120 5695240 1611152 5695144 +1611064 5692984 1608736 5689448 1602160 5695928 1602200 5696008 +1611064 5692984 1602160 5695928 1602200 5696008 1602224 5696056 +1611192 5693224 1611064 5692984 1611152 5695144 1611312 5693984 +1611192 5693224 1611064 5692984 1611312 5693984 1611408 5693680 +1611064 5692984 1611120 5695240 1611152 5695144 1611312 5693984 +1611152 5695144 1611344 5694080 1611312 5693984 1611064 5692984 +1611064 5692984 1608840 5689480 1608736 5689448 1602160 5695928 +1611192 5693224 1610008 5689456 1609400 5689560 1611064 5692984 +1610008 5689456 1609672 5689488 1609400 5689560 1611064 5692984 +1609400 5689560 1609280 5689560 1611064 5692984 1610008 5689456 +1611064 5692984 1611312 5693984 1611192 5693224 1610008 5689456 +1611192 5693224 1611896 5690040 1610008 5689456 1611064 5692984 +1611896 5690040 1611360 5689624 1610008 5689456 1611064 5692984 +1611360 5689624 1610184 5689408 1610008 5689456 1611064 5692984 +1611896 5690040 1611376 5689632 1611360 5689624 1611064 5692984 +1611192 5693224 1612048 5690184 1611896 5690040 1611064 5692984 +1611192 5693224 1612208 5690280 1612048 5690184 1611064 5692984 +1611192 5693224 1612544 5693040 1612208 5690280 1611064 5692984 +1611192 5693224 1612440 5693112 1612544 5693040 1611064 5692984 +1612544 5693040 1612208 5690280 1611064 5692984 1612440 5693112 +1611192 5693224 1612408 5693168 1612440 5693112 1611064 5692984 +1612208 5690280 1612048 5690184 1611064 5692984 1612544 5693040 +1612544 5693040 1612736 5692952 1612208 5690280 1611064 5692984 +1612048 5690184 1611896 5690040 1611064 5692984 1612208 5690280 +1610008 5689456 1609400 5689560 1611064 5692984 1611360 5689624 +1611192 5693224 1612440 5693112 1611064 5692984 1611312 5693984 +1611896 5690040 1611360 5689624 1611064 5692984 1612048 5690184 +1611064 5692984 1609280 5689560 1608840 5689480 1608736 5689448 +1609280 5689560 1608840 5689480 1611064 5692984 1609400 5689560 +1609400 5689560 1611000 5692800 1610008 5689456 1609672 5689488 +1611064 5692984 1611000 5692800 1609400 5689560 1609280 5689560 +1610008 5689456 1611000 5692800 1611064 5692984 1611360 5689624 +1611064 5692984 1611896 5690040 1611360 5689624 1611000 5692800 +1610008 5689456 1611000 5692800 1611360 5689624 1610184 5689408 +1611896 5690040 1611376 5689632 1611360 5689624 1611000 5692800 +1611360 5689624 1610008 5689456 1611000 5692800 1611896 5690040 +1611064 5692984 1612048 5690184 1611896 5690040 1611000 5692800 +1611896 5690040 1611360 5689624 1611000 5692800 1612048 5690184 +1611064 5692984 1612208 5690280 1612048 5690184 1611000 5692800 +1611064 5692984 1612544 5693040 1612208 5690280 1611000 5692800 +1611064 5692984 1612440 5693112 1612544 5693040 1611000 5692800 +1611064 5692984 1611192 5693224 1612440 5693112 1611000 5692800 +1612544 5693040 1612208 5690280 1611000 5692800 1612440 5693112 +1612544 5693040 1612736 5692952 1612208 5690280 1611000 5692800 +1612208 5690280 1612048 5690184 1611000 5692800 1612544 5693040 +1612048 5690184 1611896 5690040 1611000 5692800 1612208 5690280 +1611064 5692984 1612440 5693112 1611000 5692800 1609280 5689560 +1611064 5692984 1611000 5692800 1609280 5689560 1608840 5689480 +1611000 5692800 1609400 5689560 1609280 5689560 1608840 5689480 +1609280 5689560 1609232 5689536 1608840 5689480 1611000 5692800 +1611064 5692984 1611000 5692800 1608840 5689480 1608736 5689448 +1611064 5692984 1611000 5692800 1608736 5689448 1602160 5695928 +1608736 5689448 1608616 5689368 1602160 5695928 1611000 5692800 +1611064 5692984 1611000 5692800 1602160 5695928 1602200 5696008 +1611064 5692984 1611000 5692800 1602200 5696008 1602224 5696056 +1611064 5692984 1611000 5692800 1602224 5696056 1611120 5695240 +1611064 5692984 1611000 5692800 1611120 5695240 1611152 5695144 +1602224 5696056 1602504 5696992 1611120 5695240 1611000 5692800 +1611000 5692800 1602160 5695928 1602200 5696008 1602224 5696056 +1611000 5692800 1602200 5696008 1602224 5696056 1611120 5695240 +1611000 5692800 1608736 5689448 1602160 5695928 1602200 5696008 +1611000 5692800 1608840 5689480 1608736 5689448 1602160 5695928 +1611064 5692984 1612440 5693112 1611000 5692800 1611120 5695240 +1611000 5692800 1609280 5689560 1608840 5689480 1608736 5689448 +1609400 5689560 1609280 5689560 1611000 5692800 1609672 5689488 +1611000 5692800 1611360 5689624 1610008 5689456 1609672 5689488 +1610008 5689456 1610992 5692696 1611360 5689624 1610184 5689408 +1611360 5689624 1610992 5692696 1611000 5692800 1611896 5690040 +1611000 5692800 1612048 5690184 1611896 5690040 1610992 5692696 +1611360 5689624 1610992 5692696 1611896 5690040 1611376 5689632 +1611896 5690040 1611840 5689928 1611376 5689632 1610992 5692696 +1611896 5690040 1611376 5689632 1610992 5692696 1612048 5690184 +1611000 5692800 1612208 5690280 1612048 5690184 1610992 5692696 +1612048 5690184 1611896 5690040 1610992 5692696 1612208 5690280 +1611000 5692800 1612544 5693040 1612208 5690280 1610992 5692696 +1611000 5692800 1612440 5693112 1612544 5693040 1610992 5692696 +1611000 5692800 1611064 5692984 1612440 5693112 1610992 5692696 +1611064 5692984 1611192 5693224 1612440 5693112 1610992 5692696 +1612440 5693112 1612544 5693040 1610992 5692696 1611064 5692984 +1612544 5693040 1612736 5692952 1612208 5690280 1610992 5692696 +1612544 5693040 1612208 5690280 1610992 5692696 1612440 5693112 +1612208 5690280 1612048 5690184 1610992 5692696 1612544 5693040 +1610992 5692696 1610008 5689456 1611000 5692800 1611064 5692984 +1611000 5692800 1610992 5692696 1610008 5689456 1609672 5689488 +1611000 5692800 1610992 5692696 1609672 5689488 1609400 5689560 +1611000 5692800 1610992 5692696 1609400 5689560 1609280 5689560 +1610992 5692696 1609672 5689488 1609400 5689560 1609280 5689560 +1611000 5692800 1610992 5692696 1609280 5689560 1608840 5689480 +1609280 5689560 1609232 5689536 1608840 5689480 1610992 5692696 +1611000 5692800 1610992 5692696 1608840 5689480 1608736 5689448 +1610992 5692696 1609280 5689560 1608840 5689480 1608736 5689448 +1611000 5692800 1610992 5692696 1608736 5689448 1602160 5695928 +1610992 5692696 1609400 5689560 1609280 5689560 1608840 5689480 +1611000 5692800 1611064 5692984 1610992 5692696 1608736 5689448 +1610992 5692696 1610008 5689456 1609672 5689488 1609400 5689560 +1610992 5692696 1611360 5689624 1610008 5689456 1609672 5689488 +1611360 5689624 1610008 5689456 1610992 5692696 1611376 5689632 +1611376 5689632 1611024 5692552 1611896 5690040 1611840 5689928 +1610992 5692696 1611024 5692552 1611376 5689632 1611360 5689624 +1611896 5690040 1611024 5692552 1610992 5692696 1612048 5690184 +1610992 5692696 1612208 5690280 1612048 5690184 1611024 5692552 +1612048 5690184 1611896 5690040 1611024 5692552 1612208 5690280 +1610992 5692696 1612544 5693040 1612208 5690280 1611024 5692552 +1612208 5690280 1612048 5690184 1611024 5692552 1612544 5693040 +1612544 5693040 1612736 5692952 1612208 5690280 1611024 5692552 +1612736 5692952 1612376 5690304 1612208 5690280 1611024 5692552 +1612736 5692952 1612880 5692928 1612376 5690304 1611024 5692552 +1612208 5690280 1612048 5690184 1611024 5692552 1612376 5690304 +1612736 5692952 1612376 5690304 1611024 5692552 1612544 5693040 +1610992 5692696 1612440 5693112 1612544 5693040 1611024 5692552 +1610992 5692696 1611064 5692984 1612440 5693112 1611024 5692552 +1611064 5692984 1611192 5693224 1612440 5693112 1611024 5692552 +1610992 5692696 1611000 5692800 1611064 5692984 1611024 5692552 +1611064 5692984 1612440 5693112 1611024 5692552 1611000 5692800 +1612440 5693112 1612544 5693040 1611024 5692552 1611064 5692984 +1612544 5693040 1612736 5692952 1611024 5692552 1612440 5693112 +1610992 5692696 1611000 5692800 1611024 5692552 1611360 5689624 +1610992 5692696 1611024 5692552 1611360 5689624 1610008 5689456 +1611360 5689624 1610184 5689408 1610008 5689456 1611024 5692552 +1611024 5692552 1611376 5689632 1611360 5689624 1610008 5689456 +1610992 5692696 1611024 5692552 1610008 5689456 1609672 5689488 +1610992 5692696 1611024 5692552 1609672 5689488 1609400 5689560 +1610992 5692696 1611024 5692552 1609400 5689560 1609280 5689560 +1610992 5692696 1611024 5692552 1609280 5689560 1608840 5689480 +1611024 5692552 1609400 5689560 1609280 5689560 1608840 5689480 +1610992 5692696 1611024 5692552 1608840 5689480 1608736 5689448 +1609280 5689560 1609232 5689536 1608840 5689480 1611024 5692552 +1611024 5692552 1609672 5689488 1609400 5689560 1609280 5689560 +1611024 5692552 1610008 5689456 1609672 5689488 1609400 5689560 +1610992 5692696 1611000 5692800 1611024 5692552 1608840 5689480 +1611024 5692552 1611360 5689624 1610008 5689456 1609672 5689488 +1611024 5692552 1611896 5690040 1611376 5689632 1611360 5689624 +1611896 5690040 1611376 5689632 1611024 5692552 1612048 5690184 +1612376 5690304 1611112 5692400 1611024 5692552 1612736 5692952 +1612376 5690304 1611112 5692400 1612736 5692952 1612880 5692928 +1611024 5692552 1611112 5692400 1612208 5690280 1612048 5690184 +1611024 5692552 1612544 5693040 1612736 5692952 1611112 5692400 +1612736 5692952 1612376 5690304 1611112 5692400 1612544 5693040 +1611024 5692552 1611112 5692400 1612048 5690184 1611896 5690040 +1611112 5692400 1612208 5690280 1612048 5690184 1611896 5690040 +1611024 5692552 1612440 5693112 1612544 5693040 1611112 5692400 +1612544 5693040 1612736 5692952 1611112 5692400 1612440 5693112 +1611024 5692552 1611064 5692984 1612440 5693112 1611112 5692400 +1611064 5692984 1611192 5693224 1612440 5693112 1611112 5692400 +1611024 5692552 1611000 5692800 1611064 5692984 1611112 5692400 +1611024 5692552 1610992 5692696 1611000 5692800 1611112 5692400 +1611064 5692984 1612440 5693112 1611112 5692400 1611000 5692800 +1612440 5693112 1612544 5693040 1611112 5692400 1611064 5692984 +1611112 5692400 1611896 5690040 1611024 5692552 1611000 5692800 +1611024 5692552 1611112 5692400 1611896 5690040 1611376 5689632 +1611896 5690040 1611840 5689928 1611376 5689632 1611112 5692400 +1611112 5692400 1612048 5690184 1611896 5690040 1611376 5689632 +1611024 5692552 1611112 5692400 1611376 5689632 1611360 5689624 +1611024 5692552 1611112 5692400 1611360 5689624 1610008 5689456 +1611360 5689624 1610184 5689408 1610008 5689456 1611112 5692400 +1611024 5692552 1611112 5692400 1610008 5689456 1609672 5689488 +1611112 5692400 1611360 5689624 1610008 5689456 1609672 5689488 +1611024 5692552 1611112 5692400 1609672 5689488 1609400 5689560 +1611024 5692552 1611112 5692400 1609400 5689560 1609280 5689560 +1611112 5692400 1610008 5689456 1609672 5689488 1609400 5689560 +1611112 5692400 1611376 5689632 1611360 5689624 1610008 5689456 +1611024 5692552 1611000 5692800 1611112 5692400 1609400 5689560 +1611112 5692400 1611896 5690040 1611376 5689632 1611360 5689624 +1611112 5692400 1612376 5690304 1612208 5690280 1612048 5690184 +1612376 5690304 1612208 5690280 1611112 5692400 1612736 5692952 +1612376 5690304 1611168 5692328 1612736 5692952 1612880 5692928 +1612736 5692952 1611168 5692328 1611112 5692400 1612544 5693040 +1611112 5692400 1612440 5693112 1612544 5693040 1611168 5692328 +1612544 5693040 1612736 5692952 1611168 5692328 1612440 5693112 +1611112 5692400 1611064 5692984 1612440 5693112 1611168 5692328 +1611064 5692984 1611192 5693224 1612440 5693112 1611168 5692328 +1611192 5693224 1612408 5693168 1612440 5693112 1611168 5692328 +1612440 5693112 1612544 5693040 1611168 5692328 1611192 5693224 +1611112 5692400 1611000 5692800 1611064 5692984 1611168 5692328 +1611064 5692984 1611192 5693224 1611168 5692328 1611112 5692400 +1612736 5692952 1612376 5690304 1611168 5692328 1612544 5693040 +1611168 5692328 1612376 5690304 1611112 5692400 1611064 5692984 +1611112 5692400 1611168 5692328 1612376 5690304 1612208 5690280 +1611112 5692400 1611168 5692328 1612208 5690280 1612048 5690184 +1611112 5692400 1611168 5692328 1612048 5690184 1611896 5690040 +1611112 5692400 1611168 5692328 1611896 5690040 1611376 5689632 +1611168 5692328 1612048 5690184 1611896 5690040 1611376 5689632 +1611896 5690040 1611840 5689928 1611376 5689632 1611168 5692328 +1611112 5692400 1611168 5692328 1611376 5689632 1611360 5689624 +1611168 5692328 1611896 5690040 1611376 5689632 1611360 5689624 +1611112 5692400 1611168 5692328 1611360 5689624 1610008 5689456 +1611360 5689624 1610184 5689408 1610008 5689456 1611168 5692328 +1611360 5689624 1611328 5689576 1610184 5689408 1611168 5692328 +1611112 5692400 1611168 5692328 1610008 5689456 1609672 5689488 +1611112 5692400 1611168 5692328 1609672 5689488 1609400 5689560 +1611168 5692328 1610008 5689456 1609672 5689488 1609400 5689560 +1611112 5692400 1611168 5692328 1609400 5689560 1611024 5692552 +1610008 5689456 1609672 5689488 1611168 5692328 1610184 5689408 +1611168 5692328 1611376 5689632 1611360 5689624 1610184 5689408 +1611168 5692328 1612208 5690280 1612048 5690184 1611896 5690040 +1611168 5692328 1612736 5692952 1612376 5690304 1612208 5690280 +1611112 5692400 1611064 5692984 1611168 5692328 1609400 5689560 +1611168 5692328 1612376 5690304 1612208 5690280 1612048 5690184 +1612376 5690304 1611224 5692296 1612736 5692952 1612880 5692928 +1611168 5692328 1611224 5692296 1612376 5690304 1612208 5690280 +1611224 5692296 1612736 5692952 1612376 5690304 1612208 5690280 +1611168 5692328 1612736 5692952 1611224 5692296 1612208 5690280 +1612736 5692952 1611224 5692296 1611168 5692328 1612544 5693040 +1611168 5692328 1612440 5693112 1612544 5693040 1611224 5692296 +1612736 5692952 1612376 5690304 1611224 5692296 1612544 5693040 +1611168 5692328 1611192 5693224 1612440 5693112 1611224 5692296 +1612440 5693112 1612544 5693040 1611224 5692296 1611192 5693224 +1611168 5692328 1611064 5692984 1611192 5693224 1611224 5692296 +1611192 5693224 1612408 5693168 1612440 5693112 1611224 5692296 +1612440 5693112 1612544 5693040 1611224 5692296 1612408 5693168 +1611192 5693224 1612400 5693248 1612408 5693168 1611224 5692296 +1611192 5693224 1612408 5693168 1611224 5692296 1611064 5692984 +1611168 5692328 1611112 5692400 1611064 5692984 1611224 5692296 +1611064 5692984 1611192 5693224 1611224 5692296 1611112 5692400 +1611112 5692400 1611000 5692800 1611064 5692984 1611224 5692296 +1611224 5692296 1612208 5690280 1611168 5692328 1611112 5692400 +1612544 5693040 1612736 5692952 1611224 5692296 1612440 5693112 +1611168 5692328 1611224 5692296 1612208 5690280 1612048 5690184 +1611168 5692328 1611224 5692296 1612048 5690184 1611896 5690040 +1611168 5692328 1611224 5692296 1611896 5690040 1611376 5689632 +1611896 5690040 1611840 5689928 1611376 5689632 1611224 5692296 +1611168 5692328 1611224 5692296 1611376 5689632 1611360 5689624 +1611224 5692296 1611896 5690040 1611376 5689632 1611360 5689624 +1611168 5692328 1611224 5692296 1611360 5689624 1610184 5689408 +1611360 5689624 1611328 5689576 1610184 5689408 1611224 5692296 +1611168 5692328 1611224 5692296 1610184 5689408 1610008 5689456 +1611224 5692296 1611376 5689632 1611360 5689624 1610184 5689408 +1611168 5692328 1611224 5692296 1610008 5689456 1609672 5689488 +1611224 5692296 1611360 5689624 1610184 5689408 1610008 5689456 +1611224 5692296 1612048 5690184 1611896 5690040 1611376 5689632 +1611224 5692296 1612376 5690304 1612208 5690280 1612048 5690184 +1611168 5692328 1611112 5692400 1611224 5692296 1610008 5689456 +1611224 5692296 1612208 5690280 1612048 5690184 1611896 5690040 +1612376 5690304 1611320 5692312 1612736 5692952 1612880 5692928 +1611224 5692296 1611320 5692312 1612376 5690304 1612208 5690280 +1611224 5692296 1612736 5692952 1611320 5692312 1612208 5690280 +1612736 5692952 1611320 5692312 1611224 5692296 1612544 5693040 +1611320 5692312 1612208 5690280 1611224 5692296 1612544 5693040 +1611320 5692312 1612736 5692952 1612376 5690304 1612208 5690280 +1612736 5692952 1612376 5690304 1611320 5692312 1612544 5693040 +1611224 5692296 1611320 5692312 1612208 5690280 1612048 5690184 +1611320 5692312 1612376 5690304 1612208 5690280 1612048 5690184 +1611224 5692296 1612544 5693040 1611320 5692312 1612048 5690184 +1611224 5692296 1612440 5693112 1612544 5693040 1611320 5692312 +1611224 5692296 1612408 5693168 1612440 5693112 1611320 5692312 +1611224 5692296 1611192 5693224 1612408 5693168 1611320 5692312 +1612408 5693168 1612440 5693112 1611320 5692312 1611192 5693224 +1611224 5692296 1611192 5693224 1611320 5692312 1612048 5690184 +1612544 5693040 1612736 5692952 1611320 5692312 1612440 5693112 +1611192 5693224 1612400 5693248 1612408 5693168 1611320 5692312 +1611224 5692296 1611064 5692984 1611192 5693224 1611320 5692312 +1611224 5692296 1611112 5692400 1611064 5692984 1611320 5692312 +1611192 5693224 1612408 5693168 1611320 5692312 1611064 5692984 +1611224 5692296 1611112 5692400 1611320 5692312 1612048 5690184 +1611064 5692984 1611192 5693224 1611320 5692312 1611112 5692400 +1611112 5692400 1611000 5692800 1611064 5692984 1611320 5692312 +1611112 5692400 1611000 5692800 1611320 5692312 1611224 5692296 +1611112 5692400 1611024 5692552 1611000 5692800 1611320 5692312 +1611112 5692400 1611024 5692552 1611320 5692312 1611224 5692296 +1611024 5692552 1610992 5692696 1611000 5692800 1611320 5692312 +1611024 5692552 1610992 5692696 1611320 5692312 1611112 5692400 +1611064 5692984 1611192 5693224 1611320 5692312 1611000 5692800 +1611000 5692800 1611064 5692984 1611320 5692312 1610992 5692696 +1611224 5692296 1611168 5692328 1611112 5692400 1611320 5692312 +1611112 5692400 1611024 5692552 1611320 5692312 1611168 5692328 +1611224 5692296 1611168 5692328 1611320 5692312 1612048 5690184 +1612440 5693112 1612544 5693040 1611320 5692312 1612408 5693168 +1611224 5692296 1611320 5692312 1612048 5690184 1611896 5690040 +1612544 5693040 1611416 5692360 1611320 5692312 1612440 5693112 +1611416 5692360 1612736 5692952 1611320 5692312 1612440 5693112 +1611320 5692312 1611416 5692360 1612736 5692952 1612376 5690304 +1612736 5692952 1612880 5692928 1612376 5690304 1611416 5692360 +1611320 5692312 1611416 5692360 1612376 5690304 1612208 5690280 +1611320 5692312 1611416 5692360 1612208 5690280 1612048 5690184 +1611320 5692312 1612440 5693112 1611416 5692360 1612208 5690280 +1611416 5692360 1612736 5692952 1612376 5690304 1612208 5690280 +1611416 5692360 1612544 5693040 1612736 5692952 1612376 5690304 +1612544 5693040 1612736 5692952 1611416 5692360 1612440 5693112 +1611320 5692312 1612408 5693168 1612440 5693112 1611416 5692360 +1611320 5692312 1611192 5693224 1612408 5693168 1611416 5692360 +1611320 5692312 1611064 5692984 1611192 5693224 1611416 5692360 +1611192 5693224 1612408 5693168 1611416 5692360 1611064 5692984 +1612440 5693112 1612544 5693040 1611416 5692360 1612408 5693168 +1611320 5692312 1611064 5692984 1611416 5692360 1612208 5690280 +1611192 5693224 1612400 5693248 1612408 5693168 1611416 5692360 +1611320 5692312 1611000 5692800 1611064 5692984 1611416 5692360 +1611064 5692984 1611192 5693224 1611416 5692360 1611000 5692800 +1611320 5692312 1611000 5692800 1611416 5692360 1612208 5690280 +1611320 5692312 1610992 5692696 1611000 5692800 1611416 5692360 +1611320 5692312 1611024 5692552 1610992 5692696 1611416 5692360 +1611320 5692312 1611024 5692552 1611416 5692360 1612208 5690280 +1611320 5692312 1611112 5692400 1611024 5692552 1611416 5692360 +1611320 5692312 1611168 5692328 1611112 5692400 1611416 5692360 +1611024 5692552 1610992 5692696 1611416 5692360 1611112 5692400 +1611320 5692312 1611112 5692400 1611416 5692360 1612208 5690280 +1611000 5692800 1611064 5692984 1611416 5692360 1610992 5692696 +1610992 5692696 1611000 5692800 1611416 5692360 1611024 5692552 +1612408 5693168 1612440 5693112 1611416 5692360 1611192 5693224 +1612376 5690304 1611456 5692368 1612736 5692952 1612880 5692928 +1611416 5692360 1611456 5692368 1612376 5690304 1612208 5690280 +1611416 5692360 1611456 5692368 1612208 5690280 1611320 5692312 +1612208 5690280 1612048 5690184 1611320 5692312 1611456 5692368 +1611456 5692368 1612376 5690304 1612208 5690280 1611320 5692312 +1612736 5692952 1611456 5692368 1611416 5692360 1612544 5693040 +1611416 5692360 1612544 5693040 1611456 5692368 1611320 5692312 +1611416 5692360 1612440 5693112 1612544 5693040 1611456 5692368 +1611416 5692360 1612408 5693168 1612440 5693112 1611456 5692368 +1612544 5693040 1612736 5692952 1611456 5692368 1612440 5693112 +1611416 5692360 1612408 5693168 1611456 5692368 1611320 5692312 +1612440 5693112 1612544 5693040 1611456 5692368 1612408 5693168 +1611456 5692368 1612736 5692952 1612376 5690304 1612208 5690280 +1612736 5692952 1612376 5690304 1611456 5692368 1612544 5693040 +1611416 5692360 1611192 5693224 1612408 5693168 1611456 5692368 +1611416 5692360 1611064 5692984 1611192 5693224 1611456 5692368 +1611416 5692360 1611000 5692800 1611064 5692984 1611456 5692368 +1611064 5692984 1611192 5693224 1611456 5692368 1611000 5692800 +1612408 5693168 1612440 5693112 1611456 5692368 1611192 5693224 +1611416 5692360 1611000 5692800 1611456 5692368 1611320 5692312 +1611192 5693224 1612400 5693248 1612408 5693168 1611456 5692368 +1611416 5692360 1610992 5692696 1611000 5692800 1611456 5692368 +1611192 5693224 1612408 5693168 1611456 5692368 1611064 5692984 +1612376 5690304 1611544 5692408 1612736 5692952 1612880 5692928 +1612376 5690304 1611544 5692408 1612880 5692928 1612520 5690272 +1611456 5692368 1611544 5692408 1612376 5690304 1612208 5690280 +1611456 5692368 1611544 5692408 1612208 5690280 1611320 5692312 +1611456 5692368 1612736 5692952 1611544 5692408 1612208 5690280 +1612736 5692952 1611544 5692408 1611456 5692368 1612544 5693040 +1611456 5692368 1612440 5693112 1612544 5693040 1611544 5692408 +1611456 5692368 1612408 5693168 1612440 5693112 1611544 5692408 +1611456 5692368 1611192 5693224 1612408 5693168 1611544 5692408 +1612440 5693112 1612544 5693040 1611544 5692408 1612408 5693168 +1612408 5693168 1612440 5693112 1611544 5692408 1611192 5693224 +1611544 5692408 1612208 5690280 1611456 5692368 1611192 5693224 +1612544 5693040 1612736 5692952 1611544 5692408 1612440 5693112 +1612376 5690304 1612208 5690280 1611544 5692408 1612880 5692928 +1611544 5692408 1612544 5693040 1612736 5692952 1612880 5692928 +1611192 5693224 1612400 5693248 1612408 5693168 1611544 5692408 +1611456 5692368 1611064 5692984 1611192 5693224 1611544 5692408 +1611456 5692368 1611000 5692800 1611064 5692984 1611544 5692408 +1611456 5692368 1611416 5692360 1611000 5692800 1611544 5692408 +1611000 5692800 1611064 5692984 1611544 5692408 1611416 5692360 +1611192 5693224 1612408 5693168 1611544 5692408 1611064 5692984 +1611456 5692368 1611416 5692360 1611544 5692408 1612208 5690280 +1611416 5692360 1610992 5692696 1611000 5692800 1611544 5692408 +1611000 5692800 1611064 5692984 1611544 5692408 1610992 5692696 +1611416 5692360 1610992 5692696 1611544 5692408 1611456 5692368 +1611416 5692360 1611024 5692552 1610992 5692696 1611544 5692408 +1611064 5692984 1611192 5693224 1611544 5692408 1611000 5692800 +1612376 5690304 1611664 5692416 1612880 5692928 1612520 5690272 +1612880 5692928 1611664 5692416 1611544 5692408 1612736 5692952 +1611544 5692408 1611664 5692416 1612376 5690304 1612208 5690280 +1611544 5692408 1611664 5692416 1612208 5690280 1611456 5692368 +1612208 5690280 1611320 5692312 1611456 5692368 1611664 5692416 +1612208 5690280 1612048 5690184 1611320 5692312 1611664 5692416 +1611320 5692312 1611416 5692360 1611456 5692368 1611664 5692416 +1611456 5692368 1611544 5692408 1611664 5692416 1611320 5692312 +1611664 5692416 1612376 5690304 1612208 5690280 1611320 5692312 +1611664 5692416 1611456 5692368 1611544 5692408 1612736 5692952 +1611544 5692408 1612544 5693040 1612736 5692952 1611664 5692416 +1612736 5692952 1612880 5692928 1611664 5692416 1612544 5693040 +1611544 5692408 1612440 5693112 1612544 5693040 1611664 5692416 +1611544 5692408 1612408 5693168 1612440 5693112 1611664 5692416 +1611544 5692408 1611192 5693224 1612408 5693168 1611664 5692416 +1611544 5692408 1611064 5692984 1611192 5693224 1611664 5692416 +1612408 5693168 1612440 5693112 1611664 5692416 1611192 5693224 +1612440 5693112 1612544 5693040 1611664 5692416 1612408 5693168 +1611544 5692408 1611192 5693224 1611664 5692416 1611456 5692368 +1612544 5693040 1612736 5692952 1611664 5692416 1612440 5693112 +1611664 5692416 1612880 5692928 1612376 5690304 1612208 5690280 +1612880 5692928 1612376 5690304 1611664 5692416 1612736 5692952 +1611192 5693224 1612400 5693248 1612408 5693168 1611664 5692416 +1612376 5690304 1611784 5692392 1612880 5692928 1612520 5690272 +1612880 5692928 1613016 5692968 1612520 5690272 1611784 5692392 +1611664 5692416 1611784 5692392 1612376 5690304 1612208 5690280 +1611664 5692416 1611784 5692392 1612208 5690280 1611320 5692312 +1612208 5690280 1612048 5690184 1611320 5692312 1611784 5692392 +1611664 5692416 1611784 5692392 1611320 5692312 1611456 5692368 +1611320 5692312 1611416 5692360 1611456 5692368 1611784 5692392 +1611664 5692416 1611784 5692392 1611456 5692368 1611544 5692408 +1611784 5692392 1612208 5690280 1611320 5692312 1611456 5692368 +1611784 5692392 1612376 5690304 1612208 5690280 1611320 5692312 +1611664 5692416 1612880 5692928 1611784 5692392 1611456 5692368 +1612880 5692928 1611784 5692392 1611664 5692416 1612736 5692952 +1611664 5692416 1612544 5693040 1612736 5692952 1611784 5692392 +1611664 5692416 1612440 5693112 1612544 5693040 1611784 5692392 +1612544 5693040 1612736 5692952 1611784 5692392 1612440 5693112 +1611664 5692416 1612408 5693168 1612440 5693112 1611784 5692392 +1611664 5692416 1611192 5693224 1612408 5693168 1611784 5692392 +1612440 5693112 1612544 5693040 1611784 5692392 1612408 5693168 +1611784 5692392 1611456 5692368 1611664 5692416 1612408 5693168 +1612736 5692952 1612880 5692928 1611784 5692392 1612544 5693040 +1612376 5690304 1612208 5690280 1611784 5692392 1612520 5690272 +1611784 5692392 1612736 5692952 1612880 5692928 1612520 5690272 +1612520 5690272 1612176 5692464 1612880 5692928 1613016 5692968 +1611784 5692392 1612176 5692464 1612520 5690272 1612376 5690304 +1611784 5692392 1612176 5692464 1612376 5690304 1612208 5690280 +1611784 5692392 1612880 5692928 1612176 5692464 1612376 5690304 +1612880 5692928 1612176 5692464 1611784 5692392 1612736 5692952 +1611784 5692392 1612544 5693040 1612736 5692952 1612176 5692464 +1611784 5692392 1612440 5693112 1612544 5693040 1612176 5692464 +1611784 5692392 1612408 5693168 1612440 5693112 1612176 5692464 +1612440 5693112 1612544 5693040 1612176 5692464 1612408 5693168 +1611784 5692392 1611664 5692416 1612408 5693168 1612176 5692464 +1612544 5693040 1612736 5692952 1612176 5692464 1612440 5693112 +1612176 5692464 1612376 5690304 1611784 5692392 1612408 5693168 +1612736 5692952 1612880 5692928 1612176 5692464 1612544 5693040 +1612176 5692464 1612880 5692928 1612520 5690272 1612376 5690304 +1612880 5692928 1612520 5690272 1612176 5692464 1612736 5692952 +1612520 5690272 1612328 5692496 1612880 5692928 1613016 5692968 +1612176 5692464 1612328 5692496 1612520 5690272 1612376 5690304 +1612176 5692464 1612328 5692496 1612376 5690304 1611784 5692392 +1612176 5692464 1612880 5692928 1612328 5692496 1612376 5690304 +1612880 5692928 1612328 5692496 1612176 5692464 1612736 5692952 +1612176 5692464 1612544 5693040 1612736 5692952 1612328 5692496 +1612176 5692464 1612440 5693112 1612544 5693040 1612328 5692496 +1612176 5692464 1612408 5693168 1612440 5693112 1612328 5692496 +1612544 5693040 1612736 5692952 1612328 5692496 1612440 5693112 +1612328 5692496 1612376 5690304 1612176 5692464 1612440 5693112 +1612736 5692952 1612880 5692928 1612328 5692496 1612544 5693040 +1612520 5690272 1612376 5690304 1612328 5692496 1613016 5692968 +1612328 5692496 1612736 5692952 1612880 5692928 1613016 5692968 +1612520 5690272 1612328 5692496 1613016 5692968 1612664 5690184 +1612328 5692496 1612880 5692928 1613016 5692968 1612664 5690184 +1612520 5690272 1612376 5690304 1612328 5692496 1612664 5690184 +1613016 5692968 1612744 5690128 1612664 5690184 1612328 5692496 +1613016 5692968 1612360 5692488 1612328 5692496 1612880 5692928 +1612360 5692488 1612664 5690184 1612328 5692496 1612880 5692928 +1612328 5692496 1612736 5692952 1612880 5692928 1612360 5692488 +1612880 5692928 1613016 5692968 1612360 5692488 1612736 5692952 +1612328 5692496 1612544 5693040 1612736 5692952 1612360 5692488 +1612328 5692496 1612440 5693112 1612544 5693040 1612360 5692488 +1612328 5692496 1612544 5693040 1612360 5692488 1612664 5690184 +1612736 5692952 1612880 5692928 1612360 5692488 1612544 5693040 +1613016 5692968 1612664 5690184 1612360 5692488 1612880 5692928 +1612664 5690184 1612360 5692488 1613016 5692968 1612744 5690128 +1612328 5692496 1612360 5692488 1612664 5690184 1612520 5690272 +1612328 5692496 1612360 5692488 1612520 5690272 1612376 5690304 +1612328 5692496 1612360 5692488 1612376 5690304 1612176 5692464 +1612376 5690304 1611784 5692392 1612176 5692464 1612360 5692488 +1612360 5692488 1612520 5690272 1612376 5690304 1612176 5692464 +1612328 5692496 1612544 5693040 1612360 5692488 1612176 5692464 +1612360 5692488 1613016 5692968 1612664 5690184 1612520 5690272 +1612360 5692488 1612664 5690184 1612520 5690272 1612376 5690304 +1612360 5692488 1612552 5692512 1612664 5690184 1612520 5690272 +1612360 5692488 1613016 5692968 1612552 5692512 1612520 5690272 +1613016 5692968 1612552 5692512 1612360 5692488 1612880 5692928 +1612360 5692488 1612736 5692952 1612880 5692928 1612552 5692512 +1612360 5692488 1612544 5693040 1612736 5692952 1612552 5692512 +1612736 5692952 1612880 5692928 1612552 5692512 1612544 5693040 +1612360 5692488 1612328 5692496 1612544 5693040 1612552 5692512 +1612552 5692512 1612520 5690272 1612360 5692488 1612544 5693040 +1612880 5692928 1613016 5692968 1612552 5692512 1612736 5692952 +1612552 5692512 1613016 5692968 1612664 5690184 1612520 5690272 +1613016 5692968 1612664 5690184 1612552 5692512 1612880 5692928 +1612664 5690184 1612552 5692512 1613016 5692968 1612744 5690128 +1612664 5690184 1612552 5692512 1612744 5690128 1612720 5690120 +1612664 5690184 1612520 5690272 1612552 5692512 1612744 5690128 +1612552 5692512 1612880 5692928 1613016 5692968 1612744 5690128 +1612360 5692488 1612552 5692512 1612520 5690272 1612376 5690304 +1612360 5692488 1612552 5692512 1612376 5690304 1612176 5692464 +1612552 5692512 1612664 5690184 1612520 5690272 1612376 5690304 +1612360 5692488 1612544 5693040 1612552 5692512 1612376 5690304 +1613016 5692968 1612768 5690096 1612744 5690128 1612552 5692512 +1613016 5692968 1612744 5692600 1612552 5692512 1612880 5692928 +1612552 5692512 1612736 5692952 1612880 5692928 1612744 5692600 +1612552 5692512 1612544 5693040 1612736 5692952 1612744 5692600 +1612744 5692600 1612744 5690128 1612552 5692512 1612736 5692952 +1612880 5692928 1613016 5692968 1612744 5692600 1612736 5692952 +1613016 5692968 1612744 5690128 1612744 5692600 1612880 5692928 +1612552 5692512 1612744 5692600 1612744 5690128 1612664 5690184 +1612744 5690128 1612720 5690120 1612664 5690184 1612744 5692600 +1612552 5692512 1612744 5692600 1612664 5690184 1612520 5690272 +1612552 5692512 1612744 5692600 1612520 5690272 1612376 5690304 +1612552 5692512 1612736 5692952 1612744 5692600 1612520 5690272 +1612744 5692600 1613016 5692968 1612744 5690128 1612664 5690184 +1612744 5692600 1612744 5690128 1612664 5690184 1612520 5690272 +1612744 5690128 1612744 5692600 1613016 5692968 1612768 5690096 +1612744 5690128 1612664 5690184 1612744 5692600 1612768 5690096 +1612744 5692600 1612880 5692928 1613016 5692968 1612768 5690096 +1613016 5692968 1615312 5689360 1612768 5690096 1612744 5692600 +1613016 5692968 1615312 5689360 1612744 5692600 1612880 5692928 +1615312 5689360 1613280 5689560 1612768 5690096 1612744 5692600 +1613016 5692968 1613112 5693056 1615312 5689360 1612744 5692600 +1613112 5693056 1615384 5689384 1615312 5689360 1612744 5692600 +1613016 5692968 1613112 5693056 1612744 5692600 1612880 5692928 +1615312 5689360 1612768 5690096 1612744 5692600 1613112 5693056 +1612768 5690096 1612744 5690128 1612744 5692600 1615312 5689360 +1615312 5689360 1612936 5692720 1613112 5693056 1615384 5689384 +1615312 5689360 1612744 5692600 1612936 5692720 1615384 5689384 +1612936 5692720 1612744 5692600 1613112 5693056 1615384 5689384 +1612744 5692600 1612936 5692720 1615312 5689360 1612768 5690096 +1612744 5692600 1613112 5693056 1612936 5692720 1612768 5690096 +1612936 5692720 1615384 5689384 1615312 5689360 1612768 5690096 +1615312 5689360 1613280 5689560 1612768 5690096 1612936 5692720 +1613112 5693056 1613384 5693288 1615384 5689384 1612936 5692720 +1613112 5693056 1613216 5693184 1613384 5693288 1612936 5692720 +1615384 5689384 1615312 5689360 1612936 5692720 1613384 5693288 +1613112 5693056 1613384 5693288 1612936 5692720 1612744 5692600 +1613384 5693288 1613488 5693384 1615384 5689384 1612936 5692720 +1613112 5693056 1612936 5692720 1612744 5692600 1613016 5692968 +1612936 5692720 1612768 5690096 1612744 5692600 1613016 5692968 +1612744 5692600 1612880 5692928 1613016 5692968 1612936 5692720 +1612744 5692600 1612736 5692952 1612880 5692928 1612936 5692720 +1612744 5692600 1612552 5692512 1612736 5692952 1612936 5692720 +1612744 5692600 1612736 5692952 1612936 5692720 1612768 5690096 +1612880 5692928 1613016 5692968 1612936 5692720 1612736 5692952 +1613112 5693056 1613384 5693288 1612936 5692720 1613016 5692968 +1613016 5692968 1613112 5693056 1612936 5692720 1612880 5692928 +1612744 5692600 1612936 5692720 1612768 5690096 1612744 5690128 +1612744 5692600 1612936 5692720 1612744 5690128 1612664 5690184 +1612744 5692600 1612736 5692952 1612936 5692720 1612744 5690128 +1612936 5692720 1615312 5689360 1612768 5690096 1612744 5690128 +1612936 5692720 1612984 5692752 1615384 5689384 1615312 5689360 +1612936 5692720 1612984 5692752 1615312 5689360 1612768 5690096 +1612984 5692752 1615384 5689384 1615312 5689360 1612768 5690096 +1612936 5692720 1613384 5693288 1612984 5692752 1612768 5690096 +1612984 5692752 1613384 5693288 1615384 5689384 1615312 5689360 +1612936 5692720 1612984 5692752 1612768 5690096 1612744 5690128 +1612984 5692752 1615312 5689360 1612768 5690096 1612744 5690128 +1612936 5692720 1613384 5693288 1612984 5692752 1612744 5690128 +1615384 5689384 1612984 5692752 1613384 5693288 1613488 5693384 +1615384 5689384 1615312 5689360 1612984 5692752 1613488 5693384 +1612984 5692752 1612936 5692720 1613384 5693288 1613488 5693384 +1615312 5689360 1613280 5689560 1612768 5690096 1612984 5692752 +1613384 5693288 1612984 5692752 1612936 5692720 1613112 5693056 +1613384 5693288 1612984 5692752 1613112 5693056 1613216 5693184 +1612984 5692752 1612744 5690128 1612936 5692720 1613112 5693056 +1612936 5692720 1613016 5692968 1613112 5693056 1612984 5692752 +1612936 5692720 1613016 5692968 1612984 5692752 1612744 5690128 +1613384 5693288 1613488 5693384 1612984 5692752 1613112 5693056 +1613112 5693056 1613384 5693288 1612984 5692752 1613016 5692968 +1612936 5692720 1612880 5692928 1613016 5692968 1612984 5692752 +1612936 5692720 1612736 5692952 1612880 5692928 1612984 5692752 +1612936 5692720 1612880 5692928 1612984 5692752 1612744 5690128 +1613016 5692968 1613112 5693056 1612984 5692752 1612880 5692928 +1612936 5692720 1612984 5692752 1612744 5690128 1612744 5692600 +1615384 5689384 1612984 5692752 1613488 5693384 1615416 5689384 +1612984 5692752 1613080 5692792 1615384 5689384 1615312 5689360 +1612984 5692752 1613080 5692792 1615312 5689360 1612768 5690096 +1612984 5692752 1613080 5692792 1612768 5690096 1612744 5690128 +1613080 5692792 1615312 5689360 1612768 5690096 1612744 5690128 +1613080 5692792 1615384 5689384 1615312 5689360 1612768 5690096 +1612984 5692752 1613488 5693384 1613080 5692792 1612744 5690128 +1613080 5692792 1613488 5693384 1615384 5689384 1615312 5689360 +1612984 5692752 1613080 5692792 1612744 5690128 1612936 5692720 +1613080 5692792 1612768 5690096 1612744 5690128 1612936 5692720 +1612984 5692752 1613488 5693384 1613080 5692792 1612936 5692720 +1613488 5693384 1613080 5692792 1612984 5692752 1613384 5693288 +1613080 5692792 1612936 5692720 1612984 5692752 1613384 5693288 +1612984 5692752 1613112 5693056 1613384 5693288 1613080 5692792 +1613112 5693056 1613216 5693184 1613384 5693288 1613080 5692792 +1612984 5692752 1613112 5693056 1613080 5692792 1612936 5692720 +1613112 5693056 1613216 5693184 1613080 5692792 1612984 5692752 +1613488 5693384 1615384 5689384 1613080 5692792 1613384 5693288 +1613384 5693288 1613488 5693384 1613080 5692792 1613216 5693184 +1615312 5689360 1613280 5689560 1612768 5690096 1613080 5692792 +1612984 5692752 1613016 5692968 1613112 5693056 1613080 5692792 +1612984 5692752 1612880 5692928 1613016 5692968 1613080 5692792 +1612984 5692752 1613016 5692968 1613080 5692792 1612936 5692720 +1613112 5693056 1613216 5693184 1613080 5692792 1613016 5692968 +1612744 5690128 1612744 5692600 1612936 5692720 1613080 5692792 +1615384 5689384 1613080 5692792 1613488 5693384 1615416 5689384 +1613080 5692792 1613192 5692856 1615384 5689384 1615312 5689360 +1613080 5692792 1613192 5692856 1615312 5689360 1612768 5690096 +1613080 5692792 1613192 5692856 1612768 5690096 1612744 5690128 +1613080 5692792 1613192 5692856 1612744 5690128 1612936 5692720 +1613192 5692856 1615312 5689360 1612768 5690096 1612744 5690128 +1613192 5692856 1615384 5689384 1615312 5689360 1612768 5690096 +1613080 5692792 1613488 5693384 1613192 5692856 1612744 5690128 +1613488 5693384 1613192 5692856 1613080 5692792 1613384 5693288 +1613192 5692856 1612744 5690128 1613080 5692792 1613384 5693288 +1613192 5692856 1613488 5693384 1615384 5689384 1615312 5689360 +1613488 5693384 1615384 5689384 1613192 5692856 1613384 5693288 +1613080 5692792 1613216 5693184 1613384 5693288 1613192 5692856 +1613080 5692792 1613112 5693056 1613216 5693184 1613192 5692856 +1613080 5692792 1613016 5692968 1613112 5693056 1613192 5692856 +1613112 5693056 1613216 5693184 1613192 5692856 1613016 5692968 +1613080 5692792 1613016 5692968 1613192 5692856 1612744 5690128 +1613384 5693288 1613488 5693384 1613192 5692856 1613216 5693184 +1613216 5693184 1613384 5693288 1613192 5692856 1613112 5693056 +1615312 5689360 1613280 5689560 1612768 5690096 1613192 5692856 +1613080 5692792 1612984 5692752 1613016 5692968 1613192 5692856 +1615384 5689384 1613192 5692856 1613488 5693384 1615416 5689384 +1615384 5689384 1615312 5689360 1613192 5692856 1615416 5689384 +1613192 5692856 1613384 5693288 1613488 5693384 1615416 5689384 +1613488 5693384 1614120 5694152 1615416 5689384 1613192 5692856 +1613488 5693384 1613480 5692992 1613192 5692856 1613384 5693288 +1613192 5692856 1613216 5693184 1613384 5693288 1613480 5692992 +1613488 5693384 1615416 5689384 1613480 5692992 1613384 5693288 +1613480 5692992 1615416 5689384 1613192 5692856 1613216 5693184 +1613384 5693288 1613488 5693384 1613480 5692992 1613216 5693184 +1615416 5689384 1613480 5692992 1613488 5693384 1614120 5694152 +1615416 5689384 1613192 5692856 1613480 5692992 1614120 5694152 +1613480 5692992 1613384 5693288 1613488 5693384 1614120 5694152 +1613192 5692856 1613112 5693056 1613216 5693184 1613480 5692992 +1613192 5692856 1613016 5692968 1613112 5693056 1613480 5692992 +1613216 5693184 1613384 5693288 1613480 5692992 1613112 5693056 +1613192 5692856 1613112 5693056 1613480 5692992 1615416 5689384 +1615416 5689384 1613480 5692992 1614120 5694152 1614216 5694264 +1613488 5693384 1613584 5693568 1614120 5694152 1613480 5692992 +1613488 5693384 1613584 5693568 1613480 5692992 1613384 5693288 +1614120 5694152 1615416 5689384 1613480 5692992 1613584 5693568 +1613584 5693568 1614056 5694128 1614120 5694152 1613480 5692992 +1613192 5692856 1613480 5692992 1615416 5689384 1615384 5689384 +1613192 5692856 1613480 5692992 1615384 5689384 1615312 5689360 +1613192 5692856 1613480 5692992 1615312 5689360 1612768 5690096 +1613192 5692856 1613480 5692992 1612768 5690096 1612744 5690128 +1613192 5692856 1613480 5692992 1612744 5690128 1613080 5692792 +1613480 5692992 1615312 5689360 1612768 5690096 1612744 5690128 +1613480 5692992 1615384 5689384 1615312 5689360 1612768 5690096 +1613480 5692992 1614120 5694152 1615416 5689384 1615384 5689384 +1613192 5692856 1613112 5693056 1613480 5692992 1612744 5690128 +1615312 5689360 1613280 5689560 1612768 5690096 1613480 5692992 +1613480 5692992 1615416 5689384 1615384 5689384 1615312 5689360 +1613480 5692992 1613552 5693016 1615416 5689384 1615384 5689384 +1613480 5692992 1614120 5694152 1613552 5693016 1615384 5689384 +1614120 5694152 1613552 5693016 1613480 5692992 1613584 5693568 +1613552 5693016 1615384 5689384 1613480 5692992 1613584 5693568 +1613552 5693016 1614120 5694152 1615416 5689384 1615384 5689384 +1614120 5694152 1615416 5689384 1613552 5693016 1613584 5693568 +1614120 5694152 1613552 5693016 1613584 5693568 1614056 5694128 +1615416 5689384 1613552 5693016 1614120 5694152 1614216 5694264 +1615416 5689384 1615384 5689384 1613552 5693016 1614216 5694264 +1613552 5693016 1613584 5693568 1614120 5694152 1614216 5694264 +1613480 5692992 1613488 5693384 1613584 5693568 1613552 5693016 +1613480 5692992 1613488 5693384 1613552 5693016 1615384 5689384 +1613480 5692992 1613384 5693288 1613488 5693384 1613552 5693016 +1613480 5692992 1613384 5693288 1613552 5693016 1615384 5689384 +1613480 5692992 1613216 5693184 1613384 5693288 1613552 5693016 +1613584 5693568 1614120 5694152 1613552 5693016 1613488 5693384 +1613488 5693384 1613584 5693568 1613552 5693016 1613384 5693288 +1613480 5692992 1613552 5693016 1615384 5689384 1615312 5689360 +1613480 5692992 1613552 5693016 1615312 5689360 1612768 5690096 +1613480 5692992 1613552 5693016 1612768 5690096 1612744 5690128 +1613480 5692992 1613552 5693016 1612744 5690128 1613192 5692856 +1612744 5690128 1613080 5692792 1613192 5692856 1613552 5693016 +1613552 5693016 1612768 5690096 1612744 5690128 1613192 5692856 +1613552 5693016 1615312 5689360 1612768 5690096 1612744 5690128 +1613552 5693016 1615416 5689384 1615384 5689384 1615312 5689360 +1613480 5692992 1613384 5693288 1613552 5693016 1613192 5692856 +1615312 5689360 1613280 5689560 1612768 5690096 1613552 5693016 +1615312 5689360 1615000 5689240 1613280 5689560 1613552 5693016 +1612768 5690096 1612744 5690128 1613552 5693016 1613280 5689560 +1613280 5689560 1613216 5689568 1612768 5690096 1613552 5693016 +1613552 5693016 1615384 5689384 1615312 5689360 1613280 5689560 +1615416 5689384 1613552 5693016 1614216 5694264 1615200 5695576 +1613552 5693016 1613704 5693120 1615416 5689384 1615384 5689384 +1613552 5693016 1613704 5693120 1615384 5689384 1615312 5689360 +1613552 5693016 1614216 5694264 1613704 5693120 1615384 5689384 +1613704 5693120 1614216 5694264 1615416 5689384 1615384 5689384 +1614216 5694264 1613704 5693120 1613552 5693016 1614120 5694152 +1613704 5693120 1615384 5689384 1613552 5693016 1614120 5694152 +1613552 5693016 1613584 5693568 1614120 5694152 1613704 5693120 +1613552 5693016 1613488 5693384 1613584 5693568 1613704 5693120 +1613552 5693016 1613488 5693384 1613704 5693120 1615384 5689384 +1613584 5693568 1614120 5694152 1613704 5693120 1613488 5693384 +1614216 5694264 1615416 5689384 1613704 5693120 1614120 5694152 +1613584 5693568 1614056 5694128 1614120 5694152 1613704 5693120 +1613584 5693568 1613656 5693824 1614056 5694128 1613704 5693120 +1613584 5693568 1614056 5694128 1613704 5693120 1613488 5693384 +1614120 5694152 1614216 5694264 1613704 5693120 1614056 5694128 +1613552 5693016 1613384 5693288 1613488 5693384 1613704 5693120 +1613552 5693016 1613480 5692992 1613384 5693288 1613704 5693120 +1613488 5693384 1613584 5693568 1613704 5693120 1613384 5693288 +1613552 5693016 1613384 5693288 1613704 5693120 1615384 5689384 +1615416 5689384 1613704 5693120 1614216 5694264 1615200 5695576 +1613704 5693120 1613840 5693248 1615416 5689384 1615384 5689384 +1613704 5693120 1613840 5693248 1615384 5689384 1613552 5693016 +1613704 5693120 1614216 5694264 1613840 5693248 1615384 5689384 +1614216 5694264 1613840 5693248 1613704 5693120 1614120 5694152 +1613840 5693248 1615384 5689384 1613704 5693120 1614120 5694152 +1613840 5693248 1614216 5694264 1615416 5689384 1615384 5689384 +1614216 5694264 1615416 5689384 1613840 5693248 1614120 5694152 +1613704 5693120 1614056 5694128 1614120 5694152 1613840 5693248 +1613704 5693120 1614056 5694128 1613840 5693248 1615384 5689384 +1614120 5694152 1614216 5694264 1613840 5693248 1614056 5694128 +1613704 5693120 1613584 5693568 1614056 5694128 1613840 5693248 +1613584 5693568 1613656 5693824 1614056 5694128 1613840 5693248 +1613704 5693120 1613488 5693384 1613584 5693568 1613840 5693248 +1613704 5693120 1613384 5693288 1613488 5693384 1613840 5693248 +1613704 5693120 1613488 5693384 1613840 5693248 1615384 5689384 +1613656 5693824 1613984 5694128 1614056 5694128 1613840 5693248 +1613584 5693568 1613656 5693824 1613840 5693248 1613488 5693384 +1614056 5694128 1614120 5694152 1613840 5693248 1613656 5693824 +1615416 5689384 1613840 5693248 1614216 5694264 1615200 5695576 +1613840 5693248 1613992 5693352 1615416 5689384 1615384 5689384 +1613840 5693248 1613992 5693352 1615384 5689384 1613704 5693120 +1615384 5689384 1613552 5693016 1613704 5693120 1613992 5693352 +1613992 5693352 1615416 5689384 1615384 5689384 1613704 5693120 +1613840 5693248 1614216 5694264 1613992 5693352 1613704 5693120 +1614216 5694264 1613992 5693352 1613840 5693248 1614120 5694152 +1613840 5693248 1614056 5694128 1614120 5694152 1613992 5693352 +1613992 5693352 1613704 5693120 1613840 5693248 1614056 5694128 +1614120 5694152 1614216 5694264 1613992 5693352 1614056 5694128 +1613992 5693352 1614216 5694264 1615416 5689384 1615384 5689384 +1614216 5694264 1615416 5689384 1613992 5693352 1614120 5694152 +1613840 5693248 1613656 5693824 1614056 5694128 1613992 5693352 +1613840 5693248 1613584 5693568 1613656 5693824 1613992 5693352 +1614056 5694128 1614120 5694152 1613992 5693352 1613656 5693824 +1613840 5693248 1613584 5693568 1613992 5693352 1613704 5693120 +1613656 5693824 1613984 5694128 1614056 5694128 1613992 5693352 +1613840 5693248 1613488 5693384 1613584 5693568 1613992 5693352 +1613656 5693824 1614056 5694128 1613992 5693352 1613584 5693568 +1615416 5689384 1613992 5693352 1614216 5694264 1615200 5695576 +1615416 5689384 1613992 5693352 1615200 5695576 1615488 5689328 +1615416 5689384 1615384 5689384 1613992 5693352 1615488 5689328 +1613992 5693352 1614120 5694152 1614216 5694264 1615200 5695576 +1615200 5695576 1615376 5695816 1615488 5689328 1613992 5693352 +1614216 5694264 1615056 5695464 1615200 5695576 1613992 5693352 +1613992 5693352 1614216 5694264 1615200 5695576 1615488 5689328 +1613992 5693352 1614112 5693480 1615488 5689328 1615416 5689384 +1613992 5693352 1614112 5693480 1615416 5689384 1615384 5689384 +1613992 5693352 1615200 5695576 1614112 5693480 1615416 5689384 +1614112 5693480 1615200 5695576 1615488 5689328 1615416 5689384 +1615488 5689328 1614112 5693480 1615200 5695576 1615376 5695816 +1615200 5695576 1614112 5693480 1613992 5693352 1614216 5694264 +1614112 5693480 1615416 5689384 1613992 5693352 1614216 5694264 +1613992 5693352 1614120 5694152 1614216 5694264 1614112 5693480 +1613992 5693352 1614056 5694128 1614120 5694152 1614112 5693480 +1613992 5693352 1613656 5693824 1614056 5694128 1614112 5693480 +1614056 5694128 1614120 5694152 1614112 5693480 1613656 5693824 +1613992 5693352 1613656 5693824 1614112 5693480 1615416 5689384 +1614120 5694152 1614216 5694264 1614112 5693480 1614056 5694128 +1615200 5695576 1615488 5689328 1614112 5693480 1614216 5694264 +1613656 5693824 1613984 5694128 1614056 5694128 1614112 5693480 +1613656 5693824 1613984 5694128 1614112 5693480 1613992 5693352 +1614056 5694128 1614120 5694152 1614112 5693480 1613984 5694128 +1613656 5693824 1613800 5694064 1613984 5694128 1614112 5693480 +1613656 5693824 1613752 5694024 1613800 5694064 1614112 5693480 +1613656 5693824 1613752 5694024 1614112 5693480 1613992 5693352 +1613800 5694064 1613904 5694160 1613984 5694128 1614112 5693480 +1613800 5694064 1613984 5694128 1614112 5693480 1613752 5694024 +1613984 5694128 1614056 5694128 1614112 5693480 1613800 5694064 +1613992 5693352 1613584 5693568 1613656 5693824 1614112 5693480 +1613992 5693352 1613840 5693248 1613584 5693568 1614112 5693480 +1613656 5693824 1613752 5694024 1614112 5693480 1613584 5693568 +1613992 5693352 1613584 5693568 1614112 5693480 1615416 5689384 +1615200 5695576 1614112 5693480 1614216 5694264 1615056 5695464 +1615200 5695576 1615488 5689328 1614112 5693480 1615056 5695464 +1614216 5694264 1614256 5694448 1615056 5695464 1614112 5693480 +1614216 5694264 1615056 5695464 1614112 5693480 1614120 5694152 +1614112 5693480 1614424 5693888 1615488 5689328 1615416 5689384 +1614112 5693480 1614424 5693888 1615416 5689384 1613992 5693352 +1614112 5693480 1615200 5695576 1614424 5693888 1615416 5689384 +1615200 5695576 1614424 5693888 1614112 5693480 1615056 5695464 +1614424 5693888 1615416 5689384 1614112 5693480 1615056 5695464 +1614424 5693888 1615200 5695576 1615488 5689328 1615416 5689384 +1615200 5695576 1615488 5689328 1614424 5693888 1615056 5695464 +1615488 5689328 1614424 5693888 1615200 5695576 1615376 5695816 +1614112 5693480 1614216 5694264 1615056 5695464 1614424 5693888 +1614112 5693480 1614216 5694264 1614424 5693888 1615416 5689384 +1615056 5695464 1615200 5695576 1614424 5693888 1614216 5694264 +1614216 5694264 1614256 5694448 1615056 5695464 1614424 5693888 +1615056 5695464 1615200 5695576 1614424 5693888 1614256 5694448 +1614256 5694448 1614856 5695400 1615056 5695464 1614424 5693888 +1614216 5694264 1614256 5694448 1614424 5693888 1614112 5693480 +1614112 5693480 1614120 5694152 1614216 5694264 1614424 5693888 +1614112 5693480 1614056 5694128 1614120 5694152 1614424 5693888 +1614112 5693480 1613984 5694128 1614056 5694128 1614424 5693888 +1614112 5693480 1614056 5694128 1614424 5693888 1615416 5689384 +1614216 5694264 1614256 5694448 1614424 5693888 1614120 5694152 +1614120 5694152 1614216 5694264 1614424 5693888 1614056 5694128 +1614424 5693888 1614520 5693968 1615488 5689328 1615416 5689384 +1614424 5693888 1614520 5693968 1615416 5689384 1614112 5693480 +1615416 5689384 1613992 5693352 1614112 5693480 1614520 5693968 +1614520 5693968 1615488 5689328 1615416 5689384 1614112 5693480 +1614424 5693888 1615200 5695576 1614520 5693968 1614112 5693480 +1615200 5695576 1614520 5693968 1614424 5693888 1615056 5695464 +1614424 5693888 1614256 5694448 1615056 5695464 1614520 5693968 +1614520 5693968 1614112 5693480 1614424 5693888 1614256 5694448 +1615056 5695464 1615200 5695576 1614520 5693968 1614256 5694448 +1614520 5693968 1615200 5695576 1615488 5689328 1615416 5689384 +1615200 5695576 1615488 5689328 1614520 5693968 1615056 5695464 +1615488 5689328 1614520 5693968 1615200 5695576 1615376 5695816 +1615488 5689328 1615416 5689384 1614520 5693968 1615376 5695816 +1614520 5693968 1615056 5695464 1615200 5695576 1615376 5695816 +1615488 5689328 1614520 5693968 1615376 5695816 1623272 5697000 +1614256 5694448 1614856 5695400 1615056 5695464 1614520 5693968 +1614256 5694448 1614856 5695400 1614520 5693968 1614424 5693888 +1615056 5695464 1615200 5695576 1614520 5693968 1614856 5695400 +1614256 5694448 1614280 5694808 1614856 5695400 1614520 5693968 +1614256 5694448 1614280 5694808 1614520 5693968 1614424 5693888 +1614280 5694808 1614440 5695208 1614856 5695400 1614520 5693968 +1614856 5695400 1615056 5695464 1614520 5693968 1614280 5694808 +1614424 5693888 1614216 5694264 1614256 5694448 1614520 5693968 +1614256 5694448 1614280 5694808 1614520 5693968 1614216 5694264 +1614424 5693888 1614216 5694264 1614520 5693968 1614112 5693480 +1614424 5693888 1614120 5694152 1614216 5694264 1614520 5693968 +1614520 5693968 1614656 5694032 1615488 5689328 1615416 5689384 +1614520 5693968 1614656 5694032 1615416 5689384 1614112 5693480 +1615416 5689384 1613992 5693352 1614112 5693480 1614656 5694032 +1614520 5693968 1614656 5694032 1614112 5693480 1614424 5693888 +1614656 5694032 1615416 5689384 1614112 5693480 1614424 5693888 +1614656 5694032 1615488 5689328 1615416 5689384 1614112 5693480 +1614520 5693968 1615376 5695816 1614656 5694032 1614424 5693888 +1614656 5694032 1615376 5695816 1615488 5689328 1615416 5689384 +1615488 5689328 1614656 5694032 1615376 5695816 1623272 5697000 +1615488 5689328 1614656 5694032 1623272 5697000 1623304 5696976 +1615488 5689328 1614656 5694032 1623304 5696976 1623376 5696968 +1615488 5689328 1615416 5689384 1614656 5694032 1623304 5696976 +1614656 5694032 1614520 5693968 1615376 5695816 1623272 5697000 +1614656 5694032 1615376 5695816 1623272 5697000 1623304 5696976 +1615376 5695816 1614656 5694032 1614520 5693968 1615200 5695576 +1614656 5694032 1614424 5693888 1614520 5693968 1615200 5695576 +1614520 5693968 1615056 5695464 1615200 5695576 1614656 5694032 +1614520 5693968 1614856 5695400 1615056 5695464 1614656 5694032 +1614520 5693968 1614856 5695400 1614656 5694032 1614424 5693888 +1615056 5695464 1615200 5695576 1614656 5694032 1614856 5695400 +1615376 5695816 1623272 5697000 1614656 5694032 1615200 5695576 +1615200 5695576 1615376 5695816 1614656 5694032 1615056 5695464 +1615376 5695816 1615512 5696024 1623272 5697000 1614656 5694032 +1614520 5693968 1614280 5694808 1614856 5695400 1614656 5694032 +1614856 5695400 1615056 5695464 1614656 5694032 1614280 5694808 +1614520 5693968 1614280 5694808 1614656 5694032 1614424 5693888 +1614280 5694808 1614440 5695208 1614856 5695400 1614656 5694032 +1614520 5693968 1614256 5694448 1614280 5694808 1614656 5694032 +1614520 5693968 1614216 5694264 1614256 5694448 1614656 5694032 +1614520 5693968 1614216 5694264 1614656 5694032 1614424 5693888 +1614256 5694448 1614280 5694808 1614656 5694032 1614216 5694264 +1614280 5694808 1614856 5695400 1614656 5694032 1614256 5694448 +1614520 5693968 1614424 5693888 1614216 5694264 1614656 5694032 +1615376 5695816 1614688 5694072 1614656 5694032 1615200 5695576 +1614688 5694072 1623272 5697000 1614656 5694032 1615200 5695576 +1615376 5695816 1623272 5697000 1614688 5694072 1615200 5695576 +1614656 5694032 1614688 5694072 1623272 5697000 1623304 5696976 +1614656 5694032 1614688 5694072 1623304 5696976 1615488 5689328 +1623304 5696976 1623376 5696968 1615488 5689328 1614688 5694072 +1614656 5694032 1614688 5694072 1615488 5689328 1615416 5689384 +1614688 5694072 1623304 5696976 1615488 5689328 1615416 5689384 +1614656 5694032 1614688 5694072 1615416 5689384 1614112 5693480 +1614656 5694032 1615200 5695576 1614688 5694072 1615416 5689384 +1614688 5694072 1615376 5695816 1623272 5697000 1623304 5696976 +1614688 5694072 1623272 5697000 1623304 5696976 1615488 5689328 +1614656 5694032 1615056 5695464 1615200 5695576 1614688 5694072 +1614656 5694032 1614856 5695400 1615056 5695464 1614688 5694072 +1614656 5694032 1614280 5694808 1614856 5695400 1614688 5694072 +1614856 5695400 1615056 5695464 1614688 5694072 1614280 5694808 +1614656 5694032 1614280 5694808 1614688 5694072 1615416 5689384 +1615200 5695576 1615376 5695816 1614688 5694072 1615056 5695464 +1615056 5695464 1615200 5695576 1614688 5694072 1614856 5695400 +1623272 5697000 1614688 5694072 1615376 5695816 1615512 5696024 +1614280 5694808 1614440 5695208 1614856 5695400 1614688 5694072 +1614656 5694032 1614256 5694448 1614280 5694808 1614688 5694072 +1614280 5694808 1614856 5695400 1614688 5694072 1614256 5694448 +1614656 5694032 1614256 5694448 1614688 5694072 1615416 5689384 +1614656 5694032 1614216 5694264 1614256 5694448 1614688 5694072 +1614656 5694032 1614520 5693968 1614216 5694264 1614688 5694072 +1614656 5694032 1614520 5693968 1614688 5694072 1615416 5689384 +1614216 5694264 1614256 5694448 1614688 5694072 1614520 5693968 +1614256 5694448 1614280 5694808 1614688 5694072 1614216 5694264 +1614520 5693968 1614424 5693888 1614216 5694264 1614688 5694072 +1614688 5694072 1614752 5694200 1623272 5697000 1623304 5696976 +1614688 5694072 1615376 5695816 1614752 5694200 1623304 5696976 +1615376 5695816 1614752 5694200 1614688 5694072 1615200 5695576 +1614688 5694072 1615056 5695464 1615200 5695576 1614752 5694200 +1614752 5694200 1623304 5696976 1614688 5694072 1615056 5695464 +1615200 5695576 1615376 5695816 1614752 5694200 1615056 5695464 +1614752 5694200 1615376 5695816 1623272 5697000 1623304 5696976 +1615376 5695816 1623272 5697000 1614752 5694200 1615200 5695576 +1614688 5694072 1614752 5694200 1623304 5696976 1615488 5689328 +1614688 5694072 1614752 5694200 1615488 5689328 1615416 5689384 +1623304 5696976 1623376 5696968 1615488 5689328 1614752 5694200 +1614752 5694200 1623272 5697000 1623304 5696976 1615488 5689328 +1614688 5694072 1615056 5695464 1614752 5694200 1615488 5689328 +1614688 5694072 1614856 5695400 1615056 5695464 1614752 5694200 +1614688 5694072 1614280 5694808 1614856 5695400 1614752 5694200 +1614688 5694072 1614256 5694448 1614280 5694808 1614752 5694200 +1614280 5694808 1614856 5695400 1614752 5694200 1614256 5694448 +1615056 5695464 1615200 5695576 1614752 5694200 1614856 5695400 +1614688 5694072 1614256 5694448 1614752 5694200 1615488 5689328 +1614856 5695400 1615056 5695464 1614752 5694200 1614280 5694808 +1623272 5697000 1614752 5694200 1615376 5695816 1615512 5696024 +1623272 5697000 1623304 5696976 1614752 5694200 1615512 5696024 +1614752 5694200 1615200 5695576 1615376 5695816 1615512 5696024 +1623272 5697000 1614752 5694200 1615512 5696024 1622016 5697816 +1623272 5697000 1614752 5694200 1622016 5697816 1622080 5697800 +1615512 5696024 1621936 5697864 1622016 5697816 1614752 5694200 +1623272 5697000 1623304 5696976 1614752 5694200 1622016 5697816 +1614752 5694200 1615376 5695816 1615512 5696024 1622016 5697816 +1614280 5694808 1614440 5695208 1614856 5695400 1614752 5694200 +1614688 5694072 1614216 5694264 1614256 5694448 1614752 5694200 +1614256 5694448 1614280 5694808 1614752 5694200 1614216 5694264 +1614688 5694072 1614216 5694264 1614752 5694200 1615488 5689328 +1614688 5694072 1614520 5693968 1614216 5694264 1614752 5694200 +1622016 5697816 1614840 5694304 1615512 5696024 1621936 5697864 +1614752 5694200 1614840 5694304 1622016 5697816 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1614840 5694304 +1614752 5694200 1614840 5694304 1623272 5697000 1623304 5696976 +1614752 5694200 1614840 5694304 1623304 5696976 1615488 5689328 +1623304 5696976 1623376 5696968 1615488 5689328 1614840 5694304 +1614840 5694304 1623272 5697000 1623304 5696976 1615488 5689328 +1614752 5694200 1615512 5696024 1614840 5694304 1615488 5689328 +1614840 5694304 1615512 5696024 1622016 5697816 1623272 5697000 +1614840 5694304 1622016 5697816 1623272 5697000 1623304 5696976 +1614752 5694200 1614840 5694304 1615488 5689328 1614688 5694072 +1615488 5689328 1615416 5689384 1614688 5694072 1614840 5694304 +1614840 5694304 1623304 5696976 1615488 5689328 1614688 5694072 +1614752 5694200 1615512 5696024 1614840 5694304 1614688 5694072 +1615512 5696024 1614840 5694304 1614752 5694200 1615376 5695816 +1614840 5694304 1614688 5694072 1614752 5694200 1615376 5695816 +1614752 5694200 1615200 5695576 1615376 5695816 1614840 5694304 +1614752 5694200 1615056 5695464 1615200 5695576 1614840 5694304 +1614752 5694200 1614856 5695400 1615056 5695464 1614840 5694304 +1615056 5695464 1615200 5695576 1614840 5694304 1614856 5695400 +1614752 5694200 1614856 5695400 1614840 5694304 1614688 5694072 +1615200 5695576 1615376 5695816 1614840 5694304 1615056 5695464 +1615512 5696024 1622016 5697816 1614840 5694304 1615376 5695816 +1614752 5694200 1614280 5694808 1614856 5695400 1614840 5694304 +1614752 5694200 1614256 5694448 1614280 5694808 1614840 5694304 +1614752 5694200 1614216 5694264 1614256 5694448 1614840 5694304 +1614856 5695400 1615056 5695464 1614840 5694304 1614280 5694808 +1614752 5694200 1614256 5694448 1614840 5694304 1614688 5694072 +1614280 5694808 1614856 5695400 1614840 5694304 1614256 5694448 +1615376 5695816 1615512 5696024 1614840 5694304 1615200 5695576 +1614280 5694808 1614440 5695208 1614856 5695400 1614840 5694304 +1614856 5695400 1615056 5695464 1614840 5694304 1614440 5695208 +1614280 5694808 1614440 5695208 1614840 5694304 1614256 5694448 +1614280 5694808 1614344 5695072 1614440 5695208 1614840 5694304 +1614280 5694808 1614344 5695072 1614840 5694304 1614256 5694448 +1614440 5695208 1614856 5695400 1614840 5694304 1614344 5695072 +1614440 5695208 1614696 5695376 1614856 5695400 1614840 5694304 +1622016 5697816 1614952 5694368 1615512 5696024 1621936 5697864 +1614840 5694304 1614952 5694368 1622016 5697816 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1614952 5694368 +1614840 5694304 1615512 5696024 1614952 5694368 1623272 5697000 +1615512 5696024 1614952 5694368 1614840 5694304 1615376 5695816 +1614952 5694368 1623272 5697000 1614840 5694304 1615376 5695816 +1614952 5694368 1615512 5696024 1622016 5697816 1623272 5697000 +1615512 5696024 1622016 5697816 1614952 5694368 1615376 5695816 +1614840 5694304 1614952 5694368 1623272 5697000 1623304 5696976 +1614840 5694304 1614952 5694368 1623304 5696976 1615488 5689328 +1623304 5696976 1623376 5696968 1615488 5689328 1614952 5694368 +1614840 5694304 1614952 5694368 1615488 5689328 1614688 5694072 +1615488 5689328 1615416 5689384 1614688 5694072 1614952 5694368 +1615416 5689384 1614656 5694032 1614688 5694072 1614952 5694368 +1614688 5694072 1614840 5694304 1614952 5694368 1615416 5689384 +1614952 5694368 1623304 5696976 1615488 5689328 1615416 5689384 +1614952 5694368 1622016 5697816 1623272 5697000 1623304 5696976 +1614840 5694304 1615376 5695816 1614952 5694368 1614688 5694072 +1614952 5694368 1623272 5697000 1623304 5696976 1615488 5689328 +1614840 5694304 1614952 5694368 1614688 5694072 1614752 5694200 +1614952 5694368 1615416 5689384 1614688 5694072 1614752 5694200 +1614840 5694304 1615376 5695816 1614952 5694368 1614752 5694200 +1614840 5694304 1615200 5695576 1615376 5695816 1614952 5694368 +1614840 5694304 1615056 5695464 1615200 5695576 1614952 5694368 +1614840 5694304 1614856 5695400 1615056 5695464 1614952 5694368 +1614840 5694304 1614440 5695208 1614856 5695400 1614952 5694368 +1614856 5695400 1615056 5695464 1614952 5694368 1614440 5695208 +1615056 5695464 1615200 5695576 1614952 5694368 1614856 5695400 +1614840 5694304 1614440 5695208 1614952 5694368 1614752 5694200 +1615376 5695816 1615512 5696024 1614952 5694368 1615200 5695576 +1615200 5695576 1615376 5695816 1614952 5694368 1615056 5695464 +1614840 5694304 1614344 5695072 1614440 5695208 1614952 5694368 +1614440 5695208 1614856 5695400 1614952 5694368 1614344 5695072 +1614840 5694304 1614344 5695072 1614952 5694368 1614752 5694200 +1614840 5694304 1614280 5694808 1614344 5695072 1614952 5694368 +1614840 5694304 1614280 5694808 1614952 5694368 1614752 5694200 +1614840 5694304 1614256 5694448 1614280 5694808 1614952 5694368 +1614344 5695072 1614440 5695208 1614952 5694368 1614280 5694808 +1614440 5695208 1614696 5695376 1614856 5695400 1614952 5694368 +1614440 5695208 1614696 5695376 1614952 5694368 1614344 5695072 +1614856 5695400 1615056 5695464 1614952 5694368 1614696 5695376 +1614440 5695208 1614568 5695320 1614696 5695376 1614952 5694368 +1615488 5689328 1615176 5694424 1623304 5696976 1623376 5696968 +1614952 5694368 1615176 5694424 1615488 5689328 1615416 5689384 +1615176 5694424 1623304 5696976 1615488 5689328 1615416 5689384 +1614952 5694368 1615176 5694424 1615416 5689384 1614688 5694072 +1615416 5689384 1614656 5694032 1614688 5694072 1615176 5694424 +1614688 5694072 1614952 5694368 1615176 5694424 1614656 5694032 +1615416 5689384 1614112 5693480 1614656 5694032 1615176 5694424 +1614952 5694368 1615176 5694424 1614688 5694072 1614752 5694200 +1615176 5694424 1615488 5689328 1615416 5689384 1614656 5694032 +1614952 5694368 1623304 5696976 1615176 5694424 1614688 5694072 +1623304 5696976 1615176 5694424 1614952 5694368 1623272 5697000 +1623304 5696976 1615488 5689328 1615176 5694424 1623272 5697000 +1614952 5694368 1622016 5697816 1623272 5697000 1615176 5694424 +1622016 5697816 1622080 5697800 1623272 5697000 1615176 5694424 +1614952 5694368 1615512 5696024 1622016 5697816 1615176 5694424 +1615512 5696024 1621936 5697864 1622016 5697816 1615176 5694424 +1621936 5697864 1621968 5697856 1622016 5697816 1615176 5694424 +1622016 5697816 1623272 5697000 1615176 5694424 1621936 5697864 +1615512 5696024 1621936 5697864 1615176 5694424 1614952 5694368 +1615176 5694424 1614688 5694072 1614952 5694368 1615512 5696024 +1614952 5694368 1615376 5695816 1615512 5696024 1615176 5694424 +1614952 5694368 1615200 5695576 1615376 5695816 1615176 5694424 +1615512 5696024 1621936 5697864 1615176 5694424 1615376 5695816 +1614952 5694368 1615200 5695576 1615176 5694424 1614688 5694072 +1615376 5695816 1615512 5696024 1615176 5694424 1615200 5695576 +1623272 5697000 1623304 5696976 1615176 5694424 1622016 5697816 +1614952 5694368 1615056 5695464 1615200 5695576 1615176 5694424 +1614952 5694368 1614856 5695400 1615056 5695464 1615176 5694424 +1614952 5694368 1614696 5695376 1614856 5695400 1615176 5694424 +1615200 5695576 1615376 5695816 1615176 5694424 1615056 5695464 +1614952 5694368 1614856 5695400 1615176 5694424 1614688 5694072 +1615056 5695464 1615200 5695576 1615176 5694424 1614856 5695400 +1615512 5696024 1615632 5696264 1621936 5697864 1615176 5694424 +1621936 5697864 1622016 5697816 1615176 5694424 1615632 5696264 +1615512 5696024 1615632 5696264 1615176 5694424 1615376 5695816 +1615632 5696264 1615680 5696424 1621936 5697864 1615176 5694424 +1615176 5694424 1615352 5694448 1615488 5689328 1615416 5689384 +1615176 5694424 1623304 5696976 1615352 5694448 1615416 5689384 +1623304 5696976 1615352 5694448 1615176 5694424 1623272 5697000 +1615352 5694448 1615416 5689384 1615176 5694424 1623272 5697000 +1615352 5694448 1623304 5696976 1615488 5689328 1615416 5689384 +1623304 5696976 1615488 5689328 1615352 5694448 1623272 5697000 +1615488 5689328 1615352 5694448 1623304 5696976 1623376 5696968 +1615176 5694424 1615352 5694448 1615416 5689384 1614656 5694032 +1615352 5694448 1615488 5689328 1615416 5689384 1614656 5694032 +1615176 5694424 1623272 5697000 1615352 5694448 1614656 5694032 +1615416 5689384 1614112 5693480 1614656 5694032 1615352 5694448 +1615176 5694424 1615352 5694448 1614656 5694032 1614688 5694072 +1615176 5694424 1623272 5697000 1615352 5694448 1614688 5694072 +1615176 5694424 1615352 5694448 1614688 5694072 1614952 5694368 +1615352 5694448 1615416 5689384 1614656 5694032 1614688 5694072 +1615176 5694424 1622016 5697816 1623272 5697000 1615352 5694448 +1615176 5694424 1622016 5697816 1615352 5694448 1614688 5694072 +1623272 5697000 1623304 5696976 1615352 5694448 1622016 5697816 +1622016 5697816 1622080 5697800 1623272 5697000 1615352 5694448 +1615176 5694424 1621936 5697864 1622016 5697816 1615352 5694448 +1615176 5694424 1621936 5697864 1615352 5694448 1614688 5694072 +1615176 5694424 1615632 5696264 1621936 5697864 1615352 5694448 +1615176 5694424 1615632 5696264 1615352 5694448 1614688 5694072 +1621936 5697864 1621968 5697856 1622016 5697816 1615352 5694448 +1621936 5697864 1622016 5697816 1615352 5694448 1615632 5696264 +1622016 5697816 1623272 5697000 1615352 5694448 1621936 5697864 +1615632 5696264 1615680 5696424 1621936 5697864 1615352 5694448 +1615176 5694424 1615512 5696024 1615632 5696264 1615352 5694448 +1615176 5694424 1615512 5696024 1615352 5694448 1614688 5694072 +1615632 5696264 1621936 5697864 1615352 5694448 1615512 5696024 +1615176 5694424 1615376 5695816 1615512 5696024 1615352 5694448 +1615176 5694424 1615376 5695816 1615352 5694448 1614688 5694072 +1615176 5694424 1615200 5695576 1615376 5695816 1615352 5694448 +1615176 5694424 1615200 5695576 1615352 5694448 1614688 5694072 +1615176 5694424 1615056 5695464 1615200 5695576 1615352 5694448 +1615176 5694424 1615056 5695464 1615352 5694448 1614688 5694072 +1615376 5695816 1615512 5696024 1615352 5694448 1615200 5695576 +1615200 5695576 1615376 5695816 1615352 5694448 1615056 5695464 +1615176 5694424 1614856 5695400 1615056 5695464 1615352 5694448 +1615512 5696024 1615632 5696264 1615352 5694448 1615376 5695816 +1615352 5694448 1615440 5694472 1615488 5689328 1615416 5689384 +1615352 5694448 1615440 5694472 1615416 5689384 1614656 5694032 +1615440 5694472 1615488 5689328 1615416 5689384 1614656 5694032 +1615352 5694448 1623304 5696976 1615440 5694472 1614656 5694032 +1623304 5696976 1615440 5694472 1615352 5694448 1623272 5697000 +1615352 5694448 1622016 5697816 1623272 5697000 1615440 5694472 +1615440 5694472 1614656 5694032 1615352 5694448 1622016 5697816 +1623272 5697000 1623304 5696976 1615440 5694472 1622016 5697816 +1615440 5694472 1623304 5696976 1615488 5689328 1615416 5689384 +1623304 5696976 1615488 5689328 1615440 5694472 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1615440 5694472 +1615488 5689328 1615440 5694472 1623304 5696976 1623376 5696968 +1615416 5689384 1614112 5693480 1614656 5694032 1615440 5694472 +1615352 5694448 1615440 5694472 1614656 5694032 1614688 5694072 +1615352 5694448 1621936 5697864 1622016 5697816 1615440 5694472 +1622016 5697816 1623272 5697000 1615440 5694472 1621936 5697864 +1615352 5694448 1621936 5697864 1615440 5694472 1614656 5694032 +1621936 5697864 1621968 5697856 1622016 5697816 1615440 5694472 +1615352 5694448 1615632 5696264 1621936 5697864 1615440 5694472 +1615352 5694448 1615632 5696264 1615440 5694472 1614656 5694032 +1615352 5694448 1615512 5696024 1615632 5696264 1615440 5694472 +1615352 5694448 1615512 5696024 1615440 5694472 1614656 5694032 +1615632 5696264 1621936 5697864 1615440 5694472 1615512 5696024 +1621936 5697864 1622016 5697816 1615440 5694472 1615632 5696264 +1615632 5696264 1615680 5696424 1621936 5697864 1615440 5694472 +1615352 5694448 1615376 5695816 1615512 5696024 1615440 5694472 +1615352 5694448 1615376 5695816 1615440 5694472 1614656 5694032 +1615512 5696024 1615632 5696264 1615440 5694472 1615376 5695816 +1615352 5694448 1615200 5695576 1615376 5695816 1615440 5694472 +1615352 5694448 1615200 5695576 1615440 5694472 1614656 5694032 +1615352 5694448 1615056 5695464 1615200 5695576 1615440 5694472 +1615352 5694448 1615056 5695464 1615440 5694472 1614656 5694032 +1615352 5694448 1615176 5694424 1615056 5695464 1615440 5694472 +1615200 5695576 1615376 5695816 1615440 5694472 1615056 5695464 +1615376 5695816 1615512 5696024 1615440 5694472 1615200 5695576 +1615440 5694472 1615584 5694488 1615488 5689328 1615416 5689384 +1615440 5694472 1615584 5694488 1615416 5689384 1614656 5694032 +1615440 5694472 1615584 5694488 1614656 5694032 1615352 5694448 +1615584 5694488 1615416 5689384 1614656 5694032 1615352 5694448 +1615584 5694488 1615488 5689328 1615416 5689384 1614656 5694032 +1615440 5694472 1623304 5696976 1615584 5694488 1615352 5694448 +1623304 5696976 1615584 5694488 1615440 5694472 1623272 5697000 +1615440 5694472 1622016 5697816 1623272 5697000 1615584 5694488 +1615440 5694472 1621936 5697864 1622016 5697816 1615584 5694488 +1622016 5697816 1623272 5697000 1615584 5694488 1621936 5697864 +1615584 5694488 1615352 5694448 1615440 5694472 1621936 5697864 +1623272 5697000 1623304 5696976 1615584 5694488 1622016 5697816 +1615584 5694488 1623304 5696976 1615488 5689328 1615416 5689384 +1623304 5696976 1615488 5689328 1615584 5694488 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1615584 5694488 +1621936 5697864 1621968 5697856 1622016 5697816 1615584 5694488 +1615488 5689328 1615584 5694488 1623304 5696976 1623376 5696968 +1615416 5689384 1614112 5693480 1614656 5694032 1615584 5694488 +1614656 5694032 1614688 5694072 1615352 5694448 1615584 5694488 +1615440 5694472 1615632 5696264 1621936 5697864 1615584 5694488 +1621936 5697864 1622016 5697816 1615584 5694488 1615632 5696264 +1615440 5694472 1615632 5696264 1615584 5694488 1615352 5694448 +1615440 5694472 1615512 5696024 1615632 5696264 1615584 5694488 +1615440 5694472 1615512 5696024 1615584 5694488 1615352 5694448 +1615440 5694472 1615376 5695816 1615512 5696024 1615584 5694488 +1615440 5694472 1615376 5695816 1615584 5694488 1615352 5694448 +1615512 5696024 1615632 5696264 1615584 5694488 1615376 5695816 +1615632 5696264 1621936 5697864 1615584 5694488 1615512 5696024 +1615632 5696264 1615680 5696424 1621936 5697864 1615584 5694488 +1615680 5696424 1615696 5696632 1621936 5697864 1615584 5694488 +1621936 5697864 1622016 5697816 1615584 5694488 1615680 5696424 +1615632 5696264 1615680 5696424 1615584 5694488 1615512 5696024 +1615440 5694472 1615200 5695576 1615376 5695816 1615584 5694488 +1615440 5694472 1615200 5695576 1615584 5694488 1615352 5694448 +1615376 5695816 1615512 5696024 1615584 5694488 1615200 5695576 +1615440 5694472 1615056 5695464 1615200 5695576 1615584 5694488 +1615440 5694472 1615056 5695464 1615584 5694488 1615352 5694448 +1615440 5694472 1615352 5694448 1615056 5695464 1615584 5694488 +1615200 5695576 1615376 5695816 1615584 5694488 1615056 5695464 +1615584 5694488 1615928 5694560 1615488 5689328 1615416 5689384 +1615584 5694488 1615928 5694560 1615416 5689384 1614656 5694032 +1615584 5694488 1623304 5696976 1615928 5694560 1615416 5689384 +1623304 5696976 1615928 5694560 1615584 5694488 1623272 5697000 +1615584 5694488 1622016 5697816 1623272 5697000 1615928 5694560 +1615584 5694488 1621936 5697864 1622016 5697816 1615928 5694560 +1615584 5694488 1615680 5696424 1621936 5697864 1615928 5694560 +1615680 5696424 1615696 5696632 1621936 5697864 1615928 5694560 +1621936 5697864 1622016 5697816 1615928 5694560 1615680 5696424 +1622016 5697816 1623272 5697000 1615928 5694560 1621936 5697864 +1615928 5694560 1615416 5689384 1615584 5694488 1615680 5696424 +1623272 5697000 1623304 5696976 1615928 5694560 1622016 5697816 +1615928 5694560 1623304 5696976 1615488 5689328 1615416 5689384 +1623304 5696976 1615488 5689328 1615928 5694560 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1615928 5694560 +1621936 5697864 1621968 5697856 1622016 5697816 1615928 5694560 +1615488 5689328 1615928 5694560 1623304 5696976 1623376 5696968 +1615584 5694488 1615632 5696264 1615680 5696424 1615928 5694560 +1615680 5696424 1621936 5697864 1615928 5694560 1615632 5696264 +1615584 5694488 1615632 5696264 1615928 5694560 1615416 5689384 +1615584 5694488 1615512 5696024 1615632 5696264 1615928 5694560 +1615584 5694488 1615512 5696024 1615928 5694560 1615416 5689384 +1615584 5694488 1615376 5695816 1615512 5696024 1615928 5694560 +1615584 5694488 1615376 5695816 1615928 5694560 1615416 5689384 +1615584 5694488 1615200 5695576 1615376 5695816 1615928 5694560 +1615584 5694488 1615200 5695576 1615928 5694560 1615416 5689384 +1615376 5695816 1615512 5696024 1615928 5694560 1615200 5695576 +1615512 5696024 1615632 5696264 1615928 5694560 1615376 5695816 +1615632 5696264 1615680 5696424 1615928 5694560 1615512 5696024 +1615584 5694488 1615056 5695464 1615200 5695576 1615928 5694560 +1615928 5694560 1615968 5694560 1615488 5689328 1615416 5689384 +1615928 5694560 1615968 5694560 1615416 5689384 1615584 5694488 +1615416 5689384 1614656 5694032 1615584 5694488 1615968 5694560 +1614656 5694032 1615352 5694448 1615584 5694488 1615968 5694560 +1615584 5694488 1615928 5694560 1615968 5694560 1614656 5694032 +1615968 5694560 1615488 5689328 1615416 5689384 1614656 5694032 +1615928 5694560 1623304 5696976 1615968 5694560 1615584 5694488 +1623304 5696976 1615968 5694560 1615928 5694560 1623272 5697000 +1615928 5694560 1622016 5697816 1623272 5697000 1615968 5694560 +1615928 5694560 1621936 5697864 1622016 5697816 1615968 5694560 +1615928 5694560 1615680 5696424 1621936 5697864 1615968 5694560 +1615680 5696424 1615696 5696632 1621936 5697864 1615968 5694560 +1615928 5694560 1615632 5696264 1615680 5696424 1615968 5694560 +1615680 5696424 1621936 5697864 1615968 5694560 1615632 5696264 +1621936 5697864 1622016 5697816 1615968 5694560 1615680 5696424 +1622016 5697816 1623272 5697000 1615968 5694560 1621936 5697864 +1615968 5694560 1615584 5694488 1615928 5694560 1615632 5696264 +1623272 5697000 1623304 5696976 1615968 5694560 1622016 5697816 +1615968 5694560 1623304 5696976 1615488 5689328 1615416 5689384 +1623304 5696976 1615488 5689328 1615968 5694560 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1615968 5694560 +1621936 5697864 1621968 5697856 1622016 5697816 1615968 5694560 +1615488 5689328 1615968 5694560 1623304 5696976 1623376 5696968 +1615416 5689384 1614112 5693480 1614656 5694032 1615968 5694560 +1615928 5694560 1615512 5696024 1615632 5696264 1615968 5694560 +1615632 5696264 1615680 5696424 1615968 5694560 1615512 5696024 +1615928 5694560 1615512 5696024 1615968 5694560 1615584 5694488 +1615928 5694560 1615376 5695816 1615512 5696024 1615968 5694560 +1615928 5694560 1615376 5695816 1615968 5694560 1615584 5694488 +1615928 5694560 1615200 5695576 1615376 5695816 1615968 5694560 +1615512 5696024 1615632 5696264 1615968 5694560 1615376 5695816 +1621936 5697864 1616248 5694736 1615680 5696424 1615696 5696632 +1615680 5696424 1616248 5694736 1615968 5694560 1615632 5696264 +1615968 5694560 1615512 5696024 1615632 5696264 1616248 5694736 +1615632 5696264 1615680 5696424 1616248 5694736 1615512 5696024 +1615968 5694560 1616248 5694736 1621936 5697864 1622016 5697816 +1615968 5694560 1616248 5694736 1622016 5697816 1623272 5697000 +1616248 5694736 1621936 5697864 1622016 5697816 1623272 5697000 +1615968 5694560 1616248 5694736 1623272 5697000 1623304 5696976 +1616248 5694736 1622016 5697816 1623272 5697000 1623304 5696976 +1616248 5694736 1623304 5696976 1615968 5694560 1615512 5696024 +1615968 5694560 1616248 5694736 1623304 5696976 1615488 5689328 +1616248 5694736 1623272 5697000 1623304 5696976 1615488 5689328 +1615968 5694560 1616248 5694736 1615488 5689328 1615416 5689384 +1615968 5694560 1615512 5696024 1616248 5694736 1615488 5689328 +1621936 5697864 1622016 5697816 1616248 5694736 1615696 5696632 +1616248 5694736 1615632 5696264 1615680 5696424 1615696 5696632 +1622016 5697816 1622080 5697800 1623272 5697000 1616248 5694736 +1621936 5697864 1621968 5697856 1622016 5697816 1616248 5694736 +1623304 5696976 1623376 5696968 1615488 5689328 1616248 5694736 +1615968 5694560 1615376 5695816 1615512 5696024 1616248 5694736 +1615512 5696024 1615632 5696264 1616248 5694736 1615376 5695816 +1615968 5694560 1615376 5695816 1616248 5694736 1615488 5689328 +1615968 5694560 1615928 5694560 1615376 5695816 1616248 5694736 +1615968 5694560 1615928 5694560 1616248 5694736 1615488 5689328 +1615928 5694560 1615200 5695576 1615376 5695816 1616248 5694736 +1615928 5694560 1615584 5694488 1615200 5695576 1616248 5694736 +1615928 5694560 1615200 5695576 1616248 5694736 1615968 5694560 +1615376 5695816 1615512 5696024 1616248 5694736 1615200 5695576 +1621936 5697864 1616248 5694736 1615696 5696632 1616624 5698656 +1621936 5697864 1616248 5694736 1616624 5698656 1621944 5698008 +1616248 5694736 1615680 5696424 1615696 5696632 1616624 5698656 +1621936 5697864 1622016 5697816 1616248 5694736 1616624 5698656 +1615696 5696632 1616592 5698624 1616624 5698656 1616248 5694736 +1615696 5696632 1616592 5698624 1616248 5694736 1615680 5696424 +1615696 5696632 1616528 5698576 1616592 5698624 1616248 5694736 +1616624 5698656 1621936 5697864 1616248 5694736 1616592 5698624 +1621936 5697864 1616264 5694760 1616624 5698656 1621944 5698008 +1616248 5694736 1616264 5694760 1621936 5697864 1622016 5697816 +1616248 5694736 1616264 5694760 1622016 5697816 1623272 5697000 +1616248 5694736 1616264 5694760 1623272 5697000 1623304 5696976 +1616264 5694760 1622016 5697816 1623272 5697000 1623304 5696976 +1616248 5694736 1616264 5694760 1623304 5696976 1615488 5689328 +1616264 5694760 1621936 5697864 1622016 5697816 1623272 5697000 +1616248 5694736 1616624 5698656 1616264 5694760 1623304 5696976 +1616264 5694760 1616624 5698656 1621936 5697864 1622016 5697816 +1622016 5697816 1622080 5697800 1623272 5697000 1616264 5694760 +1621936 5697864 1621968 5697856 1622016 5697816 1616264 5694760 +1616624 5698656 1616264 5694760 1616248 5694736 1616592 5698624 +1616264 5694760 1623304 5696976 1616248 5694736 1616592 5698624 +1616624 5698656 1621936 5697864 1616264 5694760 1616592 5698624 +1616248 5694736 1615696 5696632 1616592 5698624 1616264 5694760 +1616248 5694736 1615680 5696424 1615696 5696632 1616264 5694760 +1616248 5694736 1615680 5696424 1616264 5694760 1623304 5696976 +1616248 5694736 1615632 5696264 1615680 5696424 1616264 5694760 +1615680 5696424 1615696 5696632 1616264 5694760 1615632 5696264 +1616248 5694736 1615512 5696024 1615632 5696264 1616264 5694760 +1616248 5694736 1615376 5695816 1615512 5696024 1616264 5694760 +1615512 5696024 1615632 5696264 1616264 5694760 1615376 5695816 +1616248 5694736 1615376 5695816 1616264 5694760 1623304 5696976 +1615632 5696264 1615680 5696424 1616264 5694760 1615512 5696024 +1615696 5696632 1616528 5698576 1616592 5698624 1616264 5694760 +1615696 5696632 1616592 5698624 1616264 5694760 1615680 5696424 +1616248 5694736 1615200 5695576 1615376 5695816 1616264 5694760 +1615376 5695816 1615512 5696024 1616264 5694760 1615200 5695576 +1616248 5694736 1615200 5695576 1616264 5694760 1623304 5696976 +1616248 5694736 1615928 5694560 1615200 5695576 1616264 5694760 +1616248 5694736 1615928 5694560 1616264 5694760 1623304 5696976 +1615928 5694560 1615584 5694488 1615200 5695576 1616264 5694760 +1616248 5694736 1615968 5694560 1615928 5694560 1616264 5694760 +1615200 5695576 1615376 5695816 1616264 5694760 1615928 5694560 +1616592 5698624 1616624 5698656 1616264 5694760 1615696 5696632 +1621936 5697864 1616368 5694832 1616624 5698656 1621944 5698008 +1616264 5694760 1616368 5694832 1621936 5697864 1622016 5697816 +1616264 5694760 1616368 5694832 1622016 5697816 1623272 5697000 +1616264 5694760 1616368 5694832 1623272 5697000 1623304 5696976 +1616264 5694760 1616368 5694832 1623304 5696976 1616248 5694736 +1616368 5694832 1623272 5697000 1623304 5696976 1616248 5694736 +1623304 5696976 1615488 5689328 1616248 5694736 1616368 5694832 +1623304 5696976 1615488 5689328 1616368 5694832 1623272 5697000 +1616248 5694736 1616264 5694760 1616368 5694832 1615488 5689328 +1615488 5689328 1615968 5694560 1616248 5694736 1616368 5694832 +1616368 5694832 1622016 5697816 1623272 5697000 1623304 5696976 +1616368 5694832 1621936 5697864 1622016 5697816 1623272 5697000 +1616264 5694760 1616624 5698656 1616368 5694832 1616248 5694736 +1616624 5698656 1616368 5694832 1616264 5694760 1616592 5698624 +1616368 5694832 1616248 5694736 1616264 5694760 1616592 5698624 +1616368 5694832 1616624 5698656 1621936 5697864 1622016 5697816 +1616624 5698656 1621936 5697864 1616368 5694832 1616592 5698624 +1622016 5697816 1622080 5697800 1623272 5697000 1616368 5694832 +1621936 5697864 1621968 5697856 1622016 5697816 1616368 5694832 +1623304 5696976 1623376 5696968 1615488 5689328 1616368 5694832 +1616264 5694760 1615696 5696632 1616592 5698624 1616368 5694832 +1616264 5694760 1615696 5696632 1616368 5694832 1616248 5694736 +1616592 5698624 1616624 5698656 1616368 5694832 1615696 5696632 +1615696 5696632 1616528 5698576 1616592 5698624 1616368 5694832 +1616264 5694760 1615680 5696424 1615696 5696632 1616368 5694832 +1616264 5694760 1615632 5696264 1615680 5696424 1616368 5694832 +1616264 5694760 1615512 5696024 1615632 5696264 1616368 5694832 +1615632 5696264 1615680 5696424 1616368 5694832 1615512 5696024 +1616264 5694760 1615376 5695816 1615512 5696024 1616368 5694832 +1616264 5694760 1615200 5695576 1615376 5695816 1616368 5694832 +1615512 5696024 1615632 5696264 1616368 5694832 1615376 5695816 +1616264 5694760 1615376 5695816 1616368 5694832 1616248 5694736 +1615680 5696424 1615696 5696632 1616368 5694832 1615632 5696264 +1615696 5696632 1616592 5698624 1616368 5694832 1615680 5696424 +1616368 5694832 1616496 5694888 1623272 5697000 1623304 5696976 +1616368 5694832 1616496 5694888 1623304 5696976 1615488 5689328 +1616368 5694832 1616496 5694888 1615488 5689328 1616248 5694736 +1616496 5694888 1623304 5696976 1615488 5689328 1616248 5694736 +1616368 5694832 1616496 5694888 1616248 5694736 1616264 5694760 +1615488 5689328 1615968 5694560 1616248 5694736 1616496 5694888 +1616496 5694888 1623272 5697000 1623304 5696976 1615488 5689328 +1622016 5697816 1616496 5694888 1616368 5694832 1621936 5697864 +1616368 5694832 1616624 5698656 1621936 5697864 1616496 5694888 +1616624 5698656 1621944 5698008 1621936 5697864 1616496 5694888 +1621936 5697864 1622016 5697816 1616496 5694888 1616624 5698656 +1616368 5694832 1616624 5698656 1616496 5694888 1616248 5694736 +1616368 5694832 1616592 5698624 1616624 5698656 1616496 5694888 +1616368 5694832 1615696 5696632 1616592 5698624 1616496 5694888 +1616624 5698656 1621936 5697864 1616496 5694888 1616592 5698624 +1616368 5694832 1615696 5696632 1616496 5694888 1616248 5694736 +1616592 5698624 1616624 5698656 1616496 5694888 1615696 5696632 +1616496 5694888 1622016 5697816 1623272 5697000 1623304 5696976 +1622016 5697816 1623272 5697000 1616496 5694888 1621936 5697864 +1623272 5697000 1616496 5694888 1622016 5697816 1622080 5697800 +1622016 5697816 1616496 5694888 1621936 5697864 1621968 5697856 +1623304 5696976 1623376 5696968 1615488 5689328 1616496 5694888 +1615696 5696632 1616528 5698576 1616592 5698624 1616496 5694888 +1616368 5694832 1615680 5696424 1615696 5696632 1616496 5694888 +1615696 5696632 1616592 5698624 1616496 5694888 1615680 5696424 +1616368 5694832 1615680 5696424 1616496 5694888 1616248 5694736 +1616368 5694832 1615632 5696264 1615680 5696424 1616496 5694888 +1616368 5694832 1615512 5696024 1615632 5696264 1616496 5694888 +1616368 5694832 1615376 5695816 1615512 5696024 1616496 5694888 +1616368 5694832 1615512 5696024 1616496 5694888 1616248 5694736 +1615632 5696264 1615680 5696424 1616496 5694888 1615512 5696024 +1615680 5696424 1615696 5696632 1616496 5694888 1615632 5696264 +1616496 5694888 1616584 5694912 1615488 5689328 1616248 5694736 +1616496 5694888 1616584 5694912 1616248 5694736 1616368 5694832 +1615488 5689328 1615968 5694560 1616248 5694736 1616584 5694912 +1623304 5696976 1616584 5694912 1616496 5694888 1623272 5697000 +1616496 5694888 1622016 5697816 1623272 5697000 1616584 5694912 +1623272 5697000 1623304 5696976 1616584 5694912 1622016 5697816 +1616496 5694888 1622016 5697816 1616584 5694912 1616248 5694736 +1616496 5694888 1621936 5697864 1622016 5697816 1616584 5694912 +1616496 5694888 1616624 5698656 1621936 5697864 1616584 5694912 +1616624 5698656 1621944 5698008 1621936 5697864 1616584 5694912 +1616496 5694888 1616592 5698624 1616624 5698656 1616584 5694912 +1616624 5698656 1621936 5697864 1616584 5694912 1616592 5698624 +1616496 5694888 1615696 5696632 1616592 5698624 1616584 5694912 +1616496 5694888 1615680 5696424 1615696 5696632 1616584 5694912 +1616592 5698624 1616624 5698656 1616584 5694912 1615696 5696632 +1615696 5696632 1616592 5698624 1616584 5694912 1615680 5696424 +1622016 5697816 1623272 5697000 1616584 5694912 1621936 5697864 +1616496 5694888 1615680 5696424 1616584 5694912 1616248 5694736 +1621936 5697864 1622016 5697816 1616584 5694912 1616624 5698656 +1616584 5694912 1623304 5696976 1615488 5689328 1616248 5694736 +1623304 5696976 1615488 5689328 1616584 5694912 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1616584 5694912 +1621936 5697864 1621968 5697856 1622016 5697816 1616584 5694912 +1615488 5689328 1616584 5694912 1623304 5696976 1623376 5696968 +1615696 5696632 1616528 5698576 1616592 5698624 1616584 5694912 +1616496 5694888 1615632 5696264 1615680 5696424 1616584 5694912 +1615680 5696424 1615696 5696632 1616584 5694912 1615632 5696264 +1616496 5694888 1615632 5696264 1616584 5694912 1616248 5694736 +1616496 5694888 1615512 5696024 1615632 5696264 1616584 5694912 +1616496 5694888 1616368 5694832 1615512 5696024 1616584 5694912 +1616496 5694888 1615512 5696024 1616584 5694912 1616248 5694736 +1615632 5696264 1615680 5696424 1616584 5694912 1615512 5696024 +1616584 5694912 1616664 5694952 1623272 5697000 1623304 5696976 +1622016 5697816 1616664 5694952 1616584 5694912 1621936 5697864 +1616584 5694912 1616624 5698656 1621936 5697864 1616664 5694952 +1616624 5698656 1621944 5698008 1621936 5697864 1616664 5694952 +1616584 5694912 1616592 5698624 1616624 5698656 1616664 5694952 +1616584 5694912 1615696 5696632 1616592 5698624 1616664 5694952 +1616592 5698624 1616624 5698656 1616664 5694952 1615696 5696632 +1616584 5694912 1615680 5696424 1615696 5696632 1616664 5694952 +1616584 5694912 1615632 5696264 1615680 5696424 1616664 5694952 +1615696 5696632 1616592 5698624 1616664 5694952 1615680 5696424 +1615680 5696424 1615696 5696632 1616664 5694952 1615632 5696264 +1621936 5697864 1622016 5697816 1616664 5694952 1616624 5698656 +1616624 5698656 1621936 5697864 1616664 5694952 1616592 5698624 +1616584 5694912 1615632 5696264 1616664 5694952 1623304 5696976 +1616584 5694912 1616664 5694952 1623304 5696976 1615488 5689328 +1616664 5694952 1623272 5697000 1623304 5696976 1615488 5689328 +1616584 5694912 1616664 5694952 1615488 5689328 1616248 5694736 +1616584 5694912 1615632 5696264 1616664 5694952 1615488 5689328 +1616664 5694952 1622016 5697816 1623272 5697000 1623304 5696976 +1622016 5697816 1623272 5697000 1616664 5694952 1621936 5697864 +1623272 5697000 1616664 5694952 1622016 5697816 1622080 5697800 +1622016 5697816 1616664 5694952 1621936 5697864 1621968 5697856 +1623304 5696976 1623376 5696968 1615488 5689328 1616664 5694952 +1615696 5696632 1616528 5698576 1616592 5698624 1616664 5694952 +1616584 5694912 1615512 5696024 1615632 5696264 1616664 5694952 +1615632 5696264 1615680 5696424 1616664 5694952 1615512 5696024 +1616584 5694912 1615512 5696024 1616664 5694952 1615488 5689328 +1616584 5694912 1616496 5694888 1615512 5696024 1616664 5694952 +1616496 5694888 1616368 5694832 1615512 5696024 1616664 5694952 +1616584 5694912 1616496 5694888 1616664 5694952 1615488 5689328 +1615512 5696024 1615632 5696264 1616664 5694952 1616496 5694888 +1621936 5697864 1616824 5695056 1616624 5698656 1621944 5698008 +1616664 5694952 1616824 5695056 1621936 5697864 1622016 5697816 +1616624 5698656 1616824 5695056 1616664 5694952 1616592 5698624 +1616664 5694952 1615696 5696632 1616592 5698624 1616824 5695056 +1616664 5694952 1615680 5696424 1615696 5696632 1616824 5695056 +1615696 5696632 1616592 5698624 1616824 5695056 1615680 5696424 +1616664 5694952 1615632 5696264 1615680 5696424 1616824 5695056 +1616664 5694952 1615512 5696024 1615632 5696264 1616824 5695056 +1615680 5696424 1615696 5696632 1616824 5695056 1615632 5696264 +1615632 5696264 1615680 5696424 1616824 5695056 1615512 5696024 +1616592 5698624 1616624 5698656 1616824 5695056 1615696 5696632 +1616664 5694952 1615512 5696024 1616824 5695056 1622016 5697816 +1616664 5694952 1616824 5695056 1622016 5697816 1623272 5697000 +1616824 5695056 1621936 5697864 1622016 5697816 1623272 5697000 +1616664 5694952 1616824 5695056 1623272 5697000 1623304 5696976 +1616664 5694952 1616824 5695056 1623304 5696976 1615488 5689328 +1616664 5694952 1616824 5695056 1615488 5689328 1616584 5694912 +1616824 5695056 1623272 5697000 1623304 5696976 1615488 5689328 +1616664 5694952 1615512 5696024 1616824 5695056 1615488 5689328 +1616824 5695056 1622016 5697816 1623272 5697000 1623304 5696976 +1616824 5695056 1616624 5698656 1621936 5697864 1622016 5697816 +1616624 5698656 1621936 5697864 1616824 5695056 1616592 5698624 +1622016 5697816 1622080 5697800 1623272 5697000 1616824 5695056 +1621936 5697864 1621968 5697856 1622016 5697816 1616824 5695056 +1623304 5696976 1623376 5696968 1615488 5689328 1616824 5695056 +1615696 5696632 1616528 5698576 1616592 5698624 1616824 5695056 +1615696 5696632 1616528 5698576 1616824 5695056 1615680 5696424 +1616592 5698624 1616624 5698656 1616824 5695056 1616528 5698576 +1616528 5698576 1616560 5698616 1616592 5698624 1616824 5695056 +1615696 5696632 1615648 5697056 1616528 5698576 1616824 5695056 +1616664 5694952 1616496 5694888 1615512 5696024 1616824 5695056 +1621936 5697864 1617016 5695184 1616624 5698656 1621944 5698008 +1616824 5695056 1617016 5695184 1621936 5697864 1622016 5697816 +1616824 5695056 1617016 5695184 1622016 5697816 1623272 5697000 +1616824 5695056 1617016 5695184 1623272 5697000 1623304 5696976 +1617016 5695184 1622016 5697816 1623272 5697000 1623304 5696976 +1616824 5695056 1617016 5695184 1623304 5696976 1615488 5689328 +1616824 5695056 1617016 5695184 1615488 5689328 1616664 5694952 +1617016 5695184 1623272 5697000 1623304 5696976 1615488 5689328 +1617016 5695184 1621936 5697864 1622016 5697816 1623272 5697000 +1616824 5695056 1616624 5698656 1617016 5695184 1615488 5689328 +1616624 5698656 1617016 5695184 1616824 5695056 1616592 5698624 +1616824 5695056 1616528 5698576 1616592 5698624 1617016 5695184 +1617016 5695184 1615488 5689328 1616824 5695056 1616528 5698576 +1616592 5698624 1616624 5698656 1617016 5695184 1616528 5698576 +1617016 5695184 1616624 5698656 1621936 5697864 1622016 5697816 +1616624 5698656 1621936 5697864 1617016 5695184 1616592 5698624 +1622016 5697816 1622080 5697800 1623272 5697000 1617016 5695184 +1621936 5697864 1621968 5697856 1622016 5697816 1617016 5695184 +1623304 5696976 1623376 5696968 1615488 5689328 1617016 5695184 +1616528 5698576 1616560 5698616 1616592 5698624 1617016 5695184 +1616824 5695056 1615696 5696632 1616528 5698576 1617016 5695184 +1616824 5695056 1615680 5696424 1615696 5696632 1617016 5695184 +1616824 5695056 1615632 5696264 1615680 5696424 1617016 5695184 +1615680 5696424 1615696 5696632 1617016 5695184 1615632 5696264 +1616824 5695056 1615512 5696024 1615632 5696264 1617016 5695184 +1616528 5698576 1616592 5698624 1617016 5695184 1615696 5696632 +1616824 5695056 1615632 5696264 1617016 5695184 1615488 5689328 +1615696 5696632 1615648 5697056 1616528 5698576 1617016 5695184 +1615696 5696632 1616528 5698576 1617016 5695184 1615680 5696424 +1621936 5697864 1617104 5695232 1616624 5698656 1621944 5698008 +1617016 5695184 1617104 5695232 1621936 5697864 1622016 5697816 +1617016 5695184 1617104 5695232 1622016 5697816 1623272 5697000 +1617016 5695184 1617104 5695232 1623272 5697000 1623304 5696976 +1617016 5695184 1617104 5695232 1623304 5696976 1615488 5689328 +1617104 5695232 1623272 5697000 1623304 5696976 1615488 5689328 +1617016 5695184 1617104 5695232 1615488 5689328 1616824 5695056 +1615488 5689328 1616664 5694952 1616824 5695056 1617104 5695232 +1617104 5695232 1623304 5696976 1615488 5689328 1616824 5695056 +1617104 5695232 1622016 5697816 1623272 5697000 1623304 5696976 +1617104 5695232 1621936 5697864 1622016 5697816 1623272 5697000 +1617016 5695184 1616624 5698656 1617104 5695232 1616824 5695056 +1616624 5698656 1617104 5695232 1617016 5695184 1616592 5698624 +1617016 5695184 1616528 5698576 1616592 5698624 1617104 5695232 +1617016 5695184 1615696 5696632 1616528 5698576 1617104 5695232 +1616528 5698576 1616592 5698624 1617104 5695232 1615696 5696632 +1617104 5695232 1616824 5695056 1617016 5695184 1615696 5696632 +1616592 5698624 1616624 5698656 1617104 5695232 1616528 5698576 +1617104 5695232 1616624 5698656 1621936 5697864 1622016 5697816 +1616624 5698656 1621936 5697864 1617104 5695232 1616592 5698624 +1622016 5697816 1622080 5697800 1623272 5697000 1617104 5695232 +1621936 5697864 1621968 5697856 1622016 5697816 1617104 5695232 +1623304 5696976 1623376 5696968 1615488 5689328 1617104 5695232 +1616528 5698576 1616560 5698616 1616592 5698624 1617104 5695232 +1615696 5696632 1615648 5697056 1616528 5698576 1617104 5695232 +1617016 5695184 1615680 5696424 1615696 5696632 1617104 5695232 +1617016 5695184 1615632 5696264 1615680 5696424 1617104 5695232 +1615696 5696632 1616528 5698576 1617104 5695232 1615680 5696424 +1617016 5695184 1615680 5696424 1617104 5695232 1616824 5695056 +1621936 5697864 1617304 5695352 1616624 5698656 1621944 5698008 +1617104 5695232 1617304 5695352 1621936 5697864 1622016 5697816 +1617104 5695232 1617304 5695352 1622016 5697816 1623272 5697000 +1617104 5695232 1617304 5695352 1623272 5697000 1623304 5696976 +1617104 5695232 1617304 5695352 1623304 5696976 1615488 5689328 +1617104 5695232 1617304 5695352 1615488 5689328 1616824 5695056 +1617304 5695352 1623272 5697000 1623304 5696976 1615488 5689328 +1617304 5695352 1622016 5697816 1623272 5697000 1623304 5696976 +1617304 5695352 1621936 5697864 1622016 5697816 1623272 5697000 +1617104 5695232 1616624 5698656 1617304 5695352 1615488 5689328 +1616624 5698656 1617304 5695352 1617104 5695232 1616592 5698624 +1617104 5695232 1616528 5698576 1616592 5698624 1617304 5695352 +1617104 5695232 1615696 5696632 1616528 5698576 1617304 5695352 +1617104 5695232 1615680 5696424 1615696 5696632 1617304 5695352 +1615696 5696632 1616528 5698576 1617304 5695352 1615680 5696424 +1616528 5698576 1616592 5698624 1617304 5695352 1615696 5696632 +1617304 5695352 1615488 5689328 1617104 5695232 1615680 5696424 +1616592 5698624 1616624 5698656 1617304 5695352 1616528 5698576 +1616624 5698656 1621936 5697864 1617304 5695352 1616592 5698624 +1617304 5695352 1616624 5698656 1621936 5697864 1622016 5697816 +1622016 5697816 1622080 5697800 1623272 5697000 1617304 5695352 +1621936 5697864 1621968 5697856 1622016 5697816 1617304 5695352 +1623304 5696976 1623376 5696968 1615488 5689328 1617304 5695352 +1616528 5698576 1616560 5698616 1616592 5698624 1617304 5695352 +1615696 5696632 1615648 5697056 1616528 5698576 1617304 5695352 +1615696 5696632 1615648 5697056 1617304 5695352 1615680 5696424 +1616528 5698576 1616592 5698624 1617304 5695352 1615648 5697056 +1615648 5697056 1616456 5698536 1616528 5698576 1617304 5695352 +1617104 5695232 1617016 5695184 1615680 5696424 1617304 5695352 +1621936 5697864 1617336 5695448 1616624 5698656 1621944 5698008 +1616624 5698656 1617336 5695448 1617304 5695352 1616592 5698624 +1617304 5695352 1616528 5698576 1616592 5698624 1617336 5695448 +1617304 5695352 1615648 5697056 1616528 5698576 1617336 5695448 +1616528 5698576 1616592 5698624 1617336 5695448 1615648 5697056 +1617336 5695448 1621936 5697864 1617304 5695352 1615648 5697056 +1616592 5698624 1616624 5698656 1617336 5695448 1616528 5698576 +1616624 5698656 1621936 5697864 1617336 5695448 1616592 5698624 +1617304 5695352 1617336 5695448 1621936 5697864 1622016 5697816 +1617304 5695352 1617336 5695448 1622016 5697816 1623272 5697000 +1617304 5695352 1617336 5695448 1623272 5697000 1623304 5696976 +1617304 5695352 1615648 5697056 1617336 5695448 1623272 5697000 +1617336 5695448 1616624 5698656 1621936 5697864 1622016 5697816 +1617336 5695448 1621936 5697864 1622016 5697816 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1617336 5695448 +1621936 5697864 1621968 5697856 1622016 5697816 1617336 5695448 +1615648 5697056 1616456 5698536 1616528 5698576 1617336 5695448 +1616528 5698576 1616560 5698616 1616592 5698624 1617336 5695448 +1617304 5695352 1615696 5696632 1615648 5697056 1617336 5695448 +1617304 5695352 1615680 5696424 1615696 5696632 1617336 5695448 +1617304 5695352 1617104 5695232 1615680 5696424 1617336 5695448 +1615680 5696424 1615696 5696632 1617336 5695448 1617104 5695232 +1615648 5697056 1616528 5698576 1617336 5695448 1615696 5696632 +1617304 5695352 1617104 5695232 1617336 5695448 1623272 5697000 +1615696 5696632 1615648 5697056 1617336 5695448 1615680 5696424 +1617104 5695232 1617016 5695184 1615680 5696424 1617336 5695448 +1617016 5695184 1615632 5696264 1615680 5696424 1617336 5695448 +1617016 5695184 1616824 5695056 1615632 5696264 1617336 5695448 +1617104 5695232 1617016 5695184 1617336 5695448 1617304 5695352 +1615680 5696424 1615696 5696632 1617336 5695448 1615632 5696264 +1617016 5695184 1615632 5696264 1617336 5695448 1617104 5695232 +1621936 5697864 1617336 5695488 1616624 5698656 1621944 5698008 +1617336 5695448 1617336 5695488 1621936 5697864 1622016 5697816 +1616624 5698656 1617336 5695488 1617336 5695448 1616592 5698624 +1617336 5695488 1621936 5697864 1617336 5695448 1616592 5698624 +1616624 5698656 1621936 5697864 1617336 5695488 1616592 5698624 +1617336 5695448 1616528 5698576 1616592 5698624 1617336 5695488 +1617336 5695448 1616528 5698576 1617336 5695488 1621936 5697864 +1617336 5695448 1615648 5697056 1616528 5698576 1617336 5695488 +1617336 5695448 1615648 5697056 1617336 5695488 1621936 5697864 +1617336 5695448 1615696 5696632 1615648 5697056 1617336 5695488 +1617336 5695448 1615696 5696632 1617336 5695488 1621936 5697864 +1615648 5697056 1616528 5698576 1617336 5695488 1615696 5696632 +1616528 5698576 1616592 5698624 1617336 5695488 1615648 5697056 +1616592 5698624 1616624 5698656 1617336 5695488 1616528 5698576 +1615648 5697056 1616456 5698536 1616528 5698576 1617336 5695488 +1615648 5697056 1616456 5698536 1617336 5695488 1615696 5696632 +1616528 5698576 1616592 5698624 1617336 5695488 1616456 5698536 +1615648 5697056 1616392 5698520 1616456 5698536 1617336 5695488 +1616528 5698576 1616560 5698616 1616592 5698624 1617336 5695488 +1617336 5695448 1615680 5696424 1615696 5696632 1617336 5695488 +1617336 5695448 1615680 5696424 1617336 5695488 1621936 5697864 +1617336 5695448 1615632 5696264 1615680 5696424 1617336 5695488 +1617336 5695448 1615632 5696264 1617336 5695488 1621936 5697864 +1617336 5695448 1617016 5695184 1615632 5696264 1617336 5695488 +1617336 5695448 1617016 5695184 1617336 5695488 1621936 5697864 +1617016 5695184 1616824 5695056 1615632 5696264 1617336 5695488 +1615632 5696264 1615680 5696424 1617336 5695488 1617016 5695184 +1615696 5696632 1615648 5697056 1617336 5695488 1615680 5696424 +1615680 5696424 1615696 5696632 1617336 5695488 1615632 5696264 +1617336 5695448 1617104 5695232 1617016 5695184 1617336 5695488 +1617336 5695448 1617104 5695232 1617336 5695488 1621936 5697864 +1617016 5695184 1615632 5696264 1617336 5695488 1617104 5695232 +1617336 5695448 1617304 5695352 1617104 5695232 1617336 5695488 +1617336 5695448 1617304 5695352 1617336 5695488 1621936 5697864 +1617104 5695232 1617016 5695184 1617336 5695488 1617304 5695352 +1615648 5697056 1617288 5695576 1617336 5695488 1615696 5696632 +1617288 5695576 1616456 5698536 1617336 5695488 1615696 5696632 +1615648 5697056 1616456 5698536 1617288 5695576 1615696 5696632 +1617336 5695488 1615680 5696424 1615696 5696632 1617288 5695576 +1617336 5695488 1615680 5696424 1617288 5695576 1616456 5698536 +1615696 5696632 1615648 5697056 1617288 5695576 1615680 5696424 +1616456 5698536 1617288 5695576 1615648 5697056 1616392 5698520 +1617336 5695488 1617288 5695576 1616456 5698536 1616528 5698576 +1617336 5695488 1615680 5696424 1617288 5695576 1616528 5698576 +1617288 5695576 1615648 5697056 1616456 5698536 1616528 5698576 +1617336 5695488 1617288 5695576 1616528 5698576 1616592 5698624 +1617336 5695488 1615680 5696424 1617288 5695576 1616592 5698624 +1617336 5695488 1617288 5695576 1616592 5698624 1616624 5698656 +1617336 5695488 1615680 5696424 1617288 5695576 1616624 5698656 +1617336 5695488 1617288 5695576 1616624 5698656 1621936 5697864 +1616624 5698656 1621944 5698008 1621936 5697864 1617288 5695576 +1617336 5695488 1617288 5695576 1621936 5697864 1617336 5695448 +1617336 5695488 1615680 5696424 1617288 5695576 1621936 5697864 +1617288 5695576 1616528 5698576 1616592 5698624 1616624 5698656 +1617288 5695576 1616592 5698624 1616624 5698656 1621936 5697864 +1617288 5695576 1616456 5698536 1616528 5698576 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1617288 5695576 +1617336 5695488 1615632 5696264 1615680 5696424 1617288 5695576 +1617336 5695488 1615632 5696264 1617288 5695576 1621936 5697864 +1617336 5695488 1617016 5695184 1615632 5696264 1617288 5695576 +1617336 5695488 1617016 5695184 1617288 5695576 1621936 5697864 +1617336 5695488 1617104 5695232 1617016 5695184 1617288 5695576 +1617336 5695488 1617104 5695232 1617288 5695576 1621936 5697864 +1617016 5695184 1616824 5695056 1615632 5696264 1617288 5695576 +1617016 5695184 1615632 5696264 1617288 5695576 1617104 5695232 +1615680 5696424 1615696 5696632 1617288 5695576 1615632 5696264 +1615632 5696264 1615680 5696424 1617288 5695576 1617016 5695184 +1617336 5695488 1617304 5695352 1617104 5695232 1617288 5695576 +1617336 5695488 1617304 5695352 1617288 5695576 1621936 5697864 +1617104 5695232 1617016 5695184 1617288 5695576 1617304 5695352 +1617336 5695488 1617336 5695448 1617304 5695352 1617288 5695576 +1617336 5695488 1617336 5695448 1617288 5695576 1621936 5697864 +1617304 5695352 1617104 5695232 1617288 5695576 1617336 5695448 +1617288 5695576 1617264 5695600 1616456 5698536 1616528 5698576 +1617288 5695576 1615648 5697056 1617264 5695600 1616528 5698576 +1615648 5697056 1617264 5695600 1617288 5695576 1615696 5696632 +1617264 5695600 1616528 5698576 1617288 5695576 1615696 5696632 +1617264 5695600 1615648 5697056 1616456 5698536 1616528 5698576 +1615648 5697056 1616456 5698536 1617264 5695600 1615696 5696632 +1617288 5695576 1615680 5696424 1615696 5696632 1617264 5695600 +1617288 5695576 1615680 5696424 1617264 5695600 1616528 5698576 +1615696 5696632 1615648 5697056 1617264 5695600 1615680 5696424 +1617288 5695576 1615632 5696264 1615680 5696424 1617264 5695600 +1617288 5695576 1615632 5696264 1617264 5695600 1616528 5698576 +1615680 5696424 1615696 5696632 1617264 5695600 1615632 5696264 +1616456 5698536 1617264 5695600 1615648 5697056 1616392 5698520 +1617288 5695576 1617264 5695600 1616528 5698576 1616592 5698624 +1617264 5695600 1616456 5698536 1616528 5698576 1616592 5698624 +1617288 5695576 1615632 5696264 1617264 5695600 1616592 5698624 +1617288 5695576 1617264 5695600 1616592 5698624 1616624 5698656 +1617288 5695576 1615632 5696264 1617264 5695600 1616624 5698656 +1617288 5695576 1617264 5695600 1616624 5698656 1621936 5697864 +1616624 5698656 1621944 5698008 1621936 5697864 1617264 5695600 +1617288 5695576 1617264 5695600 1621936 5697864 1617336 5695488 +1617288 5695576 1615632 5696264 1617264 5695600 1621936 5697864 +1617264 5695600 1616592 5698624 1616624 5698656 1621936 5697864 +1617264 5695600 1616528 5698576 1616592 5698624 1616624 5698656 +1616528 5698576 1616560 5698616 1616592 5698624 1617264 5695600 +1617288 5695576 1617016 5695184 1615632 5696264 1617264 5695600 +1617288 5695576 1617016 5695184 1617264 5695600 1621936 5697864 +1617016 5695184 1616824 5695056 1615632 5696264 1617264 5695600 +1616824 5695056 1615512 5696024 1615632 5696264 1617264 5695600 +1617288 5695576 1617104 5695232 1617016 5695184 1617264 5695600 +1617288 5695576 1617104 5695232 1617264 5695600 1621936 5697864 +1617288 5695576 1617304 5695352 1617104 5695232 1617264 5695600 +1617288 5695576 1617304 5695352 1617264 5695600 1621936 5697864 +1617104 5695232 1617016 5695184 1617264 5695600 1617304 5695352 +1615632 5696264 1615680 5696424 1617264 5695600 1616824 5695056 +1617016 5695184 1616824 5695056 1617264 5695600 1617104 5695232 +1617288 5695576 1617336 5695448 1617304 5695352 1617264 5695600 +1616824 5695056 1617184 5695608 1617264 5695600 1617016 5695184 +1617184 5695608 1615632 5696264 1617264 5695600 1617016 5695184 +1616824 5695056 1615632 5696264 1617184 5695608 1617016 5695184 +1615632 5696264 1617184 5695608 1616824 5695056 1615512 5696024 +1617264 5695600 1617184 5695608 1615632 5696264 1615680 5696424 +1617264 5695600 1617016 5695184 1617184 5695608 1615680 5696424 +1617184 5695608 1616824 5695056 1615632 5696264 1615680 5696424 +1617264 5695600 1617184 5695608 1615680 5696424 1615696 5696632 +1617264 5695600 1617184 5695608 1615696 5696632 1615648 5697056 +1617264 5695600 1617016 5695184 1617184 5695608 1615648 5697056 +1617264 5695600 1617184 5695608 1615648 5697056 1616456 5698536 +1617184 5695608 1615696 5696632 1615648 5697056 1616456 5698536 +1617264 5695600 1617184 5695608 1616456 5698536 1616528 5698576 +1617264 5695600 1617184 5695608 1616528 5698576 1616592 5698624 +1617264 5695600 1617016 5695184 1617184 5695608 1616528 5698576 +1617184 5695608 1615648 5697056 1616456 5698536 1616528 5698576 +1617184 5695608 1615632 5696264 1615680 5696424 1615696 5696632 +1617184 5695608 1615680 5696424 1615696 5696632 1615648 5697056 +1615648 5697056 1616392 5698520 1616456 5698536 1617184 5695608 +1617264 5695600 1617104 5695232 1617016 5695184 1617184 5695608 +1617264 5695600 1617104 5695232 1617184 5695608 1616528 5698576 +1617016 5695184 1616824 5695056 1617184 5695608 1617104 5695232 +1617264 5695600 1617304 5695352 1617104 5695232 1617184 5695608 +1617264 5695600 1617304 5695352 1617184 5695608 1616528 5698576 +1617264 5695600 1617288 5695576 1617304 5695352 1617184 5695608 +1617264 5695600 1617288 5695576 1617184 5695608 1616528 5698576 +1617304 5695352 1617104 5695232 1617184 5695608 1617288 5695576 +1617104 5695232 1617016 5695184 1617184 5695608 1617304 5695352 +1617288 5695576 1617336 5695448 1617304 5695352 1617184 5695608 +1617288 5695576 1617336 5695448 1617184 5695608 1617264 5695600 +1617288 5695576 1617336 5695488 1617336 5695448 1617184 5695608 +1617288 5695576 1617336 5695488 1617184 5695608 1617264 5695600 +1617304 5695352 1617104 5695232 1617184 5695608 1617336 5695448 +1617336 5695448 1617304 5695352 1617184 5695608 1617336 5695488 +1615648 5697056 1617152 5695680 1617184 5695608 1615696 5696632 +1617184 5695608 1617152 5695680 1616456 5698536 1616528 5698576 +1617184 5695608 1617152 5695680 1616528 5698576 1617264 5695600 +1616528 5698576 1616592 5698624 1617264 5695600 1617152 5695680 +1617264 5695600 1617184 5695608 1617152 5695680 1616592 5698624 +1617152 5695680 1616456 5698536 1616528 5698576 1616592 5698624 +1617152 5695680 1617264 5695600 1617184 5695608 1615696 5696632 +1617152 5695680 1615648 5697056 1616456 5698536 1616528 5698576 +1615648 5697056 1616456 5698536 1617152 5695680 1615696 5696632 +1617184 5695608 1615680 5696424 1615696 5696632 1617152 5695680 +1615696 5696632 1615648 5697056 1617152 5695680 1615680 5696424 +1617184 5695608 1615680 5696424 1617152 5695680 1617264 5695600 +1617184 5695608 1615632 5696264 1615680 5696424 1617152 5695680 +1617184 5695608 1616824 5695056 1615632 5696264 1617152 5695680 +1617184 5695608 1616824 5695056 1617152 5695680 1617264 5695600 +1617184 5695608 1617016 5695184 1616824 5695056 1617152 5695680 +1616824 5695056 1615632 5696264 1617152 5695680 1617016 5695184 +1617184 5695608 1617016 5695184 1617152 5695680 1617264 5695600 +1617184 5695608 1617104 5695232 1617016 5695184 1617152 5695680 +1616824 5695056 1615512 5696024 1615632 5696264 1617152 5695680 +1616824 5695056 1615512 5696024 1617152 5695680 1617016 5695184 +1616824 5695056 1616664 5694952 1615512 5696024 1617152 5695680 +1615632 5696264 1615680 5696424 1617152 5695680 1615512 5696024 +1615680 5696424 1615696 5696632 1617152 5695680 1615632 5696264 +1616456 5698536 1617152 5695680 1615648 5697056 1616392 5698520 +1616592 5698624 1616624 5698656 1617264 5695600 1617152 5695680 +1616592 5698624 1616624 5698656 1617152 5695680 1616528 5698576 +1617264 5695600 1617184 5695608 1617152 5695680 1616624 5698656 +1616624 5698656 1621936 5697864 1617264 5695600 1617152 5695680 +1616528 5698576 1616560 5698616 1616592 5698624 1617152 5695680 +1617152 5695680 1617152 5695776 1617264 5695600 1617184 5695608 +1617264 5695600 1617152 5695776 1616624 5698656 1621936 5697864 +1616624 5698656 1621944 5698008 1621936 5697864 1617152 5695776 +1617264 5695600 1617152 5695680 1617152 5695776 1621936 5697864 +1617152 5695776 1617152 5695680 1616624 5698656 1621936 5697864 +1617264 5695600 1617152 5695776 1621936 5697864 1617288 5695576 +1621936 5697864 1617336 5695488 1617288 5695576 1617152 5695776 +1617264 5695600 1617152 5695680 1617152 5695776 1617288 5695576 +1617152 5695776 1616624 5698656 1621936 5697864 1617288 5695576 +1616624 5698656 1617152 5695776 1617152 5695680 1616592 5698624 +1617152 5695680 1616528 5698576 1616592 5698624 1617152 5695776 +1617152 5695680 1616456 5698536 1616528 5698576 1617152 5695776 +1616528 5698576 1616592 5698624 1617152 5695776 1616456 5698536 +1617152 5695680 1615648 5697056 1616456 5698536 1617152 5695776 +1616456 5698536 1616528 5698576 1617152 5695776 1615648 5697056 +1617152 5695776 1617264 5695600 1617152 5695680 1615648 5697056 +1617152 5695680 1615696 5696632 1615648 5697056 1617152 5695776 +1617152 5695680 1615680 5696424 1615696 5696632 1617152 5695776 +1615648 5697056 1616456 5698536 1617152 5695776 1615696 5696632 +1617152 5695680 1615680 5696424 1617152 5695776 1617264 5695600 +1615696 5696632 1615648 5697056 1617152 5695776 1615680 5696424 +1616624 5698656 1621936 5697864 1617152 5695776 1616592 5698624 +1617152 5695680 1615632 5696264 1615680 5696424 1617152 5695776 +1615680 5696424 1615696 5696632 1617152 5695776 1615632 5696264 +1617152 5695680 1615632 5696264 1617152 5695776 1617264 5695600 +1617152 5695680 1615512 5696024 1615632 5696264 1617152 5695776 +1617152 5695680 1615512 5696024 1617152 5695776 1617264 5695600 +1617152 5695680 1616824 5695056 1615512 5696024 1617152 5695776 +1615632 5696264 1615680 5696424 1617152 5695776 1615512 5696024 +1615648 5697056 1616392 5698520 1616456 5698536 1617152 5695776 +1616592 5698624 1616624 5698656 1617152 5695776 1616528 5698576 +1616528 5698576 1616560 5698616 1616592 5698624 1617152 5695776 +1621936 5697864 1617192 5695864 1616624 5698656 1621944 5698008 +1616624 5698656 1617192 5695864 1617152 5695776 1616592 5698624 +1617192 5695864 1621936 5697864 1617152 5695776 1616592 5698624 +1616624 5698656 1621936 5697864 1617192 5695864 1616592 5698624 +1617152 5695776 1617192 5695864 1621936 5697864 1617288 5695576 +1621936 5697864 1617336 5695488 1617288 5695576 1617192 5695864 +1621936 5697864 1617336 5695448 1617336 5695488 1617192 5695864 +1617152 5695776 1616592 5698624 1617192 5695864 1617288 5695576 +1617192 5695864 1616624 5698656 1621936 5697864 1617336 5695488 +1617288 5695576 1617152 5695776 1617192 5695864 1617336 5695488 +1617152 5695776 1617192 5695864 1617288 5695576 1617264 5695600 +1617152 5695776 1617192 5695864 1617264 5695600 1617152 5695680 +1617152 5695776 1616592 5698624 1617192 5695864 1617264 5695600 +1617192 5695864 1617336 5695488 1617288 5695576 1617264 5695600 +1617152 5695776 1616528 5698576 1616592 5698624 1617192 5695864 +1617152 5695776 1616456 5698536 1616528 5698576 1617192 5695864 +1617152 5695776 1615648 5697056 1616456 5698536 1617192 5695864 +1616456 5698536 1616528 5698576 1617192 5695864 1615648 5697056 +1617152 5695776 1615696 5696632 1615648 5697056 1617192 5695864 +1615648 5697056 1616456 5698536 1617192 5695864 1615696 5696632 +1617152 5695776 1615680 5696424 1615696 5696632 1617192 5695864 +1617152 5695776 1615632 5696264 1615680 5696424 1617192 5695864 +1615696 5696632 1615648 5697056 1617192 5695864 1615680 5696424 +1617152 5695776 1615680 5696424 1617192 5695864 1617264 5695600 +1616592 5698624 1616624 5698656 1617192 5695864 1616528 5698576 +1615648 5697056 1616392 5698520 1616456 5698536 1617192 5695864 +1616528 5698576 1616592 5698624 1617192 5695864 1616456 5698536 +1616528 5698576 1616560 5698616 1616592 5698624 1617192 5695864 +1621936 5697864 1617328 5696064 1616624 5698656 1621944 5698008 +1617192 5695864 1617328 5696064 1621936 5697864 1617336 5695488 +1621936 5697864 1617336 5695448 1617336 5695488 1617328 5696064 +1617192 5695864 1617328 5696064 1617336 5695488 1617288 5695576 +1617328 5696064 1621936 5697864 1617336 5695488 1617288 5695576 +1617192 5695864 1616624 5698656 1617328 5696064 1617288 5695576 +1616624 5698656 1617328 5696064 1617192 5695864 1616592 5698624 +1617192 5695864 1616528 5698576 1616592 5698624 1617328 5696064 +1617328 5696064 1617288 5695576 1617192 5695864 1616528 5698576 +1616592 5698624 1616624 5698656 1617328 5696064 1616528 5698576 +1617328 5696064 1616624 5698656 1621936 5697864 1617336 5695488 +1616624 5698656 1621936 5697864 1617328 5696064 1616592 5698624 +1617192 5695864 1617328 5696064 1617288 5695576 1617264 5695600 +1617192 5695864 1616456 5698536 1616528 5698576 1617328 5696064 +1617192 5695864 1615648 5697056 1616456 5698536 1617328 5696064 +1617192 5695864 1615696 5696632 1615648 5697056 1617328 5696064 +1615648 5697056 1616456 5698536 1617328 5696064 1615696 5696632 +1617192 5695864 1615680 5696424 1615696 5696632 1617328 5696064 +1615696 5696632 1615648 5697056 1617328 5696064 1615680 5696424 +1617192 5695864 1617152 5695776 1615680 5696424 1617328 5696064 +1616528 5698576 1616592 5698624 1617328 5696064 1616456 5698536 +1617192 5695864 1615680 5696424 1617328 5696064 1617288 5695576 +1615648 5697056 1616392 5698520 1616456 5698536 1617328 5696064 +1616456 5698536 1616528 5698576 1617328 5696064 1615648 5697056 +1616528 5698576 1616560 5698616 1616592 5698624 1617328 5696064 +1621936 5697864 1617424 5696248 1616624 5698656 1621944 5698008 +1617328 5696064 1617424 5696248 1621936 5697864 1617336 5695488 +1621936 5697864 1617336 5695448 1617336 5695488 1617424 5696248 +1617328 5696064 1617424 5696248 1617336 5695488 1617288 5695576 +1617328 5696064 1616624 5698656 1617424 5696248 1617336 5695488 +1616624 5698656 1617424 5696248 1617328 5696064 1616592 5698624 +1617328 5696064 1616528 5698576 1616592 5698624 1617424 5696248 +1617328 5696064 1616456 5698536 1616528 5698576 1617424 5696248 +1616528 5698576 1616592 5698624 1617424 5696248 1616456 5698536 +1617424 5696248 1617336 5695488 1617328 5696064 1616456 5698536 +1616592 5698624 1616624 5698656 1617424 5696248 1616528 5698576 +1621936 5697864 1617336 5695488 1617424 5696248 1621944 5698008 +1617424 5696248 1616592 5698624 1616624 5698656 1621944 5698008 +1617328 5696064 1615648 5697056 1616456 5698536 1617424 5696248 +1617328 5696064 1615696 5696632 1615648 5697056 1617424 5696248 +1617328 5696064 1615680 5696424 1615696 5696632 1617424 5696248 +1616456 5698536 1616528 5698576 1617424 5696248 1615648 5697056 +1617328 5696064 1615696 5696632 1617424 5696248 1617336 5695488 +1615648 5697056 1616392 5698520 1616456 5698536 1617424 5696248 +1615648 5697056 1616456 5698536 1617424 5696248 1615696 5696632 +1616528 5698576 1616560 5698616 1616592 5698624 1617424 5696248 +1616624 5698656 1616624 5698800 1621944 5698008 1617424 5696248 +1617424 5696248 1617520 5696640 1621944 5698008 1621936 5697864 +1617424 5696248 1617520 5696640 1621936 5697864 1617336 5695488 +1617424 5696248 1616624 5698656 1617520 5696640 1621936 5697864 +1616624 5698656 1617520 5696640 1617424 5696248 1616592 5698624 +1617424 5696248 1616528 5698576 1616592 5698624 1617520 5696640 +1617424 5696248 1616456 5698536 1616528 5698576 1617520 5696640 +1617424 5696248 1615648 5697056 1616456 5698536 1617520 5696640 +1616456 5698536 1616528 5698576 1617520 5696640 1615648 5697056 +1616528 5698576 1616592 5698624 1617520 5696640 1616456 5698536 +1617520 5696640 1621936 5697864 1617424 5696248 1615648 5697056 +1616592 5698624 1616624 5698656 1617520 5696640 1616528 5698576 +1617520 5696640 1616624 5698656 1621944 5698008 1621936 5697864 +1616624 5698656 1621944 5698008 1617520 5696640 1616592 5698624 +1615648 5697056 1616392 5698520 1616456 5698536 1617520 5696640 +1617424 5696248 1615696 5696632 1615648 5697056 1617520 5696640 +1617424 5696248 1617328 5696064 1615696 5696632 1617520 5696640 +1615648 5697056 1616456 5698536 1617520 5696640 1615696 5696632 +1617424 5696248 1615696 5696632 1617520 5696640 1621936 5697864 +1616528 5698576 1616560 5698616 1616592 5698624 1617520 5696640 +1621944 5698008 1617520 5696640 1616624 5698656 1616624 5698800 +1617520 5696640 1617584 5696752 1621944 5698008 1621936 5697864 +1617520 5696640 1617584 5696752 1621936 5697864 1617424 5696248 +1621936 5697864 1617336 5695488 1617424 5696248 1617584 5696752 +1617584 5696752 1621944 5698008 1621936 5697864 1617424 5696248 +1617520 5696640 1616624 5698656 1617584 5696752 1617424 5696248 +1616624 5698656 1617584 5696752 1617520 5696640 1616592 5698624 +1617520 5696640 1616528 5698576 1616592 5698624 1617584 5696752 +1617520 5696640 1616456 5698536 1616528 5698576 1617584 5696752 +1617520 5696640 1615648 5697056 1616456 5698536 1617584 5696752 +1617520 5696640 1615696 5696632 1615648 5697056 1617584 5696752 +1616456 5698536 1616528 5698576 1617584 5696752 1615648 5697056 +1616528 5698576 1616592 5698624 1617584 5696752 1616456 5698536 +1617584 5696752 1617424 5696248 1617520 5696640 1615648 5697056 +1616592 5698624 1616624 5698656 1617584 5696752 1616528 5698576 +1617584 5696752 1616624 5698656 1621944 5698008 1621936 5697864 +1616624 5698656 1621944 5698008 1617584 5696752 1616592 5698624 +1615648 5697056 1616392 5698520 1616456 5698536 1617584 5696752 +1616528 5698576 1616560 5698616 1616592 5698624 1617584 5696752 +1621944 5698008 1617584 5696752 1616624 5698656 1616624 5698800 +1621944 5698008 1621936 5697864 1617584 5696752 1616624 5698800 +1617584 5696752 1616592 5698624 1616624 5698656 1616624 5698800 +1616624 5698656 1616616 5698720 1616624 5698800 1617584 5696752 +1621944 5698008 1617584 5696752 1616624 5698800 1617496 5700904 +1617584 5696752 1617648 5696792 1621944 5698008 1621936 5697864 +1617584 5696752 1617648 5696792 1621936 5697864 1617424 5696248 +1617584 5696752 1617648 5696792 1617424 5696248 1617520 5696640 +1621936 5697864 1617336 5695488 1617424 5696248 1617648 5696792 +1621936 5697864 1617336 5695448 1617336 5695488 1617648 5696792 +1617336 5695488 1617328 5696064 1617424 5696248 1617648 5696792 +1617648 5696792 1617336 5695488 1617424 5696248 1617520 5696640 +1617648 5696792 1621944 5698008 1621936 5697864 1617336 5695488 +1617584 5696752 1616624 5698800 1617648 5696792 1617520 5696640 +1617648 5696792 1616624 5698800 1621944 5698008 1621936 5697864 +1616624 5698800 1617648 5696792 1617584 5696752 1616624 5698656 +1617648 5696792 1617520 5696640 1617584 5696752 1616624 5698656 +1617584 5696752 1616592 5698624 1616624 5698656 1617648 5696792 +1617584 5696752 1616528 5698576 1616592 5698624 1617648 5696792 +1617584 5696752 1616456 5698536 1616528 5698576 1617648 5696792 +1617584 5696752 1616528 5698576 1617648 5696792 1617520 5696640 +1616592 5698624 1616624 5698656 1617648 5696792 1616528 5698576 +1616624 5698800 1621944 5698008 1617648 5696792 1616624 5698656 +1616528 5698576 1616560 5698616 1616592 5698624 1617648 5696792 +1616624 5698656 1616624 5698800 1617648 5696792 1616592 5698624 +1616624 5698800 1617648 5696792 1616624 5698656 1616616 5698720 +1621944 5698008 1617648 5696792 1616624 5698800 1617496 5700904 +1621944 5698008 1621936 5697864 1617648 5696792 1617496 5700904 +1617648 5696792 1616624 5698656 1616624 5698800 1617496 5700904 +1621944 5698008 1617648 5696792 1617496 5700904 1621488 5701424 +1616624 5698800 1616600 5698864 1617496 5700904 1617648 5696792 +1617336 5695488 1617776 5696792 1621936 5697864 1617336 5695448 +1617648 5696792 1617776 5696792 1617336 5695488 1617424 5696248 +1617336 5695488 1617328 5696064 1617424 5696248 1617776 5696792 +1617648 5696792 1617776 5696792 1617424 5696248 1617520 5696640 +1617648 5696792 1617776 5696792 1617520 5696640 1617584 5696752 +1617776 5696792 1617336 5695488 1617424 5696248 1617520 5696640 +1617776 5696792 1617424 5696248 1617520 5696640 1617584 5696752 +1621936 5697864 1617776 5696792 1617648 5696792 1621944 5698008 +1617648 5696792 1617496 5700904 1621944 5698008 1617776 5696792 +1621944 5698008 1621936 5697864 1617776 5696792 1617496 5700904 +1617648 5696792 1617496 5700904 1617776 5696792 1617584 5696752 +1617336 5695488 1617424 5696248 1617776 5696792 1617336 5695448 +1617776 5696792 1621944 5698008 1621936 5697864 1617336 5695448 +1621936 5697864 1622016 5697816 1617336 5695448 1617776 5696792 +1617336 5695448 1617336 5695488 1617776 5696792 1622016 5697816 +1621936 5697864 1622016 5697816 1617776 5696792 1621944 5698008 +1622016 5697816 1623272 5697000 1617336 5695448 1617776 5696792 +1621936 5697864 1621968 5697856 1622016 5697816 1617776 5696792 +1617496 5700904 1621488 5701424 1621944 5698008 1617776 5696792 +1617648 5696792 1616624 5698800 1617496 5700904 1617776 5696792 +1617496 5700904 1621944 5698008 1617776 5696792 1616624 5698800 +1617648 5696792 1616624 5698800 1617776 5696792 1617584 5696752 +1617648 5696792 1616624 5698656 1616624 5698800 1617776 5696792 +1617648 5696792 1616624 5698656 1617776 5696792 1617584 5696752 +1617648 5696792 1616592 5698624 1616624 5698656 1617776 5696792 +1616624 5698656 1616616 5698720 1616624 5698800 1617776 5696792 +1616624 5698800 1617496 5700904 1617776 5696792 1616624 5698656 +1616624 5698800 1616600 5698864 1617496 5700904 1617776 5696792 +1617776 5696792 1617912 5696744 1617336 5695448 1617336 5695488 +1617776 5696792 1617912 5696744 1617336 5695488 1617424 5696248 +1617912 5696744 1617336 5695448 1617336 5695488 1617424 5696248 +1617336 5695488 1617328 5696064 1617424 5696248 1617912 5696744 +1617776 5696792 1617912 5696744 1617424 5696248 1617520 5696640 +1617776 5696792 1617912 5696744 1617520 5696640 1617584 5696752 +1617912 5696744 1617336 5695488 1617424 5696248 1617520 5696640 +1617776 5696792 1622016 5697816 1617912 5696744 1617520 5696640 +1617912 5696744 1622016 5697816 1617336 5695448 1617336 5695488 +1622016 5697816 1617912 5696744 1617776 5696792 1621936 5697864 +1617912 5696744 1617520 5696640 1617776 5696792 1621936 5697864 +1617776 5696792 1621944 5698008 1621936 5697864 1617912 5696744 +1617776 5696792 1617496 5700904 1621944 5698008 1617912 5696744 +1617776 5696792 1616624 5698800 1617496 5700904 1617912 5696744 +1617496 5700904 1621944 5698008 1617912 5696744 1616624 5698800 +1617776 5696792 1616624 5698800 1617912 5696744 1617520 5696640 +1621944 5698008 1621936 5697864 1617912 5696744 1617496 5700904 +1622016 5697816 1617336 5695448 1617912 5696744 1621936 5697864 +1621936 5697864 1622016 5697816 1617912 5696744 1621944 5698008 +1617336 5695448 1617912 5696744 1622016 5697816 1623272 5697000 +1622016 5697816 1617912 5696744 1621936 5697864 1621968 5697856 +1617496 5700904 1621488 5701424 1621944 5698008 1617912 5696744 +1617776 5696792 1616624 5698656 1616624 5698800 1617912 5696744 +1616624 5698800 1617496 5700904 1617912 5696744 1616624 5698656 +1617776 5696792 1617648 5696792 1616624 5698656 1617912 5696744 +1617776 5696792 1616624 5698656 1617912 5696744 1617520 5696640 +1616624 5698656 1616616 5698720 1616624 5698800 1617912 5696744 +1616624 5698800 1616600 5698864 1617496 5700904 1617912 5696744 +1617912 5696744 1618000 5696680 1617336 5695448 1617336 5695488 +1617912 5696744 1618000 5696680 1617336 5695488 1617424 5696248 +1617336 5695488 1617328 5696064 1617424 5696248 1618000 5696680 +1617912 5696744 1618000 5696680 1617424 5696248 1617520 5696640 +1618000 5696680 1617336 5695488 1617424 5696248 1617520 5696640 +1617912 5696744 1618000 5696680 1617520 5696640 1617776 5696792 +1618000 5696680 1617336 5695448 1617336 5695488 1617424 5696248 +1617912 5696744 1622016 5697816 1618000 5696680 1617520 5696640 +1622016 5697816 1618000 5696680 1617912 5696744 1621936 5697864 +1618000 5696680 1617520 5696640 1617912 5696744 1621936 5697864 +1618000 5696680 1622016 5697816 1617336 5695448 1617336 5695488 +1622016 5697816 1617336 5695448 1618000 5696680 1621936 5697864 +1617912 5696744 1621944 5698008 1621936 5697864 1618000 5696680 +1617912 5696744 1617496 5700904 1621944 5698008 1618000 5696680 +1617912 5696744 1621944 5698008 1618000 5696680 1617520 5696640 +1621936 5697864 1622016 5697816 1618000 5696680 1621944 5698008 +1617336 5695448 1618000 5696680 1622016 5697816 1623272 5697000 +1617336 5695448 1617336 5695488 1618000 5696680 1623272 5697000 +1618000 5696680 1621936 5697864 1622016 5697816 1623272 5697000 +1617336 5695448 1618000 5696680 1623272 5697000 1617304 5695352 +1622016 5697816 1622080 5697800 1623272 5697000 1618000 5696680 +1622016 5697816 1618000 5696680 1621936 5697864 1621968 5697856 +1618000 5696680 1618072 5696608 1617336 5695448 1617336 5695488 +1618000 5696680 1618072 5696608 1617336 5695488 1617424 5696248 +1618000 5696680 1618072 5696608 1617424 5696248 1617520 5696640 +1617336 5695488 1617328 5696064 1617424 5696248 1618072 5696608 +1618000 5696680 1618072 5696608 1617520 5696640 1617912 5696744 +1618072 5696608 1617336 5695488 1617424 5696248 1617520 5696640 +1618072 5696608 1617336 5695448 1617336 5695488 1617424 5696248 +1618000 5696680 1623272 5697000 1618072 5696608 1617520 5696640 +1618072 5696608 1623272 5697000 1617336 5695448 1617336 5695488 +1617336 5695448 1618072 5696608 1623272 5697000 1617304 5695352 +1617336 5695448 1617336 5695488 1618072 5696608 1617304 5695352 +1618072 5696608 1618000 5696680 1623272 5697000 1617304 5695352 +1623272 5697000 1623304 5696976 1617304 5695352 1618072 5696608 +1623272 5697000 1618072 5696608 1618000 5696680 1622016 5697816 +1618072 5696608 1617520 5696640 1618000 5696680 1622016 5697816 +1618000 5696680 1621936 5697864 1622016 5697816 1618072 5696608 +1618000 5696680 1621944 5698008 1621936 5697864 1618072 5696608 +1618000 5696680 1621944 5698008 1618072 5696608 1617520 5696640 +1621936 5697864 1622016 5697816 1618072 5696608 1621944 5698008 +1623272 5697000 1617304 5695352 1618072 5696608 1622016 5697816 +1618000 5696680 1617912 5696744 1621944 5698008 1618072 5696608 +1622016 5697816 1623272 5697000 1618072 5696608 1621936 5697864 +1623272 5697000 1618072 5696608 1622016 5697816 1622080 5697800 +1621936 5697864 1621968 5697856 1622016 5697816 1618072 5696608 +1623272 5697000 1618184 5696544 1618072 5696608 1622016 5697816 +1618184 5696544 1617304 5695352 1618072 5696608 1622016 5697816 +1623272 5697000 1617304 5695352 1618184 5696544 1622016 5697816 +1617304 5695352 1618184 5696544 1623272 5697000 1623304 5696976 +1617304 5695352 1618072 5696608 1618184 5696544 1623304 5696976 +1618184 5696544 1622016 5697816 1623272 5697000 1623304 5696976 +1617304 5695352 1618184 5696544 1623304 5696976 1615488 5689328 +1618072 5696608 1618184 5696544 1617304 5695352 1617336 5695448 +1618072 5696608 1618184 5696544 1617336 5695448 1617336 5695488 +1618072 5696608 1618184 5696544 1617336 5695488 1617424 5696248 +1617336 5695488 1617328 5696064 1617424 5696248 1618184 5696544 +1617336 5695488 1617288 5695576 1617328 5696064 1618184 5696544 +1618072 5696608 1618184 5696544 1617424 5696248 1617520 5696640 +1617424 5696248 1618072 5696608 1618184 5696544 1617328 5696064 +1618184 5696544 1617336 5695448 1617336 5695488 1617328 5696064 +1618072 5696608 1622016 5697816 1618184 5696544 1617424 5696248 +1618184 5696544 1623304 5696976 1617304 5695352 1617336 5695448 +1618184 5696544 1617304 5695352 1617336 5695448 1617336 5695488 +1618072 5696608 1621936 5697864 1622016 5697816 1618184 5696544 +1618072 5696608 1621944 5698008 1621936 5697864 1618184 5696544 +1618072 5696608 1618000 5696680 1621944 5698008 1618184 5696544 +1621944 5698008 1621936 5697864 1618184 5696544 1618000 5696680 +1618072 5696608 1618000 5696680 1618184 5696544 1617424 5696248 +1622016 5697816 1623272 5697000 1618184 5696544 1621936 5697864 +1618000 5696680 1617912 5696744 1621944 5698008 1618184 5696544 +1621936 5697864 1622016 5697816 1618184 5696544 1621944 5698008 +1623272 5697000 1618184 5696544 1622016 5697816 1622080 5697800 +1621936 5697864 1621968 5697856 1622016 5697816 1618184 5696544 +1618184 5696544 1618312 5696512 1617304 5695352 1617336 5695448 +1618184 5696544 1623304 5696976 1618312 5696512 1617336 5695448 +1618312 5696512 1623304 5696976 1617304 5695352 1617336 5695448 +1617304 5695352 1618312 5696512 1623304 5696976 1615488 5689328 +1623304 5696976 1618312 5696512 1618184 5696544 1623272 5697000 +1618312 5696512 1617336 5695448 1618184 5696544 1623272 5697000 +1618184 5696544 1622016 5697816 1623272 5697000 1618312 5696512 +1618184 5696544 1621936 5697864 1622016 5697816 1618312 5696512 +1618184 5696544 1621936 5697864 1618312 5696512 1617336 5695448 +1622016 5697816 1623272 5697000 1618312 5696512 1621936 5697864 +1623304 5696976 1617304 5695352 1618312 5696512 1623272 5697000 +1623272 5697000 1623304 5696976 1618312 5696512 1622016 5697816 +1618184 5696544 1618312 5696512 1617336 5695448 1617336 5695488 +1618184 5696544 1618312 5696512 1617336 5695488 1617328 5696064 +1618312 5696512 1617304 5695352 1617336 5695448 1617336 5695488 +1618184 5696544 1621936 5697864 1618312 5696512 1617336 5695488 +1618184 5696544 1621944 5698008 1621936 5697864 1618312 5696512 +1618184 5696544 1618000 5696680 1621944 5698008 1618312 5696512 +1618184 5696544 1618072 5696608 1618000 5696680 1618312 5696512 +1621936 5697864 1622016 5697816 1618312 5696512 1621944 5698008 +1618184 5696544 1618000 5696680 1618312 5696512 1617336 5695488 +1618000 5696680 1617912 5696744 1621944 5698008 1618312 5696512 +1617912 5696744 1617496 5700904 1621944 5698008 1618312 5696512 +1618000 5696680 1617912 5696744 1618312 5696512 1618184 5696544 +1621944 5698008 1621936 5697864 1618312 5696512 1617912 5696744 +1622016 5697816 1622080 5697800 1623272 5697000 1618312 5696512 +1621936 5697864 1621968 5697856 1622016 5697816 1618312 5696512 +1621944 5698008 1618448 5696576 1617912 5696744 1617496 5700904 +1617912 5696744 1616624 5698800 1617496 5700904 1618448 5696576 +1617912 5696744 1616624 5698656 1616624 5698800 1618448 5696576 +1617496 5700904 1621944 5698008 1618448 5696576 1616624 5698800 +1621944 5698008 1618312 5696512 1618448 5696576 1617496 5700904 +1617912 5696744 1618448 5696576 1618312 5696512 1618000 5696680 +1618312 5696512 1618184 5696544 1618000 5696680 1618448 5696576 +1618184 5696544 1618072 5696608 1618000 5696680 1618448 5696576 +1618184 5696544 1618072 5696608 1618448 5696576 1618312 5696512 +1618448 5696576 1621944 5698008 1618312 5696512 1618184 5696544 +1618000 5696680 1617912 5696744 1618448 5696576 1618072 5696608 +1618312 5696512 1618448 5696576 1621944 5698008 1621936 5697864 +1618312 5696512 1618448 5696576 1621936 5697864 1622016 5697816 +1618312 5696512 1618448 5696576 1622016 5697816 1623272 5697000 +1618448 5696576 1621936 5697864 1622016 5697816 1623272 5697000 +1618312 5696512 1618184 5696544 1618448 5696576 1623272 5697000 +1618448 5696576 1617496 5700904 1621944 5698008 1621936 5697864 +1618312 5696512 1618448 5696576 1623272 5697000 1623304 5696976 +1618448 5696576 1622016 5697816 1623272 5697000 1623304 5696976 +1618312 5696512 1618184 5696544 1618448 5696576 1623304 5696976 +1618312 5696512 1618448 5696576 1623304 5696976 1617304 5695352 +1618312 5696512 1618448 5696576 1617304 5695352 1617336 5695448 +1618312 5696512 1618184 5696544 1618448 5696576 1617304 5695352 +1623304 5696976 1615488 5689328 1617304 5695352 1618448 5696576 +1618448 5696576 1623272 5697000 1623304 5696976 1617304 5695352 +1618448 5696576 1621944 5698008 1621936 5697864 1622016 5697816 +1622016 5697816 1622080 5697800 1623272 5697000 1618448 5696576 +1621936 5697864 1621968 5697856 1622016 5697816 1618448 5696576 +1621944 5698008 1618448 5696576 1617496 5700904 1621488 5701424 +1616624 5698800 1616600 5698864 1617496 5700904 1618448 5696576 +1618448 5696576 1618000 5696680 1617912 5696744 1616624 5698800 +1617496 5700904 1618512 5696632 1618448 5696576 1616624 5698800 +1618448 5696576 1617912 5696744 1616624 5698800 1618512 5696632 +1617912 5696744 1616624 5698656 1616624 5698800 1618512 5696632 +1617912 5696744 1616624 5698656 1618512 5696632 1618448 5696576 +1616624 5698800 1617496 5700904 1618512 5696632 1616624 5698656 +1618448 5696576 1618512 5696632 1621944 5698008 1621936 5697864 +1618448 5696576 1618512 5696632 1621936 5697864 1622016 5697816 +1618448 5696576 1618512 5696632 1622016 5697816 1623272 5697000 +1618448 5696576 1618512 5696632 1623272 5697000 1623304 5696976 +1618512 5696632 1622016 5697816 1623272 5697000 1623304 5696976 +1618448 5696576 1618512 5696632 1623304 5696976 1617304 5695352 +1618512 5696632 1621936 5697864 1622016 5697816 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1618512 5696632 +1621936 5697864 1621968 5697856 1622016 5697816 1618512 5696632 +1616624 5698656 1616616 5698720 1616624 5698800 1618512 5696632 +1621944 5698008 1618512 5696632 1617496 5700904 1621488 5701424 +1617912 5696744 1617776 5696792 1616624 5698656 1618512 5696632 +1617496 5700904 1618512 5696632 1616624 5698800 1616600 5698864 +1618512 5696632 1623304 5696976 1618448 5696576 1617912 5696744 +1618448 5696576 1618000 5696680 1617912 5696744 1618512 5696632 +1617912 5696744 1616624 5698656 1618512 5696632 1618000 5696680 +1618448 5696576 1618072 5696608 1618000 5696680 1618512 5696632 +1618448 5696576 1618184 5696544 1618072 5696608 1618512 5696632 +1618448 5696576 1618312 5696512 1618184 5696544 1618512 5696632 +1618072 5696608 1618000 5696680 1618512 5696632 1618184 5696544 +1618448 5696576 1618184 5696544 1618512 5696632 1623304 5696976 +1618000 5696680 1617912 5696744 1618512 5696632 1618072 5696608 +1618512 5696632 1617496 5700904 1621944 5698008 1621936 5697864 +1618512 5696632 1621944 5698008 1621936 5697864 1622016 5697816 +1617496 5700904 1621944 5698008 1618512 5696632 1616624 5698800 +1621944 5698008 1618528 5696672 1617496 5700904 1621488 5701424 +1618512 5696632 1618528 5696672 1621944 5698008 1621936 5697864 +1618512 5696632 1618528 5696672 1621936 5697864 1622016 5697816 +1618512 5696632 1618528 5696672 1622016 5697816 1623272 5697000 +1621936 5697864 1621968 5697856 1622016 5697816 1618528 5696672 +1618528 5696672 1621944 5698008 1621936 5697864 1622016 5697816 +1617496 5700904 1618528 5696672 1618512 5696632 1616624 5698800 +1618512 5696632 1616624 5698656 1616624 5698800 1618528 5696672 +1618512 5696632 1617912 5696744 1616624 5698656 1618528 5696672 +1618512 5696632 1618000 5696680 1617912 5696744 1618528 5696672 +1617912 5696744 1616624 5698656 1618528 5696672 1618000 5696680 +1616624 5698656 1616624 5698800 1618528 5696672 1617912 5696744 +1616624 5698656 1616616 5698720 1616624 5698800 1618528 5696672 +1617912 5696744 1617776 5696792 1616624 5698656 1618528 5696672 +1617912 5696744 1617776 5696792 1618528 5696672 1618000 5696680 +1617776 5696792 1617648 5696792 1616624 5698656 1618528 5696672 +1616624 5698656 1616624 5698800 1618528 5696672 1617776 5696792 +1617496 5700904 1618528 5696672 1616624 5698800 1616600 5698864 +1618512 5696632 1618072 5696608 1618000 5696680 1618528 5696672 +1618000 5696680 1617912 5696744 1618528 5696672 1618072 5696608 +1618512 5696632 1618184 5696544 1618072 5696608 1618528 5696672 +1618512 5696632 1618448 5696576 1618184 5696544 1618528 5696672 +1618448 5696576 1618312 5696512 1618184 5696544 1618528 5696672 +1618184 5696544 1618072 5696608 1618528 5696672 1618448 5696576 +1618072 5696608 1618000 5696680 1618528 5696672 1618184 5696544 +1616624 5698800 1617496 5700904 1618528 5696672 1616624 5698656 +1618512 5696632 1618448 5696576 1618528 5696672 1622016 5697816 +1618528 5696672 1617496 5700904 1621944 5698008 1621936 5697864 +1617496 5700904 1621944 5698008 1618528 5696672 1616624 5698800 +1621944 5698008 1618552 5696712 1617496 5700904 1621488 5701424 +1618528 5696672 1618552 5696712 1621944 5698008 1621936 5697864 +1618528 5696672 1618552 5696712 1621936 5697864 1622016 5697816 +1621936 5697864 1621968 5697856 1622016 5697816 1618552 5696712 +1618528 5696672 1618552 5696712 1622016 5697816 1618512 5696632 +1622016 5697816 1623272 5697000 1618512 5696632 1618552 5696712 +1618552 5696712 1621936 5697864 1622016 5697816 1618512 5696632 +1618552 5696712 1621944 5698008 1621936 5697864 1622016 5697816 +1618528 5696672 1617496 5700904 1618552 5696712 1618512 5696632 +1617496 5700904 1618552 5696712 1618528 5696672 1616624 5698800 +1617496 5700904 1618552 5696712 1616624 5698800 1616600 5698864 +1618528 5696672 1616624 5698656 1616624 5698800 1618552 5696712 +1618528 5696672 1617776 5696792 1616624 5698656 1618552 5696712 +1617776 5696792 1617648 5696792 1616624 5698656 1618552 5696712 +1616624 5698656 1616616 5698720 1616624 5698800 1618552 5696712 +1618528 5696672 1617912 5696744 1617776 5696792 1618552 5696712 +1618528 5696672 1618000 5696680 1617912 5696744 1618552 5696712 +1618528 5696672 1618072 5696608 1618000 5696680 1618552 5696712 +1618000 5696680 1617912 5696744 1618552 5696712 1618072 5696608 +1617776 5696792 1616624 5698656 1618552 5696712 1617912 5696744 +1617912 5696744 1617776 5696792 1618552 5696712 1618000 5696680 +1618528 5696672 1618184 5696544 1618072 5696608 1618552 5696712 +1616624 5698656 1616624 5698800 1618552 5696712 1617776 5696792 +1618552 5696712 1618512 5696632 1618528 5696672 1618072 5696608 +1616624 5698800 1617496 5700904 1618552 5696712 1616624 5698656 +1618552 5696712 1617496 5700904 1621944 5698008 1621936 5697864 +1617496 5700904 1621944 5698008 1618552 5696712 1616624 5698800 +1621944 5698008 1618576 5696872 1617496 5700904 1621488 5701424 +1618552 5696712 1618576 5696872 1621944 5698008 1621936 5697864 +1618552 5696712 1618576 5696872 1621936 5697864 1622016 5697816 +1618552 5696712 1617496 5700904 1618576 5696872 1621936 5697864 +1617496 5700904 1618576 5696872 1618552 5696712 1616624 5698800 +1617496 5700904 1618576 5696872 1616624 5698800 1616600 5698864 +1618552 5696712 1616624 5698656 1616624 5698800 1618576 5696872 +1616624 5698656 1616616 5698720 1616624 5698800 1618576 5696872 +1618552 5696712 1617776 5696792 1616624 5698656 1618576 5696872 +1617776 5696792 1617648 5696792 1616624 5698656 1618576 5696872 +1618552 5696712 1617912 5696744 1617776 5696792 1618576 5696872 +1618552 5696712 1618000 5696680 1617912 5696744 1618576 5696872 +1618552 5696712 1618072 5696608 1618000 5696680 1618576 5696872 +1618552 5696712 1618528 5696672 1618072 5696608 1618576 5696872 +1618072 5696608 1618000 5696680 1618576 5696872 1618528 5696672 +1617912 5696744 1617776 5696792 1618576 5696872 1618000 5696680 +1618000 5696680 1617912 5696744 1618576 5696872 1618072 5696608 +1618528 5696672 1618184 5696544 1618072 5696608 1618576 5696872 +1617776 5696792 1616624 5698656 1618576 5696872 1617912 5696744 +1616624 5698656 1616624 5698800 1618576 5696872 1617776 5696792 +1618576 5696872 1621936 5697864 1618552 5696712 1618528 5696672 +1616624 5698800 1617496 5700904 1618576 5696872 1616624 5698656 +1618576 5696872 1617496 5700904 1621944 5698008 1621936 5697864 +1617496 5700904 1621944 5698008 1618576 5696872 1616624 5698800 +1621944 5698008 1618560 5697104 1617496 5700904 1621488 5701424 +1617496 5700904 1621464 5701464 1621488 5701424 1618560 5697104 +1621944 5698008 1618560 5697104 1621488 5701424 1621576 5701360 +1618576 5696872 1618560 5697104 1621944 5698008 1621936 5697864 +1618576 5696872 1618560 5697104 1621936 5697864 1618552 5696712 +1618576 5696872 1617496 5700904 1618560 5697104 1621936 5697864 +1617496 5700904 1618560 5697104 1618576 5696872 1616624 5698800 +1617496 5700904 1618560 5697104 1616624 5698800 1616600 5698864 +1618576 5696872 1616624 5698656 1616624 5698800 1618560 5697104 +1616624 5698656 1616616 5698720 1616624 5698800 1618560 5697104 +1618576 5696872 1617776 5696792 1616624 5698656 1618560 5697104 +1617776 5696792 1617648 5696792 1616624 5698656 1618560 5697104 +1618576 5696872 1617912 5696744 1617776 5696792 1618560 5697104 +1618576 5696872 1618000 5696680 1617912 5696744 1618560 5697104 +1618576 5696872 1618072 5696608 1618000 5696680 1618560 5697104 +1617912 5696744 1617776 5696792 1618560 5697104 1618000 5696680 +1617776 5696792 1616624 5698656 1618560 5697104 1617912 5696744 +1616624 5698656 1616624 5698800 1618560 5697104 1617776 5696792 +1618560 5697104 1621936 5697864 1618576 5696872 1618000 5696680 +1616624 5698800 1617496 5700904 1618560 5697104 1616624 5698656 +1621944 5698008 1621936 5697864 1618560 5697104 1621488 5701424 +1618560 5697104 1616624 5698800 1617496 5700904 1621488 5701424 +1617496 5700904 1618520 5697240 1616624 5698800 1616600 5698864 +1616624 5698800 1618520 5697240 1618560 5697104 1616624 5698656 +1616624 5698800 1618520 5697240 1616624 5698656 1616616 5698720 +1618560 5697104 1617776 5696792 1616624 5698656 1618520 5697240 +1617776 5696792 1617648 5696792 1616624 5698656 1618520 5697240 +1617648 5696792 1616592 5698624 1616624 5698656 1618520 5697240 +1618560 5697104 1617912 5696744 1617776 5696792 1618520 5697240 +1618560 5697104 1618000 5696680 1617912 5696744 1618520 5697240 +1617776 5696792 1617648 5696792 1618520 5697240 1617912 5696744 +1616624 5698656 1616624 5698800 1618520 5697240 1617648 5696792 +1618520 5697240 1617496 5700904 1618560 5697104 1617912 5696744 +1618560 5697104 1618520 5697240 1617496 5700904 1621488 5701424 +1617496 5700904 1621464 5701464 1621488 5701424 1618520 5697240 +1618560 5697104 1618520 5697240 1621488 5701424 1621944 5698008 +1621488 5701424 1621576 5701360 1621944 5698008 1618520 5697240 +1618560 5697104 1618520 5697240 1621944 5698008 1621936 5697864 +1618520 5697240 1621488 5701424 1621944 5698008 1621936 5697864 +1618560 5697104 1618520 5697240 1621936 5697864 1618576 5696872 +1618560 5697104 1617912 5696744 1618520 5697240 1621936 5697864 +1618520 5697240 1617496 5700904 1621488 5701424 1621944 5698008 +1618520 5697240 1616624 5698800 1617496 5700904 1621488 5701424 +1616624 5698800 1617496 5700904 1618520 5697240 1616624 5698656 +1617496 5700904 1618424 5697416 1616624 5698800 1616600 5698864 +1618520 5697240 1618424 5697416 1617496 5700904 1621488 5701424 +1617496 5700904 1621464 5701464 1621488 5701424 1618424 5697416 +1618520 5697240 1618424 5697416 1621488 5701424 1621944 5698008 +1621488 5701424 1621576 5701360 1621944 5698008 1618424 5697416 +1618520 5697240 1618424 5697416 1621944 5698008 1621936 5697864 +1618424 5697416 1617496 5700904 1621488 5701424 1621944 5698008 +1618520 5697240 1616624 5698800 1618424 5697416 1621944 5698008 +1616624 5698800 1618424 5697416 1618520 5697240 1616624 5698656 +1616624 5698800 1618424 5697416 1616624 5698656 1616616 5698720 +1618520 5697240 1617648 5696792 1616624 5698656 1618424 5697416 +1618520 5697240 1617776 5696792 1617648 5696792 1618424 5697416 +1617648 5696792 1616592 5698624 1616624 5698656 1618424 5697416 +1618520 5697240 1617912 5696744 1617776 5696792 1618424 5697416 +1617776 5696792 1617648 5696792 1618424 5697416 1617912 5696744 +1618520 5697240 1618560 5697104 1617912 5696744 1618424 5697416 +1617648 5696792 1616624 5698656 1618424 5697416 1617776 5696792 +1618424 5697416 1621944 5698008 1618520 5697240 1617912 5696744 +1616624 5698656 1616624 5698800 1618424 5697416 1617648 5696792 +1618424 5697416 1616624 5698800 1617496 5700904 1621488 5701424 +1616624 5698800 1617496 5700904 1618424 5697416 1616624 5698656 +1621488 5701424 1618432 5697448 1617496 5700904 1621464 5701464 +1618424 5697416 1618432 5697448 1621488 5701424 1621944 5698008 +1621488 5701424 1621576 5701360 1621944 5698008 1618432 5697448 +1618424 5697416 1618432 5697448 1621944 5698008 1618520 5697240 +1621944 5698008 1621936 5697864 1618520 5697240 1618432 5697448 +1618432 5697448 1621488 5701424 1621944 5698008 1618520 5697240 +1617496 5700904 1618432 5697448 1618424 5697416 1616624 5698800 +1617496 5700904 1618432 5697448 1616624 5698800 1616600 5698864 +1618424 5697416 1616624 5698800 1618432 5697448 1618520 5697240 +1618424 5697416 1616624 5698656 1616624 5698800 1618432 5697448 +1616624 5698656 1616616 5698720 1616624 5698800 1618432 5697448 +1618424 5697416 1617648 5696792 1616624 5698656 1618432 5697448 +1617648 5696792 1616592 5698624 1616624 5698656 1618432 5697448 +1618424 5697416 1617776 5696792 1617648 5696792 1618432 5697448 +1616624 5698800 1617496 5700904 1618432 5697448 1616624 5698656 +1618424 5697416 1617648 5696792 1618432 5697448 1618520 5697240 +1616624 5698656 1616624 5698800 1618432 5697448 1617648 5696792 +1618432 5697448 1617496 5700904 1621488 5701424 1621944 5698008 +1617496 5700904 1621488 5701424 1618432 5697448 1616624 5698800 +1621944 5698008 1618608 5697568 1621488 5701424 1621576 5701360 +1618432 5697448 1618608 5697568 1621944 5698008 1618520 5697240 +1621944 5698008 1621936 5697864 1618520 5697240 1618608 5697568 +1621936 5697864 1618560 5697104 1618520 5697240 1618608 5697568 +1621936 5697864 1618560 5697104 1618608 5697568 1621944 5698008 +1621936 5697864 1618576 5696872 1618560 5697104 1618608 5697568 +1618432 5697448 1618608 5697568 1618520 5697240 1618424 5697416 +1618520 5697240 1618432 5697448 1618608 5697568 1618560 5697104 +1621488 5701424 1618608 5697568 1618432 5697448 1617496 5700904 +1621488 5701424 1618608 5697568 1617496 5700904 1621464 5701464 +1618432 5697448 1617496 5700904 1618608 5697568 1618520 5697240 +1618432 5697448 1616624 5698800 1617496 5700904 1618608 5697568 +1616624 5698800 1616600 5698864 1617496 5700904 1618608 5697568 +1618432 5697448 1616624 5698656 1616624 5698800 1618608 5697568 +1616624 5698656 1616616 5698720 1616624 5698800 1618608 5697568 +1618432 5697448 1617648 5696792 1616624 5698656 1618608 5697568 +1617496 5700904 1621488 5701424 1618608 5697568 1616624 5698800 +1618432 5697448 1616624 5698656 1618608 5697568 1618520 5697240 +1616624 5698800 1617496 5700904 1618608 5697568 1616624 5698656 +1618608 5697568 1621488 5701424 1621944 5698008 1621936 5697864 +1621488 5701424 1621944 5698008 1618608 5697568 1617496 5700904 +1621488 5701424 1618672 5697656 1617496 5700904 1621464 5701464 +1617496 5700904 1618672 5697656 1618608 5697568 1616624 5698800 +1617496 5700904 1618672 5697656 1616624 5698800 1616600 5698864 +1618608 5697568 1616624 5698656 1616624 5698800 1618672 5697656 +1616624 5698656 1616616 5698720 1616624 5698800 1618672 5697656 +1618608 5697568 1618432 5697448 1616624 5698656 1618672 5697656 +1618432 5697448 1617648 5696792 1616624 5698656 1618672 5697656 +1616624 5698800 1617496 5700904 1618672 5697656 1616624 5698656 +1616624 5698656 1616624 5698800 1618672 5697656 1618432 5697448 +1618672 5697656 1621488 5701424 1618608 5697568 1618432 5697448 +1618608 5697568 1618672 5697656 1621488 5701424 1621944 5698008 +1621488 5701424 1621576 5701360 1621944 5698008 1618672 5697656 +1618608 5697568 1618672 5697656 1621944 5698008 1621936 5697864 +1618608 5697568 1618672 5697656 1621936 5697864 1618560 5697104 +1621936 5697864 1618576 5696872 1618560 5697104 1618672 5697656 +1618560 5697104 1618608 5697568 1618672 5697656 1618576 5696872 +1621936 5697864 1618552 5696712 1618576 5696872 1618672 5697656 +1618608 5697568 1618672 5697656 1618560 5697104 1618520 5697240 +1618672 5697656 1621944 5698008 1621936 5697864 1618576 5696872 +1618608 5697568 1618432 5697448 1618672 5697656 1618560 5697104 +1618672 5697656 1621488 5701424 1621944 5698008 1621936 5697864 +1618672 5697656 1617496 5700904 1621488 5701424 1621944 5698008 +1617496 5700904 1621488 5701424 1618672 5697656 1616624 5698800 +1621488 5701424 1618768 5697872 1617496 5700904 1621464 5701464 +1618672 5697656 1618768 5697872 1621488 5701424 1621944 5698008 +1621488 5701424 1621576 5701360 1621944 5698008 1618768 5697872 +1618672 5697656 1618768 5697872 1621944 5698008 1621936 5697864 +1618672 5697656 1618768 5697872 1621936 5697864 1618576 5696872 +1621936 5697864 1618552 5696712 1618576 5696872 1618768 5697872 +1618672 5697656 1618768 5697872 1618576 5696872 1618560 5697104 +1618768 5697872 1621944 5698008 1621936 5697864 1618576 5696872 +1621944 5698008 1621936 5697864 1618768 5697872 1621576 5701360 +1618672 5697656 1617496 5700904 1618768 5697872 1618576 5696872 +1617496 5700904 1618768 5697872 1618672 5697656 1616624 5698800 +1617496 5700904 1618768 5697872 1616624 5698800 1616600 5698864 +1618672 5697656 1616624 5698656 1616624 5698800 1618768 5697872 +1616624 5698656 1616616 5698720 1616624 5698800 1618768 5697872 +1618672 5697656 1618432 5697448 1616624 5698656 1618768 5697872 +1618672 5697656 1618608 5697568 1618432 5697448 1618768 5697872 +1618432 5697448 1617648 5696792 1616624 5698656 1618768 5697872 +1616624 5698656 1616624 5698800 1618768 5697872 1618432 5697448 +1618768 5697872 1618576 5696872 1618672 5697656 1618432 5697448 +1616624 5698800 1617496 5700904 1618768 5697872 1616624 5698656 +1618768 5697872 1617496 5700904 1621488 5701424 1621576 5701360 +1617496 5700904 1621488 5701424 1618768 5697872 1616624 5698800 +1621576 5701360 1622064 5698152 1621944 5698008 1618768 5697872 +1621576 5701360 1622296 5698320 1622064 5698152 1618768 5697872 +1621576 5701360 1622064 5698152 1618768 5697872 1621488 5701424 +1621944 5698008 1621936 5697864 1618768 5697872 1622064 5698152 +1621488 5701424 1618872 5698008 1617496 5700904 1621464 5701464 +1618768 5697872 1618872 5698008 1621488 5701424 1621576 5701360 +1618768 5697872 1618872 5698008 1621576 5701360 1622064 5698152 +1621576 5701360 1622296 5698320 1622064 5698152 1618872 5698008 +1618872 5698008 1621488 5701424 1621576 5701360 1622064 5698152 +1618768 5697872 1617496 5700904 1618872 5698008 1622064 5698152 +1617496 5700904 1618872 5698008 1618768 5697872 1616624 5698800 +1617496 5700904 1618872 5698008 1616624 5698800 1616600 5698864 +1617496 5700904 1618872 5698008 1616600 5698864 1616256 5699536 +1618768 5697872 1616624 5698656 1616624 5698800 1618872 5698008 +1616624 5698656 1616616 5698720 1616624 5698800 1618872 5698008 +1618768 5697872 1618432 5697448 1616624 5698656 1618872 5698008 +1618872 5698008 1622064 5698152 1618768 5697872 1616624 5698656 +1618872 5698008 1616624 5698656 1616624 5698800 1616600 5698864 +1618872 5698008 1617496 5700904 1621488 5701424 1621576 5701360 +1617496 5700904 1621488 5701424 1618872 5698008 1616600 5698864 +1618768 5697872 1618872 5698008 1622064 5698152 1621944 5698008 +1618872 5698008 1621576 5701360 1622064 5698152 1621944 5698008 +1618768 5697872 1618872 5698008 1621944 5698008 1621936 5697864 +1618768 5697872 1618872 5698008 1621936 5697864 1618576 5696872 +1621936 5697864 1618552 5696712 1618576 5696872 1618872 5698008 +1618768 5697872 1618872 5698008 1618576 5696872 1618672 5697656 +1618576 5696872 1618560 5697104 1618672 5697656 1618872 5698008 +1618872 5698008 1621936 5697864 1618576 5696872 1618672 5697656 +1618872 5698008 1621944 5698008 1621936 5697864 1618576 5696872 +1618768 5697872 1616624 5698656 1618872 5698008 1618672 5697656 +1618872 5698008 1622064 5698152 1621944 5698008 1621936 5697864 +1622064 5698152 1619024 5698144 1621576 5701360 1622296 5698320 +1618872 5698008 1619024 5698144 1622064 5698152 1621944 5698008 +1621576 5701360 1619024 5698144 1618872 5698008 1621488 5701424 +1618872 5698008 1617496 5700904 1621488 5701424 1619024 5698144 +1617496 5700904 1621464 5701464 1621488 5701424 1619024 5698144 +1621488 5701424 1621576 5701360 1619024 5698144 1617496 5700904 +1618872 5698008 1617496 5700904 1619024 5698144 1621944 5698008 +1618872 5698008 1616600 5698864 1617496 5700904 1619024 5698144 +1618872 5698008 1616624 5698800 1616600 5698864 1619024 5698144 +1616600 5698864 1616256 5699536 1617496 5700904 1619024 5698144 +1618872 5698008 1616624 5698656 1616624 5698800 1619024 5698144 +1617496 5700904 1621488 5701424 1619024 5698144 1616600 5698864 +1618872 5698008 1616624 5698800 1619024 5698144 1621944 5698008 +1616600 5698864 1617496 5700904 1619024 5698144 1616624 5698800 +1619024 5698144 1621576 5701360 1622064 5698152 1621944 5698008 +1621576 5701360 1622064 5698152 1619024 5698144 1621488 5701424 +1618872 5698008 1619024 5698144 1621944 5698008 1621936 5697864 +1619024 5698144 1622064 5698152 1621944 5698008 1621936 5697864 +1618872 5698008 1619024 5698144 1621936 5697864 1618576 5696872 +1621936 5697864 1618552 5696712 1618576 5696872 1619024 5698144 +1618872 5698008 1619024 5698144 1618576 5696872 1618672 5697656 +1618576 5696872 1618560 5697104 1618672 5697656 1619024 5698144 +1618560 5697104 1618608 5697568 1618672 5697656 1619024 5698144 +1618872 5698008 1619024 5698144 1618672 5697656 1618768 5697872 +1618672 5697656 1618872 5698008 1619024 5698144 1618560 5697104 +1619024 5698144 1621936 5697864 1618576 5696872 1618560 5697104 +1618872 5698008 1616624 5698800 1619024 5698144 1618672 5697656 +1619024 5698144 1621944 5698008 1621936 5697864 1618576 5696872 +1621488 5701424 1619064 5698200 1617496 5700904 1621464 5701464 +1619024 5698144 1619064 5698200 1621488 5701424 1621576 5701360 +1617496 5700904 1619064 5698200 1619024 5698144 1616600 5698864 +1617496 5700904 1619064 5698200 1616600 5698864 1616256 5699536 +1619024 5698144 1616624 5698800 1616600 5698864 1619064 5698200 +1619024 5698144 1618872 5698008 1616624 5698800 1619064 5698200 +1618872 5698008 1616624 5698656 1616624 5698800 1619064 5698200 +1616600 5698864 1617496 5700904 1619064 5698200 1616624 5698800 +1616624 5698800 1616600 5698864 1619064 5698200 1618872 5698008 +1619024 5698144 1618872 5698008 1619064 5698200 1621576 5701360 +1619024 5698144 1619064 5698200 1621576 5701360 1622064 5698152 +1621576 5701360 1622296 5698320 1622064 5698152 1619064 5698200 +1619064 5698200 1621488 5701424 1621576 5701360 1622064 5698152 +1619024 5698144 1619064 5698200 1622064 5698152 1621944 5698008 +1619024 5698144 1619064 5698200 1621944 5698008 1621936 5697864 +1619064 5698200 1622064 5698152 1621944 5698008 1621936 5697864 +1619024 5698144 1618872 5698008 1619064 5698200 1621936 5697864 +1619064 5698200 1621576 5701360 1622064 5698152 1621944 5698008 +1619064 5698200 1617496 5700904 1621488 5701424 1621576 5701360 +1617496 5700904 1621488 5701424 1619064 5698200 1616600 5698864 +1619024 5698144 1619064 5698200 1621936 5697864 1618576 5696872 +1621488 5701424 1619064 5698240 1617496 5700904 1621464 5701464 +1617496 5700904 1621448 5701528 1621464 5701464 1619064 5698240 +1619064 5698200 1619064 5698240 1621488 5701424 1621576 5701360 +1619064 5698200 1619064 5698240 1621576 5701360 1622064 5698152 +1621576 5701360 1622296 5698320 1622064 5698152 1619064 5698240 +1619064 5698200 1619064 5698240 1622064 5698152 1621944 5698008 +1619064 5698240 1621576 5701360 1622064 5698152 1621944 5698008 +1619064 5698200 1619064 5698240 1621944 5698008 1621936 5697864 +1619064 5698240 1621488 5701424 1621576 5701360 1622064 5698152 +1619064 5698200 1617496 5700904 1619064 5698240 1621944 5698008 +1617496 5700904 1619064 5698240 1619064 5698200 1616600 5698864 +1617496 5700904 1619064 5698240 1616600 5698864 1616256 5699536 +1619064 5698200 1616624 5698800 1616600 5698864 1619064 5698240 +1619064 5698200 1618872 5698008 1616624 5698800 1619064 5698240 +1619064 5698200 1619024 5698144 1618872 5698008 1619064 5698240 +1618872 5698008 1616624 5698656 1616624 5698800 1619064 5698240 +1616624 5698800 1616600 5698864 1619064 5698240 1618872 5698008 +1618872 5698008 1616624 5698800 1619064 5698240 1619024 5698144 +1619064 5698240 1621944 5698008 1619064 5698200 1619024 5698144 +1616600 5698864 1617496 5700904 1619064 5698240 1616624 5698800 +1621488 5701424 1621576 5701360 1619064 5698240 1621464 5701464 +1619064 5698240 1616600 5698864 1617496 5700904 1621464 5701464 +1617496 5700904 1619040 5698280 1616600 5698864 1616256 5699536 +1616600 5698864 1619040 5698280 1619064 5698240 1616624 5698800 +1619064 5698240 1618872 5698008 1616624 5698800 1619040 5698280 +1618872 5698008 1616624 5698656 1616624 5698800 1619040 5698280 +1619064 5698240 1619024 5698144 1618872 5698008 1619040 5698280 +1619064 5698240 1619064 5698200 1619024 5698144 1619040 5698280 +1618872 5698008 1616624 5698800 1619040 5698280 1619024 5698144 +1619024 5698144 1618872 5698008 1619040 5698280 1619064 5698200 +1616624 5698800 1616600 5698864 1619040 5698280 1618872 5698008 +1619040 5698280 1617496 5700904 1619064 5698240 1619064 5698200 +1619064 5698240 1619040 5698280 1617496 5700904 1621464 5701464 +1619064 5698240 1619040 5698280 1621464 5701464 1621488 5701424 +1617496 5700904 1621448 5701528 1621464 5701464 1619040 5698280 +1619064 5698240 1619040 5698280 1621488 5701424 1621576 5701360 +1619040 5698280 1621464 5701464 1621488 5701424 1621576 5701360 +1619064 5698240 1619040 5698280 1621576 5701360 1622064 5698152 +1621576 5701360 1622296 5698320 1622064 5698152 1619040 5698280 +1619064 5698240 1619040 5698280 1622064 5698152 1621944 5698008 +1619064 5698240 1619040 5698280 1621944 5698008 1619064 5698200 +1619040 5698280 1621576 5701360 1622064 5698152 1621944 5698008 +1619040 5698280 1621488 5701424 1621576 5701360 1622064 5698152 +1619064 5698240 1619064 5698200 1619040 5698280 1621944 5698008 +1619040 5698280 1617496 5700904 1621464 5701464 1621488 5701424 +1619040 5698280 1616600 5698864 1617496 5700904 1621464 5701464 +1616600 5698864 1617496 5700904 1619040 5698280 1616624 5698800 +1616624 5698800 1618936 5698304 1619040 5698280 1618872 5698008 +1616624 5698800 1618936 5698304 1618872 5698008 1616624 5698656 +1616624 5698800 1618936 5698304 1616624 5698656 1616616 5698720 +1618872 5698008 1618768 5697872 1616624 5698656 1618936 5698304 +1618768 5697872 1618432 5697448 1616624 5698656 1618936 5698304 +1616624 5698656 1616624 5698800 1618936 5698304 1618768 5697872 +1619040 5698280 1619024 5698144 1618872 5698008 1618936 5698304 +1619040 5698280 1619064 5698200 1619024 5698144 1618936 5698304 +1618936 5698304 1619024 5698144 1618872 5698008 1618768 5697872 +1616624 5698800 1616600 5698864 1618936 5698304 1616624 5698656 +1618936 5698304 1616600 5698864 1619040 5698280 1619024 5698144 +1619040 5698280 1618936 5698304 1616600 5698864 1617496 5700904 +1616600 5698864 1616256 5699536 1617496 5700904 1618936 5698304 +1618936 5698304 1616624 5698800 1616600 5698864 1617496 5700904 +1619040 5698280 1618936 5698304 1617496 5700904 1621464 5701464 +1619040 5698280 1619024 5698144 1618936 5698304 1617496 5700904 +1616624 5698656 1618864 5698296 1618768 5697872 1618432 5697448 +1616624 5698656 1618936 5698304 1618864 5698296 1618432 5697448 +1618864 5698296 1618936 5698304 1618768 5697872 1618432 5697448 +1616624 5698656 1618864 5698296 1618432 5697448 1617648 5696792 +1618768 5697872 1618672 5697656 1618432 5697448 1618864 5698296 +1618768 5697872 1618864 5698296 1618936 5698304 1618872 5698008 +1618768 5697872 1618432 5697448 1618864 5698296 1618872 5698008 +1618936 5698304 1618864 5698296 1616624 5698656 1616624 5698800 +1618864 5698296 1618432 5697448 1616624 5698656 1616624 5698800 +1616624 5698656 1616616 5698720 1616624 5698800 1618864 5698296 +1618936 5698304 1619024 5698144 1618872 5698008 1618864 5698296 +1618872 5698008 1618768 5697872 1618864 5698296 1619024 5698144 +1618936 5698304 1619040 5698280 1619024 5698144 1618864 5698296 +1618864 5698296 1616624 5698800 1618936 5698304 1619024 5698144 +1618936 5698304 1618864 5698296 1616624 5698800 1616600 5698864 +1618864 5698296 1616624 5698656 1616624 5698800 1616600 5698864 +1618936 5698304 1618864 5698296 1616600 5698864 1617496 5700904 +1616600 5698864 1616256 5699536 1617496 5700904 1618864 5698296 +1618936 5698304 1619024 5698144 1618864 5698296 1617496 5700904 +1618864 5698296 1616624 5698800 1616600 5698864 1617496 5700904 +1618936 5698304 1618864 5698296 1617496 5700904 1619040 5698280 +1618864 5698296 1618736 5698224 1616624 5698656 1616624 5698800 +1618864 5698296 1618432 5697448 1618736 5698224 1616624 5698800 +1618736 5698224 1618432 5697448 1616624 5698656 1616624 5698800 +1616624 5698656 1616616 5698720 1616624 5698800 1618736 5698224 +1616624 5698656 1618736 5698224 1618432 5697448 1617648 5696792 +1618432 5697448 1618736 5698224 1618864 5698296 1618768 5697872 +1618736 5698224 1616624 5698800 1618864 5698296 1618768 5697872 +1618864 5698296 1618872 5698008 1618768 5697872 1618736 5698224 +1618864 5698296 1618872 5698008 1618736 5698224 1616624 5698800 +1618432 5697448 1616624 5698656 1618736 5698224 1618768 5697872 +1618768 5697872 1618432 5697448 1618736 5698224 1618872 5698008 +1618432 5697448 1618736 5698224 1618768 5697872 1618672 5697656 +1618432 5697448 1616624 5698656 1618736 5698224 1618672 5697656 +1618432 5697448 1618736 5698224 1618672 5697656 1618608 5697568 +1618736 5698224 1618872 5698008 1618768 5697872 1618672 5697656 +1618864 5698296 1619024 5698144 1618872 5698008 1618736 5698224 +1618864 5698296 1618736 5698224 1616624 5698800 1616600 5698864 +1618736 5698224 1616624 5698656 1616624 5698800 1616600 5698864 +1618864 5698296 1618872 5698008 1618736 5698224 1616600 5698864 +1618864 5698296 1618736 5698224 1616600 5698864 1617496 5700904 +1618864 5698296 1618872 5698008 1618736 5698224 1617496 5700904 +1616600 5698864 1616256 5699536 1617496 5700904 1618736 5698224 +1618736 5698224 1616624 5698800 1616600 5698864 1617496 5700904 +1618864 5698296 1618736 5698224 1617496 5700904 1618936 5698304 +1618736 5698224 1618664 5698144 1616624 5698656 1616624 5698800 +1618736 5698224 1618664 5698144 1616624 5698800 1616600 5698864 +1618736 5698224 1618432 5697448 1618664 5698144 1616624 5698800 +1618432 5697448 1618664 5698144 1618736 5698224 1618672 5697656 +1618664 5698144 1616624 5698800 1618736 5698224 1618672 5697656 +1618664 5698144 1618432 5697448 1616624 5698656 1616624 5698800 +1618432 5697448 1616624 5698656 1618664 5698144 1618672 5697656 +1616624 5698656 1616616 5698720 1616624 5698800 1618664 5698144 +1618432 5697448 1618664 5698144 1618672 5697656 1618608 5697568 +1616624 5698656 1618664 5698144 1618432 5697448 1617648 5696792 +1618736 5698224 1618768 5697872 1618672 5697656 1618664 5698144 +1618736 5698224 1618768 5697872 1618664 5698144 1616624 5698800 +1618672 5697656 1618432 5697448 1618664 5698144 1618768 5697872 +1618736 5698224 1618872 5698008 1618768 5697872 1618664 5698144 +1618736 5698224 1618864 5698296 1618872 5698008 1618664 5698144 +1618736 5698224 1618872 5698008 1618664 5698144 1616624 5698800 +1618768 5697872 1618672 5697656 1618664 5698144 1618872 5698008 +1618664 5698144 1618568 5698056 1616624 5698656 1616624 5698800 +1618664 5698144 1618568 5698056 1616624 5698800 1618736 5698224 +1618664 5698144 1618432 5697448 1618568 5698056 1616624 5698800 +1618432 5697448 1618568 5698056 1618664 5698144 1618672 5697656 +1618664 5698144 1618768 5697872 1618672 5697656 1618568 5698056 +1618568 5698056 1616624 5698800 1618664 5698144 1618768 5697872 +1618672 5697656 1618432 5697448 1618568 5698056 1618768 5697872 +1618568 5698056 1618432 5697448 1616624 5698656 1616624 5698800 +1618432 5697448 1616624 5698656 1618568 5698056 1618672 5697656 +1616624 5698656 1616616 5698720 1616624 5698800 1618568 5698056 +1618432 5697448 1618568 5698056 1618672 5697656 1618608 5697568 +1618568 5698056 1618768 5697872 1618672 5697656 1618608 5697568 +1618432 5697448 1616624 5698656 1618568 5698056 1618608 5697568 +1616624 5698656 1618568 5698056 1618432 5697448 1617648 5696792 +1618664 5698144 1618872 5698008 1618768 5697872 1618568 5698056 +1618568 5698056 1618440 5697904 1616624 5698656 1616624 5698800 +1618432 5697448 1618440 5697904 1618568 5698056 1618608 5697568 +1618440 5697904 1616624 5698656 1618568 5698056 1618608 5697568 +1618432 5697448 1616624 5698656 1618440 5697904 1618608 5697568 +1618568 5698056 1618672 5697656 1618608 5697568 1618440 5697904 +1618568 5698056 1618768 5697872 1618672 5697656 1618440 5697904 +1618568 5698056 1618664 5698144 1618768 5697872 1618440 5697904 +1618568 5698056 1618768 5697872 1618440 5697904 1616624 5698656 +1618608 5697568 1618432 5697448 1618440 5697904 1618672 5697656 +1618672 5697656 1618608 5697568 1618440 5697904 1618768 5697872 +1616624 5698656 1618440 5697904 1618432 5697448 1617648 5696792 +1616624 5698656 1618568 5698056 1618440 5697904 1617648 5696792 +1618440 5697904 1618608 5697568 1618432 5697448 1617648 5696792 +1616624 5698656 1618440 5697904 1617648 5696792 1616592 5698624 +1617648 5696792 1616528 5698576 1616592 5698624 1618440 5697904 +1616624 5698656 1618568 5698056 1618440 5697904 1616592 5698624 +1618432 5697448 1618424 5697416 1617648 5696792 1618440 5697904 +1618440 5697904 1618432 5697448 1617648 5696792 1616592 5698624 +1618432 5697448 1618344 5697768 1618440 5697904 1618608 5697568 +1618440 5697904 1618672 5697656 1618608 5697568 1618344 5697768 +1618344 5697768 1617648 5696792 1618440 5697904 1618672 5697656 +1618608 5697568 1618432 5697448 1618344 5697768 1618672 5697656 +1618432 5697448 1617648 5696792 1618344 5697768 1618608 5697568 +1617648 5696792 1618344 5697768 1618432 5697448 1618424 5697416 +1617648 5696792 1618440 5697904 1618344 5697768 1618424 5697416 +1618344 5697768 1618608 5697568 1618432 5697448 1618424 5697416 +1617648 5696792 1618344 5697768 1618424 5697416 1617776 5696792 +1618424 5697416 1617912 5696744 1617776 5696792 1618344 5697768 +1617648 5696792 1618440 5697904 1618344 5697768 1617776 5696792 +1618344 5697768 1618432 5697448 1618424 5697416 1617776 5696792 +1618440 5697904 1618768 5697872 1618672 5697656 1618344 5697768 +1618440 5697904 1618344 5697768 1617648 5696792 1616592 5698624 +1617648 5696792 1616528 5698576 1616592 5698624 1618344 5697768 +1618440 5697904 1618672 5697656 1618344 5697768 1616592 5698624 +1618344 5697768 1617776 5696792 1617648 5696792 1616592 5698624 +1618440 5697904 1618344 5697768 1616592 5698624 1616624 5698656 +1618440 5697904 1618344 5697768 1616624 5698656 1618568 5698056 +1618440 5697904 1618672 5697656 1618344 5697768 1616624 5698656 +1618344 5697768 1617648 5696792 1616592 5698624 1616624 5698656 +1616592 5698624 1618280 5697752 1617648 5696792 1616528 5698576 +1617648 5696792 1618280 5697752 1618344 5697768 1617776 5696792 +1618280 5697752 1616592 5698624 1618344 5697768 1617776 5696792 +1617648 5696792 1616592 5698624 1618280 5697752 1617776 5696792 +1618344 5697768 1618424 5697416 1617776 5696792 1618280 5697752 +1618424 5697416 1617912 5696744 1617776 5696792 1618280 5697752 +1617776 5696792 1617648 5696792 1618280 5697752 1618424 5697416 +1618344 5697768 1618424 5697416 1618280 5697752 1616592 5698624 +1618344 5697768 1618432 5697448 1618424 5697416 1618280 5697752 +1618344 5697768 1618432 5697448 1618280 5697752 1616592 5698624 +1618344 5697768 1618608 5697568 1618432 5697448 1618280 5697752 +1618424 5697416 1617776 5696792 1618280 5697752 1618432 5697448 +1618344 5697768 1618280 5697752 1616592 5698624 1616624 5698656 +1618344 5697768 1618432 5697448 1618280 5697752 1616624 5698656 +1618280 5697752 1617648 5696792 1616592 5698624 1616624 5698656 +1618344 5697768 1618280 5697752 1616624 5698656 1618440 5697904 +1616624 5698656 1618568 5698056 1618440 5697904 1618280 5697752 +1618344 5697768 1618432 5697448 1618280 5697752 1618440 5697904 +1618280 5697752 1616592 5698624 1616624 5698656 1618440 5697904 +1618440 5697904 1618240 5697816 1616624 5698656 1618568 5698056 +1616624 5698656 1616624 5698800 1618568 5698056 1618240 5697816 +1616624 5698800 1618664 5698144 1618568 5698056 1618240 5697816 +1618568 5698056 1618440 5697904 1618240 5697816 1616624 5698800 +1618440 5697904 1618280 5697752 1618240 5697816 1618568 5698056 +1618240 5697816 1618280 5697752 1616624 5698656 1616624 5698800 +1618280 5697752 1618240 5697816 1618440 5697904 1618344 5697768 +1618280 5697752 1616624 5698656 1618240 5697816 1618344 5697768 +1618240 5697816 1618568 5698056 1618440 5697904 1618344 5697768 +1616624 5698656 1616616 5698720 1616624 5698800 1618240 5697816 +1616624 5698656 1618240 5697816 1618280 5697752 1616592 5698624 +1618280 5697752 1617648 5696792 1616592 5698624 1618240 5697816 +1617648 5696792 1616528 5698576 1616592 5698624 1618240 5697816 +1617648 5696792 1617584 5696752 1616528 5698576 1618240 5697816 +1617648 5696792 1616528 5698576 1618240 5697816 1618280 5697752 +1618240 5697816 1618344 5697768 1618280 5697752 1617648 5696792 +1618280 5697752 1617776 5696792 1617648 5696792 1618240 5697816 +1616624 5698656 1616624 5698800 1618240 5697816 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1618240 5697816 +1616592 5698624 1616624 5698656 1618240 5697816 1616528 5698576 +1618568 5698056 1618216 5697928 1616624 5698800 1618664 5698144 +1616624 5698800 1618736 5698224 1618664 5698144 1618216 5697928 +1616624 5698800 1616600 5698864 1618736 5698224 1618216 5697928 +1618664 5698144 1618568 5698056 1618216 5697928 1618736 5698224 +1616624 5698800 1618216 5697928 1618240 5697816 1616624 5698656 +1618240 5697816 1618216 5697928 1618568 5698056 1618440 5697904 +1618240 5697816 1618216 5697928 1618440 5697904 1618344 5697768 +1618216 5697928 1618440 5697904 1618240 5697816 1616624 5698656 +1618240 5697816 1616592 5698624 1616624 5698656 1618216 5697928 +1616624 5698656 1616624 5698800 1618216 5697928 1616592 5698624 +1618240 5697816 1616592 5698624 1618216 5697928 1618440 5697904 +1618568 5698056 1618440 5697904 1618216 5697928 1618664 5698144 +1618216 5697928 1616624 5698656 1616624 5698800 1618736 5698224 +1616624 5698800 1618216 5697928 1616624 5698656 1616616 5698720 +1618240 5697816 1616528 5698576 1616592 5698624 1618216 5697928 +1618240 5697816 1617648 5696792 1616528 5698576 1618216 5697928 +1617648 5696792 1617584 5696752 1616528 5698576 1618216 5697928 +1618240 5697816 1618280 5697752 1617648 5696792 1618216 5697928 +1618240 5697816 1617648 5696792 1618216 5697928 1618440 5697904 +1616592 5698624 1616624 5698656 1618216 5697928 1616528 5698576 +1616528 5698576 1616560 5698616 1616592 5698624 1618216 5697928 +1616528 5698576 1616592 5698624 1618216 5697928 1617648 5696792 +1618736 5698224 1618216 5697968 1616624 5698800 1616600 5698864 +1618216 5697928 1618216 5697968 1618736 5698224 1618664 5698144 +1618216 5697928 1618216 5697968 1618664 5698144 1618568 5698056 +1618216 5697968 1618736 5698224 1618664 5698144 1618568 5698056 +1618216 5697928 1618216 5697968 1618568 5698056 1618440 5697904 +1618216 5697968 1618664 5698144 1618568 5698056 1618440 5697904 +1618216 5697928 1618216 5697968 1618440 5697904 1618240 5697816 +1618216 5697928 1616624 5698800 1618216 5697968 1618440 5697904 +1616624 5698800 1618216 5697968 1618216 5697928 1616624 5698656 +1618216 5697928 1616592 5698624 1616624 5698656 1618216 5697968 +1618216 5697928 1616528 5698576 1616592 5698624 1618216 5697968 +1618216 5697968 1618440 5697904 1618216 5697928 1616592 5698624 +1616624 5698656 1616624 5698800 1618216 5697968 1616592 5698624 +1618216 5697968 1616624 5698800 1618736 5698224 1618664 5698144 +1616624 5698800 1618736 5698224 1618216 5697968 1616624 5698656 +1616624 5698800 1618216 5697968 1616624 5698656 1616616 5698720 +1618736 5698224 1618192 5698016 1616624 5698800 1616600 5698864 +1618216 5697968 1618192 5698016 1618736 5698224 1618664 5698144 +1618216 5697968 1618192 5698016 1618664 5698144 1618568 5698056 +1618216 5697968 1618192 5698016 1618568 5698056 1618440 5697904 +1618192 5698016 1618664 5698144 1618568 5698056 1618440 5697904 +1618216 5697968 1618192 5698016 1618440 5697904 1618216 5697928 +1618192 5698016 1618736 5698224 1618664 5698144 1618568 5698056 +1618216 5697968 1616624 5698800 1618192 5698016 1618440 5697904 +1616624 5698800 1618192 5698016 1618216 5697968 1616624 5698656 +1618216 5697968 1616592 5698624 1616624 5698656 1618192 5698016 +1618216 5697968 1618216 5697928 1616592 5698624 1618192 5698016 +1618216 5697928 1616528 5698576 1616592 5698624 1618192 5698016 +1618216 5697928 1616528 5698576 1618192 5698016 1618216 5697968 +1616592 5698624 1616624 5698656 1618192 5698016 1616528 5698576 +1618192 5698016 1618440 5697904 1618216 5697968 1618216 5697928 +1616624 5698656 1616624 5698800 1618192 5698016 1616592 5698624 +1618736 5698224 1618664 5698144 1618192 5698016 1616600 5698864 +1618192 5698016 1616624 5698656 1616624 5698800 1616600 5698864 +1616528 5698576 1616560 5698616 1616592 5698624 1618192 5698016 +1616624 5698800 1618192 5698016 1616624 5698656 1616616 5698720 +1618216 5697928 1617648 5696792 1616528 5698576 1618192 5698016 +1617648 5696792 1617584 5696752 1616528 5698576 1618192 5698016 +1618216 5697928 1618240 5697816 1617648 5696792 1618192 5698016 +1618216 5697928 1617648 5696792 1618192 5698016 1618216 5697968 +1616528 5698576 1616592 5698624 1618192 5698016 1617648 5696792 +1618736 5698224 1618192 5698016 1616600 5698864 1617496 5700904 +1616600 5698864 1618056 5698136 1618192 5698016 1616624 5698800 +1618192 5698016 1618056 5698136 1618736 5698224 1618664 5698144 +1618192 5698016 1618056 5698136 1618664 5698144 1618568 5698056 +1618192 5698016 1618056 5698136 1618568 5698056 1618440 5697904 +1618056 5698136 1618736 5698224 1618664 5698144 1618568 5698056 +1618056 5698136 1618568 5698056 1618192 5698016 1616624 5698800 +1618192 5698016 1616624 5698656 1616624 5698800 1618056 5698136 +1616624 5698800 1616600 5698864 1618056 5698136 1616624 5698656 +1618192 5698016 1616592 5698624 1616624 5698656 1618056 5698136 +1618192 5698016 1616528 5698576 1616592 5698624 1618056 5698136 +1618192 5698016 1617648 5696792 1616528 5698576 1618056 5698136 +1617648 5696792 1617584 5696752 1616528 5698576 1618056 5698136 +1616528 5698576 1616592 5698624 1618056 5698136 1617648 5696792 +1616592 5698624 1616624 5698656 1618056 5698136 1616528 5698576 +1618192 5698016 1617648 5696792 1618056 5698136 1618568 5698056 +1616624 5698656 1616624 5698800 1618056 5698136 1616592 5698624 +1618056 5698136 1616600 5698864 1618736 5698224 1618664 5698144 +1616600 5698864 1618736 5698224 1618056 5698136 1616624 5698800 +1616528 5698576 1616560 5698616 1616592 5698624 1618056 5698136 +1616624 5698656 1616616 5698720 1616624 5698800 1618056 5698136 +1618192 5698016 1618216 5697928 1617648 5696792 1618056 5698136 +1618216 5697928 1618240 5697816 1617648 5696792 1618056 5698136 +1618192 5698016 1618216 5697968 1618216 5697928 1618056 5698136 +1618240 5697816 1618280 5697752 1617648 5696792 1618056 5698136 +1617648 5696792 1616528 5698576 1618056 5698136 1618240 5697816 +1618192 5698016 1618216 5697928 1618056 5698136 1618568 5698056 +1618216 5697928 1618240 5697816 1618056 5698136 1618192 5698016 +1618736 5698224 1618056 5698136 1616600 5698864 1617496 5700904 +1618736 5698224 1618664 5698144 1618056 5698136 1617496 5700904 +1618056 5698136 1616624 5698800 1616600 5698864 1617496 5700904 +1616600 5698864 1616256 5699536 1617496 5700904 1618056 5698136 +1618736 5698224 1618056 5698136 1617496 5700904 1618864 5698296 +1618736 5698224 1618664 5698144 1618056 5698136 1618864 5698296 +1618056 5698136 1616600 5698864 1617496 5700904 1618864 5698296 +1617496 5700904 1618936 5698304 1618864 5698296 1618056 5698136 +1616600 5698864 1618040 5698176 1618056 5698136 1616624 5698800 +1618056 5698136 1616624 5698656 1616624 5698800 1618040 5698176 +1618056 5698136 1616592 5698624 1616624 5698656 1618040 5698176 +1616624 5698656 1616624 5698800 1618040 5698176 1616592 5698624 +1618056 5698136 1616528 5698576 1616592 5698624 1618040 5698176 +1618056 5698136 1617648 5696792 1616528 5698576 1618040 5698176 +1616592 5698624 1616624 5698656 1618040 5698176 1616528 5698576 +1618040 5698176 1617496 5700904 1618056 5698136 1616528 5698576 +1616624 5698800 1616600 5698864 1618040 5698176 1616624 5698656 +1616600 5698864 1617496 5700904 1618040 5698176 1616624 5698800 +1616528 5698576 1616560 5698616 1616592 5698624 1618040 5698176 +1616624 5698656 1616616 5698720 1616624 5698800 1618040 5698176 +1617496 5700904 1618040 5698176 1616600 5698864 1616256 5699536 +1618056 5698136 1618040 5698176 1617496 5700904 1618864 5698296 +1618056 5698136 1616528 5698576 1618040 5698176 1618864 5698296 +1618040 5698176 1616600 5698864 1617496 5700904 1618864 5698296 +1617496 5700904 1618936 5698304 1618864 5698296 1618040 5698176 +1618056 5698136 1618040 5698176 1618864 5698296 1618736 5698224 +1618056 5698136 1618040 5698176 1618736 5698224 1618664 5698144 +1618056 5698136 1618040 5698176 1618664 5698144 1618568 5698056 +1618056 5698136 1618040 5698176 1618568 5698056 1618192 5698016 +1618568 5698056 1618440 5697904 1618192 5698016 1618040 5698176 +1618040 5698176 1618664 5698144 1618568 5698056 1618192 5698016 +1618040 5698176 1618736 5698224 1618664 5698144 1618568 5698056 +1618056 5698136 1616528 5698576 1618040 5698176 1618192 5698016 +1618040 5698176 1617496 5700904 1618864 5698296 1618736 5698224 +1618040 5698176 1618864 5698296 1618736 5698224 1618664 5698144 +1617496 5700904 1618040 5698232 1618040 5698176 1616600 5698864 +1618040 5698232 1618864 5698296 1618040 5698176 1616600 5698864 +1618040 5698176 1616624 5698800 1616600 5698864 1618040 5698232 +1618040 5698176 1616624 5698656 1616624 5698800 1618040 5698232 +1618040 5698176 1616592 5698624 1616624 5698656 1618040 5698232 +1616600 5698864 1617496 5700904 1618040 5698232 1616624 5698800 +1618040 5698176 1616624 5698656 1618040 5698232 1618864 5698296 +1616624 5698800 1616600 5698864 1618040 5698232 1616624 5698656 +1617496 5700904 1618864 5698296 1618040 5698232 1616600 5698864 +1616624 5698656 1616616 5698720 1616624 5698800 1618040 5698232 +1617496 5700904 1618040 5698232 1616600 5698864 1616256 5699536 +1618040 5698176 1618040 5698232 1618864 5698296 1618736 5698224 +1618040 5698176 1616624 5698656 1618040 5698232 1618736 5698224 +1618040 5698232 1617496 5700904 1618864 5698296 1618736 5698224 +1618864 5698296 1618040 5698232 1617496 5700904 1618936 5698304 +1618040 5698176 1618040 5698232 1618736 5698224 1618664 5698144 +1618040 5698176 1618040 5698232 1618664 5698144 1618568 5698056 +1618040 5698176 1618040 5698232 1618568 5698056 1618192 5698016 +1618568 5698056 1618440 5697904 1618192 5698016 1618040 5698232 +1618040 5698176 1618040 5698232 1618192 5698016 1618056 5698136 +1618040 5698232 1618568 5698056 1618192 5698016 1618056 5698136 +1618040 5698232 1618664 5698144 1618568 5698056 1618192 5698016 +1618040 5698176 1616624 5698656 1618040 5698232 1618056 5698136 +1618040 5698232 1618864 5698296 1618736 5698224 1618664 5698144 +1618040 5698232 1618736 5698224 1618664 5698144 1618568 5698056 +1618040 5698232 1618184 5698312 1618864 5698296 1618736 5698224 +1618040 5698232 1617496 5700904 1618184 5698312 1618736 5698224 +1617496 5700904 1618184 5698312 1618040 5698232 1616600 5698864 +1618040 5698232 1616624 5698800 1616600 5698864 1618184 5698312 +1618040 5698232 1616624 5698656 1616624 5698800 1618184 5698312 +1618184 5698312 1618736 5698224 1618040 5698232 1616624 5698800 +1616600 5698864 1617496 5700904 1618184 5698312 1616624 5698800 +1618184 5698312 1617496 5700904 1618864 5698296 1618736 5698224 +1617496 5700904 1618864 5698296 1618184 5698312 1616600 5698864 +1617496 5700904 1618184 5698312 1616600 5698864 1616256 5699536 +1618040 5698232 1618184 5698312 1618736 5698224 1618664 5698144 +1618184 5698312 1618864 5698296 1618736 5698224 1618664 5698144 +1618040 5698232 1616624 5698800 1618184 5698312 1618664 5698144 +1618864 5698296 1618184 5698312 1617496 5700904 1618936 5698304 +1618040 5698232 1618184 5698312 1618664 5698144 1618568 5698056 +1618040 5698232 1618184 5698312 1618568 5698056 1618192 5698016 +1618568 5698056 1618440 5697904 1618192 5698016 1618184 5698312 +1618040 5698232 1618184 5698312 1618192 5698016 1618056 5698136 +1618040 5698232 1618184 5698312 1618056 5698136 1618040 5698176 +1618184 5698312 1618192 5698016 1618056 5698136 1618040 5698176 +1618184 5698312 1618568 5698056 1618192 5698016 1618056 5698136 +1618040 5698232 1616624 5698800 1618184 5698312 1618040 5698176 +1618184 5698312 1618736 5698224 1618664 5698144 1618568 5698056 +1618184 5698312 1618664 5698144 1618568 5698056 1618192 5698016 +1618184 5698312 1618392 5698368 1618864 5698296 1618736 5698224 +1618184 5698312 1618392 5698368 1618736 5698224 1618664 5698144 +1618392 5698368 1618864 5698296 1618736 5698224 1618664 5698144 +1618184 5698312 1617496 5700904 1618392 5698368 1618664 5698144 +1617496 5700904 1618392 5698368 1618184 5698312 1616600 5698864 +1618392 5698368 1617496 5700904 1618864 5698296 1618736 5698224 +1618184 5698312 1618392 5698368 1618664 5698144 1618568 5698056 +1618392 5698368 1618736 5698224 1618664 5698144 1618568 5698056 +1618184 5698312 1617496 5700904 1618392 5698368 1618568 5698056 +1618864 5698296 1618392 5698368 1617496 5700904 1618936 5698304 +1618864 5698296 1618736 5698224 1618392 5698368 1618936 5698304 +1618392 5698368 1618184 5698312 1617496 5700904 1618936 5698304 +1618184 5698312 1618392 5698368 1618568 5698056 1618192 5698016 +1618568 5698056 1618440 5697904 1618192 5698016 1618392 5698368 +1618184 5698312 1618392 5698368 1618192 5698016 1618056 5698136 +1618184 5698312 1617496 5700904 1618392 5698368 1618192 5698016 +1618392 5698368 1618664 5698144 1618568 5698056 1618192 5698016 +1617496 5700904 1619040 5698280 1618936 5698304 1618392 5698368 +1617496 5700904 1618440 5698392 1618392 5698368 1618184 5698312 +1617496 5700904 1618440 5698392 1618184 5698312 1616600 5698864 +1618440 5698392 1618936 5698304 1618392 5698368 1618184 5698312 +1617496 5700904 1618936 5698304 1618440 5698392 1618184 5698312 +1618392 5698368 1618440 5698392 1618936 5698304 1618864 5698296 +1618392 5698368 1618440 5698392 1618864 5698296 1618736 5698224 +1618392 5698368 1618440 5698392 1618736 5698224 1618664 5698144 +1618392 5698368 1618440 5698392 1618664 5698144 1618568 5698056 +1618440 5698392 1618736 5698224 1618664 5698144 1618568 5698056 +1618440 5698392 1618864 5698296 1618736 5698224 1618664 5698144 +1618392 5698368 1618184 5698312 1618440 5698392 1618568 5698056 +1618440 5698392 1617496 5700904 1618936 5698304 1618864 5698296 +1618392 5698368 1618440 5698392 1618568 5698056 1618192 5698016 +1618440 5698392 1618936 5698304 1618864 5698296 1618736 5698224 +1618936 5698304 1618440 5698392 1617496 5700904 1619040 5698280 +1618440 5698392 1618480 5698400 1618936 5698304 1618864 5698296 +1618440 5698392 1617496 5700904 1618480 5698400 1618864 5698296 +1617496 5700904 1618480 5698400 1618440 5698392 1618184 5698312 +1618480 5698400 1617496 5700904 1618936 5698304 1618864 5698296 +1618440 5698392 1618480 5698400 1618864 5698296 1618736 5698224 +1618440 5698392 1618480 5698400 1618736 5698224 1618664 5698144 +1618440 5698392 1618480 5698400 1618664 5698144 1618568 5698056 +1618440 5698392 1618480 5698400 1618568 5698056 1618392 5698368 +1618480 5698400 1618664 5698144 1618568 5698056 1618392 5698368 +1618480 5698400 1618736 5698224 1618664 5698144 1618568 5698056 +1618480 5698400 1618936 5698304 1618864 5698296 1618736 5698224 +1618440 5698392 1617496 5700904 1618480 5698400 1618392 5698368 +1618568 5698056 1618192 5698016 1618392 5698368 1618480 5698400 +1618480 5698400 1618864 5698296 1618736 5698224 1618664 5698144 +1618936 5698304 1618480 5698400 1617496 5700904 1619040 5698280 +1618480 5698400 1618528 5698432 1618936 5698304 1618864 5698296 +1618480 5698400 1618528 5698432 1618864 5698296 1618736 5698224 +1618528 5698432 1618936 5698304 1618864 5698296 1618736 5698224 +1618480 5698400 1617496 5700904 1618528 5698432 1618736 5698224 +1617496 5700904 1618528 5698432 1618480 5698400 1618440 5698392 +1617496 5700904 1618528 5698432 1618440 5698392 1618184 5698312 +1618528 5698432 1618736 5698224 1618480 5698400 1618440 5698392 +1618528 5698432 1617496 5700904 1618936 5698304 1618864 5698296 +1617496 5700904 1618936 5698304 1618528 5698432 1618440 5698392 +1618480 5698400 1618528 5698432 1618736 5698224 1618664 5698144 +1618936 5698304 1618528 5698432 1617496 5700904 1619040 5698280 +1618528 5698432 1618536 5698512 1618936 5698304 1618864 5698296 +1618528 5698432 1618536 5698512 1618864 5698296 1618736 5698224 +1618528 5698432 1617496 5700904 1618536 5698512 1618864 5698296 +1617496 5700904 1618536 5698512 1618528 5698432 1618440 5698392 +1617496 5700904 1618536 5698512 1618440 5698392 1618184 5698312 +1617496 5700904 1618536 5698512 1618184 5698312 1616600 5698864 +1618184 5698312 1616624 5698800 1616600 5698864 1618536 5698512 +1618440 5698392 1618392 5698368 1618184 5698312 1618536 5698512 +1618536 5698512 1618392 5698368 1618184 5698312 1616600 5698864 +1618528 5698432 1618480 5698400 1618440 5698392 1618536 5698512 +1618536 5698512 1618864 5698296 1618528 5698432 1618480 5698400 +1618536 5698512 1618480 5698400 1618440 5698392 1618392 5698368 +1618536 5698512 1617496 5700904 1618936 5698304 1618864 5698296 +1617496 5700904 1618536 5698512 1616600 5698864 1616256 5699536 +1617496 5700904 1618936 5698304 1618536 5698512 1616600 5698864 +1618936 5698304 1618536 5698512 1617496 5700904 1619040 5698280 +1618936 5698304 1618864 5698296 1618536 5698512 1619040 5698280 +1618536 5698512 1616600 5698864 1617496 5700904 1619040 5698280 +1617496 5700904 1621464 5701464 1619040 5698280 1618536 5698512 +1617496 5700904 1621448 5701528 1621464 5701464 1618536 5698512 +1617496 5700904 1621464 5701464 1618536 5698512 1616600 5698864 +1621464 5701464 1621488 5701424 1619040 5698280 1618536 5698512 +1621488 5701424 1621576 5701360 1619040 5698280 1618536 5698512 +1621464 5701464 1621488 5701424 1618536 5698512 1617496 5700904 +1619040 5698280 1618936 5698304 1618536 5698512 1621488 5701424 +1616600 5698864 1618504 5698568 1618536 5698512 1618184 5698312 +1616600 5698864 1618504 5698568 1618184 5698312 1616624 5698800 +1618536 5698512 1618392 5698368 1618184 5698312 1618504 5698568 +1618184 5698312 1616600 5698864 1618504 5698568 1618392 5698368 +1618536 5698512 1618440 5698392 1618392 5698368 1618504 5698568 +1618392 5698368 1618184 5698312 1618504 5698568 1618440 5698392 +1618536 5698512 1618480 5698400 1618440 5698392 1618504 5698568 +1617496 5700904 1618504 5698568 1616600 5698864 1616256 5699536 +1618536 5698512 1618504 5698568 1617496 5700904 1621464 5701464 +1617496 5700904 1621448 5701528 1621464 5701464 1618504 5698568 +1618504 5698568 1621464 5701464 1618536 5698512 1618440 5698392 +1618504 5698568 1616600 5698864 1617496 5700904 1621464 5701464 +1616600 5698864 1617496 5700904 1618504 5698568 1618184 5698312 +1618536 5698512 1618504 5698568 1621464 5701464 1621488 5701424 +1618504 5698568 1617496 5700904 1621464 5701464 1621488 5701424 +1618536 5698512 1618440 5698392 1618504 5698568 1621488 5701424 +1618536 5698512 1618504 5698568 1621488 5701424 1619040 5698280 +1621488 5701424 1621576 5701360 1619040 5698280 1618504 5698568 +1618536 5698512 1618440 5698392 1618504 5698568 1619040 5698280 +1618504 5698568 1621464 5701464 1621488 5701424 1619040 5698280 +1618536 5698512 1618504 5698568 1619040 5698280 1618936 5698304 +1618536 5698512 1618504 5698568 1618936 5698304 1618864 5698296 +1618536 5698512 1618440 5698392 1618504 5698568 1618936 5698304 +1618504 5698568 1621488 5701424 1619040 5698280 1618936 5698304 +1617496 5700904 1618424 5698632 1616600 5698864 1616256 5699536 +1618504 5698568 1618424 5698632 1617496 5700904 1621464 5701464 +1617496 5700904 1621448 5701528 1621464 5701464 1618424 5698632 +1618504 5698568 1618424 5698632 1621464 5701464 1621488 5701424 +1618424 5698632 1617496 5700904 1621464 5701464 1621488 5701424 +1618504 5698568 1616600 5698864 1618424 5698632 1621488 5701424 +1616600 5698864 1618424 5698632 1618504 5698568 1618184 5698312 +1616600 5698864 1618424 5698632 1618184 5698312 1616624 5698800 +1618184 5698312 1618040 5698232 1616624 5698800 1618424 5698632 +1618040 5698232 1616624 5698656 1616624 5698800 1618424 5698632 +1616624 5698800 1616600 5698864 1618424 5698632 1618040 5698232 +1618504 5698568 1618392 5698368 1618184 5698312 1618424 5698632 +1618504 5698568 1618440 5698392 1618392 5698368 1618424 5698632 +1618392 5698368 1618184 5698312 1618424 5698632 1618440 5698392 +1618504 5698568 1618536 5698512 1618440 5698392 1618424 5698632 +1618424 5698632 1621488 5701424 1618504 5698568 1618440 5698392 +1618424 5698632 1618392 5698368 1618184 5698312 1618040 5698232 +1618424 5698632 1616600 5698864 1617496 5700904 1621464 5701464 +1616600 5698864 1617496 5700904 1618424 5698632 1616624 5698800 +1618504 5698568 1618424 5698632 1621488 5701424 1619040 5698280 +1621488 5701424 1621576 5701360 1619040 5698280 1618424 5698632 +1618424 5698632 1621464 5701464 1621488 5701424 1619040 5698280 +1618504 5698568 1618440 5698392 1618424 5698632 1619040 5698280 +1618504 5698568 1618424 5698632 1619040 5698280 1618936 5698304 +1618040 5698232 1618336 5698616 1618424 5698632 1618184 5698312 +1616624 5698800 1618336 5698616 1618040 5698232 1616624 5698656 +1618424 5698632 1618336 5698616 1616624 5698800 1616600 5698864 +1618424 5698632 1618392 5698368 1618184 5698312 1618336 5698616 +1618184 5698312 1618040 5698232 1618336 5698616 1618392 5698368 +1618424 5698632 1618440 5698392 1618392 5698368 1618336 5698616 +1618424 5698632 1618504 5698568 1618440 5698392 1618336 5698616 +1618440 5698392 1618392 5698368 1618336 5698616 1618504 5698568 +1618504 5698568 1618536 5698512 1618440 5698392 1618336 5698616 +1618392 5698368 1618184 5698312 1618336 5698616 1618440 5698392 +1618336 5698616 1616600 5698864 1618424 5698632 1618504 5698568 +1618424 5698632 1618336 5698616 1616600 5698864 1617496 5700904 +1618336 5698616 1616624 5698800 1616600 5698864 1617496 5700904 +1616600 5698864 1616256 5699536 1617496 5700904 1618336 5698616 +1618424 5698632 1618336 5698616 1617496 5700904 1621464 5701464 +1618424 5698632 1618504 5698568 1618336 5698616 1617496 5700904 +1618336 5698616 1618040 5698232 1616624 5698800 1616600 5698864 +1618040 5698232 1616624 5698800 1618336 5698616 1618184 5698312 +1616624 5698800 1618144 5698512 1618040 5698232 1616624 5698656 +1618040 5698232 1618040 5698176 1616624 5698656 1618144 5698512 +1616624 5698800 1618144 5698512 1616624 5698656 1616616 5698720 +1618336 5698616 1618144 5698512 1616624 5698800 1616600 5698864 +1618336 5698616 1618144 5698512 1616600 5698864 1617496 5700904 +1616600 5698864 1616256 5699536 1617496 5700904 1618144 5698512 +1618336 5698616 1618144 5698512 1617496 5700904 1618424 5698632 +1618144 5698512 1616624 5698800 1616600 5698864 1617496 5700904 +1618336 5698616 1618040 5698232 1618144 5698512 1617496 5700904 +1618040 5698232 1618144 5698512 1618336 5698616 1618184 5698312 +1618336 5698616 1618392 5698368 1618184 5698312 1618144 5698512 +1618336 5698616 1618440 5698392 1618392 5698368 1618144 5698512 +1618144 5698512 1617496 5700904 1618336 5698616 1618392 5698368 +1618184 5698312 1618040 5698232 1618144 5698512 1618392 5698368 +1616624 5698800 1616600 5698864 1618144 5698512 1616624 5698656 +1618144 5698512 1618184 5698312 1618040 5698232 1616624 5698656 +1616624 5698656 1617824 5698416 1618040 5698232 1618040 5698176 +1616624 5698656 1617824 5698416 1618040 5698176 1616592 5698624 +1618040 5698176 1616528 5698576 1616592 5698624 1617824 5698416 +1616592 5698624 1616624 5698656 1617824 5698416 1616528 5698576 +1618040 5698176 1618056 5698136 1616528 5698576 1617824 5698416 +1618056 5698136 1617648 5696792 1616528 5698576 1617824 5698416 +1617648 5696792 1617584 5696752 1616528 5698576 1617824 5698416 +1618056 5698136 1618240 5697816 1617648 5696792 1617824 5698416 +1618056 5698136 1617648 5696792 1617824 5698416 1618040 5698176 +1616528 5698576 1616592 5698624 1617824 5698416 1617648 5696792 +1617824 5698416 1618040 5698232 1618040 5698176 1618056 5698136 +1618144 5698512 1617824 5698416 1616624 5698656 1616624 5698800 +1616528 5698576 1616560 5698616 1616592 5698624 1617824 5698416 +1616624 5698656 1616616 5698720 1616624 5698800 1617824 5698416 +1618144 5698512 1617824 5698416 1616624 5698800 1616600 5698864 +1617824 5698416 1616624 5698656 1616624 5698800 1616600 5698864 +1618144 5698512 1617824 5698416 1616600 5698864 1617496 5700904 +1618144 5698512 1617824 5698416 1617496 5700904 1618336 5698616 +1616600 5698864 1616256 5699536 1617496 5700904 1617824 5698416 +1617824 5698416 1616624 5698800 1616600 5698864 1617496 5700904 +1618144 5698512 1618040 5698232 1617824 5698416 1617496 5700904 +1618040 5698232 1617824 5698416 1618144 5698512 1618184 5698312 +1616624 5698656 1616624 5698800 1617824 5698416 1616592 5698624 +1617824 5698416 1618144 5698512 1618040 5698232 1618040 5698176 +1616528 5698576 1617776 5698392 1617648 5696792 1617584 5696752 +1616528 5698576 1617776 5698392 1617584 5696752 1616456 5698536 +1617648 5696792 1617776 5698392 1617824 5698416 1618056 5698136 +1617648 5696792 1617776 5698392 1618056 5698136 1618240 5697816 +1617824 5698416 1618040 5698176 1618056 5698136 1617776 5698392 +1618056 5698136 1617648 5696792 1617776 5698392 1618040 5698176 +1617824 5698416 1617776 5698392 1616528 5698576 1616592 5698624 +1617824 5698416 1617776 5698392 1616592 5698624 1616624 5698656 +1617776 5698392 1616528 5698576 1616592 5698624 1616624 5698656 +1617824 5698416 1618040 5698232 1618040 5698176 1617776 5698392 +1618040 5698176 1618056 5698136 1617776 5698392 1618040 5698232 +1616528 5698576 1616560 5698616 1616592 5698624 1617776 5698392 +1617824 5698416 1617776 5698392 1616624 5698656 1616624 5698800 +1617776 5698392 1616592 5698624 1616624 5698656 1616624 5698800 +1617824 5698416 1617776 5698392 1616624 5698800 1616600 5698864 +1616624 5698656 1616616 5698720 1616624 5698800 1617776 5698392 +1617824 5698416 1617776 5698392 1616600 5698864 1617496 5700904 +1617776 5698392 1616624 5698656 1616624 5698800 1616600 5698864 +1617776 5698392 1616600 5698864 1617824 5698416 1618040 5698232 +1617824 5698416 1618144 5698512 1618040 5698232 1617776 5698392 +1616528 5698576 1616592 5698624 1617776 5698392 1617584 5696752 +1617776 5698392 1618056 5698136 1617648 5696792 1617584 5696752 +1616528 5698576 1617680 5698304 1617584 5696752 1616456 5698536 +1617584 5696752 1615648 5697056 1616456 5698536 1617680 5698304 +1617584 5696752 1617680 5698304 1617776 5698392 1617648 5696792 +1617776 5698392 1617680 5698304 1616528 5698576 1616592 5698624 +1617776 5698392 1617680 5698304 1616592 5698624 1616624 5698656 +1617776 5698392 1617680 5698304 1616624 5698656 1616624 5698800 +1617680 5698304 1616592 5698624 1616624 5698656 1616624 5698800 +1616528 5698576 1616560 5698616 1616592 5698624 1617680 5698304 +1616624 5698656 1616616 5698720 1616624 5698800 1617680 5698304 +1617776 5698392 1617680 5698304 1616624 5698800 1616600 5698864 +1617680 5698304 1616528 5698576 1616592 5698624 1616624 5698656 +1617680 5698304 1616624 5698800 1617776 5698392 1617648 5696792 +1617776 5698392 1618056 5698136 1617648 5696792 1617680 5698304 +1617648 5696792 1617584 5696752 1617680 5698304 1618056 5698136 +1618056 5698136 1618240 5697816 1617648 5696792 1617680 5698304 +1617648 5696792 1617584 5696752 1617680 5698304 1618240 5697816 +1618056 5698136 1618216 5697928 1618240 5697816 1617680 5698304 +1618240 5697816 1618280 5697752 1617648 5696792 1617680 5698304 +1617776 5698392 1618040 5698176 1618056 5698136 1617680 5698304 +1617776 5698392 1618040 5698232 1618040 5698176 1617680 5698304 +1618040 5698176 1618056 5698136 1617680 5698304 1618040 5698232 +1617776 5698392 1617824 5698416 1618040 5698232 1617680 5698304 +1617776 5698392 1618040 5698232 1617680 5698304 1616624 5698800 +1618056 5698136 1618240 5697816 1617680 5698304 1618040 5698176 +1616528 5698576 1616592 5698624 1617680 5698304 1616456 5698536 +1617680 5698304 1617648 5696792 1617584 5696752 1616456 5698536 +1616456 5698536 1617584 5698152 1617584 5696752 1615648 5697056 +1617680 5698304 1617584 5698152 1616456 5698536 1616528 5698576 +1617680 5698304 1617584 5698152 1616528 5698576 1616592 5698624 +1617584 5698152 1616456 5698536 1616528 5698576 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1617584 5698152 +1617680 5698304 1617584 5698152 1616592 5698624 1616624 5698656 +1617680 5698304 1617584 5698152 1616624 5698656 1616624 5698800 +1617584 5698152 1616528 5698576 1616592 5698624 1616624 5698656 +1617680 5698304 1617584 5696752 1617584 5698152 1616624 5698656 +1617584 5696752 1617584 5698152 1617680 5698304 1617648 5696792 +1617680 5698304 1618240 5697816 1617648 5696792 1617584 5698152 +1618240 5697816 1618280 5697752 1617648 5696792 1617584 5698152 +1617680 5698304 1618056 5698136 1618240 5697816 1617584 5698152 +1618240 5697816 1617648 5696792 1617584 5698152 1618056 5698136 +1618056 5698136 1618216 5697928 1618240 5697816 1617584 5698152 +1617680 5698304 1618040 5698176 1618056 5698136 1617584 5698152 +1618056 5698136 1618240 5697816 1617584 5698152 1618040 5698176 +1617680 5698304 1618040 5698232 1618040 5698176 1617584 5698152 +1617584 5698152 1616624 5698656 1617680 5698304 1618040 5698176 +1617648 5696792 1617584 5696752 1617584 5698152 1618240 5697816 +1617584 5698152 1617584 5696752 1616456 5698536 1616528 5698576 +1617584 5696752 1616456 5698536 1617584 5698152 1617648 5696792 +1616456 5698536 1617552 5698032 1617584 5696752 1615648 5697056 +1617584 5696752 1617520 5696640 1615648 5697056 1617552 5698032 +1616456 5698536 1617552 5698032 1615648 5697056 1616392 5698520 +1617552 5698032 1617584 5696752 1615648 5697056 1616392 5698520 +1615648 5697056 1615528 5697784 1616392 5698520 1617552 5698032 +1617584 5698152 1617552 5698032 1616456 5698536 1616528 5698576 +1617584 5698152 1617552 5698032 1616528 5698576 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1617552 5698032 +1617584 5698152 1617552 5698032 1616592 5698624 1616624 5698656 +1617552 5698032 1616528 5698576 1616592 5698624 1616624 5698656 +1617584 5698152 1617552 5698032 1616624 5698656 1617680 5698304 +1617552 5698032 1616456 5698536 1616528 5698576 1616592 5698624 +1617584 5698152 1617584 5696752 1617552 5698032 1616624 5698656 +1617584 5696752 1617552 5698032 1617584 5698152 1617648 5696792 +1617584 5698152 1618240 5697816 1617648 5696792 1617552 5698032 +1617584 5698152 1618056 5698136 1618240 5697816 1617552 5698032 +1618056 5698136 1618216 5697928 1618240 5697816 1617552 5698032 +1618056 5698136 1618216 5697928 1617552 5698032 1617584 5698152 +1618240 5697816 1618280 5697752 1617648 5696792 1617552 5698032 +1618280 5697752 1617776 5696792 1617648 5696792 1617552 5698032 +1618280 5697752 1618424 5697416 1617776 5696792 1617552 5698032 +1618280 5697752 1617776 5696792 1617552 5698032 1618240 5697816 +1617584 5698152 1618040 5698176 1618056 5698136 1617552 5698032 +1618240 5697816 1618280 5697752 1617552 5698032 1618216 5697928 +1617552 5698032 1616624 5698656 1617584 5698152 1618056 5698136 +1617648 5696792 1617584 5696752 1617552 5698032 1617776 5696792 +1616456 5698536 1616528 5698576 1617552 5698032 1616392 5698520 +1617552 5698032 1617648 5696792 1617584 5696752 1615648 5697056 +1618056 5698136 1618192 5698016 1618216 5697928 1617552 5698032 +1617776 5696792 1617600 5697776 1618280 5697752 1618424 5697416 +1617776 5696792 1617600 5697776 1618424 5697416 1617912 5696744 +1618280 5697752 1617600 5697776 1617552 5698032 1618240 5697816 +1617552 5698032 1617600 5697776 1617776 5696792 1617648 5696792 +1617552 5698032 1618216 5697928 1618240 5697816 1617600 5697776 +1617552 5698032 1618056 5698136 1618216 5697928 1617600 5697776 +1617552 5698032 1617584 5698152 1618056 5698136 1617600 5697776 +1618240 5697816 1618280 5697752 1617600 5697776 1618216 5697928 +1618216 5697928 1618240 5697816 1617600 5697776 1618056 5698136 +1617552 5698032 1617600 5697776 1617648 5696792 1617584 5696752 +1617600 5697776 1617776 5696792 1617648 5696792 1617584 5696752 +1617600 5697776 1617584 5696752 1617552 5698032 1618056 5698136 +1617552 5698032 1617600 5697776 1617584 5696752 1615648 5697056 +1617584 5696752 1617520 5696640 1615648 5697056 1617600 5697776 +1617552 5698032 1617600 5697776 1615648 5697056 1616392 5698520 +1617552 5698032 1617600 5697776 1616392 5698520 1616456 5698536 +1617600 5697776 1615648 5697056 1616392 5698520 1616456 5698536 +1615648 5697056 1615528 5697784 1616392 5698520 1617600 5697776 +1617600 5697776 1617648 5696792 1617584 5696752 1615648 5697056 +1617552 5698032 1617600 5697776 1616456 5698536 1616528 5698576 +1617552 5698032 1618056 5698136 1617600 5697776 1616456 5698536 +1617600 5697776 1617584 5696752 1615648 5697056 1616392 5698520 +1617776 5696792 1617648 5696792 1617600 5697776 1618424 5697416 +1617600 5697776 1618240 5697816 1618280 5697752 1618424 5697416 +1618280 5697752 1618432 5697448 1618424 5697416 1617600 5697776 +1618056 5698136 1618192 5698016 1618216 5697928 1617600 5697776 +1617600 5697776 1617616 5697656 1617648 5696792 1617584 5696752 +1617600 5697776 1617616 5697656 1617584 5696752 1615648 5697056 +1617584 5696752 1617520 5696640 1615648 5697056 1617616 5697656 +1617616 5697656 1617648 5696792 1617584 5696752 1615648 5697056 +1617600 5697776 1617616 5697656 1615648 5697056 1616392 5698520 +1617600 5697776 1617616 5697656 1616392 5698520 1616456 5698536 +1615648 5697056 1615528 5697784 1616392 5698520 1617616 5697656 +1617616 5697656 1617584 5696752 1615648 5697056 1616392 5698520 +1617776 5696792 1617616 5697656 1617600 5697776 1618424 5697416 +1617776 5696792 1617616 5697656 1618424 5697416 1617912 5696744 +1617600 5697776 1618280 5697752 1618424 5697416 1617616 5697656 +1618424 5697416 1617776 5696792 1617616 5697656 1618280 5697752 +1617600 5697776 1618280 5697752 1617616 5697656 1616392 5698520 +1617600 5697776 1618240 5697816 1618280 5697752 1617616 5697656 +1618280 5697752 1618424 5697416 1617616 5697656 1618240 5697816 +1617600 5697776 1618216 5697928 1618240 5697816 1617616 5697656 +1617600 5697776 1618240 5697816 1617616 5697656 1616392 5698520 +1617616 5697656 1617776 5696792 1617648 5696792 1617584 5696752 +1617776 5696792 1617648 5696792 1617616 5697656 1618424 5697416 +1618280 5697752 1618432 5697448 1618424 5697416 1617616 5697656 +1615648 5697056 1617528 5697432 1617584 5696752 1617520 5696640 +1615648 5697056 1617528 5697432 1617520 5696640 1615696 5696632 +1617584 5696752 1617528 5697432 1617616 5697656 1617648 5696792 +1617616 5697656 1617528 5697432 1615648 5697056 1616392 5698520 +1615648 5697056 1615528 5697784 1616392 5698520 1617528 5697432 +1617616 5697656 1617528 5697432 1616392 5698520 1617600 5697776 +1616392 5698520 1616456 5698536 1617600 5697776 1617528 5697432 +1616456 5698536 1617552 5698032 1617600 5697776 1617528 5697432 +1616456 5698536 1617552 5698032 1617528 5697432 1616392 5698520 +1617528 5697432 1615648 5697056 1616392 5698520 1616456 5698536 +1616456 5698536 1616528 5698576 1617552 5698032 1617528 5697432 +1617600 5697776 1617616 5697656 1617528 5697432 1617552 5698032 +1617616 5697656 1617776 5696792 1617648 5696792 1617528 5697432 +1617648 5696792 1617584 5696752 1617528 5697432 1617776 5696792 +1617528 5697432 1617600 5697776 1617616 5697656 1617776 5696792 +1617616 5697656 1618424 5697416 1617776 5696792 1617528 5697432 +1618424 5697416 1617912 5696744 1617776 5696792 1617528 5697432 +1617616 5697656 1618280 5697752 1618424 5697416 1617528 5697432 +1617776 5696792 1617648 5696792 1617528 5697432 1618424 5697416 +1617616 5697656 1618424 5697416 1617528 5697432 1617600 5697776 +1615648 5697056 1616392 5698520 1617528 5697432 1617520 5696640 +1617528 5697432 1617648 5696792 1617584 5696752 1617520 5696640 +1615648 5697056 1617496 5697392 1617520 5696640 1615696 5696632 +1617520 5696640 1617496 5697392 1617528 5697432 1617584 5696752 +1617528 5697432 1617496 5697392 1615648 5697056 1616392 5698520 +1615648 5697056 1615528 5697784 1616392 5698520 1617496 5697392 +1617528 5697432 1617496 5697392 1616392 5698520 1616456 5698536 +1617528 5697432 1617496 5697392 1616456 5698536 1617552 5698032 +1617528 5697432 1617496 5697392 1617552 5698032 1617600 5697776 +1617496 5697392 1616456 5698536 1617552 5698032 1617600 5697776 +1617496 5697392 1616392 5698520 1616456 5698536 1617552 5698032 +1616456 5698536 1616528 5698576 1617552 5698032 1617496 5697392 +1617528 5697432 1617496 5697392 1617600 5697776 1617616 5697656 +1617496 5697392 1615648 5697056 1616392 5698520 1616456 5698536 +1617496 5697392 1617600 5697776 1617528 5697432 1617584 5696752 +1617528 5697432 1617648 5696792 1617584 5696752 1617496 5697392 +1617584 5696752 1617520 5696640 1617496 5697392 1617648 5696792 +1617528 5697432 1617776 5696792 1617648 5696792 1617496 5697392 +1617528 5697432 1618424 5697416 1617776 5696792 1617496 5697392 +1617528 5697432 1617776 5696792 1617496 5697392 1617600 5697776 +1617648 5696792 1617584 5696752 1617496 5697392 1617776 5696792 +1617496 5697392 1617520 5696640 1615648 5697056 1616392 5698520 +1617520 5696640 1615648 5697056 1617496 5697392 1617584 5696752 +1615648 5697056 1617416 5697368 1617520 5696640 1615696 5696632 +1617520 5696640 1617424 5696248 1615696 5696632 1617416 5697368 +1617496 5697392 1617416 5697368 1615648 5697056 1616392 5698520 +1615648 5697056 1615528 5697784 1616392 5698520 1617416 5697368 +1617496 5697392 1617416 5697368 1616392 5698520 1616456 5698536 +1617496 5697392 1617416 5697368 1616456 5698536 1617552 5698032 +1617496 5697392 1617416 5697368 1617552 5698032 1617600 5697776 +1617496 5697392 1617416 5697368 1617600 5697776 1617528 5697432 +1617416 5697368 1617552 5698032 1617600 5697776 1617528 5697432 +1617416 5697368 1616456 5698536 1617552 5698032 1617600 5697776 +1616456 5698536 1616528 5698576 1617552 5698032 1617416 5697368 +1617600 5697776 1617616 5697656 1617528 5697432 1617416 5697368 +1617600 5697776 1617616 5697656 1617416 5697368 1617552 5698032 +1617528 5697432 1617496 5697392 1617416 5697368 1617616 5697656 +1617416 5697368 1616392 5698520 1616456 5698536 1617552 5698032 +1617416 5697368 1615648 5697056 1616392 5698520 1616456 5698536 +1617496 5697392 1617520 5696640 1617416 5697368 1617528 5697432 +1617520 5696640 1617416 5697368 1617496 5697392 1617584 5696752 +1617496 5697392 1617648 5696792 1617584 5696752 1617416 5697368 +1617496 5697392 1617776 5696792 1617648 5696792 1617416 5697368 +1617416 5697368 1617528 5697432 1617496 5697392 1617648 5696792 +1617584 5696752 1617520 5696640 1617416 5697368 1617648 5696792 +1615648 5697056 1616392 5698520 1617416 5697368 1615696 5696632 +1617416 5697368 1617584 5696752 1617520 5696640 1615696 5696632 +1616392 5698520 1617352 5697392 1615648 5697056 1615528 5697784 +1616392 5698520 1617352 5697392 1615528 5697784 1615720 5698296 +1617416 5697368 1617352 5697392 1616392 5698520 1616456 5698536 +1617416 5697368 1617352 5697392 1616456 5698536 1617552 5698032 +1617416 5697368 1617352 5697392 1617552 5698032 1617600 5697776 +1617416 5697368 1617352 5697392 1617600 5697776 1617616 5697656 +1617352 5697392 1617552 5698032 1617600 5697776 1617616 5697656 +1616456 5698536 1616528 5698576 1617552 5698032 1617352 5697392 +1617416 5697368 1617352 5697392 1617616 5697656 1617528 5697432 +1617352 5697392 1617600 5697776 1617616 5697656 1617528 5697432 +1617416 5697368 1617352 5697392 1617528 5697432 1617496 5697392 +1617352 5697392 1616456 5698536 1617552 5698032 1617600 5697776 +1617352 5697392 1616392 5698520 1616456 5698536 1617552 5698032 +1615648 5697056 1617352 5697392 1617416 5697368 1615696 5696632 +1617416 5697368 1617520 5696640 1615696 5696632 1617352 5697392 +1617520 5696640 1617424 5696248 1615696 5696632 1617352 5697392 +1615696 5696632 1615648 5697056 1617352 5697392 1617520 5696640 +1617416 5697368 1617520 5696640 1617352 5697392 1617528 5697432 +1617416 5697368 1617584 5696752 1617520 5696640 1617352 5697392 +1617520 5696640 1615696 5696632 1617352 5697392 1617584 5696752 +1617416 5697368 1617648 5696792 1617584 5696752 1617352 5697392 +1617416 5697368 1617584 5696752 1617352 5697392 1617528 5697432 +1616392 5698520 1616456 5698536 1617352 5697392 1615528 5697784 +1617352 5697392 1615696 5696632 1615648 5697056 1615528 5697784 +1616392 5698520 1617304 5697448 1615528 5697784 1615720 5698296 +1615528 5697784 1617304 5697448 1617352 5697392 1615648 5697056 +1617352 5697392 1617304 5697448 1616392 5698520 1616456 5698536 +1617352 5697392 1617304 5697448 1616456 5698536 1617552 5698032 +1616456 5698536 1616528 5698576 1617552 5698032 1617304 5697448 +1616528 5698576 1616592 5698624 1617552 5698032 1617304 5697448 +1617352 5697392 1617304 5697448 1617552 5698032 1617600 5697776 +1617352 5697392 1617304 5697448 1617600 5697776 1617616 5697656 +1617352 5697392 1617304 5697448 1617616 5697656 1617528 5697432 +1617304 5697448 1617600 5697776 1617616 5697656 1617528 5697432 +1617352 5697392 1617304 5697448 1617528 5697432 1617416 5697368 +1617304 5697448 1617552 5698032 1617600 5697776 1617616 5697656 +1617552 5698032 1617600 5697776 1617304 5697448 1616528 5698576 +1617304 5697448 1616392 5698520 1616456 5698536 1616528 5698576 +1617304 5697448 1617528 5697432 1617352 5697392 1615648 5697056 +1617352 5697392 1615696 5696632 1615648 5697056 1617304 5697448 +1615648 5697056 1615528 5697784 1617304 5697448 1615696 5696632 +1617352 5697392 1617520 5696640 1615696 5696632 1617304 5697448 +1617352 5697392 1617584 5696752 1617520 5696640 1617304 5697448 +1617520 5696640 1617424 5696248 1615696 5696632 1617304 5697448 +1617352 5697392 1617520 5696640 1617304 5697448 1617528 5697432 +1615696 5696632 1615648 5697056 1617304 5697448 1617520 5696640 +1617304 5697448 1615528 5697784 1616392 5698520 1616456 5698536 +1615528 5697784 1616392 5698520 1617304 5697448 1615648 5697056 +1617552 5698032 1617248 5697568 1616528 5698576 1616592 5698624 +1617552 5698032 1617248 5697568 1616592 5698624 1616624 5698656 +1616528 5698576 1616560 5698616 1616592 5698624 1617248 5697568 +1616528 5698576 1617248 5697568 1617304 5697448 1616456 5698536 +1617304 5697448 1617248 5697568 1617552 5698032 1617600 5697776 +1617304 5697448 1617248 5697568 1617600 5697776 1617616 5697656 +1617304 5697448 1617248 5697568 1617616 5697656 1617528 5697432 +1617304 5697448 1617248 5697568 1617528 5697432 1617352 5697392 +1617248 5697568 1617600 5697776 1617616 5697656 1617528 5697432 +1617248 5697568 1617552 5698032 1617600 5697776 1617616 5697656 +1617304 5697448 1616392 5698520 1616456 5698536 1617248 5697568 +1616456 5698536 1616528 5698576 1617248 5697568 1616392 5698520 +1617304 5697448 1615528 5697784 1616392 5698520 1617248 5697568 +1615528 5697784 1615720 5698296 1616392 5698520 1617248 5697568 +1616392 5698520 1616456 5698536 1617248 5697568 1615528 5697784 +1617248 5697568 1617528 5697432 1617304 5697448 1615528 5697784 +1617304 5697448 1615648 5697056 1615528 5697784 1617248 5697568 +1617304 5697448 1615696 5696632 1615648 5697056 1617248 5697568 +1615528 5697784 1616392 5698520 1617248 5697568 1615648 5697056 +1617304 5697448 1615648 5697056 1617248 5697568 1617528 5697432 +1617248 5697568 1616456 5698536 1616528 5698576 1616592 5698624 +1617552 5698032 1617600 5697776 1617248 5697568 1616592 5698624 +1617552 5698032 1617232 5697704 1616592 5698624 1616624 5698656 +1617232 5697704 1617248 5697568 1616592 5698624 1616624 5698656 +1617552 5698032 1617232 5697704 1616624 5698656 1617584 5698152 +1616592 5698624 1617232 5697704 1617248 5697568 1616528 5698576 +1616592 5698624 1616624 5698656 1617232 5697704 1616528 5698576 +1616592 5698624 1617232 5697704 1616528 5698576 1616560 5698616 +1617232 5697704 1617552 5698032 1617248 5697568 1616528 5698576 +1617248 5697568 1616456 5698536 1616528 5698576 1617232 5697704 +1616528 5698576 1616592 5698624 1617232 5697704 1616456 5698536 +1617248 5697568 1616392 5698520 1616456 5698536 1617232 5697704 +1617248 5697568 1615528 5697784 1616392 5698520 1617232 5697704 +1615528 5697784 1615720 5698296 1616392 5698520 1617232 5697704 +1616392 5698520 1616456 5698536 1617232 5697704 1615528 5697784 +1617248 5697568 1615648 5697056 1615528 5697784 1617232 5697704 +1615528 5697784 1616392 5698520 1617232 5697704 1615648 5697056 +1617248 5697568 1617304 5697448 1615648 5697056 1617232 5697704 +1617248 5697568 1615648 5697056 1617232 5697704 1617552 5698032 +1616456 5698536 1616528 5698576 1617232 5697704 1616392 5698520 +1617552 5698032 1617248 5697568 1617232 5697704 1616624 5698656 +1617248 5697568 1617232 5697704 1617552 5698032 1617600 5697776 +1617248 5697568 1617232 5697704 1617600 5697776 1617616 5697656 +1617248 5697568 1617232 5697704 1617616 5697656 1617528 5697432 +1617248 5697568 1615648 5697056 1617232 5697704 1617616 5697656 +1617232 5697704 1616624 5698656 1617552 5698032 1617600 5697776 +1617232 5697704 1617552 5698032 1617600 5697776 1617616 5697656 +1616624 5698656 1617240 5697752 1617232 5697704 1616592 5698624 +1617240 5697752 1617552 5698032 1617232 5697704 1616592 5698624 +1617232 5697704 1616528 5698576 1616592 5698624 1617240 5697752 +1616592 5698624 1616624 5698656 1617240 5697752 1616528 5698576 +1617232 5697704 1616528 5698576 1617240 5697752 1617552 5698032 +1616624 5698656 1617552 5698032 1617240 5697752 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1617240 5697752 +1617552 5698032 1617240 5697752 1616624 5698656 1617584 5698152 +1617552 5698032 1617232 5697704 1617240 5697752 1617584 5698152 +1617240 5697752 1616592 5698624 1616624 5698656 1617584 5698152 +1616624 5698656 1617680 5698304 1617584 5698152 1617240 5697752 +1617232 5697704 1616456 5698536 1616528 5698576 1617240 5697752 +1617232 5697704 1616456 5698536 1617240 5697752 1617552 5698032 +1616528 5698576 1616592 5698624 1617240 5697752 1616456 5698536 +1617232 5697704 1616392 5698520 1616456 5698536 1617240 5697752 +1617232 5697704 1616392 5698520 1617240 5697752 1617552 5698032 +1616456 5698536 1616528 5698576 1617240 5697752 1616392 5698520 +1617232 5697704 1615528 5697784 1616392 5698520 1617240 5697752 +1617232 5697704 1617240 5697752 1617552 5698032 1617600 5697776 +1617232 5697704 1616392 5698520 1617240 5697752 1617600 5697776 +1617240 5697752 1617584 5698152 1617552 5698032 1617600 5697776 +1617232 5697704 1617240 5697752 1617600 5697776 1617616 5697656 +1616624 5698656 1617224 5697920 1617240 5697752 1616592 5698624 +1617240 5697752 1616528 5698576 1616592 5698624 1617224 5697920 +1617240 5697752 1616456 5698536 1616528 5698576 1617224 5697920 +1616528 5698576 1616592 5698624 1617224 5697920 1616456 5698536 +1617224 5697920 1617584 5698152 1617240 5697752 1616456 5698536 +1616592 5698624 1616624 5698656 1617224 5697920 1616528 5698576 +1616624 5698656 1617584 5698152 1617224 5697920 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1617224 5697920 +1617584 5698152 1617224 5697920 1616624 5698656 1617680 5698304 +1617240 5697752 1617224 5697920 1617584 5698152 1617552 5698032 +1617240 5697752 1617224 5697920 1617552 5698032 1617600 5697776 +1617240 5697752 1616456 5698536 1617224 5697920 1617600 5697776 +1617224 5697920 1616624 5698656 1617584 5698152 1617552 5698032 +1617224 5697920 1617584 5698152 1617552 5698032 1617600 5697776 +1617240 5697752 1616392 5698520 1616456 5698536 1617224 5697920 +1616456 5698536 1616528 5698576 1617224 5697920 1616392 5698520 +1617240 5697752 1616392 5698520 1617224 5697920 1617600 5697776 +1617240 5697752 1617232 5697704 1616392 5698520 1617224 5697920 +1617240 5697752 1617232 5697704 1617224 5697920 1617600 5697776 +1616392 5698520 1616456 5698536 1617224 5697920 1617232 5697704 +1617232 5697704 1615528 5697784 1616392 5698520 1617224 5697920 +1617240 5697752 1617224 5697920 1617600 5697776 1617232 5697704 +1617224 5697920 1617248 5698112 1617584 5698152 1617552 5698032 +1617224 5697920 1616624 5698656 1617248 5698112 1617552 5698032 +1616624 5698656 1617248 5698112 1617224 5697920 1616592 5698624 +1617224 5697920 1616528 5698576 1616592 5698624 1617248 5698112 +1617224 5697920 1616456 5698536 1616528 5698576 1617248 5698112 +1617224 5697920 1616392 5698520 1616456 5698536 1617248 5698112 +1616528 5698576 1616592 5698624 1617248 5698112 1616456 5698536 +1617248 5698112 1617552 5698032 1617224 5697920 1616456 5698536 +1616592 5698624 1616624 5698656 1617248 5698112 1616528 5698576 +1617248 5698112 1616624 5698656 1617584 5698152 1617552 5698032 +1616624 5698656 1617584 5698152 1617248 5698112 1616592 5698624 +1616528 5698576 1616560 5698616 1616592 5698624 1617248 5698112 +1617584 5698152 1617248 5698112 1616624 5698656 1617680 5698304 +1617584 5698152 1617552 5698032 1617248 5698112 1617680 5698304 +1617248 5698112 1616592 5698624 1616624 5698656 1617680 5698304 +1616624 5698656 1616624 5698800 1617680 5698304 1617248 5698112 +1617224 5697920 1617248 5698112 1617552 5698032 1617600 5697776 +1616624 5698656 1617288 5698200 1617248 5698112 1616592 5698624 +1617248 5698112 1616528 5698576 1616592 5698624 1617288 5698200 +1617288 5698200 1617680 5698304 1617248 5698112 1616592 5698624 +1616624 5698656 1617680 5698304 1617288 5698200 1616592 5698624 +1617680 5698304 1617288 5698200 1616624 5698656 1616624 5698800 +1617680 5698304 1617248 5698112 1617288 5698200 1616624 5698800 +1617288 5698200 1616592 5698624 1616624 5698656 1616624 5698800 +1617680 5698304 1617288 5698200 1616624 5698800 1617776 5698392 +1617680 5698304 1617248 5698112 1617288 5698200 1617776 5698392 +1617288 5698200 1616624 5698656 1616624 5698800 1617776 5698392 +1616624 5698656 1616616 5698720 1616624 5698800 1617288 5698200 +1616624 5698800 1616600 5698864 1617776 5698392 1617288 5698200 +1617248 5698112 1617288 5698200 1617680 5698304 1617584 5698152 +1617248 5698112 1617288 5698200 1617584 5698152 1617552 5698032 +1617248 5698112 1617288 5698200 1617552 5698032 1617224 5697920 +1617248 5698112 1616592 5698624 1617288 5698200 1617552 5698032 +1617288 5698200 1617776 5698392 1617680 5698304 1617584 5698152 +1617288 5698200 1617680 5698304 1617584 5698152 1617552 5698032 +1617288 5698200 1617440 5698424 1617776 5698392 1617680 5698304 +1617288 5698200 1617440 5698424 1617680 5698304 1617584 5698152 +1617288 5698200 1616624 5698800 1617440 5698424 1617584 5698152 +1617440 5698424 1616624 5698800 1617776 5698392 1617680 5698304 +1617440 5698424 1617776 5698392 1617680 5698304 1617584 5698152 +1616624 5698800 1617440 5698424 1617288 5698200 1616624 5698656 +1617440 5698424 1617584 5698152 1617288 5698200 1616624 5698656 +1617288 5698200 1616592 5698624 1616624 5698656 1617440 5698424 +1616624 5698800 1617776 5698392 1617440 5698424 1616624 5698656 +1616624 5698800 1617440 5698424 1616624 5698656 1616616 5698720 +1617776 5698392 1617440 5698424 1616624 5698800 1616600 5698864 +1617776 5698392 1617680 5698304 1617440 5698424 1616600 5698864 +1617440 5698424 1616624 5698656 1616624 5698800 1616600 5698864 +1617776 5698392 1617440 5698424 1616600 5698864 1617824 5698416 +1617776 5698392 1617680 5698304 1617440 5698424 1617824 5698416 +1616600 5698864 1617496 5700904 1617824 5698416 1617440 5698424 +1617824 5698416 1617776 5698392 1617440 5698424 1617496 5700904 +1616600 5698864 1616256 5699536 1617496 5700904 1617440 5698424 +1617496 5700904 1618144 5698512 1617824 5698416 1617440 5698424 +1617824 5698416 1617776 5698392 1617440 5698424 1618144 5698512 +1617496 5700904 1618336 5698616 1618144 5698512 1617440 5698424 +1617496 5700904 1618144 5698512 1617440 5698424 1616600 5698864 +1617440 5698424 1616624 5698800 1616600 5698864 1617496 5700904 +1617288 5698200 1617440 5698424 1617584 5698152 1617552 5698032 +1618144 5698512 1617600 5698560 1617496 5700904 1618336 5698616 +1618144 5698512 1617440 5698424 1617600 5698560 1618336 5698616 +1617600 5698560 1617440 5698424 1617496 5700904 1618336 5698616 +1617496 5700904 1618424 5698632 1618336 5698616 1617600 5698560 +1617440 5698424 1617600 5698560 1618144 5698512 1617824 5698416 +1617440 5698424 1617496 5700904 1617600 5698560 1617824 5698416 +1617600 5698560 1618336 5698616 1618144 5698512 1617824 5698416 +1617440 5698424 1617600 5698560 1617824 5698416 1617776 5698392 +1617440 5698424 1617600 5698560 1617776 5698392 1617680 5698304 +1617440 5698424 1617496 5700904 1617600 5698560 1617680 5698304 +1617440 5698424 1617600 5698560 1617680 5698304 1617584 5698152 +1617600 5698560 1617824 5698416 1617776 5698392 1617680 5698304 +1617600 5698560 1618144 5698512 1617824 5698416 1617776 5698392 +1617496 5700904 1617600 5698560 1617440 5698424 1616600 5698864 +1617600 5698560 1617680 5698304 1617440 5698424 1616600 5698864 +1617496 5700904 1618336 5698616 1617600 5698560 1616600 5698864 +1617496 5700904 1617600 5698560 1616600 5698864 1616256 5699536 +1617496 5700904 1618336 5698616 1617600 5698560 1616256 5699536 +1616600 5698864 1616256 5699472 1616256 5699536 1617600 5698560 +1617496 5700904 1617600 5698560 1616256 5699536 1616736 5700904 +1617600 5698560 1617440 5698424 1616600 5698864 1616256 5699536 +1617440 5698424 1616624 5698800 1616600 5698864 1617600 5698560 +1617440 5698424 1616624 5698800 1617600 5698560 1617680 5698304 +1617440 5698424 1616624 5698656 1616624 5698800 1617600 5698560 +1616600 5698864 1616256 5699536 1617600 5698560 1616624 5698800 +1617496 5700904 1617824 5698720 1617600 5698560 1616256 5699536 +1617824 5698720 1618336 5698616 1617600 5698560 1616256 5699536 +1617496 5700904 1618336 5698616 1617824 5698720 1616256 5699536 +1617600 5698560 1617824 5698720 1618336 5698616 1618144 5698512 +1617600 5698560 1617824 5698720 1618144 5698512 1617824 5698416 +1617600 5698560 1616256 5699536 1617824 5698720 1617824 5698416 +1617824 5698720 1617496 5700904 1618336 5698616 1618144 5698512 +1617824 5698720 1618336 5698616 1618144 5698512 1617824 5698416 +1617600 5698560 1616600 5698864 1616256 5699536 1617824 5698720 +1617600 5698560 1616600 5698864 1617824 5698720 1617824 5698416 +1616256 5699536 1617496 5700904 1617824 5698720 1616600 5698864 +1616600 5698864 1616256 5699472 1616256 5699536 1617824 5698720 +1617496 5700904 1617824 5698720 1616256 5699536 1616736 5700904 +1618336 5698616 1617824 5698720 1617496 5700904 1618424 5698632 +1618336 5698616 1618144 5698512 1617824 5698720 1618424 5698632 +1617824 5698720 1616256 5699536 1617496 5700904 1618424 5698632 +1617496 5700904 1621464 5701464 1618424 5698632 1617824 5698720 +1617600 5698560 1617824 5698720 1617824 5698416 1617776 5698392 +1617600 5698560 1616624 5698800 1616600 5698864 1617824 5698720 +1617496 5700904 1617984 5698888 1617824 5698720 1616256 5699536 +1617824 5698720 1616600 5698864 1616256 5699536 1617984 5698888 +1617984 5698888 1618424 5698632 1617824 5698720 1616600 5698864 +1616256 5699536 1617496 5700904 1617984 5698888 1616600 5698864 +1617496 5700904 1618424 5698632 1617984 5698888 1616256 5699536 +1616600 5698864 1616256 5699472 1616256 5699536 1617984 5698888 +1617824 5698720 1617600 5698560 1616600 5698864 1617984 5698888 +1617496 5700904 1617984 5698888 1616256 5699536 1616736 5700904 +1618424 5698632 1617984 5698888 1617496 5700904 1621464 5701464 +1617824 5698720 1617984 5698888 1618424 5698632 1618336 5698616 +1617824 5698720 1617984 5698888 1618336 5698616 1618144 5698512 +1617824 5698720 1616600 5698864 1617984 5698888 1618144 5698512 +1617984 5698888 1617496 5700904 1618424 5698632 1618336 5698616 +1617824 5698720 1617984 5698888 1618144 5698512 1617824 5698416 +1617984 5698888 1618424 5698632 1618336 5698616 1618144 5698512 +1617984 5698888 1618032 5698960 1618424 5698632 1618336 5698616 +1617984 5698888 1617496 5700904 1618032 5698960 1618336 5698616 +1617496 5700904 1618032 5698960 1617984 5698888 1616256 5699536 +1617984 5698888 1616600 5698864 1616256 5699536 1618032 5698960 +1617984 5698888 1617824 5698720 1616600 5698864 1618032 5698960 +1618032 5698960 1618336 5698616 1617984 5698888 1616600 5698864 +1616256 5699536 1617496 5700904 1618032 5698960 1616600 5698864 +1618032 5698960 1617496 5700904 1618424 5698632 1618336 5698616 +1617496 5700904 1618424 5698632 1618032 5698960 1616256 5699536 +1616600 5698864 1616256 5699472 1616256 5699536 1618032 5698960 +1617496 5700904 1618032 5698960 1616256 5699536 1616736 5700904 +1618424 5698632 1618032 5698960 1617496 5700904 1621464 5701464 +1618424 5698632 1618336 5698616 1618032 5698960 1621464 5701464 +1618032 5698960 1616256 5699536 1617496 5700904 1621464 5701464 +1617496 5700904 1621448 5701528 1621464 5701464 1618032 5698960 +1618424 5698632 1618032 5698960 1621464 5701464 1621488 5701424 +1617984 5698888 1618032 5698960 1618336 5698616 1618144 5698512 +1617496 5700904 1618072 5699008 1618032 5698960 1616256 5699536 +1618032 5698960 1616600 5698864 1616256 5699536 1618072 5699008 +1618072 5699008 1621464 5701464 1618032 5698960 1616256 5699536 +1617496 5700904 1621464 5701464 1618072 5699008 1616256 5699536 +1621464 5701464 1618072 5699008 1617496 5700904 1621448 5701528 +1617496 5700904 1618072 5699008 1616256 5699536 1616736 5700904 +1618032 5698960 1618072 5699008 1621464 5701464 1618424 5698632 +1618032 5698960 1618072 5699008 1618424 5698632 1618336 5698616 +1618032 5698960 1618072 5699008 1618336 5698616 1617984 5698888 +1618032 5698960 1616256 5699536 1618072 5699008 1618336 5698616 +1618072 5699008 1617496 5700904 1621464 5701464 1618424 5698632 +1621464 5701464 1621488 5701424 1618424 5698632 1618072 5699008 +1621464 5701464 1621488 5701424 1618072 5699008 1617496 5700904 +1621488 5701424 1619040 5698280 1618424 5698632 1618072 5699008 +1621488 5701424 1621576 5701360 1619040 5698280 1618072 5699008 +1621488 5701424 1619040 5698280 1618072 5699008 1621464 5701464 +1618072 5699008 1619040 5698280 1618424 5698632 1618336 5698616 +1619040 5698280 1618504 5698568 1618424 5698632 1618072 5699008 +1618072 5699008 1618248 5699336 1621464 5701464 1621488 5701424 +1618072 5699008 1617496 5700904 1618248 5699336 1621488 5701424 +1617496 5700904 1618248 5699336 1618072 5699008 1616256 5699536 +1618072 5699008 1618032 5698960 1616256 5699536 1618248 5699336 +1618248 5699336 1621488 5701424 1618072 5699008 1616256 5699536 +1618248 5699336 1617496 5700904 1621464 5701464 1621488 5701424 +1617496 5700904 1621464 5701464 1618248 5699336 1616256 5699536 +1621464 5701464 1618248 5699336 1617496 5700904 1621448 5701528 +1617496 5700904 1618248 5699336 1616256 5699536 1616736 5700904 +1618072 5699008 1618248 5699336 1621488 5701424 1619040 5698280 +1621488 5701424 1621576 5701360 1619040 5698280 1618248 5699336 +1618248 5699336 1621464 5701464 1621488 5701424 1619040 5698280 +1618072 5699008 1616256 5699536 1618248 5699336 1619040 5698280 +1618072 5699008 1618248 5699336 1619040 5698280 1618424 5698632 +1618072 5699008 1616256 5699536 1618248 5699336 1618424 5698632 +1618248 5699336 1621488 5701424 1619040 5698280 1618424 5698632 +1618072 5699008 1618248 5699336 1618424 5698632 1618336 5698616 +1619040 5698280 1618504 5698568 1618424 5698632 1618248 5699336 +1618424 5698632 1618072 5699008 1618248 5699336 1618504 5698568 +1619040 5698280 1618504 5698568 1618248 5699336 1621488 5701424 +1619040 5698280 1618936 5698304 1618504 5698568 1618248 5699336 +1618248 5699336 1618384 5699440 1621464 5701464 1621488 5701424 +1618248 5699336 1618384 5699440 1621488 5701424 1619040 5698280 +1621488 5701424 1621576 5701360 1619040 5698280 1618384 5699440 +1618384 5699440 1621464 5701464 1621488 5701424 1619040 5698280 +1618248 5699336 1617496 5700904 1618384 5699440 1619040 5698280 +1617496 5700904 1618384 5699440 1618248 5699336 1616256 5699536 +1618384 5699440 1617496 5700904 1621464 5701464 1621488 5701424 +1621464 5701464 1618384 5699440 1617496 5700904 1621448 5701528 +1621464 5701464 1621488 5701424 1618384 5699440 1621448 5701528 +1618384 5699440 1618248 5699336 1617496 5700904 1621448 5701528 +1617496 5700904 1621664 5703552 1621448 5701528 1618384 5699440 +1618248 5699336 1618384 5699440 1619040 5698280 1618504 5698568 +1618384 5699440 1621488 5701424 1619040 5698280 1618504 5698568 +1618248 5699336 1617496 5700904 1618384 5699440 1618504 5698568 +1619040 5698280 1618936 5698304 1618504 5698568 1618384 5699440 +1619040 5698280 1618936 5698304 1618384 5699440 1621488 5701424 +1618504 5698568 1618248 5699336 1618384 5699440 1618936 5698304 +1618248 5699336 1618384 5699440 1618504 5698568 1618424 5698632 +1618248 5699336 1617496 5700904 1618384 5699440 1618424 5698632 +1618248 5699336 1618384 5699440 1618424 5698632 1618072 5699008 +1618384 5699440 1618936 5698304 1618504 5698568 1618424 5698632 +1618936 5698304 1618536 5698512 1618504 5698568 1618384 5699440 +1617496 5700904 1618392 5699496 1618384 5699440 1618248 5699336 +1617496 5700904 1618392 5699496 1618248 5699336 1616256 5699536 +1618392 5699496 1621448 5701528 1618384 5699440 1618248 5699336 +1617496 5700904 1621448 5701528 1618392 5699496 1618248 5699336 +1618384 5699440 1618392 5699496 1621448 5701528 1621464 5701464 +1618384 5699440 1618392 5699496 1621464 5701464 1621488 5701424 +1618384 5699440 1618392 5699496 1621488 5701424 1619040 5698280 +1621488 5701424 1621576 5701360 1619040 5698280 1618392 5699496 +1618384 5699440 1618392 5699496 1619040 5698280 1618936 5698304 +1619040 5698280 1618384 5699440 1618392 5699496 1621576 5701360 +1618392 5699496 1621464 5701464 1621488 5701424 1621576 5701360 +1618384 5699440 1618248 5699336 1618392 5699496 1619040 5698280 +1618392 5699496 1617496 5700904 1621448 5701528 1621464 5701464 +1618392 5699496 1621448 5701528 1621464 5701464 1621488 5701424 +1621448 5701528 1618392 5699496 1617496 5700904 1621664 5703552 +1621576 5701360 1622064 5698152 1619040 5698280 1618392 5699496 +1618392 5699496 1618368 5699568 1621448 5701528 1621464 5701464 +1618392 5699496 1617496 5700904 1618368 5699568 1621464 5701464 +1617496 5700904 1618368 5699568 1618392 5699496 1618248 5699336 +1617496 5700904 1618368 5699568 1618248 5699336 1616256 5699536 +1618392 5699496 1618384 5699440 1618248 5699336 1618368 5699568 +1618368 5699568 1621464 5701464 1618392 5699496 1618384 5699440 +1618248 5699336 1617496 5700904 1618368 5699568 1618384 5699440 +1618368 5699568 1617496 5700904 1621448 5701528 1621464 5701464 +1617496 5700904 1621448 5701528 1618368 5699568 1618248 5699336 +1618392 5699496 1618368 5699568 1621464 5701464 1621488 5701424 +1618392 5699496 1618368 5699568 1621488 5701424 1621576 5701360 +1618368 5699568 1621448 5701528 1621464 5701464 1621488 5701424 +1618392 5699496 1618384 5699440 1618368 5699568 1621488 5701424 +1621448 5701528 1618368 5699568 1617496 5700904 1621664 5703552 +1617496 5700904 1618280 5699648 1618248 5699336 1616256 5699536 +1618248 5699336 1618072 5699008 1616256 5699536 1618280 5699648 +1618072 5699008 1618032 5698960 1616256 5699536 1618280 5699648 +1618032 5698960 1616600 5698864 1616256 5699536 1618280 5699648 +1618032 5698960 1617984 5698888 1616600 5698864 1618280 5699648 +1618032 5698960 1616600 5698864 1618280 5699648 1618072 5699008 +1618072 5699008 1618032 5698960 1618280 5699648 1618248 5699336 +1616256 5699536 1617496 5700904 1618280 5699648 1616600 5698864 +1618248 5699336 1618280 5699648 1618368 5699568 1618384 5699440 +1618368 5699568 1618280 5699648 1617496 5700904 1621448 5701528 +1618368 5699568 1618280 5699648 1621448 5701528 1621464 5701464 +1618368 5699568 1618280 5699648 1621464 5701464 1621488 5701424 +1618368 5699568 1618248 5699336 1618280 5699648 1621464 5701464 +1618280 5699648 1617496 5700904 1621448 5701528 1621464 5701464 +1617496 5700904 1621448 5701528 1618280 5699648 1616256 5699536 +1618280 5699648 1618368 5699568 1618248 5699336 1618072 5699008 +1616600 5698864 1616256 5699472 1616256 5699536 1618280 5699648 +1617496 5700904 1618280 5699648 1616256 5699536 1616736 5700904 +1617496 5700904 1621664 5703552 1621448 5701528 1618280 5699648 +1616256 5699536 1618184 5699664 1618280 5699648 1616600 5698864 +1618280 5699648 1618032 5698960 1616600 5698864 1618184 5699664 +1618032 5698960 1617984 5698888 1616600 5698864 1618184 5699664 +1618280 5699648 1618072 5699008 1618032 5698960 1618184 5699664 +1618032 5698960 1616600 5698864 1618184 5699664 1618072 5699008 +1618280 5699648 1618248 5699336 1618072 5699008 1618184 5699664 +1618072 5699008 1618032 5698960 1618184 5699664 1618248 5699336 +1616600 5698864 1616256 5699536 1618184 5699664 1618032 5698960 +1618280 5699648 1618184 5699664 1617496 5700904 1621448 5701528 +1618184 5699664 1617496 5700904 1618280 5699648 1618248 5699336 +1618280 5699648 1618368 5699568 1618248 5699336 1618184 5699664 +1616256 5699536 1617496 5700904 1618184 5699664 1616600 5698864 +1616256 5699536 1618184 5699664 1616600 5698864 1616256 5699472 +1617496 5700904 1618184 5699664 1616256 5699536 1616736 5700904 +1616600 5698864 1617992 5699632 1618184 5699664 1618032 5698960 +1616600 5698864 1617992 5699632 1618032 5698960 1617984 5698888 +1616600 5698864 1617992 5699632 1617984 5698888 1617824 5698720 +1617992 5699632 1618032 5698960 1617984 5698888 1617824 5698720 +1618184 5699664 1618072 5699008 1618032 5698960 1617992 5699632 +1618184 5699664 1618248 5699336 1618072 5699008 1617992 5699632 +1618072 5699008 1618032 5698960 1617992 5699632 1618248 5699336 +1618184 5699664 1618280 5699648 1618248 5699336 1617992 5699632 +1617992 5699632 1618072 5699008 1618032 5698960 1617984 5698888 +1617992 5699632 1616256 5699536 1618184 5699664 1618248 5699336 +1618184 5699664 1617992 5699632 1616256 5699536 1617496 5700904 +1618184 5699664 1617992 5699632 1617496 5700904 1618280 5699648 +1618184 5699664 1618248 5699336 1617992 5699632 1617496 5700904 +1617992 5699632 1616600 5698864 1616256 5699536 1617496 5700904 +1616600 5698864 1616256 5699536 1617992 5699632 1617824 5698720 +1616256 5699536 1617992 5699632 1616600 5698864 1616256 5699472 +1616600 5698864 1617992 5699632 1617824 5698720 1617600 5698560 +1616256 5699536 1616736 5700904 1617496 5700904 1617992 5699632 +1617496 5700904 1618184 5699664 1617992 5699632 1616736 5700904 +1616256 5699536 1616736 5700904 1617992 5699632 1616600 5698864 +1616736 5700904 1616928 5700984 1617496 5700904 1617992 5699632 +1616256 5699536 1616112 5699736 1616736 5700904 1617992 5699632 +1616256 5699536 1617960 5699640 1617992 5699632 1616600 5698864 +1617960 5699640 1616736 5700904 1617992 5699632 1616600 5698864 +1617992 5699632 1617824 5698720 1616600 5698864 1617960 5699640 +1617992 5699632 1617984 5698888 1617824 5698720 1617960 5699640 +1617992 5699632 1618032 5698960 1617984 5698888 1617960 5699640 +1617984 5698888 1617824 5698720 1617960 5699640 1618032 5698960 +1617992 5699632 1618072 5699008 1618032 5698960 1617960 5699640 +1618032 5698960 1617984 5698888 1617960 5699640 1618072 5699008 +1617992 5699632 1618248 5699336 1618072 5699008 1617960 5699640 +1616600 5698864 1616256 5699536 1617960 5699640 1617824 5698720 +1617992 5699632 1618072 5699008 1617960 5699640 1616736 5700904 +1617824 5698720 1616600 5698864 1617960 5699640 1617984 5698888 +1616256 5699536 1616736 5700904 1617960 5699640 1616600 5698864 +1616256 5699536 1617960 5699640 1616600 5698864 1616256 5699472 +1617824 5698720 1617600 5698560 1616600 5698864 1617960 5699640 +1617992 5699632 1617960 5699640 1616736 5700904 1617496 5700904 +1617992 5699632 1617960 5699640 1617496 5700904 1618184 5699664 +1617496 5700904 1618280 5699648 1618184 5699664 1617960 5699640 +1617992 5699632 1618072 5699008 1617960 5699640 1618184 5699664 +1617960 5699640 1616256 5699536 1616736 5700904 1617496 5700904 +1617960 5699640 1616736 5700904 1617496 5700904 1618184 5699664 +1616736 5700904 1616928 5700984 1617496 5700904 1617960 5699640 +1616736 5700904 1617960 5699640 1616256 5699536 1616112 5699736 +1617960 5699640 1617920 5699672 1616736 5700904 1617496 5700904 +1617960 5699640 1616256 5699536 1617920 5699672 1617496 5700904 +1616256 5699536 1617920 5699672 1617960 5699640 1616600 5698864 +1617960 5699640 1617824 5698720 1616600 5698864 1617920 5699672 +1617960 5699640 1617984 5698888 1617824 5698720 1617920 5699672 +1617960 5699640 1618032 5698960 1617984 5698888 1617920 5699672 +1617960 5699640 1618072 5699008 1618032 5698960 1617920 5699672 +1617824 5698720 1616600 5698864 1617920 5699672 1617984 5698888 +1617984 5698888 1617824 5698720 1617920 5699672 1618032 5698960 +1617920 5699672 1617496 5700904 1617960 5699640 1618032 5698960 +1616600 5698864 1616256 5699536 1617920 5699672 1617824 5698720 +1617920 5699672 1616256 5699536 1616736 5700904 1617496 5700904 +1616256 5699536 1616736 5700904 1617920 5699672 1616600 5698864 +1616256 5699536 1617920 5699672 1616600 5698864 1616256 5699472 +1617824 5698720 1617600 5698560 1616600 5698864 1617920 5699672 +1617824 5698720 1617600 5698560 1617920 5699672 1617984 5698888 +1616600 5698864 1616256 5699536 1617920 5699672 1617600 5698560 +1617960 5699640 1617920 5699672 1617496 5700904 1618184 5699664 +1617496 5700904 1618280 5699648 1618184 5699664 1617920 5699672 +1617960 5699640 1617920 5699672 1618184 5699664 1617992 5699632 +1617920 5699672 1616736 5700904 1617496 5700904 1618184 5699664 +1617960 5699640 1618032 5698960 1617920 5699672 1617992 5699632 +1617920 5699672 1617496 5700904 1618184 5699664 1617992 5699632 +1617600 5698560 1616624 5698800 1616600 5698864 1617920 5699672 +1616736 5700904 1616928 5700984 1617496 5700904 1617920 5699672 +1616736 5700904 1617920 5699672 1616256 5699536 1616112 5699736 +1617920 5699672 1617832 5699808 1617496 5700904 1618184 5699664 +1617496 5700904 1618280 5699648 1618184 5699664 1617832 5699808 +1616736 5700904 1617832 5699808 1617920 5699672 1616256 5699536 +1617920 5699672 1616256 5699536 1617832 5699808 1618184 5699664 +1617920 5699672 1616600 5698864 1616256 5699536 1617832 5699808 +1617920 5699672 1617600 5698560 1616600 5698864 1617832 5699808 +1616256 5699536 1616736 5700904 1617832 5699808 1616600 5698864 +1617920 5699672 1616600 5698864 1617832 5699808 1618184 5699664 +1617832 5699808 1616736 5700904 1617496 5700904 1618184 5699664 +1616736 5700904 1617496 5700904 1617832 5699808 1616256 5699536 +1616600 5698864 1616256 5699472 1616256 5699536 1617832 5699808 +1617920 5699672 1617832 5699808 1618184 5699664 1617992 5699632 +1617496 5700904 1617832 5699808 1616736 5700904 1616928 5700984 +1616736 5700904 1617832 5699808 1616256 5699536 1616112 5699736 +1618184 5699664 1617768 5700120 1617496 5700904 1618280 5699648 +1617496 5700904 1621448 5701528 1618280 5699648 1617768 5700120 +1617832 5699808 1617768 5700120 1618184 5699664 1617920 5699672 +1617496 5700904 1617768 5700120 1617832 5699808 1616736 5700904 +1617768 5700120 1618184 5699664 1617832 5699808 1616736 5700904 +1617832 5699808 1616256 5699536 1616736 5700904 1617768 5700120 +1617832 5699808 1616600 5698864 1616256 5699536 1617768 5700120 +1616736 5700904 1617496 5700904 1617768 5700120 1616256 5699536 +1617832 5699808 1616256 5699536 1617768 5700120 1618184 5699664 +1618184 5699664 1617832 5699808 1617768 5700120 1618280 5699648 +1617496 5700904 1617768 5700120 1616736 5700904 1616928 5700984 +1617768 5700120 1616256 5699536 1616736 5700904 1616928 5700984 +1617496 5700904 1617768 5700120 1616928 5700984 1617392 5700976 +1616256 5699536 1616112 5699736 1616736 5700904 1617768 5700120 +1617768 5700120 1616928 5700984 1617496 5700904 1618280 5699648 +1618280 5699648 1617776 5700272 1617496 5700904 1621448 5701528 +1618280 5699648 1617776 5700272 1621448 5701528 1621464 5701464 +1617768 5700120 1617776 5700272 1618280 5699648 1618184 5699664 +1617768 5700120 1617776 5700272 1618184 5699664 1617832 5699808 +1617496 5700904 1621664 5703552 1621448 5701528 1617776 5700272 +1617768 5700120 1617496 5700904 1617776 5700272 1618184 5699664 +1617496 5700904 1617776 5700272 1617768 5700120 1616928 5700984 +1617496 5700904 1617776 5700272 1616928 5700984 1617392 5700976 +1617768 5700120 1616736 5700904 1616928 5700984 1617776 5700272 +1617768 5700120 1616256 5699536 1616736 5700904 1617776 5700272 +1617776 5700272 1618184 5699664 1617768 5700120 1616736 5700904 +1616928 5700984 1617496 5700904 1617776 5700272 1616736 5700904 +1618280 5699648 1618184 5699664 1617776 5700272 1621448 5701528 +1617776 5700272 1616928 5700984 1617496 5700904 1621448 5701528 +1617776 5700272 1617792 5700456 1621448 5701528 1618280 5699648 +1621448 5701528 1621464 5701464 1618280 5699648 1617792 5700456 +1621464 5701464 1618368 5699568 1618280 5699648 1617792 5700456 +1621464 5701464 1621488 5701424 1618368 5699568 1617792 5700456 +1621464 5701464 1618368 5699568 1617792 5700456 1621448 5701528 +1618280 5699648 1617776 5700272 1617792 5700456 1618368 5699568 +1621448 5701528 1617792 5700456 1617496 5700904 1621664 5703552 +1617776 5700272 1617792 5700456 1618280 5699648 1618184 5699664 +1617776 5700272 1617496 5700904 1617792 5700456 1618280 5699648 +1617496 5700904 1617792 5700456 1617776 5700272 1616928 5700984 +1617792 5700456 1617496 5700904 1621448 5701528 1621464 5701464 +1621448 5701528 1617760 5700568 1617496 5700904 1621664 5703552 +1617792 5700456 1617760 5700568 1621448 5701528 1621464 5701464 +1617496 5700904 1617760 5700568 1617792 5700456 1617776 5700272 +1617496 5700904 1617760 5700568 1617776 5700272 1616928 5700984 +1617760 5700568 1621448 5701528 1617792 5700456 1617776 5700272 +1617496 5700904 1621448 5701528 1617760 5700568 1617776 5700272 +1621448 5701528 1617608 5700800 1617496 5700904 1621664 5703552 +1617760 5700568 1617608 5700800 1621448 5701528 1617792 5700456 +1617496 5700904 1617608 5700800 1617760 5700568 1617776 5700272 +1617496 5700904 1617608 5700800 1617776 5700272 1616928 5700984 +1617496 5700904 1617608 5700800 1616928 5700984 1617392 5700976 +1617776 5700272 1616736 5700904 1616928 5700984 1617608 5700800 +1617760 5700568 1617792 5700456 1617776 5700272 1617608 5700800 +1617608 5700800 1621448 5701528 1617760 5700568 1617776 5700272 +1617608 5700800 1617760 5700568 1617776 5700272 1616928 5700984 +1617496 5700904 1621448 5701528 1617608 5700800 1616928 5700984 +1611000 5692800 1609808 5694968 1611120 5695240 1611064 5692984 +1611120 5695240 1611152 5695144 1611064 5692984 1609808 5694968 +1611064 5692984 1611000 5692800 1609808 5694968 1611152 5695144 +1611120 5695240 1609808 5694968 1602224 5696056 1602504 5696992 +1611152 5695144 1611312 5693984 1611064 5692984 1609808 5694968 +1611064 5692984 1611000 5692800 1609808 5694968 1611312 5693984 +1611152 5695144 1611312 5693984 1609808 5694968 1611120 5695240 +1602224 5696056 1609808 5694968 1611000 5692800 1602200 5696008 +1611000 5692800 1602160 5695928 1602200 5696008 1609808 5694968 +1602200 5696008 1602224 5696056 1609808 5694968 1602160 5695928 +1611152 5695144 1611344 5694080 1611312 5693984 1609808 5694968 +1611152 5695144 1611184 5695112 1611344 5694080 1609808 5694968 +1611152 5695144 1611184 5695112 1609808 5694968 1611120 5695240 +1611312 5693984 1611064 5692984 1609808 5694968 1611344 5694080 +1611184 5695112 1611360 5694104 1611344 5694080 1609808 5694968 +1611344 5694080 1611312 5693984 1609808 5694968 1611184 5695112 +1611312 5693984 1611192 5693224 1611064 5692984 1609808 5694968 +1611064 5692984 1611000 5692800 1609808 5694968 1611192 5693224 +1611312 5693984 1611408 5693680 1611192 5693224 1609808 5694968 +1611312 5693984 1611192 5693224 1609808 5694968 1611344 5694080 +1602224 5696056 1602224 5696096 1602504 5696992 1609808 5694968 +1611000 5692800 1608736 5689448 1602160 5695928 1609808 5694968 +1608736 5689448 1608616 5689368 1602160 5695928 1609808 5694968 +1608616 5689368 1608392 5689208 1602160 5695928 1609808 5694968 +1608392 5689208 1602112 5695896 1602160 5695928 1609808 5694968 +1608616 5689368 1608392 5689208 1609808 5694968 1608736 5689448 +1602160 5695928 1602200 5696008 1609808 5694968 1608392 5689208 +1608736 5689448 1608616 5689368 1609808 5694968 1611000 5692800 +1611000 5692800 1610992 5692696 1608736 5689448 1609808 5694968 +1608736 5689448 1608616 5689368 1609808 5694968 1610992 5692696 +1610992 5692696 1608840 5689480 1608736 5689448 1609808 5694968 +1611120 5695240 1609808 5694968 1602504 5696992 1608544 5699312 +1611120 5695240 1609808 5694968 1608544 5699312 1608624 5699288 +1611120 5695240 1609808 5694968 1608624 5699288 1611136 5695304 +1608624 5699288 1611336 5695680 1611136 5695304 1609808 5694968 +1608624 5699288 1610784 5698784 1611336 5695680 1609808 5694968 +1611336 5695680 1611136 5695304 1609808 5694968 1610784 5698784 +1611136 5695304 1611120 5695240 1609808 5694968 1611336 5695680 +1609808 5694968 1608544 5699312 1608624 5699288 1610784 5698784 +1609808 5694968 1602224 5696056 1602504 5696992 1608544 5699312 +1602504 5696992 1608256 5699504 1608544 5699312 1609808 5694968 +1602504 5696992 1602504 5697056 1608256 5699504 1609808 5694968 +1608256 5699504 1608400 5699424 1608544 5699312 1609808 5694968 +1602504 5696992 1608256 5699504 1609808 5694968 1602224 5696056 +1608624 5699288 1610736 5698824 1610784 5698784 1609808 5694968 +1610784 5698784 1611336 5695680 1609808 5694968 1610736 5698824 +1608624 5699288 1610736 5698824 1609808 5694968 1608544 5699312 +1608624 5699288 1608712 5699312 1610736 5698824 1609808 5694968 +1608624 5699288 1608712 5699312 1609808 5694968 1608544 5699312 +1608712 5699312 1608920 5699432 1610736 5698824 1609808 5694968 +1610736 5698824 1610784 5698784 1609808 5694968 1608712 5699312 +1609808 5694968 1608256 5699504 1608544 5699312 1608624 5699288 +1610784 5698784 1611464 5695816 1611336 5695680 1609808 5694968 +1609808 5694968 1602200 5696008 1602224 5696056 1602504 5696992 +1611000 5692800 1610992 5692696 1609808 5694968 1611064 5692984 +1609808 5694968 1611136 5695304 1611120 5695240 1611152 5695144 +1610784 5698784 1609960 5695056 1609808 5694968 1610736 5698824 +1609808 5694968 1609960 5695056 1611336 5695680 1611136 5695304 +1609808 5694968 1609960 5695056 1611136 5695304 1611120 5695240 +1609960 5695056 1611336 5695680 1611136 5695304 1611120 5695240 +1609808 5694968 1608712 5699312 1610736 5698824 1609960 5695056 +1610736 5698824 1610784 5698784 1609960 5695056 1608712 5699312 +1609808 5694968 1608624 5699288 1608712 5699312 1609960 5695056 +1609808 5694968 1608544 5699312 1608624 5699288 1609960 5695056 +1608712 5699312 1608920 5699432 1610736 5698824 1609960 5695056 +1608712 5699312 1610736 5698824 1609960 5695056 1608624 5699288 +1611336 5695680 1609960 5695056 1610784 5698784 1611464 5695816 +1609960 5695056 1611120 5695240 1609808 5694968 1608624 5699288 +1609808 5694968 1609960 5695056 1611120 5695240 1611152 5695144 +1609960 5695056 1611136 5695304 1611120 5695240 1611152 5695144 +1609808 5694968 1609960 5695056 1611152 5695144 1611184 5695112 +1609808 5694968 1609960 5695056 1611184 5695112 1611344 5694080 +1609960 5695056 1611152 5695144 1611184 5695112 1611344 5694080 +1611184 5695112 1611360 5694104 1611344 5694080 1609960 5695056 +1609808 5694968 1609960 5695056 1611344 5694080 1611312 5693984 +1609960 5695056 1611184 5695112 1611344 5694080 1611312 5693984 +1609808 5694968 1609960 5695056 1611312 5693984 1611192 5693224 +1609808 5694968 1608624 5699288 1609960 5695056 1611312 5693984 +1609960 5695056 1611120 5695240 1611152 5695144 1611184 5695112 +1609960 5695056 1610784 5698784 1611336 5695680 1611136 5695304 +1610784 5698784 1611336 5695680 1609960 5695056 1610736 5698824 +1611336 5695680 1610056 5695120 1610784 5698784 1611464 5695816 +1609960 5695056 1610056 5695120 1611336 5695680 1611136 5695304 +1609960 5695056 1610056 5695120 1611136 5695304 1611120 5695240 +1609960 5695056 1610056 5695120 1611120 5695240 1611152 5695144 +1610056 5695120 1611136 5695304 1611120 5695240 1611152 5695144 +1609960 5695056 1610056 5695120 1611152 5695144 1611184 5695112 +1610056 5695120 1611120 5695240 1611152 5695144 1611184 5695112 +1609960 5695056 1610056 5695120 1611184 5695112 1611344 5694080 +1609960 5695056 1610056 5695120 1611344 5694080 1611312 5693984 +1611184 5695112 1611360 5694104 1611344 5694080 1610056 5695120 +1610056 5695120 1611152 5695144 1611184 5695112 1611344 5694080 +1610056 5695120 1611336 5695680 1611136 5695304 1611120 5695240 +1609960 5695056 1610784 5698784 1610056 5695120 1611344 5694080 +1610784 5698784 1610056 5695120 1609960 5695056 1610736 5698824 +1609960 5695056 1608712 5699312 1610736 5698824 1610056 5695120 +1608712 5699312 1608920 5699432 1610736 5698824 1610056 5695120 +1609960 5695056 1608624 5699288 1608712 5699312 1610056 5695120 +1608712 5699312 1610736 5698824 1610056 5695120 1608624 5699288 +1609960 5695056 1609808 5694968 1608624 5699288 1610056 5695120 +1610056 5695120 1611344 5694080 1609960 5695056 1608624 5699288 +1610736 5698824 1610784 5698784 1610056 5695120 1608712 5699312 +1610056 5695120 1610784 5698784 1611336 5695680 1611136 5695304 +1610784 5698784 1611336 5695680 1610056 5695120 1610736 5698824 +1611336 5695680 1610120 5695200 1610784 5698784 1611464 5695816 +1610784 5698784 1610848 5698768 1611464 5695816 1610120 5695200 +1610056 5695120 1610120 5695200 1611336 5695680 1611136 5695304 +1610056 5695120 1610120 5695200 1611136 5695304 1611120 5695240 +1610056 5695120 1610120 5695200 1611120 5695240 1611152 5695144 +1610056 5695120 1610120 5695200 1611152 5695144 1611184 5695112 +1610120 5695200 1611136 5695304 1611120 5695240 1611152 5695144 +1610120 5695200 1611336 5695680 1611136 5695304 1611120 5695240 +1610056 5695120 1610784 5698784 1610120 5695200 1611152 5695144 +1610784 5698784 1610120 5695200 1610056 5695120 1610736 5698824 +1610056 5695120 1608712 5699312 1610736 5698824 1610120 5695200 +1610056 5695120 1608624 5699288 1608712 5699312 1610120 5695200 +1608712 5699312 1608920 5699432 1610736 5698824 1610120 5695200 +1610056 5695120 1609960 5695056 1608624 5699288 1610120 5695200 +1608624 5699288 1608712 5699312 1610120 5695200 1609960 5695056 +1609960 5695056 1609808 5694968 1608624 5699288 1610120 5695200 +1608624 5699288 1608712 5699312 1610120 5695200 1609808 5694968 +1609808 5694968 1608544 5699312 1608624 5699288 1610120 5695200 +1609960 5695056 1609808 5694968 1610120 5695200 1610056 5695120 +1608712 5699312 1610736 5698824 1610120 5695200 1608624 5699288 +1610120 5695200 1611152 5695144 1610056 5695120 1609960 5695056 +1610736 5698824 1610784 5698784 1610120 5695200 1608712 5699312 +1611336 5695680 1611136 5695304 1610120 5695200 1611464 5695816 +1610120 5695200 1610736 5698824 1610784 5698784 1611464 5695816 +1610120 5695200 1610248 5695424 1611464 5695816 1611336 5695680 +1611464 5695816 1610248 5695424 1610784 5698784 1610848 5698768 +1610120 5695200 1610248 5695424 1611336 5695680 1611136 5695304 +1610248 5695424 1611464 5695816 1611336 5695680 1611136 5695304 +1610120 5695200 1610248 5695424 1611136 5695304 1611120 5695240 +1610120 5695200 1610248 5695424 1611120 5695240 1611152 5695144 +1610248 5695424 1611336 5695680 1611136 5695304 1611120 5695240 +1610120 5695200 1610784 5698784 1610248 5695424 1611120 5695240 +1610784 5698784 1610248 5695424 1610120 5695200 1610736 5698824 +1610120 5695200 1608712 5699312 1610736 5698824 1610248 5695424 +1608712 5699312 1608920 5699432 1610736 5698824 1610248 5695424 +1610120 5695200 1608624 5699288 1608712 5699312 1610248 5695424 +1610120 5695200 1609808 5694968 1608624 5699288 1610248 5695424 +1609808 5694968 1608544 5699312 1608624 5699288 1610248 5695424 +1610120 5695200 1609960 5695056 1609808 5694968 1610248 5695424 +1609808 5694968 1608624 5699288 1610248 5695424 1609960 5695056 +1610120 5695200 1610056 5695120 1609960 5695056 1610248 5695424 +1608624 5699288 1608712 5699312 1610248 5695424 1609808 5694968 +1608712 5699312 1610736 5698824 1610248 5695424 1608624 5699288 +1610248 5695424 1611120 5695240 1610120 5695200 1609960 5695056 +1610736 5698824 1610784 5698784 1610248 5695424 1608712 5699312 +1610248 5695424 1610784 5698784 1611464 5695816 1611336 5695680 +1610784 5698784 1611464 5695816 1610248 5695424 1610736 5698824 +1611464 5695816 1610280 5695512 1610784 5698784 1610848 5698768 +1611464 5695816 1610280 5695512 1610848 5698768 1611592 5695912 +1610248 5695424 1610280 5695512 1611464 5695816 1611336 5695680 +1610248 5695424 1610280 5695512 1611336 5695680 1611136 5695304 +1610248 5695424 1610280 5695512 1611136 5695304 1611120 5695240 +1610280 5695512 1611336 5695680 1611136 5695304 1611120 5695240 +1610248 5695424 1610280 5695512 1611120 5695240 1610120 5695200 +1610280 5695512 1611464 5695816 1611336 5695680 1611136 5695304 +1610248 5695424 1610784 5698784 1610280 5695512 1611120 5695240 +1610784 5698784 1610280 5695512 1610248 5695424 1610736 5698824 +1610248 5695424 1608712 5699312 1610736 5698824 1610280 5695512 +1608712 5699312 1608920 5699432 1610736 5698824 1610280 5695512 +1610248 5695424 1608624 5699288 1608712 5699312 1610280 5695512 +1610248 5695424 1609808 5694968 1608624 5699288 1610280 5695512 +1610248 5695424 1609960 5695056 1609808 5694968 1610280 5695512 +1609808 5694968 1608544 5699312 1608624 5699288 1610280 5695512 +1608624 5699288 1608712 5699312 1610280 5695512 1609808 5694968 +1608712 5699312 1610736 5698824 1610280 5695512 1608624 5699288 +1610280 5695512 1611120 5695240 1610248 5695424 1609808 5694968 +1610736 5698824 1610784 5698784 1610280 5695512 1608712 5699312 +1611464 5695816 1611336 5695680 1610280 5695512 1610848 5698768 +1610280 5695512 1610736 5698824 1610784 5698784 1610848 5698768 +1611464 5695816 1610296 5695600 1610848 5698768 1611592 5695912 +1610848 5698768 1611704 5695976 1611592 5695912 1610296 5695600 +1611464 5695816 1610296 5695600 1611592 5695912 1611560 5695880 +1610848 5698768 1610296 5695600 1610280 5695512 1610784 5698784 +1610280 5695512 1610296 5695600 1611464 5695816 1611336 5695680 +1610280 5695512 1610296 5695600 1611336 5695680 1611136 5695304 +1610280 5695512 1610296 5695600 1611136 5695304 1611120 5695240 +1610296 5695600 1611464 5695816 1611336 5695680 1611136 5695304 +1610296 5695600 1611136 5695304 1610280 5695512 1610784 5698784 +1610280 5695512 1610736 5698824 1610784 5698784 1610296 5695600 +1610784 5698784 1610848 5698768 1610296 5695600 1610736 5698824 +1610280 5695512 1608712 5699312 1610736 5698824 1610296 5695600 +1608712 5699312 1608920 5699432 1610736 5698824 1610296 5695600 +1610280 5695512 1608624 5699288 1608712 5699312 1610296 5695600 +1610280 5695512 1609808 5694968 1608624 5699288 1610296 5695600 +1609808 5694968 1608544 5699312 1608624 5699288 1610296 5695600 +1610280 5695512 1610248 5695424 1609808 5694968 1610296 5695600 +1610248 5695424 1609960 5695056 1609808 5694968 1610296 5695600 +1610248 5695424 1610120 5695200 1609960 5695056 1610296 5695600 +1610248 5695424 1609960 5695056 1610296 5695600 1610280 5695512 +1609808 5694968 1608624 5699288 1610296 5695600 1609960 5695056 +1608624 5699288 1608712 5699312 1610296 5695600 1609808 5694968 +1608712 5699312 1610736 5698824 1610296 5695600 1608624 5699288 +1610280 5695512 1610248 5695424 1610296 5695600 1611136 5695304 +1610736 5698824 1610784 5698784 1610296 5695600 1608712 5699312 +1611464 5695816 1611336 5695680 1610296 5695600 1611592 5695912 +1610296 5695600 1610784 5698784 1610848 5698768 1611592 5695912 +1610736 5698824 1610288 5695712 1608712 5699312 1608920 5699432 +1608712 5699312 1610288 5695712 1610296 5695600 1608624 5699288 +1610296 5695600 1609808 5694968 1608624 5699288 1610288 5695712 +1609808 5694968 1608544 5699312 1608624 5699288 1610288 5695712 +1610296 5695600 1609960 5695056 1609808 5694968 1610288 5695712 +1610296 5695600 1610248 5695424 1609960 5695056 1610288 5695712 +1610248 5695424 1610120 5695200 1609960 5695056 1610288 5695712 +1610248 5695424 1610120 5695200 1610288 5695712 1610296 5695600 +1610120 5695200 1610056 5695120 1609960 5695056 1610288 5695712 +1610296 5695600 1610280 5695512 1610248 5695424 1610288 5695712 +1610248 5695424 1610120 5695200 1610288 5695712 1610280 5695512 +1609960 5695056 1609808 5694968 1610288 5695712 1610120 5695200 +1609808 5694968 1608624 5699288 1610288 5695712 1609960 5695056 +1608624 5699288 1608712 5699312 1610288 5695712 1609808 5694968 +1610296 5695600 1610288 5695712 1610736 5698824 1610784 5698784 +1610296 5695600 1610288 5695712 1610784 5698784 1610848 5698768 +1610288 5695712 1610736 5698824 1610784 5698784 1610848 5698768 +1610288 5695712 1610848 5698768 1610296 5695600 1610280 5695512 +1610296 5695600 1610288 5695712 1610848 5698768 1611592 5695912 +1610848 5698768 1611704 5695976 1611592 5695912 1610288 5695712 +1610296 5695600 1610288 5695712 1611592 5695912 1611464 5695816 +1611592 5695912 1611560 5695880 1611464 5695816 1610288 5695712 +1610288 5695712 1610784 5698784 1610848 5698768 1611592 5695912 +1610296 5695600 1610288 5695712 1611464 5695816 1611336 5695680 +1610288 5695712 1611592 5695912 1611464 5695816 1611336 5695680 +1610296 5695600 1610288 5695712 1611336 5695680 1611136 5695304 +1610296 5695600 1610288 5695712 1611136 5695304 1610280 5695512 +1610288 5695712 1611464 5695816 1611336 5695680 1611136 5695304 +1610296 5695600 1610280 5695512 1610288 5695712 1611136 5695304 +1610288 5695712 1610848 5698768 1611592 5695912 1611464 5695816 +1610288 5695712 1608712 5699312 1610736 5698824 1610784 5698784 +1608712 5699312 1610736 5698824 1610288 5695712 1608624 5699288 +1610736 5698824 1610232 5695864 1608712 5699312 1608920 5699432 +1610288 5695712 1610232 5695864 1610736 5698824 1610784 5698784 +1610288 5695712 1610232 5695864 1610784 5698784 1610848 5698768 +1610288 5695712 1610232 5695864 1610848 5698768 1611592 5695912 +1610848 5698768 1611704 5695976 1611592 5695912 1610232 5695864 +1610232 5695864 1610784 5698784 1610848 5698768 1611592 5695912 +1610288 5695712 1610232 5695864 1611592 5695912 1611464 5695816 +1610288 5695712 1610232 5695864 1611464 5695816 1611336 5695680 +1611592 5695912 1611560 5695880 1611464 5695816 1610232 5695864 +1610232 5695864 1610848 5698768 1611592 5695912 1611464 5695816 +1610288 5695712 1610232 5695864 1611336 5695680 1611136 5695304 +1610232 5695864 1611592 5695912 1611464 5695816 1611336 5695680 +1610232 5695864 1610736 5698824 1610784 5698784 1610848 5698768 +1610288 5695712 1608712 5699312 1610232 5695864 1611336 5695680 +1608712 5699312 1610232 5695864 1610288 5695712 1608624 5699288 +1610288 5695712 1609808 5694968 1608624 5699288 1610232 5695864 +1609808 5694968 1608544 5699312 1608624 5699288 1610232 5695864 +1609808 5694968 1608256 5699504 1608544 5699312 1610232 5695864 +1610288 5695712 1609960 5695056 1609808 5694968 1610232 5695864 +1610288 5695712 1610120 5695200 1609960 5695056 1610232 5695864 +1610288 5695712 1610248 5695424 1610120 5695200 1610232 5695864 +1610288 5695712 1610280 5695512 1610248 5695424 1610232 5695864 +1610248 5695424 1610120 5695200 1610232 5695864 1610280 5695512 +1610120 5695200 1610056 5695120 1609960 5695056 1610232 5695864 +1610288 5695712 1610296 5695600 1610280 5695512 1610232 5695864 +1610120 5695200 1609960 5695056 1610232 5695864 1610248 5695424 +1609960 5695056 1609808 5694968 1610232 5695864 1610120 5695200 +1609808 5694968 1608544 5699312 1610232 5695864 1609960 5695056 +1610232 5695864 1611336 5695680 1610288 5695712 1610280 5695512 +1608624 5699288 1608712 5699312 1610232 5695864 1608544 5699312 +1610232 5695864 1608712 5699312 1610736 5698824 1610784 5698784 +1608712 5699312 1610736 5698824 1610232 5695864 1608624 5699288 +1610736 5698824 1610232 5695920 1608712 5699312 1608920 5699432 +1610232 5695864 1610232 5695920 1610736 5698824 1610784 5698784 +1610232 5695864 1610232 5695920 1610784 5698784 1610848 5698768 +1610232 5695864 1610232 5695920 1610848 5698768 1611592 5695912 +1610848 5698768 1611704 5695976 1611592 5695912 1610232 5695920 +1610848 5698768 1612496 5696752 1611704 5695976 1610232 5695920 +1611704 5695976 1611680 5695944 1611592 5695912 1610232 5695920 +1610232 5695864 1610232 5695920 1611592 5695912 1611464 5695816 +1611592 5695912 1611560 5695880 1611464 5695816 1610232 5695920 +1611592 5695912 1611464 5695816 1610232 5695920 1611704 5695976 +1610232 5695864 1610232 5695920 1611464 5695816 1611336 5695680 +1610232 5695864 1610232 5695920 1611336 5695680 1610288 5695712 +1610232 5695920 1611592 5695912 1611464 5695816 1611336 5695680 +1611336 5695680 1611136 5695304 1610288 5695712 1610232 5695920 +1610232 5695920 1611464 5695816 1611336 5695680 1610288 5695712 +1610232 5695920 1610784 5698784 1610848 5698768 1611704 5695976 +1610232 5695920 1610736 5698824 1610784 5698784 1610848 5698768 +1610232 5695864 1608712 5699312 1610232 5695920 1610288 5695712 +1608712 5699312 1610232 5695920 1610232 5695864 1608624 5699288 +1610232 5695864 1608544 5699312 1608624 5699288 1610232 5695920 +1610232 5695864 1609808 5694968 1608544 5699312 1610232 5695920 +1609808 5694968 1608256 5699504 1608544 5699312 1610232 5695920 +1610232 5695864 1609960 5695056 1609808 5694968 1610232 5695920 +1608544 5699312 1608624 5699288 1610232 5695920 1609808 5694968 +1610232 5695920 1610288 5695712 1610232 5695864 1609808 5694968 +1608624 5699288 1608712 5699312 1610232 5695920 1608544 5699312 +1610232 5695920 1608712 5699312 1610736 5698824 1610784 5698784 +1608712 5699312 1610736 5698824 1610232 5695920 1608624 5699288 +1609808 5694968 1610208 5695968 1610232 5695920 1610232 5695864 +1608544 5699312 1610208 5695968 1609808 5694968 1608256 5699504 +1609808 5694968 1610208 5695968 1610232 5695864 1609960 5695056 +1610232 5695920 1610208 5695968 1608544 5699312 1608624 5699288 +1610232 5695920 1610208 5695968 1608624 5699288 1608712 5699312 +1610208 5695968 1608544 5699312 1608624 5699288 1608712 5699312 +1610208 5695968 1608712 5699312 1610232 5695920 1610232 5695864 +1610232 5695920 1610208 5695968 1608712 5699312 1610736 5698824 +1608712 5699312 1608920 5699432 1610736 5698824 1610208 5695968 +1610208 5695968 1608624 5699288 1608712 5699312 1610736 5698824 +1610232 5695920 1610208 5695968 1610736 5698824 1610784 5698784 +1610232 5695920 1610208 5695968 1610784 5698784 1610848 5698768 +1610232 5695920 1610208 5695968 1610848 5698768 1611704 5695976 +1610232 5695920 1610208 5695968 1611704 5695976 1611592 5695912 +1610848 5698768 1612496 5696752 1611704 5695976 1610208 5695968 +1611704 5695976 1611680 5695944 1611592 5695912 1610208 5695968 +1610232 5695920 1610208 5695968 1611592 5695912 1611464 5695816 +1610208 5695968 1611704 5695976 1611592 5695912 1611464 5695816 +1611592 5695912 1611560 5695880 1611464 5695816 1610208 5695968 +1610232 5695920 1610208 5695968 1611464 5695816 1611336 5695680 +1610208 5695968 1610848 5698768 1611704 5695976 1611592 5695912 +1610208 5695968 1610784 5698784 1610848 5698768 1611704 5695976 +1610208 5695968 1610736 5698824 1610784 5698784 1610848 5698768 +1610232 5695920 1610232 5695864 1610208 5695968 1611464 5695816 +1610208 5695968 1608712 5699312 1610736 5698824 1610784 5698784 +1610208 5695968 1609808 5694968 1608544 5699312 1608624 5699288 +1609808 5694968 1608544 5699312 1610208 5695968 1610232 5695864 +1608544 5699312 1610064 5696016 1609808 5694968 1608256 5699504 +1610208 5695968 1610064 5696016 1608544 5699312 1608624 5699288 +1610208 5695968 1610064 5696016 1608624 5699288 1608712 5699312 +1610208 5695968 1610064 5696016 1608712 5699312 1610736 5698824 +1608712 5699312 1608920 5699432 1610736 5698824 1610064 5696016 +1610064 5696016 1608624 5699288 1608712 5699312 1610736 5698824 +1610208 5695968 1610064 5696016 1610736 5698824 1610784 5698784 +1610064 5696016 1608712 5699312 1610736 5698824 1610784 5698784 +1610208 5695968 1610064 5696016 1610784 5698784 1610848 5698768 +1610208 5695968 1610064 5696016 1610848 5698768 1611704 5695976 +1610064 5696016 1610736 5698824 1610784 5698784 1610848 5698768 +1610064 5696016 1608544 5699312 1608624 5699288 1608712 5699312 +1610208 5695968 1609808 5694968 1610064 5696016 1610848 5698768 +1609808 5694968 1610064 5696016 1610208 5695968 1610232 5695864 +1610208 5695968 1610232 5695920 1610232 5695864 1610064 5696016 +1609808 5694968 1610064 5696016 1610232 5695864 1609960 5695056 +1610232 5695864 1610120 5695200 1609960 5695056 1610064 5696016 +1610120 5695200 1610056 5695120 1609960 5695056 1610064 5696016 +1610232 5695864 1610248 5695424 1610120 5695200 1610064 5696016 +1610232 5695864 1610280 5695512 1610248 5695424 1610064 5696016 +1610232 5695864 1610288 5695712 1610280 5695512 1610064 5696016 +1610280 5695512 1610248 5695424 1610064 5696016 1610288 5695712 +1610288 5695712 1610296 5695600 1610280 5695512 1610064 5696016 +1610248 5695424 1610120 5695200 1610064 5696016 1610280 5695512 +1610120 5695200 1609960 5695056 1610064 5696016 1610248 5695424 +1609960 5695056 1609808 5694968 1610064 5696016 1610120 5695200 +1610064 5696016 1610848 5698768 1610208 5695968 1610232 5695864 +1610064 5696016 1610208 5695968 1610232 5695864 1610288 5695712 +1610064 5696016 1609808 5694968 1608544 5699312 1608624 5699288 +1609808 5694968 1608544 5699312 1610064 5696016 1609960 5695056 +1608544 5699312 1609880 5696032 1609808 5694968 1608256 5699504 +1608544 5699312 1609880 5696032 1608256 5699504 1608400 5699424 +1609808 5694968 1602504 5696992 1608256 5699504 1609880 5696032 +1602504 5696992 1602504 5697056 1608256 5699504 1609880 5696032 +1609808 5694968 1602224 5696056 1602504 5696992 1609880 5696032 +1608256 5699504 1608544 5699312 1609880 5696032 1602504 5696992 +1610064 5696016 1609880 5696032 1608544 5699312 1608624 5699288 +1610064 5696016 1609880 5696032 1608624 5699288 1608712 5699312 +1610064 5696016 1609880 5696032 1608712 5699312 1610736 5698824 +1608712 5699312 1608920 5699432 1610736 5698824 1609880 5696032 +1610064 5696016 1609880 5696032 1610736 5698824 1610784 5698784 +1609880 5696032 1608712 5699312 1610736 5698824 1610784 5698784 +1610064 5696016 1609880 5696032 1610784 5698784 1610848 5698768 +1609880 5696032 1608624 5699288 1608712 5699312 1610736 5698824 +1609880 5696032 1608544 5699312 1608624 5699288 1608712 5699312 +1610064 5696016 1609808 5694968 1609880 5696032 1610784 5698784 +1609808 5694968 1609880 5696032 1610064 5696016 1609960 5695056 +1610064 5696016 1610120 5695200 1609960 5695056 1609880 5696032 +1610120 5695200 1610056 5695120 1609960 5695056 1609880 5696032 +1610064 5696016 1610248 5695424 1610120 5695200 1609880 5696032 +1610064 5696016 1610280 5695512 1610248 5695424 1609880 5696032 +1610064 5696016 1610288 5695712 1610280 5695512 1609880 5696032 +1610064 5696016 1610232 5695864 1610288 5695712 1609880 5696032 +1610288 5695712 1610280 5695512 1609880 5696032 1610232 5695864 +1610288 5695712 1610296 5695600 1610280 5695512 1609880 5696032 +1610280 5695512 1610248 5695424 1609880 5696032 1610288 5695712 +1610248 5695424 1610120 5695200 1609880 5696032 1610280 5695512 +1610120 5695200 1609960 5695056 1609880 5696032 1610248 5695424 +1610064 5696016 1610208 5695968 1610232 5695864 1609880 5696032 +1609880 5696032 1610784 5698784 1610064 5696016 1610232 5695864 +1609960 5695056 1609808 5694968 1609880 5696032 1610120 5695200 +1608544 5699312 1608624 5699288 1609880 5696032 1608256 5699504 +1609880 5696032 1609960 5695056 1609808 5694968 1602504 5696992 +1602504 5696992 1609688 5695968 1609808 5694968 1602224 5696056 +1609880 5696032 1609688 5695968 1602504 5696992 1608256 5699504 +1602504 5696992 1602504 5697056 1608256 5699504 1609688 5695968 +1602504 5696992 1609688 5695968 1602224 5696056 1602224 5696096 +1609880 5696032 1609688 5695968 1608256 5699504 1608544 5699312 +1608256 5699504 1608400 5699424 1608544 5699312 1609688 5695968 +1609688 5695968 1602504 5696992 1608256 5699504 1608544 5699312 +1609808 5694968 1602200 5696008 1602224 5696056 1609688 5695968 +1609880 5696032 1609688 5695968 1608544 5699312 1608624 5699288 +1609688 5695968 1608256 5699504 1608544 5699312 1608624 5699288 +1609880 5696032 1609688 5695968 1608624 5699288 1608712 5699312 +1609880 5696032 1609688 5695968 1608712 5699312 1610736 5698824 +1609688 5695968 1608544 5699312 1608624 5699288 1608712 5699312 +1609880 5696032 1609808 5694968 1609688 5695968 1608712 5699312 +1609808 5694968 1609688 5695968 1609880 5696032 1609960 5695056 +1609880 5696032 1610120 5695200 1609960 5695056 1609688 5695968 +1610120 5695200 1610056 5695120 1609960 5695056 1609688 5695968 +1609880 5696032 1610248 5695424 1610120 5695200 1609688 5695968 +1609880 5696032 1610280 5695512 1610248 5695424 1609688 5695968 +1609880 5696032 1610288 5695712 1610280 5695512 1609688 5695968 +1609880 5696032 1610232 5695864 1610288 5695712 1609688 5695968 +1610288 5695712 1610296 5695600 1610280 5695512 1609688 5695968 +1610288 5695712 1610296 5695600 1609688 5695968 1609880 5696032 +1610280 5695512 1610248 5695424 1609688 5695968 1610296 5695600 +1610248 5695424 1610120 5695200 1609688 5695968 1610280 5695512 +1610120 5695200 1609960 5695056 1609688 5695968 1610248 5695424 +1609688 5695968 1608712 5699312 1609880 5696032 1610288 5695712 +1609960 5695056 1609808 5694968 1609688 5695968 1610120 5695200 +1602504 5696992 1608256 5699504 1609688 5695968 1602224 5696056 +1609688 5695968 1609960 5695056 1609808 5694968 1602224 5696056 +1609688 5695968 1609448 5695808 1602224 5696056 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1609448 5695808 +1602224 5696056 1609448 5695808 1609808 5694968 1602200 5696008 +1609808 5694968 1602160 5695928 1602200 5696008 1609448 5695808 +1609808 5694968 1608392 5689208 1602160 5695928 1609448 5695808 +1609448 5695808 1609688 5695968 1609808 5694968 1602160 5695928 +1602200 5696008 1602224 5696056 1609448 5695808 1602160 5695928 +1609688 5695968 1609448 5695808 1602504 5696992 1608256 5699504 +1602504 5696992 1602504 5697056 1608256 5699504 1609448 5695808 +1609448 5695808 1602224 5696056 1602504 5696992 1608256 5699504 +1609688 5695968 1609448 5695808 1608256 5699504 1608544 5699312 +1608256 5699504 1608400 5699424 1608544 5699312 1609448 5695808 +1609688 5695968 1609448 5695808 1608544 5699312 1608624 5699288 +1609448 5695808 1608256 5699504 1608544 5699312 1608624 5699288 +1609688 5695968 1609448 5695808 1608624 5699288 1608712 5699312 +1609448 5695808 1602504 5696992 1608256 5699504 1608544 5699312 +1609688 5695968 1609808 5694968 1609448 5695808 1608624 5699288 +1609808 5694968 1609448 5695808 1609688 5695968 1609960 5695056 +1609808 5694968 1602160 5695928 1609448 5695808 1609960 5695056 +1609688 5695968 1610120 5695200 1609960 5695056 1609448 5695808 +1610120 5695200 1610056 5695120 1609960 5695056 1609448 5695808 +1609688 5695968 1610248 5695424 1610120 5695200 1609448 5695808 +1609688 5695968 1610280 5695512 1610248 5695424 1609448 5695808 +1610120 5695200 1609960 5695056 1609448 5695808 1610248 5695424 +1609448 5695808 1608624 5699288 1609688 5695968 1610248 5695424 +1609960 5695056 1609808 5694968 1609448 5695808 1610120 5695200 +1609448 5695808 1602200 5696008 1602224 5696056 1602504 5696992 +1602160 5695928 1609320 5695680 1609808 5694968 1608392 5689208 +1609808 5694968 1608616 5689368 1608392 5689208 1609320 5695680 +1602160 5695928 1609320 5695680 1608392 5689208 1602112 5695896 +1609808 5694968 1608736 5689448 1608616 5689368 1609320 5695680 +1608392 5689208 1602160 5695928 1609320 5695680 1608616 5689368 +1609448 5695808 1609320 5695680 1602160 5695928 1602200 5696008 +1609808 5694968 1609320 5695680 1609448 5695808 1609960 5695056 +1609448 5695808 1609960 5695056 1609320 5695680 1602200 5696008 +1602160 5695928 1602200 5696008 1609320 5695680 1608392 5689208 +1609320 5695680 1609960 5695056 1609808 5694968 1608616 5689368 +1609448 5695808 1609320 5695680 1602200 5696008 1602224 5696056 +1609320 5695680 1602160 5695928 1602200 5696008 1602224 5696056 +1609448 5695808 1609960 5695056 1609320 5695680 1602224 5696056 +1609448 5695808 1610120 5695200 1609960 5695056 1609320 5695680 +1609448 5695808 1609320 5695680 1602224 5696056 1602504 5696992 +1609448 5695808 1609320 5695680 1602504 5696992 1608256 5699504 +1602504 5696992 1602504 5697056 1608256 5699504 1609320 5695680 +1609448 5695808 1609960 5695056 1609320 5695680 1608256 5699504 +1602224 5696056 1602224 5696096 1602504 5696992 1609320 5695680 +1609320 5695680 1602200 5696008 1602224 5696056 1602504 5696992 +1609448 5695808 1609320 5695680 1608256 5699504 1608544 5699312 +1608256 5699504 1608400 5699424 1608544 5699312 1609320 5695680 +1609320 5695680 1602504 5696992 1608256 5699504 1608544 5699312 +1609448 5695808 1609960 5695056 1609320 5695680 1608544 5699312 +1609448 5695808 1609320 5695680 1608544 5699312 1608624 5699288 +1609320 5695680 1602224 5696056 1602504 5696992 1608256 5699504 +1602160 5695928 1609264 5695568 1608392 5689208 1602112 5695896 +1608392 5689208 1609264 5695568 1609320 5695680 1608616 5689368 +1609320 5695680 1609808 5694968 1608616 5689368 1609264 5695568 +1609808 5694968 1608736 5689448 1608616 5689368 1609264 5695568 +1609808 5694968 1608736 5689448 1609264 5695568 1609320 5695680 +1608616 5689368 1608392 5689208 1609264 5695568 1608736 5689448 +1609320 5695680 1609264 5695568 1602160 5695928 1602200 5696008 +1609320 5695680 1609264 5695568 1602200 5696008 1602224 5696056 +1609264 5695568 1602160 5695928 1602200 5696008 1602224 5696056 +1609264 5695568 1602224 5696056 1609320 5695680 1609808 5694968 +1609320 5695680 1609960 5695056 1609808 5694968 1609264 5695568 +1609808 5694968 1608736 5689448 1609264 5695568 1609960 5695056 +1609320 5695680 1609448 5695808 1609960 5695056 1609264 5695568 +1609320 5695680 1609960 5695056 1609264 5695568 1602224 5696056 +1609264 5695568 1608392 5689208 1602160 5695928 1602200 5696008 +1608392 5689208 1602160 5695928 1609264 5695568 1608616 5689368 +1609808 5694968 1610992 5692696 1608736 5689448 1609264 5695568 +1609320 5695680 1609264 5695568 1602224 5696056 1602504 5696992 +1609264 5695568 1602200 5696008 1602224 5696056 1602504 5696992 +1609320 5695680 1609960 5695056 1609264 5695568 1602504 5696992 +1602224 5696056 1602224 5696096 1602504 5696992 1609264 5695568 +1609320 5695680 1609264 5695568 1602504 5696992 1608256 5699504 +1602504 5696992 1602504 5697056 1608256 5699504 1609264 5695568 +1609320 5695680 1609264 5695568 1608256 5699504 1608544 5699312 +1609320 5695680 1609960 5695056 1609264 5695568 1608256 5699504 +1609264 5695568 1602224 5696056 1602504 5696992 1608256 5699504 +1602160 5695928 1609248 5695456 1608392 5689208 1602112 5695896 +1609264 5695568 1609248 5695456 1602160 5695928 1602200 5696008 +1609264 5695568 1609248 5695456 1602200 5696008 1602224 5696056 +1609264 5695568 1609248 5695456 1602224 5696056 1602504 5696992 +1609248 5695456 1602200 5696008 1602224 5696056 1602504 5696992 +1609248 5695456 1602160 5695928 1602200 5696008 1602224 5696056 +1609264 5695568 1608392 5689208 1609248 5695456 1602504 5696992 +1608392 5689208 1609248 5695456 1609264 5695568 1608616 5689368 +1609264 5695568 1608736 5689448 1608616 5689368 1609248 5695456 +1609264 5695568 1609808 5694968 1608736 5689448 1609248 5695456 +1609264 5695568 1609960 5695056 1609808 5694968 1609248 5695456 +1609808 5694968 1608736 5689448 1609248 5695456 1609960 5695056 +1608736 5689448 1608616 5689368 1609248 5695456 1609808 5694968 +1609264 5695568 1609320 5695680 1609960 5695056 1609248 5695456 +1609960 5695056 1609808 5694968 1609248 5695456 1609320 5695680 +1609320 5695680 1609448 5695808 1609960 5695056 1609248 5695456 +1609960 5695056 1609808 5694968 1609248 5695456 1609448 5695808 +1609320 5695680 1609448 5695808 1609248 5695456 1609264 5695568 +1609248 5695456 1602504 5696992 1609264 5695568 1609320 5695680 +1608616 5689368 1608392 5689208 1609248 5695456 1608736 5689448 +1609248 5695456 1608392 5689208 1602160 5695928 1602200 5696008 +1608392 5689208 1602160 5695928 1609248 5695456 1608616 5689368 +1602224 5696056 1602224 5696096 1602504 5696992 1609248 5695456 +1609808 5694968 1610992 5692696 1608736 5689448 1609248 5695456 +1609264 5695568 1609248 5695456 1602504 5696992 1608256 5699504 +1609448 5695808 1610120 5695200 1609960 5695056 1609248 5695456 +1609808 5694968 1609264 5695000 1609248 5695456 1609960 5695056 +1609248 5695456 1609264 5695000 1608736 5689448 1608616 5689368 +1609248 5695456 1609264 5695000 1608616 5689368 1608392 5689208 +1609264 5695000 1608736 5689448 1608616 5689368 1608392 5689208 +1609248 5695456 1609808 5694968 1609264 5695000 1608392 5689208 +1609248 5695456 1609264 5695000 1608392 5689208 1602160 5695928 +1608392 5689208 1602112 5695896 1602160 5695928 1609264 5695000 +1609264 5695000 1608616 5689368 1608392 5689208 1602160 5695928 +1609248 5695456 1609264 5695000 1602160 5695928 1602200 5696008 +1609248 5695456 1609264 5695000 1602200 5696008 1602224 5696056 +1609248 5695456 1609264 5695000 1602224 5696056 1602504 5696992 +1609264 5695000 1602160 5695928 1602200 5696008 1602224 5696056 +1609248 5695456 1609808 5694968 1609264 5695000 1602224 5696056 +1609264 5695000 1608392 5689208 1602160 5695928 1602200 5696008 +1609264 5695000 1609808 5694968 1608736 5689448 1608616 5689368 +1608736 5689448 1609264 5695000 1609808 5694968 1610992 5692696 +1608736 5689448 1608616 5689368 1609264 5695000 1610992 5692696 +1609264 5695000 1609248 5695456 1609808 5694968 1610992 5692696 +1609808 5694968 1611000 5692800 1610992 5692696 1609264 5695000 +1609808 5694968 1611000 5692800 1609264 5695000 1609248 5695456 +1610992 5692696 1608736 5689448 1609264 5695000 1611000 5692800 +1608736 5689448 1609264 5695000 1610992 5692696 1608840 5689480 +1610992 5692696 1611024 5692552 1608840 5689480 1609264 5695000 +1608736 5689448 1608616 5689368 1609264 5695000 1608840 5689480 +1609264 5695000 1611000 5692800 1610992 5692696 1608840 5689480 +1609808 5694968 1611064 5692984 1611000 5692800 1609264 5695000 +1609808 5694968 1609392 5694896 1609264 5695000 1609248 5695456 +1609264 5695000 1609392 5694896 1611000 5692800 1610992 5692696 +1609264 5695000 1609808 5694968 1609392 5694896 1610992 5692696 +1609392 5694896 1609808 5694968 1611000 5692800 1610992 5692696 +1609264 5695000 1609392 5694896 1610992 5692696 1608840 5689480 +1610992 5692696 1611024 5692552 1608840 5689480 1609392 5694896 +1609264 5695000 1609808 5694968 1609392 5694896 1608840 5689480 +1609392 5694896 1611000 5692800 1610992 5692696 1608840 5689480 +1609264 5695000 1609392 5694896 1608840 5689480 1608736 5689448 +1609264 5695000 1609392 5694896 1608736 5689448 1608616 5689368 +1609264 5695000 1609808 5694968 1609392 5694896 1608736 5689448 +1609392 5694896 1610992 5692696 1608840 5689480 1608736 5689448 +1611000 5692800 1609392 5694896 1609808 5694968 1611064 5692984 +1609808 5694968 1611192 5693224 1611064 5692984 1609392 5694896 +1611000 5692800 1610992 5692696 1609392 5694896 1611064 5692984 +1609392 5694896 1609264 5695000 1609808 5694968 1611064 5692984 +1611064 5692984 1609472 5694880 1609808 5694968 1611192 5693224 +1609808 5694968 1609472 5694880 1609392 5694896 1609264 5695000 +1609808 5694968 1609472 5694880 1609264 5695000 1609248 5695456 +1609808 5694968 1609472 5694880 1609248 5695456 1609960 5695056 +1609472 5694880 1611064 5692984 1609392 5694896 1609264 5695000 +1609472 5694880 1609392 5694896 1609264 5695000 1609248 5695456 +1609808 5694968 1611064 5692984 1609472 5694880 1609248 5695456 +1609392 5694896 1609472 5694880 1611064 5692984 1611000 5692800 +1609392 5694896 1609472 5694880 1611000 5692800 1610992 5692696 +1609392 5694896 1609264 5695000 1609472 5694880 1611000 5692800 +1609472 5694880 1609808 5694968 1611064 5692984 1611000 5692800 +1611064 5692984 1609600 5694896 1609808 5694968 1611192 5693224 +1609808 5694968 1611312 5693984 1611192 5693224 1609600 5694896 +1609472 5694880 1609600 5694896 1611064 5692984 1611000 5692800 +1609808 5694968 1609600 5694896 1609472 5694880 1609248 5695456 +1609808 5694968 1609600 5694896 1609248 5695456 1609960 5695056 +1609472 5694880 1609264 5695000 1609248 5695456 1609600 5694896 +1609472 5694880 1609392 5694896 1609264 5695000 1609600 5694896 +1609600 5694896 1611064 5692984 1609472 5694880 1609264 5695000 +1609248 5695456 1609808 5694968 1609600 5694896 1609264 5695000 +1611064 5692984 1609472 5694880 1609600 5694896 1611192 5693224 +1609600 5694896 1609248 5695456 1609808 5694968 1611192 5693224 +1609808 5694968 1609656 5694928 1609248 5695456 1609960 5695056 +1609248 5695456 1609656 5694928 1609600 5694896 1609264 5695000 +1609600 5694896 1609472 5694880 1609264 5695000 1609656 5694928 +1609472 5694880 1609392 5694896 1609264 5695000 1609656 5694928 +1609264 5695000 1609248 5695456 1609656 5694928 1609472 5694880 +1609656 5694928 1609808 5694968 1609600 5694896 1609472 5694880 +1609600 5694896 1609656 5694928 1609808 5694968 1611192 5693224 +1609248 5695456 1609808 5694968 1609656 5694928 1609264 5695000 +1609600 5694896 1609712 5694936 1609808 5694968 1611192 5693224 +1609600 5694896 1609712 5694936 1611192 5693224 1611064 5692984 +1609808 5694968 1611312 5693984 1611192 5693224 1609712 5694936 +1611312 5693984 1611408 5693680 1611192 5693224 1609712 5694936 +1609808 5694968 1609960 5695056 1611312 5693984 1609712 5694936 +1611192 5693224 1609600 5694896 1609712 5694936 1611312 5693984 +1609808 5694968 1609712 5694936 1609656 5694928 1609248 5695456 +1609808 5694968 1609712 5694936 1609248 5695456 1609960 5695056 +1609712 5694936 1609600 5694896 1609656 5694928 1609248 5695456 +1609656 5694928 1609264 5695000 1609248 5695456 1609712 5694936 +1609600 5694896 1609656 5694928 1609712 5694936 1611192 5693224 +1609712 5694936 1609248 5695456 1609808 5694968 1611312 5693984 +1609248 5695456 1609808 5695208 1609960 5695056 1609808 5694968 +1609248 5695456 1609808 5695208 1609808 5694968 1609712 5694936 +1609808 5695208 1609960 5695056 1609808 5694968 1609712 5694936 +1609448 5695808 1609808 5695208 1609248 5695456 1609320 5695680 +1609248 5695456 1609264 5695568 1609320 5695680 1609808 5695208 +1609320 5695680 1609448 5695808 1609808 5695208 1609264 5695568 +1609248 5695456 1609808 5695208 1609712 5694936 1609656 5694928 +1609808 5695208 1609808 5694968 1609712 5694936 1609656 5694928 +1609248 5695456 1609808 5695208 1609656 5694928 1609264 5695000 +1609656 5694928 1609472 5694880 1609264 5695000 1609808 5695208 +1609808 5695208 1609712 5694936 1609656 5694928 1609264 5695000 +1609808 5695208 1609448 5695808 1609960 5695056 1609808 5694968 +1609448 5695808 1609960 5695056 1609808 5695208 1609320 5695680 +1609248 5695456 1609264 5695568 1609808 5695208 1609264 5695000 +1609960 5695056 1609808 5695208 1609448 5695808 1610120 5695200 +1609960 5695056 1609808 5694968 1609808 5695208 1610120 5695200 +1609808 5695208 1609320 5695680 1609448 5695808 1610120 5695200 +1609960 5695056 1609808 5695208 1610120 5695200 1610056 5695120 +1609960 5695056 1609808 5694968 1609808 5695208 1610056 5695120 +1609448 5695808 1610248 5695424 1610120 5695200 1609808 5695208 +1609448 5695808 1610248 5695424 1609808 5695208 1609320 5695680 +1609448 5695808 1609688 5695968 1610248 5695424 1609808 5695208 +1609448 5695808 1609688 5695968 1609808 5695208 1609320 5695680 +1609688 5695968 1610280 5695512 1610248 5695424 1609808 5695208 +1609688 5695968 1610296 5695600 1610280 5695512 1609808 5695208 +1609688 5695968 1610280 5695512 1609808 5695208 1609448 5695808 +1610248 5695424 1610120 5695200 1609808 5695208 1610280 5695512 +1609808 5695208 1610248 5695424 1610120 5695200 1610056 5695120 +1610280 5695512 1609912 5695344 1609688 5695968 1610296 5695600 +1610280 5695512 1609808 5695208 1609912 5695344 1610296 5695600 +1609912 5695344 1609808 5695208 1609688 5695968 1610296 5695600 +1609688 5695968 1610288 5695712 1610296 5695600 1609912 5695344 +1609688 5695968 1610288 5695712 1609912 5695344 1609808 5695208 +1609688 5695968 1609880 5696032 1610288 5695712 1609912 5695344 +1609880 5696032 1610232 5695864 1610288 5695712 1609912 5695344 +1609880 5696032 1610064 5696016 1610232 5695864 1609912 5695344 +1609688 5695968 1609880 5696032 1609912 5695344 1609808 5695208 +1610288 5695712 1610296 5695600 1609912 5695344 1610232 5695864 +1609880 5696032 1610232 5695864 1609912 5695344 1609688 5695968 +1610296 5695600 1610280 5695512 1609912 5695344 1610288 5695712 +1609808 5695208 1609912 5695344 1610280 5695512 1610248 5695424 +1609808 5695208 1609688 5695968 1609912 5695344 1610248 5695424 +1609912 5695344 1610296 5695600 1610280 5695512 1610248 5695424 +1609688 5695968 1609912 5695344 1609808 5695208 1609448 5695808 +1609808 5695208 1609320 5695680 1609448 5695808 1609912 5695344 +1609808 5695208 1609264 5695568 1609320 5695680 1609912 5695344 +1609912 5695344 1610248 5695424 1609808 5695208 1609320 5695680 +1609688 5695968 1609880 5696032 1609912 5695344 1609448 5695808 +1609448 5695808 1609688 5695968 1609912 5695344 1609320 5695680 +1609808 5695208 1609912 5695344 1610248 5695424 1610120 5695200 +1609808 5695208 1609320 5695680 1609912 5695344 1610120 5695200 +1609912 5695344 1610280 5695512 1610248 5695424 1610120 5695200 +1609808 5695208 1609912 5695344 1610120 5695200 1610056 5695120 +1609808 5695208 1609320 5695680 1609912 5695344 1610056 5695120 +1609808 5695208 1609912 5695344 1610056 5695120 1609960 5695056 +1609912 5695344 1610248 5695424 1610120 5695200 1610056 5695120 +1610232 5695864 1609960 5695408 1609912 5695344 1609880 5696032 +1610232 5695864 1609960 5695408 1609880 5696032 1610064 5696016 +1609960 5695408 1609912 5695344 1609880 5696032 1610064 5696016 +1609960 5695408 1610288 5695712 1609912 5695344 1609880 5696032 +1610232 5695864 1610288 5695712 1609960 5695408 1610064 5696016 +1609912 5695344 1609960 5695408 1610288 5695712 1610296 5695600 +1609912 5695344 1609880 5696032 1609960 5695408 1610296 5695600 +1609960 5695408 1610232 5695864 1610288 5695712 1610296 5695600 +1609912 5695344 1609688 5695968 1609880 5696032 1609960 5695408 +1609880 5696032 1610064 5696016 1609960 5695408 1609688 5695968 +1609912 5695344 1609688 5695968 1609960 5695408 1610296 5695600 +1609912 5695344 1609448 5695808 1609688 5695968 1609960 5695408 +1609912 5695344 1609448 5695808 1609960 5695408 1610296 5695600 +1609688 5695968 1609880 5696032 1609960 5695408 1609448 5695808 +1609912 5695344 1609960 5695408 1610296 5695600 1610280 5695512 +1609912 5695344 1609960 5695408 1610280 5695512 1610248 5695424 +1609912 5695344 1609448 5695808 1609960 5695408 1610248 5695424 +1609960 5695408 1610288 5695712 1610296 5695600 1610280 5695512 +1609960 5695408 1610296 5695600 1610280 5695512 1610248 5695424 +1609912 5695344 1609960 5695408 1610248 5695424 1610120 5695200 +1609960 5695408 1610280 5695512 1610248 5695424 1610120 5695200 +1609912 5695344 1609448 5695808 1609960 5695408 1610120 5695200 +1610232 5695864 1609960 5695408 1610064 5696016 1610208 5695968 +1609912 5695344 1609320 5695680 1609448 5695808 1609960 5695408 +1609912 5695344 1609960 5695408 1610120 5695200 1610056 5695120 +1610064 5696016 1610008 5695584 1609960 5695408 1609880 5696032 +1609960 5695408 1609688 5695968 1609880 5696032 1610008 5695584 +1609880 5696032 1610064 5696016 1610008 5695584 1609688 5695968 +1610008 5695584 1610232 5695864 1609960 5695408 1609688 5695968 +1609960 5695408 1610008 5695584 1610232 5695864 1610288 5695712 +1609960 5695408 1610008 5695584 1610288 5695712 1610296 5695600 +1609960 5695408 1609688 5695968 1610008 5695584 1610296 5695600 +1610008 5695584 1610232 5695864 1610288 5695712 1610296 5695600 +1610008 5695584 1610064 5696016 1610232 5695864 1610288 5695712 +1610064 5696016 1610232 5695864 1610008 5695584 1609880 5696032 +1609960 5695408 1610008 5695584 1610296 5695600 1610280 5695512 +1610008 5695584 1610288 5695712 1610296 5695600 1610280 5695512 +1609960 5695408 1609688 5695968 1610008 5695584 1610280 5695512 +1609960 5695408 1609448 5695808 1609688 5695968 1610008 5695584 +1609688 5695968 1609880 5696032 1610008 5695584 1609448 5695808 +1609960 5695408 1609912 5695344 1609448 5695808 1610008 5695584 +1609960 5695408 1609448 5695808 1610008 5695584 1610280 5695512 +1609960 5695408 1610008 5695584 1610280 5695512 1610248 5695424 +1609960 5695408 1610008 5695584 1610248 5695424 1610120 5695200 +1609960 5695408 1609448 5695808 1610008 5695584 1610248 5695424 +1610008 5695584 1610296 5695600 1610280 5695512 1610248 5695424 +1610232 5695864 1610008 5695584 1610064 5696016 1610208 5695968 +1609880 5696032 1609992 5695696 1610008 5695584 1609688 5695968 +1610008 5695584 1609448 5695808 1609688 5695968 1609992 5695696 +1609688 5695968 1609880 5696032 1609992 5695696 1609448 5695808 +1609992 5695696 1610064 5696016 1610008 5695584 1609448 5695808 +1610008 5695584 1609992 5695696 1610064 5696016 1610232 5695864 +1610008 5695584 1609992 5695696 1610232 5695864 1610288 5695712 +1610008 5695584 1609992 5695696 1610288 5695712 1610296 5695600 +1610008 5695584 1609448 5695808 1609992 5695696 1610288 5695712 +1609992 5695696 1610064 5696016 1610232 5695864 1610288 5695712 +1609992 5695696 1609880 5696032 1610064 5696016 1610232 5695864 +1609880 5696032 1610064 5696016 1609992 5695696 1609688 5695968 +1610008 5695584 1609960 5695408 1609448 5695808 1609992 5695696 +1610064 5696016 1610208 5695968 1610232 5695864 1609992 5695696 +1609688 5695968 1609968 5695728 1609992 5695696 1609448 5695808 +1609992 5695696 1610008 5695584 1609448 5695808 1609968 5695728 +1609448 5695808 1609688 5695968 1609968 5695728 1610008 5695584 +1609968 5695728 1609880 5696032 1609992 5695696 1610008 5695584 +1609992 5695696 1609968 5695728 1609880 5696032 1610064 5696016 +1609992 5695696 1609968 5695728 1610064 5696016 1610232 5695864 +1609992 5695696 1609968 5695728 1610232 5695864 1610288 5695712 +1609992 5695696 1610008 5695584 1609968 5695728 1610232 5695864 +1609968 5695728 1609880 5696032 1610064 5696016 1610232 5695864 +1609968 5695728 1609688 5695968 1609880 5696032 1610064 5696016 +1609688 5695968 1609880 5696032 1609968 5695728 1609448 5695808 +1610008 5695584 1609960 5695408 1609448 5695808 1609968 5695728 +1609448 5695808 1609688 5695968 1609968 5695728 1609960 5695408 +1610008 5695584 1609960 5695408 1609968 5695728 1609992 5695696 +1609960 5695408 1609912 5695344 1609448 5695808 1609968 5695728 +1610064 5696016 1610208 5695968 1610232 5695864 1609968 5695728 +1609968 5695728 1609920 5695792 1609880 5696032 1610064 5696016 +1609968 5695728 1609920 5695792 1610064 5696016 1610232 5695864 +1609968 5695728 1609688 5695968 1609920 5695792 1610064 5696016 +1609688 5695968 1609920 5695792 1609968 5695728 1609448 5695808 +1609968 5695728 1609960 5695408 1609448 5695808 1609920 5695792 +1609960 5695408 1609912 5695344 1609448 5695808 1609920 5695792 +1609920 5695792 1610064 5696016 1609968 5695728 1609960 5695408 +1609448 5695808 1609688 5695968 1609920 5695792 1609960 5695408 +1609920 5695792 1609688 5695968 1609880 5696032 1610064 5696016 +1609688 5695968 1609880 5696032 1609920 5695792 1609448 5695808 +1609968 5695728 1610008 5695584 1609960 5695408 1609920 5695792 +1609960 5695408 1609448 5695808 1609920 5695792 1610008 5695584 +1609968 5695728 1609992 5695696 1610008 5695584 1609920 5695792 +1609968 5695728 1610008 5695584 1609920 5695792 1610064 5696016 +1609448 5695808 1609784 5695824 1609920 5695792 1609960 5695408 +1609920 5695792 1610008 5695584 1609960 5695408 1609784 5695824 +1609448 5695808 1609784 5695824 1609960 5695408 1609912 5695344 +1609960 5695408 1609912 5695344 1609784 5695824 1610008 5695584 +1609784 5695824 1609688 5695968 1609920 5695792 1610008 5695584 +1609920 5695792 1609784 5695824 1609688 5695968 1609880 5696032 +1609920 5695792 1609784 5695824 1609880 5696032 1610064 5696016 +1609920 5695792 1610008 5695584 1609784 5695824 1609880 5696032 +1609784 5695824 1609448 5695808 1609688 5695968 1609880 5696032 +1609448 5695808 1609688 5695968 1609784 5695824 1609912 5695344 +1609920 5695792 1609968 5695728 1610008 5695584 1609784 5695824 +1610008 5695584 1609960 5695408 1609784 5695824 1609968 5695728 +1609968 5695728 1609992 5695696 1610008 5695584 1609784 5695824 +1609920 5695792 1609968 5695728 1609784 5695824 1609880 5696032 +1609448 5695808 1609784 5695824 1609912 5695344 1609320 5695680 +1609912 5695344 1609720 5695792 1609784 5695824 1609960 5695408 +1609784 5695824 1610008 5695584 1609960 5695408 1609720 5695792 +1609784 5695824 1609968 5695728 1610008 5695584 1609720 5695792 +1609968 5695728 1609992 5695696 1610008 5695584 1609720 5695792 +1609960 5695408 1609912 5695344 1609720 5695792 1610008 5695584 +1610008 5695584 1609960 5695408 1609720 5695792 1609968 5695728 +1609720 5695792 1609448 5695808 1609784 5695824 1609968 5695728 +1609784 5695824 1609720 5695792 1609448 5695808 1609688 5695968 +1609784 5695824 1609720 5695792 1609688 5695968 1609880 5696032 +1609784 5695824 1609968 5695728 1609720 5695792 1609688 5695968 +1609720 5695792 1609912 5695344 1609448 5695808 1609688 5695968 +1609912 5695344 1609448 5695808 1609720 5695792 1609960 5695408 +1609784 5695824 1609920 5695792 1609968 5695728 1609720 5695792 +1609968 5695728 1610008 5695584 1609720 5695792 1609920 5695792 +1609784 5695824 1609920 5695792 1609720 5695792 1609688 5695968 +1609448 5695808 1609720 5695792 1609912 5695344 1609320 5695680 +1609912 5695344 1609808 5695208 1609320 5695680 1609720 5695792 +1609808 5695208 1609264 5695568 1609320 5695680 1609720 5695792 +1609448 5695808 1609688 5695968 1609720 5695792 1609320 5695680 +1609720 5695792 1609960 5695408 1609912 5695344 1609808 5695208 +1609320 5695680 1609448 5695808 1609720 5695792 1609808 5695208 +1609320 5695680 1609464 5695600 1609808 5695208 1609264 5695568 +1609808 5695208 1609248 5695456 1609264 5695568 1609464 5695600 +1609264 5695568 1609320 5695680 1609464 5695600 1609248 5695456 +1609808 5695208 1609464 5695600 1609720 5695792 1609912 5695344 +1609808 5695208 1609264 5695000 1609248 5695456 1609464 5695600 +1609464 5695600 1609320 5695680 1609720 5695792 1609912 5695344 +1609720 5695792 1609960 5695408 1609912 5695344 1609464 5695600 +1609320 5695680 1609720 5695792 1609464 5695600 1609264 5695568 +1609464 5695600 1609912 5695344 1609808 5695208 1609248 5695456 +1609720 5695792 1609464 5695600 1609320 5695680 1609448 5695808 +1609720 5695792 1609464 5695600 1609448 5695808 1609688 5695968 +1609720 5695792 1609912 5695344 1609464 5695600 1609448 5695808 +1609464 5695600 1609264 5695568 1609320 5695680 1609448 5695808 +1609464 5695600 1609408 5695536 1609248 5695456 1609264 5695568 +1609464 5695600 1609408 5695536 1609264 5695568 1609320 5695680 +1609408 5695536 1609248 5695456 1609264 5695568 1609320 5695680 +1609248 5695456 1609408 5695536 1609808 5695208 1609264 5695000 +1609808 5695208 1609656 5694928 1609264 5695000 1609408 5695536 +1609464 5695600 1609408 5695536 1609320 5695680 1609448 5695808 +1609464 5695600 1609808 5695208 1609408 5695536 1609320 5695680 +1609808 5695208 1609408 5695536 1609464 5695600 1609912 5695344 +1609408 5695536 1609264 5695000 1609248 5695456 1609264 5695568 +1609408 5695536 1609464 5695600 1609808 5695208 1609264 5695000 +1609264 5695000 1609416 5695400 1609808 5695208 1609656 5694928 +1609264 5695000 1609416 5695400 1609656 5694928 1609472 5694880 +1609656 5694928 1609600 5694896 1609472 5694880 1609416 5695400 +1609264 5695000 1609416 5695400 1609472 5694880 1609392 5694896 +1609808 5695208 1609712 5694936 1609656 5694928 1609416 5695400 +1609416 5695400 1609808 5695208 1609656 5694928 1609472 5694880 +1609408 5695536 1609416 5695400 1609264 5695000 1609248 5695456 +1609408 5695536 1609416 5695400 1609248 5695456 1609264 5695568 +1609408 5695536 1609808 5695208 1609416 5695400 1609248 5695456 +1609808 5695208 1609416 5695400 1609408 5695536 1609464 5695600 +1609808 5695208 1609416 5695400 1609464 5695600 1609912 5695344 +1609464 5695600 1609720 5695792 1609912 5695344 1609416 5695400 +1609416 5695400 1609248 5695456 1609408 5695536 1609464 5695600 +1609416 5695400 1609408 5695536 1609464 5695600 1609912 5695344 +1609264 5695000 1609248 5695456 1609416 5695400 1609472 5694880 +1609416 5695400 1609912 5695344 1609808 5695208 1609656 5694928 +1609656 5694928 1609432 5695384 1609808 5695208 1609712 5694936 +1609416 5695400 1609432 5695384 1609656 5694928 1609472 5694880 +1609656 5694928 1609600 5694896 1609472 5694880 1609432 5695384 +1609416 5695400 1609432 5695384 1609472 5694880 1609264 5695000 +1609472 5694880 1609392 5694896 1609264 5695000 1609432 5695384 +1609264 5695000 1609416 5695400 1609432 5695384 1609392 5694896 +1609432 5695384 1609656 5694928 1609472 5694880 1609392 5694896 +1609416 5695400 1609432 5695384 1609264 5695000 1609248 5695456 +1609432 5695384 1609392 5694896 1609264 5695000 1609248 5695456 +1609416 5695400 1609432 5695384 1609248 5695456 1609408 5695536 +1609416 5695400 1609808 5695208 1609432 5695384 1609248 5695456 +1609808 5695208 1609432 5695384 1609416 5695400 1609912 5695344 +1609416 5695400 1609464 5695600 1609912 5695344 1609432 5695384 +1609464 5695600 1609720 5695792 1609912 5695344 1609432 5695384 +1609416 5695400 1609408 5695536 1609464 5695600 1609432 5695384 +1609464 5695600 1609912 5695344 1609432 5695384 1609408 5695536 +1609432 5695384 1609248 5695456 1609416 5695400 1609408 5695536 +1609912 5695344 1609808 5695208 1609432 5695384 1609464 5695600 +1609432 5695384 1609808 5695208 1609656 5694928 1609472 5694880 +1609808 5695208 1609656 5694928 1609432 5695384 1609912 5695344 +1609472 5694880 1609504 5695168 1609656 5694928 1609600 5694896 +1609432 5695384 1609504 5695168 1609472 5694880 1609392 5694896 +1609432 5695384 1609504 5695168 1609392 5694896 1609264 5695000 +1609432 5695384 1609504 5695168 1609264 5695000 1609248 5695456 +1609504 5695168 1609472 5694880 1609392 5694896 1609264 5695000 +1609656 5694928 1609504 5695168 1609432 5695384 1609808 5695208 +1609656 5694928 1609504 5695168 1609808 5695208 1609712 5694936 +1609808 5695208 1609808 5694968 1609712 5694936 1609504 5695168 +1609504 5695168 1609432 5695384 1609808 5695208 1609712 5694936 +1609432 5695384 1609912 5695344 1609808 5695208 1609504 5695168 +1609432 5695384 1609808 5695208 1609504 5695168 1609264 5695000 +1609472 5694880 1609392 5694896 1609504 5695168 1609600 5694896 +1609504 5695168 1609712 5694936 1609656 5694928 1609600 5694896 +1609712 5694936 1609576 5695112 1609808 5695208 1609808 5694968 +1609808 5695208 1609960 5695056 1609808 5694968 1609576 5695112 +1609504 5695168 1609576 5695112 1609712 5694936 1609656 5694928 +1609808 5695208 1609576 5695112 1609504 5695168 1609432 5695384 +1609504 5695168 1609808 5695208 1609576 5695112 1609656 5694928 +1609504 5695168 1609576 5695112 1609656 5694928 1609600 5694896 +1609504 5695168 1609576 5695112 1609600 5694896 1609472 5694880 +1609576 5695112 1609712 5694936 1609656 5694928 1609600 5694896 +1609504 5695168 1609576 5695112 1609472 5694880 1609392 5694896 +1609576 5695112 1609600 5694896 1609472 5694880 1609392 5694896 +1609504 5695168 1609576 5695112 1609392 5694896 1609264 5695000 +1609504 5695168 1609808 5695208 1609576 5695112 1609392 5694896 +1609576 5695112 1609656 5694928 1609600 5694896 1609472 5694880 +1609712 5694936 1609656 5694928 1609576 5695112 1609808 5694968 +1609576 5695112 1609504 5695168 1609808 5695208 1609808 5694968 +1609808 5694968 1609696 5695136 1609808 5695208 1609960 5695056 +1609576 5695112 1609696 5695136 1609808 5694968 1609712 5694936 +1609576 5695112 1609696 5695136 1609712 5694936 1609656 5694928 +1609696 5695136 1609808 5694968 1609712 5694936 1609656 5694928 +1609576 5695112 1609696 5695136 1609656 5694928 1609600 5694896 +1609576 5695112 1609808 5695208 1609696 5695136 1609656 5694928 +1609808 5695208 1609696 5695136 1609576 5695112 1609504 5695168 +1609808 5695208 1609696 5695136 1609504 5695168 1609432 5695384 +1609808 5695208 1609696 5695136 1609432 5695384 1609912 5695344 +1609696 5695136 1609656 5694928 1609576 5695112 1609504 5695168 +1609696 5695136 1609576 5695112 1609504 5695168 1609432 5695384 +1609696 5695136 1609808 5695208 1609808 5694968 1609712 5694936 +1609808 5695208 1609808 5694968 1609696 5695136 1609432 5695384 +1602160 5695928 1608480 5692440 1608392 5689208 1602112 5695896 +1608392 5689208 1608288 5689072 1602112 5695896 1608480 5692440 +1602112 5695896 1602160 5695928 1608480 5692440 1608288 5689072 +1608392 5689208 1608480 5692440 1609264 5695000 1608616 5689368 +1609264 5695000 1608736 5689448 1608616 5689368 1608480 5692440 +1608616 5689368 1608392 5689208 1608480 5692440 1608736 5689448 +1609264 5695000 1608480 5692440 1602160 5695928 1602200 5696008 +1609264 5695000 1608480 5692440 1602200 5696008 1602224 5696056 +1609264 5695000 1608480 5692440 1602224 5696056 1609248 5695456 +1608480 5692440 1602160 5695928 1602200 5696008 1602224 5696056 +1609264 5695000 1609392 5694896 1608736 5689448 1608480 5692440 +1608736 5689448 1608616 5689368 1608480 5692440 1609392 5694896 +1608288 5689072 1602016 5695848 1602112 5695896 1608480 5692440 +1608288 5689072 1608240 5688912 1602016 5695848 1608480 5692440 +1608288 5689072 1602016 5695848 1608480 5692440 1608392 5689208 +1602112 5695896 1602160 5695928 1608480 5692440 1602016 5695848 +1608480 5692440 1602224 5696056 1609264 5695000 1609392 5694896 +1602160 5695928 1602200 5696008 1608480 5692440 1602112 5695896 +1608480 5692440 1608616 5689368 1608392 5689208 1608288 5689072 +1609392 5694896 1608840 5689480 1608736 5689448 1608480 5692440 +1608736 5689448 1608616 5689368 1608480 5692440 1608840 5689480 +1609392 5694896 1608840 5689480 1608480 5692440 1609264 5695000 +1609392 5694896 1610992 5692696 1608840 5689480 1608480 5692440 +1610992 5692696 1611024 5692552 1608840 5689480 1608480 5692440 +1609392 5694896 1610992 5692696 1608480 5692440 1609264 5695000 +1610992 5692696 1611024 5692552 1608480 5692440 1609392 5694896 +1609392 5694896 1611000 5692800 1610992 5692696 1608480 5692440 +1609392 5694896 1611000 5692800 1608480 5692440 1609264 5695000 +1609392 5694896 1609472 5694880 1611000 5692800 1608480 5692440 +1609392 5694896 1609472 5694880 1608480 5692440 1609264 5695000 +1610992 5692696 1611024 5692552 1608480 5692440 1611000 5692800 +1611000 5692800 1610992 5692696 1608480 5692440 1609472 5694880 +1608840 5689480 1608736 5689448 1608480 5692440 1611024 5692552 +1611024 5692552 1609280 5689560 1608840 5689480 1608480 5692440 +1611024 5692552 1609400 5689560 1609280 5689560 1608480 5692440 +1611024 5692552 1609400 5689560 1608480 5692440 1610992 5692696 +1609280 5689560 1609232 5689536 1608840 5689480 1608480 5692440 +1608840 5689480 1608736 5689448 1608480 5692440 1609280 5689560 +1609280 5689560 1608840 5689480 1608480 5692440 1609400 5689560 +1611024 5692552 1611112 5692400 1609400 5689560 1608480 5692440 +1609400 5689560 1609280 5689560 1608480 5692440 1611112 5692400 +1611024 5692552 1611112 5692400 1608480 5692440 1610992 5692696 +1611112 5692400 1611168 5692328 1609400 5689560 1608480 5692440 +1609400 5689560 1609280 5689560 1608480 5692440 1611168 5692328 +1611112 5692400 1611168 5692328 1608480 5692440 1611024 5692552 +1611168 5692328 1609672 5689488 1609400 5689560 1608480 5692440 +1609472 5694880 1611064 5692984 1611000 5692800 1608480 5692440 +1609472 5694880 1611064 5692984 1608480 5692440 1609392 5694896 +1609472 5694880 1609600 5694896 1611064 5692984 1608480 5692440 +1611000 5692800 1610992 5692696 1608480 5692440 1611064 5692984 +1602016 5695848 1608432 5692384 1608288 5689072 1608240 5688912 +1608288 5689072 1608432 5692384 1608480 5692440 1608392 5689208 +1608288 5689072 1602016 5695848 1608432 5692384 1608392 5689208 +1608480 5692440 1608432 5692384 1602016 5695848 1602112 5695896 +1608480 5692440 1608432 5692384 1602112 5695896 1602160 5695928 +1608432 5692384 1608288 5689072 1602016 5695848 1602112 5695896 +1608432 5692384 1602016 5695848 1602112 5695896 1602160 5695928 +1608480 5692440 1608432 5692384 1602160 5695928 1602200 5696008 +1608432 5692384 1602112 5695896 1602160 5695928 1602200 5696008 +1608480 5692440 1608432 5692384 1602200 5696008 1602224 5696056 +1608480 5692440 1608432 5692384 1602224 5696056 1609264 5695000 +1602224 5696056 1609248 5695456 1609264 5695000 1608432 5692384 +1608432 5692384 1602200 5696008 1602224 5696056 1609264 5695000 +1608480 5692440 1608432 5692384 1609264 5695000 1609392 5694896 +1608432 5692384 1602160 5695928 1602200 5696008 1602224 5696056 +1608432 5692384 1609264 5695000 1608480 5692440 1608392 5689208 +1608480 5692440 1608616 5689368 1608392 5689208 1608432 5692384 +1608392 5689208 1608288 5689072 1608432 5692384 1608616 5689368 +1608480 5692440 1608736 5689448 1608616 5689368 1608432 5692384 +1608480 5692440 1608840 5689480 1608736 5689448 1608432 5692384 +1608736 5689448 1608616 5689368 1608432 5692384 1608840 5689480 +1608480 5692440 1608840 5689480 1608432 5692384 1609264 5695000 +1608616 5689368 1608392 5689208 1608432 5692384 1608736 5689448 +1608480 5692440 1609280 5689560 1608840 5689480 1608432 5692384 +1608840 5689480 1608736 5689448 1608432 5692384 1609280 5689560 +1609280 5689560 1609232 5689536 1608840 5689480 1608432 5692384 +1608480 5692440 1609280 5689560 1608432 5692384 1609264 5695000 +1608480 5692440 1609400 5689560 1609280 5689560 1608432 5692384 +1608480 5692440 1611168 5692328 1609400 5689560 1608432 5692384 +1608480 5692440 1611168 5692328 1608432 5692384 1609264 5695000 +1609280 5689560 1608840 5689480 1608432 5692384 1609400 5689560 +1609400 5689560 1609280 5689560 1608432 5692384 1611168 5692328 +1608480 5692440 1611112 5692400 1611168 5692328 1608432 5692384 +1611168 5692328 1609672 5689488 1609400 5689560 1608432 5692384 +1602016 5695848 1608392 5692304 1608288 5689072 1608240 5688912 +1608432 5692384 1608392 5692304 1602016 5695848 1602112 5695896 +1608432 5692384 1608288 5689072 1608392 5692304 1602112 5695896 +1608288 5689072 1608392 5692304 1608432 5692384 1608392 5689208 +1608432 5692384 1608616 5689368 1608392 5689208 1608392 5692304 +1608392 5692304 1602112 5695896 1608432 5692384 1608616 5689368 +1608392 5689208 1608288 5689072 1608392 5692304 1608616 5689368 +1608432 5692384 1608392 5692304 1602112 5695896 1602160 5695928 +1608432 5692384 1608392 5692304 1602160 5695928 1602200 5696008 +1608392 5692304 1602016 5695848 1602112 5695896 1602160 5695928 +1608432 5692384 1608616 5689368 1608392 5692304 1602160 5695928 +1608432 5692384 1608736 5689448 1608616 5689368 1608392 5692304 +1608616 5689368 1608392 5689208 1608392 5692304 1608736 5689448 +1608432 5692384 1608840 5689480 1608736 5689448 1608392 5692304 +1608432 5692384 1609280 5689560 1608840 5689480 1608392 5692304 +1609280 5689560 1609232 5689536 1608840 5689480 1608392 5692304 +1608840 5689480 1608736 5689448 1608392 5692304 1609280 5689560 +1608432 5692384 1609280 5689560 1608392 5692304 1602160 5695928 +1608736 5689448 1608616 5689368 1608392 5692304 1608840 5689480 +1608392 5692304 1608288 5689072 1602016 5695848 1602112 5695896 +1608288 5689072 1602016 5695848 1608392 5692304 1608392 5689208 +1608432 5692384 1609400 5689560 1609280 5689560 1608392 5692304 +1609280 5689560 1608840 5689480 1608392 5692304 1609400 5689560 +1608432 5692384 1609400 5689560 1608392 5692304 1602160 5695928 +1608432 5692384 1611168 5692328 1609400 5689560 1608392 5692304 +1608432 5692384 1608480 5692440 1611168 5692328 1608392 5692304 +1608432 5692384 1608480 5692440 1608392 5692304 1602160 5695928 +1609400 5689560 1609280 5689560 1608392 5692304 1611168 5692328 +1611168 5692328 1609400 5689560 1608392 5692304 1608480 5692440 +1608480 5692440 1611112 5692400 1611168 5692328 1608392 5692304 +1608480 5692440 1611112 5692400 1608392 5692304 1608432 5692384 +1611168 5692328 1609400 5689560 1608392 5692304 1611112 5692400 +1608480 5692440 1611024 5692552 1611112 5692400 1608392 5692304 +1611168 5692328 1609672 5689488 1609400 5689560 1608392 5692304 +1602016 5695848 1608376 5692296 1608288 5689072 1608240 5688912 +1608392 5692304 1608376 5692296 1602016 5695848 1602112 5695896 +1608392 5692304 1608376 5692296 1602112 5695896 1602160 5695928 +1608392 5692304 1608376 5692296 1602160 5695928 1608432 5692384 +1602160 5695928 1602200 5696008 1608432 5692384 1608376 5692296 +1608376 5692296 1602112 5695896 1602160 5695928 1608432 5692384 +1608376 5692296 1602016 5695848 1602112 5695896 1602160 5695928 +1608392 5692304 1608288 5689072 1608376 5692296 1608432 5692384 +1608288 5689072 1608376 5692296 1608392 5692304 1608392 5689208 +1608392 5692304 1608616 5689368 1608392 5689208 1608376 5692296 +1608392 5692304 1608736 5689448 1608616 5689368 1608376 5692296 +1608616 5689368 1608392 5689208 1608376 5692296 1608736 5689448 +1608392 5692304 1608840 5689480 1608736 5689448 1608376 5692296 +1608736 5689448 1608616 5689368 1608376 5692296 1608840 5689480 +1608392 5692304 1609280 5689560 1608840 5689480 1608376 5692296 +1608392 5692304 1609400 5689560 1609280 5689560 1608376 5692296 +1609280 5689560 1609232 5689536 1608840 5689480 1608376 5692296 +1608840 5689480 1608736 5689448 1608376 5692296 1609280 5689560 +1608376 5692296 1608432 5692384 1608392 5692304 1609280 5689560 +1608392 5689208 1608288 5689072 1608376 5692296 1608616 5689368 +1608376 5692296 1608288 5689072 1602016 5695848 1602112 5695896 +1608288 5689072 1602016 5695848 1608376 5692296 1608392 5689208 +1608392 5692304 1608416 5692240 1609400 5689560 1609280 5689560 +1608392 5692304 1608416 5692240 1609280 5689560 1608376 5692296 +1609280 5689560 1608840 5689480 1608376 5692296 1608416 5692240 +1608376 5692296 1608392 5692304 1608416 5692240 1608840 5689480 +1609280 5689560 1609232 5689536 1608840 5689480 1608416 5692240 +1608840 5689480 1608736 5689448 1608376 5692296 1608416 5692240 +1608736 5689448 1608616 5689368 1608376 5692296 1608416 5692240 +1608376 5692296 1608392 5692304 1608416 5692240 1608616 5689368 +1608840 5689480 1608736 5689448 1608416 5692240 1609280 5689560 +1608616 5689368 1608392 5689208 1608376 5692296 1608416 5692240 +1608616 5689368 1608392 5689208 1608416 5692240 1608736 5689448 +1608376 5692296 1608392 5692304 1608416 5692240 1608392 5689208 +1608736 5689448 1608616 5689368 1608416 5692240 1608840 5689480 +1608392 5689208 1608288 5689072 1608376 5692296 1608416 5692240 +1608416 5692240 1611168 5692328 1609400 5689560 1609280 5689560 +1608392 5692304 1611168 5692328 1608416 5692240 1608376 5692296 +1608416 5692240 1609400 5689560 1609280 5689560 1608840 5689480 +1611168 5692328 1608416 5692240 1608392 5692304 1611112 5692400 +1611168 5692328 1609400 5689560 1608416 5692240 1611112 5692400 +1608416 5692240 1608376 5692296 1608392 5692304 1611112 5692400 +1608392 5692304 1608480 5692440 1611112 5692400 1608416 5692240 +1608392 5692304 1608432 5692384 1608480 5692440 1608416 5692240 +1608392 5692304 1608432 5692384 1608416 5692240 1608376 5692296 +1611112 5692400 1611168 5692328 1608416 5692240 1608480 5692440 +1608480 5692440 1611024 5692552 1611112 5692400 1608416 5692240 +1608480 5692440 1610992 5692696 1611024 5692552 1608416 5692240 +1611112 5692400 1611168 5692328 1608416 5692240 1611024 5692552 +1608480 5692440 1611024 5692552 1608416 5692240 1608432 5692384 +1609400 5689560 1608416 5692240 1611168 5692328 1609672 5689488 +1608416 5692240 1608480 5692200 1609400 5689560 1609280 5689560 +1611168 5692328 1608480 5692200 1608416 5692240 1611112 5692400 +1608416 5692240 1611112 5692400 1608480 5692200 1609280 5689560 +1608480 5692200 1611168 5692328 1609400 5689560 1609280 5689560 +1611168 5692328 1609400 5689560 1608480 5692200 1611112 5692400 +1608416 5692240 1608480 5692200 1609280 5689560 1608840 5689480 +1609280 5689560 1609232 5689536 1608840 5689480 1608480 5692200 +1608416 5692240 1608480 5692200 1608840 5689480 1608736 5689448 +1608416 5692240 1608480 5692200 1608736 5689448 1608616 5689368 +1608416 5692240 1608480 5692200 1608616 5689368 1608392 5689208 +1608480 5692200 1608840 5689480 1608736 5689448 1608616 5689368 +1608480 5692200 1609400 5689560 1609280 5689560 1608840 5689480 +1608416 5692240 1611112 5692400 1608480 5692200 1608616 5689368 +1608480 5692200 1609280 5689560 1608840 5689480 1608736 5689448 +1608416 5692240 1611024 5692552 1611112 5692400 1608480 5692200 +1611112 5692400 1611168 5692328 1608480 5692200 1611024 5692552 +1608416 5692240 1611024 5692552 1608480 5692200 1608616 5689368 +1608416 5692240 1608480 5692440 1611024 5692552 1608480 5692200 +1608480 5692440 1610992 5692696 1611024 5692552 1608480 5692200 +1608416 5692240 1608480 5692440 1608480 5692200 1608616 5689368 +1611024 5692552 1611112 5692400 1608480 5692200 1608480 5692440 +1608416 5692240 1608432 5692384 1608480 5692440 1608480 5692200 +1608416 5692240 1608392 5692304 1608432 5692384 1608480 5692200 +1608416 5692240 1608432 5692384 1608480 5692200 1608616 5689368 +1608480 5692440 1611024 5692552 1608480 5692200 1608432 5692384 +1609400 5689560 1608480 5692200 1611168 5692328 1609672 5689488 +1611024 5692552 1608616 5692312 1608480 5692440 1610992 5692696 +1611024 5692552 1608480 5692200 1608616 5692312 1610992 5692696 +1608616 5692312 1608480 5692200 1608480 5692440 1610992 5692696 +1608480 5692440 1611000 5692800 1610992 5692696 1608616 5692312 +1610992 5692696 1611024 5692552 1608616 5692312 1611000 5692800 +1608480 5692440 1611000 5692800 1608616 5692312 1608480 5692200 +1608480 5692440 1611064 5692984 1611000 5692800 1608616 5692312 +1608480 5692440 1611064 5692984 1608616 5692312 1608480 5692200 +1611000 5692800 1610992 5692696 1608616 5692312 1611064 5692984 +1608480 5692200 1608616 5692312 1611024 5692552 1611112 5692400 +1608480 5692200 1608616 5692312 1611112 5692400 1611168 5692328 +1608480 5692200 1608480 5692440 1608616 5692312 1611168 5692328 +1608480 5692200 1608616 5692312 1611168 5692328 1609400 5689560 +1608616 5692312 1611112 5692400 1611168 5692328 1609400 5689560 +1608480 5692200 1608616 5692312 1609400 5689560 1609280 5689560 +1608480 5692200 1608480 5692440 1608616 5692312 1609400 5689560 +1608616 5692312 1610992 5692696 1611024 5692552 1611112 5692400 +1608616 5692312 1611024 5692552 1611112 5692400 1611168 5692328 +1608480 5692440 1608616 5692312 1608480 5692200 1608432 5692384 +1608616 5692312 1609400 5689560 1608480 5692200 1608432 5692384 +1608480 5692440 1611064 5692984 1608616 5692312 1608432 5692384 +1608480 5692200 1608416 5692240 1608432 5692384 1608616 5692312 +1611168 5692328 1609672 5689488 1609400 5689560 1608616 5692312 +1608480 5692440 1609472 5694880 1611064 5692984 1608616 5692312 +1608480 5692440 1609392 5694896 1609472 5694880 1608616 5692312 +1609472 5694880 1609600 5694896 1611064 5692984 1608616 5692312 +1608480 5692440 1609472 5694880 1608616 5692312 1608432 5692384 +1611064 5692984 1611000 5692800 1608616 5692312 1609472 5694880 +1611064 5692984 1608680 5692416 1609472 5694880 1609600 5694896 +1608616 5692312 1608680 5692416 1611064 5692984 1611000 5692800 +1608616 5692312 1609472 5694880 1608680 5692416 1611000 5692800 +1608680 5692416 1609472 5694880 1611064 5692984 1611000 5692800 +1608616 5692312 1608680 5692416 1611000 5692800 1610992 5692696 +1608616 5692312 1608680 5692416 1610992 5692696 1611024 5692552 +1608616 5692312 1608680 5692416 1611024 5692552 1611112 5692400 +1608680 5692416 1610992 5692696 1611024 5692552 1611112 5692400 +1608616 5692312 1609472 5694880 1608680 5692416 1611112 5692400 +1608680 5692416 1611000 5692800 1610992 5692696 1611024 5692552 +1608680 5692416 1611064 5692984 1611000 5692800 1610992 5692696 +1608616 5692312 1608680 5692416 1611112 5692400 1611168 5692328 +1609472 5694880 1608680 5692416 1608616 5692312 1608480 5692440 +1609472 5694880 1608680 5692416 1608480 5692440 1609392 5694896 +1608480 5692440 1609264 5695000 1609392 5694896 1608680 5692416 +1608680 5692416 1611112 5692400 1608616 5692312 1608480 5692440 +1608616 5692312 1608432 5692384 1608480 5692440 1608680 5692416 +1609472 5694880 1611064 5692984 1608680 5692416 1609392 5694896 +1608680 5692416 1608616 5692312 1608480 5692440 1609392 5694896 +1609392 5694896 1608680 5692480 1608480 5692440 1609264 5695000 +1608680 5692416 1608680 5692480 1609392 5694896 1609472 5694880 +1608480 5692440 1608432 5692384 1609264 5695000 1608680 5692480 +1608680 5692416 1608480 5692440 1608680 5692480 1609472 5694880 +1608680 5692416 1608680 5692480 1609472 5694880 1611064 5692984 +1608680 5692480 1609392 5694896 1609472 5694880 1611064 5692984 +1609472 5694880 1609600 5694896 1611064 5692984 1608680 5692480 +1609472 5694880 1609600 5694896 1608680 5692480 1609392 5694896 +1609600 5694896 1611192 5693224 1611064 5692984 1608680 5692480 +1608680 5692416 1608680 5692480 1611064 5692984 1611000 5692800 +1608680 5692416 1608480 5692440 1608680 5692480 1611000 5692800 +1611064 5692984 1611000 5692800 1608680 5692480 1609600 5694896 +1609392 5694896 1609472 5694880 1608680 5692480 1609264 5695000 +1608680 5692480 1608680 5692416 1608480 5692440 1609264 5695000 +1608680 5692416 1608680 5692480 1611000 5692800 1610992 5692696 +1608680 5692480 1611064 5692984 1611000 5692800 1610992 5692696 +1608680 5692416 1608480 5692440 1608680 5692480 1610992 5692696 +1608680 5692416 1608680 5692480 1610992 5692696 1611024 5692552 +1608480 5692440 1608680 5692480 1608680 5692416 1608616 5692312 +1609472 5694880 1608728 5692608 1608680 5692480 1609392 5694896 +1608680 5692480 1608728 5692608 1609600 5694896 1611064 5692984 +1609600 5694896 1611192 5693224 1611064 5692984 1608728 5692608 +1608680 5692480 1608728 5692608 1611064 5692984 1611000 5692800 +1608728 5692608 1609600 5694896 1611064 5692984 1611000 5692800 +1608680 5692480 1608728 5692608 1611000 5692800 1610992 5692696 +1608728 5692608 1611064 5692984 1611000 5692800 1610992 5692696 +1608680 5692480 1609264 5695000 1609392 5694896 1608728 5692608 +1608680 5692480 1608480 5692440 1609264 5695000 1608728 5692608 +1609392 5694896 1609472 5694880 1608728 5692608 1609264 5695000 +1608480 5692440 1608432 5692384 1609264 5695000 1608728 5692608 +1609264 5695000 1609392 5694896 1608728 5692608 1608480 5692440 +1608728 5692608 1610992 5692696 1608680 5692480 1608480 5692440 +1608680 5692480 1608680 5692416 1608480 5692440 1608728 5692608 +1608728 5692608 1609472 5694880 1609600 5694896 1611064 5692984 +1609472 5694880 1609600 5694896 1608728 5692608 1609392 5694896 +1608680 5692480 1608728 5692608 1610992 5692696 1608680 5692416 +1608728 5692608 1611000 5692800 1610992 5692696 1608680 5692416 +1608680 5692480 1608480 5692440 1608728 5692608 1608680 5692416 +1610992 5692696 1611024 5692552 1608680 5692416 1608728 5692608 +1611024 5692552 1611112 5692400 1608680 5692416 1608728 5692608 +1610992 5692696 1611024 5692552 1608728 5692608 1611000 5692800 +1608680 5692416 1608680 5692480 1608728 5692608 1611024 5692552 +1608728 5692608 1608824 5692736 1611064 5692984 1611000 5692800 +1611064 5692984 1608824 5692736 1609600 5694896 1611192 5693224 +1608728 5692608 1608824 5692736 1611000 5692800 1610992 5692696 +1608824 5692736 1611064 5692984 1611000 5692800 1610992 5692696 +1608728 5692608 1608824 5692736 1610992 5692696 1611024 5692552 +1608824 5692736 1611000 5692800 1610992 5692696 1611024 5692552 +1609600 5694896 1608824 5692736 1608728 5692608 1609472 5694880 +1608728 5692608 1609472 5694880 1608824 5692736 1611024 5692552 +1608728 5692608 1609392 5694896 1609472 5694880 1608824 5692736 +1608728 5692608 1609264 5695000 1609392 5694896 1608824 5692736 +1608728 5692608 1608480 5692440 1609264 5695000 1608824 5692736 +1608728 5692608 1608680 5692480 1608480 5692440 1608824 5692736 +1609264 5695000 1609392 5694896 1608824 5692736 1608480 5692440 +1608480 5692440 1608432 5692384 1609264 5695000 1608824 5692736 +1609472 5694880 1609600 5694896 1608824 5692736 1609392 5694896 +1608728 5692608 1608480 5692440 1608824 5692736 1611024 5692552 +1609392 5694896 1609472 5694880 1608824 5692736 1609264 5695000 +1608824 5692736 1609600 5694896 1611064 5692984 1611000 5692800 +1609600 5694896 1611064 5692984 1608824 5692736 1609472 5694880 +1608728 5692608 1608824 5692736 1611024 5692552 1608680 5692416 +1611024 5692552 1611112 5692400 1608680 5692416 1608824 5692736 +1608824 5692736 1610992 5692696 1611024 5692552 1608680 5692416 +1608728 5692608 1608480 5692440 1608824 5692736 1608680 5692416 +1608728 5692608 1608824 5692736 1608680 5692416 1608680 5692480 +1608824 5692736 1608832 5692872 1609264 5695000 1609392 5694896 +1609264 5695000 1608832 5692872 1608480 5692440 1608432 5692384 +1608480 5692440 1608832 5692872 1608824 5692736 1608728 5692608 +1608480 5692440 1608832 5692872 1608728 5692608 1608680 5692480 +1608824 5692736 1608832 5692872 1609392 5694896 1609472 5694880 +1608832 5692872 1609264 5695000 1609392 5694896 1609472 5694880 +1608824 5692736 1608832 5692872 1609472 5694880 1609600 5694896 +1608832 5692872 1609392 5694896 1609472 5694880 1609600 5694896 +1608824 5692736 1608728 5692608 1608832 5692872 1609600 5694896 +1608824 5692736 1608832 5692872 1609600 5694896 1611064 5692984 +1609600 5694896 1611192 5693224 1611064 5692984 1608832 5692872 +1608832 5692872 1609472 5694880 1609600 5694896 1611064 5692984 +1608824 5692736 1608832 5692872 1611064 5692984 1611000 5692800 +1608824 5692736 1608832 5692872 1611000 5692800 1610992 5692696 +1608824 5692736 1608832 5692872 1610992 5692696 1611024 5692552 +1608832 5692872 1611064 5692984 1611000 5692800 1610992 5692696 +1608824 5692736 1608728 5692608 1608832 5692872 1610992 5692696 +1608832 5692872 1609600 5694896 1611064 5692984 1611000 5692800 +1608832 5692872 1608480 5692440 1609264 5695000 1609392 5694896 +1608480 5692440 1609264 5695000 1608832 5692872 1608728 5692608 +1609264 5695000 1608768 5692928 1608480 5692440 1608432 5692384 +1609264 5695000 1608768 5692928 1608432 5692384 1602224 5696056 +1609264 5695000 1608768 5692928 1602224 5696056 1609248 5695456 +1608432 5692384 1602200 5696008 1602224 5696056 1608768 5692928 +1608768 5692928 1608480 5692440 1608432 5692384 1602224 5696056 +1608832 5692872 1608768 5692928 1609264 5695000 1609392 5694896 +1608832 5692872 1608768 5692928 1609392 5694896 1609472 5694880 +1608832 5692872 1608768 5692928 1609472 5694880 1609600 5694896 +1608768 5692928 1609264 5695000 1609392 5694896 1609472 5694880 +1608832 5692872 1608480 5692440 1608768 5692928 1609472 5694880 +1608480 5692440 1608768 5692928 1608832 5692872 1608728 5692608 +1608480 5692440 1608768 5692928 1608728 5692608 1608680 5692480 +1608832 5692872 1608824 5692736 1608728 5692608 1608768 5692928 +1608768 5692928 1609472 5694880 1608832 5692872 1608824 5692736 +1608728 5692608 1608480 5692440 1608768 5692928 1608824 5692736 +1609264 5695000 1609392 5694896 1608768 5692928 1602224 5696056 +1608768 5692928 1608728 5692608 1608480 5692440 1608432 5692384 +1608768 5692928 1608696 5692960 1602224 5696056 1609264 5695000 +1602224 5696056 1609248 5695456 1609264 5695000 1608696 5692960 +1602224 5696056 1608696 5692960 1608432 5692384 1602200 5696008 +1608432 5692384 1608696 5692960 1608768 5692928 1608480 5692440 +1608432 5692384 1602160 5695928 1602200 5696008 1608696 5692960 +1608432 5692384 1608376 5692296 1602160 5695928 1608696 5692960 +1602200 5696008 1602224 5696056 1608696 5692960 1602160 5695928 +1608376 5692296 1602112 5695896 1602160 5695928 1608696 5692960 +1608432 5692384 1608392 5692304 1608376 5692296 1608696 5692960 +1602160 5695928 1602200 5696008 1608696 5692960 1608376 5692296 +1608768 5692928 1608696 5692960 1609264 5695000 1609392 5694896 +1608696 5692960 1602224 5696056 1609264 5695000 1609392 5694896 +1608768 5692928 1608696 5692960 1609392 5694896 1609472 5694880 +1608768 5692928 1608480 5692440 1608696 5692960 1609392 5694896 +1608768 5692928 1608728 5692608 1608480 5692440 1608696 5692960 +1608728 5692608 1608680 5692480 1608480 5692440 1608696 5692960 +1608480 5692440 1608432 5692384 1608696 5692960 1608728 5692608 +1608768 5692928 1608824 5692736 1608728 5692608 1608696 5692960 +1608768 5692928 1608832 5692872 1608824 5692736 1608696 5692960 +1608768 5692928 1608824 5692736 1608696 5692960 1609392 5694896 +1608728 5692608 1608480 5692440 1608696 5692960 1608824 5692736 +1608696 5692960 1602200 5696008 1602224 5696056 1609264 5695000 +1608696 5692960 1608480 5692440 1608432 5692384 1608376 5692296 +1608376 5692296 1608624 5692960 1608696 5692960 1608432 5692384 +1602160 5695928 1608624 5692960 1608376 5692296 1602112 5695896 +1608376 5692296 1608624 5692960 1608432 5692384 1608392 5692304 +1608696 5692960 1608624 5692960 1602160 5695928 1602200 5696008 +1608696 5692960 1608624 5692960 1602200 5696008 1602224 5696056 +1608624 5692960 1602160 5695928 1602200 5696008 1602224 5696056 +1608696 5692960 1608624 5692960 1602224 5696056 1609264 5695000 +1602224 5696056 1609248 5695456 1609264 5695000 1608624 5692960 +1608696 5692960 1608624 5692960 1609264 5695000 1609392 5694896 +1608624 5692960 1602200 5696008 1602224 5696056 1609264 5695000 +1608696 5692960 1608624 5692960 1609392 5694896 1608768 5692928 +1608624 5692960 1602224 5696056 1609264 5695000 1609392 5694896 +1608624 5692960 1609392 5694896 1608696 5692960 1608432 5692384 +1608696 5692960 1608480 5692440 1608432 5692384 1608624 5692960 +1608432 5692384 1608376 5692296 1608624 5692960 1608480 5692440 +1608696 5692960 1608728 5692608 1608480 5692440 1608624 5692960 +1608728 5692608 1608680 5692480 1608480 5692440 1608624 5692960 +1608696 5692960 1608824 5692736 1608728 5692608 1608624 5692960 +1608728 5692608 1608480 5692440 1608624 5692960 1608824 5692736 +1608696 5692960 1608768 5692928 1608824 5692736 1608624 5692960 +1608696 5692960 1608824 5692736 1608624 5692960 1609392 5694896 +1608480 5692440 1608432 5692384 1608624 5692960 1608728 5692608 +1608624 5692960 1608376 5692296 1602160 5695928 1602200 5696008 +1608376 5692296 1602160 5695928 1608624 5692960 1608432 5692384 +1602160 5695928 1608568 5692904 1608376 5692296 1602112 5695896 +1608624 5692960 1608568 5692904 1602160 5695928 1602200 5696008 +1608624 5692960 1608568 5692904 1602200 5696008 1602224 5696056 +1608624 5692960 1608568 5692904 1602224 5696056 1609264 5695000 +1602224 5696056 1609248 5695456 1609264 5695000 1608568 5692904 +1608568 5692904 1602200 5696008 1602224 5696056 1609264 5695000 +1608624 5692960 1608568 5692904 1609264 5695000 1609392 5694896 +1608568 5692904 1602160 5695928 1602200 5696008 1602224 5696056 +1608624 5692960 1608376 5692296 1608568 5692904 1609264 5695000 +1608376 5692296 1608568 5692904 1608624 5692960 1608432 5692384 +1608624 5692960 1608480 5692440 1608432 5692384 1608568 5692904 +1608376 5692296 1608568 5692904 1608432 5692384 1608392 5692304 +1608624 5692960 1608728 5692608 1608480 5692440 1608568 5692904 +1608480 5692440 1608432 5692384 1608568 5692904 1608728 5692608 +1608728 5692608 1608680 5692480 1608480 5692440 1608568 5692904 +1608624 5692960 1608824 5692736 1608728 5692608 1608568 5692904 +1608624 5692960 1608696 5692960 1608824 5692736 1608568 5692904 +1608824 5692736 1608728 5692608 1608568 5692904 1608696 5692960 +1608696 5692960 1608768 5692928 1608824 5692736 1608568 5692904 +1608824 5692736 1608728 5692608 1608568 5692904 1608768 5692928 +1608768 5692928 1608832 5692872 1608824 5692736 1608568 5692904 +1608696 5692960 1608768 5692928 1608568 5692904 1608624 5692960 +1608728 5692608 1608480 5692440 1608568 5692904 1608824 5692736 +1608568 5692904 1609264 5695000 1608624 5692960 1608696 5692960 +1608432 5692384 1608376 5692296 1608568 5692904 1608480 5692440 +1608568 5692904 1608376 5692296 1602160 5695928 1602200 5696008 +1608376 5692296 1602160 5695928 1608568 5692904 1608432 5692384 +1608568 5692904 1608568 5692864 1608480 5692440 1608432 5692384 +1608480 5692440 1608568 5692864 1608728 5692608 1608680 5692480 +1608728 5692608 1608568 5692864 1608568 5692904 1608824 5692736 +1608728 5692608 1608480 5692440 1608568 5692864 1608824 5692736 +1608568 5692904 1608768 5692928 1608824 5692736 1608568 5692864 +1608768 5692928 1608832 5692872 1608824 5692736 1608568 5692864 +1608568 5692904 1608696 5692960 1608768 5692928 1608568 5692864 +1608768 5692928 1608824 5692736 1608568 5692864 1608696 5692960 +1608568 5692904 1608624 5692960 1608696 5692960 1608568 5692864 +1608696 5692960 1608768 5692928 1608568 5692864 1608624 5692960 +1608824 5692736 1608728 5692608 1608568 5692864 1608768 5692928 +1608568 5692904 1608568 5692864 1608432 5692384 1608376 5692296 +1608568 5692904 1608624 5692960 1608568 5692864 1608432 5692384 +1608568 5692864 1608728 5692608 1608480 5692440 1608432 5692384 +1608568 5692864 1608640 5692752 1608728 5692608 1608480 5692440 +1608728 5692608 1608680 5692480 1608480 5692440 1608640 5692752 +1608568 5692864 1608824 5692736 1608640 5692752 1608480 5692440 +1608480 5692440 1608568 5692864 1608640 5692752 1608680 5692480 +1608640 5692752 1608824 5692736 1608728 5692608 1608680 5692480 +1608680 5692480 1608680 5692416 1608480 5692440 1608640 5692752 +1608824 5692736 1608640 5692752 1608568 5692864 1608768 5692928 +1608640 5692752 1608480 5692440 1608568 5692864 1608768 5692928 +1608824 5692736 1608728 5692608 1608640 5692752 1608768 5692928 +1608568 5692864 1608696 5692960 1608768 5692928 1608640 5692752 +1608568 5692864 1608696 5692960 1608640 5692752 1608480 5692440 +1608824 5692736 1608640 5692752 1608768 5692928 1608832 5692872 +1608824 5692736 1608728 5692608 1608640 5692752 1608832 5692872 +1608568 5692864 1608624 5692960 1608696 5692960 1608640 5692752 +1608768 5692928 1608832 5692872 1608640 5692752 1608696 5692960 +1608568 5692864 1608640 5692752 1608480 5692440 1608432 5692384 +1608680 5692480 1608624 5692656 1608640 5692752 1608728 5692608 +1608640 5692752 1608624 5692656 1608480 5692440 1608568 5692864 +1608640 5692752 1608824 5692736 1608728 5692608 1608624 5692656 +1608624 5692656 1608568 5692864 1608640 5692752 1608728 5692608 +1608624 5692656 1608680 5692480 1608480 5692440 1608568 5692864 +1608680 5692480 1608480 5692440 1608624 5692656 1608728 5692608 +1608480 5692440 1608624 5692656 1608680 5692480 1608680 5692416 +1608480 5692440 1608432 5692384 1608568 5692864 1608624 5692656 +1608624 5692656 1608576 5692560 1608480 5692440 1608568 5692864 +1608624 5692656 1608576 5692560 1608568 5692864 1608640 5692752 +1608624 5692656 1608680 5692480 1608576 5692560 1608568 5692864 +1608680 5692480 1608576 5692560 1608624 5692656 1608728 5692608 +1608624 5692656 1608640 5692752 1608728 5692608 1608576 5692560 +1608576 5692560 1608568 5692864 1608624 5692656 1608728 5692608 +1608576 5692560 1608680 5692480 1608480 5692440 1608568 5692864 +1608680 5692480 1608480 5692440 1608576 5692560 1608728 5692608 +1608480 5692440 1608576 5692560 1608680 5692480 1608680 5692416 +1608480 5692440 1608432 5692384 1608568 5692864 1608576 5692560 +1613448 5695424 1612880 5696080 1612736 5696520 1612840 5696712 +1612880 5696080 1612560 5696144 1612736 5696520 1612840 5696712 +1613448 5695424 1612560 5696144 1612880 5696080 1612840 5696712 +1613448 5695424 1612880 5696080 1612840 5696712 1613008 5696896 +1613448 5695424 1612560 5696144 1612880 5696080 1613008 5696896 +1612880 5696080 1612736 5696520 1612840 5696712 1613008 5696896 +1612560 5696144 1612880 5696080 1613448 5695424 1613232 5695376 +1612560 5696144 1612736 5696520 1612880 5696080 1613232 5695376 +1612880 5696080 1613008 5696896 1613448 5695424 1613232 5695376 +1612560 5696144 1612880 5696080 1613232 5695376 1612480 5696016 +1612560 5696144 1612736 5696520 1612880 5696080 1612480 5696016 +1613232 5695376 1612896 5695232 1612480 5696016 1612880 5696080 +1612480 5696016 1612560 5696144 1612880 5696080 1612896 5695232 +1612880 5696080 1613448 5695424 1613232 5695376 1612896 5695232 +1613448 5695424 1612880 5696080 1613008 5696896 1613072 5696952 +1613448 5695424 1613232 5695376 1612880 5696080 1613072 5696952 +1612880 5696080 1612840 5696712 1613008 5696896 1613072 5696952 +1613448 5695424 1612880 5696080 1613072 5696952 1613656 5695408 +1613448 5695424 1613232 5695376 1612880 5696080 1613656 5695408 +1613072 5696952 1613312 5697192 1613656 5695408 1612880 5696080 +1612880 5696080 1613008 5696896 1613072 5696952 1613656 5695408 +1612896 5695232 1612248 5695760 1612480 5696016 1612880 5696080 +1613656 5695408 1612920 5696056 1613072 5696952 1613312 5697192 +1612880 5696080 1612920 5696056 1613656 5695408 1613448 5695424 +1612880 5696080 1613072 5696952 1612920 5696056 1613448 5695424 +1612880 5696080 1612920 5696056 1613448 5695424 1613232 5695376 +1612880 5696080 1613072 5696952 1612920 5696056 1613232 5695376 +1612920 5696056 1613072 5696952 1613656 5695408 1613448 5695424 +1612880 5696080 1612920 5696056 1613232 5695376 1612896 5695232 +1612880 5696080 1613072 5696952 1612920 5696056 1612896 5695232 +1612920 5696056 1613448 5695424 1613232 5695376 1612896 5695232 +1612880 5696080 1612920 5696056 1612896 5695232 1612480 5696016 +1612880 5696080 1613072 5696952 1612920 5696056 1612480 5696016 +1612880 5696080 1612920 5696056 1612480 5696016 1612560 5696144 +1612920 5696056 1613232 5695376 1612896 5695232 1612480 5696016 +1612920 5696056 1613656 5695408 1613448 5695424 1613232 5695376 +1613072 5696952 1612920 5696056 1612880 5696080 1613008 5696896 +1612920 5696056 1612480 5696016 1612880 5696080 1613008 5696896 +1613072 5696952 1613656 5695408 1612920 5696056 1613008 5696896 +1612880 5696080 1612840 5696712 1613008 5696896 1612920 5696056 +1612880 5696080 1612840 5696712 1612920 5696056 1612480 5696016 +1612880 5696080 1612736 5696520 1612840 5696712 1612920 5696056 +1612880 5696080 1612560 5696144 1612736 5696520 1612920 5696056 +1612880 5696080 1612736 5696520 1612920 5696056 1612480 5696016 +1612840 5696712 1613008 5696896 1612920 5696056 1612736 5696520 +1613008 5696896 1613072 5696952 1612920 5696056 1612840 5696712 +1612896 5695232 1612248 5695760 1612480 5696016 1612920 5696056 +1612920 5696056 1613016 5696040 1613656 5695408 1613448 5695424 +1612920 5696056 1613072 5696952 1613016 5696040 1613448 5695424 +1613072 5696952 1613016 5696040 1612920 5696056 1613008 5696896 +1613016 5696040 1613448 5695424 1612920 5696056 1613008 5696896 +1613016 5696040 1613072 5696952 1613656 5695408 1613448 5695424 +1613072 5696952 1613656 5695408 1613016 5696040 1613008 5696896 +1613656 5695408 1613016 5696040 1613072 5696952 1613312 5697192 +1613656 5695408 1613448 5695424 1613016 5696040 1613312 5697192 +1613016 5696040 1613008 5696896 1613072 5696952 1613312 5697192 +1612920 5696056 1613016 5696040 1613448 5695424 1613232 5695376 +1612920 5696056 1613016 5696040 1613232 5695376 1612896 5695232 +1613016 5696040 1613656 5695408 1613448 5695424 1613232 5695376 +1612920 5696056 1613008 5696896 1613016 5696040 1612896 5695232 +1612920 5696056 1613016 5696040 1612896 5695232 1612480 5696016 +1613016 5696040 1613448 5695424 1613232 5695376 1612896 5695232 +1613656 5695408 1613016 5696040 1613312 5697192 1613744 5695376 +1612920 5696056 1612840 5696712 1613008 5696896 1613016 5696040 +1612920 5696056 1612840 5696712 1613016 5696040 1612896 5695232 +1613008 5696896 1613072 5696952 1613016 5696040 1612840 5696712 +1612920 5696056 1612736 5696520 1612840 5696712 1613016 5696040 +1612920 5696056 1612736 5696520 1613016 5696040 1612896 5695232 +1612920 5696056 1612880 5696080 1612736 5696520 1613016 5696040 +1612880 5696080 1612560 5696144 1612736 5696520 1613016 5696040 +1612920 5696056 1612880 5696080 1613016 5696040 1612896 5695232 +1612736 5696520 1612840 5696712 1613016 5696040 1612880 5696080 +1612840 5696712 1613008 5696896 1613016 5696040 1612736 5696520 +1613016 5696040 1613040 5696040 1613656 5695408 1613448 5695424 +1613016 5696040 1613040 5696040 1613448 5695424 1613232 5695376 +1613040 5696040 1613656 5695408 1613448 5695424 1613232 5695376 +1613016 5696040 1613312 5697192 1613040 5696040 1613232 5695376 +1613040 5696040 1613312 5697192 1613656 5695408 1613448 5695424 +1613312 5697192 1613040 5696040 1613016 5696040 1613072 5696952 +1613040 5696040 1613232 5695376 1613016 5696040 1613072 5696952 +1613016 5696040 1613008 5696896 1613072 5696952 1613040 5696040 +1613016 5696040 1612840 5696712 1613008 5696896 1613040 5696040 +1613016 5696040 1612840 5696712 1613040 5696040 1613232 5695376 +1613008 5696896 1613072 5696952 1613040 5696040 1612840 5696712 +1613312 5697192 1613656 5695408 1613040 5696040 1613072 5696952 +1613072 5696952 1613312 5697192 1613040 5696040 1613008 5696896 +1613016 5696040 1613040 5696040 1613232 5695376 1612896 5695232 +1613656 5695408 1613040 5696040 1613312 5697192 1613744 5695376 +1613016 5696040 1612736 5696520 1612840 5696712 1613040 5696040 +1612840 5696712 1613008 5696896 1613040 5696040 1612736 5696520 +1613016 5696040 1612736 5696520 1613040 5696040 1613232 5695376 +1613016 5696040 1612880 5696080 1612736 5696520 1613040 5696040 +1612880 5696080 1612560 5696144 1612736 5696520 1613040 5696040 +1613016 5696040 1612880 5696080 1613040 5696040 1613232 5695376 +1613016 5696040 1612920 5696056 1612880 5696080 1613040 5696040 +1612736 5696520 1612840 5696712 1613040 5696040 1612880 5696080 +1613040 5696040 1613088 5696064 1613656 5695408 1613448 5695424 +1613040 5696040 1613088 5696064 1613448 5695424 1613232 5695376 +1613040 5696040 1613088 5696064 1613232 5695376 1613016 5696040 +1613088 5696064 1613656 5695408 1613448 5695424 1613232 5695376 +1613040 5696040 1613312 5697192 1613088 5696064 1613232 5695376 +1613312 5697192 1613088 5696064 1613040 5696040 1613072 5696952 +1613088 5696064 1613232 5695376 1613040 5696040 1613072 5696952 +1613088 5696064 1613312 5697192 1613656 5695408 1613448 5695424 +1613312 5697192 1613656 5695408 1613088 5696064 1613072 5696952 +1613040 5696040 1613008 5696896 1613072 5696952 1613088 5696064 +1613040 5696040 1612840 5696712 1613008 5696896 1613088 5696064 +1613040 5696040 1612736 5696520 1612840 5696712 1613088 5696064 +1612840 5696712 1613008 5696896 1613088 5696064 1612736 5696520 +1613040 5696040 1612736 5696520 1613088 5696064 1613232 5695376 +1613072 5696952 1613312 5697192 1613088 5696064 1613008 5696896 +1613008 5696896 1613072 5696952 1613088 5696064 1612840 5696712 +1613656 5695408 1613088 5696064 1613312 5697192 1613744 5695376 +1613656 5695408 1613448 5695424 1613088 5696064 1613744 5695376 +1613088 5696064 1613072 5696952 1613312 5697192 1613744 5695376 +1613312 5697192 1613528 5697360 1613744 5695376 1613088 5696064 +1613312 5697192 1613528 5697360 1613088 5696064 1613072 5696952 +1613744 5695376 1613656 5695408 1613088 5696064 1613528 5697360 +1613040 5696040 1612880 5696080 1612736 5696520 1613088 5696064 +1612880 5696080 1612560 5696144 1612736 5696520 1613088 5696064 +1612736 5696520 1612840 5696712 1613088 5696064 1612880 5696080 +1613040 5696040 1612880 5696080 1613088 5696064 1613232 5695376 +1613040 5696040 1613016 5696040 1612880 5696080 1613088 5696064 +1613040 5696040 1613016 5696040 1613088 5696064 1613232 5695376 +1613016 5696040 1612920 5696056 1612880 5696080 1613088 5696064 +1613016 5696040 1612920 5696056 1613088 5696064 1613040 5696040 +1612880 5696080 1612736 5696520 1613088 5696064 1612920 5696056 +1613528 5697360 1614696 5695376 1613744 5695376 1613088 5696064 +1613528 5697360 1613168 5696072 1613088 5696064 1613312 5697192 +1613168 5696072 1613744 5695376 1613088 5696064 1613312 5697192 +1613088 5696064 1613072 5696952 1613312 5697192 1613168 5696072 +1613088 5696064 1613008 5696896 1613072 5696952 1613168 5696072 +1613088 5696064 1613008 5696896 1613168 5696072 1613744 5695376 +1613072 5696952 1613312 5697192 1613168 5696072 1613008 5696896 +1613528 5697360 1613744 5695376 1613168 5696072 1613312 5697192 +1613312 5697192 1613528 5697360 1613168 5696072 1613072 5696952 +1613088 5696064 1612840 5696712 1613008 5696896 1613168 5696072 +1613088 5696064 1612736 5696520 1612840 5696712 1613168 5696072 +1613088 5696064 1612880 5696080 1612736 5696520 1613168 5696072 +1613008 5696896 1613072 5696952 1613168 5696072 1612840 5696712 +1613088 5696064 1612736 5696520 1613168 5696072 1613744 5695376 +1612840 5696712 1613008 5696896 1613168 5696072 1612736 5696520 +1613088 5696064 1613168 5696072 1613744 5695376 1613656 5695408 +1613088 5696064 1613168 5696072 1613656 5695408 1613448 5695424 +1613088 5696064 1613168 5696072 1613448 5695424 1613232 5695376 +1613088 5696064 1613168 5696072 1613232 5695376 1613040 5696040 +1613232 5695376 1613016 5696040 1613040 5696040 1613168 5696072 +1613168 5696072 1613448 5695424 1613232 5695376 1613040 5696040 +1613168 5696072 1613656 5695408 1613448 5695424 1613232 5695376 +1613088 5696064 1612736 5696520 1613168 5696072 1613040 5696040 +1613168 5696072 1613528 5697360 1613744 5695376 1613656 5695408 +1613168 5696072 1613744 5695376 1613656 5695408 1613448 5695424 +1613744 5695376 1613168 5696072 1613528 5697360 1614696 5695376 +1613744 5695376 1613656 5695408 1613168 5696072 1614696 5695376 +1613168 5696072 1613312 5697192 1613528 5697360 1614696 5695376 +1613528 5697360 1615376 5695816 1614696 5695376 1613168 5696072 +1613744 5695376 1613168 5696072 1614696 5695376 1614568 5695320 +1613528 5697360 1613208 5696096 1613168 5696072 1613312 5697192 +1613528 5697360 1614696 5695376 1613208 5696096 1613312 5697192 +1613208 5696096 1614696 5695376 1613168 5696072 1613312 5697192 +1613168 5696072 1613072 5696952 1613312 5697192 1613208 5696096 +1613168 5696072 1613008 5696896 1613072 5696952 1613208 5696096 +1613168 5696072 1612840 5696712 1613008 5696896 1613208 5696096 +1613008 5696896 1613072 5696952 1613208 5696096 1612840 5696712 +1613168 5696072 1612840 5696712 1613208 5696096 1614696 5695376 +1613312 5697192 1613528 5697360 1613208 5696096 1613072 5696952 +1613072 5696952 1613312 5697192 1613208 5696096 1613008 5696896 +1614696 5695376 1613208 5696096 1613528 5697360 1615376 5695816 +1613168 5696072 1612736 5696520 1612840 5696712 1613208 5696096 +1613168 5696072 1613088 5696064 1612736 5696520 1613208 5696096 +1613088 5696064 1612880 5696080 1612736 5696520 1613208 5696096 +1612840 5696712 1613008 5696896 1613208 5696096 1612736 5696520 +1613168 5696072 1613088 5696064 1613208 5696096 1614696 5695376 +1612736 5696520 1612840 5696712 1613208 5696096 1613088 5696064 +1613168 5696072 1613208 5696096 1614696 5695376 1613744 5695376 +1613208 5696096 1613528 5697360 1614696 5695376 1613744 5695376 +1613168 5696072 1613208 5696096 1613744 5695376 1613656 5695408 +1613168 5696072 1613088 5696064 1613208 5696096 1613656 5695408 +1614696 5695376 1614568 5695320 1613744 5695376 1613208 5696096 +1613168 5696072 1613208 5696096 1613656 5695408 1613448 5695424 +1613168 5696072 1613208 5696096 1613448 5695424 1613232 5695376 +1613208 5696096 1613744 5695376 1613656 5695408 1613448 5695424 +1613168 5696072 1613088 5696064 1613208 5696096 1613448 5695424 +1613208 5696096 1614696 5695376 1613744 5695376 1613656 5695408 +1613208 5696096 1613240 5696104 1614696 5695376 1613744 5695376 +1613208 5696096 1613528 5697360 1613240 5696104 1613744 5695376 +1613528 5697360 1613240 5696104 1613208 5696096 1613312 5697192 +1613240 5696104 1613744 5695376 1613208 5696096 1613312 5697192 +1613208 5696096 1613072 5696952 1613312 5697192 1613240 5696104 +1613208 5696096 1613072 5696952 1613240 5696104 1613744 5695376 +1613312 5697192 1613528 5697360 1613240 5696104 1613072 5696952 +1613240 5696104 1613528 5697360 1614696 5695376 1613744 5695376 +1613528 5697360 1614696 5695376 1613240 5696104 1613312 5697192 +1613208 5696096 1613008 5696896 1613072 5696952 1613240 5696104 +1613208 5696096 1613008 5696896 1613240 5696104 1613744 5695376 +1613208 5696096 1612840 5696712 1613008 5696896 1613240 5696104 +1613208 5696096 1612840 5696712 1613240 5696104 1613744 5695376 +1613208 5696096 1612736 5696520 1612840 5696712 1613240 5696104 +1613072 5696952 1613312 5697192 1613240 5696104 1613008 5696896 +1613008 5696896 1613072 5696952 1613240 5696104 1612840 5696712 +1614696 5695376 1613240 5696104 1613528 5697360 1615376 5695816 +1614696 5695376 1614568 5695320 1613744 5695376 1613240 5696104 +1614568 5695320 1613832 5695328 1613744 5695376 1613240 5696104 +1613744 5695376 1613208 5696096 1613240 5696104 1614568 5695320 +1614696 5695376 1614568 5695320 1613240 5696104 1613528 5697360 +1613208 5696096 1613240 5696104 1613744 5695376 1613656 5695408 +1613240 5696104 1614568 5695320 1613744 5695376 1613656 5695408 +1613208 5696096 1612840 5696712 1613240 5696104 1613656 5695408 +1613208 5696096 1613240 5696104 1613656 5695408 1613448 5695424 +1613208 5696096 1612840 5696712 1613240 5696104 1613448 5695424 +1613208 5696096 1613240 5696104 1613448 5695424 1613168 5696072 +1613208 5696096 1612840 5696712 1613240 5696104 1613168 5696072 +1613448 5695424 1613232 5695376 1613168 5696072 1613240 5696104 +1613240 5696104 1613656 5695408 1613448 5695424 1613168 5696072 +1613240 5696104 1613744 5695376 1613656 5695408 1613448 5695424 +1613240 5696104 1613248 5696112 1614696 5695376 1614568 5695320 +1613240 5696104 1613528 5697360 1613248 5696112 1614568 5695320 +1613528 5697360 1613248 5696112 1613240 5696104 1613312 5697192 +1613240 5696104 1613072 5696952 1613312 5697192 1613248 5696112 +1613240 5696104 1613008 5696896 1613072 5696952 1613248 5696112 +1613072 5696952 1613312 5697192 1613248 5696112 1613008 5696896 +1613248 5696112 1614568 5695320 1613240 5696104 1613008 5696896 +1613312 5697192 1613528 5697360 1613248 5696112 1613072 5696952 +1613248 5696112 1613528 5697360 1614696 5695376 1614568 5695320 +1613528 5697360 1614696 5695376 1613248 5696112 1613312 5697192 +1613240 5696104 1612840 5696712 1613008 5696896 1613248 5696112 +1613240 5696104 1613208 5696096 1612840 5696712 1613248 5696112 +1613208 5696096 1612736 5696520 1612840 5696712 1613248 5696112 +1613208 5696096 1612736 5696520 1613248 5696112 1613240 5696104 +1613008 5696896 1613072 5696952 1613248 5696112 1612840 5696712 +1613240 5696104 1613208 5696096 1613248 5696112 1614568 5695320 +1612840 5696712 1613008 5696896 1613248 5696112 1612736 5696520 +1614696 5695376 1613248 5696112 1613528 5697360 1615376 5695816 +1613240 5696104 1613248 5696112 1614568 5695320 1613744 5695376 +1614568 5695320 1613832 5695328 1613744 5695376 1613248 5696112 +1613240 5696104 1613248 5696112 1613744 5695376 1613656 5695408 +1613248 5696112 1614696 5695376 1614568 5695320 1613744 5695376 +1613240 5696104 1613208 5696096 1613248 5696112 1613656 5695408 +1613248 5696112 1614568 5695320 1613744 5695376 1613656 5695408 +1613208 5696096 1613088 5696064 1612736 5696520 1613248 5696112 +1613240 5696104 1613248 5696112 1613656 5695408 1613448 5695424 +1613248 5696112 1613744 5695376 1613656 5695408 1613448 5695424 +1613240 5696104 1613248 5696112 1613448 5695424 1613168 5696072 +1613240 5696104 1613208 5696096 1613248 5696112 1613448 5695424 +1613248 5696112 1613288 5696168 1614696 5695376 1614568 5695320 +1613288 5696168 1613528 5697360 1614696 5695376 1614568 5695320 +1613248 5696112 1613288 5696168 1614568 5695320 1613744 5695376 +1614568 5695320 1613832 5695328 1613744 5695376 1613288 5696168 +1613288 5696168 1614696 5695376 1614568 5695320 1613744 5695376 +1613248 5696112 1613528 5697360 1613288 5696168 1613744 5695376 +1613528 5697360 1613288 5696168 1613248 5696112 1613312 5697192 +1613528 5697360 1614696 5695376 1613288 5696168 1613312 5697192 +1613248 5696112 1613072 5696952 1613312 5697192 1613288 5696168 +1613248 5696112 1613008 5696896 1613072 5696952 1613288 5696168 +1613248 5696112 1612840 5696712 1613008 5696896 1613288 5696168 +1613008 5696896 1613072 5696952 1613288 5696168 1612840 5696712 +1613072 5696952 1613312 5697192 1613288 5696168 1613008 5696896 +1613288 5696168 1613744 5695376 1613248 5696112 1612840 5696712 +1613312 5697192 1613528 5697360 1613288 5696168 1613072 5696952 +1613248 5696112 1612736 5696520 1612840 5696712 1613288 5696168 +1613248 5696112 1613208 5696096 1612736 5696520 1613288 5696168 +1613248 5696112 1613240 5696104 1613208 5696096 1613288 5696168 +1612840 5696712 1613008 5696896 1613288 5696168 1612736 5696520 +1613248 5696112 1613208 5696096 1613288 5696168 1613744 5695376 +1612736 5696520 1612840 5696712 1613288 5696168 1613208 5696096 +1614696 5695376 1613288 5696168 1613528 5697360 1615376 5695816 +1614696 5695376 1614568 5695320 1613288 5696168 1615376 5695816 +1613288 5696168 1613312 5697192 1613528 5697360 1615376 5695816 +1613248 5696112 1613288 5696168 1613744 5695376 1613656 5695408 +1613248 5696112 1613288 5696168 1613656 5695408 1613448 5695424 +1613288 5696168 1614568 5695320 1613744 5695376 1613656 5695408 +1613248 5696112 1613208 5696096 1613288 5696168 1613656 5695408 +1614696 5695376 1613288 5696168 1615376 5695816 1614856 5695400 +1613528 5697360 1615512 5696024 1615376 5695816 1613288 5696168 +1613208 5696096 1613088 5696064 1612736 5696520 1613288 5696168 +1613088 5696064 1612880 5696080 1612736 5696520 1613288 5696168 +1613208 5696096 1613168 5696072 1613088 5696064 1613288 5696168 +1613208 5696096 1613088 5696064 1613288 5696168 1613248 5696112 +1612736 5696520 1612840 5696712 1613288 5696168 1613088 5696064 +1613072 5696952 1613280 5696240 1613288 5696168 1613008 5696896 +1613288 5696168 1612840 5696712 1613008 5696896 1613280 5696240 +1613280 5696240 1613312 5697192 1613288 5696168 1612840 5696712 +1613288 5696168 1612736 5696520 1612840 5696712 1613280 5696240 +1612840 5696712 1613008 5696896 1613280 5696240 1612736 5696520 +1613288 5696168 1612736 5696520 1613280 5696240 1613312 5697192 +1613008 5696896 1613072 5696952 1613280 5696240 1612840 5696712 +1613288 5696168 1613280 5696240 1613312 5697192 1613528 5697360 +1613288 5696168 1612736 5696520 1613280 5696240 1613528 5697360 +1613288 5696168 1613280 5696240 1613528 5697360 1615376 5695816 +1613288 5696168 1612736 5696520 1613280 5696240 1615376 5695816 +1613280 5696240 1613312 5697192 1613528 5697360 1615376 5695816 +1613280 5696240 1613072 5696952 1613312 5697192 1613528 5697360 +1613072 5696952 1613312 5697192 1613280 5696240 1613008 5696896 +1613288 5696168 1613088 5696064 1612736 5696520 1613280 5696240 +1613288 5696168 1613088 5696064 1613280 5696240 1615376 5695816 +1613088 5696064 1612880 5696080 1612736 5696520 1613280 5696240 +1612880 5696080 1612560 5696144 1612736 5696520 1613280 5696240 +1612736 5696520 1612840 5696712 1613280 5696240 1612880 5696080 +1613088 5696064 1612880 5696080 1613280 5696240 1613288 5696168 +1613288 5696168 1613280 5696240 1615376 5695816 1614696 5695376 +1613288 5696168 1613280 5696240 1614696 5695376 1614568 5695320 +1613288 5696168 1613088 5696064 1613280 5696240 1614696 5695376 +1613280 5696240 1613528 5697360 1615376 5695816 1614696 5695376 +1615376 5695816 1614856 5695400 1614696 5695376 1613280 5696240 +1613528 5697360 1615512 5696024 1615376 5695816 1613280 5696240 +1613288 5696168 1613208 5696096 1613088 5696064 1613280 5696240 +1613288 5696168 1613208 5696096 1613280 5696240 1614696 5695376 +1613208 5696096 1613168 5696072 1613088 5696064 1613280 5696240 +1613288 5696168 1613248 5696112 1613208 5696096 1613280 5696240 +1613288 5696168 1613248 5696112 1613280 5696240 1614696 5695376 +1613248 5696112 1613240 5696104 1613208 5696096 1613280 5696240 +1613088 5696064 1612880 5696080 1613280 5696240 1613208 5696096 +1613208 5696096 1613088 5696064 1613280 5696240 1613248 5696112 +1613088 5696064 1612920 5696056 1612880 5696080 1613280 5696240 +1613280 5696240 1613256 5696264 1612840 5696712 1613008 5696896 +1612736 5696520 1613256 5696264 1613280 5696240 1612880 5696080 +1612736 5696520 1613256 5696264 1612880 5696080 1612560 5696144 +1613280 5696240 1613088 5696064 1612880 5696080 1613256 5696264 +1612880 5696080 1612736 5696520 1613256 5696264 1613088 5696064 +1613280 5696240 1613256 5696264 1613008 5696896 1613072 5696952 +1613256 5696264 1612840 5696712 1613008 5696896 1613072 5696952 +1613280 5696240 1613088 5696064 1613256 5696264 1613072 5696952 +1613280 5696240 1613256 5696264 1613072 5696952 1613312 5697192 +1613256 5696264 1613008 5696896 1613072 5696952 1613312 5697192 +1613280 5696240 1613256 5696264 1613312 5697192 1613528 5697360 +1613280 5696240 1613088 5696064 1613256 5696264 1613312 5697192 +1613256 5696264 1612736 5696520 1612840 5696712 1613008 5696896 +1612736 5696520 1612840 5696712 1613256 5696264 1612880 5696080 +1613280 5696240 1613208 5696096 1613088 5696064 1613256 5696264 +1613088 5696064 1612880 5696080 1613256 5696264 1613208 5696096 +1613208 5696096 1613168 5696072 1613088 5696064 1613256 5696264 +1613280 5696240 1613208 5696096 1613256 5696264 1613312 5697192 +1613280 5696240 1613248 5696112 1613208 5696096 1613256 5696264 +1613280 5696240 1613288 5696168 1613248 5696112 1613256 5696264 +1613248 5696112 1613240 5696104 1613208 5696096 1613256 5696264 +1613280 5696240 1613288 5696168 1613256 5696264 1613312 5697192 +1613208 5696096 1613088 5696064 1613256 5696264 1613248 5696112 +1613248 5696112 1613208 5696096 1613256 5696264 1613288 5696168 +1613088 5696064 1612920 5696056 1612880 5696080 1613256 5696264 +1613256 5696264 1613216 5696288 1612840 5696712 1613008 5696896 +1613256 5696264 1613216 5696288 1613008 5696896 1613072 5696952 +1613256 5696264 1613216 5696288 1613072 5696952 1613312 5697192 +1613216 5696288 1612840 5696712 1613008 5696896 1613072 5696952 +1613256 5696264 1612736 5696520 1613216 5696288 1613072 5696952 +1612736 5696520 1613216 5696288 1613256 5696264 1612880 5696080 +1612736 5696520 1613216 5696288 1612880 5696080 1612560 5696144 +1613256 5696264 1613088 5696064 1612880 5696080 1613216 5696288 +1613256 5696264 1613208 5696096 1613088 5696064 1613216 5696288 +1613208 5696096 1613168 5696072 1613088 5696064 1613216 5696288 +1613208 5696096 1613168 5696072 1613216 5696288 1613256 5696264 +1613088 5696064 1612880 5696080 1613216 5696288 1613168 5696072 +1613216 5696288 1613072 5696952 1613256 5696264 1613208 5696096 +1612880 5696080 1612736 5696520 1613216 5696288 1613088 5696064 +1613216 5696288 1612736 5696520 1612840 5696712 1613008 5696896 +1612736 5696520 1612840 5696712 1613216 5696288 1612880 5696080 +1613256 5696264 1613248 5696112 1613208 5696096 1613216 5696288 +1613088 5696064 1612920 5696056 1612880 5696080 1613216 5696288 +1612736 5696520 1613120 5696296 1612880 5696080 1612560 5696144 +1612880 5696080 1613120 5696296 1613216 5696288 1613088 5696064 +1613216 5696288 1613168 5696072 1613088 5696064 1613120 5696296 +1613216 5696288 1613208 5696096 1613168 5696072 1613120 5696296 +1613216 5696288 1613256 5696264 1613208 5696096 1613120 5696296 +1613168 5696072 1613088 5696064 1613120 5696296 1613208 5696096 +1613088 5696064 1612880 5696080 1613120 5696296 1613168 5696072 +1612880 5696080 1612736 5696520 1613120 5696296 1613088 5696064 +1613120 5696296 1612736 5696520 1613216 5696288 1613208 5696096 +1613216 5696288 1613120 5696296 1612736 5696520 1612840 5696712 +1613120 5696296 1612880 5696080 1612736 5696520 1612840 5696712 +1613216 5696288 1613120 5696296 1612840 5696712 1613008 5696896 +1613216 5696288 1613120 5696296 1613008 5696896 1613072 5696952 +1613216 5696288 1613208 5696096 1613120 5696296 1613008 5696896 +1613120 5696296 1612736 5696520 1612840 5696712 1613008 5696896 +1612880 5696080 1613120 5696296 1613088 5696064 1612920 5696056 +1613120 5696296 1613168 5696072 1613088 5696064 1612920 5696056 +1612880 5696080 1612736 5696520 1613120 5696296 1612920 5696056 +1613088 5696064 1613016 5696040 1612920 5696056 1613120 5696296 +1613088 5696064 1613016 5696040 1613120 5696296 1613168 5696072 +1613088 5696064 1613040 5696040 1613016 5696040 1613120 5696296 +1612920 5696056 1612880 5696080 1613120 5696296 1613016 5696040 +1612736 5696520 1613080 5696288 1612880 5696080 1612560 5696144 +1613120 5696296 1613080 5696288 1612736 5696520 1612840 5696712 +1613120 5696296 1612880 5696080 1613080 5696288 1612840 5696712 +1612880 5696080 1613080 5696288 1613120 5696296 1612920 5696056 +1613080 5696288 1612840 5696712 1613120 5696296 1612920 5696056 +1613120 5696296 1613080 5696288 1612840 5696712 1613008 5696896 +1613080 5696288 1612880 5696080 1612736 5696520 1612840 5696712 +1612880 5696080 1612736 5696520 1613080 5696288 1612920 5696056 +1613120 5696296 1613016 5696040 1612920 5696056 1613080 5696288 +1613120 5696296 1613016 5696040 1613080 5696288 1612840 5696712 +1612920 5696056 1612880 5696080 1613080 5696288 1613016 5696040 +1613120 5696296 1613088 5696064 1613016 5696040 1613080 5696288 +1613120 5696296 1613168 5696072 1613088 5696064 1613080 5696288 +1613120 5696296 1613208 5696096 1613168 5696072 1613080 5696288 +1613120 5696296 1613168 5696072 1613080 5696288 1612840 5696712 +1613088 5696064 1613040 5696040 1613016 5696040 1613080 5696288 +1613088 5696064 1613016 5696040 1613080 5696288 1613168 5696072 +1613016 5696040 1612920 5696056 1613080 5696288 1613088 5696064 +1612736 5696520 1613032 5696256 1612880 5696080 1612560 5696144 +1613080 5696288 1613032 5696256 1612736 5696520 1612840 5696712 +1612880 5696080 1613032 5696256 1613080 5696288 1612920 5696056 +1613080 5696288 1613016 5696040 1612920 5696056 1613032 5696256 +1613032 5696256 1612736 5696520 1613080 5696288 1613016 5696040 +1612920 5696056 1612880 5696080 1613032 5696256 1613016 5696040 +1612880 5696080 1612736 5696520 1613032 5696256 1612920 5696056 +1613080 5696288 1613088 5696064 1613016 5696040 1613032 5696256 +1613016 5696040 1612920 5696056 1613032 5696256 1613088 5696064 +1613080 5696288 1613088 5696064 1613032 5696256 1612736 5696520 +1613088 5696064 1613040 5696040 1613016 5696040 1613032 5696256 +1613080 5696288 1613168 5696072 1613088 5696064 1613032 5696256 +1613080 5696288 1613120 5696296 1613168 5696072 1613032 5696256 +1613080 5696288 1613168 5696072 1613032 5696256 1612736 5696520 +1613088 5696064 1613016 5696040 1613032 5696256 1613168 5696072 +1612736 5696520 1613016 5696248 1612880 5696080 1612560 5696144 +1613032 5696256 1613016 5696248 1612736 5696520 1613080 5696288 +1612880 5696080 1613016 5696248 1613032 5696256 1612920 5696056 +1613032 5696256 1613016 5696040 1612920 5696056 1613016 5696248 +1613032 5696256 1613088 5696064 1613016 5696040 1613016 5696248 +1613016 5696040 1612920 5696056 1613016 5696248 1613088 5696064 +1613016 5696248 1612736 5696520 1613032 5696256 1613088 5696064 +1612920 5696056 1612880 5696080 1613016 5696248 1613016 5696040 +1612880 5696080 1612736 5696520 1613016 5696248 1612920 5696056 +1613088 5696064 1613040 5696040 1613016 5696040 1613016 5696248 +1613032 5696256 1613168 5696072 1613088 5696064 1613016 5696248 +1612736 5696520 1612944 5696224 1612880 5696080 1612560 5696144 +1612880 5696080 1612480 5696016 1612560 5696144 1612944 5696224 +1613016 5696248 1612944 5696224 1612736 5696520 1613032 5696256 +1612880 5696080 1612944 5696224 1613016 5696248 1612920 5696056 +1613016 5696248 1613016 5696040 1612920 5696056 1612944 5696224 +1613016 5696248 1613088 5696064 1613016 5696040 1612944 5696224 +1612944 5696224 1612736 5696520 1613016 5696248 1613016 5696040 +1612920 5696056 1612880 5696080 1612944 5696224 1613016 5696040 +1612736 5696520 1613016 5696248 1612944 5696224 1612560 5696144 +1612944 5696224 1612920 5696056 1612880 5696080 1612560 5696144 +1612944 5696224 1612912 5696176 1612560 5696144 1612736 5696520 +1612560 5696144 1612912 5696176 1612880 5696080 1612480 5696016 +1612944 5696224 1612912 5696176 1612736 5696520 1613016 5696248 +1612944 5696224 1612880 5696080 1612912 5696176 1612736 5696520 +1612880 5696080 1612912 5696176 1612944 5696224 1612920 5696056 +1612944 5696224 1613016 5696040 1612920 5696056 1612912 5696176 +1612944 5696224 1613016 5696248 1613016 5696040 1612912 5696176 +1613016 5696248 1613088 5696064 1613016 5696040 1612912 5696176 +1613016 5696040 1612920 5696056 1612912 5696176 1613016 5696248 +1612912 5696176 1612736 5696520 1612944 5696224 1613016 5696248 +1612920 5696056 1612880 5696080 1612912 5696176 1613016 5696040 +1612912 5696176 1612880 5696080 1612560 5696144 1612736 5696520 +1612880 5696080 1612560 5696144 1612912 5696176 1612920 5696056 +1612560 5696144 1612880 5696136 1612880 5696080 1612480 5696016 +1612912 5696176 1612880 5696136 1612560 5696144 1612736 5696520 +1612880 5696080 1612880 5696136 1612912 5696176 1612920 5696056 +1612912 5696176 1613016 5696040 1612920 5696056 1612880 5696136 +1612880 5696136 1612560 5696144 1612912 5696176 1612920 5696056 +1612880 5696080 1612560 5696144 1612880 5696136 1612920 5696056 +1618368 5699568 1618792 5700016 1621464 5701464 1621488 5701424 +1617792 5700456 1618792 5700016 1618368 5699568 1618280 5699648 +1621464 5701464 1618792 5700016 1617792 5700456 1621448 5701528 +1617792 5700456 1618792 5700016 1618280 5699648 1617776 5700272 +1618792 5700016 1618368 5699568 1618280 5699648 1617776 5700272 +1618368 5699568 1618792 5700016 1621488 5701424 1618392 5699496 +1621488 5701424 1621576 5701360 1618392 5699496 1618792 5700016 +1621576 5701360 1619040 5698280 1618392 5699496 1618792 5700016 +1619040 5698280 1618384 5699440 1618392 5699496 1618792 5700016 +1619040 5698280 1618384 5699440 1618792 5700016 1621576 5701360 +1619040 5698280 1618936 5698304 1618384 5699440 1618792 5700016 +1621576 5701360 1619040 5698280 1618792 5700016 1621488 5701424 +1618792 5700016 1621464 5701464 1621488 5701424 1621576 5701360 +1618392 5699496 1618368 5699568 1618792 5700016 1618384 5699440 +1618792 5700016 1621448 5701528 1621464 5701464 1621488 5701424 +1617792 5700456 1621448 5701528 1618792 5700016 1617776 5700272 +1618368 5699568 1618280 5699648 1618792 5700016 1618392 5699496 +1621576 5701360 1622064 5698152 1619040 5698280 1618792 5700016 +1619040 5698280 1618384 5699440 1618792 5700016 1622064 5698152 +1621576 5701360 1622064 5698152 1618792 5700016 1621488 5701424 +1621576 5701360 1622296 5698320 1622064 5698152 1618792 5700016 +1622064 5698152 1621944 5698008 1619040 5698280 1618792 5700016 +1618280 5699648 1618184 5699664 1617776 5700272 1618792 5700016 +1618280 5699648 1618184 5699664 1618792 5700016 1618368 5699568 +1617776 5700272 1617792 5700456 1618792 5700016 1618184 5699664 +1618184 5699664 1617768 5700120 1617776 5700272 1618792 5700016 +1617792 5700456 1617760 5700568 1621448 5701528 1618792 5700016 +1621448 5701528 1621464 5701464 1618792 5700016 1617760 5700568 +1617792 5700456 1617760 5700568 1618792 5700016 1617776 5700272 +1617760 5700568 1617608 5700800 1621448 5701528 1618792 5700016 +1621448 5701528 1621464 5701464 1618792 5700016 1617608 5700800 +1617760 5700568 1617608 5700800 1618792 5700016 1617792 5700456 +1617608 5700800 1617496 5700904 1621448 5701528 1618792 5700016 +1618792 5700016 1618904 5699944 1619040 5698280 1618384 5699440 +1619040 5698280 1618936 5698304 1618384 5699440 1618904 5699944 +1618792 5700016 1618904 5699944 1618384 5699440 1618392 5699496 +1618904 5699944 1619040 5698280 1618384 5699440 1618392 5699496 +1618792 5700016 1618904 5699944 1618392 5699496 1618368 5699568 +1618904 5699944 1618384 5699440 1618392 5699496 1618368 5699568 +1618792 5700016 1622064 5698152 1618904 5699944 1618368 5699568 +1618792 5700016 1618904 5699944 1618368 5699568 1618280 5699648 +1618904 5699944 1622064 5698152 1619040 5698280 1618384 5699440 +1619040 5698280 1618904 5699944 1622064 5698152 1621944 5698008 +1619040 5698280 1618384 5699440 1618904 5699944 1621944 5698008 +1618904 5699944 1618792 5700016 1622064 5698152 1621944 5698008 +1619040 5698280 1618904 5699944 1621944 5698008 1619064 5698240 +1622064 5698152 1618904 5699944 1618792 5700016 1621576 5701360 +1618792 5700016 1621488 5701424 1621576 5701360 1618904 5699944 +1618792 5700016 1621464 5701464 1621488 5701424 1618904 5699944 +1621488 5701424 1621576 5701360 1618904 5699944 1621464 5701464 +1622064 5698152 1618904 5699944 1621576 5701360 1622296 5698320 +1618792 5700016 1621448 5701528 1621464 5701464 1618904 5699944 +1621464 5701464 1621488 5701424 1618904 5699944 1621448 5701528 +1618792 5700016 1617608 5700800 1621448 5701528 1618904 5699944 +1618904 5699944 1618368 5699568 1618792 5700016 1621448 5701528 +1622064 5698152 1621944 5698008 1618904 5699944 1621576 5701360 +1621576 5701360 1622064 5698152 1618904 5699944 1621488 5701424 +1618904 5699944 1619056 5699728 1619040 5698280 1618384 5699440 +1618904 5699944 1619056 5699728 1618384 5699440 1618392 5699496 +1619040 5698280 1618936 5698304 1618384 5699440 1619056 5699728 +1618904 5699944 1619056 5699728 1618392 5699496 1618368 5699568 +1619056 5699728 1618384 5699440 1618392 5699496 1618368 5699568 +1618904 5699944 1619056 5699728 1618368 5699568 1618792 5700016 +1619056 5699728 1618936 5698304 1618384 5699440 1618392 5699496 +1618904 5699944 1621944 5698008 1619056 5699728 1618368 5699568 +1619056 5699728 1621944 5698008 1619040 5698280 1618936 5698304 +1619040 5698280 1619056 5699728 1621944 5698008 1619064 5698240 +1619040 5698280 1618936 5698304 1619056 5699728 1619064 5698240 +1619056 5699728 1618904 5699944 1621944 5698008 1619064 5698240 +1621944 5698008 1619064 5698200 1619064 5698240 1619056 5699728 +1621944 5698008 1619056 5699728 1618904 5699944 1622064 5698152 +1619056 5699728 1618368 5699568 1618904 5699944 1622064 5698152 +1618904 5699944 1621576 5701360 1622064 5698152 1619056 5699728 +1621576 5701360 1622296 5698320 1622064 5698152 1619056 5699728 +1618904 5699944 1621576 5701360 1619056 5699728 1618368 5699568 +1621944 5698008 1619064 5698240 1619056 5699728 1622064 5698152 +1622064 5698152 1621944 5698008 1619056 5699728 1621576 5701360 +1618904 5699944 1621488 5701424 1621576 5701360 1619056 5699728 +1618904 5699944 1621464 5701464 1621488 5701424 1619056 5699728 +1618904 5699944 1621448 5701528 1621464 5701464 1619056 5699728 +1618904 5699944 1621464 5701464 1619056 5699728 1618368 5699568 +1621576 5701360 1622064 5698152 1619056 5699728 1621488 5701424 +1621488 5701424 1621576 5701360 1619056 5699728 1621464 5701464 +1618936 5698304 1618504 5698568 1618384 5699440 1619056 5699728 +1618936 5698304 1618504 5698568 1619056 5699728 1619040 5698280 +1618384 5699440 1618392 5699496 1619056 5699728 1618504 5698568 +1618504 5698568 1618424 5698632 1618384 5699440 1619056 5699728 +1618936 5698304 1618536 5698512 1618504 5698568 1619056 5699728 +1622064 5698152 1619136 5699704 1621576 5701360 1622296 5698320 +1621576 5701360 1619136 5699704 1619056 5699728 1621488 5701424 +1619136 5699704 1622064 5698152 1619056 5699728 1621488 5701424 +1621576 5701360 1622064 5698152 1619136 5699704 1621488 5701424 +1619056 5699728 1619136 5699704 1622064 5698152 1621944 5698008 +1619056 5699728 1621488 5701424 1619136 5699704 1621944 5698008 +1619056 5699728 1619136 5699704 1621944 5698008 1619064 5698240 +1619056 5699728 1621488 5701424 1619136 5699704 1619064 5698240 +1619136 5699704 1621576 5701360 1622064 5698152 1621944 5698008 +1619056 5699728 1619136 5699704 1619064 5698240 1619040 5698280 +1619056 5699728 1619136 5699704 1619040 5698280 1618936 5698304 +1619056 5699728 1619136 5699704 1618936 5698304 1618504 5698568 +1619136 5699704 1619040 5698280 1618936 5698304 1618504 5698568 +1619056 5699728 1621488 5701424 1619136 5699704 1618504 5698568 +1619136 5699704 1621944 5698008 1619064 5698240 1619040 5698280 +1619136 5699704 1619064 5698240 1619040 5698280 1618936 5698304 +1621944 5698008 1619064 5698200 1619064 5698240 1619136 5699704 +1619136 5699704 1622064 5698152 1621944 5698008 1619064 5698240 +1619056 5699728 1621464 5701464 1621488 5701424 1619136 5699704 +1619056 5699728 1618904 5699944 1621464 5701464 1619136 5699704 +1618904 5699944 1621448 5701528 1621464 5701464 1619136 5699704 +1621488 5701424 1621576 5701360 1619136 5699704 1621464 5701464 +1619056 5699728 1618904 5699944 1619136 5699704 1618504 5698568 +1621464 5701464 1621488 5701424 1619136 5699704 1618904 5699944 +1619056 5699728 1619136 5699704 1618504 5698568 1618384 5699440 +1619136 5699704 1618936 5698304 1618504 5698568 1618384 5699440 +1619056 5699728 1619136 5699704 1618384 5699440 1618392 5699496 +1619056 5699728 1618904 5699944 1619136 5699704 1618384 5699440 +1618504 5698568 1618424 5698632 1618384 5699440 1619136 5699704 +1618936 5698304 1618536 5698512 1618504 5698568 1619136 5699704 +1618904 5699944 1619152 5699792 1619136 5699704 1619056 5699728 +1621464 5701464 1619152 5699792 1618904 5699944 1621448 5701528 +1618904 5699944 1618792 5700016 1621448 5701528 1619152 5699792 +1619152 5699792 1621464 5701464 1619136 5699704 1619056 5699728 +1621464 5701464 1619136 5699704 1619152 5699792 1621448 5701528 +1618904 5699944 1621448 5701528 1619152 5699792 1619056 5699728 +1619136 5699704 1619152 5699792 1621464 5701464 1621488 5701424 +1619136 5699704 1619152 5699792 1621488 5701424 1621576 5701360 +1619136 5699704 1619056 5699728 1619152 5699792 1621576 5701360 +1619136 5699704 1619152 5699792 1621576 5701360 1622064 5698152 +1621576 5701360 1622296 5698320 1622064 5698152 1619152 5699792 +1619152 5699792 1621488 5701424 1621576 5701360 1622064 5698152 +1619136 5699704 1619152 5699792 1622064 5698152 1621944 5698008 +1619136 5699704 1619056 5699728 1619152 5699792 1622064 5698152 +1619152 5699792 1621448 5701528 1621464 5701464 1621488 5701424 +1619152 5699792 1621464 5701464 1621488 5701424 1621576 5701360 +1619152 5699792 1619152 5699888 1621448 5701528 1621464 5701464 +1621448 5701528 1619152 5699888 1618904 5699944 1618792 5700016 +1621448 5701528 1619152 5699888 1618792 5700016 1617608 5700800 +1619152 5699792 1619152 5699888 1621464 5701464 1621488 5701424 +1619152 5699888 1621448 5701528 1621464 5701464 1621488 5701424 +1619152 5699792 1618904 5699944 1619152 5699888 1621488 5701424 +1618904 5699944 1619152 5699888 1619152 5699792 1619056 5699728 +1619152 5699792 1619136 5699704 1619056 5699728 1619152 5699888 +1619152 5699888 1621488 5701424 1619152 5699792 1619056 5699728 +1619152 5699888 1618792 5700016 1621448 5701528 1621464 5701464 +1619152 5699888 1619056 5699728 1618904 5699944 1618792 5700016 +1619152 5699792 1619152 5699888 1621488 5701424 1621576 5701360 +1619152 5699792 1619152 5699888 1621576 5701360 1622064 5698152 +1619152 5699888 1621464 5701464 1621488 5701424 1621576 5701360 +1619152 5699792 1619056 5699728 1619152 5699888 1621576 5701360 +1621448 5701528 1619104 5700088 1618792 5700016 1617608 5700800 +1618792 5700016 1619104 5700088 1619152 5699888 1618904 5699944 +1619152 5699888 1619104 5700088 1621448 5701528 1621464 5701464 +1619152 5699888 1619104 5700088 1621464 5701464 1621488 5701424 +1619152 5699888 1619104 5700088 1621488 5701424 1621576 5701360 +1619104 5700088 1621448 5701528 1621464 5701464 1621488 5701424 +1619104 5700088 1621488 5701424 1619152 5699888 1618904 5699944 +1619152 5699888 1619056 5699728 1618904 5699944 1619104 5700088 +1621448 5701528 1621464 5701464 1619104 5700088 1617608 5700800 +1619104 5700088 1618904 5699944 1618792 5700016 1617608 5700800 +1618792 5700016 1617760 5700568 1617608 5700800 1619104 5700088 +1617608 5700800 1621448 5701528 1619104 5700088 1617760 5700568 +1618792 5700016 1617760 5700568 1619104 5700088 1618904 5699944 +1618792 5700016 1617792 5700456 1617760 5700568 1619104 5700088 +1621448 5701528 1619104 5700088 1617608 5700800 1617496 5700904 +1617608 5700800 1619104 5700160 1619104 5700088 1617760 5700568 +1619104 5700088 1619104 5700160 1621448 5701528 1621464 5701464 +1619104 5700088 1619104 5700160 1621464 5701464 1621488 5701424 +1619104 5700088 1619104 5700160 1621488 5701424 1619152 5699888 +1621488 5701424 1621576 5701360 1619152 5699888 1619104 5700160 +1619104 5700160 1621464 5701464 1621488 5701424 1619152 5699888 +1619104 5700160 1621448 5701528 1621464 5701464 1621488 5701424 +1619104 5700160 1619152 5699888 1619104 5700088 1617760 5700568 +1619104 5700160 1617608 5700800 1621448 5701528 1621464 5701464 +1617608 5700800 1621448 5701528 1619104 5700160 1617760 5700568 +1619104 5700088 1618792 5700016 1617760 5700568 1619104 5700160 +1617760 5700568 1617608 5700800 1619104 5700160 1618792 5700016 +1619104 5700088 1618792 5700016 1619104 5700160 1619152 5699888 +1619104 5700088 1618904 5699944 1618792 5700016 1619104 5700160 +1618792 5700016 1617792 5700456 1617760 5700568 1619104 5700160 +1621448 5701528 1619104 5700160 1617608 5700800 1617496 5700904 +1619104 5700160 1619144 5700272 1621448 5701528 1621464 5701464 +1619104 5700160 1619144 5700272 1621464 5701464 1621488 5701424 +1619104 5700160 1619144 5700272 1621488 5701424 1619152 5699888 +1619104 5700160 1619144 5700272 1619152 5699888 1619104 5700088 +1621488 5701424 1621576 5701360 1619152 5699888 1619144 5700272 +1619144 5700272 1621576 5701360 1619152 5699888 1619104 5700088 +1619144 5700272 1621464 5701464 1621488 5701424 1621576 5701360 +1619144 5700272 1621448 5701528 1621464 5701464 1621488 5701424 +1619104 5700160 1617608 5700800 1619144 5700272 1619104 5700088 +1617608 5700800 1619144 5700272 1619104 5700160 1617760 5700568 +1619104 5700160 1618792 5700016 1617760 5700568 1619144 5700272 +1619144 5700272 1619104 5700088 1619104 5700160 1618792 5700016 +1617760 5700568 1617608 5700800 1619144 5700272 1618792 5700016 +1619144 5700272 1617608 5700800 1621448 5701528 1621464 5701464 +1617608 5700800 1621448 5701528 1619144 5700272 1617760 5700568 +1621576 5701360 1619152 5699792 1619152 5699888 1619144 5700272 +1618792 5700016 1617792 5700456 1617760 5700568 1619144 5700272 +1619104 5700160 1619104 5700088 1618792 5700016 1619144 5700272 +1621448 5701528 1619144 5700272 1617608 5700800 1617496 5700904 +1621448 5701528 1619144 5700272 1617496 5700904 1621664 5703552 +1621448 5701528 1619144 5700272 1621664 5703552 1621752 5702000 +1617496 5700904 1617392 5700976 1621664 5703552 1619144 5700272 +1621448 5701528 1621464 5701464 1619144 5700272 1621664 5703552 +1619144 5700272 1617760 5700568 1617608 5700800 1617496 5700904 +1619144 5700272 1617608 5700800 1617496 5700904 1621664 5703552 +1621664 5703552 1619152 5700320 1617496 5700904 1617392 5700976 +1619144 5700272 1619152 5700320 1621664 5703552 1621448 5701528 +1621664 5703552 1621752 5702000 1621448 5701528 1619152 5700320 +1619144 5700272 1619152 5700320 1621448 5701528 1621464 5701464 +1619152 5700320 1621664 5703552 1621448 5701528 1621464 5701464 +1619144 5700272 1619152 5700320 1621464 5701464 1621488 5701424 +1619144 5700272 1619152 5700320 1621488 5701424 1621576 5701360 +1619144 5700272 1619152 5700320 1621576 5701360 1619152 5699888 +1619144 5700272 1619152 5700320 1619152 5699888 1619104 5700088 +1619152 5700320 1621488 5701424 1621576 5701360 1619152 5699888 +1619152 5700320 1621464 5701464 1621488 5701424 1621576 5701360 +1619152 5700320 1621448 5701528 1621464 5701464 1621488 5701424 +1619144 5700272 1617496 5700904 1619152 5700320 1619152 5699888 +1619152 5700320 1617496 5700904 1621664 5703552 1621448 5701528 +1621576 5701360 1619152 5699792 1619152 5699888 1619152 5700320 +1617496 5700904 1619152 5700320 1619144 5700272 1617608 5700800 +1619152 5700320 1619152 5699888 1619144 5700272 1617608 5700800 +1619144 5700272 1617760 5700568 1617608 5700800 1619152 5700320 +1619144 5700272 1618792 5700016 1617760 5700568 1619152 5700320 +1619144 5700272 1619104 5700160 1618792 5700016 1619152 5700320 +1619144 5700272 1618792 5700016 1619152 5700320 1619152 5699888 +1617760 5700568 1617608 5700800 1619152 5700320 1618792 5700016 +1617496 5700904 1621664 5703552 1619152 5700320 1617608 5700800 +1618792 5700016 1617792 5700456 1617760 5700568 1619152 5700320 +1617608 5700800 1617496 5700904 1619152 5700320 1617760 5700568 +1621664 5703552 1619104 5700408 1617496 5700904 1617392 5700976 +1619152 5700320 1619104 5700408 1621664 5703552 1621448 5701528 +1621664 5703552 1621752 5702000 1621448 5701528 1619104 5700408 +1619152 5700320 1619104 5700408 1621448 5701528 1621464 5701464 +1619152 5700320 1619104 5700408 1621464 5701464 1621488 5701424 +1619104 5700408 1621664 5703552 1621448 5701528 1621464 5701464 +1619152 5700320 1617496 5700904 1619104 5700408 1621464 5701464 +1617496 5700904 1619104 5700408 1619152 5700320 1617608 5700800 +1619104 5700408 1621464 5701464 1619152 5700320 1617608 5700800 +1619104 5700408 1617496 5700904 1621664 5703552 1621448 5701528 +1617496 5700904 1621664 5703552 1619104 5700408 1617608 5700800 +1619152 5700320 1617760 5700568 1617608 5700800 1619104 5700408 +1619152 5700320 1618792 5700016 1617760 5700568 1619104 5700408 +1619152 5700320 1619144 5700272 1618792 5700016 1619104 5700408 +1619144 5700272 1619104 5700160 1618792 5700016 1619104 5700408 +1619144 5700272 1619104 5700160 1619104 5700408 1619152 5700320 +1618792 5700016 1617760 5700568 1619104 5700408 1619104 5700160 +1619152 5700320 1619144 5700272 1619104 5700408 1621464 5701464 +1617608 5700800 1617496 5700904 1619104 5700408 1617760 5700568 +1618792 5700016 1617792 5700456 1617760 5700568 1619104 5700408 +1618792 5700016 1617776 5700272 1617792 5700456 1619104 5700408 +1618792 5700016 1617792 5700456 1619104 5700408 1619104 5700160 +1619104 5700160 1619104 5700088 1618792 5700016 1619104 5700408 +1617760 5700568 1617608 5700800 1619104 5700408 1617792 5700456 +1621664 5703552 1619000 5700480 1617496 5700904 1617392 5700976 +1621664 5703552 1619000 5700480 1617392 5700976 1621664 5703600 +1619104 5700408 1619000 5700480 1621664 5703552 1621448 5701528 +1621664 5703552 1621752 5702000 1621448 5701528 1619000 5700480 +1619104 5700408 1619000 5700480 1621448 5701528 1621464 5701464 +1619104 5700408 1617496 5700904 1619000 5700480 1621448 5701528 +1617496 5700904 1619000 5700480 1619104 5700408 1617608 5700800 +1619104 5700408 1617760 5700568 1617608 5700800 1619000 5700480 +1619000 5700480 1621448 5701528 1619104 5700408 1617760 5700568 +1617608 5700800 1617496 5700904 1619000 5700480 1617760 5700568 +1621664 5703552 1621448 5701528 1619000 5700480 1617392 5700976 +1619000 5700480 1617608 5700800 1617496 5700904 1617392 5700976 +1619104 5700408 1617792 5700456 1617760 5700568 1619000 5700480 +1617760 5700568 1617608 5700800 1619000 5700480 1617792 5700456 +1619104 5700408 1617792 5700456 1619000 5700480 1621448 5701528 +1619104 5700408 1618792 5700016 1617792 5700456 1619000 5700480 +1618792 5700016 1617776 5700272 1617792 5700456 1619000 5700480 +1619104 5700408 1619104 5700160 1618792 5700016 1619000 5700480 +1619104 5700408 1619144 5700272 1619104 5700160 1619000 5700480 +1619104 5700408 1619152 5700320 1619144 5700272 1619000 5700480 +1619104 5700160 1618792 5700016 1619000 5700480 1619144 5700272 +1619104 5700408 1619144 5700272 1619000 5700480 1621448 5701528 +1618792 5700016 1617792 5700456 1619000 5700480 1619104 5700160 +1619104 5700160 1619104 5700088 1618792 5700016 1619000 5700480 +1617792 5700456 1617760 5700568 1619000 5700480 1618792 5700016 +1619000 5700480 1618824 5700480 1617760 5700568 1617608 5700800 +1619000 5700480 1618824 5700480 1617608 5700800 1617496 5700904 +1618824 5700480 1617760 5700568 1617608 5700800 1617496 5700904 +1619000 5700480 1617792 5700456 1618824 5700480 1617496 5700904 +1619000 5700480 1618824 5700480 1617496 5700904 1617392 5700976 +1618824 5700480 1617792 5700456 1617760 5700568 1617608 5700800 +1617792 5700456 1618824 5700480 1619000 5700480 1618792 5700016 +1617792 5700456 1618824 5700480 1618792 5700016 1617776 5700272 +1618792 5700016 1618184 5699664 1617776 5700272 1618824 5700480 +1618824 5700480 1617496 5700904 1619000 5700480 1618792 5700016 +1617792 5700456 1617760 5700568 1618824 5700480 1617776 5700272 +1619000 5700480 1619104 5700160 1618792 5700016 1618824 5700480 +1619000 5700480 1619144 5700272 1619104 5700160 1618824 5700480 +1619000 5700480 1619104 5700160 1618824 5700480 1617496 5700904 +1619104 5700160 1619104 5700088 1618792 5700016 1618824 5700480 +1618824 5700480 1619104 5700160 1618792 5700016 1617776 5700272 +1617776 5700272 1618728 5700448 1618792 5700016 1618184 5699664 +1617776 5700272 1618728 5700448 1618184 5699664 1617768 5700120 +1618824 5700480 1618728 5700448 1617776 5700272 1617792 5700456 +1618824 5700480 1618792 5700016 1618728 5700448 1617792 5700456 +1618824 5700480 1618728 5700448 1617792 5700456 1617760 5700568 +1618728 5700448 1617776 5700272 1617792 5700456 1617760 5700568 +1618824 5700480 1618728 5700448 1617760 5700568 1617608 5700800 +1618824 5700480 1618728 5700448 1617608 5700800 1617496 5700904 +1618824 5700480 1618792 5700016 1618728 5700448 1617608 5700800 +1618728 5700448 1617792 5700456 1617760 5700568 1617608 5700800 +1617776 5700272 1617792 5700456 1618728 5700448 1618184 5699664 +1618728 5700448 1618824 5700480 1618792 5700016 1618184 5699664 +1618792 5700016 1618280 5699648 1618184 5699664 1618728 5700448 +1618792 5700016 1618728 5700448 1618824 5700480 1619104 5700160 +1618728 5700448 1618648 5700440 1617792 5700456 1617760 5700568 +1618728 5700448 1618648 5700440 1617760 5700568 1617608 5700800 +1618648 5700440 1617792 5700456 1617760 5700568 1617608 5700800 +1618728 5700448 1618648 5700440 1617608 5700800 1618824 5700480 +1617608 5700800 1617496 5700904 1618824 5700480 1618648 5700440 +1618648 5700440 1617760 5700568 1617608 5700800 1618824 5700480 +1617776 5700272 1618648 5700440 1618728 5700448 1618184 5699664 +1618728 5700448 1618792 5700016 1618184 5699664 1618648 5700440 +1617776 5700272 1618648 5700440 1618184 5699664 1617768 5700120 +1618184 5699664 1617832 5699808 1617768 5700120 1618648 5700440 +1618184 5699664 1617768 5700120 1618648 5700440 1618792 5700016 +1618728 5700448 1618792 5700016 1618648 5700440 1618824 5700480 +1618728 5700448 1618824 5700480 1618792 5700016 1618648 5700440 +1618648 5700440 1617776 5700272 1617792 5700456 1617760 5700568 +1617776 5700272 1617792 5700456 1618648 5700440 1617768 5700120 +1618792 5700016 1618280 5699648 1618184 5699664 1618648 5700440 +1618792 5700016 1618368 5699568 1618280 5699648 1618648 5700440 +1618792 5700016 1618280 5699648 1618648 5700440 1618728 5700448 +1618184 5699664 1617768 5700120 1618648 5700440 1618280 5699648 +1618648 5700440 1618472 5700368 1617768 5700120 1617776 5700272 +1617768 5700120 1618472 5700368 1618184 5699664 1617832 5699808 +1618184 5699664 1618472 5700368 1618648 5700440 1618280 5699648 +1618648 5700440 1618280 5699648 1618472 5700368 1617776 5700272 +1618648 5700440 1618472 5700368 1617776 5700272 1617792 5700456 +1618472 5700368 1617768 5700120 1617776 5700272 1617792 5700456 +1618648 5700440 1618472 5700368 1617792 5700456 1617760 5700568 +1618648 5700440 1618472 5700368 1617760 5700568 1617608 5700800 +1618648 5700440 1618280 5699648 1618472 5700368 1617760 5700568 +1618472 5700368 1617776 5700272 1617792 5700456 1617760 5700568 +1618472 5700368 1618184 5699664 1617768 5700120 1617776 5700272 +1618184 5699664 1617768 5700120 1618472 5700368 1618280 5699648 +1618648 5700440 1618792 5700016 1618280 5699648 1618472 5700368 +1618792 5700016 1618368 5699568 1618280 5699648 1618472 5700368 +1618648 5700440 1618728 5700448 1618792 5700016 1618472 5700368 +1618280 5699648 1618184 5699664 1618472 5700368 1618792 5700016 +1618648 5700440 1618792 5700016 1618472 5700368 1617760 5700568 +1617768 5700120 1618424 5700328 1618184 5699664 1617832 5699808 +1618472 5700368 1618424 5700328 1617768 5700120 1617776 5700272 +1618472 5700368 1618424 5700328 1617776 5700272 1617792 5700456 +1618472 5700368 1618424 5700328 1617792 5700456 1617760 5700568 +1618424 5700328 1617776 5700272 1617792 5700456 1617760 5700568 +1618472 5700368 1618424 5700328 1617760 5700568 1618648 5700440 +1618424 5700328 1617768 5700120 1617776 5700272 1617792 5700456 +1618472 5700368 1618184 5699664 1618424 5700328 1617760 5700568 +1618184 5699664 1618424 5700328 1618472 5700368 1618280 5699648 +1618472 5700368 1618792 5700016 1618280 5699648 1618424 5700328 +1618792 5700016 1618368 5699568 1618280 5699648 1618424 5700328 +1618424 5700328 1617760 5700568 1618472 5700368 1618792 5700016 +1618280 5699648 1618184 5699664 1618424 5700328 1618792 5700016 +1618424 5700328 1618184 5699664 1617768 5700120 1617776 5700272 +1618184 5699664 1617768 5700120 1618424 5700328 1618280 5699648 +1618472 5700368 1618648 5700440 1618792 5700016 1618424 5700328 +1618280 5699648 1618424 5700216 1618792 5700016 1618368 5699568 +1618792 5700016 1618424 5700216 1618424 5700328 1618472 5700368 +1618424 5700328 1618424 5700216 1618280 5699648 1618184 5699664 +1618424 5700216 1618184 5699664 1618424 5700328 1618472 5700368 +1618424 5700328 1618424 5700216 1618184 5699664 1617768 5700120 +1618184 5699664 1617832 5699808 1617768 5700120 1618424 5700216 +1618184 5699664 1617920 5699672 1617832 5699808 1618424 5700216 +1618424 5700216 1618280 5699648 1618184 5699664 1617832 5699808 +1618424 5700328 1618424 5700216 1617768 5700120 1617776 5700272 +1618424 5700328 1618424 5700216 1617776 5700272 1617792 5700456 +1618424 5700328 1618472 5700368 1618424 5700216 1617776 5700272 +1617768 5700120 1617776 5700272 1618424 5700216 1617832 5699808 +1618424 5700216 1618792 5700016 1618280 5699648 1618184 5699664 +1618792 5700016 1618280 5699648 1618424 5700216 1618472 5700368 +1618792 5700016 1618424 5700216 1618472 5700368 1618648 5700440 +1618792 5700016 1618424 5700216 1618648 5700440 1618728 5700448 +1618424 5700216 1618424 5700328 1618472 5700368 1618648 5700440 +1618792 5700016 1618280 5699648 1618424 5700216 1618648 5700440 +1618280 5699648 1618464 5700144 1618792 5700016 1618368 5699568 +1618792 5700016 1618904 5699944 1618368 5699568 1618464 5700144 +1618424 5700216 1618464 5700144 1618280 5699648 1618184 5699664 +1618424 5700216 1618464 5700144 1618184 5699664 1617832 5699808 +1618792 5700016 1618464 5700144 1618424 5700216 1618648 5700440 +1618792 5700016 1618464 5700144 1618648 5700440 1618728 5700448 +1618424 5700216 1618648 5700440 1618464 5700144 1618184 5699664 +1618280 5699648 1618184 5699664 1618464 5700144 1618368 5699568 +1618464 5700144 1618648 5700440 1618792 5700016 1618368 5699568 +1618424 5700216 1618472 5700368 1618648 5700440 1618464 5700144 +1618424 5700216 1618424 5700328 1618472 5700368 1618464 5700144 +1618648 5700440 1618792 5700016 1618464 5700144 1618472 5700368 +1618424 5700216 1618472 5700368 1618464 5700144 1618184 5699664 +1618464 5700144 1618528 5700080 1618368 5699568 1618280 5699648 +1618368 5699568 1618528 5700080 1618792 5700016 1618904 5699944 +1618464 5700144 1618528 5700080 1618280 5699648 1618184 5699664 +1618464 5700144 1618792 5700016 1618528 5700080 1618280 5699648 +1618792 5700016 1618528 5700080 1618464 5700144 1618648 5700440 +1618792 5700016 1618368 5699568 1618528 5700080 1618648 5700440 +1618792 5700016 1618528 5700080 1618648 5700440 1618728 5700448 +1618464 5700144 1618472 5700368 1618648 5700440 1618528 5700080 +1618528 5700080 1618280 5699648 1618464 5700144 1618648 5700440 +1618528 5700080 1618792 5700016 1618368 5699568 1618280 5699648 +1618792 5700016 1618568 5700056 1618528 5700080 1618648 5700440 +1618568 5700056 1618368 5699568 1618528 5700080 1618648 5700440 +1618792 5700016 1618568 5700056 1618648 5700440 1618728 5700448 +1618568 5700056 1618528 5700080 1618648 5700440 1618728 5700448 +1618368 5699568 1618568 5700056 1618792 5700016 1618904 5699944 +1618792 5700016 1618568 5700056 1618728 5700448 1618824 5700480 +1618528 5700080 1618464 5700144 1618648 5700440 1618568 5700056 +1618528 5700080 1618568 5700056 1618368 5699568 1618280 5699648 +1618528 5700080 1618568 5700056 1618280 5699648 1618464 5700144 +1618528 5700080 1618648 5700440 1618568 5700056 1618280 5699648 +1618568 5700056 1618792 5700016 1618368 5699568 1618280 5699648 +1618792 5700016 1618368 5699568 1618568 5700056 1618728 5700448 +1618728 5700448 1618736 5700032 1618568 5700056 1618648 5700440 +1618568 5700056 1618528 5700080 1618648 5700440 1618736 5700032 +1618792 5700016 1618736 5700032 1618728 5700448 1618824 5700480 +1618736 5700032 1618792 5700016 1618568 5700056 1618648 5700440 +1618568 5700056 1618736 5700032 1618792 5700016 1618368 5699568 +1618568 5700056 1618736 5700032 1618368 5699568 1618280 5699648 +1618792 5700016 1618904 5699944 1618368 5699568 1618736 5700032 +1618904 5699944 1619056 5699728 1618368 5699568 1618736 5700032 +1618568 5700056 1618648 5700440 1618736 5700032 1618368 5699568 +1618368 5699568 1618568 5700056 1618736 5700032 1618904 5699944 +1618736 5700032 1618728 5700448 1618792 5700016 1618904 5699944 +1618728 5700448 1618792 5700016 1618736 5700032 1618648 5700440 +1619136 5699704 1618920 5698448 1618504 5698568 1618384 5699440 +1618936 5698304 1618920 5698448 1619136 5699704 1619040 5698280 +1618504 5698568 1618424 5698632 1618384 5699440 1618920 5698448 +1618920 5698448 1618936 5698304 1618504 5698568 1618384 5699440 +1618936 5698304 1618504 5698568 1618920 5698448 1619040 5698280 +1619136 5699704 1619040 5698280 1618920 5698448 1618384 5699440 +1619136 5699704 1619064 5698240 1619040 5698280 1618920 5698448 +1619136 5699704 1618920 5698448 1618384 5699440 1619056 5699728 +1618504 5698568 1618920 5698448 1618936 5698304 1618536 5698512 +1618936 5698304 1618864 5698296 1618536 5698512 1618920 5698448 +1618864 5698296 1618528 5698432 1618536 5698512 1618920 5698448 +1618864 5698296 1618736 5698224 1618528 5698432 1618920 5698448 +1618864 5698296 1618528 5698432 1618920 5698448 1618936 5698304 +1618504 5698568 1618384 5699440 1618920 5698448 1618536 5698512 +1618920 5698448 1619040 5698280 1618936 5698304 1618864 5698296 +1618536 5698512 1618504 5698568 1618920 5698448 1618528 5698432 +1618920 5698448 1619008 5698448 1619040 5698280 1618936 5698304 +1618920 5698448 1619008 5698448 1618936 5698304 1618864 5698296 +1618920 5698448 1619136 5699704 1619008 5698448 1618936 5698304 +1619136 5699704 1619008 5698448 1618920 5698448 1618384 5699440 +1619008 5698448 1619136 5699704 1619040 5698280 1618936 5698304 +1619040 5698280 1619008 5698448 1619136 5699704 1619064 5698240 +1619136 5699704 1621944 5698008 1619064 5698240 1619008 5698448 +1619040 5698280 1618936 5698304 1619008 5698448 1619064 5698240 +1619008 5698448 1618920 5698448 1619136 5699704 1621944 5698008 +1619064 5698240 1619040 5698280 1619008 5698448 1621944 5698008 +1621944 5698008 1619064 5698200 1619064 5698240 1619008 5698448 +1619136 5699704 1622064 5698152 1621944 5698008 1619008 5698448 +1619008 5698448 1619088 5698488 1621944 5698008 1619064 5698240 +1619008 5698448 1619136 5699704 1619088 5698488 1619064 5698240 +1619136 5699704 1619088 5698488 1619008 5698448 1618920 5698448 +1619136 5699704 1619088 5698488 1618920 5698448 1618384 5699440 +1618920 5698448 1618504 5698568 1618384 5699440 1619088 5698488 +1618504 5698568 1618424 5698632 1618384 5699440 1619088 5698488 +1618920 5698448 1618536 5698512 1618504 5698568 1619088 5698488 +1618384 5699440 1619136 5699704 1619088 5698488 1618504 5698568 +1619088 5698488 1619064 5698240 1619008 5698448 1618920 5698448 +1619088 5698488 1619008 5698448 1618920 5698448 1618504 5698568 +1619088 5698488 1619136 5699704 1621944 5698008 1619064 5698240 +1619136 5699704 1621944 5698008 1619088 5698488 1618384 5699440 +1619008 5698448 1619088 5698488 1619064 5698240 1619040 5698280 +1619088 5698488 1621944 5698008 1619064 5698240 1619040 5698280 +1619008 5698448 1619088 5698488 1619040 5698280 1618936 5698304 +1619008 5698448 1618920 5698448 1619088 5698488 1619040 5698280 +1621944 5698008 1619064 5698200 1619064 5698240 1619088 5698488 +1621944 5698008 1619088 5698488 1619136 5699704 1622064 5698152 +1619136 5699704 1619088 5698488 1618384 5699440 1619056 5699728 +1619088 5698488 1619104 5698544 1621944 5698008 1619064 5698240 +1619088 5698488 1619104 5698544 1619064 5698240 1619040 5698280 +1619088 5698488 1619136 5699704 1619104 5698544 1619064 5698240 +1619136 5699704 1619104 5698544 1619088 5698488 1618384 5699440 +1619088 5698488 1618504 5698568 1618384 5699440 1619104 5698544 +1619088 5698488 1618920 5698448 1618504 5698568 1619104 5698544 +1618504 5698568 1618424 5698632 1618384 5699440 1619104 5698544 +1618920 5698448 1618536 5698512 1618504 5698568 1619104 5698544 +1618504 5698568 1618424 5698632 1619104 5698544 1618920 5698448 +1619088 5698488 1619008 5698448 1618920 5698448 1619104 5698544 +1618920 5698448 1618504 5698568 1619104 5698544 1619008 5698448 +1619104 5698544 1619064 5698240 1619088 5698488 1619008 5698448 +1618384 5699440 1619136 5699704 1619104 5698544 1618424 5698632 +1619104 5698544 1619136 5699704 1621944 5698008 1619064 5698240 +1619136 5699704 1621944 5698008 1619104 5698544 1618384 5699440 +1621944 5698008 1619064 5698200 1619064 5698240 1619104 5698544 +1619064 5698240 1619088 5698488 1619104 5698544 1619064 5698200 +1621944 5698008 1619064 5698200 1619104 5698544 1619136 5699704 +1621944 5698008 1621936 5697864 1619064 5698200 1619104 5698544 +1621944 5698008 1619104 5698544 1619136 5699704 1622064 5698152 +1619136 5699704 1619104 5698544 1618384 5699440 1619056 5699728 +1618384 5699440 1618392 5699496 1619056 5699728 1619104 5698544 +1619104 5698544 1618424 5698632 1618384 5699440 1619056 5699728 +1619136 5699704 1621944 5698008 1619104 5698544 1619056 5699728 +1618424 5698632 1618248 5699336 1618384 5699440 1619104 5698544 +1619056 5699728 1619096 5698576 1618384 5699440 1618392 5699496 +1618384 5699440 1619096 5698576 1619104 5698544 1618424 5698632 +1619104 5698544 1618504 5698568 1618424 5698632 1619096 5698576 +1619104 5698544 1618920 5698448 1618504 5698568 1619096 5698576 +1619104 5698544 1619008 5698448 1618920 5698448 1619096 5698576 +1618504 5698568 1618424 5698632 1619096 5698576 1618920 5698448 +1618920 5698448 1618536 5698512 1618504 5698568 1619096 5698576 +1618920 5698448 1618504 5698568 1619096 5698576 1619008 5698448 +1619104 5698544 1619088 5698488 1619008 5698448 1619096 5698576 +1619008 5698448 1618920 5698448 1619096 5698576 1619088 5698488 +1618424 5698632 1618384 5699440 1619096 5698576 1618504 5698568 +1619096 5698576 1619056 5699728 1619104 5698544 1619088 5698488 +1618384 5699440 1619056 5699728 1619096 5698576 1618424 5698632 +1619104 5698544 1619096 5698576 1619056 5699728 1619136 5699704 +1619104 5698544 1619088 5698488 1619096 5698576 1619136 5699704 +1619104 5698544 1619096 5698576 1619136 5699704 1621944 5698008 +1619104 5698544 1619096 5698576 1621944 5698008 1619064 5698200 +1619104 5698544 1619088 5698488 1619096 5698576 1621944 5698008 +1619096 5698576 1618384 5699440 1619056 5699728 1619136 5699704 +1619136 5699704 1622064 5698152 1621944 5698008 1619096 5698576 +1619096 5698576 1619056 5699728 1619136 5699704 1621944 5698008 +1618384 5699440 1619096 5698576 1618424 5698632 1618248 5699336 +1619056 5699728 1619080 5698608 1618384 5699440 1618392 5699496 +1619096 5698576 1619080 5698608 1619056 5699728 1619136 5699704 +1619096 5698576 1618384 5699440 1619080 5698608 1619136 5699704 +1618384 5699440 1619080 5698608 1619096 5698576 1618424 5698632 +1619096 5698576 1618504 5698568 1618424 5698632 1619080 5698608 +1619096 5698576 1618920 5698448 1618504 5698568 1619080 5698608 +1618920 5698448 1618536 5698512 1618504 5698568 1619080 5698608 +1619096 5698576 1619008 5698448 1618920 5698448 1619080 5698608 +1619096 5698576 1619088 5698488 1619008 5698448 1619080 5698608 +1618920 5698448 1618504 5698568 1619080 5698608 1619008 5698448 +1618504 5698568 1618424 5698632 1619080 5698608 1618920 5698448 +1619080 5698608 1619136 5699704 1619096 5698576 1619008 5698448 +1618424 5698632 1618384 5699440 1619080 5698608 1618504 5698568 +1619080 5698608 1618384 5699440 1619056 5699728 1619136 5699704 +1618384 5699440 1619056 5699728 1619080 5698608 1618424 5698632 +1619096 5698576 1619080 5698608 1619136 5699704 1621944 5698008 +1618384 5699440 1619080 5698608 1618424 5698632 1618248 5699336 +1618424 5698632 1619040 5698640 1619080 5698608 1618504 5698568 +1619080 5698608 1618920 5698448 1618504 5698568 1619040 5698640 +1619080 5698608 1619008 5698448 1618920 5698448 1619040 5698640 +1618920 5698448 1618536 5698512 1618504 5698568 1619040 5698640 +1619080 5698608 1619096 5698576 1619008 5698448 1619040 5698640 +1618920 5698448 1618504 5698568 1619040 5698640 1619008 5698448 +1618504 5698568 1618424 5698632 1619040 5698640 1618920 5698448 +1619040 5698640 1618384 5699440 1619080 5698608 1619008 5698448 +1619080 5698608 1619040 5698640 1618384 5699440 1619056 5699728 +1618384 5699440 1618392 5699496 1619056 5699728 1619040 5698640 +1619080 5698608 1619040 5698640 1619056 5699728 1619136 5699704 +1619080 5698608 1619040 5698640 1619136 5699704 1619096 5698576 +1619080 5698608 1619008 5698448 1619040 5698640 1619136 5699704 +1619040 5698640 1618384 5699440 1619056 5699728 1619136 5699704 +1619040 5698640 1618424 5698632 1618384 5699440 1619056 5699728 +1618424 5698632 1618384 5699440 1619040 5698640 1618504 5698568 +1618384 5699440 1619040 5698640 1618424 5698632 1618248 5699336 +1619040 5698640 1618976 5698680 1618384 5699440 1619056 5699728 +1618384 5699440 1618392 5699496 1619056 5699728 1618976 5698680 +1619040 5698640 1618976 5698680 1619056 5699728 1619136 5699704 +1619040 5698640 1618976 5698680 1619136 5699704 1619080 5698608 +1618976 5698680 1618384 5699440 1619056 5699728 1619136 5699704 +1619040 5698640 1618424 5698632 1618976 5698680 1619136 5699704 +1618424 5698632 1618976 5698680 1619040 5698640 1618504 5698568 +1619040 5698640 1618920 5698448 1618504 5698568 1618976 5698680 +1618920 5698448 1618536 5698512 1618504 5698568 1618976 5698680 +1619040 5698640 1619008 5698448 1618920 5698448 1618976 5698680 +1618920 5698448 1618536 5698512 1618976 5698680 1619040 5698640 +1618976 5698680 1619136 5699704 1619040 5698640 1618920 5698448 +1618504 5698568 1618424 5698632 1618976 5698680 1618536 5698512 +1618976 5698680 1618424 5698632 1618384 5699440 1619056 5699728 +1618424 5698632 1618384 5699440 1618976 5698680 1618504 5698568 +1618384 5699440 1618976 5698680 1618424 5698632 1618248 5699336 +1618920 5698448 1618528 5698432 1618536 5698512 1618976 5698680 +1618976 5698680 1618952 5698704 1618384 5699440 1619056 5699728 +1618384 5699440 1618392 5699496 1619056 5699728 1618952 5698704 +1618976 5698680 1618952 5698704 1619056 5699728 1619136 5699704 +1618976 5698680 1618952 5698704 1619136 5699704 1619040 5698640 +1619136 5699704 1619080 5698608 1619040 5698640 1618952 5698704 +1618952 5698704 1619056 5699728 1619136 5699704 1619040 5698640 +1618952 5698704 1618384 5699440 1619056 5699728 1619136 5699704 +1618976 5698680 1618424 5698632 1618952 5698704 1619040 5698640 +1618424 5698632 1618952 5698704 1618976 5698680 1618504 5698568 +1618976 5698680 1618536 5698512 1618504 5698568 1618952 5698704 +1618976 5698680 1618920 5698448 1618536 5698512 1618952 5698704 +1618976 5698680 1619040 5698640 1618920 5698448 1618952 5698704 +1618536 5698512 1618504 5698568 1618952 5698704 1618920 5698448 +1618952 5698704 1619040 5698640 1618976 5698680 1618920 5698448 +1618504 5698568 1618424 5698632 1618952 5698704 1618536 5698512 +1618952 5698704 1618424 5698632 1618384 5699440 1619056 5699728 +1618424 5698632 1618384 5699440 1618952 5698704 1618504 5698568 +1618384 5699440 1618952 5698704 1618424 5698632 1618248 5699336 +1618920 5698448 1618528 5698432 1618536 5698512 1618952 5698704 +1619056 5699728 1618936 5698736 1618384 5699440 1618392 5699496 +1618952 5698704 1618936 5698736 1619056 5699728 1619136 5699704 +1618952 5698704 1618936 5698736 1619136 5699704 1619040 5698640 +1619136 5699704 1619080 5698608 1619040 5698640 1618936 5698736 +1618952 5698704 1618936 5698736 1619040 5698640 1618976 5698680 +1618936 5698736 1619136 5699704 1619040 5698640 1618976 5698680 +1618936 5698736 1619056 5699728 1619136 5699704 1619040 5698640 +1618384 5699440 1618936 5698736 1618952 5698704 1618424 5698632 +1618952 5698704 1618424 5698632 1618936 5698736 1618976 5698680 +1618952 5698704 1618504 5698568 1618424 5698632 1618936 5698736 +1618952 5698704 1618536 5698512 1618504 5698568 1618936 5698736 +1618952 5698704 1618920 5698448 1618536 5698512 1618936 5698736 +1618424 5698632 1618384 5699440 1618936 5698736 1618504 5698568 +1618952 5698704 1618536 5698512 1618936 5698736 1618976 5698680 +1618504 5698568 1618424 5698632 1618936 5698736 1618536 5698512 +1618936 5698736 1618384 5699440 1619056 5699728 1619136 5699704 +1618384 5699440 1619056 5699728 1618936 5698736 1618424 5698632 +1618384 5699440 1618936 5698736 1618424 5698632 1618248 5699336 +1619056 5699728 1618936 5698840 1618384 5699440 1618392 5699496 +1618936 5698736 1618936 5698840 1619056 5699728 1619136 5699704 +1618936 5698736 1618936 5698840 1619136 5699704 1619040 5698640 +1619136 5699704 1619080 5698608 1619040 5698640 1618936 5698840 +1619136 5699704 1619096 5698576 1619080 5698608 1618936 5698840 +1618936 5698736 1618936 5698840 1619040 5698640 1618976 5698680 +1618936 5698736 1618936 5698840 1618976 5698680 1618952 5698704 +1619040 5698640 1618976 5698680 1618936 5698840 1619080 5698608 +1618936 5698840 1619056 5699728 1619136 5699704 1619080 5698608 +1618936 5698736 1618384 5699440 1618936 5698840 1618976 5698680 +1618384 5699440 1618936 5698840 1618936 5698736 1618424 5698632 +1618936 5698736 1618504 5698568 1618424 5698632 1618936 5698840 +1618936 5698736 1618536 5698512 1618504 5698568 1618936 5698840 +1618936 5698840 1618976 5698680 1618936 5698736 1618504 5698568 +1618424 5698632 1618384 5699440 1618936 5698840 1618504 5698568 +1618936 5698840 1618384 5699440 1619056 5699728 1619136 5699704 +1618384 5699440 1619056 5699728 1618936 5698840 1618424 5698632 +1618384 5699440 1618936 5698840 1618424 5698632 1618248 5699336 +1618424 5698632 1618072 5699008 1618248 5699336 1618936 5698840 +1618936 5698840 1618504 5698568 1618424 5698632 1618248 5699336 +1618384 5699440 1619056 5699728 1618936 5698840 1618248 5699336 +1619056 5699728 1618928 5698864 1618384 5699440 1618392 5699496 +1618936 5698840 1618928 5698864 1619056 5699728 1619136 5699704 +1618936 5698840 1618928 5698864 1619136 5699704 1619080 5698608 +1619136 5699704 1619096 5698576 1619080 5698608 1618928 5698864 +1618936 5698840 1618928 5698864 1619080 5698608 1619040 5698640 +1618928 5698864 1619056 5699728 1619136 5699704 1619080 5698608 +1618936 5698840 1618384 5699440 1618928 5698864 1619080 5698608 +1618384 5699440 1618928 5698864 1618936 5698840 1618248 5699336 +1618928 5698864 1619080 5698608 1618936 5698840 1618248 5699336 +1618928 5698864 1618384 5699440 1619056 5699728 1619136 5699704 +1618384 5699440 1619056 5699728 1618928 5698864 1618248 5699336 +1618936 5698840 1618424 5698632 1618248 5699336 1618928 5698864 +1618424 5698632 1618072 5699008 1618248 5699336 1618928 5698864 +1618936 5698840 1618504 5698568 1618424 5698632 1618928 5698864 +1618936 5698840 1618936 5698736 1618504 5698568 1618928 5698864 +1618936 5698736 1618536 5698512 1618504 5698568 1618928 5698864 +1618504 5698568 1618424 5698632 1618928 5698864 1618936 5698736 +1618936 5698840 1618936 5698736 1618928 5698864 1619080 5698608 +1618248 5699336 1618384 5699440 1618928 5698864 1618424 5698632 +1618424 5698632 1618248 5699336 1618928 5698864 1618504 5698568 +1619056 5699728 1618896 5698904 1618384 5699440 1618392 5699496 +1618928 5698864 1618896 5698904 1619056 5699728 1619136 5699704 +1618928 5698864 1618896 5698904 1619136 5699704 1619080 5698608 +1618928 5698864 1618384 5699440 1618896 5698904 1619136 5699704 +1618384 5699440 1618896 5698904 1618928 5698864 1618248 5699336 +1618928 5698864 1618424 5698632 1618248 5699336 1618896 5698904 +1618424 5698632 1618072 5699008 1618248 5699336 1618896 5698904 +1618896 5698904 1619136 5699704 1618928 5698864 1618424 5698632 +1618248 5699336 1618384 5699440 1618896 5698904 1618424 5698632 +1618896 5698904 1618384 5699440 1619056 5699728 1619136 5699704 +1618384 5699440 1619056 5699728 1618896 5698904 1618248 5699336 +1618928 5698864 1618504 5698568 1618424 5698632 1618896 5698904 +1618928 5698864 1618936 5698736 1618504 5698568 1618896 5698904 +1618928 5698864 1618936 5698840 1618936 5698736 1618896 5698904 +1618936 5698736 1618536 5698512 1618504 5698568 1618896 5698904 +1618936 5698736 1618504 5698568 1618896 5698904 1618936 5698840 +1618424 5698632 1618248 5699336 1618896 5698904 1618504 5698568 +1618928 5698864 1618936 5698840 1618896 5698904 1619136 5699704 +1618504 5698568 1618424 5698632 1618896 5698904 1618936 5698736 +1618248 5699336 1618856 5698904 1618424 5698632 1618072 5699008 +1618424 5698632 1618856 5698904 1618896 5698904 1618504 5698568 +1618896 5698904 1618856 5698904 1618248 5699336 1618384 5699440 +1618856 5698904 1618384 5699440 1618896 5698904 1618504 5698568 +1618896 5698904 1618856 5698904 1618384 5699440 1619056 5699728 +1618384 5699440 1618392 5699496 1619056 5699728 1618856 5698904 +1618856 5698904 1618248 5699336 1618384 5699440 1619056 5699728 +1618896 5698904 1618856 5698904 1619056 5699728 1619136 5699704 +1618896 5698904 1618504 5698568 1618856 5698904 1619056 5699728 +1618856 5698904 1618424 5698632 1618248 5699336 1618384 5699440 +1618424 5698632 1618248 5699336 1618856 5698904 1618504 5698568 +1618896 5698904 1618936 5698736 1618504 5698568 1618856 5698904 +1618936 5698736 1618536 5698512 1618504 5698568 1618856 5698904 +1618896 5698904 1618936 5698840 1618936 5698736 1618856 5698904 +1618896 5698904 1618928 5698864 1618936 5698840 1618856 5698904 +1618936 5698840 1618936 5698736 1618856 5698904 1618928 5698864 +1618504 5698568 1618424 5698632 1618856 5698904 1618936 5698736 +1618896 5698904 1618928 5698864 1618856 5698904 1619056 5699728 +1618936 5698736 1618504 5698568 1618856 5698904 1618936 5698840 +1618504 5698568 1618816 5698864 1618936 5698736 1618536 5698512 +1618936 5698736 1618952 5698704 1618536 5698512 1618816 5698864 +1618856 5698904 1618816 5698864 1618504 5698568 1618424 5698632 +1618856 5698904 1618936 5698736 1618816 5698864 1618424 5698632 +1618856 5698904 1618816 5698864 1618424 5698632 1618248 5699336 +1618424 5698632 1618072 5699008 1618248 5699336 1618816 5698864 +1618816 5698864 1618504 5698568 1618424 5698632 1618248 5699336 +1618856 5698904 1618816 5698864 1618248 5699336 1618384 5699440 +1618856 5698904 1618816 5698864 1618384 5699440 1619056 5699728 +1618856 5698904 1618936 5698736 1618816 5698864 1618384 5699440 +1618816 5698864 1618424 5698632 1618248 5699336 1618384 5699440 +1618504 5698568 1618424 5698632 1618816 5698864 1618536 5698512 +1618816 5698864 1618856 5698904 1618936 5698736 1618536 5698512 +1618936 5698736 1618816 5698864 1618856 5698904 1618936 5698840 +1618856 5698904 1618928 5698864 1618936 5698840 1618816 5698864 +1618856 5698904 1618896 5698904 1618928 5698864 1618816 5698864 +1618816 5698864 1618384 5699440 1618856 5698904 1618928 5698864 +1618936 5698736 1618536 5698512 1618816 5698864 1618936 5698840 +1618936 5698840 1618936 5698736 1618816 5698864 1618928 5698864 +1618536 5698512 1618768 5698816 1618816 5698864 1618936 5698736 +1618536 5698512 1618768 5698816 1618936 5698736 1618952 5698704 +1618536 5698512 1618768 5698816 1618952 5698704 1618920 5698448 +1618952 5698704 1618976 5698680 1618920 5698448 1618768 5698816 +1618768 5698816 1618936 5698736 1618952 5698704 1618920 5698448 +1618768 5698816 1618816 5698864 1618936 5698736 1618952 5698704 +1618816 5698864 1618768 5698816 1618504 5698568 1618424 5698632 +1618816 5698864 1618768 5698816 1618424 5698632 1618248 5699336 +1618424 5698632 1618072 5699008 1618248 5699336 1618768 5698816 +1618424 5698632 1618336 5698616 1618072 5699008 1618768 5698816 +1618248 5699336 1618816 5698864 1618768 5698816 1618072 5699008 +1618816 5698864 1618768 5698816 1618248 5699336 1618384 5699440 +1618768 5698816 1618504 5698568 1618424 5698632 1618072 5699008 +1618768 5698816 1618248 5699336 1618816 5698864 1618936 5698736 +1618816 5698864 1618936 5698840 1618936 5698736 1618768 5698816 +1618768 5698816 1618536 5698512 1618504 5698568 1618424 5698632 +1618536 5698512 1618504 5698568 1618768 5698816 1618920 5698448 +1618536 5698512 1618768 5698816 1618920 5698448 1618528 5698432 +1618768 5698816 1618672 5698752 1618424 5698632 1618072 5699008 +1618768 5698816 1618672 5698752 1618072 5699008 1618248 5699336 +1618424 5698632 1618336 5698616 1618072 5699008 1618672 5698752 +1618768 5698816 1618672 5698752 1618248 5699336 1618816 5698864 +1618672 5698752 1618424 5698632 1618072 5699008 1618248 5699336 +1618504 5698568 1618672 5698752 1618768 5698816 1618536 5698512 +1618768 5698816 1618536 5698512 1618672 5698752 1618248 5699336 +1618768 5698816 1618920 5698448 1618536 5698512 1618672 5698752 +1618768 5698816 1618952 5698704 1618920 5698448 1618672 5698752 +1618952 5698704 1618976 5698680 1618920 5698448 1618672 5698752 +1618768 5698816 1618936 5698736 1618952 5698704 1618672 5698752 +1618952 5698704 1618920 5698448 1618672 5698752 1618936 5698736 +1618768 5698816 1618816 5698864 1618936 5698736 1618672 5698752 +1618536 5698512 1618504 5698568 1618672 5698752 1618920 5698448 +1618768 5698816 1618936 5698736 1618672 5698752 1618248 5699336 +1618920 5698448 1618536 5698512 1618672 5698752 1618952 5698704 +1618672 5698752 1618504 5698568 1618424 5698632 1618072 5699008 +1618504 5698568 1618424 5698632 1618672 5698752 1618536 5698512 +1618920 5698448 1618528 5698432 1618536 5698512 1618672 5698752 +1618672 5698752 1618656 5698720 1618536 5698512 1618504 5698568 +1618920 5698448 1618656 5698720 1618672 5698752 1618952 5698704 +1618920 5698448 1618656 5698720 1618952 5698704 1618976 5698680 +1618672 5698752 1618936 5698736 1618952 5698704 1618656 5698720 +1618672 5698752 1618768 5698816 1618936 5698736 1618656 5698720 +1618936 5698736 1618952 5698704 1618656 5698720 1618768 5698816 +1618768 5698816 1618816 5698864 1618936 5698736 1618656 5698720 +1618952 5698704 1618920 5698448 1618656 5698720 1618936 5698736 +1618672 5698752 1618768 5698816 1618656 5698720 1618504 5698568 +1618672 5698752 1618656 5698720 1618504 5698568 1618424 5698632 +1618656 5698720 1618536 5698512 1618504 5698568 1618424 5698632 +1618672 5698752 1618656 5698720 1618424 5698632 1618072 5699008 +1618672 5698752 1618768 5698816 1618656 5698720 1618424 5698632 +1618656 5698720 1618920 5698448 1618536 5698512 1618504 5698568 +1618920 5698448 1618536 5698512 1618656 5698720 1618952 5698704 +1618536 5698512 1618656 5698720 1618920 5698448 1618528 5698432 +1618656 5698720 1618648 5698696 1618536 5698512 1618504 5698568 +1618656 5698720 1618648 5698696 1618504 5698568 1618424 5698632 +1618656 5698720 1618648 5698696 1618424 5698632 1618672 5698752 +1618648 5698696 1618536 5698512 1618504 5698568 1618424 5698632 +1618656 5698720 1618920 5698448 1618648 5698696 1618424 5698632 +1618920 5698448 1618648 5698696 1618656 5698720 1618952 5698704 +1618920 5698448 1618648 5698696 1618952 5698704 1618976 5698680 +1618656 5698720 1618936 5698736 1618952 5698704 1618648 5698696 +1618656 5698720 1618768 5698816 1618936 5698736 1618648 5698696 +1618648 5698696 1618424 5698632 1618656 5698720 1618936 5698736 +1618952 5698704 1618920 5698448 1618648 5698696 1618936 5698736 +1618648 5698696 1618920 5698448 1618536 5698512 1618504 5698568 +1618920 5698448 1618536 5698512 1618648 5698696 1618952 5698704 +1618536 5698512 1618648 5698696 1618920 5698448 1618528 5698432 +1618648 5698696 1618656 5698656 1618536 5698512 1618504 5698568 +1618648 5698696 1618656 5698656 1618504 5698568 1618424 5698632 +1618648 5698696 1618920 5698448 1618656 5698656 1618504 5698568 +1618920 5698448 1618656 5698656 1618648 5698696 1618952 5698704 +1618920 5698448 1618656 5698656 1618952 5698704 1618976 5698680 +1618648 5698696 1618936 5698736 1618952 5698704 1618656 5698656 +1618648 5698696 1618656 5698720 1618936 5698736 1618656 5698656 +1618656 5698720 1618768 5698816 1618936 5698736 1618656 5698656 +1618656 5698720 1618672 5698752 1618768 5698816 1618656 5698656 +1618768 5698816 1618936 5698736 1618656 5698656 1618672 5698752 +1618768 5698816 1618816 5698864 1618936 5698736 1618656 5698656 +1618656 5698720 1618672 5698752 1618656 5698656 1618648 5698696 +1618936 5698736 1618952 5698704 1618656 5698656 1618768 5698816 +1618656 5698656 1618504 5698568 1618648 5698696 1618656 5698720 +1618952 5698704 1618920 5698448 1618656 5698656 1618936 5698736 +1618656 5698656 1618920 5698448 1618536 5698512 1618504 5698568 +1618920 5698448 1618536 5698512 1618656 5698656 1618952 5698704 +1618536 5698512 1618656 5698656 1618920 5698448 1618528 5698432 +1618656 5698656 1618680 5698608 1618536 5698512 1618504 5698568 +1618656 5698656 1618680 5698608 1618504 5698568 1618648 5698696 +1618656 5698656 1618920 5698448 1618680 5698608 1618504 5698568 +1618920 5698448 1618680 5698608 1618656 5698656 1618952 5698704 +1618920 5698448 1618680 5698608 1618952 5698704 1618976 5698680 +1618656 5698656 1618936 5698736 1618952 5698704 1618680 5698608 +1618656 5698656 1618768 5698816 1618936 5698736 1618680 5698608 +1618656 5698656 1618672 5698752 1618768 5698816 1618680 5698608 +1618656 5698656 1618656 5698720 1618672 5698752 1618680 5698608 +1618768 5698816 1618816 5698864 1618936 5698736 1618680 5698608 +1618768 5698816 1618936 5698736 1618680 5698608 1618672 5698752 +1618936 5698736 1618952 5698704 1618680 5698608 1618768 5698816 +1618680 5698608 1618504 5698568 1618656 5698656 1618672 5698752 +1618952 5698704 1618920 5698448 1618680 5698608 1618936 5698736 +1618680 5698608 1618920 5698448 1618536 5698512 1618504 5698568 +1618920 5698448 1618536 5698512 1618680 5698608 1618952 5698704 +1618536 5698512 1618680 5698608 1618920 5698448 1618528 5698432 +1618920 5698448 1618864 5698296 1618528 5698432 1618680 5698608 +1618864 5698296 1618736 5698224 1618528 5698432 1618680 5698608 +1618920 5698448 1618936 5698304 1618864 5698296 1618680 5698608 +1618536 5698512 1618504 5698568 1618680 5698608 1618528 5698432 +1618680 5698608 1618952 5698704 1618920 5698448 1618864 5698296 +1618528 5698432 1618536 5698512 1618680 5698608 1618864 5698296 +1618680 5698608 1618704 5698568 1618864 5698296 1618528 5698432 +1618864 5698296 1618736 5698224 1618528 5698432 1618704 5698568 +1618736 5698224 1618480 5698400 1618528 5698432 1618704 5698568 +1618528 5698432 1618680 5698608 1618704 5698568 1618736 5698224 +1618864 5698296 1618704 5698568 1618920 5698448 1618936 5698304 +1618680 5698608 1618920 5698448 1618704 5698568 1618528 5698432 +1618920 5698448 1618704 5698568 1618680 5698608 1618952 5698704 +1618920 5698448 1618704 5698568 1618952 5698704 1618976 5698680 +1618680 5698608 1618936 5698736 1618952 5698704 1618704 5698568 +1618680 5698608 1618768 5698816 1618936 5698736 1618704 5698568 +1618704 5698568 1618528 5698432 1618680 5698608 1618936 5698736 +1618952 5698704 1618920 5698448 1618704 5698568 1618936 5698736 +1618704 5698568 1618920 5698448 1618864 5698296 1618736 5698224 +1618920 5698448 1618864 5698296 1618704 5698568 1618952 5698704 +1618680 5698608 1618704 5698568 1618528 5698432 1618536 5698512 +1618704 5698568 1618736 5698224 1618528 5698432 1618536 5698512 +1618680 5698608 1618704 5698568 1618536 5698512 1618504 5698568 +1618680 5698608 1618936 5698736 1618704 5698568 1618536 5698512 +1618864 5698296 1618736 5698544 1618920 5698448 1618936 5698304 +1618704 5698568 1618736 5698544 1618864 5698296 1618736 5698224 +1618704 5698568 1618736 5698544 1618736 5698224 1618528 5698432 +1618736 5698224 1618480 5698400 1618528 5698432 1618736 5698544 +1618704 5698568 1618736 5698544 1618528 5698432 1618536 5698512 +1618736 5698544 1618864 5698296 1618736 5698224 1618528 5698432 +1618704 5698568 1618920 5698448 1618736 5698544 1618528 5698432 +1618920 5698448 1618736 5698544 1618704 5698568 1618952 5698704 +1618920 5698448 1618736 5698544 1618952 5698704 1618976 5698680 +1618920 5698448 1618736 5698544 1618976 5698680 1619040 5698640 +1618704 5698568 1618936 5698736 1618952 5698704 1618736 5698544 +1618704 5698568 1618680 5698608 1618936 5698736 1618736 5698544 +1618680 5698608 1618768 5698816 1618936 5698736 1618736 5698544 +1618936 5698736 1618952 5698704 1618736 5698544 1618680 5698608 +1618736 5698544 1618528 5698432 1618704 5698568 1618680 5698608 +1618736 5698544 1618936 5698736 1618952 5698704 1618976 5698680 +1618736 5698544 1618920 5698448 1618864 5698296 1618736 5698224 +1618920 5698448 1618864 5698296 1618736 5698544 1618976 5698680 +1618864 5698296 1618824 5698480 1618920 5698448 1618936 5698304 +1618736 5698544 1618824 5698480 1618864 5698296 1618736 5698224 +1618736 5698544 1618824 5698480 1618736 5698224 1618528 5698432 +1618736 5698224 1618480 5698400 1618528 5698432 1618824 5698480 +1618736 5698544 1618824 5698480 1618528 5698432 1618704 5698568 +1618824 5698480 1618864 5698296 1618736 5698224 1618528 5698432 +1618736 5698544 1618920 5698448 1618824 5698480 1618528 5698432 +1618920 5698448 1618824 5698480 1618736 5698544 1618976 5698680 +1618736 5698544 1618952 5698704 1618976 5698680 1618824 5698480 +1618920 5698448 1618824 5698480 1618976 5698680 1619040 5698640 +1618736 5698544 1618936 5698736 1618952 5698704 1618824 5698480 +1618824 5698480 1618528 5698432 1618736 5698544 1618952 5698704 +1618976 5698680 1618920 5698448 1618824 5698480 1618952 5698704 +1618824 5698480 1618920 5698448 1618864 5698296 1618736 5698224 +1618920 5698448 1618864 5698296 1618824 5698480 1618976 5698680 +1619096 5698576 1619448 5698520 1621944 5698008 1619104 5698544 +1621944 5698008 1619064 5698200 1619104 5698544 1619448 5698520 +1619104 5698544 1619096 5698576 1619448 5698520 1619064 5698200 +1619448 5698520 1619136 5699704 1621944 5698008 1619064 5698200 +1619096 5698576 1619136 5699704 1619448 5698520 1619104 5698544 +1621944 5698008 1621936 5697864 1619064 5698200 1619448 5698520 +1621936 5697864 1619024 5698144 1619064 5698200 1619448 5698520 +1619064 5698200 1619104 5698544 1619448 5698520 1619024 5698144 +1621944 5698008 1621936 5697864 1619448 5698520 1619136 5699704 +1621936 5697864 1619024 5698144 1619448 5698520 1621944 5698008 +1619064 5698200 1619064 5698240 1619104 5698544 1619448 5698520 +1619064 5698240 1619088 5698488 1619104 5698544 1619448 5698520 +1619064 5698240 1619040 5698280 1619088 5698488 1619448 5698520 +1619064 5698200 1619064 5698240 1619448 5698520 1619024 5698144 +1619104 5698544 1619096 5698576 1619448 5698520 1619088 5698488 +1619064 5698240 1619088 5698488 1619448 5698520 1619064 5698200 +1621944 5698008 1619448 5698520 1619136 5699704 1622064 5698152 +1619136 5699704 1619152 5699792 1622064 5698152 1619448 5698520 +1619152 5699792 1621576 5701360 1622064 5698152 1619448 5698520 +1621944 5698008 1621936 5697864 1619448 5698520 1622064 5698152 +1619448 5698520 1619096 5698576 1619136 5699704 1619152 5699792 +1622064 5698152 1621944 5698008 1619448 5698520 1619152 5699792 +1619136 5699704 1619448 5698520 1619096 5698576 1619080 5698608 +1619136 5699704 1619448 5698520 1619080 5698608 1618928 5698864 +1619080 5698608 1618936 5698840 1618928 5698864 1619448 5698520 +1618928 5698864 1619136 5699704 1619448 5698520 1618936 5698840 +1619080 5698608 1619040 5698640 1618936 5698840 1619448 5698520 +1619136 5699704 1619448 5698520 1618928 5698864 1618896 5698904 +1619136 5699704 1619152 5699792 1619448 5698520 1618928 5698864 +1619448 5698520 1619104 5698544 1619096 5698576 1619080 5698608 +1619448 5698520 1619096 5698576 1619080 5698608 1618936 5698840 +1621936 5697864 1618576 5696872 1619024 5698144 1619448 5698520 +1619448 5698520 1619480 5698472 1619024 5698144 1619064 5698200 +1619448 5698520 1619480 5698472 1619064 5698200 1619064 5698240 +1619480 5698472 1619024 5698144 1619064 5698200 1619064 5698240 +1619448 5698520 1621936 5697864 1619480 5698472 1619064 5698240 +1619480 5698472 1621936 5697864 1619024 5698144 1619064 5698200 +1621936 5697864 1619480 5698472 1619448 5698520 1621944 5698008 +1619448 5698520 1622064 5698152 1621944 5698008 1619480 5698472 +1619480 5698472 1619064 5698240 1619448 5698520 1622064 5698152 +1621936 5697864 1619024 5698144 1619480 5698472 1621944 5698008 +1621944 5698008 1621936 5697864 1619480 5698472 1622064 5698152 +1619448 5698520 1619480 5698472 1619064 5698240 1619088 5698488 +1619064 5698240 1619040 5698280 1619088 5698488 1619480 5698472 +1619448 5698520 1619480 5698472 1619088 5698488 1619104 5698544 +1619480 5698472 1619064 5698200 1619064 5698240 1619088 5698488 +1619448 5698520 1622064 5698152 1619480 5698472 1619088 5698488 +1619448 5698520 1619152 5699792 1622064 5698152 1619480 5698472 +1619024 5698144 1619480 5698472 1621936 5697864 1618576 5696872 +1619024 5698144 1619064 5698200 1619480 5698472 1618576 5696872 +1619480 5698472 1621944 5698008 1621936 5697864 1618576 5696872 +1621936 5697864 1618552 5696712 1618576 5696872 1619480 5698472 +1619024 5698144 1619480 5698472 1618576 5696872 1618560 5697104 +1621936 5697864 1619568 5698416 1619480 5698472 1621944 5698008 +1619568 5698416 1618576 5696872 1619480 5698472 1621944 5698008 +1621936 5697864 1618576 5696872 1619568 5698416 1621944 5698008 +1618576 5696872 1619568 5698416 1621936 5697864 1618552 5696712 +1619480 5698472 1622064 5698152 1621944 5698008 1619568 5698416 +1619480 5698472 1619448 5698520 1622064 5698152 1619568 5698416 +1619480 5698472 1619448 5698520 1619568 5698416 1618576 5696872 +1621944 5698008 1621936 5697864 1619568 5698416 1622064 5698152 +1622064 5698152 1621944 5698008 1619568 5698416 1619448 5698520 +1619448 5698520 1619152 5699792 1622064 5698152 1619568 5698416 +1619448 5698520 1619136 5699704 1619152 5699792 1619568 5698416 +1619152 5699792 1621576 5701360 1622064 5698152 1619568 5698416 +1619448 5698520 1619136 5699704 1619568 5698416 1619480 5698472 +1619448 5698520 1618928 5698864 1619136 5699704 1619568 5698416 +1622064 5698152 1621944 5698008 1619568 5698416 1619152 5699792 +1619152 5699792 1622064 5698152 1619568 5698416 1619136 5699704 +1619480 5698472 1619568 5698416 1618576 5696872 1619024 5698144 +1619480 5698472 1619568 5698416 1619024 5698144 1619064 5698200 +1619480 5698472 1619568 5698416 1619064 5698200 1619064 5698240 +1619480 5698472 1619448 5698520 1619568 5698416 1619064 5698200 +1619568 5698416 1621936 5697864 1618576 5696872 1619024 5698144 +1618576 5696872 1618560 5697104 1619024 5698144 1619568 5698416 +1618576 5696872 1618560 5697104 1619568 5698416 1621936 5697864 +1618560 5697104 1618672 5697656 1619024 5698144 1619568 5698416 +1618560 5697104 1618608 5697568 1618672 5697656 1619568 5698416 +1618672 5697656 1618872 5698008 1619024 5698144 1619568 5698416 +1618560 5697104 1618672 5697656 1619568 5698416 1618576 5696872 +1619568 5698416 1618672 5697656 1619024 5698144 1619064 5698200 +1619568 5698416 1619664 5698400 1621944 5698008 1621936 5697864 +1619568 5698416 1622064 5698152 1619664 5698400 1621936 5697864 +1619568 5698416 1619664 5698400 1621936 5697864 1618576 5696872 +1619664 5698400 1621944 5698008 1621936 5697864 1618576 5696872 +1619568 5698416 1619664 5698400 1618576 5696872 1618560 5697104 +1619568 5698416 1622064 5698152 1619664 5698400 1618560 5697104 +1619664 5698400 1621936 5697864 1618576 5696872 1618560 5697104 +1619664 5698400 1622064 5698152 1621944 5698008 1621936 5697864 +1621936 5697864 1618552 5696712 1618576 5696872 1619664 5698400 +1619568 5698416 1619664 5698400 1618560 5697104 1618672 5697656 +1618560 5697104 1618608 5697568 1618672 5697656 1619664 5698400 +1619664 5698400 1618576 5696872 1618560 5697104 1618672 5697656 +1619568 5698416 1622064 5698152 1619664 5698400 1618672 5697656 +1619568 5698416 1619664 5698400 1618672 5697656 1619024 5698144 +1619568 5698416 1622064 5698152 1619664 5698400 1619024 5698144 +1618672 5697656 1618872 5698008 1619024 5698144 1619664 5698400 +1619664 5698400 1618560 5697104 1618672 5697656 1619024 5698144 +1622064 5698152 1619664 5698400 1619568 5698416 1619152 5699792 +1622064 5698152 1619664 5698400 1619152 5699792 1621576 5701360 +1622064 5698152 1619664 5698400 1621576 5701360 1622296 5698320 +1619152 5699792 1619152 5699888 1621576 5701360 1619664 5698400 +1619664 5698400 1619024 5698144 1619568 5698416 1619152 5699792 +1622064 5698152 1621944 5698008 1619664 5698400 1621576 5701360 +1619664 5698400 1619568 5698416 1619152 5699792 1621576 5701360 +1619568 5698416 1619136 5699704 1619152 5699792 1619664 5698400 +1619568 5698416 1619448 5698520 1619136 5699704 1619664 5698400 +1619568 5698416 1619480 5698472 1619448 5698520 1619664 5698400 +1619448 5698520 1618928 5698864 1619136 5699704 1619664 5698400 +1619568 5698416 1619448 5698520 1619664 5698400 1619024 5698144 +1619152 5699792 1621576 5701360 1619664 5698400 1619136 5699704 +1619136 5699704 1619152 5699792 1619664 5698400 1619448 5698520 +1619568 5698416 1619664 5698400 1619024 5698144 1619064 5698200 +1619664 5698400 1619752 5698384 1621936 5697864 1618576 5696872 +1619664 5698400 1619752 5698384 1618576 5696872 1618560 5697104 +1619752 5698384 1621936 5697864 1618576 5696872 1618560 5697104 +1619664 5698400 1619752 5698384 1618560 5697104 1618672 5697656 +1618560 5697104 1618608 5697568 1618672 5697656 1619752 5698384 +1619752 5698384 1618576 5696872 1618560 5697104 1618672 5697656 +1621944 5698008 1619752 5698384 1619664 5698400 1622064 5698152 +1619664 5698400 1622064 5698152 1619752 5698384 1618672 5697656 +1619664 5698400 1621576 5701360 1622064 5698152 1619752 5698384 +1621576 5701360 1622296 5698320 1622064 5698152 1619752 5698384 +1619664 5698400 1619152 5699792 1621576 5701360 1619752 5698384 +1619152 5699792 1619152 5699888 1621576 5701360 1619752 5698384 +1622064 5698152 1621944 5698008 1619752 5698384 1621576 5701360 +1619664 5698400 1619152 5699792 1619752 5698384 1618672 5697656 +1621576 5701360 1622064 5698152 1619752 5698384 1619152 5699792 +1619752 5698384 1621944 5698008 1621936 5697864 1618576 5696872 +1621944 5698008 1621936 5697864 1619752 5698384 1622064 5698152 +1621936 5697864 1618552 5696712 1618576 5696872 1619752 5698384 +1619664 5698400 1619752 5698384 1618672 5697656 1619024 5698144 +1619752 5698384 1618560 5697104 1618672 5697656 1619024 5698144 +1619664 5698400 1619152 5699792 1619752 5698384 1619024 5698144 +1619664 5698400 1619752 5698384 1619024 5698144 1619568 5698416 +1618672 5697656 1618872 5698008 1619024 5698144 1619752 5698384 +1619664 5698400 1619136 5699704 1619152 5699792 1619752 5698384 +1619152 5699792 1621576 5701360 1619752 5698384 1619136 5699704 +1619664 5698400 1619136 5699704 1619752 5698384 1619024 5698144 +1619664 5698400 1619448 5698520 1619136 5699704 1619752 5698384 +1619664 5698400 1619568 5698416 1619448 5698520 1619752 5698384 +1619448 5698520 1618928 5698864 1619136 5699704 1619752 5698384 +1619664 5698400 1619448 5698520 1619752 5698384 1619024 5698144 +1619136 5699704 1619152 5699792 1619752 5698384 1619448 5698520 +1619752 5698384 1619848 5698352 1618576 5696872 1618560 5697104 +1619752 5698384 1619848 5698352 1618560 5697104 1618672 5697656 +1618560 5697104 1618608 5697568 1618672 5697656 1619848 5698352 +1619848 5698352 1618576 5696872 1618560 5697104 1618672 5697656 +1619752 5698384 1619848 5698352 1618672 5697656 1619024 5698144 +1619848 5698352 1618560 5697104 1618672 5697656 1619024 5698144 +1621936 5697864 1619848 5698352 1619752 5698384 1621944 5698008 +1619752 5698384 1621944 5698008 1619848 5698352 1619024 5698144 +1619752 5698384 1622064 5698152 1621944 5698008 1619848 5698352 +1619752 5698384 1621576 5701360 1622064 5698152 1619848 5698352 +1621576 5701360 1622296 5698320 1622064 5698152 1619848 5698352 +1619752 5698384 1619152 5699792 1621576 5701360 1619848 5698352 +1619152 5699792 1619152 5699888 1621576 5701360 1619848 5698352 +1619752 5698384 1619136 5699704 1619152 5699792 1619848 5698352 +1621576 5701360 1622064 5698152 1619848 5698352 1619152 5699792 +1619152 5699792 1621576 5701360 1619848 5698352 1619136 5699704 +1621944 5698008 1621936 5697864 1619848 5698352 1622064 5698152 +1619752 5698384 1619136 5699704 1619848 5698352 1619024 5698144 +1622064 5698152 1621944 5698008 1619848 5698352 1621576 5701360 +1619848 5698352 1621936 5697864 1618576 5696872 1618560 5697104 +1621936 5697864 1618576 5696872 1619848 5698352 1621944 5698008 +1618576 5696872 1619848 5698352 1621936 5697864 1618552 5696712 +1618576 5696872 1618560 5697104 1619848 5698352 1618552 5696712 +1619848 5698352 1621944 5698008 1621936 5697864 1618552 5696712 +1621936 5697864 1622016 5697816 1618552 5696712 1619848 5698352 +1618672 5697656 1618872 5698008 1619024 5698144 1619848 5698352 +1619752 5698384 1619848 5698352 1619024 5698144 1619664 5698400 +1619848 5698352 1618672 5697656 1619024 5698144 1619664 5698400 +1619752 5698384 1619136 5699704 1619848 5698352 1619664 5698400 +1619024 5698144 1619568 5698416 1619664 5698400 1619848 5698352 +1619752 5698384 1619448 5698520 1619136 5699704 1619848 5698352 +1621944 5698008 1619888 5698344 1619848 5698352 1622064 5698152 +1619848 5698352 1621576 5701360 1622064 5698152 1619888 5698344 +1621576 5701360 1622296 5698320 1622064 5698152 1619888 5698344 +1619848 5698352 1619152 5699792 1621576 5701360 1619888 5698344 +1619152 5699792 1619152 5699888 1621576 5701360 1619888 5698344 +1619848 5698352 1619136 5699704 1619152 5699792 1619888 5698344 +1619848 5698352 1619752 5698384 1619136 5699704 1619888 5698344 +1619152 5699792 1621576 5701360 1619888 5698344 1619136 5699704 +1619136 5699704 1619152 5699792 1619888 5698344 1619752 5698384 +1622064 5698152 1621944 5698008 1619888 5698344 1621576 5701360 +1621576 5701360 1622064 5698152 1619888 5698344 1619152 5699792 +1619888 5698344 1621936 5697864 1619848 5698352 1619752 5698384 +1619848 5698352 1619888 5698344 1621936 5697864 1618552 5696712 +1619848 5698352 1619752 5698384 1619888 5698344 1618552 5696712 +1619888 5698344 1621944 5698008 1621936 5697864 1618552 5696712 +1621944 5698008 1621936 5697864 1619888 5698344 1622064 5698152 +1621936 5697864 1622016 5697816 1618552 5696712 1619888 5698344 +1619848 5698352 1619888 5698344 1618552 5696712 1618576 5696872 +1619848 5698352 1619888 5698344 1618576 5696872 1618560 5697104 +1619848 5698352 1619888 5698344 1618560 5697104 1618672 5697656 +1618560 5697104 1618608 5697568 1618672 5697656 1619888 5698344 +1619848 5698352 1619888 5698344 1618672 5697656 1619024 5698144 +1619888 5698344 1618560 5697104 1618672 5697656 1619024 5698144 +1619848 5698352 1619888 5698344 1619024 5698144 1619664 5698400 +1619888 5698344 1618576 5696872 1618560 5697104 1618672 5697656 +1619848 5698352 1619752 5698384 1619888 5698344 1619024 5698144 +1619888 5698344 1621936 5697864 1618552 5696712 1618576 5696872 +1619888 5698344 1618552 5696712 1618576 5696872 1618560 5697104 +1618672 5697656 1618872 5698008 1619024 5698144 1619888 5698344 +1619752 5698384 1619448 5698520 1619136 5699704 1619888 5698344 +1619888 5698344 1619968 5698304 1618552 5696712 1618576 5696872 +1621936 5697864 1619968 5698304 1619888 5698344 1621944 5698008 +1619888 5698344 1621944 5698008 1619968 5698304 1618576 5696872 +1619888 5698344 1622064 5698152 1621944 5698008 1619968 5698304 +1619888 5698344 1621576 5701360 1622064 5698152 1619968 5698304 +1621576 5701360 1622296 5698320 1622064 5698152 1619968 5698304 +1619888 5698344 1619152 5699792 1621576 5701360 1619968 5698304 +1619152 5699792 1619152 5699888 1621576 5701360 1619968 5698304 +1619888 5698344 1619136 5699704 1619152 5699792 1619968 5698304 +1621576 5701360 1622064 5698152 1619968 5698304 1619152 5699792 +1621944 5698008 1621936 5697864 1619968 5698304 1622064 5698152 +1619888 5698344 1619152 5699792 1619968 5698304 1618576 5696872 +1622064 5698152 1621944 5698008 1619968 5698304 1621576 5701360 +1619968 5698304 1621936 5697864 1618552 5696712 1618576 5696872 +1621936 5697864 1618552 5696712 1619968 5698304 1621944 5698008 +1618552 5696712 1619968 5698304 1621936 5697864 1622016 5697816 +1619888 5698344 1619968 5698304 1618576 5696872 1618560 5697104 +1619888 5698344 1619968 5698304 1618560 5697104 1618672 5697656 +1618560 5697104 1618608 5697568 1618672 5697656 1619968 5698304 +1619888 5698344 1619968 5698304 1618672 5697656 1619024 5698144 +1619888 5698344 1619968 5698304 1619024 5698144 1619848 5698352 +1619968 5698304 1618672 5697656 1619024 5698144 1619848 5698352 +1619024 5698144 1619664 5698400 1619848 5698352 1619968 5698304 +1619968 5698304 1618560 5697104 1618672 5697656 1619024 5698144 +1619968 5698304 1618552 5696712 1618576 5696872 1618560 5697104 +1619888 5698344 1619152 5699792 1619968 5698304 1619848 5698352 +1619968 5698304 1618576 5696872 1618560 5697104 1618672 5697656 +1618672 5697656 1618872 5698008 1619024 5698144 1619968 5698304 +1619968 5698304 1620064 5698256 1618552 5696712 1618576 5696872 +1619968 5698304 1620064 5698256 1618576 5696872 1618560 5697104 +1620064 5698256 1618552 5696712 1618576 5696872 1618560 5697104 +1619968 5698304 1621936 5697864 1620064 5698256 1618560 5697104 +1621936 5697864 1620064 5698256 1619968 5698304 1621944 5698008 +1619968 5698304 1622064 5698152 1621944 5698008 1620064 5698256 +1619968 5698304 1621576 5701360 1622064 5698152 1620064 5698256 +1621576 5701360 1622296 5698320 1622064 5698152 1620064 5698256 +1619968 5698304 1619152 5699792 1621576 5701360 1620064 5698256 +1619152 5699792 1619152 5699888 1621576 5701360 1620064 5698256 +1619968 5698304 1619888 5698344 1619152 5699792 1620064 5698256 +1622064 5698152 1621944 5698008 1620064 5698256 1621576 5701360 +1621576 5701360 1622064 5698152 1620064 5698256 1619152 5699792 +1620064 5698256 1618560 5697104 1619968 5698304 1619152 5699792 +1621944 5698008 1621936 5697864 1620064 5698256 1622064 5698152 +1620064 5698256 1621936 5697864 1618552 5696712 1618576 5696872 +1621936 5697864 1618552 5696712 1620064 5698256 1621944 5698008 +1618552 5696712 1620064 5698256 1621936 5697864 1622016 5697816 +1619968 5698304 1620064 5698256 1618560 5697104 1618672 5697656 +1618560 5697104 1618608 5697568 1618672 5697656 1620064 5698256 +1619968 5698304 1620064 5698256 1618672 5697656 1619024 5698144 +1619968 5698304 1620064 5698256 1619024 5698144 1619848 5698352 +1620064 5698256 1618576 5696872 1618560 5697104 1618672 5697656 +1619968 5698304 1619152 5699792 1620064 5698256 1619024 5698144 +1620064 5698256 1618560 5697104 1618672 5697656 1619024 5698144 +1618672 5697656 1618872 5698008 1619024 5698144 1620064 5698256 +1621944 5698008 1620104 5698248 1620064 5698256 1622064 5698152 +1620064 5698256 1621576 5701360 1622064 5698152 1620104 5698248 +1621576 5701360 1622296 5698320 1622064 5698152 1620104 5698248 +1621576 5701360 1622296 5698320 1620104 5698248 1620064 5698256 +1620064 5698256 1619152 5699792 1621576 5701360 1620104 5698248 +1619152 5699792 1619152 5699888 1621576 5701360 1620104 5698248 +1620064 5698256 1619968 5698304 1619152 5699792 1620104 5698248 +1619968 5698304 1619888 5698344 1619152 5699792 1620104 5698248 +1621576 5701360 1622296 5698320 1620104 5698248 1619152 5699792 +1619152 5699792 1621576 5701360 1620104 5698248 1619968 5698304 +1622064 5698152 1621944 5698008 1620104 5698248 1622296 5698320 +1620104 5698248 1621936 5697864 1620064 5698256 1619968 5698304 +1620064 5698256 1620104 5698248 1621936 5697864 1618552 5696712 +1620064 5698256 1620104 5698248 1618552 5696712 1618576 5696872 +1620064 5698256 1620104 5698248 1618576 5696872 1618560 5697104 +1620064 5698256 1619968 5698304 1620104 5698248 1618576 5696872 +1620104 5698248 1621936 5697864 1618552 5696712 1618576 5696872 +1620104 5698248 1621944 5698008 1621936 5697864 1618552 5696712 +1621944 5698008 1621936 5697864 1620104 5698248 1622064 5698152 +1621936 5697864 1622016 5697816 1618552 5696712 1620104 5698248 +1621576 5701360 1621712 5701344 1622296 5698320 1620104 5698248 +1622296 5698320 1620136 5698248 1620104 5698248 1621576 5701360 +1620104 5698248 1619152 5699792 1621576 5701360 1620136 5698248 +1621576 5701360 1622296 5698320 1620136 5698248 1619152 5699792 +1619152 5699792 1619152 5699888 1621576 5701360 1620136 5698248 +1620104 5698248 1619968 5698304 1619152 5699792 1620136 5698248 +1620104 5698248 1620064 5698256 1619968 5698304 1620136 5698248 +1619968 5698304 1619888 5698344 1619152 5699792 1620136 5698248 +1619888 5698344 1619136 5699704 1619152 5699792 1620136 5698248 +1619152 5699792 1621576 5701360 1620136 5698248 1619888 5698344 +1619968 5698304 1619888 5698344 1620136 5698248 1620064 5698256 +1620104 5698248 1620136 5698248 1622064 5698152 1621944 5698008 +1620136 5698248 1621944 5698008 1620104 5698248 1620064 5698256 +1620104 5698248 1620136 5698248 1621944 5698008 1621936 5697864 +1620136 5698248 1622064 5698152 1621944 5698008 1621936 5697864 +1620104 5698248 1620136 5698248 1621936 5697864 1618552 5696712 +1620104 5698248 1620136 5698248 1618552 5696712 1618576 5696872 +1620104 5698248 1620136 5698248 1618576 5696872 1620064 5698256 +1620136 5698248 1621936 5697864 1618552 5696712 1618576 5696872 +1620104 5698248 1620064 5698256 1620136 5698248 1618576 5696872 +1620136 5698248 1621944 5698008 1621936 5697864 1618552 5696712 +1620136 5698248 1622296 5698320 1622064 5698152 1621944 5698008 +1622296 5698320 1622064 5698152 1620136 5698248 1621576 5701360 +1621936 5697864 1622016 5697816 1618552 5696712 1620136 5698248 +1622296 5698320 1620136 5698248 1621576 5701360 1621712 5701344 +1621576 5701360 1620184 5698288 1620136 5698248 1619152 5699792 +1621576 5701360 1620184 5698288 1619152 5699792 1619152 5699888 +1620184 5698288 1620136 5698248 1619152 5699792 1619152 5699888 +1620136 5698248 1619888 5698344 1619152 5699792 1620184 5698288 +1619152 5699792 1619152 5699888 1620184 5698288 1619888 5698344 +1619888 5698344 1619136 5699704 1619152 5699792 1620184 5698288 +1619152 5699792 1619152 5699888 1620184 5698288 1619136 5699704 +1619888 5698344 1619752 5698384 1619136 5699704 1620184 5698288 +1620136 5698248 1619968 5698304 1619888 5698344 1620184 5698288 +1619888 5698344 1619136 5699704 1620184 5698288 1619968 5698304 +1620136 5698248 1620064 5698256 1619968 5698304 1620184 5698288 +1620136 5698248 1620104 5698248 1620064 5698256 1620184 5698288 +1619968 5698304 1619888 5698344 1620184 5698288 1620064 5698256 +1620064 5698256 1619968 5698304 1620184 5698288 1620104 5698248 +1620184 5698288 1622296 5698320 1620136 5698248 1620104 5698248 +1620136 5698248 1620184 5698288 1622296 5698320 1622064 5698152 +1620136 5698248 1620184 5698288 1622064 5698152 1621944 5698008 +1620136 5698248 1620184 5698288 1621944 5698008 1621936 5697864 +1620136 5698248 1620184 5698288 1621936 5697864 1618552 5696712 +1620184 5698288 1622064 5698152 1621944 5698008 1621936 5697864 +1620136 5698248 1620104 5698248 1620184 5698288 1621936 5697864 +1620184 5698288 1622296 5698320 1622064 5698152 1621944 5698008 +1620184 5698288 1621576 5701360 1622296 5698320 1622064 5698152 +1621576 5701360 1622296 5698320 1620184 5698288 1619152 5699888 +1621576 5701360 1620184 5698288 1619152 5699888 1619152 5700320 +1622296 5698320 1620184 5698288 1621576 5701360 1621712 5701344 +1620184 5698288 1620224 5698360 1622296 5698320 1622064 5698152 +1620184 5698288 1620224 5698360 1622064 5698152 1621944 5698008 +1620184 5698288 1620224 5698360 1621944 5698008 1621936 5697864 +1620184 5698288 1620224 5698360 1621936 5697864 1620136 5698248 +1620224 5698360 1622064 5698152 1621944 5698008 1621936 5697864 +1620224 5698360 1622296 5698320 1622064 5698152 1621944 5698008 +1620184 5698288 1621576 5701360 1620224 5698360 1621936 5697864 +1621576 5701360 1620224 5698360 1620184 5698288 1619152 5699888 +1620184 5698288 1619152 5699792 1619152 5699888 1620224 5698360 +1620184 5698288 1619136 5699704 1619152 5699792 1620224 5698360 +1619152 5699792 1619152 5699888 1620224 5698360 1619136 5699704 +1620184 5698288 1619888 5698344 1619136 5699704 1620224 5698360 +1619136 5699704 1619152 5699792 1620224 5698360 1619888 5698344 +1619888 5698344 1619752 5698384 1619136 5699704 1620224 5698360 +1619136 5699704 1619152 5699792 1620224 5698360 1619752 5698384 +1619888 5698344 1619848 5698352 1619752 5698384 1620224 5698360 +1619888 5698344 1619752 5698384 1620224 5698360 1620184 5698288 +1620184 5698288 1619968 5698304 1619888 5698344 1620224 5698360 +1619888 5698344 1619752 5698384 1620224 5698360 1619968 5698304 +1620184 5698288 1620064 5698256 1619968 5698304 1620224 5698360 +1619968 5698304 1619888 5698344 1620224 5698360 1620064 5698256 +1620184 5698288 1620104 5698248 1620064 5698256 1620224 5698360 +1620224 5698360 1621936 5697864 1620184 5698288 1620064 5698256 +1619152 5699888 1621576 5701360 1620224 5698360 1619152 5699792 +1620224 5698360 1621576 5701360 1622296 5698320 1622064 5698152 +1621576 5701360 1622296 5698320 1620224 5698360 1619152 5699888 +1619752 5698384 1619448 5698520 1619136 5699704 1620224 5698360 +1621576 5701360 1620224 5698360 1619152 5699888 1619152 5700320 +1622296 5698320 1620224 5698360 1621576 5701360 1621712 5701344 +1620224 5698360 1620248 5698392 1622296 5698320 1622064 5698152 +1620224 5698360 1620248 5698392 1622064 5698152 1621944 5698008 +1620224 5698360 1620248 5698392 1621944 5698008 1621936 5697864 +1620224 5698360 1620248 5698392 1621936 5697864 1620184 5698288 +1621936 5697864 1620136 5698248 1620184 5698288 1620248 5698392 +1620248 5698392 1621944 5698008 1621936 5697864 1620184 5698288 +1620248 5698392 1622064 5698152 1621944 5698008 1621936 5697864 +1620248 5698392 1622296 5698320 1622064 5698152 1621944 5698008 +1620224 5698360 1621576 5701360 1620248 5698392 1620184 5698288 +1621576 5701360 1620248 5698392 1620224 5698360 1619152 5699888 +1620224 5698360 1619152 5699792 1619152 5699888 1620248 5698392 +1620224 5698360 1619136 5699704 1619152 5699792 1620248 5698392 +1620224 5698360 1619752 5698384 1619136 5699704 1620248 5698392 +1619136 5699704 1619152 5699792 1620248 5698392 1619752 5698384 +1620224 5698360 1619888 5698344 1619752 5698384 1620248 5698392 +1619752 5698384 1619136 5699704 1620248 5698392 1619888 5698344 +1619888 5698344 1619848 5698352 1619752 5698384 1620248 5698392 +1620224 5698360 1619968 5698304 1619888 5698344 1620248 5698392 +1619888 5698344 1619752 5698384 1620248 5698392 1619968 5698304 +1620224 5698360 1620064 5698256 1619968 5698304 1620248 5698392 +1619152 5699792 1619152 5699888 1620248 5698392 1619136 5699704 +1620248 5698392 1620184 5698288 1620224 5698360 1619968 5698304 +1619152 5699888 1621576 5701360 1620248 5698392 1619152 5699792 +1620248 5698392 1621576 5701360 1622296 5698320 1622064 5698152 +1621576 5701360 1622296 5698320 1620248 5698392 1619152 5699888 +1619752 5698384 1619448 5698520 1619136 5699704 1620248 5698392 +1621576 5701360 1620248 5698392 1619152 5699888 1619152 5700320 +1622296 5698320 1620248 5698392 1621576 5701360 1621712 5701344 +1619152 5699888 1620248 5698424 1620248 5698392 1619152 5699792 +1620248 5698392 1619136 5699704 1619152 5699792 1620248 5698424 +1620248 5698392 1619752 5698384 1619136 5699704 1620248 5698424 +1620248 5698392 1619888 5698344 1619752 5698384 1620248 5698424 +1619752 5698384 1619136 5699704 1620248 5698424 1619888 5698344 +1619888 5698344 1619848 5698352 1619752 5698384 1620248 5698424 +1619888 5698344 1619848 5698352 1620248 5698424 1620248 5698392 +1619752 5698384 1619136 5699704 1620248 5698424 1619848 5698352 +1620248 5698392 1619968 5698304 1619888 5698344 1620248 5698424 +1619888 5698344 1619848 5698352 1620248 5698424 1619968 5698304 +1620248 5698392 1620224 5698360 1619968 5698304 1620248 5698424 +1619968 5698304 1619888 5698344 1620248 5698424 1620224 5698360 +1620224 5698360 1620064 5698256 1619968 5698304 1620248 5698424 +1619136 5699704 1619152 5699792 1620248 5698424 1619752 5698384 +1619152 5699792 1619152 5699888 1620248 5698424 1619136 5699704 +1620248 5698424 1621576 5701360 1620248 5698392 1620224 5698360 +1620248 5698392 1620248 5698424 1621576 5701360 1622296 5698320 +1620248 5698392 1620248 5698424 1622296 5698320 1622064 5698152 +1620248 5698392 1620248 5698424 1622064 5698152 1621944 5698008 +1620248 5698392 1620248 5698424 1621944 5698008 1621936 5697864 +1620248 5698424 1622296 5698320 1622064 5698152 1621944 5698008 +1620248 5698392 1620224 5698360 1620248 5698424 1621944 5698008 +1620248 5698424 1621576 5701360 1622296 5698320 1622064 5698152 +1620248 5698424 1619152 5699888 1621576 5701360 1622296 5698320 +1619152 5699888 1621576 5701360 1620248 5698424 1619152 5699792 +1619752 5698384 1619448 5698520 1619136 5699704 1620248 5698424 +1619752 5698384 1619448 5698520 1620248 5698424 1619848 5698352 +1619448 5698520 1618928 5698864 1619136 5699704 1620248 5698424 +1619136 5699704 1619152 5699792 1620248 5698424 1619448 5698520 +1619752 5698384 1619664 5698400 1619448 5698520 1620248 5698424 +1621576 5701360 1620248 5698424 1619152 5699888 1619152 5700320 +1621576 5701360 1621712 5701344 1622296 5698320 1620248 5698424 +1620248 5698424 1620224 5698488 1621576 5701360 1622296 5698320 +1620248 5698424 1620224 5698488 1622296 5698320 1622064 5698152 +1620248 5698424 1620224 5698488 1622064 5698152 1621944 5698008 +1620224 5698488 1621576 5701360 1622296 5698320 1622064 5698152 +1620248 5698424 1619152 5699888 1620224 5698488 1622064 5698152 +1619152 5699888 1620224 5698488 1620248 5698424 1619152 5699792 +1620248 5698424 1619136 5699704 1619152 5699792 1620224 5698488 +1620248 5698424 1619448 5698520 1619136 5699704 1620224 5698488 +1619448 5698520 1618928 5698864 1619136 5699704 1620224 5698488 +1619136 5699704 1619152 5699792 1620224 5698488 1619448 5698520 +1620224 5698488 1622064 5698152 1620248 5698424 1619448 5698520 +1619152 5699792 1619152 5699888 1620224 5698488 1619136 5699704 +1620224 5698488 1619152 5699888 1621576 5701360 1622296 5698320 +1619152 5699888 1621576 5701360 1620224 5698488 1619152 5699792 +1620248 5698424 1619752 5698384 1619448 5698520 1620224 5698488 +1620248 5698424 1619848 5698352 1619752 5698384 1620224 5698488 +1620248 5698424 1619888 5698344 1619848 5698352 1620224 5698488 +1620248 5698424 1619968 5698304 1619888 5698344 1620224 5698488 +1619848 5698352 1619752 5698384 1620224 5698488 1619888 5698344 +1619888 5698344 1619848 5698352 1620224 5698488 1619968 5698304 +1620248 5698424 1620224 5698360 1619968 5698304 1620224 5698488 +1619968 5698304 1619888 5698344 1620224 5698488 1620224 5698360 +1620248 5698424 1620248 5698392 1620224 5698360 1620224 5698488 +1620224 5698360 1620064 5698256 1619968 5698304 1620224 5698488 +1619448 5698520 1619136 5699704 1620224 5698488 1619752 5698384 +1620248 5698424 1620224 5698360 1620224 5698488 1622064 5698152 +1619752 5698384 1619448 5698520 1620224 5698488 1619848 5698352 +1619752 5698384 1619664 5698400 1619448 5698520 1620224 5698488 +1621576 5701360 1620224 5698488 1619152 5699888 1619152 5700320 +1621576 5701360 1621712 5701344 1622296 5698320 1620224 5698488 +1619136 5699704 1620184 5698536 1620224 5698488 1619448 5698520 +1619136 5699704 1620184 5698536 1619448 5698520 1618928 5698864 +1620224 5698488 1619752 5698384 1619448 5698520 1620184 5698536 +1619448 5698520 1619136 5699704 1620184 5698536 1619752 5698384 +1620224 5698488 1620184 5698536 1619152 5699792 1619152 5699888 +1620184 5698536 1619152 5699888 1620224 5698488 1619752 5698384 +1620224 5698488 1620184 5698536 1619152 5699888 1621576 5701360 +1620184 5698536 1619152 5699792 1619152 5699888 1621576 5701360 +1620224 5698488 1620184 5698536 1621576 5701360 1622296 5698320 +1620224 5698488 1620184 5698536 1622296 5698320 1622064 5698152 +1620224 5698488 1619752 5698384 1620184 5698536 1622296 5698320 +1620184 5698536 1619152 5699888 1621576 5701360 1622296 5698320 +1620184 5698536 1619136 5699704 1619152 5699792 1619152 5699888 +1619136 5699704 1619152 5699792 1620184 5698536 1619448 5698520 +1620224 5698488 1619848 5698352 1619752 5698384 1620184 5698536 +1620224 5698488 1619888 5698344 1619848 5698352 1620184 5698536 +1620224 5698488 1619968 5698304 1619888 5698344 1620184 5698536 +1620224 5698488 1620224 5698360 1619968 5698304 1620184 5698536 +1619888 5698344 1619848 5698352 1620184 5698536 1619968 5698304 +1619968 5698304 1619888 5698344 1620184 5698536 1620224 5698360 +1620224 5698488 1620248 5698424 1620224 5698360 1620184 5698536 +1620224 5698360 1620064 5698256 1619968 5698304 1620184 5698536 +1619752 5698384 1619448 5698520 1620184 5698536 1619848 5698352 +1620224 5698488 1620224 5698360 1620184 5698536 1622296 5698320 +1619848 5698352 1619752 5698384 1620184 5698536 1619888 5698344 +1619752 5698384 1619664 5698400 1619448 5698520 1620184 5698536 +1619152 5699888 1619152 5700320 1621576 5701360 1620184 5698536 +1621576 5701360 1621712 5701344 1622296 5698320 1620184 5698536 +1619136 5699704 1620144 5698568 1619448 5698520 1618928 5698864 +1619448 5698520 1620144 5698568 1620184 5698536 1619752 5698384 +1620184 5698536 1619848 5698352 1619752 5698384 1620144 5698568 +1619752 5698384 1619448 5698520 1620144 5698568 1619848 5698352 +1620144 5698568 1619136 5699704 1620184 5698536 1619848 5698352 +1620184 5698536 1620144 5698568 1619136 5699704 1619152 5699792 +1620184 5698536 1620144 5698568 1619152 5699792 1619152 5699888 +1620184 5698536 1620144 5698568 1619152 5699888 1621576 5701360 +1620184 5698536 1620144 5698568 1621576 5701360 1622296 5698320 +1620144 5698568 1619152 5699792 1619152 5699888 1621576 5701360 +1620184 5698536 1619848 5698352 1620144 5698568 1621576 5701360 +1620144 5698568 1619136 5699704 1619152 5699792 1619152 5699888 +1620144 5698568 1619448 5698520 1619136 5699704 1619152 5699792 +1619448 5698520 1619136 5699704 1620144 5698568 1619752 5698384 +1620184 5698536 1619888 5698344 1619848 5698352 1620144 5698568 +1620184 5698536 1619968 5698304 1619888 5698344 1620144 5698568 +1620184 5698536 1620224 5698360 1619968 5698304 1620144 5698568 +1619848 5698352 1619752 5698384 1620144 5698568 1619888 5698344 +1620184 5698536 1619968 5698304 1620144 5698568 1621576 5701360 +1619888 5698344 1619848 5698352 1620144 5698568 1619968 5698304 +1619448 5698520 1620144 5698568 1619752 5698384 1619664 5698400 +1619448 5698520 1620144 5698568 1619664 5698400 1619568 5698416 +1620144 5698568 1619848 5698352 1619752 5698384 1619664 5698400 +1619448 5698520 1619136 5699704 1620144 5698568 1619664 5698400 +1619152 5699888 1619152 5700320 1621576 5701360 1620144 5698568 +1619136 5699704 1620104 5698584 1619448 5698520 1618928 5698864 +1620144 5698568 1620104 5698584 1619136 5699704 1619152 5699792 +1620144 5698568 1620104 5698584 1619152 5699792 1619152 5699888 +1620144 5698568 1620104 5698584 1619152 5699888 1621576 5701360 +1620104 5698584 1619136 5699704 1619152 5699792 1619152 5699888 +1620144 5698568 1619448 5698520 1620104 5698584 1619152 5699888 +1619448 5698520 1620104 5698584 1620144 5698568 1619664 5698400 +1619448 5698520 1619136 5699704 1620104 5698584 1619664 5698400 +1619448 5698520 1620104 5698584 1619664 5698400 1619568 5698416 +1620104 5698584 1619152 5699888 1620144 5698568 1619664 5698400 +1620104 5698584 1619448 5698520 1619136 5699704 1619152 5699792 +1620144 5698568 1619752 5698384 1619664 5698400 1620104 5698584 +1620144 5698568 1619848 5698352 1619752 5698384 1620104 5698584 +1620144 5698568 1619888 5698344 1619848 5698352 1620104 5698584 +1619848 5698352 1619752 5698384 1620104 5698584 1619888 5698344 +1620144 5698568 1619888 5698344 1620104 5698584 1619152 5699888 +1619664 5698400 1619448 5698520 1620104 5698584 1619752 5698384 +1620144 5698568 1619968 5698304 1619888 5698344 1620104 5698584 +1620144 5698568 1620184 5698536 1619968 5698304 1620104 5698584 +1619888 5698344 1619848 5698352 1620104 5698584 1619968 5698304 +1620144 5698568 1619968 5698304 1620104 5698584 1619152 5699888 +1619752 5698384 1619664 5698400 1620104 5698584 1619848 5698352 +1619448 5698520 1620064 5698616 1620104 5698584 1619664 5698400 +1620064 5698616 1619136 5699704 1620104 5698584 1619664 5698400 +1619448 5698520 1619136 5699704 1620064 5698616 1619664 5698400 +1619448 5698520 1620064 5698616 1619664 5698400 1619568 5698416 +1619136 5699704 1620064 5698616 1619448 5698520 1618928 5698864 +1620104 5698584 1619752 5698384 1619664 5698400 1620064 5698616 +1620104 5698584 1619752 5698384 1620064 5698616 1619136 5699704 +1619664 5698400 1619448 5698520 1620064 5698616 1619752 5698384 +1620104 5698584 1620064 5698616 1619136 5699704 1619152 5699792 +1620104 5698584 1619752 5698384 1620064 5698616 1619152 5699792 +1620064 5698616 1619448 5698520 1619136 5699704 1619152 5699792 +1620104 5698584 1620064 5698616 1619152 5699792 1619152 5699888 +1620104 5698584 1619752 5698384 1620064 5698616 1619152 5699888 +1620104 5698584 1620064 5698616 1619152 5699888 1620144 5698568 +1620104 5698584 1619752 5698384 1620064 5698616 1620144 5698568 +1619152 5699888 1621576 5701360 1620144 5698568 1620064 5698616 +1621576 5701360 1620184 5698536 1620144 5698568 1620064 5698616 +1620144 5698568 1620104 5698584 1620064 5698616 1621576 5701360 +1620064 5698616 1619152 5699792 1619152 5699888 1621576 5701360 +1620064 5698616 1619136 5699704 1619152 5699792 1619152 5699888 +1620104 5698584 1619848 5698352 1619752 5698384 1620064 5698616 +1620104 5698584 1619848 5698352 1620064 5698616 1620144 5698568 +1620104 5698584 1619888 5698344 1619848 5698352 1620064 5698616 +1620104 5698584 1619888 5698344 1620064 5698616 1620144 5698568 +1620104 5698584 1619968 5698304 1619888 5698344 1620064 5698616 +1619752 5698384 1619664 5698400 1620064 5698616 1619848 5698352 +1619848 5698352 1619752 5698384 1620064 5698616 1619888 5698344 +1619152 5699888 1619152 5700320 1621576 5701360 1620064 5698616 +1620064 5698616 1619976 5698672 1619136 5699704 1619152 5699792 +1620064 5698616 1619448 5698520 1619976 5698672 1619152 5699792 +1619448 5698520 1619976 5698672 1620064 5698616 1619664 5698400 +1620064 5698616 1619752 5698384 1619664 5698400 1619976 5698672 +1619976 5698672 1619152 5699792 1620064 5698616 1619752 5698384 +1619664 5698400 1619448 5698520 1619976 5698672 1619752 5698384 +1619976 5698672 1619448 5698520 1619136 5699704 1619152 5699792 +1619448 5698520 1619136 5699704 1619976 5698672 1619664 5698400 +1619448 5698520 1619976 5698672 1619664 5698400 1619568 5698416 +1619136 5699704 1619976 5698672 1619448 5698520 1618928 5698864 +1620064 5698616 1619848 5698352 1619752 5698384 1619976 5698672 +1619752 5698384 1619664 5698400 1619976 5698672 1619848 5698352 +1620064 5698616 1619848 5698352 1619976 5698672 1619152 5699792 +1620064 5698616 1619976 5698672 1619152 5699792 1619152 5699888 +1619976 5698672 1619136 5699704 1619152 5699792 1619152 5699888 +1620064 5698616 1619848 5698352 1619976 5698672 1619152 5699888 +1620064 5698616 1619976 5698672 1619152 5699888 1621576 5701360 +1620064 5698616 1619848 5698352 1619976 5698672 1621576 5701360 +1620064 5698616 1619976 5698672 1621576 5701360 1620144 5698568 +1619976 5698672 1619152 5699792 1619152 5699888 1621576 5701360 +1620064 5698616 1619888 5698344 1619848 5698352 1619976 5698672 +1620064 5698616 1619888 5698344 1619976 5698672 1621576 5701360 +1620064 5698616 1620104 5698584 1619888 5698344 1619976 5698672 +1619848 5698352 1619752 5698384 1619976 5698672 1619888 5698344 +1619152 5699888 1619152 5700320 1621576 5701360 1619976 5698672 +1619976 5698672 1619928 5698680 1619136 5699704 1619152 5699792 +1619976 5698672 1619928 5698680 1619152 5699792 1619152 5699888 +1619976 5698672 1619448 5698520 1619928 5698680 1619152 5699792 +1619448 5698520 1619928 5698680 1619976 5698672 1619664 5698400 +1619976 5698672 1619752 5698384 1619664 5698400 1619928 5698680 +1619976 5698672 1619848 5698352 1619752 5698384 1619928 5698680 +1619752 5698384 1619664 5698400 1619928 5698680 1619848 5698352 +1619928 5698680 1619152 5699792 1619976 5698672 1619848 5698352 +1619664 5698400 1619448 5698520 1619928 5698680 1619752 5698384 +1619928 5698680 1619448 5698520 1619136 5699704 1619152 5699792 +1619448 5698520 1619136 5699704 1619928 5698680 1619664 5698400 +1619448 5698520 1619928 5698680 1619664 5698400 1619568 5698416 +1619136 5699704 1619928 5698680 1619448 5698520 1618928 5698864 +1619136 5699704 1619152 5699792 1619928 5698680 1618928 5698864 +1619928 5698680 1619664 5698400 1619448 5698520 1618928 5698864 +1619448 5698520 1618936 5698840 1618928 5698864 1619928 5698680 +1619136 5699704 1619928 5698680 1618928 5698864 1618896 5698904 +1619976 5698672 1619888 5698344 1619848 5698352 1619928 5698680 +1619848 5698352 1619752 5698384 1619928 5698680 1619888 5698344 +1619976 5698672 1619888 5698344 1619928 5698680 1619152 5699792 +1619976 5698672 1620064 5698616 1619888 5698344 1619928 5698680 +1619448 5698520 1619888 5698672 1619928 5698680 1619664 5698400 +1619928 5698680 1619752 5698384 1619664 5698400 1619888 5698672 +1619928 5698680 1619848 5698352 1619752 5698384 1619888 5698672 +1619928 5698680 1619888 5698344 1619848 5698352 1619888 5698672 +1619848 5698352 1619752 5698384 1619888 5698672 1619888 5698344 +1619752 5698384 1619664 5698400 1619888 5698672 1619848 5698352 +1619888 5698672 1618928 5698864 1619928 5698680 1619888 5698344 +1619664 5698400 1619448 5698520 1619888 5698672 1619752 5698384 +1619448 5698520 1618928 5698864 1619888 5698672 1619664 5698400 +1619448 5698520 1619888 5698672 1619664 5698400 1619568 5698416 +1619888 5698672 1619752 5698384 1619664 5698400 1619568 5698416 +1619448 5698520 1618928 5698864 1619888 5698672 1619568 5698416 +1618928 5698864 1619888 5698672 1619448 5698520 1618936 5698840 +1619448 5698520 1619888 5698672 1619568 5698416 1619480 5698472 +1619928 5698680 1619888 5698672 1618928 5698864 1619136 5699704 +1619928 5698680 1619888 5698672 1619136 5699704 1619152 5699792 +1619928 5698680 1619888 5698344 1619888 5698672 1619136 5699704 +1619888 5698672 1619448 5698520 1618928 5698864 1619136 5699704 +1618928 5698864 1618896 5698904 1619136 5699704 1619888 5698672 +1619928 5698680 1619976 5698672 1619888 5698344 1619888 5698672 +1619888 5698344 1619848 5698352 1619888 5698672 1619976 5698672 +1619928 5698680 1619976 5698672 1619888 5698672 1619136 5699704 +1619976 5698672 1620064 5698616 1619888 5698344 1619888 5698672 +1619888 5698672 1619848 5698648 1619448 5698520 1618928 5698864 +1619888 5698672 1619848 5698648 1618928 5698864 1619136 5699704 +1619888 5698672 1619568 5698416 1619848 5698648 1619136 5699704 +1619848 5698648 1619448 5698520 1618928 5698864 1619136 5699704 +1619848 5698648 1619568 5698416 1619448 5698520 1618928 5698864 +1619568 5698416 1619848 5698648 1619888 5698672 1619664 5698400 +1619888 5698672 1619752 5698384 1619664 5698400 1619848 5698648 +1619888 5698672 1619848 5698352 1619752 5698384 1619848 5698648 +1619888 5698672 1619888 5698344 1619848 5698352 1619848 5698648 +1619888 5698672 1619976 5698672 1619888 5698344 1619848 5698648 +1619888 5698344 1619848 5698352 1619848 5698648 1619976 5698672 +1619848 5698352 1619752 5698384 1619848 5698648 1619888 5698344 +1619752 5698384 1619664 5698400 1619848 5698648 1619848 5698352 +1619848 5698648 1619136 5699704 1619888 5698672 1619976 5698672 +1619568 5698416 1619448 5698520 1619848 5698648 1619664 5698400 +1619664 5698400 1619568 5698416 1619848 5698648 1619752 5698384 +1619448 5698520 1618936 5698840 1618928 5698864 1619848 5698648 +1618928 5698864 1618896 5698904 1619136 5699704 1619848 5698648 +1619448 5698520 1619848 5698648 1619568 5698416 1619480 5698472 +1619888 5698672 1619848 5698648 1619136 5699704 1619928 5698680 +1619888 5698672 1619928 5698680 1619976 5698672 1619848 5698648 +1619976 5698672 1620064 5698616 1619888 5698344 1619848 5698648 +1619976 5698672 1620064 5698616 1619848 5698648 1619888 5698672 +1619888 5698344 1619848 5698352 1619848 5698648 1620064 5698616 +1620064 5698616 1620104 5698584 1619888 5698344 1619848 5698648 +1619848 5698648 1619800 5698632 1619448 5698520 1618928 5698864 +1619848 5698648 1619800 5698632 1618928 5698864 1619136 5699704 +1619848 5698648 1619800 5698632 1619136 5699704 1619888 5698672 +1619800 5698632 1618928 5698864 1619136 5699704 1619888 5698672 +1619800 5698632 1619448 5698520 1618928 5698864 1619136 5699704 +1619848 5698648 1619568 5698416 1619800 5698632 1619888 5698672 +1619568 5698416 1619800 5698632 1619848 5698648 1619664 5698400 +1619800 5698632 1619888 5698672 1619848 5698648 1619664 5698400 +1619800 5698632 1619568 5698416 1619448 5698520 1618928 5698864 +1619568 5698416 1619448 5698520 1619800 5698632 1619664 5698400 +1619848 5698648 1619752 5698384 1619664 5698400 1619800 5698632 +1619848 5698648 1619848 5698352 1619752 5698384 1619800 5698632 +1619848 5698648 1619888 5698344 1619848 5698352 1619800 5698632 +1619848 5698648 1619848 5698352 1619800 5698632 1619888 5698672 +1619664 5698400 1619568 5698416 1619800 5698632 1619752 5698384 +1619752 5698384 1619664 5698400 1619800 5698632 1619848 5698352 +1619448 5698520 1618936 5698840 1618928 5698864 1619800 5698632 +1618928 5698864 1618896 5698904 1619136 5699704 1619800 5698632 +1619448 5698520 1619800 5698632 1619568 5698416 1619480 5698472 +1619448 5698520 1618928 5698864 1619800 5698632 1619480 5698472 +1619800 5698632 1619664 5698400 1619568 5698416 1619480 5698472 +1619136 5699704 1619928 5698680 1619888 5698672 1619800 5698632 +1619568 5698416 1619760 5698608 1619800 5698632 1619664 5698400 +1619800 5698632 1619752 5698384 1619664 5698400 1619760 5698608 +1619760 5698608 1619480 5698472 1619800 5698632 1619752 5698384 +1619664 5698400 1619568 5698416 1619760 5698608 1619752 5698384 +1619568 5698416 1619480 5698472 1619760 5698608 1619664 5698400 +1619800 5698632 1619848 5698352 1619752 5698384 1619760 5698608 +1619800 5698632 1619848 5698648 1619848 5698352 1619760 5698608 +1619752 5698384 1619664 5698400 1619760 5698608 1619848 5698352 +1619800 5698632 1619848 5698352 1619760 5698608 1619480 5698472 +1619800 5698632 1619760 5698608 1619480 5698472 1619448 5698520 +1619800 5698632 1619760 5698608 1619448 5698520 1618928 5698864 +1619800 5698632 1619760 5698608 1618928 5698864 1619136 5699704 +1619800 5698632 1619848 5698352 1619760 5698608 1618928 5698864 +1619760 5698608 1619568 5698416 1619480 5698472 1619448 5698520 +1619448 5698520 1618936 5698840 1618928 5698864 1619760 5698608 +1619760 5698608 1619480 5698472 1619448 5698520 1618928 5698864 +1619760 5698608 1619712 5698600 1618928 5698864 1619800 5698632 +1618928 5698864 1619136 5699704 1619800 5698632 1619712 5698600 +1619136 5699704 1619888 5698672 1619800 5698632 1619712 5698600 +1619800 5698632 1619760 5698608 1619712 5698600 1619136 5699704 +1619760 5698608 1619448 5698520 1619712 5698600 1619800 5698632 +1619712 5698600 1619448 5698520 1618928 5698864 1619136 5699704 +1618928 5698864 1619712 5698600 1619448 5698520 1618936 5698840 +1618928 5698864 1618896 5698904 1619136 5699704 1619712 5698600 +1619448 5698520 1619712 5698600 1619760 5698608 1619480 5698472 +1619760 5698608 1619568 5698416 1619480 5698472 1619712 5698600 +1619712 5698600 1619800 5698632 1619760 5698608 1619568 5698416 +1619760 5698608 1619664 5698400 1619568 5698416 1619712 5698600 +1619760 5698608 1619752 5698384 1619664 5698400 1619712 5698600 +1619760 5698608 1619848 5698352 1619752 5698384 1619712 5698600 +1619568 5698416 1619480 5698472 1619712 5698600 1619664 5698400 +1619760 5698608 1619752 5698384 1619712 5698600 1619800 5698632 +1619664 5698400 1619568 5698416 1619712 5698600 1619752 5698384 +1619448 5698520 1618928 5698864 1619712 5698600 1619480 5698472 +1619480 5698472 1619448 5698520 1619712 5698600 1619568 5698416 +1619712 5698600 1619672 5698600 1618928 5698864 1619136 5699704 +1619712 5698600 1619672 5698600 1619136 5699704 1619800 5698632 +1619136 5699704 1619888 5698672 1619800 5698632 1619672 5698600 +1619888 5698672 1619848 5698648 1619800 5698632 1619672 5698600 +1619800 5698632 1619712 5698600 1619672 5698600 1619888 5698672 +1619712 5698600 1619672 5698600 1619800 5698632 1619760 5698608 +1619672 5698600 1618928 5698864 1619136 5699704 1619888 5698672 +1619712 5698600 1619448 5698520 1619672 5698600 1619800 5698632 +1619448 5698520 1619672 5698600 1619712 5698600 1619480 5698472 +1619672 5698600 1619800 5698632 1619712 5698600 1619480 5698472 +1619672 5698600 1619448 5698520 1618928 5698864 1619136 5699704 +1619448 5698520 1618928 5698864 1619672 5698600 1619480 5698472 +1618928 5698864 1619672 5698600 1619448 5698520 1618936 5698840 +1618928 5698864 1618896 5698904 1619136 5699704 1619672 5698600 +1619712 5698600 1619568 5698416 1619480 5698472 1619672 5698600 +1619712 5698600 1619664 5698400 1619568 5698416 1619672 5698600 +1619712 5698600 1619752 5698384 1619664 5698400 1619672 5698600 +1619712 5698600 1619664 5698400 1619672 5698600 1619800 5698632 +1619480 5698472 1619448 5698520 1619672 5698600 1619568 5698416 +1619568 5698416 1619480 5698472 1619672 5698600 1619664 5698400 +1619136 5699704 1619928 5698680 1619888 5698672 1619672 5698600 +1619672 5698600 1619584 5698656 1619136 5699704 1619888 5698672 +1619672 5698600 1619584 5698656 1619888 5698672 1619800 5698632 +1619888 5698672 1619848 5698648 1619800 5698632 1619584 5698656 +1619672 5698600 1619584 5698656 1619800 5698632 1619712 5698600 +1619584 5698656 1619888 5698672 1619800 5698632 1619712 5698600 +1619800 5698632 1619760 5698608 1619712 5698600 1619584 5698656 +1619584 5698656 1619136 5699704 1619888 5698672 1619800 5698632 +1618928 5698864 1619584 5698656 1619672 5698600 1619448 5698520 +1619672 5698600 1619448 5698520 1619584 5698656 1619712 5698600 +1619672 5698600 1619480 5698472 1619448 5698520 1619584 5698656 +1619672 5698600 1619568 5698416 1619480 5698472 1619584 5698656 +1619448 5698520 1618928 5698864 1619584 5698656 1619480 5698472 +1619672 5698600 1619480 5698472 1619584 5698656 1619712 5698600 +1619584 5698656 1618928 5698864 1619136 5699704 1619888 5698672 +1618928 5698864 1619136 5699704 1619584 5698656 1619448 5698520 +1618928 5698864 1619584 5698656 1619448 5698520 1618936 5698840 +1619584 5698656 1619480 5698472 1619448 5698520 1618936 5698840 +1618928 5698864 1619136 5699704 1619584 5698656 1618936 5698840 +1619448 5698520 1619080 5698608 1618936 5698840 1619584 5698656 +1619448 5698520 1619080 5698608 1619584 5698656 1619480 5698472 +1618936 5698840 1618928 5698864 1619584 5698656 1619080 5698608 +1619080 5698608 1619040 5698640 1618936 5698840 1619584 5698656 +1619136 5699704 1619584 5698656 1618928 5698864 1618896 5698904 +1619136 5699704 1619928 5698680 1619888 5698672 1619584 5698656 +1619448 5698520 1619096 5698576 1619080 5698608 1619584 5698656 +1619584 5698656 1619544 5698664 1618936 5698840 1618928 5698864 +1619584 5698656 1619080 5698608 1619544 5698664 1618928 5698864 +1619584 5698656 1619544 5698664 1618928 5698864 1619136 5699704 +1619584 5698656 1619544 5698664 1619136 5699704 1619888 5698672 +1619584 5698656 1619080 5698608 1619544 5698664 1619136 5699704 +1619544 5698664 1619080 5698608 1618936 5698840 1618928 5698864 +1619544 5698664 1618936 5698840 1618928 5698864 1619136 5699704 +1618936 5698840 1619544 5698664 1619080 5698608 1619040 5698640 +1619080 5698608 1619544 5698664 1619584 5698656 1619448 5698520 +1619584 5698656 1619480 5698472 1619448 5698520 1619544 5698664 +1619544 5698664 1619136 5699704 1619584 5698656 1619448 5698520 +1619080 5698608 1618936 5698840 1619544 5698664 1619448 5698520 +1618928 5698864 1618896 5698904 1619136 5699704 1619544 5698664 +1619080 5698608 1619544 5698664 1619448 5698520 1619096 5698576 +1619544 5698664 1619496 5698640 1619080 5698608 1618936 5698840 +1619544 5698664 1619496 5698640 1618936 5698840 1618928 5698864 +1619544 5698664 1619448 5698520 1619496 5698640 1618928 5698864 +1619496 5698640 1619080 5698608 1618936 5698840 1618928 5698864 +1619496 5698640 1619448 5698520 1619080 5698608 1618936 5698840 +1619544 5698664 1619496 5698640 1618928 5698864 1619136 5699704 +1619080 5698608 1619040 5698640 1618936 5698840 1619496 5698640 +1618936 5698840 1618928 5698864 1619496 5698640 1619040 5698640 +1619080 5698608 1619040 5698640 1619496 5698640 1619448 5698520 +1619040 5698640 1618976 5698680 1618936 5698840 1619496 5698640 +1619448 5698520 1619496 5698640 1619544 5698664 1619584 5698656 +1619448 5698520 1619496 5698640 1619584 5698656 1619480 5698472 +1619584 5698656 1619672 5698600 1619480 5698472 1619496 5698640 +1619496 5698640 1618928 5698864 1619544 5698664 1619584 5698656 +1619448 5698520 1619080 5698608 1619496 5698640 1619480 5698472 +1619496 5698640 1619544 5698664 1619584 5698656 1619480 5698472 +1619080 5698608 1619496 5698640 1619448 5698520 1619096 5698576 +1619080 5698608 1619040 5698640 1619496 5698640 1619096 5698576 +1619496 5698640 1619480 5698472 1619448 5698520 1619096 5698576 +1619448 5698520 1619104 5698544 1619096 5698576 1619496 5698640 +1619448 5698520 1619448 5698592 1619496 5698640 1619480 5698472 +1619096 5698576 1619448 5698592 1619448 5698520 1619104 5698544 +1619096 5698576 1619496 5698640 1619448 5698592 1619104 5698544 +1619448 5698592 1619496 5698640 1619448 5698520 1619104 5698544 +1619448 5698520 1619088 5698488 1619104 5698544 1619448 5698592 +1619496 5698640 1619448 5698592 1619096 5698576 1619080 5698608 +1619496 5698640 1619448 5698592 1619080 5698608 1619040 5698640 +1619496 5698640 1619448 5698520 1619448 5698592 1619080 5698608 +1619448 5698592 1619104 5698544 1619096 5698576 1619080 5698608 +1622880 5701536 1622400 5699472 1621816 5701384 1622664 5701568 +1621816 5701384 1622216 5701544 1622664 5701568 1622400 5699472 +1622664 5701568 1622880 5701536 1622400 5699472 1622216 5701544 +1622216 5701544 1622440 5701576 1622664 5701568 1622400 5699472 +1622216 5701544 1622440 5701576 1622400 5699472 1621816 5701384 +1622664 5701568 1622880 5701536 1622400 5699472 1622440 5701576 +1622880 5701536 1622424 5698368 1622400 5699472 1622664 5701568 +1622400 5699472 1622424 5698368 1621816 5701384 1622216 5701544 +1622424 5698368 1622400 5699472 1622880 5701536 1622536 5698344 +1622880 5701536 1623016 5701528 1622536 5698344 1622400 5699472 +1622400 5699472 1622664 5701568 1622880 5701536 1623016 5701528 +1622424 5698368 1621816 5701384 1622400 5699472 1622536 5698344 +1622536 5698344 1622424 5698368 1622400 5699472 1623016 5701528 +1623016 5701528 1624344 5701024 1622536 5698344 1622400 5699472 +1623016 5701528 1624344 5701024 1622400 5699472 1622880 5701536 +1622536 5698344 1622424 5698368 1622400 5699472 1624344 5701024 +1624344 5701024 1622656 5698272 1622536 5698344 1622400 5699472 +1624344 5701024 1624408 5700984 1622656 5698272 1622400 5699472 +1624408 5700984 1625032 5698608 1622656 5698272 1622400 5699472 +1625032 5698608 1622712 5698216 1622656 5698272 1622400 5699472 +1625032 5698608 1622712 5698216 1622400 5699472 1624408 5700984 +1624408 5700984 1625032 5698608 1622400 5699472 1624344 5701024 +1625032 5698608 1623672 5697496 1622712 5698216 1622400 5699472 +1622536 5698344 1622424 5698368 1622400 5699472 1622656 5698272 +1622656 5698272 1622536 5698344 1622400 5699472 1622712 5698216 +1624344 5701024 1624408 5700984 1622400 5699472 1623016 5701528 +1621816 5701384 1622400 5699472 1622424 5698368 1621712 5701344 +1621816 5701384 1622216 5701544 1622400 5699472 1621712 5701344 +1622400 5699472 1622536 5698344 1622424 5698368 1621712 5701344 +1622424 5698368 1622296 5698320 1621712 5701344 1622400 5699472 +1622424 5698368 1622296 5698320 1622400 5699472 1622536 5698344 +1621712 5701344 1621816 5701384 1622400 5699472 1622296 5698320 +1623016 5701528 1624288 5701080 1624344 5701024 1622400 5699472 +1623016 5701528 1624288 5701080 1622400 5699472 1622880 5701536 +1623016 5701528 1623192 5701576 1624288 5701080 1622400 5699472 +1624344 5701024 1624408 5700984 1622400 5699472 1624288 5701080 +1624408 5700984 1625104 5698680 1625032 5698608 1622400 5699472 +1622296 5698320 1621576 5701360 1621712 5701344 1622400 5699472 +1622296 5698320 1621576 5701360 1622400 5699472 1622424 5698368 +1621712 5701344 1621816 5701384 1622400 5699472 1621576 5701360 +1622296 5698320 1620184 5698536 1621576 5701360 1622400 5699472 +1622296 5698320 1620184 5698536 1622400 5699472 1622424 5698368 +1622296 5698320 1620224 5698488 1620184 5698536 1622400 5699472 +1622296 5698320 1620224 5698488 1622400 5699472 1622424 5698368 +1622296 5698320 1622064 5698152 1620224 5698488 1622400 5699472 +1622296 5698320 1622064 5698152 1622400 5699472 1622424 5698368 +1622064 5698152 1620248 5698424 1620224 5698488 1622400 5699472 +1620224 5698488 1620184 5698536 1622400 5699472 1622064 5698152 +1620184 5698536 1620144 5698568 1621576 5701360 1622400 5699472 +1620144 5698568 1620064 5698616 1621576 5701360 1622400 5699472 +1620144 5698568 1620064 5698616 1622400 5699472 1620184 5698536 +1620064 5698616 1619976 5698672 1621576 5701360 1622400 5699472 +1620144 5698568 1620104 5698584 1620064 5698616 1622400 5699472 +1621576 5701360 1621712 5701344 1622400 5699472 1620064 5698616 +1620184 5698536 1620144 5698568 1622400 5699472 1620224 5698488 +1622400 5699472 1622424 5699440 1622712 5698216 1622656 5698272 +1625032 5698608 1622424 5699440 1622400 5699472 1624408 5700984 +1622400 5699472 1624344 5701024 1624408 5700984 1622424 5699440 +1624408 5700984 1625032 5698608 1622424 5699440 1624344 5701024 +1622712 5698216 1622424 5699440 1625032 5698608 1623672 5697496 +1622400 5699472 1624344 5701024 1622424 5699440 1622656 5698272 +1622424 5699440 1625032 5698608 1622712 5698216 1622656 5698272 +1625032 5698608 1622712 5698216 1622424 5699440 1624408 5700984 +1622400 5699472 1622424 5699440 1622656 5698272 1622536 5698344 +1622424 5699440 1622712 5698216 1622656 5698272 1622536 5698344 +1622400 5699472 1624344 5701024 1622424 5699440 1622536 5698344 +1622400 5699472 1622424 5699440 1622536 5698344 1622424 5698368 +1622400 5699472 1624344 5701024 1622424 5699440 1622424 5698368 +1622400 5699472 1622424 5699440 1622424 5698368 1622296 5698320 +1622400 5699472 1624344 5701024 1622424 5699440 1622296 5698320 +1622400 5699472 1622424 5699440 1622296 5698320 1622064 5698152 +1622424 5699440 1622536 5698344 1622424 5698368 1622296 5698320 +1622424 5699440 1622656 5698272 1622536 5698344 1622424 5698368 +1622400 5699472 1624288 5701080 1624344 5701024 1622424 5699440 +1624344 5701024 1624408 5700984 1622424 5699440 1624288 5701080 +1622400 5699472 1624288 5701080 1622424 5699440 1622296 5698320 +1622400 5699472 1623016 5701528 1624288 5701080 1622424 5699440 +1625032 5698608 1622424 5699440 1624408 5700984 1625104 5698680 +1622712 5698216 1622448 5699424 1625032 5698608 1623672 5697496 +1622424 5699440 1622448 5699424 1622712 5698216 1622656 5698272 +1622424 5699440 1622448 5699424 1622656 5698272 1622536 5698344 +1622448 5699424 1625032 5698608 1622712 5698216 1622656 5698272 +1622448 5699424 1622712 5698216 1622656 5698272 1622536 5698344 +1622424 5699440 1625032 5698608 1622448 5699424 1622536 5698344 +1625032 5698608 1622448 5699424 1622424 5699440 1624408 5700984 +1622424 5699440 1624344 5701024 1624408 5700984 1622448 5699424 +1622424 5699440 1624288 5701080 1624344 5701024 1622448 5699424 +1624344 5701024 1624408 5700984 1622448 5699424 1624288 5701080 +1625032 5698608 1622712 5698216 1622448 5699424 1624408 5700984 +1622448 5699424 1622536 5698344 1622424 5699440 1624288 5701080 +1624408 5700984 1625032 5698608 1622448 5699424 1624344 5701024 +1622424 5699440 1622448 5699424 1622536 5698344 1622424 5698368 +1622448 5699424 1622656 5698272 1622536 5698344 1622424 5698368 +1622424 5699440 1624288 5701080 1622448 5699424 1622424 5698368 +1622424 5699440 1622448 5699424 1622424 5698368 1622296 5698320 +1622424 5699440 1622448 5699424 1622296 5698320 1622400 5699472 +1622424 5699440 1624288 5701080 1622448 5699424 1622296 5698320 +1622448 5699424 1622536 5698344 1622424 5698368 1622296 5698320 +1622424 5699440 1622400 5699472 1624288 5701080 1622448 5699424 +1624288 5701080 1624344 5701024 1622448 5699424 1622400 5699472 +1622424 5699440 1622400 5699472 1622448 5699424 1622296 5698320 +1622400 5699472 1623016 5701528 1624288 5701080 1622448 5699424 +1624288 5701080 1624344 5701024 1622448 5699424 1623016 5701528 +1622400 5699472 1622880 5701536 1623016 5701528 1622448 5699424 +1623016 5701528 1623192 5701576 1624288 5701080 1622448 5699424 +1622400 5699472 1623016 5701528 1622448 5699424 1622424 5699440 +1625032 5698608 1622448 5699424 1624408 5700984 1625104 5698680 +1622448 5699424 1622496 5699416 1625032 5698608 1622712 5698216 +1625032 5698608 1623672 5697496 1622712 5698216 1622496 5699416 +1622448 5699424 1622496 5699416 1622712 5698216 1622656 5698272 +1622448 5699424 1624408 5700984 1622496 5699416 1622656 5698272 +1622496 5699416 1625032 5698608 1622712 5698216 1622656 5698272 +1622496 5699416 1624408 5700984 1625032 5698608 1622712 5698216 +1622448 5699424 1622496 5699416 1622656 5698272 1622536 5698344 +1622448 5699424 1622496 5699416 1622536 5698344 1622424 5698368 +1622496 5699416 1622712 5698216 1622656 5698272 1622536 5698344 +1622448 5699424 1624408 5700984 1622496 5699416 1622424 5698368 +1622496 5699416 1622656 5698272 1622536 5698344 1622424 5698368 +1624408 5700984 1622496 5699416 1622448 5699424 1624344 5701024 +1622448 5699424 1624288 5701080 1624344 5701024 1622496 5699416 +1622448 5699424 1623016 5701528 1624288 5701080 1622496 5699416 +1624288 5701080 1624344 5701024 1622496 5699416 1623016 5701528 +1622496 5699416 1622424 5698368 1622448 5699424 1623016 5701528 +1624408 5700984 1625032 5698608 1622496 5699416 1624344 5701024 +1624344 5701024 1624408 5700984 1622496 5699416 1624288 5701080 +1623016 5701528 1623192 5701576 1624288 5701080 1622496 5699416 +1622448 5699424 1622496 5699416 1622424 5698368 1622296 5698320 +1622448 5699424 1622400 5699472 1623016 5701528 1622496 5699416 +1623016 5701528 1624288 5701080 1622496 5699416 1622400 5699472 +1622400 5699472 1622880 5701536 1623016 5701528 1622496 5699416 +1622448 5699424 1622400 5699472 1622496 5699416 1622424 5698368 +1622448 5699424 1622424 5699440 1622400 5699472 1622496 5699416 +1622448 5699424 1622424 5699440 1622496 5699416 1622424 5698368 +1622400 5699472 1623016 5701528 1622496 5699416 1622424 5699440 +1625032 5698608 1622496 5699416 1624408 5700984 1625104 5698680 +1622496 5699416 1622584 5699424 1625032 5698608 1622712 5698216 +1625032 5698608 1623672 5697496 1622712 5698216 1622584 5699424 +1622496 5699416 1622584 5699424 1622712 5698216 1622656 5698272 +1622496 5699416 1622584 5699424 1622656 5698272 1622536 5698344 +1622584 5699424 1622712 5698216 1622656 5698272 1622536 5698344 +1622584 5699424 1625032 5698608 1622712 5698216 1622656 5698272 +1622496 5699416 1624408 5700984 1622584 5699424 1622536 5698344 +1624408 5700984 1622584 5699424 1622496 5699416 1624344 5701024 +1622584 5699424 1622536 5698344 1622496 5699416 1624344 5701024 +1622584 5699424 1624408 5700984 1625032 5698608 1622712 5698216 +1624408 5700984 1625032 5698608 1622584 5699424 1624344 5701024 +1622496 5699416 1622584 5699424 1622536 5698344 1622424 5698368 +1622496 5699416 1622584 5699424 1622424 5698368 1622448 5699424 +1622584 5699424 1622656 5698272 1622536 5698344 1622424 5698368 +1622496 5699416 1624344 5701024 1622584 5699424 1622424 5698368 +1622496 5699416 1624288 5701080 1624344 5701024 1622584 5699424 +1622496 5699416 1623016 5701528 1624288 5701080 1622584 5699424 +1622496 5699416 1622400 5699472 1623016 5701528 1622584 5699424 +1623016 5701528 1624288 5701080 1622584 5699424 1622400 5699472 +1622400 5699472 1622880 5701536 1623016 5701528 1622584 5699424 +1623016 5701528 1624288 5701080 1622584 5699424 1622880 5701536 +1622400 5699472 1622880 5701536 1622584 5699424 1622496 5699416 +1622400 5699472 1622664 5701568 1622880 5701536 1622584 5699424 +1622496 5699416 1622400 5699472 1622584 5699424 1622424 5698368 +1624344 5701024 1624408 5700984 1622584 5699424 1624288 5701080 +1624288 5701080 1624344 5701024 1622584 5699424 1623016 5701528 +1623016 5701528 1623192 5701576 1624288 5701080 1622584 5699424 +1622496 5699416 1622424 5699440 1622400 5699472 1622584 5699424 +1625032 5698608 1622584 5699424 1624408 5700984 1625104 5698680 +1622584 5699424 1622648 5699416 1625032 5698608 1622712 5698216 +1625032 5698608 1623672 5697496 1622712 5698216 1622648 5699416 +1622584 5699424 1622648 5699416 1622712 5698216 1622656 5698272 +1622584 5699424 1622648 5699416 1622656 5698272 1622536 5698344 +1622584 5699424 1622648 5699416 1622536 5698344 1622424 5698368 +1622648 5699416 1622656 5698272 1622536 5698344 1622424 5698368 +1622648 5699416 1622712 5698216 1622656 5698272 1622536 5698344 +1622648 5699416 1625032 5698608 1622712 5698216 1622656 5698272 +1622584 5699424 1624408 5700984 1622648 5699416 1622424 5698368 +1624408 5700984 1622648 5699416 1622584 5699424 1624344 5701024 +1622584 5699424 1624288 5701080 1624344 5701024 1622648 5699416 +1622648 5699416 1622424 5698368 1622584 5699424 1624288 5701080 +1624344 5701024 1624408 5700984 1622648 5699416 1624288 5701080 +1622648 5699416 1624408 5700984 1625032 5698608 1622712 5698216 +1624408 5700984 1625032 5698608 1622648 5699416 1624344 5701024 +1622584 5699424 1622648 5699416 1622424 5698368 1622496 5699416 +1622424 5698368 1622448 5699424 1622496 5699416 1622648 5699416 +1622648 5699416 1622536 5698344 1622424 5698368 1622496 5699416 +1622584 5699424 1624288 5701080 1622648 5699416 1622496 5699416 +1622584 5699424 1623016 5701528 1624288 5701080 1622648 5699416 +1622584 5699424 1622880 5701536 1623016 5701528 1622648 5699416 +1622584 5699424 1622400 5699472 1622880 5701536 1622648 5699416 +1622880 5701536 1623016 5701528 1622648 5699416 1622400 5699472 +1622584 5699424 1622496 5699416 1622400 5699472 1622648 5699416 +1622400 5699472 1622664 5701568 1622880 5701536 1622648 5699416 +1624288 5701080 1624344 5701024 1622648 5699416 1623016 5701528 +1622584 5699424 1622400 5699472 1622648 5699416 1622496 5699416 +1623016 5701528 1624288 5701080 1622648 5699416 1622880 5701536 +1623016 5701528 1623192 5701576 1624288 5701080 1622648 5699416 +1625032 5698608 1622648 5699416 1624408 5700984 1625104 5698680 +1622648 5699416 1622736 5699440 1625032 5698608 1622712 5698216 +1625032 5698608 1623672 5697496 1622712 5698216 1622736 5699440 +1622648 5699416 1622736 5699440 1622712 5698216 1622656 5698272 +1622648 5699416 1622736 5699440 1622656 5698272 1622536 5698344 +1622648 5699416 1622736 5699440 1622536 5698344 1622424 5698368 +1622736 5699440 1622712 5698216 1622656 5698272 1622536 5698344 +1622736 5699440 1625032 5698608 1622712 5698216 1622656 5698272 +1622648 5699416 1624408 5700984 1622736 5699440 1622536 5698344 +1624408 5700984 1622736 5699440 1622648 5699416 1624344 5701024 +1622648 5699416 1624288 5701080 1624344 5701024 1622736 5699440 +1622648 5699416 1623016 5701528 1624288 5701080 1622736 5699440 +1624288 5701080 1624344 5701024 1622736 5699440 1623016 5701528 +1622736 5699440 1622536 5698344 1622648 5699416 1623016 5701528 +1624344 5701024 1624408 5700984 1622736 5699440 1624288 5701080 +1622736 5699440 1624408 5700984 1625032 5698608 1622712 5698216 +1624408 5700984 1625032 5698608 1622736 5699440 1624344 5701024 +1622648 5699416 1622880 5701536 1623016 5701528 1622736 5699440 +1622648 5699416 1622400 5699472 1622880 5701536 1622736 5699440 +1622648 5699416 1622584 5699424 1622400 5699472 1622736 5699440 +1622400 5699472 1622880 5701536 1622736 5699440 1622584 5699424 +1622584 5699424 1622496 5699416 1622400 5699472 1622736 5699440 +1622400 5699472 1622664 5701568 1622880 5701536 1622736 5699440 +1623016 5701528 1624288 5701080 1622736 5699440 1622880 5701536 +1622648 5699416 1622584 5699424 1622736 5699440 1622536 5698344 +1622880 5701536 1623016 5701528 1622736 5699440 1622400 5699472 +1623016 5701528 1623192 5701576 1624288 5701080 1622736 5699440 +1625032 5698608 1622736 5699440 1624408 5700984 1625104 5698680 +1624408 5700984 1624496 5700960 1625104 5698680 1622736 5699440 +1624496 5700960 1625176 5698752 1625104 5698680 1622736 5699440 +1625032 5698608 1622712 5698216 1622736 5699440 1625104 5698680 +1622736 5699440 1624344 5701024 1624408 5700984 1624496 5700960 +1625104 5698680 1625032 5698608 1622736 5699440 1624496 5700960 +1625104 5698680 1622832 5699440 1624496 5700960 1625176 5698752 +1624496 5700960 1622832 5699440 1622736 5699440 1624408 5700984 +1622832 5699440 1625104 5698680 1622736 5699440 1624408 5700984 +1622736 5699440 1624344 5701024 1624408 5700984 1622832 5699440 +1624408 5700984 1624496 5700960 1622832 5699440 1624344 5701024 +1622736 5699440 1624288 5701080 1624344 5701024 1622832 5699440 +1622736 5699440 1623016 5701528 1624288 5701080 1622832 5699440 +1622736 5699440 1622880 5701536 1623016 5701528 1622832 5699440 +1623016 5701528 1624288 5701080 1622832 5699440 1622880 5701536 +1624288 5701080 1624344 5701024 1622832 5699440 1623016 5701528 +1622736 5699440 1622880 5701536 1622832 5699440 1625104 5698680 +1624344 5701024 1624408 5700984 1622832 5699440 1624288 5701080 +1624496 5700960 1625104 5698680 1622832 5699440 1624408 5700984 +1622736 5699440 1622400 5699472 1622880 5701536 1622832 5699440 +1623016 5701528 1623192 5701576 1624288 5701080 1622832 5699440 +1622736 5699440 1622832 5699440 1625104 5698680 1625032 5698608 +1622736 5699440 1622832 5699440 1625032 5698608 1622712 5698216 +1625032 5698608 1623672 5697496 1622712 5698216 1622832 5699440 +1622736 5699440 1622832 5699440 1622712 5698216 1622656 5698272 +1622736 5699440 1622832 5699440 1622656 5698272 1622536 5698344 +1622736 5699440 1622832 5699440 1622536 5698344 1622648 5699416 +1622536 5698344 1622424 5698368 1622648 5699416 1622832 5699440 +1622832 5699440 1622656 5698272 1622536 5698344 1622648 5699416 +1622832 5699440 1622712 5698216 1622656 5698272 1622536 5698344 +1622832 5699440 1625032 5698608 1622712 5698216 1622656 5698272 +1622736 5699440 1622880 5701536 1622832 5699440 1622648 5699416 +1622832 5699440 1624496 5700960 1625104 5698680 1625032 5698608 +1622832 5699440 1625104 5698680 1625032 5698608 1622712 5698216 +1625104 5698680 1622872 5699464 1624496 5700960 1625176 5698752 +1622832 5699440 1622872 5699464 1625104 5698680 1625032 5698608 +1622832 5699440 1624496 5700960 1622872 5699464 1625032 5698608 +1624496 5700960 1622872 5699464 1622832 5699440 1624408 5700984 +1622832 5699440 1624344 5701024 1624408 5700984 1622872 5699464 +1622832 5699440 1624288 5701080 1624344 5701024 1622872 5699464 +1624344 5701024 1624408 5700984 1622872 5699464 1624288 5701080 +1622832 5699440 1623016 5701528 1624288 5701080 1622872 5699464 +1622832 5699440 1622880 5701536 1623016 5701528 1622872 5699464 +1622832 5699440 1622736 5699440 1622880 5701536 1622872 5699464 +1622880 5701536 1623016 5701528 1622872 5699464 1622736 5699440 +1623016 5701528 1624288 5701080 1622872 5699464 1622880 5701536 +1624288 5701080 1624344 5701024 1622872 5699464 1623016 5701528 +1622872 5699464 1625032 5698608 1622832 5699440 1622736 5699440 +1624408 5700984 1624496 5700960 1622872 5699464 1624344 5701024 +1622736 5699440 1622400 5699472 1622880 5701536 1622872 5699464 +1622736 5699440 1622584 5699424 1622400 5699472 1622872 5699464 +1622400 5699472 1622664 5701568 1622880 5701536 1622872 5699464 +1622736 5699440 1622400 5699472 1622872 5699464 1622832 5699440 +1622880 5701536 1623016 5701528 1622872 5699464 1622400 5699472 +1623016 5701528 1623192 5701576 1624288 5701080 1622872 5699464 +1622872 5699464 1624496 5700960 1625104 5698680 1625032 5698608 +1624496 5700960 1625104 5698680 1622872 5699464 1624408 5700984 +1622832 5699440 1622872 5699464 1625032 5698608 1622712 5698216 +1625032 5698608 1623672 5697496 1622712 5698216 1622872 5699464 +1622832 5699440 1622872 5699464 1622712 5698216 1622656 5698272 +1622872 5699464 1625104 5698680 1625032 5698608 1622712 5698216 +1622832 5699440 1622736 5699440 1622872 5699464 1622712 5698216 +1625104 5698680 1622896 5699464 1624496 5700960 1625176 5698752 +1624496 5700960 1625448 5700568 1625176 5698752 1622896 5699464 +1622872 5699464 1622896 5699464 1625104 5698680 1625032 5698608 +1622872 5699464 1622896 5699464 1625032 5698608 1622712 5698216 +1625032 5698608 1623672 5697496 1622712 5698216 1622896 5699464 +1623672 5697496 1623648 5697496 1622712 5698216 1622896 5699464 +1622712 5698216 1622872 5699464 1622896 5699464 1623672 5697496 +1625032 5698608 1625048 5698520 1623672 5697496 1622896 5699464 +1622896 5699464 1625104 5698680 1625032 5698608 1623672 5697496 +1622872 5699464 1624496 5700960 1622896 5699464 1622712 5698216 +1624496 5700960 1622896 5699464 1622872 5699464 1624408 5700984 +1622872 5699464 1624344 5701024 1624408 5700984 1622896 5699464 +1622872 5699464 1624288 5701080 1624344 5701024 1622896 5699464 +1622872 5699464 1623016 5701528 1624288 5701080 1622896 5699464 +1624288 5701080 1624344 5701024 1622896 5699464 1623016 5701528 +1622872 5699464 1622880 5701536 1623016 5701528 1622896 5699464 +1622872 5699464 1622400 5699472 1622880 5701536 1622896 5699464 +1623016 5701528 1624288 5701080 1622896 5699464 1622880 5701536 +1624344 5701024 1624408 5700984 1622896 5699464 1624288 5701080 +1623016 5701528 1623192 5701576 1624288 5701080 1622896 5699464 +1622896 5699464 1622712 5698216 1622872 5699464 1622880 5701536 +1624408 5700984 1624496 5700960 1622896 5699464 1624344 5701024 +1625104 5698680 1625032 5698608 1622896 5699464 1625176 5698752 +1622896 5699464 1624408 5700984 1624496 5700960 1625176 5698752 +1622872 5699464 1622896 5699464 1622712 5698216 1622832 5699440 +1622712 5698216 1622656 5698272 1622832 5699440 1622896 5699464 +1622656 5698272 1622536 5698344 1622832 5699440 1622896 5699464 +1622896 5699464 1623672 5697496 1622712 5698216 1622656 5698272 +1622872 5699464 1622880 5701536 1622896 5699464 1622832 5699440 +1622832 5699440 1622872 5699464 1622896 5699464 1622656 5698272 +1622896 5699464 1622928 5699472 1625176 5698752 1625104 5698680 +1625176 5698752 1622928 5699472 1624496 5700960 1625448 5700568 +1622896 5699464 1622928 5699472 1625104 5698680 1625032 5698608 +1622928 5699472 1625176 5698752 1625104 5698680 1625032 5698608 +1622896 5699464 1622928 5699472 1625032 5698608 1623672 5697496 +1622896 5699464 1622928 5699472 1623672 5697496 1622712 5698216 +1623672 5697496 1623648 5697496 1622712 5698216 1622928 5699472 +1622896 5699464 1622928 5699472 1622712 5698216 1622656 5698272 +1622928 5699472 1623672 5697496 1622712 5698216 1622656 5698272 +1622896 5699464 1622928 5699472 1622656 5698272 1622832 5699440 +1622656 5698272 1622536 5698344 1622832 5699440 1622928 5699472 +1622928 5699472 1622712 5698216 1622656 5698272 1622832 5699440 +1625032 5698608 1625048 5698520 1623672 5697496 1622928 5699472 +1622928 5699472 1625032 5698608 1623672 5697496 1622712 5698216 +1622928 5699472 1625104 5698680 1625032 5698608 1623672 5697496 +1622896 5699464 1624496 5700960 1622928 5699472 1622832 5699440 +1624496 5700960 1622928 5699472 1622896 5699464 1624408 5700984 +1622896 5699464 1624344 5701024 1624408 5700984 1622928 5699472 +1622896 5699464 1624288 5701080 1624344 5701024 1622928 5699472 +1622896 5699464 1623016 5701528 1624288 5701080 1622928 5699472 +1622896 5699464 1622880 5701536 1623016 5701528 1622928 5699472 +1623016 5701528 1624288 5701080 1622928 5699472 1622880 5701536 +1622896 5699464 1622872 5699464 1622880 5701536 1622928 5699472 +1622872 5699464 1622400 5699472 1622880 5701536 1622928 5699472 +1622880 5701536 1623016 5701528 1622928 5699472 1622872 5699464 +1624288 5701080 1624344 5701024 1622928 5699472 1623016 5701528 +1623016 5701528 1623192 5701576 1624288 5701080 1622928 5699472 +1624344 5701024 1624408 5700984 1622928 5699472 1624288 5701080 +1622928 5699472 1622832 5699440 1622896 5699464 1622872 5699464 +1624408 5700984 1624496 5700960 1622928 5699472 1624344 5701024 +1622928 5699472 1624496 5700960 1625176 5698752 1625104 5698680 +1624496 5700960 1625176 5698752 1622928 5699472 1624408 5700984 +1622896 5699464 1622928 5699472 1622832 5699440 1622872 5699464 +1625176 5698752 1622984 5699520 1624496 5700960 1625448 5700568 +1622928 5699472 1622984 5699520 1625176 5698752 1625104 5698680 +1622928 5699472 1622984 5699520 1625104 5698680 1625032 5698608 +1622928 5699472 1622984 5699520 1625032 5698608 1623672 5697496 +1622984 5699520 1625104 5698680 1625032 5698608 1623672 5697496 +1625032 5698608 1625048 5698520 1623672 5697496 1622984 5699520 +1622928 5699472 1622984 5699520 1623672 5697496 1622712 5698216 +1623672 5697496 1623648 5697496 1622712 5698216 1622984 5699520 +1622928 5699472 1622984 5699520 1622712 5698216 1622656 5698272 +1622984 5699520 1625032 5698608 1623672 5697496 1622712 5698216 +1622984 5699520 1625176 5698752 1625104 5698680 1625032 5698608 +1622928 5699472 1624496 5700960 1622984 5699520 1622712 5698216 +1624496 5700960 1622984 5699520 1622928 5699472 1624408 5700984 +1622928 5699472 1624344 5701024 1624408 5700984 1622984 5699520 +1622928 5699472 1624288 5701080 1624344 5701024 1622984 5699520 +1622928 5699472 1623016 5701528 1624288 5701080 1622984 5699520 +1622928 5699472 1622880 5701536 1623016 5701528 1622984 5699520 +1622928 5699472 1622872 5699464 1622880 5701536 1622984 5699520 +1622880 5701536 1623016 5701528 1622984 5699520 1622872 5699464 +1622872 5699464 1622400 5699472 1622880 5701536 1622984 5699520 +1622880 5701536 1623016 5701528 1622984 5699520 1622400 5699472 +1622400 5699472 1622664 5701568 1622880 5701536 1622984 5699520 +1622400 5699472 1622440 5701576 1622664 5701568 1622984 5699520 +1622880 5701536 1623016 5701528 1622984 5699520 1622664 5701568 +1622400 5699472 1622664 5701568 1622984 5699520 1622872 5699464 +1622928 5699472 1622896 5699464 1622872 5699464 1622984 5699520 +1622872 5699464 1622400 5699472 1622984 5699520 1622928 5699472 +1623016 5701528 1624288 5701080 1622984 5699520 1622880 5701536 +1622872 5699464 1622736 5699440 1622400 5699472 1622984 5699520 +1622736 5699440 1622584 5699424 1622400 5699472 1622984 5699520 +1622872 5699464 1622832 5699440 1622736 5699440 1622984 5699520 +1622400 5699472 1622664 5701568 1622984 5699520 1622736 5699440 +1622872 5699464 1622736 5699440 1622984 5699520 1622928 5699472 +1623016 5701528 1623192 5701576 1624288 5701080 1622984 5699520 +1624288 5701080 1624344 5701024 1622984 5699520 1623016 5701528 +1624344 5701024 1624408 5700984 1622984 5699520 1624288 5701080 +1622984 5699520 1622712 5698216 1622928 5699472 1622872 5699464 +1624408 5700984 1624496 5700960 1622984 5699520 1624344 5701024 +1622984 5699520 1624496 5700960 1625176 5698752 1625104 5698680 +1624496 5700960 1625176 5698752 1622984 5699520 1624408 5700984 +1622880 5701536 1622984 5699584 1622984 5699520 1622664 5701568 +1622984 5699520 1622400 5699472 1622664 5701568 1622984 5699584 +1622400 5699472 1622440 5701576 1622664 5701568 1622984 5699584 +1622400 5699472 1622216 5701544 1622440 5701576 1622984 5699584 +1622664 5701568 1622880 5701536 1622984 5699584 1622440 5701576 +1622400 5699472 1622440 5701576 1622984 5699584 1622984 5699520 +1622984 5699520 1622736 5699440 1622400 5699472 1622984 5699584 +1622736 5699440 1622584 5699424 1622400 5699472 1622984 5699584 +1622400 5699472 1622440 5701576 1622984 5699584 1622736 5699440 +1622984 5699520 1622984 5699584 1623016 5701528 1624288 5701080 +1622984 5699520 1622872 5699464 1622736 5699440 1622984 5699584 +1622872 5699464 1622832 5699440 1622736 5699440 1622984 5699584 +1622736 5699440 1622400 5699472 1622984 5699584 1622872 5699464 +1622984 5699520 1622928 5699472 1622872 5699464 1622984 5699584 +1622928 5699472 1622896 5699464 1622872 5699464 1622984 5699584 +1622928 5699472 1622896 5699464 1622984 5699584 1622984 5699520 +1622872 5699464 1622736 5699440 1622984 5699584 1622896 5699464 +1623016 5701528 1623192 5701576 1624288 5701080 1622984 5699584 +1624288 5701080 1622984 5699520 1622984 5699584 1623192 5701576 +1622984 5699520 1622984 5699584 1624288 5701080 1624344 5701024 +1622984 5699584 1623192 5701576 1624288 5701080 1624344 5701024 +1622984 5699520 1622984 5699584 1624344 5701024 1624408 5700984 +1622984 5699584 1624288 5701080 1624344 5701024 1624408 5700984 +1622984 5699520 1622984 5699584 1624408 5700984 1624496 5700960 +1622984 5699584 1624344 5701024 1624408 5700984 1624496 5700960 +1622984 5699584 1624496 5700960 1622984 5699520 1622928 5699472 +1622984 5699520 1622984 5699584 1624496 5700960 1625176 5698752 +1624496 5700960 1625448 5700568 1625176 5698752 1622984 5699584 +1622984 5699584 1624408 5700984 1624496 5700960 1625176 5698752 +1622984 5699520 1622984 5699584 1625176 5698752 1625104 5698680 +1622984 5699520 1622984 5699584 1625104 5698680 1625032 5698608 +1622984 5699520 1622928 5699472 1622984 5699584 1625104 5698680 +1622984 5699584 1624496 5700960 1625176 5698752 1625104 5698680 +1622984 5699584 1622880 5701536 1623016 5701528 1623192 5701576 +1622880 5701536 1623016 5701528 1622984 5699584 1622664 5701568 +1623192 5701576 1624224 5701208 1624288 5701080 1622984 5699584 +1622984 5699584 1622928 5699640 1622440 5701576 1622664 5701568 +1622440 5701576 1622928 5699640 1622400 5699472 1622216 5701544 +1622400 5699472 1621816 5701384 1622216 5701544 1622928 5699640 +1622216 5701544 1622440 5701576 1622928 5699640 1621816 5701384 +1622984 5699584 1622928 5699640 1622664 5701568 1622880 5701536 +1622928 5699640 1622440 5701576 1622664 5701568 1622880 5701536 +1622400 5699472 1622928 5699640 1622984 5699584 1622736 5699440 +1622400 5699472 1622928 5699640 1622736 5699440 1622584 5699424 +1622400 5699472 1622928 5699640 1622584 5699424 1622496 5699416 +1622736 5699440 1622648 5699416 1622584 5699424 1622928 5699640 +1622928 5699640 1622984 5699584 1622736 5699440 1622584 5699424 +1622400 5699472 1621712 5701344 1621816 5701384 1622928 5699640 +1622984 5699584 1622872 5699464 1622736 5699440 1622928 5699640 +1622736 5699440 1622584 5699424 1622928 5699640 1622872 5699464 +1622872 5699464 1622832 5699440 1622736 5699440 1622928 5699640 +1622984 5699584 1622896 5699464 1622872 5699464 1622928 5699640 +1622872 5699464 1622736 5699440 1622928 5699640 1622896 5699464 +1622984 5699584 1622928 5699472 1622896 5699464 1622928 5699640 +1622984 5699584 1622984 5699520 1622928 5699472 1622928 5699640 +1622896 5699464 1622872 5699464 1622928 5699640 1622928 5699472 +1622984 5699584 1622928 5699472 1622928 5699640 1622880 5701536 +1622984 5699584 1622928 5699640 1622880 5701536 1623016 5701528 +1622928 5699640 1622664 5701568 1622880 5701536 1623016 5701528 +1622984 5699584 1622928 5699640 1623016 5701528 1623192 5701576 +1622984 5699584 1622928 5699640 1623192 5701576 1624288 5701080 +1622984 5699584 1622928 5699640 1624288 5701080 1624344 5701024 +1622928 5699640 1623192 5701576 1624288 5701080 1624344 5701024 +1622984 5699584 1622928 5699640 1624344 5701024 1624408 5700984 +1622928 5699640 1623016 5701528 1623192 5701576 1624288 5701080 +1622984 5699584 1622928 5699472 1622928 5699640 1624344 5701024 +1622928 5699640 1622880 5701536 1623016 5701528 1623192 5701576 +1622928 5699640 1622216 5701544 1622440 5701576 1622664 5701568 +1622928 5699640 1622584 5699424 1622400 5699472 1621816 5701384 +1623192 5701576 1624224 5701208 1624288 5701080 1622928 5699640 +1622928 5699640 1622880 5699664 1621816 5701384 1622216 5701544 +1622928 5699640 1622880 5699664 1622216 5701544 1622440 5701576 +1622880 5699664 1621816 5701384 1622216 5701544 1622440 5701576 +1621816 5701384 1622880 5699664 1622400 5699472 1621712 5701344 +1622928 5699640 1622880 5699664 1622440 5701576 1622664 5701568 +1622928 5699640 1622880 5699664 1622664 5701568 1622880 5701536 +1622880 5699664 1622216 5701544 1622440 5701576 1622664 5701568 +1622928 5699640 1622880 5699664 1622880 5701536 1623016 5701528 +1622880 5699664 1622664 5701568 1622880 5701536 1623016 5701528 +1622928 5699640 1622880 5699664 1623016 5701528 1623192 5701576 +1622880 5699664 1622440 5701576 1622664 5701568 1622880 5701536 +1622928 5699640 1622400 5699472 1622880 5699664 1623016 5701528 +1622400 5699472 1622880 5699664 1622928 5699640 1622584 5699424 +1622928 5699640 1622736 5699440 1622584 5699424 1622880 5699664 +1622400 5699472 1622880 5699664 1622584 5699424 1622496 5699416 +1622736 5699440 1622648 5699416 1622584 5699424 1622880 5699664 +1622928 5699640 1622872 5699464 1622736 5699440 1622880 5699664 +1622736 5699440 1622584 5699424 1622880 5699664 1622872 5699464 +1622872 5699464 1622832 5699440 1622736 5699440 1622880 5699664 +1622928 5699640 1622896 5699464 1622872 5699464 1622880 5699664 +1622880 5699664 1623016 5701528 1622928 5699640 1622872 5699464 +1622584 5699424 1622400 5699472 1622880 5699664 1622736 5699440 +1622880 5699664 1622400 5699472 1621816 5701384 1622216 5701544 +1622400 5699472 1621816 5701384 1622880 5699664 1622584 5699424 +1621816 5701384 1622808 5699680 1622400 5699472 1621712 5701344 +1622880 5699664 1622808 5699680 1621816 5701384 1622216 5701544 +1622880 5699664 1622808 5699680 1622216 5701544 1622440 5701576 +1622880 5699664 1622808 5699680 1622440 5701576 1622664 5701568 +1622808 5699680 1622216 5701544 1622440 5701576 1622664 5701568 +1622880 5699664 1622808 5699680 1622664 5701568 1622880 5701536 +1622880 5699664 1622808 5699680 1622880 5701536 1623016 5701528 +1622808 5699680 1622440 5701576 1622664 5701568 1622880 5701536 +1622880 5699664 1622808 5699680 1623016 5701528 1622928 5699640 +1622808 5699680 1622664 5701568 1622880 5701536 1623016 5701528 +1622808 5699680 1621816 5701384 1622216 5701544 1622440 5701576 +1622880 5699664 1622400 5699472 1622808 5699680 1623016 5701528 +1622400 5699472 1622808 5699680 1622880 5699664 1622584 5699424 +1622400 5699472 1622808 5699680 1622584 5699424 1622496 5699416 +1622880 5699664 1622736 5699440 1622584 5699424 1622808 5699680 +1622880 5699664 1622872 5699464 1622736 5699440 1622808 5699680 +1622736 5699440 1622648 5699416 1622584 5699424 1622808 5699680 +1622880 5699664 1622928 5699640 1622872 5699464 1622808 5699680 +1622872 5699464 1622832 5699440 1622736 5699440 1622808 5699680 +1622872 5699464 1622832 5699440 1622808 5699680 1622880 5699664 +1622736 5699440 1622648 5699416 1622808 5699680 1622832 5699440 +1622808 5699680 1623016 5701528 1622880 5699664 1622872 5699464 +1622584 5699424 1622400 5699472 1622808 5699680 1622648 5699416 +1622808 5699680 1622400 5699472 1621816 5701384 1622216 5701544 +1622400 5699472 1621816 5701384 1622808 5699680 1622584 5699424 +1621816 5701384 1622720 5699680 1622400 5699472 1621712 5701344 +1622400 5699472 1621576 5701360 1621712 5701344 1622720 5699680 +1622808 5699680 1622720 5699680 1621816 5701384 1622216 5701544 +1622808 5699680 1622720 5699680 1622216 5701544 1622440 5701576 +1622808 5699680 1622720 5699680 1622440 5701576 1622664 5701568 +1622808 5699680 1622720 5699680 1622664 5701568 1622880 5701536 +1622720 5699680 1622440 5701576 1622664 5701568 1622880 5701536 +1622808 5699680 1622720 5699680 1622880 5701536 1623016 5701528 +1622720 5699680 1622216 5701544 1622440 5701576 1622664 5701568 +1622720 5699680 1621816 5701384 1622216 5701544 1622440 5701576 +1622808 5699680 1622400 5699472 1622720 5699680 1622880 5701536 +1622400 5699472 1622720 5699680 1622808 5699680 1622584 5699424 +1622400 5699472 1622720 5699680 1622584 5699424 1622496 5699416 +1622808 5699680 1622648 5699416 1622584 5699424 1622720 5699680 +1622808 5699680 1622736 5699440 1622648 5699416 1622720 5699680 +1622808 5699680 1622832 5699440 1622736 5699440 1622720 5699680 +1622648 5699416 1622584 5699424 1622720 5699680 1622736 5699440 +1622720 5699680 1622880 5701536 1622808 5699680 1622736 5699440 +1622584 5699424 1622400 5699472 1622720 5699680 1622648 5699416 +1621816 5701384 1622216 5701544 1622720 5699680 1621712 5701344 +1622720 5699680 1622584 5699424 1622400 5699472 1621712 5701344 +1622720 5699680 1622640 5699656 1621712 5701344 1621816 5701384 +1621712 5701344 1622640 5699656 1622400 5699472 1621576 5701360 +1622720 5699680 1622640 5699656 1621816 5701384 1622216 5701544 +1622640 5699656 1621712 5701344 1621816 5701384 1622216 5701544 +1622720 5699680 1622640 5699656 1622216 5701544 1622440 5701576 +1622720 5699680 1622400 5699472 1622640 5699656 1622216 5701544 +1622400 5699472 1622640 5699656 1622720 5699680 1622584 5699424 +1622400 5699472 1622640 5699656 1622584 5699424 1622496 5699416 +1622720 5699680 1622648 5699416 1622584 5699424 1622640 5699656 +1622720 5699680 1622736 5699440 1622648 5699416 1622640 5699656 +1622720 5699680 1622808 5699680 1622736 5699440 1622640 5699656 +1622648 5699416 1622584 5699424 1622640 5699656 1622736 5699440 +1622640 5699656 1622216 5701544 1622720 5699680 1622736 5699440 +1622640 5699656 1622648 5699416 1622584 5699424 1622496 5699416 +1622640 5699656 1622400 5699472 1621712 5701344 1621816 5701384 +1622400 5699472 1621712 5701344 1622640 5699656 1622496 5699416 +1622400 5699472 1622640 5699656 1622496 5699416 1622424 5699440 +1621712 5701344 1622544 5699656 1622400 5699472 1621576 5701360 +1622640 5699656 1622544 5699656 1621712 5701344 1621816 5701384 +1622640 5699656 1622544 5699656 1621816 5701384 1622216 5701544 +1622640 5699656 1622544 5699656 1622216 5701544 1622720 5699680 +1622544 5699656 1621816 5701384 1622216 5701544 1622720 5699680 +1622216 5701544 1622440 5701576 1622720 5699680 1622544 5699656 +1622216 5701544 1622440 5701576 1622544 5699656 1621816 5701384 +1622440 5701576 1622664 5701568 1622720 5699680 1622544 5699656 +1622720 5699680 1622640 5699656 1622544 5699656 1622440 5701576 +1622544 5699656 1621712 5701344 1621816 5701384 1622216 5701544 +1622640 5699656 1622400 5699472 1622544 5699656 1622720 5699680 +1622400 5699472 1622544 5699656 1622640 5699656 1622496 5699416 +1622640 5699656 1622584 5699424 1622496 5699416 1622544 5699656 +1622640 5699656 1622648 5699416 1622584 5699424 1622544 5699656 +1622544 5699656 1622720 5699680 1622640 5699656 1622584 5699424 +1622496 5699416 1622400 5699472 1622544 5699656 1622584 5699424 +1622544 5699656 1622400 5699472 1621712 5701344 1621816 5701384 +1622400 5699472 1621712 5701344 1622544 5699656 1622496 5699416 +1622400 5699472 1622544 5699656 1622496 5699416 1622424 5699440 +1621712 5701344 1622456 5699632 1622400 5699472 1621576 5701360 +1622544 5699656 1622456 5699632 1621712 5701344 1621816 5701384 +1622544 5699656 1622456 5699632 1621816 5701384 1622216 5701544 +1622544 5699656 1622400 5699472 1622456 5699632 1621816 5701384 +1622400 5699472 1622456 5699632 1622544 5699656 1622496 5699416 +1622544 5699656 1622584 5699424 1622496 5699416 1622456 5699632 +1622544 5699656 1622640 5699656 1622584 5699424 1622456 5699632 +1622456 5699632 1621816 5701384 1622544 5699656 1622584 5699424 +1622496 5699416 1622400 5699472 1622456 5699632 1622584 5699424 +1621712 5701344 1621816 5701384 1622456 5699632 1621576 5701360 +1622456 5699632 1622496 5699416 1622400 5699472 1621576 5701360 +1622400 5699472 1622456 5699632 1622496 5699416 1622424 5699440 +1622400 5699472 1620064 5698616 1621576 5701360 1622456 5699632 +1622456 5699632 1622424 5699592 1621576 5701360 1621712 5701344 +1622456 5699632 1622424 5699592 1621712 5701344 1621816 5701384 +1622456 5699632 1622400 5699472 1622424 5699592 1621712 5701344 +1622400 5699472 1622424 5699592 1622456 5699632 1622496 5699416 +1622456 5699632 1622584 5699424 1622496 5699416 1622424 5699592 +1622456 5699632 1622544 5699656 1622584 5699424 1622424 5699592 +1622544 5699656 1622640 5699656 1622584 5699424 1622424 5699592 +1622584 5699424 1622496 5699416 1622424 5699592 1622544 5699656 +1622424 5699592 1621712 5701344 1622456 5699632 1622544 5699656 +1622496 5699416 1622400 5699472 1622424 5699592 1622584 5699424 +1622424 5699592 1622400 5699472 1621576 5701360 1621712 5701344 +1622400 5699472 1621576 5701360 1622424 5699592 1622496 5699416 +1622400 5699472 1622424 5699592 1622496 5699416 1622424 5699440 +1621576 5701360 1622424 5699592 1622400 5699472 1620064 5698616 +1621576 5701360 1621712 5701344 1622424 5699592 1620064 5698616 +1622424 5699592 1622496 5699416 1622400 5699472 1620064 5698616 +1622400 5699472 1620144 5698568 1620064 5698616 1622424 5699592 +1622400 5699472 1620144 5698568 1622424 5699592 1622496 5699416 +1622400 5699472 1620184 5698536 1620144 5698568 1622424 5699592 +1621576 5701360 1622424 5699592 1620064 5698616 1619976 5698672 +1620144 5698568 1620104 5698584 1620064 5698616 1622424 5699592 +1620064 5698616 1621576 5701360 1622424 5699592 1620144 5698568 +1622400 5699472 1622392 5699552 1622424 5699592 1622496 5699416 +1622424 5699592 1622392 5699552 1620144 5698568 1620064 5698616 +1622424 5699592 1622400 5699472 1622392 5699552 1620064 5698616 +1622392 5699552 1622400 5699472 1620144 5698568 1620064 5698616 +1620144 5698568 1622392 5699552 1622400 5699472 1620184 5698536 +1620144 5698568 1620064 5698616 1622392 5699552 1620184 5698536 +1622392 5699552 1622424 5699592 1622400 5699472 1620184 5698536 +1620144 5698568 1620104 5698584 1620064 5698616 1622392 5699552 +1622424 5699592 1622392 5699552 1620064 5698616 1621576 5701360 +1622424 5699592 1622392 5699552 1621576 5701360 1621712 5701344 +1622424 5699592 1622392 5699552 1621712 5701344 1622456 5699632 +1622424 5699592 1622400 5699472 1622392 5699552 1621712 5701344 +1622392 5699552 1620144 5698568 1620064 5698616 1621576 5701360 +1620064 5698616 1619976 5698672 1621576 5701360 1622392 5699552 +1622392 5699552 1620064 5698616 1621576 5701360 1621712 5701344 +1622400 5699472 1620224 5698488 1620184 5698536 1622392 5699552 +1617304 5695352 1618112 5694984 1615488 5689328 1617104 5695232 +1615488 5689328 1616824 5695056 1617104 5695232 1618112 5694984 +1615488 5689328 1616664 5694952 1616824 5695056 1618112 5694984 +1617104 5695232 1617304 5695352 1618112 5694984 1616824 5695056 +1615488 5689328 1616584 5694912 1616664 5694952 1618112 5694984 +1616664 5694952 1616824 5695056 1618112 5694984 1616584 5694912 +1615488 5689328 1616248 5694736 1616584 5694912 1618112 5694984 +1616248 5694736 1616496 5694888 1616584 5694912 1618112 5694984 +1615488 5689328 1615968 5694560 1616248 5694736 1618112 5694984 +1615488 5689328 1615416 5689384 1615968 5694560 1618112 5694984 +1616248 5694736 1616584 5694912 1618112 5694984 1615968 5694560 +1616584 5694912 1616664 5694952 1618112 5694984 1616248 5694736 +1616824 5695056 1617016 5695184 1617104 5695232 1618112 5694984 +1617104 5695232 1617304 5695352 1618112 5694984 1617016 5695184 +1616824 5695056 1617016 5695184 1618112 5694984 1616664 5694952 +1623304 5696976 1618112 5694984 1617304 5695352 1618448 5696576 +1617304 5695352 1618312 5696512 1618448 5696576 1618112 5694984 +1617304 5695352 1617336 5695448 1618312 5696512 1618112 5694984 +1617336 5695448 1617336 5695488 1618312 5696512 1618112 5694984 +1617336 5695448 1617336 5695488 1618112 5694984 1617304 5695352 +1618312 5696512 1618448 5696576 1618112 5694984 1617336 5695488 +1618448 5696576 1623304 5696976 1618112 5694984 1618312 5696512 +1623304 5696976 1618112 5694984 1618448 5696576 1618512 5696632 +1623304 5696976 1618112 5694984 1618512 5696632 1623272 5697000 +1618512 5696632 1622016 5697816 1623272 5697000 1618112 5694984 +1623272 5697000 1623304 5696976 1618112 5694984 1622016 5697816 +1618112 5694984 1618312 5696512 1618448 5696576 1618512 5696632 +1618112 5694984 1618448 5696576 1618512 5696632 1622016 5697816 +1617336 5695488 1618184 5696544 1618312 5696512 1618112 5694984 +1618512 5696632 1618552 5696712 1622016 5697816 1618112 5694984 +1622016 5697816 1622080 5697800 1623272 5697000 1618112 5694984 +1615488 5689328 1618112 5694984 1623304 5696976 1623376 5696968 +1615488 5689328 1618112 5694984 1623376 5696968 1615488 5689272 +1623376 5696968 1623464 5696976 1615488 5689272 1618112 5694984 +1618112 5694984 1623304 5696976 1623376 5696968 1615488 5689272 +1617304 5695352 1617336 5695448 1618112 5694984 1617104 5695232 +1618112 5694984 1615488 5689272 1615488 5689328 1615968 5694560 +1623304 5696976 1623376 5696968 1618112 5694984 1623272 5697000 +1615488 5689272 1618144 5694952 1623376 5696968 1623464 5696976 +1623376 5696968 1618144 5694952 1618112 5694984 1623304 5696976 +1618112 5694984 1618144 5694952 1615488 5689272 1615488 5689328 +1618112 5694984 1618144 5694952 1615488 5689328 1615968 5694560 +1615488 5689328 1615416 5689384 1615968 5694560 1618144 5694952 +1618112 5694984 1618144 5694952 1615968 5694560 1616248 5694736 +1618112 5694984 1618144 5694952 1616248 5694736 1616584 5694912 +1616248 5694736 1616496 5694888 1616584 5694912 1618144 5694952 +1618144 5694952 1615968 5694560 1616248 5694736 1616584 5694912 +1618112 5694984 1618144 5694952 1616584 5694912 1616664 5694952 +1618112 5694984 1618144 5694952 1616664 5694952 1616824 5695056 +1618144 5694952 1616248 5694736 1616584 5694912 1616664 5694952 +1618144 5694952 1616584 5694912 1616664 5694952 1616824 5695056 +1618112 5694984 1618144 5694952 1616824 5695056 1617016 5695184 +1618144 5694952 1615488 5689272 1615488 5689328 1615968 5694560 +1618144 5694952 1615488 5689328 1615968 5694560 1616248 5694736 +1618144 5694952 1616824 5695056 1618112 5694984 1623304 5696976 +1618112 5694984 1623272 5697000 1623304 5696976 1618144 5694952 +1618112 5694984 1622016 5697816 1623272 5697000 1618144 5694952 +1618112 5694984 1618512 5696632 1622016 5697816 1618144 5694952 +1622016 5697816 1623272 5697000 1618144 5694952 1618512 5696632 +1618112 5694984 1618448 5696576 1618512 5696632 1618144 5694952 +1618512 5696632 1622016 5697816 1618144 5694952 1618448 5696576 +1618112 5694984 1618312 5696512 1618448 5696576 1618144 5694952 +1618512 5696632 1618552 5696712 1622016 5697816 1618144 5694952 +1622016 5697816 1622080 5697800 1623272 5697000 1618144 5694952 +1623304 5696976 1623376 5696968 1618144 5694952 1623272 5697000 +1618112 5694984 1618448 5696576 1618144 5694952 1616824 5695056 +1623272 5697000 1623304 5696976 1618144 5694952 1622016 5697816 +1618144 5694952 1623376 5696968 1615488 5689272 1615488 5689328 +1623376 5696968 1615488 5689272 1618144 5694952 1623304 5696976 +1615488 5689272 1618208 5694912 1623376 5696968 1623464 5696976 +1618144 5694952 1618208 5694912 1615488 5689272 1615488 5689328 +1618144 5694952 1618208 5694912 1615488 5689328 1615968 5694560 +1615488 5689328 1615416 5689384 1615968 5694560 1618208 5694912 +1618144 5694952 1618208 5694912 1615968 5694560 1616248 5694736 +1618144 5694952 1618208 5694912 1616248 5694736 1616584 5694912 +1616248 5694736 1616496 5694888 1616584 5694912 1618208 5694912 +1618144 5694952 1618208 5694912 1616584 5694912 1616664 5694952 +1618208 5694912 1616248 5694736 1616584 5694912 1616664 5694952 +1618144 5694952 1618208 5694912 1616664 5694952 1616824 5695056 +1618208 5694912 1615488 5689328 1615968 5694560 1616248 5694736 +1618208 5694912 1615968 5694560 1616248 5694736 1616584 5694912 +1618208 5694912 1615488 5689272 1615488 5689328 1615968 5694560 +1618144 5694952 1623376 5696968 1618208 5694912 1616664 5694952 +1623376 5696968 1618208 5694912 1618144 5694952 1623304 5696976 +1618144 5694952 1623272 5697000 1623304 5696976 1618208 5694912 +1618144 5694952 1622016 5697816 1623272 5697000 1618208 5694912 +1618144 5694952 1618512 5696632 1622016 5697816 1618208 5694912 +1618144 5694952 1618448 5696576 1618512 5696632 1618208 5694912 +1618512 5696632 1622016 5697816 1618208 5694912 1618448 5696576 +1618144 5694952 1618112 5694984 1618448 5696576 1618208 5694912 +1618448 5696576 1618512 5696632 1618208 5694912 1618112 5694984 +1618112 5694984 1618312 5696512 1618448 5696576 1618208 5694912 +1618448 5696576 1618512 5696632 1618208 5694912 1618312 5696512 +1618112 5694984 1617336 5695488 1618312 5696512 1618208 5694912 +1618112 5694984 1618312 5696512 1618208 5694912 1618144 5694952 +1618512 5696632 1618552 5696712 1622016 5697816 1618208 5694912 +1622016 5697816 1622080 5697800 1623272 5697000 1618208 5694912 +1623272 5697000 1623304 5696976 1618208 5694912 1622016 5697816 +1622016 5697816 1623272 5697000 1618208 5694912 1618512 5696632 +1618208 5694912 1616664 5694952 1618144 5694952 1618112 5694984 +1623304 5696976 1623376 5696968 1618208 5694912 1623272 5697000 +1618208 5694912 1623376 5696968 1615488 5689272 1615488 5689328 +1623376 5696968 1615488 5689272 1618208 5694912 1623304 5696976 +1615488 5689272 1618256 5694904 1623376 5696968 1623464 5696976 +1618208 5694912 1618256 5694904 1615488 5689272 1615488 5689328 +1618208 5694912 1618256 5694904 1615488 5689328 1615968 5694560 +1618208 5694912 1623376 5696968 1618256 5694904 1615488 5689328 +1623376 5696968 1618256 5694904 1618208 5694912 1623304 5696976 +1618208 5694912 1623272 5697000 1623304 5696976 1618256 5694904 +1618208 5694912 1622016 5697816 1623272 5697000 1618256 5694904 +1622016 5697816 1622080 5697800 1623272 5697000 1618256 5694904 +1618208 5694912 1618512 5696632 1622016 5697816 1618256 5694904 +1618208 5694912 1618448 5696576 1618512 5696632 1618256 5694904 +1618208 5694912 1618312 5696512 1618448 5696576 1618256 5694904 +1618448 5696576 1618512 5696632 1618256 5694904 1618312 5696512 +1618208 5694912 1618112 5694984 1618312 5696512 1618256 5694904 +1618312 5696512 1618448 5696576 1618256 5694904 1618112 5694984 +1618112 5694984 1617336 5695488 1618312 5696512 1618256 5694904 +1618208 5694912 1618144 5694952 1618112 5694984 1618256 5694904 +1618112 5694984 1618312 5696512 1618256 5694904 1618144 5694952 +1618512 5696632 1618552 5696712 1622016 5697816 1618256 5694904 +1622016 5697816 1623272 5697000 1618256 5694904 1618512 5696632 +1618512 5696632 1622016 5697816 1618256 5694904 1618448 5696576 +1623272 5697000 1623304 5696976 1618256 5694904 1622016 5697816 +1618256 5694904 1615488 5689328 1618208 5694912 1618144 5694952 +1623304 5696976 1623376 5696968 1618256 5694904 1623272 5697000 +1618256 5694904 1623376 5696968 1615488 5689272 1615488 5689328 +1623376 5696968 1615488 5689272 1618256 5694904 1623304 5696976 +1615488 5689272 1618304 5694912 1623376 5696968 1623464 5696976 +1618256 5694904 1618304 5694912 1615488 5689272 1615488 5689328 +1618256 5694904 1618304 5694912 1615488 5689328 1618208 5694912 +1618256 5694904 1623376 5696968 1618304 5694912 1615488 5689328 +1623376 5696968 1618304 5694912 1618256 5694904 1623304 5696976 +1618256 5694904 1623272 5697000 1623304 5696976 1618304 5694912 +1618256 5694904 1622016 5697816 1623272 5697000 1618304 5694912 +1622016 5697816 1622080 5697800 1623272 5697000 1618304 5694912 +1618256 5694904 1618512 5696632 1622016 5697816 1618304 5694912 +1618512 5696632 1618552 5696712 1622016 5697816 1618304 5694912 +1618256 5694904 1618448 5696576 1618512 5696632 1618304 5694912 +1618256 5694904 1618312 5696512 1618448 5696576 1618304 5694912 +1618256 5694904 1618112 5694984 1618312 5696512 1618304 5694912 +1618312 5696512 1618448 5696576 1618304 5694912 1618112 5694984 +1618112 5694984 1617336 5695488 1618312 5696512 1618304 5694912 +1618256 5694904 1618144 5694952 1618112 5694984 1618304 5694912 +1618112 5694984 1618312 5696512 1618304 5694912 1618144 5694952 +1618256 5694904 1618208 5694912 1618144 5694952 1618304 5694912 +1618144 5694952 1618112 5694984 1618304 5694912 1618208 5694912 +1618512 5696632 1622016 5697816 1618304 5694912 1618448 5696576 +1618448 5696576 1618512 5696632 1618304 5694912 1618312 5696512 +1622016 5697816 1623272 5697000 1618304 5694912 1618512 5696632 +1623272 5697000 1623304 5696976 1618304 5694912 1622016 5697816 +1618304 5694912 1615488 5689328 1618256 5694904 1618208 5694912 +1623304 5696976 1623376 5696968 1618304 5694912 1623272 5697000 +1618304 5694912 1623376 5696968 1615488 5689272 1615488 5689328 +1623376 5696968 1615488 5689272 1618304 5694912 1623304 5696976 +1623272 5697000 1618392 5694976 1622016 5697816 1622080 5697800 +1622016 5697816 1618392 5694976 1618304 5694912 1618512 5696632 +1622016 5697816 1618392 5694976 1618512 5696632 1618552 5696712 +1618304 5694912 1618448 5696576 1618512 5696632 1618392 5694976 +1622016 5697816 1623272 5697000 1618392 5694976 1618552 5696712 +1618304 5694912 1618312 5696512 1618448 5696576 1618392 5694976 +1618304 5694912 1618112 5694984 1618312 5696512 1618392 5694976 +1618304 5694912 1618144 5694952 1618112 5694984 1618392 5694976 +1618112 5694984 1618312 5696512 1618392 5694976 1618144 5694952 +1618112 5694984 1617336 5695488 1618312 5696512 1618392 5694976 +1618304 5694912 1618208 5694912 1618144 5694952 1618392 5694976 +1618448 5696576 1618512 5696632 1618392 5694976 1618312 5696512 +1618312 5696512 1618448 5696576 1618392 5694976 1618112 5694984 +1618392 5694976 1618448 5696576 1618512 5696632 1618552 5696712 +1618304 5694912 1618392 5694976 1623272 5697000 1623304 5696976 +1618304 5694912 1618392 5694976 1623304 5696976 1623376 5696968 +1618392 5694976 1623272 5697000 1623304 5696976 1623376 5696968 +1618392 5694976 1623376 5696968 1618304 5694912 1618144 5694952 +1618304 5694912 1618392 5694976 1623376 5696968 1615488 5689272 +1623376 5696968 1623464 5696976 1615488 5689272 1618392 5694976 +1618392 5694976 1623304 5696976 1623376 5696968 1615488 5689272 +1618304 5694912 1618392 5694976 1615488 5689272 1615488 5689328 +1618304 5694912 1618392 5694976 1615488 5689328 1618256 5694904 +1618304 5694912 1618144 5694952 1618392 5694976 1615488 5689328 +1618392 5694976 1623376 5696968 1615488 5689272 1615488 5689328 +1618392 5694976 1622016 5697816 1623272 5697000 1623304 5696976 +1622016 5697816 1618392 5694976 1618552 5696712 1621936 5697864 +1618512 5696632 1618528 5696672 1618552 5696712 1618392 5694976 +1618552 5696712 1618456 5695040 1618392 5694976 1618512 5696632 +1618392 5694976 1618456 5695040 1622016 5697816 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1618456 5695040 +1618456 5695040 1623272 5697000 1618392 5694976 1618512 5696632 +1618456 5695040 1618552 5696712 1622016 5697816 1623272 5697000 +1618552 5696712 1622016 5697816 1618456 5695040 1618512 5696632 +1618392 5694976 1618448 5696576 1618512 5696632 1618456 5695040 +1618512 5696632 1618552 5696712 1618456 5695040 1618448 5696576 +1618392 5694976 1618312 5696512 1618448 5696576 1618456 5695040 +1618392 5694976 1618312 5696512 1618456 5695040 1623272 5697000 +1618392 5694976 1618112 5694984 1618312 5696512 1618456 5695040 +1618392 5694976 1618144 5694952 1618112 5694984 1618456 5695040 +1618112 5694984 1617336 5695488 1618312 5696512 1618456 5695040 +1618312 5696512 1618448 5696576 1618456 5695040 1618112 5694984 +1618392 5694976 1618112 5694984 1618456 5695040 1623272 5697000 +1618448 5696576 1618512 5696632 1618456 5695040 1618312 5696512 +1618392 5694976 1618456 5695040 1623272 5697000 1623304 5696976 +1618456 5695040 1622016 5697816 1623272 5697000 1623304 5696976 +1618392 5694976 1618112 5694984 1618456 5695040 1623304 5696976 +1618392 5694976 1618456 5695040 1623304 5696976 1623376 5696968 +1618392 5694976 1618112 5694984 1618456 5695040 1623376 5696968 +1618392 5694976 1618456 5695040 1623376 5696968 1615488 5689272 +1618456 5695040 1623272 5697000 1623304 5696976 1623376 5696968 +1622016 5697816 1618456 5695040 1618552 5696712 1621936 5697864 +1618552 5696712 1618456 5695040 1618512 5696632 1618528 5696672 +1618456 5695040 1618456 5695136 1618512 5696632 1618552 5696712 +1618456 5695040 1618448 5696576 1618456 5695136 1618552 5696712 +1618456 5695040 1618456 5695136 1618552 5696712 1622016 5697816 +1618456 5695136 1618512 5696632 1618552 5696712 1622016 5697816 +1618456 5695040 1618456 5695136 1622016 5697816 1623272 5697000 +1622016 5697816 1622080 5697800 1623272 5697000 1618456 5695136 +1618456 5695040 1618456 5695136 1623272 5697000 1623304 5696976 +1618456 5695040 1618448 5696576 1618456 5695136 1623272 5697000 +1618456 5695136 1618552 5696712 1622016 5697816 1623272 5697000 +1618456 5695136 1618448 5696576 1618512 5696632 1618552 5696712 +1618448 5696576 1618456 5695136 1618456 5695040 1618312 5696512 +1618456 5695040 1618112 5694984 1618312 5696512 1618456 5695136 +1618112 5694984 1617336 5695488 1618312 5696512 1618456 5695136 +1618112 5694984 1617336 5695448 1617336 5695488 1618456 5695136 +1617336 5695488 1618184 5696544 1618312 5696512 1618456 5695136 +1617336 5695488 1617328 5696064 1618184 5696544 1618456 5695136 +1617336 5695488 1617288 5695576 1617328 5696064 1618456 5695136 +1617328 5696064 1617424 5696248 1618184 5696544 1618456 5695136 +1617336 5695488 1617328 5696064 1618456 5695136 1618112 5694984 +1618184 5696544 1618312 5696512 1618456 5695136 1617328 5696064 +1618112 5694984 1617336 5695488 1618456 5695136 1618456 5695040 +1618456 5695136 1623272 5697000 1618456 5695040 1618112 5694984 +1618448 5696576 1618512 5696632 1618456 5695136 1618312 5696512 +1618456 5695040 1618392 5694976 1618112 5694984 1618456 5695136 +1618392 5694976 1618144 5694952 1618112 5694984 1618456 5695136 +1618112 5694984 1617336 5695488 1618456 5695136 1618392 5694976 +1618456 5695040 1618392 5694976 1618456 5695136 1623272 5697000 +1618312 5696512 1618448 5696576 1618456 5695136 1618184 5696544 +1618552 5696712 1621936 5697864 1622016 5697816 1618456 5695136 +1618512 5696632 1618528 5696672 1618552 5696712 1618456 5695136 +1618184 5696544 1618400 5695224 1617328 5696064 1617424 5696248 +1618184 5696544 1618400 5695224 1617424 5696248 1618072 5696608 +1617328 5696064 1618400 5695224 1618456 5695136 1617336 5695488 +1617328 5696064 1618400 5695224 1617336 5695488 1617288 5695576 +1618456 5695136 1618112 5694984 1617336 5695488 1618400 5695224 +1617336 5695488 1617328 5696064 1618400 5695224 1618112 5694984 +1618112 5694984 1617336 5695448 1617336 5695488 1618400 5695224 +1618456 5695136 1618400 5695224 1618184 5696544 1618312 5696512 +1618456 5695136 1618392 5694976 1618112 5694984 1618400 5695224 +1618392 5694976 1618144 5694952 1618112 5694984 1618400 5695224 +1618112 5694984 1617336 5695488 1618400 5695224 1618392 5694976 +1618400 5695224 1618312 5696512 1618456 5695136 1618392 5694976 +1618184 5696544 1618312 5696512 1618400 5695224 1617424 5696248 +1618400 5695224 1617336 5695488 1617328 5696064 1617424 5696248 +1618456 5695136 1618456 5695040 1618392 5694976 1618400 5695224 +1618456 5695136 1618400 5695224 1618312 5696512 1618448 5696576 +1618400 5695224 1618184 5696544 1618312 5696512 1618448 5696576 +1618456 5695136 1618392 5694976 1618400 5695224 1618448 5696576 +1618456 5695136 1618400 5695224 1618448 5696576 1618512 5696632 +1618456 5695136 1618400 5695224 1618512 5696632 1618552 5696712 +1618456 5695136 1618392 5694976 1618400 5695224 1618512 5696632 +1618400 5695224 1618312 5696512 1618448 5696576 1618512 5696632 +1617328 5696064 1618352 5695256 1617336 5695488 1617288 5695576 +1617336 5695488 1618352 5695256 1618400 5695224 1618112 5694984 +1617336 5695488 1618352 5695256 1618112 5694984 1617336 5695448 +1618352 5695256 1618400 5695224 1618112 5694984 1617336 5695448 +1618112 5694984 1617304 5695352 1617336 5695448 1618352 5695256 +1618400 5695224 1618392 5694976 1618112 5694984 1618352 5695256 +1618112 5694984 1617336 5695448 1618352 5695256 1618392 5694976 +1618392 5694976 1618144 5694952 1618112 5694984 1618352 5695256 +1618400 5695224 1618456 5695136 1618392 5694976 1618352 5695256 +1618352 5695256 1617328 5696064 1618400 5695224 1618392 5694976 +1618400 5695224 1618352 5695256 1617328 5696064 1617424 5696248 +1618400 5695224 1618352 5695256 1617424 5696248 1618184 5696544 +1617424 5696248 1618072 5696608 1618184 5696544 1618352 5695256 +1618400 5695224 1618352 5695256 1618184 5696544 1618312 5696512 +1618352 5695256 1617424 5696248 1618184 5696544 1618312 5696512 +1618400 5695224 1618352 5695256 1618312 5696512 1618448 5696576 +1618352 5695256 1618184 5696544 1618312 5696512 1618448 5696576 +1618400 5695224 1618392 5694976 1618352 5695256 1618448 5696576 +1618352 5695256 1617328 5696064 1617424 5696248 1618184 5696544 +1618352 5695256 1617336 5695488 1617328 5696064 1617424 5696248 +1617336 5695488 1617328 5696064 1618352 5695256 1617336 5695448 +1618400 5695224 1618352 5695256 1618448 5696576 1618512 5696632 +1617336 5695448 1618312 5695264 1618352 5695256 1618112 5694984 +1618352 5695256 1618392 5694976 1618112 5694984 1618312 5695264 +1618112 5694984 1617336 5695448 1618312 5695264 1618392 5694976 +1618392 5694976 1618144 5694952 1618112 5694984 1618312 5695264 +1618392 5694976 1618144 5694952 1618312 5695264 1618352 5695256 +1618392 5694976 1618304 5694912 1618144 5694952 1618312 5695264 +1618112 5694984 1617336 5695448 1618312 5695264 1618144 5694952 +1617336 5695448 1618312 5695264 1618112 5694984 1617304 5695352 +1618352 5695256 1618400 5695224 1618392 5694976 1618312 5695264 +1618392 5694976 1618144 5694952 1618312 5695264 1618400 5695224 +1618400 5695224 1618456 5695136 1618392 5694976 1618312 5695264 +1618312 5695264 1617336 5695488 1618352 5695256 1618400 5695224 +1618352 5695256 1618312 5695264 1617336 5695488 1617328 5696064 +1617336 5695488 1617288 5695576 1617328 5696064 1618312 5695264 +1618352 5695256 1618312 5695264 1617328 5696064 1617424 5696248 +1618352 5695256 1618312 5695264 1617424 5696248 1618184 5696544 +1618352 5695256 1618312 5695264 1618184 5696544 1618312 5696512 +1617424 5696248 1618072 5696608 1618184 5696544 1618312 5695264 +1618352 5695256 1618312 5695264 1618312 5696512 1618448 5696576 +1618312 5695264 1617424 5696248 1618184 5696544 1618312 5696512 +1618312 5695264 1617328 5696064 1617424 5696248 1618184 5696544 +1618352 5695256 1618400 5695224 1618312 5695264 1618312 5696512 +1618312 5695264 1617336 5695488 1617328 5696064 1617424 5696248 +1618312 5695264 1617336 5695448 1617336 5695488 1617328 5696064 +1617336 5695448 1617336 5695488 1618312 5695264 1618112 5694984 +1618112 5694984 1618272 5695256 1618312 5695264 1618144 5694952 +1618312 5695264 1618392 5694976 1618144 5694952 1618272 5695256 +1618312 5695264 1618400 5695224 1618392 5694976 1618272 5695256 +1618392 5694976 1618304 5694912 1618144 5694952 1618272 5695256 +1618144 5694952 1618112 5694984 1618272 5695256 1618392 5694976 +1618392 5694976 1618144 5694952 1618272 5695256 1618400 5695224 +1617336 5695448 1618272 5695256 1618112 5694984 1617304 5695352 +1618312 5695264 1618352 5695256 1618400 5695224 1618272 5695256 +1618400 5695224 1618392 5694976 1618272 5695256 1618352 5695256 +1618400 5695224 1618456 5695136 1618392 5694976 1618272 5695256 +1618272 5695256 1617336 5695448 1618312 5695264 1618352 5695256 +1618312 5695264 1618272 5695256 1617336 5695448 1617336 5695488 +1618312 5695264 1618272 5695256 1617336 5695488 1617328 5696064 +1617336 5695488 1617288 5695576 1617328 5696064 1618272 5695256 +1618312 5695264 1618272 5695256 1617328 5696064 1617424 5696248 +1618312 5695264 1618272 5695256 1617424 5696248 1618184 5696544 +1617424 5696248 1618072 5696608 1618184 5696544 1618272 5695256 +1618312 5695264 1618272 5695256 1618184 5696544 1618312 5696512 +1618312 5695264 1618272 5695256 1618312 5696512 1618352 5695256 +1618272 5695256 1617424 5696248 1618184 5696544 1618312 5696512 +1618272 5695256 1617328 5696064 1617424 5696248 1618184 5696544 +1618272 5695256 1617336 5695488 1617328 5696064 1617424 5696248 +1618312 5695264 1618352 5695256 1618272 5695256 1618312 5696512 +1618272 5695256 1617336 5695448 1617336 5695488 1617328 5696064 +1618272 5695256 1618112 5694984 1617336 5695448 1617336 5695488 +1618112 5694984 1617336 5695448 1618272 5695256 1618144 5694952 +1617336 5695448 1618224 5695240 1618112 5694984 1617304 5695352 +1618272 5695256 1618224 5695240 1617336 5695448 1617336 5695488 +1618272 5695256 1618224 5695240 1617336 5695488 1617328 5696064 +1617336 5695488 1617288 5695576 1617328 5696064 1618224 5695240 +1618272 5695256 1618224 5695240 1617328 5696064 1617424 5696248 +1618272 5695256 1618224 5695240 1617424 5696248 1618184 5696544 +1617424 5696248 1618072 5696608 1618184 5696544 1618224 5695240 +1618272 5695256 1618224 5695240 1618184 5696544 1618312 5696512 +1618224 5695240 1617328 5696064 1617424 5696248 1618184 5696544 +1618224 5695240 1617336 5695488 1617328 5696064 1617424 5696248 +1618224 5695240 1617336 5695448 1617336 5695488 1617328 5696064 +1618272 5695256 1618112 5694984 1618224 5695240 1618184 5696544 +1618112 5694984 1618224 5695240 1618272 5695256 1618144 5694952 +1618272 5695256 1618392 5694976 1618144 5694952 1618224 5695240 +1618392 5694976 1618304 5694912 1618144 5694952 1618224 5695240 +1618272 5695256 1618400 5695224 1618392 5694976 1618224 5695240 +1618224 5695240 1618184 5696544 1618272 5695256 1618392 5694976 +1618144 5694952 1618112 5694984 1618224 5695240 1618392 5694976 +1618224 5695240 1618112 5694984 1617336 5695448 1617336 5695488 +1618112 5694984 1617336 5695448 1618224 5695240 1618144 5694952 +1617336 5695448 1618160 5695200 1618112 5694984 1617304 5695352 +1618224 5695240 1618160 5695200 1617336 5695448 1617336 5695488 +1618224 5695240 1618160 5695200 1617336 5695488 1617328 5696064 +1618224 5695240 1618112 5694984 1618160 5695200 1617336 5695488 +1618112 5694984 1618160 5695200 1618224 5695240 1618144 5694952 +1618224 5695240 1618392 5694976 1618144 5694952 1618160 5695200 +1618392 5694976 1618304 5694912 1618144 5694952 1618160 5695200 +1618224 5695240 1618272 5695256 1618392 5694976 1618160 5695200 +1618160 5695200 1617336 5695488 1618224 5695240 1618392 5694976 +1618144 5694952 1618112 5694984 1618160 5695200 1618392 5694976 +1617336 5695448 1617336 5695488 1618160 5695200 1617304 5695352 +1618160 5695200 1618144 5694952 1618112 5694984 1617304 5695352 +1618112 5694984 1617104 5695232 1617304 5695352 1618160 5695200 +1618160 5695200 1618136 5695168 1617304 5695352 1617336 5695448 +1618160 5695200 1618136 5695168 1617336 5695448 1617336 5695488 +1618160 5695200 1618112 5694984 1618136 5695168 1617336 5695448 +1618112 5694984 1618136 5695168 1618160 5695200 1618144 5694952 +1618160 5695200 1618392 5694976 1618144 5694952 1618136 5695168 +1618392 5694976 1618304 5694912 1618144 5694952 1618136 5695168 +1618304 5694912 1618208 5694912 1618144 5694952 1618136 5695168 +1618160 5695200 1618224 5695240 1618392 5694976 1618136 5695168 +1618224 5695240 1618272 5695256 1618392 5694976 1618136 5695168 +1618392 5694976 1618304 5694912 1618136 5695168 1618224 5695240 +1618136 5695168 1617336 5695448 1618160 5695200 1618224 5695240 +1618144 5694952 1618112 5694984 1618136 5695168 1618304 5694912 +1618136 5695168 1618112 5694984 1617304 5695352 1617336 5695448 +1618112 5694984 1617304 5695352 1618136 5695168 1618144 5694952 +1617304 5695352 1618136 5695168 1618112 5694984 1617104 5695232 +1618136 5695168 1618104 5695096 1617304 5695352 1617336 5695448 +1618136 5695168 1618104 5695096 1617336 5695448 1618160 5695200 +1618136 5695168 1618112 5694984 1618104 5695096 1617336 5695448 +1618112 5694984 1618104 5695096 1618136 5695168 1618144 5694952 +1618136 5695168 1618304 5694912 1618144 5694952 1618104 5695096 +1618136 5695168 1618392 5694976 1618304 5694912 1618104 5695096 +1618304 5694912 1618208 5694912 1618144 5694952 1618104 5695096 +1618136 5695168 1618224 5695240 1618392 5694976 1618104 5695096 +1618304 5694912 1618144 5694952 1618104 5695096 1618392 5694976 +1618104 5695096 1617336 5695448 1618136 5695168 1618392 5694976 +1618144 5694952 1618112 5694984 1618104 5695096 1618304 5694912 +1618104 5695096 1618112 5694984 1617304 5695352 1617336 5695448 +1618112 5694984 1617304 5695352 1618104 5695096 1618144 5694952 +1617304 5695352 1618104 5695096 1618112 5694984 1617104 5695232 +1610536 5684592 1609944 5684640 1609168 5684752 1609144 5684888 +1609168 5684752 1609944 5684640 1610400 5684392 1610288 5684272 +1609168 5684752 1609944 5684640 1610288 5684272 1609120 5684624 +1610288 5684272 1610160 5684024 1609120 5684624 1609944 5684640 +1610160 5684024 1609032 5684488 1609120 5684624 1609944 5684640 +1610160 5684024 1609464 5683512 1609032 5684488 1609944 5684640 +1610160 5684024 1609032 5684488 1609944 5684640 1610288 5684272 +1609944 5684640 1610400 5684392 1610288 5684272 1610160 5684024 +1609120 5684624 1609168 5684752 1609944 5684640 1609032 5684488 +1609944 5684640 1609120 5684624 1609168 5684752 1609144 5684888 +1609944 5684640 1610536 5684592 1610400 5684392 1610288 5684272 +1610536 5684592 1610400 5684392 1609944 5684640 1609144 5684888 +1610536 5684592 1609944 5684640 1609144 5684888 1610200 5685672 +1609944 5684640 1609168 5684752 1609144 5684888 1610200 5685672 +1610536 5684592 1610400 5684392 1609944 5684640 1610200 5685672 +1609144 5684888 1610168 5685696 1610200 5685672 1609944 5684640 +1609144 5684888 1610168 5685696 1609944 5684640 1609168 5684752 +1609144 5684888 1610080 5685800 1610168 5685696 1609944 5684640 +1610200 5685672 1610536 5684592 1609944 5684640 1610168 5685696 +1609032 5684488 1609072 5684560 1609120 5684624 1609944 5684640 +1609032 5684488 1609072 5684560 1609944 5684640 1610160 5684024 +1609120 5684624 1609168 5684752 1609944 5684640 1609072 5684560 +1610536 5684592 1609944 5684640 1610200 5685672 1610672 5684808 +1610200 5685672 1610312 5685648 1610672 5684808 1609944 5684640 +1610312 5685648 1610768 5684904 1610672 5684808 1609944 5684640 +1610536 5684592 1610400 5684392 1609944 5684640 1610672 5684808 +1609944 5684640 1610168 5685696 1610200 5685672 1610312 5685648 +1610672 5684808 1610536 5684592 1609944 5684640 1610312 5685648 +1610672 5684808 1610088 5684808 1610312 5685648 1610768 5684904 +1610312 5685648 1610088 5684808 1609944 5684640 1610200 5685672 +1610088 5684808 1610672 5684808 1609944 5684640 1610200 5685672 +1610312 5685648 1610672 5684808 1610088 5684808 1610200 5685672 +1609944 5684640 1610168 5685696 1610200 5685672 1610088 5684808 +1610200 5685672 1610312 5685648 1610088 5684808 1610168 5685696 +1609944 5684640 1610168 5685696 1610088 5684808 1610672 5684808 +1609944 5684640 1609144 5684888 1610168 5685696 1610088 5684808 +1609944 5684640 1609168 5684752 1609144 5684888 1610088 5684808 +1609144 5684888 1610080 5685800 1610168 5685696 1610088 5684808 +1609944 5684640 1609144 5684888 1610088 5684808 1610672 5684808 +1610168 5685696 1610200 5685672 1610088 5684808 1609144 5684888 +1609944 5684640 1610088 5684808 1610672 5684808 1610536 5684592 +1609944 5684640 1609144 5684888 1610088 5684808 1610536 5684592 +1609944 5684640 1610088 5684808 1610536 5684592 1610400 5684392 +1609944 5684640 1610088 5684808 1610400 5684392 1610288 5684272 +1609944 5684640 1609144 5684888 1610088 5684808 1610400 5684392 +1610088 5684808 1610312 5685648 1610672 5684808 1610536 5684592 +1610088 5684808 1610672 5684808 1610536 5684592 1610400 5684392 +1610672 5684808 1610144 5684872 1610312 5685648 1610768 5684904 +1610312 5685648 1610448 5685656 1610768 5684904 1610144 5684872 +1610768 5684904 1610672 5684808 1610144 5684872 1610448 5685656 +1610088 5684808 1610144 5684872 1610672 5684808 1610536 5684592 +1610088 5684808 1610312 5685648 1610144 5684872 1610536 5684592 +1610312 5685648 1610144 5684872 1610088 5684808 1610200 5685672 +1610088 5684808 1610168 5685696 1610200 5685672 1610144 5684872 +1610144 5684872 1610536 5684592 1610088 5684808 1610168 5685696 +1610200 5685672 1610312 5685648 1610144 5684872 1610168 5685696 +1610672 5684808 1610536 5684592 1610144 5684872 1610768 5684904 +1610144 5684872 1610200 5685672 1610312 5685648 1610448 5685656 +1610448 5685656 1610840 5684936 1610768 5684904 1610144 5684872 +1610088 5684808 1609144 5684888 1610168 5685696 1610144 5684872 +1609144 5684888 1610080 5685800 1610168 5685696 1610144 5684872 +1610168 5685696 1610200 5685672 1610144 5684872 1609144 5684888 +1610088 5684808 1609144 5684888 1610144 5684872 1610536 5684592 +1610088 5684808 1609944 5684640 1609144 5684888 1610144 5684872 +1610088 5684808 1610144 5684872 1610536 5684592 1610400 5684392 +1610144 5684872 1610184 5684944 1610768 5684904 1610672 5684808 +1610448 5685656 1610184 5684944 1610144 5684872 1610312 5685648 +1610144 5684872 1610184 5684944 1610672 5684808 1610536 5684592 +1610184 5684944 1610768 5684904 1610672 5684808 1610536 5684592 +1610144 5684872 1610184 5684944 1610536 5684592 1610088 5684808 +1610144 5684872 1610312 5685648 1610184 5684944 1610536 5684592 +1610144 5684872 1610200 5685672 1610312 5685648 1610184 5684944 +1610312 5685648 1610448 5685656 1610184 5684944 1610200 5685672 +1610144 5684872 1610168 5685696 1610200 5685672 1610184 5684944 +1610144 5684872 1609144 5684888 1610168 5685696 1610184 5684944 +1609144 5684888 1610080 5685800 1610168 5685696 1610184 5684944 +1610168 5685696 1610200 5685672 1610184 5684944 1609144 5684888 +1610144 5684872 1609144 5684888 1610184 5684944 1610536 5684592 +1610200 5685672 1610312 5685648 1610184 5684944 1610168 5685696 +1610184 5684944 1610448 5685656 1610768 5684904 1610672 5684808 +1610448 5685656 1610768 5684904 1610184 5684944 1610312 5685648 +1610768 5684904 1610184 5684944 1610448 5685656 1610840 5684936 +1610144 5684872 1610088 5684808 1609144 5684888 1610184 5684944 +1609144 5684888 1610168 5685696 1610184 5684944 1610088 5684808 +1610144 5684872 1610088 5684808 1610184 5684944 1610536 5684592 +1610088 5684808 1609944 5684640 1609144 5684888 1610184 5684944 +1610168 5685696 1610184 5685000 1610184 5684944 1609144 5684888 +1610168 5685696 1610184 5685000 1609144 5684888 1610080 5685800 +1609144 5684888 1609088 5684944 1610080 5685800 1610184 5685000 +1610184 5684944 1610088 5684808 1609144 5684888 1610184 5685000 +1610184 5685000 1610088 5684808 1609144 5684888 1610080 5685800 +1610184 5684944 1610184 5685000 1610200 5685672 1610312 5685648 +1610184 5684944 1610184 5685000 1610312 5685648 1610448 5685656 +1610184 5685000 1610200 5685672 1610312 5685648 1610448 5685656 +1610184 5685000 1610448 5685656 1610184 5684944 1610088 5684808 +1610184 5684944 1610184 5685000 1610448 5685656 1610768 5684904 +1610184 5685000 1610312 5685648 1610448 5685656 1610768 5684904 +1610184 5684944 1610184 5685000 1610768 5684904 1610672 5684808 +1610184 5684944 1610184 5685000 1610672 5684808 1610536 5684592 +1610184 5684944 1610088 5684808 1610184 5685000 1610672 5684808 +1610184 5685000 1610448 5685656 1610768 5684904 1610672 5684808 +1610184 5685000 1610168 5685696 1610200 5685672 1610312 5685648 +1610168 5685696 1610200 5685672 1610184 5685000 1610080 5685800 +1610448 5685656 1610840 5684936 1610768 5684904 1610184 5685000 +1610184 5684944 1610144 5684872 1610088 5684808 1610184 5685000 +1610088 5684808 1609144 5684888 1610184 5685000 1610144 5684872 +1610184 5684944 1610144 5684872 1610184 5685000 1610672 5684808 +1610088 5684808 1609944 5684640 1609144 5684888 1610184 5685000 +1610184 5685000 1610088 5685024 1610080 5685800 1610168 5685696 +1610080 5685800 1610088 5685024 1609144 5684888 1609088 5684944 +1610080 5685800 1610088 5685024 1609088 5684944 1609040 5684992 +1609144 5684888 1610088 5685024 1610184 5685000 1610088 5684808 +1610184 5685000 1610144 5684872 1610088 5684808 1610088 5685024 +1610088 5684808 1609144 5684888 1610088 5685024 1610144 5684872 +1610184 5685000 1610144 5684872 1610088 5685024 1610168 5685696 +1610184 5685000 1610088 5685024 1610168 5685696 1610200 5685672 +1610088 5685024 1610080 5685800 1610168 5685696 1610200 5685672 +1610184 5685000 1610088 5685024 1610200 5685672 1610312 5685648 +1610184 5685000 1610088 5685024 1610312 5685648 1610448 5685656 +1610184 5685000 1610144 5684872 1610088 5685024 1610312 5685648 +1610088 5685024 1610168 5685696 1610200 5685672 1610312 5685648 +1610088 5685024 1609088 5684944 1610080 5685800 1610168 5685696 +1610088 5685024 1610088 5684808 1609144 5684888 1609088 5684944 +1610184 5685000 1610184 5684944 1610144 5684872 1610088 5685024 +1610144 5684872 1610088 5684808 1610088 5685024 1610184 5684944 +1610184 5685000 1610184 5684944 1610088 5685024 1610312 5685648 +1609144 5684888 1610088 5685024 1610088 5684808 1609944 5684640 +1609144 5684888 1610088 5685024 1609944 5684640 1609168 5684752 +1610088 5685024 1610144 5684872 1610088 5684808 1609944 5684640 +1609144 5684888 1609088 5684944 1610088 5685024 1609944 5684640 +1610080 5685800 1610056 5685024 1609088 5684944 1609040 5684992 +1609088 5684944 1610056 5685024 1610088 5685024 1609144 5684888 +1610088 5685024 1610056 5685024 1610080 5685800 1610168 5685696 +1610088 5685024 1610056 5685024 1610168 5685696 1610200 5685672 +1610088 5685024 1610056 5685024 1610200 5685672 1610312 5685648 +1610056 5685024 1610080 5685800 1610168 5685696 1610200 5685672 +1610056 5685024 1610200 5685672 1610088 5685024 1609144 5684888 +1610088 5685024 1609944 5684640 1609144 5684888 1610056 5685024 +1609944 5684640 1609168 5684752 1609144 5684888 1610056 5685024 +1609144 5684888 1609088 5684944 1610056 5685024 1609944 5684640 +1610088 5685024 1609944 5684640 1610056 5685024 1610200 5685672 +1610056 5685024 1609088 5684944 1610080 5685800 1610168 5685696 +1609088 5684944 1610080 5685800 1610056 5685024 1609144 5684888 +1610088 5685024 1610088 5684808 1609944 5684640 1610056 5685024 +1610088 5685024 1610144 5684872 1610088 5684808 1610056 5685024 +1610088 5685024 1610184 5684944 1610144 5684872 1610056 5685024 +1610088 5685024 1610144 5684872 1610056 5685024 1610200 5685672 +1609944 5684640 1609144 5684888 1610056 5685024 1610088 5684808 +1610088 5684808 1609944 5684640 1610056 5685024 1610144 5684872 +1609144 5684888 1609928 5684976 1609944 5684640 1609168 5684752 +1610056 5685024 1609928 5684976 1609144 5684888 1609088 5684944 +1609944 5684640 1609120 5684624 1609168 5684752 1609928 5684976 +1609944 5684640 1609928 5684976 1610056 5685024 1610088 5684808 +1610056 5685024 1610088 5684808 1609928 5684976 1609088 5684944 +1610056 5685024 1609928 5684976 1609088 5684944 1610080 5685800 +1609088 5684944 1609040 5684992 1610080 5685800 1609928 5684976 +1609088 5684944 1609056 5684960 1609040 5684992 1609928 5684976 +1609928 5684976 1609144 5684888 1609088 5684944 1609040 5684992 +1610056 5685024 1609928 5684976 1610080 5685800 1610168 5685696 +1610056 5685024 1609928 5684976 1610168 5685696 1610200 5685672 +1610056 5685024 1610088 5684808 1609928 5684976 1610168 5685696 +1610080 5685800 1610168 5685696 1609928 5684976 1609040 5684992 +1609144 5684888 1609088 5684944 1609928 5684976 1609168 5684752 +1609928 5684976 1610088 5684808 1609944 5684640 1609168 5684752 +1609040 5684992 1608816 5685680 1610080 5685800 1609928 5684976 +1610056 5685024 1610144 5684872 1610088 5684808 1609928 5684976 +1609928 5684976 1609752 5684832 1609168 5684752 1609144 5684888 +1609168 5684752 1609752 5684832 1609944 5684640 1609120 5684624 +1609944 5684640 1609072 5684560 1609120 5684624 1609752 5684832 +1609928 5684976 1609752 5684832 1609144 5684888 1609088 5684944 +1609752 5684832 1609168 5684752 1609144 5684888 1609088 5684944 +1609928 5684976 1609752 5684832 1609088 5684944 1609040 5684992 +1609928 5684976 1609944 5684640 1609752 5684832 1609088 5684944 +1609944 5684640 1609752 5684832 1609928 5684976 1610088 5684808 +1609928 5684976 1610056 5685024 1610088 5684808 1609752 5684832 +1609752 5684832 1609088 5684944 1609928 5684976 1610088 5684808 +1609752 5684832 1609120 5684624 1609168 5684752 1609144 5684888 +1609752 5684832 1610088 5684808 1609944 5684640 1609120 5684624 +1609120 5684624 1609544 5684696 1609944 5684640 1609072 5684560 +1609752 5684832 1609544 5684696 1609120 5684624 1609168 5684752 +1609752 5684832 1609544 5684696 1609168 5684752 1609144 5684888 +1609752 5684832 1609544 5684696 1609144 5684888 1609088 5684944 +1609544 5684696 1609120 5684624 1609168 5684752 1609144 5684888 +1609752 5684832 1609944 5684640 1609544 5684696 1609144 5684888 +1609944 5684640 1609544 5684696 1609752 5684832 1610088 5684808 +1609120 5684624 1609168 5684752 1609544 5684696 1609072 5684560 +1609544 5684696 1609752 5684832 1609944 5684640 1609072 5684560 +1609944 5684640 1609032 5684488 1609072 5684560 1609544 5684696 +1609944 5684640 1610160 5684024 1609032 5684488 1609544 5684696 +1610160 5684024 1609464 5683512 1609032 5684488 1609544 5684696 +1610160 5684024 1609464 5683512 1609544 5684696 1609944 5684640 +1609464 5683512 1609360 5683512 1609032 5684488 1609544 5684696 +1610160 5684024 1610128 5683904 1609464 5683512 1609544 5684696 +1610160 5684024 1610128 5683904 1609544 5684696 1609944 5684640 +1610128 5683904 1610128 5683648 1609464 5683512 1609544 5684696 +1609464 5683512 1609032 5684488 1609544 5684696 1610128 5683904 +1609944 5684640 1610288 5684272 1610160 5684024 1609544 5684696 +1609072 5684560 1609120 5684624 1609544 5684696 1609032 5684488 +1609944 5684640 1610160 5684024 1609544 5684696 1609752 5684832 +1609032 5684488 1609072 5684560 1609544 5684696 1609464 5683512 +1609032 5684488 1609512 5684656 1609464 5683512 1609360 5683512 +1609464 5683512 1609512 5684656 1609544 5684696 1610128 5683904 +1609464 5683512 1609512 5684656 1610128 5683904 1610128 5683648 +1609544 5684696 1610160 5684024 1610128 5683904 1609512 5684656 +1609544 5684696 1609944 5684640 1610160 5684024 1609512 5684656 +1610128 5683904 1609464 5683512 1609512 5684656 1610160 5684024 +1610160 5684024 1610128 5683904 1609512 5684656 1609944 5684640 +1609944 5684640 1610288 5684272 1610160 5684024 1609512 5684656 +1609512 5684656 1609032 5684488 1609544 5684696 1609944 5684640 +1609544 5684696 1609752 5684832 1609944 5684640 1609512 5684656 +1609464 5683512 1609032 5684488 1609512 5684656 1610128 5683904 +1609544 5684696 1609512 5684656 1609032 5684488 1609072 5684560 +1609544 5684696 1609512 5684656 1609072 5684560 1609120 5684624 +1609544 5684696 1609512 5684656 1609120 5684624 1609168 5684752 +1609512 5684656 1609072 5684560 1609120 5684624 1609168 5684752 +1609544 5684696 1609512 5684656 1609168 5684752 1609144 5684888 +1609544 5684696 1609944 5684640 1609512 5684656 1609168 5684752 +1609512 5684656 1609464 5683512 1609032 5684488 1609072 5684560 +1609512 5684656 1609032 5684488 1609072 5684560 1609120 5684624 +1609032 5684488 1609504 5684584 1609464 5683512 1609360 5683512 +1609512 5684656 1609504 5684584 1609032 5684488 1609072 5684560 +1609512 5684656 1609464 5683512 1609504 5684584 1609072 5684560 +1609464 5683512 1609504 5684584 1609512 5684656 1610128 5683904 +1609464 5683512 1609504 5684584 1610128 5683904 1610128 5683648 +1609512 5684656 1610160 5684024 1610128 5683904 1609504 5684584 +1609512 5684656 1609944 5684640 1610160 5684024 1609504 5684584 +1609512 5684656 1609544 5684696 1609944 5684640 1609504 5684584 +1610160 5684024 1610128 5683904 1609504 5684584 1609944 5684640 +1609944 5684640 1610160 5684024 1609504 5684584 1609544 5684696 +1609944 5684640 1610288 5684272 1610160 5684024 1609504 5684584 +1609544 5684696 1609752 5684832 1609944 5684640 1609504 5684584 +1609504 5684584 1609072 5684560 1609512 5684656 1609544 5684696 +1610128 5683904 1609464 5683512 1609504 5684584 1610160 5684024 +1609032 5684488 1609072 5684560 1609504 5684584 1609360 5683512 +1609504 5684584 1610128 5683904 1609464 5683512 1609360 5683512 +1609032 5684488 1609504 5684584 1609360 5683512 1608968 5684424 +1609504 5684584 1609464 5683512 1609360 5683512 1608968 5684424 +1609360 5683512 1609264 5683496 1608968 5684424 1609504 5684584 +1609032 5684488 1609072 5684560 1609504 5684584 1608968 5684424 +1609464 5683512 1609448 5683488 1609360 5683512 1609504 5684584 +1609512 5684656 1609504 5684584 1609072 5684560 1609120 5684624 +1609512 5684656 1609504 5684584 1609120 5684624 1609168 5684752 +1609512 5684656 1609504 5684584 1609168 5684752 1609544 5684696 +1609504 5684584 1609032 5684488 1609072 5684560 1609120 5684624 +1609512 5684656 1609544 5684696 1609504 5684584 1609168 5684752 +1609504 5684584 1609072 5684560 1609120 5684624 1609168 5684752 +1609464 5683512 1609520 5684536 1610128 5683904 1610128 5683648 +1610128 5683904 1609520 5684536 1609504 5684584 1610160 5684024 +1609504 5684584 1609944 5684640 1610160 5684024 1609520 5684536 +1609504 5684584 1609544 5684696 1609944 5684640 1609520 5684536 +1609504 5684584 1609512 5684656 1609544 5684696 1609520 5684536 +1609944 5684640 1610160 5684024 1609520 5684536 1609544 5684696 +1609944 5684640 1610288 5684272 1610160 5684024 1609520 5684536 +1609544 5684696 1609752 5684832 1609944 5684640 1609520 5684536 +1610160 5684024 1610128 5683904 1609520 5684536 1609944 5684640 +1609520 5684536 1609464 5683512 1609504 5684584 1609544 5684696 +1609504 5684584 1609520 5684536 1609464 5683512 1609360 5683512 +1609504 5684584 1609520 5684536 1609360 5683512 1608968 5684424 +1609360 5683512 1609264 5683496 1608968 5684424 1609520 5684536 +1609504 5684584 1609544 5684696 1609520 5684536 1608968 5684424 +1609520 5684536 1609464 5683512 1609360 5683512 1608968 5684424 +1609520 5684536 1610128 5683904 1609464 5683512 1609360 5683512 +1610128 5683904 1609464 5683512 1609520 5684536 1610160 5684024 +1609504 5684584 1609520 5684536 1608968 5684424 1609032 5684488 +1609520 5684536 1609360 5683512 1608968 5684424 1609032 5684488 +1609504 5684584 1609520 5684536 1609032 5684488 1609072 5684560 +1609504 5684584 1609520 5684536 1609072 5684560 1609120 5684624 +1609520 5684536 1609032 5684488 1609072 5684560 1609120 5684624 +1609504 5684584 1609544 5684696 1609520 5684536 1609120 5684624 +1609520 5684536 1608968 5684424 1609032 5684488 1609072 5684560 +1609464 5683512 1609448 5683488 1609360 5683512 1609520 5684536 +1609504 5684584 1609520 5684536 1609120 5684624 1609168 5684752 +1609464 5683512 1609576 5684456 1610128 5683904 1610128 5683648 +1609520 5684536 1609576 5684456 1609464 5683512 1609360 5683512 +1609520 5684536 1609576 5684456 1609360 5683512 1608968 5684424 +1609520 5684536 1609576 5684456 1608968 5684424 1609032 5684488 +1609360 5683512 1609264 5683496 1608968 5684424 1609576 5684456 +1609576 5684456 1609360 5683512 1608968 5684424 1609032 5684488 +1609576 5684456 1609464 5683512 1609360 5683512 1608968 5684424 +1609520 5684536 1610128 5683904 1609576 5684456 1609032 5684488 +1610128 5683904 1609576 5684456 1609520 5684536 1610160 5684024 +1610128 5683904 1609464 5683512 1609576 5684456 1610160 5684024 +1609520 5684536 1609944 5684640 1610160 5684024 1609576 5684456 +1609520 5684536 1609544 5684696 1609944 5684640 1609576 5684456 +1609520 5684536 1609504 5684584 1609544 5684696 1609576 5684456 +1609944 5684640 1610288 5684272 1610160 5684024 1609576 5684456 +1609544 5684696 1609752 5684832 1609944 5684640 1609576 5684456 +1609944 5684640 1610160 5684024 1609576 5684456 1609544 5684696 +1609576 5684456 1609032 5684488 1609520 5684536 1609544 5684696 +1610160 5684024 1610128 5683904 1609576 5684456 1609944 5684640 +1609576 5684456 1610128 5683904 1609464 5683512 1609360 5683512 +1609520 5684536 1609576 5684456 1609032 5684488 1609072 5684560 +1609464 5683512 1609448 5683488 1609360 5683512 1609576 5684456 +1610160 5684024 1609624 5684432 1609944 5684640 1610288 5684272 +1609944 5684640 1609624 5684432 1609576 5684456 1609544 5684696 +1609944 5684640 1610160 5684024 1609624 5684432 1609544 5684696 +1609576 5684456 1609520 5684536 1609544 5684696 1609624 5684432 +1609520 5684536 1609504 5684584 1609544 5684696 1609624 5684432 +1609944 5684640 1609624 5684432 1609544 5684696 1609752 5684832 +1609544 5684696 1609944 5684640 1609624 5684432 1609520 5684536 +1609576 5684456 1609624 5684432 1610160 5684024 1610128 5683904 +1609576 5684456 1609624 5684432 1610128 5683904 1609464 5683512 +1609624 5684432 1609944 5684640 1610160 5684024 1610128 5683904 +1610128 5683904 1610128 5683648 1609464 5683512 1609624 5684432 +1609624 5684432 1610160 5684024 1610128 5683904 1609464 5683512 +1609576 5684456 1609624 5684432 1609464 5683512 1609360 5683512 +1609624 5684432 1610128 5683904 1609464 5683512 1609360 5683512 +1609576 5684456 1609624 5684432 1609360 5683512 1608968 5684424 +1609624 5684432 1609360 5683512 1609576 5684456 1609520 5684536 +1609464 5683512 1609448 5683488 1609360 5683512 1609624 5684432 +1609624 5684432 1609744 5684472 1610160 5684024 1610128 5683904 +1609944 5684640 1609744 5684472 1609624 5684432 1609544 5684696 +1609744 5684472 1610160 5684024 1609624 5684432 1609544 5684696 +1609944 5684640 1610160 5684024 1609744 5684472 1609544 5684696 +1610160 5684024 1609744 5684472 1609944 5684640 1610288 5684272 +1610160 5684024 1609624 5684432 1609744 5684472 1610288 5684272 +1609744 5684472 1609544 5684696 1609944 5684640 1610288 5684272 +1609944 5684640 1610400 5684392 1610288 5684272 1609744 5684472 +1609944 5684640 1609744 5684472 1609544 5684696 1609752 5684832 +1609744 5684472 1609624 5684432 1609544 5684696 1609752 5684832 +1609944 5684640 1610288 5684272 1609744 5684472 1609752 5684832 +1609944 5684640 1609744 5684472 1609752 5684832 1610088 5684808 +1609624 5684432 1609520 5684536 1609544 5684696 1609744 5684472 +1609624 5684432 1609520 5684536 1609744 5684472 1610160 5684024 +1609544 5684696 1609752 5684832 1609744 5684472 1609520 5684536 +1609624 5684432 1609576 5684456 1609520 5684536 1609744 5684472 +1609624 5684432 1609576 5684456 1609744 5684472 1610160 5684024 +1609520 5684536 1609504 5684584 1609544 5684696 1609744 5684472 +1609520 5684536 1609544 5684696 1609744 5684472 1609576 5684456 +1609944 5684640 1609888 5684592 1609744 5684472 1609752 5684832 +1609888 5684592 1610288 5684272 1609744 5684472 1609752 5684832 +1609944 5684640 1610288 5684272 1609888 5684592 1609752 5684832 +1609744 5684472 1609888 5684592 1610288 5684272 1610160 5684024 +1610288 5684272 1609888 5684592 1609944 5684640 1610400 5684392 +1609944 5684640 1609888 5684592 1609752 5684832 1610088 5684808 +1609744 5684472 1609544 5684696 1609752 5684832 1609888 5684592 +1609744 5684472 1609520 5684536 1609544 5684696 1609888 5684592 +1609744 5684472 1609544 5684696 1609888 5684592 1610288 5684272 +1609752 5684832 1609944 5684640 1609888 5684592 1609544 5684696 +1608696 5684208 1608840 5683856 1609000 5683352 1608768 5683304 +1608696 5684208 1609264 5683496 1608840 5683856 1608768 5683304 +1608840 5683856 1609264 5683496 1609000 5683352 1608768 5683304 +1609264 5683496 1608840 5683856 1608696 5684208 1608968 5684424 +1608840 5683856 1608768 5683304 1608696 5684208 1608968 5684424 +1609264 5683496 1609000 5683352 1608840 5683856 1608968 5684424 +1609264 5683496 1608840 5683856 1608968 5684424 1609360 5683512 +1609264 5683496 1609000 5683352 1608840 5683856 1609360 5683512 +1608968 5684424 1609576 5684456 1609360 5683512 1608840 5683856 +1608968 5684424 1609032 5684488 1609576 5684456 1608840 5683856 +1609576 5684456 1609624 5684432 1609360 5683512 1608840 5683856 +1608840 5683856 1608696 5684208 1608968 5684424 1609576 5684456 +1609360 5683512 1609264 5683496 1608840 5683856 1609576 5684456 +1609000 5683352 1608864 5683304 1608768 5683304 1608840 5683856 +1609000 5683352 1608864 5683304 1608840 5683856 1609264 5683496 +1608768 5683304 1608696 5684208 1608840 5683856 1608864 5683304 +1608696 5684208 1608840 5683856 1608768 5683304 1608608 5683328 +1608696 5684208 1608968 5684424 1608840 5683856 1608608 5683328 +1608840 5683856 1608864 5683304 1608768 5683304 1608608 5683328 +1608696 5684208 1608840 5683856 1608608 5683328 1608368 5684000 +1608696 5684208 1608968 5684424 1608840 5683856 1608368 5684000 +1608608 5683328 1608232 5683800 1608368 5684000 1608840 5683856 +1608608 5683328 1608240 5683448 1608232 5683800 1608840 5683856 +1608232 5683800 1608272 5683896 1608368 5684000 1608840 5683856 +1608232 5683800 1608272 5683896 1608840 5683856 1608608 5683328 +1608368 5684000 1608696 5684208 1608840 5683856 1608272 5683896 +1608840 5683856 1608768 5683304 1608608 5683328 1608232 5683800 +1609576 5684456 1608856 5683856 1608840 5683856 1608968 5684424 +1608856 5683856 1609360 5683512 1608840 5683856 1608968 5684424 +1609576 5684456 1609360 5683512 1608856 5683856 1608968 5684424 +1609576 5684456 1608856 5683856 1608968 5684424 1609032 5684488 +1609360 5683512 1608856 5683856 1609576 5684456 1609624 5684432 +1608840 5683856 1608696 5684208 1608968 5684424 1608856 5683856 +1608840 5683856 1608368 5684000 1608696 5684208 1608856 5683856 +1608840 5683856 1608696 5684208 1608856 5683856 1609360 5683512 +1608968 5684424 1609576 5684456 1608856 5683856 1608696 5684208 +1608840 5683856 1608856 5683856 1609360 5683512 1609264 5683496 +1608840 5683856 1608696 5684208 1608856 5683856 1609264 5683496 +1608840 5683856 1608856 5683856 1609264 5683496 1609000 5683352 +1608840 5683856 1608856 5683856 1609000 5683352 1608864 5683304 +1608840 5683856 1608696 5684208 1608856 5683856 1609000 5683352 +1608856 5683856 1609576 5684456 1609360 5683512 1609264 5683496 +1608856 5683856 1609360 5683512 1609264 5683496 1609000 5683352 +1608856 5683856 1608880 5683872 1609360 5683512 1609264 5683496 +1608856 5683856 1609576 5684456 1608880 5683872 1609264 5683496 +1609576 5684456 1608880 5683872 1608856 5683856 1608968 5684424 +1608880 5683872 1609264 5683496 1608856 5683856 1608968 5684424 +1608880 5683872 1609576 5684456 1609360 5683512 1609264 5683496 +1609576 5684456 1609360 5683512 1608880 5683872 1608968 5684424 +1608856 5683856 1608696 5684208 1608968 5684424 1608880 5683872 +1608856 5683856 1608696 5684208 1608880 5683872 1609264 5683496 +1608968 5684424 1609576 5684456 1608880 5683872 1608696 5684208 +1609576 5684456 1608880 5683872 1608968 5684424 1609032 5684488 +1609360 5683512 1608880 5683872 1609576 5684456 1609624 5684432 +1608856 5683856 1608840 5683856 1608696 5684208 1608880 5683872 +1608840 5683856 1608368 5684000 1608696 5684208 1608880 5683872 +1608856 5683856 1608840 5683856 1608880 5683872 1609264 5683496 +1608696 5684208 1608968 5684424 1608880 5683872 1608840 5683856 +1608856 5683856 1608880 5683872 1609264 5683496 1609000 5683352 +1608880 5683872 1608944 5683904 1609360 5683512 1609264 5683496 +1608880 5683872 1608944 5683904 1609264 5683496 1608856 5683856 +1608880 5683872 1609576 5684456 1608944 5683904 1609264 5683496 +1609576 5684456 1608944 5683904 1608880 5683872 1608968 5684424 +1608880 5683872 1608696 5684208 1608968 5684424 1608944 5683904 +1608944 5683904 1609264 5683496 1608880 5683872 1608696 5684208 +1608968 5684424 1609576 5684456 1608944 5683904 1608696 5684208 +1608944 5683904 1609576 5684456 1609360 5683512 1609264 5683496 +1609576 5684456 1609360 5683512 1608944 5683904 1608968 5684424 +1608880 5683872 1608840 5683856 1608696 5684208 1608944 5683904 +1609576 5684456 1608944 5683904 1608968 5684424 1609032 5684488 +1609360 5683512 1608944 5683904 1609576 5684456 1609624 5684432 +1609360 5683512 1609264 5683496 1608944 5683904 1609624 5684432 +1608944 5683904 1608968 5684424 1609576 5684456 1609624 5684432 +1609360 5683512 1608944 5683904 1609624 5684432 1609464 5683512 +1609624 5684432 1610128 5683904 1609464 5683512 1608944 5683904 +1609360 5683512 1609264 5683496 1608944 5683904 1609464 5683512 +1608944 5683904 1609576 5684456 1609624 5684432 1609464 5683512 +1609360 5683512 1608944 5683904 1609464 5683512 1609448 5683488 +1609464 5683512 1608984 5683920 1609624 5684432 1610128 5683904 +1609624 5684432 1608984 5683920 1608944 5683904 1609576 5684456 +1608984 5683920 1609464 5683512 1608944 5683904 1609576 5684456 +1608944 5683904 1608968 5684424 1609576 5684456 1608984 5683920 +1608944 5683904 1608696 5684208 1608968 5684424 1608984 5683920 +1608944 5683904 1608880 5683872 1608696 5684208 1608984 5683920 +1608944 5683904 1608696 5684208 1608984 5683920 1609464 5683512 +1608968 5684424 1609576 5684456 1608984 5683920 1608696 5684208 +1609624 5684432 1609464 5683512 1608984 5683920 1609576 5684456 +1608968 5684424 1609032 5684488 1609576 5684456 1608984 5683920 +1608968 5684424 1609032 5684488 1608984 5683920 1608696 5684208 +1609032 5684488 1609520 5684536 1609576 5684456 1608984 5683920 +1609576 5684456 1609624 5684432 1608984 5683920 1609032 5684488 +1608944 5683904 1608984 5683920 1609464 5683512 1609360 5683512 +1608944 5683904 1608984 5683920 1609360 5683512 1609264 5683496 +1608944 5683904 1608984 5683920 1609264 5683496 1608880 5683872 +1608944 5683904 1608696 5684208 1608984 5683920 1609264 5683496 +1608984 5683920 1609624 5684432 1609464 5683512 1609360 5683512 +1608984 5683920 1609464 5683512 1609360 5683512 1609264 5683496 +1609464 5683512 1609448 5683488 1609360 5683512 1608984 5683920 +1608984 5683920 1609088 5684008 1609624 5684432 1609464 5683512 +1609624 5684432 1610128 5683904 1609464 5683512 1609088 5684008 +1608984 5683920 1609088 5684008 1609464 5683512 1609360 5683512 +1608984 5683920 1609576 5684456 1609088 5684008 1609360 5683512 +1609088 5684008 1609624 5684432 1609464 5683512 1609360 5683512 +1609088 5684008 1609576 5684456 1609624 5684432 1609464 5683512 +1609576 5684456 1609088 5684008 1608984 5683920 1609032 5684488 +1609088 5684008 1609360 5683512 1608984 5683920 1609032 5684488 +1609576 5684456 1609624 5684432 1609088 5684008 1609032 5684488 +1609576 5684456 1609088 5684008 1609032 5684488 1609520 5684536 +1608984 5683920 1608968 5684424 1609032 5684488 1609088 5684008 +1608984 5683920 1608696 5684208 1608968 5684424 1609088 5684008 +1608984 5683920 1608944 5683904 1608696 5684208 1609088 5684008 +1608984 5683920 1608696 5684208 1609088 5684008 1609360 5683512 +1608968 5684424 1609032 5684488 1609088 5684008 1608696 5684208 +1609032 5684488 1609576 5684456 1609088 5684008 1608968 5684424 +1608984 5683920 1609088 5684008 1609360 5683512 1609264 5683496 +1608984 5683920 1609088 5684008 1609264 5683496 1608944 5683904 +1609088 5684008 1609464 5683512 1609360 5683512 1609264 5683496 +1608984 5683920 1608696 5684208 1609088 5684008 1609264 5683496 +1609464 5683512 1609448 5683488 1609360 5683512 1609088 5684008 +1609088 5684008 1609112 5684048 1609576 5684456 1609624 5684432 +1609088 5684008 1609112 5684048 1609624 5684432 1609464 5683512 +1609624 5684432 1610128 5683904 1609464 5683512 1609112 5684048 +1609088 5684008 1609112 5684048 1609464 5683512 1609360 5683512 +1609088 5684008 1609112 5684048 1609360 5683512 1609264 5683496 +1609112 5684048 1609624 5684432 1609464 5683512 1609360 5683512 +1609088 5684008 1609032 5684488 1609112 5684048 1609360 5683512 +1609112 5684048 1609576 5684456 1609624 5684432 1609464 5683512 +1609112 5684048 1609032 5684488 1609576 5684456 1609624 5684432 +1609576 5684456 1609112 5684048 1609032 5684488 1609520 5684536 +1609032 5684488 1609112 5684048 1609088 5684008 1608968 5684424 +1609112 5684048 1609360 5683512 1609088 5684008 1608968 5684424 +1609032 5684488 1609576 5684456 1609112 5684048 1608968 5684424 +1609088 5684008 1608696 5684208 1608968 5684424 1609112 5684048 +1609088 5684008 1608984 5683920 1608696 5684208 1609112 5684048 +1609088 5684008 1608696 5684208 1609112 5684048 1609360 5683512 +1608968 5684424 1609032 5684488 1609112 5684048 1608696 5684208 +1609464 5683512 1609448 5683488 1609360 5683512 1609112 5684048 +1609112 5684048 1609136 5684096 1609576 5684456 1609624 5684432 +1609112 5684048 1609136 5684096 1609624 5684432 1609464 5683512 +1609624 5684432 1610128 5683904 1609464 5683512 1609136 5684096 +1609112 5684048 1609136 5684096 1609464 5683512 1609360 5683512 +1609136 5684096 1609576 5684456 1609624 5684432 1609464 5683512 +1609112 5684048 1609032 5684488 1609136 5684096 1609464 5683512 +1609032 5684488 1609136 5684096 1609112 5684048 1608968 5684424 +1609136 5684096 1609464 5683512 1609112 5684048 1608968 5684424 +1609136 5684096 1609032 5684488 1609576 5684456 1609624 5684432 +1609032 5684488 1609576 5684456 1609136 5684096 1608968 5684424 +1609576 5684456 1609136 5684096 1609032 5684488 1609520 5684536 +1609576 5684456 1609624 5684432 1609136 5684096 1609520 5684536 +1609136 5684096 1608968 5684424 1609032 5684488 1609520 5684536 +1609112 5684048 1608696 5684208 1608968 5684424 1609136 5684096 +1609112 5684048 1608696 5684208 1609136 5684096 1609464 5683512 +1608968 5684424 1609032 5684488 1609136 5684096 1608696 5684208 +1609112 5684048 1609088 5684008 1608696 5684208 1609136 5684096 +1609032 5684488 1609072 5684560 1609520 5684536 1609136 5684096 +1609032 5684488 1609144 5684144 1609136 5684096 1608968 5684424 +1609136 5684096 1608696 5684208 1608968 5684424 1609144 5684144 +1609144 5684144 1609520 5684536 1609136 5684096 1608696 5684208 +1608968 5684424 1609032 5684488 1609144 5684144 1608696 5684208 +1609032 5684488 1609520 5684536 1609144 5684144 1608968 5684424 +1609136 5684096 1609144 5684144 1609520 5684536 1609576 5684456 +1609136 5684096 1609144 5684144 1609576 5684456 1609624 5684432 +1609136 5684096 1609144 5684144 1609624 5684432 1609464 5683512 +1609136 5684096 1608696 5684208 1609144 5684144 1609624 5684432 +1609144 5684144 1609032 5684488 1609520 5684536 1609576 5684456 +1609144 5684144 1609520 5684536 1609576 5684456 1609624 5684432 +1609136 5684096 1609112 5684048 1608696 5684208 1609144 5684144 +1608696 5684208 1608968 5684424 1609144 5684144 1609112 5684048 +1609136 5684096 1609112 5684048 1609144 5684144 1609624 5684432 +1609112 5684048 1609088 5684008 1608696 5684208 1609144 5684144 +1609520 5684536 1609144 5684144 1609032 5684488 1609072 5684560 +1609144 5684144 1609144 5684200 1609520 5684536 1609576 5684456 +1609144 5684144 1609032 5684488 1609144 5684200 1609576 5684456 +1609032 5684488 1609144 5684200 1609144 5684144 1608968 5684424 +1609144 5684144 1608696 5684208 1608968 5684424 1609144 5684200 +1609144 5684144 1609112 5684048 1608696 5684208 1609144 5684200 +1609144 5684200 1609576 5684456 1609144 5684144 1608696 5684208 +1608968 5684424 1609032 5684488 1609144 5684200 1608696 5684208 +1609144 5684200 1609032 5684488 1609520 5684536 1609576 5684456 +1609032 5684488 1609520 5684536 1609144 5684200 1608968 5684424 +1609144 5684144 1609144 5684200 1609576 5684456 1609624 5684432 +1609520 5684536 1609144 5684200 1609032 5684488 1609072 5684560 +1609520 5684536 1609576 5684456 1609144 5684200 1609072 5684560 +1609144 5684200 1608968 5684424 1609032 5684488 1609072 5684560 +1609520 5684536 1609144 5684200 1609072 5684560 1609120 5684624 +1609032 5684488 1609128 5684248 1609144 5684200 1608968 5684424 +1609144 5684200 1608696 5684208 1608968 5684424 1609128 5684248 +1609144 5684200 1609144 5684144 1608696 5684208 1609128 5684248 +1609144 5684144 1609112 5684048 1608696 5684208 1609128 5684248 +1609144 5684144 1609112 5684048 1609128 5684248 1609144 5684200 +1608696 5684208 1608968 5684424 1609128 5684248 1609112 5684048 +1609128 5684248 1609072 5684560 1609144 5684200 1609144 5684144 +1608968 5684424 1609032 5684488 1609128 5684248 1608696 5684208 +1609032 5684488 1609072 5684560 1609128 5684248 1608968 5684424 +1609112 5684048 1609088 5684008 1608696 5684208 1609128 5684248 +1609144 5684144 1609136 5684096 1609112 5684048 1609128 5684248 +1609144 5684200 1609128 5684248 1609072 5684560 1609520 5684536 +1609144 5684200 1609128 5684248 1609520 5684536 1609576 5684456 +1609144 5684200 1609128 5684248 1609576 5684456 1609144 5684144 +1609144 5684200 1609144 5684144 1609128 5684248 1609576 5684456 +1609128 5684248 1609032 5684488 1609072 5684560 1609520 5684536 +1609072 5684560 1609120 5684624 1609520 5684536 1609128 5684248 +1609128 5684248 1609072 5684560 1609520 5684536 1609576 5684456 +1608968 5684424 1609096 5684288 1609128 5684248 1608696 5684208 +1609128 5684248 1609112 5684048 1608696 5684208 1609096 5684288 +1609128 5684248 1609144 5684144 1609112 5684048 1609096 5684288 +1609128 5684248 1609144 5684200 1609144 5684144 1609096 5684288 +1609144 5684144 1609112 5684048 1609096 5684288 1609144 5684200 +1609112 5684048 1608696 5684208 1609096 5684288 1609144 5684144 +1608696 5684208 1608968 5684424 1609096 5684288 1609112 5684048 +1609096 5684288 1609032 5684488 1609128 5684248 1609144 5684200 +1609128 5684248 1609096 5684288 1609032 5684488 1609072 5684560 +1609128 5684248 1609096 5684288 1609072 5684560 1609520 5684536 +1609128 5684248 1609144 5684200 1609096 5684288 1609520 5684536 +1609096 5684288 1609032 5684488 1609072 5684560 1609520 5684536 +1609096 5684288 1608968 5684424 1609032 5684488 1609072 5684560 +1608968 5684424 1609032 5684488 1609096 5684288 1608696 5684208 +1609072 5684560 1609120 5684624 1609520 5684536 1609096 5684288 +1609112 5684048 1609088 5684008 1608696 5684208 1609096 5684288 +1609144 5684144 1609136 5684096 1609112 5684048 1609096 5684288 +1609128 5684248 1609096 5684288 1609520 5684536 1609576 5684456 +1608696 5684208 1609064 5684312 1609096 5684288 1609112 5684048 +1609096 5684288 1609144 5684144 1609112 5684048 1609064 5684312 +1609096 5684288 1609144 5684200 1609144 5684144 1609064 5684312 +1609112 5684048 1608696 5684208 1609064 5684312 1609144 5684144 +1609064 5684312 1608968 5684424 1609096 5684288 1609144 5684144 +1609096 5684288 1609064 5684312 1608968 5684424 1609032 5684488 +1609096 5684288 1609064 5684312 1609032 5684488 1609072 5684560 +1609096 5684288 1609144 5684144 1609064 5684312 1609032 5684488 +1609064 5684312 1608696 5684208 1608968 5684424 1609032 5684488 +1608696 5684208 1608968 5684424 1609064 5684312 1609112 5684048 +1608696 5684208 1609064 5684312 1609112 5684048 1609088 5684008 +1609144 5684144 1609136 5684096 1609112 5684048 1609064 5684312 +1609064 5684312 1609032 5684312 1608968 5684424 1609032 5684488 +1608696 5684208 1609032 5684312 1609064 5684312 1609112 5684048 +1609064 5684312 1609144 5684144 1609112 5684048 1609032 5684312 +1609064 5684312 1609096 5684288 1609144 5684144 1609032 5684312 +1609096 5684288 1609144 5684200 1609144 5684144 1609032 5684312 +1609096 5684288 1609128 5684248 1609144 5684200 1609032 5684312 +1609144 5684200 1609144 5684144 1609032 5684312 1609128 5684248 +1609096 5684288 1609128 5684248 1609032 5684312 1609064 5684312 +1609144 5684144 1609112 5684048 1609032 5684312 1609144 5684200 +1609032 5684312 1608968 5684424 1609064 5684312 1609096 5684288 +1609112 5684048 1608696 5684208 1609032 5684312 1609144 5684144 +1608696 5684208 1608968 5684424 1609032 5684312 1609112 5684048 +1608696 5684208 1609032 5684312 1609112 5684048 1609088 5684008 +1608696 5684208 1609032 5684312 1609088 5684008 1608984 5683920 +1609032 5684312 1609144 5684144 1609112 5684048 1609088 5684008 +1608696 5684208 1608968 5684424 1609032 5684312 1609088 5684008 +1609144 5684144 1609136 5684096 1609112 5684048 1609032 5684312 +1608696 5684208 1608960 5684256 1609088 5684008 1608984 5683920 +1608696 5684208 1608960 5684256 1608984 5683920 1608944 5683904 +1608696 5684208 1608960 5684256 1608944 5683904 1608880 5683872 +1608960 5684256 1609088 5684008 1608984 5683920 1608944 5683904 +1609032 5684312 1608960 5684256 1608696 5684208 1608968 5684424 +1609032 5684312 1608960 5684256 1608968 5684424 1609064 5684312 +1609032 5684312 1609088 5684008 1608960 5684256 1608968 5684424 +1608696 5684208 1608968 5684424 1608960 5684256 1608944 5683904 +1608960 5684256 1609032 5684312 1609088 5684008 1608984 5683920 +1609088 5684008 1608960 5684256 1609032 5684312 1609112 5684048 +1609032 5684312 1609144 5684144 1609112 5684048 1608960 5684256 +1609032 5684312 1609144 5684200 1609144 5684144 1608960 5684256 +1609032 5684312 1609128 5684248 1609144 5684200 1608960 5684256 +1609032 5684312 1609096 5684288 1609128 5684248 1608960 5684256 +1609128 5684248 1609144 5684200 1608960 5684256 1609096 5684288 +1609032 5684312 1609064 5684312 1609096 5684288 1608960 5684256 +1609144 5684200 1609144 5684144 1608960 5684256 1609128 5684248 +1609144 5684144 1609112 5684048 1608960 5684256 1609144 5684200 +1608960 5684256 1608968 5684424 1609032 5684312 1609096 5684288 +1609088 5684008 1608984 5683920 1608960 5684256 1609112 5684048 +1609112 5684048 1609088 5684008 1608960 5684256 1609144 5684144 +1609144 5684144 1609136 5684096 1609112 5684048 1608960 5684256 +1609144 5684144 1609136 5684096 1608960 5684256 1609144 5684200 +1609112 5684048 1609088 5684008 1608960 5684256 1609136 5684096 +1608696 5684208 1608896 5684208 1608944 5683904 1608880 5683872 +1608944 5683904 1608896 5684208 1608960 5684256 1608984 5683920 +1608960 5684256 1609088 5684008 1608984 5683920 1608896 5684208 +1608984 5683920 1608944 5683904 1608896 5684208 1609088 5684008 +1608960 5684256 1608896 5684208 1608696 5684208 1608968 5684424 +1608960 5684256 1608896 5684208 1608968 5684424 1609032 5684312 +1608896 5684208 1608968 5684424 1608960 5684256 1609088 5684008 +1608960 5684256 1609112 5684048 1609088 5684008 1608896 5684208 +1609088 5684008 1608984 5683920 1608896 5684208 1609112 5684048 +1608960 5684256 1609112 5684048 1608896 5684208 1608968 5684424 +1608696 5684208 1608968 5684424 1608896 5684208 1608880 5683872 +1608896 5684208 1608984 5683920 1608944 5683904 1608880 5683872 +1608696 5684208 1608896 5684208 1608880 5683872 1608840 5683856 +1608960 5684256 1609136 5684096 1609112 5684048 1608896 5684208 +1608880 5683872 1608832 5684152 1608896 5684208 1608944 5683904 +1608896 5684208 1608832 5684152 1608696 5684208 1608968 5684424 +1608832 5684152 1608696 5684208 1608896 5684208 1608944 5683904 +1608896 5684208 1608984 5683920 1608944 5683904 1608832 5684152 +1608944 5683904 1608880 5683872 1608832 5684152 1608984 5683920 +1608896 5684208 1609088 5684008 1608984 5683920 1608832 5684152 +1608896 5684208 1609112 5684048 1609088 5684008 1608832 5684152 +1608896 5684208 1609088 5684008 1608832 5684152 1608696 5684208 +1608984 5683920 1608944 5683904 1608832 5684152 1609088 5684008 +1608880 5683872 1608696 5684208 1608832 5684152 1608944 5683904 +1608696 5684208 1608832 5684152 1608880 5683872 1608840 5683856 +1608696 5684208 1608832 5684152 1608840 5683856 1608368 5684000 +1608696 5684208 1608896 5684208 1608832 5684152 1608840 5683856 +1608832 5684152 1608944 5683904 1608880 5683872 1608840 5683856 +1608880 5683872 1608856 5683856 1608840 5683856 1608832 5684152 +1608696 5684208 1608784 5684104 1608840 5683856 1608368 5684000 +1608832 5684152 1608784 5684104 1608696 5684208 1608896 5684208 +1608696 5684208 1608832 5684152 1608784 5684104 1608368 5684000 +1608784 5684104 1608832 5684152 1608840 5683856 1608368 5684000 +1608840 5683856 1608784 5684104 1608832 5684152 1608880 5683872 +1608784 5684104 1608696 5684208 1608832 5684152 1608880 5683872 +1608832 5684152 1608944 5683904 1608880 5683872 1608784 5684104 +1608832 5684152 1608984 5683920 1608944 5683904 1608784 5684104 +1608832 5684152 1608944 5683904 1608784 5684104 1608696 5684208 +1608840 5683856 1608368 5684000 1608784 5684104 1608880 5683872 +1608880 5683872 1608840 5683856 1608784 5684104 1608944 5683904 +1608840 5683856 1608272 5683896 1608368 5684000 1608784 5684104 +1608840 5683856 1608784 5684104 1608880 5683872 1608856 5683856 +1608784 5684104 1608768 5684064 1608368 5684000 1608696 5684208 +1608784 5684104 1608768 5684064 1608696 5684208 1608832 5684152 +1608784 5684104 1608840 5683856 1608768 5684064 1608696 5684208 +1608840 5683856 1608768 5684064 1608784 5684104 1608880 5683872 +1608768 5684064 1608696 5684208 1608784 5684104 1608880 5683872 +1608768 5684064 1608840 5683856 1608368 5684000 1608696 5684208 +1608840 5683856 1608368 5684000 1608768 5684064 1608880 5683872 +1608784 5684104 1608944 5683904 1608880 5683872 1608768 5684064 +1608784 5684104 1608832 5684152 1608944 5683904 1608768 5684064 +1608784 5684104 1608944 5683904 1608768 5684064 1608696 5684208 +1608880 5683872 1608840 5683856 1608768 5684064 1608944 5683904 +1608368 5684000 1608768 5684064 1608840 5683856 1608272 5683896 +1608840 5683856 1608768 5684064 1608880 5683872 1608856 5683856 +1608768 5684064 1608752 5684008 1608368 5684000 1608696 5684208 +1608768 5684064 1608752 5684008 1608696 5684208 1608784 5684104 +1608768 5684064 1608840 5683856 1608752 5684008 1608696 5684208 +1608840 5683856 1608752 5684008 1608768 5684064 1608880 5683872 +1608768 5684064 1608944 5683904 1608880 5683872 1608752 5684008 +1608752 5684008 1608696 5684208 1608768 5684064 1608944 5683904 +1608880 5683872 1608840 5683856 1608752 5684008 1608944 5683904 +1608752 5684008 1608840 5683856 1608368 5684000 1608696 5684208 +1608768 5684064 1608784 5684104 1608944 5683904 1608752 5684008 +1608368 5684000 1608752 5684008 1608840 5683856 1608272 5683896 +1608840 5683856 1608752 5684008 1608880 5683872 1608856 5683856 +1608840 5683856 1608368 5684000 1608752 5684008 1608880 5683872 +1608752 5684008 1608744 5683960 1608368 5684000 1608696 5684208 +1608368 5684000 1608744 5683960 1608840 5683856 1608272 5683896 +1608840 5683856 1608232 5683800 1608272 5683896 1608744 5683960 +1608840 5683856 1608608 5683328 1608232 5683800 1608744 5683960 +1608272 5683896 1608368 5684000 1608744 5683960 1608232 5683800 +1608840 5683856 1608744 5683960 1608752 5684008 1608880 5683872 +1608752 5684008 1608944 5683904 1608880 5683872 1608744 5683960 +1608840 5683856 1608744 5683960 1608880 5683872 1608856 5683856 +1608744 5683960 1608368 5684000 1608752 5684008 1608880 5683872 +1608368 5684000 1608752 5684008 1608744 5683960 1608272 5683896 +1608744 5683960 1608880 5683872 1608840 5683856 1608232 5683800 +1608232 5683800 1608744 5683928 1608840 5683856 1608608 5683328 +1608232 5683800 1608744 5683928 1608608 5683328 1608240 5683448 +1608744 5683960 1608744 5683928 1608232 5683800 1608272 5683896 +1608744 5683960 1608744 5683928 1608272 5683896 1608368 5684000 +1608744 5683928 1608232 5683800 1608272 5683896 1608368 5684000 +1608840 5683856 1608768 5683304 1608608 5683328 1608744 5683928 +1608744 5683960 1608744 5683928 1608368 5684000 1608752 5684008 +1608744 5683960 1608840 5683856 1608744 5683928 1608368 5684000 +1608840 5683856 1608744 5683928 1608744 5683960 1608880 5683872 +1608840 5683856 1608744 5683928 1608880 5683872 1608856 5683856 +1608744 5683960 1608752 5684008 1608880 5683872 1608744 5683928 +1608744 5683928 1608368 5684000 1608744 5683960 1608880 5683872 +1608232 5683800 1608272 5683896 1608744 5683928 1608608 5683328 +1608744 5683928 1608880 5683872 1608840 5683856 1608608 5683328 +1608744 5683928 1608760 5683888 1608608 5683328 1608232 5683800 +1608608 5683328 1608240 5683448 1608232 5683800 1608760 5683888 +1608608 5683328 1608760 5683888 1608840 5683856 1608768 5683304 +1608744 5683928 1608760 5683888 1608232 5683800 1608272 5683896 +1608760 5683888 1608608 5683328 1608232 5683800 1608272 5683896 +1608744 5683928 1608760 5683888 1608272 5683896 1608368 5684000 +1608744 5683928 1608760 5683888 1608368 5684000 1608744 5683960 +1608760 5683888 1608232 5683800 1608272 5683896 1608368 5684000 +1608744 5683928 1608840 5683856 1608760 5683888 1608368 5684000 +1608840 5683856 1608760 5683888 1608744 5683928 1608880 5683872 +1608760 5683888 1608840 5683856 1608608 5683328 1608232 5683800 +1608760 5683888 1608752 5683872 1608232 5683800 1608272 5683896 +1608232 5683800 1608752 5683872 1608608 5683328 1608240 5683448 +1608760 5683888 1608752 5683872 1608272 5683896 1608368 5684000 +1608752 5683872 1608232 5683800 1608272 5683896 1608368 5684000 +1608760 5683888 1608752 5683872 1608368 5684000 1608744 5683928 +1608368 5684000 1608744 5683960 1608744 5683928 1608752 5683872 +1608752 5683872 1608272 5683896 1608368 5684000 1608744 5683928 +1608608 5683328 1608752 5683872 1608760 5683888 1608840 5683856 +1608608 5683328 1608752 5683872 1608840 5683856 1608768 5683304 +1608840 5683856 1608864 5683304 1608768 5683304 1608752 5683872 +1608752 5683872 1608760 5683888 1608840 5683856 1608768 5683304 +1608760 5683888 1608840 5683856 1608752 5683872 1608744 5683928 +1608760 5683888 1608744 5683928 1608840 5683856 1608752 5683872 +1608752 5683872 1608608 5683328 1608232 5683800 1608272 5683896 +1608608 5683328 1608232 5683800 1608752 5683872 1608768 5683304 +1620552 5714440 1625960 5713048 1627296 5706984 1620512 5714368 +1627296 5706984 1620160 5713848 1620512 5714368 1625960 5713048 +1620512 5714368 1620552 5714440 1625960 5713048 1620160 5713848 +1627296 5706984 1625960 5713048 1627312 5719640 1627328 5706984 +1627312 5719640 1625960 5713048 1620552 5714440 1620560 5714512 +1627312 5719640 1627336 5719640 1627328 5706984 1625960 5713048 +1627328 5706984 1627296 5706984 1625960 5713048 1627336 5719640 +1627336 5719640 1629808 5706208 1627328 5706984 1625960 5713048 +1627328 5706984 1627296 5706984 1625960 5713048 1629808 5706208 +1627336 5719640 1627384 5719672 1629808 5706208 1625960 5713048 +1627384 5719672 1627448 5719792 1629808 5706208 1625960 5713048 +1629808 5706208 1627328 5706984 1625960 5713048 1627384 5719672 +1627336 5719640 1627384 5719672 1625960 5713048 1627312 5719640 +1627296 5706984 1627272 5706968 1620160 5713848 1625960 5713048 +1620160 5713848 1620512 5714368 1625960 5713048 1627272 5706968 +1627272 5706968 1620104 5713768 1620160 5713848 1625960 5713048 +1620160 5713848 1620512 5714368 1625960 5713048 1620104 5713768 +1627272 5706968 1620104 5713768 1625960 5713048 1627296 5706984 +1627312 5719640 1625960 5713048 1620560 5714512 1620872 5716832 +1627312 5719640 1625960 5713048 1620872 5716832 1620896 5716896 +1627312 5719640 1625960 5713048 1620896 5716896 1620928 5717008 +1625960 5713048 1620872 5716832 1620896 5716896 1620928 5717008 +1627312 5719640 1625960 5713048 1620928 5717008 1627280 5719664 +1625960 5713048 1620896 5716896 1620928 5717008 1627280 5719664 +1625960 5713048 1620552 5714440 1620560 5714512 1620872 5716832 +1620928 5717008 1626912 5719928 1627280 5719664 1625960 5713048 +1626912 5719928 1627232 5719704 1627280 5719664 1625960 5713048 +1620928 5717008 1626912 5719928 1625960 5713048 1620896 5716896 +1627280 5719664 1627312 5719640 1625960 5713048 1626912 5719928 +1620928 5717008 1620920 5717216 1626912 5719928 1625960 5713048 +1625960 5713048 1620560 5714512 1620872 5716832 1620896 5716896 +1629808 5706208 1627368 5706952 1627328 5706984 1625960 5713048 +1620560 5714512 1620856 5716800 1620872 5716832 1625960 5713048 +1620560 5714512 1620856 5716800 1625960 5713048 1620552 5714440 +1620560 5714512 1620520 5714728 1620856 5716800 1625960 5713048 +1620560 5714512 1620520 5714728 1625960 5713048 1620552 5714440 +1620872 5716832 1620896 5716896 1625960 5713048 1620856 5716800 +1620856 5716800 1620872 5716832 1625960 5713048 1620520 5714728 +1620160 5713848 1620272 5714120 1620512 5714368 1625960 5713048 +1627272 5706968 1620040 5713712 1620104 5713768 1625960 5713048 +1627272 5706968 1627248 5706936 1620040 5713712 1625960 5713048 +1620104 5713768 1620160 5713848 1625960 5713048 1620040 5713712 +1620040 5713712 1620072 5713752 1620104 5713768 1625960 5713048 +1627272 5706968 1627248 5706936 1625960 5713048 1627296 5706984 +1620040 5713712 1620104 5713768 1625960 5713048 1627248 5706936 +1627248 5706936 1618184 5707576 1620040 5713712 1625960 5713048 +1627248 5706936 1618184 5707576 1625960 5713048 1627272 5706968 +1618184 5707576 1618264 5711808 1620040 5713712 1625960 5713048 +1627248 5706936 1627208 5706856 1618184 5707576 1625960 5713048 +1620040 5713712 1620104 5713768 1625960 5713048 1618184 5707576 +1620520 5714728 1620768 5716712 1620856 5716800 1625960 5713048 +1625960 5713048 1627280 5719664 1627312 5719640 1627336 5719640 +1620552 5714440 1620560 5714512 1625960 5713048 1620512 5714368 +1625960 5713048 1627328 5706984 1627296 5706984 1627272 5706968 +1629808 5706208 1626080 5713112 1627384 5719672 1627448 5719792 +1627384 5719672 1626080 5713112 1625960 5713048 1627336 5719640 +1625960 5713048 1626080 5713112 1629808 5706208 1627328 5706984 +1625960 5713048 1626080 5713112 1627328 5706984 1627296 5706984 +1625960 5713048 1627312 5719640 1627336 5719640 1626080 5713112 +1627336 5719640 1627384 5719672 1626080 5713112 1627312 5719640 +1629808 5706208 1627368 5706952 1627328 5706984 1626080 5713112 +1625960 5713048 1627280 5719664 1627312 5719640 1626080 5713112 +1625960 5713048 1626912 5719928 1627280 5719664 1626080 5713112 +1626912 5719928 1627232 5719704 1627280 5719664 1626080 5713112 +1627312 5719640 1627336 5719640 1626080 5713112 1627280 5719664 +1625960 5713048 1620928 5717008 1626912 5719928 1626080 5713112 +1625960 5713048 1620896 5716896 1620928 5717008 1626080 5713112 +1626912 5719928 1627280 5719664 1626080 5713112 1620928 5717008 +1620928 5717008 1620920 5717216 1626912 5719928 1626080 5713112 +1627280 5719664 1627312 5719640 1626080 5713112 1626912 5719928 +1626080 5713112 1627328 5706984 1625960 5713048 1620928 5717008 +1626080 5713112 1627384 5719672 1629808 5706208 1627328 5706984 +1627384 5719672 1629808 5706208 1626080 5713112 1627336 5719640 +1629808 5706208 1626280 5713256 1627384 5719672 1627448 5719792 +1629808 5706208 1626280 5713256 1627448 5719792 1629904 5706120 +1626280 5713256 1627384 5719672 1627448 5719792 1629904 5706120 +1627384 5719672 1627400 5719704 1627448 5719792 1626280 5713256 +1629808 5706208 1626280 5713256 1629904 5706120 1629824 5706192 +1626080 5713112 1626280 5713256 1629808 5706208 1627328 5706984 +1626080 5713112 1626280 5713256 1627328 5706984 1625960 5713048 +1629808 5706208 1627368 5706952 1627328 5706984 1626280 5713256 +1626080 5713112 1627384 5719672 1626280 5713256 1627328 5706984 +1627384 5719672 1626280 5713256 1626080 5713112 1627336 5719640 +1626080 5713112 1627312 5719640 1627336 5719640 1626280 5713256 +1626080 5713112 1627280 5719664 1627312 5719640 1626280 5713256 +1627312 5719640 1627336 5719640 1626280 5713256 1627280 5719664 +1626080 5713112 1626912 5719928 1627280 5719664 1626280 5713256 +1626912 5719928 1627232 5719704 1627280 5719664 1626280 5713256 +1626080 5713112 1620928 5717008 1626912 5719928 1626280 5713256 +1627280 5719664 1627312 5719640 1626280 5713256 1626912 5719928 +1626080 5713112 1625960 5713048 1620928 5717008 1626280 5713256 +1625960 5713048 1620896 5716896 1620928 5717008 1626280 5713256 +1620928 5717008 1626912 5719928 1626280 5713256 1625960 5713048 +1620928 5717008 1620920 5717216 1626912 5719928 1626280 5713256 +1626912 5719928 1627280 5719664 1626280 5713256 1620928 5717008 +1626280 5713256 1627328 5706984 1626080 5713112 1625960 5713048 +1627336 5719640 1627384 5719672 1626280 5713256 1627312 5719640 +1629808 5706208 1627328 5706984 1626280 5713256 1629904 5706120 +1626280 5713256 1627336 5719640 1627384 5719672 1627448 5719792 +1627448 5719792 1629984 5706008 1629904 5706120 1626280 5713256 +1627448 5719792 1626344 5713272 1626280 5713256 1627384 5719672 +1626280 5713256 1626344 5713272 1629904 5706120 1629808 5706208 +1627448 5719792 1626344 5713272 1627384 5719672 1627400 5719704 +1629904 5706120 1629824 5706192 1629808 5706208 1626344 5713272 +1626280 5713256 1626344 5713272 1629808 5706208 1627328 5706984 +1626344 5713272 1629904 5706120 1629808 5706208 1627328 5706984 +1629808 5706208 1627368 5706952 1627328 5706984 1626344 5713272 +1626280 5713256 1626344 5713272 1627328 5706984 1626080 5713112 +1627328 5706984 1625960 5713048 1626080 5713112 1626344 5713272 +1626344 5713272 1629808 5706208 1627328 5706984 1626080 5713112 +1626344 5713272 1626080 5713112 1626280 5713256 1627384 5719672 +1626280 5713256 1627336 5719640 1627384 5719672 1626344 5713272 +1627384 5719672 1627448 5719792 1626344 5713272 1627336 5719640 +1626280 5713256 1627312 5719640 1627336 5719640 1626344 5713272 +1626280 5713256 1627280 5719664 1627312 5719640 1626344 5713272 +1626280 5713256 1627312 5719640 1626344 5713272 1626080 5713112 +1627336 5719640 1627384 5719672 1626344 5713272 1627312 5719640 +1626344 5713272 1627448 5719792 1629904 5706120 1629808 5706208 +1627448 5719792 1629904 5706120 1626344 5713272 1627384 5719672 +1629904 5706120 1626344 5713272 1627448 5719792 1629984 5706008 +1626344 5713272 1626440 5713328 1629904 5706120 1629808 5706208 +1626344 5713272 1626440 5713328 1629808 5706208 1627328 5706984 +1629808 5706208 1627368 5706952 1627328 5706984 1626440 5713328 +1629904 5706120 1629824 5706192 1629808 5706208 1626440 5713328 +1626344 5713272 1626440 5713328 1627328 5706984 1626080 5713112 +1626440 5713328 1629904 5706120 1629808 5706208 1627328 5706984 +1626344 5713272 1627448 5719792 1626440 5713328 1627328 5706984 +1627448 5719792 1626440 5713328 1626344 5713272 1627384 5719672 +1626344 5713272 1627336 5719640 1627384 5719672 1626440 5713328 +1627448 5719792 1626440 5713328 1627384 5719672 1627400 5719704 +1626344 5713272 1627312 5719640 1627336 5719640 1626440 5713328 +1627336 5719640 1627384 5719672 1626440 5713328 1627312 5719640 +1626344 5713272 1626280 5713256 1627312 5719640 1626440 5713328 +1626280 5713256 1627280 5719664 1627312 5719640 1626440 5713328 +1626280 5713256 1626912 5719928 1627280 5719664 1626440 5713328 +1626912 5719928 1627232 5719704 1627280 5719664 1626440 5713328 +1627280 5719664 1627312 5719640 1626440 5713328 1626912 5719928 +1626280 5713256 1620928 5717008 1626912 5719928 1626440 5713328 +1626280 5713256 1626912 5719928 1626440 5713328 1626344 5713272 +1627312 5719640 1627336 5719640 1626440 5713328 1627280 5719664 +1626440 5713328 1627328 5706984 1626344 5713272 1626280 5713256 +1627384 5719672 1627448 5719792 1626440 5713328 1627336 5719640 +1626440 5713328 1627448 5719792 1629904 5706120 1629808 5706208 +1627448 5719792 1629904 5706120 1626440 5713328 1627384 5719672 +1629904 5706120 1626440 5713328 1627448 5719792 1629984 5706008 +1626440 5713328 1626480 5713384 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1626480 5713384 +1626440 5713328 1626480 5713384 1629808 5706208 1627328 5706984 +1626440 5713328 1627448 5719792 1626480 5713384 1629808 5706208 +1627448 5719792 1626480 5713384 1626440 5713328 1627384 5719672 +1627448 5719792 1626480 5713384 1627384 5719672 1627400 5719704 +1626440 5713328 1627336 5719640 1627384 5719672 1626480 5713384 +1626440 5713328 1627312 5719640 1627336 5719640 1626480 5713384 +1626440 5713328 1627280 5719664 1627312 5719640 1626480 5713384 +1627312 5719640 1627336 5719640 1626480 5713384 1627280 5719664 +1626440 5713328 1626912 5719928 1627280 5719664 1626480 5713384 +1626912 5719928 1627232 5719704 1627280 5719664 1626480 5713384 +1626440 5713328 1626280 5713256 1626912 5719928 1626480 5713384 +1626912 5719928 1627280 5719664 1626480 5713384 1626280 5713256 +1626280 5713256 1620928 5717008 1626912 5719928 1626480 5713384 +1626280 5713256 1625960 5713048 1620928 5717008 1626480 5713384 +1626912 5719928 1627280 5719664 1626480 5713384 1620928 5717008 +1626280 5713256 1620928 5717008 1626480 5713384 1626440 5713328 +1620928 5717008 1620920 5717216 1626912 5719928 1626480 5713384 +1626440 5713328 1626344 5713272 1626280 5713256 1626480 5713384 +1626280 5713256 1620928 5717008 1626480 5713384 1626344 5713272 +1627280 5719664 1627312 5719640 1626480 5713384 1626912 5719928 +1627336 5719640 1627384 5719672 1626480 5713384 1627312 5719640 +1626480 5713384 1629808 5706208 1626440 5713328 1626344 5713272 +1627384 5719672 1627448 5719792 1626480 5713384 1627336 5719640 +1626480 5713384 1627448 5719792 1629904 5706120 1629808 5706208 +1627448 5719792 1629904 5706120 1626480 5713384 1627384 5719672 +1629904 5706120 1626480 5713384 1627448 5719792 1629984 5706008 +1626480 5713384 1626496 5713456 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1626496 5713456 +1626480 5713384 1626496 5713456 1629808 5706208 1626440 5713328 +1626480 5713384 1627448 5719792 1626496 5713456 1629808 5706208 +1627448 5719792 1626496 5713456 1626480 5713384 1627384 5719672 +1627448 5719792 1626496 5713456 1627384 5719672 1627400 5719704 +1626480 5713384 1627336 5719640 1627384 5719672 1626496 5713456 +1626480 5713384 1627312 5719640 1627336 5719640 1626496 5713456 +1626480 5713384 1627280 5719664 1627312 5719640 1626496 5713456 +1626480 5713384 1626912 5719928 1627280 5719664 1626496 5713456 +1626912 5719928 1627232 5719704 1627280 5719664 1626496 5713456 +1627280 5719664 1627312 5719640 1626496 5713456 1626912 5719928 +1626480 5713384 1620928 5717008 1626912 5719928 1626496 5713456 +1620928 5717008 1620920 5717216 1626912 5719928 1626496 5713456 +1626480 5713384 1626280 5713256 1620928 5717008 1626496 5713456 +1626280 5713256 1625960 5713048 1620928 5717008 1626496 5713456 +1625960 5713048 1620896 5716896 1620928 5717008 1626496 5713456 +1625960 5713048 1620872 5716832 1620896 5716896 1626496 5713456 +1625960 5713048 1620896 5716896 1626496 5713456 1626280 5713256 +1620928 5717008 1626912 5719928 1626496 5713456 1620896 5716896 +1626480 5713384 1626344 5713272 1626280 5713256 1626496 5713456 +1626280 5713256 1626080 5713112 1625960 5713048 1626496 5713456 +1626280 5713256 1625960 5713048 1626496 5713456 1626344 5713272 +1626480 5713384 1626440 5713328 1626344 5713272 1626496 5713456 +1626344 5713272 1626280 5713256 1626496 5713456 1626440 5713328 +1626912 5719928 1627280 5719664 1626496 5713456 1620928 5717008 +1627312 5719640 1627336 5719640 1626496 5713456 1627280 5719664 +1627336 5719640 1627384 5719672 1626496 5713456 1627312 5719640 +1626496 5713456 1629808 5706208 1626480 5713384 1626440 5713328 +1627384 5719672 1627448 5719792 1626496 5713456 1627336 5719640 +1626496 5713456 1627448 5719792 1629904 5706120 1629808 5706208 +1627448 5719792 1629904 5706120 1626496 5713456 1627384 5719672 +1629904 5706120 1626496 5713456 1627448 5719792 1629984 5706008 +1620928 5717008 1626472 5713592 1626496 5713456 1620896 5716896 +1626496 5713456 1625960 5713048 1620896 5716896 1626472 5713592 +1625960 5713048 1620872 5716832 1620896 5716896 1626472 5713592 +1625960 5713048 1620872 5716832 1626472 5713592 1626496 5713456 +1626496 5713456 1626280 5713256 1625960 5713048 1626472 5713592 +1625960 5713048 1620872 5716832 1626472 5713592 1626280 5713256 +1620896 5716896 1620928 5717008 1626472 5713592 1620872 5716832 +1626280 5713256 1626080 5713112 1625960 5713048 1626472 5713592 +1625960 5713048 1620872 5716832 1626472 5713592 1626080 5713112 +1626280 5713256 1626080 5713112 1626472 5713592 1626496 5713456 +1626912 5719928 1626472 5713592 1620928 5717008 1620920 5717216 +1625960 5713048 1620856 5716800 1620872 5716832 1626472 5713592 +1626496 5713456 1626344 5713272 1626280 5713256 1626472 5713592 +1626280 5713256 1626080 5713112 1626472 5713592 1626344 5713272 +1626496 5713456 1626440 5713328 1626344 5713272 1626472 5713592 +1626496 5713456 1626472 5713592 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1626472 5713592 +1626496 5713456 1626472 5713592 1627280 5719664 1627312 5719640 +1626472 5713592 1626912 5719928 1627280 5719664 1627312 5719640 +1626496 5713456 1626472 5713592 1627312 5719640 1627336 5719640 +1626472 5713592 1627280 5719664 1627312 5719640 1627336 5719640 +1626496 5713456 1626472 5713592 1627336 5719640 1627384 5719672 +1626472 5713592 1627312 5719640 1627336 5719640 1627384 5719672 +1626496 5713456 1626472 5713592 1627384 5719672 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1626472 5713592 +1626472 5713592 1627336 5719640 1627384 5719672 1627448 5719792 +1626472 5713592 1627448 5719792 1626496 5713456 1626344 5713272 +1626496 5713456 1626472 5713592 1627448 5719792 1629904 5706120 +1626472 5713592 1620928 5717008 1626912 5719928 1627280 5719664 +1620928 5717008 1626912 5719928 1626472 5713592 1620896 5716896 +1626912 5719928 1626456 5713624 1620928 5717008 1620920 5717216 +1626472 5713592 1626456 5713624 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1626456 5713624 +1626472 5713592 1626456 5713624 1627280 5719664 1627312 5719640 +1626472 5713592 1626456 5713624 1627312 5719640 1627336 5719640 +1626456 5713624 1627280 5719664 1627312 5719640 1627336 5719640 +1626472 5713592 1626456 5713624 1627336 5719640 1627384 5719672 +1626456 5713624 1627312 5719640 1627336 5719640 1627384 5719672 +1626472 5713592 1626456 5713624 1627384 5719672 1627448 5719792 +1626456 5713624 1626912 5719928 1627280 5719664 1627312 5719640 +1626472 5713592 1620928 5717008 1626456 5713624 1627384 5719672 +1620928 5717008 1626456 5713624 1626472 5713592 1620896 5716896 +1626472 5713592 1620872 5716832 1620896 5716896 1626456 5713624 +1626472 5713592 1625960 5713048 1620872 5716832 1626456 5713624 +1626472 5713592 1626080 5713112 1625960 5713048 1626456 5713624 +1625960 5713048 1620872 5716832 1626456 5713624 1626080 5713112 +1620872 5716832 1620896 5716896 1626456 5713624 1625960 5713048 +1626472 5713592 1626280 5713256 1626080 5713112 1626456 5713624 +1626080 5713112 1625960 5713048 1626456 5713624 1626280 5713256 +1626472 5713592 1626344 5713272 1626280 5713256 1626456 5713624 +1625960 5713048 1620856 5716800 1620872 5716832 1626456 5713624 +1626456 5713624 1627384 5719672 1626472 5713592 1626280 5713256 +1620896 5716896 1620928 5717008 1626456 5713624 1620872 5716832 +1626456 5713624 1620928 5717008 1626912 5719928 1627280 5719664 +1620928 5717008 1626912 5719928 1626456 5713624 1620896 5716896 +1626912 5719928 1626360 5713736 1620928 5717008 1620920 5717216 +1626456 5713624 1626360 5713736 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1626360 5713736 +1626456 5713624 1626360 5713736 1627280 5719664 1627312 5719640 +1626456 5713624 1626360 5713736 1627312 5719640 1627336 5719640 +1626456 5713624 1626360 5713736 1627336 5719640 1627384 5719672 +1626360 5713736 1627280 5719664 1627312 5719640 1627336 5719640 +1626360 5713736 1626912 5719928 1627280 5719664 1627312 5719640 +1626456 5713624 1620928 5717008 1626360 5713736 1627336 5719640 +1620928 5717008 1626360 5713736 1626456 5713624 1620896 5716896 +1626456 5713624 1620872 5716832 1620896 5716896 1626360 5713736 +1626456 5713624 1625960 5713048 1620872 5716832 1626360 5713736 +1626456 5713624 1626080 5713112 1625960 5713048 1626360 5713736 +1626456 5713624 1626280 5713256 1626080 5713112 1626360 5713736 +1626080 5713112 1625960 5713048 1626360 5713736 1626280 5713256 +1625960 5713048 1620872 5716832 1626360 5713736 1626080 5713112 +1626456 5713624 1626472 5713592 1626280 5713256 1626360 5713736 +1625960 5713048 1620856 5716800 1620872 5716832 1626360 5713736 +1625960 5713048 1620856 5716800 1626360 5713736 1626080 5713112 +1625960 5713048 1620520 5714728 1620856 5716800 1626360 5713736 +1625960 5713048 1620520 5714728 1626360 5713736 1626080 5713112 +1625960 5713048 1620560 5714512 1620520 5714728 1626360 5713736 +1625960 5713048 1620552 5714440 1620560 5714512 1626360 5713736 +1625960 5713048 1620560 5714512 1626360 5713736 1626080 5713112 +1620856 5716800 1620872 5716832 1626360 5713736 1620520 5714728 +1620520 5714728 1620856 5716800 1626360 5713736 1620560 5714512 +1620520 5714728 1620768 5716712 1620856 5716800 1626360 5713736 +1620872 5716832 1620896 5716896 1626360 5713736 1620856 5716800 +1626360 5713736 1627336 5719640 1626456 5713624 1626280 5713256 +1620896 5716896 1620928 5717008 1626360 5713736 1620872 5716832 +1626360 5713736 1620928 5717008 1626912 5719928 1627280 5719664 +1620928 5717008 1626912 5719928 1626360 5713736 1620896 5716896 +1626912 5719928 1626320 5713816 1620928 5717008 1620920 5717216 +1626360 5713736 1626320 5713816 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1626320 5713816 +1626360 5713736 1626320 5713816 1627280 5719664 1627312 5719640 +1626360 5713736 1626320 5713816 1627312 5719640 1627336 5719640 +1626360 5713736 1626320 5713816 1627336 5719640 1626456 5713624 +1627336 5719640 1627384 5719672 1626456 5713624 1626320 5713816 +1626456 5713624 1626360 5713736 1626320 5713816 1627384 5719672 +1627384 5719672 1626472 5713592 1626456 5713624 1626320 5713816 +1626320 5713816 1627312 5719640 1627336 5719640 1627384 5719672 +1626320 5713816 1627280 5719664 1627312 5719640 1627336 5719640 +1626320 5713816 1626912 5719928 1627280 5719664 1627312 5719640 +1626360 5713736 1620928 5717008 1626320 5713816 1626456 5713624 +1620928 5717008 1626320 5713816 1626360 5713736 1620896 5716896 +1626360 5713736 1620872 5716832 1620896 5716896 1626320 5713816 +1626360 5713736 1620856 5716800 1620872 5716832 1626320 5713816 +1626360 5713736 1620520 5714728 1620856 5716800 1626320 5713816 +1626360 5713736 1620560 5714512 1620520 5714728 1626320 5713816 +1626360 5713736 1625960 5713048 1620560 5714512 1626320 5713816 +1625960 5713048 1620552 5714440 1620560 5714512 1626320 5713816 +1626360 5713736 1626080 5713112 1625960 5713048 1626320 5713816 +1626360 5713736 1626280 5713256 1626080 5713112 1626320 5713816 +1626360 5713736 1626456 5713624 1626280 5713256 1626320 5713816 +1626080 5713112 1625960 5713048 1626320 5713816 1626280 5713256 +1625960 5713048 1620560 5714512 1626320 5713816 1626080 5713112 +1620520 5714728 1620856 5716800 1626320 5713816 1620560 5714512 +1620560 5714512 1620520 5714728 1626320 5713816 1625960 5713048 +1620520 5714728 1620768 5716712 1620856 5716800 1626320 5713816 +1620856 5716800 1620872 5716832 1626320 5713816 1620520 5714728 +1620872 5716832 1620896 5716896 1626320 5713816 1620856 5716800 +1626320 5713816 1626456 5713624 1626360 5713736 1626280 5713256 +1620896 5716896 1620928 5717008 1626320 5713816 1620872 5716832 +1626320 5713816 1620928 5717008 1626912 5719928 1627280 5719664 +1620928 5717008 1626912 5719928 1626320 5713816 1620896 5716896 +1626912 5719928 1626336 5714040 1620928 5717008 1620920 5717216 +1626320 5713816 1626336 5714040 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1626336 5714040 +1626320 5713816 1626336 5714040 1627280 5719664 1627312 5719640 +1626320 5713816 1626336 5714040 1627312 5719640 1627336 5719640 +1626320 5713816 1626336 5714040 1627336 5719640 1627384 5719672 +1626320 5713816 1626336 5714040 1627384 5719672 1626456 5713624 +1626320 5713816 1626336 5714040 1626456 5713624 1626360 5713736 +1626336 5714040 1627384 5719672 1626456 5713624 1626360 5713736 +1627384 5719672 1626472 5713592 1626456 5713624 1626336 5714040 +1626456 5713624 1626360 5713736 1626336 5714040 1626472 5713592 +1627384 5719672 1627448 5719792 1626472 5713592 1626336 5714040 +1626336 5714040 1627336 5719640 1627384 5719672 1626472 5713592 +1626336 5714040 1627312 5719640 1627336 5719640 1627384 5719672 +1626336 5714040 1627280 5719664 1627312 5719640 1627336 5719640 +1626336 5714040 1626912 5719928 1627280 5719664 1627312 5719640 +1626320 5713816 1620928 5717008 1626336 5714040 1626360 5713736 +1620928 5717008 1626336 5714040 1626320 5713816 1620896 5716896 +1626320 5713816 1620872 5716832 1620896 5716896 1626336 5714040 +1626320 5713816 1620856 5716800 1620872 5716832 1626336 5714040 +1626320 5713816 1620520 5714728 1620856 5716800 1626336 5714040 +1626320 5713816 1620560 5714512 1620520 5714728 1626336 5714040 +1626320 5713816 1625960 5713048 1620560 5714512 1626336 5714040 +1625960 5713048 1620552 5714440 1620560 5714512 1626336 5714040 +1626320 5713816 1626080 5713112 1625960 5713048 1626336 5714040 +1620560 5714512 1620520 5714728 1626336 5714040 1625960 5713048 +1620520 5714728 1620768 5716712 1620856 5716800 1626336 5714040 +1620520 5714728 1620856 5716800 1626336 5714040 1620560 5714512 +1620856 5716800 1620872 5716832 1626336 5714040 1620520 5714728 +1620872 5716832 1620896 5716896 1626336 5714040 1620856 5716800 +1626336 5714040 1626360 5713736 1626320 5713816 1625960 5713048 +1620896 5716896 1620928 5717008 1626336 5714040 1620872 5716832 +1626336 5714040 1620928 5717008 1626912 5719928 1627280 5719664 +1620928 5717008 1626912 5719928 1626336 5714040 1620896 5716896 +1620560 5714512 1626264 5714032 1625960 5713048 1620552 5714440 +1626336 5714040 1626264 5714032 1620560 5714512 1620520 5714728 +1625960 5713048 1626264 5714032 1626336 5714040 1626320 5713816 +1625960 5713048 1626264 5714032 1626320 5713816 1626080 5713112 +1626336 5714040 1626264 5714032 1620520 5714728 1620856 5716800 +1626264 5714032 1620560 5714512 1620520 5714728 1620856 5716800 +1620520 5714728 1620768 5716712 1620856 5716800 1626264 5714032 +1626336 5714040 1626264 5714032 1620856 5716800 1620872 5716832 +1626264 5714032 1620520 5714728 1620856 5716800 1620872 5716832 +1626336 5714040 1626264 5714032 1620872 5716832 1620896 5716896 +1626264 5714032 1620856 5716800 1620872 5716832 1620896 5716896 +1626336 5714040 1626264 5714032 1620896 5716896 1620928 5717008 +1626264 5714032 1620872 5716832 1620896 5716896 1620928 5717008 +1626336 5714040 1626320 5713816 1626264 5714032 1620928 5717008 +1626336 5714040 1626264 5714032 1620928 5717008 1626912 5719928 +1620928 5717008 1620920 5717216 1626912 5719928 1626264 5714032 +1626264 5714032 1620896 5716896 1620928 5717008 1626912 5719928 +1626336 5714040 1626264 5714032 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1626264 5714032 +1626336 5714040 1626264 5714032 1627280 5719664 1627312 5719640 +1626336 5714040 1626264 5714032 1627312 5719640 1627336 5719640 +1626264 5714032 1626912 5719928 1627280 5719664 1627312 5719640 +1626336 5714040 1626320 5713816 1626264 5714032 1627312 5719640 +1626264 5714032 1620928 5717008 1626912 5719928 1627280 5719664 +1626264 5714032 1625960 5713048 1620560 5714512 1620520 5714728 +1625960 5713048 1620560 5714512 1626264 5714032 1626320 5713816 +1620560 5714512 1625960 5713848 1625960 5713048 1620552 5714440 +1625960 5713048 1620512 5714368 1620552 5714440 1625960 5713848 +1625960 5713848 1626264 5714032 1625960 5713048 1620552 5714440 +1626264 5714032 1625960 5713848 1620560 5714512 1620520 5714728 +1626264 5714032 1625960 5713848 1620520 5714728 1620856 5716800 +1620520 5714728 1620768 5716712 1620856 5716800 1625960 5713848 +1626264 5714032 1625960 5713848 1620856 5716800 1620872 5716832 +1625960 5713848 1620520 5714728 1620856 5716800 1620872 5716832 +1626264 5714032 1625960 5713848 1620872 5716832 1620896 5716896 +1625960 5713848 1620856 5716800 1620872 5716832 1620896 5716896 +1626264 5714032 1625960 5713848 1620896 5716896 1620928 5717008 +1625960 5713848 1620872 5716832 1620896 5716896 1620928 5717008 +1626264 5714032 1625960 5713848 1620928 5717008 1626912 5719928 +1625960 5713848 1620560 5714512 1620520 5714728 1620856 5716800 +1626264 5714032 1625960 5713048 1625960 5713848 1620928 5717008 +1625960 5713048 1625960 5713848 1626264 5714032 1626320 5713816 +1625960 5713048 1625960 5713848 1626320 5713816 1626080 5713112 +1626320 5713816 1626280 5713256 1626080 5713112 1625960 5713848 +1626320 5713816 1626360 5713736 1626280 5713256 1625960 5713848 +1626360 5713736 1626456 5713624 1626280 5713256 1625960 5713848 +1626280 5713256 1626080 5713112 1625960 5713848 1626360 5713736 +1626080 5713112 1625960 5713048 1625960 5713848 1626280 5713256 +1626264 5714032 1626336 5714040 1626320 5713816 1625960 5713848 +1625960 5713048 1620552 5714440 1625960 5713848 1626080 5713112 +1625960 5713848 1620928 5717008 1626264 5714032 1626320 5713816 +1625960 5713848 1626264 5714032 1626320 5713816 1626360 5713736 +1620560 5714512 1620520 5714728 1625960 5713848 1620552 5714440 +1625960 5713848 1625816 5713840 1620552 5714440 1620560 5714512 +1620552 5714440 1625816 5713840 1625960 5713048 1620512 5714368 +1625960 5713048 1620160 5713848 1620512 5714368 1625816 5713840 +1625960 5713048 1625816 5713840 1625960 5713848 1626080 5713112 +1625960 5713848 1626280 5713256 1626080 5713112 1625816 5713840 +1625816 5713840 1620512 5714368 1620552 5714440 1620560 5714512 +1625816 5713840 1626080 5713112 1625960 5713048 1620512 5714368 +1625960 5713848 1625816 5713840 1620560 5714512 1620520 5714728 +1625816 5713840 1620552 5714440 1620560 5714512 1620520 5714728 +1625960 5713848 1625816 5713840 1620520 5714728 1620856 5716800 +1625960 5713848 1625816 5713840 1620856 5716800 1620872 5716832 +1620520 5714728 1620768 5716712 1620856 5716800 1625816 5713840 +1625960 5713848 1625816 5713840 1620872 5716832 1620896 5716896 +1625816 5713840 1620856 5716800 1620872 5716832 1620896 5716896 +1625960 5713848 1625816 5713840 1620896 5716896 1620928 5717008 +1625816 5713840 1620872 5716832 1620896 5716896 1620928 5717008 +1625960 5713848 1625816 5713840 1620928 5717008 1626264 5714032 +1625816 5713840 1620896 5716896 1620928 5717008 1626264 5714032 +1620928 5717008 1626912 5719928 1626264 5714032 1625816 5713840 +1620928 5717008 1620920 5717216 1626912 5719928 1625816 5713840 +1620928 5717008 1626912 5719928 1625816 5713840 1620896 5716896 +1626264 5714032 1625960 5713848 1625816 5713840 1626912 5719928 +1626912 5719928 1627280 5719664 1626264 5714032 1625816 5713840 +1625816 5713840 1620520 5714728 1620856 5716800 1620872 5716832 +1625816 5713840 1620560 5714512 1620520 5714728 1620856 5716800 +1625960 5713848 1626080 5713112 1625816 5713840 1626264 5714032 +1620512 5714368 1625768 5713824 1625960 5713048 1620160 5713848 +1625816 5713840 1625768 5713824 1620512 5714368 1620552 5714440 +1625816 5713840 1625768 5713824 1620552 5714440 1620560 5714512 +1625816 5713840 1625768 5713824 1620560 5714512 1620520 5714728 +1625768 5713824 1620512 5714368 1620552 5714440 1620560 5714512 +1625768 5713824 1620552 5714440 1620560 5714512 1620520 5714728 +1625816 5713840 1625960 5713048 1625768 5713824 1620520 5714728 +1625960 5713048 1625768 5713824 1625816 5713840 1626080 5713112 +1625816 5713840 1625960 5713848 1626080 5713112 1625768 5713824 +1625960 5713848 1626280 5713256 1626080 5713112 1625768 5713824 +1625768 5713824 1620520 5714728 1625816 5713840 1625960 5713848 +1626080 5713112 1625960 5713048 1625768 5713824 1625960 5713848 +1625768 5713824 1625960 5713048 1620512 5714368 1620552 5714440 +1625960 5713048 1620512 5714368 1625768 5713824 1626080 5713112 +1625816 5713840 1625768 5713824 1620520 5714728 1620856 5716800 +1625768 5713824 1620560 5714512 1620520 5714728 1620856 5716800 +1620520 5714728 1620768 5716712 1620856 5716800 1625768 5713824 +1625816 5713840 1625960 5713848 1625768 5713824 1620856 5716800 +1625816 5713840 1625768 5713824 1620856 5716800 1620872 5716832 +1625816 5713840 1625768 5713824 1620872 5716832 1620896 5716896 +1625816 5713840 1625768 5713824 1620896 5716896 1620928 5717008 +1625768 5713824 1620872 5716832 1620896 5716896 1620928 5717008 +1625816 5713840 1625768 5713824 1620928 5717008 1626912 5719928 +1620928 5717008 1620920 5717216 1626912 5719928 1625768 5713824 +1625768 5713824 1620896 5716896 1620928 5717008 1626912 5719928 +1625816 5713840 1625768 5713824 1626912 5719928 1626264 5714032 +1625768 5713824 1620928 5717008 1626912 5719928 1626264 5714032 +1625816 5713840 1625768 5713824 1626264 5714032 1625960 5713848 +1626912 5719928 1627280 5719664 1626264 5714032 1625768 5713824 +1625816 5713840 1625960 5713848 1625768 5713824 1626264 5714032 +1625768 5713824 1620856 5716800 1620872 5716832 1620896 5716896 +1625768 5713824 1620520 5714728 1620856 5716800 1620872 5716832 +1620552 5714440 1625568 5713848 1625768 5713824 1620512 5714368 +1625768 5713824 1625568 5713848 1620560 5714512 1620520 5714728 +1625768 5713824 1625568 5713848 1620520 5714728 1620856 5716800 +1620520 5714728 1620768 5716712 1620856 5716800 1625568 5713848 +1625568 5713848 1620560 5714512 1620520 5714728 1620856 5716800 +1625768 5713824 1625960 5713048 1620512 5714368 1625568 5713848 +1625960 5713048 1620160 5713848 1620512 5714368 1625568 5713848 +1625960 5713048 1620104 5713768 1620160 5713848 1625568 5713848 +1620160 5713848 1620272 5714120 1620512 5714368 1625568 5713848 +1620512 5714368 1620552 5714440 1625568 5713848 1620160 5713848 +1625960 5713048 1620160 5713848 1625568 5713848 1625768 5713824 +1625568 5713848 1620856 5716800 1625768 5713824 1625960 5713048 +1625768 5713824 1626080 5713112 1625960 5713048 1625568 5713848 +1625768 5713824 1625568 5713848 1620856 5716800 1620872 5716832 +1625568 5713848 1620520 5714728 1620856 5716800 1620872 5716832 +1625768 5713824 1625960 5713048 1625568 5713848 1620872 5716832 +1625768 5713824 1625568 5713848 1620872 5716832 1620896 5716896 +1625768 5713824 1625568 5713848 1620896 5716896 1620928 5717008 +1625768 5713824 1625568 5713848 1620928 5717008 1626912 5719928 +1620928 5717008 1620920 5717216 1626912 5719928 1625568 5713848 +1620920 5717216 1626864 5719976 1626912 5719928 1625568 5713848 +1625568 5713848 1620896 5716896 1620928 5717008 1620920 5717216 +1626912 5719928 1625768 5713824 1625568 5713848 1620920 5717216 +1625768 5713824 1625568 5713848 1626912 5719928 1626264 5714032 +1625568 5713848 1620920 5717216 1626912 5719928 1626264 5714032 +1625768 5713824 1625568 5713848 1626264 5714032 1625816 5713840 +1625568 5713848 1626912 5719928 1626264 5714032 1625816 5713840 +1626264 5714032 1625960 5713848 1625816 5713840 1625568 5713848 +1626912 5719928 1627280 5719664 1626264 5714032 1625568 5713848 +1625768 5713824 1625960 5713048 1625568 5713848 1625816 5713840 +1625568 5713848 1620872 5716832 1620896 5716896 1620928 5717008 +1625568 5713848 1620856 5716800 1620872 5716832 1620896 5716896 +1625568 5713848 1620552 5714440 1620560 5714512 1620520 5714728 +1620552 5714440 1620560 5714512 1625568 5713848 1620512 5714368 +1620160 5713848 1625520 5713800 1625960 5713048 1620104 5713768 +1625568 5713848 1625520 5713800 1620160 5713848 1620512 5714368 +1625960 5713048 1620040 5713712 1620104 5713768 1625520 5713800 +1620160 5713848 1620272 5714120 1620512 5714368 1625520 5713800 +1625568 5713848 1625520 5713800 1620512 5714368 1620552 5714440 +1625520 5713800 1620160 5713848 1620512 5714368 1620552 5714440 +1625960 5713048 1625520 5713800 1625568 5713848 1625768 5713824 +1625960 5713048 1625520 5713800 1625768 5713824 1626080 5713112 +1625568 5713848 1625768 5713824 1625520 5713800 1620552 5714440 +1625568 5713848 1625520 5713800 1620552 5714440 1620560 5714512 +1625520 5713800 1620512 5714368 1620552 5714440 1620560 5714512 +1625568 5713848 1625520 5713800 1620560 5714512 1620520 5714728 +1625568 5713848 1625520 5713800 1620520 5714728 1620856 5716800 +1625568 5713848 1625520 5713800 1620856 5716800 1620872 5716832 +1620520 5714728 1620768 5716712 1620856 5716800 1625520 5713800 +1625520 5713800 1620520 5714728 1620856 5716800 1620872 5716832 +1625568 5713848 1625520 5713800 1620872 5716832 1620896 5716896 +1625520 5713800 1620560 5714512 1620520 5714728 1620856 5716800 +1625568 5713848 1625768 5713824 1625520 5713800 1620872 5716832 +1625520 5713800 1620552 5714440 1620560 5714512 1620520 5714728 +1620160 5713848 1620512 5714368 1625520 5713800 1620104 5713768 +1625520 5713800 1625768 5713824 1625960 5713048 1620104 5713768 +1625520 5713800 1625440 5713680 1620104 5713768 1620160 5713848 +1620104 5713768 1625440 5713680 1625960 5713048 1620040 5713712 +1625520 5713800 1625440 5713680 1620160 5713848 1620512 5714368 +1625440 5713680 1620104 5713768 1620160 5713848 1620512 5714368 +1625520 5713800 1625440 5713680 1620512 5714368 1620552 5714440 +1620160 5713848 1620272 5714120 1620512 5714368 1625440 5713680 +1625520 5713800 1625440 5713680 1620552 5714440 1620560 5714512 +1625440 5713680 1620512 5714368 1620552 5714440 1620560 5714512 +1625520 5713800 1625440 5713680 1620560 5714512 1620520 5714728 +1625440 5713680 1620552 5714440 1620560 5714512 1620520 5714728 +1625520 5713800 1625440 5713680 1620520 5714728 1620856 5716800 +1625440 5713680 1620160 5713848 1620512 5714368 1620552 5714440 +1625520 5713800 1625960 5713048 1625440 5713680 1620520 5714728 +1625960 5713048 1625440 5713680 1625520 5713800 1625768 5713824 +1625520 5713800 1625568 5713848 1625768 5713824 1625440 5713680 +1625960 5713048 1625440 5713680 1625768 5713824 1626080 5713112 +1625440 5713680 1620520 5714728 1625520 5713800 1625768 5713824 +1625440 5713680 1625960 5713048 1620104 5713768 1620160 5713848 +1625960 5713048 1620104 5713768 1625440 5713680 1625768 5713824 +1620104 5713768 1625344 5713632 1625960 5713048 1620040 5713712 +1620104 5713768 1625344 5713632 1620040 5713712 1620072 5713752 +1625344 5713632 1625440 5713680 1625960 5713048 1620040 5713712 +1625960 5713048 1618184 5707576 1620040 5713712 1625344 5713632 +1625440 5713680 1625344 5713632 1620104 5713768 1620160 5713848 +1625440 5713680 1625344 5713632 1620160 5713848 1620512 5714368 +1620160 5713848 1620272 5714120 1620512 5714368 1625344 5713632 +1625440 5713680 1625344 5713632 1620512 5714368 1620552 5714440 +1625344 5713632 1620160 5713848 1620512 5714368 1620552 5714440 +1625440 5713680 1625344 5713632 1620552 5714440 1620560 5714512 +1625440 5713680 1625344 5713632 1620560 5714512 1620520 5714728 +1625344 5713632 1620552 5714440 1620560 5714512 1620520 5714728 +1625440 5713680 1625344 5713632 1620520 5714728 1625520 5713800 +1625344 5713632 1620560 5714512 1620520 5714728 1625520 5713800 +1620520 5714728 1620856 5716800 1625520 5713800 1625344 5713632 +1620520 5714728 1620768 5716712 1620856 5716800 1625344 5713632 +1620520 5714728 1620856 5716800 1625344 5713632 1620560 5714512 +1620856 5716800 1620872 5716832 1625520 5713800 1625344 5713632 +1620872 5716832 1625568 5713848 1625520 5713800 1625344 5713632 +1620856 5716800 1620872 5716832 1625344 5713632 1620520 5714728 +1625520 5713800 1625440 5713680 1625344 5713632 1620872 5716832 +1625344 5713632 1620512 5714368 1620552 5714440 1620560 5714512 +1625344 5713632 1620104 5713768 1620160 5713848 1620512 5714368 +1625440 5713680 1625960 5713048 1625344 5713632 1625520 5713800 +1625960 5713048 1625344 5713632 1625440 5713680 1625768 5713824 +1620104 5713768 1620160 5713848 1625344 5713632 1620040 5713712 +1625344 5713632 1625072 5713648 1620512 5714368 1620552 5714440 +1625344 5713632 1620160 5713848 1625072 5713648 1620552 5714440 +1625072 5713648 1620160 5713848 1620512 5714368 1620552 5714440 +1620512 5714368 1625072 5713648 1620160 5713848 1620272 5714120 +1625344 5713632 1625072 5713648 1620552 5714440 1620560 5714512 +1625072 5713648 1620512 5714368 1620552 5714440 1620560 5714512 +1625344 5713632 1625072 5713648 1620560 5714512 1620520 5714728 +1625344 5713632 1620160 5713848 1625072 5713648 1620520 5714728 +1625344 5713632 1625072 5713648 1620520 5714728 1620856 5716800 +1625072 5713648 1620560 5714512 1620520 5714728 1620856 5716800 +1625344 5713632 1620160 5713848 1625072 5713648 1620856 5716800 +1620520 5714728 1620768 5716712 1620856 5716800 1625072 5713648 +1625344 5713632 1625072 5713648 1620856 5716800 1620872 5716832 +1625344 5713632 1620160 5713848 1625072 5713648 1620872 5716832 +1625072 5713648 1620520 5714728 1620856 5716800 1620872 5716832 +1625344 5713632 1625072 5713648 1620872 5716832 1625520 5713800 +1620872 5716832 1625568 5713848 1625520 5713800 1625072 5713648 +1625344 5713632 1620160 5713848 1625072 5713648 1625520 5713800 +1625520 5713800 1625344 5713632 1625072 5713648 1625568 5713848 +1620872 5716832 1620896 5716896 1625568 5713848 1625072 5713648 +1625568 5713848 1625520 5713800 1625072 5713648 1620896 5716896 +1620896 5716896 1620928 5717008 1625568 5713848 1625072 5713648 +1625568 5713848 1625520 5713800 1625072 5713648 1620928 5717008 +1620928 5717008 1620920 5717216 1625568 5713848 1625072 5713648 +1620896 5716896 1620928 5717008 1625072 5713648 1620872 5716832 +1625072 5713648 1620856 5716800 1620872 5716832 1620896 5716896 +1625344 5713632 1625072 5713648 1625520 5713800 1625440 5713680 +1625072 5713648 1620552 5714440 1620560 5714512 1620520 5714728 +1620160 5713848 1625072 5713648 1625344 5713632 1620104 5713768 +1625072 5713648 1625520 5713800 1625344 5713632 1620104 5713768 +1620160 5713848 1620512 5714368 1625072 5713648 1620104 5713768 +1625344 5713632 1620040 5713712 1620104 5713768 1625072 5713648 +1625344 5713632 1625960 5713048 1620040 5713712 1625072 5713648 +1620040 5713712 1620072 5713752 1620104 5713768 1625072 5713648 +1625344 5713632 1625440 5713680 1625960 5713048 1625072 5713648 +1625344 5713632 1625960 5713048 1625072 5713648 1625520 5713800 +1625960 5713048 1618184 5707576 1620040 5713712 1625072 5713648 +1625960 5713048 1618184 5707576 1625072 5713648 1625344 5713632 +1618184 5707576 1618264 5711808 1620040 5713712 1625072 5713648 +1618184 5707576 1618184 5711672 1618264 5711808 1625072 5713648 +1618184 5707576 1618264 5711808 1625072 5713648 1625960 5713048 +1625960 5713048 1627248 5706936 1618184 5707576 1625072 5713648 +1618264 5711808 1619952 5713672 1620040 5713712 1625072 5713648 +1620104 5713768 1620160 5713848 1625072 5713648 1620040 5713712 +1620040 5713712 1620104 5713768 1625072 5713648 1618264 5711808 +1620520 5714728 1624976 5713680 1625072 5713648 1620560 5714512 +1624976 5713680 1620856 5716800 1625072 5713648 1620560 5714512 +1620856 5716800 1624976 5713680 1620520 5714728 1620768 5716712 +1620520 5714728 1620856 5716800 1624976 5713680 1620560 5714512 +1625072 5713648 1624976 5713680 1620856 5716800 1620872 5716832 +1625072 5713648 1620560 5714512 1624976 5713680 1620872 5716832 +1624976 5713680 1620520 5714728 1620856 5716800 1620872 5716832 +1625072 5713648 1624976 5713680 1620872 5716832 1620896 5716896 +1625072 5713648 1620560 5714512 1624976 5713680 1620896 5716896 +1624976 5713680 1620856 5716800 1620872 5716832 1620896 5716896 +1625072 5713648 1624976 5713680 1620896 5716896 1620928 5717008 +1625072 5713648 1620560 5714512 1624976 5713680 1620928 5717008 +1625072 5713648 1624976 5713680 1620928 5717008 1625568 5713848 +1625072 5713648 1624976 5713680 1625568 5713848 1625520 5713800 +1625072 5713648 1620560 5714512 1624976 5713680 1625520 5713800 +1620928 5717008 1620920 5717216 1625568 5713848 1624976 5713680 +1625072 5713648 1624976 5713680 1625520 5713800 1625344 5713632 +1624976 5713680 1620928 5717008 1625568 5713848 1625520 5713800 +1624976 5713680 1620896 5716896 1620928 5717008 1625568 5713848 +1624976 5713680 1620872 5716832 1620896 5716896 1620928 5717008 +1625072 5713648 1620552 5714440 1620560 5714512 1624976 5713680 +1625072 5713648 1620512 5714368 1620552 5714440 1624976 5713680 +1620560 5714512 1620520 5714728 1624976 5713680 1620552 5714440 +1625072 5713648 1620160 5713848 1620512 5714368 1624976 5713680 +1620512 5714368 1620552 5714440 1624976 5713680 1620160 5713848 +1625072 5713648 1620160 5713848 1624976 5713680 1625520 5713800 +1625072 5713648 1620104 5713768 1620160 5713848 1624976 5713680 +1620160 5713848 1620512 5714368 1624976 5713680 1620104 5713768 +1625072 5713648 1620104 5713768 1624976 5713680 1625520 5713800 +1620160 5713848 1620272 5714120 1620512 5714368 1624976 5713680 +1620552 5714440 1620560 5714512 1624976 5713680 1620512 5714368 +1625072 5713648 1620040 5713712 1620104 5713768 1624976 5713680 +1620040 5713712 1620072 5713752 1620104 5713768 1624976 5713680 +1625072 5713648 1620040 5713712 1624976 5713680 1625520 5713800 +1620104 5713768 1620160 5713848 1624976 5713680 1620040 5713712 +1625072 5713648 1618264 5711808 1620040 5713712 1624976 5713680 +1625072 5713648 1618184 5707576 1618264 5711808 1624976 5713680 +1618184 5707576 1618184 5711672 1618264 5711808 1624976 5713680 +1625072 5713648 1618184 5707576 1624976 5713680 1625520 5713800 +1625072 5713648 1625960 5713048 1618184 5707576 1624976 5713680 +1625072 5713648 1625344 5713632 1625960 5713048 1624976 5713680 +1618184 5707576 1618264 5711808 1624976 5713680 1625960 5713048 +1625072 5713648 1625960 5713048 1624976 5713680 1625520 5713800 +1625960 5713048 1627248 5706936 1618184 5707576 1624976 5713680 +1618264 5711808 1619952 5713672 1620040 5713712 1624976 5713680 +1620040 5713712 1620104 5713768 1624976 5713680 1618264 5711808 +1618264 5711808 1620040 5713712 1624976 5713680 1618184 5707576 +1620040 5713712 1624848 5713680 1618264 5711808 1619952 5713672 +1624976 5713680 1624848 5713680 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624848 5713680 +1624976 5713680 1624848 5713680 1620104 5713768 1620160 5713848 +1624976 5713680 1624848 5713680 1620160 5713848 1620512 5714368 +1624976 5713680 1624848 5713680 1620512 5714368 1620552 5714440 +1624848 5713680 1620160 5713848 1620512 5714368 1620552 5714440 +1624848 5713680 1620104 5713768 1620160 5713848 1620512 5714368 +1620160 5713848 1620272 5714120 1620512 5714368 1624848 5713680 +1624976 5713680 1618264 5711808 1624848 5713680 1620552 5714440 +1624848 5713680 1618264 5711808 1620040 5713712 1620104 5713768 +1624976 5713680 1624848 5713680 1620552 5714440 1620560 5714512 +1624848 5713680 1620512 5714368 1620552 5714440 1620560 5714512 +1624976 5713680 1624848 5713680 1620560 5714512 1620520 5714728 +1624976 5713680 1618264 5711808 1624848 5713680 1620520 5714728 +1624976 5713680 1624848 5713680 1620520 5714728 1620856 5716800 +1624848 5713680 1620560 5714512 1620520 5714728 1620856 5716800 +1624976 5713680 1624848 5713680 1620856 5716800 1620872 5716832 +1620520 5714728 1620768 5716712 1620856 5716800 1624848 5713680 +1624976 5713680 1618264 5711808 1624848 5713680 1620872 5716832 +1624848 5713680 1620520 5714728 1620856 5716800 1620872 5716832 +1624976 5713680 1624848 5713680 1620872 5716832 1620896 5716896 +1624848 5713680 1620856 5716800 1620872 5716832 1620896 5716896 +1624976 5713680 1618264 5711808 1624848 5713680 1620896 5716896 +1624976 5713680 1624848 5713680 1620896 5716896 1620928 5717008 +1624976 5713680 1618264 5711808 1624848 5713680 1620928 5717008 +1624848 5713680 1620872 5716832 1620896 5716896 1620928 5717008 +1624976 5713680 1624848 5713680 1620928 5717008 1625568 5713848 +1620928 5717008 1620920 5717216 1625568 5713848 1624848 5713680 +1624976 5713680 1618264 5711808 1624848 5713680 1625568 5713848 +1624976 5713680 1624848 5713680 1625568 5713848 1625520 5713800 +1624848 5713680 1620896 5716896 1620928 5717008 1625568 5713848 +1624848 5713680 1620552 5714440 1620560 5714512 1620520 5714728 +1624848 5713680 1620040 5713712 1620104 5713768 1620160 5713848 +1618264 5711808 1624848 5713680 1624976 5713680 1618184 5707576 +1624976 5713680 1625960 5713048 1618184 5707576 1624848 5713680 +1618264 5711808 1624848 5713680 1618184 5707576 1618184 5711672 +1618264 5711808 1620040 5713712 1624848 5713680 1618184 5707576 +1624976 5713680 1625072 5713648 1625960 5713048 1624848 5713680 +1625072 5713648 1625344 5713632 1625960 5713048 1624848 5713680 +1625960 5713048 1618184 5707576 1624848 5713680 1625072 5713648 +1625960 5713048 1627248 5706936 1618184 5707576 1624848 5713680 +1625960 5713048 1627272 5706968 1627248 5706936 1624848 5713680 +1625960 5713048 1627248 5706936 1624848 5713680 1625072 5713648 +1627248 5706936 1627208 5706856 1618184 5707576 1624848 5713680 +1624848 5713680 1625568 5713848 1624976 5713680 1625072 5713648 +1618184 5707576 1618264 5711808 1624848 5713680 1627248 5706936 +1618184 5707576 1624608 5713400 1627248 5706936 1627208 5706856 +1618184 5707576 1624848 5713680 1624608 5713400 1627208 5706856 +1624608 5713400 1624848 5713680 1627248 5706936 1627208 5706856 +1627248 5706936 1624608 5713400 1624848 5713680 1625960 5713048 +1627248 5706936 1624608 5713400 1625960 5713048 1627272 5706968 +1624848 5713680 1625072 5713648 1625960 5713048 1624608 5713400 +1625072 5713648 1625344 5713632 1625960 5713048 1624608 5713400 +1625072 5713648 1625344 5713632 1624608 5713400 1624848 5713680 +1625344 5713632 1625440 5713680 1625960 5713048 1624608 5713400 +1624608 5713400 1618184 5707576 1624848 5713680 1625072 5713648 +1627248 5706936 1627208 5706856 1624608 5713400 1627272 5706968 +1625960 5713048 1627296 5706984 1627272 5706968 1624608 5713400 +1624848 5713680 1624976 5713680 1625072 5713648 1624608 5713400 +1625072 5713648 1625344 5713632 1624608 5713400 1624976 5713680 +1624848 5713680 1624976 5713680 1624608 5713400 1618184 5707576 +1624608 5713400 1625344 5713632 1625960 5713048 1627272 5706968 +1618184 5707576 1624608 5713400 1627208 5706856 1621944 5703896 +1624848 5713680 1624608 5713400 1618184 5707576 1618264 5711808 +1618184 5707576 1618184 5711672 1618264 5711808 1624608 5713400 +1624848 5713680 1624976 5713680 1624608 5713400 1618264 5711808 +1624848 5713680 1624608 5713400 1618264 5711808 1620040 5713712 +1624848 5713680 1624976 5713680 1624608 5713400 1620040 5713712 +1624608 5713400 1627208 5706856 1618184 5707576 1618264 5711808 +1618264 5711808 1619952 5713672 1620040 5713712 1624608 5713400 +1624848 5713680 1624608 5713400 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624608 5713400 +1624848 5713680 1624976 5713680 1624608 5713400 1620104 5713768 +1624608 5713400 1618264 5711808 1620040 5713712 1620104 5713768 +1624848 5713680 1624608 5713400 1620104 5713768 1620160 5713848 +1624848 5713680 1624608 5713400 1620160 5713848 1620512 5714368 +1624848 5713680 1624608 5713400 1620512 5714368 1620552 5714440 +1624848 5713680 1624608 5713400 1620552 5714440 1620560 5714512 +1624608 5713400 1620512 5714368 1620552 5714440 1620560 5714512 +1624608 5713400 1620160 5713848 1620512 5714368 1620552 5714440 +1624848 5713680 1624976 5713680 1624608 5713400 1620560 5714512 +1620160 5713848 1620272 5714120 1620512 5714368 1624608 5713400 +1624608 5713400 1620040 5713712 1620104 5713768 1620160 5713848 +1624848 5713680 1624608 5713400 1620560 5714512 1620520 5714728 +1624608 5713400 1620552 5714440 1620560 5714512 1620520 5714728 +1624848 5713680 1624608 5713400 1620520 5714728 1620856 5716800 +1624848 5713680 1624976 5713680 1624608 5713400 1620520 5714728 +1624608 5713400 1620104 5713768 1620160 5713848 1620512 5714368 +1624608 5713400 1618184 5707576 1618264 5711808 1620040 5713712 +1624608 5713400 1624584 5713368 1618184 5707576 1618264 5711808 +1618184 5707576 1618184 5711672 1618264 5711808 1624584 5713368 +1624608 5713400 1627208 5706856 1624584 5713368 1618264 5711808 +1624584 5713368 1627208 5706856 1618184 5707576 1618264 5711808 +1627208 5706856 1624584 5713368 1624608 5713400 1627248 5706936 +1624584 5713368 1618264 5711808 1624608 5713400 1627248 5706936 +1624608 5713400 1627272 5706968 1627248 5706936 1624584 5713368 +1624608 5713400 1625960 5713048 1627272 5706968 1624584 5713368 +1624608 5713400 1625960 5713048 1624584 5713368 1618264 5711808 +1627272 5706968 1627248 5706936 1624584 5713368 1625960 5713048 +1627208 5706856 1618184 5707576 1624584 5713368 1627248 5706936 +1625960 5713048 1627296 5706984 1627272 5706968 1624584 5713368 +1627248 5706936 1627208 5706856 1624584 5713368 1627272 5706968 +1624608 5713400 1625344 5713632 1625960 5713048 1624584 5713368 +1625960 5713048 1627272 5706968 1624584 5713368 1625344 5713632 +1624608 5713400 1625072 5713648 1625344 5713632 1624584 5713368 +1624608 5713400 1624976 5713680 1625072 5713648 1624584 5713368 +1625344 5713632 1625440 5713680 1625960 5713048 1624584 5713368 +1624608 5713400 1625072 5713648 1624584 5713368 1618264 5711808 +1625344 5713632 1625960 5713048 1624584 5713368 1625072 5713648 +1618184 5707576 1624584 5713368 1627208 5706856 1621944 5703896 +1624608 5713400 1624584 5713368 1618264 5711808 1620040 5713712 +1624608 5713400 1624584 5713368 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624584 5713368 +1624584 5713368 1618184 5707576 1618264 5711808 1620040 5713712 +1624608 5713400 1625072 5713648 1624584 5713368 1620104 5713768 +1618264 5711808 1619952 5713672 1620040 5713712 1624584 5713368 +1624608 5713400 1624584 5713368 1620104 5713768 1620160 5713848 +1624584 5713368 1620040 5713712 1620104 5713768 1620160 5713848 +1624608 5713400 1625072 5713648 1624584 5713368 1620160 5713848 +1624608 5713400 1624584 5713368 1620160 5713848 1620512 5714368 +1624608 5713400 1624584 5713368 1620512 5714368 1620552 5714440 +1624608 5713400 1624584 5713368 1620552 5714440 1620560 5714512 +1624608 5713400 1624584 5713368 1620560 5714512 1620520 5714728 +1624584 5713368 1620512 5714368 1620552 5714440 1620560 5714512 +1624608 5713400 1625072 5713648 1624584 5713368 1620560 5714512 +1620160 5713848 1620272 5714120 1620512 5714368 1624584 5713368 +1624584 5713368 1620104 5713768 1620160 5713848 1620512 5714368 +1624584 5713368 1620160 5713848 1620512 5714368 1620552 5714440 +1624584 5713368 1618264 5711808 1620040 5713712 1620104 5713768 +1624584 5713368 1624568 5713248 1618184 5707576 1618264 5711808 +1618184 5707576 1618184 5711672 1618264 5711808 1624568 5713248 +1624568 5713248 1627208 5706856 1618184 5707576 1618264 5711808 +1624584 5713368 1624568 5713248 1618264 5711808 1620040 5713712 +1624568 5713248 1618184 5707576 1618264 5711808 1620040 5713712 +1624584 5713368 1627208 5706856 1624568 5713248 1620040 5713712 +1627208 5706856 1624568 5713248 1624584 5713368 1627248 5706936 +1624568 5713248 1620040 5713712 1624584 5713368 1627248 5706936 +1627208 5706856 1618184 5707576 1624568 5713248 1627248 5706936 +1624584 5713368 1627272 5706968 1627248 5706936 1624568 5713248 +1624584 5713368 1625960 5713048 1627272 5706968 1624568 5713248 +1624584 5713368 1625344 5713632 1625960 5713048 1624568 5713248 +1625344 5713632 1625440 5713680 1625960 5713048 1624568 5713248 +1625960 5713048 1627272 5706968 1624568 5713248 1625344 5713632 +1624584 5713368 1625344 5713632 1624568 5713248 1620040 5713712 +1627248 5706936 1627208 5706856 1624568 5713248 1627272 5706968 +1625960 5713048 1627296 5706984 1627272 5706968 1624568 5713248 +1627272 5706968 1627248 5706936 1624568 5713248 1625960 5713048 +1624584 5713368 1625072 5713648 1625344 5713632 1624568 5713248 +1625344 5713632 1625960 5713048 1624568 5713248 1625072 5713648 +1624584 5713368 1624608 5713400 1625072 5713648 1624568 5713248 +1624608 5713400 1624976 5713680 1625072 5713648 1624568 5713248 +1624584 5713368 1624608 5713400 1624568 5713248 1620040 5713712 +1625072 5713648 1625344 5713632 1624568 5713248 1624608 5713400 +1618264 5711808 1619952 5713672 1620040 5713712 1624568 5713248 +1618184 5707576 1624568 5713248 1627208 5706856 1621944 5703896 +1624584 5713368 1624568 5713248 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624568 5713248 +1624584 5713368 1624568 5713248 1620104 5713768 1620160 5713848 +1624568 5713248 1618264 5711808 1620040 5713712 1620104 5713768 +1624584 5713368 1624608 5713400 1624568 5713248 1620160 5713848 +1624584 5713368 1624568 5713248 1620160 5713848 1620512 5714368 +1624568 5713248 1620104 5713768 1620160 5713848 1620512 5714368 +1624584 5713368 1624608 5713400 1624568 5713248 1620512 5714368 +1620160 5713848 1620272 5714120 1620512 5714368 1624568 5713248 +1624584 5713368 1624568 5713248 1620512 5714368 1620552 5714440 +1624584 5713368 1624568 5713248 1620552 5714440 1620560 5714512 +1624584 5713368 1624608 5713400 1624568 5713248 1620552 5714440 +1624568 5713248 1620160 5713848 1620512 5714368 1620552 5714440 +1624568 5713248 1620040 5713712 1620104 5713768 1620160 5713848 +1624568 5713248 1624568 5712968 1618184 5707576 1618264 5711808 +1618184 5707576 1618184 5711672 1618264 5711808 1624568 5712968 +1624568 5713248 1624568 5712968 1618264 5711808 1620040 5713712 +1624568 5712968 1618184 5707576 1618264 5711808 1620040 5713712 +1624568 5713248 1624568 5712968 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624568 5712968 +1624568 5712968 1618264 5711808 1620040 5713712 1620104 5713768 +1624568 5713248 1627208 5706856 1624568 5712968 1620104 5713768 +1627208 5706856 1624568 5712968 1624568 5713248 1627248 5706936 +1624568 5713248 1627272 5706968 1627248 5706936 1624568 5712968 +1624568 5712968 1620104 5713768 1624568 5713248 1627272 5706968 +1627248 5706936 1627208 5706856 1624568 5712968 1627272 5706968 +1624568 5712968 1627208 5706856 1618184 5707576 1618264 5711808 +1627208 5706856 1618184 5707576 1624568 5712968 1627248 5706936 +1624568 5713248 1625960 5713048 1627272 5706968 1624568 5712968 +1624568 5713248 1625344 5713632 1625960 5713048 1624568 5712968 +1624568 5713248 1625072 5713648 1625344 5713632 1624568 5712968 +1625344 5713632 1625440 5713680 1625960 5713048 1624568 5712968 +1625344 5713632 1625960 5713048 1624568 5712968 1625072 5713648 +1627272 5706968 1627248 5706936 1624568 5712968 1625960 5713048 +1624568 5713248 1625072 5713648 1624568 5712968 1620104 5713768 +1625960 5713048 1627296 5706984 1627272 5706968 1624568 5712968 +1627272 5706968 1627248 5706936 1624568 5712968 1627296 5706984 +1625960 5713048 1627296 5706984 1624568 5712968 1625344 5713632 +1624568 5713248 1624608 5713400 1625072 5713648 1624568 5712968 +1618264 5711808 1619952 5713672 1620040 5713712 1624568 5712968 +1618184 5707576 1624568 5712968 1627208 5706856 1621944 5703896 +1625960 5713048 1627328 5706984 1627296 5706984 1624568 5712968 +1624568 5713248 1624568 5712968 1620104 5713768 1620160 5713848 +1624568 5713248 1624568 5712968 1620160 5713848 1620512 5714368 +1624568 5712968 1620040 5713712 1620104 5713768 1620160 5713848 +1624568 5713248 1625072 5713648 1624568 5712968 1620512 5714368 +1620160 5713848 1620272 5714120 1620512 5714368 1624568 5712968 +1624568 5713248 1624568 5712968 1620512 5714368 1620552 5714440 +1624568 5712968 1620104 5713768 1620160 5713848 1620512 5714368 +1624568 5712968 1624544 5712768 1618184 5707576 1618264 5711808 +1618184 5707576 1618184 5711672 1618264 5711808 1624544 5712768 +1618184 5707576 1618088 5711560 1618184 5711672 1624544 5712768 +1624568 5712968 1624544 5712768 1618264 5711808 1620040 5713712 +1624568 5712968 1624544 5712768 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624544 5712768 +1624544 5712768 1618264 5711808 1620040 5713712 1620104 5713768 +1624568 5712968 1624544 5712768 1620104 5713768 1620160 5713848 +1624544 5712768 1620040 5713712 1620104 5713768 1620160 5713848 +1618264 5711808 1620040 5713712 1624544 5712768 1618184 5711672 +1624568 5712968 1627208 5706856 1624544 5712768 1620160 5713848 +1627208 5706856 1624544 5712768 1624568 5712968 1627248 5706936 +1624568 5712968 1627272 5706968 1627248 5706936 1624544 5712768 +1624568 5712968 1627296 5706984 1627272 5706968 1624544 5712768 +1627272 5706968 1627248 5706936 1624544 5712768 1627296 5706984 +1624544 5712768 1620160 5713848 1624568 5712968 1627296 5706984 +1627248 5706936 1627208 5706856 1624544 5712768 1627272 5706968 +1624544 5712768 1627208 5706856 1618184 5707576 1618184 5711672 +1627208 5706856 1618184 5707576 1624544 5712768 1627248 5706936 +1624568 5712968 1625960 5713048 1627296 5706984 1624544 5712768 +1627296 5706984 1627272 5706968 1624544 5712768 1625960 5713048 +1624568 5712968 1625960 5713048 1624544 5712768 1620160 5713848 +1624568 5712968 1625344 5713632 1625960 5713048 1624544 5712768 +1618264 5711808 1619952 5713672 1620040 5713712 1624544 5712768 +1618184 5707576 1624544 5712768 1627208 5706856 1621944 5703896 +1618184 5707576 1624544 5712768 1621944 5703896 1621912 5703896 +1618184 5707576 1618184 5711672 1624544 5712768 1621944 5703896 +1624544 5712768 1627248 5706936 1627208 5706856 1621944 5703896 +1627208 5706856 1627208 5706816 1621944 5703896 1624544 5712768 +1625960 5713048 1627328 5706984 1627296 5706984 1624544 5712768 +1624568 5712968 1624544 5712768 1620160 5713848 1620512 5714368 +1624568 5712968 1624544 5712768 1620512 5714368 1624568 5713248 +1624544 5712768 1620104 5713768 1620160 5713848 1620512 5714368 +1624568 5712968 1625960 5713048 1624544 5712768 1624568 5713248 +1620160 5713848 1620272 5714120 1620512 5714368 1624544 5712768 +1620512 5714368 1620552 5714440 1624568 5713248 1624544 5712768 +1624544 5712768 1620160 5713848 1620512 5714368 1624568 5713248 +1627208 5706856 1624536 5712600 1624544 5712768 1627248 5706936 +1624544 5712768 1627272 5706968 1627248 5706936 1624536 5712600 +1624544 5712768 1627296 5706984 1627272 5706968 1624536 5712600 +1624544 5712768 1625960 5713048 1627296 5706984 1624536 5712600 +1627296 5706984 1627272 5706968 1624536 5712600 1625960 5713048 +1627272 5706968 1627248 5706936 1624536 5712600 1627296 5706984 +1624536 5712600 1621944 5703896 1624544 5712768 1625960 5713048 +1627248 5706936 1627208 5706856 1624536 5712600 1627272 5706968 +1627208 5706856 1621944 5703896 1624536 5712600 1627248 5706936 +1624544 5712768 1624568 5712968 1625960 5713048 1624536 5712600 +1621944 5703896 1624536 5712600 1627208 5706856 1627208 5706816 +1624544 5712768 1624536 5712600 1621944 5703896 1618184 5707576 +1621944 5703896 1621912 5703896 1618184 5707576 1624536 5712600 +1624544 5712768 1624536 5712600 1618184 5707576 1618184 5711672 +1624544 5712768 1624536 5712600 1618184 5711672 1618264 5711808 +1618184 5707576 1618088 5711560 1618184 5711672 1624536 5712600 +1624544 5712768 1624536 5712600 1618264 5711808 1620040 5713712 +1624536 5712600 1618184 5711672 1618264 5711808 1620040 5713712 +1624544 5712768 1624536 5712600 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624536 5712600 +1624544 5712768 1624536 5712600 1620104 5713768 1620160 5713848 +1624536 5712600 1620040 5713712 1620104 5713768 1620160 5713848 +1624544 5712768 1624536 5712600 1620160 5713848 1620512 5714368 +1624536 5712600 1618264 5711808 1620040 5713712 1620104 5713768 +1624536 5712600 1618184 5707576 1618184 5711672 1618264 5711808 +1624544 5712768 1625960 5713048 1624536 5712600 1620160 5713848 +1624536 5712600 1627208 5706856 1621944 5703896 1618184 5707576 +1618264 5711808 1619952 5713672 1620040 5713712 1624536 5712600 +1624536 5712600 1621944 5703896 1618184 5707576 1618184 5711672 +1625960 5713048 1627328 5706984 1627296 5706984 1624536 5712600 +1624536 5712600 1624568 5712488 1621944 5703896 1618184 5707576 +1621944 5703896 1621912 5703896 1618184 5707576 1624568 5712488 +1624536 5712600 1627208 5706856 1624568 5712488 1618184 5707576 +1627208 5706856 1624568 5712488 1624536 5712600 1627248 5706936 +1624536 5712600 1627272 5706968 1627248 5706936 1624568 5712488 +1624536 5712600 1627296 5706984 1627272 5706968 1624568 5712488 +1624536 5712600 1625960 5713048 1627296 5706984 1624568 5712488 +1624536 5712600 1624544 5712768 1625960 5713048 1624568 5712488 +1625960 5713048 1627296 5706984 1624568 5712488 1624544 5712768 +1627296 5706984 1627272 5706968 1624568 5712488 1625960 5713048 +1627272 5706968 1627248 5706936 1624568 5712488 1627296 5706984 +1624568 5712488 1618184 5707576 1624536 5712600 1624544 5712768 +1627248 5706936 1627208 5706856 1624568 5712488 1627272 5706968 +1624568 5712488 1627208 5706856 1621944 5703896 1618184 5707576 +1627208 5706856 1621944 5703896 1624568 5712488 1627248 5706936 +1624544 5712768 1624568 5712968 1625960 5713048 1624568 5712488 +1621944 5703896 1624568 5712488 1627208 5706856 1627208 5706816 +1624536 5712600 1624568 5712488 1618184 5707576 1618184 5711672 +1618184 5707576 1618088 5711560 1618184 5711672 1624568 5712488 +1624536 5712600 1624568 5712488 1618184 5711672 1618264 5711808 +1624536 5712600 1624568 5712488 1618264 5711808 1620040 5713712 +1624536 5712600 1624568 5712488 1620040 5713712 1620104 5713768 +1624568 5712488 1618264 5711808 1620040 5713712 1620104 5713768 +1620040 5713712 1620072 5713752 1620104 5713768 1624568 5712488 +1624536 5712600 1624568 5712488 1620104 5713768 1620160 5713848 +1624568 5712488 1618184 5711672 1618264 5711808 1620040 5713712 +1624568 5712488 1621944 5703896 1618184 5707576 1618184 5711672 +1624536 5712600 1624544 5712768 1624568 5712488 1620104 5713768 +1618264 5711808 1619952 5713672 1620040 5713712 1624568 5712488 +1624568 5712488 1618184 5707576 1618184 5711672 1618264 5711808 +1625960 5713048 1627328 5706984 1627296 5706984 1624568 5712488 +1625960 5713048 1624616 5712432 1624568 5712488 1624544 5712768 +1624568 5712488 1624536 5712600 1624544 5712768 1624616 5712432 +1624544 5712768 1625960 5713048 1624616 5712432 1624536 5712600 +1624568 5712488 1624616 5712432 1627296 5706984 1627272 5706968 +1624568 5712488 1624616 5712432 1627272 5706968 1627248 5706936 +1624616 5712432 1627296 5706984 1627272 5706968 1627248 5706936 +1624568 5712488 1624616 5712432 1627248 5706936 1627208 5706856 +1624616 5712432 1627272 5706968 1627248 5706936 1627208 5706856 +1624616 5712432 1627208 5706856 1624568 5712488 1624536 5712600 +1624568 5712488 1624616 5712432 1627208 5706856 1621944 5703896 +1624616 5712432 1627248 5706936 1627208 5706856 1621944 5703896 +1624568 5712488 1624616 5712432 1621944 5703896 1618184 5707576 +1621944 5703896 1621912 5703896 1618184 5707576 1624616 5712432 +1624568 5712488 1624616 5712432 1618184 5707576 1618184 5711672 +1618184 5707576 1618088 5711560 1618184 5711672 1624616 5712432 +1624616 5712432 1621944 5703896 1618184 5707576 1618184 5711672 +1624568 5712488 1624536 5712600 1624616 5712432 1618184 5711672 +1624616 5712432 1627208 5706856 1621944 5703896 1618184 5707576 +1624616 5712432 1625960 5713048 1627296 5706984 1627272 5706968 +1625960 5713048 1627296 5706984 1624616 5712432 1624544 5712768 +1625960 5713048 1624616 5712432 1624544 5712768 1624568 5712968 +1627208 5706856 1627208 5706816 1621944 5703896 1624616 5712432 +1624568 5712488 1624616 5712432 1618184 5711672 1618264 5711808 +1624568 5712488 1624616 5712432 1618264 5711808 1620040 5713712 +1624616 5712432 1618184 5707576 1618184 5711672 1618264 5711808 +1624568 5712488 1624536 5712600 1624616 5712432 1618264 5711808 +1627296 5706984 1624616 5712432 1625960 5713048 1627328 5706984 +1624616 5712432 1624664 5712432 1627296 5706984 1627272 5706968 +1624616 5712432 1624664 5712432 1627272 5706968 1627248 5706936 +1624616 5712432 1625960 5713048 1624664 5712432 1627272 5706968 +1625960 5713048 1624664 5712432 1624616 5712432 1624544 5712768 +1624616 5712432 1624536 5712600 1624544 5712768 1624664 5712432 +1624616 5712432 1624568 5712488 1624536 5712600 1624664 5712432 +1624536 5712600 1624544 5712768 1624664 5712432 1624568 5712488 +1624664 5712432 1627272 5706968 1624616 5712432 1624568 5712488 +1624544 5712768 1625960 5713048 1624664 5712432 1624536 5712600 +1624664 5712432 1625960 5713048 1627296 5706984 1627272 5706968 +1625960 5713048 1627296 5706984 1624664 5712432 1624544 5712768 +1625960 5713048 1624664 5712432 1624544 5712768 1624568 5712968 +1624664 5712432 1624536 5712600 1624544 5712768 1624568 5712968 +1625960 5713048 1627296 5706984 1624664 5712432 1624568 5712968 +1625960 5713048 1624664 5712432 1624568 5712968 1625344 5713632 +1627296 5706984 1624664 5712432 1625960 5713048 1627328 5706984 +1624664 5712432 1624904 5712552 1625960 5713048 1627296 5706984 +1624664 5712432 1624904 5712552 1627296 5706984 1627272 5706968 +1624664 5712432 1624568 5712968 1624904 5712552 1627296 5706984 +1624904 5712552 1624568 5712968 1625960 5713048 1627296 5706984 +1624568 5712968 1624904 5712552 1624664 5712432 1624544 5712768 +1624664 5712432 1624536 5712600 1624544 5712768 1624904 5712552 +1624664 5712432 1624568 5712488 1624536 5712600 1624904 5712552 +1624904 5712552 1627296 5706984 1624664 5712432 1624536 5712600 +1624568 5712968 1625960 5713048 1624904 5712552 1624544 5712768 +1624544 5712768 1624568 5712968 1624904 5712552 1624536 5712600 +1625960 5713048 1624904 5712552 1624568 5712968 1625344 5713632 +1625960 5713048 1624904 5712552 1625344 5713632 1625440 5713680 +1624568 5712968 1625072 5713648 1625344 5713632 1624904 5712552 +1624568 5712968 1624568 5713248 1625072 5713648 1624904 5712552 +1625960 5713048 1627296 5706984 1624904 5712552 1625344 5713632 +1624904 5712552 1624544 5712768 1624568 5712968 1625072 5713648 +1625344 5713632 1625960 5713048 1624904 5712552 1625072 5713648 +1625960 5713048 1627328 5706984 1627296 5706984 1624904 5712552 +1624904 5712552 1625232 5712632 1627296 5706984 1624664 5712432 +1627296 5706984 1627272 5706968 1624664 5712432 1625232 5712632 +1625960 5713048 1625232 5712632 1624904 5712552 1625344 5713632 +1625960 5713048 1625232 5712632 1625344 5713632 1625440 5713680 +1624904 5712552 1625344 5713632 1625232 5712632 1624664 5712432 +1625232 5712632 1625960 5713048 1627296 5706984 1624664 5712432 +1625960 5713048 1627296 5706984 1625232 5712632 1625344 5713632 +1624904 5712552 1625072 5713648 1625344 5713632 1625232 5712632 +1624904 5712552 1624568 5712968 1625072 5713648 1625232 5712632 +1624568 5712968 1624568 5713248 1625072 5713648 1625232 5712632 +1624568 5712968 1624568 5713248 1625232 5712632 1624904 5712552 +1625344 5713632 1625960 5713048 1625232 5712632 1625072 5713648 +1624904 5712552 1624568 5712968 1625232 5712632 1624664 5712432 +1624904 5712552 1624544 5712768 1624568 5712968 1625232 5712632 +1625072 5713648 1625344 5713632 1625232 5712632 1624568 5713248 +1624568 5713248 1624608 5713400 1625072 5713648 1625232 5712632 +1627296 5706984 1625232 5712632 1625960 5713048 1627328 5706984 +1625960 5713048 1625552 5712856 1625344 5713632 1625440 5713680 +1625344 5713632 1625552 5712856 1625232 5712632 1625072 5713648 +1625552 5712856 1625960 5713048 1625232 5712632 1625072 5713648 +1625232 5712632 1625552 5712856 1625960 5713048 1627296 5706984 +1625960 5713048 1625232 5712632 1625552 5712856 1625440 5713680 +1625552 5712856 1625072 5713648 1625344 5713632 1625440 5713680 +1625232 5712632 1624568 5713248 1625072 5713648 1625552 5712856 +1625960 5713048 1625552 5712856 1625440 5713680 1625768 5713824 +1625440 5713680 1625696 5712944 1625552 5712856 1625344 5713632 +1625552 5712856 1625696 5712944 1625960 5713048 1625232 5712632 +1625696 5712944 1625960 5713048 1625552 5712856 1625344 5713632 +1625552 5712856 1625072 5713648 1625344 5713632 1625696 5712944 +1625440 5713680 1625960 5713048 1625696 5712944 1625344 5713632 +1625960 5713048 1625696 5712944 1625440 5713680 1625768 5713824 +1626496 5713456 1627024 5713000 1629904 5706120 1629808 5706208 +1627024 5713000 1627448 5719792 1629904 5706120 1629808 5706208 +1626496 5713456 1627448 5719792 1627024 5713000 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1627024 5713000 +1626496 5713456 1627024 5713000 1629808 5706208 1626480 5713384 +1626496 5713456 1627448 5719792 1627024 5713000 1626480 5713384 +1629808 5706208 1626440 5713328 1626480 5713384 1627024 5713000 +1629808 5706208 1627328 5706984 1626440 5713328 1627024 5713000 +1627328 5706984 1626344 5713272 1626440 5713328 1627024 5713000 +1629808 5706208 1627368 5706952 1627328 5706984 1627024 5713000 +1627328 5706984 1626080 5713112 1626344 5713272 1627024 5713000 +1626344 5713272 1626440 5713328 1627024 5713000 1626080 5713112 +1627328 5706984 1625960 5713048 1626080 5713112 1627024 5713000 +1627328 5706984 1627296 5706984 1625960 5713048 1627024 5713000 +1625960 5713048 1626080 5713112 1627024 5713000 1627296 5706984 +1627296 5706984 1625232 5712632 1625960 5713048 1627024 5713000 +1627296 5706984 1625232 5712632 1627024 5713000 1627328 5706984 +1627296 5706984 1624664 5712432 1625232 5712632 1627024 5713000 +1625232 5712632 1625552 5712856 1625960 5713048 1627024 5713000 +1625552 5712856 1625696 5712944 1625960 5713048 1627024 5713000 +1625960 5713048 1626080 5713112 1627024 5713000 1625552 5712856 +1625232 5712632 1625552 5712856 1627024 5713000 1627296 5706984 +1626080 5713112 1626280 5713256 1626344 5713272 1627024 5713000 +1626080 5713112 1626344 5713272 1627024 5713000 1625960 5713048 +1627328 5706984 1627296 5706984 1627024 5713000 1629808 5706208 +1626440 5713328 1626480 5713384 1627024 5713000 1626344 5713272 +1626480 5713384 1626496 5713456 1627024 5713000 1626440 5713328 +1627024 5713000 1629904 5706120 1629808 5706208 1627328 5706984 +1627448 5719792 1627024 5713000 1626496 5713456 1626472 5713592 +1627448 5719792 1629904 5706120 1627024 5713000 1626472 5713592 +1627024 5713000 1626480 5713384 1626496 5713456 1626472 5713592 +1627448 5719792 1627024 5713000 1626472 5713592 1627384 5719672 +1627448 5719792 1627024 5713000 1627384 5719672 1627400 5719704 +1627448 5719792 1629904 5706120 1627024 5713000 1627384 5719672 +1626472 5713592 1626336 5714040 1627384 5719672 1627024 5713000 +1626472 5713592 1626456 5713624 1626336 5714040 1627024 5713000 +1627384 5719672 1627448 5719792 1627024 5713000 1626336 5714040 +1627024 5713000 1626496 5713456 1626472 5713592 1626336 5714040 +1626336 5714040 1627336 5719640 1627384 5719672 1627024 5713000 +1629904 5706120 1627024 5713000 1627448 5719792 1629984 5706008 +1627024 5713000 1627064 5713000 1629904 5706120 1629808 5706208 +1627448 5719792 1627064 5713000 1627024 5713000 1627384 5719672 +1627448 5719792 1627064 5713000 1627384 5719672 1627400 5719704 +1627024 5713000 1627384 5719672 1627064 5713000 1629808 5706208 +1627064 5713000 1627448 5719792 1629904 5706120 1629808 5706208 +1627448 5719792 1629904 5706120 1627064 5713000 1627384 5719672 +1629904 5706120 1629824 5706192 1629808 5706208 1627064 5713000 +1627024 5713000 1626336 5714040 1627384 5719672 1627064 5713000 +1627384 5719672 1627448 5719792 1627064 5713000 1626336 5714040 +1627024 5713000 1626336 5714040 1627064 5713000 1629808 5706208 +1627024 5713000 1626472 5713592 1626336 5714040 1627064 5713000 +1627024 5713000 1626472 5713592 1627064 5713000 1629808 5706208 +1626472 5713592 1626456 5713624 1626336 5714040 1627064 5713000 +1626336 5714040 1627384 5719672 1627064 5713000 1626472 5713592 +1627024 5713000 1627064 5713000 1629808 5706208 1627328 5706984 +1627064 5713000 1629904 5706120 1629808 5706208 1627328 5706984 +1627024 5713000 1626472 5713592 1627064 5713000 1627328 5706984 +1629808 5706208 1627368 5706952 1627328 5706984 1627064 5713000 +1627024 5713000 1627064 5713000 1627328 5706984 1627296 5706984 +1627024 5713000 1627064 5713000 1627296 5706984 1625232 5712632 +1627024 5713000 1626472 5713592 1627064 5713000 1627296 5706984 +1627064 5713000 1629808 5706208 1627328 5706984 1627296 5706984 +1627024 5713000 1626496 5713456 1626472 5713592 1627064 5713000 +1627024 5713000 1626496 5713456 1627064 5713000 1627296 5706984 +1627024 5713000 1626480 5713384 1626496 5713456 1627064 5713000 +1626472 5713592 1626336 5714040 1627064 5713000 1626496 5713456 +1626336 5714040 1627336 5719640 1627384 5719672 1627064 5713000 +1629904 5706120 1627064 5713000 1627448 5719792 1629984 5706008 +1627064 5713000 1627136 5713048 1629904 5706120 1629808 5706208 +1627064 5713000 1627136 5713048 1629808 5706208 1627328 5706984 +1627136 5713048 1629904 5706120 1629808 5706208 1627328 5706984 +1627064 5713000 1627448 5719792 1627136 5713048 1627328 5706984 +1627448 5719792 1627136 5713048 1627064 5713000 1627384 5719672 +1627448 5719792 1627136 5713048 1627384 5719672 1627400 5719704 +1627064 5713000 1626336 5714040 1627384 5719672 1627136 5713048 +1627136 5713048 1627328 5706984 1627064 5713000 1626336 5714040 +1627384 5719672 1627448 5719792 1627136 5713048 1626336 5714040 +1627136 5713048 1627448 5719792 1629904 5706120 1629808 5706208 +1627448 5719792 1629904 5706120 1627136 5713048 1627384 5719672 +1629808 5706208 1627368 5706952 1627328 5706984 1627136 5713048 +1629904 5706120 1629824 5706192 1629808 5706208 1627136 5713048 +1627064 5713000 1626472 5713592 1626336 5714040 1627136 5713048 +1626336 5714040 1627384 5719672 1627136 5713048 1626472 5713592 +1627064 5713000 1626472 5713592 1627136 5713048 1627328 5706984 +1626472 5713592 1626456 5713624 1626336 5714040 1627136 5713048 +1626456 5713624 1626360 5713736 1626336 5714040 1627136 5713048 +1626336 5714040 1627384 5719672 1627136 5713048 1626456 5713624 +1627064 5713000 1626496 5713456 1626472 5713592 1627136 5713048 +1627064 5713000 1626496 5713456 1627136 5713048 1627328 5706984 +1626472 5713592 1626456 5713624 1627136 5713048 1626496 5713456 +1627064 5713000 1627136 5713048 1627328 5706984 1627296 5706984 +1627064 5713000 1627024 5713000 1626496 5713456 1627136 5713048 +1627024 5713000 1626480 5713384 1626496 5713456 1627136 5713048 +1627064 5713000 1627024 5713000 1627136 5713048 1627328 5706984 +1626496 5713456 1626472 5713592 1627136 5713048 1627024 5713000 +1626336 5714040 1627336 5719640 1627384 5719672 1627136 5713048 +1629904 5706120 1627136 5713048 1627448 5719792 1629984 5706008 +1627448 5719792 1629736 5726176 1629984 5706008 1627136 5713048 +1629904 5706120 1629808 5706208 1627136 5713048 1629984 5706008 +1627136 5713048 1627384 5719672 1627448 5719792 1629984 5706008 +1629984 5706008 1627184 5713128 1627448 5719792 1629736 5726176 +1627448 5719792 1627184 5713128 1627136 5713048 1627384 5719672 +1627448 5719792 1627184 5713128 1627384 5719672 1627400 5719704 +1627136 5713048 1626336 5714040 1627384 5719672 1627184 5713128 +1627136 5713048 1626456 5713624 1626336 5714040 1627184 5713128 +1626456 5713624 1626360 5713736 1626336 5714040 1627184 5713128 +1626336 5714040 1627384 5719672 1627184 5713128 1626456 5713624 +1627184 5713128 1629984 5706008 1627136 5713048 1626456 5713624 +1627384 5719672 1627448 5719792 1627184 5713128 1626336 5714040 +1627448 5719792 1629984 5706008 1627184 5713128 1627384 5719672 +1627136 5713048 1626472 5713592 1626456 5713624 1627184 5713128 +1626456 5713624 1626336 5714040 1627184 5713128 1626472 5713592 +1627136 5713048 1626472 5713592 1627184 5713128 1629984 5706008 +1627136 5713048 1626496 5713456 1626472 5713592 1627184 5713128 +1627136 5713048 1626496 5713456 1627184 5713128 1629984 5706008 +1626472 5713592 1626456 5713624 1627184 5713128 1626496 5713456 +1627136 5713048 1627024 5713000 1626496 5713456 1627184 5713128 +1627024 5713000 1626480 5713384 1626496 5713456 1627184 5713128 +1627136 5713048 1627024 5713000 1627184 5713128 1629984 5706008 +1626496 5713456 1626472 5713592 1627184 5713128 1627024 5713000 +1627136 5713048 1627064 5713000 1627024 5713000 1627184 5713128 +1626336 5714040 1627336 5719640 1627384 5719672 1627184 5713128 +1627136 5713048 1627184 5713128 1629984 5706008 1629904 5706120 +1627136 5713048 1627184 5713128 1629904 5706120 1629808 5706208 +1627136 5713048 1627184 5713128 1629808 5706208 1627328 5706984 +1627136 5713048 1627024 5713000 1627184 5713128 1629808 5706208 +1627184 5713128 1627448 5719792 1629984 5706008 1629904 5706120 +1629904 5706120 1629824 5706192 1629808 5706208 1627184 5713128 +1627184 5713128 1629984 5706008 1629904 5706120 1629808 5706208 +1629984 5706008 1627192 5713168 1627448 5719792 1629736 5726176 +1627184 5713128 1627192 5713168 1629984 5706008 1629904 5706120 +1627184 5713128 1627448 5719792 1627192 5713168 1629904 5706120 +1627448 5719792 1627192 5713168 1627184 5713128 1627384 5719672 +1627448 5719792 1627192 5713168 1627384 5719672 1627400 5719704 +1627184 5713128 1626336 5714040 1627384 5719672 1627192 5713168 +1627184 5713128 1626456 5713624 1626336 5714040 1627192 5713168 +1626456 5713624 1626360 5713736 1626336 5714040 1627192 5713168 +1627184 5713128 1626472 5713592 1626456 5713624 1627192 5713168 +1626456 5713624 1626336 5714040 1627192 5713168 1626472 5713592 +1626336 5714040 1627384 5719672 1627192 5713168 1626456 5713624 +1627192 5713168 1629904 5706120 1627184 5713128 1626472 5713592 +1627384 5719672 1627448 5719792 1627192 5713168 1626336 5714040 +1627192 5713168 1627448 5719792 1629984 5706008 1629904 5706120 +1627448 5719792 1629984 5706008 1627192 5713168 1627384 5719672 +1627184 5713128 1626496 5713456 1626472 5713592 1627192 5713168 +1626472 5713592 1626456 5713624 1627192 5713168 1626496 5713456 +1627184 5713128 1626496 5713456 1627192 5713168 1629904 5706120 +1627184 5713128 1627024 5713000 1626496 5713456 1627192 5713168 +1627024 5713000 1626480 5713384 1626496 5713456 1627192 5713168 +1627184 5713128 1627024 5713000 1627192 5713168 1629904 5706120 +1626496 5713456 1626472 5713592 1627192 5713168 1626480 5713384 +1627184 5713128 1627136 5713048 1627024 5713000 1627192 5713168 +1627024 5713000 1626440 5713328 1626480 5713384 1627192 5713168 +1627024 5713000 1626480 5713384 1627192 5713168 1627184 5713128 +1626336 5714040 1627336 5719640 1627384 5719672 1627192 5713168 +1627184 5713128 1627192 5713168 1629904 5706120 1629808 5706208 +1627184 5713128 1627192 5713168 1629808 5706208 1627136 5713048 +1627192 5713168 1629984 5706008 1629904 5706120 1629808 5706208 +1627184 5713128 1627024 5713000 1627192 5713168 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1627192 5713168 +1626336 5714040 1627176 5713224 1627192 5713168 1626456 5713624 +1626336 5714040 1627176 5713224 1626456 5713624 1626360 5713736 +1627192 5713168 1626472 5713592 1626456 5713624 1627176 5713224 +1627192 5713168 1626496 5713456 1626472 5713592 1627176 5713224 +1626472 5713592 1626456 5713624 1627176 5713224 1626496 5713456 +1626456 5713624 1626336 5714040 1627176 5713224 1626472 5713592 +1627192 5713168 1627176 5713224 1627384 5719672 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1627176 5713224 +1627176 5713224 1627448 5719792 1627192 5713168 1626496 5713456 +1627192 5713168 1627176 5713224 1627448 5719792 1629984 5706008 +1627176 5713224 1626336 5714040 1627384 5719672 1627448 5719792 +1626336 5714040 1627384 5719672 1627176 5713224 1626456 5713624 +1627192 5713168 1626480 5713384 1626496 5713456 1627176 5713224 +1626496 5713456 1626472 5713592 1627176 5713224 1626480 5713384 +1627192 5713168 1627024 5713000 1626480 5713384 1627176 5713224 +1627192 5713168 1627024 5713000 1627176 5713224 1627448 5719792 +1626480 5713384 1626496 5713456 1627176 5713224 1627024 5713000 +1627024 5713000 1626440 5713328 1626480 5713384 1627176 5713224 +1627192 5713168 1627184 5713128 1627024 5713000 1627176 5713224 +1627024 5713000 1626480 5713384 1627176 5713224 1627184 5713128 +1627192 5713168 1627184 5713128 1627176 5713224 1627448 5719792 +1627184 5713128 1627136 5713048 1627024 5713000 1627176 5713224 +1627024 5713000 1626480 5713384 1627176 5713224 1627136 5713048 +1627184 5713128 1627136 5713048 1627176 5713224 1627192 5713168 +1627136 5713048 1627064 5713000 1627024 5713000 1627176 5713224 +1627384 5719672 1627176 5713224 1626336 5714040 1627336 5719640 +1627384 5719672 1627448 5719792 1627176 5713224 1627336 5719640 +1627176 5713224 1626456 5713624 1626336 5714040 1627336 5719640 +1626336 5714040 1627312 5719640 1627336 5719640 1627176 5713224 +1627448 5719792 1627184 5713280 1627176 5713224 1627384 5719672 +1627448 5719792 1627184 5713280 1627384 5719672 1627400 5719704 +1627192 5713168 1627184 5713280 1627448 5719792 1629984 5706008 +1627448 5719792 1629736 5726176 1629984 5706008 1627184 5713280 +1627192 5713168 1627184 5713280 1629984 5706008 1629904 5706120 +1627192 5713168 1627184 5713280 1629904 5706120 1629808 5706208 +1627184 5713280 1627448 5719792 1629984 5706008 1629904 5706120 +1627176 5713224 1627336 5719640 1627384 5719672 1627184 5713280 +1627384 5719672 1627448 5719792 1627184 5713280 1627336 5719640 +1627184 5713280 1627192 5713168 1627176 5713224 1627336 5719640 +1627192 5713168 1627176 5713224 1627184 5713280 1629904 5706120 +1627448 5719792 1629984 5706008 1627184 5713280 1627384 5719672 +1627176 5713224 1626336 5714040 1627336 5719640 1627184 5713280 +1627336 5719640 1627384 5719672 1627184 5713280 1626336 5714040 +1627176 5713224 1626336 5714040 1627184 5713280 1627192 5713168 +1627176 5713224 1626456 5713624 1626336 5714040 1627184 5713280 +1626456 5713624 1626360 5713736 1626336 5714040 1627184 5713280 +1627176 5713224 1626472 5713592 1626456 5713624 1627184 5713280 +1627176 5713224 1626496 5713456 1626472 5713592 1627184 5713280 +1627176 5713224 1626480 5713384 1626496 5713456 1627184 5713280 +1626496 5713456 1626472 5713592 1627184 5713280 1626480 5713384 +1626472 5713592 1626456 5713624 1627184 5713280 1626496 5713456 +1627176 5713224 1626480 5713384 1627184 5713280 1627192 5713168 +1626456 5713624 1626336 5714040 1627184 5713280 1626472 5713592 +1627176 5713224 1627024 5713000 1626480 5713384 1627184 5713280 +1626336 5714040 1627336 5719640 1627184 5713280 1626456 5713624 +1626336 5714040 1627312 5719640 1627336 5719640 1627184 5713280 +1629984 5706008 1627216 5713328 1627448 5719792 1629736 5726176 +1627184 5713280 1627216 5713328 1629984 5706008 1629904 5706120 +1627184 5713280 1627216 5713328 1629904 5706120 1627192 5713168 +1629904 5706120 1629808 5706208 1627192 5713168 1627216 5713328 +1627192 5713168 1627184 5713280 1627216 5713328 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1627216 5713328 +1627216 5713328 1629984 5706008 1629904 5706120 1629808 5706208 +1627184 5713280 1627216 5713328 1627192 5713168 1627176 5713224 +1627216 5713328 1629808 5706208 1627192 5713168 1627176 5713224 +1627184 5713280 1627448 5719792 1627216 5713328 1627176 5713224 +1627448 5719792 1627216 5713328 1627184 5713280 1627384 5719672 +1627448 5719792 1627216 5713328 1627384 5719672 1627400 5719704 +1627184 5713280 1627336 5719640 1627384 5719672 1627216 5713328 +1627184 5713280 1626336 5714040 1627336 5719640 1627216 5713328 +1627336 5719640 1627384 5719672 1627216 5713328 1626336 5714040 +1627216 5713328 1627176 5713224 1627184 5713280 1626336 5714040 +1627384 5719672 1627448 5719792 1627216 5713328 1627336 5719640 +1627216 5713328 1627448 5719792 1629984 5706008 1629904 5706120 +1627448 5719792 1629984 5706008 1627216 5713328 1627384 5719672 +1627184 5713280 1626456 5713624 1626336 5714040 1627216 5713328 +1626456 5713624 1626360 5713736 1626336 5714040 1627216 5713328 +1626336 5714040 1627336 5719640 1627216 5713328 1626456 5713624 +1627184 5713280 1626472 5713592 1626456 5713624 1627216 5713328 +1627184 5713280 1626496 5713456 1626472 5713592 1627216 5713328 +1627184 5713280 1626480 5713384 1626496 5713456 1627216 5713328 +1626472 5713592 1626456 5713624 1627216 5713328 1626496 5713456 +1627184 5713280 1626496 5713456 1627216 5713328 1627176 5713224 +1626456 5713624 1626336 5714040 1627216 5713328 1626472 5713592 +1626336 5714040 1627312 5719640 1627336 5719640 1627216 5713328 +1629808 5706208 1627184 5713128 1627192 5713168 1627216 5713328 +1629984 5706008 1627224 5713384 1627448 5719792 1629736 5726176 +1627216 5713328 1627224 5713384 1629984 5706008 1629904 5706120 +1627216 5713328 1627224 5713384 1629904 5706120 1629808 5706208 +1627216 5713328 1627224 5713384 1629808 5706208 1627192 5713168 +1629904 5706120 1629824 5706192 1629808 5706208 1627224 5713384 +1627224 5713384 1629984 5706008 1629904 5706120 1629808 5706208 +1627216 5713328 1627448 5719792 1627224 5713384 1629808 5706208 +1627448 5719792 1627224 5713384 1627216 5713328 1627384 5719672 +1627448 5719792 1627224 5713384 1627384 5719672 1627400 5719704 +1627216 5713328 1627336 5719640 1627384 5719672 1627224 5713384 +1627216 5713328 1626336 5714040 1627336 5719640 1627224 5713384 +1627216 5713328 1626456 5713624 1626336 5714040 1627224 5713384 +1626456 5713624 1626360 5713736 1626336 5714040 1627224 5713384 +1626336 5714040 1627336 5719640 1627224 5713384 1626456 5713624 +1627336 5719640 1627384 5719672 1627224 5713384 1626336 5714040 +1627224 5713384 1629808 5706208 1627216 5713328 1626456 5713624 +1627384 5719672 1627448 5719792 1627224 5713384 1627336 5719640 +1627224 5713384 1627448 5719792 1629984 5706008 1629904 5706120 +1627448 5719792 1629984 5706008 1627224 5713384 1627384 5719672 +1627216 5713328 1626472 5713592 1626456 5713624 1627224 5713384 +1626456 5713624 1626336 5714040 1627224 5713384 1626472 5713592 +1627216 5713328 1626496 5713456 1626472 5713592 1627224 5713384 +1627216 5713328 1627184 5713280 1626496 5713456 1627224 5713384 +1627184 5713280 1626480 5713384 1626496 5713456 1627224 5713384 +1626496 5713456 1626472 5713592 1627224 5713384 1627184 5713280 +1627216 5713328 1627184 5713280 1627224 5713384 1629808 5706208 +1626472 5713592 1626456 5713624 1627224 5713384 1626496 5713456 +1626336 5714040 1627312 5719640 1627336 5719640 1627224 5713384 +1626336 5714040 1627224 5713424 1627224 5713384 1626456 5713624 +1626336 5714040 1627224 5713424 1626456 5713624 1626360 5713736 +1627224 5713384 1626472 5713592 1626456 5713624 1627224 5713424 +1626456 5713624 1626336 5714040 1627224 5713424 1626472 5713592 +1627224 5713384 1627224 5713424 1627336 5719640 1627384 5719672 +1627224 5713384 1627224 5713424 1627384 5719672 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1627224 5713424 +1627224 5713424 1627336 5719640 1627384 5719672 1627448 5719792 +1627224 5713424 1627448 5719792 1627224 5713384 1626472 5713592 +1627224 5713384 1627224 5713424 1627448 5719792 1629984 5706008 +1627448 5719792 1629736 5726176 1629984 5706008 1627224 5713424 +1627224 5713424 1627384 5719672 1627448 5719792 1629984 5706008 +1627224 5713384 1627224 5713424 1629984 5706008 1629904 5706120 +1627224 5713384 1627224 5713424 1629904 5706120 1629808 5706208 +1627224 5713384 1626472 5713592 1627224 5713424 1629904 5706120 +1627224 5713424 1627448 5719792 1629984 5706008 1629904 5706120 +1627224 5713424 1626336 5714040 1627336 5719640 1627384 5719672 +1626336 5714040 1627336 5719640 1627224 5713424 1626456 5713624 +1627224 5713384 1626496 5713456 1626472 5713592 1627224 5713424 +1626472 5713592 1626456 5713624 1627224 5713424 1626496 5713456 +1627224 5713384 1627184 5713280 1626496 5713456 1627224 5713424 +1627184 5713280 1626480 5713384 1626496 5713456 1627224 5713424 +1627224 5713384 1627216 5713328 1627184 5713280 1627224 5713424 +1627224 5713384 1627184 5713280 1627224 5713424 1629904 5706120 +1626496 5713456 1626472 5713592 1627224 5713424 1627184 5713280 +1627336 5719640 1627224 5713424 1626336 5714040 1627312 5719640 +1627224 5713424 1627192 5713448 1627336 5719640 1627384 5719672 +1627224 5713424 1627192 5713448 1627384 5719672 1627448 5719792 +1627224 5713424 1626336 5714040 1627192 5713448 1627384 5719672 +1626336 5714040 1627192 5713448 1627224 5713424 1626456 5713624 +1626336 5714040 1627192 5713448 1626456 5713624 1626360 5713736 +1627224 5713424 1626472 5713592 1626456 5713624 1627192 5713448 +1627224 5713424 1626496 5713456 1626472 5713592 1627192 5713448 +1626472 5713592 1626456 5713624 1627192 5713448 1626496 5713456 +1627192 5713448 1627384 5719672 1627224 5713424 1626496 5713456 +1626456 5713624 1626336 5714040 1627192 5713448 1626472 5713592 +1627192 5713448 1626336 5714040 1627336 5719640 1627384 5719672 +1626336 5714040 1627336 5719640 1627192 5713448 1626456 5713624 +1627224 5713424 1627184 5713280 1626496 5713456 1627192 5713448 +1627184 5713280 1626480 5713384 1626496 5713456 1627192 5713448 +1626496 5713456 1626472 5713592 1627192 5713448 1627184 5713280 +1627224 5713424 1627224 5713384 1627184 5713280 1627192 5713448 +1627224 5713384 1627216 5713328 1627184 5713280 1627192 5713448 +1627224 5713384 1627216 5713328 1627192 5713448 1627224 5713424 +1627224 5713424 1627224 5713384 1627192 5713448 1627384 5719672 +1627184 5713280 1626496 5713456 1627192 5713448 1627216 5713328 +1627336 5719640 1627192 5713448 1626336 5714040 1627312 5719640 +1626496 5713456 1627040 5713448 1627184 5713280 1626480 5713384 +1627184 5713280 1627176 5713224 1626480 5713384 1627040 5713448 +1626480 5713384 1626496 5713456 1627040 5713448 1627176 5713224 +1627192 5713448 1627040 5713448 1626496 5713456 1626472 5713592 +1627192 5713448 1627040 5713448 1626472 5713592 1626456 5713624 +1627040 5713448 1626496 5713456 1626472 5713592 1626456 5713624 +1627192 5713448 1627040 5713448 1626456 5713624 1626336 5714040 +1626456 5713624 1626360 5713736 1626336 5714040 1627040 5713448 +1627040 5713448 1626472 5713592 1626456 5713624 1626336 5714040 +1627192 5713448 1627184 5713280 1627040 5713448 1626336 5714040 +1627192 5713448 1627040 5713448 1626336 5714040 1627336 5719640 +1626496 5713456 1626472 5713592 1627040 5713448 1626480 5713384 +1627040 5713448 1627192 5713448 1627184 5713280 1627176 5713224 +1627176 5713224 1627024 5713000 1626480 5713384 1627040 5713448 +1627176 5713224 1627024 5713000 1627040 5713448 1627184 5713280 +1627176 5713224 1627136 5713048 1627024 5713000 1627040 5713448 +1626480 5713384 1626496 5713456 1627040 5713448 1627024 5713000 +1627024 5713000 1626440 5713328 1626480 5713384 1627040 5713448 +1627184 5713280 1627040 5713448 1627192 5713448 1627216 5713328 +1627192 5713448 1627224 5713384 1627216 5713328 1627040 5713448 +1627040 5713448 1626336 5714040 1627192 5713448 1627216 5713328 +1627184 5713280 1627176 5713224 1627040 5713448 1627216 5713328 +1627040 5713448 1626952 5713376 1626480 5713384 1626496 5713456 +1627040 5713448 1626952 5713376 1626496 5713456 1626472 5713592 +1626952 5713376 1626480 5713384 1626496 5713456 1626472 5713592 +1627040 5713448 1626952 5713376 1626472 5713592 1626456 5713624 +1627040 5713448 1627024 5713000 1626952 5713376 1626472 5713592 +1626952 5713376 1627024 5713000 1626480 5713384 1626496 5713456 +1627024 5713000 1626952 5713376 1627040 5713448 1627176 5713224 +1627040 5713448 1627184 5713280 1627176 5713224 1626952 5713376 +1627024 5713000 1626952 5713376 1627176 5713224 1627136 5713048 +1626952 5713376 1626472 5713592 1627040 5713448 1627184 5713280 +1627040 5713448 1627216 5713328 1627184 5713280 1626952 5713376 +1627024 5713000 1626480 5713384 1626952 5713376 1627176 5713224 +1627176 5713224 1627024 5713000 1626952 5713376 1627184 5713280 +1626480 5713384 1626952 5713376 1627024 5713000 1626440 5713328 +1626480 5713384 1626496 5713456 1626952 5713376 1626440 5713328 +1626952 5713376 1627176 5713224 1627024 5713000 1626440 5713328 +1627024 5713000 1626344 5713272 1626440 5713328 1626952 5713376 +1627024 5713000 1626880 5713288 1626952 5713376 1627176 5713224 +1627024 5713000 1626880 5713288 1627176 5713224 1627136 5713048 +1626880 5713288 1626440 5713328 1626952 5713376 1627176 5713224 +1627024 5713000 1626440 5713328 1626880 5713288 1627176 5713224 +1626952 5713376 1627184 5713280 1627176 5713224 1626880 5713288 +1626440 5713328 1626880 5713288 1627024 5713000 1626344 5713272 +1626952 5713376 1626880 5713288 1626440 5713328 1626480 5713384 +1626952 5713376 1626880 5713288 1626480 5713384 1626496 5713456 +1626952 5713376 1626880 5713288 1626496 5713456 1626472 5713592 +1626952 5713376 1627176 5713224 1626880 5713288 1626496 5713456 +1626880 5713288 1627024 5713000 1626440 5713328 1626480 5713384 +1626880 5713288 1626440 5713328 1626480 5713384 1626496 5713456 +1626880 5713288 1626864 5713232 1626440 5713328 1626480 5713384 +1626880 5713288 1627024 5713000 1626864 5713232 1626480 5713384 +1627024 5713000 1626864 5713232 1626880 5713288 1627176 5713224 +1627024 5713000 1626864 5713232 1627176 5713224 1627136 5713048 +1626880 5713288 1626952 5713376 1627176 5713224 1626864 5713232 +1626864 5713232 1626480 5713384 1626880 5713288 1627176 5713224 +1626864 5713232 1627024 5713000 1626440 5713328 1626480 5713384 +1627024 5713000 1626440 5713328 1626864 5713232 1627176 5713224 +1626440 5713328 1626864 5713232 1627024 5713000 1626344 5713272 +1627024 5713000 1626080 5713112 1626344 5713272 1626864 5713232 +1626440 5713328 1626480 5713384 1626864 5713232 1626344 5713272 +1626864 5713232 1627176 5713224 1627024 5713000 1626344 5713272 +1626880 5713288 1626864 5713232 1626480 5713384 1626496 5713456 +1626344 5713272 1626856 5713184 1627024 5713000 1626080 5713112 +1627024 5713000 1626856 5713184 1626864 5713232 1627176 5713224 +1627024 5713000 1626856 5713184 1627176 5713224 1627136 5713048 +1626864 5713232 1626880 5713288 1627176 5713224 1626856 5713184 +1626856 5713184 1626344 5713272 1626864 5713232 1627176 5713224 +1626856 5713184 1626864 5713232 1627176 5713224 1627136 5713048 +1626344 5713272 1626864 5713232 1626856 5713184 1626080 5713112 +1626856 5713184 1627136 5713048 1627024 5713000 1626080 5713112 +1626344 5713272 1626856 5713184 1626080 5713112 1626280 5713256 +1627024 5713000 1625960 5713048 1626080 5713112 1626856 5713184 +1626864 5713232 1626856 5713184 1626344 5713272 1626440 5713328 +1626864 5713232 1626856 5713184 1626440 5713328 1626480 5713384 +1626864 5713232 1626856 5713184 1626480 5713384 1626880 5713288 +1626864 5713232 1627176 5713224 1626856 5713184 1626480 5713384 +1626856 5713184 1626080 5713112 1626344 5713272 1626440 5713328 +1626856 5713184 1626344 5713272 1626440 5713328 1626480 5713384 +1627176 5713224 1627184 5713128 1627136 5713048 1626856 5713184 +1627024 5713000 1626856 5713184 1627136 5713048 1627064 5713000 +1626856 5713184 1626864 5713144 1626080 5713112 1626344 5713272 +1626856 5713184 1626864 5713144 1626344 5713272 1626440 5713328 +1626864 5713144 1626080 5713112 1626344 5713272 1626440 5713328 +1626856 5713184 1627024 5713000 1626864 5713144 1626440 5713328 +1627024 5713000 1626864 5713144 1626856 5713184 1627136 5713048 +1626856 5713184 1627176 5713224 1627136 5713048 1626864 5713144 +1626856 5713184 1626864 5713232 1627176 5713224 1626864 5713144 +1627176 5713224 1627136 5713048 1626864 5713144 1626864 5713232 +1626864 5713232 1626880 5713288 1627176 5713224 1626864 5713144 +1626864 5713144 1626440 5713328 1626856 5713184 1626864 5713232 +1627136 5713048 1627024 5713000 1626864 5713144 1627176 5713224 +1626864 5713144 1627024 5713000 1626080 5713112 1626344 5713272 +1627024 5713000 1626080 5713112 1626864 5713144 1627136 5713048 +1626080 5713112 1626280 5713256 1626344 5713272 1626864 5713144 +1626080 5713112 1626864 5713144 1627024 5713000 1625960 5713048 +1626856 5713184 1626864 5713144 1626440 5713328 1626480 5713384 +1627176 5713224 1627184 5713128 1627136 5713048 1626864 5713144 +1627024 5713000 1626864 5713144 1627136 5713048 1627064 5713000 +1626864 5713144 1626880 5713104 1626080 5713112 1626344 5713272 +1626864 5713144 1626880 5713104 1626344 5713272 1626440 5713328 +1626864 5713144 1627024 5713000 1626880 5713104 1626344 5713272 +1627024 5713000 1626880 5713104 1626864 5713144 1627136 5713048 +1626864 5713144 1627176 5713224 1627136 5713048 1626880 5713104 +1626864 5713144 1626864 5713232 1627176 5713224 1626880 5713104 +1626880 5713104 1626344 5713272 1626864 5713144 1627176 5713224 +1627136 5713048 1627024 5713000 1626880 5713104 1627176 5713224 +1626880 5713104 1627024 5713000 1626080 5713112 1626344 5713272 +1627024 5713000 1626080 5713112 1626880 5713104 1627136 5713048 +1626080 5713112 1626280 5713256 1626344 5713272 1626880 5713104 +1626080 5713112 1626880 5713104 1627024 5713000 1625960 5713048 +1627176 5713224 1627184 5713128 1627136 5713048 1626880 5713104 +1627024 5713000 1626880 5713104 1627136 5713048 1627064 5713000 +1626880 5713104 1626968 5713032 1626080 5713112 1626344 5713272 +1627024 5713000 1626968 5713032 1626880 5713104 1627136 5713048 +1626880 5713104 1627176 5713224 1627136 5713048 1626968 5713032 +1626880 5713104 1626864 5713144 1627176 5713224 1626968 5713032 +1626864 5713144 1626864 5713232 1627176 5713224 1626968 5713032 +1627176 5713224 1627136 5713048 1626968 5713032 1626864 5713144 +1626968 5713032 1626080 5713112 1626880 5713104 1626864 5713144 +1627136 5713048 1627024 5713000 1626968 5713032 1627176 5713224 +1627024 5713000 1626080 5713112 1626968 5713032 1627136 5713048 +1626080 5713112 1626968 5713032 1627024 5713000 1625960 5713048 +1627024 5713000 1625552 5712856 1625960 5713048 1626968 5713032 +1626080 5713112 1626880 5713104 1626968 5713032 1625960 5713048 +1626968 5713032 1627136 5713048 1627024 5713000 1625960 5713048 +1627176 5713224 1627184 5713128 1627136 5713048 1626968 5713032 +1627176 5713224 1627184 5713128 1626968 5713032 1626864 5713144 +1627136 5713048 1627024 5713000 1626968 5713032 1627184 5713128 +1627176 5713224 1627192 5713168 1627184 5713128 1626968 5713032 +1627024 5713000 1626968 5713032 1627136 5713048 1627064 5713000 +1626968 5713032 1627184 5713128 1627136 5713048 1627064 5713000 +1627024 5713000 1625960 5713048 1626968 5713032 1627064 5713000 +1629984 5706008 1627384 5714024 1627448 5719792 1629736 5726176 +1627448 5719792 1629624 5725984 1629736 5726176 1627384 5714024 +1627448 5719792 1627384 5714024 1627224 5713424 1627384 5719672 +1627448 5719792 1627384 5714024 1627384 5719672 1627400 5719704 +1627224 5713424 1627192 5713448 1627384 5719672 1627384 5714024 +1627384 5719672 1627448 5719792 1627384 5714024 1627192 5713448 +1627224 5713424 1627384 5714024 1629984 5706008 1629904 5706120 +1627224 5713424 1627384 5714024 1629904 5706120 1627224 5713384 +1629904 5706120 1629808 5706208 1627224 5713384 1627384 5714024 +1629904 5706120 1629824 5706192 1629808 5706208 1627384 5714024 +1629808 5706208 1627216 5713328 1627224 5713384 1627384 5714024 +1629808 5706208 1627192 5713168 1627216 5713328 1627384 5714024 +1627192 5713168 1627176 5713224 1627216 5713328 1627384 5714024 +1627216 5713328 1627224 5713384 1627384 5714024 1627192 5713168 +1629808 5706208 1627192 5713168 1627384 5714024 1629904 5706120 +1627224 5713384 1627224 5713424 1627384 5714024 1627216 5713328 +1627384 5714024 1629984 5706008 1629904 5706120 1629808 5706208 +1627192 5713448 1627336 5719640 1627384 5719672 1627384 5714024 +1627192 5713448 1627336 5719640 1627384 5714024 1627224 5713424 +1627384 5719672 1627448 5719792 1627384 5714024 1627336 5719640 +1627192 5713448 1626336 5714040 1627336 5719640 1627384 5714024 +1627192 5713448 1626336 5714040 1627384 5714024 1627224 5713424 +1627336 5719640 1627384 5719672 1627384 5714024 1626336 5714040 +1627192 5713448 1627040 5713448 1626336 5714040 1627384 5714024 +1627192 5713448 1627040 5713448 1627384 5714024 1627224 5713424 +1627040 5713448 1626456 5713624 1626336 5714040 1627384 5714024 +1626456 5713624 1626360 5713736 1626336 5714040 1627384 5714024 +1627040 5713448 1626472 5713592 1626456 5713624 1627384 5714024 +1626336 5714040 1627336 5719640 1627384 5714024 1626456 5713624 +1627040 5713448 1626456 5713624 1627384 5714024 1627192 5713448 +1629984 5706008 1629904 5706120 1627384 5714024 1629736 5726176 +1627384 5714024 1627384 5719672 1627448 5719792 1629736 5726176 +1627384 5714024 1627224 5713384 1627224 5713424 1627192 5713448 +1626336 5714040 1627312 5719640 1627336 5719640 1627384 5714024 +1627336 5719640 1627384 5719672 1627384 5714024 1627312 5719640 +1626336 5714040 1627312 5719640 1627384 5714024 1626456 5713624 +1626336 5714040 1626264 5714032 1627312 5719640 1627384 5714024 +1629984 5706008 1627384 5714024 1629736 5726176 1629944 5726576 +1629808 5706208 1627184 5713128 1627192 5713168 1627384 5714024 +1629736 5726176 1627432 5714024 1627384 5714024 1627448 5719792 +1629736 5726176 1627432 5714024 1627448 5719792 1629624 5725984 +1627384 5714024 1627432 5714024 1629984 5706008 1629904 5706120 +1627384 5714024 1627432 5714024 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1627432 5714024 +1627384 5714024 1627432 5714024 1629808 5706208 1627192 5713168 +1627384 5714024 1627432 5714024 1627192 5713168 1627216 5713328 +1627192 5713168 1627176 5713224 1627216 5713328 1627432 5714024 +1627384 5714024 1627432 5714024 1627216 5713328 1627224 5713384 +1627432 5714024 1627192 5713168 1627216 5713328 1627224 5713384 +1627432 5714024 1629808 5706208 1627192 5713168 1627216 5713328 +1627384 5714024 1627432 5714024 1627224 5713384 1627224 5713424 +1627432 5714024 1627216 5713328 1627224 5713384 1627224 5713424 +1627432 5714024 1629904 5706120 1629808 5706208 1627192 5713168 +1627432 5714024 1629984 5706008 1629904 5706120 1629808 5706208 +1627384 5714024 1627384 5719672 1627448 5719792 1627432 5714024 +1627448 5719792 1629736 5726176 1627432 5714024 1627384 5719672 +1627384 5719672 1627400 5719704 1627448 5719792 1627432 5714024 +1627384 5714024 1627336 5719640 1627384 5719672 1627432 5714024 +1627384 5714024 1627312 5719640 1627336 5719640 1627432 5714024 +1627384 5719672 1627448 5719792 1627432 5714024 1627336 5719640 +1627432 5714024 1627224 5713424 1627384 5714024 1627336 5719640 +1627384 5714024 1627432 5714024 1627224 5713424 1627192 5713448 +1627432 5714024 1629736 5726176 1629984 5706008 1629904 5706120 +1629736 5726176 1629984 5706008 1627432 5714024 1627448 5719792 +1629984 5706008 1627432 5714024 1629736 5726176 1629944 5726576 +1629808 5706208 1627184 5713128 1627192 5713168 1627432 5714024 +1629808 5706208 1627136 5713048 1627184 5713128 1627432 5714024 +1627192 5713168 1627216 5713328 1627432 5714024 1627184 5713128 +1629808 5706208 1627184 5713128 1627432 5714024 1629904 5706120 +1627432 5714024 1627488 5714064 1629984 5706008 1629904 5706120 +1627432 5714024 1627488 5714064 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1627488 5714064 +1627432 5714024 1627488 5714064 1629808 5706208 1627184 5713128 +1629808 5706208 1627136 5713048 1627184 5713128 1627488 5714064 +1627488 5714064 1629904 5706120 1629808 5706208 1627184 5713128 +1627488 5714064 1629984 5706008 1629904 5706120 1629808 5706208 +1627432 5714024 1629736 5726176 1627488 5714064 1627184 5713128 +1629736 5726176 1627488 5714064 1627432 5714024 1627448 5719792 +1627432 5714024 1627384 5719672 1627448 5719792 1627488 5714064 +1627384 5719672 1627400 5719704 1627448 5719792 1627488 5714064 +1629736 5726176 1627488 5714064 1627448 5719792 1629624 5725984 +1627448 5719792 1629600 5725952 1629624 5725984 1627488 5714064 +1627432 5714024 1627336 5719640 1627384 5719672 1627488 5714064 +1627384 5719672 1627448 5719792 1627488 5714064 1627336 5719640 +1627432 5714024 1627384 5714024 1627336 5719640 1627488 5714064 +1627384 5714024 1627312 5719640 1627336 5719640 1627488 5714064 +1627384 5714024 1627312 5719640 1627488 5714064 1627432 5714024 +1627336 5719640 1627384 5719672 1627488 5714064 1627312 5719640 +1627488 5714064 1627184 5713128 1627432 5714024 1627384 5714024 +1627448 5719792 1629624 5725984 1627488 5714064 1627384 5719672 +1627488 5714064 1629736 5726176 1629984 5706008 1629904 5706120 +1629736 5726176 1629984 5706008 1627488 5714064 1629624 5725984 +1627384 5714024 1626336 5714040 1627312 5719640 1627488 5714064 +1627384 5714024 1626336 5714040 1627488 5714064 1627432 5714024 +1627312 5719640 1627336 5719640 1627488 5714064 1626336 5714040 +1627384 5714024 1626456 5713624 1626336 5714040 1627488 5714064 +1626336 5714040 1626264 5714032 1627312 5719640 1627488 5714064 +1629984 5706008 1627488 5714064 1629736 5726176 1629944 5726576 +1627432 5714024 1627488 5714064 1627184 5713128 1627192 5713168 +1627432 5714024 1627488 5714064 1627192 5713168 1627216 5713328 +1627432 5714024 1627488 5714064 1627216 5713328 1627224 5713384 +1627192 5713168 1627176 5713224 1627216 5713328 1627488 5714064 +1627432 5714024 1627488 5714064 1627224 5713384 1627224 5713424 +1627488 5714064 1627216 5713328 1627224 5713384 1627224 5713424 +1627488 5714064 1627192 5713168 1627216 5713328 1627224 5713384 +1627432 5714024 1627488 5714064 1627224 5713424 1627384 5714024 +1627488 5714064 1629808 5706208 1627184 5713128 1627192 5713168 +1627432 5714024 1627384 5714024 1627488 5714064 1627224 5713424 +1627488 5714064 1627184 5713128 1627192 5713168 1627216 5713328 +1627488 5714064 1627560 5714152 1629984 5706008 1629904 5706120 +1627488 5714064 1627560 5714152 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1627560 5714152 +1627488 5714064 1627560 5714152 1629808 5706208 1627184 5713128 +1629808 5706208 1627136 5713048 1627184 5713128 1627560 5714152 +1627488 5714064 1627560 5714152 1627184 5713128 1627192 5713168 +1627560 5714152 1629808 5706208 1627184 5713128 1627192 5713168 +1627560 5714152 1629904 5706120 1629808 5706208 1627184 5713128 +1627560 5714152 1629984 5706008 1629904 5706120 1629808 5706208 +1627488 5714064 1629736 5726176 1627560 5714152 1627192 5713168 +1629736 5726176 1627560 5714152 1627488 5714064 1629624 5725984 +1627488 5714064 1627448 5719792 1629624 5725984 1627560 5714152 +1627448 5719792 1629600 5725952 1629624 5725984 1627560 5714152 +1627488 5714064 1627384 5719672 1627448 5719792 1627560 5714152 +1627488 5714064 1627336 5719640 1627384 5719672 1627560 5714152 +1627384 5719672 1627400 5719704 1627448 5719792 1627560 5714152 +1627448 5719792 1629624 5725984 1627560 5714152 1627384 5719672 +1627488 5714064 1627312 5719640 1627336 5719640 1627560 5714152 +1627336 5719640 1627384 5719672 1627560 5714152 1627312 5719640 +1627488 5714064 1626336 5714040 1627312 5719640 1627560 5714152 +1627312 5719640 1627336 5719640 1627560 5714152 1626336 5714040 +1627384 5719672 1627448 5719792 1627560 5714152 1627336 5719640 +1627560 5714152 1627192 5713168 1627488 5714064 1626336 5714040 +1629624 5725984 1629736 5726176 1627560 5714152 1627448 5719792 +1627560 5714152 1629736 5726176 1629984 5706008 1629904 5706120 +1629736 5726176 1629984 5706008 1627560 5714152 1629624 5725984 +1627488 5714064 1627384 5714024 1626336 5714040 1627560 5714152 +1627488 5714064 1627432 5714024 1627384 5714024 1627560 5714152 +1626336 5714040 1627312 5719640 1627560 5714152 1627384 5714024 +1627384 5714024 1626456 5713624 1626336 5714040 1627560 5714152 +1627488 5714064 1627384 5714024 1627560 5714152 1627192 5713168 +1626336 5714040 1626264 5714032 1627312 5719640 1627560 5714152 +1629984 5706008 1627560 5714152 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1627560 5714152 +1629984 5706008 1629904 5706120 1627560 5714152 1629944 5726576 +1627560 5714152 1629624 5725984 1629736 5726176 1629944 5726576 +1629984 5706008 1627560 5714152 1629944 5726576 1630064 5705848 +1627488 5714064 1627560 5714152 1627192 5713168 1627216 5713328 +1627192 5713168 1627176 5713224 1627216 5713328 1627560 5714152 +1627488 5714064 1627560 5714152 1627216 5713328 1627224 5713384 +1627488 5714064 1627560 5714152 1627224 5713384 1627224 5713424 +1627560 5714152 1627184 5713128 1627192 5713168 1627216 5713328 +1627488 5714064 1627384 5714024 1627560 5714152 1627224 5713384 +1627560 5714152 1627192 5713168 1627216 5713328 1627224 5713384 +1627560 5714152 1627608 5714272 1629984 5706008 1629904 5706120 +1627560 5714152 1627608 5714272 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1627608 5714272 +1627560 5714152 1627608 5714272 1629808 5706208 1627184 5713128 +1627608 5714272 1629984 5706008 1629904 5706120 1629808 5706208 +1627560 5714152 1629944 5726576 1627608 5714272 1629808 5706208 +1627608 5714272 1629944 5726576 1629984 5706008 1629904 5706120 +1629984 5706008 1627608 5714272 1629944 5726576 1630064 5705848 +1629944 5726576 1627608 5714272 1627560 5714152 1629736 5726176 +1629944 5726576 1627608 5714272 1629736 5726176 1629904 5726504 +1627608 5714272 1629808 5706208 1627560 5714152 1629736 5726176 +1627560 5714152 1629624 5725984 1629736 5726176 1627608 5714272 +1627560 5714152 1627448 5719792 1629624 5725984 1627608 5714272 +1627448 5719792 1629600 5725952 1629624 5725984 1627608 5714272 +1627560 5714152 1627384 5719672 1627448 5719792 1627608 5714272 +1627384 5719672 1627400 5719704 1627448 5719792 1627608 5714272 +1627560 5714152 1627336 5719640 1627384 5719672 1627608 5714272 +1627560 5714152 1627312 5719640 1627336 5719640 1627608 5714272 +1627384 5719672 1627448 5719792 1627608 5714272 1627336 5719640 +1627560 5714152 1626336 5714040 1627312 5719640 1627608 5714272 +1627312 5719640 1627336 5719640 1627608 5714272 1626336 5714040 +1627560 5714152 1627384 5714024 1626336 5714040 1627608 5714272 +1627384 5714024 1626456 5713624 1626336 5714040 1627608 5714272 +1626336 5714040 1627312 5719640 1627608 5714272 1627384 5714024 +1627336 5719640 1627384 5719672 1627608 5714272 1627312 5719640 +1627448 5719792 1629624 5725984 1627608 5714272 1627384 5719672 +1627560 5714152 1627384 5714024 1627608 5714272 1629808 5706208 +1629624 5725984 1629736 5726176 1627608 5714272 1627448 5719792 +1629944 5726576 1629984 5706008 1627608 5714272 1629736 5726176 +1627560 5714152 1627488 5714064 1627384 5714024 1627608 5714272 +1626336 5714040 1626264 5714032 1627312 5719640 1627608 5714272 +1629736 5726176 1629944 5726576 1627608 5714272 1629624 5725984 +1629624 5725984 1627616 5714504 1627448 5719792 1629600 5725952 +1627448 5719792 1627616 5714504 1627608 5714272 1627384 5719672 +1627448 5719792 1627616 5714504 1627384 5719672 1627400 5719704 +1627608 5714272 1627336 5719640 1627384 5719672 1627616 5714504 +1627608 5714272 1627312 5719640 1627336 5719640 1627616 5714504 +1627608 5714272 1626336 5714040 1627312 5719640 1627616 5714504 +1627336 5719640 1627384 5719672 1627616 5714504 1627312 5719640 +1627608 5714272 1627384 5714024 1626336 5714040 1627616 5714504 +1626336 5714040 1627312 5719640 1627616 5714504 1627384 5714024 +1627608 5714272 1627560 5714152 1627384 5714024 1627616 5714504 +1627384 5714024 1626456 5713624 1626336 5714040 1627616 5714504 +1627312 5719640 1627336 5719640 1627616 5714504 1626336 5714040 +1627384 5719672 1627448 5719792 1627616 5714504 1627336 5719640 +1627608 5714272 1627616 5714504 1629624 5725984 1629736 5726176 +1627616 5714504 1629736 5726176 1627608 5714272 1627384 5714024 +1627616 5714504 1627448 5719792 1629624 5725984 1629736 5726176 +1627448 5719792 1629624 5725984 1627616 5714504 1627384 5719672 +1626336 5714040 1626264 5714032 1627312 5719640 1627616 5714504 +1627608 5714272 1627616 5714504 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1627616 5714504 +1627616 5714504 1629624 5725984 1629736 5726176 1629944 5726576 +1627608 5714272 1627384 5714024 1627616 5714504 1629944 5726576 +1627608 5714272 1627616 5714504 1629944 5726576 1629984 5706008 +1627608 5714272 1627616 5714504 1629984 5706008 1629904 5706120 +1627608 5714272 1627384 5714024 1627616 5714504 1629984 5706008 +1629944 5726576 1630064 5705848 1629984 5706008 1627616 5714504 +1627616 5714504 1629736 5726176 1629944 5726576 1629984 5706008 +1629624 5725984 1627640 5714808 1627448 5719792 1629600 5725952 +1627616 5714504 1627640 5714808 1629624 5725984 1629736 5726176 +1627616 5714504 1627640 5714808 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1627640 5714808 +1627640 5714808 1627448 5719792 1629624 5725984 1629736 5726176 +1627640 5714808 1629624 5725984 1629736 5726176 1629944 5726576 +1627616 5714504 1627448 5719792 1627640 5714808 1629944 5726576 +1627448 5719792 1627640 5714808 1627616 5714504 1627384 5719672 +1627448 5719792 1627640 5714808 1627384 5719672 1627400 5719704 +1627616 5714504 1627336 5719640 1627384 5719672 1627640 5714808 +1627616 5714504 1627312 5719640 1627336 5719640 1627640 5714808 +1627616 5714504 1626336 5714040 1627312 5719640 1627640 5714808 +1627616 5714504 1627384 5714024 1626336 5714040 1627640 5714808 +1627312 5719640 1627336 5719640 1627640 5714808 1626336 5714040 +1627336 5719640 1627384 5719672 1627640 5714808 1627312 5719640 +1627384 5719672 1627448 5719792 1627640 5714808 1627336 5719640 +1627448 5719792 1629624 5725984 1627640 5714808 1627384 5719672 +1627640 5714808 1629944 5726576 1627616 5714504 1626336 5714040 +1626336 5714040 1626264 5714032 1627312 5719640 1627640 5714808 +1627312 5719640 1627336 5719640 1627640 5714808 1626264 5714032 +1626336 5714040 1626264 5714032 1627640 5714808 1627616 5714504 +1626264 5714032 1627280 5719664 1627312 5719640 1627640 5714808 +1627616 5714504 1627640 5714808 1629944 5726576 1629984 5706008 +1627640 5714808 1629736 5726176 1629944 5726576 1629984 5706008 +1627616 5714504 1627640 5714808 1629984 5706008 1627608 5714272 +1629984 5706008 1629904 5706120 1627608 5714272 1627640 5714808 +1627616 5714504 1626336 5714040 1627640 5714808 1627608 5714272 +1629944 5726576 1630064 5705848 1629984 5706008 1627640 5714808 +1629944 5726576 1630096 5705696 1630064 5705848 1627640 5714808 +1629944 5726576 1630064 5705848 1627640 5714808 1629736 5726176 +1627640 5714808 1630064 5705848 1629984 5706008 1627608 5714272 +1630064 5705848 1627704 5715064 1629944 5726576 1630096 5705696 +1629944 5726576 1627704 5715064 1627640 5714808 1629736 5726176 +1629944 5726576 1627704 5715064 1629736 5726176 1629904 5726504 +1629944 5726576 1630064 5705848 1627704 5715064 1629736 5726176 +1627704 5715064 1630064 5705848 1627640 5714808 1629736 5726176 +1627640 5714808 1629624 5725984 1629736 5726176 1627704 5715064 +1629736 5726176 1629944 5726576 1627704 5715064 1629624 5725984 +1627640 5714808 1627448 5719792 1629624 5725984 1627704 5715064 +1627448 5719792 1629600 5725952 1629624 5725984 1627704 5715064 +1627640 5714808 1627384 5719672 1627448 5719792 1627704 5715064 +1627384 5719672 1627400 5719704 1627448 5719792 1627704 5715064 +1627448 5719792 1629624 5725984 1627704 5715064 1627384 5719672 +1627640 5714808 1627336 5719640 1627384 5719672 1627704 5715064 +1627640 5714808 1627312 5719640 1627336 5719640 1627704 5715064 +1627640 5714808 1626264 5714032 1627312 5719640 1627704 5715064 +1627312 5719640 1627336 5719640 1627704 5715064 1626264 5714032 +1627336 5719640 1627384 5719672 1627704 5715064 1627312 5719640 +1627384 5719672 1627448 5719792 1627704 5715064 1627336 5719640 +1627640 5714808 1626264 5714032 1627704 5715064 1630064 5705848 +1629624 5725984 1629736 5726176 1627704 5715064 1627448 5719792 +1627640 5714808 1626336 5714040 1626264 5714032 1627704 5715064 +1626264 5714032 1627312 5719640 1627704 5715064 1626336 5714040 +1627640 5714808 1627616 5714504 1626336 5714040 1627704 5715064 +1627640 5714808 1626336 5714040 1627704 5715064 1630064 5705848 +1626264 5714032 1627280 5719664 1627312 5719640 1627704 5715064 +1626264 5714032 1627280 5719664 1627704 5715064 1626336 5714040 +1627312 5719640 1627336 5719640 1627704 5715064 1627280 5719664 +1626264 5714032 1626912 5719928 1627280 5719664 1627704 5715064 +1626912 5719928 1627232 5719704 1627280 5719664 1627704 5715064 +1626264 5714032 1626912 5719928 1627704 5715064 1626336 5714040 +1627280 5719664 1627312 5719640 1627704 5715064 1626912 5719928 +1626264 5714032 1625568 5713848 1626912 5719928 1627704 5715064 +1627640 5714808 1627704 5715064 1630064 5705848 1629984 5706008 +1627704 5715064 1629944 5726576 1630064 5705848 1629984 5706008 +1627640 5714808 1626336 5714040 1627704 5715064 1629984 5706008 +1627640 5714808 1627704 5715064 1629984 5706008 1627608 5714272 +1629984 5706008 1629904 5706120 1627608 5714272 1627704 5715064 +1629904 5706120 1629808 5706208 1627608 5714272 1627704 5715064 +1627640 5714808 1627704 5715064 1627608 5714272 1627616 5714504 +1627640 5714808 1626336 5714040 1627704 5715064 1627616 5714504 +1627704 5715064 1630064 5705848 1629984 5706008 1629904 5706120 +1627608 5714272 1627616 5714504 1627704 5715064 1629904 5706120 +1629624 5725984 1627712 5715168 1627448 5719792 1629600 5725952 +1627448 5719792 1627712 5715168 1627704 5715064 1627384 5719672 +1627712 5715168 1629624 5725984 1627704 5715064 1627384 5719672 +1627448 5719792 1629624 5725984 1627712 5715168 1627384 5719672 +1627448 5719792 1627712 5715168 1627384 5719672 1627400 5719704 +1627704 5715064 1627336 5719640 1627384 5719672 1627712 5715168 +1627704 5715064 1627336 5719640 1627712 5715168 1629624 5725984 +1627384 5719672 1627448 5719792 1627712 5715168 1627336 5719640 +1627704 5715064 1627312 5719640 1627336 5719640 1627712 5715168 +1627704 5715064 1627312 5719640 1627712 5715168 1629624 5725984 +1627704 5715064 1627280 5719664 1627312 5719640 1627712 5715168 +1627704 5715064 1627280 5719664 1627712 5715168 1629624 5725984 +1627312 5719640 1627336 5719640 1627712 5715168 1627280 5719664 +1627336 5719640 1627384 5719672 1627712 5715168 1627312 5719640 +1627704 5715064 1627712 5715168 1629624 5725984 1629736 5726176 +1627704 5715064 1627280 5719664 1627712 5715168 1629736 5726176 +1627712 5715168 1627448 5719792 1629624 5725984 1629736 5726176 +1627704 5715064 1627712 5715168 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1627712 5715168 +1627704 5715064 1627280 5719664 1627712 5715168 1629944 5726576 +1627704 5715064 1627712 5715168 1629944 5726576 1630064 5705848 +1627704 5715064 1627712 5715168 1630064 5705848 1629984 5706008 +1627704 5715064 1627280 5719664 1627712 5715168 1629984 5706008 +1627712 5715168 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630096 5705696 1630064 5705848 1627712 5715168 +1627712 5715168 1629736 5726176 1629944 5726576 1630064 5705848 +1627712 5715168 1629624 5725984 1629736 5726176 1629944 5726576 +1627704 5715064 1626912 5719928 1627280 5719664 1627712 5715168 +1626912 5719928 1627232 5719704 1627280 5719664 1627712 5715168 +1627704 5715064 1626912 5719928 1627712 5715168 1629984 5706008 +1627280 5719664 1627312 5719640 1627712 5715168 1626912 5719928 +1627704 5715064 1626264 5714032 1626912 5719928 1627712 5715168 +1627704 5715064 1626264 5714032 1627712 5715168 1629984 5706008 +1627704 5715064 1626336 5714040 1626264 5714032 1627712 5715168 +1627704 5715064 1626336 5714040 1627712 5715168 1629984 5706008 +1627704 5715064 1627640 5714808 1626336 5714040 1627712 5715168 +1627704 5715064 1627640 5714808 1627712 5715168 1629984 5706008 +1626336 5714040 1626264 5714032 1627712 5715168 1627640 5714808 +1627640 5714808 1627616 5714504 1626336 5714040 1627712 5715168 +1626912 5719928 1627280 5719664 1627712 5715168 1626264 5714032 +1626264 5714032 1626912 5719928 1627712 5715168 1626336 5714040 +1626264 5714032 1625568 5713848 1626912 5719928 1627712 5715168 +1625568 5713848 1620920 5717216 1626912 5719928 1627712 5715168 +1626264 5714032 1625816 5713840 1625568 5713848 1627712 5715168 +1626912 5719928 1627280 5719664 1627712 5715168 1625568 5713848 +1626264 5714032 1625568 5713848 1627712 5715168 1626336 5714040 +1627704 5715064 1627712 5715168 1629984 5706008 1629904 5706120 +1626912 5719928 1627680 5715232 1625568 5713848 1620920 5717216 +1627712 5715168 1627680 5715232 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1627680 5715232 +1627712 5715168 1625568 5713848 1627680 5715232 1627280 5719664 +1627680 5715232 1625568 5713848 1626912 5719928 1627280 5719664 +1627712 5715168 1627680 5715232 1627280 5719664 1627312 5719640 +1627712 5715168 1625568 5713848 1627680 5715232 1627312 5719640 +1627712 5715168 1627680 5715232 1627312 5719640 1627336 5719640 +1627712 5715168 1625568 5713848 1627680 5715232 1627336 5719640 +1627680 5715232 1627280 5719664 1627312 5719640 1627336 5719640 +1627712 5715168 1627680 5715232 1627336 5719640 1627384 5719672 +1627712 5715168 1625568 5713848 1627680 5715232 1627384 5719672 +1627712 5715168 1627680 5715232 1627384 5719672 1627448 5719792 +1627712 5715168 1625568 5713848 1627680 5715232 1627448 5719792 +1627712 5715168 1627680 5715232 1627448 5719792 1629624 5725984 +1627384 5719672 1627400 5719704 1627448 5719792 1627680 5715232 +1627680 5715232 1627312 5719640 1627336 5719640 1627384 5719672 +1627680 5715232 1627336 5719640 1627384 5719672 1627448 5719792 +1627680 5715232 1626912 5719928 1627280 5719664 1627312 5719640 +1625568 5713848 1627680 5715232 1627712 5715168 1626264 5714032 +1627680 5715232 1627448 5719792 1627712 5715168 1626264 5714032 +1625568 5713848 1626912 5719928 1627680 5715232 1626264 5714032 +1625568 5713848 1627680 5715232 1626264 5714032 1625816 5713840 +1627712 5715168 1626336 5714040 1626264 5714032 1627680 5715232 +1627712 5715168 1626336 5714040 1627680 5715232 1627448 5719792 +1627712 5715168 1627640 5714808 1626336 5714040 1627680 5715232 +1627712 5715168 1627640 5714808 1627680 5715232 1627448 5719792 +1627640 5714808 1627616 5714504 1626336 5714040 1627680 5715232 +1627712 5715168 1627704 5715064 1627640 5714808 1627680 5715232 +1627712 5715168 1627704 5715064 1627680 5715232 1627448 5719792 +1627640 5714808 1626336 5714040 1627680 5715232 1627704 5715064 +1626336 5714040 1626264 5714032 1627680 5715232 1627640 5714808 +1626264 5714032 1625568 5713848 1627680 5715232 1626336 5714040 +1627680 5715232 1627560 5715304 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1627560 5715304 +1627680 5715232 1625568 5713848 1627560 5715304 1627280 5719664 +1625568 5713848 1627560 5715304 1627680 5715232 1626264 5714032 +1627560 5715304 1627280 5719664 1627680 5715232 1626264 5714032 +1627560 5715304 1625568 5713848 1626912 5719928 1627280 5719664 +1625568 5713848 1626912 5719928 1627560 5715304 1626264 5714032 +1626912 5719928 1627560 5715304 1625568 5713848 1620920 5717216 +1625568 5713848 1627560 5715304 1626264 5714032 1625816 5713840 +1627680 5715232 1627560 5715304 1627280 5719664 1627312 5719640 +1627560 5715304 1626912 5719928 1627280 5719664 1627312 5719640 +1627680 5715232 1626264 5714032 1627560 5715304 1627312 5719640 +1627680 5715232 1627560 5715304 1627312 5719640 1627336 5719640 +1627680 5715232 1626264 5714032 1627560 5715304 1627336 5719640 +1627680 5715232 1627560 5715304 1627336 5719640 1627384 5719672 +1627680 5715232 1626264 5714032 1627560 5715304 1627384 5719672 +1627560 5715304 1627312 5719640 1627336 5719640 1627384 5719672 +1627680 5715232 1627560 5715304 1627384 5719672 1627448 5719792 +1627560 5715304 1627280 5719664 1627312 5719640 1627336 5719640 +1627680 5715232 1626336 5714040 1626264 5714032 1627560 5715304 +1627680 5715232 1626336 5714040 1627560 5715304 1627384 5719672 +1626264 5714032 1625568 5713848 1627560 5715304 1626336 5714040 +1627680 5715232 1627640 5714808 1626336 5714040 1627560 5715304 +1627680 5715232 1627640 5714808 1627560 5715304 1627384 5719672 +1627680 5715232 1627704 5715064 1627640 5714808 1627560 5715304 +1627680 5715232 1627704 5715064 1627560 5715304 1627384 5719672 +1627640 5714808 1627616 5714504 1626336 5714040 1627560 5715304 +1627680 5715232 1627712 5715168 1627704 5715064 1627560 5715304 +1627640 5714808 1626336 5714040 1627560 5715304 1627704 5715064 +1626336 5714040 1626264 5714032 1627560 5715304 1627640 5714808 +1627560 5715304 1627400 5715336 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1627400 5715336 +1627560 5715304 1627400 5715336 1627280 5719664 1627312 5719640 +1627400 5715336 1626912 5719928 1627280 5719664 1627312 5719640 +1627560 5715304 1625568 5713848 1627400 5715336 1627312 5719640 +1625568 5713848 1627400 5715336 1627560 5715304 1626264 5714032 +1627560 5715304 1626336 5714040 1626264 5714032 1627400 5715336 +1627400 5715336 1627312 5719640 1627560 5715304 1626336 5714040 +1626264 5714032 1625568 5713848 1627400 5715336 1626336 5714040 +1627400 5715336 1625568 5713848 1626912 5719928 1627280 5719664 +1625568 5713848 1626912 5719928 1627400 5715336 1626264 5714032 +1626912 5719928 1627400 5715336 1625568 5713848 1620920 5717216 +1626912 5719928 1627280 5719664 1627400 5715336 1620920 5717216 +1627400 5715336 1626264 5714032 1625568 5713848 1620920 5717216 +1625568 5713848 1620928 5717008 1620920 5717216 1627400 5715336 +1625568 5713848 1620928 5717008 1627400 5715336 1626264 5714032 +1626912 5719928 1627400 5715336 1620920 5717216 1626864 5719976 +1625568 5713848 1624848 5713680 1620928 5717008 1627400 5715336 +1625568 5713848 1624848 5713680 1627400 5715336 1626264 5714032 +1620928 5717008 1620920 5717216 1627400 5715336 1624848 5713680 +1620920 5717216 1626912 5719928 1627400 5715336 1620928 5717008 +1625568 5713848 1627400 5715336 1626264 5714032 1625816 5713840 +1627560 5715304 1627400 5715336 1627312 5719640 1627336 5719640 +1627400 5715336 1627280 5719664 1627312 5719640 1627336 5719640 +1627560 5715304 1626336 5714040 1627400 5715336 1627336 5719640 +1627560 5715304 1627400 5715336 1627336 5719640 1627384 5719672 +1627560 5715304 1627640 5714808 1626336 5714040 1627400 5715336 +1626336 5714040 1626264 5714032 1627400 5715336 1627640 5714808 +1627560 5715304 1627640 5714808 1627400 5715336 1627336 5719640 +1627640 5714808 1627616 5714504 1626336 5714040 1627400 5715336 +1627560 5715304 1627704 5715064 1627640 5714808 1627400 5715336 +1627560 5715304 1627704 5715064 1627400 5715336 1627336 5719640 +1627560 5715304 1627680 5715232 1627704 5715064 1627400 5715336 +1627640 5714808 1626336 5714040 1627400 5715336 1627704 5715064 +1625568 5713848 1624976 5713680 1624848 5713680 1627400 5715336 +1624848 5713680 1620896 5716896 1620928 5717008 1627400 5715336 +1627400 5715336 1627312 5715320 1620928 5717008 1620920 5717216 +1627400 5715336 1624848 5713680 1627312 5715320 1620920 5717216 +1627312 5715320 1624848 5713680 1620928 5717008 1620920 5717216 +1624848 5713680 1627312 5715320 1627400 5715336 1625568 5713848 +1627312 5715320 1620920 5717216 1627400 5715336 1625568 5713848 +1627400 5715336 1626264 5714032 1625568 5713848 1627312 5715320 +1627400 5715336 1626336 5714040 1626264 5714032 1627312 5715320 +1627400 5715336 1627640 5714808 1626336 5714040 1627312 5715320 +1626336 5714040 1626264 5714032 1627312 5715320 1627640 5714808 +1627400 5715336 1627640 5714808 1627312 5715320 1620920 5717216 +1626264 5714032 1625568 5713848 1627312 5715320 1626336 5714040 +1624848 5713680 1620928 5717008 1627312 5715320 1625568 5713848 +1625568 5713848 1624848 5713680 1627312 5715320 1626264 5714032 +1627640 5714808 1627616 5714504 1626336 5714040 1627312 5715320 +1627616 5714504 1627384 5714024 1626336 5714040 1627312 5715320 +1627640 5714808 1627616 5714504 1627312 5715320 1627400 5715336 +1626336 5714040 1626264 5714032 1627312 5715320 1627616 5714504 +1627400 5715336 1627312 5715320 1620920 5717216 1626912 5719928 +1627400 5715336 1627312 5715320 1626912 5719928 1627280 5719664 +1626912 5719928 1627232 5719704 1627280 5719664 1627312 5715320 +1627400 5715336 1627312 5715320 1627280 5719664 1627312 5719640 +1627400 5715336 1627312 5715320 1627312 5719640 1627336 5719640 +1627312 5715320 1626912 5719928 1627280 5719664 1627312 5719640 +1627400 5715336 1627640 5714808 1627312 5715320 1627312 5719640 +1627312 5715320 1620928 5717008 1620920 5717216 1626912 5719928 +1620920 5717216 1626864 5719976 1626912 5719928 1627312 5715320 +1627312 5715320 1620920 5717216 1626912 5719928 1627280 5719664 +1626264 5714032 1625816 5713840 1625568 5713848 1627312 5715320 +1627400 5715336 1627704 5715064 1627640 5714808 1627312 5715320 +1627640 5714808 1627616 5714504 1627312 5715320 1627704 5715064 +1627400 5715336 1627704 5715064 1627312 5715320 1627312 5719640 +1627400 5715336 1627560 5715304 1627704 5715064 1627312 5715320 +1624848 5713680 1627312 5715320 1625568 5713848 1624976 5713680 +1620928 5717008 1627312 5715320 1624848 5713680 1620896 5716896 +1626264 5714032 1627072 5715088 1627312 5715320 1626336 5714040 +1627312 5715320 1627616 5714504 1626336 5714040 1627072 5715088 +1627616 5714504 1627384 5714024 1626336 5714040 1627072 5715088 +1627616 5714504 1627384 5714024 1627072 5715088 1627312 5715320 +1626336 5714040 1626264 5714032 1627072 5715088 1627384 5714024 +1627072 5715088 1625568 5713848 1627312 5715320 1627616 5714504 +1626264 5714032 1625568 5713848 1627072 5715088 1626336 5714040 +1627312 5715320 1627072 5715088 1625568 5713848 1624848 5713680 +1627312 5715320 1627616 5714504 1627072 5715088 1624848 5713680 +1627312 5715320 1627072 5715088 1624848 5713680 1620928 5717008 +1627312 5715320 1627072 5715088 1620928 5717008 1620920 5717216 +1627312 5715320 1627616 5714504 1627072 5715088 1620920 5717216 +1627072 5715088 1624848 5713680 1620928 5717008 1620920 5717216 +1627072 5715088 1626264 5714032 1625568 5713848 1624848 5713680 +1627312 5715320 1627072 5715088 1620920 5717216 1626912 5719928 +1627072 5715088 1620928 5717008 1620920 5717216 1626912 5719928 +1627312 5715320 1627616 5714504 1627072 5715088 1626912 5719928 +1620920 5717216 1626864 5719976 1626912 5719928 1627072 5715088 +1627072 5715088 1625568 5713848 1624848 5713680 1620928 5717008 +1627384 5714024 1626456 5713624 1626336 5714040 1627072 5715088 +1627616 5714504 1627608 5714272 1627384 5714024 1627072 5715088 +1627312 5715320 1627640 5714808 1627616 5714504 1627072 5715088 +1627312 5715320 1627704 5715064 1627640 5714808 1627072 5715088 +1627616 5714504 1627384 5714024 1627072 5715088 1627640 5714808 +1627312 5715320 1627640 5714808 1627072 5715088 1626912 5719928 +1627312 5715320 1627072 5715088 1626912 5719928 1627280 5719664 +1625568 5713848 1627072 5715088 1626264 5714032 1625816 5713840 +1625568 5713848 1624976 5713680 1624848 5713680 1627072 5715088 +1624848 5713680 1620896 5716896 1620928 5717008 1627072 5715088 +1627384 5714024 1627064 5715072 1627072 5715088 1627616 5714504 +1627072 5715088 1627640 5714808 1627616 5714504 1627064 5715072 +1627616 5714504 1627384 5714024 1627064 5715072 1627640 5714808 +1627072 5715088 1627064 5715072 1626336 5714040 1626264 5714032 +1627064 5715072 1626264 5714032 1627072 5715088 1627640 5714808 +1627072 5715088 1627064 5715072 1626264 5714032 1625568 5713848 +1627064 5715072 1626336 5714040 1626264 5714032 1625568 5713848 +1627072 5715088 1627064 5715072 1625568 5713848 1624848 5713680 +1627072 5715088 1627640 5714808 1627064 5715072 1625568 5713848 +1627064 5715072 1627384 5714024 1626336 5714040 1626264 5714032 +1627384 5714024 1626336 5714040 1627064 5715072 1627616 5714504 +1626336 5714040 1627064 5715072 1627384 5714024 1626456 5713624 +1627384 5714024 1627064 5715072 1627616 5714504 1627608 5714272 +1627072 5715088 1627312 5715320 1627640 5714808 1627064 5715072 +1626264 5714032 1625816 5713840 1625568 5713848 1627064 5715072 +1626264 5714032 1626744 5714808 1627064 5715072 1626336 5714040 +1627064 5715072 1626744 5714808 1625568 5713848 1627072 5715088 +1625568 5713848 1624848 5713680 1627072 5715088 1626744 5714808 +1627072 5715088 1627064 5715072 1626744 5714808 1624848 5713680 +1627064 5715072 1627384 5714024 1626336 5714040 1626744 5714808 +1626336 5714040 1626264 5714032 1626744 5714808 1627384 5714024 +1626744 5714808 1627072 5715088 1627064 5715072 1627384 5714024 +1627064 5715072 1627616 5714504 1627384 5714024 1626744 5714808 +1627064 5715072 1627640 5714808 1627616 5714504 1626744 5714808 +1627384 5714024 1626336 5714040 1626744 5714808 1627616 5714504 +1627064 5715072 1627616 5714504 1626744 5714808 1627072 5715088 +1626744 5714808 1626264 5714032 1625568 5713848 1624848 5713680 +1626264 5714032 1625568 5713848 1626744 5714808 1626336 5714040 +1624848 5713680 1620928 5717008 1627072 5715088 1626744 5714808 +1620928 5717008 1620920 5717216 1627072 5715088 1626744 5714808 +1620920 5717216 1626912 5719928 1627072 5715088 1626744 5714808 +1620920 5717216 1626912 5719928 1626744 5714808 1620928 5717008 +1624848 5713680 1620928 5717008 1626744 5714808 1625568 5713848 +1627072 5715088 1627064 5715072 1626744 5714808 1626912 5719928 +1626912 5719928 1627312 5715320 1627072 5715088 1626744 5714808 +1620920 5717216 1626864 5719976 1626912 5719928 1626744 5714808 +1620928 5717008 1620920 5717216 1626744 5714808 1624848 5713680 +1627384 5714024 1626456 5713624 1626336 5714040 1626744 5714808 +1627616 5714504 1627608 5714272 1627384 5714024 1626744 5714808 +1625568 5713848 1626744 5714808 1626264 5714032 1625816 5713840 +1625568 5713848 1624976 5713680 1624848 5713680 1626744 5714808 +1624848 5713680 1620896 5716896 1620928 5717008 1626744 5714808 +1626744 5714808 1626600 5714640 1625568 5713848 1624848 5713680 +1626744 5714808 1626600 5714640 1624848 5713680 1620928 5717008 +1626744 5714808 1626264 5714032 1626600 5714640 1624848 5713680 +1626264 5714032 1626600 5714640 1626744 5714808 1626336 5714040 +1626744 5714808 1627384 5714024 1626336 5714040 1626600 5714640 +1626744 5714808 1627616 5714504 1627384 5714024 1626600 5714640 +1626600 5714640 1624848 5713680 1626744 5714808 1627384 5714024 +1626336 5714040 1626264 5714032 1626600 5714640 1627384 5714024 +1626600 5714640 1626264 5714032 1625568 5713848 1624848 5713680 +1626264 5714032 1625568 5713848 1626600 5714640 1626336 5714040 +1627384 5714024 1626456 5713624 1626336 5714040 1626600 5714640 +1625568 5713848 1626600 5714640 1626264 5714032 1625816 5713840 +1625568 5713848 1624976 5713680 1624848 5713680 1626600 5714640 +1627384 5714024 1626552 5714520 1626600 5714640 1626744 5714808 +1626600 5714640 1626552 5714520 1626336 5714040 1626264 5714032 +1626600 5714640 1627384 5714024 1626552 5714520 1626264 5714032 +1626600 5714640 1626552 5714520 1626264 5714032 1625568 5713848 +1626552 5714520 1626336 5714040 1626264 5714032 1625568 5713848 +1626600 5714640 1626552 5714520 1625568 5713848 1624848 5713680 +1626600 5714640 1627384 5714024 1626552 5714520 1625568 5713848 +1626552 5714520 1627384 5714024 1626336 5714040 1626264 5714032 +1626336 5714040 1626552 5714520 1627384 5714024 1626456 5713624 +1626264 5714032 1625816 5713840 1625568 5713848 1626552 5714520 +1626264 5714032 1625816 5713840 1626552 5714520 1626336 5714040 +1625568 5713848 1626600 5714640 1626552 5714520 1625816 5713840 +1626264 5714032 1625960 5713848 1625816 5713840 1626552 5714520 +1625816 5713840 1625768 5713824 1625568 5713848 1626552 5714520 +1626552 5714520 1626544 5714368 1626336 5714040 1626264 5714032 +1626552 5714520 1626544 5714368 1626264 5714032 1625816 5713840 +1626552 5714520 1627384 5714024 1626544 5714368 1626264 5714032 +1627384 5714024 1626544 5714368 1626552 5714520 1626600 5714640 +1627384 5714024 1626544 5714368 1626600 5714640 1626744 5714808 +1627384 5714024 1626544 5714368 1626744 5714808 1627616 5714504 +1626544 5714368 1626264 5714032 1626552 5714520 1626600 5714640 +1626544 5714368 1626552 5714520 1626600 5714640 1626744 5714808 +1626544 5714368 1627384 5714024 1626336 5714040 1626264 5714032 +1627384 5714024 1626336 5714040 1626544 5714368 1626744 5714808 +1626336 5714040 1626544 5714368 1627384 5714024 1626456 5713624 +1626336 5714040 1626544 5714368 1626456 5713624 1626360 5713736 +1626336 5714040 1626264 5714032 1626544 5714368 1626456 5713624 +1626544 5714368 1626744 5714808 1627384 5714024 1626456 5713624 +1627384 5714024 1627040 5713448 1626456 5713624 1626544 5714368 +1627384 5714024 1626552 5714288 1626544 5714368 1626744 5714808 +1626456 5713624 1626552 5714288 1627384 5714024 1627040 5713448 +1626456 5713624 1626544 5714368 1626552 5714288 1627040 5713448 +1626552 5714288 1626544 5714368 1627384 5714024 1627040 5713448 +1626456 5713624 1626552 5714288 1627040 5713448 1626472 5713592 +1626544 5714368 1626552 5714288 1626456 5713624 1626336 5714040 +1626456 5713624 1626360 5713736 1626336 5714040 1626552 5714288 +1626544 5714368 1626552 5714288 1626336 5714040 1626264 5714032 +1626544 5714368 1627384 5714024 1626552 5714288 1626336 5714040 +1626552 5714288 1627040 5713448 1626456 5713624 1626336 5714040 +1627384 5714024 1627192 5713448 1627040 5713448 1626552 5714288 +1627384 5714024 1626704 5714168 1626552 5714288 1626544 5714368 +1627384 5714024 1626704 5714168 1626544 5714368 1626744 5714808 +1626544 5714368 1626600 5714640 1626744 5714808 1626704 5714168 +1627384 5714024 1626704 5714168 1626744 5714808 1627616 5714504 +1626744 5714808 1627064 5715072 1627616 5714504 1626704 5714168 +1626544 5714368 1626552 5714520 1626600 5714640 1626704 5714168 +1626600 5714640 1626744 5714808 1626704 5714168 1626552 5714520 +1626744 5714808 1627616 5714504 1626704 5714168 1626600 5714640 +1626704 5714168 1627040 5713448 1626552 5714288 1626544 5714368 +1626704 5714168 1626552 5714288 1626544 5714368 1626552 5714520 +1627384 5714024 1627040 5713448 1626704 5714168 1627616 5714504 +1626552 5714288 1626704 5714168 1627040 5713448 1626456 5713624 +1626552 5714288 1626704 5714168 1626456 5713624 1626336 5714040 +1626456 5713624 1626360 5713736 1626336 5714040 1626704 5714168 +1626336 5714040 1626552 5714288 1626704 5714168 1626360 5713736 +1626552 5714288 1626544 5714368 1626704 5714168 1626336 5714040 +1626704 5714168 1627384 5714024 1627040 5713448 1626456 5713624 +1627040 5713448 1626472 5713592 1626456 5713624 1626704 5714168 +1627040 5713448 1626472 5713592 1626704 5714168 1627384 5714024 +1627040 5713448 1626952 5713376 1626472 5713592 1626704 5714168 +1626704 5714168 1626472 5713592 1626456 5713624 1626360 5713736 +1626552 5714288 1626704 5714168 1626336 5714040 1626544 5714368 +1627040 5713448 1626704 5714168 1627384 5714024 1627192 5713448 +1627384 5714024 1626704 5714168 1627616 5714504 1627608 5714272 +1626360 5713736 1626320 5713816 1626336 5714040 1626704 5714168 +1626360 5713736 1626320 5713816 1626704 5714168 1626456 5713624 +1626336 5714040 1626552 5714288 1626704 5714168 1626320 5713816 +1626704 5714168 1626776 5714064 1627040 5713448 1626472 5713592 +1626704 5714168 1627384 5714024 1626776 5714064 1626472 5713592 +1627384 5714024 1626776 5714064 1626704 5714168 1627616 5714504 +1626776 5714064 1627384 5714024 1627040 5713448 1626472 5713592 +1626704 5714168 1626776 5714064 1626472 5713592 1626456 5713624 +1626776 5714064 1627040 5713448 1626472 5713592 1626456 5713624 +1626704 5714168 1627384 5714024 1626776 5714064 1626456 5713624 +1627040 5713448 1626952 5713376 1626472 5713592 1626776 5714064 +1626704 5714168 1626776 5714064 1626456 5713624 1626360 5713736 +1626704 5714168 1626776 5714064 1626360 5713736 1626320 5713816 +1626704 5714168 1627384 5714024 1626776 5714064 1626320 5713816 +1626776 5714064 1626472 5713592 1626456 5713624 1626360 5713736 +1626776 5714064 1626456 5713624 1626360 5713736 1626320 5713816 +1627040 5713448 1626776 5714064 1627384 5714024 1627192 5713448 +1626704 5714168 1626776 5714064 1626320 5713816 1626336 5714040 +1626776 5714064 1626360 5713736 1626320 5713816 1626336 5714040 +1626704 5714168 1626776 5714064 1626336 5714040 1626552 5714288 +1626704 5714168 1627384 5714024 1626776 5714064 1626336 5714040 +1626776 5714064 1626792 5714016 1626472 5713592 1626456 5713624 +1627040 5713448 1626792 5714016 1626776 5714064 1627384 5714024 +1626776 5714064 1627384 5714024 1626792 5714016 1626456 5713624 +1626776 5714064 1626704 5714168 1627384 5714024 1626792 5714016 +1626792 5714016 1627040 5713448 1626472 5713592 1626456 5713624 +1627040 5713448 1626472 5713592 1626792 5714016 1627384 5714024 +1626776 5714064 1626792 5714016 1626456 5713624 1626360 5713736 +1626792 5714016 1626472 5713592 1626456 5713624 1626360 5713736 +1626776 5714064 1627384 5714024 1626792 5714016 1626360 5713736 +1626472 5713592 1626792 5714016 1627040 5713448 1626952 5713376 +1626776 5714064 1626792 5714016 1626360 5713736 1626320 5713816 +1626776 5714064 1626792 5714016 1626320 5713816 1626336 5714040 +1626776 5714064 1627384 5714024 1626792 5714016 1626336 5714040 +1626792 5714016 1626456 5713624 1626360 5713736 1626320 5713816 +1626792 5714016 1626360 5713736 1626320 5713816 1626336 5714040 +1627040 5713448 1626792 5714016 1627384 5714024 1627192 5713448 +1626776 5714064 1626792 5714016 1626336 5714040 1626704 5714168 +1626792 5714016 1626800 5713848 1626472 5713592 1626456 5713624 +1626792 5714016 1626800 5713848 1626456 5713624 1626360 5713736 +1626800 5713848 1626472 5713592 1626456 5713624 1626360 5713736 +1626792 5714016 1627040 5713448 1626800 5713848 1626360 5713736 +1627040 5713448 1626800 5713848 1626792 5714016 1627384 5714024 +1626792 5714016 1626776 5714064 1627384 5714024 1626800 5713848 +1626800 5713848 1626360 5713736 1626792 5714016 1627384 5714024 +1626800 5713848 1627040 5713448 1626472 5713592 1626456 5713624 +1627040 5713448 1626472 5713592 1626800 5713848 1627384 5714024 +1626792 5714016 1626800 5713848 1626360 5713736 1626320 5713816 +1626800 5713848 1626456 5713624 1626360 5713736 1626320 5713816 +1626792 5714016 1627384 5714024 1626800 5713848 1626320 5713816 +1626472 5713592 1626800 5713848 1627040 5713448 1626952 5713376 +1626472 5713592 1626456 5713624 1626800 5713848 1626952 5713376 +1626800 5713848 1627384 5714024 1627040 5713448 1626952 5713376 +1626792 5714016 1626800 5713848 1626320 5713816 1626336 5714040 +1626792 5714016 1626800 5713848 1626336 5714040 1626776 5714064 +1626792 5714016 1627384 5714024 1626800 5713848 1626336 5714040 +1626800 5713848 1626360 5713736 1626320 5713816 1626336 5714040 +1627040 5713448 1626800 5713848 1627384 5714024 1627192 5713448 +1626800 5713848 1626792 5714016 1627384 5714024 1627192 5713448 +1627040 5713448 1626952 5713376 1626800 5713848 1627192 5713448 +1627384 5714024 1627224 5713424 1627192 5713448 1626800 5713848 +1626472 5713592 1626800 5713848 1626952 5713376 1626496 5713456 +1627384 5714024 1626848 5713816 1626800 5713848 1626792 5714016 +1627384 5714024 1626848 5713816 1626792 5714016 1626776 5714064 +1626848 5713816 1627192 5713448 1626800 5713848 1626792 5714016 +1627384 5714024 1627192 5713448 1626848 5713816 1626792 5714016 +1627192 5713448 1626848 5713816 1627384 5714024 1627224 5713424 +1626800 5713848 1626848 5713816 1627192 5713448 1627040 5713448 +1626800 5713848 1626792 5714016 1626848 5713816 1627040 5713448 +1626800 5713848 1626848 5713816 1627040 5713448 1626952 5713376 +1626800 5713848 1626792 5714016 1626848 5713816 1626952 5713376 +1626848 5713816 1627384 5714024 1627192 5713448 1627040 5713448 +1626800 5713848 1626848 5713816 1626952 5713376 1626472 5713592 +1626800 5713848 1626848 5713816 1626472 5713592 1626456 5713624 +1626800 5713848 1626792 5714016 1626848 5713816 1626472 5713592 +1626848 5713816 1627040 5713448 1626952 5713376 1626472 5713592 +1626848 5713816 1627192 5713448 1627040 5713448 1626952 5713376 +1626952 5713376 1626496 5713456 1626472 5713592 1626848 5713816 +1626952 5713376 1626496 5713456 1626848 5713816 1627040 5713448 +1626952 5713376 1626880 5713288 1626496 5713456 1626848 5713816 +1626472 5713592 1626800 5713848 1626848 5713816 1626496 5713456 +1626848 5713816 1626880 5713808 1627192 5713448 1627040 5713448 +1626848 5713816 1627384 5714024 1626880 5713808 1627040 5713448 +1627384 5714024 1626880 5713808 1626848 5713816 1626792 5714016 +1627384 5714024 1626880 5713808 1626792 5714016 1626776 5714064 +1626848 5713816 1626800 5713848 1626792 5714016 1626880 5713808 +1626880 5713808 1627040 5713448 1626848 5713816 1626792 5714016 +1626880 5713808 1627384 5714024 1627192 5713448 1627040 5713448 +1627384 5714024 1627192 5713448 1626880 5713808 1626792 5714016 +1627192 5713448 1626880 5713808 1627384 5714024 1627224 5713424 +1626848 5713816 1626880 5713808 1627040 5713448 1626952 5713376 +1626848 5713816 1626880 5713808 1626952 5713376 1626496 5713456 +1626880 5713808 1627192 5713448 1627040 5713448 1626952 5713376 +1626848 5713816 1626792 5714016 1626880 5713808 1626952 5713376 +1626880 5713808 1626912 5713816 1627192 5713448 1627040 5713448 +1626880 5713808 1626912 5713816 1627040 5713448 1626952 5713376 +1626880 5713808 1627384 5714024 1626912 5713816 1627040 5713448 +1627384 5714024 1626912 5713816 1626880 5713808 1626792 5714016 +1627384 5714024 1626912 5713816 1626792 5714016 1626776 5714064 +1626880 5713808 1626848 5713816 1626792 5714016 1626912 5713816 +1626848 5713816 1626800 5713848 1626792 5714016 1626912 5713816 +1626848 5713816 1626800 5713848 1626912 5713816 1626880 5713808 +1626912 5713816 1627040 5713448 1626880 5713808 1626848 5713816 +1626792 5714016 1627384 5714024 1626912 5713816 1626800 5713848 +1626912 5713816 1627384 5714024 1627192 5713448 1627040 5713448 +1627384 5714024 1627192 5713448 1626912 5713816 1626792 5714016 +1627192 5713448 1626912 5713816 1627384 5714024 1627224 5713424 +1627384 5714024 1626992 5713872 1626792 5714016 1626776 5714064 +1627384 5714024 1626992 5713872 1626776 5714064 1626704 5714168 +1626792 5714016 1626992 5713872 1626912 5713816 1626800 5713848 +1626912 5713816 1626992 5713872 1627384 5714024 1627192 5713448 +1626912 5713816 1626992 5713872 1627192 5713448 1627040 5713448 +1626912 5713816 1626992 5713872 1627040 5713448 1626880 5713808 +1626912 5713816 1626792 5714016 1626992 5713872 1627040 5713448 +1626992 5713872 1627384 5714024 1627192 5713448 1627040 5713448 +1627384 5714024 1627192 5713448 1626992 5713872 1626776 5714064 +1626992 5713872 1626912 5713816 1626792 5714016 1626776 5714064 +1627384 5714024 1627224 5713424 1627192 5713448 1626992 5713872 +1626776 5714064 1627080 5713952 1626992 5713872 1626792 5714016 +1627384 5714024 1627080 5713952 1626776 5714064 1626704 5714168 +1627384 5714024 1627080 5713952 1626704 5714168 1627616 5714504 +1626704 5714168 1626744 5714808 1627616 5714504 1627080 5713952 +1627080 5713952 1626776 5714064 1626704 5714168 1627616 5714504 +1626992 5713872 1627080 5713952 1627384 5714024 1627192 5713448 +1626992 5713872 1627080 5713952 1627192 5713448 1627040 5713448 +1627080 5713952 1627192 5713448 1626992 5713872 1626792 5714016 +1626992 5713872 1626912 5713816 1626792 5714016 1627080 5713952 +1627384 5714024 1627192 5713448 1627080 5713952 1627616 5714504 +1626776 5714064 1626704 5714168 1627080 5713952 1626792 5714016 +1627384 5714024 1627224 5713424 1627192 5713448 1627080 5713952 +1627384 5714024 1627080 5713952 1627616 5714504 1627608 5714272 +1627616 5714504 1627168 5714008 1627080 5713952 1626704 5714168 +1627616 5714504 1627168 5714008 1626704 5714168 1626744 5714808 +1627616 5714504 1627168 5714008 1626744 5714808 1627064 5715072 +1626704 5714168 1626600 5714640 1626744 5714808 1627168 5714008 +1627168 5714008 1627080 5713952 1626704 5714168 1626744 5714808 +1627080 5713952 1626776 5714064 1626704 5714168 1627168 5714008 +1626704 5714168 1626744 5714808 1627168 5714008 1626776 5714064 +1627080 5713952 1627168 5714008 1627384 5714024 1627192 5713448 +1627080 5713952 1627168 5714008 1627192 5713448 1626992 5713872 +1627080 5713952 1626792 5714016 1626776 5714064 1627168 5714008 +1627168 5714008 1627192 5713448 1627080 5713952 1626776 5714064 +1627168 5714008 1627616 5714504 1627384 5714024 1627192 5713448 +1627616 5714504 1627384 5714024 1627168 5714008 1626744 5714808 +1627384 5714024 1627224 5713424 1627192 5713448 1627168 5714008 +1627384 5714024 1627168 5714008 1627616 5714504 1627608 5714272 +1627384 5714024 1627192 5713448 1627168 5714008 1627608 5714272 +1627168 5714008 1626744 5714808 1627616 5714504 1627608 5714272 +1627384 5714024 1627168 5714008 1627608 5714272 1627560 5714152 +1627608 5714272 1628296 5711888 1629904 5706120 1629808 5706208 +1628296 5711888 1627704 5715064 1629904 5706120 1629808 5706208 +1627608 5714272 1627704 5715064 1628296 5711888 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1628296 5711888 +1627608 5714272 1628296 5711888 1629808 5706208 1627560 5714152 +1627608 5714272 1627704 5715064 1628296 5711888 1627560 5714152 +1629808 5706208 1627184 5713128 1627560 5714152 1628296 5711888 +1629808 5706208 1627136 5713048 1627184 5713128 1628296 5711888 +1629808 5706208 1627328 5706984 1627136 5713048 1628296 5711888 +1627328 5706984 1627064 5713000 1627136 5713048 1628296 5711888 +1627328 5706984 1627064 5713000 1628296 5711888 1629808 5706208 +1627136 5713048 1627184 5713128 1628296 5711888 1627064 5713000 +1629808 5706208 1627368 5706952 1627328 5706984 1628296 5711888 +1627328 5706984 1627064 5713000 1628296 5711888 1627368 5706952 +1627184 5713128 1627192 5713168 1627560 5714152 1628296 5711888 +1627192 5713168 1627216 5713328 1627560 5714152 1628296 5711888 +1627192 5713168 1627176 5713224 1627216 5713328 1628296 5711888 +1627192 5713168 1627216 5713328 1628296 5711888 1627184 5713128 +1627184 5713128 1627192 5713168 1628296 5711888 1627136 5713048 +1627560 5714152 1627608 5714272 1628296 5711888 1627216 5713328 +1628296 5711888 1629904 5706120 1629808 5706208 1627368 5706952 +1629904 5706120 1628296 5711888 1627704 5715064 1629984 5706008 +1629904 5706120 1629808 5706208 1628296 5711888 1629984 5706008 +1628296 5711888 1627608 5714272 1627704 5715064 1629984 5706008 +1629808 5706208 1629752 5706192 1627368 5706952 1628296 5711888 +1627328 5706984 1627296 5706984 1627064 5713000 1628296 5711888 +1627064 5713000 1627136 5713048 1628296 5711888 1627296 5706984 +1627328 5706984 1627296 5706984 1628296 5711888 1627368 5706952 +1627296 5706984 1627024 5713000 1627064 5713000 1628296 5711888 +1627296 5706984 1625232 5712632 1627024 5713000 1628296 5711888 +1627296 5706984 1624664 5712432 1625232 5712632 1628296 5711888 +1627064 5713000 1627136 5713048 1628296 5711888 1627024 5713000 +1625232 5712632 1625552 5712856 1627024 5713000 1628296 5711888 +1627024 5713000 1627064 5713000 1628296 5711888 1625232 5712632 +1627296 5706984 1625232 5712632 1628296 5711888 1627328 5706984 +1627704 5715064 1627712 5715168 1629984 5706008 1628296 5711888 +1627712 5715168 1630064 5705848 1629984 5706008 1628296 5711888 +1627712 5715168 1629944 5726576 1630064 5705848 1628296 5711888 +1630064 5705848 1629984 5706008 1628296 5711888 1629944 5726576 +1627704 5715064 1627712 5715168 1628296 5711888 1627608 5714272 +1629944 5726576 1630096 5705696 1630064 5705848 1628296 5711888 +1627712 5715168 1629736 5726176 1629944 5726576 1628296 5711888 +1629984 5706008 1629904 5706120 1628296 5711888 1630064 5705848 +1627712 5715168 1629944 5726576 1628296 5711888 1627704 5715064 +1627704 5715064 1628296 5711888 1627608 5714272 1627616 5714504 +1627216 5713328 1627224 5713384 1627560 5714152 1628296 5711888 +1627224 5713384 1627488 5714064 1627560 5714152 1628296 5711888 +1627216 5713328 1627224 5713384 1628296 5711888 1627192 5713168 +1627560 5714152 1627608 5714272 1628296 5711888 1627224 5713384 +1628296 5711888 1628328 5711848 1630064 5705848 1629984 5706008 +1629944 5726576 1628328 5711848 1628296 5711888 1627712 5715168 +1628296 5711888 1627712 5715168 1628328 5711848 1629984 5706008 +1628328 5711848 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628328 5711848 1627712 5715168 +1630064 5705848 1628328 5711848 1629944 5726576 1630096 5705696 +1629944 5726576 1628328 5711848 1627712 5715168 1629736 5726176 +1628296 5711888 1628328 5711848 1629984 5706008 1629904 5706120 +1628328 5711848 1630064 5705848 1629984 5706008 1629904 5706120 +1628296 5711888 1628328 5711848 1629904 5706120 1629808 5706208 +1628296 5711888 1627712 5715168 1628328 5711848 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1628328 5711848 +1628296 5711888 1628328 5711848 1629808 5706208 1627368 5706952 +1628328 5711848 1629904 5706120 1629808 5706208 1627368 5706952 +1628296 5711888 1627712 5715168 1628328 5711848 1627368 5706952 +1628296 5711888 1628328 5711848 1627368 5706952 1627328 5706984 +1628296 5711888 1627712 5715168 1628328 5711848 1627328 5706984 +1628296 5711888 1628328 5711848 1627328 5706984 1627296 5706984 +1628296 5711888 1627712 5715168 1628328 5711848 1627296 5706984 +1628328 5711848 1627368 5706952 1627328 5706984 1627296 5706984 +1628328 5711848 1629808 5706208 1627368 5706952 1627328 5706984 +1628328 5711848 1629984 5706008 1629904 5706120 1629808 5706208 +1629808 5706208 1629752 5706192 1627368 5706952 1628328 5711848 +1628296 5711888 1628328 5711848 1627296 5706984 1625232 5712632 +1628296 5711888 1628328 5711848 1625232 5712632 1627024 5713000 +1628296 5711888 1627712 5715168 1628328 5711848 1625232 5712632 +1627296 5706984 1624664 5712432 1625232 5712632 1628328 5711848 +1628328 5711848 1627328 5706984 1627296 5706984 1625232 5712632 +1628296 5711888 1627704 5715064 1627712 5715168 1628328 5711848 +1627712 5715168 1629944 5726576 1628328 5711848 1627704 5715064 +1628296 5711888 1627608 5714272 1627704 5715064 1628328 5711848 +1628296 5711888 1627608 5714272 1628328 5711848 1625232 5712632 +1628296 5711888 1627560 5714152 1627608 5714272 1628328 5711848 +1627704 5715064 1627712 5715168 1628328 5711848 1627608 5714272 +1627608 5714272 1627616 5714504 1627704 5715064 1628328 5711848 +1628328 5711848 1628376 5711784 1630064 5705848 1629984 5706008 +1628328 5711848 1628376 5711784 1629984 5706008 1629904 5706120 +1628376 5711784 1630064 5705848 1629984 5706008 1629904 5706120 +1628328 5711848 1629944 5726576 1628376 5711784 1629904 5706120 +1629944 5726576 1628376 5711784 1628328 5711848 1627712 5715168 +1628328 5711848 1627704 5715064 1627712 5715168 1628376 5711784 +1628376 5711784 1629904 5706120 1628328 5711848 1627704 5715064 +1627712 5715168 1629944 5726576 1628376 5711784 1627704 5715064 +1628376 5711784 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628376 5711784 1627712 5715168 +1630064 5705848 1628376 5711784 1629944 5726576 1630096 5705696 +1629944 5726576 1628376 5711784 1627712 5715168 1629736 5726176 +1629944 5726576 1628376 5711784 1629736 5726176 1629904 5726504 +1628376 5711784 1627704 5715064 1627712 5715168 1629736 5726176 +1629944 5726576 1630064 5705848 1628376 5711784 1629736 5726176 +1628328 5711848 1628376 5711784 1629904 5706120 1629808 5706208 +1628376 5711784 1629984 5706008 1629904 5706120 1629808 5706208 +1628328 5711848 1628376 5711784 1629808 5706208 1627368 5706952 +1628328 5711848 1627704 5715064 1628376 5711784 1627368 5706952 +1629904 5706120 1629824 5706192 1629808 5706208 1628376 5711784 +1628328 5711848 1628376 5711784 1627368 5706952 1627328 5706984 +1628376 5711784 1629808 5706208 1627368 5706952 1627328 5706984 +1628328 5711848 1627704 5715064 1628376 5711784 1627328 5706984 +1628328 5711848 1628376 5711784 1627328 5706984 1627296 5706984 +1628328 5711848 1627704 5715064 1628376 5711784 1627296 5706984 +1628328 5711848 1628376 5711784 1627296 5706984 1625232 5712632 +1628328 5711848 1627704 5715064 1628376 5711784 1625232 5712632 +1627296 5706984 1624664 5712432 1625232 5712632 1628376 5711784 +1628376 5711784 1627328 5706984 1627296 5706984 1625232 5712632 +1628376 5711784 1627368 5706952 1627328 5706984 1627296 5706984 +1628376 5711784 1629904 5706120 1629808 5706208 1627368 5706952 +1627712 5715168 1629624 5725984 1629736 5726176 1628376 5711784 +1629808 5706208 1629752 5706192 1627368 5706952 1628376 5711784 +1628328 5711848 1628376 5711784 1625232 5712632 1628296 5711888 +1625232 5712632 1627024 5713000 1628296 5711888 1628376 5711784 +1628328 5711848 1627704 5715064 1628376 5711784 1628296 5711888 +1628376 5711784 1627296 5706984 1625232 5712632 1628296 5711888 +1628328 5711848 1627608 5714272 1627704 5715064 1628376 5711784 +1627704 5715064 1627712 5715168 1628376 5711784 1627608 5714272 +1628328 5711848 1628296 5711888 1627608 5714272 1628376 5711784 +1628328 5711848 1627608 5714272 1628376 5711784 1628296 5711888 +1627608 5714272 1627616 5714504 1627704 5715064 1628376 5711784 +1628376 5711784 1628424 5711744 1630064 5705848 1629984 5706008 +1628376 5711784 1628424 5711744 1629984 5706008 1629904 5706120 +1628376 5711784 1628424 5711744 1629904 5706120 1629808 5706208 +1628424 5711744 1629984 5706008 1629904 5706120 1629808 5706208 +1628424 5711744 1630064 5705848 1629984 5706008 1629904 5706120 +1628376 5711784 1629944 5726576 1628424 5711744 1629808 5706208 +1629944 5726576 1628424 5711744 1628376 5711784 1629736 5726176 +1629944 5726576 1628424 5711744 1629736 5726176 1629904 5726504 +1628424 5711744 1629808 5706208 1628376 5711784 1629736 5726176 +1628424 5711744 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628424 5711744 1629736 5726176 +1630064 5705848 1628424 5711744 1629944 5726576 1630096 5705696 +1629904 5706120 1629824 5706192 1629808 5706208 1628424 5711744 +1628376 5711784 1627712 5715168 1629736 5726176 1628424 5711744 +1628376 5711784 1627704 5715064 1627712 5715168 1628424 5711744 +1628376 5711784 1627608 5714272 1627704 5715064 1628424 5711744 +1627704 5715064 1627712 5715168 1628424 5711744 1627608 5714272 +1628376 5711784 1627608 5714272 1628424 5711744 1629808 5706208 +1629736 5726176 1629944 5726576 1628424 5711744 1627712 5715168 +1627712 5715168 1629736 5726176 1628424 5711744 1627704 5715064 +1628376 5711784 1628424 5711744 1629808 5706208 1627368 5706952 +1628424 5711744 1629904 5706120 1629808 5706208 1627368 5706952 +1628376 5711784 1628424 5711744 1627368 5706952 1627328 5706984 +1628376 5711784 1627608 5714272 1628424 5711744 1627328 5706984 +1628376 5711784 1628424 5711744 1627328 5706984 1627296 5706984 +1628424 5711744 1627368 5706952 1627328 5706984 1627296 5706984 +1628376 5711784 1627608 5714272 1628424 5711744 1627296 5706984 +1628376 5711784 1628424 5711744 1627296 5706984 1625232 5712632 +1628424 5711744 1629808 5706208 1627368 5706952 1627328 5706984 +1627712 5715168 1629624 5725984 1629736 5726176 1628424 5711744 +1629808 5706208 1629752 5706192 1627368 5706952 1628424 5711744 +1628376 5711784 1628328 5711848 1627608 5714272 1628424 5711744 +1627608 5714272 1627704 5715064 1628424 5711744 1628328 5711848 +1628328 5711848 1628296 5711888 1627608 5714272 1628424 5711744 +1627608 5714272 1627704 5715064 1628424 5711744 1628296 5711888 +1628296 5711888 1627560 5714152 1627608 5714272 1628424 5711744 +1628376 5711784 1628328 5711848 1628424 5711744 1627296 5706984 +1628328 5711848 1628296 5711888 1628424 5711744 1628376 5711784 +1627608 5714272 1627616 5714504 1627704 5715064 1628424 5711744 +1628424 5711744 1628440 5711728 1630064 5705848 1629984 5706008 +1628424 5711744 1628440 5711728 1629984 5706008 1629904 5706120 +1628424 5711744 1628440 5711728 1629904 5706120 1629808 5706208 +1628424 5711744 1628440 5711728 1629808 5706208 1627368 5706952 +1628440 5711728 1629904 5706120 1629808 5706208 1627368 5706952 +1628440 5711728 1629984 5706008 1629904 5706120 1629808 5706208 +1628440 5711728 1630064 5705848 1629984 5706008 1629904 5706120 +1628424 5711744 1629944 5726576 1628440 5711728 1627368 5706952 +1629944 5726576 1628440 5711728 1628424 5711744 1629736 5726176 +1629944 5726576 1628440 5711728 1629736 5726176 1629904 5726504 +1628424 5711744 1627712 5715168 1629736 5726176 1628440 5711728 +1628440 5711728 1627368 5706952 1628424 5711744 1627712 5715168 +1629736 5726176 1629944 5726576 1628440 5711728 1627712 5715168 +1628440 5711728 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628440 5711728 1629736 5726176 +1630064 5705848 1628440 5711728 1629944 5726576 1630096 5705696 +1629904 5706120 1629824 5706192 1629808 5706208 1628440 5711728 +1628424 5711744 1627704 5715064 1627712 5715168 1628440 5711728 +1628424 5711744 1627608 5714272 1627704 5715064 1628440 5711728 +1628424 5711744 1628296 5711888 1627608 5714272 1628440 5711728 +1628424 5711744 1628328 5711848 1628296 5711888 1628440 5711728 +1628296 5711888 1627560 5714152 1627608 5714272 1628440 5711728 +1627608 5714272 1627704 5715064 1628440 5711728 1628296 5711888 +1627712 5715168 1629736 5726176 1628440 5711728 1627704 5715064 +1628424 5711744 1628296 5711888 1628440 5711728 1627368 5706952 +1627704 5715064 1627712 5715168 1628440 5711728 1627608 5714272 +1628424 5711744 1628440 5711728 1627368 5706952 1627328 5706984 +1628440 5711728 1629808 5706208 1627368 5706952 1627328 5706984 +1628424 5711744 1628440 5711728 1627328 5706984 1627296 5706984 +1628424 5711744 1628296 5711888 1628440 5711728 1627296 5706984 +1628424 5711744 1628440 5711728 1627296 5706984 1628376 5711784 +1628440 5711728 1627328 5706984 1627296 5706984 1628376 5711784 +1628424 5711744 1628296 5711888 1628440 5711728 1628376 5711784 +1627296 5706984 1625232 5712632 1628376 5711784 1628440 5711728 +1628440 5711728 1627368 5706952 1627328 5706984 1627296 5706984 +1627712 5715168 1629624 5725984 1629736 5726176 1628440 5711728 +1629808 5706208 1629752 5706192 1627368 5706952 1628440 5711728 +1627608 5714272 1627616 5714504 1627704 5715064 1628440 5711728 +1628440 5711728 1628464 5711736 1630064 5705848 1629984 5706008 +1628440 5711728 1628464 5711736 1629984 5706008 1629904 5706120 +1628440 5711728 1628464 5711736 1629904 5706120 1629808 5706208 +1628440 5711728 1628464 5711736 1629808 5706208 1627368 5706952 +1628464 5711736 1629984 5706008 1629904 5706120 1629808 5706208 +1628464 5711736 1630064 5705848 1629984 5706008 1629904 5706120 +1628440 5711728 1629944 5726576 1628464 5711736 1629808 5706208 +1629944 5726576 1628464 5711736 1628440 5711728 1629736 5726176 +1629944 5726576 1628464 5711736 1629736 5726176 1629904 5726504 +1628440 5711728 1627712 5715168 1629736 5726176 1628464 5711736 +1628440 5711728 1627704 5715064 1627712 5715168 1628464 5711736 +1627712 5715168 1629736 5726176 1628464 5711736 1627704 5715064 +1628464 5711736 1629808 5706208 1628440 5711728 1627704 5715064 +1629736 5726176 1629944 5726576 1628464 5711736 1627712 5715168 +1628464 5711736 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628464 5711736 1629736 5726176 +1630064 5705848 1628464 5711736 1629944 5726576 1630096 5705696 +1629904 5706120 1629824 5706192 1629808 5706208 1628464 5711736 +1628440 5711728 1627608 5714272 1627704 5715064 1628464 5711736 +1628440 5711728 1628296 5711888 1627608 5714272 1628464 5711736 +1628440 5711728 1628424 5711744 1628296 5711888 1628464 5711736 +1628424 5711744 1628328 5711848 1628296 5711888 1628464 5711736 +1628424 5711744 1628328 5711848 1628464 5711736 1628440 5711728 +1628296 5711888 1627560 5714152 1627608 5714272 1628464 5711736 +1628296 5711888 1627608 5714272 1628464 5711736 1628328 5711848 +1627704 5715064 1627712 5715168 1628464 5711736 1627608 5714272 +1628440 5711728 1628424 5711744 1628464 5711736 1629808 5706208 +1627608 5714272 1627704 5715064 1628464 5711736 1628296 5711888 +1627712 5715168 1629624 5725984 1629736 5726176 1628464 5711736 +1628424 5711744 1628376 5711784 1628328 5711848 1628464 5711736 +1628424 5711744 1628376 5711784 1628464 5711736 1628440 5711728 +1628328 5711848 1628296 5711888 1628464 5711736 1628376 5711784 +1627608 5714272 1627616 5714504 1627704 5715064 1628464 5711736 +1628464 5711736 1628488 5711752 1630064 5705848 1629984 5706008 +1628464 5711736 1628488 5711752 1629984 5706008 1629904 5706120 +1628464 5711736 1628488 5711752 1629904 5706120 1629808 5706208 +1628464 5711736 1628488 5711752 1629808 5706208 1628440 5711728 +1628488 5711752 1629984 5706008 1629904 5706120 1629808 5706208 +1628488 5711752 1630064 5705848 1629984 5706008 1629904 5706120 +1628464 5711736 1629944 5726576 1628488 5711752 1629808 5706208 +1629944 5726576 1628488 5711752 1628464 5711736 1629736 5726176 +1629944 5726576 1628488 5711752 1629736 5726176 1629904 5726504 +1628464 5711736 1627712 5715168 1629736 5726176 1628488 5711752 +1628464 5711736 1627704 5715064 1627712 5715168 1628488 5711752 +1628464 5711736 1627608 5714272 1627704 5715064 1628488 5711752 +1627704 5715064 1627712 5715168 1628488 5711752 1627608 5714272 +1627712 5715168 1629736 5726176 1628488 5711752 1627704 5715064 +1628488 5711752 1629808 5706208 1628464 5711736 1627608 5714272 +1629736 5726176 1629944 5726576 1628488 5711752 1627712 5715168 +1628488 5711752 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628488 5711752 1629736 5726176 +1630064 5705848 1628488 5711752 1629944 5726576 1630096 5705696 +1629904 5706120 1629824 5706192 1629808 5706208 1628488 5711752 +1628464 5711736 1628296 5711888 1627608 5714272 1628488 5711752 +1628296 5711888 1627560 5714152 1627608 5714272 1628488 5711752 +1628464 5711736 1628328 5711848 1628296 5711888 1628488 5711752 +1628464 5711736 1628376 5711784 1628328 5711848 1628488 5711752 +1628328 5711848 1628296 5711888 1628488 5711752 1628376 5711784 +1627608 5714272 1627704 5715064 1628488 5711752 1628296 5711888 +1628464 5711736 1628376 5711784 1628488 5711752 1629808 5706208 +1628296 5711888 1627608 5714272 1628488 5711752 1628328 5711848 +1627712 5715168 1629624 5725984 1629736 5726176 1628488 5711752 +1628464 5711736 1628424 5711744 1628376 5711784 1628488 5711752 +1628464 5711736 1628440 5711728 1628424 5711744 1628488 5711752 +1628376 5711784 1628328 5711848 1628488 5711752 1628424 5711744 +1628464 5711736 1628424 5711744 1628488 5711752 1629808 5706208 +1627608 5714272 1627616 5714504 1627704 5715064 1628488 5711752 +1628488 5711752 1628520 5711808 1630064 5705848 1629984 5706008 +1628488 5711752 1628520 5711808 1629984 5706008 1629904 5706120 +1628488 5711752 1628520 5711808 1629904 5706120 1629808 5706208 +1628488 5711752 1628520 5711808 1629808 5706208 1628464 5711736 +1628520 5711808 1629984 5706008 1629904 5706120 1629808 5706208 +1628520 5711808 1630064 5705848 1629984 5706008 1629904 5706120 +1628488 5711752 1629944 5726576 1628520 5711808 1629808 5706208 +1629944 5726576 1628520 5711808 1628488 5711752 1629736 5726176 +1629944 5726576 1628520 5711808 1629736 5726176 1629904 5726504 +1628488 5711752 1627712 5715168 1629736 5726176 1628520 5711808 +1628488 5711752 1627704 5715064 1627712 5715168 1628520 5711808 +1628488 5711752 1627608 5714272 1627704 5715064 1628520 5711808 +1628488 5711752 1628296 5711888 1627608 5714272 1628520 5711808 +1628296 5711888 1627560 5714152 1627608 5714272 1628520 5711808 +1628296 5711888 1627560 5714152 1628520 5711808 1628488 5711752 +1627608 5714272 1627704 5715064 1628520 5711808 1627560 5714152 +1627704 5715064 1627712 5715168 1628520 5711808 1627608 5714272 +1627712 5715168 1629736 5726176 1628520 5711808 1627704 5715064 +1628520 5711808 1629808 5706208 1628488 5711752 1628296 5711888 +1629736 5726176 1629944 5726576 1628520 5711808 1627712 5715168 +1628520 5711808 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628520 5711808 1629736 5726176 +1630064 5705848 1628520 5711808 1629944 5726576 1630096 5705696 +1629904 5706120 1629824 5706192 1629808 5706208 1628520 5711808 +1628296 5711888 1627224 5713384 1627560 5714152 1628520 5711808 +1628488 5711752 1628328 5711848 1628296 5711888 1628520 5711808 +1628488 5711752 1628376 5711784 1628328 5711848 1628520 5711808 +1628488 5711752 1628424 5711744 1628376 5711784 1628520 5711808 +1628376 5711784 1628328 5711848 1628520 5711808 1628424 5711744 +1628296 5711888 1627560 5714152 1628520 5711808 1628328 5711848 +1628488 5711752 1628424 5711744 1628520 5711808 1629808 5706208 +1628328 5711848 1628296 5711888 1628520 5711808 1628376 5711784 +1627712 5715168 1629624 5725984 1629736 5726176 1628520 5711808 +1628488 5711752 1628464 5711736 1628424 5711744 1628520 5711808 +1627608 5714272 1627616 5714504 1627704 5715064 1628520 5711808 +1628520 5711808 1628560 5711888 1630064 5705848 1629984 5706008 +1628520 5711808 1628560 5711888 1629984 5706008 1629904 5706120 +1628520 5711808 1628560 5711888 1629904 5706120 1629808 5706208 +1628520 5711808 1628560 5711888 1629808 5706208 1628488 5711752 +1628560 5711888 1629984 5706008 1629904 5706120 1629808 5706208 +1628560 5711888 1630064 5705848 1629984 5706008 1629904 5706120 +1628520 5711808 1629944 5726576 1628560 5711888 1629808 5706208 +1629944 5726576 1628560 5711888 1628520 5711808 1629736 5726176 +1629944 5726576 1628560 5711888 1629736 5726176 1629904 5726504 +1628520 5711808 1627712 5715168 1629736 5726176 1628560 5711888 +1628520 5711808 1627704 5715064 1627712 5715168 1628560 5711888 +1628520 5711808 1627608 5714272 1627704 5715064 1628560 5711888 +1628520 5711808 1627560 5714152 1627608 5714272 1628560 5711888 +1628520 5711808 1628296 5711888 1627560 5714152 1628560 5711888 +1628520 5711808 1628328 5711848 1628296 5711888 1628560 5711888 +1628296 5711888 1627560 5714152 1628560 5711888 1628328 5711848 +1627560 5714152 1627608 5714272 1628560 5711888 1628296 5711888 +1627608 5714272 1627704 5715064 1628560 5711888 1627560 5714152 +1627704 5715064 1627712 5715168 1628560 5711888 1627608 5714272 +1627712 5715168 1629736 5726176 1628560 5711888 1627704 5715064 +1628560 5711888 1629808 5706208 1628520 5711808 1628328 5711848 +1629736 5726176 1629944 5726576 1628560 5711888 1627712 5715168 +1628560 5711888 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628560 5711888 1629736 5726176 +1630064 5705848 1628560 5711888 1629944 5726576 1630096 5705696 +1629904 5706120 1629824 5706192 1629808 5706208 1628560 5711888 +1628296 5711888 1627224 5713384 1627560 5714152 1628560 5711888 +1628296 5711888 1627224 5713384 1628560 5711888 1628328 5711848 +1627560 5714152 1627608 5714272 1628560 5711888 1627224 5713384 +1627224 5713384 1627488 5714064 1627560 5714152 1628560 5711888 +1628520 5711808 1628376 5711784 1628328 5711848 1628560 5711888 +1627712 5715168 1629624 5725984 1629736 5726176 1628560 5711888 +1627608 5714272 1627616 5714504 1627704 5715064 1628560 5711888 +1628296 5711888 1627216 5713328 1627224 5713384 1628560 5711888 +1628296 5711888 1627216 5713328 1628560 5711888 1628328 5711848 +1628296 5711888 1627192 5713168 1627216 5713328 1628560 5711888 +1627224 5713384 1627560 5714152 1628560 5711888 1627216 5713328 +1628560 5711888 1628608 5711984 1630064 5705848 1629984 5706008 +1628560 5711888 1628608 5711984 1629984 5706008 1629904 5706120 +1628560 5711888 1628608 5711984 1629904 5706120 1629808 5706208 +1628560 5711888 1628608 5711984 1629808 5706208 1628520 5711808 +1628608 5711984 1629984 5706008 1629904 5706120 1629808 5706208 +1628608 5711984 1630064 5705848 1629984 5706008 1629904 5706120 +1628560 5711888 1629944 5726576 1628608 5711984 1629808 5706208 +1629944 5726576 1628608 5711984 1628560 5711888 1629736 5726176 +1629944 5726576 1628608 5711984 1629736 5726176 1629904 5726504 +1628560 5711888 1627712 5715168 1629736 5726176 1628608 5711984 +1628560 5711888 1627704 5715064 1627712 5715168 1628608 5711984 +1628560 5711888 1627608 5714272 1627704 5715064 1628608 5711984 +1628560 5711888 1627560 5714152 1627608 5714272 1628608 5711984 +1628560 5711888 1627224 5713384 1627560 5714152 1628608 5711984 +1627560 5714152 1627608 5714272 1628608 5711984 1627224 5713384 +1627608 5714272 1627704 5715064 1628608 5711984 1627560 5714152 +1627704 5715064 1627712 5715168 1628608 5711984 1627608 5714272 +1627712 5715168 1629736 5726176 1628608 5711984 1627704 5715064 +1628608 5711984 1629808 5706208 1628560 5711888 1627224 5713384 +1629736 5726176 1629944 5726576 1628608 5711984 1627712 5715168 +1628608 5711984 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628608 5711984 1629736 5726176 +1630064 5705848 1628608 5711984 1629944 5726576 1630096 5705696 +1629904 5706120 1629824 5706192 1629808 5706208 1628608 5711984 +1627224 5713384 1627488 5714064 1627560 5714152 1628608 5711984 +1627224 5713384 1627488 5714064 1628608 5711984 1628560 5711888 +1627560 5714152 1627608 5714272 1628608 5711984 1627488 5714064 +1627224 5713384 1627224 5713424 1627488 5714064 1628608 5711984 +1628560 5711888 1627216 5713328 1627224 5713384 1628608 5711984 +1627224 5713384 1627488 5714064 1628608 5711984 1627216 5713328 +1628560 5711888 1627216 5713328 1628608 5711984 1629808 5706208 +1627712 5715168 1629624 5725984 1629736 5726176 1628608 5711984 +1627712 5715168 1627448 5719792 1629624 5725984 1628608 5711984 +1627712 5715168 1629624 5725984 1628608 5711984 1627704 5715064 +1629736 5726176 1629944 5726576 1628608 5711984 1629624 5725984 +1627608 5714272 1627616 5714504 1627704 5715064 1628608 5711984 +1627608 5714272 1627616 5714504 1628608 5711984 1627560 5714152 +1627704 5715064 1627712 5715168 1628608 5711984 1627616 5714504 +1627616 5714504 1627640 5714808 1627704 5715064 1628608 5711984 +1628560 5711888 1628296 5711888 1627216 5713328 1628608 5711984 +1628560 5711888 1628328 5711848 1628296 5711888 1628608 5711984 +1628560 5711888 1628296 5711888 1628608 5711984 1629808 5706208 +1628296 5711888 1627192 5713168 1627216 5713328 1628608 5711984 +1627192 5713168 1627176 5713224 1627216 5713328 1628608 5711984 +1628296 5711888 1627184 5713128 1627192 5713168 1628608 5711984 +1627192 5713168 1627216 5713328 1628608 5711984 1627184 5713128 +1628296 5711888 1627136 5713048 1627184 5713128 1628608 5711984 +1627216 5713328 1627224 5713384 1628608 5711984 1627192 5713168 +1628296 5711888 1627184 5713128 1628608 5711984 1628560 5711888 +1628608 5711984 1628640 5712072 1630064 5705848 1629984 5706008 +1628608 5711984 1628640 5712072 1629984 5706008 1629904 5706120 +1628608 5711984 1628640 5712072 1629904 5706120 1629808 5706208 +1628640 5712072 1630064 5705848 1629984 5706008 1629904 5706120 +1628608 5711984 1629944 5726576 1628640 5712072 1629904 5706120 +1629944 5726576 1628640 5712072 1628608 5711984 1629736 5726176 +1629944 5726576 1628640 5712072 1629736 5726176 1629904 5726504 +1628608 5711984 1629624 5725984 1629736 5726176 1628640 5712072 +1628640 5712072 1629904 5706120 1628608 5711984 1629624 5725984 +1629736 5726176 1629944 5726576 1628640 5712072 1629624 5725984 +1628640 5712072 1629944 5726576 1630064 5705848 1629984 5706008 +1629944 5726576 1630064 5705848 1628640 5712072 1629736 5726176 +1630064 5705848 1628640 5712072 1629944 5726576 1630096 5705696 +1628608 5711984 1627712 5715168 1629624 5725984 1628640 5712072 +1627712 5715168 1627448 5719792 1629624 5725984 1628640 5712072 +1628608 5711984 1627704 5715064 1627712 5715168 1628640 5712072 +1628608 5711984 1627616 5714504 1627704 5715064 1628640 5712072 +1627704 5715064 1627712 5715168 1628640 5712072 1627616 5714504 +1629624 5725984 1629736 5726176 1628640 5712072 1627712 5715168 +1628608 5711984 1627616 5714504 1628640 5712072 1629904 5706120 +1627616 5714504 1627640 5714808 1627704 5715064 1628640 5712072 +1627712 5715168 1629624 5725984 1628640 5712072 1627704 5715064 +1628608 5711984 1627608 5714272 1627616 5714504 1628640 5712072 +1628608 5711984 1627560 5714152 1627608 5714272 1628640 5712072 +1628608 5711984 1627488 5714064 1627560 5714152 1628640 5712072 +1627560 5714152 1627608 5714272 1628640 5712072 1627488 5714064 +1627616 5714504 1627704 5715064 1628640 5712072 1627608 5714272 +1628608 5711984 1627488 5714064 1628640 5712072 1629904 5706120 +1628608 5711984 1627224 5713384 1627488 5714064 1628640 5712072 +1628608 5711984 1627216 5713328 1627224 5713384 1628640 5712072 +1627488 5714064 1627560 5714152 1628640 5712072 1627224 5713384 +1628608 5711984 1627216 5713328 1628640 5712072 1629904 5706120 +1627224 5713384 1627224 5713424 1627488 5714064 1628640 5712072 +1627224 5713384 1627488 5714064 1628640 5712072 1627216 5713328 +1628608 5711984 1627192 5713168 1627216 5713328 1628640 5712072 +1627216 5713328 1627224 5713384 1628640 5712072 1627192 5713168 +1628608 5711984 1627192 5713168 1628640 5712072 1629904 5706120 +1627192 5713168 1627176 5713224 1627216 5713328 1628640 5712072 +1628608 5711984 1627184 5713128 1627192 5713168 1628640 5712072 +1628608 5711984 1627184 5713128 1628640 5712072 1629904 5706120 +1628608 5711984 1628296 5711888 1627184 5713128 1628640 5712072 +1628608 5711984 1628296 5711888 1628640 5712072 1629904 5706120 +1627184 5713128 1627192 5713168 1628640 5712072 1628296 5711888 +1628296 5711888 1627136 5713048 1627184 5713128 1628640 5712072 +1627192 5713168 1627216 5713328 1628640 5712072 1627184 5713128 +1627608 5714272 1627616 5714504 1628640 5712072 1627560 5714152 +1628608 5711984 1628560 5711888 1628296 5711888 1628640 5712072 +1629624 5725984 1628632 5712112 1627712 5715168 1627448 5719792 +1628640 5712072 1628632 5712112 1629624 5725984 1629736 5726176 +1628640 5712072 1628632 5712112 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1628632 5712112 +1628632 5712112 1629624 5725984 1629736 5726176 1629944 5726576 +1628640 5712072 1627712 5715168 1628632 5712112 1629944 5726576 +1628640 5712072 1628632 5712112 1629944 5726576 1630064 5705848 +1628632 5712112 1627712 5715168 1629624 5725984 1629736 5726176 +1627712 5715168 1628632 5712112 1628640 5712072 1627704 5715064 +1628640 5712072 1627616 5714504 1627704 5715064 1628632 5712112 +1628640 5712072 1627608 5714272 1627616 5714504 1628632 5712112 +1627616 5714504 1627704 5715064 1628632 5712112 1627608 5714272 +1628632 5712112 1629944 5726576 1628640 5712072 1627608 5714272 +1627712 5715168 1629624 5725984 1628632 5712112 1627704 5715064 +1627616 5714504 1627640 5714808 1627704 5715064 1628632 5712112 +1627704 5715064 1627712 5715168 1628632 5712112 1627616 5714504 +1628640 5712072 1627560 5714152 1627608 5714272 1628632 5712112 +1628640 5712072 1627488 5714064 1627560 5714152 1628632 5712112 +1628640 5712072 1627224 5713384 1627488 5714064 1628632 5712112 +1627488 5714064 1627560 5714152 1628632 5712112 1627224 5713384 +1627608 5714272 1627616 5714504 1628632 5712112 1627560 5714152 +1628640 5712072 1627224 5713384 1628632 5712112 1629944 5726576 +1627224 5713384 1627224 5713424 1627488 5714064 1628632 5712112 +1628640 5712072 1627216 5713328 1627224 5713384 1628632 5712112 +1628640 5712072 1627192 5713168 1627216 5713328 1628632 5712112 +1627224 5713384 1627488 5714064 1628632 5712112 1627216 5713328 +1628640 5712072 1627192 5713168 1628632 5712112 1629944 5726576 +1627192 5713168 1627176 5713224 1627216 5713328 1628632 5712112 +1627216 5713328 1627224 5713384 1628632 5712112 1627192 5713168 +1628640 5712072 1627184 5713128 1627192 5713168 1628632 5712112 +1627192 5713168 1627216 5713328 1628632 5712112 1627184 5713128 +1628640 5712072 1627184 5713128 1628632 5712112 1629944 5726576 +1628640 5712072 1628296 5711888 1627184 5713128 1628632 5712112 +1628640 5712072 1628296 5711888 1628632 5712112 1629944 5726576 +1628640 5712072 1628608 5711984 1628296 5711888 1628632 5712112 +1628640 5712072 1628608 5711984 1628632 5712112 1629944 5726576 +1628296 5711888 1627184 5713128 1628632 5712112 1628608 5711984 +1628296 5711888 1627136 5713048 1627184 5713128 1628632 5712112 +1627184 5713128 1627192 5713168 1628632 5712112 1628296 5711888 +1627560 5714152 1627608 5714272 1628632 5712112 1627488 5714064 +1628608 5711984 1628560 5711888 1628296 5711888 1628632 5712112 +1627488 5714064 1628600 5712168 1628632 5712112 1627224 5713384 +1628632 5712112 1627216 5713328 1627224 5713384 1628600 5712168 +1627224 5713384 1627488 5714064 1628600 5712168 1627216 5713328 +1628600 5712168 1627560 5714152 1628632 5712112 1627216 5713328 +1627488 5714064 1627560 5714152 1628600 5712168 1627224 5713384 +1627488 5714064 1628600 5712168 1627224 5713384 1627224 5713424 +1628632 5712112 1627192 5713168 1627216 5713328 1628600 5712168 +1628632 5712112 1627184 5713128 1627192 5713168 1628600 5712168 +1627216 5713328 1627224 5713384 1628600 5712168 1627192 5713168 +1628632 5712112 1627184 5713128 1628600 5712168 1627560 5714152 +1627192 5713168 1627176 5713224 1627216 5713328 1628600 5712168 +1627192 5713168 1627216 5713328 1628600 5712168 1627184 5713128 +1628632 5712112 1628296 5711888 1627184 5713128 1628600 5712168 +1627184 5713128 1627192 5713168 1628600 5712168 1628296 5711888 +1628632 5712112 1628296 5711888 1628600 5712168 1627560 5714152 +1628632 5712112 1628608 5711984 1628296 5711888 1628600 5712168 +1628632 5712112 1628608 5711984 1628600 5712168 1627560 5714152 +1628632 5712112 1628640 5712072 1628608 5711984 1628600 5712168 +1628296 5711888 1627136 5713048 1627184 5713128 1628600 5712168 +1627184 5713128 1627192 5713168 1628600 5712168 1627136 5713048 +1628296 5711888 1627064 5713000 1627136 5713048 1628600 5712168 +1628296 5711888 1627136 5713048 1628600 5712168 1628608 5711984 +1628632 5712112 1628600 5712168 1627560 5714152 1627608 5714272 +1628632 5712112 1628600 5712168 1627608 5714272 1627616 5714504 +1628632 5712112 1628600 5712168 1627616 5714504 1627704 5715064 +1628600 5712168 1627608 5714272 1627616 5714504 1627704 5715064 +1628632 5712112 1628608 5711984 1628600 5712168 1627704 5715064 +1628600 5712168 1627488 5714064 1627560 5714152 1627608 5714272 +1627616 5714504 1627640 5714808 1627704 5715064 1628600 5712168 +1628632 5712112 1628600 5712168 1627704 5715064 1627712 5715168 +1628600 5712168 1627616 5714504 1627704 5715064 1627712 5715168 +1628632 5712112 1628608 5711984 1628600 5712168 1627712 5715168 +1628632 5712112 1628600 5712168 1627712 5715168 1629624 5725984 +1628600 5712168 1627560 5714152 1627608 5714272 1627616 5714504 +1628608 5711984 1628560 5711888 1628296 5711888 1628600 5712168 +1628600 5712168 1628552 5712200 1627184 5713128 1627192 5713168 +1628552 5712200 1627136 5713048 1627184 5713128 1627192 5713168 +1628600 5712168 1627136 5713048 1628552 5712200 1627192 5713168 +1628600 5712168 1628552 5712200 1627192 5713168 1627216 5713328 +1628552 5712200 1627184 5713128 1627192 5713168 1627216 5713328 +1628600 5712168 1628552 5712200 1627216 5713328 1627224 5713384 +1628600 5712168 1628552 5712200 1627224 5713384 1627488 5714064 +1628552 5712200 1627216 5713328 1627224 5713384 1627488 5714064 +1628600 5712168 1627136 5713048 1628552 5712200 1627488 5714064 +1628600 5712168 1628552 5712200 1627488 5714064 1627560 5714152 +1628552 5712200 1627224 5713384 1627488 5714064 1627560 5714152 +1628600 5712168 1628552 5712200 1627560 5714152 1627608 5714272 +1628600 5712168 1627136 5713048 1628552 5712200 1627608 5714272 +1628552 5712200 1627488 5714064 1627560 5714152 1627608 5714272 +1627224 5713384 1627224 5713424 1627488 5714064 1628552 5712200 +1627192 5713168 1627176 5713224 1627216 5713328 1628552 5712200 +1628552 5712200 1627192 5713168 1627216 5713328 1627224 5713384 +1627136 5713048 1628552 5712200 1628600 5712168 1628296 5711888 +1628552 5712200 1627608 5714272 1628600 5712168 1628296 5711888 +1627136 5713048 1627184 5713128 1628552 5712200 1628296 5711888 +1627136 5713048 1628552 5712200 1628296 5711888 1627064 5713000 +1628600 5712168 1628608 5711984 1628296 5711888 1628552 5712200 +1628600 5712168 1628608 5711984 1628552 5712200 1627608 5714272 +1628600 5712168 1628632 5712112 1628608 5711984 1628552 5712200 +1628600 5712168 1628632 5712112 1628552 5712200 1627608 5714272 +1628632 5712112 1628640 5712072 1628608 5711984 1628552 5712200 +1628296 5711888 1627136 5713048 1628552 5712200 1628608 5711984 +1628608 5711984 1628296 5711888 1628552 5712200 1628632 5712112 +1628600 5712168 1628552 5712200 1627608 5714272 1627616 5714504 +1628608 5711984 1628560 5711888 1628296 5711888 1628552 5712200 +1628552 5712200 1628512 5712216 1627136 5713048 1627184 5713128 +1628552 5712200 1628512 5712216 1627184 5713128 1627192 5713168 +1628552 5712200 1628512 5712216 1627192 5713168 1627216 5713328 +1628512 5712216 1627184 5713128 1627192 5713168 1627216 5713328 +1628552 5712200 1628296 5711888 1628512 5712216 1627216 5713328 +1628512 5712216 1627136 5713048 1627184 5713128 1627192 5713168 +1628512 5712216 1628296 5711888 1627136 5713048 1627184 5713128 +1627136 5713048 1628512 5712216 1628296 5711888 1627064 5713000 +1627192 5713168 1627176 5713224 1627216 5713328 1628512 5712216 +1628552 5712200 1628512 5712216 1627216 5713328 1627224 5713384 +1628512 5712216 1627192 5713168 1627216 5713328 1627224 5713384 +1628552 5712200 1628512 5712216 1627224 5713384 1627488 5714064 +1628552 5712200 1628512 5712216 1627488 5714064 1627560 5714152 +1628512 5712216 1627224 5713384 1627488 5714064 1627560 5714152 +1628552 5712200 1628296 5711888 1628512 5712216 1627560 5714152 +1628552 5712200 1628512 5712216 1627560 5714152 1627608 5714272 +1628512 5712216 1627488 5714064 1627560 5714152 1627608 5714272 +1628552 5712200 1628296 5711888 1628512 5712216 1627608 5714272 +1628552 5712200 1628512 5712216 1627608 5714272 1628600 5712168 +1627224 5713384 1627224 5713424 1627488 5714064 1628512 5712216 +1628512 5712216 1627216 5713328 1627224 5713384 1627488 5714064 +1628296 5711888 1628512 5712216 1628552 5712200 1628608 5711984 +1628512 5712216 1627608 5714272 1628552 5712200 1628608 5711984 +1628296 5711888 1627136 5713048 1628512 5712216 1628608 5711984 +1628552 5712200 1628632 5712112 1628608 5711984 1628512 5712216 +1628296 5711888 1628512 5712216 1628608 5711984 1628560 5711888 +1628512 5712216 1628464 5712216 1627136 5713048 1627184 5713128 +1628512 5712216 1628464 5712216 1627184 5713128 1627192 5713168 +1628512 5712216 1628464 5712216 1627192 5713168 1627216 5713328 +1628512 5712216 1628464 5712216 1627216 5713328 1627224 5713384 +1628464 5712216 1627192 5713168 1627216 5713328 1627224 5713384 +1628464 5712216 1627184 5713128 1627192 5713168 1627216 5713328 +1628464 5712216 1627136 5713048 1627184 5713128 1627192 5713168 +1628512 5712216 1628296 5711888 1628464 5712216 1627224 5713384 +1628296 5711888 1628464 5712216 1628512 5712216 1628608 5711984 +1628464 5712216 1627224 5713384 1628512 5712216 1628608 5711984 +1628464 5712216 1628296 5711888 1627136 5713048 1627184 5713128 +1628296 5711888 1627136 5713048 1628464 5712216 1628608 5711984 +1627136 5713048 1628464 5712216 1628296 5711888 1627064 5713000 +1627192 5713168 1627176 5713224 1627216 5713328 1628464 5712216 +1628512 5712216 1628464 5712216 1627224 5713384 1627488 5714064 +1628464 5712216 1627216 5713328 1627224 5713384 1627488 5714064 +1628512 5712216 1628464 5712216 1627488 5714064 1627560 5714152 +1628512 5712216 1628464 5712216 1627560 5714152 1627608 5714272 +1628512 5712216 1628608 5711984 1628464 5712216 1627560 5714152 +1627224 5713384 1627224 5713424 1627488 5714064 1628464 5712216 +1628464 5712216 1627224 5713384 1627488 5714064 1627560 5714152 +1628512 5712216 1628552 5712200 1628608 5711984 1628464 5712216 +1628512 5712216 1628552 5712200 1628464 5712216 1627560 5714152 +1628608 5711984 1628296 5711888 1628464 5712216 1628552 5712200 +1628552 5712200 1628632 5712112 1628608 5711984 1628464 5712216 +1628296 5711888 1628464 5712216 1628608 5711984 1628560 5711888 +1628464 5712216 1628432 5712208 1627136 5713048 1627184 5713128 +1628464 5712216 1628432 5712208 1627184 5713128 1627192 5713168 +1628464 5712216 1628432 5712208 1627192 5713168 1627216 5713328 +1628464 5712216 1628432 5712208 1627216 5713328 1627224 5713384 +1628432 5712208 1627184 5713128 1627192 5713168 1627216 5713328 +1628432 5712208 1627136 5713048 1627184 5713128 1627192 5713168 +1628464 5712216 1628296 5711888 1628432 5712208 1627216 5713328 +1628296 5711888 1628432 5712208 1628464 5712216 1628608 5711984 +1628464 5712216 1628552 5712200 1628608 5711984 1628432 5712208 +1628432 5712208 1627216 5713328 1628464 5712216 1628552 5712200 +1628608 5711984 1628296 5711888 1628432 5712208 1628552 5712200 +1628432 5712208 1628296 5711888 1627136 5713048 1627184 5713128 +1628296 5711888 1627136 5713048 1628432 5712208 1628608 5711984 +1627136 5713048 1628432 5712208 1628296 5711888 1627064 5713000 +1627192 5713168 1627176 5713224 1627216 5713328 1628432 5712208 +1628464 5712216 1628512 5712216 1628552 5712200 1628432 5712208 +1628552 5712200 1628632 5712112 1628608 5711984 1628432 5712208 +1628296 5711888 1628432 5712208 1628608 5711984 1628560 5711888 +1628432 5712208 1628400 5712176 1627136 5713048 1627184 5713128 +1628432 5712208 1628400 5712176 1627184 5713128 1627192 5713168 +1628432 5712208 1628296 5711888 1628400 5712176 1627184 5713128 +1628296 5711888 1628400 5712176 1628432 5712208 1628608 5711984 +1628432 5712208 1628552 5712200 1628608 5711984 1628400 5712176 +1628432 5712208 1628464 5712216 1628552 5712200 1628400 5712176 +1628552 5712200 1628608 5711984 1628400 5712176 1628464 5712216 +1628400 5712176 1627184 5713128 1628432 5712208 1628464 5712216 +1628608 5711984 1628296 5711888 1628400 5712176 1628552 5712200 +1628400 5712176 1628296 5711888 1627136 5713048 1627184 5713128 +1628296 5711888 1627136 5713048 1628400 5712176 1628608 5711984 +1627136 5713048 1628400 5712176 1628296 5711888 1627064 5713000 +1627136 5713048 1627184 5713128 1628400 5712176 1627064 5713000 +1628400 5712176 1628608 5711984 1628296 5711888 1627064 5713000 +1628296 5711888 1627024 5713000 1627064 5713000 1628400 5712176 +1628464 5712216 1628512 5712216 1628552 5712200 1628400 5712176 +1628464 5712216 1628512 5712216 1628400 5712176 1628432 5712208 +1628552 5712200 1628608 5711984 1628400 5712176 1628512 5712216 +1628552 5712200 1628632 5712112 1628608 5711984 1628400 5712176 +1628296 5711888 1628400 5712176 1628608 5711984 1628560 5711888 +1628296 5711888 1628400 5712176 1628560 5711888 1628328 5711848 +1628400 5712176 1628552 5712200 1628608 5711984 1628560 5711888 +1628296 5711888 1627064 5713000 1628400 5712176 1628560 5711888 +1628296 5711888 1628336 5712080 1628400 5712176 1628560 5711888 +1628296 5711888 1628336 5712080 1628560 5711888 1628328 5711848 +1628560 5711888 1628520 5711808 1628328 5711848 1628336 5712080 +1628336 5712080 1627064 5713000 1628400 5712176 1628560 5711888 +1628336 5712080 1628400 5712176 1628560 5711888 1628328 5711848 +1628296 5711888 1627064 5713000 1628336 5712080 1628328 5711848 +1627064 5713000 1628336 5712080 1628296 5711888 1627024 5713000 +1628400 5712176 1628336 5712080 1627064 5713000 1627136 5713048 +1628400 5712176 1628336 5712080 1627136 5713048 1627184 5713128 +1628400 5712176 1628560 5711888 1628336 5712080 1627136 5713048 +1628336 5712080 1628296 5711888 1627064 5713000 1627136 5713048 +1628400 5712176 1628608 5711984 1628560 5711888 1628336 5712080 +1628400 5712176 1628552 5712200 1628608 5711984 1628336 5712080 +1628400 5712176 1628608 5711984 1628336 5712080 1627136 5713048 +1628560 5711888 1628328 5711848 1628336 5712080 1628608 5711984 +1628336 5712080 1628296 5711992 1627064 5713000 1627136 5713048 +1628336 5712080 1628296 5711888 1628296 5711992 1627136 5713048 +1628296 5711888 1628296 5711992 1628336 5712080 1628328 5711848 +1628336 5712080 1628560 5711888 1628328 5711848 1628296 5711992 +1628560 5711888 1628520 5711808 1628328 5711848 1628296 5711992 +1628336 5712080 1628608 5711984 1628560 5711888 1628296 5711992 +1628296 5711992 1627136 5713048 1628336 5712080 1628560 5711888 +1628328 5711848 1628296 5711888 1628296 5711992 1628560 5711888 +1628296 5711992 1628296 5711888 1627064 5713000 1627136 5713048 +1627064 5713000 1628296 5711992 1628296 5711888 1627024 5713000 +1628336 5712080 1628296 5711992 1627136 5713048 1628400 5712176 +1628296 5711888 1627064 5713000 1628296 5711992 1628328 5711848 +1743888 5687504 1631424 5714280 1629944 5726576 1632696 5739008 +1629944 5726576 1631224 5733936 1632696 5739008 1631424 5714280 +1632696 5739008 1743888 5687504 1631424 5714280 1631224 5733936 +1629944 5726576 1629944 5726624 1631224 5733936 1631424 5714280 +1631224 5733936 1631240 5734008 1632696 5739008 1631424 5714280 +1743888 5687504 1631424 5714280 1632696 5739008 1751256 5699792 +1743888 5687504 1630096 5705696 1631424 5714280 1632696 5739008 +1631424 5714280 1630096 5705696 1629944 5726576 1631224 5733936 +1630096 5705696 1631424 5714280 1743888 5687504 1743800 5687320 +1630096 5705696 1629944 5726576 1631424 5714280 1743800 5687320 +1631424 5714280 1632696 5739008 1743888 5687504 1743800 5687320 +1630096 5705696 1631424 5714280 1743800 5687320 1630152 5704824 +1743800 5687320 1630136 5704624 1630152 5704824 1631424 5714280 +1630096 5705696 1631424 5714280 1630152 5704824 1630080 5705344 +1630096 5705696 1629944 5726576 1631424 5714280 1630152 5704824 +1631424 5714280 1743888 5687504 1743800 5687320 1630152 5704824 +1629944 5726576 1631424 5714280 1630096 5705696 1630064 5705848 +1629944 5726576 1631424 5714280 1630064 5705848 1628640 5712072 +1630064 5705848 1629984 5706008 1628640 5712072 1631424 5714280 +1629984 5706008 1629904 5706120 1628640 5712072 1631424 5714280 +1629904 5706120 1628608 5711984 1628640 5712072 1631424 5714280 +1629904 5706120 1629808 5706208 1628608 5711984 1631424 5714280 +1629808 5706208 1628560 5711888 1628608 5711984 1631424 5714280 +1629808 5706208 1628520 5711808 1628560 5711888 1631424 5714280 +1629808 5706208 1628560 5711888 1631424 5714280 1629904 5706120 +1628608 5711984 1628640 5712072 1631424 5714280 1628560 5711888 +1629904 5706120 1629808 5706208 1631424 5714280 1629984 5706008 +1629984 5706008 1629904 5706120 1631424 5714280 1630064 5705848 +1629944 5726576 1631424 5714280 1628640 5712072 1628632 5712112 +1629944 5726576 1631424 5714280 1628632 5712112 1629736 5726176 +1629944 5726576 1631424 5714280 1629736 5726176 1629904 5726504 +1628632 5712112 1629624 5725984 1629736 5726176 1631424 5714280 +1629736 5726176 1629944 5726576 1631424 5714280 1629624 5725984 +1631424 5714280 1628640 5712072 1628632 5712112 1629624 5725984 +1628632 5712112 1627712 5715168 1629624 5725984 1631424 5714280 +1627712 5715168 1627448 5719792 1629624 5725984 1631424 5714280 +1627712 5715168 1627680 5715232 1627448 5719792 1631424 5714280 +1627448 5719792 1629624 5725984 1631424 5714280 1627680 5715232 +1629624 5725984 1629736 5726176 1631424 5714280 1627448 5719792 +1628632 5712112 1627712 5715168 1631424 5714280 1628640 5712072 +1627712 5715168 1627680 5715232 1631424 5714280 1628632 5712112 +1628632 5712112 1628600 5712168 1627712 5715168 1631424 5714280 +1628632 5712112 1628600 5712168 1631424 5714280 1628640 5712072 +1627712 5715168 1627680 5715232 1631424 5714280 1628600 5712168 +1627448 5719792 1629600 5725952 1629624 5725984 1631424 5714280 +1627448 5719792 1629600 5725952 1631424 5714280 1627680 5715232 +1627448 5719792 1627448 5719840 1629600 5725952 1631424 5714280 +1627448 5719792 1627448 5719840 1631424 5714280 1627680 5715232 +1627448 5719840 1629568 5725912 1629600 5725952 1631424 5714280 +1627448 5719840 1629568 5725912 1631424 5714280 1627448 5719792 +1629624 5725984 1629736 5726176 1631424 5714280 1629600 5725952 +1629600 5725952 1629624 5725984 1631424 5714280 1629568 5725912 +1627448 5719840 1627400 5719960 1629568 5725912 1631424 5714280 +1628640 5712072 1628632 5712112 1631424 5714280 1628608 5711984 +1629904 5706120 1629824 5706192 1629808 5706208 1631424 5714280 +1627680 5715232 1627384 5719672 1627448 5719792 1631424 5714280 +1627448 5719792 1627448 5719840 1631424 5714280 1627384 5719672 +1627680 5715232 1627384 5719672 1631424 5714280 1627712 5715168 +1627384 5719672 1627400 5719704 1627448 5719792 1631424 5714280 +1627680 5715232 1627560 5715304 1627384 5719672 1631424 5714280 +1628600 5712168 1627704 5715064 1627712 5715168 1631424 5714280 +1628600 5712168 1627616 5714504 1627704 5715064 1631424 5714280 +1628600 5712168 1627608 5714272 1627616 5714504 1631424 5714280 +1627616 5714504 1627704 5715064 1631424 5714280 1627608 5714272 +1627712 5715168 1627680 5715232 1631424 5714280 1627704 5715064 +1628600 5712168 1627608 5714272 1631424 5714280 1628632 5712112 +1627616 5714504 1627640 5714808 1627704 5715064 1631424 5714280 +1627704 5715064 1627712 5715168 1631424 5714280 1627616 5714504 +1631424 5714280 1630152 5704824 1630096 5705696 1630064 5705848 +1629944 5726576 1631224 5733936 1631424 5714280 1629736 5726176 +1628600 5712168 1628552 5712200 1627608 5714272 1631424 5714280 +1627608 5714272 1627616 5714504 1631424 5714280 1628552 5712200 +1628600 5712168 1628552 5712200 1631424 5714280 1628632 5712112 +1628552 5712200 1628512 5712216 1627608 5714272 1631424 5714280 +1631424 5714280 1630096 5705696 1630064 5705848 1629984 5706008 +1627680 5715232 1631184 5714344 1631424 5714280 1627712 5715168 +1631424 5714280 1627704 5715064 1627712 5715168 1631184 5714344 +1627712 5715168 1627680 5715232 1631184 5714344 1627704 5715064 +1631424 5714280 1631184 5714344 1627384 5719672 1627448 5719792 +1631424 5714280 1631184 5714344 1627448 5719792 1627448 5719840 +1627384 5719672 1627400 5719704 1627448 5719792 1631184 5714344 +1627384 5719672 1631184 5714344 1627680 5715232 1627560 5715304 +1631424 5714280 1627616 5714504 1627704 5715064 1631184 5714344 +1631424 5714280 1627608 5714272 1627616 5714504 1631184 5714344 +1631424 5714280 1628552 5712200 1627608 5714272 1631184 5714344 +1627608 5714272 1627616 5714504 1631184 5714344 1628552 5712200 +1627704 5715064 1627712 5715168 1631184 5714344 1627616 5714504 +1628552 5712200 1628512 5712216 1627608 5714272 1631184 5714344 +1627616 5714504 1627640 5714808 1627704 5715064 1631184 5714344 +1627616 5714504 1627704 5715064 1631184 5714344 1627608 5714272 +1631184 5714344 1627448 5719792 1631424 5714280 1628552 5712200 +1631184 5714344 1627680 5715232 1627384 5719672 1627448 5719792 +1627680 5715232 1627384 5719672 1631184 5714344 1627712 5715168 +1631424 5714280 1628600 5712168 1628552 5712200 1631184 5714344 +1628552 5712200 1627608 5714272 1631184 5714344 1628600 5712168 +1631424 5714280 1628632 5712112 1628600 5712168 1631184 5714344 +1631424 5714280 1628640 5712072 1628632 5712112 1631184 5714344 +1628632 5712112 1628600 5712168 1631184 5714344 1628640 5712072 +1631424 5714280 1628608 5711984 1628640 5712072 1631184 5714344 +1631424 5714280 1628640 5712072 1631184 5714344 1627448 5719792 +1628600 5712168 1628552 5712200 1631184 5714344 1628632 5712112 +1631184 5714344 1630984 5714360 1627704 5715064 1627712 5715168 +1631184 5714344 1630984 5714360 1627712 5715168 1627680 5715232 +1630984 5714360 1627704 5715064 1627712 5715168 1627680 5715232 +1627704 5715064 1630984 5714360 1627616 5714504 1627640 5714808 +1627616 5714504 1630984 5714360 1631184 5714344 1627608 5714272 +1631184 5714344 1628552 5712200 1627608 5714272 1630984 5714360 +1631184 5714344 1628600 5712168 1628552 5712200 1630984 5714360 +1628552 5712200 1627608 5714272 1630984 5714360 1628600 5712168 +1628552 5712200 1628512 5712216 1627608 5714272 1630984 5714360 +1627608 5714272 1627616 5714504 1630984 5714360 1628552 5712200 +1631184 5714344 1628600 5712168 1630984 5714360 1627680 5715232 +1631184 5714344 1630984 5714360 1627680 5715232 1627384 5719672 +1630984 5714360 1627712 5715168 1627680 5715232 1627384 5719672 +1627680 5715232 1627560 5715304 1627384 5719672 1630984 5714360 +1631184 5714344 1630984 5714360 1627384 5719672 1627448 5719792 +1627384 5719672 1627400 5719704 1627448 5719792 1630984 5714360 +1631184 5714344 1630984 5714360 1627448 5719792 1631424 5714280 +1631184 5714344 1628600 5712168 1630984 5714360 1627448 5719792 +1630984 5714360 1627680 5715232 1627384 5719672 1627448 5719792 +1630984 5714360 1627640 5714808 1627704 5715064 1627712 5715168 +1630984 5714360 1627608 5714272 1627616 5714504 1627640 5714808 +1631184 5714344 1628632 5712112 1628600 5712168 1630984 5714360 +1628600 5712168 1628552 5712200 1630984 5714360 1628632 5712112 +1631184 5714344 1628640 5712072 1628632 5712112 1630984 5714360 +1631184 5714344 1631424 5714280 1628640 5712072 1630984 5714360 +1628640 5712072 1628632 5712112 1630984 5714360 1631424 5714280 +1631424 5714280 1628608 5711984 1628640 5712072 1630984 5714360 +1631184 5714344 1631424 5714280 1630984 5714360 1627448 5719792 +1628632 5712112 1628600 5712168 1630984 5714360 1628640 5712072 +1628552 5712200 1630920 5714352 1630984 5714360 1628600 5712168 +1630984 5714360 1628632 5712112 1628600 5712168 1630920 5714352 +1628600 5712168 1628552 5712200 1630920 5714352 1628632 5712112 +1627608 5714272 1630920 5714352 1628552 5712200 1628512 5712216 +1630984 5714360 1630920 5714352 1627608 5714272 1627616 5714504 +1630920 5714352 1627616 5714504 1630984 5714360 1628632 5712112 +1630984 5714360 1630920 5714352 1627616 5714504 1627640 5714808 +1630984 5714360 1630920 5714352 1627640 5714808 1627704 5715064 +1630920 5714352 1627608 5714272 1627616 5714504 1627640 5714808 +1630984 5714360 1630920 5714352 1627704 5715064 1627712 5715168 +1630984 5714360 1630920 5714352 1627712 5715168 1627680 5715232 +1630984 5714360 1630920 5714352 1627680 5715232 1627384 5719672 +1630920 5714352 1627712 5715168 1627680 5715232 1627384 5719672 +1630920 5714352 1627640 5714808 1627704 5715064 1627712 5715168 +1627680 5715232 1627560 5715304 1627384 5719672 1630920 5714352 +1630984 5714360 1630920 5714352 1627384 5719672 1627448 5719792 +1630920 5714352 1627704 5715064 1627712 5715168 1627680 5715232 +1630984 5714360 1628632 5712112 1630920 5714352 1627384 5719672 +1630920 5714352 1627616 5714504 1627640 5714808 1627704 5715064 +1630920 5714352 1628552 5712200 1627608 5714272 1627616 5714504 +1628552 5712200 1627608 5714272 1630920 5714352 1628600 5712168 +1630984 5714360 1628640 5712072 1628632 5712112 1630920 5714352 +1628632 5712112 1628600 5712168 1630920 5714352 1628640 5712072 +1630984 5714360 1631424 5714280 1628640 5712072 1630920 5714352 +1630984 5714360 1631184 5714344 1631424 5714280 1630920 5714352 +1631424 5714280 1628640 5712072 1630920 5714352 1631184 5714344 +1631424 5714280 1628608 5711984 1628640 5712072 1630920 5714352 +1630984 5714360 1631184 5714344 1630920 5714352 1627384 5719672 +1628640 5712072 1628632 5712112 1630920 5714352 1631424 5714280 +1631424 5714280 1630872 5714296 1630920 5714352 1631184 5714344 +1630920 5714352 1630984 5714360 1631184 5714344 1630872 5714296 +1631184 5714344 1631424 5714280 1630872 5714296 1630984 5714360 +1628640 5712072 1630872 5714296 1631424 5714280 1628608 5711984 +1630872 5714296 1628640 5712072 1630920 5714352 1630984 5714360 +1631424 5714280 1628640 5712072 1630872 5714296 1631184 5714344 +1630920 5714352 1630872 5714296 1628640 5712072 1628632 5712112 +1630920 5714352 1630872 5714296 1628632 5712112 1628600 5712168 +1630920 5714352 1630872 5714296 1628600 5712168 1628552 5712200 +1630872 5714296 1628632 5712112 1628600 5712168 1628552 5712200 +1630920 5714352 1630984 5714360 1630872 5714296 1628552 5712200 +1630920 5714352 1630872 5714296 1628552 5712200 1627608 5714272 +1630872 5714296 1628600 5712168 1628552 5712200 1627608 5714272 +1628552 5712200 1628512 5712216 1627608 5714272 1630872 5714296 +1630920 5714352 1630872 5714296 1627608 5714272 1627616 5714504 +1630920 5714352 1630872 5714296 1627616 5714504 1627640 5714808 +1630920 5714352 1630872 5714296 1627640 5714808 1627704 5715064 +1630920 5714352 1630872 5714296 1627704 5715064 1627712 5715168 +1630872 5714296 1627616 5714504 1627640 5714808 1627704 5715064 +1630920 5714352 1630872 5714296 1627712 5715168 1627680 5715232 +1630872 5714296 1627640 5714808 1627704 5715064 1627712 5715168 +1630872 5714296 1627608 5714272 1627616 5714504 1627640 5714808 +1630920 5714352 1630984 5714360 1630872 5714296 1627712 5715168 +1630872 5714296 1628552 5712200 1627608 5714272 1627616 5714504 +1630872 5714296 1631424 5714280 1628640 5712072 1628632 5712112 +1630872 5714296 1628640 5712072 1628632 5712112 1628600 5712168 +1628640 5712072 1630856 5714248 1631424 5714280 1628608 5711984 +1630872 5714296 1630856 5714248 1628640 5712072 1628632 5712112 +1630872 5714296 1631424 5714280 1630856 5714248 1628632 5712112 +1631424 5714280 1630856 5714248 1630872 5714296 1631184 5714344 +1630872 5714296 1630984 5714360 1631184 5714344 1630856 5714248 +1630872 5714296 1630920 5714352 1630984 5714360 1630856 5714248 +1630856 5714248 1628632 5712112 1630872 5714296 1630984 5714360 +1631184 5714344 1631424 5714280 1630856 5714248 1630984 5714360 +1630856 5714248 1631424 5714280 1628640 5712072 1628632 5712112 +1631424 5714280 1628640 5712072 1630856 5714248 1631184 5714344 +1630872 5714296 1630856 5714248 1628632 5712112 1628600 5712168 +1630872 5714296 1630856 5714248 1628600 5712168 1628552 5712200 +1630872 5714296 1630856 5714248 1628552 5712200 1627608 5714272 +1630856 5714248 1628600 5712168 1628552 5712200 1627608 5714272 +1628552 5712200 1628512 5712216 1627608 5714272 1630856 5714248 +1630872 5714296 1630856 5714248 1627608 5714272 1627616 5714504 +1630856 5714248 1628552 5712200 1627608 5714272 1627616 5714504 +1630872 5714296 1630856 5714248 1627616 5714504 1627640 5714808 +1630872 5714296 1630856 5714248 1627640 5714808 1627704 5715064 +1630872 5714296 1630856 5714248 1627704 5715064 1627712 5715168 +1630856 5714248 1627616 5714504 1627640 5714808 1627704 5715064 +1630856 5714248 1627608 5714272 1627616 5714504 1627640 5714808 +1630856 5714248 1628640 5712072 1628632 5712112 1628600 5712168 +1630872 5714296 1630984 5714360 1630856 5714248 1627704 5715064 +1630856 5714248 1628632 5712112 1628600 5712168 1628552 5712200 +1628640 5712072 1630872 5714136 1631424 5714280 1628608 5711984 +1631424 5714280 1628560 5711888 1628608 5711984 1630872 5714136 +1630856 5714248 1630872 5714136 1628640 5712072 1628632 5712112 +1630856 5714248 1630872 5714136 1628632 5712112 1628600 5712168 +1630872 5714136 1628640 5712072 1628632 5712112 1628600 5712168 +1630856 5714248 1631424 5714280 1630872 5714136 1628600 5712168 +1631424 5714280 1630872 5714136 1630856 5714248 1631184 5714344 +1630856 5714248 1630984 5714360 1631184 5714344 1630872 5714136 +1630856 5714248 1630872 5714296 1630984 5714360 1630872 5714136 +1630872 5714136 1628600 5712168 1630856 5714248 1630984 5714360 +1631184 5714344 1631424 5714280 1630872 5714136 1630984 5714360 +1628640 5712072 1628632 5712112 1630872 5714136 1628608 5711984 +1630872 5714136 1631184 5714344 1631424 5714280 1628608 5711984 +1630856 5714248 1630872 5714136 1628600 5712168 1628552 5712200 +1630856 5714248 1630872 5714136 1628552 5712200 1627608 5714272 +1630856 5714248 1630872 5714136 1627608 5714272 1627616 5714504 +1628552 5712200 1628512 5712216 1627608 5714272 1630872 5714136 +1630872 5714136 1628632 5712112 1628600 5712168 1628552 5712200 +1630856 5714248 1630984 5714360 1630872 5714136 1627608 5714272 +1630872 5714136 1628600 5712168 1628552 5712200 1627608 5714272 +1628608 5711984 1631024 5714112 1631424 5714280 1628560 5711888 +1631424 5714280 1629808 5706208 1628560 5711888 1631024 5714112 +1629808 5706208 1628520 5711808 1628560 5711888 1631024 5714112 +1631424 5714280 1629904 5706120 1629808 5706208 1631024 5714112 +1628560 5711888 1628608 5711984 1631024 5714112 1629808 5706208 +1630872 5714136 1631024 5714112 1628608 5711984 1628640 5712072 +1630872 5714136 1631024 5714112 1628640 5712072 1628632 5712112 +1630872 5714136 1631424 5714280 1631024 5714112 1628640 5712072 +1631424 5714280 1631024 5714112 1630872 5714136 1631184 5714344 +1630872 5714136 1630984 5714360 1631184 5714344 1631024 5714112 +1630872 5714136 1630856 5714248 1630984 5714360 1631024 5714112 +1630856 5714248 1630872 5714296 1630984 5714360 1631024 5714112 +1630872 5714296 1630920 5714352 1630984 5714360 1631024 5714112 +1630856 5714248 1630872 5714296 1631024 5714112 1630872 5714136 +1630984 5714360 1631184 5714344 1631024 5714112 1630872 5714296 +1631024 5714112 1628640 5712072 1630872 5714136 1630856 5714248 +1631184 5714344 1631424 5714280 1631024 5714112 1630984 5714360 +1628608 5711984 1628640 5712072 1631024 5714112 1628560 5711888 +1631024 5714112 1631184 5714344 1631424 5714280 1629808 5706208 +1631024 5714112 1631200 5714128 1629808 5706208 1628560 5711888 +1629808 5706208 1628520 5711808 1628560 5711888 1631200 5714128 +1629808 5706208 1628488 5711752 1628520 5711808 1631200 5714128 +1628560 5711888 1631024 5714112 1631200 5714128 1628520 5711808 +1629808 5706208 1631200 5714128 1631424 5714280 1629904 5706120 +1631024 5714112 1631200 5714128 1628560 5711888 1628608 5711984 +1631200 5714128 1628520 5711808 1628560 5711888 1628608 5711984 +1631424 5714280 1629984 5706008 1629904 5706120 1631200 5714128 +1629808 5706208 1631200 5714128 1629904 5706120 1629824 5706192 +1631024 5714112 1631200 5714128 1628608 5711984 1628640 5712072 +1631200 5714128 1628560 5711888 1628608 5711984 1628640 5712072 +1631024 5714112 1631200 5714128 1628640 5712072 1630872 5714136 +1631024 5714112 1631424 5714280 1631200 5714128 1628640 5712072 +1631424 5714280 1631200 5714128 1631024 5714112 1631184 5714344 +1631024 5714112 1630984 5714360 1631184 5714344 1631200 5714128 +1631200 5714128 1628640 5712072 1631024 5714112 1631184 5714344 +1631200 5714128 1629904 5706120 1629808 5706208 1628520 5711808 +1631200 5714128 1631184 5714344 1631424 5714280 1629904 5706120 +1631200 5714128 1631336 5714072 1629904 5706120 1629808 5706208 +1629904 5706120 1631336 5714072 1631424 5714280 1629984 5706008 +1631424 5714280 1630064 5705848 1629984 5706008 1631336 5714072 +1629984 5706008 1629904 5706120 1631336 5714072 1630064 5705848 +1629904 5706120 1629824 5706192 1629808 5706208 1631336 5714072 +1631200 5714128 1631336 5714072 1629808 5706208 1628520 5711808 +1629808 5706208 1628488 5711752 1628520 5711808 1631336 5714072 +1631200 5714128 1631336 5714072 1628520 5711808 1628560 5711888 +1631200 5714128 1631336 5714072 1628560 5711888 1628608 5711984 +1631336 5714072 1628520 5711808 1628560 5711888 1628608 5711984 +1631336 5714072 1629904 5706120 1629808 5706208 1628520 5711808 +1631200 5714128 1631336 5714072 1628608 5711984 1628640 5712072 +1631336 5714072 1628560 5711888 1628608 5711984 1628640 5712072 +1631200 5714128 1631336 5714072 1628640 5712072 1631024 5714112 +1631336 5714072 1628608 5711984 1628640 5712072 1631024 5714112 +1628640 5712072 1630872 5714136 1631024 5714112 1631336 5714072 +1631336 5714072 1629808 5706208 1628520 5711808 1628560 5711888 +1631200 5714128 1631424 5714280 1631336 5714072 1631024 5714112 +1631424 5714280 1631336 5714072 1631200 5714128 1631184 5714344 +1631336 5714072 1629984 5706008 1629904 5706120 1629808 5706208 +1631336 5714072 1631200 5714128 1631424 5714280 1630064 5705848 +1631424 5714280 1630096 5705696 1630064 5705848 1631336 5714072 +1630064 5705848 1629984 5706008 1631336 5714072 1630096 5705696 +1631424 5714280 1630152 5704824 1630096 5705696 1631336 5714072 +1631424 5714280 1630096 5705696 1631336 5714072 1631200 5714128 +1630096 5705696 1631352 5714048 1631424 5714280 1630152 5704824 +1630096 5705696 1631352 5714048 1630152 5704824 1630080 5705344 +1631424 5714280 1631352 5714048 1631336 5714072 1631200 5714128 +1630096 5705696 1631336 5714072 1631352 5714048 1630152 5704824 +1631352 5714048 1631336 5714072 1631424 5714280 1630152 5704824 +1631424 5714280 1743800 5687320 1630152 5704824 1631352 5714048 +1631336 5714072 1631352 5714048 1630096 5705696 1630064 5705848 +1631336 5714072 1631352 5714048 1630064 5705848 1629984 5706008 +1631336 5714072 1631352 5714048 1629984 5706008 1629904 5706120 +1631352 5714048 1630064 5705848 1629984 5706008 1629904 5706120 +1631336 5714072 1631352 5714048 1629904 5706120 1629808 5706208 +1631336 5714072 1631352 5714048 1629808 5706208 1628520 5711808 +1629808 5706208 1628488 5711752 1628520 5711808 1631352 5714048 +1631352 5714048 1629984 5706008 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1631352 5714048 +1631336 5714072 1631352 5714048 1628520 5711808 1628560 5711888 +1631336 5714072 1631352 5714048 1628560 5711888 1628608 5711984 +1631336 5714072 1631352 5714048 1628608 5711984 1628640 5712072 +1631352 5714048 1628560 5711888 1628608 5711984 1628640 5712072 +1631352 5714048 1629808 5706208 1628520 5711808 1628560 5711888 +1631336 5714072 1631352 5714048 1628640 5712072 1631024 5714112 +1631352 5714048 1628608 5711984 1628640 5712072 1631024 5714112 +1628640 5712072 1630872 5714136 1631024 5714112 1631352 5714048 +1631336 5714072 1631352 5714048 1631024 5714112 1631200 5714128 +1631352 5714048 1628640 5712072 1631024 5714112 1631200 5714128 +1631352 5714048 1628520 5711808 1628560 5711888 1628608 5711984 +1631352 5714048 1629904 5706120 1629808 5706208 1628520 5711808 +1631336 5714072 1631424 5714280 1631352 5714048 1631200 5714128 +1631352 5714048 1630152 5704824 1630096 5705696 1630064 5705848 +1631352 5714048 1630096 5705696 1630064 5705848 1629984 5706008 +1630096 5705696 1631344 5713992 1630152 5704824 1630080 5705344 +1630152 5704824 1631344 5713992 1631352 5714048 1631424 5714280 +1631352 5714048 1631344 5713992 1630096 5705696 1630064 5705848 +1631344 5713992 1630064 5705848 1631352 5714048 1631424 5714280 +1631352 5714048 1631336 5714072 1631424 5714280 1631344 5713992 +1631344 5713992 1630152 5704824 1630096 5705696 1630064 5705848 +1630152 5704824 1630096 5705696 1631344 5713992 1631424 5714280 +1630152 5704824 1631344 5713992 1631424 5714280 1743800 5687320 +1631352 5714048 1631344 5713992 1630064 5705848 1629984 5706008 +1631352 5714048 1631344 5713992 1629984 5706008 1629904 5706120 +1631352 5714048 1631344 5713992 1629904 5706120 1629808 5706208 +1631344 5713992 1629984 5706008 1629904 5706120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1631344 5713992 +1631352 5714048 1631344 5713992 1629808 5706208 1628520 5711808 +1629808 5706208 1628488 5711752 1628520 5711808 1631344 5713992 +1631352 5714048 1631344 5713992 1628520 5711808 1628560 5711888 +1631344 5713992 1629904 5706120 1629808 5706208 1628520 5711808 +1631352 5714048 1631344 5713992 1628560 5711888 1628608 5711984 +1631352 5714048 1631344 5713992 1628608 5711984 1628640 5712072 +1631352 5714048 1631344 5713992 1628640 5712072 1631024 5714112 +1631344 5713992 1628608 5711984 1628640 5712072 1631024 5714112 +1631344 5713992 1628520 5711808 1628560 5711888 1628608 5711984 +1631352 5714048 1631344 5713992 1631024 5714112 1631200 5714128 +1631344 5713992 1628640 5712072 1631024 5714112 1631200 5714128 +1628640 5712072 1630872 5714136 1631024 5714112 1631344 5713992 +1628640 5712072 1630872 5714136 1631344 5713992 1628608 5711984 +1631024 5714112 1631200 5714128 1631344 5713992 1630872 5714136 +1628640 5712072 1628632 5712112 1630872 5714136 1631344 5713992 +1631352 5714048 1631344 5713992 1631200 5714128 1631336 5714072 +1631344 5713992 1631024 5714112 1631200 5714128 1631336 5714072 +1631344 5713992 1628560 5711888 1628608 5711984 1628640 5712072 +1631344 5713992 1629808 5706208 1628520 5711808 1628560 5711888 +1631344 5713992 1630096 5705696 1630064 5705848 1629984 5706008 +1631352 5714048 1631424 5714280 1631344 5713992 1631336 5714072 +1631344 5713992 1630064 5705848 1629984 5706008 1629904 5706120 +1628520 5711808 1631312 5713952 1629808 5706208 1628488 5711752 +1629808 5706208 1631312 5713952 1631344 5713992 1629904 5706120 +1631344 5713992 1629984 5706008 1629904 5706120 1631312 5713952 +1629904 5706120 1629808 5706208 1631312 5713952 1629984 5706008 +1629808 5706208 1631312 5713952 1629904 5706120 1629824 5706192 +1631344 5713992 1631312 5713952 1628520 5711808 1628560 5711888 +1631344 5713992 1631312 5713952 1628560 5711888 1628608 5711984 +1631344 5713992 1631312 5713952 1628608 5711984 1628640 5712072 +1631344 5713992 1631312 5713952 1628640 5712072 1630872 5714136 +1631312 5713952 1628560 5711888 1628608 5711984 1628640 5712072 +1631344 5713992 1631312 5713952 1630872 5714136 1631024 5714112 +1631312 5713952 1628640 5712072 1630872 5714136 1631024 5714112 +1631344 5713992 1631312 5713952 1631024 5714112 1631200 5714128 +1631344 5713992 1631312 5713952 1631200 5714128 1631336 5714072 +1631312 5713952 1631024 5714112 1631200 5714128 1631336 5714072 +1631312 5713952 1630872 5714136 1631024 5714112 1631200 5714128 +1628640 5712072 1628632 5712112 1630872 5714136 1631312 5713952 +1631344 5713992 1631312 5713952 1631336 5714072 1631352 5714048 +1631312 5713952 1628608 5711984 1628640 5712072 1630872 5714136 +1631312 5713952 1628520 5711808 1628560 5711888 1628608 5711984 +1631312 5713952 1631336 5714072 1631344 5713992 1629984 5706008 +1631312 5713952 1629808 5706208 1628520 5711808 1628560 5711888 +1629808 5706208 1628520 5711808 1631312 5713952 1629904 5706120 +1631344 5713992 1630064 5705848 1629984 5706008 1631312 5713952 +1629984 5706008 1629904 5706120 1631312 5713952 1630064 5705848 +1631344 5713992 1630096 5705696 1630064 5705848 1631312 5713952 +1631344 5713992 1630064 5705848 1631312 5713952 1631336 5714072 +1631312 5713952 1631216 5713912 1630872 5714136 1631024 5714112 +1631312 5713952 1631216 5713912 1631024 5714112 1631200 5714128 +1631216 5713912 1630872 5714136 1631024 5714112 1631200 5714128 +1631312 5713952 1631216 5713912 1631200 5714128 1631336 5714072 +1630872 5714136 1631216 5713912 1628640 5712072 1628632 5712112 +1630872 5714136 1631216 5713912 1628632 5712112 1628600 5712168 +1628640 5712072 1631216 5713912 1631312 5713952 1628608 5711984 +1631312 5713952 1628560 5711888 1628608 5711984 1631216 5713912 +1628608 5711984 1628640 5712072 1631216 5713912 1628560 5711888 +1631312 5713952 1628520 5711808 1628560 5711888 1631216 5713912 +1628560 5711888 1628608 5711984 1631216 5713912 1628520 5711808 +1631312 5713952 1629808 5706208 1628520 5711808 1631216 5713912 +1629808 5706208 1628488 5711752 1628520 5711808 1631216 5713912 +1628520 5711808 1628560 5711888 1631216 5713912 1629808 5706208 +1631312 5713952 1629808 5706208 1631216 5713912 1631200 5714128 +1631312 5713952 1629904 5706120 1629808 5706208 1631216 5713912 +1631312 5713952 1629984 5706008 1629904 5706120 1631216 5713912 +1629904 5706120 1629824 5706192 1629808 5706208 1631216 5713912 +1629808 5706208 1628520 5711808 1631216 5713912 1629904 5706120 +1631312 5713952 1629904 5706120 1631216 5713912 1631200 5714128 +1631216 5713912 1628632 5712112 1630872 5714136 1631024 5714112 +1631216 5713912 1628608 5711984 1628640 5712072 1628632 5712112 +1630872 5714136 1631144 5713936 1628632 5712112 1628600 5712168 +1628632 5712112 1631144 5713936 1631216 5713912 1628640 5712072 +1631216 5713912 1631144 5713936 1630872 5714136 1631024 5714112 +1631216 5713912 1631144 5713936 1631024 5714112 1631200 5714128 +1631216 5713912 1631144 5713936 1631200 5714128 1631312 5713952 +1631144 5713936 1630872 5714136 1631024 5714112 1631200 5714128 +1631144 5713936 1631200 5714128 1631216 5713912 1628640 5712072 +1631216 5713912 1628608 5711984 1628640 5712072 1631144 5713936 +1631144 5713936 1628632 5712112 1630872 5714136 1631024 5714112 +1628632 5712112 1630872 5714136 1631144 5713936 1628640 5712072 +1630872 5714136 1630808 5713880 1628632 5712112 1628600 5712168 +1630872 5714136 1630808 5713880 1628600 5712168 1628552 5712200 +1630808 5713880 1628632 5712112 1628600 5712168 1628552 5712200 +1631144 5713936 1630808 5713880 1630872 5714136 1631024 5714112 +1631144 5713936 1630808 5713880 1631024 5714112 1631200 5714128 +1631144 5713936 1628632 5712112 1630808 5713880 1631024 5714112 +1628632 5712112 1630808 5713880 1631144 5713936 1628640 5712072 +1631144 5713936 1631216 5713912 1628640 5712072 1630808 5713880 +1631216 5713912 1628608 5711984 1628640 5712072 1630808 5713880 +1630808 5713880 1631024 5714112 1631144 5713936 1631216 5713912 +1628640 5712072 1628632 5712112 1630808 5713880 1631216 5713912 +1630872 5714136 1631024 5714112 1630808 5713880 1628552 5712200 +1630808 5713880 1628640 5712072 1628632 5712112 1628600 5712168 +1630872 5714136 1630808 5713880 1628552 5712200 1627608 5714272 +1630872 5714136 1630808 5713880 1627608 5714272 1630856 5714248 +1627608 5714272 1627616 5714504 1630856 5714248 1630808 5713880 +1628552 5712200 1628512 5712216 1627608 5714272 1630808 5713880 +1630808 5713880 1628600 5712168 1628552 5712200 1627608 5714272 +1630872 5714136 1631024 5714112 1630808 5713880 1630856 5714248 +1630808 5713880 1628552 5712200 1627608 5714272 1630856 5714248 +1627608 5714272 1630760 5713848 1628552 5712200 1628512 5712216 +1628552 5712200 1630760 5713848 1630808 5713880 1628600 5712168 +1630808 5713880 1628632 5712112 1628600 5712168 1630760 5713848 +1628600 5712168 1628552 5712200 1630760 5713848 1628632 5712112 +1630760 5713848 1627608 5714272 1630808 5713880 1628632 5712112 +1630808 5713880 1628640 5712072 1628632 5712112 1630760 5713848 +1628632 5712112 1628600 5712168 1630760 5713848 1628640 5712072 +1630808 5713880 1631216 5713912 1628640 5712072 1630760 5713848 +1630808 5713880 1631144 5713936 1631216 5713912 1630760 5713848 +1631216 5713912 1628608 5711984 1628640 5712072 1630760 5713848 +1631216 5713912 1628560 5711888 1628608 5711984 1630760 5713848 +1631216 5713912 1628608 5711984 1630760 5713848 1630808 5713880 +1630808 5713880 1631216 5713912 1630760 5713848 1627608 5714272 +1628640 5712072 1628632 5712112 1630760 5713848 1628608 5711984 +1628552 5712200 1627608 5714272 1630760 5713848 1628600 5712168 +1630808 5713880 1630760 5713848 1627608 5714272 1630856 5714248 +1630808 5713880 1630760 5713848 1630856 5714248 1630872 5714136 +1627608 5714272 1627616 5714504 1630856 5714248 1630760 5713848 +1627616 5714504 1627640 5714808 1630856 5714248 1630760 5713848 +1630808 5713880 1630760 5713848 1630872 5714136 1631024 5714112 +1630808 5713880 1631216 5713912 1630760 5713848 1630872 5714136 +1630760 5713848 1628552 5712200 1627608 5714272 1627616 5714504 +1630760 5713848 1627616 5714504 1630856 5714248 1630872 5714136 +1628608 5711984 1630768 5713776 1631216 5713912 1628560 5711888 +1631216 5713912 1628520 5711808 1628560 5711888 1630768 5713776 +1628560 5711888 1628608 5711984 1630768 5713776 1628520 5711808 +1631216 5713912 1629808 5706208 1628520 5711808 1630768 5713776 +1630760 5713848 1630768 5713776 1628608 5711984 1628640 5712072 +1631216 5713912 1630768 5713776 1630760 5713848 1630808 5713880 +1631216 5713912 1630768 5713776 1630808 5713880 1631144 5713936 +1630768 5713776 1630760 5713848 1630808 5713880 1631144 5713936 +1630760 5713848 1630768 5713776 1628640 5712072 1628632 5712112 +1630760 5713848 1630768 5713776 1628632 5712112 1628600 5712168 +1630760 5713848 1630768 5713776 1628600 5712168 1628552 5712200 +1630768 5713776 1628632 5712112 1628600 5712168 1628552 5712200 +1630768 5713776 1628608 5711984 1628640 5712072 1628632 5712112 +1630768 5713776 1628640 5712072 1628632 5712112 1628600 5712168 +1630760 5713848 1630808 5713880 1630768 5713776 1628552 5712200 +1630760 5713848 1630768 5713776 1628552 5712200 1627608 5714272 +1628608 5711984 1628640 5712072 1630768 5713776 1628560 5711888 +1630768 5713776 1631144 5713936 1631216 5713912 1628520 5711808 +1628520 5711808 1630920 5713672 1629808 5706208 1628488 5711752 +1629808 5706208 1628464 5711736 1628488 5711752 1630920 5713672 +1631216 5713912 1630920 5713672 1628520 5711808 1630768 5713776 +1628520 5711808 1628560 5711888 1630768 5713776 1630920 5713672 +1628560 5711888 1628608 5711984 1630768 5713776 1630920 5713672 +1628560 5711888 1628608 5711984 1630920 5713672 1628520 5711808 +1630768 5713776 1631216 5713912 1630920 5713672 1628608 5711984 +1629808 5706208 1630920 5713672 1631216 5713912 1629904 5706120 +1629808 5706208 1630920 5713672 1629904 5706120 1629824 5706192 +1631216 5713912 1631312 5713952 1629904 5706120 1630920 5713672 +1631312 5713952 1629984 5706008 1629904 5706120 1630920 5713672 +1629904 5706120 1629808 5706208 1630920 5713672 1631312 5713952 +1628608 5711984 1628640 5712072 1630768 5713776 1630920 5713672 +1628608 5711984 1628640 5712072 1630920 5713672 1628560 5711888 +1630768 5713776 1631216 5713912 1630920 5713672 1628640 5712072 +1628640 5712072 1628632 5712112 1630768 5713776 1630920 5713672 +1630768 5713776 1631216 5713912 1630920 5713672 1628632 5712112 +1628632 5712112 1628600 5712168 1630768 5713776 1630920 5713672 +1628640 5712072 1628632 5712112 1630920 5713672 1628608 5711984 +1628520 5711808 1628560 5711888 1630920 5713672 1628488 5711752 +1631216 5713912 1630920 5713672 1630768 5713776 1631144 5713936 +1630768 5713776 1630808 5713880 1631144 5713936 1630920 5713672 +1630920 5713672 1628632 5712112 1630768 5713776 1630808 5713880 +1630768 5713776 1630760 5713848 1630808 5713880 1630920 5713672 +1631144 5713936 1631216 5713912 1630920 5713672 1630808 5713880 +1630920 5713672 1629904 5706120 1629808 5706208 1628488 5711752 +1631216 5713912 1631312 5713952 1630920 5713672 1631144 5713936 +1629904 5706120 1630936 5713680 1631312 5713952 1629984 5706008 +1630920 5713672 1630936 5713680 1629904 5706120 1629808 5706208 +1631312 5713952 1630936 5713680 1630920 5713672 1631216 5713912 +1631312 5713952 1629904 5706120 1630936 5713680 1631216 5713912 +1630936 5713680 1629904 5706120 1630920 5713672 1631216 5713912 +1630920 5713672 1631144 5713936 1631216 5713912 1630936 5713680 +1631216 5713912 1631312 5713952 1630936 5713680 1631144 5713936 +1630920 5713672 1630808 5713880 1631144 5713936 1630936 5713680 +1630920 5713672 1630768 5713776 1630808 5713880 1630936 5713680 +1630768 5713776 1630760 5713848 1630808 5713880 1630936 5713680 +1630808 5713880 1631144 5713936 1630936 5713680 1630768 5713776 +1630920 5713672 1630768 5713776 1630936 5713680 1629904 5706120 +1631144 5713936 1631216 5713912 1630936 5713680 1630808 5713880 +1631424 5714280 1631312 5713656 1631344 5713992 1631352 5714048 +1631344 5713992 1631312 5713656 1630152 5704824 1630096 5705696 +1631344 5713992 1631424 5714280 1631312 5713656 1630096 5705696 +1630152 5704824 1630080 5705344 1630096 5705696 1631312 5713656 +1631344 5713992 1631312 5713656 1630096 5705696 1630064 5705848 +1631344 5713992 1631424 5714280 1631312 5713656 1630064 5705848 +1631344 5713992 1631312 5713656 1630064 5705848 1631312 5713952 +1631344 5713992 1631424 5714280 1631312 5713656 1631312 5713952 +1631312 5713656 1630096 5705696 1630064 5705848 1631312 5713952 +1631312 5713656 1630152 5704824 1630096 5705696 1630064 5705848 +1631312 5713656 1631424 5714280 1630152 5704824 1630096 5705696 +1630152 5704824 1631312 5713656 1631424 5714280 1743800 5687320 +1631312 5713656 1631344 5713992 1631424 5714280 1743800 5687320 +1630152 5704824 1631312 5713656 1743800 5687320 1630136 5704624 +1630152 5704824 1630096 5705696 1631312 5713656 1743800 5687320 +1631424 5714280 1743888 5687504 1743800 5687320 1631312 5713656 +1630064 5705848 1629984 5706008 1631312 5713952 1631312 5713656 +1629984 5706008 1629904 5706120 1631312 5713952 1631312 5713656 +1629904 5706120 1630936 5713680 1631312 5713952 1631312 5713656 +1630936 5713680 1631216 5713912 1631312 5713952 1631312 5713656 +1630936 5713680 1631216 5713912 1631312 5713656 1629904 5706120 +1629904 5706120 1630936 5713680 1631312 5713656 1629984 5706008 +1631312 5713952 1631344 5713992 1631312 5713656 1631216 5713912 +1630064 5705848 1629984 5706008 1631312 5713656 1630096 5705696 +1630936 5713680 1631144 5713936 1631216 5713912 1631312 5713656 +1629904 5706120 1630920 5713672 1630936 5713680 1631312 5713656 +1630936 5713680 1631216 5713912 1631312 5713656 1630920 5713672 +1629904 5706120 1630920 5713672 1631312 5713656 1629984 5706008 +1629904 5706120 1629808 5706208 1630920 5713672 1631312 5713656 +1629904 5706120 1629808 5706208 1631312 5713656 1629984 5706008 +1629904 5706120 1629824 5706192 1629808 5706208 1631312 5713656 +1629808 5706208 1628488 5711752 1630920 5713672 1631312 5713656 +1629808 5706208 1628464 5711736 1628488 5711752 1631312 5713656 +1628488 5711752 1628520 5711808 1630920 5713672 1631312 5713656 +1629808 5706208 1628488 5711752 1631312 5713656 1629904 5706120 +1628520 5711808 1628560 5711888 1630920 5713672 1631312 5713656 +1628520 5711808 1628560 5711888 1631312 5713656 1628488 5711752 +1628560 5711888 1628608 5711984 1630920 5713672 1631312 5713656 +1628608 5711984 1628640 5712072 1630920 5713672 1631312 5713656 +1628560 5711888 1628608 5711984 1631312 5713656 1628520 5711808 +1628488 5711752 1628520 5711808 1631312 5713656 1629808 5706208 +1630920 5713672 1630936 5713680 1631312 5713656 1628608 5711984 +1629984 5706008 1629904 5706120 1631312 5713656 1630064 5705848 +1631424 5714280 1631440 5713680 1631312 5713656 1631344 5713992 +1631440 5713680 1743800 5687320 1631312 5713656 1631344 5713992 +1631312 5713656 1631312 5713952 1631344 5713992 1631440 5713680 +1631344 5713992 1631424 5714280 1631440 5713680 1631312 5713952 +1631312 5713656 1631312 5713952 1631440 5713680 1743800 5687320 +1631424 5714280 1743800 5687320 1631440 5713680 1631344 5713992 +1631424 5714280 1631440 5713680 1631344 5713992 1631352 5714048 +1631440 5713680 1631312 5713952 1631344 5713992 1631352 5714048 +1631424 5714280 1743800 5687320 1631440 5713680 1631352 5714048 +1631312 5713656 1631216 5713912 1631312 5713952 1631440 5713680 +1631424 5714280 1631440 5713680 1631352 5714048 1631336 5714072 +1631312 5713656 1631440 5713680 1743800 5687320 1630152 5704824 +1631312 5713656 1631312 5713952 1631440 5713680 1630152 5704824 +1631440 5713680 1631424 5714280 1743800 5687320 1630152 5704824 +1743800 5687320 1630136 5704624 1630152 5704824 1631440 5713680 +1631312 5713656 1631440 5713680 1630152 5704824 1630096 5705696 +1631312 5713656 1631312 5713952 1631440 5713680 1630096 5705696 +1630152 5704824 1630080 5705344 1630096 5705696 1631440 5713680 +1631312 5713656 1631440 5713680 1630096 5705696 1630064 5705848 +1631312 5713656 1631312 5713952 1631440 5713680 1630064 5705848 +1631312 5713656 1631440 5713680 1630064 5705848 1629984 5706008 +1631312 5713656 1631312 5713952 1631440 5713680 1629984 5706008 +1631440 5713680 1630096 5705696 1630064 5705848 1629984 5706008 +1631440 5713680 1630152 5704824 1630096 5705696 1630064 5705848 +1631440 5713680 1743800 5687320 1630152 5704824 1630096 5705696 +1743800 5687320 1631440 5713680 1631424 5714280 1743888 5687504 +1743800 5687320 1630152 5704824 1631440 5713680 1743888 5687504 +1631440 5713680 1631352 5714048 1631424 5714280 1743888 5687504 +1631424 5714280 1632696 5739008 1743888 5687504 1631440 5713680 +1631312 5713656 1631440 5713680 1629984 5706008 1629904 5706120 +1631312 5713656 1631312 5713952 1631440 5713680 1629904 5706120 +1631312 5713656 1631440 5713680 1629904 5706120 1629808 5706208 +1631312 5713656 1631312 5713952 1631440 5713680 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1631440 5713680 +1631440 5713680 1630064 5705848 1629984 5706008 1629904 5706120 +1631312 5713656 1631440 5713680 1629808 5706208 1628488 5711752 +1631440 5713680 1629984 5706008 1629904 5706120 1629808 5706208 +1631424 5714280 1631536 5713760 1631440 5713680 1631352 5714048 +1631536 5713760 1743888 5687504 1631440 5713680 1631352 5714048 +1631424 5714280 1743888 5687504 1631536 5713760 1631352 5714048 +1631440 5713680 1631344 5713992 1631352 5714048 1631536 5713760 +1631440 5713680 1631312 5713952 1631344 5713992 1631536 5713760 +1631440 5713680 1631312 5713656 1631312 5713952 1631536 5713760 +1631440 5713680 1631312 5713952 1631536 5713760 1743888 5687504 +1631352 5714048 1631424 5714280 1631536 5713760 1631344 5713992 +1631344 5713992 1631352 5714048 1631536 5713760 1631312 5713952 +1743888 5687504 1631536 5713760 1631424 5714280 1632696 5739008 +1631424 5714280 1631224 5733936 1632696 5739008 1631536 5713760 +1743888 5687504 1631440 5713680 1631536 5713760 1632696 5739008 +1631536 5713760 1631352 5714048 1631424 5714280 1632696 5739008 +1743888 5687504 1631536 5713760 1632696 5739008 1751256 5699792 +1631424 5714280 1631536 5713760 1631352 5714048 1631336 5714072 +1631440 5713680 1631536 5713760 1743888 5687504 1743800 5687320 +1631440 5713680 1631536 5713760 1743800 5687320 1630152 5704824 +1631440 5713680 1631312 5713952 1631536 5713760 1630152 5704824 +1631536 5713760 1632696 5739008 1743888 5687504 1743800 5687320 +1743800 5687320 1630136 5704624 1630152 5704824 1631536 5713760 +1631440 5713680 1631536 5713760 1630152 5704824 1630096 5705696 +1631536 5713760 1743800 5687320 1630152 5704824 1630096 5705696 +1631440 5713680 1631312 5713952 1631536 5713760 1630096 5705696 +1630152 5704824 1630080 5705344 1630096 5705696 1631536 5713760 +1631440 5713680 1631536 5713760 1630096 5705696 1630064 5705848 +1631440 5713680 1631312 5713952 1631536 5713760 1630064 5705848 +1631440 5713680 1631536 5713760 1630064 5705848 1629984 5706008 +1631440 5713680 1631312 5713952 1631536 5713760 1629984 5706008 +1631440 5713680 1631536 5713760 1629984 5706008 1629904 5706120 +1631536 5713760 1630096 5705696 1630064 5705848 1629984 5706008 +1631536 5713760 1630152 5704824 1630096 5705696 1630064 5705848 +1631536 5713760 1743888 5687504 1743800 5687320 1630152 5704824 +1631536 5713760 1631608 5713856 1743888 5687504 1743800 5687320 +1631536 5713760 1632696 5739008 1631608 5713856 1743800 5687320 +1631608 5713856 1632696 5739008 1743888 5687504 1743800 5687320 +1743888 5687504 1631608 5713856 1632696 5739008 1751256 5699792 +1632696 5739008 1631608 5713856 1631536 5713760 1631424 5714280 +1632696 5739008 1631608 5713856 1631424 5714280 1631224 5733936 +1631424 5714280 1629944 5726576 1631224 5733936 1631608 5713856 +1631224 5733936 1632696 5739008 1631608 5713856 1629944 5726576 +1629944 5726576 1629944 5726624 1631224 5733936 1631608 5713856 +1632696 5739008 1631608 5713856 1631224 5733936 1631240 5734008 +1631608 5713856 1743800 5687320 1631536 5713760 1631424 5714280 +1631536 5713760 1631352 5714048 1631424 5714280 1631608 5713856 +1631536 5713760 1631344 5713992 1631352 5714048 1631608 5713856 +1631536 5713760 1631344 5713992 1631608 5713856 1743800 5687320 +1631352 5714048 1631424 5714280 1631608 5713856 1631344 5713992 +1632696 5739008 1743888 5687504 1631608 5713856 1631224 5733936 +1631536 5713760 1631312 5713952 1631344 5713992 1631608 5713856 +1631608 5713856 1631352 5714048 1631424 5714280 1629944 5726576 +1631424 5714280 1629736 5726176 1629944 5726576 1631608 5713856 +1631352 5714048 1631336 5714072 1631424 5714280 1631608 5713856 +1631536 5713760 1631608 5713856 1743800 5687320 1630152 5704824 +1631536 5713760 1631608 5713856 1630152 5704824 1630096 5705696 +1631608 5713856 1743888 5687504 1743800 5687320 1630152 5704824 +1631536 5713760 1631344 5713992 1631608 5713856 1630096 5705696 +1743800 5687320 1630136 5704624 1630152 5704824 1631608 5713856 +1630152 5704824 1630080 5705344 1630096 5705696 1631608 5713856 +1631536 5713760 1631608 5713856 1630096 5705696 1630064 5705848 +1631608 5713856 1630152 5704824 1630096 5705696 1630064 5705848 +1631536 5713760 1631344 5713992 1631608 5713856 1630064 5705848 +1631536 5713760 1631608 5713856 1630064 5705848 1629984 5706008 +1631608 5713856 1743800 5687320 1630152 5704824 1630096 5705696 +1631608 5713856 1631688 5714048 1743888 5687504 1743800 5687320 +1631608 5713856 1631688 5714048 1743800 5687320 1630152 5704824 +1631688 5714048 1743888 5687504 1743800 5687320 1630152 5704824 +1631608 5713856 1632696 5739008 1631688 5714048 1630152 5704824 +1632696 5739008 1631688 5714048 1631608 5713856 1631224 5733936 +1631608 5713856 1629944 5726576 1631224 5733936 1631688 5714048 +1629944 5726576 1629944 5726624 1631224 5733936 1631688 5714048 +1631608 5713856 1631424 5714280 1629944 5726576 1631688 5714048 +1629944 5726576 1631224 5733936 1631688 5714048 1631424 5714280 +1632696 5739008 1631688 5714048 1631224 5733936 1631240 5734008 +1631688 5714048 1630152 5704824 1631608 5713856 1631424 5714280 +1631224 5733936 1632696 5739008 1631688 5714048 1629944 5726576 +1631688 5714048 1632696 5739008 1743888 5687504 1743800 5687320 +1632696 5739008 1743888 5687504 1631688 5714048 1631224 5733936 +1743888 5687504 1631688 5714048 1632696 5739008 1751256 5699792 +1743800 5687320 1630136 5704624 1630152 5704824 1631688 5714048 +1630152 5704824 1631608 5713856 1631688 5714048 1630136 5704624 +1743800 5687320 1630136 5704624 1631688 5714048 1743888 5687504 +1743800 5687320 1663944 5646256 1630136 5704624 1631688 5714048 +1630136 5704624 1630128 5704656 1630152 5704824 1631688 5714048 +1631608 5713856 1631352 5714048 1631424 5714280 1631688 5714048 +1631424 5714280 1629944 5726576 1631688 5714048 1631352 5714048 +1631608 5713856 1631344 5713992 1631352 5714048 1631688 5714048 +1631608 5713856 1631352 5714048 1631688 5714048 1630152 5704824 +1631424 5714280 1629736 5726176 1629944 5726576 1631688 5714048 +1629944 5726576 1631224 5733936 1631688 5714048 1629736 5726176 +1629736 5726176 1629904 5726504 1629944 5726576 1631688 5714048 +1631424 5714280 1629736 5726176 1631688 5714048 1631352 5714048 +1631424 5714280 1629624 5725984 1629736 5726176 1631688 5714048 +1631424 5714280 1629624 5725984 1631688 5714048 1631352 5714048 +1631424 5714280 1629600 5725952 1629624 5725984 1631688 5714048 +1629736 5726176 1629944 5726576 1631688 5714048 1629624 5725984 +1631352 5714048 1631336 5714072 1631424 5714280 1631688 5714048 +1631608 5713856 1631688 5714048 1630152 5704824 1630096 5705696 +1631688 5714048 1631680 5714104 1629944 5726576 1631224 5733936 +1629944 5726576 1631680 5714104 1629736 5726176 1629904 5726504 +1629944 5726576 1629944 5726624 1631224 5733936 1631680 5714104 +1631688 5714048 1631680 5714104 1631224 5733936 1632696 5739008 +1631680 5714104 1629944 5726576 1631224 5733936 1632696 5739008 +1631224 5733936 1631240 5734008 1632696 5739008 1631680 5714104 +1631688 5714048 1629736 5726176 1631680 5714104 1632696 5739008 +1631688 5714048 1631680 5714104 1632696 5739008 1743888 5687504 +1631680 5714104 1631224 5733936 1632696 5739008 1743888 5687504 +1631688 5714048 1631680 5714104 1743888 5687504 1743800 5687320 +1631688 5714048 1629736 5726176 1631680 5714104 1743888 5687504 +1631680 5714104 1629736 5726176 1629944 5726576 1631224 5733936 +1632696 5739008 1751256 5699792 1743888 5687504 1631680 5714104 +1629736 5726176 1631680 5714104 1631688 5714048 1629624 5725984 +1631680 5714104 1743888 5687504 1631688 5714048 1629624 5725984 +1629736 5726176 1629944 5726576 1631680 5714104 1629624 5725984 +1631688 5714048 1631424 5714280 1629624 5725984 1631680 5714104 +1631688 5714048 1631352 5714048 1631424 5714280 1631680 5714104 +1631688 5714048 1631352 5714048 1631680 5714104 1743888 5687504 +1631424 5714280 1629600 5725952 1629624 5725984 1631680 5714104 +1631424 5714280 1629624 5725984 1631680 5714104 1631352 5714048 +1631688 5714048 1631608 5713856 1631352 5714048 1631680 5714104 +1629624 5725984 1629736 5726176 1631680 5714104 1631424 5714280 +1631352 5714048 1631336 5714072 1631424 5714280 1631680 5714104 +1629624 5725984 1631632 5714160 1631424 5714280 1629600 5725952 +1629624 5725984 1631680 5714104 1631632 5714160 1629600 5725952 +1631632 5714160 1631680 5714104 1631424 5714280 1629600 5725952 +1631424 5714280 1631632 5714160 1631680 5714104 1631352 5714048 +1631680 5714104 1631688 5714048 1631352 5714048 1631632 5714160 +1631632 5714160 1629624 5725984 1631680 5714104 1631688 5714048 +1631424 5714280 1629600 5725952 1631632 5714160 1631352 5714048 +1631352 5714048 1631424 5714280 1631632 5714160 1631688 5714048 +1631424 5714280 1629568 5725912 1629600 5725952 1631632 5714160 +1631424 5714280 1627448 5719840 1629568 5725912 1631632 5714160 +1631424 5714280 1629568 5725912 1631632 5714160 1631352 5714048 +1629600 5725952 1629624 5725984 1631632 5714160 1629568 5725912 +1631688 5714048 1631608 5713856 1631352 5714048 1631632 5714160 +1631680 5714104 1631632 5714160 1629624 5725984 1629736 5726176 +1631680 5714104 1631688 5714048 1631632 5714160 1629736 5726176 +1631680 5714104 1631632 5714160 1629736 5726176 1629944 5726576 +1629736 5726176 1629904 5726504 1629944 5726576 1631632 5714160 +1631680 5714104 1631632 5714160 1629944 5726576 1631224 5733936 +1631680 5714104 1631688 5714048 1631632 5714160 1629944 5726576 +1631632 5714160 1629600 5725952 1629624 5725984 1629736 5726176 +1631632 5714160 1629624 5725984 1629736 5726176 1629944 5726576 +1631424 5714280 1631632 5714160 1631352 5714048 1631336 5714072 +1631608 5713856 1631480 5713088 1630096 5705696 1630064 5705848 +1631480 5713088 1630152 5704824 1630096 5705696 1630064 5705848 +1631608 5713856 1630152 5704824 1631480 5713088 1630064 5705848 +1630096 5705696 1631480 5713088 1630152 5704824 1630080 5705344 +1631608 5713856 1631480 5713088 1630064 5705848 1631536 5713760 +1631480 5713088 1630096 5705696 1630064 5705848 1631536 5713760 +1631608 5713856 1630152 5704824 1631480 5713088 1631536 5713760 +1630064 5705848 1629984 5706008 1631536 5713760 1631480 5713088 +1630064 5705848 1629984 5706008 1631480 5713088 1630096 5705696 +1629984 5706008 1631440 5713680 1631536 5713760 1631480 5713088 +1629984 5706008 1629904 5706120 1631440 5713680 1631480 5713088 +1631440 5713680 1631536 5713760 1631480 5713088 1629904 5706120 +1629984 5706008 1629904 5706120 1631480 5713088 1630064 5705848 +1631536 5713760 1631608 5713856 1631480 5713088 1631440 5713680 +1630152 5704824 1631480 5713088 1631608 5713856 1631688 5714048 +1630152 5704824 1631480 5713088 1631688 5714048 1630136 5704624 +1630152 5704824 1630096 5705696 1631480 5713088 1630136 5704624 +1631480 5713088 1631536 5713760 1631608 5713856 1631688 5714048 +1631688 5714048 1743800 5687320 1630136 5704624 1631480 5713088 +1630136 5704624 1630152 5704824 1631480 5713088 1743800 5687320 +1631688 5714048 1743888 5687504 1743800 5687320 1631480 5713088 +1743800 5687320 1663944 5646256 1630136 5704624 1631480 5713088 +1630152 5704824 1631480 5713088 1630136 5704624 1630128 5704656 +1631480 5713088 1631608 5713856 1631688 5714048 1743800 5687320 +1629904 5706120 1629808 5706208 1631440 5713680 1631480 5713088 +1629808 5706208 1631312 5713656 1631440 5713680 1631480 5713088 +1629904 5706120 1629824 5706192 1629808 5706208 1631480 5713088 +1629904 5706120 1629808 5706208 1631480 5713088 1629984 5706008 +1631440 5713680 1631536 5713760 1631480 5713088 1631312 5713656 +1629808 5706208 1628488 5711752 1631312 5713656 1631480 5713088 +1629808 5706208 1628464 5711736 1628488 5711752 1631480 5713088 +1631312 5713656 1631440 5713680 1631480 5713088 1628488 5711752 +1628488 5711752 1628520 5711808 1631312 5713656 1631480 5713088 +1628520 5711808 1628560 5711888 1631312 5713656 1631480 5713088 +1631312 5713656 1631440 5713680 1631480 5713088 1628560 5711888 +1628488 5711752 1628520 5711808 1631480 5713088 1629808 5706208 +1628560 5711888 1628608 5711984 1631312 5713656 1631480 5713088 +1628560 5711888 1628608 5711984 1631480 5713088 1628520 5711808 +1628608 5711984 1630920 5713672 1631312 5713656 1631480 5713088 +1631312 5713656 1631440 5713680 1631480 5713088 1630920 5713672 +1628608 5711984 1628640 5712072 1630920 5713672 1631480 5713088 +1630920 5713672 1631312 5713656 1631480 5713088 1628640 5712072 +1628640 5712072 1628632 5712112 1630920 5713672 1631480 5713088 +1628608 5711984 1628640 5712072 1631480 5713088 1628560 5711888 +1628520 5711808 1628560 5711888 1631480 5713088 1628488 5711752 +1630920 5713672 1630936 5713680 1631312 5713656 1631480 5713088 +1629808 5706208 1628488 5711752 1631480 5713088 1629904 5706120 +1743800 5687320 1631608 5713120 1631688 5714048 1743888 5687504 +1631480 5713088 1631608 5713120 1743800 5687320 1630136 5704624 +1631480 5713088 1631608 5713120 1630136 5704624 1630152 5704824 +1631480 5713088 1631608 5713120 1630152 5704824 1630096 5705696 +1631608 5713120 1630136 5704624 1630152 5704824 1630096 5705696 +1631480 5713088 1631608 5713120 1630096 5705696 1630064 5705848 +1631480 5713088 1631608 5713120 1630064 5705848 1629984 5706008 +1631608 5713120 1630096 5705696 1630064 5705848 1629984 5706008 +1631608 5713120 1630152 5704824 1630096 5705696 1630064 5705848 +1631480 5713088 1631688 5714048 1631608 5713120 1629984 5706008 +1631608 5713120 1631688 5714048 1743800 5687320 1630136 5704624 +1743800 5687320 1663944 5646256 1630136 5704624 1631608 5713120 +1631608 5713120 1743800 5687320 1630136 5704624 1630152 5704824 +1630136 5704624 1630128 5704656 1630152 5704824 1631608 5713120 +1630152 5704824 1630080 5705344 1630096 5705696 1631608 5713120 +1631480 5713088 1631608 5713120 1629984 5706008 1629904 5706120 +1631608 5713120 1630064 5705848 1629984 5706008 1629904 5706120 +1631480 5713088 1631688 5714048 1631608 5713120 1629904 5706120 +1631480 5713088 1631608 5713120 1629904 5706120 1629808 5706208 +1631480 5713088 1631688 5714048 1631608 5713120 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1631608 5713120 +1631608 5713120 1629984 5706008 1629904 5706120 1629808 5706208 +1631688 5714048 1631608 5713120 1631480 5713088 1631608 5713856 +1631608 5713120 1629808 5706208 1631480 5713088 1631608 5713856 +1631480 5713088 1631536 5713760 1631608 5713856 1631608 5713120 +1631480 5713088 1631536 5713760 1631608 5713120 1629808 5706208 +1631688 5714048 1743800 5687320 1631608 5713120 1631608 5713856 +1631480 5713088 1631440 5713680 1631536 5713760 1631608 5713120 +1631480 5713088 1631440 5713680 1631608 5713120 1629808 5706208 +1631536 5713760 1631608 5713856 1631608 5713120 1631440 5713680 +1631480 5713088 1631312 5713656 1631440 5713680 1631608 5713120 +1631608 5713856 1631688 5714048 1631608 5713120 1631536 5713760 +1631480 5713088 1631608 5713120 1629808 5706208 1628488 5711752 +1743800 5687320 1631632 5713112 1631608 5713120 1631688 5714048 +1743800 5687320 1631632 5713112 1631688 5714048 1743888 5687504 +1631632 5713112 1630136 5704624 1631608 5713120 1631688 5714048 +1631608 5713120 1631608 5713856 1631688 5714048 1631632 5713112 +1631688 5714048 1743800 5687320 1631632 5713112 1631608 5713856 +1631608 5713120 1631608 5713856 1631632 5713112 1630136 5704624 +1743800 5687320 1630136 5704624 1631632 5713112 1631688 5714048 +1630136 5704624 1631632 5713112 1743800 5687320 1663944 5646256 +1631608 5713120 1631632 5713112 1630136 5704624 1630152 5704824 +1631608 5713120 1631632 5713112 1630152 5704824 1630096 5705696 +1631608 5713120 1631632 5713112 1630096 5705696 1630064 5705848 +1631632 5713112 1630152 5704824 1630096 5705696 1630064 5705848 +1631608 5713120 1631632 5713112 1630064 5705848 1629984 5706008 +1631608 5713120 1631632 5713112 1629984 5706008 1629904 5706120 +1631632 5713112 1630064 5705848 1629984 5706008 1629904 5706120 +1631632 5713112 1630096 5705696 1630064 5705848 1629984 5706008 +1631608 5713120 1631608 5713856 1631632 5713112 1629904 5706120 +1631632 5713112 1743800 5687320 1630136 5704624 1630152 5704824 +1631632 5713112 1630136 5704624 1630152 5704824 1630096 5705696 +1630136 5704624 1630128 5704656 1630152 5704824 1631632 5713112 +1630152 5704824 1630080 5705344 1630096 5705696 1631632 5713112 +1631608 5713120 1631632 5713112 1629904 5706120 1629808 5706208 +1631632 5713112 1629984 5706008 1629904 5706120 1629808 5706208 +1631608 5713120 1631608 5713856 1631632 5713112 1629808 5706208 +1629904 5706120 1629824 5706192 1629808 5706208 1631632 5713112 +1631608 5713120 1631632 5713112 1629808 5706208 1631480 5713088 +1631608 5713120 1631608 5713856 1631632 5713112 1631480 5713088 +1631632 5713112 1629904 5706120 1629808 5706208 1631480 5713088 +1631608 5713120 1631536 5713760 1631608 5713856 1631632 5713112 +1631608 5713120 1631440 5713680 1631536 5713760 1631632 5713112 +1631608 5713120 1631536 5713760 1631632 5713112 1631480 5713088 +1631608 5713856 1631688 5714048 1631632 5713112 1631536 5713760 +1629808 5706208 1628488 5711752 1631480 5713088 1631632 5713112 +1743800 5687320 1631744 5713152 1631688 5714048 1743888 5687504 +1631688 5714048 1631680 5714104 1743888 5687504 1631744 5713152 +1631688 5714048 1631744 5713152 1631632 5713112 1631608 5713856 +1631632 5713112 1631536 5713760 1631608 5713856 1631744 5713152 +1631608 5713856 1631688 5714048 1631744 5713152 1631536 5713760 +1631744 5713152 1743800 5687320 1631632 5713112 1631536 5713760 +1631632 5713112 1631744 5713152 1743800 5687320 1630136 5704624 +1631632 5713112 1631744 5713152 1630136 5704624 1630152 5704824 +1631632 5713112 1631536 5713760 1631744 5713152 1630152 5704824 +1631744 5713152 1743800 5687320 1630136 5704624 1630152 5704824 +1743800 5687320 1630136 5704624 1631744 5713152 1743888 5687504 +1631744 5713152 1631608 5713856 1631688 5714048 1743888 5687504 +1743800 5687320 1663944 5646256 1630136 5704624 1631744 5713152 +1663944 5646256 1628712 5701448 1630136 5704624 1631744 5713152 +1743800 5687320 1664040 5646192 1663944 5646256 1631744 5713152 +1630136 5704624 1630152 5704824 1631744 5713152 1663944 5646256 +1743800 5687320 1663944 5646256 1631744 5713152 1743888 5687504 +1631632 5713112 1631744 5713152 1630152 5704824 1630096 5705696 +1631632 5713112 1631744 5713152 1630096 5705696 1630064 5705848 +1631632 5713112 1631744 5713152 1630064 5705848 1629984 5706008 +1631744 5713152 1630096 5705696 1630064 5705848 1629984 5706008 +1631632 5713112 1631744 5713152 1629984 5706008 1629904 5706120 +1631632 5713112 1631744 5713152 1629904 5706120 1629808 5706208 +1631744 5713152 1630064 5705848 1629984 5706008 1629904 5706120 +1631744 5713152 1630136 5704624 1630152 5704824 1630096 5705696 +1631632 5713112 1631536 5713760 1631744 5713152 1629904 5706120 +1631744 5713152 1630152 5704824 1630096 5705696 1630064 5705848 +1630136 5704624 1630128 5704656 1630152 5704824 1631744 5713152 +1630152 5704824 1630080 5705344 1630096 5705696 1631744 5713152 +1631632 5713112 1631608 5713120 1631536 5713760 1631744 5713152 +1631608 5713120 1631440 5713680 1631536 5713760 1631744 5713152 +1631536 5713760 1631608 5713856 1631744 5713152 1631440 5713680 +1631632 5713112 1631608 5713120 1631744 5713152 1629904 5706120 +1631608 5713120 1631480 5713088 1631440 5713680 1631744 5713152 +1631608 5713120 1631440 5713680 1631744 5713152 1631632 5713112 +1631744 5713152 1631808 5713216 1743888 5687504 1743800 5687320 +1743888 5687504 1631808 5713216 1631688 5714048 1631680 5714104 +1631744 5713152 1631808 5713216 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1631808 5713216 +1631808 5713216 1743888 5687504 1743800 5687320 1663944 5646256 +1631744 5713152 1631688 5714048 1631808 5713216 1663944 5646256 +1631688 5714048 1631808 5713216 1631744 5713152 1631608 5713856 +1631744 5713152 1631536 5713760 1631608 5713856 1631808 5713216 +1631744 5713152 1631440 5713680 1631536 5713760 1631808 5713216 +1631744 5713152 1631608 5713120 1631440 5713680 1631808 5713216 +1631536 5713760 1631608 5713856 1631808 5713216 1631440 5713680 +1631440 5713680 1631536 5713760 1631808 5713216 1631608 5713120 +1631808 5713216 1663944 5646256 1631744 5713152 1631608 5713120 +1631608 5713856 1631688 5714048 1631808 5713216 1631536 5713760 +1631808 5713216 1631688 5714048 1743888 5687504 1743800 5687320 +1631688 5714048 1743888 5687504 1631808 5713216 1631608 5713856 +1631744 5713152 1631808 5713216 1663944 5646256 1630136 5704624 +1663944 5646256 1628712 5701448 1630136 5704624 1631808 5713216 +1631744 5713152 1631808 5713216 1630136 5704624 1630152 5704824 +1631744 5713152 1631808 5713216 1630152 5704824 1630096 5705696 +1631808 5713216 1630136 5704624 1630152 5704824 1630096 5705696 +1631808 5713216 1743800 5687320 1663944 5646256 1630136 5704624 +1631744 5713152 1631608 5713120 1631808 5713216 1630096 5705696 +1631808 5713216 1663944 5646256 1630136 5704624 1630152 5704824 +1631744 5713152 1631808 5713216 1630096 5705696 1630064 5705848 +1631744 5713152 1631808 5713216 1630064 5705848 1629984 5706008 +1631808 5713216 1630152 5704824 1630096 5705696 1630064 5705848 +1631744 5713152 1631608 5713120 1631808 5713216 1630064 5705848 +1630136 5704624 1630128 5704656 1630152 5704824 1631808 5713216 +1630152 5704824 1630080 5705344 1630096 5705696 1631808 5713216 +1631608 5713120 1631480 5713088 1631440 5713680 1631808 5713216 +1631744 5713152 1631632 5713112 1631608 5713120 1631808 5713216 +1743888 5687504 1631888 5713320 1631688 5714048 1631680 5714104 +1743888 5687504 1631888 5713320 1631680 5714104 1632696 5739008 +1631680 5714104 1631224 5733936 1632696 5739008 1631888 5713320 +1631888 5713320 1631688 5714048 1631680 5714104 1632696 5739008 +1631808 5713216 1631888 5713320 1743888 5687504 1743800 5687320 +1631808 5713216 1631888 5713320 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1631888 5713320 +1631808 5713216 1631888 5713320 1663944 5646256 1630136 5704624 +1663944 5646256 1628712 5701448 1630136 5704624 1631888 5713320 +1631888 5713320 1743800 5687320 1663944 5646256 1630136 5704624 +1631888 5713320 1743888 5687504 1743800 5687320 1663944 5646256 +1631808 5713216 1631688 5714048 1631888 5713320 1630136 5704624 +1631688 5714048 1631888 5713320 1631808 5713216 1631608 5713856 +1631808 5713216 1631536 5713760 1631608 5713856 1631888 5713320 +1631808 5713216 1631440 5713680 1631536 5713760 1631888 5713320 +1631808 5713216 1631608 5713120 1631440 5713680 1631888 5713320 +1631536 5713760 1631608 5713856 1631888 5713320 1631440 5713680 +1631888 5713320 1630136 5704624 1631808 5713216 1631440 5713680 +1631608 5713856 1631688 5714048 1631888 5713320 1631536 5713760 +1743888 5687504 1743800 5687320 1631888 5713320 1632696 5739008 +1631888 5713320 1631608 5713856 1631688 5714048 1631680 5714104 +1743888 5687504 1631888 5713320 1632696 5739008 1751256 5699792 +1631808 5713216 1631888 5713320 1630136 5704624 1630152 5704824 +1631808 5713216 1631888 5713320 1630152 5704824 1630096 5705696 +1631808 5713216 1631888 5713320 1630096 5705696 1630064 5705848 +1631888 5713320 1663944 5646256 1630136 5704624 1630152 5704824 +1631808 5713216 1631440 5713680 1631888 5713320 1630096 5705696 +1631888 5713320 1630136 5704624 1630152 5704824 1630096 5705696 +1630136 5704624 1630128 5704656 1630152 5704824 1631888 5713320 +1630152 5704824 1630080 5705344 1630096 5705696 1631888 5713320 +1632696 5739008 1631912 5713400 1631888 5713320 1631680 5714104 +1632696 5739008 1631912 5713400 1631680 5714104 1631224 5733936 +1631680 5714104 1629944 5726576 1631224 5733936 1631912 5713400 +1632696 5739008 1631912 5713400 1631224 5733936 1631240 5734008 +1631888 5713320 1631688 5714048 1631680 5714104 1631912 5713400 +1631912 5713400 1631688 5714048 1631680 5714104 1631224 5733936 +1631888 5713320 1631912 5713400 1743888 5687504 1743800 5687320 +1631888 5713320 1631912 5713400 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1631912 5713400 +1631888 5713320 1631912 5713400 1663944 5646256 1630136 5704624 +1663944 5646256 1628712 5701448 1630136 5704624 1631912 5713400 +1631888 5713320 1631912 5713400 1630136 5704624 1630152 5704824 +1631912 5713400 1743800 5687320 1663944 5646256 1630136 5704624 +1631912 5713400 1743888 5687504 1743800 5687320 1663944 5646256 +1631912 5713400 1630136 5704624 1631888 5713320 1631688 5714048 +1631888 5713320 1631608 5713856 1631688 5714048 1631912 5713400 +1631688 5714048 1631680 5714104 1631912 5713400 1631608 5713856 +1631888 5713320 1631536 5713760 1631608 5713856 1631912 5713400 +1631888 5713320 1631440 5713680 1631536 5713760 1631912 5713400 +1631888 5713320 1631808 5713216 1631440 5713680 1631912 5713400 +1631536 5713760 1631608 5713856 1631912 5713400 1631440 5713680 +1631888 5713320 1631440 5713680 1631912 5713400 1630136 5704624 +1631608 5713856 1631688 5714048 1631912 5713400 1631536 5713760 +1631912 5713400 1632696 5739008 1743888 5687504 1743800 5687320 +1632696 5739008 1743888 5687504 1631912 5713400 1631224 5733936 +1743888 5687504 1631912 5713400 1632696 5739008 1751256 5699792 +1631224 5733936 1631904 5713440 1631680 5714104 1629944 5726576 +1631912 5713400 1631904 5713440 1631224 5733936 1632696 5739008 +1631224 5733936 1631240 5734008 1632696 5739008 1631904 5713440 +1631680 5714104 1631904 5713440 1631912 5713400 1631688 5714048 +1631912 5713400 1631608 5713856 1631688 5714048 1631904 5713440 +1631688 5714048 1631680 5714104 1631904 5713440 1631608 5713856 +1631912 5713400 1631536 5713760 1631608 5713856 1631904 5713440 +1631608 5713856 1631688 5714048 1631904 5713440 1631536 5713760 +1631912 5713400 1631440 5713680 1631536 5713760 1631904 5713440 +1631912 5713400 1631888 5713320 1631440 5713680 1631904 5713440 +1631888 5713320 1631808 5713216 1631440 5713680 1631904 5713440 +1631808 5713216 1631608 5713120 1631440 5713680 1631904 5713440 +1631888 5713320 1631808 5713216 1631904 5713440 1631912 5713400 +1631440 5713680 1631536 5713760 1631904 5713440 1631808 5713216 +1631536 5713760 1631608 5713856 1631904 5713440 1631440 5713680 +1631912 5713400 1631888 5713320 1631904 5713440 1632696 5739008 +1631912 5713400 1631904 5713440 1632696 5739008 1743888 5687504 +1631904 5713440 1631680 5714104 1631224 5733936 1632696 5739008 +1631680 5714104 1631224 5733936 1631904 5713440 1631688 5714048 +1631440 5713680 1631880 5713456 1631904 5713440 1631808 5713216 +1631904 5713440 1631888 5713320 1631808 5713216 1631880 5713456 +1631440 5713680 1631880 5713456 1631808 5713216 1631608 5713120 +1631808 5713216 1631744 5713152 1631608 5713120 1631880 5713456 +1631904 5713440 1631912 5713400 1631888 5713320 1631880 5713456 +1631888 5713320 1631808 5713216 1631880 5713456 1631912 5713400 +1631808 5713216 1631608 5713120 1631880 5713456 1631888 5713320 +1631904 5713440 1631880 5713456 1631536 5713760 1631608 5713856 +1631904 5713440 1631880 5713456 1631608 5713856 1631688 5714048 +1631904 5713440 1631880 5713456 1631688 5714048 1631680 5714104 +1631880 5713456 1631536 5713760 1631608 5713856 1631688 5714048 +1631880 5713456 1631688 5714048 1631904 5713440 1631912 5713400 +1631880 5713456 1631440 5713680 1631536 5713760 1631608 5713856 +1631440 5713680 1631536 5713760 1631880 5713456 1631608 5713120 +1631440 5713680 1631880 5713456 1631608 5713120 1631480 5713088 +1631880 5713456 1631864 5713480 1631688 5714048 1631904 5713440 +1631688 5714048 1631680 5714104 1631904 5713440 1631864 5713480 +1631608 5713856 1631864 5713480 1631880 5713456 1631536 5713760 +1631880 5713456 1631440 5713680 1631536 5713760 1631864 5713480 +1631536 5713760 1631608 5713856 1631864 5713480 1631440 5713680 +1631880 5713456 1631440 5713680 1631864 5713480 1631904 5713440 +1631880 5713456 1631608 5713120 1631440 5713680 1631864 5713480 +1631880 5713456 1631808 5713216 1631608 5713120 1631864 5713480 +1631808 5713216 1631744 5713152 1631608 5713120 1631864 5713480 +1631880 5713456 1631888 5713320 1631808 5713216 1631864 5713480 +1631880 5713456 1631912 5713400 1631888 5713320 1631864 5713480 +1631808 5713216 1631608 5713120 1631864 5713480 1631888 5713320 +1631440 5713680 1631536 5713760 1631864 5713480 1631608 5713120 +1631880 5713456 1631888 5713320 1631864 5713480 1631904 5713440 +1631608 5713120 1631440 5713680 1631864 5713480 1631808 5713216 +1631864 5713480 1631608 5713856 1631688 5714048 1631904 5713440 +1631608 5713856 1631688 5714048 1631864 5713480 1631536 5713760 +1631608 5713120 1631480 5713088 1631440 5713680 1631864 5713480 +1631864 5713480 1631808 5713504 1631440 5713680 1631536 5713760 +1631864 5713480 1631808 5713504 1631536 5713760 1631608 5713856 +1631808 5713504 1631440 5713680 1631536 5713760 1631608 5713856 +1631608 5713120 1631808 5713504 1631864 5713480 1631808 5713216 +1631608 5713120 1631808 5713504 1631808 5713216 1631744 5713152 +1631864 5713480 1631888 5713320 1631808 5713216 1631808 5713504 +1631864 5713480 1631880 5713456 1631888 5713320 1631808 5713504 +1631880 5713456 1631912 5713400 1631888 5713320 1631808 5713504 +1631888 5713320 1631808 5713216 1631808 5713504 1631880 5713456 +1631808 5713216 1631608 5713120 1631808 5713504 1631888 5713320 +1631864 5713480 1631880 5713456 1631808 5713504 1631608 5713856 +1631864 5713480 1631808 5713504 1631608 5713856 1631688 5714048 +1631808 5713504 1631536 5713760 1631608 5713856 1631688 5714048 +1631864 5713480 1631808 5713504 1631688 5714048 1631904 5713440 +1631864 5713480 1631880 5713456 1631808 5713504 1631688 5714048 +1631808 5713504 1631608 5713120 1631440 5713680 1631536 5713760 +1631608 5713120 1631440 5713680 1631808 5713504 1631808 5713216 +1631440 5713680 1631808 5713504 1631608 5713120 1631480 5713088 +1631808 5713504 1631776 5713528 1631536 5713760 1631608 5713856 +1631808 5713504 1631776 5713528 1631608 5713856 1631688 5714048 +1631776 5713528 1631536 5713760 1631608 5713856 1631688 5714048 +1631808 5713504 1631776 5713528 1631688 5714048 1631864 5713480 +1631776 5713528 1631608 5713856 1631688 5714048 1631864 5713480 +1631688 5714048 1631904 5713440 1631864 5713480 1631776 5713528 +1631440 5713680 1631776 5713528 1631808 5713504 1631608 5713120 +1631808 5713504 1631608 5713120 1631776 5713528 1631864 5713480 +1631808 5713504 1631808 5713216 1631608 5713120 1631776 5713528 +1631808 5713216 1631744 5713152 1631608 5713120 1631776 5713528 +1631808 5713504 1631888 5713320 1631808 5713216 1631776 5713528 +1631608 5713120 1631440 5713680 1631776 5713528 1631808 5713216 +1631808 5713504 1631808 5713216 1631776 5713528 1631864 5713480 +1631776 5713528 1631440 5713680 1631536 5713760 1631608 5713856 +1631440 5713680 1631536 5713760 1631776 5713528 1631608 5713120 +1631440 5713680 1631776 5713528 1631608 5713120 1631480 5713088 +1631608 5713120 1631744 5713512 1631776 5713528 1631808 5713216 +1631608 5713120 1631744 5713512 1631808 5713216 1631744 5713152 +1631776 5713528 1631808 5713504 1631808 5713216 1631744 5713512 +1631808 5713504 1631888 5713320 1631808 5713216 1631744 5713512 +1631808 5713504 1631880 5713456 1631888 5713320 1631744 5713512 +1631808 5713216 1631608 5713120 1631744 5713512 1631888 5713320 +1631808 5713504 1631888 5713320 1631744 5713512 1631776 5713528 +1631744 5713512 1631440 5713680 1631776 5713528 1631808 5713504 +1631776 5713528 1631744 5713512 1631440 5713680 1631536 5713760 +1631776 5713528 1631744 5713512 1631536 5713760 1631608 5713856 +1631776 5713528 1631808 5713504 1631744 5713512 1631536 5713760 +1631744 5713512 1631608 5713120 1631440 5713680 1631536 5713760 +1631608 5713120 1631440 5713680 1631744 5713512 1631808 5713216 +1631440 5713680 1631744 5713512 1631608 5713120 1631480 5713088 +1631744 5713512 1631552 5713472 1631440 5713680 1631536 5713760 +1631744 5713512 1631552 5713472 1631536 5713760 1631776 5713528 +1631744 5713512 1631608 5713120 1631552 5713472 1631536 5713760 +1631608 5713120 1631552 5713472 1631744 5713512 1631808 5713216 +1631608 5713120 1631552 5713472 1631808 5713216 1631744 5713152 +1631744 5713512 1631888 5713320 1631808 5713216 1631552 5713472 +1631552 5713472 1631536 5713760 1631744 5713512 1631808 5713216 +1631552 5713472 1631744 5713512 1631808 5713216 1631744 5713152 +1631552 5713472 1631608 5713120 1631440 5713680 1631536 5713760 +1631608 5713120 1631440 5713680 1631552 5713472 1631744 5713152 +1631440 5713680 1631552 5713472 1631608 5713120 1631480 5713088 +1631440 5713680 1631536 5713760 1631552 5713472 1631480 5713088 +1631440 5713680 1631552 5713472 1631480 5713088 1631312 5713656 +1631440 5713680 1631536 5713760 1631552 5713472 1631312 5713656 +1631480 5713088 1630920 5713672 1631312 5713656 1631552 5713472 +1631552 5713472 1631744 5713152 1631608 5713120 1631480 5713088 +1631552 5713472 1631608 5713120 1631480 5713088 1631312 5713656 +1631608 5713120 1631552 5713472 1631744 5713152 1631632 5713112 +1631312 5713656 1631448 5713440 1631480 5713088 1630920 5713672 +1631480 5713088 1628640 5712072 1630920 5713672 1631448 5713440 +1631552 5713472 1631448 5713440 1631312 5713656 1631440 5713680 +1631552 5713472 1631448 5713440 1631440 5713680 1631536 5713760 +1631552 5713472 1631480 5713088 1631448 5713440 1631440 5713680 +1631312 5713656 1631448 5713440 1630920 5713672 1630936 5713680 +1631448 5713440 1631480 5713088 1630920 5713672 1630936 5713680 +1631312 5713656 1631440 5713680 1631448 5713440 1630936 5713680 +1631448 5713440 1631552 5713472 1631480 5713088 1630920 5713672 +1631480 5713088 1631448 5713440 1631552 5713472 1631608 5713120 +1631448 5713440 1631440 5713680 1631552 5713472 1631608 5713120 +1631552 5713472 1631744 5713152 1631608 5713120 1631448 5713440 +1631480 5713088 1630920 5713672 1631448 5713440 1631608 5713120 +1630920 5713672 1631304 5713328 1631480 5713088 1628640 5712072 +1631448 5713440 1631304 5713328 1630920 5713672 1630936 5713680 +1631480 5713088 1628608 5711984 1628640 5712072 1631304 5713328 +1630920 5713672 1631304 5713328 1628640 5712072 1628632 5712112 +1631304 5713328 1631480 5713088 1628640 5712072 1628632 5712112 +1630920 5713672 1631304 5713328 1628632 5712112 1630768 5713776 +1631448 5713440 1631304 5713328 1630936 5713680 1631312 5713656 +1631304 5713328 1630920 5713672 1630936 5713680 1631312 5713656 +1631448 5713440 1631304 5713328 1631312 5713656 1631440 5713680 +1631448 5713440 1631480 5713088 1631304 5713328 1631312 5713656 +1631480 5713088 1631304 5713328 1631448 5713440 1631608 5713120 +1630920 5713672 1630936 5713680 1631304 5713328 1628632 5712112 +1631304 5713328 1631448 5713440 1631480 5713088 1628640 5712072 +1630920 5713672 1631216 5713296 1628632 5712112 1630768 5713776 +1628632 5712112 1628600 5712168 1630768 5713776 1631216 5713296 +1628632 5712112 1631216 5713296 1631304 5713328 1628640 5712072 +1631304 5713328 1631480 5713088 1628640 5712072 1631216 5713296 +1631480 5713088 1628608 5711984 1628640 5712072 1631216 5713296 +1628640 5712072 1628632 5712112 1631216 5713296 1631480 5713088 +1631304 5713328 1631216 5713296 1630920 5713672 1630936 5713680 +1631304 5713328 1631216 5713296 1630936 5713680 1631312 5713656 +1631304 5713328 1631216 5713296 1631312 5713656 1631448 5713440 +1631216 5713296 1630920 5713672 1630936 5713680 1631312 5713656 +1631216 5713296 1631312 5713656 1631304 5713328 1631480 5713088 +1631304 5713328 1631448 5713440 1631480 5713088 1631216 5713296 +1630920 5713672 1630936 5713680 1631216 5713296 1630768 5713776 +1631216 5713296 1628640 5712072 1628632 5712112 1630768 5713776 +1631216 5713296 1631120 5713320 1630768 5713776 1630920 5713672 +1630768 5713776 1631120 5713320 1628632 5712112 1628600 5712168 +1631216 5713296 1631120 5713320 1630920 5713672 1630936 5713680 +1631120 5713320 1630768 5713776 1630920 5713672 1630936 5713680 +1631216 5713296 1631120 5713320 1630936 5713680 1631312 5713656 +1631216 5713296 1631120 5713320 1631312 5713656 1631304 5713328 +1631312 5713656 1631448 5713440 1631304 5713328 1631120 5713320 +1631120 5713320 1630936 5713680 1631312 5713656 1631304 5713328 +1631120 5713320 1630920 5713672 1630936 5713680 1631312 5713656 +1631216 5713296 1628632 5712112 1631120 5713320 1631304 5713328 +1628632 5712112 1631120 5713320 1631216 5713296 1628640 5712072 +1631216 5713296 1631480 5713088 1628640 5712072 1631120 5713320 +1631216 5713296 1631304 5713328 1631480 5713088 1631120 5713320 +1631480 5713088 1628608 5711984 1628640 5712072 1631120 5713320 +1631120 5713320 1631304 5713328 1631216 5713296 1631480 5713088 +1628640 5712072 1628632 5712112 1631120 5713320 1631480 5713088 +1631120 5713320 1628632 5712112 1630768 5713776 1630920 5713672 +1628632 5712112 1630768 5713776 1631120 5713320 1628640 5712072 +1631120 5713320 1631120 5713408 1631312 5713656 1631304 5713328 +1631120 5713320 1631120 5713408 1631304 5713328 1631216 5713296 +1631312 5713656 1631448 5713440 1631304 5713328 1631120 5713408 +1631120 5713408 1631312 5713656 1631304 5713328 1631216 5713296 +1630936 5713680 1631120 5713408 1631120 5713320 1630920 5713672 +1631120 5713320 1630768 5713776 1630920 5713672 1631120 5713408 +1631120 5713320 1630920 5713672 1631120 5713408 1631216 5713296 +1631120 5713408 1630936 5713680 1631312 5713656 1631304 5713328 +1630936 5713680 1631312 5713656 1631120 5713408 1630920 5713672 +1631120 5713408 1631144 5713488 1631312 5713656 1631304 5713328 +1631312 5713656 1631448 5713440 1631304 5713328 1631144 5713488 +1631312 5713656 1631440 5713680 1631448 5713440 1631144 5713488 +1631120 5713408 1631144 5713488 1631304 5713328 1631216 5713296 +1631304 5713328 1631120 5713408 1631144 5713488 1631448 5713440 +1631120 5713408 1630936 5713680 1631144 5713488 1631304 5713328 +1630936 5713680 1631144 5713488 1631120 5713408 1630920 5713672 +1631120 5713408 1631120 5713320 1630920 5713672 1631144 5713488 +1631144 5713488 1631304 5713328 1631120 5713408 1630920 5713672 +1631144 5713488 1630936 5713680 1631312 5713656 1631448 5713440 +1630936 5713680 1631312 5713656 1631144 5713488 1630920 5713672 +1631144 5713488 1631120 5713536 1631312 5713656 1631448 5713440 +1630936 5713680 1631120 5713536 1631144 5713488 1630920 5713672 +1631144 5713488 1631120 5713408 1630920 5713672 1631120 5713536 +1631120 5713408 1631120 5713320 1630920 5713672 1631120 5713536 +1631120 5713536 1631312 5713656 1631144 5713488 1631120 5713408 +1630920 5713672 1630936 5713680 1631120 5713536 1631120 5713408 +1630936 5713680 1631312 5713656 1631120 5713536 1630920 5713672 +1630920 5713672 1631064 5713552 1631120 5713408 1631120 5713320 +1630920 5713672 1631064 5713552 1631120 5713320 1630768 5713776 +1631120 5713408 1631064 5713552 1631120 5713536 1631144 5713488 +1631120 5713536 1631064 5713552 1630920 5713672 1630936 5713680 +1631064 5713552 1630936 5713680 1631120 5713536 1631144 5713488 +1631120 5713536 1631064 5713552 1630936 5713680 1631312 5713656 +1631064 5713552 1630920 5713672 1630936 5713680 1631312 5713656 +1631120 5713536 1631064 5713552 1631312 5713656 1631144 5713488 +1631120 5713536 1631144 5713488 1631064 5713552 1631312 5713656 +1630920 5713672 1630936 5713680 1631064 5713552 1631120 5713320 +1631064 5713552 1631144 5713488 1631120 5713408 1631120 5713320 +1631120 5713320 1630960 5713552 1630920 5713672 1631064 5713552 +1631120 5713320 1630960 5713552 1631064 5713552 1631120 5713408 +1630960 5713552 1630920 5713672 1631064 5713552 1631120 5713408 +1630768 5713776 1630960 5713552 1631120 5713320 1628632 5712112 +1630768 5713776 1630960 5713552 1628632 5712112 1628600 5712168 +1631120 5713320 1628640 5712072 1628632 5712112 1630960 5713552 +1630920 5713672 1630936 5713680 1631064 5713552 1630960 5713552 +1631064 5713552 1631120 5713408 1630960 5713552 1630936 5713680 +1630936 5713680 1631312 5713656 1631064 5713552 1630960 5713552 +1630960 5713552 1630768 5713776 1630920 5713672 1630936 5713680 +1631064 5713552 1631144 5713488 1631120 5713408 1630960 5713552 +1630768 5713776 1630920 5713672 1630960 5713552 1628632 5712112 +1631120 5713320 1628632 5712112 1630960 5713552 1631120 5713408 +1630768 5713776 1630824 5713472 1628632 5712112 1628600 5712168 +1630768 5713776 1630824 5713472 1628600 5712168 1628552 5712200 +1628632 5712112 1630824 5713472 1630960 5713552 1631120 5713320 +1628632 5712112 1630824 5713472 1631120 5713320 1628640 5712072 +1631120 5713320 1631480 5713088 1628640 5712072 1630824 5713472 +1630824 5713472 1630960 5713552 1631120 5713320 1628640 5712072 +1630960 5713552 1630824 5713472 1630768 5713776 1630920 5713672 +1630960 5713552 1630824 5713472 1630920 5713672 1630936 5713680 +1630824 5713472 1630920 5713672 1630960 5713552 1631120 5713320 +1630960 5713552 1631120 5713408 1631120 5713320 1630824 5713472 +1630960 5713552 1631064 5713552 1631120 5713408 1630824 5713472 +1631120 5713320 1628640 5712072 1630824 5713472 1631120 5713408 +1630960 5713552 1631120 5713408 1630824 5713472 1630920 5713672 +1630768 5713776 1630920 5713672 1630824 5713472 1628600 5712168 +1630824 5713472 1628640 5712072 1628632 5712112 1628600 5712168 +1628640 5712072 1630752 5713384 1631120 5713320 1631480 5713088 +1628640 5712072 1630752 5713384 1631480 5713088 1628608 5711984 +1631120 5713320 1631216 5713296 1631480 5713088 1630752 5713384 +1631120 5713320 1630752 5713384 1630824 5713472 1631120 5713408 +1630824 5713472 1630752 5713384 1628640 5712072 1628632 5712112 +1630824 5713472 1631120 5713320 1630752 5713384 1628632 5712112 +1630824 5713472 1630752 5713384 1628632 5712112 1628600 5712168 +1630824 5713472 1630752 5713384 1628600 5712168 1630768 5713776 +1628600 5712168 1628552 5712200 1630768 5713776 1630752 5713384 +1628552 5712200 1630760 5713848 1630768 5713776 1630752 5713384 +1628552 5712200 1630760 5713848 1630752 5713384 1628600 5712168 +1630768 5713776 1630824 5713472 1630752 5713384 1630760 5713848 +1628552 5712200 1627608 5714272 1630760 5713848 1630752 5713384 +1630752 5713384 1628640 5712072 1628632 5712112 1628600 5712168 +1630824 5713472 1630752 5713384 1630768 5713776 1630920 5713672 +1630824 5713472 1631120 5713320 1630752 5713384 1630768 5713776 +1630752 5713384 1628632 5712112 1628600 5712168 1628552 5712200 +1628640 5712072 1628632 5712112 1630752 5713384 1631480 5713088 +1630752 5713384 1630824 5713472 1631120 5713320 1631480 5713088 +1628640 5712072 1630712 5713264 1631480 5713088 1628608 5711984 +1631480 5713088 1628560 5711888 1628608 5711984 1630712 5713264 +1631480 5713088 1630712 5713264 1630752 5713384 1631120 5713320 +1631480 5713088 1630712 5713264 1631120 5713320 1631216 5713296 +1630752 5713384 1630712 5713264 1628640 5712072 1628632 5712112 +1630752 5713384 1630712 5713264 1628632 5712112 1628600 5712168 +1630752 5713384 1630712 5713264 1628600 5712168 1628552 5712200 +1630752 5713384 1630712 5713264 1628552 5712200 1630760 5713848 +1630752 5713384 1630712 5713264 1630760 5713848 1630768 5713776 +1630712 5713264 1628552 5712200 1630760 5713848 1630768 5713776 +1630752 5713384 1630712 5713264 1630768 5713776 1630824 5713472 +1628552 5712200 1627608 5714272 1630760 5713848 1630712 5713264 +1630712 5713264 1628632 5712112 1628600 5712168 1628552 5712200 +1630712 5713264 1628600 5712168 1628552 5712200 1630760 5713848 +1630712 5713264 1628640 5712072 1628632 5712112 1628600 5712168 +1630712 5713264 1630768 5713776 1630752 5713384 1631120 5713320 +1630752 5713384 1630824 5713472 1631120 5713320 1630712 5713264 +1628640 5712072 1628632 5712112 1630712 5713264 1628608 5711984 +1630712 5713264 1631120 5713320 1631480 5713088 1628608 5711984 +1630712 5713264 1630728 5713184 1628608 5711984 1628640 5712072 +1628608 5711984 1630728 5713184 1631480 5713088 1628560 5711888 +1631480 5713088 1628520 5711808 1628560 5711888 1630728 5713184 +1628560 5711888 1628608 5711984 1630728 5713184 1628520 5711808 +1631480 5713088 1628488 5711752 1628520 5711808 1630728 5713184 +1630712 5713264 1630728 5713184 1628640 5712072 1628632 5712112 +1630728 5713184 1628608 5711984 1628640 5712072 1628632 5712112 +1630712 5713264 1630728 5713184 1628632 5712112 1628600 5712168 +1630712 5713264 1630728 5713184 1628600 5712168 1628552 5712200 +1630728 5713184 1628640 5712072 1628632 5712112 1628600 5712168 +1630712 5713264 1631480 5713088 1630728 5713184 1628600 5712168 +1631480 5713088 1630728 5713184 1630712 5713264 1631120 5713320 +1631480 5713088 1630728 5713184 1631120 5713320 1631216 5713296 +1631480 5713088 1630728 5713184 1631216 5713296 1631304 5713328 +1630712 5713264 1630752 5713384 1631120 5713320 1630728 5713184 +1630752 5713384 1630824 5713472 1631120 5713320 1630728 5713184 +1630728 5713184 1628600 5712168 1630712 5713264 1630752 5713384 +1630728 5713184 1630752 5713384 1631120 5713320 1631216 5713296 +1630728 5713184 1628560 5711888 1628608 5711984 1628640 5712072 +1630728 5713184 1631216 5713296 1631480 5713088 1628520 5711808 +1630728 5713184 1630752 5713152 1628520 5711808 1628560 5711888 +1630728 5713184 1630752 5713152 1628560 5711888 1628608 5711984 +1630752 5713152 1628520 5711808 1628560 5711888 1628608 5711984 +1628520 5711808 1630752 5713152 1631480 5713088 1628488 5711752 +1631480 5713088 1629808 5706208 1628488 5711752 1630752 5713152 +1630728 5713184 1630752 5713152 1628608 5711984 1628640 5712072 +1630728 5713184 1630752 5713152 1628640 5712072 1628632 5712112 +1630752 5713152 1628560 5711888 1628608 5711984 1628640 5712072 +1630728 5713184 1630752 5713152 1628632 5712112 1628600 5712168 +1630752 5713152 1628608 5711984 1628640 5712072 1628632 5712112 +1630728 5713184 1631480 5713088 1630752 5713152 1628632 5712112 +1631480 5713088 1630752 5713152 1630728 5713184 1631216 5713296 +1631480 5713088 1630752 5713152 1631216 5713296 1631304 5713328 +1630728 5713184 1631120 5713320 1631216 5713296 1630752 5713152 +1630728 5713184 1630752 5713384 1631120 5713320 1630752 5713152 +1631120 5713320 1631216 5713296 1630752 5713152 1630752 5713384 +1630728 5713184 1630712 5713264 1630752 5713384 1630752 5713152 +1630752 5713384 1630824 5713472 1631120 5713320 1630752 5713152 +1630752 5713384 1631120 5713320 1630752 5713152 1630712 5713264 +1630752 5713152 1628632 5712112 1630728 5713184 1630712 5713264 +1631216 5713296 1631480 5713088 1630752 5713152 1631120 5713320 +1630752 5713152 1628488 5711752 1628520 5711808 1628560 5711888 +1630752 5713152 1631216 5713296 1631480 5713088 1628488 5711752 +1628488 5711752 1630800 5713112 1631480 5713088 1629808 5706208 +1630752 5713152 1630800 5713112 1628488 5711752 1628520 5711808 +1630752 5713152 1630800 5713112 1628520 5711808 1628560 5711888 +1630752 5713152 1630800 5713112 1628560 5711888 1628608 5711984 +1630752 5713152 1630800 5713112 1628608 5711984 1628640 5712072 +1630800 5713112 1628560 5711888 1628608 5711984 1628640 5712072 +1630800 5713112 1628488 5711752 1628520 5711808 1628560 5711888 +1630752 5713152 1630800 5713112 1628640 5712072 1628632 5712112 +1630800 5713112 1628520 5711808 1628560 5711888 1628608 5711984 +1630752 5713152 1631480 5713088 1630800 5713112 1628640 5712072 +1631480 5713088 1630800 5713112 1630752 5713152 1631216 5713296 +1631480 5713088 1630800 5713112 1631216 5713296 1631304 5713328 +1630752 5713152 1631120 5713320 1631216 5713296 1630800 5713112 +1630752 5713152 1630752 5713384 1631120 5713320 1630800 5713112 +1630752 5713384 1630824 5713472 1631120 5713320 1630800 5713112 +1630752 5713152 1630712 5713264 1630752 5713384 1630800 5713112 +1630752 5713384 1631120 5713320 1630800 5713112 1630712 5713264 +1630752 5713152 1630728 5713184 1630712 5713264 1630800 5713112 +1631120 5713320 1631216 5713296 1630800 5713112 1630752 5713384 +1630800 5713112 1628640 5712072 1630752 5713152 1630712 5713264 +1631216 5713296 1631480 5713088 1630800 5713112 1631120 5713320 +1630800 5713112 1631480 5713088 1628488 5711752 1628520 5711808 +1631480 5713088 1628488 5711752 1630800 5713112 1631216 5713296 +1628488 5711752 1630864 5713080 1631480 5713088 1629808 5706208 +1630800 5713112 1630864 5713080 1628488 5711752 1628520 5711808 +1630800 5713112 1630864 5713080 1628520 5711808 1628560 5711888 +1630800 5713112 1630864 5713080 1628560 5711888 1628608 5711984 +1630800 5713112 1630864 5713080 1628608 5711984 1628640 5712072 +1630800 5713112 1630864 5713080 1628640 5712072 1630752 5713152 +1630864 5713080 1628520 5711808 1628560 5711888 1628608 5711984 +1630864 5713080 1628560 5711888 1628608 5711984 1628640 5712072 +1630864 5713080 1628488 5711752 1628520 5711808 1628560 5711888 +1630800 5713112 1631480 5713088 1630864 5713080 1628640 5712072 +1631480 5713088 1630864 5713080 1630800 5713112 1631216 5713296 +1631480 5713088 1630864 5713080 1631216 5713296 1631304 5713328 +1630800 5713112 1631120 5713320 1631216 5713296 1630864 5713080 +1630800 5713112 1630752 5713384 1631120 5713320 1630864 5713080 +1630800 5713112 1630712 5713264 1630752 5713384 1630864 5713080 +1630752 5713384 1630824 5713472 1631120 5713320 1630864 5713080 +1631120 5713320 1631216 5713296 1630864 5713080 1630752 5713384 +1630864 5713080 1628640 5712072 1630800 5713112 1630752 5713384 +1631216 5713296 1631480 5713088 1630864 5713080 1631120 5713320 +1630864 5713080 1631480 5713088 1628488 5711752 1628520 5711808 +1631480 5713088 1628488 5711752 1630864 5713080 1631216 5713296 +1628488 5711752 1631000 5713048 1631480 5713088 1629808 5706208 +1628488 5711752 1631000 5713048 1629808 5706208 1628464 5711736 +1630864 5713080 1631000 5713048 1628488 5711752 1628520 5711808 +1630864 5713080 1631000 5713048 1628520 5711808 1628560 5711888 +1630864 5713080 1631000 5713048 1628560 5711888 1628608 5711984 +1630864 5713080 1631000 5713048 1628608 5711984 1628640 5712072 +1631000 5713048 1628520 5711808 1628560 5711888 1628608 5711984 +1631000 5713048 1628488 5711752 1628520 5711808 1628560 5711888 +1630864 5713080 1631480 5713088 1631000 5713048 1628608 5711984 +1631480 5713088 1631000 5713048 1630864 5713080 1631216 5713296 +1631480 5713088 1631000 5713048 1631216 5713296 1631304 5713328 +1630864 5713080 1631120 5713320 1631216 5713296 1631000 5713048 +1630864 5713080 1630752 5713384 1631120 5713320 1631000 5713048 +1631000 5713048 1628608 5711984 1630864 5713080 1631120 5713320 +1631216 5713296 1631480 5713088 1631000 5713048 1631120 5713320 +1628488 5711752 1628520 5711808 1631000 5713048 1629808 5706208 +1631000 5713048 1631216 5713296 1631480 5713088 1629808 5706208 +1631480 5713088 1631632 5713112 1629808 5706208 1631000 5713048 +1631000 5713048 1631264 5713048 1629808 5706208 1628488 5711752 +1629808 5706208 1628464 5711736 1628488 5711752 1631264 5713048 +1631000 5713048 1631264 5713048 1628488 5711752 1628520 5711808 +1631000 5713048 1631480 5713088 1631264 5713048 1628488 5711752 +1631480 5713088 1631264 5713048 1631000 5713048 1631216 5713296 +1631480 5713088 1631264 5713048 1631216 5713296 1631304 5713328 +1631480 5713088 1631264 5713048 1631304 5713328 1631448 5713440 +1631000 5713048 1631120 5713320 1631216 5713296 1631264 5713048 +1631264 5713048 1628488 5711752 1631000 5713048 1631216 5713296 +1631264 5713048 1631000 5713048 1631216 5713296 1631304 5713328 +1631264 5713048 1631480 5713088 1629808 5706208 1628488 5711752 +1631480 5713088 1629808 5706208 1631264 5713048 1631304 5713328 +1629808 5706208 1631264 5713048 1631480 5713088 1631632 5713112 +1628712 5701448 1627744 5696960 1626296 5698872 1628632 5701384 +1663880 5646248 1627744 5696960 1628712 5701448 1663944 5646256 +1626296 5698872 1627744 5696960 1663880 5646248 1626248 5698816 +1663880 5646248 1625936 5698488 1626248 5698816 1627744 5696960 +1626248 5698816 1626296 5698872 1627744 5696960 1625936 5698488 +1625936 5698488 1626032 5698672 1626248 5698816 1627744 5696960 +1626296 5698872 1626344 5698984 1628632 5701384 1627744 5696960 +1628632 5701384 1628712 5701448 1627744 5696960 1626344 5698984 +1626344 5698984 1628288 5701200 1628632 5701384 1627744 5696960 +1628632 5701384 1628712 5701448 1627744 5696960 1628288 5701200 +1626344 5698984 1628128 5701160 1628288 5701200 1627744 5696960 +1626344 5698984 1627968 5701176 1628128 5701160 1627744 5696960 +1626344 5698984 1628128 5701160 1627744 5696960 1626296 5698872 +1628288 5701200 1628632 5701384 1627744 5696960 1628128 5701160 +1628712 5701448 1630136 5704624 1663944 5646256 1627744 5696960 +1663944 5646256 1663880 5646248 1627744 5696960 1630136 5704624 +1630136 5704624 1631912 5713400 1663944 5646256 1627744 5696960 +1663880 5646248 1625936 5698488 1627744 5696960 1663944 5646256 +1628712 5701448 1630136 5704624 1627744 5696960 1628632 5701384 +1627744 5696960 1626248 5698816 1626296 5698872 1626344 5698984 +1628712 5701448 1630064 5704496 1630136 5704624 1627744 5696960 +1663880 5646248 1625808 5698384 1625936 5698488 1627744 5696960 +1625936 5698488 1626248 5698816 1627744 5696960 1625808 5698384 +1663880 5646248 1625808 5698384 1627744 5696960 1663944 5646256 +1663880 5646248 1623704 5697048 1625808 5698384 1627744 5696960 +1623704 5697048 1623728 5697072 1625808 5698384 1627744 5696960 +1623728 5697072 1625776 5698376 1625808 5698384 1627744 5696960 +1623728 5697072 1625776 5698376 1627744 5696960 1623704 5697048 +1663880 5646248 1615440 5689168 1623704 5697048 1627744 5696960 +1663880 5646248 1663776 5646144 1615440 5689168 1627744 5696960 +1663776 5646144 1612640 5685184 1615440 5689168 1627744 5696960 +1663776 5646144 1612640 5685184 1627744 5696960 1663880 5646248 +1663776 5646144 1612616 5685152 1612640 5685184 1627744 5696960 +1615440 5689168 1623704 5697048 1627744 5696960 1612640 5685184 +1612640 5685184 1615392 5689120 1615440 5689168 1627744 5696960 +1623728 5697072 1623760 5697136 1625776 5698376 1627744 5696960 +1625776 5698376 1625808 5698384 1627744 5696960 1623760 5697136 +1623728 5697072 1623760 5697136 1627744 5696960 1623704 5697048 +1615440 5689168 1615488 5689272 1623704 5697048 1627744 5696960 +1615440 5689168 1615488 5689272 1627744 5696960 1612640 5685184 +1615488 5689272 1623632 5697024 1623704 5697048 1627744 5696960 +1615488 5689272 1623464 5696976 1623632 5697024 1627744 5696960 +1615488 5689272 1623376 5696968 1623464 5696976 1627744 5696960 +1623464 5696976 1623496 5696992 1623632 5697024 1627744 5696960 +1615488 5689272 1623464 5696976 1627744 5696960 1615440 5689168 +1623632 5697024 1623704 5697048 1627744 5696960 1623464 5696976 +1663880 5646248 1663776 5646144 1627744 5696960 1663944 5646256 +1623760 5697136 1625240 5698480 1625776 5698376 1627744 5696960 +1623704 5697048 1623728 5697072 1627744 5696960 1623632 5697024 +1625808 5698384 1625936 5698488 1627744 5696960 1625776 5698376 +1627744 5696960 1627784 5696912 1663944 5646256 1663880 5646248 +1663944 5646256 1627784 5696912 1630136 5704624 1631912 5713400 +1630136 5704624 1627784 5696912 1627744 5696960 1628712 5701448 +1627744 5696960 1627784 5696912 1663880 5646248 1663776 5646144 +1627784 5696912 1663944 5646256 1663880 5646248 1663776 5646144 +1627744 5696960 1627784 5696912 1663776 5646144 1612640 5685184 +1627744 5696960 1627784 5696912 1612640 5685184 1615440 5689168 +1627784 5696912 1663776 5646144 1612640 5685184 1615440 5689168 +1663776 5646144 1612616 5685152 1612640 5685184 1627784 5696912 +1627744 5696960 1627784 5696912 1615440 5689168 1615488 5689272 +1627784 5696912 1612640 5685184 1615440 5689168 1615488 5689272 +1612640 5685184 1615392 5689120 1615440 5689168 1627784 5696912 +1627744 5696960 1627784 5696912 1615488 5689272 1623464 5696976 +1615488 5689272 1623376 5696968 1623464 5696976 1627784 5696912 +1627744 5696960 1627784 5696912 1623464 5696976 1623632 5697024 +1627784 5696912 1615440 5689168 1615488 5689272 1623464 5696976 +1623464 5696976 1623496 5696992 1623632 5697024 1627784 5696912 +1627784 5696912 1615488 5689272 1623464 5696976 1623632 5697024 +1627744 5696960 1627784 5696912 1623632 5697024 1623704 5697048 +1627784 5696912 1623464 5696976 1623632 5697024 1623704 5697048 +1627784 5696912 1663880 5646248 1663776 5646144 1612640 5685184 +1627744 5696960 1628632 5701384 1628712 5701448 1627784 5696912 +1627744 5696960 1628288 5701200 1628632 5701384 1627784 5696912 +1628712 5701448 1630136 5704624 1627784 5696912 1628632 5701384 +1627744 5696960 1628632 5701384 1627784 5696912 1623704 5697048 +1627784 5696912 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1627784 5696912 1628712 5701448 +1630136 5704624 1627784 5696912 1628712 5701448 1630064 5704496 +1627744 5696960 1627784 5696912 1623704 5697048 1623728 5697072 +1627744 5696960 1627784 5696912 1623728 5697072 1623760 5697136 +1627784 5696912 1623632 5697024 1623704 5697048 1623728 5697072 +1627744 5696960 1628632 5701384 1627784 5696912 1623728 5697072 +1663944 5646256 1627880 5696848 1630136 5704624 1631912 5713400 +1627784 5696912 1627880 5696848 1663944 5646256 1663880 5646248 +1627784 5696912 1627880 5696848 1663880 5646248 1663776 5646144 +1627784 5696912 1627880 5696848 1663776 5646144 1612640 5685184 +1627880 5696848 1663880 5646248 1663776 5646144 1612640 5685184 +1627784 5696912 1627880 5696848 1612640 5685184 1615440 5689168 +1627784 5696912 1627880 5696848 1615440 5689168 1615488 5689272 +1627880 5696848 1612640 5685184 1615440 5689168 1615488 5689272 +1663776 5646144 1612616 5685152 1612640 5685184 1627880 5696848 +1627784 5696912 1627880 5696848 1615488 5689272 1623464 5696976 +1615488 5689272 1623376 5696968 1623464 5696976 1627880 5696848 +1627880 5696848 1615440 5689168 1615488 5689272 1623464 5696976 +1612640 5685184 1615392 5689120 1615440 5689168 1627880 5696848 +1627784 5696912 1627880 5696848 1623464 5696976 1623632 5697024 +1627784 5696912 1627880 5696848 1623632 5697024 1623704 5697048 +1627880 5696848 1615488 5689272 1623464 5696976 1623632 5697024 +1623464 5696976 1623496 5696992 1623632 5697024 1627880 5696848 +1627880 5696848 1623464 5696976 1623632 5697024 1623704 5697048 +1627784 5696912 1627880 5696848 1623704 5697048 1623728 5697072 +1627880 5696848 1663776 5646144 1612640 5685184 1615440 5689168 +1627880 5696848 1663944 5646256 1663880 5646248 1663776 5646144 +1627784 5696912 1630136 5704624 1627880 5696848 1623704 5697048 +1630136 5704624 1627880 5696848 1627784 5696912 1628712 5701448 +1627784 5696912 1628632 5701384 1628712 5701448 1627880 5696848 +1627784 5696912 1627744 5696960 1628632 5701384 1627880 5696848 +1627744 5696960 1628288 5701200 1628632 5701384 1627880 5696848 +1627744 5696960 1628128 5701160 1628288 5701200 1627880 5696848 +1628632 5701384 1628712 5701448 1627880 5696848 1628288 5701200 +1627744 5696960 1628288 5701200 1627880 5696848 1627784 5696912 +1627880 5696848 1623704 5697048 1627784 5696912 1627744 5696960 +1628712 5701448 1630136 5704624 1627880 5696848 1628632 5701384 +1627880 5696848 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1627880 5696848 1628712 5701448 +1630136 5704624 1627880 5696848 1628712 5701448 1630064 5704496 +1628712 5701448 1629944 5704312 1630064 5704496 1627880 5696848 +1627880 5696848 1628632 5701384 1628712 5701448 1630064 5704496 +1630136 5704624 1663944 5646256 1627880 5696848 1630064 5704496 +1630136 5704624 1627880 5696848 1630064 5704496 1630112 5704600 +1663944 5646256 1627928 5696800 1630136 5704624 1631912 5713400 +1627880 5696848 1627928 5696800 1663944 5646256 1663880 5646248 +1627880 5696848 1627928 5696800 1663880 5646248 1663776 5646144 +1627880 5696848 1627928 5696800 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1627928 5696800 +1627880 5696848 1627928 5696800 1612640 5685184 1615440 5689168 +1627928 5696800 1663776 5646144 1612640 5685184 1615440 5689168 +1627880 5696848 1627928 5696800 1615440 5689168 1615488 5689272 +1627880 5696848 1627928 5696800 1615488 5689272 1623464 5696976 +1615488 5689272 1623376 5696968 1623464 5696976 1627928 5696800 +1627928 5696800 1615440 5689168 1615488 5689272 1623464 5696976 +1627880 5696848 1627928 5696800 1623464 5696976 1623632 5697024 +1627928 5696800 1615488 5689272 1623464 5696976 1623632 5697024 +1612640 5685184 1615392 5689120 1615440 5689168 1627928 5696800 +1623464 5696976 1623496 5696992 1623632 5697024 1627928 5696800 +1627880 5696848 1627928 5696800 1623632 5697024 1623704 5697048 +1627880 5696848 1627928 5696800 1623704 5697048 1627784 5696912 +1627928 5696800 1623464 5696976 1623632 5697024 1623704 5697048 +1627928 5696800 1623632 5697024 1623704 5697048 1627784 5696912 +1623704 5697048 1623728 5697072 1627784 5696912 1627928 5696800 +1627928 5696800 1612640 5685184 1615440 5689168 1615488 5689272 +1627928 5696800 1663880 5646248 1663776 5646144 1612640 5685184 +1627928 5696800 1663944 5646256 1663880 5646248 1663776 5646144 +1627880 5696848 1630136 5704624 1627928 5696800 1627784 5696912 +1630136 5704624 1627928 5696800 1627880 5696848 1630064 5704496 +1627928 5696800 1627784 5696912 1627880 5696848 1630064 5704496 +1627928 5696800 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1627928 5696800 1630064 5704496 +1627880 5696848 1628712 5701448 1630064 5704496 1627928 5696800 +1628712 5701448 1629944 5704312 1630064 5704496 1627928 5696800 +1627880 5696848 1628632 5701384 1628712 5701448 1627928 5696800 +1627880 5696848 1628288 5701200 1628632 5701384 1627928 5696800 +1627880 5696848 1628632 5701384 1627928 5696800 1627784 5696912 +1630064 5704496 1630136 5704624 1627928 5696800 1628712 5701448 +1628712 5701448 1630064 5704496 1627928 5696800 1628632 5701384 +1630136 5704624 1627928 5696800 1630064 5704496 1630112 5704600 +1663944 5646256 1627968 5696752 1630136 5704624 1631912 5713400 +1627928 5696800 1627968 5696752 1663944 5646256 1663880 5646248 +1627928 5696800 1627968 5696752 1663880 5646248 1663776 5646144 +1627928 5696800 1627968 5696752 1663776 5646144 1612640 5685184 +1627928 5696800 1627968 5696752 1612640 5685184 1615440 5689168 +1663776 5646144 1612616 5685152 1612640 5685184 1627968 5696752 +1612640 5685184 1615392 5689120 1615440 5689168 1627968 5696752 +1627928 5696800 1627968 5696752 1615440 5689168 1615488 5689272 +1627968 5696752 1612640 5685184 1615440 5689168 1615488 5689272 +1627928 5696800 1627968 5696752 1615488 5689272 1623464 5696976 +1615488 5689272 1623376 5696968 1623464 5696976 1627968 5696752 +1627928 5696800 1627968 5696752 1623464 5696976 1623632 5697024 +1627968 5696752 1615488 5689272 1623464 5696976 1623632 5697024 +1627928 5696800 1627968 5696752 1623632 5697024 1623704 5697048 +1627968 5696752 1623464 5696976 1623632 5697024 1623704 5697048 +1623464 5696976 1623496 5696992 1623632 5697024 1627968 5696752 +1627928 5696800 1627968 5696752 1623704 5697048 1627784 5696912 +1627928 5696800 1627968 5696752 1627784 5696912 1627880 5696848 +1627968 5696752 1623632 5697024 1623704 5697048 1627784 5696912 +1623704 5697048 1623728 5697072 1627784 5696912 1627968 5696752 +1627968 5696752 1615440 5689168 1615488 5689272 1623464 5696976 +1627968 5696752 1663776 5646144 1612640 5685184 1615440 5689168 +1627968 5696752 1663880 5646248 1663776 5646144 1612640 5685184 +1627968 5696752 1663944 5646256 1663880 5646248 1663776 5646144 +1627928 5696800 1630136 5704624 1627968 5696752 1627784 5696912 +1630136 5704624 1627968 5696752 1627928 5696800 1630064 5704496 +1627928 5696800 1628712 5701448 1630064 5704496 1627968 5696752 +1628712 5701448 1629944 5704312 1630064 5704496 1627968 5696752 +1627968 5696752 1627784 5696912 1627928 5696800 1628712 5701448 +1630064 5704496 1630136 5704624 1627968 5696752 1628712 5701448 +1627968 5696752 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1627968 5696752 1630064 5704496 +1627928 5696800 1628632 5701384 1628712 5701448 1627968 5696752 +1627928 5696800 1627880 5696848 1628632 5701384 1627968 5696752 +1628712 5701448 1630064 5704496 1627968 5696752 1628632 5701384 +1627928 5696800 1628632 5701384 1627968 5696752 1627784 5696912 +1630136 5704624 1627968 5696752 1630064 5704496 1630112 5704600 +1663944 5646256 1628016 5696712 1630136 5704624 1631912 5713400 +1627968 5696752 1628016 5696712 1663944 5646256 1663880 5646248 +1627968 5696752 1628016 5696712 1663880 5646248 1663776 5646144 +1627968 5696752 1628016 5696712 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1628016 5696712 +1627968 5696752 1628016 5696712 1612640 5685184 1615440 5689168 +1627968 5696752 1628016 5696712 1615440 5689168 1615488 5689272 +1612640 5685184 1615392 5689120 1615440 5689168 1628016 5696712 +1627968 5696752 1628016 5696712 1615488 5689272 1623464 5696976 +1615488 5689272 1623376 5696968 1623464 5696976 1628016 5696712 +1628016 5696712 1615440 5689168 1615488 5689272 1623464 5696976 +1627968 5696752 1628016 5696712 1623464 5696976 1623632 5697024 +1627968 5696752 1628016 5696712 1623632 5697024 1623704 5697048 +1628016 5696712 1623464 5696976 1623632 5697024 1623704 5697048 +1627968 5696752 1628016 5696712 1623704 5697048 1627784 5696912 +1623464 5696976 1623496 5696992 1623632 5697024 1628016 5696712 +1628016 5696712 1615488 5689272 1623464 5696976 1623632 5697024 +1628016 5696712 1612640 5685184 1615440 5689168 1615488 5689272 +1628016 5696712 1663776 5646144 1612640 5685184 1615440 5689168 +1628016 5696712 1663880 5646248 1663776 5646144 1612640 5685184 +1628016 5696712 1663944 5646256 1663880 5646248 1663776 5646144 +1627968 5696752 1630136 5704624 1628016 5696712 1623704 5697048 +1630136 5704624 1628016 5696712 1627968 5696752 1630064 5704496 +1627968 5696752 1628712 5701448 1630064 5704496 1628016 5696712 +1628712 5701448 1629944 5704312 1630064 5704496 1628016 5696712 +1627968 5696752 1628632 5701384 1628712 5701448 1628016 5696712 +1628712 5701448 1630064 5704496 1628016 5696712 1628632 5701384 +1630136 5704624 1663944 5646256 1628016 5696712 1630064 5704496 +1628016 5696712 1623704 5697048 1627968 5696752 1628632 5701384 +1630064 5704496 1630136 5704624 1628016 5696712 1628712 5701448 +1628016 5696712 1630136 5704624 1663944 5646256 1663880 5646248 +1627968 5696752 1627928 5696800 1628632 5701384 1628016 5696712 +1627928 5696800 1627880 5696848 1628632 5701384 1628016 5696712 +1628632 5701384 1628712 5701448 1628016 5696712 1627928 5696800 +1627968 5696752 1627928 5696800 1628016 5696712 1623704 5697048 +1630136 5704624 1628016 5696712 1630064 5704496 1630112 5704600 +1663944 5646256 1628048 5696704 1630136 5704624 1631912 5713400 +1630136 5704624 1628048 5696704 1628016 5696712 1630064 5704496 +1630136 5704624 1663944 5646256 1628048 5696704 1630064 5704496 +1628016 5696712 1628712 5701448 1630064 5704496 1628048 5696704 +1628712 5701448 1629944 5704312 1630064 5704496 1628048 5696704 +1628016 5696712 1628632 5701384 1628712 5701448 1628048 5696704 +1628016 5696712 1627928 5696800 1628632 5701384 1628048 5696704 +1627928 5696800 1627880 5696848 1628632 5701384 1628048 5696704 +1627880 5696848 1628288 5701200 1628632 5701384 1628048 5696704 +1627880 5696848 1627744 5696960 1628288 5701200 1628048 5696704 +1627880 5696848 1628288 5701200 1628048 5696704 1627928 5696800 +1627928 5696800 1627880 5696848 1628048 5696704 1628016 5696712 +1628632 5701384 1628712 5701448 1628048 5696704 1628288 5701200 +1630064 5704496 1630136 5704624 1628048 5696704 1628712 5701448 +1628712 5701448 1630064 5704496 1628048 5696704 1628632 5701384 +1628016 5696712 1628048 5696704 1663944 5646256 1663880 5646248 +1628048 5696704 1630136 5704624 1663944 5646256 1663880 5646248 +1628016 5696712 1628048 5696704 1663880 5646248 1663776 5646144 +1628016 5696712 1628048 5696704 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1628048 5696704 +1628016 5696712 1628048 5696704 1612640 5685184 1615440 5689168 +1612640 5685184 1615392 5689120 1615440 5689168 1628048 5696704 +1628016 5696712 1628048 5696704 1615440 5689168 1615488 5689272 +1628016 5696712 1628048 5696704 1615488 5689272 1623464 5696976 +1628048 5696704 1612640 5685184 1615440 5689168 1615488 5689272 +1628048 5696704 1663776 5646144 1612640 5685184 1615440 5689168 +1628048 5696704 1663880 5646248 1663776 5646144 1612640 5685184 +1628048 5696704 1663944 5646256 1663880 5646248 1663776 5646144 +1628048 5696704 1615488 5689272 1628016 5696712 1627928 5696800 +1628016 5696712 1627968 5696752 1627928 5696800 1628048 5696704 +1627928 5696800 1627880 5696848 1628048 5696704 1627968 5696752 +1628016 5696712 1627968 5696752 1628048 5696704 1615488 5689272 +1630136 5704624 1628048 5696704 1630064 5704496 1630112 5704600 +1663944 5646256 1628088 5696712 1630136 5704624 1631912 5713400 +1628048 5696704 1628088 5696712 1663944 5646256 1663880 5646248 +1628048 5696704 1630136 5704624 1628088 5696712 1663880 5646248 +1630136 5704624 1628088 5696712 1628048 5696704 1630064 5704496 +1628048 5696704 1628712 5701448 1630064 5704496 1628088 5696712 +1628712 5701448 1629944 5704312 1630064 5704496 1628088 5696712 +1628088 5696712 1663880 5646248 1628048 5696704 1628712 5701448 +1630064 5704496 1630136 5704624 1628088 5696712 1628712 5701448 +1628088 5696712 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1628088 5696712 1630064 5704496 +1628048 5696704 1628632 5701384 1628712 5701448 1628088 5696712 +1628048 5696704 1628288 5701200 1628632 5701384 1628088 5696712 +1628048 5696704 1627880 5696848 1628288 5701200 1628088 5696712 +1627880 5696848 1627744 5696960 1628288 5701200 1628088 5696712 +1627744 5696960 1628128 5701160 1628288 5701200 1628088 5696712 +1627880 5696848 1627744 5696960 1628088 5696712 1628048 5696704 +1627880 5696848 1627784 5696912 1627744 5696960 1628088 5696712 +1628048 5696704 1627928 5696800 1627880 5696848 1628088 5696712 +1627880 5696848 1627744 5696960 1628088 5696712 1627928 5696800 +1628048 5696704 1627968 5696752 1627928 5696800 1628088 5696712 +1627928 5696800 1627880 5696848 1628088 5696712 1627968 5696752 +1628288 5701200 1628632 5701384 1628088 5696712 1627744 5696960 +1628712 5701448 1630064 5704496 1628088 5696712 1628632 5701384 +1628048 5696704 1627968 5696752 1628088 5696712 1663880 5646248 +1628632 5701384 1628712 5701448 1628088 5696712 1628288 5701200 +1628048 5696704 1628088 5696712 1663880 5646248 1663776 5646144 +1628088 5696712 1663944 5646256 1663880 5646248 1663776 5646144 +1628048 5696704 1627968 5696752 1628088 5696712 1663776 5646144 +1628048 5696704 1628088 5696712 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1628088 5696712 +1628048 5696704 1628088 5696712 1612640 5685184 1615440 5689168 +1612640 5685184 1615392 5689120 1615440 5689168 1628088 5696712 +1628048 5696704 1628088 5696712 1615440 5689168 1615488 5689272 +1628048 5696704 1627968 5696752 1628088 5696712 1615440 5689168 +1628088 5696712 1663776 5646144 1612640 5685184 1615440 5689168 +1628088 5696712 1663880 5646248 1663776 5646144 1612640 5685184 +1628048 5696704 1628016 5696712 1627968 5696752 1628088 5696712 +1627968 5696752 1627928 5696800 1628088 5696712 1628016 5696712 +1628048 5696704 1628016 5696712 1628088 5696712 1615440 5689168 +1630136 5704624 1628088 5696712 1630064 5704496 1630112 5704600 +1663944 5646256 1628120 5696720 1630136 5704624 1631912 5713400 +1628088 5696712 1628120 5696720 1663944 5646256 1663880 5646248 +1628120 5696720 1630136 5704624 1663944 5646256 1663880 5646248 +1628088 5696712 1628120 5696720 1663880 5646248 1663776 5646144 +1628120 5696720 1663944 5646256 1663880 5646248 1663776 5646144 +1628088 5696712 1630136 5704624 1628120 5696720 1663776 5646144 +1630136 5704624 1628120 5696720 1628088 5696712 1630064 5704496 +1630136 5704624 1663944 5646256 1628120 5696720 1630064 5704496 +1628088 5696712 1628712 5701448 1630064 5704496 1628120 5696720 +1628712 5701448 1629944 5704312 1630064 5704496 1628120 5696720 +1628088 5696712 1628632 5701384 1628712 5701448 1628120 5696720 +1628712 5701448 1630064 5704496 1628120 5696720 1628632 5701384 +1628120 5696720 1663776 5646144 1628088 5696712 1628632 5701384 +1630064 5704496 1630136 5704624 1628120 5696720 1628712 5701448 +1628088 5696712 1628288 5701200 1628632 5701384 1628120 5696720 +1628088 5696712 1627744 5696960 1628288 5701200 1628120 5696720 +1628088 5696712 1627880 5696848 1627744 5696960 1628120 5696720 +1627744 5696960 1628128 5701160 1628288 5701200 1628120 5696720 +1628088 5696712 1627928 5696800 1627880 5696848 1628120 5696720 +1627880 5696848 1627744 5696960 1628120 5696720 1627928 5696800 +1627880 5696848 1627784 5696912 1627744 5696960 1628120 5696720 +1628088 5696712 1627968 5696752 1627928 5696800 1628120 5696720 +1627928 5696800 1627880 5696848 1628120 5696720 1627968 5696752 +1628088 5696712 1628016 5696712 1627968 5696752 1628120 5696720 +1627744 5696960 1628288 5701200 1628120 5696720 1627880 5696848 +1628632 5701384 1628712 5701448 1628120 5696720 1628288 5701200 +1628088 5696712 1627968 5696752 1628120 5696720 1663776 5646144 +1628288 5701200 1628632 5701384 1628120 5696720 1627744 5696960 +1628088 5696712 1628120 5696720 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1628120 5696720 +1628120 5696720 1663880 5646248 1663776 5646144 1612640 5685184 +1628088 5696712 1627968 5696752 1628120 5696720 1612640 5685184 +1628088 5696712 1628120 5696720 1612640 5685184 1615440 5689168 +1630136 5704624 1628120 5696720 1630064 5704496 1630112 5704600 +1663944 5646256 1628152 5696760 1630136 5704624 1631912 5713400 +1628120 5696720 1628152 5696760 1663944 5646256 1663880 5646248 +1628120 5696720 1630136 5704624 1628152 5696760 1663880 5646248 +1630136 5704624 1628152 5696760 1628120 5696720 1630064 5704496 +1628152 5696760 1663880 5646248 1628120 5696720 1630064 5704496 +1628152 5696760 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1628152 5696760 1630064 5704496 +1628120 5696720 1628152 5696760 1663880 5646248 1663776 5646144 +1628120 5696720 1628712 5701448 1630064 5704496 1628152 5696760 +1628712 5701448 1629944 5704312 1630064 5704496 1628152 5696760 +1628120 5696720 1628712 5701448 1628152 5696760 1663880 5646248 +1630064 5704496 1630136 5704624 1628152 5696760 1628712 5701448 +1628120 5696720 1628632 5701384 1628712 5701448 1628152 5696760 +1628120 5696720 1628632 5701384 1628152 5696760 1663880 5646248 +1628120 5696720 1628288 5701200 1628632 5701384 1628152 5696760 +1628120 5696720 1628288 5701200 1628152 5696760 1663880 5646248 +1628632 5701384 1628712 5701448 1628152 5696760 1628288 5701200 +1628712 5701448 1630064 5704496 1628152 5696760 1628632 5701384 +1628120 5696720 1627744 5696960 1628288 5701200 1628152 5696760 +1628120 5696720 1627744 5696960 1628152 5696760 1663880 5646248 +1627744 5696960 1628128 5701160 1628288 5701200 1628152 5696760 +1628120 5696720 1627880 5696848 1627744 5696960 1628152 5696760 +1628120 5696720 1627928 5696800 1627880 5696848 1628152 5696760 +1628120 5696720 1627928 5696800 1628152 5696760 1663880 5646248 +1628120 5696720 1627968 5696752 1627928 5696800 1628152 5696760 +1627928 5696800 1627880 5696848 1628152 5696760 1627968 5696752 +1628120 5696720 1627968 5696752 1628152 5696760 1663880 5646248 +1627880 5696848 1627784 5696912 1627744 5696960 1628152 5696760 +1628120 5696720 1628088 5696712 1627968 5696752 1628152 5696760 +1628120 5696720 1628088 5696712 1628152 5696760 1663880 5646248 +1627968 5696752 1627928 5696800 1628152 5696760 1628088 5696712 +1628088 5696712 1628016 5696712 1627968 5696752 1628152 5696760 +1627880 5696848 1627744 5696960 1628152 5696760 1627928 5696800 +1628288 5701200 1628632 5701384 1628152 5696760 1627744 5696960 +1627744 5696960 1628288 5701200 1628152 5696760 1627880 5696848 +1630136 5704624 1628152 5696760 1630064 5704496 1630112 5704600 +1663944 5646256 1628184 5696808 1630136 5704624 1631912 5713400 +1628152 5696760 1628184 5696808 1663944 5646256 1663880 5646248 +1628152 5696760 1628184 5696808 1663880 5646248 1628120 5696720 +1628152 5696760 1630136 5704624 1628184 5696808 1663880 5646248 +1630136 5704624 1628184 5696808 1628152 5696760 1630064 5704496 +1628152 5696760 1628712 5701448 1630064 5704496 1628184 5696808 +1628712 5701448 1629944 5704312 1630064 5704496 1628184 5696808 +1628184 5696808 1663880 5646248 1628152 5696760 1628712 5701448 +1630064 5704496 1630136 5704624 1628184 5696808 1628712 5701448 +1628184 5696808 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1628184 5696808 1630064 5704496 +1628152 5696760 1628632 5701384 1628712 5701448 1628184 5696808 +1628712 5701448 1630064 5704496 1628184 5696808 1628632 5701384 +1628152 5696760 1628632 5701384 1628184 5696808 1663880 5646248 +1628152 5696760 1628288 5701200 1628632 5701384 1628184 5696808 +1628152 5696760 1628288 5701200 1628184 5696808 1663880 5646248 +1628152 5696760 1627744 5696960 1628288 5701200 1628184 5696808 +1628152 5696760 1627744 5696960 1628184 5696808 1663880 5646248 +1627744 5696960 1628128 5701160 1628288 5701200 1628184 5696808 +1627744 5696960 1626344 5698984 1628128 5701160 1628184 5696808 +1627744 5696960 1628128 5701160 1628184 5696808 1628152 5696760 +1628288 5701200 1628632 5701384 1628184 5696808 1628128 5701160 +1628632 5701384 1628712 5701448 1628184 5696808 1628288 5701200 +1628152 5696760 1627880 5696848 1627744 5696960 1628184 5696808 +1628152 5696760 1627880 5696848 1628184 5696808 1663880 5646248 +1627880 5696848 1627784 5696912 1627744 5696960 1628184 5696808 +1628152 5696760 1627928 5696800 1627880 5696848 1628184 5696808 +1628152 5696760 1627968 5696752 1627928 5696800 1628184 5696808 +1628152 5696760 1627968 5696752 1628184 5696808 1663880 5646248 +1628152 5696760 1628088 5696712 1627968 5696752 1628184 5696808 +1627928 5696800 1627880 5696848 1628184 5696808 1627968 5696752 +1627744 5696960 1628128 5701160 1628184 5696808 1627880 5696848 +1627880 5696848 1627744 5696960 1628184 5696808 1627928 5696800 +1630136 5704624 1628184 5696808 1630064 5704496 1630112 5704600 +1663944 5646256 1628224 5696896 1630136 5704624 1631912 5713400 +1628184 5696808 1628224 5696896 1663944 5646256 1663880 5646248 +1630136 5704624 1628224 5696896 1628184 5696808 1630064 5704496 +1628184 5696808 1628712 5701448 1630064 5704496 1628224 5696896 +1628712 5701448 1629944 5704312 1630064 5704496 1628224 5696896 +1628184 5696808 1628632 5701384 1628712 5701448 1628224 5696896 +1628712 5701448 1630064 5704496 1628224 5696896 1628632 5701384 +1628224 5696896 1663944 5646256 1628184 5696808 1628632 5701384 +1630064 5704496 1630136 5704624 1628224 5696896 1628712 5701448 +1630136 5704624 1663944 5646256 1628224 5696896 1630064 5704496 +1628184 5696808 1628288 5701200 1628632 5701384 1628224 5696896 +1628632 5701384 1628712 5701448 1628224 5696896 1628288 5701200 +1628184 5696808 1628288 5701200 1628224 5696896 1663944 5646256 +1628184 5696808 1628128 5701160 1628288 5701200 1628224 5696896 +1628184 5696808 1628128 5701160 1628224 5696896 1663944 5646256 +1628184 5696808 1627744 5696960 1628128 5701160 1628224 5696896 +1627744 5696960 1626344 5698984 1628128 5701160 1628224 5696896 +1626344 5698984 1627968 5701176 1628128 5701160 1628224 5696896 +1627744 5696960 1626296 5698872 1626344 5698984 1628224 5696896 +1628184 5696808 1627744 5696960 1628224 5696896 1663944 5646256 +1627744 5696960 1626344 5698984 1628224 5696896 1628184 5696808 +1628184 5696808 1627880 5696848 1627744 5696960 1628224 5696896 +1628184 5696808 1627880 5696848 1628224 5696896 1663944 5646256 +1627744 5696960 1626344 5698984 1628224 5696896 1627880 5696848 +1627880 5696848 1627784 5696912 1627744 5696960 1628224 5696896 +1628128 5701160 1628288 5701200 1628224 5696896 1626344 5698984 +1628288 5701200 1628632 5701384 1628224 5696896 1628128 5701160 +1628184 5696808 1627928 5696800 1627880 5696848 1628224 5696896 +1628184 5696808 1627928 5696800 1628224 5696896 1663944 5646256 +1628184 5696808 1627968 5696752 1627928 5696800 1628224 5696896 +1627880 5696848 1627744 5696960 1628224 5696896 1627928 5696800 +1630136 5704624 1628224 5696896 1630064 5704496 1630112 5704600 +1663944 5646256 1628272 5697000 1630136 5704624 1631912 5713400 +1628224 5696896 1628272 5697000 1663944 5646256 1628184 5696808 +1663944 5646256 1663880 5646248 1628184 5696808 1628272 5697000 +1628224 5696896 1630136 5704624 1628272 5697000 1628184 5696808 +1630136 5704624 1628272 5697000 1628224 5696896 1630064 5704496 +1628224 5696896 1628712 5701448 1630064 5704496 1628272 5697000 +1628712 5701448 1629944 5704312 1630064 5704496 1628272 5697000 +1628224 5696896 1628632 5701384 1628712 5701448 1628272 5697000 +1628224 5696896 1628288 5701200 1628632 5701384 1628272 5697000 +1628632 5701384 1628712 5701448 1628272 5697000 1628288 5701200 +1628712 5701448 1630064 5704496 1628272 5697000 1628632 5701384 +1628272 5697000 1628184 5696808 1628224 5696896 1628288 5701200 +1630064 5704496 1630136 5704624 1628272 5697000 1628712 5701448 +1628272 5697000 1630136 5704624 1663944 5646256 1628184 5696808 +1630136 5704624 1663944 5646256 1628272 5697000 1630064 5704496 +1628224 5696896 1628128 5701160 1628288 5701200 1628272 5697000 +1628288 5701200 1628632 5701384 1628272 5697000 1628128 5701160 +1628224 5696896 1628128 5701160 1628272 5697000 1628184 5696808 +1628224 5696896 1626344 5698984 1628128 5701160 1628272 5697000 +1628224 5696896 1627744 5696960 1626344 5698984 1628272 5697000 +1626344 5698984 1627968 5701176 1628128 5701160 1628272 5697000 +1627744 5696960 1626296 5698872 1626344 5698984 1628272 5697000 +1628224 5696896 1627744 5696960 1628272 5697000 1628184 5696808 +1628224 5696896 1627880 5696848 1627744 5696960 1628272 5697000 +1627744 5696960 1626344 5698984 1628272 5697000 1627880 5696848 +1628224 5696896 1627880 5696848 1628272 5697000 1628184 5696808 +1627880 5696848 1627784 5696912 1627744 5696960 1628272 5697000 +1627744 5696960 1626344 5698984 1628272 5697000 1627784 5696912 +1627880 5696848 1627784 5696912 1628272 5697000 1628224 5696896 +1628224 5696896 1627928 5696800 1627880 5696848 1628272 5697000 +1626344 5698984 1628128 5701160 1628272 5697000 1627744 5696960 +1628128 5701160 1628288 5701200 1628272 5697000 1626344 5698984 +1630136 5704624 1628272 5697000 1630064 5704496 1630112 5704600 +1663944 5646256 1628304 5697064 1630136 5704624 1631912 5713400 +1628272 5697000 1628304 5697064 1663944 5646256 1628184 5696808 +1663944 5646256 1663880 5646248 1628184 5696808 1628304 5697064 +1628272 5697000 1628304 5697064 1628184 5696808 1628224 5696896 +1628304 5697064 1663944 5646256 1628184 5696808 1628224 5696896 +1628272 5697000 1630136 5704624 1628304 5697064 1628224 5696896 +1630136 5704624 1628304 5697064 1628272 5697000 1630064 5704496 +1628272 5697000 1628712 5701448 1630064 5704496 1628304 5697064 +1628712 5701448 1629944 5704312 1630064 5704496 1628304 5697064 +1628272 5697000 1628632 5701384 1628712 5701448 1628304 5697064 +1628272 5697000 1628288 5701200 1628632 5701384 1628304 5697064 +1628272 5697000 1628128 5701160 1628288 5701200 1628304 5697064 +1628288 5701200 1628632 5701384 1628304 5697064 1628128 5701160 +1628632 5701384 1628712 5701448 1628304 5697064 1628288 5701200 +1628712 5701448 1630064 5704496 1628304 5697064 1628632 5701384 +1628304 5697064 1628224 5696896 1628272 5697000 1628128 5701160 +1630064 5704496 1630136 5704624 1628304 5697064 1628712 5701448 +1628304 5697064 1630136 5704624 1663944 5646256 1628184 5696808 +1630136 5704624 1663944 5646256 1628304 5697064 1630064 5704496 +1628272 5697000 1626344 5698984 1628128 5701160 1628304 5697064 +1626344 5698984 1627968 5701176 1628128 5701160 1628304 5697064 +1628128 5701160 1628288 5701200 1628304 5697064 1626344 5698984 +1628272 5697000 1626344 5698984 1628304 5697064 1628224 5696896 +1628272 5697000 1627744 5696960 1626344 5698984 1628304 5697064 +1628272 5697000 1627784 5696912 1627744 5696960 1628304 5697064 +1627744 5696960 1626296 5698872 1626344 5698984 1628304 5697064 +1628272 5697000 1627744 5696960 1628304 5697064 1628224 5696896 +1626344 5698984 1628128 5701160 1628304 5697064 1627744 5696960 +1630136 5704624 1628304 5697064 1630064 5704496 1630112 5704600 +1663944 5646256 1628328 5697136 1630136 5704624 1631912 5713400 +1628304 5697064 1628328 5697136 1663944 5646256 1628184 5696808 +1630136 5704624 1628328 5697136 1628304 5697064 1630064 5704496 +1628304 5697064 1628712 5701448 1630064 5704496 1628328 5697136 +1628712 5701448 1629944 5704312 1630064 5704496 1628328 5697136 +1628304 5697064 1628632 5701384 1628712 5701448 1628328 5697136 +1628304 5697064 1628288 5701200 1628632 5701384 1628328 5697136 +1628304 5697064 1628128 5701160 1628288 5701200 1628328 5697136 +1628304 5697064 1626344 5698984 1628128 5701160 1628328 5697136 +1626344 5698984 1627968 5701176 1628128 5701160 1628328 5697136 +1628128 5701160 1628288 5701200 1628328 5697136 1626344 5698984 +1628288 5701200 1628632 5701384 1628328 5697136 1628128 5701160 +1628632 5701384 1628712 5701448 1628328 5697136 1628288 5701200 +1628712 5701448 1630064 5704496 1628328 5697136 1628632 5701384 +1628328 5697136 1663944 5646256 1628304 5697064 1626344 5698984 +1630064 5704496 1630136 5704624 1628328 5697136 1628712 5701448 +1630136 5704624 1663944 5646256 1628328 5697136 1630064 5704496 +1628304 5697064 1627744 5696960 1626344 5698984 1628328 5697136 +1627744 5696960 1626296 5698872 1626344 5698984 1628328 5697136 +1626344 5698984 1628128 5701160 1628328 5697136 1627744 5696960 +1628304 5697064 1627744 5696960 1628328 5697136 1663944 5646256 +1628304 5697064 1628272 5697000 1627744 5696960 1628328 5697136 +1630136 5704624 1628328 5697136 1630064 5704496 1630112 5704600 +1663944 5646256 1628376 5697224 1630136 5704624 1631912 5713400 +1628328 5697136 1628376 5697224 1663944 5646256 1628304 5697064 +1663944 5646256 1628184 5696808 1628304 5697064 1628376 5697224 +1628328 5697136 1630136 5704624 1628376 5697224 1628304 5697064 +1630136 5704624 1628376 5697224 1628328 5697136 1630064 5704496 +1628328 5697136 1628712 5701448 1630064 5704496 1628376 5697224 +1628712 5701448 1629944 5704312 1630064 5704496 1628376 5697224 +1628328 5697136 1628632 5701384 1628712 5701448 1628376 5697224 +1628328 5697136 1628288 5701200 1628632 5701384 1628376 5697224 +1628328 5697136 1628128 5701160 1628288 5701200 1628376 5697224 +1628328 5697136 1626344 5698984 1628128 5701160 1628376 5697224 +1626344 5698984 1627968 5701176 1628128 5701160 1628376 5697224 +1628328 5697136 1627744 5696960 1626344 5698984 1628376 5697224 +1627744 5696960 1626296 5698872 1626344 5698984 1628376 5697224 +1627744 5696960 1626296 5698872 1628376 5697224 1628328 5697136 +1626344 5698984 1628128 5701160 1628376 5697224 1626296 5698872 +1628128 5701160 1628288 5701200 1628376 5697224 1626344 5698984 +1628288 5701200 1628632 5701384 1628376 5697224 1628128 5701160 +1628632 5701384 1628712 5701448 1628376 5697224 1628288 5701200 +1628712 5701448 1630064 5704496 1628376 5697224 1628632 5701384 +1628376 5697224 1628304 5697064 1628328 5697136 1627744 5696960 +1630064 5704496 1630136 5704624 1628376 5697224 1628712 5701448 +1628376 5697224 1630136 5704624 1663944 5646256 1628304 5697064 +1630136 5704624 1663944 5646256 1628376 5697224 1630064 5704496 +1627744 5696960 1626248 5698816 1626296 5698872 1628376 5697224 +1628328 5697136 1628304 5697064 1627744 5696960 1628376 5697224 +1630136 5704624 1628376 5697224 1630064 5704496 1630112 5704600 +1663944 5646256 1628416 5697304 1630136 5704624 1631912 5713400 +1628376 5697224 1628416 5697304 1663944 5646256 1628304 5697064 +1663944 5646256 1628184 5696808 1628304 5697064 1628416 5697304 +1628376 5697224 1628416 5697304 1628304 5697064 1628328 5697136 +1628376 5697224 1630136 5704624 1628416 5697304 1628304 5697064 +1630136 5704624 1628416 5697304 1628376 5697224 1630064 5704496 +1628376 5697224 1628712 5701448 1630064 5704496 1628416 5697304 +1628712 5701448 1629944 5704312 1630064 5704496 1628416 5697304 +1628376 5697224 1628632 5701384 1628712 5701448 1628416 5697304 +1628376 5697224 1628288 5701200 1628632 5701384 1628416 5697304 +1628376 5697224 1628128 5701160 1628288 5701200 1628416 5697304 +1628376 5697224 1626344 5698984 1628128 5701160 1628416 5697304 +1626344 5698984 1627968 5701176 1628128 5701160 1628416 5697304 +1628376 5697224 1626296 5698872 1626344 5698984 1628416 5697304 +1628376 5697224 1627744 5696960 1626296 5698872 1628416 5697304 +1628376 5697224 1628328 5697136 1627744 5696960 1628416 5697304 +1626296 5698872 1626344 5698984 1628416 5697304 1627744 5696960 +1626344 5698984 1628128 5701160 1628416 5697304 1626296 5698872 +1628128 5701160 1628288 5701200 1628416 5697304 1626344 5698984 +1628288 5701200 1628632 5701384 1628416 5697304 1628128 5701160 +1628632 5701384 1628712 5701448 1628416 5697304 1628288 5701200 +1628712 5701448 1630064 5704496 1628416 5697304 1628632 5701384 +1628416 5697304 1628304 5697064 1628376 5697224 1627744 5696960 +1630064 5704496 1630136 5704624 1628416 5697304 1628712 5701448 +1628416 5697304 1630136 5704624 1663944 5646256 1628304 5697064 +1630136 5704624 1663944 5646256 1628416 5697304 1630064 5704496 +1627744 5696960 1626248 5698816 1626296 5698872 1628416 5697304 +1630136 5704624 1628416 5697304 1630064 5704496 1630112 5704600 +1663944 5646256 1628464 5697392 1630136 5704624 1631912 5713400 +1628416 5697304 1628464 5697392 1663944 5646256 1628304 5697064 +1663944 5646256 1628184 5696808 1628304 5697064 1628464 5697392 +1663944 5646256 1663880 5646248 1628184 5696808 1628464 5697392 +1628184 5696808 1628224 5696896 1628304 5697064 1628464 5697392 +1628416 5697304 1628464 5697392 1628304 5697064 1628376 5697224 +1628304 5697064 1628328 5697136 1628376 5697224 1628464 5697392 +1628304 5697064 1628376 5697224 1628464 5697392 1628184 5696808 +1628416 5697304 1630136 5704624 1628464 5697392 1628376 5697224 +1630136 5704624 1628464 5697392 1628416 5697304 1630064 5704496 +1628416 5697304 1628712 5701448 1630064 5704496 1628464 5697392 +1628712 5701448 1629944 5704312 1630064 5704496 1628464 5697392 +1628416 5697304 1628632 5701384 1628712 5701448 1628464 5697392 +1628416 5697304 1628288 5701200 1628632 5701384 1628464 5697392 +1628416 5697304 1628128 5701160 1628288 5701200 1628464 5697392 +1628416 5697304 1626344 5698984 1628128 5701160 1628464 5697392 +1626344 5698984 1627968 5701176 1628128 5701160 1628464 5697392 +1628416 5697304 1626296 5698872 1626344 5698984 1628464 5697392 +1628416 5697304 1627744 5696960 1626296 5698872 1628464 5697392 +1628416 5697304 1628376 5697224 1627744 5696960 1628464 5697392 +1626296 5698872 1626344 5698984 1628464 5697392 1627744 5696960 +1626344 5698984 1628128 5701160 1628464 5697392 1626296 5698872 +1628128 5701160 1628288 5701200 1628464 5697392 1626344 5698984 +1628288 5701200 1628632 5701384 1628464 5697392 1628128 5701160 +1628632 5701384 1628712 5701448 1628464 5697392 1628288 5701200 +1628712 5701448 1630064 5704496 1628464 5697392 1628632 5701384 +1628464 5697392 1628376 5697224 1628416 5697304 1627744 5696960 +1630064 5704496 1630136 5704624 1628464 5697392 1628712 5701448 +1628464 5697392 1630136 5704624 1663944 5646256 1628184 5696808 +1630136 5704624 1663944 5646256 1628464 5697392 1630064 5704496 +1627744 5696960 1626248 5698816 1626296 5698872 1628464 5697392 +1630136 5704624 1628464 5697392 1630064 5704496 1630112 5704600 +1663944 5646256 1628488 5697448 1630136 5704624 1631912 5713400 +1628464 5697392 1628488 5697448 1663944 5646256 1628184 5696808 +1630136 5704624 1628488 5697448 1628464 5697392 1630064 5704496 +1628464 5697392 1628712 5701448 1630064 5704496 1628488 5697448 +1628712 5701448 1629944 5704312 1630064 5704496 1628488 5697448 +1628464 5697392 1628632 5701384 1628712 5701448 1628488 5697448 +1628464 5697392 1628288 5701200 1628632 5701384 1628488 5697448 +1628464 5697392 1628128 5701160 1628288 5701200 1628488 5697448 +1628464 5697392 1626344 5698984 1628128 5701160 1628488 5697448 +1626344 5698984 1627968 5701176 1628128 5701160 1628488 5697448 +1628464 5697392 1626296 5698872 1626344 5698984 1628488 5697448 +1628464 5697392 1627744 5696960 1626296 5698872 1628488 5697448 +1628464 5697392 1628416 5697304 1627744 5696960 1628488 5697448 +1626296 5698872 1626344 5698984 1628488 5697448 1627744 5696960 +1626344 5698984 1628128 5701160 1628488 5697448 1626296 5698872 +1628128 5701160 1628288 5701200 1628488 5697448 1626344 5698984 +1628288 5701200 1628632 5701384 1628488 5697448 1628128 5701160 +1628632 5701384 1628712 5701448 1628488 5697448 1628288 5701200 +1628712 5701448 1630064 5704496 1628488 5697448 1628632 5701384 +1628488 5697448 1663944 5646256 1628464 5697392 1627744 5696960 +1630064 5704496 1630136 5704624 1628488 5697448 1628712 5701448 +1630136 5704624 1663944 5646256 1628488 5697448 1630064 5704496 +1627744 5696960 1626248 5698816 1626296 5698872 1628488 5697448 +1630136 5704624 1628488 5697448 1630064 5704496 1630112 5704600 +1628288 5701200 1628488 5697528 1628488 5697448 1628128 5701160 +1628488 5697448 1626344 5698984 1628128 5701160 1628488 5697528 +1626344 5698984 1627968 5701176 1628128 5701160 1628488 5697528 +1628488 5697448 1626296 5698872 1626344 5698984 1628488 5697528 +1628488 5697448 1627744 5696960 1626296 5698872 1628488 5697528 +1628488 5697448 1628464 5697392 1627744 5696960 1628488 5697528 +1628464 5697392 1628416 5697304 1627744 5696960 1628488 5697528 +1628416 5697304 1628376 5697224 1627744 5696960 1628488 5697528 +1628464 5697392 1628416 5697304 1628488 5697528 1628488 5697448 +1627744 5696960 1626296 5698872 1628488 5697528 1628416 5697304 +1626296 5698872 1626344 5698984 1628488 5697528 1627744 5696960 +1626344 5698984 1628128 5701160 1628488 5697528 1626296 5698872 +1628128 5701160 1628288 5701200 1628488 5697528 1626344 5698984 +1628488 5697448 1628488 5697528 1628632 5701384 1628712 5701448 +1628488 5697448 1628488 5697528 1628712 5701448 1630064 5704496 +1628712 5701448 1629944 5704312 1630064 5704496 1628488 5697528 +1628488 5697528 1628632 5701384 1628712 5701448 1630064 5704496 +1628488 5697448 1628488 5697528 1630064 5704496 1630136 5704624 +1628488 5697528 1628712 5701448 1630064 5704496 1630136 5704624 +1628488 5697528 1630136 5704624 1628488 5697448 1628464 5697392 +1628488 5697448 1628488 5697528 1630136 5704624 1663944 5646256 +1628488 5697528 1628288 5701200 1628632 5701384 1628712 5701448 +1628288 5701200 1628632 5701384 1628488 5697528 1628128 5701160 +1627744 5696960 1626248 5698816 1626296 5698872 1628488 5697528 +1630064 5704496 1630112 5704600 1630136 5704624 1628488 5697528 +1627744 5696960 1628456 5697544 1628488 5697528 1628416 5697304 +1627744 5696960 1628456 5697544 1628416 5697304 1628376 5697224 +1627744 5696960 1628456 5697544 1628376 5697224 1628328 5697136 +1628488 5697528 1628464 5697392 1628416 5697304 1628456 5697544 +1628488 5697528 1628488 5697448 1628464 5697392 1628456 5697544 +1628464 5697392 1628416 5697304 1628456 5697544 1628488 5697448 +1628456 5697544 1628464 5697392 1628416 5697304 1628376 5697224 +1628488 5697528 1628456 5697544 1626296 5698872 1626344 5698984 +1628488 5697528 1628456 5697544 1626344 5698984 1628128 5701160 +1626344 5698984 1627968 5701176 1628128 5701160 1628456 5697544 +1628456 5697544 1626296 5698872 1626344 5698984 1628128 5701160 +1628488 5697528 1628456 5697544 1628128 5701160 1628288 5701200 +1628456 5697544 1626344 5698984 1628128 5701160 1628288 5701200 +1628456 5697544 1628288 5701200 1628488 5697528 1628488 5697448 +1628488 5697528 1628456 5697544 1628288 5701200 1628632 5701384 +1628456 5697544 1627744 5696960 1626296 5698872 1626344 5698984 +1627744 5696960 1626296 5698872 1628456 5697544 1628376 5697224 +1626296 5698872 1628456 5697544 1627744 5696960 1626248 5698816 +1628456 5697544 1628424 5697544 1626296 5698872 1626344 5698984 +1628456 5697544 1628424 5697544 1626344 5698984 1628128 5701160 +1626344 5698984 1627968 5701176 1628128 5701160 1628424 5697544 +1628456 5697544 1628424 5697544 1628128 5701160 1628288 5701200 +1628424 5697544 1626296 5698872 1626344 5698984 1628128 5701160 +1628456 5697544 1627744 5696960 1628424 5697544 1628128 5701160 +1627744 5696960 1628424 5697544 1628456 5697544 1628376 5697224 +1628456 5697544 1628416 5697304 1628376 5697224 1628424 5697544 +1627744 5696960 1628424 5697544 1628376 5697224 1628328 5697136 +1628456 5697544 1628464 5697392 1628416 5697304 1628424 5697544 +1628416 5697304 1628376 5697224 1628424 5697544 1628464 5697392 +1628456 5697544 1628488 5697448 1628464 5697392 1628424 5697544 +1628456 5697544 1628488 5697528 1628488 5697448 1628424 5697544 +1628464 5697392 1628416 5697304 1628424 5697544 1628488 5697448 +1628424 5697544 1628128 5701160 1628456 5697544 1628488 5697448 +1628376 5697224 1627744 5696960 1628424 5697544 1628416 5697304 +1628424 5697544 1627744 5696960 1626296 5698872 1626344 5698984 +1627744 5696960 1626296 5698872 1628424 5697544 1628376 5697224 +1626296 5698872 1628424 5697544 1627744 5696960 1626248 5698816 +1628424 5697544 1628376 5697520 1626296 5698872 1626344 5698984 +1628424 5697544 1628376 5697520 1626344 5698984 1628128 5701160 +1628424 5697544 1627744 5696960 1628376 5697520 1626344 5698984 +1627744 5696960 1628376 5697520 1628424 5697544 1628376 5697224 +1627744 5696960 1628376 5697520 1628376 5697224 1628328 5697136 +1628424 5697544 1628416 5697304 1628376 5697224 1628376 5697520 +1628424 5697544 1628464 5697392 1628416 5697304 1628376 5697520 +1628424 5697544 1628488 5697448 1628464 5697392 1628376 5697520 +1628464 5697392 1628416 5697304 1628376 5697520 1628488 5697448 +1628424 5697544 1628456 5697544 1628488 5697448 1628376 5697520 +1628416 5697304 1628376 5697224 1628376 5697520 1628464 5697392 +1628376 5697520 1626344 5698984 1628424 5697544 1628488 5697448 +1628376 5697520 1628416 5697304 1628376 5697224 1628328 5697136 +1628376 5697520 1627744 5696960 1626296 5698872 1626344 5698984 +1627744 5696960 1626296 5698872 1628376 5697520 1628328 5697136 +1626296 5698872 1628376 5697520 1627744 5696960 1626248 5698816 +1627744 5696960 1628376 5697520 1628328 5697136 1628304 5697064 +1628376 5697520 1628288 5697472 1626296 5698872 1626344 5698984 +1628376 5697520 1628288 5697472 1626344 5698984 1628424 5697544 +1628376 5697520 1627744 5696960 1628288 5697472 1626344 5698984 +1627744 5696960 1628288 5697472 1628376 5697520 1628328 5697136 +1628376 5697520 1628376 5697224 1628328 5697136 1628288 5697472 +1628376 5697520 1628416 5697304 1628376 5697224 1628288 5697472 +1628376 5697224 1628328 5697136 1628288 5697472 1628416 5697304 +1628376 5697520 1628464 5697392 1628416 5697304 1628288 5697472 +1628376 5697520 1628488 5697448 1628464 5697392 1628288 5697472 +1628416 5697304 1628376 5697224 1628288 5697472 1628464 5697392 +1628288 5697472 1626344 5698984 1628376 5697520 1628464 5697392 +1628328 5697136 1627744 5696960 1628288 5697472 1628376 5697224 +1628288 5697472 1627744 5696960 1626296 5698872 1626344 5698984 +1627744 5696960 1626296 5698872 1628288 5697472 1628328 5697136 +1626296 5698872 1628288 5697472 1627744 5696960 1626248 5698816 +1627744 5696960 1628288 5697472 1628328 5697136 1628304 5697064 +1628288 5697472 1628208 5697424 1626296 5698872 1626344 5698984 +1628288 5697472 1628208 5697424 1626344 5698984 1628376 5697520 +1628288 5697472 1627744 5696960 1628208 5697424 1626344 5698984 +1627744 5696960 1628208 5697424 1628288 5697472 1628328 5697136 +1628288 5697472 1628376 5697224 1628328 5697136 1628208 5697424 +1628288 5697472 1628416 5697304 1628376 5697224 1628208 5697424 +1628288 5697472 1628464 5697392 1628416 5697304 1628208 5697424 +1628376 5697224 1628328 5697136 1628208 5697424 1628416 5697304 +1628208 5697424 1626344 5698984 1628288 5697472 1628416 5697304 +1628328 5697136 1627744 5696960 1628208 5697424 1628376 5697224 +1628208 5697424 1627744 5696960 1626296 5698872 1626344 5698984 +1627744 5696960 1626296 5698872 1628208 5697424 1628328 5697136 +1626296 5698872 1628208 5697424 1627744 5696960 1626248 5698816 +1627744 5696960 1625936 5698488 1626248 5698816 1628208 5697424 +1626296 5698872 1626344 5698984 1628208 5697424 1626248 5698816 +1628208 5697424 1628328 5697136 1627744 5696960 1626248 5698816 +1627744 5696960 1628208 5697424 1628328 5697136 1628304 5697064 +1628208 5697424 1628376 5697224 1628328 5697136 1628304 5697064 +1627744 5696960 1626248 5698816 1628208 5697424 1628304 5697064 +1627744 5696960 1628208 5697424 1628304 5697064 1628272 5697000 +1627744 5696960 1628208 5697424 1628272 5697000 1627784 5696912 +1627744 5696960 1626248 5698816 1628208 5697424 1628272 5697000 +1628208 5697424 1628328 5697136 1628304 5697064 1628272 5697000 +1626248 5698816 1628112 5697352 1627744 5696960 1625936 5698488 +1627744 5696960 1628112 5697352 1628208 5697424 1628272 5697000 +1627744 5696960 1628112 5697352 1628272 5697000 1627784 5696912 +1628112 5697352 1626248 5698816 1628208 5697424 1628272 5697000 +1628112 5697352 1628208 5697424 1628272 5697000 1627784 5696912 +1627744 5696960 1626248 5698816 1628112 5697352 1627784 5696912 +1628272 5697000 1627880 5696848 1627784 5696912 1628112 5697352 +1627784 5696912 1627744 5696960 1628112 5697352 1627880 5696848 +1628272 5697000 1627880 5696848 1628112 5697352 1628208 5697424 +1628272 5697000 1628224 5696896 1627880 5696848 1628112 5697352 +1628208 5697424 1628112 5697352 1626248 5698816 1626296 5698872 +1628208 5697424 1628112 5697352 1626296 5698872 1626344 5698984 +1628208 5697424 1628272 5697000 1628112 5697352 1626296 5698872 +1628112 5697352 1627744 5696960 1626248 5698816 1626296 5698872 +1628208 5697424 1628304 5697064 1628272 5697000 1628112 5697352 +1628208 5697424 1628304 5697064 1628112 5697352 1626296 5698872 +1628272 5697000 1627880 5696848 1628112 5697352 1628304 5697064 +1628208 5697424 1628328 5697136 1628304 5697064 1628112 5697352 +1628208 5697424 1628376 5697224 1628328 5697136 1628112 5697352 +1628208 5697424 1628416 5697304 1628376 5697224 1628112 5697352 +1628208 5697424 1628376 5697224 1628112 5697352 1626296 5698872 +1628304 5697064 1628272 5697000 1628112 5697352 1628328 5697136 +1628328 5697136 1628304 5697064 1628112 5697352 1628376 5697224 +1626248 5698816 1628024 5697288 1627744 5696960 1625936 5698488 +1628112 5697352 1628024 5697288 1626248 5698816 1626296 5698872 +1628112 5697352 1627744 5696960 1628024 5697288 1626296 5698872 +1627744 5696960 1628024 5697288 1628112 5697352 1627784 5696912 +1628112 5697352 1627880 5696848 1627784 5696912 1628024 5697288 +1628024 5697288 1626296 5698872 1628112 5697352 1627880 5696848 +1627784 5696912 1627744 5696960 1628024 5697288 1627880 5696848 +1628024 5697288 1627744 5696960 1626248 5698816 1626296 5698872 +1627744 5696960 1626248 5698816 1628024 5697288 1627784 5696912 +1628112 5697352 1628272 5697000 1627880 5696848 1628024 5697288 +1627880 5696848 1627784 5696912 1628024 5697288 1628272 5697000 +1628112 5697352 1628304 5697064 1628272 5697000 1628024 5697288 +1628112 5697352 1628304 5697064 1628024 5697288 1626296 5698872 +1628272 5697000 1628224 5696896 1627880 5696848 1628024 5697288 +1627880 5696848 1627784 5696912 1628024 5697288 1628224 5696896 +1628272 5697000 1628224 5696896 1628024 5697288 1628304 5697064 +1628112 5697352 1628024 5697288 1626296 5698872 1628208 5697424 +1628224 5696896 1627928 5696800 1627880 5696848 1628024 5697288 +1628112 5697352 1628328 5697136 1628304 5697064 1628024 5697288 +1628304 5697064 1628272 5697000 1628024 5697288 1628328 5697136 +1628112 5697352 1628328 5697136 1628024 5697288 1626296 5698872 +1628112 5697352 1628376 5697224 1628328 5697136 1628024 5697288 +1626248 5698816 1627944 5697240 1627744 5696960 1625936 5698488 +1627744 5696960 1625808 5698384 1625936 5698488 1627944 5697240 +1626248 5698816 1627944 5697240 1625936 5698488 1626032 5698672 +1628024 5697288 1627944 5697240 1626248 5698816 1626296 5698872 +1628024 5697288 1627944 5697240 1626296 5698872 1628112 5697352 +1627944 5697240 1626248 5698816 1626296 5698872 1628112 5697352 +1628024 5697288 1627744 5696960 1627944 5697240 1628112 5697352 +1627744 5696960 1627944 5697240 1628024 5697288 1627784 5696912 +1628024 5697288 1627880 5696848 1627784 5696912 1627944 5697240 +1628024 5697288 1628224 5696896 1627880 5696848 1627944 5697240 +1627880 5696848 1627784 5696912 1627944 5697240 1628224 5696896 +1627944 5697240 1628112 5697352 1628024 5697288 1628224 5696896 +1627784 5696912 1627744 5696960 1627944 5697240 1627880 5696848 +1626248 5698816 1626296 5698872 1627944 5697240 1625936 5698488 +1627944 5697240 1627784 5696912 1627744 5696960 1625936 5698488 +1628024 5697288 1628272 5697000 1628224 5696896 1627944 5697240 +1628224 5696896 1627880 5696848 1627944 5697240 1628272 5697000 +1628024 5697288 1628272 5697000 1627944 5697240 1628112 5697352 +1628024 5697288 1628304 5697064 1628272 5697000 1627944 5697240 +1626296 5698872 1628208 5697424 1628112 5697352 1627944 5697240 +1628224 5696896 1627928 5696800 1627880 5696848 1627944 5697240 +1625936 5698488 1627864 5697160 1627744 5696960 1625808 5698384 +1627944 5697240 1627864 5697160 1625936 5698488 1626248 5698816 +1625936 5698488 1626032 5698672 1626248 5698816 1627864 5697160 +1627944 5697240 1627864 5697160 1626248 5698816 1626296 5698872 +1627944 5697240 1627744 5696960 1627864 5697160 1626248 5698816 +1627744 5696960 1627864 5697160 1627944 5697240 1627784 5696912 +1627944 5697240 1627880 5696848 1627784 5696912 1627864 5697160 +1627944 5697240 1628224 5696896 1627880 5696848 1627864 5697160 +1627944 5697240 1628272 5697000 1628224 5696896 1627864 5697160 +1628224 5696896 1627880 5696848 1627864 5697160 1628272 5697000 +1627880 5696848 1627784 5696912 1627864 5697160 1628224 5696896 +1627864 5697160 1626248 5698816 1627944 5697240 1628272 5697000 +1627744 5696960 1625936 5698488 1627864 5697160 1627784 5696912 +1627784 5696912 1627744 5696960 1627864 5697160 1627880 5696848 +1627864 5697160 1627744 5696960 1625936 5698488 1626248 5698816 +1627944 5697240 1628024 5697288 1628272 5697000 1627864 5697160 +1628224 5696896 1627928 5696800 1627880 5696848 1627864 5697160 +1625936 5698488 1627824 5697120 1627744 5696960 1625808 5698384 +1627744 5696960 1627824 5697120 1627864 5697160 1627784 5696912 +1627744 5696960 1625936 5698488 1627824 5697120 1627784 5696912 +1627824 5697120 1625936 5698488 1627864 5697160 1627784 5696912 +1627864 5697160 1627880 5696848 1627784 5696912 1627824 5697120 +1627864 5697160 1628224 5696896 1627880 5696848 1627824 5697120 +1627864 5697160 1627880 5696848 1627824 5697120 1625936 5698488 +1627784 5696912 1627744 5696960 1627824 5697120 1627880 5696848 +1627864 5697160 1627824 5697120 1625936 5698488 1626248 5698816 +1627864 5697160 1627824 5697120 1626248 5698816 1627944 5697240 +1625936 5698488 1626032 5698672 1626248 5698816 1627824 5697120 +1627864 5697160 1627880 5696848 1627824 5697120 1626248 5698816 +1627824 5697120 1627744 5696960 1625936 5698488 1626248 5698816 +1625936 5698488 1627784 5697056 1627744 5696960 1625808 5698384 +1627744 5696960 1627784 5697056 1627824 5697120 1627784 5696912 +1627784 5697056 1625936 5698488 1627824 5697120 1627784 5696912 +1625936 5698488 1627824 5697120 1627784 5697056 1625808 5698384 +1627784 5697056 1627784 5696912 1627744 5696960 1625808 5698384 +1627824 5697120 1627880 5696848 1627784 5696912 1627784 5697056 +1627824 5697120 1627880 5696848 1627784 5697056 1625936 5698488 +1627784 5696912 1627744 5696960 1627784 5697056 1627880 5696848 +1627824 5697120 1627784 5697056 1625936 5698488 1626248 5698816 +1627824 5697120 1627864 5697160 1627880 5696848 1627784 5697056 +1627744 5696960 1625776 5698376 1625808 5698384 1627784 5697056 +1627784 5697056 1627744 5697000 1625808 5698384 1625936 5698488 +1627784 5697056 1627744 5697000 1625936 5698488 1627824 5697120 +1627744 5697000 1625808 5698384 1625936 5698488 1627824 5697120 +1627784 5697056 1627744 5696960 1627744 5697000 1627824 5697120 +1627744 5696960 1627744 5697000 1627784 5697056 1627784 5696912 +1627784 5697056 1627880 5696848 1627784 5696912 1627744 5697000 +1627744 5697000 1627824 5697120 1627784 5697056 1627784 5696912 +1627744 5697000 1627744 5696960 1625808 5698384 1625936 5698488 +1627744 5696960 1625808 5698384 1627744 5697000 1627784 5696912 +1625936 5698488 1626248 5698816 1627824 5697120 1627744 5697000 +1625808 5698384 1627744 5697000 1627744 5696960 1625776 5698376 +1623464 5696976 1626488 5696072 1615488 5689272 1623376 5696968 +1615488 5689272 1618392 5694976 1623376 5696968 1626488 5696072 +1623376 5696968 1623464 5696976 1626488 5696072 1618392 5694976 +1615488 5689272 1626488 5696072 1628016 5696712 1628048 5696704 +1623464 5696976 1628016 5696712 1626488 5696072 1623376 5696968 +1626488 5696072 1628048 5696704 1615488 5689272 1618392 5694976 +1626488 5696072 1623464 5696976 1628016 5696712 1628048 5696704 +1628016 5696712 1626488 5696072 1623464 5696976 1623632 5697024 +1628016 5696712 1626488 5696072 1623632 5697024 1623704 5697048 +1628016 5696712 1626488 5696072 1623704 5697048 1627968 5696752 +1626488 5696072 1623632 5697024 1623704 5697048 1627968 5696752 +1626488 5696072 1623376 5696968 1623464 5696976 1623632 5697024 +1628016 5696712 1628048 5696704 1626488 5696072 1627968 5696752 +1623704 5697048 1627784 5696912 1627968 5696752 1626488 5696072 +1623704 5697048 1627784 5696912 1626488 5696072 1623632 5697024 +1627968 5696752 1628016 5696712 1626488 5696072 1627784 5696912 +1623464 5696976 1623496 5696992 1623632 5697024 1626488 5696072 +1627784 5696912 1627928 5696800 1627968 5696752 1626488 5696072 +1623704 5697048 1623728 5697072 1627784 5696912 1626488 5696072 +1623704 5697048 1623728 5697072 1626488 5696072 1623632 5697024 +1627784 5696912 1627968 5696752 1626488 5696072 1623728 5697072 +1626488 5696072 1623464 5696976 1623632 5697024 1623704 5697048 +1615488 5689272 1626488 5696072 1628048 5696704 1615440 5689168 +1626488 5696072 1628016 5696712 1628048 5696704 1615440 5689168 +1615488 5689272 1618392 5694976 1626488 5696072 1615440 5689168 +1628048 5696704 1628088 5696712 1615440 5689168 1626488 5696072 +1628048 5696704 1628088 5696712 1626488 5696072 1628016 5696712 +1615440 5689168 1615488 5689272 1626488 5696072 1628088 5696712 +1628088 5696712 1612640 5685184 1615440 5689168 1626488 5696072 +1612640 5685184 1615392 5689120 1615440 5689168 1626488 5696072 +1615440 5689168 1615488 5689272 1626488 5696072 1612640 5685184 +1628088 5696712 1612640 5685184 1626488 5696072 1628048 5696704 +1628088 5696712 1628120 5696720 1612640 5685184 1626488 5696072 +1628088 5696712 1628120 5696720 1626488 5696072 1628048 5696704 +1612640 5685184 1615440 5689168 1626488 5696072 1628120 5696720 +1628120 5696720 1663776 5646144 1612640 5685184 1626488 5696072 +1663776 5646144 1612616 5685152 1612640 5685184 1626488 5696072 +1612640 5685184 1615440 5689168 1626488 5696072 1663776 5646144 +1628120 5696720 1663880 5646248 1663776 5646144 1626488 5696072 +1628120 5696720 1663776 5646144 1626488 5696072 1628088 5696712 +1618392 5694976 1618456 5695040 1623376 5696968 1626488 5696072 +1618392 5694976 1618456 5695040 1626488 5696072 1615488 5689272 +1623376 5696968 1623464 5696976 1626488 5696072 1618456 5695040 +1618456 5695040 1623304 5696976 1623376 5696968 1626488 5696072 +1615488 5689272 1615488 5689328 1618392 5694976 1626488 5696072 +1623728 5697072 1627744 5696960 1627784 5696912 1626488 5696072 +1623728 5697072 1623760 5697136 1627744 5696960 1626488 5696072 +1627784 5696912 1627968 5696752 1626488 5696072 1627744 5696960 +1623760 5697136 1625776 5698376 1627744 5696960 1626488 5696072 +1625776 5698376 1625808 5698384 1627744 5696960 1626488 5696072 +1623760 5697136 1625776 5698376 1626488 5696072 1623728 5697072 +1625776 5698376 1625808 5698384 1626488 5696072 1623760 5697136 +1623728 5697072 1623760 5697136 1626488 5696072 1623704 5697048 +1623760 5697136 1625240 5698480 1625776 5698376 1626488 5696072 +1627744 5696960 1627784 5696912 1626488 5696072 1625808 5698384 +1625808 5698384 1627744 5697000 1627744 5696960 1626488 5696072 +1625808 5698384 1625936 5698488 1627744 5697000 1626488 5696072 +1625808 5698384 1627744 5697000 1626488 5696072 1625776 5698376 +1627744 5696960 1627784 5696912 1626488 5696072 1627744 5697000 +1663776 5646144 1626520 5696056 1628120 5696720 1663880 5646248 +1628120 5696720 1626520 5696056 1626488 5696072 1628088 5696712 +1626520 5696056 1663776 5646144 1626488 5696072 1628088 5696712 +1628120 5696720 1663776 5646144 1626520 5696056 1628088 5696712 +1626488 5696072 1628048 5696704 1628088 5696712 1626520 5696056 +1626488 5696072 1628016 5696712 1628048 5696704 1626520 5696056 +1626488 5696072 1628016 5696712 1626520 5696056 1663776 5646144 +1626488 5696072 1627968 5696752 1628016 5696712 1626520 5696056 +1628016 5696712 1628048 5696704 1626520 5696056 1627968 5696752 +1626488 5696072 1627784 5696912 1627968 5696752 1626520 5696056 +1626488 5696072 1627784 5696912 1626520 5696056 1663776 5646144 +1627968 5696752 1628016 5696712 1626520 5696056 1627784 5696912 +1626488 5696072 1627744 5696960 1627784 5696912 1626520 5696056 +1627784 5696912 1627968 5696752 1626520 5696056 1627744 5696960 +1626488 5696072 1627744 5696960 1626520 5696056 1663776 5646144 +1627784 5696912 1627928 5696800 1627968 5696752 1626520 5696056 +1628048 5696704 1628088 5696712 1626520 5696056 1628016 5696712 +1628088 5696712 1628120 5696720 1626520 5696056 1628048 5696704 +1626488 5696072 1626520 5696056 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1626520 5696056 +1626488 5696072 1627744 5696960 1626520 5696056 1612640 5685184 +1626520 5696056 1628120 5696720 1663776 5646144 1612640 5685184 +1626488 5696072 1626520 5696056 1612640 5685184 1615440 5689168 +1626488 5696072 1627744 5696960 1626520 5696056 1615440 5689168 +1612640 5685184 1615392 5689120 1615440 5689168 1626520 5696056 +1626488 5696072 1626520 5696056 1615440 5689168 1615488 5689272 +1626488 5696072 1626520 5696056 1615488 5689272 1618392 5694976 +1626488 5696072 1626520 5696056 1618392 5694976 1618456 5695040 +1626488 5696072 1627744 5696960 1626520 5696056 1618392 5694976 +1626520 5696056 1615440 5689168 1615488 5689272 1618392 5694976 +1626520 5696056 1612640 5685184 1615440 5689168 1615488 5689272 +1626520 5696056 1663776 5646144 1612640 5685184 1615440 5689168 +1615488 5689272 1615488 5689328 1618392 5694976 1626520 5696056 +1626488 5696072 1627744 5697000 1627744 5696960 1626520 5696056 +1626520 5696056 1626552 5696056 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1626552 5696056 +1626520 5696056 1628120 5696720 1626552 5696056 1612640 5685184 +1628120 5696720 1626552 5696056 1626520 5696056 1628088 5696712 +1626552 5696056 1612640 5685184 1626520 5696056 1628088 5696712 +1626552 5696056 1628120 5696720 1663776 5646144 1612640 5685184 +1628120 5696720 1663776 5646144 1626552 5696056 1628088 5696712 +1663776 5646144 1626552 5696056 1628120 5696720 1663880 5646248 +1626520 5696056 1628048 5696704 1628088 5696712 1626552 5696056 +1626520 5696056 1628048 5696704 1626552 5696056 1612640 5685184 +1628088 5696712 1628120 5696720 1626552 5696056 1628048 5696704 +1626520 5696056 1628016 5696712 1628048 5696704 1626552 5696056 +1626520 5696056 1627968 5696752 1628016 5696712 1626552 5696056 +1626520 5696056 1627784 5696912 1627968 5696752 1626552 5696056 +1627968 5696752 1628016 5696712 1626552 5696056 1627784 5696912 +1626520 5696056 1627744 5696960 1627784 5696912 1626552 5696056 +1627784 5696912 1627968 5696752 1626552 5696056 1627744 5696960 +1626520 5696056 1627744 5696960 1626552 5696056 1612640 5685184 +1626520 5696056 1626488 5696072 1627744 5696960 1626552 5696056 +1627744 5696960 1627784 5696912 1626552 5696056 1626488 5696072 +1626520 5696056 1626488 5696072 1626552 5696056 1612640 5685184 +1627784 5696912 1627928 5696800 1627968 5696752 1626552 5696056 +1628016 5696712 1628048 5696704 1626552 5696056 1627968 5696752 +1628048 5696704 1628088 5696712 1626552 5696056 1628016 5696712 +1626520 5696056 1626552 5696056 1612640 5685184 1615440 5689168 +1626552 5696056 1663776 5646144 1612640 5685184 1615440 5689168 +1626520 5696056 1626488 5696072 1626552 5696056 1615440 5689168 +1612640 5685184 1615392 5689120 1615440 5689168 1626552 5696056 +1626520 5696056 1626552 5696056 1615440 5689168 1615488 5689272 +1626488 5696072 1627744 5697000 1627744 5696960 1626552 5696056 +1627744 5696960 1627784 5696912 1626552 5696056 1627744 5697000 +1626488 5696072 1627744 5697000 1626552 5696056 1626520 5696056 +1626488 5696072 1625808 5698384 1627744 5697000 1626552 5696056 +1626552 5696056 1626600 5696072 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1626600 5696072 +1626552 5696056 1626600 5696072 1612640 5685184 1615440 5689168 +1626552 5696056 1628120 5696720 1626600 5696072 1612640 5685184 +1628120 5696720 1626600 5696072 1626552 5696056 1628088 5696712 +1626552 5696056 1628048 5696704 1628088 5696712 1626600 5696072 +1626600 5696072 1612640 5685184 1626552 5696056 1628048 5696704 +1628088 5696712 1628120 5696720 1626600 5696072 1628048 5696704 +1626600 5696072 1628120 5696720 1663776 5646144 1612640 5685184 +1628120 5696720 1663776 5646144 1626600 5696072 1628088 5696712 +1663776 5646144 1626600 5696072 1628120 5696720 1663880 5646248 +1626552 5696056 1628016 5696712 1628048 5696704 1626600 5696072 +1628048 5696704 1628088 5696712 1626600 5696072 1628016 5696712 +1626552 5696056 1628016 5696712 1626600 5696072 1612640 5685184 +1626552 5696056 1627968 5696752 1628016 5696712 1626600 5696072 +1626552 5696056 1627784 5696912 1627968 5696752 1626600 5696072 +1626552 5696056 1627744 5696960 1627784 5696912 1626600 5696072 +1627784 5696912 1627968 5696752 1626600 5696072 1627744 5696960 +1626552 5696056 1627744 5697000 1627744 5696960 1626600 5696072 +1627744 5696960 1627784 5696912 1626600 5696072 1627744 5697000 +1626552 5696056 1627744 5697000 1626600 5696072 1612640 5685184 +1627784 5696912 1627928 5696800 1627968 5696752 1626600 5696072 +1627968 5696752 1628016 5696712 1626600 5696072 1627784 5696912 +1628016 5696712 1628048 5696704 1626600 5696072 1627968 5696752 +1626552 5696056 1626488 5696072 1627744 5697000 1626600 5696072 +1627744 5697000 1627744 5696960 1626600 5696072 1626488 5696072 +1626552 5696056 1626488 5696072 1626600 5696072 1612640 5685184 +1626552 5696056 1626520 5696056 1626488 5696072 1626600 5696072 +1626488 5696072 1625808 5698384 1627744 5697000 1626600 5696072 +1626600 5696072 1626688 5696104 1663776 5646144 1612640 5685184 +1663776 5646144 1612616 5685152 1612640 5685184 1626688 5696104 +1626600 5696072 1626688 5696104 1612640 5685184 1626552 5696056 +1626600 5696072 1628120 5696720 1626688 5696104 1612640 5685184 +1628120 5696720 1626688 5696104 1626600 5696072 1628088 5696712 +1626600 5696072 1628048 5696704 1628088 5696712 1626688 5696104 +1626600 5696072 1628016 5696712 1628048 5696704 1626688 5696104 +1628048 5696704 1628088 5696712 1626688 5696104 1628016 5696712 +1626688 5696104 1612640 5685184 1626600 5696072 1628016 5696712 +1628088 5696712 1628120 5696720 1626688 5696104 1628048 5696704 +1626688 5696104 1628120 5696720 1663776 5646144 1612640 5685184 +1628120 5696720 1663776 5646144 1626688 5696104 1628088 5696712 +1663776 5646144 1626688 5696104 1628120 5696720 1663880 5646248 +1626600 5696072 1627968 5696752 1628016 5696712 1626688 5696104 +1628016 5696712 1628048 5696704 1626688 5696104 1627968 5696752 +1626600 5696072 1627968 5696752 1626688 5696104 1612640 5685184 +1626600 5696072 1627784 5696912 1627968 5696752 1626688 5696104 +1626600 5696072 1627744 5696960 1627784 5696912 1626688 5696104 +1626600 5696072 1627744 5697000 1627744 5696960 1626688 5696104 +1627744 5696960 1627784 5696912 1626688 5696104 1627744 5697000 +1626600 5696072 1626488 5696072 1627744 5697000 1626688 5696104 +1627744 5697000 1627744 5696960 1626688 5696104 1626488 5696072 +1626600 5696072 1626488 5696072 1626688 5696104 1612640 5685184 +1627784 5696912 1627928 5696800 1627968 5696752 1626688 5696104 +1627784 5696912 1627968 5696752 1626688 5696104 1627744 5696960 +1627968 5696752 1628016 5696712 1626688 5696104 1627784 5696912 +1626600 5696072 1626552 5696056 1626488 5696072 1626688 5696104 +1626488 5696072 1625808 5698384 1627744 5697000 1626688 5696104 +1626488 5696072 1625808 5698384 1626688 5696104 1626600 5696072 +1625808 5698384 1625936 5698488 1627744 5697000 1626688 5696104 +1627744 5697000 1627744 5696960 1626688 5696104 1625808 5698384 +1626488 5696072 1625776 5698376 1625808 5698384 1626688 5696104 +1627968 5696752 1626776 5696152 1627784 5696912 1627928 5696800 +1627784 5696912 1626776 5696152 1626688 5696104 1627744 5696960 +1626688 5696104 1627744 5697000 1627744 5696960 1626776 5696152 +1627784 5696912 1627968 5696752 1626776 5696152 1627744 5696960 +1626688 5696104 1625808 5698384 1627744 5697000 1626776 5696152 +1627744 5697000 1627744 5696960 1626776 5696152 1625808 5698384 +1625808 5698384 1625936 5698488 1627744 5697000 1626776 5696152 +1626776 5696152 1627968 5696752 1626688 5696104 1625808 5698384 +1627744 5696960 1627784 5696912 1626776 5696152 1627744 5697000 +1626688 5696104 1626776 5696152 1627968 5696752 1628016 5696712 +1626688 5696104 1626776 5696152 1628016 5696712 1628048 5696704 +1626688 5696104 1626776 5696152 1628048 5696704 1628088 5696712 +1626776 5696152 1628016 5696712 1628048 5696704 1628088 5696712 +1626688 5696104 1626776 5696152 1628088 5696712 1628120 5696720 +1626776 5696152 1628048 5696704 1628088 5696712 1628120 5696720 +1626688 5696104 1625808 5698384 1626776 5696152 1628120 5696720 +1626688 5696104 1626776 5696152 1628120 5696720 1663776 5646144 +1626776 5696152 1627784 5696912 1627968 5696752 1628016 5696712 +1626776 5696152 1627968 5696752 1628016 5696712 1628048 5696704 +1626688 5696104 1626488 5696072 1625808 5698384 1626776 5696152 +1626688 5696104 1626600 5696072 1626488 5696072 1626776 5696152 +1625808 5698384 1627744 5697000 1626776 5696152 1626488 5696072 +1626688 5696104 1626488 5696072 1626776 5696152 1628120 5696720 +1626488 5696072 1625776 5698376 1625808 5698384 1626776 5696152 +1627968 5696752 1626864 5696192 1626776 5696152 1627784 5696912 +1626776 5696152 1627744 5696960 1627784 5696912 1626864 5696192 +1627784 5696912 1627968 5696752 1626864 5696192 1627744 5696960 +1626864 5696192 1628016 5696712 1626776 5696152 1627744 5696960 +1627968 5696752 1628016 5696712 1626864 5696192 1627784 5696912 +1627968 5696752 1626864 5696192 1627784 5696912 1627928 5696800 +1626776 5696152 1627744 5697000 1627744 5696960 1626864 5696192 +1626776 5696152 1625808 5698384 1627744 5697000 1626864 5696192 +1625808 5698384 1625936 5698488 1627744 5697000 1626864 5696192 +1627744 5696960 1627784 5696912 1626864 5696192 1627744 5697000 +1626776 5696152 1626488 5696072 1625808 5698384 1626864 5696192 +1626776 5696152 1625808 5698384 1626864 5696192 1628016 5696712 +1627744 5697000 1627744 5696960 1626864 5696192 1625808 5698384 +1626776 5696152 1626864 5696192 1628016 5696712 1628048 5696704 +1626864 5696192 1627968 5696752 1628016 5696712 1628048 5696704 +1626776 5696152 1626864 5696192 1628048 5696704 1628088 5696712 +1626776 5696152 1626864 5696192 1628088 5696712 1628120 5696720 +1626864 5696192 1628048 5696704 1628088 5696712 1628120 5696720 +1626776 5696152 1626864 5696192 1628120 5696720 1626688 5696104 +1626864 5696192 1628088 5696712 1628120 5696720 1626688 5696104 +1628120 5696720 1663776 5646144 1626688 5696104 1626864 5696192 +1626776 5696152 1625808 5698384 1626864 5696192 1626688 5696104 +1626864 5696192 1628016 5696712 1628048 5696704 1628088 5696712 +1627784 5696912 1626896 5696216 1626864 5696192 1627744 5696960 +1626864 5696192 1627744 5697000 1627744 5696960 1626896 5696216 +1626896 5696216 1627968 5696752 1626864 5696192 1627744 5697000 +1627744 5696960 1627784 5696912 1626896 5696216 1627744 5697000 +1626864 5696192 1626896 5696216 1627968 5696752 1628016 5696712 +1626864 5696192 1626896 5696216 1628016 5696712 1628048 5696704 +1626864 5696192 1627744 5697000 1626896 5696216 1628048 5696704 +1626896 5696216 1627968 5696752 1628016 5696712 1628048 5696704 +1626896 5696216 1627784 5696912 1627968 5696752 1628016 5696712 +1627784 5696912 1627968 5696752 1626896 5696216 1627744 5696960 +1627968 5696752 1626896 5696216 1627784 5696912 1627928 5696800 +1626864 5696192 1625808 5698384 1627744 5697000 1626896 5696216 +1626864 5696192 1626776 5696152 1625808 5698384 1626896 5696216 +1625808 5698384 1625936 5698488 1627744 5697000 1626896 5696216 +1627744 5697000 1627744 5696960 1626896 5696216 1625808 5698384 +1626864 5696192 1626776 5696152 1626896 5696216 1628048 5696704 +1626776 5696152 1626488 5696072 1625808 5698384 1626896 5696216 +1626776 5696152 1626488 5696072 1626896 5696216 1626864 5696192 +1626488 5696072 1625776 5698376 1625808 5698384 1626896 5696216 +1625808 5698384 1627744 5697000 1626896 5696216 1626488 5696072 +1626864 5696192 1626896 5696216 1628048 5696704 1628088 5696712 +1626776 5696152 1626688 5696104 1626488 5696072 1626896 5696216 +1627744 5696960 1626984 5696288 1626896 5696216 1627744 5697000 +1626896 5696216 1625808 5698384 1627744 5697000 1626984 5696288 +1625808 5698384 1625936 5698488 1627744 5697000 1626984 5696288 +1627744 5697000 1627744 5696960 1626984 5696288 1625808 5698384 +1626984 5696288 1627784 5696912 1626896 5696216 1625808 5698384 +1626896 5696216 1626984 5696288 1627784 5696912 1627968 5696752 +1626896 5696216 1626984 5696288 1627968 5696752 1628016 5696712 +1626896 5696216 1626984 5696288 1628016 5696712 1628048 5696704 +1626896 5696216 1626984 5696288 1628048 5696704 1626864 5696192 +1626984 5696288 1627968 5696752 1628016 5696712 1628048 5696704 +1626896 5696216 1625808 5698384 1626984 5696288 1628048 5696704 +1626984 5696288 1627784 5696912 1627968 5696752 1628016 5696712 +1626984 5696288 1627744 5696960 1627784 5696912 1627968 5696752 +1627744 5696960 1627784 5696912 1626984 5696288 1627744 5697000 +1627784 5696912 1627928 5696800 1627968 5696752 1626984 5696288 +1627784 5696912 1627880 5696848 1627928 5696800 1626984 5696288 +1627968 5696752 1628016 5696712 1626984 5696288 1627928 5696800 +1627784 5696912 1627928 5696800 1626984 5696288 1627744 5696960 +1626896 5696216 1626488 5696072 1625808 5698384 1626984 5696288 +1625808 5698384 1627744 5697000 1626984 5696288 1626488 5696072 +1626896 5696216 1626776 5696152 1626488 5696072 1626984 5696288 +1626896 5696216 1626864 5696192 1626776 5696152 1626984 5696288 +1626896 5696216 1626776 5696152 1626984 5696288 1628048 5696704 +1626488 5696072 1625776 5698376 1625808 5698384 1626984 5696288 +1626488 5696072 1625808 5698384 1626984 5696288 1626776 5696152 +1626776 5696152 1626688 5696104 1626488 5696072 1626984 5696288 +1626984 5696288 1627032 5696328 1627784 5696912 1627928 5696800 +1627784 5696912 1627880 5696848 1627928 5696800 1627032 5696328 +1626984 5696288 1627744 5696960 1627032 5696328 1627928 5696800 +1627744 5696960 1627032 5696328 1626984 5696288 1627744 5697000 +1626984 5696288 1625808 5698384 1627744 5697000 1627032 5696328 +1625808 5698384 1625936 5698488 1627744 5697000 1627032 5696328 +1626984 5696288 1626488 5696072 1625808 5698384 1627032 5696328 +1625808 5698384 1627744 5697000 1627032 5696328 1626488 5696072 +1627032 5696328 1627928 5696800 1626984 5696288 1626488 5696072 +1627744 5697000 1627744 5696960 1627032 5696328 1625808 5698384 +1627032 5696328 1627744 5696960 1627784 5696912 1627928 5696800 +1627744 5696960 1627784 5696912 1627032 5696328 1627744 5697000 +1626488 5696072 1625776 5698376 1625808 5698384 1627032 5696328 +1626984 5696288 1627032 5696328 1627928 5696800 1627968 5696752 +1626984 5696288 1627032 5696328 1627968 5696752 1628016 5696712 +1626984 5696288 1627032 5696328 1628016 5696712 1628048 5696704 +1626984 5696288 1627032 5696328 1628048 5696704 1626896 5696216 +1627032 5696328 1627968 5696752 1628016 5696712 1628048 5696704 +1627032 5696328 1627784 5696912 1627928 5696800 1627968 5696752 +1626984 5696288 1626488 5696072 1627032 5696328 1628048 5696704 +1627032 5696328 1627928 5696800 1627968 5696752 1628016 5696712 +1626984 5696288 1626776 5696152 1626488 5696072 1627032 5696328 +1627744 5697000 1627088 5696408 1625808 5698384 1625936 5698488 +1627744 5697000 1627088 5696408 1625936 5698488 1627824 5697120 +1625808 5698384 1627088 5696408 1627032 5696328 1626488 5696072 +1627032 5696328 1626984 5696288 1626488 5696072 1627088 5696408 +1626488 5696072 1625808 5698384 1627088 5696408 1626984 5696288 +1627032 5696328 1627088 5696408 1627744 5697000 1627744 5696960 +1627088 5696408 1627744 5696960 1627032 5696328 1626984 5696288 +1627032 5696328 1627088 5696408 1627744 5696960 1627784 5696912 +1627088 5696408 1627744 5697000 1627744 5696960 1627784 5696912 +1627032 5696328 1627088 5696408 1627784 5696912 1627928 5696800 +1627784 5696912 1627880 5696848 1627928 5696800 1627088 5696408 +1627032 5696328 1627088 5696408 1627928 5696800 1627968 5696752 +1627088 5696408 1627784 5696912 1627928 5696800 1627968 5696752 +1627032 5696328 1626984 5696288 1627088 5696408 1627968 5696752 +1627088 5696408 1627744 5696960 1627784 5696912 1627928 5696800 +1627744 5697000 1627744 5696960 1627088 5696408 1625936 5698488 +1627088 5696408 1626488 5696072 1625808 5698384 1625936 5698488 +1625808 5698384 1627088 5696408 1626488 5696072 1625776 5698376 +1627032 5696328 1627088 5696408 1627968 5696752 1628016 5696712 +1627032 5696328 1627088 5696408 1628016 5696712 1628048 5696704 +1627088 5696408 1627928 5696800 1627968 5696752 1628016 5696712 +1627032 5696328 1626984 5696288 1627088 5696408 1628016 5696712 +1626984 5696288 1626776 5696152 1626488 5696072 1627088 5696408 +1626984 5696288 1626776 5696152 1627088 5696408 1627032 5696328 +1626984 5696288 1626896 5696216 1626776 5696152 1627088 5696408 +1626488 5696072 1625808 5698384 1627088 5696408 1626776 5696152 +1626776 5696152 1626688 5696104 1626488 5696072 1627088 5696408 +1627744 5697000 1627088 5696512 1625936 5698488 1627824 5697120 +1625936 5698488 1627088 5696512 1627088 5696408 1625808 5698384 +1627088 5696408 1627088 5696512 1627744 5697000 1627744 5696960 +1627088 5696408 1627088 5696512 1627744 5696960 1627784 5696912 +1627088 5696408 1627088 5696512 1627784 5696912 1627928 5696800 +1627784 5696912 1627880 5696848 1627928 5696800 1627088 5696512 +1627088 5696512 1627744 5696960 1627784 5696912 1627928 5696800 +1627088 5696408 1627088 5696512 1627928 5696800 1627968 5696752 +1627088 5696408 1627088 5696512 1627968 5696752 1628016 5696712 +1627088 5696512 1627784 5696912 1627928 5696800 1627968 5696752 +1627088 5696512 1627744 5697000 1627744 5696960 1627784 5696912 +1627088 5696512 1627968 5696752 1627088 5696408 1625808 5698384 +1627088 5696408 1626488 5696072 1625808 5698384 1627088 5696512 +1625808 5698384 1625936 5698488 1627088 5696512 1626488 5696072 +1627088 5696408 1626776 5696152 1626488 5696072 1627088 5696512 +1627088 5696408 1626776 5696152 1627088 5696512 1627968 5696752 +1626488 5696072 1625808 5698384 1627088 5696512 1626776 5696152 +1627088 5696512 1625936 5698488 1627744 5697000 1627744 5696960 +1625936 5698488 1627744 5697000 1627088 5696512 1625808 5698384 +1626488 5696072 1625776 5698376 1625808 5698384 1627088 5696512 +1627088 5696408 1626984 5696288 1626776 5696152 1627088 5696512 +1627088 5696408 1627032 5696328 1626984 5696288 1627088 5696512 +1626984 5696288 1626896 5696216 1626776 5696152 1627088 5696512 +1626896 5696216 1626864 5696192 1626776 5696152 1627088 5696512 +1626776 5696152 1626488 5696072 1627088 5696512 1626896 5696216 +1627088 5696408 1627032 5696328 1627088 5696512 1627968 5696752 +1626984 5696288 1626896 5696216 1627088 5696512 1627032 5696328 +1626776 5696152 1626688 5696104 1626488 5696072 1627088 5696512 +1627744 5697000 1627056 5696568 1625936 5698488 1627824 5697120 +1627744 5697000 1627056 5696568 1627824 5697120 1627784 5697056 +1627056 5696568 1625936 5698488 1627824 5697120 1627784 5697056 +1627088 5696512 1627056 5696568 1627744 5697000 1627744 5696960 +1627088 5696512 1627056 5696568 1627744 5696960 1627784 5696912 +1627088 5696512 1625936 5698488 1627056 5696568 1627744 5696960 +1625936 5698488 1627056 5696568 1627088 5696512 1625808 5698384 +1627088 5696512 1626488 5696072 1625808 5698384 1627056 5696568 +1627088 5696512 1626776 5696152 1626488 5696072 1627056 5696568 +1626488 5696072 1625808 5698384 1627056 5696568 1626776 5696152 +1627088 5696512 1626896 5696216 1626776 5696152 1627056 5696568 +1626896 5696216 1626864 5696192 1626776 5696152 1627056 5696568 +1627088 5696512 1626984 5696288 1626896 5696216 1627056 5696568 +1626896 5696216 1626776 5696152 1627056 5696568 1626984 5696288 +1626776 5696152 1626488 5696072 1627056 5696568 1626896 5696216 +1627056 5696568 1627744 5696960 1627088 5696512 1626984 5696288 +1625808 5698384 1625936 5698488 1627056 5696568 1626488 5696072 +1627744 5697000 1627744 5696960 1627056 5696568 1627784 5697056 +1627056 5696568 1625808 5698384 1625936 5698488 1627824 5697120 +1626488 5696072 1625776 5698376 1625808 5698384 1627056 5696568 +1626488 5696072 1625776 5698376 1627056 5696568 1626776 5696152 +1625808 5698384 1625936 5698488 1627056 5696568 1625776 5698376 +1626488 5696072 1623760 5697136 1625776 5698376 1627056 5696568 +1625936 5698488 1626248 5698816 1627824 5697120 1627056 5696568 +1627088 5696512 1627032 5696328 1626984 5696288 1627056 5696568 +1627088 5696512 1627088 5696408 1627032 5696328 1627056 5696568 +1626984 5696288 1626896 5696216 1627056 5696568 1627032 5696328 +1627088 5696512 1627088 5696408 1627056 5696568 1627744 5696960 +1627032 5696328 1626984 5696288 1627056 5696568 1627088 5696408 +1626776 5696152 1626688 5696104 1626488 5696072 1627056 5696568 +1627056 5696568 1627024 5696624 1627824 5697120 1627784 5697056 +1627056 5696568 1627024 5696624 1627784 5697056 1627744 5697000 +1627024 5696624 1627824 5697120 1627784 5697056 1627744 5697000 +1627056 5696568 1627024 5696624 1627744 5697000 1627744 5696960 +1627024 5696624 1627784 5697056 1627744 5697000 1627744 5696960 +1627056 5696568 1627024 5696624 1627744 5696960 1627088 5696512 +1627056 5696568 1625936 5698488 1627024 5696624 1627744 5696960 +1625936 5698488 1627024 5696624 1627056 5696568 1625808 5698384 +1627056 5696568 1625776 5698376 1625808 5698384 1627024 5696624 +1627024 5696624 1627744 5696960 1627056 5696568 1625776 5698376 +1625808 5698384 1625936 5698488 1627024 5696624 1625776 5698376 +1627024 5696624 1625936 5698488 1627824 5697120 1627784 5697056 +1625936 5698488 1627824 5697120 1627024 5696624 1625808 5698384 +1627056 5696568 1626488 5696072 1625776 5698376 1627024 5696624 +1627056 5696568 1626776 5696152 1626488 5696072 1627024 5696624 +1627056 5696568 1626896 5696216 1626776 5696152 1627024 5696624 +1626896 5696216 1626864 5696192 1626776 5696152 1627024 5696624 +1626776 5696152 1626488 5696072 1627024 5696624 1626896 5696216 +1627056 5696568 1626984 5696288 1626896 5696216 1627024 5696624 +1627056 5696568 1627032 5696328 1626984 5696288 1627024 5696624 +1626896 5696216 1626776 5696152 1627024 5696624 1626984 5696288 +1625776 5698376 1625808 5698384 1627024 5696624 1626488 5696072 +1627056 5696568 1626984 5696288 1627024 5696624 1627744 5696960 +1626488 5696072 1625776 5698376 1627024 5696624 1626776 5696152 +1626488 5696072 1623760 5697136 1625776 5698376 1627024 5696624 +1627824 5697120 1627024 5696624 1625936 5698488 1626248 5698816 +1626776 5696152 1626688 5696104 1626488 5696072 1627024 5696624 +1627024 5696624 1626976 5696680 1625776 5698376 1625808 5698384 +1627024 5696624 1626976 5696680 1625808 5698384 1625936 5698488 +1626976 5696680 1625776 5698376 1625808 5698384 1625936 5698488 +1627024 5696624 1626488 5696072 1626976 5696680 1625936 5698488 +1627024 5696624 1626976 5696680 1625936 5698488 1627824 5697120 +1626976 5696680 1625808 5698384 1625936 5698488 1627824 5697120 +1627024 5696624 1626976 5696680 1627824 5697120 1627784 5697056 +1627024 5696624 1626976 5696680 1627784 5697056 1627744 5697000 +1627024 5696624 1626976 5696680 1627744 5697000 1627744 5696960 +1626976 5696680 1627784 5697056 1627744 5697000 1627744 5696960 +1627024 5696624 1626976 5696680 1627744 5696960 1627056 5696568 +1626976 5696680 1627824 5697120 1627784 5697056 1627744 5697000 +1627024 5696624 1626488 5696072 1626976 5696680 1627744 5696960 +1626976 5696680 1625936 5698488 1627824 5697120 1627784 5697056 +1626976 5696680 1626488 5696072 1625776 5698376 1625808 5698384 +1626488 5696072 1626976 5696680 1627024 5696624 1626776 5696152 +1627024 5696624 1626896 5696216 1626776 5696152 1626976 5696680 +1626896 5696216 1626864 5696192 1626776 5696152 1626976 5696680 +1627024 5696624 1626984 5696288 1626896 5696216 1626976 5696680 +1626896 5696216 1626776 5696152 1626976 5696680 1626984 5696288 +1627024 5696624 1627056 5696568 1626984 5696288 1626976 5696680 +1626976 5696680 1627744 5696960 1627024 5696624 1626984 5696288 +1626488 5696072 1625776 5698376 1626976 5696680 1626776 5696152 +1626776 5696152 1626488 5696072 1626976 5696680 1626896 5696216 +1625776 5698376 1626976 5696680 1626488 5696072 1623760 5697136 +1625936 5698488 1626248 5698816 1627824 5697120 1626976 5696680 +1626488 5696072 1626976 5696680 1626776 5696152 1626688 5696104 +1626976 5696680 1626928 5696720 1625776 5698376 1625808 5698384 +1626976 5696680 1626928 5696720 1625808 5698384 1625936 5698488 +1626976 5696680 1626928 5696720 1625936 5698488 1627824 5697120 +1626928 5696720 1625808 5698384 1625936 5698488 1627824 5697120 +1626976 5696680 1626928 5696720 1627824 5697120 1627784 5697056 +1626928 5696720 1625936 5698488 1627824 5697120 1627784 5697056 +1626976 5696680 1626928 5696720 1627784 5697056 1627744 5697000 +1626976 5696680 1626928 5696720 1627744 5697000 1627744 5696960 +1626928 5696720 1627824 5697120 1627784 5697056 1627744 5697000 +1626928 5696720 1625776 5698376 1625808 5698384 1625936 5698488 +1626976 5696680 1626488 5696072 1626928 5696720 1627744 5697000 +1626488 5696072 1626928 5696720 1626976 5696680 1626776 5696152 +1626928 5696720 1627744 5697000 1626976 5696680 1626776 5696152 +1626928 5696720 1626488 5696072 1625776 5698376 1625808 5698384 +1626488 5696072 1625776 5698376 1626928 5696720 1626776 5696152 +1626976 5696680 1626896 5696216 1626776 5696152 1626928 5696720 +1626896 5696216 1626864 5696192 1626776 5696152 1626928 5696720 +1626976 5696680 1626984 5696288 1626896 5696216 1626928 5696720 +1626976 5696680 1627024 5696624 1626984 5696288 1626928 5696720 +1626976 5696680 1626984 5696288 1626928 5696720 1627744 5697000 +1626776 5696152 1626488 5696072 1626928 5696720 1626896 5696216 +1626896 5696216 1626776 5696152 1626928 5696720 1626984 5696288 +1625776 5698376 1626928 5696720 1626488 5696072 1623760 5697136 +1625936 5698488 1626248 5698816 1627824 5697120 1626928 5696720 +1625936 5698488 1626248 5698816 1626928 5696720 1625808 5698384 +1627824 5697120 1627784 5697056 1626928 5696720 1626248 5698816 +1625936 5698488 1626032 5698672 1626248 5698816 1626928 5696720 +1626248 5698816 1627864 5697160 1627824 5697120 1626928 5696720 +1626488 5696072 1626928 5696720 1626776 5696152 1626688 5696104 +1626928 5696720 1626880 5696736 1625776 5698376 1625808 5698384 +1626928 5696720 1626880 5696736 1625808 5698384 1625936 5698488 +1626928 5696720 1626880 5696736 1625936 5698488 1626248 5698816 +1626880 5696736 1625808 5698384 1625936 5698488 1626248 5698816 +1626880 5696736 1625776 5698376 1625808 5698384 1625936 5698488 +1626928 5696720 1626488 5696072 1626880 5696736 1626248 5698816 +1626488 5696072 1626880 5696736 1626928 5696720 1626776 5696152 +1626928 5696720 1626896 5696216 1626776 5696152 1626880 5696736 +1626896 5696216 1626864 5696192 1626776 5696152 1626880 5696736 +1626880 5696736 1626248 5698816 1626928 5696720 1626896 5696216 +1626776 5696152 1626488 5696072 1626880 5696736 1626896 5696216 +1626880 5696736 1626488 5696072 1625776 5698376 1625808 5698384 +1626488 5696072 1625776 5698376 1626880 5696736 1626776 5696152 +1626928 5696720 1626984 5696288 1626896 5696216 1626880 5696736 +1626928 5696720 1626976 5696680 1626984 5696288 1626880 5696736 +1626976 5696680 1627024 5696624 1626984 5696288 1626880 5696736 +1626896 5696216 1626776 5696152 1626880 5696736 1626984 5696288 +1626928 5696720 1626976 5696680 1626880 5696736 1626248 5698816 +1626984 5696288 1626896 5696216 1626880 5696736 1626976 5696680 +1625936 5698488 1626032 5698672 1626248 5698816 1626880 5696736 +1625776 5698376 1626880 5696736 1626488 5696072 1623760 5697136 +1626928 5696720 1626880 5696736 1626248 5698816 1627824 5697120 +1626880 5696736 1625936 5698488 1626248 5698816 1627824 5697120 +1626928 5696720 1626880 5696736 1627824 5697120 1627784 5697056 +1626928 5696720 1626880 5696736 1627784 5697056 1627744 5697000 +1626880 5696736 1627824 5697120 1627784 5697056 1627744 5697000 +1626928 5696720 1626880 5696736 1627744 5697000 1626976 5696680 +1626928 5696720 1626976 5696680 1626880 5696736 1627744 5697000 +1626880 5696736 1626248 5698816 1627824 5697120 1627784 5697056 +1626248 5698816 1627864 5697160 1627824 5697120 1626880 5696736 +1626488 5696072 1626880 5696736 1626776 5696152 1626688 5696104 +1626488 5696072 1626880 5696736 1626688 5696104 1626600 5696072 +1626880 5696736 1626896 5696216 1626776 5696152 1626688 5696104 +1626488 5696072 1625776 5698376 1626880 5696736 1626688 5696104 +1626880 5696736 1626792 5696736 1625776 5698376 1625808 5698384 +1626880 5696736 1626792 5696736 1625808 5698384 1625936 5698488 +1626880 5696736 1626792 5696736 1625936 5698488 1626248 5698816 +1626792 5696736 1625776 5698376 1625808 5698384 1625936 5698488 +1626880 5696736 1626488 5696072 1626792 5696736 1625936 5698488 +1626488 5696072 1626792 5696736 1626880 5696736 1626688 5696104 +1626488 5696072 1626792 5696736 1626688 5696104 1626600 5696072 +1626792 5696736 1625936 5698488 1626880 5696736 1626688 5696104 +1626792 5696736 1626488 5696072 1625776 5698376 1625808 5698384 +1626488 5696072 1625776 5698376 1626792 5696736 1626688 5696104 +1625776 5698376 1626792 5696736 1626488 5696072 1623760 5697136 +1626880 5696736 1626776 5696152 1626688 5696104 1626792 5696736 +1626880 5696736 1626896 5696216 1626776 5696152 1626792 5696736 +1626896 5696216 1626864 5696192 1626776 5696152 1626792 5696736 +1626880 5696736 1626984 5696288 1626896 5696216 1626792 5696736 +1626896 5696216 1626864 5696192 1626792 5696736 1626984 5696288 +1626880 5696736 1626984 5696288 1626792 5696736 1625936 5698488 +1626688 5696104 1626488 5696072 1626792 5696736 1626776 5696152 +1626880 5696736 1626976 5696680 1626984 5696288 1626792 5696736 +1626880 5696736 1626928 5696720 1626976 5696680 1626792 5696736 +1626976 5696680 1627024 5696624 1626984 5696288 1626792 5696736 +1627024 5696624 1627056 5696568 1626984 5696288 1626792 5696736 +1626984 5696288 1626896 5696216 1626792 5696736 1627024 5696624 +1626880 5696736 1626976 5696680 1626792 5696736 1625936 5698488 +1626976 5696680 1627024 5696624 1626792 5696736 1626880 5696736 +1626776 5696152 1626688 5696104 1626792 5696736 1626864 5696192 +1626792 5696736 1626752 5696728 1625776 5698376 1625808 5698384 +1626792 5696736 1626752 5696728 1625808 5698384 1625936 5698488 +1626792 5696736 1626752 5696728 1625936 5698488 1626880 5696736 +1626752 5696728 1625776 5698376 1625808 5698384 1625936 5698488 +1626792 5696736 1626488 5696072 1626752 5696728 1625936 5698488 +1626488 5696072 1626752 5696728 1626792 5696736 1626688 5696104 +1626488 5696072 1626752 5696728 1626688 5696104 1626600 5696072 +1626792 5696736 1626776 5696152 1626688 5696104 1626752 5696728 +1626752 5696728 1625936 5698488 1626792 5696736 1626776 5696152 +1626688 5696104 1626488 5696072 1626752 5696728 1626776 5696152 +1626752 5696728 1626488 5696072 1625776 5698376 1625808 5698384 +1626488 5696072 1625776 5698376 1626752 5696728 1626688 5696104 +1625776 5698376 1626752 5696728 1626488 5696072 1623760 5697136 +1625776 5698376 1625808 5698384 1626752 5696728 1623760 5697136 +1626752 5696728 1626688 5696104 1626488 5696072 1623760 5697136 +1626488 5696072 1623728 5697072 1623760 5697136 1626752 5696728 +1625776 5698376 1626752 5696728 1623760 5697136 1625240 5698480 +1626792 5696736 1626864 5696192 1626776 5696152 1626752 5696728 +1626792 5696736 1626896 5696216 1626864 5696192 1626752 5696728 +1626792 5696736 1626984 5696288 1626896 5696216 1626752 5696728 +1626896 5696216 1626864 5696192 1626752 5696728 1626984 5696288 +1626792 5696736 1627024 5696624 1626984 5696288 1626752 5696728 +1627024 5696624 1627056 5696568 1626984 5696288 1626752 5696728 +1626792 5696736 1626976 5696680 1627024 5696624 1626752 5696728 +1626984 5696288 1626896 5696216 1626752 5696728 1627024 5696624 +1626776 5696152 1626688 5696104 1626752 5696728 1626864 5696192 +1626792 5696736 1627024 5696624 1626752 5696728 1625936 5698488 +1626864 5696192 1626776 5696152 1626752 5696728 1626896 5696216 +1626488 5696072 1626728 5696712 1626752 5696728 1626688 5696104 +1626488 5696072 1626728 5696712 1626688 5696104 1626600 5696072 +1626752 5696728 1626776 5696152 1626688 5696104 1626728 5696712 +1626752 5696728 1626864 5696192 1626776 5696152 1626728 5696712 +1626776 5696152 1626688 5696104 1626728 5696712 1626864 5696192 +1626728 5696712 1623760 5697136 1626752 5696728 1626864 5696192 +1626688 5696104 1626488 5696072 1626728 5696712 1626776 5696152 +1626488 5696072 1623760 5697136 1626728 5696712 1626688 5696104 +1623760 5697136 1626728 5696712 1626488 5696072 1623728 5697072 +1626752 5696728 1626728 5696712 1623760 5697136 1625776 5698376 +1626752 5696728 1626728 5696712 1625776 5698376 1625808 5698384 +1626752 5696728 1626728 5696712 1625808 5698384 1625936 5698488 +1626752 5696728 1626864 5696192 1626728 5696712 1625808 5698384 +1626728 5696712 1626488 5696072 1623760 5697136 1625776 5698376 +1626728 5696712 1623760 5697136 1625776 5698376 1625808 5698384 +1623760 5697136 1625240 5698480 1625776 5698376 1626728 5696712 +1626752 5696728 1626896 5696216 1626864 5696192 1626728 5696712 +1626752 5696728 1626984 5696288 1626896 5696216 1626728 5696712 +1626752 5696728 1627024 5696624 1626984 5696288 1626728 5696712 +1626984 5696288 1626896 5696216 1626728 5696712 1627024 5696624 +1627024 5696624 1627056 5696568 1626984 5696288 1626728 5696712 +1626752 5696728 1626792 5696736 1627024 5696624 1626728 5696712 +1626792 5696736 1626976 5696680 1627024 5696624 1626728 5696712 +1626792 5696736 1626976 5696680 1626728 5696712 1626752 5696728 +1627024 5696624 1626984 5696288 1626728 5696712 1626976 5696680 +1626864 5696192 1626776 5696152 1626728 5696712 1626896 5696216 +1626752 5696728 1626792 5696736 1626728 5696712 1625808 5698384 +1626792 5696736 1626880 5696736 1626976 5696680 1626728 5696712 +1626896 5696216 1626864 5696192 1626728 5696712 1626984 5696288 +1626728 5696712 1626696 5696656 1623760 5697136 1625776 5698376 +1626728 5696712 1626488 5696072 1626696 5696656 1625776 5698376 +1626488 5696072 1626696 5696656 1626728 5696712 1626688 5696104 +1626488 5696072 1626696 5696656 1626688 5696104 1626600 5696072 +1626728 5696712 1626776 5696152 1626688 5696104 1626696 5696656 +1626728 5696712 1626864 5696192 1626776 5696152 1626696 5696656 +1626728 5696712 1626896 5696216 1626864 5696192 1626696 5696656 +1626864 5696192 1626776 5696152 1626696 5696656 1626896 5696216 +1626776 5696152 1626688 5696104 1626696 5696656 1626864 5696192 +1626696 5696656 1625776 5698376 1626728 5696712 1626896 5696216 +1626688 5696104 1626488 5696072 1626696 5696656 1626776 5696152 +1626696 5696656 1626488 5696072 1623760 5697136 1625776 5698376 +1626488 5696072 1623760 5697136 1626696 5696656 1626688 5696104 +1623760 5697136 1626696 5696656 1626488 5696072 1623728 5697072 +1626728 5696712 1626696 5696656 1625776 5698376 1625808 5698384 +1623760 5697136 1625240 5698480 1625776 5698376 1626696 5696656 +1626728 5696712 1626984 5696288 1626896 5696216 1626696 5696656 +1626728 5696712 1627024 5696624 1626984 5696288 1626696 5696656 +1627024 5696624 1627056 5696568 1626984 5696288 1626696 5696656 +1627024 5696624 1627056 5696568 1626696 5696656 1626728 5696712 +1627056 5696568 1627032 5696328 1626984 5696288 1626696 5696656 +1626728 5696712 1626976 5696680 1627024 5696624 1626696 5696656 +1627024 5696624 1627056 5696568 1626696 5696656 1626976 5696680 +1626728 5696712 1626792 5696736 1626976 5696680 1626696 5696656 +1626728 5696712 1626752 5696728 1626792 5696736 1626696 5696656 +1626976 5696680 1627024 5696624 1626696 5696656 1626792 5696736 +1626896 5696216 1626864 5696192 1626696 5696656 1626984 5696288 +1626728 5696712 1626792 5696736 1626696 5696656 1625776 5698376 +1626792 5696736 1626880 5696736 1626976 5696680 1626696 5696656 +1626880 5696736 1626928 5696720 1626976 5696680 1626696 5696656 +1626792 5696736 1626880 5696736 1626696 5696656 1626728 5696712 +1626976 5696680 1627024 5696624 1626696 5696656 1626880 5696736 +1626984 5696288 1626896 5696216 1626696 5696656 1627056 5696568 +1626696 5696656 1626648 5696568 1623760 5697136 1625776 5698376 +1626696 5696656 1626648 5696568 1625776 5698376 1626728 5696712 +1626696 5696656 1626488 5696072 1626648 5696568 1625776 5698376 +1626488 5696072 1626648 5696568 1626696 5696656 1626688 5696104 +1626488 5696072 1626648 5696568 1626688 5696104 1626600 5696072 +1626696 5696656 1626776 5696152 1626688 5696104 1626648 5696568 +1626696 5696656 1626864 5696192 1626776 5696152 1626648 5696568 +1626696 5696656 1626896 5696216 1626864 5696192 1626648 5696568 +1626696 5696656 1626984 5696288 1626896 5696216 1626648 5696568 +1626896 5696216 1626864 5696192 1626648 5696568 1626984 5696288 +1626864 5696192 1626776 5696152 1626648 5696568 1626896 5696216 +1626776 5696152 1626688 5696104 1626648 5696568 1626864 5696192 +1626648 5696568 1625776 5698376 1626696 5696656 1626984 5696288 +1626648 5696568 1626776 5696152 1626688 5696104 1626600 5696072 +1623760 5697136 1626648 5696568 1626488 5696072 1623728 5697072 +1623760 5697136 1625240 5698480 1625776 5698376 1626648 5696568 +1626648 5696568 1626488 5696072 1623760 5697136 1625776 5698376 +1626488 5696072 1623760 5697136 1626648 5696568 1626600 5696072 +1626488 5696072 1626648 5696568 1626600 5696072 1626552 5696056 +1626696 5696656 1627056 5696568 1626984 5696288 1626648 5696568 +1627056 5696568 1627032 5696328 1626984 5696288 1626648 5696568 +1626696 5696656 1627024 5696624 1627056 5696568 1626648 5696568 +1626696 5696656 1626976 5696680 1627024 5696624 1626648 5696568 +1626984 5696288 1626896 5696216 1626648 5696568 1627056 5696568 +1626696 5696656 1627024 5696624 1626648 5696568 1625776 5698376 +1627056 5696568 1626984 5696288 1626648 5696568 1627024 5696624 +1623760 5697136 1626624 5696496 1626488 5696072 1623728 5697072 +1626648 5696568 1626624 5696496 1623760 5697136 1625776 5698376 +1626488 5696072 1626624 5696496 1626648 5696568 1626600 5696072 +1626648 5696568 1626688 5696104 1626600 5696072 1626624 5696496 +1626648 5696568 1626776 5696152 1626688 5696104 1626624 5696496 +1626688 5696104 1626600 5696072 1626624 5696496 1626776 5696152 +1626648 5696568 1626864 5696192 1626776 5696152 1626624 5696496 +1626648 5696568 1626896 5696216 1626864 5696192 1626624 5696496 +1626648 5696568 1626984 5696288 1626896 5696216 1626624 5696496 +1626648 5696568 1627056 5696568 1626984 5696288 1626624 5696496 +1626896 5696216 1626864 5696192 1626624 5696496 1626984 5696288 +1626864 5696192 1626776 5696152 1626624 5696496 1626896 5696216 +1626776 5696152 1626688 5696104 1626624 5696496 1626864 5696192 +1626624 5696496 1623760 5697136 1626648 5696568 1626984 5696288 +1626600 5696072 1626488 5696072 1626624 5696496 1626688 5696104 +1626488 5696072 1623760 5697136 1626624 5696496 1626600 5696072 +1626488 5696072 1626624 5696496 1626600 5696072 1626552 5696056 +1623760 5697136 1626592 5696408 1626488 5696072 1623728 5697072 +1626624 5696496 1626592 5696408 1623760 5697136 1626648 5696568 +1626488 5696072 1626592 5696408 1626624 5696496 1626600 5696072 +1626624 5696496 1626688 5696104 1626600 5696072 1626592 5696408 +1626624 5696496 1626776 5696152 1626688 5696104 1626592 5696408 +1626624 5696496 1626864 5696192 1626776 5696152 1626592 5696408 +1626776 5696152 1626688 5696104 1626592 5696408 1626864 5696192 +1626624 5696496 1626896 5696216 1626864 5696192 1626592 5696408 +1626624 5696496 1626984 5696288 1626896 5696216 1626592 5696408 +1626864 5696192 1626776 5696152 1626592 5696408 1626896 5696216 +1626688 5696104 1626600 5696072 1626592 5696408 1626776 5696152 +1626592 5696408 1623760 5697136 1626624 5696496 1626896 5696216 +1626600 5696072 1626488 5696072 1626592 5696408 1626688 5696104 +1626488 5696072 1623760 5697136 1626592 5696408 1626600 5696072 +1626488 5696072 1626592 5696408 1626600 5696072 1626552 5696056 +1623760 5697136 1626568 5696352 1626488 5696072 1623728 5697072 +1626592 5696408 1626568 5696352 1623760 5697136 1626624 5696496 +1623760 5697136 1626648 5696568 1626624 5696496 1626568 5696352 +1626592 5696408 1626488 5696072 1626568 5696352 1626624 5696496 +1626488 5696072 1626568 5696352 1626592 5696408 1626600 5696072 +1626592 5696408 1626688 5696104 1626600 5696072 1626568 5696352 +1626592 5696408 1626776 5696152 1626688 5696104 1626568 5696352 +1626592 5696408 1626864 5696192 1626776 5696152 1626568 5696352 +1626688 5696104 1626600 5696072 1626568 5696352 1626776 5696152 +1626568 5696352 1626624 5696496 1626592 5696408 1626776 5696152 +1626600 5696072 1626488 5696072 1626568 5696352 1626688 5696104 +1626568 5696352 1626488 5696072 1623760 5697136 1626624 5696496 +1626488 5696072 1623760 5697136 1626568 5696352 1626600 5696072 +1626488 5696072 1626568 5696352 1626600 5696072 1626552 5696056 +1623760 5697136 1626536 5696264 1626488 5696072 1623728 5697072 +1626568 5696352 1626536 5696264 1623760 5697136 1626624 5696496 +1626488 5696072 1626536 5696264 1626568 5696352 1626600 5696072 +1626568 5696352 1626688 5696104 1626600 5696072 1626536 5696264 +1626568 5696352 1626776 5696152 1626688 5696104 1626536 5696264 +1626568 5696352 1626592 5696408 1626776 5696152 1626536 5696264 +1626688 5696104 1626600 5696072 1626536 5696264 1626776 5696152 +1626536 5696264 1623760 5697136 1626568 5696352 1626776 5696152 +1626600 5696072 1626488 5696072 1626536 5696264 1626688 5696104 +1626488 5696072 1623760 5697136 1626536 5696264 1626600 5696072 +1626488 5696072 1626536 5696264 1626600 5696072 1626552 5696056 +1623760 5697136 1626512 5696208 1626488 5696072 1623728 5697072 +1626488 5696072 1623704 5697048 1623728 5697072 1626512 5696208 +1626536 5696264 1626512 5696208 1623760 5697136 1626568 5696352 +1623760 5697136 1626624 5696496 1626568 5696352 1626512 5696208 +1626536 5696264 1626488 5696072 1626512 5696208 1626568 5696352 +1626488 5696072 1626512 5696208 1626536 5696264 1626600 5696072 +1626536 5696264 1626688 5696104 1626600 5696072 1626512 5696208 +1626536 5696264 1626776 5696152 1626688 5696104 1626512 5696208 +1626512 5696208 1626568 5696352 1626536 5696264 1626688 5696104 +1626600 5696072 1626488 5696072 1626512 5696208 1626688 5696104 +1623760 5697136 1626568 5696352 1626512 5696208 1623728 5697072 +1626512 5696208 1626600 5696072 1626488 5696072 1623728 5697072 +1626488 5696072 1626512 5696208 1626600 5696072 1626552 5696056 +1626488 5696072 1626512 5696208 1626552 5696056 1626520 5696056 +1626512 5696208 1626688 5696104 1626600 5696072 1626552 5696056 +1626488 5696072 1623728 5697072 1626512 5696208 1626552 5696056 +1626512 5696208 1626480 5696112 1623728 5697072 1623760 5697136 +1623728 5697072 1626480 5696112 1626488 5696072 1623704 5697048 +1626488 5696072 1623632 5697024 1623704 5697048 1626480 5696112 +1626512 5696208 1626480 5696112 1623760 5697136 1626568 5696352 +1626512 5696208 1626488 5696072 1626480 5696112 1623760 5697136 +1626488 5696072 1626480 5696112 1626512 5696208 1626552 5696056 +1626488 5696072 1626480 5696112 1626552 5696056 1626520 5696056 +1626480 5696112 1623760 5697136 1626512 5696208 1626552 5696056 +1626480 5696112 1626512 5696208 1626552 5696056 1626520 5696056 +1626480 5696112 1623704 5697048 1623728 5697072 1623760 5697136 +1626480 5696112 1626520 5696056 1626488 5696072 1623704 5697048 +1626512 5696208 1626600 5696072 1626552 5696056 1626480 5696112 +1626512 5696208 1626688 5696104 1626600 5696072 1626480 5696112 +1626512 5696208 1626600 5696072 1626480 5696112 1623760 5697136 +1626552 5696056 1626520 5696056 1626480 5696112 1626600 5696072 +1663944 5646256 1629520 5698608 1630136 5704624 1631912 5713400 +1628488 5697448 1629520 5698608 1663944 5646256 1628464 5697392 +1663944 5646256 1628184 5696808 1628464 5697392 1629520 5698608 +1663944 5646256 1663880 5646248 1628184 5696808 1629520 5698608 +1663880 5646248 1628152 5696760 1628184 5696808 1629520 5698608 +1663880 5646248 1628120 5696720 1628152 5696760 1629520 5698608 +1663880 5646248 1628152 5696760 1629520 5698608 1663944 5646256 +1628184 5696808 1628304 5697064 1628464 5697392 1629520 5698608 +1628184 5696808 1628224 5696896 1628304 5697064 1629520 5698608 +1628224 5696896 1628272 5697000 1628304 5697064 1629520 5698608 +1628304 5697064 1628464 5697392 1629520 5698608 1628224 5696896 +1628304 5697064 1628376 5697224 1628464 5697392 1629520 5698608 +1628184 5696808 1628224 5696896 1629520 5698608 1628152 5696760 +1628464 5697392 1628488 5697448 1629520 5698608 1628304 5697064 +1630136 5704624 1629520 5698608 1628488 5697448 1628488 5697528 +1630136 5704624 1629520 5698608 1628488 5697528 1630064 5704496 +1628488 5697528 1628712 5701448 1630064 5704496 1629520 5698608 +1628712 5701448 1629944 5704312 1630064 5704496 1629520 5698608 +1628712 5701448 1628712 5701600 1629944 5704312 1629520 5698608 +1628488 5697528 1628632 5701384 1628712 5701448 1629520 5698608 +1628712 5701448 1629944 5704312 1629520 5698608 1628632 5701384 +1630064 5704496 1630136 5704624 1629520 5698608 1629944 5704312 +1629520 5698608 1628488 5697448 1628488 5697528 1628632 5701384 +1628488 5697528 1628288 5701200 1628632 5701384 1629520 5698608 +1628632 5701384 1628712 5701448 1629520 5698608 1628288 5701200 +1628488 5697528 1628288 5701200 1629520 5698608 1628488 5697448 +1628488 5697528 1628456 5697544 1628288 5701200 1629520 5698608 +1628456 5697544 1628128 5701160 1628288 5701200 1629520 5698608 +1628456 5697544 1628424 5697544 1628128 5701160 1629520 5698608 +1628424 5697544 1626344 5698984 1628128 5701160 1629520 5698608 +1626344 5698984 1627968 5701176 1628128 5701160 1629520 5698608 +1628424 5697544 1626344 5698984 1629520 5698608 1628456 5697544 +1628128 5701160 1628288 5701200 1629520 5698608 1626344 5698984 +1628488 5697528 1628456 5697544 1629520 5698608 1628488 5697448 +1628288 5701200 1628632 5701384 1629520 5698608 1628128 5701160 +1628456 5697544 1628424 5697544 1629520 5698608 1628488 5697528 +1628424 5697544 1628376 5697520 1626344 5698984 1629520 5698608 +1630136 5704624 1629520 5698608 1630064 5704496 1630112 5704600 +1629520 5698608 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1629520 5698608 1630064 5704496 +1628488 5697448 1628488 5697528 1629520 5698608 1628464 5697392 +1663944 5646256 1629592 5698584 1630136 5704624 1631912 5713400 +1629520 5698608 1629592 5698584 1663944 5646256 1663880 5646248 +1629520 5698608 1629592 5698584 1663880 5646248 1628152 5696760 +1663880 5646248 1628120 5696720 1628152 5696760 1629592 5698584 +1629520 5698608 1629592 5698584 1628152 5696760 1628184 5696808 +1629592 5698584 1663880 5646248 1628152 5696760 1628184 5696808 +1629520 5698608 1629592 5698584 1628184 5696808 1628224 5696896 +1629592 5698584 1628152 5696760 1628184 5696808 1628224 5696896 +1629520 5698608 1629592 5698584 1628224 5696896 1628304 5697064 +1628224 5696896 1628272 5697000 1628304 5697064 1629592 5698584 +1629520 5698608 1629592 5698584 1628304 5697064 1628464 5697392 +1629592 5698584 1628224 5696896 1628304 5697064 1628464 5697392 +1628304 5697064 1628376 5697224 1628464 5697392 1629592 5698584 +1629592 5698584 1628184 5696808 1628224 5696896 1628304 5697064 +1629520 5698608 1629592 5698584 1628464 5697392 1628488 5697448 +1629592 5698584 1628304 5697064 1628464 5697392 1628488 5697448 +1629592 5698584 1663944 5646256 1663880 5646248 1628152 5696760 +1630136 5704624 1629592 5698584 1629520 5698608 1630064 5704496 +1629520 5698608 1629944 5704312 1630064 5704496 1629592 5698584 +1629520 5698608 1628712 5701448 1629944 5704312 1629592 5698584 +1628712 5701448 1628712 5701600 1629944 5704312 1629592 5698584 +1629520 5698608 1628632 5701384 1628712 5701448 1629592 5698584 +1629944 5704312 1630064 5704496 1629592 5698584 1628712 5701448 +1630136 5704624 1629592 5698584 1630064 5704496 1630112 5704600 +1630064 5704496 1630136 5704624 1629592 5698584 1629944 5704312 +1629520 5698608 1628712 5701448 1629592 5698584 1628488 5697448 +1629520 5698608 1629592 5698584 1628488 5697448 1628488 5697528 +1629592 5698584 1628464 5697392 1628488 5697448 1628488 5697528 +1629520 5698608 1629592 5698584 1628488 5697528 1628456 5697544 +1629520 5698608 1628712 5701448 1629592 5698584 1628488 5697528 +1629592 5698584 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1629592 5698584 1630064 5704496 +1663944 5646256 1629664 5698592 1630136 5704624 1631912 5713400 +1629592 5698584 1629664 5698592 1663944 5646256 1663880 5646248 +1629592 5698584 1629664 5698592 1663880 5646248 1628152 5696760 +1663880 5646248 1628120 5696720 1628152 5696760 1629664 5698592 +1629592 5698584 1629664 5698592 1628152 5696760 1628184 5696808 +1629592 5698584 1629664 5698592 1628184 5696808 1628224 5696896 +1629664 5698592 1628152 5696760 1628184 5696808 1628224 5696896 +1629592 5698584 1629664 5698592 1628224 5696896 1628304 5697064 +1629664 5698592 1628184 5696808 1628224 5696896 1628304 5697064 +1628224 5696896 1628272 5697000 1628304 5697064 1629664 5698592 +1629592 5698584 1629664 5698592 1628304 5697064 1628464 5697392 +1629592 5698584 1629664 5698592 1628464 5697392 1628488 5697448 +1629664 5698592 1628304 5697064 1628464 5697392 1628488 5697448 +1628304 5697064 1628376 5697224 1628464 5697392 1629664 5698592 +1629664 5698592 1628224 5696896 1628304 5697064 1628464 5697392 +1629592 5698584 1629664 5698592 1628488 5697448 1628488 5697528 +1629664 5698592 1663880 5646248 1628152 5696760 1628184 5696808 +1629664 5698592 1663944 5646256 1663880 5646248 1628152 5696760 +1629592 5698584 1630136 5704624 1629664 5698592 1628488 5697448 +1630136 5704624 1629664 5698592 1629592 5698584 1630064 5704496 +1630136 5704624 1629664 5698592 1630064 5704496 1630112 5704600 +1629592 5698584 1629944 5704312 1630064 5704496 1629664 5698592 +1629592 5698584 1628712 5701448 1629944 5704312 1629664 5698592 +1629592 5698584 1629520 5698608 1628712 5701448 1629664 5698592 +1628712 5701448 1628712 5701600 1629944 5704312 1629664 5698592 +1629520 5698608 1628632 5701384 1628712 5701448 1629664 5698592 +1628712 5701448 1629944 5704312 1629664 5698592 1629520 5698608 +1629944 5704312 1630064 5704496 1629664 5698592 1628712 5701448 +1629664 5698592 1628488 5697448 1629592 5698584 1629520 5698608 +1630064 5704496 1630136 5704624 1629664 5698592 1629944 5704312 +1629664 5698592 1630136 5704624 1663944 5646256 1663880 5646248 +1630136 5704624 1663944 5646256 1629664 5698592 1630064 5704496 +1663944 5646256 1629760 5698616 1630136 5704624 1631912 5713400 +1630136 5704624 1631888 5713320 1631912 5713400 1629760 5698616 +1663944 5646256 1629760 5698616 1631912 5713400 1743800 5687320 +1629664 5698592 1629760 5698616 1663944 5646256 1663880 5646248 +1629664 5698592 1629760 5698616 1663880 5646248 1628152 5696760 +1663880 5646248 1628120 5696720 1628152 5696760 1629760 5698616 +1663880 5646248 1663776 5646144 1628120 5696720 1629760 5698616 +1629664 5698592 1629760 5698616 1628152 5696760 1628184 5696808 +1629664 5698592 1629760 5698616 1628184 5696808 1628224 5696896 +1629664 5698592 1629760 5698616 1628224 5696896 1628304 5697064 +1629760 5698616 1628184 5696808 1628224 5696896 1628304 5697064 +1628224 5696896 1628272 5697000 1628304 5697064 1629760 5698616 +1629664 5698592 1629760 5698616 1628304 5697064 1628464 5697392 +1629760 5698616 1628224 5696896 1628304 5697064 1628464 5697392 +1629664 5698592 1629760 5698616 1628464 5697392 1628488 5697448 +1629664 5698592 1629760 5698616 1628488 5697448 1629592 5698584 +1628304 5697064 1628376 5697224 1628464 5697392 1629760 5698616 +1628304 5697064 1628376 5697224 1629760 5698616 1628224 5696896 +1628304 5697064 1628328 5697136 1628376 5697224 1629760 5698616 +1628376 5697224 1628416 5697304 1628464 5697392 1629760 5698616 +1629760 5698616 1628376 5697224 1628464 5697392 1628488 5697448 +1629760 5698616 1628152 5696760 1628184 5696808 1628224 5696896 +1628152 5696760 1628184 5696808 1629760 5698616 1628120 5696720 +1629760 5698616 1663944 5646256 1663880 5646248 1628120 5696720 +1629664 5698592 1630136 5704624 1629760 5698616 1628488 5697448 +1630136 5704624 1629760 5698616 1629664 5698592 1630064 5704496 +1630136 5704624 1629760 5698616 1630064 5704496 1630112 5704600 +1629664 5698592 1629944 5704312 1630064 5704496 1629760 5698616 +1629664 5698592 1628712 5701448 1629944 5704312 1629760 5698616 +1628712 5701448 1628712 5701600 1629944 5704312 1629760 5698616 +1629664 5698592 1629520 5698608 1628712 5701448 1629760 5698616 +1629664 5698592 1629592 5698584 1629520 5698608 1629760 5698616 +1629520 5698608 1628632 5701384 1628712 5701448 1629760 5698616 +1629520 5698608 1628288 5701200 1628632 5701384 1629760 5698616 +1629520 5698608 1628632 5701384 1629760 5698616 1629664 5698592 +1628712 5701448 1629944 5704312 1629760 5698616 1628632 5701384 +1629944 5704312 1630064 5704496 1629760 5698616 1628712 5701448 +1629760 5698616 1628488 5697448 1629664 5698592 1629520 5698608 +1630064 5704496 1630136 5704624 1629760 5698616 1629944 5704312 +1663944 5646256 1663880 5646248 1629760 5698616 1631912 5713400 +1629760 5698616 1630064 5704496 1630136 5704624 1631912 5713400 +1631912 5713400 1629856 5698632 1629760 5698616 1630136 5704624 +1631912 5713400 1629856 5698632 1630136 5704624 1631888 5713320 +1663944 5646256 1629856 5698632 1631912 5713400 1743800 5687320 +1629760 5698616 1629856 5698632 1663944 5646256 1663880 5646248 +1629760 5698616 1629856 5698632 1663880 5646248 1628120 5696720 +1629760 5698616 1629856 5698632 1628120 5696720 1628152 5696760 +1663880 5646248 1663776 5646144 1628120 5696720 1629856 5698632 +1629760 5698616 1629856 5698632 1628152 5696760 1628184 5696808 +1629856 5698632 1628120 5696720 1628152 5696760 1628184 5696808 +1629760 5698616 1629856 5698632 1628184 5696808 1628224 5696896 +1629760 5698616 1629856 5698632 1628224 5696896 1628304 5697064 +1629760 5698616 1629856 5698632 1628304 5697064 1628376 5697224 +1629856 5698632 1628224 5696896 1628304 5697064 1628376 5697224 +1628224 5696896 1628272 5697000 1628304 5697064 1629856 5698632 +1628304 5697064 1628328 5697136 1628376 5697224 1629856 5698632 +1629760 5698616 1629856 5698632 1628376 5697224 1628464 5697392 +1629856 5698632 1628304 5697064 1628376 5697224 1628464 5697392 +1628376 5697224 1628416 5697304 1628464 5697392 1629856 5698632 +1629760 5698616 1629856 5698632 1628464 5697392 1628488 5697448 +1629760 5698616 1629856 5698632 1628488 5697448 1629664 5698592 +1628488 5697448 1629592 5698584 1629664 5698592 1629856 5698632 +1629856 5698632 1628376 5697224 1628464 5697392 1628488 5697448 +1629856 5698632 1628464 5697392 1628488 5697448 1629664 5698592 +1629856 5698632 1628184 5696808 1628224 5696896 1628304 5697064 +1629856 5698632 1628152 5696760 1628184 5696808 1628224 5696896 +1629856 5698632 1663880 5646248 1628120 5696720 1628152 5696760 +1629856 5698632 1663944 5646256 1663880 5646248 1628120 5696720 +1629856 5698632 1629664 5698592 1629760 5698616 1630136 5704624 +1629760 5698616 1630064 5704496 1630136 5704624 1629856 5698632 +1630136 5704624 1631912 5713400 1629856 5698632 1630064 5704496 +1630064 5704496 1630112 5704600 1630136 5704624 1629856 5698632 +1629760 5698616 1629944 5704312 1630064 5704496 1629856 5698632 +1629760 5698616 1628712 5701448 1629944 5704312 1629856 5698632 +1628712 5701448 1628712 5701600 1629944 5704312 1629856 5698632 +1629760 5698616 1628632 5701384 1628712 5701448 1629856 5698632 +1629760 5698616 1629520 5698608 1628632 5701384 1629856 5698632 +1629520 5698608 1628288 5701200 1628632 5701384 1629856 5698632 +1629760 5698616 1629664 5698592 1629520 5698608 1629856 5698632 +1628632 5701384 1628712 5701448 1629856 5698632 1629520 5698608 +1628712 5701448 1629944 5704312 1629856 5698632 1628632 5701384 +1629944 5704312 1630064 5704496 1629856 5698632 1628712 5701448 +1629760 5698616 1629520 5698608 1629856 5698632 1629664 5698592 +1630064 5704496 1630136 5704624 1629856 5698632 1629944 5704312 +1629856 5698632 1631912 5713400 1663944 5646256 1663880 5646248 +1631912 5713400 1663944 5646256 1629856 5698632 1630136 5704624 +1663944 5646256 1629888 5698656 1631912 5713400 1743800 5687320 +1629856 5698632 1629888 5698656 1663944 5646256 1663880 5646248 +1629856 5698632 1629888 5698656 1663880 5646248 1628120 5696720 +1663880 5646248 1663776 5646144 1628120 5696720 1629888 5698656 +1629856 5698632 1629888 5698656 1628120 5696720 1628152 5696760 +1629856 5698632 1629888 5698656 1628152 5696760 1628184 5696808 +1629856 5698632 1629888 5698656 1628184 5696808 1628224 5696896 +1629888 5698656 1628120 5696720 1628152 5696760 1628184 5696808 +1629888 5698656 1663880 5646248 1628120 5696720 1628152 5696760 +1629888 5698656 1663944 5646256 1663880 5646248 1628120 5696720 +1629856 5698632 1631912 5713400 1629888 5698656 1628184 5696808 +1631912 5713400 1629888 5698656 1629856 5698632 1630136 5704624 +1629856 5698632 1630064 5704496 1630136 5704624 1629888 5698656 +1631912 5713400 1629888 5698656 1630136 5704624 1631888 5713320 +1630136 5704624 1630152 5704824 1631888 5713320 1629888 5698656 +1630064 5704496 1630112 5704600 1630136 5704624 1629888 5698656 +1629856 5698632 1629944 5704312 1630064 5704496 1629888 5698656 +1630064 5704496 1630136 5704624 1629888 5698656 1629944 5704312 +1629856 5698632 1628712 5701448 1629944 5704312 1629888 5698656 +1628712 5701448 1628712 5701600 1629944 5704312 1629888 5698656 +1629856 5698632 1628632 5701384 1628712 5701448 1629888 5698656 +1629856 5698632 1629520 5698608 1628632 5701384 1629888 5698656 +1629520 5698608 1628288 5701200 1628632 5701384 1629888 5698656 +1629856 5698632 1629760 5698616 1629520 5698608 1629888 5698656 +1629760 5698616 1629664 5698592 1629520 5698608 1629888 5698656 +1629520 5698608 1628632 5701384 1629888 5698656 1629760 5698616 +1628632 5701384 1628712 5701448 1629888 5698656 1629520 5698608 +1628712 5701448 1629944 5704312 1629888 5698656 1628632 5701384 +1629944 5704312 1630064 5704496 1629888 5698656 1628712 5701448 +1629888 5698656 1628184 5696808 1629856 5698632 1629760 5698616 +1630136 5704624 1631888 5713320 1629888 5698656 1630064 5704496 +1629888 5698656 1631912 5713400 1663944 5646256 1663880 5646248 +1631912 5713400 1663944 5646256 1629888 5698656 1631888 5713320 +1663944 5646256 1629928 5698672 1631912 5713400 1743800 5687320 +1629888 5698656 1629928 5698672 1663944 5646256 1663880 5646248 +1629888 5698656 1629928 5698672 1663880 5646248 1628120 5696720 +1663880 5646248 1663776 5646144 1628120 5696720 1629928 5698672 +1629888 5698656 1629928 5698672 1628120 5696720 1628152 5696760 +1629888 5698656 1629928 5698672 1628152 5696760 1628184 5696808 +1629888 5698656 1629928 5698672 1628184 5696808 1629856 5698632 +1628184 5696808 1628224 5696896 1629856 5698632 1629928 5698672 +1629928 5698672 1628152 5696760 1628184 5696808 1629856 5698632 +1629928 5698672 1628120 5696720 1628152 5696760 1628184 5696808 +1629928 5698672 1663880 5646248 1628120 5696720 1628152 5696760 +1629928 5698672 1663944 5646256 1663880 5646248 1628120 5696720 +1629888 5698656 1631912 5713400 1629928 5698672 1629856 5698632 +1631912 5713400 1629928 5698672 1629888 5698656 1631888 5713320 +1629888 5698656 1630136 5704624 1631888 5713320 1629928 5698672 +1630136 5704624 1630152 5704824 1631888 5713320 1629928 5698672 +1629888 5698656 1630064 5704496 1630136 5704624 1629928 5698672 +1629888 5698656 1629944 5704312 1630064 5704496 1629928 5698672 +1630136 5704624 1631888 5713320 1629928 5698672 1630064 5704496 +1630064 5704496 1630112 5704600 1630136 5704624 1629928 5698672 +1629888 5698656 1628712 5701448 1629944 5704312 1629928 5698672 +1629944 5704312 1630064 5704496 1629928 5698672 1628712 5701448 +1628712 5701448 1628712 5701600 1629944 5704312 1629928 5698672 +1629888 5698656 1628632 5701384 1628712 5701448 1629928 5698672 +1629888 5698656 1629520 5698608 1628632 5701384 1629928 5698672 +1629520 5698608 1628288 5701200 1628632 5701384 1629928 5698672 +1629888 5698656 1629760 5698616 1629520 5698608 1629928 5698672 +1628632 5701384 1628712 5701448 1629928 5698672 1629520 5698608 +1628712 5701448 1629944 5704312 1629928 5698672 1628632 5701384 +1630064 5704496 1630136 5704624 1629928 5698672 1629944 5704312 +1631912 5713400 1663944 5646256 1629928 5698672 1631888 5713320 +1629928 5698672 1629856 5698632 1629888 5698656 1629520 5698608 +1631888 5713320 1631912 5713400 1629928 5698672 1630136 5704624 +1629928 5698672 1631912 5713400 1663944 5646256 1663880 5646248 +1663944 5646256 1629976 5698712 1631912 5713400 1743800 5687320 +1631912 5713400 1629976 5698712 1629928 5698672 1631888 5713320 +1631912 5713400 1663944 5646256 1629976 5698712 1631888 5713320 +1629928 5698672 1630136 5704624 1631888 5713320 1629976 5698712 +1629928 5698672 1630064 5704496 1630136 5704624 1629976 5698712 +1630136 5704624 1630152 5704824 1631888 5713320 1629976 5698712 +1630064 5704496 1630112 5704600 1630136 5704624 1629976 5698712 +1629928 5698672 1629944 5704312 1630064 5704496 1629976 5698712 +1629928 5698672 1628712 5701448 1629944 5704312 1629976 5698712 +1630064 5704496 1630136 5704624 1629976 5698712 1629944 5704312 +1628712 5701448 1628712 5701600 1629944 5704312 1629976 5698712 +1628712 5701600 1629752 5704128 1629944 5704312 1629976 5698712 +1628712 5701448 1628712 5701600 1629976 5698712 1629928 5698672 +1629928 5698672 1628632 5701384 1628712 5701448 1629976 5698712 +1628712 5701448 1628712 5701600 1629976 5698712 1628632 5701384 +1629928 5698672 1629520 5698608 1628632 5701384 1629976 5698712 +1629520 5698608 1628288 5701200 1628632 5701384 1629976 5698712 +1629928 5698672 1629888 5698656 1629520 5698608 1629976 5698712 +1629888 5698656 1629760 5698616 1629520 5698608 1629976 5698712 +1629888 5698656 1629856 5698632 1629760 5698616 1629976 5698712 +1629760 5698616 1629664 5698592 1629520 5698608 1629976 5698712 +1629888 5698656 1629760 5698616 1629976 5698712 1629928 5698672 +1629520 5698608 1628632 5701384 1629976 5698712 1629760 5698616 +1628632 5701384 1628712 5701448 1629976 5698712 1629520 5698608 +1629944 5704312 1630064 5704496 1629976 5698712 1628712 5701600 +1631888 5713320 1631912 5713400 1629976 5698712 1630136 5704624 +1630136 5704624 1631888 5713320 1629976 5698712 1630064 5704496 +1629928 5698672 1629976 5698712 1663944 5646256 1663880 5646248 +1629976 5698712 1631912 5713400 1663944 5646256 1663880 5646248 +1629928 5698672 1629976 5698712 1663880 5646248 1628120 5696720 +1663880 5646248 1663776 5646144 1628120 5696720 1629976 5698712 +1629928 5698672 1629976 5698712 1628120 5696720 1628152 5696760 +1629928 5698672 1629976 5698712 1628152 5696760 1628184 5696808 +1629976 5698712 1663880 5646248 1628120 5696720 1628152 5696760 +1629976 5698712 1663944 5646256 1663880 5646248 1628120 5696720 +1629976 5698712 1628152 5696760 1629928 5698672 1629888 5698656 +1663944 5646256 1630016 5698752 1631912 5713400 1743800 5687320 +1663944 5646256 1630016 5698752 1743800 5687320 1664040 5646192 +1631912 5713400 1743888 5687504 1743800 5687320 1630016 5698752 +1629976 5698712 1630016 5698752 1663944 5646256 1663880 5646248 +1629976 5698712 1631912 5713400 1630016 5698752 1663880 5646248 +1631912 5713400 1630016 5698752 1629976 5698712 1631888 5713320 +1629976 5698712 1630136 5704624 1631888 5713320 1630016 5698752 +1630136 5704624 1630152 5704824 1631888 5713320 1630016 5698752 +1630016 5698752 1663880 5646248 1629976 5698712 1630136 5704624 +1631888 5713320 1631912 5713400 1630016 5698752 1630136 5704624 +1663944 5646256 1663880 5646248 1630016 5698752 1743800 5687320 +1630016 5698752 1631888 5713320 1631912 5713400 1743800 5687320 +1629976 5698712 1630064 5704496 1630136 5704624 1630016 5698752 +1629976 5698712 1629944 5704312 1630064 5704496 1630016 5698752 +1630064 5704496 1630112 5704600 1630136 5704624 1630016 5698752 +1629976 5698712 1628712 5701600 1629944 5704312 1630016 5698752 +1628712 5701600 1629752 5704128 1629944 5704312 1630016 5698752 +1629944 5704312 1630064 5704496 1630016 5698752 1629752 5704128 +1628712 5701600 1629472 5703936 1629752 5704128 1630016 5698752 +1629976 5698712 1628712 5701448 1628712 5701600 1630016 5698752 +1629976 5698712 1628632 5701384 1628712 5701448 1630016 5698752 +1628712 5701448 1628712 5701600 1630016 5698752 1628632 5701384 +1629976 5698712 1629520 5698608 1628632 5701384 1630016 5698752 +1628632 5701384 1628712 5701448 1630016 5698752 1629520 5698608 +1629520 5698608 1628288 5701200 1628632 5701384 1630016 5698752 +1629976 5698712 1629760 5698616 1629520 5698608 1630016 5698752 +1629760 5698616 1629664 5698592 1629520 5698608 1630016 5698752 +1629976 5698712 1629888 5698656 1629760 5698616 1630016 5698752 +1629888 5698656 1629856 5698632 1629760 5698616 1630016 5698752 +1629976 5698712 1629928 5698672 1629888 5698656 1630016 5698752 +1629760 5698616 1629520 5698608 1630016 5698752 1629888 5698656 +1629520 5698608 1628632 5701384 1630016 5698752 1629760 5698616 +1628712 5701600 1629752 5704128 1630016 5698752 1628712 5701448 +1630136 5704624 1631888 5713320 1630016 5698752 1630064 5704496 +1629976 5698712 1629888 5698656 1630016 5698752 1663880 5646248 +1630064 5704496 1630136 5704624 1630016 5698752 1629944 5704312 +1629976 5698712 1630016 5698752 1663880 5646248 1628120 5696720 +1630016 5698752 1630064 5698800 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630064 5698800 +1743800 5687320 1630064 5698800 1631912 5713400 1743888 5687504 +1630016 5698752 1630064 5698800 1663944 5646256 1663880 5646248 +1630064 5698800 1743800 5687320 1663944 5646256 1663880 5646248 +1630016 5698752 1630064 5698800 1663880 5646248 1629976 5698712 +1630016 5698752 1631912 5713400 1630064 5698800 1663880 5646248 +1631912 5713400 1630064 5698800 1630016 5698752 1631888 5713320 +1630016 5698752 1630136 5704624 1631888 5713320 1630064 5698800 +1630136 5704624 1630152 5704824 1631888 5713320 1630064 5698800 +1630016 5698752 1630064 5704496 1630136 5704624 1630064 5698800 +1630064 5704496 1630112 5704600 1630136 5704624 1630064 5698800 +1630136 5704624 1631888 5713320 1630064 5698800 1630064 5704496 +1630064 5698800 1663880 5646248 1630016 5698752 1630064 5704496 +1631888 5713320 1631912 5713400 1630064 5698800 1630136 5704624 +1630016 5698752 1629944 5704312 1630064 5704496 1630064 5698800 +1630016 5698752 1629752 5704128 1629944 5704312 1630064 5698800 +1630016 5698752 1628712 5701600 1629752 5704128 1630064 5698800 +1629752 5704128 1629944 5704312 1630064 5698800 1628712 5701600 +1628712 5701600 1629472 5703936 1629752 5704128 1630064 5698800 +1630016 5698752 1628712 5701448 1628712 5701600 1630064 5698800 +1628712 5701600 1629752 5704128 1630064 5698800 1628712 5701448 +1630016 5698752 1628632 5701384 1628712 5701448 1630064 5698800 +1630016 5698752 1629520 5698608 1628632 5701384 1630064 5698800 +1628632 5701384 1628712 5701448 1630064 5698800 1629520 5698608 +1629520 5698608 1628288 5701200 1628632 5701384 1630064 5698800 +1630016 5698752 1629760 5698616 1629520 5698608 1630064 5698800 +1628712 5701448 1628712 5701600 1630064 5698800 1628632 5701384 +1630064 5704496 1630136 5704624 1630064 5698800 1629944 5704312 +1630016 5698752 1629520 5698608 1630064 5698800 1663880 5646248 +1629944 5704312 1630064 5704496 1630064 5698800 1629752 5704128 +1630064 5698800 1631912 5713400 1743800 5687320 1663944 5646256 +1631912 5713400 1743800 5687320 1630064 5698800 1631888 5713320 +1743800 5687320 1630104 5698856 1631912 5713400 1743888 5687504 +1630064 5698800 1630104 5698856 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630104 5698856 +1630064 5698800 1630104 5698856 1663944 5646256 1663880 5646248 +1630064 5698800 1630104 5698856 1663880 5646248 1630016 5698752 +1630104 5698856 1743800 5687320 1663944 5646256 1663880 5646248 +1630064 5698800 1631912 5713400 1630104 5698856 1663880 5646248 +1631912 5713400 1630104 5698856 1630064 5698800 1631888 5713320 +1630064 5698800 1630136 5704624 1631888 5713320 1630104 5698856 +1630136 5704624 1630152 5704824 1631888 5713320 1630104 5698856 +1630064 5698800 1630064 5704496 1630136 5704624 1630104 5698856 +1630064 5704496 1630112 5704600 1630136 5704624 1630104 5698856 +1630064 5698800 1629944 5704312 1630064 5704496 1630104 5698856 +1630064 5704496 1630136 5704624 1630104 5698856 1629944 5704312 +1630136 5704624 1631888 5713320 1630104 5698856 1630064 5704496 +1630064 5698800 1629752 5704128 1629944 5704312 1630104 5698856 +1630064 5698800 1628712 5701600 1629752 5704128 1630104 5698856 +1630064 5698800 1628712 5701448 1628712 5701600 1630104 5698856 +1628712 5701600 1629752 5704128 1630104 5698856 1628712 5701448 +1628712 5701600 1629472 5703936 1629752 5704128 1630104 5698856 +1630064 5698800 1628632 5701384 1628712 5701448 1630104 5698856 +1628712 5701448 1628712 5701600 1630104 5698856 1628632 5701384 +1630064 5698800 1629520 5698608 1628632 5701384 1630104 5698856 +1630064 5698800 1630016 5698752 1629520 5698608 1630104 5698856 +1629520 5698608 1628632 5701384 1630104 5698856 1630016 5698752 +1629520 5698608 1628288 5701200 1628632 5701384 1630104 5698856 +1630016 5698752 1629760 5698616 1629520 5698608 1630104 5698856 +1630016 5698752 1629760 5698616 1630104 5698856 1630064 5698800 +1629520 5698608 1628632 5701384 1630104 5698856 1629760 5698616 +1629760 5698616 1629664 5698592 1629520 5698608 1630104 5698856 +1630016 5698752 1629888 5698656 1629760 5698616 1630104 5698856 +1628632 5701384 1628712 5701448 1630104 5698856 1629520 5698608 +1629944 5704312 1630064 5704496 1630104 5698856 1629752 5704128 +1629752 5704128 1629944 5704312 1630104 5698856 1628712 5701600 +1630104 5698856 1663880 5646248 1630064 5698800 1630016 5698752 +1631888 5713320 1631912 5713400 1630104 5698856 1630136 5704624 +1630104 5698856 1631912 5713400 1743800 5687320 1663944 5646256 +1631912 5713400 1743800 5687320 1630104 5698856 1631888 5713320 +1743800 5687320 1630136 5698912 1631912 5713400 1743888 5687504 +1630104 5698856 1630136 5698912 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630136 5698912 +1630104 5698856 1630136 5698912 1663944 5646256 1663880 5646248 +1630104 5698856 1631912 5713400 1630136 5698912 1663944 5646256 +1631912 5713400 1630136 5698912 1630104 5698856 1631888 5713320 +1630104 5698856 1630136 5704624 1631888 5713320 1630136 5698912 +1630136 5704624 1630152 5704824 1631888 5713320 1630136 5698912 +1630104 5698856 1630064 5704496 1630136 5704624 1630136 5698912 +1630064 5704496 1630112 5704600 1630136 5704624 1630136 5698912 +1630104 5698856 1629944 5704312 1630064 5704496 1630136 5698912 +1630104 5698856 1629752 5704128 1629944 5704312 1630136 5698912 +1629944 5704312 1630064 5704496 1630136 5698912 1629752 5704128 +1630064 5704496 1630136 5704624 1630136 5698912 1629944 5704312 +1630104 5698856 1628712 5701600 1629752 5704128 1630136 5698912 +1630104 5698856 1628712 5701448 1628712 5701600 1630136 5698912 +1630104 5698856 1628632 5701384 1628712 5701448 1630136 5698912 +1628712 5701448 1628712 5701600 1630136 5698912 1628632 5701384 +1628712 5701600 1629472 5703936 1629752 5704128 1630136 5698912 +1630104 5698856 1629520 5698608 1628632 5701384 1630136 5698912 +1628632 5701384 1628712 5701448 1630136 5698912 1629520 5698608 +1630104 5698856 1629760 5698616 1629520 5698608 1630136 5698912 +1629520 5698608 1628288 5701200 1628632 5701384 1630136 5698912 +1629760 5698616 1629664 5698592 1629520 5698608 1630136 5698912 +1630104 5698856 1630016 5698752 1629760 5698616 1630136 5698912 +1630104 5698856 1630064 5698800 1630016 5698752 1630136 5698912 +1629760 5698616 1629520 5698608 1630136 5698912 1630016 5698752 +1630016 5698752 1629888 5698656 1629760 5698616 1630136 5698912 +1629520 5698608 1628632 5701384 1630136 5698912 1629760 5698616 +1629752 5704128 1629944 5704312 1630136 5698912 1628712 5701600 +1628712 5701600 1629752 5704128 1630136 5698912 1628712 5701448 +1630136 5704624 1631888 5713320 1630136 5698912 1630064 5704496 +1630136 5698912 1663944 5646256 1630104 5698856 1630016 5698752 +1631888 5713320 1631912 5713400 1630136 5698912 1630136 5704624 +1630136 5698912 1631912 5713400 1743800 5687320 1663944 5646256 +1631912 5713400 1743800 5687320 1630136 5698912 1631888 5713320 +1630136 5704624 1630152 5704824 1631888 5713320 1630136 5698968 +1630064 5704496 1630112 5704600 1630136 5704624 1630136 5698968 +1630136 5698912 1629944 5704312 1630064 5704496 1630136 5698968 +1630136 5698912 1629752 5704128 1629944 5704312 1630136 5698968 +1630136 5698912 1628712 5701600 1629752 5704128 1630136 5698968 +1628712 5701600 1629472 5703936 1629752 5704128 1630136 5698968 +1629752 5704128 1629944 5704312 1630136 5698968 1628712 5701600 +1629944 5704312 1630064 5704496 1630136 5698968 1629752 5704128 +1630136 5698912 1628712 5701448 1628712 5701600 1630136 5698968 +1630136 5698912 1628632 5701384 1628712 5701448 1630136 5698968 +1630136 5698912 1629520 5698608 1628632 5701384 1630136 5698968 +1628632 5701384 1628712 5701448 1630136 5698968 1629520 5698608 +1629520 5698608 1628288 5701200 1628632 5701384 1630136 5698968 +1629520 5698608 1628288 5701200 1630136 5698968 1630136 5698912 +1628632 5701384 1628712 5701448 1630136 5698968 1628288 5701200 +1629520 5698608 1628128 5701160 1628288 5701200 1630136 5698968 +1630136 5698912 1629760 5698616 1629520 5698608 1630136 5698968 +1629520 5698608 1628288 5701200 1630136 5698968 1629760 5698616 +1630136 5698912 1630016 5698752 1629760 5698616 1630136 5698968 +1629760 5698616 1629664 5698592 1629520 5698608 1630136 5698968 +1630016 5698752 1629888 5698656 1629760 5698616 1630136 5698968 +1630136 5698912 1630104 5698856 1630016 5698752 1630136 5698968 +1630104 5698856 1630064 5698800 1630016 5698752 1630136 5698968 +1630016 5698752 1629760 5698616 1630136 5698968 1630064 5698800 +1630104 5698856 1630064 5698800 1630136 5698968 1630136 5698912 +1629760 5698616 1629520 5698608 1630136 5698968 1630016 5698752 +1628712 5701600 1629752 5704128 1630136 5698968 1628712 5701448 +1628712 5701448 1628712 5701600 1630136 5698968 1628632 5701384 +1630136 5698912 1630104 5698856 1630136 5698968 1631888 5713320 +1630136 5698912 1630136 5698968 1631888 5713320 1631912 5713400 +1630136 5698912 1630104 5698856 1630136 5698968 1631912 5713400 +1630064 5704496 1630136 5704624 1630136 5698968 1629944 5704312 +1630136 5698912 1630136 5698968 1631912 5713400 1743800 5687320 +1631912 5713400 1743888 5687504 1743800 5687320 1630136 5698968 +1630136 5698912 1630104 5698856 1630136 5698968 1743800 5687320 +1630136 5698968 1631888 5713320 1631912 5713400 1743800 5687320 +1630136 5698912 1630136 5698968 1743800 5687320 1663944 5646256 +1630136 5698968 1630136 5704624 1631888 5713320 1631912 5713400 +1629520 5698608 1630080 5698992 1630136 5698968 1629760 5698616 +1630136 5698968 1630080 5698992 1628288 5701200 1628632 5701384 +1630136 5698968 1630080 5698992 1628632 5701384 1628712 5701448 +1630080 5698992 1628288 5701200 1628632 5701384 1628712 5701448 +1629520 5698608 1630080 5698992 1629760 5698616 1629664 5698592 +1628288 5701200 1630080 5698992 1629520 5698608 1628128 5701160 +1630136 5698968 1630016 5698752 1629760 5698616 1630080 5698992 +1629760 5698616 1629520 5698608 1630080 5698992 1630016 5698752 +1630136 5698968 1630064 5698800 1630016 5698752 1630080 5698992 +1630136 5698968 1630104 5698856 1630064 5698800 1630080 5698992 +1630064 5698800 1630016 5698752 1630080 5698992 1630104 5698856 +1630016 5698752 1629888 5698656 1629760 5698616 1630080 5698992 +1629760 5698616 1629520 5698608 1630080 5698992 1629888 5698656 +1629888 5698656 1629856 5698632 1629760 5698616 1630080 5698992 +1630016 5698752 1629976 5698712 1629888 5698656 1630080 5698992 +1629976 5698712 1629928 5698672 1629888 5698656 1630080 5698992 +1629888 5698656 1629760 5698616 1630080 5698992 1629976 5698712 +1630136 5698968 1630136 5698912 1630104 5698856 1630080 5698992 +1630104 5698856 1630064 5698800 1630080 5698992 1630136 5698912 +1630016 5698752 1629976 5698712 1630080 5698992 1630064 5698800 +1630136 5698968 1630080 5698992 1628712 5701448 1628712 5701600 +1630080 5698992 1628712 5701448 1630136 5698968 1630136 5698912 +1630080 5698992 1629520 5698608 1628288 5701200 1628632 5701384 +1629520 5698608 1628288 5701200 1630080 5698992 1629760 5698616 +1628288 5701200 1630032 5698984 1629520 5698608 1628128 5701160 +1630080 5698992 1630032 5698984 1628288 5701200 1628632 5701384 +1630080 5698992 1630032 5698984 1628632 5701384 1628712 5701448 +1630080 5698992 1630032 5698984 1628712 5701448 1630136 5698968 +1630032 5698984 1628288 5701200 1628632 5701384 1628712 5701448 +1630080 5698992 1629520 5698608 1630032 5698984 1628712 5701448 +1629520 5698608 1630032 5698984 1630080 5698992 1629760 5698616 +1630080 5698992 1629888 5698656 1629760 5698616 1630032 5698984 +1629888 5698656 1629856 5698632 1629760 5698616 1630032 5698984 +1629520 5698608 1630032 5698984 1629760 5698616 1629664 5698592 +1630080 5698992 1629976 5698712 1629888 5698656 1630032 5698984 +1629888 5698656 1629760 5698616 1630032 5698984 1629976 5698712 +1630080 5698992 1630016 5698752 1629976 5698712 1630032 5698984 +1629976 5698712 1629928 5698672 1629888 5698656 1630032 5698984 +1629976 5698712 1629888 5698656 1630032 5698984 1630016 5698752 +1630080 5698992 1630064 5698800 1630016 5698752 1630032 5698984 +1630080 5698992 1630104 5698856 1630064 5698800 1630032 5698984 +1630080 5698992 1630136 5698912 1630104 5698856 1630032 5698984 +1630104 5698856 1630064 5698800 1630032 5698984 1630136 5698912 +1630016 5698752 1629976 5698712 1630032 5698984 1630064 5698800 +1630080 5698992 1630136 5698968 1630136 5698912 1630032 5698984 +1630064 5698800 1630016 5698752 1630032 5698984 1630104 5698856 +1630032 5698984 1628712 5701448 1630080 5698992 1630136 5698912 +1629760 5698616 1629520 5698608 1630032 5698984 1629888 5698656 +1630032 5698984 1629520 5698608 1628288 5701200 1628632 5701384 +1629520 5698608 1628288 5701200 1630032 5698984 1629760 5698616 +1628288 5701200 1629944 5698960 1629520 5698608 1628128 5701160 +1630032 5698984 1629944 5698960 1628288 5701200 1628632 5701384 +1629944 5698960 1629520 5698608 1628288 5701200 1628632 5701384 +1630032 5698984 1629944 5698960 1628632 5701384 1628712 5701448 +1630032 5698984 1629944 5698960 1628712 5701448 1630080 5698992 +1629944 5698960 1628288 5701200 1628632 5701384 1628712 5701448 +1630032 5698984 1629520 5698608 1629944 5698960 1628712 5701448 +1629520 5698608 1629944 5698960 1630032 5698984 1629760 5698616 +1629520 5698608 1628288 5701200 1629944 5698960 1629760 5698616 +1629520 5698608 1629944 5698960 1629760 5698616 1629664 5698592 +1629944 5698960 1630032 5698984 1629760 5698616 1629664 5698592 +1629520 5698608 1628288 5701200 1629944 5698960 1629664 5698592 +1629520 5698608 1629944 5698960 1629664 5698592 1629592 5698584 +1630032 5698984 1629888 5698656 1629760 5698616 1629944 5698960 +1630032 5698984 1629976 5698712 1629888 5698656 1629944 5698960 +1629760 5698616 1629664 5698592 1629944 5698960 1629888 5698656 +1629888 5698656 1629856 5698632 1629760 5698616 1629944 5698960 +1629976 5698712 1629928 5698672 1629888 5698656 1629944 5698960 +1630032 5698984 1630016 5698752 1629976 5698712 1629944 5698960 +1629976 5698712 1629888 5698656 1629944 5698960 1630016 5698752 +1630032 5698984 1630064 5698800 1630016 5698752 1629944 5698960 +1630016 5698752 1629976 5698712 1629944 5698960 1630064 5698800 +1630032 5698984 1630104 5698856 1630064 5698800 1629944 5698960 +1630032 5698984 1630136 5698912 1630104 5698856 1629944 5698960 +1630064 5698800 1630016 5698752 1629944 5698960 1630104 5698856 +1629888 5698656 1629760 5698616 1629944 5698960 1629976 5698712 +1629944 5698960 1628712 5701448 1630032 5698984 1630104 5698856 +1629944 5698960 1629856 5698944 1628288 5701200 1628632 5701384 +1629520 5698608 1629856 5698944 1629944 5698960 1629664 5698592 +1629944 5698960 1629664 5698592 1629856 5698944 1628632 5701384 +1629856 5698944 1629520 5698608 1628288 5701200 1628632 5701384 +1629520 5698608 1628288 5701200 1629856 5698944 1629664 5698592 +1629520 5698608 1629856 5698944 1629664 5698592 1629592 5698584 +1629944 5698960 1629760 5698616 1629664 5698592 1629856 5698944 +1629944 5698960 1629888 5698656 1629760 5698616 1629856 5698944 +1629664 5698592 1629520 5698608 1629856 5698944 1629760 5698616 +1629944 5698960 1629888 5698656 1629856 5698944 1628632 5701384 +1629888 5698656 1629856 5698632 1629760 5698616 1629856 5698944 +1629760 5698616 1629664 5698592 1629856 5698944 1629888 5698656 +1628288 5701200 1629856 5698944 1629520 5698608 1628128 5701160 +1629944 5698960 1629976 5698712 1629888 5698656 1629856 5698944 +1629944 5698960 1630016 5698752 1629976 5698712 1629856 5698944 +1629888 5698656 1629760 5698616 1629856 5698944 1629976 5698712 +1629944 5698960 1630016 5698752 1629856 5698944 1628632 5701384 +1629976 5698712 1629928 5698672 1629888 5698656 1629856 5698944 +1629888 5698656 1629760 5698616 1629856 5698944 1629928 5698672 +1629944 5698960 1630064 5698800 1630016 5698752 1629856 5698944 +1629976 5698712 1629928 5698672 1629856 5698944 1630016 5698752 +1629944 5698960 1629856 5698944 1628632 5701384 1628712 5701448 +1629856 5698944 1628288 5701200 1628632 5701384 1628712 5701448 +1629944 5698960 1630016 5698752 1629856 5698944 1628712 5701448 +1629944 5698960 1629856 5698944 1628712 5701448 1630032 5698984 +1629944 5698960 1630016 5698752 1629856 5698944 1630032 5698984 +1628712 5701448 1630080 5698992 1630032 5698984 1629856 5698944 +1629856 5698944 1628632 5701384 1628712 5701448 1630032 5698984 +1629856 5698944 1629776 5698928 1628288 5701200 1628632 5701384 +1629856 5698944 1629776 5698928 1628632 5701384 1628712 5701448 +1629856 5698944 1629520 5698608 1629776 5698928 1628632 5701384 +1629520 5698608 1629776 5698928 1629856 5698944 1629664 5698592 +1629856 5698944 1629760 5698616 1629664 5698592 1629776 5698928 +1629776 5698928 1628632 5701384 1629856 5698944 1629760 5698616 +1629664 5698592 1629520 5698608 1629776 5698928 1629760 5698616 +1629776 5698928 1629520 5698608 1628288 5701200 1628632 5701384 +1629520 5698608 1628288 5701200 1629776 5698928 1629664 5698592 +1629520 5698608 1629776 5698928 1629664 5698592 1629592 5698584 +1629856 5698944 1629888 5698656 1629760 5698616 1629776 5698928 +1629856 5698944 1629928 5698672 1629888 5698656 1629776 5698928 +1629760 5698616 1629664 5698592 1629776 5698928 1629888 5698656 +1629856 5698944 1629888 5698656 1629776 5698928 1628632 5701384 +1629888 5698656 1629856 5698632 1629760 5698616 1629776 5698928 +1628288 5701200 1629776 5698928 1629520 5698608 1628128 5701160 +1628288 5701200 1628632 5701384 1629776 5698928 1628128 5701160 +1629776 5698928 1629664 5698592 1629520 5698608 1628128 5701160 +1629520 5698608 1626344 5698984 1628128 5701160 1629776 5698928 +1629520 5698608 1629680 5698904 1629776 5698928 1629664 5698592 +1629776 5698928 1629760 5698616 1629664 5698592 1629680 5698904 +1629776 5698928 1629888 5698656 1629760 5698616 1629680 5698904 +1629680 5698904 1628128 5701160 1629776 5698928 1629760 5698616 +1629664 5698592 1629520 5698608 1629680 5698904 1629760 5698616 +1629520 5698608 1628128 5701160 1629680 5698904 1629664 5698592 +1629520 5698608 1629680 5698904 1629664 5698592 1629592 5698584 +1629680 5698904 1629760 5698616 1629664 5698592 1629592 5698584 +1629520 5698608 1628128 5701160 1629680 5698904 1629592 5698584 +1628128 5701160 1629680 5698904 1629520 5698608 1626344 5698984 +1629776 5698928 1629680 5698904 1628128 5701160 1628288 5701200 +1629776 5698928 1629680 5698904 1628288 5701200 1628632 5701384 +1629776 5698928 1629680 5698904 1628632 5701384 1629856 5698944 +1629776 5698928 1629760 5698616 1629680 5698904 1628632 5701384 +1629680 5698904 1629520 5698608 1628128 5701160 1628288 5701200 +1629680 5698904 1628128 5701160 1628288 5701200 1628632 5701384 +1629680 5698904 1629600 5698864 1628128 5701160 1628288 5701200 +1629680 5698904 1629520 5698608 1629600 5698864 1628288 5701200 +1629520 5698608 1629600 5698864 1629680 5698904 1629592 5698584 +1629600 5698864 1628288 5701200 1629680 5698904 1629592 5698584 +1629600 5698864 1629520 5698608 1628128 5701160 1628288 5701200 +1629520 5698608 1628128 5701160 1629600 5698864 1629592 5698584 +1629680 5698904 1629664 5698592 1629592 5698584 1629600 5698864 +1629680 5698904 1629760 5698616 1629664 5698592 1629600 5698864 +1629680 5698904 1629776 5698928 1629760 5698616 1629600 5698864 +1629680 5698904 1629760 5698616 1629600 5698864 1628288 5701200 +1629592 5698584 1629520 5698608 1629600 5698864 1629664 5698592 +1629664 5698592 1629592 5698584 1629600 5698864 1629760 5698616 +1628128 5701160 1629600 5698864 1629520 5698608 1626344 5698984 +1628128 5701160 1629600 5698864 1626344 5698984 1627968 5701176 +1628128 5701160 1628288 5701200 1629600 5698864 1626344 5698984 +1629600 5698864 1629592 5698584 1629520 5698608 1626344 5698984 +1629520 5698608 1628424 5697544 1626344 5698984 1629600 5698864 +1629680 5698904 1629600 5698864 1628288 5701200 1628632 5701384 +1629520 5698608 1629568 5698848 1629600 5698864 1629592 5698584 +1629600 5698864 1629664 5698592 1629592 5698584 1629568 5698848 +1629568 5698848 1626344 5698984 1629600 5698864 1629664 5698592 +1629592 5698584 1629520 5698608 1629568 5698848 1629664 5698592 +1629520 5698608 1626344 5698984 1629568 5698848 1629592 5698584 +1629600 5698864 1629760 5698616 1629664 5698592 1629568 5698848 +1626344 5698984 1629568 5698848 1629520 5698608 1628424 5697544 +1626344 5698984 1629600 5698864 1629568 5698848 1628424 5697544 +1629568 5698848 1629592 5698584 1629520 5698608 1628424 5697544 +1629520 5698608 1628456 5697544 1628424 5697544 1629568 5698848 +1629600 5698864 1629568 5698848 1626344 5698984 1628128 5701160 +1626344 5698984 1627968 5701176 1628128 5701160 1629568 5698848 +1629600 5698864 1629568 5698848 1628128 5701160 1628288 5701200 +1629600 5698864 1629568 5698848 1628288 5701200 1629680 5698904 +1629600 5698864 1629664 5698592 1629568 5698848 1628288 5701200 +1629568 5698848 1628424 5697544 1626344 5698984 1628128 5701160 +1629568 5698848 1626344 5698984 1628128 5701160 1628288 5701200 +1626344 5698984 1629568 5698848 1628424 5697544 1628376 5697520 +1629520 5698608 1629544 5698768 1629568 5698848 1629592 5698584 +1629568 5698848 1629664 5698592 1629592 5698584 1629544 5698768 +1629568 5698848 1629600 5698864 1629664 5698592 1629544 5698768 +1629664 5698592 1629592 5698584 1629544 5698768 1629600 5698864 +1629544 5698768 1628424 5697544 1629568 5698848 1629600 5698864 +1629592 5698584 1629520 5698608 1629544 5698768 1629664 5698592 +1629520 5698608 1628424 5697544 1629544 5698768 1629592 5698584 +1629600 5698864 1629760 5698616 1629664 5698592 1629544 5698768 +1629600 5698864 1629680 5698904 1629760 5698616 1629544 5698768 +1629600 5698864 1629760 5698616 1629544 5698768 1629568 5698848 +1629664 5698592 1629592 5698584 1629544 5698768 1629760 5698616 +1629568 5698848 1629544 5698768 1628424 5697544 1626344 5698984 +1629568 5698848 1629544 5698768 1626344 5698984 1628128 5701160 +1629568 5698848 1629600 5698864 1629544 5698768 1626344 5698984 +1629544 5698768 1629520 5698608 1628424 5697544 1626344 5698984 +1628424 5697544 1629544 5698768 1629520 5698608 1628456 5697544 +1628424 5697544 1628376 5697520 1626344 5698984 1629544 5698768 +1629544 5698768 1629512 5698656 1628424 5697544 1626344 5698984 +1629544 5698768 1629520 5698608 1629512 5698656 1626344 5698984 +1629520 5698608 1629512 5698656 1629544 5698768 1629592 5698584 +1629544 5698768 1629664 5698592 1629592 5698584 1629512 5698656 +1629512 5698656 1626344 5698984 1629544 5698768 1629592 5698584 +1629512 5698656 1629520 5698608 1628424 5697544 1626344 5698984 +1629520 5698608 1628424 5697544 1629512 5698656 1629592 5698584 +1629544 5698768 1629512 5698656 1626344 5698984 1629568 5698848 +1628424 5697544 1629512 5698656 1629520 5698608 1628456 5697544 +1628424 5697544 1626344 5698984 1629512 5698656 1628456 5697544 +1629512 5698656 1629592 5698584 1629520 5698608 1628456 5697544 +1629520 5698608 1628488 5697528 1628456 5697544 1629512 5698656 +1628424 5697544 1628376 5697520 1626344 5698984 1629512 5698656 +1743800 5687320 1630392 5699112 1631912 5713400 1743888 5687504 +1631912 5713400 1630392 5699112 1630136 5698968 1631888 5713320 +1631912 5713400 1743800 5687320 1630392 5699112 1631888 5713320 +1630392 5699112 1743800 5687320 1630136 5698968 1631888 5713320 +1630136 5698968 1630392 5699112 1743800 5687320 1630136 5698912 +1630392 5699112 1631912 5713400 1743800 5687320 1630136 5698912 +1630136 5698968 1631888 5713320 1630392 5699112 1630136 5698912 +1743800 5687320 1663944 5646256 1630136 5698912 1630392 5699112 +1743800 5687320 1664040 5646192 1663944 5646256 1630392 5699112 +1743800 5687320 1663944 5646256 1630392 5699112 1631912 5713400 +1663944 5646256 1630104 5698856 1630136 5698912 1630392 5699112 +1663944 5646256 1663880 5646248 1630104 5698856 1630392 5699112 +1663880 5646248 1630064 5698800 1630104 5698856 1630392 5699112 +1663880 5646248 1630016 5698752 1630064 5698800 1630392 5699112 +1630064 5698800 1630104 5698856 1630392 5699112 1630016 5698752 +1663880 5646248 1629976 5698712 1630016 5698752 1630392 5699112 +1630016 5698752 1630064 5698800 1630392 5699112 1629976 5698712 +1663880 5646248 1628120 5696720 1629976 5698712 1630392 5699112 +1663880 5646248 1663776 5646144 1628120 5696720 1630392 5699112 +1629976 5698712 1630016 5698752 1630392 5699112 1628120 5696720 +1628120 5696720 1628152 5696760 1629976 5698712 1630392 5699112 +1663880 5646248 1628120 5696720 1630392 5699112 1663944 5646256 +1630104 5698856 1630136 5698912 1630392 5699112 1630064 5698800 +1663944 5646256 1663880 5646248 1630392 5699112 1743800 5687320 +1630136 5698912 1630136 5698968 1630392 5699112 1630104 5698856 +1630136 5698968 1630136 5704624 1631888 5713320 1630392 5699112 +1630136 5704624 1630152 5704824 1631888 5713320 1630392 5699112 +1630136 5698968 1630136 5704624 1630392 5699112 1630136 5698912 +1630152 5704824 1630096 5705696 1631888 5713320 1630392 5699112 +1630136 5704624 1630128 5704656 1630152 5704824 1630392 5699112 +1631888 5713320 1631912 5713400 1630392 5699112 1630152 5704824 +1630136 5704624 1630152 5704824 1630392 5699112 1630136 5698968 +1630136 5698968 1630064 5704496 1630136 5704624 1630392 5699112 +1630136 5698968 1630064 5704496 1630392 5699112 1630136 5698912 +1630064 5704496 1630112 5704600 1630136 5704624 1630392 5699112 +1630136 5698968 1629944 5704312 1630064 5704496 1630392 5699112 +1630136 5698968 1629944 5704312 1630392 5699112 1630136 5698912 +1630136 5698968 1629752 5704128 1629944 5704312 1630392 5699112 +1630136 5698968 1629752 5704128 1630392 5699112 1630136 5698912 +1630136 5698968 1628712 5701600 1629752 5704128 1630392 5699112 +1630136 5698968 1628712 5701600 1630392 5699112 1630136 5698912 +1628712 5701600 1629472 5703936 1629752 5704128 1630392 5699112 +1630136 5698968 1628712 5701448 1628712 5701600 1630392 5699112 +1630136 5698968 1628712 5701448 1630392 5699112 1630136 5698912 +1628712 5701600 1629752 5704128 1630392 5699112 1628712 5701448 +1629752 5704128 1629944 5704312 1630392 5699112 1628712 5701600 +1630136 5698968 1630080 5698992 1628712 5701448 1630392 5699112 +1630080 5698992 1630032 5698984 1628712 5701448 1630392 5699112 +1630136 5698968 1630080 5698992 1630392 5699112 1630136 5698912 +1630032 5698984 1629856 5698944 1628712 5701448 1630392 5699112 +1628712 5701448 1628712 5701600 1630392 5699112 1630032 5698984 +1630080 5698992 1630032 5698984 1630392 5699112 1630136 5698968 +1629944 5704312 1630064 5704496 1630392 5699112 1629752 5704128 +1630136 5704624 1630152 5704824 1630392 5699112 1630064 5704496 +1630064 5704496 1630136 5704624 1630392 5699112 1629944 5704312 +1743800 5687320 1630432 5699112 1631912 5713400 1743888 5687504 +1630392 5699112 1630432 5699112 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630432 5699112 +1631912 5713400 1630432 5699112 1630392 5699112 1631888 5713320 +1630392 5699112 1631888 5713320 1630432 5699112 1663944 5646256 +1630432 5699112 1631912 5713400 1743800 5687320 1663944 5646256 +1631912 5713400 1743800 5687320 1630432 5699112 1631888 5713320 +1630392 5699112 1630152 5704824 1631888 5713320 1630432 5699112 +1630392 5699112 1630136 5704624 1630152 5704824 1630432 5699112 +1631888 5713320 1631912 5713400 1630432 5699112 1630152 5704824 +1630392 5699112 1630136 5704624 1630432 5699112 1663944 5646256 +1630152 5704824 1630096 5705696 1631888 5713320 1630432 5699112 +1630136 5704624 1630128 5704656 1630152 5704824 1630432 5699112 +1630152 5704824 1631888 5713320 1630432 5699112 1630136 5704624 +1630392 5699112 1630432 5699112 1663944 5646256 1663880 5646248 +1630432 5699112 1743800 5687320 1663944 5646256 1663880 5646248 +1630392 5699112 1630136 5704624 1630432 5699112 1663880 5646248 +1630392 5699112 1630432 5699112 1663880 5646248 1628120 5696720 +1630392 5699112 1630136 5704624 1630432 5699112 1628120 5696720 +1663880 5646248 1663776 5646144 1628120 5696720 1630432 5699112 +1630392 5699112 1630432 5699112 1628120 5696720 1629976 5698712 +1630392 5699112 1630136 5704624 1630432 5699112 1629976 5698712 +1630392 5699112 1630432 5699112 1629976 5698712 1630016 5698752 +1630392 5699112 1630136 5704624 1630432 5699112 1630016 5698752 +1630392 5699112 1630432 5699112 1630016 5698752 1630064 5698800 +1630392 5699112 1630432 5699112 1630064 5698800 1630104 5698856 +1630392 5699112 1630136 5704624 1630432 5699112 1630104 5698856 +1630432 5699112 1629976 5698712 1630016 5698752 1630064 5698800 +1630432 5699112 1630016 5698752 1630064 5698800 1630104 5698856 +1628120 5696720 1628152 5696760 1629976 5698712 1630432 5699112 +1628152 5696760 1629928 5698672 1629976 5698712 1630432 5699112 +1630432 5699112 1628152 5696760 1629976 5698712 1630016 5698752 +1630432 5699112 1663880 5646248 1628120 5696720 1628152 5696760 +1630392 5699112 1630432 5699112 1630104 5698856 1630136 5698912 +1630432 5699112 1630064 5698800 1630104 5698856 1630136 5698912 +1630392 5699112 1630136 5704624 1630432 5699112 1630136 5698912 +1630432 5699112 1663944 5646256 1663880 5646248 1628120 5696720 +1630392 5699112 1630432 5699112 1630136 5698912 1630136 5698968 +1630392 5699112 1630064 5704496 1630136 5704624 1630432 5699112 +1630136 5704624 1630152 5704824 1630432 5699112 1630064 5704496 +1630392 5699112 1630064 5704496 1630432 5699112 1630136 5698912 +1630064 5704496 1630112 5704600 1630136 5704624 1630432 5699112 +1630392 5699112 1629944 5704312 1630064 5704496 1630432 5699112 +1630392 5699112 1629944 5704312 1630432 5699112 1630136 5698912 +1630392 5699112 1629752 5704128 1629944 5704312 1630432 5699112 +1630392 5699112 1629752 5704128 1630432 5699112 1630136 5698912 +1630392 5699112 1628712 5701600 1629752 5704128 1630432 5699112 +1630392 5699112 1628712 5701600 1630432 5699112 1630136 5698912 +1628712 5701600 1629472 5703936 1629752 5704128 1630432 5699112 +1630392 5699112 1628712 5701448 1628712 5701600 1630432 5699112 +1630392 5699112 1628712 5701448 1630432 5699112 1630136 5698912 +1630392 5699112 1630032 5698984 1628712 5701448 1630432 5699112 +1628712 5701600 1629752 5704128 1630432 5699112 1628712 5701448 +1629752 5704128 1629944 5704312 1630432 5699112 1628712 5701600 +1630064 5704496 1630136 5704624 1630432 5699112 1629944 5704312 +1629944 5704312 1630064 5704496 1630432 5699112 1629752 5704128 +1743800 5687320 1630512 5699152 1631912 5713400 1743888 5687504 +1630432 5699112 1630512 5699152 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630512 5699152 +1630432 5699112 1630512 5699152 1663944 5646256 1663880 5646248 +1630512 5699152 1743800 5687320 1663944 5646256 1663880 5646248 +1630432 5699112 1631912 5713400 1630512 5699152 1663880 5646248 +1631912 5713400 1630512 5699152 1630432 5699112 1631888 5713320 +1630432 5699112 1630152 5704824 1631888 5713320 1630512 5699152 +1630512 5699152 1663880 5646248 1630432 5699112 1630152 5704824 +1631888 5713320 1631912 5713400 1630512 5699152 1630152 5704824 +1630512 5699152 1631912 5713400 1743800 5687320 1663944 5646256 +1631912 5713400 1743800 5687320 1630512 5699152 1631888 5713320 +1630152 5704824 1630096 5705696 1631888 5713320 1630512 5699152 +1630432 5699112 1630136 5704624 1630152 5704824 1630512 5699152 +1630432 5699112 1630064 5704496 1630136 5704624 1630512 5699152 +1630152 5704824 1631888 5713320 1630512 5699152 1630136 5704624 +1630432 5699112 1630064 5704496 1630512 5699152 1663880 5646248 +1630136 5704624 1630128 5704656 1630152 5704824 1630512 5699152 +1630064 5704496 1630112 5704600 1630136 5704624 1630512 5699152 +1630136 5704624 1630152 5704824 1630512 5699152 1630064 5704496 +1630432 5699112 1630512 5699152 1663880 5646248 1628120 5696720 +1630512 5699152 1663944 5646256 1663880 5646248 1628120 5696720 +1630432 5699112 1630064 5704496 1630512 5699152 1628120 5696720 +1663880 5646248 1663776 5646144 1628120 5696720 1630512 5699152 +1630432 5699112 1630512 5699152 1628120 5696720 1628152 5696760 +1630432 5699112 1630064 5704496 1630512 5699152 1628152 5696760 +1630432 5699112 1630512 5699152 1628152 5696760 1629976 5698712 +1630432 5699112 1630064 5704496 1630512 5699152 1629976 5698712 +1628152 5696760 1629928 5698672 1629976 5698712 1630512 5699152 +1630432 5699112 1630512 5699152 1629976 5698712 1630016 5698752 +1630432 5699112 1630064 5704496 1630512 5699152 1630016 5698752 +1630432 5699112 1630512 5699152 1630016 5698752 1630064 5698800 +1630432 5699112 1630064 5704496 1630512 5699152 1630064 5698800 +1630432 5699112 1630512 5699152 1630064 5698800 1630104 5698856 +1630512 5699152 1628152 5696760 1629976 5698712 1630016 5698752 +1630512 5699152 1629976 5698712 1630016 5698752 1630064 5698800 +1630512 5699152 1628120 5696720 1628152 5696760 1629976 5698712 +1630512 5699152 1663880 5646248 1628120 5696720 1628152 5696760 +1630432 5699112 1629944 5704312 1630064 5704496 1630512 5699152 +1630064 5704496 1630136 5704624 1630512 5699152 1629944 5704312 +1630432 5699112 1629944 5704312 1630512 5699152 1630064 5698800 +1630432 5699112 1629752 5704128 1629944 5704312 1630512 5699152 +1630432 5699112 1629752 5704128 1630512 5699152 1630064 5698800 +1630432 5699112 1628712 5701600 1629752 5704128 1630512 5699152 +1630432 5699112 1628712 5701600 1630512 5699152 1630064 5698800 +1628712 5701600 1629472 5703936 1629752 5704128 1630512 5699152 +1630432 5699112 1628712 5701448 1628712 5701600 1630512 5699152 +1630432 5699112 1628712 5701448 1630512 5699152 1630064 5698800 +1630432 5699112 1630392 5699112 1628712 5701448 1630512 5699152 +1630432 5699112 1630392 5699112 1630512 5699152 1630064 5698800 +1630392 5699112 1630032 5698984 1628712 5701448 1630512 5699152 +1628712 5701448 1628712 5701600 1630512 5699152 1630392 5699112 +1628712 5701600 1629752 5704128 1630512 5699152 1628712 5701448 +1629944 5704312 1630064 5704496 1630512 5699152 1629752 5704128 +1629752 5704128 1629944 5704312 1630512 5699152 1628712 5701600 +1743800 5687320 1630528 5699184 1631912 5713400 1743888 5687504 +1630512 5699152 1630528 5699184 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630528 5699184 +1630512 5699152 1630528 5699184 1663944 5646256 1663880 5646248 +1630512 5699152 1631912 5713400 1630528 5699184 1663944 5646256 +1631912 5713400 1630528 5699184 1630512 5699152 1631888 5713320 +1630512 5699152 1630152 5704824 1631888 5713320 1630528 5699184 +1630512 5699152 1630136 5704624 1630152 5704824 1630528 5699184 +1630152 5704824 1631888 5713320 1630528 5699184 1630136 5704624 +1630528 5699184 1663944 5646256 1630512 5699152 1630136 5704624 +1631888 5713320 1631912 5713400 1630528 5699184 1630152 5704824 +1630528 5699184 1631912 5713400 1743800 5687320 1663944 5646256 +1631912 5713400 1743800 5687320 1630528 5699184 1631888 5713320 +1630152 5704824 1630096 5705696 1631888 5713320 1630528 5699184 +1630136 5704624 1630128 5704656 1630152 5704824 1630528 5699184 +1630512 5699152 1630064 5704496 1630136 5704624 1630528 5699184 +1630512 5699152 1629944 5704312 1630064 5704496 1630528 5699184 +1630136 5704624 1630152 5704824 1630528 5699184 1630064 5704496 +1630512 5699152 1629944 5704312 1630528 5699184 1663944 5646256 +1630064 5704496 1630112 5704600 1630136 5704624 1630528 5699184 +1630064 5704496 1630136 5704624 1630528 5699184 1629944 5704312 +1630512 5699152 1629752 5704128 1629944 5704312 1630528 5699184 +1629944 5704312 1630064 5704496 1630528 5699184 1629752 5704128 +1630512 5699152 1629752 5704128 1630528 5699184 1663944 5646256 +1630512 5699152 1628712 5701600 1629752 5704128 1630528 5699184 +1630512 5699152 1628712 5701600 1630528 5699184 1663944 5646256 +1628712 5701600 1629472 5703936 1629752 5704128 1630528 5699184 +1630512 5699152 1628712 5701448 1628712 5701600 1630528 5699184 +1630512 5699152 1628712 5701448 1630528 5699184 1663944 5646256 +1630512 5699152 1630392 5699112 1628712 5701448 1630528 5699184 +1630512 5699152 1630392 5699112 1630528 5699184 1663944 5646256 +1630392 5699112 1630032 5698984 1628712 5701448 1630528 5699184 +1630512 5699152 1630432 5699112 1630392 5699112 1630528 5699184 +1630512 5699152 1630432 5699112 1630528 5699184 1663944 5646256 +1630392 5699112 1628712 5701448 1630528 5699184 1630432 5699112 +1628712 5701448 1628712 5701600 1630528 5699184 1630392 5699112 +1629752 5704128 1629944 5704312 1630528 5699184 1628712 5701600 +1628712 5701600 1629752 5704128 1630528 5699184 1628712 5701448 +1630152 5704824 1630536 5699272 1630528 5699184 1630136 5704624 +1630528 5699184 1630064 5704496 1630136 5704624 1630536 5699272 +1630136 5704624 1630152 5704824 1630536 5699272 1630064 5704496 +1630528 5699184 1630536 5699272 1631888 5713320 1631912 5713400 +1630536 5699272 1631912 5713400 1630528 5699184 1630064 5704496 +1630528 5699184 1630536 5699272 1631912 5713400 1743800 5687320 +1631912 5713400 1743888 5687504 1743800 5687320 1630536 5699272 +1630536 5699272 1631888 5713320 1631912 5713400 1743800 5687320 +1630528 5699184 1630536 5699272 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630536 5699272 +1630528 5699184 1630536 5699272 1663944 5646256 1630512 5699152 +1630528 5699184 1630064 5704496 1630536 5699272 1663944 5646256 +1630536 5699272 1631912 5713400 1743800 5687320 1663944 5646256 +1630536 5699272 1630152 5704824 1631888 5713320 1631912 5713400 +1630152 5704824 1631888 5713320 1630536 5699272 1630136 5704624 +1631888 5713320 1630536 5699272 1630152 5704824 1630096 5705696 +1630152 5704824 1630536 5699272 1630136 5704624 1630128 5704656 +1630064 5704496 1630112 5704600 1630136 5704624 1630536 5699272 +1630528 5699184 1629944 5704312 1630064 5704496 1630536 5699272 +1630528 5699184 1629752 5704128 1629944 5704312 1630536 5699272 +1630064 5704496 1630136 5704624 1630536 5699272 1629944 5704312 +1630528 5699184 1629752 5704128 1630536 5699272 1663944 5646256 +1629944 5704312 1630064 5704496 1630536 5699272 1629752 5704128 +1630528 5699184 1628712 5701600 1629752 5704128 1630536 5699272 +1629752 5704128 1629944 5704312 1630536 5699272 1628712 5701600 +1630528 5699184 1628712 5701600 1630536 5699272 1663944 5646256 +1628712 5701600 1629472 5703936 1629752 5704128 1630536 5699272 +1630528 5699184 1628712 5701448 1628712 5701600 1630536 5699272 +1630528 5699184 1628712 5701448 1630536 5699272 1663944 5646256 +1630528 5699184 1630392 5699112 1628712 5701448 1630536 5699272 +1630528 5699184 1630392 5699112 1630536 5699272 1663944 5646256 +1630392 5699112 1630032 5698984 1628712 5701448 1630536 5699272 +1630392 5699112 1630080 5698992 1630032 5698984 1630536 5699272 +1630032 5698984 1629856 5698944 1628712 5701448 1630536 5699272 +1630032 5698984 1629856 5698944 1630536 5699272 1630080 5698992 +1630528 5699184 1630432 5699112 1630392 5699112 1630536 5699272 +1630392 5699112 1630136 5698968 1630080 5698992 1630536 5699272 +1630392 5699112 1630080 5698992 1630536 5699272 1630528 5699184 +1628712 5701600 1629752 5704128 1630536 5699272 1628712 5701448 +1628712 5701448 1628712 5701600 1630536 5699272 1629856 5698944 +1630032 5698984 1629944 5698960 1629856 5698944 1630536 5699272 +1629856 5698944 1628632 5701384 1628712 5701448 1630536 5699272 +1630536 5699272 1630520 5699304 1629752 5704128 1629944 5704312 +1630536 5699272 1628712 5701600 1630520 5699304 1629944 5704312 +1630520 5699304 1628712 5701600 1629752 5704128 1629944 5704312 +1629752 5704128 1630520 5699304 1628712 5701600 1629472 5703936 +1630536 5699272 1630520 5699304 1629944 5704312 1630064 5704496 +1630520 5699304 1629752 5704128 1629944 5704312 1630064 5704496 +1630536 5699272 1630520 5699304 1630064 5704496 1630136 5704624 +1630536 5699272 1630520 5699304 1630136 5704624 1630152 5704824 +1630536 5699272 1628712 5701600 1630520 5699304 1630136 5704624 +1630064 5704496 1630112 5704600 1630136 5704624 1630520 5699304 +1630520 5699304 1629944 5704312 1630064 5704496 1630136 5704624 +1628712 5701600 1630520 5699304 1630536 5699272 1628712 5701448 +1630520 5699304 1630136 5704624 1630536 5699272 1628712 5701448 +1628712 5701600 1629752 5704128 1630520 5699304 1628712 5701448 +1630536 5699272 1629856 5698944 1628712 5701448 1630520 5699304 +1630536 5699272 1629856 5698944 1630520 5699304 1630136 5704624 +1630536 5699272 1630032 5698984 1629856 5698944 1630520 5699304 +1630536 5699272 1630032 5698984 1630520 5699304 1630136 5704624 +1630536 5699272 1630080 5698992 1630032 5698984 1630520 5699304 +1630536 5699272 1630392 5699112 1630080 5698992 1630520 5699304 +1630536 5699272 1630392 5699112 1630520 5699304 1630136 5704624 +1630032 5698984 1629856 5698944 1630520 5699304 1630080 5698992 +1630080 5698992 1630032 5698984 1630520 5699304 1630392 5699112 +1630392 5699112 1630136 5698968 1630080 5698992 1630520 5699304 +1630536 5699272 1630528 5699184 1630392 5699112 1630520 5699304 +1630392 5699112 1630080 5698992 1630520 5699304 1630528 5699184 +1630536 5699272 1630528 5699184 1630520 5699304 1630136 5704624 +1630528 5699184 1630432 5699112 1630392 5699112 1630520 5699304 +1630392 5699112 1630080 5698992 1630520 5699304 1630432 5699112 +1630528 5699184 1630512 5699152 1630432 5699112 1630520 5699304 +1630528 5699184 1630432 5699112 1630520 5699304 1630536 5699272 +1628712 5701448 1628712 5701600 1630520 5699304 1629856 5698944 +1629856 5698944 1628712 5701448 1630520 5699304 1630032 5698984 +1630032 5698984 1629944 5698960 1629856 5698944 1630520 5699304 +1629856 5698944 1628632 5701384 1628712 5701448 1630520 5699304 +1629856 5698944 1629776 5698928 1628632 5701384 1630520 5699304 +1628712 5701448 1628712 5701600 1630520 5699304 1628632 5701384 +1629856 5698944 1628632 5701384 1630520 5699304 1630032 5698984 +1630520 5699304 1630472 5699368 1629752 5704128 1629944 5704312 +1630520 5699304 1630472 5699368 1629944 5704312 1630064 5704496 +1630472 5699368 1629752 5704128 1629944 5704312 1630064 5704496 +1630520 5699304 1628712 5701600 1630472 5699368 1630064 5704496 +1628712 5701600 1630472 5699368 1630520 5699304 1628712 5701448 +1630472 5699368 1630064 5704496 1630520 5699304 1628712 5701448 +1630472 5699368 1628712 5701600 1629752 5704128 1629944 5704312 +1628712 5701600 1629752 5704128 1630472 5699368 1628712 5701448 +1629752 5704128 1630472 5699368 1628712 5701600 1629472 5703936 +1630520 5699304 1630472 5699368 1630064 5704496 1630136 5704624 +1630472 5699368 1629944 5704312 1630064 5704496 1630136 5704624 +1630520 5699304 1630472 5699368 1630136 5704624 1630536 5699272 +1630520 5699304 1628712 5701448 1630472 5699368 1630136 5704624 +1630064 5704496 1630112 5704600 1630136 5704624 1630472 5699368 +1630520 5699304 1628632 5701384 1628712 5701448 1630472 5699368 +1630520 5699304 1628632 5701384 1630472 5699368 1630136 5704624 +1628712 5701448 1628712 5701600 1630472 5699368 1628632 5701384 +1630520 5699304 1629856 5698944 1628632 5701384 1630472 5699368 +1629856 5698944 1629776 5698928 1628632 5701384 1630472 5699368 +1629776 5698928 1629680 5698904 1628632 5701384 1630472 5699368 +1630520 5699304 1629856 5698944 1630472 5699368 1630136 5704624 +1628632 5701384 1628712 5701448 1630472 5699368 1629776 5698928 +1630520 5699304 1630032 5698984 1629856 5698944 1630472 5699368 +1630520 5699304 1630032 5698984 1630472 5699368 1630136 5704624 +1630520 5699304 1630080 5698992 1630032 5698984 1630472 5699368 +1630520 5699304 1630080 5698992 1630472 5699368 1630136 5704624 +1630520 5699304 1630392 5699112 1630080 5698992 1630472 5699368 +1630520 5699304 1630432 5699112 1630392 5699112 1630472 5699368 +1630520 5699304 1630392 5699112 1630472 5699368 1630136 5704624 +1630080 5698992 1630032 5698984 1630472 5699368 1630392 5699112 +1630392 5699112 1630136 5698968 1630080 5698992 1630472 5699368 +1630032 5698984 1629856 5698944 1630472 5699368 1630080 5698992 +1630032 5698984 1629944 5698960 1629856 5698944 1630472 5699368 +1630032 5698984 1629944 5698960 1630472 5699368 1630080 5698992 +1629856 5698944 1629776 5698928 1630472 5699368 1629944 5698960 +1629776 5698928 1630440 5699400 1630472 5699368 1629856 5698944 +1628632 5701384 1630440 5699400 1629776 5698928 1629680 5698904 +1628632 5701384 1630440 5699400 1629680 5698904 1628288 5701200 +1630440 5699400 1628632 5701384 1630472 5699368 1629856 5698944 +1628632 5701384 1630472 5699368 1630440 5699400 1629680 5698904 +1629776 5698928 1629680 5698904 1630440 5699400 1629856 5698944 +1630472 5699368 1630440 5699400 1628632 5701384 1628712 5701448 +1630472 5699368 1630440 5699400 1628712 5701448 1628712 5701600 +1630472 5699368 1629856 5698944 1630440 5699400 1628712 5701600 +1630472 5699368 1630440 5699400 1628712 5701600 1629752 5704128 +1630440 5699400 1628712 5701448 1628712 5701600 1629752 5704128 +1630472 5699368 1630440 5699400 1629752 5704128 1629944 5704312 +1630472 5699368 1630440 5699400 1629944 5704312 1630064 5704496 +1630472 5699368 1629856 5698944 1630440 5699400 1629944 5704312 +1630440 5699400 1628712 5701600 1629752 5704128 1629944 5704312 +1630440 5699400 1629680 5698904 1628632 5701384 1628712 5701448 +1628712 5701600 1629472 5703936 1629752 5704128 1630440 5699400 +1630440 5699400 1628632 5701384 1628712 5701448 1628712 5701600 +1630472 5699368 1629944 5698960 1629856 5698944 1630440 5699400 +1629856 5698944 1629776 5698928 1630440 5699400 1629944 5698960 +1630472 5699368 1629944 5698960 1630440 5699400 1629944 5704312 +1630472 5699368 1630032 5698984 1629944 5698960 1630440 5699400 +1630472 5699368 1630032 5698984 1630440 5699400 1629944 5704312 +1630472 5699368 1630080 5698992 1630032 5698984 1630440 5699400 +1630472 5699368 1630080 5698992 1630440 5699400 1629944 5704312 +1630472 5699368 1630392 5699112 1630080 5698992 1630440 5699400 +1630472 5699368 1630392 5699112 1630440 5699400 1629944 5704312 +1630472 5699368 1630520 5699304 1630392 5699112 1630440 5699400 +1630392 5699112 1630136 5698968 1630080 5698992 1630440 5699400 +1630080 5698992 1630032 5698984 1630440 5699400 1630392 5699112 +1630032 5698984 1629944 5698960 1630440 5699400 1630080 5698992 +1629944 5698960 1629856 5698944 1630440 5699400 1630032 5698984 +1629680 5698904 1630392 5699392 1630440 5699400 1629776 5698928 +1628632 5701384 1630392 5699392 1629680 5698904 1628288 5701200 +1630440 5699400 1630392 5699392 1628632 5701384 1628712 5701448 +1630392 5699392 1628712 5701448 1630440 5699400 1629776 5698928 +1630440 5699400 1629856 5698944 1629776 5698928 1630392 5699392 +1630440 5699400 1629944 5698960 1629856 5698944 1630392 5699392 +1629776 5698928 1629680 5698904 1630392 5699392 1629856 5698944 +1630440 5699400 1629944 5698960 1630392 5699392 1628712 5701448 +1629856 5698944 1629776 5698928 1630392 5699392 1629944 5698960 +1630392 5699392 1629680 5698904 1628632 5701384 1628712 5701448 +1629680 5698904 1628632 5701384 1630392 5699392 1629776 5698928 +1630440 5699400 1630392 5699392 1628712 5701448 1628712 5701600 +1630440 5699400 1630032 5698984 1629944 5698960 1630392 5699392 +1629944 5698960 1629856 5698944 1630392 5699392 1630032 5698984 +1630440 5699400 1630032 5698984 1630392 5699392 1628712 5701448 +1630440 5699400 1630080 5698992 1630032 5698984 1630392 5699392 +1630440 5699400 1630080 5698992 1630392 5699392 1628712 5701448 +1630440 5699400 1630392 5699112 1630080 5698992 1630392 5699392 +1630440 5699400 1630392 5699112 1630392 5699392 1628712 5701448 +1630440 5699400 1630472 5699368 1630392 5699112 1630392 5699392 +1630440 5699400 1630472 5699368 1630392 5699392 1628712 5701448 +1630472 5699368 1630520 5699304 1630392 5699112 1630392 5699392 +1630520 5699304 1630432 5699112 1630392 5699112 1630392 5699392 +1630472 5699368 1630520 5699304 1630392 5699392 1630440 5699400 +1630392 5699112 1630136 5698968 1630080 5698992 1630392 5699392 +1630392 5699112 1630080 5698992 1630392 5699392 1630520 5699304 +1630080 5698992 1630032 5698984 1630392 5699392 1630392 5699112 +1630032 5698984 1629944 5698960 1630392 5699392 1630080 5698992 +1628632 5701384 1630336 5699368 1629680 5698904 1628288 5701200 +1630392 5699392 1630336 5699368 1628632 5701384 1628712 5701448 +1630392 5699392 1630336 5699368 1628712 5701448 1630440 5699400 +1630392 5699392 1629680 5698904 1630336 5699368 1628712 5701448 +1629680 5698904 1630336 5699368 1630392 5699392 1629776 5698928 +1630392 5699392 1629856 5698944 1629776 5698928 1630336 5699368 +1630392 5699392 1629944 5698960 1629856 5698944 1630336 5699368 +1630392 5699392 1630032 5698984 1629944 5698960 1630336 5699368 +1629856 5698944 1629776 5698928 1630336 5699368 1629944 5698960 +1629944 5698960 1629856 5698944 1630336 5699368 1630032 5698984 +1630336 5699368 1628712 5701448 1630392 5699392 1630032 5698984 +1629776 5698928 1629680 5698904 1630336 5699368 1629856 5698944 +1630336 5699368 1629680 5698904 1628632 5701384 1628712 5701448 +1629680 5698904 1628632 5701384 1630336 5699368 1629776 5698928 +1630392 5699392 1630080 5698992 1630032 5698984 1630336 5699368 +1630032 5698984 1629944 5698960 1630336 5699368 1630080 5698992 +1630392 5699392 1630080 5698992 1630336 5699368 1628712 5701448 +1630392 5699392 1630392 5699112 1630080 5698992 1630336 5699368 +1630392 5699392 1630392 5699112 1630336 5699368 1628712 5701448 +1630392 5699112 1630136 5698968 1630080 5698992 1630336 5699368 +1630392 5699392 1630520 5699304 1630392 5699112 1630336 5699368 +1630520 5699304 1630432 5699112 1630392 5699112 1630336 5699368 +1630392 5699392 1630520 5699304 1630336 5699368 1628712 5701448 +1630392 5699392 1630472 5699368 1630520 5699304 1630336 5699368 +1630392 5699392 1630472 5699368 1630336 5699368 1628712 5701448 +1630392 5699392 1630440 5699400 1630472 5699368 1630336 5699368 +1630520 5699304 1630392 5699112 1630336 5699368 1630472 5699368 +1630392 5699112 1630080 5698992 1630336 5699368 1630520 5699304 +1630080 5698992 1630032 5698984 1630336 5699368 1630392 5699112 +1628632 5701384 1630256 5699320 1629680 5698904 1628288 5701200 +1630336 5699368 1630256 5699320 1628632 5701384 1628712 5701448 +1630336 5699368 1630256 5699320 1628712 5701448 1630392 5699392 +1630336 5699368 1629680 5698904 1630256 5699320 1628712 5701448 +1629680 5698904 1630256 5699320 1630336 5699368 1629776 5698928 +1630336 5699368 1629856 5698944 1629776 5698928 1630256 5699320 +1630336 5699368 1629944 5698960 1629856 5698944 1630256 5699320 +1630336 5699368 1630032 5698984 1629944 5698960 1630256 5699320 +1630336 5699368 1630080 5698992 1630032 5698984 1630256 5699320 +1629944 5698960 1629856 5698944 1630256 5699320 1630032 5698984 +1630032 5698984 1629944 5698960 1630256 5699320 1630080 5698992 +1629856 5698944 1629776 5698928 1630256 5699320 1629944 5698960 +1630256 5699320 1628712 5701448 1630336 5699368 1630080 5698992 +1629776 5698928 1629680 5698904 1630256 5699320 1629856 5698944 +1629680 5698904 1628632 5701384 1630256 5699320 1629776 5698928 +1630256 5699320 1629680 5698904 1628632 5701384 1628712 5701448 +1630336 5699368 1630392 5699112 1630080 5698992 1630256 5699320 +1630080 5698992 1630032 5698984 1630256 5699320 1630392 5699112 +1630336 5699368 1630392 5699112 1630256 5699320 1628712 5701448 +1630392 5699112 1630136 5698968 1630080 5698992 1630256 5699320 +1630080 5698992 1630032 5698984 1630256 5699320 1630136 5698968 +1630392 5699112 1630136 5698912 1630136 5698968 1630256 5699320 +1630336 5699368 1630520 5699304 1630392 5699112 1630256 5699320 +1630392 5699112 1630136 5698968 1630256 5699320 1630336 5699368 +1629776 5698928 1630184 5699264 1630256 5699320 1629856 5698944 +1629776 5698928 1629680 5698904 1630184 5699264 1629856 5698944 +1630256 5699320 1629944 5698960 1629856 5698944 1630184 5699264 +1630256 5699320 1630032 5698984 1629944 5698960 1630184 5699264 +1630256 5699320 1630080 5698992 1630032 5698984 1630184 5699264 +1630256 5699320 1630136 5698968 1630080 5698992 1630184 5699264 +1630032 5698984 1629944 5698960 1630184 5699264 1630080 5698992 +1630080 5698992 1630032 5698984 1630184 5699264 1630136 5698968 +1629944 5698960 1629856 5698944 1630184 5699264 1630032 5698984 +1629856 5698944 1629776 5698928 1630184 5699264 1629944 5698960 +1630184 5699264 1629680 5698904 1630256 5699320 1630136 5698968 +1630256 5699320 1630184 5699264 1629680 5698904 1628632 5701384 +1629680 5698904 1628288 5701200 1628632 5701384 1630184 5699264 +1630256 5699320 1630136 5698968 1630184 5699264 1628632 5701384 +1630184 5699264 1629776 5698928 1629680 5698904 1628632 5701384 +1630256 5699320 1630184 5699264 1628632 5701384 1628712 5701448 +1630256 5699320 1630392 5699112 1630136 5698968 1630184 5699264 +1630136 5698968 1630080 5698992 1630184 5699264 1630392 5699112 +1630392 5699112 1630136 5698912 1630136 5698968 1630184 5699264 +1630256 5699320 1630392 5699112 1630184 5699264 1628632 5701384 +1630256 5699320 1630336 5699368 1630392 5699112 1630184 5699264 +1630184 5699264 1630176 5699248 1630032 5698984 1629944 5698960 +1630184 5699264 1630080 5698992 1630176 5699248 1629944 5698960 +1630176 5699248 1630080 5698992 1630032 5698984 1629944 5698960 +1630080 5698992 1630176 5699248 1630184 5699264 1630136 5698968 +1630176 5699248 1629944 5698960 1630184 5699264 1630136 5698968 +1630080 5698992 1630032 5698984 1630176 5699248 1630136 5698968 +1630184 5699264 1630392 5699112 1630136 5698968 1630176 5699248 +1630184 5699264 1630392 5699112 1630176 5699248 1629944 5698960 +1630392 5699112 1630136 5698912 1630136 5698968 1630176 5699248 +1630136 5698968 1630080 5698992 1630176 5699248 1630392 5699112 +1630184 5699264 1630176 5699248 1629944 5698960 1629856 5698944 +1630184 5699264 1630392 5699112 1630176 5699248 1629856 5698944 +1630176 5699248 1630032 5698984 1629944 5698960 1629856 5698944 +1630184 5699264 1630176 5699248 1629856 5698944 1629776 5698928 +1630184 5699264 1630392 5699112 1630176 5699248 1629776 5698928 +1630184 5699264 1630176 5699248 1629776 5698928 1629680 5698904 +1630176 5699248 1629944 5698960 1629856 5698944 1629776 5698928 +1630184 5699264 1630256 5699320 1630392 5699112 1630176 5699248 +1630184 5699264 1630256 5699320 1630176 5699248 1629776 5698928 +1630392 5699112 1630136 5698968 1630176 5699248 1630256 5699320 +1630256 5699320 1630336 5699368 1630392 5699112 1630176 5699248 +1630392 5699112 1630184 5699224 1630176 5699248 1630256 5699320 +1630184 5699224 1630136 5698968 1630176 5699248 1630256 5699320 +1630392 5699112 1630136 5698968 1630184 5699224 1630256 5699320 +1630136 5698968 1630184 5699224 1630392 5699112 1630136 5698912 +1630176 5699248 1630184 5699224 1630136 5698968 1630080 5698992 +1630176 5699248 1630256 5699320 1630184 5699224 1630080 5698992 +1630176 5699248 1630184 5699224 1630080 5698992 1630032 5698984 +1630176 5699248 1630184 5699224 1630032 5698984 1629944 5698960 +1630176 5699248 1630256 5699320 1630184 5699224 1630032 5698984 +1630184 5699224 1630392 5699112 1630136 5698968 1630080 5698992 +1630184 5699224 1630136 5698968 1630080 5698992 1630032 5698984 +1630176 5699248 1630184 5699264 1630256 5699320 1630184 5699224 +1630176 5699248 1630184 5699264 1630184 5699224 1630032 5698984 +1630256 5699320 1630392 5699112 1630184 5699224 1630184 5699264 +1630392 5699112 1630184 5699224 1630256 5699320 1630336 5699368 +1630184 5699224 1630216 5699184 1630136 5698968 1630080 5698992 +1630184 5699224 1630392 5699112 1630216 5699184 1630080 5698992 +1630392 5699112 1630216 5699184 1630184 5699224 1630256 5699320 +1630216 5699184 1630080 5698992 1630184 5699224 1630256 5699320 +1630216 5699184 1630392 5699112 1630136 5698968 1630080 5698992 +1630392 5699112 1630136 5698968 1630216 5699184 1630256 5699320 +1630184 5699224 1630184 5699264 1630256 5699320 1630216 5699184 +1630184 5699224 1630184 5699264 1630216 5699184 1630080 5698992 +1630256 5699320 1630392 5699112 1630216 5699184 1630184 5699264 +1630136 5698968 1630216 5699184 1630392 5699112 1630136 5698912 +1630184 5699224 1630216 5699184 1630080 5698992 1630032 5698984 +1630184 5699224 1630176 5699248 1630184 5699264 1630216 5699184 +1630392 5699112 1630216 5699184 1630256 5699320 1630336 5699368 +1630216 5699184 1630304 5699136 1630136 5698968 1630080 5698992 +1630392 5699112 1630304 5699136 1630216 5699184 1630256 5699320 +1630216 5699184 1630184 5699264 1630256 5699320 1630304 5699136 +1630304 5699136 1630136 5698968 1630216 5699184 1630256 5699320 +1630392 5699112 1630136 5698968 1630304 5699136 1630256 5699320 +1630136 5698968 1630304 5699136 1630392 5699112 1630136 5698912 +1630392 5699112 1630304 5699136 1630256 5699320 1630336 5699368 +1630304 5699136 1630216 5699184 1630256 5699320 1630336 5699368 +1630392 5699112 1630136 5698968 1630304 5699136 1630336 5699368 +1630392 5699112 1630304 5699136 1630336 5699368 1630520 5699304 +1612640 5685184 1623752 5693000 1663776 5646144 1612616 5685152 +1612640 5685184 1626688 5696104 1623752 5693000 1612616 5685152 +1623752 5693000 1626688 5696104 1663776 5646144 1612616 5685152 +1626688 5696104 1623752 5693000 1612640 5685184 1626600 5696072 +1623752 5693000 1612616 5685152 1612640 5685184 1626600 5696072 +1626688 5696104 1663776 5646144 1623752 5693000 1626600 5696072 +1612640 5685184 1626552 5696056 1626600 5696072 1623752 5693000 +1612640 5685184 1626552 5696056 1623752 5693000 1612616 5685152 +1612640 5685184 1615440 5689168 1626552 5696056 1623752 5693000 +1612640 5685184 1615440 5689168 1623752 5693000 1612616 5685152 +1626552 5696056 1626600 5696072 1623752 5693000 1615440 5689168 +1626600 5696072 1626688 5696104 1623752 5693000 1626552 5696056 +1663776 5646144 1623752 5693000 1626688 5696104 1628120 5696720 +1663776 5646144 1612616 5685152 1623752 5693000 1628120 5696720 +1623752 5693000 1626600 5696072 1626688 5696104 1628120 5696720 +1626688 5696104 1626864 5696192 1628120 5696720 1623752 5693000 +1626688 5696104 1626864 5696192 1623752 5693000 1626600 5696072 +1626864 5696192 1628088 5696712 1628120 5696720 1623752 5693000 +1626688 5696104 1626776 5696152 1626864 5696192 1623752 5693000 +1628120 5696720 1663776 5646144 1623752 5693000 1626864 5696192 +1612640 5685184 1615392 5689120 1615440 5689168 1623752 5693000 +1612640 5685184 1615392 5689120 1623752 5693000 1612616 5685152 +1612640 5685184 1613632 5687000 1615392 5689120 1623752 5693000 +1615440 5689168 1626552 5696056 1623752 5693000 1615392 5689120 +1663776 5646144 1657088 5639464 1612616 5685152 1623752 5693000 +1663776 5646144 1657088 5639464 1623752 5693000 1628120 5696720 +1612616 5685152 1612640 5685184 1623752 5693000 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1623752 5693000 +1657088 5639464 1610992 5683744 1612616 5685152 1623752 5693000 +1663776 5646144 1623752 5693000 1628120 5696720 1663880 5646248 +1663776 5646144 1657088 5639464 1623752 5693000 1663880 5646248 +1623752 5693000 1626864 5696192 1628120 5696720 1663880 5646248 +1628120 5696720 1630512 5699152 1663880 5646248 1623752 5693000 +1615440 5689168 1626520 5696056 1626552 5696056 1623752 5693000 +1615440 5689168 1626520 5696056 1623752 5693000 1615392 5689120 +1626552 5696056 1626600 5696072 1623752 5693000 1626520 5696056 +1615440 5689168 1615488 5689272 1626520 5696056 1623752 5693000 +1615440 5689168 1615488 5689272 1623752 5693000 1615392 5689120 +1615488 5689272 1618392 5694976 1626520 5696056 1623752 5693000 +1618392 5694976 1626488 5696072 1626520 5696056 1623752 5693000 +1618392 5694976 1618456 5695040 1626488 5696072 1623752 5693000 +1626488 5696072 1626520 5696056 1623752 5693000 1618456 5695040 +1618392 5694976 1618456 5695040 1623752 5693000 1615488 5689272 +1615488 5689272 1618392 5694976 1623752 5693000 1615440 5689168 +1626520 5696056 1626552 5696056 1623752 5693000 1626488 5696072 +1618456 5695040 1623376 5696968 1626488 5696072 1623752 5693000 +1618456 5695040 1623376 5696968 1623752 5693000 1618392 5694976 +1623376 5696968 1623464 5696976 1626488 5696072 1623752 5693000 +1623464 5696976 1623632 5697024 1626488 5696072 1623752 5693000 +1623464 5696976 1623632 5697024 1623752 5693000 1623376 5696968 +1626488 5696072 1626520 5696056 1623752 5693000 1623632 5697024 +1623464 5696976 1623496 5696992 1623632 5697024 1623752 5693000 +1623632 5697024 1623704 5697048 1626488 5696072 1623752 5693000 +1623704 5697048 1626480 5696112 1626488 5696072 1623752 5693000 +1623632 5697024 1623704 5697048 1623752 5693000 1623464 5696976 +1626488 5696072 1626520 5696056 1623752 5693000 1623704 5697048 +1618456 5695040 1623304 5696976 1623376 5696968 1623752 5693000 +1618456 5695040 1623304 5696976 1623752 5693000 1618392 5694976 +1623376 5696968 1623464 5696976 1623752 5693000 1623304 5696976 +1615488 5689272 1615488 5689328 1618392 5694976 1623752 5693000 +1618392 5694976 1618456 5695040 1623752 5693000 1615488 5689328 +1615488 5689272 1615488 5689328 1623752 5693000 1615440 5689168 +1615488 5689328 1618304 5694912 1618392 5694976 1623752 5693000 +1618392 5694976 1618456 5695040 1623752 5693000 1618304 5694912 +1615488 5689328 1618256 5694904 1618304 5694912 1623752 5693000 +1615488 5689328 1618304 5694912 1623752 5693000 1615488 5689272 +1618456 5695040 1623272 5697000 1623304 5696976 1623752 5693000 +1618456 5695040 1623272 5697000 1623752 5693000 1618392 5694976 +1618456 5695040 1618456 5695136 1623272 5697000 1623752 5693000 +1623304 5696976 1623376 5696968 1623752 5693000 1623272 5697000 +1623752 5693000 1623584 5692848 1612616 5685152 1612640 5685184 +1623752 5693000 1623584 5692848 1612640 5685184 1615392 5689120 +1623752 5693000 1657088 5639464 1623584 5692848 1615392 5689120 +1623584 5692848 1657088 5639464 1612616 5685152 1612640 5685184 +1612640 5685184 1613632 5687000 1615392 5689120 1623584 5692848 +1623584 5692848 1612616 5685152 1612640 5685184 1615392 5689120 +1623752 5693000 1623584 5692848 1615392 5689120 1615440 5689168 +1623584 5692848 1612640 5685184 1615392 5689120 1615440 5689168 +1623752 5693000 1657088 5639464 1623584 5692848 1615440 5689168 +1623752 5693000 1623584 5692848 1615440 5689168 1615488 5689272 +1623752 5693000 1657088 5639464 1623584 5692848 1615488 5689272 +1623584 5692848 1615392 5689120 1615440 5689168 1615488 5689272 +1657088 5639464 1623584 5692848 1623752 5693000 1663776 5646144 +1623752 5693000 1663880 5646248 1663776 5646144 1623584 5692848 +1623584 5692848 1615488 5689272 1623752 5693000 1663880 5646248 +1657088 5639464 1612616 5685152 1623584 5692848 1663776 5646144 +1663776 5646144 1657088 5639464 1623584 5692848 1663880 5646248 +1657088 5639464 1623584 5692848 1663776 5646144 1663688 5645984 +1612616 5685152 1623584 5692848 1657088 5639464 1610992 5683744 +1623752 5693000 1623584 5692848 1615488 5689272 1615488 5689328 +1623752 5693000 1663880 5646248 1623584 5692848 1615488 5689328 +1623584 5692848 1615440 5689168 1615488 5689272 1615488 5689328 +1623752 5693000 1628120 5696720 1663880 5646248 1623584 5692848 +1623752 5693000 1623584 5692848 1615488 5689328 1618304 5694912 +1623752 5693000 1663880 5646248 1623584 5692848 1618304 5694912 +1623584 5692848 1615488 5689272 1615488 5689328 1618304 5694912 +1615488 5689328 1618256 5694904 1618304 5694912 1623584 5692848 +1623752 5693000 1623584 5692848 1618304 5694912 1618392 5694976 +1623752 5693000 1663880 5646248 1623584 5692848 1618392 5694976 +1623752 5693000 1623584 5692848 1618392 5694976 1618456 5695040 +1623752 5693000 1623584 5692848 1618456 5695040 1623272 5697000 +1623752 5693000 1663880 5646248 1623584 5692848 1623272 5697000 +1618456 5695040 1618456 5695136 1623272 5697000 1623584 5692848 +1623584 5692848 1618392 5694976 1618456 5695040 1623272 5697000 +1623584 5692848 1618304 5694912 1618392 5694976 1618456 5695040 +1623584 5692848 1615488 5689328 1618304 5694912 1618392 5694976 +1623752 5693000 1623584 5692848 1623272 5697000 1623304 5696976 +1623584 5692848 1618456 5695040 1623272 5697000 1623304 5696976 +1623752 5693000 1663880 5646248 1623584 5692848 1623304 5696976 +1623752 5693000 1623584 5692848 1623304 5696976 1623376 5696968 +1623584 5692848 1623464 5692768 1615392 5689120 1615440 5689168 +1623584 5692848 1612640 5685184 1623464 5692768 1615440 5689168 +1623464 5692768 1612640 5685184 1615392 5689120 1615440 5689168 +1615392 5689120 1623464 5692768 1612640 5685184 1613632 5687000 +1612640 5685184 1623464 5692768 1623584 5692848 1612616 5685152 +1623584 5692848 1657088 5639464 1612616 5685152 1623464 5692768 +1623464 5692768 1615440 5689168 1623584 5692848 1657088 5639464 +1623584 5692848 1663776 5646144 1657088 5639464 1623464 5692768 +1657088 5639464 1612616 5685152 1623464 5692768 1663776 5646144 +1623584 5692848 1663776 5646144 1623464 5692768 1615440 5689168 +1612640 5685184 1615392 5689120 1623464 5692768 1612616 5685152 +1612616 5685152 1612640 5685184 1623464 5692768 1657088 5639464 +1623584 5692848 1623464 5692768 1615440 5689168 1615488 5689272 +1623464 5692768 1615392 5689120 1615440 5689168 1615488 5689272 +1623584 5692848 1663776 5646144 1623464 5692768 1615488 5689272 +1623584 5692848 1623464 5692768 1615488 5689272 1615488 5689328 +1623584 5692848 1663776 5646144 1623464 5692768 1615488 5689328 +1623464 5692768 1615440 5689168 1615488 5689272 1615488 5689328 +1623584 5692848 1663880 5646248 1663776 5646144 1623464 5692768 +1663776 5646144 1663688 5645984 1657088 5639464 1623464 5692768 +1657088 5639464 1610992 5683744 1612616 5685152 1623464 5692768 +1623584 5692848 1623464 5692768 1615488 5689328 1618304 5694912 +1623584 5692848 1663776 5646144 1623464 5692768 1618304 5694912 +1623464 5692768 1615488 5689272 1615488 5689328 1618304 5694912 +1615488 5689328 1618256 5694904 1618304 5694912 1623464 5692768 +1623584 5692848 1623464 5692768 1618304 5694912 1618392 5694976 +1623584 5692848 1663776 5646144 1623464 5692768 1618392 5694976 +1623464 5692768 1615488 5689328 1618304 5694912 1618392 5694976 +1623584 5692848 1623464 5692768 1618392 5694976 1618456 5695040 +1623584 5692848 1663776 5646144 1623464 5692768 1618456 5695040 +1623584 5692848 1623464 5692768 1618456 5695040 1623272 5697000 +1623584 5692848 1623464 5692768 1623272 5697000 1623304 5696976 +1623584 5692848 1663776 5646144 1623464 5692768 1623304 5696976 +1618456 5695040 1618456 5695136 1623272 5697000 1623464 5692768 +1623464 5692768 1618456 5695040 1623272 5697000 1623304 5696976 +1623464 5692768 1618392 5694976 1618456 5695040 1623272 5697000 +1623464 5692768 1618304 5694912 1618392 5694976 1618456 5695040 +1623584 5692848 1623464 5692768 1623304 5696976 1623752 5693000 +1623464 5692768 1623272 5697000 1623304 5696976 1623752 5693000 +1623584 5692848 1663776 5646144 1623464 5692768 1623752 5693000 +1623304 5696976 1623376 5696968 1623752 5693000 1623464 5692768 +1615440 5689168 1623088 5692600 1623464 5692768 1615392 5689120 +1623464 5692768 1612640 5685184 1615392 5689120 1623088 5692600 +1615392 5689120 1615440 5689168 1623088 5692600 1612640 5685184 +1623088 5692600 1615488 5689272 1623464 5692768 1612640 5685184 +1623464 5692768 1612616 5685152 1612640 5685184 1623088 5692600 +1612640 5685184 1615392 5689120 1623088 5692600 1612616 5685152 +1623464 5692768 1612616 5685152 1623088 5692600 1615488 5689272 +1615440 5689168 1615488 5689272 1623088 5692600 1615392 5689120 +1612640 5685184 1613632 5687000 1615392 5689120 1623088 5692600 +1623464 5692768 1657088 5639464 1612616 5685152 1623088 5692600 +1623464 5692768 1663776 5646144 1657088 5639464 1623088 5692600 +1623464 5692768 1657088 5639464 1623088 5692600 1615488 5689272 +1612616 5685152 1612640 5685184 1623088 5692600 1657088 5639464 +1623464 5692768 1623088 5692600 1615488 5689272 1615488 5689328 +1623464 5692768 1657088 5639464 1623088 5692600 1615488 5689328 +1623088 5692600 1615440 5689168 1615488 5689272 1615488 5689328 +1623464 5692768 1623088 5692600 1615488 5689328 1618304 5694912 +1623464 5692768 1657088 5639464 1623088 5692600 1618304 5694912 +1623088 5692600 1615488 5689272 1615488 5689328 1618304 5694912 +1657088 5639464 1610992 5683744 1612616 5685152 1623088 5692600 +1623464 5692768 1623088 5692600 1618304 5694912 1618392 5694976 +1623464 5692768 1657088 5639464 1623088 5692600 1618392 5694976 +1623088 5692600 1615488 5689328 1618304 5694912 1618392 5694976 +1615488 5689328 1618256 5694904 1618304 5694912 1623088 5692600 +1623464 5692768 1623088 5692600 1618392 5694976 1618456 5695040 +1623464 5692768 1657088 5639464 1623088 5692600 1618456 5695040 +1623088 5692600 1618304 5694912 1618392 5694976 1618456 5695040 +1623464 5692768 1623088 5692600 1618456 5695040 1623272 5697000 +1623464 5692768 1657088 5639464 1623088 5692600 1623272 5697000 +1618456 5695040 1618456 5695136 1623272 5697000 1623088 5692600 +1623464 5692768 1623088 5692600 1623272 5697000 1623304 5696976 +1623464 5692768 1623088 5692600 1623304 5696976 1623752 5693000 +1623464 5692768 1657088 5639464 1623088 5692600 1623752 5693000 +1623088 5692600 1623272 5697000 1623304 5696976 1623752 5693000 +1623304 5696976 1623376 5696968 1623752 5693000 1623088 5692600 +1623088 5692600 1618456 5695040 1623272 5697000 1623304 5696976 +1623088 5692600 1618392 5694976 1618456 5695040 1623272 5697000 +1623464 5692768 1623088 5692600 1623752 5693000 1623584 5692848 +1623088 5692600 1622936 5692496 1615392 5689120 1615440 5689168 +1612640 5685184 1622936 5692496 1623088 5692600 1612616 5685152 +1623088 5692600 1657088 5639464 1612616 5685152 1622936 5692496 +1612616 5685152 1612640 5685184 1622936 5692496 1657088 5639464 +1623088 5692600 1657088 5639464 1622936 5692496 1615440 5689168 +1623088 5692600 1622936 5692496 1615440 5689168 1615488 5689272 +1622936 5692496 1615392 5689120 1615440 5689168 1615488 5689272 +1623088 5692600 1622936 5692496 1615488 5689272 1615488 5689328 +1623088 5692600 1657088 5639464 1622936 5692496 1615488 5689328 +1622936 5692496 1615440 5689168 1615488 5689272 1615488 5689328 +1622936 5692496 1612640 5685184 1615392 5689120 1615440 5689168 +1612640 5685184 1615392 5689120 1622936 5692496 1612616 5685152 +1615392 5689120 1622936 5692496 1612640 5685184 1613632 5687000 +1615392 5689120 1615440 5689168 1622936 5692496 1613632 5687000 +1622936 5692496 1612616 5685152 1612640 5685184 1613632 5687000 +1623088 5692600 1623464 5692768 1657088 5639464 1622936 5692496 +1623464 5692768 1663776 5646144 1657088 5639464 1622936 5692496 +1657088 5639464 1612616 5685152 1622936 5692496 1623464 5692768 +1623088 5692600 1623464 5692768 1622936 5692496 1615488 5689328 +1615392 5689120 1622936 5692496 1613632 5687000 1615352 5689088 +1623088 5692600 1622936 5692496 1615488 5689328 1618304 5694912 +1622936 5692496 1615488 5689272 1615488 5689328 1618304 5694912 +1623088 5692600 1623464 5692768 1622936 5692496 1618304 5694912 +1623088 5692600 1622936 5692496 1618304 5694912 1618392 5694976 +1623088 5692600 1623464 5692768 1622936 5692496 1618392 5694976 +1622936 5692496 1615488 5689328 1618304 5694912 1618392 5694976 +1612640 5685184 1613592 5686944 1613632 5687000 1622936 5692496 +1657088 5639464 1610992 5683744 1612616 5685152 1622936 5692496 +1623088 5692600 1622936 5692496 1618392 5694976 1618456 5695040 +1623088 5692600 1623464 5692768 1622936 5692496 1618456 5695040 +1622936 5692496 1618304 5694912 1618392 5694976 1618456 5695040 +1615488 5689328 1618256 5694904 1618304 5694912 1622936 5692496 +1623088 5692600 1622936 5692496 1618456 5695040 1623272 5697000 +1623088 5692600 1623464 5692768 1622936 5692496 1623272 5697000 +1618456 5695040 1618456 5695136 1623272 5697000 1622936 5692496 +1622936 5692496 1618392 5694976 1618456 5695040 1623272 5697000 +1623088 5692600 1622936 5692496 1623272 5697000 1623304 5696976 +1622936 5692496 1622928 5692400 1612616 5685152 1612640 5685184 +1657088 5639464 1622928 5692400 1622936 5692496 1623464 5692768 +1657088 5639464 1622928 5692400 1623464 5692768 1663776 5646144 +1623464 5692768 1623584 5692848 1663776 5646144 1622928 5692400 +1663776 5646144 1657088 5639464 1622928 5692400 1623584 5692848 +1622928 5692400 1622936 5692496 1623464 5692768 1623584 5692848 +1622936 5692496 1623464 5692768 1622928 5692400 1612640 5685184 +1622936 5692496 1622928 5692400 1612640 5685184 1613632 5687000 +1622928 5692400 1612616 5685152 1612640 5685184 1613632 5687000 +1622936 5692496 1623464 5692768 1622928 5692400 1613632 5687000 +1622928 5692400 1657088 5639464 1612616 5685152 1612640 5685184 +1657088 5639464 1612616 5685152 1622928 5692400 1663776 5646144 +1622936 5692496 1622928 5692400 1613632 5687000 1615392 5689120 +1622936 5692496 1622928 5692400 1615392 5689120 1615440 5689168 +1622936 5692496 1622928 5692400 1615440 5689168 1615488 5689272 +1622936 5692496 1622928 5692400 1615488 5689272 1615488 5689328 +1622928 5692400 1615440 5689168 1615488 5689272 1615488 5689328 +1622936 5692496 1622928 5692400 1615488 5689328 1618304 5694912 +1622928 5692400 1615488 5689272 1615488 5689328 1618304 5694912 +1622928 5692400 1615392 5689120 1615440 5689168 1615488 5689272 +1622936 5692496 1623464 5692768 1622928 5692400 1618304 5694912 +1622928 5692400 1612640 5685184 1613632 5687000 1615392 5689120 +1622928 5692400 1613632 5687000 1615392 5689120 1615440 5689168 +1622936 5692496 1623088 5692600 1623464 5692768 1622928 5692400 +1623464 5692768 1623584 5692848 1622928 5692400 1623088 5692600 +1622936 5692496 1623088 5692600 1622928 5692400 1618304 5694912 +1613632 5687000 1615352 5689088 1615392 5689120 1622928 5692400 +1622936 5692496 1622928 5692400 1618304 5694912 1618392 5694976 +1622928 5692400 1615488 5689328 1618304 5694912 1618392 5694976 +1622936 5692496 1623088 5692600 1622928 5692400 1618392 5694976 +1622936 5692496 1622928 5692400 1618392 5694976 1618456 5695040 +1612640 5685184 1613592 5686944 1613632 5687000 1622928 5692400 +1623584 5692848 1663880 5646248 1663776 5646144 1622928 5692400 +1657088 5639464 1622928 5692400 1663776 5646144 1663688 5645984 +1612616 5685152 1622928 5692400 1657088 5639464 1610992 5683744 +1615488 5689328 1618256 5694904 1618304 5694912 1622928 5692400 +1622928 5692400 1622936 5692376 1612616 5685152 1612640 5685184 +1622928 5692400 1622936 5692376 1612640 5685184 1613632 5687000 +1622928 5692400 1622936 5692376 1613632 5687000 1615392 5689120 +1622936 5692376 1612640 5685184 1613632 5687000 1615392 5689120 +1622936 5692376 1612616 5685152 1612640 5685184 1613632 5687000 +1622928 5692400 1657088 5639464 1622936 5692376 1615392 5689120 +1657088 5639464 1622936 5692376 1622928 5692400 1663776 5646144 +1622928 5692400 1623584 5692848 1663776 5646144 1622936 5692376 +1622928 5692400 1623464 5692768 1623584 5692848 1622936 5692376 +1623584 5692848 1663776 5646144 1622936 5692376 1623464 5692768 +1622928 5692400 1623088 5692600 1623464 5692768 1622936 5692376 +1623464 5692768 1623584 5692848 1622936 5692376 1623088 5692600 +1622936 5692376 1615392 5689120 1622928 5692400 1623088 5692600 +1663776 5646144 1657088 5639464 1622936 5692376 1623584 5692848 +1622936 5692376 1657088 5639464 1612616 5685152 1612640 5685184 +1657088 5639464 1612616 5685152 1622936 5692376 1663776 5646144 +1622928 5692400 1622936 5692376 1615392 5689120 1615440 5689168 +1622928 5692400 1622936 5692376 1615440 5689168 1615488 5689272 +1622928 5692400 1622936 5692376 1615488 5689272 1615488 5689328 +1622928 5692400 1622936 5692376 1615488 5689328 1618304 5694912 +1622936 5692376 1615488 5689272 1615488 5689328 1618304 5694912 +1622928 5692400 1622936 5692376 1618304 5694912 1618392 5694976 +1622936 5692376 1615440 5689168 1615488 5689272 1615488 5689328 +1622936 5692376 1613632 5687000 1615392 5689120 1615440 5689168 +1622928 5692400 1623088 5692600 1622936 5692376 1618304 5694912 +1622936 5692376 1615392 5689120 1615440 5689168 1615488 5689272 +1622928 5692400 1622936 5692496 1623088 5692600 1622936 5692376 +1623088 5692600 1623464 5692768 1622936 5692376 1622936 5692496 +1622928 5692400 1622936 5692496 1622936 5692376 1618304 5694912 +1613632 5687000 1615352 5689088 1615392 5689120 1622936 5692376 +1612640 5685184 1613592 5686944 1613632 5687000 1622936 5692376 +1623584 5692848 1663880 5646248 1663776 5646144 1622936 5692376 +1657088 5639464 1622936 5692376 1663776 5646144 1663688 5645984 +1612616 5685152 1622936 5692376 1657088 5639464 1610992 5683744 +1615488 5689328 1618256 5694904 1618304 5694912 1622936 5692376 +1623584 5692848 1623000 5692344 1622936 5692376 1623464 5692768 +1622936 5692376 1623088 5692600 1623464 5692768 1623000 5692344 +1623464 5692768 1623584 5692848 1623000 5692344 1623088 5692600 +1622936 5692376 1622936 5692496 1623088 5692600 1623000 5692344 +1623088 5692600 1623464 5692768 1623000 5692344 1622936 5692496 +1622936 5692376 1623000 5692344 1663776 5646144 1657088 5639464 +1623000 5692344 1657088 5639464 1622936 5692376 1622936 5692496 +1622936 5692376 1623000 5692344 1657088 5639464 1612616 5685152 +1623000 5692344 1663776 5646144 1657088 5639464 1612616 5685152 +1622936 5692376 1623000 5692344 1612616 5685152 1612640 5685184 +1622936 5692376 1623000 5692344 1612640 5685184 1613632 5687000 +1622936 5692376 1623000 5692344 1613632 5687000 1615392 5689120 +1622936 5692376 1623000 5692344 1615392 5689120 1615440 5689168 +1623000 5692344 1613632 5687000 1615392 5689120 1615440 5689168 +1623000 5692344 1612640 5685184 1613632 5687000 1615392 5689120 +1623000 5692344 1612616 5685152 1612640 5685184 1613632 5687000 +1622936 5692376 1622936 5692496 1623000 5692344 1615440 5689168 +1623000 5692344 1657088 5639464 1612616 5685152 1612640 5685184 +1623000 5692344 1623584 5692848 1663776 5646144 1657088 5639464 +1623584 5692848 1663776 5646144 1623000 5692344 1623464 5692768 +1622936 5692376 1623000 5692344 1615440 5689168 1615488 5689272 +1622936 5692376 1623000 5692344 1615488 5689272 1615488 5689328 +1623000 5692344 1615392 5689120 1615440 5689168 1615488 5689272 +1622936 5692376 1622936 5692496 1623000 5692344 1615488 5689272 +1622936 5692376 1622928 5692400 1622936 5692496 1623000 5692344 +1622936 5692496 1623088 5692600 1623000 5692344 1622928 5692400 +1622936 5692376 1622928 5692400 1623000 5692344 1615488 5689272 +1613632 5687000 1615352 5689088 1615392 5689120 1623000 5692344 +1612640 5685184 1613592 5686944 1613632 5687000 1623000 5692344 +1663776 5646144 1623000 5692344 1623584 5692848 1663880 5646248 +1623584 5692848 1623752 5693000 1663880 5646248 1623000 5692344 +1663776 5646144 1657088 5639464 1623000 5692344 1663880 5646248 +1623000 5692344 1623464 5692768 1623584 5692848 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1623000 5692344 +1657088 5639464 1610992 5683744 1612616 5685152 1623000 5692344 +1663880 5646248 1623032 5692344 1623584 5692848 1623752 5693000 +1623584 5692848 1623032 5692344 1623000 5692344 1623464 5692768 +1623000 5692344 1623088 5692600 1623464 5692768 1623032 5692344 +1623000 5692344 1622936 5692496 1623088 5692600 1623032 5692344 +1623088 5692600 1623464 5692768 1623032 5692344 1622936 5692496 +1623000 5692344 1622928 5692400 1622936 5692496 1623032 5692344 +1622936 5692496 1623088 5692600 1623032 5692344 1622928 5692400 +1623584 5692848 1663880 5646248 1623032 5692344 1623464 5692768 +1623032 5692344 1663880 5646248 1623000 5692344 1622928 5692400 +1623464 5692768 1623584 5692848 1623032 5692344 1623088 5692600 +1623000 5692344 1622936 5692376 1622928 5692400 1623032 5692344 +1623000 5692344 1623032 5692344 1663880 5646248 1663776 5646144 +1623000 5692344 1623032 5692344 1663776 5646144 1657088 5639464 +1623000 5692344 1623032 5692344 1657088 5639464 1612616 5685152 +1623000 5692344 1623032 5692344 1612616 5685152 1612640 5685184 +1623032 5692344 1657088 5639464 1612616 5685152 1612640 5685184 +1623000 5692344 1623032 5692344 1612640 5685184 1613632 5687000 +1623000 5692344 1623032 5692344 1613632 5687000 1615392 5689120 +1623000 5692344 1623032 5692344 1615392 5689120 1615440 5689168 +1623000 5692344 1623032 5692344 1615440 5689168 1615488 5689272 +1623032 5692344 1613632 5687000 1615392 5689120 1615440 5689168 +1623032 5692344 1612640 5685184 1613632 5687000 1615392 5689120 +1623032 5692344 1612616 5685152 1612640 5685184 1613632 5687000 +1623032 5692344 1663776 5646144 1657088 5639464 1612616 5685152 +1623000 5692344 1622928 5692400 1623032 5692344 1615440 5689168 +1623032 5692344 1623584 5692848 1663880 5646248 1663776 5646144 +1613632 5687000 1615352 5689088 1615392 5689120 1623032 5692344 +1612640 5685184 1613592 5686944 1613632 5687000 1623032 5692344 +1623032 5692344 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1623032 5692344 +1657088 5639464 1610992 5683744 1612616 5685152 1623032 5692344 +1663880 5646248 1623136 5692368 1623584 5692848 1623752 5693000 +1623584 5692848 1623136 5692368 1623032 5692344 1623464 5692768 +1623136 5692368 1663880 5646248 1623032 5692344 1623464 5692768 +1663880 5646248 1623032 5692344 1623136 5692368 1623752 5693000 +1623136 5692368 1623464 5692768 1623584 5692848 1623752 5693000 +1623032 5692344 1623088 5692600 1623464 5692768 1623136 5692368 +1623032 5692344 1622936 5692496 1623088 5692600 1623136 5692368 +1623032 5692344 1622928 5692400 1622936 5692496 1623136 5692368 +1623032 5692344 1622936 5692496 1623136 5692368 1663880 5646248 +1623464 5692768 1623584 5692848 1623136 5692368 1623088 5692600 +1623088 5692600 1623464 5692768 1623136 5692368 1622936 5692496 +1623032 5692344 1623136 5692368 1663880 5646248 1663776 5646144 +1623032 5692344 1622936 5692496 1623136 5692368 1663776 5646144 +1623136 5692368 1623752 5693000 1663880 5646248 1663776 5646144 +1623032 5692344 1623136 5692368 1663776 5646144 1657088 5639464 +1623032 5692344 1622936 5692496 1623136 5692368 1657088 5639464 +1623136 5692368 1663880 5646248 1663776 5646144 1657088 5639464 +1623032 5692344 1623136 5692368 1657088 5639464 1612616 5685152 +1623032 5692344 1623136 5692368 1612616 5685152 1612640 5685184 +1623032 5692344 1622936 5692496 1623136 5692368 1612640 5685184 +1623032 5692344 1623136 5692368 1612640 5685184 1613632 5687000 +1623136 5692368 1657088 5639464 1612616 5685152 1612640 5685184 +1623136 5692368 1663776 5646144 1657088 5639464 1612616 5685152 +1663776 5646144 1663688 5645984 1657088 5639464 1623136 5692368 +1657088 5639464 1610992 5683744 1612616 5685152 1623136 5692368 +1663880 5646248 1623136 5692368 1623752 5693000 1628120 5696720 +1623752 5693000 1623448 5692552 1623136 5692368 1623584 5692848 +1623136 5692368 1623448 5692552 1663880 5646248 1663776 5646144 +1623136 5692368 1623448 5692552 1663776 5646144 1657088 5639464 +1623136 5692368 1623464 5692768 1623584 5692848 1623448 5692552 +1623584 5692848 1623752 5693000 1623448 5692552 1623464 5692768 +1623136 5692368 1623088 5692600 1623464 5692768 1623448 5692552 +1623464 5692768 1623584 5692848 1623448 5692552 1623088 5692600 +1623448 5692552 1663776 5646144 1623136 5692368 1623088 5692600 +1623448 5692552 1623752 5693000 1663880 5646248 1663776 5646144 +1623752 5693000 1663880 5646248 1623448 5692552 1623584 5692848 +1623136 5692368 1622936 5692496 1623088 5692600 1623448 5692552 +1663880 5646248 1623448 5692552 1623752 5693000 1628120 5696720 +1663880 5646248 1663776 5646144 1623448 5692552 1628120 5696720 +1623448 5692552 1623584 5692848 1623752 5693000 1628120 5696720 +1623752 5693000 1626864 5696192 1628120 5696720 1623448 5692552 +1663880 5646248 1623448 5692552 1628120 5696720 1630512 5699152 +1623448 5692552 1623640 5692616 1663880 5646248 1663776 5646144 +1623448 5692552 1623640 5692616 1663776 5646144 1623136 5692368 +1663776 5646144 1657088 5639464 1623136 5692368 1623640 5692616 +1623136 5692368 1623448 5692552 1623640 5692616 1657088 5639464 +1623640 5692616 1663880 5646248 1663776 5646144 1657088 5639464 +1623448 5692552 1628120 5696720 1623640 5692616 1623136 5692368 +1623640 5692616 1628120 5696720 1663880 5646248 1663776 5646144 +1657088 5639464 1612616 5685152 1623136 5692368 1623640 5692616 +1663776 5646144 1663688 5645984 1657088 5639464 1623640 5692616 +1628120 5696720 1623640 5692616 1623448 5692552 1623752 5693000 +1623640 5692616 1623136 5692368 1623448 5692552 1623752 5693000 +1623448 5692552 1623584 5692848 1623752 5693000 1623640 5692616 +1623448 5692552 1623464 5692768 1623584 5692848 1623640 5692616 +1623448 5692552 1623088 5692600 1623464 5692768 1623640 5692616 +1623448 5692552 1623464 5692768 1623640 5692616 1623136 5692368 +1623584 5692848 1623752 5693000 1623640 5692616 1623464 5692768 +1628120 5696720 1663880 5646248 1623640 5692616 1623752 5693000 +1628120 5696720 1623640 5692616 1623752 5693000 1626864 5696192 +1628120 5696720 1663880 5646248 1623640 5692616 1626864 5696192 +1628120 5696720 1623640 5692616 1626864 5696192 1628088 5696712 +1623752 5693000 1626688 5696104 1626864 5696192 1623640 5692616 +1623752 5693000 1626600 5696072 1626688 5696104 1623640 5692616 +1626688 5696104 1626776 5696152 1626864 5696192 1623640 5692616 +1626864 5696192 1628120 5696720 1623640 5692616 1626688 5696104 +1623752 5693000 1626688 5696104 1623640 5692616 1623584 5692848 +1663880 5646248 1623640 5692616 1628120 5696720 1630512 5699152 +1623640 5692616 1623720 5692600 1663880 5646248 1663776 5646144 +1623640 5692616 1623720 5692600 1663776 5646144 1657088 5639464 +1623640 5692616 1623720 5692600 1657088 5639464 1623136 5692368 +1623640 5692616 1623720 5692600 1623136 5692368 1623448 5692552 +1623720 5692600 1657088 5639464 1623136 5692368 1623448 5692552 +1623720 5692600 1663776 5646144 1657088 5639464 1623136 5692368 +1623720 5692600 1663880 5646248 1663776 5646144 1657088 5639464 +1623640 5692616 1628120 5696720 1623720 5692600 1623448 5692552 +1628120 5696720 1623720 5692600 1623640 5692616 1626864 5696192 +1623720 5692600 1623448 5692552 1623640 5692616 1626864 5696192 +1623720 5692600 1628120 5696720 1663880 5646248 1663776 5646144 +1628120 5696720 1663880 5646248 1623720 5692600 1626864 5696192 +1628120 5696720 1623720 5692600 1626864 5696192 1628088 5696712 +1623640 5692616 1626688 5696104 1626864 5696192 1623720 5692600 +1623640 5692616 1626688 5696104 1623720 5692600 1623448 5692552 +1626864 5696192 1628120 5696720 1623720 5692600 1626688 5696104 +1626688 5696104 1626776 5696152 1626864 5696192 1623720 5692600 +1623640 5692616 1623752 5693000 1626688 5696104 1623720 5692600 +1623752 5693000 1626600 5696072 1626688 5696104 1623720 5692600 +1623640 5692616 1623752 5693000 1623720 5692600 1623448 5692552 +1623752 5693000 1626552 5696056 1626600 5696072 1623720 5692600 +1626600 5696072 1626688 5696104 1623720 5692600 1626552 5696056 +1623752 5693000 1626520 5696056 1626552 5696056 1623720 5692600 +1626688 5696104 1626864 5696192 1623720 5692600 1626600 5696072 +1623752 5693000 1626552 5696056 1623720 5692600 1623640 5692616 +1657088 5639464 1612616 5685152 1623136 5692368 1623720 5692600 +1623136 5692368 1623448 5692552 1623720 5692600 1612616 5685152 +1657088 5639464 1612616 5685152 1623720 5692600 1663776 5646144 +1612616 5685152 1612640 5685184 1623136 5692368 1623720 5692600 +1663776 5646144 1663688 5645984 1657088 5639464 1623720 5692600 +1657088 5639464 1610992 5683744 1612616 5685152 1623720 5692600 +1623640 5692616 1623584 5692848 1623752 5693000 1623720 5692600 +1623640 5692616 1623464 5692768 1623584 5692848 1623720 5692600 +1623640 5692616 1623584 5692848 1623720 5692600 1623448 5692552 +1623752 5693000 1626552 5696056 1623720 5692600 1623584 5692848 +1663880 5646248 1623720 5692600 1628120 5696720 1630512 5699152 +1623720 5692600 1623848 5692552 1663880 5646248 1663776 5646144 +1623720 5692600 1623848 5692552 1663776 5646144 1657088 5639464 +1623720 5692600 1623848 5692552 1657088 5639464 1612616 5685152 +1623848 5692552 1663776 5646144 1657088 5639464 1612616 5685152 +1623848 5692552 1663880 5646248 1663776 5646144 1657088 5639464 +1623720 5692600 1628120 5696720 1623848 5692552 1612616 5685152 +1628120 5696720 1623848 5692552 1623720 5692600 1626864 5696192 +1623720 5692600 1626688 5696104 1626864 5696192 1623848 5692552 +1623848 5692552 1612616 5685152 1623720 5692600 1626688 5696104 +1626864 5696192 1628120 5696720 1623848 5692552 1626688 5696104 +1623848 5692552 1628120 5696720 1663880 5646248 1663776 5646144 +1628120 5696720 1663880 5646248 1623848 5692552 1626864 5696192 +1628120 5696720 1623848 5692552 1626864 5696192 1628088 5696712 +1626688 5696104 1626776 5696152 1626864 5696192 1623848 5692552 +1623720 5692600 1626600 5696072 1626688 5696104 1623848 5692552 +1623720 5692600 1626552 5696056 1626600 5696072 1623848 5692552 +1626688 5696104 1626864 5696192 1623848 5692552 1626600 5696072 +1623720 5692600 1626552 5696056 1623848 5692552 1612616 5685152 +1623720 5692600 1623752 5693000 1626552 5696056 1623848 5692552 +1626552 5696056 1626600 5696072 1623848 5692552 1623752 5693000 +1623720 5692600 1623752 5693000 1623848 5692552 1612616 5685152 +1623752 5693000 1626520 5696056 1626552 5696056 1623848 5692552 +1626552 5696056 1626600 5696072 1623848 5692552 1626520 5696056 +1623752 5693000 1626520 5696056 1623848 5692552 1623720 5692600 +1626600 5696072 1626688 5696104 1623848 5692552 1626552 5696056 +1623720 5692600 1623584 5692848 1623752 5693000 1623848 5692552 +1623720 5692600 1623848 5692552 1612616 5685152 1623136 5692368 +1623720 5692600 1623848 5692552 1623136 5692368 1623448 5692552 +1623720 5692600 1623848 5692552 1623448 5692552 1623640 5692616 +1623848 5692552 1657088 5639464 1612616 5685152 1623136 5692368 +1623720 5692600 1623752 5693000 1623848 5692552 1623448 5692552 +1612616 5685152 1612640 5685184 1623136 5692368 1623848 5692552 +1612640 5685184 1623032 5692344 1623136 5692368 1623848 5692552 +1612616 5685152 1612640 5685184 1623848 5692552 1657088 5639464 +1623848 5692552 1612640 5685184 1623136 5692368 1623448 5692552 +1663776 5646144 1663688 5645984 1657088 5639464 1623848 5692552 +1657088 5639464 1610992 5683744 1612616 5685152 1623848 5692552 +1663880 5646248 1623848 5692552 1628120 5696720 1630512 5699152 +1623752 5693000 1626488 5696072 1626520 5696056 1623848 5692552 +1623848 5692552 1624032 5692416 1663880 5646248 1663776 5646144 +1623848 5692552 1624032 5692416 1663776 5646144 1657088 5639464 +1623848 5692552 1624032 5692416 1657088 5639464 1612616 5685152 +1623848 5692552 1624032 5692416 1612616 5685152 1612640 5685184 +1624032 5692416 1657088 5639464 1612616 5685152 1612640 5685184 +1624032 5692416 1663776 5646144 1657088 5639464 1612616 5685152 +1624032 5692416 1663880 5646248 1663776 5646144 1657088 5639464 +1623848 5692552 1628120 5696720 1624032 5692416 1612640 5685184 +1628120 5696720 1624032 5692416 1623848 5692552 1626864 5696192 +1623848 5692552 1626688 5696104 1626864 5696192 1624032 5692416 +1623848 5692552 1626600 5696072 1626688 5696104 1624032 5692416 +1626688 5696104 1626864 5696192 1624032 5692416 1626600 5696072 +1624032 5692416 1612640 5685184 1623848 5692552 1626600 5696072 +1626864 5696192 1628120 5696720 1624032 5692416 1626688 5696104 +1624032 5692416 1628120 5696720 1663880 5646248 1663776 5646144 +1628120 5696720 1663880 5646248 1624032 5692416 1626864 5696192 +1623848 5692552 1624032 5692416 1612640 5685184 1623136 5692368 +1612640 5685184 1623032 5692344 1623136 5692368 1624032 5692416 +1624032 5692416 1612616 5685152 1612640 5685184 1623032 5692344 +1623848 5692552 1626600 5696072 1624032 5692416 1623136 5692368 +1612640 5685184 1613632 5687000 1623032 5692344 1624032 5692416 +1623136 5692368 1623848 5692552 1624032 5692416 1623032 5692344 +1628120 5696720 1624032 5692416 1626864 5696192 1628088 5696712 +1626688 5696104 1626776 5696152 1626864 5696192 1624032 5692416 +1623848 5692552 1626552 5696056 1626600 5696072 1624032 5692416 +1623848 5692552 1626520 5696056 1626552 5696056 1624032 5692416 +1626600 5696072 1626688 5696104 1624032 5692416 1626552 5696056 +1623848 5692552 1626520 5696056 1624032 5692416 1623136 5692368 +1623848 5692552 1623752 5693000 1626520 5696056 1624032 5692416 +1626520 5696056 1626552 5696056 1624032 5692416 1623752 5693000 +1623848 5692552 1623752 5693000 1624032 5692416 1623136 5692368 +1623848 5692552 1623720 5692600 1623752 5693000 1624032 5692416 +1626552 5696056 1626600 5696072 1624032 5692416 1626520 5696056 +1623848 5692552 1624032 5692416 1623136 5692368 1623448 5692552 +1623848 5692552 1624032 5692416 1623448 5692552 1623720 5692600 +1623848 5692552 1623752 5693000 1624032 5692416 1623448 5692552 +1624032 5692416 1623032 5692344 1623136 5692368 1623448 5692552 +1663776 5646144 1663688 5645984 1657088 5639464 1624032 5692416 +1657088 5639464 1610992 5683744 1612616 5685152 1624032 5692416 +1663880 5646248 1624032 5692416 1628120 5696720 1630512 5699152 +1623752 5693000 1626488 5696072 1626520 5696056 1624032 5692416 +1624032 5692416 1624104 5692408 1663880 5646248 1663776 5646144 +1624032 5692416 1624104 5692408 1663776 5646144 1657088 5639464 +1624032 5692416 1624104 5692408 1657088 5639464 1612616 5685152 +1624032 5692416 1624104 5692408 1612616 5685152 1612640 5685184 +1624032 5692416 1624104 5692408 1612640 5685184 1623032 5692344 +1624032 5692416 1624104 5692408 1623032 5692344 1623136 5692368 +1624104 5692408 1612616 5685152 1612640 5685184 1623032 5692344 +1624104 5692408 1657088 5639464 1612616 5685152 1612640 5685184 +1624104 5692408 1663776 5646144 1657088 5639464 1612616 5685152 +1624104 5692408 1663880 5646248 1663776 5646144 1657088 5639464 +1624032 5692416 1628120 5696720 1624104 5692408 1623032 5692344 +1628120 5696720 1624104 5692408 1624032 5692416 1626864 5696192 +1624032 5692416 1626688 5696104 1626864 5696192 1624104 5692408 +1624032 5692416 1626600 5696072 1626688 5696104 1624104 5692408 +1624032 5692416 1626552 5696056 1626600 5696072 1624104 5692408 +1626600 5696072 1626688 5696104 1624104 5692408 1626552 5696056 +1626688 5696104 1626864 5696192 1624104 5692408 1626600 5696072 +1624104 5692408 1623032 5692344 1624032 5692416 1626552 5696056 +1626864 5696192 1628120 5696720 1624104 5692408 1626688 5696104 +1624104 5692408 1628120 5696720 1663880 5646248 1663776 5646144 +1628120 5696720 1663880 5646248 1624104 5692408 1626864 5696192 +1612640 5685184 1613632 5687000 1623032 5692344 1624104 5692408 +1628120 5696720 1624104 5692408 1626864 5696192 1628088 5696712 +1626688 5696104 1626776 5696152 1626864 5696192 1624104 5692408 +1624032 5692416 1626520 5696056 1626552 5696056 1624104 5692408 +1624032 5692416 1623752 5693000 1626520 5696056 1624104 5692408 +1626552 5696056 1626600 5696072 1624104 5692408 1626520 5696056 +1624032 5692416 1623752 5693000 1624104 5692408 1623032 5692344 +1624032 5692416 1623848 5692552 1623752 5693000 1624104 5692408 +1623752 5693000 1626520 5696056 1624104 5692408 1623848 5692552 +1624032 5692416 1623848 5692552 1624104 5692408 1623032 5692344 +1623848 5692552 1623720 5692600 1623752 5693000 1624104 5692408 +1626520 5696056 1626552 5696056 1624104 5692408 1623752 5693000 +1663776 5646144 1663688 5645984 1657088 5639464 1624104 5692408 +1657088 5639464 1610992 5683744 1612616 5685152 1624104 5692408 +1663880 5646248 1624104 5692408 1628120 5696720 1630512 5699152 +1623752 5693000 1626488 5696072 1626520 5696056 1624104 5692408 +1623752 5693000 1624120 5692440 1624104 5692408 1623848 5692552 +1624120 5692440 1626520 5696056 1624104 5692408 1623848 5692552 +1623752 5693000 1626520 5696056 1624120 5692440 1623848 5692552 +1624104 5692408 1624032 5692416 1623848 5692552 1624120 5692440 +1623848 5692552 1623752 5693000 1624120 5692440 1624032 5692416 +1624104 5692408 1624032 5692416 1624120 5692440 1626520 5696056 +1623752 5693000 1624120 5692440 1623848 5692552 1623720 5692600 +1624104 5692408 1624120 5692440 1626520 5696056 1626552 5696056 +1624104 5692408 1624120 5692440 1626552 5696056 1626600 5696072 +1624104 5692408 1624120 5692440 1626600 5696072 1626688 5696104 +1624120 5692440 1626552 5696056 1626600 5696072 1626688 5696104 +1624104 5692408 1624120 5692440 1626688 5696104 1626864 5696192 +1624120 5692440 1626600 5696072 1626688 5696104 1626864 5696192 +1624104 5692408 1624120 5692440 1626864 5696192 1628120 5696720 +1624120 5692440 1626688 5696104 1626864 5696192 1628120 5696720 +1624104 5692408 1624032 5692416 1624120 5692440 1628120 5696720 +1624104 5692408 1624120 5692440 1628120 5696720 1663880 5646248 +1624120 5692440 1623752 5693000 1626520 5696056 1626552 5696056 +1626864 5696192 1628088 5696712 1628120 5696720 1624120 5692440 +1626688 5696104 1626776 5696152 1626864 5696192 1624120 5692440 +1624120 5692440 1626520 5696056 1626552 5696056 1626600 5696072 +1626520 5696056 1624120 5692440 1623752 5693000 1626488 5696072 +1624120 5692440 1624120 5692536 1626520 5696056 1626552 5696056 +1624120 5692440 1623752 5693000 1624120 5692536 1626552 5696056 +1623752 5693000 1624120 5692536 1624120 5692440 1623848 5692552 +1624120 5692440 1624032 5692416 1623848 5692552 1624120 5692536 +1624120 5692536 1626552 5696056 1624120 5692440 1624032 5692416 +1623848 5692552 1623752 5693000 1624120 5692536 1624032 5692416 +1624120 5692536 1623752 5693000 1626520 5696056 1626552 5696056 +1623752 5693000 1626520 5696056 1624120 5692536 1623848 5692552 +1624120 5692440 1624104 5692408 1624032 5692416 1624120 5692536 +1623752 5693000 1624120 5692536 1623848 5692552 1623720 5692600 +1624120 5692440 1624120 5692536 1626552 5696056 1626600 5696072 +1624120 5692440 1624120 5692536 1626600 5696072 1626688 5696104 +1624120 5692536 1626520 5696056 1626552 5696056 1626600 5696072 +1624120 5692440 1624032 5692416 1624120 5692536 1626600 5696072 +1626520 5696056 1624120 5692536 1623752 5693000 1626488 5696072 +1624120 5692536 1624072 5692800 1626520 5696056 1626552 5696056 +1624120 5692536 1624072 5692800 1626552 5696056 1626600 5696072 +1624120 5692536 1623752 5693000 1624072 5692800 1626552 5696056 +1623752 5693000 1624072 5692800 1624120 5692536 1623848 5692552 +1624120 5692536 1624032 5692416 1623848 5692552 1624072 5692800 +1624072 5692800 1626552 5696056 1624120 5692536 1623848 5692552 +1624072 5692800 1623752 5693000 1626520 5696056 1626552 5696056 +1623752 5693000 1626520 5696056 1624072 5692800 1623848 5692552 +1623752 5693000 1624072 5692800 1623848 5692552 1623720 5692600 +1624072 5692800 1624120 5692536 1623848 5692552 1623720 5692600 +1623752 5693000 1626520 5696056 1624072 5692800 1623720 5692600 +1623752 5693000 1624072 5692800 1623720 5692600 1623584 5692848 +1626520 5696056 1624072 5692800 1623752 5693000 1626488 5696072 +1626520 5696056 1626552 5696056 1624072 5692800 1626488 5696072 +1624072 5692800 1623720 5692600 1623752 5693000 1626488 5696072 +1623752 5693000 1623704 5697048 1626488 5696072 1624072 5692800 +1623752 5693000 1624080 5692912 1624072 5692800 1623720 5692600 +1626488 5696072 1624080 5692912 1623752 5693000 1623704 5697048 +1626488 5696072 1624072 5692800 1624080 5692912 1623704 5697048 +1624080 5692912 1624072 5692800 1623752 5693000 1623704 5697048 +1626488 5696072 1624080 5692912 1623704 5697048 1626480 5696112 +1623752 5693000 1623632 5697024 1623704 5697048 1624080 5692912 +1624072 5692800 1624080 5692912 1626488 5696072 1626520 5696056 +1624072 5692800 1624080 5692912 1626520 5696056 1626552 5696056 +1624072 5692800 1624080 5692912 1626552 5696056 1624120 5692536 +1626552 5696056 1626600 5696072 1624120 5692536 1624080 5692912 +1624080 5692912 1626520 5696056 1626552 5696056 1624120 5692536 +1624072 5692800 1623752 5693000 1624080 5692912 1624120 5692536 +1624080 5692912 1623704 5697048 1626488 5696072 1626520 5696056 +1624080 5692912 1626488 5696072 1626520 5696056 1626552 5696056 +1624080 5692912 1624128 5693032 1626488 5696072 1626520 5696056 +1624128 5693032 1623704 5697048 1626488 5696072 1626520 5696056 +1624080 5692912 1623704 5697048 1624128 5693032 1626520 5696056 +1626488 5696072 1624128 5693032 1623704 5697048 1626480 5696112 +1623704 5697048 1624128 5693032 1624080 5692912 1623752 5693000 +1623704 5697048 1626488 5696072 1624128 5693032 1623752 5693000 +1624128 5693032 1626520 5696056 1624080 5692912 1623752 5693000 +1624080 5692912 1624072 5692800 1623752 5693000 1624128 5693032 +1623704 5697048 1624128 5693032 1623752 5693000 1623632 5697024 +1623704 5697048 1626488 5696072 1624128 5693032 1623632 5697024 +1623752 5693000 1623464 5696976 1623632 5697024 1624128 5693032 +1623752 5693000 1623376 5696968 1623464 5696976 1624128 5693032 +1624128 5693032 1624080 5692912 1623752 5693000 1623464 5696976 +1623464 5696976 1623496 5696992 1623632 5697024 1624128 5693032 +1623632 5697024 1623704 5697048 1624128 5693032 1623464 5696976 +1624080 5692912 1624128 5693032 1626520 5696056 1626552 5696056 +1624080 5692912 1624128 5693032 1626552 5696056 1624120 5692536 +1626552 5696056 1626600 5696072 1624120 5692536 1624128 5693032 +1624080 5692912 1624128 5693032 1624120 5692536 1624072 5692800 +1624128 5693032 1626552 5696056 1624120 5692536 1624072 5692800 +1624128 5693032 1626488 5696072 1626520 5696056 1626552 5696056 +1624080 5692912 1623752 5693000 1624128 5693032 1624072 5692800 +1624128 5693032 1626520 5696056 1626552 5696056 1624120 5692536 +1624120 5692536 1624232 5693160 1626552 5696056 1626600 5696072 +1624120 5692536 1624128 5693032 1624232 5693160 1626600 5696072 +1624232 5693160 1624128 5693032 1626552 5696056 1626600 5696072 +1624128 5693032 1624232 5693160 1624120 5692536 1624072 5692800 +1624128 5693032 1626552 5696056 1624232 5693160 1624072 5692800 +1624232 5693160 1626600 5696072 1624120 5692536 1624072 5692800 +1624128 5693032 1624232 5693160 1624072 5692800 1624080 5692912 +1624120 5692536 1624232 5693160 1626600 5696072 1624120 5692440 +1624120 5692536 1624072 5692800 1624232 5693160 1624120 5692440 +1626600 5696072 1626688 5696104 1624120 5692440 1624232 5693160 +1626688 5696104 1626864 5696192 1624120 5692440 1624232 5693160 +1624232 5693160 1626552 5696056 1626600 5696072 1626688 5696104 +1624120 5692440 1624120 5692536 1624232 5693160 1626688 5696104 +1626552 5696056 1624232 5693160 1624128 5693032 1626520 5696056 +1624232 5693160 1624072 5692800 1624128 5693032 1626520 5696056 +1626552 5696056 1626600 5696072 1624232 5693160 1626520 5696056 +1624128 5693032 1626488 5696072 1626520 5696056 1624232 5693160 +1624128 5693032 1623704 5697048 1626488 5696072 1624232 5693160 +1624128 5693032 1623704 5697048 1624232 5693160 1624072 5692800 +1624128 5693032 1623632 5697024 1623704 5697048 1624232 5693160 +1623704 5697048 1626488 5696072 1624232 5693160 1623632 5697024 +1624128 5693032 1623632 5697024 1624232 5693160 1624072 5692800 +1626488 5696072 1626520 5696056 1624232 5693160 1623704 5697048 +1623704 5697048 1626480 5696112 1626488 5696072 1624232 5693160 +1624128 5693032 1623464 5696976 1623632 5697024 1624232 5693160 +1624128 5693032 1623464 5696976 1624232 5693160 1624072 5692800 +1623632 5697024 1623704 5697048 1624232 5693160 1623464 5696976 +1624128 5693032 1623752 5693000 1623464 5696976 1624232 5693160 +1624128 5693032 1623752 5693000 1624232 5693160 1624072 5692800 +1623752 5693000 1623376 5696968 1623464 5696976 1624232 5693160 +1623752 5693000 1623376 5696968 1624232 5693160 1624128 5693032 +1624128 5693032 1624080 5692912 1623752 5693000 1624232 5693160 +1623464 5696976 1623496 5696992 1623632 5697024 1624232 5693160 +1623464 5696976 1623632 5697024 1624232 5693160 1623376 5696968 +1626520 5696056 1626552 5696056 1624232 5693160 1626488 5696072 +1623752 5693000 1623304 5696976 1623376 5696968 1624232 5693160 +1623704 5697048 1624280 5693272 1624232 5693160 1623632 5697024 +1624232 5693160 1623464 5696976 1623632 5697024 1624280 5693272 +1623632 5697024 1623704 5697048 1624280 5693272 1623464 5696976 +1624280 5693272 1626488 5696072 1624232 5693160 1623464 5696976 +1623704 5697048 1626488 5696072 1624280 5693272 1623632 5697024 +1624232 5693160 1624280 5693272 1626488 5696072 1626520 5696056 +1624232 5693160 1623464 5696976 1624280 5693272 1626520 5696056 +1624280 5693272 1623704 5697048 1626488 5696072 1626520 5696056 +1626488 5696072 1624280 5693272 1623704 5697048 1626480 5696112 +1623464 5696976 1623496 5696992 1623632 5697024 1624280 5693272 +1624232 5693160 1623376 5696968 1623464 5696976 1624280 5693272 +1623464 5696976 1623632 5697024 1624280 5693272 1623376 5696968 +1624232 5693160 1623376 5696968 1624280 5693272 1626520 5696056 +1624232 5693160 1623752 5693000 1623376 5696968 1624280 5693272 +1624232 5693160 1623752 5693000 1624280 5693272 1626520 5696056 +1624232 5693160 1624128 5693032 1623752 5693000 1624280 5693272 +1623376 5696968 1623464 5696976 1624280 5693272 1623752 5693000 +1624232 5693160 1624280 5693272 1626520 5696056 1626552 5696056 +1624232 5693160 1623752 5693000 1624280 5693272 1626552 5696056 +1624232 5693160 1624280 5693272 1626552 5696056 1626600 5696072 +1624232 5693160 1623752 5693000 1624280 5693272 1626600 5696072 +1624232 5693160 1624280 5693272 1626600 5696072 1626688 5696104 +1624232 5693160 1623752 5693000 1624280 5693272 1626688 5696104 +1624280 5693272 1626552 5696056 1626600 5696072 1626688 5696104 +1624232 5693160 1624280 5693272 1626688 5696104 1624120 5692440 +1624232 5693160 1623752 5693000 1624280 5693272 1624120 5692440 +1626688 5696104 1626864 5696192 1624120 5692440 1624280 5693272 +1624280 5693272 1626600 5696072 1626688 5696104 1624120 5692440 +1624280 5693272 1626488 5696072 1626520 5696056 1626552 5696056 +1624232 5693160 1624280 5693272 1624120 5692440 1624120 5692536 +1624232 5693160 1624280 5693272 1624120 5692536 1624072 5692800 +1624232 5693160 1623752 5693000 1624280 5693272 1624120 5692536 +1624280 5693272 1626688 5696104 1624120 5692440 1624120 5692536 +1624280 5693272 1626520 5696056 1626552 5696056 1626600 5696072 +1623752 5693000 1623304 5696976 1623376 5696968 1624280 5693272 +1623752 5693000 1623304 5696976 1624280 5693272 1624232 5693160 +1623376 5696968 1623464 5696976 1624280 5693272 1623304 5696976 +1623752 5693000 1623088 5692600 1623304 5696976 1624280 5693272 +1623752 5693000 1624232 5693320 1624280 5693272 1624232 5693160 +1624232 5693320 1623304 5696976 1624280 5693272 1624232 5693160 +1623752 5693000 1623304 5696976 1624232 5693320 1624232 5693160 +1623752 5693000 1624232 5693320 1624232 5693160 1624128 5693032 +1623752 5693000 1623304 5696976 1624232 5693320 1624128 5693032 +1624232 5693320 1624280 5693272 1624232 5693160 1624128 5693032 +1623752 5693000 1624232 5693320 1624128 5693032 1624080 5692912 +1623304 5696976 1624232 5693320 1623752 5693000 1623088 5692600 +1624280 5693272 1624232 5693320 1623304 5696976 1623376 5696968 +1624280 5693272 1624232 5693160 1624232 5693320 1623376 5696968 +1624232 5693320 1623752 5693000 1623304 5696976 1623376 5696968 +1624280 5693272 1624232 5693320 1623376 5696968 1623464 5696976 +1624280 5693272 1624232 5693320 1623464 5696976 1623632 5697024 +1624280 5693272 1624232 5693320 1623632 5697024 1623704 5697048 +1624232 5693320 1623464 5696976 1623632 5697024 1623704 5697048 +1624280 5693272 1624232 5693160 1624232 5693320 1623704 5697048 +1624280 5693272 1624232 5693320 1623704 5697048 1626488 5696072 +1624232 5693320 1623632 5697024 1623704 5697048 1626488 5696072 +1624280 5693272 1624232 5693320 1626488 5696072 1626520 5696056 +1624280 5693272 1624232 5693160 1624232 5693320 1626488 5696072 +1623704 5697048 1626480 5696112 1626488 5696072 1624232 5693320 +1623464 5696976 1623496 5696992 1623632 5697024 1624232 5693320 +1624232 5693320 1623376 5696968 1623464 5696976 1623632 5697024 +1624232 5693320 1623304 5696976 1623376 5696968 1623464 5696976 +1624232 5693320 1624160 5693336 1623304 5696976 1623376 5696968 +1624232 5693320 1623752 5693000 1624160 5693336 1623376 5696968 +1623752 5693000 1624160 5693336 1624232 5693320 1624128 5693032 +1624160 5693336 1623376 5696968 1624232 5693320 1624128 5693032 +1624160 5693336 1623752 5693000 1623304 5696976 1623376 5696968 +1623752 5693000 1623304 5696976 1624160 5693336 1624128 5693032 +1624232 5693320 1624232 5693160 1624128 5693032 1624160 5693336 +1624232 5693320 1624232 5693160 1624160 5693336 1623376 5696968 +1624128 5693032 1623752 5693000 1624160 5693336 1624232 5693160 +1624232 5693320 1624280 5693272 1624232 5693160 1624160 5693336 +1623752 5693000 1624160 5693336 1624128 5693032 1624080 5692912 +1623304 5696976 1624160 5693336 1623752 5693000 1623088 5692600 +1624232 5693320 1624160 5693336 1623376 5696968 1623464 5696976 +1624160 5693336 1623304 5696976 1623376 5696968 1623464 5696976 +1624232 5693320 1624232 5693160 1624160 5693336 1623464 5696976 +1624232 5693320 1624160 5693336 1623464 5696976 1623632 5697024 +1624232 5693320 1624160 5693336 1623632 5697024 1623704 5697048 +1624232 5693320 1624160 5693336 1623704 5697048 1626488 5696072 +1624232 5693320 1624232 5693160 1624160 5693336 1623704 5697048 +1623464 5696976 1623496 5696992 1623632 5697024 1624160 5693336 +1624160 5693336 1623464 5696976 1623632 5697024 1623704 5697048 +1624160 5693336 1623376 5696968 1623464 5696976 1623632 5697024 +1624160 5693336 1624048 5693248 1623304 5696976 1623376 5696968 +1623752 5693000 1624048 5693248 1624160 5693336 1624128 5693032 +1624160 5693336 1624232 5693160 1624128 5693032 1624048 5693248 +1624048 5693248 1623304 5696976 1624160 5693336 1624232 5693160 +1624128 5693032 1623752 5693000 1624048 5693248 1624232 5693160 +1623752 5693000 1623304 5696976 1624048 5693248 1624128 5693032 +1624160 5693336 1624232 5693320 1624232 5693160 1624048 5693248 +1623752 5693000 1624048 5693248 1624128 5693032 1624080 5692912 +1623304 5696976 1624048 5693248 1623752 5693000 1623088 5692600 +1610992 5683744 1614832 5682448 1657088 5639464 1610912 5683672 +1610992 5683744 1614832 5682448 1610912 5683672 1610944 5683704 +1612616 5685152 1614832 5682448 1610992 5683744 1611080 5683832 +1612616 5685152 1657088 5639464 1614832 5682448 1611080 5683832 +1610992 5683744 1611080 5683832 1614832 5682448 1610912 5683672 +1614832 5682448 1612616 5685152 1657088 5639464 1610912 5683672 +1610992 5683744 1611032 5683792 1611080 5683832 1614832 5682448 +1612616 5685152 1614832 5682448 1611080 5683832 1612576 5685128 +1612616 5685152 1657088 5639464 1614832 5682448 1612576 5685128 +1614832 5682448 1610992 5683744 1611080 5683832 1612576 5685128 +1611080 5683832 1612496 5685080 1612576 5685128 1614832 5682448 +1611080 5683832 1612496 5685080 1614832 5682448 1610992 5683744 +1611080 5683832 1611136 5683904 1612496 5685080 1614832 5682448 +1611080 5683832 1611136 5683904 1614832 5682448 1610992 5683744 +1612496 5685080 1612576 5685128 1614832 5682448 1611136 5683904 +1612576 5685128 1612616 5685152 1614832 5682448 1612496 5685080 +1657088 5639464 1610824 5683608 1610912 5683672 1614832 5682448 +1610912 5683672 1610992 5683744 1614832 5682448 1610824 5683608 +1657088 5639464 1610824 5683608 1614832 5682448 1612616 5685152 +1657088 5639464 1610736 5683552 1610824 5683608 1614832 5682448 +1657088 5639464 1610736 5683552 1614832 5682448 1612616 5685152 +1610824 5683608 1610912 5683672 1614832 5682448 1610736 5683552 +1657088 5639464 1614832 5682448 1612616 5685152 1624104 5692408 +1614832 5682448 1612576 5685128 1612616 5685152 1624104 5692408 +1657088 5639464 1610736 5683552 1614832 5682448 1624104 5692408 +1612616 5685152 1612640 5685184 1624104 5692408 1614832 5682448 +1612616 5685152 1612640 5685184 1614832 5682448 1612576 5685128 +1612640 5685184 1623032 5692344 1624104 5692408 1614832 5682448 +1623032 5692344 1624032 5692416 1624104 5692408 1614832 5682448 +1612640 5685184 1623032 5692344 1614832 5682448 1612616 5685152 +1657088 5639464 1614832 5682448 1624104 5692408 1663776 5646144 +1657088 5639464 1610736 5683552 1614832 5682448 1663776 5646144 +1624104 5692408 1663880 5646248 1663776 5646144 1614832 5682448 +1612640 5685184 1613632 5687000 1623032 5692344 1614832 5682448 +1613632 5687000 1615392 5689120 1623032 5692344 1614832 5682448 +1615392 5689120 1615440 5689168 1623032 5692344 1614832 5682448 +1615440 5689168 1623000 5692344 1623032 5692344 1614832 5682448 +1615440 5689168 1615488 5689272 1623000 5692344 1614832 5682448 +1615440 5689168 1623000 5692344 1614832 5682448 1615392 5689120 +1615392 5689120 1615440 5689168 1614832 5682448 1613632 5687000 +1623032 5692344 1624104 5692408 1614832 5682448 1623000 5692344 +1612640 5685184 1613632 5687000 1614832 5682448 1612616 5685152 +1613632 5687000 1615392 5689120 1614832 5682448 1612640 5685184 +1613632 5687000 1615352 5689088 1615392 5689120 1614832 5682448 +1615392 5689120 1615440 5689168 1614832 5682448 1615352 5689088 +1613632 5687000 1615352 5689088 1614832 5682448 1612640 5685184 +1613632 5687000 1615264 5689048 1615352 5689088 1614832 5682448 +1612640 5685184 1613592 5686944 1613632 5687000 1614832 5682448 +1612640 5685184 1613592 5686944 1614832 5682448 1612616 5685152 +1613592 5686944 1613600 5686968 1613632 5687000 1614832 5682448 +1613632 5687000 1615352 5689088 1614832 5682448 1613592 5686944 +1612640 5685184 1612656 5685232 1613592 5686944 1614832 5682448 +1612640 5685184 1612656 5685232 1614832 5682448 1612616 5685152 +1613592 5686944 1613632 5687000 1614832 5682448 1612656 5685232 +1657088 5639464 1614832 5682448 1663776 5646144 1663688 5645984 +1612656 5685232 1612664 5685288 1613592 5686944 1614832 5682448 +1612656 5685232 1612664 5685288 1614832 5682448 1612640 5685184 +1612664 5685288 1613536 5686904 1613592 5686944 1614832 5682448 +1613592 5686944 1613632 5687000 1614832 5682448 1612664 5685288 +1624104 5692408 1663776 5646144 1614832 5682448 1623032 5692344 +1657088 5639464 1610648 5683504 1610736 5683552 1614832 5682448 +1657088 5639464 1610648 5683504 1614832 5682448 1663776 5646144 +1610736 5683552 1610824 5683608 1614832 5682448 1610648 5683504 +1657088 5639464 1657056 5639384 1610648 5683504 1614832 5682448 +1657088 5639464 1657056 5639384 1614832 5682448 1663776 5646144 +1657056 5639384 1609800 5683160 1610648 5683504 1614832 5682448 +1657056 5639384 1609696 5683144 1609800 5683160 1614832 5682448 +1657056 5639384 1601464 5680984 1609696 5683144 1614832 5682448 +1601464 5680984 1601560 5681032 1609696 5683144 1614832 5682448 +1601464 5680984 1601560 5681032 1614832 5682448 1657056 5639384 +1609696 5683144 1609800 5683160 1614832 5682448 1601560 5681032 +1657056 5639384 1599875 5599875 1601464 5680984 1614832 5682448 +1599875 5599875 1601256 5680984 1601464 5680984 1614832 5682448 +1601464 5680984 1601560 5681032 1614832 5682448 1599875 5599875 +1609800 5683160 1610648 5683504 1614832 5682448 1609696 5683144 +1609800 5683160 1610616 5683496 1610648 5683504 1614832 5682448 +1601560 5681032 1608768 5683304 1609696 5683144 1614832 5682448 +1657056 5639384 1599875 5599875 1614832 5682448 1657088 5639464 +1657056 5639384 1657088 5639296 1599875 5599875 1614832 5682448 +1610648 5683504 1610736 5683552 1614832 5682448 1609800 5683160 +1611136 5683904 1612408 5685072 1612496 5685080 1614832 5682448 +1614832 5682448 1614880 5682424 1663776 5646144 1657088 5639464 +1614832 5682448 1614880 5682424 1657088 5639464 1657056 5639384 +1614880 5682424 1663776 5646144 1657088 5639464 1657056 5639384 +1663776 5646144 1614880 5682424 1624104 5692408 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1614880 5682424 +1624104 5692408 1614880 5682424 1614832 5682448 1623032 5692344 +1624104 5692408 1614880 5682424 1623032 5692344 1624032 5692416 +1614832 5682448 1623000 5692344 1623032 5692344 1614880 5682424 +1614832 5682448 1615440 5689168 1623000 5692344 1614880 5682424 +1615440 5689168 1615488 5689272 1623000 5692344 1614880 5682424 +1614832 5682448 1615392 5689120 1615440 5689168 1614880 5682424 +1615440 5689168 1623000 5692344 1614880 5682424 1615392 5689120 +1614832 5682448 1615352 5689088 1615392 5689120 1614880 5682424 +1615392 5689120 1615440 5689168 1614880 5682424 1615352 5689088 +1623000 5692344 1623032 5692344 1614880 5682424 1615440 5689168 +1614832 5682448 1613632 5687000 1615352 5689088 1614880 5682424 +1615352 5689088 1615392 5689120 1614880 5682424 1613632 5687000 +1614832 5682448 1613592 5686944 1613632 5687000 1614880 5682424 +1613632 5687000 1615264 5689048 1615352 5689088 1614880 5682424 +1623032 5692344 1624104 5692408 1614880 5682424 1623000 5692344 +1614832 5682448 1614880 5682424 1657056 5639384 1599875 5599875 +1614880 5682424 1657088 5639464 1657056 5639384 1599875 5599875 +1614832 5682448 1614880 5682424 1599875 5599875 1601464 5680984 +1599875 5599875 1601256 5680984 1601464 5680984 1614880 5682424 +1614832 5682448 1614880 5682424 1601464 5680984 1601560 5681032 +1614832 5682448 1614880 5682424 1601560 5681032 1609696 5683144 +1614880 5682424 1601464 5680984 1601560 5681032 1609696 5683144 +1614832 5682448 1614880 5682424 1609696 5683144 1609800 5683160 +1614880 5682424 1601560 5681032 1609696 5683144 1609800 5683160 +1614880 5682424 1599875 5599875 1601464 5680984 1601560 5681032 +1614832 5682448 1614880 5682424 1609800 5683160 1610648 5683504 +1601560 5681032 1608768 5683304 1609696 5683144 1614880 5682424 +1614880 5682424 1657056 5639384 1599875 5599875 1601464 5680984 +1657056 5639384 1657088 5639296 1599875 5599875 1614880 5682424 +1614832 5682448 1613632 5687000 1614880 5682424 1609800 5683160 +1614880 5682424 1624104 5692408 1663776 5646144 1657088 5639464 +1624104 5692408 1663776 5646144 1614880 5682424 1623032 5692344 +1663776 5646144 1614960 5682392 1624104 5692408 1663880 5646248 +1614880 5682424 1614960 5682392 1663776 5646144 1657088 5639464 +1614960 5682392 1624104 5692408 1663776 5646144 1657088 5639464 +1614880 5682424 1614960 5682392 1657088 5639464 1657056 5639384 +1614880 5682424 1614960 5682392 1657056 5639384 1599875 5599875 +1614960 5682392 1657088 5639464 1657056 5639384 1599875 5599875 +1663776 5646144 1663688 5645984 1657088 5639464 1614960 5682392 +1614880 5682424 1614960 5682392 1599875 5599875 1601464 5680984 +1614960 5682392 1657056 5639384 1599875 5599875 1601464 5680984 +1599875 5599875 1601256 5680984 1601464 5680984 1614960 5682392 +1614880 5682424 1614960 5682392 1601464 5680984 1601560 5681032 +1614880 5682424 1614960 5682392 1601560 5681032 1609696 5683144 +1614880 5682424 1614960 5682392 1609696 5683144 1609800 5683160 +1614960 5682392 1601464 5680984 1601560 5681032 1609696 5683144 +1601560 5681032 1608768 5683304 1609696 5683144 1614960 5682392 +1614960 5682392 1599875 5599875 1601464 5680984 1601560 5681032 +1657056 5639384 1657088 5639296 1599875 5599875 1614960 5682392 +1614960 5682392 1663776 5646144 1657088 5639464 1657056 5639384 +1614880 5682424 1624104 5692408 1614960 5682392 1609696 5683144 +1624104 5692408 1614960 5682392 1614880 5682424 1623032 5692344 +1624104 5692408 1663776 5646144 1614960 5682392 1623032 5692344 +1624104 5692408 1614960 5682392 1623032 5692344 1624032 5692416 +1614880 5682424 1623000 5692344 1623032 5692344 1614960 5682392 +1614880 5682424 1615440 5689168 1623000 5692344 1614960 5682392 +1614880 5682424 1615392 5689120 1615440 5689168 1614960 5682392 +1615440 5689168 1615488 5689272 1623000 5692344 1614960 5682392 +1614880 5682424 1615352 5689088 1615392 5689120 1614960 5682392 +1615392 5689120 1615440 5689168 1614960 5682392 1615352 5689088 +1614880 5682424 1613632 5687000 1615352 5689088 1614960 5682392 +1615352 5689088 1615392 5689120 1614960 5682392 1613632 5687000 +1615440 5689168 1623000 5692344 1614960 5682392 1615392 5689120 +1613632 5687000 1615264 5689048 1615352 5689088 1614960 5682392 +1614880 5682424 1614832 5682448 1613632 5687000 1614960 5682392 +1613632 5687000 1615352 5689088 1614960 5682392 1614832 5682448 +1614832 5682448 1613592 5686944 1613632 5687000 1614960 5682392 +1623000 5692344 1623032 5692344 1614960 5682392 1615440 5689168 +1614960 5682392 1609696 5683144 1614880 5682424 1614832 5682448 +1623032 5692344 1624104 5692408 1614960 5682392 1623000 5692344 +1614960 5682392 1615040 5682368 1663776 5646144 1657088 5639464 +1614960 5682392 1624104 5692408 1615040 5682368 1657088 5639464 +1624104 5692408 1615040 5682368 1614960 5682392 1623032 5692344 +1615040 5682368 1657088 5639464 1614960 5682392 1623032 5692344 +1615040 5682368 1624104 5692408 1663776 5646144 1657088 5639464 +1624104 5692408 1663776 5646144 1615040 5682368 1623032 5692344 +1624104 5692408 1615040 5682368 1623032 5692344 1624032 5692416 +1663776 5646144 1615040 5682368 1624104 5692408 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1615040 5682368 +1614960 5682392 1615040 5682368 1657088 5639464 1657056 5639384 +1615040 5682368 1663776 5646144 1657088 5639464 1657056 5639384 +1614960 5682392 1623032 5692344 1615040 5682368 1657056 5639384 +1614960 5682392 1615040 5682368 1657056 5639384 1599875 5599875 +1614960 5682392 1615040 5682368 1599875 5599875 1601464 5680984 +1614960 5682392 1623032 5692344 1615040 5682368 1601464 5680984 +1615040 5682368 1657056 5639384 1599875 5599875 1601464 5680984 +1599875 5599875 1601256 5680984 1601464 5680984 1615040 5682368 +1614960 5682392 1615040 5682368 1601464 5680984 1601560 5681032 +1615040 5682368 1599875 5599875 1601464 5680984 1601560 5681032 +1614960 5682392 1623032 5692344 1615040 5682368 1601560 5681032 +1614960 5682392 1615040 5682368 1601560 5681032 1609696 5683144 +1657056 5639384 1657088 5639296 1599875 5599875 1615040 5682368 +1615040 5682368 1657088 5639464 1657056 5639384 1599875 5599875 +1614960 5682392 1623000 5692344 1623032 5692344 1615040 5682368 +1614960 5682392 1623000 5692344 1615040 5682368 1601560 5681032 +1623032 5692344 1624104 5692408 1615040 5682368 1623000 5692344 +1614960 5682392 1615440 5689168 1623000 5692344 1615040 5682368 +1614960 5682392 1615440 5689168 1615040 5682368 1601560 5681032 +1615440 5689168 1615488 5689272 1623000 5692344 1615040 5682368 +1614960 5682392 1615392 5689120 1615440 5689168 1615040 5682368 +1614960 5682392 1615392 5689120 1615040 5682368 1601560 5681032 +1614960 5682392 1615352 5689088 1615392 5689120 1615040 5682368 +1614960 5682392 1615352 5689088 1615040 5682368 1601560 5681032 +1614960 5682392 1613632 5687000 1615352 5689088 1615040 5682368 +1614960 5682392 1613632 5687000 1615040 5682368 1601560 5681032 +1615352 5689088 1615392 5689120 1615040 5682368 1613632 5687000 +1614960 5682392 1614832 5682448 1613632 5687000 1615040 5682368 +1614960 5682392 1614832 5682448 1615040 5682368 1601560 5681032 +1613632 5687000 1615352 5689088 1615040 5682368 1614832 5682448 +1615392 5689120 1615440 5689168 1615040 5682368 1615352 5689088 +1614832 5682448 1613592 5686944 1613632 5687000 1615040 5682368 +1613632 5687000 1615352 5689088 1615040 5682368 1613592 5686944 +1614832 5682448 1613592 5686944 1615040 5682368 1614960 5682392 +1613592 5686944 1613600 5686968 1613632 5687000 1615040 5682368 +1613632 5687000 1615264 5689048 1615352 5689088 1615040 5682368 +1614960 5682392 1614880 5682424 1614832 5682448 1615040 5682368 +1614832 5682448 1612664 5685288 1613592 5686944 1615040 5682368 +1615440 5689168 1623000 5692344 1615040 5682368 1615392 5689120 +1623000 5692344 1623032 5692344 1615040 5682368 1615440 5689168 +1615040 5682368 1615128 5682360 1663776 5646144 1657088 5639464 +1615040 5682368 1615128 5682360 1657088 5639464 1657056 5639384 +1615128 5682360 1663776 5646144 1657088 5639464 1657056 5639384 +1615040 5682368 1624104 5692408 1615128 5682360 1657056 5639384 +1624104 5692408 1615128 5682360 1615040 5682368 1623032 5692344 +1615040 5682368 1623000 5692344 1623032 5692344 1615128 5682360 +1615128 5682360 1657056 5639384 1615040 5682368 1623000 5692344 +1623032 5692344 1624104 5692408 1615128 5682360 1623000 5692344 +1615128 5682360 1624104 5692408 1663776 5646144 1657088 5639464 +1624104 5692408 1663776 5646144 1615128 5682360 1623032 5692344 +1624104 5692408 1615128 5682360 1623032 5692344 1624032 5692416 +1663776 5646144 1615128 5682360 1624104 5692408 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1615128 5682360 +1615040 5682368 1615128 5682360 1657056 5639384 1599875 5599875 +1615128 5682360 1657088 5639464 1657056 5639384 1599875 5599875 +1615040 5682368 1623000 5692344 1615128 5682360 1599875 5599875 +1615040 5682368 1615128 5682360 1599875 5599875 1601464 5680984 +1615040 5682368 1615128 5682360 1601464 5680984 1601560 5681032 +1615040 5682368 1623000 5692344 1615128 5682360 1601464 5680984 +1599875 5599875 1601256 5680984 1601464 5680984 1615128 5682360 +1657056 5639384 1657088 5639296 1599875 5599875 1615128 5682360 +1615128 5682360 1657056 5639384 1599875 5599875 1601464 5680984 +1615040 5682368 1615440 5689168 1623000 5692344 1615128 5682360 +1623000 5692344 1623032 5692344 1615128 5682360 1615440 5689168 +1615040 5682368 1615440 5689168 1615128 5682360 1601464 5680984 +1615440 5689168 1615488 5689272 1623000 5692344 1615128 5682360 +1615040 5682368 1615392 5689120 1615440 5689168 1615128 5682360 +1615040 5682368 1615392 5689120 1615128 5682360 1601464 5680984 +1615040 5682368 1615352 5689088 1615392 5689120 1615128 5682360 +1615040 5682368 1615352 5689088 1615128 5682360 1601464 5680984 +1615040 5682368 1613632 5687000 1615352 5689088 1615128 5682360 +1615040 5682368 1613632 5687000 1615128 5682360 1601464 5680984 +1615040 5682368 1613592 5686944 1613632 5687000 1615128 5682360 +1615040 5682368 1613592 5686944 1615128 5682360 1601464 5680984 +1613632 5687000 1615352 5689088 1615128 5682360 1613592 5686944 +1615352 5689088 1615392 5689120 1615128 5682360 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1615128 5682360 +1615040 5682368 1614832 5682448 1613592 5686944 1615128 5682360 +1615040 5682368 1614832 5682448 1615128 5682360 1601464 5680984 +1613592 5686944 1613632 5687000 1615128 5682360 1614832 5682448 +1615040 5682368 1614960 5682392 1614832 5682448 1615128 5682360 +1615040 5682368 1614960 5682392 1615128 5682360 1601464 5680984 +1614832 5682448 1613592 5686944 1615128 5682360 1614960 5682392 +1613632 5687000 1615264 5689048 1615352 5689088 1615128 5682360 +1614960 5682392 1614880 5682424 1614832 5682448 1615128 5682360 +1614960 5682392 1614880 5682424 1615128 5682360 1615040 5682368 +1614832 5682448 1613592 5686944 1615128 5682360 1614880 5682424 +1614832 5682448 1612664 5685288 1613592 5686944 1615128 5682360 +1615392 5689120 1615440 5689168 1615128 5682360 1615352 5689088 +1615440 5689168 1623000 5692344 1615128 5682360 1615392 5689120 +1615128 5682360 1615160 5682368 1663776 5646144 1657088 5639464 +1615128 5682360 1615160 5682368 1657088 5639464 1657056 5639384 +1615128 5682360 1615160 5682368 1657056 5639384 1599875 5599875 +1615160 5682368 1663776 5646144 1657088 5639464 1657056 5639384 +1615128 5682360 1624104 5692408 1615160 5682368 1657056 5639384 +1624104 5692408 1615160 5682368 1615128 5682360 1623032 5692344 +1615128 5682360 1623000 5692344 1623032 5692344 1615160 5682368 +1615128 5682360 1615440 5689168 1623000 5692344 1615160 5682368 +1623000 5692344 1623032 5692344 1615160 5682368 1615440 5689168 +1615160 5682368 1657056 5639384 1615128 5682360 1615440 5689168 +1623032 5692344 1624104 5692408 1615160 5682368 1623000 5692344 +1615160 5682368 1624104 5692408 1663776 5646144 1657088 5639464 +1624104 5692408 1663776 5646144 1615160 5682368 1623032 5692344 +1615440 5689168 1615488 5689272 1623000 5692344 1615160 5682368 +1624104 5692408 1615160 5682368 1623032 5692344 1624032 5692416 +1663776 5646144 1615160 5682368 1624104 5692408 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1615160 5682368 +1615128 5682360 1615392 5689120 1615440 5689168 1615160 5682368 +1615440 5689168 1623000 5692344 1615160 5682368 1615392 5689120 +1615128 5682360 1615392 5689120 1615160 5682368 1657056 5639384 +1615128 5682360 1615352 5689088 1615392 5689120 1615160 5682368 +1615128 5682360 1615352 5689088 1615160 5682368 1657056 5639384 +1615128 5682360 1613632 5687000 1615352 5689088 1615160 5682368 +1615128 5682360 1613632 5687000 1615160 5682368 1657056 5639384 +1615128 5682360 1613592 5686944 1613632 5687000 1615160 5682368 +1615128 5682360 1613592 5686944 1615160 5682368 1657056 5639384 +1615128 5682360 1614832 5682448 1613592 5686944 1615160 5682368 +1615128 5682360 1614832 5682448 1615160 5682368 1657056 5639384 +1613592 5686944 1613632 5687000 1615160 5682368 1614832 5682448 +1613632 5687000 1615352 5689088 1615160 5682368 1613592 5686944 +1613592 5686944 1613600 5686968 1613632 5687000 1615160 5682368 +1615128 5682360 1614880 5682424 1614832 5682448 1615160 5682368 +1615128 5682360 1614880 5682424 1615160 5682368 1657056 5639384 +1614832 5682448 1613592 5686944 1615160 5682368 1614880 5682424 +1613632 5687000 1615264 5689048 1615352 5689088 1615160 5682368 +1615128 5682360 1614960 5682392 1614880 5682424 1615160 5682368 +1615128 5682360 1614960 5682392 1615160 5682368 1657056 5639384 +1615128 5682360 1615040 5682368 1614960 5682392 1615160 5682368 +1615128 5682360 1615040 5682368 1615160 5682368 1657056 5639384 +1614880 5682424 1614832 5682448 1615160 5682368 1614960 5682392 +1614960 5682392 1614880 5682424 1615160 5682368 1615040 5682368 +1614832 5682448 1612664 5685288 1613592 5686944 1615160 5682368 +1615352 5689088 1615392 5689120 1615160 5682368 1613632 5687000 +1615392 5689120 1615440 5689168 1615160 5682368 1615352 5689088 +1615160 5682368 1615256 5682392 1663776 5646144 1657088 5639464 +1615160 5682368 1615256 5682392 1657088 5639464 1657056 5639384 +1615160 5682368 1615256 5682392 1657056 5639384 1615128 5682360 +1615256 5682392 1663776 5646144 1657088 5639464 1657056 5639384 +1615160 5682368 1624104 5692408 1615256 5682392 1657056 5639384 +1624104 5692408 1615256 5682392 1615160 5682368 1623032 5692344 +1615160 5682368 1623000 5692344 1623032 5692344 1615256 5682392 +1615160 5682368 1615440 5689168 1623000 5692344 1615256 5682392 +1615160 5682368 1615392 5689120 1615440 5689168 1615256 5682392 +1615440 5689168 1623000 5692344 1615256 5682392 1615392 5689120 +1623000 5692344 1623032 5692344 1615256 5682392 1615440 5689168 +1615256 5682392 1657056 5639384 1615160 5682368 1615392 5689120 +1623032 5692344 1624104 5692408 1615256 5682392 1623000 5692344 +1615256 5682392 1624104 5692408 1663776 5646144 1657088 5639464 +1624104 5692408 1663776 5646144 1615256 5682392 1623032 5692344 +1615440 5689168 1615488 5689272 1623000 5692344 1615256 5682392 +1624104 5692408 1615256 5682392 1623032 5692344 1624032 5692416 +1663776 5646144 1615256 5682392 1624104 5692408 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1615256 5682392 +1615160 5682368 1615352 5689088 1615392 5689120 1615256 5682392 +1615392 5689120 1615440 5689168 1615256 5682392 1615352 5689088 +1615160 5682368 1615352 5689088 1615256 5682392 1657056 5639384 +1615160 5682368 1613632 5687000 1615352 5689088 1615256 5682392 +1615160 5682368 1613632 5687000 1615256 5682392 1657056 5639384 +1615160 5682368 1613592 5686944 1613632 5687000 1615256 5682392 +1615160 5682368 1613592 5686944 1615256 5682392 1657056 5639384 +1615160 5682368 1614832 5682448 1613592 5686944 1615256 5682392 +1615160 5682368 1614832 5682448 1615256 5682392 1657056 5639384 +1615160 5682368 1614880 5682424 1614832 5682448 1615256 5682392 +1615160 5682368 1614880 5682424 1615256 5682392 1657056 5639384 +1614832 5682448 1613592 5686944 1615256 5682392 1614880 5682424 +1613592 5686944 1613632 5687000 1615256 5682392 1614832 5682448 +1613592 5686944 1613600 5686968 1613632 5687000 1615256 5682392 +1615160 5682368 1614960 5682392 1614880 5682424 1615256 5682392 +1615160 5682368 1614960 5682392 1615256 5682392 1657056 5639384 +1614880 5682424 1614832 5682448 1615256 5682392 1614960 5682392 +1613632 5687000 1615264 5689048 1615352 5689088 1615256 5682392 +1615160 5682368 1615040 5682368 1614960 5682392 1615256 5682392 +1614832 5682448 1612664 5685288 1613592 5686944 1615256 5682392 +1613632 5687000 1615352 5689088 1615256 5682392 1613592 5686944 +1615352 5689088 1615392 5689120 1615256 5682392 1613632 5687000 +1615256 5682392 1615296 5682424 1663776 5646144 1657088 5639464 +1615256 5682392 1615296 5682424 1657088 5639464 1657056 5639384 +1615256 5682392 1624104 5692408 1615296 5682424 1657088 5639464 +1624104 5692408 1615296 5682424 1615256 5682392 1623032 5692344 +1615256 5682392 1623000 5692344 1623032 5692344 1615296 5682424 +1615256 5682392 1615440 5689168 1623000 5692344 1615296 5682424 +1615256 5682392 1615392 5689120 1615440 5689168 1615296 5682424 +1615256 5682392 1615352 5689088 1615392 5689120 1615296 5682424 +1615392 5689120 1615440 5689168 1615296 5682424 1615352 5689088 +1615440 5689168 1623000 5692344 1615296 5682424 1615392 5689120 +1623000 5692344 1623032 5692344 1615296 5682424 1615440 5689168 +1615296 5682424 1657088 5639464 1615256 5682392 1615352 5689088 +1623032 5692344 1624104 5692408 1615296 5682424 1623000 5692344 +1615296 5682424 1624104 5692408 1663776 5646144 1657088 5639464 +1624104 5692408 1663776 5646144 1615296 5682424 1623032 5692344 +1615440 5689168 1615488 5689272 1623000 5692344 1615296 5682424 +1624104 5692408 1615296 5682424 1623032 5692344 1624032 5692416 +1663776 5646144 1615296 5682424 1624104 5692408 1663880 5646248 +1663776 5646144 1663688 5645984 1657088 5639464 1615296 5682424 +1615256 5682392 1613632 5687000 1615352 5689088 1615296 5682424 +1615352 5689088 1615392 5689120 1615296 5682424 1613632 5687000 +1615256 5682392 1613632 5687000 1615296 5682424 1657088 5639464 +1613632 5687000 1615264 5689048 1615352 5689088 1615296 5682424 +1615256 5682392 1613592 5686944 1613632 5687000 1615296 5682424 +1615256 5682392 1613592 5686944 1615296 5682424 1657088 5639464 +1615256 5682392 1614832 5682448 1613592 5686944 1615296 5682424 +1615256 5682392 1614832 5682448 1615296 5682424 1657088 5639464 +1615256 5682392 1614880 5682424 1614832 5682448 1615296 5682424 +1615256 5682392 1614880 5682424 1615296 5682424 1657088 5639464 +1615256 5682392 1614960 5682392 1614880 5682424 1615296 5682424 +1615256 5682392 1614960 5682392 1615296 5682424 1657088 5639464 +1614880 5682424 1614832 5682448 1615296 5682424 1614960 5682392 +1614832 5682448 1613592 5686944 1615296 5682424 1614880 5682424 +1613592 5686944 1613600 5686968 1613632 5687000 1615296 5682424 +1615256 5682392 1615160 5682368 1614960 5682392 1615296 5682424 +1615256 5682392 1615160 5682368 1615296 5682424 1657088 5639464 +1614960 5682392 1614880 5682424 1615296 5682424 1615160 5682368 +1615160 5682368 1615040 5682368 1614960 5682392 1615296 5682424 +1614960 5682392 1614880 5682424 1615296 5682424 1615040 5682368 +1615160 5682368 1615128 5682360 1615040 5682368 1615296 5682424 +1615160 5682368 1615040 5682368 1615296 5682424 1615256 5682392 +1614832 5682448 1612664 5685288 1613592 5686944 1615296 5682424 +1613592 5686944 1613632 5687000 1615296 5682424 1614832 5682448 +1613632 5687000 1615352 5689088 1615296 5682424 1613592 5686944 +1615296 5682424 1615296 5682480 1615352 5689088 1615392 5689120 +1615296 5682424 1615296 5682480 1615392 5689120 1615440 5689168 +1615296 5682480 1615352 5689088 1615392 5689120 1615440 5689168 +1615296 5682424 1615296 5682480 1615440 5689168 1623000 5692344 +1615296 5682480 1615392 5689120 1615440 5689168 1623000 5692344 +1615296 5682424 1615296 5682480 1623000 5692344 1623032 5692344 +1615296 5682480 1615440 5689168 1623000 5692344 1623032 5692344 +1615296 5682424 1615296 5682480 1623032 5692344 1624104 5692408 +1615296 5682480 1623000 5692344 1623032 5692344 1624104 5692408 +1615296 5682424 1613632 5687000 1615296 5682480 1624104 5692408 +1615296 5682424 1615296 5682480 1624104 5692408 1663776 5646144 +1615296 5682480 1613632 5687000 1615352 5689088 1615392 5689120 +1615440 5689168 1615488 5689272 1623000 5692344 1615296 5682480 +1623032 5692344 1624032 5692416 1624104 5692408 1615296 5682480 +1615352 5689088 1615296 5682480 1613632 5687000 1615264 5689048 +1613632 5687000 1615296 5682480 1615296 5682424 1613592 5686944 +1615296 5682480 1624104 5692408 1615296 5682424 1613592 5686944 +1613632 5687000 1615352 5689088 1615296 5682480 1613592 5686944 +1613632 5687000 1615296 5682480 1613592 5686944 1613600 5686968 +1615296 5682424 1614832 5682448 1613592 5686944 1615296 5682480 +1615296 5682424 1614832 5682448 1615296 5682480 1624104 5692408 +1615296 5682424 1614880 5682424 1614832 5682448 1615296 5682480 +1615296 5682424 1614880 5682424 1615296 5682480 1624104 5692408 +1615296 5682424 1614960 5682392 1614880 5682424 1615296 5682480 +1615296 5682424 1614960 5682392 1615296 5682480 1624104 5692408 +1615296 5682424 1615040 5682368 1614960 5682392 1615296 5682480 +1615296 5682424 1615040 5682368 1615296 5682480 1624104 5692408 +1614960 5682392 1614880 5682424 1615296 5682480 1615040 5682368 +1614880 5682424 1614832 5682448 1615296 5682480 1614960 5682392 +1615296 5682424 1615160 5682368 1615040 5682368 1615296 5682480 +1615296 5682424 1615160 5682368 1615296 5682480 1624104 5692408 +1615040 5682368 1614960 5682392 1615296 5682480 1615160 5682368 +1615160 5682368 1615128 5682360 1615040 5682368 1615296 5682480 +1615296 5682424 1615256 5682392 1615160 5682368 1615296 5682480 +1615296 5682424 1615256 5682392 1615296 5682480 1624104 5692408 +1615160 5682368 1615040 5682368 1615296 5682480 1615256 5682392 +1614832 5682448 1612664 5685288 1613592 5686944 1615296 5682480 +1612664 5685288 1613536 5686904 1613592 5686944 1615296 5682480 +1614832 5682448 1612656 5685232 1612664 5685288 1615296 5682480 +1614832 5682448 1612640 5685184 1612656 5685232 1615296 5682480 +1612664 5685288 1613592 5686944 1615296 5682480 1612656 5685232 +1614832 5682448 1612656 5685232 1615296 5682480 1614880 5682424 +1613592 5686944 1613632 5687000 1615296 5682480 1612664 5685288 +1612656 5685232 1615248 5682520 1614832 5682448 1612640 5685184 +1615296 5682480 1615248 5682520 1612656 5685232 1612664 5685288 +1615296 5682480 1614832 5682448 1615248 5682520 1612664 5685288 +1615248 5682520 1614832 5682448 1612656 5685232 1612664 5685288 +1615296 5682480 1615248 5682520 1612664 5685288 1613592 5686944 +1615296 5682480 1614832 5682448 1615248 5682520 1613592 5686944 +1612664 5685288 1613536 5686904 1613592 5686944 1615248 5682520 +1615248 5682520 1612656 5685232 1612664 5685288 1613592 5686944 +1614832 5682448 1615248 5682520 1615296 5682480 1614880 5682424 +1615248 5682520 1613592 5686944 1615296 5682480 1614880 5682424 +1614832 5682448 1612656 5685232 1615248 5682520 1614880 5682424 +1615296 5682480 1614960 5682392 1614880 5682424 1615248 5682520 +1615296 5682480 1614960 5682392 1615248 5682520 1613592 5686944 +1615296 5682480 1615040 5682368 1614960 5682392 1615248 5682520 +1615296 5682480 1615040 5682368 1615248 5682520 1613592 5686944 +1615296 5682480 1615160 5682368 1615040 5682368 1615248 5682520 +1615296 5682480 1615160 5682368 1615248 5682520 1613592 5686944 +1615040 5682368 1614960 5682392 1615248 5682520 1615160 5682368 +1615160 5682368 1615128 5682360 1615040 5682368 1615248 5682520 +1615040 5682368 1614960 5682392 1615248 5682520 1615128 5682360 +1615160 5682368 1615128 5682360 1615248 5682520 1615296 5682480 +1614960 5682392 1614880 5682424 1615248 5682520 1615040 5682368 +1615296 5682480 1615256 5682392 1615160 5682368 1615248 5682520 +1615296 5682480 1615256 5682392 1615248 5682520 1613592 5686944 +1615160 5682368 1615128 5682360 1615248 5682520 1615256 5682392 +1615296 5682480 1615296 5682424 1615256 5682392 1615248 5682520 +1614880 5682424 1614832 5682448 1615248 5682520 1614960 5682392 +1615296 5682480 1615248 5682520 1613592 5686944 1613632 5687000 +1615296 5682480 1615256 5682392 1615248 5682520 1613632 5687000 +1615296 5682480 1615248 5682520 1613632 5687000 1615352 5689088 +1615296 5682480 1615248 5682520 1615352 5689088 1615392 5689120 +1615296 5682480 1615256 5682392 1615248 5682520 1615352 5689088 +1613592 5686944 1613600 5686968 1613632 5687000 1615248 5682520 +1613632 5687000 1615264 5689048 1615352 5689088 1615248 5682520 +1615248 5682520 1612664 5685288 1613592 5686944 1613632 5687000 +1615248 5682520 1613592 5686944 1613632 5687000 1615352 5689088 +1615248 5682520 1615216 5682544 1612656 5685232 1612664 5685288 +1615248 5682520 1614832 5682448 1615216 5682544 1612664 5685288 +1614832 5682448 1615216 5682544 1615248 5682520 1614880 5682424 +1615216 5682544 1612664 5685288 1615248 5682520 1614880 5682424 +1615216 5682544 1614832 5682448 1612656 5685232 1612664 5685288 +1614832 5682448 1612656 5685232 1615216 5682544 1614880 5682424 +1612656 5685232 1615216 5682544 1614832 5682448 1612640 5685184 +1612656 5685232 1612664 5685288 1615216 5682544 1612640 5685184 +1615216 5682544 1614880 5682424 1614832 5682448 1612640 5685184 +1614832 5682448 1612616 5685152 1612640 5685184 1615216 5682544 +1615248 5682520 1615216 5682544 1612664 5685288 1613592 5686944 +1615216 5682544 1612656 5685232 1612664 5685288 1613592 5686944 +1615248 5682520 1614880 5682424 1615216 5682544 1613592 5686944 +1612664 5685288 1613536 5686904 1613592 5686944 1615216 5682544 +1615248 5682520 1615216 5682544 1613592 5686944 1613632 5687000 +1615248 5682520 1614880 5682424 1615216 5682544 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1615216 5682544 +1615216 5682544 1612664 5685288 1613592 5686944 1613632 5687000 +1615248 5682520 1614960 5682392 1614880 5682424 1615216 5682544 +1615248 5682520 1614960 5682392 1615216 5682544 1613632 5687000 +1614880 5682424 1614832 5682448 1615216 5682544 1614960 5682392 +1615248 5682520 1615040 5682368 1614960 5682392 1615216 5682544 +1615248 5682520 1615040 5682368 1615216 5682544 1613632 5687000 +1615248 5682520 1615128 5682360 1615040 5682368 1615216 5682544 +1615248 5682520 1615128 5682360 1615216 5682544 1613632 5687000 +1615248 5682520 1615160 5682368 1615128 5682360 1615216 5682544 +1615248 5682520 1615160 5682368 1615216 5682544 1613632 5687000 +1615128 5682360 1615040 5682368 1615216 5682544 1615160 5682368 +1615248 5682520 1615256 5682392 1615160 5682368 1615216 5682544 +1615040 5682368 1614960 5682392 1615216 5682544 1615128 5682360 +1614960 5682392 1614880 5682424 1615216 5682544 1615040 5682368 +1615248 5682520 1615216 5682544 1613632 5687000 1615352 5689088 +1615248 5682520 1615216 5682544 1615352 5689088 1615296 5682480 +1615248 5682520 1615160 5682368 1615216 5682544 1615352 5689088 +1613632 5687000 1615264 5689048 1615352 5689088 1615216 5682544 +1615216 5682544 1613592 5686944 1613632 5687000 1615352 5689088 +1614832 5682448 1615168 5682552 1615216 5682544 1614880 5682424 +1615216 5682544 1614960 5682392 1614880 5682424 1615168 5682552 +1615168 5682552 1612640 5685184 1615216 5682544 1614960 5682392 +1614880 5682424 1614832 5682448 1615168 5682552 1614960 5682392 +1614832 5682448 1612640 5685184 1615168 5682552 1614880 5682424 +1612640 5685184 1615168 5682552 1614832 5682448 1612616 5685152 +1615216 5682544 1615168 5682552 1612640 5685184 1612656 5685232 +1615216 5682544 1615168 5682552 1612656 5685232 1612664 5685288 +1615216 5682544 1615168 5682552 1612664 5685288 1613592 5686944 +1615168 5682552 1612656 5685232 1612664 5685288 1613592 5686944 +1615216 5682544 1614960 5682392 1615168 5682552 1613592 5686944 +1615168 5682552 1614832 5682448 1612640 5685184 1612656 5685232 +1615168 5682552 1612640 5685184 1612656 5685232 1612664 5685288 +1612664 5685288 1613536 5686904 1613592 5686944 1615168 5682552 +1615216 5682544 1615168 5682552 1613592 5686944 1613632 5687000 +1615216 5682544 1615040 5682368 1614960 5682392 1615168 5682552 +1614960 5682392 1614880 5682424 1615168 5682552 1615040 5682368 +1615216 5682544 1615040 5682368 1615168 5682552 1613592 5686944 +1615216 5682544 1615128 5682360 1615040 5682368 1615168 5682552 +1615216 5682544 1615128 5682360 1615168 5682552 1613592 5686944 +1615216 5682544 1615160 5682368 1615128 5682360 1615168 5682552 +1615216 5682544 1615160 5682368 1615168 5682552 1613592 5686944 +1615216 5682544 1615248 5682520 1615160 5682368 1615168 5682552 +1615128 5682360 1615040 5682368 1615168 5682552 1615160 5682368 +1615040 5682368 1614960 5682392 1615168 5682552 1615128 5682360 +1615168 5682552 1615080 5682560 1612640 5685184 1612656 5685232 +1615168 5682552 1614832 5682448 1615080 5682560 1612656 5685232 +1614832 5682448 1615080 5682560 1615168 5682552 1614880 5682424 +1615168 5682552 1614960 5682392 1614880 5682424 1615080 5682560 +1615168 5682552 1615040 5682368 1614960 5682392 1615080 5682560 +1614960 5682392 1614880 5682424 1615080 5682560 1615040 5682368 +1615080 5682560 1612656 5685232 1615168 5682552 1615040 5682368 +1614880 5682424 1614832 5682448 1615080 5682560 1614960 5682392 +1615080 5682560 1614832 5682448 1612640 5685184 1612656 5685232 +1614832 5682448 1612640 5685184 1615080 5682560 1614880 5682424 +1612640 5685184 1615080 5682560 1614832 5682448 1612616 5685152 +1615168 5682552 1615080 5682560 1612656 5685232 1612664 5685288 +1615168 5682552 1615080 5682560 1612664 5685288 1613592 5686944 +1615168 5682552 1615080 5682560 1613592 5686944 1615216 5682544 +1615080 5682560 1612640 5685184 1612656 5685232 1612664 5685288 +1615168 5682552 1615040 5682368 1615080 5682560 1613592 5686944 +1615080 5682560 1612656 5685232 1612664 5685288 1613592 5686944 +1612664 5685288 1613536 5686904 1613592 5686944 1615080 5682560 +1615168 5682552 1615128 5682360 1615040 5682368 1615080 5682560 +1615040 5682368 1614960 5682392 1615080 5682560 1615128 5682360 +1615168 5682552 1615128 5682360 1615080 5682560 1613592 5686944 +1615168 5682552 1615160 5682368 1615128 5682360 1615080 5682560 +1615080 5682560 1614992 5682552 1612640 5685184 1612656 5685232 +1615080 5682560 1614992 5682552 1612656 5685232 1612664 5685288 +1615080 5682560 1614832 5682448 1614992 5682552 1612656 5685232 +1614832 5682448 1614992 5682552 1615080 5682560 1614880 5682424 +1615080 5682560 1614960 5682392 1614880 5682424 1614992 5682552 +1615080 5682560 1615040 5682368 1614960 5682392 1614992 5682552 +1615080 5682560 1615128 5682360 1615040 5682368 1614992 5682552 +1614960 5682392 1614880 5682424 1614992 5682552 1615040 5682368 +1614992 5682552 1612656 5685232 1615080 5682560 1615040 5682368 +1614880 5682424 1614832 5682448 1614992 5682552 1614960 5682392 +1614992 5682552 1614832 5682448 1612640 5685184 1612656 5685232 +1614832 5682448 1612640 5685184 1614992 5682552 1614880 5682424 +1612640 5685184 1614992 5682552 1614832 5682448 1612616 5685152 +1614832 5682448 1612576 5685128 1612616 5685152 1614992 5682552 +1612640 5685184 1612656 5685232 1614992 5682552 1612616 5685152 +1614992 5682552 1614880 5682424 1614832 5682448 1612616 5685152 +1612616 5685152 1614944 5682560 1614832 5682448 1612576 5685128 +1614832 5682448 1614944 5682560 1614992 5682552 1614880 5682424 +1614992 5682552 1614960 5682392 1614880 5682424 1614944 5682560 +1614992 5682552 1615040 5682368 1614960 5682392 1614944 5682560 +1614944 5682560 1612616 5685152 1614992 5682552 1614960 5682392 +1614880 5682424 1614832 5682448 1614944 5682560 1614960 5682392 +1614832 5682448 1612616 5685152 1614944 5682560 1614880 5682424 +1614992 5682552 1614944 5682560 1612616 5685152 1612640 5685184 +1614992 5682552 1614944 5682560 1612640 5685184 1612656 5685232 +1614992 5682552 1614944 5682560 1612656 5685232 1615080 5682560 +1612656 5685232 1612664 5685288 1615080 5682560 1614944 5682560 +1615080 5682560 1614992 5682552 1614944 5682560 1612664 5685288 +1614944 5682560 1612640 5685184 1612656 5685232 1612664 5685288 +1614992 5682552 1614960 5682392 1614944 5682560 1615080 5682560 +1614944 5682560 1614832 5682448 1612616 5685152 1612640 5685184 +1614944 5682560 1612616 5685152 1612640 5685184 1612656 5685232 +1612664 5685288 1613592 5686944 1615080 5682560 1614944 5682560 +1612616 5685152 1614872 5682536 1614832 5682448 1612576 5685128 +1614944 5682560 1614872 5682536 1612616 5685152 1612640 5685184 +1614944 5682560 1614832 5682448 1614872 5682536 1612640 5685184 +1614832 5682448 1614872 5682536 1614944 5682560 1614880 5682424 +1614944 5682560 1614960 5682392 1614880 5682424 1614872 5682536 +1614872 5682536 1612640 5685184 1614944 5682560 1614880 5682424 +1612616 5685152 1612640 5685184 1614872 5682536 1612576 5685128 +1614872 5682536 1614880 5682424 1614832 5682448 1612576 5685128 +1614944 5682560 1614872 5682536 1612640 5685184 1612656 5685232 +1614832 5682448 1612496 5685080 1612576 5685128 1614872 5682536 +1612576 5685128 1612616 5685152 1614872 5682536 1612496 5685080 +1614832 5682448 1612496 5685080 1614872 5682536 1614880 5682424 +1614832 5682448 1611136 5683904 1612496 5685080 1614872 5682536 +1614832 5682448 1614824 5682496 1614872 5682536 1614880 5682424 +1612496 5685080 1614824 5682496 1614832 5682448 1611136 5683904 +1612496 5685080 1614872 5682536 1614824 5682496 1611136 5683904 +1614824 5682496 1614872 5682536 1614832 5682448 1611136 5683904 +1614832 5682448 1611080 5683832 1611136 5683904 1614824 5682496 +1614832 5682448 1610992 5683744 1611080 5683832 1614824 5682496 +1614832 5682448 1610912 5683672 1610992 5683744 1614824 5682496 +1614832 5682448 1610992 5683744 1614824 5682496 1614872 5682536 +1610992 5683744 1611032 5683792 1611080 5683832 1614824 5682496 +1611136 5683904 1612496 5685080 1614824 5682496 1611080 5683832 +1611080 5683832 1611136 5683904 1614824 5682496 1610992 5683744 +1614872 5682536 1614824 5682496 1612496 5685080 1612576 5685128 +1614872 5682536 1614824 5682496 1612576 5685128 1612616 5685152 +1614872 5682536 1614824 5682496 1612616 5685152 1612640 5685184 +1614872 5682536 1614832 5682448 1614824 5682496 1612616 5685152 +1614824 5682496 1611136 5683904 1612496 5685080 1612576 5685128 +1614824 5682496 1612496 5685080 1612576 5685128 1612616 5685152 +1612496 5685080 1614824 5682496 1611136 5683904 1612408 5685072 +1624104 5692408 1629904 5693000 1663880 5646248 1663776 5646144 +1629904 5693000 1628120 5696720 1663880 5646248 1663776 5646144 +1624104 5692408 1628120 5696720 1629904 5693000 1663776 5646144 +1624104 5692408 1629904 5693000 1663776 5646144 1615296 5682424 +1663776 5646144 1657088 5639464 1615296 5682424 1629904 5693000 +1624104 5692408 1629904 5693000 1615296 5682424 1615296 5682480 +1624104 5692408 1628120 5696720 1629904 5693000 1615296 5682424 +1629904 5693000 1663880 5646248 1663776 5646144 1615296 5682424 +1628120 5696720 1629904 5693000 1624104 5692408 1624120 5692440 +1628120 5696720 1663880 5646248 1629904 5693000 1624120 5692440 +1629904 5693000 1615296 5682424 1624104 5692408 1624120 5692440 +1628120 5696720 1629904 5693000 1624120 5692440 1626864 5696192 +1628120 5696720 1663880 5646248 1629904 5693000 1626864 5696192 +1624120 5692440 1626688 5696104 1626864 5696192 1629904 5693000 +1624120 5692440 1624280 5693272 1626688 5696104 1629904 5693000 +1624120 5692440 1624120 5692536 1624280 5693272 1629904 5693000 +1626688 5696104 1626864 5696192 1629904 5693000 1624280 5693272 +1626864 5696192 1628120 5696720 1629904 5693000 1626688 5696104 +1629904 5693000 1624104 5692408 1624120 5692440 1624280 5693272 +1624280 5693272 1626600 5696072 1626688 5696104 1629904 5693000 +1624280 5693272 1626552 5696056 1626600 5696072 1629904 5693000 +1624280 5693272 1626552 5696056 1629904 5693000 1624120 5692440 +1626688 5696104 1626864 5696192 1629904 5693000 1626600 5696072 +1626600 5696072 1626688 5696104 1629904 5693000 1626552 5696056 +1628120 5696720 1629904 5693000 1626864 5696192 1628088 5696712 +1628120 5696720 1663880 5646248 1629904 5693000 1628088 5696712 +1629904 5693000 1626688 5696104 1626864 5696192 1628088 5696712 +1626864 5696192 1628048 5696704 1628088 5696712 1629904 5693000 +1626864 5696192 1628048 5696704 1629904 5693000 1626688 5696104 +1628088 5696712 1628120 5696720 1629904 5693000 1628048 5696704 +1626688 5696104 1626776 5696152 1626864 5696192 1629904 5693000 +1663880 5646248 1629904 5693000 1628120 5696720 1630512 5699152 +1663880 5646248 1663776 5646144 1629904 5693000 1630512 5699152 +1629904 5693000 1628088 5696712 1628120 5696720 1630512 5699152 +1663880 5646248 1629904 5693000 1630512 5699152 1663944 5646256 +1663880 5646248 1663776 5646144 1629904 5693000 1663944 5646256 +1630512 5699152 1630528 5699184 1663944 5646256 1629904 5693000 +1663944 5646256 1663880 5646248 1629904 5693000 1630528 5699184 +1630528 5699184 1630536 5699272 1663944 5646256 1629904 5693000 +1629904 5693000 1628120 5696720 1630512 5699152 1630528 5699184 +1626864 5696192 1626896 5696216 1628048 5696704 1629904 5693000 +1626864 5696192 1626896 5696216 1629904 5693000 1626688 5696104 +1626896 5696216 1626984 5696288 1628048 5696704 1629904 5693000 +1628048 5696704 1628088 5696712 1629904 5693000 1626896 5696216 +1624280 5693272 1626520 5696056 1626552 5696056 1629904 5693000 +1628120 5696720 1628152 5696760 1630512 5699152 1629904 5693000 +1628120 5696720 1628152 5696760 1629904 5693000 1628088 5696712 +1630512 5699152 1630528 5699184 1629904 5693000 1628152 5696760 +1628152 5696760 1629976 5698712 1630512 5699152 1629904 5693000 +1630512 5699152 1630528 5699184 1629904 5693000 1629976 5698712 +1628152 5696760 1629928 5698672 1629976 5698712 1629904 5693000 +1628152 5696760 1628184 5696808 1629928 5698672 1629904 5693000 +1628184 5696808 1629856 5698632 1629928 5698672 1629904 5693000 +1629856 5698632 1629888 5698656 1629928 5698672 1629904 5693000 +1628184 5696808 1628224 5696896 1629856 5698632 1629904 5693000 +1628224 5696896 1628304 5697064 1629856 5698632 1629904 5693000 +1628304 5697064 1628376 5697224 1629856 5698632 1629904 5693000 +1628224 5696896 1628272 5697000 1628304 5697064 1629904 5693000 +1628304 5697064 1629856 5698632 1629904 5693000 1628272 5697000 +1628224 5696896 1628272 5697000 1629904 5693000 1628184 5696808 +1629856 5698632 1629928 5698672 1629904 5693000 1628304 5697064 +1628184 5696808 1628224 5696896 1629904 5693000 1628152 5696760 +1629928 5698672 1629976 5698712 1629904 5693000 1629856 5698632 +1629976 5698712 1630016 5698752 1630512 5699152 1629904 5693000 +1629976 5698712 1630512 5699152 1629904 5693000 1629928 5698672 +1628152 5696760 1628184 5696808 1629904 5693000 1628120 5696720 +1615296 5682424 1629856 5692928 1663776 5646144 1657088 5639464 +1629904 5693000 1629856 5692928 1615296 5682424 1624104 5692408 +1615296 5682424 1615296 5682480 1624104 5692408 1629856 5692928 +1629904 5693000 1663776 5646144 1629856 5692928 1624104 5692408 +1629904 5693000 1629856 5692928 1624104 5692408 1624120 5692440 +1629904 5693000 1663776 5646144 1629856 5692928 1624120 5692440 +1629856 5692928 1663776 5646144 1615296 5682424 1624104 5692408 +1629856 5692928 1615296 5682424 1624104 5692408 1624120 5692440 +1663776 5646144 1629856 5692928 1629904 5693000 1663880 5646248 +1629904 5693000 1663944 5646256 1663880 5646248 1629856 5692928 +1629856 5692928 1624120 5692440 1629904 5693000 1663880 5646248 +1663776 5646144 1615296 5682424 1629856 5692928 1663880 5646248 +1629904 5693000 1629856 5692928 1624120 5692440 1624280 5693272 +1629904 5693000 1663880 5646248 1629856 5692928 1624280 5693272 +1629856 5692928 1624104 5692408 1624120 5692440 1624280 5693272 +1624120 5692440 1624120 5692536 1624280 5693272 1629856 5692928 +1629904 5693000 1629856 5692928 1624280 5693272 1626552 5696056 +1629904 5693000 1629856 5692928 1626552 5696056 1626600 5696072 +1629904 5693000 1663880 5646248 1629856 5692928 1626600 5696072 +1629856 5692928 1624280 5693272 1626552 5696056 1626600 5696072 +1629856 5692928 1624120 5692440 1624280 5693272 1626552 5696056 +1629904 5693000 1629856 5692928 1626600 5696072 1626688 5696104 +1629856 5692928 1626552 5696056 1626600 5696072 1626688 5696104 +1629904 5693000 1663880 5646248 1629856 5692928 1626688 5696104 +1629904 5693000 1629856 5692928 1626688 5696104 1626864 5696192 +1629904 5693000 1663880 5646248 1629856 5692928 1626864 5696192 +1629904 5693000 1629856 5692928 1626864 5696192 1626896 5696216 +1629856 5692928 1626600 5696072 1626688 5696104 1626864 5696192 +1626688 5696104 1626776 5696152 1626864 5696192 1629856 5692928 +1624280 5693272 1626520 5696056 1626552 5696056 1629856 5692928 +1615296 5682424 1629816 5692792 1663776 5646144 1657088 5639464 +1629856 5692928 1629816 5692792 1615296 5682424 1624104 5692408 +1615296 5682424 1615296 5682480 1624104 5692408 1629816 5692792 +1629856 5692928 1663776 5646144 1629816 5692792 1624104 5692408 +1663776 5646144 1629816 5692792 1629856 5692928 1663880 5646248 +1629816 5692792 1624104 5692408 1629856 5692928 1663880 5646248 +1629816 5692792 1663776 5646144 1615296 5682424 1624104 5692408 +1663776 5646144 1615296 5682424 1629816 5692792 1663880 5646248 +1629856 5692928 1629816 5692792 1624104 5692408 1624120 5692440 +1629856 5692928 1629816 5692792 1624120 5692440 1624280 5693272 +1629816 5692792 1615296 5682424 1624104 5692408 1624120 5692440 +1629856 5692928 1663880 5646248 1629816 5692792 1624280 5693272 +1624120 5692440 1624120 5692536 1624280 5693272 1629816 5692792 +1629816 5692792 1624104 5692408 1624120 5692440 1624280 5693272 +1629856 5692928 1629904 5693000 1663880 5646248 1629816 5692792 +1629904 5693000 1663944 5646256 1663880 5646248 1629816 5692792 +1629856 5692928 1629904 5693000 1629816 5692792 1624280 5693272 +1663880 5646248 1663776 5646144 1629816 5692792 1663944 5646256 +1629904 5693000 1663944 5646256 1629816 5692792 1629856 5692928 +1629856 5692928 1629816 5692792 1624280 5693272 1626552 5696056 +1629816 5692792 1624120 5692440 1624280 5693272 1626552 5696056 +1629856 5692928 1629904 5693000 1629816 5692792 1626552 5696056 +1629856 5692928 1629816 5692792 1626552 5696056 1626600 5696072 +1629904 5693000 1630528 5699184 1663944 5646256 1629816 5692792 +1624280 5693272 1626520 5696056 1626552 5696056 1629816 5692792 +1615296 5682424 1629840 5692680 1663776 5646144 1657088 5639464 +1615296 5682424 1629840 5692680 1657088 5639464 1615256 5682392 +1629816 5692792 1629840 5692680 1615296 5682424 1624104 5692408 +1615296 5682424 1615296 5682480 1624104 5692408 1629840 5692680 +1629816 5692792 1629840 5692680 1624104 5692408 1624120 5692440 +1629840 5692680 1615296 5682424 1624104 5692408 1624120 5692440 +1629816 5692792 1663776 5646144 1629840 5692680 1624120 5692440 +1663776 5646144 1629840 5692680 1629816 5692792 1663880 5646248 +1629816 5692792 1663944 5646256 1663880 5646248 1629840 5692680 +1629816 5692792 1629904 5693000 1663944 5646256 1629840 5692680 +1663944 5646256 1663880 5646248 1629840 5692680 1629904 5693000 +1629840 5692680 1624120 5692440 1629816 5692792 1629904 5693000 +1663880 5646248 1663776 5646144 1629840 5692680 1663944 5646256 +1615296 5682424 1624104 5692408 1629840 5692680 1657088 5639464 +1629840 5692680 1663880 5646248 1663776 5646144 1657088 5639464 +1629816 5692792 1629840 5692680 1624120 5692440 1624280 5693272 +1629816 5692792 1629856 5692928 1629904 5693000 1629840 5692680 +1629904 5693000 1663944 5646256 1629840 5692680 1629856 5692928 +1629816 5692792 1629856 5692928 1629840 5692680 1624120 5692440 +1629904 5693000 1630528 5699184 1663944 5646256 1629840 5692680 +1663776 5646144 1663688 5645984 1657088 5639464 1629840 5692680 +1629840 5692680 1629944 5692528 1657088 5639464 1615296 5682424 +1657088 5639464 1615256 5682392 1615296 5682424 1629944 5692528 +1629840 5692680 1629944 5692528 1615296 5682424 1624104 5692408 +1629944 5692528 1657088 5639464 1615296 5682424 1624104 5692408 +1615296 5682424 1615296 5682480 1624104 5692408 1629944 5692528 +1629840 5692680 1629944 5692528 1624104 5692408 1624120 5692440 +1629840 5692680 1663776 5646144 1629944 5692528 1624104 5692408 +1663776 5646144 1629944 5692528 1629840 5692680 1663880 5646248 +1629840 5692680 1663944 5646256 1663880 5646248 1629944 5692528 +1629840 5692680 1629904 5693000 1663944 5646256 1629944 5692528 +1629840 5692680 1629856 5692928 1629904 5693000 1629944 5692528 +1663944 5646256 1663880 5646248 1629944 5692528 1629904 5693000 +1629944 5692528 1624104 5692408 1629840 5692680 1629904 5693000 +1663880 5646248 1663776 5646144 1629944 5692528 1663944 5646256 +1629944 5692528 1663776 5646144 1657088 5639464 1615296 5682424 +1663776 5646144 1657088 5639464 1629944 5692528 1663880 5646248 +1629904 5693000 1630528 5699184 1663944 5646256 1629944 5692528 +1629904 5693000 1630528 5699184 1629944 5692528 1629840 5692680 +1663944 5646256 1663880 5646248 1629944 5692528 1630528 5699184 +1629904 5693000 1630512 5699152 1630528 5699184 1629944 5692528 +1630528 5699184 1630536 5699272 1663944 5646256 1629944 5692528 +1657088 5639464 1629944 5692528 1663776 5646144 1663688 5645984 +1629944 5692528 1630136 5692352 1663944 5646256 1663880 5646248 +1629944 5692528 1630136 5692352 1663880 5646248 1663776 5646144 +1630136 5692352 1663944 5646256 1663880 5646248 1663776 5646144 +1629944 5692528 1630528 5699184 1630136 5692352 1663776 5646144 +1629944 5692528 1630136 5692352 1663776 5646144 1657088 5639464 +1630136 5692352 1663880 5646248 1663776 5646144 1657088 5639464 +1629944 5692528 1630136 5692352 1657088 5639464 1615296 5682424 +1657088 5639464 1615256 5682392 1615296 5682424 1630136 5692352 +1629944 5692528 1630136 5692352 1615296 5682424 1624104 5692408 +1615296 5682424 1615296 5682480 1624104 5692408 1630136 5692352 +1629944 5692528 1630136 5692352 1624104 5692408 1629840 5692680 +1630136 5692352 1657088 5639464 1615296 5682424 1624104 5692408 +1629944 5692528 1630528 5699184 1630136 5692352 1624104 5692408 +1630136 5692352 1663776 5646144 1657088 5639464 1615296 5682424 +1630136 5692352 1630528 5699184 1663944 5646256 1663880 5646248 +1630528 5699184 1630136 5692352 1629944 5692528 1629904 5693000 +1629944 5692528 1629840 5692680 1629904 5693000 1630136 5692352 +1630136 5692352 1624104 5692408 1629944 5692528 1629904 5693000 +1630528 5699184 1663944 5646256 1630136 5692352 1629904 5693000 +1630528 5699184 1630136 5692352 1629904 5693000 1630512 5699152 +1630528 5699184 1663944 5646256 1630136 5692352 1630512 5699152 +1630136 5692352 1629944 5692528 1629904 5693000 1630512 5699152 +1663944 5646256 1630136 5692352 1630528 5699184 1630536 5699272 +1663776 5646144 1663688 5645984 1657088 5639464 1630136 5692352 +1629904 5693000 1629976 5698712 1630512 5699152 1630136 5692352 +1630136 5692352 1630232 5692312 1663944 5646256 1663880 5646248 +1630136 5692352 1630232 5692312 1663880 5646248 1663776 5646144 +1630136 5692352 1630232 5692312 1663776 5646144 1657088 5639464 +1630232 5692312 1663880 5646248 1663776 5646144 1657088 5639464 +1630136 5692352 1630232 5692312 1657088 5639464 1615296 5682424 +1657088 5639464 1615256 5682392 1615296 5682424 1630232 5692312 +1630232 5692312 1663776 5646144 1657088 5639464 1615296 5682424 +1630136 5692352 1630232 5692312 1615296 5682424 1624104 5692408 +1630136 5692352 1630232 5692312 1624104 5692408 1629944 5692528 +1615296 5682424 1615296 5682480 1624104 5692408 1630232 5692312 +1630232 5692312 1657088 5639464 1615296 5682424 1624104 5692408 +1630232 5692312 1663944 5646256 1663880 5646248 1663776 5646144 +1630136 5692352 1630528 5699184 1630232 5692312 1624104 5692408 +1630528 5699184 1630232 5692312 1630136 5692352 1630512 5699152 +1630232 5692312 1624104 5692408 1630136 5692352 1630512 5699152 +1630232 5692312 1630528 5699184 1663944 5646256 1663880 5646248 +1630528 5699184 1663944 5646256 1630232 5692312 1630512 5699152 +1630136 5692352 1629904 5693000 1630512 5699152 1630232 5692312 +1630136 5692352 1629904 5693000 1630232 5692312 1624104 5692408 +1630512 5699152 1630528 5699184 1630232 5692312 1629904 5693000 +1630136 5692352 1629944 5692528 1629904 5693000 1630232 5692312 +1663944 5646256 1630232 5692312 1630528 5699184 1630536 5699272 +1663776 5646144 1663688 5645984 1657088 5639464 1630232 5692312 +1629904 5693000 1629976 5698712 1630512 5699152 1630232 5692312 +1630232 5692312 1630448 5692312 1663944 5646256 1663880 5646248 +1630232 5692312 1630448 5692312 1663880 5646248 1663776 5646144 +1630232 5692312 1630448 5692312 1663776 5646144 1657088 5639464 +1630232 5692312 1630448 5692312 1657088 5639464 1615296 5682424 +1657088 5639464 1615256 5682392 1615296 5682424 1630448 5692312 +1630448 5692312 1663776 5646144 1657088 5639464 1615296 5682424 +1630232 5692312 1630448 5692312 1615296 5682424 1624104 5692408 +1630448 5692312 1663880 5646248 1663776 5646144 1657088 5639464 +1630448 5692312 1663944 5646256 1663880 5646248 1663776 5646144 +1630232 5692312 1630528 5699184 1630448 5692312 1615296 5682424 +1630528 5699184 1630448 5692312 1630232 5692312 1630512 5699152 +1630232 5692312 1629904 5693000 1630512 5699152 1630448 5692312 +1630448 5692312 1615296 5682424 1630232 5692312 1629904 5693000 +1630512 5699152 1630528 5699184 1630448 5692312 1629904 5693000 +1630448 5692312 1630528 5699184 1663944 5646256 1663880 5646248 +1630528 5699184 1663944 5646256 1630448 5692312 1630512 5699152 +1630232 5692312 1630136 5692352 1629904 5693000 1630448 5692312 +1629904 5693000 1630512 5699152 1630448 5692312 1630136 5692352 +1630232 5692312 1630136 5692352 1630448 5692312 1615296 5682424 +1630136 5692352 1629944 5692528 1629904 5693000 1630448 5692312 +1629944 5692528 1629840 5692680 1629904 5693000 1630448 5692312 +1629904 5693000 1630512 5699152 1630448 5692312 1629944 5692528 +1630136 5692352 1629944 5692528 1630448 5692312 1630232 5692312 +1663944 5646256 1630448 5692312 1630528 5699184 1630536 5699272 +1663944 5646256 1663880 5646248 1630448 5692312 1630536 5699272 +1630448 5692312 1630512 5699152 1630528 5699184 1630536 5699272 +1663944 5646256 1630448 5692312 1630536 5699272 1743800 5687320 +1663776 5646144 1663688 5645984 1657088 5639464 1630448 5692312 +1629904 5693000 1629976 5698712 1630512 5699152 1630448 5692312 +1630448 5692312 1630608 5692360 1663944 5646256 1663880 5646248 +1630448 5692312 1630608 5692360 1663880 5646248 1663776 5646144 +1630448 5692312 1630608 5692360 1663776 5646144 1657088 5639464 +1630448 5692312 1630608 5692360 1657088 5639464 1615296 5682424 +1630608 5692360 1663880 5646248 1663776 5646144 1657088 5639464 +1630608 5692360 1663944 5646256 1663880 5646248 1663776 5646144 +1630448 5692312 1630536 5699272 1630608 5692360 1657088 5639464 +1630608 5692360 1630536 5699272 1663944 5646256 1663880 5646248 +1630536 5699272 1630608 5692360 1630448 5692312 1630528 5699184 +1630608 5692360 1657088 5639464 1630448 5692312 1630528 5699184 +1630448 5692312 1630512 5699152 1630528 5699184 1630608 5692360 +1630448 5692312 1629904 5693000 1630512 5699152 1630608 5692360 +1630448 5692312 1629944 5692528 1629904 5693000 1630608 5692360 +1630448 5692312 1629904 5693000 1630608 5692360 1657088 5639464 +1630512 5699152 1630528 5699184 1630608 5692360 1629904 5693000 +1630536 5699272 1663944 5646256 1630608 5692360 1630528 5699184 +1630528 5699184 1630536 5699272 1630608 5692360 1630512 5699152 +1663944 5646256 1630608 5692360 1630536 5699272 1743800 5687320 +1663776 5646144 1663688 5645984 1657088 5639464 1630608 5692360 +1629904 5693000 1629976 5698712 1630512 5699152 1630608 5692360 +1630608 5692360 1630704 5692448 1663944 5646256 1663880 5646248 +1630608 5692360 1630704 5692448 1663880 5646248 1663776 5646144 +1630608 5692360 1630536 5699272 1630704 5692448 1663880 5646248 +1630536 5699272 1630704 5692448 1630608 5692360 1630528 5699184 +1630704 5692448 1663880 5646248 1630608 5692360 1630528 5699184 +1630704 5692448 1630536 5699272 1663944 5646256 1663880 5646248 +1630536 5699272 1663944 5646256 1630704 5692448 1630528 5699184 +1630608 5692360 1630512 5699152 1630528 5699184 1630704 5692448 +1630608 5692360 1629904 5693000 1630512 5699152 1630704 5692448 +1630608 5692360 1630448 5692312 1629904 5693000 1630704 5692448 +1630448 5692312 1629944 5692528 1629904 5693000 1630704 5692448 +1629944 5692528 1629840 5692680 1629904 5693000 1630704 5692448 +1630448 5692312 1629944 5692528 1630704 5692448 1630608 5692360 +1629904 5693000 1630512 5699152 1630704 5692448 1629944 5692528 +1630608 5692360 1630448 5692312 1630704 5692448 1663880 5646248 +1630528 5699184 1630536 5699272 1630704 5692448 1630512 5699152 +1630448 5692312 1630136 5692352 1629944 5692528 1630704 5692448 +1630512 5699152 1630528 5699184 1630704 5692448 1629904 5693000 +1663944 5646256 1630704 5692448 1630536 5699272 1743800 5687320 +1629904 5693000 1629976 5698712 1630512 5699152 1630704 5692448 +1629904 5693000 1629976 5698712 1630704 5692448 1629944 5692528 +1630512 5699152 1630528 5699184 1630704 5692448 1629976 5698712 +1629976 5698712 1630016 5698752 1630512 5699152 1630704 5692448 +1629904 5693000 1629928 5698672 1629976 5698712 1630704 5692448 +1630704 5692448 1630800 5692640 1663944 5646256 1663880 5646248 +1630704 5692448 1630800 5692640 1663880 5646248 1630608 5692360 +1630704 5692448 1630536 5699272 1630800 5692640 1663880 5646248 +1630536 5699272 1630800 5692640 1630704 5692448 1630528 5699184 +1630704 5692448 1630512 5699152 1630528 5699184 1630800 5692640 +1630800 5692640 1663880 5646248 1630704 5692448 1630512 5699152 +1630528 5699184 1630536 5699272 1630800 5692640 1630512 5699152 +1630800 5692640 1630536 5699272 1663944 5646256 1663880 5646248 +1630536 5699272 1663944 5646256 1630800 5692640 1630528 5699184 +1630704 5692448 1629976 5698712 1630512 5699152 1630800 5692640 +1630512 5699152 1630528 5699184 1630800 5692640 1629976 5698712 +1630704 5692448 1629976 5698712 1630800 5692640 1663880 5646248 +1663944 5646256 1630800 5692640 1630536 5699272 1743800 5687320 +1630704 5692448 1629904 5693000 1629976 5698712 1630800 5692640 +1630704 5692448 1629944 5692528 1629904 5693000 1630800 5692640 +1629944 5692528 1629840 5692680 1629904 5693000 1630800 5692640 +1630704 5692448 1630448 5692312 1629944 5692528 1630800 5692640 +1630704 5692448 1630608 5692360 1630448 5692312 1630800 5692640 +1629944 5692528 1629904 5693000 1630800 5692640 1630448 5692312 +1630704 5692448 1630448 5692312 1630800 5692640 1663880 5646248 +1630448 5692312 1630136 5692352 1629944 5692528 1630800 5692640 +1630448 5692312 1630136 5692352 1630800 5692640 1630704 5692448 +1629944 5692528 1629904 5693000 1630800 5692640 1630136 5692352 +1630448 5692312 1630232 5692312 1630136 5692352 1630800 5692640 +1629976 5698712 1630512 5699152 1630800 5692640 1629904 5693000 +1629904 5693000 1629976 5698712 1630800 5692640 1629944 5692528 +1629976 5698712 1630016 5698752 1630512 5699152 1630800 5692640 +1629904 5693000 1629928 5698672 1629976 5698712 1630800 5692640 +1629976 5698712 1630512 5699152 1630800 5692640 1629928 5698672 +1629904 5693000 1629928 5698672 1630800 5692640 1629944 5692528 +1629904 5693000 1629856 5698632 1629928 5698672 1630800 5692640 +1630800 5692640 1630864 5692824 1663944 5646256 1663880 5646248 +1630536 5699272 1630864 5692824 1630800 5692640 1630528 5699184 +1630800 5692640 1630512 5699152 1630528 5699184 1630864 5692824 +1630800 5692640 1629976 5698712 1630512 5699152 1630864 5692824 +1630512 5699152 1630528 5699184 1630864 5692824 1629976 5698712 +1630864 5692824 1663944 5646256 1630800 5692640 1629976 5698712 +1630528 5699184 1630536 5699272 1630864 5692824 1630512 5699152 +1630536 5699272 1663944 5646256 1630864 5692824 1630528 5699184 +1630800 5692640 1629928 5698672 1629976 5698712 1630864 5692824 +1629976 5698712 1630512 5699152 1630864 5692824 1629928 5698672 +1630800 5692640 1629928 5698672 1630864 5692824 1663944 5646256 +1663944 5646256 1630864 5692824 1630536 5699272 1743800 5687320 +1663944 5646256 1630800 5692640 1630864 5692824 1743800 5687320 +1630864 5692824 1630528 5699184 1630536 5699272 1743800 5687320 +1663944 5646256 1630864 5692824 1743800 5687320 1664040 5646192 +1630536 5699272 1631912 5713400 1743800 5687320 1630864 5692824 +1629976 5698712 1630016 5698752 1630512 5699152 1630864 5692824 +1630800 5692640 1629904 5693000 1629928 5698672 1630864 5692824 +1630800 5692640 1629904 5693000 1630864 5692824 1663944 5646256 +1629928 5698672 1629976 5698712 1630864 5692824 1629904 5693000 +1630800 5692640 1629944 5692528 1629904 5693000 1630864 5692824 +1629904 5693000 1629856 5698632 1629928 5698672 1630864 5692824 +1629928 5698672 1629976 5698712 1630864 5692824 1629856 5698632 +1629856 5698632 1629888 5698656 1629928 5698672 1630864 5692824 +1629904 5693000 1628304 5697064 1629856 5698632 1630864 5692824 +1628304 5697064 1628376 5697224 1629856 5698632 1630864 5692824 +1629904 5693000 1628272 5697000 1628304 5697064 1630864 5692824 +1629856 5698632 1629928 5698672 1630864 5692824 1628304 5697064 +1629904 5693000 1628304 5697064 1630864 5692824 1630800 5692640 +1630536 5699272 1630864 5692928 1630864 5692824 1630528 5699184 +1630864 5692824 1630512 5699152 1630528 5699184 1630864 5692928 +1630864 5692824 1629976 5698712 1630512 5699152 1630864 5692928 +1630864 5692824 1629928 5698672 1629976 5698712 1630864 5692928 +1629976 5698712 1630512 5699152 1630864 5692928 1629928 5698672 +1630512 5699152 1630528 5699184 1630864 5692928 1629976 5698712 +1630864 5692928 1743800 5687320 1630864 5692824 1629928 5698672 +1630528 5699184 1630536 5699272 1630864 5692928 1630512 5699152 +1630536 5699272 1743800 5687320 1630864 5692928 1630528 5699184 +1630864 5692824 1629856 5698632 1629928 5698672 1630864 5692928 +1629928 5698672 1629976 5698712 1630864 5692928 1629856 5698632 +1630864 5692824 1629856 5698632 1630864 5692928 1743800 5687320 +1630864 5692824 1630864 5692928 1743800 5687320 1663944 5646256 +1630864 5692824 1630864 5692928 1663944 5646256 1630800 5692640 +1630864 5692824 1629856 5698632 1630864 5692928 1663944 5646256 +1630864 5692928 1630536 5699272 1743800 5687320 1663944 5646256 +1743800 5687320 1664040 5646192 1663944 5646256 1630864 5692928 +1743800 5687320 1630864 5692928 1630536 5699272 1631912 5713400 +1629856 5698632 1629888 5698656 1629928 5698672 1630864 5692928 +1630864 5692824 1628304 5697064 1629856 5698632 1630864 5692928 +1630864 5692824 1628304 5697064 1630864 5692928 1663944 5646256 +1629856 5698632 1629928 5698672 1630864 5692928 1628304 5697064 +1628304 5697064 1628376 5697224 1629856 5698632 1630864 5692928 +1630864 5692824 1629904 5693000 1628304 5697064 1630864 5692928 +1630864 5692824 1629904 5693000 1630864 5692928 1663944 5646256 +1629904 5693000 1628272 5697000 1628304 5697064 1630864 5692928 +1629904 5693000 1628224 5696896 1628272 5697000 1630864 5692928 +1628272 5697000 1628304 5697064 1630864 5692928 1628224 5696896 +1629904 5693000 1628184 5696808 1628224 5696896 1630864 5692928 +1628224 5696896 1628272 5697000 1630864 5692928 1628184 5696808 +1629904 5693000 1628184 5696808 1630864 5692928 1630864 5692824 +1629904 5693000 1628152 5696760 1628184 5696808 1630864 5692928 +1628304 5697064 1629856 5698632 1630864 5692928 1628272 5697000 +1629976 5698712 1630016 5698752 1630512 5699152 1630864 5692928 +1630864 5692824 1630800 5692640 1629904 5693000 1630864 5692928 +1630864 5692824 1630800 5692640 1630864 5692928 1663944 5646256 +1630800 5692640 1629944 5692528 1629904 5693000 1630864 5692928 +1629904 5693000 1628184 5696808 1630864 5692928 1630800 5692640 +1630864 5692928 1630848 5692976 1629856 5698632 1629928 5698672 +1630864 5692928 1630848 5692976 1629928 5698672 1629976 5698712 +1630864 5692928 1630848 5692976 1629976 5698712 1630512 5699152 +1630848 5692976 1629928 5698672 1629976 5698712 1630512 5699152 +1630864 5692928 1630848 5692976 1630512 5699152 1630528 5699184 +1630848 5692976 1629976 5698712 1630512 5699152 1630528 5699184 +1630864 5692928 1630848 5692976 1630528 5699184 1630536 5699272 +1630864 5692928 1628304 5697064 1630848 5692976 1630528 5699184 +1630848 5692976 1628304 5697064 1629856 5698632 1629928 5698672 +1630848 5692976 1629856 5698632 1629928 5698672 1629976 5698712 +1629856 5698632 1629888 5698656 1629928 5698672 1630848 5692976 +1629856 5698632 1630848 5692976 1628304 5697064 1628376 5697224 +1628304 5697064 1630848 5692976 1630864 5692928 1628272 5697000 +1630848 5692976 1630528 5699184 1630864 5692928 1628272 5697000 +1628304 5697064 1629856 5698632 1630848 5692976 1628272 5697000 +1630864 5692928 1628224 5696896 1628272 5697000 1630848 5692976 +1630864 5692928 1628224 5696896 1630848 5692976 1630528 5699184 +1630864 5692928 1628184 5696808 1628224 5696896 1630848 5692976 +1630864 5692928 1628184 5696808 1630848 5692976 1630528 5699184 +1628224 5696896 1628272 5697000 1630848 5692976 1628184 5696808 +1630864 5692928 1629904 5693000 1628184 5696808 1630848 5692976 +1630864 5692928 1629904 5693000 1630848 5692976 1630528 5699184 +1628184 5696808 1628224 5696896 1630848 5692976 1629904 5693000 +1630864 5692928 1630800 5692640 1629904 5693000 1630848 5692976 +1630864 5692928 1630800 5692640 1630848 5692976 1630528 5699184 +1630800 5692640 1629944 5692528 1629904 5693000 1630848 5692976 +1629904 5693000 1628184 5696808 1630848 5692976 1630800 5692640 +1629904 5693000 1628152 5696760 1628184 5696808 1630848 5692976 +1628272 5697000 1628304 5697064 1630848 5692976 1628224 5696896 +1629976 5698712 1630016 5698752 1630512 5699152 1630848 5692976 +1630864 5692928 1630864 5692824 1630800 5692640 1630848 5692976 +1630864 5692928 1630864 5692824 1630848 5692976 1630528 5699184 +1630800 5692640 1629904 5693000 1630848 5692976 1630864 5692824 +1630848 5692976 1630776 5693064 1628184 5696808 1628224 5696896 +1630848 5692976 1629904 5693000 1630776 5693064 1628224 5696896 +1630776 5693064 1629904 5693000 1628184 5696808 1628224 5696896 +1630848 5692976 1630776 5693064 1628224 5696896 1628272 5697000 +1630848 5692976 1629904 5693000 1630776 5693064 1628272 5697000 +1630776 5693064 1628184 5696808 1628224 5696896 1628272 5697000 +1629904 5693000 1630776 5693064 1630848 5692976 1630800 5692640 +1630776 5693064 1628272 5697000 1630848 5692976 1630800 5692640 +1629904 5693000 1628184 5696808 1630776 5693064 1630800 5692640 +1629904 5693000 1630776 5693064 1630800 5692640 1629944 5692528 +1630848 5692976 1630864 5692824 1630800 5692640 1630776 5693064 +1630848 5692976 1630864 5692824 1630776 5693064 1628272 5697000 +1630800 5692640 1629904 5693000 1630776 5693064 1630864 5692824 +1628184 5696808 1630776 5693064 1629904 5693000 1628152 5696760 +1628184 5696808 1628224 5696896 1630776 5693064 1628152 5696760 +1630776 5693064 1630800 5692640 1629904 5693000 1628152 5696760 +1630848 5692976 1630776 5693064 1628272 5697000 1628304 5697064 +1630848 5692976 1630864 5692824 1630776 5693064 1628304 5697064 +1630848 5692976 1630776 5693064 1628304 5697064 1629856 5698632 +1630848 5692976 1630776 5693064 1629856 5698632 1629928 5698672 +1630848 5692976 1630864 5692824 1630776 5693064 1629928 5698672 +1630776 5693064 1628304 5697064 1629856 5698632 1629928 5698672 +1630848 5692976 1630776 5693064 1629928 5698672 1629976 5698712 +1630848 5692976 1630776 5693064 1629976 5698712 1630512 5699152 +1630848 5692976 1630776 5693064 1630512 5699152 1630528 5699184 +1630776 5693064 1629856 5698632 1629928 5698672 1629976 5698712 +1630848 5692976 1630864 5692824 1630776 5693064 1630512 5699152 +1630776 5693064 1629928 5698672 1629976 5698712 1630512 5699152 +1629856 5698632 1629888 5698656 1629928 5698672 1630776 5693064 +1628304 5697064 1628376 5697224 1629856 5698632 1630776 5693064 +1629856 5698632 1629928 5698672 1630776 5693064 1628376 5697224 +1628376 5697224 1628464 5697392 1629856 5698632 1630776 5693064 +1628304 5697064 1628328 5697136 1628376 5697224 1630776 5693064 +1630776 5693064 1628224 5696896 1628272 5697000 1628304 5697064 +1630776 5693064 1628272 5697000 1628304 5697064 1628376 5697224 +1629976 5698712 1630016 5698752 1630512 5699152 1630776 5693064 +1630848 5692976 1630864 5692928 1630864 5692824 1630776 5693064 +1630848 5692976 1630864 5692928 1630776 5693064 1630512 5699152 +1630864 5692824 1630800 5692640 1630776 5693064 1630864 5692928 +1629904 5693000 1628120 5696720 1628152 5696760 1630776 5693064 +1629904 5693000 1630736 5693088 1630776 5693064 1630800 5692640 +1630736 5693088 1628152 5696760 1630776 5693064 1630800 5692640 +1629904 5693000 1628152 5696760 1630736 5693088 1630800 5692640 +1629904 5693000 1630736 5693088 1630800 5692640 1629944 5692528 +1630776 5693064 1630864 5692824 1630800 5692640 1630736 5693088 +1630776 5693064 1630864 5692824 1630736 5693088 1628152 5696760 +1630800 5692640 1629904 5693000 1630736 5693088 1630864 5692824 +1630776 5693064 1630864 5692928 1630864 5692824 1630736 5693088 +1630776 5693064 1630864 5692928 1630736 5693088 1628152 5696760 +1630864 5692824 1630800 5692640 1630736 5693088 1630864 5692928 +1630776 5693064 1630736 5693088 1628152 5696760 1628184 5696808 +1630776 5693064 1630736 5693088 1628184 5696808 1628224 5696896 +1630776 5693064 1630864 5692928 1630736 5693088 1628224 5696896 +1630736 5693088 1629904 5693000 1628152 5696760 1628184 5696808 +1630776 5693064 1630736 5693088 1628224 5696896 1628272 5697000 +1630736 5693088 1628184 5696808 1628224 5696896 1628272 5697000 +1630776 5693064 1630864 5692928 1630736 5693088 1628272 5697000 +1630776 5693064 1630736 5693088 1628272 5697000 1628304 5697064 +1630776 5693064 1630864 5692928 1630736 5693088 1628304 5697064 +1630736 5693088 1628224 5696896 1628272 5697000 1628304 5697064 +1630736 5693088 1628152 5696760 1628184 5696808 1628224 5696896 +1630776 5693064 1630736 5693088 1628304 5697064 1628376 5697224 +1630776 5693064 1630864 5692928 1630736 5693088 1628376 5697224 +1630776 5693064 1630736 5693088 1628376 5697224 1629856 5698632 +1630776 5693064 1630736 5693088 1629856 5698632 1629928 5698672 +1630776 5693064 1630736 5693088 1629928 5698672 1629976 5698712 +1630736 5693088 1629856 5698632 1629928 5698672 1629976 5698712 +1630776 5693064 1630864 5692928 1630736 5693088 1629976 5698712 +1630776 5693064 1630736 5693088 1629976 5698712 1630512 5699152 +1630776 5693064 1630736 5693088 1630512 5699152 1630848 5692976 +1630736 5693088 1629928 5698672 1629976 5698712 1630512 5699152 +1630776 5693064 1630864 5692928 1630736 5693088 1630512 5699152 +1629856 5698632 1629888 5698656 1629928 5698672 1630736 5693088 +1628376 5697224 1628464 5697392 1629856 5698632 1630736 5693088 +1630736 5693088 1628464 5697392 1629856 5698632 1629928 5698672 +1628304 5697064 1628328 5697136 1628376 5697224 1630736 5693088 +1628376 5697224 1628416 5697304 1628464 5697392 1630736 5693088 +1628464 5697392 1628488 5697448 1629856 5698632 1630736 5693088 +1630736 5693088 1628272 5697000 1628304 5697064 1628376 5697224 +1630736 5693088 1628304 5697064 1628376 5697224 1628464 5697392 +1629976 5698712 1630016 5698752 1630512 5699152 1630736 5693088 +1630776 5693064 1630848 5692976 1630864 5692928 1630736 5693088 +1628152 5696760 1630736 5693088 1629904 5693000 1628120 5696720 +1630736 5693088 1630432 5693120 1628152 5696760 1628184 5696808 +1630736 5693088 1629904 5693000 1630432 5693120 1628184 5696808 +1629904 5693000 1630432 5693120 1630736 5693088 1630800 5692640 +1630736 5693088 1630864 5692824 1630800 5692640 1630432 5693120 +1630432 5693120 1628184 5696808 1630736 5693088 1630864 5692824 +1630800 5692640 1629904 5693000 1630432 5693120 1630864 5692824 +1630432 5693120 1629904 5693000 1628152 5696760 1628184 5696808 +1629904 5693000 1628152 5696760 1630432 5693120 1630800 5692640 +1629904 5693000 1630432 5693120 1630800 5692640 1629944 5692528 +1629904 5693000 1630432 5693120 1629944 5692528 1629840 5692680 +1630800 5692640 1630136 5692352 1629944 5692528 1630432 5693120 +1630432 5693120 1630864 5692824 1630800 5692640 1630136 5692352 +1629904 5693000 1628152 5696760 1630432 5693120 1629944 5692528 +1630800 5692640 1630448 5692312 1630136 5692352 1630432 5693120 +1630800 5692640 1630704 5692448 1630448 5692312 1630432 5693120 +1630704 5692448 1630608 5692360 1630448 5692312 1630432 5693120 +1630136 5692352 1629944 5692528 1630432 5693120 1630448 5692312 +1630800 5692640 1630704 5692448 1630432 5693120 1630864 5692824 +1630448 5692312 1630136 5692352 1630432 5693120 1630704 5692448 +1630448 5692312 1630232 5692312 1630136 5692352 1630432 5693120 +1629944 5692528 1629904 5693000 1630432 5693120 1630136 5692352 +1630736 5693088 1630864 5692928 1630864 5692824 1630432 5693120 +1630736 5693088 1630432 5693120 1628184 5696808 1628224 5696896 +1630736 5693088 1630432 5693120 1628224 5696896 1628272 5697000 +1630432 5693120 1628152 5696760 1628184 5696808 1628224 5696896 +1630736 5693088 1630864 5692824 1630432 5693120 1628272 5697000 +1630736 5693088 1630432 5693120 1628272 5697000 1628304 5697064 +1630432 5693120 1628224 5696896 1628272 5697000 1628304 5697064 +1630736 5693088 1630864 5692824 1630432 5693120 1628304 5697064 +1630736 5693088 1630432 5693120 1628304 5697064 1628376 5697224 +1630432 5693120 1628184 5696808 1628224 5696896 1628272 5697000 +1628152 5696760 1630432 5693120 1629904 5693000 1628120 5696720 +1629904 5693000 1628088 5696712 1628120 5696720 1630432 5693120 +1628152 5696760 1628184 5696808 1630432 5693120 1628120 5696720 +1630432 5693120 1629944 5692528 1629904 5693000 1628120 5696720 +1628120 5696720 1630328 5693152 1629904 5693000 1628088 5696712 +1629904 5693000 1630328 5693152 1630432 5693120 1629944 5692528 +1629904 5693000 1630328 5693152 1629944 5692528 1629840 5692680 +1630328 5693152 1628120 5696720 1630432 5693120 1629944 5692528 +1629904 5693000 1628120 5696720 1630328 5693152 1629944 5692528 +1630432 5693120 1630136 5692352 1629944 5692528 1630328 5693152 +1630432 5693120 1630328 5693152 1628120 5696720 1628152 5696760 +1630432 5693120 1630328 5693152 1628152 5696760 1628184 5696808 +1630432 5693120 1630328 5693152 1628184 5696808 1628224 5696896 +1630328 5693152 1628152 5696760 1628184 5696808 1628224 5696896 +1630432 5693120 1629944 5692528 1630328 5693152 1628224 5696896 +1630328 5693152 1629904 5693000 1628120 5696720 1628152 5696760 +1630432 5693120 1630328 5693152 1628224 5696896 1628272 5697000 +1630432 5693120 1630328 5693152 1628272 5697000 1628304 5697064 +1630328 5693152 1628184 5696808 1628224 5696896 1628272 5697000 +1630432 5693120 1629944 5692528 1630328 5693152 1628304 5697064 +1630432 5693120 1630328 5693152 1628304 5697064 1630736 5693088 +1630328 5693152 1628272 5697000 1628304 5697064 1630736 5693088 +1630432 5693120 1629944 5692528 1630328 5693152 1630736 5693088 +1628304 5697064 1628376 5697224 1630736 5693088 1630328 5693152 +1628304 5697064 1628376 5697224 1630328 5693152 1628272 5697000 +1630736 5693088 1630432 5693120 1630328 5693152 1628376 5697224 +1628304 5697064 1628328 5697136 1628376 5697224 1630328 5693152 +1630328 5693152 1628224 5696896 1628272 5697000 1628304 5697064 +1628376 5697224 1628464 5697392 1630736 5693088 1630328 5693152 +1628464 5697392 1629856 5698632 1630736 5693088 1630328 5693152 +1630736 5693088 1630432 5693120 1630328 5693152 1628464 5697392 +1628376 5697224 1628416 5697304 1628464 5697392 1630328 5693152 +1628376 5697224 1628464 5697392 1630328 5693152 1628304 5697064 +1630328 5693152 1628120 5696720 1628152 5696760 1628184 5696808 +1628120 5696720 1630280 5693192 1629904 5693000 1628088 5696712 +1630328 5693152 1630280 5693192 1628120 5696720 1628152 5696760 +1630328 5693152 1629904 5693000 1630280 5693192 1628152 5696760 +1629904 5693000 1630280 5693192 1630328 5693152 1629944 5692528 +1630280 5693192 1629904 5693000 1628120 5696720 1628152 5696760 +1630328 5693152 1630280 5693192 1628152 5696760 1628184 5696808 +1630328 5693152 1630280 5693192 1628184 5696808 1628224 5696896 +1630328 5693152 1630280 5693192 1628224 5696896 1628272 5697000 +1630280 5693192 1628184 5696808 1628224 5696896 1628272 5697000 +1630280 5693192 1628120 5696720 1628152 5696760 1628184 5696808 +1630328 5693152 1629904 5693000 1630280 5693192 1628272 5697000 +1630328 5693152 1630280 5693192 1628272 5697000 1628304 5697064 +1630328 5693152 1630280 5693192 1628304 5697064 1628376 5697224 +1630280 5693192 1628224 5696896 1628272 5697000 1628304 5697064 +1630328 5693152 1629904 5693000 1630280 5693192 1628376 5697224 +1628304 5697064 1628328 5697136 1628376 5697224 1630280 5693192 +1630328 5693152 1630280 5693192 1628376 5697224 1628464 5697392 +1630280 5693192 1628304 5697064 1628376 5697224 1628464 5697392 +1630328 5693152 1629904 5693000 1630280 5693192 1628464 5697392 +1628376 5697224 1628416 5697304 1628464 5697392 1630280 5693192 +1630280 5693192 1628272 5697000 1628304 5697064 1628376 5697224 +1630328 5693152 1630280 5693192 1628464 5697392 1630736 5693088 +1630328 5693152 1629904 5693000 1630280 5693192 1630736 5693088 +1628464 5697392 1629856 5698632 1630736 5693088 1630280 5693192 +1629856 5698632 1629928 5698672 1630736 5693088 1630280 5693192 +1630328 5693152 1630280 5693192 1630736 5693088 1630432 5693120 +1630328 5693152 1629904 5693000 1630280 5693192 1630432 5693120 +1628464 5697392 1628488 5697448 1629856 5698632 1630280 5693192 +1630280 5693192 1628376 5697224 1628464 5697392 1629856 5698632 +1630736 5693088 1630432 5693120 1630280 5693192 1629856 5698632 +1630280 5693192 1628152 5696760 1628184 5696808 1628224 5696896 +1630280 5693192 1630264 5693248 1629856 5698632 1630736 5693088 +1630280 5693192 1628464 5697392 1630264 5693248 1630736 5693088 +1630264 5693248 1628464 5697392 1629856 5698632 1630736 5693088 +1629856 5698632 1629928 5698672 1630736 5693088 1630264 5693248 +1629928 5698672 1629976 5698712 1630736 5693088 1630264 5693248 +1629856 5698632 1629928 5698672 1630264 5693248 1628464 5697392 +1629856 5698632 1629888 5698656 1629928 5698672 1630264 5693248 +1630736 5693088 1630280 5693192 1630264 5693248 1629928 5698672 +1629856 5698632 1630264 5693248 1628464 5697392 1628488 5697448 +1628464 5697392 1630264 5693248 1630280 5693192 1628376 5697224 +1630280 5693192 1628304 5697064 1628376 5697224 1630264 5693248 +1630264 5693248 1630736 5693088 1630280 5693192 1628304 5697064 +1628464 5697392 1629856 5698632 1630264 5693248 1628376 5697224 +1628304 5697064 1628328 5697136 1628376 5697224 1630264 5693248 +1628464 5697392 1630264 5693248 1628376 5697224 1628416 5697304 +1628376 5697224 1628464 5697392 1630264 5693248 1628304 5697064 +1630280 5693192 1628272 5697000 1628304 5697064 1630264 5693248 +1628304 5697064 1628376 5697224 1630264 5693248 1628272 5697000 +1630280 5693192 1628224 5696896 1628272 5697000 1630264 5693248 +1630280 5693192 1628184 5696808 1628224 5696896 1630264 5693248 +1628224 5696896 1628272 5697000 1630264 5693248 1628184 5696808 +1630280 5693192 1628184 5696808 1630264 5693248 1630736 5693088 +1628272 5697000 1628304 5697064 1630264 5693248 1628224 5696896 +1630280 5693192 1630264 5693248 1630736 5693088 1630432 5693120 +1630280 5693192 1628184 5696808 1630264 5693248 1630432 5693120 +1630264 5693248 1629928 5698672 1630736 5693088 1630432 5693120 +1630280 5693192 1630264 5693248 1630432 5693120 1630328 5693152 +1630280 5693192 1628184 5696808 1630264 5693248 1630328 5693152 +1630264 5693248 1630736 5693088 1630432 5693120 1630328 5693152 +1630280 5693192 1628152 5696760 1628184 5696808 1630264 5693248 +1628184 5696808 1628224 5696896 1630264 5693248 1628152 5696760 +1630280 5693192 1628120 5696720 1628152 5696760 1630264 5693248 +1630280 5693192 1629904 5693000 1628120 5696720 1630264 5693248 +1629904 5693000 1628088 5696712 1628120 5696720 1630264 5693248 +1628120 5696720 1628152 5696760 1630264 5693248 1629904 5693000 +1630280 5693192 1629904 5693000 1630264 5693248 1630328 5693152 +1630280 5693192 1630328 5693152 1629904 5693000 1630264 5693248 +1628152 5696760 1628184 5696808 1630264 5693248 1628120 5696720 +1628120 5696720 1630192 5693264 1629904 5693000 1628088 5696712 +1630264 5693248 1630192 5693264 1628120 5696720 1628152 5696760 +1629904 5693000 1630192 5693264 1630264 5693248 1630280 5693192 +1629904 5693000 1630192 5693264 1630280 5693192 1630328 5693152 +1630264 5693248 1630280 5693192 1630192 5693264 1628152 5696760 +1630192 5693264 1629904 5693000 1628120 5696720 1628152 5696760 +1629904 5693000 1628120 5696720 1630192 5693264 1630280 5693192 +1630264 5693248 1630192 5693264 1628152 5696760 1628184 5696808 +1630264 5693248 1630192 5693264 1628184 5696808 1628224 5696896 +1630264 5693248 1630192 5693264 1628224 5696896 1628272 5697000 +1630192 5693264 1628184 5696808 1628224 5696896 1628272 5697000 +1630192 5693264 1628120 5696720 1628152 5696760 1628184 5696808 +1630264 5693248 1630280 5693192 1630192 5693264 1628272 5697000 +1630264 5693248 1630192 5693264 1628272 5697000 1628304 5697064 +1630264 5693248 1630192 5693264 1628304 5697064 1628376 5697224 +1630192 5693264 1628224 5696896 1628272 5697000 1628304 5697064 +1630264 5693248 1630280 5693192 1630192 5693264 1628304 5697064 +1630192 5693264 1628152 5696760 1628184 5696808 1628224 5696896 +1628120 5696720 1630112 5693208 1629904 5693000 1628088 5696712 +1630192 5693264 1630112 5693208 1628120 5696720 1628152 5696760 +1629904 5693000 1630112 5693208 1630192 5693264 1630280 5693192 +1630192 5693264 1630264 5693248 1630280 5693192 1630112 5693208 +1629904 5693000 1630112 5693208 1630280 5693192 1630328 5693152 +1629904 5693000 1630112 5693208 1630328 5693152 1629944 5692528 +1630112 5693208 1628120 5696720 1630192 5693264 1630280 5693192 +1630112 5693208 1630192 5693264 1630280 5693192 1630328 5693152 +1628120 5696720 1630192 5693264 1630112 5693208 1628088 5696712 +1630112 5693208 1630328 5693152 1629904 5693000 1628088 5696712 +1629904 5693000 1628048 5696704 1628088 5696712 1630112 5693208 +1630328 5693152 1630056 5692704 1629944 5692528 1629904 5693000 +1629944 5692528 1629840 5692680 1629904 5693000 1630056 5692704 +1629840 5692680 1629856 5692928 1629904 5693000 1630056 5692704 +1629840 5692680 1629856 5692928 1630056 5692704 1629944 5692528 +1629904 5693000 1630328 5693152 1630056 5692704 1629856 5692928 +1630328 5693152 1630056 5692704 1629904 5693000 1630112 5693208 +1630056 5692704 1630432 5693120 1629944 5692528 1629840 5692680 +1630328 5693152 1630432 5693120 1630056 5692704 1629904 5693000 +1629840 5692680 1629816 5692792 1629856 5692928 1630056 5692704 +1629856 5692928 1629904 5693000 1630056 5692704 1629816 5692792 +1629840 5692680 1629816 5692792 1630056 5692704 1629944 5692528 +1629944 5692528 1630056 5692704 1630432 5693120 1630136 5692352 +1630432 5693120 1630448 5692312 1630136 5692352 1630056 5692704 +1629944 5692528 1629840 5692680 1630056 5692704 1630136 5692352 +1630056 5692704 1630328 5693152 1630432 5693120 1630448 5692312 +1630432 5693120 1630704 5692448 1630448 5692312 1630056 5692704 +1630432 5693120 1630800 5692640 1630704 5692448 1630056 5692704 +1630704 5692448 1630608 5692360 1630448 5692312 1630056 5692704 +1630448 5692312 1630136 5692352 1630056 5692704 1630704 5692448 +1630432 5693120 1630864 5692824 1630800 5692640 1630056 5692704 +1630432 5693120 1630800 5692640 1630056 5692704 1630328 5693152 +1630704 5692448 1630448 5692312 1630056 5692704 1630800 5692640 +1630448 5692312 1630232 5692312 1630136 5692352 1630056 5692704 +1630448 5692312 1630232 5692312 1630056 5692704 1630704 5692448 +1630136 5692352 1629944 5692528 1630056 5692704 1630232 5692312 +1630704 5692448 1630608 5692360 1630448 5692312 1630096 5692664 +1630056 5692704 1630800 5692640 1630704 5692448 1630096 5692664 +1630056 5692704 1630432 5693120 1630800 5692640 1630096 5692664 +1630056 5692704 1630432 5693120 1630096 5692664 1630232 5692312 +1630432 5693120 1630864 5692824 1630800 5692640 1630096 5692664 +1630056 5692704 1630328 5693152 1630432 5693120 1630096 5692664 +1630432 5693120 1630800 5692640 1630096 5692664 1630328 5693152 +1630056 5692704 1630328 5693152 1630096 5692664 1630232 5692312 +1630704 5692448 1630448 5692312 1630096 5692664 1630800 5692640 +1630056 5692704 1629904 5693000 1630328 5693152 1630096 5692664 +1630800 5692640 1630704 5692448 1630096 5692664 1630432 5693120 +1630056 5692704 1630096 5692664 1630232 5692312 1630136 5692352 +1630056 5692704 1630328 5693152 1630096 5692664 1630136 5692352 +1630096 5692664 1630448 5692312 1630232 5692312 1630136 5692352 +1630056 5692704 1630096 5692664 1630136 5692352 1629944 5692528 +1630056 5692704 1630328 5693152 1630096 5692664 1629944 5692528 +1630056 5692704 1630096 5692664 1629944 5692528 1629840 5692680 +1630096 5692664 1630232 5692312 1630136 5692352 1629944 5692528 +1630448 5692312 1630160 5692624 1630704 5692448 1630608 5692360 +1630704 5692448 1630160 5692624 1630096 5692664 1630800 5692640 +1630096 5692664 1630160 5692624 1630448 5692312 1630232 5692312 +1630096 5692664 1630160 5692624 1630232 5692312 1630136 5692352 +1630160 5692624 1630448 5692312 1630232 5692312 1630136 5692352 +1630160 5692624 1630136 5692352 1630096 5692664 1630800 5692640 +1630448 5692312 1630232 5692312 1630160 5692624 1630608 5692360 +1630160 5692624 1630800 5692640 1630704 5692448 1630608 5692360 +1630096 5692664 1630432 5693120 1630800 5692640 1630160 5692624 +1630096 5692664 1630328 5693152 1630432 5693120 1630160 5692624 +1630432 5693120 1630864 5692824 1630800 5692640 1630160 5692624 +1630096 5692664 1630056 5692704 1630328 5693152 1630160 5692624 +1630800 5692640 1630704 5692448 1630160 5692624 1630432 5693120 +1630096 5692664 1630328 5693152 1630160 5692624 1630136 5692352 +1630432 5693120 1630800 5692640 1630160 5692624 1630328 5693152 +1630096 5692664 1630160 5692624 1630136 5692352 1629944 5692528 +1630160 5692624 1630232 5692312 1630136 5692352 1629944 5692528 +1630096 5692664 1630328 5693152 1630160 5692624 1629944 5692528 +1630096 5692664 1630160 5692624 1629944 5692528 1630056 5692704 +1630608 5692360 1630248 5692552 1630160 5692624 1630704 5692448 +1630160 5692624 1630248 5692552 1630448 5692312 1630232 5692312 +1630160 5692624 1630248 5692552 1630232 5692312 1630136 5692352 +1630160 5692624 1630248 5692552 1630136 5692352 1629944 5692528 +1630248 5692552 1630448 5692312 1630232 5692312 1630136 5692352 +1630248 5692552 1630136 5692352 1630160 5692624 1630704 5692448 +1630160 5692624 1630800 5692640 1630704 5692448 1630248 5692552 +1630704 5692448 1630608 5692360 1630248 5692552 1630800 5692640 +1630160 5692624 1630432 5693120 1630800 5692640 1630248 5692552 +1630432 5693120 1630864 5692824 1630800 5692640 1630248 5692552 +1630160 5692624 1630432 5693120 1630248 5692552 1630136 5692352 +1630800 5692640 1630704 5692448 1630248 5692552 1630432 5693120 +1630248 5692552 1630608 5692360 1630448 5692312 1630232 5692312 +1630608 5692360 1630448 5692312 1630248 5692552 1630704 5692448 +1630160 5692624 1630328 5693152 1630432 5693120 1630248 5692552 +1630248 5692552 1630320 5692504 1630448 5692312 1630232 5692312 +1630248 5692552 1630320 5692504 1630232 5692312 1630136 5692352 +1630248 5692552 1630320 5692504 1630136 5692352 1630160 5692624 +1630320 5692504 1630448 5692312 1630232 5692312 1630136 5692352 +1630248 5692552 1630608 5692360 1630320 5692504 1630136 5692352 +1630608 5692360 1630320 5692504 1630248 5692552 1630704 5692448 +1630248 5692552 1630800 5692640 1630704 5692448 1630320 5692504 +1630248 5692552 1630432 5693120 1630800 5692640 1630320 5692504 +1630800 5692640 1630704 5692448 1630320 5692504 1630432 5693120 +1630432 5693120 1630864 5692824 1630800 5692640 1630320 5692504 +1630248 5692552 1630160 5692624 1630432 5693120 1630320 5692504 +1630320 5692504 1630136 5692352 1630248 5692552 1630432 5693120 +1630704 5692448 1630608 5692360 1630320 5692504 1630800 5692640 +1630320 5692504 1630608 5692360 1630448 5692312 1630232 5692312 +1630608 5692360 1630448 5692312 1630320 5692504 1630704 5692448 +1630704 5692448 1630368 5692488 1630320 5692504 1630800 5692640 +1630320 5692504 1630432 5693120 1630800 5692640 1630368 5692488 +1630432 5693120 1630864 5692824 1630800 5692640 1630368 5692488 +1630320 5692504 1630248 5692552 1630432 5693120 1630368 5692488 +1630432 5693120 1630800 5692640 1630368 5692488 1630248 5692552 +1630248 5692552 1630160 5692624 1630432 5693120 1630368 5692488 +1630800 5692640 1630704 5692448 1630368 5692488 1630432 5693120 +1630368 5692488 1630608 5692360 1630320 5692504 1630248 5692552 +1630320 5692504 1630368 5692488 1630608 5692360 1630448 5692312 +1630320 5692504 1630368 5692488 1630448 5692312 1630232 5692312 +1630320 5692504 1630368 5692488 1630232 5692312 1630136 5692352 +1630320 5692504 1630248 5692552 1630368 5692488 1630232 5692312 +1630368 5692488 1630608 5692360 1630448 5692312 1630232 5692312 +1630368 5692488 1630704 5692448 1630608 5692360 1630448 5692312 +1630704 5692448 1630608 5692360 1630368 5692488 1630800 5692640 +1630368 5692488 1630416 5692480 1630608 5692360 1630448 5692312 +1630368 5692488 1630416 5692480 1630448 5692312 1630232 5692312 +1630368 5692488 1630704 5692448 1630416 5692480 1630448 5692312 +1630704 5692448 1630416 5692480 1630368 5692488 1630800 5692640 +1630368 5692488 1630432 5693120 1630800 5692640 1630416 5692480 +1630368 5692488 1630248 5692552 1630432 5693120 1630416 5692480 +1630432 5693120 1630864 5692824 1630800 5692640 1630416 5692480 +1630248 5692552 1630160 5692624 1630432 5693120 1630416 5692480 +1630368 5692488 1630320 5692504 1630248 5692552 1630416 5692480 +1630432 5693120 1630800 5692640 1630416 5692480 1630248 5692552 +1630416 5692480 1630448 5692312 1630368 5692488 1630248 5692552 +1630800 5692640 1630704 5692448 1630416 5692480 1630432 5693120 +1630416 5692480 1630704 5692448 1630608 5692360 1630448 5692312 +1630704 5692448 1630608 5692360 1630416 5692480 1630800 5692640 +1630800 5692640 1630512 5692504 1630416 5692480 1630432 5693120 +1630800 5692640 1630512 5692504 1630432 5693120 1630864 5692824 +1630416 5692480 1630248 5692552 1630432 5693120 1630512 5692504 +1630416 5692480 1630368 5692488 1630248 5692552 1630512 5692504 +1630248 5692552 1630160 5692624 1630432 5693120 1630512 5692504 +1630368 5692488 1630320 5692504 1630248 5692552 1630512 5692504 +1630368 5692488 1630320 5692504 1630512 5692504 1630416 5692480 +1630248 5692552 1630432 5693120 1630512 5692504 1630320 5692504 +1630432 5693120 1630800 5692640 1630512 5692504 1630248 5692552 +1630512 5692504 1630704 5692448 1630416 5692480 1630368 5692488 +1630416 5692480 1630512 5692504 1630704 5692448 1630608 5692360 +1630416 5692480 1630512 5692504 1630608 5692360 1630448 5692312 +1630416 5692480 1630512 5692504 1630448 5692312 1630368 5692488 +1630416 5692480 1630368 5692488 1630512 5692504 1630448 5692312 +1630512 5692504 1630704 5692448 1630608 5692360 1630448 5692312 +1630512 5692504 1630800 5692640 1630704 5692448 1630608 5692360 +1630800 5692640 1630704 5692448 1630512 5692504 1630432 5693120 +1630800 5692640 1630544 5692520 1630432 5693120 1630864 5692824 +1630432 5693120 1630736 5693088 1630864 5692824 1630544 5692520 +1630432 5693120 1630544 5692520 1630512 5692504 1630248 5692552 +1630432 5693120 1630544 5692520 1630248 5692552 1630160 5692624 +1630512 5692504 1630320 5692504 1630248 5692552 1630544 5692520 +1630544 5692520 1630800 5692640 1630512 5692504 1630248 5692552 +1630512 5692504 1630544 5692520 1630800 5692640 1630704 5692448 +1630512 5692504 1630544 5692520 1630704 5692448 1630608 5692360 +1630512 5692504 1630544 5692520 1630608 5692360 1630448 5692312 +1630512 5692504 1630248 5692552 1630544 5692520 1630608 5692360 +1630544 5692520 1630800 5692640 1630704 5692448 1630608 5692360 +1630800 5692640 1630704 5692448 1630544 5692520 1630864 5692824 +1630544 5692520 1630248 5692552 1630432 5693120 1630864 5692824 +1630864 5692824 1630592 5692544 1630544 5692520 1630432 5693120 +1630864 5692824 1630592 5692544 1630432 5693120 1630736 5693088 +1630592 5692544 1630544 5692520 1630432 5693120 1630736 5693088 +1630544 5692520 1630592 5692544 1630800 5692640 1630704 5692448 +1630544 5692520 1630592 5692544 1630704 5692448 1630608 5692360 +1630544 5692520 1630592 5692544 1630608 5692360 1630512 5692504 +1630592 5692544 1630800 5692640 1630704 5692448 1630608 5692360 +1630592 5692544 1630608 5692360 1630544 5692520 1630432 5693120 +1630544 5692520 1630248 5692552 1630432 5693120 1630592 5692544 +1630592 5692544 1630864 5692824 1630800 5692640 1630704 5692448 +1630864 5692824 1630800 5692640 1630592 5692544 1630736 5693088 +1630864 5692824 1630592 5692544 1630736 5693088 1630864 5692928 +1630592 5692544 1630680 5692616 1630800 5692640 1630704 5692448 +1630592 5692544 1630680 5692616 1630704 5692448 1630608 5692360 +1630592 5692544 1630864 5692824 1630680 5692616 1630704 5692448 +1630864 5692824 1630680 5692616 1630592 5692544 1630736 5693088 +1630592 5692544 1630432 5693120 1630736 5693088 1630680 5692616 +1630592 5692544 1630544 5692520 1630432 5693120 1630680 5692616 +1630680 5692616 1630704 5692448 1630592 5692544 1630432 5693120 +1630736 5693088 1630864 5692824 1630680 5692616 1630432 5693120 +1630680 5692616 1630864 5692824 1630800 5692640 1630704 5692448 +1630864 5692824 1630800 5692640 1630680 5692616 1630736 5693088 +1630864 5692824 1630680 5692616 1630736 5693088 1630864 5692928 +1630736 5693088 1630720 5692672 1630680 5692616 1630432 5693120 +1630680 5692616 1630592 5692544 1630432 5693120 1630720 5692672 +1630720 5692672 1630864 5692824 1630680 5692616 1630432 5693120 +1630680 5692616 1630720 5692672 1630864 5692824 1630800 5692640 +1630680 5692616 1630720 5692672 1630800 5692640 1630704 5692448 +1630680 5692616 1630432 5693120 1630720 5692672 1630800 5692640 +1630720 5692672 1630736 5693088 1630864 5692824 1630800 5692640 +1630736 5693088 1630864 5692824 1630720 5692672 1630432 5693120 +1630864 5692824 1630720 5692672 1630736 5693088 1630864 5692928 +1630864 5692824 1630800 5692640 1630720 5692672 1630864 5692928 +1630720 5692672 1630432 5693120 1630736 5693088 1630864 5692928 +1630736 5693088 1630776 5693064 1630864 5692928 1630720 5692672 +1630736 5693088 1630776 5693064 1630720 5692672 1630432 5693120 +1630864 5692928 1630864 5692824 1630720 5692672 1630776 5693064 +1630776 5693064 1630848 5692976 1630864 5692928 1630720 5692672 +1630864 5692928 1630864 5692824 1630720 5692672 1630848 5692976 +1630776 5693064 1630848 5692976 1630720 5692672 1630736 5693088 +1630432 5693120 1630712 5692720 1630720 5692672 1630680 5692616 +1630432 5693120 1630712 5692720 1630680 5692616 1630592 5692544 +1630432 5693120 1630712 5692720 1630592 5692544 1630544 5692520 +1630712 5692720 1630680 5692616 1630592 5692544 1630544 5692520 +1630432 5693120 1630712 5692720 1630544 5692520 1630248 5692552 +1630712 5692720 1630592 5692544 1630544 5692520 1630248 5692552 +1630432 5693120 1630712 5692720 1630248 5692552 1630160 5692624 +1630544 5692520 1630512 5692504 1630248 5692552 1630712 5692720 +1630712 5692720 1630720 5692672 1630680 5692616 1630592 5692544 +1630712 5692720 1630736 5693088 1630720 5692672 1630680 5692616 +1630720 5692672 1630712 5692720 1630736 5693088 1630776 5693064 +1630720 5692672 1630680 5692616 1630712 5692720 1630776 5693064 +1630712 5692720 1630432 5693120 1630736 5693088 1630776 5693064 +1630432 5693120 1630736 5693088 1630712 5692720 1630248 5692552 +1630720 5692672 1630712 5692720 1630776 5693064 1630848 5692976 +1630720 5692672 1630680 5692616 1630712 5692720 1630848 5692976 +1630712 5692720 1630736 5693088 1630776 5693064 1630848 5692976 +1630720 5692672 1630712 5692720 1630848 5692976 1630864 5692928 +1630720 5692672 1630680 5692616 1630712 5692720 1630864 5692928 +1630720 5692672 1630712 5692720 1630864 5692928 1630864 5692824 +1630720 5692672 1630712 5692720 1630864 5692824 1630800 5692640 +1630720 5692672 1630712 5692720 1630800 5692640 1630680 5692616 +1630720 5692672 1630680 5692616 1630712 5692720 1630800 5692640 +1630712 5692720 1630864 5692928 1630864 5692824 1630800 5692640 +1630712 5692720 1630776 5693064 1630848 5692976 1630864 5692928 +1630712 5692720 1630848 5692976 1630864 5692928 1630864 5692824 +1630712 5692720 1630672 5692824 1630736 5693088 1630776 5693064 +1630712 5692720 1630672 5692824 1630776 5693064 1630848 5692976 +1630672 5692824 1630736 5693088 1630776 5693064 1630848 5692976 +1630712 5692720 1630432 5693120 1630672 5692824 1630848 5692976 +1630432 5693120 1630672 5692824 1630712 5692720 1630248 5692552 +1630432 5693120 1630672 5692824 1630248 5692552 1630160 5692624 +1630712 5692720 1630544 5692520 1630248 5692552 1630672 5692824 +1630712 5692720 1630592 5692544 1630544 5692520 1630672 5692824 +1630712 5692720 1630680 5692616 1630592 5692544 1630672 5692824 +1630592 5692544 1630544 5692520 1630672 5692824 1630680 5692616 +1630544 5692520 1630512 5692504 1630248 5692552 1630672 5692824 +1630544 5692520 1630248 5692552 1630672 5692824 1630592 5692544 +1630712 5692720 1630720 5692672 1630680 5692616 1630672 5692824 +1630672 5692824 1630848 5692976 1630712 5692720 1630680 5692616 +1630672 5692824 1630544 5692520 1630248 5692552 1630160 5692624 +1630672 5692824 1630432 5693120 1630736 5693088 1630776 5693064 +1630432 5693120 1630736 5693088 1630672 5692824 1630160 5692624 +1630432 5693120 1630672 5692824 1630160 5692624 1630328 5693152 +1630712 5692720 1630672 5692824 1630848 5692976 1630864 5692928 +1630672 5692824 1630776 5693064 1630848 5692976 1630864 5692928 +1630712 5692720 1630680 5692616 1630672 5692824 1630864 5692928 +1630712 5692720 1630672 5692824 1630864 5692928 1630864 5692824 +1630712 5692720 1630680 5692616 1630672 5692824 1630864 5692824 +1630712 5692720 1630672 5692824 1630864 5692824 1630800 5692640 +1630672 5692824 1630848 5692976 1630864 5692928 1630864 5692824 +1630672 5692824 1630640 5692864 1630736 5693088 1630776 5693064 +1630672 5692824 1630640 5692864 1630776 5693064 1630848 5692976 +1630672 5692824 1630640 5692864 1630848 5692976 1630864 5692928 +1630640 5692864 1630736 5693088 1630776 5693064 1630848 5692976 +1630672 5692824 1630432 5693120 1630640 5692864 1630848 5692976 +1630432 5693120 1630640 5692864 1630672 5692824 1630160 5692624 +1630672 5692824 1630248 5692552 1630160 5692624 1630640 5692864 +1630672 5692824 1630544 5692520 1630248 5692552 1630640 5692864 +1630248 5692552 1630160 5692624 1630640 5692864 1630544 5692520 +1630544 5692520 1630512 5692504 1630248 5692552 1630640 5692864 +1630672 5692824 1630592 5692544 1630544 5692520 1630640 5692864 +1630672 5692824 1630680 5692616 1630592 5692544 1630640 5692864 +1630544 5692520 1630248 5692552 1630640 5692864 1630592 5692544 +1630640 5692864 1630848 5692976 1630672 5692824 1630592 5692544 +1630160 5692624 1630432 5693120 1630640 5692864 1630248 5692552 +1630640 5692864 1630432 5693120 1630736 5693088 1630776 5693064 +1630432 5693120 1630736 5693088 1630640 5692864 1630160 5692624 +1630432 5693120 1630640 5692864 1630160 5692624 1630328 5693152 +1630160 5692624 1630560 5692928 1630640 5692864 1630248 5692552 +1630640 5692864 1630544 5692520 1630248 5692552 1630560 5692928 +1630544 5692520 1630512 5692504 1630248 5692552 1630560 5692928 +1630544 5692520 1630512 5692504 1630560 5692928 1630640 5692864 +1630512 5692504 1630320 5692504 1630248 5692552 1630560 5692928 +1630640 5692864 1630592 5692544 1630544 5692520 1630560 5692928 +1630248 5692552 1630160 5692624 1630560 5692928 1630512 5692504 +1630560 5692928 1630432 5693120 1630640 5692864 1630544 5692520 +1630640 5692864 1630560 5692928 1630432 5693120 1630736 5693088 +1630640 5692864 1630560 5692928 1630736 5693088 1630776 5693064 +1630640 5692864 1630544 5692520 1630560 5692928 1630736 5693088 +1630560 5692928 1630160 5692624 1630432 5693120 1630736 5693088 +1630160 5692624 1630432 5693120 1630560 5692928 1630248 5692552 +1630432 5693120 1630560 5692928 1630160 5692624 1630328 5693152 +1630160 5692624 1630096 5692664 1630328 5693152 1630560 5692928 +1630432 5693120 1630736 5693088 1630560 5692928 1630328 5693152 +1630560 5692928 1630248 5692552 1630160 5692624 1630328 5693152 +1630328 5693152 1630512 5692944 1630160 5692624 1630096 5692664 +1630328 5693152 1630512 5692944 1630096 5692664 1630056 5692704 +1630512 5692944 1630160 5692624 1630096 5692664 1630056 5692704 +1630328 5693152 1630512 5692944 1630056 5692704 1629904 5693000 +1630160 5692624 1630512 5692944 1630560 5692928 1630248 5692552 +1630560 5692928 1630512 5692504 1630248 5692552 1630512 5692944 +1630512 5692504 1630320 5692504 1630248 5692552 1630512 5692944 +1630512 5692504 1630368 5692488 1630320 5692504 1630512 5692944 +1630560 5692928 1630544 5692520 1630512 5692504 1630512 5692944 +1630560 5692928 1630640 5692864 1630544 5692520 1630512 5692944 +1630544 5692520 1630512 5692504 1630512 5692944 1630640 5692864 +1630640 5692864 1630592 5692544 1630544 5692520 1630512 5692944 +1630512 5692504 1630320 5692504 1630512 5692944 1630544 5692520 +1630512 5692944 1630328 5693152 1630560 5692928 1630640 5692864 +1630248 5692552 1630160 5692624 1630512 5692944 1630320 5692504 +1630328 5693152 1630560 5692928 1630512 5692944 1630056 5692704 +1630512 5692944 1630248 5692552 1630160 5692624 1630096 5692664 +1630560 5692928 1630512 5692944 1630328 5693152 1630432 5693120 +1630560 5692928 1630512 5692944 1630432 5693120 1630736 5693088 +1630560 5692928 1630512 5692944 1630736 5693088 1630640 5692864 +1630560 5692928 1630640 5692864 1630512 5692944 1630736 5693088 +1630512 5692944 1630056 5692704 1630328 5693152 1630432 5693120 +1630512 5692944 1630328 5693152 1630432 5693120 1630736 5693088 +1630056 5692704 1630432 5692952 1630512 5692944 1630096 5692664 +1630512 5692944 1630160 5692624 1630096 5692664 1630432 5692952 +1630096 5692664 1630056 5692704 1630432 5692952 1630160 5692624 +1630328 5693152 1630432 5692952 1630056 5692704 1629904 5693000 +1630512 5692944 1630432 5692952 1630328 5693152 1630432 5693120 +1630432 5692952 1630432 5693120 1630512 5692944 1630160 5692624 +1630512 5692944 1630248 5692552 1630160 5692624 1630432 5692952 +1630160 5692624 1630096 5692664 1630432 5692952 1630248 5692552 +1630512 5692944 1630320 5692504 1630248 5692552 1630432 5692952 +1630512 5692944 1630512 5692504 1630320 5692504 1630432 5692952 +1630512 5692504 1630368 5692488 1630320 5692504 1630432 5692952 +1630512 5692944 1630544 5692520 1630512 5692504 1630432 5692952 +1630512 5692504 1630320 5692504 1630432 5692952 1630544 5692520 +1630512 5692944 1630640 5692864 1630544 5692520 1630432 5692952 +1630320 5692504 1630248 5692552 1630432 5692952 1630512 5692504 +1630512 5692944 1630544 5692520 1630432 5692952 1630432 5693120 +1630248 5692552 1630160 5692624 1630432 5692952 1630320 5692504 +1630432 5692952 1630056 5692704 1630328 5693152 1630432 5693120 +1630056 5692704 1630328 5693152 1630432 5692952 1630096 5692664 +1630512 5692944 1630432 5692952 1630432 5693120 1630736 5693088 +1630328 5693152 1630352 5692968 1630056 5692704 1629904 5693000 +1630056 5692704 1629856 5692928 1629904 5693000 1630352 5692968 +1630328 5693152 1630352 5692968 1629904 5693000 1630112 5693208 +1630328 5693152 1630352 5692968 1630112 5693208 1630280 5693192 +1630352 5692968 1629904 5693000 1630112 5693208 1630280 5693192 +1630112 5693208 1630192 5693264 1630280 5693192 1630352 5692968 +1630352 5692968 1630056 5692704 1629904 5693000 1630112 5693208 +1630432 5692952 1630352 5692968 1630328 5693152 1630432 5693120 +1630432 5692952 1630352 5692968 1630432 5693120 1630512 5692944 +1630432 5692952 1630056 5692704 1630352 5692968 1630432 5693120 +1630056 5692704 1630352 5692968 1630432 5692952 1630096 5692664 +1630432 5692952 1630160 5692624 1630096 5692664 1630352 5692968 +1630432 5692952 1630248 5692552 1630160 5692624 1630352 5692968 +1630160 5692624 1630096 5692664 1630352 5692968 1630248 5692552 +1630432 5692952 1630320 5692504 1630248 5692552 1630352 5692968 +1630352 5692968 1630432 5693120 1630432 5692952 1630248 5692552 +1630096 5692664 1630056 5692704 1630352 5692968 1630160 5692624 +1630328 5693152 1630432 5693120 1630352 5692968 1630280 5693192 +1630352 5692968 1630096 5692664 1630056 5692704 1629904 5693000 +1630352 5692968 1630264 5692976 1630112 5693208 1630280 5693192 +1630352 5692968 1630264 5692976 1630280 5693192 1630328 5693152 +1630264 5692976 1630112 5693208 1630280 5693192 1630328 5693152 +1630112 5693208 1630192 5693264 1630280 5693192 1630264 5692976 +1629904 5693000 1630264 5692976 1630352 5692968 1630056 5692704 +1629904 5693000 1630264 5692976 1630056 5692704 1629856 5692928 +1630352 5692968 1630264 5692976 1630328 5693152 1630432 5693120 +1630352 5692968 1630056 5692704 1630264 5692976 1630328 5693152 +1630352 5692968 1630096 5692664 1630056 5692704 1630264 5692976 +1630056 5692704 1629904 5693000 1630264 5692976 1630096 5692664 +1630352 5692968 1630160 5692624 1630096 5692664 1630264 5692976 +1630352 5692968 1630248 5692552 1630160 5692624 1630264 5692976 +1630352 5692968 1630160 5692624 1630264 5692976 1630328 5693152 +1630096 5692664 1630056 5692704 1630264 5692976 1630160 5692624 +1630264 5692976 1629904 5693000 1630112 5693208 1630280 5693192 +1629904 5693000 1630112 5693208 1630264 5692976 1630056 5692704 +1629904 5693000 1630176 5692968 1630056 5692704 1629856 5692928 +1630056 5692704 1630176 5692968 1630264 5692976 1630096 5692664 +1630264 5692976 1630160 5692624 1630096 5692664 1630176 5692968 +1630096 5692664 1630056 5692704 1630176 5692968 1630160 5692624 +1630264 5692976 1630352 5692968 1630160 5692624 1630176 5692968 +1630176 5692968 1629904 5693000 1630264 5692976 1630160 5692624 +1630264 5692976 1630176 5692968 1629904 5693000 1630112 5693208 +1630264 5692976 1630176 5692968 1630112 5693208 1630280 5693192 +1630264 5692976 1630176 5692968 1630280 5693192 1630328 5693152 +1630112 5693208 1630192 5693264 1630280 5693192 1630176 5692968 +1630264 5692976 1630160 5692624 1630176 5692968 1630280 5693192 +1630176 5692968 1629904 5693000 1630112 5693208 1630280 5693192 +1630176 5692968 1630056 5692704 1629904 5693000 1630112 5693208 +1630056 5692704 1629904 5693000 1630176 5692968 1630096 5692664 +1629904 5693000 1630152 5692952 1630056 5692704 1629856 5692928 +1630056 5692704 1629816 5692792 1629856 5692928 1630152 5692952 +1630176 5692968 1630152 5692952 1629904 5693000 1630112 5693208 +1630176 5692968 1630152 5692952 1630112 5693208 1630280 5693192 +1630176 5692968 1630056 5692704 1630152 5692952 1630112 5693208 +1630056 5692704 1630152 5692952 1630176 5692968 1630096 5692664 +1630176 5692968 1630160 5692624 1630096 5692664 1630152 5692952 +1630176 5692968 1630264 5692976 1630160 5692624 1630152 5692952 +1630160 5692624 1630096 5692664 1630152 5692952 1630264 5692976 +1630264 5692976 1630352 5692968 1630160 5692624 1630152 5692952 +1630152 5692952 1630112 5693208 1630176 5692968 1630264 5692976 +1630096 5692664 1630056 5692704 1630152 5692952 1630160 5692624 +1629904 5693000 1630112 5693208 1630152 5692952 1629856 5692928 +1630152 5692952 1630096 5692664 1630056 5692704 1629856 5692928 +1629856 5692928 1630120 5692912 1630056 5692704 1629816 5692792 +1630152 5692952 1630120 5692912 1629856 5692928 1629904 5693000 +1630152 5692952 1630120 5692912 1629904 5693000 1630112 5693208 +1630152 5692952 1630056 5692704 1630120 5692912 1629904 5693000 +1630056 5692704 1630120 5692912 1630152 5692952 1630096 5692664 +1630152 5692952 1630160 5692624 1630096 5692664 1630120 5692912 +1630152 5692952 1630264 5692976 1630160 5692624 1630120 5692912 +1630264 5692976 1630352 5692968 1630160 5692624 1630120 5692912 +1630152 5692952 1630176 5692968 1630264 5692976 1630120 5692912 +1630160 5692624 1630096 5692664 1630120 5692912 1630264 5692976 +1630120 5692912 1629904 5693000 1630152 5692952 1630264 5692976 +1630096 5692664 1630056 5692704 1630120 5692912 1630160 5692624 +1630120 5692912 1630056 5692704 1629856 5692928 1629904 5693000 +1630056 5692704 1629856 5692928 1630120 5692912 1630096 5692664 +1629856 5692928 1630088 5692848 1630056 5692704 1629816 5692792 +1630120 5692912 1630088 5692848 1629856 5692928 1629904 5693000 +1630120 5692912 1630088 5692848 1629904 5693000 1630152 5692952 +1630120 5692912 1630056 5692704 1630088 5692848 1629904 5693000 +1630056 5692704 1630088 5692848 1630120 5692912 1630096 5692664 +1630120 5692912 1630160 5692624 1630096 5692664 1630088 5692848 +1630120 5692912 1630264 5692976 1630160 5692624 1630088 5692848 +1630120 5692912 1630152 5692952 1630264 5692976 1630088 5692848 +1630264 5692976 1630352 5692968 1630160 5692624 1630088 5692848 +1630160 5692624 1630096 5692664 1630088 5692848 1630264 5692976 +1630088 5692848 1629904 5693000 1630120 5692912 1630264 5692976 +1630096 5692664 1630056 5692704 1630088 5692848 1630160 5692624 +1629856 5692928 1629904 5693000 1630088 5692848 1629816 5692792 +1630088 5692848 1630096 5692664 1630056 5692704 1629816 5692792 +1630056 5692704 1629840 5692680 1629816 5692792 1630088 5692848 +1630088 5692848 1630056 5692776 1629816 5692792 1629856 5692928 +1630088 5692848 1630056 5692776 1629856 5692928 1629904 5693000 +1630088 5692848 1630056 5692704 1630056 5692776 1629856 5692928 +1630056 5692704 1630056 5692776 1630088 5692848 1630096 5692664 +1630088 5692848 1630160 5692624 1630096 5692664 1630056 5692776 +1630056 5692776 1629856 5692928 1630088 5692848 1630096 5692664 +1630056 5692776 1630056 5692704 1629816 5692792 1629856 5692928 +1630056 5692704 1629816 5692792 1630056 5692776 1630096 5692664 +1629816 5692792 1630056 5692776 1630056 5692704 1629840 5692680 +1630056 5692704 1629944 5692528 1629840 5692680 1630056 5692776 +1629816 5692792 1629856 5692928 1630056 5692776 1629840 5692680 +1630056 5692776 1630096 5692664 1630056 5692704 1629840 5692680 +1615296 5682424 1617080 5683560 1657088 5639464 1615256 5682392 +1657088 5639464 1657056 5639384 1615256 5682392 1617080 5683560 +1657088 5639464 1617080 5683560 1630448 5692312 1630608 5692360 +1630448 5692312 1617080 5683560 1615296 5682424 1630232 5692312 +1615296 5682424 1624104 5692408 1630232 5692312 1617080 5683560 +1615296 5682424 1615296 5682480 1624104 5692408 1617080 5683560 +1615296 5682480 1623032 5692344 1624104 5692408 1617080 5683560 +1615296 5682480 1623000 5692344 1623032 5692344 1617080 5683560 +1615296 5682480 1615440 5689168 1623000 5692344 1617080 5683560 +1615296 5682480 1615392 5689120 1615440 5689168 1617080 5683560 +1615296 5682480 1615352 5689088 1615392 5689120 1617080 5683560 +1615392 5689120 1615440 5689168 1617080 5683560 1615352 5689088 +1615440 5689168 1623000 5692344 1617080 5683560 1615392 5689120 +1623000 5692344 1623032 5692344 1617080 5683560 1615440 5689168 +1623032 5692344 1624104 5692408 1617080 5683560 1623000 5692344 +1615296 5682480 1615352 5689088 1617080 5683560 1615296 5682424 +1615296 5682480 1615248 5682520 1615352 5689088 1617080 5683560 +1615352 5689088 1615392 5689120 1617080 5683560 1615248 5682520 +1615296 5682480 1615248 5682520 1617080 5683560 1615296 5682424 +1615248 5682520 1615216 5682544 1615352 5689088 1617080 5683560 +1615352 5689088 1615392 5689120 1617080 5683560 1615216 5682544 +1615248 5682520 1615216 5682544 1617080 5683560 1615296 5682480 +1630232 5692312 1630448 5692312 1617080 5683560 1624104 5692408 +1624104 5692408 1630136 5692352 1630232 5692312 1617080 5683560 +1624104 5692408 1630232 5692312 1617080 5683560 1623032 5692344 +1657088 5639464 1617080 5683560 1630608 5692360 1663776 5646144 +1617080 5683560 1630448 5692312 1630608 5692360 1663776 5646144 +1630608 5692360 1663880 5646248 1663776 5646144 1617080 5683560 +1615296 5682424 1615296 5682480 1617080 5683560 1615256 5682392 +1617080 5683560 1663776 5646144 1657088 5639464 1615256 5682392 +1617080 5683560 1630232 5692312 1630448 5692312 1630608 5692360 +1615440 5689168 1615488 5689272 1623000 5692344 1617080 5683560 +1615440 5689168 1615488 5689272 1617080 5683560 1615392 5689120 +1623000 5692344 1623032 5692344 1617080 5683560 1615488 5689272 +1623032 5692344 1624032 5692416 1624104 5692408 1617080 5683560 +1615488 5689272 1622936 5692376 1623000 5692344 1617080 5683560 +1623000 5692344 1623032 5692344 1617080 5683560 1622936 5692376 +1615488 5689272 1615488 5689328 1622936 5692376 1617080 5683560 +1615488 5689272 1622936 5692376 1617080 5683560 1615440 5689168 +1657088 5639464 1617080 5683560 1663776 5646144 1663688 5645984 +1615216 5682544 1613632 5687000 1615352 5689088 1617080 5683560 +1615352 5689088 1615392 5689120 1617080 5683560 1613632 5687000 +1615216 5682544 1613632 5687000 1617080 5683560 1615248 5682520 +1613632 5687000 1615264 5689048 1615352 5689088 1617080 5683560 +1615352 5689088 1615392 5689120 1617080 5683560 1615264 5689048 +1613632 5687000 1614472 5688520 1615264 5689048 1617080 5683560 +1615264 5689048 1615304 5689072 1615352 5689088 1617080 5683560 +1615216 5682544 1613592 5686944 1613632 5687000 1617080 5683560 +1615216 5682544 1613592 5686944 1617080 5683560 1615248 5682520 +1613592 5686944 1613600 5686968 1613632 5687000 1617080 5683560 +1615216 5682544 1615168 5682552 1613592 5686944 1617080 5683560 +1615216 5682544 1615168 5682552 1617080 5683560 1615248 5682520 +1615168 5682552 1615080 5682560 1613592 5686944 1617080 5683560 +1615080 5682560 1612664 5685288 1613592 5686944 1617080 5683560 +1613592 5686944 1613632 5687000 1617080 5683560 1615080 5682560 +1615168 5682552 1615080 5682560 1617080 5683560 1615216 5682544 +1613632 5687000 1615264 5689048 1617080 5683560 1613592 5686944 +1615256 5682392 1617120 5683488 1657088 5639464 1657056 5639384 +1617080 5683560 1617120 5683488 1615256 5682392 1615296 5682424 +1617080 5683560 1617120 5683488 1615296 5682424 1615296 5682480 +1617120 5683488 1615256 5682392 1615296 5682424 1615296 5682480 +1617080 5683560 1617120 5683488 1615296 5682480 1615248 5682520 +1657088 5639464 1617120 5683488 1617080 5683560 1663776 5646144 +1617080 5683560 1630608 5692360 1663776 5646144 1617120 5683488 +1617080 5683560 1630448 5692312 1630608 5692360 1617120 5683488 +1630608 5692360 1663776 5646144 1617120 5683488 1630448 5692312 +1630608 5692360 1663880 5646248 1663776 5646144 1617120 5683488 +1663776 5646144 1657088 5639464 1617120 5683488 1630608 5692360 +1617080 5683560 1630448 5692312 1617120 5683488 1615296 5682480 +1617080 5683560 1630232 5692312 1630448 5692312 1617120 5683488 +1630448 5692312 1630608 5692360 1617120 5683488 1630232 5692312 +1617080 5683560 1624104 5692408 1630232 5692312 1617120 5683488 +1624104 5692408 1630136 5692352 1630232 5692312 1617120 5683488 +1617080 5683560 1623032 5692344 1624104 5692408 1617120 5683488 +1617080 5683560 1623000 5692344 1623032 5692344 1617120 5683488 +1617080 5683560 1622936 5692376 1623000 5692344 1617120 5683488 +1624104 5692408 1630232 5692312 1617120 5683488 1623032 5692344 +1623032 5692344 1624104 5692408 1617120 5683488 1623000 5692344 +1617080 5683560 1623000 5692344 1617120 5683488 1615296 5682480 +1630232 5692312 1630448 5692312 1617120 5683488 1624104 5692408 +1617120 5683488 1657088 5639464 1615256 5682392 1615296 5682424 +1657088 5639464 1615256 5682392 1617120 5683488 1663776 5646144 +1623032 5692344 1624032 5692416 1624104 5692408 1617120 5683488 +1657088 5639464 1617120 5683488 1663776 5646144 1663688 5645984 +1615256 5682392 1617152 5683432 1657088 5639464 1657056 5639384 +1617120 5683488 1617152 5683432 1615256 5682392 1615296 5682424 +1617120 5683488 1617152 5683432 1615296 5682424 1615296 5682480 +1617120 5683488 1617152 5683432 1615296 5682480 1617080 5683560 +1617152 5683432 1615256 5682392 1615296 5682424 1615296 5682480 +1617120 5683488 1657088 5639464 1617152 5683432 1615296 5682480 +1657088 5639464 1617152 5683432 1617120 5683488 1663776 5646144 +1617120 5683488 1630608 5692360 1663776 5646144 1617152 5683432 +1617120 5683488 1630448 5692312 1630608 5692360 1617152 5683432 +1617120 5683488 1630232 5692312 1630448 5692312 1617152 5683432 +1630448 5692312 1630608 5692360 1617152 5683432 1630232 5692312 +1630608 5692360 1663880 5646248 1663776 5646144 1617152 5683432 +1630608 5692360 1663776 5646144 1617152 5683432 1630448 5692312 +1617120 5683488 1624104 5692408 1630232 5692312 1617152 5683432 +1630232 5692312 1630448 5692312 1617152 5683432 1624104 5692408 +1617120 5683488 1623032 5692344 1624104 5692408 1617152 5683432 +1624104 5692408 1630136 5692352 1630232 5692312 1617152 5683432 +1617120 5683488 1623000 5692344 1623032 5692344 1617152 5683432 +1617120 5683488 1617080 5683560 1623000 5692344 1617152 5683432 +1623032 5692344 1624104 5692408 1617152 5683432 1623000 5692344 +1624104 5692408 1630232 5692312 1617152 5683432 1623032 5692344 +1617152 5683432 1615296 5682480 1617120 5683488 1623000 5692344 +1663776 5646144 1657088 5639464 1617152 5683432 1630608 5692360 +1617152 5683432 1657088 5639464 1615256 5682392 1615296 5682424 +1657088 5639464 1615256 5682392 1617152 5683432 1663776 5646144 +1623032 5692344 1624032 5692416 1624104 5692408 1617152 5683432 +1657088 5639464 1617152 5683432 1663776 5646144 1663688 5645984 +1663776 5646144 1617176 5683416 1630608 5692360 1663880 5646248 +1630608 5692360 1617176 5683416 1617152 5683432 1630448 5692312 +1617152 5683432 1630232 5692312 1630448 5692312 1617176 5683416 +1617152 5683432 1624104 5692408 1630232 5692312 1617176 5683416 +1624104 5692408 1630136 5692352 1630232 5692312 1617176 5683416 +1630232 5692312 1630448 5692312 1617176 5683416 1624104 5692408 +1630448 5692312 1630608 5692360 1617176 5683416 1630232 5692312 +1617152 5683432 1623032 5692344 1624104 5692408 1617176 5683416 +1624104 5692408 1630232 5692312 1617176 5683416 1623032 5692344 +1617152 5683432 1623000 5692344 1623032 5692344 1617176 5683416 +1617152 5683432 1617120 5683488 1623000 5692344 1617176 5683416 +1617120 5683488 1617080 5683560 1623000 5692344 1617176 5683416 +1617080 5683560 1622936 5692376 1623000 5692344 1617176 5683416 +1623000 5692344 1623032 5692344 1617176 5683416 1617080 5683560 +1617120 5683488 1617080 5683560 1617176 5683416 1617152 5683432 +1623032 5692344 1624104 5692408 1617176 5683416 1623000 5692344 +1617152 5683432 1617176 5683416 1663776 5646144 1657088 5639464 +1617176 5683416 1657088 5639464 1617152 5683432 1617120 5683488 +1617152 5683432 1617176 5683416 1657088 5639464 1615256 5682392 +1657088 5639464 1657056 5639384 1615256 5682392 1617176 5683416 +1617176 5683416 1663776 5646144 1657088 5639464 1615256 5682392 +1617152 5683432 1617176 5683416 1615256 5682392 1615296 5682424 +1617152 5683432 1617176 5683416 1615296 5682424 1615296 5682480 +1617152 5683432 1617120 5683488 1617176 5683416 1615296 5682424 +1617176 5683416 1657088 5639464 1615256 5682392 1615296 5682424 +1617176 5683416 1630608 5692360 1663776 5646144 1657088 5639464 +1630608 5692360 1663776 5646144 1617176 5683416 1630448 5692312 +1623032 5692344 1624032 5692416 1624104 5692408 1617176 5683416 +1663776 5646144 1663688 5645984 1657088 5639464 1617176 5683416 +1663776 5646144 1617216 5683408 1630608 5692360 1663880 5646248 +1617176 5683416 1617216 5683408 1663776 5646144 1657088 5639464 +1617176 5683416 1617216 5683408 1657088 5639464 1615256 5682392 +1657088 5639464 1657056 5639384 1615256 5682392 1617216 5683408 +1617176 5683416 1617216 5683408 1615256 5682392 1615296 5682424 +1617216 5683408 1657088 5639464 1615256 5682392 1615296 5682424 +1617176 5683416 1617216 5683408 1615296 5682424 1617152 5683432 +1617216 5683408 1663776 5646144 1657088 5639464 1615256 5682392 +1617176 5683416 1630608 5692360 1617216 5683408 1615296 5682424 +1630608 5692360 1617216 5683408 1617176 5683416 1630448 5692312 +1617176 5683416 1630232 5692312 1630448 5692312 1617216 5683408 +1617176 5683416 1624104 5692408 1630232 5692312 1617216 5683408 +1617176 5683416 1623032 5692344 1624104 5692408 1617216 5683408 +1624104 5692408 1630136 5692352 1630232 5692312 1617216 5683408 +1624104 5692408 1630232 5692312 1617216 5683408 1623032 5692344 +1630232 5692312 1630448 5692312 1617216 5683408 1624104 5692408 +1617176 5683416 1623000 5692344 1623032 5692344 1617216 5683408 +1623032 5692344 1624104 5692408 1617216 5683408 1623000 5692344 +1617176 5683416 1617080 5683560 1623000 5692344 1617216 5683408 +1617080 5683560 1622936 5692376 1623000 5692344 1617216 5683408 +1617176 5683416 1617120 5683488 1617080 5683560 1617216 5683408 +1617080 5683560 1623000 5692344 1617216 5683408 1617120 5683488 +1617176 5683416 1617152 5683432 1617120 5683488 1617216 5683408 +1617120 5683488 1617080 5683560 1617216 5683408 1617152 5683432 +1623000 5692344 1623032 5692344 1617216 5683408 1617080 5683560 +1617216 5683408 1615296 5682424 1617176 5683416 1617152 5683432 +1630448 5692312 1630608 5692360 1617216 5683408 1630232 5692312 +1617216 5683408 1630608 5692360 1663776 5646144 1657088 5639464 +1630608 5692360 1663776 5646144 1617216 5683408 1630448 5692312 +1623032 5692344 1624032 5692416 1624104 5692408 1617216 5683408 +1663776 5646144 1663688 5645984 1657088 5639464 1617216 5683408 +1663776 5646144 1617256 5683416 1630608 5692360 1663880 5646248 +1617216 5683408 1617256 5683416 1663776 5646144 1657088 5639464 +1617216 5683408 1617256 5683416 1657088 5639464 1615256 5682392 +1657088 5639464 1657056 5639384 1615256 5682392 1617256 5683416 +1617216 5683408 1617256 5683416 1615256 5682392 1615296 5682424 +1617216 5683408 1617256 5683416 1615296 5682424 1617176 5683416 +1617256 5683416 1657088 5639464 1615256 5682392 1615296 5682424 +1617256 5683416 1663776 5646144 1657088 5639464 1615256 5682392 +1617216 5683408 1630608 5692360 1617256 5683416 1615296 5682424 +1630608 5692360 1617256 5683416 1617216 5683408 1630448 5692312 +1617216 5683408 1630232 5692312 1630448 5692312 1617256 5683416 +1617216 5683408 1624104 5692408 1630232 5692312 1617256 5683416 +1624104 5692408 1630136 5692352 1630232 5692312 1617256 5683416 +1617216 5683408 1623032 5692344 1624104 5692408 1617256 5683416 +1617216 5683408 1623000 5692344 1623032 5692344 1617256 5683416 +1623032 5692344 1624104 5692408 1617256 5683416 1623000 5692344 +1624104 5692408 1630232 5692312 1617256 5683416 1623032 5692344 +1617216 5683408 1617080 5683560 1623000 5692344 1617256 5683416 +1617080 5683560 1622936 5692376 1623000 5692344 1617256 5683416 +1623000 5692344 1623032 5692344 1617256 5683416 1622936 5692376 +1617216 5683408 1617120 5683488 1617080 5683560 1617256 5683416 +1617216 5683408 1617152 5683432 1617120 5683488 1617256 5683416 +1617080 5683560 1622936 5692376 1617256 5683416 1617120 5683488 +1630232 5692312 1630448 5692312 1617256 5683416 1624104 5692408 +1617256 5683416 1615296 5682424 1617216 5683408 1617120 5683488 +1623032 5692344 1624032 5692416 1624104 5692408 1617256 5683416 +1617080 5683560 1615488 5689272 1622936 5692376 1617256 5683416 +1622936 5692376 1623000 5692344 1617256 5683416 1615488 5689272 +1617080 5683560 1615488 5689272 1617256 5683416 1617120 5683488 +1615488 5689272 1615488 5689328 1622936 5692376 1617256 5683416 +1617080 5683560 1615440 5689168 1615488 5689272 1617256 5683416 +1663776 5646144 1663688 5645984 1657088 5639464 1617256 5683416 +1617256 5683416 1630608 5692360 1663776 5646144 1657088 5639464 +1630448 5692312 1630608 5692360 1617256 5683416 1630232 5692312 +1630608 5692360 1663776 5646144 1617256 5683416 1630448 5692312 +1630232 5692312 1617344 5683488 1624104 5692408 1630136 5692352 +1624104 5692408 1617344 5683488 1617256 5683416 1623032 5692344 +1617256 5683416 1623000 5692344 1623032 5692344 1617344 5683488 +1617256 5683416 1622936 5692376 1623000 5692344 1617344 5683488 +1617256 5683416 1615488 5689272 1622936 5692376 1617344 5683488 +1622936 5692376 1623000 5692344 1617344 5683488 1615488 5689272 +1623000 5692344 1623032 5692344 1617344 5683488 1622936 5692376 +1623032 5692344 1624104 5692408 1617344 5683488 1623000 5692344 +1617256 5683416 1617344 5683488 1630232 5692312 1630448 5692312 +1615488 5689272 1615488 5689328 1622936 5692376 1617344 5683488 +1624104 5692408 1617344 5683488 1623032 5692344 1624032 5692416 +1617256 5683416 1617080 5683560 1615488 5689272 1617344 5683488 +1615488 5689272 1622936 5692376 1617344 5683488 1617080 5683560 +1617256 5683416 1617120 5683488 1617080 5683560 1617344 5683488 +1617256 5683416 1617216 5683408 1617120 5683488 1617344 5683488 +1617080 5683560 1615440 5689168 1615488 5689272 1617344 5683488 +1617080 5683560 1615392 5689120 1615440 5689168 1617344 5683488 +1615488 5689272 1622936 5692376 1617344 5683488 1615440 5689168 +1617080 5683560 1615440 5689168 1617344 5683488 1617120 5683488 +1617256 5683416 1617344 5683488 1630448 5692312 1630608 5692360 +1617344 5683488 1630232 5692312 1630448 5692312 1630608 5692360 +1617256 5683416 1617344 5683488 1630608 5692360 1663776 5646144 +1630608 5692360 1663880 5646248 1663776 5646144 1617344 5683488 +1617256 5683416 1617344 5683488 1663776 5646144 1657088 5639464 +1617256 5683416 1617344 5683488 1657088 5639464 1615256 5682392 +1663776 5646144 1663688 5645984 1657088 5639464 1617344 5683488 +1617344 5683488 1630448 5692312 1630608 5692360 1663776 5646144 +1617344 5683488 1630608 5692360 1663776 5646144 1657088 5639464 +1617344 5683488 1657088 5639464 1617256 5683416 1617120 5683488 +1617344 5683488 1624104 5692408 1630232 5692312 1630448 5692312 +1624104 5692408 1630232 5692312 1617344 5683488 1623032 5692344 +1630232 5692312 1617376 5683520 1624104 5692408 1630136 5692352 +1617344 5683488 1617376 5683520 1630232 5692312 1630448 5692312 +1617344 5683488 1617376 5683520 1630448 5692312 1630608 5692360 +1617344 5683488 1617376 5683520 1630608 5692360 1663776 5646144 +1630608 5692360 1663880 5646248 1663776 5646144 1617376 5683520 +1617376 5683520 1630448 5692312 1630608 5692360 1663776 5646144 +1617344 5683488 1617376 5683520 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1617376 5683520 +1617344 5683488 1617376 5683520 1657088 5639464 1617256 5683416 +1617376 5683520 1630608 5692360 1663776 5646144 1657088 5639464 +1617376 5683520 1630232 5692312 1630448 5692312 1630608 5692360 +1617344 5683488 1624104 5692408 1617376 5683520 1657088 5639464 +1624104 5692408 1617376 5683520 1617344 5683488 1623032 5692344 +1617344 5683488 1623000 5692344 1623032 5692344 1617376 5683520 +1617344 5683488 1622936 5692376 1623000 5692344 1617376 5683520 +1617344 5683488 1615488 5689272 1622936 5692376 1617376 5683520 +1617344 5683488 1615440 5689168 1615488 5689272 1617376 5683520 +1615488 5689272 1622936 5692376 1617376 5683520 1615440 5689168 +1622936 5692376 1623000 5692344 1617376 5683520 1615488 5689272 +1623000 5692344 1623032 5692344 1617376 5683520 1622936 5692376 +1615488 5689272 1615488 5689328 1622936 5692376 1617376 5683520 +1617344 5683488 1617080 5683560 1615440 5689168 1617376 5683520 +1617080 5683560 1615392 5689120 1615440 5689168 1617376 5683520 +1617080 5683560 1615352 5689088 1615392 5689120 1617376 5683520 +1615440 5689168 1615488 5689272 1617376 5683520 1615392 5689120 +1617080 5683560 1615392 5689120 1617376 5683520 1617344 5683488 +1624104 5692408 1617376 5683520 1623032 5692344 1624032 5692416 +1617344 5683488 1617120 5683488 1617080 5683560 1617376 5683520 +1617376 5683520 1657088 5639464 1617344 5683488 1617080 5683560 +1623032 5692344 1624104 5692408 1617376 5683520 1623000 5692344 +1617376 5683520 1624104 5692408 1630232 5692312 1630448 5692312 +1624104 5692408 1630232 5692312 1617376 5683520 1623032 5692344 +1624104 5692408 1617424 5683592 1623032 5692344 1624032 5692416 +1623032 5692344 1617424 5683592 1617376 5683520 1623000 5692344 +1617376 5683520 1622936 5692376 1623000 5692344 1617424 5683592 +1617376 5683520 1615488 5689272 1622936 5692376 1617424 5683592 +1617376 5683520 1615440 5689168 1615488 5689272 1617424 5683592 +1617376 5683520 1615392 5689120 1615440 5689168 1617424 5683592 +1617376 5683520 1617080 5683560 1615392 5689120 1617424 5683592 +1617080 5683560 1615352 5689088 1615392 5689120 1617424 5683592 +1617080 5683560 1615264 5689048 1615352 5689088 1617424 5683592 +1617080 5683560 1615352 5689088 1617424 5683592 1617376 5683520 +1615392 5689120 1615440 5689168 1617424 5683592 1615352 5689088 +1615440 5689168 1615488 5689272 1617424 5683592 1615392 5689120 +1615488 5689272 1622936 5692376 1617424 5683592 1615440 5689168 +1622936 5692376 1623000 5692344 1617424 5683592 1615488 5689272 +1615488 5689272 1615488 5689328 1622936 5692376 1617424 5683592 +1617376 5683520 1617344 5683488 1617080 5683560 1617424 5683592 +1623000 5692344 1623032 5692344 1617424 5683592 1622936 5692376 +1617424 5683592 1624104 5692408 1617376 5683520 1617080 5683560 +1617376 5683520 1617424 5683592 1624104 5692408 1630232 5692312 +1624104 5692408 1630136 5692352 1630232 5692312 1617424 5683592 +1617376 5683520 1617424 5683592 1630232 5692312 1630448 5692312 +1617376 5683520 1617424 5683592 1630448 5692312 1630608 5692360 +1617376 5683520 1617080 5683560 1617424 5683592 1630448 5692312 +1617424 5683592 1624104 5692408 1630232 5692312 1630448 5692312 +1617424 5683592 1623032 5692344 1624104 5692408 1630232 5692312 +1623032 5692344 1624104 5692408 1617424 5683592 1623000 5692344 +1615488 5689272 1617424 5683648 1617424 5683592 1615440 5689168 +1617424 5683592 1615392 5689120 1615440 5689168 1617424 5683648 +1617424 5683592 1615352 5689088 1615392 5689120 1617424 5683648 +1617424 5683592 1617080 5683560 1615352 5689088 1617424 5683648 +1617080 5683560 1615264 5689048 1615352 5689088 1617424 5683648 +1617424 5683592 1617376 5683520 1617080 5683560 1617424 5683648 +1617080 5683560 1615352 5689088 1617424 5683648 1617376 5683520 +1615352 5689088 1615392 5689120 1617424 5683648 1617080 5683560 +1615392 5689120 1615440 5689168 1617424 5683648 1615352 5689088 +1615440 5689168 1615488 5689272 1617424 5683648 1615392 5689120 +1617424 5683592 1617424 5683648 1622936 5692376 1623000 5692344 +1622936 5692376 1617424 5683648 1615488 5689272 1615488 5689328 +1617376 5683520 1617344 5683488 1617080 5683560 1617424 5683648 +1617424 5683592 1617424 5683648 1623000 5692344 1623032 5692344 +1617424 5683648 1622936 5692376 1623000 5692344 1623032 5692344 +1617424 5683648 1623032 5692344 1617424 5683592 1617376 5683520 +1617424 5683592 1617424 5683648 1623032 5692344 1624104 5692408 +1623032 5692344 1624032 5692416 1624104 5692408 1617424 5683648 +1617424 5683648 1623000 5692344 1623032 5692344 1624104 5692408 +1617424 5683592 1617424 5683648 1624104 5692408 1630232 5692312 +1617424 5683592 1617376 5683520 1617424 5683648 1624104 5692408 +1617424 5683648 1615488 5689272 1622936 5692376 1623000 5692344 +1615488 5689272 1622936 5692376 1617424 5683648 1615440 5689168 +1615352 5689088 1617368 5683680 1617080 5683560 1615264 5689048 +1617080 5683560 1617368 5683680 1617424 5683648 1617376 5683520 +1617424 5683648 1617424 5683592 1617376 5683520 1617368 5683680 +1617376 5683520 1617080 5683560 1617368 5683680 1617424 5683592 +1617424 5683648 1617368 5683680 1615352 5689088 1615392 5689120 +1617424 5683648 1617368 5683680 1615392 5689120 1615440 5689168 +1617368 5683680 1615352 5689088 1615392 5689120 1615440 5689168 +1617424 5683648 1617368 5683680 1615440 5689168 1615488 5689272 +1617368 5683680 1615392 5689120 1615440 5689168 1615488 5689272 +1617080 5683560 1617368 5683680 1617376 5683520 1617344 5683488 +1617368 5683680 1617424 5683592 1617376 5683520 1617344 5683488 +1617080 5683560 1613632 5687000 1615264 5689048 1617368 5683680 +1615264 5689048 1615352 5689088 1617368 5683680 1613632 5687000 +1617080 5683560 1617368 5683680 1617344 5683488 1617120 5683488 +1613632 5687000 1614472 5688520 1615264 5689048 1617368 5683680 +1615352 5689088 1617368 5683680 1615264 5689048 1615304 5689072 +1617080 5683560 1613592 5686944 1613632 5687000 1617368 5683680 +1617368 5683680 1615488 5689272 1617424 5683648 1617424 5683592 +1617424 5683648 1617368 5683680 1615488 5689272 1622936 5692376 +1615352 5689088 1615392 5689120 1617368 5683680 1615264 5689048 +1617368 5683680 1617344 5683488 1617080 5683560 1613632 5687000 +1617368 5683680 1617328 5683704 1613632 5687000 1615264 5689048 +1617368 5683680 1617328 5683704 1615264 5689048 1615352 5689088 +1617328 5683704 1613632 5687000 1615264 5689048 1615352 5689088 +1613632 5687000 1614472 5688520 1615264 5689048 1617328 5683704 +1615264 5689048 1615304 5689072 1615352 5689088 1617328 5683704 +1613632 5687000 1617328 5683704 1617080 5683560 1613592 5686944 +1617368 5683680 1617328 5683704 1615352 5689088 1615392 5689120 +1617328 5683704 1615264 5689048 1615352 5689088 1615392 5689120 +1617368 5683680 1617328 5683704 1615392 5689120 1615440 5689168 +1617368 5683680 1617328 5683704 1615440 5689168 1615488 5689272 +1617328 5683704 1615392 5689120 1615440 5689168 1615488 5689272 +1617368 5683680 1617328 5683704 1615488 5689272 1617424 5683648 +1617328 5683704 1615440 5689168 1615488 5689272 1617424 5683648 +1615488 5689272 1622936 5692376 1617424 5683648 1617328 5683704 +1617328 5683704 1615352 5689088 1615392 5689120 1615440 5689168 +1617368 5683680 1617080 5683560 1617328 5683704 1617424 5683648 +1617080 5683560 1617328 5683704 1617368 5683680 1617344 5683488 +1617368 5683680 1617376 5683520 1617344 5683488 1617328 5683704 +1617368 5683680 1617424 5683592 1617376 5683520 1617328 5683704 +1617080 5683560 1617328 5683704 1617344 5683488 1617120 5683488 +1617344 5683488 1617256 5683416 1617120 5683488 1617328 5683704 +1617328 5683704 1617424 5683648 1617368 5683680 1617376 5683520 +1617344 5683488 1617120 5683488 1617328 5683704 1617376 5683520 +1617328 5683704 1617080 5683560 1613632 5687000 1615264 5689048 +1617080 5683560 1613632 5687000 1617328 5683704 1617120 5683488 +1613632 5687000 1617280 5683720 1617080 5683560 1613592 5686944 +1617328 5683704 1617280 5683720 1613632 5687000 1615264 5689048 +1617328 5683704 1617280 5683720 1615264 5689048 1615352 5689088 +1617328 5683704 1617280 5683720 1615352 5689088 1615392 5689120 +1617280 5683720 1615264 5689048 1615352 5689088 1615392 5689120 +1613632 5687000 1614472 5688520 1615264 5689048 1617280 5683720 +1615264 5689048 1615304 5689072 1615352 5689088 1617280 5683720 +1617328 5683704 1617280 5683720 1615392 5689120 1615440 5689168 +1617280 5683720 1615352 5689088 1615392 5689120 1615440 5689168 +1617328 5683704 1617280 5683720 1615440 5689168 1615488 5689272 +1617280 5683720 1613632 5687000 1615264 5689048 1615352 5689088 +1617328 5683704 1617080 5683560 1617280 5683720 1615440 5689168 +1617080 5683560 1617280 5683720 1617328 5683704 1617120 5683488 +1617328 5683704 1617344 5683488 1617120 5683488 1617280 5683720 +1617344 5683488 1617256 5683416 1617120 5683488 1617280 5683720 +1617328 5683704 1617376 5683520 1617344 5683488 1617280 5683720 +1617280 5683720 1615440 5689168 1617328 5683704 1617344 5683488 +1617120 5683488 1617080 5683560 1617280 5683720 1617344 5683488 +1617280 5683720 1617080 5683560 1613632 5687000 1615264 5689048 +1617080 5683560 1613632 5687000 1617280 5683720 1617120 5683488 +1613632 5687000 1617248 5683720 1617080 5683560 1613592 5686944 +1613632 5687000 1617248 5683720 1613592 5686944 1613600 5686968 +1617080 5683560 1615080 5682560 1613592 5686944 1617248 5683720 +1617280 5683720 1617248 5683720 1613632 5687000 1615264 5689048 +1613632 5687000 1614472 5688520 1615264 5689048 1617248 5683720 +1617280 5683720 1617248 5683720 1615264 5689048 1615352 5689088 +1617280 5683720 1617248 5683720 1615352 5689088 1615392 5689120 +1617280 5683720 1617248 5683720 1615392 5689120 1615440 5689168 +1615264 5689048 1615304 5689072 1615352 5689088 1617248 5683720 +1617248 5683720 1615264 5689048 1615352 5689088 1615392 5689120 +1617248 5683720 1613632 5687000 1615264 5689048 1615352 5689088 +1617280 5683720 1617080 5683560 1617248 5683720 1615392 5689120 +1617080 5683560 1617248 5683720 1617280 5683720 1617120 5683488 +1617280 5683720 1617344 5683488 1617120 5683488 1617248 5683720 +1617344 5683488 1617256 5683416 1617120 5683488 1617248 5683720 +1617280 5683720 1617328 5683704 1617344 5683488 1617248 5683720 +1617328 5683704 1617376 5683520 1617344 5683488 1617248 5683720 +1617344 5683488 1617120 5683488 1617248 5683720 1617328 5683704 +1617248 5683720 1615392 5689120 1617280 5683720 1617328 5683704 +1617120 5683488 1617080 5683560 1617248 5683720 1617344 5683488 +1613632 5687000 1615264 5689048 1617248 5683720 1613592 5686944 +1617248 5683720 1617120 5683488 1617080 5683560 1613592 5686944 +1613592 5686944 1617168 5683704 1617080 5683560 1615080 5682560 +1617080 5683560 1615168 5682552 1615080 5682560 1617168 5683704 +1613592 5686944 1617168 5683704 1615080 5682560 1612664 5685288 +1615080 5682560 1614944 5682560 1612664 5685288 1617168 5683704 +1613592 5686944 1617168 5683704 1612664 5685288 1613536 5686904 +1617168 5683704 1617080 5683560 1615080 5682560 1612664 5685288 +1617248 5683720 1617168 5683704 1613592 5686944 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1617168 5683704 +1617248 5683720 1617168 5683704 1613632 5687000 1615264 5689048 +1613632 5687000 1614472 5688520 1615264 5689048 1617168 5683704 +1613632 5687000 1613640 5687040 1614472 5688520 1617168 5683704 +1614472 5688520 1615168 5689016 1615264 5689048 1617168 5683704 +1617168 5683704 1613592 5686944 1613632 5687000 1614472 5688520 +1617248 5683720 1617168 5683704 1615264 5689048 1615352 5689088 +1615264 5689048 1615304 5689072 1615352 5689088 1617168 5683704 +1617248 5683720 1617168 5683704 1615352 5689088 1615392 5689120 +1615264 5689048 1615352 5689088 1617168 5683704 1614472 5688520 +1617248 5683720 1617080 5683560 1617168 5683704 1615352 5689088 +1617080 5683560 1617168 5683704 1617248 5683720 1617120 5683488 +1617248 5683720 1617344 5683488 1617120 5683488 1617168 5683704 +1617344 5683488 1617256 5683416 1617120 5683488 1617168 5683704 +1617248 5683720 1617328 5683704 1617344 5683488 1617168 5683704 +1617168 5683704 1615352 5689088 1617248 5683720 1617344 5683488 +1617120 5683488 1617080 5683560 1617168 5683704 1617344 5683488 +1613592 5686944 1613632 5687000 1617168 5683704 1612664 5685288 +1617168 5683704 1617120 5683488 1617080 5683560 1615080 5682560 +1617168 5683704 1617120 5683680 1612664 5685288 1613592 5686944 +1612664 5685288 1617120 5683680 1615080 5682560 1614944 5682560 +1612664 5685288 1613536 5686904 1613592 5686944 1617120 5683680 +1615080 5682560 1617120 5683680 1617168 5683704 1617080 5683560 +1615080 5682560 1617120 5683680 1617080 5683560 1615168 5682552 +1617120 5683680 1617168 5683704 1617080 5683560 1615168 5682552 +1617080 5683560 1615216 5682544 1615168 5682552 1617120 5683680 +1617080 5683560 1615248 5682520 1615216 5682544 1617120 5683680 +1615168 5682552 1615080 5682560 1617120 5683680 1615216 5682544 +1617080 5683560 1615216 5682544 1617120 5683680 1617168 5683704 +1617168 5683704 1617120 5683680 1613592 5686944 1613632 5687000 +1617120 5683680 1612664 5685288 1613592 5686944 1613632 5687000 +1613592 5686944 1613600 5686968 1613632 5687000 1617120 5683680 +1617168 5683704 1617120 5683680 1613632 5687000 1614472 5688520 +1617168 5683704 1617080 5683560 1617120 5683680 1613632 5687000 +1617168 5683704 1617120 5683488 1617080 5683560 1617120 5683680 +1617120 5683680 1615080 5682560 1612664 5685288 1613592 5686944 +1615080 5682560 1612664 5685288 1617120 5683680 1615168 5682552 +1615216 5682544 1617080 5683608 1617080 5683560 1615248 5682520 +1617080 5683560 1617080 5683608 1617120 5683680 1617168 5683704 +1617120 5683680 1617080 5683608 1615216 5682544 1615168 5682552 +1617120 5683680 1617080 5683608 1615168 5682552 1615080 5682560 +1617080 5683608 1615216 5682544 1615168 5682552 1615080 5682560 +1617080 5683560 1617080 5683608 1617168 5683704 1617120 5683488 +1617080 5683608 1615080 5682560 1617120 5683680 1617168 5683704 +1617120 5683680 1617080 5683608 1615080 5682560 1612664 5685288 +1617080 5683608 1617080 5683560 1615216 5682544 1615168 5682552 +1617080 5683560 1615216 5682544 1617080 5683608 1617168 5683704 +1663776 5646144 1625432 5687352 1630608 5692360 1663880 5646248 +1630608 5692360 1630704 5692448 1663880 5646248 1625432 5687352 +1630608 5692360 1625432 5687352 1617376 5683520 1630448 5692312 +1617376 5683520 1625432 5687352 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625432 5687352 +1617376 5683520 1625432 5687352 1657088 5639464 1617344 5683488 +1657088 5639464 1617256 5683416 1617344 5683488 1625432 5687352 +1657088 5639464 1615256 5682392 1617256 5683416 1625432 5687352 +1625432 5687352 1663776 5646144 1657088 5639464 1617256 5683416 +1617344 5683488 1617376 5683520 1625432 5687352 1617256 5683416 +1617376 5683520 1617424 5683592 1630448 5692312 1625432 5687352 +1630448 5692312 1630608 5692360 1625432 5687352 1617424 5683592 +1617424 5683592 1630232 5692312 1630448 5692312 1625432 5687352 +1630448 5692312 1630608 5692360 1625432 5687352 1630232 5692312 +1617424 5683592 1630232 5692312 1625432 5687352 1617376 5683520 +1617424 5683592 1624104 5692408 1630232 5692312 1625432 5687352 +1624104 5692408 1630136 5692352 1630232 5692312 1625432 5687352 +1624104 5692408 1629944 5692528 1630136 5692352 1625432 5687352 +1624104 5692408 1629840 5692680 1629944 5692528 1625432 5687352 +1630136 5692352 1630232 5692312 1625432 5687352 1629944 5692528 +1617424 5683592 1624104 5692408 1625432 5687352 1617376 5683520 +1630232 5692312 1630448 5692312 1625432 5687352 1630136 5692352 +1624104 5692408 1629944 5692528 1625432 5687352 1617424 5683592 +1617424 5683592 1617424 5683648 1624104 5692408 1625432 5687352 +1617424 5683592 1617424 5683648 1625432 5687352 1617376 5683520 +1624104 5692408 1629944 5692528 1625432 5687352 1617424 5683648 +1617424 5683648 1623032 5692344 1624104 5692408 1625432 5687352 +1623032 5692344 1624032 5692416 1624104 5692408 1625432 5687352 +1623032 5692344 1623136 5692368 1624032 5692416 1625432 5687352 +1624032 5692416 1624104 5692408 1625432 5687352 1623136 5692368 +1623136 5692368 1623448 5692552 1624032 5692416 1625432 5687352 +1617424 5683648 1623000 5692344 1623032 5692344 1625432 5687352 +1617424 5683648 1622936 5692376 1623000 5692344 1625432 5687352 +1623000 5692344 1623032 5692344 1625432 5687352 1622936 5692376 +1624104 5692408 1629944 5692528 1625432 5687352 1624032 5692416 +1617424 5683648 1622936 5692376 1625432 5687352 1617424 5683592 +1623032 5692344 1623136 5692368 1625432 5687352 1623000 5692344 +1617424 5683648 1615488 5689272 1622936 5692376 1625432 5687352 +1622936 5692376 1623000 5692344 1625432 5687352 1615488 5689272 +1615488 5689272 1615488 5689328 1622936 5692376 1625432 5687352 +1617424 5683648 1615488 5689272 1625432 5687352 1617424 5683592 +1617424 5683648 1617328 5683704 1615488 5689272 1625432 5687352 +1663776 5646144 1657088 5639464 1625432 5687352 1663880 5646248 +1625432 5687352 1630448 5692312 1630608 5692360 1663880 5646248 +1625432 5687352 1617344 5683488 1617376 5683520 1617424 5683592 +1625432 5687352 1625480 5687312 1663880 5646248 1663776 5646144 +1663880 5646248 1625480 5687312 1630608 5692360 1630704 5692448 +1625432 5687352 1625480 5687312 1663776 5646144 1657088 5639464 +1625480 5687312 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625480 5687312 +1625432 5687352 1625480 5687312 1657088 5639464 1617256 5683416 +1657088 5639464 1615256 5682392 1617256 5683416 1625480 5687312 +1625432 5687352 1625480 5687312 1617256 5683416 1617344 5683488 +1625480 5687312 1657088 5639464 1617256 5683416 1617344 5683488 +1625432 5687352 1625480 5687312 1617344 5683488 1617376 5683520 +1625480 5687312 1617256 5683416 1617344 5683488 1617376 5683520 +1625480 5687312 1663776 5646144 1657088 5639464 1617256 5683416 +1630608 5692360 1625480 5687312 1625432 5687352 1630448 5692312 +1625432 5687352 1630232 5692312 1630448 5692312 1625480 5687312 +1625432 5687352 1630136 5692352 1630232 5692312 1625480 5687312 +1625432 5687352 1629944 5692528 1630136 5692352 1625480 5687312 +1625432 5687352 1624104 5692408 1629944 5692528 1625480 5687312 +1630232 5692312 1630448 5692312 1625480 5687312 1630136 5692352 +1630136 5692352 1630232 5692312 1625480 5687312 1629944 5692528 +1630448 5692312 1630608 5692360 1625480 5687312 1630232 5692312 +1625432 5687352 1629944 5692528 1625480 5687312 1617376 5683520 +1625432 5687352 1625480 5687312 1617376 5683520 1617424 5683592 +1625480 5687312 1617344 5683488 1617376 5683520 1617424 5683592 +1625432 5687352 1625480 5687312 1617424 5683592 1617424 5683648 +1625432 5687352 1629944 5692528 1625480 5687312 1617424 5683592 +1625480 5687312 1630608 5692360 1663880 5646248 1663776 5646144 +1630608 5692360 1663880 5646248 1625480 5687312 1630448 5692312 +1663880 5646248 1625488 5687312 1630608 5692360 1630704 5692448 +1625480 5687312 1625488 5687312 1663880 5646248 1663776 5646144 +1625480 5687312 1625488 5687312 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625488 5687312 +1625480 5687312 1625488 5687312 1657088 5639464 1617256 5683416 +1625488 5687312 1663776 5646144 1657088 5639464 1617256 5683416 +1657088 5639464 1615256 5682392 1617256 5683416 1625488 5687312 +1625480 5687312 1625488 5687312 1617256 5683416 1617344 5683488 +1625480 5687312 1625488 5687312 1617344 5683488 1617376 5683520 +1625488 5687312 1617256 5683416 1617344 5683488 1617376 5683520 +1625480 5687312 1625488 5687312 1617376 5683520 1617424 5683592 +1625488 5687312 1657088 5639464 1617256 5683416 1617344 5683488 +1625488 5687312 1663880 5646248 1663776 5646144 1657088 5639464 +1625480 5687312 1630608 5692360 1625488 5687312 1617376 5683520 +1630608 5692360 1625488 5687312 1625480 5687312 1630448 5692312 +1625480 5687312 1630232 5692312 1630448 5692312 1625488 5687312 +1625480 5687312 1630136 5692352 1630232 5692312 1625488 5687312 +1625480 5687312 1629944 5692528 1630136 5692352 1625488 5687312 +1625480 5687312 1625432 5687352 1629944 5692528 1625488 5687312 +1625432 5687352 1624104 5692408 1629944 5692528 1625488 5687312 +1630136 5692352 1630232 5692312 1625488 5687312 1629944 5692528 +1629944 5692528 1630136 5692352 1625488 5687312 1625432 5687352 +1630232 5692312 1630448 5692312 1625488 5687312 1630136 5692352 +1625488 5687312 1617376 5683520 1625480 5687312 1625432 5687352 +1630448 5692312 1630608 5692360 1625488 5687312 1630232 5692312 +1625488 5687312 1630608 5692360 1663880 5646248 1663776 5646144 +1630608 5692360 1663880 5646248 1625488 5687312 1630448 5692312 +1663880 5646248 1625568 5687272 1630608 5692360 1630704 5692448 +1625488 5687312 1625568 5687272 1663880 5646248 1663776 5646144 +1625488 5687312 1625568 5687272 1663776 5646144 1657088 5639464 +1625488 5687312 1625568 5687272 1657088 5639464 1617256 5683416 +1657088 5639464 1615256 5682392 1617256 5683416 1625568 5687272 +1663776 5646144 1663688 5645984 1657088 5639464 1625568 5687272 +1625488 5687312 1625568 5687272 1617256 5683416 1617344 5683488 +1625568 5687272 1657088 5639464 1617256 5683416 1617344 5683488 +1625488 5687312 1625568 5687272 1617344 5683488 1617376 5683520 +1625488 5687312 1625568 5687272 1617376 5683520 1625480 5687312 +1625568 5687272 1617344 5683488 1617376 5683520 1625480 5687312 +1617376 5683520 1617424 5683592 1625480 5687312 1625568 5687272 +1625480 5687312 1625488 5687312 1625568 5687272 1617424 5683592 +1617376 5683520 1617424 5683592 1625568 5687272 1617344 5683488 +1625568 5687272 1617256 5683416 1617344 5683488 1617376 5683520 +1617424 5683592 1625432 5687352 1625480 5687312 1625568 5687272 +1625568 5687272 1663776 5646144 1657088 5639464 1617256 5683416 +1625568 5687272 1663880 5646248 1663776 5646144 1657088 5639464 +1625488 5687312 1630608 5692360 1625568 5687272 1625480 5687312 +1630608 5692360 1625568 5687272 1625488 5687312 1630448 5692312 +1625488 5687312 1630232 5692312 1630448 5692312 1625568 5687272 +1625488 5687312 1630136 5692352 1630232 5692312 1625568 5687272 +1625488 5687312 1629944 5692528 1630136 5692352 1625568 5687272 +1625488 5687312 1625432 5687352 1629944 5692528 1625568 5687272 +1625432 5687352 1624104 5692408 1629944 5692528 1625568 5687272 +1625488 5687312 1625480 5687312 1625432 5687352 1625568 5687272 +1629944 5692528 1630136 5692352 1625568 5687272 1625432 5687352 +1630136 5692352 1630232 5692312 1625568 5687272 1629944 5692528 +1630232 5692312 1630448 5692312 1625568 5687272 1630136 5692352 +1625568 5687272 1625480 5687312 1625488 5687312 1625432 5687352 +1630448 5692312 1630608 5692360 1625568 5687272 1630232 5692312 +1625568 5687272 1630608 5692360 1663880 5646248 1663776 5646144 +1630608 5692360 1663880 5646248 1625568 5687272 1630448 5692312 +1663880 5646248 1625656 5687248 1630608 5692360 1630704 5692448 +1625568 5687272 1625656 5687248 1663880 5646248 1663776 5646144 +1625568 5687272 1625656 5687248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625656 5687248 +1625568 5687272 1625656 5687248 1657088 5639464 1617256 5683416 +1625568 5687272 1625656 5687248 1617256 5683416 1617344 5683488 +1657088 5639464 1615256 5682392 1617256 5683416 1625656 5687248 +1625568 5687272 1625656 5687248 1617344 5683488 1617376 5683520 +1625656 5687248 1617256 5683416 1617344 5683488 1617376 5683520 +1625568 5687272 1625656 5687248 1617376 5683520 1617424 5683592 +1625568 5687272 1625656 5687248 1617424 5683592 1625480 5687312 +1625656 5687248 1617344 5683488 1617376 5683520 1617424 5683592 +1625656 5687248 1657088 5639464 1617256 5683416 1617344 5683488 +1625656 5687248 1663776 5646144 1657088 5639464 1617256 5683416 +1625656 5687248 1663880 5646248 1663776 5646144 1657088 5639464 +1625568 5687272 1630608 5692360 1625656 5687248 1617424 5683592 +1630608 5692360 1625656 5687248 1625568 5687272 1630448 5692312 +1625568 5687272 1630232 5692312 1630448 5692312 1625656 5687248 +1625568 5687272 1630136 5692352 1630232 5692312 1625656 5687248 +1625568 5687272 1629944 5692528 1630136 5692352 1625656 5687248 +1625568 5687272 1625432 5687352 1629944 5692528 1625656 5687248 +1625432 5687352 1624104 5692408 1629944 5692528 1625656 5687248 +1624104 5692408 1629840 5692680 1629944 5692528 1625656 5687248 +1625432 5687352 1624104 5692408 1625656 5687248 1625568 5687272 +1625568 5687272 1625488 5687312 1625432 5687352 1625656 5687248 +1625488 5687312 1625480 5687312 1625432 5687352 1625656 5687248 +1625432 5687352 1624104 5692408 1625656 5687248 1625488 5687312 +1625432 5687352 1624032 5692416 1624104 5692408 1625656 5687248 +1629944 5692528 1630136 5692352 1625656 5687248 1624104 5692408 +1630136 5692352 1630232 5692312 1625656 5687248 1629944 5692528 +1630232 5692312 1630448 5692312 1625656 5687248 1630136 5692352 +1625656 5687248 1617424 5683592 1625568 5687272 1625488 5687312 +1630448 5692312 1630608 5692360 1625656 5687248 1630232 5692312 +1625656 5687248 1630608 5692360 1663880 5646248 1663776 5646144 +1630608 5692360 1663880 5646248 1625656 5687248 1630448 5692312 +1663880 5646248 1625672 5687248 1630608 5692360 1630704 5692448 +1625656 5687248 1625672 5687248 1663880 5646248 1663776 5646144 +1625656 5687248 1625672 5687248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625672 5687248 +1625656 5687248 1625672 5687248 1657088 5639464 1617256 5683416 +1657088 5639464 1615256 5682392 1617256 5683416 1625672 5687248 +1625656 5687248 1625672 5687248 1617256 5683416 1617344 5683488 +1625656 5687248 1625672 5687248 1617344 5683488 1617376 5683520 +1625656 5687248 1625672 5687248 1617376 5683520 1617424 5683592 +1625672 5687248 1617256 5683416 1617344 5683488 1617376 5683520 +1625672 5687248 1657088 5639464 1617256 5683416 1617344 5683488 +1625672 5687248 1663776 5646144 1657088 5639464 1617256 5683416 +1625672 5687248 1663880 5646248 1663776 5646144 1657088 5639464 +1625656 5687248 1630608 5692360 1625672 5687248 1617376 5683520 +1630608 5692360 1625672 5687248 1625656 5687248 1630448 5692312 +1625656 5687248 1630232 5692312 1630448 5692312 1625672 5687248 +1625656 5687248 1630136 5692352 1630232 5692312 1625672 5687248 +1625656 5687248 1629944 5692528 1630136 5692352 1625672 5687248 +1625656 5687248 1624104 5692408 1629944 5692528 1625672 5687248 +1625656 5687248 1625432 5687352 1624104 5692408 1625672 5687248 +1624104 5692408 1629840 5692680 1629944 5692528 1625672 5687248 +1625656 5687248 1625488 5687312 1625432 5687352 1625672 5687248 +1625432 5687352 1624104 5692408 1625672 5687248 1625488 5687312 +1625488 5687312 1625480 5687312 1625432 5687352 1625672 5687248 +1625656 5687248 1625568 5687272 1625488 5687312 1625672 5687248 +1625488 5687312 1625432 5687352 1625672 5687248 1625568 5687272 +1625432 5687352 1624032 5692416 1624104 5692408 1625672 5687248 +1624104 5692408 1629944 5692528 1625672 5687248 1625432 5687352 +1629944 5692528 1630136 5692352 1625672 5687248 1624104 5692408 +1630136 5692352 1630232 5692312 1625672 5687248 1629944 5692528 +1630232 5692312 1630448 5692312 1625672 5687248 1630136 5692352 +1625672 5687248 1617376 5683520 1625656 5687248 1625568 5687272 +1630448 5692312 1630608 5692360 1625672 5687248 1630232 5692312 +1625672 5687248 1630608 5692360 1663880 5646248 1663776 5646144 +1630608 5692360 1663880 5646248 1625672 5687248 1630448 5692312 +1663880 5646248 1625736 5687272 1630608 5692360 1630704 5692448 +1625672 5687248 1625736 5687272 1663880 5646248 1663776 5646144 +1625672 5687248 1625736 5687272 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625736 5687272 +1625672 5687248 1625736 5687272 1657088 5639464 1617256 5683416 +1625736 5687272 1663880 5646248 1663776 5646144 1657088 5639464 +1625672 5687248 1630608 5692360 1625736 5687272 1657088 5639464 +1630608 5692360 1625736 5687272 1625672 5687248 1630448 5692312 +1625672 5687248 1630232 5692312 1630448 5692312 1625736 5687272 +1625672 5687248 1630136 5692352 1630232 5692312 1625736 5687272 +1625672 5687248 1629944 5692528 1630136 5692352 1625736 5687272 +1625672 5687248 1624104 5692408 1629944 5692528 1625736 5687272 +1624104 5692408 1629840 5692680 1629944 5692528 1625736 5687272 +1625672 5687248 1625432 5687352 1624104 5692408 1625736 5687272 +1625672 5687248 1625488 5687312 1625432 5687352 1625736 5687272 +1625488 5687312 1625480 5687312 1625432 5687352 1625736 5687272 +1625672 5687248 1625568 5687272 1625488 5687312 1625736 5687272 +1625488 5687312 1625432 5687352 1625736 5687272 1625568 5687272 +1625672 5687248 1625656 5687248 1625568 5687272 1625736 5687272 +1625568 5687272 1625488 5687312 1625736 5687272 1625656 5687248 +1625432 5687352 1624032 5692416 1624104 5692408 1625736 5687272 +1625432 5687352 1624104 5692408 1625736 5687272 1625488 5687312 +1624104 5692408 1629944 5692528 1625736 5687272 1625432 5687352 +1629944 5692528 1630136 5692352 1625736 5687272 1624104 5692408 +1630136 5692352 1630232 5692312 1625736 5687272 1629944 5692528 +1630232 5692312 1630448 5692312 1625736 5687272 1630136 5692352 +1625736 5687272 1657088 5639464 1625672 5687248 1625656 5687248 +1630448 5692312 1630608 5692360 1625736 5687272 1630232 5692312 +1625736 5687272 1630608 5692360 1663880 5646248 1663776 5646144 +1630608 5692360 1663880 5646248 1625736 5687272 1630448 5692312 +1663880 5646248 1625824 5687280 1630608 5692360 1630704 5692448 +1625736 5687272 1625824 5687280 1663880 5646248 1663776 5646144 +1625736 5687272 1625824 5687280 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625824 5687280 +1625736 5687272 1625824 5687280 1657088 5639464 1625672 5687248 +1657088 5639464 1617256 5683416 1625672 5687248 1625824 5687280 +1657088 5639464 1615256 5682392 1617256 5683416 1625824 5687280 +1617256 5683416 1617344 5683488 1625672 5687248 1625824 5687280 +1625672 5687248 1625736 5687272 1625824 5687280 1617256 5683416 +1625824 5687280 1663776 5646144 1657088 5639464 1617256 5683416 +1625824 5687280 1663880 5646248 1663776 5646144 1657088 5639464 +1625736 5687272 1630608 5692360 1625824 5687280 1625672 5687248 +1630608 5692360 1625824 5687280 1625736 5687272 1630448 5692312 +1625736 5687272 1630232 5692312 1630448 5692312 1625824 5687280 +1625736 5687272 1630136 5692352 1630232 5692312 1625824 5687280 +1625736 5687272 1629944 5692528 1630136 5692352 1625824 5687280 +1625736 5687272 1624104 5692408 1629944 5692528 1625824 5687280 +1624104 5692408 1629840 5692680 1629944 5692528 1625824 5687280 +1625736 5687272 1625432 5687352 1624104 5692408 1625824 5687280 +1625432 5687352 1624032 5692416 1624104 5692408 1625824 5687280 +1625736 5687272 1625488 5687312 1625432 5687352 1625824 5687280 +1624104 5692408 1629944 5692528 1625824 5687280 1625432 5687352 +1629944 5692528 1630136 5692352 1625824 5687280 1624104 5692408 +1630136 5692352 1630232 5692312 1625824 5687280 1629944 5692528 +1630232 5692312 1630448 5692312 1625824 5687280 1630136 5692352 +1630608 5692360 1663880 5646248 1625824 5687280 1630448 5692312 +1625824 5687280 1625672 5687248 1625736 5687272 1625432 5687352 +1630448 5692312 1630608 5692360 1625824 5687280 1630232 5692312 +1625824 5687280 1630608 5692360 1663880 5646248 1663776 5646144 +1663880 5646248 1625856 5687296 1630608 5692360 1630704 5692448 +1630608 5692360 1625856 5687296 1625824 5687280 1630448 5692312 +1630608 5692360 1663880 5646248 1625856 5687296 1630448 5692312 +1625824 5687280 1630232 5692312 1630448 5692312 1625856 5687296 +1625824 5687280 1630136 5692352 1630232 5692312 1625856 5687296 +1625824 5687280 1629944 5692528 1630136 5692352 1625856 5687296 +1625824 5687280 1624104 5692408 1629944 5692528 1625856 5687296 +1624104 5692408 1629840 5692680 1629944 5692528 1625856 5687296 +1625824 5687280 1625432 5687352 1624104 5692408 1625856 5687296 +1625432 5687352 1624032 5692416 1624104 5692408 1625856 5687296 +1625824 5687280 1625736 5687272 1625432 5687352 1625856 5687296 +1625736 5687272 1625488 5687312 1625432 5687352 1625856 5687296 +1625432 5687352 1624104 5692408 1625856 5687296 1625736 5687272 +1624104 5692408 1629944 5692528 1625856 5687296 1625432 5687352 +1629944 5692528 1630136 5692352 1625856 5687296 1624104 5692408 +1630136 5692352 1630232 5692312 1625856 5687296 1629944 5692528 +1630448 5692312 1630608 5692360 1625856 5687296 1630232 5692312 +1630232 5692312 1630448 5692312 1625856 5687296 1630136 5692352 +1625824 5687280 1625856 5687296 1663880 5646248 1663776 5646144 +1625824 5687280 1625856 5687296 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1625856 5687296 +1625824 5687280 1625856 5687296 1657088 5639464 1617256 5683416 +1625856 5687296 1663880 5646248 1663776 5646144 1657088 5639464 +1625856 5687296 1657088 5639464 1625824 5687280 1625736 5687272 +1625856 5687296 1630608 5692360 1663880 5646248 1663776 5646144 +1663880 5646248 1625904 5687328 1630608 5692360 1630704 5692448 +1630608 5692360 1625904 5687328 1625856 5687296 1630448 5692312 +1625856 5687296 1630232 5692312 1630448 5692312 1625904 5687328 +1630448 5692312 1630608 5692360 1625904 5687328 1630232 5692312 +1625904 5687328 1663880 5646248 1625856 5687296 1630232 5692312 +1630608 5692360 1663880 5646248 1625904 5687328 1630448 5692312 +1625856 5687296 1630136 5692352 1630232 5692312 1625904 5687328 +1625856 5687296 1629944 5692528 1630136 5692352 1625904 5687328 +1625856 5687296 1624104 5692408 1629944 5692528 1625904 5687328 +1624104 5692408 1629840 5692680 1629944 5692528 1625904 5687328 +1625856 5687296 1625432 5687352 1624104 5692408 1625904 5687328 +1625432 5687352 1624032 5692416 1624104 5692408 1625904 5687328 +1625856 5687296 1625736 5687272 1625432 5687352 1625904 5687328 +1625736 5687272 1625488 5687312 1625432 5687352 1625904 5687328 +1625856 5687296 1625824 5687280 1625736 5687272 1625904 5687328 +1625432 5687352 1624104 5692408 1625904 5687328 1625736 5687272 +1624104 5692408 1629944 5692528 1625904 5687328 1625432 5687352 +1629944 5692528 1630136 5692352 1625904 5687328 1624104 5692408 +1630232 5692312 1630448 5692312 1625904 5687328 1630136 5692352 +1625856 5687296 1625736 5687272 1625904 5687328 1663880 5646248 +1630136 5692352 1630232 5692312 1625904 5687328 1629944 5692528 +1625856 5687296 1625904 5687328 1663880 5646248 1663776 5646144 +1625856 5687296 1625736 5687272 1625904 5687328 1663776 5646144 +1625904 5687328 1630608 5692360 1663880 5646248 1663776 5646144 +1625856 5687296 1625904 5687328 1663776 5646144 1657088 5639464 +1663880 5646248 1625984 5687408 1630608 5692360 1630704 5692448 +1625904 5687328 1625984 5687408 1663880 5646248 1663776 5646144 +1630608 5692360 1625984 5687408 1625904 5687328 1630448 5692312 +1630608 5692360 1663880 5646248 1625984 5687408 1630448 5692312 +1625904 5687328 1630232 5692312 1630448 5692312 1625984 5687408 +1625904 5687328 1630136 5692352 1630232 5692312 1625984 5687408 +1630232 5692312 1630448 5692312 1625984 5687408 1630136 5692352 +1625984 5687408 1663880 5646248 1625904 5687328 1630136 5692352 +1630448 5692312 1630608 5692360 1625984 5687408 1630232 5692312 +1625904 5687328 1629944 5692528 1630136 5692352 1625984 5687408 +1625904 5687328 1624104 5692408 1629944 5692528 1625984 5687408 +1624104 5692408 1629840 5692680 1629944 5692528 1625984 5687408 +1625904 5687328 1625432 5687352 1624104 5692408 1625984 5687408 +1625432 5687352 1624032 5692416 1624104 5692408 1625984 5687408 +1625904 5687328 1625736 5687272 1625432 5687352 1625984 5687408 +1625736 5687272 1625488 5687312 1625432 5687352 1625984 5687408 +1625904 5687328 1625856 5687296 1625736 5687272 1625984 5687408 +1625432 5687352 1624104 5692408 1625984 5687408 1625736 5687272 +1624104 5692408 1629944 5692528 1625984 5687408 1625432 5687352 +1630136 5692352 1630232 5692312 1625984 5687408 1629944 5692528 +1625904 5687328 1625736 5687272 1625984 5687408 1663880 5646248 +1629944 5692528 1630136 5692352 1625984 5687408 1624104 5692408 +1625984 5687408 1626016 5687448 1630136 5692352 1630232 5692312 +1625984 5687408 1629944 5692528 1626016 5687448 1630232 5692312 +1626016 5687448 1629944 5692528 1630136 5692352 1630232 5692312 +1625984 5687408 1626016 5687448 1630232 5692312 1630448 5692312 +1625984 5687408 1629944 5692528 1626016 5687448 1630448 5692312 +1626016 5687448 1630136 5692352 1630232 5692312 1630448 5692312 +1625984 5687408 1626016 5687448 1630448 5692312 1630608 5692360 +1625984 5687408 1629944 5692528 1626016 5687448 1630608 5692360 +1625984 5687408 1626016 5687448 1630608 5692360 1663880 5646248 +1625984 5687408 1629944 5692528 1626016 5687448 1663880 5646248 +1630608 5692360 1630704 5692448 1663880 5646248 1626016 5687448 +1626016 5687448 1630232 5692312 1630448 5692312 1630608 5692360 +1626016 5687448 1630448 5692312 1630608 5692360 1663880 5646248 +1625984 5687408 1626016 5687448 1663880 5646248 1625904 5687328 +1629944 5692528 1626016 5687448 1625984 5687408 1624104 5692408 +1626016 5687448 1663880 5646248 1625984 5687408 1624104 5692408 +1629944 5692528 1630136 5692352 1626016 5687448 1624104 5692408 +1629944 5692528 1626016 5687448 1624104 5692408 1629840 5692680 +1629944 5692528 1630136 5692352 1626016 5687448 1629840 5692680 +1624104 5692408 1624120 5692440 1629840 5692680 1626016 5687448 +1625984 5687408 1625432 5687352 1624104 5692408 1626016 5687448 +1625984 5687408 1625432 5687352 1626016 5687448 1663880 5646248 +1625432 5687352 1624032 5692416 1624104 5692408 1626016 5687448 +1625984 5687408 1625736 5687272 1625432 5687352 1626016 5687448 +1626016 5687448 1625432 5687352 1624104 5692408 1629840 5692680 +1629840 5692680 1626048 5687512 1624104 5692408 1624120 5692440 +1626016 5687448 1626048 5687512 1629840 5692680 1629944 5692528 +1626016 5687448 1624104 5692408 1626048 5687512 1629944 5692528 +1626016 5687448 1626048 5687512 1629944 5692528 1630136 5692352 +1626016 5687448 1626048 5687512 1630136 5692352 1630232 5692312 +1626016 5687448 1624104 5692408 1626048 5687512 1630232 5692312 +1626048 5687512 1629944 5692528 1630136 5692352 1630232 5692312 +1626048 5687512 1624104 5692408 1629840 5692680 1629944 5692528 +1626048 5687512 1629840 5692680 1629944 5692528 1630136 5692352 +1626016 5687448 1626048 5687512 1630232 5692312 1630448 5692312 +1626048 5687512 1630136 5692352 1630232 5692312 1630448 5692312 +1626016 5687448 1624104 5692408 1626048 5687512 1630448 5692312 +1626016 5687448 1626048 5687512 1630448 5692312 1630608 5692360 +1626016 5687448 1624104 5692408 1626048 5687512 1630608 5692360 +1626048 5687512 1630232 5692312 1630448 5692312 1630608 5692360 +1626016 5687448 1626048 5687512 1630608 5692360 1663880 5646248 +1624104 5692408 1626048 5687512 1626016 5687448 1625432 5687352 +1626048 5687512 1630608 5692360 1626016 5687448 1625432 5687352 +1624104 5692408 1629840 5692680 1626048 5687512 1625432 5687352 +1624104 5692408 1626048 5687512 1625432 5687352 1624032 5692416 +1626016 5687448 1625984 5687408 1625432 5687352 1626048 5687512 +1626016 5687448 1625984 5687408 1626048 5687512 1630608 5692360 +1625984 5687408 1625736 5687272 1625432 5687352 1626048 5687512 +1625736 5687272 1625488 5687312 1625432 5687352 1626048 5687512 +1625984 5687408 1625904 5687328 1625736 5687272 1626048 5687512 +1625984 5687408 1625736 5687272 1626048 5687512 1626016 5687448 +1625432 5687352 1624104 5692408 1626048 5687512 1625736 5687272 +1626048 5687512 1626064 5687560 1629840 5692680 1629944 5692528 +1626048 5687512 1624104 5692408 1626064 5687560 1629944 5692528 +1624104 5692408 1626064 5687560 1626048 5687512 1625432 5687352 +1626064 5687560 1629944 5692528 1626048 5687512 1625432 5687352 +1626064 5687560 1624104 5692408 1629840 5692680 1629944 5692528 +1624104 5692408 1629840 5692680 1626064 5687560 1625432 5687352 +1629840 5692680 1626064 5687560 1624104 5692408 1624120 5692440 +1626048 5687512 1626064 5687560 1629944 5692528 1630136 5692352 +1626048 5687512 1626064 5687560 1630136 5692352 1630232 5692312 +1626048 5687512 1626064 5687560 1630232 5692312 1630448 5692312 +1626064 5687560 1630136 5692352 1630232 5692312 1630448 5692312 +1626064 5687560 1629840 5692680 1629944 5692528 1630136 5692352 +1626048 5687512 1625432 5687352 1626064 5687560 1630448 5692312 +1626064 5687560 1629944 5692528 1630136 5692352 1630232 5692312 +1624104 5692408 1626064 5687560 1625432 5687352 1624032 5692416 +1626048 5687512 1626064 5687560 1630448 5692312 1630608 5692360 +1626064 5687560 1630232 5692312 1630448 5692312 1630608 5692360 +1626048 5687512 1625432 5687352 1626064 5687560 1630608 5692360 +1626048 5687512 1626064 5687560 1630608 5692360 1626016 5687448 +1626048 5687512 1625736 5687272 1625432 5687352 1626064 5687560 +1626048 5687512 1625736 5687272 1626064 5687560 1630608 5692360 +1625432 5687352 1624104 5692408 1626064 5687560 1625736 5687272 +1625736 5687272 1625488 5687312 1625432 5687352 1626064 5687560 +1626048 5687512 1625984 5687408 1625736 5687272 1626064 5687560 +1626048 5687512 1625984 5687408 1626064 5687560 1630608 5692360 +1625984 5687408 1625904 5687328 1625736 5687272 1626064 5687560 +1626048 5687512 1626016 5687448 1625984 5687408 1626064 5687560 +1625736 5687272 1625432 5687352 1626064 5687560 1625984 5687408 +1626064 5687560 1626096 5687632 1629840 5692680 1629944 5692528 +1626064 5687560 1626096 5687632 1629944 5692528 1630136 5692352 +1626096 5687632 1629840 5692680 1629944 5692528 1630136 5692352 +1626064 5687560 1624104 5692408 1626096 5687632 1630136 5692352 +1624104 5692408 1626096 5687632 1626064 5687560 1625432 5687352 +1626064 5687560 1625736 5687272 1625432 5687352 1626096 5687632 +1626096 5687632 1630136 5692352 1626064 5687560 1625432 5687352 +1626096 5687632 1624104 5692408 1629840 5692680 1629944 5692528 +1624104 5692408 1629840 5692680 1626096 5687632 1625432 5687352 +1629840 5692680 1626096 5687632 1624104 5692408 1624120 5692440 +1626064 5687560 1626096 5687632 1630136 5692352 1630232 5692312 +1626064 5687560 1626096 5687632 1630232 5692312 1630448 5692312 +1626064 5687560 1626096 5687632 1630448 5692312 1630608 5692360 +1626096 5687632 1630232 5692312 1630448 5692312 1630608 5692360 +1626096 5687632 1629944 5692528 1630136 5692352 1630232 5692312 +1626064 5687560 1625432 5687352 1626096 5687632 1630608 5692360 +1626096 5687632 1630136 5692352 1630232 5692312 1630448 5692312 +1624104 5692408 1626096 5687632 1625432 5687352 1624032 5692416 +1626064 5687560 1626096 5687632 1630608 5692360 1626048 5687512 +1626096 5687632 1630448 5692312 1630608 5692360 1626048 5687512 +1626064 5687560 1625432 5687352 1626096 5687632 1626048 5687512 +1630608 5692360 1626016 5687448 1626048 5687512 1626096 5687632 +1626096 5687632 1626096 5687664 1629840 5692680 1629944 5692528 +1626096 5687632 1626096 5687664 1629944 5692528 1630136 5692352 +1626096 5687632 1626096 5687664 1630136 5692352 1630232 5692312 +1626096 5687664 1629944 5692528 1630136 5692352 1630232 5692312 +1626096 5687664 1629840 5692680 1629944 5692528 1630136 5692352 +1626096 5687632 1624104 5692408 1626096 5687664 1630232 5692312 +1624104 5692408 1626096 5687664 1626096 5687632 1625432 5687352 +1626096 5687632 1626064 5687560 1625432 5687352 1626096 5687664 +1626064 5687560 1625736 5687272 1625432 5687352 1626096 5687664 +1626096 5687664 1630232 5692312 1626096 5687632 1626064 5687560 +1625432 5687352 1624104 5692408 1626096 5687664 1626064 5687560 +1626096 5687664 1624104 5692408 1629840 5692680 1629944 5692528 +1624104 5692408 1629840 5692680 1626096 5687664 1625432 5687352 +1629840 5692680 1626096 5687664 1624104 5692408 1624120 5692440 +1626096 5687632 1626096 5687664 1630232 5692312 1630448 5692312 +1626096 5687632 1626096 5687664 1630448 5692312 1630608 5692360 +1626096 5687664 1630136 5692352 1630232 5692312 1630448 5692312 +1626096 5687632 1626064 5687560 1626096 5687664 1630448 5692312 +1624104 5692408 1626096 5687664 1625432 5687352 1624032 5692416 +1625432 5687352 1626064 5687736 1626096 5687664 1626064 5687560 +1625432 5687352 1626064 5687736 1626064 5687560 1625736 5687272 +1626096 5687664 1626096 5687632 1626064 5687560 1626064 5687736 +1626064 5687736 1626096 5687664 1626064 5687560 1625736 5687272 +1626064 5687736 1624104 5692408 1626096 5687664 1626064 5687560 +1626096 5687664 1626064 5687736 1624104 5692408 1629840 5692680 +1626096 5687664 1626064 5687736 1629840 5692680 1629944 5692528 +1626096 5687664 1626064 5687736 1629944 5692528 1630136 5692352 +1626096 5687664 1626064 5687736 1630136 5692352 1630232 5692312 +1626096 5687664 1626064 5687736 1630232 5692312 1630448 5692312 +1626064 5687736 1629944 5692528 1630136 5692352 1630232 5692312 +1626064 5687736 1629840 5692680 1629944 5692528 1630136 5692352 +1626096 5687664 1626064 5687560 1626064 5687736 1630232 5692312 +1626064 5687736 1624104 5692408 1629840 5692680 1629944 5692528 +1626064 5687736 1625432 5687352 1624104 5692408 1629840 5692680 +1625432 5687352 1624104 5692408 1626064 5687736 1625736 5687272 +1624104 5692408 1624120 5692440 1629840 5692680 1626064 5687736 +1624104 5692408 1626064 5687736 1625432 5687352 1624032 5692416 +1625432 5687352 1626064 5687736 1625736 5687272 1625488 5687312 +1626064 5687560 1625984 5687408 1625736 5687272 1626064 5687736 +1625736 5687272 1625432 5687352 1626064 5687736 1625984 5687408 +1626064 5687560 1625984 5687408 1626064 5687736 1626096 5687664 +1625984 5687408 1625904 5687328 1625736 5687272 1626064 5687736 +1626064 5687560 1626048 5687512 1625984 5687408 1626064 5687736 +1626064 5687560 1626048 5687512 1626064 5687736 1626096 5687664 +1626048 5687512 1626016 5687448 1625984 5687408 1626064 5687736 +1625984 5687408 1625736 5687272 1626064 5687736 1626048 5687512 +1626064 5687736 1626040 5687760 1624104 5692408 1629840 5692680 +1626064 5687736 1626040 5687760 1629840 5692680 1629944 5692528 +1626064 5687736 1626040 5687760 1629944 5692528 1630136 5692352 +1626064 5687736 1626040 5687760 1630136 5692352 1630232 5692312 +1626040 5687760 1629840 5692680 1629944 5692528 1630136 5692352 +1626040 5687760 1624104 5692408 1629840 5692680 1629944 5692528 +1626064 5687736 1625432 5687352 1626040 5687760 1630136 5692352 +1625432 5687352 1626040 5687760 1626064 5687736 1625736 5687272 +1626064 5687736 1625984 5687408 1625736 5687272 1626040 5687760 +1626040 5687760 1630136 5692352 1626064 5687736 1625984 5687408 +1625736 5687272 1625432 5687352 1626040 5687760 1625984 5687408 +1626040 5687760 1625432 5687352 1624104 5692408 1629840 5692680 +1625432 5687352 1624104 5692408 1626040 5687760 1625736 5687272 +1624104 5692408 1624120 5692440 1629840 5692680 1626040 5687760 +1624104 5692408 1626040 5687760 1625432 5687352 1624032 5692416 +1625432 5687352 1626040 5687760 1625736 5687272 1625488 5687312 +1625984 5687408 1625904 5687328 1625736 5687272 1626040 5687760 +1626064 5687736 1626048 5687512 1625984 5687408 1626040 5687760 +1625984 5687408 1625736 5687272 1626040 5687760 1626048 5687512 +1626064 5687736 1626048 5687512 1626040 5687760 1630136 5692352 +1626064 5687736 1626064 5687560 1626048 5687512 1626040 5687760 +1626064 5687736 1626096 5687664 1626064 5687560 1626040 5687760 +1626064 5687736 1626064 5687560 1626040 5687760 1630136 5692352 +1626048 5687512 1626016 5687448 1625984 5687408 1626040 5687760 +1626048 5687512 1625984 5687408 1626040 5687760 1626064 5687560 +1626040 5687760 1626000 5687776 1624104 5692408 1629840 5692680 +1626040 5687760 1626000 5687776 1629840 5692680 1629944 5692528 +1626040 5687760 1626000 5687776 1629944 5692528 1630136 5692352 +1626000 5687776 1624104 5692408 1629840 5692680 1629944 5692528 +1626040 5687760 1625432 5687352 1626000 5687776 1629944 5692528 +1625432 5687352 1626000 5687776 1626040 5687760 1625736 5687272 +1626040 5687760 1625984 5687408 1625736 5687272 1626000 5687776 +1626040 5687760 1626048 5687512 1625984 5687408 1626000 5687776 +1625984 5687408 1625736 5687272 1626000 5687776 1626048 5687512 +1626000 5687776 1629944 5692528 1626040 5687760 1626048 5687512 +1625736 5687272 1625432 5687352 1626000 5687776 1625984 5687408 +1626000 5687776 1625432 5687352 1624104 5692408 1629840 5692680 +1625432 5687352 1624104 5692408 1626000 5687776 1625736 5687272 +1624104 5692408 1624120 5692440 1629840 5692680 1626000 5687776 +1624104 5692408 1626000 5687776 1625432 5687352 1624032 5692416 +1625432 5687352 1626000 5687776 1625736 5687272 1625488 5687312 +1625984 5687408 1625904 5687328 1625736 5687272 1626000 5687776 +1626048 5687512 1626016 5687448 1625984 5687408 1626000 5687776 +1626048 5687512 1626016 5687448 1626000 5687776 1626040 5687760 +1625984 5687408 1625736 5687272 1626000 5687776 1626016 5687448 +1626040 5687760 1626064 5687560 1626048 5687512 1626000 5687776 +1626048 5687512 1626016 5687448 1626000 5687776 1626064 5687560 +1626040 5687760 1626064 5687560 1626000 5687776 1629944 5692528 +1626040 5687760 1626064 5687736 1626064 5687560 1626000 5687776 +1626064 5687736 1626096 5687664 1626064 5687560 1626000 5687776 +1626096 5687664 1626096 5687632 1626064 5687560 1626000 5687776 +1626096 5687664 1626096 5687632 1626000 5687776 1626064 5687736 +1626040 5687760 1626064 5687736 1626000 5687776 1629944 5692528 +1626064 5687736 1626096 5687664 1626000 5687776 1626040 5687760 +1626064 5687560 1626048 5687512 1626000 5687776 1626096 5687632 +1626000 5687776 1625968 5687784 1624104 5692408 1629840 5692680 +1625432 5687352 1625968 5687784 1626000 5687776 1625736 5687272 +1626000 5687776 1625984 5687408 1625736 5687272 1625968 5687784 +1626000 5687776 1626016 5687448 1625984 5687408 1625968 5687784 +1625984 5687408 1625736 5687272 1625968 5687784 1626016 5687448 +1625968 5687784 1624104 5692408 1626000 5687776 1626016 5687448 +1625736 5687272 1625432 5687352 1625968 5687784 1625984 5687408 +1625432 5687352 1624104 5692408 1625968 5687784 1625736 5687272 +1624104 5692408 1625968 5687784 1625432 5687352 1624032 5692416 +1625432 5687352 1625968 5687784 1625736 5687272 1625488 5687312 +1625968 5687784 1625984 5687408 1625736 5687272 1625488 5687312 +1625432 5687352 1624104 5692408 1625968 5687784 1625488 5687312 +1625736 5687272 1625568 5687272 1625488 5687312 1625968 5687784 +1625432 5687352 1625968 5687784 1625488 5687312 1625480 5687312 +1625984 5687408 1625904 5687328 1625736 5687272 1625968 5687784 +1625984 5687408 1625904 5687328 1625968 5687784 1626016 5687448 +1625736 5687272 1625488 5687312 1625968 5687784 1625904 5687328 +1625904 5687328 1625856 5687296 1625736 5687272 1625968 5687784 +1626000 5687776 1626048 5687512 1626016 5687448 1625968 5687784 +1626000 5687776 1626064 5687560 1626048 5687512 1625968 5687784 +1626016 5687448 1625984 5687408 1625968 5687784 1626048 5687512 +1626000 5687776 1626064 5687560 1625968 5687784 1624104 5692408 +1626048 5687512 1626016 5687448 1625968 5687784 1626064 5687560 +1626000 5687776 1626096 5687632 1626064 5687560 1625968 5687784 +1625968 5687784 1625936 5687776 1624104 5692408 1626000 5687776 +1625432 5687352 1625936 5687776 1625968 5687784 1625488 5687312 +1625936 5687776 1624104 5692408 1625968 5687784 1625488 5687312 +1625432 5687352 1624104 5692408 1625936 5687776 1625488 5687312 +1625432 5687352 1625936 5687776 1625488 5687312 1625480 5687312 +1624104 5692408 1625936 5687776 1625432 5687352 1624032 5692416 +1625968 5687784 1625736 5687272 1625488 5687312 1625936 5687776 +1625968 5687784 1625904 5687328 1625736 5687272 1625936 5687776 +1625968 5687784 1625904 5687328 1625936 5687776 1624104 5692408 +1625488 5687312 1625432 5687352 1625936 5687776 1625736 5687272 +1625736 5687272 1625568 5687272 1625488 5687312 1625936 5687776 +1625736 5687272 1625488 5687312 1625936 5687776 1625904 5687328 +1625904 5687328 1625856 5687296 1625736 5687272 1625936 5687776 +1625968 5687784 1625984 5687408 1625904 5687328 1625936 5687776 +1625968 5687784 1626016 5687448 1625984 5687408 1625936 5687776 +1625968 5687784 1626048 5687512 1626016 5687448 1625936 5687776 +1626016 5687448 1625984 5687408 1625936 5687776 1626048 5687512 +1625904 5687328 1625736 5687272 1625936 5687776 1625984 5687408 +1625968 5687784 1626048 5687512 1625936 5687776 1624104 5692408 +1625984 5687408 1625904 5687328 1625936 5687776 1626016 5687448 +1625968 5687784 1626064 5687560 1626048 5687512 1625936 5687776 +1625968 5687784 1626000 5687776 1626064 5687560 1625936 5687776 +1626048 5687512 1626016 5687448 1625936 5687776 1626064 5687560 +1625968 5687784 1626000 5687776 1625936 5687776 1624104 5692408 +1626064 5687560 1626048 5687512 1625936 5687776 1626000 5687776 +1626000 5687776 1626096 5687632 1626064 5687560 1625936 5687776 +1626000 5687776 1626096 5687632 1625936 5687776 1625968 5687784 +1626000 5687776 1626096 5687664 1626096 5687632 1625936 5687776 +1626000 5687776 1626096 5687664 1625936 5687776 1625968 5687784 +1626000 5687776 1626064 5687736 1626096 5687664 1625936 5687776 +1626000 5687776 1626064 5687736 1625936 5687776 1625968 5687784 +1626096 5687664 1626096 5687632 1625936 5687776 1626064 5687736 +1626000 5687776 1626040 5687760 1626064 5687736 1625936 5687776 +1626064 5687560 1626048 5687512 1625936 5687776 1626096 5687632 +1626096 5687632 1626064 5687560 1625936 5687776 1626096 5687664 +1625936 5687776 1625848 5687744 1624104 5692408 1625968 5687784 +1625432 5687352 1625848 5687744 1625936 5687776 1625488 5687312 +1625936 5687776 1625736 5687272 1625488 5687312 1625848 5687744 +1625848 5687744 1624104 5692408 1625936 5687776 1625736 5687272 +1625488 5687312 1625432 5687352 1625848 5687744 1625736 5687272 +1625432 5687352 1624104 5692408 1625848 5687744 1625488 5687312 +1625736 5687272 1625568 5687272 1625488 5687312 1625848 5687744 +1625432 5687352 1625848 5687744 1625488 5687312 1625480 5687312 +1624104 5692408 1625848 5687744 1625432 5687352 1624032 5692416 +1624104 5692408 1625936 5687776 1625848 5687744 1624032 5692416 +1625848 5687744 1625488 5687312 1625432 5687352 1624032 5692416 +1625432 5687352 1623136 5692368 1624032 5692416 1625848 5687744 +1625432 5687352 1623136 5692368 1625848 5687744 1625488 5687312 +1625432 5687352 1623032 5692344 1623136 5692368 1625848 5687744 +1625432 5687352 1623032 5692344 1625848 5687744 1625488 5687312 +1623136 5692368 1624032 5692416 1625848 5687744 1623032 5692344 +1623136 5692368 1623448 5692552 1624032 5692416 1625848 5687744 +1624032 5692416 1624104 5692408 1625848 5687744 1623136 5692368 +1625432 5687352 1623000 5692344 1623032 5692344 1625848 5687744 +1625936 5687776 1625904 5687328 1625736 5687272 1625848 5687744 +1625936 5687776 1625984 5687408 1625904 5687328 1625848 5687744 +1625736 5687272 1625488 5687312 1625848 5687744 1625904 5687328 +1625936 5687776 1625984 5687408 1625848 5687744 1624104 5692408 +1625904 5687328 1625736 5687272 1625848 5687744 1625984 5687408 +1625904 5687328 1625856 5687296 1625736 5687272 1625848 5687744 +1625936 5687776 1626016 5687448 1625984 5687408 1625848 5687744 +1625936 5687776 1626048 5687512 1626016 5687448 1625848 5687744 +1625936 5687776 1626064 5687560 1626048 5687512 1625848 5687744 +1626048 5687512 1626016 5687448 1625848 5687744 1626064 5687560 +1625984 5687408 1625904 5687328 1625848 5687744 1626016 5687448 +1625936 5687776 1626064 5687560 1625848 5687744 1624104 5692408 +1626016 5687448 1625984 5687408 1625848 5687744 1626048 5687512 +1625936 5687776 1626096 5687632 1626064 5687560 1625848 5687744 +1625432 5687352 1625760 5687704 1625848 5687744 1625488 5687312 +1625848 5687744 1625736 5687272 1625488 5687312 1625760 5687704 +1625848 5687744 1625904 5687328 1625736 5687272 1625760 5687704 +1625736 5687272 1625488 5687312 1625760 5687704 1625904 5687328 +1625760 5687704 1623032 5692344 1625848 5687744 1625904 5687328 +1625488 5687312 1625432 5687352 1625760 5687704 1625736 5687272 +1625432 5687352 1623032 5692344 1625760 5687704 1625488 5687312 +1625736 5687272 1625568 5687272 1625488 5687312 1625760 5687704 +1625736 5687272 1625568 5687272 1625760 5687704 1625904 5687328 +1625488 5687312 1625432 5687352 1625760 5687704 1625568 5687272 +1625432 5687352 1625760 5687704 1625488 5687312 1625480 5687312 +1625736 5687272 1625656 5687248 1625568 5687272 1625760 5687704 +1625848 5687744 1625760 5687704 1623032 5692344 1623136 5692368 +1625848 5687744 1625904 5687328 1625760 5687704 1623136 5692368 +1625760 5687704 1625432 5687352 1623032 5692344 1623136 5692368 +1625848 5687744 1625760 5687704 1623136 5692368 1624032 5692416 +1625848 5687744 1625904 5687328 1625760 5687704 1624032 5692416 +1625760 5687704 1623032 5692344 1623136 5692368 1624032 5692416 +1623136 5692368 1623448 5692552 1624032 5692416 1625760 5687704 +1625848 5687744 1625760 5687704 1624032 5692416 1624104 5692408 +1625848 5687744 1625760 5687704 1624104 5692408 1625936 5687776 +1625848 5687744 1625904 5687328 1625760 5687704 1624104 5692408 +1625760 5687704 1623136 5692368 1624032 5692416 1624104 5692408 +1623032 5692344 1625760 5687704 1625432 5687352 1623000 5692344 +1625848 5687744 1625984 5687408 1625904 5687328 1625760 5687704 +1625848 5687744 1626016 5687448 1625984 5687408 1625760 5687704 +1625904 5687328 1625736 5687272 1625760 5687704 1625984 5687408 +1625848 5687744 1626016 5687448 1625760 5687704 1624104 5692408 +1625984 5687408 1625904 5687328 1625760 5687704 1626016 5687448 +1625904 5687328 1625856 5687296 1625736 5687272 1625760 5687704 +1625904 5687328 1625856 5687296 1625760 5687704 1625984 5687408 +1625736 5687272 1625568 5687272 1625760 5687704 1625856 5687296 +1625856 5687296 1625824 5687280 1625736 5687272 1625760 5687704 +1625848 5687744 1626048 5687512 1626016 5687448 1625760 5687704 +1625848 5687744 1626064 5687560 1626048 5687512 1625760 5687704 +1626016 5687448 1625984 5687408 1625760 5687704 1626048 5687512 +1625848 5687744 1626048 5687512 1625760 5687704 1624104 5692408 +1625760 5687704 1625672 5687640 1623032 5692344 1623136 5692368 +1625760 5687704 1625432 5687352 1625672 5687640 1623136 5692368 +1625432 5687352 1625672 5687640 1625760 5687704 1625488 5687312 +1625760 5687704 1625568 5687272 1625488 5687312 1625672 5687640 +1625672 5687640 1623136 5692368 1625760 5687704 1625568 5687272 +1625488 5687312 1625432 5687352 1625672 5687640 1625568 5687272 +1625672 5687640 1625432 5687352 1623032 5692344 1623136 5692368 +1625432 5687352 1623032 5692344 1625672 5687640 1625488 5687312 +1625760 5687704 1625736 5687272 1625568 5687272 1625672 5687640 +1625760 5687704 1625856 5687296 1625736 5687272 1625672 5687640 +1625568 5687272 1625488 5687312 1625672 5687640 1625736 5687272 +1625760 5687704 1625856 5687296 1625672 5687640 1623136 5692368 +1625736 5687272 1625568 5687272 1625672 5687640 1625856 5687296 +1625432 5687352 1625672 5687640 1625488 5687312 1625480 5687312 +1625736 5687272 1625656 5687248 1625568 5687272 1625672 5687640 +1625760 5687704 1625672 5687640 1623136 5692368 1624032 5692416 +1625672 5687640 1623032 5692344 1623136 5692368 1624032 5692416 +1625760 5687704 1625856 5687296 1625672 5687640 1624032 5692416 +1625760 5687704 1625672 5687640 1624032 5692416 1624104 5692408 +1625760 5687704 1625856 5687296 1625672 5687640 1624104 5692408 +1625672 5687640 1623136 5692368 1624032 5692416 1624104 5692408 +1623136 5692368 1623448 5692552 1624032 5692416 1625672 5687640 +1625760 5687704 1625672 5687640 1624104 5692408 1625848 5687744 +1623032 5692344 1625672 5687640 1625432 5687352 1623000 5692344 +1625856 5687296 1625824 5687280 1625736 5687272 1625672 5687640 +1625760 5687704 1625904 5687328 1625856 5687296 1625672 5687640 +1625760 5687704 1625984 5687408 1625904 5687328 1625672 5687640 +1625856 5687296 1625736 5687272 1625672 5687640 1625904 5687328 +1625760 5687704 1625984 5687408 1625672 5687640 1624104 5692408 +1625760 5687704 1626016 5687448 1625984 5687408 1625672 5687640 +1625904 5687328 1625856 5687296 1625672 5687640 1625984 5687408 +1625672 5687640 1625576 5687568 1623032 5692344 1623136 5692368 +1625672 5687640 1625576 5687568 1623136 5692368 1624032 5692416 +1625576 5687568 1623032 5692344 1623136 5692368 1624032 5692416 +1625672 5687640 1625432 5687352 1625576 5687568 1624032 5692416 +1625432 5687352 1625576 5687568 1625672 5687640 1625488 5687312 +1625672 5687640 1625568 5687272 1625488 5687312 1625576 5687568 +1625672 5687640 1625736 5687272 1625568 5687272 1625576 5687568 +1625568 5687272 1625488 5687312 1625576 5687568 1625736 5687272 +1625576 5687568 1624032 5692416 1625672 5687640 1625736 5687272 +1625488 5687312 1625432 5687352 1625576 5687568 1625568 5687272 +1625576 5687568 1625432 5687352 1623032 5692344 1623136 5692368 +1625432 5687352 1623032 5692344 1625576 5687568 1625488 5687312 +1625672 5687640 1625856 5687296 1625736 5687272 1625576 5687568 +1625432 5687352 1625576 5687568 1625488 5687312 1625480 5687312 +1625736 5687272 1625656 5687248 1625568 5687272 1625576 5687568 +1625672 5687640 1625576 5687568 1624032 5692416 1624104 5692408 +1625576 5687568 1623136 5692368 1624032 5692416 1624104 5692408 +1625672 5687640 1625736 5687272 1625576 5687568 1624104 5692408 +1625672 5687640 1625576 5687568 1624104 5692408 1625760 5687704 +1623136 5692368 1623448 5692552 1624032 5692416 1625576 5687568 +1623032 5692344 1625576 5687568 1625432 5687352 1623000 5692344 +1623032 5692344 1623136 5692368 1625576 5687568 1623000 5692344 +1625576 5687568 1625488 5687312 1625432 5687352 1623000 5692344 +1625432 5687352 1622936 5692376 1623000 5692344 1625576 5687568 +1625432 5687352 1625520 5687512 1625576 5687568 1625488 5687312 +1625576 5687568 1625568 5687272 1625488 5687312 1625520 5687512 +1625576 5687568 1625736 5687272 1625568 5687272 1625520 5687512 +1625576 5687568 1625672 5687640 1625736 5687272 1625520 5687512 +1625568 5687272 1625488 5687312 1625520 5687512 1625736 5687272 +1625520 5687512 1623000 5692344 1625576 5687568 1625736 5687272 +1625488 5687312 1625432 5687352 1625520 5687512 1625568 5687272 +1625432 5687352 1623000 5692344 1625520 5687512 1625488 5687312 +1625432 5687352 1625520 5687512 1625488 5687312 1625480 5687312 +1625736 5687272 1625656 5687248 1625568 5687272 1625520 5687512 +1623000 5692344 1625520 5687512 1625432 5687352 1622936 5692376 +1625576 5687568 1625520 5687512 1623000 5692344 1623032 5692344 +1625576 5687568 1625520 5687512 1623032 5692344 1623136 5692368 +1625576 5687568 1625736 5687272 1625520 5687512 1623032 5692344 +1625520 5687512 1625432 5687352 1623000 5692344 1623032 5692344 +1625520 5687512 1625472 5687448 1623000 5692344 1623032 5692344 +1625520 5687512 1625432 5687352 1625472 5687448 1623032 5692344 +1625432 5687352 1625472 5687448 1625520 5687512 1625488 5687312 +1625520 5687512 1625568 5687272 1625488 5687312 1625472 5687448 +1625520 5687512 1625736 5687272 1625568 5687272 1625472 5687448 +1625472 5687448 1623032 5692344 1625520 5687512 1625568 5687272 +1625488 5687312 1625432 5687352 1625472 5687448 1625568 5687272 +1625472 5687448 1625432 5687352 1623000 5692344 1623032 5692344 +1625432 5687352 1623000 5692344 1625472 5687448 1625488 5687312 +1625432 5687352 1625472 5687448 1625488 5687312 1625480 5687312 +1623000 5692344 1625472 5687448 1625432 5687352 1622936 5692376 +1625520 5687512 1625472 5687448 1623032 5692344 1625576 5687568 +1625472 5687448 1625432 5687384 1623000 5692344 1623032 5692344 +1625432 5687352 1625432 5687384 1625472 5687448 1625488 5687312 +1625472 5687448 1625568 5687272 1625488 5687312 1625432 5687384 +1625432 5687384 1623000 5692344 1625472 5687448 1625488 5687312 +1625432 5687352 1623000 5692344 1625432 5687384 1625488 5687312 +1625432 5687352 1625432 5687384 1625488 5687312 1625480 5687312 +1623000 5692344 1625432 5687384 1625432 5687352 1622936 5692376 +1623000 5692344 1625472 5687448 1625432 5687384 1622936 5692376 +1625432 5687384 1625488 5687312 1625432 5687352 1622936 5692376 +1625432 5687352 1615488 5689272 1622936 5692376 1625432 5687384 +1625432 5687352 1615488 5689272 1625432 5687384 1625488 5687312 +1615488 5689272 1615488 5689328 1622936 5692376 1625432 5687384 +1622936 5692376 1623000 5692344 1625432 5687384 1615488 5689272 +1625432 5687352 1617424 5683648 1615488 5689272 1625432 5687384 +1625432 5687352 1617424 5683648 1625432 5687384 1625488 5687312 +1615488 5689272 1622936 5692376 1625432 5687384 1617424 5683648 +1625432 5687352 1617424 5683592 1617424 5683648 1625432 5687384 +1617424 5683648 1617328 5683704 1615488 5689272 1625432 5687384 +1625432 5687384 1621992 5687904 1615488 5689272 1622936 5692376 +1625432 5687384 1617424 5683648 1621992 5687904 1622936 5692376 +1621992 5687904 1617424 5683648 1615488 5689272 1622936 5692376 +1615488 5689272 1615488 5689328 1622936 5692376 1621992 5687904 +1615488 5689272 1615488 5689328 1621992 5687904 1617424 5683648 +1622936 5692376 1625432 5687384 1621992 5687904 1615488 5689328 +1615488 5689328 1618304 5694912 1622936 5692376 1621992 5687904 +1625432 5687384 1621992 5687904 1622936 5692376 1623000 5692344 +1625432 5687384 1621992 5687904 1623000 5692344 1625472 5687448 +1623000 5692344 1623032 5692344 1625472 5687448 1621992 5687904 +1623032 5692344 1625520 5687512 1625472 5687448 1621992 5687904 +1623032 5692344 1625520 5687512 1621992 5687904 1623000 5692344 +1625472 5687448 1625432 5687384 1621992 5687904 1625520 5687512 +1625432 5687384 1617424 5683648 1621992 5687904 1625472 5687448 +1621992 5687904 1615488 5689328 1622936 5692376 1623000 5692344 +1621992 5687904 1622936 5692376 1623000 5692344 1623032 5692344 +1623032 5692344 1625576 5687568 1625520 5687512 1621992 5687904 +1623032 5692344 1623136 5692368 1625576 5687568 1621992 5687904 +1623136 5692368 1624032 5692416 1625576 5687568 1621992 5687904 +1624032 5692416 1624104 5692408 1625576 5687568 1621992 5687904 +1624032 5692416 1624104 5692408 1621992 5687904 1623136 5692368 +1623136 5692368 1624032 5692416 1621992 5687904 1623032 5692344 +1625520 5687512 1625472 5687448 1621992 5687904 1625576 5687568 +1623032 5692344 1623136 5692368 1621992 5687904 1623000 5692344 +1624104 5692408 1625672 5687640 1625576 5687568 1621992 5687904 +1623136 5692368 1623448 5692552 1624032 5692416 1621992 5687904 +1625576 5687568 1625520 5687512 1621992 5687904 1624104 5692408 +1617424 5683648 1621992 5687904 1625432 5687384 1625432 5687352 +1621992 5687904 1625472 5687448 1625432 5687384 1625432 5687352 +1617424 5683648 1615488 5689272 1621992 5687904 1625432 5687352 +1617424 5683648 1621992 5687904 1625432 5687352 1617424 5683592 +1617424 5683648 1615488 5689272 1621992 5687904 1617424 5683592 +1625432 5687352 1625480 5687312 1617424 5683592 1621992 5687904 +1617424 5683592 1617424 5683648 1621992 5687904 1625480 5687312 +1621992 5687904 1625432 5687384 1625432 5687352 1625480 5687312 +1615488 5689272 1621992 5687904 1617424 5683648 1617328 5683704 +1615488 5689272 1615488 5689328 1621992 5687904 1617328 5683704 +1621992 5687904 1617424 5683592 1617424 5683648 1617328 5683704 +1615488 5689272 1621992 5687904 1617328 5683704 1615440 5689168 +1615488 5689272 1615488 5689328 1621992 5687904 1615440 5689168 +1617328 5683704 1617280 5683720 1615440 5689168 1621992 5687904 +1615440 5689168 1615488 5689272 1621992 5687904 1617280 5683720 +1617424 5683648 1617368 5683680 1617328 5683704 1621992 5687904 +1621992 5687904 1617424 5683648 1617328 5683704 1617280 5683720 +1617280 5683720 1615392 5689120 1615440 5689168 1621992 5687904 +1625480 5687312 1625568 5687272 1617424 5683592 1621992 5687904 +1625480 5687312 1622056 5687840 1621992 5687904 1625432 5687352 +1622056 5687840 1617424 5683592 1621992 5687904 1625432 5687352 +1625480 5687312 1617424 5683592 1622056 5687840 1625432 5687352 +1621992 5687904 1622056 5687840 1617424 5683592 1617424 5683648 +1621992 5687904 1625432 5687352 1622056 5687840 1617424 5683648 +1621992 5687904 1622056 5687840 1617424 5683648 1617328 5683704 +1622056 5687840 1625480 5687312 1617424 5683592 1617424 5683648 +1621992 5687904 1625432 5687384 1625432 5687352 1622056 5687840 +1621992 5687904 1625472 5687448 1625432 5687384 1622056 5687840 +1621992 5687904 1625520 5687512 1625472 5687448 1622056 5687840 +1621992 5687904 1625576 5687568 1625520 5687512 1622056 5687840 +1625520 5687512 1625472 5687448 1622056 5687840 1625576 5687568 +1625472 5687448 1625432 5687384 1622056 5687840 1625520 5687512 +1621992 5687904 1625576 5687568 1622056 5687840 1617424 5683648 +1625432 5687352 1625480 5687312 1622056 5687840 1625432 5687384 +1621992 5687904 1624104 5692408 1625576 5687568 1622056 5687840 +1621992 5687904 1624032 5692416 1624104 5692408 1622056 5687840 +1625576 5687568 1625520 5687512 1622056 5687840 1624104 5692408 +1621992 5687904 1624104 5692408 1622056 5687840 1617424 5683648 +1624104 5692408 1625672 5687640 1625576 5687568 1622056 5687840 +1625432 5687384 1625432 5687352 1622056 5687840 1625472 5687448 +1617424 5683592 1622056 5687840 1625480 5687312 1625568 5687272 +1622056 5687840 1622080 5687816 1617424 5683592 1617424 5683648 +1622056 5687840 1625480 5687312 1622080 5687816 1617424 5683648 +1625480 5687312 1622080 5687816 1622056 5687840 1625432 5687352 +1622080 5687816 1617424 5683648 1622056 5687840 1625432 5687352 +1622080 5687816 1625480 5687312 1617424 5683592 1617424 5683648 +1625480 5687312 1617424 5683592 1622080 5687816 1625432 5687352 +1622056 5687840 1625432 5687384 1625432 5687352 1622080 5687816 +1622056 5687840 1625432 5687384 1622080 5687816 1617424 5683648 +1625432 5687352 1625480 5687312 1622080 5687816 1625432 5687384 +1622056 5687840 1622080 5687816 1617424 5683648 1621992 5687904 +1622056 5687840 1625472 5687448 1625432 5687384 1622080 5687816 +1622056 5687840 1625520 5687512 1625472 5687448 1622080 5687816 +1622056 5687840 1625576 5687568 1625520 5687512 1622080 5687816 +1622056 5687840 1624104 5692408 1625576 5687568 1622080 5687816 +1625576 5687568 1625520 5687512 1622080 5687816 1624104 5692408 +1625520 5687512 1625472 5687448 1622080 5687816 1625576 5687568 +1622056 5687840 1624104 5692408 1622080 5687816 1617424 5683648 +1624104 5692408 1625672 5687640 1625576 5687568 1622080 5687816 +1625432 5687384 1625432 5687352 1622080 5687816 1625472 5687448 +1622056 5687840 1621992 5687904 1624104 5692408 1622080 5687816 +1625472 5687448 1625432 5687384 1622080 5687816 1625520 5687512 +1617424 5683592 1622080 5687816 1625480 5687312 1625568 5687272 +1622080 5687816 1622112 5687792 1617424 5683592 1617424 5683648 +1622080 5687816 1622112 5687792 1617424 5683648 1622056 5687840 +1622080 5687816 1625480 5687312 1622112 5687792 1617424 5683648 +1625480 5687312 1622112 5687792 1622080 5687816 1625432 5687352 +1622080 5687816 1625432 5687384 1625432 5687352 1622112 5687792 +1622112 5687792 1617424 5683648 1622080 5687816 1625432 5687384 +1625432 5687352 1625480 5687312 1622112 5687792 1625432 5687384 +1622112 5687792 1625480 5687312 1617424 5683592 1617424 5683648 +1625480 5687312 1617424 5683592 1622112 5687792 1625432 5687352 +1622080 5687816 1625472 5687448 1625432 5687384 1622112 5687792 +1625432 5687384 1625432 5687352 1622112 5687792 1625472 5687448 +1622080 5687816 1625472 5687448 1622112 5687792 1617424 5683648 +1622080 5687816 1625520 5687512 1625472 5687448 1622112 5687792 +1622080 5687816 1625576 5687568 1625520 5687512 1622112 5687792 +1622080 5687816 1624104 5692408 1625576 5687568 1622112 5687792 +1622080 5687816 1622056 5687840 1624104 5692408 1622112 5687792 +1624104 5692408 1625576 5687568 1622112 5687792 1622056 5687840 +1625576 5687568 1625520 5687512 1622112 5687792 1624104 5692408 +1622080 5687816 1622056 5687840 1622112 5687792 1617424 5683648 +1624104 5692408 1625672 5687640 1625576 5687568 1622112 5687792 +1625472 5687448 1625432 5687384 1622112 5687792 1625520 5687512 +1622056 5687840 1621992 5687904 1624104 5692408 1622112 5687792 +1621992 5687904 1624032 5692416 1624104 5692408 1622112 5687792 +1622056 5687840 1621992 5687904 1622112 5687792 1622080 5687816 +1624104 5692408 1625576 5687568 1622112 5687792 1621992 5687904 +1625520 5687512 1625472 5687448 1622112 5687792 1625576 5687568 +1617424 5683592 1622112 5687792 1625480 5687312 1625568 5687272 +1622112 5687792 1622160 5687776 1617424 5683592 1617424 5683648 +1622112 5687792 1622160 5687776 1617424 5683648 1622080 5687816 +1622112 5687792 1625480 5687312 1622160 5687776 1617424 5683648 +1625480 5687312 1622160 5687776 1622112 5687792 1625432 5687352 +1622112 5687792 1625432 5687384 1625432 5687352 1622160 5687776 +1622112 5687792 1625472 5687448 1625432 5687384 1622160 5687776 +1625432 5687384 1625432 5687352 1622160 5687776 1625472 5687448 +1622160 5687776 1617424 5683648 1622112 5687792 1625472 5687448 +1625432 5687352 1625480 5687312 1622160 5687776 1625432 5687384 +1622160 5687776 1625480 5687312 1617424 5683592 1617424 5683648 +1625480 5687312 1617424 5683592 1622160 5687776 1625432 5687352 +1622112 5687792 1625520 5687512 1625472 5687448 1622160 5687776 +1625472 5687448 1625432 5687384 1622160 5687776 1625520 5687512 +1622112 5687792 1625520 5687512 1622160 5687776 1617424 5683648 +1622112 5687792 1625576 5687568 1625520 5687512 1622160 5687776 +1622112 5687792 1624104 5692408 1625576 5687568 1622160 5687776 +1622112 5687792 1621992 5687904 1624104 5692408 1622160 5687776 +1621992 5687904 1624032 5692416 1624104 5692408 1622160 5687776 +1621992 5687904 1623136 5692368 1624032 5692416 1622160 5687776 +1624032 5692416 1624104 5692408 1622160 5687776 1623136 5692368 +1621992 5687904 1623032 5692344 1623136 5692368 1622160 5687776 +1623136 5692368 1624032 5692416 1622160 5687776 1623032 5692344 +1621992 5687904 1623000 5692344 1623032 5692344 1622160 5687776 +1621992 5687904 1623032 5692344 1622160 5687776 1622112 5687792 +1624104 5692408 1625576 5687568 1622160 5687776 1624032 5692416 +1622112 5687792 1621992 5687904 1622160 5687776 1617424 5683648 +1624104 5692408 1625672 5687640 1625576 5687568 1622160 5687776 +1623136 5692368 1623448 5692552 1624032 5692416 1622160 5687776 +1625520 5687512 1625472 5687448 1622160 5687776 1625576 5687568 +1622112 5687792 1622056 5687840 1621992 5687904 1622160 5687776 +1622112 5687792 1622080 5687816 1622056 5687840 1622160 5687776 +1621992 5687904 1623032 5692344 1622160 5687776 1622056 5687840 +1622112 5687792 1622080 5687816 1622160 5687776 1617424 5683648 +1622056 5687840 1621992 5687904 1622160 5687776 1622080 5687816 +1625576 5687568 1625520 5687512 1622160 5687776 1624104 5692408 +1617424 5683592 1622160 5687776 1625480 5687312 1625568 5687272 +1624104 5692408 1622200 5687776 1622160 5687776 1624032 5692416 +1622160 5687776 1623136 5692368 1624032 5692416 1622200 5687776 +1622160 5687776 1623032 5692344 1623136 5692368 1622200 5687776 +1623136 5692368 1624032 5692416 1622200 5687776 1623032 5692344 +1622160 5687776 1621992 5687904 1623032 5692344 1622200 5687776 +1623032 5692344 1623136 5692368 1622200 5687776 1621992 5687904 +1621992 5687904 1623000 5692344 1623032 5692344 1622200 5687776 +1622160 5687776 1622056 5687840 1621992 5687904 1622200 5687776 +1621992 5687904 1623032 5692344 1622200 5687776 1622056 5687840 +1624032 5692416 1624104 5692408 1622200 5687776 1623136 5692368 +1622200 5687776 1625576 5687568 1622160 5687776 1622056 5687840 +1624104 5692408 1625576 5687568 1622200 5687776 1624032 5692416 +1625576 5687568 1622200 5687776 1624104 5692408 1625672 5687640 +1623136 5692368 1623448 5692552 1624032 5692416 1622200 5687776 +1622160 5687776 1622080 5687816 1622056 5687840 1622200 5687776 +1622160 5687776 1622112 5687792 1622080 5687816 1622200 5687776 +1622056 5687840 1621992 5687904 1622200 5687776 1622080 5687816 +1622160 5687776 1622080 5687816 1622200 5687776 1625576 5687568 +1622160 5687776 1622200 5687776 1625576 5687568 1625520 5687512 +1622160 5687776 1622080 5687816 1622200 5687776 1625520 5687512 +1622200 5687776 1624104 5692408 1625576 5687568 1625520 5687512 +1622160 5687776 1622200 5687776 1625520 5687512 1625472 5687448 +1622160 5687776 1622200 5687776 1625472 5687448 1625432 5687384 +1622160 5687776 1622200 5687776 1625432 5687384 1625432 5687352 +1622200 5687776 1625472 5687448 1625432 5687384 1625432 5687352 +1622160 5687776 1622200 5687776 1625432 5687352 1625480 5687312 +1622200 5687776 1625432 5687384 1625432 5687352 1625480 5687312 +1622160 5687776 1622080 5687816 1622200 5687776 1625480 5687312 +1622160 5687776 1622200 5687776 1625480 5687312 1617424 5683592 +1622200 5687776 1625432 5687352 1625480 5687312 1617424 5683592 +1622160 5687776 1622200 5687776 1617424 5683592 1617424 5683648 +1622160 5687776 1622080 5687816 1622200 5687776 1617424 5683592 +1622200 5687776 1625520 5687512 1625472 5687448 1625432 5687384 +1622200 5687776 1625576 5687568 1625520 5687512 1625472 5687448 +1625480 5687312 1625568 5687272 1617424 5683592 1622200 5687776 +1622200 5687776 1622296 5687808 1625576 5687568 1625520 5687512 +1622200 5687776 1624104 5692408 1622296 5687808 1625520 5687512 +1624104 5692408 1622296 5687808 1622200 5687776 1624032 5692416 +1622200 5687776 1623136 5692368 1624032 5692416 1622296 5687808 +1622200 5687776 1623032 5692344 1623136 5692368 1622296 5687808 +1622200 5687776 1621992 5687904 1623032 5692344 1622296 5687808 +1623032 5692344 1623136 5692368 1622296 5687808 1621992 5687904 +1622200 5687776 1622056 5687840 1621992 5687904 1622296 5687808 +1621992 5687904 1623032 5692344 1622296 5687808 1622056 5687840 +1621992 5687904 1623000 5692344 1623032 5692344 1622296 5687808 +1623032 5692344 1623136 5692368 1622296 5687808 1623000 5692344 +1621992 5687904 1623000 5692344 1622296 5687808 1622056 5687840 +1622200 5687776 1622080 5687816 1622056 5687840 1622296 5687808 +1623136 5692368 1624032 5692416 1622296 5687808 1623032 5692344 +1622296 5687808 1625520 5687512 1622200 5687776 1622056 5687840 +1624104 5692408 1625576 5687568 1622296 5687808 1624032 5692416 +1624032 5692416 1624104 5692408 1622296 5687808 1623136 5692368 +1622296 5687808 1624104 5692408 1625576 5687568 1625520 5687512 +1625576 5687568 1622296 5687808 1624104 5692408 1625672 5687640 +1622296 5687808 1624032 5692416 1624104 5692408 1625672 5687640 +1625576 5687568 1625520 5687512 1622296 5687808 1625672 5687640 +1624104 5692408 1625760 5687704 1625672 5687640 1622296 5687808 +1623136 5692368 1623448 5692552 1624032 5692416 1622296 5687808 +1621992 5687904 1622936 5692376 1623000 5692344 1622296 5687808 +1622200 5687776 1622296 5687808 1625520 5687512 1625472 5687448 +1622296 5687808 1625576 5687568 1625520 5687512 1625472 5687448 +1622200 5687776 1622056 5687840 1622296 5687808 1625472 5687448 +1622200 5687776 1622296 5687808 1625472 5687448 1625432 5687384 +1622200 5687776 1622296 5687808 1625432 5687384 1625432 5687352 +1622200 5687776 1622296 5687808 1625432 5687352 1625480 5687312 +1622296 5687808 1625432 5687384 1625432 5687352 1625480 5687312 +1622200 5687776 1622296 5687808 1625480 5687312 1617424 5683592 +1622200 5687776 1622056 5687840 1622296 5687808 1625480 5687312 +1622296 5687808 1625472 5687448 1625432 5687384 1625432 5687352 +1622296 5687808 1625520 5687512 1625472 5687448 1625432 5687384 +1625480 5687312 1622304 5687800 1622296 5687808 1625432 5687352 +1622296 5687808 1625432 5687384 1625432 5687352 1622304 5687800 +1625432 5687352 1625480 5687312 1622304 5687800 1625432 5687384 +1622200 5687776 1622304 5687800 1625480 5687312 1617424 5683592 +1622304 5687800 1622200 5687776 1622296 5687808 1625432 5687384 +1625480 5687312 1622200 5687776 1622304 5687800 1625432 5687352 +1622296 5687808 1625472 5687448 1625432 5687384 1622304 5687800 +1625432 5687384 1625432 5687352 1622304 5687800 1625472 5687448 +1622296 5687808 1625472 5687448 1622304 5687800 1622200 5687776 +1622296 5687808 1625520 5687512 1625472 5687448 1622304 5687800 +1622296 5687808 1625576 5687568 1625520 5687512 1622304 5687800 +1622296 5687808 1625576 5687568 1622304 5687800 1622200 5687776 +1622296 5687808 1625672 5687640 1625576 5687568 1622304 5687800 +1625472 5687448 1625432 5687384 1622304 5687800 1625520 5687512 +1625520 5687512 1625472 5687448 1622304 5687800 1625576 5687568 +1624104 5692408 1622360 5687856 1622296 5687808 1624032 5692416 +1622296 5687808 1623136 5692368 1624032 5692416 1622360 5687856 +1622296 5687808 1623032 5692344 1623136 5692368 1622360 5687856 +1622296 5687808 1623000 5692344 1623032 5692344 1622360 5687856 +1622296 5687808 1621992 5687904 1623000 5692344 1622360 5687856 +1623000 5692344 1623032 5692344 1622360 5687856 1621992 5687904 +1622296 5687808 1622056 5687840 1621992 5687904 1622360 5687856 +1622296 5687808 1622200 5687776 1622056 5687840 1622360 5687856 +1621992 5687904 1623000 5692344 1622360 5687856 1622056 5687840 +1623032 5692344 1623136 5692368 1622360 5687856 1623000 5692344 +1624032 5692416 1624104 5692408 1622360 5687856 1623136 5692368 +1623136 5692368 1624032 5692416 1622360 5687856 1623032 5692344 +1622296 5687808 1622360 5687856 1625672 5687640 1625576 5687568 +1622296 5687808 1622360 5687856 1625576 5687568 1622304 5687800 +1625576 5687568 1625520 5687512 1622304 5687800 1622360 5687856 +1622304 5687800 1622296 5687808 1622360 5687856 1625520 5687512 +1622360 5687856 1625672 5687640 1625576 5687568 1625520 5687512 +1625672 5687640 1622360 5687856 1624104 5692408 1625760 5687704 +1623136 5692368 1623448 5692552 1624032 5692416 1622360 5687856 +1622360 5687856 1624104 5692408 1625672 5687640 1625576 5687568 +1624104 5692408 1625672 5687640 1622360 5687856 1624032 5692416 +1622360 5687856 1622304 5687800 1622296 5687808 1622056 5687840 +1621992 5687904 1622936 5692376 1623000 5692344 1622360 5687856 +1625520 5687512 1625472 5687448 1622304 5687800 1622360 5687856 +1625520 5687512 1625472 5687448 1622360 5687856 1625576 5687568 +1622304 5687800 1622296 5687808 1622360 5687856 1625472 5687448 +1625472 5687448 1625432 5687384 1622304 5687800 1622360 5687856 +1625432 5687384 1625432 5687352 1622304 5687800 1622360 5687856 +1625432 5687352 1625480 5687312 1622304 5687800 1622360 5687856 +1622304 5687800 1622296 5687808 1622360 5687856 1625432 5687352 +1625432 5687384 1625432 5687352 1622360 5687856 1625472 5687448 +1625472 5687448 1625432 5687384 1622360 5687856 1625520 5687512 +1622360 5687856 1622360 5687944 1623000 5692344 1623032 5692344 +1621992 5687904 1622360 5687944 1622360 5687856 1622056 5687840 +1622360 5687856 1622296 5687808 1622056 5687840 1622360 5687944 +1622296 5687808 1622200 5687776 1622056 5687840 1622360 5687944 +1622296 5687808 1622200 5687776 1622360 5687944 1622360 5687856 +1622056 5687840 1621992 5687904 1622360 5687944 1622200 5687776 +1622200 5687776 1622080 5687816 1622056 5687840 1622360 5687944 +1622200 5687776 1622080 5687816 1622360 5687944 1622296 5687808 +1622056 5687840 1621992 5687904 1622360 5687944 1622080 5687816 +1622360 5687856 1622360 5687944 1623032 5692344 1623136 5692368 +1622360 5687944 1623000 5692344 1623032 5692344 1623136 5692368 +1622360 5687856 1622360 5687944 1623136 5692368 1624032 5692416 +1622360 5687944 1623032 5692344 1623136 5692368 1624032 5692416 +1622360 5687856 1622360 5687944 1624032 5692416 1624104 5692408 +1622360 5687944 1623136 5692368 1624032 5692416 1624104 5692408 +1623136 5692368 1623448 5692552 1624032 5692416 1622360 5687944 +1622360 5687856 1622360 5687944 1624104 5692408 1625672 5687640 +1622360 5687944 1624032 5692416 1624104 5692408 1625672 5687640 +1624104 5692408 1625760 5687704 1625672 5687640 1622360 5687944 +1624104 5692408 1625760 5687704 1622360 5687944 1624032 5692416 +1622360 5687856 1622360 5687944 1625672 5687640 1625576 5687568 +1622360 5687856 1622360 5687944 1625576 5687568 1625520 5687512 +1622360 5687856 1622360 5687944 1625520 5687512 1625472 5687448 +1622360 5687944 1625576 5687568 1625520 5687512 1625472 5687448 +1622360 5687944 1625672 5687640 1625576 5687568 1625520 5687512 +1625672 5687640 1625576 5687568 1622360 5687944 1625760 5687704 +1622360 5687856 1622296 5687808 1622360 5687944 1625472 5687448 +1622360 5687856 1622304 5687800 1622296 5687808 1622360 5687944 +1622360 5687944 1621992 5687904 1623000 5692344 1623032 5692344 +1621992 5687904 1623000 5692344 1622360 5687944 1622056 5687840 +1623000 5692344 1622360 5687944 1621992 5687904 1622936 5692376 +1624104 5692408 1625848 5687744 1625760 5687704 1622360 5687944 +1622200 5687776 1622160 5687776 1622080 5687816 1622360 5687944 +1622360 5687856 1622360 5687944 1625472 5687448 1625432 5687384 +1622360 5687944 1625520 5687512 1625472 5687448 1625432 5687384 +1622360 5687856 1622296 5687808 1622360 5687944 1625432 5687384 +1622360 5687856 1622360 5687944 1625432 5687384 1625432 5687352 +1622360 5687944 1622296 5688016 1623000 5692344 1623032 5692344 +1622360 5687944 1622296 5688016 1623032 5692344 1623136 5692368 +1622360 5687944 1622296 5688016 1623136 5692368 1624032 5692416 +1622296 5688016 1623032 5692344 1623136 5692368 1624032 5692416 +1622360 5687944 1622296 5688016 1624032 5692416 1624104 5692408 +1622296 5688016 1623136 5692368 1624032 5692416 1624104 5692408 +1622360 5687944 1622296 5688016 1624104 5692408 1625760 5687704 +1622296 5688016 1624032 5692416 1624104 5692408 1625760 5687704 +1622360 5687944 1622296 5688016 1625760 5687704 1625672 5687640 +1622296 5688016 1624104 5692408 1625760 5687704 1625672 5687640 +1623136 5692368 1623448 5692552 1624032 5692416 1622296 5688016 +1622360 5687944 1622296 5688016 1625672 5687640 1625576 5687568 +1622296 5688016 1621992 5687904 1623000 5692344 1623032 5692344 +1622296 5688016 1623000 5692344 1623032 5692344 1623136 5692368 +1622360 5687944 1621992 5687904 1622296 5688016 1625672 5687640 +1621992 5687904 1622296 5688016 1622360 5687944 1622056 5687840 +1622360 5687944 1622080 5687816 1622056 5687840 1622296 5688016 +1622360 5687944 1622200 5687776 1622080 5687816 1622296 5688016 +1622360 5687944 1622296 5687808 1622200 5687776 1622296 5688016 +1622360 5687944 1622360 5687856 1622296 5687808 1622296 5688016 +1622080 5687816 1622056 5687840 1622296 5688016 1622200 5687776 +1622200 5687776 1622080 5687816 1622296 5688016 1622296 5687808 +1621992 5687904 1623000 5692344 1622296 5688016 1622056 5687840 +1622296 5688016 1625672 5687640 1622360 5687944 1622296 5687808 +1622056 5687840 1621992 5687904 1622296 5688016 1622080 5687816 +1623000 5692344 1622296 5688016 1621992 5687904 1622936 5692376 +1621992 5687904 1615488 5689328 1622936 5692376 1622296 5688016 +1623000 5692344 1623032 5692344 1622296 5688016 1622936 5692376 +1622296 5688016 1622056 5687840 1621992 5687904 1622936 5692376 +1624104 5692408 1625848 5687744 1625760 5687704 1622296 5688016 +1622200 5687776 1622160 5687776 1622080 5687816 1622296 5688016 +1622936 5692376 1622280 5688056 1621992 5687904 1615488 5689328 +1621992 5687904 1622280 5688056 1622296 5688016 1622056 5687840 +1622280 5688056 1622936 5692376 1622296 5688016 1622056 5687840 +1622296 5688016 1622080 5687816 1622056 5687840 1622280 5688056 +1621992 5687904 1622936 5692376 1622280 5688056 1622056 5687840 +1622296 5688016 1622280 5688056 1622936 5692376 1623000 5692344 +1622296 5688016 1622280 5688056 1623000 5692344 1623032 5692344 +1622296 5688016 1622056 5687840 1622280 5688056 1623032 5692344 +1622296 5688016 1622280 5688056 1623032 5692344 1623136 5692368 +1622296 5688016 1622280 5688056 1623136 5692368 1624032 5692416 +1622296 5688016 1622280 5688056 1624032 5692416 1624104 5692408 +1622280 5688056 1623136 5692368 1624032 5692416 1624104 5692408 +1622296 5688016 1622280 5688056 1624104 5692408 1625760 5687704 +1622280 5688056 1624032 5692416 1624104 5692408 1625760 5687704 +1622296 5688016 1622280 5688056 1625760 5687704 1625672 5687640 +1622280 5688056 1624104 5692408 1625760 5687704 1625672 5687640 +1622296 5688016 1622280 5688056 1625672 5687640 1622360 5687944 +1622280 5688056 1625760 5687704 1625672 5687640 1622360 5687944 +1623136 5692368 1623448 5692552 1624032 5692416 1622280 5688056 +1625672 5687640 1625576 5687568 1622360 5687944 1622280 5688056 +1625672 5687640 1625576 5687568 1622280 5688056 1625760 5687704 +1622360 5687944 1622296 5688016 1622280 5688056 1625576 5687568 +1625576 5687568 1625520 5687512 1622360 5687944 1622280 5688056 +1622280 5688056 1623000 5692344 1623032 5692344 1623136 5692368 +1622296 5688016 1622056 5687840 1622280 5688056 1622360 5687944 +1622280 5688056 1623032 5692344 1623136 5692368 1624032 5692416 +1622280 5688056 1621992 5687904 1622936 5692376 1623000 5692344 +1622280 5688056 1622936 5692376 1623000 5692344 1623032 5692344 +1624104 5692408 1625848 5687744 1625760 5687704 1622280 5688056 +1622936 5692376 1622240 5688080 1621992 5687904 1615488 5689328 +1622280 5688056 1622240 5688080 1622936 5692376 1623000 5692344 +1622280 5688056 1621992 5687904 1622240 5688080 1623000 5692344 +1621992 5687904 1622240 5688080 1622280 5688056 1622056 5687840 +1622280 5688056 1622296 5688016 1622056 5687840 1622240 5688080 +1622296 5688016 1622080 5687816 1622056 5687840 1622240 5688080 +1622240 5688080 1623000 5692344 1622280 5688056 1622296 5688016 +1622056 5687840 1621992 5687904 1622240 5688080 1622296 5688016 +1622240 5688080 1621992 5687904 1622936 5692376 1623000 5692344 +1621992 5687904 1622936 5692376 1622240 5688080 1622056 5687840 +1622280 5688056 1622240 5688080 1623000 5692344 1623032 5692344 +1622280 5688056 1622240 5688080 1623032 5692344 1623136 5692368 +1622240 5688080 1622936 5692376 1623000 5692344 1623032 5692344 +1622280 5688056 1622296 5688016 1622240 5688080 1623032 5692344 +1622936 5692376 1622192 5688096 1621992 5687904 1615488 5689328 +1622240 5688080 1622192 5688096 1622936 5692376 1623000 5692344 +1622240 5688080 1622192 5688096 1623000 5692344 1623032 5692344 +1622240 5688080 1621992 5687904 1622192 5688096 1623000 5692344 +1621992 5687904 1622192 5688096 1622240 5688080 1622056 5687840 +1622240 5688080 1622296 5688016 1622056 5687840 1622192 5688096 +1622240 5688080 1622280 5688056 1622296 5688016 1622192 5688096 +1622296 5688016 1622080 5687816 1622056 5687840 1622192 5688096 +1622192 5688096 1623000 5692344 1622240 5688080 1622296 5688016 +1622056 5687840 1621992 5687904 1622192 5688096 1622296 5688016 +1622192 5688096 1621992 5687904 1622936 5692376 1623000 5692344 +1621992 5687904 1622936 5692376 1622192 5688096 1622056 5687840 +1622936 5692376 1622160 5688096 1621992 5687904 1615488 5689328 +1622936 5692376 1622160 5688096 1615488 5689328 1618304 5694912 +1621992 5687904 1615488 5689272 1615488 5689328 1622160 5688096 +1622192 5688096 1622160 5688096 1622936 5692376 1623000 5692344 +1622192 5688096 1622160 5688096 1623000 5692344 1622240 5688080 +1622192 5688096 1621992 5687904 1622160 5688096 1623000 5692344 +1621992 5687904 1622160 5688096 1622192 5688096 1622056 5687840 +1622192 5688096 1622296 5688016 1622056 5687840 1622160 5688096 +1622296 5688016 1622080 5687816 1622056 5687840 1622160 5688096 +1622192 5688096 1622240 5688080 1622296 5688016 1622160 5688096 +1622240 5688080 1622280 5688056 1622296 5688016 1622160 5688096 +1622296 5688016 1622056 5687840 1622160 5688096 1622240 5688080 +1622160 5688096 1623000 5692344 1622192 5688096 1622240 5688080 +1622056 5687840 1621992 5687904 1622160 5688096 1622296 5688016 +1622936 5692376 1623000 5692344 1622160 5688096 1615488 5689328 +1622160 5688096 1622056 5687840 1621992 5687904 1615488 5689328 +1622160 5688096 1622120 5688088 1615488 5689328 1622936 5692376 +1615488 5689328 1618304 5694912 1622936 5692376 1622120 5688088 +1615488 5689328 1622120 5688088 1621992 5687904 1615488 5689272 +1622160 5688096 1622120 5688088 1622936 5692376 1623000 5692344 +1622160 5688096 1621992 5687904 1622120 5688088 1622936 5692376 +1621992 5687904 1622120 5688088 1622160 5688096 1622056 5687840 +1622160 5688096 1622296 5688016 1622056 5687840 1622120 5688088 +1622296 5688016 1622080 5687816 1622056 5687840 1622120 5688088 +1622160 5688096 1622240 5688080 1622296 5688016 1622120 5688088 +1622120 5688088 1622936 5692376 1622160 5688096 1622296 5688016 +1622056 5687840 1621992 5687904 1622120 5688088 1622296 5688016 +1622120 5688088 1621992 5687904 1615488 5689328 1622936 5692376 +1621992 5687904 1615488 5689328 1622120 5688088 1622056 5687840 +1615488 5689328 1622072 5688064 1621992 5687904 1615488 5689272 +1622120 5688088 1622072 5688064 1615488 5689328 1622936 5692376 +1622120 5688088 1622072 5688064 1622936 5692376 1622160 5688096 +1615488 5689328 1618304 5694912 1622936 5692376 1622072 5688064 +1622120 5688088 1621992 5687904 1622072 5688064 1622936 5692376 +1621992 5687904 1622072 5688064 1622120 5688088 1622056 5687840 +1622120 5688088 1622296 5688016 1622056 5687840 1622072 5688064 +1622072 5688064 1622936 5692376 1622120 5688088 1622056 5687840 +1622072 5688064 1621992 5687904 1615488 5689328 1622936 5692376 +1621992 5687904 1615488 5689328 1622072 5688064 1622056 5687840 +1615488 5689328 1622048 5688040 1621992 5687904 1615488 5689272 +1621992 5687904 1615440 5689168 1615488 5689272 1622048 5688040 +1622072 5688064 1622048 5688040 1615488 5689328 1622936 5692376 +1615488 5689328 1618304 5694912 1622936 5692376 1622048 5688040 +1622072 5688064 1622048 5688040 1622936 5692376 1622120 5688088 +1622072 5688064 1621992 5687904 1622048 5688040 1622936 5692376 +1621992 5687904 1622048 5688040 1622072 5688064 1622056 5687840 +1622072 5688064 1622120 5688088 1622056 5687840 1622048 5688040 +1622120 5688088 1622296 5688016 1622056 5687840 1622048 5688040 +1622048 5688040 1622936 5692376 1622072 5688064 1622120 5688088 +1622056 5687840 1621992 5687904 1622048 5688040 1622120 5688088 +1615488 5689328 1622936 5692376 1622048 5688040 1615488 5689272 +1622048 5688040 1622056 5687840 1621992 5687904 1615488 5689272 +1615488 5689272 1621992 5687952 1621992 5687904 1615440 5689168 +1622048 5688040 1621992 5687952 1615488 5689272 1615488 5689328 +1622048 5688040 1621992 5687952 1615488 5689328 1622936 5692376 +1622048 5688040 1621992 5687904 1621992 5687952 1615488 5689328 +1621992 5687904 1621992 5687952 1622048 5688040 1622056 5687840 +1622048 5688040 1622120 5688088 1622056 5687840 1621992 5687952 +1621992 5687952 1615488 5689328 1622048 5688040 1622056 5687840 +1621992 5687952 1621992 5687904 1615488 5689272 1615488 5689328 +1621992 5687904 1615488 5689272 1621992 5687952 1622056 5687840 +1625480 5687312 1621800 5687120 1622200 5687776 1622304 5687800 +1622200 5687776 1621800 5687120 1617424 5683592 1622160 5687776 +1617424 5683592 1617424 5683648 1622160 5687776 1621800 5687120 +1617424 5683648 1622112 5687792 1622160 5687776 1621800 5687120 +1617424 5683648 1622080 5687816 1622112 5687792 1621800 5687120 +1617424 5683648 1622056 5687840 1622080 5687816 1621800 5687120 +1622080 5687816 1622112 5687792 1621800 5687120 1622056 5687840 +1622112 5687792 1622160 5687776 1621800 5687120 1622080 5687816 +1617424 5683648 1622056 5687840 1621800 5687120 1617424 5683592 +1622160 5687776 1622200 5687776 1621800 5687120 1622112 5687792 +1622200 5687776 1622296 5687808 1622304 5687800 1621800 5687120 +1625480 5687312 1621800 5687120 1622304 5687800 1625432 5687352 +1622304 5687800 1622360 5687856 1625432 5687352 1621800 5687120 +1621800 5687120 1622200 5687776 1622304 5687800 1625432 5687352 +1621800 5687120 1625480 5687312 1617424 5683592 1617424 5683648 +1625480 5687312 1617424 5683592 1621800 5687120 1625432 5687352 +1621800 5687120 1622160 5687776 1622200 5687776 1622304 5687800 +1617424 5683648 1621992 5687904 1622056 5687840 1621800 5687120 +1617424 5683648 1617328 5683704 1621992 5687904 1621800 5687120 +1622056 5687840 1622080 5687816 1621800 5687120 1621992 5687904 +1617424 5683648 1617328 5683704 1621800 5687120 1617424 5683592 +1617424 5683648 1617368 5683680 1617328 5683704 1621800 5687120 +1621992 5687904 1622056 5687840 1621800 5687120 1617328 5683704 +1617328 5683704 1617280 5683720 1621992 5687904 1621800 5687120 +1617328 5683704 1617280 5683720 1621800 5687120 1617424 5683648 +1617280 5683720 1615440 5689168 1621992 5687904 1621800 5687120 +1615440 5689168 1615488 5689272 1621992 5687904 1621800 5687120 +1615488 5689272 1621992 5687952 1621992 5687904 1621800 5687120 +1615440 5689168 1615488 5689272 1621800 5687120 1617280 5683720 +1615488 5689272 1621992 5687952 1621800 5687120 1615440 5689168 +1615488 5689272 1615488 5689328 1621992 5687952 1621800 5687120 +1621992 5687904 1622056 5687840 1621800 5687120 1621992 5687952 +1617280 5683720 1615440 5689168 1621800 5687120 1617328 5683704 +1617280 5683720 1615392 5689120 1615440 5689168 1621800 5687120 +1617424 5683592 1621800 5687120 1625480 5687312 1625568 5687272 +1617424 5683592 1617424 5683648 1621800 5687120 1625568 5687272 +1621800 5687120 1625432 5687352 1625480 5687312 1625568 5687272 +1625480 5687312 1625488 5687312 1625568 5687272 1621800 5687120 +1617424 5683592 1621800 5687120 1625568 5687272 1625656 5687248 +1617424 5683592 1617424 5683648 1621800 5687120 1625656 5687248 +1617424 5683592 1621800 5687120 1625656 5687248 1617376 5683520 +1621800 5687120 1625480 5687312 1625568 5687272 1625656 5687248 +1621800 5687120 1621408 5687168 1615440 5689168 1615488 5689272 +1621800 5687120 1621408 5687168 1615488 5689272 1621992 5687952 +1621800 5687120 1621408 5687168 1621992 5687952 1621992 5687904 +1621408 5687168 1615440 5689168 1615488 5689272 1621992 5687952 +1621408 5687168 1615488 5689272 1621992 5687952 1621992 5687904 +1615488 5689272 1615488 5689328 1621992 5687952 1621408 5687168 +1615488 5689272 1615488 5689328 1621408 5687168 1615440 5689168 +1621992 5687952 1621992 5687904 1621408 5687168 1615488 5689328 +1615488 5689328 1622048 5688040 1621992 5687952 1621408 5687168 +1621800 5687120 1617280 5683720 1621408 5687168 1621992 5687904 +1621408 5687168 1617280 5683720 1615440 5689168 1615488 5689272 +1621800 5687120 1621408 5687168 1621992 5687904 1622056 5687840 +1617280 5683720 1621408 5687168 1621800 5687120 1617328 5683704 +1621800 5687120 1617424 5683648 1617328 5683704 1621408 5687168 +1621800 5687120 1617424 5683592 1617424 5683648 1621408 5687168 +1617424 5683648 1617328 5683704 1621408 5687168 1617424 5683592 +1617424 5683648 1617368 5683680 1617328 5683704 1621408 5687168 +1621800 5687120 1625656 5687248 1617424 5683592 1621408 5687168 +1621408 5687168 1621992 5687904 1621800 5687120 1617424 5683592 +1617280 5683720 1615440 5689168 1621408 5687168 1617328 5683704 +1617328 5683704 1617280 5683720 1621408 5687168 1617424 5683648 +1615440 5689168 1621408 5687168 1617280 5683720 1615392 5689120 +1621408 5687168 1621296 5687176 1615440 5689168 1615488 5689272 +1621408 5687168 1621296 5687176 1615488 5689272 1615488 5689328 +1621408 5687168 1621296 5687176 1615488 5689328 1621992 5687952 +1621296 5687176 1615488 5689272 1615488 5689328 1621992 5687952 +1621408 5687168 1621296 5687176 1621992 5687952 1621992 5687904 +1621408 5687168 1621296 5687176 1621992 5687904 1621800 5687120 +1615488 5689328 1622048 5688040 1621992 5687952 1621296 5687176 +1615488 5689328 1622048 5688040 1621296 5687176 1615488 5689272 +1615488 5689328 1622936 5692376 1622048 5688040 1621296 5687176 +1621296 5687176 1622048 5688040 1621992 5687952 1621992 5687904 +1621296 5687176 1615440 5689168 1615488 5689272 1615488 5689328 +1621408 5687168 1617280 5683720 1621296 5687176 1621992 5687904 +1617280 5683720 1621296 5687176 1621408 5687168 1617328 5683704 +1621296 5687176 1621992 5687904 1621408 5687168 1617328 5683704 +1621296 5687176 1617280 5683720 1615440 5689168 1615488 5689272 +1617280 5683720 1615440 5689168 1621296 5687176 1617328 5683704 +1621408 5687168 1617424 5683648 1617328 5683704 1621296 5687176 +1621408 5687168 1617424 5683592 1617424 5683648 1621296 5687176 +1621408 5687168 1621800 5687120 1617424 5683592 1621296 5687176 +1617424 5683648 1617368 5683680 1617328 5683704 1621296 5687176 +1621408 5687168 1617424 5683592 1621296 5687176 1621992 5687904 +1617328 5683704 1617280 5683720 1621296 5687176 1617424 5683648 +1617424 5683648 1617328 5683704 1621296 5687176 1617424 5683592 +1615440 5689168 1621296 5687176 1617280 5683720 1615392 5689120 +1615488 5689328 1621256 5687192 1621296 5687176 1615488 5689272 +1621296 5687176 1621256 5687192 1622048 5688040 1621992 5687952 +1622048 5688040 1621256 5687192 1615488 5689328 1622936 5692376 +1621296 5687176 1621256 5687192 1621992 5687952 1621992 5687904 +1621296 5687176 1621256 5687192 1621992 5687904 1621408 5687168 +1621992 5687904 1621800 5687120 1621408 5687168 1621256 5687192 +1621256 5687192 1622048 5688040 1621992 5687952 1621992 5687904 +1621256 5687192 1621992 5687952 1621992 5687904 1621408 5687168 +1621296 5687176 1615440 5689168 1615488 5689272 1621256 5687192 +1615488 5689272 1615488 5689328 1621256 5687192 1615440 5689168 +1621296 5687176 1617280 5683720 1615440 5689168 1621256 5687192 +1615440 5689168 1615488 5689272 1621256 5687192 1617280 5683720 +1621256 5687192 1621408 5687168 1621296 5687176 1617280 5683720 +1621296 5687176 1617328 5683704 1617280 5683720 1621256 5687192 +1621296 5687176 1617424 5683648 1617328 5683704 1621256 5687192 +1617424 5683648 1617368 5683680 1617328 5683704 1621256 5687192 +1617280 5683720 1615440 5689168 1621256 5687192 1617328 5683704 +1621296 5687176 1617424 5683648 1621256 5687192 1621408 5687168 +1617328 5683704 1617280 5683720 1621256 5687192 1617424 5683648 +1621256 5687192 1615488 5689328 1622048 5688040 1621992 5687952 +1615488 5689328 1622048 5688040 1621256 5687192 1615488 5689272 +1621296 5687176 1617424 5683592 1617424 5683648 1621256 5687192 +1617280 5683720 1615392 5689120 1615440 5689168 1621256 5687192 +1621256 5687192 1621088 5687176 1615440 5689168 1615488 5689272 +1621256 5687192 1621088 5687176 1615488 5689272 1615488 5689328 +1621088 5687176 1615440 5689168 1615488 5689272 1615488 5689328 +1617280 5683720 1621088 5687176 1621256 5687192 1617328 5683704 +1621256 5687192 1617424 5683648 1617328 5683704 1621088 5687176 +1617424 5683648 1617368 5683680 1617328 5683704 1621088 5687176 +1621256 5687192 1621296 5687176 1617424 5683648 1621088 5687176 +1617328 5683704 1617280 5683720 1621088 5687176 1617424 5683648 +1617424 5683648 1617328 5683704 1621088 5687176 1621296 5687176 +1621256 5687192 1621296 5687176 1621088 5687176 1615488 5689328 +1621256 5687192 1621088 5687176 1615488 5689328 1622048 5688040 +1621088 5687176 1615488 5689272 1615488 5689328 1622048 5688040 +1615488 5689328 1622936 5692376 1622048 5688040 1621088 5687176 +1621256 5687192 1621088 5687176 1622048 5688040 1621992 5687952 +1621256 5687192 1621088 5687176 1621992 5687952 1621992 5687904 +1621256 5687192 1621296 5687176 1621088 5687176 1621992 5687952 +1621088 5687176 1615488 5689328 1622048 5688040 1621992 5687952 +1621088 5687176 1617280 5683720 1615440 5689168 1615488 5689272 +1617280 5683720 1615440 5689168 1621088 5687176 1617328 5683704 +1621296 5687176 1617424 5683592 1617424 5683648 1621088 5687176 +1621296 5687176 1621408 5687168 1617424 5683592 1621088 5687176 +1621408 5687168 1621800 5687120 1617424 5683592 1621088 5687176 +1621408 5687168 1621800 5687120 1621088 5687176 1621296 5687176 +1621800 5687120 1625656 5687248 1617424 5683592 1621088 5687176 +1621296 5687176 1621408 5687168 1621088 5687176 1621256 5687192 +1617424 5683648 1617328 5683704 1621088 5687176 1617424 5683592 +1617424 5683592 1617424 5683648 1621088 5687176 1621800 5687120 +1615440 5689168 1621088 5687176 1617280 5683720 1615392 5689120 +1621088 5687176 1620984 5687128 1615440 5689168 1615488 5689272 +1621088 5687176 1620984 5687128 1615488 5689272 1615488 5689328 +1621088 5687176 1620984 5687128 1615488 5689328 1622048 5688040 +1615488 5689328 1622936 5692376 1622048 5688040 1620984 5687128 +1620984 5687128 1615488 5689272 1615488 5689328 1622048 5688040 +1621088 5687176 1620984 5687128 1622048 5688040 1621992 5687952 +1620984 5687128 1615440 5689168 1615488 5689272 1615488 5689328 +1621088 5687176 1617280 5683720 1620984 5687128 1622048 5688040 +1617280 5683720 1620984 5687128 1621088 5687176 1617328 5683704 +1621088 5687176 1617424 5683648 1617328 5683704 1620984 5687128 +1617424 5683648 1617368 5683680 1617328 5683704 1620984 5687128 +1617424 5683648 1617368 5683680 1620984 5687128 1621088 5687176 +1621088 5687176 1617424 5683592 1617424 5683648 1620984 5687128 +1617424 5683648 1617368 5683680 1620984 5687128 1617424 5683592 +1620984 5687128 1622048 5688040 1621088 5687176 1617424 5683592 +1617328 5683704 1617280 5683720 1620984 5687128 1617368 5683680 +1620984 5687128 1617280 5683720 1615440 5689168 1615488 5689272 +1617280 5683720 1615440 5689168 1620984 5687128 1617328 5683704 +1621088 5687176 1621800 5687120 1617424 5683592 1620984 5687128 +1621088 5687176 1621408 5687168 1621800 5687120 1620984 5687128 +1621088 5687176 1621296 5687176 1621408 5687168 1620984 5687128 +1621408 5687168 1621800 5687120 1620984 5687128 1621296 5687176 +1621800 5687120 1625656 5687248 1617424 5683592 1620984 5687128 +1621088 5687176 1621256 5687192 1621296 5687176 1620984 5687128 +1617424 5683592 1617424 5683648 1620984 5687128 1621800 5687120 +1621088 5687176 1621296 5687176 1620984 5687128 1622048 5688040 +1621800 5687120 1617424 5683592 1620984 5687128 1621408 5687168 +1615440 5689168 1620984 5687128 1617280 5683720 1615392 5689120 +1617328 5683704 1620744 5686904 1620984 5687128 1617368 5683680 +1620984 5687128 1617424 5683648 1617368 5683680 1620744 5686904 +1620984 5687128 1617424 5683592 1617424 5683648 1620744 5686904 +1617424 5683648 1617368 5683680 1620744 5686904 1617424 5683592 +1620984 5687128 1621800 5687120 1617424 5683592 1620744 5686904 +1621800 5687120 1625656 5687248 1617424 5683592 1620744 5686904 +1617424 5683592 1617424 5683648 1620744 5686904 1621800 5687120 +1617368 5683680 1617328 5683704 1620744 5686904 1617424 5683648 +1620744 5686904 1617280 5683720 1620984 5687128 1621800 5687120 +1620984 5687128 1620744 5686904 1617280 5683720 1615440 5689168 +1620984 5687128 1620744 5686904 1615440 5689168 1615488 5689272 +1620984 5687128 1620744 5686904 1615488 5689272 1615488 5689328 +1620984 5687128 1620744 5686904 1615488 5689328 1622048 5688040 +1620744 5686904 1615440 5689168 1615488 5689272 1615488 5689328 +1620984 5687128 1621800 5687120 1620744 5686904 1615488 5689328 +1620744 5686904 1617280 5683720 1615440 5689168 1615488 5689272 +1620744 5686904 1617328 5683704 1617280 5683720 1615440 5689168 +1617328 5683704 1617280 5683720 1620744 5686904 1617368 5683680 +1620984 5687128 1621408 5687168 1621800 5687120 1620744 5686904 +1620984 5687128 1621296 5687176 1621408 5687168 1620744 5686904 +1620984 5687128 1621088 5687176 1621296 5687176 1620744 5686904 +1621800 5687120 1617424 5683592 1620744 5686904 1621408 5687168 +1620984 5687128 1621296 5687176 1620744 5686904 1615488 5689328 +1621408 5687168 1621800 5687120 1620744 5686904 1621296 5687176 +1617280 5683720 1615392 5689120 1615440 5689168 1620744 5686904 +1617280 5683720 1617248 5683720 1615392 5689120 1620744 5686904 +1615440 5689168 1615488 5689272 1620744 5686904 1615392 5689120 +1617280 5683720 1615392 5689120 1620744 5686904 1617328 5683704 +1617424 5683592 1620576 5686728 1621800 5687120 1625656 5687248 +1620744 5686904 1620576 5686728 1617424 5683592 1617424 5683648 +1620744 5686904 1620576 5686728 1617424 5683648 1617368 5683680 +1620576 5686728 1617424 5683592 1617424 5683648 1617368 5683680 +1621800 5687120 1620576 5686728 1620744 5686904 1621408 5687168 +1620744 5686904 1620576 5686728 1617368 5683680 1617328 5683704 +1620576 5686728 1617424 5683648 1617368 5683680 1617328 5683704 +1620744 5686904 1621800 5687120 1620576 5686728 1617328 5683704 +1620744 5686904 1620576 5686728 1617328 5683704 1617280 5683720 +1620576 5686728 1617368 5683680 1617328 5683704 1617280 5683720 +1620744 5686904 1620576 5686728 1617280 5683720 1615392 5689120 +1617280 5683720 1617248 5683720 1615392 5689120 1620576 5686728 +1620744 5686904 1621800 5687120 1620576 5686728 1615392 5689120 +1620576 5686728 1617328 5683704 1617280 5683720 1615392 5689120 +1620576 5686728 1621800 5687120 1617424 5683592 1617424 5683648 +1620744 5686904 1620576 5686728 1615392 5689120 1615440 5689168 +1620744 5686904 1620576 5686728 1615440 5689168 1615488 5689272 +1620744 5686904 1620576 5686728 1615488 5689272 1615488 5689328 +1620576 5686728 1617280 5683720 1615392 5689120 1615440 5689168 +1620744 5686904 1621800 5687120 1620576 5686728 1615488 5689272 +1620576 5686728 1615392 5689120 1615440 5689168 1615488 5689272 +1617424 5683592 1620480 5686544 1621800 5687120 1625656 5687248 +1620576 5686728 1620480 5686544 1617424 5683592 1617424 5683648 +1620576 5686728 1620480 5686544 1617424 5683648 1617368 5683680 +1620576 5686728 1620480 5686544 1617368 5683680 1617328 5683704 +1620480 5686544 1617424 5683648 1617368 5683680 1617328 5683704 +1620576 5686728 1620480 5686544 1617328 5683704 1617280 5683720 +1620480 5686544 1617368 5683680 1617328 5683704 1617280 5683720 +1620576 5686728 1620480 5686544 1617280 5683720 1615392 5689120 +1617280 5683720 1617248 5683720 1615392 5689120 1620480 5686544 +1620480 5686544 1617328 5683704 1617280 5683720 1615392 5689120 +1620576 5686728 1620480 5686544 1615392 5689120 1615440 5689168 +1620480 5686544 1617280 5683720 1615392 5689120 1615440 5689168 +1620480 5686544 1617424 5683592 1617424 5683648 1617368 5683680 +1620576 5686728 1621800 5687120 1620480 5686544 1615440 5689168 +1621800 5687120 1620480 5686544 1620576 5686728 1620744 5686904 +1621800 5687120 1620480 5686544 1620744 5686904 1621408 5687168 +1620480 5686544 1615440 5689168 1620576 5686728 1620744 5686904 +1620480 5686544 1620576 5686728 1620744 5686904 1621408 5687168 +1617424 5683592 1617424 5683648 1620480 5686544 1625656 5687248 +1620480 5686544 1621408 5687168 1621800 5687120 1625656 5687248 +1617424 5683592 1620480 5686544 1625656 5687248 1617376 5683520 +1621800 5687120 1625568 5687272 1625656 5687248 1620480 5686544 +1620744 5686904 1621296 5687176 1621408 5687168 1620480 5686544 +1620576 5686728 1620480 5686544 1615440 5689168 1615488 5689272 +1625656 5687248 1620440 5686432 1620480 5686544 1621800 5687120 +1620480 5686544 1620440 5686432 1617424 5683592 1617424 5683648 +1620480 5686544 1620440 5686432 1617424 5683648 1617368 5683680 +1620480 5686544 1620440 5686432 1617368 5683680 1617328 5683704 +1620480 5686544 1620440 5686432 1617328 5683704 1617280 5683720 +1620440 5686432 1617368 5683680 1617328 5683704 1617280 5683720 +1620480 5686544 1620440 5686432 1617280 5683720 1615392 5689120 +1617280 5683720 1617248 5683720 1615392 5689120 1620440 5686432 +1620440 5686432 1617328 5683704 1617280 5683720 1615392 5689120 +1620480 5686544 1620440 5686432 1615392 5689120 1615440 5689168 +1620440 5686432 1617280 5683720 1615392 5689120 1615440 5689168 +1620480 5686544 1620440 5686432 1615440 5689168 1620576 5686728 +1620440 5686432 1617424 5683648 1617368 5683680 1617328 5683704 +1620440 5686432 1617424 5683592 1617424 5683648 1617368 5683680 +1620440 5686432 1615440 5689168 1620480 5686544 1621800 5687120 +1620480 5686544 1621408 5687168 1621800 5687120 1620440 5686432 +1621800 5687120 1625656 5687248 1620440 5686432 1621408 5687168 +1620480 5686544 1620744 5686904 1621408 5687168 1620440 5686432 +1620480 5686544 1620576 5686728 1620744 5686904 1620440 5686432 +1620480 5686544 1620744 5686904 1620440 5686432 1615440 5689168 +1621408 5687168 1621800 5687120 1620440 5686432 1620744 5686904 +1620440 5686432 1625656 5687248 1617424 5683592 1617424 5683648 +1625656 5687248 1617424 5683592 1620440 5686432 1621800 5687120 +1617424 5683592 1620440 5686432 1625656 5687248 1617376 5683520 +1625656 5687248 1620440 5686432 1621800 5687120 1625568 5687272 +1620440 5686432 1621408 5687168 1621800 5687120 1625568 5687272 +1625656 5687248 1617424 5683592 1620440 5686432 1625568 5687272 +1620744 5686904 1621296 5687176 1621408 5687168 1620440 5686432 +1621800 5687120 1625480 5687312 1625568 5687272 1620440 5686432 +1620440 5686432 1620440 5686392 1617424 5683592 1617424 5683648 +1620440 5686432 1620440 5686392 1617424 5683648 1617368 5683680 +1620440 5686432 1620440 5686392 1617368 5683680 1617328 5683704 +1620440 5686432 1620440 5686392 1617328 5683704 1617280 5683720 +1620440 5686432 1620440 5686392 1617280 5683720 1615392 5689120 +1620440 5686392 1617368 5683680 1617328 5683704 1617280 5683720 +1620440 5686392 1617424 5683648 1617368 5683680 1617328 5683704 +1620440 5686392 1617424 5683592 1617424 5683648 1617368 5683680 +1620440 5686432 1625656 5687248 1620440 5686392 1617280 5683720 +1625656 5687248 1620440 5686392 1620440 5686432 1625568 5687272 +1620440 5686392 1617280 5683720 1620440 5686432 1625568 5687272 +1620440 5686392 1625656 5687248 1617424 5683592 1617424 5683648 +1625656 5687248 1617424 5683592 1620440 5686392 1625568 5687272 +1617424 5683592 1620440 5686392 1625656 5687248 1617376 5683520 +1620440 5686432 1621800 5687120 1625568 5687272 1620440 5686392 +1620440 5686432 1621408 5687168 1621800 5687120 1620440 5686392 +1620440 5686432 1620744 5686904 1621408 5687168 1620440 5686392 +1621408 5687168 1621800 5687120 1620440 5686392 1620744 5686904 +1620440 5686432 1620480 5686544 1620744 5686904 1620440 5686392 +1620480 5686544 1620576 5686728 1620744 5686904 1620440 5686392 +1620744 5686904 1621408 5687168 1620440 5686392 1620480 5686544 +1620440 5686432 1620480 5686544 1620440 5686392 1617280 5683720 +1625568 5687272 1625656 5687248 1620440 5686392 1621800 5687120 +1621800 5687120 1625568 5687272 1620440 5686392 1621408 5687168 +1620744 5686904 1621296 5687176 1621408 5687168 1620440 5686392 +1621800 5687120 1625480 5687312 1625568 5687272 1620440 5686392 +1620440 5686392 1620496 5686264 1617424 5683592 1617424 5683648 +1620440 5686392 1620496 5686264 1617424 5683648 1617368 5683680 +1620440 5686392 1625656 5687248 1620496 5686264 1617424 5683648 +1625656 5687248 1620496 5686264 1620440 5686392 1625568 5687272 +1620440 5686392 1621800 5687120 1625568 5687272 1620496 5686264 +1620496 5686264 1617424 5683648 1620440 5686392 1621800 5687120 +1625568 5687272 1625656 5687248 1620496 5686264 1621800 5687120 +1620496 5686264 1625656 5687248 1617424 5683592 1617424 5683648 +1625656 5687248 1617424 5683592 1620496 5686264 1625568 5687272 +1617424 5683592 1620496 5686264 1625656 5687248 1617376 5683520 +1617424 5683592 1617424 5683648 1620496 5686264 1617376 5683520 +1620496 5686264 1625568 5687272 1625656 5687248 1617376 5683520 +1620440 5686392 1621408 5687168 1621800 5687120 1620496 5686264 +1620440 5686392 1620744 5686904 1621408 5687168 1620496 5686264 +1620440 5686392 1620480 5686544 1620744 5686904 1620496 5686264 +1620744 5686904 1621408 5687168 1620496 5686264 1620480 5686544 +1620440 5686392 1620440 5686432 1620480 5686544 1620496 5686264 +1620480 5686544 1620576 5686728 1620744 5686904 1620496 5686264 +1620744 5686904 1621408 5687168 1620496 5686264 1620576 5686728 +1620480 5686544 1620576 5686728 1620496 5686264 1620440 5686432 +1621800 5687120 1625568 5687272 1620496 5686264 1621408 5687168 +1620440 5686392 1620440 5686432 1620496 5686264 1617424 5683648 +1621408 5687168 1621800 5687120 1620496 5686264 1620744 5686904 +1620744 5686904 1621296 5687176 1621408 5687168 1620496 5686264 +1625656 5687248 1625672 5687248 1617376 5683520 1620496 5686264 +1621800 5687120 1625480 5687312 1625568 5687272 1620496 5686264 +1625656 5687248 1620592 5686144 1620496 5686264 1625568 5687272 +1620496 5686264 1621800 5687120 1625568 5687272 1620592 5686144 +1620496 5686264 1621408 5687168 1621800 5687120 1620592 5686144 +1621800 5687120 1625568 5687272 1620592 5686144 1621408 5687168 +1620592 5686144 1617376 5683520 1620496 5686264 1621408 5687168 +1625568 5687272 1625656 5687248 1620592 5686144 1621800 5687120 +1625656 5687248 1617376 5683520 1620592 5686144 1625568 5687272 +1620496 5686264 1620592 5686144 1617376 5683520 1617424 5683592 +1620496 5686264 1620592 5686144 1617424 5683592 1617424 5683648 +1620496 5686264 1620592 5686144 1617424 5683648 1620440 5686392 +1620496 5686264 1621408 5687168 1620592 5686144 1617424 5683648 +1620592 5686144 1625656 5687248 1617376 5683520 1617424 5683592 +1620592 5686144 1617376 5683520 1617424 5683592 1617424 5683648 +1620496 5686264 1620744 5686904 1621408 5687168 1620592 5686144 +1620496 5686264 1620576 5686728 1620744 5686904 1620592 5686144 +1620496 5686264 1620480 5686544 1620576 5686728 1620592 5686144 +1620576 5686728 1620744 5686904 1620592 5686144 1620480 5686544 +1620496 5686264 1620440 5686432 1620480 5686544 1620592 5686144 +1621408 5687168 1621800 5687120 1620592 5686144 1620744 5686904 +1620496 5686264 1620480 5686544 1620592 5686144 1617424 5683648 +1620744 5686904 1621408 5687168 1620592 5686144 1620576 5686728 +1620744 5686904 1621296 5687176 1621408 5687168 1620592 5686144 +1617376 5683520 1620592 5686144 1625656 5687248 1625672 5687248 +1621800 5687120 1625480 5687312 1625568 5687272 1620592 5686144 +1620592 5686144 1620776 5686024 1617376 5683520 1617424 5683592 +1620592 5686144 1625656 5687248 1620776 5686024 1617424 5683592 +1625656 5687248 1620776 5686024 1620592 5686144 1625568 5687272 +1620592 5686144 1621800 5687120 1625568 5687272 1620776 5686024 +1620592 5686144 1621408 5687168 1621800 5687120 1620776 5686024 +1620592 5686144 1620744 5686904 1621408 5687168 1620776 5686024 +1621408 5687168 1621800 5687120 1620776 5686024 1620744 5686904 +1621800 5687120 1625568 5687272 1620776 5686024 1621408 5687168 +1620776 5686024 1617424 5683592 1620592 5686144 1620744 5686904 +1625568 5687272 1625656 5687248 1620776 5686024 1621800 5687120 +1620776 5686024 1625656 5687248 1617376 5683520 1617424 5683592 +1625656 5687248 1617376 5683520 1620776 5686024 1625568 5687272 +1620592 5686144 1620776 5686024 1617424 5683592 1617424 5683648 +1620592 5686144 1620776 5686024 1617424 5683648 1620496 5686264 +1620776 5686024 1617376 5683520 1617424 5683592 1617424 5683648 +1620592 5686144 1620744 5686904 1620776 5686024 1617424 5683648 +1620592 5686144 1620576 5686728 1620744 5686904 1620776 5686024 +1620592 5686144 1620480 5686544 1620576 5686728 1620776 5686024 +1620744 5686904 1621408 5687168 1620776 5686024 1620576 5686728 +1620592 5686144 1620576 5686728 1620776 5686024 1617424 5683648 +1620744 5686904 1621296 5687176 1621408 5687168 1620776 5686024 +1620744 5686904 1620984 5687128 1621296 5687176 1620776 5686024 +1620744 5686904 1621296 5687176 1620776 5686024 1620576 5686728 +1621408 5687168 1621800 5687120 1620776 5686024 1621296 5687176 +1617376 5683520 1620776 5686024 1625656 5687248 1625672 5687248 +1617376 5683520 1620776 5686024 1625672 5687248 1617344 5683488 +1617376 5683520 1617424 5683592 1620776 5686024 1625672 5687248 +1620776 5686024 1625568 5687272 1625656 5687248 1625672 5687248 +1621800 5687120 1625480 5687312 1625568 5687272 1620776 5686024 +1621800 5687120 1625432 5687352 1625480 5687312 1620776 5686024 +1621800 5687120 1625480 5687312 1620776 5686024 1621408 5687168 +1625568 5687272 1625656 5687248 1620776 5686024 1625480 5687312 +1625480 5687312 1625488 5687312 1625568 5687272 1620776 5686024 +1617376 5683520 1620912 5685984 1625672 5687248 1617344 5683488 +1620776 5686024 1620912 5685984 1617376 5683520 1617424 5683592 +1620776 5686024 1620912 5685984 1617424 5683592 1617424 5683648 +1620776 5686024 1625672 5687248 1620912 5685984 1617424 5683592 +1617376 5683520 1617424 5683592 1620912 5685984 1617344 5683488 +1620912 5685984 1620776 5686024 1625672 5687248 1617344 5683488 +1625672 5687248 1620912 5685984 1620776 5686024 1625656 5687248 +1620912 5685984 1617424 5683592 1620776 5686024 1625656 5687248 +1620776 5686024 1625568 5687272 1625656 5687248 1620912 5685984 +1620776 5686024 1625480 5687312 1625568 5687272 1620912 5685984 +1620776 5686024 1625480 5687312 1620912 5685984 1617424 5683592 +1625568 5687272 1625656 5687248 1620912 5685984 1625480 5687312 +1625672 5687248 1617344 5683488 1620912 5685984 1625656 5687248 +1625480 5687312 1625488 5687312 1625568 5687272 1620912 5685984 +1625656 5687248 1625672 5687248 1620912 5685984 1625568 5687272 +1620776 5686024 1621800 5687120 1625480 5687312 1620912 5685984 +1621800 5687120 1625432 5687352 1625480 5687312 1620912 5685984 +1620776 5686024 1621408 5687168 1621800 5687120 1620912 5685984 +1620776 5686024 1621296 5687176 1621408 5687168 1620912 5685984 +1621408 5687168 1621800 5687120 1620912 5685984 1621296 5687176 +1625480 5687312 1625568 5687272 1620912 5685984 1621800 5687120 +1620776 5686024 1621296 5687176 1620912 5685984 1617424 5683592 +1620776 5686024 1620744 5686904 1621296 5687176 1620912 5685984 +1620744 5686904 1620984 5687128 1621296 5687176 1620912 5685984 +1620776 5686024 1620576 5686728 1620744 5686904 1620912 5685984 +1621296 5687176 1621408 5687168 1620912 5685984 1620744 5686904 +1620776 5686024 1620576 5686728 1620912 5685984 1617424 5683592 +1620776 5686024 1620592 5686144 1620576 5686728 1620912 5685984 +1620744 5686904 1621296 5687176 1620912 5685984 1620576 5686728 +1621800 5687120 1625480 5687312 1620912 5685984 1621408 5687168 +1625672 5687248 1617256 5683416 1617344 5683488 1620912 5685984 +1620912 5685984 1621048 5686008 1617344 5683488 1617376 5683520 +1620912 5685984 1621048 5686008 1617376 5683520 1617424 5683592 +1621048 5686008 1617344 5683488 1617376 5683520 1617424 5683592 +1620912 5685984 1621048 5686008 1617424 5683592 1620776 5686024 +1620912 5685984 1625672 5687248 1621048 5686008 1617424 5683592 +1625672 5687248 1621048 5686008 1620912 5685984 1625656 5687248 +1621048 5686008 1617424 5683592 1620912 5685984 1625656 5687248 +1621048 5686008 1625672 5687248 1617344 5683488 1617376 5683520 +1625672 5687248 1617344 5683488 1621048 5686008 1625656 5687248 +1620912 5685984 1625568 5687272 1625656 5687248 1621048 5686008 +1620912 5685984 1625480 5687312 1625568 5687272 1621048 5686008 +1620912 5685984 1621800 5687120 1625480 5687312 1621048 5686008 +1621800 5687120 1625432 5687352 1625480 5687312 1621048 5686008 +1625480 5687312 1625568 5687272 1621048 5686008 1621800 5687120 +1620912 5685984 1621800 5687120 1621048 5686008 1617424 5683592 +1625656 5687248 1625672 5687248 1621048 5686008 1625568 5687272 +1625480 5687312 1625488 5687312 1625568 5687272 1621048 5686008 +1625568 5687272 1625656 5687248 1621048 5686008 1625480 5687312 +1620912 5685984 1621408 5687168 1621800 5687120 1621048 5686008 +1620912 5685984 1621296 5687176 1621408 5687168 1621048 5686008 +1620912 5685984 1620744 5686904 1621296 5687176 1621048 5686008 +1620744 5686904 1620984 5687128 1621296 5687176 1621048 5686008 +1621296 5687176 1621408 5687168 1621048 5686008 1620744 5686904 +1621800 5687120 1625480 5687312 1621048 5686008 1621408 5687168 +1620912 5685984 1620744 5686904 1621048 5686008 1617424 5683592 +1620912 5685984 1620576 5686728 1620744 5686904 1621048 5686008 +1620912 5685984 1620776 5686024 1620576 5686728 1621048 5686008 +1620744 5686904 1621296 5687176 1621048 5686008 1620576 5686728 +1620912 5685984 1620776 5686024 1621048 5686008 1617424 5683592 +1620776 5686024 1620592 5686144 1620576 5686728 1621048 5686008 +1620576 5686728 1620744 5686904 1621048 5686008 1620776 5686024 +1621408 5687168 1621800 5687120 1621048 5686008 1621296 5687176 +1617344 5683488 1621048 5686008 1625672 5687248 1617256 5683416 +1625480 5687312 1621112 5686056 1621800 5687120 1625432 5687352 +1621800 5687120 1621112 5686056 1621048 5686008 1621408 5687168 +1621048 5686008 1621112 5686056 1625480 5687312 1625568 5687272 +1621112 5686056 1625568 5687272 1621048 5686008 1621408 5687168 +1621112 5686056 1621800 5687120 1625480 5687312 1625568 5687272 +1621800 5687120 1625480 5687312 1621112 5686056 1621408 5687168 +1625480 5687312 1625488 5687312 1625568 5687272 1621112 5686056 +1621048 5686008 1621112 5686056 1625568 5687272 1625656 5687248 +1621112 5686056 1625480 5687312 1625568 5687272 1625656 5687248 +1621048 5686008 1621112 5686056 1625656 5687248 1625672 5687248 +1621048 5686008 1621408 5687168 1621112 5686056 1625656 5687248 +1621048 5686008 1621296 5687176 1621408 5687168 1621112 5686056 +1621048 5686008 1620744 5686904 1621296 5687176 1621112 5686056 +1620744 5686904 1620984 5687128 1621296 5687176 1621112 5686056 +1621048 5686008 1620576 5686728 1620744 5686904 1621112 5686056 +1620744 5686904 1621296 5687176 1621112 5686056 1620576 5686728 +1621408 5687168 1621800 5687120 1621112 5686056 1621296 5687176 +1621048 5686008 1620576 5686728 1621112 5686056 1625656 5687248 +1621048 5686008 1620776 5686024 1620576 5686728 1621112 5686056 +1621048 5686008 1620912 5685984 1620776 5686024 1621112 5686056 +1620576 5686728 1620744 5686904 1621112 5686056 1620776 5686024 +1621048 5686008 1620912 5685984 1621112 5686056 1625656 5687248 +1620776 5686024 1620592 5686144 1620576 5686728 1621112 5686056 +1620592 5686144 1620480 5686544 1620576 5686728 1621112 5686056 +1620576 5686728 1620744 5686904 1621112 5686056 1620592 5686144 +1620776 5686024 1620592 5686144 1621112 5686056 1620912 5685984 +1621296 5687176 1621408 5687168 1621112 5686056 1620744 5686904 +1625480 5687312 1621424 5686384 1621800 5687120 1625432 5687352 +1621800 5687120 1622304 5687800 1625432 5687352 1621424 5686384 +1621112 5686056 1621424 5686384 1625480 5687312 1625568 5687272 +1621112 5686056 1621424 5686384 1625568 5687272 1625656 5687248 +1621112 5686056 1621800 5687120 1621424 5686384 1625568 5687272 +1621800 5687120 1621424 5686384 1621112 5686056 1621408 5687168 +1621112 5686056 1621296 5687176 1621408 5687168 1621424 5686384 +1621424 5686384 1625568 5687272 1621112 5686056 1621296 5687176 +1621408 5687168 1621800 5687120 1621424 5686384 1621296 5687176 +1625480 5687312 1625568 5687272 1621424 5686384 1625432 5687352 +1621424 5686384 1621408 5687168 1621800 5687120 1625432 5687352 +1625480 5687312 1625488 5687312 1625568 5687272 1621424 5686384 +1621112 5686056 1620744 5686904 1621296 5687176 1621424 5686384 +1620744 5686904 1620984 5687128 1621296 5687176 1621424 5686384 +1620984 5687128 1621088 5687176 1621296 5687176 1621424 5686384 +1621112 5686056 1620576 5686728 1620744 5686904 1621424 5686384 +1621112 5686056 1620592 5686144 1620576 5686728 1621424 5686384 +1621296 5687176 1621408 5687168 1621424 5686384 1620984 5687128 +1621112 5686056 1620576 5686728 1621424 5686384 1625568 5687272 +1620744 5686904 1620984 5687128 1621424 5686384 1620576 5686728 +1625432 5687352 1621672 5686496 1621800 5687120 1622304 5687800 +1625432 5687352 1621672 5686496 1622304 5687800 1622360 5687856 +1621800 5687120 1622200 5687776 1622304 5687800 1621672 5686496 +1621424 5686384 1621672 5686496 1625432 5687352 1625480 5687312 +1621424 5686384 1621672 5686496 1625480 5687312 1625568 5687272 +1621672 5686496 1625432 5687352 1625480 5687312 1625568 5687272 +1621424 5686384 1621672 5686496 1625568 5687272 1621112 5686056 +1625568 5687272 1625656 5687248 1621112 5686056 1621672 5686496 +1621112 5686056 1621424 5686384 1621672 5686496 1625656 5687248 +1621672 5686496 1625480 5687312 1625568 5687272 1625656 5687248 +1621424 5686384 1621800 5687120 1621672 5686496 1621112 5686056 +1621800 5687120 1621672 5686496 1621424 5686384 1621408 5687168 +1621424 5686384 1621296 5687176 1621408 5687168 1621672 5686496 +1621672 5686496 1621112 5686056 1621424 5686384 1621408 5687168 +1625432 5687352 1625480 5687312 1621672 5686496 1622304 5687800 +1621672 5686496 1621408 5687168 1621800 5687120 1622304 5687800 +1625480 5687312 1625488 5687312 1625568 5687272 1621672 5686496 +1625656 5687248 1621048 5686008 1621112 5686056 1621672 5686496 +1625432 5687352 1621744 5686536 1622304 5687800 1622360 5687856 +1622304 5687800 1621744 5686536 1621672 5686496 1621800 5687120 +1622304 5687800 1621744 5686536 1621800 5687120 1622200 5687776 +1621672 5686496 1621744 5686536 1625432 5687352 1625480 5687312 +1621672 5686496 1621744 5686536 1625480 5687312 1625568 5687272 +1621672 5686496 1621744 5686536 1625568 5687272 1625656 5687248 +1621744 5686536 1625480 5687312 1625568 5687272 1625656 5687248 +1621672 5686496 1621744 5686536 1625656 5687248 1621112 5686056 +1621672 5686496 1621744 5686536 1621112 5686056 1621424 5686384 +1621744 5686536 1625568 5687272 1625656 5687248 1621112 5686056 +1621744 5686536 1625432 5687352 1625480 5687312 1625568 5687272 +1621744 5686536 1621112 5686056 1621672 5686496 1621800 5687120 +1621672 5686496 1621408 5687168 1621800 5687120 1621744 5686536 +1621800 5687120 1622304 5687800 1621744 5686536 1621408 5687168 +1621672 5686496 1621424 5686384 1621408 5687168 1621744 5686536 +1621672 5686496 1621408 5687168 1621744 5686536 1621112 5686056 +1621744 5686536 1622304 5687800 1625432 5687352 1625480 5687312 +1622304 5687800 1625432 5687352 1621744 5686536 1621800 5687120 +1625480 5687312 1625488 5687312 1625568 5687272 1621744 5686536 +1625656 5687248 1621048 5686008 1621112 5686056 1621744 5686536 +1625432 5687352 1622296 5686800 1622304 5687800 1622360 5687856 +1625432 5687352 1622296 5686800 1622360 5687856 1625432 5687384 +1621744 5686536 1622296 5686800 1625432 5687352 1625480 5687312 +1621744 5686536 1622296 5686800 1625480 5687312 1625568 5687272 +1621744 5686536 1622296 5686800 1625568 5687272 1625656 5687248 +1621744 5686536 1622296 5686800 1625656 5687248 1621112 5686056 +1622296 5686800 1625568 5687272 1625656 5687248 1621112 5686056 +1621744 5686536 1622296 5686800 1621112 5686056 1621672 5686496 +1622296 5686800 1625480 5687312 1625568 5687272 1625656 5687248 +1622296 5686800 1625432 5687352 1625480 5687312 1625568 5687272 +1621744 5686536 1622304 5687800 1622296 5686800 1621112 5686056 +1622304 5687800 1622296 5686800 1621744 5686536 1621800 5687120 +1622304 5687800 1622296 5686800 1621800 5687120 1622200 5687776 +1622304 5687800 1622296 5686800 1622200 5687776 1622296 5687808 +1621744 5686536 1621408 5687168 1621800 5687120 1622296 5686800 +1621800 5687120 1622160 5687776 1622200 5687776 1622296 5686800 +1622296 5686800 1621112 5686056 1621744 5686536 1621800 5687120 +1622296 5686800 1621744 5686536 1621800 5687120 1622200 5687776 +1625432 5687352 1625480 5687312 1622296 5686800 1622360 5687856 +1622296 5686800 1622200 5687776 1622304 5687800 1622360 5687856 +1625480 5687312 1625488 5687312 1625568 5687272 1622296 5686800 +1625656 5687248 1621048 5686008 1621112 5686056 1622296 5686800 +1625432 5687352 1622472 5686920 1622360 5687856 1625432 5687384 +1622360 5687856 1622472 5686920 1622296 5686800 1622304 5687800 +1622296 5686800 1622472 5686920 1625432 5687352 1625480 5687312 +1622296 5686800 1622472 5686920 1625480 5687312 1625568 5687272 +1622296 5686800 1622472 5686920 1625568 5687272 1625656 5687248 +1622472 5686920 1625432 5687352 1625480 5687312 1625568 5687272 +1622472 5686920 1625568 5687272 1622296 5686800 1622304 5687800 +1622296 5686800 1622200 5687776 1622304 5687800 1622472 5686920 +1622304 5687800 1622360 5687856 1622472 5686920 1622200 5687776 +1622296 5686800 1621800 5687120 1622200 5687776 1622472 5686920 +1622200 5687776 1622296 5687808 1622304 5687800 1622472 5686920 +1621800 5687120 1622160 5687776 1622200 5687776 1622472 5686920 +1622296 5686800 1621744 5686536 1621800 5687120 1622472 5686920 +1622296 5686800 1621800 5687120 1622472 5686920 1625568 5687272 +1622200 5687776 1622304 5687800 1622472 5686920 1621800 5687120 +1625432 5687352 1625480 5687312 1622472 5686920 1625432 5687384 +1622472 5686920 1622304 5687800 1622360 5687856 1625432 5687384 +1625480 5687312 1625488 5687312 1625568 5687272 1622472 5686920 +1622360 5687856 1622360 5687944 1625432 5687384 1622472 5686920 +1622472 5686920 1622592 5687064 1625432 5687384 1625432 5687352 +1622472 5686920 1622592 5687064 1625432 5687352 1625480 5687312 +1622592 5687064 1625432 5687384 1625432 5687352 1625480 5687312 +1622472 5686920 1622592 5687064 1625480 5687312 1625568 5687272 +1622472 5686920 1622360 5687856 1622592 5687064 1625480 5687312 +1622360 5687856 1622592 5687064 1622472 5686920 1622304 5687800 +1622472 5686920 1622200 5687776 1622304 5687800 1622592 5687064 +1622200 5687776 1622296 5687808 1622304 5687800 1622592 5687064 +1622472 5686920 1621800 5687120 1622200 5687776 1622592 5687064 +1622200 5687776 1622304 5687800 1622592 5687064 1621800 5687120 +1622472 5686920 1622296 5686800 1621800 5687120 1622592 5687064 +1621800 5687120 1622160 5687776 1622200 5687776 1622592 5687064 +1622592 5687064 1625480 5687312 1622472 5686920 1621800 5687120 +1622304 5687800 1622360 5687856 1622592 5687064 1622200 5687776 +1622592 5687064 1622360 5687856 1625432 5687384 1625432 5687352 +1622360 5687856 1625432 5687384 1622592 5687064 1622304 5687800 +1625432 5687384 1622592 5687064 1622360 5687856 1622360 5687944 +1622592 5687064 1622704 5687208 1625432 5687384 1625432 5687352 +1622592 5687064 1622704 5687208 1625432 5687352 1625480 5687312 +1622592 5687064 1622360 5687856 1622704 5687208 1625432 5687352 +1622360 5687856 1622704 5687208 1622592 5687064 1622304 5687800 +1622592 5687064 1622200 5687776 1622304 5687800 1622704 5687208 +1622592 5687064 1621800 5687120 1622200 5687776 1622704 5687208 +1622200 5687776 1622296 5687808 1622304 5687800 1622704 5687208 +1622704 5687208 1625432 5687352 1622592 5687064 1622200 5687776 +1622304 5687800 1622360 5687856 1622704 5687208 1622200 5687776 +1622704 5687208 1622360 5687856 1625432 5687384 1625432 5687352 +1622360 5687856 1625432 5687384 1622704 5687208 1622304 5687800 +1625432 5687384 1622704 5687208 1622360 5687856 1622360 5687944 +1625432 5687384 1625432 5687352 1622704 5687208 1622360 5687944 +1622704 5687208 1622304 5687800 1622360 5687856 1622360 5687944 +1625432 5687384 1622704 5687208 1622360 5687944 1625472 5687448 +1622704 5687208 1622888 5687408 1625432 5687384 1625432 5687352 +1622704 5687208 1622888 5687408 1625432 5687352 1622592 5687064 +1622704 5687208 1622360 5687944 1622888 5687408 1625432 5687352 +1622888 5687408 1622360 5687944 1625432 5687384 1625432 5687352 +1622360 5687944 1622888 5687408 1622704 5687208 1622360 5687856 +1622888 5687408 1625432 5687352 1622704 5687208 1622360 5687856 +1622704 5687208 1622304 5687800 1622360 5687856 1622888 5687408 +1622704 5687208 1622200 5687776 1622304 5687800 1622888 5687408 +1622704 5687208 1622304 5687800 1622888 5687408 1625432 5687352 +1622360 5687944 1625432 5687384 1622888 5687408 1622360 5687856 +1622360 5687856 1622360 5687944 1622888 5687408 1622304 5687800 +1625432 5687384 1622888 5687408 1622360 5687944 1625472 5687448 +1622360 5687944 1625520 5687512 1625472 5687448 1622888 5687408 +1622360 5687944 1625576 5687568 1625520 5687512 1622888 5687408 +1625520 5687512 1625472 5687448 1622888 5687408 1625576 5687568 +1622360 5687944 1622280 5688056 1625576 5687568 1622888 5687408 +1625432 5687384 1625432 5687352 1622888 5687408 1625472 5687448 +1622888 5687408 1622360 5687856 1622360 5687944 1625576 5687568 +1625472 5687448 1625432 5687384 1622888 5687408 1625520 5687512 +1622888 5687408 1623056 5687624 1625576 5687568 1625520 5687512 +1622888 5687408 1623056 5687624 1625520 5687512 1625472 5687448 +1623056 5687624 1625576 5687568 1625520 5687512 1625472 5687448 +1625576 5687568 1623056 5687624 1622360 5687944 1622280 5688056 +1622360 5687944 1622296 5688016 1622280 5688056 1623056 5687624 +1625576 5687568 1623056 5687624 1622280 5688056 1625672 5687640 +1622280 5688056 1625760 5687704 1625672 5687640 1623056 5687624 +1622280 5688056 1624104 5692408 1625760 5687704 1623056 5687624 +1622280 5688056 1624032 5692416 1624104 5692408 1623056 5687624 +1625760 5687704 1625672 5687640 1623056 5687624 1624104 5692408 +1623056 5687624 1622360 5687944 1622280 5688056 1624104 5692408 +1625672 5687640 1625576 5687568 1623056 5687624 1625760 5687704 +1622888 5687408 1622360 5687944 1623056 5687624 1625472 5687448 +1622360 5687944 1623056 5687624 1622888 5687408 1622360 5687856 +1623056 5687624 1625472 5687448 1622888 5687408 1622360 5687856 +1623056 5687624 1625672 5687640 1625576 5687568 1625520 5687512 +1623056 5687624 1622360 5687856 1622360 5687944 1622280 5688056 +1622888 5687408 1622304 5687800 1622360 5687856 1623056 5687624 +1624104 5692408 1625848 5687744 1625760 5687704 1623056 5687624 +1622888 5687408 1623056 5687624 1625472 5687448 1625432 5687384 +1623056 5687624 1625520 5687512 1625472 5687448 1625432 5687384 +1622888 5687408 1623056 5687624 1625432 5687384 1625432 5687352 +1622888 5687408 1623056 5687624 1625432 5687352 1622704 5687208 +1622888 5687408 1622360 5687856 1623056 5687624 1625432 5687352 +1623056 5687624 1625472 5687448 1625432 5687384 1625432 5687352 +1624104 5692408 1623064 5687664 1622280 5688056 1624032 5692416 +1622280 5688056 1623136 5692368 1624032 5692416 1623064 5687664 +1623056 5687624 1623064 5687664 1624104 5692408 1625760 5687704 +1623056 5687624 1623064 5687664 1625760 5687704 1625672 5687640 +1623064 5687664 1624104 5692408 1625760 5687704 1625672 5687640 +1622280 5688056 1623064 5687664 1623056 5687624 1622360 5687944 +1622280 5688056 1623064 5687664 1622360 5687944 1622296 5688016 +1623056 5687624 1623064 5687664 1625672 5687640 1625576 5687568 +1623064 5687664 1625760 5687704 1625672 5687640 1625576 5687568 +1623056 5687624 1623064 5687664 1625576 5687568 1625520 5687512 +1623056 5687624 1623064 5687664 1625520 5687512 1625472 5687448 +1623056 5687624 1623064 5687664 1625472 5687448 1625432 5687384 +1623064 5687664 1625520 5687512 1625472 5687448 1625432 5687384 +1623064 5687664 1625672 5687640 1625576 5687568 1625520 5687512 +1623064 5687664 1625576 5687568 1625520 5687512 1625472 5687448 +1623056 5687624 1622360 5687944 1623064 5687664 1625432 5687384 +1623056 5687624 1622360 5687856 1622360 5687944 1623064 5687664 +1622360 5687944 1622280 5688056 1623064 5687664 1622360 5687856 +1623056 5687624 1622888 5687408 1622360 5687856 1623064 5687664 +1623056 5687624 1622888 5687408 1623064 5687664 1625432 5687384 +1622360 5687856 1622360 5687944 1623064 5687664 1622888 5687408 +1624104 5692408 1625760 5687704 1623064 5687664 1624032 5692416 +1623064 5687664 1622360 5687944 1622280 5688056 1624032 5692416 +1622888 5687408 1622304 5687800 1622360 5687856 1623064 5687664 +1624104 5692408 1625848 5687744 1625760 5687704 1623064 5687664 +1623056 5687624 1623064 5687664 1625432 5687384 1625432 5687352 +1623064 5687664 1623096 5687688 1625760 5687704 1625672 5687640 +1623064 5687664 1623096 5687688 1625672 5687640 1625576 5687568 +1623096 5687688 1625760 5687704 1625672 5687640 1625576 5687568 +1623064 5687664 1623096 5687688 1625576 5687568 1625520 5687512 +1623096 5687688 1625672 5687640 1625576 5687568 1625520 5687512 +1623064 5687664 1623096 5687688 1625520 5687512 1625472 5687448 +1623064 5687664 1623096 5687688 1625472 5687448 1625432 5687384 +1623064 5687664 1623096 5687688 1625432 5687384 1623056 5687624 +1623096 5687688 1625472 5687448 1625432 5687384 1623056 5687624 +1623096 5687688 1625576 5687568 1625520 5687512 1625472 5687448 +1623096 5687688 1625520 5687512 1625472 5687448 1625432 5687384 +1624104 5692408 1623096 5687688 1623064 5687664 1624032 5692416 +1623064 5687664 1622280 5688056 1624032 5692416 1623096 5687688 +1622280 5688056 1623136 5692368 1624032 5692416 1623096 5687688 +1622280 5688056 1623136 5692368 1623096 5687688 1623064 5687664 +1623136 5692368 1623448 5692552 1624032 5692416 1623096 5687688 +1622280 5688056 1623032 5692344 1623136 5692368 1623096 5687688 +1624032 5692416 1624104 5692408 1623096 5687688 1623136 5692368 +1623064 5687664 1622280 5688056 1623096 5687688 1623056 5687624 +1623064 5687664 1622360 5687944 1622280 5688056 1623096 5687688 +1622280 5688056 1623136 5692368 1623096 5687688 1622360 5687944 +1622360 5687944 1622296 5688016 1622280 5688056 1623096 5687688 +1623064 5687664 1622360 5687856 1622360 5687944 1623096 5687688 +1623064 5687664 1622360 5687944 1623096 5687688 1623056 5687624 +1623096 5687688 1624104 5692408 1625760 5687704 1625672 5687640 +1624104 5692408 1625760 5687704 1623096 5687688 1624032 5692416 +1625760 5687704 1623096 5687688 1624104 5692408 1625848 5687744 +1625432 5687384 1625432 5687352 1623056 5687624 1623096 5687688 +1623056 5687624 1623064 5687664 1623096 5687688 1625432 5687352 +1625432 5687384 1625432 5687352 1623096 5687688 1625472 5687448 +1625432 5687352 1622888 5687408 1623056 5687624 1623096 5687688 +1623096 5687688 1622936 5687752 1622280 5688056 1623136 5692368 +1623096 5687688 1622936 5687752 1623136 5692368 1624032 5692416 +1622936 5687752 1622280 5688056 1623136 5692368 1624032 5692416 +1622280 5688056 1622936 5687752 1622360 5687944 1622296 5688016 +1623136 5692368 1623448 5692552 1624032 5692416 1622936 5687752 +1622280 5688056 1623032 5692344 1623136 5692368 1622936 5687752 +1623136 5692368 1624032 5692416 1622936 5687752 1623032 5692344 +1622280 5688056 1622240 5688080 1623032 5692344 1622936 5687752 +1623096 5687688 1622936 5687752 1624032 5692416 1624104 5692408 +1622936 5687752 1623136 5692368 1624032 5692416 1624104 5692408 +1622360 5687944 1622936 5687752 1623096 5687688 1623064 5687664 +1622360 5687944 1622936 5687752 1623064 5687664 1622360 5687856 +1623064 5687664 1622888 5687408 1622360 5687856 1622936 5687752 +1622360 5687856 1622360 5687944 1622936 5687752 1622888 5687408 +1623064 5687664 1623056 5687624 1622888 5687408 1622936 5687752 +1622888 5687408 1622360 5687856 1622936 5687752 1623056 5687624 +1622936 5687752 1623096 5687688 1623064 5687664 1623056 5687624 +1623096 5687688 1623064 5687664 1622936 5687752 1624104 5692408 +1623096 5687688 1622936 5687752 1624104 5692408 1625760 5687704 +1622936 5687752 1622360 5687944 1622280 5688056 1623032 5692344 +1622360 5687944 1622280 5688056 1622936 5687752 1622360 5687856 +1622888 5687408 1622304 5687800 1622360 5687856 1622936 5687752 +1622936 5687752 1622920 5687728 1622360 5687856 1622360 5687944 +1622888 5687408 1622920 5687728 1622936 5687752 1623056 5687624 +1622936 5687752 1623064 5687664 1623056 5687624 1622920 5687728 +1623056 5687624 1622888 5687408 1622920 5687728 1623064 5687664 +1622936 5687752 1623096 5687688 1623064 5687664 1622920 5687728 +1622936 5687752 1623064 5687664 1622920 5687728 1622360 5687944 +1622936 5687752 1622920 5687728 1622360 5687944 1622280 5688056 +1622920 5687728 1622888 5687408 1622360 5687856 1622360 5687944 +1622888 5687408 1622360 5687856 1622920 5687728 1623056 5687624 +1622360 5687856 1622920 5687728 1622888 5687408 1622304 5687800 +1622920 5687728 1622720 5687744 1622360 5687856 1622360 5687944 +1622920 5687728 1622720 5687744 1622360 5687944 1622936 5687752 +1622360 5687944 1622280 5688056 1622936 5687752 1622720 5687744 +1622720 5687744 1622360 5687856 1622360 5687944 1622936 5687752 +1622920 5687728 1622888 5687408 1622720 5687744 1622936 5687752 +1622888 5687408 1622720 5687744 1622920 5687728 1623056 5687624 +1622720 5687744 1622888 5687408 1622360 5687856 1622360 5687944 +1622360 5687856 1622720 5687744 1622888 5687408 1622304 5687800 +1622888 5687408 1622704 5687208 1622304 5687800 1622720 5687744 +1622704 5687208 1622200 5687776 1622304 5687800 1622720 5687744 +1622360 5687856 1622360 5687944 1622720 5687744 1622304 5687800 +1622720 5687744 1622920 5687728 1622888 5687408 1622704 5687208 +1622304 5687800 1622360 5687856 1622720 5687744 1622704 5687208 +1622304 5687800 1622624 5687736 1622704 5687208 1622200 5687776 +1622704 5687208 1622624 5687736 1622720 5687744 1622888 5687408 +1622624 5687736 1622304 5687800 1622720 5687744 1622888 5687408 +1622720 5687744 1622920 5687728 1622888 5687408 1622624 5687736 +1622704 5687208 1622304 5687800 1622624 5687736 1622888 5687408 +1622720 5687744 1622624 5687736 1622304 5687800 1622360 5687856 +1622720 5687744 1622624 5687736 1622360 5687856 1622360 5687944 +1622720 5687744 1622624 5687736 1622360 5687944 1622936 5687752 +1622720 5687744 1622888 5687408 1622624 5687736 1622360 5687944 +1622624 5687736 1622704 5687208 1622304 5687800 1622360 5687856 +1622624 5687736 1622304 5687800 1622360 5687856 1622360 5687944 +1622304 5687800 1622456 5687680 1622704 5687208 1622200 5687776 +1622304 5687800 1622456 5687680 1622200 5687776 1622296 5687808 +1622704 5687208 1622592 5687064 1622200 5687776 1622456 5687680 +1622592 5687064 1621800 5687120 1622200 5687776 1622456 5687680 +1621800 5687120 1622160 5687776 1622200 5687776 1622456 5687680 +1622592 5687064 1622472 5686920 1621800 5687120 1622456 5687680 +1622592 5687064 1621800 5687120 1622456 5687680 1622704 5687208 +1622200 5687776 1622304 5687800 1622456 5687680 1621800 5687120 +1622624 5687736 1622456 5687680 1622304 5687800 1622360 5687856 +1622624 5687736 1622704 5687208 1622456 5687680 1622360 5687856 +1622704 5687208 1622456 5687680 1622624 5687736 1622888 5687408 +1622304 5687800 1622360 5687856 1622456 5687680 1622200 5687776 +1622456 5687680 1622624 5687736 1622704 5687208 1622592 5687064 +1622624 5687736 1622456 5687680 1622360 5687856 1622360 5687944 +1621800 5687120 1622280 5687544 1622456 5687680 1622592 5687064 +1622200 5687776 1622280 5687544 1621800 5687120 1622160 5687776 +1621800 5687120 1622112 5687792 1622160 5687776 1622280 5687544 +1621800 5687120 1622080 5687816 1622112 5687792 1622280 5687544 +1622160 5687776 1622200 5687776 1622280 5687544 1622112 5687792 +1621800 5687120 1622280 5687544 1622592 5687064 1622472 5686920 +1622280 5687544 1622456 5687680 1622592 5687064 1622472 5686920 +1621800 5687120 1622280 5687544 1622472 5686920 1622296 5686800 +1622456 5687680 1622704 5687208 1622592 5687064 1622280 5687544 +1622592 5687064 1622472 5686920 1622280 5687544 1622704 5687208 +1622456 5687680 1622280 5687544 1622200 5687776 1622304 5687800 +1622200 5687776 1622296 5687808 1622304 5687800 1622280 5687544 +1622456 5687680 1622280 5687544 1622304 5687800 1622360 5687856 +1622280 5687544 1622304 5687800 1622456 5687680 1622704 5687208 +1622456 5687680 1622624 5687736 1622704 5687208 1622280 5687544 +1622200 5687776 1622304 5687800 1622280 5687544 1622160 5687776 +1621800 5687120 1622112 5687792 1622280 5687544 1622472 5686920 +1621800 5687120 1621968 5687136 1622472 5686920 1622296 5686800 +1621800 5687120 1621968 5687136 1622296 5686800 1621744 5686536 +1621968 5687136 1622472 5686920 1622296 5686800 1621744 5686536 +1621800 5687120 1621968 5687136 1621744 5686536 1621408 5687168 +1622472 5686920 1621968 5687136 1622280 5687544 1622592 5687064 +1622280 5687544 1622704 5687208 1622592 5687064 1621968 5687136 +1621968 5687136 1621800 5687120 1622280 5687544 1622592 5687064 +1622280 5687544 1621968 5687136 1621800 5687120 1622112 5687792 +1621800 5687120 1622080 5687816 1622112 5687792 1621968 5687136 +1621800 5687120 1622056 5687840 1622080 5687816 1621968 5687136 +1622280 5687544 1621968 5687136 1622112 5687792 1622160 5687776 +1622280 5687544 1622592 5687064 1621968 5687136 1622112 5687792 +1622112 5687792 1622280 5687544 1621968 5687136 1622080 5687816 +1621800 5687120 1622080 5687816 1621968 5687136 1621744 5686536 +1621968 5687136 1622592 5687064 1622472 5686920 1622296 5686800 +1621800 5687120 1621904 5687096 1621744 5686536 1621408 5687168 +1621744 5686536 1621904 5687096 1621968 5687136 1622296 5686800 +1621968 5687136 1622472 5686920 1622296 5686800 1621904 5687096 +1621968 5687136 1621904 5687096 1621800 5687120 1622080 5687816 +1621904 5687096 1621800 5687120 1621968 5687136 1622296 5686800 +1621744 5686536 1621800 5687120 1621904 5687096 1622296 5686800 +1626000 5687776 1625576 5690216 1629840 5692680 1629944 5692528 +1626000 5687776 1625576 5690216 1629944 5692528 1626040 5687760 +1629944 5692528 1630136 5692352 1626040 5687760 1625576 5690216 +1630136 5692352 1626064 5687736 1626040 5687760 1625576 5690216 +1630136 5692352 1630232 5692312 1626064 5687736 1625576 5690216 +1630136 5692352 1626064 5687736 1625576 5690216 1629944 5692528 +1626040 5687760 1626000 5687776 1625576 5690216 1626064 5687736 +1625576 5690216 1629840 5692680 1629944 5692528 1630136 5692352 +1624104 5692408 1625576 5690216 1626000 5687776 1625968 5687784 +1624104 5692408 1625576 5690216 1625968 5687784 1625936 5687776 +1625576 5690216 1626000 5687776 1625968 5687784 1625936 5687776 +1624104 5692408 1625576 5690216 1625936 5687776 1625848 5687744 +1625576 5690216 1625968 5687784 1625936 5687776 1625848 5687744 +1624104 5692408 1625576 5690216 1625848 5687744 1625760 5687704 +1625576 5690216 1625936 5687776 1625848 5687744 1625760 5687704 +1629840 5692680 1625576 5690216 1624104 5692408 1624120 5692440 +1629840 5692680 1625576 5690216 1624120 5692440 1629816 5692792 +1625576 5690216 1624104 5692408 1624120 5692440 1629816 5692792 +1624120 5692440 1624280 5693272 1629816 5692792 1625576 5690216 +1624280 5693272 1626552 5696056 1629816 5692792 1625576 5690216 +1629816 5692792 1629840 5692680 1625576 5690216 1624280 5693272 +1624120 5692440 1624280 5693272 1625576 5690216 1624104 5692408 +1624120 5692440 1624120 5692536 1624280 5693272 1625576 5690216 +1625576 5690216 1629816 5692792 1629840 5692680 1629944 5692528 +1624104 5692408 1624120 5692440 1625576 5690216 1625760 5687704 +1626000 5687776 1625968 5687784 1625576 5690216 1626040 5687760 +1624104 5692408 1625576 5690216 1625760 5687704 1623096 5687688 +1625576 5690216 1625848 5687744 1625760 5687704 1623096 5687688 +1625760 5687704 1625672 5687640 1623096 5687688 1625576 5690216 +1625760 5687704 1625672 5687640 1625576 5690216 1625848 5687744 +1625672 5687640 1625576 5687568 1623096 5687688 1625576 5690216 +1625576 5687568 1625520 5687512 1623096 5687688 1625576 5690216 +1625672 5687640 1625576 5687568 1625576 5690216 1625760 5687704 +1624104 5692408 1625576 5690216 1623096 5687688 1622936 5687752 +1624104 5692408 1625576 5690216 1622936 5687752 1624032 5692416 +1622936 5687752 1623136 5692368 1624032 5692416 1625576 5690216 +1622936 5687752 1623032 5692344 1623136 5692368 1625576 5690216 +1623136 5692368 1624032 5692416 1625576 5690216 1623032 5692344 +1623136 5692368 1623448 5692552 1624032 5692416 1625576 5690216 +1622936 5687752 1622280 5688056 1623032 5692344 1625576 5690216 +1623032 5692344 1623136 5692368 1625576 5690216 1622280 5688056 +1622280 5688056 1622240 5688080 1623032 5692344 1625576 5690216 +1623032 5692344 1623136 5692368 1625576 5690216 1622240 5688080 +1622280 5688056 1622240 5688080 1625576 5690216 1622936 5687752 +1624032 5692416 1624104 5692408 1625576 5690216 1623136 5692368 +1625576 5690216 1623096 5687688 1622936 5687752 1622280 5688056 +1622936 5687752 1622360 5687944 1622280 5688056 1625576 5690216 +1624104 5692408 1624120 5692440 1625576 5690216 1624032 5692416 +1622240 5688080 1623000 5692344 1623032 5692344 1625576 5690216 +1623096 5687688 1622936 5687752 1625576 5690216 1625576 5687568 +1629816 5692792 1625784 5690360 1624280 5693272 1626552 5696056 +1625576 5690216 1625784 5690360 1629816 5692792 1629840 5692680 +1624280 5693272 1625784 5690360 1625576 5690216 1624120 5692440 +1625576 5690216 1624104 5692408 1624120 5692440 1625784 5690360 +1624280 5693272 1625784 5690360 1624120 5692440 1624120 5692536 +1624120 5692440 1624280 5693272 1625784 5690360 1624104 5692408 +1625576 5690216 1625784 5690360 1629840 5692680 1629944 5692528 +1625576 5690216 1625784 5690360 1629944 5692528 1630136 5692352 +1625576 5690216 1625784 5690360 1630136 5692352 1626064 5687736 +1630136 5692352 1630232 5692312 1626064 5687736 1625784 5690360 +1625576 5690216 1625784 5690360 1626064 5687736 1626040 5687760 +1625784 5690360 1630136 5692352 1626064 5687736 1626040 5687760 +1625576 5690216 1625784 5690360 1626040 5687760 1626000 5687776 +1625784 5690360 1626064 5687736 1626040 5687760 1626000 5687776 +1625784 5690360 1629944 5692528 1630136 5692352 1626064 5687736 +1625784 5690360 1629816 5692792 1629840 5692680 1629944 5692528 +1625784 5690360 1629840 5692680 1629944 5692528 1630136 5692352 +1625576 5690216 1624032 5692416 1624104 5692408 1625784 5690360 +1625576 5690216 1624104 5692408 1625784 5690360 1626000 5687776 +1625576 5690216 1625784 5690360 1626000 5687776 1625968 5687784 +1625784 5690360 1624280 5693272 1629816 5692792 1629840 5692680 +1624280 5693272 1629816 5692792 1625784 5690360 1624120 5692440 +1629840 5692680 1625968 5690464 1625784 5690360 1629816 5692792 +1625784 5690360 1625968 5690464 1629944 5692528 1630136 5692352 +1625784 5690360 1625968 5690464 1630136 5692352 1626064 5687736 +1630136 5692352 1630232 5692312 1626064 5687736 1625968 5690464 +1630232 5692312 1626096 5687664 1626064 5687736 1625968 5690464 +1625784 5690360 1625968 5690464 1626064 5687736 1626040 5687760 +1625784 5690360 1625968 5690464 1626040 5687760 1626000 5687776 +1626064 5687736 1626040 5687760 1625968 5690464 1630232 5692312 +1625968 5690464 1629944 5692528 1630136 5692352 1630232 5692312 +1625784 5690360 1624280 5693272 1629816 5692792 1625968 5690464 +1624280 5693272 1626552 5696056 1629816 5692792 1625968 5690464 +1629816 5692792 1629840 5692680 1625968 5690464 1624280 5693272 +1625968 5690464 1626040 5687760 1625784 5690360 1624280 5693272 +1625784 5690360 1624120 5692440 1624280 5693272 1625968 5690464 +1624120 5692440 1624120 5692536 1624280 5693272 1625968 5690464 +1625784 5690360 1624104 5692408 1624120 5692440 1625968 5690464 +1625784 5690360 1625576 5690216 1624104 5692408 1625968 5690464 +1624280 5693272 1629816 5692792 1625968 5690464 1624120 5692440 +1625784 5690360 1624104 5692408 1625968 5690464 1626040 5687760 +1624120 5692440 1624280 5693272 1625968 5690464 1624104 5692408 +1625968 5690464 1629840 5692680 1629944 5692528 1630136 5692352 +1629840 5692680 1629944 5692528 1625968 5690464 1629816 5692792 +1626064 5687736 1626208 5690560 1630232 5692312 1626096 5687664 +1630232 5692312 1630448 5692312 1626096 5687664 1626208 5690560 +1630232 5692312 1626208 5690560 1625968 5690464 1630136 5692352 +1625968 5690464 1626208 5690560 1626064 5687736 1626040 5687760 +1625968 5690464 1626208 5690560 1626040 5687760 1625784 5690360 +1625968 5690464 1629944 5692528 1630136 5692352 1626208 5690560 +1630136 5692352 1630232 5692312 1626208 5690560 1629944 5692528 +1625968 5690464 1629840 5692680 1629944 5692528 1626208 5690560 +1629944 5692528 1630136 5692352 1626208 5690560 1629840 5692680 +1626208 5690560 1626040 5687760 1625968 5690464 1629840 5692680 +1625968 5690464 1629816 5692792 1629840 5692680 1626208 5690560 +1625968 5690464 1624280 5693272 1629816 5692792 1626208 5690560 +1624280 5693272 1626552 5696056 1629816 5692792 1626208 5690560 +1625968 5690464 1624120 5692440 1624280 5693272 1626208 5690560 +1624280 5693272 1629816 5692792 1626208 5690560 1624120 5692440 +1624120 5692440 1624120 5692536 1624280 5693272 1626208 5690560 +1624280 5693272 1629816 5692792 1626208 5690560 1624120 5692536 +1624120 5692536 1624232 5693160 1624280 5693272 1626208 5690560 +1624120 5692440 1624120 5692536 1626208 5690560 1625968 5690464 +1625968 5690464 1624104 5692408 1624120 5692440 1626208 5690560 +1629840 5692680 1629944 5692528 1626208 5690560 1629816 5692792 +1625968 5690464 1624120 5692440 1626208 5690560 1626040 5687760 +1629816 5692792 1629840 5692680 1626208 5690560 1624280 5693272 +1626064 5687736 1626040 5687760 1626208 5690560 1626096 5687664 +1626208 5690560 1630136 5692352 1630232 5692312 1626096 5687664 +1626096 5687664 1626824 5690816 1630232 5692312 1630448 5692312 +1626208 5690560 1626824 5690816 1626096 5687664 1626064 5687736 +1626208 5690560 1626824 5690816 1626064 5687736 1626040 5687760 +1626824 5690816 1626096 5687664 1626064 5687736 1626040 5687760 +1626208 5690560 1626824 5690816 1626040 5687760 1625968 5690464 +1626208 5690560 1630232 5692312 1626824 5690816 1626040 5687760 +1630232 5692312 1626824 5690816 1626208 5690560 1630136 5692352 +1626208 5690560 1629944 5692528 1630136 5692352 1626824 5690816 +1626208 5690560 1629840 5692680 1629944 5692528 1626824 5690816 +1629944 5692528 1630136 5692352 1626824 5690816 1629840 5692680 +1626208 5690560 1629816 5692792 1629840 5692680 1626824 5690816 +1629840 5692680 1629944 5692528 1626824 5690816 1629816 5692792 +1626208 5690560 1624280 5693272 1629816 5692792 1626824 5690816 +1624280 5693272 1626552 5696056 1629816 5692792 1626824 5690816 +1626208 5690560 1624120 5692536 1624280 5693272 1626824 5690816 +1626208 5690560 1624120 5692440 1624120 5692536 1626824 5690816 +1624120 5692536 1624280 5693272 1626824 5690816 1624120 5692440 +1626552 5696056 1629856 5692928 1629816 5692792 1626824 5690816 +1624120 5692536 1624232 5693160 1624280 5693272 1626824 5690816 +1624280 5693272 1626520 5696056 1626552 5696056 1626824 5690816 +1626208 5690560 1625968 5690464 1624120 5692440 1626824 5690816 +1629816 5692792 1629840 5692680 1626824 5690816 1626552 5696056 +1624280 5693272 1626552 5696056 1626824 5690816 1624120 5692536 +1626824 5690816 1626040 5687760 1626208 5690560 1624120 5692440 +1630136 5692352 1630232 5692312 1626824 5690816 1629944 5692528 +1626824 5690816 1630232 5692312 1626096 5687664 1626064 5687736 +1630232 5692312 1626096 5687664 1626824 5690816 1630136 5692352 +1626096 5687664 1626976 5690872 1630232 5692312 1630448 5692312 +1626824 5690816 1626976 5690872 1626096 5687664 1626064 5687736 +1626824 5690816 1626976 5690872 1626064 5687736 1626040 5687760 +1626824 5690816 1630232 5692312 1626976 5690872 1626064 5687736 +1630232 5692312 1626976 5690872 1626824 5690816 1630136 5692352 +1626824 5690816 1629944 5692528 1630136 5692352 1626976 5690872 +1626824 5690816 1629840 5692680 1629944 5692528 1626976 5690872 +1626824 5690816 1629816 5692792 1629840 5692680 1626976 5690872 +1629840 5692680 1629944 5692528 1626976 5690872 1629816 5692792 +1626824 5690816 1626552 5696056 1629816 5692792 1626976 5690872 +1626824 5690816 1624280 5693272 1626552 5696056 1626976 5690872 +1626552 5696056 1629856 5692928 1629816 5692792 1626976 5690872 +1624280 5693272 1626520 5696056 1626552 5696056 1626976 5690872 +1629816 5692792 1629840 5692680 1626976 5690872 1626552 5696056 +1626552 5696056 1629816 5692792 1626976 5690872 1624280 5693272 +1626824 5690816 1624120 5692536 1624280 5693272 1626976 5690872 +1629944 5692528 1630136 5692352 1626976 5690872 1629840 5692680 +1626976 5690872 1626064 5687736 1626824 5690816 1624280 5693272 +1630136 5692352 1630232 5692312 1626976 5690872 1629944 5692528 +1626976 5690872 1630232 5692312 1626096 5687664 1626064 5687736 +1630232 5692312 1626096 5687664 1626976 5690872 1630136 5692352 +1629944 5692528 1627248 5691016 1626976 5690872 1629840 5692680 +1626976 5690872 1629816 5692792 1629840 5692680 1627248 5691016 +1626976 5690872 1626552 5696056 1629816 5692792 1627248 5691016 +1629816 5692792 1629840 5692680 1627248 5691016 1626552 5696056 +1626552 5696056 1629856 5692928 1629816 5692792 1627248 5691016 +1629816 5692792 1629840 5692680 1627248 5691016 1629856 5692928 +1626552 5696056 1626600 5696072 1629856 5692928 1627248 5691016 +1626552 5696056 1629856 5692928 1627248 5691016 1626976 5690872 +1626976 5690872 1624280 5693272 1626552 5696056 1627248 5691016 +1626976 5690872 1626824 5690816 1624280 5693272 1627248 5691016 +1624280 5693272 1626520 5696056 1626552 5696056 1627248 5691016 +1626552 5696056 1629856 5692928 1627248 5691016 1624280 5693272 +1624280 5693272 1626552 5696056 1627248 5691016 1626824 5690816 +1626824 5690816 1624120 5692536 1624280 5693272 1627248 5691016 +1629840 5692680 1629944 5692528 1627248 5691016 1629816 5692792 +1626976 5690872 1627248 5691016 1630136 5692352 1630232 5692312 +1627248 5691016 1630232 5692312 1626976 5690872 1626824 5690816 +1626976 5690872 1627248 5691016 1630232 5692312 1626096 5687664 +1630232 5692312 1630448 5692312 1626096 5687664 1627248 5691016 +1627248 5691016 1630136 5692352 1630232 5692312 1626096 5687664 +1626976 5690872 1627248 5691016 1626096 5687664 1626064 5687736 +1626976 5690872 1627248 5691016 1626064 5687736 1626824 5690816 +1626976 5690872 1626824 5690816 1627248 5691016 1626064 5687736 +1627248 5691016 1630232 5692312 1626096 5687664 1626064 5687736 +1629944 5692528 1630136 5692352 1627248 5691016 1629840 5692680 +1627248 5691016 1629944 5692528 1630136 5692352 1630232 5692312 +1629856 5692928 1627352 5691104 1626552 5696056 1626600 5696072 +1629856 5692928 1627352 5691104 1626600 5696072 1626688 5696104 +1627248 5691016 1627352 5691104 1629856 5692928 1629816 5692792 +1627248 5691016 1627352 5691104 1629816 5692792 1629840 5692680 +1627352 5691104 1629856 5692928 1629816 5692792 1629840 5692680 +1626552 5696056 1627352 5691104 1627248 5691016 1624280 5693272 +1626552 5696056 1627352 5691104 1624280 5693272 1626520 5696056 +1627248 5691016 1626824 5690816 1624280 5693272 1627352 5691104 +1627248 5691016 1626976 5690872 1626824 5690816 1627352 5691104 +1624280 5693272 1626552 5696056 1627352 5691104 1626824 5690816 +1626824 5690816 1624280 5693272 1627352 5691104 1626976 5690872 +1626824 5690816 1624120 5692536 1624280 5693272 1627352 5691104 +1627248 5691016 1627352 5691104 1629840 5692680 1629944 5692528 +1627352 5691104 1629816 5692792 1629840 5692680 1629944 5692528 +1627248 5691016 1626976 5690872 1627352 5691104 1629944 5692528 +1627248 5691016 1627352 5691104 1629944 5692528 1630136 5692352 +1627352 5691104 1629840 5692680 1629944 5692528 1630136 5692352 +1627248 5691016 1626976 5690872 1627352 5691104 1630136 5692352 +1629856 5692928 1629816 5692792 1627352 5691104 1626600 5696072 +1627352 5691104 1624280 5693272 1626552 5696056 1626600 5696072 +1627248 5691016 1627352 5691104 1630136 5692352 1630232 5692312 +1627248 5691016 1627352 5691104 1630232 5692312 1626096 5687664 +1630232 5692312 1630448 5692312 1626096 5687664 1627352 5691104 +1627248 5691016 1627352 5691104 1626096 5687664 1626064 5687736 +1627248 5691016 1626976 5690872 1627352 5691104 1626096 5687664 +1627352 5691104 1629944 5692528 1630136 5692352 1630232 5692312 +1627352 5691104 1630136 5692352 1630232 5692312 1626096 5687664 +1629856 5692928 1627368 5691192 1626600 5696072 1626688 5696104 +1626600 5696072 1627368 5691192 1627352 5691104 1626552 5696056 +1626600 5696072 1629856 5692928 1627368 5691192 1626552 5696056 +1627352 5691104 1627368 5691192 1629856 5692928 1629816 5692792 +1627352 5691104 1627368 5691192 1629816 5692792 1629840 5692680 +1627352 5691104 1627368 5691192 1629840 5692680 1629944 5692528 +1627368 5691192 1629816 5692792 1629840 5692680 1629944 5692528 +1627368 5691192 1626600 5696072 1629856 5692928 1629816 5692792 +1627352 5691104 1627368 5691192 1629944 5692528 1630136 5692352 +1627368 5691192 1629840 5692680 1629944 5692528 1630136 5692352 +1627352 5691104 1627368 5691192 1630136 5692352 1630232 5692312 +1627368 5691192 1629856 5692928 1629816 5692792 1629840 5692680 +1627368 5691192 1630136 5692352 1627352 5691104 1626552 5696056 +1627352 5691104 1624280 5693272 1626552 5696056 1627368 5691192 +1626552 5696056 1626600 5696072 1627368 5691192 1624280 5693272 +1624280 5693272 1626520 5696056 1626552 5696056 1627368 5691192 +1627352 5691104 1626824 5690816 1624280 5693272 1627368 5691192 +1627352 5691104 1626976 5690872 1626824 5690816 1627368 5691192 +1627352 5691104 1627248 5691016 1626976 5690872 1627368 5691192 +1626824 5690816 1624280 5693272 1627368 5691192 1626976 5690872 +1626976 5690872 1626824 5690816 1627368 5691192 1627248 5691016 +1626824 5690816 1624120 5692536 1624280 5693272 1627368 5691192 +1627352 5691104 1627248 5691016 1627368 5691192 1630136 5692352 +1624280 5693272 1626552 5696056 1627368 5691192 1626824 5690816 +1626824 5690816 1627304 5691224 1627368 5691192 1626976 5690872 +1627304 5691224 1624280 5693272 1627368 5691192 1626976 5690872 +1626824 5690816 1624280 5693272 1627304 5691224 1626976 5690872 +1627368 5691192 1627248 5691016 1626976 5690872 1627304 5691224 +1627368 5691192 1627352 5691104 1627248 5691016 1627304 5691224 +1627368 5691192 1627352 5691104 1627304 5691224 1624280 5693272 +1626976 5690872 1626824 5690816 1627304 5691224 1627248 5691016 +1627248 5691016 1626976 5690872 1627304 5691224 1627352 5691104 +1624280 5693272 1627304 5691224 1626824 5690816 1624120 5692536 +1626824 5690816 1624120 5692440 1624120 5692536 1627304 5691224 +1626824 5690816 1626208 5690560 1624120 5692440 1627304 5691224 +1624280 5693272 1627304 5691224 1624120 5692536 1624232 5693160 +1624280 5693272 1627368 5691192 1627304 5691224 1624120 5692536 +1627304 5691224 1626976 5690872 1626824 5690816 1624120 5692440 +1624120 5692536 1624280 5693272 1627304 5691224 1624120 5692440 +1627368 5691192 1627304 5691224 1624280 5693272 1626552 5696056 +1627368 5691192 1627304 5691224 1626552 5696056 1626600 5696072 +1627368 5691192 1627352 5691104 1627304 5691224 1626600 5696072 +1627368 5691192 1627304 5691224 1626600 5696072 1629856 5692928 +1626600 5696072 1626688 5696104 1629856 5692928 1627304 5691224 +1627304 5691224 1626552 5696056 1626600 5696072 1629856 5692928 +1627368 5691192 1627304 5691224 1629856 5692928 1629816 5692792 +1627368 5691192 1627352 5691104 1627304 5691224 1629816 5692792 +1627304 5691224 1626600 5696072 1629856 5692928 1629816 5692792 +1627304 5691224 1624120 5692536 1624280 5693272 1626552 5696056 +1624280 5693272 1626520 5696056 1626552 5696056 1627304 5691224 +1627368 5691192 1627304 5691224 1629816 5692792 1629840 5692680 +1627304 5691224 1624280 5693272 1626552 5696056 1626600 5696072 +1624280 5693272 1627168 5691336 1627304 5691224 1624120 5692536 +1624280 5693272 1627168 5691336 1624120 5692536 1624232 5693160 +1627168 5691336 1626552 5696056 1627304 5691224 1624120 5692536 +1624280 5693272 1626552 5696056 1627168 5691336 1624120 5692536 +1626552 5696056 1627168 5691336 1624280 5693272 1626520 5696056 +1627304 5691224 1624120 5692440 1624120 5692536 1627168 5691336 +1627304 5691224 1626824 5690816 1624120 5692440 1627168 5691336 +1626824 5690816 1626208 5690560 1624120 5692440 1627168 5691336 +1626824 5690816 1626208 5690560 1627168 5691336 1627304 5691224 +1624120 5692536 1624280 5693272 1627168 5691336 1624120 5692440 +1627304 5691224 1626824 5690816 1627168 5691336 1626552 5696056 +1627304 5691224 1626976 5690872 1626824 5690816 1627168 5691336 +1626824 5690816 1626208 5690560 1627168 5691336 1626976 5690872 +1627304 5691224 1626976 5690872 1627168 5691336 1626552 5696056 +1627304 5691224 1627248 5691016 1626976 5690872 1627168 5691336 +1627304 5691224 1627248 5691016 1627168 5691336 1626552 5696056 +1626976 5690872 1626824 5690816 1627168 5691336 1627248 5691016 +1626208 5690560 1625968 5690464 1624120 5692440 1627168 5691336 +1627304 5691224 1627352 5691104 1627248 5691016 1627168 5691336 +1624120 5692440 1624120 5692536 1627168 5691336 1626208 5690560 +1627304 5691224 1627168 5691336 1626552 5696056 1626600 5696072 +1627304 5691224 1627168 5691336 1626600 5696072 1629856 5692928 +1626600 5696072 1626688 5696104 1629856 5692928 1627168 5691336 +1629856 5692928 1627304 5691224 1627168 5691336 1626688 5696104 +1626688 5696104 1626864 5696192 1629856 5692928 1627168 5691336 +1627304 5691224 1627168 5691336 1629856 5692928 1629816 5692792 +1627168 5691336 1626688 5696104 1629856 5692928 1629816 5692792 +1627304 5691224 1627168 5691336 1629816 5692792 1627368 5691192 +1627168 5691336 1629856 5692928 1629816 5692792 1627368 5691192 +1627304 5691224 1627248 5691016 1627168 5691336 1627368 5691192 +1627168 5691336 1624280 5693272 1626552 5696056 1626600 5696072 +1629816 5692792 1629840 5692680 1627368 5691192 1627168 5691336 +1627168 5691336 1626552 5696056 1626600 5696072 1626688 5696104 +1626208 5690560 1626992 5691384 1627168 5691336 1626824 5690816 +1627168 5691336 1626976 5690872 1626824 5690816 1626992 5691384 +1626824 5690816 1626208 5690560 1626992 5691384 1626976 5690872 +1627168 5691336 1627248 5691016 1626976 5690872 1626992 5691384 +1626976 5690872 1626824 5690816 1626992 5691384 1627248 5691016 +1626992 5691384 1624120 5692440 1627168 5691336 1627248 5691016 +1626208 5690560 1624120 5692440 1626992 5691384 1626824 5690816 +1627168 5691336 1627304 5691224 1627248 5691016 1626992 5691384 +1624120 5692440 1626992 5691384 1626208 5690560 1625968 5690464 +1627168 5691336 1626992 5691384 1624120 5692440 1624120 5692536 +1627168 5691336 1626992 5691384 1624120 5692536 1624280 5693272 +1624120 5692536 1624232 5693160 1624280 5693272 1626992 5691384 +1627168 5691336 1627248 5691016 1626992 5691384 1624280 5693272 +1627168 5691336 1626992 5691384 1624280 5693272 1626552 5696056 +1626992 5691384 1624120 5692536 1624280 5693272 1626552 5696056 +1627168 5691336 1626992 5691384 1626552 5696056 1626600 5696072 +1627168 5691336 1627248 5691016 1626992 5691384 1626600 5696072 +1626992 5691384 1624280 5693272 1626552 5696056 1626600 5696072 +1626992 5691384 1626208 5690560 1624120 5692440 1624120 5692536 +1624280 5693272 1626520 5696056 1626552 5696056 1626992 5691384 +1626992 5691384 1624120 5692440 1624120 5692536 1624280 5693272 +1627168 5691336 1626992 5691384 1626600 5696072 1626688 5696104 +1627168 5691336 1626992 5691384 1626688 5696104 1629856 5692928 +1627168 5691336 1626992 5691384 1629856 5692928 1629816 5692792 +1626688 5696104 1626864 5696192 1629856 5692928 1626992 5691384 +1626992 5691384 1626552 5696056 1626600 5696072 1626688 5696104 +1627168 5691336 1627248 5691016 1626992 5691384 1629856 5692928 +1626992 5691384 1626600 5696072 1626688 5696104 1629856 5692928 +1626992 5691384 1626872 5691384 1624120 5692440 1624120 5692536 +1626992 5691384 1626208 5690560 1626872 5691384 1624120 5692536 +1626208 5690560 1626872 5691384 1626992 5691384 1626824 5690816 +1626992 5691384 1626976 5690872 1626824 5690816 1626872 5691384 +1626992 5691384 1627248 5691016 1626976 5690872 1626872 5691384 +1626872 5691384 1624120 5692536 1626992 5691384 1626976 5690872 +1626824 5690816 1626208 5690560 1626872 5691384 1626976 5690872 +1626872 5691384 1626208 5690560 1624120 5692440 1624120 5692536 +1626208 5690560 1624120 5692440 1626872 5691384 1626824 5690816 +1624120 5692440 1626872 5691384 1626208 5690560 1625968 5690464 +1624120 5692440 1624120 5692536 1626872 5691384 1625968 5690464 +1626872 5691384 1626824 5690816 1626208 5690560 1625968 5690464 +1624120 5692440 1626872 5691384 1625968 5690464 1624104 5692408 +1626992 5691384 1626872 5691384 1624120 5692536 1624280 5693272 +1624120 5692536 1624232 5693160 1624280 5693272 1626872 5691384 +1624120 5692536 1624072 5692800 1624232 5693160 1626872 5691384 +1626992 5691384 1626872 5691384 1624280 5693272 1626552 5696056 +1626992 5691384 1626872 5691384 1626552 5696056 1626600 5696072 +1626872 5691384 1624120 5692440 1624120 5692536 1624232 5693160 +1626992 5691384 1626976 5690872 1626872 5691384 1626552 5696056 +1624280 5693272 1626520 5696056 1626552 5696056 1626872 5691384 +1624280 5693272 1626552 5696056 1626872 5691384 1624232 5693160 +1626872 5691384 1626768 5691344 1624120 5692440 1624120 5692536 +1626872 5691384 1626768 5691344 1624120 5692536 1624232 5693160 +1624120 5692536 1624072 5692800 1624232 5693160 1626768 5691344 +1626872 5691384 1626768 5691344 1624232 5693160 1624280 5693272 +1626768 5691344 1624120 5692536 1624232 5693160 1624280 5693272 +1626768 5691344 1624120 5692440 1624120 5692536 1624232 5693160 +1626872 5691384 1625968 5690464 1626768 5691344 1624280 5693272 +1626768 5691344 1625968 5690464 1624120 5692440 1624120 5692536 +1625968 5690464 1626768 5691344 1626872 5691384 1626208 5690560 +1626768 5691344 1624280 5693272 1626872 5691384 1626208 5690560 +1626872 5691384 1626824 5690816 1626208 5690560 1626768 5691344 +1626872 5691384 1626976 5690872 1626824 5690816 1626768 5691344 +1626872 5691384 1626992 5691384 1626976 5690872 1626768 5691344 +1626872 5691384 1626976 5690872 1626768 5691344 1624280 5693272 +1626824 5690816 1626208 5690560 1626768 5691344 1626976 5690872 +1625968 5690464 1624120 5692440 1626768 5691344 1626208 5690560 +1626208 5690560 1625968 5690464 1626768 5691344 1626824 5690816 +1624120 5692440 1626768 5691344 1625968 5690464 1624104 5692408 +1626872 5691384 1626768 5691344 1624280 5693272 1626552 5696056 +1626768 5691344 1626496 5691144 1624120 5692440 1624120 5692536 +1626768 5691344 1626496 5691144 1624120 5692536 1624232 5693160 +1626768 5691344 1625968 5690464 1626496 5691144 1624120 5692536 +1625968 5690464 1626496 5691144 1626768 5691344 1626208 5690560 +1626496 5691144 1624120 5692536 1626768 5691344 1626208 5690560 +1626496 5691144 1625968 5690464 1624120 5692440 1624120 5692536 +1625968 5690464 1624120 5692440 1626496 5691144 1626208 5690560 +1626768 5691344 1626824 5690816 1626208 5690560 1626496 5691144 +1626768 5691344 1626976 5690872 1626824 5690816 1626496 5691144 +1626768 5691344 1626824 5690816 1626496 5691144 1624120 5692536 +1626208 5690560 1625968 5690464 1626496 5691144 1626824 5690816 +1624120 5692440 1626496 5691144 1625968 5690464 1624104 5692408 +1625968 5690464 1625784 5690360 1624104 5692408 1626496 5691144 +1624120 5692440 1624120 5692536 1626496 5691144 1624104 5692408 +1626496 5691144 1626208 5690560 1625968 5690464 1624104 5692408 +1624104 5692408 1626344 5691040 1625968 5690464 1625784 5690360 +1624104 5692408 1626344 5691040 1625784 5690360 1625576 5690216 +1625968 5690464 1626344 5691040 1626496 5691144 1626208 5690560 +1626496 5691144 1626824 5690816 1626208 5690560 1626344 5691040 +1626344 5691040 1624104 5692408 1626496 5691144 1626824 5690816 +1626208 5690560 1625968 5690464 1626344 5691040 1626824 5690816 +1624104 5692408 1626496 5691144 1626344 5691040 1625784 5690360 +1626344 5691040 1626208 5690560 1625968 5690464 1625784 5690360 +1626496 5691144 1626768 5691344 1626824 5690816 1626344 5691040 +1626496 5691144 1626344 5691040 1624104 5692408 1624120 5692440 +1626496 5691144 1626344 5691040 1624120 5692440 1624120 5692536 +1626496 5691144 1626824 5690816 1626344 5691040 1624120 5692440 +1626344 5691040 1625784 5690360 1624104 5692408 1624120 5692440 +1624104 5692408 1625840 5690768 1625784 5690360 1625576 5690216 +1625784 5690360 1625840 5690768 1626344 5691040 1625968 5690464 +1626344 5691040 1625840 5690768 1624104 5692408 1624120 5692440 +1625840 5690768 1624120 5692440 1626344 5691040 1625968 5690464 +1626344 5691040 1626208 5690560 1625968 5690464 1625840 5690768 +1625968 5690464 1625784 5690360 1625840 5690768 1626208 5690560 +1626344 5691040 1626824 5690816 1626208 5690560 1625840 5690768 +1626344 5691040 1626208 5690560 1625840 5690768 1624120 5692440 +1624104 5692408 1624120 5692440 1625840 5690768 1625576 5690216 +1625840 5690768 1625968 5690464 1625784 5690360 1625576 5690216 +1624104 5692408 1625840 5690768 1625576 5690216 1624032 5692416 +1626344 5691040 1625840 5690768 1624120 5692440 1626496 5691144 +1625576 5690216 1625520 5690696 1625840 5690768 1625784 5690360 +1625840 5690768 1625520 5690696 1624104 5692408 1624120 5692440 +1625840 5690768 1625520 5690696 1624120 5692440 1626344 5691040 +1625520 5690696 1624120 5692440 1625840 5690768 1625784 5690360 +1625840 5690768 1625968 5690464 1625784 5690360 1625520 5690696 +1625520 5690696 1625576 5690216 1624104 5692408 1624120 5692440 +1625576 5690216 1624104 5692408 1625520 5690696 1625784 5690360 +1624104 5692408 1625520 5690696 1625576 5690216 1624032 5692416 +1624104 5692408 1624120 5692440 1625520 5690696 1624032 5692416 +1625520 5690696 1625784 5690360 1625576 5690216 1624032 5692416 +1625576 5690216 1623136 5692368 1624032 5692416 1625520 5690696 +1625576 5690216 1623032 5692344 1623136 5692368 1625520 5690696 +1625576 5690216 1622240 5688080 1623032 5692344 1625520 5690696 +1623136 5692368 1623448 5692552 1624032 5692416 1625520 5690696 +1625576 5690216 1623032 5692344 1625520 5690696 1625784 5690360 +1623136 5692368 1624032 5692416 1625520 5690696 1623032 5692344 +1624032 5692416 1624104 5692408 1625520 5690696 1623136 5692368 +1625520 5690696 1625272 5690680 1623032 5692344 1623136 5692368 +1623032 5692344 1625272 5690680 1625576 5690216 1622240 5688080 +1625520 5690696 1625576 5690216 1625272 5690680 1623136 5692368 +1625576 5690216 1625272 5690680 1625520 5690696 1625784 5690360 +1625272 5690680 1622240 5688080 1623032 5692344 1623136 5692368 +1625272 5690680 1625520 5690696 1625576 5690216 1622240 5688080 +1625576 5690216 1622280 5688056 1622240 5688080 1625272 5690680 +1622240 5688080 1623032 5692344 1625272 5690680 1622280 5688056 +1625576 5690216 1622280 5688056 1625272 5690680 1625520 5690696 +1625576 5690216 1622936 5687752 1622280 5688056 1625272 5690680 +1625576 5690216 1622936 5687752 1625272 5690680 1625520 5690696 +1622280 5688056 1622240 5688080 1625272 5690680 1622936 5687752 +1625520 5690696 1625272 5690680 1623136 5692368 1624032 5692416 +1625272 5690680 1623032 5692344 1623136 5692368 1624032 5692416 +1623136 5692368 1623448 5692552 1624032 5692416 1625272 5690680 +1625520 5690696 1625576 5690216 1625272 5690680 1624032 5692416 +1625576 5690216 1623096 5687688 1622936 5687752 1625272 5690680 +1625576 5690216 1623096 5687688 1625272 5690680 1625520 5690696 +1622936 5687752 1622280 5688056 1625272 5690680 1623096 5687688 +1622936 5687752 1622360 5687944 1622280 5688056 1625272 5690680 +1625520 5690696 1625272 5690680 1624032 5692416 1624104 5692408 +1625520 5690696 1625272 5690680 1624104 5692408 1624120 5692440 +1625520 5690696 1625272 5690680 1624120 5692440 1625840 5690768 +1625520 5690696 1625576 5690216 1625272 5690680 1624120 5692440 +1625272 5690680 1623136 5692368 1624032 5692416 1624104 5692408 +1625272 5690680 1624032 5692416 1624104 5692408 1624120 5692440 +1623032 5692344 1625272 5690680 1622240 5688080 1623000 5692344 +1625576 5690216 1625576 5687568 1623096 5687688 1625272 5690680 +1622240 5688080 1624912 5690712 1625272 5690680 1622280 5688056 +1625272 5690680 1624912 5690712 1623032 5692344 1623136 5692368 +1625272 5690680 1624912 5690712 1623136 5692368 1624032 5692416 +1623136 5692368 1623448 5692552 1624032 5692416 1624912 5690712 +1624912 5690712 1623032 5692344 1623136 5692368 1624032 5692416 +1624912 5690712 1624032 5692416 1625272 5690680 1622280 5688056 +1624912 5690712 1622240 5688080 1623032 5692344 1623136 5692368 +1622240 5688080 1623032 5692344 1624912 5690712 1622280 5688056 +1625272 5690680 1622936 5687752 1622280 5688056 1624912 5690712 +1622280 5688056 1622240 5688080 1624912 5690712 1622936 5687752 +1625272 5690680 1622936 5687752 1624912 5690712 1624032 5692416 +1625272 5690680 1623096 5687688 1622936 5687752 1624912 5690712 +1625272 5690680 1623096 5687688 1624912 5690712 1624032 5692416 +1622936 5687752 1622280 5688056 1624912 5690712 1623096 5687688 +1625272 5690680 1624912 5690712 1624032 5692416 1624104 5692408 +1624912 5690712 1623136 5692368 1624032 5692416 1624104 5692408 +1625272 5690680 1623096 5687688 1624912 5690712 1624104 5692408 +1625272 5690680 1625576 5690216 1623096 5687688 1624912 5690712 +1625272 5690680 1625576 5690216 1624912 5690712 1624104 5692408 +1625272 5690680 1625520 5690696 1625576 5690216 1624912 5690712 +1623096 5687688 1622936 5687752 1624912 5690712 1625576 5690216 +1622936 5687752 1622360 5687944 1622280 5688056 1624912 5690712 +1625272 5690680 1624912 5690712 1624104 5692408 1624120 5692440 +1625272 5690680 1624912 5690712 1624120 5692440 1625520 5690696 +1625272 5690680 1625576 5690216 1624912 5690712 1624120 5692440 +1624912 5690712 1624032 5692416 1624104 5692408 1624120 5692440 +1623032 5692344 1624912 5690712 1622240 5688080 1623000 5692344 +1623032 5692344 1623136 5692368 1624912 5690712 1623000 5692344 +1624912 5690712 1622280 5688056 1622240 5688080 1623000 5692344 +1622240 5688080 1622192 5688096 1623000 5692344 1624912 5690712 +1622240 5688080 1622192 5688096 1624912 5690712 1622280 5688056 +1622192 5688096 1622160 5688096 1623000 5692344 1624912 5690712 +1623000 5692344 1623032 5692344 1624912 5690712 1622192 5688096 +1625576 5690216 1625576 5687568 1623096 5687688 1624912 5690712 +1622192 5688096 1624840 5690672 1624912 5690712 1622240 5688080 +1624840 5690672 1623000 5692344 1624912 5690712 1622240 5688080 +1624912 5690712 1622280 5688056 1622240 5688080 1624840 5690672 +1624912 5690712 1622936 5687752 1622280 5688056 1624840 5690672 +1624912 5690712 1622936 5687752 1624840 5690672 1623000 5692344 +1622280 5688056 1622240 5688080 1624840 5690672 1622936 5687752 +1622192 5688096 1623000 5692344 1624840 5690672 1622240 5688080 +1624912 5690712 1623096 5687688 1622936 5687752 1624840 5690672 +1622936 5687752 1622280 5688056 1624840 5690672 1623096 5687688 +1624912 5690712 1623096 5687688 1624840 5690672 1623000 5692344 +1624912 5690712 1625576 5690216 1623096 5687688 1624840 5690672 +1624912 5690712 1625576 5690216 1624840 5690672 1623000 5692344 +1623096 5687688 1622936 5687752 1624840 5690672 1625576 5690216 +1622240 5688080 1622192 5688096 1624840 5690672 1622280 5688056 +1623000 5692344 1624840 5690672 1622192 5688096 1622160 5688096 +1624912 5690712 1625272 5690680 1625576 5690216 1624840 5690672 +1625272 5690680 1625520 5690696 1625576 5690216 1624840 5690672 +1624912 5690712 1625272 5690680 1624840 5690672 1623000 5692344 +1625576 5690216 1623096 5687688 1624840 5690672 1625272 5690680 +1622936 5687752 1622360 5687944 1622280 5688056 1624840 5690672 +1624912 5690712 1624840 5690672 1623000 5692344 1623032 5692344 +1624912 5690712 1624840 5690672 1623032 5692344 1623136 5692368 +1624912 5690712 1624840 5690672 1623136 5692368 1624032 5692416 +1624912 5690712 1624840 5690672 1624032 5692416 1624104 5692408 +1623136 5692368 1623448 5692552 1624032 5692416 1624840 5690672 +1624840 5690672 1623136 5692368 1624032 5692416 1624104 5692408 +1624840 5690672 1623032 5692344 1623136 5692368 1624032 5692416 +1624912 5690712 1625272 5690680 1624840 5690672 1624104 5692408 +1624840 5690672 1622192 5688096 1623000 5692344 1623032 5692344 +1624912 5690712 1624840 5690672 1624104 5692408 1624120 5692440 +1624840 5690672 1623000 5692344 1623032 5692344 1623136 5692368 +1625576 5690216 1625576 5687568 1623096 5687688 1624840 5690672 +1622936 5687752 1624816 5690640 1624840 5690672 1623096 5687688 +1624840 5690672 1624816 5690640 1622280 5688056 1622240 5688080 +1624816 5690640 1622240 5688080 1624840 5690672 1623096 5687688 +1624816 5690640 1622936 5687752 1622280 5688056 1622240 5688080 +1622936 5687752 1622280 5688056 1624816 5690640 1623096 5687688 +1624840 5690672 1625576 5690216 1623096 5687688 1624816 5690640 +1623096 5687688 1622936 5687752 1624816 5690640 1625576 5690216 +1624840 5690672 1625576 5690216 1624816 5690640 1622240 5688080 +1624840 5690672 1625272 5690680 1625576 5690216 1624816 5690640 +1625272 5690680 1625520 5690696 1625576 5690216 1624816 5690640 +1624840 5690672 1625272 5690680 1624816 5690640 1622240 5688080 +1625576 5690216 1623096 5687688 1624816 5690640 1625272 5690680 +1624840 5690672 1624816 5690640 1622240 5688080 1622192 5688096 +1624816 5690640 1622280 5688056 1622240 5688080 1622192 5688096 +1624840 5690672 1625272 5690680 1624816 5690640 1622192 5688096 +1624840 5690672 1624816 5690640 1622192 5688096 1623000 5692344 +1624840 5690672 1624816 5690640 1623000 5692344 1623032 5692344 +1624840 5690672 1625272 5690680 1624816 5690640 1623032 5692344 +1624816 5690640 1622192 5688096 1623000 5692344 1623032 5692344 +1624816 5690640 1622240 5688080 1622192 5688096 1623000 5692344 +1622192 5688096 1622160 5688096 1623000 5692344 1624816 5690640 +1624840 5690672 1624912 5690712 1625272 5690680 1624816 5690640 +1624840 5690672 1624912 5690712 1624816 5690640 1623032 5692344 +1625272 5690680 1625576 5690216 1624816 5690640 1624912 5690712 +1622280 5688056 1624816 5690640 1622936 5687752 1622360 5687944 +1624840 5690672 1624816 5690640 1623032 5692344 1623136 5692368 +1624840 5690672 1624816 5690640 1623136 5692368 1624032 5692416 +1623136 5692368 1623448 5692552 1624032 5692416 1624816 5690640 +1624840 5690672 1624816 5690640 1624032 5692416 1624104 5692408 +1624840 5690672 1624816 5690640 1624104 5692408 1624912 5690712 +1624816 5690640 1623136 5692368 1624032 5692416 1624104 5692408 +1624816 5690640 1623000 5692344 1623032 5692344 1623136 5692368 +1624840 5690672 1624912 5690712 1624816 5690640 1624104 5692408 +1624816 5690640 1623032 5692344 1623136 5692368 1624032 5692416 +1625576 5690216 1625576 5687568 1623096 5687688 1624816 5690640 +1624816 5690640 1624640 5690320 1623096 5687688 1622936 5687752 +1624816 5690640 1625576 5690216 1624640 5690320 1622936 5687752 +1624816 5690640 1624640 5690320 1622936 5687752 1622280 5688056 +1624640 5690320 1623096 5687688 1622936 5687752 1622280 5688056 +1624816 5690640 1624640 5690320 1622280 5688056 1622240 5688080 +1624816 5690640 1624640 5690320 1622240 5688080 1622192 5688096 +1624640 5690320 1622280 5688056 1622240 5688080 1622192 5688096 +1624816 5690640 1625576 5690216 1624640 5690320 1622192 5688096 +1624640 5690320 1622936 5687752 1622280 5688056 1622240 5688080 +1624640 5690320 1625576 5690216 1623096 5687688 1622936 5687752 +1625576 5690216 1624640 5690320 1624816 5690640 1625272 5690680 +1625576 5690216 1624640 5690320 1625272 5690680 1625520 5690696 +1624640 5690320 1622192 5688096 1624816 5690640 1625272 5690680 +1625576 5690216 1623096 5687688 1624640 5690320 1625272 5690680 +1624816 5690640 1624912 5690712 1625272 5690680 1624640 5690320 +1624816 5690640 1624640 5690320 1622192 5688096 1623000 5692344 +1624640 5690320 1622240 5688080 1622192 5688096 1623000 5692344 +1624816 5690640 1624640 5690320 1623000 5692344 1623032 5692344 +1624816 5690640 1624640 5690320 1623032 5692344 1623136 5692368 +1624640 5690320 1623000 5692344 1623032 5692344 1623136 5692368 +1624816 5690640 1625272 5690680 1624640 5690320 1623136 5692368 +1624640 5690320 1622192 5688096 1623000 5692344 1623032 5692344 +1622192 5688096 1622160 5688096 1623000 5692344 1624640 5690320 +1622936 5687752 1622360 5687944 1622280 5688056 1624640 5690320 +1624816 5690640 1624640 5690320 1623136 5692368 1624032 5692416 +1623096 5687688 1624640 5690320 1625576 5690216 1625576 5687568 +1623096 5687688 1624640 5690320 1625576 5687568 1625520 5687512 +1625576 5690216 1625672 5687640 1625576 5687568 1624640 5690320 +1623096 5687688 1622936 5687752 1624640 5690320 1625520 5687512 +1624640 5690320 1625272 5690680 1625576 5690216 1625672 5687640 +1623096 5687688 1624640 5690320 1625520 5687512 1625472 5687448 +1625576 5690216 1625760 5687704 1625672 5687640 1624640 5690320 +1625576 5690216 1625848 5687744 1625760 5687704 1624640 5690320 +1625672 5687640 1625576 5687568 1624640 5690320 1625760 5687704 +1625576 5690216 1625760 5687704 1624640 5690320 1625272 5690680 +1624640 5690320 1625672 5687640 1625576 5687568 1625520 5687512 +1622936 5687752 1624464 5690136 1624640 5690320 1623096 5687688 +1624640 5690320 1624464 5690136 1622280 5688056 1622240 5688080 +1624640 5690320 1624464 5690136 1622240 5688080 1622192 5688096 +1624640 5690320 1624464 5690136 1622192 5688096 1623000 5692344 +1624464 5690136 1622240 5688080 1622192 5688096 1623000 5692344 +1624464 5690136 1622280 5688056 1622240 5688080 1622192 5688096 +1624640 5690320 1625520 5687512 1623096 5687688 1624464 5690136 +1623096 5687688 1622936 5687752 1624464 5690136 1625520 5687512 +1624640 5690320 1625576 5687568 1625520 5687512 1624464 5690136 +1625520 5687512 1623096 5687688 1624464 5690136 1625576 5687568 +1624464 5690136 1623000 5692344 1624640 5690320 1625576 5687568 +1624464 5690136 1622936 5687752 1622280 5688056 1622240 5688080 +1622936 5687752 1622280 5688056 1624464 5690136 1623096 5687688 +1625520 5687512 1625472 5687448 1623096 5687688 1624464 5690136 +1624640 5690320 1624464 5690136 1623000 5692344 1623032 5692344 +1624464 5690136 1622192 5688096 1623000 5692344 1623032 5692344 +1624640 5690320 1624464 5690136 1623032 5692344 1623136 5692368 +1624640 5690320 1624464 5690136 1623136 5692368 1624816 5690640 +1624464 5690136 1623032 5692344 1623136 5692368 1624816 5690640 +1624640 5690320 1625576 5687568 1624464 5690136 1624816 5690640 +1624464 5690136 1623000 5692344 1623032 5692344 1623136 5692368 +1622192 5688096 1622160 5688096 1623000 5692344 1624464 5690136 +1622280 5688056 1624464 5690136 1622936 5687752 1622360 5687944 +1623136 5692368 1624032 5692416 1624816 5690640 1624464 5690136 +1624640 5690320 1625672 5687640 1625576 5687568 1624464 5690136 +1625576 5687568 1625520 5687512 1624464 5690136 1625672 5687640 +1624640 5690320 1625760 5687704 1625672 5687640 1624464 5690136 +1624640 5690320 1625760 5687704 1624464 5690136 1624816 5690640 +1624640 5690320 1625576 5690216 1625760 5687704 1624464 5690136 +1625576 5690216 1625848 5687744 1625760 5687704 1624464 5690136 +1625760 5687704 1625672 5687640 1624464 5690136 1625576 5690216 +1624640 5690320 1625576 5690216 1624464 5690136 1624816 5690640 +1624640 5690320 1625272 5690680 1625576 5690216 1624464 5690136 +1625672 5687640 1625576 5687568 1624464 5690136 1625760 5687704 +1624464 5690136 1624280 5690008 1623000 5692344 1623032 5692344 +1622192 5688096 1624280 5690008 1624464 5690136 1622240 5688080 +1624464 5690136 1622280 5688056 1622240 5688080 1624280 5690008 +1622240 5688080 1622192 5688096 1624280 5690008 1622280 5688056 +1624464 5690136 1622936 5687752 1622280 5688056 1624280 5690008 +1622280 5688056 1622240 5688080 1624280 5690008 1622936 5687752 +1624464 5690136 1622936 5687752 1624280 5690008 1623032 5692344 +1624464 5690136 1623096 5687688 1622936 5687752 1624280 5690008 +1624464 5690136 1625520 5687512 1623096 5687688 1624280 5690008 +1624464 5690136 1625576 5687568 1625520 5687512 1624280 5690008 +1625520 5687512 1623096 5687688 1624280 5690008 1625576 5687568 +1624464 5690136 1625672 5687640 1625576 5687568 1624280 5690008 +1625576 5687568 1625520 5687512 1624280 5690008 1625672 5687640 +1622936 5687752 1622280 5688056 1624280 5690008 1623096 5687688 +1624464 5690136 1625672 5687640 1624280 5690008 1623032 5692344 +1623096 5687688 1622936 5687752 1624280 5690008 1625520 5687512 +1624280 5690008 1622192 5688096 1623000 5692344 1623032 5692344 +1622192 5688096 1623000 5692344 1624280 5690008 1622240 5688080 +1625520 5687512 1625472 5687448 1623096 5687688 1624280 5690008 +1624464 5690136 1624280 5690008 1623032 5692344 1623136 5692368 +1624280 5690008 1623000 5692344 1623032 5692344 1623136 5692368 +1624464 5690136 1624280 5690008 1623136 5692368 1624816 5690640 +1624464 5690136 1624280 5690008 1624816 5690640 1624640 5690320 +1624464 5690136 1625672 5687640 1624280 5690008 1624816 5690640 +1624280 5690008 1623032 5692344 1623136 5692368 1624816 5690640 +1623000 5692344 1624280 5690008 1622192 5688096 1622160 5688096 +1623000 5692344 1623032 5692344 1624280 5690008 1622160 5688096 +1624280 5690008 1622240 5688080 1622192 5688096 1622160 5688096 +1623000 5692344 1624280 5690008 1622160 5688096 1622936 5692376 +1622936 5687752 1622360 5687944 1622280 5688056 1624280 5690008 +1623136 5692368 1624032 5692416 1624816 5690640 1624280 5690008 +1624464 5690136 1625760 5687704 1625672 5687640 1624280 5690008 +1625672 5687640 1625576 5687568 1624280 5690008 1625760 5687704 +1624464 5690136 1625576 5690216 1625760 5687704 1624280 5690008 +1625576 5690216 1625848 5687744 1625760 5687704 1624280 5690008 +1624464 5690136 1625576 5690216 1624280 5690008 1624816 5690640 +1624464 5690136 1624640 5690320 1625576 5690216 1624280 5690008 +1625760 5687704 1625672 5687640 1624280 5690008 1625576 5690216 +1625520 5687512 1624232 5689912 1624280 5690008 1625576 5687568 +1624280 5690008 1625672 5687640 1625576 5687568 1624232 5689912 +1625576 5687568 1625520 5687512 1624232 5689912 1625672 5687640 +1624280 5690008 1625760 5687704 1625672 5687640 1624232 5689912 +1625672 5687640 1625576 5687568 1624232 5689912 1625760 5687704 +1624280 5690008 1624232 5689912 1623096 5687688 1622936 5687752 +1624280 5690008 1624232 5689912 1622936 5687752 1622280 5688056 +1624280 5690008 1624232 5689912 1622280 5688056 1622240 5688080 +1624280 5690008 1624232 5689912 1622240 5688080 1622192 5688096 +1624232 5689912 1622280 5688056 1622240 5688080 1622192 5688096 +1624232 5689912 1622936 5687752 1622280 5688056 1622240 5688080 +1624232 5689912 1623096 5687688 1622936 5687752 1622280 5688056 +1624232 5689912 1622192 5688096 1624280 5690008 1625760 5687704 +1624280 5690008 1624232 5689912 1622192 5688096 1622160 5688096 +1624232 5689912 1622240 5688080 1622192 5688096 1622160 5688096 +1624280 5690008 1625760 5687704 1624232 5689912 1622160 5688096 +1624232 5689912 1625520 5687512 1623096 5687688 1622936 5687752 +1625520 5687512 1623096 5687688 1624232 5689912 1625576 5687568 +1623096 5687688 1624232 5689912 1625520 5687512 1625472 5687448 +1624280 5690008 1624232 5689912 1622160 5688096 1623000 5692344 +1624280 5690008 1624232 5689912 1623000 5692344 1623032 5692344 +1624280 5690008 1625760 5687704 1624232 5689912 1623000 5692344 +1624232 5689912 1622192 5688096 1622160 5688096 1623000 5692344 +1622160 5688096 1622936 5692376 1623000 5692344 1624232 5689912 +1622936 5687752 1622360 5687944 1622280 5688056 1624232 5689912 +1624280 5690008 1625576 5690216 1625760 5687704 1624232 5689912 +1625576 5690216 1625848 5687744 1625760 5687704 1624232 5689912 +1625760 5687704 1625672 5687640 1624232 5689912 1625576 5690216 +1624280 5690008 1624464 5690136 1625576 5690216 1624232 5689912 +1624280 5690008 1624464 5690136 1624232 5689912 1623000 5692344 +1624464 5690136 1624640 5690320 1625576 5690216 1624232 5689912 +1625576 5690216 1625760 5687704 1624232 5689912 1624464 5690136 +1624232 5689912 1624216 5689744 1623096 5687688 1622936 5687752 +1624232 5689912 1624216 5689744 1622936 5687752 1622280 5688056 +1624232 5689912 1624216 5689744 1622280 5688056 1622240 5688080 +1624232 5689912 1624216 5689744 1622240 5688080 1622192 5688096 +1624232 5689912 1624216 5689744 1622192 5688096 1622160 5688096 +1624216 5689744 1622280 5688056 1622240 5688080 1622192 5688096 +1624216 5689744 1622936 5687752 1622280 5688056 1622240 5688080 +1624216 5689744 1623096 5687688 1622936 5687752 1622280 5688056 +1624232 5689912 1625520 5687512 1624216 5689744 1622192 5688096 +1625520 5687512 1624216 5689744 1624232 5689912 1625576 5687568 +1624232 5689912 1625672 5687640 1625576 5687568 1624216 5689744 +1624232 5689912 1625760 5687704 1625672 5687640 1624216 5689744 +1625672 5687640 1625576 5687568 1624216 5689744 1625760 5687704 +1624232 5689912 1625576 5690216 1625760 5687704 1624216 5689744 +1625576 5690216 1625848 5687744 1625760 5687704 1624216 5689744 +1625576 5690216 1625936 5687776 1625848 5687744 1624216 5689744 +1625576 5690216 1625848 5687744 1624216 5689744 1624232 5689912 +1625760 5687704 1625672 5687640 1624216 5689744 1625848 5687744 +1624216 5689744 1622192 5688096 1624232 5689912 1625576 5690216 +1625576 5687568 1625520 5687512 1624216 5689744 1625672 5687640 +1624216 5689744 1625520 5687512 1623096 5687688 1622936 5687752 +1625520 5687512 1623096 5687688 1624216 5689744 1625576 5687568 +1623096 5687688 1624216 5689744 1625520 5687512 1625472 5687448 +1622936 5687752 1622360 5687944 1622280 5688056 1624216 5689744 +1624232 5689912 1624464 5690136 1625576 5690216 1624216 5689744 +1625576 5690216 1625848 5687744 1624216 5689744 1624464 5690136 +1624232 5689912 1624280 5690008 1624464 5690136 1624216 5689744 +1624232 5689912 1624464 5690136 1624216 5689744 1622192 5688096 +1624464 5690136 1624640 5690320 1625576 5690216 1624216 5689744 +1625848 5687744 1624248 5689728 1625576 5690216 1625936 5687776 +1624216 5689744 1624248 5689728 1625848 5687744 1625760 5687704 +1625576 5690216 1624248 5689728 1624216 5689744 1624464 5690136 +1624216 5689744 1624248 5689728 1625760 5687704 1625672 5687640 +1624248 5689728 1625848 5687744 1625760 5687704 1625672 5687640 +1624216 5689744 1624248 5689728 1625672 5687640 1625576 5687568 +1624248 5689728 1625760 5687704 1625672 5687640 1625576 5687568 +1624216 5689744 1624248 5689728 1625576 5687568 1625520 5687512 +1624248 5689728 1625672 5687640 1625576 5687568 1625520 5687512 +1624216 5689744 1624464 5690136 1624248 5689728 1625520 5687512 +1624216 5689744 1624248 5689728 1625520 5687512 1623096 5687688 +1624248 5689728 1625576 5687568 1625520 5687512 1623096 5687688 +1624216 5689744 1624248 5689728 1623096 5687688 1622936 5687752 +1624216 5689744 1624464 5690136 1624248 5689728 1623096 5687688 +1624248 5689728 1625576 5690216 1625848 5687744 1625760 5687704 +1625576 5690216 1625848 5687744 1624248 5689728 1624464 5690136 +1625520 5687512 1625472 5687448 1623096 5687688 1624248 5689728 +1625520 5687512 1625472 5687448 1624248 5689728 1625576 5687568 +1623096 5687688 1624216 5689744 1624248 5689728 1625472 5687448 +1625472 5687448 1625432 5687384 1623096 5687688 1624248 5689728 +1625576 5690216 1624248 5689728 1624464 5690136 1624640 5690320 +1624216 5689744 1624232 5689912 1624464 5690136 1624248 5689728 +1624464 5690136 1625576 5690216 1624248 5689728 1624232 5689912 +1624232 5689912 1624280 5690008 1624464 5690136 1624248 5689728 +1624464 5690136 1625576 5690216 1624248 5689728 1624280 5690008 +1624216 5689744 1624232 5689912 1624248 5689728 1623096 5687688 +1624232 5689912 1624280 5690008 1624248 5689728 1624216 5689744 +1625848 5687744 1624360 5689696 1625576 5690216 1625936 5687776 +1624248 5689728 1624360 5689696 1625848 5687744 1625760 5687704 +1624248 5689728 1624360 5689696 1625760 5687704 1625672 5687640 +1624248 5689728 1624360 5689696 1625672 5687640 1625576 5687568 +1624360 5689696 1625760 5687704 1625672 5687640 1625576 5687568 +1624248 5689728 1624360 5689696 1625576 5687568 1625520 5687512 +1624360 5689696 1625672 5687640 1625576 5687568 1625520 5687512 +1624248 5689728 1624360 5689696 1625520 5687512 1625472 5687448 +1624360 5689696 1625576 5687568 1625520 5687512 1625472 5687448 +1624360 5689696 1625848 5687744 1625760 5687704 1625672 5687640 +1624248 5689728 1625576 5690216 1624360 5689696 1625472 5687448 +1625576 5690216 1624360 5689696 1624248 5689728 1624464 5690136 +1624248 5689728 1624280 5690008 1624464 5690136 1624360 5689696 +1624248 5689728 1624232 5689912 1624280 5690008 1624360 5689696 +1624280 5690008 1624464 5690136 1624360 5689696 1624232 5689912 +1624360 5689696 1625472 5687448 1624248 5689728 1624232 5689912 +1624464 5690136 1625576 5690216 1624360 5689696 1624280 5690008 +1624360 5689696 1625576 5690216 1625848 5687744 1625760 5687704 +1625576 5690216 1625848 5687744 1624360 5689696 1624464 5690136 +1624248 5689728 1624360 5689696 1625472 5687448 1623096 5687688 +1624360 5689696 1625520 5687512 1625472 5687448 1623096 5687688 +1624248 5689728 1624360 5689696 1623096 5687688 1624216 5689744 +1624248 5689728 1624232 5689912 1624360 5689696 1623096 5687688 +1625472 5687448 1625432 5687384 1623096 5687688 1624360 5689696 +1625576 5690216 1624360 5689696 1624464 5690136 1624640 5690320 +1625576 5690216 1624360 5689696 1624640 5690320 1625272 5690680 +1624360 5689696 1624280 5690008 1624464 5690136 1624640 5690320 +1625576 5690216 1625848 5687744 1624360 5689696 1624640 5690320 +1624248 5689728 1624216 5689744 1624232 5689912 1624360 5689696 +1625848 5687744 1624424 5689696 1625576 5690216 1625936 5687776 +1624360 5689696 1624424 5689696 1625848 5687744 1625760 5687704 +1624360 5689696 1624424 5689696 1625760 5687704 1625672 5687640 +1624360 5689696 1624424 5689696 1625672 5687640 1625576 5687568 +1624360 5689696 1624424 5689696 1625576 5687568 1625520 5687512 +1624424 5689696 1625672 5687640 1625576 5687568 1625520 5687512 +1624360 5689696 1624424 5689696 1625520 5687512 1625472 5687448 +1624424 5689696 1625760 5687704 1625672 5687640 1625576 5687568 +1624424 5689696 1625848 5687744 1625760 5687704 1625672 5687640 +1624360 5689696 1625576 5690216 1624424 5689696 1625520 5687512 +1625576 5690216 1624424 5689696 1624360 5689696 1624640 5690320 +1625576 5690216 1624424 5689696 1624640 5690320 1625272 5690680 +1624424 5689696 1625520 5687512 1624360 5689696 1624640 5690320 +1624424 5689696 1625576 5690216 1625848 5687744 1625760 5687704 +1625576 5690216 1625848 5687744 1624424 5689696 1624640 5690320 +1624360 5689696 1624464 5690136 1624640 5690320 1624424 5689696 +1624360 5689696 1624280 5690008 1624464 5690136 1624424 5689696 +1624360 5689696 1624232 5689912 1624280 5690008 1624424 5689696 +1624360 5689696 1624248 5689728 1624232 5689912 1624424 5689696 +1624280 5690008 1624464 5690136 1624424 5689696 1624232 5689912 +1624360 5689696 1624232 5689912 1624424 5689696 1625520 5687512 +1624640 5690320 1625576 5690216 1624424 5689696 1624464 5690136 +1624464 5690136 1624640 5690320 1624424 5689696 1624280 5690008 +1625848 5687744 1624584 5689728 1625576 5690216 1625936 5687776 +1625576 5690216 1625968 5687784 1625936 5687776 1624584 5689728 +1624424 5689696 1624584 5689728 1625848 5687744 1625760 5687704 +1624424 5689696 1624584 5689728 1625760 5687704 1625672 5687640 +1624424 5689696 1624584 5689728 1625672 5687640 1625576 5687568 +1624424 5689696 1624584 5689728 1625576 5687568 1625520 5687512 +1624584 5689728 1625760 5687704 1625672 5687640 1625576 5687568 +1624584 5689728 1625848 5687744 1625760 5687704 1625672 5687640 +1624424 5689696 1625576 5690216 1624584 5689728 1625576 5687568 +1625576 5690216 1624584 5689728 1624424 5689696 1624640 5690320 +1625576 5690216 1624584 5689728 1624640 5690320 1625272 5690680 +1624424 5689696 1624464 5690136 1624640 5690320 1624584 5689728 +1624584 5689728 1625576 5687568 1624424 5689696 1624464 5690136 +1624640 5690320 1625576 5690216 1624584 5689728 1624464 5690136 +1625848 5687744 1625760 5687704 1624584 5689728 1625936 5687776 +1624584 5689728 1624640 5690320 1625576 5690216 1625936 5687776 +1624424 5689696 1624280 5690008 1624464 5690136 1624584 5689728 +1624424 5689696 1624232 5689912 1624280 5690008 1624584 5689728 +1624464 5690136 1624640 5690320 1624584 5689728 1624280 5690008 +1624424 5689696 1624280 5690008 1624584 5689728 1625576 5687568 +1625936 5687776 1624840 5689808 1625576 5690216 1625968 5687784 +1625576 5690216 1626000 5687776 1625968 5687784 1624840 5689808 +1624584 5689728 1624840 5689808 1625936 5687776 1625848 5687744 +1624584 5689728 1624840 5689808 1625848 5687744 1625760 5687704 +1624840 5689808 1625936 5687776 1625848 5687744 1625760 5687704 +1624584 5689728 1624840 5689808 1625760 5687704 1625672 5687640 +1624584 5689728 1625576 5690216 1624840 5689808 1625760 5687704 +1625576 5690216 1624840 5689808 1624584 5689728 1624640 5690320 +1625576 5690216 1624840 5689808 1624640 5690320 1625272 5690680 +1624584 5689728 1624464 5690136 1624640 5690320 1624840 5689808 +1624584 5689728 1624280 5690008 1624464 5690136 1624840 5689808 +1624840 5689808 1625760 5687704 1624584 5689728 1624464 5690136 +1624640 5690320 1625576 5690216 1624840 5689808 1624464 5690136 +1625936 5687776 1625848 5687744 1624840 5689808 1625968 5687784 +1624840 5689808 1624640 5690320 1625576 5690216 1625968 5687784 +1625968 5687784 1625120 5689928 1625576 5690216 1626000 5687776 +1624840 5689808 1625120 5689928 1625968 5687784 1625936 5687776 +1624840 5689808 1625120 5689928 1625936 5687776 1625848 5687744 +1625120 5689928 1625968 5687784 1625936 5687776 1625848 5687744 +1624840 5689808 1625120 5689928 1625848 5687744 1625760 5687704 +1624840 5689808 1625576 5690216 1625120 5689928 1625848 5687744 +1625576 5690216 1625120 5689928 1624840 5689808 1624640 5690320 +1625576 5690216 1625120 5689928 1624640 5690320 1625272 5690680 +1625576 5690216 1625120 5689928 1625272 5690680 1625520 5690696 +1624840 5689808 1624464 5690136 1624640 5690320 1625120 5689928 +1625120 5689928 1625848 5687744 1624840 5689808 1624640 5690320 +1625120 5689928 1624840 5689808 1624640 5690320 1625272 5690680 +1625120 5689928 1625576 5690216 1625968 5687784 1625936 5687776 +1625576 5690216 1625968 5687784 1625120 5689928 1625272 5690680 +1624640 5690320 1624816 5690640 1625272 5690680 1625120 5689928 +1625272 5690680 1625576 5690216 1625120 5689928 1624816 5690640 +1624640 5690320 1624816 5690640 1625120 5689928 1624840 5689808 +1624816 5690640 1624912 5690712 1625272 5690680 1625120 5689928 +1625784 5690360 1625968 5689376 1626040 5687760 1626000 5687776 +1626040 5687760 1625968 5689376 1625968 5690464 1626208 5690560 +1625784 5690360 1625968 5689376 1626000 5687776 1625576 5690216 +1625968 5689376 1626040 5687760 1626000 5687776 1625576 5690216 +1626040 5687760 1625968 5689376 1626208 5690560 1626824 5690816 +1625968 5689376 1625968 5690464 1626208 5690560 1626824 5690816 +1625968 5689376 1626824 5690816 1626040 5687760 1626000 5687776 +1625968 5689376 1625784 5690360 1625968 5690464 1626208 5690560 +1625784 5690360 1625968 5690464 1625968 5689376 1625576 5690216 +1626000 5687776 1625968 5687784 1625576 5690216 1625968 5689376 +1626000 5687776 1625968 5687784 1625968 5689376 1626040 5687760 +1625576 5690216 1625784 5690360 1625968 5689376 1625968 5687784 +1625968 5687784 1625120 5689928 1625576 5690216 1625968 5689376 +1625576 5690216 1625784 5690360 1625968 5689376 1625120 5689928 +1625968 5687784 1625936 5687776 1625120 5689928 1625968 5689376 +1625120 5689928 1625576 5690216 1625968 5689376 1625936 5687776 +1625936 5687776 1625848 5687744 1625120 5689928 1625968 5689376 +1625120 5689928 1625576 5690216 1625968 5689376 1625848 5687744 +1625848 5687744 1624840 5689808 1625120 5689928 1625968 5689376 +1625120 5689928 1625576 5690216 1625968 5689376 1624840 5689808 +1625848 5687744 1624840 5689808 1625968 5689376 1625936 5687776 +1625848 5687744 1625760 5687704 1624840 5689808 1625968 5689376 +1625848 5687744 1625760 5687704 1625968 5689376 1625936 5687776 +1625760 5687704 1624584 5689728 1624840 5689808 1625968 5689376 +1625760 5687704 1624584 5689728 1625968 5689376 1625848 5687744 +1625760 5687704 1625672 5687640 1624584 5689728 1625968 5689376 +1624840 5689808 1625120 5689928 1625968 5689376 1624584 5689728 +1625936 5687776 1625848 5687744 1625968 5689376 1625968 5687784 +1625968 5687784 1625936 5687776 1625968 5689376 1626000 5687776 +1626040 5687760 1625968 5689376 1626824 5690816 1626064 5687736 +1626824 5690816 1626976 5690872 1626064 5687736 1625968 5689376 +1625968 5689376 1626208 5690560 1626824 5690816 1626976 5690872 +1626040 5687760 1626000 5687776 1625968 5689376 1626064 5687736 +1626064 5687736 1626040 5687760 1625968 5689376 1626976 5690872 +1626976 5690872 1627248 5691016 1626064 5687736 1625968 5689376 +1626976 5690872 1627248 5691016 1625968 5689376 1626824 5690816 +1626064 5687736 1626040 5687760 1625968 5689376 1627248 5691016 +1627248 5691016 1626096 5687664 1626064 5687736 1625968 5689376 +1626064 5687736 1626040 5687760 1625968 5689376 1626096 5687664 +1627248 5691016 1626096 5687664 1625968 5689376 1626976 5690872 +1627248 5691016 1627352 5691104 1626096 5687664 1625968 5689376 +1627248 5691016 1625992 5689368 1625968 5689376 1626976 5690872 +1625968 5689376 1626824 5690816 1626976 5690872 1625992 5689368 +1625968 5689376 1626208 5690560 1626824 5690816 1625992 5689368 +1626824 5690816 1626976 5690872 1625992 5689368 1626208 5690560 +1625968 5689376 1625968 5690464 1626208 5690560 1625992 5689368 +1626208 5690560 1626824 5690816 1625992 5689368 1625968 5690464 +1625968 5689376 1625784 5690360 1625968 5690464 1625992 5689368 +1625992 5689368 1626096 5687664 1625968 5689376 1625968 5690464 +1627248 5691016 1626096 5687664 1625992 5689368 1626976 5690872 +1626976 5690872 1627248 5691016 1625992 5689368 1626824 5690816 +1625968 5689376 1625992 5689368 1626096 5687664 1626064 5687736 +1625968 5689376 1625968 5690464 1625992 5689368 1626064 5687736 +1625992 5689368 1627248 5691016 1626096 5687664 1626064 5687736 +1625968 5689376 1625992 5689368 1626064 5687736 1626040 5687760 +1625968 5689376 1625992 5689368 1626040 5687760 1626000 5687776 +1625968 5689376 1625992 5689368 1626000 5687776 1625968 5687784 +1625992 5689368 1626040 5687760 1626000 5687776 1625968 5687784 +1625968 5689376 1625968 5690464 1625992 5689368 1625968 5687784 +1625968 5689376 1625992 5689368 1625968 5687784 1625936 5687776 +1625992 5689368 1626000 5687776 1625968 5687784 1625936 5687776 +1625968 5689376 1625992 5689368 1625936 5687776 1625848 5687744 +1625968 5689376 1625968 5690464 1625992 5689368 1625936 5687776 +1625992 5689368 1626064 5687736 1626040 5687760 1626000 5687776 +1625992 5689368 1626096 5687664 1626064 5687736 1626040 5687760 +1626096 5687664 1625992 5689368 1627248 5691016 1627352 5691104 +1625992 5689368 1626008 5689376 1626096 5687664 1626064 5687736 +1625992 5689368 1627248 5691016 1626008 5689376 1626064 5687736 +1627248 5691016 1626008 5689376 1625992 5689368 1626976 5690872 +1626008 5689376 1626064 5687736 1625992 5689368 1626976 5690872 +1626008 5689376 1627248 5691016 1626096 5687664 1626064 5687736 +1627248 5691016 1626096 5687664 1626008 5689376 1626976 5690872 +1625992 5689368 1626824 5690816 1626976 5690872 1626008 5689376 +1625992 5689368 1626208 5690560 1626824 5690816 1626008 5689376 +1625992 5689368 1625968 5690464 1626208 5690560 1626008 5689376 +1626208 5690560 1626824 5690816 1626008 5689376 1625968 5690464 +1625992 5689368 1625968 5689376 1625968 5690464 1626008 5689376 +1625968 5690464 1626208 5690560 1626008 5689376 1625968 5689376 +1625968 5689376 1625784 5690360 1625968 5690464 1626008 5689376 +1625968 5689376 1625784 5690360 1626008 5689376 1625992 5689368 +1625968 5690464 1626208 5690560 1626008 5689376 1625784 5690360 +1625992 5689368 1625968 5689376 1626008 5689376 1626064 5687736 +1626976 5690872 1627248 5691016 1626008 5689376 1626824 5690816 +1625968 5689376 1625576 5690216 1625784 5690360 1626008 5689376 +1626824 5690816 1626976 5690872 1626008 5689376 1626208 5690560 +1625992 5689368 1626008 5689376 1626064 5687736 1626040 5687760 +1626008 5689376 1626096 5687664 1626064 5687736 1626040 5687760 +1625992 5689368 1625968 5689376 1626008 5689376 1626040 5687760 +1625992 5689368 1626008 5689376 1626040 5687760 1626000 5687776 +1626096 5687664 1626008 5689376 1627248 5691016 1627352 5691104 +1626008 5689376 1626080 5689376 1626096 5687664 1626064 5687736 +1626008 5689376 1626080 5689376 1626064 5687736 1626040 5687760 +1626080 5689376 1626096 5687664 1626064 5687736 1626040 5687760 +1626008 5689376 1627248 5691016 1626080 5689376 1626040 5687760 +1627248 5691016 1626080 5689376 1626008 5689376 1626976 5690872 +1626008 5689376 1626824 5690816 1626976 5690872 1626080 5689376 +1626080 5689376 1626040 5687760 1626008 5689376 1626824 5690816 +1626976 5690872 1627248 5691016 1626080 5689376 1626824 5690816 +1626080 5689376 1627248 5691016 1626096 5687664 1626064 5687736 +1627248 5691016 1626096 5687664 1626080 5689376 1626976 5690872 +1626008 5689376 1626208 5690560 1626824 5690816 1626080 5689376 +1626008 5689376 1625968 5690464 1626208 5690560 1626080 5689376 +1626008 5689376 1625784 5690360 1625968 5690464 1626080 5689376 +1625968 5690464 1626208 5690560 1626080 5689376 1625784 5690360 +1626008 5689376 1625968 5689376 1625784 5690360 1626080 5689376 +1626824 5690816 1626976 5690872 1626080 5689376 1626208 5690560 +1626008 5689376 1625784 5690360 1626080 5689376 1626040 5687760 +1626208 5690560 1626824 5690816 1626080 5689376 1625968 5690464 +1626008 5689376 1626080 5689376 1626040 5687760 1625992 5689368 +1626080 5689376 1626064 5687736 1626040 5687760 1625992 5689368 +1626008 5689376 1625784 5690360 1626080 5689376 1625992 5689368 +1626040 5687760 1626000 5687776 1625992 5689368 1626080 5689376 +1626000 5687776 1625968 5687784 1625992 5689368 1626080 5689376 +1625968 5687784 1625936 5687776 1625992 5689368 1626080 5689376 +1626040 5687760 1626000 5687776 1626080 5689376 1626064 5687736 +1626000 5687776 1625968 5687784 1626080 5689376 1626040 5687760 +1625992 5689368 1626008 5689376 1626080 5689376 1625968 5687784 +1626096 5687664 1626080 5689376 1627248 5691016 1627352 5691104 +1626080 5689376 1626168 5689416 1626096 5687664 1626064 5687736 +1626080 5689376 1626168 5689416 1626064 5687736 1626040 5687760 +1626080 5689376 1626168 5689416 1626040 5687760 1626000 5687776 +1626168 5689416 1626096 5687664 1626064 5687736 1626040 5687760 +1626080 5689376 1627248 5691016 1626168 5689416 1626040 5687760 +1627248 5691016 1626168 5689416 1626080 5689376 1626976 5690872 +1626080 5689376 1626824 5690816 1626976 5690872 1626168 5689416 +1626080 5689376 1626208 5690560 1626824 5690816 1626168 5689416 +1626824 5690816 1626976 5690872 1626168 5689416 1626208 5690560 +1626168 5689416 1626040 5687760 1626080 5689376 1626208 5690560 +1626976 5690872 1627248 5691016 1626168 5689416 1626824 5690816 +1626168 5689416 1627248 5691016 1626096 5687664 1626064 5687736 +1627248 5691016 1626096 5687664 1626168 5689416 1626976 5690872 +1626080 5689376 1625968 5690464 1626208 5690560 1626168 5689416 +1626080 5689376 1625784 5690360 1625968 5690464 1626168 5689416 +1626080 5689376 1626008 5689376 1625784 5690360 1626168 5689416 +1625784 5690360 1625968 5690464 1626168 5689416 1626008 5689376 +1626008 5689376 1625968 5689376 1625784 5690360 1626168 5689416 +1625784 5690360 1625968 5690464 1626168 5689416 1625968 5689376 +1626008 5689376 1625992 5689368 1625968 5689376 1626168 5689416 +1626008 5689376 1625968 5689376 1626168 5689416 1626080 5689376 +1626208 5690560 1626824 5690816 1626168 5689416 1625968 5690464 +1625968 5689376 1625576 5690216 1625784 5690360 1626168 5689416 +1626080 5689376 1626008 5689376 1626168 5689416 1626040 5687760 +1625968 5690464 1626208 5690560 1626168 5689416 1625784 5690360 +1626096 5687664 1626168 5689416 1627248 5691016 1627352 5691104 +1626168 5689416 1626264 5689472 1626096 5687664 1626064 5687736 +1626168 5689416 1626264 5689472 1626064 5687736 1626040 5687760 +1626168 5689416 1626264 5689472 1626040 5687760 1626080 5689376 +1626264 5689472 1626096 5687664 1626064 5687736 1626040 5687760 +1626168 5689416 1627248 5691016 1626264 5689472 1626040 5687760 +1627248 5691016 1626264 5689472 1626168 5689416 1626976 5690872 +1626168 5689416 1626824 5690816 1626976 5690872 1626264 5689472 +1626168 5689416 1626208 5690560 1626824 5690816 1626264 5689472 +1626168 5689416 1625968 5690464 1626208 5690560 1626264 5689472 +1626208 5690560 1626824 5690816 1626264 5689472 1625968 5690464 +1626824 5690816 1626976 5690872 1626264 5689472 1626208 5690560 +1626264 5689472 1626040 5687760 1626168 5689416 1625968 5690464 +1626976 5690872 1627248 5691016 1626264 5689472 1626824 5690816 +1626264 5689472 1627248 5691016 1626096 5687664 1626064 5687736 +1627248 5691016 1626096 5687664 1626264 5689472 1626976 5690872 +1626168 5689416 1625784 5690360 1625968 5690464 1626264 5689472 +1626168 5689416 1625968 5689376 1625784 5690360 1626264 5689472 +1626168 5689416 1626008 5689376 1625968 5689376 1626264 5689472 +1625968 5690464 1626208 5690560 1626264 5689472 1625784 5690360 +1625968 5689376 1625576 5690216 1625784 5690360 1626264 5689472 +1626168 5689416 1625968 5689376 1626264 5689472 1626040 5687760 +1625784 5690360 1625968 5690464 1626264 5689472 1625968 5689376 +1626096 5687664 1626264 5689472 1627248 5691016 1627352 5691104 +1626096 5687664 1626064 5687736 1626264 5689472 1627352 5691104 +1626264 5689472 1626976 5690872 1627248 5691016 1627352 5691104 +1626096 5687664 1626264 5689472 1627352 5691104 1630232 5692312 +1626264 5689472 1626352 5689536 1626096 5687664 1626064 5687736 +1626264 5689472 1626352 5689536 1626064 5687736 1626040 5687760 +1626264 5689472 1627352 5691104 1626352 5689536 1626064 5687736 +1626352 5689536 1627352 5691104 1626096 5687664 1626064 5687736 +1626096 5687664 1626352 5689536 1627352 5691104 1630232 5692312 +1626096 5687664 1626352 5689536 1630232 5692312 1630448 5692312 +1626096 5687664 1626352 5689536 1630448 5692312 1626096 5687632 +1626096 5687664 1626064 5687736 1626352 5689536 1630448 5692312 +1626352 5689536 1626264 5689472 1627352 5691104 1630232 5692312 +1626352 5689536 1627352 5691104 1630232 5692312 1630448 5692312 +1627352 5691104 1626352 5689536 1626264 5689472 1627248 5691016 +1626352 5689536 1626064 5687736 1626264 5689472 1627248 5691016 +1626264 5689472 1626976 5690872 1627248 5691016 1626352 5689536 +1626264 5689472 1626824 5690816 1626976 5690872 1626352 5689536 +1626264 5689472 1626208 5690560 1626824 5690816 1626352 5689536 +1626264 5689472 1625968 5690464 1626208 5690560 1626352 5689536 +1626264 5689472 1625784 5690360 1625968 5690464 1626352 5689536 +1625968 5690464 1626208 5690560 1626352 5689536 1625784 5690360 +1626208 5690560 1626824 5690816 1626352 5689536 1625968 5690464 +1626824 5690816 1626976 5690872 1626352 5689536 1626208 5690560 +1626264 5689472 1625784 5690360 1626352 5689536 1626064 5687736 +1626976 5690872 1627248 5691016 1626352 5689536 1626824 5690816 +1627352 5691104 1630232 5692312 1626352 5689536 1627248 5691016 +1626264 5689472 1625968 5689376 1625784 5690360 1626352 5689536 +1627248 5691016 1627352 5691104 1626352 5689536 1626976 5690872 +1627352 5691104 1630136 5692352 1630232 5692312 1626352 5689536 +1627352 5691104 1626424 5689616 1626352 5689536 1627248 5691016 +1626424 5689616 1630232 5692312 1626352 5689536 1627248 5691016 +1627352 5691104 1630232 5692312 1626424 5689616 1627248 5691016 +1626352 5689536 1626424 5689616 1630232 5692312 1630448 5692312 +1626352 5689536 1626424 5689616 1630448 5692312 1626096 5687664 +1630448 5692312 1626096 5687632 1626096 5687664 1626424 5689616 +1626352 5689536 1626424 5689616 1626096 5687664 1626064 5687736 +1626352 5689536 1627248 5691016 1626424 5689616 1626096 5687664 +1626424 5689616 1627352 5691104 1630232 5692312 1630448 5692312 +1626424 5689616 1630232 5692312 1630448 5692312 1626096 5687664 +1626352 5689536 1626976 5690872 1627248 5691016 1626424 5689616 +1626352 5689536 1626824 5690816 1626976 5690872 1626424 5689616 +1626352 5689536 1626208 5690560 1626824 5690816 1626424 5689616 +1626352 5689536 1625968 5690464 1626208 5690560 1626424 5689616 +1626352 5689536 1625784 5690360 1625968 5690464 1626424 5689616 +1626352 5689536 1626264 5689472 1625784 5690360 1626424 5689616 +1625968 5690464 1626208 5690560 1626424 5689616 1625784 5690360 +1626208 5690560 1626824 5690816 1626424 5689616 1625968 5690464 +1626824 5690816 1626976 5690872 1626424 5689616 1626208 5690560 +1626352 5689536 1625784 5690360 1626424 5689616 1626096 5687664 +1627248 5691016 1627352 5691104 1626424 5689616 1626976 5690872 +1626976 5690872 1627248 5691016 1626424 5689616 1626824 5690816 +1630232 5692312 1626424 5689616 1627352 5691104 1630136 5692352 +1626424 5689616 1626464 5689664 1630232 5692312 1630448 5692312 +1626424 5689616 1627352 5691104 1626464 5689664 1630448 5692312 +1627352 5691104 1626464 5689664 1626424 5689616 1627248 5691016 +1626424 5689616 1626976 5690872 1627248 5691016 1626464 5689664 +1626464 5689664 1630448 5692312 1626424 5689616 1626976 5690872 +1627248 5691016 1627352 5691104 1626464 5689664 1626976 5690872 +1626464 5689664 1627352 5691104 1630232 5692312 1630448 5692312 +1627352 5691104 1630232 5692312 1626464 5689664 1627248 5691016 +1626424 5689616 1626464 5689664 1630448 5692312 1626096 5687664 +1626424 5689616 1626464 5689664 1626096 5687664 1626352 5689536 +1630448 5692312 1626096 5687632 1626096 5687664 1626464 5689664 +1626464 5689664 1630232 5692312 1630448 5692312 1626096 5687664 +1626424 5689616 1626976 5690872 1626464 5689664 1626096 5687664 +1626424 5689616 1626824 5690816 1626976 5690872 1626464 5689664 +1626424 5689616 1626208 5690560 1626824 5690816 1626464 5689664 +1626424 5689616 1625968 5690464 1626208 5690560 1626464 5689664 +1626424 5689616 1625784 5690360 1625968 5690464 1626464 5689664 +1626424 5689616 1626352 5689536 1625784 5690360 1626464 5689664 +1625968 5690464 1626208 5690560 1626464 5689664 1625784 5690360 +1626208 5690560 1626824 5690816 1626464 5689664 1625968 5690464 +1626976 5690872 1627248 5691016 1626464 5689664 1626824 5690816 +1626424 5689616 1625784 5690360 1626464 5689664 1626096 5687664 +1626824 5690816 1626976 5690872 1626464 5689664 1626208 5690560 +1630232 5692312 1626464 5689664 1627352 5691104 1630136 5692352 +1626208 5690560 1626464 5689704 1626464 5689664 1625968 5690464 +1626464 5689664 1625784 5690360 1625968 5690464 1626464 5689704 +1626464 5689664 1626424 5689616 1625784 5690360 1626464 5689704 +1626424 5689616 1626352 5689536 1625784 5690360 1626464 5689704 +1626352 5689536 1626264 5689472 1625784 5690360 1626464 5689704 +1626352 5689536 1626264 5689472 1626464 5689704 1626424 5689616 +1626424 5689616 1626352 5689536 1626464 5689704 1626464 5689664 +1625784 5690360 1625968 5690464 1626464 5689704 1626264 5689472 +1625968 5690464 1626208 5690560 1626464 5689704 1625784 5690360 +1626464 5689704 1626824 5690816 1626464 5689664 1626424 5689616 +1626208 5690560 1626824 5690816 1626464 5689704 1625968 5690464 +1626264 5689472 1625968 5689376 1625784 5690360 1626464 5689704 +1626464 5689664 1626464 5689704 1626824 5690816 1626976 5690872 +1626464 5689664 1626464 5689704 1626976 5690872 1627248 5691016 +1626464 5689664 1626464 5689704 1627248 5691016 1627352 5691104 +1626464 5689664 1626424 5689616 1626464 5689704 1627248 5691016 +1626464 5689704 1626208 5690560 1626824 5690816 1626976 5690872 +1626464 5689704 1626824 5690816 1626976 5690872 1627248 5691016 +1626264 5689472 1626400 5689760 1626464 5689704 1626352 5689536 +1626464 5689704 1626424 5689616 1626352 5689536 1626400 5689760 +1626352 5689536 1626264 5689472 1626400 5689760 1626424 5689616 +1626464 5689704 1626464 5689664 1626424 5689616 1626400 5689760 +1626464 5689704 1626400 5689760 1625784 5690360 1625968 5690464 +1626464 5689704 1626400 5689760 1625968 5690464 1626208 5690560 +1626400 5689760 1625784 5690360 1625968 5690464 1626208 5690560 +1626400 5689760 1626208 5690560 1626464 5689704 1626424 5689616 +1626464 5689704 1626400 5689760 1626208 5690560 1626824 5690816 +1626400 5689760 1625968 5690464 1626208 5690560 1626824 5690816 +1626464 5689704 1626400 5689760 1626824 5690816 1626976 5690872 +1626464 5689704 1626424 5689616 1626400 5689760 1626824 5690816 +1626400 5689760 1626264 5689472 1625784 5690360 1625968 5690464 +1626264 5689472 1625784 5690360 1626400 5689760 1626352 5689536 +1625784 5690360 1626400 5689760 1626264 5689472 1625968 5689376 +1626264 5689472 1626168 5689416 1625968 5689376 1626400 5689760 +1626168 5689416 1626008 5689376 1625968 5689376 1626400 5689760 +1626168 5689416 1626008 5689376 1626400 5689760 1626264 5689472 +1626008 5689376 1625992 5689368 1625968 5689376 1626400 5689760 +1626168 5689416 1626080 5689376 1626008 5689376 1626400 5689760 +1625784 5690360 1626400 5689760 1625968 5689376 1625576 5690216 +1625968 5689376 1625120 5689928 1625576 5690216 1626400 5689760 +1625784 5690360 1625968 5690464 1626400 5689760 1625576 5690216 +1626400 5689760 1626352 5689536 1626264 5689472 1626168 5689416 +1625968 5689376 1625576 5690216 1626400 5689760 1626008 5689376 +1625576 5690216 1626352 5689768 1625968 5689376 1625120 5689928 +1626400 5689760 1626352 5689768 1625576 5690216 1625784 5690360 +1626400 5689760 1626352 5689768 1625784 5690360 1625968 5690464 +1626352 5689768 1625576 5690216 1625784 5690360 1625968 5690464 +1626400 5689760 1626352 5689768 1625968 5690464 1626208 5690560 +1626400 5689760 1626352 5689768 1626208 5690560 1626824 5690816 +1626352 5689768 1625784 5690360 1625968 5690464 1626208 5690560 +1626400 5689760 1625968 5689376 1626352 5689768 1626208 5690560 +1626352 5689768 1625968 5689376 1625576 5690216 1625784 5690360 +1625968 5689376 1626352 5689768 1626400 5689760 1626008 5689376 +1625968 5689376 1626352 5689768 1626008 5689376 1625992 5689368 +1626400 5689760 1626168 5689416 1626008 5689376 1626352 5689768 +1626400 5689760 1626264 5689472 1626168 5689416 1626352 5689768 +1626168 5689416 1626080 5689376 1626008 5689376 1626352 5689768 +1626168 5689416 1626008 5689376 1626352 5689768 1626264 5689472 +1626352 5689768 1626208 5690560 1626400 5689760 1626264 5689472 +1626400 5689760 1626352 5689536 1626264 5689472 1626352 5689768 +1626264 5689472 1626168 5689416 1626352 5689768 1626352 5689536 +1626400 5689760 1626424 5689616 1626352 5689536 1626352 5689768 +1626400 5689760 1626464 5689704 1626424 5689616 1626352 5689768 +1626400 5689760 1626424 5689616 1626352 5689768 1626208 5690560 +1626352 5689536 1626264 5689472 1626352 5689768 1626424 5689616 +1625968 5689376 1625576 5690216 1626352 5689768 1626008 5689376 +1626008 5689376 1625968 5689376 1626352 5689768 1626168 5689416 +1625576 5690216 1626280 5689752 1625968 5689376 1625120 5689928 +1626352 5689768 1626280 5689752 1625576 5690216 1625784 5690360 +1626352 5689768 1626280 5689752 1625784 5690360 1625968 5690464 +1626352 5689768 1626280 5689752 1625968 5690464 1626208 5690560 +1626280 5689752 1625576 5690216 1625784 5690360 1625968 5690464 +1626352 5689768 1625968 5689376 1626280 5689752 1625968 5690464 +1625968 5689376 1626280 5689752 1626352 5689768 1626008 5689376 +1625968 5689376 1626280 5689752 1626008 5689376 1625992 5689368 +1626280 5689752 1625968 5690464 1626352 5689768 1626008 5689376 +1626280 5689752 1625968 5689376 1625576 5690216 1625784 5690360 +1625968 5689376 1625576 5690216 1626280 5689752 1626008 5689376 +1626352 5689768 1626168 5689416 1626008 5689376 1626280 5689752 +1626168 5689416 1626080 5689376 1626008 5689376 1626280 5689752 +1626352 5689768 1626264 5689472 1626168 5689416 1626280 5689752 +1626352 5689768 1626352 5689536 1626264 5689472 1626280 5689752 +1626264 5689472 1626168 5689416 1626280 5689752 1626352 5689536 +1626352 5689768 1626424 5689616 1626352 5689536 1626280 5689752 +1626352 5689536 1626264 5689472 1626280 5689752 1626424 5689616 +1626352 5689768 1626400 5689760 1626424 5689616 1626280 5689752 +1626352 5689768 1626424 5689616 1626280 5689752 1625968 5690464 +1626008 5689376 1625968 5689376 1626280 5689752 1626168 5689416 +1626168 5689416 1626008 5689376 1626280 5689752 1626264 5689472 +1625576 5690216 1626208 5689712 1625968 5689376 1625120 5689928 +1626280 5689752 1626208 5689712 1625576 5690216 1625784 5690360 +1626280 5689752 1626208 5689712 1625784 5690360 1625968 5690464 +1626280 5689752 1625968 5689376 1626208 5689712 1625784 5690360 +1625968 5689376 1626208 5689712 1626280 5689752 1626008 5689376 +1625968 5689376 1626208 5689712 1626008 5689376 1625992 5689368 +1626280 5689752 1626168 5689416 1626008 5689376 1626208 5689712 +1626168 5689416 1626080 5689376 1626008 5689376 1626208 5689712 +1626208 5689712 1625784 5690360 1626280 5689752 1626168 5689416 +1626008 5689376 1625968 5689376 1626208 5689712 1626168 5689416 +1626208 5689712 1625968 5689376 1625576 5690216 1625784 5690360 +1625968 5689376 1625576 5690216 1626208 5689712 1626008 5689376 +1626280 5689752 1626264 5689472 1626168 5689416 1626208 5689712 +1626280 5689752 1626352 5689536 1626264 5689472 1626208 5689712 +1626280 5689752 1626424 5689616 1626352 5689536 1626208 5689712 +1626168 5689416 1626008 5689376 1626208 5689712 1626264 5689472 +1626280 5689752 1626352 5689536 1626208 5689712 1625784 5690360 +1626264 5689472 1626168 5689416 1626208 5689712 1626352 5689536 +1625576 5690216 1626112 5689640 1625968 5689376 1625120 5689928 +1626208 5689712 1626112 5689640 1625576 5690216 1625784 5690360 +1626208 5689712 1626112 5689640 1625784 5690360 1626280 5689752 +1626208 5689712 1625968 5689376 1626112 5689640 1625784 5690360 +1625968 5689376 1626112 5689640 1626208 5689712 1626008 5689376 +1625968 5689376 1626112 5689640 1626008 5689376 1625992 5689368 +1626208 5689712 1626168 5689416 1626008 5689376 1626112 5689640 +1626168 5689416 1626080 5689376 1626008 5689376 1626112 5689640 +1626208 5689712 1626264 5689472 1626168 5689416 1626112 5689640 +1626168 5689416 1626080 5689376 1626112 5689640 1626264 5689472 +1626112 5689640 1625784 5690360 1626208 5689712 1626264 5689472 +1626008 5689376 1625968 5689376 1626112 5689640 1626080 5689376 +1626112 5689640 1625968 5689376 1625576 5690216 1625784 5690360 +1625968 5689376 1625576 5690216 1626112 5689640 1626008 5689376 +1626208 5689712 1626352 5689536 1626264 5689472 1626112 5689640 +1625576 5690216 1626032 5689568 1625968 5689376 1625120 5689928 +1625968 5689376 1624840 5689808 1625120 5689928 1626032 5689568 +1626112 5689640 1626032 5689568 1625576 5690216 1625784 5690360 +1625968 5689376 1626032 5689568 1626112 5689640 1626008 5689376 +1625968 5689376 1626032 5689568 1626008 5689376 1625992 5689368 +1626112 5689640 1626080 5689376 1626008 5689376 1626032 5689568 +1626112 5689640 1626168 5689416 1626080 5689376 1626032 5689568 +1626112 5689640 1626264 5689472 1626168 5689416 1626032 5689568 +1626080 5689376 1626008 5689376 1626032 5689568 1626168 5689416 +1626032 5689568 1625576 5690216 1626112 5689640 1626168 5689416 +1626008 5689376 1625968 5689376 1626032 5689568 1626080 5689376 +1625576 5690216 1626112 5689640 1626032 5689568 1625120 5689928 +1626032 5689568 1626008 5689376 1625968 5689376 1625120 5689928 +1626032 5689568 1626000 5689520 1625120 5689928 1625576 5690216 +1625120 5689928 1626000 5689520 1625968 5689376 1624840 5689808 +1626032 5689568 1626000 5689520 1625576 5690216 1626112 5689640 +1626032 5689568 1625968 5689376 1626000 5689520 1625576 5690216 +1625968 5689376 1626000 5689520 1626032 5689568 1626008 5689376 +1625968 5689376 1626000 5689520 1626008 5689376 1625992 5689368 +1626032 5689568 1626080 5689376 1626008 5689376 1626000 5689520 +1626032 5689568 1626168 5689416 1626080 5689376 1626000 5689520 +1626032 5689568 1626112 5689640 1626168 5689416 1626000 5689520 +1626080 5689376 1626008 5689376 1626000 5689520 1626168 5689416 +1626000 5689520 1625576 5690216 1626032 5689568 1626168 5689416 +1626008 5689376 1625968 5689376 1626000 5689520 1626080 5689376 +1626000 5689520 1625968 5689376 1625120 5689928 1625576 5690216 +1625968 5689376 1625120 5689928 1626000 5689520 1626008 5689376 +1625120 5689928 1625992 5689496 1625968 5689376 1624840 5689808 +1626000 5689520 1625992 5689496 1625120 5689928 1625576 5690216 +1625968 5689376 1625992 5689496 1626000 5689520 1626008 5689376 +1625968 5689376 1625992 5689496 1626008 5689376 1625992 5689368 +1626000 5689520 1626080 5689376 1626008 5689376 1625992 5689496 +1626000 5689520 1626168 5689416 1626080 5689376 1625992 5689496 +1626000 5689520 1626032 5689568 1626168 5689416 1625992 5689496 +1626080 5689376 1626008 5689376 1625992 5689496 1626168 5689416 +1625992 5689496 1625120 5689928 1626000 5689520 1626168 5689416 +1626008 5689376 1625968 5689376 1625992 5689496 1626080 5689376 +1625968 5689376 1625120 5689928 1625992 5689496 1626008 5689376 +1625120 5689928 1625968 5689472 1625968 5689376 1624840 5689808 +1625992 5689496 1625968 5689472 1625120 5689928 1626000 5689520 +1625120 5689928 1625576 5690216 1626000 5689520 1625968 5689472 +1625576 5690216 1626032 5689568 1626000 5689520 1625968 5689472 +1626000 5689520 1625992 5689496 1625968 5689472 1625576 5690216 +1625992 5689496 1625968 5689376 1625968 5689472 1626000 5689520 +1625968 5689376 1625968 5689472 1625992 5689496 1626008 5689376 +1625968 5689376 1625968 5689472 1626008 5689376 1625992 5689368 +1625992 5689496 1626080 5689376 1626008 5689376 1625968 5689472 +1625968 5689472 1626000 5689520 1625992 5689496 1626008 5689376 +1625968 5689472 1625968 5689376 1625120 5689928 1625576 5690216 +1625968 5689376 1625120 5689928 1625968 5689472 1626008 5689376 +1625120 5689928 1625000 5690216 1625272 5690680 1625576 5690216 +1625272 5690680 1625520 5690696 1625576 5690216 1625000 5690216 +1624816 5690640 1625000 5690216 1625120 5689928 1624640 5690320 +1625120 5689928 1624840 5689808 1624640 5690320 1625000 5690216 +1624840 5689808 1624464 5690136 1624640 5690320 1625000 5690216 +1624640 5690320 1624816 5690640 1625000 5690216 1624840 5689808 +1625272 5690680 1625000 5690216 1624816 5690640 1624912 5690712 +1625000 5690216 1624912 5690712 1625272 5690680 1625576 5690216 +1624816 5690640 1624912 5690712 1625000 5690216 1624640 5690320 +1625120 5689928 1624840 5689808 1625000 5690216 1625576 5690216 +1624816 5690640 1624840 5690672 1624912 5690712 1625000 5690216 +1625576 5690216 1625056 5690168 1625000 5690216 1625272 5690680 +1625576 5690216 1625056 5690168 1625272 5690680 1625520 5690696 +1625000 5690216 1624912 5690712 1625272 5690680 1625056 5690168 +1625056 5690168 1625120 5689928 1625000 5690216 1625272 5690680 +1625000 5690216 1625056 5690168 1625120 5689928 1624840 5689808 +1625000 5690216 1625056 5690168 1624840 5689808 1624640 5690320 +1625000 5690216 1625272 5690680 1625056 5690168 1624840 5689808 +1625056 5690168 1625576 5690216 1625120 5689928 1624840 5689808 +1625576 5690216 1625120 5689928 1625056 5690168 1625272 5690680 +1625576 5690216 1625128 5690184 1625272 5690680 1625520 5690696 +1625272 5690680 1625128 5690184 1625056 5690168 1625000 5690216 +1625272 5690680 1625128 5690184 1625000 5690216 1624912 5690712 +1625128 5690184 1625576 5690216 1625056 5690168 1625000 5690216 +1625056 5690168 1625128 5690184 1625576 5690216 1625120 5689928 +1625056 5690168 1625128 5690184 1625120 5689928 1624840 5689808 +1625056 5690168 1625000 5690216 1625128 5690184 1625120 5689928 +1625128 5690184 1625272 5690680 1625576 5690216 1625120 5689928 +1625272 5690680 1625576 5690216 1625128 5690184 1625000 5690216 +1625576 5690216 1625232 5690240 1625272 5690680 1625520 5690696 +1625576 5690216 1625232 5690240 1625520 5690696 1625784 5690360 +1625128 5690184 1625232 5690240 1625576 5690216 1625120 5689928 +1625128 5690184 1625232 5690240 1625120 5689928 1625056 5690168 +1625128 5690184 1625272 5690680 1625232 5690240 1625120 5689928 +1625272 5690680 1625232 5690240 1625128 5690184 1625000 5690216 +1625128 5690184 1625056 5690168 1625000 5690216 1625232 5690240 +1625272 5690680 1625232 5690240 1625000 5690216 1624912 5690712 +1625232 5690240 1625120 5689928 1625128 5690184 1625000 5690216 +1625576 5690216 1625120 5689928 1625232 5690240 1625520 5690696 +1625232 5690240 1625000 5690216 1625272 5690680 1625520 5690696 +1625576 5690216 1625256 5690256 1625520 5690696 1625784 5690360 +1625520 5690696 1625256 5690256 1625232 5690240 1625272 5690680 +1625232 5690240 1625256 5690256 1625576 5690216 1625120 5689928 +1625256 5690256 1625576 5690216 1625232 5690240 1625272 5690680 +1625232 5690240 1625000 5690216 1625272 5690680 1625256 5690256 +1625520 5690696 1625576 5690216 1625256 5690256 1625272 5690680 +1625576 5690216 1625344 5690280 1625520 5690696 1625784 5690360 +1625256 5690256 1625344 5690280 1625576 5690216 1625232 5690240 +1625576 5690216 1625120 5689928 1625232 5690240 1625344 5690280 +1625120 5689928 1625128 5690184 1625232 5690240 1625344 5690280 +1625232 5690240 1625256 5690256 1625344 5690280 1625120 5689928 +1625256 5690256 1625520 5690696 1625344 5690280 1625232 5690240 +1625520 5690696 1625344 5690280 1625256 5690256 1625272 5690680 +1625256 5690256 1625232 5690240 1625272 5690680 1625344 5690280 +1625344 5690280 1625232 5690240 1625256 5690256 1625272 5690680 +1625344 5690280 1625520 5690696 1625576 5690216 1625120 5689928 +1625520 5690696 1625576 5690216 1625344 5690280 1625272 5690680 +1625576 5690216 1625432 5690312 1625520 5690696 1625784 5690360 +1625520 5690696 1625840 5690768 1625784 5690360 1625432 5690312 +1625344 5690280 1625432 5690312 1625576 5690216 1625120 5689928 +1625520 5690696 1625432 5690312 1625344 5690280 1625272 5690680 +1625344 5690280 1625256 5690256 1625272 5690680 1625432 5690312 +1625432 5690312 1625576 5690216 1625344 5690280 1625272 5690680 +1625576 5690216 1625344 5690280 1625432 5690312 1625784 5690360 +1625432 5690312 1625272 5690680 1625520 5690696 1625784 5690360 +1625784 5690360 1625456 5690312 1625432 5690312 1625520 5690696 +1625784 5690360 1625456 5690312 1625520 5690696 1625840 5690768 +1625432 5690312 1625456 5690312 1625576 5690216 1625344 5690280 +1625456 5690312 1625576 5690216 1625432 5690312 1625520 5690696 +1625432 5690312 1625272 5690680 1625520 5690696 1625456 5690312 +1625784 5690360 1625576 5690216 1625456 5690312 1625520 5690696 +1625784 5690360 1625488 5690344 1625520 5690696 1625840 5690768 +1625520 5690696 1625488 5690344 1625456 5690312 1625432 5690312 +1625520 5690696 1625488 5690344 1625432 5690312 1625272 5690680 +1625488 5690344 1625456 5690312 1625432 5690312 1625272 5690680 +1625432 5690312 1625344 5690280 1625272 5690680 1625488 5690344 +1625488 5690344 1625784 5690360 1625456 5690312 1625432 5690312 +1625456 5690312 1625488 5690344 1625784 5690360 1625576 5690216 +1625456 5690312 1625488 5690344 1625576 5690216 1625432 5690312 +1625456 5690312 1625432 5690312 1625488 5690344 1625576 5690216 +1625488 5690344 1625520 5690696 1625784 5690360 1625576 5690216 +1625520 5690696 1625784 5690360 1625488 5690344 1625272 5690680 +1625272 5690680 1625488 5690408 1625488 5690344 1625432 5690312 +1625488 5690344 1625456 5690312 1625432 5690312 1625488 5690408 +1625272 5690680 1625488 5690408 1625432 5690312 1625344 5690280 +1625272 5690680 1625488 5690408 1625344 5690280 1625256 5690256 +1625488 5690408 1625488 5690344 1625432 5690312 1625344 5690280 +1625488 5690408 1625520 5690696 1625488 5690344 1625432 5690312 +1625488 5690344 1625488 5690408 1625520 5690696 1625784 5690360 +1625520 5690696 1625840 5690768 1625784 5690360 1625488 5690408 +1625488 5690344 1625488 5690408 1625784 5690360 1625576 5690216 +1625488 5690344 1625432 5690312 1625488 5690408 1625784 5690360 +1625488 5690408 1625272 5690680 1625520 5690696 1625784 5690360 +1625272 5690680 1625520 5690696 1625488 5690408 1625344 5690280 +1625272 5690680 1625432 5690472 1625344 5690280 1625256 5690256 +1625272 5690680 1625432 5690472 1625256 5690256 1625232 5690240 +1625344 5690280 1625432 5690472 1625488 5690408 1625432 5690312 +1625488 5690408 1625488 5690344 1625432 5690312 1625432 5690472 +1625432 5690472 1625272 5690680 1625488 5690408 1625432 5690312 +1625488 5690408 1625432 5690472 1625272 5690680 1625520 5690696 +1625488 5690408 1625432 5690472 1625520 5690696 1625784 5690360 +1625488 5690408 1625432 5690312 1625432 5690472 1625520 5690696 +1625272 5690680 1625520 5690696 1625432 5690472 1625256 5690256 +1625432 5690472 1625432 5690312 1625344 5690280 1625256 5690256 +1625272 5690680 1625384 5690496 1625256 5690256 1625232 5690240 +1625256 5690256 1625384 5690496 1625432 5690472 1625344 5690280 +1625432 5690472 1625384 5690496 1625272 5690680 1625520 5690696 +1625432 5690472 1625384 5690496 1625520 5690696 1625488 5690408 +1625384 5690496 1625520 5690696 1625432 5690472 1625344 5690280 +1625432 5690472 1625432 5690312 1625344 5690280 1625384 5690496 +1625344 5690280 1625256 5690256 1625384 5690496 1625432 5690312 +1625432 5690472 1625488 5690408 1625432 5690312 1625384 5690496 +1625432 5690472 1625432 5690312 1625384 5690496 1625520 5690696 +1625384 5690496 1625256 5690256 1625272 5690680 1625520 5690696 +1625256 5690256 1625272 5690680 1625384 5690496 1625344 5690280 +1625272 5690680 1625296 5690496 1625256 5690256 1625232 5690240 +1625272 5690680 1625296 5690496 1625232 5690240 1625000 5690216 +1625296 5690496 1625256 5690256 1625232 5690240 1625000 5690216 +1625272 5690680 1625296 5690496 1625000 5690216 1624912 5690712 +1625000 5690216 1624816 5690640 1624912 5690712 1625296 5690496 +1625232 5690240 1625128 5690184 1625000 5690216 1625296 5690496 +1625296 5690496 1625232 5690240 1625000 5690216 1624912 5690712 +1625384 5690496 1625296 5690496 1625272 5690680 1625520 5690696 +1625256 5690256 1625296 5690496 1625384 5690496 1625344 5690280 +1625384 5690496 1625432 5690312 1625344 5690280 1625296 5690496 +1625296 5690496 1625272 5690680 1625384 5690496 1625344 5690280 +1625272 5690680 1625384 5690496 1625296 5690496 1624912 5690712 +1625296 5690496 1625344 5690280 1625256 5690256 1625232 5690240 +1624912 5690712 1625208 5690480 1625000 5690216 1624816 5690640 +1625296 5690496 1625208 5690480 1624912 5690712 1625272 5690680 +1625000 5690216 1624640 5690320 1624816 5690640 1625208 5690480 +1624912 5690712 1625272 5690680 1625208 5690480 1624816 5690640 +1625208 5690480 1625296 5690496 1625000 5690216 1624816 5690640 +1625000 5690216 1625208 5690480 1625296 5690496 1625232 5690240 +1625296 5690496 1625256 5690256 1625232 5690240 1625208 5690480 +1625000 5690216 1624816 5690640 1625208 5690480 1625232 5690240 +1625000 5690216 1625208 5690480 1625232 5690240 1625128 5690184 +1625000 5690216 1625208 5690480 1625128 5690184 1625056 5690168 +1625000 5690216 1624816 5690640 1625208 5690480 1625128 5690184 +1625232 5690240 1625128 5690184 1625208 5690480 1625256 5690256 +1625296 5690496 1625208 5690480 1625272 5690680 1625384 5690496 +1625296 5690496 1625256 5690256 1625208 5690480 1625272 5690680 +1625296 5690496 1625344 5690280 1625256 5690256 1625208 5690480 +1625256 5690256 1625232 5690240 1625208 5690480 1625344 5690280 +1625296 5690496 1625384 5690496 1625344 5690280 1625208 5690480 +1625296 5690496 1625344 5690280 1625208 5690480 1625272 5690680 +1624912 5690712 1625208 5690480 1624816 5690640 1624840 5690672 +1625208 5690480 1625112 5690448 1624816 5690640 1624912 5690712 +1624816 5690640 1625112 5690448 1625000 5690216 1624640 5690320 +1625208 5690480 1625112 5690448 1624912 5690712 1625272 5690680 +1625112 5690448 1624816 5690640 1624912 5690712 1625272 5690680 +1625208 5690480 1625112 5690448 1625272 5690680 1625296 5690496 +1625208 5690480 1625000 5690216 1625112 5690448 1625272 5690680 +1625000 5690216 1625112 5690448 1625208 5690480 1625128 5690184 +1625000 5690216 1625112 5690448 1625128 5690184 1625056 5690168 +1625112 5690448 1625272 5690680 1625208 5690480 1625128 5690184 +1625208 5690480 1625232 5690240 1625128 5690184 1625112 5690448 +1625208 5690480 1625232 5690240 1625112 5690448 1625272 5690680 +1625128 5690184 1625000 5690216 1625112 5690448 1625232 5690240 +1625208 5690480 1625256 5690256 1625232 5690240 1625112 5690448 +1625208 5690480 1625344 5690280 1625256 5690256 1625112 5690448 +1625208 5690480 1625256 5690256 1625112 5690448 1625272 5690680 +1625232 5690240 1625128 5690184 1625112 5690448 1625256 5690256 +1625112 5690448 1625000 5690216 1624816 5690640 1624912 5690712 +1625000 5690216 1624816 5690640 1625112 5690448 1625128 5690184 +1624816 5690640 1624840 5690672 1624912 5690712 1625112 5690448 +1624816 5690640 1625080 5690424 1625000 5690216 1624640 5690320 +1625000 5690216 1624840 5689808 1624640 5690320 1625080 5690424 +1625112 5690448 1625080 5690424 1624816 5690640 1624912 5690712 +1625112 5690448 1625080 5690424 1624912 5690712 1625272 5690680 +1625112 5690448 1625000 5690216 1625080 5690424 1624912 5690712 +1625000 5690216 1625080 5690424 1625112 5690448 1625128 5690184 +1625000 5690216 1625080 5690424 1625128 5690184 1625056 5690168 +1625112 5690448 1625232 5690240 1625128 5690184 1625080 5690424 +1625112 5690448 1625256 5690256 1625232 5690240 1625080 5690424 +1625080 5690424 1624912 5690712 1625112 5690448 1625232 5690240 +1625128 5690184 1625000 5690216 1625080 5690424 1625232 5690240 +1624816 5690640 1624912 5690712 1625080 5690424 1624640 5690320 +1625080 5690424 1625128 5690184 1625000 5690216 1624640 5690320 +1624816 5690640 1624840 5690672 1624912 5690712 1625080 5690424 +1624640 5690320 1625048 5690400 1625000 5690216 1624840 5689808 +1625080 5690424 1625048 5690400 1624640 5690320 1624816 5690640 +1625048 5690400 1625000 5690216 1624640 5690320 1624816 5690640 +1625080 5690424 1625048 5690400 1624816 5690640 1624912 5690712 +1625048 5690400 1624640 5690320 1624816 5690640 1624912 5690712 +1625080 5690424 1625048 5690400 1624912 5690712 1625112 5690448 +1625080 5690424 1625000 5690216 1625048 5690400 1624912 5690712 +1625000 5690216 1625048 5690400 1625080 5690424 1625128 5690184 +1625000 5690216 1624640 5690320 1625048 5690400 1625128 5690184 +1625000 5690216 1625048 5690400 1625128 5690184 1625056 5690168 +1625080 5690424 1625232 5690240 1625128 5690184 1625048 5690400 +1625128 5690184 1625000 5690216 1625048 5690400 1625232 5690240 +1625080 5690424 1625112 5690448 1625232 5690240 1625048 5690400 +1625048 5690400 1624912 5690712 1625080 5690424 1625232 5690240 +1624816 5690640 1624840 5690672 1624912 5690712 1625048 5690400 +1625048 5690400 1624992 5690288 1624640 5690320 1624816 5690640 +1625000 5690216 1624992 5690288 1625048 5690400 1625128 5690184 +1625048 5690400 1625232 5690240 1625128 5690184 1624992 5690288 +1625048 5690400 1625128 5690184 1624992 5690288 1624816 5690640 +1624992 5690288 1625000 5690216 1624640 5690320 1624816 5690640 +1625000 5690216 1624640 5690320 1624992 5690288 1625128 5690184 +1625000 5690216 1624992 5690288 1625128 5690184 1625056 5690168 +1624640 5690320 1624992 5690288 1625000 5690216 1624840 5689808 +1625048 5690400 1624992 5690288 1624816 5690640 1624912 5690712 +1626992 5691384 1627624 5691896 1629856 5692928 1627168 5691336 +1629856 5692928 1629816 5692792 1627168 5691336 1627624 5691896 +1627168 5691336 1626992 5691384 1627624 5691896 1629816 5692792 +1629856 5692928 1627624 5691896 1626688 5696104 1626864 5696192 +1629856 5692928 1627624 5691896 1626864 5696192 1629904 5693000 +1627624 5691896 1626864 5696192 1629856 5692928 1629816 5692792 +1627624 5691896 1626992 5691384 1626688 5696104 1626864 5696192 +1626992 5691384 1626688 5696104 1627624 5691896 1627168 5691336 +1626688 5696104 1626776 5696152 1626864 5696192 1627624 5691896 +1629816 5692792 1627368 5691192 1627168 5691336 1627624 5691896 +1627168 5691336 1626992 5691384 1627624 5691896 1627368 5691192 +1629816 5692792 1627368 5691192 1627624 5691896 1629856 5692928 +1627368 5691192 1627304 5691224 1627168 5691336 1627624 5691896 +1627168 5691336 1626992 5691384 1627624 5691896 1627304 5691224 +1627368 5691192 1627304 5691224 1627624 5691896 1629816 5692792 +1629816 5692792 1629840 5692680 1627368 5691192 1627624 5691896 +1629816 5692792 1629840 5692680 1627624 5691896 1629856 5692928 +1629840 5692680 1629944 5692528 1627368 5691192 1627624 5691896 +1629944 5692528 1630136 5692352 1627368 5691192 1627624 5691896 +1629944 5692528 1630136 5692352 1627624 5691896 1629840 5692680 +1627368 5691192 1627304 5691224 1627624 5691896 1630136 5692352 +1630136 5692352 1627352 5691104 1627368 5691192 1627624 5691896 +1629840 5692680 1629944 5692528 1627624 5691896 1629816 5692792 +1626688 5696104 1627624 5691896 1626992 5691384 1626600 5696072 +1626688 5696104 1626864 5696192 1627624 5691896 1626600 5696072 +1627624 5691896 1627168 5691336 1626992 5691384 1626600 5696072 +1626992 5691384 1626552 5696056 1626600 5696072 1627624 5691896 +1626992 5691384 1626552 5696056 1627624 5691896 1627168 5691336 +1626992 5691384 1626872 5691384 1626552 5696056 1627624 5691896 +1626992 5691384 1626872 5691384 1627624 5691896 1627168 5691336 +1626872 5691384 1624280 5693272 1626552 5696056 1627624 5691896 +1626552 5696056 1626600 5696072 1627624 5691896 1624280 5693272 +1626872 5691384 1624280 5693272 1627624 5691896 1626992 5691384 +1624280 5693272 1626520 5696056 1626552 5696056 1627624 5691896 +1624280 5693272 1626488 5696072 1626520 5696056 1627624 5691896 +1624280 5693272 1626520 5696056 1627624 5691896 1626872 5691384 +1626552 5696056 1626600 5696072 1627624 5691896 1626520 5696056 +1626872 5691384 1626768 5691344 1624280 5693272 1627624 5691896 +1626600 5696072 1626688 5696104 1627624 5691896 1626552 5696056 +1629856 5692928 1627944 5692096 1626864 5696192 1629904 5693000 +1626864 5696192 1626896 5696216 1629904 5693000 1627944 5692096 +1626864 5696192 1627944 5692096 1627624 5691896 1626688 5696104 +1627624 5691896 1627944 5692096 1629856 5692928 1629816 5692792 +1627624 5691896 1627944 5692096 1629816 5692792 1629840 5692680 +1627944 5692096 1629856 5692928 1629816 5692792 1629840 5692680 +1627624 5691896 1626600 5696072 1626688 5696104 1627944 5692096 +1626688 5696104 1626864 5696192 1627944 5692096 1626600 5696072 +1627944 5692096 1629840 5692680 1627624 5691896 1626600 5696072 +1629856 5692928 1629816 5692792 1627944 5692096 1629904 5693000 +1627944 5692096 1626688 5696104 1626864 5696192 1629904 5693000 +1626864 5696192 1627944 5692096 1626688 5696104 1626776 5696152 +1627624 5691896 1627944 5692096 1629840 5692680 1629944 5692528 +1627944 5692096 1629816 5692792 1629840 5692680 1629944 5692528 +1627624 5691896 1627944 5692096 1629944 5692528 1630136 5692352 +1627624 5691896 1627944 5692096 1630136 5692352 1627368 5691192 +1627944 5692096 1629944 5692528 1630136 5692352 1627368 5691192 +1627624 5691896 1626600 5696072 1627944 5692096 1627368 5691192 +1627624 5691896 1627944 5692096 1627368 5691192 1627304 5691224 +1630136 5692352 1627352 5691104 1627368 5691192 1627944 5692096 +1627368 5691192 1627624 5691896 1627944 5692096 1627352 5691104 +1630136 5692352 1627352 5691104 1627944 5692096 1629944 5692528 +1630136 5692352 1630232 5692312 1627352 5691104 1627944 5692096 +1627944 5692096 1629840 5692680 1629944 5692528 1630136 5692352 +1627624 5691896 1626552 5696056 1626600 5696072 1627944 5692096 +1626600 5696072 1626688 5696104 1627944 5692096 1626552 5696056 +1627624 5691896 1626552 5696056 1627944 5692096 1627368 5691192 +1627624 5691896 1626520 5696056 1626552 5696056 1627944 5692096 +1627944 5692096 1628120 5692240 1629904 5693000 1629856 5692928 +1629904 5693000 1628120 5692240 1626864 5696192 1626896 5696216 +1627944 5692096 1628120 5692240 1629856 5692928 1629816 5692792 +1628120 5692240 1629904 5693000 1629856 5692928 1629816 5692792 +1627944 5692096 1628120 5692240 1629816 5692792 1629840 5692680 +1627944 5692096 1628120 5692240 1629840 5692680 1629944 5692528 +1628120 5692240 1629816 5692792 1629840 5692680 1629944 5692528 +1628120 5692240 1629856 5692928 1629816 5692792 1629840 5692680 +1627944 5692096 1626864 5696192 1628120 5692240 1629944 5692528 +1626864 5696192 1628120 5692240 1627944 5692096 1626688 5696104 +1627944 5692096 1626600 5696072 1626688 5696104 1628120 5692240 +1627944 5692096 1626552 5696056 1626600 5696072 1628120 5692240 +1626600 5696072 1626688 5696104 1628120 5692240 1626552 5696056 +1628120 5692240 1629944 5692528 1627944 5692096 1626552 5696056 +1626688 5696104 1626864 5696192 1628120 5692240 1626600 5696072 +1628120 5692240 1626896 5696216 1629904 5693000 1629856 5692928 +1628120 5692240 1626688 5696104 1626864 5696192 1626896 5696216 +1626864 5696192 1628120 5692240 1626688 5696104 1626776 5696152 +1629904 5693000 1628120 5692240 1626896 5696216 1628048 5696704 +1627944 5692096 1628120 5692240 1629944 5692528 1630136 5692352 +1628120 5692240 1629840 5692680 1629944 5692528 1630136 5692352 +1627944 5692096 1628120 5692240 1630136 5692352 1627352 5691104 +1627944 5692096 1626552 5696056 1628120 5692240 1630136 5692352 +1627944 5692096 1627624 5691896 1626552 5696056 1628120 5692240 +1626896 5696216 1628128 5692296 1628120 5692240 1626864 5696192 +1628120 5692240 1628128 5692296 1629904 5693000 1629856 5692928 +1628120 5692240 1628128 5692296 1629856 5692928 1629816 5692792 +1628120 5692240 1628128 5692296 1629816 5692792 1629840 5692680 +1628128 5692296 1629856 5692928 1629816 5692792 1629840 5692680 +1628120 5692240 1628128 5692296 1629840 5692680 1629944 5692528 +1628128 5692296 1629904 5693000 1629856 5692928 1629816 5692792 +1628128 5692296 1629840 5692680 1628120 5692240 1626864 5696192 +1628120 5692240 1626688 5696104 1626864 5696192 1628128 5692296 +1626864 5696192 1626896 5696216 1628128 5692296 1626688 5696104 +1628120 5692240 1626600 5696072 1626688 5696104 1628128 5692296 +1628120 5692240 1626552 5696056 1626600 5696072 1628128 5692296 +1628120 5692240 1627944 5692096 1626552 5696056 1628128 5692296 +1626552 5696056 1626600 5696072 1628128 5692296 1627944 5692096 +1626600 5696072 1626688 5696104 1628128 5692296 1626552 5696056 +1628120 5692240 1627944 5692096 1628128 5692296 1629840 5692680 +1626688 5696104 1626864 5696192 1628128 5692296 1626600 5696072 +1628128 5692296 1626896 5696216 1629904 5693000 1629856 5692928 +1626896 5696216 1629904 5693000 1628128 5692296 1626864 5696192 +1626688 5696104 1626776 5696152 1626864 5696192 1628128 5692296 +1629904 5693000 1628128 5692296 1626896 5696216 1628048 5696704 +1627944 5692096 1627624 5691896 1626552 5696056 1628128 5692296 +1626552 5696056 1626600 5696072 1628128 5692296 1627624 5691896 +1627944 5692096 1627624 5691896 1628128 5692296 1628120 5692240 +1627624 5691896 1626520 5696056 1626552 5696056 1628128 5692296 +1626552 5696056 1626600 5696072 1628128 5692296 1626520 5696056 +1627624 5691896 1624280 5693272 1626520 5696056 1628128 5692296 +1627624 5691896 1626520 5696056 1628128 5692296 1627944 5692096 +1628128 5692296 1628080 5692336 1626520 5696056 1626552 5696056 +1628128 5692296 1628080 5692336 1626552 5696056 1626600 5696072 +1628128 5692296 1628080 5692336 1626600 5696072 1626688 5696104 +1628080 5692336 1626552 5696056 1626600 5696072 1626688 5696104 +1628128 5692296 1628080 5692336 1626688 5696104 1626864 5696192 +1628128 5692296 1628080 5692336 1626864 5696192 1626896 5696216 +1628080 5692336 1626600 5696072 1626688 5696104 1626864 5696192 +1628080 5692336 1626688 5696104 1626864 5696192 1626896 5696216 +1628128 5692296 1627624 5691896 1628080 5692336 1626896 5696216 +1628128 5692296 1628080 5692336 1626896 5696216 1629904 5693000 +1628080 5692336 1626864 5696192 1626896 5696216 1629904 5693000 +1628128 5692296 1628080 5692336 1629904 5693000 1629856 5692928 +1628128 5692296 1628080 5692336 1629856 5692928 1629816 5692792 +1628128 5692296 1628080 5692336 1629816 5692792 1629840 5692680 +1628080 5692336 1629904 5693000 1629856 5692928 1629816 5692792 +1628128 5692296 1627624 5691896 1628080 5692336 1629816 5692792 +1628080 5692336 1626896 5696216 1629904 5693000 1629856 5692928 +1628080 5692336 1627624 5691896 1626520 5696056 1626552 5696056 +1626688 5696104 1626776 5696152 1626864 5696192 1628080 5692336 +1628080 5692336 1626520 5696056 1626552 5696056 1626600 5696072 +1626896 5696216 1628048 5696704 1629904 5693000 1628080 5692336 +1626896 5696216 1628048 5696704 1628080 5692336 1626864 5696192 +1629904 5693000 1629856 5692928 1628080 5692336 1628048 5696704 +1626896 5696216 1626984 5696288 1628048 5696704 1628080 5692336 +1628048 5696704 1628088 5696712 1629904 5693000 1628080 5692336 +1626520 5696056 1628080 5692336 1627624 5691896 1624280 5693272 +1626520 5696056 1628080 5692336 1624280 5693272 1626488 5696072 +1626520 5696056 1626552 5696056 1628080 5692336 1624280 5693272 +1628080 5692336 1628128 5692296 1627624 5691896 1624280 5693272 +1627624 5691896 1626872 5691384 1624280 5693272 1628080 5692336 +1627624 5691896 1628080 5692336 1628128 5692296 1627944 5692096 +1628128 5692296 1628120 5692240 1627944 5692096 1628080 5692336 +1628080 5692336 1629816 5692792 1628128 5692296 1628120 5692240 +1627624 5691896 1624280 5693272 1628080 5692336 1627944 5692096 +1627944 5692096 1627624 5691896 1628080 5692336 1628120 5692240 +1627624 5691896 1628000 5692352 1628080 5692336 1627944 5692096 +1628000 5692352 1624280 5693272 1628080 5692336 1627944 5692096 +1627624 5691896 1624280 5693272 1628000 5692352 1627944 5692096 +1624280 5693272 1628000 5692352 1627624 5691896 1626872 5691384 +1628080 5692336 1628000 5692352 1624280 5693272 1626520 5696056 +1624280 5693272 1626488 5696072 1626520 5696056 1628000 5692352 +1628080 5692336 1628000 5692352 1626520 5696056 1626552 5696056 +1628080 5692336 1627944 5692096 1628000 5692352 1626552 5696056 +1628000 5692352 1627624 5691896 1624280 5693272 1626520 5696056 +1628080 5692336 1628000 5692352 1626552 5696056 1626600 5696072 +1628080 5692336 1628000 5692352 1626600 5696072 1626688 5696104 +1628080 5692336 1628000 5692352 1626688 5696104 1626864 5696192 +1628000 5692352 1626600 5696072 1626688 5696104 1626864 5696192 +1628080 5692336 1628000 5692352 1626864 5696192 1626896 5696216 +1628080 5692336 1628000 5692352 1626896 5696216 1628048 5696704 +1628000 5692352 1626688 5696104 1626864 5696192 1626896 5696216 +1628000 5692352 1626864 5696192 1626896 5696216 1628048 5696704 +1628000 5692352 1626520 5696056 1626552 5696056 1626600 5696072 +1628080 5692336 1627944 5692096 1628000 5692352 1628048 5696704 +1626896 5696216 1626984 5696288 1628048 5696704 1628000 5692352 +1626688 5696104 1626776 5696152 1626864 5696192 1628000 5692352 +1628000 5692352 1626552 5696056 1626600 5696072 1626688 5696104 +1628080 5692336 1628000 5692352 1628048 5696704 1629904 5693000 +1628000 5692352 1626896 5696216 1628048 5696704 1629904 5693000 +1628080 5692336 1628000 5692352 1629904 5693000 1629856 5692928 +1628080 5692336 1627944 5692096 1628000 5692352 1629904 5693000 +1628048 5696704 1628088 5696712 1629904 5693000 1628000 5692352 +1628000 5692352 1624280 5693272 1626520 5696056 1626552 5696056 +1628080 5692336 1628120 5692240 1627944 5692096 1628000 5692352 +1628080 5692336 1628128 5692296 1628120 5692240 1628000 5692352 +1628080 5692336 1628120 5692240 1628000 5692352 1629904 5693000 +1627944 5692096 1627624 5691896 1628000 5692352 1628120 5692240 +1628000 5692352 1627776 5692304 1624280 5693272 1626520 5696056 +1624280 5693272 1626488 5696072 1626520 5696056 1627776 5692304 +1628000 5692352 1627624 5691896 1627776 5692304 1626520 5696056 +1627624 5691896 1627776 5692304 1628000 5692352 1627944 5692096 +1628000 5692352 1628120 5692240 1627944 5692096 1627776 5692304 +1627776 5692304 1626520 5696056 1628000 5692352 1627944 5692096 +1627776 5692304 1627624 5691896 1624280 5693272 1626520 5696056 +1627624 5691896 1624280 5693272 1627776 5692304 1627944 5692096 +1624280 5693272 1627776 5692304 1627624 5691896 1626872 5691384 +1624280 5693272 1626520 5696056 1627776 5692304 1626872 5691384 +1627776 5692304 1627944 5692096 1627624 5691896 1626872 5691384 +1627624 5691896 1626992 5691384 1626872 5691384 1627776 5692304 +1628000 5692352 1627776 5692304 1626520 5696056 1626552 5696056 +1628000 5692352 1627776 5692304 1626552 5696056 1626600 5696072 +1627776 5692304 1624280 5693272 1626520 5696056 1626552 5696056 +1628000 5692352 1627944 5692096 1627776 5692304 1626600 5696072 +1628000 5692352 1627776 5692304 1626600 5696072 1626688 5696104 +1628000 5692352 1627776 5692304 1626688 5696104 1626864 5696192 +1627776 5692304 1626552 5696056 1626600 5696072 1626688 5696104 +1628000 5692352 1627944 5692096 1627776 5692304 1626688 5696104 +1627776 5692304 1626520 5696056 1626552 5696056 1626600 5696072 +1624280 5693272 1627776 5692304 1626872 5691384 1626768 5691344 +1624280 5693272 1626520 5696056 1627776 5692304 1626768 5691344 +1624280 5693272 1627776 5692304 1626768 5691344 1624232 5693160 +1627776 5692304 1627624 5691896 1626872 5691384 1626768 5691344 +1627776 5692304 1627672 5692304 1624280 5693272 1626520 5696056 +1624280 5693272 1626488 5696072 1626520 5696056 1627672 5692304 +1627776 5692304 1627672 5692304 1626520 5696056 1626552 5696056 +1627672 5692304 1624280 5693272 1626520 5696056 1626552 5696056 +1627776 5692304 1626768 5691344 1627672 5692304 1626552 5696056 +1627672 5692304 1626768 5691344 1624280 5693272 1626520 5696056 +1624280 5693272 1627672 5692304 1626768 5691344 1624232 5693160 +1627776 5692304 1627672 5692304 1626552 5696056 1626600 5696072 +1627776 5692304 1627672 5692304 1626600 5696072 1626688 5696104 +1627672 5692304 1626520 5696056 1626552 5696056 1626600 5696072 +1627776 5692304 1626768 5691344 1627672 5692304 1626688 5696104 +1627776 5692304 1627672 5692304 1626688 5696104 1628000 5692352 +1626688 5696104 1626864 5696192 1628000 5692352 1627672 5692304 +1627672 5692304 1626600 5696072 1626688 5696104 1628000 5692352 +1627776 5692304 1626768 5691344 1627672 5692304 1628000 5692352 +1627672 5692304 1626552 5696056 1626600 5696072 1626688 5696104 +1626768 5691344 1627672 5692304 1627776 5692304 1626872 5691384 +1627672 5692304 1628000 5692352 1627776 5692304 1626872 5691384 +1626768 5691344 1624280 5693272 1627672 5692304 1626872 5691384 +1627776 5692304 1627624 5691896 1626872 5691384 1627672 5692304 +1627776 5692304 1627624 5691896 1627672 5692304 1628000 5692352 +1627776 5692304 1627944 5692096 1627624 5691896 1627672 5692304 +1627624 5691896 1626992 5691384 1626872 5691384 1627672 5692304 +1626872 5691384 1626768 5691344 1627672 5692304 1627624 5691896 +1627672 5692304 1627288 5692400 1624280 5693272 1626520 5696056 +1624280 5693272 1626488 5696072 1626520 5696056 1627288 5692400 +1627672 5692304 1627288 5692400 1626520 5696056 1626552 5696056 +1627672 5692304 1627288 5692400 1626552 5696056 1626600 5696072 +1627288 5692400 1626520 5696056 1626552 5696056 1626600 5696072 +1627288 5692400 1624280 5693272 1626520 5696056 1626552 5696056 +1627672 5692304 1626768 5691344 1627288 5692400 1626600 5696072 +1626768 5691344 1627288 5692400 1627672 5692304 1626872 5691384 +1627288 5692400 1626600 5696072 1627672 5692304 1626872 5691384 +1627288 5692400 1626768 5691344 1624280 5693272 1626520 5696056 +1626768 5691344 1624280 5693272 1627288 5692400 1626872 5691384 +1624280 5693272 1627288 5692400 1626768 5691344 1624232 5693160 +1624280 5693272 1626520 5696056 1627288 5692400 1624232 5693160 +1627288 5692400 1626872 5691384 1626768 5691344 1624232 5693160 +1626768 5691344 1624120 5692536 1624232 5693160 1627288 5692400 +1624120 5692536 1624072 5692800 1624232 5693160 1627288 5692400 +1626768 5691344 1624120 5692536 1627288 5692400 1626872 5691384 +1624232 5693160 1624280 5693272 1627288 5692400 1624120 5692536 +1626768 5691344 1626496 5691144 1624120 5692536 1627288 5692400 +1627672 5692304 1627288 5692400 1626600 5696072 1626688 5696104 +1627672 5692304 1627288 5692400 1626688 5696104 1628000 5692352 +1626688 5696104 1626864 5696192 1628000 5692352 1627288 5692400 +1626864 5696192 1626896 5696216 1628000 5692352 1627288 5692400 +1628000 5692352 1627672 5692304 1627288 5692400 1626864 5696192 +1627288 5692400 1626552 5696056 1626600 5696072 1626688 5696104 +1627672 5692304 1626872 5691384 1627288 5692400 1628000 5692352 +1626688 5696104 1626776 5696152 1626864 5696192 1627288 5692400 +1627672 5692304 1627288 5692400 1628000 5692352 1627776 5692304 +1627288 5692400 1626600 5696072 1626688 5696104 1626864 5696192 +1627672 5692304 1627624 5691896 1626872 5691384 1627288 5692400 +1627672 5692304 1627624 5691896 1627288 5692400 1628000 5692352 +1626872 5691384 1626768 5691344 1627288 5692400 1627624 5691896 +1627672 5692304 1627776 5692304 1627624 5691896 1627288 5692400 +1627624 5691896 1626992 5691384 1626872 5691384 1627288 5692400 +1627624 5691896 1627168 5691336 1626992 5691384 1627288 5692400 +1626872 5691384 1626768 5691344 1627288 5692400 1626992 5691384 +1627624 5691896 1626992 5691384 1627288 5692400 1627672 5692304 +1626768 5691344 1627224 5692376 1627288 5692400 1626872 5691384 +1627288 5692400 1626992 5691384 1626872 5691384 1627224 5692376 +1627224 5692376 1624120 5692536 1627288 5692400 1626992 5691384 +1626872 5691384 1626768 5691344 1627224 5692376 1626992 5691384 +1626768 5691344 1624120 5692536 1627224 5692376 1626872 5691384 +1627288 5692400 1627624 5691896 1626992 5691384 1627224 5692376 +1627624 5691896 1627168 5691336 1626992 5691384 1627224 5692376 +1626992 5691384 1626872 5691384 1627224 5692376 1627624 5691896 +1627288 5692400 1627624 5691896 1627224 5692376 1624120 5692536 +1627288 5692400 1627224 5692376 1624120 5692536 1624232 5693160 +1624120 5692536 1624072 5692800 1624232 5693160 1627224 5692376 +1627288 5692400 1627624 5691896 1627224 5692376 1624232 5693160 +1627224 5692376 1626768 5691344 1624120 5692536 1624232 5693160 +1627288 5692400 1627224 5692376 1624232 5693160 1624280 5693272 +1627288 5692400 1627224 5692376 1624280 5693272 1626520 5696056 +1624280 5693272 1626488 5696072 1626520 5696056 1627224 5692376 +1627288 5692400 1627224 5692376 1626520 5696056 1626552 5696056 +1627288 5692400 1627224 5692376 1626552 5696056 1626600 5696072 +1627224 5692376 1624280 5693272 1626520 5696056 1626552 5696056 +1627288 5692400 1627624 5691896 1627224 5692376 1626552 5696056 +1627224 5692376 1624232 5693160 1624280 5693272 1626520 5696056 +1627224 5692376 1624120 5692536 1624232 5693160 1624280 5693272 +1624120 5692536 1627224 5692376 1626768 5691344 1626496 5691144 +1624120 5692536 1624232 5693160 1627224 5692376 1626496 5691144 +1627224 5692376 1626872 5691384 1626768 5691344 1626496 5691144 +1624120 5692536 1627224 5692376 1626496 5691144 1624120 5692440 +1624120 5692536 1624232 5693160 1627224 5692376 1624120 5692440 +1627224 5692376 1626768 5691344 1626496 5691144 1624120 5692440 +1626496 5691144 1626344 5691040 1624120 5692440 1627224 5692376 +1627288 5692400 1627672 5692304 1627624 5691896 1627224 5692376 +1626496 5691144 1627120 5692256 1627224 5692376 1626768 5691344 +1626496 5691144 1624120 5692440 1627120 5692256 1626768 5691344 +1627120 5692256 1624120 5692440 1627224 5692376 1626768 5691344 +1627224 5692376 1626872 5691384 1626768 5691344 1627120 5692256 +1627224 5692376 1626992 5691384 1626872 5691384 1627120 5692256 +1627224 5692376 1627624 5691896 1626992 5691384 1627120 5692256 +1627624 5691896 1627168 5691336 1626992 5691384 1627120 5692256 +1626992 5691384 1626872 5691384 1627120 5692256 1627624 5691896 +1627224 5692376 1627624 5691896 1627120 5692256 1624120 5692440 +1626872 5691384 1626768 5691344 1627120 5692256 1626992 5691384 +1627224 5692376 1627288 5692400 1627624 5691896 1627120 5692256 +1627624 5691896 1626992 5691384 1627120 5692256 1627288 5692400 +1627224 5692376 1627288 5692400 1627120 5692256 1624120 5692440 +1626768 5691344 1626496 5691144 1627120 5692256 1626872 5691384 +1627224 5692376 1627120 5692256 1624120 5692440 1624120 5692536 +1627224 5692376 1627120 5692256 1624120 5692536 1624232 5693160 +1624120 5692536 1624072 5692800 1624232 5693160 1627120 5692256 +1627224 5692376 1627288 5692400 1627120 5692256 1624232 5693160 +1627120 5692256 1626496 5691144 1624120 5692440 1624120 5692536 +1627224 5692376 1627120 5692256 1624232 5693160 1624280 5693272 +1627120 5692256 1624120 5692536 1624232 5693160 1624280 5693272 +1627224 5692376 1627288 5692400 1627120 5692256 1624280 5693272 +1627224 5692376 1627120 5692256 1624280 5693272 1626520 5696056 +1627120 5692256 1624120 5692440 1624120 5692536 1624232 5693160 +1624120 5692440 1627120 5692256 1626496 5691144 1626344 5691040 +1627288 5692400 1627672 5692304 1627624 5691896 1627120 5692256 +1627120 5692256 1627016 5692064 1626496 5691144 1624120 5692440 +1627016 5692064 1626768 5691344 1626496 5691144 1624120 5692440 +1627120 5692256 1627016 5692064 1624120 5692440 1624120 5692536 +1627016 5692064 1626496 5691144 1624120 5692440 1624120 5692536 +1627120 5692256 1626768 5691344 1627016 5692064 1624120 5692536 +1626768 5691344 1627016 5692064 1627120 5692256 1626872 5691384 +1627120 5692256 1626992 5691384 1626872 5691384 1627016 5692064 +1627120 5692256 1627624 5691896 1626992 5691384 1627016 5692064 +1627624 5691896 1627168 5691336 1626992 5691384 1627016 5692064 +1627624 5691896 1627304 5691224 1627168 5691336 1627016 5692064 +1627120 5692256 1627288 5692400 1627624 5691896 1627016 5692064 +1627624 5691896 1627168 5691336 1627016 5692064 1627120 5692256 +1626992 5691384 1626872 5691384 1627016 5692064 1627168 5691336 +1627016 5692064 1624120 5692536 1627120 5692256 1627624 5691896 +1626768 5691344 1626496 5691144 1627016 5692064 1626872 5691384 +1626872 5691384 1626768 5691344 1627016 5692064 1626992 5691384 +1627120 5692256 1627016 5692064 1624120 5692536 1624232 5693160 +1624120 5692536 1624072 5692800 1624232 5693160 1627016 5692064 +1627120 5692256 1627016 5692064 1624232 5693160 1624280 5693272 +1627016 5692064 1624120 5692440 1624120 5692536 1624232 5693160 +1627120 5692256 1627624 5691896 1627016 5692064 1624280 5693272 +1627120 5692256 1627016 5692064 1624280 5693272 1627224 5692376 +1627016 5692064 1624120 5692536 1624232 5693160 1624280 5693272 +1626496 5691144 1626344 5691040 1624120 5692440 1627016 5692064 +1624120 5692440 1624120 5692536 1627016 5692064 1626344 5691040 +1626496 5691144 1626344 5691040 1627016 5692064 1626768 5691344 +1626344 5691040 1625840 5690768 1624120 5692440 1627016 5692064 +1627016 5692064 1626984 5691928 1626768 5691344 1626496 5691144 +1627016 5692064 1626984 5691928 1626496 5691144 1626344 5691040 +1627016 5692064 1626872 5691384 1626984 5691928 1626344 5691040 +1626984 5691928 1626768 5691344 1626496 5691144 1626344 5691040 +1626984 5691928 1626872 5691384 1626768 5691344 1626496 5691144 +1626872 5691384 1626984 5691928 1627016 5692064 1626992 5691384 +1626984 5691928 1626344 5691040 1627016 5692064 1626992 5691384 +1627016 5692064 1627168 5691336 1626992 5691384 1626984 5691928 +1627016 5692064 1627168 5691336 1626984 5691928 1626344 5691040 +1627016 5692064 1627624 5691896 1627168 5691336 1626984 5691928 +1627624 5691896 1627304 5691224 1627168 5691336 1626984 5691928 +1627016 5692064 1627624 5691896 1626984 5691928 1626344 5691040 +1627016 5692064 1627120 5692256 1627624 5691896 1626984 5691928 +1627168 5691336 1626992 5691384 1626984 5691928 1627624 5691896 +1626872 5691384 1626768 5691344 1626984 5691928 1626992 5691384 +1626992 5691384 1626872 5691384 1626984 5691928 1627168 5691336 +1627016 5692064 1626984 5691928 1626344 5691040 1624120 5692440 +1627016 5692064 1626984 5691928 1624120 5692440 1624120 5692536 +1626984 5691928 1626496 5691144 1626344 5691040 1624120 5692440 +1627016 5692064 1627624 5691896 1626984 5691928 1624120 5692440 +1626344 5691040 1625840 5690768 1624120 5692440 1626984 5691928 +1626984 5691928 1626976 5691736 1626872 5691384 1626768 5691344 +1626984 5691928 1626976 5691736 1626768 5691344 1626496 5691144 +1626984 5691928 1626992 5691384 1626976 5691736 1626768 5691344 +1626976 5691736 1626992 5691384 1626872 5691384 1626768 5691344 +1626992 5691384 1626976 5691736 1626984 5691928 1627168 5691336 +1626984 5691928 1627624 5691896 1627168 5691336 1626976 5691736 +1627624 5691896 1627304 5691224 1627168 5691336 1626976 5691736 +1626984 5691928 1627016 5692064 1627624 5691896 1626976 5691736 +1626976 5691736 1626768 5691344 1626984 5691928 1627624 5691896 +1626992 5691384 1626872 5691384 1626976 5691736 1627168 5691336 +1627168 5691336 1626992 5691384 1626976 5691736 1627624 5691896 +1627168 5691336 1627000 5691696 1627624 5691896 1627304 5691224 +1627624 5691896 1627000 5691696 1626976 5691736 1626984 5691928 +1627624 5691896 1627000 5691696 1626984 5691928 1627016 5692064 +1627000 5691696 1627168 5691336 1626976 5691736 1626984 5691928 +1627624 5691896 1627168 5691336 1627000 5691696 1626984 5691928 +1626976 5691736 1627000 5691696 1627168 5691336 1626992 5691384 +1626976 5691736 1626984 5691928 1627000 5691696 1626992 5691384 +1626976 5691736 1627000 5691696 1626992 5691384 1626872 5691384 +1626976 5691736 1627000 5691696 1626872 5691384 1626768 5691344 +1626976 5691736 1626984 5691928 1627000 5691696 1626872 5691384 +1627000 5691696 1627624 5691896 1627168 5691336 1626992 5691384 +1627000 5691696 1627168 5691336 1626992 5691384 1626872 5691384 +1627168 5691336 1627032 5691656 1627624 5691896 1627304 5691224 +1627000 5691696 1627032 5691656 1627168 5691336 1626992 5691384 +1627000 5691696 1627624 5691896 1627032 5691656 1626992 5691384 +1627624 5691896 1627032 5691656 1627000 5691696 1626984 5691928 +1627624 5691896 1627032 5691656 1626984 5691928 1627016 5692064 +1627000 5691696 1626976 5691736 1626984 5691928 1627032 5691656 +1627032 5691656 1626992 5691384 1627000 5691696 1626984 5691928 +1627032 5691656 1627624 5691896 1627168 5691336 1626992 5691384 +1627624 5691896 1627168 5691336 1627032 5691656 1626984 5691928 +1627000 5691696 1627032 5691656 1626992 5691384 1626872 5691384 +1627000 5691696 1627032 5691656 1626872 5691384 1626976 5691736 +1627032 5691656 1627168 5691336 1626992 5691384 1626872 5691384 +1627000 5691696 1626984 5691928 1627032 5691656 1626872 5691384 +1627168 5691336 1627088 5691640 1627624 5691896 1627304 5691224 +1627032 5691656 1627088 5691640 1627168 5691336 1626992 5691384 +1627032 5691656 1627088 5691640 1626992 5691384 1626872 5691384 +1627032 5691656 1627624 5691896 1627088 5691640 1626992 5691384 +1627624 5691896 1627088 5691640 1627032 5691656 1626984 5691928 +1627624 5691896 1627088 5691640 1626984 5691928 1627016 5692064 +1627032 5691656 1627000 5691696 1626984 5691928 1627088 5691640 +1627000 5691696 1626976 5691736 1626984 5691928 1627088 5691640 +1627000 5691696 1626976 5691736 1627088 5691640 1627032 5691656 +1627088 5691640 1626992 5691384 1627032 5691656 1627000 5691696 +1626984 5691928 1627624 5691896 1627088 5691640 1626976 5691736 +1627088 5691640 1627624 5691896 1627168 5691336 1626992 5691384 +1627624 5691896 1627168 5691336 1627088 5691640 1626984 5691928 +1627168 5691336 1627248 5691688 1627624 5691896 1627304 5691224 +1627088 5691640 1627248 5691688 1627168 5691336 1626992 5691384 +1627624 5691896 1627248 5691688 1627088 5691640 1626984 5691928 +1627624 5691896 1627248 5691688 1626984 5691928 1627016 5692064 +1627624 5691896 1627248 5691688 1627016 5692064 1627120 5692256 +1627088 5691640 1626976 5691736 1626984 5691928 1627248 5691688 +1627088 5691640 1627000 5691696 1626976 5691736 1627248 5691688 +1627088 5691640 1627032 5691656 1627000 5691696 1627248 5691688 +1626976 5691736 1626984 5691928 1627248 5691688 1627000 5691696 +1627248 5691688 1627168 5691336 1627088 5691640 1627000 5691696 +1627248 5691688 1626976 5691736 1626984 5691928 1627016 5692064 +1627168 5691336 1627088 5691640 1627248 5691688 1627304 5691224 +1627248 5691688 1627016 5692064 1627624 5691896 1627304 5691224 +1627624 5691896 1627368 5691192 1627304 5691224 1627248 5691688 +1627304 5691224 1627168 5691336 1627248 5691688 1627368 5691192 +1627624 5691896 1627368 5691192 1627248 5691688 1627016 5692064 +1627624 5691896 1627944 5692096 1627368 5691192 1627248 5691688 +1626464 5689664 1627776 5690832 1630232 5692312 1630448 5692312 +1626464 5689664 1627352 5691104 1627776 5690832 1630448 5692312 +1627776 5690832 1627352 5691104 1630232 5692312 1630448 5692312 +1626464 5689664 1627776 5690832 1630448 5692312 1626096 5687664 +1630448 5692312 1626096 5687632 1626096 5687664 1627776 5690832 +1630448 5692312 1630608 5692360 1626096 5687632 1627776 5690832 +1626464 5689664 1627352 5691104 1627776 5690832 1626096 5687664 +1626096 5687664 1626464 5689664 1627776 5690832 1626096 5687632 +1627776 5690832 1630232 5692312 1630448 5692312 1626096 5687632 +1627352 5691104 1627776 5690832 1626464 5689664 1627248 5691016 +1627352 5691104 1630232 5692312 1627776 5690832 1627248 5691016 +1627776 5690832 1626096 5687664 1626464 5689664 1627248 5691016 +1626464 5689664 1626464 5689704 1627248 5691016 1627776 5690832 +1626464 5689664 1626464 5689704 1627776 5690832 1626096 5687664 +1626464 5689704 1626976 5690872 1627248 5691016 1627776 5690832 +1626464 5689704 1626976 5690872 1627776 5690832 1626464 5689664 +1627248 5691016 1627352 5691104 1627776 5690832 1626976 5690872 +1626464 5689664 1627776 5690832 1626096 5687664 1626424 5689616 +1626464 5689704 1626824 5690816 1626976 5690872 1627776 5690832 +1630232 5692312 1627776 5690832 1627352 5691104 1630136 5692352 +1627776 5690832 1627248 5691016 1627352 5691104 1630136 5692352 +1630232 5692312 1630448 5692312 1627776 5690832 1630136 5692352 +1627352 5691104 1627944 5692096 1630136 5692352 1627776 5690832 +1627944 5692096 1628120 5692240 1630136 5692352 1627776 5690832 +1627352 5691104 1627944 5692096 1627776 5690832 1627248 5691016 +1627352 5691104 1627368 5691192 1627944 5692096 1627776 5690832 +1627368 5691192 1627624 5691896 1627944 5692096 1627776 5690832 +1627352 5691104 1627368 5691192 1627776 5690832 1627248 5691016 +1627368 5691192 1627248 5691688 1627624 5691896 1627776 5690832 +1627368 5691192 1627624 5691896 1627776 5690832 1627352 5691104 +1627944 5692096 1628120 5692240 1627776 5690832 1627624 5691896 +1628120 5692240 1629944 5692528 1630136 5692352 1627776 5690832 +1630136 5692352 1630232 5692312 1627776 5690832 1628120 5692240 +1626096 5687632 1627824 5690744 1630448 5692312 1630608 5692360 +1627776 5690832 1627824 5690744 1626096 5687632 1626096 5687664 +1627776 5690832 1630448 5692312 1627824 5690744 1626096 5687664 +1627824 5690744 1630448 5692312 1626096 5687632 1626096 5687664 +1627776 5690832 1627824 5690744 1626096 5687664 1626464 5689664 +1627824 5690744 1626096 5687632 1626096 5687664 1626464 5689664 +1627776 5690832 1627824 5690744 1626464 5689664 1626464 5689704 +1627776 5690832 1630448 5692312 1627824 5690744 1626464 5689704 +1627824 5690744 1626096 5687664 1626464 5689664 1626464 5689704 +1627776 5690832 1627824 5690744 1626464 5689704 1626976 5690872 +1627824 5690744 1626464 5689664 1626464 5689704 1626976 5690872 +1627776 5690832 1630448 5692312 1627824 5690744 1626976 5690872 +1627776 5690832 1627824 5690744 1626976 5690872 1627248 5691016 +1627776 5690832 1630448 5692312 1627824 5690744 1627248 5691016 +1627824 5690744 1626464 5689704 1626976 5690872 1627248 5691016 +1630448 5692312 1627824 5690744 1627776 5690832 1630232 5692312 +1627824 5690744 1627248 5691016 1627776 5690832 1630232 5692312 +1627776 5690832 1630136 5692352 1630232 5692312 1627824 5690744 +1627776 5690832 1630136 5692352 1627824 5690744 1627248 5691016 +1630448 5692312 1626096 5687632 1627824 5690744 1630232 5692312 +1630232 5692312 1630448 5692312 1627824 5690744 1630136 5692352 +1627776 5690832 1627824 5690744 1627248 5691016 1627352 5691104 +1626096 5687664 1626424 5689616 1626464 5689664 1627824 5690744 +1626464 5689704 1626824 5690816 1626976 5690872 1627824 5690744 +1627776 5690832 1628120 5692240 1630136 5692352 1627824 5690744 +1627776 5690832 1627944 5692096 1628120 5692240 1627824 5690744 +1627776 5690832 1628120 5692240 1627824 5690744 1627248 5691016 +1630136 5692352 1630232 5692312 1627824 5690744 1628120 5692240 +1628120 5692240 1629944 5692528 1630136 5692352 1627824 5690744 +1626096 5687632 1627856 5690720 1630448 5692312 1630608 5692360 +1626096 5687632 1627856 5690720 1630608 5692360 1626048 5687512 +1627824 5690744 1627856 5690720 1626096 5687632 1626096 5687664 +1627824 5690744 1627856 5690720 1626096 5687664 1626464 5689664 +1627856 5690720 1626096 5687632 1626096 5687664 1626464 5689664 +1627824 5690744 1630448 5692312 1627856 5690720 1626464 5689664 +1630448 5692312 1627856 5690720 1627824 5690744 1630232 5692312 +1627856 5690720 1626464 5689664 1627824 5690744 1630232 5692312 +1626096 5687632 1626096 5687664 1627856 5690720 1630608 5692360 +1627856 5690720 1630232 5692312 1630448 5692312 1630608 5692360 +1627824 5690744 1627856 5690720 1626464 5689664 1626464 5689704 +1627856 5690720 1626096 5687664 1626464 5689664 1626464 5689704 +1627824 5690744 1627856 5690720 1626464 5689704 1626976 5690872 +1627824 5690744 1630232 5692312 1627856 5690720 1626464 5689704 +1627824 5690744 1630136 5692352 1630232 5692312 1627856 5690720 +1627824 5690744 1628120 5692240 1630136 5692352 1627856 5690720 +1627824 5690744 1628120 5692240 1627856 5690720 1626464 5689704 +1630232 5692312 1630448 5692312 1627856 5690720 1630136 5692352 +1630136 5692352 1630232 5692312 1627856 5690720 1628120 5692240 +1626096 5687664 1626424 5689616 1626464 5689664 1627856 5690720 +1628120 5692240 1629944 5692528 1630136 5692352 1627856 5690720 +1627824 5690744 1627776 5690832 1628120 5692240 1627856 5690720 +1627776 5690832 1627944 5692096 1628120 5692240 1627856 5690720 +1628120 5692240 1630136 5692352 1627856 5690720 1627944 5692096 +1627824 5690744 1627776 5690832 1627856 5690720 1626464 5689704 +1627776 5690832 1627624 5691896 1627944 5692096 1627856 5690720 +1627776 5690832 1627944 5692096 1627856 5690720 1627824 5690744 +1626096 5687632 1627944 5690696 1630608 5692360 1626048 5687512 +1630608 5692360 1627944 5690696 1627856 5690720 1630448 5692312 +1627856 5690720 1627944 5690696 1626096 5687632 1626096 5687664 +1627856 5690720 1627944 5690696 1626096 5687664 1626464 5689664 +1627856 5690720 1627944 5690696 1626464 5689664 1626464 5689704 +1627944 5690696 1626096 5687632 1626096 5687664 1626464 5689664 +1627944 5690696 1626464 5689664 1627856 5690720 1630448 5692312 +1627856 5690720 1630232 5692312 1630448 5692312 1627944 5690696 +1630448 5692312 1630608 5692360 1627944 5690696 1630232 5692312 +1627856 5690720 1630136 5692352 1630232 5692312 1627944 5690696 +1627856 5690720 1630136 5692352 1627944 5690696 1626464 5689664 +1630232 5692312 1630448 5692312 1627944 5690696 1630136 5692352 +1627944 5690696 1630608 5692360 1626096 5687632 1626096 5687664 +1630608 5692360 1626096 5687632 1627944 5690696 1630448 5692312 +1627856 5690720 1628120 5692240 1630136 5692352 1627944 5690696 +1627856 5690720 1627944 5692096 1628120 5692240 1627944 5690696 +1627856 5690720 1627776 5690832 1627944 5692096 1627944 5690696 +1627944 5692096 1628120 5692240 1627944 5690696 1627776 5690832 +1630136 5692352 1630232 5692312 1627944 5690696 1628120 5692240 +1627856 5690720 1627776 5690832 1627944 5690696 1626464 5689664 +1628120 5692240 1630136 5692352 1627944 5690696 1627944 5692096 +1626096 5687664 1626424 5689616 1626464 5689664 1627944 5690696 +1627776 5690832 1627624 5691896 1627944 5692096 1627944 5690696 +1628120 5692240 1629944 5692528 1630136 5692352 1627944 5690696 +1627856 5690720 1627824 5690744 1627776 5690832 1627944 5690696 +1626096 5687632 1628024 5690712 1630608 5692360 1626048 5687512 +1627944 5690696 1628024 5690712 1626096 5687632 1626096 5687664 +1627944 5690696 1628024 5690712 1626096 5687664 1626464 5689664 +1627944 5690696 1628024 5690712 1626464 5689664 1627856 5690720 +1628024 5690712 1626096 5687632 1626096 5687664 1626464 5689664 +1627944 5690696 1630608 5692360 1628024 5690712 1626464 5689664 +1630608 5692360 1628024 5690712 1627944 5690696 1630448 5692312 +1627944 5690696 1630232 5692312 1630448 5692312 1628024 5690712 +1627944 5690696 1630136 5692352 1630232 5692312 1628024 5690712 +1630232 5692312 1630448 5692312 1628024 5690712 1630136 5692352 +1627944 5690696 1628120 5692240 1630136 5692352 1628024 5690712 +1630136 5692352 1630232 5692312 1628024 5690712 1628120 5692240 +1628024 5690712 1626464 5689664 1627944 5690696 1628120 5692240 +1630448 5692312 1630608 5692360 1628024 5690712 1630232 5692312 +1628024 5690712 1630608 5692360 1626096 5687632 1626096 5687664 +1630608 5692360 1626096 5687632 1628024 5690712 1630448 5692312 +1627944 5690696 1627944 5692096 1628120 5692240 1628024 5690712 +1627944 5690696 1627776 5690832 1627944 5692096 1628024 5690712 +1627944 5690696 1627856 5690720 1627776 5690832 1628024 5690712 +1628120 5692240 1630136 5692352 1628024 5690712 1627944 5692096 +1627944 5690696 1627776 5690832 1628024 5690712 1626464 5689664 +1627944 5692096 1628120 5692240 1628024 5690712 1627776 5690832 +1626096 5687664 1626424 5689616 1626464 5689664 1628024 5690712 +1627776 5690832 1627624 5691896 1627944 5692096 1628024 5690712 +1628120 5692240 1629944 5692528 1630136 5692352 1628024 5690712 +1626096 5687632 1628112 5690744 1630608 5692360 1626048 5687512 +1628024 5690712 1628112 5690744 1626096 5687632 1626096 5687664 +1628024 5690712 1628112 5690744 1626096 5687664 1626464 5689664 +1628024 5690712 1630608 5692360 1628112 5690744 1626096 5687664 +1630608 5692360 1628112 5690744 1628024 5690712 1630448 5692312 +1628024 5690712 1630232 5692312 1630448 5692312 1628112 5690744 +1628024 5690712 1630136 5692352 1630232 5692312 1628112 5690744 +1628024 5690712 1628120 5692240 1630136 5692352 1628112 5690744 +1630136 5692352 1630232 5692312 1628112 5690744 1628120 5692240 +1628024 5690712 1627944 5692096 1628120 5692240 1628112 5690744 +1628120 5692240 1630136 5692352 1628112 5690744 1627944 5692096 +1630232 5692312 1630448 5692312 1628112 5690744 1630136 5692352 +1628112 5690744 1626096 5687664 1628024 5690712 1627944 5692096 +1630448 5692312 1630608 5692360 1628112 5690744 1630232 5692312 +1628112 5690744 1630608 5692360 1626096 5687632 1626096 5687664 +1630608 5692360 1626096 5687632 1628112 5690744 1630448 5692312 +1628024 5690712 1627776 5690832 1627944 5692096 1628112 5690744 +1628024 5690712 1627944 5690696 1627776 5690832 1628112 5690744 +1627944 5692096 1628120 5692240 1628112 5690744 1627776 5690832 +1628024 5690712 1627776 5690832 1628112 5690744 1626096 5687664 +1627776 5690832 1627624 5691896 1627944 5692096 1628112 5690744 +1627776 5690832 1627368 5691192 1627624 5691896 1628112 5690744 +1627944 5692096 1628120 5692240 1628112 5690744 1627624 5691896 +1627776 5690832 1627624 5691896 1628112 5690744 1628024 5690712 +1628120 5692240 1629944 5692528 1630136 5692352 1628112 5690744 +1628112 5690744 1628144 5690776 1630136 5692352 1630232 5692312 +1628120 5692240 1628144 5690776 1628112 5690744 1627944 5692096 +1628112 5690744 1627624 5691896 1627944 5692096 1628144 5690776 +1627944 5692096 1628120 5692240 1628144 5690776 1627624 5691896 +1628112 5690744 1628144 5690776 1630232 5692312 1630448 5692312 +1628144 5690776 1630136 5692352 1630232 5692312 1630448 5692312 +1628112 5690744 1628144 5690776 1630448 5692312 1630608 5692360 +1628144 5690776 1630232 5692312 1630448 5692312 1630608 5692360 +1628112 5690744 1627624 5691896 1628144 5690776 1630608 5692360 +1628112 5690744 1628144 5690776 1630608 5692360 1626096 5687632 +1628144 5690776 1628120 5692240 1630136 5692352 1630232 5692312 +1628120 5692240 1630136 5692352 1628144 5690776 1627944 5692096 +1628112 5690744 1627776 5690832 1627624 5691896 1628144 5690776 +1627776 5690832 1627368 5691192 1627624 5691896 1628144 5690776 +1627624 5691896 1627944 5692096 1628144 5690776 1627776 5690832 +1628112 5690744 1627776 5690832 1628144 5690776 1630608 5692360 +1628112 5690744 1628024 5690712 1627776 5690832 1628144 5690776 +1628024 5690712 1627944 5690696 1627776 5690832 1628144 5690776 +1628112 5690744 1628024 5690712 1628144 5690776 1630608 5692360 +1627776 5690832 1627624 5691896 1628144 5690776 1628024 5690712 +1630136 5692352 1628144 5690776 1628120 5692240 1629944 5692528 +1628120 5692240 1629840 5692680 1629944 5692528 1628144 5690776 +1630136 5692352 1630232 5692312 1628144 5690776 1629944 5692528 +1628144 5690776 1627944 5692096 1628120 5692240 1629944 5692528 +1629944 5692528 1628144 5690824 1628120 5692240 1629840 5692680 +1628120 5692240 1628144 5690824 1628144 5690776 1627944 5692096 +1628144 5690776 1627624 5691896 1627944 5692096 1628144 5690824 +1628144 5690776 1627776 5690832 1627624 5691896 1628144 5690824 +1627776 5690832 1627368 5691192 1627624 5691896 1628144 5690824 +1627624 5691896 1627944 5692096 1628144 5690824 1627776 5690832 +1628144 5690824 1629944 5692528 1628144 5690776 1627776 5690832 +1627944 5692096 1628120 5692240 1628144 5690824 1627624 5691896 +1628120 5692240 1629944 5692528 1628144 5690824 1627944 5692096 +1628144 5690776 1628024 5690712 1627776 5690832 1628144 5690824 +1628024 5690712 1627944 5690696 1627776 5690832 1628144 5690824 +1627776 5690832 1627624 5691896 1628144 5690824 1628024 5690712 +1628144 5690776 1628024 5690712 1628144 5690824 1629944 5692528 +1628144 5690776 1628112 5690744 1628024 5690712 1628144 5690824 +1628144 5690776 1628112 5690744 1628144 5690824 1629944 5692528 +1628024 5690712 1627776 5690832 1628144 5690824 1628112 5690744 +1628144 5690776 1628144 5690824 1629944 5692528 1630136 5692352 +1628144 5690776 1628144 5690824 1630136 5692352 1630232 5692312 +1628144 5690776 1628144 5690824 1630232 5692312 1630448 5692312 +1628144 5690776 1628112 5690744 1628144 5690824 1630232 5692312 +1628144 5690824 1628120 5692240 1629944 5692528 1630136 5692352 +1628144 5690824 1629944 5692528 1630136 5692352 1630232 5692312 +1627624 5691896 1628112 5690864 1627776 5690832 1627368 5691192 +1627776 5690832 1628112 5690864 1628144 5690824 1628024 5690712 +1627776 5690832 1628112 5690864 1628024 5690712 1627944 5690696 +1627776 5690832 1628112 5690864 1627944 5690696 1627856 5690720 +1628112 5690864 1628024 5690712 1627944 5690696 1627856 5690720 +1628112 5690864 1628144 5690824 1628024 5690712 1627944 5690696 +1628144 5690824 1628112 5690864 1627624 5691896 1627944 5692096 +1628144 5690824 1628112 5690864 1627944 5692096 1628120 5692240 +1628112 5690864 1627624 5691896 1627944 5692096 1628120 5692240 +1628112 5690864 1628120 5692240 1628144 5690824 1628024 5690712 +1628144 5690824 1628112 5690864 1628120 5692240 1629944 5692528 +1627624 5691896 1627944 5692096 1628112 5690864 1627368 5691192 +1628112 5690864 1627856 5690720 1627776 5690832 1627368 5691192 +1627624 5691896 1628112 5690864 1627368 5691192 1627248 5691688 +1627776 5690832 1627352 5691104 1627368 5691192 1628112 5690864 +1628144 5690824 1628112 5690744 1628024 5690712 1628112 5690864 +1628024 5690712 1627944 5690696 1628112 5690864 1628112 5690744 +1628144 5690824 1628112 5690744 1628112 5690864 1628120 5692240 +1628144 5690824 1628144 5690776 1628112 5690744 1628112 5690864 +1627776 5690832 1628112 5690864 1627856 5690720 1627824 5690744 +1627368 5691192 1628064 5690904 1628112 5690864 1627776 5690832 +1628112 5690864 1628064 5690904 1627624 5691896 1627944 5692096 +1628112 5690864 1628064 5690904 1627944 5692096 1628120 5692240 +1628112 5690864 1628064 5690904 1628120 5692240 1628144 5690824 +1628064 5690904 1627624 5691896 1627944 5692096 1628120 5692240 +1628064 5690904 1628120 5692240 1628112 5690864 1627776 5690832 +1628112 5690864 1627856 5690720 1627776 5690832 1628064 5690904 +1627776 5690832 1627368 5691192 1628064 5690904 1627856 5690720 +1628112 5690864 1627944 5690696 1627856 5690720 1628064 5690904 +1628112 5690864 1628024 5690712 1627944 5690696 1628064 5690904 +1627944 5690696 1627856 5690720 1628064 5690904 1628024 5690712 +1628112 5690864 1628112 5690744 1628024 5690712 1628064 5690904 +1628112 5690864 1628024 5690712 1628064 5690904 1628120 5692240 +1627624 5691896 1628064 5690904 1627368 5691192 1627248 5691688 +1627368 5691192 1628064 5690904 1627776 5690832 1627352 5691104 +1627856 5690720 1627824 5690744 1627776 5690832 1628064 5690904 +1627776 5690832 1627368 5691192 1628064 5690904 1627824 5690744 +1628064 5690904 1627368 5691192 1627624 5691896 1627944 5692096 +1627856 5690720 1627824 5690744 1628064 5690904 1627944 5690696 +1627368 5691192 1627624 5691896 1628064 5690904 1627776 5690832 +1627624 5691896 1627984 5690944 1627368 5691192 1627248 5691688 +1628064 5690904 1627984 5690944 1627624 5691896 1627944 5692096 +1628064 5690904 1627984 5690944 1627944 5692096 1628120 5692240 +1627368 5691192 1627984 5690944 1628064 5690904 1627776 5690832 +1628064 5690904 1627824 5690744 1627776 5690832 1627984 5690944 +1627368 5691192 1627984 5690944 1627776 5690832 1627352 5691104 +1628064 5690904 1627856 5690720 1627824 5690744 1627984 5690944 +1627824 5690744 1627776 5690832 1627984 5690944 1627856 5690720 +1628064 5690904 1627944 5690696 1627856 5690720 1627984 5690944 +1628064 5690904 1628024 5690712 1627944 5690696 1627984 5690944 +1628064 5690904 1628112 5690864 1628024 5690712 1627984 5690944 +1627856 5690720 1627824 5690744 1627984 5690944 1627944 5690696 +1627944 5690696 1627856 5690720 1627984 5690944 1628024 5690712 +1627776 5690832 1627368 5691192 1627984 5690944 1627824 5690744 +1628064 5690904 1628024 5690712 1627984 5690944 1627944 5692096 +1627984 5690944 1627368 5691192 1627624 5691896 1627944 5692096 +1627368 5691192 1627624 5691896 1627984 5690944 1627776 5690832 +1627368 5691192 1627936 5690952 1627776 5690832 1627352 5691104 +1627776 5690832 1627936 5690952 1627984 5690944 1627824 5690744 +1627984 5690944 1627856 5690720 1627824 5690744 1627936 5690952 +1627984 5690944 1627944 5690696 1627856 5690720 1627936 5690952 +1627856 5690720 1627824 5690744 1627936 5690952 1627944 5690696 +1627984 5690944 1628024 5690712 1627944 5690696 1627936 5690952 +1627824 5690744 1627776 5690832 1627936 5690952 1627856 5690720 +1627936 5690952 1627368 5691192 1627984 5690944 1627944 5690696 +1627984 5690944 1627936 5690952 1627368 5691192 1627624 5691896 +1627368 5691192 1627248 5691688 1627624 5691896 1627936 5690952 +1627984 5690944 1627936 5690952 1627624 5691896 1627944 5692096 +1627984 5690944 1627944 5690696 1627936 5690952 1627624 5691896 +1627936 5690952 1627776 5690832 1627368 5691192 1627624 5691896 +1627776 5690832 1627368 5691192 1627936 5690952 1627824 5690744 +1627368 5691192 1627848 5690968 1627776 5690832 1627352 5691104 +1627776 5690832 1627248 5691016 1627352 5691104 1627848 5690968 +1627936 5690952 1627848 5690968 1627368 5691192 1627624 5691896 +1627368 5691192 1627248 5691688 1627624 5691896 1627848 5690968 +1627936 5690952 1627848 5690968 1627624 5691896 1627984 5690944 +1627936 5690952 1627776 5690832 1627848 5690968 1627624 5691896 +1627776 5690832 1627848 5690968 1627936 5690952 1627824 5690744 +1627368 5691192 1627624 5691896 1627848 5690968 1627352 5691104 +1627848 5690968 1627936 5690952 1627776 5690832 1627352 5691104 +1627352 5691104 1627816 5690968 1627776 5690832 1627248 5691016 +1627848 5690968 1627816 5690968 1627352 5691104 1627368 5691192 +1627848 5690968 1627816 5690968 1627368 5691192 1627624 5691896 +1627368 5691192 1627248 5691688 1627624 5691896 1627816 5690968 +1627816 5690968 1627352 5691104 1627368 5691192 1627624 5691896 +1627848 5690968 1627816 5690968 1627624 5691896 1627936 5690952 +1627848 5690968 1627776 5690832 1627816 5690968 1627624 5691896 +1627776 5690832 1627816 5690968 1627848 5690968 1627936 5690952 +1627816 5690968 1627776 5690832 1627352 5691104 1627368 5691192 +1627352 5691104 1627768 5690912 1627776 5690832 1627248 5691016 +1627816 5690968 1627768 5690912 1627352 5691104 1627368 5691192 +1627776 5690832 1627768 5690912 1627816 5690968 1627848 5690968 +1627776 5690832 1627768 5690912 1627848 5690968 1627936 5690952 +1627768 5690912 1627352 5691104 1627816 5690968 1627848 5690968 +1627776 5690832 1627352 5691104 1627768 5690912 1627848 5690968 +1629944 5692528 1628376 5691024 1628144 5690824 1628120 5692240 +1629944 5692528 1628376 5691024 1628120 5692240 1629840 5692680 +1628144 5690824 1628112 5690864 1628120 5692240 1628376 5691024 +1628112 5690864 1628064 5690904 1628120 5692240 1628376 5691024 +1628064 5690904 1627944 5692096 1628120 5692240 1628376 5691024 +1628064 5690904 1627944 5692096 1628376 5691024 1628112 5690864 +1628120 5692240 1629944 5692528 1628376 5691024 1627944 5692096 +1628112 5690864 1628064 5690904 1628376 5691024 1628144 5690824 +1628064 5690904 1627984 5690944 1627944 5692096 1628376 5691024 +1627944 5692096 1628120 5692240 1628376 5691024 1627984 5690944 +1628064 5690904 1627984 5690944 1628376 5691024 1628112 5690864 +1628144 5690824 1628376 5691024 1630136 5692352 1630232 5692312 +1628144 5690824 1628376 5691024 1630232 5692312 1628144 5690776 +1630232 5692312 1630448 5692312 1628144 5690776 1628376 5691024 +1630448 5692312 1630608 5692360 1628144 5690776 1628376 5691024 +1630448 5692312 1630608 5692360 1628376 5691024 1630232 5692312 +1630608 5692360 1628112 5690744 1628144 5690776 1628376 5691024 +1628144 5690776 1628144 5690824 1628376 5691024 1630608 5692360 +1628376 5691024 1630136 5692352 1630232 5692312 1630448 5692312 +1627984 5690944 1627624 5691896 1627944 5692096 1628376 5691024 +1627944 5692096 1628120 5692240 1628376 5691024 1627624 5691896 +1627984 5690944 1627624 5691896 1628376 5691024 1628064 5690904 +1627984 5690944 1627936 5690952 1627624 5691896 1628376 5691024 +1628376 5691024 1629944 5692528 1630136 5692352 1630232 5692312 +1629944 5692528 1630136 5692352 1628376 5691024 1628120 5692240 +1628376 5691024 1628144 5690776 1628144 5690824 1628112 5690864 +1630608 5692360 1628416 5691000 1628376 5691024 1630448 5692312 +1628376 5691024 1630232 5692312 1630448 5692312 1628416 5691000 +1630448 5692312 1630608 5692360 1628416 5691000 1630232 5692312 +1628144 5690776 1628416 5691000 1630608 5692360 1628112 5690744 +1630608 5692360 1626096 5687632 1628112 5690744 1628416 5691000 +1630608 5692360 1626048 5687512 1626096 5687632 1628416 5691000 +1628112 5690744 1628144 5690776 1628416 5691000 1626096 5687632 +1626096 5687632 1626096 5687664 1628112 5690744 1628416 5691000 +1628376 5691024 1628416 5691000 1628144 5690776 1628144 5690824 +1628376 5691024 1630136 5692352 1630232 5692312 1628416 5691000 +1630232 5692312 1630448 5692312 1628416 5691000 1630136 5692352 +1628376 5691024 1629944 5692528 1630136 5692352 1628416 5691000 +1630136 5692352 1630232 5692312 1628416 5691000 1629944 5692528 +1628376 5691024 1628120 5692240 1629944 5692528 1628416 5691000 +1628120 5692240 1629840 5692680 1629944 5692528 1628416 5691000 +1628376 5691024 1627944 5692096 1628120 5692240 1628416 5691000 +1629944 5692528 1630136 5692352 1628416 5691000 1628120 5692240 +1628416 5691000 1628144 5690824 1628376 5691024 1628120 5692240 +1628376 5691024 1628416 5691000 1628144 5690824 1628112 5690864 +1628144 5690776 1628144 5690824 1628416 5691000 1628112 5690744 +1630608 5692360 1626096 5687632 1628416 5691000 1630448 5692312 +1626096 5687632 1628496 5690968 1630608 5692360 1626048 5687512 +1628416 5691000 1628496 5690968 1626096 5687632 1628112 5690744 +1628416 5691000 1628496 5690968 1628112 5690744 1628144 5690776 +1626096 5687632 1626096 5687664 1628112 5690744 1628496 5690968 +1628496 5690968 1626096 5687632 1628112 5690744 1628144 5690776 +1626096 5687632 1628496 5690968 1626048 5687512 1626064 5687560 +1630608 5692360 1626016 5687448 1626048 5687512 1628496 5690968 +1628416 5691000 1628496 5690968 1628144 5690776 1628144 5690824 +1628416 5691000 1630608 5692360 1628496 5690968 1628144 5690776 +1630608 5692360 1628496 5690968 1628416 5691000 1630448 5692312 +1628416 5691000 1630232 5692312 1630448 5692312 1628496 5690968 +1628416 5691000 1630136 5692352 1630232 5692312 1628496 5690968 +1630232 5692312 1630448 5692312 1628496 5690968 1630136 5692352 +1628416 5691000 1629944 5692528 1630136 5692352 1628496 5690968 +1630136 5692352 1630232 5692312 1628496 5690968 1629944 5692528 +1628416 5691000 1628120 5692240 1629944 5692528 1628496 5690968 +1628120 5692240 1629840 5692680 1629944 5692528 1628496 5690968 +1629944 5692528 1630136 5692352 1628496 5690968 1628120 5692240 +1628416 5691000 1628376 5691024 1628120 5692240 1628496 5690968 +1628376 5691024 1627944 5692096 1628120 5692240 1628496 5690968 +1628120 5692240 1629944 5692528 1628496 5690968 1628376 5691024 +1628496 5690968 1628144 5690776 1628416 5691000 1628376 5691024 +1630448 5692312 1630608 5692360 1628496 5690968 1630232 5692312 +1626096 5687632 1628112 5690744 1628496 5690968 1626048 5687512 +1628496 5690968 1630448 5692312 1630608 5692360 1626048 5687512 +1628496 5690968 1628544 5690968 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1628544 5690968 +1626048 5687512 1628544 5690968 1630608 5692360 1626016 5687448 +1628496 5690968 1628544 5690968 1626096 5687632 1628112 5690744 +1628544 5690968 1626048 5687512 1626096 5687632 1628112 5690744 +1626096 5687632 1626096 5687664 1628112 5690744 1628544 5690968 +1628496 5690968 1628544 5690968 1628112 5690744 1628144 5690776 +1628496 5690968 1628544 5690968 1628144 5690776 1628416 5691000 +1628544 5690968 1626096 5687632 1628112 5690744 1628144 5690776 +1628496 5690968 1630608 5692360 1628544 5690968 1628144 5690776 +1630608 5692360 1628544 5690968 1628496 5690968 1630448 5692312 +1628496 5690968 1630232 5692312 1630448 5692312 1628544 5690968 +1628496 5690968 1630136 5692352 1630232 5692312 1628544 5690968 +1628496 5690968 1629944 5692528 1630136 5692352 1628544 5690968 +1630136 5692352 1630232 5692312 1628544 5690968 1629944 5692528 +1628496 5690968 1628120 5692240 1629944 5692528 1628544 5690968 +1629944 5692528 1630136 5692352 1628544 5690968 1628120 5692240 +1628120 5692240 1629840 5692680 1629944 5692528 1628544 5690968 +1628496 5690968 1628376 5691024 1628120 5692240 1628544 5690968 +1628376 5691024 1627944 5692096 1628120 5692240 1628544 5690968 +1628120 5692240 1629944 5692528 1628544 5690968 1628376 5691024 +1628496 5690968 1628416 5691000 1628376 5691024 1628544 5690968 +1628376 5691024 1628120 5692240 1628544 5690968 1628416 5691000 +1630232 5692312 1630448 5692312 1628544 5690968 1630136 5692352 +1628544 5690968 1628144 5690776 1628496 5690968 1628416 5691000 +1630448 5692312 1630608 5692360 1628544 5690968 1630232 5692312 +1628544 5690968 1630608 5692360 1626048 5687512 1626096 5687632 +1630608 5692360 1626048 5687512 1628544 5690968 1630448 5692312 +1626048 5687512 1628640 5690984 1630608 5692360 1626016 5687448 +1628544 5690968 1628640 5690984 1626048 5687512 1626096 5687632 +1628544 5690968 1628640 5690984 1626096 5687632 1628112 5690744 +1626096 5687632 1626096 5687664 1628112 5690744 1628640 5690984 +1626048 5687512 1626064 5687560 1626096 5687632 1628640 5690984 +1628544 5690968 1628640 5690984 1628112 5690744 1628144 5690776 +1628640 5690984 1626048 5687512 1626096 5687632 1628112 5690744 +1628544 5690968 1630608 5692360 1628640 5690984 1628112 5690744 +1630608 5692360 1628640 5690984 1628544 5690968 1630448 5692312 +1628544 5690968 1630232 5692312 1630448 5692312 1628640 5690984 +1628544 5690968 1630136 5692352 1630232 5692312 1628640 5690984 +1628544 5690968 1629944 5692528 1630136 5692352 1628640 5690984 +1628544 5690968 1628120 5692240 1629944 5692528 1628640 5690984 +1628120 5692240 1629840 5692680 1629944 5692528 1628640 5690984 +1629944 5692528 1630136 5692352 1628640 5690984 1628120 5692240 +1628544 5690968 1628376 5691024 1628120 5692240 1628640 5690984 +1628120 5692240 1629944 5692528 1628640 5690984 1628376 5691024 +1628376 5691024 1627944 5692096 1628120 5692240 1628640 5690984 +1628544 5690968 1628416 5691000 1628376 5691024 1628640 5690984 +1628376 5691024 1628120 5692240 1628640 5690984 1628416 5691000 +1628544 5690968 1628496 5690968 1628416 5691000 1628640 5690984 +1630136 5692352 1630232 5692312 1628640 5690984 1629944 5692528 +1630232 5692312 1630448 5692312 1628640 5690984 1630136 5692352 +1628640 5690984 1628112 5690744 1628544 5690968 1628416 5691000 +1630448 5692312 1630608 5692360 1628640 5690984 1630232 5692312 +1628640 5690984 1630608 5692360 1626048 5687512 1626096 5687632 +1630608 5692360 1626048 5687512 1628640 5690984 1630448 5692312 +1626048 5687512 1628728 5691008 1630608 5692360 1626016 5687448 +1628640 5690984 1628728 5691008 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1628728 5691008 +1628640 5690984 1628728 5691008 1626096 5687632 1628112 5690744 +1628640 5690984 1628728 5691008 1628112 5690744 1628544 5690968 +1626096 5687632 1626096 5687664 1628112 5690744 1628728 5691008 +1628728 5691008 1626048 5687512 1626096 5687632 1628112 5690744 +1628640 5690984 1630608 5692360 1628728 5691008 1628112 5690744 +1630608 5692360 1628728 5691008 1628640 5690984 1630448 5692312 +1628640 5690984 1630232 5692312 1630448 5692312 1628728 5691008 +1628640 5690984 1630136 5692352 1630232 5692312 1628728 5691008 +1628640 5690984 1629944 5692528 1630136 5692352 1628728 5691008 +1628640 5690984 1628120 5692240 1629944 5692528 1628728 5691008 +1628640 5690984 1628376 5691024 1628120 5692240 1628728 5691008 +1628120 5692240 1629840 5692680 1629944 5692528 1628728 5691008 +1628120 5692240 1629944 5692528 1628728 5691008 1628376 5691024 +1628376 5691024 1627944 5692096 1628120 5692240 1628728 5691008 +1628640 5690984 1628416 5691000 1628376 5691024 1628728 5691008 +1629944 5692528 1630136 5692352 1628728 5691008 1628120 5692240 +1630136 5692352 1630232 5692312 1628728 5691008 1629944 5692528 +1630232 5692312 1630448 5692312 1628728 5691008 1630136 5692352 +1628728 5691008 1628112 5690744 1628640 5690984 1628376 5691024 +1630448 5692312 1630608 5692360 1628728 5691008 1630232 5692312 +1628728 5691008 1630608 5692360 1626048 5687512 1626096 5687632 +1630608 5692360 1626048 5687512 1628728 5691008 1630448 5692312 +1626048 5687512 1628816 5691040 1630608 5692360 1626016 5687448 +1630608 5692360 1663880 5646248 1626016 5687448 1628816 5691040 +1628728 5691008 1628816 5691040 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1628816 5691040 +1628728 5691008 1628816 5691040 1626096 5687632 1628112 5690744 +1628728 5691008 1630608 5692360 1628816 5691040 1626096 5687632 +1630608 5692360 1628816 5691040 1628728 5691008 1630448 5692312 +1628728 5691008 1630232 5692312 1630448 5692312 1628816 5691040 +1628728 5691008 1630136 5692352 1630232 5692312 1628816 5691040 +1628728 5691008 1629944 5692528 1630136 5692352 1628816 5691040 +1628728 5691008 1628120 5692240 1629944 5692528 1628816 5691040 +1628120 5692240 1629840 5692680 1629944 5692528 1628816 5691040 +1628728 5691008 1628376 5691024 1628120 5692240 1628816 5691040 +1628728 5691008 1628640 5690984 1628376 5691024 1628816 5691040 +1628376 5691024 1627944 5692096 1628120 5692240 1628816 5691040 +1628120 5692240 1629944 5692528 1628816 5691040 1628376 5691024 +1629944 5692528 1630136 5692352 1628816 5691040 1628120 5692240 +1630136 5692352 1630232 5692312 1628816 5691040 1629944 5692528 +1630232 5692312 1630448 5692312 1628816 5691040 1630136 5692352 +1628816 5691040 1626096 5687632 1628728 5691008 1628376 5691024 +1630448 5692312 1630608 5692360 1628816 5691040 1630232 5692312 +1626048 5687512 1626096 5687632 1628816 5691040 1626016 5687448 +1628816 5691040 1630448 5692312 1630608 5692360 1626016 5687448 +1628816 5691040 1628880 5691048 1626016 5687448 1626048 5687512 +1626016 5687448 1628880 5691048 1630608 5692360 1663880 5646248 +1628816 5691040 1628880 5691048 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1628880 5691048 +1628880 5691048 1626016 5687448 1626048 5687512 1626096 5687632 +1628816 5691040 1628880 5691048 1626096 5687632 1628728 5691008 +1626096 5687632 1628112 5690744 1628728 5691008 1628880 5691048 +1626096 5687632 1626096 5687664 1628112 5690744 1628880 5691048 +1628112 5690744 1628640 5690984 1628728 5691008 1628880 5691048 +1628728 5691008 1628816 5691040 1628880 5691048 1628112 5690744 +1628880 5691048 1626048 5687512 1626096 5687632 1628112 5690744 +1628816 5691040 1630608 5692360 1628880 5691048 1628728 5691008 +1630608 5692360 1628880 5691048 1628816 5691040 1630448 5692312 +1628816 5691040 1630232 5692312 1630448 5692312 1628880 5691048 +1628816 5691040 1630136 5692352 1630232 5692312 1628880 5691048 +1628816 5691040 1629944 5692528 1630136 5692352 1628880 5691048 +1628816 5691040 1628120 5692240 1629944 5692528 1628880 5691048 +1628120 5692240 1629840 5692680 1629944 5692528 1628880 5691048 +1628816 5691040 1628376 5691024 1628120 5692240 1628880 5691048 +1629944 5692528 1630136 5692352 1628880 5691048 1628120 5692240 +1630136 5692352 1630232 5692312 1628880 5691048 1629944 5692528 +1630232 5692312 1630448 5692312 1628880 5691048 1630136 5692352 +1628880 5691048 1628728 5691008 1628816 5691040 1628120 5692240 +1630448 5692312 1630608 5692360 1628880 5691048 1630232 5692312 +1628880 5691048 1630608 5692360 1626016 5687448 1626048 5687512 +1630608 5692360 1626016 5687448 1628880 5691048 1630448 5692312 +1626016 5687448 1628976 5691056 1630608 5692360 1663880 5646248 +1628880 5691048 1628976 5691056 1626016 5687448 1626048 5687512 +1628880 5691048 1628976 5691056 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1628976 5691056 +1628880 5691048 1628976 5691056 1626096 5687632 1628112 5690744 +1626096 5687632 1626096 5687664 1628112 5690744 1628976 5691056 +1628976 5691056 1626048 5687512 1626096 5687632 1628112 5690744 +1628880 5691048 1628976 5691056 1628112 5690744 1628728 5691008 +1628112 5690744 1628640 5690984 1628728 5691008 1628976 5691056 +1628880 5691048 1628976 5691056 1628728 5691008 1628816 5691040 +1628976 5691056 1626096 5687632 1628112 5690744 1628728 5691008 +1628976 5691056 1626016 5687448 1626048 5687512 1626096 5687632 +1628880 5691048 1630608 5692360 1628976 5691056 1628728 5691008 +1630608 5692360 1628976 5691056 1628880 5691048 1630448 5692312 +1628880 5691048 1630232 5692312 1630448 5692312 1628976 5691056 +1628880 5691048 1630136 5692352 1630232 5692312 1628976 5691056 +1628880 5691048 1629944 5692528 1630136 5692352 1628976 5691056 +1628880 5691048 1628120 5692240 1629944 5692528 1628976 5691056 +1628120 5692240 1629840 5692680 1629944 5692528 1628976 5691056 +1628880 5691048 1628816 5691040 1628120 5692240 1628976 5691056 +1629944 5692528 1630136 5692352 1628976 5691056 1628120 5692240 +1630136 5692352 1630232 5692312 1628976 5691056 1629944 5692528 +1630232 5692312 1630448 5692312 1628976 5691056 1630136 5692352 +1628976 5691056 1628728 5691008 1628880 5691048 1628120 5692240 +1630448 5692312 1630608 5692360 1628976 5691056 1630232 5692312 +1628976 5691056 1630608 5692360 1626016 5687448 1626048 5687512 +1630608 5692360 1626016 5687448 1628976 5691056 1630448 5692312 +1626016 5687448 1629064 5691080 1630608 5692360 1663880 5646248 +1628976 5691056 1629064 5691080 1626016 5687448 1626048 5687512 +1628976 5691056 1629064 5691080 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1629064 5691080 +1628976 5691056 1629064 5691080 1626096 5687632 1628112 5690744 +1629064 5691080 1626016 5687448 1626048 5687512 1626096 5687632 +1628976 5691056 1630608 5692360 1629064 5691080 1626096 5687632 +1630608 5692360 1629064 5691080 1628976 5691056 1630448 5692312 +1628976 5691056 1630232 5692312 1630448 5692312 1629064 5691080 +1628976 5691056 1630136 5692352 1630232 5692312 1629064 5691080 +1628976 5691056 1629944 5692528 1630136 5692352 1629064 5691080 +1628976 5691056 1628120 5692240 1629944 5692528 1629064 5691080 +1628120 5692240 1629840 5692680 1629944 5692528 1629064 5691080 +1628120 5692240 1628128 5692296 1629840 5692680 1629064 5691080 +1628976 5691056 1628880 5691048 1628120 5692240 1629064 5691080 +1628880 5691048 1628816 5691040 1628120 5692240 1629064 5691080 +1628120 5692240 1629840 5692680 1629064 5691080 1628880 5691048 +1629944 5692528 1630136 5692352 1629064 5691080 1629840 5692680 +1630136 5692352 1630232 5692312 1629064 5691080 1629944 5692528 +1630232 5692312 1630448 5692312 1629064 5691080 1630136 5692352 +1629064 5691080 1626096 5687632 1628976 5691056 1628880 5691048 +1630448 5692312 1630608 5692360 1629064 5691080 1630232 5692312 +1629064 5691080 1630608 5692360 1626016 5687448 1626048 5687512 +1630608 5692360 1626016 5687448 1629064 5691080 1630448 5692312 +1626016 5687448 1629152 5691112 1630608 5692360 1663880 5646248 +1629064 5691080 1629152 5691112 1626016 5687448 1626048 5687512 +1629064 5691080 1629152 5691112 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1629152 5691112 +1629064 5691080 1629152 5691112 1626096 5687632 1628976 5691056 +1629152 5691112 1626016 5687448 1626048 5687512 1626096 5687632 +1629064 5691080 1630608 5692360 1629152 5691112 1626096 5687632 +1630608 5692360 1629152 5691112 1629064 5691080 1630448 5692312 +1629064 5691080 1630232 5692312 1630448 5692312 1629152 5691112 +1629064 5691080 1630136 5692352 1630232 5692312 1629152 5691112 +1629064 5691080 1629944 5692528 1630136 5692352 1629152 5691112 +1629064 5691080 1629840 5692680 1629944 5692528 1629152 5691112 +1629064 5691080 1628120 5692240 1629840 5692680 1629152 5691112 +1628120 5692240 1628128 5692296 1629840 5692680 1629152 5691112 +1629064 5691080 1628880 5691048 1628120 5692240 1629152 5691112 +1628120 5692240 1629840 5692680 1629152 5691112 1628880 5691048 +1628880 5691048 1628816 5691040 1628120 5692240 1629152 5691112 +1629064 5691080 1628976 5691056 1628880 5691048 1629152 5691112 +1629840 5692680 1629944 5692528 1629152 5691112 1628120 5692240 +1629944 5692528 1630136 5692352 1629152 5691112 1629840 5692680 +1630136 5692352 1630232 5692312 1629152 5691112 1629944 5692528 +1630232 5692312 1630448 5692312 1629152 5691112 1630136 5692352 +1629152 5691112 1626096 5687632 1629064 5691080 1628880 5691048 +1630448 5692312 1630608 5692360 1629152 5691112 1630232 5692312 +1629152 5691112 1630608 5692360 1626016 5687448 1626048 5687512 +1630608 5692360 1626016 5687448 1629152 5691112 1630448 5692312 +1626016 5687448 1629240 5691152 1630608 5692360 1663880 5646248 +1629152 5691112 1629240 5691152 1626016 5687448 1626048 5687512 +1629152 5691112 1629240 5691152 1626048 5687512 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1629240 5691152 +1629152 5691112 1629240 5691152 1626096 5687632 1629064 5691080 +1629240 5691152 1626016 5687448 1626048 5687512 1626096 5687632 +1629152 5691112 1630608 5692360 1629240 5691152 1626096 5687632 +1630608 5692360 1629240 5691152 1629152 5691112 1630448 5692312 +1629152 5691112 1630232 5692312 1630448 5692312 1629240 5691152 +1629152 5691112 1630136 5692352 1630232 5692312 1629240 5691152 +1629152 5691112 1629944 5692528 1630136 5692352 1629240 5691152 +1629152 5691112 1629840 5692680 1629944 5692528 1629240 5691152 +1629152 5691112 1628120 5692240 1629840 5692680 1629240 5691152 +1629152 5691112 1628880 5691048 1628120 5692240 1629240 5691152 +1628120 5692240 1628128 5692296 1629840 5692680 1629240 5691152 +1629840 5692680 1629944 5692528 1629240 5691152 1628120 5692240 +1629944 5692528 1630136 5692352 1629240 5691152 1629840 5692680 +1630136 5692352 1630232 5692312 1629240 5691152 1629944 5692528 +1630232 5692312 1630448 5692312 1629240 5691152 1630136 5692352 +1629240 5691152 1626096 5687632 1629152 5691112 1628120 5692240 +1630448 5692312 1630608 5692360 1629240 5691152 1630232 5692312 +1629240 5691152 1630608 5692360 1626016 5687448 1626048 5687512 +1630608 5692360 1626016 5687448 1629240 5691152 1630448 5692312 +1626016 5687448 1629328 5691224 1630608 5692360 1663880 5646248 +1629240 5691152 1629328 5691224 1626016 5687448 1626048 5687512 +1630608 5692360 1629328 5691224 1629240 5691152 1630448 5692312 +1629240 5691152 1630232 5692312 1630448 5692312 1629328 5691224 +1629240 5691152 1630136 5692352 1630232 5692312 1629328 5691224 +1629240 5691152 1629944 5692528 1630136 5692352 1629328 5691224 +1629240 5691152 1629840 5692680 1629944 5692528 1629328 5691224 +1629240 5691152 1628120 5692240 1629840 5692680 1629328 5691224 +1628120 5692240 1628128 5692296 1629840 5692680 1629328 5691224 +1628128 5692296 1629816 5692792 1629840 5692680 1629328 5691224 +1629240 5691152 1629152 5691112 1628120 5692240 1629328 5691224 +1629152 5691112 1628880 5691048 1628120 5692240 1629328 5691224 +1628880 5691048 1628816 5691040 1628120 5692240 1629328 5691224 +1629152 5691112 1629064 5691080 1628880 5691048 1629328 5691224 +1628880 5691048 1628120 5692240 1629328 5691224 1629064 5691080 +1629064 5691080 1628976 5691056 1628880 5691048 1629328 5691224 +1629152 5691112 1629064 5691080 1629328 5691224 1629240 5691152 +1628120 5692240 1628128 5692296 1629328 5691224 1628880 5691048 +1629840 5692680 1629944 5692528 1629328 5691224 1628128 5692296 +1629944 5692528 1630136 5692352 1629328 5691224 1629840 5692680 +1630136 5692352 1630232 5692312 1629328 5691224 1629944 5692528 +1630232 5692312 1630448 5692312 1629328 5691224 1630136 5692352 +1629328 5691224 1626016 5687448 1629240 5691152 1629152 5691112 +1630448 5692312 1630608 5692360 1629328 5691224 1630232 5692312 +1630608 5692360 1626016 5687448 1629328 5691224 1630448 5692312 +1630232 5692312 1629392 5691296 1629328 5691224 1630136 5692352 +1629328 5691224 1629944 5692528 1630136 5692352 1629392 5691296 +1629328 5691224 1629840 5692680 1629944 5692528 1629392 5691296 +1629328 5691224 1628128 5692296 1629840 5692680 1629392 5691296 +1629328 5691224 1628120 5692240 1628128 5692296 1629392 5691296 +1628128 5692296 1629816 5692792 1629840 5692680 1629392 5691296 +1629328 5691224 1628880 5691048 1628120 5692240 1629392 5691296 +1629328 5691224 1629064 5691080 1628880 5691048 1629392 5691296 +1628120 5692240 1628128 5692296 1629392 5691296 1628880 5691048 +1628880 5691048 1628816 5691040 1628120 5692240 1629392 5691296 +1629064 5691080 1628976 5691056 1628880 5691048 1629392 5691296 +1629328 5691224 1629152 5691112 1629064 5691080 1629392 5691296 +1629064 5691080 1628880 5691048 1629392 5691296 1629152 5691112 +1629328 5691224 1629240 5691152 1629152 5691112 1629392 5691296 +1628880 5691048 1628120 5692240 1629392 5691296 1629064 5691080 +1628128 5692296 1629840 5692680 1629392 5691296 1628120 5692240 +1629840 5692680 1629944 5692528 1629392 5691296 1628128 5692296 +1629944 5692528 1630136 5692352 1629392 5691296 1629840 5692680 +1630136 5692352 1630232 5692312 1629392 5691296 1629944 5692528 +1629328 5691224 1629392 5691296 1630448 5692312 1630608 5692360 +1629392 5691296 1630608 5692360 1629328 5691224 1629152 5691112 +1629328 5691224 1629392 5691296 1630608 5692360 1626016 5687448 +1629392 5691296 1630232 5692312 1630448 5692312 1630608 5692360 +1630232 5692312 1630448 5692312 1629392 5691296 1630136 5692352 +1629840 5692680 1629392 5691368 1628128 5692296 1629816 5692792 +1628128 5692296 1629392 5691368 1629392 5691296 1628120 5692240 +1629392 5691296 1628880 5691048 1628120 5692240 1629392 5691368 +1628880 5691048 1628816 5691040 1628120 5692240 1629392 5691368 +1629392 5691296 1629064 5691080 1628880 5691048 1629392 5691368 +1629392 5691296 1629152 5691112 1629064 5691080 1629392 5691368 +1628880 5691048 1628120 5692240 1629392 5691368 1629064 5691080 +1629064 5691080 1628976 5691056 1628880 5691048 1629392 5691368 +1629392 5691296 1629328 5691224 1629152 5691112 1629392 5691368 +1629152 5691112 1629064 5691080 1629392 5691368 1629328 5691224 +1629328 5691224 1629240 5691152 1629152 5691112 1629392 5691368 +1629152 5691112 1629064 5691080 1629392 5691368 1629240 5691152 +1629328 5691224 1629240 5691152 1629392 5691368 1629392 5691296 +1629064 5691080 1628880 5691048 1629392 5691368 1629152 5691112 +1628120 5692240 1628128 5692296 1629392 5691368 1628880 5691048 +1629392 5691296 1629392 5691368 1629840 5692680 1629944 5692528 +1629392 5691296 1629392 5691368 1629944 5692528 1630136 5692352 +1629392 5691368 1629840 5692680 1629944 5692528 1630136 5692352 +1629392 5691296 1629392 5691368 1630136 5692352 1630232 5692312 +1629392 5691368 1629944 5692528 1630136 5692352 1630232 5692312 +1629392 5691368 1630232 5692312 1629392 5691296 1629328 5691224 +1629392 5691296 1629392 5691368 1630232 5692312 1630448 5692312 +1629392 5691368 1630136 5692352 1630232 5692312 1630448 5692312 +1629392 5691296 1629392 5691368 1630448 5692312 1630608 5692360 +1629392 5691296 1629328 5691224 1629392 5691368 1630448 5692312 +1629392 5691368 1628128 5692296 1629840 5692680 1629944 5692528 +1628128 5692296 1629840 5692680 1629392 5691368 1628120 5692240 +1629840 5692680 1629336 5691416 1628128 5692296 1629816 5692792 +1629392 5691368 1629336 5691416 1629840 5692680 1629944 5692528 +1629392 5691368 1629336 5691416 1629944 5692528 1630136 5692352 +1629392 5691368 1629336 5691416 1630136 5692352 1630232 5692312 +1629336 5691416 1629840 5692680 1629944 5692528 1630136 5692352 +1629392 5691368 1628128 5692296 1629336 5691416 1630136 5692352 +1628128 5692296 1629336 5691416 1629392 5691368 1628120 5692240 +1629392 5691368 1628880 5691048 1628120 5692240 1629336 5691416 +1629392 5691368 1629064 5691080 1628880 5691048 1629336 5691416 +1628880 5691048 1628816 5691040 1628120 5692240 1629336 5691416 +1628816 5691040 1628376 5691024 1628120 5692240 1629336 5691416 +1629064 5691080 1628976 5691056 1628880 5691048 1629336 5691416 +1629064 5691080 1628976 5691056 1629336 5691416 1629392 5691368 +1629392 5691368 1629152 5691112 1629064 5691080 1629336 5691416 +1629392 5691368 1629240 5691152 1629152 5691112 1629336 5691416 +1629064 5691080 1628976 5691056 1629336 5691416 1629152 5691112 +1629392 5691368 1629328 5691224 1629240 5691152 1629336 5691416 +1629240 5691152 1629152 5691112 1629336 5691416 1629328 5691224 +1629392 5691368 1629392 5691296 1629328 5691224 1629336 5691416 +1629328 5691224 1629240 5691152 1629336 5691416 1629392 5691296 +1629152 5691112 1629064 5691080 1629336 5691416 1629240 5691152 +1628880 5691048 1628816 5691040 1629336 5691416 1628976 5691056 +1629336 5691416 1630136 5692352 1629392 5691368 1629392 5691296 +1628120 5692240 1628128 5692296 1629336 5691416 1628816 5691040 +1629336 5691416 1628128 5692296 1629840 5692680 1629944 5692528 +1628128 5692296 1629840 5692680 1629336 5691416 1628120 5692240 +1628120 5692240 1629288 5691432 1628816 5691040 1628376 5691024 +1628816 5691040 1629288 5691432 1629336 5691416 1628880 5691048 +1629336 5691416 1628976 5691056 1628880 5691048 1629288 5691432 +1628880 5691048 1628816 5691040 1629288 5691432 1628976 5691056 +1629336 5691416 1629064 5691080 1628976 5691056 1629288 5691432 +1629336 5691416 1629152 5691112 1629064 5691080 1629288 5691432 +1629064 5691080 1628976 5691056 1629288 5691432 1629152 5691112 +1629336 5691416 1629240 5691152 1629152 5691112 1629288 5691432 +1629336 5691416 1629328 5691224 1629240 5691152 1629288 5691432 +1629152 5691112 1629064 5691080 1629288 5691432 1629240 5691152 +1629336 5691416 1629392 5691296 1629328 5691224 1629288 5691432 +1629240 5691152 1629152 5691112 1629288 5691432 1629328 5691224 +1628976 5691056 1628880 5691048 1629288 5691432 1629064 5691080 +1629336 5691416 1629288 5691432 1628120 5692240 1628128 5692296 +1629288 5691432 1628128 5692296 1629336 5691416 1629328 5691224 +1629336 5691416 1629288 5691432 1628128 5692296 1629840 5692680 +1628128 5692296 1629816 5692792 1629840 5692680 1629288 5691432 +1629288 5691432 1628120 5692240 1628128 5692296 1629840 5692680 +1629336 5691416 1629288 5691432 1629840 5692680 1629944 5692528 +1629336 5691416 1629288 5691432 1629944 5692528 1630136 5692352 +1629336 5691416 1629328 5691224 1629288 5691432 1629944 5692528 +1629288 5691432 1628128 5692296 1629840 5692680 1629944 5692528 +1629288 5691432 1628816 5691040 1628120 5692240 1628128 5692296 +1628816 5691040 1628120 5692240 1629288 5691432 1628880 5691048 +1628120 5692240 1629240 5691424 1628816 5691040 1628376 5691024 +1629288 5691432 1629240 5691424 1628120 5692240 1628128 5692296 +1629288 5691432 1629240 5691424 1628128 5692296 1629840 5692680 +1628128 5692296 1629816 5692792 1629840 5692680 1629240 5691424 +1629288 5691432 1629240 5691424 1629840 5692680 1629944 5692528 +1629240 5691424 1628120 5692240 1628128 5692296 1629840 5692680 +1629288 5691432 1628816 5691040 1629240 5691424 1629840 5692680 +1628816 5691040 1629240 5691424 1629288 5691432 1628880 5691048 +1629288 5691432 1628976 5691056 1628880 5691048 1629240 5691424 +1629288 5691432 1629064 5691080 1628976 5691056 1629240 5691424 +1628976 5691056 1628880 5691048 1629240 5691424 1629064 5691080 +1629288 5691432 1629152 5691112 1629064 5691080 1629240 5691424 +1629288 5691432 1629240 5691152 1629152 5691112 1629240 5691424 +1629152 5691112 1629064 5691080 1629240 5691424 1629240 5691152 +1629288 5691432 1629328 5691224 1629240 5691152 1629240 5691424 +1629288 5691432 1629336 5691416 1629328 5691224 1629240 5691424 +1629240 5691152 1629152 5691112 1629240 5691424 1629328 5691224 +1629336 5691416 1629392 5691296 1629328 5691224 1629240 5691424 +1629328 5691224 1629240 5691152 1629240 5691424 1629336 5691416 +1629064 5691080 1628976 5691056 1629240 5691424 1629152 5691112 +1629240 5691424 1629840 5692680 1629288 5691432 1629336 5691416 +1628880 5691048 1628816 5691040 1629240 5691424 1628976 5691056 +1629240 5691424 1628816 5691040 1628120 5692240 1628128 5692296 +1628816 5691040 1628120 5692240 1629240 5691424 1628880 5691048 +1628120 5692240 1629152 5691400 1628816 5691040 1628376 5691024 +1628816 5691040 1628728 5691008 1628376 5691024 1629152 5691400 +1628120 5692240 1629152 5691400 1628376 5691024 1627944 5692096 +1629240 5691424 1629152 5691400 1628120 5692240 1628128 5692296 +1629240 5691424 1629152 5691400 1628128 5692296 1629840 5692680 +1629240 5691424 1628816 5691040 1629152 5691400 1628128 5692296 +1628816 5691040 1629152 5691400 1629240 5691424 1628880 5691048 +1629240 5691424 1628976 5691056 1628880 5691048 1629152 5691400 +1629240 5691424 1629064 5691080 1628976 5691056 1629152 5691400 +1629240 5691424 1629152 5691112 1629064 5691080 1629152 5691400 +1629064 5691080 1628976 5691056 1629152 5691400 1629152 5691112 +1629240 5691424 1629240 5691152 1629152 5691112 1629152 5691400 +1629240 5691424 1629328 5691224 1629240 5691152 1629152 5691400 +1629240 5691152 1629152 5691112 1629152 5691400 1629328 5691224 +1629240 5691424 1629336 5691416 1629328 5691224 1629152 5691400 +1629152 5691112 1629064 5691080 1629152 5691400 1629240 5691152 +1628976 5691056 1628880 5691048 1629152 5691400 1629064 5691080 +1629152 5691400 1628128 5692296 1629240 5691424 1629328 5691224 +1628880 5691048 1628816 5691040 1629152 5691400 1628976 5691056 +1628120 5692240 1628128 5692296 1629152 5691400 1628376 5691024 +1629152 5691400 1628880 5691048 1628816 5691040 1628376 5691024 +1628120 5692240 1629072 5691384 1628376 5691024 1627944 5692096 +1628376 5691024 1629072 5691384 1629152 5691400 1628816 5691040 +1628376 5691024 1629072 5691384 1628816 5691040 1628728 5691008 +1628376 5691024 1629072 5691384 1628728 5691008 1628640 5690984 +1629072 5691384 1629152 5691400 1628816 5691040 1628728 5691008 +1629152 5691400 1629072 5691384 1628120 5692240 1628128 5692296 +1629152 5691400 1629072 5691384 1628128 5692296 1629240 5691424 +1629072 5691384 1628128 5692296 1629152 5691400 1628816 5691040 +1629152 5691400 1628880 5691048 1628816 5691040 1629072 5691384 +1628816 5691040 1628728 5691008 1629072 5691384 1628880 5691048 +1629152 5691400 1628976 5691056 1628880 5691048 1629072 5691384 +1629152 5691400 1629064 5691080 1628976 5691056 1629072 5691384 +1629152 5691400 1629152 5691112 1629064 5691080 1629072 5691384 +1629152 5691400 1629240 5691152 1629152 5691112 1629072 5691384 +1629064 5691080 1628976 5691056 1629072 5691384 1629152 5691112 +1628976 5691056 1628880 5691048 1629072 5691384 1629064 5691080 +1629152 5691400 1629152 5691112 1629072 5691384 1628128 5692296 +1628880 5691048 1628816 5691040 1629072 5691384 1628976 5691056 +1629072 5691384 1628376 5691024 1628120 5692240 1628128 5692296 +1628376 5691024 1628120 5692240 1629072 5691384 1628728 5691008 +1628120 5692240 1628976 5691344 1628376 5691024 1627944 5692096 +1628376 5691024 1627624 5691896 1627944 5692096 1628976 5691344 +1629072 5691384 1628976 5691344 1628120 5692240 1628128 5692296 +1628376 5691024 1628976 5691344 1629072 5691384 1628728 5691008 +1628376 5691024 1628976 5691344 1628728 5691008 1628640 5690984 +1629072 5691384 1628816 5691040 1628728 5691008 1628976 5691344 +1628376 5691024 1628976 5691344 1628640 5690984 1628416 5691000 +1629072 5691384 1628880 5691048 1628816 5691040 1628976 5691344 +1628816 5691040 1628728 5691008 1628976 5691344 1628880 5691048 +1629072 5691384 1628976 5691056 1628880 5691048 1628976 5691344 +1628880 5691048 1628816 5691040 1628976 5691344 1628976 5691056 +1629072 5691384 1629064 5691080 1628976 5691056 1628976 5691344 +1629072 5691384 1629152 5691112 1629064 5691080 1628976 5691344 +1629072 5691384 1629152 5691400 1629152 5691112 1628976 5691344 +1629064 5691080 1628976 5691056 1628976 5691344 1629152 5691112 +1628976 5691056 1628880 5691048 1628976 5691344 1629064 5691080 +1628976 5691344 1628120 5692240 1629072 5691384 1629152 5691112 +1628976 5691344 1628816 5691040 1628728 5691008 1628640 5690984 +1628120 5692240 1629072 5691384 1628976 5691344 1627944 5692096 +1628976 5691344 1628640 5690984 1628376 5691024 1627944 5692096 +1627944 5692096 1628888 5691312 1628376 5691024 1627624 5691896 +1628976 5691344 1628888 5691312 1627944 5692096 1628120 5692240 +1628976 5691344 1628888 5691312 1628120 5692240 1629072 5691384 +1628976 5691344 1628376 5691024 1628888 5691312 1628120 5692240 +1628376 5691024 1628888 5691312 1628976 5691344 1628640 5690984 +1628976 5691344 1628728 5691008 1628640 5690984 1628888 5691312 +1628376 5691024 1628888 5691312 1628640 5690984 1628416 5691000 +1628976 5691344 1628816 5691040 1628728 5691008 1628888 5691312 +1628728 5691008 1628640 5690984 1628888 5691312 1628816 5691040 +1628976 5691344 1628880 5691048 1628816 5691040 1628888 5691312 +1628976 5691344 1628976 5691056 1628880 5691048 1628888 5691312 +1628880 5691048 1628816 5691040 1628888 5691312 1628976 5691056 +1628976 5691344 1629064 5691080 1628976 5691056 1628888 5691312 +1628816 5691040 1628728 5691008 1628888 5691312 1628880 5691048 +1628888 5691312 1628120 5692240 1628976 5691344 1628976 5691056 +1628640 5690984 1628376 5691024 1628888 5691312 1628728 5691008 +1628888 5691312 1628376 5691024 1627944 5692096 1628120 5692240 +1628376 5691024 1627944 5692096 1628888 5691312 1628640 5690984 +1627944 5692096 1628800 5691280 1628376 5691024 1627624 5691896 +1628888 5691312 1628800 5691280 1627944 5692096 1628120 5692240 +1628888 5691312 1628800 5691280 1628120 5692240 1628976 5691344 +1628888 5691312 1628376 5691024 1628800 5691280 1628120 5692240 +1628376 5691024 1628800 5691280 1628888 5691312 1628640 5690984 +1628376 5691024 1628800 5691280 1628640 5690984 1628416 5691000 +1628640 5690984 1628544 5690968 1628416 5691000 1628800 5691280 +1628416 5691000 1628376 5691024 1628800 5691280 1628544 5690968 +1628544 5690968 1628496 5690968 1628416 5691000 1628800 5691280 +1628888 5691312 1628728 5691008 1628640 5690984 1628800 5691280 +1628888 5691312 1628816 5691040 1628728 5691008 1628800 5691280 +1628888 5691312 1628880 5691048 1628816 5691040 1628800 5691280 +1628816 5691040 1628728 5691008 1628800 5691280 1628880 5691048 +1628888 5691312 1628976 5691056 1628880 5691048 1628800 5691280 +1628728 5691008 1628640 5690984 1628800 5691280 1628816 5691040 +1628800 5691280 1628120 5692240 1628888 5691312 1628880 5691048 +1628800 5691280 1628728 5691008 1628640 5690984 1628544 5690968 +1628800 5691280 1628376 5691024 1627944 5692096 1628120 5692240 +1628376 5691024 1627944 5692096 1628800 5691280 1628416 5691000 +1627944 5692096 1628704 5691240 1628376 5691024 1627624 5691896 +1628800 5691280 1628704 5691240 1627944 5692096 1628120 5692240 +1628800 5691280 1628704 5691240 1628120 5692240 1628888 5691312 +1628800 5691280 1628376 5691024 1628704 5691240 1628120 5692240 +1628376 5691024 1628704 5691240 1628800 5691280 1628416 5691000 +1628800 5691280 1628544 5690968 1628416 5691000 1628704 5691240 +1628800 5691280 1628640 5690984 1628544 5690968 1628704 5691240 +1628544 5690968 1628416 5691000 1628704 5691240 1628640 5690984 +1628544 5690968 1628496 5690968 1628416 5691000 1628704 5691240 +1628800 5691280 1628728 5691008 1628640 5690984 1628704 5691240 +1628640 5690984 1628544 5690968 1628704 5691240 1628728 5691008 +1628800 5691280 1628816 5691040 1628728 5691008 1628704 5691240 +1628800 5691280 1628880 5691048 1628816 5691040 1628704 5691240 +1628728 5691008 1628640 5690984 1628704 5691240 1628816 5691040 +1628704 5691240 1628120 5692240 1628800 5691280 1628816 5691040 +1628416 5691000 1628376 5691024 1628704 5691240 1628544 5690968 +1628704 5691240 1628376 5691024 1627944 5692096 1628120 5692240 +1628376 5691024 1627944 5692096 1628704 5691240 1628416 5691000 +1627944 5692096 1628624 5691216 1628376 5691024 1627624 5691896 +1628704 5691240 1628624 5691216 1627944 5692096 1628120 5692240 +1628704 5691240 1628624 5691216 1628120 5692240 1628800 5691280 +1628704 5691240 1628376 5691024 1628624 5691216 1628120 5692240 +1628376 5691024 1628624 5691216 1628704 5691240 1628416 5691000 +1628704 5691240 1628544 5690968 1628416 5691000 1628624 5691216 +1628704 5691240 1628640 5690984 1628544 5690968 1628624 5691216 +1628704 5691240 1628728 5691008 1628640 5690984 1628624 5691216 +1628640 5690984 1628544 5690968 1628624 5691216 1628728 5691008 +1628544 5690968 1628496 5690968 1628416 5691000 1628624 5691216 +1628704 5691240 1628816 5691040 1628728 5691008 1628624 5691216 +1628544 5690968 1628496 5690968 1628624 5691216 1628640 5690984 +1628624 5691216 1628120 5692240 1628704 5691240 1628728 5691008 +1628416 5691000 1628376 5691024 1628624 5691216 1628496 5690968 +1628624 5691216 1628376 5691024 1627944 5692096 1628120 5692240 +1628376 5691024 1627944 5692096 1628624 5691216 1628416 5691000 +1627944 5692096 1628544 5691192 1628376 5691024 1627624 5691896 +1628544 5691192 1628624 5691216 1628376 5691024 1627624 5691896 +1628376 5691024 1627984 5690944 1627624 5691896 1628544 5691192 +1627624 5691896 1627944 5692096 1628544 5691192 1627984 5690944 +1628376 5691024 1628064 5690904 1627984 5690944 1628544 5691192 +1628376 5691024 1627984 5690944 1628544 5691192 1628624 5691216 +1627984 5690944 1627936 5690952 1627624 5691896 1628544 5691192 +1628624 5691216 1628544 5691192 1627944 5692096 1628120 5692240 +1628624 5691216 1628544 5691192 1628120 5692240 1628704 5691240 +1628624 5691216 1628376 5691024 1628544 5691192 1628120 5692240 +1628376 5691024 1628544 5691192 1628624 5691216 1628416 5691000 +1628376 5691024 1627984 5690944 1628544 5691192 1628416 5691000 +1628624 5691216 1628496 5690968 1628416 5691000 1628544 5691192 +1628624 5691216 1628544 5690968 1628496 5690968 1628544 5691192 +1628624 5691216 1628640 5690984 1628544 5690968 1628544 5691192 +1628624 5691216 1628728 5691008 1628640 5690984 1628544 5691192 +1628544 5690968 1628496 5690968 1628544 5691192 1628640 5690984 +1628496 5690968 1628416 5691000 1628544 5691192 1628544 5690968 +1628544 5691192 1628120 5692240 1628624 5691216 1628640 5690984 +1628416 5691000 1628376 5691024 1628544 5691192 1628496 5690968 +1627944 5692096 1628120 5692240 1628544 5691192 1627624 5691896 +1628544 5691192 1628456 5691160 1627624 5691896 1627944 5692096 +1628544 5691192 1627984 5690944 1628456 5691160 1627944 5692096 +1628456 5691160 1627984 5690944 1627624 5691896 1627944 5692096 +1627984 5690944 1628456 5691160 1628544 5691192 1628376 5691024 +1627984 5690944 1628456 5691160 1628376 5691024 1628064 5690904 +1628456 5691160 1627944 5692096 1628544 5691192 1628376 5691024 +1628544 5691192 1628416 5691000 1628376 5691024 1628456 5691160 +1628544 5691192 1628416 5691000 1628456 5691160 1627944 5692096 +1627984 5690944 1627624 5691896 1628456 5691160 1628376 5691024 +1628376 5691024 1627984 5690944 1628456 5691160 1628416 5691000 +1627624 5691896 1628456 5691160 1627984 5690944 1627936 5690952 +1627624 5691896 1627944 5692096 1628456 5691160 1627936 5690952 +1628456 5691160 1628376 5691024 1627984 5690944 1627936 5690952 +1627624 5691896 1628456 5691160 1627936 5690952 1627848 5690968 +1628544 5691192 1628496 5690968 1628416 5691000 1628456 5691160 +1628544 5691192 1628496 5690968 1628456 5691160 1627944 5692096 +1628416 5691000 1628376 5691024 1628456 5691160 1628496 5690968 +1628544 5691192 1628544 5690968 1628496 5690968 1628456 5691160 +1628544 5691192 1628544 5690968 1628456 5691160 1627944 5692096 +1628544 5691192 1628640 5690984 1628544 5690968 1628456 5691160 +1628496 5690968 1628416 5691000 1628456 5691160 1628544 5690968 +1628544 5691192 1628456 5691160 1627944 5692096 1628120 5692240 +1627984 5690944 1628408 5691120 1628376 5691024 1628064 5690904 +1628376 5691024 1628112 5690864 1628064 5690904 1628408 5691120 +1628456 5691160 1628408 5691120 1627984 5690944 1627936 5690952 +1628456 5691160 1628376 5691024 1628408 5691120 1627936 5690952 +1627984 5690944 1627936 5690952 1628408 5691120 1628064 5690904 +1628408 5691120 1628456 5691160 1628376 5691024 1628064 5690904 +1628376 5691024 1628408 5691120 1628456 5691160 1628416 5691000 +1628456 5691160 1628496 5690968 1628416 5691000 1628408 5691120 +1628408 5691120 1627936 5690952 1628456 5691160 1628496 5690968 +1628376 5691024 1628064 5690904 1628408 5691120 1628416 5691000 +1628416 5691000 1628376 5691024 1628408 5691120 1628496 5690968 +1628456 5691160 1628408 5691120 1627936 5690952 1627624 5691896 +1628456 5691160 1628408 5691120 1627624 5691896 1627944 5692096 +1628456 5691160 1628408 5691120 1627944 5692096 1628544 5691192 +1628456 5691160 1628496 5690968 1628408 5691120 1627944 5692096 +1628408 5691120 1627984 5690944 1627936 5690952 1627624 5691896 +1628408 5691120 1627936 5690952 1627624 5691896 1627944 5692096 +1627936 5690952 1627848 5690968 1627624 5691896 1628408 5691120 +1628456 5691160 1628544 5690968 1628496 5690968 1628408 5691120 +1628064 5690904 1628376 5691088 1628376 5691024 1628112 5690864 +1628408 5691120 1628376 5691088 1628064 5690904 1627984 5690944 +1628408 5691120 1628376 5691088 1627984 5690944 1627936 5690952 +1628376 5691088 1628064 5690904 1627984 5690944 1627936 5690952 +1628408 5691120 1628376 5691088 1627936 5690952 1627624 5691896 +1628408 5691120 1628376 5691024 1628376 5691088 1627936 5690952 +1628376 5691024 1628376 5691088 1628408 5691120 1628416 5691000 +1628376 5691088 1627936 5690952 1628408 5691120 1628416 5691000 +1628376 5691088 1628376 5691024 1628064 5690904 1627984 5690944 +1628408 5691120 1628496 5690968 1628416 5691000 1628376 5691088 +1628376 5691024 1628064 5690904 1628376 5691088 1628416 5691000 +1626016 5687448 1630424 5688880 1663880 5646248 1625984 5687408 +1663880 5646248 1630424 5688880 1630608 5692360 1630704 5692448 +1663880 5646248 1630424 5688880 1630704 5692448 1630800 5692640 +1630424 5688880 1630608 5692360 1630704 5692448 1630800 5692640 +1663880 5646248 1630424 5688880 1630800 5692640 1663944 5646256 +1630424 5688880 1630704 5692448 1630800 5692640 1663944 5646256 +1630800 5692640 1630864 5692824 1663944 5646256 1630424 5688880 +1630800 5692640 1630864 5692824 1630424 5688880 1630704 5692448 +1663944 5646256 1663880 5646248 1630424 5688880 1630864 5692824 +1630864 5692824 1630864 5692928 1663944 5646256 1630424 5688880 +1630424 5688880 1626016 5687448 1630608 5692360 1630704 5692448 +1630608 5692360 1630424 5688880 1626016 5687448 1629328 5691224 +1630608 5692360 1630704 5692448 1630424 5688880 1629328 5691224 +1663880 5646248 1625904 5687328 1625984 5687408 1630424 5688880 +1625984 5687408 1626016 5687448 1630424 5688880 1625904 5687328 +1663880 5646248 1663776 5646144 1625904 5687328 1630424 5688880 +1625904 5687328 1625984 5687408 1630424 5688880 1663776 5646144 +1663776 5646144 1625856 5687296 1625904 5687328 1630424 5688880 +1663776 5646144 1625856 5687296 1630424 5688880 1663880 5646248 +1625904 5687328 1625984 5687408 1630424 5688880 1625856 5687296 +1663776 5646144 1657088 5639464 1625856 5687296 1630424 5688880 +1663776 5646144 1663688 5645984 1657088 5639464 1630424 5688880 +1663776 5646144 1657088 5639464 1630424 5688880 1663880 5646248 +1657088 5639464 1625824 5687280 1625856 5687296 1630424 5688880 +1657088 5639464 1617256 5683416 1625824 5687280 1630424 5688880 +1657088 5639464 1625824 5687280 1630424 5688880 1663776 5646144 +1625856 5687296 1625904 5687328 1630424 5688880 1625824 5687280 +1626016 5687448 1629328 5691224 1630424 5688880 1625984 5687408 +1630424 5688880 1663944 5646256 1663880 5646248 1663776 5646144 +1626016 5687448 1629240 5691152 1629328 5691224 1630424 5688880 +1629328 5691224 1630608 5692360 1630424 5688880 1629240 5691152 +1626016 5687448 1629240 5691152 1630424 5688880 1625984 5687408 +1626016 5687448 1626048 5687512 1629240 5691152 1630424 5688880 +1626016 5687448 1626048 5687512 1630424 5688880 1625984 5687408 +1626048 5687512 1626096 5687632 1629240 5691152 1630424 5688880 +1626048 5687512 1626064 5687560 1626096 5687632 1630424 5688880 +1626096 5687632 1629152 5691112 1629240 5691152 1630424 5688880 +1626096 5687632 1629064 5691080 1629152 5691112 1630424 5688880 +1626096 5687632 1628976 5691056 1629064 5691080 1630424 5688880 +1626096 5687632 1628112 5690744 1628976 5691056 1630424 5688880 +1626096 5687632 1626096 5687664 1628112 5690744 1630424 5688880 +1626096 5687664 1628024 5690712 1628112 5690744 1630424 5688880 +1626096 5687664 1626464 5689664 1628024 5690712 1630424 5688880 +1626464 5689664 1627944 5690696 1628024 5690712 1630424 5688880 +1626464 5689664 1627856 5690720 1627944 5690696 1630424 5688880 +1626464 5689664 1627944 5690696 1630424 5688880 1626096 5687664 +1628024 5690712 1628112 5690744 1630424 5688880 1627944 5690696 +1626096 5687664 1626464 5689664 1630424 5688880 1626096 5687632 +1626096 5687664 1626424 5689616 1626464 5689664 1630424 5688880 +1628112 5690744 1628976 5691056 1630424 5688880 1628024 5690712 +1628112 5690744 1628728 5691008 1628976 5691056 1630424 5688880 +1628112 5690744 1628728 5691008 1630424 5688880 1628024 5690712 +1628112 5690744 1628640 5690984 1628728 5691008 1630424 5688880 +1628112 5690744 1628544 5690968 1628640 5690984 1630424 5688880 +1628112 5690744 1628640 5690984 1630424 5688880 1628024 5690712 +1628728 5691008 1628880 5691048 1628976 5691056 1630424 5688880 +1628728 5691008 1628976 5691056 1630424 5688880 1628640 5690984 +1628976 5691056 1629064 5691080 1630424 5688880 1628728 5691008 +1629064 5691080 1629152 5691112 1630424 5688880 1628976 5691056 +1629152 5691112 1629240 5691152 1630424 5688880 1629064 5691080 +1626096 5687632 1626096 5687664 1630424 5688880 1626048 5687512 +1626048 5687512 1626096 5687632 1630424 5688880 1626016 5687448 +1629240 5691152 1629328 5691224 1630424 5688880 1629152 5691112 +1630608 5692360 1630424 5688880 1629328 5691224 1629392 5691296 +1630608 5692360 1630704 5692448 1630424 5688880 1629392 5691296 +1630424 5688880 1629240 5691152 1629328 5691224 1629392 5691296 +1630608 5692360 1630424 5688880 1629392 5691296 1630448 5692312 +1630424 5688880 1630504 5688864 1663944 5646256 1663880 5646248 +1630864 5692824 1630504 5688864 1630424 5688880 1630800 5692640 +1630424 5688880 1630704 5692448 1630800 5692640 1630504 5688864 +1630424 5688880 1630608 5692360 1630704 5692448 1630504 5688864 +1630704 5692448 1630800 5692640 1630504 5688864 1630608 5692360 +1630800 5692640 1630864 5692824 1630504 5688864 1630704 5692448 +1663944 5646256 1630504 5688864 1630864 5692824 1630864 5692928 +1630424 5688880 1630608 5692360 1630504 5688864 1663880 5646248 +1630424 5688880 1629392 5691296 1630608 5692360 1630504 5688864 +1630608 5692360 1630704 5692448 1630504 5688864 1629392 5691296 +1630424 5688880 1629392 5691296 1630504 5688864 1663880 5646248 +1630504 5688864 1630864 5692824 1663944 5646256 1663880 5646248 +1630864 5692824 1663944 5646256 1630504 5688864 1630800 5692640 +1630424 5688880 1630504 5688864 1663880 5646248 1663776 5646144 +1630504 5688864 1663944 5646256 1663880 5646248 1663776 5646144 +1630424 5688880 1629392 5691296 1630504 5688864 1663776 5646144 +1630424 5688880 1630504 5688864 1663776 5646144 1657088 5639464 +1630424 5688880 1629392 5691296 1630504 5688864 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1630504 5688864 +1630424 5688880 1630504 5688864 1657088 5639464 1625824 5687280 +1630424 5688880 1629392 5691296 1630504 5688864 1625824 5687280 +1657088 5639464 1617256 5683416 1625824 5687280 1630504 5688864 +1630504 5688864 1663776 5646144 1657088 5639464 1625824 5687280 +1630424 5688880 1630504 5688864 1625824 5687280 1625856 5687296 +1630424 5688880 1629392 5691296 1630504 5688864 1625856 5687296 +1630504 5688864 1657088 5639464 1625824 5687280 1625856 5687296 +1630424 5688880 1630504 5688864 1625856 5687296 1625904 5687328 +1630424 5688880 1629392 5691296 1630504 5688864 1625904 5687328 +1630424 5688880 1630504 5688864 1625904 5687328 1625984 5687408 +1630424 5688880 1630504 5688864 1625984 5687408 1626016 5687448 +1630424 5688880 1629392 5691296 1630504 5688864 1625984 5687408 +1630504 5688864 1625824 5687280 1625856 5687296 1625904 5687328 +1630504 5688864 1625856 5687296 1625904 5687328 1625984 5687408 +1630504 5688864 1663880 5646248 1663776 5646144 1657088 5639464 +1629392 5691296 1630448 5692312 1630608 5692360 1630504 5688864 +1630424 5688880 1629328 5691224 1629392 5691296 1630504 5688864 +1663944 5646256 1630544 5688856 1630864 5692824 1630864 5692928 +1630504 5688864 1630544 5688856 1663944 5646256 1663880 5646248 +1630504 5688864 1630544 5688856 1663880 5646248 1663776 5646144 +1630544 5688856 1663944 5646256 1663880 5646248 1663776 5646144 +1630504 5688864 1630864 5692824 1630544 5688856 1663776 5646144 +1630864 5692824 1630544 5688856 1630504 5688864 1630800 5692640 +1630504 5688864 1630704 5692448 1630800 5692640 1630544 5688856 +1630504 5688864 1630608 5692360 1630704 5692448 1630544 5688856 +1630504 5688864 1629392 5691296 1630608 5692360 1630544 5688856 +1630608 5692360 1630704 5692448 1630544 5688856 1629392 5691296 +1630704 5692448 1630800 5692640 1630544 5688856 1630608 5692360 +1630504 5688864 1630424 5688880 1629392 5691296 1630544 5688856 +1630544 5688856 1663776 5646144 1630504 5688864 1629392 5691296 +1630800 5692640 1630864 5692824 1630544 5688856 1630704 5692448 +1630544 5688856 1630864 5692824 1663944 5646256 1663880 5646248 +1630864 5692824 1663944 5646256 1630544 5688856 1630800 5692640 +1630504 5688864 1630544 5688856 1663776 5646144 1657088 5639464 +1630544 5688856 1663880 5646248 1663776 5646144 1657088 5639464 +1630504 5688864 1629392 5691296 1630544 5688856 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1630544 5688856 +1630504 5688864 1630544 5688856 1657088 5639464 1625824 5687280 +1630504 5688864 1629392 5691296 1630544 5688856 1625824 5687280 +1657088 5639464 1617256 5683416 1625824 5687280 1630544 5688856 +1630504 5688864 1630544 5688856 1625824 5687280 1625856 5687296 +1630504 5688864 1629392 5691296 1630544 5688856 1625856 5687296 +1630544 5688856 1657088 5639464 1625824 5687280 1625856 5687296 +1630504 5688864 1630544 5688856 1625856 5687296 1625904 5687328 +1630504 5688864 1629392 5691296 1630544 5688856 1625904 5687328 +1630544 5688856 1625824 5687280 1625856 5687296 1625904 5687328 +1630504 5688864 1630544 5688856 1625904 5687328 1625984 5687408 +1630504 5688864 1629392 5691296 1630544 5688856 1625984 5687408 +1630504 5688864 1630544 5688856 1625984 5687408 1630424 5688880 +1630544 5688856 1625856 5687296 1625904 5687328 1625984 5687408 +1630544 5688856 1663776 5646144 1657088 5639464 1625824 5687280 +1629392 5691296 1630448 5692312 1630608 5692360 1630544 5688856 +1663944 5646256 1630632 5688872 1630864 5692824 1630864 5692928 +1630544 5688856 1630632 5688872 1663944 5646256 1663880 5646248 +1630544 5688856 1630632 5688872 1663880 5646248 1663776 5646144 +1630544 5688856 1630632 5688872 1663776 5646144 1657088 5639464 +1630632 5688872 1663880 5646248 1663776 5646144 1657088 5639464 +1630632 5688872 1663944 5646256 1663880 5646248 1663776 5646144 +1630544 5688856 1630864 5692824 1630632 5688872 1657088 5639464 +1630864 5692824 1630632 5688872 1630544 5688856 1630800 5692640 +1630544 5688856 1630704 5692448 1630800 5692640 1630632 5688872 +1630544 5688856 1630608 5692360 1630704 5692448 1630632 5688872 +1630544 5688856 1629392 5691296 1630608 5692360 1630632 5688872 +1630544 5688856 1630504 5688864 1629392 5691296 1630632 5688872 +1629392 5691296 1630608 5692360 1630632 5688872 1630504 5688864 +1630608 5692360 1630704 5692448 1630632 5688872 1629392 5691296 +1630504 5688864 1630424 5688880 1629392 5691296 1630632 5688872 +1630504 5688864 1630424 5688880 1630632 5688872 1630544 5688856 +1629392 5691296 1630608 5692360 1630632 5688872 1630424 5688880 +1630704 5692448 1630800 5692640 1630632 5688872 1630608 5692360 +1630632 5688872 1657088 5639464 1630544 5688856 1630504 5688864 +1630800 5692640 1630864 5692824 1630632 5688872 1630704 5692448 +1630632 5688872 1630864 5692824 1663944 5646256 1663880 5646248 +1630864 5692824 1663944 5646256 1630632 5688872 1630800 5692640 +1663776 5646144 1663688 5645984 1657088 5639464 1630632 5688872 +1630544 5688856 1630632 5688872 1657088 5639464 1625824 5687280 +1630632 5688872 1663776 5646144 1657088 5639464 1625824 5687280 +1630544 5688856 1630504 5688864 1630632 5688872 1625824 5687280 +1657088 5639464 1617256 5683416 1625824 5687280 1630632 5688872 +1630544 5688856 1630632 5688872 1625824 5687280 1625856 5687296 +1629392 5691296 1630448 5692312 1630608 5692360 1630632 5688872 +1630424 5688880 1629328 5691224 1629392 5691296 1630632 5688872 +1663944 5646256 1630728 5688896 1630864 5692824 1630864 5692928 +1630632 5688872 1630728 5688896 1663944 5646256 1663880 5646248 +1630632 5688872 1630728 5688896 1663880 5646248 1663776 5646144 +1630632 5688872 1630728 5688896 1663776 5646144 1657088 5639464 +1630632 5688872 1630728 5688896 1657088 5639464 1625824 5687280 +1630728 5688896 1663880 5646248 1663776 5646144 1657088 5639464 +1630728 5688896 1663944 5646256 1663880 5646248 1663776 5646144 +1630632 5688872 1630864 5692824 1630728 5688896 1657088 5639464 +1630864 5692824 1630728 5688896 1630632 5688872 1630800 5692640 +1630632 5688872 1630704 5692448 1630800 5692640 1630728 5688896 +1630632 5688872 1630608 5692360 1630704 5692448 1630728 5688896 +1630632 5688872 1629392 5691296 1630608 5692360 1630728 5688896 +1630632 5688872 1630424 5688880 1629392 5691296 1630728 5688896 +1629392 5691296 1630608 5692360 1630728 5688896 1630424 5688880 +1630632 5688872 1630504 5688864 1630424 5688880 1630728 5688896 +1630608 5692360 1630704 5692448 1630728 5688896 1629392 5691296 +1630704 5692448 1630800 5692640 1630728 5688896 1630608 5692360 +1630728 5688896 1657088 5639464 1630632 5688872 1630424 5688880 +1630800 5692640 1630864 5692824 1630728 5688896 1630704 5692448 +1630728 5688896 1630864 5692824 1663944 5646256 1663880 5646248 +1630864 5692824 1663944 5646256 1630728 5688896 1630800 5692640 +1663776 5646144 1663688 5645984 1657088 5639464 1630728 5688896 +1629392 5691296 1630448 5692312 1630608 5692360 1630728 5688896 +1630424 5688880 1629328 5691224 1629392 5691296 1630728 5688896 +1663944 5646256 1630816 5688920 1630864 5692824 1630864 5692928 +1630728 5688896 1630816 5688920 1663944 5646256 1663880 5646248 +1630728 5688896 1630816 5688920 1663880 5646248 1663776 5646144 +1630728 5688896 1630816 5688920 1663776 5646144 1657088 5639464 +1630728 5688896 1630816 5688920 1657088 5639464 1630632 5688872 +1630816 5688920 1663880 5646248 1663776 5646144 1657088 5639464 +1630816 5688920 1663944 5646256 1663880 5646248 1663776 5646144 +1630728 5688896 1630864 5692824 1630816 5688920 1657088 5639464 +1630864 5692824 1630816 5688920 1630728 5688896 1630800 5692640 +1630728 5688896 1630704 5692448 1630800 5692640 1630816 5688920 +1630728 5688896 1630608 5692360 1630704 5692448 1630816 5688920 +1630728 5688896 1629392 5691296 1630608 5692360 1630816 5688920 +1630728 5688896 1630424 5688880 1629392 5691296 1630816 5688920 +1630728 5688896 1630632 5688872 1630424 5688880 1630816 5688920 +1629392 5691296 1630608 5692360 1630816 5688920 1630424 5688880 +1630608 5692360 1630704 5692448 1630816 5688920 1629392 5691296 +1630704 5692448 1630800 5692640 1630816 5688920 1630608 5692360 +1630816 5688920 1657088 5639464 1630728 5688896 1630424 5688880 +1630800 5692640 1630864 5692824 1630816 5688920 1630704 5692448 +1630816 5688920 1630864 5692824 1663944 5646256 1663880 5646248 +1630864 5692824 1663944 5646256 1630816 5688920 1630800 5692640 +1663776 5646144 1663688 5645984 1657088 5639464 1630816 5688920 +1629392 5691296 1630448 5692312 1630608 5692360 1630816 5688920 +1629392 5691296 1630448 5692312 1630816 5688920 1630424 5688880 +1630608 5692360 1630704 5692448 1630816 5688920 1630448 5692312 +1630424 5688880 1629328 5691224 1629392 5691296 1630816 5688920 +1629392 5691296 1629392 5691368 1630448 5692312 1630816 5688920 +1663944 5646256 1630904 5688944 1630864 5692824 1630864 5692928 +1630816 5688920 1630904 5688944 1663944 5646256 1663880 5646248 +1630816 5688920 1630904 5688944 1663880 5646248 1663776 5646144 +1630816 5688920 1630904 5688944 1663776 5646144 1657088 5639464 +1630816 5688920 1630904 5688944 1657088 5639464 1630728 5688896 +1630904 5688944 1663880 5646248 1663776 5646144 1657088 5639464 +1630904 5688944 1663944 5646256 1663880 5646248 1663776 5646144 +1630816 5688920 1630864 5692824 1630904 5688944 1657088 5639464 +1630864 5692824 1630904 5688944 1630816 5688920 1630800 5692640 +1630816 5688920 1630704 5692448 1630800 5692640 1630904 5688944 +1630816 5688920 1630608 5692360 1630704 5692448 1630904 5688944 +1630816 5688920 1630448 5692312 1630608 5692360 1630904 5688944 +1630608 5692360 1630704 5692448 1630904 5688944 1630448 5692312 +1630704 5692448 1630800 5692640 1630904 5688944 1630608 5692360 +1630904 5688944 1657088 5639464 1630816 5688920 1630448 5692312 +1630800 5692640 1630864 5692824 1630904 5688944 1630704 5692448 +1630904 5688944 1630864 5692824 1663944 5646256 1663880 5646248 +1630864 5692824 1663944 5646256 1630904 5688944 1630800 5692640 +1663776 5646144 1663688 5645984 1657088 5639464 1630904 5688944 +1630816 5688920 1629392 5691296 1630448 5692312 1630904 5688944 +1630816 5688920 1630424 5688880 1629392 5691296 1630904 5688944 +1630448 5692312 1630608 5692360 1630904 5688944 1629392 5691296 +1630816 5688920 1629392 5691296 1630904 5688944 1657088 5639464 +1629392 5691296 1629392 5691368 1630448 5692312 1630904 5688944 +1663944 5646256 1630992 5688984 1630864 5692824 1630864 5692928 +1630904 5688944 1630992 5688984 1663944 5646256 1663880 5646248 +1630904 5688944 1630992 5688984 1663880 5646248 1663776 5646144 +1630904 5688944 1630992 5688984 1663776 5646144 1657088 5639464 +1630992 5688984 1663944 5646256 1663880 5646248 1663776 5646144 +1630904 5688944 1630864 5692824 1630992 5688984 1663776 5646144 +1630864 5692824 1630992 5688984 1630904 5688944 1630800 5692640 +1630904 5688944 1630704 5692448 1630800 5692640 1630992 5688984 +1630904 5688944 1630608 5692360 1630704 5692448 1630992 5688984 +1630904 5688944 1630448 5692312 1630608 5692360 1630992 5688984 +1630904 5688944 1629392 5691296 1630448 5692312 1630992 5688984 +1630448 5692312 1630608 5692360 1630992 5688984 1629392 5691296 +1630608 5692360 1630704 5692448 1630992 5688984 1630448 5692312 +1630704 5692448 1630800 5692640 1630992 5688984 1630608 5692360 +1630992 5688984 1663776 5646144 1630904 5688944 1629392 5691296 +1630800 5692640 1630864 5692824 1630992 5688984 1630704 5692448 +1630992 5688984 1630864 5692824 1663944 5646256 1663880 5646248 +1630864 5692824 1663944 5646256 1630992 5688984 1630800 5692640 +1630904 5688944 1630816 5688920 1629392 5691296 1630992 5688984 +1630816 5688920 1630424 5688880 1629392 5691296 1630992 5688984 +1630816 5688920 1630728 5688896 1630424 5688880 1630992 5688984 +1629392 5691296 1630448 5692312 1630992 5688984 1630424 5688880 +1630904 5688944 1630816 5688920 1630992 5688984 1663776 5646144 +1630816 5688920 1630424 5688880 1630992 5688984 1630904 5688944 +1630424 5688880 1629328 5691224 1629392 5691296 1630992 5688984 +1629392 5691296 1629392 5691368 1630448 5692312 1630992 5688984 +1663944 5646256 1631080 5689008 1630864 5692824 1630864 5692928 +1630992 5688984 1631080 5689008 1663944 5646256 1663880 5646248 +1630992 5688984 1631080 5689008 1663880 5646248 1663776 5646144 +1630992 5688984 1631080 5689008 1663776 5646144 1630904 5688944 +1663776 5646144 1657088 5639464 1630904 5688944 1631080 5689008 +1657088 5639464 1630816 5688920 1630904 5688944 1631080 5689008 +1630904 5688944 1630992 5688984 1631080 5689008 1657088 5639464 +1631080 5689008 1663880 5646248 1663776 5646144 1657088 5639464 +1631080 5689008 1663944 5646256 1663880 5646248 1663776 5646144 +1630992 5688984 1630864 5692824 1631080 5689008 1630904 5688944 +1630864 5692824 1631080 5689008 1630992 5688984 1630800 5692640 +1630992 5688984 1630704 5692448 1630800 5692640 1631080 5689008 +1630992 5688984 1630608 5692360 1630704 5692448 1631080 5689008 +1630992 5688984 1630448 5692312 1630608 5692360 1631080 5689008 +1630992 5688984 1629392 5691296 1630448 5692312 1631080 5689008 +1630992 5688984 1630424 5688880 1629392 5691296 1631080 5689008 +1630448 5692312 1630608 5692360 1631080 5689008 1629392 5691296 +1630608 5692360 1630704 5692448 1631080 5689008 1630448 5692312 +1630704 5692448 1630800 5692640 1631080 5689008 1630608 5692360 +1631080 5689008 1630904 5688944 1630992 5688984 1629392 5691296 +1630800 5692640 1630864 5692824 1631080 5689008 1630704 5692448 +1663944 5646256 1663880 5646248 1631080 5689008 1630864 5692928 +1631080 5689008 1630800 5692640 1630864 5692824 1630864 5692928 +1663944 5646256 1631080 5689008 1630864 5692928 1743800 5687320 +1663776 5646144 1663688 5645984 1657088 5639464 1631080 5689008 +1629392 5691296 1629392 5691368 1630448 5692312 1631080 5689008 +1630864 5692928 1631152 5689072 1631080 5689008 1630864 5692824 +1631080 5689008 1631152 5689072 1663944 5646256 1663880 5646248 +1631080 5689008 1631152 5689072 1663880 5646248 1663776 5646144 +1631152 5689072 1663880 5646248 1631080 5689008 1630864 5692824 +1631080 5689008 1630800 5692640 1630864 5692824 1631152 5689072 +1630864 5692824 1630864 5692928 1631152 5689072 1630800 5692640 +1631080 5689008 1630704 5692448 1630800 5692640 1631152 5689072 +1631080 5689008 1630608 5692360 1630704 5692448 1631152 5689072 +1631080 5689008 1630448 5692312 1630608 5692360 1631152 5689072 +1631080 5689008 1629392 5691296 1630448 5692312 1631152 5689072 +1631080 5689008 1630992 5688984 1629392 5691296 1631152 5689072 +1630992 5688984 1630424 5688880 1629392 5691296 1631152 5689072 +1630992 5688984 1630816 5688920 1630424 5688880 1631152 5689072 +1630992 5688984 1630424 5688880 1631152 5689072 1631080 5689008 +1629392 5691296 1630448 5692312 1631152 5689072 1630424 5688880 +1630448 5692312 1630608 5692360 1631152 5689072 1629392 5691296 +1630608 5692360 1630704 5692448 1631152 5689072 1630448 5692312 +1630704 5692448 1630800 5692640 1631152 5689072 1630608 5692360 +1631080 5689008 1630992 5688984 1631152 5689072 1663880 5646248 +1630800 5692640 1630864 5692824 1631152 5689072 1630704 5692448 +1631152 5689072 1630864 5692928 1663944 5646256 1663880 5646248 +1630864 5692928 1663944 5646256 1631152 5689072 1630864 5692824 +1663944 5646256 1631152 5689072 1630864 5692928 1743800 5687320 +1630424 5688880 1629328 5691224 1629392 5691296 1631152 5689072 +1629392 5691296 1629392 5691368 1630448 5692312 1631152 5689072 +1631152 5689072 1631216 5689136 1663944 5646256 1663880 5646248 +1631152 5689072 1631216 5689136 1663880 5646248 1631080 5689008 +1631152 5689072 1630864 5692928 1631216 5689136 1663880 5646248 +1630864 5692928 1631216 5689136 1631152 5689072 1630864 5692824 +1631152 5689072 1630800 5692640 1630864 5692824 1631216 5689136 +1631152 5689072 1630704 5692448 1630800 5692640 1631216 5689136 +1630800 5692640 1630864 5692824 1631216 5689136 1630704 5692448 +1631152 5689072 1630608 5692360 1630704 5692448 1631216 5689136 +1631152 5689072 1630448 5692312 1630608 5692360 1631216 5689136 +1631152 5689072 1629392 5691296 1630448 5692312 1631216 5689136 +1631152 5689072 1630424 5688880 1629392 5691296 1631216 5689136 +1631152 5689072 1630992 5688984 1630424 5688880 1631216 5689136 +1630992 5688984 1630816 5688920 1630424 5688880 1631216 5689136 +1630816 5688920 1630728 5688896 1630424 5688880 1631216 5689136 +1630992 5688984 1630816 5688920 1631216 5689136 1631152 5689072 +1631152 5689072 1631080 5689008 1630992 5688984 1631216 5689136 +1630424 5688880 1629392 5691296 1631216 5689136 1630816 5688920 +1629392 5691296 1630448 5692312 1631216 5689136 1630424 5688880 +1630448 5692312 1630608 5692360 1631216 5689136 1629392 5691296 +1630608 5692360 1630704 5692448 1631216 5689136 1630448 5692312 +1630704 5692448 1630800 5692640 1631216 5689136 1630608 5692360 +1631216 5689136 1663880 5646248 1631152 5689072 1630992 5688984 +1630864 5692824 1630864 5692928 1631216 5689136 1630800 5692640 +1631216 5689136 1630864 5692928 1663944 5646256 1663880 5646248 +1630864 5692928 1663944 5646256 1631216 5689136 1630864 5692824 +1663944 5646256 1631216 5689136 1630864 5692928 1743800 5687320 +1630992 5688984 1630904 5688944 1630816 5688920 1631216 5689136 +1630424 5688880 1629328 5691224 1629392 5691296 1631216 5689136 +1630424 5688880 1629328 5691224 1631216 5689136 1630816 5688920 +1629392 5691296 1630448 5692312 1631216 5689136 1629328 5691224 +1630424 5688880 1629240 5691152 1629328 5691224 1631216 5689136 +1629392 5691296 1629392 5691368 1630448 5692312 1631216 5689136 +1630800 5692640 1631208 5689208 1631216 5689136 1630704 5692448 +1631216 5689136 1630608 5692360 1630704 5692448 1631208 5689208 +1630704 5692448 1630800 5692640 1631208 5689208 1630608 5692360 +1631216 5689136 1630448 5692312 1630608 5692360 1631208 5689208 +1631216 5689136 1629392 5691296 1630448 5692312 1631208 5689208 +1631216 5689136 1629328 5691224 1629392 5691296 1631208 5689208 +1629392 5691296 1630448 5692312 1631208 5689208 1629328 5691224 +1630448 5692312 1630608 5692360 1631208 5689208 1629392 5691296 +1630608 5692360 1630704 5692448 1631208 5689208 1630448 5692312 +1631216 5689136 1631208 5689208 1630864 5692824 1630864 5692928 +1631208 5689208 1630864 5692928 1631216 5689136 1629328 5691224 +1631216 5689136 1631208 5689208 1630864 5692928 1663944 5646256 +1631208 5689208 1630864 5692824 1630864 5692928 1663944 5646256 +1631216 5689136 1631208 5689208 1663944 5646256 1663880 5646248 +1631216 5689136 1629328 5691224 1631208 5689208 1663944 5646256 +1631208 5689208 1630800 5692640 1630864 5692824 1630864 5692928 +1630800 5692640 1630864 5692824 1631208 5689208 1630704 5692448 +1630864 5692928 1743800 5687320 1663944 5646256 1631208 5689208 +1631216 5689136 1630424 5688880 1629328 5691224 1631208 5689208 +1631216 5689136 1630816 5688920 1630424 5688880 1631208 5689208 +1630816 5688920 1630728 5688896 1630424 5688880 1631208 5689208 +1630728 5688896 1630632 5688872 1630424 5688880 1631208 5689208 +1631216 5689136 1630992 5688984 1630816 5688920 1631208 5689208 +1631216 5689136 1631152 5689072 1630992 5688984 1631208 5689208 +1630992 5688984 1630816 5688920 1631208 5689208 1631152 5689072 +1631152 5689072 1631080 5689008 1630992 5688984 1631208 5689208 +1630816 5688920 1630728 5688896 1631208 5689208 1630992 5688984 +1629328 5691224 1629392 5691296 1631208 5689208 1630424 5688880 +1631216 5689136 1631152 5689072 1631208 5689208 1663944 5646256 +1630424 5688880 1629240 5691152 1629328 5691224 1631208 5689208 +1630992 5688984 1630904 5688944 1630816 5688920 1631208 5689208 +1630992 5688984 1630904 5688944 1631208 5689208 1631152 5689072 +1630816 5688920 1630728 5688896 1631208 5689208 1630904 5688944 +1630424 5688880 1629328 5691224 1631208 5689208 1630728 5688896 +1629392 5691296 1629392 5691368 1630448 5692312 1631208 5689208 +1631208 5689208 1631152 5689248 1629328 5691224 1629392 5691296 +1631208 5689208 1631152 5689248 1629392 5691296 1630448 5692312 +1631152 5689248 1629328 5691224 1629392 5691296 1630448 5692312 +1631208 5689208 1631152 5689248 1630448 5692312 1630608 5692360 +1631152 5689248 1629392 5691296 1630448 5692312 1630608 5692360 +1631208 5689208 1631152 5689248 1630608 5692360 1630704 5692448 +1631208 5689208 1631152 5689248 1630704 5692448 1630800 5692640 +1631152 5689248 1630448 5692312 1630608 5692360 1630704 5692448 +1631208 5689208 1630424 5688880 1631152 5689248 1630704 5692448 +1631152 5689248 1630424 5688880 1629328 5691224 1629392 5691296 +1629328 5691224 1631152 5689248 1630424 5688880 1629240 5691152 +1630424 5688880 1631152 5689248 1631208 5689208 1630728 5688896 +1630424 5688880 1631152 5689248 1630728 5688896 1630632 5688872 +1631208 5689208 1630816 5688920 1630728 5688896 1631152 5689248 +1631208 5689208 1630904 5688944 1630816 5688920 1631152 5689248 +1630816 5688920 1630728 5688896 1631152 5689248 1630904 5688944 +1631152 5689248 1630704 5692448 1631208 5689208 1630904 5688944 +1630424 5688880 1629328 5691224 1631152 5689248 1630728 5688896 +1631208 5689208 1630992 5688984 1630904 5688944 1631152 5689248 +1631208 5689208 1631152 5689072 1630992 5688984 1631152 5689248 +1631208 5689208 1631216 5689136 1631152 5689072 1631152 5689248 +1631152 5689072 1630992 5688984 1631152 5689248 1631216 5689136 +1631152 5689072 1631080 5689008 1630992 5688984 1631152 5689248 +1631152 5689072 1631080 5689008 1631152 5689248 1631216 5689136 +1630904 5688944 1630816 5688920 1631152 5689248 1630992 5688984 +1631208 5689208 1631216 5689136 1631152 5689248 1630704 5692448 +1630992 5688984 1630904 5688944 1631152 5689248 1631080 5689008 +1630728 5688896 1630424 5688880 1631152 5689248 1630816 5688920 +1629392 5691296 1629392 5691368 1630448 5692312 1631152 5689248 +1631152 5689248 1631120 5689248 1629328 5691224 1629392 5691296 +1631152 5689248 1631120 5689248 1629392 5691296 1630448 5692312 +1631152 5689248 1631120 5689248 1630448 5692312 1630608 5692360 +1631120 5689248 1629392 5691296 1630448 5692312 1630608 5692360 +1631152 5689248 1631120 5689248 1630608 5692360 1630704 5692448 +1631120 5689248 1629328 5691224 1629392 5691296 1630448 5692312 +1631152 5689248 1630424 5688880 1631120 5689248 1630608 5692360 +1630424 5688880 1631120 5689248 1631152 5689248 1630728 5688896 +1630424 5688880 1631120 5689248 1630728 5688896 1630632 5688872 +1631120 5689248 1630608 5692360 1631152 5689248 1630728 5688896 +1631120 5689248 1630424 5688880 1629328 5691224 1629392 5691296 +1630424 5688880 1629328 5691224 1631120 5689248 1630728 5688896 +1629328 5691224 1631120 5689248 1630424 5688880 1629240 5691152 +1631152 5689248 1630816 5688920 1630728 5688896 1631120 5689248 +1631152 5689248 1630904 5688944 1630816 5688920 1631120 5689248 +1631152 5689248 1630992 5688984 1630904 5688944 1631120 5689248 +1630904 5688944 1630816 5688920 1631120 5689248 1630992 5688984 +1631152 5689248 1630992 5688984 1631120 5689248 1630608 5692360 +1630728 5688896 1630424 5688880 1631120 5689248 1630816 5688920 +1631152 5689248 1631080 5689008 1630992 5688984 1631120 5689248 +1631152 5689248 1631152 5689072 1631080 5689008 1631120 5689248 +1631152 5689248 1631216 5689136 1631152 5689072 1631120 5689248 +1631152 5689248 1631208 5689208 1631216 5689136 1631120 5689248 +1631216 5689136 1631152 5689072 1631120 5689248 1631208 5689208 +1631152 5689072 1631080 5689008 1631120 5689248 1631216 5689136 +1630992 5688984 1630904 5688944 1631120 5689248 1631080 5689008 +1631152 5689248 1631208 5689208 1631120 5689248 1630608 5692360 +1631080 5689008 1630992 5688984 1631120 5689248 1631152 5689072 +1630816 5688920 1630728 5688896 1631120 5689248 1630904 5688944 +1629392 5691296 1629392 5691368 1630448 5692312 1631120 5689248 +1631120 5689248 1631040 5689264 1629328 5691224 1629392 5691296 +1631120 5689248 1631040 5689264 1629392 5691296 1630448 5692312 +1631120 5689248 1631040 5689264 1630448 5692312 1630608 5692360 +1631120 5689248 1631040 5689264 1630608 5692360 1631152 5689248 +1631040 5689264 1630448 5692312 1630608 5692360 1631152 5689248 +1630608 5692360 1630704 5692448 1631152 5689248 1631040 5689264 +1631040 5689264 1629392 5691296 1630448 5692312 1630608 5692360 +1631040 5689264 1629328 5691224 1629392 5691296 1630448 5692312 +1631120 5689248 1630424 5688880 1631040 5689264 1631152 5689248 +1630424 5688880 1631040 5689264 1631120 5689248 1630728 5688896 +1630424 5688880 1631040 5689264 1630728 5688896 1630632 5688872 +1630424 5688880 1631040 5689264 1630632 5688872 1630504 5688864 +1631120 5689248 1630816 5688920 1630728 5688896 1631040 5689264 +1631040 5689264 1631152 5689248 1631120 5689248 1630816 5688920 +1631040 5689264 1630816 5688920 1630728 5688896 1630632 5688872 +1631040 5689264 1630424 5688880 1629328 5691224 1629392 5691296 +1630424 5688880 1629328 5691224 1631040 5689264 1630632 5688872 +1629328 5691224 1631040 5689264 1630424 5688880 1629240 5691152 +1629328 5691224 1629392 5691296 1631040 5689264 1629240 5691152 +1631040 5689264 1630632 5688872 1630424 5688880 1629240 5691152 +1630424 5688880 1629152 5691112 1629240 5691152 1631040 5689264 +1631120 5689248 1630904 5688944 1630816 5688920 1631040 5689264 +1631120 5689248 1630992 5688984 1630904 5688944 1631040 5689264 +1631120 5689248 1631080 5689008 1630992 5688984 1631040 5689264 +1630992 5688984 1630904 5688944 1631040 5689264 1631080 5689008 +1630816 5688920 1630728 5688896 1631040 5689264 1630904 5688944 +1631120 5689248 1631080 5689008 1631040 5689264 1631152 5689248 +1631120 5689248 1631152 5689072 1631080 5689008 1631040 5689264 +1631120 5689248 1631216 5689136 1631152 5689072 1631040 5689264 +1631080 5689008 1630992 5688984 1631040 5689264 1631152 5689072 +1631120 5689248 1631152 5689072 1631040 5689264 1631152 5689248 +1630904 5688944 1630816 5688920 1631040 5689264 1630992 5688984 +1629392 5691296 1629392 5691368 1630448 5692312 1631040 5689264 +1630424 5688880 1630952 5689256 1631040 5689264 1630632 5688872 +1631040 5689264 1630728 5688896 1630632 5688872 1630952 5689256 +1630424 5688880 1630952 5689256 1630632 5688872 1630504 5688864 +1631040 5689264 1630816 5688920 1630728 5688896 1630952 5689256 +1630728 5688896 1630632 5688872 1630952 5689256 1630816 5688920 +1631040 5689264 1630904 5688944 1630816 5688920 1630952 5689256 +1630816 5688920 1630728 5688896 1630952 5689256 1630904 5688944 +1630952 5689256 1629240 5691152 1631040 5689264 1630904 5688944 +1630632 5688872 1630424 5688880 1630952 5689256 1630728 5688896 +1630424 5688880 1629240 5691152 1630952 5689256 1630632 5688872 +1631040 5689264 1630952 5689256 1629240 5691152 1629328 5691224 +1631040 5689264 1630952 5689256 1629328 5691224 1629392 5691296 +1631040 5689264 1630952 5689256 1629392 5691296 1630448 5692312 +1631040 5689264 1630904 5688944 1630952 5689256 1629392 5691296 +1630952 5689256 1630424 5688880 1629240 5691152 1629328 5691224 +1630952 5689256 1629240 5691152 1629328 5691224 1629392 5691296 +1629240 5691152 1630952 5689256 1630424 5688880 1629152 5691112 +1631040 5689264 1630992 5688984 1630904 5688944 1630952 5689256 +1631040 5689264 1631080 5689008 1630992 5688984 1630952 5689256 +1631040 5689264 1631152 5689072 1631080 5689008 1630952 5689256 +1630904 5688944 1630816 5688920 1630952 5689256 1630992 5688984 +1631040 5689264 1631080 5689008 1630952 5689256 1629392 5691296 +1630992 5688984 1630904 5688944 1630952 5689256 1631080 5689008 +1630952 5689256 1630904 5689232 1629240 5691152 1629328 5691224 +1630952 5689256 1630424 5688880 1630904 5689232 1629328 5691224 +1630424 5688880 1630904 5689232 1630952 5689256 1630632 5688872 +1630424 5688880 1630904 5689232 1630632 5688872 1630504 5688864 +1630632 5688872 1630544 5688856 1630504 5688864 1630904 5689232 +1630952 5689256 1630728 5688896 1630632 5688872 1630904 5689232 +1630952 5689256 1630816 5688920 1630728 5688896 1630904 5689232 +1630952 5689256 1630904 5688944 1630816 5688920 1630904 5689232 +1630816 5688920 1630728 5688896 1630904 5689232 1630904 5688944 +1630952 5689256 1630992 5688984 1630904 5688944 1630904 5689232 +1630904 5688944 1630816 5688920 1630904 5689232 1630992 5688984 +1630728 5688896 1630632 5688872 1630904 5689232 1630816 5688920 +1630904 5689232 1629328 5691224 1630952 5689256 1630992 5688984 +1630904 5689232 1630728 5688896 1630632 5688872 1630504 5688864 +1630904 5689232 1630424 5688880 1629240 5691152 1629328 5691224 +1630424 5688880 1629240 5691152 1630904 5689232 1630504 5688864 +1630952 5689256 1630904 5689232 1629328 5691224 1629392 5691296 +1630952 5689256 1630904 5689232 1629392 5691296 1631040 5689264 +1630904 5689232 1629240 5691152 1629328 5691224 1629392 5691296 +1630952 5689256 1630992 5688984 1630904 5689232 1629392 5691296 +1629240 5691152 1630904 5689232 1630424 5688880 1629152 5691112 +1630952 5689256 1631080 5689008 1630992 5688984 1630904 5689232 +1630904 5689232 1630816 5689208 1629240 5691152 1629328 5691224 +1630904 5689232 1630816 5689208 1629328 5691224 1629392 5691296 +1630816 5689208 1629240 5691152 1629328 5691224 1629392 5691296 +1630904 5689232 1630424 5688880 1630816 5689208 1629392 5691296 +1630424 5688880 1630816 5689208 1630904 5689232 1630504 5688864 +1630904 5689232 1630632 5688872 1630504 5688864 1630816 5689208 +1630632 5688872 1630544 5688856 1630504 5688864 1630816 5689208 +1630904 5689232 1630728 5688896 1630632 5688872 1630816 5689208 +1630632 5688872 1630504 5688864 1630816 5689208 1630728 5688896 +1630904 5689232 1630816 5688920 1630728 5688896 1630816 5689208 +1630904 5689232 1630904 5688944 1630816 5688920 1630816 5689208 +1630904 5689232 1630992 5688984 1630904 5688944 1630816 5689208 +1630904 5688944 1630816 5688920 1630816 5689208 1630992 5688984 +1630904 5689232 1630952 5689256 1630992 5688984 1630816 5689208 +1630816 5688920 1630728 5688896 1630816 5689208 1630904 5688944 +1630728 5688896 1630632 5688872 1630816 5689208 1630816 5688920 +1630816 5689208 1629392 5691296 1630904 5689232 1630992 5688984 +1630504 5688864 1630424 5688880 1630816 5689208 1630632 5688872 +1630816 5689208 1630424 5688880 1629240 5691152 1629328 5691224 +1630424 5688880 1629240 5691152 1630816 5689208 1630504 5688864 +1630904 5689232 1630816 5689208 1629392 5691296 1630952 5689256 +1629392 5691296 1631040 5689264 1630952 5689256 1630816 5689208 +1630816 5689208 1629328 5691224 1629392 5691296 1630952 5689256 +1630904 5689232 1630992 5688984 1630816 5689208 1630952 5689256 +1629240 5691152 1630816 5689208 1630424 5688880 1629152 5691112 +1630816 5689208 1630744 5689176 1629240 5691152 1629328 5691224 +1630816 5689208 1630744 5689176 1629328 5691224 1629392 5691296 +1630816 5689208 1630424 5688880 1630744 5689176 1629328 5691224 +1630424 5688880 1630744 5689176 1630816 5689208 1630504 5688864 +1630816 5689208 1630632 5688872 1630504 5688864 1630744 5689176 +1630632 5688872 1630544 5688856 1630504 5688864 1630744 5689176 +1630816 5689208 1630728 5688896 1630632 5688872 1630744 5689176 +1630816 5689208 1630816 5688920 1630728 5688896 1630744 5689176 +1630728 5688896 1630632 5688872 1630744 5689176 1630816 5688920 +1630816 5689208 1630904 5688944 1630816 5688920 1630744 5689176 +1630816 5689208 1630992 5688984 1630904 5688944 1630744 5689176 +1630816 5688920 1630728 5688896 1630744 5689176 1630904 5688944 +1630632 5688872 1630504 5688864 1630744 5689176 1630728 5688896 +1630744 5689176 1629328 5691224 1630816 5689208 1630904 5688944 +1630504 5688864 1630424 5688880 1630744 5689176 1630632 5688872 +1630744 5689176 1630424 5688880 1629240 5691152 1629328 5691224 +1630424 5688880 1629240 5691152 1630744 5689176 1630504 5688864 +1629240 5691152 1630744 5689176 1630424 5688880 1629152 5691112 +1629240 5691152 1629328 5691224 1630744 5689176 1629152 5691112 +1630744 5689176 1630504 5688864 1630424 5688880 1629152 5691112 +1630424 5688880 1629064 5691080 1629152 5691112 1630744 5689176 +1630424 5688880 1630648 5689136 1630744 5689176 1630504 5688864 +1630744 5689176 1630632 5688872 1630504 5688864 1630648 5689136 +1630632 5688872 1630544 5688856 1630504 5688864 1630648 5689136 +1630744 5689176 1630728 5688896 1630632 5688872 1630648 5689136 +1630744 5689176 1630816 5688920 1630728 5688896 1630648 5689136 +1630744 5689176 1630904 5688944 1630816 5688920 1630648 5689136 +1630728 5688896 1630632 5688872 1630648 5689136 1630816 5688920 +1630632 5688872 1630544 5688856 1630648 5689136 1630728 5688896 +1630648 5689136 1629152 5691112 1630744 5689176 1630816 5688920 +1630504 5688864 1630424 5688880 1630648 5689136 1630544 5688856 +1630424 5688880 1629152 5691112 1630648 5689136 1630504 5688864 +1629152 5691112 1630648 5689136 1630424 5688880 1629064 5691080 +1630744 5689176 1630648 5689136 1629152 5691112 1629240 5691152 +1630744 5689176 1630648 5689136 1629240 5691152 1629328 5691224 +1630744 5689176 1630648 5689136 1629328 5691224 1630816 5689208 +1630744 5689176 1630816 5688920 1630648 5689136 1629328 5691224 +1630648 5689136 1630424 5688880 1629152 5691112 1629240 5691152 +1630648 5689136 1629152 5691112 1629240 5691152 1629328 5691224 +1630648 5689136 1630608 5689104 1629152 5691112 1629240 5691152 +1630648 5689136 1630424 5688880 1630608 5689104 1629240 5691152 +1630424 5688880 1630608 5689104 1630648 5689136 1630504 5688864 +1630648 5689136 1630544 5688856 1630504 5688864 1630608 5689104 +1630648 5689136 1630632 5688872 1630544 5688856 1630608 5689104 +1630648 5689136 1630728 5688896 1630632 5688872 1630608 5689104 +1630632 5688872 1630544 5688856 1630608 5689104 1630728 5688896 +1630648 5689136 1630816 5688920 1630728 5688896 1630608 5689104 +1630544 5688856 1630504 5688864 1630608 5689104 1630632 5688872 +1630608 5689104 1629240 5691152 1630648 5689136 1630728 5688896 +1630504 5688864 1630424 5688880 1630608 5689104 1630544 5688856 +1630608 5689104 1630424 5688880 1629152 5691112 1629240 5691152 +1630424 5688880 1629152 5691112 1630608 5689104 1630504 5688864 +1629152 5691112 1630608 5689104 1630424 5688880 1629064 5691080 +1629152 5691112 1629240 5691152 1630608 5689104 1629064 5691080 +1630608 5689104 1630504 5688864 1630424 5688880 1629064 5691080 +1630424 5688880 1628976 5691056 1629064 5691080 1630608 5689104 +1630648 5689136 1630608 5689104 1629240 5691152 1629328 5691224 +1630424 5688880 1630520 5689048 1630608 5689104 1630504 5688864 +1630608 5689104 1630544 5688856 1630504 5688864 1630520 5689048 +1630608 5689104 1630632 5688872 1630544 5688856 1630520 5689048 +1630608 5689104 1630728 5688896 1630632 5688872 1630520 5689048 +1630544 5688856 1630504 5688864 1630520 5689048 1630632 5688872 +1630520 5689048 1629064 5691080 1630608 5689104 1630632 5688872 +1630504 5688864 1630424 5688880 1630520 5689048 1630544 5688856 +1630424 5688880 1629064 5691080 1630520 5689048 1630504 5688864 +1629064 5691080 1630520 5689048 1630424 5688880 1628976 5691056 +1629064 5691080 1630608 5689104 1630520 5689048 1628976 5691056 +1630520 5689048 1630504 5688864 1630424 5688880 1628976 5691056 +1630424 5688880 1628728 5691008 1628976 5691056 1630520 5689048 +1630608 5689104 1630520 5689048 1629064 5691080 1629152 5691112 +1630608 5689104 1630520 5689048 1629152 5691112 1629240 5691152 +1630608 5689104 1630520 5689048 1629240 5691152 1630648 5689136 +1630520 5689048 1629152 5691112 1629240 5691152 1630648 5689136 +1630608 5689104 1630632 5688872 1630520 5689048 1630648 5689136 +1630520 5689048 1628976 5691056 1629064 5691080 1629152 5691112 +1630520 5689048 1629064 5691080 1629152 5691112 1629240 5691152 +1629240 5691152 1629328 5691224 1630648 5689136 1630520 5689048 +1630424 5688880 1630496 5689024 1630520 5689048 1630504 5688864 +1630520 5689048 1630544 5688856 1630504 5688864 1630496 5689024 +1630520 5689048 1630632 5688872 1630544 5688856 1630496 5689024 +1630520 5689048 1630608 5689104 1630632 5688872 1630496 5689024 +1630544 5688856 1630504 5688864 1630496 5689024 1630632 5688872 +1630496 5689024 1628976 5691056 1630520 5689048 1630632 5688872 +1630504 5688864 1630424 5688880 1630496 5689024 1630544 5688856 +1630424 5688880 1628976 5691056 1630496 5689024 1630504 5688864 +1628976 5691056 1630496 5689024 1630424 5688880 1628728 5691008 +1630520 5689048 1630496 5689024 1628976 5691056 1629064 5691080 +1630520 5689048 1630496 5689024 1629064 5691080 1629152 5691112 +1630520 5689048 1630632 5688872 1630496 5689024 1629152 5691112 +1630496 5689024 1630424 5688880 1628976 5691056 1629064 5691080 +1630496 5689024 1628976 5691056 1629064 5691080 1629152 5691112 +1630520 5689048 1630496 5689024 1629152 5691112 1629240 5691152 +1630496 5689024 1630424 5688928 1628976 5691056 1629064 5691080 +1630496 5689024 1630424 5688880 1630424 5688928 1629064 5691080 +1630424 5688880 1630424 5688928 1630496 5689024 1630504 5688864 +1630496 5689024 1630544 5688856 1630504 5688864 1630424 5688928 +1630424 5688928 1629064 5691080 1630496 5689024 1630504 5688864 +1630424 5688928 1630424 5688880 1628976 5691056 1629064 5691080 +1630424 5688880 1628976 5691056 1630424 5688928 1630504 5688864 +1628976 5691056 1630424 5688928 1630424 5688880 1628728 5691008 +1628976 5691056 1629064 5691080 1630424 5688928 1628728 5691008 +1630424 5688928 1630504 5688864 1630424 5688880 1628728 5691008 +1628976 5691056 1630424 5688928 1628728 5691008 1628880 5691048 +1630424 5688880 1628640 5690984 1628728 5691008 1630424 5688928 +1630424 5688880 1628640 5690984 1630424 5688928 1630504 5688864 +1630424 5688880 1628112 5690744 1628640 5690984 1630424 5688928 +1628112 5690744 1628544 5690968 1628640 5690984 1630424 5688928 +1630424 5688880 1628112 5690744 1630424 5688928 1630504 5688864 +1630424 5688880 1628024 5690712 1628112 5690744 1630424 5688928 +1630424 5688880 1627944 5690696 1628024 5690712 1630424 5688928 +1630424 5688880 1628024 5690712 1630424 5688928 1630504 5688864 +1628112 5690744 1628640 5690984 1630424 5688928 1628024 5690712 +1628640 5690984 1628728 5691008 1630424 5688928 1628112 5690744 +1628728 5691008 1628976 5691056 1630424 5688928 1628640 5690984 +1630496 5689024 1630424 5688928 1629064 5691080 1629152 5691112 +1617256 5683416 1627152 5680768 1657088 5639464 1615256 5682392 +1657088 5639464 1657056 5639384 1615256 5682392 1627152 5680768 +1657056 5639384 1615160 5682368 1615256 5682392 1627152 5680768 +1657056 5639384 1615128 5682360 1615160 5682368 1627152 5680768 +1657056 5639384 1599875 5599875 1615128 5682360 1627152 5680768 +1615160 5682368 1615256 5682392 1627152 5680768 1615128 5682360 +1657056 5639384 1615128 5682360 1627152 5680768 1657088 5639464 +1617256 5683416 1627152 5680768 1615256 5682392 1615296 5682424 +1615256 5682392 1617256 5683416 1627152 5680768 1615160 5682368 +1617256 5683416 1625824 5687280 1627152 5680768 1615256 5682392 +1627152 5680768 1625824 5687280 1657088 5639464 1657056 5639384 +1625824 5687280 1627152 5680768 1617256 5683416 1625672 5687248 +1625824 5687280 1657088 5639464 1627152 5680768 1625672 5687248 +1627152 5680768 1615256 5682392 1617256 5683416 1625672 5687248 +1617256 5683416 1617344 5683488 1625672 5687248 1627152 5680768 +1617256 5683416 1617344 5683488 1627152 5680768 1615256 5682392 +1617344 5683488 1621048 5686008 1625672 5687248 1627152 5680768 +1617344 5683488 1617376 5683520 1621048 5686008 1627152 5680768 +1617376 5683520 1617424 5683592 1621048 5686008 1627152 5680768 +1617424 5683592 1620912 5685984 1621048 5686008 1627152 5680768 +1617424 5683592 1620912 5685984 1627152 5680768 1617376 5683520 +1617424 5683592 1620776 5686024 1620912 5685984 1627152 5680768 +1617376 5683520 1617424 5683592 1627152 5680768 1617344 5683488 +1621048 5686008 1625656 5687248 1625672 5687248 1627152 5680768 +1621048 5686008 1621112 5686056 1625656 5687248 1627152 5680768 +1625656 5687248 1625672 5687248 1627152 5680768 1621112 5686056 +1621112 5686056 1622296 5686800 1625656 5687248 1627152 5680768 +1622296 5686800 1625568 5687272 1625656 5687248 1627152 5680768 +1621112 5686056 1622296 5686800 1627152 5680768 1621048 5686008 +1625656 5687248 1625672 5687248 1627152 5680768 1625568 5687272 +1621112 5686056 1621744 5686536 1622296 5686800 1627152 5680768 +1622296 5686800 1622472 5686920 1625568 5687272 1627152 5680768 +1622296 5686800 1625568 5687272 1627152 5680768 1621112 5686056 +1621048 5686008 1621112 5686056 1627152 5680768 1620912 5685984 +1617344 5683488 1617376 5683520 1627152 5680768 1617256 5683416 +1625672 5687248 1625824 5687280 1627152 5680768 1625656 5687248 +1625824 5687280 1627152 5680768 1625672 5687248 1625736 5687272 +1657088 5639464 1627152 5680768 1625824 5687280 1630632 5688872 +1657088 5639464 1627152 5680768 1630632 5688872 1630728 5688896 +1657088 5639464 1627152 5680768 1630728 5688896 1630816 5688920 +1627152 5680768 1630632 5688872 1630728 5688896 1630816 5688920 +1657088 5639464 1627152 5680768 1630816 5688920 1630904 5688944 +1627152 5680768 1630728 5688896 1630816 5688920 1630904 5688944 +1657088 5639464 1627152 5680768 1630904 5688944 1631080 5689008 +1627152 5680768 1630816 5688920 1630904 5688944 1631080 5689008 +1657088 5639464 1627152 5680768 1631080 5689008 1663776 5646144 +1627152 5680768 1630904 5688944 1631080 5689008 1663776 5646144 +1630904 5688944 1630992 5688984 1631080 5689008 1627152 5680768 +1631080 5689008 1663880 5646248 1663776 5646144 1627152 5680768 +1631080 5689008 1663880 5646248 1627152 5680768 1630904 5688944 +1663776 5646144 1657088 5639464 1627152 5680768 1663880 5646248 +1631080 5689008 1631152 5689072 1663880 5646248 1627152 5680768 +1631080 5689008 1631152 5689072 1627152 5680768 1630904 5688944 +1663880 5646248 1663776 5646144 1627152 5680768 1631152 5689072 +1631152 5689072 1631216 5689136 1663880 5646248 1627152 5680768 +1663880 5646248 1663776 5646144 1627152 5680768 1631216 5689136 +1631152 5689072 1631216 5689136 1627152 5680768 1631080 5689008 +1631216 5689136 1663944 5646256 1663880 5646248 1627152 5680768 +1627152 5680768 1625672 5687248 1625824 5687280 1630632 5688872 +1657088 5639464 1657056 5639384 1627152 5680768 1663776 5646144 +1657088 5639464 1627152 5680768 1663776 5646144 1663688 5645984 +1627152 5680768 1625824 5687280 1630632 5688872 1630728 5688896 +1625824 5687280 1630544 5688856 1630632 5688872 1627152 5680768 +1625824 5687280 1630544 5688856 1627152 5680768 1625672 5687248 +1630632 5688872 1630728 5688896 1627152 5680768 1630544 5688856 +1625824 5687280 1625856 5687296 1630544 5688856 1627152 5680768 +1625824 5687280 1625856 5687296 1627152 5680768 1625672 5687248 +1625856 5687296 1625904 5687328 1630544 5688856 1627152 5680768 +1625856 5687296 1625904 5687328 1627152 5680768 1625824 5687280 +1625904 5687328 1625984 5687408 1630544 5688856 1627152 5680768 +1625904 5687328 1625984 5687408 1627152 5680768 1625856 5687296 +1625984 5687408 1630504 5688864 1630544 5688856 1627152 5680768 +1625984 5687408 1630424 5688880 1630504 5688864 1627152 5680768 +1625984 5687408 1626016 5687448 1630424 5688880 1627152 5680768 +1625984 5687408 1630424 5688880 1627152 5680768 1625904 5687328 +1630504 5688864 1630544 5688856 1627152 5680768 1630424 5688880 +1630544 5688856 1630632 5688872 1627152 5680768 1630504 5688864 +1615128 5682360 1626952 5680672 1657056 5639384 1599875 5599875 +1627152 5680768 1626952 5680672 1615128 5682360 1615160 5682368 +1627152 5680768 1626952 5680672 1615160 5682368 1615256 5682392 +1626952 5680672 1615128 5682360 1615160 5682368 1615256 5682392 +1657056 5639384 1626952 5680672 1627152 5680768 1657088 5639464 +1657056 5639384 1615128 5682360 1626952 5680672 1657088 5639464 +1627152 5680768 1626952 5680672 1615256 5682392 1617256 5683416 +1626952 5680672 1615160 5682368 1615256 5682392 1617256 5683416 +1615256 5682392 1615296 5682424 1617256 5683416 1626952 5680672 +1626952 5680672 1657056 5639384 1615128 5682360 1615160 5682368 +1627152 5680768 1626952 5680672 1617256 5683416 1617344 5683488 +1626952 5680672 1615256 5682392 1617256 5683416 1617344 5683488 +1627152 5680768 1657088 5639464 1626952 5680672 1617344 5683488 +1627152 5680768 1663776 5646144 1657088 5639464 1626952 5680672 +1627152 5680768 1626952 5680672 1617344 5683488 1617376 5683520 +1626952 5680672 1617256 5683416 1617344 5683488 1617376 5683520 +1627152 5680768 1657088 5639464 1626952 5680672 1617376 5683520 +1627152 5680768 1626952 5680672 1617376 5683520 1617424 5683592 +1627152 5680768 1626952 5680672 1617424 5683592 1620912 5685984 +1627152 5680768 1657088 5639464 1626952 5680672 1620912 5685984 +1617424 5683592 1620776 5686024 1620912 5685984 1626952 5680672 +1627152 5680768 1626952 5680672 1620912 5685984 1621048 5686008 +1626952 5680672 1617424 5683592 1620912 5685984 1621048 5686008 +1627152 5680768 1657088 5639464 1626952 5680672 1621048 5686008 +1626952 5680672 1617376 5683520 1617424 5683592 1620912 5685984 +1627152 5680768 1626952 5680672 1621048 5686008 1621112 5686056 +1627152 5680768 1657088 5639464 1626952 5680672 1621112 5686056 +1626952 5680672 1620912 5685984 1621048 5686008 1621112 5686056 +1627152 5680768 1626952 5680672 1621112 5686056 1622296 5686800 +1627152 5680768 1657088 5639464 1626952 5680672 1622296 5686800 +1621112 5686056 1621744 5686536 1622296 5686800 1626952 5680672 +1627152 5680768 1626952 5680672 1622296 5686800 1625568 5687272 +1627152 5680768 1657088 5639464 1626952 5680672 1625568 5687272 +1627152 5680768 1626952 5680672 1625568 5687272 1625656 5687248 +1627152 5680768 1657088 5639464 1626952 5680672 1625656 5687248 +1626952 5680672 1621112 5686056 1622296 5686800 1625568 5687272 +1627152 5680768 1626952 5680672 1625656 5687248 1625672 5687248 +1622296 5686800 1622472 5686920 1625568 5687272 1626952 5680672 +1626952 5680672 1622296 5686800 1625568 5687272 1625656 5687248 +1626952 5680672 1621048 5686008 1621112 5686056 1622296 5686800 +1626952 5680672 1617344 5683488 1617376 5683520 1617424 5683592 +1657056 5639384 1626744 5680528 1626952 5680672 1657088 5639464 +1615128 5682360 1626744 5680528 1657056 5639384 1599875 5599875 +1626952 5680672 1627152 5680768 1657088 5639464 1626744 5680528 +1657088 5639464 1657056 5639384 1626744 5680528 1627152 5680768 +1626952 5680672 1626744 5680528 1615128 5682360 1615160 5682368 +1626952 5680672 1626744 5680528 1615160 5682368 1615256 5682392 +1626952 5680672 1626744 5680528 1615256 5682392 1617256 5683416 +1626744 5680528 1615160 5682368 1615256 5682392 1617256 5683416 +1615256 5682392 1615296 5682424 1617256 5683416 1626744 5680528 +1626952 5680672 1626744 5680528 1617256 5683416 1617344 5683488 +1626744 5680528 1615256 5682392 1617256 5683416 1617344 5683488 +1626952 5680672 1626744 5680528 1617344 5683488 1617376 5683520 +1626744 5680528 1617256 5683416 1617344 5683488 1617376 5683520 +1627152 5680768 1663776 5646144 1657088 5639464 1626744 5680528 +1657056 5639384 1599875 5599875 1626744 5680528 1657088 5639464 +1615128 5682360 1615160 5682368 1626744 5680528 1599875 5599875 +1626744 5680528 1617376 5683520 1626952 5680672 1627152 5680768 +1657056 5639384 1657088 5639296 1599875 5599875 1626744 5680528 +1615128 5682360 1626744 5680528 1599875 5599875 1601464 5680984 +1626952 5680672 1626744 5680528 1617376 5683520 1617424 5683592 +1626744 5680528 1617344 5683488 1617376 5683520 1617424 5683592 +1626952 5680672 1626744 5680528 1617424 5683592 1620912 5685984 +1626952 5680672 1626744 5680528 1620912 5685984 1621048 5686008 +1617424 5683592 1620776 5686024 1620912 5685984 1626744 5680528 +1626952 5680672 1626744 5680528 1621048 5686008 1621112 5686056 +1626744 5680528 1620912 5685984 1621048 5686008 1621112 5686056 +1626744 5680528 1617424 5683592 1620912 5685984 1621048 5686008 +1626952 5680672 1627152 5680768 1626744 5680528 1621112 5686056 +1626952 5680672 1626744 5680528 1621112 5686056 1622296 5686800 +1626744 5680528 1621048 5686008 1621112 5686056 1622296 5686800 +1626952 5680672 1626744 5680528 1622296 5686800 1625568 5687272 +1626952 5680672 1627152 5680768 1626744 5680528 1625568 5687272 +1621112 5686056 1621744 5686536 1622296 5686800 1626744 5680528 +1622296 5686800 1622472 5686920 1625568 5687272 1626744 5680528 +1626952 5680672 1626744 5680528 1625568 5687272 1625656 5687248 +1626952 5680672 1626744 5680528 1625656 5687248 1627152 5680768 +1626744 5680528 1622296 5686800 1625568 5687272 1625656 5687248 +1626952 5680672 1627152 5680768 1626744 5680528 1625656 5687248 +1626744 5680528 1621112 5686056 1622296 5686800 1625568 5687272 +1626744 5680528 1617376 5683520 1617424 5683592 1620912 5685984 +1626744 5680528 1615128 5682360 1615160 5682368 1615256 5682392 +1599875 5599875 1626632 5680392 1626744 5680528 1657056 5639384 +1626632 5680392 1615128 5682360 1626744 5680528 1657056 5639384 +1626744 5680528 1657088 5639464 1657056 5639384 1626632 5680392 +1657056 5639384 1599875 5599875 1626632 5680392 1657088 5639464 +1626744 5680528 1627152 5680768 1657088 5639464 1626632 5680392 +1626744 5680528 1626952 5680672 1627152 5680768 1626632 5680392 +1626744 5680528 1626952 5680672 1626632 5680392 1615128 5682360 +1627152 5680768 1663776 5646144 1657088 5639464 1626632 5680392 +1627152 5680768 1657088 5639464 1626632 5680392 1626952 5680672 +1657088 5639464 1657056 5639384 1626632 5680392 1627152 5680768 +1626744 5680528 1626632 5680392 1615128 5682360 1615160 5682368 +1626744 5680528 1626952 5680672 1626632 5680392 1615160 5682368 +1626632 5680392 1599875 5599875 1615128 5682360 1615160 5682368 +1599875 5599875 1626632 5680392 1657056 5639384 1657088 5639296 +1615128 5682360 1626632 5680392 1599875 5599875 1601464 5680984 +1599875 5599875 1615128 5682360 1626632 5680392 1657056 5639384 +1626744 5680528 1626632 5680392 1615160 5682368 1615256 5682392 +1626744 5680528 1626632 5680392 1615256 5682392 1617256 5683416 +1626744 5680528 1626632 5680392 1617256 5683416 1617344 5683488 +1626632 5680392 1615256 5682392 1617256 5683416 1617344 5683488 +1615256 5682392 1615296 5682424 1617256 5683416 1626632 5680392 +1626744 5680528 1626632 5680392 1617344 5683488 1617376 5683520 +1626632 5680392 1617256 5683416 1617344 5683488 1617376 5683520 +1626744 5680528 1626952 5680672 1626632 5680392 1617376 5683520 +1626744 5680528 1626632 5680392 1617376 5683520 1617424 5683592 +1626632 5680392 1617344 5683488 1617376 5683520 1617424 5683592 +1626744 5680528 1626952 5680672 1626632 5680392 1617424 5683592 +1626632 5680392 1615128 5682360 1615160 5682368 1615256 5682392 +1626632 5680392 1615160 5682368 1615256 5682392 1617256 5683416 +1626744 5680528 1626632 5680392 1617424 5683592 1620912 5685984 +1626744 5680528 1626952 5680672 1626632 5680392 1620912 5685984 +1626632 5680392 1617376 5683520 1617424 5683592 1620912 5685984 +1617424 5683592 1620776 5686024 1620912 5685984 1626632 5680392 +1626744 5680528 1626632 5680392 1620912 5685984 1621048 5686008 +1626744 5680528 1626632 5680392 1621048 5686008 1621112 5686056 +1626744 5680528 1626952 5680672 1626632 5680392 1621112 5686056 +1626744 5680528 1626632 5680392 1621112 5686056 1622296 5686800 +1626632 5680392 1620912 5685984 1621048 5686008 1621112 5686056 +1626632 5680392 1617424 5683592 1620912 5685984 1621048 5686008 +1626632 5680392 1626592 5680320 1615128 5682360 1615160 5682368 +1626632 5680392 1599875 5599875 1626592 5680320 1615160 5682368 +1626592 5680320 1599875 5599875 1615128 5682360 1615160 5682368 +1626632 5680392 1626592 5680320 1615160 5682368 1615256 5682392 +1626632 5680392 1599875 5599875 1626592 5680320 1615256 5682392 +1626592 5680320 1615128 5682360 1615160 5682368 1615256 5682392 +1626632 5680392 1626592 5680320 1615256 5682392 1617256 5683416 +1626632 5680392 1626592 5680320 1617256 5683416 1617344 5683488 +1626632 5680392 1626592 5680320 1617344 5683488 1617376 5683520 +1626592 5680320 1617256 5683416 1617344 5683488 1617376 5683520 +1615256 5682392 1615296 5682424 1617256 5683416 1626592 5680320 +1626632 5680392 1626592 5680320 1617376 5683520 1617424 5683592 +1626592 5680320 1617344 5683488 1617376 5683520 1617424 5683592 +1626592 5680320 1615160 5682368 1615256 5682392 1617256 5683416 +1626632 5680392 1626592 5680320 1617424 5683592 1620912 5685984 +1626592 5680320 1617376 5683520 1617424 5683592 1620912 5685984 +1626632 5680392 1599875 5599875 1626592 5680320 1620912 5685984 +1617424 5683592 1620776 5686024 1620912 5685984 1626592 5680320 +1626592 5680320 1615256 5682392 1617256 5683416 1617344 5683488 +1615128 5682360 1626592 5680320 1599875 5599875 1601464 5680984 +1599875 5599875 1626592 5680320 1626632 5680392 1657056 5639384 +1626632 5680392 1657088 5639464 1657056 5639384 1626592 5680320 +1599875 5599875 1615128 5682360 1626592 5680320 1657056 5639384 +1626592 5680320 1620912 5685984 1626632 5680392 1657088 5639464 +1626632 5680392 1627152 5680768 1657088 5639464 1626592 5680320 +1657088 5639464 1657056 5639384 1626592 5680320 1627152 5680768 +1627152 5680768 1663776 5646144 1657088 5639464 1626592 5680320 +1657088 5639464 1657056 5639384 1626592 5680320 1663776 5646144 +1627152 5680768 1663776 5646144 1626592 5680320 1626632 5680392 +1627152 5680768 1663880 5646248 1663776 5646144 1626592 5680320 +1626632 5680392 1627152 5680768 1626592 5680320 1620912 5685984 +1626632 5680392 1626952 5680672 1627152 5680768 1626592 5680320 +1626632 5680392 1626744 5680528 1626952 5680672 1626592 5680320 +1627152 5680768 1663776 5646144 1626592 5680320 1626952 5680672 +1626632 5680392 1626744 5680528 1626592 5680320 1620912 5685984 +1663776 5646144 1663688 5645984 1657088 5639464 1626592 5680320 +1599875 5599875 1626592 5680320 1657056 5639384 1657088 5639296 +1657056 5639384 1599875 5599875 1626592 5680320 1657088 5639464 +1626632 5680392 1626592 5680320 1620912 5685984 1621048 5686008 +1626592 5680320 1617424 5683592 1620912 5685984 1621048 5686008 +1626632 5680392 1626744 5680528 1626592 5680320 1621048 5686008 +1626632 5680392 1626592 5680320 1621048 5686008 1621112 5686056 +1626952 5680672 1627152 5680768 1626592 5680320 1626744 5680528 +1626592 5680320 1626576 5680264 1599875 5599875 1615128 5682360 +1626576 5680264 1657056 5639384 1599875 5599875 1615128 5682360 +1626592 5680320 1657056 5639384 1626576 5680264 1615128 5682360 +1626592 5680320 1626576 5680264 1615128 5682360 1615160 5682368 +1626592 5680320 1657056 5639384 1626576 5680264 1615160 5682368 +1626576 5680264 1599875 5599875 1615128 5682360 1615160 5682368 +1626592 5680320 1626576 5680264 1615160 5682368 1615256 5682392 +1626576 5680264 1615128 5682360 1615160 5682368 1615256 5682392 +1626592 5680320 1626576 5680264 1615256 5682392 1617256 5683416 +1615256 5682392 1615296 5682424 1617256 5683416 1626576 5680264 +1626592 5680320 1657056 5639384 1626576 5680264 1617256 5683416 +1626592 5680320 1626576 5680264 1617256 5683416 1617344 5683488 +1626592 5680320 1626576 5680264 1617344 5683488 1617376 5683520 +1626592 5680320 1626576 5680264 1617376 5683520 1617424 5683592 +1626576 5680264 1617344 5683488 1617376 5683520 1617424 5683592 +1626592 5680320 1626576 5680264 1617424 5683592 1620912 5685984 +1626576 5680264 1617376 5683520 1617424 5683592 1620912 5685984 +1626592 5680320 1657056 5639384 1626576 5680264 1620912 5685984 +1626592 5680320 1626576 5680264 1620912 5685984 1621048 5686008 +1626576 5680264 1617424 5683592 1620912 5685984 1621048 5686008 +1626592 5680320 1657056 5639384 1626576 5680264 1621048 5686008 +1626576 5680264 1615256 5682392 1617256 5683416 1617344 5683488 +1617424 5683592 1620776 5686024 1620912 5685984 1626576 5680264 +1599875 5599875 1626576 5680264 1657056 5639384 1657088 5639296 +1599875 5599875 1601464 5680984 1615128 5682360 1626576 5680264 +1657056 5639384 1626576 5680264 1626592 5680320 1657088 5639464 +1626592 5680320 1663776 5646144 1657088 5639464 1626576 5680264 +1657056 5639384 1599875 5599875 1626576 5680264 1657088 5639464 +1626576 5680264 1621048 5686008 1626592 5680320 1663776 5646144 +1626592 5680320 1627152 5680768 1663776 5646144 1626576 5680264 +1663776 5646144 1657088 5639464 1626576 5680264 1627152 5680768 +1626592 5680320 1626952 5680672 1627152 5680768 1626576 5680264 +1626592 5680320 1626952 5680672 1626576 5680264 1621048 5686008 +1627152 5680768 1663880 5646248 1663776 5646144 1626576 5680264 +1627152 5680768 1663776 5646144 1626576 5680264 1626952 5680672 +1663776 5646144 1663688 5645984 1657088 5639464 1626576 5680264 +1657088 5639464 1657056 5639384 1626576 5680264 1663776 5646144 +1626576 5680264 1617256 5683416 1617344 5683488 1617376 5683520 +1626576 5680264 1615160 5682368 1615256 5682392 1617256 5683416 +1626592 5680320 1626576 5680264 1621048 5686008 1626632 5680392 +1626592 5680320 1626744 5680528 1626952 5680672 1626576 5680264 +1626592 5680320 1626632 5680392 1626744 5680528 1626576 5680264 +1626744 5680528 1626952 5680672 1626576 5680264 1626632 5680392 +1626592 5680320 1626632 5680392 1626576 5680264 1621048 5686008 +1626952 5680672 1627152 5680768 1626576 5680264 1626744 5680528 +1626576 5680264 1626632 5680168 1599875 5599875 1615128 5682360 +1626576 5680264 1657056 5639384 1626632 5680168 1615128 5682360 +1657056 5639384 1626632 5680168 1626576 5680264 1657088 5639464 +1626632 5680168 1615128 5682360 1626576 5680264 1657088 5639464 +1626632 5680168 1657056 5639384 1599875 5599875 1615128 5682360 +1657056 5639384 1599875 5599875 1626632 5680168 1657088 5639464 +1626576 5680264 1626632 5680168 1615128 5682360 1615160 5682368 +1626576 5680264 1657088 5639464 1626632 5680168 1615160 5682368 +1626576 5680264 1626632 5680168 1615160 5682368 1615256 5682392 +1626576 5680264 1657088 5639464 1626632 5680168 1615256 5682392 +1626632 5680168 1599875 5599875 1615128 5682360 1615160 5682368 +1626632 5680168 1615128 5682360 1615160 5682368 1615256 5682392 +1626576 5680264 1663776 5646144 1657088 5639464 1626632 5680168 +1626576 5680264 1627152 5680768 1663776 5646144 1626632 5680168 +1663776 5646144 1657088 5639464 1626632 5680168 1627152 5680768 +1626576 5680264 1627152 5680768 1626632 5680168 1615256 5682392 +1627152 5680768 1663880 5646248 1663776 5646144 1626632 5680168 +1626576 5680264 1626952 5680672 1627152 5680768 1626632 5680168 +1627152 5680768 1663776 5646144 1626632 5680168 1626952 5680672 +1626576 5680264 1626952 5680672 1626632 5680168 1615256 5682392 +1657088 5639464 1657056 5639384 1626632 5680168 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1626632 5680168 +1599875 5599875 1626632 5680168 1657056 5639384 1657088 5639296 +1599875 5599875 1601464 5680984 1615128 5682360 1626632 5680168 +1626576 5680264 1626632 5680168 1615256 5682392 1617256 5683416 +1615256 5682392 1615296 5682424 1617256 5683416 1626632 5680168 +1626576 5680264 1626952 5680672 1626632 5680168 1617256 5683416 +1626576 5680264 1626632 5680168 1617256 5683416 1617344 5683488 +1626632 5680168 1615160 5682368 1615256 5682392 1617256 5683416 +1626576 5680264 1626744 5680528 1626952 5680672 1626632 5680168 +1626576 5680264 1626632 5680392 1626744 5680528 1626632 5680168 +1626576 5680264 1626592 5680320 1626632 5680392 1626632 5680168 +1626576 5680264 1626592 5680320 1626632 5680168 1617256 5683416 +1626952 5680672 1627152 5680768 1626632 5680168 1626744 5680528 +1626744 5680528 1626952 5680672 1626632 5680168 1626632 5680392 +1626632 5680392 1626744 5680528 1626632 5680168 1626592 5680320 +1626632 5680168 1626640 5680136 1599875 5599875 1615128 5682360 +1626640 5680136 1657056 5639384 1599875 5599875 1615128 5682360 +1626632 5680168 1626640 5680136 1615128 5682360 1615160 5682368 +1626632 5680168 1626640 5680136 1615160 5682368 1615256 5682392 +1626640 5680136 1599875 5599875 1615128 5682360 1615160 5682368 +1657056 5639384 1626640 5680136 1626632 5680168 1657088 5639464 +1626632 5680168 1663776 5646144 1657088 5639464 1626640 5680136 +1626632 5680168 1627152 5680768 1663776 5646144 1626640 5680136 +1626632 5680168 1626952 5680672 1627152 5680768 1626640 5680136 +1627152 5680768 1663880 5646248 1663776 5646144 1626640 5680136 +1627152 5680768 1631216 5689136 1663880 5646248 1626640 5680136 +1626632 5680168 1626744 5680528 1626952 5680672 1626640 5680136 +1626952 5680672 1627152 5680768 1626640 5680136 1626744 5680528 +1626632 5680168 1626632 5680392 1626744 5680528 1626640 5680136 +1663776 5646144 1663688 5645984 1657088 5639464 1626640 5680136 +1626632 5680168 1626744 5680528 1626640 5680136 1615256 5682392 +1626632 5680168 1626640 5680136 1615256 5682392 1617256 5683416 +1615256 5682392 1615296 5682424 1617256 5683416 1626640 5680136 +1626632 5680168 1626640 5680136 1617256 5683416 1626576 5680264 +1626640 5680136 1615256 5682392 1617256 5683416 1626576 5680264 +1617256 5683416 1617344 5683488 1626576 5680264 1626640 5680136 +1626632 5680168 1626744 5680528 1626640 5680136 1626576 5680264 +1626640 5680136 1615160 5682368 1615256 5682392 1617256 5683416 +1657088 5639464 1657056 5639384 1626640 5680136 1663776 5646144 +1657056 5639384 1599875 5599875 1626640 5680136 1657088 5639464 +1627152 5680768 1663880 5646248 1626640 5680136 1626952 5680672 +1599875 5599875 1626640 5680136 1657056 5639384 1657088 5639296 +1599875 5599875 1601464 5680984 1615128 5682360 1626640 5680136 +1626640 5680136 1615128 5682360 1615160 5682368 1615256 5682392 +1663776 5646144 1657088 5639464 1626640 5680136 1663880 5646248 +1626640 5680136 1626680 5680056 1599875 5599875 1615128 5682360 +1626680 5680056 1657056 5639384 1599875 5599875 1615128 5682360 +1626640 5680136 1657056 5639384 1626680 5680056 1615128 5682360 +1626640 5680136 1626680 5680056 1615128 5682360 1615160 5682368 +1626680 5680056 1599875 5599875 1615128 5682360 1615160 5682368 +1626640 5680136 1657056 5639384 1626680 5680056 1615160 5682368 +1657056 5639384 1626680 5680056 1626640 5680136 1657088 5639464 +1626680 5680056 1615160 5682368 1626640 5680136 1657088 5639464 +1626640 5680136 1663776 5646144 1657088 5639464 1626680 5680056 +1657088 5639464 1657056 5639384 1626680 5680056 1663776 5646144 +1626640 5680136 1663776 5646144 1626680 5680056 1615160 5682368 +1663776 5646144 1663688 5645984 1657088 5639464 1626680 5680056 +1657056 5639384 1599875 5599875 1626680 5680056 1657088 5639464 +1599875 5599875 1626680 5680056 1657056 5639384 1657088 5639296 +1599875 5599875 1601464 5680984 1615128 5682360 1626680 5680056 +1626640 5680136 1626680 5680056 1615160 5682368 1615256 5682392 +1626640 5680136 1663776 5646144 1626680 5680056 1615256 5682392 +1626680 5680056 1615128 5682360 1615160 5682368 1615256 5682392 +1626640 5680136 1626680 5680056 1615256 5682392 1617256 5683416 +1615256 5682392 1615296 5682424 1617256 5683416 1626680 5680056 +1626640 5680136 1626680 5680056 1617256 5683416 1626576 5680264 +1626640 5680136 1663776 5646144 1626680 5680056 1617256 5683416 +1626680 5680056 1615160 5682368 1615256 5682392 1617256 5683416 +1626640 5680136 1663880 5646248 1663776 5646144 1626680 5680056 +1626640 5680136 1627152 5680768 1663880 5646248 1626680 5680056 +1627152 5680768 1631216 5689136 1663880 5646248 1626680 5680056 +1626640 5680136 1627152 5680768 1626680 5680056 1617256 5683416 +1663776 5646144 1657088 5639464 1626680 5680056 1663880 5646248 +1626640 5680136 1626952 5680672 1627152 5680768 1626680 5680056 +1626640 5680136 1626744 5680528 1626952 5680672 1626680 5680056 +1626952 5680672 1627152 5680768 1626680 5680056 1626744 5680528 +1627152 5680768 1663880 5646248 1626680 5680056 1626952 5680672 +1626640 5680136 1626632 5680168 1626744 5680528 1626680 5680056 +1626744 5680528 1626952 5680672 1626680 5680056 1626632 5680168 +1626640 5680136 1626632 5680168 1626680 5680056 1617256 5683416 +1626632 5680168 1626632 5680392 1626744 5680528 1626680 5680056 +1663880 5646248 1663776 5646144 1626680 5680056 1627152 5680768 +1626680 5680056 1626688 5680016 1599875 5599875 1615128 5682360 +1626680 5680056 1626688 5680016 1615128 5682360 1615160 5682368 +1626688 5680016 1599875 5599875 1615128 5682360 1615160 5682368 +1626680 5680056 1657056 5639384 1626688 5680016 1615160 5682368 +1626680 5680056 1626688 5680016 1615160 5682368 1615256 5682392 +1626688 5680016 1615128 5682360 1615160 5682368 1615256 5682392 +1626680 5680056 1657056 5639384 1626688 5680016 1615256 5682392 +1626680 5680056 1626688 5680016 1615256 5682392 1617256 5683416 +1615256 5682392 1615296 5682424 1617256 5683416 1626688 5680016 +1626688 5680016 1615160 5682368 1615256 5682392 1617256 5683416 +1626680 5680056 1657056 5639384 1626688 5680016 1617256 5683416 +1626688 5680016 1657056 5639384 1599875 5599875 1615128 5682360 +1657056 5639384 1626688 5680016 1626680 5680056 1657088 5639464 +1626680 5680056 1663776 5646144 1657088 5639464 1626688 5680016 +1626688 5680016 1617256 5683416 1626680 5680056 1663776 5646144 +1657088 5639464 1657056 5639384 1626688 5680016 1663776 5646144 +1663776 5646144 1663688 5645984 1657088 5639464 1626688 5680016 +1626680 5680056 1663880 5646248 1663776 5646144 1626688 5680016 +1626680 5680056 1663880 5646248 1626688 5680016 1617256 5683416 +1657056 5639384 1599875 5599875 1626688 5680016 1657088 5639464 +1663776 5646144 1657088 5639464 1626688 5680016 1663880 5646248 +1599875 5599875 1626688 5680016 1657056 5639384 1657088 5639296 +1599875 5599875 1601464 5680984 1615128 5682360 1626688 5680016 +1626680 5680056 1626688 5680016 1617256 5683416 1626640 5680136 +1626688 5680016 1615256 5682392 1617256 5683416 1626640 5680136 +1617256 5683416 1626576 5680264 1626640 5680136 1626688 5680016 +1626640 5680136 1626680 5680056 1626688 5680016 1626576 5680264 +1617256 5683416 1626576 5680264 1626688 5680016 1615256 5682392 +1617256 5683416 1617344 5683488 1626576 5680264 1626688 5680016 +1626680 5680056 1663880 5646248 1626688 5680016 1626640 5680136 +1626576 5680264 1626632 5680168 1626640 5680136 1626688 5680016 +1626680 5680056 1627152 5680768 1663880 5646248 1626688 5680016 +1626680 5680056 1626952 5680672 1627152 5680768 1626688 5680016 +1626680 5680056 1626744 5680528 1626952 5680672 1626688 5680016 +1627152 5680768 1631216 5689136 1663880 5646248 1626688 5680016 +1626680 5680056 1626952 5680672 1626688 5680016 1626640 5680136 +1627152 5680768 1663880 5646248 1626688 5680016 1626952 5680672 +1663880 5646248 1663776 5646144 1626688 5680016 1627152 5680768 +1663880 5646248 1626704 5680040 1627152 5680768 1631216 5689136 +1627152 5680768 1626704 5680040 1626688 5680016 1626952 5680672 +1627152 5680768 1663880 5646248 1626704 5680040 1626952 5680672 +1626688 5680016 1626680 5680056 1626952 5680672 1626704 5680040 +1626680 5680056 1626744 5680528 1626952 5680672 1626704 5680040 +1626680 5680056 1626632 5680168 1626744 5680528 1626704 5680040 +1626952 5680672 1627152 5680768 1626704 5680040 1626744 5680528 +1626680 5680056 1626632 5680168 1626704 5680040 1626688 5680016 +1626680 5680056 1626640 5680136 1626632 5680168 1626704 5680040 +1626632 5680168 1626744 5680528 1626704 5680040 1626640 5680136 +1626680 5680056 1626640 5680136 1626704 5680040 1626688 5680016 +1626704 5680040 1663880 5646248 1626688 5680016 1626680 5680056 +1626632 5680168 1626632 5680392 1626744 5680528 1626704 5680040 +1626744 5680528 1626952 5680672 1626704 5680040 1626632 5680168 +1626688 5680016 1626704 5680040 1663880 5646248 1663776 5646144 +1627152 5680768 1626744 5680024 1626704 5680040 1626952 5680672 +1626704 5680040 1626744 5680528 1626952 5680672 1626744 5680024 +1663880 5646248 1626744 5680024 1627152 5680768 1631216 5689136 +1626704 5680040 1626632 5680168 1626744 5680528 1626744 5680024 +1626704 5680040 1626640 5680136 1626632 5680168 1626744 5680024 +1626744 5680528 1626952 5680672 1626744 5680024 1626632 5680168 +1626704 5680040 1626680 5680056 1626640 5680136 1626744 5680024 +1626632 5680168 1626632 5680392 1626744 5680528 1626744 5680024 +1626744 5680024 1663880 5646248 1626704 5680040 1626640 5680136 +1626632 5680168 1626744 5680528 1626744 5680024 1626640 5680136 +1626952 5680672 1627152 5680768 1626744 5680024 1626744 5680528 +1626704 5680040 1626744 5680024 1663880 5646248 1626688 5680016 +1626744 5680024 1627152 5680768 1663880 5646248 1626688 5680016 +1626704 5680040 1626640 5680136 1626744 5680024 1626688 5680016 +1663880 5646248 1663776 5646144 1626688 5680016 1626744 5680024 +1626688 5680016 1626704 5680040 1626744 5680024 1663776 5646144 +1663880 5646248 1663776 5646144 1626744 5680024 1627152 5680768 +1663776 5646144 1657088 5639464 1626688 5680016 1626744 5680024 +1663776 5646144 1657088 5639464 1626744 5680024 1663880 5646248 +1657088 5639464 1657056 5639384 1626688 5680016 1626744 5680024 +1626688 5680016 1626704 5680040 1626744 5680024 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1626744 5680024 +1627152 5680768 1663880 5646248 1626744 5680024 1626952 5680672 +1663880 5646248 1627096 5680104 1627152 5680768 1631216 5689136 +1627152 5680768 1631152 5689072 1631216 5689136 1627096 5680104 +1631216 5689136 1663880 5646248 1627096 5680104 1631152 5689072 +1627152 5680768 1631080 5689008 1631152 5689072 1627096 5680104 +1663880 5646248 1627096 5680104 1631216 5689136 1663944 5646256 +1663880 5646248 1626744 5680024 1627096 5680104 1631216 5689136 +1626744 5680024 1627096 5680104 1663880 5646248 1663776 5646144 +1627096 5680104 1631216 5689136 1663880 5646248 1663776 5646144 +1626744 5680024 1627096 5680104 1663776 5646144 1657088 5639464 +1626744 5680024 1627096 5680104 1657088 5639464 1626688 5680016 +1663776 5646144 1663688 5645984 1657088 5639464 1627096 5680104 +1627096 5680104 1663880 5646248 1663776 5646144 1657088 5639464 +1626744 5680024 1627152 5680768 1627096 5680104 1657088 5639464 +1627096 5680104 1626744 5680024 1627152 5680768 1631152 5689072 +1627152 5680768 1627096 5680104 1626744 5680024 1626952 5680672 +1627096 5680104 1657088 5639464 1626744 5680024 1626952 5680672 +1627152 5680768 1631152 5689072 1627096 5680104 1626952 5680672 +1626744 5680024 1626744 5680528 1626952 5680672 1627096 5680104 +1626744 5680024 1626632 5680168 1626744 5680528 1627096 5680104 +1626632 5680168 1626632 5680392 1626744 5680528 1627096 5680104 +1626952 5680672 1627152 5680768 1627096 5680104 1626744 5680528 +1626632 5680168 1626632 5680392 1627096 5680104 1626744 5680024 +1626632 5680168 1626592 5680320 1626632 5680392 1627096 5680104 +1626744 5680528 1626952 5680672 1627096 5680104 1626632 5680392 +1626744 5680024 1626632 5680168 1627096 5680104 1657088 5639464 +1626744 5680024 1626640 5680136 1626632 5680168 1627096 5680104 +1631216 5689136 1627776 5680360 1627096 5680104 1631152 5689072 +1627096 5680104 1627152 5680768 1631152 5689072 1627776 5680360 +1631152 5689072 1631216 5689136 1627776 5680360 1627152 5680768 +1627152 5680768 1631080 5689008 1631152 5689072 1627776 5680360 +1627152 5680768 1630904 5688944 1631080 5689008 1627776 5680360 +1627152 5680768 1630816 5688920 1630904 5688944 1627776 5680360 +1627152 5680768 1630728 5688896 1630816 5688920 1627776 5680360 +1627152 5680768 1630632 5688872 1630728 5688896 1627776 5680360 +1630728 5688896 1630816 5688920 1627776 5680360 1630632 5688872 +1630816 5688920 1630904 5688944 1627776 5680360 1630728 5688896 +1630904 5688944 1631080 5689008 1627776 5680360 1630816 5688920 +1630904 5688944 1630992 5688984 1631080 5689008 1627776 5680360 +1631152 5689072 1631216 5689136 1627776 5680360 1631080 5689008 +1631080 5689008 1631152 5689072 1627776 5680360 1630904 5688944 +1627152 5680768 1630632 5688872 1627776 5680360 1627096 5680104 +1663880 5646248 1627776 5680360 1631216 5689136 1663944 5646256 +1627096 5680104 1627776 5680360 1663880 5646248 1663776 5646144 +1627776 5680360 1631216 5689136 1663880 5646248 1663776 5646144 +1627096 5680104 1627776 5680360 1663776 5646144 1657088 5639464 +1627776 5680360 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1627776 5680360 +1627096 5680104 1627776 5680360 1657088 5639464 1626744 5680024 +1627776 5680360 1657088 5639464 1627096 5680104 1627152 5680768 +1631216 5689136 1663880 5646248 1627776 5680360 1631152 5689072 +1627096 5680104 1626952 5680672 1627152 5680768 1627776 5680360 +1627152 5680768 1630544 5688856 1630632 5688872 1627776 5680360 +1630632 5688872 1630728 5688896 1627776 5680360 1630544 5688856 +1627152 5680768 1630544 5688856 1627776 5680360 1627096 5680104 +1627152 5680768 1630504 5688864 1630544 5688856 1627776 5680360 +1663880 5646248 1628008 5680480 1631216 5689136 1663944 5646256 +1627776 5680360 1628008 5680480 1663880 5646248 1663776 5646144 +1627776 5680360 1628008 5680480 1663776 5646144 1657088 5639464 +1627776 5680360 1628008 5680480 1657088 5639464 1627096 5680104 +1628008 5680480 1663880 5646248 1663776 5646144 1657088 5639464 +1663776 5646144 1663688 5645984 1657088 5639464 1628008 5680480 +1627776 5680360 1631216 5689136 1628008 5680480 1657088 5639464 +1628008 5680480 1631216 5689136 1663880 5646248 1663776 5646144 +1631216 5689136 1628008 5680480 1627776 5680360 1631152 5689072 +1627776 5680360 1631080 5689008 1631152 5689072 1628008 5680480 +1631152 5689072 1631216 5689136 1628008 5680480 1631080 5689008 +1627776 5680360 1630904 5688944 1631080 5689008 1628008 5680480 +1627776 5680360 1630816 5688920 1630904 5688944 1628008 5680480 +1627776 5680360 1630728 5688896 1630816 5688920 1628008 5680480 +1627776 5680360 1630632 5688872 1630728 5688896 1628008 5680480 +1627776 5680360 1630544 5688856 1630632 5688872 1628008 5680480 +1630632 5688872 1630728 5688896 1628008 5680480 1630544 5688856 +1630728 5688896 1630816 5688920 1628008 5680480 1630632 5688872 +1630816 5688920 1630904 5688944 1628008 5680480 1630728 5688896 +1630904 5688944 1630992 5688984 1631080 5689008 1628008 5680480 +1631080 5689008 1631152 5689072 1628008 5680480 1630904 5688944 +1630904 5688944 1631080 5689008 1628008 5680480 1630816 5688920 +1631216 5689136 1663880 5646248 1628008 5680480 1631152 5689072 +1628008 5680480 1657088 5639464 1627776 5680360 1630544 5688856 +1627776 5680360 1627152 5680768 1630544 5688856 1628008 5680480 +1630544 5688856 1630632 5688872 1628008 5680480 1627152 5680768 +1627776 5680360 1627096 5680104 1627152 5680768 1628008 5680480 +1627776 5680360 1627152 5680768 1628008 5680480 1657088 5639464 +1627152 5680768 1630504 5688864 1630544 5688856 1628008 5680480 +1630544 5688856 1630632 5688872 1628008 5680480 1630504 5688864 +1627152 5680768 1630504 5688864 1628008 5680480 1627776 5680360 +1627152 5680768 1630424 5688880 1630504 5688864 1628008 5680480 +1627152 5680768 1630424 5688880 1628008 5680480 1627776 5680360 +1627152 5680768 1625984 5687408 1630424 5688880 1628008 5680480 +1625984 5687408 1626016 5687448 1630424 5688880 1628008 5680480 +1627152 5680768 1625984 5687408 1628008 5680480 1627776 5680360 +1627152 5680768 1625904 5687328 1625984 5687408 1628008 5680480 +1630424 5688880 1630504 5688864 1628008 5680480 1625984 5687408 +1630504 5688864 1630544 5688856 1628008 5680480 1630424 5688880 +1663880 5646248 1628040 5680512 1631216 5689136 1663944 5646256 +1631216 5689136 1628040 5680512 1628008 5680480 1631152 5689072 +1628008 5680480 1631080 5689008 1631152 5689072 1628040 5680512 +1628008 5680480 1630904 5688944 1631080 5689008 1628040 5680512 +1631080 5689008 1631152 5689072 1628040 5680512 1630904 5688944 +1630904 5688944 1630992 5688984 1631080 5689008 1628040 5680512 +1628008 5680480 1630816 5688920 1630904 5688944 1628040 5680512 +1628008 5680480 1630728 5688896 1630816 5688920 1628040 5680512 +1628008 5680480 1630632 5688872 1630728 5688896 1628040 5680512 +1628008 5680480 1630544 5688856 1630632 5688872 1628040 5680512 +1628008 5680480 1630504 5688864 1630544 5688856 1628040 5680512 +1630544 5688856 1630632 5688872 1628040 5680512 1630504 5688864 +1630632 5688872 1630728 5688896 1628040 5680512 1630544 5688856 +1630728 5688896 1630816 5688920 1628040 5680512 1630632 5688872 +1630904 5688944 1631080 5689008 1628040 5680512 1630816 5688920 +1630816 5688920 1630904 5688944 1628040 5680512 1630728 5688896 +1628040 5680512 1663880 5646248 1628008 5680480 1630504 5688864 +1631152 5689072 1631216 5689136 1628040 5680512 1631080 5689008 +1628008 5680480 1628040 5680512 1663880 5646248 1663776 5646144 +1628040 5680512 1631216 5689136 1663880 5646248 1663776 5646144 +1628008 5680480 1630504 5688864 1628040 5680512 1663776 5646144 +1628008 5680480 1628040 5680512 1663776 5646144 1657088 5639464 +1631216 5689136 1663880 5646248 1628040 5680512 1631152 5689072 +1628008 5680480 1630424 5688880 1630504 5688864 1628040 5680512 +1630504 5688864 1630544 5688856 1628040 5680512 1630424 5688880 +1628008 5680480 1630424 5688880 1628040 5680512 1663776 5646144 +1628008 5680480 1625984 5687408 1630424 5688880 1628040 5680512 +1625984 5687408 1626016 5687448 1630424 5688880 1628040 5680512 +1628008 5680480 1625984 5687408 1628040 5680512 1663776 5646144 +1628008 5680480 1627152 5680768 1625984 5687408 1628040 5680512 +1628008 5680480 1627152 5680768 1628040 5680512 1663776 5646144 +1628008 5680480 1627776 5680360 1627152 5680768 1628040 5680512 +1627776 5680360 1627096 5680104 1627152 5680768 1628040 5680512 +1628008 5680480 1627776 5680360 1628040 5680512 1663776 5646144 +1627152 5680768 1625984 5687408 1628040 5680512 1627776 5680360 +1627152 5680768 1625904 5687328 1625984 5687408 1628040 5680512 +1627152 5680768 1625904 5687328 1628040 5680512 1627776 5680360 +1627152 5680768 1625856 5687296 1625904 5687328 1628040 5680512 +1625984 5687408 1630424 5688880 1628040 5680512 1625904 5687328 +1630424 5688880 1630504 5688864 1628040 5680512 1625984 5687408 +1630424 5688880 1628056 5680576 1625984 5687408 1626016 5687448 +1625984 5687408 1628056 5680576 1628040 5680512 1625904 5687328 +1625984 5687408 1630424 5688880 1628056 5680576 1625904 5687328 +1628056 5680576 1630424 5688880 1628040 5680512 1625904 5687328 +1628040 5680512 1627152 5680768 1625904 5687328 1628056 5680576 +1628040 5680512 1627152 5680768 1628056 5680576 1630424 5688880 +1628040 5680512 1627776 5680360 1627152 5680768 1628056 5680576 +1627776 5680360 1627096 5680104 1627152 5680768 1628056 5680576 +1628040 5680512 1627776 5680360 1628056 5680576 1630424 5688880 +1628040 5680512 1628008 5680480 1627776 5680360 1628056 5680576 +1628040 5680512 1628008 5680480 1628056 5680576 1630424 5688880 +1627776 5680360 1627152 5680768 1628056 5680576 1628008 5680480 +1627152 5680768 1625904 5687328 1628056 5680576 1627776 5680360 +1627152 5680768 1625856 5687296 1625904 5687328 1628056 5680576 +1625904 5687328 1625984 5687408 1628056 5680576 1627152 5680768 +1628040 5680512 1628056 5680576 1630424 5688880 1630504 5688864 +1628040 5680512 1628056 5680576 1630504 5688864 1630544 5688856 +1628040 5680512 1628056 5680576 1630544 5688856 1630632 5688872 +1628056 5680576 1630504 5688864 1630544 5688856 1630632 5688872 +1628040 5680512 1628056 5680576 1630632 5688872 1630728 5688896 +1628056 5680576 1630544 5688856 1630632 5688872 1630728 5688896 +1628040 5680512 1628056 5680576 1630728 5688896 1630816 5688920 +1628056 5680576 1630632 5688872 1630728 5688896 1630816 5688920 +1628040 5680512 1628056 5680576 1630816 5688920 1630904 5688944 +1628056 5680576 1630728 5688896 1630816 5688920 1630904 5688944 +1628040 5680512 1628056 5680576 1630904 5688944 1631080 5689008 +1628040 5680512 1628056 5680576 1631080 5689008 1631152 5689072 +1630904 5688944 1630992 5688984 1631080 5689008 1628056 5680576 +1628056 5680576 1630904 5688944 1631080 5689008 1631152 5689072 +1628056 5680576 1630816 5688920 1630904 5688944 1631080 5689008 +1628040 5680512 1628056 5680576 1631152 5689072 1631216 5689136 +1628056 5680576 1631080 5689008 1631152 5689072 1631216 5689136 +1628040 5680512 1628008 5680480 1628056 5680576 1631216 5689136 +1628040 5680512 1628056 5680576 1631216 5689136 1663880 5646248 +1628040 5680512 1628056 5680576 1663880 5646248 1663776 5646144 +1631216 5689136 1663944 5646256 1663880 5646248 1628056 5680576 +1628056 5680576 1631152 5689072 1631216 5689136 1663880 5646248 +1628040 5680512 1628008 5680480 1628056 5680576 1663880 5646248 +1628056 5680576 1625984 5687408 1630424 5688880 1630504 5688864 +1628056 5680576 1630424 5688880 1630504 5688864 1630544 5688856 +1628040 5680512 1628072 5680544 1663880 5646248 1663776 5646144 +1628072 5680544 1628056 5680576 1663880 5646248 1663776 5646144 +1628040 5680512 1628072 5680544 1663776 5646144 1628008 5680480 +1628040 5680512 1628056 5680576 1628072 5680544 1663776 5646144 +1663880 5646248 1628072 5680544 1628056 5680576 1631216 5689136 +1663880 5646248 1628072 5680544 1631216 5689136 1663944 5646256 +1628056 5680576 1631152 5689072 1631216 5689136 1628072 5680544 +1628056 5680576 1631080 5689008 1631152 5689072 1628072 5680544 +1628056 5680576 1630904 5688944 1631080 5689008 1628072 5680544 +1631152 5689072 1631216 5689136 1628072 5680544 1631080 5689008 +1663880 5646248 1663776 5646144 1628072 5680544 1631216 5689136 +1628072 5680544 1628040 5680512 1628056 5680576 1631080 5689008 +1631216 5689136 1663880 5646248 1628072 5680544 1631152 5689072 +1663880 5646248 1628144 5680632 1631216 5689136 1663944 5646256 +1628072 5680544 1628144 5680632 1663880 5646248 1663776 5646144 +1631216 5689136 1628144 5680632 1628072 5680544 1631152 5689072 +1628144 5680632 1663880 5646248 1628072 5680544 1631152 5689072 +1628072 5680544 1631080 5689008 1631152 5689072 1628144 5680632 +1628072 5680544 1628056 5680576 1631080 5689008 1628144 5680632 +1628072 5680544 1628056 5680576 1628144 5680632 1663880 5646248 +1628056 5680576 1630904 5688944 1631080 5689008 1628144 5680632 +1628056 5680576 1630904 5688944 1628144 5680632 1628072 5680544 +1630904 5688944 1630992 5688984 1631080 5689008 1628144 5680632 +1628056 5680576 1630816 5688920 1630904 5688944 1628144 5680632 +1628056 5680576 1630816 5688920 1628144 5680632 1628072 5680544 +1628056 5680576 1630728 5688896 1630816 5688920 1628144 5680632 +1628056 5680576 1630728 5688896 1628144 5680632 1628072 5680544 +1628056 5680576 1630632 5688872 1630728 5688896 1628144 5680632 +1628056 5680576 1630632 5688872 1628144 5680632 1628072 5680544 +1628056 5680576 1630544 5688856 1630632 5688872 1628144 5680632 +1628056 5680576 1630504 5688864 1630544 5688856 1628144 5680632 +1628056 5680576 1630504 5688864 1628144 5680632 1628072 5680544 +1630544 5688856 1630632 5688872 1628144 5680632 1630504 5688864 +1630632 5688872 1630728 5688896 1628144 5680632 1630544 5688856 +1630728 5688896 1630816 5688920 1628144 5680632 1630632 5688872 +1630904 5688944 1631080 5689008 1628144 5680632 1630816 5688920 +1630816 5688920 1630904 5688944 1628144 5680632 1630728 5688896 +1631080 5689008 1631152 5689072 1628144 5680632 1630904 5688944 +1631216 5689136 1663880 5646248 1628144 5680632 1631152 5689072 +1631152 5689072 1631216 5689136 1628144 5680632 1631080 5689008 +1628056 5680576 1630424 5688880 1630504 5688864 1628144 5680632 +1630504 5688864 1630544 5688856 1628144 5680632 1630424 5688880 +1628056 5680576 1630424 5688880 1628144 5680632 1628072 5680544 +1628056 5680576 1625984 5687408 1630424 5688880 1628144 5680632 +1625984 5687408 1626016 5687448 1630424 5688880 1628144 5680632 +1628056 5680576 1625984 5687408 1628144 5680632 1628072 5680544 +1628056 5680576 1625904 5687328 1625984 5687408 1628144 5680632 +1628056 5680576 1625904 5687328 1628144 5680632 1628072 5680544 +1625984 5687408 1630424 5688880 1628144 5680632 1625904 5687328 +1628056 5680576 1627152 5680768 1625904 5687328 1628144 5680632 +1628056 5680576 1627152 5680768 1628144 5680632 1628072 5680544 +1625904 5687328 1625984 5687408 1628144 5680632 1627152 5680768 +1628056 5680576 1627776 5680360 1627152 5680768 1628144 5680632 +1627152 5680768 1625856 5687296 1625904 5687328 1628144 5680632 +1630424 5688880 1630504 5688864 1628144 5680632 1625984 5687408 +1630424 5688880 1628112 5680744 1625984 5687408 1626016 5687448 +1628112 5680744 1628144 5680632 1625984 5687408 1626016 5687448 +1630424 5688880 1628144 5680632 1628112 5680744 1626016 5687448 +1625984 5687408 1628112 5680744 1628144 5680632 1625904 5687328 +1625984 5687408 1626016 5687448 1628112 5680744 1625904 5687328 +1628144 5680632 1627152 5680768 1625904 5687328 1628112 5680744 +1628112 5680744 1630424 5688880 1628144 5680632 1627152 5680768 +1625904 5687328 1625984 5687408 1628112 5680744 1627152 5680768 +1627152 5680768 1625856 5687296 1625904 5687328 1628112 5680744 +1627152 5680768 1625856 5687296 1628112 5680744 1628144 5680632 +1625904 5687328 1625984 5687408 1628112 5680744 1625856 5687296 +1627152 5680768 1625824 5687280 1625856 5687296 1628112 5680744 +1628144 5680632 1628056 5680576 1627152 5680768 1628112 5680744 +1628144 5680632 1628072 5680544 1628056 5680576 1628112 5680744 +1627152 5680768 1625856 5687296 1628112 5680744 1628056 5680576 +1628144 5680632 1628056 5680576 1628112 5680744 1630424 5688880 +1628056 5680576 1627776 5680360 1627152 5680768 1628112 5680744 +1627776 5680360 1627096 5680104 1627152 5680768 1628112 5680744 +1627152 5680768 1625856 5687296 1628112 5680744 1627776 5680360 +1628056 5680576 1628008 5680480 1627776 5680360 1628112 5680744 +1628056 5680576 1627776 5680360 1628112 5680744 1628144 5680632 +1630424 5688880 1628112 5680744 1626016 5687448 1626048 5687512 +1628144 5680632 1628112 5680744 1630424 5688880 1630504 5688864 +1628144 5680632 1628112 5680744 1630504 5688864 1630544 5688856 +1628144 5680632 1628112 5680744 1630544 5688856 1630632 5688872 +1628112 5680744 1630504 5688864 1630544 5688856 1630632 5688872 +1628144 5680632 1628112 5680744 1630632 5688872 1630728 5688896 +1628112 5680744 1630544 5688856 1630632 5688872 1630728 5688896 +1628144 5680632 1628112 5680744 1630728 5688896 1630816 5688920 +1628112 5680744 1630632 5688872 1630728 5688896 1630816 5688920 +1628144 5680632 1628112 5680744 1630816 5688920 1630904 5688944 +1628112 5680744 1630728 5688896 1630816 5688920 1630904 5688944 +1628144 5680632 1628112 5680744 1630904 5688944 1631080 5689008 +1630904 5688944 1630992 5688984 1631080 5689008 1628112 5680744 +1628112 5680744 1630816 5688920 1630904 5688944 1631080 5689008 +1628144 5680632 1628112 5680744 1631080 5689008 1631152 5689072 +1628144 5680632 1628056 5680576 1628112 5680744 1631080 5689008 +1628112 5680744 1626016 5687448 1630424 5688880 1630504 5688864 +1628112 5680744 1630424 5688880 1630504 5688864 1630544 5688856 +1626016 5687448 1628112 5680824 1628112 5680744 1625984 5687408 +1628112 5680744 1625904 5687328 1625984 5687408 1628112 5680824 +1625984 5687408 1626016 5687448 1628112 5680824 1625904 5687328 +1628112 5680824 1630424 5688880 1628112 5680744 1625904 5687328 +1626016 5687448 1630424 5688880 1628112 5680824 1625984 5687408 +1628112 5680744 1628112 5680824 1630424 5688880 1630504 5688864 +1628112 5680824 1626016 5687448 1630424 5688880 1630504 5688864 +1628112 5680744 1625904 5687328 1628112 5680824 1630504 5688864 +1628112 5680744 1625856 5687296 1625904 5687328 1628112 5680824 +1625904 5687328 1625984 5687408 1628112 5680824 1625856 5687296 +1628112 5680744 1625856 5687296 1628112 5680824 1630504 5688864 +1628112 5680744 1627152 5680768 1625856 5687296 1628112 5680824 +1628112 5680744 1627152 5680768 1628112 5680824 1630504 5688864 +1628112 5680744 1627776 5680360 1627152 5680768 1628112 5680824 +1627776 5680360 1627096 5680104 1627152 5680768 1628112 5680824 +1628112 5680744 1627776 5680360 1628112 5680824 1630504 5688864 +1625856 5687296 1625904 5687328 1628112 5680824 1627152 5680768 +1627152 5680768 1625824 5687280 1625856 5687296 1628112 5680824 +1628112 5680744 1628056 5680576 1627776 5680360 1628112 5680824 +1628112 5680744 1628056 5680576 1628112 5680824 1630504 5688864 +1627776 5680360 1627152 5680768 1628112 5680824 1628056 5680576 +1628056 5680576 1628008 5680480 1627776 5680360 1628112 5680824 +1627152 5680768 1625856 5687296 1628112 5680824 1627776 5680360 +1628112 5680744 1628144 5680632 1628056 5680576 1628112 5680824 +1630424 5688880 1628112 5680824 1626016 5687448 1626048 5687512 +1628112 5680744 1628112 5680824 1630504 5688864 1630544 5688856 +1628112 5680744 1628112 5680824 1630544 5688856 1630632 5688872 +1628112 5680744 1628112 5680824 1630632 5688872 1630728 5688896 +1628112 5680824 1630544 5688856 1630632 5688872 1630728 5688896 +1628112 5680744 1628112 5680824 1630728 5688896 1630816 5688920 +1628112 5680824 1630632 5688872 1630728 5688896 1630816 5688920 +1628112 5680744 1628112 5680824 1630816 5688920 1630904 5688944 +1628112 5680824 1630728 5688896 1630816 5688920 1630904 5688944 +1628112 5680744 1628112 5680824 1630904 5688944 1631080 5689008 +1628112 5680824 1630816 5688920 1630904 5688944 1631080 5689008 +1630904 5688944 1630992 5688984 1631080 5689008 1628112 5680824 +1628112 5680744 1628112 5680824 1631080 5689008 1628144 5680632 +1628112 5680824 1630904 5688944 1631080 5689008 1628144 5680632 +1631080 5689008 1631152 5689072 1628144 5680632 1628112 5680824 +1628112 5680744 1628056 5680576 1628112 5680824 1628144 5680632 +1628112 5680824 1630424 5688880 1630504 5688864 1630544 5688856 +1628112 5680824 1630504 5688864 1630544 5688856 1630632 5688872 +1628112 5680824 1628096 5680872 1625984 5687408 1626016 5687448 +1628112 5680824 1625904 5687328 1628096 5680872 1626016 5687448 +1625904 5687328 1628096 5680872 1628112 5680824 1625856 5687296 +1628096 5680872 1626016 5687448 1628112 5680824 1625856 5687296 +1625904 5687328 1625984 5687408 1628096 5680872 1625856 5687296 +1628112 5680824 1628096 5680872 1626016 5687448 1630424 5688880 +1628096 5680872 1625984 5687408 1626016 5687448 1630424 5688880 +1628112 5680824 1628096 5680872 1630424 5688880 1630504 5688864 +1628112 5680824 1625856 5687296 1628096 5680872 1630504 5688864 +1628096 5680872 1626016 5687448 1630424 5688880 1630504 5688864 +1628112 5680824 1628096 5680872 1630504 5688864 1630544 5688856 +1628096 5680872 1630424 5688880 1630504 5688864 1630544 5688856 +1628112 5680824 1625856 5687296 1628096 5680872 1630544 5688856 +1628112 5680824 1627152 5680768 1625856 5687296 1628096 5680872 +1628112 5680824 1627152 5680768 1628096 5680872 1630544 5688856 +1625856 5687296 1625904 5687328 1628096 5680872 1627152 5680768 +1628096 5680872 1625904 5687328 1625984 5687408 1626016 5687448 +1627152 5680768 1625824 5687280 1625856 5687296 1628096 5680872 +1627152 5680768 1625672 5687248 1625824 5687280 1628096 5680872 +1625856 5687296 1625904 5687328 1628096 5680872 1625824 5687280 +1627152 5680768 1625824 5687280 1628096 5680872 1628112 5680824 +1628112 5680824 1627776 5680360 1627152 5680768 1628096 5680872 +1627776 5680360 1627096 5680104 1627152 5680768 1628096 5680872 +1628112 5680824 1627776 5680360 1628096 5680872 1630544 5688856 +1628112 5680824 1628056 5680576 1627776 5680360 1628096 5680872 +1628112 5680824 1628056 5680576 1628096 5680872 1630544 5688856 +1627152 5680768 1625824 5687280 1628096 5680872 1627776 5680360 +1628056 5680576 1628008 5680480 1627776 5680360 1628096 5680872 +1628112 5680824 1628112 5680744 1628056 5680576 1628096 5680872 +1628112 5680824 1628112 5680744 1628096 5680872 1630544 5688856 +1628056 5680576 1627776 5680360 1628096 5680872 1628112 5680744 +1627776 5680360 1627152 5680768 1628096 5680872 1628056 5680576 +1628112 5680744 1628144 5680632 1628056 5680576 1628096 5680872 +1626016 5687448 1626048 5687512 1630424 5688880 1628096 5680872 +1628112 5680824 1628096 5680872 1630544 5688856 1630632 5688872 +1628112 5680824 1628096 5680872 1630632 5688872 1630728 5688896 +1628112 5680824 1628096 5680872 1630728 5688896 1630816 5688920 +1628096 5680872 1630632 5688872 1630728 5688896 1630816 5688920 +1628112 5680824 1628096 5680872 1630816 5688920 1630904 5688944 +1628096 5680872 1630728 5688896 1630816 5688920 1630904 5688944 +1628112 5680824 1628096 5680872 1630904 5688944 1631080 5689008 +1628096 5680872 1630816 5688920 1630904 5688944 1631080 5689008 +1630904 5688944 1630992 5688984 1631080 5689008 1628096 5680872 +1628112 5680824 1628096 5680872 1631080 5689008 1628144 5680632 +1628112 5680824 1628112 5680744 1628096 5680872 1631080 5689008 +1628096 5680872 1630504 5688864 1630544 5688856 1630632 5688872 +1628096 5680872 1630544 5688856 1630632 5688872 1630728 5688896 +1625824 5687280 1628016 5680960 1627152 5680768 1625672 5687248 +1627152 5680768 1628016 5680960 1628096 5680872 1627776 5680360 +1627152 5680768 1625824 5687280 1628016 5680960 1627776 5680360 +1627152 5680768 1628016 5680960 1627776 5680360 1627096 5680104 +1628016 5680960 1625824 5687280 1628096 5680872 1627776 5680360 +1628096 5680872 1628016 5680960 1625824 5687280 1625856 5687296 +1628096 5680872 1628016 5680960 1625856 5687296 1625904 5687328 +1628016 5680960 1627152 5680768 1625824 5687280 1625856 5687296 +1628096 5680872 1628016 5680960 1625904 5687328 1625984 5687408 +1628016 5680960 1625856 5687296 1625904 5687328 1625984 5687408 +1628096 5680872 1627776 5680360 1628016 5680960 1625984 5687408 +1628096 5680872 1628016 5680960 1625984 5687408 1626016 5687448 +1628096 5680872 1628016 5680960 1626016 5687448 1630424 5688880 +1628016 5680960 1625984 5687408 1626016 5687448 1630424 5688880 +1628016 5680960 1625904 5687328 1625984 5687408 1626016 5687448 +1628096 5680872 1628016 5680960 1630424 5688880 1630504 5688864 +1628016 5680960 1626016 5687448 1630424 5688880 1630504 5688864 +1628096 5680872 1628016 5680960 1630504 5688864 1630544 5688856 +1628016 5680960 1630424 5688880 1630504 5688864 1630544 5688856 +1628096 5680872 1627776 5680360 1628016 5680960 1630544 5688856 +1628096 5680872 1628016 5680960 1630544 5688856 1630632 5688872 +1628016 5680960 1630504 5688864 1630544 5688856 1630632 5688872 +1628096 5680872 1627776 5680360 1628016 5680960 1630632 5688872 +1628016 5680960 1625824 5687280 1625856 5687296 1625904 5687328 +1628096 5680872 1628056 5680576 1627776 5680360 1628016 5680960 +1628096 5680872 1628112 5680744 1628056 5680576 1628016 5680960 +1628096 5680872 1628112 5680744 1628016 5680960 1630632 5688872 +1627776 5680360 1627152 5680768 1628016 5680960 1628056 5680576 +1628056 5680576 1628008 5680480 1627776 5680360 1628016 5680960 +1628096 5680872 1628112 5680824 1628112 5680744 1628016 5680960 +1628056 5680576 1627776 5680360 1628016 5680960 1628112 5680744 +1628112 5680744 1628144 5680632 1628056 5680576 1628016 5680960 +1626016 5687448 1626048 5687512 1630424 5688880 1628016 5680960 +1628096 5680872 1628016 5680960 1630632 5688872 1630728 5688896 +1627152 5680768 1627944 5680984 1628016 5680960 1627776 5680360 +1627152 5680768 1627944 5680984 1627776 5680360 1627096 5680104 +1625824 5687280 1627944 5680984 1627152 5680768 1625672 5687248 +1627152 5680768 1625824 5687280 1627944 5680984 1627776 5680360 +1628016 5680960 1627944 5680984 1625824 5687280 1625856 5687296 +1627944 5680984 1625856 5687296 1628016 5680960 1627776 5680360 +1627944 5680984 1627152 5680768 1625824 5687280 1625856 5687296 +1628016 5680960 1628056 5680576 1627776 5680360 1627944 5680984 +1627776 5680360 1627152 5680768 1627944 5680984 1628056 5680576 +1628016 5680960 1628056 5680576 1627944 5680984 1625856 5687296 +1628016 5680960 1627944 5680984 1625856 5687296 1625904 5687328 +1628016 5680960 1627944 5680984 1625904 5687328 1625984 5687408 +1627944 5680984 1625824 5687280 1625856 5687296 1625904 5687328 +1628016 5680960 1627944 5680984 1625984 5687408 1626016 5687448 +1628016 5680960 1627944 5680984 1626016 5687448 1630424 5688880 +1628016 5680960 1627944 5680984 1630424 5688880 1630504 5688864 +1627944 5680984 1625904 5687328 1625984 5687408 1626016 5687448 +1627944 5680984 1625984 5687408 1626016 5687448 1630424 5688880 +1628016 5680960 1628056 5680576 1627944 5680984 1630424 5688880 +1627944 5680984 1625856 5687296 1625904 5687328 1625984 5687408 +1628056 5680576 1628008 5680480 1627776 5680360 1627944 5680984 +1628016 5680960 1628112 5680744 1628056 5680576 1627944 5680984 +1628016 5680960 1628096 5680872 1628112 5680744 1627944 5680984 +1628016 5680960 1628096 5680872 1627944 5680984 1630424 5688880 +1628056 5680576 1627776 5680360 1627944 5680984 1628112 5680744 +1628096 5680872 1628112 5680824 1628112 5680744 1627944 5680984 +1628096 5680872 1628112 5680824 1627944 5680984 1628016 5680960 +1628112 5680744 1628056 5680576 1627944 5680984 1628112 5680824 +1628112 5680744 1628144 5680632 1628056 5680576 1627944 5680984 +1626016 5687448 1626048 5687512 1630424 5688880 1627944 5680984 +1627776 5680360 1627752 5680904 1627944 5680984 1628056 5680576 +1627752 5680904 1627152 5680768 1627944 5680984 1628056 5680576 +1627152 5680768 1627752 5680904 1627776 5680360 1627096 5680104 +1627776 5680360 1627152 5680768 1627752 5680904 1628056 5680576 +1627944 5680984 1627752 5680904 1627152 5680768 1625824 5687280 +1627944 5680984 1628112 5680744 1628056 5680576 1627752 5680904 +1628056 5680576 1627776 5680360 1627752 5680904 1628112 5680744 +1627944 5680984 1628112 5680744 1627752 5680904 1627152 5680768 +1627776 5680360 1627752 5680904 1628056 5680576 1628008 5680480 +1627752 5680904 1628112 5680744 1628056 5680576 1628008 5680480 +1627776 5680360 1627152 5680768 1627752 5680904 1628008 5680480 +1628056 5680576 1628040 5680512 1628008 5680480 1627752 5680904 +1627944 5680984 1628112 5680824 1628112 5680744 1627752 5680904 +1627944 5680984 1628112 5680824 1627752 5680904 1627152 5680768 +1628112 5680744 1628056 5680576 1627752 5680904 1628112 5680824 +1627944 5680984 1628096 5680872 1628112 5680824 1627752 5680904 +1628112 5680744 1628144 5680632 1628056 5680576 1627752 5680904 +1627152 5680768 1627616 5680840 1627776 5680360 1627096 5680104 +1627776 5680360 1627616 5680840 1627752 5680904 1628008 5680480 +1627776 5680360 1627152 5680768 1627616 5680840 1628008 5680480 +1627752 5680904 1627616 5680840 1627152 5680768 1627944 5680984 +1627616 5680840 1627152 5680768 1627752 5680904 1628008 5680480 +1627752 5680904 1628056 5680576 1628008 5680480 1627616 5680840 +1625824 5687280 1627248 5680800 1627152 5680768 1625672 5687248 +1627152 5680768 1627248 5680800 1627944 5680984 1627752 5680904 +1627248 5680800 1625824 5687280 1627944 5680984 1627752 5680904 +1627248 5680800 1627752 5680904 1627152 5680768 1625672 5687248 +1625824 5687280 1627944 5680984 1627248 5680800 1625672 5687248 +1627944 5680984 1627248 5680800 1625824 5687280 1625856 5687296 +1627152 5680768 1627248 5680800 1627752 5680904 1627616 5680840 +1627152 5680768 1627248 5680800 1627616 5680840 1627776 5680360 +1627616 5680840 1628008 5680480 1627776 5680360 1627248 5680800 +1627152 5680768 1627248 5680800 1627776 5680360 1627096 5680104 +1627248 5680800 1627616 5680840 1627776 5680360 1627096 5680104 +1627248 5680800 1627944 5680984 1627752 5680904 1627616 5680840 +1627152 5680768 1625672 5687248 1627248 5680800 1627096 5680104 +1627152 5680768 1627248 5680800 1627096 5680104 1626952 5680672 +1627248 5680800 1627752 5680904 1627616 5680840 1627776 5680360 +1627152 5680768 1625656 5687248 1625672 5687248 1627248 5680800 +1625824 5687280 1627248 5680800 1625672 5687248 1625736 5687272 +1627944 5680984 1626648 5685816 1630424 5688880 1628016 5680960 +1630424 5688880 1630504 5688864 1628016 5680960 1626648 5685816 +1628016 5680960 1627944 5680984 1626648 5685816 1630504 5688864 +1626016 5687448 1626648 5685816 1627944 5680984 1625984 5687408 +1627944 5680984 1625904 5687328 1625984 5687408 1626648 5685816 +1626016 5687448 1630424 5688880 1626648 5685816 1625984 5687408 +1625984 5687408 1626016 5687448 1626648 5685816 1625904 5687328 +1630504 5688864 1630544 5688856 1628016 5680960 1626648 5685816 +1630504 5688864 1630544 5688856 1626648 5685816 1630424 5688880 +1630544 5688856 1630632 5688872 1628016 5680960 1626648 5685816 +1628016 5680960 1627944 5680984 1626648 5685816 1630544 5688856 +1626648 5685816 1626016 5687448 1630424 5688880 1630504 5688864 +1627944 5680984 1625904 5687328 1626648 5685816 1628016 5680960 +1627944 5680984 1625856 5687296 1625904 5687328 1626648 5685816 +1625904 5687328 1625984 5687408 1626648 5685816 1625856 5687296 +1627944 5680984 1625824 5687280 1625856 5687296 1626648 5685816 +1627944 5680984 1625824 5687280 1626648 5685816 1628016 5680960 +1627944 5680984 1627248 5680800 1625824 5687280 1626648 5685816 +1627944 5680984 1627752 5680904 1627248 5680800 1626648 5685816 +1625824 5687280 1625856 5687296 1626648 5685816 1627248 5680800 +1627248 5680800 1625672 5687248 1625824 5687280 1626648 5685816 +1627248 5680800 1627152 5680768 1625672 5687248 1626648 5685816 +1625824 5687280 1625856 5687296 1626648 5685816 1625672 5687248 +1625672 5687248 1625824 5687280 1626648 5685816 1627152 5680768 +1627944 5680984 1627248 5680800 1626648 5685816 1628016 5680960 +1627248 5680800 1627152 5680768 1626648 5685816 1627944 5680984 +1627152 5680768 1625656 5687248 1625672 5687248 1626648 5685816 +1627152 5680768 1625656 5687248 1626648 5685816 1627248 5680800 +1625672 5687248 1625824 5687280 1626648 5685816 1625656 5687248 +1627152 5680768 1626952 5680672 1625656 5687248 1626648 5685816 +1627152 5680768 1626952 5680672 1626648 5685816 1627248 5680800 +1626952 5680672 1626744 5680528 1625656 5687248 1626648 5685816 +1626952 5680672 1626744 5680528 1626648 5685816 1627152 5680768 +1626744 5680528 1625568 5687272 1625656 5687248 1626648 5685816 +1626744 5680528 1625568 5687272 1626648 5685816 1626952 5680672 +1626744 5680528 1622296 5686800 1625568 5687272 1626648 5685816 +1626744 5680528 1622296 5686800 1626648 5685816 1626952 5680672 +1622296 5686800 1622472 5686920 1625568 5687272 1626648 5685816 +1622296 5686800 1622472 5686920 1626648 5685816 1626744 5680528 +1622472 5686920 1625480 5687312 1625568 5687272 1626648 5685816 +1622472 5686920 1625480 5687312 1626648 5685816 1622296 5686800 +1622472 5686920 1622592 5687064 1625480 5687312 1626648 5685816 +1625480 5687312 1625488 5687312 1625568 5687272 1626648 5685816 +1625568 5687272 1625656 5687248 1626648 5685816 1625480 5687312 +1626744 5680528 1621112 5686056 1622296 5686800 1626648 5685816 +1626744 5680528 1621112 5686056 1626648 5685816 1626952 5680672 +1626744 5680528 1626632 5680392 1621112 5686056 1626648 5685816 +1622296 5686800 1622472 5686920 1626648 5685816 1621112 5686056 +1621112 5686056 1621744 5686536 1622296 5686800 1626648 5685816 +1625656 5687248 1625672 5687248 1626648 5685816 1625568 5687272 +1625672 5687248 1625736 5687272 1625824 5687280 1626648 5685816 +1625856 5687296 1625904 5687328 1626648 5685816 1625824 5687280 +1630424 5688880 1626648 5685816 1626016 5687448 1626048 5687512 +1626648 5685816 1625984 5687408 1626016 5687448 1626048 5687512 +1630424 5688880 1630504 5688864 1626648 5685816 1626048 5687512 +1630424 5688880 1626648 5685816 1626048 5687512 1626096 5687632 +1630424 5688880 1630504 5688864 1626648 5685816 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1626648 5685816 +1626648 5685816 1626016 5687448 1626048 5687512 1626096 5687632 +1630424 5688880 1626648 5685816 1626096 5687632 1626096 5687664 +1628016 5680960 1626784 5685776 1630544 5688856 1630632 5688872 +1626648 5685816 1626784 5685776 1628016 5680960 1627944 5680984 +1626648 5685816 1630544 5688856 1626784 5685776 1627944 5680984 +1630544 5688856 1626784 5685776 1626648 5685816 1630504 5688864 +1626648 5685816 1630424 5688880 1630504 5688864 1626784 5685776 +1630544 5688856 1628016 5680960 1626784 5685776 1630504 5688864 +1626784 5685776 1627944 5680984 1626648 5685816 1630424 5688880 +1630504 5688864 1630544 5688856 1626784 5685776 1630424 5688880 +1626648 5685816 1626096 5687632 1630424 5688880 1626784 5685776 +1630424 5688880 1630504 5688864 1626784 5685776 1626096 5687632 +1626648 5685816 1626096 5687632 1626784 5685776 1627944 5680984 +1626648 5685816 1626784 5685776 1627944 5680984 1627248 5680800 +1626784 5685776 1628016 5680960 1627944 5680984 1627248 5680800 +1627944 5680984 1627752 5680904 1627248 5680800 1626784 5685776 +1626648 5685816 1626096 5687632 1626784 5685776 1627248 5680800 +1626648 5685816 1626784 5685776 1627248 5680800 1627152 5680768 +1626648 5685816 1626784 5685776 1627152 5680768 1626952 5680672 +1626648 5685816 1626096 5687632 1626784 5685776 1627152 5680768 +1626784 5685776 1627944 5680984 1627248 5680800 1627152 5680768 +1626784 5685776 1630544 5688856 1628016 5680960 1627944 5680984 +1626096 5687632 1626096 5687664 1630424 5688880 1626784 5685776 +1626648 5685816 1626048 5687512 1626096 5687632 1626784 5685776 +1626648 5685816 1626048 5687512 1626784 5685776 1627152 5680768 +1626096 5687632 1630424 5688880 1626784 5685776 1626048 5687512 +1626048 5687512 1626064 5687560 1626096 5687632 1626784 5685776 +1626648 5685816 1626016 5687448 1626048 5687512 1626784 5685776 +1626648 5685816 1626016 5687448 1626784 5685776 1627152 5680768 +1626648 5685816 1625984 5687408 1626016 5687448 1626784 5685776 +1626048 5687512 1626096 5687632 1626784 5685776 1626016 5687448 +1628016 5680960 1626912 5685760 1630544 5688856 1630632 5688872 +1630544 5688856 1626912 5685760 1626784 5685776 1630504 5688864 +1630544 5688856 1628016 5680960 1626912 5685760 1630504 5688864 +1626784 5685776 1630424 5688880 1630504 5688864 1626912 5685760 +1626784 5685776 1626096 5687632 1630424 5688880 1626912 5685760 +1630504 5688864 1630544 5688856 1626912 5685760 1630424 5688880 +1630424 5688880 1630504 5688864 1626912 5685760 1626096 5687632 +1626784 5685776 1626048 5687512 1626096 5687632 1626912 5685760 +1626096 5687632 1630424 5688880 1626912 5685760 1626048 5687512 +1626784 5685776 1626912 5685760 1628016 5680960 1627944 5680984 +1626784 5685776 1626912 5685760 1627944 5680984 1627248 5680800 +1627944 5680984 1627752 5680904 1627248 5680800 1626912 5685760 +1626912 5685760 1630544 5688856 1628016 5680960 1627944 5680984 +1626784 5685776 1626912 5685760 1627248 5680800 1627152 5680768 +1626912 5685760 1628016 5680960 1627944 5680984 1627248 5680800 +1626912 5685760 1627248 5680800 1626784 5685776 1626048 5687512 +1626048 5687512 1626064 5687560 1626096 5687632 1626912 5685760 +1626096 5687632 1626096 5687664 1630424 5688880 1626912 5685760 +1626784 5685776 1626016 5687448 1626048 5687512 1626912 5685760 +1626048 5687512 1626096 5687632 1626912 5685760 1626016 5687448 +1626784 5685776 1626016 5687448 1626912 5685760 1627248 5680800 +1626784 5685776 1626648 5685816 1626016 5687448 1626912 5685760 +1626648 5685816 1625984 5687408 1626016 5687448 1626912 5685760 +1626784 5685776 1626648 5685816 1626912 5685760 1627248 5680800 +1626016 5687448 1626048 5687512 1626912 5685760 1626648 5685816 +1628016 5680960 1627048 5685800 1630544 5688856 1630632 5688872 +1626912 5685760 1627048 5685800 1628016 5680960 1627944 5680984 +1630544 5688856 1627048 5685800 1626912 5685760 1630504 5688864 +1626912 5685760 1630424 5688880 1630504 5688864 1627048 5685800 +1630504 5688864 1630544 5688856 1627048 5685800 1630424 5688880 +1628016 5680960 1627944 5680984 1627048 5685800 1630632 5688872 +1627048 5685800 1630504 5688864 1630544 5688856 1630632 5688872 +1626912 5685760 1630424 5688880 1627048 5685800 1627944 5680984 +1626912 5685760 1626096 5687632 1630424 5688880 1627048 5685800 +1626912 5685760 1626048 5687512 1626096 5687632 1627048 5685800 +1630424 5688880 1630504 5688864 1627048 5685800 1626096 5687632 +1626912 5685760 1626048 5687512 1627048 5685800 1627944 5680984 +1626096 5687632 1630424 5688880 1627048 5685800 1626048 5687512 +1626912 5685760 1626016 5687448 1626048 5687512 1627048 5685800 +1626048 5687512 1626096 5687632 1627048 5685800 1626016 5687448 +1626912 5685760 1626016 5687448 1627048 5685800 1627944 5680984 +1628016 5680960 1627048 5685800 1630632 5688872 1628096 5680872 +1626912 5685760 1627048 5685800 1627944 5680984 1627248 5680800 +1626048 5687512 1626064 5687560 1626096 5687632 1627048 5685800 +1626096 5687632 1626096 5687664 1630424 5688880 1627048 5685800 +1630424 5688880 1630504 5688864 1627048 5685800 1626096 5687664 +1626096 5687664 1626464 5689664 1630424 5688880 1627048 5685800 +1626096 5687632 1626096 5687664 1627048 5685800 1626048 5687512 +1626912 5685760 1626648 5685816 1626016 5687448 1627048 5685800 +1626648 5685816 1625984 5687408 1626016 5687448 1627048 5685800 +1626912 5685760 1626648 5685816 1627048 5685800 1627944 5680984 +1626016 5687448 1626048 5687512 1627048 5685800 1626648 5685816 +1626912 5685760 1626784 5685776 1626648 5685816 1627048 5685800 +1626912 5685760 1626784 5685776 1627048 5685800 1627944 5680984 +1626648 5685816 1626016 5687448 1627048 5685800 1626784 5685776 +1630632 5688872 1627280 5685920 1627048 5685800 1630544 5688856 +1627280 5685920 1628016 5680960 1627048 5685800 1630544 5688856 +1627048 5685800 1627280 5685920 1628016 5680960 1627944 5680984 +1627048 5685800 1630544 5688856 1627280 5685920 1627944 5680984 +1627048 5685800 1627280 5685920 1627944 5680984 1626912 5685760 +1627048 5685800 1630504 5688864 1630544 5688856 1627280 5685920 +1630544 5688856 1630632 5688872 1627280 5685920 1630504 5688864 +1627048 5685800 1630504 5688864 1627280 5685920 1627944 5680984 +1627048 5685800 1630424 5688880 1630504 5688864 1627280 5685920 +1627048 5685800 1630424 5688880 1627280 5685920 1627944 5680984 +1627048 5685800 1626096 5687664 1630424 5688880 1627280 5685920 +1627048 5685800 1626096 5687664 1627280 5685920 1627944 5680984 +1626096 5687664 1626464 5689664 1630424 5688880 1627280 5685920 +1630424 5688880 1630504 5688864 1627280 5685920 1626096 5687664 +1630504 5688864 1630544 5688856 1627280 5685920 1630424 5688880 +1627280 5685920 1630632 5688872 1628016 5680960 1627944 5680984 +1630632 5688872 1628016 5680960 1627280 5685920 1630544 5688856 +1628016 5680960 1627280 5685920 1630632 5688872 1628096 5680872 +1628016 5680960 1627944 5680984 1627280 5685920 1628096 5680872 +1627280 5685920 1630544 5688856 1630632 5688872 1628096 5680872 +1630632 5688872 1630728 5688896 1628096 5680872 1627280 5685920 +1627048 5685800 1626096 5687632 1626096 5687664 1627280 5685920 +1627048 5685800 1626096 5687632 1627280 5685920 1627944 5680984 +1626096 5687664 1630424 5688880 1627280 5685920 1626096 5687632 +1627048 5685800 1626048 5687512 1626096 5687632 1627280 5685920 +1627048 5685800 1626016 5687448 1626048 5687512 1627280 5685920 +1627048 5685800 1626016 5687448 1627280 5685920 1627944 5680984 +1626048 5687512 1626096 5687632 1627280 5685920 1626016 5687448 +1627048 5685800 1626648 5685816 1626016 5687448 1627280 5685920 +1626016 5687448 1626048 5687512 1627280 5685920 1626648 5685816 +1627048 5685800 1626648 5685816 1627280 5685920 1627944 5680984 +1626648 5685816 1625984 5687408 1626016 5687448 1627280 5685920 +1626048 5687512 1626064 5687560 1626096 5687632 1627280 5685920 +1626096 5687632 1626096 5687664 1627280 5685920 1626048 5687512 +1627048 5685800 1626784 5685776 1626648 5685816 1627280 5685920 +1630632 5688872 1627672 5686200 1627280 5685920 1630544 5688856 +1627280 5685920 1630504 5688864 1630544 5688856 1627672 5686200 +1630632 5688872 1628096 5680872 1627672 5686200 1630544 5688856 +1627280 5685920 1630424 5688880 1630504 5688864 1627672 5686200 +1630504 5688864 1630544 5688856 1627672 5686200 1630424 5688880 +1627280 5685920 1626096 5687664 1630424 5688880 1627672 5686200 +1627280 5685920 1626096 5687632 1626096 5687664 1627672 5686200 +1626096 5687664 1626464 5689664 1630424 5688880 1627672 5686200 +1626464 5689664 1627944 5690696 1630424 5688880 1627672 5686200 +1626096 5687664 1626464 5689664 1627672 5686200 1626096 5687632 +1630424 5688880 1630504 5688864 1627672 5686200 1626464 5689664 +1630544 5688856 1630632 5688872 1627672 5686200 1630504 5688864 +1627672 5686200 1628096 5680872 1627280 5685920 1626096 5687632 +1627280 5685920 1627672 5686200 1628096 5680872 1628016 5680960 +1627280 5685920 1627672 5686200 1628016 5680960 1627944 5680984 +1627672 5686200 1630632 5688872 1628096 5680872 1628016 5680960 +1627280 5685920 1626096 5687632 1627672 5686200 1628016 5680960 +1626096 5687664 1626424 5689616 1626464 5689664 1627672 5686200 +1628096 5680872 1627672 5686200 1630632 5688872 1630728 5688896 +1628096 5680872 1627672 5686200 1630728 5688896 1630816 5688920 +1627672 5686200 1630544 5688856 1630632 5688872 1630728 5688896 +1628096 5680872 1627672 5686200 1630816 5688920 1630904 5688944 +1627672 5686200 1630728 5688896 1630816 5688920 1630904 5688944 +1628096 5680872 1627672 5686200 1630904 5688944 1631080 5689008 +1628096 5680872 1628016 5680960 1627672 5686200 1630904 5688944 +1627672 5686200 1630632 5688872 1630728 5688896 1630816 5688920 +1627280 5685920 1626048 5687512 1626096 5687632 1627672 5686200 +1626096 5687632 1626096 5687664 1627672 5686200 1626048 5687512 +1627280 5685920 1626016 5687448 1626048 5687512 1627672 5686200 +1627280 5685920 1626648 5685816 1626016 5687448 1627672 5686200 +1627280 5685920 1626016 5687448 1627672 5686200 1628016 5680960 +1626048 5687512 1626064 5687560 1626096 5687632 1627672 5686200 +1626048 5687512 1626096 5687632 1627672 5686200 1626016 5687448 +1630904 5688944 1627824 5686272 1627672 5686200 1630816 5688920 +1627672 5686200 1630728 5688896 1630816 5688920 1627824 5686272 +1630816 5688920 1630904 5688944 1627824 5686272 1630728 5688896 +1628096 5680872 1627824 5686272 1630904 5688944 1631080 5689008 +1630904 5688944 1628096 5680872 1627824 5686272 1630816 5688920 +1627672 5686200 1627824 5686272 1628096 5680872 1628016 5680960 +1627824 5686272 1630904 5688944 1628096 5680872 1628016 5680960 +1627672 5686200 1627824 5686272 1628016 5680960 1627280 5685920 +1628016 5680960 1627944 5680984 1627280 5685920 1627824 5686272 +1627824 5686272 1628096 5680872 1628016 5680960 1627280 5685920 +1627824 5686272 1627280 5685920 1627672 5686200 1630728 5688896 +1627672 5686200 1630632 5688872 1630728 5688896 1627824 5686272 +1630728 5688896 1630816 5688920 1627824 5686272 1630632 5688872 +1627672 5686200 1630544 5688856 1630632 5688872 1627824 5686272 +1627672 5686200 1630504 5688864 1630544 5688856 1627824 5686272 +1627672 5686200 1630424 5688880 1630504 5688864 1627824 5686272 +1630544 5688856 1630632 5688872 1627824 5686272 1630504 5688864 +1627672 5686200 1626464 5689664 1630424 5688880 1627824 5686272 +1630424 5688880 1630504 5688864 1627824 5686272 1626464 5689664 +1626464 5689664 1627944 5690696 1630424 5688880 1627824 5686272 +1627672 5686200 1626096 5687664 1626464 5689664 1627824 5686272 +1627672 5686200 1626096 5687632 1626096 5687664 1627824 5686272 +1627672 5686200 1626048 5687512 1626096 5687632 1627824 5686272 +1626096 5687664 1626464 5689664 1627824 5686272 1626096 5687632 +1626464 5689664 1630424 5688880 1627824 5686272 1626096 5687664 +1630504 5688864 1630544 5688856 1627824 5686272 1630424 5688880 +1627672 5686200 1626096 5687632 1627824 5686272 1627280 5685920 +1626096 5687664 1626424 5689616 1626464 5689664 1627824 5686272 +1630632 5688872 1630728 5688896 1627824 5686272 1630544 5688856 +1627824 5686272 1627904 5686384 1630424 5688880 1630504 5688864 +1630424 5688880 1627904 5686384 1626464 5689664 1627944 5690696 +1627824 5686272 1626464 5689664 1627904 5686384 1630504 5688864 +1627904 5686384 1626464 5689664 1630424 5688880 1630504 5688864 +1626464 5689664 1627904 5686384 1627824 5686272 1626096 5687664 +1627824 5686272 1626096 5687632 1626096 5687664 1627904 5686384 +1627904 5686384 1630504 5688864 1627824 5686272 1626096 5687632 +1627824 5686272 1627672 5686200 1626096 5687632 1627904 5686384 +1627672 5686200 1626048 5687512 1626096 5687632 1627904 5686384 +1626096 5687632 1626096 5687664 1627904 5686384 1626048 5687512 +1627824 5686272 1627672 5686200 1627904 5686384 1630504 5688864 +1627672 5686200 1626048 5687512 1627904 5686384 1627824 5686272 +1626464 5689664 1630424 5688880 1627904 5686384 1626096 5687664 +1626096 5687664 1626464 5689664 1627904 5686384 1626096 5687632 +1627824 5686272 1627904 5686384 1630504 5688864 1630544 5688856 +1627904 5686384 1630424 5688880 1630504 5688864 1630544 5688856 +1627824 5686272 1627904 5686384 1630544 5688856 1630632 5688872 +1627824 5686272 1627672 5686200 1627904 5686384 1630632 5688872 +1627904 5686384 1630504 5688864 1630544 5688856 1630632 5688872 +1626464 5689664 1627904 5686384 1626096 5687664 1626424 5689616 +1626096 5687664 1626352 5689536 1626424 5689616 1627904 5686384 +1626464 5689664 1630424 5688880 1627904 5686384 1626424 5689616 +1627904 5686384 1626096 5687632 1626096 5687664 1626424 5689616 +1626048 5687512 1626064 5687560 1626096 5687632 1627904 5686384 +1627824 5686272 1627904 5686384 1630632 5688872 1630728 5688896 +1627824 5686272 1627904 5686384 1630728 5688896 1630816 5688920 +1627904 5686384 1630544 5688856 1630632 5688872 1630728 5688896 +1627824 5686272 1627904 5686384 1630816 5688920 1630904 5688944 +1627904 5686384 1630728 5688896 1630816 5688920 1630904 5688944 +1627824 5686272 1627672 5686200 1627904 5686384 1630904 5688944 +1627824 5686272 1627904 5686384 1630904 5688944 1628096 5680872 +1627824 5686272 1627904 5686384 1628096 5680872 1628016 5680960 +1627904 5686384 1630816 5688920 1630904 5688944 1628096 5680872 +1630904 5688944 1631080 5689008 1628096 5680872 1627904 5686384 +1627824 5686272 1627672 5686200 1627904 5686384 1628096 5680872 +1627904 5686384 1630632 5688872 1630728 5688896 1630816 5688920 +1627672 5686200 1626016 5687448 1626048 5687512 1627904 5686384 +1627904 5686384 1628088 5686560 1630504 5688864 1630544 5688856 +1630424 5688880 1628088 5686560 1627904 5686384 1626464 5689664 +1630424 5688880 1628088 5686560 1626464 5689664 1627944 5690696 +1626464 5689664 1627856 5690720 1627944 5690696 1628088 5686560 +1630424 5688880 1628088 5686560 1627944 5690696 1628024 5690712 +1628088 5686560 1627904 5686384 1626464 5689664 1627944 5690696 +1627904 5686384 1626464 5689664 1628088 5686560 1630544 5688856 +1630424 5688880 1630504 5688864 1628088 5686560 1627944 5690696 +1627904 5686384 1626424 5689616 1626464 5689664 1628088 5686560 +1626464 5689664 1627944 5690696 1628088 5686560 1626424 5689616 +1627904 5686384 1626424 5689616 1628088 5686560 1630544 5688856 +1628088 5686560 1630424 5688880 1630504 5688864 1630544 5688856 +1627904 5686384 1628088 5686560 1630544 5688856 1630632 5688872 +1628088 5686560 1630504 5688864 1630544 5688856 1630632 5688872 +1627904 5686384 1628088 5686560 1630632 5688872 1630728 5688896 +1627904 5686384 1626424 5689616 1628088 5686560 1630728 5688896 +1628088 5686560 1630544 5688856 1630632 5688872 1630728 5688896 +1627904 5686384 1626096 5687664 1626424 5689616 1628088 5686560 +1626096 5687664 1626352 5689536 1626424 5689616 1628088 5686560 +1627904 5686384 1626096 5687664 1628088 5686560 1630728 5688896 +1626424 5689616 1626464 5689664 1628088 5686560 1626096 5687664 +1627904 5686384 1626096 5687632 1626096 5687664 1628088 5686560 +1627904 5686384 1626048 5687512 1626096 5687632 1628088 5686560 +1627904 5686384 1626096 5687632 1628088 5686560 1630728 5688896 +1626096 5687664 1626424 5689616 1628088 5686560 1626096 5687632 +1627904 5686384 1628088 5686560 1630728 5688896 1630816 5688920 +1627904 5686384 1628088 5686560 1630816 5688920 1630904 5688944 +1628088 5686560 1630632 5688872 1630728 5688896 1630816 5688920 +1627904 5686384 1628088 5686560 1630904 5688944 1628096 5680872 +1628088 5686560 1630816 5688920 1630904 5688944 1628096 5680872 +1630904 5688944 1631080 5689008 1628096 5680872 1628088 5686560 +1630904 5688944 1631080 5689008 1628088 5686560 1630816 5688920 +1628096 5680872 1627904 5686384 1628088 5686560 1631080 5689008 +1631080 5689008 1628112 5680824 1628096 5680872 1628088 5686560 +1630904 5688944 1630992 5688984 1631080 5689008 1628088 5686560 +1627904 5686384 1628088 5686560 1628096 5680872 1627824 5686272 +1628096 5680872 1628016 5680960 1627824 5686272 1628088 5686560 +1628088 5686560 1631080 5689008 1628096 5680872 1628016 5680960 +1627824 5686272 1627904 5686384 1628088 5686560 1628016 5680960 +1627904 5686384 1626096 5687632 1628088 5686560 1627824 5686272 +1628016 5680960 1627280 5685920 1627824 5686272 1628088 5686560 +1628088 5686560 1630728 5688896 1630816 5688920 1630904 5688944 +1628088 5686560 1628312 5686720 1628096 5680872 1628016 5680960 +1628088 5686560 1628312 5686720 1628016 5680960 1627824 5686272 +1628312 5686720 1628096 5680872 1628016 5680960 1627824 5686272 +1631080 5689008 1628312 5686720 1628088 5686560 1630904 5688944 +1628088 5686560 1630816 5688920 1630904 5688944 1628312 5686720 +1630904 5688944 1631080 5689008 1628312 5686720 1630816 5688920 +1628096 5680872 1628312 5686720 1631080 5689008 1628112 5680824 +1631080 5689008 1628312 5686720 1630904 5688944 1630992 5688984 +1628312 5686720 1631080 5689008 1628096 5680872 1628016 5680960 +1628088 5686560 1628312 5686720 1627824 5686272 1627904 5686384 +1628088 5686560 1630816 5688920 1628312 5686720 1627824 5686272 +1631080 5689008 1628096 5680872 1628312 5686720 1630904 5688944 +1628016 5680960 1627280 5685920 1627824 5686272 1628312 5686720 +1628088 5686560 1630728 5688896 1630816 5688920 1628312 5686720 +1630816 5688920 1630904 5688944 1628312 5686720 1630728 5688896 +1628088 5686560 1630632 5688872 1630728 5688896 1628312 5686720 +1628088 5686560 1630632 5688872 1628312 5686720 1627824 5686272 +1628088 5686560 1630544 5688856 1630632 5688872 1628312 5686720 +1628088 5686560 1630504 5688864 1630544 5688856 1628312 5686720 +1630632 5688872 1630728 5688896 1628312 5686720 1630544 5688856 +1628088 5686560 1630504 5688864 1628312 5686720 1627824 5686272 +1628088 5686560 1630424 5688880 1630504 5688864 1628312 5686720 +1630504 5688864 1630544 5688856 1628312 5686720 1630424 5688880 +1628088 5686560 1627944 5690696 1630424 5688880 1628312 5686720 +1627944 5690696 1628024 5690712 1630424 5688880 1628312 5686720 +1628088 5686560 1626464 5689664 1627944 5690696 1628312 5686720 +1626464 5689664 1627856 5690720 1627944 5690696 1628312 5686720 +1628024 5690712 1630424 5688928 1630424 5688880 1628312 5686720 +1630424 5688880 1630504 5688864 1628312 5686720 1628024 5690712 +1628088 5686560 1626424 5689616 1626464 5689664 1628312 5686720 +1626464 5689664 1627944 5690696 1628312 5686720 1626424 5689616 +1627944 5690696 1628024 5690712 1628312 5686720 1626464 5689664 +1628088 5686560 1626424 5689616 1628312 5686720 1627824 5686272 +1628088 5686560 1626096 5687664 1626424 5689616 1628312 5686720 +1626096 5687664 1626352 5689536 1626424 5689616 1628312 5686720 +1626424 5689616 1626464 5689664 1628312 5686720 1626096 5687664 +1628088 5686560 1626096 5687664 1628312 5686720 1627824 5686272 +1630544 5688856 1630632 5688872 1628312 5686720 1630504 5688864 +1628088 5686560 1626096 5687632 1626096 5687664 1628312 5686720 +1630728 5688896 1630816 5688920 1628312 5686720 1630632 5688872 +1628096 5680872 1628464 5686776 1631080 5689008 1628112 5680824 +1628312 5686720 1628464 5686776 1628096 5680872 1628016 5680960 +1628464 5686776 1631080 5689008 1628096 5680872 1628016 5680960 +1628312 5686720 1628464 5686776 1628016 5680960 1627824 5686272 +1628312 5686720 1628464 5686776 1627824 5686272 1628088 5686560 +1628464 5686776 1628016 5680960 1627824 5686272 1628088 5686560 +1628464 5686776 1628096 5680872 1628016 5680960 1627824 5686272 +1627824 5686272 1627904 5686384 1628088 5686560 1628464 5686776 +1631080 5689008 1628464 5686776 1628312 5686720 1630904 5688944 +1628312 5686720 1630816 5688920 1630904 5688944 1628464 5686776 +1628312 5686720 1630728 5688896 1630816 5688920 1628464 5686776 +1630816 5688920 1630904 5688944 1628464 5686776 1630728 5688896 +1631080 5689008 1628464 5686776 1630904 5688944 1630992 5688984 +1630904 5688944 1631080 5689008 1628464 5686776 1630816 5688920 +1628312 5686720 1630728 5688896 1628464 5686776 1628088 5686560 +1628016 5680960 1627280 5685920 1627824 5686272 1628464 5686776 +1631080 5689008 1628096 5680872 1628464 5686776 1630904 5688944 +1628312 5686720 1630632 5688872 1630728 5688896 1628464 5686776 +1630728 5688896 1630816 5688920 1628464 5686776 1630632 5688872 +1628312 5686720 1630544 5688856 1630632 5688872 1628464 5686776 +1628312 5686720 1630544 5688856 1628464 5686776 1628088 5686560 +1628312 5686720 1630504 5688864 1630544 5688856 1628464 5686776 +1628312 5686720 1630424 5688880 1630504 5688864 1628464 5686776 +1630544 5688856 1630632 5688872 1628464 5686776 1630504 5688864 +1628312 5686720 1628024 5690712 1630424 5688880 1628464 5686776 +1630424 5688880 1630504 5688864 1628464 5686776 1628024 5690712 +1628312 5686720 1627944 5690696 1628024 5690712 1628464 5686776 +1628024 5690712 1630424 5688928 1630424 5688880 1628464 5686776 +1628024 5690712 1630424 5688880 1628464 5686776 1627944 5690696 +1628312 5686720 1626464 5689664 1627944 5690696 1628464 5686776 +1626464 5689664 1627856 5690720 1627944 5690696 1628464 5686776 +1627944 5690696 1628024 5690712 1628464 5686776 1626464 5689664 +1628312 5686720 1626424 5689616 1626464 5689664 1628464 5686776 +1628312 5686720 1626096 5687664 1626424 5689616 1628464 5686776 +1626464 5689664 1627944 5690696 1628464 5686776 1626424 5689616 +1628312 5686720 1626424 5689616 1628464 5686776 1628088 5686560 +1630504 5688864 1630544 5688856 1628464 5686776 1630424 5688880 +1630632 5688872 1630728 5688896 1628464 5686776 1630544 5688856 +1628464 5686776 1628992 5686936 1628096 5680872 1628016 5680960 +1628464 5686776 1631080 5689008 1628992 5686936 1628016 5680960 +1628096 5680872 1628992 5686936 1631080 5689008 1628112 5680824 +1631080 5689008 1628144 5680632 1628112 5680824 1628992 5686936 +1628464 5686776 1628992 5686936 1628016 5680960 1627824 5686272 +1628992 5686936 1628096 5680872 1628016 5680960 1627824 5686272 +1628464 5686776 1631080 5689008 1628992 5686936 1627824 5686272 +1628464 5686776 1628992 5686936 1627824 5686272 1628088 5686560 +1628016 5680960 1627280 5685920 1627824 5686272 1628992 5686936 +1628992 5686936 1628464 5686776 1631080 5689008 1628112 5680824 +1631080 5689008 1628992 5686936 1628464 5686776 1630904 5688944 +1628992 5686936 1627824 5686272 1628464 5686776 1630904 5688944 +1631080 5689008 1628992 5686936 1630904 5688944 1630992 5688984 +1628464 5686776 1630816 5688920 1630904 5688944 1628992 5686936 +1628464 5686776 1630816 5688920 1628992 5686936 1627824 5686272 +1628464 5686776 1630728 5688896 1630816 5688920 1628992 5686936 +1628464 5686776 1630632 5688872 1630728 5688896 1628992 5686936 +1628464 5686776 1630632 5688872 1628992 5686936 1627824 5686272 +1630728 5688896 1630816 5688920 1628992 5686936 1630632 5688872 +1630816 5688920 1630904 5688944 1628992 5686936 1630728 5688896 +1631080 5689008 1628112 5680824 1628992 5686936 1630904 5688944 +1630904 5688944 1631080 5689008 1628992 5686936 1630816 5688920 +1628992 5686936 1628112 5680824 1628096 5680872 1628016 5680960 +1628464 5686776 1630544 5688856 1630632 5688872 1628992 5686936 +1630632 5688872 1630728 5688896 1628992 5686936 1630544 5688856 +1628464 5686776 1630544 5688856 1628992 5686936 1627824 5686272 +1628464 5686776 1630504 5688864 1630544 5688856 1628992 5686936 +1628464 5686776 1630504 5688864 1628992 5686936 1627824 5686272 +1628464 5686776 1630424 5688880 1630504 5688864 1628992 5686936 +1628464 5686776 1628024 5690712 1630424 5688880 1628992 5686936 +1628464 5686776 1628024 5690712 1628992 5686936 1627824 5686272 +1630504 5688864 1630544 5688856 1628992 5686936 1630424 5688880 +1628024 5690712 1630424 5688928 1630424 5688880 1628992 5686936 +1628464 5686776 1627944 5690696 1628024 5690712 1628992 5686936 +1628024 5690712 1630424 5688880 1628992 5686936 1627944 5690696 +1628464 5686776 1627944 5690696 1628992 5686936 1627824 5686272 +1628464 5686776 1626464 5689664 1627944 5690696 1628992 5686936 +1628464 5686776 1626464 5689664 1628992 5686936 1627824 5686272 +1626464 5689664 1627856 5690720 1627944 5690696 1628992 5686936 +1627944 5690696 1628024 5690712 1628992 5686936 1626464 5689664 +1628464 5686776 1626424 5689616 1626464 5689664 1628992 5686936 +1630424 5688880 1630504 5688864 1628992 5686936 1628024 5690712 +1630544 5688856 1630632 5688872 1628992 5686936 1630504 5688864 +1628992 5686936 1629064 5686992 1628112 5680824 1628096 5680872 +1628112 5680824 1629064 5686992 1631080 5689008 1628144 5680632 +1628992 5686936 1631080 5689008 1629064 5686992 1628096 5680872 +1631080 5689008 1629064 5686992 1628992 5686936 1630904 5688944 +1631080 5689008 1629064 5686992 1630904 5688944 1630992 5688984 +1629064 5686992 1628096 5680872 1628992 5686936 1630904 5688944 +1628992 5686936 1630816 5688920 1630904 5688944 1629064 5686992 +1628992 5686936 1630728 5688896 1630816 5688920 1629064 5686992 +1628992 5686936 1630632 5688872 1630728 5688896 1629064 5686992 +1628992 5686936 1630544 5688856 1630632 5688872 1629064 5686992 +1630632 5688872 1630728 5688896 1629064 5686992 1630544 5688856 +1630728 5688896 1630816 5688920 1629064 5686992 1630632 5688872 +1628992 5686936 1630544 5688856 1629064 5686992 1628096 5680872 +1630904 5688944 1631080 5689008 1629064 5686992 1630816 5688920 +1630816 5688920 1630904 5688944 1629064 5686992 1630728 5688896 +1628992 5686936 1629064 5686992 1628096 5680872 1628016 5680960 +1629064 5686992 1631080 5689008 1628112 5680824 1628096 5680872 +1631080 5689008 1628112 5680824 1629064 5686992 1630904 5688944 +1628992 5686936 1630504 5688864 1630544 5688856 1629064 5686992 +1630544 5688856 1630632 5688872 1629064 5686992 1630504 5688864 +1628992 5686936 1630424 5688880 1630504 5688864 1629064 5686992 +1628992 5686936 1628024 5690712 1630424 5688880 1629064 5686992 +1628992 5686936 1627944 5690696 1628024 5690712 1629064 5686992 +1630424 5688880 1630504 5688864 1629064 5686992 1628024 5690712 +1628024 5690712 1630424 5688928 1630424 5688880 1629064 5686992 +1628992 5686936 1626464 5689664 1627944 5690696 1629064 5686992 +1627944 5690696 1628024 5690712 1629064 5686992 1626464 5689664 +1626464 5689664 1627856 5690720 1627944 5690696 1629064 5686992 +1628992 5686936 1628464 5686776 1626464 5689664 1629064 5686992 +1626464 5689664 1627944 5690696 1629064 5686992 1628464 5686776 +1628464 5686776 1626424 5689616 1626464 5689664 1629064 5686992 +1628024 5690712 1630424 5688880 1629064 5686992 1627944 5690696 +1628992 5686936 1628464 5686776 1629064 5686992 1628096 5680872 +1630504 5688864 1630544 5688856 1629064 5686992 1630424 5688880 +1628112 5680824 1629096 5687008 1631080 5689008 1628144 5680632 +1629064 5686992 1629096 5687008 1628112 5680824 1628096 5680872 +1629096 5687008 1631080 5689008 1628112 5680824 1628096 5680872 +1629064 5686992 1629096 5687008 1628096 5680872 1628992 5686936 +1628096 5680872 1628016 5680960 1628992 5686936 1629096 5687008 +1629096 5687008 1628112 5680824 1628096 5680872 1628992 5686936 +1631080 5689008 1629096 5687008 1629064 5686992 1630904 5688944 +1631080 5689008 1629096 5687008 1630904 5688944 1630992 5688984 +1631080 5689008 1628112 5680824 1629096 5687008 1630904 5688944 +1629064 5686992 1630816 5688920 1630904 5688944 1629096 5687008 +1629064 5686992 1630728 5688896 1630816 5688920 1629096 5687008 +1629064 5686992 1630632 5688872 1630728 5688896 1629096 5687008 +1629064 5686992 1630544 5688856 1630632 5688872 1629096 5687008 +1629064 5686992 1630504 5688864 1630544 5688856 1629096 5687008 +1630544 5688856 1630632 5688872 1629096 5687008 1630504 5688864 +1630632 5688872 1630728 5688896 1629096 5687008 1630544 5688856 +1630816 5688920 1630904 5688944 1629096 5687008 1630728 5688896 +1630728 5688896 1630816 5688920 1629096 5687008 1630632 5688872 +1630904 5688944 1631080 5689008 1629096 5687008 1630816 5688920 +1629064 5686992 1630504 5688864 1629096 5687008 1628992 5686936 +1629064 5686992 1630424 5688880 1630504 5688864 1629096 5687008 +1630504 5688864 1630544 5688856 1629096 5687008 1630424 5688880 +1629064 5686992 1628024 5690712 1630424 5688880 1629096 5687008 +1628024 5690712 1630424 5688928 1630424 5688880 1629096 5687008 +1629064 5686992 1627944 5690696 1628024 5690712 1629096 5687008 +1629064 5686992 1626464 5689664 1627944 5690696 1629096 5687008 +1628024 5690712 1630424 5688880 1629096 5687008 1627944 5690696 +1629064 5686992 1627944 5690696 1629096 5687008 1628992 5686936 +1630424 5688880 1630504 5688864 1629096 5687008 1628024 5690712 +1629064 5686992 1629000 5687064 1627944 5690696 1629096 5687008 +1627944 5690696 1629000 5687064 1626464 5689664 1627856 5690720 +1626464 5689664 1629000 5687064 1629064 5686992 1628464 5686776 +1629064 5686992 1628992 5686936 1628464 5686776 1629000 5687064 +1628464 5686776 1626464 5689664 1629000 5687064 1628992 5686936 +1629000 5687064 1626464 5689664 1627944 5690696 1629096 5687008 +1629064 5686992 1628992 5686936 1629000 5687064 1629096 5687008 +1626464 5689664 1629000 5687064 1628464 5686776 1626424 5689616 +1626464 5689664 1627944 5690696 1629000 5687064 1628464 5686776 +1627944 5690696 1628024 5690712 1629096 5687008 1629000 5687064 +1629096 5687008 1629064 5686992 1629000 5687064 1628024 5690712 +1628024 5690712 1630424 5688880 1629096 5687008 1629000 5687064 +1629096 5687008 1629064 5686992 1629000 5687064 1630424 5688880 +1628024 5690712 1630424 5688928 1630424 5688880 1629000 5687064 +1627944 5690696 1628024 5690712 1629000 5687064 1626464 5689664 +1628024 5690712 1630424 5688880 1629000 5687064 1627944 5690696 +1630424 5688880 1630504 5688864 1629096 5687008 1629000 5687064 +1628464 5686776 1628968 5687080 1629000 5687064 1628992 5686936 +1629000 5687064 1629064 5686992 1628992 5686936 1628968 5687080 +1628464 5686776 1626464 5689664 1628968 5687080 1628992 5686936 +1628968 5687080 1626464 5689664 1629000 5687064 1628992 5686936 +1626464 5689664 1628968 5687080 1628464 5686776 1626424 5689616 +1628464 5686776 1628312 5686720 1626424 5689616 1628968 5687080 +1626464 5689664 1629000 5687064 1628968 5687080 1626424 5689616 +1628968 5687080 1628992 5686936 1628464 5686776 1626424 5689616 +1629000 5687064 1628968 5687080 1626464 5689664 1627944 5690696 +1626464 5689664 1627856 5690720 1627944 5690696 1628968 5687080 +1628968 5687080 1626424 5689616 1626464 5689664 1627944 5690696 +1629000 5687064 1628968 5687080 1627944 5690696 1628024 5690712 +1628968 5687080 1626464 5689664 1627944 5690696 1628024 5690712 +1629000 5687064 1628992 5686936 1628968 5687080 1628024 5690712 +1629000 5687064 1628968 5687080 1628024 5690712 1630424 5688880 +1629000 5687064 1628968 5687080 1630424 5688880 1629096 5687008 +1628024 5690712 1630424 5688928 1630424 5688880 1628968 5687080 +1628968 5687080 1627944 5690696 1628024 5690712 1630424 5688928 +1629000 5687064 1628992 5686936 1628968 5687080 1630424 5688880 +1630424 5688880 1629000 5687064 1628968 5687080 1630424 5688928 +1628024 5690712 1628112 5690744 1630424 5688928 1628968 5687080 +1626424 5689616 1628936 5687072 1628464 5686776 1628312 5686720 +1628936 5687072 1628968 5687080 1628464 5686776 1628312 5686720 +1626424 5689616 1628936 5687072 1628312 5686720 1626096 5687664 +1626424 5689616 1628968 5687080 1628936 5687072 1628312 5686720 +1628464 5686776 1628936 5687072 1628968 5687080 1628992 5686936 +1628936 5687072 1626424 5689616 1628968 5687080 1628992 5686936 +1628464 5686776 1628312 5686720 1628936 5687072 1628992 5686936 +1628968 5687080 1629000 5687064 1628992 5686936 1628936 5687072 +1628968 5687080 1629000 5687064 1628936 5687072 1626424 5689616 +1628992 5686936 1628464 5686776 1628936 5687072 1629000 5687064 +1629000 5687064 1629064 5686992 1628992 5686936 1628936 5687072 +1628968 5687080 1628936 5687072 1626424 5689616 1626464 5689664 +1628968 5687080 1629000 5687064 1628936 5687072 1626464 5689664 +1628968 5687080 1628936 5687072 1626464 5689664 1627944 5690696 +1628968 5687080 1629000 5687064 1628936 5687072 1627944 5690696 +1626464 5689664 1627856 5690720 1627944 5690696 1628936 5687072 +1628936 5687072 1628312 5686720 1626424 5689616 1626464 5689664 +1628968 5687080 1628936 5687072 1627944 5690696 1628024 5690712 +1628968 5687080 1629000 5687064 1628936 5687072 1628024 5690712 +1628936 5687072 1626464 5689664 1627944 5690696 1628024 5690712 +1628968 5687080 1628936 5687072 1628024 5690712 1630424 5688928 +1628936 5687072 1626424 5689616 1626464 5689664 1627944 5690696 +1628312 5686720 1628744 5687024 1628936 5687072 1628464 5686776 +1628936 5687072 1628992 5686936 1628464 5686776 1628744 5687024 +1628936 5687072 1629000 5687064 1628992 5686936 1628744 5687024 +1628464 5686776 1628312 5686720 1628744 5687024 1628992 5686936 +1628312 5686720 1626424 5689616 1628744 5687024 1628464 5686776 +1626424 5689616 1628744 5687024 1628312 5686720 1626096 5687664 +1626424 5689616 1628744 5687024 1626096 5687664 1626352 5689536 +1628744 5687024 1628464 5686776 1628312 5686720 1626096 5687664 +1626424 5689616 1628936 5687072 1628744 5687024 1626352 5689536 +1628744 5687024 1628312 5686720 1626096 5687664 1626352 5689536 +1628936 5687072 1628744 5687024 1626424 5689616 1626464 5689664 +1628744 5687024 1626352 5689536 1626424 5689616 1626464 5689664 +1628936 5687072 1628744 5687024 1626464 5689664 1627944 5690696 +1626464 5689664 1627856 5690720 1627944 5690696 1628744 5687024 +1628936 5687072 1628744 5687024 1627944 5690696 1628024 5690712 +1628744 5687024 1626424 5689616 1626464 5689664 1627944 5690696 +1628936 5687072 1628744 5687024 1628024 5690712 1628968 5687080 +1628744 5687024 1626464 5689664 1627944 5690696 1628024 5690712 +1628744 5687024 1628024 5690712 1628936 5687072 1628992 5686936 +1628312 5686720 1628088 5686560 1626096 5687664 1628744 5687024 +1626096 5687664 1626064 5687736 1626352 5689536 1628744 5687024 +1628312 5686720 1628632 5687032 1628744 5687024 1628464 5686776 +1628744 5687024 1628992 5686936 1628464 5686776 1628632 5687032 +1628312 5686720 1626096 5687664 1628632 5687032 1628464 5686776 +1628632 5687032 1626096 5687664 1628744 5687024 1628464 5686776 +1628744 5687024 1628632 5687032 1626096 5687664 1626352 5689536 +1628744 5687024 1628632 5687032 1626352 5689536 1626424 5689616 +1628744 5687024 1628464 5686776 1628632 5687032 1626424 5689616 +1628744 5687024 1628632 5687032 1626424 5689616 1626464 5689664 +1628632 5687032 1626352 5689536 1626424 5689616 1626464 5689664 +1628744 5687024 1628464 5686776 1628632 5687032 1626464 5689664 +1628632 5687032 1626096 5687664 1626352 5689536 1626424 5689616 +1628632 5687032 1628312 5686720 1626096 5687664 1626352 5689536 +1628744 5687024 1628632 5687032 1626464 5689664 1627944 5690696 +1626464 5689664 1627856 5690720 1627944 5690696 1628632 5687032 +1628744 5687024 1628464 5686776 1628632 5687032 1627944 5690696 +1628632 5687032 1626424 5689616 1626464 5689664 1627944 5690696 +1628744 5687024 1628632 5687032 1627944 5690696 1628024 5690712 +1628744 5687024 1628632 5687032 1628024 5690712 1628936 5687072 +1628744 5687024 1628464 5686776 1628632 5687032 1628936 5687072 +1628632 5687032 1626464 5689664 1627944 5690696 1628024 5690712 +1628024 5690712 1628968 5687080 1628936 5687072 1628632 5687032 +1628936 5687072 1628744 5687024 1628632 5687032 1628968 5687080 +1628024 5690712 1630424 5688928 1628968 5687080 1628632 5687032 +1628632 5687032 1627944 5690696 1628024 5690712 1628968 5687080 +1626096 5687664 1628632 5687032 1628312 5686720 1628088 5686560 +1626096 5687664 1626064 5687736 1626352 5689536 1628632 5687032 +1626352 5689536 1626424 5689616 1628632 5687032 1626064 5687736 +1626096 5687664 1626064 5687736 1628632 5687032 1628312 5686720 +1626064 5687736 1626264 5689472 1626352 5689536 1628632 5687032 +1628632 5687032 1628648 5687064 1628968 5687080 1628936 5687072 +1628632 5687032 1628648 5687064 1628936 5687072 1628744 5687024 +1628632 5687032 1628024 5690712 1628648 5687064 1628744 5687024 +1628648 5687064 1628968 5687080 1628936 5687072 1628744 5687024 +1628968 5687080 1628648 5687064 1628024 5690712 1630424 5688928 +1628968 5687080 1628648 5687064 1630424 5688928 1630424 5688880 +1628648 5687064 1628632 5687032 1628024 5690712 1630424 5688928 +1628648 5687064 1628024 5690712 1630424 5688928 1630424 5688880 +1628024 5690712 1628648 5687064 1628632 5687032 1627944 5690696 +1628024 5690712 1630424 5688928 1628648 5687064 1627944 5690696 +1628648 5687064 1628744 5687024 1628632 5687032 1627944 5690696 +1628632 5687032 1626464 5689664 1627944 5690696 1628648 5687064 +1626464 5689664 1627856 5690720 1627944 5690696 1628648 5687064 +1628632 5687032 1626464 5689664 1628648 5687064 1628744 5687024 +1628632 5687032 1626424 5689616 1626464 5689664 1628648 5687064 +1628632 5687032 1626352 5689536 1626424 5689616 1628648 5687064 +1628632 5687032 1626352 5689536 1628648 5687064 1628744 5687024 +1626424 5689616 1626464 5689664 1628648 5687064 1626352 5689536 +1628632 5687032 1626064 5687736 1626352 5689536 1628648 5687064 +1626352 5689536 1626424 5689616 1628648 5687064 1626064 5687736 +1628632 5687032 1626064 5687736 1628648 5687064 1628744 5687024 +1626464 5689664 1627944 5690696 1628648 5687064 1626424 5689616 +1627944 5690696 1628024 5690712 1628648 5687064 1626464 5689664 +1626064 5687736 1626264 5689472 1626352 5689536 1628648 5687064 +1628632 5687032 1626096 5687664 1626064 5687736 1628648 5687064 +1628632 5687032 1626096 5687664 1628648 5687064 1628744 5687024 +1626064 5687736 1626352 5689536 1628648 5687064 1626096 5687664 +1628632 5687032 1628312 5686720 1626096 5687664 1628648 5687064 +1628632 5687032 1628312 5686720 1628648 5687064 1628744 5687024 +1628632 5687032 1628464 5686776 1628312 5686720 1628648 5687064 +1628312 5686720 1628088 5686560 1626096 5687664 1628648 5687064 +1626096 5687664 1626064 5687736 1628648 5687064 1628312 5686720 +1628968 5687080 1628648 5687064 1630424 5688880 1629000 5687064 +1628648 5687064 1630424 5688880 1628968 5687080 1628936 5687072 +1628024 5690712 1628112 5690744 1630424 5688928 1628648 5687064 +1628024 5690712 1628680 5687152 1628648 5687064 1627944 5690696 +1628024 5690712 1630424 5688928 1628680 5687152 1627944 5690696 +1628680 5687152 1630424 5688928 1628648 5687064 1627944 5690696 +1628648 5687064 1628680 5687152 1630424 5688928 1630424 5688880 +1628680 5687152 1628024 5690712 1630424 5688928 1630424 5688880 +1628648 5687064 1628680 5687152 1630424 5688880 1628968 5687080 +1628648 5687064 1627944 5690696 1628680 5687152 1628968 5687080 +1628680 5687152 1630424 5688928 1630424 5688880 1628968 5687080 +1628648 5687064 1626464 5689664 1627944 5690696 1628680 5687152 +1627944 5690696 1628024 5690712 1628680 5687152 1626464 5689664 +1626464 5689664 1627856 5690720 1627944 5690696 1628680 5687152 +1628648 5687064 1626464 5689664 1628680 5687152 1628968 5687080 +1628648 5687064 1626424 5689616 1626464 5689664 1628680 5687152 +1628648 5687064 1626424 5689616 1628680 5687152 1628968 5687080 +1628648 5687064 1626352 5689536 1626424 5689616 1628680 5687152 +1628648 5687064 1626064 5687736 1626352 5689536 1628680 5687152 +1628648 5687064 1626064 5687736 1628680 5687152 1628968 5687080 +1626352 5689536 1626424 5689616 1628680 5687152 1626064 5687736 +1628648 5687064 1626096 5687664 1626064 5687736 1628680 5687152 +1626064 5687736 1626352 5689536 1628680 5687152 1626096 5687664 +1628648 5687064 1626096 5687664 1628680 5687152 1628968 5687080 +1626424 5689616 1626464 5689664 1628680 5687152 1626352 5689536 +1626464 5689664 1627944 5690696 1628680 5687152 1626424 5689616 +1626064 5687736 1626264 5689472 1626352 5689536 1628680 5687152 +1628648 5687064 1628312 5686720 1626096 5687664 1628680 5687152 +1628648 5687064 1628312 5686720 1628680 5687152 1628968 5687080 +1626096 5687664 1626064 5687736 1628680 5687152 1628312 5686720 +1628648 5687064 1628632 5687032 1628312 5686720 1628680 5687152 +1628648 5687064 1628632 5687032 1628680 5687152 1628968 5687080 +1628632 5687032 1628464 5686776 1628312 5686720 1628680 5687152 +1628312 5686720 1628088 5686560 1626096 5687664 1628680 5687152 +1628312 5686720 1626096 5687664 1628680 5687152 1628632 5687032 +1630424 5688880 1629000 5687064 1628968 5687080 1628680 5687152 +1628648 5687064 1628680 5687152 1628968 5687080 1628936 5687072 +1628680 5687152 1630424 5688880 1628968 5687080 1628936 5687072 +1628648 5687064 1628632 5687032 1628680 5687152 1628936 5687072 +1628648 5687064 1628680 5687152 1628936 5687072 1628744 5687024 +1628648 5687064 1628680 5687152 1628744 5687024 1628632 5687032 +1628648 5687064 1628632 5687032 1628680 5687152 1628744 5687024 +1628680 5687152 1628968 5687080 1628936 5687072 1628744 5687024 +1630424 5688928 1628680 5687152 1628024 5690712 1628112 5690744 +1630424 5688928 1628704 5687176 1628680 5687152 1628024 5690712 +1628680 5687152 1627944 5690696 1628024 5690712 1628704 5687176 +1628680 5687152 1626464 5689664 1627944 5690696 1628704 5687176 +1628024 5690712 1630424 5688928 1628704 5687176 1627944 5690696 +1628704 5687176 1630424 5688880 1628680 5687152 1626464 5689664 +1626464 5689664 1627856 5690720 1627944 5690696 1628704 5687176 +1628680 5687152 1628704 5687176 1630424 5688880 1628968 5687080 +1628680 5687152 1626464 5689664 1628704 5687176 1628968 5687080 +1628704 5687176 1630424 5688928 1630424 5688880 1628968 5687080 +1628680 5687152 1628704 5687176 1628968 5687080 1628936 5687072 +1628680 5687152 1626464 5689664 1628704 5687176 1628936 5687072 +1628704 5687176 1630424 5688880 1628968 5687080 1628936 5687072 +1627944 5690696 1628024 5690712 1628704 5687176 1626464 5689664 +1630424 5688928 1630424 5688880 1628704 5687176 1628024 5690712 +1628680 5687152 1626424 5689616 1626464 5689664 1628704 5687176 +1626464 5689664 1627944 5690696 1628704 5687176 1626424 5689616 +1628680 5687152 1626424 5689616 1628704 5687176 1628936 5687072 +1628680 5687152 1626352 5689536 1626424 5689616 1628704 5687176 +1628680 5687152 1626352 5689536 1628704 5687176 1628936 5687072 +1628680 5687152 1626064 5687736 1626352 5689536 1628704 5687176 +1628680 5687152 1626096 5687664 1626064 5687736 1628704 5687176 +1628680 5687152 1626096 5687664 1628704 5687176 1628936 5687072 +1626064 5687736 1626352 5689536 1628704 5687176 1626096 5687664 +1628680 5687152 1628312 5686720 1626096 5687664 1628704 5687176 +1626352 5689536 1626424 5689616 1628704 5687176 1626064 5687736 +1626424 5689616 1626464 5689664 1628704 5687176 1626352 5689536 +1626064 5687736 1626264 5689472 1626352 5689536 1628704 5687176 +1630424 5688880 1629000 5687064 1628968 5687080 1628704 5687176 +1628680 5687152 1628704 5687176 1628936 5687072 1628744 5687024 +1628680 5687152 1626096 5687664 1628704 5687176 1628744 5687024 +1628704 5687176 1628968 5687080 1628936 5687072 1628744 5687024 +1628680 5687152 1628704 5687176 1628744 5687024 1628648 5687064 +1630424 5688928 1628704 5687176 1628024 5690712 1628112 5690744 +1628024 5690712 1628712 5687304 1628704 5687176 1627944 5690696 +1628024 5690712 1630424 5688928 1628712 5687304 1627944 5690696 +1628712 5687304 1630424 5688928 1628704 5687176 1627944 5690696 +1628704 5687176 1626464 5689664 1627944 5690696 1628712 5687304 +1628704 5687176 1626424 5689616 1626464 5689664 1628712 5687304 +1627944 5690696 1628024 5690712 1628712 5687304 1626464 5689664 +1628704 5687176 1626424 5689616 1628712 5687304 1630424 5688928 +1626464 5689664 1627856 5690720 1627944 5690696 1628712 5687304 +1626464 5689664 1627944 5690696 1628712 5687304 1626424 5689616 +1628704 5687176 1628712 5687304 1630424 5688928 1630424 5688880 +1628704 5687176 1628712 5687304 1630424 5688880 1628968 5687080 +1628712 5687304 1630424 5688928 1630424 5688880 1628968 5687080 +1628704 5687176 1626424 5689616 1628712 5687304 1628968 5687080 +1628712 5687304 1628024 5690712 1630424 5688928 1630424 5688880 +1628704 5687176 1628712 5687304 1628968 5687080 1628936 5687072 +1628712 5687304 1630424 5688880 1628968 5687080 1628936 5687072 +1628704 5687176 1626424 5689616 1628712 5687304 1628936 5687072 +1628704 5687176 1628712 5687304 1628936 5687072 1628744 5687024 +1628704 5687176 1626352 5689536 1626424 5689616 1628712 5687304 +1626424 5689616 1626464 5689664 1628712 5687304 1626352 5689536 +1628704 5687176 1626352 5689536 1628712 5687304 1628936 5687072 +1628704 5687176 1626064 5687736 1626352 5689536 1628712 5687304 +1628704 5687176 1626064 5687736 1628712 5687304 1628936 5687072 +1628704 5687176 1626096 5687664 1626064 5687736 1628712 5687304 +1628704 5687176 1628680 5687152 1626096 5687664 1628712 5687304 +1628704 5687176 1628680 5687152 1628712 5687304 1628936 5687072 +1626096 5687664 1626064 5687736 1628712 5687304 1628680 5687152 +1628680 5687152 1628312 5686720 1626096 5687664 1628712 5687304 +1628680 5687152 1628312 5686720 1628712 5687304 1628704 5687176 +1626096 5687664 1626064 5687736 1628712 5687304 1628312 5686720 +1626064 5687736 1626352 5689536 1628712 5687304 1626096 5687664 +1626352 5689536 1626424 5689616 1628712 5687304 1626064 5687736 +1628312 5686720 1628088 5686560 1626096 5687664 1628712 5687304 +1626064 5687736 1626264 5689472 1626352 5689536 1628712 5687304 +1628680 5687152 1628632 5687032 1628312 5686720 1628712 5687304 +1630424 5688880 1629000 5687064 1628968 5687080 1628712 5687304 +1630424 5688880 1629096 5687008 1629000 5687064 1628712 5687304 +1630424 5688880 1629000 5687064 1628712 5687304 1630424 5688928 +1628968 5687080 1628936 5687072 1628712 5687304 1629000 5687064 +1630424 5688928 1628712 5687304 1628024 5690712 1628112 5690744 +1626064 5687736 1628608 5687384 1628712 5687304 1626096 5687664 +1628712 5687304 1628312 5686720 1626096 5687664 1628608 5687384 +1628712 5687304 1628680 5687152 1628312 5686720 1628608 5687384 +1628712 5687304 1628704 5687176 1628680 5687152 1628608 5687384 +1628312 5686720 1626096 5687664 1628608 5687384 1628680 5687152 +1626096 5687664 1626064 5687736 1628608 5687384 1628312 5686720 +1626064 5687736 1626352 5689536 1628608 5687384 1626096 5687664 +1628712 5687304 1628608 5687384 1626352 5689536 1626424 5689616 +1628712 5687304 1628608 5687384 1626424 5689616 1626464 5689664 +1628712 5687304 1628608 5687384 1626464 5689664 1627944 5690696 +1628608 5687384 1626424 5689616 1626464 5689664 1627944 5690696 +1628712 5687304 1628608 5687384 1627944 5690696 1628024 5690712 +1628712 5687304 1628608 5687384 1628024 5690712 1630424 5688928 +1628608 5687384 1627944 5690696 1628024 5690712 1630424 5688928 +1628712 5687304 1628608 5687384 1630424 5688928 1630424 5688880 +1628712 5687304 1628608 5687384 1630424 5688880 1629000 5687064 +1626464 5689664 1627856 5690720 1627944 5690696 1628608 5687384 +1628608 5687384 1626464 5689664 1627944 5690696 1628024 5690712 +1628608 5687384 1628024 5690712 1630424 5688928 1630424 5688880 +1628608 5687384 1626352 5689536 1626424 5689616 1626464 5689664 +1628608 5687384 1630424 5688880 1628712 5687304 1628680 5687152 +1628608 5687384 1626064 5687736 1626352 5689536 1626424 5689616 +1628312 5686720 1628088 5686560 1626096 5687664 1628608 5687384 +1628312 5686720 1628088 5686560 1628608 5687384 1628680 5687152 +1626096 5687664 1626064 5687736 1628608 5687384 1628088 5686560 +1626352 5689536 1628608 5687384 1626064 5687736 1626264 5689472 +1628680 5687152 1628632 5687032 1628312 5686720 1628608 5687384 +1628632 5687032 1628464 5686776 1628312 5686720 1628608 5687384 +1628312 5686720 1628088 5686560 1628608 5687384 1628632 5687032 +1628680 5687152 1628632 5687032 1628608 5687384 1628712 5687304 +1628680 5687152 1628648 5687064 1628632 5687032 1628608 5687384 +1628680 5687152 1628648 5687064 1628608 5687384 1628712 5687304 +1628632 5687032 1628312 5686720 1628608 5687384 1628648 5687064 +1628088 5686560 1626096 5687632 1626096 5687664 1628608 5687384 +1626096 5687664 1626064 5687736 1628608 5687384 1626096 5687632 +1628088 5686560 1626096 5687632 1628608 5687384 1628312 5686720 +1628088 5686560 1627904 5686384 1626096 5687632 1628608 5687384 +1628024 5690712 1628112 5690744 1630424 5688928 1628608 5687384 +1628024 5690712 1628112 5690744 1628608 5687384 1627944 5690696 +1630424 5688928 1630424 5688880 1628608 5687384 1628112 5690744 +1628112 5690744 1628640 5690984 1630424 5688928 1628608 5687384 +1626064 5687736 1628528 5687408 1628608 5687384 1626096 5687664 +1626064 5687736 1626352 5689536 1628528 5687408 1626096 5687664 +1628528 5687408 1626352 5689536 1628608 5687384 1626096 5687664 +1628608 5687384 1626096 5687632 1626096 5687664 1628528 5687408 +1626096 5687664 1626064 5687736 1628528 5687408 1626096 5687632 +1628608 5687384 1626096 5687632 1628528 5687408 1626352 5689536 +1628608 5687384 1628528 5687408 1626352 5689536 1626424 5689616 +1628608 5687384 1626096 5687632 1628528 5687408 1626424 5689616 +1628528 5687408 1626064 5687736 1626352 5689536 1626424 5689616 +1628608 5687384 1628528 5687408 1626424 5689616 1626464 5689664 +1628608 5687384 1628528 5687408 1626464 5689664 1627944 5690696 +1628608 5687384 1626096 5687632 1628528 5687408 1627944 5690696 +1626464 5689664 1627856 5690720 1627944 5690696 1628528 5687408 +1628608 5687384 1628528 5687408 1627944 5690696 1628024 5690712 +1628528 5687408 1626464 5689664 1627944 5690696 1628024 5690712 +1628608 5687384 1628528 5687408 1628024 5690712 1628112 5690744 +1628608 5687384 1626096 5687632 1628528 5687408 1628112 5690744 +1628528 5687408 1627944 5690696 1628024 5690712 1628112 5690744 +1628528 5687408 1626424 5689616 1626464 5689664 1627944 5690696 +1628528 5687408 1626352 5689536 1626424 5689616 1626464 5689664 +1626352 5689536 1628528 5687408 1626064 5687736 1626264 5689472 +1628608 5687384 1628088 5686560 1626096 5687632 1628528 5687408 +1628608 5687384 1628088 5686560 1628528 5687408 1628112 5690744 +1626096 5687632 1626096 5687664 1628528 5687408 1628088 5686560 +1628608 5687384 1628312 5686720 1628088 5686560 1628528 5687408 +1628608 5687384 1628312 5686720 1628528 5687408 1628112 5690744 +1628608 5687384 1628632 5687032 1628312 5686720 1628528 5687408 +1628608 5687384 1628632 5687032 1628528 5687408 1628112 5690744 +1628632 5687032 1628464 5686776 1628312 5686720 1628528 5687408 +1628312 5686720 1628088 5686560 1628528 5687408 1628632 5687032 +1628088 5686560 1627904 5686384 1626096 5687632 1628528 5687408 +1628608 5687384 1628648 5687064 1628632 5687032 1628528 5687408 +1628608 5687384 1628648 5687064 1628528 5687408 1628112 5690744 +1628632 5687032 1628312 5686720 1628528 5687408 1628648 5687064 +1628608 5687384 1628680 5687152 1628648 5687064 1628528 5687408 +1628608 5687384 1628680 5687152 1628528 5687408 1628112 5690744 +1628608 5687384 1628712 5687304 1628680 5687152 1628528 5687408 +1628648 5687064 1628632 5687032 1628528 5687408 1628680 5687152 +1628088 5686560 1626096 5687632 1628528 5687408 1628312 5686720 +1628608 5687384 1628528 5687408 1628112 5690744 1630424 5688928 +1628528 5687408 1628024 5690712 1628112 5690744 1630424 5688928 +1628608 5687384 1628680 5687152 1628528 5687408 1630424 5688928 +1628608 5687384 1628528 5687408 1630424 5688928 1630424 5688880 +1628608 5687384 1628680 5687152 1628528 5687408 1630424 5688880 +1628608 5687384 1628528 5687408 1630424 5688880 1628712 5687304 +1628528 5687408 1628112 5690744 1630424 5688928 1630424 5688880 +1628112 5690744 1628640 5690984 1630424 5688928 1628528 5687408 +1628528 5687408 1628440 5687400 1626096 5687632 1626096 5687664 +1628528 5687408 1628440 5687400 1626096 5687664 1626064 5687736 +1628528 5687408 1628440 5687400 1626064 5687736 1626352 5689536 +1628440 5687400 1626096 5687664 1626064 5687736 1626352 5689536 +1628528 5687408 1628440 5687400 1626352 5689536 1626424 5689616 +1628440 5687400 1626096 5687632 1626096 5687664 1626064 5687736 +1628528 5687408 1628440 5687400 1626424 5689616 1626464 5689664 +1628440 5687400 1626352 5689536 1626424 5689616 1626464 5689664 +1628528 5687408 1628440 5687400 1626464 5689664 1627944 5690696 +1628528 5687408 1628440 5687400 1627944 5690696 1628024 5690712 +1626464 5689664 1627856 5690720 1627944 5690696 1628440 5687400 +1628528 5687408 1628440 5687400 1628024 5690712 1628112 5690744 +1628440 5687400 1626464 5689664 1627944 5690696 1628024 5690712 +1628440 5687400 1626424 5689616 1626464 5689664 1627944 5690696 +1628528 5687408 1628088 5686560 1628440 5687400 1628024 5690712 +1628440 5687400 1628088 5686560 1626096 5687632 1626096 5687664 +1628440 5687400 1626064 5687736 1626352 5689536 1626424 5689616 +1626096 5687632 1628440 5687400 1628088 5686560 1627904 5686384 +1626064 5687736 1626264 5689472 1626352 5689536 1628440 5687400 +1628088 5686560 1628440 5687400 1628528 5687408 1628312 5686720 +1628528 5687408 1628632 5687032 1628312 5686720 1628440 5687400 +1628632 5687032 1628464 5686776 1628312 5686720 1628440 5687400 +1628632 5687032 1628744 5687024 1628464 5686776 1628440 5687400 +1628528 5687408 1628648 5687064 1628632 5687032 1628440 5687400 +1628632 5687032 1628464 5686776 1628440 5687400 1628648 5687064 +1628440 5687400 1628024 5690712 1628528 5687408 1628648 5687064 +1628088 5686560 1626096 5687632 1628440 5687400 1628312 5686720 +1628528 5687408 1628680 5687152 1628648 5687064 1628440 5687400 +1628648 5687064 1628632 5687032 1628440 5687400 1628680 5687152 +1628528 5687408 1628608 5687384 1628680 5687152 1628440 5687400 +1628528 5687408 1628680 5687152 1628440 5687400 1628024 5690712 +1628312 5686720 1628088 5686560 1628440 5687400 1628464 5686776 +1628440 5687400 1628240 5687320 1626096 5687632 1626096 5687664 +1628440 5687400 1628088 5686560 1628240 5687320 1626096 5687664 +1628240 5687320 1628088 5686560 1626096 5687632 1626096 5687664 +1628440 5687400 1628240 5687320 1626096 5687664 1626064 5687736 +1628440 5687400 1628088 5686560 1628240 5687320 1626064 5687736 +1628440 5687400 1628240 5687320 1626064 5687736 1626352 5689536 +1628440 5687400 1628088 5686560 1628240 5687320 1626352 5689536 +1628240 5687320 1626096 5687664 1626064 5687736 1626352 5689536 +1628440 5687400 1628240 5687320 1626352 5689536 1626424 5689616 +1628440 5687400 1628088 5686560 1628240 5687320 1626424 5689616 +1628240 5687320 1626064 5687736 1626352 5689536 1626424 5689616 +1628440 5687400 1628240 5687320 1626424 5689616 1626464 5689664 +1628440 5687400 1628088 5686560 1628240 5687320 1626464 5689664 +1628440 5687400 1628240 5687320 1626464 5689664 1627944 5690696 +1628240 5687320 1626352 5689536 1626424 5689616 1626464 5689664 +1628088 5686560 1628240 5687320 1628440 5687400 1628312 5686720 +1628240 5687320 1626464 5689664 1628440 5687400 1628312 5686720 +1628240 5687320 1626096 5687632 1626096 5687664 1626064 5687736 +1628088 5686560 1626096 5687632 1628240 5687320 1628312 5686720 +1626096 5687632 1628240 5687320 1628088 5686560 1627904 5686384 +1626096 5687632 1626096 5687664 1628240 5687320 1627904 5686384 +1626096 5687632 1628240 5687320 1627904 5686384 1626048 5687512 +1628240 5687320 1628312 5686720 1628088 5686560 1627904 5686384 +1626064 5687736 1626264 5689472 1626352 5689536 1628240 5687320 +1628440 5687400 1628464 5686776 1628312 5686720 1628240 5687320 +1628440 5687400 1628464 5686776 1628240 5687320 1626464 5689664 +1628312 5686720 1628088 5686560 1628240 5687320 1628464 5686776 +1628440 5687400 1628632 5687032 1628464 5686776 1628240 5687320 +1628440 5687400 1628632 5687032 1628240 5687320 1626464 5689664 +1628632 5687032 1628744 5687024 1628464 5686776 1628240 5687320 +1628440 5687400 1628648 5687064 1628632 5687032 1628240 5687320 +1628464 5686776 1628312 5686720 1628240 5687320 1628632 5687032 +1628240 5687320 1627672 5686840 1626096 5687632 1626096 5687664 +1628240 5687320 1627904 5686384 1627672 5686840 1626096 5687664 +1627672 5686840 1627904 5686384 1626096 5687632 1626096 5687664 +1626096 5687632 1627672 5686840 1627904 5686384 1626048 5687512 +1626096 5687632 1626096 5687664 1627672 5686840 1626048 5687512 +1627904 5686384 1627672 5686200 1626048 5687512 1627672 5686840 +1627672 5686840 1628240 5687320 1627904 5686384 1627672 5686200 +1626048 5687512 1626096 5687632 1627672 5686840 1627672 5686200 +1627904 5686384 1627824 5686272 1627672 5686200 1627672 5686840 +1628240 5687320 1627672 5686840 1626096 5687664 1626064 5687736 +1627904 5686384 1627672 5686840 1628240 5687320 1628088 5686560 +1627672 5686840 1626096 5687664 1628240 5687320 1628088 5686560 +1627904 5686384 1627672 5686200 1627672 5686840 1628088 5686560 +1628240 5687320 1628312 5686720 1628088 5686560 1627672 5686840 +1628240 5687320 1628312 5686720 1627672 5686840 1626096 5687664 +1628240 5687320 1628464 5686776 1628312 5686720 1627672 5686840 +1628088 5686560 1627904 5686384 1627672 5686840 1628312 5686720 +1626096 5687632 1627672 5686840 1626048 5687512 1626064 5687560 +1627672 5686200 1626016 5687448 1626048 5687512 1627672 5686840 +1627672 5686200 1626016 5687448 1627672 5686840 1627904 5686384 +1626048 5687512 1626096 5687632 1627672 5686840 1626016 5687448 +1627672 5686200 1627280 5685920 1626016 5687448 1627672 5686840 +1627280 5685920 1626648 5685816 1626016 5687448 1627672 5686840 +1627672 5686200 1627280 5685920 1627672 5686840 1627904 5686384 +1626648 5685816 1625984 5687408 1626016 5687448 1627672 5686840 +1626648 5685816 1625984 5687408 1627672 5686840 1627280 5685920 +1626648 5685816 1625904 5687328 1625984 5687408 1627672 5686840 +1627280 5685920 1626648 5685816 1627672 5686840 1627672 5686200 +1627280 5685920 1627048 5685800 1626648 5685816 1627672 5686840 +1626016 5687448 1626048 5687512 1627672 5686840 1625984 5687408 +1627672 5686840 1627448 5686600 1626648 5685816 1625984 5687408 +1627672 5686840 1627448 5686600 1625984 5687408 1626016 5687448 +1627448 5686600 1626648 5685816 1625984 5687408 1626016 5687448 +1626648 5685816 1625904 5687328 1625984 5687408 1627448 5686600 +1625984 5687408 1626016 5687448 1627448 5686600 1625904 5687328 +1626648 5685816 1625856 5687296 1625904 5687328 1627448 5686600 +1627280 5685920 1627448 5686600 1627672 5686840 1627672 5686200 +1627672 5686840 1627904 5686384 1627672 5686200 1627448 5686600 +1627672 5686840 1628088 5686560 1627904 5686384 1627448 5686600 +1627904 5686384 1627824 5686272 1627672 5686200 1627448 5686600 +1627904 5686384 1627824 5686272 1627448 5686600 1627672 5686840 +1627280 5685920 1626648 5685816 1627448 5686600 1627672 5686200 +1627672 5686200 1627280 5685920 1627448 5686600 1627824 5686272 +1626648 5685816 1627448 5686600 1627280 5685920 1627048 5685800 +1627448 5686600 1627672 5686200 1627280 5685920 1627048 5685800 +1627672 5686840 1627904 5686384 1627448 5686600 1626016 5687448 +1627448 5686600 1627048 5685800 1626648 5685816 1625904 5687328 +1627672 5686840 1627448 5686600 1626016 5687448 1626048 5687512 +1627672 5686840 1627448 5686600 1626048 5687512 1626096 5687632 +1627672 5686840 1627448 5686600 1626096 5687632 1626096 5687664 +1627448 5686600 1625984 5687408 1626016 5687448 1626048 5687512 +1627672 5686840 1627904 5686384 1627448 5686600 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1627448 5686600 +1627448 5686600 1626016 5687448 1626048 5687512 1626096 5687632 +1626648 5685816 1627448 5686600 1627048 5685800 1626784 5685776 +1625904 5687328 1627280 5686472 1626648 5685816 1625856 5687296 +1627448 5686600 1627280 5686472 1625904 5687328 1625984 5687408 +1627448 5686600 1627280 5686472 1625984 5687408 1626016 5687448 +1627280 5686472 1626648 5685816 1625904 5687328 1625984 5687408 +1627448 5686600 1627280 5686472 1626016 5687448 1626048 5687512 +1627280 5686472 1625984 5687408 1626016 5687448 1626048 5687512 +1627448 5686600 1626648 5685816 1627280 5686472 1626048 5687512 +1627280 5686472 1625904 5687328 1625984 5687408 1626016 5687448 +1626648 5685816 1627280 5686472 1627448 5686600 1627048 5685800 +1626648 5685816 1625904 5687328 1627280 5686472 1627048 5685800 +1627280 5686472 1626048 5687512 1627448 5686600 1627048 5685800 +1627448 5686600 1627280 5685920 1627048 5685800 1627280 5686472 +1627048 5685800 1626648 5685816 1627280 5686472 1627280 5685920 +1627448 5686600 1627280 5685920 1627280 5686472 1626048 5687512 +1627448 5686600 1627672 5686200 1627280 5685920 1627280 5686472 +1627448 5686600 1627672 5686200 1627280 5686472 1626048 5687512 +1627448 5686600 1627824 5686272 1627672 5686200 1627280 5686472 +1627280 5685920 1627048 5685800 1627280 5686472 1627672 5686200 +1627448 5686600 1627280 5686472 1626048 5687512 1626096 5687632 +1626648 5685816 1627280 5686472 1627048 5685800 1626784 5685776 +1626648 5685816 1625904 5687328 1627280 5686472 1626784 5685776 +1627280 5686472 1627280 5685920 1627048 5685800 1626784 5685776 +1627048 5685800 1626912 5685760 1626784 5685776 1627280 5686472 +1627048 5685800 1627272 5686456 1627280 5686472 1627280 5685920 +1627272 5686456 1626784 5685776 1627280 5686472 1627280 5685920 +1627280 5686472 1627672 5686200 1627280 5685920 1627272 5686456 +1627280 5686472 1627448 5686600 1627672 5686200 1627272 5686456 +1627280 5686472 1627672 5686200 1627272 5686456 1626784 5685776 +1627048 5685800 1626784 5685776 1627272 5686456 1627280 5685920 +1627280 5685920 1627048 5685800 1627272 5686456 1627672 5686200 +1626784 5685776 1627272 5686456 1627048 5685800 1626912 5685760 +1627280 5686472 1627272 5686456 1626784 5685776 1626648 5685816 +1627280 5686472 1627272 5686456 1626648 5685816 1625904 5687328 +1627280 5686472 1627272 5686456 1625904 5687328 1625984 5687408 +1626648 5685816 1625856 5687296 1625904 5687328 1627272 5686456 +1627272 5686456 1626648 5685816 1625904 5687328 1625984 5687408 +1627280 5686472 1627272 5686456 1625984 5687408 1626016 5687448 +1627280 5686472 1627672 5686200 1627272 5686456 1625984 5687408 +1627272 5686456 1627048 5685800 1626784 5685776 1626648 5685816 +1627272 5686456 1626784 5685776 1626648 5685816 1625904 5687328 +1625904 5687328 1627152 5686456 1626648 5685816 1625856 5687296 +1627152 5686456 1627272 5686456 1626648 5685816 1625856 5687296 +1625904 5687328 1627272 5686456 1627152 5686456 1625856 5687296 +1627272 5686456 1627152 5686456 1625904 5687328 1625984 5687408 +1627272 5686456 1627152 5686456 1625984 5687408 1627280 5686472 +1627272 5686456 1626648 5685816 1627152 5686456 1627280 5686472 +1627152 5686456 1625856 5687296 1625904 5687328 1625984 5687408 +1627152 5686456 1625904 5687328 1625984 5687408 1627280 5686472 +1625984 5687408 1626016 5687448 1627280 5686472 1627152 5686456 +1626016 5687448 1626048 5687512 1627280 5686472 1627152 5686456 +1627280 5686472 1627272 5686456 1627152 5686456 1626048 5687512 +1626048 5687512 1627448 5686600 1627280 5686472 1627152 5686456 +1626048 5687512 1627448 5686600 1627152 5686456 1626016 5687448 +1627280 5686472 1627272 5686456 1627152 5686456 1627448 5686600 +1625984 5687408 1626016 5687448 1627152 5686456 1625904 5687328 +1626016 5687448 1626048 5687512 1627152 5686456 1625984 5687408 +1626648 5685816 1625824 5687280 1625856 5687296 1627152 5686456 +1626048 5687512 1626096 5687632 1627448 5686600 1627152 5686456 +1626048 5687512 1626096 5687632 1627152 5686456 1626016 5687448 +1626096 5687632 1627672 5686840 1627448 5686600 1627152 5686456 +1627448 5686600 1627280 5686472 1627152 5686456 1626096 5687632 +1626048 5687512 1626064 5687560 1626096 5687632 1627152 5686456 +1626648 5685816 1627152 5686456 1627272 5686456 1626784 5685776 +1626648 5685816 1625856 5687296 1627152 5686456 1626784 5685776 +1627152 5686456 1627280 5686472 1627272 5686456 1626784 5685776 +1627272 5686456 1627048 5685800 1626784 5685776 1627152 5686456 +1627272 5686456 1627048 5685800 1627152 5686456 1627280 5686472 +1627272 5686456 1627280 5685920 1627048 5685800 1627152 5686456 +1627272 5686456 1627280 5685920 1627152 5686456 1627280 5686472 +1627048 5685800 1626784 5685776 1627152 5686456 1627280 5685920 +1627272 5686456 1627672 5686200 1627280 5685920 1627152 5686456 +1627048 5685800 1626912 5685760 1626784 5685776 1627152 5686456 +1626784 5685776 1626648 5685816 1627152 5686456 1627048 5685800 +1627448 5686600 1627120 5686512 1626096 5687632 1627672 5686840 +1626096 5687632 1626096 5687664 1627672 5686840 1627120 5686512 +1627448 5686600 1627152 5686456 1627120 5686512 1627672 5686840 +1627120 5686512 1627152 5686456 1626096 5687632 1627672 5686840 +1627152 5686456 1627120 5686512 1627448 5686600 1627280 5686472 +1627152 5686456 1627120 5686512 1627280 5686472 1627272 5686456 +1627120 5686512 1627672 5686840 1627448 5686600 1627280 5686472 +1627152 5686456 1626096 5687632 1627120 5686512 1627280 5686472 +1626096 5687632 1627120 5686512 1627152 5686456 1626048 5687512 +1627152 5686456 1626016 5687448 1626048 5687512 1627120 5686512 +1626096 5687632 1627672 5686840 1627120 5686512 1626048 5687512 +1627120 5686512 1627280 5686472 1627152 5686456 1626016 5687448 +1627152 5686456 1625984 5687408 1626016 5687448 1627120 5686512 +1626016 5687448 1626048 5687512 1627120 5686512 1625984 5687408 +1627152 5686456 1625984 5687408 1627120 5686512 1627280 5686472 +1627152 5686456 1625904 5687328 1625984 5687408 1627120 5686512 +1627152 5686456 1625904 5687328 1627120 5686512 1627280 5686472 +1627152 5686456 1625856 5687296 1625904 5687328 1627120 5686512 +1627152 5686456 1625856 5687296 1627120 5686512 1627280 5686472 +1627152 5686456 1626648 5685816 1625856 5687296 1627120 5686512 +1625856 5687296 1625904 5687328 1627120 5686512 1626648 5685816 +1627152 5686456 1626648 5685816 1627120 5686512 1627280 5686472 +1627152 5686456 1626784 5685776 1626648 5685816 1627120 5686512 +1625904 5687328 1625984 5687408 1627120 5686512 1625856 5687296 +1625984 5687408 1626016 5687448 1627120 5686512 1625904 5687328 +1626096 5687632 1627120 5686512 1626048 5687512 1626064 5687560 +1626648 5685816 1625824 5687280 1625856 5687296 1627120 5686512 +1626048 5687512 1626096 5687632 1627120 5686512 1626016 5687448 +1627672 5686840 1627200 5686776 1626096 5687632 1626096 5687664 +1627672 5686840 1627200 5686776 1626096 5687664 1628240 5687320 +1627200 5686776 1626096 5687632 1626096 5687664 1628240 5687320 +1627120 5686512 1627200 5686776 1627672 5686840 1627448 5686600 +1627120 5686512 1627200 5686776 1627448 5686600 1627280 5686472 +1627200 5686776 1627672 5686840 1627448 5686600 1627280 5686472 +1626096 5687632 1627200 5686776 1627120 5686512 1626048 5687512 +1627120 5686512 1627200 5686776 1627280 5686472 1627152 5686456 +1627200 5686776 1626048 5687512 1626096 5687632 1626096 5687664 +1626096 5687664 1626064 5687736 1628240 5687320 1627200 5686776 +1627120 5686512 1626048 5687512 1627200 5686776 1627280 5686472 +1627672 5686840 1627448 5686600 1627200 5686776 1628240 5687320 +1626096 5687632 1627200 5686776 1626048 5687512 1626064 5687560 +1627120 5686512 1626016 5687448 1626048 5687512 1627200 5686776 +1627120 5686512 1625984 5687408 1626016 5687448 1627200 5686776 +1626048 5687512 1626096 5687632 1627200 5686776 1626016 5687448 +1627120 5686512 1625904 5687328 1625984 5687408 1627200 5686776 +1627120 5686512 1625984 5687408 1627200 5686776 1627280 5686472 +1626016 5687448 1626048 5687512 1627200 5686776 1625984 5687408 +1626096 5687664 1627176 5686848 1627200 5686776 1626096 5687632 +1627200 5686776 1627176 5686848 1628240 5687320 1627672 5686840 +1626096 5687664 1628240 5687320 1627176 5686848 1626096 5687632 +1627176 5686848 1626096 5687664 1628240 5687320 1627672 5686840 +1627176 5686848 1627672 5686840 1627200 5686776 1626096 5687632 +1627200 5686776 1626048 5687512 1626096 5687632 1627176 5686848 +1626096 5687632 1626096 5687664 1627176 5686848 1626048 5687512 +1627200 5686776 1626016 5687448 1626048 5687512 1627176 5686848 +1626048 5687512 1626096 5687632 1627176 5686848 1626016 5687448 +1627200 5686776 1626016 5687448 1627176 5686848 1627672 5686840 +1628240 5687320 1627176 5686848 1626096 5687664 1626064 5687736 +1627200 5686776 1627176 5686848 1627672 5686840 1627448 5686600 +1626048 5687512 1626064 5687560 1626096 5687632 1627176 5686848 +1627200 5686776 1625984 5687408 1626016 5687448 1627176 5686848 +1627200 5686776 1627120 5686512 1625984 5687408 1627176 5686848 +1626016 5687448 1626048 5687512 1627176 5686848 1625984 5687408 +1627200 5686776 1627120 5686512 1627176 5686848 1627672 5686840 +1627120 5686512 1625904 5687328 1625984 5687408 1627176 5686848 +1627120 5686512 1625904 5687328 1627176 5686848 1627200 5686776 +1627120 5686512 1625856 5687296 1625904 5687328 1627176 5686848 +1625984 5687408 1626016 5687448 1627176 5686848 1625904 5687328 +1626096 5687664 1627088 5686952 1627176 5686848 1626096 5687632 +1626096 5687664 1628240 5687320 1627088 5686952 1626096 5687632 +1627176 5686848 1626048 5687512 1626096 5687632 1627088 5686952 +1627088 5686952 1628240 5687320 1627176 5686848 1626048 5687512 +1626096 5687632 1626096 5687664 1627088 5686952 1626048 5687512 +1627176 5686848 1626016 5687448 1626048 5687512 1627088 5686952 +1626048 5687512 1626096 5687632 1627088 5686952 1626016 5687448 +1627176 5686848 1625984 5687408 1626016 5687448 1627088 5686952 +1626016 5687448 1626048 5687512 1627088 5686952 1625984 5687408 +1627176 5686848 1625984 5687408 1627088 5686952 1628240 5687320 +1627176 5686848 1627088 5686952 1628240 5687320 1627672 5686840 +1627176 5686848 1627088 5686952 1627672 5686840 1627200 5686776 +1627176 5686848 1625984 5687408 1627088 5686952 1627672 5686840 +1627088 5686952 1626096 5687664 1628240 5687320 1627672 5686840 +1628240 5687320 1627088 5686952 1626096 5687664 1626064 5687736 +1627088 5686952 1626096 5687632 1626096 5687664 1626064 5687736 +1628240 5687320 1627088 5686952 1626064 5687736 1626352 5689536 +1628240 5687320 1627672 5686840 1627088 5686952 1626064 5687736 +1626048 5687512 1626064 5687560 1626096 5687632 1627088 5686952 +1626048 5687512 1626064 5687560 1627088 5686952 1626016 5687448 +1626096 5687632 1626096 5687664 1627088 5686952 1626064 5687560 +1627176 5686848 1625904 5687328 1625984 5687408 1627088 5686952 +1625984 5687408 1626016 5687448 1627088 5686952 1625904 5687328 +1627176 5686848 1625904 5687328 1627088 5686952 1627672 5686840 +1627176 5686848 1627120 5686512 1625904 5687328 1627088 5686952 +1627176 5686848 1627200 5686776 1627120 5686512 1627088 5686952 +1627176 5686848 1627200 5686776 1627088 5686952 1627672 5686840 +1627120 5686512 1625856 5687296 1625904 5687328 1627088 5686952 +1627120 5686512 1625904 5687328 1627088 5686952 1627200 5686776 +1625904 5687328 1625984 5687408 1627088 5686952 1627120 5686512 +1628240 5687320 1626992 5687056 1626064 5687736 1626352 5689536 +1628240 5687320 1626992 5687056 1626352 5689536 1626424 5689616 +1626992 5687056 1627088 5686952 1626064 5687736 1626352 5689536 +1627088 5686952 1626992 5687056 1628240 5687320 1627672 5686840 +1627088 5686952 1626992 5687056 1627672 5686840 1627176 5686848 +1627088 5686952 1626064 5687736 1626992 5687056 1627672 5686840 +1628240 5687320 1627672 5686840 1626992 5687056 1626352 5689536 +1626064 5687736 1626992 5687056 1627088 5686952 1626096 5687664 +1627088 5686952 1626096 5687632 1626096 5687664 1626992 5687056 +1626064 5687736 1626352 5689536 1626992 5687056 1626096 5687664 +1627088 5686952 1626064 5687560 1626096 5687632 1626992 5687056 +1626096 5687632 1626096 5687664 1626992 5687056 1626064 5687560 +1626992 5687056 1627672 5686840 1627088 5686952 1626064 5687560 +1626096 5687664 1626064 5687736 1626992 5687056 1626096 5687632 +1626064 5687736 1626264 5689472 1626352 5689536 1626992 5687056 +1627088 5686952 1626048 5687512 1626064 5687560 1626992 5687056 +1627088 5686952 1626016 5687448 1626048 5687512 1626992 5687056 +1627088 5686952 1625984 5687408 1626016 5687448 1626992 5687056 +1626016 5687448 1626048 5687512 1626992 5687056 1625984 5687408 +1627088 5686952 1625904 5687328 1625984 5687408 1626992 5687056 +1625984 5687408 1626016 5687448 1626992 5687056 1625904 5687328 +1626064 5687560 1626096 5687632 1626992 5687056 1626048 5687512 +1627088 5686952 1625904 5687328 1626992 5687056 1627672 5686840 +1626048 5687512 1626064 5687560 1626992 5687056 1626016 5687448 +1627088 5686952 1627120 5686512 1625904 5687328 1626992 5687056 +1625904 5687328 1625984 5687408 1626992 5687056 1627120 5686512 +1627088 5686952 1627120 5686512 1626992 5687056 1627672 5686840 +1627120 5686512 1625856 5687296 1625904 5687328 1626992 5687056 +1625904 5687328 1625984 5687408 1626992 5687056 1625856 5687296 +1627120 5686512 1626648 5685816 1625856 5687296 1626992 5687056 +1627088 5686952 1627200 5686776 1627120 5686512 1626992 5687056 +1627120 5686512 1625856 5687296 1626992 5687056 1627088 5686952 +1626096 5687632 1626856 5687144 1626992 5687056 1626064 5687560 +1626992 5687056 1626048 5687512 1626064 5687560 1626856 5687144 +1626064 5687560 1626096 5687632 1626856 5687144 1626048 5687512 +1626856 5687144 1626096 5687664 1626992 5687056 1626048 5687512 +1626992 5687056 1626856 5687144 1626096 5687664 1626064 5687736 +1626992 5687056 1626856 5687144 1626064 5687736 1626352 5689536 +1626992 5687056 1626856 5687144 1626352 5689536 1628240 5687320 +1626352 5689536 1626424 5689616 1628240 5687320 1626856 5687144 +1626856 5687144 1626064 5687736 1626352 5689536 1628240 5687320 +1626992 5687056 1626048 5687512 1626856 5687144 1628240 5687320 +1626856 5687144 1626096 5687632 1626096 5687664 1626064 5687736 +1626992 5687056 1626856 5687144 1628240 5687320 1627672 5686840 +1626856 5687144 1626096 5687664 1626064 5687736 1626352 5689536 +1626064 5687736 1626264 5689472 1626352 5689536 1626856 5687144 +1626096 5687632 1626096 5687664 1626856 5687144 1626064 5687560 +1626992 5687056 1626016 5687448 1626048 5687512 1626856 5687144 +1626992 5687056 1625984 5687408 1626016 5687448 1626856 5687144 +1626992 5687056 1625904 5687328 1625984 5687408 1626856 5687144 +1625984 5687408 1626016 5687448 1626856 5687144 1625904 5687328 +1626992 5687056 1625856 5687296 1625904 5687328 1626856 5687144 +1625904 5687328 1625984 5687408 1626856 5687144 1625856 5687296 +1626048 5687512 1626064 5687560 1626856 5687144 1626016 5687448 +1626992 5687056 1625856 5687296 1626856 5687144 1628240 5687320 +1626992 5687056 1627120 5686512 1625856 5687296 1626856 5687144 +1625856 5687296 1625904 5687328 1626856 5687144 1627120 5686512 +1627120 5686512 1626648 5685816 1625856 5687296 1626856 5687144 +1625856 5687296 1625904 5687328 1626856 5687144 1626648 5685816 +1627120 5686512 1627152 5686456 1626648 5685816 1626856 5687144 +1626992 5687056 1627120 5686512 1626856 5687144 1628240 5687320 +1627120 5686512 1626648 5685816 1626856 5687144 1626992 5687056 +1626016 5687448 1626048 5687512 1626856 5687144 1625984 5687408 +1626648 5685816 1625824 5687280 1625856 5687296 1626856 5687144 +1626992 5687056 1627088 5686952 1627120 5686512 1626856 5687144 +1625904 5687328 1626784 5687160 1626856 5687144 1625856 5687296 +1626784 5687160 1625984 5687408 1626856 5687144 1625856 5687296 +1626856 5687144 1626784 5687160 1625984 5687408 1626016 5687448 +1626856 5687144 1625856 5687296 1626784 5687160 1626016 5687448 +1626784 5687160 1625904 5687328 1625984 5687408 1626016 5687448 +1626856 5687144 1626648 5685816 1625856 5687296 1626784 5687160 +1626856 5687144 1626648 5685816 1626784 5687160 1626016 5687448 +1625856 5687296 1625904 5687328 1626784 5687160 1626648 5685816 +1625904 5687328 1625984 5687408 1626784 5687160 1625856 5687296 +1626856 5687144 1627120 5686512 1626648 5685816 1626784 5687160 +1626856 5687144 1627120 5686512 1626784 5687160 1626016 5687448 +1626648 5685816 1625856 5687296 1626784 5687160 1627120 5686512 +1627120 5686512 1627152 5686456 1626648 5685816 1626784 5687160 +1626856 5687144 1626992 5687056 1627120 5686512 1626784 5687160 +1626856 5687144 1626992 5687056 1626784 5687160 1626016 5687448 +1627120 5686512 1626648 5685816 1626784 5687160 1626992 5687056 +1626856 5687144 1626784 5687160 1626016 5687448 1626048 5687512 +1626856 5687144 1626992 5687056 1626784 5687160 1626048 5687512 +1626784 5687160 1625984 5687408 1626016 5687448 1626048 5687512 +1626856 5687144 1626784 5687160 1626048 5687512 1626064 5687560 +1626856 5687144 1626992 5687056 1626784 5687160 1626064 5687560 +1626856 5687144 1626784 5687160 1626064 5687560 1626096 5687632 +1626856 5687144 1626992 5687056 1626784 5687160 1626096 5687632 +1626784 5687160 1626048 5687512 1626064 5687560 1626096 5687632 +1626856 5687144 1626784 5687160 1626096 5687632 1626096 5687664 +1626856 5687144 1626992 5687056 1626784 5687160 1626096 5687664 +1626784 5687160 1626064 5687560 1626096 5687632 1626096 5687664 +1626856 5687144 1626784 5687160 1626096 5687664 1626064 5687736 +1626856 5687144 1626992 5687056 1626784 5687160 1626064 5687736 +1626856 5687144 1626784 5687160 1626064 5687736 1626352 5689536 +1626784 5687160 1626096 5687632 1626096 5687664 1626064 5687736 +1626784 5687160 1626016 5687448 1626048 5687512 1626064 5687560 +1626648 5685816 1625824 5687280 1625856 5687296 1626784 5687160 +1626992 5687056 1627088 5686952 1627120 5686512 1626784 5687160 +1626784 5687160 1626672 5687112 1625856 5687296 1625904 5687328 +1626648 5685816 1626672 5687112 1626784 5687160 1627120 5686512 +1626648 5685816 1625856 5687296 1626672 5687112 1627120 5686512 +1626648 5685816 1626672 5687112 1627120 5686512 1627152 5686456 +1626784 5687160 1627120 5686512 1626672 5687112 1625904 5687328 +1626784 5687160 1626672 5687112 1625904 5687328 1625984 5687408 +1626784 5687160 1626672 5687112 1625984 5687408 1626016 5687448 +1626672 5687112 1625856 5687296 1625904 5687328 1625984 5687408 +1626784 5687160 1626672 5687112 1626016 5687448 1626048 5687512 +1626672 5687112 1625984 5687408 1626016 5687448 1626048 5687512 +1626784 5687160 1627120 5686512 1626672 5687112 1626048 5687512 +1626672 5687112 1625904 5687328 1625984 5687408 1626016 5687448 +1626784 5687160 1626992 5687056 1627120 5686512 1626672 5687112 +1627120 5686512 1626648 5685816 1626672 5687112 1626992 5687056 +1626784 5687160 1626992 5687056 1626672 5687112 1626048 5687512 +1626784 5687160 1626856 5687144 1626992 5687056 1626672 5687112 +1626784 5687160 1626856 5687144 1626672 5687112 1626048 5687512 +1626992 5687056 1627120 5686512 1626672 5687112 1626856 5687144 +1626672 5687112 1626648 5685816 1625856 5687296 1625904 5687328 +1626784 5687160 1626672 5687112 1626048 5687512 1626064 5687560 +1626672 5687112 1626016 5687448 1626048 5687512 1626064 5687560 +1626784 5687160 1626672 5687112 1626064 5687560 1626096 5687632 +1626784 5687160 1626672 5687112 1626096 5687632 1626096 5687664 +1626784 5687160 1626856 5687144 1626672 5687112 1626096 5687632 +1626672 5687112 1626048 5687512 1626064 5687560 1626096 5687632 +1625856 5687296 1626672 5687112 1626648 5685816 1625824 5687280 +1626672 5687112 1627120 5686512 1626648 5685816 1625824 5687280 +1626648 5685816 1625672 5687248 1625824 5687280 1626672 5687112 +1625856 5687296 1625904 5687328 1626672 5687112 1625824 5687280 +1626992 5687056 1627088 5686952 1627120 5686512 1626672 5687112 +1627120 5686512 1626648 5685816 1626672 5687112 1627088 5686952 +1627088 5686952 1627200 5686776 1627120 5686512 1626672 5687112 +1626992 5687056 1627088 5686952 1626672 5687112 1626856 5687144 +1626648 5685816 1626136 5686568 1625824 5687280 1626672 5687112 +1626648 5685816 1626136 5686568 1626672 5687112 1627120 5686512 +1626672 5687112 1627088 5686952 1627120 5686512 1626136 5686568 +1626648 5685816 1626136 5686568 1627120 5686512 1627152 5686456 +1626136 5686568 1625824 5687280 1626672 5687112 1627120 5686512 +1626648 5685816 1625672 5687248 1626136 5686568 1627120 5686512 +1625672 5687248 1626136 5686568 1626648 5685816 1625656 5687248 +1625672 5687248 1625824 5687280 1626136 5686568 1625656 5687248 +1626136 5686568 1627120 5686512 1626648 5685816 1625656 5687248 +1626136 5686568 1625672 5687248 1625824 5687280 1626672 5687112 +1626648 5685816 1625568 5687272 1625656 5687248 1626136 5686568 +1626648 5685816 1625568 5687272 1626136 5686568 1627120 5686512 +1625656 5687248 1625672 5687248 1626136 5686568 1625568 5687272 +1626648 5685816 1625480 5687312 1625568 5687272 1626136 5686568 +1626648 5685816 1625480 5687312 1626136 5686568 1627120 5686512 +1626648 5685816 1622472 5686920 1625480 5687312 1626136 5686568 +1626648 5685816 1622472 5686920 1626136 5686568 1627120 5686512 +1626648 5685816 1622296 5686800 1622472 5686920 1626136 5686568 +1622472 5686920 1622592 5687064 1625480 5687312 1626136 5686568 +1625480 5687312 1625488 5687312 1625568 5687272 1626136 5686568 +1625480 5687312 1625568 5687272 1626136 5686568 1622472 5686920 +1625568 5687272 1625656 5687248 1626136 5686568 1625480 5687312 +1625824 5687280 1626136 5686568 1625672 5687248 1625736 5687272 +1625824 5687280 1625856 5687296 1626672 5687112 1626136 5686568 +1626672 5687112 1627120 5686512 1626136 5686568 1625856 5687296 +1625856 5687296 1625904 5687328 1626672 5687112 1626136 5686568 +1625904 5687328 1625984 5687408 1626672 5687112 1626136 5686568 +1626672 5687112 1627120 5686512 1626136 5686568 1625904 5687328 +1625824 5687280 1625856 5687296 1626136 5686568 1625672 5687248 +1625856 5687296 1625904 5687328 1626136 5686568 1625824 5687280 +1626648 5685816 1626088 5686480 1626136 5686568 1627120 5686512 +1622472 5686920 1626088 5686480 1626648 5685816 1622296 5686800 +1626088 5686480 1626136 5686568 1626648 5685816 1622296 5686800 +1622472 5686920 1626136 5686568 1626088 5686480 1622296 5686800 +1626648 5685816 1621112 5686056 1622296 5686800 1626088 5686480 +1626136 5686568 1626088 5686480 1622472 5686920 1625480 5687312 +1626088 5686480 1622296 5686800 1622472 5686920 1625480 5687312 +1626136 5686568 1626648 5685816 1626088 5686480 1625480 5687312 +1622472 5686920 1622592 5687064 1625480 5687312 1626088 5686480 +1622472 5686920 1622592 5687064 1626088 5686480 1622296 5686800 +1625480 5687312 1626136 5686568 1626088 5686480 1622592 5687064 +1622592 5687064 1625432 5687352 1625480 5687312 1626088 5686480 +1626136 5686568 1626088 5686480 1625480 5687312 1625568 5687272 +1626136 5686568 1626648 5685816 1626088 5686480 1625568 5687272 +1626088 5686480 1622592 5687064 1625480 5687312 1625568 5687272 +1625480 5687312 1625488 5687312 1625568 5687272 1626088 5686480 +1626136 5686568 1626088 5686480 1625568 5687272 1625656 5687248 +1626136 5686568 1626648 5685816 1626088 5686480 1625656 5687248 +1626136 5686568 1626088 5686480 1625656 5687248 1625672 5687248 +1626136 5686568 1626088 5686480 1625672 5687248 1625824 5687280 +1626136 5686568 1626648 5685816 1626088 5686480 1625672 5687248 +1626088 5686480 1625480 5687312 1625568 5687272 1625656 5687248 +1626088 5686480 1625568 5687272 1625656 5687248 1625672 5687248 +1626648 5685816 1626064 5686368 1626088 5686480 1626136 5686568 +1626064 5686368 1622296 5686800 1626088 5686480 1626136 5686568 +1622296 5686800 1626064 5686368 1626648 5685816 1621112 5686056 +1626648 5685816 1626064 5686368 1626136 5686568 1627120 5686512 +1626648 5685816 1622296 5686800 1626064 5686368 1626136 5686568 +1626088 5686480 1626064 5686368 1622296 5686800 1622472 5686920 +1626064 5686368 1626648 5685816 1622296 5686800 1622472 5686920 +1626088 5686480 1626064 5686368 1622472 5686920 1622592 5687064 +1626088 5686480 1626136 5686568 1626064 5686368 1622592 5687064 +1626064 5686368 1622296 5686800 1622472 5686920 1622592 5687064 +1626088 5686480 1626064 5686368 1622592 5687064 1625480 5687312 +1626064 5686368 1622472 5686920 1622592 5687064 1625480 5687312 +1626088 5686480 1626136 5686568 1626064 5686368 1625480 5687312 +1626088 5686480 1626064 5686368 1625480 5687312 1625568 5687272 +1626088 5686480 1626136 5686568 1626064 5686368 1625568 5687272 +1626064 5686368 1622592 5687064 1625480 5687312 1625568 5687272 +1622592 5687064 1625432 5687352 1625480 5687312 1626064 5686368 +1622592 5687064 1622704 5687208 1625432 5687352 1626064 5686368 +1622592 5687064 1625432 5687352 1626064 5686368 1622472 5686920 +1625480 5687312 1625568 5687272 1626064 5686368 1625432 5687352 +1625480 5687312 1625488 5687312 1625568 5687272 1626064 5686368 +1626088 5686480 1626064 5686368 1625568 5687272 1625656 5687248 +1626064 5686368 1626088 5686256 1622296 5686800 1622472 5686920 +1626088 5686256 1626648 5685816 1622296 5686800 1622472 5686920 +1622296 5686800 1626088 5686256 1626648 5685816 1621112 5686056 +1626088 5686256 1626064 5686368 1626648 5685816 1621112 5686056 +1622296 5686800 1622472 5686920 1626088 5686256 1621112 5686056 +1626064 5686368 1626648 5685816 1626088 5686256 1622472 5686920 +1626648 5685816 1626088 5686256 1626064 5686368 1626136 5686568 +1626064 5686368 1626088 5686480 1626136 5686568 1626088 5686256 +1626648 5685816 1621112 5686056 1626088 5686256 1626136 5686568 +1626648 5685816 1626088 5686256 1626136 5686568 1627120 5686512 +1626088 5686256 1622472 5686920 1626064 5686368 1626088 5686480 +1626136 5686568 1626648 5685816 1626088 5686256 1626088 5686480 +1622296 5686800 1626088 5686256 1621112 5686056 1621744 5686536 +1626064 5686368 1626088 5686256 1622472 5686920 1622592 5687064 +1626088 5686256 1622296 5686800 1622472 5686920 1622592 5687064 +1626064 5686368 1626088 5686256 1622592 5687064 1625432 5687352 +1622592 5687064 1622704 5687208 1625432 5687352 1626088 5686256 +1626064 5686368 1626088 5686480 1626088 5686256 1625432 5687352 +1626088 5686256 1622472 5686920 1622592 5687064 1625432 5687352 +1626064 5686368 1626088 5686256 1625432 5687352 1625480 5687312 +1626088 5686256 1622592 5687064 1625432 5687352 1625480 5687312 +1626064 5686368 1626088 5686480 1626088 5686256 1625480 5687312 +1626064 5686368 1626088 5686256 1625480 5687312 1625568 5687272 +1626648 5685816 1626744 5680528 1621112 5686056 1626088 5686256 +1626648 5685816 1626744 5680528 1626088 5686256 1626136 5686568 +1626648 5685816 1626952 5680672 1626744 5680528 1626088 5686256 +1626744 5680528 1626632 5680392 1621112 5686056 1626088 5686256 +1621112 5686056 1622296 5686800 1626088 5686256 1626744 5680528 +1626648 5685816 1626112 5686232 1626088 5686256 1626136 5686568 +1626648 5685816 1626744 5680528 1626112 5686232 1626136 5686568 +1626112 5686232 1626744 5680528 1626088 5686256 1626136 5686568 +1626744 5680528 1626112 5686232 1626648 5685816 1626952 5680672 +1626648 5685816 1626112 5686232 1626136 5686568 1627120 5686512 +1626648 5685816 1626744 5680528 1626112 5686232 1627120 5686512 +1626112 5686232 1626088 5686256 1626136 5686568 1627120 5686512 +1626136 5686568 1626672 5687112 1627120 5686512 1626112 5686232 +1626648 5685816 1626112 5686232 1627120 5686512 1627152 5686456 +1626088 5686256 1626088 5686480 1626136 5686568 1626112 5686232 +1626088 5686256 1626064 5686368 1626088 5686480 1626112 5686232 +1626136 5686568 1627120 5686512 1626112 5686232 1626088 5686480 +1626088 5686256 1626064 5686368 1626112 5686232 1626744 5680528 +1626088 5686480 1626136 5686568 1626112 5686232 1626064 5686368 +1626088 5686256 1626112 5686232 1626744 5680528 1621112 5686056 +1626112 5686232 1626648 5685816 1626744 5680528 1621112 5686056 +1626088 5686256 1626064 5686368 1626112 5686232 1621112 5686056 +1626744 5680528 1626632 5680392 1621112 5686056 1626112 5686232 +1626088 5686256 1626112 5686232 1621112 5686056 1622296 5686800 +1626088 5686256 1626112 5686232 1622296 5686800 1622472 5686920 +1626088 5686256 1626064 5686368 1626112 5686232 1622296 5686800 +1621112 5686056 1621744 5686536 1622296 5686800 1626112 5686232 +1626112 5686232 1626744 5680528 1621112 5686056 1622296 5686800 +1626648 5685816 1626144 5686160 1626112 5686232 1627120 5686512 +1626144 5686160 1626744 5680528 1626112 5686232 1627120 5686512 +1626112 5686232 1626144 5686160 1626744 5680528 1621112 5686056 +1626112 5686232 1627120 5686512 1626144 5686160 1621112 5686056 +1626648 5685816 1626144 5686160 1627120 5686512 1627152 5686456 +1626144 5686160 1626648 5685816 1626744 5680528 1621112 5686056 +1626744 5680528 1626144 5686160 1626648 5685816 1626952 5680672 +1626744 5680528 1626632 5680392 1621112 5686056 1626144 5686160 +1626112 5686232 1626136 5686568 1627120 5686512 1626144 5686160 +1626112 5686232 1626136 5686568 1626144 5686160 1621112 5686056 +1627120 5686512 1626648 5685816 1626144 5686160 1626136 5686568 +1626112 5686232 1626088 5686480 1626136 5686568 1626144 5686160 +1626136 5686568 1626672 5687112 1627120 5686512 1626144 5686160 +1626648 5685816 1626744 5680528 1626144 5686160 1627120 5686512 +1626112 5686232 1626144 5686160 1621112 5686056 1622296 5686800 +1626112 5686232 1626136 5686568 1626144 5686160 1622296 5686800 +1626144 5686160 1626744 5680528 1621112 5686056 1622296 5686800 +1626112 5686232 1626144 5686160 1622296 5686800 1626088 5686256 +1626112 5686232 1626136 5686568 1626144 5686160 1626088 5686256 +1622296 5686800 1622472 5686920 1626088 5686256 1626144 5686160 +1622472 5686920 1622592 5687064 1626088 5686256 1626144 5686160 +1626088 5686256 1626112 5686232 1626144 5686160 1622472 5686920 +1621112 5686056 1621744 5686536 1622296 5686800 1626144 5686160 +1626144 5686160 1621112 5686056 1622296 5686800 1622472 5686920 +1626144 5686160 1626280 5686008 1626744 5680528 1621112 5686056 +1626144 5686160 1626280 5686008 1621112 5686056 1622296 5686800 +1626280 5686008 1626744 5680528 1621112 5686056 1622296 5686800 +1626144 5686160 1626648 5685816 1626280 5686008 1622296 5686800 +1626744 5680528 1626280 5686008 1626648 5685816 1626952 5680672 +1626744 5680528 1626632 5680392 1621112 5686056 1626280 5686008 +1626648 5685816 1626280 5686008 1626144 5686160 1627120 5686512 +1626648 5685816 1626744 5680528 1626280 5686008 1627120 5686512 +1626144 5686160 1626136 5686568 1627120 5686512 1626280 5686008 +1626136 5686568 1626672 5687112 1627120 5686512 1626280 5686008 +1626648 5685816 1626280 5686008 1627120 5686512 1627152 5686456 +1626280 5686008 1622296 5686800 1626144 5686160 1626136 5686568 +1626144 5686160 1626112 5686232 1626136 5686568 1626280 5686008 +1627120 5686512 1626648 5685816 1626280 5686008 1626136 5686568 +1626280 5686008 1626648 5685816 1626744 5680528 1621112 5686056 +1621112 5686056 1621744 5686536 1622296 5686800 1626280 5686008 +1626144 5686160 1626280 5686008 1622296 5686800 1622472 5686920 +1626648 5685816 1626360 5685936 1626280 5686008 1627120 5686512 +1626360 5685936 1626744 5680528 1626280 5686008 1627120 5686512 +1626648 5685816 1626360 5685936 1627120 5686512 1627152 5686456 +1626744 5680528 1626360 5685936 1626648 5685816 1626952 5680672 +1626744 5680528 1626280 5686008 1626360 5685936 1626952 5680672 +1626280 5686008 1626136 5686568 1627120 5686512 1626360 5685936 +1626280 5686008 1626360 5685936 1626744 5680528 1621112 5686056 +1626648 5685816 1626952 5680672 1626360 5685936 1627120 5686512 +1626648 5685816 1627152 5680768 1626952 5680672 1626360 5685936 +1626360 5685936 1626496 5685696 1626952 5680672 1626744 5680528 +1626360 5685936 1626496 5685696 1626744 5680528 1626280 5686008 +1626496 5685696 1626952 5680672 1626744 5680528 1626280 5686008 +1626360 5685936 1626648 5685816 1626496 5685696 1626280 5686008 +1626744 5680528 1621112 5686056 1626280 5686008 1626496 5685696 +1621112 5686056 1622296 5686800 1626280 5686008 1626496 5685696 +1622296 5686800 1626144 5686160 1626280 5686008 1626496 5685696 +1622296 5686800 1626144 5686160 1626496 5685696 1621112 5686056 +1626744 5680528 1621112 5686056 1626496 5685696 1626952 5680672 +1626744 5680528 1626632 5680392 1621112 5686056 1626496 5685696 +1626632 5680392 1621048 5686008 1621112 5686056 1626496 5685696 +1626744 5680528 1626632 5680392 1626496 5685696 1626952 5680672 +1626280 5686008 1626360 5685936 1626496 5685696 1626144 5686160 +1621112 5686056 1622296 5686800 1626496 5685696 1626632 5680392 +1626496 5685696 1626648 5685816 1626952 5680672 1626744 5680528 +1626952 5680672 1626496 5685696 1626648 5685816 1627152 5680768 +1626648 5685816 1626784 5685776 1627152 5680768 1626496 5685696 +1626496 5685696 1626360 5685936 1626648 5685816 1626784 5685776 +1626952 5680672 1626744 5680528 1626496 5685696 1627152 5680768 +1626784 5685776 1627248 5680800 1627152 5680768 1626496 5685696 +1626784 5685776 1627248 5680800 1626496 5685696 1626648 5685816 +1626784 5685776 1626912 5685760 1627248 5680800 1626496 5685696 +1626912 5685760 1627944 5680984 1627248 5680800 1626496 5685696 +1627944 5680984 1627752 5680904 1627248 5680800 1626496 5685696 +1626784 5685776 1626912 5685760 1626496 5685696 1626648 5685816 +1626912 5685760 1627944 5680984 1626496 5685696 1626784 5685776 +1627248 5680800 1627152 5680768 1626496 5685696 1627944 5680984 +1626912 5685760 1627048 5685800 1627944 5680984 1626496 5685696 +1627152 5680768 1626952 5680672 1626496 5685696 1627248 5680800 +1621112 5686056 1621744 5686536 1622296 5686800 1626496 5685696 +1622296 5686800 1622472 5686920 1626144 5686160 1626496 5685696 +1626496 5685696 1626504 5685728 1626648 5685816 1626784 5685776 +1626360 5685936 1626504 5685728 1626496 5685696 1626280 5686008 +1626496 5685696 1626384 5685752 1626144 5686160 1626280 5686008 +1622296 5686800 1626384 5685752 1626496 5685696 1621112 5686056 +1622296 5686800 1626144 5686160 1626384 5685752 1621112 5686056 +1626496 5685696 1626384 5685752 1626280 5686008 1626360 5685936 +1626384 5685752 1626144 5686160 1626280 5686008 1626360 5685936 +1626496 5685696 1626384 5685752 1626360 5685936 1626504 5685728 +1626360 5685936 1626648 5685816 1626504 5685728 1626384 5685752 +1626384 5685752 1626280 5686008 1626360 5685936 1626504 5685728 +1626496 5685696 1626632 5680392 1621112 5686056 1626384 5685752 +1626632 5680392 1621048 5686008 1621112 5686056 1626384 5685752 +1621112 5686056 1622296 5686800 1626384 5685752 1626632 5680392 +1626496 5685696 1626744 5680528 1626632 5680392 1626384 5685752 +1626496 5685696 1626952 5680672 1626744 5680528 1626384 5685752 +1626632 5680392 1621112 5686056 1626384 5685752 1626744 5680528 +1626496 5685696 1626744 5680528 1626384 5685752 1626504 5685728 +1626384 5685752 1622296 5686800 1626144 5686160 1626280 5686008 +1622296 5686800 1626384 5685752 1621112 5686056 1621744 5686536 +1626144 5686160 1626384 5685752 1622296 5686800 1622472 5686920 +1621112 5686056 1626072 5685776 1626384 5685752 1626632 5680392 +1621112 5686056 1626072 5685776 1626632 5680392 1621048 5686008 +1626072 5685776 1626384 5685752 1626632 5680392 1621048 5686008 +1626632 5680392 1626592 5680320 1621048 5686008 1626072 5685776 +1626384 5685752 1626072 5685776 1622296 5686800 1626144 5686160 +1626072 5685776 1621112 5686056 1622296 5686800 1626144 5686160 +1621112 5686056 1622296 5686800 1626072 5685776 1621048 5686008 +1626384 5685752 1626744 5680528 1626632 5680392 1626072 5685776 +1626632 5680392 1621048 5686008 1626072 5685776 1626744 5680528 +1626384 5685752 1626496 5685696 1626744 5680528 1626072 5685776 +1626496 5685696 1626952 5680672 1626744 5680528 1626072 5685776 +1626496 5685696 1626952 5680672 1626072 5685776 1626384 5685752 +1626744 5680528 1626632 5680392 1626072 5685776 1626952 5680672 +1626496 5685696 1627152 5680768 1626952 5680672 1626072 5685776 +1626072 5685776 1626144 5686160 1626384 5685752 1626496 5685696 +1626384 5685752 1626504 5685728 1626496 5685696 1626072 5685776 +1626384 5685752 1626072 5685776 1626144 5686160 1626280 5686008 +1626384 5685752 1626072 5685776 1626280 5686008 1626360 5685936 +1626072 5685776 1622296 5686800 1626144 5686160 1626280 5686008 +1626384 5685752 1626072 5685776 1626360 5685936 1626504 5685728 +1626384 5685752 1626496 5685696 1626072 5685776 1626360 5685936 +1626072 5685776 1626144 5686160 1626280 5686008 1626360 5685936 +1622296 5686800 1626072 5685776 1621112 5686056 1621744 5686536 +1622296 5686800 1626144 5686160 1626072 5685776 1621744 5686536 +1621112 5686056 1621672 5686496 1621744 5686536 1626072 5685776 +1626072 5685776 1621048 5686008 1621112 5686056 1621744 5686536 +1622296 5686800 1622472 5686920 1626144 5686160 1626072 5685776 +1622296 5686800 1622472 5686920 1626072 5685776 1621744 5686536 +1622472 5686920 1626088 5686256 1626144 5686160 1626072 5685776 +1622472 5686920 1622592 5687064 1626088 5686256 1626072 5685776 +1626088 5686256 1626144 5686160 1626072 5685776 1622592 5687064 +1626088 5686256 1626112 5686232 1626144 5686160 1626072 5685776 +1626144 5686160 1626280 5686008 1626072 5685776 1626088 5686256 +1622592 5687064 1625432 5687352 1626088 5686256 1626072 5685776 +1622592 5687064 1622704 5687208 1625432 5687352 1626072 5685776 +1622592 5687064 1625432 5687352 1626072 5685776 1622472 5686920 +1625432 5687352 1625480 5687312 1626088 5686256 1626072 5685776 +1626088 5686256 1626144 5686160 1626072 5685776 1625480 5687312 +1625432 5687352 1625480 5687312 1626072 5685776 1622592 5687064 +1625480 5687312 1626064 5686368 1626088 5686256 1626072 5685776 +1625480 5687312 1626064 5686368 1626072 5685776 1625432 5687352 +1626088 5686256 1626144 5686160 1626072 5685776 1626064 5686368 +1625480 5687312 1625568 5687272 1626064 5686368 1626072 5685776 +1622472 5686920 1622592 5687064 1626072 5685776 1622296 5686800 +1626072 5685776 1625952 5685816 1622592 5687064 1625432 5687352 +1622592 5687064 1622704 5687208 1625432 5687352 1625952 5685816 +1625432 5687352 1626072 5685776 1625952 5685816 1622704 5687208 +1625952 5685816 1622472 5686920 1622592 5687064 1622704 5687208 +1626072 5685776 1622472 5686920 1625952 5685816 1625432 5687352 +1626072 5685776 1625952 5685816 1625432 5687352 1625480 5687312 +1625952 5685816 1622704 5687208 1625432 5687352 1625480 5687312 +1626072 5685776 1625952 5685816 1625480 5687312 1626064 5686368 +1626072 5685776 1622472 5686920 1625952 5685816 1626064 5686368 +1625952 5685816 1625432 5687352 1625480 5687312 1626064 5686368 +1625480 5687312 1625568 5687272 1626064 5686368 1625952 5685816 +1626072 5685776 1625952 5685816 1626064 5686368 1626088 5686256 +1625952 5685816 1625480 5687312 1626064 5686368 1626088 5686256 +1626072 5685776 1625952 5685816 1626088 5686256 1626144 5686160 +1626088 5686256 1626112 5686232 1626144 5686160 1625952 5685816 +1626072 5685776 1625952 5685816 1626144 5686160 1626280 5686008 +1626072 5685776 1622472 5686920 1625952 5685816 1626144 5686160 +1625952 5685816 1626064 5686368 1626088 5686256 1626144 5686160 +1622704 5687208 1622888 5687408 1625432 5687352 1625952 5685816 +1622472 5686920 1625952 5685816 1626072 5685776 1622296 5686800 +1626072 5685776 1621744 5686536 1622296 5686800 1625952 5685816 +1625952 5685816 1626144 5686160 1626072 5685776 1621744 5686536 +1622472 5686920 1622592 5687064 1625952 5685816 1622296 5686800 +1626072 5685776 1621112 5686056 1621744 5686536 1625952 5685816 +1621744 5686536 1622296 5686800 1625952 5685816 1621112 5686056 +1621112 5686056 1621672 5686496 1621744 5686536 1625952 5685816 +1626072 5685776 1621112 5686056 1625952 5685816 1626144 5686160 +1626072 5685776 1621048 5686008 1621112 5686056 1625952 5685816 +1626072 5685776 1626632 5680392 1621048 5686008 1625952 5685816 +1626072 5685776 1626744 5680528 1626632 5680392 1625952 5685816 +1626632 5680392 1621048 5686008 1625952 5685816 1626744 5680528 +1626632 5680392 1626592 5680320 1621048 5686008 1625952 5685816 +1626072 5685776 1626744 5680528 1625952 5685816 1626144 5686160 +1621048 5686008 1621112 5686056 1625952 5685816 1626632 5680392 +1626072 5685776 1626952 5680672 1626744 5680528 1625952 5685816 +1621112 5686056 1621744 5686536 1625952 5685816 1621048 5686008 +1622296 5686800 1622472 5686920 1625952 5685816 1621744 5686536 +1622704 5687208 1625712 5685976 1625952 5685816 1622592 5687064 +1625952 5685816 1625712 5685976 1625432 5687352 1625480 5687312 +1622704 5687208 1625432 5687352 1625712 5685976 1622592 5687064 +1625952 5685816 1622472 5686920 1622592 5687064 1625712 5685976 +1622592 5687064 1622704 5687208 1625712 5685976 1622472 5686920 +1625712 5685976 1625480 5687312 1625952 5685816 1622472 5686920 +1625952 5685816 1622296 5686800 1622472 5686920 1625712 5685976 +1622472 5686920 1622592 5687064 1625712 5685976 1622296 5686800 +1625952 5685816 1622296 5686800 1625712 5685976 1625480 5687312 +1625712 5685976 1622704 5687208 1625432 5687352 1625480 5687312 +1625952 5685816 1625712 5685976 1625480 5687312 1626064 5686368 +1625712 5685976 1625432 5687352 1625480 5687312 1626064 5686368 +1625952 5685816 1625712 5685976 1626064 5686368 1626088 5686256 +1625952 5685816 1622296 5686800 1625712 5685976 1626088 5686256 +1625712 5685976 1625480 5687312 1626064 5686368 1626088 5686256 +1625480 5687312 1625568 5687272 1626064 5686368 1625712 5685976 +1625480 5687312 1625568 5687272 1625712 5685976 1625432 5687352 +1626064 5686368 1626088 5686256 1625712 5685976 1625568 5687272 +1625568 5687272 1626088 5686480 1626064 5686368 1625712 5685976 +1626064 5686368 1626088 5686256 1625712 5685976 1626088 5686480 +1625568 5687272 1626088 5686480 1625712 5685976 1625480 5687312 +1625952 5685816 1625712 5685976 1626088 5686256 1626144 5686160 +1625712 5685976 1626064 5686368 1626088 5686256 1626144 5686160 +1625952 5685816 1625712 5685976 1626144 5686160 1626072 5685776 +1626088 5686256 1626112 5686232 1626144 5686160 1625712 5685976 +1625952 5685816 1622296 5686800 1625712 5685976 1626144 5686160 +1625432 5687352 1625712 5685976 1622704 5687208 1622888 5687408 +1625712 5685976 1622592 5687064 1622704 5687208 1622888 5687408 +1625432 5687352 1625480 5687312 1625712 5685976 1622888 5687408 +1625432 5687352 1625712 5685976 1622888 5687408 1623056 5687624 +1625480 5687312 1625488 5687312 1625568 5687272 1625712 5685976 +1625568 5687272 1625656 5687248 1626088 5686480 1625712 5685976 +1625952 5685816 1621744 5686536 1622296 5686800 1625712 5685976 +1625952 5685816 1621112 5686056 1621744 5686536 1625712 5685976 +1621112 5686056 1621672 5686496 1621744 5686536 1625712 5685976 +1625952 5685816 1621112 5686056 1625712 5685976 1626144 5686160 +1622296 5686800 1622472 5686920 1625712 5685976 1621744 5686536 +1625952 5685816 1621048 5686008 1621112 5686056 1625712 5685976 +1621112 5686056 1621744 5686536 1625712 5685976 1621048 5686008 +1625952 5685816 1621048 5686008 1625712 5685976 1626144 5686160 +1625952 5685816 1626632 5680392 1621048 5686008 1625712 5685976 +1625952 5685816 1626744 5680528 1626632 5680392 1625712 5685976 +1626632 5680392 1626592 5680320 1621048 5686008 1625712 5685976 +1625952 5685816 1626632 5680392 1625712 5685976 1626144 5686160 +1621048 5686008 1621112 5686056 1625712 5685976 1626632 5680392 +1621744 5686536 1622296 5686800 1625712 5685976 1621112 5686056 +1621048 5686008 1625656 5685968 1626632 5680392 1626592 5680320 +1626632 5680392 1625656 5685968 1625712 5685976 1625952 5685816 +1626632 5680392 1625656 5685968 1625952 5685816 1626744 5680528 +1625952 5685816 1626072 5685776 1626744 5680528 1625656 5685968 +1625656 5685968 1621048 5686008 1625712 5685976 1625952 5685816 +1626632 5680392 1621048 5686008 1625656 5685968 1626744 5680528 +1625656 5685968 1625712 5685976 1625952 5685816 1626744 5680528 +1625712 5685976 1625656 5685968 1621048 5686008 1621112 5686056 +1625712 5685976 1625656 5685968 1621112 5686056 1621744 5686536 +1625712 5685976 1625952 5685816 1625656 5685968 1621744 5686536 +1621112 5686056 1621672 5686496 1621744 5686536 1625656 5685968 +1625656 5685968 1626632 5680392 1621048 5686008 1621112 5686056 +1625656 5685968 1621048 5686008 1621112 5686056 1621744 5686536 +1625712 5685976 1625656 5685968 1621744 5686536 1622296 5686800 +1625656 5685968 1621112 5686056 1621744 5686536 1622296 5686800 +1625712 5685976 1625952 5685816 1625656 5685968 1622296 5686800 +1625712 5685976 1625656 5685968 1622296 5686800 1622472 5686920 +1625712 5685976 1625952 5685816 1625656 5685968 1622472 5686920 +1625712 5685976 1625656 5685968 1622472 5686920 1622592 5687064 +1625712 5685976 1625656 5685968 1622592 5687064 1622704 5687208 +1625712 5685976 1625952 5685816 1625656 5685968 1622704 5687208 +1625712 5685976 1625656 5685968 1622704 5687208 1622888 5687408 +1625656 5685968 1622592 5687064 1622704 5687208 1622888 5687408 +1625712 5685976 1625952 5685816 1625656 5685968 1622888 5687408 +1625656 5685968 1622472 5686920 1622592 5687064 1622704 5687208 +1625656 5685968 1622296 5686800 1622472 5686920 1622592 5687064 +1625712 5685976 1625656 5685968 1622888 5687408 1625432 5687352 +1625712 5685976 1625952 5685816 1625656 5685968 1625432 5687352 +1625656 5685968 1622704 5687208 1622888 5687408 1625432 5687352 +1625712 5685976 1625656 5685968 1625432 5687352 1625480 5687312 +1625712 5685976 1625656 5685968 1625480 5687312 1625568 5687272 +1625712 5685976 1625952 5685816 1625656 5685968 1625568 5687272 +1625656 5685968 1625432 5687352 1625480 5687312 1625568 5687272 +1625712 5685976 1625656 5685968 1625568 5687272 1626088 5686480 +1625656 5685968 1625480 5687312 1625568 5687272 1626088 5686480 +1625712 5685976 1625952 5685816 1625656 5685968 1626088 5686480 +1625712 5685976 1625656 5685968 1626088 5686480 1626064 5686368 +1625712 5685976 1625952 5685816 1625656 5685968 1626064 5686368 +1625712 5685976 1625656 5685968 1626064 5686368 1626088 5686256 +1625656 5685968 1625568 5687272 1626088 5686480 1626064 5686368 +1625656 5685968 1622888 5687408 1625432 5687352 1625480 5687312 +1622888 5687408 1623056 5687624 1625432 5687352 1625656 5685968 +1625480 5687312 1625488 5687312 1625568 5687272 1625656 5685968 +1625568 5687272 1625656 5687248 1626088 5686480 1625656 5685968 +1625656 5685968 1621744 5686536 1622296 5686800 1622472 5686920 +1626632 5680392 1625560 5685928 1625656 5685968 1626744 5680528 +1625656 5685968 1625952 5685816 1626744 5680528 1625560 5685928 +1625952 5685816 1626072 5685776 1626744 5680528 1625560 5685928 +1626744 5680528 1626632 5680392 1625560 5685928 1625952 5685816 +1621048 5686008 1625560 5685928 1626632 5680392 1626592 5680320 +1625656 5685968 1625712 5685976 1625952 5685816 1625560 5685928 +1625656 5685968 1625560 5685928 1621048 5686008 1621112 5686056 +1625560 5685928 1626632 5680392 1621048 5686008 1621112 5686056 +1625560 5685928 1621112 5686056 1625656 5685968 1625952 5685816 +1626632 5680392 1621048 5686008 1625560 5685928 1626744 5680528 +1625656 5685968 1625560 5685928 1621112 5686056 1621744 5686536 +1625656 5685968 1625560 5685928 1621744 5686536 1622296 5686800 +1621112 5686056 1621672 5686496 1621744 5686536 1625560 5685928 +1625560 5685928 1621048 5686008 1621112 5686056 1621744 5686536 +1625656 5685968 1625952 5685816 1625560 5685928 1622296 5686800 +1625560 5685928 1621112 5686056 1621744 5686536 1622296 5686800 +1625656 5685968 1625560 5685928 1622296 5686800 1622472 5686920 +1625560 5685928 1621744 5686536 1622296 5686800 1622472 5686920 +1625656 5685968 1625560 5685928 1622472 5686920 1622592 5687064 +1625656 5685968 1625560 5685928 1622592 5687064 1622704 5687208 +1625656 5685968 1625560 5685928 1622704 5687208 1622888 5687408 +1625656 5685968 1625560 5685928 1622888 5687408 1625432 5687352 +1625560 5685928 1622704 5687208 1622888 5687408 1625432 5687352 +1625560 5685928 1622592 5687064 1622704 5687208 1622888 5687408 +1625560 5685928 1622472 5686920 1622592 5687064 1622704 5687208 +1625656 5685968 1625952 5685816 1625560 5685928 1625432 5687352 +1625656 5685968 1625560 5685928 1625432 5687352 1625480 5687312 +1625560 5685928 1622888 5687408 1625432 5687352 1625480 5687312 +1625656 5685968 1625560 5685928 1625480 5687312 1625568 5687272 +1625656 5685968 1625560 5685928 1625568 5687272 1626088 5686480 +1625656 5685968 1625952 5685816 1625560 5685928 1625568 5687272 +1625560 5685928 1625432 5687352 1625480 5687312 1625568 5687272 +1622888 5687408 1623056 5687624 1625432 5687352 1625560 5685928 +1625480 5687312 1625488 5687312 1625568 5687272 1625560 5685928 +1625560 5685928 1622296 5686800 1622472 5686920 1622592 5687064 +1625560 5685928 1625432 5685832 1621048 5686008 1621112 5686056 +1621048 5686008 1625432 5685832 1626632 5680392 1626592 5680320 +1625560 5685928 1625432 5685832 1621112 5686056 1621744 5686536 +1625432 5685832 1621048 5686008 1621112 5686056 1621744 5686536 +1621112 5686056 1621672 5686496 1621744 5686536 1625432 5685832 +1625560 5685928 1626632 5680392 1625432 5685832 1621744 5686536 +1626632 5680392 1625432 5685832 1625560 5685928 1626744 5680528 +1626632 5680392 1621048 5686008 1625432 5685832 1626744 5680528 +1625560 5685928 1625952 5685816 1626744 5680528 1625432 5685832 +1625560 5685928 1625656 5685968 1625952 5685816 1625432 5685832 +1625952 5685816 1626072 5685776 1626744 5680528 1625432 5685832 +1625952 5685816 1626072 5685776 1625432 5685832 1625560 5685928 +1626072 5685776 1626952 5680672 1626744 5680528 1625432 5685832 +1626072 5685776 1626952 5680672 1625432 5685832 1625952 5685816 +1626072 5685776 1626496 5685696 1626952 5680672 1625432 5685832 +1625432 5685832 1621744 5686536 1625560 5685928 1625952 5685816 +1626744 5680528 1626632 5680392 1625432 5685832 1626952 5680672 +1625432 5685832 1626632 5680392 1621048 5686008 1621112 5686056 +1625560 5685928 1625432 5685832 1621744 5686536 1622296 5686800 +1625560 5685928 1625432 5685832 1622296 5686800 1622472 5686920 +1625432 5685832 1621112 5686056 1621744 5686536 1622296 5686800 +1625560 5685928 1625952 5685816 1625432 5685832 1622472 5686920 +1625432 5685832 1621744 5686536 1622296 5686800 1622472 5686920 +1625560 5685928 1625432 5685832 1622472 5686920 1622592 5687064 +1625432 5685832 1622296 5686800 1622472 5686920 1622592 5687064 +1625560 5685928 1625432 5685832 1622592 5687064 1622704 5687208 +1625560 5685928 1625432 5685832 1622704 5687208 1622888 5687408 +1625560 5685928 1625432 5685832 1622888 5687408 1625432 5687352 +1625560 5685928 1625432 5685832 1625432 5687352 1625480 5687312 +1625432 5685832 1622888 5687408 1625432 5687352 1625480 5687312 +1625432 5685832 1622704 5687208 1622888 5687408 1625432 5687352 +1625432 5685832 1622592 5687064 1622704 5687208 1622888 5687408 +1625560 5685928 1625952 5685816 1625432 5685832 1625480 5687312 +1625560 5685928 1625432 5685832 1625480 5687312 1625568 5687272 +1622888 5687408 1623056 5687624 1625432 5687352 1625432 5685832 +1625432 5685832 1622472 5686920 1622592 5687064 1622704 5687208 +1626632 5680392 1625240 5685608 1625432 5685832 1626744 5680528 +1626632 5680392 1621048 5686008 1625240 5685608 1626744 5680528 +1625240 5685608 1621048 5686008 1625432 5685832 1626744 5680528 +1621048 5686008 1625240 5685608 1626632 5680392 1626592 5680320 +1625240 5685608 1626744 5680528 1626632 5680392 1626592 5680320 +1621048 5686008 1625432 5685832 1625240 5685608 1626592 5680320 +1625432 5685832 1626952 5680672 1626744 5680528 1625240 5685608 +1625432 5685832 1626952 5680672 1625240 5685608 1621048 5686008 +1626744 5680528 1626632 5680392 1625240 5685608 1626952 5680672 +1625432 5685832 1626072 5685776 1626952 5680672 1625240 5685608 +1625432 5685832 1625952 5685816 1626072 5685776 1625240 5685608 +1625432 5685832 1625952 5685816 1625240 5685608 1621048 5686008 +1625432 5685832 1625560 5685928 1625952 5685816 1625240 5685608 +1626072 5685776 1626496 5685696 1626952 5680672 1625240 5685608 +1626072 5685776 1626384 5685752 1626496 5685696 1625240 5685608 +1626072 5685776 1626496 5685696 1625240 5685608 1625952 5685816 +1626496 5685696 1627152 5680768 1626952 5680672 1625240 5685608 +1626496 5685696 1627152 5680768 1625240 5685608 1626072 5685776 +1626952 5680672 1626744 5680528 1625240 5685608 1627152 5680768 +1625432 5685832 1625240 5685608 1621048 5686008 1621112 5686056 +1625432 5685832 1625952 5685816 1625240 5685608 1621112 5686056 +1625240 5685608 1626592 5680320 1621048 5686008 1621112 5686056 +1625432 5685832 1625240 5685608 1621112 5686056 1621744 5686536 +1625432 5685832 1625952 5685816 1625240 5685608 1621744 5686536 +1621112 5686056 1621672 5686496 1621744 5686536 1625240 5685608 +1625432 5685832 1625240 5685608 1621744 5686536 1622296 5686800 +1625432 5685832 1625952 5685816 1625240 5685608 1622296 5686800 +1625240 5685608 1621112 5686056 1621744 5686536 1622296 5686800 +1625240 5685608 1621048 5686008 1621112 5686056 1621744 5686536 +1626496 5685696 1627248 5680800 1627152 5680768 1625240 5685608 +1625432 5685832 1625240 5685608 1622296 5686800 1622472 5686920 +1625432 5685832 1625240 5685608 1622472 5686920 1622592 5687064 +1625432 5685832 1625952 5685816 1625240 5685608 1622592 5687064 +1625240 5685608 1621744 5686536 1622296 5686800 1622472 5686920 +1625240 5685608 1622296 5686800 1622472 5686920 1622592 5687064 +1625432 5685832 1625240 5685608 1622592 5687064 1622704 5687208 +1625240 5685608 1622472 5686920 1622592 5687064 1622704 5687208 +1625432 5685832 1625952 5685816 1625240 5685608 1622704 5687208 +1625432 5685832 1625240 5685608 1622704 5687208 1622888 5687408 +1625432 5685832 1625952 5685816 1625240 5685608 1622888 5687408 +1625432 5685832 1625240 5685608 1622888 5687408 1625432 5687352 +1625432 5685832 1625240 5685608 1625432 5687352 1625480 5687312 +1625432 5685832 1625952 5685816 1625240 5685608 1625432 5687352 +1625240 5685608 1622704 5687208 1622888 5687408 1625432 5687352 +1622888 5687408 1623056 5687624 1625432 5687352 1625240 5685608 +1625432 5687352 1625432 5685832 1625240 5685608 1623056 5687624 +1622888 5687408 1623056 5687624 1625240 5685608 1622704 5687208 +1623056 5687624 1623096 5687688 1625432 5687352 1625240 5685608 +1625240 5685608 1622592 5687064 1622704 5687208 1622888 5687408 +1621048 5686008 1625240 5685608 1626592 5680320 1626576 5680264 +1625240 5685608 1625200 5685616 1621744 5686536 1622296 5686800 +1625240 5685608 1621112 5686056 1625200 5685616 1622296 5686800 +1625200 5685616 1621112 5686056 1621744 5686536 1622296 5686800 +1621744 5686536 1625200 5685616 1621112 5686056 1621672 5686496 +1625240 5685608 1625200 5685616 1622296 5686800 1622472 5686920 +1625240 5685608 1621112 5686056 1625200 5685616 1622472 5686920 +1625200 5685616 1621744 5686536 1622296 5686800 1622472 5686920 +1621112 5686056 1625200 5685616 1625240 5685608 1621048 5686008 +1625200 5685616 1622472 5686920 1625240 5685608 1621048 5686008 +1625240 5685608 1626592 5680320 1621048 5686008 1625200 5685616 +1625240 5685608 1626592 5680320 1625200 5685616 1622472 5686920 +1625240 5685608 1626632 5680392 1626592 5680320 1625200 5685616 +1625240 5685608 1626632 5680392 1625200 5685616 1622472 5686920 +1625240 5685608 1626744 5680528 1626632 5680392 1625200 5685616 +1625240 5685608 1626744 5680528 1625200 5685616 1622472 5686920 +1625240 5685608 1626952 5680672 1626744 5680528 1625200 5685616 +1626592 5680320 1621048 5686008 1625200 5685616 1626632 5680392 +1626632 5680392 1626592 5680320 1625200 5685616 1626744 5680528 +1621112 5686056 1621744 5686536 1625200 5685616 1621048 5686008 +1621048 5686008 1621112 5686056 1625200 5685616 1626592 5680320 +1625240 5685608 1625200 5685616 1622472 5686920 1622592 5687064 +1625240 5685608 1625200 5685616 1622592 5687064 1622704 5687208 +1625240 5685608 1626744 5680528 1625200 5685616 1622704 5687208 +1625200 5685616 1622296 5686800 1622472 5686920 1622592 5687064 +1625200 5685616 1622472 5686920 1622592 5687064 1622704 5687208 +1625240 5685608 1625200 5685616 1622704 5687208 1622888 5687408 +1625200 5685616 1622592 5687064 1622704 5687208 1622888 5687408 +1625240 5685608 1626744 5680528 1625200 5685616 1622888 5687408 +1625240 5685608 1625200 5685616 1622888 5687408 1623056 5687624 +1625240 5685608 1626744 5680528 1625200 5685616 1623056 5687624 +1625240 5685608 1625200 5685616 1623056 5687624 1625432 5687352 +1625240 5685608 1626744 5680528 1625200 5685616 1625432 5687352 +1625240 5685608 1625200 5685616 1625432 5687352 1625432 5685832 +1625432 5687352 1625480 5687312 1625432 5685832 1625200 5685616 +1625240 5685608 1626744 5680528 1625200 5685616 1625432 5685832 +1625200 5685616 1622888 5687408 1623056 5687624 1625432 5687352 +1625200 5685616 1623056 5687624 1625432 5687352 1625432 5685832 +1623056 5687624 1623096 5687688 1625432 5687352 1625200 5685616 +1625200 5685616 1622704 5687208 1622888 5687408 1623056 5687624 +1626592 5680320 1626576 5680264 1621048 5686008 1625200 5685616 +1622296 5686800 1625104 5685656 1625200 5685616 1621744 5686536 +1625200 5685616 1621112 5686056 1621744 5686536 1625104 5685656 +1621744 5686536 1622296 5686800 1625104 5685656 1621112 5686056 +1621112 5686056 1621672 5686496 1621744 5686536 1625104 5685656 +1622296 5686800 1622472 5686920 1625104 5685656 1621744 5686536 +1625104 5685656 1622472 5686920 1625200 5685616 1621112 5686056 +1625200 5685616 1621048 5686008 1621112 5686056 1625104 5685656 +1621112 5686056 1621744 5686536 1625104 5685656 1621048 5686008 +1625200 5685616 1621048 5686008 1625104 5685656 1622472 5686920 +1625200 5685616 1625104 5685656 1622472 5686920 1622592 5687064 +1625200 5685616 1621048 5686008 1625104 5685656 1622592 5687064 +1625104 5685656 1622296 5686800 1622472 5686920 1622592 5687064 +1625200 5685616 1626592 5680320 1621048 5686008 1625104 5685656 +1625200 5685616 1626632 5680392 1626592 5680320 1625104 5685656 +1625200 5685616 1626744 5680528 1626632 5680392 1625104 5685656 +1625200 5685616 1626632 5680392 1625104 5685656 1622592 5687064 +1621048 5686008 1621112 5686056 1625104 5685656 1626592 5680320 +1626592 5680320 1621048 5686008 1625104 5685656 1626632 5680392 +1625200 5685616 1625104 5685656 1622592 5687064 1622704 5687208 +1625200 5685616 1625104 5685656 1622704 5687208 1622888 5687408 +1625200 5685616 1626632 5680392 1625104 5685656 1622888 5687408 +1625104 5685656 1622472 5686920 1622592 5687064 1622704 5687208 +1625104 5685656 1622592 5687064 1622704 5687208 1622888 5687408 +1625200 5685616 1625104 5685656 1622888 5687408 1623056 5687624 +1625104 5685656 1622704 5687208 1622888 5687408 1623056 5687624 +1625200 5685616 1626632 5680392 1625104 5685656 1623056 5687624 +1625200 5685616 1625104 5685656 1623056 5687624 1625432 5687352 +1625200 5685616 1626632 5680392 1625104 5685656 1625432 5687352 +1625200 5685616 1625104 5685656 1625432 5687352 1625432 5685832 +1625432 5687352 1625480 5687312 1625432 5685832 1625104 5685656 +1625200 5685616 1625104 5685656 1625432 5685832 1625240 5685608 +1625200 5685616 1626632 5680392 1625104 5685656 1625432 5685832 +1625104 5685656 1623056 5687624 1625432 5687352 1625432 5685832 +1623056 5687624 1623096 5687688 1625432 5687352 1625104 5685656 +1625104 5685656 1622888 5687408 1623056 5687624 1625432 5687352 +1626592 5680320 1626576 5680264 1621048 5686008 1625104 5685656 +1625104 5685656 1624992 5685664 1621048 5686008 1621112 5686056 +1625104 5685656 1624992 5685664 1621112 5686056 1621744 5686536 +1625104 5685656 1624992 5685664 1621744 5686536 1622296 5686800 +1624992 5685664 1621112 5686056 1621744 5686536 1622296 5686800 +1621112 5686056 1621672 5686496 1621744 5686536 1624992 5685664 +1621744 5686536 1622296 5686800 1624992 5685664 1621672 5686496 +1625104 5685656 1626592 5680320 1624992 5685664 1622296 5686800 +1625104 5685656 1624992 5685664 1622296 5686800 1622472 5686920 +1624992 5685664 1621744 5686536 1622296 5686800 1622472 5686920 +1625104 5685656 1626592 5680320 1624992 5685664 1622472 5686920 +1624992 5685664 1626592 5680320 1621048 5686008 1621112 5686056 +1624992 5685664 1621048 5686008 1621112 5686056 1621672 5686496 +1625104 5685656 1624992 5685664 1622472 5686920 1622592 5687064 +1625104 5685656 1626592 5680320 1624992 5685664 1622592 5687064 +1624992 5685664 1622296 5686800 1622472 5686920 1622592 5687064 +1625104 5685656 1624992 5685664 1622592 5687064 1622704 5687208 +1625104 5685656 1626592 5680320 1624992 5685664 1622704 5687208 +1624992 5685664 1622472 5686920 1622592 5687064 1622704 5687208 +1626592 5680320 1624992 5685664 1625104 5685656 1626632 5680392 +1626592 5680320 1621048 5686008 1624992 5685664 1626632 5680392 +1625104 5685656 1625200 5685616 1626632 5680392 1624992 5685664 +1625200 5685616 1626744 5680528 1626632 5680392 1624992 5685664 +1625200 5685616 1625240 5685608 1626744 5680528 1624992 5685664 +1625200 5685616 1626744 5680528 1624992 5685664 1625104 5685656 +1624992 5685664 1622704 5687208 1625104 5685656 1625200 5685616 +1626632 5680392 1626592 5680320 1624992 5685664 1626744 5680528 +1621112 5686056 1621424 5686384 1621672 5686496 1624992 5685664 +1625104 5685656 1624992 5685664 1622704 5687208 1622888 5687408 +1625104 5685656 1624992 5685664 1622888 5687408 1623056 5687624 +1625104 5685656 1625200 5685616 1624992 5685664 1623056 5687624 +1624992 5685664 1622592 5687064 1622704 5687208 1622888 5687408 +1624992 5685664 1622704 5687208 1622888 5687408 1623056 5687624 +1625104 5685656 1624992 5685664 1623056 5687624 1625432 5687352 +1624992 5685664 1622888 5687408 1623056 5687624 1625432 5687352 +1625104 5685656 1625200 5685616 1624992 5685664 1625432 5687352 +1625104 5685656 1624992 5685664 1625432 5687352 1625432 5685832 +1625432 5687352 1625480 5687312 1625432 5685832 1624992 5685664 +1625480 5687312 1625560 5685928 1625432 5685832 1624992 5685664 +1625104 5685656 1625200 5685616 1624992 5685664 1625432 5685832 +1625432 5685832 1625104 5685656 1624992 5685664 1625480 5687312 +1625104 5685656 1624992 5685664 1625432 5685832 1625200 5685616 +1623056 5687624 1623096 5687688 1625432 5687352 1624992 5685664 +1624992 5685664 1623056 5687624 1625432 5687352 1625480 5687312 +1621048 5686008 1624992 5685664 1626592 5680320 1626576 5680264 +1626592 5680320 1624976 5685640 1624992 5685664 1626632 5680392 +1624976 5685640 1621048 5686008 1624992 5685664 1626632 5680392 +1624992 5685664 1624976 5685640 1621048 5686008 1621112 5686056 +1624992 5685664 1626632 5680392 1624976 5685640 1621112 5686056 +1624976 5685640 1626592 5680320 1621048 5686008 1621112 5686056 +1626592 5680320 1621048 5686008 1624976 5685640 1626632 5680392 +1624992 5685664 1624976 5685640 1621112 5686056 1621672 5686496 +1624992 5685664 1626632 5680392 1624976 5685640 1621672 5686496 +1624992 5685664 1624976 5685640 1621672 5686496 1621744 5686536 +1624992 5685664 1626632 5680392 1624976 5685640 1621744 5686536 +1624992 5685664 1624976 5685640 1621744 5686536 1622296 5686800 +1624992 5685664 1626632 5680392 1624976 5685640 1622296 5686800 +1624992 5685664 1624976 5685640 1622296 5686800 1622472 5686920 +1624992 5685664 1626632 5680392 1624976 5685640 1622472 5686920 +1624976 5685640 1621744 5686536 1622296 5686800 1622472 5686920 +1624976 5685640 1621672 5686496 1621744 5686536 1622296 5686800 +1624992 5685664 1624976 5685640 1622472 5686920 1622592 5687064 +1624992 5685664 1626632 5680392 1624976 5685640 1622592 5687064 +1624976 5685640 1622296 5686800 1622472 5686920 1622592 5687064 +1624976 5685640 1621048 5686008 1621112 5686056 1621672 5686496 +1624976 5685640 1621112 5686056 1621672 5686496 1621744 5686536 +1624992 5685664 1624976 5685640 1622592 5687064 1622704 5687208 +1624992 5685664 1626632 5680392 1624976 5685640 1622704 5687208 +1624976 5685640 1622472 5686920 1622592 5687064 1622704 5687208 +1624992 5685664 1624976 5685640 1622704 5687208 1622888 5687408 +1624992 5685664 1626632 5680392 1624976 5685640 1622888 5687408 +1624976 5685640 1622592 5687064 1622704 5687208 1622888 5687408 +1624992 5685664 1626744 5680528 1626632 5680392 1624976 5685640 +1624992 5685664 1626744 5680528 1624976 5685640 1622888 5687408 +1626632 5680392 1626592 5680320 1624976 5685640 1626744 5680528 +1624992 5685664 1625200 5685616 1626744 5680528 1624976 5685640 +1624992 5685664 1625200 5685616 1624976 5685640 1622888 5687408 +1625200 5685616 1625240 5685608 1626744 5680528 1624976 5685640 +1625240 5685608 1626952 5680672 1626744 5680528 1624976 5685640 +1624992 5685664 1625104 5685656 1625200 5685616 1624976 5685640 +1624992 5685664 1625104 5685656 1624976 5685640 1622888 5687408 +1625200 5685616 1625240 5685608 1624976 5685640 1625104 5685656 +1626744 5680528 1626632 5680392 1624976 5685640 1625240 5685608 +1621112 5686056 1621424 5686384 1621672 5686496 1624976 5685640 +1624992 5685664 1624976 5685640 1622888 5687408 1623056 5687624 +1621048 5686008 1624976 5685640 1626592 5680320 1626576 5680264 +1624976 5685640 1624936 5685632 1621048 5686008 1621112 5686056 +1624976 5685640 1624936 5685632 1621112 5686056 1621672 5686496 +1624936 5685632 1621048 5686008 1621112 5686056 1621672 5686496 +1624976 5685640 1626592 5680320 1624936 5685632 1621672 5686496 +1626592 5680320 1624936 5685632 1624976 5685640 1626632 5680392 +1626592 5680320 1621048 5686008 1624936 5685632 1626632 5680392 +1624976 5685640 1626744 5680528 1626632 5680392 1624936 5685632 +1624936 5685632 1621672 5686496 1624976 5685640 1626744 5680528 +1626632 5680392 1626592 5680320 1624936 5685632 1626744 5680528 +1624936 5685632 1626592 5680320 1621048 5686008 1621112 5686056 +1624976 5685640 1624936 5685632 1621672 5686496 1621744 5686536 +1624976 5685640 1624936 5685632 1621744 5686536 1622296 5686800 +1624976 5685640 1624936 5685632 1622296 5686800 1622472 5686920 +1624976 5685640 1624936 5685632 1622472 5686920 1622592 5687064 +1624936 5685632 1622296 5686800 1622472 5686920 1622592 5687064 +1624936 5685632 1621744 5686536 1622296 5686800 1622472 5686920 +1624976 5685640 1624936 5685632 1622592 5687064 1622704 5687208 +1624936 5685632 1622472 5686920 1622592 5687064 1622704 5687208 +1624936 5685632 1621112 5686056 1621672 5686496 1621744 5686536 +1624976 5685640 1626744 5680528 1624936 5685632 1622704 5687208 +1624936 5685632 1621672 5686496 1621744 5686536 1622296 5686800 +1624976 5685640 1624936 5685632 1622704 5687208 1622888 5687408 +1624936 5685632 1622592 5687064 1622704 5687208 1622888 5687408 +1624976 5685640 1626744 5680528 1624936 5685632 1622888 5687408 +1624976 5685640 1624936 5685632 1622888 5687408 1624992 5685664 +1624976 5685640 1626744 5680528 1624936 5685632 1624992 5685664 +1624936 5685632 1622704 5687208 1622888 5687408 1624992 5685664 +1624976 5685640 1625240 5685608 1626744 5680528 1624936 5685632 +1626744 5680528 1626632 5680392 1624936 5685632 1625240 5685608 +1624976 5685640 1625200 5685616 1625240 5685608 1624936 5685632 +1625240 5685608 1626952 5680672 1626744 5680528 1624936 5685632 +1624976 5685640 1625104 5685656 1625200 5685616 1624936 5685632 +1624976 5685640 1625200 5685616 1624936 5685632 1624992 5685664 +1625240 5685608 1626744 5680528 1624936 5685632 1625200 5685616 +1621112 5686056 1621424 5686384 1621672 5686496 1624936 5685632 +1622888 5687408 1623056 5687624 1624992 5685664 1624936 5685632 +1623056 5687624 1625432 5687352 1624992 5685664 1624936 5685632 +1622888 5687408 1623056 5687624 1624936 5685632 1622704 5687208 +1624992 5685664 1624976 5685640 1624936 5685632 1625432 5687352 +1623056 5687624 1625432 5687352 1624936 5685632 1622888 5687408 +1623056 5687624 1623096 5687688 1625432 5687352 1624936 5685632 +1625432 5687352 1625480 5687312 1624992 5685664 1624936 5685632 +1621048 5686008 1624936 5685632 1626592 5680320 1626576 5680264 +1626592 5680320 1624920 5685608 1624936 5685632 1626632 5680392 +1624920 5685608 1621048 5686008 1624936 5685632 1626632 5680392 +1626592 5680320 1621048 5686008 1624920 5685608 1626632 5680392 +1624936 5685632 1626744 5680528 1626632 5680392 1624920 5685608 +1626632 5680392 1626592 5680320 1624920 5685608 1626744 5680528 +1624936 5685632 1626744 5680528 1624920 5685608 1621048 5686008 +1624936 5685632 1625240 5685608 1626744 5680528 1624920 5685608 +1624936 5685632 1625240 5685608 1624920 5685608 1621048 5686008 +1625240 5685608 1626952 5680672 1626744 5680528 1624920 5685608 +1626744 5680528 1626632 5680392 1624920 5685608 1625240 5685608 +1624936 5685632 1624920 5685608 1621048 5686008 1621112 5686056 +1624936 5685632 1624920 5685608 1621112 5686056 1621672 5686496 +1624936 5685632 1625240 5685608 1624920 5685608 1621672 5686496 +1624920 5685608 1626592 5680320 1621048 5686008 1621112 5686056 +1624920 5685608 1621048 5686008 1621112 5686056 1621672 5686496 +1624936 5685632 1624920 5685608 1621672 5686496 1621744 5686536 +1624920 5685608 1621112 5686056 1621672 5686496 1621744 5686536 +1624936 5685632 1625240 5685608 1624920 5685608 1621744 5686536 +1624936 5685632 1624920 5685608 1621744 5686536 1622296 5686800 +1624936 5685632 1625240 5685608 1624920 5685608 1622296 5686800 +1624936 5685632 1624920 5685608 1622296 5686800 1622472 5686920 +1624936 5685632 1625240 5685608 1624920 5685608 1622472 5686920 +1624936 5685632 1624920 5685608 1622472 5686920 1622592 5687064 +1624936 5685632 1625240 5685608 1624920 5685608 1622592 5687064 +1624936 5685632 1624920 5685608 1622592 5687064 1622704 5687208 +1624936 5685632 1625240 5685608 1624920 5685608 1622704 5687208 +1624920 5685608 1622472 5686920 1622592 5687064 1622704 5687208 +1624920 5685608 1622296 5686800 1622472 5686920 1622592 5687064 +1624936 5685632 1624920 5685608 1622704 5687208 1622888 5687408 +1624920 5685608 1621672 5686496 1621744 5686536 1622296 5686800 +1624920 5685608 1621744 5686536 1622296 5686800 1622472 5686920 +1624936 5685632 1625200 5685616 1625240 5685608 1624920 5685608 +1624936 5685632 1625200 5685616 1624920 5685608 1622704 5687208 +1625240 5685608 1626744 5680528 1624920 5685608 1625200 5685616 +1624936 5685632 1624976 5685640 1625200 5685616 1624920 5685608 +1624936 5685632 1624976 5685640 1624920 5685608 1622704 5687208 +1624976 5685640 1625104 5685656 1625200 5685616 1624920 5685608 +1625200 5685616 1625240 5685608 1624920 5685608 1624976 5685640 +1621112 5686056 1621424 5686384 1621672 5686496 1624920 5685608 +1621048 5686008 1624920 5685608 1626592 5680320 1626576 5680264 +1624920 5685608 1624912 5685464 1621048 5686008 1621112 5686056 +1624920 5685608 1624912 5685464 1621112 5686056 1621672 5686496 +1624920 5685608 1624912 5685464 1621672 5686496 1621744 5686536 +1624912 5685464 1621048 5686008 1621112 5686056 1621672 5686496 +1624912 5685464 1621112 5686056 1621672 5686496 1621744 5686536 +1626592 5680320 1624912 5685464 1624920 5685608 1626632 5680392 +1624920 5685608 1626744 5680528 1626632 5680392 1624912 5685464 +1626592 5680320 1621048 5686008 1624912 5685464 1626632 5680392 +1626632 5680392 1626592 5680320 1624912 5685464 1626744 5680528 +1624920 5685608 1626744 5680528 1624912 5685464 1621744 5686536 +1624912 5685464 1626592 5680320 1621048 5686008 1621112 5686056 +1624920 5685608 1624912 5685464 1621744 5686536 1622296 5686800 +1624912 5685464 1621672 5686496 1621744 5686536 1622296 5686800 +1624920 5685608 1626744 5680528 1624912 5685464 1622296 5686800 +1624920 5685608 1625240 5685608 1626744 5680528 1624912 5685464 +1626744 5680528 1626632 5680392 1624912 5685464 1625240 5685608 +1624920 5685608 1625200 5685616 1625240 5685608 1624912 5685464 +1625240 5685608 1626952 5680672 1626744 5680528 1624912 5685464 +1626744 5680528 1626632 5680392 1624912 5685464 1626952 5680672 +1624920 5685608 1625200 5685616 1624912 5685464 1622296 5686800 +1625240 5685608 1626952 5680672 1624912 5685464 1625200 5685616 +1624920 5685608 1624912 5685464 1622296 5686800 1622472 5686920 +1624920 5685608 1625200 5685616 1624912 5685464 1622472 5686920 +1624920 5685608 1624912 5685464 1622472 5686920 1622592 5687064 +1624912 5685464 1621744 5686536 1622296 5686800 1622472 5686920 +1625240 5685608 1627152 5680768 1626952 5680672 1624912 5685464 +1626952 5680672 1626744 5680528 1624912 5685464 1627152 5680768 +1625240 5685608 1627152 5680768 1624912 5685464 1625200 5685616 +1625240 5685608 1626496 5685696 1627152 5680768 1624912 5685464 +1625240 5685608 1626072 5685776 1626496 5685696 1624912 5685464 +1625240 5685608 1626496 5685696 1624912 5685464 1625200 5685616 +1627152 5680768 1626952 5680672 1624912 5685464 1626496 5685696 +1624920 5685608 1624976 5685640 1625200 5685616 1624912 5685464 +1625200 5685616 1625240 5685608 1624912 5685464 1624976 5685640 +1624920 5685608 1624936 5685632 1624976 5685640 1624912 5685464 +1624920 5685608 1624976 5685640 1624912 5685464 1622472 5686920 +1624976 5685640 1625104 5685656 1625200 5685616 1624912 5685464 +1625200 5685616 1625240 5685608 1624912 5685464 1625104 5685656 +1624976 5685640 1624992 5685664 1625104 5685656 1624912 5685464 +1624976 5685640 1625104 5685656 1624912 5685464 1624920 5685608 +1626496 5685696 1627248 5680800 1627152 5680768 1624912 5685464 +1621112 5686056 1621424 5686384 1621672 5686496 1624912 5685464 +1621048 5686008 1624912 5685464 1626592 5680320 1626576 5680264 +1626496 5685696 1624952 5685472 1625240 5685608 1626072 5685776 +1625240 5685608 1624952 5685472 1624912 5685464 1625200 5685616 +1624952 5685472 1626496 5685696 1624912 5685464 1625200 5685616 +1624912 5685464 1625104 5685656 1625200 5685616 1624952 5685472 +1624912 5685464 1625104 5685656 1624952 5685472 1626496 5685696 +1624912 5685464 1624976 5685640 1625104 5685656 1624952 5685472 +1624912 5685464 1624976 5685640 1624952 5685472 1626496 5685696 +1625104 5685656 1625200 5685616 1624952 5685472 1624976 5685640 +1624976 5685640 1624992 5685664 1625104 5685656 1624952 5685472 +1625200 5685616 1625240 5685608 1624952 5685472 1625104 5685656 +1624912 5685464 1624952 5685472 1626496 5685696 1627152 5680768 +1624912 5685464 1624976 5685640 1624952 5685472 1627152 5680768 +1624912 5685464 1624952 5685472 1627152 5680768 1626952 5680672 +1624912 5685464 1624976 5685640 1624952 5685472 1626952 5680672 +1624912 5685464 1624952 5685472 1626952 5680672 1626744 5680528 +1624952 5685472 1626496 5685696 1627152 5680768 1626952 5680672 +1624912 5685464 1624920 5685608 1624976 5685640 1624952 5685472 +1624912 5685464 1624920 5685608 1624952 5685472 1626952 5680672 +1624920 5685608 1624936 5685632 1624976 5685640 1624952 5685472 +1624976 5685640 1625104 5685656 1624952 5685472 1624920 5685608 +1624952 5685472 1625240 5685608 1626496 5685696 1627152 5680768 +1625240 5685608 1626496 5685696 1624952 5685472 1625200 5685616 +1626496 5685696 1627248 5680800 1627152 5680768 1624952 5685472 +1624952 5685472 1624992 5685440 1627152 5680768 1626952 5680672 +1624992 5685440 1626496 5685696 1627152 5680768 1626952 5680672 +1624952 5685472 1624992 5685440 1626952 5680672 1624912 5685464 +1626952 5680672 1626744 5680528 1624912 5685464 1624992 5685440 +1626744 5680528 1626632 5680392 1624912 5685464 1624992 5685440 +1626632 5680392 1626592 5680320 1624912 5685464 1624992 5685440 +1626744 5680528 1626632 5680392 1624992 5685440 1626952 5680672 +1624992 5685440 1627152 5680768 1626952 5680672 1626744 5680528 +1624912 5685464 1624952 5685472 1624992 5685440 1626632 5680392 +1626496 5685696 1624992 5685440 1624952 5685472 1625240 5685608 +1626496 5685696 1627152 5680768 1624992 5685440 1625240 5685608 +1626496 5685696 1624992 5685440 1625240 5685608 1626072 5685776 +1626496 5685696 1627152 5680768 1624992 5685440 1626072 5685776 +1626496 5685696 1624992 5685440 1626072 5685776 1626384 5685752 +1625240 5685608 1625952 5685816 1626072 5685776 1624992 5685440 +1624992 5685440 1624952 5685472 1625240 5685608 1626072 5685776 +1624952 5685472 1625240 5685608 1624992 5685440 1624912 5685464 +1624952 5685472 1625200 5685616 1625240 5685608 1624992 5685440 +1624952 5685472 1625104 5685656 1625200 5685616 1624992 5685440 +1624952 5685472 1624976 5685640 1625104 5685656 1624992 5685440 +1625200 5685616 1625240 5685608 1624992 5685440 1625104 5685656 +1624976 5685640 1624992 5685664 1625104 5685656 1624992 5685440 +1624952 5685472 1624920 5685608 1624976 5685640 1624992 5685440 +1625104 5685656 1625200 5685616 1624992 5685440 1624976 5685640 +1625240 5685608 1626072 5685776 1624992 5685440 1625200 5685616 +1624952 5685472 1624976 5685640 1624992 5685440 1624912 5685464 +1627152 5680768 1624992 5685440 1626496 5685696 1627248 5680800 +1624992 5685440 1625120 5685400 1627152 5680768 1626952 5680672 +1624992 5685440 1626496 5685696 1625120 5685400 1626952 5680672 +1625120 5685400 1626496 5685696 1627152 5680768 1626952 5680672 +1626496 5685696 1625120 5685400 1624992 5685440 1626072 5685776 +1625120 5685400 1626952 5680672 1624992 5685440 1626072 5685776 +1624992 5685440 1625240 5685608 1626072 5685776 1625120 5685400 +1624992 5685440 1625240 5685608 1625120 5685400 1626952 5680672 +1626496 5685696 1625120 5685400 1626072 5685776 1626384 5685752 +1625240 5685608 1625952 5685816 1626072 5685776 1625120 5685400 +1625240 5685608 1625432 5685832 1625952 5685816 1625120 5685400 +1625240 5685608 1625952 5685816 1625120 5685400 1624992 5685440 +1624992 5685440 1625120 5685400 1626952 5680672 1626744 5680528 +1624992 5685440 1625240 5685608 1625120 5685400 1626744 5680528 +1625120 5685400 1627152 5680768 1626952 5680672 1626744 5680528 +1624992 5685440 1625120 5685400 1626744 5680528 1626632 5680392 +1624992 5685440 1625120 5685400 1626632 5680392 1624912 5685464 +1624992 5685440 1625240 5685608 1625120 5685400 1626632 5680392 +1625120 5685400 1626952 5680672 1626744 5680528 1626632 5680392 +1626496 5685696 1627152 5680768 1625120 5685400 1626072 5685776 +1626072 5685776 1626496 5685696 1625120 5685400 1625952 5685816 +1624992 5685440 1625200 5685616 1625240 5685608 1625120 5685400 +1624992 5685440 1625200 5685616 1625120 5685400 1626632 5680392 +1624992 5685440 1625104 5685656 1625200 5685616 1625120 5685400 +1624992 5685440 1625104 5685656 1625120 5685400 1626632 5680392 +1625240 5685608 1625952 5685816 1625120 5685400 1625200 5685616 +1624992 5685440 1624976 5685640 1625104 5685656 1625120 5685400 +1625200 5685616 1625240 5685608 1625120 5685400 1625104 5685656 +1627152 5680768 1625120 5685400 1626496 5685696 1627248 5680800 +1625120 5685400 1625296 5685392 1627152 5680768 1626952 5680672 +1625120 5685400 1625296 5685392 1626952 5680672 1626744 5680528 +1625296 5685392 1627152 5680768 1626952 5680672 1626744 5680528 +1625296 5685392 1626496 5685696 1627152 5680768 1626952 5680672 +1625120 5685400 1625296 5685392 1626744 5680528 1626632 5680392 +1626496 5685696 1625296 5685392 1625120 5685400 1626072 5685776 +1626496 5685696 1625296 5685392 1626072 5685776 1626384 5685752 +1626496 5685696 1627152 5680768 1625296 5685392 1626072 5685776 +1625120 5685400 1625952 5685816 1626072 5685776 1625296 5685392 +1625120 5685400 1625240 5685608 1625952 5685816 1625296 5685392 +1625240 5685608 1625432 5685832 1625952 5685816 1625296 5685392 +1625432 5685832 1625560 5685928 1625952 5685816 1625296 5685392 +1625120 5685400 1625200 5685616 1625240 5685608 1625296 5685392 +1625240 5685608 1625432 5685832 1625296 5685392 1625120 5685400 +1626072 5685776 1626496 5685696 1625296 5685392 1625952 5685816 +1625952 5685816 1626072 5685776 1625296 5685392 1625432 5685832 +1625120 5685400 1625240 5685608 1625296 5685392 1626744 5680528 +1627152 5680768 1625296 5685392 1626496 5685696 1627248 5680800 +1627152 5680768 1626952 5680672 1625296 5685392 1627248 5680800 +1625296 5685392 1626072 5685776 1626496 5685696 1627248 5680800 +1626496 5685696 1627944 5680984 1627248 5680800 1625296 5685392 +1626496 5685696 1625528 5685408 1625296 5685392 1626072 5685776 +1626496 5685696 1627248 5680800 1625528 5685408 1626072 5685776 +1626496 5685696 1625528 5685408 1626072 5685776 1626384 5685752 +1625528 5685408 1627248 5680800 1625296 5685392 1626072 5685776 +1627248 5680800 1625528 5685408 1626496 5685696 1627944 5680984 +1625296 5685392 1625952 5685816 1626072 5685776 1625528 5685408 +1626072 5685776 1626496 5685696 1625528 5685408 1625952 5685816 +1625296 5685392 1625952 5685816 1625528 5685408 1627248 5680800 +1625296 5685392 1625432 5685832 1625952 5685816 1625528 5685408 +1625296 5685392 1625240 5685608 1625432 5685832 1625528 5685408 +1625432 5685832 1625560 5685928 1625952 5685816 1625528 5685408 +1625560 5685928 1625656 5685968 1625952 5685816 1625528 5685408 +1625296 5685392 1625240 5685608 1625528 5685408 1627248 5680800 +1625296 5685392 1625120 5685400 1625240 5685608 1625528 5685408 +1625952 5685816 1626072 5685776 1625528 5685408 1625560 5685928 +1625432 5685832 1625560 5685928 1625528 5685408 1625240 5685608 +1625296 5685392 1625528 5685408 1627248 5680800 1627152 5680768 +1625528 5685408 1626496 5685696 1627248 5680800 1627152 5680768 +1625296 5685392 1625528 5685408 1627152 5680768 1626952 5680672 +1625296 5685392 1625528 5685408 1626952 5680672 1626744 5680528 +1625296 5685392 1625240 5685608 1625528 5685408 1626952 5680672 +1625528 5685408 1627248 5680800 1627152 5680768 1626952 5680672 +1625528 5685408 1626064 5685480 1627248 5680800 1627152 5680768 +1626496 5685696 1626064 5685480 1625528 5685408 1626072 5685776 +1625528 5685408 1625952 5685816 1626072 5685776 1626064 5685480 +1625528 5685408 1625952 5685816 1626064 5685480 1627152 5680768 +1626064 5685480 1626496 5685696 1627248 5680800 1627152 5680768 +1626072 5685776 1626496 5685696 1626064 5685480 1625952 5685816 +1626496 5685696 1626064 5685480 1626072 5685776 1626384 5685752 +1626064 5685480 1625952 5685816 1626072 5685776 1626384 5685752 +1626496 5685696 1627248 5680800 1626064 5685480 1626384 5685752 +1626496 5685696 1626064 5685480 1626384 5685752 1626504 5685728 +1627248 5680800 1626064 5685480 1626496 5685696 1627944 5680984 +1626496 5685696 1626912 5685760 1627944 5680984 1626064 5685480 +1627248 5680800 1626064 5685480 1627944 5680984 1627752 5680904 +1627248 5680800 1627152 5680768 1626064 5685480 1627944 5680984 +1626064 5685480 1626384 5685752 1626496 5685696 1626912 5685760 +1626496 5685696 1626784 5685776 1626912 5685760 1626064 5685480 +1627944 5680984 1627248 5680800 1626064 5685480 1626912 5685760 +1625528 5685408 1625560 5685928 1625952 5685816 1626064 5685480 +1626912 5685760 1627048 5685800 1627944 5680984 1626064 5685480 +1625528 5685408 1626064 5685480 1627152 5680768 1626952 5680672 +1626912 5685760 1626216 5685512 1626064 5685480 1626496 5685696 +1626912 5685760 1627944 5680984 1626216 5685512 1626496 5685696 +1626064 5685480 1626384 5685752 1626496 5685696 1626216 5685512 +1626496 5685696 1626912 5685760 1626216 5685512 1626384 5685752 +1626064 5685480 1626072 5685776 1626384 5685752 1626216 5685512 +1626064 5685480 1625952 5685816 1626072 5685776 1626216 5685512 +1626384 5685752 1626496 5685696 1626216 5685512 1626072 5685776 +1626216 5685512 1627944 5680984 1626064 5685480 1626072 5685776 +1626384 5685752 1626504 5685728 1626496 5685696 1626216 5685512 +1626912 5685760 1626216 5685512 1626496 5685696 1626784 5685776 +1626064 5685480 1626216 5685512 1627944 5680984 1627248 5680800 +1627944 5680984 1627752 5680904 1627248 5680800 1626216 5685512 +1626064 5685480 1626216 5685512 1627248 5680800 1627152 5680768 +1626064 5685480 1626072 5685776 1626216 5685512 1627248 5680800 +1626216 5685512 1626912 5685760 1627944 5680984 1627248 5680800 +1627944 5680984 1626216 5685512 1626912 5685760 1627048 5685800 +1631080 5689008 1630088 5686120 1628144 5680632 1628112 5680824 +1628144 5680632 1628112 5680744 1628112 5680824 1630088 5686120 +1631080 5689008 1630088 5686120 1628112 5680824 1629096 5687008 +1628112 5680824 1628096 5680872 1629096 5687008 1630088 5686120 +1629096 5687008 1631080 5689008 1630088 5686120 1628096 5680872 +1630088 5686120 1631152 5689072 1628144 5680632 1628112 5680824 +1630088 5686120 1628144 5680632 1628112 5680824 1628096 5680872 +1631080 5689008 1630088 5686120 1629096 5687008 1630904 5688944 +1631080 5689008 1630088 5686120 1630904 5688944 1630992 5688984 +1630088 5686120 1628096 5680872 1629096 5687008 1630904 5688944 +1631080 5689008 1631152 5689072 1630088 5686120 1630904 5688944 +1628096 5680872 1628992 5686936 1629096 5687008 1630088 5686120 +1628992 5686936 1629064 5686992 1629096 5687008 1630088 5686120 +1629096 5687008 1630904 5688944 1630088 5686120 1628992 5686936 +1628096 5680872 1628992 5686936 1630088 5686120 1628112 5680824 +1628096 5680872 1628016 5680960 1628992 5686936 1630088 5686120 +1628016 5680960 1627824 5686272 1628992 5686936 1630088 5686120 +1627824 5686272 1628464 5686776 1628992 5686936 1630088 5686120 +1627824 5686272 1628464 5686776 1630088 5686120 1628016 5680960 +1627824 5686272 1628088 5686560 1628464 5686776 1630088 5686120 +1627824 5686272 1628088 5686560 1630088 5686120 1628016 5680960 +1628088 5686560 1628312 5686720 1628464 5686776 1630088 5686120 +1628464 5686776 1628992 5686936 1630088 5686120 1628088 5686560 +1627824 5686272 1627904 5686384 1628088 5686560 1630088 5686120 +1628096 5680872 1628016 5680960 1630088 5686120 1628112 5680824 +1628016 5680960 1627824 5686272 1630088 5686120 1628096 5680872 +1628016 5680960 1627280 5685920 1627824 5686272 1630088 5686120 +1627824 5686272 1628088 5686560 1630088 5686120 1627280 5685920 +1628016 5680960 1627280 5685920 1630088 5686120 1628096 5680872 +1628016 5680960 1627944 5680984 1627280 5685920 1630088 5686120 +1628016 5680960 1627944 5680984 1630088 5686120 1628096 5680872 +1627944 5680984 1627048 5685800 1627280 5685920 1630088 5686120 +1627280 5685920 1627824 5686272 1630088 5686120 1627944 5680984 +1627280 5685920 1627672 5686200 1627824 5686272 1630088 5686120 +1628992 5686936 1629096 5687008 1630088 5686120 1628464 5686776 +1628144 5680632 1630088 5686120 1631152 5689072 1631216 5689136 +1628144 5680632 1628112 5680824 1630088 5686120 1631216 5689136 +1630088 5686120 1631080 5689008 1631152 5689072 1631216 5689136 +1628144 5680632 1630088 5686120 1631216 5689136 1663880 5646248 +1628144 5680632 1630088 5686120 1663880 5646248 1628072 5680544 +1631216 5689136 1663944 5646256 1663880 5646248 1630088 5686120 +1628144 5680632 1628112 5680824 1630088 5686120 1663880 5646248 +1630088 5686120 1631152 5689072 1631216 5689136 1663880 5646248 +1629096 5687008 1630816 5688920 1630904 5688944 1630088 5686120 +1629096 5687008 1630816 5688920 1630088 5686120 1628992 5686936 +1630904 5688944 1631080 5689008 1630088 5686120 1630816 5688920 +1629096 5687008 1630728 5688896 1630816 5688920 1630088 5686120 +1629096 5687008 1630728 5688896 1630088 5686120 1628992 5686936 +1629096 5687008 1630632 5688872 1630728 5688896 1630088 5686120 +1629096 5687008 1630632 5688872 1630088 5686120 1628992 5686936 +1629096 5687008 1630544 5688856 1630632 5688872 1630088 5686120 +1629096 5687008 1630504 5688864 1630544 5688856 1630088 5686120 +1629096 5687008 1630544 5688856 1630088 5686120 1628992 5686936 +1630728 5688896 1630816 5688920 1630088 5686120 1630632 5688872 +1630632 5688872 1630728 5688896 1630088 5686120 1630544 5688856 +1630816 5688920 1630904 5688944 1630088 5686120 1630728 5688896 +1663880 5646248 1630152 5686160 1631216 5689136 1663944 5646256 +1630088 5686120 1630152 5686160 1663880 5646248 1628144 5680632 +1663880 5646248 1628072 5680544 1628144 5680632 1630152 5686160 +1630088 5686120 1630152 5686160 1628144 5680632 1628112 5680824 +1628144 5680632 1628112 5680744 1628112 5680824 1630152 5686160 +1630088 5686120 1630152 5686160 1628112 5680824 1628096 5680872 +1630088 5686120 1631216 5689136 1630152 5686160 1628112 5680824 +1630152 5686160 1631216 5689136 1663880 5646248 1628144 5680632 +1630152 5686160 1663880 5646248 1628144 5680632 1628112 5680824 +1631216 5689136 1630152 5686160 1630088 5686120 1631152 5689072 +1631216 5689136 1663880 5646248 1630152 5686160 1631152 5689072 +1630088 5686120 1631080 5689008 1631152 5689072 1630152 5686160 +1630088 5686120 1630904 5688944 1631080 5689008 1630152 5686160 +1630904 5688944 1630992 5688984 1631080 5689008 1630152 5686160 +1631080 5689008 1631152 5689072 1630152 5686160 1630904 5688944 +1630088 5686120 1630816 5688920 1630904 5688944 1630152 5686160 +1630904 5688944 1631080 5689008 1630152 5686160 1630816 5688920 +1630152 5686160 1628112 5680824 1630088 5686120 1630816 5688920 +1631152 5689072 1631216 5689136 1630152 5686160 1631080 5689008 +1630088 5686120 1630728 5688896 1630816 5688920 1630152 5686160 +1630816 5688920 1630904 5688944 1630152 5686160 1630728 5688896 +1630088 5686120 1630728 5688896 1630152 5686160 1628112 5680824 +1630088 5686120 1630632 5688872 1630728 5688896 1630152 5686160 +1630088 5686120 1630632 5688872 1630152 5686160 1628112 5680824 +1630088 5686120 1630544 5688856 1630632 5688872 1630152 5686160 +1630088 5686120 1630544 5688856 1630152 5686160 1628112 5680824 +1630088 5686120 1629096 5687008 1630544 5688856 1630152 5686160 +1629096 5687008 1630504 5688864 1630544 5688856 1630152 5686160 +1630088 5686120 1628992 5686936 1629096 5687008 1630152 5686160 +1630088 5686120 1629096 5687008 1630152 5686160 1628112 5680824 +1630632 5688872 1630728 5688896 1630152 5686160 1630544 5688856 +1630544 5688856 1630632 5688872 1630152 5686160 1629096 5687008 +1630728 5688896 1630816 5688920 1630152 5686160 1630632 5688872 +1631216 5689136 1630256 5686264 1630152 5686160 1631152 5689072 +1630256 5686264 1663880 5646248 1630152 5686160 1631152 5689072 +1663880 5646248 1630256 5686264 1631216 5689136 1663944 5646256 +1663880 5646248 1630152 5686160 1630256 5686264 1663944 5646256 +1631216 5689136 1631208 5689208 1663944 5646256 1630256 5686264 +1630152 5686160 1630256 5686264 1663880 5646248 1628144 5680632 +1663880 5646248 1628072 5680544 1628144 5680632 1630256 5686264 +1630152 5686160 1631152 5689072 1630256 5686264 1628144 5680632 +1630256 5686264 1663944 5646256 1663880 5646248 1628144 5680632 +1630152 5686160 1630256 5686264 1628144 5680632 1628112 5680824 +1630152 5686160 1631080 5689008 1631152 5689072 1630256 5686264 +1630152 5686160 1631080 5689008 1630256 5686264 1628144 5680632 +1631152 5689072 1631216 5689136 1630256 5686264 1631080 5689008 +1630152 5686160 1630904 5688944 1631080 5689008 1630256 5686264 +1630152 5686160 1630904 5688944 1630256 5686264 1628144 5680632 +1630904 5688944 1630992 5688984 1631080 5689008 1630256 5686264 +1630152 5686160 1630816 5688920 1630904 5688944 1630256 5686264 +1630152 5686160 1630816 5688920 1630256 5686264 1628144 5680632 +1630904 5688944 1631080 5689008 1630256 5686264 1630816 5688920 +1630152 5686160 1630728 5688896 1630816 5688920 1630256 5686264 +1630152 5686160 1630728 5688896 1630256 5686264 1628144 5680632 +1630816 5688920 1630904 5688944 1630256 5686264 1630728 5688896 +1631080 5689008 1631152 5689072 1630256 5686264 1630904 5688944 +1631216 5689136 1663944 5646256 1630256 5686264 1631152 5689072 +1630152 5686160 1630632 5688872 1630728 5688896 1630256 5686264 +1630152 5686160 1630632 5688872 1630256 5686264 1628144 5680632 +1630728 5688896 1630816 5688920 1630256 5686264 1630632 5688872 +1630152 5686160 1630544 5688856 1630632 5688872 1630256 5686264 +1630152 5686160 1630544 5688856 1630256 5686264 1628144 5680632 +1630152 5686160 1629096 5687008 1630544 5688856 1630256 5686264 +1630152 5686160 1629096 5687008 1630256 5686264 1628144 5680632 +1629096 5687008 1630504 5688864 1630544 5688856 1630256 5686264 +1630152 5686160 1630088 5686120 1629096 5687008 1630256 5686264 +1630152 5686160 1630088 5686120 1630256 5686264 1628144 5680632 +1630088 5686120 1628992 5686936 1629096 5687008 1630256 5686264 +1630544 5688856 1630632 5688872 1630256 5686264 1629096 5687008 +1629096 5687008 1630544 5688856 1630256 5686264 1630088 5686120 +1630632 5688872 1630728 5688896 1630256 5686264 1630544 5688856 +1630256 5686264 1630304 5686344 1663944 5646256 1663880 5646248 +1630256 5686264 1630304 5686344 1663880 5646248 1628144 5680632 +1663880 5646248 1628072 5680544 1628144 5680632 1630304 5686344 +1630304 5686344 1663944 5646256 1663880 5646248 1628144 5680632 +1663944 5646256 1630304 5686344 1631216 5689136 1631208 5689208 +1630256 5686264 1630304 5686344 1628144 5680632 1630152 5686160 +1630256 5686264 1631216 5689136 1630304 5686344 1628144 5680632 +1631216 5689136 1630304 5686344 1630256 5686264 1631152 5689072 +1631216 5689136 1663944 5646256 1630304 5686344 1631152 5689072 +1630256 5686264 1631080 5689008 1631152 5689072 1630304 5686344 +1630256 5686264 1630904 5688944 1631080 5689008 1630304 5686344 +1631080 5689008 1631152 5689072 1630304 5686344 1630904 5688944 +1630904 5688944 1630992 5688984 1631080 5689008 1630304 5686344 +1630256 5686264 1630816 5688920 1630904 5688944 1630304 5686344 +1630256 5686264 1630728 5688896 1630816 5688920 1630304 5686344 +1630816 5688920 1630904 5688944 1630304 5686344 1630728 5688896 +1630256 5686264 1630632 5688872 1630728 5688896 1630304 5686344 +1630728 5688896 1630816 5688920 1630304 5686344 1630632 5688872 +1630904 5688944 1631080 5689008 1630304 5686344 1630816 5688920 +1630304 5686344 1628144 5680632 1630256 5686264 1630632 5688872 +1631152 5689072 1631216 5689136 1630304 5686344 1631080 5689008 +1630304 5686344 1631216 5689136 1663944 5646256 1663880 5646248 +1630256 5686264 1630544 5688856 1630632 5688872 1630304 5686344 +1630632 5688872 1630728 5688896 1630304 5686344 1630544 5688856 +1630256 5686264 1629096 5687008 1630544 5688856 1630304 5686344 +1629096 5687008 1630504 5688864 1630544 5688856 1630304 5686344 +1629096 5687008 1630424 5688880 1630504 5688864 1630304 5686344 +1629096 5687008 1630504 5688864 1630304 5686344 1630256 5686264 +1630256 5686264 1630088 5686120 1629096 5687008 1630304 5686344 +1630088 5686120 1628992 5686936 1629096 5687008 1630304 5686344 +1630256 5686264 1630152 5686160 1630088 5686120 1630304 5686344 +1629096 5687008 1630504 5688864 1630304 5686344 1630088 5686120 +1630256 5686264 1630088 5686120 1630304 5686344 1628144 5680632 +1630544 5688856 1630632 5688872 1630304 5686344 1630504 5688864 +1630504 5688864 1630288 5686424 1629096 5687008 1630424 5688880 +1630504 5688864 1630304 5686344 1630288 5686424 1630424 5688880 +1630288 5686424 1630304 5686344 1629096 5687008 1630424 5688880 +1630304 5686344 1630288 5686424 1630504 5688864 1630544 5688856 +1630288 5686424 1630424 5688880 1630504 5688864 1630544 5688856 +1629096 5687008 1630288 5686424 1630304 5686344 1630088 5686120 +1629096 5687008 1630424 5688880 1630288 5686424 1630088 5686120 +1629096 5687008 1630288 5686424 1630088 5686120 1628992 5686936 +1630304 5686344 1630256 5686264 1630088 5686120 1630288 5686424 +1630256 5686264 1630152 5686160 1630088 5686120 1630288 5686424 +1630088 5686120 1629096 5687008 1630288 5686424 1630152 5686160 +1630256 5686264 1630152 5686160 1630288 5686424 1630304 5686344 +1630304 5686344 1630256 5686264 1630288 5686424 1630544 5688856 +1630304 5686344 1630288 5686424 1630544 5688856 1630632 5688872 +1630288 5686424 1630504 5688864 1630544 5688856 1630632 5688872 +1630304 5686344 1630288 5686424 1630632 5688872 1630728 5688896 +1630304 5686344 1630288 5686424 1630728 5688896 1630816 5688920 +1630304 5686344 1630288 5686424 1630816 5688920 1630904 5688944 +1630288 5686424 1630728 5688896 1630816 5688920 1630904 5688944 +1630288 5686424 1630632 5688872 1630728 5688896 1630816 5688920 +1630304 5686344 1630288 5686424 1630904 5688944 1631080 5689008 +1630304 5686344 1630288 5686424 1631080 5689008 1631152 5689072 +1630904 5688944 1630992 5688984 1631080 5689008 1630288 5686424 +1630288 5686424 1630816 5688920 1630904 5688944 1631080 5689008 +1630288 5686424 1630904 5688944 1631080 5689008 1631152 5689072 +1630304 5686344 1630288 5686424 1631152 5689072 1631216 5689136 +1630304 5686344 1630256 5686264 1630288 5686424 1631152 5689072 +1630288 5686424 1630544 5688856 1630632 5688872 1630728 5688896 +1629096 5687008 1629000 5687064 1630424 5688880 1630288 5686424 +1630288 5686424 1629960 5686448 1629096 5687008 1630424 5688880 +1630288 5686424 1630088 5686120 1629960 5686448 1630424 5688880 +1630288 5686424 1629960 5686448 1630424 5688880 1630504 5688864 +1629096 5687008 1629960 5686448 1630088 5686120 1628992 5686936 +1629096 5687008 1629960 5686448 1628992 5686936 1629064 5686992 +1629960 5686448 1628992 5686936 1629096 5687008 1630424 5688880 +1629960 5686448 1630288 5686424 1630088 5686120 1628992 5686936 +1630088 5686120 1629960 5686448 1630288 5686424 1630152 5686160 +1629960 5686448 1630424 5688880 1630288 5686424 1630152 5686160 +1630288 5686424 1630256 5686264 1630152 5686160 1629960 5686448 +1630288 5686424 1630256 5686264 1629960 5686448 1630424 5688880 +1630088 5686120 1628992 5686936 1629960 5686448 1630152 5686160 +1630152 5686160 1630088 5686120 1629960 5686448 1630256 5686264 +1630288 5686424 1630304 5686344 1630256 5686264 1629960 5686448 +1630088 5686120 1628464 5686776 1628992 5686936 1629960 5686448 +1629096 5687008 1629000 5687064 1630424 5688880 1629960 5686448 +1629960 5686448 1629776 5686472 1628992 5686936 1629096 5687008 +1628992 5686936 1629064 5686992 1629096 5687008 1629776 5686472 +1629960 5686448 1629776 5686472 1629096 5687008 1630424 5688880 +1629960 5686448 1630088 5686120 1629776 5686472 1629096 5687008 +1630088 5686120 1629776 5686472 1629960 5686448 1630152 5686160 +1629776 5686472 1630088 5686120 1628992 5686936 1629096 5687008 +1628992 5686936 1629776 5686472 1630088 5686120 1628464 5686776 +1630088 5686120 1628088 5686560 1628464 5686776 1629776 5686472 +1628088 5686560 1628312 5686720 1628464 5686776 1629776 5686472 +1630088 5686120 1627824 5686272 1628088 5686560 1629776 5686472 +1630088 5686120 1627280 5685920 1627824 5686272 1629776 5686472 +1628088 5686560 1628464 5686776 1629776 5686472 1627824 5686272 +1627824 5686272 1627904 5686384 1628088 5686560 1629776 5686472 +1629776 5686472 1629960 5686448 1630088 5686120 1627824 5686272 +1628992 5686936 1629096 5687008 1629776 5686472 1628464 5686776 +1628464 5686776 1628992 5686936 1629776 5686472 1628088 5686560 +1627824 5686272 1629728 5686424 1630088 5686120 1627280 5685920 +1629776 5686472 1629728 5686424 1627824 5686272 1628088 5686560 +1629728 5686424 1630088 5686120 1627824 5686272 1628088 5686560 +1629776 5686472 1630088 5686120 1629728 5686424 1628088 5686560 +1629776 5686472 1629728 5686424 1628088 5686560 1628464 5686776 +1629776 5686472 1630088 5686120 1629728 5686424 1628464 5686776 +1628088 5686560 1628312 5686720 1628464 5686776 1629728 5686424 +1629728 5686424 1627824 5686272 1628088 5686560 1628464 5686776 +1627824 5686272 1627904 5686384 1628088 5686560 1629728 5686424 +1630088 5686120 1629728 5686424 1629776 5686472 1629960 5686448 +1630088 5686120 1627824 5686272 1629728 5686424 1629960 5686448 +1629728 5686424 1628464 5686776 1629776 5686472 1629960 5686448 +1630088 5686120 1629728 5686424 1629960 5686448 1630152 5686160 +1629776 5686472 1629728 5686424 1628464 5686776 1628992 5686936 +1629776 5686472 1629960 5686448 1629728 5686424 1628992 5686936 +1629728 5686424 1628088 5686560 1628464 5686776 1628992 5686936 +1629776 5686472 1629728 5686424 1628992 5686936 1629096 5687008 +1629776 5686472 1629960 5686448 1629728 5686424 1629096 5687008 +1628992 5686936 1629064 5686992 1629096 5687008 1629728 5686424 +1629776 5686472 1629728 5686424 1629096 5687008 1629960 5686448 +1629728 5686424 1628464 5686776 1628992 5686936 1629096 5687008 +1629728 5686424 1629664 5686248 1627824 5686272 1628088 5686560 +1629728 5686424 1630088 5686120 1629664 5686248 1628088 5686560 +1630088 5686120 1629664 5686248 1629728 5686424 1629960 5686448 +1629664 5686248 1628088 5686560 1629728 5686424 1629960 5686448 +1629664 5686248 1630088 5686120 1627824 5686272 1628088 5686560 +1627824 5686272 1629664 5686248 1630088 5686120 1627280 5685920 +1627824 5686272 1628088 5686560 1629664 5686248 1627280 5685920 +1629728 5686424 1629664 5686248 1628088 5686560 1628464 5686776 +1629664 5686248 1627824 5686272 1628088 5686560 1628464 5686776 +1629728 5686424 1629960 5686448 1629664 5686248 1628464 5686776 +1628088 5686560 1628312 5686720 1628464 5686776 1629664 5686248 +1629728 5686424 1629664 5686248 1628464 5686776 1628992 5686936 +1629728 5686424 1629960 5686448 1629664 5686248 1628992 5686936 +1629664 5686248 1628088 5686560 1628464 5686776 1628992 5686936 +1627824 5686272 1627904 5686384 1628088 5686560 1629664 5686248 +1629728 5686424 1629776 5686472 1629960 5686448 1629664 5686248 +1630088 5686120 1629664 5686248 1629960 5686448 1630152 5686160 +1630088 5686120 1627944 5680984 1627280 5685920 1629664 5686248 +1627280 5685920 1627824 5686272 1629664 5686248 1627944 5680984 +1627944 5680984 1627048 5685800 1627280 5685920 1629664 5686248 +1630088 5686120 1628016 5680960 1627944 5680984 1629664 5686248 +1630088 5686120 1628096 5680872 1628016 5680960 1629664 5686248 +1627944 5680984 1627280 5685920 1629664 5686248 1628016 5680960 +1627824 5686272 1629664 5686248 1627280 5685920 1627672 5686200 +1629728 5686424 1629664 5686248 1628992 5686936 1629096 5687008 +1630088 5686120 1628016 5680960 1629664 5686248 1629960 5686448 +1629664 5686248 1629496 5686136 1627280 5685920 1627824 5686272 +1629664 5686248 1629496 5686136 1627824 5686272 1628088 5686560 +1629664 5686248 1629496 5686136 1628088 5686560 1628464 5686776 +1629496 5686136 1627824 5686272 1628088 5686560 1628464 5686776 +1629496 5686136 1627280 5685920 1627824 5686272 1628088 5686560 +1628088 5686560 1628312 5686720 1628464 5686776 1629496 5686136 +1629664 5686248 1629496 5686136 1628464 5686776 1628992 5686936 +1629496 5686136 1628088 5686560 1628464 5686776 1628992 5686936 +1629664 5686248 1629496 5686136 1628992 5686936 1629728 5686424 +1629496 5686136 1628464 5686776 1628992 5686936 1629728 5686424 +1627824 5686272 1627904 5686384 1628088 5686560 1629496 5686136 +1628088 5686560 1628464 5686776 1629496 5686136 1627904 5686384 +1627824 5686272 1627904 5686384 1629496 5686136 1627280 5685920 +1627280 5685920 1629496 5686136 1627944 5680984 1627048 5685800 +1627944 5680984 1629496 5686136 1629664 5686248 1628016 5680960 +1627944 5680984 1627280 5685920 1629496 5686136 1628016 5680960 +1629664 5686248 1630088 5686120 1628016 5680960 1629496 5686136 +1630088 5686120 1628096 5680872 1628016 5680960 1629496 5686136 +1628016 5680960 1627944 5680984 1629496 5686136 1630088 5686120 +1627280 5685920 1627672 5686200 1627824 5686272 1629496 5686136 +1627824 5686272 1627904 5686384 1629496 5686136 1627672 5686200 +1628992 5686936 1629096 5687008 1629728 5686424 1629496 5686136 +1629664 5686248 1630088 5686120 1629496 5686136 1629728 5686424 +1629664 5686248 1629960 5686448 1630088 5686120 1629496 5686136 +1629496 5686136 1627944 5680984 1627280 5685920 1627672 5686200 +1627944 5680984 1629472 5686104 1629496 5686136 1628016 5680960 +1627280 5685920 1629472 5686104 1627944 5680984 1627048 5685800 +1627944 5680984 1627280 5685920 1629472 5686104 1628016 5680960 +1629496 5686136 1630088 5686120 1628016 5680960 1629472 5686104 +1628016 5680960 1627944 5680984 1629472 5686104 1630088 5686120 +1630088 5686120 1628096 5680872 1628016 5680960 1629472 5686104 +1629496 5686136 1629664 5686248 1630088 5686120 1629472 5686104 +1630088 5686120 1628016 5680960 1629472 5686104 1629664 5686248 +1629664 5686248 1629960 5686448 1630088 5686120 1629472 5686104 +1629496 5686136 1629472 5686104 1627280 5685920 1627672 5686200 +1629472 5686104 1627944 5680984 1627280 5685920 1627672 5686200 +1629496 5686136 1629472 5686104 1627672 5686200 1627824 5686272 +1629496 5686136 1629472 5686104 1627824 5686272 1627904 5686384 +1629496 5686136 1629472 5686104 1627904 5686384 1628088 5686560 +1629496 5686136 1629472 5686104 1628088 5686560 1628464 5686776 +1629496 5686136 1629472 5686104 1628464 5686776 1628992 5686936 +1629472 5686104 1628088 5686560 1628464 5686776 1628992 5686936 +1629472 5686104 1627824 5686272 1627904 5686384 1628088 5686560 +1628088 5686560 1628312 5686720 1628464 5686776 1629472 5686104 +1628464 5686776 1628992 5686936 1629472 5686104 1628312 5686720 +1629496 5686136 1629472 5686104 1628992 5686936 1629728 5686424 +1629472 5686104 1627904 5686384 1628088 5686560 1628312 5686720 +1629472 5686104 1627672 5686200 1627824 5686272 1627904 5686384 +1629472 5686104 1627280 5685920 1627672 5686200 1627824 5686272 +1629472 5686104 1628992 5686936 1629496 5686136 1629664 5686248 +1629472 5686104 1629488 5686048 1628016 5680960 1627944 5680984 +1629472 5686104 1630088 5686120 1629488 5686048 1627944 5680984 +1628016 5680960 1629488 5686048 1630088 5686120 1628096 5680872 +1629472 5686104 1629488 5686048 1627944 5680984 1627280 5685920 +1629488 5686048 1628016 5680960 1627944 5680984 1627280 5685920 +1629472 5686104 1629488 5686048 1627280 5685920 1627672 5686200 +1629472 5686104 1630088 5686120 1629488 5686048 1627672 5686200 +1627944 5680984 1627048 5685800 1627280 5685920 1629488 5686048 +1629488 5686048 1627944 5680984 1627280 5685920 1627672 5686200 +1629488 5686048 1630088 5686120 1628016 5680960 1627944 5680984 +1630088 5686120 1629488 5686048 1629472 5686104 1629664 5686248 +1629488 5686048 1627672 5686200 1629472 5686104 1629664 5686248 +1629472 5686104 1629496 5686136 1629664 5686248 1629488 5686048 +1629472 5686104 1629496 5686136 1629488 5686048 1627672 5686200 +1629664 5686248 1630088 5686120 1629488 5686048 1629496 5686136 +1630088 5686120 1628016 5680960 1629488 5686048 1629664 5686248 +1630088 5686120 1629488 5686048 1629664 5686248 1629960 5686448 +1629472 5686104 1629488 5686048 1627672 5686200 1627824 5686272 +1629488 5686048 1627280 5685920 1627672 5686200 1627824 5686272 +1629472 5686104 1629496 5686136 1629488 5686048 1627824 5686272 +1629472 5686104 1629488 5686048 1627824 5686272 1627904 5686384 +1629472 5686104 1629488 5686048 1627904 5686384 1628088 5686560 +1629472 5686104 1629496 5686136 1629488 5686048 1628088 5686560 +1629472 5686104 1629488 5686048 1628088 5686560 1628312 5686720 +1629488 5686048 1627824 5686272 1627904 5686384 1628088 5686560 +1629488 5686048 1627672 5686200 1627824 5686272 1627904 5686384 +1628016 5680960 1629512 5686008 1630088 5686120 1628096 5680872 +1629512 5686008 1629488 5686048 1630088 5686120 1628096 5680872 +1630088 5686120 1628112 5680824 1628096 5680872 1629512 5686008 +1629488 5686048 1629512 5686008 1628016 5680960 1627944 5680984 +1629488 5686048 1629512 5686008 1627944 5680984 1627280 5685920 +1627944 5680984 1627048 5685800 1627280 5685920 1629512 5686008 +1629488 5686048 1629512 5686008 1627280 5685920 1627672 5686200 +1629512 5686008 1627944 5680984 1627280 5685920 1627672 5686200 +1629488 5686048 1629512 5686008 1627672 5686200 1627824 5686272 +1629512 5686008 1627280 5685920 1627672 5686200 1627824 5686272 +1629512 5686008 1628016 5680960 1627944 5680984 1627280 5685920 +1629488 5686048 1630088 5686120 1629512 5686008 1627824 5686272 +1630088 5686120 1629512 5686008 1629488 5686048 1629664 5686248 +1630088 5686120 1628096 5680872 1629512 5686008 1629664 5686248 +1629488 5686048 1629496 5686136 1629664 5686248 1629512 5686008 +1629488 5686048 1629472 5686104 1629496 5686136 1629512 5686008 +1629512 5686008 1627824 5686272 1629488 5686048 1629496 5686136 +1629664 5686248 1630088 5686120 1629512 5686008 1629496 5686136 +1628016 5680960 1627944 5680984 1629512 5686008 1628096 5680872 +1630088 5686120 1629512 5686008 1629664 5686248 1629960 5686448 +1629488 5686048 1629512 5686008 1627824 5686272 1627904 5686384 +1630088 5686120 1629576 5685968 1629512 5686008 1629664 5686248 +1630088 5686120 1628096 5680872 1629576 5685968 1629664 5686248 +1628096 5680872 1629576 5685968 1630088 5686120 1628112 5680824 +1629512 5686008 1629576 5685968 1628096 5680872 1628016 5680960 +1629576 5685968 1630088 5686120 1628096 5680872 1628016 5680960 +1629512 5686008 1629496 5686136 1629664 5686248 1629576 5685968 +1629664 5686248 1630088 5686120 1629576 5685968 1629496 5686136 +1629512 5686008 1629488 5686048 1629496 5686136 1629576 5685968 +1629512 5686008 1629576 5685968 1628016 5680960 1627944 5680984 +1629576 5685968 1628096 5680872 1628016 5680960 1627944 5680984 +1629512 5686008 1629576 5685968 1627944 5680984 1627280 5685920 +1629512 5686008 1629576 5685968 1627280 5685920 1627672 5686200 +1627944 5680984 1627048 5685800 1627280 5685920 1629576 5685968 +1629576 5685968 1628016 5680960 1627944 5680984 1627280 5685920 +1629576 5685968 1627280 5685920 1629512 5686008 1629496 5686136 +1630088 5686120 1629576 5685968 1629664 5686248 1629960 5686448 +1630088 5686120 1629712 5685944 1629576 5685968 1629664 5686248 +1629576 5685968 1629496 5686136 1629664 5686248 1629712 5685944 +1630088 5686120 1628096 5680872 1629712 5685944 1629664 5686248 +1629712 5685944 1628096 5680872 1629576 5685968 1629664 5686248 +1628096 5680872 1629712 5685944 1630088 5686120 1628112 5680824 +1629576 5685968 1629712 5685944 1628096 5680872 1628016 5680960 +1629712 5685944 1630088 5686120 1628096 5680872 1628016 5680960 +1629576 5685968 1629664 5686248 1629712 5685944 1628016 5680960 +1629576 5685968 1629712 5685944 1628016 5680960 1627944 5680984 +1630088 5686120 1629712 5685944 1629664 5686248 1629960 5686448 +1629712 5685944 1629840 5685992 1628096 5680872 1628016 5680960 +1630088 5686120 1629840 5685992 1629712 5685944 1629664 5686248 +1629712 5685944 1629576 5685968 1629664 5686248 1629840 5685992 +1629840 5685992 1628096 5680872 1629712 5685944 1629664 5686248 +1630088 5686120 1628096 5680872 1629840 5685992 1629664 5686248 +1628096 5680872 1629840 5685992 1630088 5686120 1628112 5680824 +1630088 5686120 1629840 5685992 1629664 5686248 1629960 5686448 +1627280 5685920 1628568 5685304 1627944 5680984 1627048 5685800 +1627944 5680984 1626912 5685760 1627048 5685800 1628568 5685304 +1627048 5685800 1627280 5685920 1628568 5685304 1626912 5685760 +1627280 5685920 1629576 5685968 1628568 5685304 1627048 5685800 +1628568 5685304 1629576 5685968 1627944 5680984 1626912 5685760 +1629576 5685968 1628568 5685304 1627280 5685920 1629512 5686008 +1627280 5685920 1627672 5686200 1629512 5686008 1628568 5685304 +1629576 5685968 1627944 5680984 1628568 5685304 1629512 5686008 +1628568 5685304 1627048 5685800 1627280 5685920 1627672 5686200 +1627672 5686200 1627824 5686272 1629512 5686008 1628568 5685304 +1627672 5686200 1627824 5686272 1628568 5685304 1627280 5685920 +1627824 5686272 1629488 5686048 1629512 5686008 1628568 5685304 +1627824 5686272 1629488 5686048 1628568 5685304 1627672 5686200 +1629512 5686008 1629576 5685968 1628568 5685304 1629488 5686048 +1627944 5680984 1628568 5685304 1629576 5685968 1628016 5680960 +1628568 5685304 1629512 5686008 1629576 5685968 1628016 5680960 +1629576 5685968 1629712 5685944 1628016 5680960 1628568 5685304 +1629576 5685968 1629712 5685944 1628568 5685304 1629512 5686008 +1627944 5680984 1626912 5685760 1628568 5685304 1628016 5680960 +1629712 5685944 1628096 5680872 1628016 5680960 1628568 5685304 +1629712 5685944 1629840 5685992 1628096 5680872 1628568 5685304 +1629712 5685944 1628096 5680872 1628568 5685304 1629576 5685968 +1628016 5680960 1627944 5680984 1628568 5685304 1628096 5680872 +1627824 5686272 1627904 5686384 1629488 5686048 1628568 5685304 +1629488 5686048 1629512 5686008 1628568 5685304 1627904 5686384 +1627824 5686272 1627904 5686384 1628568 5685304 1627672 5686200 +1627904 5686384 1628088 5686560 1629488 5686048 1628568 5685304 +1628088 5686560 1629472 5686104 1629488 5686048 1628568 5685304 +1629488 5686048 1629512 5686008 1628568 5685304 1629472 5686104 +1628088 5686560 1628312 5686720 1629472 5686104 1628568 5685304 +1629472 5686104 1629488 5686048 1628568 5685304 1628312 5686720 +1628312 5686720 1628464 5686776 1629472 5686104 1628568 5685304 +1628464 5686776 1628992 5686936 1629472 5686104 1628568 5685304 +1629472 5686104 1629488 5686048 1628568 5685304 1628464 5686776 +1628312 5686720 1628464 5686776 1628568 5685304 1628088 5686560 +1628088 5686560 1628312 5686720 1628568 5685304 1627904 5686384 +1627904 5686384 1628088 5686560 1628568 5685304 1627824 5686272 +1627944 5680984 1626216 5685512 1626912 5685760 1628568 5685304 +1626912 5685760 1627048 5685800 1628568 5685304 1626216 5685512 +1626216 5685512 1626496 5685696 1626912 5685760 1628568 5685304 +1627944 5680984 1626216 5685512 1628568 5685304 1628016 5680960 +1627944 5680984 1627248 5680800 1626216 5685512 1628568 5685304 +1627824 5686272 1628504 5685400 1628568 5685304 1627672 5686200 +1628568 5685304 1627280 5685920 1627672 5686200 1628504 5685400 +1628568 5685304 1627048 5685800 1627280 5685920 1628504 5685400 +1627280 5685920 1627672 5686200 1628504 5685400 1627048 5685800 +1628568 5685304 1626912 5685760 1627048 5685800 1628504 5685400 +1628504 5685400 1627904 5686384 1628568 5685304 1627048 5685800 +1627672 5686200 1627824 5686272 1628504 5685400 1627280 5685920 +1628568 5685304 1628504 5685400 1627904 5686384 1628088 5686560 +1628568 5685304 1627048 5685800 1628504 5685400 1628088 5686560 +1628504 5685400 1627824 5686272 1627904 5686384 1628088 5686560 +1628568 5685304 1628504 5685400 1628088 5686560 1628312 5686720 +1628568 5685304 1628504 5685400 1628312 5686720 1628464 5686776 +1628568 5685304 1628504 5685400 1628464 5686776 1629472 5686104 +1628464 5686776 1628992 5686936 1629472 5686104 1628504 5685400 +1628568 5685304 1628504 5685400 1629472 5686104 1629488 5686048 +1628568 5685304 1628504 5685400 1629488 5686048 1629512 5686008 +1628504 5685400 1629472 5686104 1629488 5686048 1629512 5686008 +1628504 5685400 1628464 5686776 1629472 5686104 1629488 5686048 +1628504 5685400 1628312 5686720 1628464 5686776 1629472 5686104 +1628568 5685304 1627048 5685800 1628504 5685400 1629512 5686008 +1628568 5685304 1628504 5685400 1629512 5686008 1629576 5685968 +1628504 5685400 1628088 5686560 1628312 5686720 1628464 5686776 +1628504 5685400 1627904 5686384 1628088 5686560 1628312 5686720 +1627824 5686272 1627904 5686384 1628504 5685400 1627672 5686200 +1627280 5685920 1628368 5685464 1628504 5685400 1627048 5685800 +1628504 5685400 1628568 5685304 1627048 5685800 1628368 5685464 +1627048 5685800 1627280 5685920 1628368 5685464 1628568 5685304 +1628568 5685304 1626912 5685760 1627048 5685800 1628368 5685464 +1627048 5685800 1627280 5685920 1628368 5685464 1626912 5685760 +1628568 5685304 1626216 5685512 1626912 5685760 1628368 5685464 +1628568 5685304 1626912 5685760 1628368 5685464 1628504 5685400 +1628504 5685400 1628368 5685464 1627672 5686200 1627824 5686272 +1628368 5685464 1627280 5685920 1627672 5686200 1627824 5686272 +1627280 5685920 1627672 5686200 1628368 5685464 1627048 5685800 +1628368 5685464 1627824 5686272 1628504 5685400 1628568 5685304 +1628504 5685400 1628368 5685464 1627824 5686272 1627904 5686384 +1628504 5685400 1628368 5685464 1627904 5686384 1628088 5686560 +1628368 5685464 1627672 5686200 1627824 5686272 1627904 5686384 +1628368 5685464 1627824 5686272 1627904 5686384 1628088 5686560 +1628504 5685400 1628368 5685464 1628088 5686560 1628312 5686720 +1628368 5685464 1627904 5686384 1628088 5686560 1628312 5686720 +1628504 5685400 1628368 5685464 1628312 5686720 1628464 5686776 +1628504 5685400 1628368 5685464 1628464 5686776 1629472 5686104 +1628464 5686776 1628992 5686936 1629472 5686104 1628368 5685464 +1628504 5685400 1628368 5685464 1629472 5686104 1629488 5686048 +1628368 5685464 1628312 5686720 1628464 5686776 1629472 5686104 +1628368 5685464 1628088 5686560 1628312 5686720 1628464 5686776 +1628504 5685400 1628568 5685304 1628368 5685464 1629472 5686104 +1626912 5685760 1628232 5685464 1628568 5685304 1626216 5685512 +1626912 5685760 1628232 5685464 1626216 5685512 1626496 5685696 +1628368 5685464 1628232 5685464 1626912 5685760 1627048 5685800 +1628368 5685464 1628232 5685464 1627048 5685800 1627280 5685920 +1628232 5685464 1626912 5685760 1627048 5685800 1627280 5685920 +1628568 5685304 1628232 5685464 1628368 5685464 1628504 5685400 +1628368 5685464 1628232 5685464 1627280 5685920 1627672 5686200 +1628232 5685464 1627048 5685800 1627280 5685920 1627672 5686200 +1628368 5685464 1628232 5685464 1627672 5686200 1627824 5686272 +1628368 5685464 1628232 5685464 1627824 5686272 1627904 5686384 +1628232 5685464 1627280 5685920 1627672 5686200 1627824 5686272 +1628368 5685464 1628568 5685304 1628232 5685464 1627824 5686272 +1626912 5685760 1627048 5685800 1628232 5685464 1626216 5685512 +1628232 5685464 1628368 5685464 1628568 5685304 1626216 5685512 +1628568 5685304 1627944 5680984 1626216 5685512 1628232 5685464 +1626216 5685512 1626912 5685760 1628232 5685464 1627944 5680984 +1628568 5685304 1628016 5680960 1627944 5680984 1628232 5685464 +1627944 5680984 1627248 5680800 1626216 5685512 1628232 5685464 +1628568 5685304 1627944 5680984 1628232 5685464 1628368 5685464 +1628232 5685464 1628032 5685392 1626216 5685512 1626912 5685760 +1626216 5685512 1626496 5685696 1626912 5685760 1628032 5685392 +1626216 5685512 1628032 5685392 1627944 5680984 1627248 5680800 +1627944 5680984 1627752 5680904 1627248 5680800 1628032 5685392 +1628032 5685392 1628232 5685464 1627944 5680984 1627248 5680800 +1626216 5685512 1628032 5685392 1627248 5680800 1626064 5685480 +1628032 5685392 1627248 5680800 1626216 5685512 1626912 5685760 +1628232 5685464 1628032 5685392 1626912 5685760 1627048 5685800 +1628032 5685392 1626216 5685512 1626912 5685760 1627048 5685800 +1628232 5685464 1628032 5685392 1627048 5685800 1627280 5685920 +1628232 5685464 1628032 5685392 1627280 5685920 1627672 5686200 +1628032 5685392 1627048 5685800 1627280 5685920 1627672 5686200 +1628232 5685464 1628032 5685392 1627672 5686200 1627824 5686272 +1628032 5685392 1627280 5685920 1627672 5686200 1627824 5686272 +1628232 5685464 1628032 5685392 1627824 5686272 1628368 5685464 +1628032 5685392 1626912 5685760 1627048 5685800 1627280 5685920 +1628232 5685464 1627944 5680984 1628032 5685392 1627824 5686272 +1627944 5680984 1628032 5685392 1628232 5685464 1628568 5685304 +1627944 5680984 1628032 5685392 1628568 5685304 1628016 5680960 +1627944 5680984 1627248 5680800 1628032 5685392 1628568 5685304 +1628032 5685392 1627824 5686272 1628232 5685464 1628568 5685304 +1628232 5685464 1628368 5685464 1628568 5685304 1628032 5685392 +1627248 5680800 1627672 5685152 1628032 5685392 1627944 5680984 +1627672 5685152 1626216 5685512 1628032 5685392 1627944 5680984 +1627248 5680800 1626216 5685512 1627672 5685152 1627944 5680984 +1627248 5680800 1627672 5685152 1627944 5680984 1627752 5680904 +1628032 5685392 1628568 5685304 1627944 5680984 1627672 5685152 +1628032 5685392 1628568 5685304 1627672 5685152 1626216 5685512 +1628568 5685304 1628016 5680960 1627944 5680984 1627672 5685152 +1627944 5680984 1627248 5680800 1627672 5685152 1628568 5685304 +1626216 5685512 1627672 5685152 1627248 5680800 1626064 5685480 +1626216 5685512 1628032 5685392 1627672 5685152 1626064 5685480 +1627672 5685152 1627944 5680984 1627248 5680800 1626064 5685480 +1627248 5680800 1627152 5680768 1626064 5685480 1627672 5685152 +1627248 5680800 1627152 5680768 1627672 5685152 1627944 5680984 +1627152 5680768 1625528 5685408 1626064 5685480 1627672 5685152 +1626064 5685480 1626216 5685512 1627672 5685152 1627152 5680768 +1628032 5685392 1627672 5685152 1626216 5685512 1626912 5685760 +1628032 5685392 1628568 5685304 1627672 5685152 1626912 5685760 +1627672 5685152 1626064 5685480 1626216 5685512 1626912 5685760 +1628032 5685392 1627672 5685152 1626912 5685760 1627048 5685800 +1628032 5685392 1628568 5685304 1627672 5685152 1627048 5685800 +1626216 5685512 1626496 5685696 1626912 5685760 1627672 5685152 +1626216 5685512 1626496 5685696 1627672 5685152 1626064 5685480 +1626496 5685696 1626784 5685776 1626912 5685760 1627672 5685152 +1627672 5685152 1626496 5685696 1626912 5685760 1627048 5685800 +1628032 5685392 1627672 5685152 1627048 5685800 1627280 5685920 +1628032 5685392 1628568 5685304 1627672 5685152 1627280 5685920 +1627672 5685152 1626912 5685760 1627048 5685800 1627280 5685920 +1628032 5685392 1627672 5685152 1627280 5685920 1627672 5686200 +1628032 5685392 1628232 5685464 1628568 5685304 1627672 5685152 +1626064 5685480 1627560 5685136 1627152 5680768 1625528 5685408 +1627152 5680768 1627560 5685136 1627672 5685152 1627248 5680800 +1627560 5685136 1626064 5685480 1627672 5685152 1627248 5680800 +1627672 5685152 1627944 5680984 1627248 5680800 1627560 5685136 +1627672 5685152 1627944 5680984 1627560 5685136 1626064 5685480 +1627944 5680984 1627752 5680904 1627248 5680800 1627560 5685136 +1627248 5680800 1627152 5680768 1627560 5685136 1627944 5680984 +1627672 5685152 1628568 5685304 1627944 5680984 1627560 5685136 +1627672 5685152 1627560 5685136 1626064 5685480 1626216 5685512 +1627672 5685152 1627560 5685136 1626216 5685512 1626496 5685696 +1627672 5685152 1627944 5680984 1627560 5685136 1626496 5685696 +1627672 5685152 1627560 5685136 1626496 5685696 1626912 5685760 +1627560 5685136 1626216 5685512 1626496 5685696 1626912 5685760 +1627672 5685152 1627944 5680984 1627560 5685136 1626912 5685760 +1627560 5685136 1627152 5680768 1626064 5685480 1626216 5685512 +1626496 5685696 1626784 5685776 1626912 5685760 1627560 5685136 +1627560 5685136 1626064 5685480 1626216 5685512 1626496 5685696 +1627672 5685152 1627560 5685136 1626912 5685760 1627048 5685800 +1627672 5685152 1627944 5680984 1627560 5685136 1627048 5685800 +1627672 5685152 1627560 5685136 1627048 5685800 1627280 5685920 +1627672 5685152 1627944 5680984 1627560 5685136 1627280 5685920 +1627560 5685136 1626496 5685696 1626912 5685760 1627048 5685800 +1627560 5685136 1626912 5685760 1627048 5685800 1627280 5685920 +1627672 5685152 1627560 5685136 1627280 5685920 1628032 5685392 +1627152 5680768 1626064 5685480 1627560 5685136 1627248 5680800 +1626064 5685480 1627488 5685144 1627152 5680768 1625528 5685408 +1627560 5685136 1627488 5685144 1626064 5685480 1626216 5685512 +1627488 5685144 1627152 5680768 1626064 5685480 1626216 5685512 +1627560 5685136 1627152 5680768 1627488 5685144 1626216 5685512 +1627560 5685136 1627488 5685144 1626216 5685512 1626496 5685696 +1627560 5685136 1627488 5685144 1626496 5685696 1626912 5685760 +1627560 5685136 1627488 5685144 1626912 5685760 1627048 5685800 +1627488 5685144 1626496 5685696 1626912 5685760 1627048 5685800 +1627488 5685144 1626064 5685480 1626216 5685512 1626496 5685696 +1627560 5685136 1627152 5680768 1627488 5685144 1627048 5685800 +1626496 5685696 1626784 5685776 1626912 5685760 1627488 5685144 +1627488 5685144 1626216 5685512 1626496 5685696 1626912 5685760 +1627560 5685136 1627488 5685144 1627048 5685800 1627280 5685920 +1627560 5685136 1627488 5685144 1627280 5685920 1627672 5685152 +1627488 5685144 1626912 5685760 1627048 5685800 1627280 5685920 +1627560 5685136 1627152 5680768 1627488 5685144 1627672 5685152 +1627488 5685144 1627048 5685800 1627280 5685920 1627672 5685152 +1627280 5685920 1628032 5685392 1627672 5685152 1627488 5685144 +1627152 5680768 1627488 5685144 1627560 5685136 1627248 5680800 +1627152 5680768 1626064 5685480 1627488 5685144 1627248 5680800 +1627560 5685136 1627944 5680984 1627248 5680800 1627488 5685144 +1627560 5685136 1627672 5685152 1627944 5680984 1627488 5685144 +1627944 5680984 1627752 5680904 1627248 5680800 1627488 5685144 +1627488 5685144 1627672 5685152 1627560 5685136 1627944 5680984 +1627248 5680800 1627152 5680768 1627488 5685144 1627944 5680984 +1626064 5685480 1627448 5685104 1627152 5680768 1625528 5685408 +1627488 5685144 1627448 5685104 1626064 5685480 1626216 5685512 +1627488 5685144 1627152 5680768 1627448 5685104 1626216 5685512 +1627152 5680768 1627448 5685104 1627488 5685144 1627248 5680800 +1627448 5685104 1626216 5685512 1627488 5685144 1627248 5680800 +1627488 5685144 1627448 5685104 1626216 5685512 1626496 5685696 +1627448 5685104 1626064 5685480 1626216 5685512 1626496 5685696 +1627488 5685144 1627248 5680800 1627448 5685104 1626496 5685696 +1627488 5685144 1627448 5685104 1626496 5685696 1626912 5685760 +1627488 5685144 1627448 5685104 1626912 5685760 1627048 5685800 +1627488 5685144 1627248 5680800 1627448 5685104 1627048 5685800 +1627488 5685144 1627448 5685104 1627048 5685800 1627280 5685920 +1627448 5685104 1626216 5685512 1626496 5685696 1626912 5685760 +1626496 5685696 1626784 5685776 1626912 5685760 1627448 5685104 +1627448 5685104 1626496 5685696 1626912 5685760 1627048 5685800 +1627488 5685144 1627944 5680984 1627248 5680800 1627448 5685104 +1627488 5685144 1627944 5680984 1627448 5685104 1627048 5685800 +1627248 5680800 1627152 5680768 1627448 5685104 1627944 5680984 +1627944 5680984 1627752 5680904 1627248 5680800 1627448 5685104 +1627488 5685144 1627560 5685136 1627944 5680984 1627448 5685104 +1627560 5685136 1627672 5685152 1627944 5680984 1627448 5685104 +1627488 5685144 1627560 5685136 1627448 5685104 1627048 5685800 +1627560 5685136 1627672 5685152 1627448 5685104 1627488 5685144 +1627672 5685152 1628568 5685304 1627944 5680984 1627448 5685104 +1627944 5680984 1627248 5680800 1627448 5685104 1627672 5685152 +1627448 5685104 1627152 5680768 1626064 5685480 1626216 5685512 +1627152 5680768 1626064 5685480 1627448 5685104 1627248 5680800 +1626064 5685480 1627432 5685048 1627152 5680768 1625528 5685408 +1626064 5685480 1627448 5685104 1627432 5685048 1625528 5685408 +1627432 5685048 1627448 5685104 1627152 5680768 1625528 5685408 +1627448 5685104 1627432 5685048 1626064 5685480 1626216 5685512 +1627448 5685104 1627432 5685048 1626216 5685512 1626496 5685696 +1627432 5685048 1625528 5685408 1626064 5685480 1626216 5685512 +1627448 5685104 1627432 5685048 1626496 5685696 1626912 5685760 +1627432 5685048 1626216 5685512 1626496 5685696 1626912 5685760 +1626496 5685696 1626784 5685776 1626912 5685760 1627432 5685048 +1627448 5685104 1627432 5685048 1626912 5685760 1627048 5685800 +1627432 5685048 1626064 5685480 1626216 5685512 1626496 5685696 +1627448 5685104 1627152 5680768 1627432 5685048 1626912 5685760 +1627152 5680768 1627432 5685048 1627448 5685104 1627248 5680800 +1627448 5685104 1627944 5680984 1627248 5680800 1627432 5685048 +1627944 5680984 1627752 5680904 1627248 5680800 1627432 5685048 +1627152 5680768 1625528 5685408 1627432 5685048 1627248 5680800 +1627448 5685104 1627672 5685152 1627944 5680984 1627432 5685048 +1627448 5685104 1627560 5685136 1627672 5685152 1627432 5685048 +1627944 5680984 1627248 5680800 1627432 5685048 1627672 5685152 +1627448 5685104 1627488 5685144 1627560 5685136 1627432 5685048 +1627672 5685152 1628568 5685304 1627944 5680984 1627432 5685048 +1627672 5685152 1627944 5680984 1627432 5685048 1627560 5685136 +1627432 5685048 1626912 5685760 1627448 5685104 1627560 5685136 +1627248 5680800 1627152 5680768 1627432 5685048 1627944 5680984 +1627152 5680768 1626952 5680672 1625528 5685408 1627432 5685048 +1627432 5685048 1627384 5684864 1625528 5685408 1626064 5685480 +1627432 5685048 1627384 5684864 1626064 5685480 1626216 5685512 +1627384 5684864 1625528 5685408 1626064 5685480 1626216 5685512 +1627432 5685048 1627152 5680768 1627384 5684864 1626216 5685512 +1627152 5680768 1627384 5684864 1627432 5685048 1627248 5680800 +1627152 5680768 1625528 5685408 1627384 5684864 1627248 5680800 +1627384 5684864 1626216 5685512 1627432 5685048 1627248 5680800 +1627384 5684864 1627152 5680768 1625528 5685408 1626064 5685480 +1627432 5685048 1627384 5684864 1626216 5685512 1626496 5685696 +1627432 5685048 1627384 5684864 1626496 5685696 1626912 5685760 +1627384 5684864 1626064 5685480 1626216 5685512 1626496 5685696 +1627432 5685048 1627248 5680800 1627384 5684864 1626496 5685696 +1627432 5685048 1627944 5680984 1627248 5680800 1627384 5684864 +1627432 5685048 1627672 5685152 1627944 5680984 1627384 5684864 +1627944 5680984 1627752 5680904 1627248 5680800 1627384 5684864 +1627432 5685048 1627672 5685152 1627384 5684864 1626496 5685696 +1627248 5680800 1627152 5680768 1627384 5684864 1627944 5680984 +1627672 5685152 1628568 5685304 1627944 5680984 1627384 5684864 +1627672 5685152 1628568 5685304 1627384 5684864 1627432 5685048 +1628568 5685304 1628016 5680960 1627944 5680984 1627384 5684864 +1628568 5685304 1628016 5680960 1627384 5684864 1627672 5685152 +1627672 5685152 1628032 5685392 1628568 5685304 1627384 5684864 +1628568 5685304 1628096 5680872 1628016 5680960 1627384 5684864 +1627432 5685048 1627560 5685136 1627672 5685152 1627384 5684864 +1627432 5685048 1627448 5685104 1627560 5685136 1627384 5684864 +1627672 5685152 1628568 5685304 1627384 5684864 1627560 5685136 +1627432 5685048 1627560 5685136 1627384 5684864 1626496 5685696 +1627944 5680984 1627248 5680800 1627384 5684864 1628016 5680960 +1625528 5685408 1627384 5684864 1627152 5680768 1626952 5680672 +1627384 5684864 1627248 5680800 1627152 5680768 1626952 5680672 +1625528 5685408 1627384 5684864 1626952 5680672 1625296 5685392 +1625528 5685408 1626064 5685480 1627384 5684864 1626952 5680672 +1625528 5685408 1627256 5684656 1626952 5680672 1625296 5685392 +1627256 5684656 1627384 5684864 1626952 5680672 1625296 5685392 +1625528 5685408 1627384 5684864 1627256 5684656 1625296 5685392 +1626952 5680672 1626744 5680528 1625296 5685392 1627256 5684656 +1627384 5684864 1627256 5684656 1625528 5685408 1626064 5685480 +1627384 5684864 1627256 5684656 1626064 5685480 1626216 5685512 +1627384 5684864 1626952 5680672 1627256 5684656 1626216 5685512 +1627256 5684656 1625296 5685392 1625528 5685408 1626064 5685480 +1627384 5684864 1627256 5684656 1626216 5685512 1626496 5685696 +1627256 5684656 1626064 5685480 1626216 5685512 1626496 5685696 +1627384 5684864 1626952 5680672 1627256 5684656 1626496 5685696 +1627256 5684656 1625528 5685408 1626064 5685480 1626216 5685512 +1627384 5684864 1627256 5684656 1626496 5685696 1627432 5685048 +1626952 5680672 1627256 5684656 1627384 5684864 1627152 5680768 +1626952 5680672 1625296 5685392 1627256 5684656 1627152 5680768 +1627256 5684656 1626496 5685696 1627384 5684864 1627152 5680768 +1627384 5684864 1627248 5680800 1627152 5680768 1627256 5684656 +1627384 5684864 1627248 5680800 1627256 5684656 1626496 5685696 +1627384 5684864 1627944 5680984 1627248 5680800 1627256 5684656 +1627944 5680984 1627752 5680904 1627248 5680800 1627256 5684656 +1627384 5684864 1627944 5680984 1627256 5684656 1626496 5685696 +1627248 5680800 1627152 5680768 1627256 5684656 1627944 5680984 +1627384 5684864 1628016 5680960 1627944 5680984 1627256 5684656 +1627384 5684864 1628016 5680960 1627256 5684656 1626496 5685696 +1627384 5684864 1628568 5685304 1628016 5680960 1627256 5684656 +1627384 5684864 1628568 5685304 1627256 5684656 1626496 5685696 +1627944 5680984 1627248 5680800 1627256 5684656 1628016 5680960 +1627384 5684864 1627672 5685152 1628568 5685304 1627256 5684656 +1628568 5685304 1628096 5680872 1628016 5680960 1627256 5684656 +1628016 5680960 1627944 5680984 1627256 5684656 1628568 5685304 +1627152 5680768 1626952 5680672 1627256 5684656 1627248 5680800 +1626952 5680672 1627216 5684560 1627256 5684656 1627152 5680768 +1627216 5684560 1625296 5685392 1627256 5684656 1627152 5680768 +1626952 5680672 1625296 5685392 1627216 5684560 1627152 5680768 +1625296 5685392 1627216 5684560 1626952 5680672 1626744 5680528 +1625296 5685392 1627256 5684656 1627216 5684560 1626744 5680528 +1627216 5684560 1627152 5680768 1626952 5680672 1626744 5680528 +1625296 5685392 1627216 5684560 1626744 5680528 1625120 5685400 +1627256 5684656 1627216 5684560 1625296 5685392 1625528 5685408 +1627256 5684656 1627152 5680768 1627216 5684560 1625528 5685408 +1627216 5684560 1626744 5680528 1625296 5685392 1625528 5685408 +1627256 5684656 1627216 5684560 1625528 5685408 1626064 5685480 +1627256 5684656 1627152 5680768 1627216 5684560 1626064 5685480 +1627216 5684560 1625296 5685392 1625528 5685408 1626064 5685480 +1627256 5684656 1627216 5684560 1626064 5685480 1626216 5685512 +1627256 5684656 1627152 5680768 1627216 5684560 1626216 5685512 +1627216 5684560 1625528 5685408 1626064 5685480 1626216 5685512 +1627256 5684656 1627216 5684560 1626216 5685512 1626496 5685696 +1627256 5684656 1627248 5680800 1627152 5680768 1627216 5684560 +1627256 5684656 1627248 5680800 1627216 5684560 1626216 5685512 +1627152 5680768 1626952 5680672 1627216 5684560 1627248 5680800 +1627256 5684656 1627944 5680984 1627248 5680800 1627216 5684560 +1627256 5684656 1627944 5680984 1627216 5684560 1626216 5685512 +1627944 5680984 1627752 5680904 1627248 5680800 1627216 5684560 +1627944 5680984 1627752 5680904 1627216 5684560 1627256 5684656 +1627752 5680904 1627616 5680840 1627248 5680800 1627216 5684560 +1627256 5684656 1628016 5680960 1627944 5680984 1627216 5684560 +1627256 5684656 1628016 5680960 1627216 5684560 1626216 5685512 +1627944 5680984 1627752 5680904 1627216 5684560 1628016 5680960 +1627256 5684656 1628568 5685304 1628016 5680960 1627216 5684560 +1627256 5684656 1628568 5685304 1627216 5684560 1626216 5685512 +1627256 5684656 1627384 5684864 1628568 5685304 1627216 5684560 +1627256 5684656 1627384 5684864 1627216 5684560 1626216 5685512 +1628016 5680960 1627944 5680984 1627216 5684560 1628568 5685304 +1627384 5684864 1627672 5685152 1628568 5685304 1627216 5684560 +1628568 5685304 1628096 5680872 1628016 5680960 1627216 5684560 +1628568 5685304 1628016 5680960 1627216 5684560 1627384 5684864 +1627248 5680800 1627152 5680768 1627216 5684560 1627752 5680904 +1627216 5684560 1627184 5684304 1625296 5685392 1625528 5685408 +1627216 5684560 1626744 5680528 1627184 5684304 1625528 5685408 +1627184 5684304 1626744 5680528 1625296 5685392 1625528 5685408 +1626744 5680528 1627184 5684304 1627216 5684560 1626952 5680672 +1627216 5684560 1627152 5680768 1626952 5680672 1627184 5684304 +1627216 5684560 1627248 5680800 1627152 5680768 1627184 5684304 +1627152 5680768 1626952 5680672 1627184 5684304 1627248 5680800 +1627184 5684304 1625528 5685408 1627216 5684560 1627248 5680800 +1626744 5680528 1625296 5685392 1627184 5684304 1626952 5680672 +1626952 5680672 1626744 5680528 1627184 5684304 1627152 5680768 +1625296 5685392 1627184 5684304 1626744 5680528 1625120 5685400 +1625296 5685392 1625528 5685408 1627184 5684304 1625120 5685400 +1627184 5684304 1626952 5680672 1626744 5680528 1625120 5685400 +1627216 5684560 1627184 5684304 1625528 5685408 1626064 5685480 +1627184 5684304 1625296 5685392 1625528 5685408 1626064 5685480 +1627216 5684560 1627184 5684304 1626064 5685480 1626216 5685512 +1627216 5684560 1627248 5680800 1627184 5684304 1626064 5685480 +1626744 5680528 1626632 5680392 1625120 5685400 1627184 5684304 +1627216 5684560 1627752 5680904 1627248 5680800 1627184 5684304 +1627248 5680800 1627152 5680768 1627184 5684304 1627752 5680904 +1627216 5684560 1627752 5680904 1627184 5684304 1626064 5685480 +1627216 5684560 1627944 5680984 1627752 5680904 1627184 5684304 +1627216 5684560 1627944 5680984 1627184 5684304 1626064 5685480 +1627216 5684560 1628016 5680960 1627944 5680984 1627184 5684304 +1627216 5684560 1628016 5680960 1627184 5684304 1626064 5685480 +1627944 5680984 1627752 5680904 1627184 5684304 1628016 5680960 +1627752 5680904 1627616 5680840 1627248 5680800 1627184 5684304 +1627216 5684560 1628568 5685304 1628016 5680960 1627184 5684304 +1627216 5684560 1628568 5685304 1627184 5684304 1626064 5685480 +1628016 5680960 1627944 5680984 1627184 5684304 1628568 5685304 +1628568 5685304 1628096 5680872 1628016 5680960 1627184 5684304 +1627216 5684560 1627384 5684864 1628568 5685304 1627184 5684304 +1627216 5684560 1627384 5684864 1627184 5684304 1626064 5685480 +1627216 5684560 1627256 5684656 1627384 5684864 1627184 5684304 +1627216 5684560 1627256 5684656 1627184 5684304 1626064 5685480 +1628568 5685304 1628016 5680960 1627184 5684304 1627384 5684864 +1627384 5684864 1627672 5685152 1628568 5685304 1627184 5684304 +1627384 5684864 1628568 5685304 1627184 5684304 1627256 5684656 +1627752 5680904 1627248 5680800 1627184 5684304 1627944 5680984 +1626744 5680528 1627128 5684096 1627184 5684304 1626952 5680672 +1627128 5684096 1625120 5685400 1627184 5684304 1626952 5680672 +1626744 5680528 1625120 5685400 1627128 5684096 1626952 5680672 +1627184 5684304 1627152 5680768 1626952 5680672 1627128 5684096 +1627184 5684304 1627248 5680800 1627152 5680768 1627128 5684096 +1627184 5684304 1627752 5680904 1627248 5680800 1627128 5684096 +1627248 5680800 1627152 5680768 1627128 5684096 1627752 5680904 +1627184 5684304 1627752 5680904 1627128 5684096 1625120 5685400 +1626952 5680672 1626744 5680528 1627128 5684096 1627152 5680768 +1627152 5680768 1626952 5680672 1627128 5684096 1627248 5680800 +1627184 5684304 1627128 5684096 1625120 5685400 1625296 5685392 +1627184 5684304 1627128 5684096 1625296 5685392 1625528 5685408 +1627184 5684304 1627128 5684096 1625528 5685408 1626064 5685480 +1627128 5684096 1625296 5685392 1625528 5685408 1626064 5685480 +1627184 5684304 1627752 5680904 1627128 5684096 1626064 5685480 +1627128 5684096 1626744 5680528 1625120 5685400 1625296 5685392 +1627128 5684096 1625120 5685400 1625296 5685392 1625528 5685408 +1627184 5684304 1627128 5684096 1626064 5685480 1627216 5684560 +1627752 5680904 1627616 5680840 1627248 5680800 1627128 5684096 +1625120 5685400 1627128 5684096 1626744 5680528 1626632 5680392 +1627184 5684304 1627944 5680984 1627752 5680904 1627128 5684096 +1627752 5680904 1627248 5680800 1627128 5684096 1627944 5680984 +1627184 5684304 1627944 5680984 1627128 5684096 1626064 5685480 +1627184 5684304 1628016 5680960 1627944 5680984 1627128 5684096 +1627184 5684304 1628016 5680960 1627128 5684096 1626064 5685480 +1627184 5684304 1628568 5685304 1628016 5680960 1627128 5684096 +1627184 5684304 1628568 5685304 1627128 5684096 1626064 5685480 +1628016 5680960 1627944 5680984 1627128 5684096 1628568 5685304 +1627184 5684304 1627384 5684864 1628568 5685304 1627128 5684096 +1628568 5685304 1628096 5680872 1628016 5680960 1627128 5684096 +1627944 5680984 1627752 5680904 1627128 5684096 1628016 5680960 +1627128 5684096 1627160 5684040 1628016 5680960 1627944 5680984 +1627128 5684096 1628568 5685304 1627160 5684040 1627944 5680984 +1628568 5685304 1627160 5684040 1627128 5684096 1627184 5684304 +1627160 5684040 1627944 5680984 1627128 5684096 1627184 5684304 +1627160 5684040 1628568 5685304 1628016 5680960 1627944 5680984 +1628568 5685304 1628016 5680960 1627160 5684040 1627184 5684304 +1628568 5685304 1627160 5684040 1627184 5684304 1627384 5684864 +1628016 5680960 1627160 5684040 1628568 5685304 1628096 5680872 +1627128 5684096 1627160 5684040 1627944 5680984 1627752 5680904 +1627128 5684096 1627160 5684040 1627752 5680904 1627248 5680800 +1627128 5684096 1627160 5684040 1627248 5680800 1627152 5680768 +1627160 5684040 1627752 5680904 1627248 5680800 1627152 5680768 +1627160 5684040 1628016 5680960 1627944 5680984 1627752 5680904 +1627128 5684096 1627184 5684304 1627160 5684040 1627152 5680768 +1627128 5684096 1627160 5684040 1627152 5680768 1626952 5680672 +1627160 5684040 1627248 5680800 1627152 5680768 1626952 5680672 +1627128 5684096 1627160 5684040 1626952 5680672 1626744 5680528 +1627128 5684096 1627184 5684304 1627160 5684040 1626744 5680528 +1627128 5684096 1627160 5684040 1626744 5680528 1625120 5685400 +1627160 5684040 1626952 5680672 1626744 5680528 1625120 5685400 +1627128 5684096 1627160 5684040 1625120 5685400 1625296 5685392 +1627128 5684096 1627184 5684304 1627160 5684040 1625120 5685400 +1627160 5684040 1627152 5680768 1626952 5680672 1626744 5680528 +1627752 5680904 1627616 5680840 1627248 5680800 1627160 5684040 +1626744 5680528 1626632 5680392 1625120 5685400 1627160 5684040 +1627160 5684040 1627944 5680984 1627752 5680904 1627248 5680800 +1627160 5684040 1627272 5683976 1628016 5680960 1627944 5680984 +1627272 5683976 1628568 5685304 1628016 5680960 1627944 5680984 +1627160 5684040 1627272 5683976 1627944 5680984 1627752 5680904 +1627272 5683976 1628016 5680960 1627944 5680984 1627752 5680904 +1627160 5684040 1628568 5685304 1627272 5683976 1627752 5680904 +1628568 5685304 1627272 5683976 1627160 5684040 1627184 5684304 +1628568 5685304 1628016 5680960 1627272 5683976 1627184 5684304 +1627160 5684040 1627128 5684096 1627184 5684304 1627272 5683976 +1627272 5683976 1627752 5680904 1627160 5684040 1627128 5684096 +1627184 5684304 1628568 5685304 1627272 5683976 1627128 5684096 +1628568 5685304 1627272 5683976 1627184 5684304 1627384 5684864 +1628568 5685304 1628016 5680960 1627272 5683976 1627384 5684864 +1627272 5683976 1627128 5684096 1627184 5684304 1627384 5684864 +1628568 5685304 1627272 5683976 1627384 5684864 1627672 5685152 +1628568 5685304 1628016 5680960 1627272 5683976 1627672 5685152 +1627384 5684864 1627560 5685136 1627672 5685152 1627272 5683976 +1627272 5683976 1627184 5684304 1627384 5684864 1627672 5685152 +1628568 5685304 1627272 5683976 1627672 5685152 1628032 5685392 +1628016 5680960 1627272 5683976 1628568 5685304 1628096 5680872 +1627184 5684304 1627256 5684656 1627384 5684864 1627272 5683976 +1627184 5684304 1627256 5684656 1627272 5683976 1627128 5684096 +1627184 5684304 1627216 5684560 1627256 5684656 1627272 5683976 +1627384 5684864 1627672 5685152 1627272 5683976 1627256 5684656 +1627160 5684040 1627272 5683976 1627752 5680904 1627248 5680800 +1627160 5684040 1627272 5683976 1627248 5680800 1627152 5680768 +1627160 5684040 1627272 5683976 1627152 5680768 1626952 5680672 +1627272 5683976 1627944 5680984 1627752 5680904 1627248 5680800 +1627160 5684040 1627128 5684096 1627272 5683976 1627152 5680768 +1627752 5680904 1627616 5680840 1627248 5680800 1627272 5683976 +1627272 5683976 1627752 5680904 1627248 5680800 1627152 5680768 +1627272 5683976 1627344 5683896 1628016 5680960 1627944 5680984 +1627272 5683976 1628568 5685304 1627344 5683896 1627944 5680984 +1628568 5685304 1627344 5683896 1627272 5683976 1627672 5685152 +1627344 5683896 1627944 5680984 1627272 5683976 1627672 5685152 +1627344 5683896 1628568 5685304 1628016 5680960 1627944 5680984 +1627272 5683976 1627344 5683896 1627944 5680984 1627752 5680904 +1627344 5683896 1628016 5680960 1627944 5680984 1627752 5680904 +1627272 5683976 1627672 5685152 1627344 5683896 1627752 5680904 +1627272 5683976 1627344 5683896 1627752 5680904 1627248 5680800 +1627272 5683976 1627672 5685152 1627344 5683896 1627248 5680800 +1627344 5683896 1627944 5680984 1627752 5680904 1627248 5680800 +1628568 5685304 1628016 5680960 1627344 5683896 1627672 5685152 +1627752 5680904 1627616 5680840 1627248 5680800 1627344 5683896 +1627272 5683976 1627384 5684864 1627672 5685152 1627344 5683896 +1627272 5683976 1627384 5684864 1627344 5683896 1627248 5680800 +1627672 5685152 1628568 5685304 1627344 5683896 1627384 5684864 +1627384 5684864 1627560 5685136 1627672 5685152 1627344 5683896 +1627272 5683976 1627256 5684656 1627384 5684864 1627344 5683896 +1627272 5683976 1627256 5684656 1627344 5683896 1627248 5680800 +1627384 5684864 1627672 5685152 1627344 5683896 1627256 5684656 +1628568 5685304 1627344 5683896 1627672 5685152 1628032 5685392 +1628016 5680960 1627344 5683896 1628568 5685304 1628096 5680872 +1627272 5683976 1627184 5684304 1627256 5684656 1627344 5683896 +1627272 5683976 1627184 5684304 1627344 5683896 1627248 5680800 +1627272 5683976 1627128 5684096 1627184 5684304 1627344 5683896 +1627184 5684304 1627216 5684560 1627256 5684656 1627344 5683896 +1627256 5684656 1627384 5684864 1627344 5683896 1627184 5684304 +1627272 5683976 1627344 5683896 1627248 5680800 1627152 5680768 +1627272 5683976 1627344 5683896 1627152 5680768 1627160 5684040 +1627272 5683976 1627184 5684304 1627344 5683896 1627160 5684040 +1627152 5680768 1626952 5680672 1627160 5684040 1627344 5683896 +1627160 5684040 1627272 5683976 1627344 5683896 1626952 5680672 +1627344 5683896 1627752 5680904 1627248 5680800 1627152 5680768 +1626952 5680672 1626744 5680528 1627160 5684040 1627344 5683896 +1627344 5683896 1627248 5680800 1627152 5680768 1626952 5680672 +1627344 5683896 1627344 5683856 1627248 5680800 1627152 5680768 +1627752 5680904 1627344 5683856 1627344 5683896 1627944 5680984 +1627344 5683896 1628016 5680960 1627944 5680984 1627344 5683856 +1627344 5683896 1628568 5685304 1628016 5680960 1627344 5683856 +1628016 5680960 1627944 5680984 1627344 5683856 1628568 5685304 +1627944 5680984 1627752 5680904 1627344 5683856 1628016 5680960 +1627344 5683896 1628568 5685304 1627344 5683856 1627152 5680768 +1627344 5683896 1627672 5685152 1628568 5685304 1627344 5683856 +1627344 5683856 1627752 5680904 1627248 5680800 1627152 5680768 +1627752 5680904 1627248 5680800 1627344 5683856 1627944 5680984 +1627248 5680800 1627344 5683856 1627752 5680904 1627616 5680840 +1628568 5685304 1628096 5680872 1628016 5680960 1627344 5683856 +1627344 5683896 1627344 5683856 1627152 5680768 1626952 5680672 +1627344 5683896 1627344 5683856 1626952 5680672 1627160 5684040 +1627344 5683896 1627344 5683856 1627160 5684040 1627272 5683976 +1627344 5683856 1626952 5680672 1627160 5684040 1627272 5683976 +1627344 5683856 1627248 5680800 1627152 5680768 1626952 5680672 +1627344 5683896 1628568 5685304 1627344 5683856 1627272 5683976 +1626952 5680672 1626744 5680528 1627160 5684040 1627344 5683856 +1627344 5683856 1627152 5680768 1626952 5680672 1627160 5684040 +1627344 5683856 1627296 5683696 1627160 5684040 1627272 5683976 +1627344 5683856 1627296 5683696 1627272 5683976 1627344 5683896 +1627160 5684040 1627296 5683696 1626952 5680672 1626744 5680528 +1627160 5684040 1627296 5683696 1626744 5680528 1625120 5685400 +1627160 5684040 1627296 5683696 1625120 5685400 1627128 5684096 +1627296 5683696 1626744 5680528 1625120 5685400 1627128 5684096 +1625120 5685400 1625296 5685392 1627128 5684096 1627296 5683696 +1627296 5683696 1626952 5680672 1626744 5680528 1625120 5685400 +1627344 5683856 1626952 5680672 1627296 5683696 1627272 5683976 +1627296 5683696 1627128 5684096 1627160 5684040 1627272 5683976 +1626744 5680528 1626632 5680392 1625120 5685400 1627296 5683696 +1627296 5683696 1627344 5683856 1626952 5680672 1626744 5680528 +1626952 5680672 1627296 5683696 1627344 5683856 1627152 5680768 +1627344 5683856 1627248 5680800 1627152 5680768 1627296 5683696 +1627344 5683856 1627752 5680904 1627248 5680800 1627296 5683696 +1627248 5680800 1627152 5680768 1627296 5683696 1627752 5680904 +1627344 5683856 1627944 5680984 1627752 5680904 1627296 5683696 +1627344 5683856 1628016 5680960 1627944 5680984 1627296 5683696 +1627344 5683856 1628568 5685304 1628016 5680960 1627296 5683696 +1627344 5683856 1627344 5683896 1628568 5685304 1627296 5683696 +1628016 5680960 1627944 5680984 1627296 5683696 1628568 5685304 +1627752 5680904 1627248 5680800 1627296 5683696 1627944 5680984 +1627944 5680984 1627752 5680904 1627296 5683696 1628016 5680960 +1627296 5683696 1627272 5683976 1627344 5683856 1628568 5685304 +1627752 5680904 1627616 5680840 1627248 5680800 1627296 5683696 +1628568 5685304 1628096 5680872 1628016 5680960 1627296 5683696 +1626952 5680672 1626744 5680528 1627296 5683696 1627152 5680768 +1627152 5680768 1626952 5680672 1627296 5683696 1627248 5680800 +1627296 5683696 1627256 5683616 1625120 5685400 1627128 5684096 +1625120 5685400 1625296 5685392 1627128 5684096 1627256 5683616 +1627128 5684096 1627296 5683696 1627256 5683616 1625296 5685392 +1627296 5683696 1627256 5683616 1627128 5684096 1627160 5684040 +1627256 5683616 1625296 5685392 1627128 5684096 1627160 5684040 +1626744 5680528 1627256 5683616 1627296 5683696 1626952 5680672 +1626744 5680528 1625120 5685400 1627256 5683616 1626952 5680672 +1625296 5685392 1625528 5685408 1627128 5684096 1627256 5683616 +1627296 5683696 1627256 5683616 1627160 5684040 1627272 5683976 +1625120 5685400 1627256 5683616 1626744 5680528 1626632 5680392 +1627296 5683696 1627152 5680768 1626952 5680672 1627256 5683616 +1626952 5680672 1626744 5680528 1627256 5683616 1627152 5680768 +1627296 5683696 1627152 5680768 1627256 5683616 1627160 5684040 +1627256 5683616 1626744 5680528 1625120 5685400 1625296 5685392 +1627296 5683696 1627248 5680800 1627152 5680768 1627256 5683616 +1627296 5683696 1627752 5680904 1627248 5680800 1627256 5683616 +1627296 5683696 1627944 5680984 1627752 5680904 1627256 5683616 +1627752 5680904 1627248 5680800 1627256 5683616 1627944 5680984 +1627296 5683696 1628016 5680960 1627944 5680984 1627256 5683616 +1627296 5683696 1628568 5685304 1628016 5680960 1627256 5683616 +1627944 5680984 1627752 5680904 1627256 5683616 1628016 5680960 +1627752 5680904 1627616 5680840 1627248 5680800 1627256 5683616 +1627152 5680768 1626952 5680672 1627256 5683616 1627248 5680800 +1627296 5683696 1628016 5680960 1627256 5683616 1627160 5684040 +1627248 5680800 1627152 5680768 1627256 5683616 1627752 5680904 +1626744 5680528 1627192 5683512 1627256 5683616 1626952 5680672 +1627192 5683512 1625120 5685400 1627256 5683616 1626952 5680672 +1627256 5683616 1627152 5680768 1626952 5680672 1627192 5683512 +1626952 5680672 1626744 5680528 1627192 5683512 1627152 5680768 +1627256 5683616 1627152 5680768 1627192 5683512 1625120 5685400 +1626744 5680528 1625120 5685400 1627192 5683512 1626952 5680672 +1625120 5685400 1627192 5683512 1626744 5680528 1626632 5680392 +1625120 5685400 1627256 5683616 1627192 5683512 1626632 5680392 +1625120 5685400 1627192 5683512 1626632 5680392 1624992 5685440 +1627192 5683512 1626952 5680672 1626744 5680528 1626632 5680392 +1627256 5683616 1627248 5680800 1627152 5680768 1627192 5683512 +1627256 5683616 1627248 5680800 1627192 5683512 1625120 5685400 +1627152 5680768 1626952 5680672 1627192 5683512 1627248 5680800 +1627256 5683616 1627192 5683512 1625120 5685400 1625296 5685392 +1627256 5683616 1627192 5683512 1625296 5685392 1627128 5684096 +1627256 5683616 1627192 5683512 1627128 5684096 1627160 5684040 +1627192 5683512 1625296 5685392 1627128 5684096 1627160 5684040 +1627256 5683616 1627192 5683512 1627160 5684040 1627296 5683696 +1627256 5683616 1627248 5680800 1627192 5683512 1627160 5684040 +1627192 5683512 1626632 5680392 1625120 5685400 1625296 5685392 +1625296 5685392 1625528 5685408 1627128 5684096 1627192 5683512 +1627192 5683512 1625120 5685400 1625296 5685392 1627128 5684096 +1627256 5683616 1627752 5680904 1627248 5680800 1627192 5683512 +1627256 5683616 1627944 5680984 1627752 5680904 1627192 5683512 +1627256 5683616 1627944 5680984 1627192 5683512 1627160 5684040 +1627256 5683616 1628016 5680960 1627944 5680984 1627192 5683512 +1627944 5680984 1627752 5680904 1627192 5683512 1628016 5680960 +1627256 5683616 1628016 5680960 1627192 5683512 1627160 5684040 +1627256 5683616 1627296 5683696 1628016 5680960 1627192 5683512 +1627752 5680904 1627616 5680840 1627248 5680800 1627192 5683512 +1627248 5680800 1627152 5680768 1627192 5683512 1627752 5680904 +1627752 5680904 1627248 5680800 1627192 5683512 1627944 5680984 +1627192 5683512 1627136 5683472 1625120 5685400 1625296 5685392 +1625120 5685400 1627136 5683472 1626632 5680392 1624992 5685440 +1627192 5683512 1626632 5680392 1627136 5683472 1625296 5685392 +1627136 5683472 1626632 5680392 1625120 5685400 1625296 5685392 +1626632 5680392 1627136 5683472 1627192 5683512 1626744 5680528 +1627192 5683512 1626952 5680672 1626744 5680528 1627136 5683472 +1627192 5683512 1627152 5680768 1626952 5680672 1627136 5683472 +1627192 5683512 1627248 5680800 1627152 5680768 1627136 5683472 +1627152 5680768 1626952 5680672 1627136 5683472 1627248 5680800 +1626952 5680672 1626744 5680528 1627136 5683472 1627152 5680768 +1627136 5683472 1625296 5685392 1627192 5683512 1627248 5680800 +1626632 5680392 1625120 5685400 1627136 5683472 1626744 5680528 +1626744 5680528 1626632 5680392 1627136 5683472 1626952 5680672 +1627192 5683512 1627752 5680904 1627248 5680800 1627136 5683472 +1627248 5680800 1627152 5680768 1627136 5683472 1627752 5680904 +1627192 5683512 1627752 5680904 1627136 5683472 1625296 5685392 +1627752 5680904 1627616 5680840 1627248 5680800 1627136 5683472 +1627192 5683512 1627136 5683472 1625296 5685392 1627128 5684096 +1627192 5683512 1627136 5683472 1627128 5684096 1627160 5684040 +1627192 5683512 1627136 5683472 1627160 5684040 1627256 5683616 +1627136 5683472 1627128 5684096 1627160 5684040 1627256 5683616 +1627160 5684040 1627296 5683696 1627256 5683616 1627136 5683472 +1627136 5683472 1625120 5685400 1625296 5685392 1627128 5684096 +1625296 5685392 1625528 5685408 1627128 5684096 1627136 5683472 +1627192 5683512 1627752 5680904 1627136 5683472 1627256 5683616 +1627136 5683472 1625296 5685392 1627128 5684096 1627160 5684040 +1627192 5683512 1627944 5680984 1627752 5680904 1627136 5683472 +1627192 5683512 1628016 5680960 1627944 5680984 1627136 5683472 +1627192 5683512 1627944 5680984 1627136 5683472 1627256 5683616 +1627752 5680904 1627248 5680800 1627136 5683472 1627944 5680984 +1625120 5685400 1627128 5683456 1626632 5680392 1624992 5685440 +1627136 5683472 1627128 5683456 1625120 5685400 1625296 5685392 +1627136 5683472 1627128 5683456 1625296 5685392 1627128 5684096 +1625296 5685392 1625528 5685408 1627128 5684096 1627128 5683456 +1625528 5685408 1626064 5685480 1627128 5684096 1627128 5683456 +1627128 5684096 1627136 5683472 1627128 5683456 1625528 5685408 +1627128 5683456 1625120 5685400 1625296 5685392 1625528 5685408 +1626632 5680392 1627128 5683456 1627136 5683472 1626744 5680528 +1626632 5680392 1625120 5685400 1627128 5683456 1626744 5680528 +1627136 5683472 1626744 5680528 1627128 5683456 1627128 5684096 +1627128 5683456 1626632 5680392 1625120 5685400 1625296 5685392 +1627136 5683472 1626952 5680672 1626744 5680528 1627128 5683456 +1627136 5683472 1627152 5680768 1626952 5680672 1627128 5683456 +1627136 5683472 1627248 5680800 1627152 5680768 1627128 5683456 +1627136 5683472 1627752 5680904 1627248 5680800 1627128 5683456 +1627248 5680800 1627152 5680768 1627128 5683456 1627752 5680904 +1627152 5680768 1626952 5680672 1627128 5683456 1627248 5680800 +1627752 5680904 1627616 5680840 1627248 5680800 1627128 5683456 +1626744 5680528 1626632 5680392 1627128 5683456 1626952 5680672 +1627136 5683472 1627752 5680904 1627128 5683456 1627128 5684096 +1626952 5680672 1626744 5680528 1627128 5683456 1627152 5680768 +1627136 5683472 1627944 5680984 1627752 5680904 1627128 5683456 +1627752 5680904 1627248 5680800 1627128 5683456 1627944 5680984 +1627136 5683472 1627944 5680984 1627128 5683456 1627128 5684096 +1627136 5683472 1627128 5683456 1627128 5684096 1627160 5684040 +1627136 5683472 1627192 5683512 1627944 5680984 1627128 5683456 +1627192 5683512 1628016 5680960 1627944 5680984 1627128 5683456 +1627136 5683472 1627192 5683512 1627128 5683456 1627128 5684096 +1627944 5680984 1627752 5680904 1627128 5683456 1627192 5683512 +1625120 5685400 1627064 5683416 1626632 5680392 1624992 5685440 +1626632 5680392 1624912 5685464 1624992 5685440 1627064 5683416 +1626632 5680392 1626592 5680320 1624912 5685464 1627064 5683416 +1627064 5683416 1627128 5683456 1626632 5680392 1624912 5685464 +1624992 5685440 1625120 5685400 1627064 5683416 1624912 5685464 +1626632 5680392 1627064 5683416 1627128 5683456 1626744 5680528 +1626632 5680392 1624912 5685464 1627064 5683416 1626744 5680528 +1627064 5683416 1625120 5685400 1627128 5683456 1626744 5680528 +1625120 5685400 1627128 5683456 1627064 5683416 1624992 5685440 +1627128 5683456 1626952 5680672 1626744 5680528 1627064 5683416 +1626744 5680528 1626632 5680392 1627064 5683416 1626952 5680672 +1627128 5683456 1626952 5680672 1627064 5683416 1625120 5685400 +1627128 5683456 1627064 5683416 1625120 5685400 1625296 5685392 +1627128 5683456 1626952 5680672 1627064 5683416 1625296 5685392 +1627064 5683416 1624992 5685440 1625120 5685400 1625296 5685392 +1627128 5683456 1627064 5683416 1625296 5685392 1625528 5685408 +1627128 5683456 1627064 5683416 1625528 5685408 1627128 5684096 +1625528 5685408 1626064 5685480 1627128 5684096 1627064 5683416 +1627128 5683456 1627064 5683416 1627128 5684096 1627136 5683472 +1627064 5683416 1625528 5685408 1627128 5684096 1627136 5683472 +1627128 5683456 1626952 5680672 1627064 5683416 1627136 5683472 +1627064 5683416 1625296 5685392 1625528 5685408 1627128 5684096 +1627064 5683416 1625120 5685400 1625296 5685392 1625528 5685408 +1627128 5683456 1627152 5680768 1626952 5680672 1627064 5683416 +1627128 5683456 1627152 5680768 1627064 5683416 1627136 5683472 +1627128 5683456 1627248 5680800 1627152 5680768 1627064 5683416 +1627128 5683456 1627752 5680904 1627248 5680800 1627064 5683416 +1627128 5683456 1627944 5680984 1627752 5680904 1627064 5683416 +1627752 5680904 1627248 5680800 1627064 5683416 1627944 5680984 +1627128 5683456 1627944 5680984 1627064 5683416 1627136 5683472 +1627248 5680800 1627152 5680768 1627064 5683416 1627752 5680904 +1627752 5680904 1627616 5680840 1627248 5680800 1627064 5683416 +1626952 5680672 1626744 5680528 1627064 5683416 1627152 5680768 +1627152 5680768 1626952 5680672 1627064 5683416 1627248 5680800 +1624912 5685464 1624952 5685472 1624992 5685440 1627064 5683416 +1627128 5683456 1627192 5683512 1627944 5680984 1627064 5683416 +1627128 5684096 1627160 5684040 1627136 5683472 1627064 5683416 +1627160 5684040 1627256 5683616 1627136 5683472 1627064 5683416 +1627136 5683472 1627128 5683456 1627064 5683416 1627160 5684040 +1627128 5684096 1627160 5684040 1627064 5683416 1625528 5685408 +1627064 5683416 1626968 5683384 1624912 5685464 1624992 5685440 +1624912 5685464 1626968 5683384 1626632 5680392 1626592 5680320 +1626632 5680392 1626968 5683384 1627064 5683416 1626744 5680528 +1627064 5683416 1626744 5680528 1626968 5683384 1624992 5685440 +1626968 5683384 1626632 5680392 1624912 5685464 1624992 5685440 +1626632 5680392 1624912 5685464 1626968 5683384 1626744 5680528 +1627064 5683416 1626968 5683384 1624992 5685440 1625120 5685400 +1626968 5683384 1624912 5685464 1624992 5685440 1625120 5685400 +1627064 5683416 1626744 5680528 1626968 5683384 1625120 5685400 +1627064 5683416 1626952 5680672 1626744 5680528 1626968 5683384 +1626744 5680528 1626632 5680392 1626968 5683384 1626952 5680672 +1627064 5683416 1626952 5680672 1626968 5683384 1625120 5685400 +1627064 5683416 1626968 5683384 1625120 5685400 1625296 5685392 +1627064 5683416 1626952 5680672 1626968 5683384 1625296 5685392 +1626968 5683384 1624992 5685440 1625120 5685400 1625296 5685392 +1627064 5683416 1627152 5680768 1626952 5680672 1626968 5683384 +1627064 5683416 1627152 5680768 1626968 5683384 1625296 5685392 +1626952 5680672 1626744 5680528 1626968 5683384 1627152 5680768 +1627064 5683416 1626968 5683384 1625296 5685392 1625528 5685408 +1627064 5683416 1627152 5680768 1626968 5683384 1625528 5685408 +1626968 5683384 1625120 5685400 1625296 5685392 1625528 5685408 +1627064 5683416 1626968 5683384 1625528 5685408 1627128 5684096 +1625528 5685408 1626064 5685480 1627128 5684096 1626968 5683384 +1627064 5683416 1627152 5680768 1626968 5683384 1627128 5684096 +1627064 5683416 1626968 5683384 1627128 5684096 1627160 5684040 +1627064 5683416 1627152 5680768 1626968 5683384 1627160 5684040 +1626968 5683384 1625528 5685408 1627128 5684096 1627160 5684040 +1626968 5683384 1625296 5685392 1625528 5685408 1627128 5684096 +1627064 5683416 1627248 5680800 1627152 5680768 1626968 5683384 +1627064 5683416 1627248 5680800 1626968 5683384 1627160 5684040 +1627064 5683416 1627752 5680904 1627248 5680800 1626968 5683384 +1627064 5683416 1627752 5680904 1626968 5683384 1627160 5684040 +1627064 5683416 1627944 5680984 1627752 5680904 1626968 5683384 +1627064 5683416 1627944 5680984 1626968 5683384 1627160 5684040 +1627064 5683416 1627128 5683456 1627944 5680984 1626968 5683384 +1627752 5680904 1627248 5680800 1626968 5683384 1627944 5680984 +1627752 5680904 1627616 5680840 1627248 5680800 1626968 5683384 +1627152 5680768 1626952 5680672 1626968 5683384 1627248 5680800 +1627248 5680800 1627152 5680768 1626968 5683384 1627752 5680904 +1624912 5685464 1624952 5685472 1624992 5685440 1626968 5683384 +1627064 5683416 1626968 5683384 1627160 5684040 1627136 5683472 +1627064 5683416 1627944 5680984 1626968 5683384 1627136 5683472 +1627160 5684040 1627256 5683616 1627136 5683472 1626968 5683384 +1627064 5683416 1626968 5683384 1627136 5683472 1627128 5683456 +1626968 5683384 1627128 5684096 1627160 5684040 1627136 5683472 +1624912 5685464 1626568 5683384 1626632 5680392 1626592 5680320 +1624912 5685464 1626568 5683384 1626592 5680320 1621048 5686008 +1626968 5683384 1626568 5683384 1624912 5685464 1624992 5685440 +1626968 5683384 1626568 5683384 1624992 5685440 1625120 5685400 +1626568 5683384 1624912 5685464 1624992 5685440 1625120 5685400 +1626632 5680392 1626568 5683384 1626968 5683384 1626744 5680528 +1626968 5683384 1626952 5680672 1626744 5680528 1626568 5683384 +1626744 5680528 1626632 5680392 1626568 5683384 1626952 5680672 +1626968 5683384 1626952 5680672 1626568 5683384 1625120 5685400 +1624912 5685464 1624992 5685440 1626568 5683384 1626592 5680320 +1626968 5683384 1626568 5683384 1625120 5685400 1625296 5685392 +1626568 5683384 1624992 5685440 1625120 5685400 1625296 5685392 +1626968 5683384 1626952 5680672 1626568 5683384 1625296 5685392 +1626968 5683384 1627152 5680768 1626952 5680672 1626568 5683384 +1626952 5680672 1626744 5680528 1626568 5683384 1627152 5680768 +1626968 5683384 1627152 5680768 1626568 5683384 1625296 5685392 +1626968 5683384 1626568 5683384 1625296 5685392 1625528 5685408 +1626968 5683384 1627152 5680768 1626568 5683384 1625528 5685408 +1626568 5683384 1625120 5685400 1625296 5685392 1625528 5685408 +1626968 5683384 1627248 5680800 1627152 5680768 1626568 5683384 +1626968 5683384 1626568 5683384 1625528 5685408 1627128 5684096 +1625528 5685408 1626064 5685480 1627128 5684096 1626568 5683384 +1626064 5685480 1627184 5684304 1627128 5684096 1626568 5683384 +1626968 5683384 1627152 5680768 1626568 5683384 1627128 5684096 +1626568 5683384 1625296 5685392 1625528 5685408 1626064 5685480 +1626968 5683384 1626568 5683384 1627128 5684096 1627160 5684040 +1626968 5683384 1627152 5680768 1626568 5683384 1627160 5684040 +1626968 5683384 1626568 5683384 1627160 5684040 1627136 5683472 +1627128 5684096 1627160 5684040 1626568 5683384 1626064 5685480 +1626568 5683384 1626744 5680528 1626632 5680392 1626592 5680320 +1624912 5685464 1624952 5685472 1624992 5685440 1626568 5683384 +1624912 5685464 1626328 5683352 1626592 5680320 1621048 5686008 +1626592 5680320 1626328 5683352 1626568 5683384 1626632 5680392 +1626568 5683384 1626328 5683352 1624912 5685464 1624992 5685440 +1626568 5683384 1626328 5683352 1624992 5685440 1625120 5685400 +1626568 5683384 1626328 5683352 1625120 5685400 1625296 5685392 +1626328 5683352 1624992 5685440 1625120 5685400 1625296 5685392 +1626328 5683352 1624912 5685464 1624992 5685440 1625120 5685400 +1626568 5683384 1626328 5683352 1625296 5685392 1625528 5685408 +1626328 5683352 1625120 5685400 1625296 5685392 1625528 5685408 +1624912 5685464 1626328 5683352 1621048 5686008 1621112 5686056 +1626568 5683384 1626328 5683352 1625528 5685408 1626064 5685480 +1626568 5683384 1626328 5683352 1626064 5685480 1627128 5684096 +1626064 5685480 1627184 5684304 1627128 5684096 1626328 5683352 +1626328 5683352 1625296 5685392 1625528 5685408 1626064 5685480 +1626328 5683352 1625528 5685408 1626064 5685480 1627128 5684096 +1626568 5683384 1626328 5683352 1627128 5684096 1627160 5684040 +1626328 5683352 1626632 5680392 1626592 5680320 1621048 5686008 +1626568 5683384 1626744 5680528 1626632 5680392 1626328 5683352 +1626632 5680392 1626592 5680320 1626328 5683352 1626744 5680528 +1626568 5683384 1626952 5680672 1626744 5680528 1626328 5683352 +1626568 5683384 1627152 5680768 1626952 5680672 1626328 5683352 +1626952 5680672 1626744 5680528 1626328 5683352 1627152 5680768 +1626568 5683384 1626968 5683384 1627152 5680768 1626328 5683352 +1626744 5680528 1626632 5680392 1626328 5683352 1626952 5680672 +1626328 5683352 1627128 5684096 1626568 5683384 1627152 5680768 +1624912 5685464 1624992 5685440 1626328 5683352 1621048 5686008 +1624912 5685464 1624952 5685472 1624992 5685440 1626328 5683352 +1626592 5680320 1626576 5680264 1621048 5686008 1626328 5683352 +1621048 5686008 1624912 5685464 1626328 5683352 1626576 5680264 +1626576 5680264 1620912 5685984 1621048 5686008 1626328 5683352 +1626592 5680320 1626576 5680264 1626328 5683352 1626632 5680392 +1626328 5683352 1626296 5683360 1621048 5686008 1624912 5685464 +1621048 5686008 1626296 5683360 1626576 5680264 1620912 5685984 +1621048 5686008 1621112 5686056 1624912 5685464 1626296 5683360 +1626328 5683352 1626576 5680264 1626296 5683360 1624912 5685464 +1626296 5683360 1626576 5680264 1621048 5686008 1624912 5685464 +1626328 5683352 1626296 5683360 1624912 5685464 1624992 5685440 +1626296 5683360 1621048 5686008 1624912 5685464 1624992 5685440 +1626328 5683352 1626296 5683360 1624992 5685440 1625120 5685400 +1626328 5683352 1626296 5683360 1625120 5685400 1625296 5685392 +1626328 5683352 1626296 5683360 1625296 5685392 1625528 5685408 +1626296 5683360 1625120 5685400 1625296 5685392 1625528 5685408 +1626296 5683360 1624992 5685440 1625120 5685400 1625296 5685392 +1626328 5683352 1626296 5683360 1625528 5685408 1626064 5685480 +1626296 5683360 1625296 5685392 1625528 5685408 1626064 5685480 +1626328 5683352 1626296 5683360 1626064 5685480 1627128 5684096 +1626064 5685480 1627184 5684304 1627128 5684096 1626296 5683360 +1626328 5683352 1626296 5683360 1627128 5684096 1626568 5683384 +1626296 5683360 1625528 5685408 1626064 5685480 1627128 5684096 +1626296 5683360 1626064 5685480 1627128 5684096 1626568 5683384 +1627128 5684096 1627160 5684040 1626568 5683384 1626296 5683360 +1626328 5683352 1626576 5680264 1626296 5683360 1626568 5683384 +1626296 5683360 1624912 5685464 1624992 5685440 1625120 5685400 +1624912 5685464 1624952 5685472 1624992 5685440 1626296 5683360 +1626576 5680264 1626296 5683360 1626328 5683352 1626592 5680320 +1626576 5680264 1621048 5686008 1626296 5683360 1626592 5680320 +1626328 5683352 1626632 5680392 1626592 5680320 1626296 5683360 +1626328 5683352 1626744 5680528 1626632 5680392 1626296 5683360 +1626632 5680392 1626592 5680320 1626296 5683360 1626744 5680528 +1626296 5683360 1626568 5683384 1626328 5683352 1626744 5680528 +1626328 5683352 1626952 5680672 1626744 5680528 1626296 5683360 +1626592 5680320 1626576 5680264 1626296 5683360 1626632 5680392 +1626576 5680264 1626248 5683328 1626296 5683360 1626592 5680320 +1626576 5680264 1621048 5686008 1626248 5683328 1626592 5680320 +1626248 5683328 1621048 5686008 1626296 5683360 1626592 5680320 +1621048 5686008 1626248 5683328 1626576 5680264 1620912 5685984 +1626296 5683360 1626248 5683328 1621048 5686008 1624912 5685464 +1626296 5683360 1626248 5683328 1624912 5685464 1624992 5685440 +1626296 5683360 1626592 5680320 1626248 5683328 1624992 5685440 +1626248 5683328 1626576 5680264 1621048 5686008 1624912 5685464 +1621048 5686008 1621112 5686056 1624912 5685464 1626248 5683328 +1626248 5683328 1621048 5686008 1624912 5685464 1624992 5685440 +1626296 5683360 1626248 5683328 1624992 5685440 1625120 5685400 +1626248 5683328 1624912 5685464 1624992 5685440 1625120 5685400 +1626296 5683360 1626592 5680320 1626248 5683328 1625120 5685400 +1626296 5683360 1626248 5683328 1625120 5685400 1625296 5685392 +1626296 5683360 1626248 5683328 1625296 5685392 1625528 5685408 +1626296 5683360 1626248 5683328 1625528 5685408 1626064 5685480 +1626296 5683360 1626592 5680320 1626248 5683328 1625528 5685408 +1626248 5683328 1625120 5685400 1625296 5685392 1625528 5685408 +1626248 5683328 1624992 5685440 1625120 5685400 1625296 5685392 +1624912 5685464 1624952 5685472 1624992 5685440 1626248 5683328 +1626296 5683360 1626632 5680392 1626592 5680320 1626248 5683328 +1626592 5680320 1626576 5680264 1626248 5683328 1626632 5680392 +1626296 5683360 1626632 5680392 1626248 5683328 1625528 5685408 +1626296 5683360 1626744 5680528 1626632 5680392 1626248 5683328 +1626296 5683360 1626328 5683352 1626744 5680528 1626248 5683328 +1626296 5683360 1626328 5683352 1626248 5683328 1625528 5685408 +1626744 5680528 1626632 5680392 1626248 5683328 1626328 5683352 +1626328 5683352 1626952 5680672 1626744 5680528 1626248 5683328 +1626328 5683352 1626952 5680672 1626248 5683328 1626296 5683360 +1626328 5683352 1627152 5680768 1626952 5680672 1626248 5683328 +1626328 5683352 1627152 5680768 1626248 5683328 1626296 5683360 +1626328 5683352 1626568 5683384 1627152 5680768 1626248 5683328 +1626328 5683352 1626568 5683384 1626248 5683328 1626296 5683360 +1627152 5680768 1626952 5680672 1626248 5683328 1626568 5683384 +1626568 5683384 1626968 5683384 1627152 5680768 1626248 5683328 +1626744 5680528 1626632 5680392 1626248 5683328 1626952 5680672 +1626952 5680672 1626744 5680528 1626248 5683328 1627152 5680768 +1626632 5680392 1626592 5680320 1626248 5683328 1626744 5680528 +1626576 5680264 1626184 5683296 1626248 5683328 1626592 5680320 +1626576 5680264 1621048 5686008 1626184 5683296 1626592 5680320 +1626248 5683328 1626632 5680392 1626592 5680320 1626184 5683296 +1626592 5680320 1626576 5680264 1626184 5683296 1626632 5680392 +1626248 5683328 1626184 5683296 1621048 5686008 1624912 5685464 +1626184 5683296 1626576 5680264 1621048 5686008 1624912 5685464 +1626184 5683296 1624912 5685464 1626248 5683328 1626632 5680392 +1621048 5686008 1626184 5683296 1626576 5680264 1620912 5685984 +1621048 5686008 1624912 5685464 1626184 5683296 1620912 5685984 +1626184 5683296 1626592 5680320 1626576 5680264 1620912 5685984 +1626576 5680264 1617424 5683592 1620912 5685984 1626184 5683296 +1621048 5686008 1621112 5686056 1624912 5685464 1626184 5683296 +1626248 5683328 1626184 5683296 1624912 5685464 1624992 5685440 +1626248 5683328 1626184 5683296 1624992 5685440 1625120 5685400 +1626184 5683296 1621048 5686008 1624912 5685464 1624992 5685440 +1626248 5683328 1626632 5680392 1626184 5683296 1625120 5685400 +1626184 5683296 1624912 5685464 1624992 5685440 1625120 5685400 +1626248 5683328 1626184 5683296 1625120 5685400 1625296 5685392 +1626184 5683296 1624992 5685440 1625120 5685400 1625296 5685392 +1626248 5683328 1626632 5680392 1626184 5683296 1625296 5685392 +1626248 5683328 1626184 5683296 1625296 5685392 1625528 5685408 +1626248 5683328 1626184 5683296 1625528 5685408 1626296 5683360 +1625528 5685408 1626064 5685480 1626296 5683360 1626184 5683296 +1626248 5683328 1626632 5680392 1626184 5683296 1626296 5683360 +1626184 5683296 1625296 5685392 1625528 5685408 1626296 5683360 +1626184 5683296 1625120 5685400 1625296 5685392 1625528 5685408 +1624912 5685464 1624952 5685472 1624992 5685440 1626184 5683296 +1626248 5683328 1626744 5680528 1626632 5680392 1626184 5683296 +1626632 5680392 1626592 5680320 1626184 5683296 1626744 5680528 +1626248 5683328 1626744 5680528 1626184 5683296 1626296 5683360 +1626248 5683328 1626952 5680672 1626744 5680528 1626184 5683296 +1626248 5683328 1626952 5680672 1626184 5683296 1626296 5683360 +1626248 5683328 1627152 5680768 1626952 5680672 1626184 5683296 +1626248 5683328 1627152 5680768 1626184 5683296 1626296 5683360 +1626248 5683328 1626568 5683384 1627152 5680768 1626184 5683296 +1626248 5683328 1626328 5683352 1626568 5683384 1626184 5683296 +1626248 5683328 1626296 5683360 1626328 5683352 1626184 5683296 +1626248 5683328 1626328 5683352 1626184 5683296 1626296 5683360 +1626568 5683384 1627152 5680768 1626184 5683296 1626328 5683352 +1626568 5683384 1626968 5683384 1627152 5680768 1626184 5683296 +1626952 5680672 1626744 5680528 1626184 5683296 1627152 5680768 +1627152 5680768 1626952 5680672 1626184 5683296 1626568 5683384 +1626744 5680528 1626632 5680392 1626184 5683296 1626952 5680672 +1626576 5680264 1626072 5683184 1626184 5683296 1626592 5680320 +1626184 5683296 1626632 5680392 1626592 5680320 1626072 5683184 +1626072 5683184 1620912 5685984 1626184 5683296 1626632 5680392 +1620912 5685984 1626072 5683184 1626576 5680264 1617424 5683592 +1626576 5680264 1617376 5683520 1617424 5683592 1626072 5683184 +1626184 5683296 1626744 5680528 1626632 5680392 1626072 5683184 +1626632 5680392 1626592 5680320 1626072 5683184 1626744 5680528 +1626184 5683296 1626744 5680528 1626072 5683184 1620912 5685984 +1626184 5683296 1626072 5683184 1620912 5685984 1621048 5686008 +1626184 5683296 1626072 5683184 1621048 5686008 1624912 5685464 +1626184 5683296 1626744 5680528 1626072 5683184 1624912 5685464 +1626184 5683296 1626072 5683184 1624912 5685464 1624992 5685440 +1626072 5683184 1621048 5686008 1624912 5685464 1624992 5685440 +1626184 5683296 1626744 5680528 1626072 5683184 1624992 5685440 +1626072 5683184 1620912 5685984 1621048 5686008 1624912 5685464 +1621048 5686008 1621112 5686056 1624912 5685464 1626072 5683184 +1620912 5685984 1626072 5683184 1617424 5683592 1620776 5686024 +1626184 5683296 1626072 5683184 1624992 5685440 1625120 5685400 +1626184 5683296 1626072 5683184 1625120 5685400 1625296 5685392 +1626184 5683296 1626744 5680528 1626072 5683184 1625296 5685392 +1626072 5683184 1624912 5685464 1624992 5685440 1625120 5685400 +1626072 5683184 1624992 5685440 1625120 5685400 1625296 5685392 +1626184 5683296 1626072 5683184 1625296 5685392 1625528 5685408 +1620912 5685984 1621048 5686008 1626072 5683184 1617424 5683592 +1626592 5680320 1626576 5680264 1626072 5683184 1626632 5680392 +1626576 5680264 1617424 5683592 1626072 5683184 1626592 5680320 +1624912 5685464 1624952 5685472 1624992 5685440 1626072 5683184 +1626184 5683296 1626952 5680672 1626744 5680528 1626072 5683184 +1626184 5683296 1626952 5680672 1626072 5683184 1625296 5685392 +1626744 5680528 1626632 5680392 1626072 5683184 1626952 5680672 +1626184 5683296 1627152 5680768 1626952 5680672 1626072 5683184 +1626184 5683296 1627152 5680768 1626072 5683184 1625296 5685392 +1626184 5683296 1626568 5683384 1627152 5680768 1626072 5683184 +1626184 5683296 1626568 5683384 1626072 5683184 1625296 5685392 +1626184 5683296 1626328 5683352 1626568 5683384 1626072 5683184 +1626184 5683296 1626328 5683352 1626072 5683184 1625296 5685392 +1626184 5683296 1626248 5683328 1626328 5683352 1626072 5683184 +1626248 5683328 1626296 5683360 1626328 5683352 1626072 5683184 +1626184 5683296 1626248 5683328 1626072 5683184 1625296 5685392 +1626328 5683352 1626568 5683384 1626072 5683184 1626248 5683328 +1626568 5683384 1626968 5683384 1627152 5680768 1626072 5683184 +1626968 5683384 1627248 5680800 1627152 5680768 1626072 5683184 +1626968 5683384 1627248 5680800 1626072 5683184 1626568 5683384 +1626968 5683384 1627752 5680904 1627248 5680800 1626072 5683184 +1627152 5680768 1626952 5680672 1626072 5683184 1627248 5680800 +1626568 5683384 1626968 5683384 1626072 5683184 1626328 5683352 +1626952 5680672 1626744 5680528 1626072 5683184 1627152 5680768 +1617424 5683592 1626048 5683112 1626576 5680264 1617376 5683520 +1626072 5683184 1626048 5683112 1617424 5683592 1620912 5685984 +1626048 5683112 1626576 5680264 1617424 5683592 1620912 5685984 +1617424 5683592 1620776 5686024 1620912 5685984 1626048 5683112 +1626072 5683184 1626048 5683112 1620912 5685984 1621048 5686008 +1626048 5683112 1617424 5683592 1620912 5685984 1621048 5686008 +1626072 5683184 1626048 5683112 1621048 5686008 1624912 5685464 +1626072 5683184 1626048 5683112 1624912 5685464 1624992 5685440 +1621048 5686008 1621112 5686056 1624912 5685464 1626048 5683112 +1626048 5683112 1620912 5685984 1621048 5686008 1624912 5685464 +1626576 5680264 1626048 5683112 1626072 5683184 1626592 5680320 +1626576 5680264 1617424 5683592 1626048 5683112 1626592 5680320 +1626072 5683184 1626632 5680392 1626592 5680320 1626048 5683112 +1626072 5683184 1626744 5680528 1626632 5680392 1626048 5683112 +1626072 5683184 1626952 5680672 1626744 5680528 1626048 5683112 +1626744 5680528 1626632 5680392 1626048 5683112 1626952 5680672 +1626632 5680392 1626592 5680320 1626048 5683112 1626744 5680528 +1626592 5680320 1626576 5680264 1626048 5683112 1626632 5680392 +1626072 5683184 1626952 5680672 1626048 5683112 1624912 5685464 +1626072 5683184 1627152 5680768 1626952 5680672 1626048 5683112 +1626952 5680672 1626744 5680528 1626048 5683112 1627152 5680768 +1626072 5683184 1627248 5680800 1627152 5680768 1626048 5683112 +1626072 5683184 1626968 5683384 1627248 5680800 1626048 5683112 +1626072 5683184 1626568 5683384 1626968 5683384 1626048 5683112 +1626968 5683384 1627248 5680800 1626048 5683112 1626568 5683384 +1626968 5683384 1627752 5680904 1627248 5680800 1626048 5683112 +1627248 5680800 1627152 5680768 1626048 5683112 1626968 5683384 +1626072 5683184 1626328 5683352 1626568 5683384 1626048 5683112 +1626072 5683184 1626248 5683328 1626328 5683352 1626048 5683112 +1626248 5683328 1626296 5683360 1626328 5683352 1626048 5683112 +1626072 5683184 1626184 5683296 1626248 5683328 1626048 5683112 +1626248 5683328 1626328 5683352 1626048 5683112 1626184 5683296 +1626568 5683384 1626968 5683384 1626048 5683112 1626328 5683352 +1626328 5683352 1626568 5683384 1626048 5683112 1626248 5683328 +1626072 5683184 1626184 5683296 1626048 5683112 1624912 5685464 +1627152 5680768 1626952 5680672 1626048 5683112 1627248 5680800 +1617424 5683592 1626056 5682992 1626576 5680264 1617376 5683520 +1626576 5680264 1617344 5683488 1617376 5683520 1626056 5682992 +1626048 5683112 1626056 5682992 1617424 5683592 1620912 5685984 +1626048 5683112 1626056 5682992 1620912 5685984 1621048 5686008 +1626056 5682992 1617424 5683592 1620912 5685984 1621048 5686008 +1626048 5683112 1626576 5680264 1626056 5682992 1621048 5686008 +1626576 5680264 1626056 5682992 1626048 5683112 1626592 5680320 +1626056 5682992 1621048 5686008 1626048 5683112 1626592 5680320 +1617424 5683592 1620912 5685984 1626056 5682992 1617376 5683520 +1626056 5682992 1626592 5680320 1626576 5680264 1617376 5683520 +1617424 5683592 1620776 5686024 1620912 5685984 1626056 5682992 +1626048 5683112 1626056 5682992 1621048 5686008 1624912 5685464 +1626048 5683112 1626632 5680392 1626592 5680320 1626056 5682992 +1626048 5683112 1626632 5680392 1626056 5682992 1621048 5686008 +1626592 5680320 1626576 5680264 1626056 5682992 1626632 5680392 +1626048 5683112 1626744 5680528 1626632 5680392 1626056 5682992 +1626048 5683112 1626952 5680672 1626744 5680528 1626056 5682992 +1626048 5683112 1626952 5680672 1626056 5682992 1621048 5686008 +1626048 5683112 1627152 5680768 1626952 5680672 1626056 5682992 +1626952 5680672 1626744 5680528 1626056 5682992 1627152 5680768 +1626048 5683112 1627152 5680768 1626056 5682992 1621048 5686008 +1626744 5680528 1626632 5680392 1626056 5682992 1626952 5680672 +1626632 5680392 1626592 5680320 1626056 5682992 1626744 5680528 +1626048 5683112 1627248 5680800 1627152 5680768 1626056 5682992 +1626048 5683112 1627248 5680800 1626056 5682992 1621048 5686008 +1627152 5680768 1626952 5680672 1626056 5682992 1627248 5680800 +1626048 5683112 1626968 5683384 1627248 5680800 1626056 5682992 +1626048 5683112 1626968 5683384 1626056 5682992 1621048 5686008 +1626048 5683112 1626568 5683384 1626968 5683384 1626056 5682992 +1626048 5683112 1626568 5683384 1626056 5682992 1621048 5686008 +1626048 5683112 1626328 5683352 1626568 5683384 1626056 5682992 +1626048 5683112 1626328 5683352 1626056 5682992 1621048 5686008 +1626568 5683384 1626968 5683384 1626056 5682992 1626328 5683352 +1626968 5683384 1627752 5680904 1627248 5680800 1626056 5682992 +1626968 5683384 1627248 5680800 1626056 5682992 1626568 5683384 +1626048 5683112 1626248 5683328 1626328 5683352 1626056 5682992 +1626248 5683328 1626296 5683360 1626328 5683352 1626056 5682992 +1626048 5683112 1626248 5683328 1626056 5682992 1621048 5686008 +1626048 5683112 1626184 5683296 1626248 5683328 1626056 5682992 +1626048 5683112 1626072 5683184 1626184 5683296 1626056 5682992 +1626048 5683112 1626072 5683184 1626056 5682992 1621048 5686008 +1626184 5683296 1626248 5683328 1626056 5682992 1626072 5683184 +1626328 5683352 1626568 5683384 1626056 5682992 1626248 5683328 +1626248 5683328 1626328 5683352 1626056 5682992 1626184 5683296 +1627248 5680800 1627152 5680768 1626056 5682992 1626968 5683384 +1617376 5683520 1626048 5682960 1626576 5680264 1617344 5683488 +1626056 5682992 1626048 5682960 1617376 5683520 1617424 5683592 +1626056 5682992 1626048 5682960 1617424 5683592 1620912 5685984 +1626048 5682960 1617376 5683520 1617424 5683592 1620912 5685984 +1626056 5682992 1626048 5682960 1620912 5685984 1621048 5686008 +1626056 5682992 1626048 5682960 1621048 5686008 1626048 5683112 +1626048 5682960 1620912 5685984 1621048 5686008 1626048 5683112 +1626056 5682992 1626576 5680264 1626048 5682960 1626048 5683112 +1626576 5680264 1626048 5682960 1626056 5682992 1626592 5680320 +1626056 5682992 1626632 5680392 1626592 5680320 1626048 5682960 +1626048 5682960 1626048 5683112 1626056 5682992 1626632 5680392 +1626048 5682960 1626576 5680264 1617376 5683520 1617424 5683592 +1626048 5682960 1617424 5683592 1620912 5685984 1621048 5686008 +1626576 5680264 1617376 5683520 1626048 5682960 1626592 5680320 +1626592 5680320 1626576 5680264 1626048 5682960 1626632 5680392 +1617424 5683592 1620776 5686024 1620912 5685984 1626048 5682960 +1621048 5686008 1624912 5685464 1626048 5683112 1626048 5682960 +1626048 5683112 1626056 5682992 1626048 5682960 1624912 5685464 +1621048 5686008 1624912 5685464 1626048 5682960 1620912 5685984 +1624912 5685464 1626072 5683184 1626048 5683112 1626048 5682960 +1621048 5686008 1621112 5686056 1624912 5685464 1626048 5682960 +1626056 5682992 1626744 5680528 1626632 5680392 1626048 5682960 +1626632 5680392 1626592 5680320 1626048 5682960 1626744 5680528 +1626056 5682992 1626744 5680528 1626048 5682960 1626048 5683112 +1626056 5682992 1626952 5680672 1626744 5680528 1626048 5682960 +1626056 5682992 1627152 5680768 1626952 5680672 1626048 5682960 +1626056 5682992 1627248 5680800 1627152 5680768 1626048 5682960 +1627152 5680768 1626952 5680672 1626048 5682960 1627248 5680800 +1626056 5682992 1627248 5680800 1626048 5682960 1626048 5683112 +1626952 5680672 1626744 5680528 1626048 5682960 1627152 5680768 +1626744 5680528 1626632 5680392 1626048 5682960 1626952 5680672 +1626056 5682992 1626968 5683384 1627248 5680800 1626048 5682960 +1627248 5680800 1627152 5680768 1626048 5682960 1626968 5683384 +1626056 5682992 1626968 5683384 1626048 5682960 1626048 5683112 +1626968 5683384 1627752 5680904 1627248 5680800 1626048 5682960 +1626056 5682992 1626568 5683384 1626968 5683384 1626048 5682960 +1626056 5682992 1626568 5683384 1626048 5682960 1626048 5683112 +1626056 5682992 1626328 5683352 1626568 5683384 1626048 5682960 +1626968 5683384 1627248 5680800 1626048 5682960 1626568 5683384 +1627152 5680768 1626080 5682896 1626048 5682960 1627248 5680800 +1626048 5682960 1626968 5683384 1627248 5680800 1626080 5682896 +1627248 5680800 1627152 5680768 1626080 5682896 1626968 5683384 +1626080 5682896 1626952 5680672 1626048 5682960 1626968 5683384 +1627152 5680768 1626952 5680672 1626080 5682896 1627248 5680800 +1626968 5683384 1627752 5680904 1627248 5680800 1626080 5682896 +1626048 5682960 1626080 5682896 1626952 5680672 1626744 5680528 +1626048 5682960 1626968 5683384 1626080 5682896 1626744 5680528 +1626080 5682896 1627152 5680768 1626952 5680672 1626744 5680528 +1626048 5682960 1626080 5682896 1626744 5680528 1626632 5680392 +1626048 5682960 1626080 5682896 1626632 5680392 1626592 5680320 +1626048 5682960 1626968 5683384 1626080 5682896 1626592 5680320 +1626048 5682960 1626080 5682896 1626592 5680320 1626576 5680264 +1626080 5682896 1626632 5680392 1626592 5680320 1626576 5680264 +1626048 5682960 1626968 5683384 1626080 5682896 1626576 5680264 +1626048 5682960 1626080 5682896 1626576 5680264 1617376 5683520 +1626080 5682896 1626952 5680672 1626744 5680528 1626632 5680392 +1626080 5682896 1626744 5680528 1626632 5680392 1626592 5680320 +1626048 5682960 1626568 5683384 1626968 5683384 1626080 5682896 +1626968 5683384 1627248 5680800 1626080 5682896 1626568 5683384 +1626048 5682960 1626568 5683384 1626080 5682896 1626576 5680264 +1626048 5682960 1626056 5682992 1626568 5683384 1626080 5682896 +1626048 5682960 1626056 5682992 1626080 5682896 1626576 5680264 +1626056 5682992 1626328 5683352 1626568 5683384 1626080 5682896 +1626056 5682992 1626248 5683328 1626328 5683352 1626080 5682896 +1626056 5682992 1626328 5683352 1626080 5682896 1626048 5682960 +1626568 5683384 1626968 5683384 1626080 5682896 1626328 5683352 +1626080 5682896 1626168 5682784 1627248 5680800 1627152 5680768 +1626968 5683384 1626168 5682784 1626080 5682896 1626568 5683384 +1626080 5682896 1626168 5682784 1627152 5680768 1626952 5680672 +1626168 5682784 1627248 5680800 1627152 5680768 1626952 5680672 +1626080 5682896 1626568 5683384 1626168 5682784 1626952 5680672 +1626168 5682784 1626968 5683384 1627248 5680800 1627152 5680768 +1626968 5683384 1627248 5680800 1626168 5682784 1626568 5683384 +1626080 5682896 1626168 5682784 1626952 5680672 1626744 5680528 +1626168 5682784 1627152 5680768 1626952 5680672 1626744 5680528 +1626080 5682896 1626568 5683384 1626168 5682784 1626744 5680528 +1627248 5680800 1626168 5682784 1626968 5683384 1627752 5680904 +1627248 5680800 1627152 5680768 1626168 5682784 1627752 5680904 +1626168 5682784 1626568 5683384 1626968 5683384 1627752 5680904 +1626968 5683384 1627944 5680984 1627752 5680904 1626168 5682784 +1627248 5680800 1626168 5682784 1627752 5680904 1627616 5680840 +1626080 5682896 1626168 5682784 1626744 5680528 1626632 5680392 +1626080 5682896 1626568 5683384 1626168 5682784 1626632 5680392 +1626168 5682784 1626952 5680672 1626744 5680528 1626632 5680392 +1626080 5682896 1626168 5682784 1626632 5680392 1626592 5680320 +1626080 5682896 1626168 5682784 1626592 5680320 1626576 5680264 +1626080 5682896 1626568 5683384 1626168 5682784 1626592 5680320 +1626168 5682784 1626744 5680528 1626632 5680392 1626592 5680320 +1626080 5682896 1626328 5683352 1626568 5683384 1626168 5682784 +1626568 5683384 1626968 5683384 1626168 5682784 1626328 5683352 +1626080 5682896 1626328 5683352 1626168 5682784 1626592 5680320 +1626080 5682896 1626056 5682992 1626328 5683352 1626168 5682784 +1626080 5682896 1626056 5682992 1626168 5682784 1626592 5680320 +1626056 5682992 1626248 5683328 1626328 5683352 1626168 5682784 +1626248 5683328 1626296 5683360 1626328 5683352 1626168 5682784 +1626056 5682992 1626248 5683328 1626168 5682784 1626080 5682896 +1626080 5682896 1626048 5682960 1626056 5682992 1626168 5682784 +1626056 5682992 1626184 5683296 1626248 5683328 1626168 5682784 +1626328 5683352 1626568 5683384 1626168 5682784 1626248 5683328 +1626968 5683384 1626224 5682776 1626168 5682784 1626568 5683384 +1626168 5682784 1626328 5683352 1626568 5683384 1626224 5682776 +1626224 5682776 1627752 5680904 1626168 5682784 1626328 5683352 +1626568 5683384 1626968 5683384 1626224 5682776 1626328 5683352 +1626968 5683384 1627752 5680904 1626224 5682776 1626568 5683384 +1627752 5680904 1626224 5682776 1626968 5683384 1627944 5680984 +1627752 5680904 1626168 5682784 1626224 5682776 1627944 5680984 +1626224 5682776 1626568 5683384 1626968 5683384 1627944 5680984 +1626968 5683384 1627064 5683416 1627944 5680984 1626224 5682776 +1626168 5682784 1626224 5682776 1627752 5680904 1627248 5680800 +1626168 5682784 1626224 5682776 1627248 5680800 1627152 5680768 +1626168 5682784 1626224 5682776 1627152 5680768 1626952 5680672 +1626168 5682784 1626224 5682776 1626952 5680672 1626744 5680528 +1626224 5682776 1627152 5680768 1626952 5680672 1626744 5680528 +1626168 5682784 1626328 5683352 1626224 5682776 1626744 5680528 +1626224 5682776 1627944 5680984 1627752 5680904 1627248 5680800 +1626168 5682784 1626224 5682776 1626744 5680528 1626632 5680392 +1626224 5682776 1627248 5680800 1627152 5680768 1626952 5680672 +1627752 5680904 1627616 5680840 1627248 5680800 1626224 5682776 +1626224 5682776 1627752 5680904 1627248 5680800 1627152 5680768 +1626168 5682784 1626248 5683328 1626328 5683352 1626224 5682776 +1626248 5683328 1626296 5683360 1626328 5683352 1626224 5682776 +1626328 5683352 1626568 5683384 1626224 5682776 1626248 5683328 +1626168 5682784 1626248 5683328 1626224 5682776 1626744 5680528 +1626168 5682784 1626056 5682992 1626248 5683328 1626224 5682776 +1626168 5682784 1626056 5682992 1626224 5682776 1626744 5680528 +1626168 5682784 1626080 5682896 1626056 5682992 1626224 5682776 +1626168 5682784 1626080 5682896 1626224 5682776 1626744 5680528 +1626056 5682992 1626248 5683328 1626224 5682776 1626080 5682896 +1626080 5682896 1626048 5682960 1626056 5682992 1626224 5682776 +1626056 5682992 1626184 5683296 1626248 5683328 1626224 5682776 +1626248 5683328 1626328 5683352 1626224 5682776 1626056 5682992 +1626968 5683384 1626424 5682800 1626224 5682776 1626568 5683384 +1626224 5682776 1626328 5683352 1626568 5683384 1626424 5682800 +1626224 5682776 1626248 5683328 1626328 5683352 1626424 5682800 +1626248 5683328 1626296 5683360 1626328 5683352 1626424 5682800 +1626328 5683352 1626568 5683384 1626424 5682800 1626248 5683328 +1626568 5683384 1626968 5683384 1626424 5682800 1626328 5683352 +1626424 5682800 1627944 5680984 1626224 5682776 1626248 5683328 +1627944 5680984 1626424 5682800 1626968 5683384 1627064 5683416 +1627944 5680984 1626224 5682776 1626424 5682800 1627064 5683416 +1627944 5680984 1626424 5682800 1627064 5683416 1627128 5683456 +1626224 5682776 1626424 5682800 1627944 5680984 1627752 5680904 +1626224 5682776 1626424 5682800 1627752 5680904 1627248 5680800 +1626224 5682776 1626248 5683328 1626424 5682800 1627248 5680800 +1626424 5682800 1627064 5683416 1627944 5680984 1627752 5680904 +1626424 5682800 1627944 5680984 1627752 5680904 1627248 5680800 +1627752 5680904 1627616 5680840 1627248 5680800 1626424 5682800 +1626968 5683384 1627064 5683416 1626424 5682800 1626568 5683384 +1626224 5682776 1626424 5682800 1627248 5680800 1627152 5680768 +1626424 5682800 1627752 5680904 1627248 5680800 1627152 5680768 +1626224 5682776 1626248 5683328 1626424 5682800 1627152 5680768 +1626224 5682776 1626424 5682800 1627152 5680768 1626952 5680672 +1626224 5682776 1626424 5682800 1626952 5680672 1626744 5680528 +1626224 5682776 1626248 5683328 1626424 5682800 1626952 5680672 +1626424 5682800 1627248 5680800 1627152 5680768 1626952 5680672 +1626224 5682776 1626056 5682992 1626248 5683328 1626424 5682800 +1626248 5683328 1626328 5683352 1626424 5682800 1626056 5682992 +1626224 5682776 1626056 5682992 1626424 5682800 1626952 5680672 +1626224 5682776 1626080 5682896 1626056 5682992 1626424 5682800 +1626056 5682992 1626184 5683296 1626248 5683328 1626424 5682800 +1626248 5683328 1626328 5683352 1626424 5682800 1626184 5683296 +1626056 5682992 1626072 5683184 1626184 5683296 1626424 5682800 +1626056 5682992 1626184 5683296 1626424 5682800 1626224 5682776 +1626424 5682800 1626632 5682864 1627944 5680984 1627752 5680904 +1626424 5682800 1627064 5683416 1626632 5682864 1627752 5680904 +1627064 5683416 1626632 5682864 1626424 5682800 1626968 5683384 +1626632 5682864 1627752 5680904 1626424 5682800 1626968 5683384 +1627944 5680984 1626632 5682864 1627064 5683416 1627128 5683456 +1626424 5682800 1626632 5682864 1627752 5680904 1627248 5680800 +1626424 5682800 1626632 5682864 1627248 5680800 1627152 5680768 +1626632 5682864 1627944 5680984 1627752 5680904 1627248 5680800 +1626424 5682800 1626968 5683384 1626632 5682864 1627152 5680768 +1626632 5682864 1627752 5680904 1627248 5680800 1627152 5680768 +1627752 5680904 1627616 5680840 1627248 5680800 1626632 5682864 +1626424 5682800 1626568 5683384 1626968 5683384 1626632 5682864 +1626424 5682800 1626328 5683352 1626568 5683384 1626632 5682864 +1626424 5682800 1626248 5683328 1626328 5683352 1626632 5682864 +1626424 5682800 1626328 5683352 1626632 5682864 1627152 5680768 +1626968 5683384 1627064 5683416 1626632 5682864 1626568 5683384 +1626568 5683384 1626968 5683384 1626632 5682864 1626328 5683352 +1626632 5682864 1627128 5683456 1627944 5680984 1627752 5680904 +1627064 5683416 1627128 5683456 1626632 5682864 1626968 5683384 +1626424 5682800 1626632 5682864 1627152 5680768 1626952 5680672 +1627944 5680984 1626632 5682864 1627128 5683456 1627192 5683512 +1627128 5683456 1627008 5683120 1626632 5682864 1627064 5683416 +1626632 5682864 1627008 5683120 1627944 5680984 1627752 5680904 +1627008 5683120 1627944 5680984 1626632 5682864 1627064 5683416 +1626632 5682864 1626968 5683384 1627064 5683416 1627008 5683120 +1626632 5682864 1626568 5683384 1626968 5683384 1627008 5683120 +1627064 5683416 1627128 5683456 1627008 5683120 1626968 5683384 +1626632 5682864 1626328 5683352 1626568 5683384 1627008 5683120 +1626632 5682864 1626568 5683384 1627008 5683120 1627944 5680984 +1626968 5683384 1627064 5683416 1627008 5683120 1626568 5683384 +1627944 5680984 1627008 5683120 1627128 5683456 1627192 5683512 +1627944 5680984 1627008 5683120 1627192 5683512 1628016 5680960 +1627192 5683512 1627256 5683616 1628016 5680960 1627008 5683120 +1627008 5683120 1627128 5683456 1627192 5683512 1628016 5680960 +1627944 5680984 1626632 5682864 1627008 5683120 1628016 5680960 +1627128 5683456 1627192 5683512 1627008 5683120 1627064 5683416 +1627128 5683456 1627136 5683472 1627192 5683512 1627008 5683120 +1627008 5683120 1627192 5683200 1628016 5680960 1627944 5680984 +1628016 5680960 1627192 5683200 1627192 5683512 1627256 5683616 +1627192 5683200 1627008 5683120 1627192 5683512 1627256 5683616 +1628016 5680960 1627192 5683200 1627256 5683616 1627296 5683696 +1628016 5680960 1627192 5683200 1627296 5683696 1628568 5685304 +1627192 5683200 1627192 5683512 1627256 5683616 1627296 5683696 +1627192 5683512 1627192 5683200 1627008 5683120 1627128 5683456 +1627192 5683512 1627256 5683616 1627192 5683200 1627128 5683456 +1627008 5683120 1627192 5683200 1627944 5680984 1626632 5682864 +1627008 5683120 1627128 5683456 1627192 5683200 1627944 5680984 +1627008 5683120 1627064 5683416 1627128 5683456 1627192 5683200 +1627008 5683120 1626968 5683384 1627064 5683416 1627192 5683200 +1627008 5683120 1626568 5683384 1626968 5683384 1627192 5683200 +1627128 5683456 1627192 5683512 1627192 5683200 1627064 5683416 +1627008 5683120 1626968 5683384 1627192 5683200 1627944 5680984 +1627064 5683416 1627128 5683456 1627192 5683200 1626968 5683384 +1627192 5683200 1627296 5683696 1628016 5680960 1627944 5680984 +1627192 5683512 1627192 5683200 1627128 5683456 1627136 5683472 +1628568 5685304 1627760 5683328 1627296 5683696 1627344 5683856 +1628568 5685304 1628016 5680960 1627760 5683328 1627344 5683856 +1627760 5683328 1628016 5680960 1627296 5683696 1627344 5683856 +1628568 5685304 1627760 5683328 1627344 5683856 1627344 5683896 +1628568 5685304 1628016 5680960 1627760 5683328 1627344 5683896 +1627760 5683328 1627296 5683696 1627344 5683856 1627344 5683896 +1627296 5683696 1627760 5683328 1628016 5680960 1627192 5683200 +1627296 5683696 1627344 5683856 1627760 5683328 1627192 5683200 +1628568 5685304 1627760 5683328 1627344 5683896 1627672 5685152 +1627296 5683696 1627760 5683328 1627192 5683200 1627256 5683616 +1627296 5683696 1627344 5683856 1627760 5683328 1627256 5683616 +1627760 5683328 1628016 5680960 1627192 5683200 1627256 5683616 +1627192 5683200 1627192 5683512 1627256 5683616 1627760 5683328 +1627192 5683200 1627128 5683456 1627192 5683512 1627760 5683328 +1627192 5683200 1627192 5683512 1627760 5683328 1628016 5680960 +1627256 5683616 1627296 5683696 1627760 5683328 1627192 5683512 +1627760 5683328 1628568 5685304 1628016 5680960 1627192 5683200 +1628016 5680960 1627760 5683328 1628568 5685304 1628096 5680872 +1627760 5683328 1627344 5683896 1628568 5685304 1628096 5680872 +1628568 5685304 1629712 5685944 1628096 5680872 1627760 5683328 +1628568 5685304 1629712 5685944 1627760 5683328 1627344 5683896 +1629712 5685944 1629840 5685992 1628096 5680872 1627760 5683328 +1628568 5685304 1629576 5685968 1629712 5685944 1627760 5683328 +1629712 5685944 1629840 5685992 1627760 5683328 1628568 5685304 +1629840 5685992 1630088 5686120 1628096 5680872 1627760 5683328 +1628016 5680960 1627192 5683200 1627760 5683328 1628096 5680872 +1628096 5680872 1628016 5680960 1627760 5683328 1629840 5685992 +1628016 5680960 1627944 5680984 1627192 5683200 1627760 5683328 +1627944 5680984 1627008 5683120 1627192 5683200 1627760 5683328 +1627192 5683200 1627192 5683512 1627760 5683328 1627944 5680984 +1628016 5680960 1627944 5680984 1627760 5683328 1628096 5680872 +1629840 5685992 1628024 5683416 1627760 5683328 1629712 5685944 +1628024 5683416 1628096 5680872 1627760 5683328 1629712 5685944 +1627760 5683328 1628568 5685304 1629712 5685944 1628024 5683416 +1627760 5683328 1627344 5683896 1628568 5685304 1628024 5683416 +1627760 5683328 1627344 5683896 1628024 5683416 1628096 5680872 +1627760 5683328 1627344 5683856 1627344 5683896 1628024 5683416 +1627344 5683896 1628568 5685304 1628024 5683416 1627344 5683856 +1627760 5683328 1627344 5683856 1628024 5683416 1628096 5680872 +1627760 5683328 1627296 5683696 1627344 5683856 1628024 5683416 +1629712 5685944 1629840 5685992 1628024 5683416 1628568 5685304 +1627344 5683896 1627672 5685152 1628568 5685304 1628024 5683416 +1627344 5683896 1627672 5685152 1628024 5683416 1627344 5683856 +1627344 5683896 1627384 5684864 1627672 5685152 1628024 5683416 +1627344 5683896 1627384 5684864 1628024 5683416 1627344 5683856 +1627384 5684864 1627560 5685136 1627672 5685152 1628024 5683416 +1627672 5685152 1628568 5685304 1628024 5683416 1627384 5684864 +1628568 5685304 1629576 5685968 1629712 5685944 1628024 5683416 +1628568 5685304 1629712 5685944 1628024 5683416 1627672 5685152 +1628096 5680872 1628024 5683416 1629840 5685992 1630088 5686120 +1628096 5680872 1628024 5683416 1630088 5686120 1628112 5680824 +1628096 5680872 1627760 5683328 1628024 5683416 1630088 5686120 +1627344 5683896 1627256 5684656 1627384 5684864 1628024 5683416 +1627672 5685152 1628032 5685392 1628568 5685304 1628024 5683416 +1629840 5685992 1630088 5686120 1628024 5683416 1629712 5685944 +1627760 5683328 1628024 5683416 1628096 5680872 1628016 5680960 +1627760 5683328 1627344 5683856 1628024 5683416 1628016 5680960 +1628024 5683416 1630088 5686120 1628096 5680872 1628016 5680960 +1627760 5683328 1628024 5683416 1628016 5680960 1627944 5680984 +1627760 5683328 1627344 5683856 1628024 5683416 1627944 5680984 +1628024 5683416 1628096 5680872 1628016 5680960 1627944 5680984 +1627760 5683328 1628024 5683416 1627944 5680984 1627192 5683200 +1628096 5680872 1628344 5683592 1630088 5686120 1628112 5680824 +1630088 5686120 1630152 5686160 1628112 5680824 1628344 5683592 +1630152 5686160 1628144 5680632 1628112 5680824 1628344 5683592 +1628112 5680824 1628096 5680872 1628344 5683592 1630152 5686160 +1628024 5683416 1628344 5683592 1628096 5680872 1628016 5680960 +1630088 5686120 1628344 5683592 1628024 5683416 1629840 5685992 +1628024 5683416 1629840 5685992 1628344 5683592 1628016 5680960 +1628024 5683416 1629712 5685944 1629840 5685992 1628344 5683592 +1628024 5683416 1628568 5685304 1629712 5685944 1628344 5683592 +1628568 5685304 1629576 5685968 1629712 5685944 1628344 5683592 +1628024 5683416 1627672 5685152 1628568 5685304 1628344 5683592 +1628568 5685304 1629712 5685944 1628344 5683592 1627672 5685152 +1628024 5683416 1627384 5684864 1627672 5685152 1628344 5683592 +1628024 5683416 1627344 5683896 1627384 5684864 1628344 5683592 +1628024 5683416 1627344 5683856 1627344 5683896 1628344 5683592 +1627384 5684864 1627560 5685136 1627672 5685152 1628344 5683592 +1627384 5684864 1627672 5685152 1628344 5683592 1627344 5683896 +1627672 5685152 1628568 5685304 1628344 5683592 1627384 5684864 +1629840 5685992 1630088 5686120 1628344 5683592 1629712 5685944 +1627344 5683896 1627256 5684656 1627384 5684864 1628344 5683592 +1627672 5685152 1628032 5685392 1628568 5685304 1628344 5683592 +1628024 5683416 1627344 5683896 1628344 5683592 1628016 5680960 +1629712 5685944 1629840 5685992 1628344 5683592 1628568 5685304 +1628096 5680872 1628016 5680960 1628344 5683592 1628112 5680824 +1628024 5683416 1628344 5683592 1628016 5680960 1627944 5680984 +1628344 5683592 1629840 5685992 1630088 5686120 1630152 5686160 +1628112 5680824 1628464 5683680 1630152 5686160 1628144 5680632 +1628112 5680824 1628344 5683592 1628464 5683680 1628144 5680632 +1628464 5683680 1628344 5683592 1630152 5686160 1628144 5680632 +1628112 5680824 1628464 5683680 1628144 5680632 1628112 5680744 +1630152 5686160 1628464 5683680 1628344 5683592 1630088 5686120 +1630152 5686160 1628144 5680632 1628464 5683680 1630088 5686120 +1628344 5683592 1628464 5683680 1628112 5680824 1628096 5680872 +1628464 5683680 1628144 5680632 1628112 5680824 1628096 5680872 +1628344 5683592 1628464 5683680 1628096 5680872 1628016 5680960 +1628464 5683680 1628096 5680872 1628344 5683592 1630088 5686120 +1630152 5686160 1630256 5686264 1628144 5680632 1628464 5683680 +1628344 5683592 1629840 5685992 1630088 5686120 1628464 5683680 +1630088 5686120 1630152 5686160 1628464 5683680 1629840 5685992 +1628344 5683592 1629712 5685944 1629840 5685992 1628464 5683680 +1628344 5683592 1628568 5685304 1629712 5685944 1628464 5683680 +1628344 5683592 1627672 5685152 1628568 5685304 1628464 5683680 +1628568 5685304 1629576 5685968 1629712 5685944 1628464 5683680 +1628344 5683592 1627384 5684864 1627672 5685152 1628464 5683680 +1627672 5685152 1628568 5685304 1628464 5683680 1627384 5684864 +1627384 5684864 1627560 5685136 1627672 5685152 1628464 5683680 +1628344 5683592 1627344 5683896 1627384 5684864 1628464 5683680 +1628344 5683592 1628024 5683416 1627344 5683896 1628464 5683680 +1627384 5684864 1627672 5685152 1628464 5683680 1627344 5683896 +1629712 5685944 1629840 5685992 1628464 5683680 1628568 5685304 +1627344 5683896 1627256 5684656 1627384 5684864 1628464 5683680 +1627672 5685152 1628032 5685392 1628568 5685304 1628464 5683680 +1628568 5685304 1629712 5685944 1628464 5683680 1627672 5685152 +1628344 5683592 1627344 5683896 1628464 5683680 1628096 5680872 +1629840 5685992 1630088 5686120 1628464 5683680 1629712 5685944 +1630152 5686160 1628744 5683904 1628464 5683680 1630088 5686120 +1628744 5683904 1628144 5680632 1628464 5683680 1630088 5686120 +1628464 5683680 1628744 5683904 1628144 5680632 1628112 5680824 +1628464 5683680 1628744 5683904 1628112 5680824 1628096 5680872 +1628464 5683680 1630088 5686120 1628744 5683904 1628096 5680872 +1628144 5680632 1628112 5680744 1628112 5680824 1628744 5683904 +1628744 5683904 1628144 5680632 1628112 5680824 1628096 5680872 +1628464 5683680 1629840 5685992 1630088 5686120 1628744 5683904 +1628464 5683680 1629840 5685992 1628744 5683904 1628096 5680872 +1630088 5686120 1630152 5686160 1628744 5683904 1629840 5685992 +1628464 5683680 1628744 5683904 1628096 5680872 1628344 5683592 +1628144 5680632 1628744 5683904 1630152 5686160 1630256 5686264 +1628144 5680632 1628744 5683904 1630256 5686264 1630304 5686344 +1628464 5683680 1629712 5685944 1629840 5685992 1628744 5683904 +1628464 5683680 1629712 5685944 1628744 5683904 1628096 5680872 +1629840 5685992 1630088 5686120 1628744 5683904 1629712 5685944 +1628464 5683680 1628568 5685304 1629712 5685944 1628744 5683904 +1628464 5683680 1628568 5685304 1628744 5683904 1628096 5680872 +1628568 5685304 1629576 5685968 1629712 5685944 1628744 5683904 +1628464 5683680 1627672 5685152 1628568 5685304 1628744 5683904 +1628464 5683680 1627384 5684864 1627672 5685152 1628744 5683904 +1627384 5684864 1627560 5685136 1627672 5685152 1628744 5683904 +1628464 5683680 1627384 5684864 1628744 5683904 1628096 5680872 +1628464 5683680 1627344 5683896 1627384 5684864 1628744 5683904 +1628568 5685304 1629712 5685944 1628744 5683904 1627672 5685152 +1627672 5685152 1628032 5685392 1628568 5685304 1628744 5683904 +1627672 5685152 1628568 5685304 1628744 5683904 1627384 5684864 +1629712 5685944 1629840 5685992 1628744 5683904 1628568 5685304 +1628744 5683904 1630256 5686264 1628144 5680632 1628112 5680824 +1630152 5686160 1630256 5686264 1628744 5683904 1630088 5686120 +1628144 5680632 1628856 5684016 1630256 5686264 1630304 5686344 +1630256 5686264 1628856 5684016 1628744 5683904 1630152 5686160 +1630256 5686264 1628144 5680632 1628856 5684016 1630152 5686160 +1628744 5683904 1628856 5684016 1628144 5680632 1628112 5680824 +1628144 5680632 1628112 5680744 1628112 5680824 1628856 5684016 +1628744 5683904 1628856 5684016 1628112 5680824 1628096 5680872 +1628744 5683904 1628856 5684016 1628096 5680872 1628464 5683680 +1628856 5684016 1630256 5686264 1628144 5680632 1628112 5680824 +1628856 5684016 1628144 5680632 1628112 5680824 1628096 5680872 +1628856 5684016 1628096 5680872 1628744 5683904 1630152 5686160 +1628744 5683904 1630088 5686120 1630152 5686160 1628856 5684016 +1628744 5683904 1629840 5685992 1630088 5686120 1628856 5684016 +1628744 5683904 1629712 5685944 1629840 5685992 1628856 5684016 +1629840 5685992 1630088 5686120 1628856 5684016 1629712 5685944 +1630152 5686160 1630256 5686264 1628856 5684016 1630088 5686120 +1628744 5683904 1628568 5685304 1629712 5685944 1628856 5684016 +1629712 5685944 1629840 5685992 1628856 5684016 1628568 5685304 +1628568 5685304 1629576 5685968 1629712 5685944 1628856 5684016 +1628744 5683904 1627672 5685152 1628568 5685304 1628856 5684016 +1627672 5685152 1628032 5685392 1628568 5685304 1628856 5684016 +1628744 5683904 1627384 5684864 1627672 5685152 1628856 5684016 +1628568 5685304 1629712 5685944 1628856 5684016 1627672 5685152 +1628744 5683904 1627672 5685152 1628856 5684016 1628096 5680872 +1630088 5686120 1630152 5686160 1628856 5684016 1629840 5685992 +1628856 5684016 1628904 5684176 1629712 5685944 1629840 5685992 +1628856 5684016 1628904 5684176 1629840 5685992 1630088 5686120 +1628856 5684016 1628568 5685304 1628904 5684176 1630088 5686120 +1628904 5684176 1628568 5685304 1629712 5685944 1629840 5685992 +1628904 5684176 1629712 5685944 1629840 5685992 1630088 5686120 +1629712 5685944 1628904 5684176 1628568 5685304 1629576 5685968 +1628568 5685304 1628904 5684176 1628856 5684016 1627672 5685152 +1628904 5684176 1630088 5686120 1628856 5684016 1627672 5685152 +1628568 5685304 1629712 5685944 1628904 5684176 1627672 5685152 +1628856 5684016 1628744 5683904 1627672 5685152 1628904 5684176 +1628856 5684016 1628744 5683904 1628904 5684176 1630088 5686120 +1628568 5685304 1628904 5684176 1627672 5685152 1628032 5685392 +1628744 5683904 1627384 5684864 1627672 5685152 1628904 5684176 +1627672 5685152 1628568 5685304 1628904 5684176 1628744 5683904 +1628856 5684016 1628904 5684176 1630088 5686120 1630152 5686160 +1628904 5684176 1629840 5685992 1630088 5686120 1630152 5686160 +1628856 5684016 1628744 5683904 1628904 5684176 1630152 5686160 +1628856 5684016 1628904 5684176 1630152 5686160 1630256 5686264 +1628904 5684176 1628920 5684280 1629712 5685944 1629840 5685992 +1628904 5684176 1628568 5685304 1628920 5684280 1629840 5685992 +1628568 5685304 1628920 5684280 1628904 5684176 1627672 5685152 +1628568 5685304 1629712 5685944 1628920 5684280 1627672 5685152 +1628920 5684280 1629840 5685992 1628904 5684176 1627672 5685152 +1628920 5684280 1628568 5685304 1629712 5685944 1629840 5685992 +1628904 5684176 1628920 5684280 1629840 5685992 1630088 5686120 +1628904 5684176 1628920 5684280 1630088 5686120 1630152 5686160 +1628920 5684280 1629712 5685944 1629840 5685992 1630088 5686120 +1628904 5684176 1627672 5685152 1628920 5684280 1630152 5686160 +1628920 5684280 1629840 5685992 1630088 5686120 1630152 5686160 +1629712 5685944 1628920 5684280 1628568 5685304 1629576 5685968 +1628920 5684280 1627672 5685152 1628568 5685304 1629576 5685968 +1628568 5685304 1629512 5686008 1629576 5685968 1628920 5684280 +1629712 5685944 1629840 5685992 1628920 5684280 1629576 5685968 +1628568 5685304 1628920 5684280 1627672 5685152 1628032 5685392 +1628904 5684176 1628744 5683904 1627672 5685152 1628920 5684280 +1628904 5684176 1628744 5683904 1628920 5684280 1630152 5686160 +1627672 5685152 1628568 5685304 1628920 5684280 1628744 5683904 +1628904 5684176 1628856 5684016 1628744 5683904 1628920 5684280 +1628744 5683904 1627384 5684864 1627672 5685152 1628920 5684280 +1628744 5683904 1628464 5683680 1627384 5684864 1628920 5684280 +1627384 5684864 1627560 5685136 1627672 5685152 1628920 5684280 +1627672 5685152 1628568 5685304 1628920 5684280 1627384 5684864 +1628744 5683904 1627384 5684864 1628920 5684280 1628904 5684176 +1628904 5684176 1628920 5684280 1630152 5686160 1628856 5684016 +1628568 5685304 1628904 5684424 1628920 5684280 1627672 5685152 +1629576 5685968 1628904 5684424 1628568 5685304 1629512 5686008 +1628568 5685304 1629576 5685968 1628904 5684424 1627672 5685152 +1628920 5684280 1627384 5684864 1627672 5685152 1628904 5684424 +1627384 5684864 1627560 5685136 1627672 5685152 1628904 5684424 +1627672 5685152 1628568 5685304 1628904 5684424 1627384 5684864 +1628904 5684424 1629576 5685968 1628920 5684280 1627384 5684864 +1628920 5684280 1628904 5684424 1629576 5685968 1629712 5685944 +1628904 5684424 1628568 5685304 1629576 5685968 1629712 5685944 +1628920 5684280 1628904 5684424 1629712 5685944 1629840 5685992 +1628920 5684280 1628904 5684424 1629840 5685992 1630088 5686120 +1628920 5684280 1627384 5684864 1628904 5684424 1629840 5685992 +1628904 5684424 1629576 5685968 1629712 5685944 1629840 5685992 +1628568 5685304 1628904 5684424 1627672 5685152 1628032 5685392 +1628920 5684280 1628744 5683904 1627384 5684864 1628904 5684424 +1628744 5683904 1628464 5683680 1627384 5684864 1628904 5684424 +1627384 5684864 1627672 5685152 1628904 5684424 1628464 5683680 +1628920 5684280 1628744 5683904 1628904 5684424 1629840 5685992 +1628464 5683680 1627344 5683896 1627384 5684864 1628904 5684424 +1628744 5683904 1628464 5683680 1628904 5684424 1628920 5684280 +1628920 5684280 1628904 5684176 1628744 5683904 1628904 5684424 +1628920 5684280 1628904 5684176 1628904 5684424 1629840 5685992 +1628904 5684176 1628856 5684016 1628744 5683904 1628904 5684424 +1628744 5683904 1628464 5683680 1628904 5684424 1628904 5684176 +1628904 5684424 1628864 5684536 1629576 5685968 1629712 5685944 +1628904 5684424 1628568 5685304 1628864 5684536 1629712 5685944 +1629576 5685968 1628864 5684536 1628568 5685304 1629512 5686008 +1628568 5685304 1628864 5684536 1628904 5684424 1627672 5685152 +1628904 5684424 1627384 5684864 1627672 5685152 1628864 5684536 +1627384 5684864 1627560 5685136 1627672 5685152 1628864 5684536 +1628864 5684536 1629712 5685944 1628904 5684424 1627384 5684864 +1627672 5685152 1628568 5685304 1628864 5684536 1627384 5684864 +1628864 5684536 1628568 5685304 1629576 5685968 1629712 5685944 +1628568 5685304 1629576 5685968 1628864 5684536 1627672 5685152 +1628904 5684424 1628464 5683680 1627384 5684864 1628864 5684536 +1628904 5684424 1628744 5683904 1628464 5683680 1628864 5684536 +1627384 5684864 1627672 5685152 1628864 5684536 1628464 5683680 +1628904 5684424 1628744 5683904 1628864 5684536 1629712 5685944 +1628464 5683680 1627384 5684864 1628864 5684536 1628744 5683904 +1628904 5684424 1628864 5684536 1629712 5685944 1629840 5685992 +1628464 5683680 1627344 5683896 1627384 5684864 1628864 5684536 +1628568 5685304 1628864 5684536 1627672 5685152 1628032 5685392 +1628904 5684424 1628904 5684176 1628744 5683904 1628864 5684536 +1627672 5685152 1628792 5684608 1628864 5684536 1627384 5684864 +1627672 5685152 1628792 5684608 1627384 5684864 1627560 5685136 +1628864 5684536 1628464 5683680 1627384 5684864 1628792 5684608 +1627672 5685152 1628568 5685304 1628792 5684608 1627384 5684864 +1627384 5684864 1627672 5685152 1628792 5684608 1628464 5683680 +1628792 5684608 1628568 5685304 1628864 5684536 1628464 5683680 +1628864 5684536 1628792 5684608 1628568 5685304 1629576 5685968 +1628792 5684608 1627672 5685152 1628568 5685304 1629576 5685968 +1628568 5685304 1629512 5686008 1629576 5685968 1628792 5684608 +1628864 5684536 1628792 5684608 1629576 5685968 1629712 5685944 +1628864 5684536 1628464 5683680 1628792 5684608 1629576 5685968 +1628864 5684536 1628744 5683904 1628464 5683680 1628792 5684608 +1628864 5684536 1628904 5684424 1628744 5683904 1628792 5684608 +1628464 5683680 1627384 5684864 1628792 5684608 1628744 5683904 +1628864 5684536 1628904 5684424 1628792 5684608 1629576 5685968 +1628744 5683904 1628464 5683680 1628792 5684608 1628904 5684424 +1628464 5683680 1627344 5683896 1627384 5684864 1628792 5684608 +1628568 5685304 1628792 5684608 1627672 5685152 1628032 5685392 +1628568 5685304 1629576 5685968 1628792 5684608 1628032 5685392 +1628792 5684608 1627384 5684864 1627672 5685152 1628032 5685392 +1628904 5684424 1628904 5684176 1628744 5683904 1628792 5684608 +1628904 5684424 1628904 5684176 1628792 5684608 1628864 5684536 +1628744 5683904 1628464 5683680 1628792 5684608 1628904 5684176 +1628904 5684176 1628856 5684016 1628744 5683904 1628792 5684608 +1628904 5684424 1628920 5684280 1628904 5684176 1628792 5684608 +1628904 5684424 1628920 5684280 1628792 5684608 1628864 5684536 +1628904 5684176 1628744 5683904 1628792 5684608 1628920 5684280 +1628568 5685304 1628792 5684608 1628032 5685392 1628232 5685464 +1627672 5685152 1628744 5684624 1627384 5684864 1627560 5685136 +1628792 5684608 1628744 5684624 1627672 5685152 1628032 5685392 +1628792 5684608 1627384 5684864 1628744 5684624 1628032 5685392 +1628744 5684624 1627384 5684864 1627672 5685152 1628032 5685392 +1627384 5684864 1628744 5684624 1628792 5684608 1628464 5683680 +1628792 5684608 1628744 5683904 1628464 5683680 1628744 5684624 +1628744 5684624 1628032 5685392 1628792 5684608 1628744 5683904 +1627384 5684864 1627672 5685152 1628744 5684624 1628464 5683680 +1628464 5683680 1627384 5684864 1628744 5684624 1628744 5683904 +1628792 5684608 1628904 5684176 1628744 5683904 1628744 5684624 +1628744 5683904 1628464 5683680 1628744 5684624 1628904 5684176 +1628792 5684608 1628904 5684176 1628744 5684624 1628032 5685392 +1627384 5684864 1628744 5684624 1628464 5683680 1627344 5683896 +1627384 5684864 1627672 5685152 1628744 5684624 1627344 5683896 +1628744 5684624 1628744 5683904 1628464 5683680 1627344 5683896 +1628464 5683680 1628344 5683592 1627344 5683896 1628744 5684624 +1628904 5684176 1628856 5684016 1628744 5683904 1628744 5684624 +1627384 5684864 1628744 5684624 1627344 5683896 1627256 5684656 +1628792 5684608 1628744 5684624 1628032 5685392 1628568 5685304 +1628792 5684608 1628744 5684624 1628568 5685304 1629576 5685968 +1628792 5684608 1628904 5684176 1628744 5684624 1628568 5685304 +1628744 5684624 1627672 5685152 1628032 5685392 1628568 5685304 +1628792 5684608 1628920 5684280 1628904 5684176 1628744 5684624 +1628792 5684608 1628920 5684280 1628744 5684624 1628568 5685304 +1628904 5684176 1628744 5683904 1628744 5684624 1628920 5684280 +1628792 5684608 1628904 5684424 1628920 5684280 1628744 5684624 +1628792 5684608 1628864 5684536 1628904 5684424 1628744 5684624 +1628792 5684608 1628864 5684536 1628744 5684624 1628568 5685304 +1628920 5684280 1628904 5684176 1628744 5684624 1628904 5684424 +1628904 5684424 1628920 5684280 1628744 5684624 1628864 5684536 +1628032 5685392 1628232 5685464 1628568 5685304 1628744 5684624 +1628464 5683680 1628624 5684544 1628744 5684624 1628744 5683904 +1628744 5684624 1628904 5684176 1628744 5683904 1628624 5684544 +1628624 5684544 1627344 5683896 1628744 5684624 1628904 5684176 +1628744 5683904 1628464 5683680 1628624 5684544 1628904 5684176 +1628744 5684624 1628920 5684280 1628904 5684176 1628624 5684544 +1628904 5684176 1628744 5683904 1628624 5684544 1628920 5684280 +1628744 5684624 1628920 5684280 1628624 5684544 1627344 5683896 +1627344 5683896 1628624 5684544 1628464 5683680 1628344 5683592 +1628464 5683680 1627344 5683896 1628624 5684544 1628744 5683904 +1628744 5684624 1628624 5684544 1627344 5683896 1627384 5684864 +1628744 5684624 1628920 5684280 1628624 5684544 1627384 5684864 +1628744 5684624 1628624 5684544 1627384 5684864 1627672 5685152 +1627384 5684864 1627560 5685136 1627672 5685152 1628624 5684544 +1628744 5684624 1628624 5684544 1627672 5685152 1628032 5685392 +1628744 5684624 1628624 5684544 1628032 5685392 1628568 5685304 +1628624 5684544 1627672 5685152 1628032 5685392 1628568 5685304 +1628744 5684624 1628920 5684280 1628624 5684544 1628568 5685304 +1628624 5684544 1627384 5684864 1627672 5685152 1628032 5685392 +1628624 5684544 1628464 5683680 1627344 5683896 1627384 5684864 +1628624 5684544 1627344 5683896 1627384 5684864 1627672 5685152 +1628904 5684176 1628856 5684016 1628744 5683904 1628624 5684544 +1627344 5683896 1627256 5684656 1627384 5684864 1628624 5684544 +1627344 5683896 1627256 5684656 1628624 5684544 1628464 5683680 +1627384 5684864 1627672 5685152 1628624 5684544 1627256 5684656 +1627344 5683896 1627184 5684304 1627256 5684656 1628624 5684544 +1628744 5684624 1628624 5684544 1628568 5685304 1628792 5684608 +1628744 5684624 1628904 5684424 1628920 5684280 1628624 5684544 +1628744 5684624 1628904 5684424 1628624 5684544 1628568 5685304 +1628920 5684280 1628904 5684176 1628624 5684544 1628904 5684424 +1628744 5684624 1628864 5684536 1628904 5684424 1628624 5684544 +1628744 5684624 1628792 5684608 1628864 5684536 1628624 5684544 +1628744 5684624 1628792 5684608 1628624 5684544 1628568 5685304 +1628904 5684424 1628920 5684280 1628624 5684544 1628864 5684536 +1628864 5684536 1628904 5684424 1628624 5684544 1628792 5684608 +1628032 5685392 1628232 5685464 1628568 5685304 1628624 5684544 +1627344 5683896 1628536 5684504 1628624 5684544 1628464 5683680 +1628536 5684504 1627256 5684656 1628624 5684544 1628464 5683680 +1627344 5683896 1628536 5684504 1628464 5683680 1628344 5683592 +1627344 5683896 1628536 5684504 1628344 5683592 1628024 5683416 +1628536 5684504 1628624 5684544 1628464 5683680 1628344 5683592 +1628624 5684544 1628744 5683904 1628464 5683680 1628536 5684504 +1628464 5683680 1628344 5683592 1628536 5684504 1628744 5683904 +1628624 5684544 1628744 5683904 1628536 5684504 1627256 5684656 +1628624 5684544 1628904 5684176 1628744 5683904 1628536 5684504 +1628624 5684544 1628920 5684280 1628904 5684176 1628536 5684504 +1628624 5684544 1628920 5684280 1628536 5684504 1627256 5684656 +1628904 5684176 1628744 5683904 1628536 5684504 1628920 5684280 +1628624 5684544 1628904 5684424 1628920 5684280 1628536 5684504 +1628744 5683904 1628464 5683680 1628536 5684504 1628904 5684176 +1627344 5683896 1627256 5684656 1628536 5684504 1628344 5683592 +1628904 5684176 1628856 5684016 1628744 5683904 1628536 5684504 +1628904 5684176 1628856 5684016 1628536 5684504 1628920 5684280 +1628744 5683904 1628464 5683680 1628536 5684504 1628856 5684016 +1627256 5684656 1628536 5684504 1627344 5683896 1627184 5684304 +1627256 5684656 1628624 5684544 1628536 5684504 1627184 5684304 +1628536 5684504 1628344 5683592 1627344 5683896 1627184 5684304 +1627256 5684656 1628536 5684504 1627184 5684304 1627216 5684560 +1628624 5684544 1628536 5684504 1627256 5684656 1627384 5684864 +1628624 5684544 1628920 5684280 1628536 5684504 1627384 5684864 +1628536 5684504 1627184 5684304 1627256 5684656 1627384 5684864 +1628624 5684544 1628536 5684504 1627384 5684864 1627672 5685152 +1627384 5684864 1627560 5685136 1627672 5685152 1628536 5684504 +1628624 5684544 1628536 5684504 1627672 5685152 1628032 5685392 +1628624 5684544 1628536 5684504 1628032 5685392 1628568 5685304 +1628624 5684544 1628536 5684504 1628568 5685304 1628744 5684624 +1628536 5684504 1627672 5685152 1628032 5685392 1628568 5685304 +1628624 5684544 1628920 5684280 1628536 5684504 1628568 5685304 +1628536 5684504 1627384 5684864 1627672 5685152 1628032 5685392 +1628536 5684504 1627256 5684656 1627384 5684864 1627672 5685152 +1628032 5685392 1628232 5685464 1628568 5685304 1628536 5684504 +1627344 5683896 1627272 5683976 1627184 5684304 1628536 5684504 +1628536 5684504 1628464 5684512 1627256 5684656 1627384 5684864 +1628464 5684512 1627184 5684304 1627256 5684656 1627384 5684864 +1628536 5684504 1627184 5684304 1628464 5684512 1627384 5684864 +1627256 5684656 1628464 5684512 1627184 5684304 1627216 5684560 +1627256 5684656 1627384 5684864 1628464 5684512 1627216 5684560 +1628464 5684512 1628536 5684504 1627184 5684304 1627216 5684560 +1627184 5684304 1628464 5684512 1628536 5684504 1627344 5683896 +1627184 5684304 1627216 5684560 1628464 5684512 1627344 5683896 +1628464 5684512 1627384 5684864 1628536 5684504 1627344 5683896 +1628536 5684504 1628344 5683592 1627344 5683896 1628464 5684512 +1628344 5683592 1628024 5683416 1627344 5683896 1628464 5684512 +1628536 5684504 1628464 5683680 1628344 5683592 1628464 5684512 +1628536 5684504 1628744 5683904 1628464 5683680 1628464 5684512 +1628464 5683680 1628344 5683592 1628464 5684512 1628744 5683904 +1628536 5684504 1628856 5684016 1628744 5683904 1628464 5684512 +1628536 5684504 1628744 5683904 1628464 5684512 1627384 5684864 +1628344 5683592 1627344 5683896 1628464 5684512 1628464 5683680 +1627344 5683896 1627184 5684304 1628464 5684512 1628344 5683592 +1628536 5684504 1628464 5684512 1627384 5684864 1627672 5685152 +1627384 5684864 1627560 5685136 1627672 5685152 1628464 5684512 +1628464 5684512 1627256 5684656 1627384 5684864 1627672 5685152 +1628536 5684504 1628744 5683904 1628464 5684512 1627672 5685152 +1628536 5684504 1628464 5684512 1627672 5685152 1628032 5685392 +1628536 5684504 1628464 5684512 1628032 5685392 1628568 5685304 +1628536 5684504 1628464 5684512 1628568 5685304 1628624 5684544 +1628568 5685304 1628744 5684624 1628624 5684544 1628464 5684512 +1628624 5684544 1628536 5684504 1628464 5684512 1628744 5684624 +1628464 5684512 1628032 5685392 1628568 5685304 1628744 5684624 +1628536 5684504 1628744 5683904 1628464 5684512 1628624 5684544 +1628464 5684512 1627672 5685152 1628032 5685392 1628568 5685304 +1628464 5684512 1627384 5684864 1627672 5685152 1628032 5685392 +1628568 5685304 1628792 5684608 1628744 5684624 1628464 5684512 +1628032 5685392 1628232 5685464 1628568 5685304 1628464 5684512 +1627184 5684304 1628464 5684512 1627344 5683896 1627272 5683976 +1628464 5684512 1628416 5684552 1628032 5685392 1628568 5685304 +1628464 5684512 1628416 5684552 1628568 5685304 1628744 5684624 +1628464 5684512 1628416 5684552 1628744 5684624 1628624 5684544 +1628464 5684512 1628416 5684552 1628624 5684544 1628536 5684504 +1628416 5684552 1628744 5684624 1628624 5684544 1628536 5684504 +1628416 5684552 1628568 5685304 1628744 5684624 1628624 5684544 +1628464 5684512 1627672 5685152 1628416 5684552 1628536 5684504 +1628416 5684552 1627672 5685152 1628032 5685392 1628568 5685304 +1628416 5684552 1628032 5685392 1628568 5685304 1628744 5684624 +1627672 5685152 1628416 5684552 1628464 5684512 1627384 5684864 +1627672 5685152 1628416 5684552 1627384 5684864 1627560 5685136 +1627672 5685152 1628032 5685392 1628416 5684552 1627384 5684864 +1628416 5684552 1628536 5684504 1628464 5684512 1627384 5684864 +1628464 5684512 1627256 5684656 1627384 5684864 1628416 5684552 +1628464 5684512 1627216 5684560 1627256 5684656 1628416 5684552 +1628464 5684512 1627216 5684560 1628416 5684552 1628536 5684504 +1627256 5684656 1627384 5684864 1628416 5684552 1627216 5684560 +1628464 5684512 1627184 5684304 1627216 5684560 1628416 5684552 +1627216 5684560 1627256 5684656 1628416 5684552 1627184 5684304 +1628464 5684512 1627184 5684304 1628416 5684552 1628536 5684504 +1628464 5684512 1627344 5683896 1627184 5684304 1628416 5684552 +1628464 5684512 1627344 5683896 1628416 5684552 1628536 5684504 +1627184 5684304 1627216 5684560 1628416 5684552 1627344 5683896 +1628464 5684512 1628344 5683592 1627344 5683896 1628416 5684552 +1628344 5683592 1628024 5683416 1627344 5683896 1628416 5684552 +1628464 5684512 1628344 5683592 1628416 5684552 1628536 5684504 +1627344 5683896 1627184 5684304 1628416 5684552 1628344 5683592 +1628464 5684512 1628464 5683680 1628344 5683592 1628416 5684552 +1628464 5684512 1628744 5683904 1628464 5683680 1628416 5684552 +1628464 5684512 1628464 5683680 1628416 5684552 1628536 5684504 +1628344 5683592 1627344 5683896 1628416 5684552 1628464 5683680 +1627384 5684864 1627672 5685152 1628416 5684552 1627256 5684656 +1628568 5685304 1628792 5684608 1628744 5684624 1628416 5684552 +1628032 5685392 1628232 5685464 1628568 5685304 1628416 5684552 +1627344 5683896 1627272 5683976 1627184 5684304 1628416 5684552 +1628032 5685392 1628416 5684608 1628416 5684552 1627672 5685152 +1628416 5684608 1628568 5685304 1628416 5684552 1627672 5685152 +1628416 5684552 1627384 5684864 1627672 5685152 1628416 5684608 +1627384 5684864 1627560 5685136 1627672 5685152 1628416 5684608 +1628416 5684552 1627384 5684864 1628416 5684608 1628568 5685304 +1627672 5685152 1628032 5685392 1628416 5684608 1627384 5684864 +1628416 5684552 1628416 5684608 1628568 5685304 1628744 5684624 +1628416 5684552 1628416 5684608 1628744 5684624 1628624 5684544 +1628416 5684552 1628416 5684608 1628624 5684544 1628536 5684504 +1628416 5684552 1628416 5684608 1628536 5684504 1628464 5684512 +1628416 5684608 1628624 5684544 1628536 5684504 1628464 5684512 +1628416 5684608 1628744 5684624 1628624 5684544 1628536 5684504 +1628416 5684552 1627384 5684864 1628416 5684608 1628464 5684512 +1628416 5684608 1628032 5685392 1628568 5685304 1628744 5684624 +1628416 5684608 1628568 5685304 1628744 5684624 1628624 5684544 +1628416 5684552 1627256 5684656 1627384 5684864 1628416 5684608 +1628568 5685304 1628792 5684608 1628744 5684624 1628416 5684608 +1628032 5685392 1628568 5685304 1628416 5684608 1627672 5685152 +1628568 5685304 1628416 5684608 1628032 5685392 1628232 5685464 +1628568 5685304 1628624 5684968 1628416 5684608 1628032 5685392 +1628624 5684968 1628744 5684624 1628416 5684608 1628032 5685392 +1628416 5684608 1628624 5684968 1628744 5684624 1628624 5684544 +1628744 5684624 1628624 5684968 1628568 5685304 1628792 5684608 +1628568 5685304 1629576 5685968 1628792 5684608 1628624 5684968 +1628568 5685304 1629512 5686008 1629576 5685968 1628624 5684968 +1629576 5685968 1628864 5684536 1628792 5684608 1628624 5684968 +1629576 5685968 1628864 5684536 1628624 5684968 1628568 5685304 +1629576 5685968 1629712 5685944 1628864 5684536 1628624 5684968 +1628792 5684608 1628744 5684624 1628624 5684968 1628864 5684536 +1628416 5684608 1627672 5685152 1628032 5685392 1628624 5684968 +1628744 5684624 1628416 5684608 1628624 5684968 1628792 5684608 +1628568 5685304 1629576 5685968 1628624 5684968 1628032 5685392 +1628568 5685304 1628624 5684968 1628032 5685392 1628232 5685464 +1628624 5684968 1628640 5685080 1629576 5685968 1628864 5684536 +1629576 5685968 1628640 5685080 1628568 5685304 1629512 5686008 +1628640 5685080 1628568 5685304 1629576 5685968 1628864 5684536 +1629576 5685968 1629712 5685944 1628864 5684536 1628640 5685080 +1629712 5685944 1628904 5684424 1628864 5684536 1628640 5685080 +1628864 5684536 1628624 5684968 1628640 5685080 1629712 5685944 +1629576 5685968 1629712 5685944 1628640 5685080 1628568 5685304 +1628624 5684968 1628640 5685080 1628864 5684536 1628792 5684608 +1628640 5685080 1629712 5685944 1628864 5684536 1628792 5684608 +1628624 5684968 1628640 5685080 1628792 5684608 1628744 5684624 +1628624 5684968 1628568 5685304 1628640 5685080 1628792 5684608 +1628568 5685304 1628640 5685080 1628624 5684968 1628032 5685392 +1628568 5685304 1629576 5685968 1628640 5685080 1628032 5685392 +1628624 5684968 1628416 5684608 1628032 5685392 1628640 5685080 +1628640 5685080 1628792 5684608 1628624 5684968 1628032 5685392 +1628568 5685304 1628640 5685080 1628032 5685392 1628232 5685464 +1628568 5685304 1628616 5685200 1628640 5685080 1628032 5685392 +1628616 5685200 1629576 5685968 1628640 5685080 1628032 5685392 +1628568 5685304 1629576 5685968 1628616 5685200 1628032 5685392 +1629576 5685968 1628616 5685200 1628568 5685304 1629512 5686008 +1628616 5685200 1628032 5685392 1628568 5685304 1629512 5686008 +1628640 5685080 1628616 5685200 1629576 5685968 1629712 5685944 +1628568 5685304 1628504 5685400 1629512 5686008 1628616 5685200 +1628640 5685080 1628624 5684968 1628032 5685392 1628616 5685200 +1628640 5685080 1628624 5684968 1628616 5685200 1629576 5685968 +1628032 5685392 1628568 5685304 1628616 5685200 1628624 5684968 +1628624 5684968 1628416 5684608 1628032 5685392 1628616 5685200 +1629576 5685968 1628640 5685080 1628616 5685200 1629512 5686008 +1628568 5685304 1628616 5685200 1628032 5685392 1628232 5685464 +1628616 5685200 1628624 5684968 1628032 5685392 1628232 5685464 +1628568 5685304 1629512 5686008 1628616 5685200 1628232 5685464 +1628568 5685304 1628616 5685200 1628232 5685464 1628368 5685464 +1617376 5683520 1625104 5682216 1626576 5680264 1617344 5683488 +1617376 5683520 1626048 5682960 1625104 5682216 1617344 5683488 +1626048 5682960 1625104 5682216 1617376 5683520 1617424 5683592 +1626048 5682960 1625104 5682216 1617424 5683592 1620912 5685984 +1625104 5682216 1617344 5683488 1617376 5683520 1617424 5683592 +1625104 5682216 1617376 5683520 1617424 5683592 1620912 5685984 +1626048 5682960 1625104 5682216 1620912 5685984 1621048 5686008 +1625104 5682216 1617424 5683592 1620912 5685984 1621048 5686008 +1626048 5682960 1625104 5682216 1621048 5686008 1624912 5685464 +1621048 5686008 1621112 5686056 1624912 5685464 1625104 5682216 +1625104 5682216 1620912 5685984 1621048 5686008 1624912 5685464 +1626576 5680264 1625104 5682216 1626048 5682960 1626080 5682896 +1626576 5680264 1625104 5682216 1626080 5682896 1626592 5680320 +1626080 5682896 1626168 5682784 1626592 5680320 1625104 5682216 +1626592 5680320 1626576 5680264 1625104 5682216 1626168 5682784 +1625104 5682216 1626048 5682960 1626080 5682896 1626168 5682784 +1617424 5683592 1620776 5686024 1620912 5685984 1625104 5682216 +1626048 5682960 1626080 5682896 1625104 5682216 1624912 5685464 +1626048 5682960 1625104 5682216 1624912 5685464 1626048 5683112 +1626048 5682960 1625104 5682216 1626048 5683112 1626056 5682992 +1625104 5682216 1621048 5686008 1624912 5685464 1626048 5683112 +1624912 5685464 1626072 5683184 1626048 5683112 1625104 5682216 +1624912 5685464 1624992 5685440 1626072 5683184 1625104 5682216 +1624912 5685464 1624992 5685440 1625104 5682216 1621048 5686008 +1624992 5685440 1625120 5685400 1626072 5683184 1625104 5682216 +1626072 5683184 1626048 5683112 1625104 5682216 1624992 5685440 +1626048 5682960 1626080 5682896 1625104 5682216 1626048 5683112 +1626048 5683112 1626048 5682960 1625104 5682216 1626072 5683184 +1626168 5682784 1626632 5680392 1626592 5680320 1625104 5682216 +1626168 5682784 1626632 5680392 1625104 5682216 1626080 5682896 +1626592 5680320 1626576 5680264 1625104 5682216 1626632 5680392 +1626168 5682784 1626744 5680528 1626632 5680392 1625104 5682216 +1626168 5682784 1626744 5680528 1625104 5682216 1626080 5682896 +1626168 5682784 1626224 5682776 1626744 5680528 1625104 5682216 +1626168 5682784 1626224 5682776 1625104 5682216 1626080 5682896 +1626224 5682776 1626952 5680672 1626744 5680528 1625104 5682216 +1626744 5680528 1626632 5680392 1625104 5682216 1626224 5682776 +1626632 5680392 1626592 5680320 1625104 5682216 1626744 5680528 +1626576 5680264 1617256 5683416 1617344 5683488 1625104 5682216 +1617344 5683488 1617376 5683520 1625104 5682216 1617256 5683416 +1626576 5680264 1626688 5680016 1617256 5683416 1625104 5682216 +1626576 5680264 1626640 5680136 1626688 5680016 1625104 5682216 +1626688 5680016 1615256 5682392 1617256 5683416 1625104 5682216 +1617256 5683416 1617344 5683488 1625104 5682216 1626688 5680016 +1624912 5685464 1624952 5685472 1624992 5685440 1625104 5682216 +1625104 5682216 1626592 5680320 1626576 5680264 1626688 5680016 +1626744 5680528 1625160 5682176 1626224 5682776 1626952 5680672 +1626224 5682776 1626424 5682800 1626952 5680672 1625160 5682176 +1626224 5682776 1625160 5682176 1625104 5682216 1626168 5682784 +1625104 5682216 1626080 5682896 1626168 5682784 1625160 5682176 +1626168 5682784 1626224 5682776 1625160 5682176 1626080 5682896 +1625104 5682216 1626048 5682960 1626080 5682896 1625160 5682176 +1626080 5682896 1626168 5682784 1625160 5682176 1626048 5682960 +1625104 5682216 1626048 5683112 1626048 5682960 1625160 5682176 +1625160 5682176 1626744 5680528 1625104 5682216 1626048 5682960 +1626744 5680528 1625104 5682216 1625160 5682176 1626952 5680672 +1625160 5682176 1626168 5682784 1626224 5682776 1626952 5680672 +1625104 5682216 1625160 5682176 1626744 5680528 1626632 5680392 +1625104 5682216 1626048 5682960 1625160 5682176 1626632 5680392 +1625160 5682176 1626952 5680672 1626744 5680528 1626632 5680392 +1625104 5682216 1625160 5682176 1626632 5680392 1626592 5680320 +1625104 5682216 1625160 5682176 1626592 5680320 1626576 5680264 +1625104 5682216 1626048 5682960 1625160 5682176 1626576 5680264 +1625160 5682176 1626744 5680528 1626632 5680392 1626592 5680320 +1625160 5682176 1626632 5680392 1626592 5680320 1626576 5680264 +1625104 5682216 1625160 5682176 1626576 5680264 1626688 5680016 +1626952 5680672 1625184 5682176 1626224 5682776 1626424 5682800 +1625160 5682176 1625184 5682176 1626952 5680672 1626744 5680528 +1625160 5682176 1625184 5682176 1626744 5680528 1626632 5680392 +1625184 5682176 1626952 5680672 1626744 5680528 1626632 5680392 +1625160 5682176 1626224 5682776 1625184 5682176 1626632 5680392 +1626224 5682776 1625184 5682176 1625160 5682176 1626168 5682784 +1626224 5682776 1626952 5680672 1625184 5682176 1626168 5682784 +1625160 5682176 1626080 5682896 1626168 5682784 1625184 5682176 +1625160 5682176 1626048 5682960 1626080 5682896 1625184 5682176 +1626080 5682896 1626168 5682784 1625184 5682176 1626048 5682960 +1625160 5682176 1625104 5682216 1626048 5682960 1625184 5682176 +1626048 5682960 1626080 5682896 1625184 5682176 1625104 5682216 +1625104 5682216 1626048 5683112 1626048 5682960 1625184 5682176 +1625184 5682176 1626632 5680392 1625160 5682176 1625104 5682216 +1626168 5682784 1626224 5682776 1625184 5682176 1626080 5682896 +1625184 5682176 1626224 5682776 1626952 5680672 1626744 5680528 +1625160 5682176 1625184 5682176 1626632 5680392 1626592 5680320 +1625184 5682176 1626744 5680528 1626632 5680392 1626592 5680320 +1625160 5682176 1625104 5682216 1625184 5682176 1626592 5680320 +1625160 5682176 1625184 5682176 1626592 5680320 1626576 5680264 +1626080 5682896 1625248 5682216 1625184 5682176 1626048 5682960 +1625248 5682216 1626168 5682784 1625184 5682176 1626048 5682960 +1626080 5682896 1626168 5682784 1625248 5682216 1626048 5682960 +1625184 5682176 1625104 5682216 1626048 5682960 1625248 5682216 +1625184 5682176 1625104 5682216 1625248 5682216 1626168 5682784 +1626048 5682960 1626080 5682896 1625248 5682216 1625104 5682216 +1625184 5682176 1625160 5682176 1625104 5682216 1625248 5682216 +1625104 5682216 1626048 5683112 1626048 5682960 1625248 5682216 +1626048 5683112 1626056 5682992 1626048 5682960 1625248 5682216 +1625104 5682216 1626048 5683112 1625248 5682216 1625184 5682176 +1626048 5682960 1626080 5682896 1625248 5682216 1626048 5683112 +1625184 5682176 1625248 5682216 1626168 5682784 1626224 5682776 +1625184 5682176 1625104 5682216 1625248 5682216 1626224 5682776 +1625184 5682176 1625248 5682216 1626224 5682776 1626952 5680672 +1625184 5682176 1625104 5682216 1625248 5682216 1626952 5680672 +1625248 5682216 1626080 5682896 1626168 5682784 1626224 5682776 +1626224 5682776 1626424 5682800 1626952 5680672 1625248 5682216 +1625248 5682216 1626168 5682784 1626224 5682776 1626952 5680672 +1625184 5682176 1625248 5682216 1626952 5680672 1626744 5680528 +1625184 5682176 1625104 5682216 1625248 5682216 1626744 5680528 +1625248 5682216 1626224 5682776 1626952 5680672 1626744 5680528 +1625184 5682176 1625248 5682216 1626744 5680528 1626632 5680392 +1625104 5682216 1626072 5683184 1626048 5683112 1625248 5682216 +1625248 5682216 1625336 5682248 1626952 5680672 1626744 5680528 +1625248 5682216 1626224 5682776 1625336 5682248 1626744 5680528 +1626952 5680672 1625336 5682248 1626224 5682776 1626424 5682800 +1625336 5682248 1626224 5682776 1626952 5680672 1626744 5680528 +1626224 5682776 1625336 5682248 1625248 5682216 1626168 5682784 +1625248 5682216 1626080 5682896 1626168 5682784 1625336 5682248 +1625336 5682248 1626744 5680528 1625248 5682216 1626080 5682896 +1625248 5682216 1626048 5682960 1626080 5682896 1625336 5682248 +1626080 5682896 1626168 5682784 1625336 5682248 1626048 5682960 +1625248 5682216 1626048 5682960 1625336 5682248 1626744 5680528 +1625248 5682216 1626048 5683112 1626048 5682960 1625336 5682248 +1625248 5682216 1626048 5683112 1625336 5682248 1626744 5680528 +1626048 5682960 1626080 5682896 1625336 5682248 1626048 5683112 +1626048 5683112 1626056 5682992 1626048 5682960 1625336 5682248 +1626224 5682776 1626952 5680672 1625336 5682248 1626168 5682784 +1625248 5682216 1625104 5682216 1626048 5683112 1625336 5682248 +1625248 5682216 1625104 5682216 1625336 5682248 1626744 5680528 +1625248 5682216 1625184 5682176 1625104 5682216 1625336 5682248 +1626048 5683112 1626048 5682960 1625336 5682248 1625104 5682216 +1626168 5682784 1626224 5682776 1625336 5682248 1626080 5682896 +1625248 5682216 1625336 5682248 1626744 5680528 1625184 5682176 +1625336 5682248 1626952 5680672 1626744 5680528 1625184 5682176 +1625248 5682216 1625104 5682216 1625336 5682248 1625184 5682176 +1626744 5680528 1626632 5680392 1625184 5682176 1625336 5682248 +1626744 5680528 1626632 5680392 1625336 5682248 1626952 5680672 +1626632 5680392 1626592 5680320 1625184 5682176 1625336 5682248 +1625184 5682176 1625248 5682216 1625336 5682248 1626632 5680392 +1625104 5682216 1626072 5683184 1626048 5683112 1625336 5682248 +1626952 5680672 1625424 5682296 1626224 5682776 1626424 5682800 +1625336 5682248 1625424 5682296 1626952 5680672 1626744 5680528 +1625336 5682248 1625424 5682296 1626744 5680528 1626632 5680392 +1625336 5682248 1626224 5682776 1625424 5682296 1626744 5680528 +1626224 5682776 1625424 5682296 1625336 5682248 1626168 5682784 +1626224 5682776 1626952 5680672 1625424 5682296 1626168 5682784 +1625424 5682296 1626744 5680528 1625336 5682248 1626168 5682784 diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp new file mode 100644 index 00000000..bc8db005 --- /dev/null +++ b/performance/delaunay_test.cpp @@ -0,0 +1,279 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. +// Copyright 2012 Phil Endecott +// Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include "arithmetic_backend.hpp" +#include + +#include +#include + +template +struct stopwatch +{ + typedef typename Clock::duration duration; + stopwatch() + { + m_start = Clock::now(); + } + duration elapsed() + { + return Clock::now() - m_start; + } + void reset() + { + m_start = Clock::now(); + } + +private: + typename Clock::time_point m_start; +}; + +// Custom 128-bit maths used for exact calculation of the Delaunay test. +// Only the few operators actually needed here are implemented. + +struct int128_t { + int64_t high; + uint64_t low; + + int128_t() {} + int128_t(int32_t i): high(i>>31), low(static_cast(i)) {} + int128_t(uint32_t i): high(0), low(i) {} + int128_t(int64_t i): high(i>>63), low(i) {} + int128_t(uint64_t i): high(0), low(i) {} +}; + +inline int128_t operator<<(int128_t val, int amt) +{ + int128_t r; + r.low = val.low << amt; + r.high = val.low >> (64-amt); + r.high |= val.high << amt; + return r; +} + +inline int128_t& operator+=(int128_t& l, int128_t r) +{ + l.low += r.low; + bool carry = l.low < r.low; + l.high += r.high; + if (carry) ++l.high; + return l; +} + +inline int128_t operator-(int128_t val) +{ + val.low = ~val.low; + val.high = ~val.high; + val.low += 1; + if (val.low == 0) val.high += 1; + return val; +} + +inline int128_t operator+(int128_t l, int128_t r) +{ + l += r; + return l; +} + +inline bool operator<(int128_t l, int128_t r) +{ + if (l.high != r.high) return l.high < r.high; + return l.low < r.low; +} + + +inline int128_t mult_64x64_to_128(int64_t a, int64_t b) +{ + // Make life simple by dealing only with positive numbers: + bool neg = false; + if (a<0) { neg = !neg; a = -a; } + if (b<0) { neg = !neg; b = -b; } + + // Divide input into 32-bit halves: + uint32_t ah = a >> 32; + uint32_t al = a & 0xffffffff; + uint32_t bh = b >> 32; + uint32_t bl = b & 0xffffffff; + + // Long multiplication, with 64-bit temporaries: + + // ah al + // * bh bl + // ---------------- + // al*bl (t1) + // + ah*bl (t2) + // + al*bh (t3) + // + ah*bh (t4) + // ---------------- + + uint64_t t1 = static_cast(al)*bl; + uint64_t t2 = static_cast(ah)*bl; + uint64_t t3 = static_cast(al)*bh; + uint64_t t4 = static_cast(ah)*bh; + + int128_t r(t1); + r.high = t4; + r += int128_t(t2) << 32; + r += int128_t(t3) << 32; + + if (neg) r = -r; + + return r; +} + +template +__forceinline void mul_2n(R& r, const T& a, const T& b) +{ + r = R(a) * b; +} + +__forceinline void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) +{ + r = mult_64x64_to_128(a, b); +} + +template +inline bool delaunay_test(int32_t ax, int32_t ay, int32_t bx, int32_t by, + int32_t cx, int32_t cy, int32_t dx, int32_t dy) +{ + // Test whether the quadrilateral ABCD's diagonal AC should be flipped to BD. + // This is the Cline & Renka method. + // Flip if the sum of the angles ABC and CDA is greater than 180 degrees. + // Equivalently, flip if sin(ABC + CDA) < 0. + // Trig identity: cos(ABC) * sin(CDA) + sin(ABC) * cos(CDA) < 0 + // We can use scalar and vector products to find sin and cos, and simplify + // to the following code. + // Numerical robustness is important. This code addresses it by performing + // exact calculations with large integer types. + + typedef typename Traits::i64_t i64; + typedef typename Traits::i128_t i128; + + i64 ax64 = ax, ay64 = ay, bx64 = bx, by64 = by, + cx64 = cx, cy64 = cy, dx64 = dx, dy64 = dy; + + i64 cos_abc, t; + mul_2n(cos_abc, (ax-bx), (cx-bx)); + mul_2n(t, (ay-by), (cy-by)); + cos_abc += t; + + i64 cos_cda; + mul_2n(cos_cda, (cx-dx), (ax-dx)); + mul_2n(t, (cy-dy), (ay-dy)); + cos_cda += t; + + if (cos_abc >= 0 && cos_cda >= 0) return false; + if (cos_abc < 0 && cos_cda < 0) return true; + + i64 sin_abc; + mul_2n(sin_abc, (ax-bx), (cy-by)); + mul_2n(t, (cx-bx), (ay-by)); + sin_abc -= t; + + i64 sin_cda; + mul_2n(sin_cda, (cx-dx), (ay-dy)); + mul_2n(t, (ax-dx), (cy-dy)); + sin_cda -= t; + + i128 sin_sum, t128; + mul_2n(sin_sum, sin_abc, cos_cda); + mul_2n(t128, cos_abc, sin_cda); + sin_sum += t128; + + return sin_sum < 0; +} + + +struct dt_dat { + int32_t ax, ay, bx, by, cx, cy, dx, dy; +}; + +typedef std::vector data_t; +data_t data; + +static void load_data() +{ + std::ifstream is("delaunay_data.txt"); + + while (is.good()) + { + dt_dat d; + is >> d.ax >> d.ay >> d.bx >> d.by >> d.cx >> d.cy >> d.dx >> d.dy; + if (is.good()) + { + data.push_back(d); + d.ax >>= 10; + d.ay >>= 10; + d.bx >>= 10; + d.by >>= 10; + d.cx >>= 10; + d.cy >>= 10; + d.dx >>= 10; + d.dy >>= 10; + data.push_back(d); + } + } +} + +template +void do_calc(const char* name) +{ + std::cout << "Running calculations for: " << name << std::endl; + + stopwatch w; + + boost::uint64_t flips = 0; + boost::uint64_t calcs = 0; + + for(int j = 0; j < 1000; ++j) + { + for(data_t::const_iterator i = data.begin(); i != data.end(); ++i) + { + const dt_dat& d = *i; + bool flip = delaunay_test(d.ax,d.ay, d.bx,d.by, d.cx,d.cy, d.dx,d.dy); + if (flip) ++flips; + ++calcs; + } + } + double t = boost::chrono::duration_cast >(w.elapsed()).count(); + + std::cout << "Number of calculations = " << calcs << std::endl; + std::cout << "Number of flips = " << flips << std::endl; + std::cout << "Total execution time = " << t << std::endl; + std::cout << "Time per calculation = " << t / calcs << std::endl << std::endl; +} + +template +struct test_traits +{ + typedef I64 i64_t; + typedef I128 i128_t; +}; + + +int main() +{ + using namespace boost::multiprecision; + std::cout << "loading data...\n"; + load_data(); + + std::cout << "calculating...\n"; + + do_calc >("int64_t, int64_t"); + do_calc >, mp_number > > >("arithmetic_backend"); + do_calc >("int64_t, int128_t"); + do_calc >("int64_t, mp_int128_t"); + do_calc, true> > >("int64_t, mp_int128_t (ET)"); + do_calc >("int64_t, cpp_int"); + do_calc, false> > >("int64_t, cpp_int (no ET's)"); + do_calc > > >("int64_t, cpp_int(128-bit cache)"); + do_calc, false> > >("int64_t, cpp_int (128-bit Cache no ET's)"); + + return 0; +} + diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 8dd0b3ed..61116348 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -380,6 +380,129 @@ struct tester a.deallocate(pt, 1000); return result; } + + // + // Hetero operations: + // + template + static T get_hetero_test_value(boost::mpl::false_ const&) + { + return T(2) / 3; + } + template + static T get_hetero_test_value(boost::mpl::true_ const&) + { + return (std::numeric_limits::max)() >> 4; + } + template + static T get_hetero_test_value() + { + return get_hetero_test_value(boost::is_integral()); + } + template + double test_multiply_hetero() + { + static const T val = get_hetero_test_value(); + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] * val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + template + double test_inplace_multiply_hetero() + { + static const T val = get_hetero_test_value(); + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i]; + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] *= val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + template + double test_add_hetero() + { + static const T val = get_hetero_test_value(); + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] + val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + template + double test_inplace_add_hetero() + { + static const T val = get_hetero_test_value(); + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i]; + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] += val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + template + double test_subtract_hetero() + { + static const T val = get_hetero_test_value(); + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] - val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + template + double test_inplace_subtract_hetero() + { + static const T val = get_hetero_test_value(); + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i]; + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] -= val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + template + double test_divide_hetero() + { + static const T val = get_hetero_test_value(); + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i] / val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } + template + double test_inplace_divide_hetero() + { + static const T val = get_hetero_test_value(); + for(unsigned i = 0; i < b.size(); ++i) + a[i] = b[i]; + stopwatch w; + for(unsigned i = 0; i < 1000; ++i) + { + for(unsigned i = 0; i < b.size(); ++i) + a[i] /= val; + } + return boost::chrono::duration_cast >(w.elapsed()).count(); + } private: T generate_random() { @@ -563,6 +686,15 @@ void test(const char* type, unsigned precision) report_result(cat, type, "construct(unsigned)", precision, t.test_construct_unsigned()); report_result(cat, type, "construct(unsigned long long)", precision, t.test_construct_unsigned_ll()); test_int_ops(t, type, precision, typename boost::multiprecision::number_category::type()); + // Hetero ops: + report_result(cat, type, "+", precision, t.template test_add_hetero()); + report_result(cat, type, "-", precision, t.template test_subtract_hetero()); + report_result(cat, type, "*", precision, t.template test_multiply_hetero()); + report_result(cat, type, "/", precision, t.template test_divide_hetero()); + report_result(cat, type, "+", precision, t.template test_inplace_add_hetero()); + report_result(cat, type, "-", precision, t.template test_inplace_subtract_hetero()); + report_result(cat, type, "*", precision, t.template test_inplace_multiply_hetero()); + report_result(cat, type, "/", precision, t.template test_inplace_divide_hetero()); } void quickbook_results() diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 2e66acd9..2277fd35 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -6,16 +6,17 @@ #define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 500 #if !defined(TEST_MPFR) && !defined(TEST_MPREAL) && !defined(TEST_MPF) && !defined(TEST_MPREAL) \ - && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_CLASS) + && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_CLASS) && !defined(TEST_FLOAT) # define TEST_MPFR # define TEST_MPF # define TEST_CPP_DEC_FLOAT # define TEST_MPFR_CLASS # define TEST_MPREAL +# define TEST_FLOAT #endif #ifdef TEST_FLOAT -#include "float_backend.hpp" +#include "arithmetic_backend.hpp" #endif #ifdef TEST_MPFR_CLASS #include @@ -258,8 +259,8 @@ int main() #ifdef TEST_FLOAT time_proc("double", test_bessel); time_proc("real_concept", test_bessel); - time_proc("float_backend", test_bessel > >); - time_proc("float_backend - no expression templates", test_bessel, false> >); + time_proc("arithmetic_backend", test_bessel > >); + time_proc("arithmetic_backend - no expression templates", test_bessel, false> >); #endif // From 5711748ee1bbe48641f3897ebe131dfc3bfd30af Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 30 Jul 2012 17:51:47 +0000 Subject: [PATCH 204/256] Fix misc bugs introduced in last commit. [SVN r79804] --- include/boost/multiprecision/cpp_int.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 2391a0d4..cc6295b5 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1326,6 +1326,7 @@ inline void add_unsigned(cpp_int_backend& res result.limbs()[x] = static_cast(carry); } result.normalize(); + result.sign(a.sign()); } template inline void eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) @@ -1400,7 +1401,9 @@ template inline void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) + { add_unsigned(result, result, o); + } else subtract_unsigned(result, o); } @@ -1408,7 +1411,9 @@ template inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign()) + { add_unsigned(result, a, o); + } else { result = a; @@ -2068,8 +2073,8 @@ void divide_unsigned_helper(cpp_int_backend* *result = *pr / y; result->sign(x.sign()); } - r.sign(x.sign()); *pr %= y; + r.sign(x.sign()); return; } else if(r_order == 1) From c79fb415268c643bf3a46fb744589fa5804705a6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 31 Jul 2012 18:14:14 +0000 Subject: [PATCH 205/256] Rework comparison operators - note that existing backends are made less efficient by this at present. [SVN r79823] --- .../detail/mp_number_compare.hpp | 488 ++++++++++++++++++ include/boost/multiprecision/mp_number.hpp | 6 +- performance/Jamfile.v2 | 4 + performance/arithmetic_backend.hpp | 149 +++++- performance/sf_performance.cpp | 13 +- test/test_arithmetic.cpp | 25 +- 6 files changed, 671 insertions(+), 14 deletions(-) create mode 100644 include/boost/multiprecision/detail/mp_number_compare.hpp diff --git a/include/boost/multiprecision/detail/mp_number_compare.hpp b/include/boost/multiprecision/detail/mp_number_compare.hpp new file mode 100644 index 00000000..909d4af8 --- /dev/null +++ b/include/boost/multiprecision/detail/mp_number_compare.hpp @@ -0,0 +1,488 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_COMPARE_HPP +#define BOOST_MP_COMPARE_HPP + +// +// Comparison operators for mp_number. +// + +namespace boost{ namespace multiprecision{ + +namespace default_ops{ + +template +inline bool eval_eq(const B& a, const B& b) +{ + return a.compare(b) == 0; +} +template +inline typename enable_if_c<(is_arithmetic::value && is_convertible::value), bool>::type eval_eq(const B& a, const A& b) +{ + B t(b); + return eval_eq(a, t); +} +template +inline typename enable_if_c<(is_arithmetic::value && !is_convertible::value), bool>::type eval_eq(const B& a, const A& b) +{ + B t; + t = b; + return eval_eq(a, t); +} + +template +inline bool eval_lt(const B& a, const B& b) +{ + return a.compare(b) < 0; +} +template +inline typename enable_if_c<(is_arithmetic::value && is_convertible::value), bool>::type eval_lt(const B& a, const A& b) +{ + B t(b); + return eval_lt(a, t); +} +template +inline typename enable_if_c<(is_arithmetic::value && !is_convertible::value), bool>::type eval_lt(const B& a, const A& b) +{ + B t; + t = b; + return eval_lt(a, t); +} + +template +inline bool eval_gt(const B& a, const B& b) +{ + return a.compare(b) > 0; +} +template +inline typename enable_if_c<(is_arithmetic::value && is_convertible::value), bool>::type eval_gt(const B& a, const A& b) +{ + B t(b); + return eval_gt(a, t); +} +template +inline typename enable_if_c<(is_arithmetic::value && !is_convertible::value), bool>::type eval_gt(const B& a, const A& b) +{ + B t; + t = b; + return eval_gt(a, t); +} + +} + +template +inline bool operator == (const mp_number& a, const mp_number& b) +{ + using default_ops::eval_eq; + return eval_eq(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const mp_number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return eval_eq(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator == (const mp_number& a, const detail::mp_exp& b) +{ + using default_ops::eval_eq; + typename detail::mp_exp::result_type t(b); + return eval_eq(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const Arithmetic& a, const mp_number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return eval_eq(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const Arithmetic& a, const detail::mp_exp& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(b); + return eval_eq(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator == (const detail::mp_exp& a, const mp_number& b) +{ + using default_ops::eval_eq; + typename detail::mp_exp::result_type t(a); + return eval_eq(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const detail::mp_exp& a, const Arithmetic& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(a); + return eval_eq(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type + operator == (const detail::mp_exp& a, const detail::mp_exp& b) +{ + using default_ops::eval_eq; + typename detail::mp_exp::result_type t(a); + typename detail::mp_exp::result_type t2(b); + return eval_eq(t.backend(), t2.backend()); +} + +template +inline bool operator != (const mp_number& a, const mp_number& b) +{ + using default_ops::eval_eq; + return !eval_eq(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const mp_number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return !eval_eq(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator != (const mp_number& a, const detail::mp_exp& b) +{ + using default_ops::eval_eq; + typename detail::mp_exp::result_type t(b); + return !eval_eq(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const Arithmetic& a, const mp_number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return !eval_eq(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const Arithmetic& a, const detail::mp_exp& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(b); + return !eval_eq(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator != (const detail::mp_exp& a, const mp_number& b) +{ + using default_ops::eval_eq; + typename detail::mp_exp::result_type t(a); + return !eval_eq(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const detail::mp_exp& a, const Arithmetic& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(a); + return !eval_eq(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type + operator != (const detail::mp_exp& a, const detail::mp_exp& b) +{ + using default_ops::eval_eq; + typename detail::mp_exp::result_type t(a); + typename detail::mp_exp::result_type t2(b); + return !eval_eq(t.backend(), t2.backend()); +} + +template +inline bool operator < (const mp_number& a, const mp_number& b) +{ + using default_ops::eval_lt; + return eval_lt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const mp_number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return eval_lt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator < (const mp_number& a, const detail::mp_exp& b) +{ + using default_ops::eval_lt; + typename detail::mp_exp::result_type t(b); + return eval_lt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const Arithmetic& a, const mp_number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return eval_gt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const Arithmetic& a, const detail::mp_exp& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(b); + return eval_gt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator < (const detail::mp_exp& a, const mp_number& b) +{ + using default_ops::eval_lt; + typename detail::mp_exp::result_type t(a); + return eval_lt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const detail::mp_exp& a, const Arithmetic& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(a); + return eval_lt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type + operator < (const detail::mp_exp& a, const detail::mp_exp& b) +{ + using default_ops::eval_lt; + typename detail::mp_exp::result_type t(a); + typename detail::mp_exp::result_type t2(b); + return eval_lt(t.backend(), t2.backend()); +} + +template +inline bool operator > (const mp_number& a, const mp_number& b) +{ + using default_ops::eval_gt; + return eval_gt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const mp_number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return eval_gt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator > (const mp_number& a, const detail::mp_exp& b) +{ + using default_ops::eval_gt; + typename detail::mp_exp::result_type t(b); + return eval_gt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const Arithmetic& a, const mp_number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return eval_lt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const Arithmetic& a, const detail::mp_exp& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(b); + return eval_lt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator > (const detail::mp_exp& a, const mp_number& b) +{ + using default_ops::eval_gt; + typename detail::mp_exp::result_type t(a); + return eval_gt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const detail::mp_exp& a, const Arithmetic& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(a); + return eval_gt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type + operator > (const detail::mp_exp& a, const detail::mp_exp& b) +{ + using default_ops::eval_gt; + typename detail::mp_exp::result_type t(a); + typename detail::mp_exp::result_type t2(b); + return eval_gt(t.backend(), t2.backend()); +} + +template +inline bool operator <= (const mp_number& a, const mp_number& b) +{ + using default_ops::eval_gt; + return !eval_gt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const mp_number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return !eval_gt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator <= (const mp_number& a, const detail::mp_exp& b) +{ + using default_ops::eval_gt; + typename detail::mp_exp::result_type t(b); + return !eval_gt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const Arithmetic& a, const mp_number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return !eval_lt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const Arithmetic& a, const detail::mp_exp& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(b); + return !eval_lt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator <= (const detail::mp_exp& a, const mp_number& b) +{ + using default_ops::eval_gt; + typename detail::mp_exp::result_type t(a); + return !eval_gt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const detail::mp_exp& a, const Arithmetic& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(a); + return !eval_gt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type + operator <= (const detail::mp_exp& a, const detail::mp_exp& b) +{ + using default_ops::eval_gt; + typename detail::mp_exp::result_type t(a); + typename detail::mp_exp::result_type t2(b); + return !eval_gt(t.backend(), t2.backend()); +} + +template +inline bool operator >= (const mp_number& a, const mp_number& b) +{ + using default_ops::eval_lt; + return !eval_lt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const mp_number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return !eval_lt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator >= (const mp_number& a, const detail::mp_exp& b) +{ + using default_ops::eval_lt; + typename detail::mp_exp::result_type t(b); + return !eval_lt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const Arithmetic& a, const mp_number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return !eval_gt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const Arithmetic& a, const detail::mp_exp& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(b); + return !eval_gt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type + operator >= (const detail::mp_exp& a, const mp_number& b) +{ + using default_ops::eval_lt; + typename detail::mp_exp::result_type t(a); + return !eval_lt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const detail::mp_exp& a, const Arithmetic& b) +{ + typedef typename detail::mp_exp::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(a); + return !eval_lt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type + operator >= (const detail::mp_exp& a, const detail::mp_exp& b) +{ + using default_ops::eval_lt; + typename detail::mp_exp::result_type t(a); + typename detail::mp_exp::result_type t2(b); + return !eval_lt(t.backend(), t2.backend()); +} + + +}} // namespaces + +#endif // BOOST_MP_COMPARE_HPP + diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 3d93418e..4a8ee16d 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -20,6 +20,7 @@ #include #include #include +#include #include // stream operators #include // EOF @@ -1630,14 +1631,13 @@ struct is_valid_comparison : public boost::multiprecision::detail::is_valid_comp } - +/* template inline typename boost::enable_if, bool>::type operator == (const Exp1& a, const Exp2& b) { return 0 == detail::mp_number_compare(a, b); } - template inline typename boost::enable_if, bool>::type operator != (const Exp1& a, const Exp2& b) @@ -1672,7 +1672,7 @@ inline typename boost::enable_if, bool>: { return 0 < detail::mp_number_compare(a, b); } - +*/ template inline std::ostream& operator << (std::ostream& os, const mp_number& r) { diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index 66d35e7f..eb349c69 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -69,6 +69,8 @@ exe sf_performance : sf_performance.cpp /boost/system//boost_system /boost/chron TEST_CPP_DEC_FLOAT msvc:-bigobj ; + +exe delaunay_test : delaunay_test.cpp /boost/system//boost_system /boost/chrono//boost_chrono ; obj obj_linpack_benchmark_mpfr : linpack-benchmark.cpp : release @@ -118,4 +120,6 @@ install miller_rabin_install : miller_rabin_performance : . ; install performance_test_install : performance_test : . ; install sf_performance_install : sf_performance : . ; install . : linpack_benchmark_double linpack_benchmark_cpp_float linpack_benchmark_mpf linpack_benchmark_mpfr ; +install delaunay_install : delaunay_test : . ; + diff --git a/performance/arithmetic_backend.hpp b/performance/arithmetic_backend.hpp index 69176f3c..e3d5f4d1 100644 --- a/performance/arithmetic_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -18,6 +18,11 @@ namespace boost{ namespace multiprecision{ namespace backends{ +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable:4389 4244 4018 4244 4127) +#endif + template struct arithmetic_backend { @@ -46,7 +51,14 @@ struct arithmetic_backend } arithmetic_backend& operator = (const char* s) { - m_value = boost::lexical_cast(s); + try + { + m_value = boost::lexical_cast(s); + } + catch(const bad_lexical_cast&) + { + throw std::runtime_error(std::string("Unable to interpret the string provided: \"") + s + std::string("\" as a compatible number type.")); + } return *this; } void swap(arithmetic_backend& o) @@ -57,12 +69,20 @@ struct arithmetic_backend { std::stringstream ss; ss.flags(f); - ss << std::setprecision(digits) << m_value; + ss << std::setprecision(digits ? digits : std::numeric_limits::digits10 + 4) << m_value; return ss.str(); } + void do_negate(const mpl::true_&) + { + m_value = 1 + ~m_value; + } + void do_negate(const mpl::false_&) + { + m_value = -m_value; + } void negate() { - m_value = -m_value; + do_negate(is_unsigned()); } int compare(const arithmetic_backend& o)const { @@ -85,6 +105,37 @@ inline void eval_convert_to(R* result, const arithmetic_backend& bac *result = backend.data(); } +template +inline bool eval_eq(const arithmetic_backend& a, const arithmetic_backend& b) +{ + return a.data() == b.data(); +} +template +inline bool eval_eq(const arithmetic_backend& a, const A2& b) +{ + return a.data() == b; +} +template +inline bool eval_lt(const arithmetic_backend& a, const arithmetic_backend& b) +{ + return a.data() < b.data(); +} +template +inline bool eval_lt(const arithmetic_backend& a, const A2& b) +{ + return a.data() < b; +} +template +inline bool eval_gt(const arithmetic_backend& a, const arithmetic_backend& b) +{ + return a.data() > b.data(); +} +template +inline bool eval_gt(const arithmetic_backend& a, const A2& b) +{ + return a.data() > b; +} + template inline void eval_add(arithmetic_backend& result, const arithmetic_backend& o) { @@ -103,6 +154,8 @@ inline void eval_multiply(arithmetic_backend& result, const arithmet template inline void eval_divide(arithmetic_backend& result, const arithmetic_backend& o) { + if(!std::numeric_limits::has_infinity && !o.data()) + BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() /= o.data(); } @@ -124,6 +177,8 @@ inline typename enable_if >::type eval_multiply(arithmetic_bac template inline typename enable_if >::type eval_divide(arithmetic_backend& result, const A2& o) { + if(!std::numeric_limits::has_infinity && !o) + BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() /= o; } @@ -145,6 +200,8 @@ inline void eval_multiply(arithmetic_backend& result, const arithmet template inline void eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { + if(!std::numeric_limits::has_infinity && !b.data()) + BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() = a.data() / b.data(); } @@ -166,6 +223,8 @@ inline typename enable_if>::type eval_multiply(arithmetic_back template inline typename enable_if>::type eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { + if(!std::numeric_limits::has_infinity && !b) + BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() = a.data() / b; } @@ -181,10 +240,15 @@ inline int eval_get_sign(const arithmetic_backend& val) return val.data() == 0 ? 0 : val.data() < 0 ? -1 : 1; } +template +inline typename enable_if, T>::type abs(T v) { return v; } + template inline void eval_abs(arithmetic_backend& result, const arithmetic_backend& o) { - result.data() = std::abs(o.data()); + using std::abs; + using boost::multiprecision::backends::abs; + result.data() = abs(o.data()); } template @@ -234,6 +298,20 @@ inline void eval_round(arithmetic_backend& result, const arithmetic_ result.data() = round(o.data()); } +template +inline void eval_frexp(arithmetic_backend& result, const arithmetic_backend& a, int* v) +{ + BOOST_MATH_STD_USING + result.data() = frexp(a.data(), v); +} + +template +inline void eval_ldexp(arithmetic_backend& result, const arithmetic_backend& a, int v) +{ + BOOST_MATH_STD_USING + result.data() = ldexp(a.data(), v); +} + template inline void eval_exp(arithmetic_backend& result, const arithmetic_backend& o) { @@ -339,10 +417,71 @@ inline void eval_atan2(arithmetic_backend& result, const arithmetic_ result.data() = atan2(a.data(), b.data()); } +template +inline void eval_left_shift(arithmetic_backend& result, I val) +{ + result.data() <<= val; +} + +template +inline void eval_right_shift(arithmetic_backend& result, I val) +{ + result.data() >>= val; +} + +template +inline void eval_modulus(arithmetic_backend& result, const arithmetic_backend& a) +{ + result.data() %= a.data(); +} + +template +inline void eval_bitwise_and(arithmetic_backend& result, const arithmetic_backend& a) +{ + result.data() &= a.data(); +} + +template +inline void eval_bitwise_or(arithmetic_backend& result, const arithmetic_backend& a) +{ + result.data() |= a.data(); +} + +template +inline void eval_bitwise_xor(arithmetic_backend& result, const arithmetic_backend& a) +{ + result.data() ^= a.data(); +} + +template +inline void eval_complement(arithmetic_backend& result, const arithmetic_backend& a) +{ + result.data() = ~a.data(); +} + +template +inline void eval_gcd(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) +{ + result.data() = boost::math::gcd(a.data(), b.data()); +} + +template +inline void eval_lcm(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) +{ + result.data() = boost::math::lcm(a.data(), b.data()); +} + +#ifdef BOOST_MSVC +# pragma warning(pop) +#endif + } // namespace backends using boost::multiprecision::backends::arithmetic_backend; +template +struct number_category > : public mpl::int_::value ? number_kind_integer : number_kind_floating_point>{}; + }} // namespaces namespace boost{ namespace math{ namespace tools{ @@ -394,4 +533,6 @@ public: } +#include + #endif diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 2277fd35..b6b056bf 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -257,10 +257,15 @@ int main() // Comparison for builtin floats: // #ifdef TEST_FLOAT - time_proc("double", test_bessel); - time_proc("real_concept", test_bessel); - time_proc("arithmetic_backend", test_bessel > >); - time_proc("arithmetic_backend - no expression templates", test_bessel, false> >); + time_proc("Bessel Functions - double", test_bessel); + time_proc("Bessel Functions - real_concept", test_bessel); + time_proc("Bessel Functions - arithmetic_backend", test_bessel > >); + time_proc("Bessel Functions - arithmetic_backend - no expression templates", test_bessel, false> >); + + time_proc("Non-central T - double", test_nct); + time_proc("Non-central T - real_concept", test_nct); + time_proc("Non-central T - arithmetic_backend", test_nct > >); + time_proc("Non-central T - arithmetic_backend - no expression templates", test_nct, false> >); #endif // diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 352aee53..c85ae630 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -18,7 +18,7 @@ #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_BR) + && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_BR) && !defined(TEST_ARITHMETIC_BACKEND) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -30,6 +30,7 @@ # define TEST_TOMMATH # define TEST_CPP_INT # define TEST_CPP_INT_BR +# define TEST_ARITHMETIC_BACKEND #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -40,6 +41,9 @@ #endif +#if defined(TEST_ARITHMETIC_BACKEND) +# include "../performance/arithmetic_backend.hpp" +#endif #if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) || defined(TEST_MPZ_BOOST_RATIONAL) #include #include @@ -628,7 +632,10 @@ void test_negative_mixed(boost::mpl::true_ const&) Num tol = 0; #endif std::ios_base::fmtflags f = boost::is_floating_point::value ? std::ios_base::scientific : std::ios_base::fmtflags(0); - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, f)), tol); + if(std::numeric_limits::digits <= std::numeric_limits::digits) + { + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, f)), tol); + } BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, f)), 0); BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, f)), 0); BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, f)), 0); @@ -693,6 +700,10 @@ template void test_mixed() { typedef typename lexical_cast_target_type::type target_type; + + if(std::numeric_limits::digits < std::numeric_limits::digits) + return; + std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; Num n1 = static_cast(1uLL << (std::numeric_limits::digits - 1)); Num n2 = 1; @@ -730,7 +741,10 @@ void test_mixed() Num tol = 0; #endif std::ios_base::fmtflags f = boost::is_floating_point::value ? std::ios_base::scientific : std::ios_base::fmtflags(0); - BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, f)), tol); + if(std::numeric_limits::digits <= std::numeric_limits::digits) + { + BOOST_TEST_CLOSE(n1, boost::lexical_cast(Real(n1).str(0, f)), tol); + } BOOST_TEST_CLOSE(n2, boost::lexical_cast(Real(n2).str(0, f)), 0); BOOST_TEST_CLOSE(n3, boost::lexical_cast(Real(n3).str(0, f)), 0); BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, f)), 0); @@ -1126,6 +1140,11 @@ void test() int main() { +#ifdef TEST_ARITHMETIC_BACKEND + test > >(); + test > >(); + test > >(); +#endif #ifdef TEST_BACKEND test >(); #endif From 8a54889f3592b34fd01080a8e41221e97d7b47b8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 2 Aug 2012 12:27:00 +0000 Subject: [PATCH 206/256] Update comparison operators for better efficiency. Rework delaunay performance test to use less disk space. [SVN r79848] --- include/boost/multiprecision/cpp_int.hpp | 116 + .../detail/cpp_int_trivial_ops.hpp | 105 + include/boost/multiprecision/gmp.hpp | 54 +- include/boost/multiprecision/mpfr.hpp | 16 + performance/arithmetic_backend.hpp | 40 +- performance/delaunay_data.txt | 100000 --------------- performance/delaunay_test.cpp | 52 +- test/test_arithmetic.cpp | 106 +- 8 files changed, 431 insertions(+), 100058 deletions(-) delete mode 100644 performance/delaunay_data.txt diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index cc6295b5..c8e56196 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1218,6 +1218,122 @@ public: } }; +template +inline bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return (a.sign() == b.sign()) + && (a.size() == b.size()) + && std::equal(a.limbs(), a.limbs() + a.size(), b.limbs()); +} +template +inline bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + return (a.sign() == false) + && (a.size() == 1) + && (*a.limbs() == b); +} +template +inline bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (a.sign() == (b < 0)) + && (a.size() == 1) + && (*a.limbs() == static_cast(std::abs(b))); +} +template +inline bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + return (a.size() == 1) + && (*a.limbs() == b); +} +template +inline bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (b < 0) ? eval_eq(a, cpp_int_backend(b)) : eval_eq(a, static_cast(b)); // Use bit pattern of b for comparison +} + +template +inline bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.sign()) + return true; + if(a.size() > 1) + return false; + return *a.limbs() < b; +} +template +inline bool eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + if((b == 0) || (a.sign() != (b < 0))) + return a.sign(); + if(a.sign()) + { + if(a.size() > 1) + return true; + return *a.limbs() > static_cast(std::abs(b)); + } + else + { + if(a.size() > 1) + return false; + return *a.limbs() < static_cast(b); + } +} + +template +inline bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.size() > 1) + return false; + return *a.limbs() < b; +} +template +inline bool eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (b < 0) ? a.compare(b) < 0 : eval_lt(a, static_cast(b)); // Use bit pattern of b for comparison +} + +template +inline bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.sign()) + return false; + if(a.size() > 1) + return true; + return *a.limbs() > b; +} +template +inline bool eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + if(b == 0) + return !a.sign() && ((a.size() > 1) || *a.limbs()); + if(a.sign() != (b < 0)) + return !a.sign(); + if(a.sign()) + { + if(a.size() > 1) + return false; + return *a.limbs() < static_cast(std::abs(b)); + } + else + { + if(a.size() > 1) + return true; + return *a.limbs() > static_cast(b); + } +} + +template +inline bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.size() > 1) + return true; + return *a.limbs() > b; +} +template +inline bool eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (b < 0) ? a.compare(b) > 0 : eval_gt(a, static_cast(b)); // Use bit pattern of b for comparison. +} template inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) diff --git a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp index 22e7d197..056c7adb 100644 --- a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp +++ b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp @@ -10,6 +10,111 @@ namespace boost{ namespace multiprecision{ namespace backends{ +template +inline bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return (a.sign() == b.sign()) && (*a.limbs() == *b.limbs()); +} +template +inline bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return *a.limbs() == *b.limbs(); +} +template +inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return !a.sign() && (*a.limbs() == b); +} +template +inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + return (a.sign() == (b < 0)) && (*a.limbs() == std::abs(b)); +} +template +inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return *a.limbs() == b; +} +template +inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + return *a.limbs() == b; +} + +template +inline bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + if(a.sign() != b.sign()) + return a.sign(); + return a.sign() ? *a.limbs() > *b.limbs() : *a.limbs() < *b.limbs(); +} +template +inline bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return *a.limbs() < *b.limbs(); +} +template +inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + if(a.sign()) + return true; + return *a.limbs() < b; +} +template +inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + if(a.sign() != (b < 0)) + return a.sign(); + return a.sign() ? (*a.limbs() > std::abs(b)) : (*a.limbs() < std::abs(b)); +} +template +inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return *a.limbs() < b; +} +template +inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + return *a.limbs() < b; +} + +template +inline bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + if(a.sign() != b.sign()) + return !a.sign(); + return a.sign() ? *a.limbs() < *b.limbs() : *a.limbs() > *b.limbs(); +} +template +inline bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return *a.limbs() > *b.limbs(); +} +template +inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + if(a.sign()) + return false; + return *a.limbs() > b; +} +template +inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + if(a.sign() != (b < 0)) + return !a.sign(); + return a.sign() ? (*a.limbs() < std::abs(b)) : (*a.limbs() > std::abs(b)); +} +template +inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return *a.limbs() > b; +} +template +inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + return *a.limbs() > b; +} + template inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index fa3b10ca..4cf0aa42 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -483,6 +483,22 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> } }; +template +inline typename disable_if, T>, bool>::type eval_eq(const gmp_float& a, const T& b) BOOST_NOEXCEPT +{ + return a.compare(b) == 0; +} +template +inline typename disable_if, T>, bool>::type eval_lt(const gmp_float& a, const T& b) BOOST_NOEXCEPT +{ + return a.compare(b) < 0; +} +template +inline typename disable_if, T>, bool>::type eval_gt(const gmp_float& a, const T& b) BOOST_NOEXCEPT +{ + return a.compare(b) > 0; +} + template inline void eval_add(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT { @@ -928,6 +944,8 @@ struct gmp_int #ifndef BOOST_NO_RVALUE_REFERENCES gmp_int& operator = (gmp_int&& o) BOOST_NOEXCEPT { + if(m_data[0]._mp_d) + mpz_clear(m_data); m_data[0] = o.m_data[0]; o.m_data[0]._mp_d = 0; return *this; @@ -1140,6 +1158,22 @@ protected: mpz_t m_data; }; +template +inline typename disable_if, bool>::type eval_eq(const gmp_int& a, const T& b) +{ + return a.compare(b) == 0; +} +template +inline typename disable_if, bool>::type eval_lt(const gmp_int& a, const T& b) +{ + return a.compare(b) < 0; +} +template +inline typename disable_if, bool>::type eval_gt(const gmp_int& a, const T& b) +{ + return a.compare(b) > 0; +} + inline bool eval_is_zero(const gmp_int& val) { return mpz_sgn(val.data()) == 0; @@ -1700,11 +1734,11 @@ struct gmp_rational d = v; return compare(d); } - int compare(unsigned long v) + int compare(unsigned long v)const { return mpq_cmp_ui(m_data, v, 1); } - int compare(long v) + int compare(long v)const { return mpq_cmp_si(m_data, v, 1); } @@ -1731,6 +1765,22 @@ inline mp_number denominator(const mp_number& val) return result; } +template +inline bool eval_eq(gmp_rational& a, const T& b) +{ + return a.compare(b) == 0; +} +template +inline bool eval_lt(gmp_rational& a, const T& b) +{ + return a.compare(b) < 0; +} +template +inline bool eval_gt(gmp_rational& a, const T& b) +{ + return a.compare(b) > 0; +} + inline void eval_add(gmp_rational& t, const gmp_rational& o) { mpq_add(t.data(), t.data(), o.data()); diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 3c1301e5..a847c5d1 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -532,6 +532,22 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> } }; +template +inline typename disable_if, T>, bool>::type eval_eq(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +{ + return a.compare(b) == 0; +} +template +inline typename disable_if, T>, bool>::type eval_lt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +{ + return a.compare(b) < 0; +} +template +inline typename disable_if, T>, bool>::type eval_gt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +{ + return a.compare(b) > 0; +} + template inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { diff --git a/performance/arithmetic_backend.hpp b/performance/arithmetic_backend.hpp index e3d5f4d1..e7170c1f 100644 --- a/performance/arithmetic_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -152,9 +152,14 @@ inline void eval_multiply(arithmetic_backend& result, const arithmet result.data() *= o.data(); } template -inline void eval_divide(arithmetic_backend& result, const arithmetic_backend& o) +inline typename enable_if_c::has_infinity>::type eval_divide(arithmetic_backend& result, const arithmetic_backend& o) { - if(!std::numeric_limits::has_infinity && !o.data()) + result.data() /= o.data(); +} +template +inline typename disable_if_c::has_infinity>::type eval_divide(arithmetic_backend& result, const arithmetic_backend& o) +{ + if(!o.data()) BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() /= o.data(); } @@ -175,12 +180,19 @@ inline typename enable_if >::type eval_multiply(arithmetic_bac result.data() *= o; } template -inline typename enable_if >::type eval_divide(arithmetic_backend& result, const A2& o) +inline typename enable_if_c<(is_arithmetic::value && !std::numeric_limits::has_infinity)>::type + eval_divide(arithmetic_backend& result, const A2& o) { - if(!std::numeric_limits::has_infinity && !o) + if(!o) BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() /= o; } +template +inline typename enable_if_c<(is_arithmetic::value && std::numeric_limits::has_infinity)>::type + eval_divide(arithmetic_backend& result, const A2& o) +{ + result.data() /= o; +} template inline void eval_add(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) @@ -198,9 +210,14 @@ inline void eval_multiply(arithmetic_backend& result, const arithmet result.data() = a.data() * b.data(); } template -inline void eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) +inline typename enable_if_c::has_infinity>::type eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) { - if(!std::numeric_limits::has_infinity && !b.data()) + result.data() = a.data() / b.data(); +} +template +inline typename disable_if_c::has_infinity>::type eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const arithmetic_backend& b) +{ + if(!b.data()) BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() = a.data() / b.data(); } @@ -221,12 +238,19 @@ inline typename enable_if>::type eval_multiply(arithmetic_back result.data() = a.data() * b; } template -inline typename enable_if>::type eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) +inline typename enable_if_c<(is_arithmetic::value && !std::numeric_limits::has_infinity)>::type + eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { - if(!std::numeric_limits::has_infinity && !b) + if(!b) BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero")); result.data() = a.data() / b; } +template +inline typename enable_if_c<(is_arithmetic::value && std::numeric_limits::has_infinity)>::type + eval_divide(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) +{ + result.data() = a.data() / b; +} template inline bool eval_is_zero(const arithmetic_backend& val) diff --git a/performance/delaunay_data.txt b/performance/delaunay_data.txt deleted file mode 100644 index 20932f78..00000000 --- a/performance/delaunay_data.txt +++ /dev/null @@ -1,100000 +0,0 @@ -1760125 5599875 1663688 5645904 1599875 5760125 1760125 5760125 -1760125 5599875 1599875 5599875 1663688 5645904 1760125 5760125 -1663688 5645904 1599875 5599875 1599875 5760125 1760125 5760125 -1760125 5599875 1663776 5645840 1663688 5645904 1760125 5760125 -1760125 5599875 1599875 5599875 1663776 5645840 1760125 5760125 -1663776 5645840 1599875 5599875 1663688 5645904 1760125 5760125 -1663688 5645904 1599875 5760125 1760125 5760125 1663776 5645840 -1663688 5645904 1663776 5645840 1599875 5599875 1599875 5760125 -1663776 5645840 1663816 5645848 1760125 5599875 1599875 5599875 -1760125 5760125 1663816 5645848 1663776 5645840 1663688 5645904 -1663816 5645848 1760125 5599875 1663776 5645840 1663688 5645904 -1760125 5760125 1663816 5645848 1663688 5645904 1599875 5760125 -1760125 5760125 1760125 5599875 1663816 5645848 1663688 5645904 -1663816 5645848 1663856 5645872 1760125 5599875 1663776 5645840 -1760125 5760125 1663856 5645872 1663816 5645848 1663688 5645904 -1663856 5645872 1760125 5599875 1663816 5645848 1663688 5645904 -1760125 5760125 1663856 5645872 1663688 5645904 1599875 5760125 -1663816 5645848 1663776 5645840 1663688 5645904 1663856 5645872 -1663688 5645904 1599875 5599875 1599875 5760125 1663856 5645872 -1663856 5645872 1663816 5645848 1663688 5645904 1599875 5760125 -1760125 5760125 1760125 5599875 1663856 5645872 1599875 5760125 -1663856 5645872 1663944 5645952 1760125 5599875 1663816 5645848 -1760125 5760125 1663944 5645952 1663856 5645872 1599875 5760125 -1760125 5760125 1760125 5599875 1663944 5645952 1599875 5760125 -1663856 5645872 1663688 5645904 1599875 5760125 1663944 5645952 -1663944 5645952 1760125 5599875 1663856 5645872 1663688 5645904 -1663688 5645904 1599875 5599875 1599875 5760125 1663944 5645952 -1663856 5645872 1663816 5645848 1663688 5645904 1663944 5645952 -1599875 5760125 1760125 5760125 1663944 5645952 1663688 5645904 -1760125 5760125 1664040 5646064 1663944 5645952 1599875 5760125 -1760125 5760125 1760125 5599875 1664040 5646064 1599875 5760125 -1663944 5645952 1664040 5646064 1760125 5599875 1663856 5645872 -1663944 5645952 1663688 5645904 1599875 5760125 1664040 5646064 -1599875 5760125 1760125 5760125 1664040 5646064 1663688 5645904 -1663944 5645952 1663856 5645872 1663688 5645904 1664040 5646064 -1663688 5645904 1599875 5599875 1599875 5760125 1664040 5646064 -1664040 5646064 1760125 5599875 1663944 5645952 1663688 5645904 -1664040 5646064 1664040 5646192 1760125 5760125 1760125 5599875 -1599875 5760125 1664040 5646192 1664040 5646064 1663688 5645904 -1599875 5760125 1760125 5760125 1664040 5646192 1663688 5645904 -1664040 5646192 1599875 5760125 1760125 5760125 1760125 5599875 -1599875 5760125 1664040 5646192 1663688 5645904 1599875 5599875 -1664040 5646064 1663944 5645952 1663688 5645904 1664040 5646192 -1663688 5645904 1599875 5760125 1664040 5646192 1663944 5645952 -1663944 5645952 1663856 5645872 1663688 5645904 1664040 5646192 -1664040 5646064 1664040 5646192 1760125 5599875 1663944 5645952 -1664040 5646064 1663944 5645952 1664040 5646192 1760125 5599875 -1664040 5646192 1663944 5646256 1599875 5760125 1760125 5760125 -1664040 5646192 1663688 5645904 1663944 5646256 1760125 5760125 -1663688 5645904 1663944 5646256 1664040 5646192 1663944 5645952 -1663688 5645904 1599875 5760125 1663944 5646256 1663944 5645952 -1663944 5646256 1760125 5760125 1664040 5646192 1663944 5645952 -1663688 5645904 1663944 5646256 1663944 5645952 1663856 5645872 -1664040 5646192 1663944 5646256 1760125 5760125 1760125 5599875 -1663944 5646256 1663688 5645904 1599875 5760125 1760125 5760125 -1599875 5760125 1663944 5646256 1663688 5645904 1599875 5599875 -1664040 5646192 1664040 5646064 1663944 5645952 1663944 5646256 -1664040 5646192 1664040 5646064 1663944 5646256 1760125 5760125 -1663944 5645952 1663688 5645904 1663944 5646256 1664040 5646064 -1663688 5645904 1663880 5646248 1663944 5646256 1663944 5645952 -1663688 5645904 1599875 5760125 1663880 5646248 1663944 5645952 -1663944 5646256 1664040 5646064 1663944 5645952 1663880 5646248 -1663944 5645952 1663688 5645904 1663880 5646248 1664040 5646064 -1663688 5645904 1663880 5646248 1663944 5645952 1663856 5645872 -1663944 5646256 1663880 5646248 1599875 5760125 1760125 5760125 -1599875 5760125 1663880 5646248 1663688 5645904 1599875 5599875 -1663944 5646256 1664040 5646192 1664040 5646064 1663880 5646248 -1663880 5646248 1599875 5760125 1663944 5646256 1664040 5646064 -1663688 5645904 1663776 5646144 1663880 5646248 1663944 5645952 -1663880 5646248 1664040 5646064 1663944 5645952 1663776 5646144 -1663944 5645952 1663688 5645904 1663776 5646144 1664040 5646064 -1663776 5646144 1599875 5760125 1663880 5646248 1664040 5646064 -1663880 5646248 1663944 5646256 1664040 5646064 1663776 5646144 -1663688 5645904 1663776 5646144 1663944 5645952 1663856 5645872 -1663776 5646144 1664040 5646064 1663944 5645952 1663856 5645872 -1599875 5760125 1663776 5646144 1663688 5645904 1599875 5599875 -1599875 5760125 1663880 5646248 1663776 5646144 1599875 5599875 -1663688 5645904 1663776 5645840 1599875 5599875 1663776 5646144 -1663688 5645904 1663776 5646144 1663856 5645872 1663816 5645848 -1663880 5646248 1663776 5646144 1599875 5760125 1663944 5646256 -1663688 5645904 1599875 5599875 1663776 5646144 1663856 5645872 -1599875 5599875 1663688 5645984 1663688 5645904 1663776 5645840 -1663776 5646144 1663688 5645984 1599875 5599875 1599875 5760125 -1663776 5646144 1663688 5645984 1599875 5760125 1663880 5646248 -1663688 5645984 1663688 5645904 1599875 5599875 1599875 5760125 -1663776 5646144 1663688 5645904 1663688 5645984 1599875 5760125 -1663688 5645904 1663688 5645984 1663776 5646144 1663856 5645872 -1663688 5645904 1599875 5599875 1663688 5645984 1663856 5645872 -1663688 5645984 1599875 5760125 1663776 5646144 1663856 5645872 -1663776 5646144 1663944 5645952 1663856 5645872 1663688 5645984 -1663776 5646144 1664040 5646064 1663944 5645952 1663688 5645984 -1663776 5646144 1663944 5645952 1663688 5645984 1599875 5760125 -1663688 5645904 1663688 5645984 1663856 5645872 1663816 5645848 -1663688 5645904 1599875 5599875 1663688 5645984 1663816 5645848 -1663688 5645904 1663688 5645984 1663816 5645848 1663776 5645840 -1663856 5645872 1663816 5645848 1663688 5645984 1663944 5645952 -1664040 5646192 1751256 5699712 1760125 5599875 1664040 5646064 -1760125 5760125 1751256 5699712 1664040 5646192 1663944 5646256 -1760125 5760125 1760125 5599875 1751256 5699712 1663944 5646256 -1760125 5760125 1751256 5699712 1663944 5646256 1599875 5760125 -1760125 5760125 1760125 5599875 1751256 5699712 1599875 5760125 -1751256 5699712 1760125 5599875 1664040 5646192 1663944 5646256 -1751256 5699712 1664040 5646192 1663944 5646256 1599875 5760125 -1663944 5646256 1663880 5646248 1599875 5760125 1751256 5699712 -1760125 5760125 1751376 5699584 1751256 5699712 1599875 5760125 -1751256 5699712 1751376 5699584 1760125 5599875 1664040 5646192 -1751376 5699584 1760125 5760125 1760125 5599875 1664040 5646192 -1760125 5599875 1664040 5646064 1664040 5646192 1751376 5699584 -1751256 5699712 1751376 5699584 1664040 5646192 1663944 5646256 -1751256 5699712 1760125 5760125 1751376 5699584 1664040 5646192 -1751376 5699584 1751504 5699528 1760125 5599875 1664040 5646192 -1760125 5760125 1751504 5699528 1751376 5699584 1751256 5699712 -1760125 5760125 1751504 5699528 1751256 5699712 1599875 5760125 -1751504 5699528 1760125 5599875 1751376 5699584 1751256 5699712 -1760125 5760125 1760125 5599875 1751504 5699528 1751256 5699712 -1751504 5699528 1751632 5699584 1760125 5599875 1751376 5699584 -1760125 5760125 1751632 5699584 1751504 5699528 1751256 5699712 -1760125 5760125 1751632 5699584 1751256 5699712 1599875 5760125 -1751632 5699584 1760125 5599875 1751504 5699528 1751256 5699712 -1751504 5699528 1751376 5699584 1751256 5699712 1751632 5699584 -1751256 5699712 1760125 5760125 1751632 5699584 1751376 5699584 -1751504 5699528 1751376 5699584 1751632 5699584 1760125 5599875 -1760125 5760125 1760125 5599875 1751632 5699584 1751256 5699712 -1760125 5760125 1751632 5699656 1751256 5699712 1599875 5760125 -1751256 5699712 1751632 5699656 1751632 5699584 1751376 5699584 -1751632 5699656 1760125 5760125 1751632 5699584 1751376 5699584 -1751632 5699584 1751504 5699528 1751376 5699584 1751632 5699656 -1751632 5699584 1751504 5699528 1751632 5699656 1760125 5760125 -1751376 5699584 1751256 5699712 1751632 5699656 1751504 5699528 -1751256 5699712 1760125 5760125 1751632 5699656 1751376 5699584 -1751632 5699584 1751632 5699656 1760125 5760125 1760125 5599875 -1760125 5760125 1751504 5699800 1751256 5699712 1599875 5760125 -1751632 5699656 1751504 5699800 1760125 5760125 1751632 5699584 -1751256 5699712 1751504 5699800 1751632 5699656 1751376 5699584 -1751632 5699656 1751504 5699528 1751376 5699584 1751504 5699800 -1751504 5699800 1760125 5760125 1751632 5699656 1751504 5699528 -1751632 5699656 1751632 5699584 1751504 5699528 1751504 5699800 -1751376 5699584 1751256 5699712 1751504 5699800 1751504 5699528 -1751256 5699712 1760125 5760125 1751504 5699800 1751376 5699584 -1760125 5760125 1751416 5699840 1751256 5699712 1599875 5760125 -1751504 5699800 1751416 5699840 1760125 5760125 1751632 5699656 -1751256 5699712 1751416 5699840 1751504 5699800 1751376 5699584 -1751256 5699712 1760125 5760125 1751416 5699840 1751376 5699584 -1751504 5699800 1751504 5699528 1751376 5699584 1751416 5699840 -1751416 5699840 1760125 5760125 1751504 5699800 1751376 5699584 -1760125 5760125 1751376 5699848 1751256 5699712 1599875 5760125 -1751256 5699712 1751376 5699848 1751416 5699840 1751376 5699584 -1751416 5699840 1751376 5699848 1760125 5760125 1751504 5699800 -1751256 5699712 1751256 5699792 1760125 5760125 1751376 5699848 -1599875 5760125 1751256 5699792 1751256 5699712 1663944 5646256 -1751256 5699712 1751256 5699792 1751376 5699848 1751416 5699840 -1751256 5699792 1599875 5760125 1760125 5760125 1751376 5699848 -1599875 5760125 1760125 5760125 1751256 5699792 1663944 5646256 -1751256 5699712 1663944 5646256 1751256 5699792 1751376 5699848 -1760125 5760125 1751416 5699840 1751376 5699848 1751256 5699792 -1751256 5699712 1664040 5646192 1663944 5646256 1751256 5699792 -1599875 5760125 1751256 5699792 1663944 5646256 1663880 5646248 -1751632 5699584 1753680 5698984 1760125 5599875 1751504 5699528 -1751632 5699584 1760125 5760125 1753680 5698984 1751504 5699528 -1753680 5698984 1760125 5760125 1760125 5599875 1751504 5699528 -1760125 5599875 1751376 5699584 1751504 5699528 1753680 5698984 -1760125 5760125 1753680 5698984 1751632 5699584 1751632 5699656 -1760125 5760125 1760125 5599875 1753680 5698984 1751632 5699656 -1753680 5698984 1751504 5699528 1751632 5699584 1751632 5699656 -1760125 5760125 1753680 5698984 1751632 5699656 1751504 5699800 -1760125 5760125 1760125 5599875 1753680 5698984 1751504 5699800 -1753680 5698984 1751632 5699584 1751632 5699656 1751504 5699800 -1760125 5760125 1753680 5698984 1751504 5699800 1751416 5699840 -1760125 5760125 1760125 5599875 1753680 5698984 1751416 5699840 -1753680 5698984 1751632 5699656 1751504 5699800 1751416 5699840 -1760125 5760125 1753680 5698984 1751416 5699840 1751376 5699848 -1760125 5760125 1753776 5699120 1753680 5698984 1751416 5699840 -1753680 5698984 1753776 5699120 1760125 5599875 1751504 5699528 -1760125 5760125 1760125 5599875 1753776 5699120 1751416 5699840 -1753776 5699120 1760125 5599875 1753680 5698984 1751416 5699840 -1753680 5698984 1751504 5699800 1751416 5699840 1753776 5699120 -1751416 5699840 1760125 5760125 1753776 5699120 1751504 5699800 -1753680 5698984 1751632 5699656 1751504 5699800 1753776 5699120 -1753680 5698984 1751632 5699584 1751632 5699656 1753776 5699120 -1753680 5698984 1751632 5699656 1753776 5699120 1760125 5599875 -1751504 5699800 1751416 5699840 1753776 5699120 1751632 5699656 -1760125 5760125 1753776 5699120 1751416 5699840 1751376 5699848 -1760125 5760125 1754024 5699640 1753776 5699120 1751416 5699840 -1760125 5760125 1760125 5599875 1754024 5699640 1751416 5699840 -1753776 5699120 1751504 5699800 1751416 5699840 1754024 5699640 -1754024 5699640 1760125 5599875 1753776 5699120 1751504 5699800 -1751416 5699840 1760125 5760125 1754024 5699640 1751504 5699800 -1753776 5699120 1754024 5699640 1760125 5599875 1753680 5698984 -1753776 5699120 1751632 5699656 1751504 5699800 1754024 5699640 -1751504 5699800 1751416 5699840 1754024 5699640 1751632 5699656 -1753776 5699120 1753680 5698984 1751632 5699656 1754024 5699640 -1753776 5699120 1751632 5699656 1754024 5699640 1760125 5599875 -1760125 5760125 1754024 5699640 1751416 5699840 1751376 5699848 -1760125 5760125 1760125 5599875 1754024 5699640 1751376 5699848 -1760125 5760125 1754024 5699640 1751376 5699848 1751256 5699792 -1754024 5699640 1751504 5699800 1751416 5699840 1751376 5699848 -1754024 5699640 1754056 5699880 1760125 5599875 1753776 5699120 -1760125 5760125 1754056 5699880 1754024 5699640 1751376 5699848 -1754024 5699640 1751416 5699840 1751376 5699848 1754056 5699880 -1751376 5699848 1760125 5760125 1754056 5699880 1751416 5699840 -1754056 5699880 1760125 5599875 1754024 5699640 1751416 5699840 -1760125 5760125 1760125 5599875 1754056 5699880 1751376 5699848 -1760125 5760125 1754056 5699880 1751376 5699848 1751256 5699792 -1754024 5699640 1751504 5699800 1751416 5699840 1754056 5699880 -1751416 5699840 1751376 5699848 1754056 5699880 1751504 5699800 -1754024 5699640 1751504 5699800 1754056 5699880 1760125 5599875 -1754024 5699640 1751632 5699656 1751504 5699800 1754056 5699880 -1754024 5699640 1751632 5699656 1754056 5699880 1760125 5599875 -1751504 5699800 1751416 5699840 1754056 5699880 1751632 5699656 -1754024 5699640 1753776 5699120 1751632 5699656 1754056 5699880 -1751376 5699848 1753864 5699912 1754056 5699880 1751416 5699840 -1754056 5699880 1751504 5699800 1751416 5699840 1753864 5699912 -1751416 5699840 1751376 5699848 1753864 5699912 1751504 5699800 -1751376 5699848 1760125 5760125 1753864 5699912 1751416 5699840 -1753864 5699912 1760125 5760125 1754056 5699880 1751504 5699800 -1754056 5699880 1753864 5699912 1760125 5760125 1760125 5599875 -1760125 5760125 1753864 5699912 1751376 5699848 1751256 5699792 -1754056 5699880 1751632 5699656 1751504 5699800 1753864 5699912 -1751504 5699800 1751416 5699840 1753864 5699912 1751632 5699656 -1754056 5699880 1754024 5699640 1751632 5699656 1753864 5699912 -1754056 5699880 1754024 5699640 1753864 5699912 1760125 5760125 -1751632 5699656 1751504 5699800 1753864 5699912 1754024 5699640 -1754024 5699640 1753776 5699120 1751632 5699656 1753864 5699912 -1754024 5699640 1753776 5699120 1753864 5699912 1754056 5699880 -1753776 5699120 1753680 5698984 1751632 5699656 1753864 5699912 -1753680 5698984 1751632 5699584 1751632 5699656 1753864 5699912 -1751632 5699656 1751504 5699800 1753864 5699912 1753680 5698984 -1753776 5699120 1753680 5698984 1753864 5699912 1754024 5699640 -1751632 5699656 1753600 5699872 1753680 5698984 1751632 5699584 -1753680 5698984 1751504 5699528 1751632 5699584 1753600 5699872 -1753680 5698984 1753600 5699872 1753864 5699912 1753776 5699120 -1753600 5699872 1753776 5699120 1753680 5698984 1751632 5699584 -1753600 5699872 1751632 5699656 1753864 5699912 1753776 5699120 -1753864 5699912 1753600 5699872 1751632 5699656 1751504 5699800 -1753864 5699912 1753600 5699872 1751504 5699800 1751416 5699840 -1753864 5699912 1753600 5699872 1751416 5699840 1751376 5699848 -1753600 5699872 1751504 5699800 1751416 5699840 1751376 5699848 -1753864 5699912 1753600 5699872 1751376 5699848 1760125 5760125 -1753864 5699912 1753776 5699120 1753600 5699872 1751376 5699848 -1753600 5699872 1751632 5699656 1751504 5699800 1751416 5699840 -1751632 5699656 1751504 5699800 1753600 5699872 1751632 5699584 -1753864 5699912 1754024 5699640 1753776 5699120 1753600 5699872 -1753864 5699912 1754056 5699880 1754024 5699640 1753600 5699872 -1753776 5699120 1753680 5698984 1753600 5699872 1754024 5699640 -1753864 5699912 1754024 5699640 1753600 5699872 1751376 5699848 -1753600 5699872 1753240 5699848 1751504 5699800 1751416 5699840 -1753600 5699872 1753240 5699848 1751416 5699840 1751376 5699848 -1753600 5699872 1753240 5699848 1751376 5699848 1753864 5699912 -1753240 5699848 1751416 5699840 1751376 5699848 1753864 5699912 -1751376 5699848 1760125 5760125 1753864 5699912 1753240 5699848 -1753600 5699872 1751632 5699656 1753240 5699848 1753864 5699912 -1753240 5699848 1751504 5699800 1751416 5699840 1751376 5699848 -1751632 5699656 1753240 5699848 1753600 5699872 1751632 5699584 -1753600 5699872 1753680 5698984 1751632 5699584 1753240 5699848 -1753680 5698984 1751504 5699528 1751632 5699584 1753240 5699848 -1753240 5699848 1753864 5699912 1753600 5699872 1753680 5698984 -1753600 5699872 1753776 5699120 1753680 5698984 1753240 5699848 -1753680 5698984 1751632 5699584 1753240 5699848 1753776 5699120 -1753600 5699872 1754024 5699640 1753776 5699120 1753240 5699848 -1753600 5699872 1753776 5699120 1753240 5699848 1753864 5699912 -1751632 5699584 1751632 5699656 1753240 5699848 1753680 5698984 -1751632 5699656 1751504 5699800 1753240 5699848 1751632 5699584 -1753240 5699848 1751632 5699656 1751504 5699800 1751416 5699840 -1753680 5698984 1752888 5699728 1753240 5699848 1753776 5699120 -1751632 5699584 1752888 5699728 1753680 5698984 1751504 5699528 -1753240 5699848 1752888 5699728 1751632 5699584 1751632 5699656 -1752888 5699728 1753680 5698984 1751632 5699584 1751632 5699656 -1753240 5699848 1753680 5698984 1752888 5699728 1751632 5699656 -1753240 5699848 1752888 5699728 1751632 5699656 1751504 5699800 -1752888 5699728 1751632 5699584 1751632 5699656 1751504 5699800 -1753240 5699848 1753680 5698984 1752888 5699728 1751504 5699800 -1753240 5699848 1752888 5699728 1751504 5699800 1751416 5699840 -1753240 5699848 1752888 5699728 1751416 5699840 1751376 5699848 -1753240 5699848 1753680 5698984 1752888 5699728 1751416 5699840 -1752888 5699728 1751632 5699656 1751504 5699800 1751416 5699840 -1751632 5699584 1752344 5699616 1753680 5698984 1751504 5699528 -1752344 5699616 1752888 5699728 1753680 5698984 1751504 5699528 -1751632 5699584 1752888 5699728 1752344 5699616 1751504 5699528 -1753680 5698984 1760125 5599875 1751504 5699528 1752344 5699616 -1752888 5699728 1752344 5699616 1751632 5699584 1751632 5699656 -1752344 5699616 1751504 5699528 1751632 5699584 1751632 5699656 -1752888 5699728 1752344 5699616 1751632 5699656 1751504 5699800 -1752344 5699616 1751632 5699584 1751632 5699656 1751504 5699800 -1752888 5699728 1752344 5699616 1751504 5699800 1751416 5699840 -1752888 5699728 1753680 5698984 1752344 5699616 1751504 5699800 -1753680 5698984 1752344 5699616 1752888 5699728 1753240 5699848 -1753680 5698984 1752136 5699488 1752344 5699616 1752888 5699728 -1752344 5699616 1752136 5699488 1751504 5699528 1751632 5699584 -1752344 5699616 1752136 5699488 1751632 5699584 1751632 5699656 -1752136 5699488 1751504 5699528 1751632 5699584 1751632 5699656 -1751504 5699528 1752136 5699488 1753680 5698984 1760125 5599875 -1752136 5699488 1753680 5698984 1751504 5699528 1751632 5699584 -1752344 5699616 1753680 5698984 1752136 5699488 1751632 5699656 -1752344 5699616 1752136 5699488 1751632 5699656 1751504 5699800 -1753680 5698984 1752256 5699496 1752344 5699616 1752888 5699728 -1753680 5698984 1752136 5699488 1752256 5699496 1752888 5699728 -1752256 5699496 1752136 5699488 1752344 5699616 1752888 5699728 -1752136 5699488 1752256 5699496 1753680 5698984 1751504 5699528 -1753680 5698984 1752256 5699496 1752888 5699728 1753240 5699848 -1753680 5698984 1752320 5699432 1752256 5699496 1752888 5699728 -1753680 5698984 1752136 5699488 1752320 5699432 1752888 5699728 -1752320 5699432 1752136 5699488 1752256 5699496 1752888 5699728 -1752256 5699496 1752344 5699616 1752888 5699728 1752320 5699432 -1752256 5699496 1752344 5699616 1752320 5699432 1752136 5699488 -1752888 5699728 1753680 5698984 1752320 5699432 1752344 5699616 -1752256 5699496 1752136 5699488 1752344 5699616 1752320 5699432 -1752136 5699488 1752320 5699432 1753680 5698984 1751504 5699528 -1752320 5699432 1752888 5699728 1753680 5698984 1751504 5699528 -1752136 5699488 1752256 5699496 1752320 5699432 1751504 5699528 -1753680 5698984 1760125 5599875 1751504 5699528 1752320 5699432 -1752136 5699488 1752320 5699432 1751504 5699528 1751632 5699584 -1753680 5698984 1752320 5699432 1752888 5699728 1753240 5699848 -1752320 5699432 1752464 5699464 1753680 5698984 1751504 5699528 -1752888 5699728 1752464 5699464 1752320 5699432 1752344 5699616 -1752464 5699464 1753680 5698984 1752320 5699432 1752344 5699616 -1752888 5699728 1753680 5698984 1752464 5699464 1752344 5699616 -1752320 5699432 1752256 5699496 1752344 5699616 1752464 5699464 -1753680 5698984 1752464 5699464 1752888 5699728 1753240 5699848 -1752320 5699432 1752680 5699376 1753680 5698984 1751504 5699528 -1753680 5698984 1752680 5699376 1752464 5699464 1752888 5699728 -1752680 5699376 1752320 5699432 1752464 5699464 1752888 5699728 -1752464 5699464 1752344 5699616 1752888 5699728 1752680 5699376 -1753680 5698984 1752320 5699432 1752680 5699376 1752888 5699728 -1753680 5698984 1752680 5699376 1752888 5699728 1753240 5699848 -1753680 5698984 1752768 5699224 1752320 5699432 1752680 5699376 -1752320 5699432 1752464 5699464 1752680 5699376 1752768 5699224 -1752680 5699376 1753680 5698984 1752768 5699224 1752464 5699464 -1752320 5699432 1752768 5699224 1751504 5699528 1752136 5699488 -1751504 5699528 1752768 5699224 1753680 5698984 1760125 5599875 -1753680 5698984 1753776 5699120 1760125 5599875 1752768 5699224 -1751504 5699528 1752768 5699224 1760125 5599875 1751376 5699584 -1752768 5699224 1751504 5699528 1752320 5699432 1752464 5699464 -1753680 5698984 1752768 5699224 1752680 5699376 1752888 5699728 -1752768 5699224 1752464 5699464 1752680 5699376 1752888 5699728 -1752680 5699376 1752464 5699464 1752888 5699728 1752768 5699224 -1751504 5699528 1752320 5699432 1752768 5699224 1760125 5599875 -1753680 5698984 1760125 5599875 1752768 5699224 1752888 5699728 -1753680 5698984 1752768 5699224 1752888 5699728 1753240 5699848 -1753680 5698984 1752768 5699224 1753240 5699848 1753776 5699120 -1752768 5699224 1752680 5699376 1752888 5699728 1753240 5699848 -1753680 5698984 1760125 5599875 1752768 5699224 1753240 5699848 -1751504 5699528 1752400 5699056 1760125 5599875 1751376 5699584 -1760125 5599875 1664040 5646192 1751376 5699584 1752400 5699056 -1752400 5699056 1752768 5699224 1760125 5599875 1751376 5699584 -1760125 5599875 1752400 5699056 1752768 5699224 1753680 5698984 -1760125 5599875 1751376 5699584 1752400 5699056 1753680 5698984 -1760125 5599875 1752400 5699056 1753680 5698984 1753776 5699120 -1752768 5699224 1752400 5699056 1751504 5699528 1752320 5699432 -1751504 5699528 1752136 5699488 1752320 5699432 1752400 5699056 -1752136 5699488 1752256 5699496 1752320 5699432 1752400 5699056 -1752768 5699224 1752400 5699056 1752320 5699432 1752464 5699464 -1752768 5699224 1752400 5699056 1752464 5699464 1752680 5699376 -1752400 5699056 1752320 5699432 1752464 5699464 1752680 5699376 -1752320 5699432 1752464 5699464 1752400 5699056 1752136 5699488 -1751504 5699528 1751632 5699584 1752136 5699488 1752400 5699056 -1752400 5699056 1752680 5699376 1752768 5699224 1753680 5698984 -1752768 5699224 1753240 5699848 1753680 5698984 1752400 5699056 -1751504 5699528 1752136 5699488 1752400 5699056 1751376 5699584 -1751376 5699584 1752272 5699088 1760125 5599875 1664040 5646192 -1760125 5599875 1752272 5699088 1752400 5699056 1753680 5698984 -1752272 5699088 1752400 5699056 1760125 5599875 1664040 5646192 -1760125 5599875 1664040 5646064 1664040 5646192 1752272 5699088 -1751376 5699584 1752400 5699056 1752272 5699088 1664040 5646192 -1752400 5699056 1752272 5699088 1751376 5699584 1751504 5699528 -1752272 5699088 1664040 5646192 1751376 5699584 1751504 5699528 -1752400 5699056 1760125 5599875 1752272 5699088 1751504 5699528 -1752400 5699056 1752272 5699088 1751504 5699528 1752136 5699488 -1752400 5699056 1752272 5699088 1752136 5699488 1752320 5699432 -1752136 5699488 1752256 5699496 1752320 5699432 1752272 5699088 -1752272 5699088 1751376 5699584 1751504 5699528 1752136 5699488 -1752400 5699056 1752272 5699088 1752320 5699432 1752464 5699464 -1751504 5699528 1751632 5699584 1752136 5699488 1752272 5699088 -1751632 5699584 1751632 5699656 1752136 5699488 1752272 5699088 -1751504 5699528 1751632 5699584 1752272 5699088 1751376 5699584 -1752400 5699056 1760125 5599875 1752272 5699088 1752320 5699432 -1752272 5699088 1751632 5699584 1752136 5699488 1752320 5699432 -1751376 5699584 1752272 5699088 1664040 5646192 1751256 5699712 -1664040 5646192 1752080 5699016 1752272 5699088 1760125 5599875 -1752272 5699088 1752400 5699056 1760125 5599875 1752080 5699016 -1760125 5599875 1664040 5646192 1752080 5699016 1752400 5699056 -1752400 5699056 1753680 5698984 1760125 5599875 1752080 5699016 -1760125 5599875 1664040 5646192 1752080 5699016 1753680 5698984 -1752400 5699056 1753680 5698984 1752080 5699016 1752272 5699088 -1664040 5646192 1751376 5699584 1752080 5699016 1760125 5599875 -1664040 5646192 1752080 5699016 1760125 5599875 1664040 5646064 -1753680 5698984 1753776 5699120 1760125 5599875 1752080 5699016 -1752272 5699088 1752080 5699016 1751376 5699584 1751504 5699528 -1752272 5699088 1752080 5699016 1751504 5699528 1751632 5699584 -1752272 5699088 1752080 5699016 1751632 5699584 1752136 5699488 -1751632 5699584 1751632 5699656 1752136 5699488 1752080 5699016 -1752080 5699016 1751376 5699584 1751504 5699528 1751632 5699584 -1752080 5699016 1751504 5699528 1751632 5699584 1752136 5699488 -1752400 5699056 1752768 5699224 1753680 5698984 1752080 5699016 -1752272 5699088 1752080 5699016 1752136 5699488 1752320 5699432 -1752080 5699016 1752136 5699488 1752272 5699088 1752400 5699056 -1752080 5699016 1664040 5646192 1751376 5699584 1751504 5699528 -1751376 5699584 1752080 5699016 1664040 5646192 1751256 5699712 -1760125 5599875 1752032 5698952 1752080 5699016 1753680 5698984 -1752080 5699016 1752400 5699056 1753680 5698984 1752032 5698952 -1753680 5698984 1760125 5599875 1752032 5698952 1752400 5699056 -1752080 5699016 1752272 5699088 1752400 5699056 1752032 5698952 -1752400 5699056 1753680 5698984 1752032 5698952 1752272 5699088 -1752080 5699016 1752032 5698952 1664040 5646192 1751376 5699584 -1752032 5698952 1760125 5599875 1664040 5646192 1751376 5699584 -1760125 5599875 1664040 5646192 1752032 5698952 1753680 5698984 -1664040 5646192 1752032 5698952 1760125 5599875 1664040 5646064 -1760125 5599875 1752032 5698952 1753680 5698984 1753776 5699120 -1752400 5699056 1752768 5699224 1753680 5698984 1752032 5698952 -1752032 5698952 1751376 5699584 1752080 5699016 1752272 5699088 -1752080 5699016 1752032 5698952 1751376 5699584 1751504 5699528 -1752032 5698952 1664040 5646192 1751376 5699584 1751504 5699528 -1752080 5699016 1752032 5698952 1751504 5699528 1751632 5699584 -1752080 5699016 1752032 5698952 1751632 5699584 1752136 5699488 -1752080 5699016 1752272 5699088 1752032 5698952 1751632 5699584 -1752032 5698952 1751376 5699584 1751504 5699528 1751632 5699584 -1664040 5646192 1751256 5699712 1751376 5699584 1752032 5698952 -1752032 5698952 1751944 5698896 1664040 5646192 1751376 5699584 -1752032 5698952 1751944 5698896 1751376 5699584 1751504 5699528 -1751944 5698896 1664040 5646192 1751376 5699584 1751504 5699528 -1752032 5698952 1760125 5599875 1751944 5698896 1751504 5699528 -1760125 5599875 1751944 5698896 1752032 5698952 1753680 5698984 -1752032 5698952 1752400 5699056 1753680 5698984 1751944 5698896 -1752032 5698952 1752272 5699088 1752400 5699056 1751944 5698896 -1751944 5698896 1751504 5699528 1752032 5698952 1752400 5699056 -1753680 5698984 1760125 5599875 1751944 5698896 1752400 5699056 -1760125 5599875 1664040 5646192 1751944 5698896 1753680 5698984 -1664040 5646192 1751944 5698896 1760125 5599875 1664040 5646064 -1751944 5698896 1760125 5599875 1664040 5646192 1751376 5699584 -1760125 5599875 1751944 5698896 1753680 5698984 1753776 5699120 -1752400 5699056 1752768 5699224 1753680 5698984 1751944 5698896 -1752032 5698952 1751944 5698896 1751504 5699528 1751632 5699584 -1751944 5698896 1751376 5699584 1751504 5699528 1751632 5699584 -1752032 5698952 1752400 5699056 1751944 5698896 1751632 5699584 -1752032 5698952 1751944 5698896 1751632 5699584 1752080 5699016 -1752032 5698952 1752400 5699056 1751944 5698896 1752080 5699016 -1751632 5699584 1752136 5699488 1752080 5699016 1751944 5698896 -1751944 5698896 1751504 5699528 1751632 5699584 1752080 5699016 -1664040 5646192 1751256 5699712 1751376 5699584 1751944 5698896 -1751376 5699584 1751504 5699528 1751944 5698896 1751256 5699712 -1664040 5646192 1663944 5646256 1751256 5699712 1751944 5698896 -1664040 5646192 1751256 5699712 1751944 5698896 1760125 5599875 -1753680 5698984 1752144 5698864 1751944 5698896 1752400 5699056 -1751944 5698896 1752032 5698952 1752400 5699056 1752144 5698864 -1752032 5698952 1752272 5699088 1752400 5699056 1752144 5698864 -1752032 5698952 1752272 5699088 1752144 5698864 1751944 5698896 -1752032 5698952 1752080 5699016 1752272 5699088 1752144 5698864 -1752032 5698952 1752080 5699016 1752144 5698864 1751944 5698896 -1752272 5699088 1752400 5699056 1752144 5698864 1752080 5699016 -1752400 5699056 1753680 5698984 1752144 5698864 1752272 5699088 -1752144 5698864 1760125 5599875 1751944 5698896 1752032 5698952 -1751944 5698896 1752144 5698864 1760125 5599875 1664040 5646192 -1753680 5698984 1760125 5599875 1752144 5698864 1752400 5699056 -1760125 5599875 1752144 5698864 1753680 5698984 1753776 5699120 -1753680 5698984 1752144 5698864 1752400 5699056 1752768 5699224 -1753680 5698984 1752504 5698880 1752144 5698864 1752400 5699056 -1752144 5698864 1752272 5699088 1752400 5699056 1752504 5698880 -1752504 5698880 1760125 5599875 1752144 5698864 1752400 5699056 -1752144 5698864 1752504 5698880 1760125 5599875 1751944 5698896 -1760125 5599875 1752504 5698880 1753680 5698984 1753776 5699120 -1753680 5698984 1752504 5698880 1752400 5699056 1752768 5699224 -1752504 5698880 1752144 5698864 1752400 5699056 1752768 5699224 -1753680 5698984 1760125 5599875 1752504 5698880 1752768 5699224 -1753680 5698984 1752504 5698880 1752768 5699224 1753240 5699848 -1752504 5698880 1752592 5698848 1760125 5599875 1752144 5698864 -1752504 5698880 1753680 5698984 1752592 5698848 1752144 5698864 -1760125 5599875 1751944 5698896 1752144 5698864 1752592 5698848 -1760125 5599875 1752592 5698848 1753680 5698984 1753776 5699120 -1753680 5698984 1752592 5698848 1752504 5698880 1752768 5699224 -1752592 5698848 1752144 5698864 1752504 5698880 1752768 5699224 -1752504 5698880 1752400 5699056 1752768 5699224 1752592 5698848 -1752592 5698848 1753680 5698984 1760125 5599875 1752144 5698864 -1753680 5698984 1760125 5599875 1752592 5698848 1752768 5699224 -1753680 5698984 1752592 5698848 1752768 5699224 1753240 5699848 -1760125 5599875 1752856 5698864 1753680 5698984 1753776 5699120 -1752592 5698848 1752856 5698864 1760125 5599875 1752144 5698864 -1753680 5698984 1752856 5698864 1752592 5698848 1752768 5699224 -1753680 5698984 1760125 5599875 1752856 5698864 1752768 5699224 -1752592 5698848 1752504 5698880 1752768 5699224 1752856 5698864 -1752856 5698864 1760125 5599875 1752592 5698848 1752768 5699224 -1753680 5698984 1752856 5698864 1752768 5699224 1753240 5699848 -1752856 5698864 1752920 5698728 1760125 5599875 1752592 5698848 -1752856 5698864 1753680 5698984 1752920 5698728 1752592 5698848 -1753680 5698984 1752920 5698728 1752856 5698864 1752768 5699224 -1760125 5599875 1752920 5698728 1753680 5698984 1753776 5699120 -1752920 5698728 1753680 5698984 1760125 5599875 1752592 5698848 -1760125 5599875 1752144 5698864 1752592 5698848 1752920 5698728 -1752144 5698864 1752504 5698880 1752592 5698848 1752920 5698728 -1752592 5698848 1752856 5698864 1752920 5698728 1752144 5698864 -1760125 5599875 1751944 5698896 1752144 5698864 1752920 5698728 -1760125 5599875 1664040 5646192 1751944 5698896 1752920 5698728 -1760125 5599875 1751944 5698896 1752920 5698728 1753680 5698984 -1752144 5698864 1752592 5698848 1752920 5698728 1751944 5698896 -1751944 5698896 1752792 5698680 1760125 5599875 1664040 5646192 -1760125 5599875 1752792 5698680 1752920 5698728 1753680 5698984 -1752792 5698680 1751944 5698896 1752920 5698728 1753680 5698984 -1760125 5599875 1752792 5698680 1753680 5698984 1753776 5699120 -1752920 5698728 1752792 5698680 1751944 5698896 1752144 5698864 -1752920 5698728 1753680 5698984 1752792 5698680 1752144 5698864 -1752792 5698680 1760125 5599875 1751944 5698896 1752144 5698864 -1752920 5698728 1752856 5698864 1753680 5698984 1752792 5698680 -1760125 5599875 1751944 5698896 1752792 5698680 1753680 5698984 -1752920 5698728 1752792 5698680 1752144 5698864 1752592 5698848 -1752144 5698864 1752504 5698880 1752592 5698848 1752792 5698680 -1752920 5698728 1752792 5698680 1752592 5698848 1752856 5698864 -1752920 5698728 1753680 5698984 1752792 5698680 1752856 5698864 -1752792 5698680 1751944 5698896 1752144 5698864 1752504 5698880 -1752592 5698848 1752856 5698864 1752792 5698680 1752504 5698880 -1751944 5698896 1752720 5698672 1760125 5599875 1664040 5646192 -1752792 5698680 1752720 5698672 1751944 5698896 1752144 5698864 -1752720 5698672 1760125 5599875 1751944 5698896 1752144 5698864 -1752792 5698680 1752720 5698672 1752144 5698864 1752504 5698880 -1752792 5698680 1752720 5698672 1752504 5698880 1752592 5698848 -1752720 5698672 1751944 5698896 1752144 5698864 1752504 5698880 -1752720 5698672 1752144 5698864 1752504 5698880 1752592 5698848 -1752792 5698680 1760125 5599875 1752720 5698672 1752592 5698848 -1760125 5599875 1752720 5698672 1752792 5698680 1753680 5698984 -1752792 5698680 1752720 5698672 1752592 5698848 1752856 5698864 -1752720 5698672 1752504 5698880 1752592 5698848 1752856 5698864 -1752792 5698680 1752720 5698672 1752856 5698864 1752920 5698728 -1752792 5698680 1760125 5599875 1752720 5698672 1752856 5698864 -1751944 5698896 1752472 5698568 1760125 5599875 1664040 5646192 -1760125 5599875 1664040 5646064 1664040 5646192 1752472 5698568 -1752720 5698672 1752472 5698568 1751944 5698896 1752144 5698864 -1760125 5599875 1752472 5698568 1752720 5698672 1752792 5698680 -1752720 5698672 1752792 5698680 1752472 5698568 1752144 5698864 -1752720 5698672 1752472 5698568 1752144 5698864 1752504 5698880 -1752472 5698568 1751944 5698896 1752144 5698864 1752504 5698880 -1752720 5698672 1752792 5698680 1752472 5698568 1752504 5698880 -1751944 5698896 1752472 5698568 1664040 5646192 1751256 5699712 -1752720 5698672 1752472 5698568 1752504 5698880 1752592 5698848 -1752720 5698672 1752472 5698568 1752592 5698848 1752856 5698864 -1752720 5698672 1752792 5698680 1752472 5698568 1752592 5698848 -1752472 5698568 1752144 5698864 1752504 5698880 1752592 5698848 -1760125 5599875 1752472 5698568 1752792 5698680 1753680 5698984 -1751944 5698896 1752144 5698864 1752472 5698568 1664040 5646192 -1752472 5698568 1752792 5698680 1760125 5599875 1664040 5646192 -1664040 5646192 1752408 5698432 1760125 5599875 1664040 5646064 -1752472 5698568 1752408 5698432 1664040 5646192 1751944 5698896 -1664040 5646192 1751256 5699712 1751944 5698896 1752408 5698432 -1752472 5698568 1752408 5698432 1751944 5698896 1752144 5698864 -1752472 5698568 1752408 5698432 1752144 5698864 1752504 5698880 -1752408 5698432 1664040 5646192 1751944 5698896 1752144 5698864 -1760125 5599875 1752408 5698432 1752472 5698568 1752792 5698680 -1752472 5698568 1752720 5698672 1752792 5698680 1752408 5698432 -1760125 5599875 1664040 5646192 1752408 5698432 1752792 5698680 -1760125 5599875 1752408 5698432 1752792 5698680 1753680 5698984 -1760125 5599875 1664040 5646192 1752408 5698432 1753680 5698984 -1760125 5599875 1752408 5698432 1753680 5698984 1753776 5699120 -1752792 5698680 1752920 5698728 1753680 5698984 1752408 5698432 -1752920 5698728 1752856 5698864 1753680 5698984 1752408 5698432 -1753680 5698984 1760125 5599875 1752408 5698432 1752920 5698728 -1752792 5698680 1752920 5698728 1752408 5698432 1752720 5698672 -1752472 5698568 1752720 5698672 1752408 5698432 1752144 5698864 -1752408 5698432 1760125 5599875 1664040 5646192 1751944 5698896 -1752408 5698432 1752504 5698368 1760125 5599875 1664040 5646192 -1760125 5599875 1664040 5646064 1664040 5646192 1752504 5698368 -1752408 5698432 1753680 5698984 1752504 5698368 1664040 5646192 -1760125 5599875 1752504 5698368 1753680 5698984 1753776 5699120 -1753680 5698984 1752504 5698368 1752408 5698432 1752920 5698728 -1752504 5698368 1664040 5646192 1752408 5698432 1752920 5698728 -1753680 5698984 1760125 5599875 1752504 5698368 1752920 5698728 -1752408 5698432 1752792 5698680 1752920 5698728 1752504 5698368 -1752408 5698432 1752792 5698680 1752504 5698368 1664040 5646192 -1753680 5698984 1752504 5698368 1752920 5698728 1752856 5698864 -1752920 5698728 1753680 5698984 1752504 5698368 1752792 5698680 -1752408 5698432 1752720 5698672 1752792 5698680 1752504 5698368 -1752408 5698432 1752472 5698568 1752720 5698672 1752504 5698368 -1752408 5698432 1752472 5698568 1752504 5698368 1664040 5646192 -1752792 5698680 1752920 5698728 1752504 5698368 1752720 5698672 -1752720 5698672 1752792 5698680 1752504 5698368 1752472 5698568 -1752408 5698432 1752504 5698368 1664040 5646192 1751944 5698896 -1752504 5698368 1753680 5698984 1760125 5599875 1664040 5646192 -1753680 5698984 1752600 5698344 1752504 5698368 1752920 5698728 -1753680 5698984 1760125 5599875 1752600 5698344 1752920 5698728 -1760125 5599875 1752600 5698344 1753680 5698984 1753776 5699120 -1753680 5698984 1752600 5698344 1752920 5698728 1752856 5698864 -1752504 5698368 1752792 5698680 1752920 5698728 1752600 5698344 -1752920 5698728 1753680 5698984 1752600 5698344 1752792 5698680 -1752504 5698368 1752720 5698672 1752792 5698680 1752600 5698344 -1752792 5698680 1752920 5698728 1752600 5698344 1752720 5698672 -1752504 5698368 1752472 5698568 1752720 5698672 1752600 5698344 -1752504 5698368 1752408 5698432 1752472 5698568 1752600 5698344 -1752720 5698672 1752792 5698680 1752600 5698344 1752472 5698568 -1752504 5698368 1752600 5698344 1760125 5599875 1664040 5646192 -1752600 5698344 1760125 5599875 1752504 5698368 1752472 5698568 -1753680 5698984 1752784 5698344 1752600 5698344 1752920 5698728 -1752600 5698344 1752792 5698680 1752920 5698728 1752784 5698344 -1752920 5698728 1753680 5698984 1752784 5698344 1752792 5698680 -1753680 5698984 1760125 5599875 1752784 5698344 1752920 5698728 -1760125 5599875 1752784 5698344 1753680 5698984 1753776 5699120 -1753680 5698984 1752784 5698344 1752920 5698728 1752856 5698864 -1752600 5698344 1752720 5698672 1752792 5698680 1752784 5698344 -1752792 5698680 1752920 5698728 1752784 5698344 1752720 5698672 -1752600 5698344 1752472 5698568 1752720 5698672 1752784 5698344 -1752600 5698344 1752784 5698344 1760125 5599875 1752504 5698368 -1752784 5698344 1760125 5599875 1752600 5698344 1752720 5698672 -1752784 5698344 1753072 5698416 1760125 5599875 1752600 5698344 -1753680 5698984 1753072 5698416 1752784 5698344 1752920 5698728 -1752784 5698344 1752792 5698680 1752920 5698728 1753072 5698416 -1752784 5698344 1752720 5698672 1752792 5698680 1753072 5698416 -1753072 5698416 1760125 5599875 1752784 5698344 1752792 5698680 -1760125 5599875 1753072 5698416 1753680 5698984 1753776 5699120 -1753680 5698984 1753072 5698416 1752920 5698728 1752856 5698864 -1752920 5698728 1753680 5698984 1753072 5698416 1752792 5698680 -1753680 5698984 1760125 5599875 1753072 5698416 1752920 5698728 -1760125 5599875 1753224 5698480 1753680 5698984 1753776 5699120 -1753072 5698416 1753224 5698480 1760125 5599875 1752784 5698344 -1753680 5698984 1753224 5698480 1753072 5698416 1752920 5698728 -1753680 5698984 1760125 5599875 1753224 5698480 1752920 5698728 -1753680 5698984 1753224 5698480 1752920 5698728 1752856 5698864 -1753072 5698416 1752792 5698680 1752920 5698728 1753224 5698480 -1753224 5698480 1760125 5599875 1753072 5698416 1752920 5698728 -1753680 5698984 1753352 5698584 1753224 5698480 1752920 5698728 -1753680 5698984 1760125 5599875 1753352 5698584 1752920 5698728 -1753352 5698584 1760125 5599875 1753224 5698480 1752920 5698728 -1760125 5599875 1753352 5698584 1753680 5698984 1753776 5699120 -1753680 5698984 1753352 5698584 1752920 5698728 1752856 5698864 -1753680 5698984 1760125 5599875 1753352 5698584 1752856 5698864 -1753680 5698984 1753352 5698584 1752856 5698864 1752768 5699224 -1753352 5698584 1753224 5698480 1752920 5698728 1752856 5698864 -1753224 5698480 1753072 5698416 1752920 5698728 1753352 5698584 -1753224 5698480 1753352 5698584 1760125 5599875 1753072 5698416 -1664040 5646192 1743800 5687248 1760125 5599875 1664040 5646064 -1664040 5646192 1752504 5698368 1743800 5687248 1664040 5646064 -1752504 5698368 1743800 5687248 1664040 5646192 1752408 5698432 -1752504 5698368 1760125 5599875 1743800 5687248 1752408 5698432 -1743800 5687248 1664040 5646064 1664040 5646192 1752408 5698432 -1664040 5646192 1751944 5698896 1752408 5698432 1743800 5687248 -1664040 5646192 1751944 5698896 1743800 5687248 1664040 5646064 -1752408 5698432 1752504 5698368 1743800 5687248 1751944 5698896 -1664040 5646192 1751256 5699712 1751944 5698896 1743800 5687248 -1664040 5646192 1663944 5646256 1751256 5699712 1743800 5687248 -1664040 5646192 1663944 5646256 1743800 5687248 1664040 5646064 -1751944 5698896 1752144 5698864 1752408 5698432 1743800 5687248 -1663944 5646256 1751256 5699792 1751256 5699712 1743800 5687248 -1663944 5646256 1599875 5760125 1751256 5699792 1743800 5687248 -1663944 5646256 1599875 5760125 1743800 5687248 1664040 5646192 -1599875 5760125 1760125 5760125 1751256 5699792 1743800 5687248 -1751256 5699792 1751256 5699712 1743800 5687248 1599875 5760125 -1663944 5646256 1663880 5646248 1599875 5760125 1743800 5687248 -1760125 5599875 1743800 5687248 1752504 5698368 1752600 5698344 -1743800 5687248 1752408 5698432 1752504 5698368 1752600 5698344 -1743800 5687248 1752600 5698344 1760125 5599875 1664040 5646064 -1760125 5599875 1743800 5687248 1752600 5698344 1752784 5698344 -1760125 5599875 1743800 5687248 1752784 5698344 1753072 5698416 -1760125 5599875 1743800 5687248 1753072 5698416 1753224 5698480 -1743800 5687248 1752784 5698344 1753072 5698416 1753224 5698480 -1760125 5599875 1743800 5687248 1753224 5698480 1753352 5698584 -1760125 5599875 1743800 5687248 1753352 5698584 1753680 5698984 -1743800 5687248 1753072 5698416 1753224 5698480 1753352 5698584 -1743800 5687248 1752504 5698368 1752600 5698344 1752784 5698344 -1760125 5599875 1664040 5646064 1743800 5687248 1753352 5698584 -1743800 5687248 1752600 5698344 1752784 5698344 1753072 5698416 -1760125 5599875 1663944 5645952 1664040 5646064 1743800 5687248 -1751256 5699712 1751376 5699584 1751944 5698896 1743800 5687248 -1751376 5699584 1751504 5699528 1751944 5698896 1743800 5687248 -1751944 5698896 1752408 5698432 1743800 5687248 1751376 5699584 -1751256 5699712 1751376 5699584 1743800 5687248 1751256 5699792 -1760125 5599875 1743888 5687192 1753352 5698584 1753680 5698984 -1743800 5687248 1743888 5687192 1760125 5599875 1664040 5646064 -1743800 5687248 1743888 5687192 1664040 5646064 1664040 5646192 -1743888 5687192 1753352 5698584 1760125 5599875 1664040 5646064 -1760125 5599875 1663944 5645952 1664040 5646064 1743888 5687192 -1753352 5698584 1743888 5687192 1743800 5687248 1753224 5698480 -1743800 5687248 1753072 5698416 1753224 5698480 1743888 5687192 -1743800 5687248 1752784 5698344 1753072 5698416 1743888 5687192 -1753072 5698416 1753224 5698480 1743888 5687192 1752784 5698344 -1753352 5698584 1760125 5599875 1743888 5687192 1753224 5698480 -1743800 5687248 1752600 5698344 1752784 5698344 1743888 5687192 -1752784 5698344 1753072 5698416 1743888 5687192 1752600 5698344 -1743800 5687248 1752504 5698368 1752600 5698344 1743888 5687192 -1743800 5687248 1752408 5698432 1752504 5698368 1743888 5687192 -1743800 5687248 1751944 5698896 1752408 5698432 1743888 5687192 -1752504 5698368 1752600 5698344 1743888 5687192 1752408 5698432 -1752600 5698344 1752784 5698344 1743888 5687192 1752504 5698368 -1753224 5698480 1753352 5698584 1743888 5687192 1753072 5698416 -1743800 5687248 1752408 5698432 1743888 5687192 1664040 5646064 -1760125 5599875 1743952 5687200 1753352 5698584 1753680 5698984 -1743888 5687192 1743952 5687200 1760125 5599875 1664040 5646064 -1753352 5698584 1743952 5687200 1743888 5687192 1753224 5698480 -1743952 5687200 1760125 5599875 1743888 5687192 1753224 5698480 -1753352 5698584 1760125 5599875 1743952 5687200 1753224 5698480 -1743888 5687192 1753072 5698416 1753224 5698480 1743952 5687200 -1743888 5687192 1752784 5698344 1753072 5698416 1743952 5687200 -1743888 5687192 1752600 5698344 1752784 5698344 1743952 5687200 -1752784 5698344 1753072 5698416 1743952 5687200 1752600 5698344 -1743888 5687192 1752600 5698344 1743952 5687200 1760125 5599875 -1753224 5698480 1753352 5698584 1743952 5687200 1753072 5698416 -1743888 5687192 1752504 5698368 1752600 5698344 1743952 5687200 -1752600 5698344 1752784 5698344 1743952 5687200 1752504 5698368 -1743888 5687192 1752408 5698432 1752504 5698368 1743952 5687200 -1743888 5687192 1743800 5687248 1752408 5698432 1743952 5687200 -1743800 5687248 1751944 5698896 1752408 5698432 1743952 5687200 -1743800 5687248 1751944 5698896 1743952 5687200 1743888 5687192 -1751944 5698896 1752144 5698864 1752408 5698432 1743952 5687200 -1752408 5698432 1752504 5698368 1743952 5687200 1751944 5698896 -1743888 5687192 1743800 5687248 1743952 5687200 1760125 5599875 -1752504 5698368 1752600 5698344 1743952 5687200 1752408 5698432 -1743800 5687248 1751376 5699584 1751944 5698896 1743952 5687200 -1753072 5698416 1753224 5698480 1743952 5687200 1752784 5698344 -1743952 5687200 1744016 5687240 1760125 5599875 1743888 5687192 -1760125 5599875 1744016 5687240 1753352 5698584 1753680 5698984 -1753352 5698584 1744016 5687240 1743952 5687200 1753224 5698480 -1744016 5687240 1760125 5599875 1743952 5687200 1753224 5698480 -1753352 5698584 1760125 5599875 1744016 5687240 1753224 5698480 -1743952 5687200 1753072 5698416 1753224 5698480 1744016 5687240 -1743952 5687200 1753072 5698416 1744016 5687240 1760125 5599875 -1753224 5698480 1753352 5698584 1744016 5687240 1753072 5698416 -1743952 5687200 1752784 5698344 1753072 5698416 1744016 5687240 -1743952 5687200 1752784 5698344 1744016 5687240 1760125 5599875 -1743952 5687200 1752600 5698344 1752784 5698344 1744016 5687240 -1743952 5687200 1752600 5698344 1744016 5687240 1760125 5599875 -1743952 5687200 1752504 5698368 1752600 5698344 1744016 5687240 -1743952 5687200 1752504 5698368 1744016 5687240 1760125 5599875 -1752600 5698344 1752784 5698344 1744016 5687240 1752504 5698368 -1753072 5698416 1753224 5698480 1744016 5687240 1752784 5698344 -1743952 5687200 1752408 5698432 1752504 5698368 1744016 5687240 -1743952 5687200 1752408 5698432 1744016 5687240 1760125 5599875 -1752504 5698368 1752600 5698344 1744016 5687240 1752408 5698432 -1743952 5687200 1751944 5698896 1752408 5698432 1744016 5687240 -1743952 5687200 1751944 5698896 1744016 5687240 1760125 5599875 -1743952 5687200 1743800 5687248 1751944 5698896 1744016 5687240 -1743952 5687200 1743800 5687248 1744016 5687240 1760125 5599875 -1743952 5687200 1743888 5687192 1743800 5687248 1744016 5687240 -1751944 5698896 1752144 5698864 1752408 5698432 1744016 5687240 -1751944 5698896 1752408 5698432 1744016 5687240 1743800 5687248 -1752408 5698432 1752504 5698368 1744016 5687240 1751944 5698896 -1743800 5687248 1751376 5699584 1751944 5698896 1744016 5687240 -1751376 5699584 1751504 5699528 1751944 5698896 1744016 5687240 -1743800 5687248 1751376 5699584 1744016 5687240 1743952 5687200 -1751944 5698896 1752408 5698432 1744016 5687240 1751376 5699584 -1743800 5687248 1751256 5699712 1751376 5699584 1744016 5687240 -1743800 5687248 1751256 5699712 1744016 5687240 1743952 5687200 -1751376 5699584 1751944 5698896 1744016 5687240 1751256 5699712 -1743800 5687248 1751256 5699792 1751256 5699712 1744016 5687240 -1752784 5698344 1753072 5698416 1744016 5687240 1752600 5698344 -1752600 5698344 1744104 5687352 1744016 5687240 1752504 5698368 -1744016 5687240 1752408 5698432 1752504 5698368 1744104 5687352 -1752504 5698368 1752600 5698344 1744104 5687352 1752408 5698432 -1744104 5687352 1752784 5698344 1744016 5687240 1752408 5698432 -1744016 5687240 1751944 5698896 1752408 5698432 1744104 5687352 -1752408 5698432 1752504 5698368 1744104 5687352 1751944 5698896 -1751944 5698896 1752144 5698864 1752408 5698432 1744104 5687352 -1744016 5687240 1751376 5699584 1751944 5698896 1744104 5687352 -1751376 5699584 1751504 5699528 1751944 5698896 1744104 5687352 -1744016 5687240 1751376 5699584 1744104 5687352 1752784 5698344 -1751944 5698896 1752408 5698432 1744104 5687352 1751376 5699584 -1752600 5698344 1752784 5698344 1744104 5687352 1752504 5698368 -1744016 5687240 1751256 5699712 1751376 5699584 1744104 5687352 -1751376 5699584 1751944 5698896 1744104 5687352 1751256 5699712 -1744016 5687240 1751256 5699712 1744104 5687352 1752784 5698344 -1744016 5687240 1743800 5687248 1751256 5699712 1744104 5687352 -1744016 5687240 1743952 5687200 1743800 5687248 1744104 5687352 -1744016 5687240 1743800 5687248 1744104 5687352 1752784 5698344 -1751256 5699712 1751376 5699584 1744104 5687352 1743800 5687248 -1743800 5687248 1751256 5699792 1751256 5699712 1744104 5687352 -1744016 5687240 1744104 5687352 1752784 5698344 1753072 5698416 -1744016 5687240 1743800 5687248 1744104 5687352 1753072 5698416 -1744016 5687240 1744104 5687352 1753072 5698416 1753224 5698480 -1744016 5687240 1743800 5687248 1744104 5687352 1753224 5698480 -1744016 5687240 1744104 5687352 1753224 5698480 1753352 5698584 -1744016 5687240 1744104 5687352 1753352 5698584 1760125 5599875 -1753352 5698584 1753680 5698984 1760125 5599875 1744104 5687352 -1744016 5687240 1743800 5687248 1744104 5687352 1760125 5599875 -1744104 5687352 1753072 5698416 1753224 5698480 1753352 5698584 -1744104 5687352 1753224 5698480 1753352 5698584 1760125 5599875 -1744016 5687240 1744104 5687352 1760125 5599875 1743952 5687200 -1744104 5687352 1752600 5698344 1752784 5698344 1753072 5698416 -1744104 5687352 1752784 5698344 1753072 5698416 1753224 5698480 -1744104 5687352 1744224 5687528 1752408 5698432 1752504 5698368 -1752408 5698432 1744224 5687528 1751944 5698896 1752144 5698864 -1744104 5687352 1744224 5687528 1752504 5698368 1752600 5698344 -1744224 5687528 1752408 5698432 1752504 5698368 1752600 5698344 -1744224 5687528 1751944 5698896 1752408 5698432 1752504 5698368 -1751944 5698896 1744224 5687528 1744104 5687352 1751376 5699584 -1751944 5698896 1744224 5687528 1751376 5699584 1751504 5699528 -1744104 5687352 1751256 5699712 1751376 5699584 1744224 5687528 -1751376 5699584 1751944 5698896 1744224 5687528 1751256 5699712 -1751944 5698896 1752408 5698432 1744224 5687528 1751376 5699584 -1744104 5687352 1751256 5699712 1744224 5687528 1752600 5698344 -1744104 5687352 1744224 5687528 1752600 5698344 1752784 5698344 -1744224 5687528 1752504 5698368 1752600 5698344 1752784 5698344 -1744104 5687352 1744224 5687528 1752784 5698344 1753072 5698416 -1744224 5687528 1752600 5698344 1752784 5698344 1753072 5698416 -1744104 5687352 1751256 5699712 1744224 5687528 1753072 5698416 -1744104 5687352 1743800 5687248 1751256 5699712 1744224 5687528 -1751256 5699712 1751376 5699584 1744224 5687528 1743800 5687248 -1744104 5687352 1744016 5687240 1743800 5687248 1744224 5687528 -1744104 5687352 1743800 5687248 1744224 5687528 1753072 5698416 -1743800 5687248 1751256 5699792 1751256 5699712 1744224 5687528 -1743800 5687248 1599875 5760125 1751256 5699792 1744224 5687528 -1751256 5699712 1751376 5699584 1744224 5687528 1751256 5699792 -1743800 5687248 1751256 5699792 1744224 5687528 1744104 5687352 -1744104 5687352 1744224 5687528 1753072 5698416 1753224 5698480 -1744104 5687352 1744224 5687528 1753224 5698480 1753352 5698584 -1744104 5687352 1744224 5687528 1753352 5698584 1760125 5599875 -1753352 5698584 1753680 5698984 1760125 5599875 1744224 5687528 -1744104 5687352 1744224 5687528 1760125 5599875 1744016 5687240 -1744224 5687528 1753224 5698480 1753352 5698584 1760125 5599875 -1744224 5687528 1752784 5698344 1753072 5698416 1753224 5698480 -1744104 5687352 1743800 5687248 1744224 5687528 1760125 5599875 -1744224 5687528 1753072 5698416 1753224 5698480 1753352 5698584 -1751256 5699792 1744224 5687568 1743800 5687248 1599875 5760125 -1743800 5687248 1744224 5687568 1744224 5687528 1744104 5687352 -1744224 5687568 1751256 5699792 1744224 5687528 1744104 5687352 -1743800 5687248 1751256 5699792 1744224 5687568 1744104 5687352 -1743800 5687248 1744224 5687568 1744104 5687352 1744016 5687240 -1744224 5687528 1744224 5687568 1751256 5699792 1751256 5699712 -1744224 5687528 1744104 5687352 1744224 5687568 1751256 5699712 -1744224 5687568 1743800 5687248 1751256 5699792 1751256 5699712 -1744224 5687528 1744224 5687568 1751256 5699712 1751376 5699584 -1744224 5687528 1744104 5687352 1744224 5687568 1751376 5699584 -1744224 5687528 1744224 5687568 1751376 5699584 1751944 5698896 -1751376 5699584 1751504 5699528 1751944 5698896 1744224 5687568 -1744224 5687528 1744104 5687352 1744224 5687568 1751944 5698896 -1744224 5687568 1751256 5699712 1751376 5699584 1751944 5698896 -1744224 5687528 1744224 5687568 1751944 5698896 1752408 5698432 -1744224 5687528 1744104 5687352 1744224 5687568 1752408 5698432 -1751944 5698896 1752144 5698864 1752408 5698432 1744224 5687568 -1744224 5687528 1744224 5687568 1752408 5698432 1752504 5698368 -1744224 5687528 1744104 5687352 1744224 5687568 1752504 5698368 -1744224 5687528 1744224 5687568 1752504 5698368 1752600 5698344 -1744224 5687528 1744104 5687352 1744224 5687568 1752600 5698344 -1744224 5687528 1744224 5687568 1752600 5698344 1752784 5698344 -1744224 5687528 1744224 5687568 1752784 5698344 1753072 5698416 -1744224 5687528 1744104 5687352 1744224 5687568 1752784 5698344 -1744224 5687568 1752504 5698368 1752600 5698344 1752784 5698344 -1744224 5687568 1752408 5698432 1752504 5698368 1752600 5698344 -1744224 5687568 1751376 5699584 1751944 5698896 1752408 5698432 -1744224 5687568 1751944 5698896 1752408 5698432 1752504 5698368 -1744224 5687568 1751256 5699792 1751256 5699712 1751376 5699584 -1743800 5687248 1744104 5687640 1744224 5687568 1744104 5687352 -1744224 5687568 1744104 5687640 1751256 5699792 1751256 5699712 -1744104 5687640 1743800 5687248 1751256 5699792 1751256 5699712 -1751256 5699792 1744104 5687640 1743800 5687248 1599875 5760125 -1743800 5687248 1751256 5699792 1744104 5687640 1744104 5687352 -1743800 5687248 1744104 5687640 1744104 5687352 1744016 5687240 -1744104 5687640 1751256 5699712 1744224 5687568 1744104 5687352 -1744224 5687568 1744224 5687528 1744104 5687352 1744104 5687640 -1744104 5687352 1743800 5687248 1744104 5687640 1744224 5687528 -1744224 5687568 1744224 5687528 1744104 5687640 1751256 5699712 -1744224 5687568 1744104 5687640 1751256 5699712 1751376 5699584 -1744104 5687640 1751256 5699792 1751256 5699712 1751376 5699584 -1744224 5687568 1744104 5687640 1751376 5699584 1751944 5698896 -1751376 5699584 1751504 5699528 1751944 5698896 1744104 5687640 -1744224 5687568 1744104 5687640 1751944 5698896 1752408 5698432 -1751944 5698896 1752144 5698864 1752408 5698432 1744104 5687640 -1744104 5687640 1751376 5699584 1751944 5698896 1752408 5698432 -1744224 5687568 1744104 5687640 1752408 5698432 1752504 5698368 -1744224 5687568 1744224 5687528 1744104 5687640 1752408 5698432 -1744104 5687640 1751256 5699712 1751376 5699584 1751944 5698896 -1744104 5687640 1744040 5687624 1751256 5699792 1751256 5699712 -1744104 5687640 1744040 5687624 1751256 5699712 1751376 5699584 -1751256 5699792 1744040 5687624 1743800 5687248 1599875 5760125 -1743800 5687248 1663944 5646256 1599875 5760125 1744040 5687624 -1744040 5687624 1744104 5687640 1743800 5687248 1599875 5760125 -1751256 5699792 1744040 5687624 1599875 5760125 1760125 5760125 -1743800 5687248 1744040 5687624 1744104 5687640 1744104 5687352 -1744104 5687640 1744224 5687528 1744104 5687352 1744040 5687624 -1743800 5687248 1599875 5760125 1744040 5687624 1744104 5687352 -1744104 5687352 1743800 5687248 1744040 5687624 1744224 5687528 -1744104 5687640 1744224 5687528 1744040 5687624 1751256 5699712 -1744040 5687624 1599875 5760125 1751256 5699792 1751256 5699712 -1743800 5687248 1744040 5687624 1744104 5687352 1744016 5687240 -1744104 5687640 1744224 5687568 1744224 5687528 1744040 5687624 -1599875 5760125 1743976 5687584 1743800 5687248 1663944 5646256 -1743800 5687248 1664040 5646192 1663944 5646256 1743976 5687584 -1599875 5760125 1744040 5687624 1743976 5687584 1663944 5646256 -1743800 5687248 1743976 5687584 1744040 5687624 1744104 5687352 -1743976 5687584 1599875 5760125 1744040 5687624 1744104 5687352 -1744040 5687624 1744224 5687528 1744104 5687352 1743976 5687584 -1744040 5687624 1743976 5687584 1599875 5760125 1751256 5699792 -1744040 5687624 1744104 5687352 1743976 5687584 1751256 5699792 -1743976 5687584 1663944 5646256 1599875 5760125 1751256 5699792 -1599875 5760125 1760125 5760125 1751256 5699792 1743976 5687584 -1599875 5760125 1743976 5687584 1663944 5646256 1663880 5646248 -1743976 5687584 1744104 5687352 1743800 5687248 1663944 5646256 -1744040 5687624 1743976 5687584 1751256 5699792 1751256 5699712 -1743800 5687248 1743976 5687584 1744104 5687352 1744016 5687240 -1743976 5687584 1744040 5687624 1744104 5687352 1744016 5687240 -1743800 5687248 1743976 5687584 1744016 5687240 1743952 5687200 -1743800 5687248 1663944 5646256 1743976 5687584 1744016 5687240 -1743976 5687584 1743888 5687504 1663944 5646256 1599875 5760125 -1663944 5646256 1743888 5687504 1743800 5687248 1664040 5646192 -1743976 5687584 1743888 5687504 1599875 5760125 1751256 5699792 -1743888 5687504 1663944 5646256 1599875 5760125 1751256 5699792 -1599875 5760125 1760125 5760125 1751256 5699792 1743888 5687504 -1743976 5687584 1743888 5687504 1751256 5699792 1744040 5687624 -1663944 5646256 1663880 5646248 1599875 5760125 1743888 5687504 -1743976 5687584 1743800 5687248 1743888 5687504 1751256 5699792 -1743800 5687248 1743888 5687504 1743976 5687584 1744016 5687240 -1743800 5687248 1743888 5687504 1744016 5687240 1743952 5687200 -1743800 5687248 1663944 5646256 1743888 5687504 1744016 5687240 -1743888 5687504 1751256 5699792 1743976 5687584 1744016 5687240 -1743888 5687504 1743800 5687248 1663944 5646256 1599875 5760125 -1743976 5687584 1744104 5687352 1744016 5687240 1743888 5687504 -1743976 5687584 1744040 5687624 1744104 5687352 1743888 5687504 -1743976 5687584 1744104 5687352 1743888 5687504 1751256 5699792 -1744016 5687240 1743800 5687248 1743888 5687504 1744104 5687352 -1663944 5646256 1743800 5687320 1743800 5687248 1664040 5646192 -1743800 5687248 1664040 5646064 1664040 5646192 1743800 5687320 -1743800 5687320 1743888 5687504 1743800 5687248 1664040 5646192 -1743800 5687248 1743800 5687320 1743888 5687504 1744016 5687240 -1743800 5687248 1743800 5687320 1744016 5687240 1743952 5687200 -1743800 5687248 1743800 5687320 1743952 5687200 1743888 5687192 -1743800 5687320 1744016 5687240 1743952 5687200 1743888 5687192 -1743800 5687248 1664040 5646192 1743800 5687320 1743888 5687192 -1743800 5687320 1663944 5646256 1743888 5687504 1744016 5687240 -1743800 5687320 1743888 5687504 1744016 5687240 1743952 5687200 -1663944 5646256 1743888 5687504 1743800 5687320 1664040 5646192 -1743888 5687504 1744104 5687352 1744016 5687240 1743800 5687320 -1743888 5687504 1743800 5687320 1663944 5646256 1599875 5760125 -1760125 5599875 1657600 5638648 1663776 5645840 1663816 5645848 -1663776 5645840 1657600 5638648 1599875 5599875 1663688 5645904 -1657600 5638648 1663688 5645904 1663776 5645840 1663816 5645848 -1657600 5638648 1760125 5599875 1599875 5599875 1663688 5645904 -1760125 5599875 1599875 5599875 1657600 5638648 1663816 5645848 -1599875 5599875 1663688 5645984 1663688 5645904 1657600 5638648 -1599875 5599875 1599875 5760125 1663688 5645984 1657600 5638648 -1663688 5645904 1663776 5645840 1657600 5638648 1663688 5645984 -1599875 5599875 1599875 5760125 1657600 5638648 1760125 5599875 -1663688 5645984 1663688 5645904 1657600 5638648 1599875 5760125 -1599875 5760125 1663776 5646144 1663688 5645984 1657600 5638648 -1599875 5760125 1663880 5646248 1663776 5646144 1657600 5638648 -1599875 5760125 1663776 5646144 1657600 5638648 1599875 5599875 -1663688 5645984 1663688 5645904 1657600 5638648 1663776 5646144 -1760125 5599875 1657600 5638648 1663816 5645848 1663856 5645872 -1657600 5638648 1663776 5645840 1663816 5645848 1663856 5645872 -1760125 5599875 1657600 5638648 1663856 5645872 1663944 5645952 -1760125 5599875 1599875 5599875 1657600 5638648 1663944 5645952 -1760125 5599875 1657600 5638648 1663944 5645952 1664040 5646064 -1657600 5638648 1663816 5645848 1663856 5645872 1663944 5645952 -1663944 5645952 1657664 5638648 1657600 5638648 1663856 5645872 -1663944 5645952 1760125 5599875 1657664 5638648 1663856 5645872 -1657664 5638648 1760125 5599875 1657600 5638648 1663856 5645872 -1657600 5638648 1657664 5638648 1760125 5599875 1599875 5599875 -1657600 5638648 1663856 5645872 1657664 5638648 1599875 5599875 -1657664 5638648 1663944 5645952 1760125 5599875 1599875 5599875 -1657600 5638648 1657664 5638648 1599875 5599875 1599875 5760125 -1760125 5599875 1657664 5638648 1663944 5645952 1664040 5646064 -1657600 5638648 1663816 5645848 1663856 5645872 1657664 5638648 -1657600 5638648 1663776 5645840 1663816 5645848 1657664 5638648 -1663856 5645872 1663944 5645952 1657664 5638648 1663816 5645848 -1657600 5638648 1663776 5645840 1657664 5638648 1599875 5599875 -1657600 5638648 1663688 5645904 1663776 5645840 1657664 5638648 -1663776 5645840 1663816 5645848 1657664 5638648 1663688 5645904 -1657600 5638648 1663688 5645984 1663688 5645904 1657664 5638648 -1657600 5638648 1663688 5645904 1657664 5638648 1599875 5599875 -1663816 5645848 1663856 5645872 1657664 5638648 1663776 5645840 -1657600 5638648 1657720 5638792 1663688 5645904 1657664 5638648 -1663688 5645904 1663776 5645840 1657664 5638648 1657720 5638792 -1663776 5645840 1663816 5645848 1657664 5638648 1657720 5638792 -1657664 5638648 1657600 5638648 1657720 5638792 1663816 5645848 -1663776 5645840 1663816 5645848 1657720 5638792 1663688 5645904 -1657600 5638648 1663688 5645984 1657720 5638792 1657664 5638648 -1657720 5638792 1663688 5645984 1663688 5645904 1663776 5645840 -1663688 5645984 1657720 5638792 1657600 5638648 1663776 5646144 -1663688 5645984 1663688 5645904 1657720 5638792 1663776 5646144 -1657720 5638792 1657664 5638648 1657600 5638648 1663776 5646144 -1657600 5638648 1599875 5760125 1663776 5646144 1657720 5638792 -1599875 5760125 1663880 5646248 1663776 5646144 1657720 5638792 -1657600 5638648 1599875 5599875 1599875 5760125 1657720 5638792 -1657600 5638648 1599875 5760125 1657720 5638792 1657664 5638648 -1663776 5646144 1663688 5645984 1657720 5638792 1599875 5760125 -1663816 5645848 1663856 5645872 1657664 5638648 1657720 5638792 -1663776 5646144 1657760 5638888 1599875 5760125 1663880 5646248 -1657720 5638792 1657760 5638888 1663776 5646144 1663688 5645984 -1657720 5638792 1657760 5638888 1663688 5645984 1663688 5645904 -1657720 5638792 1599875 5760125 1657760 5638888 1663688 5645904 -1657760 5638888 1599875 5760125 1663776 5646144 1663688 5645984 -1657720 5638792 1657760 5638888 1663688 5645904 1663776 5645840 -1657720 5638792 1657760 5638888 1663776 5645840 1663816 5645848 -1657720 5638792 1657760 5638888 1663816 5645848 1657664 5638648 -1657760 5638888 1663776 5645840 1663816 5645848 1657664 5638648 -1657760 5638888 1663688 5645984 1663688 5645904 1663776 5645840 -1657720 5638792 1599875 5760125 1657760 5638888 1657664 5638648 -1657760 5638888 1663688 5645904 1663776 5645840 1663816 5645848 -1657760 5638888 1663776 5646144 1663688 5645984 1663688 5645904 -1599875 5760125 1657760 5638888 1657720 5638792 1657600 5638648 -1599875 5760125 1657760 5638888 1657600 5638648 1599875 5599875 -1657760 5638888 1657664 5638648 1657720 5638792 1657600 5638648 -1657720 5638792 1657664 5638648 1657600 5638648 1657760 5638888 -1599875 5760125 1663776 5646144 1657760 5638888 1657600 5638648 -1663816 5645848 1663856 5645872 1657664 5638648 1657760 5638888 -1663776 5646144 1657776 5638984 1599875 5760125 1663880 5646248 -1657760 5638888 1657776 5638984 1663776 5646144 1663688 5645984 -1657760 5638888 1599875 5760125 1657776 5638984 1663688 5645984 -1599875 5760125 1657776 5638984 1657760 5638888 1657600 5638648 -1599875 5760125 1657776 5638984 1657600 5638648 1599875 5599875 -1657776 5638984 1663688 5645984 1657760 5638888 1657600 5638648 -1657776 5638984 1657760 5638888 1657600 5638648 1599875 5599875 -1657776 5638984 1599875 5760125 1663776 5646144 1663688 5645984 -1657600 5638648 1657664 5638648 1599875 5599875 1657776 5638984 -1599875 5760125 1663776 5646144 1657776 5638984 1599875 5599875 -1657760 5638888 1657776 5638984 1663688 5645984 1663688 5645904 -1657760 5638888 1657776 5638984 1663688 5645904 1663776 5645840 -1657776 5638984 1663776 5646144 1663688 5645984 1663688 5645904 -1657760 5638888 1657600 5638648 1657776 5638984 1663776 5645840 -1657760 5638888 1657776 5638984 1663776 5645840 1663816 5645848 -1657760 5638888 1657776 5638984 1663816 5645848 1657664 5638648 -1657776 5638984 1663688 5645904 1663776 5645840 1663816 5645848 -1657760 5638888 1657600 5638648 1657776 5638984 1663816 5645848 -1657776 5638984 1663688 5645984 1663688 5645904 1663776 5645840 -1657760 5638888 1657720 5638792 1657600 5638648 1657776 5638984 -1657720 5638792 1657664 5638648 1657600 5638648 1657776 5638984 -1657760 5638888 1657720 5638792 1657776 5638984 1663816 5645848 -1657600 5638648 1599875 5599875 1657776 5638984 1657720 5638792 -1663776 5646144 1657808 5639048 1599875 5760125 1663880 5646248 -1657776 5638984 1657808 5639048 1663776 5646144 1663688 5645984 -1657776 5638984 1657808 5639048 1663688 5645984 1663688 5645904 -1657808 5639048 1663776 5646144 1663688 5645984 1663688 5645904 -1599875 5760125 1657808 5639048 1657776 5638984 1599875 5599875 -1657776 5638984 1657600 5638648 1599875 5599875 1657808 5639048 -1657776 5638984 1657720 5638792 1657600 5638648 1657808 5639048 -1657600 5638648 1657664 5638648 1599875 5599875 1657808 5639048 -1599875 5599875 1599875 5760125 1657808 5639048 1657600 5638648 -1657776 5638984 1657600 5638648 1657808 5639048 1663688 5645904 -1657808 5639048 1599875 5760125 1663776 5646144 1663688 5645984 -1599875 5760125 1663776 5646144 1657808 5639048 1599875 5599875 -1657776 5638984 1657808 5639048 1663688 5645904 1663776 5645840 -1657776 5638984 1657808 5639048 1663776 5645840 1663816 5645848 -1657808 5639048 1663688 5645984 1663688 5645904 1663776 5645840 -1657776 5638984 1657600 5638648 1657808 5639048 1663816 5645848 -1657776 5638984 1657808 5639048 1663816 5645848 1657760 5638888 -1663816 5645848 1657664 5638648 1657760 5638888 1657808 5639048 -1657808 5639048 1663776 5645840 1663816 5645848 1657760 5638888 -1657776 5638984 1657600 5638648 1657808 5639048 1657760 5638888 -1657808 5639048 1663688 5645904 1663776 5645840 1663816 5645848 -1663776 5646144 1657816 5639096 1599875 5760125 1663880 5646248 -1657808 5639048 1657816 5639096 1663776 5646144 1663688 5645984 -1657808 5639048 1657816 5639096 1663688 5645984 1663688 5645904 -1657808 5639048 1657816 5639096 1663688 5645904 1663776 5645840 -1657816 5639096 1663688 5645984 1663688 5645904 1663776 5645840 -1657816 5639096 1599875 5760125 1663776 5646144 1663688 5645984 -1657816 5639096 1663776 5646144 1663688 5645984 1663688 5645904 -1657808 5639048 1599875 5760125 1657816 5639096 1663776 5645840 -1599875 5760125 1657816 5639096 1657808 5639048 1599875 5599875 -1657808 5639048 1657600 5638648 1599875 5599875 1657816 5639096 -1657808 5639048 1657776 5638984 1657600 5638648 1657816 5639096 -1657776 5638984 1657720 5638792 1657600 5638648 1657816 5639096 -1657600 5638648 1657664 5638648 1599875 5599875 1657816 5639096 -1657600 5638648 1599875 5599875 1657816 5639096 1657776 5638984 -1657816 5639096 1663776 5645840 1657808 5639048 1657776 5638984 -1599875 5599875 1599875 5760125 1657816 5639096 1657600 5638648 -1599875 5760125 1663776 5646144 1657816 5639096 1599875 5599875 -1657808 5639048 1657816 5639096 1663776 5645840 1663816 5645848 -1657808 5639048 1657816 5639096 1663816 5645848 1657760 5638888 -1657816 5639096 1663688 5645904 1663776 5645840 1663816 5645848 -1657808 5639048 1657776 5638984 1657816 5639096 1663816 5645848 -1599875 5599875 1657792 5639144 1657816 5639096 1657600 5638648 -1599875 5599875 1599875 5760125 1657792 5639144 1657600 5638648 -1599875 5599875 1657792 5639144 1657600 5638648 1657664 5638648 -1657816 5639096 1657776 5638984 1657600 5638648 1657792 5639144 -1657816 5639096 1657808 5639048 1657776 5638984 1657792 5639144 -1657776 5638984 1657720 5638792 1657600 5638648 1657792 5639144 -1657776 5638984 1657600 5638648 1657792 5639144 1657808 5639048 -1657600 5638648 1599875 5599875 1657792 5639144 1657776 5638984 -1657792 5639144 1599875 5760125 1657816 5639096 1657808 5639048 -1657816 5639096 1657792 5639144 1599875 5760125 1663776 5646144 -1599875 5760125 1663880 5646248 1663776 5646144 1657792 5639144 -1657792 5639144 1599875 5599875 1599875 5760125 1663776 5646144 -1657816 5639096 1657792 5639144 1663776 5646144 1663688 5645984 -1657816 5639096 1657792 5639144 1663688 5645984 1663688 5645904 -1657792 5639144 1663776 5646144 1663688 5645984 1663688 5645904 -1657816 5639096 1657792 5639144 1663688 5645904 1663776 5645840 -1657816 5639096 1657792 5639144 1663776 5645840 1663816 5645848 -1657792 5639144 1663688 5645984 1663688 5645904 1663776 5645840 -1657816 5639096 1657808 5639048 1657792 5639144 1663776 5645840 -1657792 5639144 1599875 5760125 1663776 5646144 1663688 5645984 -1663776 5646144 1657768 5639240 1599875 5760125 1663880 5646248 -1599875 5760125 1657768 5639240 1657792 5639144 1599875 5599875 -1657792 5639144 1657600 5638648 1599875 5599875 1657768 5639240 -1599875 5599875 1599875 5760125 1657768 5639240 1657600 5638648 -1657600 5638648 1657664 5638648 1599875 5599875 1657768 5639240 -1657792 5639144 1657776 5638984 1657600 5638648 1657768 5639240 -1657600 5638648 1599875 5599875 1657768 5639240 1657776 5638984 -1657776 5638984 1657720 5638792 1657600 5638648 1657768 5639240 -1657792 5639144 1657808 5639048 1657776 5638984 1657768 5639240 -1657792 5639144 1657768 5639240 1663776 5646144 1663688 5645984 -1657792 5639144 1657768 5639240 1663688 5645984 1663688 5645904 -1657792 5639144 1657768 5639240 1663688 5645904 1663776 5645840 -1657768 5639240 1663688 5645984 1663688 5645904 1663776 5645840 -1657792 5639144 1657768 5639240 1663776 5645840 1657816 5639096 -1663776 5645840 1663816 5645848 1657816 5639096 1657768 5639240 -1657768 5639240 1663688 5645904 1663776 5645840 1657816 5639096 -1657768 5639240 1663776 5646144 1663688 5645984 1663688 5645904 -1657768 5639240 1657816 5639096 1657792 5639144 1657776 5638984 -1657768 5639240 1599875 5760125 1663776 5646144 1663688 5645984 -1599875 5760125 1663776 5646144 1657768 5639240 1599875 5599875 -1599875 5599875 1657736 5639288 1657768 5639240 1657600 5638648 -1657768 5639240 1657776 5638984 1657600 5638648 1657736 5639288 -1657600 5638648 1599875 5599875 1657736 5639288 1657776 5638984 -1657776 5638984 1657720 5638792 1657600 5638648 1657736 5639288 -1599875 5599875 1599875 5760125 1657736 5639288 1657600 5638648 -1599875 5599875 1657736 5639288 1657600 5638648 1657664 5638648 -1657768 5639240 1657792 5639144 1657776 5638984 1657736 5639288 -1657776 5638984 1657600 5638648 1657736 5639288 1657792 5639144 -1657792 5639144 1657808 5639048 1657776 5638984 1657736 5639288 -1657736 5639288 1599875 5760125 1657768 5639240 1657792 5639144 -1657768 5639240 1657736 5639288 1599875 5760125 1663776 5646144 -1599875 5760125 1663880 5646248 1663776 5646144 1657736 5639288 -1657768 5639240 1657736 5639288 1663776 5646144 1663688 5645984 -1657768 5639240 1657736 5639288 1663688 5645984 1663688 5645904 -1657768 5639240 1657736 5639288 1663688 5645904 1663776 5645840 -1657768 5639240 1657736 5639288 1663776 5645840 1657816 5639096 -1657736 5639288 1663688 5645984 1663688 5645904 1663776 5645840 -1657736 5639288 1663776 5646144 1663688 5645984 1663688 5645904 -1657768 5639240 1657792 5639144 1657736 5639288 1663776 5645840 -1657736 5639288 1599875 5760125 1663776 5646144 1663688 5645984 -1657736 5639288 1599875 5599875 1599875 5760125 1663776 5646144 -1599875 5599875 1657424 5639488 1657736 5639288 1657600 5638648 -1657736 5639288 1657776 5638984 1657600 5638648 1657424 5639488 -1657736 5639288 1657792 5639144 1657776 5638984 1657424 5639488 -1657776 5638984 1657720 5638792 1657600 5638648 1657424 5639488 -1657424 5639488 1599875 5760125 1657736 5639288 1657776 5638984 -1657600 5638648 1599875 5599875 1657424 5639488 1657776 5638984 -1599875 5599875 1599875 5760125 1657424 5639488 1657600 5638648 -1599875 5599875 1657424 5639488 1657600 5638648 1657664 5638648 -1657736 5639288 1657424 5639488 1599875 5760125 1663776 5646144 -1599875 5760125 1663880 5646248 1663776 5646144 1657424 5639488 -1657736 5639288 1657776 5638984 1657424 5639488 1663776 5646144 -1657424 5639488 1599875 5599875 1599875 5760125 1663776 5646144 -1657736 5639288 1657424 5639488 1663776 5646144 1663688 5645984 -1657736 5639288 1657776 5638984 1657424 5639488 1663688 5645984 -1657736 5639288 1657424 5639488 1663688 5645984 1663688 5645904 -1657736 5639288 1657776 5638984 1657424 5639488 1663688 5645904 -1657736 5639288 1657424 5639488 1663688 5645904 1663776 5645840 -1657424 5639488 1663776 5646144 1663688 5645984 1663688 5645904 -1657424 5639488 1599875 5760125 1663776 5646144 1663688 5645984 -1657424 5639488 1657256 5639536 1599875 5760125 1663776 5646144 -1599875 5760125 1663880 5646248 1663776 5646144 1657256 5639536 -1657424 5639488 1599875 5599875 1657256 5639536 1663776 5646144 -1599875 5599875 1657256 5639536 1657424 5639488 1657600 5638648 -1657424 5639488 1657776 5638984 1657600 5638648 1657256 5639536 -1657256 5639536 1663776 5646144 1657424 5639488 1657600 5638648 -1599875 5599875 1657256 5639536 1657600 5638648 1657664 5638648 -1657424 5639488 1657256 5639536 1663776 5646144 1663688 5645984 -1657256 5639536 1599875 5760125 1663776 5646144 1663688 5645984 -1657424 5639488 1657600 5638648 1657256 5639536 1663688 5645984 -1657424 5639488 1657256 5639536 1663688 5645984 1663688 5645904 -1657424 5639488 1657600 5638648 1657256 5639536 1663688 5645904 -1657424 5639488 1657256 5639536 1663688 5645904 1657736 5639288 -1657256 5639536 1663776 5646144 1663688 5645984 1663688 5645904 -1657256 5639536 1599875 5599875 1599875 5760125 1663776 5646144 -1599875 5599875 1599875 5760125 1657256 5639536 1657600 5638648 -1657256 5639536 1657088 5639464 1599875 5760125 1663776 5646144 -1599875 5760125 1663880 5646248 1663776 5646144 1657088 5639464 -1657256 5639536 1657088 5639464 1663776 5646144 1663688 5645984 -1657256 5639536 1657088 5639464 1663688 5645984 1663688 5645904 -1657088 5639464 1599875 5760125 1663776 5646144 1663688 5645984 -1599875 5599875 1657088 5639464 1657256 5639536 1657600 5638648 -1599875 5599875 1657088 5639464 1657600 5638648 1657664 5638648 -1599875 5599875 1599875 5760125 1657088 5639464 1657600 5638648 -1657256 5639536 1657424 5639488 1657600 5638648 1657088 5639464 -1657424 5639488 1657776 5638984 1657600 5638648 1657088 5639464 -1657600 5638648 1599875 5599875 1657088 5639464 1657424 5639488 -1657256 5639536 1657424 5639488 1657088 5639464 1663688 5645984 -1657088 5639464 1599875 5599875 1599875 5760125 1663776 5646144 -1599875 5599875 1657056 5639384 1657600 5638648 1657664 5638648 -1657088 5639464 1657056 5639384 1599875 5599875 1599875 5760125 -1657600 5638648 1657056 5639384 1657088 5639464 1657424 5639488 -1657600 5638648 1657056 5639384 1657424 5639488 1657776 5638984 -1657424 5639488 1657736 5639288 1657776 5638984 1657056 5639384 -1657600 5638648 1657056 5639384 1657776 5638984 1657720 5638792 -1657600 5638648 1657056 5639384 1657720 5638792 1657664 5638648 -1657056 5639384 1657424 5639488 1657776 5638984 1657720 5638792 -1657056 5639384 1599875 5599875 1657088 5639464 1657424 5639488 -1657088 5639464 1657256 5639536 1657424 5639488 1657056 5639384 -1657088 5639464 1657256 5639536 1657056 5639384 1599875 5599875 -1657056 5639384 1657256 5639536 1657424 5639488 1657776 5638984 -1657600 5638648 1599875 5599875 1657056 5639384 1657720 5638792 -1657776 5638984 1657760 5638888 1657720 5638792 1657056 5639384 -1599875 5599875 1657088 5639296 1657600 5638648 1657664 5638648 -1657600 5638648 1657088 5639296 1657056 5639384 1657720 5638792 -1657600 5638648 1657088 5639296 1657720 5638792 1657664 5638648 -1657056 5639384 1657776 5638984 1657720 5638792 1657088 5639296 -1657056 5639384 1657424 5639488 1657776 5638984 1657088 5639296 -1657424 5639488 1657736 5639288 1657776 5638984 1657088 5639296 -1657736 5639288 1657792 5639144 1657776 5638984 1657088 5639296 -1657776 5638984 1657720 5638792 1657088 5639296 1657736 5639288 -1657424 5639488 1657736 5639288 1657088 5639296 1657056 5639384 -1657056 5639384 1657256 5639536 1657424 5639488 1657088 5639296 -1657424 5639488 1657736 5639288 1657088 5639296 1657256 5639536 -1657056 5639384 1657088 5639464 1657256 5639536 1657088 5639296 -1657256 5639536 1657424 5639488 1657088 5639296 1657088 5639464 -1657720 5638792 1657600 5638648 1657088 5639296 1657776 5638984 -1657088 5639296 1599875 5599875 1657056 5639384 1657088 5639464 -1657600 5638648 1599875 5599875 1657088 5639296 1657720 5638792 -1657776 5638984 1657760 5638888 1657720 5638792 1657088 5639296 -1657776 5638984 1657760 5638888 1657088 5639296 1657736 5639288 -1657720 5638792 1657600 5638648 1657088 5639296 1657760 5638888 -1657056 5639384 1657088 5639296 1599875 5599875 1657088 5639464 -1657776 5638984 1657184 5639240 1657088 5639296 1657736 5639288 -1657088 5639296 1657424 5639488 1657736 5639288 1657184 5639240 -1657776 5638984 1657184 5639240 1657736 5639288 1657792 5639144 -1657736 5639288 1657792 5639144 1657184 5639240 1657424 5639488 -1657088 5639296 1657256 5639536 1657424 5639488 1657184 5639240 -1657424 5639488 1657736 5639288 1657184 5639240 1657256 5639536 -1657776 5638984 1657184 5639240 1657792 5639144 1657808 5639048 -1657736 5639288 1657768 5639240 1657792 5639144 1657184 5639240 -1657088 5639296 1657088 5639464 1657256 5639536 1657184 5639240 -1657256 5639536 1657424 5639488 1657184 5639240 1657088 5639464 -1657088 5639296 1657056 5639384 1657088 5639464 1657184 5639240 -1657184 5639240 1657760 5638888 1657088 5639296 1657088 5639464 -1657776 5638984 1657760 5638888 1657184 5639240 1657792 5639144 -1657088 5639296 1657184 5639240 1657760 5638888 1657720 5638792 -1657088 5639296 1657184 5639240 1657720 5638792 1657600 5638648 -1657720 5638792 1657664 5638648 1657600 5638648 1657184 5639240 -1657088 5639296 1657088 5639464 1657184 5639240 1657600 5638648 -1657088 5639296 1657184 5639240 1657600 5638648 1599875 5599875 -1657184 5639240 1657776 5638984 1657760 5638888 1657720 5638792 -1657184 5639240 1657760 5638888 1657720 5638792 1657600 5638648 -1657792 5639144 1657352 5639184 1657184 5639240 1657736 5639288 -1657184 5639240 1657424 5639488 1657736 5639288 1657352 5639184 -1657184 5639240 1657256 5639536 1657424 5639488 1657352 5639184 -1657736 5639288 1657792 5639144 1657352 5639184 1657424 5639488 -1657792 5639144 1657776 5638984 1657352 5639184 1657736 5639288 -1657776 5638984 1657352 5639184 1657792 5639144 1657808 5639048 -1657792 5639144 1657352 5639184 1657736 5639288 1657768 5639240 -1657352 5639184 1657424 5639488 1657736 5639288 1657768 5639240 -1657792 5639144 1657776 5638984 1657352 5639184 1657768 5639240 -1657352 5639184 1657776 5638984 1657184 5639240 1657424 5639488 -1657184 5639240 1657352 5639184 1657776 5638984 1657760 5638888 -1657352 5639184 1657792 5639144 1657776 5638984 1657760 5638888 -1657184 5639240 1657352 5639184 1657760 5638888 1657720 5638792 -1657184 5639240 1657424 5639488 1657352 5639184 1657720 5638792 -1657352 5639184 1657776 5638984 1657760 5638888 1657720 5638792 -1657184 5639240 1657352 5639184 1657720 5638792 1657600 5638648 -1657720 5638792 1657664 5638648 1657600 5638648 1657352 5639184 -1657184 5639240 1657352 5639184 1657600 5638648 1657088 5639296 -1657352 5639184 1657760 5638888 1657720 5638792 1657600 5638648 -1657184 5639240 1657424 5639488 1657352 5639184 1657600 5638648 -1657184 5639240 1657392 5639080 1657600 5638648 1657088 5639296 -1657600 5638648 1657392 5639080 1657352 5639184 1657720 5638792 -1657600 5638648 1657392 5639080 1657720 5638792 1657664 5638648 -1657392 5639080 1657184 5639240 1657352 5639184 1657720 5638792 -1657352 5639184 1657760 5638888 1657720 5638792 1657392 5639080 -1657352 5639184 1657760 5638888 1657392 5639080 1657184 5639240 -1657352 5639184 1657776 5638984 1657760 5638888 1657392 5639080 -1657352 5639184 1657792 5639144 1657776 5638984 1657392 5639080 -1657352 5639184 1657792 5639144 1657392 5639080 1657184 5639240 -1657352 5639184 1657768 5639240 1657792 5639144 1657392 5639080 -1657792 5639144 1657776 5638984 1657392 5639080 1657768 5639240 -1657352 5639184 1657768 5639240 1657392 5639080 1657184 5639240 -1657792 5639144 1657808 5639048 1657776 5638984 1657392 5639080 -1657352 5639184 1657736 5639288 1657768 5639240 1657392 5639080 -1657352 5639184 1657424 5639488 1657736 5639288 1657392 5639080 -1657352 5639184 1657736 5639288 1657392 5639080 1657184 5639240 -1657768 5639240 1657792 5639144 1657392 5639080 1657736 5639288 -1657760 5638888 1657720 5638792 1657392 5639080 1657776 5638984 -1657776 5638984 1657760 5638888 1657392 5639080 1657792 5639144 -1657720 5638792 1657600 5638648 1657392 5639080 1657760 5638888 -1657600 5638648 1657184 5639240 1657392 5639080 1657720 5638792 -1657600 5638648 1657408 5639056 1657720 5638792 1657664 5638648 -1657720 5638792 1657408 5639056 1657392 5639080 1657760 5638888 -1657392 5639080 1657776 5638984 1657760 5638888 1657408 5639056 -1657392 5639080 1657792 5639144 1657776 5638984 1657408 5639056 -1657392 5639080 1657768 5639240 1657792 5639144 1657408 5639056 -1657392 5639080 1657736 5639288 1657768 5639240 1657408 5639056 -1657768 5639240 1657792 5639144 1657408 5639056 1657736 5639288 -1657792 5639144 1657808 5639048 1657776 5638984 1657408 5639056 -1657392 5639080 1657352 5639184 1657736 5639288 1657408 5639056 -1657776 5638984 1657760 5638888 1657408 5639056 1657792 5639144 -1657792 5639144 1657776 5638984 1657408 5639056 1657768 5639240 -1657760 5638888 1657720 5638792 1657408 5639056 1657776 5638984 -1657392 5639080 1657408 5639056 1657600 5638648 1657184 5639240 -1657392 5639080 1657408 5639056 1657184 5639240 1657352 5639184 -1657600 5638648 1657088 5639296 1657184 5639240 1657408 5639056 -1657408 5639056 1657184 5639240 1657392 5639080 1657736 5639288 -1657408 5639056 1657720 5638792 1657600 5638648 1657184 5639240 -1657720 5638792 1657600 5638648 1657408 5639056 1657760 5638888 -1657184 5639240 1657464 5638864 1657600 5638648 1657088 5639296 -1657184 5639240 1657408 5639056 1657464 5638864 1657088 5639296 -1657464 5638864 1657408 5639056 1657600 5638648 1657088 5639296 -1657600 5638648 1599875 5599875 1657088 5639296 1657464 5638864 -1657408 5639056 1657464 5638864 1657184 5639240 1657392 5639080 -1657184 5639240 1657352 5639184 1657392 5639080 1657464 5638864 -1657464 5638864 1657088 5639296 1657184 5639240 1657392 5639080 -1657600 5638648 1657464 5638864 1657408 5639056 1657720 5638792 -1657600 5638648 1657464 5638864 1657720 5638792 1657664 5638648 -1657600 5638648 1657088 5639296 1657464 5638864 1657720 5638792 -1657408 5639056 1657720 5638792 1657464 5638864 1657392 5639080 -1657408 5639056 1657760 5638888 1657720 5638792 1657464 5638864 -1657408 5639056 1657776 5638984 1657760 5638888 1657464 5638864 -1657760 5638888 1657720 5638792 1657464 5638864 1657776 5638984 -1657408 5639056 1657792 5639144 1657776 5638984 1657464 5638864 -1657720 5638792 1657600 5638648 1657464 5638864 1657760 5638888 -1657408 5639056 1657776 5638984 1657464 5638864 1657392 5639080 -1599875 5599875 1657472 5638792 1657600 5638648 1657664 5638648 -1657088 5639296 1657472 5638792 1599875 5599875 1657056 5639384 -1657600 5638648 1657472 5638792 1657088 5639296 1657464 5638864 -1657600 5638648 1657472 5638792 1657464 5638864 1657720 5638792 -1657600 5638648 1657472 5638792 1657720 5638792 1657664 5638648 -1657472 5638792 1599875 5599875 1657088 5639296 1657464 5638864 -1657088 5639296 1657184 5639240 1657464 5638864 1657472 5638792 -1657184 5639240 1657392 5639080 1657464 5638864 1657472 5638792 -1657088 5639296 1657184 5639240 1657472 5638792 1599875 5599875 -1657472 5638792 1657184 5639240 1657464 5638864 1657720 5638792 -1657464 5638864 1657760 5638888 1657720 5638792 1657472 5638792 -1657600 5638648 1599875 5599875 1657472 5638792 1657720 5638792 -1599875 5599875 1604784 5714488 1657088 5639464 1657056 5639384 -1657088 5639464 1604784 5714488 1599875 5760125 1663776 5646144 -1599875 5760125 1663880 5646248 1663776 5646144 1604784 5714488 -1663776 5646144 1657088 5639464 1604784 5714488 1663880 5646248 -1657088 5639464 1604784 5714488 1663776 5646144 1663688 5645984 -1599875 5760125 1663944 5646256 1663880 5646248 1604784 5714488 -1663880 5646248 1663776 5646144 1604784 5714488 1663944 5646256 -1599875 5760125 1743888 5687504 1663944 5646256 1604784 5714488 -1599875 5760125 1751256 5699792 1743888 5687504 1604784 5714488 -1751256 5699792 1743976 5687584 1743888 5687504 1604784 5714488 -1599875 5760125 1760125 5760125 1751256 5699792 1604784 5714488 -1751256 5699792 1743888 5687504 1604784 5714488 1760125 5760125 -1760125 5760125 1751376 5699848 1751256 5699792 1604784 5714488 -1743888 5687504 1663944 5646256 1604784 5714488 1751256 5699792 -1743888 5687504 1743800 5687320 1663944 5646256 1604784 5714488 -1743800 5687320 1664040 5646192 1663944 5646256 1604784 5714488 -1743888 5687504 1743800 5687320 1604784 5714488 1751256 5699792 -1663944 5646256 1663880 5646248 1604784 5714488 1743800 5687320 -1604784 5714488 1599875 5599875 1599875 5760125 1760125 5760125 -1599875 5599875 1599875 5760125 1604784 5714488 1657056 5639384 -1599875 5599875 1604784 5714488 1657056 5639384 1657088 5639296 -1604784 5714488 1663776 5646144 1657088 5639464 1657056 5639384 -1751256 5699792 1604840 5714480 1604784 5714488 1760125 5760125 -1743888 5687504 1604840 5714480 1751256 5699792 1743976 5687584 -1604840 5714480 1743888 5687504 1604784 5714488 1760125 5760125 -1751256 5699792 1604840 5714480 1760125 5760125 1751376 5699848 -1604784 5714488 1599875 5760125 1760125 5760125 1604840 5714480 -1760125 5760125 1751256 5699792 1604840 5714480 1599875 5760125 -1604784 5714488 1599875 5760125 1604840 5714480 1743888 5687504 -1604784 5714488 1604840 5714480 1743888 5687504 1743800 5687320 -1604784 5714488 1599875 5760125 1604840 5714480 1743800 5687320 -1604840 5714480 1751256 5699792 1743888 5687504 1743800 5687320 -1604784 5714488 1604840 5714480 1743800 5687320 1663944 5646256 -1604784 5714488 1599875 5760125 1604840 5714480 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1604840 5714480 -1604840 5714480 1743888 5687504 1743800 5687320 1663944 5646256 -1751256 5699792 1743888 5687504 1604840 5714480 1760125 5760125 -1604784 5714488 1604840 5714480 1663944 5646256 1663880 5646248 -1604784 5714488 1604840 5714480 1663880 5646248 1663776 5646144 -1604784 5714488 1599875 5760125 1604840 5714480 1663776 5646144 -1604784 5714488 1604840 5714480 1663776 5646144 1657088 5639464 -1604840 5714480 1663880 5646248 1663776 5646144 1657088 5639464 -1604784 5714488 1599875 5760125 1604840 5714480 1657088 5639464 -1604840 5714480 1743800 5687320 1663944 5646256 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1604840 5714480 -1604840 5714480 1663944 5646256 1663880 5646248 1663776 5646144 -1604784 5714488 1599875 5599875 1599875 5760125 1604840 5714480 -1604784 5714488 1604840 5714480 1657088 5639464 1657056 5639384 -1604784 5714488 1599875 5760125 1604840 5714480 1657056 5639384 -1604840 5714480 1663776 5646144 1657088 5639464 1657056 5639384 -1604784 5714488 1604840 5714480 1657056 5639384 1599875 5599875 -1604784 5714488 1599875 5760125 1604840 5714480 1599875 5599875 -1604784 5714488 1604840 5714480 1599875 5599875 1599875 5760125 -1657056 5639384 1657088 5639296 1599875 5599875 1604840 5714480 -1604840 5714480 1657088 5639464 1657056 5639384 1599875 5599875 -1604840 5714480 1604944 5714528 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1604944 5714528 -1599875 5760125 1604944 5714528 1604840 5714480 1604784 5714488 -1599875 5760125 1760125 5760125 1604944 5714528 1604784 5714488 -1604840 5714480 1604944 5714528 1751256 5699792 1743888 5687504 -1604944 5714528 1760125 5760125 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1604944 5714528 -1604840 5714480 1604944 5714528 1743888 5687504 1743800 5687320 -1604840 5714480 1604944 5714528 1743800 5687320 1663944 5646256 -1604944 5714528 1743888 5687504 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1604944 5714528 -1604840 5714480 1604944 5714528 1663944 5646256 1663880 5646248 -1604944 5714528 1743800 5687320 1663944 5646256 1663880 5646248 -1604944 5714528 1751256 5699792 1743888 5687504 1743800 5687320 -1604840 5714480 1604784 5714488 1604944 5714528 1663880 5646248 -1604944 5714528 1599875 5760125 1760125 5760125 1751256 5699792 -1604840 5714480 1604944 5714528 1663880 5646248 1663776 5646144 -1604840 5714480 1604944 5714528 1663776 5646144 1657088 5639464 -1604840 5714480 1604944 5714528 1657088 5639464 1657056 5639384 -1604944 5714528 1663944 5646256 1663880 5646248 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1604944 5714528 -1604840 5714480 1604784 5714488 1604944 5714528 1657088 5639464 -1604944 5714528 1663880 5646248 1663776 5646144 1657088 5639464 -1599875 5760125 1604944 5714528 1604784 5714488 1599875 5599875 -1599875 5760125 1605040 5714624 1604944 5714528 1604784 5714488 -1604944 5714528 1604840 5714480 1604784 5714488 1605040 5714624 -1605040 5714624 1760125 5760125 1604944 5714528 1604784 5714488 -1599875 5760125 1760125 5760125 1605040 5714624 1604784 5714488 -1604944 5714528 1605040 5714624 1760125 5760125 1751256 5699792 -1604944 5714528 1605040 5714624 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1605040 5714624 -1760125 5760125 1751376 5699848 1751256 5699792 1605040 5714624 -1604944 5714528 1604784 5714488 1605040 5714624 1743888 5687504 -1605040 5714624 1599875 5760125 1760125 5760125 1751256 5699792 -1604944 5714528 1605040 5714624 1743888 5687504 1743800 5687320 -1605040 5714624 1751256 5699792 1743888 5687504 1743800 5687320 -1604944 5714528 1605040 5714624 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1605040 5714624 -1604944 5714528 1604784 5714488 1605040 5714624 1663944 5646256 -1604944 5714528 1605040 5714624 1663944 5646256 1663880 5646248 -1605040 5714624 1743800 5687320 1663944 5646256 1663880 5646248 -1604944 5714528 1604784 5714488 1605040 5714624 1663880 5646248 -1604944 5714528 1605040 5714624 1663880 5646248 1663776 5646144 -1605040 5714624 1743888 5687504 1743800 5687320 1663944 5646256 -1605040 5714624 1760125 5760125 1751256 5699792 1743888 5687504 -1599875 5760125 1605040 5714624 1604784 5714488 1599875 5599875 -1605040 5714624 1605128 5714784 1760125 5760125 1751256 5699792 -1605040 5714624 1599875 5760125 1605128 5714784 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1605128 5714784 -1599875 5760125 1605128 5714784 1605040 5714624 1604784 5714488 -1605128 5714784 1751256 5699792 1605040 5714624 1604784 5714488 -1605040 5714624 1604944 5714528 1604784 5714488 1605128 5714784 -1605128 5714784 1599875 5760125 1760125 5760125 1751256 5699792 -1605040 5714624 1605128 5714784 1751256 5699792 1743888 5687504 -1605040 5714624 1605128 5714784 1743888 5687504 1743800 5687320 -1605040 5714624 1604784 5714488 1605128 5714784 1743800 5687320 -1751256 5699792 1743976 5687584 1743888 5687504 1605128 5714784 -1605128 5714784 1760125 5760125 1751256 5699792 1743888 5687504 -1605040 5714624 1605128 5714784 1743800 5687320 1663944 5646256 -1605128 5714784 1743888 5687504 1743800 5687320 1663944 5646256 -1605040 5714624 1604784 5714488 1605128 5714784 1663944 5646256 -1605040 5714624 1605128 5714784 1663944 5646256 1663880 5646248 -1605040 5714624 1604784 5714488 1605128 5714784 1663880 5646248 -1743800 5687320 1664040 5646192 1663944 5646256 1605128 5714784 -1605040 5714624 1605128 5714784 1663880 5646248 1604944 5714528 -1605128 5714784 1743800 5687320 1663944 5646256 1663880 5646248 -1605128 5714784 1751256 5699792 1743888 5687504 1743800 5687320 -1599875 5760125 1760125 5760125 1605128 5714784 1604784 5714488 -1599875 5760125 1605128 5714784 1604784 5714488 1599875 5599875 -1605128 5714784 1605152 5714888 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1605152 5714888 -1605128 5714784 1605152 5714888 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1605152 5714888 -1605152 5714888 1760125 5760125 1751256 5699792 1743888 5687504 -1605128 5714784 1599875 5760125 1605152 5714888 1743888 5687504 -1605128 5714784 1605152 5714888 1743888 5687504 1743800 5687320 -1605128 5714784 1605152 5714888 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1605152 5714888 -1605152 5714888 1751256 5699792 1743888 5687504 1743800 5687320 -1605128 5714784 1605152 5714888 1663944 5646256 1663880 5646248 -1605128 5714784 1599875 5760125 1605152 5714888 1663944 5646256 -1605152 5714888 1743888 5687504 1743800 5687320 1663944 5646256 -1599875 5760125 1605152 5714888 1605128 5714784 1604784 5714488 -1605128 5714784 1605040 5714624 1604784 5714488 1605152 5714888 -1605152 5714888 1663944 5646256 1605128 5714784 1604784 5714488 -1605152 5714888 1599875 5760125 1760125 5760125 1751256 5699792 -1599875 5760125 1760125 5760125 1605152 5714888 1604784 5714488 -1599875 5760125 1605152 5714888 1604784 5714488 1599875 5599875 -1604784 5714488 1605136 5714928 1605152 5714888 1605128 5714784 -1604784 5714488 1605136 5714928 1605128 5714784 1605040 5714624 -1604784 5714488 1605136 5714928 1605040 5714624 1604944 5714528 -1604784 5714488 1599875 5760125 1605136 5714928 1605040 5714624 -1605136 5714928 1605152 5714888 1605128 5714784 1605040 5714624 -1605136 5714928 1599875 5760125 1605152 5714888 1605128 5714784 -1605152 5714888 1605136 5714928 1599875 5760125 1760125 5760125 -1605152 5714888 1605136 5714928 1760125 5760125 1751256 5699792 -1605152 5714888 1605128 5714784 1605136 5714928 1760125 5760125 -1605136 5714928 1604784 5714488 1599875 5760125 1760125 5760125 -1599875 5760125 1605136 5714928 1604784 5714488 1599875 5599875 -1605136 5714928 1605152 5714944 1760125 5760125 1605152 5714888 -1605152 5714944 1599875 5760125 1760125 5760125 1605152 5714888 -1760125 5760125 1751256 5699792 1605152 5714888 1605152 5714944 -1760125 5760125 1751376 5699848 1751256 5699792 1605152 5714944 -1751256 5699792 1743888 5687504 1605152 5714888 1605152 5714944 -1751256 5699792 1743976 5687584 1743888 5687504 1605152 5714944 -1743888 5687504 1743800 5687320 1605152 5714888 1605152 5714944 -1743888 5687504 1743800 5687320 1605152 5714944 1751256 5699792 -1743800 5687320 1663944 5646256 1605152 5714888 1605152 5714944 -1663944 5646256 1605128 5714784 1605152 5714888 1605152 5714944 -1743800 5687320 1664040 5646192 1663944 5646256 1605152 5714944 -1743800 5687320 1663944 5646256 1605152 5714944 1743888 5687504 -1760125 5760125 1751256 5699792 1605152 5714944 1599875 5760125 -1751256 5699792 1743888 5687504 1605152 5714944 1760125 5760125 -1605152 5714888 1605136 5714928 1605152 5714944 1663944 5646256 -1599875 5760125 1605152 5714944 1605136 5714928 1604784 5714488 -1605136 5714928 1599875 5760125 1605152 5714944 1605152 5714888 -1604784 5714488 1605064 5714952 1605136 5714928 1605040 5714624 -1604784 5714488 1599875 5760125 1605064 5714952 1605040 5714624 -1605064 5714952 1599875 5760125 1605136 5714928 1605040 5714624 -1604784 5714488 1605064 5714952 1605040 5714624 1604944 5714528 -1605136 5714928 1605128 5714784 1605040 5714624 1605064 5714952 -1605136 5714928 1605128 5714784 1605064 5714952 1599875 5760125 -1605040 5714624 1604784 5714488 1605064 5714952 1605128 5714784 -1605136 5714928 1605152 5714888 1605128 5714784 1605064 5714952 -1605136 5714928 1605152 5714888 1605064 5714952 1599875 5760125 -1605128 5714784 1605040 5714624 1605064 5714952 1605152 5714888 -1605136 5714928 1605064 5714952 1599875 5760125 1605152 5714944 -1599875 5760125 1760125 5760125 1605152 5714944 1605064 5714952 -1605136 5714928 1605152 5714888 1605064 5714952 1605152 5714944 -1605064 5714952 1604784 5714488 1599875 5760125 1605152 5714944 -1599875 5760125 1605064 5714952 1604784 5714488 1599875 5599875 -1604784 5714488 1604928 5714896 1605064 5714952 1605040 5714624 -1604784 5714488 1599875 5760125 1604928 5714896 1605040 5714624 -1604928 5714896 1599875 5760125 1605064 5714952 1605040 5714624 -1604784 5714488 1604928 5714896 1605040 5714624 1604944 5714528 -1604784 5714488 1599875 5760125 1604928 5714896 1604944 5714528 -1604928 5714896 1605064 5714952 1605040 5714624 1604944 5714528 -1604784 5714488 1604928 5714896 1604944 5714528 1604840 5714480 -1605064 5714952 1605128 5714784 1605040 5714624 1604928 5714896 -1605040 5714624 1604944 5714528 1604928 5714896 1605128 5714784 -1605064 5714952 1605128 5714784 1604928 5714896 1599875 5760125 -1605064 5714952 1605152 5714888 1605128 5714784 1604928 5714896 -1605064 5714952 1604928 5714896 1599875 5760125 1605152 5714944 -1599875 5760125 1604928 5714896 1604784 5714488 1599875 5599875 -1604784 5714488 1604832 5714824 1604928 5714896 1604944 5714528 -1604784 5714488 1604832 5714824 1604944 5714528 1604840 5714480 -1604928 5714896 1604832 5714824 1599875 5760125 1605064 5714952 -1604832 5714824 1599875 5760125 1604928 5714896 1604944 5714528 -1604784 5714488 1599875 5760125 1604832 5714824 1604944 5714528 -1604928 5714896 1605040 5714624 1604944 5714528 1604832 5714824 -1604944 5714528 1604784 5714488 1604832 5714824 1605040 5714624 -1604928 5714896 1605128 5714784 1605040 5714624 1604832 5714824 -1604928 5714896 1605040 5714624 1604832 5714824 1599875 5760125 -1599875 5760125 1604832 5714824 1604784 5714488 1599875 5599875 -1604784 5714488 1604712 5714680 1599875 5760125 1604832 5714824 -1599875 5760125 1604928 5714896 1604832 5714824 1604712 5714680 -1604712 5714680 1599875 5599875 1599875 5760125 1604832 5714824 -1604784 5714488 1604712 5714680 1604832 5714824 1604944 5714528 -1604832 5714824 1605040 5714624 1604944 5714528 1604712 5714680 -1604784 5714488 1604712 5714680 1604944 5714528 1604840 5714480 -1604712 5714680 1604832 5714824 1604944 5714528 1604840 5714480 -1604784 5714488 1599875 5599875 1604712 5714680 1604840 5714480 -1604712 5714680 1599875 5760125 1604832 5714824 1604944 5714528 -1599875 5599875 1604712 5714680 1604784 5714488 1604840 5714480 -1604712 5714680 1604696 5714600 1599875 5760125 1604832 5714824 -1599875 5599875 1604696 5714600 1604712 5714680 1604784 5714488 -1604696 5714600 1599875 5760125 1604712 5714680 1604784 5714488 -1604712 5714680 1604840 5714480 1604784 5714488 1604696 5714600 -1599875 5599875 1599875 5760125 1604696 5714600 1604784 5714488 -1599875 5599875 1604696 5714600 1604784 5714488 1604840 5714480 -1604784 5714488 1604704 5714560 1604696 5714600 1604712 5714680 -1604696 5714600 1604704 5714560 1599875 5599875 1599875 5760125 -1599875 5599875 1604704 5714560 1604784 5714488 1604840 5714480 -1604784 5714488 1604744 5714504 1604704 5714560 1604696 5714600 -1604704 5714560 1604744 5714504 1599875 5599875 1604696 5714600 -1599875 5599875 1604744 5714504 1604784 5714488 1604840 5714480 -1599875 5760125 1619904 5752368 1605152 5714944 1605064 5714952 -1599875 5760125 1760125 5760125 1619904 5752368 1605064 5714952 -1619904 5752368 1760125 5760125 1605152 5714944 1605064 5714952 -1605152 5714944 1619904 5752368 1760125 5760125 1751256 5699792 -1619904 5752368 1599875 5760125 1760125 5760125 1751256 5699792 -1605152 5714944 1605064 5714952 1619904 5752368 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1619904 5752368 -1599875 5760125 1619904 5752368 1605064 5714952 1604928 5714896 -1605152 5714944 1619904 5752368 1751256 5699792 1743888 5687504 -1605152 5714944 1605064 5714952 1619904 5752368 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1619904 5752368 -1605152 5714944 1619904 5752368 1743888 5687504 1743800 5687320 -1605152 5714944 1605064 5714952 1619904 5752368 1743800 5687320 -1605152 5714944 1619904 5752368 1743800 5687320 1663944 5646256 -1605152 5714944 1605064 5714952 1619904 5752368 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1619904 5752368 -1619904 5752368 1743888 5687504 1743800 5687320 1663944 5646256 -1605152 5714944 1619904 5752368 1663944 5646256 1605152 5714888 -1605152 5714944 1605064 5714952 1619904 5752368 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1619904 5752368 -1619904 5752368 1743800 5687320 1663944 5646256 1605152 5714888 -1619904 5752368 1760125 5760125 1751256 5699792 1743888 5687504 -1619904 5752368 1751256 5699792 1743888 5687504 1743800 5687320 -1605152 5714944 1619904 5752368 1605152 5714888 1605136 5714928 -1663944 5646256 1619936 5752328 1743800 5687320 1664040 5646192 -1619904 5752368 1619936 5752328 1663944 5646256 1605152 5714888 -1619904 5752368 1743800 5687320 1619936 5752328 1605152 5714888 -1619936 5752328 1743800 5687320 1663944 5646256 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1619936 5752328 -1743800 5687320 1619936 5752328 1619904 5752368 1743888 5687504 -1619936 5752328 1605152 5714888 1619904 5752368 1743888 5687504 -1743800 5687320 1663944 5646256 1619936 5752328 1743888 5687504 -1619904 5752368 1619936 5752328 1605152 5714888 1605152 5714944 -1619904 5752368 1743888 5687504 1619936 5752328 1605152 5714944 -1619904 5752368 1619936 5752328 1605152 5714944 1605064 5714952 -1619904 5752368 1743888 5687504 1619936 5752328 1605064 5714952 -1619904 5752368 1619936 5752328 1605064 5714952 1599875 5760125 -1619904 5752368 1619936 5752328 1599875 5760125 1760125 5760125 -1619904 5752368 1743888 5687504 1619936 5752328 1599875 5760125 -1619936 5752328 1605152 5714944 1605064 5714952 1599875 5760125 -1619936 5752328 1663944 5646256 1605152 5714888 1605152 5714944 -1619936 5752328 1605152 5714888 1605152 5714944 1605064 5714952 -1605064 5714952 1604928 5714896 1599875 5760125 1619936 5752328 -1619904 5752368 1751256 5699792 1743888 5687504 1619936 5752328 -1619904 5752368 1751256 5699792 1619936 5752328 1599875 5760125 -1751256 5699792 1743976 5687584 1743888 5687504 1619936 5752328 -1743888 5687504 1743800 5687320 1619936 5752328 1751256 5699792 -1619904 5752368 1760125 5760125 1751256 5699792 1619936 5752328 -1619904 5752368 1599875 5760125 1760125 5760125 1619936 5752328 -1619904 5752368 1760125 5760125 1619936 5752328 1599875 5760125 -1760125 5760125 1751376 5699848 1751256 5699792 1619936 5752328 -1751256 5699792 1743888 5687504 1619936 5752328 1760125 5760125 -1605152 5714888 1605136 5714928 1605152 5714944 1619936 5752328 -1619936 5752328 1619984 5752296 1663944 5646256 1605152 5714888 -1619936 5752328 1743800 5687320 1619984 5752296 1605152 5714888 -1743800 5687320 1619984 5752296 1619936 5752328 1743888 5687504 -1619984 5752296 1605152 5714888 1619936 5752328 1743888 5687504 -1619984 5752296 1743800 5687320 1663944 5646256 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1619984 5752296 -1663944 5646256 1619984 5752296 1743800 5687320 1664040 5646192 -1619936 5752328 1619984 5752296 1605152 5714888 1605152 5714944 -1619984 5752296 1663944 5646256 1605152 5714888 1605152 5714944 -1619936 5752328 1743888 5687504 1619984 5752296 1605152 5714944 -1743800 5687320 1663944 5646256 1619984 5752296 1743888 5687504 -1619936 5752328 1751256 5699792 1743888 5687504 1619984 5752296 -1619936 5752328 1751256 5699792 1619984 5752296 1605152 5714944 -1743888 5687504 1743800 5687320 1619984 5752296 1751256 5699792 -1751256 5699792 1743976 5687584 1743888 5687504 1619984 5752296 -1619936 5752328 1619984 5752296 1605152 5714944 1605064 5714952 -1619936 5752328 1760125 5760125 1751256 5699792 1619984 5752296 -1619936 5752328 1760125 5760125 1619984 5752296 1605152 5714944 -1760125 5760125 1751376 5699848 1751256 5699792 1619984 5752296 -1751256 5699792 1743888 5687504 1619984 5752296 1760125 5760125 -1619936 5752328 1619904 5752368 1760125 5760125 1619984 5752296 -1619904 5752368 1599875 5760125 1760125 5760125 1619984 5752296 -1619936 5752328 1619904 5752368 1619984 5752296 1605152 5714944 -1760125 5760125 1751256 5699792 1619984 5752296 1619904 5752368 -1605152 5714888 1605136 5714928 1605152 5714944 1619984 5752296 -1751256 5699792 1620032 5752288 1760125 5760125 1751376 5699848 -1619984 5752296 1620032 5752288 1751256 5699792 1743888 5687504 -1619984 5752296 1620032 5752288 1743888 5687504 1743800 5687320 -1751256 5699792 1743976 5687584 1743888 5687504 1620032 5752288 -1620032 5752288 1760125 5760125 1751256 5699792 1743888 5687504 -1619984 5752296 1760125 5760125 1620032 5752288 1743800 5687320 -1619984 5752296 1620032 5752288 1743800 5687320 1663944 5646256 -1620032 5752288 1743888 5687504 1743800 5687320 1663944 5646256 -1619984 5752296 1620032 5752288 1663944 5646256 1605152 5714888 -1619984 5752296 1620032 5752288 1605152 5714888 1605152 5714944 -1620032 5752288 1663944 5646256 1605152 5714888 1605152 5714944 -1663944 5646256 1605128 5714784 1605152 5714888 1620032 5752288 -1743800 5687320 1664040 5646192 1663944 5646256 1620032 5752288 -1619984 5752296 1620032 5752288 1605152 5714944 1619936 5752328 -1619984 5752296 1760125 5760125 1620032 5752288 1605152 5714944 -1620032 5752288 1743800 5687320 1663944 5646256 1605152 5714888 -1620032 5752288 1751256 5699792 1743888 5687504 1743800 5687320 -1760125 5760125 1620032 5752288 1619984 5752296 1619904 5752368 -1760125 5760125 1620032 5752288 1619904 5752368 1599875 5760125 -1620032 5752288 1605152 5714944 1619984 5752296 1619904 5752368 -1760125 5760125 1751256 5699792 1620032 5752288 1619904 5752368 -1619984 5752296 1619936 5752328 1619904 5752368 1620032 5752288 -1619984 5752296 1619936 5752328 1620032 5752288 1605152 5714944 -1619904 5752368 1760125 5760125 1620032 5752288 1619936 5752328 -1605152 5714888 1605136 5714928 1605152 5714944 1620032 5752288 -1760125 5760125 1620064 5752296 1619904 5752368 1599875 5760125 -1620032 5752288 1620064 5752296 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1620064 5752296 -1620032 5752288 1620064 5752296 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1620064 5752296 -1620032 5752288 1619904 5752368 1620064 5752296 1743888 5687504 -1620064 5752296 1760125 5760125 1751256 5699792 1743888 5687504 -1620064 5752296 1619904 5752368 1760125 5760125 1751256 5699792 -1620032 5752288 1620064 5752296 1743888 5687504 1743800 5687320 -1620032 5752288 1620064 5752296 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1620064 5752296 -1620064 5752296 1751256 5699792 1743888 5687504 1743800 5687320 -1620032 5752288 1619904 5752368 1620064 5752296 1663944 5646256 -1620032 5752288 1620064 5752296 1663944 5646256 1605152 5714888 -1620064 5752296 1743800 5687320 1663944 5646256 1605152 5714888 -1620032 5752288 1620064 5752296 1605152 5714888 1605152 5714944 -1620032 5752288 1620064 5752296 1605152 5714944 1619984 5752296 -1663944 5646256 1605128 5714784 1605152 5714888 1620064 5752296 -1620032 5752288 1619904 5752368 1620064 5752296 1605152 5714944 -1620064 5752296 1663944 5646256 1605152 5714888 1605152 5714944 -1620064 5752296 1743888 5687504 1743800 5687320 1663944 5646256 -1619904 5752368 1620064 5752296 1620032 5752288 1619936 5752328 -1620064 5752296 1605152 5714944 1620032 5752288 1619936 5752328 -1619904 5752368 1760125 5760125 1620064 5752296 1619936 5752328 -1620032 5752288 1619984 5752296 1619936 5752328 1620064 5752296 -1620032 5752288 1619984 5752296 1620064 5752296 1605152 5714944 -1619936 5752328 1619904 5752368 1620064 5752296 1619984 5752296 -1605152 5714888 1605136 5714928 1605152 5714944 1620064 5752296 -1760125 5760125 1620152 5752352 1619904 5752368 1599875 5760125 -1619904 5752368 1619936 5752328 1599875 5760125 1620152 5752352 -1620152 5752352 1620064 5752296 1619904 5752368 1599875 5760125 -1620064 5752296 1620152 5752352 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1620152 5752352 -1620064 5752296 1620152 5752352 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1620152 5752352 -1620064 5752296 1620152 5752352 1743888 5687504 1743800 5687320 -1620152 5752352 1751256 5699792 1743888 5687504 1743800 5687320 -1620152 5752352 1760125 5760125 1751256 5699792 1743888 5687504 -1620064 5752296 1619904 5752368 1620152 5752352 1743800 5687320 -1619904 5752368 1620152 5752352 1620064 5752296 1619936 5752328 -1760125 5760125 1751256 5699792 1620152 5752352 1599875 5760125 -1620064 5752296 1620152 5752352 1743800 5687320 1663944 5646256 -1620064 5752296 1620152 5752352 1663944 5646256 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1620152 5752352 -1743800 5687320 1664040 5646192 1663944 5646256 1620152 5752352 -1620152 5752352 1743888 5687504 1743800 5687320 1663944 5646256 -1620064 5752296 1620152 5752352 1605152 5714888 1605152 5714944 -1620152 5752352 1663944 5646256 1605152 5714888 1605152 5714944 -1620064 5752296 1620152 5752352 1605152 5714944 1620032 5752288 -1620064 5752296 1619904 5752368 1620152 5752352 1605152 5714944 -1620152 5752352 1743800 5687320 1663944 5646256 1605152 5714888 -1605152 5714888 1605136 5714928 1605152 5714944 1620152 5752352 -1599875 5760125 1620192 5752400 1620152 5752352 1619904 5752368 -1599875 5760125 1620192 5752400 1619904 5752368 1619936 5752328 -1620192 5752400 1760125 5760125 1620152 5752352 1619904 5752368 -1620152 5752352 1620064 5752296 1619904 5752368 1620192 5752400 -1599875 5760125 1760125 5760125 1620192 5752400 1619904 5752368 -1620152 5752352 1620192 5752400 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1620192 5752400 -1620152 5752352 1619904 5752368 1620192 5752400 1751256 5699792 -1620192 5752400 1599875 5760125 1760125 5760125 1751256 5699792 -1620152 5752352 1620192 5752400 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1620192 5752400 -1620152 5752352 1619904 5752368 1620192 5752400 1743888 5687504 -1620152 5752352 1620192 5752400 1743888 5687504 1743800 5687320 -1620152 5752352 1619904 5752368 1620192 5752400 1743800 5687320 -1620152 5752352 1620192 5752400 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1620192 5752400 -1620152 5752352 1619904 5752368 1620192 5752400 1663944 5646256 -1620192 5752400 1743888 5687504 1743800 5687320 1663944 5646256 -1620192 5752400 1751256 5699792 1743888 5687504 1743800 5687320 -1620192 5752400 1760125 5760125 1751256 5699792 1743888 5687504 -1620152 5752352 1620192 5752400 1663944 5646256 1605152 5714888 -1599875 5760125 1620224 5752472 1620192 5752400 1619904 5752368 -1620192 5752400 1620152 5752352 1619904 5752368 1620224 5752472 -1599875 5760125 1620224 5752472 1619904 5752368 1619936 5752328 -1599875 5760125 1760125 5760125 1620224 5752472 1619904 5752368 -1620224 5752472 1760125 5760125 1620192 5752400 1619904 5752368 -1620192 5752400 1620224 5752472 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1620224 5752472 -1620192 5752400 1619904 5752368 1620224 5752472 1751256 5699792 -1620224 5752472 1599875 5760125 1760125 5760125 1751256 5699792 -1620192 5752400 1620224 5752472 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1620224 5752472 -1620192 5752400 1619904 5752368 1620224 5752472 1743888 5687504 -1620224 5752472 1760125 5760125 1751256 5699792 1743888 5687504 -1620192 5752400 1620224 5752472 1743888 5687504 1743800 5687320 -1599875 5760125 1620224 5752520 1620224 5752472 1619904 5752368 -1599875 5760125 1620224 5752520 1619904 5752368 1619936 5752328 -1599875 5760125 1760125 5760125 1620224 5752520 1619904 5752368 -1620224 5752472 1620192 5752400 1619904 5752368 1620224 5752520 -1620192 5752400 1620152 5752352 1619904 5752368 1620224 5752520 -1620224 5752520 1760125 5760125 1620224 5752472 1620192 5752400 -1619904 5752368 1599875 5760125 1620224 5752520 1620192 5752400 -1620224 5752472 1620224 5752520 1760125 5760125 1751256 5699792 -1599875 5760125 1620152 5752552 1620224 5752520 1619904 5752368 -1599875 5760125 1620152 5752552 1619904 5752368 1619936 5752328 -1620152 5752552 1760125 5760125 1620224 5752520 1619904 5752368 -1620224 5752520 1620192 5752400 1619904 5752368 1620152 5752552 -1620192 5752400 1620152 5752352 1619904 5752368 1620152 5752552 -1620224 5752520 1620192 5752400 1620152 5752552 1760125 5760125 -1619904 5752368 1599875 5760125 1620152 5752552 1620152 5752352 -1620152 5752352 1620064 5752296 1619904 5752368 1620152 5752552 -1620224 5752520 1620224 5752472 1620192 5752400 1620152 5752552 -1620224 5752520 1620224 5752472 1620152 5752552 1760125 5760125 -1620192 5752400 1620152 5752352 1620152 5752552 1620224 5752472 -1620224 5752520 1620152 5752552 1760125 5760125 1620224 5752472 -1599875 5760125 1760125 5760125 1620152 5752552 1619904 5752368 -1599875 5760125 1620096 5752560 1619904 5752368 1619936 5752328 -1619904 5752368 1620096 5752560 1620152 5752552 1620152 5752352 -1620152 5752552 1620192 5752400 1620152 5752352 1620096 5752560 -1620152 5752352 1619904 5752368 1620096 5752560 1620192 5752400 -1619904 5752368 1620096 5752560 1620152 5752352 1620064 5752296 -1620096 5752560 1620192 5752400 1620152 5752352 1620064 5752296 -1620152 5752552 1620224 5752472 1620192 5752400 1620096 5752560 -1619904 5752368 1620096 5752560 1620064 5752296 1619936 5752328 -1620096 5752560 1620152 5752352 1620064 5752296 1619936 5752328 -1620096 5752560 1599875 5760125 1620152 5752552 1620192 5752400 -1620152 5752552 1620096 5752560 1599875 5760125 1760125 5760125 -1619904 5752368 1599875 5760125 1620096 5752560 1619936 5752328 -1620064 5752296 1619984 5752296 1619936 5752328 1620096 5752560 -1599875 5760125 1620064 5752536 1619904 5752368 1619936 5752328 -1620096 5752560 1620064 5752536 1599875 5760125 1620152 5752552 -1619904 5752368 1620064 5752536 1620096 5752560 1619936 5752328 -1619904 5752368 1599875 5760125 1620064 5752536 1619936 5752328 -1620096 5752560 1620064 5752296 1619936 5752328 1620064 5752536 -1620096 5752560 1620152 5752352 1620064 5752296 1620064 5752536 -1620096 5752560 1620192 5752400 1620152 5752352 1620064 5752536 -1620096 5752560 1620152 5752552 1620192 5752400 1620064 5752536 -1620192 5752400 1620152 5752352 1620064 5752536 1620152 5752552 -1620152 5752352 1620064 5752296 1620064 5752536 1620192 5752400 -1620152 5752552 1620224 5752472 1620192 5752400 1620064 5752536 -1620064 5752296 1619936 5752328 1620064 5752536 1620152 5752352 -1620064 5752536 1599875 5760125 1620096 5752560 1620152 5752552 -1619936 5752328 1619904 5752368 1620064 5752536 1620064 5752296 -1620064 5752296 1619984 5752296 1619936 5752328 1620064 5752536 -1599875 5760125 1620000 5752512 1619904 5752368 1619936 5752328 -1619904 5752368 1620000 5752512 1620064 5752536 1619936 5752328 -1620000 5752512 1599875 5760125 1620064 5752536 1619936 5752328 -1619904 5752368 1599875 5760125 1620000 5752512 1619936 5752328 -1620064 5752536 1620064 5752296 1619936 5752328 1620000 5752512 -1620064 5752536 1620064 5752296 1620000 5752512 1599875 5760125 -1619936 5752328 1619904 5752368 1620000 5752512 1620064 5752296 -1620064 5752536 1620152 5752352 1620064 5752296 1620000 5752512 -1620064 5752536 1620192 5752400 1620152 5752352 1620000 5752512 -1620064 5752536 1620152 5752352 1620000 5752512 1599875 5760125 -1620064 5752296 1619936 5752328 1620000 5752512 1620152 5752352 -1620064 5752536 1620000 5752512 1599875 5760125 1620096 5752560 -1620064 5752536 1620152 5752352 1620000 5752512 1620096 5752560 -1620000 5752512 1619904 5752368 1599875 5760125 1620096 5752560 -1599875 5760125 1620152 5752552 1620096 5752560 1620000 5752512 -1620064 5752296 1619984 5752296 1619936 5752328 1620000 5752512 -1619936 5752328 1619904 5752368 1620000 5752512 1619984 5752296 -1620064 5752296 1620032 5752288 1619984 5752296 1620000 5752512 -1620064 5752296 1619984 5752296 1620000 5752512 1620152 5752352 -1599875 5760125 1619976 5752504 1619904 5752368 1619936 5752328 -1620000 5752512 1619976 5752504 1599875 5760125 1620096 5752560 -1619976 5752504 1619904 5752368 1599875 5760125 1620096 5752560 -1620000 5752512 1619904 5752368 1619976 5752504 1620096 5752560 -1619904 5752368 1619976 5752504 1620000 5752512 1619936 5752328 -1620000 5752512 1619984 5752296 1619936 5752328 1619976 5752504 -1619904 5752368 1599875 5760125 1619976 5752504 1619936 5752328 -1619976 5752504 1620096 5752560 1620000 5752512 1619984 5752296 -1619936 5752328 1619904 5752368 1619976 5752504 1619984 5752296 -1599875 5760125 1620152 5752552 1620096 5752560 1619976 5752504 -1620000 5752512 1619976 5752504 1620096 5752560 1620064 5752536 -1620000 5752512 1620064 5752296 1619984 5752296 1619976 5752504 -1599875 5760125 1619944 5752464 1619904 5752368 1619936 5752328 -1619976 5752504 1619944 5752464 1599875 5760125 1620096 5752560 -1619904 5752368 1619944 5752464 1619976 5752504 1619936 5752328 -1619944 5752464 1599875 5760125 1619976 5752504 1619936 5752328 -1619976 5752504 1619984 5752296 1619936 5752328 1619944 5752464 -1619976 5752504 1620000 5752512 1619984 5752296 1619944 5752464 -1619976 5752504 1620000 5752512 1619944 5752464 1599875 5760125 -1619936 5752328 1619904 5752368 1619944 5752464 1619984 5752296 -1619984 5752296 1619936 5752328 1619944 5752464 1620000 5752512 -1619904 5752368 1599875 5760125 1619944 5752464 1619936 5752328 -1620000 5752512 1620064 5752296 1619984 5752296 1619944 5752464 -1620000 5752512 1620064 5752296 1619944 5752464 1619976 5752504 -1619984 5752296 1619936 5752328 1619944 5752464 1620064 5752296 -1620064 5752296 1620032 5752288 1619984 5752296 1619944 5752464 -1620000 5752512 1620152 5752352 1620064 5752296 1619944 5752464 -1599875 5760125 1619904 5752400 1619904 5752368 1619936 5752328 -1619944 5752464 1619904 5752400 1599875 5760125 1619976 5752504 -1619904 5752368 1619904 5752400 1619944 5752464 1619936 5752328 -1619944 5752464 1619984 5752296 1619936 5752328 1619904 5752400 -1619904 5752400 1599875 5760125 1619944 5752464 1619936 5752328 -1619904 5752368 1599875 5760125 1619904 5752400 1619936 5752328 -1605064 5714952 1613040 5747384 1619936 5752328 1605152 5714944 -1619936 5752328 1613040 5747384 1599875 5760125 1619904 5752368 -1599875 5760125 1619904 5752400 1619904 5752368 1613040 5747384 -1619904 5752368 1619936 5752328 1613040 5747384 1619904 5752400 -1599875 5760125 1619944 5752464 1619904 5752400 1613040 5747384 -1613040 5747384 1605064 5714952 1599875 5760125 1619904 5752400 -1605064 5714952 1599875 5760125 1613040 5747384 1605152 5714944 -1613040 5747384 1619904 5752368 1619936 5752328 1605152 5714944 -1619936 5752328 1619984 5752296 1605152 5714944 1613040 5747384 -1605152 5714944 1605064 5714952 1613040 5747384 1619984 5752296 -1619984 5752296 1620032 5752288 1605152 5714944 1613040 5747384 -1605152 5714944 1605064 5714952 1613040 5747384 1620032 5752288 -1620032 5752288 1620064 5752296 1605152 5714944 1613040 5747384 -1605152 5714944 1605064 5714952 1613040 5747384 1620064 5752296 -1620064 5752296 1620152 5752352 1605152 5714944 1613040 5747384 -1620032 5752288 1620064 5752296 1613040 5747384 1619984 5752296 -1619936 5752328 1619984 5752296 1613040 5747384 1619904 5752368 -1619984 5752296 1620032 5752288 1613040 5747384 1619936 5752328 -1599875 5760125 1613040 5747384 1605064 5714952 1604928 5714896 -1599875 5760125 1613040 5747384 1604928 5714896 1604832 5714824 -1599875 5760125 1619904 5752400 1613040 5747384 1604928 5714896 -1613040 5747384 1605152 5714944 1605064 5714952 1604928 5714896 -1599875 5760125 1612824 5747312 1604928 5714896 1604832 5714824 -1599875 5760125 1612824 5747312 1604832 5714824 1604712 5714680 -1613040 5747384 1612824 5747312 1599875 5760125 1619904 5752400 -1612824 5747312 1613040 5747384 1604928 5714896 1604832 5714824 -1599875 5760125 1613040 5747384 1612824 5747312 1604832 5714824 -1604928 5714896 1612824 5747312 1613040 5747384 1605064 5714952 -1613040 5747384 1605152 5714944 1605064 5714952 1612824 5747312 -1613040 5747384 1620064 5752296 1605152 5714944 1612824 5747312 -1612824 5747312 1599875 5760125 1613040 5747384 1605152 5714944 -1604928 5714896 1604832 5714824 1612824 5747312 1605064 5714952 -1605064 5714952 1604928 5714896 1612824 5747312 1605152 5714944 -1599875 5760125 1612688 5747224 1604832 5714824 1604712 5714680 -1604832 5714824 1612688 5747224 1612824 5747312 1604928 5714896 -1604832 5714824 1599875 5760125 1612688 5747224 1604928 5714896 -1612688 5747224 1599875 5760125 1612824 5747312 1604928 5714896 -1612824 5747312 1605064 5714952 1604928 5714896 1612688 5747224 -1604928 5714896 1604832 5714824 1612688 5747224 1605064 5714952 -1612824 5747312 1605064 5714952 1612688 5747224 1599875 5760125 -1612824 5747312 1612688 5747224 1599875 5760125 1613040 5747384 -1612824 5747312 1605152 5714944 1605064 5714952 1612688 5747224 -1612824 5747312 1613040 5747384 1605152 5714944 1612688 5747224 -1613040 5747384 1620064 5752296 1605152 5714944 1612688 5747224 -1612824 5747312 1613040 5747384 1612688 5747224 1599875 5760125 -1605064 5714952 1604928 5714896 1612688 5747224 1605152 5714944 -1605152 5714944 1605064 5714952 1612688 5747224 1613040 5747384 -1599875 5760125 1612592 5747096 1604832 5714824 1604712 5714680 -1604832 5714824 1612592 5747096 1612688 5747224 1604928 5714896 -1612688 5747224 1605064 5714952 1604928 5714896 1612592 5747096 -1612592 5747096 1599875 5760125 1612688 5747224 1605064 5714952 -1604928 5714896 1604832 5714824 1612592 5747096 1605064 5714952 -1604832 5714824 1599875 5760125 1612592 5747096 1604928 5714896 -1612688 5747224 1605152 5714944 1605064 5714952 1612592 5747096 -1605064 5714952 1604928 5714896 1612592 5747096 1605152 5714944 -1612688 5747224 1605152 5714944 1612592 5747096 1599875 5760125 -1612688 5747224 1612592 5747096 1599875 5760125 1612824 5747312 -1612688 5747224 1613040 5747384 1605152 5714944 1612592 5747096 -1613040 5747384 1620064 5752296 1605152 5714944 1612592 5747096 -1612688 5747224 1613040 5747384 1612592 5747096 1599875 5760125 -1612688 5747224 1612824 5747312 1613040 5747384 1612592 5747096 -1612688 5747224 1612824 5747312 1612592 5747096 1599875 5760125 -1605152 5714944 1605064 5714952 1612592 5747096 1613040 5747384 -1613040 5747384 1605152 5714944 1612592 5747096 1612824 5747312 -1599875 5760125 1612472 5746880 1604832 5714824 1604712 5714680 -1612592 5747096 1612472 5746880 1599875 5760125 1612688 5747224 -1604832 5714824 1612472 5746880 1612592 5747096 1604928 5714896 -1612592 5747096 1605064 5714952 1604928 5714896 1612472 5746880 -1612592 5747096 1605152 5714944 1605064 5714952 1612472 5746880 -1605064 5714952 1604928 5714896 1612472 5746880 1605152 5714944 -1612472 5746880 1599875 5760125 1612592 5747096 1605152 5714944 -1604928 5714896 1604832 5714824 1612472 5746880 1605064 5714952 -1604832 5714824 1599875 5760125 1612472 5746880 1604928 5714896 -1612592 5747096 1613040 5747384 1605152 5714944 1612472 5746880 -1613040 5747384 1620064 5752296 1605152 5714944 1612472 5746880 -1605152 5714944 1605064 5714952 1612472 5746880 1613040 5747384 -1612592 5747096 1613040 5747384 1612472 5746880 1599875 5760125 -1612592 5747096 1612824 5747312 1613040 5747384 1612472 5746880 -1599875 5760125 1612440 5746864 1604832 5714824 1604712 5714680 -1604832 5714824 1612440 5746864 1612472 5746880 1604928 5714896 -1612472 5746880 1605064 5714952 1604928 5714896 1612440 5746864 -1612472 5746880 1605152 5714944 1605064 5714952 1612440 5746864 -1612472 5746880 1613040 5747384 1605152 5714944 1612440 5746864 -1605064 5714952 1604928 5714896 1612440 5746864 1605152 5714944 -1604928 5714896 1604832 5714824 1612440 5746864 1605064 5714952 -1612472 5746880 1612440 5746864 1599875 5760125 1612592 5747096 -1612440 5746864 1604832 5714824 1599875 5760125 1612592 5747096 -1599875 5760125 1612688 5747224 1612592 5747096 1612440 5746864 -1612440 5746864 1612592 5747096 1612472 5746880 1605152 5714944 -1604832 5714824 1599875 5760125 1612440 5746864 1604928 5714896 -1605152 5714944 1612464 5746776 1613040 5747384 1620064 5752296 -1613040 5747384 1620032 5752288 1620064 5752296 1612464 5746776 -1605152 5714944 1612464 5746776 1620064 5752296 1620152 5752352 -1612472 5746880 1612464 5746776 1605152 5714944 1612440 5746864 -1605152 5714944 1612440 5746864 1612464 5746776 1620064 5752296 -1605152 5714944 1605064 5714952 1612440 5746864 1612464 5746776 -1612440 5746864 1612472 5746880 1612464 5746776 1605064 5714952 -1605152 5714944 1605064 5714952 1612464 5746776 1620064 5752296 -1612464 5746776 1612472 5746880 1613040 5747384 1620064 5752296 -1605064 5714952 1604928 5714896 1612440 5746864 1612464 5746776 -1612440 5746864 1612472 5746880 1612464 5746776 1604928 5714896 -1605064 5714952 1604928 5714896 1612464 5746776 1605152 5714944 -1604928 5714896 1604832 5714824 1612440 5746864 1612464 5746776 -1612440 5746864 1612472 5746880 1612464 5746776 1604832 5714824 -1604928 5714896 1604832 5714824 1612464 5746776 1605064 5714952 -1613040 5747384 1612464 5746776 1612472 5746880 1612592 5747096 -1613040 5747384 1620064 5752296 1612464 5746776 1612592 5747096 -1612472 5746880 1612592 5747096 1612464 5746776 1612440 5746864 -1613040 5747384 1612464 5746776 1612592 5747096 1612824 5747312 -1604832 5714824 1599875 5760125 1612440 5746864 1612464 5746776 -1599875 5760125 1612592 5747096 1612440 5746864 1612464 5746776 -1604832 5714824 1604712 5714680 1599875 5760125 1612464 5746776 -1612440 5746864 1612472 5746880 1612464 5746776 1599875 5760125 -1604832 5714824 1599875 5760125 1612464 5746776 1604928 5714896 -1620064 5752296 1612512 5746760 1612464 5746776 1613040 5747384 -1620064 5752296 1612512 5746760 1613040 5747384 1620032 5752288 -1605152 5714944 1612512 5746760 1620064 5752296 1620152 5752352 -1612512 5746760 1605152 5714944 1612464 5746776 1613040 5747384 -1620064 5752296 1605152 5714944 1612512 5746760 1613040 5747384 -1612464 5746776 1612512 5746760 1605152 5714944 1605064 5714952 -1612464 5746776 1612592 5747096 1613040 5747384 1612512 5746760 -1613040 5747384 1620064 5752296 1612512 5746760 1612592 5747096 -1612464 5746776 1612592 5747096 1612512 5746760 1605152 5714944 -1612464 5746776 1612472 5746880 1612592 5747096 1612512 5746760 -1612464 5746776 1612472 5746880 1612512 5746760 1605152 5714944 -1612592 5747096 1613040 5747384 1612512 5746760 1612472 5746880 -1612464 5746776 1612440 5746864 1612472 5746880 1612512 5746760 -1612592 5747096 1612824 5747312 1613040 5747384 1612512 5746760 -1613040 5747384 1620064 5752296 1612512 5746760 1612824 5747312 -1612592 5747096 1612824 5747312 1612512 5746760 1612472 5746880 -1612592 5747096 1612688 5747224 1612824 5747312 1612512 5746760 -1605152 5714944 1612584 5746744 1620064 5752296 1620152 5752352 -1620064 5752296 1612584 5746744 1612512 5746760 1613040 5747384 -1612512 5746760 1612824 5747312 1613040 5747384 1612584 5746744 -1620064 5752296 1612584 5746744 1613040 5747384 1620032 5752288 -1612584 5746744 1605152 5714944 1612512 5746760 1612824 5747312 -1620064 5752296 1605152 5714944 1612584 5746744 1613040 5747384 -1612512 5746760 1612584 5746744 1605152 5714944 1612464 5746776 -1613040 5747384 1620064 5752296 1612584 5746744 1612824 5747312 -1612512 5746760 1612592 5747096 1612824 5747312 1612584 5746744 -1612824 5747312 1613040 5747384 1612584 5746744 1612592 5747096 -1612512 5746760 1612592 5747096 1612584 5746744 1605152 5714944 -1612512 5746760 1612472 5746880 1612592 5747096 1612584 5746744 -1612512 5746760 1612472 5746880 1612584 5746744 1605152 5714944 -1612592 5747096 1612688 5747224 1612824 5747312 1612584 5746744 -1612824 5747312 1613040 5747384 1612584 5746744 1612688 5747224 -1612512 5746760 1612464 5746776 1612472 5746880 1612584 5746744 -1612592 5747096 1612688 5747224 1612584 5746744 1612472 5746880 -1605152 5714944 1612768 5746808 1620064 5752296 1620152 5752352 -1620064 5752296 1612768 5746808 1612584 5746744 1613040 5747384 -1620064 5752296 1612768 5746808 1613040 5747384 1620032 5752288 -1612768 5746808 1605152 5714944 1612584 5746744 1613040 5747384 -1613040 5747384 1619984 5752296 1620032 5752288 1612768 5746808 -1620064 5752296 1605152 5714944 1612768 5746808 1620032 5752288 -1612584 5746744 1612768 5746808 1605152 5714944 1612512 5746760 -1612584 5746744 1612824 5747312 1613040 5747384 1612768 5746808 -1612584 5746744 1612688 5747224 1612824 5747312 1612768 5746808 -1612584 5746744 1612688 5747224 1612768 5746808 1605152 5714944 -1612768 5746808 1612824 5747312 1613040 5747384 1620032 5752288 -1612584 5746744 1612592 5747096 1612688 5747224 1612768 5746808 -1612688 5747224 1612824 5747312 1612768 5746808 1612592 5747096 -1612584 5746744 1612592 5747096 1612768 5746808 1605152 5714944 -1612584 5746744 1612472 5746880 1612592 5747096 1612768 5746808 -1612584 5746744 1612472 5746880 1612768 5746808 1605152 5714944 -1612584 5746744 1612512 5746760 1612472 5746880 1612768 5746808 -1612592 5747096 1612688 5747224 1612768 5746808 1612472 5746880 -1612824 5747312 1613040 5747384 1612768 5746808 1612688 5747224 -1605152 5714944 1612960 5746920 1620064 5752296 1620152 5752352 -1620064 5752296 1612960 5746920 1612768 5746808 1620032 5752288 -1612768 5746808 1613040 5747384 1620032 5752288 1612960 5746920 -1613040 5747384 1619984 5752296 1620032 5752288 1612960 5746920 -1612768 5746808 1612824 5747312 1613040 5747384 1612960 5746920 -1613040 5747384 1620032 5752288 1612960 5746920 1612824 5747312 -1620032 5752288 1620064 5752296 1612960 5746920 1613040 5747384 -1620064 5752296 1605152 5714944 1612960 5746920 1620032 5752288 -1612768 5746808 1612960 5746920 1605152 5714944 1612584 5746744 -1612960 5746920 1605152 5714944 1612768 5746808 1612824 5747312 -1612768 5746808 1612688 5747224 1612824 5747312 1612960 5746920 -1612768 5746808 1612592 5747096 1612688 5747224 1612960 5746920 -1612824 5747312 1613040 5747384 1612960 5746920 1612688 5747224 -1612688 5747224 1612824 5747312 1612960 5746920 1612592 5747096 -1612768 5746808 1612472 5746880 1612592 5747096 1612960 5746920 -1612768 5746808 1612592 5747096 1612960 5746920 1605152 5714944 -1613040 5747384 1613240 5747168 1612960 5746920 1612824 5747312 -1620032 5752288 1613240 5747168 1613040 5747384 1619984 5752296 -1620032 5752288 1612960 5746920 1613240 5747168 1619984 5752296 -1613240 5747168 1612960 5746920 1613040 5747384 1619984 5752296 -1612960 5746920 1613240 5747168 1620032 5752288 1620064 5752296 -1612960 5746920 1613040 5747384 1613240 5747168 1620064 5752296 -1613240 5747168 1619984 5752296 1620032 5752288 1620064 5752296 -1612960 5746920 1613240 5747168 1620064 5752296 1605152 5714944 -1620064 5752296 1620152 5752352 1605152 5714944 1613240 5747168 -1612960 5746920 1613040 5747384 1613240 5747168 1605152 5714944 -1612960 5746920 1613240 5747168 1605152 5714944 1612768 5746808 -1613240 5747168 1620032 5752288 1620064 5752296 1605152 5714944 -1613040 5747384 1619936 5752328 1619984 5752296 1613240 5747168 -1613040 5747384 1619936 5752328 1613240 5747168 1612960 5746920 -1619984 5752296 1620032 5752288 1613240 5747168 1619936 5752328 -1613040 5747384 1619904 5752368 1619936 5752328 1613240 5747168 -1613040 5747384 1619904 5752400 1619904 5752368 1613240 5747168 -1613040 5747384 1619904 5752368 1613240 5747168 1612960 5746920 -1619936 5752328 1619984 5752296 1613240 5747168 1619904 5752368 -1605152 5714944 1613360 5747216 1620064 5752296 1620152 5752352 -1620064 5752296 1613360 5747216 1613240 5747168 1620032 5752288 -1613240 5747168 1619984 5752296 1620032 5752288 1613360 5747216 -1613360 5747216 1605152 5714944 1613240 5747168 1619984 5752296 -1613240 5747168 1619936 5752328 1619984 5752296 1613360 5747216 -1619984 5752296 1620032 5752288 1613360 5747216 1619936 5752328 -1613240 5747168 1619936 5752328 1613360 5747216 1605152 5714944 -1620064 5752296 1605152 5714944 1613360 5747216 1620032 5752288 -1620032 5752288 1620064 5752296 1613360 5747216 1619984 5752296 -1613240 5747168 1613360 5747216 1605152 5714944 1612960 5746920 -1613240 5747168 1619936 5752328 1613360 5747216 1612960 5746920 -1613360 5747216 1620064 5752296 1605152 5714944 1612960 5746920 -1605152 5714944 1612768 5746808 1612960 5746920 1613360 5747216 -1613240 5747168 1619904 5752368 1619936 5752328 1613360 5747216 -1613240 5747168 1619904 5752368 1613360 5747216 1612960 5746920 -1619936 5752328 1619984 5752296 1613360 5747216 1619904 5752368 -1613240 5747168 1613040 5747384 1619904 5752368 1613360 5747216 -1613040 5747384 1619904 5752400 1619904 5752368 1613360 5747216 -1613240 5747168 1613040 5747384 1613360 5747216 1612960 5746920 -1613240 5747168 1612960 5746920 1613040 5747384 1613360 5747216 -1619904 5752368 1619936 5752328 1613360 5747216 1613040 5747384 -1605152 5714944 1613520 5747248 1620064 5752296 1620152 5752352 -1613360 5747216 1613520 5747248 1605152 5714944 1612960 5746920 -1613520 5747248 1620064 5752296 1605152 5714944 1612960 5746920 -1613360 5747216 1620064 5752296 1613520 5747248 1612960 5746920 -1620064 5752296 1613520 5747248 1613360 5747216 1620032 5752288 -1620064 5752296 1605152 5714944 1613520 5747248 1620032 5752288 -1613520 5747248 1612960 5746920 1613360 5747216 1620032 5752288 -1605152 5714944 1612768 5746808 1612960 5746920 1613520 5747248 -1613360 5747216 1619984 5752296 1620032 5752288 1613520 5747248 -1613360 5747216 1619936 5752328 1619984 5752296 1613520 5747248 -1613360 5747216 1619904 5752368 1619936 5752328 1613520 5747248 -1619936 5752328 1619984 5752296 1613520 5747248 1619904 5752368 -1613360 5747216 1619904 5752368 1613520 5747248 1612960 5746920 -1620032 5752288 1620064 5752296 1613520 5747248 1619984 5752296 -1619984 5752296 1620032 5752288 1613520 5747248 1619936 5752328 -1613360 5747216 1613520 5747248 1612960 5746920 1613240 5747168 -1613360 5747216 1613040 5747384 1619904 5752368 1613520 5747248 -1613040 5747384 1619904 5752400 1619904 5752368 1613520 5747248 -1619904 5752368 1619936 5752328 1613520 5747248 1613040 5747384 -1613360 5747216 1613040 5747384 1613520 5747248 1612960 5746920 -1613360 5747216 1613240 5747168 1613040 5747384 1613520 5747248 -1605152 5714944 1613680 5747344 1620064 5752296 1620152 5752352 -1613520 5747248 1613680 5747344 1605152 5714944 1612960 5746920 -1620064 5752296 1613680 5747344 1613520 5747248 1620032 5752288 -1613680 5747344 1605152 5714944 1613520 5747248 1620032 5752288 -1613520 5747248 1619984 5752296 1620032 5752288 1613680 5747344 -1613520 5747248 1619984 5752296 1613680 5747344 1605152 5714944 -1620032 5752288 1620064 5752296 1613680 5747344 1619984 5752296 -1613520 5747248 1619936 5752328 1619984 5752296 1613680 5747344 -1613520 5747248 1619904 5752368 1619936 5752328 1613680 5747344 -1613520 5747248 1619904 5752368 1613680 5747344 1605152 5714944 -1613520 5747248 1613040 5747384 1619904 5752368 1613680 5747344 -1613040 5747384 1619904 5752400 1619904 5752368 1613680 5747344 -1613040 5747384 1599875 5760125 1619904 5752400 1613680 5747344 -1619904 5752368 1619936 5752328 1613680 5747344 1619904 5752400 -1613520 5747248 1613040 5747384 1613680 5747344 1605152 5714944 -1613040 5747384 1619904 5752400 1613680 5747344 1613520 5747248 -1619984 5752296 1620032 5752288 1613680 5747344 1619936 5752328 -1619936 5752328 1619984 5752296 1613680 5747344 1619904 5752368 -1613520 5747248 1613360 5747216 1613040 5747384 1613680 5747344 -1620064 5752296 1605152 5714944 1613680 5747344 1620032 5752288 -1619904 5752400 1613768 5747456 1613040 5747384 1599875 5760125 -1613680 5747344 1613768 5747456 1619904 5752400 1619904 5752368 -1613680 5747344 1613768 5747456 1619904 5752368 1619936 5752328 -1613768 5747456 1619904 5752400 1619904 5752368 1619936 5752328 -1613768 5747456 1613040 5747384 1619904 5752400 1619904 5752368 -1613040 5747384 1613768 5747456 1613680 5747344 1613520 5747248 -1613680 5747344 1613768 5747456 1619936 5752328 1619984 5752296 -1613768 5747456 1619904 5752368 1619936 5752328 1619984 5752296 -1613680 5747344 1613768 5747456 1619984 5752296 1620032 5752288 -1613680 5747344 1613768 5747456 1620032 5752288 1620064 5752296 -1613768 5747456 1619984 5752296 1620032 5752288 1620064 5752296 -1613768 5747456 1619936 5752328 1619984 5752296 1620032 5752288 -1613680 5747344 1613040 5747384 1613768 5747456 1620064 5752296 -1613680 5747344 1613768 5747456 1620064 5752296 1605152 5714944 -1619904 5752400 1613784 5747512 1613040 5747384 1599875 5760125 -1613768 5747456 1613784 5747512 1619904 5752400 1619904 5752368 -1613768 5747456 1613784 5747512 1619904 5752368 1619936 5752328 -1613784 5747512 1613040 5747384 1619904 5752400 1619904 5752368 -1613768 5747456 1613784 5747512 1619936 5752328 1619984 5752296 -1613784 5747512 1619904 5752368 1619936 5752328 1619984 5752296 -1613784 5747512 1619904 5752400 1619904 5752368 1619936 5752328 -1613768 5747456 1613040 5747384 1613784 5747512 1619984 5752296 -1613040 5747384 1613784 5747512 1613768 5747456 1613680 5747344 -1613040 5747384 1619904 5752400 1613784 5747512 1613680 5747344 -1613784 5747512 1619984 5752296 1613768 5747456 1613680 5747344 -1613040 5747384 1613784 5747512 1613680 5747344 1613520 5747248 -1613040 5747384 1619904 5752400 1613784 5747512 1613520 5747248 -1613784 5747512 1613768 5747456 1613680 5747344 1613520 5747248 -1613768 5747456 1613784 5747512 1619984 5752296 1620032 5752288 -1613784 5747512 1619936 5752328 1619984 5752296 1620032 5752288 -1613768 5747456 1613680 5747344 1613784 5747512 1620032 5752288 -1613768 5747456 1613784 5747512 1620032 5752288 1620064 5752296 -1613040 5747384 1613784 5747512 1613520 5747248 1613360 5747216 -1619904 5752400 1613752 5747576 1613040 5747384 1599875 5760125 -1613784 5747512 1613752 5747576 1619904 5752400 1619904 5752368 -1613784 5747512 1613040 5747384 1613752 5747576 1619904 5752368 -1613040 5747384 1613752 5747576 1613784 5747512 1613520 5747248 -1613752 5747576 1619904 5752368 1613784 5747512 1613520 5747248 -1613784 5747512 1613752 5747576 1619904 5752368 1619936 5752328 -1613784 5747512 1613752 5747576 1619936 5752328 1619984 5752296 -1613752 5747576 1619904 5752400 1619904 5752368 1619936 5752328 -1613784 5747512 1613520 5747248 1613752 5747576 1619936 5752328 -1613784 5747512 1613680 5747344 1613520 5747248 1613752 5747576 -1613784 5747512 1613680 5747344 1613752 5747576 1619936 5752328 -1613520 5747248 1613040 5747384 1613752 5747576 1613680 5747344 -1613784 5747512 1613768 5747456 1613680 5747344 1613752 5747576 -1613784 5747512 1613768 5747456 1613752 5747576 1619936 5752328 -1613680 5747344 1613520 5747248 1613752 5747576 1613768 5747456 -1613040 5747384 1613752 5747576 1613520 5747248 1613360 5747216 -1613752 5747576 1613680 5747344 1613520 5747248 1613360 5747216 -1613040 5747384 1613752 5747576 1613360 5747216 1613240 5747168 -1613752 5747576 1613040 5747384 1619904 5752400 1619904 5752368 -1613040 5747384 1619904 5752400 1613752 5747576 1613360 5747216 -1619904 5752400 1613696 5747632 1613040 5747384 1599875 5760125 -1619904 5752400 1613696 5747632 1599875 5760125 1619944 5752464 -1613040 5747384 1612824 5747312 1599875 5760125 1613696 5747632 -1619904 5752400 1613752 5747576 1613696 5747632 1599875 5760125 -1613696 5747632 1613752 5747576 1613040 5747384 1599875 5760125 -1613752 5747576 1613696 5747632 1619904 5752400 1619904 5752368 -1613752 5747576 1613696 5747632 1619904 5752368 1619936 5752328 -1613696 5747632 1599875 5760125 1619904 5752400 1619904 5752368 -1613752 5747576 1613040 5747384 1613696 5747632 1619904 5752368 -1613040 5747384 1613696 5747632 1613752 5747576 1613360 5747216 -1613040 5747384 1599875 5760125 1613696 5747632 1613360 5747216 -1613040 5747384 1613696 5747632 1613360 5747216 1613240 5747168 -1613752 5747576 1613520 5747248 1613360 5747216 1613696 5747632 -1613752 5747576 1613680 5747344 1613520 5747248 1613696 5747632 -1613752 5747576 1613768 5747456 1613680 5747344 1613696 5747632 -1613680 5747344 1613520 5747248 1613696 5747632 1613768 5747456 -1613752 5747576 1613784 5747512 1613768 5747456 1613696 5747632 -1613520 5747248 1613360 5747216 1613696 5747632 1613680 5747344 -1613696 5747632 1619904 5752368 1613752 5747576 1613768 5747456 -1613360 5747216 1613040 5747384 1613696 5747632 1613520 5747248 -1613696 5747632 1613584 5747640 1599875 5760125 1619904 5752400 -1599875 5760125 1619944 5752464 1619904 5752400 1613584 5747640 -1599875 5760125 1613584 5747640 1613040 5747384 1612824 5747312 -1613584 5747640 1612824 5747312 1599875 5760125 1619904 5752400 -1613584 5747640 1613696 5747632 1613040 5747384 1612824 5747312 -1613696 5747632 1613584 5747640 1619904 5752400 1619904 5752368 -1613696 5747632 1613040 5747384 1613584 5747640 1619904 5752400 -1613040 5747384 1613584 5747640 1613696 5747632 1613360 5747216 -1613040 5747384 1612824 5747312 1613584 5747640 1613360 5747216 -1613584 5747640 1619904 5752400 1613696 5747632 1613360 5747216 -1613040 5747384 1613584 5747640 1613360 5747216 1613240 5747168 -1599875 5760125 1613584 5747640 1612824 5747312 1612688 5747224 -1613696 5747632 1613520 5747248 1613360 5747216 1613584 5747640 -1613696 5747632 1613520 5747248 1613584 5747640 1619904 5752400 -1613360 5747216 1613040 5747384 1613584 5747640 1613520 5747248 -1613696 5747632 1613680 5747344 1613520 5747248 1613584 5747640 -1613696 5747632 1613768 5747456 1613680 5747344 1613584 5747640 -1613696 5747632 1613752 5747576 1613768 5747456 1613584 5747640 -1613768 5747456 1613680 5747344 1613584 5747640 1613752 5747576 -1613752 5747576 1613784 5747512 1613768 5747456 1613584 5747640 -1613696 5747632 1613752 5747576 1613584 5747640 1619904 5752400 -1613680 5747344 1613520 5747248 1613584 5747640 1613768 5747456 -1613520 5747248 1613360 5747216 1613584 5747640 1613680 5747344 -1612824 5747312 1613368 5747576 1613584 5747640 1613040 5747384 -1612824 5747312 1599875 5760125 1613368 5747576 1613040 5747384 -1613584 5747640 1613368 5747576 1599875 5760125 1619904 5752400 -1613368 5747576 1599875 5760125 1613584 5747640 1613040 5747384 -1613584 5747640 1613360 5747216 1613040 5747384 1613368 5747576 -1613040 5747384 1612824 5747312 1613368 5747576 1613360 5747216 -1613584 5747640 1613360 5747216 1613368 5747576 1599875 5760125 -1613584 5747640 1613520 5747248 1613360 5747216 1613368 5747576 -1613584 5747640 1613520 5747248 1613368 5747576 1599875 5760125 -1613360 5747216 1613040 5747384 1613368 5747576 1613520 5747248 -1613360 5747216 1613240 5747168 1613040 5747384 1613368 5747576 -1599875 5760125 1613368 5747576 1612824 5747312 1612688 5747224 -1613584 5747640 1613680 5747344 1613520 5747248 1613368 5747576 -1613584 5747640 1613680 5747344 1613368 5747576 1599875 5760125 -1613520 5747248 1613360 5747216 1613368 5747576 1613680 5747344 -1613584 5747640 1613768 5747456 1613680 5747344 1613368 5747576 -1613368 5747576 1613176 5747448 1613040 5747384 1612824 5747312 -1613360 5747216 1613176 5747448 1613368 5747576 1613520 5747248 -1613040 5747384 1613176 5747448 1613360 5747216 1613240 5747168 -1613040 5747384 1613176 5747448 1613240 5747168 1612960 5746920 -1613040 5747384 1613368 5747576 1613176 5747448 1613240 5747168 -1613176 5747448 1613368 5747576 1613360 5747216 1613240 5747168 -1605152 5714944 1613208 5742808 1620064 5752296 1620152 5752352 -1613208 5742808 1613680 5747344 1620064 5752296 1620152 5752352 -1605152 5714944 1613680 5747344 1613208 5742808 1620152 5752352 -1605152 5714944 1613208 5742808 1620152 5752352 1605152 5714888 -1620152 5752352 1663944 5646256 1605152 5714888 1613208 5742808 -1613208 5742808 1620064 5752296 1620152 5752352 1605152 5714888 -1605152 5714944 1613680 5747344 1613208 5742808 1605152 5714888 -1613680 5747344 1613208 5742808 1605152 5714944 1613520 5747248 -1613680 5747344 1620064 5752296 1613208 5742808 1613520 5747248 -1613208 5742808 1605152 5714888 1605152 5714944 1613520 5747248 -1605152 5714944 1612960 5746920 1613520 5747248 1613208 5742808 -1605152 5714944 1612960 5746920 1613208 5742808 1605152 5714888 -1612960 5746920 1613360 5747216 1613520 5747248 1613208 5742808 -1605152 5714944 1612768 5746808 1612960 5746920 1613208 5742808 -1605152 5714944 1612768 5746808 1613208 5742808 1605152 5714888 -1612960 5746920 1613520 5747248 1613208 5742808 1612768 5746808 -1613520 5747248 1613680 5747344 1613208 5742808 1612960 5746920 -1620064 5752296 1613208 5742808 1613680 5747344 1613768 5747456 -1620064 5752296 1620152 5752352 1613208 5742808 1613768 5747456 -1613208 5742808 1613520 5747248 1613680 5747344 1613768 5747456 -1620064 5752296 1613208 5742808 1613768 5747456 1620032 5752288 -1620064 5752296 1620152 5752352 1613208 5742808 1620032 5752288 -1613768 5747456 1613784 5747512 1620032 5752288 1613208 5742808 -1613208 5742808 1613680 5747344 1613768 5747456 1620032 5752288 -1605152 5714944 1612584 5746744 1612768 5746808 1613208 5742808 -1605152 5714944 1612584 5746744 1613208 5742808 1605152 5714888 -1605152 5714944 1612512 5746760 1612584 5746744 1613208 5742808 -1612584 5746744 1612768 5746808 1613208 5742808 1612512 5746760 -1605152 5714944 1612512 5746760 1613208 5742808 1605152 5714888 -1605152 5714944 1612464 5746776 1612512 5746760 1613208 5742808 -1605152 5714944 1612464 5746776 1613208 5742808 1605152 5714888 -1605152 5714944 1605064 5714952 1612464 5746776 1613208 5742808 -1605152 5714944 1605064 5714952 1613208 5742808 1605152 5714888 -1605064 5714952 1604928 5714896 1612464 5746776 1613208 5742808 -1605064 5714952 1604928 5714896 1613208 5742808 1605152 5714944 -1604928 5714896 1604832 5714824 1612464 5746776 1613208 5742808 -1604928 5714896 1604832 5714824 1613208 5742808 1605064 5714952 -1604832 5714824 1599875 5760125 1612464 5746776 1613208 5742808 -1604832 5714824 1604712 5714680 1599875 5760125 1613208 5742808 -1604832 5714824 1599875 5760125 1613208 5742808 1604928 5714896 -1612512 5746760 1612584 5746744 1613208 5742808 1612464 5746776 -1612464 5746776 1612512 5746760 1613208 5742808 1599875 5760125 -1612768 5746808 1612960 5746920 1613208 5742808 1612584 5746744 -1605152 5714944 1613208 5742808 1605152 5714888 1605136 5714928 -1599875 5760125 1612440 5746864 1612464 5746776 1613208 5742808 -1605152 5714888 1613280 5742808 1620152 5752352 1663944 5646256 -1620152 5752352 1613280 5742808 1613208 5742808 1620064 5752296 -1613208 5742808 1620032 5752288 1620064 5752296 1613280 5742808 -1620064 5752296 1620152 5752352 1613280 5742808 1620032 5752288 -1613208 5742808 1613768 5747456 1620032 5752288 1613280 5742808 -1620032 5752288 1620064 5752296 1613280 5742808 1613768 5747456 -1620152 5752352 1605152 5714888 1613280 5742808 1620064 5752296 -1613768 5747456 1613784 5747512 1620032 5752288 1613280 5742808 -1613208 5742808 1613280 5742808 1605152 5714888 1605152 5714944 -1613208 5742808 1613280 5742808 1605152 5714944 1605064 5714952 -1613280 5742808 1620152 5752352 1605152 5714888 1605152 5714944 -1613280 5742808 1605152 5714944 1613208 5742808 1613768 5747456 -1613208 5742808 1613680 5747344 1613768 5747456 1613280 5742808 -1613208 5742808 1613520 5747248 1613680 5747344 1613280 5742808 -1613768 5747456 1620032 5752288 1613280 5742808 1613680 5747344 -1613208 5742808 1613520 5747248 1613280 5742808 1605152 5714944 -1613208 5742808 1612960 5746920 1613520 5747248 1613280 5742808 -1613520 5747248 1613680 5747344 1613280 5742808 1612960 5746920 -1613208 5742808 1612768 5746808 1612960 5746920 1613280 5742808 -1612960 5746920 1613360 5747216 1613520 5747248 1613280 5742808 -1613208 5742808 1612768 5746808 1613280 5742808 1605152 5714944 -1613208 5742808 1612584 5746744 1612768 5746808 1613280 5742808 -1613208 5742808 1612512 5746760 1612584 5746744 1613280 5742808 -1612768 5746808 1612960 5746920 1613280 5742808 1612584 5746744 -1613208 5742808 1612584 5746744 1613280 5742808 1605152 5714944 -1612960 5746920 1613520 5747248 1613280 5742808 1612768 5746808 -1613680 5747344 1613768 5747456 1613280 5742808 1613520 5747248 -1605152 5714888 1605136 5714928 1605152 5714944 1613280 5742808 -1605152 5714888 1613368 5742856 1620152 5752352 1663944 5646256 -1613280 5742808 1613368 5742856 1605152 5714888 1605152 5714944 -1613368 5742856 1620152 5752352 1605152 5714888 1605152 5714944 -1613280 5742808 1620152 5752352 1613368 5742856 1605152 5714944 -1620152 5752352 1613368 5742856 1613280 5742808 1620064 5752296 -1613280 5742808 1620032 5752288 1620064 5752296 1613368 5742856 -1620152 5752352 1605152 5714888 1613368 5742856 1620064 5752296 -1613280 5742808 1613768 5747456 1620032 5752288 1613368 5742856 -1620032 5752288 1620064 5752296 1613368 5742856 1613768 5747456 -1613280 5742808 1613680 5747344 1613768 5747456 1613368 5742856 -1613768 5747456 1620032 5752288 1613368 5742856 1613680 5747344 -1613368 5742856 1605152 5714944 1613280 5742808 1613680 5747344 -1620064 5752296 1620152 5752352 1613368 5742856 1620032 5752288 -1613768 5747456 1613784 5747512 1620032 5752288 1613368 5742856 -1613280 5742808 1613368 5742856 1605152 5714944 1613208 5742808 -1613280 5742808 1613520 5747248 1613680 5747344 1613368 5742856 -1613280 5742808 1612960 5746920 1613520 5747248 1613368 5742856 -1613680 5747344 1613768 5747456 1613368 5742856 1613520 5747248 -1613280 5742808 1612960 5746920 1613368 5742856 1605152 5714944 -1612960 5746920 1613360 5747216 1613520 5747248 1613368 5742856 -1613280 5742808 1612768 5746808 1612960 5746920 1613368 5742856 -1612960 5746920 1613520 5747248 1613368 5742856 1612768 5746808 -1613280 5742808 1612584 5746744 1612768 5746808 1613368 5742856 -1613280 5742808 1612584 5746744 1613368 5742856 1605152 5714944 -1613280 5742808 1613208 5742808 1612584 5746744 1613368 5742856 -1613208 5742808 1612512 5746760 1612584 5746744 1613368 5742856 -1612584 5746744 1612768 5746808 1613368 5742856 1613208 5742808 -1613280 5742808 1613208 5742808 1613368 5742856 1605152 5714944 -1612768 5746808 1612960 5746920 1613368 5742856 1612584 5746744 -1613520 5747248 1613680 5747344 1613368 5742856 1612960 5746920 -1605152 5714888 1605136 5714928 1605152 5714944 1613368 5742856 -1605152 5714888 1613432 5742904 1620152 5752352 1663944 5646256 -1613368 5742856 1613432 5742904 1605152 5714888 1605152 5714944 -1613368 5742856 1620152 5752352 1613432 5742904 1605152 5714944 -1620152 5752352 1613432 5742904 1613368 5742856 1620064 5752296 -1613432 5742904 1605152 5714944 1613368 5742856 1620064 5752296 -1613368 5742856 1613432 5742904 1605152 5714944 1613280 5742808 -1613368 5742856 1620032 5752288 1620064 5752296 1613432 5742904 -1613368 5742856 1613768 5747456 1620032 5752288 1613432 5742904 -1613368 5742856 1613768 5747456 1613432 5742904 1605152 5714944 -1620064 5752296 1620152 5752352 1613432 5742904 1620032 5752288 -1613368 5742856 1613680 5747344 1613768 5747456 1613432 5742904 -1613768 5747456 1620032 5752288 1613432 5742904 1613680 5747344 -1613368 5742856 1613680 5747344 1613432 5742904 1605152 5714944 -1613368 5742856 1613520 5747248 1613680 5747344 1613432 5742904 -1613368 5742856 1613520 5747248 1613432 5742904 1605152 5714944 -1613680 5747344 1613768 5747456 1613432 5742904 1613520 5747248 -1620032 5752288 1620064 5752296 1613432 5742904 1613768 5747456 -1613768 5747456 1613784 5747512 1620032 5752288 1613432 5742904 -1613432 5742904 1620152 5752352 1605152 5714888 1605152 5714944 -1620152 5752352 1605152 5714888 1613432 5742904 1620064 5752296 -1613368 5742856 1612960 5746920 1613520 5747248 1613432 5742904 -1613368 5742856 1612960 5746920 1613432 5742904 1605152 5714944 -1613368 5742856 1612768 5746808 1612960 5746920 1613432 5742904 -1613368 5742856 1612768 5746808 1613432 5742904 1605152 5714944 -1613520 5747248 1613680 5747344 1613432 5742904 1612960 5746920 -1612960 5746920 1613360 5747216 1613520 5747248 1613432 5742904 -1613368 5742856 1612584 5746744 1612768 5746808 1613432 5742904 -1613368 5742856 1612584 5746744 1613432 5742904 1605152 5714944 -1612768 5746808 1612960 5746920 1613432 5742904 1612584 5746744 -1613368 5742856 1613208 5742808 1612584 5746744 1613432 5742904 -1613368 5742856 1613208 5742808 1613432 5742904 1605152 5714944 -1613208 5742808 1612512 5746760 1612584 5746744 1613432 5742904 -1613368 5742856 1613280 5742808 1613208 5742808 1613432 5742904 -1612584 5746744 1612768 5746808 1613432 5742904 1613208 5742808 -1612960 5746920 1613520 5747248 1613432 5742904 1612768 5746808 -1605152 5714888 1605136 5714928 1605152 5714944 1613432 5742904 -1605152 5714888 1613488 5742960 1620152 5752352 1663944 5646256 -1613432 5742904 1613488 5742960 1605152 5714888 1605152 5714944 -1613432 5742904 1613488 5742960 1605152 5714944 1613368 5742856 -1613488 5742960 1620152 5752352 1605152 5714888 1605152 5714944 -1613432 5742904 1620152 5752352 1613488 5742960 1605152 5714944 -1620152 5752352 1613488 5742960 1613432 5742904 1620064 5752296 -1613432 5742904 1620032 5752288 1620064 5752296 1613488 5742960 -1613432 5742904 1613768 5747456 1620032 5752288 1613488 5742960 -1613432 5742904 1613680 5747344 1613768 5747456 1613488 5742960 -1620032 5752288 1620064 5752296 1613488 5742960 1613768 5747456 -1613432 5742904 1613520 5747248 1613680 5747344 1613488 5742960 -1613680 5747344 1613768 5747456 1613488 5742960 1613520 5747248 -1613432 5742904 1612960 5746920 1613520 5747248 1613488 5742960 -1613520 5747248 1613680 5747344 1613488 5742960 1612960 5746920 -1613768 5747456 1620032 5752288 1613488 5742960 1613680 5747344 -1620152 5752352 1605152 5714888 1613488 5742960 1620064 5752296 -1612960 5746920 1613360 5747216 1613520 5747248 1613488 5742960 -1613768 5747456 1613784 5747512 1620032 5752288 1613488 5742960 -1613488 5742960 1605152 5714944 1613432 5742904 1612960 5746920 -1620064 5752296 1620152 5752352 1613488 5742960 1620032 5752288 -1613432 5742904 1612768 5746808 1612960 5746920 1613488 5742960 -1613432 5742904 1612584 5746744 1612768 5746808 1613488 5742960 -1612960 5746920 1613520 5747248 1613488 5742960 1612768 5746808 -1613432 5742904 1612584 5746744 1613488 5742960 1605152 5714944 -1613432 5742904 1613208 5742808 1612584 5746744 1613488 5742960 -1613208 5742808 1612512 5746760 1612584 5746744 1613488 5742960 -1612584 5746744 1612768 5746808 1613488 5742960 1613208 5742808 -1613432 5742904 1613368 5742856 1613208 5742808 1613488 5742960 -1613432 5742904 1613208 5742808 1613488 5742960 1605152 5714944 -1612768 5746808 1612960 5746920 1613488 5742960 1612584 5746744 -1605152 5714888 1605136 5714928 1605152 5714944 1613488 5742960 -1605152 5714888 1613528 5743008 1620152 5752352 1663944 5646256 -1613488 5742960 1613528 5743008 1605152 5714888 1605152 5714944 -1613488 5742960 1620152 5752352 1613528 5743008 1605152 5714944 -1620152 5752352 1613528 5743008 1613488 5742960 1620064 5752296 -1613528 5743008 1605152 5714944 1613488 5742960 1620064 5752296 -1613488 5742960 1613528 5743008 1605152 5714944 1613432 5742904 -1613488 5742960 1620032 5752288 1620064 5752296 1613528 5743008 -1613488 5742960 1613768 5747456 1620032 5752288 1613528 5743008 -1613488 5742960 1613680 5747344 1613768 5747456 1613528 5743008 -1613488 5742960 1613520 5747248 1613680 5747344 1613528 5743008 -1613768 5747456 1620032 5752288 1613528 5743008 1613680 5747344 -1613488 5742960 1612960 5746920 1613520 5747248 1613528 5743008 -1613520 5747248 1613680 5747344 1613528 5743008 1612960 5746920 -1613488 5742960 1612768 5746808 1612960 5746920 1613528 5743008 -1612960 5746920 1613520 5747248 1613528 5743008 1612768 5746808 -1613680 5747344 1613768 5747456 1613528 5743008 1613520 5747248 -1613488 5742960 1612768 5746808 1613528 5743008 1605152 5714944 -1620064 5752296 1620152 5752352 1613528 5743008 1620032 5752288 -1612960 5746920 1613360 5747216 1613520 5747248 1613528 5743008 -1613768 5747456 1613784 5747512 1620032 5752288 1613528 5743008 -1620032 5752288 1620064 5752296 1613528 5743008 1613768 5747456 -1613488 5742960 1612584 5746744 1612768 5746808 1613528 5743008 -1613488 5742960 1613208 5742808 1612584 5746744 1613528 5743008 -1613208 5742808 1612512 5746760 1612584 5746744 1613528 5743008 -1612768 5746808 1612960 5746920 1613528 5743008 1612584 5746744 -1613488 5742960 1613208 5742808 1613528 5743008 1605152 5714944 -1613488 5742960 1613432 5742904 1613208 5742808 1613528 5743008 -1612584 5746744 1612768 5746808 1613528 5743008 1613208 5742808 -1613528 5743008 1620152 5752352 1605152 5714888 1605152 5714944 -1620152 5752352 1605152 5714888 1613528 5743008 1620064 5752296 -1605152 5714888 1605136 5714928 1605152 5714944 1613528 5743008 -1613768 5747456 1613544 5743040 1613528 5743008 1613680 5747344 -1613528 5743008 1613520 5747248 1613680 5747344 1613544 5743040 -1613528 5743008 1612960 5746920 1613520 5747248 1613544 5743040 -1613680 5747344 1613768 5747456 1613544 5743040 1613520 5747248 -1613528 5743008 1612768 5746808 1612960 5746920 1613544 5743040 -1612960 5746920 1613520 5747248 1613544 5743040 1612768 5746808 -1613528 5743008 1612584 5746744 1612768 5746808 1613544 5743040 -1612768 5746808 1612960 5746920 1613544 5743040 1612584 5746744 -1613520 5747248 1613680 5747344 1613544 5743040 1612960 5746920 -1613768 5747456 1620032 5752288 1613544 5743040 1613680 5747344 -1612960 5746920 1613360 5747216 1613520 5747248 1613544 5743040 -1620032 5752288 1613544 5743040 1613768 5747456 1613784 5747512 -1613528 5743008 1613544 5743040 1620032 5752288 1620064 5752296 -1613528 5743008 1613544 5743040 1620064 5752296 1620152 5752352 -1613544 5743040 1613768 5747456 1620032 5752288 1620064 5752296 -1613544 5743040 1620032 5752288 1620064 5752296 1620152 5752352 -1613528 5743008 1613208 5742808 1612584 5746744 1613544 5743040 -1613208 5742808 1612512 5746760 1612584 5746744 1613544 5743040 -1613528 5743008 1613488 5742960 1613208 5742808 1613544 5743040 -1612584 5746744 1612768 5746808 1613544 5743040 1613208 5742808 -1613488 5742960 1613432 5742904 1613208 5742808 1613544 5743040 -1613208 5742808 1612584 5746744 1613544 5743040 1613488 5742960 -1613544 5743040 1620152 5752352 1613528 5743008 1613488 5742960 -1613528 5743008 1613544 5743040 1620152 5752352 1605152 5714888 -1613544 5743040 1613544 5743064 1613680 5747344 1613768 5747456 -1613520 5747248 1613544 5743064 1613544 5743040 1612960 5746920 -1613544 5743040 1612768 5746808 1612960 5746920 1613544 5743064 -1613544 5743040 1612584 5746744 1612768 5746808 1613544 5743064 -1612768 5746808 1612960 5746920 1613544 5743064 1612584 5746744 -1613544 5743040 1613208 5742808 1612584 5746744 1613544 5743064 -1612584 5746744 1612768 5746808 1613544 5743064 1613208 5742808 -1613208 5742808 1612512 5746760 1612584 5746744 1613544 5743064 -1612584 5746744 1612768 5746808 1613544 5743064 1612512 5746760 -1613208 5742808 1612512 5746760 1613544 5743064 1613544 5743040 -1612960 5746920 1613520 5747248 1613544 5743064 1612768 5746808 -1613544 5743064 1613520 5747248 1613680 5747344 1613768 5747456 -1613520 5747248 1613680 5747344 1613544 5743064 1612960 5746920 -1613544 5743040 1613208 5742808 1613544 5743064 1613768 5747456 -1613544 5743040 1613544 5743064 1613768 5747456 1620032 5752288 -1613544 5743064 1613680 5747344 1613768 5747456 1620032 5752288 -1613544 5743040 1613544 5743064 1620032 5752288 1620064 5752296 -1613544 5743040 1613208 5742808 1613544 5743064 1620064 5752296 -1613544 5743064 1613768 5747456 1620032 5752288 1620064 5752296 -1613520 5747248 1613544 5743064 1612960 5746920 1613360 5747216 -1613768 5747456 1613784 5747512 1620032 5752288 1613544 5743064 -1613208 5742808 1612464 5746776 1612512 5746760 1613544 5743064 -1613544 5743040 1613544 5743064 1620064 5752296 1620152 5752352 -1613544 5743040 1613488 5742960 1613208 5742808 1613544 5743064 -1613544 5743040 1613528 5743008 1613488 5742960 1613544 5743064 -1613208 5742808 1612512 5746760 1613544 5743064 1613488 5742960 -1613544 5743040 1613528 5743008 1613544 5743064 1620064 5752296 -1613488 5742960 1613432 5742904 1613208 5742808 1613544 5743064 -1613432 5742904 1613368 5742856 1613208 5742808 1613544 5743064 -1613208 5742808 1612512 5746760 1613544 5743064 1613432 5742904 -1613488 5742960 1613432 5742904 1613544 5743064 1613528 5743008 -1613544 5743064 1613544 5743096 1613680 5747344 1613768 5747456 -1613544 5743064 1613544 5743096 1613768 5747456 1620032 5752288 -1613544 5743096 1613520 5747248 1613680 5747344 1613768 5747456 -1613544 5743096 1613680 5747344 1613768 5747456 1620032 5752288 -1613544 5743064 1613520 5747248 1613544 5743096 1620032 5752288 -1613520 5747248 1613544 5743096 1613544 5743064 1612960 5746920 -1613544 5743064 1612768 5746808 1612960 5746920 1613544 5743096 -1613544 5743064 1612584 5746744 1612768 5746808 1613544 5743096 -1613544 5743064 1612512 5746760 1612584 5746744 1613544 5743096 -1612584 5746744 1612768 5746808 1613544 5743096 1612512 5746760 -1613544 5743064 1613208 5742808 1612512 5746760 1613544 5743096 -1612512 5746760 1612584 5746744 1613544 5743096 1613208 5742808 -1613544 5743064 1613432 5742904 1613208 5742808 1613544 5743096 -1613208 5742808 1612512 5746760 1613544 5743096 1613432 5742904 -1613432 5742904 1613368 5742856 1613208 5742808 1613544 5743096 -1612768 5746808 1612960 5746920 1613544 5743096 1612584 5746744 -1613520 5747248 1613680 5747344 1613544 5743096 1612960 5746920 -1613544 5743096 1620032 5752288 1613544 5743064 1613432 5742904 -1612960 5746920 1613520 5747248 1613544 5743096 1612768 5746808 -1613544 5743064 1613544 5743096 1620032 5752288 1620064 5752296 -1613544 5743096 1613768 5747456 1620032 5752288 1620064 5752296 -1613544 5743064 1613432 5742904 1613544 5743096 1620064 5752296 -1613544 5743064 1613544 5743096 1620064 5752296 1613544 5743040 -1613520 5747248 1613544 5743096 1612960 5746920 1613360 5747216 -1613768 5747456 1613784 5747512 1620032 5752288 1613544 5743096 -1613208 5742808 1612464 5746776 1612512 5746760 1613544 5743096 -1613544 5743064 1613488 5742960 1613432 5742904 1613544 5743096 -1613432 5742904 1613208 5742808 1613544 5743096 1613488 5742960 -1613544 5743064 1613488 5742960 1613544 5743096 1620064 5752296 -1613544 5743064 1613528 5743008 1613488 5742960 1613544 5743096 -1613544 5743096 1613496 5743096 1612512 5746760 1612584 5746744 -1613544 5743096 1613496 5743096 1612584 5746744 1612768 5746808 -1613496 5743096 1612512 5746760 1612584 5746744 1612768 5746808 -1613208 5742808 1613496 5743096 1613544 5743096 1613432 5742904 -1613208 5742808 1613496 5743096 1613432 5742904 1613368 5742856 -1613496 5743096 1613544 5743096 1613432 5742904 1613368 5742856 -1613544 5743096 1613488 5742960 1613432 5742904 1613496 5743096 -1613432 5742904 1613368 5742856 1613496 5743096 1613488 5742960 -1613544 5743096 1613496 5743096 1612768 5746808 1612960 5746920 -1613544 5743096 1613488 5742960 1613496 5743096 1612768 5746808 -1612512 5746760 1613496 5743096 1613208 5742808 1612464 5746776 -1613208 5742808 1599875 5760125 1612464 5746776 1613496 5743096 -1613208 5742808 1613496 5743096 1613368 5742856 1613280 5742808 -1613496 5743096 1612464 5746776 1612512 5746760 1612584 5746744 -1613208 5742808 1612464 5746776 1613496 5743096 1613368 5742856 -1613544 5743096 1613544 5743064 1613488 5742960 1613496 5743096 -1613488 5742960 1613432 5742904 1613496 5743096 1613544 5743064 -1613544 5743096 1613544 5743064 1613496 5743096 1612768 5746808 -1613544 5743064 1613528 5743008 1613488 5742960 1613496 5743096 -1613544 5743064 1613544 5743040 1613528 5743008 1613496 5743096 -1613488 5742960 1613432 5742904 1613496 5743096 1613528 5743008 -1613544 5743064 1613544 5743040 1613496 5743096 1613544 5743096 -1613528 5743008 1613488 5742960 1613496 5743096 1613544 5743040 -1613496 5743096 1613416 5743064 1612464 5746776 1612512 5746760 -1613416 5743064 1613208 5742808 1612464 5746776 1612512 5746760 -1612464 5746776 1613416 5743064 1613208 5742808 1599875 5760125 -1613496 5743096 1613416 5743064 1612512 5746760 1612584 5746744 -1613496 5743096 1613416 5743064 1612584 5746744 1612768 5746808 -1613416 5743064 1612464 5746776 1612512 5746760 1612584 5746744 -1613496 5743096 1613208 5742808 1613416 5743064 1612584 5746744 -1613208 5742808 1613416 5743064 1613496 5743096 1613368 5742856 -1613496 5743096 1613432 5742904 1613368 5742856 1613416 5743064 -1613496 5743096 1613488 5742960 1613432 5742904 1613416 5743064 -1613432 5742904 1613368 5742856 1613416 5743064 1613488 5742960 -1613496 5743096 1613528 5743008 1613488 5742960 1613416 5743064 -1613488 5742960 1613432 5742904 1613416 5743064 1613528 5743008 -1613208 5742808 1612464 5746776 1613416 5743064 1613368 5742856 -1613208 5742808 1613416 5743064 1613368 5742856 1613280 5742808 -1613416 5743064 1612584 5746744 1613496 5743096 1613528 5743008 -1613368 5742856 1613208 5742808 1613416 5743064 1613432 5742904 -1613496 5743096 1613544 5743040 1613528 5743008 1613416 5743064 -1613416 5743064 1613368 5743032 1612464 5746776 1612512 5746760 -1613416 5743064 1613208 5742808 1613368 5743032 1612512 5746760 -1613208 5742808 1613368 5743032 1613416 5743064 1613368 5742856 -1613208 5742808 1612464 5746776 1613368 5743032 1613368 5742856 -1613368 5743032 1612512 5746760 1613416 5743064 1613368 5742856 -1613368 5743032 1613208 5742808 1612464 5746776 1612512 5746760 -1613416 5743064 1613368 5743032 1612512 5746760 1612584 5746744 -1613368 5743032 1612464 5746776 1612512 5746760 1612584 5746744 -1613416 5743064 1613368 5742856 1613368 5743032 1612584 5746744 -1612464 5746776 1613368 5743032 1613208 5742808 1599875 5760125 -1613208 5742808 1613368 5743032 1613368 5742856 1613280 5742808 -1613208 5742808 1612464 5746776 1613368 5743032 1613280 5742808 -1613368 5743032 1613416 5743064 1613368 5742856 1613280 5742808 -1613416 5743064 1613368 5743032 1612584 5746744 1613496 5743096 -1613416 5743064 1613432 5742904 1613368 5742856 1613368 5743032 -1613416 5743064 1613488 5742960 1613432 5742904 1613368 5743032 -1613416 5743064 1613528 5743008 1613488 5742960 1613368 5743032 -1613416 5743064 1613488 5742960 1613368 5743032 1612584 5746744 -1613368 5742856 1613280 5742808 1613368 5743032 1613432 5742904 -1613432 5742904 1613368 5742856 1613368 5743032 1613488 5742960 -1613208 5742808 1613320 5742984 1613368 5743032 1613280 5742808 -1613320 5742984 1612464 5746776 1613368 5743032 1613280 5742808 -1613208 5742808 1612464 5746776 1613320 5742984 1613280 5742808 -1613368 5743032 1613320 5742984 1612464 5746776 1612512 5746760 -1612464 5746776 1613320 5742984 1613208 5742808 1599875 5760125 -1613368 5743032 1613368 5742856 1613280 5742808 1613320 5742984 -1613368 5743032 1613368 5742856 1613320 5742984 1612464 5746776 -1613280 5742808 1613208 5742808 1613320 5742984 1613368 5742856 -1613368 5743032 1613432 5742904 1613368 5742856 1613320 5742984 -1613368 5743032 1613432 5742904 1613320 5742984 1612464 5746776 -1613368 5742856 1613280 5742808 1613320 5742984 1613432 5742904 -1613368 5743032 1613488 5742960 1613432 5742904 1613320 5742984 -1613320 5742984 1613280 5742928 1612464 5746776 1613368 5743032 -1613208 5742808 1613280 5742928 1613320 5742984 1613280 5742808 -1613320 5742984 1613368 5742856 1613280 5742808 1613280 5742928 -1613280 5742928 1612464 5746776 1613320 5742984 1613368 5742856 -1613208 5742808 1612464 5746776 1613280 5742928 1613280 5742808 -1613280 5742808 1613208 5742808 1613280 5742928 1613368 5742856 -1612464 5746776 1613280 5742928 1613208 5742808 1599875 5760125 -1613320 5742984 1613432 5742904 1613368 5742856 1613280 5742928 -1613280 5742928 1613224 5742856 1612464 5746776 1613320 5742984 -1612464 5746776 1613368 5743032 1613320 5742984 1613224 5742856 -1613224 5742856 1613208 5742808 1612464 5746776 1613320 5742984 -1613280 5742928 1613208 5742808 1613224 5742856 1613320 5742984 -1613208 5742808 1613224 5742856 1613280 5742928 1613280 5742808 -1613224 5742856 1613320 5742984 1613280 5742928 1613280 5742808 -1613280 5742928 1613368 5742856 1613280 5742808 1613224 5742856 -1612464 5746776 1613224 5742856 1613208 5742808 1599875 5760125 -1613208 5742808 1612464 5746776 1613224 5742856 1613280 5742808 -1605152 5714888 1616160 5745400 1620152 5752352 1663944 5646256 -1605152 5714888 1616160 5745400 1663944 5646256 1605128 5714784 -1620152 5752352 1620192 5752400 1663944 5646256 1616160 5745400 -1663944 5646256 1605152 5714888 1616160 5745400 1620192 5752400 -1620192 5752400 1743800 5687320 1663944 5646256 1616160 5745400 -1613528 5743008 1616160 5745400 1605152 5714888 1605152 5714944 -1613528 5743008 1616160 5745400 1605152 5714944 1613488 5742960 -1613528 5743008 1620152 5752352 1616160 5745400 1613488 5742960 -1605152 5714944 1613432 5742904 1613488 5742960 1616160 5745400 -1616160 5745400 1605152 5714888 1605152 5714944 1613488 5742960 -1620152 5752352 1616160 5745400 1613528 5743008 1613544 5743040 -1620152 5752352 1616160 5745400 1613544 5743040 1620064 5752296 -1616160 5745400 1613488 5742960 1613528 5743008 1613544 5743040 -1613544 5743040 1613544 5743064 1620064 5752296 1616160 5745400 -1620064 5752296 1620152 5752352 1616160 5745400 1613544 5743064 -1613544 5743064 1613544 5743096 1620064 5752296 1616160 5745400 -1620064 5752296 1620152 5752352 1616160 5745400 1613544 5743096 -1613544 5743096 1620032 5752288 1620064 5752296 1616160 5745400 -1613544 5743096 1613768 5747456 1620032 5752288 1616160 5745400 -1620064 5752296 1620152 5752352 1616160 5745400 1620032 5752288 -1613544 5743096 1613680 5747344 1613768 5747456 1616160 5745400 -1613768 5747456 1620032 5752288 1616160 5745400 1613680 5747344 -1613544 5743096 1613520 5747248 1613680 5747344 1616160 5745400 -1613544 5743096 1612960 5746920 1613520 5747248 1616160 5745400 -1613520 5747248 1613680 5747344 1616160 5745400 1612960 5746920 -1613680 5747344 1613768 5747456 1616160 5745400 1613520 5747248 -1613544 5743096 1612768 5746808 1612960 5746920 1616160 5745400 -1613544 5743096 1612960 5746920 1616160 5745400 1613544 5743064 -1620032 5752288 1620064 5752296 1616160 5745400 1613768 5747456 -1612960 5746920 1613360 5747216 1613520 5747248 1616160 5745400 -1613768 5747456 1613784 5747512 1620032 5752288 1616160 5745400 -1613768 5747456 1613784 5747512 1616160 5745400 1613680 5747344 -1620032 5752288 1620064 5752296 1616160 5745400 1613784 5747512 -1613784 5747512 1619984 5752296 1620032 5752288 1616160 5745400 -1613784 5747512 1619936 5752328 1619984 5752296 1616160 5745400 -1613784 5747512 1613752 5747576 1619936 5752328 1616160 5745400 -1620032 5752288 1620064 5752296 1616160 5745400 1619984 5752296 -1613784 5747512 1619936 5752328 1616160 5745400 1613768 5747456 -1619984 5752296 1620032 5752288 1616160 5745400 1619936 5752328 -1613544 5743064 1613544 5743096 1616160 5745400 1613544 5743040 -1616160 5745400 1613528 5743008 1613544 5743040 1613544 5743064 -1605152 5714888 1605136 5714928 1605152 5714944 1616160 5745400 -1605152 5714888 1605152 5714944 1616160 5745400 1663944 5646256 -1616160 5745400 1620064 5752296 1620152 5752352 1620192 5752400 -1616160 5745400 1616216 5745480 1663944 5646256 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1616216 5745480 -1616160 5745400 1620192 5752400 1616216 5745480 1605152 5714888 -1663944 5646256 1616216 5745480 1620192 5752400 1743800 5687320 -1616216 5745480 1620192 5752400 1663944 5646256 1605152 5714888 -1620192 5752400 1616216 5745480 1616160 5745400 1620152 5752352 -1620192 5752400 1663944 5646256 1616216 5745480 1620152 5752352 -1616216 5745480 1605152 5714888 1616160 5745400 1620152 5752352 -1616160 5745400 1616216 5745480 1605152 5714888 1605152 5714944 -1616160 5745400 1620064 5752296 1620152 5752352 1616216 5745480 -1616160 5745400 1620064 5752296 1616216 5745480 1605152 5714888 -1616160 5745400 1620032 5752288 1620064 5752296 1616216 5745480 -1616160 5745400 1620032 5752288 1616216 5745480 1605152 5714888 -1616160 5745400 1619984 5752296 1620032 5752288 1616216 5745480 -1616160 5745400 1619984 5752296 1616216 5745480 1605152 5714888 -1620032 5752288 1620064 5752296 1616216 5745480 1619984 5752296 -1620064 5752296 1620152 5752352 1616216 5745480 1620032 5752288 -1616160 5745400 1619936 5752328 1619984 5752296 1616216 5745480 -1616160 5745400 1613784 5747512 1619936 5752328 1616216 5745480 -1613784 5747512 1613752 5747576 1619936 5752328 1616216 5745480 -1616160 5745400 1613784 5747512 1616216 5745480 1605152 5714888 -1619984 5752296 1620032 5752288 1616216 5745480 1619936 5752328 -1616160 5745400 1613768 5747456 1613784 5747512 1616216 5745480 -1616160 5745400 1613680 5747344 1613768 5747456 1616216 5745480 -1613784 5747512 1619936 5752328 1616216 5745480 1613768 5747456 -1616160 5745400 1613680 5747344 1616216 5745480 1605152 5714888 -1616160 5745400 1613520 5747248 1613680 5747344 1616216 5745480 -1613768 5747456 1613784 5747512 1616216 5745480 1613680 5747344 -1619936 5752328 1619984 5752296 1616216 5745480 1613784 5747512 -1620152 5752352 1620192 5752400 1616216 5745480 1620064 5752296 -1619936 5752328 1616232 5745520 1613784 5747512 1613752 5747576 -1613784 5747512 1616232 5745520 1616216 5745480 1613768 5747456 -1616232 5745520 1619936 5752328 1616216 5745480 1613768 5747456 -1619936 5752328 1616232 5745520 1613752 5747576 1619904 5752368 -1619936 5752328 1616216 5745480 1616232 5745520 1613752 5747576 -1616232 5745520 1613768 5747456 1613784 5747512 1613752 5747576 -1616216 5745480 1613680 5747344 1613768 5747456 1616232 5745520 -1616216 5745480 1616160 5745400 1613680 5747344 1616232 5745520 -1616216 5745480 1616160 5745400 1616232 5745520 1619936 5752328 -1613768 5747456 1613784 5747512 1616232 5745520 1613680 5747344 -1616160 5745400 1613520 5747248 1613680 5747344 1616232 5745520 -1613680 5747344 1613768 5747456 1616232 5745520 1616160 5745400 -1616216 5745480 1616232 5745520 1619936 5752328 1619984 5752296 -1616216 5745480 1616160 5745400 1616232 5745520 1619984 5752296 -1616232 5745520 1613752 5747576 1619936 5752328 1619984 5752296 -1616216 5745480 1616232 5745520 1619984 5752296 1620032 5752288 -1616216 5745480 1616160 5745400 1616232 5745520 1620032 5752288 -1616216 5745480 1616232 5745520 1620032 5752288 1620064 5752296 -1616216 5745480 1616160 5745400 1616232 5745520 1620064 5752296 -1616232 5745520 1619984 5752296 1620032 5752288 1620064 5752296 -1616216 5745480 1616232 5745520 1620064 5752296 1620152 5752352 -1616216 5745480 1616160 5745400 1616232 5745520 1620152 5752352 -1616232 5745520 1620032 5752288 1620064 5752296 1620152 5752352 -1616232 5745520 1619936 5752328 1619984 5752296 1620032 5752288 -1616216 5745480 1616232 5745520 1620152 5752352 1620192 5752400 -1616216 5745480 1616232 5745520 1620192 5752400 1663944 5646256 -1616216 5745480 1616160 5745400 1616232 5745520 1620192 5752400 -1616232 5745520 1620064 5752296 1620152 5752352 1620192 5752400 -1613752 5747576 1616296 5745864 1616232 5745520 1613784 5747512 -1613752 5747576 1619936 5752328 1616296 5745864 1613784 5747512 -1619936 5752328 1616296 5745864 1613752 5747576 1619904 5752368 -1616232 5745520 1616296 5745864 1619936 5752328 1619984 5752296 -1616296 5745864 1613752 5747576 1619936 5752328 1619984 5752296 -1616296 5745864 1619984 5752296 1616232 5745520 1613784 5747512 -1616232 5745520 1613768 5747456 1613784 5747512 1616296 5745864 -1613784 5747512 1613752 5747576 1616296 5745864 1613768 5747456 -1616232 5745520 1613680 5747344 1613768 5747456 1616296 5745864 -1616232 5745520 1613680 5747344 1616296 5745864 1619984 5752296 -1613768 5747456 1613784 5747512 1616296 5745864 1613680 5747344 -1616232 5745520 1616160 5745400 1613680 5747344 1616296 5745864 -1616232 5745520 1616216 5745480 1616160 5745400 1616296 5745864 -1613680 5747344 1613768 5747456 1616296 5745864 1616160 5745400 -1616232 5745520 1616160 5745400 1616296 5745864 1619984 5752296 -1616160 5745400 1613520 5747248 1613680 5747344 1616296 5745864 -1616232 5745520 1616296 5745864 1619984 5752296 1620032 5752288 -1616296 5745864 1619936 5752328 1619984 5752296 1620032 5752288 -1616232 5745520 1616160 5745400 1616296 5745864 1620032 5752288 -1616232 5745520 1616296 5745864 1620032 5752288 1620064 5752296 -1616232 5745520 1616296 5745864 1620064 5752296 1620152 5752352 -1616232 5745520 1616160 5745400 1616296 5745864 1620152 5752352 -1616296 5745864 1620032 5752288 1620064 5752296 1620152 5752352 -1616232 5745520 1616296 5745864 1620152 5752352 1620192 5752400 -1616296 5745864 1619984 5752296 1620032 5752288 1620064 5752296 -1616296 5745864 1616376 5746120 1619936 5752328 1619984 5752296 -1616296 5745864 1613752 5747576 1616376 5746120 1619984 5752296 -1613752 5747576 1616376 5746120 1616296 5745864 1613784 5747512 -1616296 5745864 1613768 5747456 1613784 5747512 1616376 5746120 -1616376 5746120 1619984 5752296 1616296 5745864 1613768 5747456 -1613784 5747512 1613752 5747576 1616376 5746120 1613768 5747456 -1619936 5752328 1616376 5746120 1613752 5747576 1619904 5752368 -1613752 5747576 1613696 5747632 1619904 5752368 1616376 5746120 -1616296 5745864 1616376 5746120 1619984 5752296 1620032 5752288 -1616376 5746120 1619936 5752328 1619984 5752296 1620032 5752288 -1616296 5745864 1613768 5747456 1616376 5746120 1620032 5752288 -1616296 5745864 1613680 5747344 1613768 5747456 1616376 5746120 -1613768 5747456 1613784 5747512 1616376 5746120 1613680 5747344 -1616296 5745864 1616160 5745400 1613680 5747344 1616376 5746120 -1616296 5745864 1613680 5747344 1616376 5746120 1620032 5752288 -1616376 5746120 1619904 5752368 1619936 5752328 1619984 5752296 -1613752 5747576 1619904 5752368 1616376 5746120 1613784 5747512 -1616296 5745864 1616376 5746120 1620032 5752288 1620064 5752296 -1616296 5745864 1613680 5747344 1616376 5746120 1620064 5752296 -1616376 5746120 1619984 5752296 1620032 5752288 1620064 5752296 -1616296 5745864 1616376 5746120 1620064 5752296 1620152 5752352 -1616296 5745864 1613680 5747344 1616376 5746120 1620152 5752352 -1616296 5745864 1616376 5746120 1620152 5752352 1616232 5745520 -1616296 5745864 1613680 5747344 1616376 5746120 1616232 5745520 -1616376 5746120 1620064 5752296 1620152 5752352 1616232 5745520 -1620152 5752352 1620192 5752400 1616232 5745520 1616376 5746120 -1616376 5746120 1620032 5752288 1620064 5752296 1620152 5752352 -1619904 5752368 1616480 5746336 1613752 5747576 1613696 5747632 -1616376 5746120 1616480 5746336 1619904 5752368 1619936 5752328 -1616376 5746120 1616480 5746336 1619936 5752328 1619984 5752296 -1616376 5746120 1616480 5746336 1619984 5752296 1620032 5752288 -1616480 5746336 1619904 5752368 1619936 5752328 1619984 5752296 -1616376 5746120 1616480 5746336 1620032 5752288 1620064 5752296 -1616480 5746336 1619984 5752296 1620032 5752288 1620064 5752296 -1616480 5746336 1619936 5752328 1619984 5752296 1620032 5752288 -1616376 5746120 1613752 5747576 1616480 5746336 1620064 5752296 -1613752 5747576 1616480 5746336 1616376 5746120 1613784 5747512 -1616376 5746120 1613768 5747456 1613784 5747512 1616480 5746336 -1616376 5746120 1613680 5747344 1613768 5747456 1616480 5746336 -1616480 5746336 1620064 5752296 1616376 5746120 1613768 5747456 -1613784 5747512 1613752 5747576 1616480 5746336 1613768 5747456 -1616376 5746120 1616480 5746336 1620064 5752296 1620152 5752352 -1616480 5746336 1620032 5752288 1620064 5752296 1620152 5752352 -1616376 5746120 1613768 5747456 1616480 5746336 1620152 5752352 -1616376 5746120 1616480 5746336 1620152 5752352 1616232 5745520 -1616376 5746120 1616480 5746336 1616232 5745520 1616296 5745864 -1616376 5746120 1613768 5747456 1616480 5746336 1616296 5745864 -1616480 5746336 1620152 5752352 1616232 5745520 1616296 5745864 -1620152 5752352 1620192 5752400 1616232 5745520 1616480 5746336 -1616480 5746336 1620064 5752296 1620152 5752352 1616232 5745520 -1616480 5746336 1613752 5747576 1619904 5752368 1619936 5752328 -1613752 5747576 1619904 5752368 1616480 5746336 1613784 5747512 -1616480 5746336 1616616 5746536 1616232 5745520 1616296 5745864 -1616616 5746536 1620152 5752352 1616232 5745520 1616296 5745864 -1616480 5746336 1616616 5746536 1616296 5745864 1616376 5746120 -1616616 5746536 1616232 5745520 1616296 5745864 1616376 5746120 -1616232 5745520 1616616 5746536 1620152 5752352 1620192 5752400 -1620152 5752352 1616616 5746536 1616480 5746336 1620064 5752296 -1620152 5752352 1616232 5745520 1616616 5746536 1620064 5752296 -1616480 5746336 1620032 5752288 1620064 5752296 1616616 5746536 -1616480 5746336 1619984 5752296 1620032 5752288 1616616 5746536 -1620032 5752288 1620064 5752296 1616616 5746536 1619984 5752296 -1616480 5746336 1619936 5752328 1619984 5752296 1616616 5746536 -1619984 5752296 1620032 5752288 1616616 5746536 1619936 5752328 -1616480 5746336 1619904 5752368 1619936 5752328 1616616 5746536 -1619936 5752328 1619984 5752296 1616616 5746536 1619904 5752368 -1620064 5752296 1620152 5752352 1616616 5746536 1620032 5752288 -1616480 5746336 1613752 5747576 1619904 5752368 1616616 5746536 -1613752 5747576 1613696 5747632 1619904 5752368 1616616 5746536 -1619904 5752368 1619936 5752328 1616616 5746536 1613696 5747632 -1613696 5747632 1619904 5752400 1619904 5752368 1616616 5746536 -1613752 5747576 1613696 5747632 1616616 5746536 1616480 5746336 -1616480 5746336 1613752 5747576 1616616 5746536 1616376 5746120 -1616480 5746336 1613784 5747512 1613752 5747576 1616616 5746536 -1616480 5746336 1613768 5747456 1613784 5747512 1616616 5746536 -1613752 5747576 1613696 5747632 1616616 5746536 1613784 5747512 -1616480 5746336 1613784 5747512 1616616 5746536 1616376 5746120 -1616616 5746536 1616688 5746584 1616232 5745520 1616296 5745864 -1616616 5746536 1620152 5752352 1616688 5746584 1616296 5745864 -1620152 5752352 1616688 5746584 1616616 5746536 1620064 5752296 -1616688 5746584 1616296 5745864 1616616 5746536 1620064 5752296 -1616688 5746584 1620152 5752352 1616232 5745520 1616296 5745864 -1620152 5752352 1616232 5745520 1616688 5746584 1620064 5752296 -1616616 5746536 1616688 5746584 1616296 5745864 1616376 5746120 -1616688 5746584 1616232 5745520 1616296 5745864 1616376 5746120 -1616616 5746536 1620064 5752296 1616688 5746584 1616376 5746120 -1616616 5746536 1616688 5746584 1616376 5746120 1616480 5746336 -1616616 5746536 1620064 5752296 1616688 5746584 1616480 5746336 -1616688 5746584 1616296 5745864 1616376 5746120 1616480 5746336 -1616232 5745520 1616688 5746584 1620152 5752352 1620192 5752400 -1616232 5745520 1616296 5745864 1616688 5746584 1620192 5752400 -1616688 5746584 1620064 5752296 1620152 5752352 1620192 5752400 -1616616 5746536 1620032 5752288 1620064 5752296 1616688 5746584 -1616616 5746536 1620032 5752288 1616688 5746584 1616480 5746336 -1620064 5752296 1620152 5752352 1616688 5746584 1620032 5752288 -1616616 5746536 1619984 5752296 1620032 5752288 1616688 5746584 -1616616 5746536 1619984 5752296 1616688 5746584 1616480 5746336 -1616616 5746536 1619936 5752328 1619984 5752296 1616688 5746584 -1616616 5746536 1619936 5752328 1616688 5746584 1616480 5746336 -1619984 5752296 1620032 5752288 1616688 5746584 1619936 5752328 -1616616 5746536 1619904 5752368 1619936 5752328 1616688 5746584 -1616616 5746536 1619904 5752368 1616688 5746584 1616480 5746336 -1619936 5752328 1619984 5752296 1616688 5746584 1619904 5752368 -1616616 5746536 1613696 5747632 1619904 5752368 1616688 5746584 -1616616 5746536 1613696 5747632 1616688 5746584 1616480 5746336 -1616616 5746536 1613752 5747576 1613696 5747632 1616688 5746584 -1616616 5746536 1613752 5747576 1616688 5746584 1616480 5746336 -1613696 5747632 1619904 5752368 1616688 5746584 1613752 5747576 -1619904 5752368 1619936 5752328 1616688 5746584 1613696 5747632 -1620032 5752288 1620064 5752296 1616688 5746584 1619984 5752296 -1616232 5745520 1616688 5746584 1620192 5752400 1616216 5745480 -1620192 5752400 1663944 5646256 1616216 5745480 1616688 5746584 -1616232 5745520 1616296 5745864 1616688 5746584 1616216 5745480 -1616688 5746584 1620152 5752352 1620192 5752400 1616216 5745480 -1613696 5747632 1619904 5752400 1619904 5752368 1616688 5746584 -1616616 5746536 1613784 5747512 1613752 5747576 1616688 5746584 -1616616 5746536 1613784 5747512 1616688 5746584 1616480 5746336 -1613752 5747576 1613696 5747632 1616688 5746584 1613784 5747512 -1616616 5746536 1616480 5746336 1613784 5747512 1616688 5746584 -1616216 5745480 1616824 5746568 1620192 5752400 1663944 5646256 -1616216 5745480 1616688 5746584 1616824 5746568 1663944 5646256 -1616824 5746568 1616688 5746584 1620192 5752400 1663944 5646256 -1620192 5752400 1743800 5687320 1663944 5646256 1616824 5746568 -1616216 5745480 1616824 5746568 1663944 5646256 1605152 5714888 -1620192 5752400 1616824 5746568 1616688 5746584 1620152 5752352 -1620192 5752400 1663944 5646256 1616824 5746568 1620152 5752352 -1616824 5746568 1616216 5745480 1616688 5746584 1620152 5752352 -1616688 5746584 1620064 5752296 1620152 5752352 1616824 5746568 -1616688 5746584 1620032 5752288 1620064 5752296 1616824 5746568 -1616688 5746584 1620032 5752288 1616824 5746568 1616216 5745480 -1620064 5752296 1620152 5752352 1616824 5746568 1620032 5752288 -1620152 5752352 1620192 5752400 1616824 5746568 1620064 5752296 -1616688 5746584 1619984 5752296 1620032 5752288 1616824 5746568 -1620032 5752288 1620064 5752296 1616824 5746568 1619984 5752296 -1616688 5746584 1619984 5752296 1616824 5746568 1616216 5745480 -1616688 5746584 1619936 5752328 1619984 5752296 1616824 5746568 -1616688 5746584 1619904 5752368 1619936 5752328 1616824 5746568 -1616688 5746584 1619936 5752328 1616824 5746568 1616216 5745480 -1619984 5752296 1620032 5752288 1616824 5746568 1619936 5752328 -1616688 5746584 1616824 5746568 1616216 5745480 1616232 5745520 -1616824 5746568 1663944 5646256 1616216 5745480 1616232 5745520 -1616688 5746584 1616824 5746568 1616232 5745520 1616296 5745864 -1616688 5746584 1616824 5746568 1616296 5745864 1616376 5746120 -1616824 5746568 1616232 5745520 1616296 5745864 1616376 5746120 -1616688 5746584 1619936 5752328 1616824 5746568 1616376 5746120 -1616688 5746584 1616824 5746568 1616376 5746120 1616480 5746336 -1616824 5746568 1616296 5745864 1616376 5746120 1616480 5746336 -1616688 5746584 1619936 5752328 1616824 5746568 1616480 5746336 -1616688 5746584 1616824 5746568 1616480 5746336 1616616 5746536 -1616688 5746584 1619936 5752328 1616824 5746568 1616616 5746536 -1616824 5746568 1616376 5746120 1616480 5746336 1616616 5746536 -1616824 5746568 1616216 5745480 1616232 5745520 1616296 5745864 -1616824 5746568 1616952 5746624 1663944 5646256 1616216 5745480 -1616824 5746568 1616952 5746624 1616216 5745480 1616232 5745520 -1616952 5746624 1663944 5646256 1616216 5745480 1616232 5745520 -1616824 5746568 1620192 5752400 1616952 5746624 1616232 5745520 -1620192 5752400 1616952 5746624 1616824 5746568 1620152 5752352 -1616952 5746624 1616232 5745520 1616824 5746568 1620152 5752352 -1663944 5646256 1616952 5746624 1620192 5752400 1743800 5687320 -1663944 5646256 1616952 5746624 1743800 5687320 1664040 5646192 -1663944 5646256 1605152 5714888 1616216 5745480 1616952 5746624 -1616824 5746568 1620064 5752296 1620152 5752352 1616952 5746624 -1616824 5746568 1620064 5752296 1616952 5746624 1616232 5745520 -1620152 5752352 1620192 5752400 1616952 5746624 1620064 5752296 -1616824 5746568 1620032 5752288 1620064 5752296 1616952 5746624 -1616824 5746568 1619984 5752296 1620032 5752288 1616952 5746624 -1616824 5746568 1619984 5752296 1616952 5746624 1616232 5745520 -1620032 5752288 1620064 5752296 1616952 5746624 1619984 5752296 -1620064 5752296 1620152 5752352 1616952 5746624 1620032 5752288 -1620192 5752400 1743888 5687504 1743800 5687320 1616952 5746624 -1616824 5746568 1619936 5752328 1619984 5752296 1616952 5746624 -1619984 5752296 1620032 5752288 1616952 5746624 1619936 5752328 -1616824 5746568 1619936 5752328 1616952 5746624 1616232 5745520 -1616824 5746568 1616688 5746584 1619936 5752328 1616952 5746624 -1616688 5746584 1619904 5752368 1619936 5752328 1616952 5746624 -1616824 5746568 1616688 5746584 1616952 5746624 1616232 5745520 -1616688 5746584 1619904 5752368 1616952 5746624 1616824 5746568 -1616688 5746584 1613696 5747632 1619904 5752368 1616952 5746624 -1619904 5752368 1619936 5752328 1616952 5746624 1613696 5747632 -1616688 5746584 1613752 5747576 1613696 5747632 1616952 5746624 -1616688 5746584 1613696 5747632 1616952 5746624 1616824 5746568 -1619936 5752328 1619984 5752296 1616952 5746624 1619904 5752368 -1620192 5752400 1743800 5687320 1616952 5746624 1620152 5752352 -1616952 5746624 1743800 5687320 1663944 5646256 1616216 5745480 -1616824 5746568 1616952 5746624 1616232 5745520 1616296 5745864 -1616952 5746624 1616216 5745480 1616232 5745520 1616296 5745864 -1616824 5746568 1616688 5746584 1616952 5746624 1616296 5745864 -1616824 5746568 1616952 5746624 1616296 5745864 1616376 5746120 -1613696 5747632 1619904 5752400 1619904 5752368 1616952 5746624 -1616952 5746624 1617184 5746832 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1617184 5746832 -1743800 5687320 1617184 5746832 1620192 5752400 1743888 5687504 -1616952 5746624 1620192 5752400 1617184 5746832 1663944 5646256 -1620192 5752400 1617184 5746832 1616952 5746624 1620152 5752352 -1616952 5746624 1620064 5752296 1620152 5752352 1617184 5746832 -1620192 5752400 1743800 5687320 1617184 5746832 1620152 5752352 -1616952 5746624 1620032 5752288 1620064 5752296 1617184 5746832 -1620064 5752296 1620152 5752352 1617184 5746832 1620032 5752288 -1616952 5746624 1619984 5752296 1620032 5752288 1617184 5746832 -1616952 5746624 1619936 5752328 1619984 5752296 1617184 5746832 -1619984 5752296 1620032 5752288 1617184 5746832 1619936 5752328 -1620032 5752288 1620064 5752296 1617184 5746832 1619984 5752296 -1616952 5746624 1619904 5752368 1619936 5752328 1617184 5746832 -1619936 5752328 1619984 5752296 1617184 5746832 1619904 5752368 -1616952 5746624 1613696 5747632 1619904 5752368 1617184 5746832 -1616952 5746624 1616688 5746584 1613696 5747632 1617184 5746832 -1613696 5747632 1619904 5752368 1617184 5746832 1616688 5746584 -1616688 5746584 1613752 5747576 1613696 5747632 1617184 5746832 -1616688 5746584 1613784 5747512 1613752 5747576 1617184 5746832 -1613696 5747632 1619904 5752368 1617184 5746832 1613752 5747576 -1616952 5746624 1616824 5746568 1616688 5746584 1617184 5746832 -1616688 5746584 1613752 5747576 1617184 5746832 1616952 5746624 -1619904 5752368 1619936 5752328 1617184 5746832 1613696 5747632 -1617184 5746832 1663944 5646256 1616952 5746624 1616688 5746584 -1620152 5752352 1620192 5752400 1617184 5746832 1620064 5752296 -1617184 5746832 1620192 5752400 1743800 5687320 1663944 5646256 -1616952 5746624 1617184 5746832 1663944 5646256 1616216 5745480 -1616952 5746624 1617184 5746832 1616216 5745480 1616232 5745520 -1616952 5746624 1617184 5746832 1616232 5745520 1616296 5745864 -1617184 5746832 1743800 5687320 1663944 5646256 1616216 5745480 -1663944 5646256 1605152 5714888 1616216 5745480 1617184 5746832 -1605152 5714888 1616160 5745400 1616216 5745480 1617184 5746832 -1663944 5646256 1605128 5714784 1605152 5714888 1617184 5746832 -1663944 5646256 1605152 5714888 1617184 5746832 1743800 5687320 -1616952 5746624 1616688 5746584 1617184 5746832 1616232 5745520 -1617184 5746832 1605152 5714888 1616216 5745480 1616232 5745520 -1613696 5747632 1619904 5752400 1619904 5752368 1617184 5746832 -1620192 5752400 1617256 5746856 1617184 5746832 1620152 5752352 -1620192 5752400 1743800 5687320 1617256 5746856 1620152 5752352 -1617256 5746856 1743800 5687320 1617184 5746832 1620152 5752352 -1743800 5687320 1617256 5746856 1620192 5752400 1743888 5687504 -1617184 5746832 1620064 5752296 1620152 5752352 1617256 5746856 -1617184 5746832 1620032 5752288 1620064 5752296 1617256 5746856 -1617184 5746832 1620032 5752288 1617256 5746856 1743800 5687320 -1620152 5752352 1620192 5752400 1617256 5746856 1620064 5752296 -1617184 5746832 1619984 5752296 1620032 5752288 1617256 5746856 -1620032 5752288 1620064 5752296 1617256 5746856 1619984 5752296 -1617184 5746832 1619936 5752328 1619984 5752296 1617256 5746856 -1617184 5746832 1619904 5752368 1619936 5752328 1617256 5746856 -1619936 5752328 1619984 5752296 1617256 5746856 1619904 5752368 -1617184 5746832 1619904 5752368 1617256 5746856 1743800 5687320 -1619984 5752296 1620032 5752288 1617256 5746856 1619936 5752328 -1617184 5746832 1613696 5747632 1619904 5752368 1617256 5746856 -1619904 5752368 1619936 5752328 1617256 5746856 1613696 5747632 -1617184 5746832 1613752 5747576 1613696 5747632 1617256 5746856 -1617184 5746832 1613696 5747632 1617256 5746856 1743800 5687320 -1620064 5752296 1620152 5752352 1617256 5746856 1620032 5752288 -1617184 5746832 1617256 5746856 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1617256 5746856 -1617256 5746856 1620192 5752400 1743800 5687320 1663944 5646256 -1617184 5746832 1613696 5747632 1617256 5746856 1663944 5646256 -1617184 5746832 1617256 5746856 1663944 5646256 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1617256 5746856 -1617184 5746832 1613696 5747632 1617256 5746856 1605152 5714888 -1617184 5746832 1617256 5746856 1605152 5714888 1616216 5745480 -1605152 5714888 1616160 5745400 1616216 5745480 1617256 5746856 -1617184 5746832 1613696 5747632 1617256 5746856 1616216 5745480 -1617256 5746856 1663944 5646256 1605152 5714888 1616160 5745400 -1616216 5745480 1617184 5746832 1617256 5746856 1616160 5745400 -1617256 5746856 1743800 5687320 1663944 5646256 1605152 5714888 -1617184 5746832 1617256 5746856 1616216 5745480 1616232 5745520 -1617184 5746832 1617256 5746856 1616232 5745520 1616952 5746624 -1616232 5745520 1616296 5745864 1616952 5746624 1617256 5746856 -1617184 5746832 1613696 5747632 1617256 5746856 1616952 5746624 -1617256 5746856 1616160 5745400 1616216 5745480 1616232 5745520 -1617256 5746856 1616216 5745480 1616232 5745520 1616952 5746624 -1613696 5747632 1619904 5752400 1619904 5752368 1617256 5746856 -1605152 5714888 1605152 5714944 1616160 5745400 1617256 5746856 -1617256 5746856 1617512 5746992 1743800 5687320 1663944 5646256 -1617512 5746992 1620192 5752400 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1617512 5746992 -1617256 5746856 1620192 5752400 1617512 5746992 1663944 5646256 -1620192 5752400 1617512 5746992 1617256 5746856 1620152 5752352 -1620192 5752400 1743800 5687320 1617512 5746992 1620152 5752352 -1617512 5746992 1663944 5646256 1617256 5746856 1620152 5752352 -1617256 5746856 1620064 5752296 1620152 5752352 1617512 5746992 -1617256 5746856 1620064 5752296 1617512 5746992 1663944 5646256 -1620152 5752352 1620192 5752400 1617512 5746992 1620064 5752296 -1743800 5687320 1617512 5746992 1620192 5752400 1743888 5687504 -1743800 5687320 1663944 5646256 1617512 5746992 1743888 5687504 -1617512 5746992 1620152 5752352 1620192 5752400 1743888 5687504 -1620192 5752400 1620224 5752472 1743888 5687504 1617512 5746992 -1617256 5746856 1620032 5752288 1620064 5752296 1617512 5746992 -1617256 5746856 1619984 5752296 1620032 5752288 1617512 5746992 -1617256 5746856 1619984 5752296 1617512 5746992 1663944 5646256 -1620064 5752296 1620152 5752352 1617512 5746992 1620032 5752288 -1617256 5746856 1619936 5752328 1619984 5752296 1617512 5746992 -1619984 5752296 1620032 5752288 1617512 5746992 1619936 5752328 -1617256 5746856 1619904 5752368 1619936 5752328 1617512 5746992 -1617256 5746856 1613696 5747632 1619904 5752368 1617512 5746992 -1619904 5752368 1619936 5752328 1617512 5746992 1613696 5747632 -1617256 5746856 1613696 5747632 1617512 5746992 1663944 5646256 -1619936 5752328 1619984 5752296 1617512 5746992 1619904 5752368 -1617256 5746856 1617184 5746832 1613696 5747632 1617512 5746992 -1613696 5747632 1619904 5752368 1617512 5746992 1617184 5746832 -1617184 5746832 1613752 5747576 1613696 5747632 1617512 5746992 -1613696 5747632 1619904 5752368 1617512 5746992 1613752 5747576 -1617184 5746832 1616688 5746584 1613752 5747576 1617512 5746992 -1617256 5746856 1617184 5746832 1617512 5746992 1663944 5646256 -1617184 5746832 1613752 5747576 1617512 5746992 1617256 5746856 -1620032 5752288 1620064 5752296 1617512 5746992 1619984 5752296 -1617256 5746856 1617512 5746992 1663944 5646256 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1617512 5746992 -1617512 5746992 1743800 5687320 1663944 5646256 1605152 5714888 -1617256 5746856 1617184 5746832 1617512 5746992 1605152 5714888 -1617256 5746856 1617512 5746992 1605152 5714888 1616160 5745400 -1617256 5746856 1617512 5746992 1616160 5745400 1616216 5745480 -1617256 5746856 1617184 5746832 1617512 5746992 1616216 5745480 -1617512 5746992 1605152 5714888 1616160 5745400 1616216 5745480 -1617256 5746856 1617512 5746992 1616216 5745480 1616232 5745520 -1617512 5746992 1616160 5745400 1616216 5745480 1616232 5745520 -1617256 5746856 1617184 5746832 1617512 5746992 1616232 5745520 -1617512 5746992 1663944 5646256 1605152 5714888 1616160 5745400 -1617256 5746856 1617512 5746992 1616232 5745520 1616952 5746624 -1617256 5746856 1617512 5746992 1616952 5746624 1617184 5746832 -1616232 5745520 1616296 5745864 1616952 5746624 1617512 5746992 -1617256 5746856 1617184 5746832 1617512 5746992 1616952 5746624 -1617512 5746992 1616216 5745480 1616232 5745520 1616952 5746624 -1613696 5747632 1619904 5752400 1619904 5752368 1617512 5746992 -1605152 5714888 1605152 5714944 1616160 5745400 1617512 5746992 -1620192 5752400 1617608 5747096 1617512 5746992 1620152 5752352 -1617608 5747096 1743888 5687504 1617512 5746992 1620152 5752352 -1617512 5746992 1620064 5752296 1620152 5752352 1617608 5747096 -1617512 5746992 1620064 5752296 1617608 5747096 1743888 5687504 -1620152 5752352 1620192 5752400 1617608 5747096 1620064 5752296 -1617512 5746992 1620032 5752288 1620064 5752296 1617608 5747096 -1617512 5746992 1620032 5752288 1617608 5747096 1743888 5687504 -1620064 5752296 1620152 5752352 1617608 5747096 1620032 5752288 -1620192 5752400 1743888 5687504 1617608 5747096 1620152 5752352 -1617512 5746992 1617608 5747096 1743888 5687504 1743800 5687320 -1617512 5746992 1617608 5747096 1743800 5687320 1663944 5646256 -1617512 5746992 1620032 5752288 1617608 5747096 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1617608 5747096 -1617512 5746992 1617608 5747096 1663944 5646256 1605152 5714888 -1663944 5646256 1605128 5714784 1605152 5714888 1617608 5747096 -1617608 5747096 1743800 5687320 1663944 5646256 1605152 5714888 -1617512 5746992 1620032 5752288 1617608 5747096 1605152 5714888 -1617608 5747096 1620192 5752400 1743888 5687504 1743800 5687320 -1617608 5747096 1743888 5687504 1743800 5687320 1663944 5646256 -1743888 5687504 1617608 5747096 1620192 5752400 1620224 5752472 -1617512 5746992 1619984 5752296 1620032 5752288 1617608 5747096 -1617512 5746992 1619984 5752296 1617608 5747096 1605152 5714888 -1617512 5746992 1619936 5752328 1619984 5752296 1617608 5747096 -1617512 5746992 1619936 5752328 1617608 5747096 1605152 5714888 -1620032 5752288 1620064 5752296 1617608 5747096 1619984 5752296 -1617512 5746992 1619904 5752368 1619936 5752328 1617608 5747096 -1617512 5746992 1619904 5752368 1617608 5747096 1605152 5714888 -1619936 5752328 1619984 5752296 1617608 5747096 1619904 5752368 -1617512 5746992 1613696 5747632 1619904 5752368 1617608 5747096 -1617512 5746992 1613752 5747576 1613696 5747632 1617608 5747096 -1617512 5746992 1617184 5746832 1613752 5747576 1617608 5747096 -1613752 5747576 1613696 5747632 1617608 5747096 1617184 5746832 -1617512 5746992 1617184 5746832 1617608 5747096 1605152 5714888 -1617184 5746832 1616688 5746584 1613752 5747576 1617608 5747096 -1613696 5747632 1619904 5752368 1617608 5747096 1613752 5747576 -1619904 5752368 1619936 5752328 1617608 5747096 1613696 5747632 -1617512 5746992 1617256 5746856 1617184 5746832 1617608 5747096 -1617184 5746832 1613752 5747576 1617608 5747096 1617256 5746856 -1617512 5746992 1617256 5746856 1617608 5747096 1605152 5714888 -1619984 5752296 1620032 5752288 1617608 5747096 1619936 5752328 -1617512 5746992 1617608 5747096 1605152 5714888 1616160 5745400 -1617512 5746992 1617256 5746856 1617608 5747096 1616160 5745400 -1617608 5747096 1663944 5646256 1605152 5714888 1616160 5745400 -1617512 5746992 1617608 5747096 1616160 5745400 1616216 5745480 -1613696 5747632 1619904 5752400 1619904 5752368 1617608 5747096 -1605152 5714888 1605152 5714944 1616160 5745400 1617608 5747096 -1620192 5752400 1617712 5747256 1617608 5747096 1620152 5752352 -1620192 5752400 1743888 5687504 1617712 5747256 1620152 5752352 -1617608 5747096 1620064 5752296 1620152 5752352 1617712 5747256 -1617608 5747096 1620032 5752288 1620064 5752296 1617712 5747256 -1620064 5752296 1620152 5752352 1617712 5747256 1620032 5752288 -1617608 5747096 1619984 5752296 1620032 5752288 1617712 5747256 -1620032 5752288 1620064 5752296 1617712 5747256 1619984 5752296 -1617712 5747256 1743888 5687504 1617608 5747096 1619984 5752296 -1620152 5752352 1620192 5752400 1617712 5747256 1620064 5752296 -1617608 5747096 1617712 5747256 1743888 5687504 1743800 5687320 -1617608 5747096 1619984 5752296 1617712 5747256 1743800 5687320 -1617712 5747256 1620192 5752400 1743888 5687504 1743800 5687320 -1617608 5747096 1617712 5747256 1743800 5687320 1663944 5646256 -1617608 5747096 1617712 5747256 1663944 5646256 1605152 5714888 -1743800 5687320 1664040 5646192 1663944 5646256 1617712 5747256 -1617712 5747256 1743888 5687504 1743800 5687320 1663944 5646256 -1617608 5747096 1619984 5752296 1617712 5747256 1663944 5646256 -1743888 5687504 1617712 5747256 1620192 5752400 1620224 5752472 -1617608 5747096 1619936 5752328 1619984 5752296 1617712 5747256 -1617608 5747096 1619904 5752368 1619936 5752328 1617712 5747256 -1619984 5752296 1620032 5752288 1617712 5747256 1619936 5752328 -1617608 5747096 1619904 5752368 1617712 5747256 1663944 5646256 -1617608 5747096 1613696 5747632 1619904 5752368 1617712 5747256 -1619904 5752368 1619936 5752328 1617712 5747256 1613696 5747632 -1617608 5747096 1613752 5747576 1613696 5747632 1617712 5747256 -1617608 5747096 1617184 5746832 1613752 5747576 1617712 5747256 -1617608 5747096 1617256 5746856 1617184 5746832 1617712 5747256 -1617184 5746832 1613752 5747576 1617712 5747256 1617256 5746856 -1617184 5746832 1616688 5746584 1613752 5747576 1617712 5747256 -1613752 5747576 1613696 5747632 1617712 5747256 1617184 5746832 -1617608 5747096 1617256 5746856 1617712 5747256 1663944 5646256 -1613696 5747632 1619904 5752368 1617712 5747256 1613752 5747576 -1617608 5747096 1617512 5746992 1617256 5746856 1617712 5747256 -1619936 5752328 1619984 5752296 1617712 5747256 1619904 5752368 -1613696 5747632 1619904 5752400 1619904 5752368 1617712 5747256 -1617712 5747256 1619984 5752296 1620032 5752288 1617768 5747376 -1617712 5747256 1619984 5752296 1617768 5747376 1620152 5752352 -1620032 5752288 1620064 5752296 1617768 5747376 1619984 5752296 -1617712 5747256 1619936 5752328 1619984 5752296 1617768 5747376 -1617712 5747256 1619936 5752328 1617768 5747376 1620152 5752352 -1619984 5752296 1620032 5752288 1617768 5747376 1619936 5752328 -1617712 5747256 1617768 5747376 1620152 5752352 1620192 5752400 -1617712 5747256 1617768 5747376 1620192 5752400 1743888 5687504 -1617712 5747256 1619936 5752328 1617768 5747376 1743888 5687504 -1617768 5747376 1620064 5752296 1620152 5752352 1620192 5752400 -1617768 5747376 1620152 5752352 1620192 5752400 1743888 5687504 -1617712 5747256 1617768 5747376 1743888 5687504 1743800 5687320 -1620192 5752400 1620224 5752472 1743888 5687504 1617768 5747376 -1617712 5747256 1619904 5752368 1619936 5752328 1617768 5747376 -1617712 5747256 1619904 5752368 1617768 5747376 1743888 5687504 -1617712 5747256 1613696 5747632 1619904 5752368 1617768 5747376 -1617712 5747256 1613696 5747632 1617768 5747376 1743888 5687504 -1619936 5752328 1619984 5752296 1617768 5747376 1619904 5752368 -1617712 5747256 1613752 5747576 1613696 5747632 1617768 5747376 -1617712 5747256 1613752 5747576 1617768 5747376 1743888 5687504 -1613696 5747632 1619904 5752368 1617768 5747376 1613752 5747576 -1617712 5747256 1617184 5746832 1613752 5747576 1617768 5747376 -1617712 5747256 1617256 5746856 1617184 5746832 1617768 5747376 -1617712 5747256 1617184 5746832 1617768 5747376 1743888 5687504 -1617184 5746832 1616688 5746584 1613752 5747576 1617768 5747376 -1616688 5746584 1613784 5747512 1613752 5747576 1617768 5747376 -1617184 5746832 1616688 5746584 1617768 5747376 1617712 5747256 -1617184 5746832 1616952 5746624 1616688 5746584 1617768 5747376 -1613752 5747576 1613696 5747632 1617768 5747376 1616688 5746584 -1619904 5752368 1619936 5752328 1617768 5747376 1613696 5747632 -1613696 5747632 1619904 5752400 1619904 5752368 1617768 5747376 -1613696 5747632 1617848 5747624 1617768 5747376 1613752 5747576 -1613696 5747632 1619904 5752368 1617848 5747624 1613752 5747576 -1617848 5747624 1619904 5752368 1617768 5747376 1613752 5747576 -1617768 5747376 1616688 5746584 1613752 5747576 1617848 5747624 -1617768 5747376 1616688 5746584 1617848 5747624 1619904 5752368 -1616688 5746584 1613784 5747512 1613752 5747576 1617848 5747624 -1617768 5747376 1617184 5746832 1616688 5746584 1617848 5747624 -1617768 5747376 1617184 5746832 1617848 5747624 1619904 5752368 -1613752 5747576 1613696 5747632 1617848 5747624 1616688 5746584 -1617768 5747376 1617712 5747256 1617184 5746832 1617848 5747624 -1617184 5746832 1616952 5746624 1616688 5746584 1617848 5747624 -1616688 5746584 1613752 5747576 1617848 5747624 1617184 5746832 -1617768 5747376 1617848 5747624 1619904 5752368 1619936 5752328 -1617768 5747376 1617184 5746832 1617848 5747624 1619936 5752328 -1617848 5747624 1613696 5747632 1619904 5752368 1619936 5752328 -1617768 5747376 1617848 5747624 1619936 5752328 1619984 5752296 -1617768 5747376 1617184 5746832 1617848 5747624 1619984 5752296 -1617768 5747376 1617848 5747624 1619984 5752296 1620032 5752288 -1617768 5747376 1617184 5746832 1617848 5747624 1620032 5752288 -1617768 5747376 1617848 5747624 1620032 5752288 1620064 5752296 -1617768 5747376 1617184 5746832 1617848 5747624 1620064 5752296 -1617768 5747376 1617848 5747624 1620064 5752296 1620152 5752352 -1617768 5747376 1617184 5746832 1617848 5747624 1620152 5752352 -1617848 5747624 1620032 5752288 1620064 5752296 1620152 5752352 -1617768 5747376 1617848 5747624 1620152 5752352 1620192 5752400 -1617848 5747624 1620064 5752296 1620152 5752352 1620192 5752400 -1617768 5747376 1617184 5746832 1617848 5747624 1620192 5752400 -1617848 5747624 1619984 5752296 1620032 5752288 1620064 5752296 -1617848 5747624 1619936 5752328 1619984 5752296 1620032 5752288 -1617768 5747376 1617848 5747624 1620192 5752400 1743888 5687504 -1617848 5747624 1619904 5752368 1619936 5752328 1619984 5752296 -1619904 5752368 1617848 5747624 1613696 5747632 1619904 5752400 -1613696 5747632 1617904 5747904 1617848 5747624 1613752 5747576 -1617904 5747904 1619904 5752368 1617848 5747624 1613752 5747576 -1617848 5747624 1617904 5747904 1619904 5752368 1619936 5752328 -1617848 5747624 1613752 5747576 1617904 5747904 1619936 5752328 -1617904 5747904 1613696 5747632 1619904 5752368 1619936 5752328 -1613696 5747632 1619904 5752368 1617904 5747904 1613752 5747576 -1617848 5747624 1616688 5746584 1613752 5747576 1617904 5747904 -1613752 5747576 1613696 5747632 1617904 5747904 1616688 5746584 -1617848 5747624 1616688 5746584 1617904 5747904 1619936 5752328 -1616688 5746584 1613784 5747512 1613752 5747576 1617904 5747904 -1617848 5747624 1617184 5746832 1616688 5746584 1617904 5747904 -1617848 5747624 1617184 5746832 1617904 5747904 1619936 5752328 -1617848 5747624 1617768 5747376 1617184 5746832 1617904 5747904 -1616688 5746584 1613752 5747576 1617904 5747904 1617184 5746832 -1617184 5746832 1616952 5746624 1616688 5746584 1617904 5747904 -1617848 5747624 1617904 5747904 1619936 5752328 1619984 5752296 -1617848 5747624 1617184 5746832 1617904 5747904 1619984 5752296 -1617904 5747904 1619904 5752368 1619936 5752328 1619984 5752296 -1617848 5747624 1617904 5747904 1619984 5752296 1620032 5752288 -1617848 5747624 1617184 5746832 1617904 5747904 1620032 5752288 -1617848 5747624 1617904 5747904 1620032 5752288 1620064 5752296 -1617848 5747624 1617184 5746832 1617904 5747904 1620064 5752296 -1617848 5747624 1617904 5747904 1620064 5752296 1620152 5752352 -1617848 5747624 1617904 5747904 1620152 5752352 1620192 5752400 -1617848 5747624 1617184 5746832 1617904 5747904 1620152 5752352 -1617904 5747904 1620032 5752288 1620064 5752296 1620152 5752352 -1617904 5747904 1619984 5752296 1620032 5752288 1620064 5752296 -1617904 5747904 1619936 5752328 1619984 5752296 1620032 5752288 -1619904 5752368 1617904 5747904 1613696 5747632 1619904 5752400 -1617904 5747904 1617896 5748024 1619904 5752368 1619936 5752328 -1617904 5747904 1617896 5748024 1619936 5752328 1619984 5752296 -1617896 5748024 1619904 5752368 1619936 5752328 1619984 5752296 -1617904 5747904 1613696 5747632 1617896 5748024 1619984 5752296 -1613696 5747632 1617896 5748024 1617904 5747904 1613752 5747576 -1617904 5747904 1616688 5746584 1613752 5747576 1617896 5748024 -1616688 5746584 1613784 5747512 1613752 5747576 1617896 5748024 -1617896 5748024 1619984 5752296 1617904 5747904 1616688 5746584 -1613752 5747576 1613696 5747632 1617896 5748024 1616688 5746584 -1617896 5748024 1613696 5747632 1619904 5752368 1619936 5752328 -1613696 5747632 1619904 5752368 1617896 5748024 1613752 5747576 -1617904 5747904 1617184 5746832 1616688 5746584 1617896 5748024 -1616688 5746584 1613752 5747576 1617896 5748024 1617184 5746832 -1617904 5747904 1617184 5746832 1617896 5748024 1619984 5752296 -1617184 5746832 1616952 5746624 1616688 5746584 1617896 5748024 -1617904 5747904 1617848 5747624 1617184 5746832 1617896 5748024 -1617904 5747904 1617848 5747624 1617896 5748024 1619984 5752296 -1617848 5747624 1617768 5747376 1617184 5746832 1617896 5748024 -1617184 5746832 1616688 5746584 1617896 5748024 1617848 5747624 -1617904 5747904 1617896 5748024 1619984 5752296 1620032 5752288 -1617896 5748024 1619936 5752328 1619984 5752296 1620032 5752288 -1617904 5747904 1617848 5747624 1617896 5748024 1620032 5752288 -1617904 5747904 1617896 5748024 1620032 5752288 1620064 5752296 -1617904 5747904 1617848 5747624 1617896 5748024 1620064 5752296 -1617904 5747904 1617896 5748024 1620064 5752296 1620152 5752352 -1617896 5748024 1619984 5752296 1620032 5752288 1620064 5752296 -1619904 5752368 1617896 5748024 1613696 5747632 1619904 5752400 -1617896 5748024 1617848 5748112 1619904 5752368 1619936 5752328 -1617896 5748024 1617848 5748112 1619936 5752328 1619984 5752296 -1617896 5748024 1617848 5748112 1619984 5752296 1620032 5752288 -1617848 5748112 1619936 5752328 1619984 5752296 1620032 5752288 -1617848 5748112 1619904 5752368 1619936 5752328 1619984 5752296 -1617896 5748024 1613696 5747632 1617848 5748112 1620032 5752288 -1613696 5747632 1617848 5748112 1617896 5748024 1613752 5747576 -1617896 5748024 1616688 5746584 1613752 5747576 1617848 5748112 -1617896 5748024 1617184 5746832 1616688 5746584 1617848 5748112 -1616688 5746584 1613784 5747512 1613752 5747576 1617848 5748112 -1616688 5746584 1613752 5747576 1617848 5748112 1617184 5746832 -1617848 5748112 1620032 5752288 1617896 5748024 1617184 5746832 -1613752 5747576 1613696 5747632 1617848 5748112 1616688 5746584 -1617896 5748024 1617848 5747624 1617184 5746832 1617848 5748112 -1617184 5746832 1616688 5746584 1617848 5748112 1617848 5747624 -1617896 5748024 1617848 5747624 1617848 5748112 1620032 5752288 -1617848 5747624 1617768 5747376 1617184 5746832 1617848 5748112 -1617184 5746832 1616952 5746624 1616688 5746584 1617848 5748112 -1617896 5748024 1617904 5747904 1617848 5747624 1617848 5748112 -1617896 5748024 1617904 5747904 1617848 5748112 1620032 5752288 -1617848 5747624 1617184 5746832 1617848 5748112 1617904 5747904 -1617896 5748024 1617848 5748112 1620032 5752288 1620064 5752296 -1617848 5748112 1613696 5747632 1619904 5752368 1619936 5752328 -1613696 5747632 1619904 5752368 1617848 5748112 1613752 5747576 -1619904 5752368 1617848 5748112 1613696 5747632 1619904 5752400 -1617848 5748112 1617816 5748136 1619904 5752368 1619936 5752328 -1617848 5748112 1617816 5748136 1619936 5752328 1619984 5752296 -1617848 5748112 1617816 5748136 1619984 5752296 1620032 5752288 -1617816 5748136 1619904 5752368 1619936 5752328 1619984 5752296 -1617848 5748112 1613696 5747632 1617816 5748136 1619984 5752296 -1613696 5747632 1617816 5748136 1617848 5748112 1613752 5747576 -1613696 5747632 1619904 5752368 1617816 5748136 1613752 5747576 -1617848 5748112 1616688 5746584 1613752 5747576 1617816 5748136 -1616688 5746584 1613784 5747512 1613752 5747576 1617816 5748136 -1617848 5748112 1617184 5746832 1616688 5746584 1617816 5748136 -1617848 5748112 1617848 5747624 1617184 5746832 1617816 5748136 -1617184 5746832 1616688 5746584 1617816 5748136 1617848 5747624 -1616688 5746584 1613784 5747512 1617816 5748136 1617184 5746832 -1617848 5747624 1617768 5747376 1617184 5746832 1617816 5748136 -1617848 5747624 1617768 5747376 1617816 5748136 1617848 5748112 -1617184 5746832 1616688 5746584 1617816 5748136 1617768 5747376 -1617848 5748112 1617904 5747904 1617848 5747624 1617816 5748136 -1617848 5747624 1617768 5747376 1617816 5748136 1617904 5747904 -1617768 5747376 1617712 5747256 1617184 5746832 1617816 5748136 -1617184 5746832 1616952 5746624 1616688 5746584 1617816 5748136 -1617848 5748112 1617896 5748024 1617904 5747904 1617816 5748136 -1617904 5747904 1617848 5747624 1617816 5748136 1617896 5748024 -1617816 5748136 1619984 5752296 1617848 5748112 1617896 5748024 -1613752 5747576 1613696 5747632 1617816 5748136 1613784 5747512 -1617816 5748136 1613696 5747632 1619904 5752368 1619936 5752328 -1619904 5752368 1617816 5748136 1613696 5747632 1619904 5752400 -1616688 5746584 1616616 5746536 1613784 5747512 1617816 5748136 -1613696 5747632 1617744 5748128 1617816 5748136 1613752 5747576 -1613696 5747632 1619904 5752368 1617744 5748128 1613752 5747576 -1617816 5748136 1613784 5747512 1613752 5747576 1617744 5748128 -1613752 5747576 1613696 5747632 1617744 5748128 1613784 5747512 -1617816 5748136 1616688 5746584 1613784 5747512 1617744 5748128 -1617816 5748136 1617184 5746832 1616688 5746584 1617744 5748128 -1616688 5746584 1613784 5747512 1617744 5748128 1617184 5746832 -1617816 5748136 1617768 5747376 1617184 5746832 1617744 5748128 -1617184 5746832 1616688 5746584 1617744 5748128 1617768 5747376 -1617816 5748136 1617848 5747624 1617768 5747376 1617744 5748128 -1617816 5748136 1617904 5747904 1617848 5747624 1617744 5748128 -1617768 5747376 1617184 5746832 1617744 5748128 1617848 5747624 -1617848 5747624 1617768 5747376 1617744 5748128 1617904 5747904 -1617816 5748136 1617896 5748024 1617904 5747904 1617744 5748128 -1617904 5747904 1617848 5747624 1617744 5748128 1617896 5748024 -1617768 5747376 1617712 5747256 1617184 5746832 1617744 5748128 -1617184 5746832 1616952 5746624 1616688 5746584 1617744 5748128 -1617816 5748136 1617848 5748112 1617896 5748024 1617744 5748128 -1617896 5748024 1617904 5747904 1617744 5748128 1617848 5748112 -1613784 5747512 1613752 5747576 1617744 5748128 1616688 5746584 -1617816 5748136 1617744 5748128 1619904 5752368 1619936 5752328 -1617744 5748128 1619904 5752368 1617816 5748136 1617848 5748112 -1619904 5752368 1617744 5748128 1613696 5747632 1619904 5752400 -1616688 5746584 1616616 5746536 1613784 5747512 1617744 5748128 -1616688 5746584 1617584 5748040 1617744 5748128 1617184 5746832 -1617584 5748040 1613784 5747512 1617744 5748128 1617184 5746832 -1616688 5746584 1613784 5747512 1617584 5748040 1617184 5746832 -1617744 5748128 1617768 5747376 1617184 5746832 1617584 5748040 -1617744 5748128 1617768 5747376 1617584 5748040 1613784 5747512 -1617184 5746832 1616688 5746584 1617584 5748040 1617768 5747376 -1617744 5748128 1617848 5747624 1617768 5747376 1617584 5748040 -1617744 5748128 1617848 5747624 1617584 5748040 1613784 5747512 -1617768 5747376 1617184 5746832 1617584 5748040 1617848 5747624 -1617744 5748128 1617904 5747904 1617848 5747624 1617584 5748040 -1617744 5748128 1617904 5747904 1617584 5748040 1613784 5747512 -1617744 5748128 1617896 5748024 1617904 5747904 1617584 5748040 -1617744 5748128 1617896 5748024 1617584 5748040 1613784 5747512 -1617848 5747624 1617768 5747376 1617584 5748040 1617904 5747904 -1617904 5747904 1617848 5747624 1617584 5748040 1617896 5748024 -1617744 5748128 1617848 5748112 1617896 5748024 1617584 5748040 -1617768 5747376 1617712 5747256 1617184 5746832 1617584 5748040 -1617712 5747256 1617256 5746856 1617184 5746832 1617584 5748040 -1617184 5746832 1616688 5746584 1617584 5748040 1617256 5746856 -1617712 5747256 1617608 5747096 1617256 5746856 1617584 5748040 -1617256 5746856 1617184 5746832 1617584 5748040 1617608 5747096 -1617768 5747376 1617712 5747256 1617584 5748040 1617848 5747624 -1617712 5747256 1617608 5747096 1617584 5748040 1617768 5747376 -1616688 5746584 1617584 5748040 1617184 5746832 1616952 5746624 -1617608 5747096 1617512 5746992 1617256 5746856 1617584 5748040 -1617744 5748128 1617584 5748040 1613784 5747512 1613752 5747576 -1617744 5748128 1617896 5748024 1617584 5748040 1613752 5747576 -1617584 5748040 1616688 5746584 1613784 5747512 1613752 5747576 -1617744 5748128 1617584 5748040 1613752 5747576 1613696 5747632 -1617744 5748128 1617896 5748024 1617584 5748040 1613696 5747632 -1617744 5748128 1617584 5748040 1613696 5747632 1619904 5752368 -1617744 5748128 1617896 5748024 1617584 5748040 1619904 5752368 -1617584 5748040 1613752 5747576 1613696 5747632 1619904 5752368 -1617744 5748128 1617584 5748040 1619904 5752368 1617816 5748136 -1617584 5748040 1613784 5747512 1613752 5747576 1613696 5747632 -1613696 5747632 1619904 5752400 1619904 5752368 1617584 5748040 -1613784 5747512 1617584 5748040 1616688 5746584 1616616 5746536 -1617584 5748040 1617328 5747824 1613784 5747512 1613752 5747576 -1617328 5747824 1616688 5746584 1613784 5747512 1613752 5747576 -1617584 5748040 1616688 5746584 1617328 5747824 1613752 5747576 -1616688 5746584 1617328 5747824 1617584 5748040 1617184 5746832 -1616688 5746584 1613784 5747512 1617328 5747824 1617184 5746832 -1617328 5747824 1613752 5747576 1617584 5748040 1617184 5746832 -1617584 5748040 1617256 5746856 1617184 5746832 1617328 5747824 -1617584 5748040 1617256 5746856 1617328 5747824 1613752 5747576 -1617184 5746832 1616688 5746584 1617328 5747824 1617256 5746856 -1617584 5748040 1617608 5747096 1617256 5746856 1617328 5747824 -1617584 5748040 1617608 5747096 1617328 5747824 1613752 5747576 -1617256 5746856 1617184 5746832 1617328 5747824 1617608 5747096 -1617584 5748040 1617712 5747256 1617608 5747096 1617328 5747824 -1617584 5748040 1617712 5747256 1617328 5747824 1613752 5747576 -1617608 5747096 1617256 5746856 1617328 5747824 1617712 5747256 -1617584 5748040 1617768 5747376 1617712 5747256 1617328 5747824 -1617584 5748040 1617768 5747376 1617328 5747824 1613752 5747576 -1617712 5747256 1617608 5747096 1617328 5747824 1617768 5747376 -1617584 5748040 1617848 5747624 1617768 5747376 1617328 5747824 -1617584 5748040 1617848 5747624 1617328 5747824 1613752 5747576 -1617584 5748040 1617904 5747904 1617848 5747624 1617328 5747824 -1617768 5747376 1617712 5747256 1617328 5747824 1617848 5747624 -1616688 5746584 1617328 5747824 1617184 5746832 1616952 5746624 -1617608 5747096 1617512 5746992 1617256 5746856 1617328 5747824 -1617608 5747096 1617512 5746992 1617328 5747824 1617712 5747256 -1617256 5746856 1617184 5746832 1617328 5747824 1617512 5746992 -1617584 5748040 1617328 5747824 1613752 5747576 1613696 5747632 -1617328 5747824 1613784 5747512 1613752 5747576 1613696 5747632 -1617584 5748040 1617328 5747824 1613696 5747632 1619904 5752368 -1617584 5748040 1617848 5747624 1617328 5747824 1613696 5747632 -1613784 5747512 1617328 5747824 1616688 5746584 1616616 5746536 -1613784 5747512 1613752 5747576 1617328 5747824 1616616 5746536 -1617328 5747824 1617184 5746832 1616688 5746584 1616616 5746536 -1613784 5747512 1617328 5747824 1616616 5746536 1616480 5746336 -1617328 5747824 1617120 5747688 1613784 5747512 1613752 5747576 -1617328 5747824 1617120 5747688 1613752 5747576 1613696 5747632 -1617120 5747688 1616616 5746536 1613784 5747512 1613752 5747576 -1617120 5747688 1613784 5747512 1613752 5747576 1613696 5747632 -1617328 5747824 1616616 5746536 1617120 5747688 1613696 5747632 -1617328 5747824 1617120 5747688 1613696 5747632 1617584 5748040 -1617120 5747688 1613752 5747576 1613696 5747632 1617584 5748040 -1613696 5747632 1619904 5752368 1617584 5748040 1617120 5747688 -1617328 5747824 1616616 5746536 1617120 5747688 1617584 5748040 -1616616 5746536 1617120 5747688 1617328 5747824 1616688 5746584 -1616616 5746536 1613784 5747512 1617120 5747688 1616688 5746584 -1617120 5747688 1617584 5748040 1617328 5747824 1616688 5746584 -1617328 5747824 1617184 5746832 1616688 5746584 1617120 5747688 -1617328 5747824 1617184 5746832 1617120 5747688 1617584 5748040 -1617328 5747824 1617256 5746856 1617184 5746832 1617120 5747688 -1617328 5747824 1617256 5746856 1617120 5747688 1617584 5748040 -1617184 5746832 1616688 5746584 1617120 5747688 1617256 5746856 -1617328 5747824 1617512 5746992 1617256 5746856 1617120 5747688 -1617328 5747824 1617512 5746992 1617120 5747688 1617584 5748040 -1617256 5746856 1617184 5746832 1617120 5747688 1617512 5746992 -1617184 5746832 1616952 5746624 1616688 5746584 1617120 5747688 -1617328 5747824 1617608 5747096 1617512 5746992 1617120 5747688 -1617328 5747824 1617608 5747096 1617120 5747688 1617584 5748040 -1617328 5747824 1617712 5747256 1617608 5747096 1617120 5747688 -1617328 5747824 1617712 5747256 1617120 5747688 1617584 5748040 -1617512 5746992 1617256 5746856 1617120 5747688 1617608 5747096 -1617328 5747824 1617768 5747376 1617712 5747256 1617120 5747688 -1617608 5747096 1617512 5746992 1617120 5747688 1617712 5747256 -1616688 5746584 1616616 5746536 1617120 5747688 1617184 5746832 -1613784 5747512 1617120 5747688 1616616 5746536 1616480 5746336 -1616616 5746536 1616832 5747544 1617120 5747688 1616688 5746584 -1617120 5747688 1616832 5747544 1613784 5747512 1613752 5747576 -1616832 5747544 1616616 5746536 1613784 5747512 1613752 5747576 -1616832 5747544 1613752 5747576 1617120 5747688 1616688 5746584 -1617120 5747688 1616832 5747544 1613752 5747576 1613696 5747632 -1617120 5747688 1616832 5747544 1613696 5747632 1617584 5748040 -1613696 5747632 1619904 5752368 1617584 5748040 1616832 5747544 -1616832 5747544 1613784 5747512 1613752 5747576 1613696 5747632 -1617120 5747688 1616688 5746584 1616832 5747544 1617584 5748040 -1616832 5747544 1613752 5747576 1613696 5747632 1617584 5748040 -1616616 5746536 1613784 5747512 1616832 5747544 1616688 5746584 -1617120 5747688 1616832 5747544 1617584 5748040 1617328 5747824 -1617120 5747688 1617184 5746832 1616688 5746584 1616832 5747544 -1616688 5746584 1616616 5746536 1616832 5747544 1617184 5746832 -1617120 5747688 1617184 5746832 1616832 5747544 1617584 5748040 -1617120 5747688 1617256 5746856 1617184 5746832 1616832 5747544 -1617120 5747688 1617256 5746856 1616832 5747544 1617584 5748040 -1617120 5747688 1617512 5746992 1617256 5746856 1616832 5747544 -1617184 5746832 1616952 5746624 1616688 5746584 1616832 5747544 -1616688 5746584 1616616 5746536 1616832 5747544 1616952 5746624 -1616952 5746624 1616824 5746568 1616688 5746584 1616832 5747544 -1617184 5746832 1616952 5746624 1616832 5747544 1617256 5746856 -1613784 5747512 1616832 5747544 1616616 5746536 1616480 5746336 -1616832 5747544 1616824 5747528 1613784 5747512 1613752 5747576 -1616616 5746536 1616824 5747528 1616832 5747544 1616688 5746584 -1616832 5747544 1616952 5746624 1616688 5746584 1616824 5747528 -1616824 5747528 1613784 5747512 1616832 5747544 1616952 5746624 -1616952 5746624 1616824 5746568 1616688 5746584 1616824 5747528 -1616832 5747544 1617184 5746832 1616952 5746624 1616824 5747528 -1616952 5746624 1616688 5746584 1616824 5747528 1617184 5746832 -1616832 5747544 1617184 5746832 1616824 5747528 1613784 5747512 -1616688 5746584 1616616 5746536 1616824 5747528 1616952 5746624 -1616616 5746536 1613784 5747512 1616824 5747528 1616688 5746584 -1616832 5747544 1617256 5746856 1617184 5746832 1616824 5747528 -1616832 5747544 1617256 5746856 1616824 5747528 1613784 5747512 -1616832 5747544 1617120 5747688 1617256 5746856 1616824 5747528 -1616832 5747544 1617120 5747688 1616824 5747528 1613784 5747512 -1617120 5747688 1617512 5746992 1617256 5746856 1616824 5747528 -1617184 5746832 1616952 5746624 1616824 5747528 1617256 5746856 -1617256 5746856 1617184 5746832 1616824 5747528 1617120 5747688 -1613784 5747512 1616824 5747528 1616616 5746536 1616480 5746336 -1616824 5747528 1616480 5747376 1613784 5747512 1616832 5747544 -1613784 5747512 1613752 5747576 1616832 5747544 1616480 5747376 -1613752 5747576 1613696 5747632 1616832 5747544 1616480 5747376 -1613752 5747576 1613696 5747632 1616480 5747376 1613784 5747512 -1613696 5747632 1617584 5748040 1616832 5747544 1616480 5747376 -1616832 5747544 1616824 5747528 1616480 5747376 1613696 5747632 -1616824 5747528 1616616 5746536 1616480 5747376 1616832 5747544 -1616616 5746536 1616480 5747376 1616824 5747528 1616688 5746584 -1616824 5747528 1616952 5746624 1616688 5746584 1616480 5747376 -1616824 5747528 1617184 5746832 1616952 5746624 1616480 5747376 -1616952 5746624 1616824 5746568 1616688 5746584 1616480 5747376 -1616824 5747528 1617256 5746856 1617184 5746832 1616480 5747376 -1616952 5746624 1616688 5746584 1616480 5747376 1617184 5746832 -1616480 5747376 1616832 5747544 1616824 5747528 1617184 5746832 -1616688 5746584 1616616 5746536 1616480 5747376 1616952 5746624 -1616480 5747376 1616616 5746536 1613784 5747512 1613752 5747576 -1616616 5746536 1613784 5747512 1616480 5747376 1616688 5746584 -1613784 5747512 1616480 5747376 1616616 5746536 1616480 5746336 -1613784 5747512 1616480 5747376 1616480 5746336 1613768 5747456 -1616480 5746336 1616376 5746120 1613768 5747456 1616480 5747376 -1616376 5746120 1613680 5747344 1613768 5747456 1616480 5747376 -1613768 5747456 1613784 5747512 1616480 5747376 1616376 5746120 -1613784 5747512 1613752 5747576 1616480 5747376 1613768 5747456 -1616480 5747376 1616688 5746584 1616616 5746536 1616480 5746336 -1616480 5747376 1616616 5746536 1616480 5746336 1616376 5746120 -1613768 5747456 1616456 5747352 1616376 5746120 1613680 5747344 -1616376 5746120 1616456 5747352 1616480 5747376 1616480 5746336 -1616480 5747376 1616456 5747352 1613768 5747456 1613784 5747512 -1616376 5746120 1613768 5747456 1616456 5747352 1616480 5746336 -1616480 5747376 1616456 5747352 1613784 5747512 1613752 5747576 -1616480 5747376 1616456 5747352 1613752 5747576 1613696 5747632 -1616456 5747352 1613768 5747456 1613784 5747512 1613752 5747576 -1616456 5747352 1613752 5747576 1616480 5747376 1616480 5746336 -1616456 5747352 1616376 5746120 1613768 5747456 1613784 5747512 -1616480 5747376 1616616 5746536 1616480 5746336 1616456 5747352 -1616480 5746336 1616376 5746120 1616456 5747352 1616616 5746536 -1616480 5747376 1616616 5746536 1616456 5747352 1613752 5747576 -1616480 5747376 1616688 5746584 1616616 5746536 1616456 5747352 -1616480 5747376 1616952 5746624 1616688 5746584 1616456 5747352 -1616952 5746624 1616824 5746568 1616688 5746584 1616456 5747352 -1616480 5747376 1617184 5746832 1616952 5746624 1616456 5747352 -1616480 5747376 1616824 5747528 1617184 5746832 1616456 5747352 -1616952 5746624 1616688 5746584 1616456 5747352 1617184 5746832 -1616480 5747376 1617184 5746832 1616456 5747352 1613752 5747576 -1616688 5746584 1616616 5746536 1616456 5747352 1616952 5746624 -1616616 5746536 1616480 5746336 1616456 5747352 1616688 5746584 -1613768 5747456 1616352 5747304 1616376 5746120 1613680 5747344 -1616376 5746120 1616352 5747304 1616456 5747352 1616480 5746336 -1616456 5747352 1616616 5746536 1616480 5746336 1616352 5747304 -1616480 5746336 1616376 5746120 1616352 5747304 1616616 5746536 -1616376 5746120 1613768 5747456 1616352 5747304 1616480 5746336 -1616456 5747352 1616352 5747304 1613768 5747456 1613784 5747512 -1616456 5747352 1616352 5747304 1613784 5747512 1613752 5747576 -1616352 5747304 1616376 5746120 1613768 5747456 1613784 5747512 -1616456 5747352 1616352 5747304 1613752 5747576 1616480 5747376 -1613752 5747576 1613696 5747632 1616480 5747376 1616352 5747304 -1613696 5747632 1616832 5747544 1616480 5747376 1616352 5747304 -1616352 5747304 1613784 5747512 1613752 5747576 1613696 5747632 -1616480 5747376 1616456 5747352 1616352 5747304 1613696 5747632 -1616352 5747304 1613768 5747456 1613784 5747512 1613752 5747576 -1616352 5747304 1616480 5747376 1616456 5747352 1616616 5746536 -1616456 5747352 1616688 5746584 1616616 5746536 1616352 5747304 -1616616 5746536 1616480 5746336 1616352 5747304 1616688 5746584 -1616456 5747352 1616952 5746624 1616688 5746584 1616352 5747304 -1616456 5747352 1616688 5746584 1616352 5747304 1616480 5747376 -1613768 5747456 1616016 5747072 1616376 5746120 1613680 5747344 -1616376 5746120 1616296 5745864 1613680 5747344 1616016 5747072 -1613680 5747344 1613768 5747456 1616016 5747072 1616296 5745864 -1616296 5745864 1616160 5745400 1613680 5747344 1616016 5747072 -1616016 5747072 1616352 5747304 1616376 5746120 1616296 5745864 -1616352 5747304 1616016 5747072 1613768 5747456 1613784 5747512 -1616352 5747304 1616376 5746120 1616016 5747072 1613784 5747512 -1616376 5746120 1616016 5747072 1616352 5747304 1616480 5746336 -1616352 5747304 1616616 5746536 1616480 5746336 1616016 5747072 -1616352 5747304 1616688 5746584 1616616 5746536 1616016 5747072 -1616376 5746120 1616296 5745864 1616016 5747072 1616480 5746336 -1616016 5747072 1613784 5747512 1616352 5747304 1616616 5746536 -1616480 5746336 1616376 5746120 1616016 5747072 1616616 5746536 -1613768 5747456 1613784 5747512 1616016 5747072 1613680 5747344 -1616352 5747304 1616016 5747072 1613784 5747512 1613752 5747576 -1616352 5747304 1616016 5747072 1613752 5747576 1613696 5747632 -1616016 5747072 1613768 5747456 1613784 5747512 1613752 5747576 -1616352 5747304 1616616 5746536 1616016 5747072 1613752 5747576 -1616016 5747072 1615824 5746976 1613680 5747344 1613768 5747456 -1613680 5747344 1615824 5746976 1616296 5745864 1616160 5745400 -1616296 5745864 1615824 5746976 1616016 5747072 1616376 5746120 -1613680 5747344 1615824 5746976 1616160 5745400 1613520 5747248 -1616296 5745864 1616232 5745520 1616160 5745400 1615824 5746976 -1616016 5747072 1616480 5746336 1616376 5746120 1615824 5746976 -1616376 5746120 1616296 5745864 1615824 5746976 1616480 5746336 -1615824 5746976 1616160 5745400 1613680 5747344 1613768 5747456 -1615824 5746976 1616376 5746120 1616296 5745864 1616160 5745400 -1616016 5747072 1616616 5746536 1616480 5746336 1615824 5746976 -1616016 5747072 1615824 5746976 1613768 5747456 1613784 5747512 -1615824 5746976 1613680 5747344 1613768 5747456 1613784 5747512 -1616016 5747072 1615824 5746976 1613784 5747512 1613752 5747576 -1615824 5746976 1613768 5747456 1613784 5747512 1613752 5747576 -1616016 5747072 1616480 5746336 1615824 5746976 1613752 5747576 -1616016 5747072 1615824 5746976 1613752 5747576 1616352 5747304 -1616160 5745400 1615744 5746928 1615824 5746976 1616296 5745864 -1616160 5745400 1613680 5747344 1615744 5746928 1616296 5745864 -1613680 5747344 1615744 5746928 1616160 5745400 1613520 5747248 -1615744 5746928 1616296 5745864 1616160 5745400 1613520 5747248 -1616160 5745400 1612960 5746920 1613520 5747248 1615744 5746928 -1616160 5745400 1615744 5746928 1616296 5745864 1616232 5745520 -1615824 5746976 1615744 5746928 1613680 5747344 1613768 5747456 -1615824 5746976 1615744 5746928 1613768 5747456 1613784 5747512 -1615744 5746928 1613680 5747344 1613768 5747456 1613784 5747512 -1615744 5746928 1613784 5747512 1615824 5746976 1616296 5745864 -1615824 5746976 1616376 5746120 1616296 5745864 1615744 5746928 -1616296 5745864 1616160 5745400 1615744 5746928 1616376 5746120 -1615824 5746976 1616480 5746336 1616376 5746120 1615744 5746928 -1615824 5746976 1616016 5747072 1616480 5746336 1615744 5746928 -1615824 5746976 1616480 5746336 1615744 5746928 1613784 5747512 -1616376 5746120 1616296 5745864 1615744 5746928 1616480 5746336 -1613680 5747344 1613768 5747456 1615744 5746928 1613520 5747248 -1615824 5746976 1615744 5746928 1613784 5747512 1613752 5747576 -1616160 5745400 1615680 5746848 1615744 5746928 1616296 5745864 -1615680 5746848 1613520 5747248 1615744 5746928 1616296 5745864 -1616160 5745400 1613520 5747248 1615680 5746848 1616296 5745864 -1615744 5746928 1616376 5746120 1616296 5745864 1615680 5746848 -1615744 5746928 1616376 5746120 1615680 5746848 1613520 5747248 -1616296 5745864 1616160 5745400 1615680 5746848 1616376 5746120 -1613520 5747248 1615680 5746848 1616160 5745400 1612960 5746920 -1615744 5746928 1615680 5746848 1613520 5747248 1613680 5747344 -1615744 5746928 1616376 5746120 1615680 5746848 1613680 5747344 -1615680 5746848 1616160 5745400 1613520 5747248 1613680 5747344 -1616160 5745400 1615680 5746848 1616296 5745864 1616232 5745520 -1615744 5746928 1616480 5746336 1616376 5746120 1615680 5746848 -1615744 5746928 1616480 5746336 1615680 5746848 1613680 5747344 -1616376 5746120 1616296 5745864 1615680 5746848 1616480 5746336 -1615744 5746928 1615824 5746976 1616480 5746336 1615680 5746848 -1615744 5746928 1615824 5746976 1615680 5746848 1613680 5747344 -1615824 5746976 1616016 5747072 1616480 5746336 1615680 5746848 -1616480 5746336 1616376 5746120 1615680 5746848 1615824 5746976 -1615744 5746928 1615680 5746848 1613680 5747344 1613768 5747456 -1615744 5746928 1615824 5746976 1615680 5746848 1613768 5747456 -1615680 5746848 1613520 5747248 1613680 5747344 1613768 5747456 -1615744 5746928 1615680 5746848 1613768 5747456 1613784 5747512 -1615744 5746928 1615824 5746976 1615680 5746848 1613784 5747512 -1615744 5746928 1615680 5746848 1613784 5747512 1615824 5746976 -1615680 5746848 1613680 5747344 1613768 5747456 1613784 5747512 -1615680 5746848 1615648 5746688 1613520 5747248 1613680 5747344 -1615680 5746848 1616160 5745400 1615648 5746688 1613680 5747344 -1616160 5745400 1615648 5746688 1615680 5746848 1616296 5745864 -1615680 5746848 1616376 5746120 1616296 5745864 1615648 5746688 -1615648 5746688 1613680 5747344 1615680 5746848 1616376 5746120 -1616296 5745864 1616160 5745400 1615648 5746688 1616376 5746120 -1615680 5746848 1616480 5746336 1616376 5746120 1615648 5746688 -1616376 5746120 1616296 5745864 1615648 5746688 1616480 5746336 -1615680 5746848 1616480 5746336 1615648 5746688 1613680 5747344 -1615648 5746688 1616160 5745400 1613520 5747248 1613680 5747344 -1616160 5745400 1613520 5747248 1615648 5746688 1616296 5745864 -1613520 5747248 1615648 5746688 1616160 5745400 1612960 5746920 -1613520 5747248 1613680 5747344 1615648 5746688 1612960 5746920 -1615648 5746688 1616296 5745864 1616160 5745400 1612960 5746920 -1615680 5746848 1615648 5746688 1613680 5747344 1613768 5747456 -1615648 5746688 1613520 5747248 1613680 5747344 1613768 5747456 -1615680 5746848 1616480 5746336 1615648 5746688 1613768 5747456 -1616160 5745400 1613544 5743096 1612960 5746920 1615648 5746688 -1613520 5747248 1615648 5746688 1612960 5746920 1613360 5747216 -1616160 5745400 1615648 5746688 1616296 5745864 1616232 5745520 -1615680 5746848 1615824 5746976 1616480 5746336 1615648 5746688 -1615680 5746848 1615824 5746976 1615648 5746688 1613768 5747456 -1616480 5746336 1616376 5746120 1615648 5746688 1615824 5746976 -1615680 5746848 1615744 5746928 1615824 5746976 1615648 5746688 -1615824 5746976 1616016 5747072 1616480 5746336 1615648 5746688 -1615680 5746848 1615648 5746688 1613768 5747456 1613784 5747512 -1616160 5745400 1615640 5746528 1615648 5746688 1616296 5745864 -1615648 5746688 1616376 5746120 1616296 5745864 1615640 5746528 -1615648 5746688 1616480 5746336 1616376 5746120 1615640 5746528 -1616376 5746120 1616296 5745864 1615640 5746528 1616480 5746336 -1615648 5746688 1615824 5746976 1616480 5746336 1615640 5746528 -1615640 5746528 1612960 5746920 1615648 5746688 1616480 5746336 -1616296 5745864 1616160 5745400 1615640 5746528 1616376 5746120 -1615648 5746688 1615640 5746528 1612960 5746920 1613520 5747248 -1615648 5746688 1615640 5746528 1613520 5747248 1613680 5747344 -1615648 5746688 1615640 5746528 1613680 5747344 1613768 5747456 -1615648 5746688 1616480 5746336 1615640 5746528 1613680 5747344 -1615640 5746528 1616160 5745400 1612960 5746920 1613520 5747248 -1615640 5746528 1612960 5746920 1613520 5747248 1613680 5747344 -1612960 5746920 1615640 5746528 1616160 5745400 1613544 5743096 -1612960 5746920 1613520 5747248 1615640 5746528 1613544 5743096 -1612960 5746920 1615640 5746528 1613544 5743096 1612768 5746808 -1616160 5745400 1613544 5743064 1613544 5743096 1615640 5746528 -1616160 5745400 1613544 5743096 1615640 5746528 1616296 5745864 -1612960 5746920 1613360 5747216 1613520 5747248 1615640 5746528 -1616160 5745400 1615640 5746528 1616296 5745864 1616232 5745520 -1615640 5746528 1615624 5746504 1612960 5746920 1613520 5747248 -1615640 5746528 1613544 5743096 1615624 5746504 1613520 5747248 -1615640 5746528 1615624 5746504 1613520 5747248 1613680 5747344 -1615640 5746528 1615624 5746504 1613680 5747344 1615648 5746688 -1613680 5747344 1613768 5747456 1615648 5746688 1615624 5746504 -1615624 5746504 1612960 5746920 1613520 5747248 1613680 5747344 -1615640 5746528 1613544 5743096 1615624 5746504 1615648 5746688 -1615624 5746504 1613520 5747248 1613680 5747344 1615648 5746688 -1612960 5746920 1615624 5746504 1613544 5743096 1612768 5746808 -1613544 5743096 1615624 5746504 1615640 5746528 1616160 5745400 -1615624 5746504 1615648 5746688 1615640 5746528 1616160 5745400 -1613544 5743096 1615624 5746504 1616160 5745400 1613544 5743064 -1613544 5743096 1612960 5746920 1615624 5746504 1616160 5745400 -1615640 5746528 1616296 5745864 1616160 5745400 1615624 5746504 -1615640 5746528 1616376 5746120 1616296 5745864 1615624 5746504 -1615640 5746528 1616480 5746336 1616376 5746120 1615624 5746504 -1615640 5746528 1616376 5746120 1615624 5746504 1615648 5746688 -1616160 5745400 1613544 5743096 1615624 5746504 1616296 5745864 -1616296 5745864 1616160 5745400 1615624 5746504 1616376 5746120 -1615624 5746504 1613544 5743096 1612960 5746920 1613520 5747248 -1612960 5746920 1613360 5747216 1613520 5747248 1615624 5746504 -1616296 5745864 1616232 5745520 1616160 5745400 1615624 5746504 -1616232 5745520 1616216 5745480 1616160 5745400 1615624 5746504 -1616160 5745400 1613544 5743096 1615624 5746504 1616232 5745520 -1616296 5745864 1616232 5745520 1615624 5746504 1616376 5746120 -1613544 5743096 1615608 5746456 1616160 5745400 1613544 5743064 -1616160 5745400 1615608 5746456 1615624 5746504 1616232 5745520 -1616160 5745400 1615608 5746456 1616232 5745520 1616216 5745480 -1615608 5746456 1613544 5743096 1615624 5746504 1616232 5745520 -1615624 5746504 1615608 5746456 1613544 5743096 1612960 5746920 -1613544 5743096 1612768 5746808 1612960 5746920 1615608 5746456 -1615624 5746504 1616232 5745520 1615608 5746456 1612960 5746920 -1615608 5746456 1616160 5745400 1613544 5743096 1612960 5746920 -1615624 5746504 1615608 5746456 1612960 5746920 1613520 5747248 -1615624 5746504 1615608 5746456 1613520 5747248 1613680 5747344 -1615624 5746504 1615608 5746456 1613680 5747344 1615648 5746688 -1613680 5747344 1613768 5747456 1615648 5746688 1615608 5746456 -1615624 5746504 1615608 5746456 1615648 5746688 1615640 5746528 -1615608 5746456 1613520 5747248 1613680 5747344 1613768 5747456 -1615648 5746688 1615624 5746504 1615608 5746456 1613768 5747456 -1613768 5747456 1615680 5746848 1615648 5746688 1615608 5746456 -1615624 5746504 1616232 5745520 1615608 5746456 1615648 5746688 -1615608 5746456 1613544 5743096 1612960 5746920 1613520 5747248 -1612960 5746920 1613360 5747216 1613520 5747248 1615608 5746456 -1615624 5746504 1616296 5745864 1616232 5745520 1615608 5746456 -1616232 5745520 1616160 5745400 1615608 5746456 1616296 5745864 -1615624 5746504 1616296 5745864 1615608 5746456 1615648 5746688 -1615624 5746504 1616376 5746120 1616296 5745864 1615608 5746456 -1615624 5746504 1615640 5746528 1616376 5746120 1615608 5746456 -1615640 5746528 1616480 5746336 1616376 5746120 1615608 5746456 -1615624 5746504 1615640 5746528 1615608 5746456 1615648 5746688 -1616376 5746120 1616296 5745864 1615608 5746456 1615640 5746528 -1616296 5745864 1616232 5745520 1615608 5746456 1616376 5746120 -1615608 5746456 1612960 5746920 1613520 5747248 1613680 5747344 -1616160 5745400 1613544 5743096 1615608 5746456 1616232 5745520 -1612960 5746920 1615544 5746368 1613544 5743096 1612768 5746808 -1615608 5746456 1615544 5746368 1612960 5746920 1613520 5747248 -1613544 5743096 1615544 5746368 1615608 5746456 1616160 5745400 -1613544 5743096 1612960 5746920 1615544 5746368 1616160 5745400 -1613544 5743096 1615544 5746368 1616160 5745400 1613544 5743064 -1612960 5746920 1613360 5747216 1613520 5747248 1615544 5746368 -1615608 5746456 1616160 5745400 1615544 5746368 1613520 5747248 -1615544 5746368 1613544 5743096 1612960 5746920 1613520 5747248 -1615608 5746456 1615544 5746368 1613520 5747248 1613680 5747344 -1615608 5746456 1615544 5746368 1613680 5747344 1613768 5747456 -1615608 5746456 1615544 5746368 1613768 5747456 1615648 5746688 -1615544 5746368 1613680 5747344 1613768 5747456 1615648 5746688 -1615608 5746456 1615544 5746368 1615648 5746688 1615624 5746504 -1615544 5746368 1613768 5747456 1615648 5746688 1615624 5746504 -1615648 5746688 1615640 5746528 1615624 5746504 1615544 5746368 -1613768 5747456 1615680 5746848 1615648 5746688 1615544 5746368 -1615544 5746368 1612960 5746920 1613520 5747248 1613680 5747344 -1615608 5746456 1616160 5745400 1615544 5746368 1615624 5746504 -1615544 5746368 1613520 5747248 1613680 5747344 1613768 5747456 -1615608 5746456 1616232 5745520 1616160 5745400 1615544 5746368 -1616232 5745520 1616216 5745480 1616160 5745400 1615544 5746368 -1615608 5746456 1616296 5745864 1616232 5745520 1615544 5746368 -1616160 5745400 1613544 5743096 1615544 5746368 1616232 5745520 -1615608 5746456 1616376 5746120 1616296 5745864 1615544 5746368 -1616296 5745864 1616232 5745520 1615544 5746368 1616376 5746120 -1615608 5746456 1615640 5746528 1616376 5746120 1615544 5746368 -1615608 5746456 1616376 5746120 1615544 5746368 1615624 5746504 -1616232 5745520 1616160 5745400 1615544 5746368 1616296 5745864 -1613544 5743096 1615480 5746344 1615544 5746368 1616160 5745400 -1613544 5743096 1612960 5746920 1615480 5746344 1616160 5745400 -1615480 5746344 1612960 5746920 1615544 5746368 1616160 5745400 -1612960 5746920 1615480 5746344 1613544 5743096 1612768 5746808 -1612960 5746920 1615544 5746368 1615480 5746344 1612768 5746808 -1615480 5746344 1616160 5745400 1613544 5743096 1612768 5746808 -1613544 5743096 1613496 5743096 1612768 5746808 1615480 5746344 -1613544 5743096 1615480 5746344 1616160 5745400 1613544 5743064 -1615544 5746368 1616232 5745520 1616160 5745400 1615480 5746344 -1616232 5745520 1616216 5745480 1616160 5745400 1615480 5746344 -1616160 5745400 1613544 5743096 1615480 5746344 1616232 5745520 -1615544 5746368 1616232 5745520 1615480 5746344 1612960 5746920 -1615544 5746368 1615480 5746344 1612960 5746920 1613520 5747248 -1615480 5746344 1612768 5746808 1612960 5746920 1613520 5747248 -1615544 5746368 1616232 5745520 1615480 5746344 1613520 5747248 -1615544 5746368 1615480 5746344 1613520 5747248 1613680 5747344 -1615544 5746368 1616232 5745520 1615480 5746344 1613680 5747344 -1612960 5746920 1613360 5747216 1613520 5747248 1615480 5746344 -1615480 5746344 1612960 5746920 1613520 5747248 1613680 5747344 -1615544 5746368 1616296 5745864 1616232 5745520 1615480 5746344 -1615544 5746368 1616296 5745864 1615480 5746344 1613680 5747344 -1615544 5746368 1616376 5746120 1616296 5745864 1615480 5746344 -1616232 5745520 1616160 5745400 1615480 5746344 1616296 5745864 -1615544 5746368 1615480 5746344 1613680 5747344 1613768 5747456 -1615544 5746368 1616296 5745864 1615480 5746344 1613768 5747456 -1615544 5746368 1615480 5746344 1613768 5747456 1615648 5746688 -1615544 5746368 1615480 5746344 1615648 5746688 1615624 5746504 -1615544 5746368 1616296 5745864 1615480 5746344 1615624 5746504 -1615648 5746688 1615640 5746528 1615624 5746504 1615480 5746344 -1615480 5746344 1613768 5747456 1615648 5746688 1615624 5746504 -1615544 5746368 1615480 5746344 1615624 5746504 1615608 5746456 -1615480 5746344 1615648 5746688 1615624 5746504 1615608 5746456 -1615544 5746368 1616296 5745864 1615480 5746344 1615608 5746456 -1613768 5747456 1615680 5746848 1615648 5746688 1615480 5746344 -1615480 5746344 1613520 5747248 1613680 5747344 1613768 5747456 -1615480 5746344 1613680 5747344 1613768 5747456 1615648 5746688 -1613544 5743096 1615272 5746320 1615480 5746344 1616160 5745400 -1613544 5743096 1612768 5746808 1615272 5746320 1616160 5745400 -1615480 5746344 1616232 5745520 1616160 5745400 1615272 5746320 -1615272 5746320 1612768 5746808 1615480 5746344 1616160 5745400 -1612768 5746808 1615272 5746320 1613544 5743096 1613496 5743096 -1615480 5746344 1615272 5746320 1612768 5746808 1612960 5746920 -1615272 5746320 1613544 5743096 1612768 5746808 1612960 5746920 -1615480 5746344 1615272 5746320 1612960 5746920 1613520 5747248 -1615480 5746344 1616160 5745400 1615272 5746320 1613520 5747248 -1615272 5746320 1612768 5746808 1612960 5746920 1613520 5747248 -1613544 5743096 1615272 5746320 1616160 5745400 1613544 5743064 -1612960 5746920 1613360 5747216 1613520 5747248 1615272 5746320 -1615480 5746344 1615272 5746320 1613520 5747248 1613680 5747344 -1615272 5746320 1612960 5746920 1613520 5747248 1613680 5747344 -1615480 5746344 1616160 5745400 1615272 5746320 1613680 5747344 -1615480 5746344 1615272 5746320 1613680 5747344 1613768 5747456 -1615480 5746344 1616160 5745400 1615272 5746320 1613768 5747456 -1615272 5746320 1613520 5747248 1613680 5747344 1613768 5747456 -1615480 5746344 1615272 5746320 1613768 5747456 1615648 5746688 -1615480 5746344 1616160 5745400 1615272 5746320 1615648 5746688 -1615480 5746344 1615272 5746320 1615648 5746688 1615624 5746504 -1615480 5746344 1615272 5746320 1615624 5746504 1615608 5746456 -1615480 5746344 1616160 5745400 1615272 5746320 1615624 5746504 -1615648 5746688 1615640 5746528 1615624 5746504 1615272 5746320 -1613768 5747456 1615680 5746848 1615648 5746688 1615272 5746320 -1615272 5746320 1613680 5747344 1613768 5747456 1615680 5746848 -1613768 5747456 1613784 5747512 1615680 5746848 1615272 5746320 -1615272 5746320 1615680 5746848 1615648 5746688 1615624 5746504 -1615272 5746320 1615160 5746336 1612768 5746808 1612960 5746920 -1615272 5746320 1613544 5743096 1615160 5746336 1612960 5746920 -1613544 5743096 1615160 5746336 1615272 5746320 1616160 5745400 -1615160 5746336 1612960 5746920 1615272 5746320 1616160 5745400 -1615160 5746336 1613544 5743096 1612768 5746808 1612960 5746920 -1613544 5743096 1612768 5746808 1615160 5746336 1616160 5745400 -1615272 5746320 1615480 5746344 1616160 5745400 1615160 5746336 -1612768 5746808 1615160 5746336 1613544 5743096 1613496 5743096 -1615272 5746320 1615160 5746336 1612960 5746920 1613520 5747248 -1615160 5746336 1612768 5746808 1612960 5746920 1613520 5747248 -1615272 5746320 1616160 5745400 1615160 5746336 1613520 5747248 -1615272 5746320 1615160 5746336 1613520 5747248 1613680 5747344 -1615272 5746320 1616160 5745400 1615160 5746336 1613680 5747344 -1615160 5746336 1612960 5746920 1613520 5747248 1613680 5747344 -1613544 5743096 1615160 5746336 1616160 5745400 1613544 5743064 -1612960 5746920 1613360 5747216 1613520 5747248 1615160 5746336 -1615272 5746320 1615160 5746336 1613680 5747344 1613768 5747456 -1615272 5746320 1616160 5745400 1615160 5746336 1613768 5747456 -1615160 5746336 1613520 5747248 1613680 5747344 1613768 5747456 -1615272 5746320 1615160 5746336 1613768 5747456 1615680 5746848 -1615272 5746320 1616160 5745400 1615160 5746336 1615680 5746848 -1615272 5746320 1615160 5746336 1615680 5746848 1615648 5746688 -1615272 5746320 1616160 5745400 1615160 5746336 1615648 5746688 -1615160 5746336 1613768 5747456 1615680 5746848 1615648 5746688 -1613768 5747456 1613784 5747512 1615680 5746848 1615160 5746336 -1615680 5746848 1615648 5746688 1615160 5746336 1613784 5747512 -1613784 5747512 1615744 5746928 1615680 5746848 1615160 5746336 -1615160 5746336 1613680 5747344 1613768 5747456 1613784 5747512 -1615272 5746320 1615160 5746336 1615648 5746688 1615624 5746504 -1615160 5746336 1615080 5746352 1612960 5746920 1613520 5747248 -1612768 5746808 1615080 5746352 1615160 5746336 1613544 5743096 -1615160 5746336 1613544 5743096 1615080 5746352 1613520 5747248 -1615160 5746336 1616160 5745400 1613544 5743096 1615080 5746352 -1615160 5746336 1615272 5746320 1616160 5745400 1615080 5746352 -1613544 5743096 1612768 5746808 1615080 5746352 1616160 5745400 -1615160 5746336 1616160 5745400 1615080 5746352 1613520 5747248 -1615080 5746352 1612768 5746808 1612960 5746920 1613520 5747248 -1612768 5746808 1612960 5746920 1615080 5746352 1613544 5743096 -1612768 5746808 1615080 5746352 1613544 5743096 1613496 5743096 -1615160 5746336 1615080 5746352 1613520 5747248 1613680 5747344 -1615080 5746352 1612960 5746920 1613520 5747248 1613680 5747344 -1615160 5746336 1616160 5745400 1615080 5746352 1613680 5747344 -1615160 5746336 1615080 5746352 1613680 5747344 1613768 5747456 -1615160 5746336 1616160 5745400 1615080 5746352 1613768 5747456 -1615080 5746352 1613520 5747248 1613680 5747344 1613768 5747456 -1616160 5745400 1613544 5743064 1613544 5743096 1615080 5746352 -1612960 5746920 1613360 5747216 1613520 5747248 1615080 5746352 -1615160 5746336 1615080 5746352 1613768 5747456 1613784 5747512 -1615160 5746336 1616160 5745400 1615080 5746352 1613784 5747512 -1615080 5746352 1613680 5747344 1613768 5747456 1613784 5747512 -1615160 5746336 1615080 5746352 1613784 5747512 1615680 5746848 -1615160 5746336 1616160 5745400 1615080 5746352 1615680 5746848 -1615160 5746336 1615080 5746352 1615680 5746848 1615648 5746688 -1615160 5746336 1616160 5745400 1615080 5746352 1615648 5746688 -1615160 5746336 1615080 5746352 1615648 5746688 1615272 5746320 -1613784 5747512 1615744 5746928 1615680 5746848 1615080 5746352 -1615080 5746352 1613784 5747512 1615680 5746848 1615648 5746688 -1615080 5746352 1613768 5747456 1613784 5747512 1615680 5746848 -1613544 5743096 1614912 5746344 1615080 5746352 1616160 5745400 -1615080 5746352 1615160 5746336 1616160 5745400 1614912 5746344 -1615160 5746336 1615272 5746320 1616160 5745400 1614912 5746344 -1616160 5745400 1613544 5743096 1614912 5746344 1615160 5746336 -1614912 5746344 1612768 5746808 1615080 5746352 1615160 5746336 -1615080 5746352 1614912 5746344 1612768 5746808 1612960 5746920 -1615080 5746352 1614912 5746344 1612960 5746920 1613520 5747248 -1615080 5746352 1614912 5746344 1613520 5747248 1613680 5747344 -1614912 5746344 1612960 5746920 1613520 5747248 1613680 5747344 -1615080 5746352 1615160 5746336 1614912 5746344 1613680 5747344 -1614912 5746344 1612768 5746808 1612960 5746920 1613520 5747248 -1614912 5746344 1613544 5743096 1612768 5746808 1612960 5746920 -1613544 5743096 1612768 5746808 1614912 5746344 1616160 5745400 -1612768 5746808 1614912 5746344 1613544 5743096 1613496 5743096 -1612768 5746808 1614912 5746344 1613496 5743096 1612584 5746744 -1612768 5746808 1612960 5746920 1614912 5746344 1613496 5743096 -1614912 5746344 1616160 5745400 1613544 5743096 1613496 5743096 -1615080 5746352 1614912 5746344 1613680 5747344 1613768 5747456 -1614912 5746344 1613520 5747248 1613680 5747344 1613768 5747456 -1615080 5746352 1615160 5746336 1614912 5746344 1613768 5747456 -1615080 5746352 1614912 5746344 1613768 5747456 1613784 5747512 -1615080 5746352 1615160 5746336 1614912 5746344 1613784 5747512 -1614912 5746344 1613680 5747344 1613768 5747456 1613784 5747512 -1613544 5743096 1614912 5746344 1616160 5745400 1613544 5743064 -1612960 5746920 1613360 5747216 1613520 5747248 1614912 5746344 -1615080 5746352 1614912 5746344 1613784 5747512 1615680 5746848 -1615080 5746352 1615160 5746336 1614912 5746344 1615680 5746848 -1614912 5746344 1613768 5747456 1613784 5747512 1615680 5746848 -1613784 5747512 1615744 5746928 1615680 5746848 1614912 5746344 -1615080 5746352 1614912 5746344 1615680 5746848 1615648 5746688 -1612768 5746808 1614792 5746280 1613496 5743096 1612584 5746744 -1614912 5746344 1614792 5746280 1612768 5746808 1612960 5746920 -1614912 5746344 1614792 5746280 1612960 5746920 1613520 5747248 -1614912 5746344 1614792 5746280 1613520 5747248 1613680 5747344 -1614912 5746344 1614792 5746280 1613680 5747344 1613768 5747456 -1614792 5746280 1613520 5747248 1613680 5747344 1613768 5747456 -1614792 5746280 1612960 5746920 1613520 5747248 1613680 5747344 -1614792 5746280 1612768 5746808 1612960 5746920 1613520 5747248 -1614912 5746344 1613496 5743096 1614792 5746280 1613768 5747456 -1614792 5746280 1613496 5743096 1612768 5746808 1612960 5746920 -1613496 5743096 1614792 5746280 1614912 5746344 1613544 5743096 -1614792 5746280 1613768 5747456 1614912 5746344 1613544 5743096 -1614912 5746344 1616160 5745400 1613544 5743096 1614792 5746280 -1614912 5746344 1615160 5746336 1616160 5745400 1614792 5746280 -1615160 5746336 1615272 5746320 1616160 5745400 1614792 5746280 -1615160 5746336 1615272 5746320 1614792 5746280 1614912 5746344 -1614912 5746344 1615080 5746352 1615160 5746336 1614792 5746280 -1615160 5746336 1615272 5746320 1614792 5746280 1615080 5746352 -1614912 5746344 1615080 5746352 1614792 5746280 1613768 5747456 -1616160 5745400 1613544 5743096 1614792 5746280 1615272 5746320 -1613496 5743096 1612768 5746808 1614792 5746280 1613544 5743096 -1615272 5746320 1615480 5746344 1616160 5745400 1614792 5746280 -1613544 5743096 1613496 5743096 1614792 5746280 1616160 5745400 -1614912 5746344 1614792 5746280 1613768 5747456 1613784 5747512 -1616160 5745400 1613544 5743064 1613544 5743096 1614792 5746280 -1612960 5746920 1613360 5747216 1613520 5747248 1614792 5746280 -1612768 5746808 1614760 5746280 1613496 5743096 1612584 5746744 -1614792 5746280 1614760 5746280 1612768 5746808 1612960 5746920 -1614792 5746280 1614760 5746280 1612960 5746920 1613520 5747248 -1614792 5746280 1614760 5746280 1613520 5747248 1613680 5747344 -1614792 5746280 1614760 5746280 1613680 5747344 1613768 5747456 -1614792 5746280 1614760 5746280 1613768 5747456 1614912 5746344 -1614760 5746280 1613680 5747344 1613768 5747456 1614912 5746344 -1614760 5746280 1613520 5747248 1613680 5747344 1613768 5747456 -1614760 5746280 1612960 5746920 1613520 5747248 1613680 5747344 -1614760 5746280 1612768 5746808 1612960 5746920 1613520 5747248 -1614792 5746280 1613496 5743096 1614760 5746280 1614912 5746344 -1613496 5743096 1614760 5746280 1614792 5746280 1613544 5743096 -1613496 5743096 1612768 5746808 1614760 5746280 1613544 5743096 -1614760 5746280 1614912 5746344 1614792 5746280 1613544 5743096 -1614760 5746280 1613496 5743096 1612768 5746808 1612960 5746920 -1614792 5746280 1616160 5745400 1613544 5743096 1614760 5746280 -1614792 5746280 1615272 5746320 1616160 5745400 1614760 5746280 -1614792 5746280 1616160 5745400 1614760 5746280 1614912 5746344 -1613544 5743096 1613496 5743096 1614760 5746280 1616160 5745400 -1613768 5747456 1613784 5747512 1614912 5746344 1614760 5746280 -1616160 5745400 1613544 5743064 1613544 5743096 1614760 5746280 -1612960 5746920 1613360 5747216 1613520 5747248 1614760 5746280 -1612768 5746808 1614552 5745968 1613496 5743096 1612584 5746744 -1613496 5743096 1614552 5745968 1614760 5746280 1613544 5743096 -1614552 5745968 1612768 5746808 1614760 5746280 1613544 5743096 -1612768 5746808 1614760 5746280 1614552 5745968 1612584 5746744 -1614552 5745968 1613544 5743096 1613496 5743096 1612584 5746744 -1614760 5746280 1616160 5745400 1613544 5743096 1614552 5745968 -1614760 5746280 1616160 5745400 1614552 5745968 1612768 5746808 -1613544 5743096 1613496 5743096 1614552 5745968 1616160 5745400 -1614760 5746280 1614552 5745968 1612768 5746808 1612960 5746920 -1614760 5746280 1616160 5745400 1614552 5745968 1612960 5746920 -1614552 5745968 1612584 5746744 1612768 5746808 1612960 5746920 -1614760 5746280 1614552 5745968 1612960 5746920 1613520 5747248 -1614760 5746280 1614552 5745968 1613520 5747248 1613680 5747344 -1614760 5746280 1616160 5745400 1614552 5745968 1613520 5747248 -1614552 5745968 1612768 5746808 1612960 5746920 1613520 5747248 -1613496 5743096 1613416 5743064 1612584 5746744 1614552 5745968 -1614760 5746280 1614792 5746280 1616160 5745400 1614552 5745968 -1614760 5746280 1614792 5746280 1614552 5745968 1613520 5747248 -1614792 5746280 1615272 5746320 1616160 5745400 1614552 5745968 -1614792 5746280 1615160 5746336 1615272 5746320 1614552 5745968 -1614792 5746280 1615080 5746352 1615160 5746336 1614552 5745968 -1615272 5746320 1616160 5745400 1614552 5745968 1615160 5746336 -1616160 5745400 1613544 5743096 1614552 5745968 1615272 5746320 -1615272 5746320 1615480 5746344 1616160 5745400 1614552 5745968 -1614792 5746280 1615160 5746336 1614552 5745968 1614760 5746280 -1616160 5745400 1613544 5743064 1613544 5743096 1614552 5745968 -1612960 5746920 1613360 5747216 1613520 5747248 1614552 5745968 -1614552 5745968 1614392 5745696 1612584 5746744 1612768 5746808 -1614552 5745968 1613496 5743096 1614392 5745696 1612768 5746808 -1614392 5745696 1613496 5743096 1612584 5746744 1612768 5746808 -1614552 5745968 1614392 5745696 1612768 5746808 1612960 5746920 -1614392 5745696 1612584 5746744 1612768 5746808 1612960 5746920 -1614552 5745968 1613496 5743096 1614392 5745696 1612960 5746920 -1614552 5745968 1614392 5745696 1612960 5746920 1613520 5747248 -1613496 5743096 1614392 5745696 1614552 5745968 1613544 5743096 -1614392 5745696 1612960 5746920 1614552 5745968 1613544 5743096 -1613496 5743096 1612584 5746744 1614392 5745696 1613544 5743096 -1614552 5745968 1616160 5745400 1613544 5743096 1614392 5745696 -1614552 5745968 1616160 5745400 1614392 5745696 1612960 5746920 -1613544 5743096 1613496 5743096 1614392 5745696 1616160 5745400 -1614552 5745968 1615272 5746320 1616160 5745400 1614392 5745696 -1612584 5746744 1614392 5745696 1613496 5743096 1613416 5743064 -1612584 5746744 1612768 5746808 1614392 5745696 1613416 5743064 -1614392 5745696 1613544 5743096 1613496 5743096 1613416 5743064 -1616160 5745400 1613544 5743064 1613544 5743096 1614392 5745696 -1612584 5746744 1614392 5745696 1613416 5743064 1613368 5743032 -1614392 5745696 1614128 5745040 1612584 5746744 1612768 5746808 -1614392 5745696 1614128 5745040 1612768 5746808 1612960 5746920 -1614392 5745696 1613416 5743064 1614128 5745040 1612768 5746808 -1613416 5743064 1614128 5745040 1614392 5745696 1613496 5743096 -1614392 5745696 1613544 5743096 1613496 5743096 1614128 5745040 -1614392 5745696 1616160 5745400 1613544 5743096 1614128 5745040 -1613544 5743096 1613496 5743096 1614128 5745040 1616160 5745400 -1614128 5745040 1612768 5746808 1614392 5745696 1616160 5745400 -1614392 5745696 1614552 5745968 1616160 5745400 1614128 5745040 -1613496 5743096 1613416 5743064 1614128 5745040 1613544 5743096 -1613416 5743064 1612584 5746744 1614128 5745040 1613496 5743096 -1614128 5745040 1613416 5743064 1612584 5746744 1612768 5746808 -1616160 5745400 1613544 5743064 1613544 5743096 1614128 5745040 -1612584 5746744 1614128 5745040 1613416 5743064 1613368 5743032 -1614128 5745040 1613496 5743096 1613416 5743064 1613368 5743032 -1612584 5746744 1612768 5746808 1614128 5745040 1613368 5743032 -1612584 5746744 1614128 5745040 1613368 5743032 1612512 5746760 -1613368 5743032 1612464 5746776 1612512 5746760 1614128 5745040 -1612584 5746744 1612768 5746808 1614128 5745040 1612512 5746760 -1614128 5745040 1613416 5743064 1613368 5743032 1612512 5746760 -1616160 5745400 1614112 5744704 1614128 5745040 1614392 5745696 -1614128 5745040 1614112 5744704 1613544 5743096 1613496 5743096 -1614128 5745040 1614112 5744704 1613496 5743096 1613416 5743064 -1614112 5744704 1613544 5743096 1613496 5743096 1613416 5743064 -1614128 5745040 1614112 5744704 1613416 5743064 1613368 5743032 -1614112 5744704 1613496 5743096 1613416 5743064 1613368 5743032 -1614128 5745040 1616160 5745400 1614112 5744704 1613368 5743032 -1614112 5744704 1616160 5745400 1613544 5743096 1613496 5743096 -1613544 5743096 1614112 5744704 1616160 5745400 1613544 5743064 -1614128 5745040 1614112 5744704 1613368 5743032 1612512 5746760 -1613368 5743032 1612464 5746776 1612512 5746760 1614112 5744704 -1614112 5744704 1613416 5743064 1613368 5743032 1612512 5746760 -1614128 5745040 1616160 5745400 1614112 5744704 1612512 5746760 -1614128 5745040 1614112 5744704 1612512 5746760 1612584 5746744 -1614128 5745040 1616160 5745400 1614112 5744704 1612584 5746744 -1614128 5745040 1614112 5744704 1612584 5746744 1612768 5746808 -1614112 5744704 1613368 5743032 1612512 5746760 1612584 5746744 -1616160 5745400 1614144 5744672 1614112 5744704 1614128 5745040 -1614144 5744672 1613544 5743096 1614112 5744704 1614128 5745040 -1616160 5745400 1613544 5743096 1614144 5744672 1614128 5745040 -1616160 5745400 1614144 5744672 1614128 5745040 1614392 5745696 -1614112 5744704 1614144 5744672 1613544 5743096 1613496 5743096 -1614112 5744704 1614128 5745040 1614144 5744672 1613496 5743096 -1614144 5744672 1616160 5745400 1613544 5743096 1613496 5743096 -1614112 5744704 1614144 5744672 1613496 5743096 1613416 5743064 -1613544 5743096 1614144 5744672 1616160 5745400 1613544 5743064 -1614144 5744672 1614352 5744672 1613544 5743096 1613496 5743096 -1616160 5745400 1614352 5744672 1614144 5744672 1614128 5745040 -1614144 5744672 1614112 5744704 1614128 5745040 1614352 5744672 -1614352 5744672 1613544 5743096 1614144 5744672 1614112 5744704 -1614128 5745040 1616160 5745400 1614352 5744672 1614112 5744704 -1616160 5745400 1613544 5743096 1614352 5744672 1614128 5745040 -1616160 5745400 1614352 5744672 1614128 5745040 1614392 5745696 -1614352 5744672 1614112 5744704 1614128 5745040 1614392 5745696 -1616160 5745400 1613544 5743096 1614352 5744672 1614392 5745696 -1616160 5745400 1614352 5744672 1614392 5745696 1614552 5745968 -1613544 5743096 1614352 5744672 1616160 5745400 1613544 5743064 -1613544 5743096 1614144 5744672 1614352 5744672 1613544 5743064 -1614352 5744672 1614392 5745696 1616160 5745400 1613544 5743064 -1616160 5745400 1613544 5743040 1613544 5743064 1614352 5744672 -1616160 5745400 1613544 5743040 1614352 5744672 1614392 5745696 -1613544 5743064 1613544 5743096 1614352 5744672 1613544 5743040 -1616160 5745400 1613528 5743008 1613544 5743040 1614352 5744672 -1616160 5745400 1614512 5744696 1614352 5744672 1614392 5745696 -1614512 5744696 1613544 5743040 1614352 5744672 1614392 5745696 -1614352 5744672 1614128 5745040 1614392 5745696 1614512 5744696 -1614352 5744672 1614112 5744704 1614128 5745040 1614512 5744696 -1614352 5744672 1614128 5745040 1614512 5744696 1613544 5743040 -1616160 5745400 1614512 5744696 1614392 5745696 1614552 5745968 -1616160 5745400 1613544 5743040 1614512 5744696 1614392 5745696 -1614392 5745696 1616160 5745400 1614512 5744696 1614128 5745040 -1614352 5744672 1614512 5744696 1613544 5743040 1613544 5743064 -1614352 5744672 1614128 5745040 1614512 5744696 1613544 5743064 -1614512 5744696 1616160 5745400 1613544 5743040 1613544 5743064 -1614352 5744672 1614512 5744696 1613544 5743064 1613544 5743096 -1614352 5744672 1614512 5744696 1613544 5743096 1614144 5744672 -1614352 5744672 1614128 5745040 1614512 5744696 1613544 5743096 -1614512 5744696 1613544 5743040 1613544 5743064 1613544 5743096 -1613544 5743040 1614512 5744696 1616160 5745400 1613528 5743008 -1616160 5745400 1614784 5744800 1614512 5744696 1614392 5745696 -1616160 5745400 1614784 5744800 1614392 5745696 1614552 5745968 -1616160 5745400 1614784 5744800 1614552 5745968 1615272 5746320 -1614784 5744800 1614392 5745696 1614552 5745968 1615272 5746320 -1614552 5745968 1615160 5746336 1615272 5746320 1614784 5744800 -1616160 5745400 1614784 5744800 1615272 5746320 1615480 5746344 -1614784 5744800 1614512 5744696 1614392 5745696 1614552 5745968 -1614784 5744800 1613544 5743040 1614512 5744696 1614392 5745696 -1614512 5744696 1614784 5744800 1613544 5743040 1613544 5743064 -1614512 5744696 1614392 5745696 1614784 5744800 1613544 5743064 -1614784 5744800 1616160 5745400 1613544 5743040 1613544 5743064 -1614512 5744696 1614128 5745040 1614392 5745696 1614784 5744800 -1614512 5744696 1614352 5744672 1614128 5745040 1614784 5744800 -1614392 5745696 1614552 5745968 1614784 5744800 1614128 5745040 -1614512 5744696 1614128 5745040 1614784 5744800 1613544 5743064 -1616160 5745400 1613544 5743040 1614784 5744800 1615272 5746320 -1614512 5744696 1614784 5744800 1613544 5743064 1613544 5743096 -1614512 5744696 1614128 5745040 1614784 5744800 1613544 5743096 -1614784 5744800 1613544 5743040 1613544 5743064 1613544 5743096 -1614512 5744696 1614784 5744800 1613544 5743096 1614352 5744672 -1613544 5743040 1614784 5744800 1616160 5745400 1613528 5743008 -1614784 5744800 1614928 5744824 1613544 5743040 1613544 5743064 -1614784 5744800 1614928 5744824 1613544 5743064 1613544 5743096 -1614928 5744824 1613544 5743040 1613544 5743064 1613544 5743096 -1614784 5744800 1616160 5745400 1614928 5744824 1613544 5743096 -1616160 5745400 1614928 5744824 1614784 5744800 1615272 5746320 -1614784 5744800 1614552 5745968 1615272 5746320 1614928 5744824 -1614784 5744800 1614392 5745696 1614552 5745968 1614928 5744824 -1614552 5745968 1615160 5746336 1615272 5746320 1614928 5744824 -1614552 5745968 1615272 5746320 1614928 5744824 1614392 5745696 -1616160 5745400 1614928 5744824 1615272 5746320 1615480 5746344 -1614784 5744800 1614128 5745040 1614392 5745696 1614928 5744824 -1614928 5744824 1613544 5743096 1614784 5744800 1614392 5745696 -1615272 5746320 1616160 5745400 1614928 5744824 1614552 5745968 -1614928 5744824 1616160 5745400 1613544 5743040 1613544 5743064 -1616160 5745400 1613544 5743040 1614928 5744824 1615272 5746320 -1614784 5744800 1614928 5744824 1613544 5743096 1614512 5744696 -1614928 5744824 1613544 5743064 1613544 5743096 1614512 5744696 -1613544 5743096 1614352 5744672 1614512 5744696 1614928 5744824 -1614784 5744800 1614392 5745696 1614928 5744824 1614512 5744696 -1613544 5743040 1614928 5744824 1616160 5745400 1613528 5743008 -1614928 5744824 1614992 5744816 1613544 5743040 1613544 5743064 -1614928 5744824 1614992 5744816 1613544 5743064 1613544 5743096 -1614928 5744824 1614992 5744816 1613544 5743096 1614512 5744696 -1614992 5744816 1613544 5743064 1613544 5743096 1614512 5744696 -1613544 5743096 1614352 5744672 1614512 5744696 1614992 5744816 -1614992 5744816 1613544 5743040 1613544 5743064 1613544 5743096 -1614928 5744824 1616160 5745400 1614992 5744816 1614512 5744696 -1616160 5745400 1614992 5744816 1614928 5744824 1615272 5746320 -1616160 5745400 1614992 5744816 1615272 5746320 1615480 5746344 -1614928 5744824 1614552 5745968 1615272 5746320 1614992 5744816 -1614552 5745968 1615160 5746336 1615272 5746320 1614992 5744816 -1614928 5744824 1614392 5745696 1614552 5745968 1614992 5744816 -1614992 5744816 1614512 5744696 1614928 5744824 1614552 5745968 -1615272 5746320 1616160 5745400 1614992 5744816 1614552 5745968 -1614992 5744816 1616160 5745400 1613544 5743040 1613544 5743064 -1616160 5745400 1613544 5743040 1614992 5744816 1615272 5746320 -1614928 5744824 1614992 5744816 1614512 5744696 1614784 5744800 -1614992 5744816 1613544 5743096 1614512 5744696 1614784 5744800 -1614928 5744824 1614552 5745968 1614992 5744816 1614784 5744800 -1613544 5743040 1614992 5744816 1616160 5745400 1613528 5743008 -1614992 5744816 1615016 5744760 1613544 5743040 1613544 5743064 -1614992 5744816 1615016 5744760 1613544 5743064 1613544 5743096 -1614992 5744816 1615016 5744760 1613544 5743096 1614512 5744696 -1614992 5744816 1615016 5744760 1614512 5744696 1614784 5744800 -1615016 5744760 1613544 5743096 1614512 5744696 1614784 5744800 -1613544 5743096 1614352 5744672 1614512 5744696 1615016 5744760 -1615016 5744760 1613544 5743064 1613544 5743096 1614512 5744696 -1615016 5744760 1613544 5743040 1613544 5743064 1613544 5743096 -1614992 5744816 1616160 5745400 1615016 5744760 1614784 5744800 -1616160 5745400 1615016 5744760 1614992 5744816 1615272 5746320 -1615016 5744760 1616160 5745400 1613544 5743040 1613544 5743064 -1614992 5744816 1615016 5744760 1614784 5744800 1614928 5744824 -1615016 5744760 1614512 5744696 1614784 5744800 1614928 5744824 -1614992 5744816 1616160 5745400 1615016 5744760 1614928 5744824 -1613544 5743040 1615016 5744760 1616160 5745400 1613528 5743008 -1615016 5744760 1614992 5744816 1616160 5745400 1613528 5743008 -1616160 5745400 1613488 5742960 1613528 5743008 1615016 5744760 -1613544 5743040 1613544 5743064 1615016 5744760 1613528 5743008 -1616160 5745400 1615016 5744456 1615016 5744760 1614992 5744816 -1613528 5743008 1615016 5744456 1616160 5745400 1613488 5742960 -1613528 5743008 1615016 5744760 1615016 5744456 1613488 5742960 -1615016 5744456 1615016 5744760 1616160 5745400 1613488 5742960 -1616160 5745400 1605152 5714944 1613488 5742960 1615016 5744456 -1615016 5744760 1615016 5744456 1613528 5743008 1613544 5743040 -1615016 5744760 1616160 5745400 1615016 5744456 1613544 5743040 -1615016 5744456 1613488 5742960 1613528 5743008 1613544 5743040 -1615016 5744760 1615016 5744456 1613544 5743040 1613544 5743064 -1615016 5744760 1616160 5745400 1615016 5744456 1613544 5743064 -1615016 5744760 1615016 5744456 1613544 5743064 1613544 5743096 -1615016 5744760 1616160 5745400 1615016 5744456 1613544 5743096 -1615016 5744760 1615016 5744456 1613544 5743096 1614512 5744696 -1615016 5744760 1616160 5745400 1615016 5744456 1614512 5744696 -1615016 5744760 1615016 5744456 1614512 5744696 1614784 5744800 -1615016 5744760 1616160 5745400 1615016 5744456 1614784 5744800 -1615016 5744760 1615016 5744456 1614784 5744800 1614928 5744824 -1613544 5743096 1614352 5744672 1614512 5744696 1615016 5744456 -1613544 5743096 1614144 5744672 1614352 5744672 1615016 5744456 -1615016 5744456 1614352 5744672 1614512 5744696 1614784 5744800 -1615016 5744456 1613544 5743064 1613544 5743096 1614352 5744672 -1615016 5744456 1613544 5743040 1613544 5743064 1613544 5743096 -1615016 5744456 1613528 5743008 1613544 5743040 1613544 5743064 -1616160 5745400 1615120 5744376 1613488 5742960 1615016 5744456 -1615120 5744376 1605152 5714944 1613488 5742960 1615016 5744456 -1616160 5745400 1615120 5744376 1615016 5744456 1615016 5744760 -1616160 5745400 1615120 5744376 1615016 5744760 1614992 5744816 -1615120 5744376 1613488 5742960 1615016 5744456 1615016 5744760 -1613488 5742960 1613528 5743008 1615016 5744456 1615120 5744376 -1613528 5743008 1613544 5743040 1615016 5744456 1615120 5744376 -1613488 5742960 1613528 5743008 1615120 5744376 1605152 5714944 -1615016 5744456 1615016 5744760 1615120 5744376 1613544 5743040 -1613528 5743008 1613544 5743040 1615120 5744376 1613488 5742960 -1616160 5745400 1605152 5714944 1615120 5744376 1615016 5744760 -1613488 5742960 1615120 5744376 1605152 5714944 1613432 5742904 -1605152 5714944 1613368 5742856 1613432 5742904 1615120 5744376 -1613488 5742960 1613528 5743008 1615120 5744376 1613432 5742904 -1615120 5744376 1616160 5745400 1605152 5714944 1613432 5742904 -1605152 5714944 1615120 5744376 1616160 5745400 1605152 5714888 -1613544 5743040 1613544 5743064 1615016 5744456 1615120 5744376 -1613544 5743040 1613544 5743064 1615120 5744376 1613528 5743008 -1615016 5744456 1615016 5744760 1615120 5744376 1613544 5743064 -1613544 5743064 1613544 5743096 1615016 5744456 1615120 5744376 -1615016 5744456 1615016 5744760 1615120 5744376 1613544 5743096 -1613544 5743096 1614352 5744672 1615016 5744456 1615120 5744376 -1613544 5743064 1613544 5743096 1615120 5744376 1613544 5743040 -1615120 5744376 1615248 5744352 1605152 5714944 1613432 5742904 -1605152 5714944 1613368 5742856 1613432 5742904 1615248 5744352 -1615120 5744376 1616160 5745400 1615248 5744352 1613432 5742904 -1616160 5745400 1615248 5744352 1615120 5744376 1615016 5744760 -1616160 5745400 1615248 5744352 1615016 5744760 1614992 5744816 -1615120 5744376 1615016 5744456 1615016 5744760 1615248 5744352 -1615248 5744352 1613432 5742904 1615120 5744376 1615016 5744760 -1615248 5744352 1616160 5745400 1605152 5714944 1613432 5742904 -1616160 5745400 1605152 5714944 1615248 5744352 1615016 5744760 -1615120 5744376 1615248 5744352 1613432 5742904 1613488 5742960 -1615120 5744376 1615248 5744352 1613488 5742960 1613528 5743008 -1615248 5744352 1605152 5714944 1613432 5742904 1613488 5742960 -1615120 5744376 1615248 5744352 1613528 5743008 1613544 5743040 -1615120 5744376 1615248 5744352 1613544 5743040 1613544 5743064 -1615248 5744352 1613488 5742960 1613528 5743008 1613544 5743040 -1615120 5744376 1615016 5744760 1615248 5744352 1613544 5743040 -1615248 5744352 1613432 5742904 1613488 5742960 1613528 5743008 -1605152 5714944 1615248 5744352 1616160 5745400 1605152 5714888 -1615248 5744352 1615368 5744400 1605152 5714944 1613432 5742904 -1605152 5714944 1613368 5742856 1613432 5742904 1615368 5744400 -1615248 5744352 1615368 5744400 1613432 5742904 1613488 5742960 -1615368 5744400 1605152 5714944 1613432 5742904 1613488 5742960 -1615248 5744352 1616160 5745400 1615368 5744400 1613488 5742960 -1616160 5745400 1615368 5744400 1615248 5744352 1615016 5744760 -1616160 5745400 1615368 5744400 1615016 5744760 1614992 5744816 -1615248 5744352 1615120 5744376 1615016 5744760 1615368 5744400 -1615120 5744376 1615016 5744456 1615016 5744760 1615368 5744400 -1615368 5744400 1613488 5742960 1615248 5744352 1615120 5744376 -1615016 5744760 1616160 5745400 1615368 5744400 1615120 5744376 -1615368 5744400 1616160 5745400 1605152 5714944 1613432 5742904 -1616160 5745400 1605152 5714944 1615368 5744400 1615016 5744760 -1615248 5744352 1615368 5744400 1613488 5742960 1613528 5743008 -1615248 5744352 1615368 5744400 1613528 5743008 1613544 5743040 -1615368 5744400 1613432 5742904 1613488 5742960 1613528 5743008 -1615248 5744352 1615120 5744376 1615368 5744400 1613528 5743008 -1605152 5714944 1615368 5744400 1616160 5745400 1605152 5714888 -1605152 5714944 1613432 5742904 1615368 5744400 1605152 5714888 -1615368 5744400 1615016 5744760 1616160 5745400 1605152 5714888 -1605152 5714944 1615368 5744400 1605152 5714888 1605136 5714928 -1616160 5745400 1617608 5747096 1605152 5714888 1615368 5744400 -1617608 5747096 1663944 5646256 1605152 5714888 1615368 5744400 -1616160 5745400 1617608 5747096 1615368 5744400 1615016 5744760 -1616160 5745400 1617512 5746992 1617608 5747096 1615368 5744400 -1605152 5714888 1605152 5714944 1615368 5744400 1617608 5747096 -1605152 5714888 1615496 5744536 1617608 5747096 1663944 5646256 -1615368 5744400 1615496 5744536 1605152 5714888 1605152 5714944 -1615368 5744400 1615496 5744536 1605152 5714944 1613432 5742904 -1615368 5744400 1617608 5747096 1615496 5744536 1605152 5714944 -1615496 5744536 1617608 5747096 1605152 5714888 1605152 5714944 -1605152 5714888 1605136 5714928 1605152 5714944 1615496 5744536 -1617608 5747096 1615496 5744536 1615368 5744400 1616160 5745400 -1615496 5744536 1605152 5714944 1615368 5744400 1616160 5745400 -1615368 5744400 1615016 5744760 1616160 5745400 1615496 5744536 -1615016 5744760 1614992 5744816 1616160 5745400 1615496 5744536 -1614992 5744816 1615272 5746320 1616160 5745400 1615496 5744536 -1615368 5744400 1615120 5744376 1615016 5744760 1615496 5744536 -1615368 5744400 1615016 5744760 1615496 5744536 1605152 5714944 -1615016 5744760 1614992 5744816 1615496 5744536 1615368 5744400 -1617608 5747096 1605152 5714888 1615496 5744536 1616160 5745400 -1617608 5747096 1615496 5744536 1616160 5745400 1617512 5746992 -1616160 5745400 1617608 5747096 1615496 5744536 1614992 5744816 -1614992 5744816 1615544 5744608 1615496 5744536 1615016 5744760 -1616160 5745400 1615544 5744608 1614992 5744816 1615272 5746320 -1615496 5744536 1615368 5744400 1615016 5744760 1615544 5744608 -1615544 5744608 1616160 5745400 1615496 5744536 1615016 5744760 -1614992 5744816 1616160 5745400 1615544 5744608 1615016 5744760 -1615496 5744536 1615544 5744608 1616160 5745400 1617608 5747096 -1616160 5745400 1615552 5744704 1614992 5744816 1615272 5746320 -1615544 5744608 1615552 5744704 1616160 5745400 1615496 5744536 -1614992 5744816 1615552 5744704 1615544 5744608 1615016 5744760 -1615544 5744608 1615496 5744536 1615016 5744760 1615552 5744704 -1615496 5744536 1615368 5744400 1615016 5744760 1615552 5744704 -1615552 5744704 1616160 5745400 1615544 5744608 1615496 5744536 -1615016 5744760 1614992 5744816 1615552 5744704 1615496 5744536 -1614992 5744816 1616160 5745400 1615552 5744704 1615016 5744760 -1616160 5745400 1615520 5744752 1614992 5744816 1615272 5746320 -1615520 5744752 1615552 5744704 1614992 5744816 1615272 5746320 -1616160 5745400 1615520 5744752 1615272 5746320 1615480 5746344 -1614992 5744816 1614552 5745968 1615272 5746320 1615520 5744752 -1615552 5744704 1615520 5744752 1616160 5745400 1615544 5744608 -1614992 5744816 1615520 5744752 1615552 5744704 1615016 5744760 -1614992 5744816 1615272 5746320 1615520 5744752 1615016 5744760 -1615552 5744704 1615496 5744536 1615016 5744760 1615520 5744752 -1615552 5744704 1615544 5744608 1615496 5744536 1615520 5744752 -1615496 5744536 1615368 5744400 1615016 5744760 1615520 5744752 -1615496 5744536 1615016 5744760 1615520 5744752 1615544 5744608 -1615520 5744752 1616160 5745400 1615552 5744704 1615544 5744608 -1615016 5744760 1614992 5744816 1615520 5744752 1615496 5744536 -1616160 5745400 1615552 5744704 1615520 5744752 1615272 5746320 -1614992 5744816 1615416 5744816 1615520 5744752 1615016 5744760 -1615416 5744816 1615272 5746320 1615520 5744752 1615016 5744760 -1615272 5746320 1615416 5744816 1614992 5744816 1614552 5745968 -1615520 5744752 1615416 5744816 1615272 5746320 1616160 5745400 -1615520 5744752 1615016 5744760 1615416 5744816 1616160 5745400 -1615272 5746320 1615480 5746344 1616160 5745400 1615416 5744816 -1615416 5744816 1614992 5744816 1615272 5746320 1616160 5745400 -1614992 5744816 1615272 5746320 1615416 5744816 1615016 5744760 -1615520 5744752 1615496 5744536 1615016 5744760 1615416 5744816 -1615520 5744752 1615496 5744536 1615416 5744816 1616160 5745400 -1615016 5744760 1614992 5744816 1615416 5744816 1615496 5744536 -1615496 5744536 1615368 5744400 1615016 5744760 1615416 5744816 -1615016 5744760 1614992 5744816 1615416 5744816 1615368 5744400 -1615368 5744400 1615120 5744376 1615016 5744760 1615416 5744816 -1615520 5744752 1615544 5744608 1615496 5744536 1615416 5744816 -1615496 5744536 1615368 5744400 1615416 5744816 1615520 5744752 -1615520 5744752 1615416 5744816 1616160 5745400 1615552 5744704 -1615272 5746320 1615256 5744856 1614992 5744816 1614552 5745968 -1615272 5746320 1615416 5744816 1615256 5744856 1614552 5745968 -1615272 5746320 1615256 5744856 1614552 5745968 1615160 5746336 -1615256 5744856 1615416 5744816 1614992 5744816 1614552 5745968 -1614992 5744816 1614928 5744824 1614552 5745968 1615256 5744856 -1614928 5744824 1614392 5745696 1614552 5745968 1615256 5744856 -1614928 5744824 1614784 5744800 1614392 5745696 1615256 5744856 -1614992 5744816 1614928 5744824 1615256 5744856 1615416 5744816 -1614928 5744824 1614392 5745696 1615256 5744856 1614992 5744816 -1614552 5745968 1615272 5746320 1615256 5744856 1614392 5745696 -1615416 5744816 1615256 5744856 1615272 5746320 1616160 5745400 -1615256 5744856 1614552 5745968 1615272 5746320 1616160 5745400 -1615272 5746320 1615480 5746344 1616160 5745400 1615256 5744856 -1615416 5744816 1615256 5744856 1616160 5745400 1615520 5744752 -1615416 5744816 1614992 5744816 1615256 5744856 1616160 5745400 -1614992 5744816 1615256 5744856 1615416 5744816 1615016 5744760 -1615416 5744816 1615368 5744400 1615016 5744760 1615256 5744856 -1614992 5744816 1614928 5744824 1615256 5744856 1615016 5744760 -1615368 5744400 1615120 5744376 1615016 5744760 1615256 5744856 -1615368 5744400 1615120 5744376 1615256 5744856 1615416 5744816 -1615120 5744376 1615016 5744456 1615016 5744760 1615256 5744856 -1615368 5744400 1615248 5744352 1615120 5744376 1615256 5744856 -1615416 5744816 1615496 5744536 1615368 5744400 1615256 5744856 -1615368 5744400 1615120 5744376 1615256 5744856 1615496 5744536 -1615256 5744856 1616160 5745400 1615416 5744816 1615496 5744536 -1615016 5744760 1614992 5744816 1615256 5744856 1615120 5744376 -1615416 5744816 1615520 5744752 1615496 5744536 1615256 5744856 -1614392 5745696 1615240 5744880 1615256 5744856 1614928 5744824 -1614392 5745696 1615240 5744880 1614928 5744824 1614784 5744800 -1615240 5744880 1614552 5745968 1615256 5744856 1614928 5744824 -1614392 5745696 1614552 5745968 1615240 5744880 1614928 5744824 -1615256 5744856 1614992 5744816 1614928 5744824 1615240 5744880 -1614928 5744824 1614392 5745696 1615240 5744880 1614992 5744816 -1615256 5744856 1614992 5744816 1615240 5744880 1614552 5745968 -1615256 5744856 1615016 5744760 1614992 5744816 1615240 5744880 -1615256 5744856 1615016 5744760 1615240 5744880 1614552 5745968 -1614992 5744816 1614928 5744824 1615240 5744880 1615016 5744760 -1615256 5744856 1615240 5744880 1614552 5745968 1615272 5746320 -1615256 5744856 1615240 5744880 1615272 5746320 1616160 5745400 -1614552 5745968 1615160 5746336 1615272 5746320 1615240 5744880 -1615272 5746320 1615480 5746344 1616160 5745400 1615240 5744880 -1615256 5744856 1615016 5744760 1615240 5744880 1616160 5745400 -1615240 5744880 1614392 5745696 1614552 5745968 1615272 5746320 -1615240 5744880 1614552 5745968 1615272 5746320 1616160 5745400 -1615256 5744856 1615240 5744880 1616160 5745400 1615416 5744816 -1615256 5744856 1615016 5744760 1615240 5744880 1615416 5744816 -1615240 5744880 1615272 5746320 1616160 5745400 1615416 5744816 -1616160 5745400 1615520 5744752 1615416 5744816 1615240 5744880 -1615256 5744856 1615120 5744376 1615016 5744760 1615240 5744880 -1616160 5745400 1615872 5745184 1615240 5744880 1615272 5746320 -1616160 5745400 1615872 5745184 1615272 5746320 1615480 5746344 -1616160 5745400 1615872 5745184 1615480 5746344 1616232 5745520 -1615872 5745184 1615240 5744880 1615272 5746320 1615480 5746344 -1615872 5745184 1615416 5744816 1615240 5744880 1615272 5746320 -1616160 5745400 1615416 5744816 1615872 5745184 1615480 5746344 -1615240 5744880 1614552 5745968 1615272 5746320 1615872 5745184 -1615416 5744816 1615872 5745184 1616160 5745400 1615520 5744752 -1615416 5744816 1615240 5744880 1615872 5745184 1615520 5744752 -1615872 5745184 1615480 5746344 1616160 5745400 1615520 5744752 -1615240 5744880 1615872 5745184 1615416 5744816 1615256 5744856 -1616160 5745400 1615552 5744704 1615520 5744752 1615872 5745184 -1616160 5745400 1615552 5744704 1615872 5745184 1615480 5746344 -1615520 5744752 1615416 5744816 1615872 5745184 1615552 5744704 -1616160 5745400 1615544 5744608 1615552 5744704 1615872 5745184 -1615552 5744704 1615520 5744752 1615872 5745184 1615544 5744608 -1616160 5745400 1615544 5744608 1615872 5745184 1615480 5746344 -1616160 5745400 1615496 5744536 1615544 5744608 1615872 5745184 -1616160 5745400 1616016 5745272 1615872 5745184 1615480 5746344 -1616160 5745400 1616016 5745272 1615480 5746344 1616232 5745520 -1616160 5745400 1616016 5745272 1616232 5745520 1616216 5745480 -1615872 5745184 1615272 5746320 1615480 5746344 1616016 5745272 -1616016 5745272 1615872 5745184 1615480 5746344 1616232 5745520 -1616160 5745400 1615544 5744608 1616016 5745272 1616232 5745520 -1616016 5745272 1615544 5744608 1615872 5745184 1615480 5746344 -1615480 5746344 1616296 5745864 1616232 5745520 1616016 5745272 -1615544 5744608 1616016 5745272 1616160 5745400 1615496 5744536 -1615872 5745184 1616016 5745272 1615544 5744608 1615552 5744704 -1612512 5746760 1613248 5744440 1613368 5743032 1612464 5746776 -1613368 5743032 1613320 5742984 1612464 5746776 1613248 5744440 -1613320 5742984 1613224 5742856 1612464 5746776 1613248 5744440 -1613224 5742856 1613208 5742808 1612464 5746776 1613248 5744440 -1613224 5742856 1613208 5742808 1613248 5744440 1613320 5742984 -1613320 5742984 1613280 5742928 1613224 5742856 1613248 5744440 -1613224 5742856 1613208 5742808 1613248 5744440 1613280 5742928 -1612464 5746776 1612512 5746760 1613248 5744440 1613208 5742808 -1613320 5742984 1613280 5742928 1613248 5744440 1613368 5743032 -1612512 5746760 1614112 5744704 1613248 5744440 1612464 5746776 -1613368 5743032 1613248 5744440 1614112 5744704 1613416 5743064 -1614112 5744704 1613496 5743096 1613416 5743064 1613248 5744440 -1614112 5744704 1614144 5744672 1613496 5743096 1613248 5744440 -1613496 5743096 1613416 5743064 1613248 5744440 1614144 5744672 -1613416 5743064 1613368 5743032 1613248 5744440 1613496 5743096 -1614144 5744672 1613544 5743096 1613496 5743096 1613248 5744440 -1614144 5744672 1614352 5744672 1613544 5743096 1613248 5744440 -1614144 5744672 1613544 5743096 1613248 5744440 1614112 5744704 -1613496 5743096 1613416 5743064 1613248 5744440 1613544 5743096 -1613208 5742808 1599875 5760125 1612464 5746776 1613248 5744440 -1614112 5744704 1613248 5744440 1612512 5746760 1612584 5746744 -1613248 5744440 1612464 5746776 1612512 5746760 1612584 5746744 -1614112 5744704 1613248 5744440 1612584 5746744 1614128 5745040 -1612584 5746744 1612768 5746808 1614128 5745040 1613248 5744440 -1612768 5746808 1614392 5745696 1614128 5745040 1613248 5744440 -1614128 5745040 1614112 5744704 1613248 5744440 1612768 5746808 -1613248 5744440 1612512 5746760 1612584 5746744 1612768 5746808 -1613248 5744440 1613416 5743064 1613368 5743032 1613320 5742984 -1613248 5744440 1614128 5745040 1614112 5744704 1614144 5744672 -1614128 5745040 1613288 5744456 1613248 5744440 1612768 5746808 -1614128 5745040 1613288 5744456 1612768 5746808 1614392 5745696 -1614128 5745040 1614112 5744704 1613288 5744456 1612768 5746808 -1613248 5744440 1612584 5746744 1612768 5746808 1613288 5744456 -1612768 5746808 1614128 5745040 1613288 5744456 1612584 5746744 -1613248 5744440 1612512 5746760 1612584 5746744 1613288 5744456 -1613248 5744440 1613288 5744456 1614112 5744704 1614144 5744672 -1613248 5744440 1613288 5744456 1614144 5744672 1613544 5743096 -1614144 5744672 1614352 5744672 1613544 5743096 1613288 5744456 -1613288 5744456 1614128 5745040 1614112 5744704 1614144 5744672 -1613248 5744440 1613288 5744456 1613544 5743096 1613496 5743096 -1613288 5744456 1614112 5744704 1614144 5744672 1613544 5743096 -1613288 5744456 1613544 5743096 1613248 5744440 1612584 5746744 -1614128 5745040 1613304 5744472 1612768 5746808 1614392 5745696 -1613288 5744456 1613304 5744472 1614128 5745040 1614112 5744704 -1613288 5744456 1613304 5744472 1614112 5744704 1614144 5744672 -1613288 5744456 1612768 5746808 1613304 5744472 1614144 5744672 -1613304 5744472 1614128 5745040 1614112 5744704 1614144 5744672 -1613304 5744472 1612768 5746808 1614128 5745040 1614112 5744704 -1612768 5746808 1613304 5744472 1613288 5744456 1612584 5746744 -1613304 5744472 1614144 5744672 1613288 5744456 1612584 5746744 -1612768 5746808 1614128 5745040 1613304 5744472 1612584 5746744 -1613288 5744456 1613248 5744440 1612584 5746744 1613304 5744472 -1613288 5744456 1613248 5744440 1613304 5744472 1614144 5744672 -1612584 5746744 1612768 5746808 1613304 5744472 1613248 5744440 -1613248 5744440 1612512 5746760 1612584 5746744 1613304 5744472 -1613288 5744456 1613304 5744472 1614144 5744672 1613544 5743096 -1614128 5745040 1613352 5744536 1612768 5746808 1614392 5745696 -1613304 5744472 1613352 5744536 1614128 5745040 1614112 5744704 -1613304 5744472 1613352 5744536 1614112 5744704 1614144 5744672 -1613304 5744472 1613352 5744536 1614144 5744672 1613288 5744456 -1613352 5744536 1614128 5745040 1614112 5744704 1614144 5744672 -1613304 5744472 1612768 5746808 1613352 5744536 1614144 5744672 -1612768 5746808 1613352 5744536 1613304 5744472 1612584 5746744 -1612768 5746808 1614128 5745040 1613352 5744536 1612584 5746744 -1613352 5744536 1614144 5744672 1613304 5744472 1612584 5746744 -1613352 5744536 1612768 5746808 1614128 5745040 1614112 5744704 -1613304 5744472 1613248 5744440 1612584 5746744 1613352 5744536 -1613304 5744472 1613248 5744440 1613352 5744536 1614144 5744672 -1612584 5746744 1612768 5746808 1613352 5744536 1613248 5744440 -1613304 5744472 1613288 5744456 1613248 5744440 1613352 5744536 -1613248 5744440 1612512 5746760 1612584 5746744 1613352 5744536 -1614128 5745040 1613392 5744600 1612768 5746808 1614392 5745696 -1612768 5746808 1613392 5744600 1613352 5744536 1612584 5746744 -1613392 5744600 1614128 5745040 1613352 5744536 1612584 5746744 -1612768 5746808 1614128 5745040 1613392 5744600 1612584 5746744 -1613352 5744536 1613248 5744440 1612584 5746744 1613392 5744600 -1613352 5744536 1613248 5744440 1613392 5744600 1614128 5745040 -1612584 5746744 1612768 5746808 1613392 5744600 1613248 5744440 -1613352 5744536 1613392 5744600 1614128 5745040 1614112 5744704 -1613352 5744536 1613248 5744440 1613392 5744600 1614112 5744704 -1613392 5744600 1612768 5746808 1614128 5745040 1614112 5744704 -1613352 5744536 1613392 5744600 1614112 5744704 1614144 5744672 -1613352 5744536 1613248 5744440 1613392 5744600 1614144 5744672 -1613392 5744600 1614128 5745040 1614112 5744704 1614144 5744672 -1613352 5744536 1613392 5744600 1614144 5744672 1613304 5744472 -1613352 5744536 1613304 5744472 1613248 5744440 1613392 5744600 -1613248 5744440 1612512 5746760 1612584 5746744 1613392 5744600 -1614128 5745040 1613416 5744640 1612768 5746808 1614392 5745696 -1613392 5744600 1613416 5744640 1614128 5745040 1614112 5744704 -1613392 5744600 1613416 5744640 1614112 5744704 1614144 5744672 -1612768 5746808 1613416 5744640 1613392 5744600 1612584 5746744 -1613392 5744600 1613248 5744440 1612584 5746744 1613416 5744640 -1612584 5746744 1612768 5746808 1613416 5744640 1613248 5744440 -1613392 5744600 1613248 5744440 1613416 5744640 1614112 5744704 -1613416 5744640 1612768 5746808 1614128 5745040 1614112 5744704 -1612768 5746808 1614128 5745040 1613416 5744640 1612584 5746744 -1613392 5744600 1613352 5744536 1613248 5744440 1613416 5744640 -1613248 5744440 1612512 5746760 1612584 5746744 1613416 5744640 -1614128 5745040 1613432 5744704 1612768 5746808 1614392 5745696 -1612768 5746808 1612960 5746920 1614392 5745696 1613432 5744704 -1613416 5744640 1613432 5744704 1614128 5745040 1614112 5744704 -1613416 5744640 1613432 5744704 1614112 5744704 1613392 5744600 -1613416 5744640 1612768 5746808 1613432 5744704 1614112 5744704 -1612768 5746808 1613432 5744704 1613416 5744640 1612584 5746744 -1613416 5744640 1613248 5744440 1612584 5746744 1613432 5744704 -1613416 5744640 1613392 5744600 1613248 5744440 1613432 5744704 -1613248 5744440 1612584 5746744 1613432 5744704 1613392 5744600 -1613432 5744704 1614112 5744704 1613416 5744640 1613392 5744600 -1612584 5746744 1612768 5746808 1613432 5744704 1613248 5744440 -1614128 5745040 1614112 5744704 1613432 5744704 1614392 5745696 -1613392 5744600 1613352 5744536 1613248 5744440 1613432 5744704 -1613248 5744440 1612512 5746760 1612584 5746744 1613432 5744704 -1613248 5744440 1612512 5746760 1613432 5744704 1613392 5744600 -1612584 5746744 1612768 5746808 1613432 5744704 1612512 5746760 -1613248 5744440 1612464 5746776 1612512 5746760 1613432 5744704 -1613432 5744704 1612584 5746744 1612768 5746808 1614392 5745696 -1614392 5745696 1613464 5744784 1612768 5746808 1612960 5746920 -1613432 5744704 1613464 5744784 1614392 5745696 1614128 5745040 -1613432 5744704 1613464 5744784 1614128 5745040 1614112 5744704 -1613464 5744784 1614392 5745696 1614128 5745040 1614112 5744704 -1613432 5744704 1613464 5744784 1614112 5744704 1613416 5744640 -1613432 5744704 1612768 5746808 1613464 5744784 1614112 5744704 -1612768 5746808 1613464 5744784 1613432 5744704 1612584 5746744 -1613432 5744704 1612512 5746760 1612584 5746744 1613464 5744784 -1613432 5744704 1613248 5744440 1612512 5746760 1613464 5744784 -1613432 5744704 1613392 5744600 1613248 5744440 1613464 5744784 -1612512 5746760 1612584 5746744 1613464 5744784 1613248 5744440 -1613248 5744440 1612464 5746776 1612512 5746760 1613464 5744784 -1613464 5744784 1614112 5744704 1613432 5744704 1613248 5744440 -1612584 5746744 1612768 5746808 1613464 5744784 1612512 5746760 -1613464 5744784 1612768 5746808 1614392 5745696 1614128 5745040 -1612768 5746808 1614392 5745696 1613464 5744784 1612584 5746744 -1614392 5745696 1613464 5744832 1612768 5746808 1612960 5746920 -1613464 5744784 1613464 5744832 1614392 5745696 1614128 5745040 -1613464 5744784 1613464 5744832 1614128 5745040 1614112 5744704 -1613464 5744784 1612768 5746808 1613464 5744832 1614112 5744704 -1613464 5744832 1614392 5745696 1614128 5745040 1614112 5744704 -1613464 5744784 1613464 5744832 1614112 5744704 1613432 5744704 -1612768 5746808 1613464 5744832 1613464 5744784 1612584 5746744 -1613464 5744832 1614112 5744704 1613464 5744784 1612584 5746744 -1613464 5744784 1612512 5746760 1612584 5746744 1613464 5744832 -1613464 5744784 1613248 5744440 1612512 5746760 1613464 5744832 -1613464 5744784 1613248 5744440 1613464 5744832 1614112 5744704 -1613248 5744440 1612464 5746776 1612512 5746760 1613464 5744832 -1613464 5744784 1613432 5744704 1613248 5744440 1613464 5744832 -1613432 5744704 1613392 5744600 1613248 5744440 1613464 5744832 -1613248 5744440 1612512 5746760 1613464 5744832 1613432 5744704 -1613464 5744784 1613432 5744704 1613464 5744832 1614112 5744704 -1612512 5746760 1612584 5746744 1613464 5744832 1613248 5744440 -1612584 5746744 1612768 5746808 1613464 5744832 1612512 5746760 -1613464 5744832 1612768 5746808 1614392 5745696 1614128 5745040 -1612768 5746808 1614392 5745696 1613464 5744832 1612584 5746744 -1613248 5744440 1613408 5744872 1613464 5744832 1613432 5744704 -1613248 5744440 1613408 5744872 1613432 5744704 1613392 5744600 -1613432 5744704 1613416 5744640 1613392 5744600 1613408 5744872 -1613408 5744872 1613464 5744832 1613432 5744704 1613392 5744600 -1613248 5744440 1612512 5746760 1613408 5744872 1613392 5744600 -1613248 5744440 1613408 5744872 1613392 5744600 1613352 5744536 -1613408 5744872 1613432 5744704 1613392 5744600 1613352 5744536 -1613248 5744440 1612512 5746760 1613408 5744872 1613352 5744536 -1612512 5746760 1613408 5744872 1613248 5744440 1612464 5746776 -1612512 5746760 1613464 5744832 1613408 5744872 1612464 5746776 -1613408 5744872 1613352 5744536 1613248 5744440 1612464 5746776 -1613248 5744440 1613208 5742808 1612464 5746776 1613408 5744872 -1613248 5744440 1613408 5744872 1613352 5744536 1613304 5744472 -1613464 5744832 1613464 5744784 1613432 5744704 1613408 5744872 -1613432 5744704 1613392 5744600 1613408 5744872 1613464 5744784 -1613464 5744832 1613408 5744872 1612512 5746760 1612584 5746744 -1613408 5744872 1612464 5746776 1612512 5746760 1612584 5746744 -1613464 5744832 1613408 5744872 1612584 5746744 1612768 5746808 -1613408 5744872 1612512 5746760 1612584 5746744 1612768 5746808 -1613408 5744872 1612768 5746808 1613464 5744832 1613464 5744784 -1613464 5744832 1613408 5744872 1612768 5746808 1614392 5745696 -1612768 5746808 1612960 5746920 1614392 5745696 1613408 5744872 -1613408 5744872 1612584 5746744 1612768 5746808 1614392 5745696 -1613464 5744832 1613408 5744872 1614392 5745696 1614128 5745040 -1613408 5744872 1612768 5746808 1614392 5745696 1614128 5745040 -1613464 5744832 1613408 5744872 1614128 5745040 1614112 5744704 -1613464 5744832 1613464 5744784 1613408 5744872 1614128 5745040 -1613248 5744440 1613376 5744872 1613408 5744872 1613352 5744536 -1613376 5744872 1612464 5746776 1613408 5744872 1613352 5744536 -1613248 5744440 1612464 5746776 1613376 5744872 1613352 5744536 -1613408 5744872 1613392 5744600 1613352 5744536 1613376 5744872 -1613408 5744872 1613432 5744704 1613392 5744600 1613376 5744872 -1613432 5744704 1613416 5744640 1613392 5744600 1613376 5744872 -1613408 5744872 1613464 5744784 1613432 5744704 1613376 5744872 -1613432 5744704 1613392 5744600 1613376 5744872 1613464 5744784 -1613352 5744536 1613248 5744440 1613376 5744872 1613392 5744600 -1613408 5744872 1613464 5744784 1613376 5744872 1612464 5746776 -1613392 5744600 1613352 5744536 1613376 5744872 1613432 5744704 -1612464 5746776 1613376 5744872 1613248 5744440 1613208 5742808 -1613408 5744872 1613376 5744872 1612464 5746776 1612512 5746760 -1613408 5744872 1613376 5744872 1612512 5746760 1612584 5746744 -1613408 5744872 1613464 5744784 1613376 5744872 1612584 5746744 -1613376 5744872 1613248 5744440 1612464 5746776 1612512 5746760 -1613376 5744872 1612464 5746776 1612512 5746760 1612584 5746744 -1613248 5744440 1613376 5744872 1613352 5744536 1613304 5744472 -1613408 5744872 1613464 5744832 1613464 5744784 1613376 5744872 -1613408 5744872 1613376 5744872 1612584 5746744 1612768 5746808 -1613376 5744872 1612512 5746760 1612584 5746744 1612768 5746808 -1613408 5744872 1613464 5744784 1613376 5744872 1612768 5746808 -1613408 5744872 1613376 5744872 1612768 5746808 1614392 5745696 -1612768 5746808 1612960 5746920 1614392 5745696 1613376 5744872 -1613408 5744872 1613376 5744872 1614392 5745696 1614128 5745040 -1613408 5744872 1613464 5744784 1613376 5744872 1614392 5745696 -1613376 5744872 1612584 5746744 1612768 5746808 1614392 5745696 -1613376 5744872 1613344 5744856 1612464 5746776 1612512 5746760 -1613344 5744856 1613248 5744440 1612464 5746776 1612512 5746760 -1613376 5744872 1613248 5744440 1613344 5744856 1612512 5746760 -1613248 5744440 1613344 5744856 1613376 5744872 1613352 5744536 -1613248 5744440 1612464 5746776 1613344 5744856 1613352 5744536 -1613376 5744872 1613392 5744600 1613352 5744536 1613344 5744856 -1613344 5744856 1612512 5746760 1613376 5744872 1613392 5744600 -1613352 5744536 1613248 5744440 1613344 5744856 1613392 5744600 -1613376 5744872 1613432 5744704 1613392 5744600 1613344 5744856 -1613432 5744704 1613416 5744640 1613392 5744600 1613344 5744856 -1613376 5744872 1613464 5744784 1613432 5744704 1613344 5744856 -1613376 5744872 1613408 5744872 1613464 5744784 1613344 5744856 -1613392 5744600 1613352 5744536 1613344 5744856 1613416 5744640 -1613376 5744872 1613464 5744784 1613344 5744856 1612512 5746760 -1613432 5744704 1613416 5744640 1613344 5744856 1613464 5744784 -1612464 5746776 1613344 5744856 1613248 5744440 1613208 5742808 -1613376 5744872 1613344 5744856 1612512 5746760 1612584 5746744 -1613376 5744872 1613344 5744856 1612584 5746744 1612768 5746808 -1613344 5744856 1612464 5746776 1612512 5746760 1612584 5746744 -1613376 5744872 1613464 5744784 1613344 5744856 1612584 5746744 -1613248 5744440 1613344 5744856 1613352 5744536 1613304 5744472 -1613344 5744856 1613320 5744824 1612464 5746776 1612512 5746760 -1613344 5744856 1613248 5744440 1613320 5744824 1612512 5746760 -1613248 5744440 1613320 5744824 1613344 5744856 1613352 5744536 -1613320 5744824 1612512 5746760 1613344 5744856 1613352 5744536 -1613320 5744824 1613248 5744440 1612464 5746776 1612512 5746760 -1613248 5744440 1612464 5746776 1613320 5744824 1613352 5744536 -1613344 5744856 1613320 5744824 1612512 5746760 1612584 5746744 -1613320 5744824 1612464 5746776 1612512 5746760 1612584 5746744 -1613344 5744856 1613352 5744536 1613320 5744824 1612584 5746744 -1613344 5744856 1613392 5744600 1613352 5744536 1613320 5744824 -1613344 5744856 1613392 5744600 1613320 5744824 1612584 5746744 -1613352 5744536 1613248 5744440 1613320 5744824 1613392 5744600 -1613344 5744856 1613416 5744640 1613392 5744600 1613320 5744824 -1613344 5744856 1613416 5744640 1613320 5744824 1612584 5746744 -1613344 5744856 1613432 5744704 1613416 5744640 1613320 5744824 -1613344 5744856 1613432 5744704 1613320 5744824 1612584 5746744 -1613416 5744640 1613392 5744600 1613320 5744824 1613432 5744704 -1613392 5744600 1613352 5744536 1613320 5744824 1613416 5744640 -1613344 5744856 1613464 5744784 1613432 5744704 1613320 5744824 -1613344 5744856 1613464 5744784 1613320 5744824 1612584 5746744 -1613432 5744704 1613416 5744640 1613320 5744824 1613464 5744784 -1613344 5744856 1613376 5744872 1613464 5744784 1613320 5744824 -1612464 5746776 1613320 5744824 1613248 5744440 1613208 5742808 -1613344 5744856 1613320 5744824 1612584 5746744 1613376 5744872 -1613248 5744440 1613320 5744824 1613352 5744536 1613304 5744472 -1613320 5744824 1613280 5744752 1612464 5746776 1612512 5746760 -1613320 5744824 1613280 5744752 1612512 5746760 1612584 5746744 -1613320 5744824 1613248 5744440 1613280 5744752 1612512 5746760 -1613248 5744440 1613280 5744752 1613320 5744824 1613352 5744536 -1613320 5744824 1613392 5744600 1613352 5744536 1613280 5744752 -1613280 5744752 1612512 5746760 1613320 5744824 1613392 5744600 -1613352 5744536 1613248 5744440 1613280 5744752 1613392 5744600 -1613280 5744752 1613248 5744440 1612464 5746776 1612512 5746760 -1613320 5744824 1613416 5744640 1613392 5744600 1613280 5744752 -1613392 5744600 1613352 5744536 1613280 5744752 1613416 5744640 -1613320 5744824 1613416 5744640 1613280 5744752 1612512 5746760 -1613320 5744824 1613432 5744704 1613416 5744640 1613280 5744752 -1613320 5744824 1613432 5744704 1613280 5744752 1612512 5746760 -1613320 5744824 1613464 5744784 1613432 5744704 1613280 5744752 -1613416 5744640 1613392 5744600 1613280 5744752 1613432 5744704 -1612464 5746776 1613280 5744752 1613248 5744440 1613208 5742808 -1613248 5744440 1612464 5746776 1613280 5744752 1613352 5744536 -1613248 5744440 1613280 5744752 1613352 5744536 1613304 5744472 -1613280 5744752 1613392 5744600 1613352 5744536 1613304 5744472 -1613248 5744440 1613280 5744752 1613304 5744472 1613288 5744456 -1613248 5744440 1612464 5746776 1613280 5744752 1613304 5744472 -1613280 5744752 1613248 5744688 1612464 5746776 1612512 5746760 -1612464 5746776 1613248 5744688 1613248 5744440 1613208 5742808 -1613248 5744440 1613248 5744688 1613280 5744752 1613304 5744472 -1613248 5744688 1612464 5746776 1613280 5744752 1613304 5744472 -1613248 5744440 1613248 5744688 1613304 5744472 1613288 5744456 -1613248 5744440 1612464 5746776 1613248 5744688 1613304 5744472 -1613280 5744752 1613352 5744536 1613304 5744472 1613248 5744688 -1613280 5744752 1613392 5744600 1613352 5744536 1613248 5744688 -1613280 5744752 1613416 5744640 1613392 5744600 1613248 5744688 -1613392 5744600 1613352 5744536 1613248 5744688 1613416 5744640 -1613280 5744752 1613416 5744640 1613248 5744688 1612464 5746776 -1613280 5744752 1613432 5744704 1613416 5744640 1613248 5744688 -1613304 5744472 1613248 5744440 1613248 5744688 1613352 5744536 -1613352 5744536 1613304 5744472 1613248 5744688 1613392 5744600 -1605152 5714888 1609320 5714928 1663944 5646256 1605128 5714784 -1663944 5646256 1609320 5714928 1617608 5747096 1617712 5747256 -1617608 5747096 1609320 5714928 1605152 5714888 1615496 5744536 -1605152 5714888 1615496 5744536 1609320 5714928 1605128 5714784 -1605152 5714888 1605152 5714944 1615496 5744536 1609320 5714928 -1615496 5744536 1617608 5747096 1609320 5714928 1605152 5714944 -1605152 5714888 1605152 5714944 1609320 5714928 1605128 5714784 -1617608 5747096 1609320 5714928 1615496 5744536 1616160 5745400 -1663944 5646256 1609320 5714928 1617712 5747256 1743800 5687320 -1609320 5714928 1617712 5747256 1663944 5646256 1605128 5714784 -1609320 5714928 1615496 5744536 1617608 5747096 1617712 5747256 -1663944 5646256 1663880 5646248 1605128 5714784 1609320 5714928 -1605128 5714784 1605152 5714888 1609320 5714928 1663880 5646248 -1663880 5646248 1605040 5714624 1605128 5714784 1609320 5714928 -1605128 5714784 1605152 5714888 1609320 5714928 1605040 5714624 -1663880 5646248 1604944 5714528 1605040 5714624 1609320 5714928 -1605040 5714624 1605128 5714784 1609320 5714928 1604944 5714528 -1663880 5646248 1663776 5646144 1604944 5714528 1609320 5714928 -1604944 5714528 1605040 5714624 1609320 5714928 1663776 5646144 -1663944 5646256 1663880 5646248 1609320 5714928 1617712 5747256 -1663880 5646248 1663776 5646144 1609320 5714928 1663944 5646256 -1605152 5714944 1615368 5744400 1615496 5744536 1609320 5714928 -1615496 5744536 1617608 5747096 1609320 5714928 1615368 5744400 -1605152 5714944 1613432 5742904 1615368 5744400 1609320 5714928 -1605152 5714944 1613368 5742856 1613432 5742904 1609320 5714928 -1605152 5714944 1613280 5742808 1613368 5742856 1609320 5714928 -1613368 5742856 1613432 5742904 1609320 5714928 1613280 5742808 -1613432 5742904 1613488 5742960 1615368 5744400 1609320 5714928 -1613432 5742904 1615368 5744400 1609320 5714928 1613368 5742856 -1605152 5714944 1613280 5742808 1609320 5714928 1605152 5714888 -1605152 5714944 1613208 5742808 1613280 5742808 1609320 5714928 -1605152 5714944 1605064 5714952 1613208 5742808 1609320 5714928 -1613280 5742808 1613368 5742856 1609320 5714928 1613208 5742808 -1605152 5714944 1613208 5742808 1609320 5714928 1605152 5714888 -1615368 5744400 1615496 5744536 1609320 5714928 1613432 5742904 -1605152 5714888 1605136 5714928 1605152 5714944 1609320 5714928 -1663776 5646144 1657088 5639464 1604944 5714528 1609320 5714928 -1657088 5639464 1604840 5714480 1604944 5714528 1609320 5714928 -1604944 5714528 1605040 5714624 1609320 5714928 1604840 5714480 -1657088 5639464 1657056 5639384 1604840 5714480 1609320 5714928 -1663776 5646144 1657088 5639464 1609320 5714928 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1609320 5714928 -1657088 5639464 1604840 5714480 1609320 5714928 1663776 5646144 -1609320 5714928 1609352 5714856 1604840 5714480 1604944 5714528 -1609352 5714856 1657088 5639464 1604840 5714480 1604944 5714528 -1609320 5714928 1609352 5714856 1604944 5714528 1605040 5714624 -1609352 5714856 1604840 5714480 1604944 5714528 1605040 5714624 -1609320 5714928 1609352 5714856 1605040 5714624 1605128 5714784 -1609320 5714928 1609352 5714856 1605128 5714784 1605152 5714888 -1609352 5714856 1604944 5714528 1605040 5714624 1605128 5714784 -1604840 5714480 1609352 5714856 1657088 5639464 1657056 5639384 -1609320 5714928 1657088 5639464 1609352 5714856 1605128 5714784 -1657088 5639464 1609352 5714856 1609320 5714928 1663776 5646144 -1609352 5714856 1605128 5714784 1609320 5714928 1663776 5646144 -1657088 5639464 1604840 5714480 1609352 5714856 1663776 5646144 -1609320 5714928 1663880 5646248 1663776 5646144 1609352 5714856 -1609320 5714928 1663880 5646248 1609352 5714856 1605128 5714784 -1657088 5639464 1609352 5714856 1663776 5646144 1663688 5645984 -1609320 5714928 1663944 5646256 1663880 5646248 1609352 5714856 -1609320 5714928 1663944 5646256 1609352 5714856 1605128 5714784 -1663880 5646248 1663776 5646144 1609352 5714856 1663944 5646256 -1609320 5714928 1617712 5747256 1663944 5646256 1609352 5714856 -1609320 5714928 1617608 5747096 1617712 5747256 1609352 5714856 -1609320 5714928 1617608 5747096 1609352 5714856 1605128 5714784 -1617712 5747256 1743800 5687320 1663944 5646256 1609352 5714856 -1617712 5747256 1663944 5646256 1609352 5714856 1617608 5747096 -1609320 5714928 1615496 5744536 1617608 5747096 1609352 5714856 -1617608 5747096 1617712 5747256 1609352 5714856 1615496 5744536 -1609320 5714928 1615368 5744400 1615496 5744536 1609352 5714856 -1609320 5714928 1615368 5744400 1609352 5714856 1605128 5714784 -1615496 5744536 1616160 5745400 1617608 5747096 1609352 5714856 -1615496 5744536 1617608 5747096 1609352 5714856 1615368 5744400 -1663944 5646256 1663880 5646248 1609352 5714856 1617712 5747256 -1609320 5714928 1613432 5742904 1615368 5744400 1609352 5714856 -1663776 5646144 1657088 5639464 1609352 5714856 1663880 5646248 -1609352 5714856 1609368 5714824 1604840 5714480 1604944 5714528 -1609352 5714856 1609368 5714824 1604944 5714528 1605040 5714624 -1609368 5714824 1604840 5714480 1604944 5714528 1605040 5714624 -1609352 5714856 1609368 5714824 1605040 5714624 1605128 5714784 -1609368 5714824 1604944 5714528 1605040 5714624 1605128 5714784 -1609352 5714856 1609368 5714824 1605128 5714784 1609320 5714928 -1604840 5714480 1609368 5714824 1657088 5639464 1657056 5639384 -1657088 5639464 1609368 5714824 1609352 5714856 1663776 5646144 -1609352 5714856 1663776 5646144 1609368 5714824 1605128 5714784 -1609368 5714824 1657088 5639464 1604840 5714480 1604944 5714528 -1657088 5639464 1609368 5714824 1663776 5646144 1663688 5645984 -1609352 5714856 1663880 5646248 1663776 5646144 1609368 5714824 -1663776 5646144 1657088 5639464 1609368 5714824 1663880 5646248 -1609352 5714856 1663880 5646248 1609368 5714824 1605128 5714784 -1609352 5714856 1663944 5646256 1663880 5646248 1609368 5714824 -1609352 5714856 1663944 5646256 1609368 5714824 1605128 5714784 -1609352 5714856 1617712 5747256 1663944 5646256 1609368 5714824 -1609352 5714856 1617712 5747256 1609368 5714824 1605128 5714784 -1663944 5646256 1663880 5646248 1609368 5714824 1617712 5747256 -1617712 5747256 1743800 5687320 1663944 5646256 1609368 5714824 -1609352 5714856 1617608 5747096 1617712 5747256 1609368 5714824 -1609352 5714856 1615496 5744536 1617608 5747096 1609368 5714824 -1609352 5714856 1615496 5744536 1609368 5714824 1605128 5714784 -1615496 5744536 1616160 5745400 1617608 5747096 1609368 5714824 -1617608 5747096 1617712 5747256 1609368 5714824 1615496 5744536 -1609352 5714856 1615368 5744400 1615496 5744536 1609368 5714824 -1615496 5744536 1617608 5747096 1609368 5714824 1615368 5744400 -1609352 5714856 1609320 5714928 1615368 5744400 1609368 5714824 -1609352 5714856 1609320 5714928 1609368 5714824 1605128 5714784 -1615368 5744400 1615496 5744536 1609368 5714824 1609320 5714928 -1617712 5747256 1663944 5646256 1609368 5714824 1617608 5747096 -1609320 5714928 1613432 5742904 1615368 5744400 1609368 5714824 -1663880 5646248 1663776 5646144 1609368 5714824 1663944 5646256 -1657088 5639464 1604840 5714480 1609368 5714824 1663776 5646144 -1604840 5714480 1609408 5714752 1657088 5639464 1657056 5639384 -1609368 5714824 1609408 5714752 1604840 5714480 1604944 5714528 -1609368 5714824 1609408 5714752 1604944 5714528 1605040 5714624 -1609368 5714824 1609408 5714752 1605040 5714624 1605128 5714784 -1609408 5714752 1604944 5714528 1605040 5714624 1605128 5714784 -1609368 5714824 1609408 5714752 1605128 5714784 1609352 5714856 -1609408 5714752 1604840 5714480 1604944 5714528 1605040 5714624 -1609368 5714824 1657088 5639464 1609408 5714752 1605128 5714784 -1657088 5639464 1609408 5714752 1609368 5714824 1663776 5646144 -1609368 5714824 1663880 5646248 1663776 5646144 1609408 5714752 -1657088 5639464 1609408 5714752 1663776 5646144 1663688 5645984 -1657088 5639464 1604840 5714480 1609408 5714752 1663776 5646144 -1609368 5714824 1663944 5646256 1663880 5646248 1609408 5714752 -1663880 5646248 1663776 5646144 1609408 5714752 1663944 5646256 -1609368 5714824 1617712 5747256 1663944 5646256 1609408 5714752 -1617712 5747256 1743800 5687320 1663944 5646256 1609408 5714752 -1609368 5714824 1617608 5747096 1617712 5747256 1609408 5714752 -1617712 5747256 1663944 5646256 1609408 5714752 1617608 5747096 -1609368 5714824 1615496 5744536 1617608 5747096 1609408 5714752 -1609368 5714824 1615368 5744400 1615496 5744536 1609408 5714752 -1615496 5744536 1616160 5745400 1617608 5747096 1609408 5714752 -1615496 5744536 1617608 5747096 1609408 5714752 1615368 5744400 -1609368 5714824 1609320 5714928 1615368 5744400 1609408 5714752 -1615368 5744400 1615496 5744536 1609408 5714752 1609320 5714928 -1609368 5714824 1609352 5714856 1609320 5714928 1609408 5714752 -1617608 5747096 1617712 5747256 1609408 5714752 1615496 5744536 -1609320 5714928 1613432 5742904 1615368 5744400 1609408 5714752 -1663944 5646256 1663880 5646248 1609408 5714752 1617712 5747256 -1609408 5714752 1605128 5714784 1609368 5714824 1609320 5714928 -1663776 5646144 1657088 5639464 1609408 5714752 1663880 5646248 -1609408 5714752 1657088 5639464 1604840 5714480 1604944 5714528 -1617712 5747256 1609432 5714744 1609408 5714752 1617608 5747096 -1617712 5747256 1663944 5646256 1609432 5714744 1617608 5747096 -1663944 5646256 1609432 5714744 1617712 5747256 1743800 5687320 -1609432 5714744 1663944 5646256 1609408 5714752 1617608 5747096 -1609408 5714752 1615496 5744536 1617608 5747096 1609432 5714744 -1617608 5747096 1617712 5747256 1609432 5714744 1615496 5744536 -1615496 5744536 1616160 5745400 1617608 5747096 1609432 5714744 -1609408 5714752 1615368 5744400 1615496 5744536 1609432 5714744 -1609408 5714752 1609320 5714928 1615368 5744400 1609432 5714744 -1615368 5744400 1615496 5744536 1609432 5714744 1609320 5714928 -1609408 5714752 1609368 5714824 1609320 5714928 1609432 5714744 -1609320 5714928 1615368 5744400 1609432 5714744 1609368 5714824 -1609368 5714824 1609352 5714856 1609320 5714928 1609432 5714744 -1609320 5714928 1615368 5744400 1609432 5714744 1609352 5714856 -1609368 5714824 1609352 5714856 1609432 5714744 1609408 5714752 -1609408 5714752 1609368 5714824 1609432 5714744 1663944 5646256 -1615496 5744536 1617608 5747096 1609432 5714744 1615368 5744400 -1609320 5714928 1613432 5742904 1615368 5744400 1609432 5714744 -1609408 5714752 1609432 5714744 1663944 5646256 1663880 5646248 -1609408 5714752 1609432 5714744 1663880 5646248 1663776 5646144 -1609408 5714752 1609368 5714824 1609432 5714744 1663776 5646144 -1609432 5714744 1617712 5747256 1663944 5646256 1663880 5646248 -1609432 5714744 1663944 5646256 1663880 5646248 1663776 5646144 -1609408 5714752 1609432 5714744 1663776 5646144 1657088 5639464 -1609432 5714744 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1609432 5714744 -1609408 5714752 1609368 5714824 1609432 5714744 1657088 5639464 -1609408 5714752 1609432 5714744 1657088 5639464 1604840 5714480 -1657088 5639464 1657056 5639384 1604840 5714480 1609432 5714744 -1609408 5714752 1609368 5714824 1609432 5714744 1604840 5714480 -1609432 5714744 1663776 5646144 1657088 5639464 1604840 5714480 -1609408 5714752 1609432 5714744 1604840 5714480 1604944 5714528 -1617712 5747256 1609480 5714768 1609432 5714744 1617608 5747096 -1609480 5714768 1663944 5646256 1609432 5714744 1617608 5747096 -1609432 5714744 1615496 5744536 1617608 5747096 1609480 5714768 -1609432 5714744 1615496 5744536 1609480 5714768 1663944 5646256 -1617608 5747096 1617712 5747256 1609480 5714768 1615496 5744536 -1615496 5744536 1616160 5745400 1617608 5747096 1609480 5714768 -1663944 5646256 1609480 5714768 1617712 5747256 1743800 5687320 -1609432 5714744 1609480 5714768 1663944 5646256 1663880 5646248 -1609432 5714744 1615496 5744536 1609480 5714768 1663880 5646248 -1609480 5714768 1617712 5747256 1663944 5646256 1663880 5646248 -1609432 5714744 1615368 5744400 1615496 5744536 1609480 5714768 -1609432 5714744 1615368 5744400 1609480 5714768 1663880 5646248 -1615496 5744536 1617608 5747096 1609480 5714768 1615368 5744400 -1609432 5714744 1609320 5714928 1615368 5744400 1609480 5714768 -1609432 5714744 1609320 5714928 1609480 5714768 1663880 5646248 -1609432 5714744 1609352 5714856 1609320 5714928 1609480 5714768 -1609432 5714744 1609352 5714856 1609480 5714768 1663880 5646248 -1609432 5714744 1609368 5714824 1609352 5714856 1609480 5714768 -1609432 5714744 1609368 5714824 1609480 5714768 1663880 5646248 -1609352 5714856 1609320 5714928 1609480 5714768 1609368 5714824 -1609320 5714928 1615368 5744400 1609480 5714768 1609352 5714856 -1609432 5714744 1609408 5714752 1609368 5714824 1609480 5714768 -1609432 5714744 1609408 5714752 1609480 5714768 1663880 5646248 -1609368 5714824 1609352 5714856 1609480 5714768 1609408 5714752 -1615368 5744400 1615496 5744536 1609480 5714768 1609320 5714928 -1609320 5714928 1613432 5742904 1615368 5744400 1609480 5714768 -1613432 5742904 1613488 5742960 1615368 5744400 1609480 5714768 -1609320 5714928 1613368 5742856 1613432 5742904 1609480 5714768 -1609320 5714928 1613280 5742808 1613368 5742856 1609480 5714768 -1609320 5714928 1613368 5742856 1609480 5714768 1609352 5714856 -1615368 5744400 1615496 5744536 1609480 5714768 1613432 5742904 -1613432 5742904 1615368 5744400 1609480 5714768 1613368 5742856 -1609432 5714744 1609480 5714768 1663880 5646248 1663776 5646144 -1609432 5714744 1609408 5714752 1609480 5714768 1663776 5646144 -1609432 5714744 1609480 5714768 1663776 5646144 1657088 5639464 -1609480 5714768 1663944 5646256 1663880 5646248 1663776 5646144 -1617712 5747256 1663944 5646256 1609480 5714768 1617608 5747096 -1609480 5714768 1609512 5714824 1663944 5646256 1663880 5646248 -1663944 5646256 1609512 5714824 1617712 5747256 1743800 5687320 -1663944 5646256 1609512 5714824 1743800 5687320 1664040 5646192 -1617712 5747256 1743888 5687504 1743800 5687320 1609512 5714824 -1609480 5714768 1609512 5714824 1663880 5646248 1663776 5646144 -1609512 5714824 1609480 5714768 1617712 5747256 1743800 5687320 -1609480 5714768 1617712 5747256 1609512 5714824 1663880 5646248 -1617712 5747256 1609512 5714824 1609480 5714768 1617608 5747096 -1609480 5714768 1615496 5744536 1617608 5747096 1609512 5714824 -1609480 5714768 1615368 5744400 1615496 5744536 1609512 5714824 -1615496 5744536 1617608 5747096 1609512 5714824 1615368 5744400 -1615496 5744536 1616160 5745400 1617608 5747096 1609512 5714824 -1617712 5747256 1743800 5687320 1609512 5714824 1617608 5747096 -1609480 5714768 1613432 5742904 1615368 5744400 1609512 5714824 -1613432 5742904 1613488 5742960 1615368 5744400 1609512 5714824 -1615368 5744400 1615496 5744536 1609512 5714824 1613432 5742904 -1609480 5714768 1613368 5742856 1613432 5742904 1609512 5714824 -1609480 5714768 1609320 5714928 1613368 5742856 1609512 5714824 -1609320 5714928 1613280 5742808 1613368 5742856 1609512 5714824 -1609320 5714928 1613208 5742808 1613280 5742808 1609512 5714824 -1609320 5714928 1613280 5742808 1609512 5714824 1609480 5714768 -1609480 5714768 1609352 5714856 1609320 5714928 1609512 5714824 -1609480 5714768 1609368 5714824 1609352 5714856 1609512 5714824 -1609480 5714768 1609408 5714752 1609368 5714824 1609512 5714824 -1609320 5714928 1613280 5742808 1609512 5714824 1609352 5714856 -1609352 5714856 1609320 5714928 1609512 5714824 1609368 5714824 -1613432 5742904 1615368 5744400 1609512 5714824 1613368 5742856 -1613368 5742856 1613432 5742904 1609512 5714824 1613280 5742808 -1609512 5714824 1663880 5646248 1609480 5714768 1609368 5714824 -1617608 5747096 1617712 5747256 1609512 5714824 1615496 5744536 -1609512 5714824 1743800 5687320 1663944 5646256 1663880 5646248 -1609512 5714824 1609512 5714872 1613280 5742808 1613368 5742856 -1613280 5742808 1609512 5714872 1609320 5714928 1613208 5742808 -1609320 5714928 1609512 5714872 1609512 5714824 1609352 5714856 -1609512 5714824 1609368 5714824 1609352 5714856 1609512 5714872 -1609512 5714824 1609480 5714768 1609368 5714824 1609512 5714872 -1609352 5714856 1609320 5714928 1609512 5714872 1609368 5714824 -1609512 5714824 1609368 5714824 1609512 5714872 1613368 5742856 -1609512 5714872 1609320 5714928 1613280 5742808 1613368 5742856 -1609320 5714928 1613280 5742808 1609512 5714872 1609352 5714856 -1609512 5714824 1609512 5714872 1613368 5742856 1613432 5742904 -1609512 5714872 1613280 5742808 1613368 5742856 1613432 5742904 -1609512 5714824 1609368 5714824 1609512 5714872 1613432 5742904 -1609512 5714824 1609512 5714872 1613432 5742904 1615368 5744400 -1613432 5742904 1613488 5742960 1615368 5744400 1609512 5714872 -1609512 5714824 1609512 5714872 1615368 5744400 1615496 5744536 -1609512 5714824 1609512 5714872 1615496 5744536 1617608 5747096 -1609512 5714872 1615368 5744400 1615496 5744536 1617608 5747096 -1615496 5744536 1616160 5745400 1617608 5747096 1609512 5714872 -1609512 5714824 1609368 5714824 1609512 5714872 1617608 5747096 -1609512 5714872 1613432 5742904 1615368 5744400 1615496 5744536 -1609512 5714872 1613368 5742856 1613432 5742904 1615368 5744400 -1609512 5714824 1609512 5714872 1617608 5747096 1617712 5747256 -1609512 5714872 1615496 5744536 1617608 5747096 1617712 5747256 -1609512 5714824 1609368 5714824 1609512 5714872 1617712 5747256 -1609512 5714824 1609512 5714872 1617712 5747256 1743800 5687320 -1613280 5742808 1609472 5714976 1609320 5714928 1613208 5742808 -1609320 5714928 1605152 5714944 1613208 5742808 1609472 5714976 -1605152 5714944 1605064 5714952 1613208 5742808 1609472 5714976 -1613208 5742808 1613280 5742808 1609472 5714976 1605152 5714944 -1609320 5714928 1605152 5714888 1605152 5714944 1609472 5714976 -1609512 5714872 1609472 5714976 1613280 5742808 1613368 5742856 -1609512 5714872 1609472 5714976 1613368 5742856 1613432 5742904 -1609472 5714976 1613280 5742808 1613368 5742856 1613432 5742904 -1609512 5714872 1609320 5714928 1609472 5714976 1613432 5742904 -1609320 5714928 1609472 5714976 1609512 5714872 1609352 5714856 -1609512 5714872 1609368 5714824 1609352 5714856 1609472 5714976 -1609472 5714976 1613432 5742904 1609512 5714872 1609352 5714856 -1613280 5742808 1613368 5742856 1609472 5714976 1613208 5742808 -1609472 5714976 1609352 5714856 1609320 5714928 1605152 5714944 -1609512 5714872 1609472 5714976 1613432 5742904 1615368 5744400 -1609472 5714976 1613368 5742856 1613432 5742904 1615368 5744400 -1613432 5742904 1613488 5742960 1615368 5744400 1609472 5714976 -1609512 5714872 1609352 5714856 1609472 5714976 1615368 5744400 -1609512 5714872 1609472 5714976 1615368 5744400 1615496 5744536 -1613208 5742808 1609448 5715040 1605152 5714944 1605064 5714952 -1609472 5714976 1609448 5715040 1613208 5742808 1613280 5742808 -1605152 5714944 1609448 5715040 1609472 5714976 1609320 5714928 -1605152 5714944 1609448 5715040 1609320 5714928 1605152 5714888 -1609448 5715040 1605152 5714944 1613208 5742808 1613280 5742808 -1605152 5714944 1613208 5742808 1609448 5715040 1609320 5714928 -1609472 5714976 1609448 5715040 1613280 5742808 1613368 5742856 -1609448 5715040 1613208 5742808 1613280 5742808 1613368 5742856 -1609472 5714976 1609448 5715040 1613368 5742856 1613432 5742904 -1609472 5714976 1609448 5715040 1613432 5742904 1615368 5744400 -1613432 5742904 1613488 5742960 1615368 5744400 1609448 5715040 -1609448 5715040 1613368 5742856 1613432 5742904 1615368 5744400 -1609448 5715040 1613280 5742808 1613368 5742856 1613432 5742904 -1609472 5714976 1609320 5714928 1609448 5715040 1615368 5744400 -1609472 5714976 1609352 5714856 1609320 5714928 1609448 5715040 -1609472 5714976 1609448 5715040 1615368 5744400 1609512 5714872 -1609448 5715040 1613432 5742904 1615368 5744400 1609512 5714872 -1609472 5714976 1609320 5714928 1609448 5715040 1609512 5714872 -1615368 5744400 1615496 5744536 1609512 5714872 1609448 5715040 -1613208 5742808 1609416 5715088 1605152 5714944 1605064 5714952 -1609448 5715040 1609416 5715088 1613208 5742808 1613280 5742808 -1609448 5715040 1609416 5715088 1613280 5742808 1613368 5742856 -1609416 5715088 1605152 5714944 1613208 5742808 1613280 5742808 -1609416 5715088 1613208 5742808 1613280 5742808 1613368 5742856 -1609448 5715040 1605152 5714944 1609416 5715088 1613368 5742856 -1605152 5714944 1609416 5715088 1609448 5715040 1609320 5714928 -1605152 5714944 1613208 5742808 1609416 5715088 1609320 5714928 -1605152 5714944 1609416 5715088 1609320 5714928 1605152 5714888 -1609448 5715040 1609472 5714976 1609320 5714928 1609416 5715088 -1609416 5715088 1613368 5742856 1609448 5715040 1609320 5714928 -1609448 5715040 1609416 5715088 1613368 5742856 1613432 5742904 -1609416 5715088 1613280 5742808 1613368 5742856 1613432 5742904 -1609448 5715040 1609320 5714928 1609416 5715088 1613432 5742904 -1609448 5715040 1609416 5715088 1613432 5742904 1615368 5744400 -1613208 5742808 1609392 5715096 1605152 5714944 1605064 5714952 -1609416 5715088 1609392 5715096 1613208 5742808 1613280 5742808 -1609392 5715096 1605152 5714944 1613208 5742808 1613280 5742808 -1609416 5715088 1605152 5714944 1609392 5715096 1613280 5742808 -1605152 5714944 1609392 5715096 1609416 5715088 1609320 5714928 -1609392 5715096 1613280 5742808 1609416 5715088 1609320 5714928 -1605152 5714944 1609392 5715096 1609320 5714928 1605152 5714888 -1605152 5714944 1613208 5742808 1609392 5715096 1609320 5714928 -1609416 5715088 1609392 5715096 1613280 5742808 1613368 5742856 -1609416 5715088 1609448 5715040 1609320 5714928 1609392 5715096 -1609416 5715088 1609448 5715040 1609392 5715096 1613280 5742808 -1609320 5714928 1605152 5714944 1609392 5715096 1609448 5715040 -1609448 5715040 1609472 5714976 1609320 5714928 1609392 5715096 -1609392 5715096 1609368 5715096 1613208 5742808 1613280 5742808 -1613208 5742808 1609368 5715096 1605152 5714944 1605064 5714952 -1605152 5714944 1609368 5715096 1609392 5715096 1609320 5714928 -1609368 5715096 1613208 5742808 1609392 5715096 1609320 5714928 -1609392 5715096 1609448 5715040 1609320 5714928 1609368 5715096 -1609392 5715096 1609448 5715040 1609368 5715096 1613208 5742808 -1605152 5714944 1613208 5742808 1609368 5715096 1609320 5714928 -1605152 5714944 1609368 5715096 1609320 5714928 1605152 5714888 -1609320 5714928 1605152 5714944 1609368 5715096 1609448 5715040 -1609448 5715040 1609472 5714976 1609320 5714928 1609368 5715096 -1609392 5715096 1609416 5715088 1609448 5715040 1609368 5715096 -1609368 5715096 1609360 5715080 1605152 5714944 1613208 5742808 -1605152 5714944 1609360 5715080 1609320 5714928 1605152 5714888 -1609320 5714928 1609360 5715080 1609368 5715096 1609448 5715040 -1609320 5714928 1605152 5714944 1609360 5715080 1609448 5715040 -1609368 5715096 1609392 5715096 1609448 5715040 1609360 5715080 -1609448 5715040 1609320 5714928 1609360 5715080 1609392 5715096 -1609320 5714928 1609360 5715080 1609448 5715040 1609472 5714976 -1609392 5715096 1609416 5715088 1609448 5715040 1609360 5715080 -1609392 5715096 1609416 5715088 1609360 5715080 1609368 5715096 -1609448 5715040 1609320 5714928 1609360 5715080 1609416 5715088 -1609360 5715080 1605152 5714944 1609368 5715096 1609392 5715096 -1609320 5714928 1609320 5714984 1609360 5715080 1609448 5715040 -1609320 5714984 1605152 5714944 1609360 5715080 1609448 5715040 -1609320 5714928 1605152 5714944 1609320 5714984 1609448 5715040 -1605152 5714944 1609320 5714984 1609320 5714928 1605152 5714888 -1609360 5715080 1609416 5715088 1609448 5715040 1609320 5714984 -1609320 5714928 1609320 5714984 1609448 5715040 1609472 5714976 -1609320 5714984 1609360 5715080 1609448 5715040 1609472 5714976 -1609320 5714928 1605152 5714944 1609320 5714984 1609472 5714976 -1609320 5714928 1609320 5714984 1609472 5714976 1609352 5714856 -1609360 5715080 1609320 5714984 1605152 5714944 1609368 5715096 -1743800 5687320 1615320 5735328 1617712 5747256 1743888 5687504 -1743800 5687320 1609512 5714824 1615320 5735328 1743888 5687504 -1615320 5735328 1609512 5714824 1617712 5747256 1743888 5687504 -1617712 5747256 1617768 5747376 1743888 5687504 1615320 5735328 -1617768 5747376 1620192 5752400 1743888 5687504 1615320 5735328 -1617712 5747256 1617768 5747376 1615320 5735328 1609512 5714824 -1743888 5687504 1743800 5687320 1615320 5735328 1620192 5752400 -1617768 5747376 1617848 5747624 1620192 5752400 1615320 5735328 -1617768 5747376 1620192 5752400 1615320 5735328 1617712 5747256 -1609512 5714824 1615320 5735328 1743800 5687320 1663944 5646256 -1615320 5735328 1743888 5687504 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1615320 5735328 -1609512 5714824 1617712 5747256 1615320 5735328 1663944 5646256 -1620192 5752400 1620224 5752472 1743888 5687504 1615320 5735328 -1620192 5752400 1620224 5752472 1615320 5735328 1617768 5747376 -1743888 5687504 1743800 5687320 1615320 5735328 1620224 5752472 -1620224 5752472 1751256 5699792 1743888 5687504 1615320 5735328 -1617712 5747256 1615320 5735328 1609512 5714824 1609512 5714872 -1617712 5747256 1617768 5747376 1615320 5735328 1609512 5714872 -1615320 5735328 1663944 5646256 1609512 5714824 1609512 5714872 -1617712 5747256 1615320 5735328 1609512 5714872 1617608 5747096 -1617712 5747256 1617768 5747376 1615320 5735328 1617608 5747096 -1609512 5714872 1615496 5744536 1617608 5747096 1615320 5735328 -1609512 5714872 1615368 5744400 1615496 5744536 1615320 5735328 -1615496 5744536 1617608 5747096 1615320 5735328 1615368 5744400 -1615496 5744536 1616160 5745400 1617608 5747096 1615320 5735328 -1615496 5744536 1616160 5745400 1615320 5735328 1615368 5744400 -1615320 5735328 1609512 5714824 1609512 5714872 1615368 5744400 -1616160 5745400 1617512 5746992 1617608 5747096 1615320 5735328 -1616160 5745400 1616216 5745480 1617512 5746992 1615320 5735328 -1616216 5745480 1616232 5745520 1617512 5746992 1615320 5735328 -1616160 5745400 1616216 5745480 1615320 5735328 1615496 5744536 -1617512 5746992 1617608 5747096 1615320 5735328 1616216 5745480 -1609512 5714872 1609448 5715040 1615368 5744400 1615320 5735328 -1609448 5715040 1613432 5742904 1615368 5744400 1615320 5735328 -1613432 5742904 1613488 5742960 1615368 5744400 1615320 5735328 -1613432 5742904 1613488 5742960 1615320 5735328 1609448 5715040 -1613488 5742960 1613528 5743008 1615368 5744400 1615320 5735328 -1613488 5742960 1613528 5743008 1615320 5735328 1613432 5742904 -1615368 5744400 1615496 5744536 1615320 5735328 1613528 5743008 -1609512 5714872 1609448 5715040 1615320 5735328 1609512 5714824 -1609448 5715040 1609416 5715088 1613432 5742904 1615320 5735328 -1613432 5742904 1613488 5742960 1615320 5735328 1609416 5715088 -1609416 5715088 1613368 5742856 1613432 5742904 1615320 5735328 -1613432 5742904 1613488 5742960 1615320 5735328 1613368 5742856 -1609416 5715088 1613280 5742808 1613368 5742856 1615320 5735328 -1609416 5715088 1609392 5715096 1613280 5742808 1615320 5735328 -1613280 5742808 1613368 5742856 1615320 5735328 1609392 5715096 -1609392 5715096 1613208 5742808 1613280 5742808 1615320 5735328 -1609392 5715096 1609368 5715096 1613208 5742808 1615320 5735328 -1613280 5742808 1613368 5742856 1615320 5735328 1613208 5742808 -1613208 5742808 1613280 5742808 1615320 5735328 1609368 5715096 -1609392 5715096 1609368 5715096 1615320 5735328 1609416 5715088 -1609416 5715088 1609392 5715096 1615320 5735328 1609448 5715040 -1613368 5742856 1613432 5742904 1615320 5735328 1613280 5742808 -1609368 5715096 1605152 5714944 1613208 5742808 1615320 5735328 -1609368 5715096 1605152 5714944 1615320 5735328 1609392 5715096 -1605152 5714944 1605064 5714952 1613208 5742808 1615320 5735328 -1605064 5714952 1604928 5714896 1613208 5742808 1615320 5735328 -1605064 5714952 1604928 5714896 1615320 5735328 1605152 5714944 -1604928 5714896 1604832 5714824 1613208 5742808 1615320 5735328 -1613208 5742808 1613280 5742808 1615320 5735328 1604928 5714896 -1609368 5715096 1609360 5715080 1605152 5714944 1615320 5735328 -1605152 5714944 1605064 5714952 1615320 5735328 1609368 5715096 -1613528 5743008 1615248 5744352 1615368 5744400 1615320 5735328 -1609448 5715040 1609416 5715088 1615320 5735328 1609512 5714872 -1609512 5714872 1609472 5714976 1609448 5715040 1615320 5735328 -1617608 5747096 1617712 5747256 1615320 5735328 1617512 5746992 -1609512 5714824 1615320 5735328 1663944 5646256 1663880 5646248 -1615496 5744536 1615544 5744608 1616160 5745400 1615320 5735328 -1743800 5687320 1615352 5735280 1615320 5735328 1743888 5687504 -1743800 5687320 1663944 5646256 1615352 5735280 1743888 5687504 -1663944 5646256 1615352 5735280 1743800 5687320 1664040 5646192 -1615320 5735328 1620224 5752472 1743888 5687504 1615352 5735280 -1743888 5687504 1743800 5687320 1615352 5735280 1620224 5752472 -1615352 5735280 1663944 5646256 1615320 5735328 1620224 5752472 -1615320 5735328 1615352 5735280 1663944 5646256 1609512 5714824 -1615320 5735328 1615352 5735280 1609512 5714824 1609512 5714872 -1615352 5735280 1743800 5687320 1663944 5646256 1609512 5714824 -1615320 5735328 1620224 5752472 1615352 5735280 1609512 5714872 -1615352 5735280 1663944 5646256 1609512 5714824 1609512 5714872 -1615320 5735328 1620192 5752400 1620224 5752472 1615352 5735280 -1615320 5735328 1617768 5747376 1620192 5752400 1615352 5735280 -1620224 5752472 1743888 5687504 1615352 5735280 1620192 5752400 -1617768 5747376 1617848 5747624 1620192 5752400 1615352 5735280 -1615320 5735328 1617712 5747256 1617768 5747376 1615352 5735280 -1617768 5747376 1620192 5752400 1615352 5735280 1617712 5747256 -1615320 5735328 1617608 5747096 1617712 5747256 1615352 5735280 -1617712 5747256 1617768 5747376 1615352 5735280 1617608 5747096 -1615320 5735328 1617608 5747096 1615352 5735280 1609512 5714872 -1620192 5752400 1620224 5752472 1615352 5735280 1617768 5747376 -1620224 5752472 1751256 5699792 1743888 5687504 1615352 5735280 -1615320 5735328 1615352 5735280 1609512 5714872 1609448 5715040 -1615352 5735280 1609512 5714824 1609512 5714872 1609448 5715040 -1615320 5735328 1617608 5747096 1615352 5735280 1609448 5715040 -1615320 5735328 1615352 5735280 1609448 5715040 1609416 5715088 -1615320 5735328 1617608 5747096 1615352 5735280 1609416 5715088 -1615352 5735280 1609512 5714872 1609448 5715040 1609416 5715088 -1615320 5735328 1615352 5735280 1609416 5715088 1609392 5715096 -1615320 5735328 1617608 5747096 1615352 5735280 1609392 5715096 -1615320 5735328 1615352 5735280 1609392 5715096 1609368 5715096 -1615320 5735328 1615352 5735280 1609368 5715096 1605152 5714944 -1615320 5735328 1617608 5747096 1615352 5735280 1605152 5714944 -1609368 5715096 1609360 5715080 1605152 5714944 1615352 5735280 -1615352 5735280 1609392 5715096 1609368 5715096 1605152 5714944 -1615352 5735280 1609416 5715088 1609392 5715096 1609368 5715096 -1615320 5735328 1615352 5735280 1605152 5714944 1605064 5714952 -1615352 5735280 1609368 5715096 1605152 5714944 1605064 5714952 -1615320 5735328 1615352 5735280 1605064 5714952 1604928 5714896 -1615320 5735328 1617608 5747096 1615352 5735280 1605064 5714952 -1615352 5735280 1609448 5715040 1609416 5715088 1609392 5715096 -1609512 5714872 1609472 5714976 1609448 5715040 1615352 5735280 -1615320 5735328 1617512 5746992 1617608 5747096 1615352 5735280 -1615320 5735328 1617512 5746992 1615352 5735280 1605064 5714952 -1615320 5735328 1616216 5745480 1617512 5746992 1615352 5735280 -1616216 5745480 1616232 5745520 1617512 5746992 1615352 5735280 -1615320 5735328 1616160 5745400 1616216 5745480 1615352 5735280 -1615320 5735328 1616160 5745400 1615352 5735280 1605064 5714952 -1615320 5735328 1615496 5744536 1616160 5745400 1615352 5735280 -1615320 5735328 1615368 5744400 1615496 5744536 1615352 5735280 -1616160 5745400 1616216 5745480 1615352 5735280 1615496 5744536 -1615320 5735328 1615496 5744536 1615352 5735280 1605064 5714952 -1616216 5745480 1617512 5746992 1615352 5735280 1616160 5745400 -1617608 5747096 1617712 5747256 1615352 5735280 1617512 5746992 -1617512 5746992 1617608 5747096 1615352 5735280 1616216 5745480 -1663944 5646256 1663880 5646248 1609512 5714824 1615352 5735280 -1615496 5744536 1615544 5744608 1616160 5745400 1615352 5735280 -1743800 5687320 1615408 5735224 1615352 5735280 1743888 5687504 -1615408 5735224 1663944 5646256 1615352 5735280 1743888 5687504 -1663944 5646256 1615408 5735224 1743800 5687320 1664040 5646192 -1615352 5735280 1620224 5752472 1743888 5687504 1615408 5735224 -1615352 5735280 1620224 5752472 1615408 5735224 1663944 5646256 -1615352 5735280 1620192 5752400 1620224 5752472 1615408 5735224 -1620224 5752472 1743888 5687504 1615408 5735224 1620192 5752400 -1615352 5735280 1620192 5752400 1615408 5735224 1663944 5646256 -1743888 5687504 1743800 5687320 1615408 5735224 1620224 5752472 -1615352 5735280 1615408 5735224 1663944 5646256 1609512 5714824 -1615408 5735224 1743800 5687320 1663944 5646256 1609512 5714824 -1615352 5735280 1620192 5752400 1615408 5735224 1609512 5714824 -1615352 5735280 1615408 5735224 1609512 5714824 1609512 5714872 -1615352 5735280 1615408 5735224 1609512 5714872 1609448 5715040 -1615352 5735280 1620192 5752400 1615408 5735224 1609448 5715040 -1615408 5735224 1609512 5714824 1609512 5714872 1609448 5715040 -1615352 5735280 1617768 5747376 1620192 5752400 1615408 5735224 -1615352 5735280 1617712 5747256 1617768 5747376 1615408 5735224 -1615352 5735280 1617712 5747256 1615408 5735224 1609448 5715040 -1620192 5752400 1620224 5752472 1615408 5735224 1617768 5747376 -1617768 5747376 1617848 5747624 1620192 5752400 1615408 5735224 -1615352 5735280 1617608 5747096 1617712 5747256 1615408 5735224 -1617712 5747256 1617768 5747376 1615408 5735224 1617608 5747096 -1615352 5735280 1617608 5747096 1615408 5735224 1609448 5715040 -1617768 5747376 1620192 5752400 1615408 5735224 1617712 5747256 -1620224 5752472 1751256 5699792 1743888 5687504 1615408 5735224 -1615352 5735280 1615408 5735224 1609448 5715040 1609416 5715088 -1615352 5735280 1617608 5747096 1615408 5735224 1609416 5715088 -1615408 5735224 1609512 5714872 1609448 5715040 1609416 5715088 -1615352 5735280 1615408 5735224 1609416 5715088 1609392 5715096 -1615352 5735280 1617608 5747096 1615408 5735224 1609392 5715096 -1615408 5735224 1609448 5715040 1609416 5715088 1609392 5715096 -1615352 5735280 1615408 5735224 1609392 5715096 1609368 5715096 -1615352 5735280 1617608 5747096 1615408 5735224 1609368 5715096 -1615352 5735280 1615408 5735224 1609368 5715096 1605152 5714944 -1615408 5735224 1609416 5715088 1609392 5715096 1609368 5715096 -1615352 5735280 1617512 5746992 1617608 5747096 1615408 5735224 -1615352 5735280 1617512 5746992 1615408 5735224 1609368 5715096 -1617608 5747096 1617712 5747256 1615408 5735224 1617512 5746992 -1609512 5714872 1609472 5714976 1609448 5715040 1615408 5735224 -1615408 5735224 1663944 5646256 1609512 5714824 1609512 5714872 -1615352 5735280 1616216 5745480 1617512 5746992 1615408 5735224 -1616216 5745480 1616232 5745520 1617512 5746992 1615408 5735224 -1615352 5735280 1616216 5745480 1615408 5735224 1609368 5715096 -1615352 5735280 1616160 5745400 1616216 5745480 1615408 5735224 -1615352 5735280 1616160 5745400 1615408 5735224 1609368 5715096 -1615352 5735280 1615496 5744536 1616160 5745400 1615408 5735224 -1615352 5735280 1615496 5744536 1615408 5735224 1609368 5715096 -1615352 5735280 1615320 5735328 1615496 5744536 1615408 5735224 -1615352 5735280 1615320 5735328 1615408 5735224 1609368 5715096 -1615320 5735328 1615368 5744400 1615496 5744536 1615408 5735224 -1615496 5744536 1616160 5745400 1615408 5735224 1615320 5735328 -1616160 5745400 1616216 5745480 1615408 5735224 1615496 5744536 -1617512 5746992 1617608 5747096 1615408 5735224 1616216 5745480 -1616216 5745480 1617512 5746992 1615408 5735224 1616160 5745400 -1663944 5646256 1663880 5646248 1609512 5714824 1615408 5735224 -1743800 5687320 1663944 5646256 1615408 5735224 1743888 5687504 -1615496 5744536 1615544 5744608 1616160 5745400 1615408 5735224 -1620224 5752472 1615440 5735216 1615408 5735224 1620192 5752400 -1615440 5735216 1743888 5687504 1615408 5735224 1620192 5752400 -1615408 5735224 1617768 5747376 1620192 5752400 1615440 5735216 -1620192 5752400 1620224 5752472 1615440 5735216 1617768 5747376 -1615408 5735224 1617768 5747376 1615440 5735216 1743888 5687504 -1615408 5735224 1615440 5735216 1743888 5687504 1743800 5687320 -1615408 5735224 1617768 5747376 1615440 5735216 1743800 5687320 -1615440 5735216 1620224 5752472 1743888 5687504 1743800 5687320 -1617768 5747376 1617848 5747624 1620192 5752400 1615440 5735216 -1615408 5735224 1617712 5747256 1617768 5747376 1615440 5735216 -1615408 5735224 1617712 5747256 1615440 5735216 1743800 5687320 -1615408 5735224 1617608 5747096 1617712 5747256 1615440 5735216 -1615408 5735224 1617608 5747096 1615440 5735216 1743800 5687320 -1617768 5747376 1620192 5752400 1615440 5735216 1617712 5747256 -1615408 5735224 1617512 5746992 1617608 5747096 1615440 5735216 -1615408 5735224 1617512 5746992 1615440 5735216 1743800 5687320 -1617608 5747096 1617712 5747256 1615440 5735216 1617512 5746992 -1617712 5747256 1617768 5747376 1615440 5735216 1617608 5747096 -1743888 5687504 1615440 5735216 1620224 5752472 1751256 5699792 -1615408 5735224 1616216 5745480 1617512 5746992 1615440 5735216 -1616216 5745480 1616232 5745520 1617512 5746992 1615440 5735216 -1615408 5735224 1616216 5745480 1615440 5735216 1743800 5687320 -1617512 5746992 1617608 5747096 1615440 5735216 1616216 5745480 -1620224 5752472 1743888 5687504 1615440 5735216 1620192 5752400 -1615408 5735224 1616160 5745400 1616216 5745480 1615440 5735216 -1615408 5735224 1616160 5745400 1615440 5735216 1743800 5687320 -1616216 5745480 1617512 5746992 1615440 5735216 1616160 5745400 -1615408 5735224 1615496 5744536 1616160 5745400 1615440 5735216 -1615408 5735224 1615496 5744536 1615440 5735216 1743800 5687320 -1615408 5735224 1615320 5735328 1615496 5744536 1615440 5735216 -1615408 5735224 1615320 5735328 1615440 5735216 1743800 5687320 -1615320 5735328 1615368 5744400 1615496 5744536 1615440 5735216 -1615320 5735328 1615368 5744400 1615440 5735216 1615408 5735224 -1615320 5735328 1613528 5743008 1615368 5744400 1615440 5735216 -1615408 5735224 1615352 5735280 1615320 5735328 1615440 5735216 -1615408 5735224 1615352 5735280 1615440 5735216 1743800 5687320 -1615320 5735328 1615368 5744400 1615440 5735216 1615352 5735280 -1615496 5744536 1616160 5745400 1615440 5735216 1615368 5744400 -1616160 5745400 1616216 5745480 1615440 5735216 1615496 5744536 -1615408 5735224 1615440 5735216 1743800 5687320 1663944 5646256 -1615408 5735224 1615352 5735280 1615440 5735216 1663944 5646256 -1615408 5735224 1615440 5735216 1663944 5646256 1609512 5714824 -1615440 5735216 1743800 5687320 1663944 5646256 1609512 5714824 -1615408 5735224 1615352 5735280 1615440 5735216 1609512 5714824 -1743800 5687320 1664040 5646192 1663944 5646256 1615440 5735216 -1615440 5735216 1743888 5687504 1743800 5687320 1663944 5646256 -1615408 5735224 1615440 5735216 1609512 5714824 1609512 5714872 -1615440 5735216 1663944 5646256 1609512 5714824 1609512 5714872 -1615408 5735224 1615352 5735280 1615440 5735216 1609512 5714872 -1615408 5735224 1615440 5735216 1609512 5714872 1609448 5715040 -1615440 5735216 1609512 5714824 1609512 5714872 1609448 5715040 -1615408 5735224 1615352 5735280 1615440 5735216 1609448 5715040 -1615408 5735224 1615440 5735216 1609448 5715040 1609416 5715088 -1615408 5735224 1615352 5735280 1615440 5735216 1609416 5715088 -1615440 5735216 1609512 5714872 1609448 5715040 1609416 5715088 -1615408 5735224 1615440 5735216 1609416 5715088 1609392 5715096 -1609512 5714872 1609472 5714976 1609448 5715040 1615440 5735216 -1663944 5646256 1663880 5646248 1609512 5714824 1615440 5735216 -1615496 5744536 1615544 5744608 1616160 5745400 1615440 5735216 -1615440 5735216 1615528 5735256 1743888 5687504 1743800 5687320 -1615440 5735216 1620224 5752472 1615528 5735256 1743800 5687320 -1615528 5735256 1620224 5752472 1743888 5687504 1743800 5687320 -1615440 5735216 1615528 5735256 1743800 5687320 1663944 5646256 -1615440 5735216 1615528 5735256 1663944 5646256 1609512 5714824 -1615440 5735216 1615528 5735256 1609512 5714824 1609512 5714872 -1615528 5735256 1663944 5646256 1609512 5714824 1609512 5714872 -1615440 5735216 1615528 5735256 1609512 5714872 1609448 5715040 -1615528 5735256 1609512 5714824 1609512 5714872 1609448 5715040 -1615440 5735216 1620224 5752472 1615528 5735256 1609448 5715040 -1743800 5687320 1664040 5646192 1663944 5646256 1615528 5735256 -1615528 5735256 1743800 5687320 1663944 5646256 1609512 5714824 -1615528 5735256 1743888 5687504 1743800 5687320 1663944 5646256 -1615440 5735216 1615528 5735256 1609448 5715040 1609416 5715088 -1743888 5687504 1615528 5735256 1620224 5752472 1751256 5699792 -1609512 5714872 1609472 5714976 1609448 5715040 1615528 5735256 -1620224 5752472 1615528 5735256 1615440 5735216 1620192 5752400 -1615440 5735216 1617768 5747376 1620192 5752400 1615528 5735256 -1615528 5735256 1609448 5715040 1615440 5735216 1617768 5747376 -1615440 5735216 1617712 5747256 1617768 5747376 1615528 5735256 -1617768 5747376 1620192 5752400 1615528 5735256 1617712 5747256 -1615440 5735216 1617712 5747256 1615528 5735256 1609448 5715040 -1617768 5747376 1617848 5747624 1620192 5752400 1615528 5735256 -1620224 5752472 1743888 5687504 1615528 5735256 1620192 5752400 -1620192 5752400 1620224 5752472 1615528 5735256 1617768 5747376 -1615440 5735216 1617608 5747096 1617712 5747256 1615528 5735256 -1615440 5735216 1617608 5747096 1615528 5735256 1609448 5715040 -1615440 5735216 1617512 5746992 1617608 5747096 1615528 5735256 -1615440 5735216 1617512 5746992 1615528 5735256 1609448 5715040 -1617712 5747256 1617768 5747376 1615528 5735256 1617608 5747096 -1615440 5735216 1616216 5745480 1617512 5746992 1615528 5735256 -1616216 5745480 1616232 5745520 1617512 5746992 1615528 5735256 -1615440 5735216 1616216 5745480 1615528 5735256 1609448 5715040 -1617512 5746992 1617608 5747096 1615528 5735256 1616216 5745480 -1615440 5735216 1616160 5745400 1616216 5745480 1615528 5735256 -1615440 5735216 1616160 5745400 1615528 5735256 1609448 5715040 -1616216 5745480 1617512 5746992 1615528 5735256 1616160 5745400 -1617608 5747096 1617712 5747256 1615528 5735256 1617512 5746992 -1615440 5735216 1615496 5744536 1616160 5745400 1615528 5735256 -1615440 5735216 1615496 5744536 1615528 5735256 1609448 5715040 -1616160 5745400 1616216 5745480 1615528 5735256 1615496 5744536 -1615440 5735216 1615368 5744400 1615496 5744536 1615528 5735256 -1615440 5735216 1615368 5744400 1615528 5735256 1609448 5715040 -1615440 5735216 1615320 5735328 1615368 5744400 1615528 5735256 -1615440 5735216 1615320 5735328 1615528 5735256 1609448 5715040 -1615440 5735216 1615352 5735280 1615320 5735328 1615528 5735256 -1615440 5735216 1615352 5735280 1615528 5735256 1609448 5715040 -1615320 5735328 1615368 5744400 1615528 5735256 1615352 5735280 -1615320 5735328 1613528 5743008 1615368 5744400 1615528 5735256 -1615320 5735328 1613488 5742960 1613528 5743008 1615528 5735256 -1615320 5735328 1613488 5742960 1615528 5735256 1615352 5735280 -1615320 5735328 1613432 5742904 1613488 5742960 1615528 5735256 -1613528 5743008 1615368 5744400 1615528 5735256 1613488 5742960 -1615440 5735216 1615408 5735224 1615352 5735280 1615528 5735256 -1615440 5735216 1615408 5735224 1615528 5735256 1609448 5715040 -1615352 5735280 1615320 5735328 1615528 5735256 1615408 5735224 -1613528 5743008 1615248 5744352 1615368 5744400 1615528 5735256 -1615368 5744400 1615496 5744536 1615528 5735256 1613528 5743008 -1615496 5744536 1616160 5745400 1615528 5735256 1615368 5744400 -1663944 5646256 1663880 5646248 1609512 5714824 1615528 5735256 -1615496 5744536 1615544 5744608 1616160 5745400 1615528 5735256 -1615528 5735256 1615584 5735320 1743888 5687504 1743800 5687320 -1615528 5735256 1615584 5735320 1743800 5687320 1663944 5646256 -1615584 5735320 1743888 5687504 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1615584 5735320 -1615528 5735256 1615584 5735320 1663944 5646256 1609512 5714824 -1615528 5735256 1615584 5735320 1609512 5714824 1609512 5714872 -1615528 5735256 1615584 5735320 1609512 5714872 1609448 5715040 -1615584 5735320 1663944 5646256 1609512 5714824 1609512 5714872 -1615584 5735320 1743800 5687320 1663944 5646256 1609512 5714824 -1620224 5752472 1615584 5735320 1615528 5735256 1620192 5752400 -1615528 5735256 1617768 5747376 1620192 5752400 1615584 5735320 -1615528 5735256 1617712 5747256 1617768 5747376 1615584 5735320 -1615528 5735256 1617608 5747096 1617712 5747256 1615584 5735320 -1617712 5747256 1617768 5747376 1615584 5735320 1617608 5747096 -1617768 5747376 1617848 5747624 1620192 5752400 1615584 5735320 -1620192 5752400 1620224 5752472 1615584 5735320 1617768 5747376 -1617768 5747376 1620192 5752400 1615584 5735320 1617712 5747256 -1615528 5735256 1617608 5747096 1615584 5735320 1609512 5714872 -1615584 5735320 1620224 5752472 1743888 5687504 1743800 5687320 -1615528 5735256 1617512 5746992 1617608 5747096 1615584 5735320 -1615528 5735256 1616216 5745480 1617512 5746992 1615584 5735320 -1616216 5745480 1616232 5745520 1617512 5746992 1615584 5735320 -1617608 5747096 1617712 5747256 1615584 5735320 1617512 5746992 -1615528 5735256 1616160 5745400 1616216 5745480 1615584 5735320 -1616216 5745480 1617512 5746992 1615584 5735320 1616160 5745400 -1615528 5735256 1615496 5744536 1616160 5745400 1615584 5735320 -1616160 5745400 1616216 5745480 1615584 5735320 1615496 5744536 -1615528 5735256 1615496 5744536 1615584 5735320 1609512 5714872 -1617512 5746992 1617608 5747096 1615584 5735320 1616216 5745480 -1743888 5687504 1615584 5735320 1620224 5752472 1751256 5699792 -1620224 5752472 1743888 5687504 1615584 5735320 1620192 5752400 -1615528 5735256 1615368 5744400 1615496 5744536 1615584 5735320 -1615496 5744536 1616160 5745400 1615584 5735320 1615368 5744400 -1615528 5735256 1615368 5744400 1615584 5735320 1609512 5714872 -1615528 5735256 1613528 5743008 1615368 5744400 1615584 5735320 -1615528 5735256 1613528 5743008 1615584 5735320 1609512 5714872 -1615528 5735256 1613488 5742960 1613528 5743008 1615584 5735320 -1615528 5735256 1615320 5735328 1613488 5742960 1615584 5735320 -1615528 5735256 1615352 5735280 1615320 5735328 1615584 5735320 -1615320 5735328 1613488 5742960 1615584 5735320 1615352 5735280 -1615528 5735256 1615408 5735224 1615352 5735280 1615584 5735320 -1615528 5735256 1615352 5735280 1615584 5735320 1609512 5714872 -1615320 5735328 1613432 5742904 1613488 5742960 1615584 5735320 -1615320 5735328 1613368 5742856 1613432 5742904 1615584 5735320 -1615320 5735328 1613368 5742856 1615584 5735320 1615352 5735280 -1613432 5742904 1613488 5742960 1615584 5735320 1613368 5742856 -1613488 5742960 1613528 5743008 1615584 5735320 1613432 5742904 -1615320 5735328 1613280 5742808 1613368 5742856 1615584 5735320 -1613528 5743008 1615248 5744352 1615368 5744400 1615584 5735320 -1613528 5743008 1615368 5744400 1615584 5735320 1613488 5742960 -1615368 5744400 1615496 5744536 1615584 5735320 1613528 5743008 -1663944 5646256 1663880 5646248 1609512 5714824 1615584 5735320 -1615496 5744536 1615544 5744608 1616160 5745400 1615584 5735320 -1615584 5735320 1615632 5735416 1743888 5687504 1743800 5687320 -1615584 5735320 1615632 5735416 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1615632 5735416 -1615584 5735320 1615632 5735416 1663944 5646256 1609512 5714824 -1615632 5735416 1743800 5687320 1663944 5646256 1609512 5714824 -1615584 5735320 1615632 5735416 1609512 5714824 1609512 5714872 -1615632 5735416 1743888 5687504 1743800 5687320 1663944 5646256 -1743888 5687504 1615632 5735416 1620224 5752472 1751256 5699792 -1615584 5735320 1620224 5752472 1615632 5735416 1609512 5714824 -1620224 5752472 1615632 5735416 1615584 5735320 1620192 5752400 -1620224 5752472 1743888 5687504 1615632 5735416 1620192 5752400 -1615584 5735320 1617768 5747376 1620192 5752400 1615632 5735416 -1617768 5747376 1617848 5747624 1620192 5752400 1615632 5735416 -1615584 5735320 1617712 5747256 1617768 5747376 1615632 5735416 -1615584 5735320 1617608 5747096 1617712 5747256 1615632 5735416 -1615584 5735320 1617512 5746992 1617608 5747096 1615632 5735416 -1617608 5747096 1617712 5747256 1615632 5735416 1617512 5746992 -1617768 5747376 1620192 5752400 1615632 5735416 1617712 5747256 -1617712 5747256 1617768 5747376 1615632 5735416 1617608 5747096 -1615584 5735320 1616216 5745480 1617512 5746992 1615632 5735416 -1616216 5745480 1616232 5745520 1617512 5746992 1615632 5735416 -1615584 5735320 1616160 5745400 1616216 5745480 1615632 5735416 -1617512 5746992 1617608 5747096 1615632 5735416 1616216 5745480 -1615584 5735320 1615496 5744536 1616160 5745400 1615632 5735416 -1616160 5745400 1616216 5745480 1615632 5735416 1615496 5744536 -1615584 5735320 1615368 5744400 1615496 5744536 1615632 5735416 -1615496 5744536 1616160 5745400 1615632 5735416 1615368 5744400 -1616216 5745480 1617512 5746992 1615632 5735416 1616160 5745400 -1615632 5735416 1609512 5714824 1615584 5735320 1615368 5744400 -1620192 5752400 1620224 5752472 1615632 5735416 1617768 5747376 -1615632 5735416 1620224 5752472 1743888 5687504 1743800 5687320 -1615584 5735320 1613528 5743008 1615368 5744400 1615632 5735416 -1615368 5744400 1615496 5744536 1615632 5735416 1613528 5743008 -1613528 5743008 1615248 5744352 1615368 5744400 1615632 5735416 -1615584 5735320 1613488 5742960 1613528 5743008 1615632 5735416 -1615584 5735320 1613432 5742904 1613488 5742960 1615632 5735416 -1615584 5735320 1613368 5742856 1613432 5742904 1615632 5735416 -1615584 5735320 1615320 5735328 1613368 5742856 1615632 5735416 -1615584 5735320 1615352 5735280 1615320 5735328 1615632 5735416 -1613368 5742856 1613432 5742904 1615632 5735416 1615320 5735328 -1613432 5742904 1613488 5742960 1615632 5735416 1613368 5742856 -1615320 5735328 1613280 5742808 1613368 5742856 1615632 5735416 -1615320 5735328 1613280 5742808 1615632 5735416 1615584 5735320 -1615320 5735328 1613208 5742808 1613280 5742808 1615632 5735416 -1613368 5742856 1613432 5742904 1615632 5735416 1613280 5742808 -1613488 5742960 1613528 5743008 1615632 5735416 1613432 5742904 -1615584 5735320 1615320 5735328 1615632 5735416 1609512 5714824 -1613528 5743008 1615368 5744400 1615632 5735416 1613488 5742960 -1663944 5646256 1663880 5646248 1609512 5714824 1615632 5735416 -1615496 5744536 1615544 5744608 1616160 5745400 1615632 5735416 -1615632 5735416 1615632 5735512 1616160 5745400 1616216 5745480 -1615496 5744536 1615632 5735512 1615632 5735416 1615368 5744400 -1615496 5744536 1616160 5745400 1615632 5735512 1615368 5744400 -1615632 5735416 1615368 5744400 1615632 5735512 1616216 5745480 -1615632 5735512 1615496 5744536 1616160 5745400 1616216 5745480 -1615632 5735416 1613528 5743008 1615368 5744400 1615632 5735512 -1615368 5744400 1615496 5744536 1615632 5735512 1613528 5743008 -1615632 5735416 1613528 5743008 1615632 5735512 1616216 5745480 -1615632 5735416 1615632 5735512 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1615632 5735512 -1615632 5735512 1616160 5745400 1616216 5745480 1617512 5746992 -1615632 5735416 1615632 5735512 1617512 5746992 1617608 5747096 -1615632 5735416 1615632 5735512 1617608 5747096 1617712 5747256 -1615632 5735512 1617512 5746992 1617608 5747096 1617712 5747256 -1615632 5735416 1613528 5743008 1615632 5735512 1617712 5747256 -1615632 5735416 1615632 5735512 1617712 5747256 1617768 5747376 -1615632 5735512 1617608 5747096 1617712 5747256 1617768 5747376 -1615632 5735416 1613528 5743008 1615632 5735512 1617768 5747376 -1615632 5735416 1615632 5735512 1617768 5747376 1620192 5752400 -1617768 5747376 1617848 5747624 1620192 5752400 1615632 5735512 -1615632 5735416 1613528 5743008 1615632 5735512 1620192 5752400 -1615632 5735512 1617712 5747256 1617768 5747376 1620192 5752400 -1615632 5735512 1616216 5745480 1617512 5746992 1617608 5747096 -1613528 5743008 1615248 5744352 1615368 5744400 1615632 5735512 -1615632 5735416 1615632 5735512 1620192 5752400 1620224 5752472 -1615632 5735416 1613488 5742960 1613528 5743008 1615632 5735512 -1615632 5735416 1613488 5742960 1615632 5735512 1620192 5752400 -1613528 5743008 1615368 5744400 1615632 5735512 1613488 5742960 -1615632 5735416 1613432 5742904 1613488 5742960 1615632 5735512 -1615632 5735416 1613432 5742904 1615632 5735512 1620192 5752400 -1615632 5735416 1613368 5742856 1613432 5742904 1615632 5735512 -1615632 5735416 1613368 5742856 1615632 5735512 1620192 5752400 -1615632 5735416 1613280 5742808 1613368 5742856 1615632 5735512 -1615632 5735416 1613280 5742808 1615632 5735512 1620192 5752400 -1613368 5742856 1613432 5742904 1615632 5735512 1613280 5742808 -1615632 5735416 1615320 5735328 1613280 5742808 1615632 5735512 -1615632 5735416 1615584 5735320 1615320 5735328 1615632 5735512 -1615320 5735328 1613208 5742808 1613280 5742808 1615632 5735512 -1615632 5735416 1615320 5735328 1615632 5735512 1620192 5752400 -1613280 5742808 1613368 5742856 1615632 5735512 1615320 5735328 -1613432 5742904 1613488 5742960 1615632 5735512 1613368 5742856 -1613488 5742960 1613528 5743008 1615632 5735512 1613432 5742904 -1616160 5745400 1615632 5735512 1615496 5744536 1615544 5744608 -1613280 5742808 1615584 5735552 1615320 5735328 1613208 5742808 -1613280 5742808 1615632 5735512 1615584 5735552 1613208 5742808 -1615320 5735328 1604928 5714896 1613208 5742808 1615584 5735552 -1615632 5735512 1615584 5735552 1613280 5742808 1613368 5742856 -1615632 5735512 1615320 5735328 1615584 5735552 1613368 5742856 -1615584 5735552 1613208 5742808 1613280 5742808 1613368 5742856 -1615632 5735512 1615584 5735552 1613368 5742856 1613432 5742904 -1615632 5735512 1615320 5735328 1615584 5735552 1613432 5742904 -1615584 5735552 1613280 5742808 1613368 5742856 1613432 5742904 -1615584 5735552 1615632 5735512 1615320 5735328 1613208 5742808 -1615320 5735328 1615584 5735552 1615632 5735512 1615632 5735416 -1615320 5735328 1615584 5735552 1615632 5735416 1615584 5735320 -1615584 5735552 1613432 5742904 1615632 5735512 1615632 5735416 -1615320 5735328 1615584 5735552 1615584 5735320 1615352 5735280 -1615320 5735328 1613208 5742808 1615584 5735552 1615584 5735320 -1615584 5735552 1615632 5735512 1615632 5735416 1615584 5735320 -1615632 5735512 1615584 5735552 1613432 5742904 1613488 5742960 -1615632 5735512 1615632 5735416 1615584 5735552 1613488 5742960 -1615584 5735552 1613368 5742856 1613432 5742904 1613488 5742960 -1615632 5735512 1615584 5735552 1613488 5742960 1613528 5743008 -1615632 5735512 1615632 5735416 1615584 5735552 1613528 5743008 -1615632 5735512 1615584 5735552 1613528 5743008 1615368 5744400 -1615632 5735512 1615632 5735416 1615584 5735552 1615368 5744400 -1615632 5735512 1615584 5735552 1615368 5744400 1615496 5744536 -1613528 5743008 1615248 5744352 1615368 5744400 1615584 5735552 -1615584 5735552 1613432 5742904 1613488 5742960 1613528 5743008 -1615584 5735552 1613488 5742960 1613528 5743008 1615368 5744400 -1615584 5735552 1615560 5735560 1613208 5742808 1613280 5742808 -1615584 5735552 1615560 5735560 1613280 5742808 1613368 5742856 -1615560 5735560 1613208 5742808 1613280 5742808 1613368 5742856 -1613208 5742808 1615560 5735560 1615320 5735328 1604928 5714896 -1615584 5735552 1615560 5735560 1613368 5742856 1613432 5742904 -1615560 5735560 1613280 5742808 1613368 5742856 1613432 5742904 -1615584 5735552 1615560 5735560 1613432 5742904 1613488 5742960 -1615560 5735560 1613368 5742856 1613432 5742904 1613488 5742960 -1615584 5735552 1615320 5735328 1615560 5735560 1613488 5742960 -1615320 5735328 1615560 5735560 1615584 5735552 1615584 5735320 -1615584 5735552 1615632 5735416 1615584 5735320 1615560 5735560 -1615320 5735328 1615560 5735560 1615584 5735320 1615352 5735280 -1615560 5735560 1613488 5742960 1615584 5735552 1615632 5735416 -1615584 5735320 1615320 5735328 1615560 5735560 1615632 5735416 -1615560 5735560 1615320 5735328 1613208 5742808 1613280 5742808 -1615584 5735552 1615632 5735512 1615632 5735416 1615560 5735560 -1615584 5735552 1615560 5735560 1613488 5742960 1613528 5743008 -1615320 5735328 1613208 5742808 1615560 5735560 1615584 5735320 -1613208 5742808 1615512 5735544 1615320 5735328 1604928 5714896 -1615560 5735560 1615512 5735544 1613208 5742808 1613280 5742808 -1615560 5735560 1615512 5735544 1613280 5742808 1613368 5742856 -1615560 5735560 1615320 5735328 1615512 5735544 1613280 5742808 -1615320 5735328 1615512 5735544 1615560 5735560 1615584 5735320 -1615320 5735328 1613208 5742808 1615512 5735544 1615584 5735320 -1615320 5735328 1615512 5735544 1615584 5735320 1615352 5735280 -1615560 5735560 1615632 5735416 1615584 5735320 1615512 5735544 -1615560 5735560 1615584 5735552 1615632 5735416 1615512 5735544 -1615632 5735416 1615584 5735320 1615512 5735544 1615584 5735552 -1615584 5735552 1615632 5735512 1615632 5735416 1615512 5735544 -1615584 5735552 1615632 5735512 1615512 5735544 1615560 5735560 -1615632 5735416 1615584 5735320 1615512 5735544 1615632 5735512 -1615512 5735544 1613280 5742808 1615560 5735560 1615584 5735552 -1615584 5735320 1615320 5735328 1615512 5735544 1615632 5735416 -1615512 5735544 1615320 5735328 1613208 5742808 1613280 5742808 -1615320 5735328 1615424 5735488 1615512 5735544 1615584 5735320 -1615320 5735328 1613208 5742808 1615424 5735488 1615584 5735320 -1615424 5735488 1613208 5742808 1615512 5735544 1615584 5735320 -1615320 5735328 1615424 5735488 1615584 5735320 1615352 5735280 -1615320 5735328 1613208 5742808 1615424 5735488 1615352 5735280 -1615424 5735488 1615512 5735544 1615584 5735320 1615352 5735280 -1615584 5735320 1615528 5735256 1615352 5735280 1615424 5735488 -1615584 5735320 1615528 5735256 1615424 5735488 1615512 5735544 -1615352 5735280 1615320 5735328 1615424 5735488 1615528 5735256 -1615528 5735256 1615408 5735224 1615352 5735280 1615424 5735488 -1613208 5742808 1615424 5735488 1615320 5735328 1604928 5714896 -1615512 5735544 1615632 5735416 1615584 5735320 1615424 5735488 -1615512 5735544 1615632 5735416 1615424 5735488 1613208 5742808 -1615584 5735320 1615528 5735256 1615424 5735488 1615632 5735416 -1615512 5735544 1615632 5735512 1615632 5735416 1615424 5735488 -1615512 5735544 1615424 5735488 1613208 5742808 1613280 5742808 -1615512 5735544 1615632 5735416 1615424 5735488 1613280 5742808 -1615424 5735488 1615320 5735328 1613208 5742808 1613280 5742808 -1615512 5735544 1615424 5735488 1613280 5742808 1615560 5735560 -1615320 5735328 1615360 5735448 1615424 5735488 1615352 5735280 -1615360 5735448 1613208 5742808 1615424 5735488 1615352 5735280 -1615424 5735488 1615360 5735448 1613208 5742808 1613280 5742808 -1615424 5735488 1615352 5735280 1615360 5735448 1613280 5742808 -1615360 5735448 1615320 5735328 1613208 5742808 1613280 5742808 -1615320 5735328 1613208 5742808 1615360 5735448 1615352 5735280 -1615424 5735488 1615528 5735256 1615352 5735280 1615360 5735448 -1615424 5735488 1615528 5735256 1615360 5735448 1613280 5742808 -1615352 5735280 1615320 5735328 1615360 5735448 1615528 5735256 -1615424 5735488 1615584 5735320 1615528 5735256 1615360 5735448 -1615528 5735256 1615408 5735224 1615352 5735280 1615360 5735448 -1613208 5742808 1615360 5735448 1615320 5735328 1604928 5714896 -1615424 5735488 1615360 5735448 1613280 5742808 1615512 5735544 -1615360 5735448 1615312 5735368 1613208 5742808 1613280 5742808 -1615320 5735328 1615312 5735368 1615360 5735448 1615352 5735280 -1613208 5742808 1615312 5735368 1615320 5735328 1604928 5714896 -1613208 5742808 1615360 5735448 1615312 5735368 1604928 5714896 -1615320 5735328 1605064 5714952 1604928 5714896 1615312 5735368 -1615312 5735368 1615360 5735448 1615320 5735328 1604928 5714896 -1613208 5742808 1615312 5735368 1604928 5714896 1604832 5714824 -1615872 5745184 1615424 5745368 1615272 5746320 1615480 5746344 -1615872 5745184 1615424 5745368 1615480 5746344 1616016 5745272 -1615872 5745184 1615240 5744880 1615424 5745368 1616016 5745272 -1615424 5745368 1615240 5744880 1615272 5746320 1615480 5746344 -1615424 5745368 1615272 5746320 1615480 5746344 1616016 5745272 -1615480 5746344 1616232 5745520 1616016 5745272 1615424 5745368 -1616232 5745520 1616160 5745400 1616016 5745272 1615424 5745368 -1616232 5745520 1616216 5745480 1616160 5745400 1615424 5745368 -1616016 5745272 1615872 5745184 1615424 5745368 1616160 5745400 -1615480 5746344 1616232 5745520 1615424 5745368 1615272 5746320 -1616232 5745520 1616160 5745400 1615424 5745368 1615480 5746344 -1615480 5746344 1616296 5745864 1616232 5745520 1615424 5745368 -1615480 5746344 1616296 5745864 1615424 5745368 1615272 5746320 -1616232 5745520 1616160 5745400 1615424 5745368 1616296 5745864 -1615272 5746320 1615424 5745368 1615240 5744880 1614552 5745968 -1615424 5745368 1615872 5745184 1615240 5744880 1614552 5745968 -1615272 5746320 1615424 5745368 1614552 5745968 1615160 5746336 -1614552 5745968 1614792 5746280 1615160 5746336 1615424 5745368 -1615272 5746320 1615480 5746344 1615424 5745368 1615160 5746336 -1615240 5744880 1614392 5745696 1614552 5745968 1615424 5745368 -1615240 5744880 1614392 5745696 1615424 5745368 1615872 5745184 -1615240 5744880 1614928 5744824 1614392 5745696 1615424 5745368 -1615240 5744880 1614928 5744824 1615424 5745368 1615872 5745184 -1614928 5744824 1614784 5744800 1614392 5745696 1615424 5745368 -1615240 5744880 1614992 5744816 1614928 5744824 1615424 5745368 -1615240 5744880 1614992 5744816 1615424 5745368 1615872 5745184 -1614392 5745696 1614552 5745968 1615424 5745368 1614928 5744824 -1614928 5744824 1614392 5745696 1615424 5745368 1614992 5744816 -1615240 5744880 1615016 5744760 1614992 5744816 1615424 5745368 -1615424 5745368 1614392 5745696 1614552 5745968 1615160 5746336 -1615480 5746344 1615544 5746368 1616296 5745864 1615424 5745368 -1615480 5746344 1615544 5746368 1615424 5745368 1615272 5746320 -1615544 5746368 1616376 5746120 1616296 5745864 1615424 5745368 -1616296 5745864 1616232 5745520 1615424 5745368 1615544 5746368 -1616160 5745400 1615648 5745352 1615424 5745368 1616232 5745520 -1615648 5745352 1616016 5745272 1615424 5745368 1616232 5745520 -1616160 5745400 1615648 5745352 1616232 5745520 1616216 5745480 -1615424 5745368 1615648 5745352 1616016 5745272 1615872 5745184 -1615424 5745368 1616232 5745520 1615648 5745352 1615872 5745184 -1615648 5745352 1616160 5745400 1616016 5745272 1615872 5745184 -1615424 5745368 1615648 5745352 1615872 5745184 1615240 5744880 -1615424 5745368 1616232 5745520 1615648 5745352 1615240 5744880 -1615424 5745368 1615648 5745352 1615240 5744880 1614992 5744816 -1615648 5745352 1616016 5745272 1615872 5745184 1615240 5744880 -1616160 5745400 1616016 5745272 1615648 5745352 1616232 5745520 -1615424 5745368 1616296 5745864 1616232 5745520 1615648 5745352 -1615424 5745368 1616296 5745864 1615648 5745352 1615240 5744880 -1616232 5745520 1616160 5745400 1615648 5745352 1616296 5745864 -1615424 5745368 1615544 5746368 1616296 5745864 1615648 5745352 -1615424 5745368 1615544 5746368 1615648 5745352 1615240 5744880 -1616296 5745864 1616232 5745520 1615648 5745352 1615544 5746368 -1615544 5746368 1616376 5746120 1616296 5745864 1615648 5745352 -1615424 5745368 1615480 5746344 1615544 5746368 1615648 5745352 -1615424 5745368 1615480 5746344 1615648 5745352 1615240 5744880 -1615424 5745368 1615272 5746320 1615480 5746344 1615648 5745352 -1615544 5746368 1616296 5745864 1615648 5745352 1615480 5746344 -1615648 5745352 1615712 5745464 1616296 5745864 1616232 5745520 -1615712 5745464 1615544 5746368 1616296 5745864 1616232 5745520 -1615648 5745352 1615712 5745464 1616232 5745520 1616160 5745400 -1616232 5745520 1616216 5745480 1616160 5745400 1615712 5745464 -1616160 5745400 1615648 5745352 1615712 5745464 1616216 5745480 -1615648 5745352 1615712 5745464 1616160 5745400 1616016 5745272 -1615648 5745352 1615712 5745464 1616016 5745272 1615872 5745184 -1615712 5745464 1616216 5745480 1616160 5745400 1616016 5745272 -1615648 5745352 1615712 5745464 1615872 5745184 1615240 5744880 -1615712 5745464 1616160 5745400 1616016 5745272 1615872 5745184 -1615648 5745352 1615544 5746368 1615712 5745464 1615872 5745184 -1615712 5745464 1616296 5745864 1616232 5745520 1616216 5745480 -1616296 5745864 1615712 5745464 1615544 5746368 1616376 5746120 -1615544 5746368 1615712 5745464 1615648 5745352 1615480 5746344 -1615712 5745464 1615872 5745184 1615648 5745352 1615480 5746344 -1615544 5746368 1616296 5745864 1615712 5745464 1615480 5746344 -1615648 5745352 1615424 5745368 1615480 5746344 1615712 5745464 -1615648 5745352 1615424 5745368 1615712 5745464 1615872 5745184 -1615424 5745368 1615272 5746320 1615480 5746344 1615712 5745464 -1615424 5745368 1615160 5746336 1615272 5746320 1615712 5745464 -1615480 5746344 1615544 5746368 1615712 5745464 1615272 5746320 -1615424 5745368 1615272 5746320 1615712 5745464 1615648 5745352 -1615712 5745464 1615712 5745512 1616296 5745864 1616232 5745520 -1615712 5745464 1615544 5746368 1615712 5745512 1616232 5745520 -1615712 5745464 1615712 5745512 1616232 5745520 1616216 5745480 -1615712 5745512 1616296 5745864 1616232 5745520 1616216 5745480 -1615712 5745464 1615544 5746368 1615712 5745512 1616216 5745480 -1615712 5745464 1615712 5745512 1616216 5745480 1616160 5745400 -1615712 5745464 1615544 5746368 1615712 5745512 1616160 5745400 -1615712 5745464 1615712 5745512 1616160 5745400 1616016 5745272 -1615712 5745464 1615544 5746368 1615712 5745512 1616016 5745272 -1615712 5745512 1616216 5745480 1616160 5745400 1616016 5745272 -1615712 5745464 1615712 5745512 1616016 5745272 1615872 5745184 -1615712 5745512 1616232 5745520 1616216 5745480 1616160 5745400 -1615544 5746368 1615712 5745512 1615712 5745464 1615480 5746344 -1615712 5745512 1616016 5745272 1615712 5745464 1615480 5746344 -1615544 5746368 1616296 5745864 1615712 5745512 1615480 5746344 -1615712 5745512 1615544 5746368 1616296 5745864 1616232 5745520 -1616296 5745864 1615712 5745512 1615544 5746368 1616376 5746120 -1615712 5745464 1615272 5746320 1615480 5746344 1615712 5745512 -1615712 5745464 1615272 5746320 1615712 5745512 1616016 5745272 -1615712 5745464 1615424 5745368 1615272 5746320 1615712 5745512 -1615712 5745464 1615424 5745368 1615712 5745512 1616016 5745272 -1615424 5745368 1615160 5746336 1615272 5746320 1615712 5745512 -1615480 5746344 1615544 5746368 1615712 5745512 1615272 5746320 -1615272 5746320 1615480 5746344 1615712 5745512 1615424 5745368 -1615712 5745464 1615648 5745352 1615424 5745368 1615712 5745512 -1615712 5745512 1615664 5745704 1615544 5746368 1616296 5745864 -1615712 5745512 1615480 5746344 1615664 5745704 1616296 5745864 -1615664 5745704 1615480 5746344 1615544 5746368 1616296 5745864 -1615480 5746344 1615664 5745704 1615712 5745512 1615272 5746320 -1615664 5745704 1616296 5745864 1615712 5745512 1615272 5746320 -1615480 5746344 1615544 5746368 1615664 5745704 1615272 5746320 -1615712 5745512 1615664 5745704 1616296 5745864 1616232 5745520 -1615712 5745512 1615664 5745704 1616232 5745520 1616216 5745480 -1615712 5745512 1615272 5746320 1615664 5745704 1616232 5745520 -1615664 5745704 1615544 5746368 1616296 5745864 1616232 5745520 -1615544 5746368 1616376 5746120 1616296 5745864 1615664 5745704 -1615712 5745512 1615424 5745368 1615272 5746320 1615664 5745704 -1615712 5745512 1615424 5745368 1615664 5745704 1616232 5745520 -1615424 5745368 1615160 5746336 1615272 5746320 1615664 5745704 -1615712 5745512 1615712 5745464 1615424 5745368 1615664 5745704 -1615272 5746320 1615480 5746344 1615664 5745704 1615424 5745368 -1615664 5745704 1615656 5745816 1616296 5745864 1616232 5745520 -1615544 5746368 1615656 5745816 1615664 5745704 1615480 5746344 -1615544 5746368 1616296 5745864 1615656 5745816 1615480 5746344 -1615656 5745816 1616296 5745864 1615664 5745704 1615480 5746344 -1615664 5745704 1615272 5746320 1615480 5746344 1615656 5745816 -1615480 5746344 1615544 5746368 1615656 5745816 1615272 5746320 -1615664 5745704 1615272 5746320 1615656 5745816 1616296 5745864 -1615664 5745704 1615424 5745368 1615272 5746320 1615656 5745816 -1615424 5745368 1615160 5746336 1615272 5746320 1615656 5745816 -1615424 5745368 1614552 5745968 1615160 5746336 1615656 5745816 -1615664 5745704 1615424 5745368 1615656 5745816 1616296 5745864 -1615272 5746320 1615480 5746344 1615656 5745816 1615160 5746336 -1615424 5745368 1615160 5746336 1615656 5745816 1615664 5745704 -1616296 5745864 1615656 5745816 1615544 5746368 1616376 5746120 -1615656 5745816 1615480 5746344 1615544 5746368 1616376 5746120 -1616296 5745864 1615664 5745704 1615656 5745816 1616376 5746120 -1615664 5745704 1615712 5745512 1615424 5745368 1615656 5745816 -1615544 5746368 1615608 5746456 1616376 5746120 1615656 5745816 -1615544 5746368 1615608 5746456 1615656 5745816 1615480 5746344 -1616376 5746120 1616296 5745864 1615656 5745816 1615608 5746456 -1615608 5746456 1615640 5746528 1616376 5746120 1615656 5745816 -1615656 5745816 1615704 5745872 1616376 5746120 1616296 5745864 -1615656 5745816 1615608 5746456 1615704 5745872 1616296 5745864 -1615704 5745872 1615608 5746456 1616376 5746120 1616296 5745864 -1615656 5745816 1615704 5745872 1616296 5745864 1615664 5745704 -1616296 5745864 1616232 5745520 1615664 5745704 1615704 5745872 -1615656 5745816 1615608 5746456 1615704 5745872 1615664 5745704 -1615664 5745704 1615656 5745816 1615704 5745872 1616232 5745520 -1616232 5745520 1615712 5745512 1615664 5745704 1615704 5745872 -1615704 5745872 1616376 5746120 1616296 5745864 1616232 5745520 -1616376 5746120 1615704 5745872 1615608 5746456 1615640 5746528 -1615608 5746456 1615704 5745872 1615656 5745816 1615544 5746368 -1615704 5745872 1615664 5745704 1615656 5745816 1615544 5746368 -1615656 5745816 1615480 5746344 1615544 5746368 1615704 5745872 -1615656 5745816 1615272 5746320 1615480 5746344 1615704 5745872 -1615656 5745816 1615480 5746344 1615704 5745872 1615664 5745704 -1615608 5746456 1616376 5746120 1615704 5745872 1615544 5746368 -1615544 5746368 1615608 5746456 1615704 5745872 1615480 5746344 -1616376 5746120 1615736 5745880 1615704 5745872 1615608 5746456 -1616376 5746120 1616296 5745864 1615736 5745880 1615608 5746456 -1615704 5745872 1615544 5746368 1615608 5746456 1615736 5745880 -1615608 5746456 1616376 5746120 1615736 5745880 1615544 5746368 -1615736 5745880 1616296 5745864 1615704 5745872 1615544 5746368 -1615704 5745872 1615736 5745880 1616296 5745864 1616232 5745520 -1615704 5745872 1615736 5745880 1616232 5745520 1615664 5745704 -1615704 5745872 1615736 5745880 1615664 5745704 1615656 5745816 -1615736 5745880 1616232 5745520 1615664 5745704 1615656 5745816 -1615736 5745880 1616376 5746120 1616296 5745864 1616232 5745520 -1615704 5745872 1615544 5746368 1615736 5745880 1615656 5745816 -1616232 5745520 1615712 5745512 1615664 5745704 1615736 5745880 -1615736 5745880 1616296 5745864 1616232 5745520 1615664 5745704 -1616376 5746120 1615736 5745880 1615608 5746456 1615640 5746528 -1615704 5745872 1615480 5746344 1615544 5746368 1615736 5745880 -1616296 5745864 1615936 5745824 1615736 5745880 1616376 5746120 -1615736 5745880 1615608 5746456 1616376 5746120 1615936 5745824 -1616376 5746120 1616296 5745864 1615936 5745824 1615608 5746456 -1615736 5745880 1615544 5746368 1615608 5746456 1615936 5745824 -1615736 5745880 1615936 5745824 1616232 5745520 1615664 5745704 -1615736 5745880 1615936 5745824 1615664 5745704 1615656 5745816 -1616232 5745520 1615712 5745512 1615664 5745704 1615936 5745824 -1616232 5745520 1616216 5745480 1615712 5745512 1615936 5745824 -1616216 5745480 1616160 5745400 1615712 5745512 1615936 5745824 -1616216 5745480 1616160 5745400 1615936 5745824 1616232 5745520 -1616160 5745400 1616016 5745272 1615712 5745512 1615936 5745824 -1615712 5745512 1615664 5745704 1615936 5745824 1616160 5745400 -1615664 5745704 1615736 5745880 1615936 5745824 1615712 5745512 -1615608 5746456 1615640 5746528 1616376 5746120 1615936 5745824 -1616296 5745864 1616232 5745520 1615936 5745824 1616376 5746120 -1615936 5745824 1615664 5745704 1615736 5745880 1615608 5746456 -1615936 5745824 1616296 5745864 1616232 5745520 1616216 5745480 -1616376 5746120 1616008 5745856 1615936 5745824 1615608 5746456 -1616376 5746120 1616296 5745864 1616008 5745856 1615608 5746456 -1616376 5746120 1616008 5745856 1615608 5746456 1615640 5746528 -1615936 5745824 1615736 5745880 1615608 5746456 1616008 5745856 -1615608 5746456 1616376 5746120 1616008 5745856 1615736 5745880 -1615736 5745880 1615544 5746368 1615608 5746456 1616008 5745856 -1615936 5745824 1616008 5745856 1616296 5745864 1616232 5745520 -1616008 5745856 1616376 5746120 1616296 5745864 1616232 5745520 -1616008 5745856 1616232 5745520 1615936 5745824 1615736 5745880 -1615936 5745824 1616008 5745856 1616232 5745520 1616216 5745480 -1616008 5745856 1616104 5745936 1616376 5746120 1616296 5745864 -1616008 5745856 1616104 5745936 1616296 5745864 1616232 5745520 -1616008 5745856 1615608 5746456 1616104 5745936 1616296 5745864 -1616104 5745936 1615608 5746456 1616376 5746120 1616296 5745864 -1615608 5746456 1616104 5745936 1616008 5745856 1615736 5745880 -1616104 5745936 1616296 5745864 1616008 5745856 1615736 5745880 -1615608 5746456 1616376 5746120 1616104 5745936 1615736 5745880 -1615608 5746456 1616104 5745936 1615736 5745880 1615544 5746368 -1616376 5746120 1616104 5745936 1615608 5746456 1615640 5746528 -1616376 5746120 1616104 5745936 1615640 5746528 1616480 5746336 -1616376 5746120 1616296 5745864 1616104 5745936 1615640 5746528 -1616104 5745936 1615736 5745880 1615608 5746456 1615640 5746528 -1615608 5746456 1615624 5746504 1615640 5746528 1616104 5745936 -1616008 5745856 1615936 5745824 1615736 5745880 1616104 5745936 -1616376 5746120 1616144 5746016 1615640 5746528 1616480 5746336 -1615640 5746528 1615648 5746688 1616480 5746336 1616144 5746016 -1616144 5746016 1616104 5745936 1615640 5746528 1616480 5746336 -1616104 5745936 1616144 5746016 1616376 5746120 1616296 5745864 -1616104 5745936 1616144 5746016 1616296 5745864 1616008 5745856 -1616104 5745936 1615640 5746528 1616144 5746016 1616296 5745864 -1616376 5746120 1616296 5745864 1616144 5746016 1616480 5746336 -1615640 5746528 1616144 5746016 1616104 5745936 1615608 5746456 -1615640 5746528 1616480 5746336 1616144 5746016 1615608 5746456 -1616144 5746016 1616296 5745864 1616104 5745936 1615608 5746456 -1616104 5745936 1615736 5745880 1615608 5746456 1616144 5746016 -1616104 5745936 1615736 5745880 1616144 5746016 1616296 5745864 -1615640 5746528 1616144 5746016 1615608 5746456 1615624 5746504 -1616104 5745936 1616008 5745856 1615736 5745880 1616144 5746016 -1616104 5745936 1616008 5745856 1616144 5746016 1616296 5745864 -1615736 5745880 1615608 5746456 1616144 5746016 1616008 5745856 -1615736 5745880 1615544 5746368 1615608 5746456 1616144 5746016 -1615736 5745880 1615544 5746368 1616144 5746016 1616008 5745856 -1615736 5745880 1615704 5745872 1615544 5746368 1616144 5746016 -1615608 5746456 1615640 5746528 1616144 5746016 1615544 5746368 -1616008 5745856 1615936 5745824 1615736 5745880 1616144 5746016 -1616480 5746336 1616160 5746160 1615640 5746528 1615648 5746688 -1616144 5746016 1616160 5746160 1616480 5746336 1616376 5746120 -1616480 5746336 1616376 5746120 1616160 5746160 1615648 5746688 -1616144 5746016 1615640 5746528 1616160 5746160 1616376 5746120 -1615640 5746528 1616160 5746160 1616144 5746016 1615608 5746456 -1616160 5746160 1616376 5746120 1616144 5746016 1615608 5746456 -1616480 5746336 1616160 5746160 1615648 5746688 1615824 5746976 -1616160 5746160 1615640 5746528 1615648 5746688 1615824 5746976 -1616480 5746336 1616376 5746120 1616160 5746160 1615824 5746976 -1616144 5746016 1616160 5746160 1616376 5746120 1616296 5745864 -1615640 5746528 1616160 5746160 1615608 5746456 1615624 5746504 -1616144 5746016 1615544 5746368 1615608 5746456 1616160 5746160 -1616144 5746016 1615544 5746368 1616160 5746160 1616376 5746120 -1615608 5746456 1615640 5746528 1616160 5746160 1615544 5746368 -1616144 5746016 1615736 5745880 1615544 5746368 1616160 5746160 -1616144 5746016 1615736 5745880 1616160 5746160 1616376 5746120 -1616144 5746016 1616008 5745856 1615736 5745880 1616160 5746160 -1615736 5745880 1615704 5745872 1615544 5746368 1616160 5746160 -1615544 5746368 1615608 5746456 1616160 5746160 1615736 5745880 -1616160 5746160 1615608 5746456 1615640 5746528 1615648 5746688 -1616480 5746336 1616160 5746160 1615824 5746976 1616016 5747072 -1615648 5746688 1615680 5746848 1615824 5746976 1616160 5746160 -1616160 5746160 1616144 5746240 1616480 5746336 1616376 5746120 -1616160 5746160 1616144 5746240 1616376 5746120 1616144 5746016 -1616160 5746160 1615824 5746976 1616144 5746240 1616376 5746120 -1615824 5746976 1616144 5746240 1616160 5746160 1615648 5746688 -1616160 5746160 1615640 5746528 1615648 5746688 1616144 5746240 -1616144 5746240 1616376 5746120 1616160 5746160 1615640 5746528 -1615648 5746688 1615824 5746976 1616144 5746240 1615640 5746528 -1616144 5746240 1615824 5746976 1616480 5746336 1616376 5746120 -1615824 5746976 1616480 5746336 1616144 5746240 1615648 5746688 -1616160 5746160 1615608 5746456 1615640 5746528 1616144 5746240 -1615640 5746528 1615648 5746688 1616144 5746240 1615608 5746456 -1616160 5746160 1615608 5746456 1616144 5746240 1616376 5746120 -1616160 5746160 1615544 5746368 1615608 5746456 1616144 5746240 -1616160 5746160 1615544 5746368 1616144 5746240 1616376 5746120 -1615608 5746456 1615624 5746504 1615640 5746528 1616144 5746240 -1616160 5746160 1615736 5745880 1615544 5746368 1616144 5746240 -1616160 5746160 1615736 5745880 1616144 5746240 1616376 5746120 -1615544 5746368 1615608 5746456 1616144 5746240 1615736 5745880 -1616160 5746160 1616144 5746016 1615736 5745880 1616144 5746240 -1615736 5745880 1615704 5745872 1615544 5746368 1616144 5746240 -1615608 5746456 1615640 5746528 1616144 5746240 1615544 5746368 -1616480 5746336 1616144 5746240 1615824 5746976 1616016 5747072 -1616480 5746336 1616376 5746120 1616144 5746240 1616016 5747072 -1616144 5746240 1615648 5746688 1615824 5746976 1616016 5747072 -1615824 5746976 1616144 5746240 1615648 5746688 1615680 5746848 -1616480 5746336 1616144 5746240 1616016 5747072 1616616 5746536 -1616480 5746336 1616376 5746120 1616144 5746240 1616616 5746536 -1616016 5747072 1616352 5747304 1616616 5746536 1616144 5746240 -1616144 5746240 1615824 5746976 1616016 5747072 1616616 5746536 -1615648 5746688 1616080 5746328 1616144 5746240 1615640 5746528 -1616144 5746240 1615608 5746456 1615640 5746528 1616080 5746328 -1615640 5746528 1615648 5746688 1616080 5746328 1615608 5746456 -1616080 5746328 1615824 5746976 1616144 5746240 1615608 5746456 -1616144 5746240 1616080 5746328 1615824 5746976 1616016 5747072 -1616144 5746240 1615608 5746456 1616080 5746328 1616016 5747072 -1615608 5746456 1615624 5746504 1615640 5746528 1616080 5746328 -1616144 5746240 1615544 5746368 1615608 5746456 1616080 5746328 -1615608 5746456 1615640 5746528 1616080 5746328 1615544 5746368 -1616144 5746240 1615736 5745880 1615544 5746368 1616080 5746328 -1616144 5746240 1615736 5745880 1616080 5746328 1616016 5747072 -1615736 5745880 1615704 5745872 1615544 5746368 1616080 5746328 -1616144 5746240 1616160 5746160 1615736 5745880 1616080 5746328 -1615736 5745880 1615544 5746368 1616080 5746328 1616160 5746160 -1616144 5746240 1616160 5746160 1616080 5746328 1616016 5747072 -1616160 5746160 1616144 5746016 1615736 5745880 1616080 5746328 -1615544 5746368 1615608 5746456 1616080 5746328 1615736 5745880 -1616080 5746328 1615648 5746688 1615824 5746976 1616016 5747072 -1615648 5746688 1615824 5746976 1616080 5746328 1615640 5746528 -1616144 5746240 1616080 5746328 1616016 5747072 1616616 5746536 -1616144 5746240 1616160 5746160 1616080 5746328 1616616 5746536 -1616080 5746328 1615824 5746976 1616016 5747072 1616616 5746536 -1616016 5747072 1616352 5747304 1616616 5746536 1616080 5746328 -1615824 5746976 1616080 5746328 1615648 5746688 1615680 5746848 -1616144 5746240 1616080 5746328 1616616 5746536 1616480 5746336 -1616144 5746240 1616080 5746328 1616480 5746336 1616376 5746120 -1616144 5746240 1616160 5746160 1616080 5746328 1616480 5746336 -1616080 5746328 1616016 5747072 1616616 5746536 1616480 5746336 -1615608 5746456 1616016 5746352 1616080 5746328 1615544 5746368 -1616080 5746328 1616016 5746352 1615640 5746528 1615648 5746688 -1615640 5746528 1616016 5746352 1615608 5746456 1615624 5746504 -1616080 5746328 1615736 5745880 1615544 5746368 1616016 5746352 -1615544 5746368 1615608 5746456 1616016 5746352 1615736 5745880 -1616080 5746328 1616160 5746160 1615736 5745880 1616016 5746352 -1616160 5746160 1616144 5746016 1615736 5745880 1616016 5746352 -1616160 5746160 1616144 5746016 1616016 5746352 1616080 5746328 -1616144 5746016 1616008 5745856 1615736 5745880 1616016 5746352 -1615736 5745880 1615704 5745872 1615544 5746368 1616016 5746352 -1616080 5746328 1616144 5746240 1616160 5746160 1616016 5746352 -1616160 5746160 1616144 5746016 1616016 5746352 1616144 5746240 -1615736 5745880 1615544 5746368 1616016 5746352 1616144 5746016 -1616016 5746352 1615648 5746688 1616080 5746328 1616144 5746240 -1616080 5746328 1616016 5746352 1615648 5746688 1615824 5746976 -1616016 5746352 1615640 5746528 1615648 5746688 1615824 5746976 -1616080 5746328 1616016 5746352 1615824 5746976 1616016 5747072 -1616080 5746328 1616016 5746352 1616016 5747072 1616616 5746536 -1616080 5746328 1616144 5746240 1616016 5746352 1616016 5747072 -1616016 5746352 1615648 5746688 1615824 5746976 1616016 5747072 -1615648 5746688 1615680 5746848 1615824 5746976 1616016 5746352 -1616016 5746352 1615608 5746456 1615640 5746528 1615648 5746688 -1615608 5746456 1615640 5746528 1616016 5746352 1615544 5746368 -1616016 5746352 1615936 5746352 1615544 5746368 1615608 5746456 -1615544 5746368 1615936 5746352 1615736 5745880 1615704 5745872 -1615736 5745880 1615936 5746352 1616016 5746352 1616144 5746016 -1615736 5745880 1615936 5746352 1616144 5746016 1616008 5745856 -1616144 5746016 1616104 5745936 1616008 5745856 1615936 5746352 -1616016 5746352 1616160 5746160 1616144 5746016 1615936 5746352 -1616016 5746352 1616144 5746240 1616160 5746160 1615936 5746352 -1616160 5746160 1616144 5746016 1615936 5746352 1616144 5746240 -1616016 5746352 1616080 5746328 1616144 5746240 1615936 5746352 -1615736 5745880 1615544 5746368 1615936 5746352 1616008 5745856 -1615936 5746352 1616160 5746160 1616144 5746016 1616008 5745856 -1616016 5746352 1616144 5746240 1615936 5746352 1615608 5746456 -1616016 5746352 1615936 5746352 1615608 5746456 1615640 5746528 -1615936 5746352 1615544 5746368 1615608 5746456 1615640 5746528 -1615608 5746456 1615624 5746504 1615640 5746528 1615936 5746352 -1616016 5746352 1615936 5746352 1615640 5746528 1615648 5746688 -1616016 5746352 1615936 5746352 1615648 5746688 1615824 5746976 -1616016 5746352 1616144 5746240 1615936 5746352 1615648 5746688 -1615936 5746352 1615608 5746456 1615640 5746528 1615648 5746688 -1615936 5746352 1615736 5745880 1615544 5746368 1615608 5746456 -1615736 5745880 1615936 5746352 1616008 5745856 1615936 5745824 -1615544 5746368 1615792 5746256 1615736 5745880 1615704 5745872 -1615736 5745880 1615792 5746256 1615936 5746352 1616008 5745856 -1615936 5746352 1616144 5746016 1616008 5745856 1615792 5746256 -1616144 5746016 1616104 5745936 1616008 5745856 1615792 5746256 -1616144 5746016 1616104 5745936 1615792 5746256 1615936 5746352 -1616008 5745856 1615736 5745880 1615792 5746256 1616104 5745936 -1615544 5746368 1615936 5746352 1615792 5746256 1615704 5745872 -1615792 5746256 1616008 5745856 1615736 5745880 1615704 5745872 -1615936 5746352 1616160 5746160 1616144 5746016 1615792 5746256 -1616144 5746016 1616104 5745936 1615792 5746256 1616160 5746160 -1615936 5746352 1616144 5746240 1616160 5746160 1615792 5746256 -1615544 5746368 1615792 5746256 1615704 5745872 1615480 5746344 -1615704 5745872 1615656 5745816 1615480 5746344 1615792 5746256 -1615792 5746256 1615736 5745880 1615704 5745872 1615480 5746344 -1615544 5746368 1615936 5746352 1615792 5746256 1615480 5746344 -1615936 5746352 1615792 5746256 1615544 5746368 1615608 5746456 -1615936 5746352 1615792 5746256 1615608 5746456 1615640 5746528 -1615608 5746456 1615624 5746504 1615640 5746528 1615792 5746256 -1615792 5746256 1615480 5746344 1615544 5746368 1615608 5746456 -1615936 5746352 1615792 5746256 1615640 5746528 1615648 5746688 -1615792 5746256 1615544 5746368 1615608 5746456 1615640 5746528 -1615792 5746256 1615640 5746528 1615936 5746352 1616160 5746160 -1615736 5745880 1615792 5746256 1616008 5745856 1615936 5745824 -1615480 5746344 1615648 5746080 1615704 5745872 1615656 5745816 -1615648 5746080 1615792 5746256 1615704 5745872 1615656 5745816 -1615480 5746344 1615648 5746080 1615656 5745816 1615272 5746320 -1615648 5746080 1615704 5745872 1615656 5745816 1615272 5746320 -1615656 5745816 1615160 5746336 1615272 5746320 1615648 5746080 -1615704 5745872 1615648 5746080 1615792 5746256 1615736 5745880 -1615704 5745872 1615656 5745816 1615648 5746080 1615736 5745880 -1615648 5746080 1615480 5746344 1615792 5746256 1615736 5745880 -1615792 5746256 1616008 5745856 1615736 5745880 1615648 5746080 -1615480 5746344 1615792 5746256 1615648 5746080 1615272 5746320 -1615792 5746256 1615648 5746080 1615480 5746344 1615544 5746368 -1615792 5746256 1615648 5746080 1615544 5746368 1615608 5746456 -1615792 5746256 1615736 5745880 1615648 5746080 1615544 5746368 -1615648 5746080 1615272 5746320 1615480 5746344 1615544 5746368 -1615160 5746336 1615528 5745952 1615656 5745816 1615424 5745368 -1615160 5746336 1615528 5745952 1615424 5745368 1614552 5745968 -1615160 5746336 1615528 5745952 1614552 5745968 1614792 5746280 -1615160 5746336 1615528 5745952 1614792 5746280 1615080 5746352 -1615528 5745952 1615424 5745368 1614552 5745968 1614792 5746280 -1614552 5745968 1614760 5746280 1614792 5746280 1615528 5745952 -1615528 5745952 1615656 5745816 1615424 5745368 1614552 5745968 -1615656 5745816 1615528 5745952 1615272 5746320 1615648 5746080 -1615528 5745952 1615160 5746336 1615272 5746320 1615648 5746080 -1615272 5746320 1615480 5746344 1615648 5746080 1615528 5745952 -1615272 5746320 1615480 5746344 1615528 5745952 1615160 5746336 -1615656 5745816 1615528 5745952 1615648 5746080 1615704 5745872 -1615648 5746080 1615736 5745880 1615704 5745872 1615528 5745952 -1615648 5746080 1615704 5745872 1615528 5745952 1615480 5746344 -1615656 5745816 1615664 5745704 1615424 5745368 1615528 5745952 -1615424 5745368 1614552 5745968 1615528 5745952 1615664 5745704 -1615664 5745704 1615712 5745512 1615424 5745368 1615528 5745952 -1615424 5745368 1614392 5745696 1614552 5745968 1615528 5745952 -1615480 5746344 1615544 5746368 1615648 5746080 1615528 5745952 -1615160 5746336 1615272 5746320 1615528 5745952 1614792 5746280 -1615528 5745952 1615704 5745872 1615656 5745816 1615664 5745704 -1615528 5745952 1615384 5745896 1614552 5745968 1614792 5746280 -1615528 5745952 1615384 5745896 1614792 5746280 1615160 5746336 -1614792 5746280 1615080 5746352 1615160 5746336 1615384 5745896 -1615160 5746336 1615528 5745952 1615384 5745896 1615080 5746352 -1614792 5746280 1614912 5746344 1615080 5746352 1615384 5745896 -1615384 5745896 1614552 5745968 1614792 5746280 1615080 5746352 -1615384 5745896 1615424 5745368 1614552 5745968 1614792 5746280 -1614552 5745968 1614760 5746280 1614792 5746280 1615384 5745896 -1615424 5745368 1615384 5745896 1615528 5745952 1615664 5745704 -1615528 5745952 1615656 5745816 1615664 5745704 1615384 5745896 -1615664 5745704 1615424 5745368 1615384 5745896 1615656 5745816 -1615424 5745368 1615384 5745896 1615664 5745704 1615712 5745512 -1614552 5745968 1615384 5745896 1615424 5745368 1614392 5745696 -1615528 5745952 1615384 5745896 1615160 5746336 1615272 5746320 -1615528 5745952 1615384 5745896 1615272 5746320 1615480 5746344 -1615384 5745896 1615080 5746352 1615160 5746336 1615272 5746320 -1615528 5745952 1615656 5745816 1615384 5745896 1615272 5746320 -1615528 5745952 1615704 5745872 1615656 5745816 1615384 5745896 -1615424 5745368 1614552 5745968 1615384 5745896 1615664 5745704 -1615384 5745896 1615336 5745936 1615080 5746352 1615160 5746336 -1615384 5745896 1615336 5745936 1615160 5746336 1615272 5746320 -1615336 5745936 1615080 5746352 1615160 5746336 1615272 5746320 -1615080 5746352 1615336 5745936 1614792 5746280 1614912 5746344 -1614792 5746280 1615336 5745936 1615384 5745896 1614552 5745968 -1615384 5745896 1615424 5745368 1614552 5745968 1615336 5745936 -1614552 5745968 1614792 5746280 1615336 5745936 1615424 5745368 -1615384 5745896 1615424 5745368 1615336 5745936 1615272 5746320 -1614792 5746280 1615336 5745936 1614552 5745968 1614760 5746280 -1615424 5745368 1614392 5745696 1614552 5745968 1615336 5745936 -1615336 5745936 1614552 5745968 1614792 5746280 1614912 5746344 -1615384 5745896 1615336 5745936 1615272 5746320 1615528 5745952 -1615272 5746320 1615480 5746344 1615528 5745952 1615336 5745936 -1615336 5745936 1615160 5746336 1615272 5746320 1615480 5746344 -1615480 5746344 1615648 5746080 1615528 5745952 1615336 5745936 -1615384 5745896 1615424 5745368 1615336 5745936 1615528 5745952 -1615528 5745952 1615384 5745896 1615336 5745936 1615480 5746344 -1615384 5745896 1615664 5745704 1615424 5745368 1615336 5745936 -1615336 5745936 1614912 5746344 1615080 5746352 1615160 5746336 -1615336 5745936 1615304 5746000 1615160 5746336 1615272 5746320 -1615336 5745936 1615304 5746000 1615272 5746320 1615480 5746344 -1615336 5745936 1615304 5746000 1615480 5746344 1615528 5745952 -1615304 5746000 1615272 5746320 1615480 5746344 1615528 5745952 -1615304 5746000 1615160 5746336 1615272 5746320 1615480 5746344 -1615480 5746344 1615648 5746080 1615528 5745952 1615304 5746000 -1615336 5745936 1615080 5746352 1615304 5746000 1615528 5745952 -1615304 5746000 1615080 5746352 1615160 5746336 1615272 5746320 -1615336 5745936 1615304 5746000 1615528 5745952 1615384 5745896 -1615080 5746352 1615304 5746000 1615336 5745936 1614912 5746344 -1615336 5745936 1614792 5746280 1614912 5746344 1615304 5746000 -1615080 5746352 1615160 5746336 1615304 5746000 1614912 5746344 -1615304 5746000 1615528 5745952 1615336 5745936 1614792 5746280 -1615336 5745936 1614552 5745968 1614792 5746280 1615304 5746000 -1614792 5746280 1614912 5746344 1615304 5746000 1614552 5745968 -1615336 5745936 1615424 5745368 1614552 5745968 1615304 5746000 -1614552 5745968 1614760 5746280 1614792 5746280 1615304 5746000 -1615336 5745936 1614552 5745968 1615304 5746000 1615528 5745952 -1614912 5746344 1615080 5746352 1615304 5746000 1614792 5746280 -1615304 5746000 1615224 5746104 1615080 5746352 1615160 5746336 -1615304 5746000 1614912 5746344 1615224 5746104 1615160 5746336 -1615224 5746104 1614912 5746344 1615080 5746352 1615160 5746336 -1615304 5746000 1615224 5746104 1615160 5746336 1615272 5746320 -1615304 5746000 1615224 5746104 1615272 5746320 1615480 5746344 -1615304 5746000 1615224 5746104 1615480 5746344 1615528 5745952 -1615304 5746000 1614912 5746344 1615224 5746104 1615480 5746344 -1615224 5746104 1615080 5746352 1615160 5746336 1615272 5746320 -1615224 5746104 1615160 5746336 1615272 5746320 1615480 5746344 -1614912 5746344 1615224 5746104 1615304 5746000 1614792 5746280 -1615304 5746000 1614552 5745968 1614792 5746280 1615224 5746104 -1614552 5745968 1614760 5746280 1614792 5746280 1615224 5746104 -1615224 5746104 1615480 5746344 1615304 5746000 1614552 5745968 -1614912 5746344 1615080 5746352 1615224 5746104 1614792 5746280 -1615304 5746000 1615336 5745936 1614552 5745968 1615224 5746104 -1614792 5746280 1614912 5746344 1615224 5746104 1614552 5745968 -1614552 5745968 1615152 5746120 1615224 5746104 1615304 5746000 -1614552 5745968 1614792 5746280 1615152 5746120 1615304 5746000 -1615152 5746120 1614792 5746280 1615224 5746104 1615304 5746000 -1614792 5746280 1615152 5746120 1614552 5745968 1614760 5746280 -1614552 5745968 1615152 5746120 1615304 5746000 1615336 5745936 -1614552 5745968 1614792 5746280 1615152 5746120 1615336 5745936 -1615152 5746120 1615224 5746104 1615304 5746000 1615336 5745936 -1614552 5745968 1615152 5746120 1615336 5745936 1615424 5745368 -1615224 5746104 1615152 5746120 1614792 5746280 1614912 5746344 -1615224 5746104 1615304 5746000 1615152 5746120 1614912 5746344 -1615152 5746120 1614552 5745968 1614792 5746280 1614912 5746344 -1615224 5746104 1615152 5746120 1614912 5746344 1615080 5746352 -1615224 5746104 1615304 5746000 1615152 5746120 1615080 5746352 -1615224 5746104 1615152 5746120 1615080 5746352 1615160 5746336 -1615224 5746104 1615304 5746000 1615152 5746120 1615160 5746336 -1615224 5746104 1615152 5746120 1615160 5746336 1615272 5746320 -1615224 5746104 1615304 5746000 1615152 5746120 1615272 5746320 -1615152 5746120 1615080 5746352 1615160 5746336 1615272 5746320 -1615224 5746104 1615152 5746120 1615272 5746320 1615480 5746344 -1615152 5746120 1614912 5746344 1615080 5746352 1615160 5746336 -1615152 5746120 1614792 5746280 1614912 5746344 1615080 5746352 -1615336 5745936 1615088 5745944 1614552 5745968 1615152 5746120 -1615088 5745944 1615424 5745368 1614552 5745968 1615152 5746120 -1614552 5745968 1614792 5746280 1615152 5746120 1615088 5745944 -1614552 5745968 1614792 5746280 1615088 5745944 1615424 5745368 -1614792 5746280 1614912 5746344 1615152 5746120 1615088 5745944 -1615152 5746120 1615336 5745936 1615088 5745944 1614792 5746280 -1615424 5745368 1615088 5745944 1615336 5745936 1615384 5745896 -1615424 5745368 1614552 5745968 1615088 5745944 1615384 5745896 -1615336 5745936 1615384 5745896 1615088 5745944 1615152 5746120 -1614552 5745968 1614760 5746280 1614792 5746280 1615088 5745944 -1614552 5745968 1615088 5745944 1615424 5745368 1614392 5745696 -1614552 5745968 1614792 5746280 1615088 5745944 1614392 5745696 -1615088 5745944 1615384 5745896 1615424 5745368 1614392 5745696 -1615424 5745368 1614928 5744824 1614392 5745696 1615088 5745944 -1615336 5745936 1615088 5745944 1615152 5746120 1615304 5746000 -1615152 5746120 1615224 5746104 1615304 5746000 1615088 5745944 -1615088 5745944 1614792 5746280 1615152 5746120 1615224 5746104 -1615336 5745936 1615384 5745896 1615088 5745944 1615304 5746000 -1615304 5746000 1615336 5745936 1615088 5745944 1615224 5746104 -1615424 5745368 1615088 5745944 1615384 5745896 1615664 5745704 -1615424 5745368 1615024 5745792 1615088 5745944 1615384 5745896 -1615088 5745944 1615336 5745936 1615384 5745896 1615024 5745792 -1615384 5745896 1615424 5745368 1615024 5745792 1615336 5745936 -1615024 5745792 1614392 5745696 1615088 5745944 1615336 5745936 -1615088 5745944 1615304 5746000 1615336 5745936 1615024 5745792 -1615424 5745368 1614392 5745696 1615024 5745792 1615384 5745896 -1614392 5745696 1615024 5745792 1615424 5745368 1614928 5744824 -1614392 5745696 1615024 5745792 1614928 5744824 1614784 5744800 -1614392 5745696 1615088 5745944 1615024 5745792 1614928 5744824 -1615024 5745792 1615384 5745896 1615424 5745368 1614928 5744824 -1615424 5745368 1614992 5744816 1614928 5744824 1615024 5745792 -1615088 5745944 1615024 5745792 1614392 5745696 1614552 5745968 -1615088 5745944 1615024 5745792 1614552 5745968 1614792 5746280 -1615088 5745944 1615336 5745936 1615024 5745792 1614552 5745968 -1615024 5745792 1614928 5744824 1614392 5745696 1614552 5745968 -1615424 5745368 1615024 5745792 1615384 5745896 1615664 5745704 -1614392 5745696 1614928 5745632 1614928 5744824 1614784 5744800 -1614392 5745696 1615024 5745792 1614928 5745632 1614784 5744800 -1615024 5745792 1614928 5745632 1614392 5745696 1614552 5745968 -1614928 5745632 1614784 5744800 1614392 5745696 1614552 5745968 -1615024 5745792 1614928 5744824 1614928 5745632 1614552 5745968 -1614928 5744824 1614928 5745632 1615024 5745792 1615424 5745368 -1614928 5745632 1614552 5745968 1615024 5745792 1615424 5745368 -1615024 5745792 1615384 5745896 1615424 5745368 1614928 5745632 -1614928 5744824 1614928 5745632 1615424 5745368 1614992 5744816 -1615424 5745368 1615240 5744880 1614992 5744816 1614928 5745632 -1615424 5745368 1615648 5745352 1615240 5744880 1614928 5745632 -1614928 5745632 1615024 5745792 1615424 5745368 1615240 5744880 -1614992 5744816 1614928 5744824 1614928 5745632 1615240 5744880 -1614392 5745696 1614928 5745632 1614784 5744800 1614128 5745040 -1615240 5744880 1615016 5744760 1614992 5744816 1614928 5745632 -1615024 5745792 1614928 5745632 1614552 5745968 1615088 5745944 -1614928 5745632 1614992 5744816 1614928 5744824 1614784 5744800 -1614784 5744800 1614808 5745520 1614928 5745632 1614928 5744824 -1614784 5744800 1614392 5745696 1614808 5745520 1614928 5744824 -1614928 5745632 1614808 5745520 1614392 5745696 1614552 5745968 -1614808 5745520 1614784 5744800 1614392 5745696 1614552 5745968 -1614808 5745520 1614552 5745968 1614928 5745632 1614928 5744824 -1614928 5745632 1614808 5745520 1614552 5745968 1615024 5745792 -1614392 5745696 1614808 5745520 1614784 5744800 1614128 5745040 -1614392 5745696 1614552 5745968 1614808 5745520 1614128 5745040 -1614808 5745520 1614928 5744824 1614784 5744800 1614128 5745040 -1614784 5744800 1614512 5744696 1614128 5745040 1614808 5745520 -1614928 5745632 1614992 5744816 1614928 5744824 1614808 5745520 -1614928 5744824 1614784 5744800 1614808 5745520 1614992 5744816 -1614928 5745632 1614992 5744816 1614808 5745520 1614552 5745968 -1614928 5745632 1615240 5744880 1614992 5744816 1614808 5745520 -1614928 5745632 1615240 5744880 1614808 5745520 1614552 5745968 -1614928 5745632 1615424 5745368 1615240 5744880 1614808 5745520 -1615424 5745368 1615648 5745352 1615240 5744880 1614808 5745520 -1614928 5745632 1615424 5745368 1614808 5745520 1614552 5745968 -1614928 5745632 1615024 5745792 1615424 5745368 1614808 5745520 -1615240 5744880 1614992 5744816 1614808 5745520 1615424 5745368 -1615240 5744880 1615016 5744760 1614992 5744816 1614808 5745520 -1614992 5744816 1614928 5744824 1614808 5745520 1615240 5744880 -1614808 5745520 1614600 5745384 1614392 5745696 1614552 5745968 -1614128 5745040 1614600 5745384 1614808 5745520 1614784 5744800 -1614600 5745384 1614392 5745696 1614808 5745520 1614784 5744800 -1614808 5745520 1614928 5744824 1614784 5744800 1614600 5745384 -1614808 5745520 1614928 5744824 1614600 5745384 1614392 5745696 -1614808 5745520 1614992 5744816 1614928 5744824 1614600 5745384 -1614128 5745040 1614392 5745696 1614600 5745384 1614784 5744800 -1614784 5744800 1614128 5745040 1614600 5745384 1614928 5744824 -1614128 5745040 1614600 5745384 1614784 5744800 1614512 5744696 -1614128 5745040 1614600 5745384 1614512 5744696 1614352 5744672 -1614128 5745040 1614392 5745696 1614600 5745384 1614512 5744696 -1614600 5745384 1614928 5744824 1614784 5744800 1614512 5744696 -1614600 5745384 1614384 5745232 1614392 5745696 1614808 5745520 -1614128 5745040 1614384 5745232 1614600 5745384 1614512 5744696 -1614384 5745232 1614392 5745696 1614600 5745384 1614512 5744696 -1614128 5745040 1614384 5745232 1614512 5744696 1614352 5744672 -1614600 5745384 1614784 5744800 1614512 5744696 1614384 5745232 -1614600 5745384 1614784 5744800 1614384 5745232 1614392 5745696 -1614512 5744696 1614128 5745040 1614384 5745232 1614784 5744800 -1614600 5745384 1614928 5744824 1614784 5744800 1614384 5745232 -1614128 5745040 1614392 5745696 1614384 5745232 1614512 5744696 -1614128 5745040 1614368 5745192 1614512 5744696 1614352 5744672 -1614128 5745040 1614368 5745192 1614352 5744672 1614112 5744704 -1614512 5744696 1614368 5745192 1614384 5745232 1614784 5744800 -1614128 5745040 1614384 5745232 1614368 5745192 1614352 5744672 -1614368 5745192 1614784 5744800 1614512 5744696 1614352 5744672 -1614384 5745232 1614600 5745384 1614784 5744800 1614368 5745192 -1614784 5744800 1614512 5744696 1614368 5745192 1614600 5745384 -1614600 5745384 1614928 5744824 1614784 5744800 1614368 5745192 -1614368 5745192 1614128 5745040 1614384 5745232 1614600 5745384 -1614384 5745232 1614368 5745192 1614128 5745040 1614392 5745696 -1614368 5745192 1614384 5745112 1614352 5744672 1614128 5745040 -1614352 5744672 1614112 5744704 1614128 5745040 1614384 5745112 -1614368 5745192 1614384 5745112 1614128 5745040 1614384 5745232 -1614368 5745192 1614512 5744696 1614384 5745112 1614128 5745040 -1614512 5744696 1614384 5745112 1614368 5745192 1614784 5744800 -1614368 5745192 1614600 5745384 1614784 5744800 1614384 5745112 -1614384 5745112 1614128 5745040 1614368 5745192 1614600 5745384 -1614784 5744800 1614512 5744696 1614384 5745112 1614600 5745384 -1614600 5745384 1614928 5744824 1614784 5744800 1614384 5745112 -1614368 5745192 1614384 5745232 1614600 5745384 1614384 5745112 -1614600 5745384 1614784 5744800 1614384 5745112 1614384 5745232 -1614368 5745192 1614384 5745232 1614384 5745112 1614128 5745040 -1614384 5745112 1614512 5744696 1614352 5744672 1614128 5745040 -1614512 5744696 1614352 5744672 1614384 5745112 1614784 5744800 -1614384 5745112 1614384 5745056 1614352 5744672 1614128 5745040 -1614352 5744672 1614112 5744704 1614128 5745040 1614384 5745056 -1614384 5745112 1614384 5745056 1614128 5745040 1614368 5745192 -1614384 5745112 1614512 5744696 1614384 5745056 1614128 5745040 -1614512 5744696 1614384 5745056 1614384 5745112 1614784 5744800 -1614384 5745112 1614600 5745384 1614784 5744800 1614384 5745056 -1614512 5744696 1614352 5744672 1614384 5745056 1614784 5744800 -1614384 5745056 1614128 5745040 1614384 5745112 1614784 5744800 -1614384 5745056 1614512 5744696 1614352 5744672 1614128 5745040 -1614384 5745056 1614416 5745032 1614512 5744696 1614352 5744672 -1614384 5745056 1614784 5744800 1614416 5745032 1614352 5744672 -1614416 5745032 1614784 5744800 1614512 5744696 1614352 5744672 -1614784 5744800 1614416 5745032 1614384 5745056 1614384 5745112 -1614784 5744800 1614416 5745032 1614384 5745112 1614600 5745384 -1614384 5745112 1614384 5745232 1614600 5745384 1614416 5745032 -1614416 5745032 1614352 5744672 1614384 5745056 1614384 5745112 -1614784 5744800 1614416 5745032 1614600 5745384 1614928 5744824 -1614784 5744800 1614512 5744696 1614416 5745032 1614600 5745384 -1614416 5745032 1614384 5745056 1614384 5745112 1614600 5745384 -1614384 5745056 1614416 5745032 1614352 5744672 1614128 5745040 -1614416 5745032 1614448 5744968 1614512 5744696 1614352 5744672 -1614416 5745032 1614448 5744968 1614352 5744672 1614384 5745056 -1614448 5744968 1614512 5744696 1614352 5744672 1614384 5745056 -1614416 5745032 1614784 5744800 1614448 5744968 1614384 5745056 -1614784 5744800 1614448 5744968 1614416 5745032 1614600 5745384 -1614784 5744800 1614512 5744696 1614448 5744968 1614600 5745384 -1614416 5745032 1614384 5745112 1614600 5745384 1614448 5744968 -1614784 5744800 1614448 5744968 1614600 5745384 1614928 5744824 -1614448 5744968 1614384 5745056 1614416 5745032 1614600 5745384 -1614448 5744968 1614784 5744800 1614512 5744696 1614352 5744672 -1614352 5744672 1614128 5745040 1614384 5745056 1614448 5744968 -1614352 5744672 1614112 5744704 1614128 5745040 1614448 5744968 -1614384 5745056 1614416 5745032 1614448 5744968 1614128 5745040 -1614128 5745040 1614384 5745112 1614384 5745056 1614448 5744968 -1614352 5744672 1614128 5745040 1614448 5744968 1614512 5744696 -1614448 5744968 1614488 5744960 1614784 5744800 1614512 5744696 -1614448 5744968 1614600 5745384 1614488 5744960 1614512 5744696 -1614488 5744960 1614600 5745384 1614784 5744800 1614512 5744696 -1614784 5744800 1614488 5744960 1614600 5745384 1614928 5744824 -1614600 5745384 1614488 5744960 1614448 5744968 1614416 5745032 -1614488 5744960 1614512 5744696 1614448 5744968 1614416 5745032 -1614600 5745384 1614784 5744800 1614488 5744960 1614416 5745032 -1614600 5745384 1614488 5744960 1614416 5745032 1614384 5745112 -1614448 5744968 1614488 5744960 1614512 5744696 1614352 5744672 -1614488 5744960 1614513 5744972 1614784 5744800 1614512 5744696 -1614488 5744960 1614513 5744972 1614512 5744696 1614448 5744968 -1614488 5744960 1614600 5745384 1614513 5744972 1614512 5744696 -1614600 5745384 1614513 5744972 1614488 5744960 1614416 5745032 -1614513 5744972 1614512 5744696 1614488 5744960 1614416 5745032 -1614513 5744972 1614600 5745384 1614784 5744800 1614512 5744696 -1614600 5745384 1614513 5744972 1614416 5745032 1614384 5745112 -1614513 5744972 1614488 5744960 1614416 5745032 1614384 5745112 -1614600 5745384 1614513 5744972 1614384 5745112 1614384 5745232 -1614784 5744800 1614513 5744972 1614600 5745384 1614928 5744824 -1614488 5744960 1614448 5744968 1614416 5745032 1614513 5744972 -1614488 5744960 1614448 5744968 1614513 5744972 1614512 5744696 -1614416 5745032 1614384 5745112 1614513 5744972 1614448 5744968 -1614600 5745384 1614784 5744800 1614513 5744972 1614384 5745112 -1614416 5745032 1614384 5745056 1614384 5745112 1614513 5744972 -1614513 5744972 1614538 5744984 1614784 5744800 1614512 5744696 -1614513 5744972 1614538 5744984 1614512 5744696 1614488 5744960 -1614538 5744984 1614600 5745384 1614784 5744800 1614512 5744696 -1614784 5744800 1614538 5744984 1614600 5745384 1614928 5744824 -1614600 5745384 1614808 5745520 1614928 5744824 1614538 5744984 -1614784 5744800 1614512 5744696 1614538 5744984 1614928 5744824 -1614538 5744984 1614513 5744972 1614600 5745384 1614928 5744824 -1614513 5744972 1614600 5745384 1614538 5744984 1614512 5744696 -1614600 5745384 1614538 5744984 1614513 5744972 1614384 5745112 -1614600 5745384 1614538 5744984 1614384 5745112 1614384 5745232 -1614600 5745384 1614928 5744824 1614538 5744984 1614384 5745232 -1614513 5744972 1614416 5745032 1614384 5745112 1614538 5744984 -1614513 5744972 1614448 5744968 1614416 5745032 1614538 5744984 -1614384 5745112 1614368 5745192 1614384 5745232 1614538 5744984 -1614538 5744984 1614512 5744696 1614513 5744972 1614416 5745032 -1614538 5744984 1614416 5745032 1614384 5745112 1614384 5745232 -1614416 5745032 1614384 5745056 1614384 5745112 1614538 5744984 -1614928 5744824 1614563 5744996 1614600 5745384 1614808 5745520 -1614600 5745384 1614563 5744996 1614538 5744984 1614384 5745232 -1614538 5744984 1614384 5745112 1614384 5745232 1614563 5744996 -1614384 5745232 1614600 5745384 1614563 5744996 1614384 5745112 -1614600 5745384 1614928 5744824 1614563 5744996 1614384 5745232 -1614563 5744996 1614928 5744824 1614538 5744984 1614384 5745112 -1614538 5744984 1614563 5744996 1614928 5744824 1614784 5744800 -1614538 5744984 1614563 5744996 1614784 5744800 1614512 5744696 -1614563 5744996 1614600 5745384 1614928 5744824 1614784 5744800 -1614538 5744984 1614384 5745112 1614563 5744996 1614784 5744800 -1614384 5745112 1614368 5745192 1614384 5745232 1614563 5744996 -1614538 5744984 1614416 5745032 1614384 5745112 1614563 5744996 -1614384 5745112 1614384 5745232 1614563 5744996 1614416 5745032 -1614538 5744984 1614416 5745032 1614563 5744996 1614784 5744800 -1614538 5744984 1614513 5744972 1614416 5745032 1614563 5744996 -1614416 5745032 1614384 5745056 1614384 5745112 1614563 5744996 -1614928 5744824 1614588 5745008 1614600 5745384 1614808 5745520 -1614928 5744824 1614588 5745008 1614808 5745520 1614992 5744816 -1614563 5744996 1614588 5745008 1614928 5744824 1614784 5744800 -1614563 5744996 1614600 5745384 1614588 5745008 1614784 5744800 -1614600 5745384 1614588 5745008 1614563 5744996 1614384 5745232 -1614563 5744996 1614384 5745112 1614384 5745232 1614588 5745008 -1614563 5744996 1614416 5745032 1614384 5745112 1614588 5745008 -1614588 5745008 1614784 5744800 1614563 5744996 1614384 5745112 -1614384 5745232 1614600 5745384 1614588 5745008 1614384 5745112 -1614928 5744824 1614784 5744800 1614588 5745008 1614808 5745520 -1614563 5744996 1614588 5745008 1614784 5744800 1614538 5744984 -1614384 5745112 1614368 5745192 1614384 5745232 1614588 5745008 -1614588 5745008 1614384 5745232 1614600 5745384 1614808 5745520 -1615240 5744880 1615288 5745352 1615424 5745368 1615648 5745352 -1615424 5745368 1615288 5745352 1614808 5745520 1614928 5745632 -1615424 5745368 1615240 5744880 1615288 5745352 1614928 5745632 -1615288 5745352 1615240 5744880 1614808 5745520 1614928 5745632 -1615424 5745368 1615288 5745352 1614928 5745632 1615024 5745792 -1615424 5745368 1615240 5744880 1615288 5745352 1615024 5745792 -1615288 5745352 1614808 5745520 1614928 5745632 1615024 5745792 -1615424 5745368 1615288 5745352 1615024 5745792 1615384 5745896 -1615024 5745792 1615336 5745936 1615384 5745896 1615288 5745352 -1615424 5745368 1615240 5744880 1615288 5745352 1615384 5745896 -1615288 5745352 1614928 5745632 1615024 5745792 1615384 5745896 -1614808 5745520 1615288 5745352 1615240 5744880 1614992 5744816 -1614808 5745520 1614928 5745632 1615288 5745352 1614992 5744816 -1615240 5744880 1615016 5744760 1614992 5744816 1615288 5745352 -1614808 5745520 1615288 5745352 1614992 5744816 1614928 5744824 -1614808 5745520 1614928 5745632 1615288 5745352 1614928 5744824 -1614808 5745520 1615288 5745352 1614928 5744824 1614588 5745008 -1615288 5745352 1615240 5744880 1614992 5744816 1614928 5744824 -1615424 5745368 1615288 5745352 1615384 5745896 1615664 5745704 -1615288 5745352 1615424 5745368 1615240 5744880 1614992 5744816 -1614588 5745008 1614600 5745384 1614808 5745520 1615288 5745352 -1615288 5745352 1614588 5745008 1614808 5745520 1614928 5745632 -1614928 5744824 1614784 5744800 1614588 5745008 1615288 5745352 -1614928 5744824 1614588 5745008 1615288 5745352 1614992 5744816 -1616016 5747072 1616072 5746808 1616080 5746328 1616016 5746352 -1616072 5746808 1616616 5746536 1616080 5746328 1616016 5746352 -1616016 5747072 1616616 5746536 1616072 5746808 1616016 5746352 -1616016 5747072 1616072 5746808 1616016 5746352 1615824 5746976 -1616016 5747072 1616616 5746536 1616072 5746808 1615824 5746976 -1616072 5746808 1616080 5746328 1616016 5746352 1615824 5746976 -1616016 5746352 1615648 5746688 1615824 5746976 1616072 5746808 -1616016 5746352 1615936 5746352 1615648 5746688 1616072 5746808 -1616016 5746352 1615936 5746352 1616072 5746808 1616080 5746328 -1615824 5746976 1616016 5747072 1616072 5746808 1615648 5746688 -1615648 5746688 1615824 5746976 1616072 5746808 1615936 5746352 -1616616 5746536 1616072 5746808 1616016 5747072 1616352 5747304 -1616616 5746536 1616080 5746328 1616072 5746808 1616352 5747304 -1616072 5746808 1615824 5746976 1616016 5747072 1616352 5747304 -1616616 5746536 1616072 5746808 1616352 5747304 1616688 5746584 -1616616 5746536 1616080 5746328 1616072 5746808 1616688 5746584 -1616072 5746808 1616016 5747072 1616352 5747304 1616688 5746584 -1616080 5746328 1616072 5746808 1616616 5746536 1616480 5746336 -1616072 5746808 1616688 5746584 1616616 5746536 1616480 5746336 -1616080 5746328 1616016 5746352 1616072 5746808 1616480 5746336 -1615648 5746688 1615680 5746848 1615824 5746976 1616072 5746808 -1615680 5746848 1615744 5746928 1615824 5746976 1616072 5746808 -1615824 5746976 1616016 5747072 1616072 5746808 1615744 5746928 -1615648 5746688 1615680 5746848 1616072 5746808 1615936 5746352 -1615680 5746848 1615744 5746928 1616072 5746808 1615648 5746688 -1615936 5746352 1615640 5746528 1615648 5746688 1616072 5746808 -1616080 5746328 1616072 5746808 1616480 5746336 1616144 5746240 -1616352 5747304 1616456 5747352 1616688 5746584 1616072 5746808 -1615936 5746352 1616040 5746760 1616072 5746808 1616016 5746352 -1615936 5746352 1615648 5746688 1616040 5746760 1616016 5746352 -1616040 5746760 1615648 5746688 1616072 5746808 1616016 5746352 -1616072 5746808 1616080 5746328 1616016 5746352 1616040 5746760 -1616072 5746808 1616080 5746328 1616040 5746760 1615648 5746688 -1616072 5746808 1616480 5746336 1616080 5746328 1616040 5746760 -1616072 5746808 1616480 5746336 1616040 5746760 1615648 5746688 -1616016 5746352 1615936 5746352 1616040 5746760 1616080 5746328 -1616080 5746328 1616016 5746352 1616040 5746760 1616480 5746336 -1616072 5746808 1616040 5746760 1615648 5746688 1615680 5746848 -1616072 5746808 1616480 5746336 1616040 5746760 1615680 5746848 -1616040 5746760 1615936 5746352 1615648 5746688 1615680 5746848 -1616072 5746808 1616616 5746536 1616480 5746336 1616040 5746760 -1616072 5746808 1616688 5746584 1616616 5746536 1616040 5746760 -1616072 5746808 1616616 5746536 1616040 5746760 1615680 5746848 -1616480 5746336 1616080 5746328 1616040 5746760 1616616 5746536 -1616072 5746808 1616040 5746760 1615680 5746848 1615744 5746928 -1616072 5746808 1616616 5746536 1616040 5746760 1615744 5746928 -1616072 5746808 1616040 5746760 1615744 5746928 1615824 5746976 -1616072 5746808 1616616 5746536 1616040 5746760 1615824 5746976 -1616072 5746808 1616040 5746760 1615824 5746976 1616016 5747072 -1616040 5746760 1615648 5746688 1615680 5746848 1615744 5746928 -1616040 5746760 1615680 5746848 1615744 5746928 1615824 5746976 -1615648 5746688 1616040 5746760 1615936 5746352 1615640 5746528 -1616040 5746760 1616016 5746352 1615936 5746352 1615640 5746528 -1615648 5746688 1615680 5746848 1616040 5746760 1615640 5746528 -1615936 5746352 1615792 5746256 1615640 5746528 1616040 5746760 -1616480 5746336 1616144 5746240 1616080 5746328 1616040 5746760 -1615936 5746352 1616016 5746736 1616040 5746760 1616016 5746352 -1615936 5746352 1615640 5746528 1616016 5746736 1616016 5746352 -1616016 5746736 1615640 5746528 1616040 5746760 1616016 5746352 -1616040 5746760 1616080 5746328 1616016 5746352 1616016 5746736 -1616016 5746352 1615936 5746352 1616016 5746736 1616080 5746328 -1616040 5746760 1616080 5746328 1616016 5746736 1615640 5746528 -1616040 5746760 1616480 5746336 1616080 5746328 1616016 5746736 -1616040 5746760 1616016 5746736 1615640 5746528 1615648 5746688 -1616016 5746736 1615936 5746352 1615640 5746528 1615648 5746688 -1616040 5746760 1616080 5746328 1616016 5746736 1615648 5746688 -1616040 5746760 1616016 5746736 1615648 5746688 1615680 5746848 -1616040 5746760 1616080 5746328 1616016 5746736 1615680 5746848 -1616040 5746760 1616016 5746736 1615680 5746848 1615744 5746928 -1616040 5746760 1616080 5746328 1616016 5746736 1615744 5746928 -1616016 5746736 1615648 5746688 1615680 5746848 1615744 5746928 -1616040 5746760 1616016 5746736 1615744 5746928 1615824 5746976 -1616040 5746760 1616080 5746328 1616016 5746736 1615824 5746976 -1616040 5746760 1616016 5746736 1615824 5746976 1616072 5746808 -1616016 5746736 1615680 5746848 1615744 5746928 1615824 5746976 -1616016 5746736 1615640 5746528 1615648 5746688 1615680 5746848 -1615640 5746528 1616016 5746736 1615936 5746352 1615792 5746256 -1616016 5746352 1616000 5746648 1616016 5746736 1616080 5746328 -1616000 5746648 1615936 5746352 1616016 5746736 1616080 5746328 -1616016 5746736 1616000 5746648 1615936 5746352 1615640 5746528 -1616016 5746736 1616000 5746648 1615640 5746528 1615648 5746688 -1616016 5746736 1616080 5746328 1616000 5746648 1615648 5746688 -1616000 5746648 1615936 5746352 1615640 5746528 1615648 5746688 -1616016 5746352 1615936 5746352 1616000 5746648 1616080 5746328 -1616000 5746648 1616016 5746352 1615936 5746352 1615640 5746528 -1616016 5746736 1616040 5746760 1616080 5746328 1616000 5746648 -1616080 5746328 1616016 5746352 1616000 5746648 1616040 5746760 -1616016 5746736 1616040 5746760 1616000 5746648 1615648 5746688 -1616040 5746760 1616480 5746336 1616080 5746328 1616000 5746648 -1616080 5746328 1616016 5746352 1616000 5746648 1616480 5746336 -1616040 5746760 1616616 5746536 1616480 5746336 1616000 5746648 -1616040 5746760 1616616 5746536 1616000 5746648 1616016 5746736 -1616480 5746336 1616080 5746328 1616000 5746648 1616616 5746536 -1616040 5746760 1616072 5746808 1616616 5746536 1616000 5746648 -1616016 5746736 1616000 5746648 1615648 5746688 1615680 5746848 -1615936 5746352 1615792 5746256 1615640 5746528 1616000 5746648 -1616480 5746336 1616144 5746240 1616080 5746328 1616000 5746648 -1616616 5746536 1616088 5746600 1616000 5746648 1616040 5746760 -1616088 5746600 1616480 5746336 1616000 5746648 1616040 5746760 -1616000 5746648 1616016 5746736 1616040 5746760 1616088 5746600 -1616040 5746760 1616616 5746536 1616088 5746600 1616016 5746736 -1616000 5746648 1616016 5746736 1616088 5746600 1616480 5746336 -1616000 5746648 1616088 5746600 1616480 5746336 1616080 5746328 -1616000 5746648 1616088 5746600 1616080 5746328 1616016 5746352 -1616000 5746648 1616088 5746600 1616016 5746352 1615936 5746352 -1616088 5746600 1616080 5746328 1616016 5746352 1615936 5746352 -1616088 5746600 1616616 5746536 1616480 5746336 1616080 5746328 -1616000 5746648 1616088 5746600 1615936 5746352 1615640 5746528 -1616000 5746648 1616016 5746736 1616088 5746600 1615936 5746352 -1616088 5746600 1616480 5746336 1616080 5746328 1616016 5746352 -1616616 5746536 1616480 5746336 1616088 5746600 1616040 5746760 -1616616 5746536 1616088 5746600 1616040 5746760 1616072 5746808 -1616616 5746536 1616088 5746600 1616072 5746808 1616688 5746584 -1616088 5746600 1616016 5746736 1616040 5746760 1616072 5746808 -1616616 5746536 1616480 5746336 1616088 5746600 1616072 5746808 -1616480 5746336 1616144 5746240 1616080 5746328 1616088 5746600 -1616088 5746600 1616176 5746576 1616480 5746336 1616080 5746328 -1616088 5746600 1616616 5746536 1616176 5746576 1616080 5746328 -1616088 5746600 1616176 5746576 1616080 5746328 1616016 5746352 -1616616 5746536 1616176 5746576 1616088 5746600 1616072 5746808 -1616616 5746536 1616176 5746576 1616072 5746808 1616688 5746584 -1616176 5746576 1616080 5746328 1616088 5746600 1616072 5746808 -1616616 5746536 1616480 5746336 1616176 5746576 1616072 5746808 -1616176 5746576 1616616 5746536 1616480 5746336 1616080 5746328 -1616088 5746600 1616040 5746760 1616072 5746808 1616176 5746576 -1616088 5746600 1616016 5746736 1616040 5746760 1616176 5746576 -1616088 5746600 1616040 5746760 1616176 5746576 1616080 5746328 -1616072 5746808 1616616 5746536 1616176 5746576 1616040 5746760 -1616480 5746336 1616144 5746240 1616080 5746328 1616176 5746576 -1616080 5746328 1616088 5746600 1616176 5746576 1616144 5746240 -1616480 5746336 1616376 5746120 1616144 5746240 1616176 5746576 -1616480 5746336 1616144 5746240 1616176 5746576 1616616 5746536 -1616616 5746536 1616280 5746608 1616072 5746808 1616688 5746584 -1616280 5746608 1616176 5746576 1616072 5746808 1616688 5746584 -1616072 5746808 1616352 5747304 1616688 5746584 1616280 5746608 -1616688 5746584 1616616 5746536 1616280 5746608 1616352 5747304 -1616072 5746808 1616352 5747304 1616280 5746608 1616176 5746576 -1616176 5746576 1616280 5746608 1616616 5746536 1616480 5746336 -1616176 5746576 1616072 5746808 1616280 5746608 1616480 5746336 -1616616 5746536 1616480 5746336 1616280 5746608 1616688 5746584 -1616072 5746808 1616280 5746608 1616176 5746576 1616040 5746760 -1616176 5746576 1616280 5746608 1616480 5746336 1616144 5746240 -1616072 5746808 1616016 5747072 1616352 5747304 1616280 5746608 -1616352 5747304 1616456 5747352 1616688 5746584 1616280 5746608 -1616280 5746608 1616384 5746672 1616688 5746584 1616616 5746536 -1616280 5746608 1616352 5747304 1616384 5746672 1616616 5746536 -1616352 5747304 1616384 5746672 1616280 5746608 1616072 5746808 -1616384 5746672 1616616 5746536 1616280 5746608 1616072 5746808 -1616280 5746608 1616176 5746576 1616072 5746808 1616384 5746672 -1616280 5746608 1616384 5746672 1616616 5746536 1616480 5746336 -1616384 5746672 1616688 5746584 1616616 5746536 1616480 5746336 -1616280 5746608 1616072 5746808 1616384 5746672 1616480 5746336 -1616280 5746608 1616384 5746672 1616480 5746336 1616176 5746576 -1616384 5746672 1616352 5747304 1616688 5746584 1616616 5746536 -1616352 5747304 1616688 5746584 1616384 5746672 1616072 5746808 -1616352 5747304 1616384 5746672 1616072 5746808 1616016 5747072 -1616688 5746584 1616384 5746672 1616352 5747304 1616456 5747352 -1616688 5746584 1616616 5746536 1616384 5746672 1616456 5747352 -1616384 5746672 1616072 5746808 1616352 5747304 1616456 5747352 -1616688 5746584 1616384 5746672 1616456 5747352 1616952 5746624 -1616384 5746672 1616512 5746784 1616688 5746584 1616616 5746536 -1616384 5746672 1616512 5746784 1616616 5746536 1616480 5746336 -1616384 5746672 1616456 5747352 1616512 5746784 1616616 5746536 -1616512 5746784 1616456 5747352 1616688 5746584 1616616 5746536 -1616688 5746584 1616512 5746784 1616456 5747352 1616952 5746624 -1616688 5746584 1616616 5746536 1616512 5746784 1616952 5746624 -1616512 5746784 1616384 5746672 1616456 5747352 1616952 5746624 -1616688 5746584 1616512 5746784 1616952 5746624 1616824 5746568 -1616456 5747352 1617184 5746832 1616952 5746624 1616512 5746784 -1616456 5747352 1617184 5746832 1616512 5746784 1616384 5746672 -1616456 5747352 1616480 5747376 1617184 5746832 1616512 5746784 -1616480 5747376 1616824 5747528 1617184 5746832 1616512 5746784 -1616456 5747352 1616480 5747376 1616512 5746784 1616384 5746672 -1616824 5747528 1617256 5746856 1617184 5746832 1616512 5746784 -1616480 5747376 1616824 5747528 1616512 5746784 1616456 5747352 -1617184 5746832 1616952 5746624 1616512 5746784 1616824 5747528 -1616952 5746624 1616688 5746584 1616512 5746784 1617184 5746832 -1616456 5747352 1616512 5746784 1616384 5746672 1616352 5747304 -1616512 5746784 1616616 5746536 1616384 5746672 1616352 5747304 -1616384 5746672 1616072 5746808 1616352 5747304 1616512 5746784 -1616384 5746672 1616280 5746608 1616072 5746808 1616512 5746784 -1616384 5746672 1616072 5746808 1616512 5746784 1616616 5746536 -1616456 5747352 1616480 5747376 1616512 5746784 1616352 5747304 -1616072 5746808 1616016 5747072 1616352 5747304 1616512 5746784 -1616072 5746808 1615824 5746976 1616016 5747072 1616512 5746784 -1616072 5746808 1616016 5747072 1616512 5746784 1616384 5746672 -1616352 5747304 1616456 5747352 1616512 5746784 1616016 5747072 -1616824 5747528 1616584 5746896 1616512 5746784 1616480 5747376 -1616584 5746896 1617184 5746832 1616512 5746784 1616480 5747376 -1617184 5746832 1616584 5746896 1616824 5747528 1617256 5746856 -1616512 5746784 1616456 5747352 1616480 5747376 1616584 5746896 -1616480 5747376 1616824 5747528 1616584 5746896 1616456 5747352 -1616512 5746784 1616456 5747352 1616584 5746896 1617184 5746832 -1616512 5746784 1616352 5747304 1616456 5747352 1616584 5746896 -1616512 5746784 1616352 5747304 1616584 5746896 1617184 5746832 -1616456 5747352 1616480 5747376 1616584 5746896 1616352 5747304 -1616512 5746784 1616584 5746896 1617184 5746832 1616952 5746624 -1616584 5746896 1616824 5747528 1617184 5746832 1616952 5746624 -1616512 5746784 1616352 5747304 1616584 5746896 1616952 5746624 -1616824 5747528 1617184 5746832 1616584 5746896 1616480 5747376 -1616512 5746784 1616584 5746896 1616952 5746624 1616688 5746584 -1616512 5746784 1616584 5746896 1616688 5746584 1616616 5746536 -1616512 5746784 1616352 5747304 1616584 5746896 1616688 5746584 -1616952 5746624 1616824 5746568 1616688 5746584 1616584 5746896 -1616584 5746896 1617184 5746832 1616952 5746624 1616824 5746568 -1616688 5746584 1616512 5746784 1616584 5746896 1616824 5746568 -1616512 5746784 1616016 5747072 1616352 5747304 1616584 5746896 -1616512 5746784 1616016 5747072 1616584 5746896 1616688 5746584 -1616352 5747304 1616456 5747352 1616584 5746896 1616016 5747072 -1616512 5746784 1616072 5746808 1616016 5747072 1616584 5746896 -1616584 5746896 1616608 5746944 1617184 5746832 1616952 5746624 -1617184 5746832 1616608 5746944 1616824 5747528 1617256 5746856 -1616584 5746896 1616608 5746944 1616952 5746624 1616824 5746568 -1616584 5746896 1616824 5747528 1616608 5746944 1616952 5746624 -1616824 5747528 1616608 5746944 1616584 5746896 1616480 5747376 -1616824 5747528 1617184 5746832 1616608 5746944 1616480 5747376 -1616584 5746896 1616456 5747352 1616480 5747376 1616608 5746944 -1616584 5746896 1616352 5747304 1616456 5747352 1616608 5746944 -1616456 5747352 1616480 5747376 1616608 5746944 1616352 5747304 -1616584 5746896 1616016 5747072 1616352 5747304 1616608 5746944 -1616608 5746944 1616952 5746624 1616584 5746896 1616352 5747304 -1616480 5747376 1616824 5747528 1616608 5746944 1616456 5747352 -1616608 5746944 1616824 5747528 1617184 5746832 1616952 5746624 -1616608 5746944 1616624 5747024 1616824 5747528 1617184 5746832 -1616608 5746944 1616480 5747376 1616624 5747024 1617184 5746832 -1616624 5747024 1616480 5747376 1616824 5747528 1617184 5746832 -1616824 5747528 1617256 5746856 1617184 5746832 1616624 5747024 -1616480 5747376 1616624 5747024 1616608 5746944 1616456 5747352 -1616624 5747024 1617184 5746832 1616608 5746944 1616456 5747352 -1616608 5746944 1616352 5747304 1616456 5747352 1616624 5747024 -1616608 5746944 1616352 5747304 1616624 5747024 1617184 5746832 -1616608 5746944 1616584 5746896 1616352 5747304 1616624 5747024 -1616608 5746944 1616584 5746896 1616624 5747024 1617184 5746832 -1616352 5747304 1616456 5747352 1616624 5747024 1616584 5746896 -1616584 5746896 1616016 5747072 1616352 5747304 1616624 5747024 -1616456 5747352 1616480 5747376 1616624 5747024 1616352 5747304 -1616608 5746944 1616624 5747024 1617184 5746832 1616952 5746624 -1616480 5747376 1616824 5747528 1616624 5747024 1616456 5747352 -1616456 5747352 1616600 5747080 1616624 5747024 1616352 5747304 -1616624 5747024 1616584 5746896 1616352 5747304 1616600 5747080 -1616584 5746896 1616016 5747072 1616352 5747304 1616600 5747080 -1616624 5747024 1616608 5746944 1616584 5746896 1616600 5747080 -1616584 5746896 1616352 5747304 1616600 5747080 1616608 5746944 -1616352 5747304 1616456 5747352 1616600 5747080 1616584 5746896 -1616600 5747080 1616480 5747376 1616624 5747024 1616608 5746944 -1616624 5747024 1616600 5747080 1616480 5747376 1616824 5747528 -1616624 5747024 1616600 5747080 1616824 5747528 1617184 5746832 -1616624 5747024 1616608 5746944 1616600 5747080 1616824 5747528 -1616600 5747080 1616456 5747352 1616480 5747376 1616824 5747528 -1616456 5747352 1616480 5747376 1616600 5747080 1616352 5747304 -1616584 5746896 1616536 5747128 1616600 5747080 1616608 5746944 -1616584 5746896 1616352 5747304 1616536 5747128 1616608 5746944 -1616352 5747304 1616536 5747128 1616584 5746896 1616016 5747072 -1616352 5747304 1616600 5747080 1616536 5747128 1616016 5747072 -1616536 5747128 1616608 5746944 1616584 5746896 1616016 5747072 -1616600 5747080 1616624 5747024 1616608 5746944 1616536 5747128 -1616600 5747080 1616536 5747128 1616352 5747304 1616456 5747352 -1616536 5747128 1616016 5747072 1616352 5747304 1616456 5747352 -1616584 5746896 1616512 5746784 1616016 5747072 1616536 5747128 -1616584 5746896 1616512 5746784 1616536 5747128 1616608 5746944 -1616016 5747072 1616352 5747304 1616536 5747128 1616512 5746784 -1616512 5746784 1616072 5746808 1616016 5747072 1616536 5747128 -1616072 5746808 1615824 5746976 1616016 5747072 1616536 5747128 -1616512 5746784 1616384 5746672 1616072 5746808 1616536 5747128 -1616016 5747072 1616352 5747304 1616536 5747128 1616072 5746808 -1616512 5746784 1616072 5746808 1616536 5747128 1616584 5746896 -1616536 5747128 1616456 5747352 1616600 5747080 1616608 5746944 -1616600 5747080 1616536 5747128 1616456 5747352 1616480 5747376 -1616536 5747128 1616352 5747304 1616456 5747352 1616480 5747376 -1616600 5747080 1616536 5747128 1616480 5747376 1616824 5747528 -1616600 5747080 1616608 5746944 1616536 5747128 1616480 5747376 -1616536 5747128 1616400 5747120 1616352 5747304 1616456 5747352 -1616536 5747128 1616016 5747072 1616400 5747120 1616456 5747352 -1616400 5747120 1616016 5747072 1616352 5747304 1616456 5747352 -1616016 5747072 1616400 5747120 1616536 5747128 1616072 5746808 -1616016 5747072 1616400 5747120 1616072 5746808 1615824 5746976 -1616400 5747120 1616456 5747352 1616536 5747128 1616072 5746808 -1616016 5747072 1616352 5747304 1616400 5747120 1616072 5746808 -1616536 5747128 1616512 5746784 1616072 5746808 1616400 5747120 -1616536 5747128 1616512 5746784 1616400 5747120 1616456 5747352 -1616512 5746784 1616384 5746672 1616072 5746808 1616400 5747120 -1616384 5746672 1616280 5746608 1616072 5746808 1616400 5747120 -1616072 5746808 1616016 5747072 1616400 5747120 1616384 5746672 -1616512 5746784 1616384 5746672 1616400 5747120 1616536 5747128 -1616536 5747128 1616400 5747120 1616456 5747352 1616480 5747376 -1616536 5747128 1616584 5746896 1616512 5746784 1616400 5747120 -1616536 5747128 1616584 5746896 1616400 5747120 1616456 5747352 -1616536 5747128 1616608 5746944 1616584 5746896 1616400 5747120 -1616536 5747128 1616600 5747080 1616608 5746944 1616400 5747120 -1616536 5747128 1616608 5746944 1616400 5747120 1616456 5747352 -1616512 5746784 1616384 5746672 1616400 5747120 1616584 5746896 -1616584 5746896 1616512 5746784 1616400 5747120 1616608 5746944 -1616016 5747072 1616256 5747032 1616072 5746808 1615824 5746976 -1616400 5747120 1616256 5747032 1616016 5747072 1616352 5747304 -1616400 5747120 1616256 5747032 1616352 5747304 1616456 5747352 -1616400 5747120 1616072 5746808 1616256 5747032 1616352 5747304 -1616256 5747032 1616072 5746808 1616016 5747072 1616352 5747304 -1616072 5746808 1616256 5747032 1616400 5747120 1616384 5746672 -1616256 5747032 1616352 5747304 1616400 5747120 1616384 5746672 -1616072 5746808 1616016 5747072 1616256 5747032 1616384 5746672 -1616072 5746808 1616256 5747032 1616384 5746672 1616280 5746608 -1616400 5747120 1616512 5746784 1616384 5746672 1616256 5747032 -1616400 5747120 1616512 5746784 1616256 5747032 1616352 5747304 -1616384 5746672 1616072 5746808 1616256 5747032 1616512 5746784 -1616400 5747120 1616584 5746896 1616512 5746784 1616256 5747032 -1616400 5747120 1616584 5746896 1616256 5747032 1616352 5747304 -1616512 5746784 1616384 5746672 1616256 5747032 1616584 5746896 -1616400 5747120 1616608 5746944 1616584 5746896 1616256 5747032 -1604840 5714480 1608712 5714128 1657088 5639464 1657056 5639384 -1604840 5714480 1609432 5714744 1608712 5714128 1657056 5639384 -1608712 5714128 1609432 5714744 1657088 5639464 1657056 5639384 -1609432 5714744 1608712 5714128 1604840 5714480 1609408 5714752 -1608712 5714128 1657056 5639384 1604840 5714480 1609408 5714752 -1609432 5714744 1657088 5639464 1608712 5714128 1609408 5714752 -1604840 5714480 1608712 5714128 1657056 5639384 1599875 5599875 -1604840 5714480 1609408 5714752 1608712 5714128 1599875 5599875 -1608712 5714128 1657088 5639464 1657056 5639384 1599875 5599875 -1604840 5714480 1608712 5714128 1599875 5599875 1604784 5714488 -1657056 5639384 1657088 5639296 1599875 5599875 1608712 5714128 -1657088 5639464 1608712 5714128 1609432 5714744 1663776 5646144 -1657088 5639464 1657056 5639384 1608712 5714128 1663776 5646144 -1609432 5714744 1609480 5714768 1663776 5646144 1608712 5714128 -1657088 5639464 1608712 5714128 1663776 5646144 1663688 5645984 -1608712 5714128 1609408 5714752 1609432 5714744 1609480 5714768 -1609480 5714768 1663880 5646248 1663776 5646144 1608712 5714128 -1609480 5714768 1663880 5646248 1608712 5714128 1609432 5714744 -1609480 5714768 1609512 5714824 1663880 5646248 1608712 5714128 -1663776 5646144 1657088 5639464 1608712 5714128 1663880 5646248 -1604840 5714480 1604944 5714528 1609408 5714752 1608712 5714128 -1604840 5714480 1604944 5714528 1608712 5714128 1599875 5599875 -1604944 5714528 1605040 5714624 1609408 5714752 1608712 5714128 -1605040 5714624 1605128 5714784 1609408 5714752 1608712 5714128 -1605128 5714784 1609368 5714824 1609408 5714752 1608712 5714128 -1605128 5714784 1609368 5714824 1608712 5714128 1605040 5714624 -1605128 5714784 1609352 5714856 1609368 5714824 1608712 5714128 -1609368 5714824 1609408 5714752 1608712 5714128 1609352 5714856 -1605128 5714784 1609352 5714856 1608712 5714128 1605040 5714624 -1605128 5714784 1609320 5714928 1609352 5714856 1608712 5714128 -1605128 5714784 1609320 5714928 1608712 5714128 1605040 5714624 -1605128 5714784 1605152 5714888 1609320 5714928 1608712 5714128 -1605128 5714784 1605152 5714888 1608712 5714128 1605040 5714624 -1609320 5714928 1609352 5714856 1608712 5714128 1605152 5714888 -1609352 5714856 1609368 5714824 1608712 5714128 1609320 5714928 -1605152 5714888 1605152 5714944 1609320 5714928 1608712 5714128 -1605152 5714888 1605152 5714944 1608712 5714128 1605128 5714784 -1609320 5714928 1609352 5714856 1608712 5714128 1605152 5714944 -1605040 5714624 1605128 5714784 1608712 5714128 1604944 5714528 -1605152 5714944 1609320 5714984 1609320 5714928 1608712 5714128 -1609320 5714928 1609352 5714856 1608712 5714128 1609320 5714984 -1605152 5714944 1609320 5714984 1608712 5714128 1605152 5714888 -1609408 5714752 1609432 5714744 1608712 5714128 1609368 5714824 -1605152 5714888 1605136 5714928 1605152 5714944 1608712 5714128 -1605152 5714944 1609360 5715080 1609320 5714984 1608712 5714128 -1604944 5714528 1605040 5714624 1608712 5714128 1604840 5714480 -1605152 5714944 1608408 5714352 1608712 5714128 1605152 5714888 -1608712 5714128 1605128 5714784 1605152 5714888 1608408 5714352 -1608712 5714128 1605040 5714624 1605128 5714784 1608408 5714352 -1605128 5714784 1605152 5714888 1608408 5714352 1605040 5714624 -1605152 5714888 1605152 5714944 1608408 5714352 1605128 5714784 -1608712 5714128 1604944 5714528 1605040 5714624 1608408 5714352 -1605040 5714624 1605128 5714784 1608408 5714352 1604944 5714528 -1605152 5714944 1609320 5714984 1608408 5714352 1605152 5714888 -1608712 5714128 1608408 5714352 1609320 5714984 1609320 5714928 -1608712 5714128 1608408 5714352 1609320 5714928 1609352 5714856 -1608712 5714128 1608408 5714352 1609352 5714856 1609368 5714824 -1608408 5714352 1609320 5714984 1609320 5714928 1609352 5714856 -1608408 5714352 1605152 5714944 1609320 5714984 1609320 5714928 -1605152 5714944 1608408 5714352 1605152 5714888 1605136 5714928 -1608408 5714352 1609352 5714856 1608712 5714128 1604944 5714528 -1609320 5714984 1608408 5714352 1605152 5714944 1609360 5715080 -1608408 5714352 1605152 5714888 1605152 5714944 1609360 5715080 -1605152 5714944 1609368 5715096 1609360 5715080 1608408 5714352 -1605152 5714944 1609368 5715096 1608408 5714352 1605152 5714888 -1605152 5714944 1615352 5735280 1609368 5715096 1608408 5714352 -1609320 5714984 1609320 5714928 1608408 5714352 1609360 5715080 -1609360 5715080 1609320 5714984 1608408 5714352 1609368 5715096 -1608712 5714128 1604840 5714480 1604944 5714528 1608408 5714352 -1605152 5714944 1608160 5714424 1608408 5714352 1605152 5714888 -1605152 5714944 1609368 5715096 1608160 5714424 1605152 5714888 -1608408 5714352 1605128 5714784 1605152 5714888 1608160 5714424 -1608408 5714352 1605040 5714624 1605128 5714784 1608160 5714424 -1608408 5714352 1604944 5714528 1605040 5714624 1608160 5714424 -1605040 5714624 1605128 5714784 1608160 5714424 1604944 5714528 -1605128 5714784 1605152 5714888 1608160 5714424 1605040 5714624 -1608408 5714352 1608712 5714128 1604944 5714528 1608160 5714424 -1604944 5714528 1605040 5714624 1608160 5714424 1608712 5714128 -1605152 5714888 1605152 5714944 1608160 5714424 1605128 5714784 -1608408 5714352 1608160 5714424 1609368 5715096 1609360 5715080 -1608160 5714424 1605152 5714944 1609368 5715096 1609360 5715080 -1608160 5714424 1609360 5715080 1608408 5714352 1608712 5714128 -1609368 5715096 1608160 5714424 1605152 5714944 1615352 5735280 -1608408 5714352 1608160 5714424 1609360 5715080 1609320 5714984 -1608160 5714424 1609368 5715096 1609360 5715080 1609320 5714984 -1608408 5714352 1608712 5714128 1608160 5714424 1609320 5714984 -1608408 5714352 1608160 5714424 1609320 5714984 1609320 5714928 -1605152 5714944 1608160 5714424 1605152 5714888 1605136 5714928 -1608712 5714128 1604840 5714480 1604944 5714528 1608160 5714424 -1604944 5714528 1605040 5714624 1608160 5714424 1604840 5714480 -1608712 5714128 1599875 5599875 1604840 5714480 1608160 5714424 -1608712 5714128 1604840 5714480 1608160 5714424 1608408 5714352 -1608160 5714424 1607984 5714464 1609368 5715096 1609360 5715080 -1608160 5714424 1605152 5714944 1607984 5714464 1609360 5715080 -1605152 5714944 1607984 5714464 1608160 5714424 1605152 5714888 -1607984 5714464 1609360 5715080 1608160 5714424 1605152 5714888 -1608160 5714424 1605128 5714784 1605152 5714888 1607984 5714464 -1608160 5714424 1605128 5714784 1607984 5714464 1609360 5715080 -1605152 5714888 1605152 5714944 1607984 5714464 1605128 5714784 -1608160 5714424 1605040 5714624 1605128 5714784 1607984 5714464 -1608160 5714424 1604944 5714528 1605040 5714624 1607984 5714464 -1608160 5714424 1604840 5714480 1604944 5714528 1607984 5714464 -1604944 5714528 1605040 5714624 1607984 5714464 1604840 5714480 -1608160 5714424 1604840 5714480 1607984 5714464 1609360 5715080 -1605040 5714624 1605128 5714784 1607984 5714464 1604944 5714528 -1605128 5714784 1605152 5714888 1607984 5714464 1605040 5714624 -1608160 5714424 1607984 5714464 1609360 5715080 1609320 5714984 -1605152 5714944 1609368 5715096 1607984 5714464 1605152 5714888 -1607984 5714464 1605152 5714944 1609368 5715096 1609360 5715080 -1609368 5715096 1607984 5714464 1605152 5714944 1615352 5735280 -1605152 5714944 1607984 5714464 1605152 5714888 1605136 5714928 -1608160 5714424 1608712 5714128 1604840 5714480 1607984 5714464 -1604840 5714480 1604944 5714528 1607984 5714464 1608712 5714128 -1608160 5714424 1608712 5714128 1607984 5714464 1609360 5715080 -1608712 5714128 1599875 5599875 1604840 5714480 1607984 5714464 -1608160 5714424 1608408 5714352 1608712 5714128 1607984 5714464 -1607984 5714464 1607888 5714416 1604840 5714480 1604944 5714528 -1607984 5714464 1607888 5714416 1604944 5714528 1605040 5714624 -1607888 5714416 1604840 5714480 1604944 5714528 1605040 5714624 -1604840 5714480 1607888 5714416 1608712 5714128 1599875 5599875 -1607984 5714464 1607888 5714416 1605040 5714624 1605128 5714784 -1607888 5714416 1604944 5714528 1605040 5714624 1605128 5714784 -1607984 5714464 1607888 5714416 1605128 5714784 1605152 5714888 -1607984 5714464 1607888 5714416 1605152 5714888 1605152 5714944 -1607888 5714416 1605040 5714624 1605128 5714784 1605152 5714888 -1607888 5714416 1605128 5714784 1605152 5714888 1605152 5714944 -1607984 5714464 1608712 5714128 1607888 5714416 1605152 5714944 -1607984 5714464 1607888 5714416 1605152 5714944 1609368 5715096 -1607888 5714416 1608712 5714128 1604840 5714480 1604944 5714528 -1605152 5714888 1605136 5714928 1605152 5714944 1607888 5714416 -1608712 5714128 1607888 5714416 1607984 5714464 1608160 5714424 -1608712 5714128 1604840 5714480 1607888 5714416 1608160 5714424 -1608712 5714128 1607888 5714416 1608160 5714424 1608408 5714352 -1608712 5714128 1604840 5714480 1607888 5714416 1608408 5714352 -1607888 5714416 1605152 5714944 1607984 5714464 1608160 5714424 -1607888 5714416 1607984 5714464 1608160 5714424 1608408 5714352 -1608712 5714128 1607840 5714384 1607888 5714416 1608408 5714352 -1607840 5714384 1604840 5714480 1607888 5714416 1608408 5714352 -1608712 5714128 1604840 5714480 1607840 5714384 1608408 5714352 -1604840 5714480 1607840 5714384 1608712 5714128 1599875 5599875 -1607888 5714416 1608160 5714424 1608408 5714352 1607840 5714384 -1607888 5714416 1608160 5714424 1607840 5714384 1604840 5714480 -1608408 5714352 1608712 5714128 1607840 5714384 1608160 5714424 -1607888 5714416 1607840 5714384 1604840 5714480 1604944 5714528 -1607888 5714416 1607840 5714384 1604944 5714528 1605040 5714624 -1607888 5714416 1607840 5714384 1605040 5714624 1605128 5714784 -1607840 5714384 1604944 5714528 1605040 5714624 1605128 5714784 -1607888 5714416 1608160 5714424 1607840 5714384 1605128 5714784 -1607840 5714384 1608712 5714128 1604840 5714480 1604944 5714528 -1607840 5714384 1604840 5714480 1604944 5714528 1605040 5714624 -1607888 5714416 1607840 5714384 1605128 5714784 1605152 5714888 -1607840 5714384 1605040 5714624 1605128 5714784 1605152 5714888 -1607888 5714416 1608160 5714424 1607840 5714384 1605152 5714888 -1607888 5714416 1607840 5714384 1605152 5714888 1605152 5714944 -1607888 5714416 1607840 5714384 1605152 5714944 1607984 5714464 -1607888 5714416 1608160 5714424 1607840 5714384 1605152 5714944 -1607840 5714384 1605128 5714784 1605152 5714888 1605152 5714944 -1605152 5714888 1605136 5714928 1605152 5714944 1607840 5714384 -1607888 5714416 1607984 5714464 1608160 5714424 1607840 5714384 -1607840 5714384 1607816 5714344 1604840 5714480 1604944 5714528 -1607840 5714384 1607816 5714344 1604944 5714528 1605040 5714624 -1607840 5714384 1607816 5714344 1605040 5714624 1605128 5714784 -1607840 5714384 1607816 5714344 1605128 5714784 1605152 5714888 -1607816 5714344 1605040 5714624 1605128 5714784 1605152 5714888 -1607816 5714344 1604840 5714480 1604944 5714528 1605040 5714624 -1607816 5714344 1604944 5714528 1605040 5714624 1605128 5714784 -1608712 5714128 1607816 5714344 1607840 5714384 1608408 5714352 -1607840 5714384 1608160 5714424 1608408 5714352 1607816 5714344 -1608408 5714352 1608712 5714128 1607816 5714344 1608160 5714424 -1607840 5714384 1608160 5714424 1607816 5714344 1605152 5714888 -1607816 5714344 1608712 5714128 1604840 5714480 1604944 5714528 -1604840 5714480 1607816 5714344 1608712 5714128 1599875 5599875 -1607840 5714384 1607816 5714344 1605152 5714888 1605152 5714944 -1607816 5714344 1605128 5714784 1605152 5714888 1605152 5714944 -1607840 5714384 1608160 5714424 1607816 5714344 1605152 5714944 -1607840 5714384 1607888 5714416 1608160 5714424 1607816 5714344 -1608160 5714424 1608408 5714352 1607816 5714344 1607888 5714416 -1607840 5714384 1607888 5714416 1607816 5714344 1605152 5714944 -1607840 5714384 1607816 5714344 1605152 5714944 1607888 5714416 -1608712 5714128 1604840 5714480 1607816 5714344 1608408 5714352 -1605152 5714888 1605136 5714928 1605152 5714944 1607816 5714344 -1607888 5714416 1607984 5714464 1608160 5714424 1607816 5714344 -1607816 5714344 1607760 5714256 1604840 5714480 1604944 5714528 -1607816 5714344 1607760 5714256 1604944 5714528 1605040 5714624 -1607816 5714344 1607760 5714256 1605040 5714624 1605128 5714784 -1607816 5714344 1607760 5714256 1605128 5714784 1605152 5714888 -1607816 5714344 1607760 5714256 1605152 5714888 1605152 5714944 -1607760 5714256 1605128 5714784 1605152 5714888 1605152 5714944 -1607760 5714256 1604944 5714528 1605040 5714624 1605128 5714784 -1607760 5714256 1605040 5714624 1605128 5714784 1605152 5714888 -1607760 5714256 1604840 5714480 1604944 5714528 1605040 5714624 -1607816 5714344 1608712 5714128 1607760 5714256 1605152 5714944 -1604840 5714480 1607760 5714256 1608712 5714128 1599875 5599875 -1607816 5714344 1607760 5714256 1605152 5714944 1607840 5714384 -1608712 5714128 1607760 5714256 1607816 5714344 1608408 5714352 -1607816 5714344 1608160 5714424 1608408 5714352 1607760 5714256 -1607816 5714344 1607888 5714416 1608160 5714424 1607760 5714256 -1607760 5714256 1605152 5714944 1607816 5714344 1608160 5714424 -1608408 5714352 1608712 5714128 1607760 5714256 1608160 5714424 -1607760 5714256 1608712 5714128 1604840 5714480 1604944 5714528 -1608712 5714128 1604840 5714480 1607760 5714256 1608408 5714352 -1605152 5714888 1605136 5714928 1605152 5714944 1607760 5714256 -1608712 5714128 1607736 5714184 1604840 5714480 1607760 5714256 -1604840 5714480 1604944 5714528 1607760 5714256 1607736 5714184 -1604944 5714528 1605040 5714624 1607760 5714256 1607736 5714184 -1605040 5714624 1605128 5714784 1607760 5714256 1607736 5714184 -1605128 5714784 1605152 5714888 1607760 5714256 1607736 5714184 -1605152 5714888 1605152 5714944 1607760 5714256 1607736 5714184 -1605128 5714784 1605152 5714888 1607736 5714184 1605040 5714624 -1605040 5714624 1605128 5714784 1607736 5714184 1604944 5714528 -1607760 5714256 1608712 5714128 1607736 5714184 1605152 5714888 -1604944 5714528 1605040 5714624 1607736 5714184 1604840 5714480 -1607736 5714184 1599875 5599875 1604840 5714480 1604944 5714528 -1608712 5714128 1607736 5714184 1607760 5714256 1608408 5714352 -1607736 5714184 1605152 5714888 1607760 5714256 1608408 5714352 -1607760 5714256 1608160 5714424 1608408 5714352 1607736 5714184 -1607760 5714256 1607816 5714344 1608160 5714424 1607736 5714184 -1607760 5714256 1608160 5714424 1607736 5714184 1605152 5714888 -1608408 5714352 1608712 5714128 1607736 5714184 1608160 5714424 -1608712 5714128 1599875 5599875 1607736 5714184 1608408 5714352 -1604840 5714480 1607736 5714184 1599875 5599875 1604784 5714488 -1599875 5599875 1607736 5714184 1608712 5714128 1657056 5639384 -1608712 5714128 1657088 5639464 1657056 5639384 1607736 5714184 -1599875 5599875 1604840 5714480 1607736 5714184 1657056 5639384 -1607736 5714184 1608408 5714352 1608712 5714128 1657056 5639384 -1599875 5599875 1607736 5714184 1657056 5639384 1657088 5639296 -1607736 5714184 1607720 5714064 1604840 5714480 1604944 5714528 -1607736 5714184 1607720 5714064 1604944 5714528 1605040 5714624 -1607736 5714184 1607720 5714064 1605040 5714624 1605128 5714784 -1607736 5714184 1607720 5714064 1605128 5714784 1605152 5714888 -1607720 5714064 1604944 5714528 1605040 5714624 1605128 5714784 -1607720 5714064 1604840 5714480 1604944 5714528 1605040 5714624 -1599875 5599875 1607720 5714064 1607736 5714184 1657056 5639384 -1607736 5714184 1657056 5639384 1607720 5714064 1605128 5714784 -1607720 5714064 1599875 5599875 1604840 5714480 1604944 5714528 -1599875 5599875 1604840 5714480 1607720 5714064 1657056 5639384 -1604840 5714480 1607720 5714064 1599875 5599875 1604784 5714488 -1599875 5599875 1607720 5714064 1657056 5639384 1657088 5639296 -1607736 5714184 1608712 5714128 1657056 5639384 1607720 5714064 -1608712 5714128 1657088 5639464 1657056 5639384 1607720 5714064 -1608712 5714128 1663776 5646144 1657088 5639464 1607720 5714064 -1657056 5639384 1599875 5599875 1607720 5714064 1657088 5639464 -1607736 5714184 1608712 5714128 1607720 5714064 1605128 5714784 -1607736 5714184 1608408 5714352 1608712 5714128 1607720 5714064 -1607736 5714184 1608160 5714424 1608408 5714352 1607720 5714064 -1607736 5714184 1607760 5714256 1608160 5714424 1607720 5714064 -1607736 5714184 1608160 5714424 1607720 5714064 1605128 5714784 -1608408 5714352 1608712 5714128 1607720 5714064 1608160 5714424 -1608712 5714128 1657088 5639464 1607720 5714064 1608408 5714352 -1657056 5639384 1607728 5713968 1607720 5714064 1657088 5639464 -1607720 5714064 1608712 5714128 1657088 5639464 1607728 5713968 -1608712 5714128 1663776 5646144 1657088 5639464 1607728 5713968 -1657088 5639464 1657056 5639384 1607728 5713968 1608712 5714128 -1607728 5713968 1599875 5599875 1607720 5714064 1608712 5714128 -1607720 5714064 1607728 5713968 1599875 5599875 1604840 5714480 -1607720 5714064 1607728 5713968 1604840 5714480 1604944 5714528 -1607720 5714064 1607728 5713968 1604944 5714528 1605040 5714624 -1607720 5714064 1607728 5713968 1605040 5714624 1605128 5714784 -1607728 5713968 1604840 5714480 1604944 5714528 1605040 5714624 -1607720 5714064 1608712 5714128 1607728 5713968 1605040 5714624 -1607728 5713968 1599875 5599875 1604840 5714480 1604944 5714528 -1657056 5639384 1599875 5599875 1607728 5713968 1657088 5639464 -1607728 5713968 1657056 5639384 1599875 5599875 1604840 5714480 -1599875 5599875 1604784 5714488 1604840 5714480 1607728 5713968 -1604840 5714480 1604944 5714528 1607728 5713968 1604784 5714488 -1599875 5599875 1604784 5714488 1607728 5713968 1657056 5639384 -1599875 5599875 1604744 5714504 1604784 5714488 1607728 5713968 -1599875 5599875 1607728 5713968 1657056 5639384 1657088 5639296 -1607720 5714064 1608408 5714352 1608712 5714128 1607728 5713968 -1608712 5714128 1657088 5639464 1607728 5713968 1608408 5714352 -1607720 5714064 1608160 5714424 1608408 5714352 1607728 5713968 -1607720 5714064 1607736 5714184 1608160 5714424 1607728 5713968 -1607720 5714064 1608160 5714424 1607728 5713968 1605040 5714624 -1608408 5714352 1608712 5714128 1607728 5713968 1608160 5714424 -1657056 5639384 1607760 5713904 1607728 5713968 1657088 5639464 -1657056 5639384 1599875 5599875 1607760 5713904 1657088 5639464 -1607728 5713968 1608712 5714128 1657088 5639464 1607760 5713904 -1608712 5714128 1663776 5646144 1657088 5639464 1607760 5713904 -1607728 5713968 1608408 5714352 1608712 5714128 1607760 5713904 -1608712 5714128 1657088 5639464 1607760 5713904 1608408 5714352 -1607760 5713904 1599875 5599875 1607728 5713968 1608408 5714352 -1657088 5639464 1657056 5639384 1607760 5713904 1608712 5714128 -1607728 5713968 1607760 5713904 1599875 5599875 1604784 5714488 -1607728 5713968 1608408 5714352 1607760 5713904 1604784 5714488 -1607760 5713904 1657056 5639384 1599875 5599875 1604784 5714488 -1607728 5713968 1607760 5713904 1604784 5714488 1604840 5714480 -1607728 5713968 1607760 5713904 1604840 5714480 1604944 5714528 -1607728 5713968 1607760 5713904 1604944 5714528 1605040 5714624 -1607728 5713968 1608408 5714352 1607760 5713904 1604944 5714528 -1607760 5713904 1599875 5599875 1604784 5714488 1604840 5714480 -1607760 5713904 1604784 5714488 1604840 5714480 1604944 5714528 -1599875 5599875 1604744 5714504 1604784 5714488 1607760 5713904 -1599875 5599875 1607760 5713904 1657056 5639384 1657088 5639296 -1607728 5713968 1608160 5714424 1608408 5714352 1607760 5713904 -1608408 5714352 1608712 5714128 1607760 5713904 1608160 5714424 -1607728 5713968 1607720 5714064 1608160 5714424 1607760 5713904 -1607720 5714064 1607736 5714184 1608160 5714424 1607760 5713904 -1607728 5713968 1607720 5714064 1607760 5713904 1604944 5714528 -1608160 5714424 1608408 5714352 1607760 5713904 1607720 5714064 -1657088 5639464 1607800 5713888 1608712 5714128 1663776 5646144 -1608712 5714128 1607800 5713888 1607760 5713904 1608408 5714352 -1607760 5713904 1608160 5714424 1608408 5714352 1607800 5713888 -1607800 5713888 1657088 5639464 1607760 5713904 1608160 5714424 -1608712 5714128 1657088 5639464 1607800 5713888 1608408 5714352 -1608408 5714352 1608712 5714128 1607800 5713888 1608160 5714424 -1607760 5713904 1607800 5713888 1657088 5639464 1657056 5639384 -1607760 5713904 1608160 5714424 1607800 5713888 1657056 5639384 -1607760 5713904 1607800 5713888 1657056 5639384 1599875 5599875 -1607760 5713904 1608160 5714424 1607800 5713888 1599875 5599875 -1607800 5713888 1608712 5714128 1657088 5639464 1657056 5639384 -1607800 5713888 1657088 5639464 1657056 5639384 1599875 5599875 -1607760 5713904 1607800 5713888 1599875 5599875 1604784 5714488 -1607760 5713904 1608160 5714424 1607800 5713888 1604784 5714488 -1607800 5713888 1657056 5639384 1599875 5599875 1604784 5714488 -1607760 5713904 1607800 5713888 1604784 5714488 1604840 5714480 -1607760 5713904 1608160 5714424 1607800 5713888 1604840 5714480 -1607800 5713888 1599875 5599875 1604784 5714488 1604840 5714480 -1607760 5713904 1607800 5713888 1604840 5714480 1604944 5714528 -1599875 5599875 1604744 5714504 1604784 5714488 1607800 5713888 -1657056 5639384 1657088 5639296 1599875 5599875 1607800 5713888 -1607760 5713904 1607720 5714064 1608160 5714424 1607800 5713888 -1608160 5714424 1608408 5714352 1607800 5713888 1607720 5714064 -1607760 5713904 1607720 5714064 1607800 5713888 1604840 5714480 -1607720 5714064 1607736 5714184 1608160 5714424 1607800 5713888 -1608160 5714424 1608408 5714352 1607800 5713888 1607736 5714184 -1607736 5714184 1607760 5714256 1608160 5714424 1607800 5713888 -1607760 5713904 1607728 5713968 1607720 5714064 1607800 5713888 -1607760 5713904 1607728 5713968 1607800 5713888 1604840 5714480 -1607720 5714064 1607736 5714184 1607800 5713888 1607728 5713968 -1657088 5639464 1607912 5713864 1608712 5714128 1663776 5646144 -1607800 5713888 1607912 5713864 1657088 5639464 1657056 5639384 -1607800 5713888 1608712 5714128 1607912 5713864 1657056 5639384 -1608712 5714128 1607912 5713864 1607800 5713888 1608408 5714352 -1607912 5713864 1657056 5639384 1607800 5713888 1608408 5714352 -1607912 5713864 1608712 5714128 1657088 5639464 1657056 5639384 -1608712 5714128 1657088 5639464 1607912 5713864 1608408 5714352 -1607800 5713888 1608160 5714424 1608408 5714352 1607912 5713864 -1607800 5713888 1607736 5714184 1608160 5714424 1607912 5713864 -1607800 5713888 1607736 5714184 1607912 5713864 1657056 5639384 -1608408 5714352 1608712 5714128 1607912 5713864 1608160 5714424 -1607736 5714184 1607760 5714256 1608160 5714424 1607912 5713864 -1607760 5714256 1607816 5714344 1608160 5714424 1607912 5713864 -1607816 5714344 1607888 5714416 1608160 5714424 1607912 5713864 -1607736 5714184 1607760 5714256 1607912 5713864 1607800 5713888 -1607760 5714256 1607816 5714344 1607912 5713864 1607736 5714184 -1607800 5713888 1607720 5714064 1607736 5714184 1607912 5713864 -1607736 5714184 1607760 5714256 1607912 5713864 1607720 5714064 -1607800 5713888 1607720 5714064 1607912 5713864 1657056 5639384 -1608160 5714424 1608408 5714352 1607912 5713864 1607816 5714344 -1607800 5713888 1607912 5713864 1657056 5639384 1599875 5599875 -1607800 5713888 1607912 5713864 1599875 5599875 1604784 5714488 -1607912 5713864 1657088 5639464 1657056 5639384 1599875 5599875 -1607800 5713888 1607720 5714064 1607912 5713864 1599875 5599875 -1657056 5639384 1657088 5639296 1599875 5599875 1607912 5713864 -1607800 5713888 1607728 5713968 1607720 5714064 1607912 5713864 -1608408 5714352 1607968 5713904 1607912 5713864 1608160 5714424 -1607968 5713904 1608712 5714128 1607912 5713864 1608160 5714424 -1607912 5713864 1607968 5713904 1608712 5714128 1657088 5639464 -1607912 5713864 1607816 5714344 1608160 5714424 1607968 5713904 -1607816 5714344 1607888 5714416 1608160 5714424 1607968 5713904 -1607912 5713864 1607760 5714256 1607816 5714344 1607968 5713904 -1608160 5714424 1608408 5714352 1607968 5713904 1607816 5714344 -1607912 5713864 1607760 5714256 1607968 5713904 1608712 5714128 -1607912 5713864 1607736 5714184 1607760 5714256 1607968 5713904 -1607760 5714256 1607816 5714344 1607968 5713904 1607736 5714184 -1607912 5713864 1607720 5714064 1607736 5714184 1607968 5713904 -1607912 5713864 1607720 5714064 1607968 5713904 1608712 5714128 -1607736 5714184 1607760 5714256 1607968 5713904 1607720 5714064 -1607912 5713864 1607800 5713888 1607720 5714064 1607968 5713904 -1607720 5714064 1607736 5714184 1607968 5713904 1607800 5713888 -1607912 5713864 1607800 5713888 1607968 5713904 1608712 5714128 -1607816 5714344 1608160 5714424 1607968 5713904 1607760 5714256 -1608408 5714352 1608712 5714128 1607968 5713904 1608160 5714424 -1607800 5713888 1607728 5713968 1607720 5714064 1607968 5713904 -1607720 5714064 1607736 5714184 1607968 5713904 1607728 5713968 -1607800 5713888 1607728 5713968 1607968 5713904 1607912 5713864 -1607800 5713888 1607760 5713904 1607728 5713968 1607968 5713904 -1657088 5639464 1608192 5713888 1608712 5714128 1663776 5646144 -1607912 5713864 1608192 5713888 1657088 5639464 1657056 5639384 -1608712 5714128 1608192 5713888 1607912 5713864 1607968 5713904 -1608712 5714128 1608192 5713888 1607968 5713904 1608408 5714352 -1608192 5713888 1607912 5713864 1607968 5713904 1608408 5714352 -1608192 5713888 1657088 5639464 1607912 5713864 1607968 5713904 -1607968 5713904 1608160 5714424 1608408 5714352 1608192 5713888 -1607968 5713904 1607816 5714344 1608160 5714424 1608192 5713888 -1607968 5713904 1608160 5714424 1608192 5713888 1607912 5713864 -1608408 5714352 1608712 5714128 1608192 5713888 1608160 5714424 -1608712 5714128 1657088 5639464 1608192 5713888 1608408 5714352 -1657088 5639464 1608312 5713840 1608712 5714128 1663776 5646144 -1608312 5713840 1608192 5713888 1608712 5714128 1663776 5646144 -1657088 5639464 1608312 5713840 1663776 5646144 1663688 5645984 -1608192 5713888 1608312 5713840 1657088 5639464 1607912 5713864 -1657088 5639464 1657056 5639384 1607912 5713864 1608312 5713840 -1657056 5639384 1599875 5599875 1607912 5713864 1608312 5713840 -1608192 5713888 1608312 5713840 1607912 5713864 1607968 5713904 -1607912 5713864 1608192 5713888 1608312 5713840 1657056 5639384 -1608192 5713888 1608712 5714128 1608312 5713840 1607912 5713864 -1608712 5714128 1608312 5713840 1608192 5713888 1608408 5714352 -1608712 5714128 1663776 5646144 1608312 5713840 1608408 5714352 -1608192 5713888 1608160 5714424 1608408 5714352 1608312 5713840 -1608312 5713840 1607912 5713864 1608192 5713888 1608408 5714352 -1657088 5639464 1657056 5639384 1608312 5713840 1663776 5646144 -1608712 5714128 1663880 5646248 1663776 5646144 1608312 5713840 -1608712 5714128 1663880 5646248 1608312 5713840 1608408 5714352 -1663776 5646144 1657088 5639464 1608312 5713840 1663880 5646248 -1608712 5714128 1609480 5714768 1663880 5646248 1608312 5713840 -1663776 5646144 1608344 5713792 1608312 5713840 1663880 5646248 -1608344 5713792 1657088 5639464 1608312 5713840 1663880 5646248 -1663776 5646144 1657088 5639464 1608344 5713792 1663880 5646248 -1657088 5639464 1608344 5713792 1663776 5646144 1663688 5645984 -1608312 5713840 1608344 5713792 1657088 5639464 1657056 5639384 -1608312 5713840 1663880 5646248 1608344 5713792 1657056 5639384 -1608344 5713792 1663776 5646144 1657088 5639464 1657056 5639384 -1608312 5713840 1608344 5713792 1657056 5639384 1607912 5713864 -1608312 5713840 1663880 5646248 1608344 5713792 1607912 5713864 -1657056 5639384 1599875 5599875 1607912 5713864 1608344 5713792 -1607912 5713864 1608312 5713840 1608344 5713792 1599875 5599875 -1599875 5599875 1607800 5713888 1607912 5713864 1608344 5713792 -1608312 5713840 1608344 5713792 1607912 5713864 1608192 5713888 -1608312 5713840 1663880 5646248 1608344 5713792 1608192 5713888 -1608344 5713792 1599875 5599875 1607912 5713864 1608192 5713888 -1607912 5713864 1607968 5713904 1608192 5713888 1608344 5713792 -1608344 5713792 1657088 5639464 1657056 5639384 1599875 5599875 -1657056 5639384 1657088 5639296 1599875 5599875 1608344 5713792 -1608312 5713840 1608712 5714128 1663880 5646248 1608344 5713792 -1608312 5713840 1608712 5714128 1608344 5713792 1608192 5713888 -1608312 5713840 1608408 5714352 1608712 5714128 1608344 5713792 -1663880 5646248 1663776 5646144 1608344 5713792 1608712 5714128 -1608712 5714128 1609480 5714768 1663880 5646248 1608344 5713792 -1663880 5646248 1663776 5646144 1608344 5713792 1609480 5714768 -1608712 5714128 1609432 5714744 1609480 5714768 1608344 5713792 -1609480 5714768 1609512 5714824 1663880 5646248 1608344 5713792 -1608712 5714128 1609480 5714768 1608344 5713792 1608312 5713840 -1599875 5599875 1608280 5713584 1608344 5713792 1657056 5639384 -1608280 5713584 1607912 5713864 1608344 5713792 1657056 5639384 -1599875 5599875 1607912 5713864 1608280 5713584 1657056 5639384 -1608344 5713792 1608280 5713584 1607912 5713864 1608192 5713888 -1608344 5713792 1657056 5639384 1608280 5713584 1608192 5713888 -1608280 5713584 1599875 5599875 1607912 5713864 1608192 5713888 -1607912 5713864 1607968 5713904 1608192 5713888 1608280 5713584 -1607912 5713864 1608280 5713584 1599875 5599875 1607800 5713888 -1607912 5713864 1608192 5713888 1608280 5713584 1607800 5713888 -1608280 5713584 1657056 5639384 1599875 5599875 1607800 5713888 -1599875 5599875 1604784 5714488 1607800 5713888 1608280 5713584 -1599875 5599875 1604784 5714488 1608280 5713584 1657056 5639384 -1607800 5713888 1607912 5713864 1608280 5713584 1604784 5714488 -1604784 5714488 1604840 5714480 1607800 5713888 1608280 5713584 -1604784 5714488 1604840 5714480 1608280 5713584 1599875 5599875 -1607800 5713888 1607912 5713864 1608280 5713584 1604840 5714480 -1604840 5714480 1607760 5713904 1607800 5713888 1608280 5713584 -1607800 5713888 1607912 5713864 1608280 5713584 1607760 5713904 -1604840 5714480 1607760 5713904 1608280 5713584 1604784 5714488 -1608344 5713792 1608280 5713584 1608192 5713888 1608312 5713840 -1608344 5713792 1657088 5639464 1657056 5639384 1608280 5713584 -1608344 5713792 1663776 5646144 1657088 5639464 1608280 5713584 -1608344 5713792 1663776 5646144 1608280 5713584 1608192 5713888 -1608344 5713792 1663880 5646248 1663776 5646144 1608280 5713584 -1663776 5646144 1657088 5639464 1608280 5713584 1663880 5646248 -1608344 5713792 1663880 5646248 1608280 5713584 1608192 5713888 -1608344 5713792 1609480 5714768 1663880 5646248 1608280 5713584 -1608344 5713792 1609480 5714768 1608280 5713584 1608192 5713888 -1663880 5646248 1663776 5646144 1608280 5713584 1609480 5714768 -1657056 5639384 1599875 5599875 1608280 5713584 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1608280 5713584 -1609480 5714768 1609512 5714824 1663880 5646248 1608280 5713584 -1608344 5713792 1608712 5714128 1609480 5714768 1608280 5713584 -1608344 5713792 1608712 5714128 1608280 5713584 1608192 5713888 -1609480 5714768 1663880 5646248 1608280 5713584 1608712 5714128 -1608712 5714128 1609432 5714744 1609480 5714768 1608280 5713584 -1657088 5639464 1657056 5639384 1608280 5713584 1663776 5646144 -1604840 5714480 1604944 5714528 1607760 5713904 1608280 5713584 -1599875 5599875 1604744 5714504 1604784 5714488 1608280 5713584 -1599875 5599875 1608280 5713584 1657056 5639384 1657088 5639296 -1608344 5713792 1608312 5713840 1608712 5714128 1608280 5713584 -1599875 5599875 1608224 5713456 1608280 5713584 1657056 5639384 -1608224 5713456 1604784 5714488 1608280 5713584 1657056 5639384 -1599875 5599875 1604784 5714488 1608224 5713456 1657056 5639384 -1608280 5713584 1608224 5713456 1604784 5714488 1604840 5714480 -1608280 5713584 1657056 5639384 1608224 5713456 1604840 5714480 -1608224 5713456 1599875 5599875 1604784 5714488 1604840 5714480 -1608280 5713584 1657088 5639464 1657056 5639384 1608224 5713456 -1608280 5713584 1657088 5639464 1608224 5713456 1604840 5714480 -1657056 5639384 1599875 5599875 1608224 5713456 1657088 5639464 -1608280 5713584 1608224 5713456 1604840 5714480 1607760 5713904 -1608280 5713584 1657088 5639464 1608224 5713456 1607760 5713904 -1608224 5713456 1604784 5714488 1604840 5714480 1607760 5713904 -1608280 5713584 1608224 5713456 1607760 5713904 1607800 5713888 -1608280 5713584 1657088 5639464 1608224 5713456 1607800 5713888 -1608280 5713584 1608224 5713456 1607800 5713888 1607912 5713864 -1608280 5713584 1608224 5713456 1607912 5713864 1608192 5713888 -1608280 5713584 1657088 5639464 1608224 5713456 1607912 5713864 -1608224 5713456 1604840 5714480 1607760 5713904 1607800 5713888 -1608224 5713456 1607760 5713904 1607800 5713888 1607912 5713864 -1608280 5713584 1663776 5646144 1657088 5639464 1608224 5713456 -1608280 5713584 1663880 5646248 1663776 5646144 1608224 5713456 -1608280 5713584 1609480 5714768 1663880 5646248 1608224 5713456 -1663880 5646248 1663776 5646144 1608224 5713456 1609480 5714768 -1608280 5713584 1609480 5714768 1608224 5713456 1607912 5713864 -1608280 5713584 1608712 5714128 1609480 5714768 1608224 5713456 -1609480 5714768 1663880 5646248 1608224 5713456 1608712 5714128 -1608280 5713584 1608712 5714128 1608224 5713456 1607912 5713864 -1608712 5714128 1609432 5714744 1609480 5714768 1608224 5713456 -1657088 5639464 1657056 5639384 1608224 5713456 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1608224 5713456 -1609480 5714768 1609512 5714824 1663880 5646248 1608224 5713456 -1608280 5713584 1608344 5713792 1608712 5714128 1608224 5713456 -1663776 5646144 1657088 5639464 1608224 5713456 1663880 5646248 -1604840 5714480 1604944 5714528 1607760 5713904 1608224 5713456 -1604784 5714488 1608224 5713456 1599875 5599875 1604744 5714504 -1599875 5599875 1608224 5713456 1657056 5639384 1657088 5639296 -1657056 5639384 1608216 5713344 1608224 5713456 1657088 5639464 -1608216 5713344 1599875 5599875 1608224 5713456 1657088 5639464 -1608224 5713456 1608216 5713344 1599875 5599875 1604784 5714488 -1608224 5713456 1608216 5713344 1604784 5714488 1604840 5714480 -1608224 5713456 1657088 5639464 1608216 5713344 1604840 5714480 -1608216 5713344 1599875 5599875 1604784 5714488 1604840 5714480 -1608216 5713344 1657056 5639384 1599875 5599875 1604784 5714488 -1657056 5639384 1599875 5599875 1608216 5713344 1657088 5639464 -1608224 5713456 1608216 5713344 1604840 5714480 1607760 5713904 -1608216 5713344 1604784 5714488 1604840 5714480 1607760 5713904 -1608224 5713456 1657088 5639464 1608216 5713344 1607760 5713904 -1608224 5713456 1663776 5646144 1657088 5639464 1608216 5713344 -1657088 5639464 1657056 5639384 1608216 5713344 1663776 5646144 -1608224 5713456 1663776 5646144 1608216 5713344 1607760 5713904 -1663776 5646144 1663688 5645984 1657088 5639464 1608216 5713344 -1608224 5713456 1608216 5713344 1607760 5713904 1607800 5713888 -1608224 5713456 1663776 5646144 1608216 5713344 1607800 5713888 -1608216 5713344 1604840 5714480 1607760 5713904 1607800 5713888 -1608224 5713456 1608216 5713344 1607800 5713888 1607912 5713864 -1608224 5713456 1663776 5646144 1608216 5713344 1607912 5713864 -1608224 5713456 1608216 5713344 1607912 5713864 1608280 5713584 -1608216 5713344 1607760 5713904 1607800 5713888 1607912 5713864 -1608224 5713456 1663880 5646248 1663776 5646144 1608216 5713344 -1608224 5713456 1609480 5714768 1663880 5646248 1608216 5713344 -1608224 5713456 1608712 5714128 1609480 5714768 1608216 5713344 -1609480 5714768 1663880 5646248 1608216 5713344 1608712 5714128 -1608224 5713456 1608712 5714128 1608216 5713344 1607912 5713864 -1608224 5713456 1608280 5713584 1608712 5714128 1608216 5713344 -1608712 5714128 1609480 5714768 1608216 5713344 1608280 5713584 -1608224 5713456 1608280 5713584 1608216 5713344 1607912 5713864 -1608712 5714128 1609432 5714744 1609480 5714768 1608216 5713344 -1663776 5646144 1657088 5639464 1608216 5713344 1663880 5646248 -1609480 5714768 1609512 5714824 1663880 5646248 1608216 5713344 -1608280 5713584 1608344 5713792 1608712 5714128 1608216 5713344 -1663880 5646248 1663776 5646144 1608216 5713344 1609480 5714768 -1604840 5714480 1604944 5714528 1607760 5713904 1608216 5713344 -1599875 5599875 1604744 5714504 1604784 5714488 1608216 5713344 -1599875 5599875 1608216 5713344 1657056 5639384 1657088 5639296 -1608216 5713344 1608240 5713248 1599875 5599875 1604784 5714488 -1608216 5713344 1608240 5713248 1604784 5714488 1604840 5714480 -1608216 5713344 1608240 5713248 1604840 5714480 1607760 5713904 -1608240 5713248 1604784 5714488 1604840 5714480 1607760 5713904 -1608240 5713248 1599875 5599875 1604784 5714488 1604840 5714480 -1608216 5713344 1657056 5639384 1608240 5713248 1607760 5713904 -1657056 5639384 1608240 5713248 1608216 5713344 1657088 5639464 -1608216 5713344 1663776 5646144 1657088 5639464 1608240 5713248 -1608240 5713248 1607760 5713904 1608216 5713344 1663776 5646144 -1657088 5639464 1657056 5639384 1608240 5713248 1663776 5646144 -1608240 5713248 1657056 5639384 1599875 5599875 1604784 5714488 -1657056 5639384 1599875 5599875 1608240 5713248 1657088 5639464 -1608216 5713344 1608240 5713248 1607760 5713904 1607800 5713888 -1608216 5713344 1663880 5646248 1663776 5646144 1608240 5713248 -1663776 5646144 1657088 5639464 1608240 5713248 1663880 5646248 -1608216 5713344 1663880 5646248 1608240 5713248 1607760 5713904 -1663776 5646144 1663688 5645984 1657088 5639464 1608240 5713248 -1608216 5713344 1609480 5714768 1663880 5646248 1608240 5713248 -1608216 5713344 1608712 5714128 1609480 5714768 1608240 5713248 -1608216 5713344 1608280 5713584 1608712 5714128 1608240 5713248 -1608712 5714128 1609480 5714768 1608240 5713248 1608280 5713584 -1608216 5713344 1608280 5713584 1608240 5713248 1607760 5713904 -1608216 5713344 1608224 5713456 1608280 5713584 1608240 5713248 -1608280 5713584 1608712 5714128 1608240 5713248 1608224 5713456 -1608216 5713344 1608224 5713456 1608240 5713248 1607760 5713904 -1608712 5714128 1609432 5714744 1609480 5714768 1608240 5713248 -1663880 5646248 1663776 5646144 1608240 5713248 1609480 5714768 -1609480 5714768 1609512 5714824 1663880 5646248 1608240 5713248 -1608280 5713584 1608344 5713792 1608712 5714128 1608240 5713248 -1609480 5714768 1663880 5646248 1608240 5713248 1608712 5714128 -1604840 5714480 1604944 5714528 1607760 5713904 1608240 5713248 -1599875 5599875 1604744 5714504 1604784 5714488 1608240 5713248 -1599875 5599875 1608240 5713248 1657056 5639384 1657088 5639296 -1608240 5713248 1608280 5713216 1663880 5646248 1663776 5646144 -1608240 5713248 1608280 5713216 1663776 5646144 1657088 5639464 -1608240 5713248 1608280 5713216 1657088 5639464 1657056 5639384 -1608280 5713216 1663776 5646144 1657088 5639464 1657056 5639384 -1608240 5713248 1609480 5714768 1608280 5713216 1657056 5639384 -1608240 5713248 1608280 5713216 1657056 5639384 1599875 5599875 -1608280 5713216 1657088 5639464 1657056 5639384 1599875 5599875 -1608240 5713248 1608280 5713216 1599875 5599875 1604784 5714488 -1608240 5713248 1608280 5713216 1604784 5714488 1604840 5714480 -1608240 5713248 1608280 5713216 1604840 5714480 1607760 5713904 -1608280 5713216 1599875 5599875 1604784 5714488 1604840 5714480 -1608240 5713248 1609480 5714768 1608280 5713216 1604840 5714480 -1608280 5713216 1657056 5639384 1599875 5599875 1604784 5714488 -1608280 5713216 1609480 5714768 1663880 5646248 1663776 5646144 -1608280 5713216 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1608280 5713216 -1663880 5646248 1608280 5713216 1609480 5714768 1609512 5714824 -1609480 5714768 1608280 5713216 1608240 5713248 1608712 5714128 -1608240 5713248 1608280 5713584 1608712 5714128 1608280 5713216 -1608240 5713248 1608224 5713456 1608280 5713584 1608280 5713216 -1608280 5713584 1608712 5714128 1608280 5713216 1608224 5713456 -1608280 5713216 1604840 5714480 1608240 5713248 1608224 5713456 -1609480 5714768 1663880 5646248 1608280 5713216 1608712 5714128 -1608240 5713248 1608216 5713344 1608224 5713456 1608280 5713216 -1608224 5713456 1608280 5713584 1608280 5713216 1608216 5713344 -1608240 5713248 1608216 5713344 1608280 5713216 1604840 5714480 -1609480 5714768 1608280 5713216 1608712 5714128 1609432 5714744 -1608280 5713584 1608344 5713792 1608712 5714128 1608280 5713216 -1608712 5714128 1609480 5714768 1608280 5713216 1608280 5713584 -1599875 5599875 1604744 5714504 1604784 5714488 1608280 5713216 -1657056 5639384 1657088 5639296 1599875 5599875 1608280 5713216 -1657056 5639384 1608280 5713176 1608280 5713216 1657088 5639464 -1608280 5713216 1663776 5646144 1657088 5639464 1608280 5713176 -1657088 5639464 1657056 5639384 1608280 5713176 1663776 5646144 -1608280 5713216 1608280 5713176 1599875 5599875 1604784 5714488 -1608280 5713216 1608280 5713176 1604784 5714488 1604840 5714480 -1608280 5713216 1608280 5713176 1604840 5714480 1608240 5713248 -1604840 5714480 1607760 5713904 1608240 5713248 1608280 5713176 -1608280 5713176 1604784 5714488 1604840 5714480 1608240 5713248 -1608280 5713176 1599875 5599875 1604784 5714488 1604840 5714480 -1608280 5713176 1608240 5713248 1608280 5713216 1663776 5646144 -1608280 5713176 1657056 5639384 1599875 5599875 1604784 5714488 -1657056 5639384 1599875 5599875 1608280 5713176 1657088 5639464 -1608280 5713216 1663880 5646248 1663776 5646144 1608280 5713176 -1663776 5646144 1657088 5639464 1608280 5713176 1663880 5646248 -1608280 5713216 1609480 5714768 1663880 5646248 1608280 5713176 -1608280 5713216 1609480 5714768 1608280 5713176 1608240 5713248 -1608280 5713216 1608712 5714128 1609480 5714768 1608280 5713176 -1609480 5714768 1663880 5646248 1608280 5713176 1608712 5714128 -1608280 5713216 1608712 5714128 1608280 5713176 1608240 5713248 -1608712 5714128 1609432 5714744 1609480 5714768 1608280 5713176 -1663880 5646248 1663776 5646144 1608280 5713176 1609480 5714768 -1663776 5646144 1663688 5645984 1657088 5639464 1608280 5713176 -1609480 5714768 1609512 5714824 1663880 5646248 1608280 5713176 -1608280 5713216 1608280 5713584 1608712 5714128 1608280 5713176 -1599875 5599875 1604744 5714504 1604784 5714488 1608280 5713176 -1599875 5599875 1608280 5713176 1657056 5639384 1657088 5639296 -1609480 5714768 1608336 5713136 1608280 5713176 1608712 5714128 -1609480 5714768 1663880 5646248 1608336 5713136 1608712 5714128 -1608280 5713176 1608280 5713216 1608712 5714128 1608336 5713136 -1608712 5714128 1609480 5714768 1608336 5713136 1608280 5713216 -1608336 5713136 1663880 5646248 1608280 5713176 1608280 5713216 -1609480 5714768 1608336 5713136 1608712 5714128 1609432 5714744 -1609480 5714768 1663880 5646248 1608336 5713136 1609432 5714744 -1608336 5713136 1608280 5713216 1608712 5714128 1609432 5714744 -1608280 5713176 1608336 5713136 1663880 5646248 1663776 5646144 -1608280 5713176 1608336 5713136 1663776 5646144 1657088 5639464 -1608280 5713176 1608336 5713136 1657088 5639464 1657056 5639384 -1608336 5713136 1663776 5646144 1657088 5639464 1657056 5639384 -1608336 5713136 1609480 5714768 1663880 5646248 1663776 5646144 -1608280 5713176 1608280 5713216 1608336 5713136 1657056 5639384 -1608280 5713176 1608336 5713136 1657056 5639384 1599875 5599875 -1608336 5713136 1657088 5639464 1657056 5639384 1599875 5599875 -1608280 5713176 1608336 5713136 1599875 5599875 1604784 5714488 -1608280 5713176 1608336 5713136 1604784 5714488 1604840 5714480 -1608280 5713176 1608336 5713136 1604840 5714480 1608240 5713248 -1608336 5713136 1599875 5599875 1604784 5714488 1604840 5714480 -1608280 5713176 1608280 5713216 1608336 5713136 1604840 5714480 -1608336 5713136 1657056 5639384 1599875 5599875 1604784 5714488 -1608336 5713136 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1608336 5713136 -1663880 5646248 1608336 5713136 1609480 5714768 1609512 5714824 -1608712 5714128 1609408 5714752 1609432 5714744 1608336 5713136 -1608280 5713216 1608280 5713584 1608712 5714128 1608336 5713136 -1608280 5713216 1608224 5713456 1608280 5713584 1608336 5713136 -1608712 5714128 1609432 5714744 1608336 5713136 1608280 5713584 -1608280 5713216 1608280 5713584 1608336 5713136 1608280 5713176 -1608280 5713584 1608344 5713792 1608712 5714128 1608336 5713136 -1599875 5599875 1604744 5714504 1604784 5714488 1608336 5713136 -1657056 5639384 1657088 5639296 1599875 5599875 1608336 5713136 -1608336 5713136 1608408 5713120 1663880 5646248 1663776 5646144 -1608336 5713136 1609480 5714768 1608408 5713120 1663776 5646144 -1609480 5714768 1608408 5713120 1608336 5713136 1609432 5714744 -1608408 5713120 1663776 5646144 1608336 5713136 1609432 5714744 -1608408 5713120 1609480 5714768 1663880 5646248 1663776 5646144 -1609480 5714768 1663880 5646248 1608408 5713120 1609432 5714744 -1608336 5713136 1608712 5714128 1609432 5714744 1608408 5713120 -1608336 5713136 1608712 5714128 1608408 5713120 1663776 5646144 -1609432 5714744 1609480 5714768 1608408 5713120 1608712 5714128 -1608336 5713136 1608280 5713584 1608712 5714128 1608408 5713120 -1608336 5713136 1608280 5713584 1608408 5713120 1663776 5646144 -1608712 5714128 1609432 5714744 1608408 5713120 1608280 5713584 -1608336 5713136 1608408 5713120 1663776 5646144 1657088 5639464 -1608336 5713136 1608408 5713120 1657088 5639464 1657056 5639384 -1608336 5713136 1608408 5713120 1657056 5639384 1599875 5599875 -1608408 5713120 1657088 5639464 1657056 5639384 1599875 5599875 -1608408 5713120 1663880 5646248 1663776 5646144 1657088 5639464 -1608336 5713136 1608280 5713584 1608408 5713120 1599875 5599875 -1608336 5713136 1608408 5713120 1599875 5599875 1604784 5714488 -1608408 5713120 1663776 5646144 1657088 5639464 1657056 5639384 -1663776 5646144 1663688 5645984 1657088 5639464 1608408 5713120 -1663880 5646248 1608408 5713120 1609480 5714768 1609512 5714824 -1608712 5714128 1609408 5714752 1609432 5714744 1608408 5713120 -1608280 5713584 1608344 5713792 1608712 5714128 1608408 5713120 -1608280 5713584 1608344 5713792 1608408 5713120 1608336 5713136 -1608712 5714128 1609432 5714744 1608408 5713120 1608344 5713792 -1608336 5713136 1608280 5713216 1608280 5713584 1608408 5713120 -1608280 5713216 1608224 5713456 1608280 5713584 1608408 5713120 -1608280 5713216 1608216 5713344 1608224 5713456 1608408 5713120 -1608336 5713136 1608280 5713216 1608408 5713120 1599875 5599875 -1608280 5713584 1608344 5713792 1608408 5713120 1608224 5713456 -1608336 5713136 1608280 5713176 1608280 5713216 1608408 5713120 -1608280 5713216 1608224 5713456 1608408 5713120 1608336 5713136 -1657056 5639384 1657088 5639296 1599875 5599875 1608408 5713120 -1608344 5713792 1608312 5713840 1608712 5714128 1608408 5713120 -1608408 5713120 1608424 5713160 1609432 5714744 1609480 5714768 -1608408 5713120 1608712 5714128 1608424 5713160 1609480 5714768 -1608408 5713120 1608424 5713160 1609480 5714768 1663880 5646248 -1608424 5713160 1608712 5714128 1609432 5714744 1609480 5714768 -1608712 5714128 1608424 5713160 1608408 5713120 1608344 5713792 -1608424 5713160 1609480 5714768 1608408 5713120 1608344 5713792 -1608712 5714128 1609432 5714744 1608424 5713160 1608344 5713792 -1609432 5714744 1608424 5713160 1608712 5714128 1609408 5714752 -1608408 5713120 1608280 5713584 1608344 5713792 1608424 5713160 -1608408 5713120 1608280 5713584 1608424 5713160 1609480 5714768 -1608408 5713120 1608224 5713456 1608280 5713584 1608424 5713160 -1608408 5713120 1608280 5713216 1608224 5713456 1608424 5713160 -1608280 5713216 1608216 5713344 1608224 5713456 1608424 5713160 -1608280 5713216 1608216 5713344 1608424 5713160 1608408 5713120 -1608408 5713120 1608280 5713216 1608424 5713160 1609480 5714768 -1608224 5713456 1608280 5713584 1608424 5713160 1608216 5713344 -1608280 5713216 1608240 5713248 1608216 5713344 1608424 5713160 -1608344 5713792 1608712 5714128 1608424 5713160 1608280 5713584 -1608280 5713584 1608344 5713792 1608424 5713160 1608224 5713456 -1608408 5713120 1608336 5713136 1608280 5713216 1608424 5713160 -1608280 5713216 1608216 5713344 1608424 5713160 1608336 5713136 -1608408 5713120 1608336 5713136 1608424 5713160 1609480 5714768 -1608336 5713136 1608280 5713176 1608280 5713216 1608424 5713160 -1608712 5714128 1608424 5713160 1608344 5713792 1608312 5713840 -1608408 5713120 1608480 5713144 1663880 5646248 1663776 5646144 -1608408 5713120 1608480 5713144 1663776 5646144 1657088 5639464 -1608480 5713144 1663880 5646248 1663776 5646144 1657088 5639464 -1609480 5714768 1608480 5713144 1608408 5713120 1608424 5713160 -1609480 5714768 1608480 5713144 1608424 5713160 1609432 5714744 -1608480 5713144 1608408 5713120 1608424 5713160 1609432 5714744 -1608424 5713160 1608712 5714128 1609432 5714744 1608480 5713144 -1609432 5714744 1609480 5714768 1608480 5713144 1608712 5714128 -1608424 5713160 1608712 5714128 1608480 5713144 1608408 5713120 -1608408 5713120 1608424 5713160 1608480 5713144 1657088 5639464 -1608424 5713160 1608344 5713792 1608712 5714128 1608480 5713144 -1608424 5713160 1608344 5713792 1608480 5713144 1608408 5713120 -1608712 5714128 1609432 5714744 1608480 5713144 1608344 5713792 -1608424 5713160 1608280 5713584 1608344 5713792 1608480 5713144 -1608424 5713160 1608280 5713584 1608480 5713144 1608408 5713120 -1608344 5713792 1608712 5714128 1608480 5713144 1608280 5713584 -1608408 5713120 1608480 5713144 1657088 5639464 1657056 5639384 -1608480 5713144 1609480 5714768 1663880 5646248 1663776 5646144 -1609480 5714768 1663880 5646248 1608480 5713144 1609432 5714744 -1663776 5646144 1663688 5645984 1657088 5639464 1608480 5713144 -1663880 5646248 1608480 5713144 1609480 5714768 1609512 5714824 -1608712 5714128 1609408 5714752 1609432 5714744 1608480 5713144 -1608424 5713160 1608224 5713456 1608280 5713584 1608480 5713144 -1608344 5713792 1608312 5713840 1608712 5714128 1608480 5713144 -1608480 5713144 1608576 5713048 1663880 5646248 1663776 5646144 -1608480 5713144 1608576 5713048 1663776 5646144 1657088 5639464 -1608480 5713144 1608576 5713048 1657088 5639464 1608408 5713120 -1608576 5713048 1663776 5646144 1657088 5639464 1608408 5713120 -1608480 5713144 1608576 5713048 1608408 5713120 1608424 5713160 -1657088 5639464 1657056 5639384 1608408 5713120 1608576 5713048 -1657056 5639384 1599875 5599875 1608408 5713120 1608576 5713048 -1599875 5599875 1608336 5713136 1608408 5713120 1608576 5713048 -1599875 5599875 1608336 5713136 1608576 5713048 1657056 5639384 -1608408 5713120 1608480 5713144 1608576 5713048 1608336 5713136 -1657088 5639464 1657056 5639384 1608576 5713048 1663776 5646144 -1599875 5599875 1604784 5714488 1608336 5713136 1608576 5713048 -1657056 5639384 1599875 5599875 1608576 5713048 1657088 5639464 -1608576 5713048 1663880 5646248 1663776 5646144 1657088 5639464 -1608480 5713144 1609480 5714768 1608576 5713048 1608408 5713120 -1609480 5714768 1608576 5713048 1608480 5713144 1609432 5714744 -1608480 5713144 1608712 5714128 1609432 5714744 1608576 5713048 -1608480 5713144 1608344 5713792 1608712 5714128 1608576 5713048 -1608576 5713048 1608408 5713120 1608480 5713144 1608712 5714128 -1609432 5714744 1609480 5714768 1608576 5713048 1608712 5714128 -1608576 5713048 1609480 5714768 1663880 5646248 1663776 5646144 -1609480 5714768 1663880 5646248 1608576 5713048 1609432 5714744 -1663776 5646144 1663688 5645984 1657088 5639464 1608576 5713048 -1663880 5646248 1608576 5713048 1609480 5714768 1609512 5714824 -1663880 5646248 1608576 5713048 1609512 5714824 1663944 5646256 -1663880 5646248 1663776 5646144 1608576 5713048 1609512 5714824 -1608576 5713048 1609432 5714744 1609480 5714768 1609512 5714824 -1608712 5714128 1609408 5714752 1609432 5714744 1608576 5713048 -1657056 5639384 1657088 5639296 1599875 5599875 1608576 5713048 -1663880 5646248 1608608 5713032 1609512 5714824 1663944 5646256 -1608576 5713048 1608608 5713032 1663880 5646248 1663776 5646144 -1608576 5713048 1608608 5713032 1663776 5646144 1657088 5639464 -1608576 5713048 1608608 5713032 1657088 5639464 1657056 5639384 -1608576 5713048 1608608 5713032 1657056 5639384 1599875 5599875 -1608576 5713048 1608608 5713032 1599875 5599875 1608336 5713136 -1608576 5713048 1608608 5713032 1608336 5713136 1608408 5713120 -1608608 5713032 1657088 5639464 1657056 5639384 1599875 5599875 -1599875 5599875 1604784 5714488 1608336 5713136 1608608 5713032 -1608608 5713032 1657056 5639384 1599875 5599875 1608336 5713136 -1608608 5713032 1663776 5646144 1657088 5639464 1657056 5639384 -1608608 5713032 1663880 5646248 1663776 5646144 1657088 5639464 -1608576 5713048 1609512 5714824 1608608 5713032 1608336 5713136 -1608608 5713032 1609512 5714824 1663880 5646248 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1608608 5713032 -1609512 5714824 1608608 5713032 1608576 5713048 1609480 5714768 -1608608 5713032 1608336 5713136 1608576 5713048 1609480 5714768 -1608576 5713048 1609432 5714744 1609480 5714768 1608608 5713032 -1608576 5713048 1608712 5714128 1609432 5714744 1608608 5713032 -1608576 5713048 1608480 5713144 1608712 5714128 1608608 5713032 -1608480 5713144 1608344 5713792 1608712 5714128 1608608 5713032 -1608712 5714128 1609432 5714744 1608608 5713032 1608480 5713144 -1608576 5713048 1608480 5713144 1608608 5713032 1608336 5713136 -1609432 5714744 1609480 5714768 1608608 5713032 1608712 5714128 -1609512 5714824 1663880 5646248 1608608 5713032 1609480 5714768 -1609480 5714768 1609512 5714824 1608608 5713032 1609432 5714744 -1608712 5714128 1609408 5714752 1609432 5714744 1608608 5713032 -1657056 5639384 1657088 5639296 1599875 5599875 1608608 5713032 -1663880 5646248 1608648 5713040 1609512 5714824 1663944 5646256 -1608608 5713032 1608648 5713040 1663880 5646248 1663776 5646144 -1608648 5713040 1609512 5714824 1663880 5646248 1663776 5646144 -1608608 5713032 1608648 5713040 1663776 5646144 1657088 5639464 -1608608 5713032 1608648 5713040 1657088 5639464 1657056 5639384 -1608648 5713040 1663880 5646248 1663776 5646144 1657088 5639464 -1608608 5713032 1609512 5714824 1608648 5713040 1657088 5639464 -1609512 5714824 1608648 5713040 1608608 5713032 1609480 5714768 -1609512 5714824 1663880 5646248 1608648 5713040 1609480 5714768 -1608648 5713040 1657088 5639464 1608608 5713032 1609480 5714768 -1663776 5646144 1663688 5645984 1657088 5639464 1608648 5713040 -1608608 5713032 1609432 5714744 1609480 5714768 1608648 5713040 -1608608 5713032 1608712 5714128 1609432 5714744 1608648 5713040 -1608608 5713032 1608480 5713144 1608712 5714128 1608648 5713040 -1608608 5713032 1608576 5713048 1608480 5713144 1608648 5713040 -1608480 5713144 1608344 5713792 1608712 5714128 1608648 5713040 -1608480 5713144 1608280 5713584 1608344 5713792 1608648 5713040 -1608480 5713144 1608344 5713792 1608648 5713040 1608576 5713048 -1608712 5714128 1609432 5714744 1608648 5713040 1608344 5713792 -1608608 5713032 1608576 5713048 1608648 5713040 1657088 5639464 -1609480 5714768 1609512 5714824 1608648 5713040 1609432 5714744 -1609432 5714744 1609480 5714768 1608648 5713040 1608712 5714128 -1608712 5714128 1609408 5714752 1609432 5714744 1608648 5713040 -1608344 5713792 1608312 5713840 1608712 5714128 1608648 5713040 -1663880 5646248 1608720 5713120 1609512 5714824 1663944 5646256 -1608648 5713040 1608720 5713120 1663880 5646248 1663776 5646144 -1609512 5714824 1608720 5713120 1608648 5713040 1609480 5714768 -1608720 5713120 1663880 5646248 1608648 5713040 1609480 5714768 -1609512 5714824 1663880 5646248 1608720 5713120 1609480 5714768 -1608648 5713040 1609432 5714744 1609480 5714768 1608720 5713120 -1608648 5713040 1609432 5714744 1608720 5713120 1663880 5646248 -1609480 5714768 1609512 5714824 1608720 5713120 1609432 5714744 -1608648 5713040 1608712 5714128 1609432 5714744 1608720 5713120 -1608648 5713040 1608712 5714128 1608720 5713120 1663880 5646248 -1608648 5713040 1608344 5713792 1608712 5714128 1608720 5713120 -1608648 5713040 1608480 5713144 1608344 5713792 1608720 5713120 -1608480 5713144 1608280 5713584 1608344 5713792 1608720 5713120 -1608480 5713144 1608280 5713584 1608720 5713120 1608648 5713040 -1608648 5713040 1608480 5713144 1608720 5713120 1663880 5646248 -1608480 5713144 1608424 5713160 1608280 5713584 1608720 5713120 -1608648 5713040 1608576 5713048 1608480 5713144 1608720 5713120 -1608648 5713040 1608608 5713032 1608576 5713048 1608720 5713120 -1608480 5713144 1608280 5713584 1608720 5713120 1608576 5713048 -1608648 5713040 1608576 5713048 1608720 5713120 1663880 5646248 -1608344 5713792 1608712 5714128 1608720 5713120 1608280 5713584 -1609432 5714744 1609480 5714768 1608720 5713120 1608712 5714128 -1608712 5714128 1609432 5714744 1608720 5713120 1608344 5713792 -1608712 5714128 1609408 5714752 1609432 5714744 1608720 5713120 -1608344 5713792 1608312 5713840 1608712 5714128 1608720 5713120 -1663880 5646248 1608760 5713200 1609512 5714824 1663944 5646256 -1608720 5713120 1608760 5713200 1663880 5646248 1608648 5713040 -1609512 5714824 1608760 5713200 1608720 5713120 1609480 5714768 -1608720 5713120 1609432 5714744 1609480 5714768 1608760 5713200 -1608760 5713200 1663880 5646248 1608720 5713120 1609432 5714744 -1609480 5714768 1609512 5714824 1608760 5713200 1609432 5714744 -1609512 5714824 1663880 5646248 1608760 5713200 1609480 5714768 -1608720 5713120 1608712 5714128 1609432 5714744 1608760 5713200 -1609432 5714744 1609480 5714768 1608760 5713200 1608712 5714128 -1608720 5713120 1608712 5714128 1608760 5713200 1663880 5646248 -1608720 5713120 1608344 5713792 1608712 5714128 1608760 5713200 -1608720 5713120 1608344 5713792 1608760 5713200 1663880 5646248 -1608720 5713120 1608280 5713584 1608344 5713792 1608760 5713200 -1608720 5713120 1608480 5713144 1608280 5713584 1608760 5713200 -1608720 5713120 1608576 5713048 1608480 5713144 1608760 5713200 -1608720 5713120 1608480 5713144 1608760 5713200 1663880 5646248 -1608480 5713144 1608424 5713160 1608280 5713584 1608760 5713200 -1608280 5713584 1608344 5713792 1608760 5713200 1608480 5713144 -1608712 5714128 1609432 5714744 1608760 5713200 1608344 5713792 -1608344 5713792 1608712 5714128 1608760 5713200 1608280 5713584 -1608712 5714128 1609408 5714752 1609432 5714744 1608760 5713200 -1608344 5713792 1608312 5713840 1608712 5714128 1608760 5713200 -1608760 5713200 1608760 5713256 1609432 5714744 1609480 5714768 -1608760 5713200 1608760 5713256 1609480 5714768 1609512 5714824 -1608760 5713200 1608712 5714128 1608760 5713256 1609480 5714768 -1608760 5713256 1608712 5714128 1609432 5714744 1609480 5714768 -1608712 5714128 1608760 5713256 1608760 5713200 1608344 5713792 -1608712 5714128 1609432 5714744 1608760 5713256 1608344 5713792 -1608760 5713256 1609480 5714768 1608760 5713200 1608344 5713792 -1608760 5713200 1608280 5713584 1608344 5713792 1608760 5713256 -1608760 5713200 1608280 5713584 1608760 5713256 1609480 5714768 -1608760 5713200 1608480 5713144 1608280 5713584 1608760 5713256 -1608760 5713200 1608720 5713120 1608480 5713144 1608760 5713256 -1608760 5713200 1608480 5713144 1608760 5713256 1609480 5714768 -1608480 5713144 1608424 5713160 1608280 5713584 1608760 5713256 -1608480 5713144 1608424 5713160 1608760 5713256 1608760 5713200 -1608344 5713792 1608712 5714128 1608760 5713256 1608280 5713584 -1608280 5713584 1608344 5713792 1608760 5713256 1608424 5713160 -1609432 5714744 1608760 5713256 1608712 5714128 1609408 5714752 -1608424 5713160 1608224 5713456 1608280 5713584 1608760 5713256 -1608712 5714128 1608760 5713256 1608344 5713792 1608312 5713840 -1608760 5713256 1608720 5713360 1608712 5714128 1609432 5714744 -1608760 5713256 1608344 5713792 1608720 5713360 1609432 5714744 -1608720 5713360 1608344 5713792 1608712 5714128 1609432 5714744 -1608760 5713256 1608720 5713360 1609432 5714744 1609480 5714768 -1608344 5713792 1608720 5713360 1608760 5713256 1608280 5713584 -1608720 5713360 1609432 5714744 1608760 5713256 1608280 5713584 -1608344 5713792 1608712 5714128 1608720 5713360 1608280 5713584 -1608760 5713256 1608424 5713160 1608280 5713584 1608720 5713360 -1608760 5713256 1608424 5713160 1608720 5713360 1609432 5714744 -1608760 5713256 1608480 5713144 1608424 5713160 1608720 5713360 -1608760 5713256 1608480 5713144 1608720 5713360 1609432 5714744 -1608760 5713256 1608760 5713200 1608480 5713144 1608720 5713360 -1608280 5713584 1608344 5713792 1608720 5713360 1608424 5713160 -1608424 5713160 1608280 5713584 1608720 5713360 1608480 5713144 -1608712 5714128 1609408 5714752 1609432 5714744 1608720 5713360 -1608424 5713160 1608224 5713456 1608280 5713584 1608720 5713360 -1608424 5713160 1608216 5713344 1608224 5713456 1608720 5713360 -1608280 5713584 1608344 5713792 1608720 5713360 1608224 5713456 -1608424 5713160 1608224 5713456 1608720 5713360 1608480 5713144 -1608712 5714128 1608720 5713360 1608344 5713792 1608312 5713840 -1608720 5713360 1608712 5713392 1608712 5714128 1609432 5714744 -1608720 5713360 1608712 5713392 1609432 5714744 1608760 5713256 -1608712 5713392 1608712 5714128 1609432 5714744 1608760 5713256 -1608720 5713360 1608344 5713792 1608712 5713392 1608760 5713256 -1608344 5713792 1608712 5713392 1608720 5713360 1608280 5713584 -1608712 5713392 1608760 5713256 1608720 5713360 1608280 5713584 -1608712 5713392 1608344 5713792 1608712 5714128 1609432 5714744 -1608344 5713792 1608712 5714128 1608712 5713392 1608280 5713584 -1609432 5714744 1609480 5714768 1608760 5713256 1608712 5713392 -1608720 5713360 1608224 5713456 1608280 5713584 1608712 5713392 -1608720 5713360 1608224 5713456 1608712 5713392 1608760 5713256 -1608280 5713584 1608344 5713792 1608712 5713392 1608224 5713456 -1608712 5714128 1609408 5714752 1609432 5714744 1608712 5713392 -1608720 5713360 1608424 5713160 1608224 5713456 1608712 5713392 -1608720 5713360 1608424 5713160 1608712 5713392 1608760 5713256 -1608424 5713160 1608216 5713344 1608224 5713456 1608712 5713392 -1608224 5713456 1608280 5713584 1608712 5713392 1608424 5713160 -1608720 5713360 1608480 5713144 1608424 5713160 1608712 5713392 -1608720 5713360 1608480 5713144 1608712 5713392 1608760 5713256 -1608720 5713360 1608760 5713256 1608480 5713144 1608712 5713392 -1608424 5713160 1608224 5713456 1608712 5713392 1608480 5713144 -1608712 5714128 1608712 5713392 1608344 5713792 1608312 5713840 -1608712 5713392 1608664 5713560 1608712 5714128 1609432 5714744 -1608712 5713392 1608664 5713560 1609432 5714744 1608760 5713256 -1608712 5713392 1608344 5713792 1608664 5713560 1609432 5714744 -1608344 5713792 1608664 5713560 1608712 5713392 1608280 5713584 -1608712 5713392 1608224 5713456 1608280 5713584 1608664 5713560 -1608664 5713560 1609432 5714744 1608712 5713392 1608224 5713456 -1608280 5713584 1608344 5713792 1608664 5713560 1608224 5713456 -1608664 5713560 1608344 5713792 1608712 5714128 1609432 5714744 -1608712 5713392 1608424 5713160 1608224 5713456 1608664 5713560 -1608344 5713792 1608712 5714128 1608664 5713560 1608280 5713584 -1608712 5714128 1609408 5714752 1609432 5714744 1608664 5713560 -1608712 5714128 1608664 5713560 1608344 5713792 1608312 5713840 -1608664 5713560 1608672 5713672 1608712 5714128 1609432 5714744 -1608664 5713560 1608672 5713672 1609432 5714744 1608712 5713392 -1609432 5714744 1608760 5713256 1608712 5713392 1608672 5713672 -1608760 5713256 1608720 5713360 1608712 5713392 1608672 5713672 -1608712 5713392 1608664 5713560 1608672 5713672 1608760 5713256 -1608672 5713672 1608712 5714128 1609432 5714744 1608760 5713256 -1608664 5713560 1608344 5713792 1608672 5713672 1608712 5713392 -1609432 5714744 1609480 5714768 1608760 5713256 1608672 5713672 -1608344 5713792 1608672 5713672 1608664 5713560 1608280 5713584 -1608664 5713560 1608224 5713456 1608280 5713584 1608672 5713672 -1608672 5713672 1608712 5713392 1608664 5713560 1608280 5713584 -1608672 5713672 1608344 5713792 1608712 5714128 1609432 5714744 -1608344 5713792 1608712 5714128 1608672 5713672 1608280 5713584 -1608712 5714128 1609408 5714752 1609432 5714744 1608672 5713672 -1608712 5714128 1608672 5713672 1608344 5713792 1608312 5713840 -1608672 5713672 1608712 5713752 1609432 5714744 1608760 5713256 -1608672 5713672 1608712 5713752 1608760 5713256 1608712 5713392 -1608760 5713256 1608720 5713360 1608712 5713392 1608712 5713752 -1608672 5713672 1608712 5713752 1608712 5713392 1608664 5713560 -1608712 5713752 1608760 5713256 1608712 5713392 1608664 5713560 -1608712 5713752 1609432 5714744 1608760 5713256 1608712 5713392 -1609432 5714744 1609480 5714768 1608760 5713256 1608712 5713752 -1608712 5714128 1608712 5713752 1608672 5713672 1608344 5713792 -1608672 5713672 1608344 5713792 1608712 5713752 1608664 5713560 -1608672 5713672 1608280 5713584 1608344 5713792 1608712 5713752 -1609432 5714744 1608712 5713752 1608712 5714128 1609408 5714752 -1608712 5713752 1608712 5714128 1609432 5714744 1608760 5713256 -1608712 5714128 1609432 5714744 1608712 5713752 1608344 5713792 -1608712 5714128 1608712 5713752 1608344 5713792 1608312 5713840 -1608712 5713752 1608888 5713904 1608760 5713256 1608712 5713392 -1608760 5713256 1608720 5713360 1608712 5713392 1608888 5713904 -1608712 5713752 1608888 5713904 1608712 5713392 1608664 5713560 -1608712 5713752 1608888 5713904 1608664 5713560 1608672 5713672 -1608712 5713392 1608664 5713560 1608888 5713904 1608720 5713360 -1608760 5713256 1608888 5713904 1609432 5714744 1609480 5714768 -1608760 5713256 1608888 5713904 1609480 5714768 1608760 5713200 -1609480 5714768 1609512 5714824 1608760 5713200 1608888 5713904 -1608888 5713904 1609432 5714744 1609480 5714768 1608760 5713200 -1609432 5714744 1608888 5713904 1608712 5713752 1608712 5714128 -1609432 5714744 1608888 5713904 1608712 5714128 1609408 5714752 -1608712 5714128 1609368 5714824 1609408 5714752 1608888 5713904 -1608888 5713904 1608712 5713752 1608712 5714128 1609408 5714752 -1608712 5713752 1608712 5714128 1608888 5713904 1608664 5713560 -1608712 5713752 1608344 5713792 1608712 5714128 1608888 5713904 -1608888 5713904 1608760 5713200 1608760 5713256 1608720 5713360 -1608888 5713904 1609408 5714752 1609432 5714744 1609480 5714768 -1609408 5714752 1608920 5713960 1608712 5714128 1609368 5714824 -1608888 5713904 1608920 5713960 1609408 5714752 1609432 5714744 -1608712 5714128 1608920 5713960 1608888 5713904 1608712 5713752 -1608888 5713904 1608712 5714128 1608920 5713960 1609432 5714744 -1608888 5713904 1608920 5713960 1609432 5714744 1609480 5714768 -1608888 5713904 1608920 5713960 1609480 5714768 1608760 5713200 -1608888 5713904 1608920 5713960 1608760 5713200 1608760 5713256 -1609480 5714768 1609512 5714824 1608760 5713200 1608920 5713960 -1608920 5713960 1609480 5714768 1608760 5713200 1608760 5713256 -1608920 5713960 1609408 5714752 1609432 5714744 1609480 5714768 -1608888 5713904 1608920 5713960 1608760 5713256 1608720 5713360 -1608888 5713904 1608712 5714128 1608920 5713960 1608760 5713256 -1608920 5713960 1609432 5714744 1609480 5714768 1608760 5713200 -1608920 5713960 1608712 5714128 1609408 5714752 1609432 5714744 -1609408 5714752 1608920 5714000 1608712 5714128 1609368 5714824 -1608920 5713960 1608920 5714000 1609408 5714752 1609432 5714744 -1608920 5713960 1608920 5714000 1609432 5714744 1609480 5714768 -1608920 5713960 1608712 5714128 1608920 5714000 1609432 5714744 -1608712 5714128 1608920 5714000 1608920 5713960 1608888 5713904 -1608712 5714128 1608920 5714000 1608888 5713904 1608712 5713752 -1608920 5714000 1609432 5714744 1608920 5713960 1608888 5713904 -1608920 5714000 1608712 5714128 1609408 5714752 1609432 5714744 -1608712 5714128 1609408 5714752 1608920 5714000 1608888 5713904 -1609408 5714752 1608888 5714032 1608712 5714128 1609368 5714824 -1608920 5714000 1608888 5714032 1609408 5714752 1609432 5714744 -1608712 5714128 1608888 5714032 1608920 5714000 1608888 5713904 -1608712 5714128 1609408 5714752 1608888 5714032 1608888 5713904 -1608712 5714128 1608888 5714032 1608888 5713904 1608712 5713752 -1608920 5714000 1608920 5713960 1608888 5713904 1608888 5714032 -1608888 5714032 1609408 5714752 1608920 5714000 1608920 5713960 -1608888 5713904 1608712 5714128 1608888 5714032 1608920 5713960 -1609408 5714752 1608856 5714056 1608712 5714128 1609368 5714824 -1608888 5714032 1608856 5714056 1609408 5714752 1608920 5714000 -1608712 5714128 1608856 5714056 1608888 5714032 1608888 5713904 -1608856 5714056 1609408 5714752 1608888 5714032 1608888 5713904 -1608712 5714128 1609408 5714752 1608856 5714056 1608888 5713904 -1608712 5714128 1608856 5714056 1608888 5713904 1608712 5713752 -1608888 5714032 1608920 5713960 1608888 5713904 1608856 5714056 -1609408 5714752 1608840 5714088 1608712 5714128 1609368 5714824 -1608712 5714128 1609352 5714856 1609368 5714824 1608840 5714088 -1608856 5714056 1608840 5714088 1609408 5714752 1608888 5714032 -1609408 5714752 1608920 5714000 1608888 5714032 1608840 5714088 -1608856 5714056 1608712 5714128 1608840 5714088 1608888 5714032 -1608712 5714128 1608840 5714088 1608856 5714056 1608888 5713904 -1609408 5714752 1608888 5714032 1608840 5714088 1609368 5714824 -1608840 5714088 1608856 5714056 1608712 5714128 1609368 5714824 -1663944 5646256 1611312 5715472 1615632 5735416 1743800 5687320 -1615632 5735416 1611312 5715472 1609512 5714824 1615584 5735320 -1609512 5714824 1609512 5714872 1615584 5735320 1611312 5715472 -1609512 5714872 1615528 5735256 1615584 5735320 1611312 5715472 -1609512 5714872 1609448 5715040 1615528 5735256 1611312 5715472 -1615528 5735256 1615584 5735320 1611312 5715472 1609448 5715040 -1609448 5715040 1615440 5735216 1615528 5735256 1611312 5715472 -1615528 5735256 1615584 5735320 1611312 5715472 1615440 5735216 -1609448 5715040 1615440 5735216 1611312 5715472 1609512 5714872 -1609512 5714872 1609448 5715040 1611312 5715472 1609512 5714824 -1615584 5735320 1615632 5735416 1611312 5715472 1615528 5735256 -1609448 5715040 1609416 5715088 1615440 5735216 1611312 5715472 -1609448 5715040 1609416 5715088 1611312 5715472 1609512 5714872 -1615440 5735216 1615528 5735256 1611312 5715472 1609416 5715088 -1609416 5715088 1615408 5735224 1615440 5735216 1611312 5715472 -1615440 5735216 1615528 5735256 1611312 5715472 1615408 5735224 -1609416 5715088 1615408 5735224 1611312 5715472 1609448 5715040 -1609416 5715088 1609392 5715096 1615408 5735224 1611312 5715472 -1615408 5735224 1615440 5735216 1611312 5715472 1609392 5715096 -1609416 5715088 1609392 5715096 1611312 5715472 1609448 5715040 -1609392 5715096 1609368 5715096 1615408 5735224 1611312 5715472 -1615408 5735224 1615440 5735216 1611312 5715472 1609368 5715096 -1609392 5715096 1609368 5715096 1611312 5715472 1609416 5715088 -1609368 5715096 1615352 5735280 1615408 5735224 1611312 5715472 -1615632 5735416 1663944 5646256 1611312 5715472 1615584 5735320 -1611312 5715472 1663944 5646256 1609512 5714824 1609512 5714872 -1609512 5714872 1609472 5714976 1609448 5715040 1611312 5715472 -1609448 5715040 1609416 5715088 1611312 5715472 1609472 5714976 -1609512 5714872 1609472 5714976 1611312 5715472 1609512 5714824 -1609512 5714824 1611312 5715472 1663944 5646256 1663880 5646248 -1609512 5714824 1611312 5715472 1663880 5646248 1608760 5713200 -1663880 5646248 1608720 5713120 1608760 5713200 1611312 5715472 -1608760 5713200 1609512 5714824 1611312 5715472 1608720 5713120 -1663880 5646248 1608648 5713040 1608720 5713120 1611312 5715472 -1663880 5646248 1663776 5646144 1608648 5713040 1611312 5715472 -1608720 5713120 1608760 5713200 1611312 5715472 1608648 5713040 -1609512 5714824 1611312 5715472 1608760 5713200 1609480 5714768 -1611312 5715472 1608720 5713120 1608760 5713200 1609480 5714768 -1608760 5713200 1608920 5713960 1609480 5714768 1611312 5715472 -1611312 5715472 1615632 5735416 1663944 5646256 1663880 5646248 -1609512 5714824 1609512 5714872 1611312 5715472 1609480 5714768 -1611312 5715472 1663944 5646256 1663880 5646248 1608648 5713040 -1663944 5646256 1611352 5715472 1615632 5735416 1743800 5687320 -1611312 5715472 1611352 5715472 1663944 5646256 1663880 5646248 -1611352 5715472 1615632 5735416 1663944 5646256 1663880 5646248 -1615632 5735416 1611352 5715472 1611312 5715472 1615584 5735320 -1615632 5735416 1663944 5646256 1611352 5715472 1615584 5735320 -1611312 5715472 1615528 5735256 1615584 5735320 1611352 5715472 -1611312 5715472 1615440 5735216 1615528 5735256 1611352 5715472 -1611312 5715472 1615408 5735224 1615440 5735216 1611352 5715472 -1615440 5735216 1615528 5735256 1611352 5715472 1615408 5735224 -1611312 5715472 1609368 5715096 1615408 5735224 1611352 5715472 -1615528 5735256 1615584 5735320 1611352 5715472 1615440 5735216 -1615584 5735320 1615632 5735416 1611352 5715472 1615528 5735256 -1611312 5715472 1615408 5735224 1611352 5715472 1663880 5646248 -1611312 5715472 1611352 5715472 1663880 5646248 1608648 5713040 -1663880 5646248 1663776 5646144 1608648 5713040 1611352 5715472 -1611312 5715472 1611352 5715472 1608648 5713040 1608720 5713120 -1611312 5715472 1611352 5715472 1608720 5713120 1608760 5713200 -1611312 5715472 1611352 5715472 1608760 5713200 1609480 5714768 -1611352 5715472 1608648 5713040 1608720 5713120 1608760 5713200 -1611352 5715472 1663944 5646256 1663880 5646248 1608648 5713040 -1611312 5715472 1615408 5735224 1611352 5715472 1608760 5713200 -1611352 5715472 1663880 5646248 1608648 5713040 1608720 5713120 -1663944 5646256 1611464 5715504 1615632 5735416 1743800 5687320 -1611352 5715472 1611464 5715504 1663944 5646256 1663880 5646248 -1611352 5715472 1615632 5735416 1611464 5715504 1663880 5646248 -1615632 5735416 1611464 5715504 1611352 5715472 1615584 5735320 -1611464 5715504 1663880 5646248 1611352 5715472 1615584 5735320 -1611464 5715504 1615632 5735416 1663944 5646256 1663880 5646248 -1615632 5735416 1663944 5646256 1611464 5715504 1615584 5735320 -1611352 5715472 1611464 5715504 1663880 5646248 1608648 5713040 -1663880 5646248 1663776 5646144 1608648 5713040 1611464 5715504 -1611464 5715504 1663944 5646256 1663880 5646248 1608648 5713040 -1611352 5715472 1615584 5735320 1611464 5715504 1608648 5713040 -1611352 5715472 1615528 5735256 1615584 5735320 1611464 5715504 -1611352 5715472 1615528 5735256 1611464 5715504 1608648 5713040 -1615584 5735320 1615632 5735416 1611464 5715504 1615528 5735256 -1611352 5715472 1615440 5735216 1615528 5735256 1611464 5715504 -1611352 5715472 1615408 5735224 1615440 5735216 1611464 5715504 -1611352 5715472 1611312 5715472 1615408 5735224 1611464 5715504 -1615408 5735224 1615440 5735216 1611464 5715504 1611312 5715472 -1611312 5715472 1609368 5715096 1615408 5735224 1611464 5715504 -1611352 5715472 1611312 5715472 1611464 5715504 1608648 5713040 -1615440 5735216 1615528 5735256 1611464 5715504 1615408 5735224 -1615528 5735256 1615584 5735320 1611464 5715504 1615440 5735216 -1611352 5715472 1611464 5715504 1608648 5713040 1608720 5713120 -1611352 5715472 1611464 5715504 1608720 5713120 1608760 5713200 -1611352 5715472 1611464 5715504 1608760 5713200 1611312 5715472 -1611352 5715472 1611312 5715472 1611464 5715504 1608760 5713200 -1611464 5715504 1663880 5646248 1608648 5713040 1608720 5713120 -1611464 5715504 1608648 5713040 1608720 5713120 1608760 5713200 -1663944 5646256 1611512 5715528 1615632 5735416 1743800 5687320 -1611464 5715504 1611512 5715528 1663944 5646256 1663880 5646248 -1611464 5715504 1611512 5715528 1663880 5646248 1608648 5713040 -1663880 5646248 1663776 5646144 1608648 5713040 1611512 5715528 -1611512 5715528 1663944 5646256 1663880 5646248 1608648 5713040 -1611464 5715504 1615632 5735416 1611512 5715528 1608648 5713040 -1615632 5735416 1611512 5715528 1611464 5715504 1615584 5735320 -1611464 5715504 1615528 5735256 1615584 5735320 1611512 5715528 -1611512 5715528 1608648 5713040 1611464 5715504 1615528 5735256 -1615584 5735320 1615632 5735416 1611512 5715528 1615528 5735256 -1611512 5715528 1615632 5735416 1663944 5646256 1663880 5646248 -1615632 5735416 1663944 5646256 1611512 5715528 1615584 5735320 -1611464 5715504 1611512 5715528 1608648 5713040 1608720 5713120 -1611512 5715528 1663880 5646248 1608648 5713040 1608720 5713120 -1611464 5715504 1615528 5735256 1611512 5715528 1608720 5713120 -1611464 5715504 1615440 5735216 1615528 5735256 1611512 5715528 -1615528 5735256 1615584 5735320 1611512 5715528 1615440 5735216 -1611464 5715504 1615440 5735216 1611512 5715528 1608720 5713120 -1611464 5715504 1615408 5735224 1615440 5735216 1611512 5715528 -1611464 5715504 1611312 5715472 1615408 5735224 1611512 5715528 -1611464 5715504 1611352 5715472 1611312 5715472 1611512 5715528 -1611312 5715472 1609368 5715096 1615408 5735224 1611512 5715528 -1611464 5715504 1611312 5715472 1611512 5715528 1608720 5713120 -1615408 5735224 1615440 5735216 1611512 5715528 1611312 5715472 -1615440 5735216 1615528 5735256 1611512 5715528 1615408 5735224 -1611464 5715504 1611512 5715528 1608720 5713120 1608760 5713200 -1663944 5646256 1611528 5715552 1615632 5735416 1743800 5687320 -1611512 5715528 1611528 5715552 1663944 5646256 1663880 5646248 -1611512 5715528 1611528 5715552 1663880 5646248 1608648 5713040 -1611512 5715528 1615632 5735416 1611528 5715552 1663880 5646248 -1615632 5735416 1611528 5715552 1611512 5715528 1615584 5735320 -1615632 5735416 1663944 5646256 1611528 5715552 1615584 5735320 -1611512 5715528 1615528 5735256 1615584 5735320 1611528 5715552 -1611512 5715528 1615440 5735216 1615528 5735256 1611528 5715552 -1615528 5735256 1615584 5735320 1611528 5715552 1615440 5735216 -1611528 5715552 1663880 5646248 1611512 5715528 1615440 5735216 -1615584 5735320 1615632 5735416 1611528 5715552 1615528 5735256 -1611528 5715552 1615632 5735416 1663944 5646256 1663880 5646248 -1611512 5715528 1615408 5735224 1615440 5735216 1611528 5715552 -1615440 5735216 1615528 5735256 1611528 5715552 1615408 5735224 -1611512 5715528 1615408 5735224 1611528 5715552 1663880 5646248 -1611512 5715528 1611312 5715472 1615408 5735224 1611528 5715552 -1611512 5715528 1611464 5715504 1611312 5715472 1611528 5715552 -1611464 5715504 1611352 5715472 1611312 5715472 1611528 5715552 -1611464 5715504 1611352 5715472 1611528 5715552 1611512 5715528 -1611312 5715472 1609368 5715096 1615408 5735224 1611528 5715552 -1611512 5715528 1611464 5715504 1611528 5715552 1663880 5646248 -1611312 5715472 1609368 5715096 1611528 5715552 1611352 5715472 -1609368 5715096 1615352 5735280 1615408 5735224 1611528 5715552 -1611312 5715472 1609392 5715096 1609368 5715096 1611528 5715552 -1615408 5735224 1615440 5735216 1611528 5715552 1609368 5715096 -1609368 5715096 1611520 5715576 1611528 5715552 1611312 5715472 -1611520 5715576 1615408 5735224 1611528 5715552 1611312 5715472 -1609368 5715096 1615408 5735224 1611520 5715576 1611312 5715472 -1611528 5715552 1611352 5715472 1611312 5715472 1611520 5715576 -1611528 5715552 1611352 5715472 1611520 5715576 1615408 5735224 -1611528 5715552 1611464 5715504 1611352 5715472 1611520 5715576 -1611528 5715552 1611464 5715504 1611520 5715576 1615408 5735224 -1611528 5715552 1611512 5715528 1611464 5715504 1611520 5715576 -1611528 5715552 1611512 5715528 1611520 5715576 1615408 5735224 -1611464 5715504 1611352 5715472 1611520 5715576 1611512 5715528 -1611312 5715472 1609368 5715096 1611520 5715576 1611352 5715472 -1611352 5715472 1611312 5715472 1611520 5715576 1611464 5715504 -1615408 5735224 1611520 5715576 1609368 5715096 1615352 5735280 -1609368 5715096 1611520 5715576 1611312 5715472 1609392 5715096 -1609368 5715096 1615408 5735224 1611520 5715576 1609392 5715096 -1611520 5715576 1611352 5715472 1611312 5715472 1609392 5715096 -1611312 5715472 1609416 5715088 1609392 5715096 1611520 5715576 -1611528 5715552 1611520 5715576 1615408 5735224 1615440 5735216 -1611528 5715552 1611512 5715528 1611520 5715576 1615440 5735216 -1611520 5715576 1609368 5715096 1615408 5735224 1615440 5735216 -1611528 5715552 1611520 5715576 1615440 5735216 1615528 5735256 -1611528 5715552 1611512 5715528 1611520 5715576 1615528 5735256 -1611528 5715552 1611520 5715576 1615528 5735256 1615584 5735320 -1611520 5715576 1615408 5735224 1615440 5735216 1615528 5735256 -1611520 5715576 1611464 5715656 1615408 5735224 1615440 5735216 -1611520 5715576 1609368 5715096 1611464 5715656 1615440 5735216 -1609368 5715096 1611464 5715656 1611520 5715576 1609392 5715096 -1609368 5715096 1615408 5735224 1611464 5715656 1609392 5715096 -1611464 5715656 1615440 5735216 1611520 5715576 1609392 5715096 -1611464 5715656 1609368 5715096 1615408 5735224 1615440 5735216 -1615408 5735224 1611464 5715656 1609368 5715096 1615352 5735280 -1611520 5715576 1611312 5715472 1609392 5715096 1611464 5715656 -1611520 5715576 1611312 5715472 1611464 5715656 1615440 5735216 -1609392 5715096 1609368 5715096 1611464 5715656 1611312 5715472 -1611520 5715576 1611352 5715472 1611312 5715472 1611464 5715656 -1611520 5715576 1611352 5715472 1611464 5715656 1615440 5735216 -1611520 5715576 1611464 5715504 1611352 5715472 1611464 5715656 -1611520 5715576 1611464 5715504 1611464 5715656 1615440 5735216 -1611520 5715576 1611512 5715528 1611464 5715504 1611464 5715656 -1611352 5715472 1611312 5715472 1611464 5715656 1611464 5715504 -1611312 5715472 1609416 5715088 1609392 5715096 1611464 5715656 -1609392 5715096 1609368 5715096 1611464 5715656 1609416 5715088 -1611312 5715472 1609448 5715040 1609416 5715088 1611464 5715656 -1611312 5715472 1609416 5715088 1611464 5715656 1611352 5715472 -1611520 5715576 1611464 5715656 1615440 5735216 1615528 5735256 -1611464 5715656 1615408 5735224 1615440 5735216 1615528 5735256 -1611520 5715576 1611464 5715504 1611464 5715656 1615528 5735256 -1611520 5715576 1611464 5715656 1615528 5735256 1611528 5715552 -1609368 5715096 1611456 5715680 1611464 5715656 1609392 5715096 -1611456 5715680 1615408 5735224 1611464 5715656 1609392 5715096 -1611464 5715656 1609416 5715088 1609392 5715096 1611456 5715680 -1611464 5715656 1609416 5715088 1611456 5715680 1615408 5735224 -1609392 5715096 1609368 5715096 1611456 5715680 1609416 5715088 -1611464 5715656 1611456 5715680 1615408 5735224 1615440 5735216 -1611464 5715656 1609416 5715088 1611456 5715680 1615440 5735216 -1611456 5715680 1609368 5715096 1615408 5735224 1615440 5735216 -1611464 5715656 1611456 5715680 1615440 5735216 1615528 5735256 -1611464 5715656 1609416 5715088 1611456 5715680 1615528 5735256 -1611456 5715680 1615408 5735224 1615440 5735216 1615528 5735256 -1609368 5715096 1615408 5735224 1611456 5715680 1609392 5715096 -1611464 5715656 1611312 5715472 1609416 5715088 1611456 5715680 -1611464 5715656 1611312 5715472 1611456 5715680 1615528 5735256 -1609416 5715088 1609392 5715096 1611456 5715680 1611312 5715472 -1611312 5715472 1609448 5715040 1609416 5715088 1611456 5715680 -1615408 5735224 1611456 5715680 1609368 5715096 1615352 5735280 -1611464 5715656 1611352 5715472 1611312 5715472 1611456 5715680 -1611464 5715656 1611456 5715680 1615528 5735256 1611520 5715576 -1611464 5715656 1611312 5715472 1611456 5715680 1611520 5715576 -1611456 5715680 1615440 5735216 1615528 5735256 1611520 5715576 -1615528 5735256 1611528 5715552 1611520 5715576 1611456 5715680 -1611456 5715680 1611424 5715704 1615408 5735224 1615440 5735216 -1611456 5715680 1611424 5715704 1615440 5735216 1615528 5735256 -1611456 5715680 1609368 5715096 1611424 5715704 1615440 5735216 -1609368 5715096 1611424 5715704 1611456 5715680 1609392 5715096 -1611456 5715680 1609416 5715088 1609392 5715096 1611424 5715704 -1609368 5715096 1615408 5735224 1611424 5715704 1609392 5715096 -1611456 5715680 1611312 5715472 1609416 5715088 1611424 5715704 -1609416 5715088 1609392 5715096 1611424 5715704 1611312 5715472 -1611424 5715704 1615440 5735216 1611456 5715680 1611312 5715472 -1609392 5715096 1609368 5715096 1611424 5715704 1609416 5715088 -1611424 5715704 1609368 5715096 1615408 5735224 1615440 5735216 -1611312 5715472 1609448 5715040 1609416 5715088 1611424 5715704 -1611456 5715680 1611464 5715656 1611312 5715472 1611424 5715704 -1611312 5715472 1609416 5715088 1611424 5715704 1611464 5715656 -1611456 5715680 1611464 5715656 1611424 5715704 1615440 5735216 -1615408 5735224 1611424 5715704 1609368 5715096 1615352 5735280 -1611464 5715656 1611352 5715472 1611312 5715472 1611424 5715704 -1611312 5715472 1609416 5715088 1611424 5715704 1611352 5715472 -1611464 5715656 1611464 5715504 1611352 5715472 1611424 5715704 -1611464 5715656 1611352 5715472 1611424 5715704 1611456 5715680 -1609368 5715096 1611328 5715760 1611424 5715704 1609392 5715096 -1611328 5715760 1615408 5735224 1611424 5715704 1609392 5715096 -1609368 5715096 1615408 5735224 1611328 5715760 1609392 5715096 -1611424 5715704 1609416 5715088 1609392 5715096 1611328 5715760 -1611424 5715704 1611312 5715472 1609416 5715088 1611328 5715760 -1609392 5715096 1609368 5715096 1611328 5715760 1609416 5715088 -1611424 5715704 1611312 5715472 1611328 5715760 1615408 5735224 -1611424 5715704 1611352 5715472 1611312 5715472 1611328 5715760 -1609416 5715088 1609392 5715096 1611328 5715760 1611312 5715472 -1611424 5715704 1611328 5715760 1615408 5735224 1615440 5735216 -1611424 5715704 1611328 5715760 1615440 5735216 1611456 5715680 -1611424 5715704 1611312 5715472 1611328 5715760 1615440 5735216 -1611328 5715760 1609368 5715096 1615408 5735224 1615440 5735216 -1611312 5715472 1609448 5715040 1609416 5715088 1611328 5715760 -1615408 5735224 1611328 5715760 1609368 5715096 1615352 5735280 -1615408 5735224 1615440 5735216 1611328 5715760 1615352 5735280 -1611328 5715760 1609392 5715096 1609368 5715096 1615352 5735280 -1609368 5715096 1605152 5714944 1615352 5735280 1611328 5715760 -1609368 5715096 1605152 5714944 1611328 5715760 1609392 5715096 -1605152 5714944 1605064 5714952 1615352 5735280 1611328 5715760 -1609368 5715096 1607984 5714464 1605152 5714944 1611328 5715760 -1615352 5735280 1615408 5735224 1611328 5715760 1605152 5714944 -1615352 5735280 1611240 5715760 1605152 5714944 1605064 5714952 -1605152 5714944 1611240 5715760 1611328 5715760 1609368 5715096 -1611240 5715760 1615352 5735280 1611328 5715760 1609368 5715096 -1611328 5715760 1609392 5715096 1609368 5715096 1611240 5715760 -1611328 5715760 1609416 5715088 1609392 5715096 1611240 5715760 -1611328 5715760 1609416 5715088 1611240 5715760 1615352 5735280 -1609392 5715096 1609368 5715096 1611240 5715760 1609416 5715088 -1605152 5714944 1615352 5735280 1611240 5715760 1609368 5715096 -1611328 5715760 1611312 5715472 1609416 5715088 1611240 5715760 -1611328 5715760 1611424 5715704 1611312 5715472 1611240 5715760 -1609416 5715088 1609392 5715096 1611240 5715760 1611312 5715472 -1611328 5715760 1611312 5715472 1611240 5715760 1615352 5735280 -1605152 5714944 1611240 5715760 1609368 5715096 1607984 5714464 -1611312 5715472 1609448 5715040 1609416 5715088 1611240 5715760 -1609416 5715088 1609392 5715096 1611240 5715760 1609448 5715040 -1611312 5715472 1609448 5715040 1611240 5715760 1611328 5715760 -1611312 5715472 1609472 5714976 1609448 5715040 1611240 5715760 -1609368 5715096 1605152 5714944 1611240 5715760 1609392 5715096 -1611328 5715760 1611240 5715760 1615352 5735280 1615408 5735224 -1611328 5715760 1611240 5715760 1615408 5735224 1615440 5735216 -1611328 5715760 1611312 5715472 1611240 5715760 1615408 5735224 -1611240 5715760 1605152 5714944 1615352 5735280 1615408 5735224 -1611312 5715472 1611192 5715728 1611240 5715760 1611328 5715760 -1611312 5715472 1611192 5715728 1611328 5715760 1611424 5715704 -1611192 5715728 1609448 5715040 1611240 5715760 1611328 5715760 -1609448 5715040 1611192 5715728 1611312 5715472 1609472 5714976 -1609448 5715040 1611240 5715760 1611192 5715728 1609472 5714976 -1611240 5715760 1611192 5715728 1609448 5715040 1609416 5715088 -1611240 5715760 1611192 5715728 1609416 5715088 1609392 5715096 -1611240 5715760 1611192 5715728 1609392 5715096 1609368 5715096 -1611192 5715728 1609416 5715088 1609392 5715096 1609368 5715096 -1611240 5715760 1611328 5715760 1611192 5715728 1609368 5715096 -1611192 5715728 1609472 5714976 1609448 5715040 1609416 5715088 -1611192 5715728 1609448 5715040 1609416 5715088 1609392 5715096 -1611240 5715760 1611192 5715728 1609368 5715096 1605152 5714944 -1611312 5715472 1609472 5714976 1611192 5715728 1611328 5715760 -1611312 5715472 1609512 5714872 1609472 5714976 1611192 5715728 -1609472 5714976 1609448 5715040 1611192 5715728 1609512 5714872 -1611312 5715472 1609512 5714824 1609512 5714872 1611192 5715728 -1611312 5715472 1609512 5714872 1611192 5715728 1611328 5715760 -1609512 5714872 1611128 5715672 1611312 5715472 1609512 5714824 -1611312 5715472 1611128 5715672 1611192 5715728 1611328 5715760 -1611192 5715728 1611128 5715672 1609512 5714872 1609472 5714976 -1611192 5715728 1611312 5715472 1611128 5715672 1609472 5714976 -1611192 5715728 1611128 5715672 1609472 5714976 1609448 5715040 -1611192 5715728 1611128 5715672 1609448 5715040 1609416 5715088 -1611192 5715728 1611312 5715472 1611128 5715672 1609416 5715088 -1611128 5715672 1609472 5714976 1609448 5715040 1609416 5715088 -1611192 5715728 1611128 5715672 1609416 5715088 1609392 5715096 -1611192 5715728 1611128 5715672 1609392 5715096 1609368 5715096 -1611128 5715672 1609448 5715040 1609416 5715088 1609392 5715096 -1611192 5715728 1611312 5715472 1611128 5715672 1609392 5715096 -1611128 5715672 1611312 5715472 1609512 5714872 1609472 5714976 -1611128 5715672 1609512 5714872 1609472 5714976 1609448 5715040 -1609512 5714872 1611120 5715648 1611312 5715472 1609512 5714824 -1611128 5715672 1611120 5715648 1609512 5714872 1609472 5714976 -1611128 5715672 1611312 5715472 1611120 5715648 1609472 5714976 -1611312 5715472 1611120 5715648 1611128 5715672 1611192 5715728 -1611312 5715472 1611120 5715648 1611192 5715728 1611328 5715760 -1611120 5715648 1609472 5714976 1611128 5715672 1611192 5715728 -1609512 5714872 1609472 5714976 1611120 5715648 1609512 5714824 -1611120 5715648 1611192 5715728 1611312 5715472 1609512 5714824 -1611312 5715472 1609480 5714768 1609512 5714824 1611120 5715648 -1611128 5715672 1611120 5715648 1609472 5714976 1609448 5715040 -1611128 5715672 1611120 5715648 1609448 5715040 1609416 5715088 -1611128 5715672 1611120 5715648 1609416 5715088 1609392 5715096 -1611120 5715648 1609512 5714872 1609472 5714976 1609448 5715040 -1611128 5715672 1611192 5715728 1611120 5715648 1609416 5715088 -1611120 5715648 1609472 5714976 1609448 5715040 1609416 5715088 -1611120 5715648 1611136 5715608 1609512 5714824 1609512 5714872 -1611120 5715648 1611136 5715608 1609512 5714872 1609472 5714976 -1611136 5715608 1609512 5714824 1609512 5714872 1609472 5714976 -1611120 5715648 1611136 5715608 1609472 5714976 1609448 5715040 -1611120 5715648 1611312 5715472 1611136 5715608 1609472 5714976 -1611312 5715472 1611136 5715608 1611120 5715648 1611192 5715728 -1611312 5715472 1611136 5715608 1611192 5715728 1611328 5715760 -1611120 5715648 1611128 5715672 1611192 5715728 1611136 5715608 -1611136 5715608 1609472 5714976 1611120 5715648 1611128 5715672 -1611192 5715728 1611312 5715472 1611136 5715608 1611128 5715672 -1611136 5715608 1611312 5715472 1609512 5714824 1609512 5714872 -1609512 5714824 1611136 5715608 1611312 5715472 1609480 5714768 -1611312 5715472 1609512 5714824 1611136 5715608 1611192 5715728 -1611136 5715608 1611208 5715520 1609512 5714824 1609512 5714872 -1611136 5715608 1611208 5715520 1609512 5714872 1609472 5714976 -1609512 5714824 1611208 5715520 1611312 5715472 1609480 5714768 -1611136 5715608 1611312 5715472 1611208 5715520 1609512 5714872 -1611312 5715472 1611208 5715520 1611136 5715608 1611192 5715728 -1611312 5715472 1611208 5715520 1611192 5715728 1611328 5715760 -1611312 5715472 1611208 5715520 1611328 5715760 1611424 5715704 -1611312 5715472 1611208 5715520 1611424 5715704 1611352 5715472 -1611192 5715728 1611240 5715760 1611328 5715760 1611208 5715520 -1611208 5715520 1611192 5715728 1611328 5715760 1611424 5715704 -1611136 5715608 1611128 5715672 1611192 5715728 1611208 5715520 -1611208 5715520 1609512 5714872 1611136 5715608 1611192 5715728 -1611208 5715520 1611136 5715608 1611192 5715728 1611328 5715760 -1611208 5715520 1611312 5715472 1609512 5714824 1609512 5714872 -1611312 5715472 1609512 5714824 1611208 5715520 1611424 5715704 -1609512 5714824 1611248 5715496 1611312 5715472 1609480 5714768 -1611208 5715520 1611248 5715496 1609512 5714824 1609512 5714872 -1611312 5715472 1611248 5715496 1611208 5715520 1611424 5715704 -1611208 5715520 1611328 5715760 1611424 5715704 1611248 5715496 -1611312 5715472 1611248 5715496 1611424 5715704 1611352 5715472 -1611208 5715520 1611192 5715728 1611328 5715760 1611248 5715496 -1611248 5715496 1609512 5714824 1611208 5715520 1611328 5715760 -1611424 5715704 1611312 5715472 1611248 5715496 1611328 5715760 -1611312 5715472 1609512 5714824 1611248 5715496 1611424 5715704 -1604696 5714600 1601824 5695840 1599875 5760125 1604712 5714680 -1599875 5599875 1601824 5695840 1604696 5714600 1604704 5714560 -1599875 5599875 1601824 5695840 1604704 5714560 1604744 5714504 -1599875 5599875 1601824 5695840 1604744 5714504 1604784 5714488 -1601824 5695840 1604696 5714600 1604704 5714560 1604744 5714504 -1599875 5599875 1601824 5695840 1604784 5714488 1608336 5713136 -1601824 5695840 1604744 5714504 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1601824 5695840 -1599875 5599875 1601824 5695840 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1601824 5695840 -1599875 5599875 1601824 5695840 1608608 5713032 1657056 5639384 -1608608 5713032 1657088 5639464 1657056 5639384 1601824 5695840 -1601824 5695840 1608336 5713136 1608608 5713032 1657088 5639464 -1657056 5639384 1599875 5599875 1601824 5695840 1657088 5639464 -1608608 5713032 1608648 5713040 1657088 5639464 1601824 5695840 -1657088 5639464 1657056 5639384 1601824 5695840 1608648 5713040 -1608608 5713032 1608648 5713040 1601824 5695840 1608336 5713136 -1608648 5713040 1663776 5646144 1657088 5639464 1601824 5695840 -1657088 5639464 1657056 5639384 1601824 5695840 1663776 5646144 -1608648 5713040 1663776 5646144 1601824 5695840 1608608 5713032 -1608648 5713040 1663880 5646248 1663776 5646144 1601824 5695840 -1608648 5713040 1611512 5715528 1663880 5646248 1601824 5695840 -1608648 5713040 1608720 5713120 1611512 5715528 1601824 5695840 -1611512 5715528 1611528 5715552 1663880 5646248 1601824 5695840 -1608648 5713040 1611512 5715528 1601824 5695840 1608608 5713032 -1663776 5646144 1657088 5639464 1601824 5695840 1663880 5646248 -1663880 5646248 1663776 5646144 1601824 5695840 1611512 5715528 -1663776 5646144 1663688 5645984 1657088 5639464 1601824 5695840 -1601824 5695840 1604784 5714488 1608336 5713136 1608608 5713032 -1599875 5599875 1601824 5695840 1657056 5639384 1657088 5639296 -1601824 5695840 1599875 5760125 1604696 5714600 1604704 5714560 -1601824 5695840 1604704 5714560 1604744 5714504 1604784 5714488 -1599875 5599875 1599875 5760125 1601824 5695840 1657056 5639384 -1611512 5715528 1602016 5695848 1601824 5695840 1608648 5713040 -1602016 5695848 1663880 5646248 1601824 5695840 1608648 5713040 -1611512 5715528 1663880 5646248 1602016 5695848 1608648 5713040 -1611512 5715528 1602016 5695848 1608648 5713040 1608720 5713120 -1663880 5646248 1602016 5695848 1611512 5715528 1611528 5715552 -1601824 5695840 1608608 5713032 1608648 5713040 1602016 5695848 -1601824 5695840 1608336 5713136 1608608 5713032 1602016 5695848 -1608336 5713136 1608576 5713048 1608608 5713032 1602016 5695848 -1601824 5695840 1608336 5713136 1602016 5695848 1663880 5646248 -1608648 5713040 1611512 5715528 1602016 5695848 1608608 5713032 -1608608 5713032 1608648 5713040 1602016 5695848 1608336 5713136 -1601824 5695840 1602016 5695848 1663880 5646248 1663776 5646144 -1601824 5695840 1608336 5713136 1602016 5695848 1663776 5646144 -1602016 5695848 1611512 5715528 1663880 5646248 1663776 5646144 -1601824 5695840 1602016 5695848 1663776 5646144 1657088 5639464 -1601824 5695840 1602016 5695848 1657088 5639464 1657056 5639384 -1601824 5695840 1608336 5713136 1602016 5695848 1657056 5639384 -1601824 5695840 1602016 5695848 1657056 5639384 1599875 5599875 -1602016 5695848 1657088 5639464 1657056 5639384 1599875 5599875 -1601824 5695840 1608336 5713136 1602016 5695848 1599875 5599875 -1602016 5695848 1663776 5646144 1657088 5639464 1657056 5639384 -1602016 5695848 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1602016 5695848 -1601824 5695840 1604784 5714488 1608336 5713136 1602016 5695848 -1601824 5695840 1604744 5714504 1604784 5714488 1602016 5695848 -1604784 5714488 1604840 5714480 1608336 5713136 1602016 5695848 -1608336 5713136 1608608 5713032 1602016 5695848 1604784 5714488 -1601824 5695840 1604784 5714488 1602016 5695848 1599875 5599875 -1657056 5639384 1657088 5639296 1599875 5599875 1602016 5695848 -1601824 5695840 1602016 5695848 1599875 5599875 1599875 5760125 -1602016 5695848 1602112 5695896 1663880 5646248 1663776 5646144 -1602016 5695848 1611512 5715528 1602112 5695896 1663776 5646144 -1611512 5715528 1602112 5695896 1602016 5695848 1608648 5713040 -1611512 5715528 1663880 5646248 1602112 5695896 1608648 5713040 -1602016 5695848 1608608 5713032 1608648 5713040 1602112 5695896 -1602112 5695896 1663776 5646144 1602016 5695848 1608608 5713032 -1608648 5713040 1611512 5715528 1602112 5695896 1608608 5713032 -1602112 5695896 1611512 5715528 1663880 5646248 1663776 5646144 -1611512 5715528 1602112 5695896 1608648 5713040 1608720 5713120 -1663880 5646248 1602112 5695896 1611512 5715528 1611528 5715552 -1602016 5695848 1608336 5713136 1608608 5713032 1602112 5695896 -1608336 5713136 1608576 5713048 1608608 5713032 1602112 5695896 -1602016 5695848 1604784 5714488 1608336 5713136 1602112 5695896 -1604784 5714488 1604840 5714480 1608336 5713136 1602112 5695896 -1608608 5713032 1608648 5713040 1602112 5695896 1608336 5713136 -1602016 5695848 1604784 5714488 1602112 5695896 1663776 5646144 -1608336 5713136 1608608 5713032 1602112 5695896 1604784 5714488 -1602016 5695848 1602112 5695896 1663776 5646144 1657088 5639464 -1602112 5695896 1663880 5646248 1663776 5646144 1657088 5639464 -1602016 5695848 1604784 5714488 1602112 5695896 1657088 5639464 -1602016 5695848 1602112 5695896 1657088 5639464 1657056 5639384 -1663776 5646144 1663688 5645984 1657088 5639464 1602112 5695896 -1602016 5695848 1601824 5695840 1604784 5714488 1602112 5695896 -1601824 5695840 1604744 5714504 1604784 5714488 1602112 5695896 -1604784 5714488 1608336 5713136 1602112 5695896 1604744 5714504 -1602016 5695848 1601824 5695840 1602112 5695896 1657088 5639464 -1601824 5695840 1604744 5714504 1602112 5695896 1602016 5695848 -1601824 5695840 1604704 5714560 1604744 5714504 1602112 5695896 -1611512 5715528 1602160 5695928 1602112 5695896 1608648 5713040 -1602160 5695928 1663880 5646248 1602112 5695896 1608648 5713040 -1611512 5715528 1663880 5646248 1602160 5695928 1608648 5713040 -1602112 5695896 1608608 5713032 1608648 5713040 1602160 5695928 -1602112 5695896 1608608 5713032 1602160 5695928 1663880 5646248 -1608648 5713040 1611512 5715528 1602160 5695928 1608608 5713032 -1602112 5695896 1608336 5713136 1608608 5713032 1602160 5695928 -1608336 5713136 1608576 5713048 1608608 5713032 1602160 5695928 -1602112 5695896 1608336 5713136 1602160 5695928 1663880 5646248 -1608608 5713032 1608648 5713040 1602160 5695928 1608336 5713136 -1602112 5695896 1602160 5695928 1663880 5646248 1663776 5646144 -1602112 5695896 1602160 5695928 1663776 5646144 1657088 5639464 -1602112 5695896 1608336 5713136 1602160 5695928 1657088 5639464 -1602160 5695928 1611512 5715528 1663880 5646248 1663776 5646144 -1602160 5695928 1663880 5646248 1663776 5646144 1657088 5639464 -1611512 5715528 1602160 5695928 1608648 5713040 1608720 5713120 -1663880 5646248 1602160 5695928 1611512 5715528 1611528 5715552 -1602112 5695896 1604784 5714488 1608336 5713136 1602160 5695928 -1604784 5714488 1604840 5714480 1608336 5713136 1602160 5695928 -1602112 5695896 1604744 5714504 1604784 5714488 1602160 5695928 -1602112 5695896 1601824 5695840 1604744 5714504 1602160 5695928 -1604744 5714504 1604784 5714488 1602160 5695928 1601824 5695840 -1602112 5695896 1601824 5695840 1602160 5695928 1657088 5639464 -1608336 5713136 1608608 5713032 1602160 5695928 1604784 5714488 -1604784 5714488 1608336 5713136 1602160 5695928 1604744 5714504 -1602112 5695896 1602160 5695928 1657088 5639464 1602016 5695848 -1663776 5646144 1663688 5645984 1657088 5639464 1602160 5695928 -1602112 5695896 1602016 5695848 1601824 5695840 1602160 5695928 -1601824 5695840 1604704 5714560 1604744 5714504 1602160 5695928 -1602160 5695928 1602200 5696008 1663880 5646248 1663776 5646144 -1611512 5715528 1602200 5696008 1602160 5695928 1608648 5713040 -1602160 5695928 1608608 5713032 1608648 5713040 1602200 5696008 -1602200 5696008 1663880 5646248 1602160 5695928 1608608 5713032 -1608648 5713040 1611512 5715528 1602200 5696008 1608608 5713032 -1611512 5715528 1663880 5646248 1602200 5696008 1608648 5713040 -1602160 5695928 1608336 5713136 1608608 5713032 1602200 5696008 -1608336 5713136 1608576 5713048 1608608 5713032 1602200 5696008 -1608608 5713032 1608648 5713040 1602200 5696008 1608336 5713136 -1602160 5695928 1608336 5713136 1602200 5696008 1663880 5646248 -1602160 5695928 1604784 5714488 1608336 5713136 1602200 5696008 -1604784 5714488 1604840 5714480 1608336 5713136 1602200 5696008 -1602160 5695928 1604784 5714488 1602200 5696008 1663880 5646248 -1608336 5713136 1608608 5713032 1602200 5696008 1604784 5714488 -1611512 5715528 1602200 5696008 1608648 5713040 1608720 5713120 -1663880 5646248 1602200 5696008 1611512 5715528 1611528 5715552 -1602160 5695928 1604744 5714504 1604784 5714488 1602200 5696008 -1602160 5695928 1601824 5695840 1604744 5714504 1602200 5696008 -1602160 5695928 1602112 5695896 1601824 5695840 1602200 5696008 -1601824 5695840 1604744 5714504 1602200 5696008 1602112 5695896 -1602160 5695928 1602112 5695896 1602200 5696008 1663880 5646248 -1604784 5714488 1608336 5713136 1602200 5696008 1604744 5714504 -1604744 5714504 1604784 5714488 1602200 5696008 1601824 5695840 -1602112 5695896 1602016 5695848 1601824 5695840 1602200 5696008 -1602112 5695896 1602016 5695848 1602200 5696008 1602160 5695928 -1601824 5695840 1604744 5714504 1602200 5696008 1602016 5695848 -1601824 5695840 1604704 5714560 1604744 5714504 1602200 5696008 -1602200 5696008 1602224 5696056 1663880 5646248 1602160 5695928 -1611512 5715528 1602224 5696056 1602200 5696008 1608648 5713040 -1602200 5696008 1608608 5713032 1608648 5713040 1602224 5696056 -1602200 5696008 1608336 5713136 1608608 5713032 1602224 5696056 -1608336 5713136 1608576 5713048 1608608 5713032 1602224 5696056 -1608608 5713032 1608648 5713040 1602224 5696056 1608336 5713136 -1608648 5713040 1611512 5715528 1602224 5696056 1608608 5713032 -1611512 5715528 1663880 5646248 1602224 5696056 1608648 5713040 -1602224 5696056 1663880 5646248 1602200 5696008 1608336 5713136 -1602200 5696008 1604784 5714488 1608336 5713136 1602224 5696056 -1604784 5714488 1604840 5714480 1608336 5713136 1602224 5696056 -1608336 5713136 1608608 5713032 1602224 5696056 1604784 5714488 -1602200 5696008 1604784 5714488 1602224 5696056 1663880 5646248 -1602200 5696008 1604744 5714504 1604784 5714488 1602224 5696056 -1602200 5696008 1604744 5714504 1602224 5696056 1663880 5646248 -1604784 5714488 1608336 5713136 1602224 5696056 1604744 5714504 -1611512 5715528 1602224 5696056 1608648 5713040 1608720 5713120 -1663880 5646248 1602224 5696056 1611512 5715528 1611528 5715552 -1602200 5696008 1601824 5695840 1604744 5714504 1602224 5696056 -1602200 5696008 1602016 5695848 1601824 5695840 1602224 5696056 -1602200 5696008 1601824 5695840 1602224 5696056 1663880 5646248 -1604744 5714504 1604784 5714488 1602224 5696056 1601824 5695840 -1601824 5695840 1604704 5714560 1604744 5714504 1602224 5696056 -1602224 5696056 1602224 5696096 1604744 5714504 1604784 5714488 -1602224 5696056 1601824 5695840 1602224 5696096 1604784 5714488 -1602224 5696096 1601824 5695840 1604744 5714504 1604784 5714488 -1602224 5696056 1602224 5696096 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602224 5696096 -1602224 5696056 1602224 5696096 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602224 5696096 -1602224 5696056 1602224 5696096 1608608 5713032 1608648 5713040 -1602224 5696096 1608336 5713136 1608608 5713032 1608648 5713040 -1602224 5696056 1602224 5696096 1608648 5713040 1611512 5715528 -1602224 5696096 1608608 5713032 1608648 5713040 1611512 5715528 -1602224 5696056 1602224 5696096 1611512 5715528 1663880 5646248 -1602224 5696096 1604744 5714504 1604784 5714488 1608336 5713136 -1602224 5696056 1601824 5695840 1602224 5696096 1611512 5715528 -1602224 5696096 1604784 5714488 1608336 5713136 1608608 5713032 -1608648 5713040 1608720 5713120 1611512 5715528 1602224 5696096 -1601824 5695840 1602224 5696096 1602224 5696056 1602200 5696008 -1601824 5695840 1602224 5696096 1602200 5696008 1602016 5695848 -1602224 5696096 1611512 5715528 1602224 5696056 1602200 5696008 -1601824 5695840 1604744 5714504 1602224 5696096 1602016 5695848 -1602224 5696096 1602224 5696056 1602200 5696008 1602016 5695848 -1602200 5696008 1602112 5695896 1602016 5695848 1602224 5696096 -1604744 5714504 1602224 5696096 1601824 5695840 1604704 5714560 -1602224 5696096 1602200 5696144 1604744 5714504 1604784 5714488 -1602224 5696096 1602200 5696144 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602200 5696144 -1602200 5696144 1604744 5714504 1604784 5714488 1608336 5713136 -1602224 5696096 1601824 5695840 1602200 5696144 1608336 5713136 -1601824 5695840 1602200 5696144 1602224 5696096 1602016 5695848 -1602224 5696096 1602200 5696008 1602016 5695848 1602200 5696144 -1602200 5696144 1608336 5713136 1602224 5696096 1602200 5696008 -1602016 5695848 1601824 5695840 1602200 5696144 1602200 5696008 -1602200 5696144 1601824 5695840 1604744 5714504 1604784 5714488 -1601824 5695840 1604744 5714504 1602200 5696144 1602016 5695848 -1602224 5696096 1602200 5696144 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602200 5696144 -1602224 5696096 1602200 5696144 1608608 5713032 1608648 5713040 -1602224 5696096 1602200 5696144 1608648 5713040 1611512 5715528 -1602200 5696144 1604784 5714488 1608336 5713136 1608608 5713032 -1602224 5696096 1602200 5696008 1602200 5696144 1608648 5713040 -1602200 5696144 1608336 5713136 1608608 5713032 1608648 5713040 -1602224 5696096 1602224 5696056 1602200 5696008 1602200 5696144 -1602200 5696008 1602112 5695896 1602016 5695848 1602200 5696144 -1602200 5696008 1602160 5695928 1602112 5695896 1602200 5696144 -1602200 5696008 1602112 5695896 1602200 5696144 1602224 5696096 -1602016 5695848 1601824 5695840 1602200 5696144 1602112 5695896 -1604744 5714504 1602200 5696144 1601824 5695840 1604704 5714560 -1604744 5714504 1604784 5714488 1602200 5696144 1604704 5714560 -1602200 5696144 1602016 5695848 1601824 5695840 1604704 5714560 -1601824 5695840 1604696 5714600 1604704 5714560 1602200 5696144 -1601824 5695840 1602176 5696184 1602200 5696144 1602016 5695848 -1602200 5696144 1602112 5695896 1602016 5695848 1602176 5696184 -1602176 5696184 1604704 5714560 1602200 5696144 1602112 5695896 -1602016 5695848 1601824 5695840 1602176 5696184 1602112 5695896 -1601824 5695840 1604704 5714560 1602176 5696184 1602016 5695848 -1604704 5714560 1602176 5696184 1601824 5695840 1604696 5714600 -1602200 5696144 1602200 5696008 1602112 5695896 1602176 5696184 -1602200 5696008 1602160 5695928 1602112 5695896 1602176 5696184 -1602200 5696144 1602224 5696096 1602200 5696008 1602176 5696184 -1602112 5695896 1602016 5695848 1602176 5696184 1602200 5696008 -1602200 5696144 1602200 5696008 1602176 5696184 1604704 5714560 -1602200 5696144 1602176 5696184 1604704 5714560 1604744 5714504 -1602200 5696144 1602176 5696184 1604744 5714504 1604784 5714488 -1602200 5696144 1602176 5696184 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602176 5696184 -1602200 5696144 1602176 5696184 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602176 5696184 -1602176 5696184 1604784 5714488 1608336 5713136 1608608 5713032 -1602176 5696184 1604744 5714504 1604784 5714488 1608336 5713136 -1602200 5696144 1602200 5696008 1602176 5696184 1608608 5713032 -1602176 5696184 1601824 5695840 1604704 5714560 1604744 5714504 -1602200 5696144 1602176 5696184 1608608 5713032 1608648 5713040 -1602200 5696144 1602176 5696184 1608648 5713040 1602224 5696096 -1602176 5696184 1608336 5713136 1608608 5713032 1608648 5713040 -1602200 5696144 1602200 5696008 1602176 5696184 1608648 5713040 -1602176 5696184 1604704 5714560 1604744 5714504 1604784 5714488 -1602176 5696184 1602136 5696208 1604704 5714560 1604744 5714504 -1602176 5696184 1601824 5695840 1602136 5696208 1604744 5714504 -1601824 5695840 1602136 5696208 1602176 5696184 1602016 5695848 -1601824 5695840 1604704 5714560 1602136 5696208 1602016 5695848 -1602176 5696184 1602112 5695896 1602016 5695848 1602136 5696208 -1602176 5696184 1602200 5696008 1602112 5695896 1602136 5696208 -1602200 5696008 1602160 5695928 1602112 5695896 1602136 5696208 -1602112 5695896 1602016 5695848 1602136 5696208 1602200 5696008 -1602136 5696208 1604744 5714504 1602176 5696184 1602200 5696008 -1602016 5695848 1601824 5695840 1602136 5696208 1602112 5695896 -1602136 5696208 1601824 5695840 1604704 5714560 1604744 5714504 -1604704 5714560 1602136 5696208 1601824 5695840 1604696 5714600 -1602176 5696184 1602200 5696144 1602200 5696008 1602136 5696208 -1602200 5696144 1602224 5696096 1602200 5696008 1602136 5696208 -1602200 5696008 1602112 5695896 1602136 5696208 1602200 5696144 -1602176 5696184 1602200 5696144 1602136 5696208 1604744 5714504 -1602176 5696184 1602136 5696208 1604744 5714504 1604784 5714488 -1602176 5696184 1602136 5696208 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602136 5696208 -1602176 5696184 1602136 5696208 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602136 5696208 -1602176 5696184 1602136 5696208 1608608 5713032 1608648 5713040 -1602136 5696208 1604784 5714488 1608336 5713136 1608608 5713032 -1602136 5696208 1604704 5714560 1604744 5714504 1604784 5714488 -1602176 5696184 1602200 5696144 1602136 5696208 1608608 5713032 -1602136 5696208 1604744 5714504 1604784 5714488 1608336 5713136 -1601824 5695840 1602072 5696232 1602136 5696208 1602016 5695848 -1602072 5696232 1604704 5714560 1602136 5696208 1602016 5695848 -1601824 5695840 1604704 5714560 1602072 5696232 1602016 5695848 -1602136 5696208 1602112 5695896 1602016 5695848 1602072 5696232 -1602136 5696208 1602112 5695896 1602072 5696232 1604704 5714560 -1602016 5695848 1601824 5695840 1602072 5696232 1602112 5695896 -1602136 5696208 1602200 5696008 1602112 5695896 1602072 5696232 -1602200 5696008 1602160 5695928 1602112 5695896 1602072 5696232 -1602136 5696208 1602200 5696008 1602072 5696232 1604704 5714560 -1602136 5696208 1602200 5696144 1602200 5696008 1602072 5696232 -1602112 5695896 1602016 5695848 1602072 5696232 1602200 5696008 -1602136 5696208 1602072 5696232 1604704 5714560 1604744 5714504 -1602136 5696208 1602200 5696008 1602072 5696232 1604744 5714504 -1602072 5696232 1601824 5695840 1604704 5714560 1604744 5714504 -1602136 5696208 1602072 5696232 1604744 5714504 1604784 5714488 -1602136 5696208 1602200 5696008 1602072 5696232 1604784 5714488 -1602072 5696232 1604704 5714560 1604744 5714504 1604784 5714488 -1604704 5714560 1602072 5696232 1601824 5695840 1604696 5714600 -1602136 5696208 1602072 5696232 1604784 5714488 1608336 5713136 -1602136 5696208 1602200 5696008 1602072 5696232 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602072 5696232 -1602136 5696208 1602072 5696232 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602072 5696232 -1602136 5696208 1602200 5696008 1602072 5696232 1608608 5713032 -1602136 5696208 1602072 5696232 1608608 5713032 1602176 5696184 -1602072 5696232 1604744 5714504 1604784 5714488 1608336 5713136 -1602072 5696232 1604784 5714488 1608336 5713136 1608608 5713032 -1602072 5696232 1602048 5696232 1604704 5714560 1604744 5714504 -1602072 5696232 1601824 5695840 1602048 5696232 1604744 5714504 -1601824 5695840 1602048 5696232 1602072 5696232 1602016 5695848 -1602072 5696232 1602112 5695896 1602016 5695848 1602048 5696232 -1602048 5696232 1604744 5714504 1602072 5696232 1602112 5695896 -1602016 5695848 1601824 5695840 1602048 5696232 1602112 5695896 -1602048 5696232 1601824 5695840 1604704 5714560 1604744 5714504 -1601824 5695840 1604704 5714560 1602048 5696232 1602016 5695848 -1602072 5696232 1602200 5696008 1602112 5695896 1602048 5696232 -1602200 5696008 1602160 5695928 1602112 5695896 1602048 5696232 -1602112 5695896 1602016 5695848 1602048 5696232 1602200 5696008 -1602072 5696232 1602200 5696008 1602048 5696232 1604744 5714504 -1602072 5696232 1602136 5696208 1602200 5696008 1602048 5696232 -1602072 5696232 1602136 5696208 1602048 5696232 1604744 5714504 -1602136 5696208 1602200 5696144 1602200 5696008 1602048 5696232 -1602200 5696008 1602112 5695896 1602048 5696232 1602136 5696208 -1602072 5696232 1602048 5696232 1604744 5714504 1604784 5714488 -1602048 5696232 1604704 5714560 1604744 5714504 1604784 5714488 -1602072 5696232 1602136 5696208 1602048 5696232 1604784 5714488 -1602072 5696232 1602048 5696232 1604784 5714488 1608336 5713136 -1604704 5714560 1602048 5696232 1601824 5695840 1604696 5714600 -1602048 5696232 1601960 5696192 1604704 5714560 1604744 5714504 -1602048 5696232 1601960 5696192 1604744 5714504 1604784 5714488 -1602048 5696232 1601824 5695840 1601960 5696192 1604744 5714504 -1601824 5695840 1601960 5696192 1602048 5696232 1602016 5695848 -1602048 5696232 1602112 5695896 1602016 5695848 1601960 5696192 -1602048 5696232 1602200 5696008 1602112 5695896 1601960 5696192 -1602200 5696008 1602160 5695928 1602112 5695896 1601960 5696192 -1602112 5695896 1602016 5695848 1601960 5696192 1602200 5696008 -1601960 5696192 1604744 5714504 1602048 5696232 1602200 5696008 -1602016 5695848 1601824 5695840 1601960 5696192 1602112 5695896 -1601960 5696192 1601824 5695840 1604704 5714560 1604744 5714504 -1601824 5695840 1604704 5714560 1601960 5696192 1602016 5695848 -1602048 5696232 1602136 5696208 1602200 5696008 1601960 5696192 -1602200 5696008 1602112 5695896 1601960 5696192 1602136 5696208 -1602048 5696232 1602136 5696208 1601960 5696192 1604744 5714504 -1602136 5696208 1602200 5696144 1602200 5696008 1601960 5696192 -1602048 5696232 1602072 5696232 1602136 5696208 1601960 5696192 -1604704 5714560 1601960 5696192 1601824 5695840 1604696 5714600 -1604704 5714560 1604744 5714504 1601960 5696192 1604696 5714600 -1601960 5696192 1602016 5695848 1601824 5695840 1604696 5714600 -1601824 5695840 1599875 5760125 1604696 5714600 1601960 5696192 -1601824 5695840 1601880 5696144 1601960 5696192 1602016 5695848 -1601824 5695840 1604696 5714600 1601880 5696144 1602016 5695848 -1601960 5696192 1602112 5695896 1602016 5695848 1601880 5696144 -1601960 5696192 1602200 5696008 1602112 5695896 1601880 5696144 -1601880 5696144 1604696 5714600 1601960 5696192 1602112 5695896 -1602016 5695848 1601824 5695840 1601880 5696144 1602112 5695896 -1601960 5696192 1601880 5696144 1604696 5714600 1604704 5714560 -1601880 5696144 1601824 5695840 1604696 5714600 1604704 5714560 -1601960 5696192 1601880 5696144 1604704 5714560 1604744 5714504 -1601960 5696192 1601880 5696144 1604744 5714504 1602048 5696232 -1601960 5696192 1602112 5695896 1601880 5696144 1604744 5714504 -1601880 5696144 1604696 5714600 1604704 5714560 1604744 5714504 -1604696 5714600 1601880 5696144 1601824 5695840 1599875 5760125 -1604696 5714600 1604704 5714560 1601880 5696144 1599875 5760125 -1601880 5696144 1602016 5695848 1601824 5695840 1599875 5760125 -1604696 5714600 1601880 5696144 1599875 5760125 1604712 5714680 -1601824 5695840 1599875 5599875 1599875 5760125 1601880 5696144 -1601824 5695840 1601784 5696088 1599875 5760125 1601880 5696144 -1601784 5696088 1599875 5599875 1599875 5760125 1601880 5696144 -1601824 5695840 1601784 5696088 1601880 5696144 1602016 5695848 -1601824 5695840 1599875 5599875 1601784 5696088 1601880 5696144 -1599875 5760125 1604696 5714600 1601880 5696144 1601784 5696088 -1604696 5714600 1604704 5714560 1601880 5696144 1601784 5696088 -1599875 5760125 1604696 5714600 1601784 5696088 1599875 5599875 -1599875 5760125 1604712 5714680 1604696 5714600 1601784 5696088 -1601880 5696144 1601824 5695840 1601784 5696088 1604704 5714560 -1604704 5714560 1604744 5714504 1601880 5696144 1601784 5696088 -1604704 5714560 1604744 5714504 1601784 5696088 1604696 5714600 -1604744 5714504 1601960 5696192 1601880 5696144 1601784 5696088 -1604744 5714504 1602048 5696232 1601960 5696192 1601784 5696088 -1601880 5696144 1601824 5695840 1601784 5696088 1601960 5696192 -1604744 5714504 1601960 5696192 1601784 5696088 1604704 5714560 -1604696 5714600 1604704 5714560 1601784 5696088 1599875 5760125 -1599875 5599875 1601784 5696088 1601824 5695840 1602016 5695848 -1601784 5696088 1601760 5696064 1599875 5760125 1604696 5714600 -1599875 5599875 1601760 5696064 1601784 5696088 1601824 5695840 -1599875 5599875 1599875 5760125 1601760 5696064 1601824 5695840 -1601784 5696088 1601824 5695840 1601760 5696064 1604696 5714600 -1601784 5696088 1601880 5696144 1601824 5695840 1601760 5696064 -1601760 5696064 1599875 5599875 1599875 5760125 1604696 5714600 -1599875 5760125 1604712 5714680 1604696 5714600 1601760 5696064 -1601784 5696088 1601760 5696064 1604696 5714600 1604704 5714560 -1601784 5696088 1601760 5696064 1604704 5714560 1604744 5714504 -1601760 5696064 1599875 5760125 1604696 5714600 1604704 5714560 -1601784 5696088 1601824 5695840 1601760 5696064 1604704 5714560 -1599875 5599875 1601760 5696064 1601824 5695840 1602016 5695848 -1601760 5696064 1601760 5696040 1599875 5599875 1599875 5760125 -1601760 5696040 1601824 5695840 1599875 5599875 1599875 5760125 -1601824 5695840 1601760 5696040 1601760 5696064 1601784 5696088 -1601824 5695840 1599875 5599875 1601760 5696040 1601784 5696088 -1601824 5695840 1601760 5696040 1601784 5696088 1601880 5696144 -1601824 5695840 1599875 5599875 1601760 5696040 1601880 5696144 -1601824 5695840 1601760 5696040 1601880 5696144 1602016 5695848 -1601824 5695840 1599875 5599875 1601760 5696040 1602016 5695848 -1601760 5696040 1601760 5696064 1601784 5696088 1601880 5696144 -1601760 5696040 1601784 5696088 1601880 5696144 1602016 5695848 -1601760 5696064 1601760 5696040 1599875 5760125 1604696 5714600 -1601760 5696064 1601784 5696088 1601760 5696040 1599875 5760125 -1601880 5696144 1602112 5695896 1602016 5695848 1601760 5696040 -1599875 5599875 1601760 5696040 1601824 5695840 1602016 5695848 -1601824 5695840 1601768 5695920 1601760 5696040 1602016 5695848 -1601824 5695840 1599875 5599875 1601768 5695920 1602016 5695848 -1601760 5696040 1601880 5696144 1602016 5695848 1601768 5695920 -1602016 5695848 1601824 5695840 1601768 5695920 1601880 5696144 -1601760 5696040 1601768 5695920 1599875 5599875 1599875 5760125 -1601768 5695920 1599875 5599875 1601760 5696040 1601880 5696144 -1601760 5696040 1601784 5696088 1601880 5696144 1601768 5695920 -1601880 5696144 1602112 5695896 1602016 5695848 1601768 5695920 -1599875 5599875 1601768 5695920 1601824 5695840 1602016 5695848 -1601768 5695920 1601776 5695896 1599875 5599875 1601760 5696040 -1601824 5695840 1601776 5695896 1601768 5695920 1602016 5695848 -1599875 5599875 1601776 5695896 1601824 5695840 1602016 5695848 -1601760 5696064 1601784 5696704 1604696 5714600 1604704 5714560 -1601784 5696704 1599875 5760125 1604696 5714600 1604704 5714560 -1599875 5760125 1601784 5696704 1601760 5696064 1601760 5696040 -1601760 5696064 1599875 5760125 1601784 5696704 1604704 5714560 -1604696 5714600 1601784 5696704 1599875 5760125 1604712 5714680 -1601760 5696064 1601784 5696704 1604704 5714560 1601784 5696088 -1604704 5714560 1604744 5714504 1601784 5696088 1601784 5696704 -1601784 5696704 1604696 5714600 1604704 5714560 1604744 5714504 -1601760 5696064 1599875 5760125 1601784 5696704 1601784 5696088 -1604744 5714504 1601960 5696192 1601784 5696088 1601784 5696704 -1604744 5714504 1601960 5696192 1601784 5696704 1604704 5714560 -1604744 5714504 1602048 5696232 1601960 5696192 1601784 5696704 -1604744 5714504 1602048 5696232 1601784 5696704 1604704 5714560 -1604744 5714504 1604784 5714488 1602048 5696232 1601784 5696704 -1604744 5714504 1604784 5714488 1601784 5696704 1604704 5714560 -1602048 5696232 1601960 5696192 1601784 5696704 1604784 5714488 -1601960 5696192 1601880 5696144 1601784 5696088 1601784 5696704 -1604784 5714488 1602072 5696232 1602048 5696232 1601784 5696704 -1604784 5714488 1602072 5696232 1601784 5696704 1604744 5714504 -1602048 5696232 1601960 5696192 1601784 5696704 1602072 5696232 -1604784 5714488 1608336 5713136 1602072 5696232 1601784 5696704 -1604784 5714488 1608336 5713136 1601784 5696704 1604744 5714504 -1604784 5714488 1604840 5714480 1608336 5713136 1601784 5696704 -1602072 5696232 1602048 5696232 1601784 5696704 1608336 5713136 -1601960 5696192 1601880 5696144 1601784 5696704 1602048 5696232 -1601784 5696088 1601760 5696064 1601784 5696704 1601880 5696144 -1608336 5713136 1608608 5713032 1602072 5696232 1601784 5696704 -1608336 5713136 1608576 5713048 1608608 5713032 1601784 5696704 -1608608 5713032 1602136 5696208 1602072 5696232 1601784 5696704 -1608608 5713032 1602176 5696184 1602136 5696208 1601784 5696704 -1608608 5713032 1608648 5713040 1602176 5696184 1601784 5696704 -1602136 5696208 1602072 5696232 1601784 5696704 1602176 5696184 -1608336 5713136 1608608 5713032 1601784 5696704 1604784 5714488 -1602072 5696232 1602048 5696232 1601784 5696704 1602136 5696208 -1608608 5713032 1602176 5696184 1601784 5696704 1608336 5713136 -1602176 5696184 1601848 5696640 1608608 5713032 1608648 5713040 -1601784 5696704 1601848 5696640 1602176 5696184 1602136 5696208 -1601784 5696704 1608608 5713032 1601848 5696640 1602136 5696208 -1601848 5696640 1608608 5713032 1602176 5696184 1602136 5696208 -1601784 5696704 1601848 5696640 1602136 5696208 1602072 5696232 -1601784 5696704 1608608 5713032 1601848 5696640 1602072 5696232 -1601848 5696640 1602176 5696184 1602136 5696208 1602072 5696232 -1601784 5696704 1601848 5696640 1602072 5696232 1602048 5696232 -1601784 5696704 1601848 5696640 1602048 5696232 1601960 5696192 -1601784 5696704 1608608 5713032 1601848 5696640 1601960 5696192 -1601848 5696640 1602136 5696208 1602072 5696232 1602048 5696232 -1601848 5696640 1602072 5696232 1602048 5696232 1601960 5696192 -1601784 5696704 1601848 5696640 1601960 5696192 1601880 5696144 -1601848 5696640 1602048 5696232 1601960 5696192 1601880 5696144 -1601784 5696704 1601848 5696640 1601880 5696144 1601784 5696088 -1601784 5696704 1608608 5713032 1601848 5696640 1601784 5696088 -1601848 5696640 1601960 5696192 1601880 5696144 1601784 5696088 -1601784 5696704 1601848 5696640 1601784 5696088 1601760 5696064 -1608608 5713032 1601848 5696640 1601784 5696704 1608336 5713136 -1601848 5696640 1601896 5696632 1602176 5696184 1602136 5696208 -1601848 5696640 1608608 5713032 1601896 5696632 1602136 5696208 -1608608 5713032 1601896 5696632 1601848 5696640 1601784 5696704 -1601896 5696632 1602136 5696208 1601848 5696640 1601784 5696704 -1601896 5696632 1608608 5713032 1602176 5696184 1602136 5696208 -1608608 5713032 1602176 5696184 1601896 5696632 1601784 5696704 -1602176 5696184 1601896 5696632 1608608 5713032 1608648 5713040 -1602176 5696184 1602136 5696208 1601896 5696632 1608648 5713040 -1601896 5696632 1601784 5696704 1608608 5713032 1608648 5713040 -1601848 5696640 1601896 5696632 1602136 5696208 1602072 5696232 -1601896 5696632 1602176 5696184 1602136 5696208 1602072 5696232 -1601848 5696640 1601784 5696704 1601896 5696632 1602072 5696232 -1601848 5696640 1601896 5696632 1602072 5696232 1602048 5696232 -1601848 5696640 1601784 5696704 1601896 5696632 1602048 5696232 -1601896 5696632 1602136 5696208 1602072 5696232 1602048 5696232 -1601848 5696640 1601896 5696632 1602048 5696232 1601960 5696192 -1601848 5696640 1601896 5696632 1601960 5696192 1601880 5696144 -1601848 5696640 1601784 5696704 1601896 5696632 1601960 5696192 -1601896 5696632 1602072 5696232 1602048 5696232 1601960 5696192 -1602176 5696184 1601896 5696632 1608648 5713040 1602200 5696144 -1608608 5713032 1601896 5696632 1601784 5696704 1608336 5713136 -1601896 5696632 1601928 5696648 1602176 5696184 1602136 5696208 -1601896 5696632 1601928 5696648 1602136 5696208 1602072 5696232 -1601928 5696648 1602176 5696184 1602136 5696208 1602072 5696232 -1601896 5696632 1608648 5713040 1601928 5696648 1602072 5696232 -1601928 5696648 1608648 5713040 1602176 5696184 1602136 5696208 -1608648 5713040 1601928 5696648 1601896 5696632 1608608 5713032 -1601928 5696648 1602072 5696232 1601896 5696632 1608608 5713032 -1601896 5696632 1601784 5696704 1608608 5713032 1601928 5696648 -1601896 5696632 1601848 5696640 1601784 5696704 1601928 5696648 -1601896 5696632 1601848 5696640 1601928 5696648 1602072 5696232 -1601784 5696704 1608608 5713032 1601928 5696648 1601848 5696640 -1608648 5713040 1602176 5696184 1601928 5696648 1608608 5713032 -1608608 5713032 1608648 5713040 1601928 5696648 1601784 5696704 -1601896 5696632 1601928 5696648 1602072 5696232 1602048 5696232 -1601928 5696648 1602136 5696208 1602072 5696232 1602048 5696232 -1601896 5696632 1601848 5696640 1601928 5696648 1602048 5696232 -1601896 5696632 1601928 5696648 1602048 5696232 1601960 5696192 -1602176 5696184 1601928 5696648 1608648 5713040 1602200 5696144 -1601928 5696648 1608608 5713032 1608648 5713040 1602200 5696144 -1602176 5696184 1602136 5696208 1601928 5696648 1602200 5696144 -1608648 5713040 1602224 5696096 1602200 5696144 1601928 5696648 -1601784 5696704 1608336 5713136 1608608 5713032 1601928 5696648 -1608336 5713136 1608576 5713048 1608608 5713032 1601928 5696648 -1601784 5696704 1608336 5713136 1601928 5696648 1601848 5696640 -1608608 5713032 1608648 5713040 1601928 5696648 1608336 5713136 -1601784 5696704 1604784 5714488 1608336 5713136 1601928 5696648 -1608648 5713040 1601984 5696648 1601928 5696648 1608608 5713032 -1601984 5696648 1602200 5696144 1601928 5696648 1608608 5713032 -1602200 5696144 1601984 5696648 1608648 5713040 1602224 5696096 -1602200 5696144 1601928 5696648 1601984 5696648 1602224 5696096 -1608648 5713040 1611512 5715528 1602224 5696096 1601984 5696648 -1601928 5696648 1608336 5713136 1608608 5713032 1601984 5696648 -1608336 5713136 1608576 5713048 1608608 5713032 1601984 5696648 -1601928 5696648 1608336 5713136 1601984 5696648 1602200 5696144 -1608608 5713032 1608648 5713040 1601984 5696648 1608336 5713136 -1601928 5696648 1601984 5696648 1602200 5696144 1602176 5696184 -1601928 5696648 1608336 5713136 1601984 5696648 1602176 5696184 -1601984 5696648 1602224 5696096 1602200 5696144 1602176 5696184 -1601928 5696648 1601984 5696648 1602176 5696184 1602136 5696208 -1601928 5696648 1601984 5696648 1602136 5696208 1602072 5696232 -1601928 5696648 1601984 5696648 1602072 5696232 1602048 5696232 -1601984 5696648 1602136 5696208 1602072 5696232 1602048 5696232 -1601928 5696648 1608336 5713136 1601984 5696648 1602048 5696232 -1601984 5696648 1602176 5696184 1602136 5696208 1602072 5696232 -1601928 5696648 1601984 5696648 1602048 5696232 1601896 5696632 -1601984 5696648 1602072 5696232 1602048 5696232 1601896 5696632 -1601928 5696648 1608336 5713136 1601984 5696648 1601896 5696632 -1602048 5696232 1601960 5696192 1601896 5696632 1601984 5696648 -1601984 5696648 1602200 5696144 1602176 5696184 1602136 5696208 -1608648 5713040 1602224 5696096 1601984 5696648 1608608 5713032 -1601928 5696648 1601784 5696704 1608336 5713136 1601984 5696648 -1601928 5696648 1601848 5696640 1601784 5696704 1601984 5696648 -1601928 5696648 1601784 5696704 1601984 5696648 1601896 5696632 -1608336 5713136 1608608 5713032 1601984 5696648 1601784 5696704 -1601784 5696704 1604784 5714488 1608336 5713136 1601984 5696648 -1601984 5696648 1602064 5696680 1602224 5696096 1602200 5696144 -1601984 5696648 1602064 5696680 1602200 5696144 1602176 5696184 -1602064 5696680 1602224 5696096 1602200 5696144 1602176 5696184 -1602224 5696096 1602064 5696680 1608648 5713040 1611512 5715528 -1601984 5696648 1602064 5696680 1602176 5696184 1602136 5696208 -1602064 5696680 1602200 5696144 1602176 5696184 1602136 5696208 -1601984 5696648 1602064 5696680 1602136 5696208 1602072 5696232 -1601984 5696648 1602064 5696680 1602072 5696232 1602048 5696232 -1602064 5696680 1602176 5696184 1602136 5696208 1602072 5696232 -1601984 5696648 1608648 5713040 1602064 5696680 1602072 5696232 -1608648 5713040 1602064 5696680 1601984 5696648 1608608 5713032 -1601984 5696648 1608336 5713136 1608608 5713032 1602064 5696680 -1608336 5713136 1608576 5713048 1608608 5713032 1602064 5696680 -1601984 5696648 1601784 5696704 1608336 5713136 1602064 5696680 -1608336 5713136 1608608 5713032 1602064 5696680 1601784 5696704 -1601784 5696704 1604784 5714488 1608336 5713136 1602064 5696680 -1601784 5696704 1604744 5714504 1604784 5714488 1602064 5696680 -1604784 5714488 1604840 5714480 1608336 5713136 1602064 5696680 -1608336 5713136 1608608 5713032 1602064 5696680 1604784 5714488 -1601784 5696704 1604784 5714488 1602064 5696680 1601984 5696648 -1602064 5696680 1602072 5696232 1601984 5696648 1601784 5696704 -1608608 5713032 1608648 5713040 1602064 5696680 1608336 5713136 -1602064 5696680 1608648 5713040 1602224 5696096 1602200 5696144 -1608648 5713040 1602224 5696096 1602064 5696680 1608608 5713032 -1601984 5696648 1601928 5696648 1601784 5696704 1602064 5696680 -1601928 5696648 1601848 5696640 1601784 5696704 1602064 5696680 -1601784 5696704 1604784 5714488 1602064 5696680 1601928 5696648 -1601984 5696648 1601928 5696648 1602064 5696680 1602072 5696232 -1602224 5696096 1602096 5696712 1608648 5713040 1611512 5715528 -1602064 5696680 1602096 5696712 1602224 5696096 1602200 5696144 -1602064 5696680 1602096 5696712 1602200 5696144 1602176 5696184 -1602064 5696680 1602096 5696712 1602176 5696184 1602136 5696208 -1602096 5696712 1602200 5696144 1602176 5696184 1602136 5696208 -1602064 5696680 1602096 5696712 1602136 5696208 1602072 5696232 -1602096 5696712 1602224 5696096 1602200 5696144 1602176 5696184 -1602064 5696680 1608648 5713040 1602096 5696712 1602136 5696208 -1608648 5713040 1602096 5696712 1602064 5696680 1608608 5713032 -1602064 5696680 1608336 5713136 1608608 5713032 1602096 5696712 -1608336 5713136 1608576 5713048 1608608 5713032 1602096 5696712 -1602064 5696680 1604784 5714488 1608336 5713136 1602096 5696712 -1604784 5714488 1604840 5714480 1608336 5713136 1602096 5696712 -1602064 5696680 1601784 5696704 1604784 5714488 1602096 5696712 -1601784 5696704 1604744 5714504 1604784 5714488 1602096 5696712 -1604784 5714488 1608336 5713136 1602096 5696712 1601784 5696704 -1602064 5696680 1601928 5696648 1601784 5696704 1602096 5696712 -1601928 5696648 1601848 5696640 1601784 5696704 1602096 5696712 -1601784 5696704 1604784 5714488 1602096 5696712 1601928 5696648 -1608336 5713136 1608608 5713032 1602096 5696712 1604784 5714488 -1602096 5696712 1602136 5696208 1602064 5696680 1601928 5696648 -1608608 5713032 1608648 5713040 1602096 5696712 1608336 5713136 -1602096 5696712 1608648 5713040 1602224 5696096 1602200 5696144 -1608648 5713040 1602224 5696096 1602096 5696712 1608608 5713032 -1602064 5696680 1601984 5696648 1601928 5696648 1602096 5696712 -1601928 5696648 1601784 5696704 1602096 5696712 1601984 5696648 -1602064 5696680 1601984 5696648 1602096 5696712 1602136 5696208 -1602224 5696096 1602128 5696712 1608648 5713040 1611512 5715528 -1602096 5696712 1602128 5696712 1602224 5696096 1602200 5696144 -1602096 5696712 1602128 5696712 1602200 5696144 1602176 5696184 -1602096 5696712 1602128 5696712 1602176 5696184 1602136 5696208 -1602096 5696712 1602128 5696712 1602136 5696208 1602064 5696680 -1602128 5696712 1602176 5696184 1602136 5696208 1602064 5696680 -1602136 5696208 1602072 5696232 1602064 5696680 1602128 5696712 -1602128 5696712 1602200 5696144 1602176 5696184 1602136 5696208 -1602128 5696712 1602224 5696096 1602200 5696144 1602176 5696184 -1602096 5696712 1608648 5713040 1602128 5696712 1602064 5696680 -1608648 5713040 1602128 5696712 1602096 5696712 1608608 5713032 -1602096 5696712 1608336 5713136 1608608 5713032 1602128 5696712 -1608336 5713136 1608576 5713048 1608608 5713032 1602128 5696712 -1602096 5696712 1604784 5714488 1608336 5713136 1602128 5696712 -1604784 5714488 1604840 5714480 1608336 5713136 1602128 5696712 -1602096 5696712 1601784 5696704 1604784 5714488 1602128 5696712 -1608336 5713136 1608608 5713032 1602128 5696712 1604784 5714488 -1602128 5696712 1602064 5696680 1602096 5696712 1604784 5714488 -1608608 5713032 1608648 5713040 1602128 5696712 1608336 5713136 -1602128 5696712 1608648 5713040 1602224 5696096 1602200 5696144 -1608648 5713040 1602224 5696096 1602128 5696712 1608608 5713032 -1602224 5696096 1602168 5696744 1608648 5713040 1611512 5715528 -1602128 5696712 1602168 5696744 1602224 5696096 1602200 5696144 -1602128 5696712 1602168 5696744 1602200 5696144 1602176 5696184 -1602128 5696712 1602168 5696744 1602176 5696184 1602136 5696208 -1602168 5696744 1602224 5696096 1602200 5696144 1602176 5696184 -1602128 5696712 1608648 5713040 1602168 5696744 1602176 5696184 -1608648 5713040 1602168 5696744 1602128 5696712 1608608 5713032 -1602128 5696712 1608336 5713136 1608608 5713032 1602168 5696744 -1608336 5713136 1608576 5713048 1608608 5713032 1602168 5696744 -1602128 5696712 1604784 5714488 1608336 5713136 1602168 5696744 -1604784 5714488 1604840 5714480 1608336 5713136 1602168 5696744 -1602128 5696712 1602096 5696712 1604784 5714488 1602168 5696744 -1602096 5696712 1601784 5696704 1604784 5714488 1602168 5696744 -1601784 5696704 1604744 5714504 1604784 5714488 1602168 5696744 -1601784 5696704 1604704 5714560 1604744 5714504 1602168 5696744 -1601784 5696704 1604744 5714504 1602168 5696744 1602096 5696712 -1602096 5696712 1601928 5696648 1601784 5696704 1602168 5696744 -1602096 5696712 1601784 5696704 1602168 5696744 1602128 5696712 -1604784 5714488 1608336 5713136 1602168 5696744 1604744 5714504 -1608336 5713136 1608608 5713032 1602168 5696744 1604784 5714488 -1602168 5696744 1602176 5696184 1602128 5696712 1602096 5696712 -1608608 5713032 1608648 5713040 1602168 5696744 1608336 5713136 -1602168 5696744 1608648 5713040 1602224 5696096 1602200 5696144 -1608648 5713040 1602224 5696096 1602168 5696744 1608608 5713032 -1602224 5696096 1602224 5696768 1608648 5713040 1611512 5715528 -1602224 5696096 1602224 5696768 1611512 5715528 1602224 5696056 -1608648 5713040 1608720 5713120 1611512 5715528 1602224 5696768 -1602168 5696744 1602224 5696768 1602224 5696096 1602200 5696144 -1602168 5696744 1602224 5696768 1602200 5696144 1602176 5696184 -1602168 5696744 1602224 5696768 1602176 5696184 1602128 5696712 -1602176 5696184 1602136 5696208 1602128 5696712 1602224 5696768 -1602224 5696768 1602200 5696144 1602176 5696184 1602128 5696712 -1602168 5696744 1608648 5713040 1602224 5696768 1602128 5696712 -1608648 5713040 1602224 5696768 1602168 5696744 1608608 5713032 -1602168 5696744 1608336 5713136 1608608 5713032 1602224 5696768 -1608336 5713136 1608576 5713048 1608608 5713032 1602224 5696768 -1602168 5696744 1604784 5714488 1608336 5713136 1602224 5696768 -1604784 5714488 1604840 5714480 1608336 5713136 1602224 5696768 -1602168 5696744 1604744 5714504 1604784 5714488 1602224 5696768 -1602168 5696744 1601784 5696704 1604744 5714504 1602224 5696768 -1601784 5696704 1604704 5714560 1604744 5714504 1602224 5696768 -1602168 5696744 1602096 5696712 1601784 5696704 1602224 5696768 -1604744 5714504 1604784 5714488 1602224 5696768 1601784 5696704 -1604784 5714488 1608336 5713136 1602224 5696768 1604744 5714504 -1608336 5713136 1608608 5713032 1602224 5696768 1604784 5714488 -1602224 5696768 1602128 5696712 1602168 5696744 1601784 5696704 -1608608 5713032 1608648 5713040 1602224 5696768 1608336 5713136 -1602224 5696096 1602200 5696144 1602224 5696768 1611512 5715528 -1602224 5696768 1602224 5696096 1602200 5696144 1602176 5696184 -1602224 5696768 1608608 5713032 1608648 5713040 1611512 5715528 -1611512 5715528 1602264 5696760 1602224 5696768 1608648 5713040 -1602224 5696096 1602264 5696760 1611512 5715528 1602224 5696056 -1611512 5715528 1663880 5646248 1602224 5696056 1602264 5696760 -1611512 5715528 1602264 5696760 1608648 5713040 1608720 5713120 -1602224 5696768 1602264 5696760 1602224 5696096 1602200 5696144 -1602224 5696768 1602264 5696760 1602200 5696144 1602176 5696184 -1602224 5696768 1602264 5696760 1602176 5696184 1602128 5696712 -1602176 5696184 1602136 5696208 1602128 5696712 1602264 5696760 -1602136 5696208 1602064 5696680 1602128 5696712 1602264 5696760 -1602224 5696768 1602264 5696760 1602128 5696712 1602168 5696744 -1602128 5696712 1602168 5696744 1602264 5696760 1602136 5696208 -1602264 5696760 1602224 5696096 1602200 5696144 1602176 5696184 -1602264 5696760 1602200 5696144 1602176 5696184 1602136 5696208 -1602224 5696768 1608608 5713032 1608648 5713040 1602264 5696760 -1608648 5713040 1611512 5715528 1602264 5696760 1608608 5713032 -1602224 5696768 1608336 5713136 1608608 5713032 1602264 5696760 -1608336 5713136 1608576 5713048 1608608 5713032 1602264 5696760 -1602224 5696768 1604784 5714488 1608336 5713136 1602264 5696760 -1608608 5713032 1608648 5713040 1602264 5696760 1608336 5713136 -1602264 5696760 1602168 5696744 1602224 5696768 1608336 5713136 -1602224 5696096 1602200 5696144 1602264 5696760 1602224 5696056 -1611512 5715528 1602224 5696056 1602264 5696760 1608648 5713040 -1602264 5696760 1602352 5696840 1602224 5696056 1602224 5696096 -1602224 5696056 1602352 5696840 1611512 5715528 1663880 5646248 -1602264 5696760 1602352 5696840 1602224 5696096 1602200 5696144 -1602352 5696840 1602224 5696056 1602224 5696096 1602200 5696144 -1602264 5696760 1602352 5696840 1602200 5696144 1602176 5696184 -1602264 5696760 1611512 5715528 1602352 5696840 1602200 5696144 -1611512 5715528 1602352 5696840 1602264 5696760 1608648 5713040 -1602264 5696760 1608608 5713032 1608648 5713040 1602352 5696840 -1611512 5715528 1602352 5696840 1608648 5713040 1608720 5713120 -1602264 5696760 1608336 5713136 1608608 5713032 1602352 5696840 -1608336 5713136 1608576 5713048 1608608 5713032 1602352 5696840 -1608608 5713032 1608648 5713040 1602352 5696840 1608336 5713136 -1602264 5696760 1602224 5696768 1608336 5713136 1602352 5696840 -1602224 5696768 1604784 5714488 1608336 5713136 1602352 5696840 -1604784 5714488 1604840 5714480 1608336 5713136 1602352 5696840 -1602224 5696768 1604744 5714504 1604784 5714488 1602352 5696840 -1602224 5696768 1601784 5696704 1604744 5714504 1602352 5696840 -1601784 5696704 1604704 5714560 1604744 5714504 1602352 5696840 -1602224 5696768 1602168 5696744 1601784 5696704 1602352 5696840 -1604744 5714504 1604784 5714488 1602352 5696840 1601784 5696704 -1604784 5714488 1608336 5713136 1602352 5696840 1604744 5714504 -1602224 5696768 1601784 5696704 1602352 5696840 1602264 5696760 -1608336 5713136 1608608 5713032 1602352 5696840 1604784 5714488 -1602352 5696840 1602200 5696144 1602264 5696760 1602224 5696768 -1608648 5713040 1611512 5715528 1602352 5696840 1608608 5713032 -1602352 5696840 1611512 5715528 1602224 5696056 1602224 5696096 -1611512 5715528 1602224 5696056 1602352 5696840 1608648 5713040 -1602224 5696056 1602384 5696856 1611512 5715528 1663880 5646248 -1602352 5696840 1602384 5696856 1602224 5696056 1602224 5696096 -1602352 5696840 1602384 5696856 1602224 5696096 1602200 5696144 -1602384 5696856 1611512 5715528 1602224 5696056 1602224 5696096 -1602352 5696840 1602384 5696856 1602200 5696144 1602264 5696760 -1602384 5696856 1602224 5696096 1602200 5696144 1602264 5696760 -1602200 5696144 1602176 5696184 1602264 5696760 1602384 5696856 -1602384 5696856 1602224 5696056 1602224 5696096 1602200 5696144 -1602352 5696840 1611512 5715528 1602384 5696856 1602264 5696760 -1611512 5715528 1602384 5696856 1602352 5696840 1608648 5713040 -1611512 5715528 1602384 5696856 1608648 5713040 1608720 5713120 -1611512 5715528 1602224 5696056 1602384 5696856 1608648 5713040 -1602352 5696840 1608608 5713032 1608648 5713040 1602384 5696856 -1602352 5696840 1608336 5713136 1608608 5713032 1602384 5696856 -1608336 5713136 1608576 5713048 1608608 5713032 1602384 5696856 -1602352 5696840 1604784 5714488 1608336 5713136 1602384 5696856 -1604784 5714488 1604840 5714480 1608336 5713136 1602384 5696856 -1608336 5713136 1608608 5713032 1602384 5696856 1604784 5714488 -1602352 5696840 1604744 5714504 1604784 5714488 1602384 5696856 -1602352 5696840 1601784 5696704 1604744 5714504 1602384 5696856 -1601784 5696704 1604704 5714560 1604744 5714504 1602384 5696856 -1602352 5696840 1602224 5696768 1601784 5696704 1602384 5696856 -1604744 5714504 1604784 5714488 1602384 5696856 1601784 5696704 -1604784 5714488 1608336 5713136 1602384 5696856 1604744 5714504 -1608608 5713032 1608648 5713040 1602384 5696856 1608336 5713136 -1602384 5696856 1602264 5696760 1602352 5696840 1601784 5696704 -1608648 5713040 1611512 5715528 1602384 5696856 1608608 5713032 -1602224 5696056 1602424 5696896 1611512 5715528 1663880 5646248 -1602224 5696056 1602424 5696896 1663880 5646248 1602200 5696008 -1611512 5715528 1611528 5715552 1663880 5646248 1602424 5696896 -1602384 5696856 1602424 5696896 1602224 5696056 1602224 5696096 -1602384 5696856 1611512 5715528 1602424 5696896 1602224 5696096 -1611512 5715528 1602424 5696896 1602384 5696856 1608648 5713040 -1611512 5715528 1602424 5696896 1608648 5713040 1608720 5713120 -1602424 5696896 1602224 5696096 1602384 5696856 1608648 5713040 -1602424 5696896 1608648 5713040 1611512 5715528 1663880 5646248 -1602224 5696056 1602224 5696096 1602424 5696896 1663880 5646248 -1602384 5696856 1602424 5696896 1602224 5696096 1602200 5696144 -1602384 5696856 1608608 5713032 1608648 5713040 1602424 5696896 -1602384 5696856 1608608 5713032 1602424 5696896 1602224 5696096 -1608648 5713040 1611512 5715528 1602424 5696896 1608608 5713032 -1602384 5696856 1608336 5713136 1608608 5713032 1602424 5696896 -1608336 5713136 1608576 5713048 1608608 5713032 1602424 5696896 -1602384 5696856 1604784 5714488 1608336 5713136 1602424 5696896 -1604784 5714488 1604840 5714480 1608336 5713136 1602424 5696896 -1602384 5696856 1604784 5714488 1602424 5696896 1602224 5696096 -1602384 5696856 1604744 5714504 1604784 5714488 1602424 5696896 -1604784 5714488 1608336 5713136 1602424 5696896 1604744 5714504 -1602384 5696856 1601784 5696704 1604744 5714504 1602424 5696896 -1601784 5696704 1604704 5714560 1604744 5714504 1602424 5696896 -1602384 5696856 1602352 5696840 1601784 5696704 1602424 5696896 -1602352 5696840 1602224 5696768 1601784 5696704 1602424 5696896 -1602224 5696768 1602168 5696744 1601784 5696704 1602424 5696896 -1602352 5696840 1602224 5696768 1602424 5696896 1602384 5696856 -1601784 5696704 1604744 5714504 1602424 5696896 1602224 5696768 -1602384 5696856 1602352 5696840 1602424 5696896 1602224 5696096 -1602352 5696840 1602264 5696760 1602224 5696768 1602424 5696896 -1604744 5714504 1604784 5714488 1602424 5696896 1601784 5696704 -1608336 5713136 1608608 5713032 1602424 5696896 1604784 5714488 -1608608 5713032 1608648 5713040 1602424 5696896 1608336 5713136 -1602424 5696896 1602472 5696952 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1602472 5696952 -1663880 5646248 1602472 5696952 1611512 5715528 1611528 5715552 -1602424 5696896 1611512 5715528 1602472 5696952 1602224 5696056 -1611512 5715528 1602472 5696952 1602424 5696896 1608648 5713040 -1611512 5715528 1663880 5646248 1602472 5696952 1608648 5713040 -1611512 5715528 1602472 5696952 1608648 5713040 1608720 5713120 -1602424 5696896 1608608 5713032 1608648 5713040 1602472 5696952 -1602472 5696952 1602224 5696056 1602424 5696896 1608608 5713032 -1608648 5713040 1611512 5715528 1602472 5696952 1608608 5713032 -1602472 5696952 1611512 5715528 1663880 5646248 1602224 5696056 -1602424 5696896 1602472 5696952 1602224 5696056 1602224 5696096 -1602472 5696952 1663880 5646248 1602224 5696056 1602224 5696096 -1602424 5696896 1602472 5696952 1602224 5696096 1602384 5696856 -1602424 5696896 1608608 5713032 1602472 5696952 1602224 5696096 -1602424 5696896 1608336 5713136 1608608 5713032 1602472 5696952 -1608336 5713136 1608576 5713048 1608608 5713032 1602472 5696952 -1608608 5713032 1608648 5713040 1602472 5696952 1608336 5713136 -1602424 5696896 1608336 5713136 1602472 5696952 1602224 5696096 -1602424 5696896 1604784 5714488 1608336 5713136 1602472 5696952 -1604784 5714488 1604840 5714480 1608336 5713136 1602472 5696952 -1602424 5696896 1604744 5714504 1604784 5714488 1602472 5696952 -1602424 5696896 1604744 5714504 1602472 5696952 1602224 5696096 -1602424 5696896 1601784 5696704 1604744 5714504 1602472 5696952 -1601784 5696704 1604704 5714560 1604744 5714504 1602472 5696952 -1604744 5714504 1604784 5714488 1602472 5696952 1601784 5696704 -1602424 5696896 1602224 5696768 1601784 5696704 1602472 5696952 -1602224 5696768 1602168 5696744 1601784 5696704 1602472 5696952 -1602424 5696896 1602352 5696840 1602224 5696768 1602472 5696952 -1602424 5696896 1602384 5696856 1602352 5696840 1602472 5696952 -1602224 5696768 1601784 5696704 1602472 5696952 1602352 5696840 -1602424 5696896 1602352 5696840 1602472 5696952 1602224 5696096 -1602352 5696840 1602264 5696760 1602224 5696768 1602472 5696952 -1601784 5696704 1604744 5714504 1602472 5696952 1602224 5696768 -1604784 5714488 1608336 5713136 1602472 5696952 1604744 5714504 -1608336 5713136 1608608 5713032 1602472 5696952 1604784 5714488 -1611512 5715528 1602504 5696992 1602472 5696952 1608648 5713040 -1602504 5696992 1663880 5646248 1602472 5696952 1608648 5713040 -1611512 5715528 1663880 5646248 1602504 5696992 1608648 5713040 -1611512 5715528 1602504 5696992 1608648 5713040 1608720 5713120 -1663880 5646248 1602504 5696992 1611512 5715528 1611528 5715552 -1602472 5696952 1608608 5713032 1608648 5713040 1602504 5696992 -1602472 5696952 1608608 5713032 1602504 5696992 1663880 5646248 -1608648 5713040 1611512 5715528 1602504 5696992 1608608 5713032 -1602472 5696952 1608336 5713136 1608608 5713032 1602504 5696992 -1608336 5713136 1608576 5713048 1608608 5713032 1602504 5696992 -1602472 5696952 1608336 5713136 1602504 5696992 1663880 5646248 -1608608 5713032 1608648 5713040 1602504 5696992 1608336 5713136 -1602472 5696952 1602504 5696992 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1602504 5696992 -1602472 5696952 1602504 5696992 1602224 5696056 1602224 5696096 -1602472 5696952 1608336 5713136 1602504 5696992 1602224 5696096 -1602504 5696992 1611512 5715528 1663880 5646248 1602224 5696056 -1602504 5696992 1663880 5646248 1602224 5696056 1602224 5696096 -1602472 5696952 1602504 5696992 1602224 5696096 1602424 5696896 -1602472 5696952 1604784 5714488 1608336 5713136 1602504 5696992 -1604784 5714488 1604840 5714480 1608336 5713136 1602504 5696992 -1602472 5696952 1604784 5714488 1602504 5696992 1602224 5696096 -1608336 5713136 1608608 5713032 1602504 5696992 1604784 5714488 -1602472 5696952 1604744 5714504 1604784 5714488 1602504 5696992 -1602472 5696952 1601784 5696704 1604744 5714504 1602504 5696992 -1601784 5696704 1604704 5714560 1604744 5714504 1602504 5696992 -1602472 5696952 1601784 5696704 1602504 5696992 1602224 5696096 -1602472 5696952 1602224 5696768 1601784 5696704 1602504 5696992 -1602224 5696768 1602168 5696744 1601784 5696704 1602504 5696992 -1601784 5696704 1604744 5714504 1602504 5696992 1602224 5696768 -1602472 5696952 1602224 5696768 1602504 5696992 1602224 5696096 -1602472 5696952 1602352 5696840 1602224 5696768 1602504 5696992 -1604744 5714504 1604784 5714488 1602504 5696992 1601784 5696704 -1604784 5714488 1608336 5713136 1602504 5696992 1604744 5714504 -1604744 5714504 1602504 5697056 1601784 5696704 1604704 5714560 -1601784 5696704 1602504 5697056 1602504 5696992 1602224 5696768 -1601784 5696704 1602504 5697056 1602224 5696768 1602168 5696744 -1601784 5696704 1602504 5697056 1602168 5696744 1602096 5696712 -1602504 5697056 1602504 5696992 1602224 5696768 1602168 5696744 -1602504 5697056 1604744 5714504 1602504 5696992 1602224 5696768 -1601784 5696704 1604744 5714504 1602504 5697056 1602168 5696744 -1602504 5696992 1602472 5696952 1602224 5696768 1602504 5697056 -1602224 5696768 1602168 5696744 1602504 5697056 1602472 5696952 -1602504 5696992 1602472 5696952 1602504 5697056 1604744 5714504 -1602472 5696952 1602352 5696840 1602224 5696768 1602504 5697056 -1602224 5696768 1602168 5696744 1602504 5697056 1602352 5696840 -1602472 5696952 1602424 5696896 1602352 5696840 1602504 5697056 -1602424 5696896 1602384 5696856 1602352 5696840 1602504 5697056 -1602352 5696840 1602224 5696768 1602504 5697056 1602424 5696896 -1602352 5696840 1602264 5696760 1602224 5696768 1602504 5697056 -1602472 5696952 1602424 5696896 1602504 5697056 1602504 5696992 -1602504 5696992 1602504 5697056 1604744 5714504 1604784 5714488 -1602504 5696992 1602472 5696952 1602504 5697056 1604784 5714488 -1602504 5697056 1601784 5696704 1604744 5714504 1604784 5714488 -1602504 5696992 1602504 5697056 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602504 5697056 -1602504 5696992 1602472 5696952 1602504 5697056 1608336 5713136 -1602504 5696992 1602504 5697056 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602504 5697056 -1602504 5696992 1602472 5696952 1602504 5697056 1608608 5713032 -1602504 5696992 1602504 5697056 1608608 5713032 1608648 5713040 -1602504 5696992 1602504 5697056 1608648 5713040 1611512 5715528 -1602504 5696992 1602472 5696952 1602504 5697056 1611512 5715528 -1602504 5696992 1602504 5697056 1611512 5715528 1663880 5646248 -1608648 5713040 1608720 5713120 1611512 5715528 1602504 5697056 -1602504 5697056 1608336 5713136 1608608 5713032 1608648 5713040 -1602504 5697056 1608608 5713032 1608648 5713040 1611512 5715528 -1602504 5697056 1604744 5714504 1604784 5714488 1608336 5713136 -1602504 5697056 1604784 5714488 1608336 5713136 1608608 5713032 -1604744 5714504 1602464 5697088 1601784 5696704 1604704 5714560 -1602504 5697056 1602464 5697088 1604744 5714504 1604784 5714488 -1602504 5697056 1601784 5696704 1602464 5697088 1604784 5714488 -1601784 5696704 1602464 5697088 1602504 5697056 1602168 5696744 -1602504 5697056 1602224 5696768 1602168 5696744 1602464 5697088 -1601784 5696704 1602464 5697088 1602168 5696744 1602096 5696712 -1602504 5697056 1602352 5696840 1602224 5696768 1602464 5697088 -1602224 5696768 1602168 5696744 1602464 5697088 1602352 5696840 -1602464 5697088 1604784 5714488 1602504 5697056 1602352 5696840 -1602168 5696744 1601784 5696704 1602464 5697088 1602224 5696768 -1602464 5697088 1601784 5696704 1604744 5714504 1604784 5714488 -1601784 5696704 1604744 5714504 1602464 5697088 1602168 5696744 -1602504 5697056 1602424 5696896 1602352 5696840 1602464 5697088 -1602352 5696840 1602224 5696768 1602464 5697088 1602424 5696896 -1602504 5697056 1602424 5696896 1602464 5697088 1604784 5714488 -1602504 5697056 1602472 5696952 1602424 5696896 1602464 5697088 -1602504 5697056 1602472 5696952 1602464 5697088 1604784 5714488 -1602424 5696896 1602384 5696856 1602352 5696840 1602464 5697088 -1602424 5696896 1602352 5696840 1602464 5697088 1602472 5696952 -1602352 5696840 1602264 5696760 1602224 5696768 1602464 5697088 -1602504 5697056 1602504 5696992 1602472 5696952 1602464 5697088 -1602504 5697056 1602504 5696992 1602464 5697088 1604784 5714488 -1602472 5696952 1602424 5696896 1602464 5697088 1602504 5696992 -1602504 5697056 1602464 5697088 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602464 5697088 -1602464 5697088 1604744 5714504 1604784 5714488 1608336 5713136 -1602504 5697056 1602504 5696992 1602464 5697088 1608336 5713136 -1602504 5697056 1602464 5697088 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602464 5697088 -1602504 5697056 1602504 5696992 1602464 5697088 1608608 5713032 -1602504 5697056 1602464 5697088 1608608 5713032 1608648 5713040 -1602464 5697088 1604784 5714488 1608336 5713136 1608608 5713032 -1604744 5714504 1602424 5697104 1601784 5696704 1604704 5714560 -1602464 5697088 1602424 5697104 1604744 5714504 1604784 5714488 -1602464 5697088 1602424 5697104 1604784 5714488 1608336 5713136 -1604784 5714488 1604840 5714480 1608336 5713136 1602424 5697104 -1602424 5697104 1604744 5714504 1604784 5714488 1608336 5713136 -1602464 5697088 1601784 5696704 1602424 5697104 1608336 5713136 -1601784 5696704 1602424 5697104 1602464 5697088 1602168 5696744 -1601784 5696704 1604744 5714504 1602424 5697104 1602168 5696744 -1601784 5696704 1602424 5697104 1602168 5696744 1602096 5696712 -1601784 5696704 1604744 5714504 1602424 5697104 1602096 5696712 -1601784 5696704 1602424 5697104 1602096 5696712 1601928 5696648 -1602464 5697088 1602224 5696768 1602168 5696744 1602424 5697104 -1602464 5697088 1602352 5696840 1602224 5696768 1602424 5697104 -1602464 5697088 1602424 5696896 1602352 5696840 1602424 5697104 -1602352 5696840 1602224 5696768 1602424 5697104 1602424 5696896 -1602224 5696768 1602168 5696744 1602424 5697104 1602352 5696840 -1602424 5697104 1608336 5713136 1602464 5697088 1602424 5696896 -1602424 5697104 1602224 5696768 1602168 5696744 1602096 5696712 -1602424 5697104 1601784 5696704 1604744 5714504 1604784 5714488 -1602168 5696744 1602128 5696712 1602096 5696712 1602424 5697104 -1602424 5696896 1602384 5696856 1602352 5696840 1602424 5697104 -1602464 5697088 1602472 5696952 1602424 5696896 1602424 5697104 -1602424 5696896 1602352 5696840 1602424 5697104 1602472 5696952 -1602464 5697088 1602472 5696952 1602424 5697104 1608336 5713136 -1602464 5697088 1602504 5696992 1602472 5696952 1602424 5697104 -1602352 5696840 1602264 5696760 1602224 5696768 1602424 5697104 -1602464 5697088 1602424 5697104 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1602424 5697104 -1602424 5697104 1604784 5714488 1608336 5713136 1608608 5713032 -1602464 5697088 1602472 5696952 1602424 5697104 1608608 5713032 -1602464 5697088 1602424 5697104 1608608 5713032 1602504 5697056 -1601784 5696704 1602352 5697112 1602424 5697104 1602096 5696712 -1601784 5696704 1604744 5714504 1602352 5697112 1602096 5696712 -1604744 5714504 1602352 5697112 1601784 5696704 1604704 5714560 -1602424 5697104 1602168 5696744 1602096 5696712 1602352 5697112 -1602096 5696712 1601784 5696704 1602352 5697112 1602168 5696744 -1601784 5696704 1602352 5697112 1602096 5696712 1601928 5696648 -1602424 5697104 1602224 5696768 1602168 5696744 1602352 5697112 -1602168 5696744 1602096 5696712 1602352 5697112 1602224 5696768 -1602424 5697104 1602352 5696840 1602224 5696768 1602352 5697112 -1602424 5697104 1602424 5696896 1602352 5696840 1602352 5697112 -1602424 5697104 1602472 5696952 1602424 5696896 1602352 5697112 -1602424 5696896 1602352 5696840 1602352 5697112 1602472 5696952 -1602352 5696840 1602224 5696768 1602352 5697112 1602424 5696896 -1602224 5696768 1602168 5696744 1602352 5697112 1602352 5696840 -1602424 5697104 1602352 5697112 1604744 5714504 1604784 5714488 -1602352 5697112 1601784 5696704 1604744 5714504 1604784 5714488 -1602424 5697104 1602352 5697112 1604784 5714488 1608336 5713136 -1602352 5697112 1604784 5714488 1602424 5697104 1602472 5696952 -1602168 5696744 1602128 5696712 1602096 5696712 1602352 5697112 -1602424 5696896 1602384 5696856 1602352 5696840 1602352 5697112 -1602424 5697104 1602464 5697088 1602472 5696952 1602352 5697112 -1602352 5696840 1602264 5696760 1602224 5696768 1602352 5697112 -1602352 5697112 1602312 5697088 1604744 5714504 1604784 5714488 -1601784 5696704 1602312 5697088 1602352 5697112 1602096 5696712 -1602352 5697112 1602168 5696744 1602096 5696712 1602312 5697088 -1602312 5697088 1604744 5714504 1602352 5697112 1602168 5696744 -1602096 5696712 1601784 5696704 1602312 5697088 1602168 5696744 -1601784 5696704 1604744 5714504 1602312 5697088 1602096 5696712 -1604744 5714504 1602312 5697088 1601784 5696704 1604704 5714560 -1602352 5697112 1602224 5696768 1602168 5696744 1602312 5697088 -1602168 5696744 1602096 5696712 1602312 5697088 1602224 5696768 -1602352 5697112 1602224 5696768 1602312 5697088 1604744 5714504 -1601784 5696704 1602312 5697088 1602096 5696712 1601928 5696648 -1602352 5697112 1602352 5696840 1602224 5696768 1602312 5697088 -1602352 5697112 1602352 5696840 1602312 5697088 1604744 5714504 -1602224 5696768 1602168 5696744 1602312 5697088 1602352 5696840 -1602352 5697112 1602424 5696896 1602352 5696840 1602312 5697088 -1602352 5697112 1602424 5696896 1602312 5697088 1604744 5714504 -1602352 5697112 1602472 5696952 1602424 5696896 1602312 5697088 -1602352 5697112 1602472 5696952 1602312 5697088 1604744 5714504 -1602352 5697112 1602424 5697104 1602472 5696952 1602312 5697088 -1602352 5697112 1602424 5697104 1602312 5697088 1604744 5714504 -1602472 5696952 1602424 5696896 1602312 5697088 1602424 5697104 -1602424 5696896 1602352 5696840 1602312 5697088 1602472 5696952 -1602352 5696840 1602224 5696768 1602312 5697088 1602424 5696896 -1602168 5696744 1602128 5696712 1602096 5696712 1602312 5697088 -1602424 5696896 1602384 5696856 1602352 5696840 1602312 5697088 -1602424 5696896 1602384 5696856 1602312 5697088 1602472 5696952 -1602352 5696840 1602224 5696768 1602312 5697088 1602384 5696856 -1602424 5697104 1602464 5697088 1602472 5696952 1602312 5697088 -1602352 5696840 1602264 5696760 1602224 5696768 1602312 5697088 -1602312 5697088 1602248 5697056 1604744 5714504 1602352 5697112 -1604744 5714504 1604784 5714488 1602352 5697112 1602248 5697056 -1602312 5697088 1601784 5696704 1602248 5697056 1602352 5697112 -1601784 5696704 1602248 5697056 1602312 5697088 1602096 5696712 -1602312 5697088 1602168 5696744 1602096 5696712 1602248 5697056 -1602312 5697088 1602224 5696768 1602168 5696744 1602248 5697056 -1602168 5696744 1602096 5696712 1602248 5697056 1602224 5696768 -1602248 5697056 1602352 5697112 1602312 5697088 1602224 5696768 -1602096 5696712 1601784 5696704 1602248 5697056 1602168 5696744 -1602248 5697056 1601784 5696704 1604744 5714504 1602352 5697112 -1601784 5696704 1604744 5714504 1602248 5697056 1602096 5696712 -1604744 5714504 1602248 5697056 1601784 5696704 1604704 5714560 -1604744 5714504 1602352 5697112 1602248 5697056 1604704 5714560 -1602248 5697056 1602096 5696712 1601784 5696704 1604704 5714560 -1601784 5696704 1604696 5714600 1604704 5714560 1602248 5697056 -1602312 5697088 1602352 5696840 1602224 5696768 1602248 5697056 -1602224 5696768 1602168 5696744 1602248 5697056 1602352 5696840 -1602312 5697088 1602352 5696840 1602248 5697056 1602352 5697112 -1601784 5696704 1602248 5697056 1602096 5696712 1601928 5696648 -1602312 5697088 1602384 5696856 1602352 5696840 1602248 5697056 -1602312 5697088 1602384 5696856 1602248 5697056 1602352 5697112 -1602352 5696840 1602224 5696768 1602248 5697056 1602384 5696856 -1602168 5696744 1602128 5696712 1602096 5696712 1602248 5697056 -1602312 5697088 1602424 5696896 1602384 5696856 1602248 5697056 -1602312 5697088 1602424 5696896 1602248 5697056 1602352 5697112 -1602312 5697088 1602472 5696952 1602424 5696896 1602248 5697056 -1602384 5696856 1602352 5696840 1602248 5697056 1602424 5696896 -1602352 5696840 1602264 5696760 1602224 5696768 1602248 5697056 -1601784 5696704 1602200 5697056 1602248 5697056 1602096 5696712 -1602248 5697056 1602168 5696744 1602096 5696712 1602200 5697056 -1602248 5697056 1602224 5696768 1602168 5696744 1602200 5697056 -1602248 5697056 1602352 5696840 1602224 5696768 1602200 5697056 -1602168 5696744 1602096 5696712 1602200 5697056 1602224 5696768 -1602200 5697056 1604704 5714560 1602248 5697056 1602224 5696768 -1602096 5696712 1601784 5696704 1602200 5697056 1602168 5696744 -1601784 5696704 1604704 5714560 1602200 5697056 1602096 5696712 -1602248 5697056 1602200 5697056 1604704 5714560 1604744 5714504 -1602248 5697056 1602200 5697056 1604744 5714504 1602352 5697112 -1604744 5714504 1604784 5714488 1602352 5697112 1602200 5697056 -1602248 5697056 1602200 5697056 1602352 5697112 1602312 5697088 -1602200 5697056 1604744 5714504 1602352 5697112 1602312 5697088 -1602248 5697056 1602224 5696768 1602200 5697056 1602312 5697088 -1602200 5697056 1601784 5696704 1604704 5714560 1604744 5714504 -1602200 5697056 1604704 5714560 1604744 5714504 1602352 5697112 -1604704 5714560 1602200 5697056 1601784 5696704 1604696 5714600 -1601784 5696704 1602200 5697056 1602096 5696712 1601928 5696648 -1602168 5696744 1602128 5696712 1602096 5696712 1602200 5697056 -1602200 5697056 1602152 5697040 1604704 5714560 1604744 5714504 -1602200 5697056 1601784 5696704 1602152 5697040 1604744 5714504 -1601784 5696704 1602152 5697040 1602200 5697056 1602096 5696712 -1602200 5697056 1602168 5696744 1602096 5696712 1602152 5697040 -1602200 5697056 1602224 5696768 1602168 5696744 1602152 5697040 -1602200 5697056 1602248 5697056 1602224 5696768 1602152 5697040 -1602168 5696744 1602096 5696712 1602152 5697040 1602224 5696768 -1602152 5697040 1604744 5714504 1602200 5697056 1602224 5696768 -1602096 5696712 1601784 5696704 1602152 5697040 1602168 5696744 -1602200 5697056 1602152 5697040 1604744 5714504 1602352 5697112 -1604744 5714504 1604784 5714488 1602352 5697112 1602152 5697040 -1602200 5697056 1602152 5697040 1602352 5697112 1602312 5697088 -1602152 5697040 1604704 5714560 1604744 5714504 1602352 5697112 -1602200 5697056 1602224 5696768 1602152 5697040 1602352 5697112 -1604704 5714560 1602152 5697040 1601784 5696704 1604696 5714600 -1601784 5696704 1602152 5697040 1602096 5696712 1601928 5696648 -1602168 5696744 1602128 5696712 1602096 5696712 1602152 5697040 -1602152 5697040 1601784 5696704 1604704 5714560 1604744 5714504 -1601784 5696704 1604704 5714560 1602152 5697040 1602096 5696712 -1602096 5696712 1602120 5697008 1602152 5697040 1602168 5696744 -1602152 5697040 1602224 5696768 1602168 5696744 1602120 5697008 -1602152 5697040 1602200 5697056 1602224 5696768 1602120 5697008 -1602200 5697056 1602248 5697056 1602224 5696768 1602120 5697008 -1602248 5697056 1602352 5696840 1602224 5696768 1602120 5697008 -1602248 5697056 1602352 5696840 1602120 5697008 1602200 5697056 -1602200 5697056 1602248 5697056 1602120 5697008 1602152 5697040 -1602224 5696768 1602168 5696744 1602120 5697008 1602352 5696840 -1602168 5696744 1602096 5696712 1602120 5697008 1602224 5696768 -1602248 5697056 1602384 5696856 1602352 5696840 1602120 5697008 -1601784 5696704 1602120 5697008 1602096 5696712 1601928 5696648 -1601784 5696704 1602120 5697008 1601928 5696648 1601848 5696640 -1602096 5696712 1601984 5696648 1601928 5696648 1602120 5697008 -1602096 5696712 1602120 5697008 1602168 5696744 1602128 5696712 -1602120 5697008 1601784 5696704 1602152 5697040 1602200 5697056 -1602152 5697040 1602120 5697008 1601784 5696704 1604704 5714560 -1601784 5696704 1602152 5697040 1602120 5697008 1601928 5696648 -1602096 5696712 1601928 5696648 1602120 5697008 1602168 5696744 -1602352 5696840 1602264 5696760 1602224 5696768 1602120 5697008 -1604704 5714560 1602072 5696992 1601784 5696704 1604696 5714600 -1602152 5697040 1602072 5696992 1604704 5714560 1604744 5714504 -1602152 5697040 1602072 5696992 1604744 5714504 1602352 5697112 -1601784 5696704 1602072 5696992 1602152 5697040 1602120 5697008 -1601784 5696704 1604704 5714560 1602072 5696992 1602120 5697008 -1601784 5696704 1602072 5696992 1602120 5697008 1601928 5696648 -1601784 5696704 1604704 5714560 1602072 5696992 1601928 5696648 -1601784 5696704 1602072 5696992 1601928 5696648 1601848 5696640 -1602120 5697008 1602096 5696712 1601928 5696648 1602072 5696992 -1602096 5696712 1601984 5696648 1601928 5696648 1602072 5696992 -1602072 5696992 1602152 5697040 1602120 5697008 1602096 5696712 -1601928 5696648 1601784 5696704 1602072 5696992 1602096 5696712 -1602152 5697040 1602120 5697008 1602072 5696992 1604744 5714504 -1602120 5697008 1602168 5696744 1602096 5696712 1602072 5696992 -1602120 5697008 1602224 5696768 1602168 5696744 1602072 5696992 -1602096 5696712 1601928 5696648 1602072 5696992 1602168 5696744 -1602168 5696744 1602128 5696712 1602096 5696712 1602072 5696992 -1602120 5697008 1602168 5696744 1602072 5696992 1602152 5697040 -1602072 5696992 1601784 5696704 1604704 5714560 1604744 5714504 -1601784 5696704 1602008 5696944 1602072 5696992 1601928 5696648 -1602008 5696944 1604704 5714560 1602072 5696992 1601928 5696648 -1601784 5696704 1604704 5714560 1602008 5696944 1601928 5696648 -1604704 5714560 1602008 5696944 1601784 5696704 1604696 5714600 -1601784 5696704 1602008 5696944 1601928 5696648 1601848 5696640 -1602072 5696992 1602096 5696712 1601928 5696648 1602008 5696944 -1602072 5696992 1602096 5696712 1602008 5696944 1604704 5714560 -1601928 5696648 1601784 5696704 1602008 5696944 1602096 5696712 -1602096 5696712 1601984 5696648 1601928 5696648 1602008 5696944 -1601928 5696648 1601784 5696704 1602008 5696944 1601984 5696648 -1602072 5696992 1602168 5696744 1602096 5696712 1602008 5696944 -1602072 5696992 1602168 5696744 1602008 5696944 1604704 5714560 -1602168 5696744 1602128 5696712 1602096 5696712 1602008 5696944 -1602096 5696712 1602064 5696680 1601984 5696648 1602008 5696944 -1601984 5696648 1601928 5696648 1602008 5696944 1602064 5696680 -1602096 5696712 1602064 5696680 1602008 5696944 1602168 5696744 -1602072 5696992 1602120 5697008 1602168 5696744 1602008 5696944 -1602072 5696992 1602008 5696944 1604704 5714560 1604744 5714504 -1602072 5696992 1602168 5696744 1602008 5696944 1604744 5714504 -1602008 5696944 1601784 5696704 1604704 5714560 1604744 5714504 -1602072 5696992 1602008 5696944 1604744 5714504 1602152 5697040 -1602008 5696944 1601976 5696912 1604704 5714560 1604744 5714504 -1601784 5696704 1601976 5696912 1602008 5696944 1601928 5696648 -1602008 5696944 1601984 5696648 1601928 5696648 1601976 5696912 -1601928 5696648 1601784 5696704 1601976 5696912 1601984 5696648 -1601976 5696912 1604704 5714560 1602008 5696944 1601984 5696648 -1601784 5696704 1604704 5714560 1601976 5696912 1601928 5696648 -1604704 5714560 1601976 5696912 1601784 5696704 1604696 5714600 -1601784 5696704 1601976 5696912 1601928 5696648 1601848 5696640 -1602008 5696944 1602064 5696680 1601984 5696648 1601976 5696912 -1601984 5696648 1601928 5696648 1601976 5696912 1602064 5696680 -1602008 5696944 1602064 5696680 1601976 5696912 1604704 5714560 -1602008 5696944 1602096 5696712 1602064 5696680 1601976 5696912 -1602008 5696944 1602096 5696712 1601976 5696912 1604704 5714560 -1602064 5696680 1601984 5696648 1601976 5696912 1602096 5696712 -1602008 5696944 1602168 5696744 1602096 5696712 1601976 5696912 -1601976 5696912 1601928 5696888 1604704 5714560 1602008 5696944 -1604704 5714560 1604744 5714504 1602008 5696944 1601928 5696888 -1604744 5714504 1602072 5696992 1602008 5696944 1601928 5696888 -1604744 5714504 1602072 5696992 1601928 5696888 1604704 5714560 -1602008 5696944 1601976 5696912 1601928 5696888 1602072 5696992 -1601976 5696912 1601784 5696704 1601928 5696888 1602008 5696944 -1601784 5696704 1601928 5696888 1601976 5696912 1601928 5696648 -1601976 5696912 1601984 5696648 1601928 5696648 1601928 5696888 -1601976 5696912 1602064 5696680 1601984 5696648 1601928 5696888 -1601984 5696648 1601928 5696648 1601928 5696888 1602064 5696680 -1601928 5696888 1602008 5696944 1601976 5696912 1602064 5696680 -1601928 5696648 1601784 5696704 1601928 5696888 1601984 5696648 -1601928 5696888 1601784 5696704 1604704 5714560 1604744 5714504 -1604704 5714560 1601928 5696888 1601784 5696704 1604696 5714600 -1601784 5696704 1601928 5696888 1601928 5696648 1601848 5696640 -1601976 5696912 1602096 5696712 1602064 5696680 1601928 5696888 -1602064 5696680 1601984 5696648 1601928 5696888 1602096 5696712 -1601976 5696912 1602096 5696712 1601928 5696888 1602008 5696944 -1601784 5696704 1604704 5714560 1601928 5696888 1601928 5696648 -1601976 5696912 1602008 5696944 1602096 5696712 1601928 5696888 -1604744 5714504 1602152 5697040 1602072 5696992 1601928 5696888 -1601928 5696888 1601864 5696864 1604704 5714560 1604744 5714504 -1601928 5696888 1601864 5696864 1604744 5714504 1602072 5696992 -1601928 5696888 1601864 5696864 1602072 5696992 1602008 5696944 -1601864 5696864 1604744 5714504 1602072 5696992 1602008 5696944 -1601928 5696888 1601864 5696864 1602008 5696944 1601976 5696912 -1601864 5696864 1604704 5714560 1604744 5714504 1602072 5696992 -1604704 5714560 1601864 5696864 1601784 5696704 1604696 5714600 -1601784 5696704 1599875 5760125 1604696 5714600 1601864 5696864 -1601928 5696888 1601784 5696704 1601864 5696864 1602008 5696944 -1601784 5696704 1601864 5696864 1601928 5696888 1601928 5696648 -1601928 5696888 1601984 5696648 1601928 5696648 1601864 5696864 -1601784 5696704 1601864 5696864 1601928 5696648 1601848 5696640 -1601864 5696864 1602008 5696944 1601928 5696888 1601928 5696648 -1601864 5696864 1604696 5714600 1604704 5714560 1604744 5714504 -1601864 5696864 1601928 5696648 1601784 5696704 1604696 5714600 -1604744 5714504 1602152 5697040 1602072 5696992 1601864 5696864 -1604696 5714600 1601808 5696808 1601784 5696704 1599875 5760125 -1601784 5696704 1601760 5696064 1599875 5760125 1601808 5696808 -1601864 5696864 1601808 5696808 1604696 5714600 1604704 5714560 -1604696 5714600 1601808 5696808 1599875 5760125 1604712 5714680 -1601864 5696864 1601808 5696808 1604704 5714560 1604744 5714504 -1601864 5696864 1601784 5696704 1601808 5696808 1604704 5714560 -1601784 5696704 1601808 5696808 1601864 5696864 1601928 5696648 -1601784 5696704 1601808 5696808 1601928 5696648 1601848 5696640 -1601864 5696864 1601928 5696888 1601928 5696648 1601808 5696808 -1601808 5696808 1604704 5714560 1601864 5696864 1601928 5696648 -1601808 5696808 1601928 5696648 1601784 5696704 1599875 5760125 -1604696 5714600 1604704 5714560 1601808 5696808 1599875 5760125 -1601808 5696808 1601784 5696736 1599875 5760125 1604696 5714600 -1599875 5760125 1601784 5696736 1601784 5696704 1601760 5696064 -1599875 5760125 1601784 5696736 1601760 5696064 1601760 5696040 -1601784 5696704 1601784 5696088 1601760 5696064 1601784 5696736 -1599875 5760125 1604712 5714680 1604696 5714600 1601784 5696736 -1601808 5696808 1601784 5696704 1601784 5696736 1604696 5714600 -1601784 5696704 1601784 5696736 1601808 5696808 1601928 5696648 -1601784 5696704 1601784 5696736 1601928 5696648 1601848 5696640 -1601928 5696648 1601896 5696632 1601848 5696640 1601784 5696736 -1601808 5696808 1601864 5696864 1601928 5696648 1601784 5696736 -1601784 5696736 1604696 5714600 1601808 5696808 1601928 5696648 -1601784 5696736 1601808 5696808 1601928 5696648 1601848 5696640 -1601784 5696736 1601760 5696064 1599875 5760125 1604696 5714600 -1601808 5696808 1601784 5696736 1604696 5714600 1604704 5714560 -1601784 5696736 1601848 5696640 1601784 5696704 1601760 5696064 -1602504 5696992 1610408 5708376 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1610408 5708376 -1611512 5715528 1610408 5708376 1602504 5696992 1602504 5697056 -1611512 5715528 1610408 5708376 1602504 5697056 1608648 5713040 -1610408 5708376 1602504 5696992 1602504 5697056 1608648 5713040 -1611512 5715528 1610408 5708376 1608648 5713040 1608720 5713120 -1610408 5708376 1602504 5697056 1608648 5713040 1608720 5713120 -1663880 5646248 1610408 5708376 1611512 5715528 1611528 5715552 -1663880 5646248 1610408 5708376 1611528 5715552 1663944 5646256 -1610408 5708376 1611512 5715528 1611528 5715552 1663944 5646256 -1611528 5715552 1615632 5735416 1663944 5646256 1610408 5708376 -1602504 5696992 1602504 5697056 1610408 5708376 1602224 5696056 -1610408 5708376 1663944 5646256 1663880 5646248 1602224 5696056 -1611512 5715528 1611528 5715552 1610408 5708376 1608720 5713120 -1602504 5697056 1608608 5713032 1608648 5713040 1610408 5708376 -1608648 5713040 1608720 5713120 1610408 5708376 1608608 5713032 -1602504 5697056 1608608 5713032 1610408 5708376 1602504 5696992 -1602504 5697056 1602464 5697088 1608608 5713032 1610408 5708376 -1602504 5697056 1602464 5697088 1610408 5708376 1602504 5696992 -1608608 5713032 1608648 5713040 1610408 5708376 1602464 5697088 -1602504 5696992 1610408 5708376 1602224 5696056 1602224 5696096 -1611512 5715528 1610408 5708376 1608720 5713120 1611464 5715504 -1610408 5708376 1608648 5713040 1608720 5713120 1611464 5715504 -1611512 5715528 1611528 5715552 1610408 5708376 1611464 5715504 -1608720 5713120 1608760 5713200 1611464 5715504 1610408 5708376 -1608760 5713200 1611352 5715472 1611464 5715504 1610408 5708376 -1608760 5713200 1611312 5715472 1611352 5715472 1610408 5708376 -1608720 5713120 1608760 5713200 1610408 5708376 1608648 5713040 -1611464 5715504 1611512 5715528 1610408 5708376 1611352 5715472 -1608760 5713200 1611352 5715472 1610408 5708376 1608720 5713120 -1602464 5697088 1602424 5697104 1608608 5713032 1610408 5708376 -1602464 5697088 1602424 5697104 1610408 5708376 1602504 5697056 -1608608 5713032 1608648 5713040 1610408 5708376 1602424 5697104 -1602424 5697104 1608336 5713136 1608608 5713032 1610408 5708376 -1608336 5713136 1608576 5713048 1608608 5713032 1610408 5708376 -1602424 5697104 1604784 5714488 1608336 5713136 1610408 5708376 -1604784 5714488 1604840 5714480 1608336 5713136 1610408 5708376 -1604840 5714480 1608280 5713176 1608336 5713136 1610408 5708376 -1604840 5714480 1608240 5713248 1608280 5713176 1610408 5708376 -1604840 5714480 1608280 5713176 1610408 5708376 1604784 5714488 -1604784 5714488 1604840 5714480 1610408 5708376 1602424 5697104 -1602424 5697104 1602352 5697112 1604784 5714488 1610408 5708376 -1604784 5714488 1604840 5714480 1610408 5708376 1602352 5697112 -1602352 5697112 1604744 5714504 1604784 5714488 1610408 5708376 -1608608 5713032 1608648 5713040 1610408 5708376 1608336 5713136 -1608336 5713136 1608608 5713032 1610408 5708376 1608280 5713176 -1602424 5697104 1602352 5697112 1610408 5708376 1602464 5697088 -1602224 5696056 1610440 5708328 1663880 5646248 1602200 5696008 -1610408 5708376 1610440 5708328 1602224 5696056 1602504 5696992 -1610408 5708376 1610440 5708328 1602504 5696992 1602504 5697056 -1610440 5708328 1602224 5696056 1602504 5696992 1602504 5697056 -1610408 5708376 1610440 5708328 1602504 5697056 1602464 5697088 -1610440 5708328 1602504 5696992 1602504 5697056 1602464 5697088 -1663880 5646248 1610440 5708328 1610408 5708376 1663944 5646256 -1610408 5708376 1611528 5715552 1663944 5646256 1610440 5708328 -1610408 5708376 1611512 5715528 1611528 5715552 1610440 5708328 -1611528 5715552 1663944 5646256 1610440 5708328 1611512 5715528 -1611528 5715552 1615632 5735416 1663944 5646256 1610440 5708328 -1663944 5646256 1663880 5646248 1610440 5708328 1611528 5715552 -1610408 5708376 1611512 5715528 1610440 5708328 1602464 5697088 -1610408 5708376 1611464 5715504 1611512 5715528 1610440 5708328 -1610440 5708328 1663880 5646248 1602224 5696056 1602504 5696992 -1663880 5646248 1602224 5696056 1610440 5708328 1663944 5646256 -1610408 5708376 1610440 5708328 1602464 5697088 1602424 5697104 -1610440 5708328 1602504 5697056 1602464 5697088 1602424 5697104 -1610408 5708376 1611512 5715528 1610440 5708328 1602424 5697104 -1602224 5696056 1602224 5696096 1602504 5696992 1610440 5708328 -1610408 5708376 1610440 5708328 1602424 5697104 1602352 5697112 -1611528 5715552 1610448 5708336 1610440 5708328 1611512 5715528 -1610440 5708328 1610408 5708376 1611512 5715528 1610448 5708336 -1611512 5715528 1611528 5715552 1610448 5708336 1610408 5708376 -1663944 5646256 1610448 5708336 1611528 5715552 1615632 5735416 -1610440 5708328 1610448 5708336 1663944 5646256 1663880 5646248 -1610408 5708376 1611464 5715504 1611512 5715528 1610448 5708336 -1610448 5708336 1663880 5646248 1610440 5708328 1610408 5708376 -1610440 5708328 1610448 5708336 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1610448 5708336 -1610448 5708336 1663944 5646256 1663880 5646248 1602224 5696056 -1610440 5708328 1610448 5708336 1602224 5696056 1602504 5696992 -1610440 5708328 1610408 5708376 1610448 5708336 1602224 5696056 -1610448 5708336 1611528 5715552 1663944 5646256 1663880 5646248 -1611528 5715552 1663944 5646256 1610448 5708336 1611512 5715528 -1663944 5646256 1610472 5708336 1611528 5715552 1615632 5735416 -1610448 5708336 1610472 5708336 1663944 5646256 1663880 5646248 -1610448 5708336 1610472 5708336 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1610472 5708336 -1610448 5708336 1610472 5708336 1602224 5696056 1610440 5708328 -1610472 5708336 1663880 5646248 1602224 5696056 1610440 5708328 -1602224 5696056 1602504 5696992 1610440 5708328 1610472 5708336 -1602504 5696992 1602504 5697056 1610440 5708328 1610472 5708336 -1602504 5697056 1602464 5697088 1610440 5708328 1610472 5708336 -1602224 5696056 1602504 5696992 1610472 5708336 1663880 5646248 -1602504 5696992 1602504 5697056 1610472 5708336 1602224 5696056 -1610440 5708328 1610448 5708336 1610472 5708336 1602504 5697056 -1610472 5708336 1663944 5646256 1663880 5646248 1602224 5696056 -1610448 5708336 1611528 5715552 1610472 5708336 1610440 5708328 -1611528 5715552 1610472 5708336 1610448 5708336 1611512 5715528 -1610448 5708336 1610408 5708376 1611512 5715528 1610472 5708336 -1610448 5708336 1610440 5708328 1610408 5708376 1610472 5708336 -1610408 5708376 1611464 5715504 1611512 5715528 1610472 5708336 -1610408 5708376 1611464 5715504 1610472 5708336 1610448 5708336 -1610472 5708336 1610440 5708328 1610448 5708336 1610408 5708376 -1611512 5715528 1611528 5715552 1610472 5708336 1611464 5715504 -1610472 5708336 1611528 5715552 1663944 5646256 1663880 5646248 -1611528 5715552 1663944 5646256 1610472 5708336 1611512 5715528 -1602224 5696056 1602224 5696096 1602504 5696992 1610472 5708336 -1610408 5708376 1611352 5715472 1611464 5715504 1610472 5708336 -1663944 5646256 1610512 5708312 1611528 5715552 1615632 5735416 -1610472 5708336 1610512 5708312 1663944 5646256 1663880 5646248 -1610472 5708336 1610512 5708312 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1610512 5708312 -1610472 5708336 1610512 5708312 1602224 5696056 1602504 5696992 -1610472 5708336 1610512 5708312 1602504 5696992 1602504 5697056 -1610472 5708336 1610512 5708312 1602504 5697056 1610440 5708328 -1602504 5697056 1602464 5697088 1610440 5708328 1610512 5708312 -1610512 5708312 1602224 5696056 1602504 5696992 1602504 5697056 -1610512 5708312 1602504 5696992 1602504 5697056 1610440 5708328 -1610472 5708336 1610512 5708312 1610440 5708328 1610448 5708336 -1610512 5708312 1663880 5646248 1602224 5696056 1602504 5696992 -1610512 5708312 1663944 5646256 1663880 5646248 1602224 5696056 -1610472 5708336 1611528 5715552 1610512 5708312 1610440 5708328 -1611528 5715552 1610512 5708312 1610472 5708336 1611512 5715528 -1611528 5715552 1663944 5646256 1610512 5708312 1611512 5715528 -1610472 5708336 1611464 5715504 1611512 5715528 1610512 5708312 -1610472 5708336 1610408 5708376 1611464 5715504 1610512 5708312 -1610472 5708336 1610448 5708336 1610408 5708376 1610512 5708312 -1611464 5715504 1611512 5715528 1610512 5708312 1610408 5708376 -1610512 5708312 1610440 5708328 1610472 5708336 1610408 5708376 -1611512 5715528 1611528 5715552 1610512 5708312 1611464 5715504 -1610512 5708312 1611528 5715552 1663944 5646256 1663880 5646248 -1602224 5696056 1602224 5696096 1602504 5696992 1610512 5708312 -1610408 5708376 1611352 5715472 1611464 5715504 1610512 5708312 -1611528 5715552 1610552 5708288 1610512 5708312 1611512 5715528 -1610552 5708288 1663944 5646256 1610512 5708312 1611512 5715528 -1611528 5715552 1663944 5646256 1610552 5708288 1611512 5715528 -1663944 5646256 1610552 5708288 1611528 5715552 1615632 5735416 -1610512 5708312 1611464 5715504 1611512 5715528 1610552 5708288 -1610512 5708312 1611464 5715504 1610552 5708288 1663944 5646256 -1611512 5715528 1611528 5715552 1610552 5708288 1611464 5715504 -1610512 5708312 1610408 5708376 1611464 5715504 1610552 5708288 -1610512 5708312 1610552 5708288 1663944 5646256 1663880 5646248 -1610512 5708312 1611464 5715504 1610552 5708288 1663880 5646248 -1610552 5708288 1611528 5715552 1663944 5646256 1663880 5646248 -1610512 5708312 1610552 5708288 1663880 5646248 1602224 5696056 -1610512 5708312 1611464 5715504 1610552 5708288 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1610552 5708288 -1610512 5708312 1610552 5708288 1602224 5696056 1602504 5696992 -1610512 5708312 1611464 5715504 1610552 5708288 1602504 5696992 -1610512 5708312 1610552 5708288 1602504 5696992 1602504 5697056 -1610512 5708312 1611464 5715504 1610552 5708288 1602504 5697056 -1610512 5708312 1610552 5708288 1602504 5697056 1610440 5708328 -1610512 5708312 1611464 5715504 1610552 5708288 1610440 5708328 -1610512 5708312 1610552 5708288 1610440 5708328 1610472 5708336 -1602504 5697056 1602464 5697088 1610440 5708328 1610552 5708288 -1610552 5708288 1602504 5696992 1602504 5697056 1610440 5708328 -1610552 5708288 1602224 5696056 1602504 5696992 1602504 5697056 -1610552 5708288 1663880 5646248 1602224 5696056 1602504 5696992 -1610552 5708288 1663944 5646256 1663880 5646248 1602224 5696056 -1602224 5696056 1602224 5696096 1602504 5696992 1610552 5708288 -1610552 5708288 1610640 5708296 1663944 5646256 1663880 5646248 -1610552 5708288 1611528 5715552 1610640 5708296 1663880 5646248 -1611528 5715552 1610640 5708296 1610552 5708288 1611512 5715528 -1610552 5708288 1611464 5715504 1611512 5715528 1610640 5708296 -1611528 5715552 1663944 5646256 1610640 5708296 1611512 5715528 -1610640 5708296 1663880 5646248 1610552 5708288 1611464 5715504 -1611512 5715528 1611528 5715552 1610640 5708296 1611464 5715504 -1610640 5708296 1611528 5715552 1663944 5646256 1663880 5646248 -1663944 5646256 1610640 5708296 1611528 5715552 1615632 5735416 -1610552 5708288 1610512 5708312 1611464 5715504 1610640 5708296 -1611464 5715504 1611512 5715528 1610640 5708296 1610512 5708312 -1610552 5708288 1610512 5708312 1610640 5708296 1663880 5646248 -1610512 5708312 1610408 5708376 1611464 5715504 1610640 5708296 -1611464 5715504 1611512 5715528 1610640 5708296 1610408 5708376 -1610512 5708312 1610472 5708336 1610408 5708376 1610640 5708296 -1610472 5708336 1610448 5708336 1610408 5708376 1610640 5708296 -1610408 5708376 1611464 5715504 1610640 5708296 1610472 5708336 -1610512 5708312 1610472 5708336 1610640 5708296 1610552 5708288 -1610552 5708288 1610640 5708296 1663880 5646248 1602224 5696056 -1610640 5708296 1663944 5646256 1663880 5646248 1602224 5696056 -1610552 5708288 1610512 5708312 1610640 5708296 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1610640 5708296 -1610552 5708288 1610640 5708296 1602224 5696056 1602504 5696992 -1610552 5708288 1610512 5708312 1610640 5708296 1602504 5696992 -1610552 5708288 1610640 5708296 1602504 5696992 1602504 5697056 -1610552 5708288 1610512 5708312 1610640 5708296 1602504 5697056 -1610552 5708288 1610640 5708296 1602504 5697056 1610440 5708328 -1610640 5708296 1602224 5696056 1602504 5696992 1602504 5697056 -1610640 5708296 1663880 5646248 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1610640 5708296 -1610408 5708376 1611352 5715472 1611464 5715504 1610640 5708296 -1611464 5715504 1611512 5715528 1610640 5708296 1611352 5715472 -1610408 5708376 1608760 5713200 1611352 5715472 1610640 5708296 -1608760 5713200 1611312 5715472 1611352 5715472 1610640 5708296 -1610408 5708376 1608760 5713200 1610640 5708296 1610472 5708336 -1611352 5715472 1611464 5715504 1610640 5708296 1608760 5713200 -1610408 5708376 1608720 5713120 1608760 5713200 1610640 5708296 -1608760 5713200 1611352 5715472 1610640 5708296 1608720 5713120 -1610408 5708376 1608648 5713040 1608720 5713120 1610640 5708296 -1610408 5708376 1608720 5713120 1610640 5708296 1610472 5708336 -1611528 5715552 1610680 5708312 1610640 5708296 1611512 5715528 -1610680 5708312 1663944 5646256 1610640 5708296 1611512 5715528 -1610640 5708296 1611464 5715504 1611512 5715528 1610680 5708312 -1610640 5708296 1611352 5715472 1611464 5715504 1610680 5708312 -1610640 5708296 1611352 5715472 1610680 5708312 1663944 5646256 -1611512 5715528 1611528 5715552 1610680 5708312 1611464 5715504 -1611464 5715504 1611512 5715528 1610680 5708312 1611352 5715472 -1610640 5708296 1610680 5708312 1663944 5646256 1663880 5646248 -1610640 5708296 1610680 5708312 1663880 5646248 1602224 5696056 -1610640 5708296 1611352 5715472 1610680 5708312 1602224 5696056 -1610680 5708312 1611528 5715552 1663944 5646256 1663880 5646248 -1610680 5708312 1663944 5646256 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1610680 5708312 -1663944 5646256 1610680 5708312 1611528 5715552 1615632 5735416 -1610640 5708296 1610680 5708312 1602224 5696056 1602504 5696992 -1610680 5708312 1663880 5646248 1602224 5696056 1602504 5696992 -1610640 5708296 1611352 5715472 1610680 5708312 1602504 5696992 -1610640 5708296 1610680 5708312 1602504 5696992 1602504 5697056 -1602224 5696056 1602224 5696096 1602504 5696992 1610680 5708312 -1610640 5708296 1608760 5713200 1611352 5715472 1610680 5708312 -1611352 5715472 1611464 5715504 1610680 5708312 1608760 5713200 -1610640 5708296 1608760 5713200 1610680 5708312 1602504 5696992 -1610640 5708296 1608720 5713120 1608760 5713200 1610680 5708312 -1610640 5708296 1608720 5713120 1610680 5708312 1602504 5696992 -1608760 5713200 1611312 5715472 1611352 5715472 1610680 5708312 -1608760 5713200 1611352 5715472 1610680 5708312 1608720 5713120 -1611528 5715552 1663944 5646256 1610680 5708312 1611512 5715528 -1610640 5708296 1610408 5708376 1608720 5713120 1610680 5708312 -1610640 5708296 1610408 5708376 1610680 5708312 1602504 5696992 -1608720 5713120 1608760 5713200 1610680 5708312 1610408 5708376 -1610408 5708376 1608648 5713040 1608720 5713120 1610680 5708312 -1610640 5708296 1610472 5708336 1610408 5708376 1610680 5708312 -1610640 5708296 1610472 5708336 1610680 5708312 1602504 5696992 -1610472 5708336 1610448 5708336 1610408 5708376 1610680 5708312 -1610640 5708296 1610512 5708312 1610472 5708336 1610680 5708312 -1610640 5708296 1610512 5708312 1610680 5708312 1602504 5696992 -1610472 5708336 1610408 5708376 1610680 5708312 1610512 5708312 -1610640 5708296 1610552 5708288 1610512 5708312 1610680 5708312 -1610408 5708376 1608720 5713120 1610680 5708312 1610472 5708336 -1610680 5708312 1610712 5708360 1663944 5646256 1663880 5646248 -1610680 5708312 1610712 5708360 1663880 5646248 1602224 5696056 -1663944 5646256 1610712 5708360 1611528 5715552 1615632 5735416 -1610680 5708312 1611528 5715552 1610712 5708360 1663880 5646248 -1611528 5715552 1610712 5708360 1610680 5708312 1611512 5715528 -1610680 5708312 1611464 5715504 1611512 5715528 1610712 5708360 -1610680 5708312 1611352 5715472 1611464 5715504 1610712 5708360 -1610680 5708312 1608760 5713200 1611352 5715472 1610712 5708360 -1611464 5715504 1611512 5715528 1610712 5708360 1611352 5715472 -1611352 5715472 1611464 5715504 1610712 5708360 1608760 5713200 -1608760 5713200 1611312 5715472 1611352 5715472 1610712 5708360 -1610680 5708312 1608720 5713120 1608760 5713200 1610712 5708360 -1608760 5713200 1611352 5715472 1610712 5708360 1608720 5713120 -1610680 5708312 1610408 5708376 1608720 5713120 1610712 5708360 -1610408 5708376 1608648 5713040 1608720 5713120 1610712 5708360 -1610408 5708376 1608648 5713040 1610712 5708360 1610680 5708312 -1610408 5708376 1608608 5713032 1608648 5713040 1610712 5708360 -1608720 5713120 1608760 5713200 1610712 5708360 1608648 5713040 -1610712 5708360 1663880 5646248 1610680 5708312 1610408 5708376 -1611512 5715528 1611528 5715552 1610712 5708360 1611464 5715504 -1610712 5708360 1611528 5715552 1663944 5646256 1663880 5646248 -1611528 5715552 1663944 5646256 1610712 5708360 1611512 5715528 -1610680 5708312 1610472 5708336 1610408 5708376 1610712 5708360 -1610408 5708376 1608648 5713040 1610712 5708360 1610472 5708336 -1610472 5708336 1610448 5708336 1610408 5708376 1610712 5708360 -1610680 5708312 1610512 5708312 1610472 5708336 1610712 5708360 -1610680 5708312 1610640 5708296 1610512 5708312 1610712 5708360 -1610512 5708312 1610472 5708336 1610712 5708360 1610640 5708296 -1610640 5708296 1610552 5708288 1610512 5708312 1610712 5708360 -1610680 5708312 1610640 5708296 1610712 5708360 1663880 5646248 -1610472 5708336 1610408 5708376 1610712 5708360 1610512 5708312 -1663944 5646256 1610728 5708400 1611528 5715552 1615632 5735416 -1610712 5708360 1610728 5708400 1663944 5646256 1663880 5646248 -1610712 5708360 1610728 5708400 1663880 5646248 1610680 5708312 -1610712 5708360 1611528 5715552 1610728 5708400 1663880 5646248 -1611528 5715552 1610728 5708400 1610712 5708360 1611512 5715528 -1610712 5708360 1611464 5715504 1611512 5715528 1610728 5708400 -1610712 5708360 1611352 5715472 1611464 5715504 1610728 5708400 -1610712 5708360 1608760 5713200 1611352 5715472 1610728 5708400 -1610712 5708360 1608720 5713120 1608760 5713200 1610728 5708400 -1611352 5715472 1611464 5715504 1610728 5708400 1608760 5713200 -1608760 5713200 1611352 5715472 1610728 5708400 1608720 5713120 -1608760 5713200 1611312 5715472 1611352 5715472 1610728 5708400 -1610712 5708360 1608648 5713040 1608720 5713120 1610728 5708400 -1608720 5713120 1608760 5713200 1610728 5708400 1608648 5713040 -1610712 5708360 1610408 5708376 1608648 5713040 1610728 5708400 -1610712 5708360 1610472 5708336 1610408 5708376 1610728 5708400 -1610408 5708376 1608608 5713032 1608648 5713040 1610728 5708400 -1610408 5708376 1608648 5713040 1610728 5708400 1610472 5708336 -1610472 5708336 1610448 5708336 1610408 5708376 1610728 5708400 -1608648 5713040 1608720 5713120 1610728 5708400 1610408 5708376 -1611464 5715504 1611512 5715528 1610728 5708400 1611352 5715472 -1610728 5708400 1663880 5646248 1610712 5708360 1610472 5708336 -1611512 5715528 1611528 5715552 1610728 5708400 1611464 5715504 -1610728 5708400 1611528 5715552 1663944 5646256 1663880 5646248 -1611528 5715552 1663944 5646256 1610728 5708400 1611512 5715528 -1610712 5708360 1610512 5708312 1610472 5708336 1610728 5708400 -1610472 5708336 1610408 5708376 1610728 5708400 1610512 5708312 -1610712 5708360 1610640 5708296 1610512 5708312 1610728 5708400 -1610712 5708360 1610512 5708312 1610728 5708400 1663880 5646248 -1663944 5646256 1610760 5708480 1611528 5715552 1615632 5735416 -1610728 5708400 1610760 5708480 1663944 5646256 1663880 5646248 -1610728 5708400 1610760 5708480 1663880 5646248 1610712 5708360 -1610728 5708400 1611528 5715552 1610760 5708480 1663880 5646248 -1611528 5715552 1610760 5708480 1610728 5708400 1611512 5715528 -1610728 5708400 1611464 5715504 1611512 5715528 1610760 5708480 -1610728 5708400 1611352 5715472 1611464 5715504 1610760 5708480 -1610728 5708400 1608760 5713200 1611352 5715472 1610760 5708480 -1610728 5708400 1608720 5713120 1608760 5713200 1610760 5708480 -1610728 5708400 1608648 5713040 1608720 5713120 1610760 5708480 -1608760 5713200 1611352 5715472 1610760 5708480 1608720 5713120 -1608720 5713120 1608760 5713200 1610760 5708480 1608648 5713040 -1608760 5713200 1611312 5715472 1611352 5715472 1610760 5708480 -1610728 5708400 1610408 5708376 1608648 5713040 1610760 5708480 -1608648 5713040 1608720 5713120 1610760 5708480 1610408 5708376 -1610408 5708376 1608608 5713032 1608648 5713040 1610760 5708480 -1610728 5708400 1610472 5708336 1610408 5708376 1610760 5708480 -1610728 5708400 1610512 5708312 1610472 5708336 1610760 5708480 -1610472 5708336 1610448 5708336 1610408 5708376 1610760 5708480 -1610408 5708376 1608648 5713040 1610760 5708480 1610472 5708336 -1611352 5715472 1611464 5715504 1610760 5708480 1608760 5713200 -1611464 5715504 1611512 5715528 1610760 5708480 1611352 5715472 -1610760 5708480 1663880 5646248 1610728 5708400 1610472 5708336 -1611512 5715528 1611528 5715552 1610760 5708480 1611464 5715504 -1610760 5708480 1611528 5715552 1663944 5646256 1663880 5646248 -1611528 5715552 1663944 5646256 1610760 5708480 1611512 5715528 -1608760 5713200 1610752 5708648 1610760 5708480 1608720 5713120 -1610760 5708480 1608648 5713040 1608720 5713120 1610752 5708648 -1610760 5708480 1610408 5708376 1608648 5713040 1610752 5708648 -1608720 5713120 1608760 5713200 1610752 5708648 1608648 5713040 -1608648 5713040 1608720 5713120 1610752 5708648 1610408 5708376 -1611352 5715472 1610752 5708648 1608760 5713200 1611312 5715472 -1610408 5708376 1608608 5713032 1608648 5713040 1610752 5708648 -1610408 5708376 1608608 5713032 1610752 5708648 1610760 5708480 -1608648 5713040 1608720 5713120 1610752 5708648 1608608 5713032 -1610408 5708376 1608336 5713136 1608608 5713032 1610752 5708648 -1610760 5708480 1610472 5708336 1610408 5708376 1610752 5708648 -1610760 5708480 1610752 5708648 1611352 5715472 1611464 5715504 -1610760 5708480 1610752 5708648 1611464 5715504 1611512 5715528 -1610752 5708648 1611352 5715472 1611464 5715504 1611512 5715528 -1610760 5708480 1610752 5708648 1611512 5715528 1611528 5715552 -1610752 5708648 1611464 5715504 1611512 5715528 1611528 5715552 -1610752 5708648 1611528 5715552 1610760 5708480 1610408 5708376 -1610760 5708480 1610752 5708648 1611528 5715552 1663944 5646256 -1610752 5708648 1608760 5713200 1611352 5715472 1611464 5715504 -1608760 5713200 1611352 5715472 1610752 5708648 1608720 5713120 -1610408 5708376 1610688 5708680 1610752 5708648 1610760 5708480 -1610408 5708376 1608608 5713032 1610688 5708680 1610760 5708480 -1610752 5708648 1610688 5708680 1608608 5713032 1608648 5713040 -1610752 5708648 1610688 5708680 1608648 5713040 1608720 5713120 -1610752 5708648 1610688 5708680 1608720 5713120 1608760 5713200 -1610688 5708680 1608648 5713040 1608720 5713120 1608760 5713200 -1610688 5708680 1610408 5708376 1608608 5713032 1608648 5713040 -1610688 5708680 1608608 5713032 1608648 5713040 1608720 5713120 -1608608 5713032 1610688 5708680 1610408 5708376 1608336 5713136 -1610408 5708376 1610688 5708680 1610760 5708480 1610472 5708336 -1610688 5708680 1610752 5708648 1610760 5708480 1610472 5708336 -1610408 5708376 1608608 5713032 1610688 5708680 1610472 5708336 -1610760 5708480 1610728 5708400 1610472 5708336 1610688 5708680 -1610408 5708376 1610688 5708680 1610472 5708336 1610448 5708336 -1610688 5708680 1608760 5713200 1610752 5708648 1610760 5708480 -1610752 5708648 1610688 5708680 1608760 5713200 1611352 5715472 -1610688 5708680 1608720 5713120 1608760 5713200 1611352 5715472 -1608760 5713200 1611312 5715472 1611352 5715472 1610688 5708680 -1610752 5708648 1610688 5708680 1611352 5715472 1611464 5715504 -1610752 5708648 1610760 5708480 1610688 5708680 1611352 5715472 -1610688 5708680 1610600 5708680 1608608 5713032 1608648 5713040 -1610408 5708376 1610600 5708680 1610688 5708680 1610472 5708336 -1610688 5708680 1610472 5708336 1610600 5708680 1608648 5713040 -1610600 5708680 1610408 5708376 1608608 5713032 1608648 5713040 -1610408 5708376 1608608 5713032 1610600 5708680 1610472 5708336 -1610688 5708680 1610600 5708680 1608648 5713040 1608720 5713120 -1610688 5708680 1610600 5708680 1608720 5713120 1608760 5713200 -1610600 5708680 1608608 5713032 1608648 5713040 1608720 5713120 -1610688 5708680 1610472 5708336 1610600 5708680 1608720 5713120 -1610408 5708376 1610600 5708680 1610472 5708336 1610448 5708336 -1608608 5713032 1610600 5708680 1610408 5708376 1608336 5713136 -1610688 5708680 1610760 5708480 1610472 5708336 1610600 5708680 -1610688 5708680 1610752 5708648 1610760 5708480 1610600 5708680 -1610472 5708336 1610408 5708376 1610600 5708680 1610760 5708480 -1610688 5708680 1610760 5708480 1610600 5708680 1608720 5713120 -1610760 5708480 1610728 5708400 1610472 5708336 1610600 5708680 -1610472 5708336 1610408 5708376 1610600 5708680 1610728 5708400 -1610728 5708400 1610512 5708312 1610472 5708336 1610600 5708680 -1610760 5708480 1610728 5708400 1610600 5708680 1610688 5708680 -1610600 5708680 1610552 5708656 1608608 5713032 1608648 5713040 -1610600 5708680 1610552 5708656 1608648 5713040 1608720 5713120 -1610600 5708680 1610408 5708376 1610552 5708656 1608648 5713040 -1610408 5708376 1610552 5708656 1610600 5708680 1610472 5708336 -1610600 5708680 1610728 5708400 1610472 5708336 1610552 5708656 -1610552 5708656 1608648 5713040 1610600 5708680 1610728 5708400 -1610472 5708336 1610408 5708376 1610552 5708656 1610728 5708400 -1610552 5708656 1610408 5708376 1608608 5713032 1608648 5713040 -1610728 5708400 1610512 5708312 1610472 5708336 1610552 5708656 -1610600 5708680 1610760 5708480 1610728 5708400 1610552 5708656 -1610728 5708400 1610472 5708336 1610552 5708656 1610760 5708480 -1610600 5708680 1610760 5708480 1610552 5708656 1608648 5713040 -1610408 5708376 1610552 5708656 1610472 5708336 1610448 5708336 -1608608 5713032 1610552 5708656 1610408 5708376 1608336 5713136 -1610600 5708680 1610688 5708680 1610760 5708480 1610552 5708656 -1610408 5708376 1608608 5713032 1610552 5708656 1610472 5708336 -1610552 5708656 1610504 5708616 1608608 5713032 1608648 5713040 -1608608 5713032 1610504 5708616 1610408 5708376 1608336 5713136 -1608608 5713032 1610504 5708616 1608336 5713136 1608576 5713048 -1610408 5708376 1610504 5708616 1610552 5708656 1610472 5708336 -1610552 5708656 1610728 5708400 1610472 5708336 1610504 5708616 -1610552 5708656 1610760 5708480 1610728 5708400 1610504 5708616 -1610728 5708400 1610472 5708336 1610504 5708616 1610760 5708480 -1610728 5708400 1610512 5708312 1610472 5708336 1610504 5708616 -1610552 5708656 1610600 5708680 1610760 5708480 1610504 5708616 -1610408 5708376 1610504 5708616 1610472 5708336 1610448 5708336 -1610504 5708616 1608608 5713032 1610552 5708656 1610760 5708480 -1610472 5708336 1610408 5708376 1610504 5708616 1610728 5708400 -1608608 5713032 1610552 5708656 1610504 5708616 1608336 5713136 -1610504 5708616 1610472 5708336 1610408 5708376 1608336 5713136 -1610408 5708376 1608280 5713176 1608336 5713136 1610504 5708616 -1610504 5708616 1610456 5708504 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1610456 5708504 -1610504 5708616 1610456 5708504 1608608 5713032 1610552 5708656 -1610504 5708616 1610408 5708376 1610456 5708504 1608608 5713032 -1610408 5708376 1610456 5708504 1610504 5708616 1610472 5708336 -1610408 5708376 1610456 5708504 1610472 5708336 1610448 5708336 -1610504 5708616 1610728 5708400 1610472 5708336 1610456 5708504 -1610504 5708616 1610760 5708480 1610728 5708400 1610456 5708504 -1610504 5708616 1610552 5708656 1610760 5708480 1610456 5708504 -1610728 5708400 1610512 5708312 1610472 5708336 1610456 5708504 -1610728 5708400 1610512 5708312 1610456 5708504 1610760 5708480 -1610456 5708504 1608608 5713032 1610504 5708616 1610760 5708480 -1610472 5708336 1610408 5708376 1610456 5708504 1610512 5708312 -1610456 5708504 1610408 5708376 1608336 5713136 1608608 5713032 -1610408 5708376 1608336 5713136 1610456 5708504 1610472 5708336 -1610728 5708400 1610712 5708360 1610512 5708312 1610456 5708504 -1608336 5713136 1610456 5708504 1610408 5708376 1608280 5713176 -1610456 5708504 1610408 5708416 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1610408 5708416 -1610456 5708504 1610408 5708416 1608608 5713032 1610504 5708616 -1608608 5713032 1610552 5708656 1610504 5708616 1610408 5708416 -1610408 5708416 1608336 5713136 1608608 5713032 1610504 5708616 -1610456 5708504 1610408 5708376 1610408 5708416 1610504 5708616 -1610408 5708376 1610408 5708416 1610456 5708504 1610472 5708336 -1610408 5708376 1610408 5708416 1610472 5708336 1610448 5708336 -1610456 5708504 1610512 5708312 1610472 5708336 1610408 5708416 -1610408 5708416 1610504 5708616 1610456 5708504 1610472 5708336 -1610408 5708416 1610408 5708376 1608336 5713136 1608608 5713032 -1610408 5708376 1608336 5713136 1610408 5708416 1610472 5708336 -1608336 5713136 1610408 5708416 1610408 5708376 1608280 5713176 -1610408 5708376 1604840 5714480 1608280 5713176 1610408 5708416 -1604840 5714480 1608240 5713248 1608280 5713176 1610408 5708416 -1610408 5708376 1604784 5714488 1604840 5714480 1610408 5708416 -1608336 5713136 1608608 5713032 1610408 5708416 1608280 5713176 -1610408 5708416 1610472 5708336 1610408 5708376 1604840 5714480 -1608280 5713176 1608336 5713136 1610408 5708416 1604840 5714480 -1610408 5708376 1608632 5706656 1604784 5714488 1604840 5714480 -1610408 5708376 1608632 5706656 1604840 5714480 1610408 5708416 -1604840 5714480 1608280 5713176 1610408 5708416 1608632 5706656 -1604840 5714480 1608240 5713248 1608280 5713176 1608632 5706656 -1610408 5708416 1610408 5708376 1608632 5706656 1608280 5713176 -1608632 5706656 1604784 5714488 1604840 5714480 1608280 5713176 -1602352 5697112 1608632 5706656 1610408 5708376 1602424 5697104 -1604784 5714488 1608632 5706656 1602352 5697112 1604744 5714504 -1602352 5697112 1602152 5697040 1604744 5714504 1608632 5706656 -1602152 5697040 1602072 5696992 1604744 5714504 1608632 5706656 -1602352 5697112 1602200 5697056 1602152 5697040 1608632 5706656 -1604744 5714504 1604784 5714488 1608632 5706656 1602152 5697040 -1602352 5697112 1602152 5697040 1608632 5706656 1602424 5697104 -1610408 5708376 1602424 5697104 1608632 5706656 1610408 5708416 -1608632 5706656 1604744 5714504 1604784 5714488 1604840 5714480 -1608280 5713176 1608336 5713136 1610408 5708416 1608632 5706656 -1608280 5713176 1608336 5713136 1608632 5706656 1604840 5714480 -1610408 5708416 1610408 5708376 1608632 5706656 1608336 5713136 -1608336 5713136 1608608 5713032 1610408 5708416 1608632 5706656 -1608336 5713136 1608576 5713048 1608608 5713032 1608632 5706656 -1610408 5708416 1610408 5708376 1608632 5706656 1608608 5713032 -1608608 5713032 1610504 5708616 1610408 5708416 1608632 5706656 -1608336 5713136 1608608 5713032 1608632 5706656 1608280 5713176 -1610408 5708376 1610440 5708328 1602424 5697104 1608632 5706656 -1602424 5697104 1602352 5697112 1608632 5706656 1610440 5708328 -1610440 5708328 1602464 5697088 1602424 5697104 1608632 5706656 -1610440 5708328 1602504 5697056 1602464 5697088 1608632 5706656 -1602424 5697104 1602352 5697112 1608632 5706656 1602464 5697088 -1610440 5708328 1610552 5708288 1602504 5697056 1608632 5706656 -1602504 5697056 1602464 5697088 1608632 5706656 1610552 5708288 -1610552 5708288 1610640 5708296 1602504 5697056 1608632 5706656 -1602504 5697056 1602464 5697088 1608632 5706656 1610640 5708296 -1610552 5708288 1610640 5708296 1608632 5706656 1610440 5708328 -1610440 5708328 1610512 5708312 1610552 5708288 1608632 5706656 -1610640 5708296 1602504 5696992 1602504 5697056 1608632 5706656 -1602504 5697056 1602464 5697088 1608632 5706656 1602504 5696992 -1610640 5708296 1602504 5696992 1608632 5706656 1610552 5708288 -1610640 5708296 1610680 5708312 1602504 5696992 1608632 5706656 -1610640 5708296 1610680 5708312 1608632 5706656 1610552 5708288 -1602504 5696992 1602504 5697056 1608632 5706656 1610680 5708312 -1610680 5708312 1602224 5696056 1602504 5696992 1608632 5706656 -1602464 5697088 1602424 5697104 1608632 5706656 1602504 5697056 -1610408 5708376 1610440 5708328 1608632 5706656 1610408 5708416 -1610440 5708328 1610552 5708288 1608632 5706656 1610408 5708376 -1608632 5706656 1608680 5706648 1602504 5696992 1602504 5697056 -1608632 5706656 1608680 5706648 1602504 5697056 1602464 5697088 -1610680 5708312 1608680 5706648 1608632 5706656 1610640 5708296 -1608632 5706656 1610552 5708288 1610640 5708296 1608680 5706648 -1608632 5706656 1610440 5708328 1610552 5708288 1608680 5706648 -1610552 5708288 1610640 5708296 1608680 5706648 1610440 5708328 -1610440 5708328 1610512 5708312 1610552 5708288 1608680 5706648 -1610640 5708296 1610680 5708312 1608680 5706648 1610552 5708288 -1602504 5696992 1608680 5706648 1610680 5708312 1602224 5696056 -1610680 5708312 1663880 5646248 1602224 5696056 1608680 5706648 -1602504 5696992 1608680 5706648 1602224 5696056 1602224 5696096 -1608632 5706656 1610440 5708328 1608680 5706648 1602504 5697056 -1608680 5706648 1602224 5696056 1602504 5696992 1602504 5697056 -1610680 5708312 1602224 5696056 1608680 5706648 1610640 5708296 -1608632 5706656 1610408 5708376 1610440 5708328 1608680 5706648 -1610440 5708328 1610552 5708288 1608680 5706648 1610408 5708376 -1608632 5706656 1610408 5708376 1608680 5706648 1602504 5697056 -1608632 5706656 1610408 5708416 1610408 5708376 1608680 5706648 -1602224 5696056 1608784 5706656 1610680 5708312 1663880 5646248 -1608680 5706648 1608784 5706656 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1608784 5706656 -1608784 5706656 1610680 5708312 1602224 5696056 1602504 5696992 -1608680 5706648 1608784 5706656 1602504 5696992 1602504 5697056 -1608680 5706648 1608784 5706656 1602504 5697056 1608632 5706656 -1608784 5706656 1602224 5696056 1602504 5696992 1602504 5697056 -1608680 5706648 1610680 5708312 1608784 5706656 1602504 5697056 -1610680 5708312 1608784 5706656 1608680 5706648 1610640 5708296 -1608680 5706648 1610552 5708288 1610640 5708296 1608784 5706656 -1608680 5706648 1610440 5708328 1610552 5708288 1608784 5706656 -1608680 5706648 1610408 5708376 1610440 5708328 1608784 5706656 -1610440 5708328 1610552 5708288 1608784 5706656 1610408 5708376 -1610440 5708328 1610512 5708312 1610552 5708288 1608784 5706656 -1610552 5708288 1610640 5708296 1608784 5706656 1610440 5708328 -1610680 5708312 1602224 5696056 1608784 5706656 1610640 5708296 -1608784 5706656 1602504 5697056 1608680 5706648 1610408 5708376 -1610640 5708296 1610680 5708312 1608784 5706656 1610552 5708288 -1608680 5706648 1608632 5706656 1610408 5708376 1608784 5706656 -1610408 5708376 1610440 5708328 1608784 5706656 1608632 5706656 -1608632 5706656 1610408 5708416 1610408 5708376 1608784 5706656 -1608680 5706648 1608632 5706656 1608784 5706656 1602504 5697056 -1602224 5696056 1608912 5706760 1610680 5708312 1663880 5646248 -1608784 5706656 1608912 5706760 1602224 5696056 1602504 5696992 -1608784 5706656 1608912 5706760 1602504 5696992 1602504 5697056 -1602224 5696056 1602224 5696096 1602504 5696992 1608912 5706760 -1608784 5706656 1610680 5708312 1608912 5706760 1602504 5696992 -1610680 5708312 1608912 5706760 1608784 5706656 1610640 5708296 -1608912 5706760 1602504 5696992 1608784 5706656 1610640 5708296 -1608912 5706760 1610680 5708312 1602224 5696056 1602504 5696992 -1610680 5708312 1602224 5696056 1608912 5706760 1610640 5708296 -1608784 5706656 1610552 5708288 1610640 5708296 1608912 5706760 -1608784 5706656 1610440 5708328 1610552 5708288 1608912 5706760 -1608784 5706656 1610408 5708376 1610440 5708328 1608912 5706760 -1608784 5706656 1608632 5706656 1610408 5708376 1608912 5706760 -1610408 5708376 1610440 5708328 1608912 5706760 1608632 5706656 -1610440 5708328 1610512 5708312 1610552 5708288 1608912 5706760 -1610440 5708328 1610552 5708288 1608912 5706760 1610408 5708376 -1608632 5706656 1610408 5708416 1610408 5708376 1608912 5706760 -1608632 5706656 1608608 5713032 1610408 5708416 1608912 5706760 -1608632 5706656 1610408 5708416 1608912 5706760 1608784 5706656 -1610408 5708376 1610440 5708328 1608912 5706760 1610408 5708416 -1608784 5706656 1608632 5706656 1608912 5706760 1602504 5696992 -1610640 5708296 1610680 5708312 1608912 5706760 1610552 5708288 -1610552 5708288 1610640 5708296 1608912 5706760 1610440 5708328 -1608784 5706656 1608680 5706648 1608632 5706656 1608912 5706760 -1608632 5706656 1610408 5708416 1608912 5706760 1608680 5706648 -1608784 5706656 1608680 5706648 1608912 5706760 1602504 5696992 -1602224 5696056 1608984 5706784 1610680 5708312 1663880 5646248 -1608912 5706760 1608984 5706784 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1608984 5706784 -1608912 5706760 1608984 5706784 1602504 5696992 1608784 5706656 -1602504 5696992 1602504 5697056 1608784 5706656 1608984 5706784 -1608984 5706784 1602224 5696056 1602504 5696992 1608784 5706656 -1608912 5706760 1610680 5708312 1608984 5706784 1608784 5706656 -1610680 5708312 1608984 5706784 1608912 5706760 1610640 5708296 -1608912 5706760 1610552 5708288 1610640 5708296 1608984 5706784 -1608984 5706784 1608784 5706656 1608912 5706760 1610552 5708288 -1610640 5708296 1610680 5708312 1608984 5706784 1610552 5708288 -1608984 5706784 1610680 5708312 1602224 5696056 1602504 5696992 -1610680 5708312 1602224 5696056 1608984 5706784 1610640 5708296 -1608912 5706760 1610440 5708328 1610552 5708288 1608984 5706784 -1610440 5708328 1610512 5708312 1610552 5708288 1608984 5706784 -1608912 5706760 1610408 5708376 1610440 5708328 1608984 5706784 -1608912 5706760 1610408 5708416 1610408 5708376 1608984 5706784 -1610408 5708376 1610440 5708328 1608984 5706784 1610408 5708416 -1608912 5706760 1608632 5706656 1610408 5708416 1608984 5706784 -1610552 5708288 1610640 5708296 1608984 5706784 1610440 5708328 -1608912 5706760 1610408 5708416 1608984 5706784 1608784 5706656 -1610440 5708328 1610552 5708288 1608984 5706784 1610408 5708376 -1602224 5696056 1609152 5706768 1610680 5708312 1663880 5646248 -1608984 5706784 1609152 5706768 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1609152 5706768 -1608984 5706784 1609152 5706768 1602504 5696992 1608784 5706656 -1602504 5696992 1602504 5697056 1608784 5706656 1609152 5706768 -1608984 5706784 1609152 5706768 1608784 5706656 1608912 5706760 -1608784 5706656 1608912 5706760 1609152 5706768 1602504 5697056 -1609152 5706768 1602224 5696056 1602504 5696992 1602504 5697056 -1608984 5706784 1610680 5708312 1609152 5706768 1608912 5706760 -1610680 5708312 1609152 5706768 1608984 5706784 1610640 5708296 -1610680 5708312 1602224 5696056 1609152 5706768 1610640 5708296 -1608984 5706784 1610552 5708288 1610640 5708296 1609152 5706768 -1608984 5706784 1610440 5708328 1610552 5708288 1609152 5706768 -1610440 5708328 1610512 5708312 1610552 5708288 1609152 5706768 -1610552 5708288 1610640 5708296 1609152 5706768 1610440 5708328 -1609152 5706768 1608912 5706760 1608984 5706784 1610440 5708328 -1610640 5708296 1610680 5708312 1609152 5706768 1610552 5708288 -1609152 5706768 1610680 5708312 1602224 5696056 1602504 5696992 -1602504 5697056 1608680 5706648 1608784 5706656 1609152 5706768 -1608984 5706784 1610408 5708376 1610440 5708328 1609152 5706768 -1608984 5706784 1610408 5708416 1610408 5708376 1609152 5706768 -1610440 5708328 1610552 5708288 1609152 5706768 1610408 5708376 -1608984 5706784 1610408 5708376 1609152 5706768 1608912 5706760 -1602224 5696056 1609352 5706640 1610680 5708312 1663880 5646248 -1610680 5708312 1610712 5708360 1663880 5646248 1609352 5706640 -1609352 5706640 1609152 5706768 1610680 5708312 1663880 5646248 -1602224 5696056 1609352 5706640 1663880 5646248 1602200 5696008 -1610680 5708312 1609352 5706640 1609152 5706768 1610640 5708296 -1610680 5708312 1663880 5646248 1609352 5706640 1610640 5708296 -1609352 5706640 1602224 5696056 1609152 5706768 1610640 5708296 -1602224 5696056 1609152 5706768 1609352 5706640 1663880 5646248 -1609152 5706768 1610552 5708288 1610640 5708296 1609352 5706640 -1610640 5708296 1610680 5708312 1609352 5706640 1610552 5708288 -1609152 5706768 1610552 5708288 1609352 5706640 1602224 5696056 -1609152 5706768 1610440 5708328 1610552 5708288 1609352 5706640 -1610440 5708328 1610512 5708312 1610552 5708288 1609352 5706640 -1609152 5706768 1610440 5708328 1609352 5706640 1602224 5696056 -1609152 5706768 1610408 5708376 1610440 5708328 1609352 5706640 -1610552 5708288 1610640 5708296 1609352 5706640 1610440 5708328 -1609152 5706768 1609352 5706640 1602224 5696056 1602504 5696992 -1609152 5706768 1610440 5708328 1609352 5706640 1602504 5696992 -1609352 5706640 1663880 5646248 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1609352 5706640 -1609152 5706768 1609352 5706640 1602504 5696992 1602504 5697056 -1609152 5706768 1609352 5706640 1602504 5697056 1608784 5706656 -1609152 5706768 1610440 5708328 1609352 5706640 1608784 5706656 -1609152 5706768 1609352 5706640 1608784 5706656 1608912 5706760 -1609352 5706640 1602504 5696992 1602504 5697056 1608784 5706656 -1609352 5706640 1602224 5696056 1602504 5696992 1602504 5697056 -1602504 5697056 1608680 5706648 1608784 5706656 1609352 5706640 -1602504 5697056 1608632 5706656 1608680 5706648 1609352 5706640 -1608784 5706656 1609152 5706768 1609352 5706640 1608680 5706648 -1602504 5697056 1608680 5706648 1609352 5706640 1602504 5696992 -1609352 5706640 1609424 5706616 1663880 5646248 1602224 5696056 -1663880 5646248 1609424 5706616 1610680 5708312 1610712 5708360 -1609352 5706640 1610680 5708312 1609424 5706616 1602224 5696056 -1610680 5708312 1609424 5706616 1609352 5706640 1610640 5708296 -1609424 5706616 1602224 5696056 1609352 5706640 1610640 5708296 -1609424 5706616 1610680 5708312 1663880 5646248 1602224 5696056 -1663880 5646248 1602200 5696008 1602224 5696056 1609424 5706616 -1610680 5708312 1663880 5646248 1609424 5706616 1610640 5708296 -1609352 5706640 1610552 5708288 1610640 5708296 1609424 5706616 -1609352 5706640 1610552 5708288 1609424 5706616 1602224 5696056 -1610640 5708296 1610680 5708312 1609424 5706616 1610552 5708288 -1609352 5706640 1609424 5706616 1602224 5696056 1602504 5696992 -1609424 5706616 1663880 5646248 1602224 5696056 1602504 5696992 -1609352 5706640 1610552 5708288 1609424 5706616 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1609424 5706616 -1609352 5706640 1610440 5708328 1610552 5708288 1609424 5706616 -1609352 5706640 1610440 5708328 1609424 5706616 1602504 5696992 -1610440 5708328 1610512 5708312 1610552 5708288 1609424 5706616 -1610552 5708288 1610640 5708296 1609424 5706616 1610440 5708328 -1609352 5706640 1609152 5706768 1610440 5708328 1609424 5706616 -1609352 5706640 1609152 5706768 1609424 5706616 1602504 5696992 -1609152 5706768 1610408 5708376 1610440 5708328 1609424 5706616 -1610440 5708328 1610552 5708288 1609424 5706616 1609152 5706768 -1609352 5706640 1609424 5706616 1602504 5696992 1602504 5697056 -1609352 5706640 1609152 5706768 1609424 5706616 1602504 5697056 -1609424 5706616 1602224 5696056 1602504 5696992 1602504 5697056 -1609352 5706640 1609424 5706616 1602504 5697056 1608680 5706648 -1609352 5706640 1609152 5706768 1609424 5706616 1608680 5706648 -1602504 5697056 1608632 5706656 1608680 5706648 1609424 5706616 -1609424 5706616 1602504 5696992 1602504 5697056 1608680 5706648 -1609352 5706640 1609424 5706616 1608680 5706648 1608784 5706656 -1609352 5706640 1609152 5706768 1609424 5706616 1608784 5706656 -1609352 5706640 1609424 5706616 1608784 5706656 1609152 5706768 -1609424 5706616 1602504 5697056 1608680 5706648 1608784 5706656 -1663880 5646248 1609472 5706664 1610680 5708312 1610712 5708360 -1609424 5706616 1609472 5706664 1663880 5646248 1602224 5696056 -1609424 5706616 1609472 5706664 1602224 5696056 1602504 5696992 -1663880 5646248 1602200 5696008 1602224 5696056 1609472 5706664 -1609424 5706616 1610680 5708312 1609472 5706664 1602224 5696056 -1610680 5708312 1609472 5706664 1609424 5706616 1610640 5708296 -1609424 5706616 1610552 5708288 1610640 5708296 1609472 5706664 -1610680 5708312 1663880 5646248 1609472 5706664 1610640 5708296 -1609472 5706664 1602224 5696056 1609424 5706616 1610552 5708288 -1610640 5708296 1610680 5708312 1609472 5706664 1610552 5708288 -1609472 5706664 1610680 5708312 1663880 5646248 1602224 5696056 -1609424 5706616 1610440 5708328 1610552 5708288 1609472 5706664 -1610552 5708288 1610640 5708296 1609472 5706664 1610440 5708328 -1609424 5706616 1610440 5708328 1609472 5706664 1602224 5696056 -1610440 5708328 1610512 5708312 1610552 5708288 1609472 5706664 -1609424 5706616 1609152 5706768 1610440 5708328 1609472 5706664 -1609424 5706616 1609152 5706768 1609472 5706664 1602224 5696056 -1610440 5708328 1610552 5708288 1609472 5706664 1609152 5706768 -1609152 5706768 1610408 5708376 1610440 5708328 1609472 5706664 -1609424 5706616 1609352 5706640 1609152 5706768 1609472 5706664 -1609424 5706616 1609352 5706640 1609472 5706664 1602224 5696056 -1609152 5706768 1610440 5708328 1609472 5706664 1609352 5706640 -1609472 5706664 1609464 5706776 1610440 5708328 1610552 5708288 -1609472 5706664 1609464 5706776 1610552 5708288 1610640 5708296 -1609464 5706776 1609152 5706768 1610440 5708328 1610552 5708288 -1609472 5706664 1609152 5706768 1609464 5706776 1610640 5708296 -1609472 5706664 1609464 5706776 1610640 5708296 1610680 5708312 -1610440 5708328 1610512 5708312 1610552 5708288 1609464 5706776 -1609464 5706776 1610440 5708328 1610552 5708288 1610640 5708296 -1610440 5708328 1609464 5706776 1609152 5706768 1610408 5708376 -1610440 5708328 1610552 5708288 1609464 5706776 1610408 5708376 -1609464 5706776 1609472 5706664 1609152 5706768 1610408 5708376 -1609152 5706768 1609464 5706776 1609472 5706664 1609352 5706640 -1609464 5706776 1610640 5708296 1609472 5706664 1609352 5706640 -1609152 5706768 1610408 5708376 1609464 5706776 1609352 5706640 -1609472 5706664 1609424 5706616 1609352 5706640 1609464 5706776 -1609152 5706768 1608984 5706784 1610408 5708376 1609464 5706776 -1609152 5706768 1609368 5706872 1609464 5706776 1609352 5706640 -1609368 5706872 1610408 5708376 1609464 5706776 1609352 5706640 -1609152 5706768 1610408 5708376 1609368 5706872 1609352 5706640 -1609464 5706776 1609368 5706872 1610408 5708376 1610440 5708328 -1609464 5706776 1609368 5706872 1610440 5708328 1610552 5708288 -1609464 5706776 1609352 5706640 1609368 5706872 1610440 5708328 -1609368 5706872 1609152 5706768 1610408 5708376 1610440 5708328 -1609464 5706776 1609472 5706664 1609352 5706640 1609368 5706872 -1610408 5708376 1609368 5706872 1609152 5706768 1608984 5706784 -1610408 5708376 1609368 5706872 1608984 5706784 1610408 5708416 -1610408 5708376 1610440 5708328 1609368 5706872 1608984 5706784 -1609368 5706872 1609352 5706640 1609152 5706768 1608984 5706784 -1610408 5708416 1609048 5707032 1608632 5706656 1608608 5713032 -1608632 5706656 1609048 5707032 1608912 5706760 1608680 5706648 -1610408 5708416 1608912 5706760 1609048 5707032 1608608 5713032 -1609048 5707032 1608912 5706760 1608632 5706656 1608608 5713032 -1608912 5706760 1609048 5707032 1610408 5708416 1608984 5706784 -1610408 5708416 1610408 5708376 1608984 5706784 1609048 5707032 -1610408 5708376 1609368 5706872 1608984 5706784 1609048 5707032 -1610408 5708376 1609368 5706872 1609048 5707032 1610408 5708416 -1610408 5708376 1610440 5708328 1609368 5706872 1609048 5707032 -1610408 5708376 1610440 5708328 1609048 5707032 1610408 5708416 -1609368 5706872 1608984 5706784 1609048 5707032 1610440 5708328 -1609048 5707032 1608608 5713032 1610408 5708416 1610408 5708376 -1608912 5706760 1608632 5706656 1609048 5707032 1608984 5706784 -1608984 5706784 1608912 5706760 1609048 5707032 1609368 5706872 -1610440 5708328 1609464 5706776 1609368 5706872 1609048 5707032 -1610408 5708416 1609048 5707032 1608608 5713032 1610504 5708616 -1608632 5706656 1608336 5713136 1608608 5713032 1609048 5707032 -1608336 5713136 1608576 5713048 1608608 5713032 1609048 5707032 -1608608 5713032 1610408 5708416 1609048 5707032 1608336 5713136 -1608632 5706656 1608336 5713136 1609048 5707032 1608912 5706760 -1609368 5706872 1609152 5706768 1608984 5706784 1609048 5707032 -1609368 5706872 1609152 5706768 1609048 5707032 1610440 5708328 -1609368 5706872 1609352 5706640 1609152 5706768 1609048 5707032 -1608984 5706784 1608912 5706760 1609048 5707032 1609152 5706768 -1608632 5706656 1608280 5713176 1608336 5713136 1609048 5707032 -1608632 5706656 1608928 5707040 1609048 5707032 1608912 5706760 -1608632 5706656 1608928 5707040 1608912 5706760 1608680 5706648 -1608928 5707040 1608336 5713136 1609048 5707032 1608912 5706760 -1609048 5707032 1608984 5706784 1608912 5706760 1608928 5707040 -1608912 5706760 1608632 5706656 1608928 5707040 1608984 5706784 -1609048 5707032 1608984 5706784 1608928 5707040 1608336 5713136 -1608632 5706656 1608336 5713136 1608928 5707040 1608912 5706760 -1609048 5707032 1609152 5706768 1608984 5706784 1608928 5707040 -1609048 5707032 1608928 5707040 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1608928 5707040 -1609048 5707032 1608928 5707040 1608608 5713032 1610408 5708416 -1609048 5707032 1608928 5707040 1610408 5708416 1610408 5708376 -1608928 5707040 1608608 5713032 1610408 5708416 1610408 5708376 -1609048 5707032 1608928 5707040 1610408 5708376 1610440 5708328 -1609048 5707032 1608984 5706784 1608928 5707040 1610408 5708376 -1608928 5707040 1608632 5706656 1608336 5713136 1608608 5713032 -1608608 5713032 1610504 5708616 1610408 5708416 1608928 5707040 -1610408 5708416 1610408 5708376 1608928 5707040 1610504 5708616 -1610504 5708616 1610456 5708504 1610408 5708416 1608928 5707040 -1608608 5713032 1610552 5708656 1610504 5708616 1608928 5707040 -1608928 5707040 1608336 5713136 1608608 5713032 1610504 5708616 -1608336 5713136 1608928 5707040 1608632 5706656 1608280 5713176 -1608632 5706656 1604840 5714480 1608280 5713176 1608928 5707040 -1608336 5713136 1608608 5713032 1608928 5707040 1608280 5713176 -1608928 5707040 1608912 5706760 1608632 5706656 1608280 5713176 -1608280 5713176 1608824 5707056 1608632 5706656 1604840 5714480 -1608280 5713176 1608824 5707056 1604840 5714480 1608240 5713248 -1608632 5706656 1604784 5714488 1604840 5714480 1608824 5707056 -1604840 5714480 1608280 5713176 1608824 5707056 1604784 5714488 -1608632 5706656 1608824 5707056 1608928 5707040 1608912 5706760 -1608632 5706656 1608824 5707056 1608912 5706760 1608680 5706648 -1608928 5707040 1608984 5706784 1608912 5706760 1608824 5707056 -1608824 5707056 1608280 5713176 1608928 5707040 1608912 5706760 -1608824 5707056 1608928 5707040 1608912 5706760 1608680 5706648 -1608280 5713176 1608928 5707040 1608824 5707056 1604840 5714480 -1608824 5707056 1608680 5706648 1608632 5706656 1604784 5714488 -1608632 5706656 1604744 5714504 1604784 5714488 1608824 5707056 -1608928 5707040 1608824 5707056 1608280 5713176 1608336 5713136 -1608928 5707040 1608824 5707056 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1608824 5707056 -1608928 5707040 1608912 5706760 1608824 5707056 1608608 5713032 -1608824 5707056 1604840 5714480 1608280 5713176 1608336 5713136 -1608928 5707040 1608824 5707056 1608608 5713032 1610504 5708616 -1608824 5707056 1608336 5713136 1608608 5713032 1610504 5708616 -1608928 5707040 1608912 5706760 1608824 5707056 1610504 5708616 -1608608 5713032 1610552 5708656 1610504 5708616 1608824 5707056 -1608928 5707040 1608824 5707056 1610504 5708616 1610408 5708416 -1608928 5707040 1608824 5707056 1610408 5708416 1610408 5708376 -1608928 5707040 1608824 5707056 1610408 5708376 1609048 5707032 -1608824 5707056 1610408 5708416 1610408 5708376 1609048 5707032 -1610408 5708376 1610440 5708328 1609048 5707032 1608824 5707056 -1608928 5707040 1608912 5706760 1608824 5707056 1609048 5707032 -1610504 5708616 1610456 5708504 1610408 5708416 1608824 5707056 -1608824 5707056 1610504 5708616 1610408 5708416 1610408 5708376 -1608824 5707056 1608608 5713032 1610504 5708616 1610408 5708416 -1608824 5707056 1608280 5713176 1608336 5713136 1608608 5713032 -1608912 5706760 1608784 5706656 1608680 5706648 1608824 5707056 -1608680 5706648 1608632 5706656 1608824 5707056 1608784 5706656 -1608912 5706760 1608784 5706656 1608824 5707056 1608928 5707040 -1608824 5707056 1608720 5707128 1604784 5714488 1604840 5714480 -1608824 5707056 1608720 5707128 1604840 5714480 1608280 5713176 -1604840 5714480 1608240 5713248 1608280 5713176 1608720 5707128 -1608720 5707128 1604784 5714488 1604840 5714480 1608280 5713176 -1608824 5707056 1608720 5707128 1608280 5713176 1608336 5713136 -1608720 5707128 1604840 5714480 1608280 5713176 1608336 5713136 -1608824 5707056 1608632 5706656 1608720 5707128 1608336 5713136 -1608632 5706656 1608720 5707128 1608824 5707056 1608680 5706648 -1608720 5707128 1608632 5706656 1604784 5714488 1604840 5714480 -1604784 5714488 1608720 5707128 1608632 5706656 1604744 5714504 -1608720 5707128 1608824 5707056 1608632 5706656 1604744 5714504 -1608632 5706656 1602152 5697040 1604744 5714504 1608720 5707128 -1604784 5714488 1604840 5714480 1608720 5707128 1604744 5714504 -1608824 5707056 1608720 5707128 1608336 5713136 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1608720 5707128 -1608824 5707056 1608720 5707128 1608608 5713032 1610504 5708616 -1608720 5707128 1608280 5713176 1608336 5713136 1608608 5713032 -1608824 5707056 1608632 5706656 1608720 5707128 1610504 5708616 -1608608 5713032 1610552 5708656 1610504 5708616 1608720 5707128 -1608824 5707056 1608720 5707128 1610504 5708616 1610408 5708416 -1608720 5707128 1608608 5713032 1610504 5708616 1610408 5708416 -1608824 5707056 1608632 5706656 1608720 5707128 1610408 5708416 -1610504 5708616 1610456 5708504 1610408 5708416 1608720 5707128 -1608824 5707056 1608720 5707128 1610408 5708416 1610408 5708376 -1608824 5707056 1608720 5707128 1610408 5708376 1609048 5707032 -1610408 5708376 1610440 5708328 1609048 5707032 1608720 5707128 -1608824 5707056 1608720 5707128 1609048 5707032 1608928 5707040 -1608720 5707128 1610408 5708376 1609048 5707032 1608928 5707040 -1608824 5707056 1608632 5706656 1608720 5707128 1608928 5707040 -1608720 5707128 1610408 5708416 1610408 5708376 1609048 5707032 -1608720 5707128 1610504 5708616 1610408 5708416 1610408 5708376 -1608720 5707128 1608336 5713136 1608608 5713032 1610504 5708616 -1608280 5713176 1608696 5707176 1604840 5714480 1608240 5713248 -1608720 5707128 1608696 5707176 1608280 5713176 1608336 5713136 -1608720 5707128 1604840 5714480 1608696 5707176 1608336 5713136 -1608696 5707176 1604840 5714480 1608280 5713176 1608336 5713136 -1604840 5714480 1608696 5707176 1608720 5707128 1604784 5714488 -1608696 5707176 1608336 5713136 1608720 5707128 1604784 5714488 -1604840 5714480 1608280 5713176 1608696 5707176 1604784 5714488 -1608720 5707128 1608696 5707176 1608336 5713136 1608608 5713032 -1608720 5707128 1604784 5714488 1608696 5707176 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1608696 5707176 -1608696 5707176 1608280 5713176 1608336 5713136 1608608 5713032 -1608720 5707128 1604744 5714504 1604784 5714488 1608696 5707176 -1608720 5707128 1604744 5714504 1608696 5707176 1608608 5713032 -1604784 5714488 1604840 5714480 1608696 5707176 1604744 5714504 -1608720 5707128 1608632 5706656 1604744 5714504 1608696 5707176 -1608720 5707128 1608632 5706656 1608696 5707176 1608608 5713032 -1608720 5707128 1608824 5707056 1608632 5706656 1608696 5707176 -1604744 5714504 1604784 5714488 1608696 5707176 1608632 5706656 -1608632 5706656 1602152 5697040 1604744 5714504 1608696 5707176 -1608720 5707128 1608696 5707176 1608608 5713032 1610504 5708616 -1608720 5707128 1608632 5706656 1608696 5707176 1610504 5708616 -1608720 5707128 1608696 5707176 1610504 5708616 1610408 5708416 -1608720 5707128 1608632 5706656 1608696 5707176 1610408 5708416 -1608696 5707176 1608336 5713136 1608608 5713032 1610504 5708616 -1610504 5708616 1610456 5708504 1610408 5708416 1608696 5707176 -1608608 5713032 1610552 5708656 1610504 5708616 1608696 5707176 -1608720 5707128 1608696 5707176 1610408 5708416 1610408 5708376 -1608720 5707128 1608632 5706656 1608696 5707176 1610408 5708376 -1608696 5707176 1610504 5708616 1610408 5708416 1610408 5708376 -1608720 5707128 1608696 5707176 1610408 5708376 1609048 5707032 -1608720 5707128 1608632 5706656 1608696 5707176 1609048 5707032 -1608720 5707128 1608696 5707176 1609048 5707032 1608928 5707040 -1608720 5707128 1608632 5706656 1608696 5707176 1608928 5707040 -1610408 5708376 1610440 5708328 1609048 5707032 1608696 5707176 -1608720 5707128 1608696 5707176 1608928 5707040 1608824 5707056 -1608720 5707128 1608632 5706656 1608696 5707176 1608824 5707056 -1608696 5707176 1609048 5707032 1608928 5707040 1608824 5707056 -1608696 5707176 1610408 5708376 1609048 5707032 1608928 5707040 -1608696 5707176 1610408 5708416 1610408 5708376 1609048 5707032 -1608696 5707176 1608608 5713032 1610504 5708616 1610408 5708416 -1608696 5707176 1608624 5707232 1604744 5714504 1604784 5714488 -1608696 5707176 1608632 5706656 1608624 5707232 1604784 5714488 -1608624 5707232 1608632 5706656 1604744 5714504 1604784 5714488 -1608696 5707176 1608624 5707232 1604784 5714488 1604840 5714480 -1608624 5707232 1604744 5714504 1604784 5714488 1604840 5714480 -1608696 5707176 1608624 5707232 1604840 5714480 1608280 5713176 -1608696 5707176 1608624 5707232 1608280 5713176 1608336 5713136 -1608624 5707232 1604840 5714480 1608280 5713176 1608336 5713136 -1608696 5707176 1608632 5706656 1608624 5707232 1608336 5713136 -1604840 5714480 1608240 5713248 1608280 5713176 1608624 5707232 -1608696 5707176 1608624 5707232 1608336 5713136 1608608 5713032 -1608624 5707232 1608280 5713176 1608336 5713136 1608608 5713032 -1608696 5707176 1608632 5706656 1608624 5707232 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1608624 5707232 -1608624 5707232 1604784 5714488 1604840 5714480 1608280 5713176 -1604744 5714504 1608624 5707232 1608632 5706656 1602152 5697040 -1608696 5707176 1608624 5707232 1608608 5713032 1610504 5708616 -1608696 5707176 1608632 5706656 1608624 5707232 1610504 5708616 -1608624 5707232 1608336 5713136 1608608 5713032 1610504 5708616 -1608608 5713032 1610552 5708656 1610504 5708616 1608624 5707232 -1608632 5706656 1608624 5707232 1608696 5707176 1608720 5707128 -1608632 5706656 1608624 5707232 1608720 5707128 1608824 5707056 -1608624 5707232 1610504 5708616 1608696 5707176 1608720 5707128 -1608632 5706656 1604744 5714504 1608624 5707232 1608720 5707128 -1608696 5707176 1608624 5707232 1610504 5708616 1610408 5708416 -1608696 5707176 1608720 5707128 1608624 5707232 1610408 5708416 -1608696 5707176 1608624 5707232 1610408 5708416 1610408 5708376 -1608696 5707176 1608720 5707128 1608624 5707232 1610408 5708376 -1608624 5707232 1608608 5713032 1610504 5708616 1610408 5708416 -1610504 5708616 1610456 5708504 1610408 5708416 1608624 5707232 -1608696 5707176 1608624 5707232 1610408 5708376 1609048 5707032 -1608696 5707176 1608720 5707128 1608624 5707232 1609048 5707032 -1610408 5708376 1610440 5708328 1609048 5707032 1608624 5707232 -1608624 5707232 1610408 5708416 1610408 5708376 1609048 5707032 -1608696 5707176 1608624 5707232 1609048 5707032 1608928 5707040 -1608624 5707232 1610504 5708616 1610408 5708416 1610408 5708376 -1608624 5707232 1608576 5707232 1604744 5714504 1604784 5714488 -1608624 5707232 1608576 5707232 1604784 5714488 1604840 5714480 -1608576 5707232 1604744 5714504 1604784 5714488 1604840 5714480 -1608624 5707232 1608632 5706656 1608576 5707232 1604840 5714480 -1608632 5706656 1608576 5707232 1608624 5707232 1608720 5707128 -1608632 5706656 1608576 5707232 1608720 5707128 1608824 5707056 -1608576 5707232 1604840 5714480 1608624 5707232 1608720 5707128 -1608576 5707232 1608632 5706656 1604744 5714504 1604784 5714488 -1608632 5706656 1604744 5714504 1608576 5707232 1608720 5707128 -1608624 5707232 1608576 5707232 1604840 5714480 1608280 5713176 -1608576 5707232 1604784 5714488 1604840 5714480 1608280 5713176 -1608624 5707232 1608576 5707232 1608280 5713176 1608336 5713136 -1608624 5707232 1608576 5707232 1608336 5713136 1608608 5713032 -1608576 5707232 1608280 5713176 1608336 5713136 1608608 5713032 -1608624 5707232 1608720 5707128 1608576 5707232 1608608 5713032 -1608336 5713136 1608576 5713048 1608608 5713032 1608576 5707232 -1604840 5714480 1608240 5713248 1608280 5713176 1608576 5707232 -1608624 5707232 1608576 5707232 1608608 5713032 1610504 5708616 -1608576 5707232 1608336 5713136 1608608 5713032 1610504 5708616 -1608624 5707232 1608720 5707128 1608576 5707232 1610504 5708616 -1608576 5707232 1604840 5714480 1608280 5713176 1608336 5713136 -1604744 5714504 1608576 5707232 1608632 5706656 1602152 5697040 -1608632 5706656 1602352 5697112 1602152 5697040 1608576 5707232 -1604744 5714504 1608576 5707232 1602152 5697040 1602072 5696992 -1602352 5697112 1602200 5697056 1602152 5697040 1608576 5707232 -1604744 5714504 1604784 5714488 1608576 5707232 1602152 5697040 -1608576 5707232 1608720 5707128 1608632 5706656 1602352 5697112 -1602152 5697040 1604744 5714504 1608576 5707232 1602352 5697112 -1608624 5707232 1608576 5707232 1610504 5708616 1610408 5708416 -1608624 5707232 1608720 5707128 1608576 5707232 1610408 5708416 -1608576 5707232 1608608 5713032 1610504 5708616 1610408 5708416 -1610504 5708616 1610456 5708504 1610408 5708416 1608576 5707232 -1608632 5706656 1602424 5697104 1602352 5697112 1608576 5707232 -1608608 5713032 1610552 5708656 1610504 5708616 1608576 5707232 -1608624 5707232 1608696 5707176 1608720 5707128 1608576 5707232 -1608624 5707232 1608696 5707176 1608576 5707232 1610408 5708416 -1608720 5707128 1608632 5706656 1608576 5707232 1608696 5707176 -1608624 5707232 1608576 5707232 1610408 5708416 1610408 5708376 -1608576 5707232 1608552 5707104 1602352 5697112 1602152 5697040 -1602352 5697112 1602200 5697056 1602152 5697040 1608552 5707104 -1608576 5707232 1608632 5706656 1608552 5707104 1602152 5697040 -1608632 5706656 1608552 5707104 1608576 5707232 1608720 5707128 -1608632 5706656 1608552 5707104 1608720 5707128 1608824 5707056 -1608576 5707232 1608696 5707176 1608720 5707128 1608552 5707104 -1608552 5707104 1602152 5697040 1608576 5707232 1608696 5707176 -1608552 5707104 1608696 5707176 1608720 5707128 1608824 5707056 -1608552 5707104 1608632 5706656 1602352 5697112 1602152 5697040 -1608632 5706656 1602352 5697112 1608552 5707104 1608824 5707056 -1608576 5707232 1608552 5707104 1602152 5697040 1604744 5714504 -1608552 5707104 1602352 5697112 1602152 5697040 1604744 5714504 -1602152 5697040 1602072 5696992 1604744 5714504 1608552 5707104 -1608576 5707232 1608552 5707104 1604744 5714504 1604784 5714488 -1608576 5707232 1608696 5707176 1608552 5707104 1604744 5714504 -1608632 5706656 1608552 5707104 1608824 5707056 1608680 5706648 -1602352 5697112 1608552 5707104 1608632 5706656 1602424 5697104 -1608576 5707232 1608624 5707232 1608696 5707176 1608552 5707104 -1608696 5707176 1608720 5707128 1608552 5707104 1608624 5707232 -1608576 5707232 1608624 5707232 1608552 5707104 1604744 5714504 -1608552 5707104 1608568 5706784 1602352 5697112 1602152 5697040 -1608552 5707104 1608568 5706784 1602152 5697040 1604744 5714504 -1602352 5697112 1602200 5697056 1602152 5697040 1608568 5706784 -1608552 5707104 1608632 5706656 1608568 5706784 1602152 5697040 -1608632 5706656 1608568 5706784 1608552 5707104 1608824 5707056 -1608552 5707104 1608720 5707128 1608824 5707056 1608568 5706784 -1608552 5707104 1608696 5707176 1608720 5707128 1608568 5706784 -1608568 5706784 1602152 5697040 1608552 5707104 1608720 5707128 -1608824 5707056 1608632 5706656 1608568 5706784 1608720 5707128 -1608568 5706784 1608632 5706656 1602352 5697112 1602152 5697040 -1608632 5706656 1602352 5697112 1608568 5706784 1608824 5707056 -1608632 5706656 1608568 5706784 1608824 5707056 1608680 5706648 -1608568 5706784 1608720 5707128 1608824 5707056 1608680 5706648 -1608632 5706656 1602352 5697112 1608568 5706784 1608680 5706648 -1608824 5707056 1608784 5706656 1608680 5706648 1608568 5706784 -1608824 5707056 1608784 5706656 1608568 5706784 1608720 5707128 -1608680 5706648 1608632 5706656 1608568 5706784 1608784 5706656 -1602352 5697112 1608568 5706784 1608632 5706656 1602424 5697104 -1608824 5707056 1608912 5706760 1608784 5706656 1608568 5706784 -1608824 5707056 1608912 5706760 1608568 5706784 1608720 5707128 -1608784 5706656 1608680 5706648 1608568 5706784 1608912 5706760 -1608824 5707056 1608928 5707040 1608912 5706760 1608568 5706784 -1608568 5706784 1608592 5706712 1602352 5697112 1602152 5697040 -1608632 5706656 1608592 5706712 1608568 5706784 1608680 5706648 -1608592 5706712 1602352 5697112 1608568 5706784 1608680 5706648 -1608632 5706656 1602352 5697112 1608592 5706712 1608680 5706648 -1608568 5706784 1608784 5706656 1608680 5706648 1608592 5706712 -1602352 5697112 1608592 5706712 1608632 5706656 1602424 5697104 -1602352 5697112 1608568 5706784 1608592 5706712 1602424 5697104 -1608592 5706712 1608680 5706648 1608632 5706656 1602424 5697104 -1608632 5706656 1602464 5697088 1602424 5697104 1608592 5706712 -1602152 5697040 1604104 5700768 1608552 5707104 1608568 5706784 -1604744 5714504 1604104 5700768 1602152 5697040 1602072 5696992 -1602152 5697040 1604104 5700768 1608568 5706784 1602352 5697112 -1604104 5700768 1608552 5707104 1608568 5706784 1602352 5697112 -1602152 5697040 1604104 5700768 1602352 5697112 1602200 5697056 -1602352 5697112 1602312 5697088 1602200 5697056 1604104 5700768 -1604104 5700768 1608568 5706784 1602352 5697112 1602200 5697056 -1608568 5706784 1608592 5706712 1602352 5697112 1604104 5700768 -1608568 5706784 1608592 5706712 1604104 5700768 1608552 5707104 -1602352 5697112 1602200 5697056 1604104 5700768 1608592 5706712 -1608592 5706712 1602424 5697104 1602352 5697112 1604104 5700768 -1602352 5697112 1602200 5697056 1604104 5700768 1602424 5697104 -1608592 5706712 1602424 5697104 1604104 5700768 1608568 5706784 -1604104 5700768 1604744 5714504 1608552 5707104 1608568 5706784 -1604744 5714504 1608552 5707104 1604104 5700768 1602072 5696992 -1602152 5697040 1602072 5696992 1604104 5700768 1602200 5697056 -1608552 5707104 1604104 5700768 1604744 5714504 1608576 5707232 -1608592 5706712 1608632 5706656 1602424 5697104 1604104 5700768 -1608592 5706712 1608632 5706656 1604104 5700768 1608568 5706784 -1602424 5697104 1602352 5697112 1604104 5700768 1608632 5706656 -1608632 5706656 1602464 5697088 1602424 5697104 1604104 5700768 -1602424 5697104 1602352 5697112 1604104 5700768 1602464 5697088 -1608632 5706656 1602504 5697056 1602464 5697088 1604104 5700768 -1608632 5706656 1608680 5706648 1602504 5697056 1604104 5700768 -1602464 5697088 1602424 5697104 1604104 5700768 1602504 5697056 -1608680 5706648 1609424 5706616 1602504 5697056 1604104 5700768 -1608680 5706648 1609424 5706616 1604104 5700768 1608632 5706656 -1602504 5697056 1602464 5697088 1604104 5700768 1609424 5706616 -1608632 5706656 1608680 5706648 1604104 5700768 1608592 5706712 -1608680 5706648 1608784 5706656 1609424 5706616 1604104 5700768 -1609424 5706616 1602504 5696992 1602504 5697056 1604104 5700768 -1609424 5706616 1602504 5696992 1604104 5700768 1608680 5706648 -1609424 5706616 1602224 5696056 1602504 5696992 1604104 5700768 -1602504 5697056 1602464 5697088 1604104 5700768 1602504 5696992 -1604744 5714504 1604104 5700768 1602072 5696992 1601864 5696864 -1604104 5700768 1602152 5697040 1602072 5696992 1601864 5696864 -1602072 5696992 1602008 5696944 1601864 5696864 1604104 5700768 -1604744 5714504 1604104 5700768 1601864 5696864 1604704 5714560 -1604744 5714504 1608552 5707104 1604104 5700768 1604704 5714560 -1601864 5696864 1601808 5696808 1604704 5714560 1604104 5700768 -1604704 5714560 1604744 5714504 1604104 5700768 1601808 5696808 -1601808 5696808 1604696 5714600 1604704 5714560 1604104 5700768 -1604104 5700768 1602072 5696992 1601864 5696864 1601808 5696808 -1602152 5697040 1602120 5697008 1602072 5696992 1604104 5700768 -1604104 5700768 1604152 5700872 1608552 5707104 1608568 5706784 -1604104 5700768 1604152 5700872 1608568 5706784 1608592 5706712 -1604104 5700768 1604152 5700872 1608592 5706712 1608632 5706656 -1604152 5700872 1608568 5706784 1608592 5706712 1608632 5706656 -1604152 5700872 1608552 5707104 1608568 5706784 1608592 5706712 -1604744 5714504 1604152 5700872 1604104 5700768 1604704 5714560 -1604104 5700768 1601808 5696808 1604704 5714560 1604152 5700872 -1604104 5700768 1604704 5714560 1604152 5700872 1608632 5706656 -1604152 5700872 1604744 5714504 1608552 5707104 1608568 5706784 -1604744 5714504 1608552 5707104 1604152 5700872 1604704 5714560 -1608552 5707104 1604152 5700872 1604744 5714504 1608576 5707232 -1604104 5700768 1604152 5700872 1608632 5706656 1608680 5706648 -1604152 5700872 1608592 5706712 1608632 5706656 1608680 5706648 -1604104 5700768 1604704 5714560 1604152 5700872 1608680 5706648 -1604104 5700768 1604152 5700872 1608680 5706648 1609424 5706616 -1604104 5700768 1604704 5714560 1604152 5700872 1609424 5706616 -1604104 5700768 1604152 5700872 1609424 5706616 1602504 5696992 -1604152 5700872 1608632 5706656 1608680 5706648 1609424 5706616 -1608680 5706648 1608784 5706656 1609424 5706616 1604152 5700872 -1604152 5700872 1604160 5700992 1608552 5707104 1608568 5706784 -1604152 5700872 1604160 5700992 1608568 5706784 1608592 5706712 -1604152 5700872 1604160 5700992 1608592 5706712 1608632 5706656 -1604152 5700872 1604160 5700992 1608632 5706656 1608680 5706648 -1604160 5700992 1608592 5706712 1608632 5706656 1608680 5706648 -1604160 5700992 1608568 5706784 1608592 5706712 1608632 5706656 -1604160 5700992 1608552 5707104 1608568 5706784 1608592 5706712 -1604152 5700872 1604744 5714504 1604160 5700992 1608680 5706648 -1604744 5714504 1604160 5700992 1604152 5700872 1604704 5714560 -1604152 5700872 1604104 5700768 1604704 5714560 1604160 5700992 -1604104 5700768 1601808 5696808 1604704 5714560 1604160 5700992 -1601808 5696808 1604696 5714600 1604704 5714560 1604160 5700992 -1604104 5700768 1601808 5696808 1604160 5700992 1604152 5700872 -1604744 5714504 1608552 5707104 1604160 5700992 1604704 5714560 -1604160 5700992 1608680 5706648 1604152 5700872 1604104 5700768 -1604704 5714560 1604744 5714504 1604160 5700992 1601808 5696808 -1604160 5700992 1604744 5714504 1608552 5707104 1608568 5706784 -1608552 5707104 1604160 5700992 1604744 5714504 1608576 5707232 -1604104 5700768 1601864 5696864 1601808 5696808 1604160 5700992 -1601808 5696808 1604704 5714560 1604160 5700992 1601864 5696864 -1604104 5700768 1601864 5696864 1604160 5700992 1604152 5700872 -1604152 5700872 1604160 5700992 1608680 5706648 1609424 5706616 -1604160 5700992 1608632 5706656 1608680 5706648 1609424 5706616 -1604152 5700872 1604104 5700768 1604160 5700992 1609424 5706616 -1604152 5700872 1604160 5700992 1609424 5706616 1604104 5700768 -1608680 5706648 1608784 5706656 1609424 5706616 1604160 5700992 -1604104 5700768 1602072 5696992 1601864 5696864 1604160 5700992 -1601808 5696808 1604152 5701064 1604160 5700992 1601864 5696864 -1604704 5714560 1604152 5701064 1601808 5696808 1604696 5714600 -1604152 5701064 1604704 5714560 1604160 5700992 1601864 5696864 -1604160 5700992 1604152 5701064 1604704 5714560 1604744 5714504 -1604160 5700992 1601864 5696864 1604152 5701064 1604744 5714504 -1604160 5700992 1604152 5701064 1604744 5714504 1608552 5707104 -1604160 5700992 1601864 5696864 1604152 5701064 1608552 5707104 -1604152 5701064 1601808 5696808 1604704 5714560 1604744 5714504 -1604152 5701064 1604704 5714560 1604744 5714504 1608552 5707104 -1604160 5700992 1604152 5701064 1608552 5707104 1608568 5706784 -1604160 5700992 1601864 5696864 1604152 5701064 1608568 5706784 -1604152 5701064 1604744 5714504 1608552 5707104 1608568 5706784 -1604160 5700992 1604152 5701064 1608568 5706784 1608592 5706712 -1604160 5700992 1604152 5701064 1608592 5706712 1608632 5706656 -1604160 5700992 1604152 5701064 1608632 5706656 1608680 5706648 -1604160 5700992 1604152 5701064 1608680 5706648 1609424 5706616 -1604152 5701064 1608632 5706656 1608680 5706648 1609424 5706616 -1604152 5701064 1608592 5706712 1608632 5706656 1608680 5706648 -1604160 5700992 1601864 5696864 1604152 5701064 1609424 5706616 -1604152 5701064 1608568 5706784 1608592 5706712 1608632 5706656 -1604152 5701064 1608552 5707104 1608568 5706784 1608592 5706712 -1601808 5696808 1604704 5714560 1604152 5701064 1601864 5696864 -1604744 5714504 1608576 5707232 1608552 5707104 1604152 5701064 -1604160 5700992 1604104 5700768 1601864 5696864 1604152 5701064 -1601864 5696864 1601808 5696808 1604152 5701064 1604104 5700768 -1604160 5700992 1604152 5700872 1604104 5700768 1604152 5701064 -1604160 5700992 1604104 5700768 1604152 5701064 1609424 5706616 -1604160 5700992 1604152 5701064 1609424 5706616 1604152 5700872 -1608680 5706648 1608784 5706656 1609424 5706616 1604152 5701064 -1604104 5700768 1602072 5696992 1601864 5696864 1604152 5701064 -1604704 5714560 1604128 5701096 1601808 5696808 1604696 5714600 -1604152 5701064 1604128 5701096 1604704 5714560 1604744 5714504 -1604152 5701064 1604128 5701096 1604744 5714504 1608552 5707104 -1604152 5701064 1604128 5701096 1608552 5707104 1608568 5706784 -1604128 5701096 1604704 5714560 1604744 5714504 1608552 5707104 -1604128 5701096 1604744 5714504 1608552 5707104 1608568 5706784 -1604152 5701064 1604128 5701096 1608568 5706784 1608592 5706712 -1604128 5701096 1608552 5707104 1608568 5706784 1608592 5706712 -1604152 5701064 1604128 5701096 1608592 5706712 1608632 5706656 -1604152 5701064 1604128 5701096 1608632 5706656 1608680 5706648 -1604128 5701096 1608568 5706784 1608592 5706712 1608632 5706656 -1601808 5696808 1604128 5701096 1604152 5701064 1601864 5696864 -1604152 5701064 1604104 5700768 1601864 5696864 1604128 5701096 -1601864 5696864 1601808 5696808 1604128 5701096 1604104 5700768 -1604152 5701064 1604104 5700768 1604128 5701096 1608632 5706656 -1604128 5701096 1601808 5696808 1604704 5714560 1604744 5714504 -1601808 5696808 1604704 5714560 1604128 5701096 1601864 5696864 -1604744 5714504 1608576 5707232 1608552 5707104 1604128 5701096 -1604152 5701064 1604160 5700992 1604104 5700768 1604128 5701096 -1604104 5700768 1601864 5696864 1604128 5701096 1604160 5700992 -1604160 5700992 1604152 5700872 1604104 5700768 1604128 5701096 -1604104 5700768 1601864 5696864 1604128 5701096 1604152 5700872 -1604152 5701064 1604160 5700992 1604128 5701096 1608632 5706656 -1604160 5700992 1604152 5700872 1604128 5701096 1604152 5701064 -1604104 5700768 1602072 5696992 1601864 5696864 1604128 5701096 -1604704 5714560 1604080 5701120 1601808 5696808 1604696 5714600 -1604128 5701096 1604080 5701120 1604704 5714560 1604744 5714504 -1604128 5701096 1604080 5701120 1604744 5714504 1608552 5707104 -1604128 5701096 1604080 5701120 1608552 5707104 1608568 5706784 -1604128 5701096 1604080 5701120 1608568 5706784 1608592 5706712 -1604080 5701120 1604744 5714504 1608552 5707104 1608568 5706784 -1604080 5701120 1608552 5707104 1608568 5706784 1608592 5706712 -1604128 5701096 1604080 5701120 1608592 5706712 1608632 5706656 -1604080 5701120 1608568 5706784 1608592 5706712 1608632 5706656 -1604128 5701096 1604080 5701120 1608632 5706656 1604152 5701064 -1604080 5701120 1604704 5714560 1604744 5714504 1608552 5707104 -1604128 5701096 1601808 5696808 1604080 5701120 1608632 5706656 -1601808 5696808 1604080 5701120 1604128 5701096 1601864 5696864 -1604128 5701096 1604104 5700768 1601864 5696864 1604080 5701120 -1604128 5701096 1604152 5700872 1604104 5700768 1604080 5701120 -1604128 5701096 1604160 5700992 1604152 5700872 1604080 5701120 -1604152 5700872 1604104 5700768 1604080 5701120 1604160 5700992 -1604104 5700768 1601864 5696864 1604080 5701120 1604152 5700872 -1604080 5701120 1608632 5706656 1604128 5701096 1604160 5700992 -1601864 5696864 1601808 5696808 1604080 5701120 1604104 5700768 -1604080 5701120 1601808 5696808 1604704 5714560 1604744 5714504 -1601808 5696808 1604704 5714560 1604080 5701120 1601864 5696864 -1604744 5714504 1608576 5707232 1608552 5707104 1604080 5701120 -1604128 5701096 1604152 5701064 1604160 5700992 1604080 5701120 -1604160 5700992 1604152 5700872 1604080 5701120 1604152 5701064 -1604128 5701096 1604152 5701064 1604080 5701120 1608632 5706656 -1604104 5700768 1602072 5696992 1601864 5696864 1604080 5701120 -1604104 5700768 1602152 5697040 1602072 5696992 1604080 5701120 -1602072 5696992 1602008 5696944 1601864 5696864 1604080 5701120 -1604104 5700768 1602072 5696992 1604080 5701120 1604152 5700872 -1601864 5696864 1601808 5696808 1604080 5701120 1602072 5696992 -1604704 5714560 1603952 5701112 1601808 5696808 1604696 5714600 -1604080 5701120 1603952 5701112 1604704 5714560 1604744 5714504 -1604080 5701120 1603952 5701112 1604744 5714504 1608552 5707104 -1604080 5701120 1603952 5701112 1608552 5707104 1608568 5706784 -1604080 5701120 1603952 5701112 1608568 5706784 1608592 5706712 -1603952 5701112 1604744 5714504 1608552 5707104 1608568 5706784 -1603952 5701112 1604704 5714560 1604744 5714504 1608552 5707104 -1604080 5701120 1601808 5696808 1603952 5701112 1608568 5706784 -1601808 5696808 1603952 5701112 1604080 5701120 1601864 5696864 -1604080 5701120 1602072 5696992 1601864 5696864 1603952 5701112 -1602072 5696992 1602008 5696944 1601864 5696864 1603952 5701112 -1603952 5701112 1608568 5706784 1604080 5701120 1602072 5696992 -1601864 5696864 1601808 5696808 1603952 5701112 1602072 5696992 -1603952 5701112 1601808 5696808 1604704 5714560 1604744 5714504 -1601808 5696808 1604704 5714560 1603952 5701112 1601864 5696864 -1604744 5714504 1608576 5707232 1608552 5707104 1603952 5701112 -1604080 5701120 1604104 5700768 1602072 5696992 1603952 5701112 -1604104 5700768 1602152 5697040 1602072 5696992 1603952 5701112 -1604104 5700768 1602200 5697056 1602152 5697040 1603952 5701112 -1602152 5697040 1602072 5696992 1603952 5701112 1602200 5697056 -1604104 5700768 1602352 5697112 1602200 5697056 1603952 5701112 -1602352 5697112 1602312 5697088 1602200 5697056 1603952 5701112 -1604104 5700768 1602424 5697104 1602352 5697112 1603952 5701112 -1602200 5697056 1602152 5697040 1603952 5701112 1602352 5697112 -1604080 5701120 1604152 5700872 1604104 5700768 1603952 5701112 -1604080 5701120 1604160 5700992 1604152 5700872 1603952 5701112 -1604080 5701120 1604152 5701064 1604160 5700992 1603952 5701112 -1604152 5700872 1604104 5700768 1603952 5701112 1604160 5700992 -1602072 5696992 1601864 5696864 1603952 5701112 1602152 5697040 -1604080 5701120 1604160 5700992 1603952 5701112 1608568 5706784 -1604104 5700768 1602352 5697112 1603952 5701112 1604152 5700872 -1602152 5697040 1602120 5697008 1602072 5696992 1603952 5701112 -1604704 5714560 1603864 5701080 1601808 5696808 1604696 5714600 -1603952 5701112 1603864 5701080 1604704 5714560 1604744 5714504 -1603952 5701112 1603864 5701080 1604744 5714504 1608552 5707104 -1603952 5701112 1603864 5701080 1608552 5707104 1608568 5706784 -1603864 5701080 1604704 5714560 1604744 5714504 1608552 5707104 -1603952 5701112 1601808 5696808 1603864 5701080 1608552 5707104 -1601808 5696808 1603864 5701080 1603952 5701112 1601864 5696864 -1603952 5701112 1602072 5696992 1601864 5696864 1603864 5701080 -1602072 5696992 1602008 5696944 1601864 5696864 1603864 5701080 -1603952 5701112 1602152 5697040 1602072 5696992 1603864 5701080 -1603952 5701112 1602200 5697056 1602152 5697040 1603864 5701080 -1603952 5701112 1602352 5697112 1602200 5697056 1603864 5701080 -1602352 5697112 1602312 5697088 1602200 5697056 1603864 5701080 -1602200 5697056 1602152 5697040 1603864 5701080 1602352 5697112 -1603952 5701112 1604104 5700768 1602352 5697112 1603864 5701080 -1604104 5700768 1602424 5697104 1602352 5697112 1603864 5701080 -1602352 5697112 1602200 5697056 1603864 5701080 1604104 5700768 -1602152 5697040 1602072 5696992 1603864 5701080 1602200 5697056 -1602072 5696992 1601864 5696864 1603864 5701080 1602152 5697040 -1603864 5701080 1608552 5707104 1603952 5701112 1604104 5700768 -1601864 5696864 1601808 5696808 1603864 5701080 1602072 5696992 -1603864 5701080 1601808 5696808 1604704 5714560 1604744 5714504 -1601808 5696808 1604704 5714560 1603864 5701080 1601864 5696864 -1604744 5714504 1608576 5707232 1608552 5707104 1603864 5701080 -1603952 5701112 1604152 5700872 1604104 5700768 1603864 5701080 -1604104 5700768 1602352 5697112 1603864 5701080 1604152 5700872 -1603952 5701112 1604160 5700992 1604152 5700872 1603864 5701080 -1603952 5701112 1604152 5700872 1603864 5701080 1608552 5707104 -1602152 5697040 1602120 5697008 1602072 5696992 1603864 5701080 -1604704 5714560 1603696 5700928 1601808 5696808 1604696 5714600 -1603864 5701080 1603696 5700928 1604704 5714560 1604744 5714504 -1603864 5701080 1603696 5700928 1604744 5714504 1608552 5707104 -1603864 5701080 1601808 5696808 1603696 5700928 1604744 5714504 -1601808 5696808 1603696 5700928 1603864 5701080 1601864 5696864 -1603864 5701080 1602072 5696992 1601864 5696864 1603696 5700928 -1602072 5696992 1602008 5696944 1601864 5696864 1603696 5700928 -1603864 5701080 1602152 5697040 1602072 5696992 1603696 5700928 -1603864 5701080 1602200 5697056 1602152 5697040 1603696 5700928 -1603864 5701080 1602352 5697112 1602200 5697056 1603696 5700928 -1602352 5697112 1602312 5697088 1602200 5697056 1603696 5700928 -1603864 5701080 1604104 5700768 1602352 5697112 1603696 5700928 -1602352 5697112 1602200 5697056 1603696 5700928 1604104 5700768 -1603864 5701080 1604152 5700872 1604104 5700768 1603696 5700928 -1604104 5700768 1602424 5697104 1602352 5697112 1603696 5700928 -1602352 5697112 1602200 5697056 1603696 5700928 1602424 5697104 -1604104 5700768 1602464 5697088 1602424 5697104 1603696 5700928 -1604104 5700768 1602424 5697104 1603696 5700928 1603864 5701080 -1602200 5697056 1602152 5697040 1603696 5700928 1602352 5697112 -1602152 5697040 1602072 5696992 1603696 5700928 1602200 5697056 -1602072 5696992 1601864 5696864 1603696 5700928 1602152 5697040 -1603696 5700928 1604744 5714504 1603864 5701080 1604104 5700768 -1601864 5696864 1601808 5696808 1603696 5700928 1602072 5696992 -1601808 5696808 1601784 5696736 1604696 5714600 1603696 5700928 -1604704 5714560 1604744 5714504 1603696 5700928 1604696 5714600 -1603696 5700928 1601864 5696864 1601808 5696808 1604696 5714600 -1602152 5697040 1602120 5697008 1602072 5696992 1603696 5700928 -1603696 5700928 1603664 5700888 1604696 5714600 1604704 5714560 -1604696 5714600 1603664 5700888 1601808 5696808 1601784 5696736 -1603696 5700928 1603664 5700888 1604704 5714560 1604744 5714504 -1603696 5700928 1601808 5696808 1603664 5700888 1604704 5714560 -1601808 5696808 1603664 5700888 1603696 5700928 1601864 5696864 -1603696 5700928 1602072 5696992 1601864 5696864 1603664 5700888 -1602072 5696992 1602008 5696944 1601864 5696864 1603664 5700888 -1603696 5700928 1602152 5697040 1602072 5696992 1603664 5700888 -1603696 5700928 1602200 5697056 1602152 5697040 1603664 5700888 -1603696 5700928 1602352 5697112 1602200 5697056 1603664 5700888 -1602352 5697112 1602312 5697088 1602200 5697056 1603664 5700888 -1603696 5700928 1602424 5697104 1602352 5697112 1603664 5700888 -1603696 5700928 1604104 5700768 1602424 5697104 1603664 5700888 -1602424 5697104 1602352 5697112 1603664 5700888 1604104 5700768 -1604104 5700768 1602464 5697088 1602424 5697104 1603664 5700888 -1602424 5697104 1602352 5697112 1603664 5700888 1602464 5697088 -1604104 5700768 1602464 5697088 1603664 5700888 1603696 5700928 -1603696 5700928 1603864 5701080 1604104 5700768 1603664 5700888 -1602352 5697112 1602200 5697056 1603664 5700888 1602424 5697104 -1602200 5697056 1602152 5697040 1603664 5700888 1602352 5697112 -1602152 5697040 1602072 5696992 1603664 5700888 1602200 5697056 -1602072 5696992 1601864 5696864 1603664 5700888 1602152 5697040 -1604104 5700768 1602504 5697056 1602464 5697088 1603664 5700888 -1603664 5700888 1604704 5714560 1603696 5700928 1604104 5700768 -1601864 5696864 1601808 5696808 1603664 5700888 1602072 5696992 -1603664 5700888 1601808 5696808 1604696 5714600 1604704 5714560 -1601808 5696808 1604696 5714600 1603664 5700888 1601864 5696864 -1602152 5697040 1602120 5697008 1602072 5696992 1603664 5700888 -1604696 5714600 1603464 5700736 1601808 5696808 1601784 5696736 -1603664 5700888 1603464 5700736 1604696 5714600 1604704 5714560 -1603664 5700888 1603464 5700736 1604704 5714560 1603696 5700928 -1604704 5714560 1604744 5714504 1603696 5700928 1603464 5700736 -1603696 5700928 1603664 5700888 1603464 5700736 1604744 5714504 -1604744 5714504 1603864 5701080 1603696 5700928 1603464 5700736 -1603696 5700928 1603664 5700888 1603464 5700736 1603864 5701080 -1604744 5714504 1608552 5707104 1603864 5701080 1603464 5700736 -1604744 5714504 1603864 5701080 1603464 5700736 1604704 5714560 -1603464 5700736 1604696 5714600 1604704 5714560 1604744 5714504 -1603664 5700888 1601808 5696808 1603464 5700736 1603696 5700928 -1601808 5696808 1603464 5700736 1603664 5700888 1601864 5696864 -1603664 5700888 1602072 5696992 1601864 5696864 1603464 5700736 -1602072 5696992 1602008 5696944 1601864 5696864 1603464 5700736 -1603664 5700888 1602152 5697040 1602072 5696992 1603464 5700736 -1603664 5700888 1602200 5697056 1602152 5697040 1603464 5700736 -1603664 5700888 1602352 5697112 1602200 5697056 1603464 5700736 -1602352 5697112 1602312 5697088 1602200 5697056 1603464 5700736 -1603664 5700888 1602424 5697104 1602352 5697112 1603464 5700736 -1603664 5700888 1602464 5697088 1602424 5697104 1603464 5700736 -1603664 5700888 1604104 5700768 1602464 5697088 1603464 5700736 -1602464 5697088 1602424 5697104 1603464 5700736 1604104 5700768 -1603664 5700888 1603696 5700928 1604104 5700768 1603464 5700736 -1602424 5697104 1602352 5697112 1603464 5700736 1602464 5697088 -1602352 5697112 1602200 5697056 1603464 5700736 1602424 5697104 -1602200 5697056 1602152 5697040 1603464 5700736 1602352 5697112 -1602152 5697040 1602072 5696992 1603464 5700736 1602200 5697056 -1604104 5700768 1602504 5697056 1602464 5697088 1603464 5700736 -1602464 5697088 1602424 5697104 1603464 5700736 1602504 5697056 -1604104 5700768 1602504 5697056 1603464 5700736 1603664 5700888 -1602072 5696992 1601864 5696864 1603464 5700736 1602152 5697040 -1603464 5700736 1603696 5700928 1603664 5700888 1604104 5700768 -1601864 5696864 1601808 5696808 1603464 5700736 1602072 5696992 -1603464 5700736 1601808 5696808 1604696 5714600 1604704 5714560 -1601808 5696808 1604696 5714600 1603464 5700736 1601864 5696864 -1604104 5700768 1602504 5696992 1602504 5697056 1603464 5700736 -1602152 5697040 1602120 5697008 1602072 5696992 1603464 5700736 -1604696 5714600 1603416 5700672 1601808 5696808 1601784 5696736 -1603464 5700736 1603416 5700672 1604696 5714600 1604704 5714560 -1603464 5700736 1603416 5700672 1604704 5714560 1604744 5714504 -1603464 5700736 1601808 5696808 1603416 5700672 1604704 5714560 -1601808 5696808 1603416 5700672 1603464 5700736 1601864 5696864 -1601808 5696808 1604696 5714600 1603416 5700672 1601864 5696864 -1603464 5700736 1602072 5696992 1601864 5696864 1603416 5700672 -1602072 5696992 1602008 5696944 1601864 5696864 1603416 5700672 -1603464 5700736 1602152 5697040 1602072 5696992 1603416 5700672 -1603464 5700736 1602200 5697056 1602152 5697040 1603416 5700672 -1603464 5700736 1602352 5697112 1602200 5697056 1603416 5700672 -1602352 5697112 1602312 5697088 1602200 5697056 1603416 5700672 -1603464 5700736 1602424 5697104 1602352 5697112 1603416 5700672 -1603464 5700736 1602464 5697088 1602424 5697104 1603416 5700672 -1603464 5700736 1602504 5697056 1602464 5697088 1603416 5700672 -1602464 5697088 1602424 5697104 1603416 5700672 1602504 5697056 -1602424 5697104 1602352 5697112 1603416 5700672 1602464 5697088 -1602352 5697112 1602200 5697056 1603416 5700672 1602424 5697104 -1602200 5697056 1602152 5697040 1603416 5700672 1602352 5697112 -1603464 5700736 1604104 5700768 1602504 5697056 1603416 5700672 -1602504 5697056 1602464 5697088 1603416 5700672 1604104 5700768 -1603464 5700736 1603664 5700888 1604104 5700768 1603416 5700672 -1602152 5697040 1602072 5696992 1603416 5700672 1602200 5697056 -1602072 5696992 1601864 5696864 1603416 5700672 1602152 5697040 -1603416 5700672 1604704 5714560 1603464 5700736 1604104 5700768 -1601864 5696864 1601808 5696808 1603416 5700672 1602072 5696992 -1603416 5700672 1601808 5696808 1604696 5714600 1604704 5714560 -1604104 5700768 1602504 5696992 1602504 5697056 1603416 5700672 -1602152 5697040 1602120 5697008 1602072 5696992 1603416 5700672 -1601808 5696808 1603256 5700480 1603416 5700672 1601864 5696864 -1601808 5696808 1604696 5714600 1603256 5700480 1601864 5696864 -1603256 5700480 1604696 5714600 1603416 5700672 1601864 5696864 -1604696 5714600 1603256 5700480 1601808 5696808 1601784 5696736 -1603416 5700672 1602072 5696992 1601864 5696864 1603256 5700480 -1602072 5696992 1602008 5696944 1601864 5696864 1603256 5700480 -1603416 5700672 1602072 5696992 1603256 5700480 1604696 5714600 -1601864 5696864 1601808 5696808 1603256 5700480 1602072 5696992 -1603416 5700672 1602152 5697040 1602072 5696992 1603256 5700480 -1603416 5700672 1602152 5697040 1603256 5700480 1604696 5714600 -1603416 5700672 1602200 5697056 1602152 5697040 1603256 5700480 -1603416 5700672 1602200 5697056 1603256 5700480 1604696 5714600 -1603416 5700672 1602352 5697112 1602200 5697056 1603256 5700480 -1602352 5697112 1602312 5697088 1602200 5697056 1603256 5700480 -1603416 5700672 1602352 5697112 1603256 5700480 1604696 5714600 -1603416 5700672 1602424 5697104 1602352 5697112 1603256 5700480 -1603416 5700672 1602424 5697104 1603256 5700480 1604696 5714600 -1603416 5700672 1602464 5697088 1602424 5697104 1603256 5700480 -1603416 5700672 1602464 5697088 1603256 5700480 1604696 5714600 -1603416 5700672 1602504 5697056 1602464 5697088 1603256 5700480 -1603416 5700672 1604104 5700768 1602504 5697056 1603256 5700480 -1603416 5700672 1604104 5700768 1603256 5700480 1604696 5714600 -1602504 5697056 1602464 5697088 1603256 5700480 1604104 5700768 -1602464 5697088 1602424 5697104 1603256 5700480 1602504 5697056 -1602424 5697104 1602352 5697112 1603256 5700480 1602464 5697088 -1602352 5697112 1602200 5697056 1603256 5700480 1602424 5697104 -1603416 5700672 1603464 5700736 1604104 5700768 1603256 5700480 -1602200 5697056 1602152 5697040 1603256 5700480 1602352 5697112 -1602152 5697040 1602072 5696992 1603256 5700480 1602200 5697056 -1602072 5696992 1601864 5696864 1603256 5700480 1602152 5697040 -1603416 5700672 1603256 5700480 1604696 5714600 1604704 5714560 -1603256 5700480 1601808 5696808 1604696 5714600 1604704 5714560 -1603416 5700672 1604104 5700768 1603256 5700480 1604704 5714560 -1603416 5700672 1603256 5700480 1604704 5714560 1603464 5700736 -1603416 5700672 1604104 5700768 1603256 5700480 1603464 5700736 -1604704 5714560 1604744 5714504 1603464 5700736 1603256 5700480 -1603256 5700480 1604696 5714600 1604704 5714560 1603464 5700736 -1604104 5700768 1602504 5696992 1602504 5697056 1603256 5700480 -1602152 5697040 1602120 5697008 1602072 5696992 1603256 5700480 -1602152 5697040 1603224 5700384 1603256 5700480 1602200 5697056 -1603224 5700384 1602072 5696992 1603256 5700480 1602200 5697056 -1602152 5697040 1602072 5696992 1603224 5700384 1602200 5697056 -1603256 5700480 1602352 5697112 1602200 5697056 1603224 5700384 -1602352 5697112 1602312 5697088 1602200 5697056 1603224 5700384 -1603256 5700480 1602352 5697112 1603224 5700384 1602072 5696992 -1603256 5700480 1602424 5697104 1602352 5697112 1603224 5700384 -1603256 5700480 1602424 5697104 1603224 5700384 1602072 5696992 -1603256 5700480 1602464 5697088 1602424 5697104 1603224 5700384 -1603256 5700480 1602464 5697088 1603224 5700384 1602072 5696992 -1603256 5700480 1602504 5697056 1602464 5697088 1603224 5700384 -1603256 5700480 1602504 5697056 1603224 5700384 1602072 5696992 -1603256 5700480 1604104 5700768 1602504 5697056 1603224 5700384 -1603256 5700480 1603416 5700672 1604104 5700768 1603224 5700384 -1603256 5700480 1603416 5700672 1603224 5700384 1602072 5696992 -1604104 5700768 1602504 5697056 1603224 5700384 1603416 5700672 -1602504 5697056 1602464 5697088 1603224 5700384 1604104 5700768 -1602464 5697088 1602424 5697104 1603224 5700384 1602504 5697056 -1602424 5697104 1602352 5697112 1603224 5700384 1602464 5697088 -1603416 5700672 1603464 5700736 1604104 5700768 1603224 5700384 -1602352 5697112 1602200 5697056 1603224 5700384 1602424 5697104 -1602200 5697056 1602152 5697040 1603224 5700384 1602352 5697112 -1603256 5700480 1603224 5700384 1602072 5696992 1601864 5696864 -1602072 5696992 1602008 5696944 1601864 5696864 1603224 5700384 -1603256 5700480 1603416 5700672 1603224 5700384 1601864 5696864 -1603256 5700480 1603224 5700384 1601864 5696864 1601808 5696808 -1603256 5700480 1603416 5700672 1603224 5700384 1601808 5696808 -1603256 5700480 1603224 5700384 1601808 5696808 1604696 5714600 -1603256 5700480 1603224 5700384 1604696 5714600 1604704 5714560 -1603256 5700480 1603416 5700672 1603224 5700384 1604696 5714600 -1603224 5700384 1601864 5696864 1601808 5696808 1604696 5714600 -1603224 5700384 1602152 5697040 1602072 5696992 1601864 5696864 -1601808 5696808 1601784 5696736 1604696 5714600 1603224 5700384 -1603224 5700384 1602072 5696992 1601864 5696864 1601808 5696808 -1604104 5700768 1602504 5696992 1602504 5697056 1603224 5700384 -1602072 5696992 1603224 5700384 1602152 5697040 1602120 5697008 -1604104 5700768 1603272 5700360 1603224 5700384 1603416 5700672 -1603224 5700384 1603256 5700480 1603416 5700672 1603272 5700360 -1604104 5700768 1602504 5697056 1603272 5700360 1603416 5700672 -1603272 5700360 1602504 5697056 1603224 5700384 1603256 5700480 -1603416 5700672 1604104 5700768 1603272 5700360 1603256 5700480 -1603224 5700384 1603272 5700360 1602504 5697056 1602464 5697088 -1603224 5700384 1603256 5700480 1603272 5700360 1602464 5697088 -1603272 5700360 1604104 5700768 1602504 5697056 1602464 5697088 -1603224 5700384 1603272 5700360 1602464 5697088 1602424 5697104 -1603224 5700384 1603256 5700480 1603272 5700360 1602424 5697104 -1603272 5700360 1602504 5697056 1602464 5697088 1602424 5697104 -1603224 5700384 1603272 5700360 1602424 5697104 1602352 5697112 -1603224 5700384 1603256 5700480 1603272 5700360 1602352 5697112 -1603272 5700360 1602464 5697088 1602424 5697104 1602352 5697112 -1604104 5700768 1603272 5700360 1603416 5700672 1603464 5700736 -1603224 5700384 1603272 5700360 1602352 5697112 1602200 5697056 -1602504 5697056 1603272 5700360 1604104 5700768 1602504 5696992 -1604104 5700768 1603328 5700344 1603272 5700360 1603416 5700672 -1604104 5700768 1602504 5697056 1603328 5700344 1603416 5700672 -1603272 5700360 1603328 5700344 1602504 5697056 1602464 5697088 -1603328 5700344 1604104 5700768 1602504 5697056 1602464 5697088 -1603328 5700344 1602464 5697088 1603272 5700360 1603416 5700672 -1603272 5700360 1603256 5700480 1603416 5700672 1603328 5700344 -1603272 5700360 1603224 5700384 1603256 5700480 1603328 5700344 -1603416 5700672 1604104 5700768 1603328 5700344 1603256 5700480 -1603272 5700360 1603256 5700480 1603328 5700344 1602464 5697088 -1603272 5700360 1603328 5700344 1602464 5697088 1602424 5697104 -1603328 5700344 1602504 5697056 1602464 5697088 1602424 5697104 -1603272 5700360 1603256 5700480 1603328 5700344 1602424 5697104 -1603272 5700360 1603328 5700344 1602424 5697104 1602352 5697112 -1604104 5700768 1603328 5700344 1603416 5700672 1603464 5700736 -1602504 5697056 1603328 5700344 1604104 5700768 1602504 5696992 -1603328 5700344 1603472 5700352 1602504 5697056 1602464 5697088 -1603328 5700344 1604104 5700768 1603472 5700352 1602464 5697088 -1604104 5700768 1603472 5700352 1603328 5700344 1603416 5700672 -1603328 5700344 1603256 5700480 1603416 5700672 1603472 5700352 -1603472 5700352 1602464 5697088 1603328 5700344 1603256 5700480 -1603416 5700672 1604104 5700768 1603472 5700352 1603256 5700480 -1603472 5700352 1604104 5700768 1602504 5697056 1602464 5697088 -1604104 5700768 1602504 5697056 1603472 5700352 1603416 5700672 -1603328 5700344 1603472 5700352 1602464 5697088 1602424 5697104 -1603328 5700344 1603272 5700360 1603256 5700480 1603472 5700352 -1604104 5700768 1603472 5700352 1603416 5700672 1603464 5700736 -1603472 5700352 1603256 5700480 1603416 5700672 1603464 5700736 -1604104 5700768 1602504 5697056 1603472 5700352 1603464 5700736 -1604104 5700768 1603472 5700352 1603464 5700736 1603664 5700888 -1604104 5700768 1602504 5697056 1603472 5700352 1603664 5700888 -1604104 5700768 1603472 5700352 1603664 5700888 1603696 5700928 -1603472 5700352 1603416 5700672 1603464 5700736 1603664 5700888 -1602504 5697056 1603472 5700352 1604104 5700768 1602504 5696992 -1603472 5700352 1603680 5700448 1602504 5697056 1602464 5697088 -1604104 5700768 1603680 5700448 1603472 5700352 1603664 5700888 -1603680 5700448 1602504 5697056 1603472 5700352 1603664 5700888 -1604104 5700768 1602504 5697056 1603680 5700448 1603664 5700888 -1604104 5700768 1603680 5700448 1603664 5700888 1603696 5700928 -1603472 5700352 1603464 5700736 1603664 5700888 1603680 5700448 -1603472 5700352 1603464 5700736 1603680 5700448 1602504 5697056 -1603664 5700888 1604104 5700768 1603680 5700448 1603464 5700736 -1603472 5700352 1603416 5700672 1603464 5700736 1603680 5700448 -1603472 5700352 1603256 5700480 1603416 5700672 1603680 5700448 -1603472 5700352 1603416 5700672 1603680 5700448 1602504 5697056 -1603464 5700736 1603664 5700888 1603680 5700448 1603416 5700672 -1602504 5697056 1603680 5700448 1604104 5700768 1602504 5696992 -1603680 5700448 1603848 5700544 1602504 5697056 1603472 5700352 -1604104 5700768 1603848 5700544 1603680 5700448 1603664 5700888 -1603680 5700448 1603464 5700736 1603664 5700888 1603848 5700544 -1603848 5700544 1602504 5697056 1603680 5700448 1603464 5700736 -1603664 5700888 1604104 5700768 1603848 5700544 1603464 5700736 -1604104 5700768 1603848 5700544 1603664 5700888 1603696 5700928 -1603848 5700544 1603464 5700736 1603664 5700888 1603696 5700928 -1603680 5700448 1603416 5700672 1603464 5700736 1603848 5700544 -1604104 5700768 1603848 5700544 1603696 5700928 1603864 5701080 -1602504 5697056 1603848 5700544 1604104 5700768 1602504 5696992 -1604104 5700768 1602504 5697056 1603848 5700544 1603696 5700928 -1602504 5697056 1604056 5700696 1604104 5700768 1602504 5696992 -1604104 5700768 1609424 5706616 1602504 5696992 1604056 5700696 -1603848 5700544 1604056 5700696 1602504 5697056 1603680 5700448 -1604104 5700768 1604056 5700696 1603848 5700544 1603696 5700928 -1603848 5700544 1603664 5700888 1603696 5700928 1604056 5700696 -1603848 5700544 1603464 5700736 1603664 5700888 1604056 5700696 -1604104 5700768 1604056 5700696 1603696 5700928 1603864 5701080 -1604056 5700696 1602504 5697056 1603848 5700544 1603664 5700888 -1603696 5700928 1604104 5700768 1604056 5700696 1603664 5700888 -1602504 5697056 1603848 5700544 1604056 5700696 1602504 5696992 -1604056 5700696 1603696 5700928 1604104 5700768 1602504 5696992 -1601760 5696040 1600928 5681176 1599875 5760125 1601760 5696064 -1599875 5599875 1600928 5681176 1601760 5696040 1601768 5695920 -1599875 5599875 1600928 5681176 1601768 5695920 1601776 5695896 -1599875 5599875 1600928 5681176 1601776 5695896 1601824 5695840 -1600928 5681176 1601768 5695920 1601776 5695896 1601824 5695840 -1600928 5681176 1601760 5696040 1601768 5695920 1601776 5695896 -1599875 5760125 1601784 5696736 1601760 5696064 1600928 5681176 -1601760 5696064 1601760 5696040 1600928 5681176 1601784 5696736 -1599875 5760125 1604696 5714600 1601784 5696736 1600928 5681176 -1601784 5696736 1601784 5696704 1601760 5696064 1600928 5681176 -1599875 5599875 1600928 5681176 1601824 5695840 1602016 5695848 -1600928 5681176 1601776 5695896 1601824 5695840 1602016 5695848 -1599875 5599875 1600928 5681176 1602016 5695848 1657056 5639384 -1602016 5695848 1657088 5639464 1657056 5639384 1600928 5681176 -1657056 5639384 1599875 5599875 1600928 5681176 1657088 5639464 -1602016 5695848 1602112 5695896 1657088 5639464 1600928 5681176 -1657088 5639464 1657056 5639384 1600928 5681176 1602112 5695896 -1602112 5695896 1602160 5695928 1657088 5639464 1600928 5681176 -1657088 5639464 1657056 5639384 1600928 5681176 1602160 5695928 -1602160 5695928 1663776 5646144 1657088 5639464 1600928 5681176 -1657088 5639464 1657056 5639384 1600928 5681176 1663776 5646144 -1602160 5695928 1663880 5646248 1663776 5646144 1600928 5681176 -1663776 5646144 1657088 5639464 1600928 5681176 1663880 5646248 -1602160 5695928 1602200 5696008 1663880 5646248 1600928 5681176 -1602200 5696008 1602224 5696056 1663880 5646248 1600928 5681176 -1602200 5696008 1602224 5696056 1600928 5681176 1602160 5695928 -1602224 5696056 1609472 5706664 1663880 5646248 1600928 5681176 -1602224 5696056 1609424 5706616 1609472 5706664 1600928 5681176 -1602224 5696056 1602504 5696992 1609424 5706616 1600928 5681176 -1602224 5696056 1609424 5706616 1600928 5681176 1602200 5696008 -1609472 5706664 1663880 5646248 1600928 5681176 1609424 5706616 -1609472 5706664 1610680 5708312 1663880 5646248 1600928 5681176 -1663880 5646248 1663776 5646144 1600928 5681176 1609472 5706664 -1602112 5695896 1602160 5695928 1600928 5681176 1602016 5695848 -1602160 5695928 1602200 5696008 1600928 5681176 1602112 5695896 -1663776 5646144 1663688 5645984 1657088 5639464 1600928 5681176 -1599875 5599875 1600928 5681176 1657056 5639384 1657088 5639296 -1600928 5681176 1601824 5695840 1602016 5695848 1602112 5695896 -1601760 5696040 1601768 5695920 1600928 5681176 1601760 5696064 -1600928 5681176 1599875 5599875 1599875 5760125 1601784 5696736 -1599875 5599875 1599875 5760125 1600928 5681176 1657056 5639384 -1609472 5706664 1600952 5681176 1600928 5681176 1609424 5706616 -1600928 5681176 1602224 5696056 1609424 5706616 1600952 5681176 -1602224 5696056 1602504 5696992 1609424 5706616 1600952 5681176 -1600928 5681176 1602200 5696008 1602224 5696056 1600952 5681176 -1602224 5696056 1609424 5706616 1600952 5681176 1602200 5696008 -1600928 5681176 1602160 5695928 1602200 5696008 1600952 5681176 -1602200 5696008 1602224 5696056 1600952 5681176 1602160 5695928 -1609424 5706616 1609472 5706664 1600952 5681176 1602224 5696056 -1663880 5646248 1600952 5681176 1609472 5706664 1610680 5708312 -1600928 5681176 1600952 5681176 1663880 5646248 1663776 5646144 -1600928 5681176 1600952 5681176 1663776 5646144 1657088 5639464 -1600928 5681176 1600952 5681176 1657088 5639464 1657056 5639384 -1600952 5681176 1663776 5646144 1657088 5639464 1657056 5639384 -1600928 5681176 1600952 5681176 1657056 5639384 1599875 5599875 -1600952 5681176 1657088 5639464 1657056 5639384 1599875 5599875 -1600952 5681176 1663880 5646248 1663776 5646144 1657088 5639464 -1600928 5681176 1602112 5695896 1602160 5695928 1600952 5681176 -1602160 5695928 1602200 5696008 1600952 5681176 1602112 5695896 -1600928 5681176 1602016 5695848 1602112 5695896 1600952 5681176 -1602112 5695896 1602160 5695928 1600952 5681176 1602016 5695848 -1663776 5646144 1663688 5645984 1657088 5639464 1600952 5681176 -1657056 5639384 1657088 5639296 1599875 5599875 1600952 5681176 -1600928 5681176 1601824 5695840 1602016 5695848 1600952 5681176 -1600928 5681176 1601776 5695896 1601824 5695840 1600952 5681176 -1602016 5695848 1602112 5695896 1600952 5681176 1601824 5695840 -1600952 5681176 1599875 5599875 1600928 5681176 1601824 5695840 -1600928 5681176 1600952 5681176 1599875 5599875 1599875 5760125 -1600952 5681176 1609472 5706664 1663880 5646248 1663776 5646144 -1609472 5706664 1663880 5646248 1600952 5681176 1609424 5706616 -1663880 5646248 1601024 5681192 1609472 5706664 1610680 5708312 -1600952 5681176 1601024 5681192 1663880 5646248 1663776 5646144 -1600952 5681176 1601024 5681192 1663776 5646144 1657088 5639464 -1600952 5681176 1601024 5681192 1657088 5639464 1657056 5639384 -1600952 5681176 1601024 5681192 1657056 5639384 1599875 5599875 -1601024 5681192 1657088 5639464 1657056 5639384 1599875 5599875 -1600952 5681176 1601024 5681192 1599875 5599875 1600928 5681176 -1601024 5681192 1663776 5646144 1657088 5639464 1657056 5639384 -1663776 5646144 1663688 5645984 1657088 5639464 1601024 5681192 -1657056 5639384 1657088 5639296 1599875 5599875 1601024 5681192 -1601024 5681192 1663880 5646248 1663776 5646144 1657088 5639464 -1600952 5681176 1609472 5706664 1601024 5681192 1599875 5599875 -1609472 5706664 1601024 5681192 1600952 5681176 1609424 5706616 -1600952 5681176 1602224 5696056 1609424 5706616 1601024 5681192 -1602224 5696056 1602504 5696992 1609424 5706616 1601024 5681192 -1600952 5681176 1602200 5696008 1602224 5696056 1601024 5681192 -1600952 5681176 1602160 5695928 1602200 5696008 1601024 5681192 -1602200 5696008 1602224 5696056 1601024 5681192 1602160 5695928 -1600952 5681176 1602112 5695896 1602160 5695928 1601024 5681192 -1602160 5695928 1602200 5696008 1601024 5681192 1602112 5695896 -1602224 5696056 1609424 5706616 1601024 5681192 1602200 5696008 -1600952 5681176 1602016 5695848 1602112 5695896 1601024 5681192 -1602112 5695896 1602160 5695928 1601024 5681192 1602016 5695848 -1600952 5681176 1601824 5695840 1602016 5695848 1601024 5681192 -1602016 5695848 1602112 5695896 1601024 5681192 1601824 5695840 -1600952 5681176 1600928 5681176 1601824 5695840 1601024 5681192 -1600928 5681176 1601776 5695896 1601824 5695840 1601024 5681192 -1601824 5695840 1602016 5695848 1601024 5681192 1600928 5681176 -1601024 5681192 1599875 5599875 1600952 5681176 1600928 5681176 -1609424 5706616 1609472 5706664 1601024 5681192 1602224 5696056 -1601024 5681192 1609472 5706664 1663880 5646248 1663776 5646144 -1609472 5706664 1663880 5646248 1601024 5681192 1609424 5706616 -1663880 5646248 1601088 5681248 1609472 5706664 1610680 5708312 -1601024 5681192 1601088 5681248 1663880 5646248 1663776 5646144 -1601088 5681248 1609472 5706664 1663880 5646248 1663776 5646144 -1601024 5681192 1601088 5681248 1663776 5646144 1657088 5639464 -1601024 5681192 1601088 5681248 1657088 5639464 1657056 5639384 -1663776 5646144 1663688 5645984 1657088 5639464 1601088 5681248 -1601088 5681248 1663880 5646248 1663776 5646144 1657088 5639464 -1601024 5681192 1609472 5706664 1601088 5681248 1657088 5639464 -1609472 5706664 1601088 5681248 1601024 5681192 1609424 5706616 -1609472 5706664 1663880 5646248 1601088 5681248 1609424 5706616 -1601024 5681192 1602224 5696056 1609424 5706616 1601088 5681248 -1602224 5696056 1602504 5696992 1609424 5706616 1601088 5681248 -1601024 5681192 1602200 5696008 1602224 5696056 1601088 5681248 -1601024 5681192 1602160 5695928 1602200 5696008 1601088 5681248 -1601024 5681192 1602112 5695896 1602160 5695928 1601088 5681248 -1602160 5695928 1602200 5696008 1601088 5681248 1602112 5695896 -1601024 5681192 1602016 5695848 1602112 5695896 1601088 5681248 -1602112 5695896 1602160 5695928 1601088 5681248 1602016 5695848 -1602200 5696008 1602224 5696056 1601088 5681248 1602160 5695928 -1601024 5681192 1601824 5695840 1602016 5695848 1601088 5681248 -1602016 5695848 1602112 5695896 1601088 5681248 1601824 5695840 -1601024 5681192 1600928 5681176 1601824 5695840 1601088 5681248 -1600928 5681176 1601776 5695896 1601824 5695840 1601088 5681248 -1601824 5695840 1602016 5695848 1601088 5681248 1600928 5681176 -1601024 5681192 1600952 5681176 1600928 5681176 1601088 5681248 -1600928 5681176 1601824 5695840 1601088 5681248 1600952 5681176 -1602224 5696056 1609424 5706616 1601088 5681248 1602200 5696008 -1601088 5681248 1657088 5639464 1601024 5681192 1600952 5681176 -1609424 5706616 1609472 5706664 1601088 5681248 1602224 5696056 -1663880 5646248 1601152 5681352 1609472 5706664 1610680 5708312 -1601088 5681248 1601152 5681352 1663880 5646248 1663776 5646144 -1601088 5681248 1609472 5706664 1601152 5681352 1663776 5646144 -1609472 5706664 1601152 5681352 1601088 5681248 1609424 5706616 -1601152 5681352 1663776 5646144 1601088 5681248 1609424 5706616 -1601152 5681352 1609472 5706664 1663880 5646248 1663776 5646144 -1609472 5706664 1663880 5646248 1601152 5681352 1609424 5706616 -1601088 5681248 1601152 5681352 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1601152 5681352 -1601152 5681352 1663880 5646248 1663776 5646144 1657088 5639464 -1601088 5681248 1609424 5706616 1601152 5681352 1657088 5639464 -1601088 5681248 1601152 5681352 1657088 5639464 1601024 5681192 -1601088 5681248 1602224 5696056 1609424 5706616 1601152 5681352 -1602224 5696056 1602504 5696992 1609424 5706616 1601152 5681352 -1601088 5681248 1602224 5696056 1601152 5681352 1657088 5639464 -1609424 5706616 1609472 5706664 1601152 5681352 1602224 5696056 -1601088 5681248 1602200 5696008 1602224 5696056 1601152 5681352 -1601088 5681248 1602160 5695928 1602200 5696008 1601152 5681352 -1601088 5681248 1602112 5695896 1602160 5695928 1601152 5681352 -1601088 5681248 1602016 5695848 1602112 5695896 1601152 5681352 -1602112 5695896 1602160 5695928 1601152 5681352 1602016 5695848 -1601088 5681248 1601824 5695840 1602016 5695848 1601152 5681352 -1602016 5695848 1602112 5695896 1601152 5681352 1601824 5695840 -1602160 5695928 1602200 5696008 1601152 5681352 1602112 5695896 -1601088 5681248 1600928 5681176 1601824 5695840 1601152 5681352 -1600928 5681176 1601776 5695896 1601824 5695840 1601152 5681352 -1601824 5695840 1602016 5695848 1601152 5681352 1600928 5681176 -1601088 5681248 1600952 5681176 1600928 5681176 1601152 5681352 -1601088 5681248 1600928 5681176 1601152 5681352 1657088 5639464 -1602200 5696008 1602224 5696056 1601152 5681352 1602160 5695928 -1602224 5696056 1609424 5706616 1601152 5681352 1602200 5696008 -1609424 5706616 1601184 5681504 1602224 5696056 1602504 5696992 -1601152 5681352 1601184 5681504 1609424 5706616 1609472 5706664 -1601152 5681352 1602224 5696056 1601184 5681504 1609472 5706664 -1601152 5681352 1601184 5681504 1609472 5706664 1663880 5646248 -1609472 5706664 1610680 5708312 1663880 5646248 1601184 5681504 -1601184 5681504 1609424 5706616 1609472 5706664 1663880 5646248 -1601152 5681352 1601184 5681504 1663880 5646248 1663776 5646144 -1601152 5681352 1602224 5696056 1601184 5681504 1663880 5646248 -1601184 5681504 1602224 5696056 1609424 5706616 1609472 5706664 -1602224 5696056 1601184 5681504 1601152 5681352 1602200 5696008 -1601184 5681504 1663880 5646248 1601152 5681352 1602200 5696008 -1602224 5696056 1609424 5706616 1601184 5681504 1602200 5696008 -1601152 5681352 1602160 5695928 1602200 5696008 1601184 5681504 -1601152 5681352 1602112 5695896 1602160 5695928 1601184 5681504 -1601152 5681352 1602016 5695848 1602112 5695896 1601184 5681504 -1601152 5681352 1601824 5695840 1602016 5695848 1601184 5681504 -1602016 5695848 1602112 5695896 1601184 5681504 1601824 5695840 -1601152 5681352 1600928 5681176 1601824 5695840 1601184 5681504 -1600928 5681176 1601776 5695896 1601824 5695840 1601184 5681504 -1600928 5681176 1601768 5695920 1601776 5695896 1601184 5681504 -1600928 5681176 1601776 5695896 1601184 5681504 1601152 5681352 -1601824 5695840 1602016 5695848 1601184 5681504 1601776 5695896 -1602112 5695896 1602160 5695928 1601184 5681504 1602016 5695848 -1601152 5681352 1601088 5681248 1600928 5681176 1601184 5681504 -1601152 5681352 1600928 5681176 1601184 5681504 1663880 5646248 -1602160 5695928 1602200 5696008 1601184 5681504 1602112 5695896 -1602200 5696008 1602224 5696056 1601184 5681504 1602160 5695928 -1601776 5695896 1601160 5681616 1600928 5681176 1601768 5695920 -1601184 5681504 1601160 5681616 1601776 5695896 1601824 5695840 -1600928 5681176 1601160 5681616 1601184 5681504 1601152 5681352 -1601184 5681504 1601160 5681616 1601824 5695840 1602016 5695848 -1601160 5681616 1601776 5695896 1601824 5695840 1602016 5695848 -1601184 5681504 1601160 5681616 1602016 5695848 1602112 5695896 -1601160 5681616 1601824 5695840 1602016 5695848 1602112 5695896 -1601184 5681504 1601160 5681616 1602112 5695896 1602160 5695928 -1601160 5681616 1602016 5695848 1602112 5695896 1602160 5695928 -1601184 5681504 1600928 5681176 1601160 5681616 1602160 5695928 -1601160 5681616 1600928 5681176 1601776 5695896 1601824 5695840 -1601184 5681504 1601160 5681616 1602160 5695928 1602200 5696008 -1601160 5681616 1602112 5695896 1602160 5695928 1602200 5696008 -1601184 5681504 1600928 5681176 1601160 5681616 1602200 5696008 -1601184 5681504 1601160 5681616 1602200 5696008 1602224 5696056 -1601184 5681504 1600928 5681176 1601160 5681616 1602224 5696056 -1601184 5681504 1601160 5681616 1602224 5696056 1609424 5706616 -1601160 5681616 1602160 5695928 1602200 5696008 1602224 5696056 -1601776 5695896 1601128 5681664 1600928 5681176 1601768 5695920 -1600928 5681176 1601760 5696040 1601768 5695920 1601128 5681664 -1600928 5681176 1601128 5681664 1601160 5681616 1601184 5681504 -1600928 5681176 1601128 5681664 1601184 5681504 1601152 5681352 -1600928 5681176 1601128 5681664 1601152 5681352 1601088 5681248 -1601128 5681664 1601776 5695896 1601160 5681616 1601184 5681504 -1601128 5681664 1601160 5681616 1601184 5681504 1601152 5681352 -1601776 5695896 1601160 5681616 1601128 5681664 1601768 5695920 -1601128 5681664 1601152 5681352 1600928 5681176 1601768 5695920 -1601160 5681616 1601128 5681664 1601776 5695896 1601824 5695840 -1601160 5681616 1601128 5681664 1601824 5695840 1602016 5695848 -1601160 5681616 1601128 5681664 1602016 5695848 1602112 5695896 -1601128 5681664 1601824 5695840 1602016 5695848 1602112 5695896 -1601160 5681616 1601128 5681664 1602112 5695896 1602160 5695928 -1601128 5681664 1602016 5695848 1602112 5695896 1602160 5695928 -1601160 5681616 1601128 5681664 1602160 5695928 1602200 5696008 -1601160 5681616 1601184 5681504 1601128 5681664 1602160 5695928 -1601128 5681664 1601768 5695920 1601776 5695896 1601824 5695840 -1601128 5681664 1601776 5695896 1601824 5695840 1602016 5695848 -1601128 5681664 1601088 5681704 1601768 5695920 1601776 5695896 -1601768 5695920 1601088 5681704 1600928 5681176 1601760 5696040 -1601088 5681704 1600928 5681176 1601768 5695920 1601776 5695896 -1601128 5681664 1601088 5681704 1601776 5695896 1601824 5695840 -1601088 5681704 1601768 5695920 1601776 5695896 1601824 5695840 -1601128 5681664 1600928 5681176 1601088 5681704 1601824 5695840 -1600928 5681176 1601088 5681704 1601128 5681664 1601152 5681352 -1600928 5681176 1601768 5695920 1601088 5681704 1601152 5681352 -1601128 5681664 1601184 5681504 1601152 5681352 1601088 5681704 -1600928 5681176 1601088 5681704 1601152 5681352 1601088 5681248 -1601128 5681664 1601160 5681616 1601184 5681504 1601088 5681704 -1601088 5681704 1601824 5695840 1601128 5681664 1601184 5681504 -1601152 5681352 1600928 5681176 1601088 5681704 1601184 5681504 -1601128 5681664 1601088 5681704 1601824 5695840 1602016 5695848 -1601128 5681664 1601088 5681704 1602016 5695848 1602112 5695896 -1601128 5681664 1601088 5681704 1602112 5695896 1602160 5695928 -1601088 5681704 1602016 5695848 1602112 5695896 1602160 5695928 -1601128 5681664 1601088 5681704 1602160 5695928 1601160 5681616 -1601088 5681704 1601776 5695896 1601824 5695840 1602016 5695848 -1601128 5681664 1601184 5681504 1601088 5681704 1602160 5695928 -1601088 5681704 1601824 5695840 1602016 5695848 1602112 5695896 -1600928 5681176 1600992 5681736 1601088 5681704 1601152 5681352 -1601768 5695920 1600992 5681736 1600928 5681176 1601760 5696040 -1601088 5681704 1600992 5681736 1601768 5695920 1601776 5695896 -1601088 5681704 1600992 5681736 1601776 5695896 1601824 5695840 -1600992 5681736 1601768 5695920 1601776 5695896 1601824 5695840 -1600928 5681176 1600992 5681736 1601152 5681352 1601088 5681248 -1601088 5681704 1600992 5681736 1601824 5695840 1602016 5695848 -1600992 5681736 1601776 5695896 1601824 5695840 1602016 5695848 -1601088 5681704 1601184 5681504 1601152 5681352 1600992 5681736 -1601152 5681352 1600928 5681176 1600992 5681736 1601184 5681504 -1601088 5681704 1601128 5681664 1601184 5681504 1600992 5681736 -1601128 5681664 1601160 5681616 1601184 5681504 1600992 5681736 -1601128 5681664 1601160 5681616 1600992 5681736 1601088 5681704 -1601184 5681504 1601152 5681352 1600992 5681736 1601160 5681616 -1600992 5681736 1602016 5695848 1601088 5681704 1601128 5681664 -1601768 5695920 1601776 5695896 1600992 5681736 1601760 5696040 -1601088 5681704 1600992 5681736 1602016 5695848 1602112 5695896 -1600928 5681176 1601760 5696040 1600992 5681736 1601152 5681352 -1600928 5681176 1601760 5696064 1601760 5696040 1600992 5681736 -1600928 5681176 1600928 5681744 1601784 5696736 1601760 5696064 -1600928 5681176 1600928 5681744 1601760 5696064 1601760 5696040 -1600928 5681744 1601784 5696736 1601760 5696064 1601760 5696040 -1600928 5681744 1599875 5760125 1601784 5696736 1601760 5696064 -1600928 5681176 1599875 5760125 1600928 5681744 1601760 5696040 -1601784 5696736 1600928 5681744 1599875 5760125 1604696 5714600 -1601784 5696736 1601784 5696704 1601760 5696064 1600928 5681744 -1600928 5681176 1600928 5681744 1601760 5696040 1600992 5681736 -1600928 5681744 1601760 5696064 1601760 5696040 1600992 5681736 -1601760 5696040 1601768 5695920 1600992 5681736 1600928 5681744 -1601760 5696040 1601768 5695920 1600928 5681744 1601760 5696064 -1600928 5681176 1599875 5760125 1600928 5681744 1600992 5681736 -1601768 5695920 1601776 5695896 1600992 5681736 1600928 5681744 -1601768 5695920 1601776 5695896 1600928 5681744 1601760 5696040 -1601776 5695896 1601824 5695840 1600992 5681736 1600928 5681744 -1601824 5695840 1602016 5695848 1600992 5681736 1600928 5681744 -1601776 5695896 1601824 5695840 1600928 5681744 1601768 5695920 -1600928 5681176 1600928 5681744 1600992 5681736 1601152 5681352 -1600992 5681736 1601184 5681504 1601152 5681352 1600928 5681744 -1600928 5681176 1599875 5760125 1600928 5681744 1601152 5681352 -1600928 5681176 1600928 5681744 1601152 5681352 1601088 5681248 -1600992 5681736 1601160 5681616 1601184 5681504 1600928 5681744 -1601152 5681352 1600928 5681176 1600928 5681744 1601184 5681504 -1600992 5681736 1601184 5681504 1600928 5681744 1601824 5695840 -1599875 5760125 1600928 5681744 1600928 5681176 1599875 5599875 -1600928 5681176 1600832 5681736 1599875 5760125 1600928 5681744 -1600928 5681176 1599875 5599875 1600832 5681736 1600928 5681744 -1600928 5681176 1600832 5681736 1600928 5681744 1601152 5681352 -1600928 5681176 1599875 5599875 1600832 5681736 1601152 5681352 -1600832 5681736 1599875 5599875 1599875 5760125 1600928 5681744 -1600928 5681176 1600832 5681736 1601152 5681352 1601088 5681248 -1599875 5760125 1601784 5696736 1600928 5681744 1600832 5681736 -1601784 5696736 1601760 5696064 1600928 5681744 1600832 5681736 -1601760 5696064 1601760 5696040 1600928 5681744 1600832 5681736 -1601760 5696040 1601768 5695920 1600928 5681744 1600832 5681736 -1601768 5695920 1601776 5695896 1600928 5681744 1600832 5681736 -1601768 5695920 1601776 5695896 1600832 5681736 1601760 5696040 -1601760 5696040 1601768 5695920 1600832 5681736 1601760 5696064 -1601760 5696064 1601760 5696040 1600832 5681736 1601784 5696736 -1599875 5760125 1601784 5696736 1600832 5681736 1599875 5599875 -1599875 5760125 1604696 5714600 1601784 5696736 1600832 5681736 -1601784 5696736 1601784 5696704 1601760 5696064 1600832 5681736 -1601784 5696736 1601760 5696064 1600832 5681736 1599875 5760125 -1601776 5695896 1601824 5695840 1600928 5681744 1600832 5681736 -1601776 5695896 1601824 5695840 1600832 5681736 1601768 5695920 -1601824 5695840 1600992 5681736 1600928 5681744 1600832 5681736 -1600928 5681744 1601184 5681504 1601152 5681352 1600832 5681736 -1600832 5681736 1601824 5695840 1600928 5681744 1601152 5681352 -1599875 5599875 1600832 5681736 1600928 5681176 1600952 5681176 -1599875 5599875 1600760 5681656 1600832 5681736 1600928 5681176 -1600832 5681736 1601152 5681352 1600928 5681176 1600760 5681656 -1600760 5681656 1599875 5760125 1600832 5681736 1601152 5681352 -1600832 5681736 1600760 5681656 1599875 5760125 1601784 5696736 -1600760 5681656 1599875 5599875 1599875 5760125 1601784 5696736 -1600832 5681736 1601152 5681352 1600760 5681656 1601784 5696736 -1600928 5681176 1599875 5599875 1600760 5681656 1601152 5681352 -1599875 5760125 1604696 5714600 1601784 5696736 1600760 5681656 -1601152 5681352 1601088 5681248 1600928 5681176 1600760 5681656 -1600832 5681736 1600760 5681656 1601784 5696736 1601760 5696064 -1600832 5681736 1600760 5681656 1601760 5696064 1601760 5696040 -1600832 5681736 1600760 5681656 1601760 5696040 1601768 5695920 -1600832 5681736 1600760 5681656 1601768 5695920 1601776 5695896 -1600832 5681736 1600760 5681656 1601776 5695896 1601824 5695840 -1600760 5681656 1601760 5696040 1601768 5695920 1601776 5695896 -1600760 5681656 1601760 5696064 1601760 5696040 1601768 5695920 -1600832 5681736 1601152 5681352 1600760 5681656 1601776 5695896 -1601784 5696736 1601784 5696704 1601760 5696064 1600760 5681656 -1600760 5681656 1601784 5696736 1601760 5696064 1601760 5696040 -1600760 5681656 1599875 5760125 1601784 5696736 1601760 5696064 -1599875 5599875 1599875 5760125 1600760 5681656 1600928 5681176 -1600832 5681736 1600928 5681744 1601152 5681352 1600760 5681656 -1600832 5681736 1600928 5681744 1600760 5681656 1601776 5695896 -1601152 5681352 1600928 5681176 1600760 5681656 1600928 5681744 -1600928 5681744 1601184 5681504 1601152 5681352 1600760 5681656 -1600928 5681744 1600992 5681736 1601184 5681504 1600760 5681656 -1601152 5681352 1600928 5681176 1600760 5681656 1601184 5681504 -1600992 5681736 1601160 5681616 1601184 5681504 1600760 5681656 -1601184 5681504 1601152 5681352 1600760 5681656 1600992 5681736 -1600928 5681744 1600992 5681736 1600760 5681656 1600832 5681736 -1599875 5599875 1600760 5681656 1600928 5681176 1600952 5681176 -1600760 5681656 1600744 5681584 1599875 5760125 1601784 5696736 -1600760 5681656 1599875 5599875 1600744 5681584 1601784 5696736 -1600744 5681584 1599875 5599875 1599875 5760125 1601784 5696736 -1599875 5760125 1604696 5714600 1601784 5696736 1600744 5681584 -1600760 5681656 1600744 5681584 1601784 5696736 1601760 5696064 -1600744 5681584 1599875 5760125 1601784 5696736 1601760 5696064 -1600760 5681656 1599875 5599875 1600744 5681584 1601760 5696064 -1601784 5696736 1601784 5696704 1601760 5696064 1600744 5681584 -1600760 5681656 1600744 5681584 1601760 5696064 1601760 5696040 -1600760 5681656 1600744 5681584 1601760 5696040 1601768 5695920 -1600760 5681656 1600744 5681584 1601768 5695920 1601776 5695896 -1600760 5681656 1599875 5599875 1600744 5681584 1601768 5695920 -1600744 5681584 1601784 5696736 1601760 5696064 1601760 5696040 -1600744 5681584 1601760 5696064 1601760 5696040 1601768 5695920 -1599875 5599875 1600744 5681584 1600760 5681656 1600928 5681176 -1600744 5681584 1601768 5695920 1600760 5681656 1600928 5681176 -1600760 5681656 1601152 5681352 1600928 5681176 1600744 5681584 -1600928 5681176 1599875 5599875 1600744 5681584 1601152 5681352 -1600760 5681656 1601152 5681352 1600744 5681584 1601768 5695920 -1600760 5681656 1601184 5681504 1601152 5681352 1600744 5681584 -1600760 5681656 1601184 5681504 1600744 5681584 1601768 5695920 -1601152 5681352 1600928 5681176 1600744 5681584 1601184 5681504 -1601152 5681352 1601088 5681248 1600928 5681176 1600744 5681584 -1600928 5681176 1599875 5599875 1600744 5681584 1601088 5681248 -1601152 5681352 1601088 5681248 1600744 5681584 1601184 5681504 -1601088 5681248 1600952 5681176 1600928 5681176 1600744 5681584 -1599875 5599875 1599875 5760125 1600744 5681584 1600928 5681176 -1600760 5681656 1600992 5681736 1601184 5681504 1600744 5681584 -1601184 5681504 1601152 5681352 1600744 5681584 1600992 5681736 -1600760 5681656 1600928 5681744 1600992 5681736 1600744 5681584 -1600760 5681656 1600928 5681744 1600744 5681584 1601768 5695920 -1600992 5681736 1601160 5681616 1601184 5681504 1600744 5681584 -1600992 5681736 1601184 5681504 1600744 5681584 1600928 5681744 -1600760 5681656 1600832 5681736 1600928 5681744 1600744 5681584 -1599875 5599875 1600744 5681584 1600928 5681176 1600952 5681176 -1600928 5681176 1600768 5681520 1600744 5681584 1601088 5681248 -1600928 5681176 1599875 5599875 1600768 5681520 1601088 5681248 -1600928 5681176 1600768 5681520 1601088 5681248 1600952 5681176 -1600744 5681584 1601152 5681352 1601088 5681248 1600768 5681520 -1601088 5681248 1600928 5681176 1600768 5681520 1601152 5681352 -1600744 5681584 1601184 5681504 1601152 5681352 1600768 5681520 -1600744 5681584 1600992 5681736 1601184 5681504 1600768 5681520 -1601152 5681352 1601088 5681248 1600768 5681520 1601184 5681504 -1600744 5681584 1600768 5681520 1599875 5599875 1599875 5760125 -1600992 5681736 1601160 5681616 1601184 5681504 1600768 5681520 -1600992 5681736 1601128 5681664 1601160 5681616 1600768 5681520 -1600992 5681736 1601088 5681704 1601128 5681664 1600768 5681520 -1601160 5681616 1601184 5681504 1600768 5681520 1601128 5681664 -1601184 5681504 1601152 5681352 1600768 5681520 1601160 5681616 -1600768 5681520 1599875 5599875 1600744 5681584 1600992 5681736 -1600744 5681584 1600928 5681744 1600992 5681736 1600768 5681520 -1600744 5681584 1600760 5681656 1600928 5681744 1600768 5681520 -1600744 5681584 1600760 5681656 1600768 5681520 1599875 5599875 -1600928 5681744 1600992 5681736 1600768 5681520 1600760 5681656 -1600992 5681736 1601128 5681664 1600768 5681520 1600928 5681744 -1600760 5681656 1600832 5681736 1600928 5681744 1600768 5681520 -1599875 5599875 1600768 5681520 1600928 5681176 1600952 5681176 -1600768 5681520 1600816 5681432 1600928 5681176 1599875 5599875 -1601088 5681248 1600816 5681432 1600768 5681520 1601152 5681352 -1600816 5681432 1600928 5681176 1600768 5681520 1601152 5681352 -1600928 5681176 1600816 5681432 1601088 5681248 1600952 5681176 -1600768 5681520 1601184 5681504 1601152 5681352 1600816 5681432 -1600768 5681520 1601184 5681504 1600816 5681432 1600928 5681176 -1601152 5681352 1601088 5681248 1600816 5681432 1601184 5681504 -1601088 5681248 1600952 5681176 1600816 5681432 1601152 5681352 -1600768 5681520 1601160 5681616 1601184 5681504 1600816 5681432 -1600768 5681520 1601160 5681616 1600816 5681432 1600928 5681176 -1601184 5681504 1601152 5681352 1600816 5681432 1601160 5681616 -1600768 5681520 1601128 5681664 1601160 5681616 1600816 5681432 -1600768 5681520 1601128 5681664 1600816 5681432 1600928 5681176 -1601160 5681616 1601184 5681504 1600816 5681432 1601128 5681664 -1600768 5681520 1600992 5681736 1601128 5681664 1600816 5681432 -1600768 5681520 1600992 5681736 1600816 5681432 1600928 5681176 -1600992 5681736 1601088 5681704 1601128 5681664 1600816 5681432 -1601128 5681664 1601160 5681616 1600816 5681432 1600992 5681736 -1600928 5681176 1600768 5681520 1600816 5681432 1600952 5681176 -1601088 5681248 1601024 5681192 1600952 5681176 1600816 5681432 -1600768 5681520 1600928 5681744 1600992 5681736 1600816 5681432 -1600928 5681176 1600872 5681248 1600768 5681520 1600816 5681432 -1600928 5681176 1599875 5599875 1600872 5681248 1600816 5681432 -1600768 5681520 1600872 5681248 1599875 5599875 1600744 5681584 -1600872 5681248 1599875 5599875 1600768 5681520 1600816 5681432 -1600928 5681176 1600872 5681248 1600816 5681432 1600952 5681176 -1600872 5681248 1600768 5681520 1600816 5681432 1600952 5681176 -1600928 5681176 1599875 5599875 1600872 5681248 1600952 5681176 -1600816 5681432 1601088 5681248 1600952 5681176 1600872 5681248 -1600816 5681432 1601088 5681248 1600872 5681248 1600768 5681520 -1600816 5681432 1601152 5681352 1601088 5681248 1600872 5681248 -1600952 5681176 1600928 5681176 1600872 5681248 1601088 5681248 -1601088 5681248 1601024 5681192 1600952 5681176 1600872 5681248 -1601088 5681248 1601024 5681192 1600872 5681248 1600816 5681432 -1600952 5681176 1600928 5681176 1600872 5681248 1601024 5681192 -1599875 5599875 1600872 5681248 1600928 5681176 1600952 5681176 -1601088 5681248 1601296 5681104 1657088 5639464 1601024 5681192 -1657088 5639464 1657056 5639384 1601024 5681192 1601296 5681104 -1657056 5639384 1599875 5599875 1601024 5681192 1601296 5681104 -1599875 5599875 1600952 5681176 1601024 5681192 1601296 5681104 -1599875 5599875 1600952 5681176 1601296 5681104 1657056 5639384 -1599875 5599875 1600928 5681176 1600952 5681176 1601296 5681104 -1600952 5681176 1601024 5681192 1601296 5681104 1600928 5681176 -1599875 5599875 1600928 5681176 1601296 5681104 1657056 5639384 -1657056 5639384 1599875 5599875 1601296 5681104 1657088 5639464 -1601296 5681104 1601152 5681352 1657088 5639464 1657056 5639384 -1601088 5681248 1601152 5681352 1601296 5681104 1601024 5681192 -1657056 5639384 1657088 5639296 1599875 5599875 1601296 5681104 -1599875 5599875 1600872 5681248 1600928 5681176 1601296 5681104 -1601024 5681192 1601088 5681248 1601296 5681104 1600952 5681176 -1657088 5639464 1601296 5681104 1601152 5681352 1663776 5646144 -1657088 5639464 1657056 5639384 1601296 5681104 1663776 5646144 -1601296 5681104 1601088 5681248 1601152 5681352 1663776 5646144 -1657088 5639464 1601296 5681104 1663776 5646144 1663688 5645984 -1601152 5681352 1663880 5646248 1663776 5646144 1601296 5681104 -1601152 5681352 1663880 5646248 1601296 5681104 1601088 5681248 -1601152 5681352 1601184 5681504 1663880 5646248 1601296 5681104 -1601152 5681352 1601184 5681504 1601296 5681104 1601088 5681248 -1663880 5646248 1663776 5646144 1601296 5681104 1601184 5681504 -1601184 5681504 1609472 5706664 1663880 5646248 1601296 5681104 -1609472 5706664 1610680 5708312 1663880 5646248 1601296 5681104 -1663880 5646248 1663776 5646144 1601296 5681104 1609472 5706664 -1601184 5681504 1609424 5706616 1609472 5706664 1601296 5681104 -1601184 5681504 1609424 5706616 1601296 5681104 1601152 5681352 -1609472 5706664 1663880 5646248 1601296 5681104 1609424 5706616 -1601184 5681504 1602224 5696056 1609424 5706616 1601296 5681104 -1602224 5696056 1602504 5696992 1609424 5706616 1601296 5681104 -1609424 5706616 1609472 5706664 1601296 5681104 1602224 5696056 -1601184 5681504 1602224 5696056 1601296 5681104 1601152 5681352 -1601184 5681504 1601160 5681616 1602224 5696056 1601296 5681104 -1601184 5681504 1601160 5681616 1601296 5681104 1601152 5681352 -1602224 5696056 1609424 5706616 1601296 5681104 1601160 5681616 -1663776 5646144 1657088 5639464 1601296 5681104 1663880 5646248 -1601160 5681616 1602200 5696008 1602224 5696056 1601296 5681104 -1599875 5599875 1601240 5681040 1601296 5681104 1657056 5639384 -1599875 5599875 1600928 5681176 1601240 5681040 1657056 5639384 -1601296 5681104 1601240 5681040 1600928 5681176 1600952 5681176 -1601296 5681104 1601240 5681040 1600952 5681176 1601024 5681192 -1601240 5681040 1600928 5681176 1600952 5681176 1601024 5681192 -1601296 5681104 1657088 5639464 1657056 5639384 1601240 5681040 -1657056 5639384 1599875 5599875 1601240 5681040 1657088 5639464 -1601296 5681104 1663776 5646144 1657088 5639464 1601240 5681040 -1601240 5681040 1601024 5681192 1601296 5681104 1657088 5639464 -1601240 5681040 1599875 5599875 1600928 5681176 1600952 5681176 -1599875 5599875 1601240 5681040 1657056 5639384 1657088 5639296 -1600928 5681176 1601240 5681040 1599875 5599875 1600872 5681248 -1601296 5681104 1601240 5681040 1601024 5681192 1601088 5681248 -1601240 5681040 1600952 5681176 1601024 5681192 1601088 5681248 -1601296 5681104 1657088 5639464 1601240 5681040 1601088 5681248 -1601296 5681104 1601240 5681040 1601088 5681248 1601152 5681352 -1601240 5681040 1601256 5680984 1599875 5599875 1600928 5681176 -1601240 5681040 1657056 5639384 1601256 5680984 1600928 5681176 -1601256 5680984 1657056 5639384 1599875 5599875 1600928 5681176 -1657056 5639384 1601256 5680984 1601240 5681040 1657088 5639464 -1601256 5680984 1600928 5681176 1601240 5681040 1657088 5639464 -1657056 5639384 1599875 5599875 1601256 5680984 1657088 5639464 -1601240 5681040 1601296 5681104 1657088 5639464 1601256 5680984 -1601240 5681040 1601296 5681104 1601256 5680984 1600928 5681176 -1657088 5639464 1657056 5639384 1601256 5680984 1601296 5681104 -1601296 5681104 1663776 5646144 1657088 5639464 1601256 5680984 -1657088 5639464 1657056 5639384 1601256 5680984 1663776 5646144 -1601296 5681104 1663776 5646144 1601256 5680984 1601240 5681040 -1663776 5646144 1663688 5645984 1657088 5639464 1601256 5680984 -1601240 5681040 1601256 5680984 1600928 5681176 1600952 5681176 -1601240 5681040 1601296 5681104 1601256 5680984 1600952 5681176 -1601256 5680984 1599875 5599875 1600928 5681176 1600952 5681176 -1601240 5681040 1601256 5680984 1600952 5681176 1601024 5681192 -1599875 5599875 1601256 5680984 1657056 5639384 1657088 5639296 -1599875 5599875 1600872 5681248 1600928 5681176 1601256 5680984 -1601296 5681104 1663880 5646248 1663776 5646144 1601256 5680984 -1601296 5681104 1601464 5680984 1601256 5680984 1601240 5681040 -1601256 5680984 1601464 5680984 1663776 5646144 1657088 5639464 -1601256 5680984 1601296 5681104 1601464 5680984 1657088 5639464 -1601464 5680984 1601296 5681104 1663776 5646144 1657088 5639464 -1601256 5680984 1601464 5680984 1657088 5639464 1657056 5639384 -1601256 5680984 1601296 5681104 1601464 5680984 1657056 5639384 -1601256 5680984 1601464 5680984 1657056 5639384 1599875 5599875 -1601256 5680984 1601464 5680984 1599875 5599875 1600928 5681176 -1601256 5680984 1601296 5681104 1601464 5680984 1599875 5599875 -1601464 5680984 1657088 5639464 1657056 5639384 1599875 5599875 -1601464 5680984 1663776 5646144 1657088 5639464 1657056 5639384 -1663776 5646144 1663688 5645984 1657088 5639464 1601464 5680984 -1657056 5639384 1657088 5639296 1599875 5599875 1601464 5680984 -1663776 5646144 1601464 5680984 1601296 5681104 1663880 5646248 -1663776 5646144 1657088 5639464 1601464 5680984 1663880 5646248 -1601464 5680984 1601256 5680984 1601296 5681104 1663880 5646248 -1601296 5681104 1609472 5706664 1663880 5646248 1601464 5680984 -1601296 5681104 1609472 5706664 1601464 5680984 1601256 5680984 -1609472 5706664 1610680 5708312 1663880 5646248 1601464 5680984 -1601296 5681104 1609424 5706616 1609472 5706664 1601464 5680984 -1601296 5681104 1609424 5706616 1601464 5680984 1601256 5680984 -1609472 5706664 1663880 5646248 1601464 5680984 1609424 5706616 -1601296 5681104 1602224 5696056 1609424 5706616 1601464 5680984 -1602224 5696056 1602504 5696992 1609424 5706616 1601464 5680984 -1601296 5681104 1602224 5696056 1601464 5680984 1601256 5680984 -1609424 5706616 1609472 5706664 1601464 5680984 1602224 5696056 -1601296 5681104 1601160 5681616 1602224 5696056 1601464 5680984 -1601296 5681104 1601160 5681616 1601464 5680984 1601256 5680984 -1602224 5696056 1609424 5706616 1601464 5680984 1601160 5681616 -1601296 5681104 1601184 5681504 1601160 5681616 1601464 5680984 -1601296 5681104 1601184 5681504 1601464 5680984 1601256 5680984 -1601296 5681104 1601152 5681352 1601184 5681504 1601464 5680984 -1601160 5681616 1602224 5696056 1601464 5680984 1601184 5681504 -1663880 5646248 1663776 5646144 1601464 5680984 1609472 5706664 -1601160 5681616 1602200 5696008 1602224 5696056 1601464 5680984 -1602224 5696056 1609424 5706616 1601464 5680984 1602200 5696008 -1601160 5681616 1602200 5696008 1601464 5680984 1601184 5681504 -1601160 5681616 1602160 5695928 1602200 5696008 1601464 5680984 -1601160 5681616 1601128 5681664 1602160 5695928 1601464 5680984 -1601160 5681616 1602160 5695928 1601464 5680984 1601184 5681504 -1602200 5696008 1602224 5696056 1601464 5680984 1602160 5695928 -1663880 5646248 1601560 5681032 1609472 5706664 1610680 5708312 -1609472 5706664 1601560 5681032 1601464 5680984 1609424 5706616 -1601560 5681032 1663880 5646248 1601464 5680984 1609424 5706616 -1609472 5706664 1663880 5646248 1601560 5681032 1609424 5706616 -1601464 5680984 1602224 5696056 1609424 5706616 1601560 5681032 -1602224 5696056 1602504 5696992 1609424 5706616 1601560 5681032 -1601464 5680984 1602224 5696056 1601560 5681032 1663880 5646248 -1609424 5706616 1609472 5706664 1601560 5681032 1602224 5696056 -1601464 5680984 1602200 5696008 1602224 5696056 1601560 5681032 -1601464 5680984 1602200 5696008 1601560 5681032 1663880 5646248 -1602224 5696056 1609424 5706616 1601560 5681032 1602200 5696008 -1601464 5680984 1601560 5681032 1663880 5646248 1663776 5646144 -1601464 5680984 1601560 5681032 1663776 5646144 1657088 5639464 -1601464 5680984 1602200 5696008 1601560 5681032 1657088 5639464 -1601560 5681032 1609472 5706664 1663880 5646248 1663776 5646144 -1601464 5680984 1601560 5681032 1657088 5639464 1657056 5639384 -1601560 5681032 1663776 5646144 1657088 5639464 1657056 5639384 -1601464 5680984 1601560 5681032 1657056 5639384 1599875 5599875 -1601464 5680984 1602200 5696008 1601560 5681032 1657056 5639384 -1663776 5646144 1663688 5645984 1657088 5639464 1601560 5681032 -1601560 5681032 1663880 5646248 1663776 5646144 1657088 5639464 -1601464 5680984 1602160 5695928 1602200 5696008 1601560 5681032 -1601464 5680984 1602160 5695928 1601560 5681032 1657056 5639384 -1602200 5696008 1602224 5696056 1601560 5681032 1602160 5695928 -1601464 5680984 1601160 5681616 1602160 5695928 1601560 5681032 -1601160 5681616 1601128 5681664 1602160 5695928 1601560 5681032 -1601464 5680984 1601160 5681616 1601560 5681032 1657056 5639384 -1601464 5680984 1601184 5681504 1601160 5681616 1601560 5681032 -1601464 5680984 1601184 5681504 1601560 5681032 1657056 5639384 -1601464 5680984 1601296 5681104 1601184 5681504 1601560 5681032 -1601464 5680984 1601296 5681104 1601560 5681032 1657056 5639384 -1601464 5680984 1601256 5680984 1601296 5681104 1601560 5681032 -1601296 5681104 1601152 5681352 1601184 5681504 1601560 5681032 -1601184 5681504 1601160 5681616 1601560 5681032 1601296 5681104 -1601160 5681616 1602160 5695928 1601560 5681032 1601184 5681504 -1602160 5695928 1602200 5696008 1601560 5681032 1601160 5681616 -1601560 5681032 1601592 5681064 1663880 5646248 1663776 5646144 -1663880 5646248 1601592 5681064 1609472 5706664 1610680 5708312 -1601560 5681032 1609472 5706664 1601592 5681064 1663776 5646144 -1609472 5706664 1601592 5681064 1601560 5681032 1609424 5706616 -1609472 5706664 1663880 5646248 1601592 5681064 1609424 5706616 -1601592 5681064 1663776 5646144 1601560 5681032 1609424 5706616 -1601592 5681064 1609472 5706664 1663880 5646248 1663776 5646144 -1601560 5681032 1602224 5696056 1609424 5706616 1601592 5681064 -1602224 5696056 1602504 5696992 1609424 5706616 1601592 5681064 -1601560 5681032 1602224 5696056 1601592 5681064 1663776 5646144 -1609424 5706616 1609472 5706664 1601592 5681064 1602224 5696056 -1601560 5681032 1602200 5696008 1602224 5696056 1601592 5681064 -1601560 5681032 1602200 5696008 1601592 5681064 1663776 5646144 -1602224 5696056 1609424 5706616 1601592 5681064 1602200 5696008 -1601560 5681032 1602160 5695928 1602200 5696008 1601592 5681064 -1601560 5681032 1602160 5695928 1601592 5681064 1663776 5646144 -1602200 5696008 1602224 5696056 1601592 5681064 1602160 5695928 -1601560 5681032 1601592 5681064 1663776 5646144 1657088 5639464 -1601560 5681032 1601592 5681064 1657088 5639464 1657056 5639384 -1601592 5681064 1663880 5646248 1663776 5646144 1657088 5639464 -1601560 5681032 1602160 5695928 1601592 5681064 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1601592 5681064 -1601560 5681032 1601160 5681616 1602160 5695928 1601592 5681064 -1601160 5681616 1601128 5681664 1602160 5695928 1601592 5681064 -1601128 5681664 1601088 5681704 1602160 5695928 1601592 5681064 -1601560 5681032 1601160 5681616 1601592 5681064 1657088 5639464 -1602160 5695928 1602200 5696008 1601592 5681064 1601128 5681664 -1601560 5681032 1601184 5681504 1601160 5681616 1601592 5681064 -1601560 5681032 1601184 5681504 1601592 5681064 1657088 5639464 -1601560 5681032 1601296 5681104 1601184 5681504 1601592 5681064 -1601560 5681032 1601296 5681104 1601592 5681064 1657088 5639464 -1601296 5681104 1601152 5681352 1601184 5681504 1601592 5681064 -1601560 5681032 1601464 5680984 1601296 5681104 1601592 5681064 -1601184 5681504 1601160 5681616 1601592 5681064 1601296 5681104 -1601160 5681616 1601128 5681664 1601592 5681064 1601184 5681504 -1609472 5706664 1601624 5681136 1601592 5681064 1609424 5706616 -1601624 5681136 1663880 5646248 1601592 5681064 1609424 5706616 -1609472 5706664 1663880 5646248 1601624 5681136 1609424 5706616 -1663880 5646248 1601624 5681136 1609472 5706664 1610680 5708312 -1601592 5681064 1602224 5696056 1609424 5706616 1601624 5681136 -1601592 5681064 1602224 5696056 1601624 5681136 1663880 5646248 -1609424 5706616 1609472 5706664 1601624 5681136 1602224 5696056 -1602224 5696056 1602504 5696992 1609424 5706616 1601624 5681136 -1601592 5681064 1601624 5681136 1663880 5646248 1663776 5646144 -1601592 5681064 1602224 5696056 1601624 5681136 1663776 5646144 -1601624 5681136 1609472 5706664 1663880 5646248 1663776 5646144 -1601592 5681064 1601624 5681136 1663776 5646144 1657088 5639464 -1601592 5681064 1602224 5696056 1601624 5681136 1657088 5639464 -1601624 5681136 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1601624 5681136 -1601592 5681064 1602200 5696008 1602224 5696056 1601624 5681136 -1601592 5681064 1602200 5696008 1601624 5681136 1657088 5639464 -1602224 5696056 1609424 5706616 1601624 5681136 1602200 5696008 -1601592 5681064 1602160 5695928 1602200 5696008 1601624 5681136 -1601592 5681064 1602160 5695928 1601624 5681136 1657088 5639464 -1602200 5696008 1602224 5696056 1601624 5681136 1602160 5695928 -1601592 5681064 1601128 5681664 1602160 5695928 1601624 5681136 -1601592 5681064 1601128 5681664 1601624 5681136 1657088 5639464 -1601128 5681664 1601088 5681704 1602160 5695928 1601624 5681136 -1601592 5681064 1601160 5681616 1601128 5681664 1601624 5681136 -1601592 5681064 1601160 5681616 1601624 5681136 1657088 5639464 -1601128 5681664 1602160 5695928 1601624 5681136 1601160 5681616 -1602160 5695928 1602200 5696008 1601624 5681136 1601128 5681664 -1601592 5681064 1601624 5681136 1657088 5639464 1601560 5681032 -1601592 5681064 1601184 5681504 1601160 5681616 1601624 5681136 -1601592 5681064 1601184 5681504 1601624 5681136 1657088 5639464 -1601160 5681616 1601128 5681664 1601624 5681136 1601184 5681504 -1601592 5681064 1601296 5681104 1601184 5681504 1601624 5681136 -1601592 5681064 1601296 5681104 1601624 5681136 1657088 5639464 -1601296 5681104 1601152 5681352 1601184 5681504 1601624 5681136 -1601296 5681104 1601088 5681248 1601152 5681352 1601624 5681136 -1601592 5681064 1601560 5681032 1601296 5681104 1601624 5681136 -1601592 5681064 1601560 5681032 1601624 5681136 1657088 5639464 -1601560 5681032 1601464 5680984 1601296 5681104 1601624 5681136 -1601296 5681104 1601152 5681352 1601624 5681136 1601560 5681032 -1601184 5681504 1601160 5681616 1601624 5681136 1601152 5681352 -1602160 5695928 1601592 5681216 1601128 5681664 1601088 5681704 -1601128 5681664 1601592 5681216 1601624 5681136 1601160 5681616 -1601592 5681216 1602160 5695928 1601624 5681136 1601160 5681616 -1601624 5681136 1601184 5681504 1601160 5681616 1601592 5681216 -1601624 5681136 1601184 5681504 1601592 5681216 1602160 5695928 -1601128 5681664 1602160 5695928 1601592 5681216 1601160 5681616 -1601160 5681616 1601128 5681664 1601592 5681216 1601184 5681504 -1601624 5681136 1601592 5681216 1602160 5695928 1602200 5696008 -1601624 5681136 1601184 5681504 1601592 5681216 1602200 5696008 -1601592 5681216 1601128 5681664 1602160 5695928 1602200 5696008 -1601624 5681136 1601592 5681216 1602200 5696008 1602224 5696056 -1601624 5681136 1601184 5681504 1601592 5681216 1602224 5696056 -1601624 5681136 1601592 5681216 1602224 5696056 1609424 5706616 -1601592 5681216 1602160 5695928 1602200 5696008 1602224 5696056 -1601624 5681136 1601152 5681352 1601184 5681504 1601592 5681216 -1601624 5681136 1601152 5681352 1601592 5681216 1602224 5696056 -1601184 5681504 1601160 5681616 1601592 5681216 1601152 5681352 -1601624 5681136 1601296 5681104 1601152 5681352 1601592 5681216 -1601624 5681136 1601296 5681104 1601592 5681216 1602224 5696056 -1601296 5681104 1601088 5681248 1601152 5681352 1601592 5681216 -1601624 5681136 1601560 5681032 1601296 5681104 1601592 5681216 -1601624 5681136 1601560 5681032 1601592 5681216 1602224 5696056 -1601296 5681104 1601152 5681352 1601592 5681216 1601560 5681032 -1601624 5681136 1601592 5681064 1601560 5681032 1601592 5681216 -1601624 5681136 1601592 5681064 1601592 5681216 1602224 5696056 -1601560 5681032 1601464 5680984 1601296 5681104 1601592 5681216 -1601560 5681032 1601296 5681104 1601592 5681216 1601592 5681064 -1601152 5681352 1601184 5681504 1601592 5681216 1601296 5681104 -1601152 5681352 1601456 5681224 1601296 5681104 1601088 5681248 -1601296 5681104 1601456 5681224 1601592 5681216 1601560 5681032 -1601456 5681224 1601152 5681352 1601592 5681216 1601560 5681032 -1601296 5681104 1601456 5681224 1601560 5681032 1601464 5680984 -1601296 5681104 1601456 5681224 1601464 5680984 1601256 5680984 -1601456 5681224 1601592 5681216 1601560 5681032 1601464 5680984 -1601296 5681104 1601152 5681352 1601456 5681224 1601464 5680984 -1601592 5681216 1601592 5681064 1601560 5681032 1601456 5681224 -1601592 5681216 1601592 5681064 1601456 5681224 1601152 5681352 -1601560 5681032 1601464 5680984 1601456 5681224 1601592 5681064 -1601592 5681216 1601624 5681136 1601592 5681064 1601456 5681224 -1601592 5681216 1601624 5681136 1601456 5681224 1601152 5681352 -1601592 5681064 1601560 5681032 1601456 5681224 1601624 5681136 -1601592 5681216 1601456 5681224 1601152 5681352 1601184 5681504 -1601592 5681216 1601456 5681224 1601184 5681504 1601160 5681616 -1601592 5681216 1601624 5681136 1601456 5681224 1601184 5681504 -1601456 5681224 1601296 5681104 1601152 5681352 1601184 5681504 -1601456 5681224 1601360 5681200 1601152 5681352 1601184 5681504 -1601152 5681352 1601360 5681200 1601296 5681104 1601088 5681248 -1601360 5681200 1601456 5681224 1601296 5681104 1601088 5681248 -1601296 5681104 1601240 5681040 1601088 5681248 1601360 5681200 -1601456 5681224 1601296 5681104 1601360 5681200 1601184 5681504 -1601296 5681104 1601360 5681200 1601456 5681224 1601464 5680984 -1601296 5681104 1601360 5681200 1601464 5680984 1601256 5680984 -1601456 5681224 1601560 5681032 1601464 5680984 1601360 5681200 -1601296 5681104 1601088 5681248 1601360 5681200 1601464 5680984 -1601360 5681200 1601184 5681504 1601456 5681224 1601464 5680984 -1601360 5681200 1601088 5681248 1601152 5681352 1601184 5681504 -1601456 5681224 1601360 5681200 1601184 5681504 1601592 5681216 -1601360 5681200 1601312 5681152 1601088 5681248 1601152 5681352 -1601360 5681200 1601296 5681104 1601312 5681152 1601152 5681352 -1601296 5681104 1601312 5681152 1601360 5681200 1601464 5680984 -1601296 5681104 1601312 5681152 1601464 5680984 1601256 5680984 -1601296 5681104 1601088 5681248 1601312 5681152 1601464 5680984 -1601312 5681152 1601152 5681352 1601360 5681200 1601464 5680984 -1601312 5681152 1601296 5681104 1601088 5681248 1601152 5681352 -1601088 5681248 1601312 5681152 1601296 5681104 1601240 5681040 -1601360 5681200 1601456 5681224 1601464 5680984 1601312 5681152 -1601360 5681200 1601312 5681152 1601152 5681352 1601184 5681504 -1615632 5735416 1621088 5722784 1611528 5715552 1615584 5735320 -1663944 5646256 1621088 5722784 1615632 5735416 1743800 5687320 -1663944 5646256 1621088 5722784 1743800 5687320 1664040 5646192 -1611528 5715552 1615528 5735256 1615584 5735320 1621088 5722784 -1615584 5735320 1615632 5735416 1621088 5722784 1615528 5735256 -1611528 5715552 1611520 5715576 1615528 5735256 1621088 5722784 -1611520 5715576 1611456 5715680 1615528 5735256 1621088 5722784 -1611456 5715680 1615440 5735216 1615528 5735256 1621088 5722784 -1611456 5715680 1611424 5715704 1615440 5735216 1621088 5722784 -1611424 5715704 1611328 5715760 1615440 5735216 1621088 5722784 -1615440 5735216 1615528 5735256 1621088 5722784 1611328 5715760 -1611424 5715704 1611328 5715760 1621088 5722784 1611456 5715680 -1611328 5715760 1615408 5735224 1615440 5735216 1621088 5722784 -1611328 5715760 1615408 5735224 1621088 5722784 1611424 5715704 -1611328 5715760 1611240 5715760 1615408 5735224 1621088 5722784 -1615440 5735216 1615528 5735256 1621088 5722784 1615408 5735224 -1611456 5715680 1611424 5715704 1621088 5722784 1611520 5715576 -1611520 5715576 1611456 5715680 1621088 5722784 1611528 5715552 -1615528 5735256 1615584 5735320 1621088 5722784 1615440 5735216 -1611528 5715552 1621088 5722784 1663944 5646256 1610760 5708480 -1615632 5735416 1743888 5687504 1743800 5687320 1621088 5722784 -1743800 5687320 1663944 5646256 1621088 5722784 1743888 5687504 -1621088 5722784 1610760 5708480 1611528 5715552 1611520 5715576 -1663944 5646256 1610760 5708480 1621088 5722784 1743800 5687320 -1615632 5735416 1743888 5687504 1621088 5722784 1615584 5735320 -1611520 5715576 1611464 5715656 1611456 5715680 1621088 5722784 -1615632 5735416 1620224 5752472 1743888 5687504 1621088 5722784 -1615632 5735416 1620192 5752400 1620224 5752472 1621088 5722784 -1743888 5687504 1743800 5687320 1621088 5722784 1620224 5752472 -1620224 5752472 1751256 5699792 1743888 5687504 1621088 5722784 -1751256 5699792 1743976 5687584 1743888 5687504 1621088 5722784 -1620224 5752472 1760125 5760125 1751256 5699792 1621088 5722784 -1760125 5760125 1751376 5699848 1751256 5699792 1621088 5722784 -1620224 5752472 1620224 5752520 1760125 5760125 1621088 5722784 -1743888 5687504 1743800 5687320 1621088 5722784 1751256 5699792 -1751256 5699792 1743888 5687504 1621088 5722784 1760125 5760125 -1615632 5735416 1620192 5752400 1621088 5722784 1615584 5735320 -1615632 5735416 1615632 5735512 1620192 5752400 1621088 5722784 -1620192 5752400 1620224 5752472 1621088 5722784 1615632 5735512 -1615632 5735512 1617768 5747376 1620192 5752400 1621088 5722784 -1617768 5747376 1617848 5747624 1620192 5752400 1621088 5722784 -1620192 5752400 1620224 5752472 1621088 5722784 1617768 5747376 -1615632 5735512 1617712 5747256 1617768 5747376 1621088 5722784 -1615632 5735512 1617608 5747096 1617712 5747256 1621088 5722784 -1617768 5747376 1620192 5752400 1621088 5722784 1617712 5747256 -1615632 5735416 1615632 5735512 1621088 5722784 1615584 5735320 -1615632 5735512 1617712 5747256 1621088 5722784 1615632 5735416 -1620224 5752472 1760125 5760125 1621088 5722784 1620192 5752400 -1663944 5646256 1663880 5646248 1610760 5708480 1621088 5722784 -1610760 5708480 1611528 5715552 1621088 5722784 1663880 5646248 -1663944 5646256 1663880 5646248 1621088 5722784 1743800 5687320 -1663880 5646248 1610728 5708400 1610760 5708480 1621088 5722784 -1610760 5708480 1611528 5715552 1621088 5722784 1610728 5708400 -1663880 5646248 1610712 5708360 1610728 5708400 1621088 5722784 -1663880 5646248 1610680 5708312 1610712 5708360 1621088 5722784 -1610728 5708400 1610760 5708480 1621088 5722784 1610712 5708360 -1663880 5646248 1610712 5708360 1621088 5722784 1663944 5646256 -1611528 5715552 1621088 5722784 1610760 5708480 1610752 5708648 -1621088 5722784 1610728 5708400 1610760 5708480 1610752 5708648 -1611528 5715552 1611520 5715576 1621088 5722784 1610752 5708648 -1611528 5715552 1621088 5722784 1610752 5708648 1611512 5715528 -1760125 5760125 1621280 5723224 1620224 5752472 1620224 5752520 -1621088 5722784 1621280 5723224 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1621280 5723224 -1621280 5723224 1620224 5752472 1760125 5760125 1751256 5699792 -1621088 5722784 1621280 5723224 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1621280 5723224 -1621280 5723224 1760125 5760125 1751256 5699792 1743888 5687504 -1621088 5722784 1621280 5723224 1743888 5687504 1743800 5687320 -1621088 5722784 1621280 5723224 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1621280 5723224 -1621280 5723224 1743888 5687504 1743800 5687320 1663944 5646256 -1621280 5723224 1751256 5699792 1743888 5687504 1743800 5687320 -1621088 5722784 1621280 5723224 1663944 5646256 1663880 5646248 -1620224 5752472 1621280 5723224 1621088 5722784 1620192 5752400 -1621088 5722784 1617768 5747376 1620192 5752400 1621280 5723224 -1617768 5747376 1617848 5747624 1620192 5752400 1621280 5723224 -1621088 5722784 1617712 5747256 1617768 5747376 1621280 5723224 -1617768 5747376 1620192 5752400 1621280 5723224 1617712 5747256 -1621088 5722784 1615632 5735512 1617712 5747256 1621280 5723224 -1615632 5735512 1617608 5747096 1617712 5747256 1621280 5723224 -1617712 5747256 1617768 5747376 1621280 5723224 1615632 5735512 -1620224 5752472 1760125 5760125 1621280 5723224 1620192 5752400 -1621088 5722784 1615632 5735416 1615632 5735512 1621280 5723224 -1615632 5735512 1617712 5747256 1621280 5723224 1615632 5735416 -1621088 5722784 1615584 5735320 1615632 5735416 1621280 5723224 -1621088 5722784 1615528 5735256 1615584 5735320 1621280 5723224 -1621088 5722784 1615440 5735216 1615528 5735256 1621280 5723224 -1615528 5735256 1615584 5735320 1621280 5723224 1615440 5735216 -1621088 5722784 1615408 5735224 1615440 5735216 1621280 5723224 -1621088 5722784 1611328 5715760 1615408 5735224 1621280 5723224 -1615440 5735216 1615528 5735256 1621280 5723224 1615408 5735224 -1615584 5735320 1615632 5735416 1621280 5723224 1615528 5735256 -1615632 5735416 1615632 5735512 1621280 5723224 1615584 5735320 -1620192 5752400 1620224 5752472 1621280 5723224 1617768 5747376 -1621088 5722784 1615408 5735224 1621280 5723224 1663944 5646256 -1760125 5760125 1621280 5723304 1620224 5752472 1620224 5752520 -1621280 5723224 1621280 5723304 1760125 5760125 1751256 5699792 -1621280 5723304 1620224 5752472 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1621280 5723304 -1621280 5723224 1621280 5723304 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1621280 5723304 -1621280 5723304 1760125 5760125 1751256 5699792 1743888 5687504 -1621280 5723224 1621280 5723304 1743888 5687504 1743800 5687320 -1621280 5723224 1620224 5752472 1621280 5723304 1743888 5687504 -1620224 5752472 1621280 5723304 1621280 5723224 1620192 5752400 -1620224 5752472 1760125 5760125 1621280 5723304 1620192 5752400 -1621280 5723304 1743888 5687504 1621280 5723224 1620192 5752400 -1621280 5723224 1617768 5747376 1620192 5752400 1621280 5723304 -1617768 5747376 1617848 5747624 1620192 5752400 1621280 5723304 -1621280 5723224 1617712 5747256 1617768 5747376 1621280 5723304 -1621280 5723224 1615632 5735512 1617712 5747256 1621280 5723304 -1615632 5735512 1617608 5747096 1617712 5747256 1621280 5723304 -1617712 5747256 1617768 5747376 1621280 5723304 1615632 5735512 -1621280 5723224 1615632 5735416 1615632 5735512 1621280 5723304 -1615632 5735512 1617712 5747256 1621280 5723304 1615632 5735416 -1621280 5723224 1615632 5735416 1621280 5723304 1743888 5687504 -1620192 5752400 1620224 5752472 1621280 5723304 1617768 5747376 -1621280 5723224 1615584 5735320 1615632 5735416 1621280 5723304 -1615632 5735416 1615632 5735512 1621280 5723304 1615584 5735320 -1621280 5723224 1615584 5735320 1621280 5723304 1743888 5687504 -1621280 5723224 1615528 5735256 1615584 5735320 1621280 5723304 -1621280 5723224 1615440 5735216 1615528 5735256 1621280 5723304 -1621280 5723224 1615408 5735224 1615440 5735216 1621280 5723304 -1615440 5735216 1615528 5735256 1621280 5723304 1615408 5735224 -1621280 5723224 1621088 5722784 1615408 5735224 1621280 5723304 -1621088 5722784 1611328 5715760 1615408 5735224 1621280 5723304 -1615408 5735224 1615440 5735216 1621280 5723304 1621088 5722784 -1621280 5723224 1621088 5722784 1621280 5723304 1743888 5687504 -1615528 5735256 1615584 5735320 1621280 5723304 1615440 5735216 -1615584 5735320 1615632 5735416 1621280 5723304 1615528 5735256 -1617768 5747376 1620192 5752400 1621280 5723304 1617712 5747256 -1621088 5722784 1621208 5723336 1621280 5723304 1621280 5723224 -1621208 5723336 1615408 5735224 1621280 5723304 1621280 5723224 -1615408 5735224 1621208 5723336 1621088 5722784 1611328 5715760 -1621088 5722784 1611424 5715704 1611328 5715760 1621208 5723336 -1615408 5735224 1621208 5723336 1611328 5715760 1611240 5715760 -1621280 5723304 1621208 5723336 1615408 5735224 1615440 5735216 -1621280 5723304 1621280 5723224 1621208 5723336 1615440 5735216 -1621280 5723304 1621208 5723336 1615440 5735216 1615528 5735256 -1621280 5723304 1621280 5723224 1621208 5723336 1615528 5735256 -1621208 5723336 1615408 5735224 1615440 5735216 1615528 5735256 -1615408 5735224 1615440 5735216 1621208 5723336 1611328 5715760 -1621088 5722784 1611328 5715760 1621208 5723336 1621280 5723224 -1621280 5723304 1621208 5723336 1615528 5735256 1615584 5735320 -1621280 5723304 1621280 5723224 1621208 5723336 1615584 5735320 -1621208 5723336 1615440 5735216 1615528 5735256 1615584 5735320 -1621280 5723304 1621208 5723336 1615584 5735320 1615632 5735416 -1621280 5723304 1621280 5723224 1621208 5723336 1615632 5735416 -1621280 5723304 1621208 5723336 1615632 5735416 1615632 5735512 -1621208 5723336 1615528 5735256 1615584 5735320 1615632 5735416 -1615408 5735224 1621144 5723336 1611328 5715760 1611240 5715760 -1611328 5715760 1621144 5723336 1621208 5723336 1621088 5722784 -1611328 5715760 1621144 5723336 1621088 5722784 1611424 5715704 -1621208 5723336 1621144 5723336 1615408 5735224 1615440 5735216 -1621208 5723336 1621144 5723336 1615440 5735216 1615528 5735256 -1621208 5723336 1621144 5723336 1615528 5735256 1615584 5735320 -1621144 5723336 1615440 5735216 1615528 5735256 1615584 5735320 -1621144 5723336 1615408 5735224 1615440 5735216 1615528 5735256 -1621144 5723336 1615584 5735320 1621208 5723336 1621088 5722784 -1621208 5723336 1621280 5723224 1621088 5722784 1621144 5723336 -1621208 5723336 1621280 5723304 1621280 5723224 1621144 5723336 -1621088 5722784 1611328 5715760 1621144 5723336 1621280 5723224 -1621208 5723336 1621280 5723224 1621144 5723336 1615584 5735320 -1621144 5723336 1611328 5715760 1615408 5735224 1615440 5735216 -1611328 5715760 1615408 5735224 1621144 5723336 1621088 5722784 -1621208 5723336 1621144 5723336 1615584 5735320 1615632 5735416 -1611328 5715760 1620800 5723008 1621088 5722784 1611424 5715704 -1621088 5722784 1611456 5715680 1611424 5715704 1620800 5723008 -1611424 5715704 1611328 5715760 1620800 5723008 1611456 5715680 -1621088 5722784 1620800 5723008 1621144 5723336 1621280 5723224 -1621088 5722784 1611520 5715576 1611456 5715680 1620800 5723008 -1611456 5715680 1611424 5715704 1620800 5723008 1611520 5715576 -1621088 5722784 1611528 5715552 1611520 5715576 1620800 5723008 -1621144 5723336 1621208 5723336 1621280 5723224 1620800 5723008 -1620800 5723008 1611328 5715760 1621144 5723336 1621280 5723224 -1621144 5723336 1620800 5723008 1611328 5715760 1615408 5735224 -1611328 5715760 1611240 5715760 1615408 5735224 1620800 5723008 -1621144 5723336 1620800 5723008 1615408 5735224 1615440 5735216 -1621144 5723336 1620800 5723008 1615440 5735216 1615528 5735256 -1621144 5723336 1621280 5723224 1620800 5723008 1615440 5735216 -1615408 5735224 1615440 5735216 1620800 5723008 1611240 5715760 -1611240 5715760 1615352 5735280 1615408 5735224 1620800 5723008 -1611520 5715576 1611464 5715656 1611456 5715680 1620800 5723008 -1611328 5715760 1611240 5715760 1620800 5723008 1611424 5715704 -1620800 5723008 1621280 5723224 1621088 5722784 1611520 5715576 -1620800 5723008 1620600 5722784 1611520 5715576 1611456 5715680 -1620800 5723008 1620600 5722784 1611456 5715680 1611424 5715704 -1620800 5723008 1620600 5722784 1611424 5715704 1611328 5715760 -1620600 5722784 1611456 5715680 1611424 5715704 1611328 5715760 -1620600 5722784 1621088 5722784 1611520 5715576 1611456 5715680 -1620600 5722784 1611520 5715576 1611456 5715680 1611424 5715704 -1611520 5715576 1620600 5722784 1621088 5722784 1611528 5715552 -1611520 5715576 1611456 5715680 1620600 5722784 1611528 5715552 -1620600 5722784 1620800 5723008 1621088 5722784 1611528 5715552 -1621088 5722784 1610752 5708648 1611528 5715552 1620600 5722784 -1611520 5715576 1611464 5715656 1611456 5715680 1620600 5722784 -1620800 5723008 1620600 5722784 1611328 5715760 1611240 5715760 -1620600 5722784 1611424 5715704 1611328 5715760 1611240 5715760 -1620800 5723008 1620600 5722784 1611240 5715760 1615408 5735224 -1620800 5723008 1620600 5722784 1615408 5735224 1615440 5735216 -1620600 5722784 1611240 5715760 1615408 5735224 1615440 5735216 -1620800 5723008 1620600 5722784 1615440 5735216 1621144 5723336 -1611240 5715760 1615352 5735280 1615408 5735224 1620600 5722784 -1620600 5722784 1611328 5715760 1611240 5715760 1615408 5735224 -1620800 5723008 1621088 5722784 1620600 5722784 1615440 5735216 -1621088 5722784 1620600 5722784 1620800 5723008 1621280 5723224 -1621088 5722784 1620584 5722728 1620600 5722784 1620800 5723008 -1620600 5722784 1620584 5722728 1611528 5715552 1611520 5715576 -1620584 5722728 1621088 5722784 1611528 5715552 1611520 5715576 -1620600 5722784 1620584 5722728 1611520 5715576 1611456 5715680 -1620600 5722784 1621088 5722784 1620584 5722728 1611456 5715680 -1620600 5722784 1620584 5722728 1611456 5715680 1611424 5715704 -1620600 5722784 1620584 5722728 1611424 5715704 1611328 5715760 -1620600 5722784 1620584 5722728 1611328 5715760 1611240 5715760 -1620584 5722728 1611520 5715576 1611456 5715680 1611424 5715704 -1620600 5722784 1621088 5722784 1620584 5722728 1611328 5715760 -1620584 5722728 1611456 5715680 1611424 5715704 1611328 5715760 -1620584 5722728 1611528 5715552 1611520 5715576 1611456 5715680 -1611528 5715552 1620584 5722728 1621088 5722784 1610752 5708648 -1611520 5715576 1611464 5715656 1611456 5715680 1620584 5722728 -1620584 5722728 1620600 5722648 1611528 5715552 1611520 5715576 -1620584 5722728 1621088 5722784 1620600 5722648 1611520 5715576 -1621088 5722784 1620600 5722648 1620584 5722728 1620600 5722784 -1620600 5722648 1611520 5715576 1620584 5722728 1620600 5722784 -1621088 5722784 1620600 5722648 1620600 5722784 1620800 5723008 -1620600 5722648 1621088 5722784 1611528 5715552 1611520 5715576 -1621088 5722784 1611528 5715552 1620600 5722648 1620600 5722784 -1620584 5722728 1620600 5722648 1611520 5715576 1611456 5715680 -1620600 5722648 1611528 5715552 1611520 5715576 1611456 5715680 -1620584 5722728 1620600 5722784 1620600 5722648 1611456 5715680 -1620584 5722728 1620600 5722648 1611456 5715680 1611424 5715704 -1620584 5722728 1620600 5722784 1620600 5722648 1611424 5715704 -1620584 5722728 1620600 5722648 1611424 5715704 1611328 5715760 -1620584 5722728 1620600 5722648 1611328 5715760 1620600 5722784 -1620584 5722728 1620600 5722784 1620600 5722648 1611328 5715760 -1620600 5722648 1611456 5715680 1611424 5715704 1611328 5715760 -1620600 5722648 1611520 5715576 1611456 5715680 1611424 5715704 -1611528 5715552 1620600 5722648 1621088 5722784 1610752 5708648 -1611528 5715552 1611520 5715576 1620600 5722648 1610752 5708648 -1620600 5722648 1620600 5722784 1621088 5722784 1610752 5708648 -1611520 5715576 1611464 5715656 1611456 5715680 1620600 5722648 -1611528 5715552 1620600 5722648 1610752 5708648 1611512 5715528 -1621088 5722784 1610760 5708480 1610752 5708648 1620600 5722648 -1621088 5722784 1620656 5722632 1620600 5722648 1620600 5722784 -1620600 5722648 1620584 5722728 1620600 5722784 1620656 5722632 -1621088 5722784 1620656 5722632 1620600 5722784 1620800 5723008 -1620656 5722632 1610752 5708648 1620600 5722648 1620584 5722728 -1620600 5722784 1620800 5723008 1620656 5722632 1620584 5722728 -1621088 5722784 1610752 5708648 1620656 5722632 1620800 5723008 -1620600 5722648 1620656 5722632 1610752 5708648 1611528 5715552 -1620600 5722648 1620656 5722632 1611528 5715552 1611520 5715576 -1620600 5722648 1620584 5722728 1620656 5722632 1611528 5715552 -1620656 5722632 1621088 5722784 1610752 5708648 1611528 5715552 -1610752 5708648 1611512 5715528 1611528 5715552 1620656 5722632 -1610752 5708648 1620656 5722632 1621088 5722784 1610760 5708480 -1621088 5722784 1610728 5708400 1610760 5708480 1620656 5722632 -1610752 5708648 1611528 5715552 1620656 5722632 1610760 5708480 -1620656 5722632 1620800 5723008 1621088 5722784 1610760 5708480 -1621088 5722784 1620656 5722632 1620800 5723008 1621280 5723224 -1610760 5708480 1620792 5722624 1621088 5722784 1610728 5708400 -1621088 5722784 1620792 5722624 1620656 5722632 1620800 5723008 -1620656 5722632 1620600 5722784 1620800 5723008 1620792 5722624 -1620656 5722632 1620584 5722728 1620600 5722784 1620792 5722624 -1620792 5722624 1610760 5708480 1620656 5722632 1620600 5722784 -1620800 5723008 1621088 5722784 1620792 5722624 1620600 5722784 -1621088 5722784 1610760 5708480 1620792 5722624 1620800 5723008 -1620656 5722632 1620792 5722624 1610760 5708480 1610752 5708648 -1620656 5722632 1620792 5722624 1610752 5708648 1611528 5715552 -1620656 5722632 1620600 5722784 1620792 5722624 1611528 5715552 -1620792 5722624 1621088 5722784 1610760 5708480 1610752 5708648 -1620656 5722632 1620792 5722624 1611528 5715552 1620600 5722648 -1610752 5708648 1611512 5715528 1611528 5715552 1620792 5722624 -1620792 5722624 1610760 5708480 1610752 5708648 1611528 5715552 -1621088 5722784 1620792 5722624 1620800 5723008 1621280 5723224 -1610760 5708480 1620872 5722632 1621088 5722784 1610728 5708400 -1620792 5722624 1620872 5722632 1610760 5708480 1610752 5708648 -1620872 5722632 1621088 5722784 1610760 5708480 1610752 5708648 -1620792 5722624 1621088 5722784 1620872 5722632 1610752 5708648 -1621088 5722784 1620872 5722632 1620792 5722624 1620800 5723008 -1621088 5722784 1610760 5708480 1620872 5722632 1620800 5723008 -1620792 5722624 1620600 5722784 1620800 5723008 1620872 5722632 -1620872 5722632 1610752 5708648 1620792 5722624 1620800 5723008 -1620792 5722624 1620872 5722632 1610752 5708648 1611528 5715552 -1620792 5722624 1620872 5722632 1611528 5715552 1620656 5722632 -1620872 5722632 1610760 5708480 1610752 5708648 1611528 5715552 -1620792 5722624 1620800 5723008 1620872 5722632 1611528 5715552 -1610752 5708648 1611512 5715528 1611528 5715552 1620872 5722632 -1621088 5722784 1620872 5722632 1620800 5723008 1621280 5723224 -1620872 5722632 1620992 5722672 1610760 5708480 1610752 5708648 -1621088 5722784 1620992 5722672 1620872 5722632 1620800 5723008 -1620992 5722672 1610760 5708480 1620872 5722632 1620800 5723008 -1610760 5708480 1620992 5722672 1621088 5722784 1610728 5708400 -1620872 5722632 1620792 5722624 1620800 5723008 1620992 5722672 -1621088 5722784 1610712 5708360 1610728 5708400 1620992 5722672 -1610728 5708400 1610760 5708480 1620992 5722672 1610712 5708360 -1621088 5722784 1663880 5646248 1610712 5708360 1620992 5722672 -1663880 5646248 1610680 5708312 1610712 5708360 1620992 5722672 -1610712 5708360 1610728 5708400 1620992 5722672 1663880 5646248 -1621088 5722784 1663944 5646256 1663880 5646248 1620992 5722672 -1610760 5708480 1620872 5722632 1620992 5722672 1610728 5708400 -1621088 5722784 1663880 5646248 1620992 5722672 1620800 5723008 -1621088 5722784 1620992 5722672 1620800 5723008 1621280 5723224 -1620992 5722672 1621040 5722712 1663880 5646248 1610712 5708360 -1663880 5646248 1610680 5708312 1610712 5708360 1621040 5722712 -1621040 5722712 1621088 5722784 1663880 5646248 1610712 5708360 -1620992 5722672 1621040 5722712 1610712 5708360 1610728 5708400 -1620992 5722672 1621040 5722712 1610728 5708400 1610760 5708480 -1621040 5722712 1663880 5646248 1610712 5708360 1610728 5708400 -1621040 5722712 1610712 5708360 1610728 5708400 1610760 5708480 -1663880 5646248 1621040 5722712 1621088 5722784 1663944 5646256 -1663880 5646248 1610712 5708360 1621040 5722712 1663944 5646256 -1621040 5722712 1620992 5722672 1621088 5722784 1663944 5646256 -1621088 5722784 1621280 5723224 1663944 5646256 1621040 5722712 -1620992 5722672 1621040 5722712 1610760 5708480 1620872 5722632 -1620992 5722672 1621088 5722784 1621040 5722712 1610760 5708480 -1621088 5722784 1621040 5722712 1620992 5722672 1620800 5723008 -1620992 5722672 1620872 5722632 1620800 5723008 1621040 5722712 -1621088 5722784 1663944 5646256 1621040 5722712 1620800 5723008 -1621040 5722712 1610760 5708480 1620992 5722672 1620800 5723008 -1621088 5722784 1621040 5722712 1620800 5723008 1621280 5723224 -1610712 5708360 1614512 5707600 1663880 5646248 1610680 5708312 -1663880 5646248 1609472 5706664 1610680 5708312 1614512 5707600 -1610680 5708312 1610712 5708360 1614512 5707600 1609472 5706664 -1609472 5706664 1610640 5708296 1610680 5708312 1614512 5707600 -1610712 5708360 1621040 5722712 1614512 5707600 1610680 5708312 -1614512 5707600 1621040 5722712 1663880 5646248 1609472 5706664 -1663880 5646248 1601624 5681136 1609472 5706664 1614512 5707600 -1663880 5646248 1663776 5646144 1601624 5681136 1614512 5707600 -1609472 5706664 1610680 5708312 1614512 5707600 1601624 5681136 -1601624 5681136 1609424 5706616 1609472 5706664 1614512 5707600 -1601624 5681136 1602224 5696056 1609424 5706616 1614512 5707600 -1602224 5696056 1602504 5696992 1609424 5706616 1614512 5707600 -1602224 5696056 1602504 5696992 1614512 5707600 1601624 5681136 -1609472 5706664 1610680 5708312 1614512 5707600 1609424 5706616 -1609424 5706616 1609472 5706664 1614512 5707600 1602504 5696992 -1663880 5646248 1601624 5681136 1614512 5707600 1621040 5722712 -1601624 5681136 1602224 5696056 1614512 5707600 1663880 5646248 -1601624 5681136 1601592 5681216 1602224 5696056 1614512 5707600 -1602504 5696992 1604104 5700768 1609424 5706616 1614512 5707600 -1602504 5696992 1604104 5700768 1614512 5707600 1602224 5696056 -1609424 5706616 1609472 5706664 1614512 5707600 1604104 5700768 -1604104 5700768 1604152 5700872 1609424 5706616 1614512 5707600 -1609424 5706616 1609472 5706664 1614512 5707600 1604152 5700872 -1604152 5700872 1604160 5700992 1609424 5706616 1614512 5707600 -1604104 5700768 1604152 5700872 1614512 5707600 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1614512 5707600 -1663880 5646248 1614512 5707600 1621040 5722712 1663944 5646256 -1663880 5646248 1601624 5681136 1614512 5707600 1663944 5646256 -1614512 5707600 1610712 5708360 1621040 5722712 1663944 5646256 -1602504 5696992 1604056 5700696 1604104 5700768 1614512 5707600 -1621040 5722712 1614512 5707600 1610712 5708360 1610728 5708400 -1614512 5707600 1610680 5708312 1610712 5708360 1610728 5708400 -1621040 5722712 1663944 5646256 1614512 5707600 1610728 5708400 -1621040 5722712 1614512 5707600 1610728 5708400 1610760 5708480 -1621040 5722712 1614512 5707600 1610760 5708480 1620992 5722672 -1621040 5722712 1663944 5646256 1614512 5707600 1620992 5722672 -1614512 5707600 1610712 5708360 1610728 5708400 1610760 5708480 -1614512 5707600 1610728 5708400 1610760 5708480 1620992 5722672 -1621040 5722712 1621088 5722784 1663944 5646256 1614512 5707600 -1663944 5646256 1663880 5646248 1614512 5707600 1621088 5722784 -1621040 5722712 1621088 5722784 1614512 5707600 1620992 5722672 -1621088 5722784 1621280 5723224 1663944 5646256 1614512 5707600 -1610760 5708480 1620872 5722632 1620992 5722672 1614512 5707600 -1610760 5708480 1610752 5708648 1620872 5722632 1614512 5707600 -1620992 5722672 1621040 5722712 1614512 5707600 1620872 5722632 -1610752 5708648 1611528 5715552 1620872 5722632 1614512 5707600 -1610752 5708648 1611528 5715552 1614512 5707600 1610760 5708480 -1610760 5708480 1610752 5708648 1614512 5707600 1610728 5708400 -1610752 5708648 1611512 5715528 1611528 5715552 1614512 5707600 -1610752 5708648 1611512 5715528 1614512 5707600 1610760 5708480 -1611528 5715552 1620872 5722632 1614512 5707600 1611512 5715528 -1610752 5708648 1611464 5715504 1611512 5715528 1614512 5707600 -1611528 5715552 1620792 5722624 1620872 5722632 1614512 5707600 -1611528 5715552 1620656 5722632 1620792 5722624 1614512 5707600 -1611528 5715552 1620656 5722632 1614512 5707600 1611512 5715528 -1611528 5715552 1620600 5722648 1620656 5722632 1614512 5707600 -1620792 5722624 1620872 5722632 1614512 5707600 1620656 5722632 -1620872 5722632 1620992 5722672 1614512 5707600 1620792 5722624 -1614512 5707600 1614576 5707608 1663944 5646256 1663880 5646248 -1614576 5707608 1621088 5722784 1663944 5646256 1663880 5646248 -1614512 5707600 1621088 5722784 1614576 5707608 1663880 5646248 -1614512 5707600 1614576 5707608 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1614576 5707608 -1614512 5707600 1621088 5722784 1614576 5707608 1601624 5681136 -1614512 5707600 1614576 5707608 1601624 5681136 1602224 5696056 -1614512 5707600 1614576 5707608 1602224 5696056 1602504 5696992 -1614512 5707600 1614576 5707608 1602504 5696992 1604104 5700768 -1614576 5707608 1602224 5696056 1602504 5696992 1604104 5700768 -1614512 5707600 1621088 5722784 1614576 5707608 1604104 5700768 -1614576 5707608 1663880 5646248 1601624 5681136 1602224 5696056 -1614576 5707608 1601624 5681136 1602224 5696056 1602504 5696992 -1601624 5681136 1601592 5681216 1602224 5696056 1614576 5707608 -1614512 5707600 1614576 5707608 1604104 5700768 1604152 5700872 -1602224 5696056 1602224 5696096 1602504 5696992 1614576 5707608 -1614576 5707608 1663944 5646256 1663880 5646248 1601624 5681136 -1663944 5646256 1614576 5707608 1621088 5722784 1621280 5723224 -1602504 5696992 1604056 5700696 1604104 5700768 1614576 5707608 -1621088 5722784 1614576 5707608 1614512 5707600 1621040 5722712 -1621088 5722784 1663944 5646256 1614576 5707608 1621040 5722712 -1614576 5707608 1604104 5700768 1614512 5707600 1621040 5722712 -1614512 5707600 1620992 5722672 1621040 5722712 1614576 5707608 -1614512 5707600 1620992 5722672 1614576 5707608 1604104 5700768 -1614512 5707600 1620872 5722632 1620992 5722672 1614576 5707608 -1614512 5707600 1620872 5722632 1614576 5707608 1604104 5700768 -1620992 5722672 1621040 5722712 1614576 5707608 1620872 5722632 -1621040 5722712 1621088 5722784 1614576 5707608 1620992 5722672 -1614512 5707600 1620792 5722624 1620872 5722632 1614576 5707608 -1614512 5707600 1620792 5722624 1614576 5707608 1604104 5700768 -1620872 5722632 1620992 5722672 1614576 5707608 1620792 5722624 -1614512 5707600 1620656 5722632 1620792 5722624 1614576 5707608 -1614512 5707600 1620656 5722632 1614576 5707608 1604104 5700768 -1614512 5707600 1611528 5715552 1620656 5722632 1614576 5707608 -1614512 5707600 1611528 5715552 1614576 5707608 1604104 5700768 -1614512 5707600 1611512 5715528 1611528 5715552 1614576 5707608 -1614512 5707600 1611512 5715528 1614576 5707608 1604104 5700768 -1611528 5715552 1620656 5722632 1614576 5707608 1611512 5715528 -1611528 5715552 1620600 5722648 1620656 5722632 1614576 5707608 -1614512 5707600 1610752 5708648 1611512 5715528 1614576 5707608 -1620656 5722632 1620792 5722624 1614576 5707608 1611528 5715552 -1620792 5722624 1620872 5722632 1614576 5707608 1620656 5722632 -1614576 5707608 1614648 5707656 1663944 5646256 1663880 5646248 -1614576 5707608 1621088 5722784 1614648 5707656 1663880 5646248 -1621088 5722784 1614648 5707656 1614576 5707608 1621040 5722712 -1614648 5707656 1663880 5646248 1614576 5707608 1621040 5722712 -1614648 5707656 1621088 5722784 1663944 5646256 1663880 5646248 -1621088 5722784 1663944 5646256 1614648 5707656 1621040 5722712 -1614576 5707608 1614648 5707656 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1614648 5707656 -1614648 5707656 1663944 5646256 1663880 5646248 1601624 5681136 -1614576 5707608 1621040 5722712 1614648 5707656 1601624 5681136 -1614576 5707608 1614648 5707656 1601624 5681136 1602224 5696056 -1663944 5646256 1614648 5707656 1621088 5722784 1621280 5723224 -1614576 5707608 1620992 5722672 1621040 5722712 1614648 5707656 -1614576 5707608 1620992 5722672 1614648 5707656 1601624 5681136 -1621040 5722712 1621088 5722784 1614648 5707656 1620992 5722672 -1614576 5707608 1620872 5722632 1620992 5722672 1614648 5707656 -1614576 5707608 1620872 5722632 1614648 5707656 1601624 5681136 -1614576 5707608 1620792 5722624 1620872 5722632 1614648 5707656 -1614576 5707608 1620792 5722624 1614648 5707656 1601624 5681136 -1620872 5722632 1620992 5722672 1614648 5707656 1620792 5722624 -1620992 5722672 1621040 5722712 1614648 5707656 1620872 5722632 -1614576 5707608 1620656 5722632 1620792 5722624 1614648 5707656 -1614576 5707608 1620656 5722632 1614648 5707656 1601624 5681136 -1620792 5722624 1620872 5722632 1614648 5707656 1620656 5722632 -1614576 5707608 1611528 5715552 1620656 5722632 1614648 5707656 -1614576 5707608 1611528 5715552 1614648 5707656 1601624 5681136 -1614576 5707608 1611512 5715528 1611528 5715552 1614648 5707656 -1614576 5707608 1611512 5715528 1614648 5707656 1601624 5681136 -1614576 5707608 1614512 5707600 1611512 5715528 1614648 5707656 -1614576 5707608 1614512 5707600 1614648 5707656 1601624 5681136 -1611512 5715528 1611528 5715552 1614648 5707656 1614512 5707600 -1611528 5715552 1620600 5722648 1620656 5722632 1614648 5707656 -1614512 5707600 1610752 5708648 1611512 5715528 1614648 5707656 -1614512 5707600 1610760 5708480 1610752 5708648 1614648 5707656 -1611512 5715528 1611528 5715552 1614648 5707656 1610752 5708648 -1614512 5707600 1610752 5708648 1614648 5707656 1614576 5707608 -1610752 5708648 1611464 5715504 1611512 5715528 1614648 5707656 -1611528 5715552 1620656 5722632 1614648 5707656 1611512 5715528 -1620656 5722632 1620792 5722624 1614648 5707656 1611528 5715552 -1614648 5707656 1614680 5707680 1663944 5646256 1663880 5646248 -1614648 5707656 1614680 5707680 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1614680 5707680 -1614680 5707680 1663944 5646256 1663880 5646248 1601624 5681136 -1614648 5707656 1621088 5722784 1614680 5707680 1601624 5681136 -1621088 5722784 1614680 5707680 1614648 5707656 1621040 5722712 -1614648 5707656 1620992 5722672 1621040 5722712 1614680 5707680 -1614680 5707680 1601624 5681136 1614648 5707656 1620992 5722672 -1621040 5722712 1621088 5722784 1614680 5707680 1620992 5722672 -1614648 5707656 1614680 5707680 1601624 5681136 1614576 5707608 -1663944 5646256 1614680 5707680 1621088 5722784 1621280 5723224 -1614648 5707656 1620872 5722632 1620992 5722672 1614680 5707680 -1620992 5722672 1621040 5722712 1614680 5707680 1620872 5722632 -1614648 5707656 1620872 5722632 1614680 5707680 1601624 5681136 -1614648 5707656 1620792 5722624 1620872 5722632 1614680 5707680 -1614648 5707656 1620792 5722624 1614680 5707680 1601624 5681136 -1614648 5707656 1620656 5722632 1620792 5722624 1614680 5707680 -1614648 5707656 1620656 5722632 1614680 5707680 1601624 5681136 -1620792 5722624 1620872 5722632 1614680 5707680 1620656 5722632 -1620872 5722632 1620992 5722672 1614680 5707680 1620792 5722624 -1614680 5707680 1621088 5722784 1663944 5646256 1663880 5646248 -1621088 5722784 1663944 5646256 1614680 5707680 1621040 5722712 -1614648 5707656 1611528 5715552 1620656 5722632 1614680 5707680 -1614648 5707656 1611528 5715552 1614680 5707680 1601624 5681136 -1620656 5722632 1620792 5722624 1614680 5707680 1611528 5715552 -1611528 5715552 1620600 5722648 1620656 5722632 1614680 5707680 -1614648 5707656 1611512 5715528 1611528 5715552 1614680 5707680 -1614648 5707656 1611512 5715528 1614680 5707680 1601624 5681136 -1614648 5707656 1610752 5708648 1611512 5715528 1614680 5707680 -1614648 5707656 1610752 5708648 1614680 5707680 1601624 5681136 -1610752 5708648 1611464 5715504 1611512 5715528 1614680 5707680 -1614648 5707656 1614512 5707600 1610752 5708648 1614680 5707680 -1614648 5707656 1614512 5707600 1614680 5707680 1601624 5681136 -1614512 5707600 1610760 5708480 1610752 5708648 1614680 5707680 -1610752 5708648 1611512 5715528 1614680 5707680 1614512 5707600 -1614648 5707656 1614576 5707608 1614512 5707600 1614680 5707680 -1611512 5715528 1611528 5715552 1614680 5707680 1610752 5708648 -1611528 5715552 1620656 5722632 1614680 5707680 1611512 5715528 -1663944 5646256 1614696 5707712 1621088 5722784 1621280 5723224 -1614680 5707680 1614696 5707712 1663944 5646256 1663880 5646248 -1614680 5707680 1614696 5707712 1663880 5646248 1601624 5681136 -1614680 5707680 1621088 5722784 1614696 5707712 1663880 5646248 -1621088 5722784 1614696 5707712 1614680 5707680 1621040 5722712 -1614680 5707680 1620992 5722672 1621040 5722712 1614696 5707712 -1614680 5707680 1620872 5722632 1620992 5722672 1614696 5707712 -1620992 5722672 1621040 5722712 1614696 5707712 1620872 5722632 -1614680 5707680 1620792 5722624 1620872 5722632 1614696 5707712 -1620872 5722632 1620992 5722672 1614696 5707712 1620792 5722624 -1614680 5707680 1620656 5722632 1620792 5722624 1614696 5707712 -1614680 5707680 1611528 5715552 1620656 5722632 1614696 5707712 -1620656 5722632 1620792 5722624 1614696 5707712 1611528 5715552 -1611528 5715552 1620600 5722648 1620656 5722632 1614696 5707712 -1620792 5722624 1620872 5722632 1614696 5707712 1620656 5722632 -1614696 5707712 1663880 5646248 1614680 5707680 1611528 5715552 -1621040 5722712 1621088 5722784 1614696 5707712 1620992 5722672 -1614680 5707680 1611512 5715528 1611528 5715552 1614696 5707712 -1611528 5715552 1620656 5722632 1614696 5707712 1611512 5715528 -1614680 5707680 1610752 5708648 1611512 5715528 1614696 5707712 -1614680 5707680 1614512 5707600 1610752 5708648 1614696 5707712 -1614512 5707600 1610760 5708480 1610752 5708648 1614696 5707712 -1610752 5708648 1611464 5715504 1611512 5715528 1614696 5707712 -1614680 5707680 1614648 5707656 1614512 5707600 1614696 5707712 -1614512 5707600 1610752 5708648 1614696 5707712 1614648 5707656 -1614648 5707656 1614576 5707608 1614512 5707600 1614696 5707712 -1610752 5708648 1611512 5715528 1614696 5707712 1614512 5707600 -1614680 5707680 1614648 5707656 1614696 5707712 1663880 5646248 -1611512 5715528 1611528 5715552 1614696 5707712 1610752 5708648 -1614696 5707712 1621088 5722784 1663944 5646256 1663880 5646248 -1621088 5722784 1663944 5646256 1614696 5707712 1621040 5722712 -1611528 5715552 1614704 5707744 1614696 5707712 1611512 5715528 -1614696 5707712 1614704 5707744 1620656 5722632 1620792 5722624 -1620656 5722632 1614704 5707744 1611528 5715552 1620600 5722648 -1614704 5707744 1611528 5715552 1620656 5722632 1620792 5722624 -1611528 5715552 1620656 5722632 1614704 5707744 1611512 5715528 -1614696 5707712 1614704 5707744 1620792 5722624 1620872 5722632 -1614696 5707712 1614704 5707744 1620872 5722632 1620992 5722672 -1614696 5707712 1614704 5707744 1620992 5722672 1621040 5722712 -1614704 5707744 1620872 5722632 1620992 5722672 1621040 5722712 -1614704 5707744 1620656 5722632 1620792 5722624 1620872 5722632 -1614704 5707744 1620792 5722624 1620872 5722632 1620992 5722672 -1614696 5707712 1614704 5707744 1621040 5722712 1621088 5722784 -1614704 5707744 1620992 5722672 1621040 5722712 1621088 5722784 -1614696 5707712 1610752 5708648 1611512 5715528 1614704 5707744 -1611512 5715528 1611528 5715552 1614704 5707744 1610752 5708648 -1610752 5708648 1611464 5715504 1611512 5715528 1614704 5707744 -1614696 5707712 1614512 5707600 1610752 5708648 1614704 5707744 -1614512 5707600 1610760 5708480 1610752 5708648 1614704 5707744 -1614696 5707712 1614648 5707656 1614512 5707600 1614704 5707744 -1614648 5707656 1614576 5707608 1614512 5707600 1614704 5707744 -1614696 5707712 1614680 5707680 1614648 5707656 1614704 5707744 -1614512 5707600 1610752 5708648 1614704 5707744 1614648 5707656 -1610752 5708648 1611512 5715528 1614704 5707744 1614512 5707600 -1614704 5707744 1621088 5722784 1614696 5707712 1614648 5707656 -1614696 5707712 1614704 5707744 1621088 5722784 1663944 5646256 -1621088 5722784 1621280 5723224 1663944 5646256 1614704 5707744 -1614704 5707744 1621040 5722712 1621088 5722784 1663944 5646256 -1614696 5707712 1614704 5707744 1663944 5646256 1663880 5646248 -1614696 5707712 1614648 5707656 1614704 5707744 1663944 5646256 -1620656 5722632 1614696 5707848 1611528 5715552 1620600 5722648 -1614704 5707744 1614696 5707848 1620656 5722632 1620792 5722624 -1614696 5707848 1611528 5715552 1620656 5722632 1620792 5722624 -1614704 5707744 1614696 5707848 1620792 5722624 1620872 5722632 -1614696 5707848 1620656 5722632 1620792 5722624 1620872 5722632 -1614704 5707744 1611528 5715552 1614696 5707848 1620872 5722632 -1611528 5715552 1614696 5707848 1614704 5707744 1611512 5715528 -1611528 5715552 1620656 5722632 1614696 5707848 1611512 5715528 -1614704 5707744 1610752 5708648 1611512 5715528 1614696 5707848 -1614696 5707848 1620872 5722632 1614704 5707744 1610752 5708648 -1611512 5715528 1611528 5715552 1614696 5707848 1610752 5708648 -1610752 5708648 1611464 5715504 1611512 5715528 1614696 5707848 -1614704 5707744 1614696 5707848 1620872 5722632 1620992 5722672 -1614704 5707744 1614696 5707848 1620992 5722672 1621040 5722712 -1614696 5707848 1620792 5722624 1620872 5722632 1620992 5722672 -1614704 5707744 1610752 5708648 1614696 5707848 1620992 5722672 -1614704 5707744 1614512 5707600 1610752 5708648 1614696 5707848 -1614512 5707600 1610760 5708480 1610752 5708648 1614696 5707848 -1610752 5708648 1611512 5715528 1614696 5707848 1614512 5707600 -1614704 5707744 1614512 5707600 1614696 5707848 1620992 5722672 -1614704 5707744 1614648 5707656 1614512 5707600 1614696 5707848 -1614704 5707744 1614696 5707712 1614648 5707656 1614696 5707848 -1614648 5707656 1614576 5707608 1614512 5707600 1614696 5707848 -1614704 5707744 1614648 5707656 1614696 5707848 1620992 5722672 -1614512 5707600 1610752 5708648 1614696 5707848 1614648 5707656 -1614696 5707848 1614688 5707952 1620656 5722632 1620792 5722624 -1614696 5707848 1611528 5715552 1614688 5707952 1620792 5722624 -1611528 5715552 1614688 5707952 1614696 5707848 1611512 5715528 -1614688 5707952 1620792 5722624 1614696 5707848 1611512 5715528 -1614688 5707952 1611528 5715552 1620656 5722632 1620792 5722624 -1611528 5715552 1620656 5722632 1614688 5707952 1611512 5715528 -1620656 5722632 1614688 5707952 1611528 5715552 1620600 5722648 -1614696 5707848 1614688 5707952 1620792 5722624 1620872 5722632 -1614688 5707952 1620656 5722632 1620792 5722624 1620872 5722632 -1614696 5707848 1611512 5715528 1614688 5707952 1620872 5722632 -1614696 5707848 1614688 5707952 1620872 5722632 1620992 5722672 -1614696 5707848 1611512 5715528 1614688 5707952 1620992 5722672 -1614688 5707952 1620792 5722624 1620872 5722632 1620992 5722672 -1614696 5707848 1610752 5708648 1611512 5715528 1614688 5707952 -1614696 5707848 1610752 5708648 1614688 5707952 1620992 5722672 -1611512 5715528 1611528 5715552 1614688 5707952 1610752 5708648 -1614696 5707848 1614512 5707600 1610752 5708648 1614688 5707952 -1614696 5707848 1614512 5707600 1614688 5707952 1620992 5722672 -1614512 5707600 1610760 5708480 1610752 5708648 1614688 5707952 -1610752 5708648 1611512 5715528 1614688 5707952 1614512 5707600 -1610752 5708648 1611464 5715504 1611512 5715528 1614688 5707952 -1614696 5707848 1614688 5707952 1620992 5722672 1614704 5707744 -1614696 5707848 1614648 5707656 1614512 5707600 1614688 5707952 -1614688 5707952 1614664 5708048 1620656 5722632 1620792 5722624 -1614688 5707952 1614664 5708048 1620792 5722624 1620872 5722632 -1614664 5708048 1611528 5715552 1620656 5722632 1620792 5722624 -1614664 5708048 1620656 5722632 1620792 5722624 1620872 5722632 -1614688 5707952 1611528 5715552 1614664 5708048 1620872 5722632 -1611528 5715552 1614664 5708048 1614688 5707952 1611512 5715528 -1614688 5707952 1610752 5708648 1611512 5715528 1614664 5708048 -1611528 5715552 1620656 5722632 1614664 5708048 1611512 5715528 -1614664 5708048 1620872 5722632 1614688 5707952 1610752 5708648 -1611512 5715528 1611528 5715552 1614664 5708048 1610752 5708648 -1620656 5722632 1614664 5708048 1611528 5715552 1620600 5722648 -1614688 5707952 1614664 5708048 1620872 5722632 1620992 5722672 -1614664 5708048 1620792 5722624 1620872 5722632 1620992 5722672 -1614688 5707952 1610752 5708648 1614664 5708048 1620992 5722672 -1614688 5707952 1614664 5708048 1620992 5722672 1614696 5707848 -1614688 5707952 1614512 5707600 1610752 5708648 1614664 5708048 -1610752 5708648 1611512 5715528 1614664 5708048 1614512 5707600 -1614512 5707600 1610760 5708480 1610752 5708648 1614664 5708048 -1610752 5708648 1611512 5715528 1614664 5708048 1610760 5708480 -1614688 5707952 1614696 5707848 1614512 5707600 1614664 5708048 -1614688 5707952 1614512 5707600 1614664 5708048 1620992 5722672 -1614512 5707600 1610760 5708480 1614664 5708048 1614688 5707952 -1610752 5708648 1611464 5715504 1611512 5715528 1614664 5708048 -1610752 5708648 1611464 5715504 1614664 5708048 1610760 5708480 -1611512 5715528 1611528 5715552 1614664 5708048 1611464 5715504 -1610752 5708648 1611352 5715472 1611464 5715504 1614664 5708048 -1614512 5707600 1610728 5708400 1610760 5708480 1614664 5708048 -1610752 5708648 1614648 5708080 1614664 5708048 1610760 5708480 -1610752 5708648 1611464 5715504 1614648 5708080 1610760 5708480 -1614664 5708048 1614512 5707600 1610760 5708480 1614648 5708080 -1610760 5708480 1610752 5708648 1614648 5708080 1614512 5707600 -1614648 5708080 1611464 5715504 1614664 5708048 1614512 5707600 -1614664 5708048 1614688 5707952 1614512 5707600 1614648 5708080 -1614512 5707600 1610760 5708480 1614648 5708080 1614688 5707952 -1614688 5707952 1614696 5707848 1614512 5707600 1614648 5708080 -1614664 5708048 1614688 5707952 1614648 5708080 1611464 5715504 -1611464 5715504 1614648 5708080 1610752 5708648 1611352 5715472 -1614664 5708048 1614648 5708080 1611464 5715504 1611512 5715528 -1614648 5708080 1610752 5708648 1611464 5715504 1611512 5715528 -1614664 5708048 1614688 5707952 1614648 5708080 1611512 5715528 -1614664 5708048 1614648 5708080 1611512 5715528 1611528 5715552 -1614664 5708048 1614688 5707952 1614648 5708080 1611528 5715552 -1614664 5708048 1614648 5708080 1611528 5715552 1620656 5722632 -1614664 5708048 1614648 5708080 1620656 5722632 1620792 5722624 -1614664 5708048 1614688 5707952 1614648 5708080 1620792 5722624 -1614648 5708080 1611528 5715552 1620656 5722632 1620792 5722624 -1614664 5708048 1614648 5708080 1620792 5722624 1620872 5722632 -1614664 5708048 1614648 5708080 1620872 5722632 1620992 5722672 -1614648 5708080 1620656 5722632 1620792 5722624 1620872 5722632 -1614664 5708048 1614688 5707952 1614648 5708080 1620872 5722632 -1614648 5708080 1611512 5715528 1611528 5715552 1620656 5722632 -1611528 5715552 1620600 5722648 1620656 5722632 1614648 5708080 -1614648 5708080 1611464 5715504 1611512 5715528 1611528 5715552 -1614512 5707600 1610728 5708400 1610760 5708480 1614648 5708080 -1614648 5708080 1614576 5708144 1611464 5715504 1611512 5715528 -1614648 5708080 1610752 5708648 1614576 5708144 1611512 5715528 -1610752 5708648 1614576 5708144 1614648 5708080 1610760 5708480 -1614648 5708080 1614512 5707600 1610760 5708480 1614576 5708144 -1614576 5708144 1611512 5715528 1614648 5708080 1614512 5707600 -1610760 5708480 1610752 5708648 1614576 5708144 1614512 5707600 -1614648 5708080 1614688 5707952 1614512 5707600 1614576 5708144 -1614512 5707600 1610760 5708480 1614576 5708144 1614688 5707952 -1614648 5708080 1614688 5707952 1614576 5708144 1611512 5715528 -1614688 5707952 1614696 5707848 1614512 5707600 1614576 5708144 -1614648 5708080 1614664 5708048 1614688 5707952 1614576 5708144 -1614648 5708080 1614664 5708048 1614576 5708144 1611512 5715528 -1614688 5707952 1614512 5707600 1614576 5708144 1614664 5708048 -1614576 5708144 1610752 5708648 1611464 5715504 1611512 5715528 -1610752 5708648 1611464 5715504 1614576 5708144 1610760 5708480 -1611464 5715504 1614576 5708144 1610752 5708648 1611352 5715472 -1614648 5708080 1614576 5708144 1611512 5715528 1611528 5715552 -1614576 5708144 1611464 5715504 1611512 5715528 1611528 5715552 -1614648 5708080 1614664 5708048 1614576 5708144 1611528 5715552 -1614648 5708080 1614576 5708144 1611528 5715552 1620656 5722632 -1614648 5708080 1614664 5708048 1614576 5708144 1620656 5722632 -1614648 5708080 1614576 5708144 1620656 5722632 1620792 5722624 -1611528 5715552 1620600 5722648 1620656 5722632 1614576 5708144 -1614576 5708144 1611512 5715528 1611528 5715552 1620656 5722632 -1614512 5707600 1610728 5708400 1610760 5708480 1614576 5708144 -1614512 5707600 1614512 5708144 1614576 5708144 1614688 5707952 -1614512 5707600 1610760 5708480 1614512 5708144 1614688 5707952 -1614576 5708144 1614512 5708144 1610760 5708480 1610752 5708648 -1614512 5708144 1614512 5707600 1610760 5708480 1610752 5708648 -1614576 5708144 1614664 5708048 1614688 5707952 1614512 5708144 -1614688 5707952 1614512 5707600 1614512 5708144 1614664 5708048 -1614512 5707600 1614512 5708144 1614688 5707952 1614696 5707848 -1614512 5707600 1610760 5708480 1614512 5708144 1614696 5707848 -1614512 5708144 1614664 5708048 1614688 5707952 1614696 5707848 -1614576 5708144 1614648 5708080 1614664 5708048 1614512 5708144 -1614664 5708048 1614688 5707952 1614512 5708144 1614648 5708080 -1614512 5708144 1610752 5708648 1614576 5708144 1614648 5708080 -1614576 5708144 1614512 5708144 1610752 5708648 1611464 5715504 -1614512 5708144 1610760 5708480 1610752 5708648 1611464 5715504 -1614576 5708144 1614512 5708144 1611464 5715504 1611512 5715528 -1614576 5708144 1614512 5708144 1611512 5715528 1611528 5715552 -1614576 5708144 1614648 5708080 1614512 5708144 1611512 5715528 -1614512 5708144 1610752 5708648 1611464 5715504 1611512 5715528 -1610752 5708648 1611352 5715472 1611464 5715504 1614512 5708144 -1610760 5708480 1614512 5708144 1614512 5707600 1610728 5708400 -1614512 5707600 1614512 5708144 1614696 5707848 1614648 5707656 -1614512 5708144 1614488 5708072 1610760 5708480 1610752 5708648 -1614512 5708144 1614512 5707600 1614488 5708072 1610752 5708648 -1614512 5707600 1614488 5708072 1614512 5708144 1614696 5707848 -1614488 5708072 1610752 5708648 1614512 5708144 1614696 5707848 -1614512 5708144 1614488 5708072 1610752 5708648 1611464 5715504 -1614512 5708144 1614688 5707952 1614696 5707848 1614488 5708072 -1614512 5708144 1614688 5707952 1614488 5708072 1610752 5708648 -1614696 5707848 1614512 5707600 1614488 5708072 1614688 5707952 -1614512 5708144 1614664 5708048 1614688 5707952 1614488 5708072 -1614512 5708144 1614664 5708048 1614488 5708072 1610752 5708648 -1614512 5708144 1614648 5708080 1614664 5708048 1614488 5708072 -1614512 5708144 1614648 5708080 1614488 5708072 1610752 5708648 -1614664 5708048 1614688 5707952 1614488 5708072 1614648 5708080 -1614688 5707952 1614696 5707848 1614488 5708072 1614664 5708048 -1614488 5708072 1614512 5707600 1610760 5708480 1610752 5708648 -1614512 5707600 1610760 5708480 1614488 5708072 1614696 5707848 -1614512 5708144 1614576 5708144 1614648 5708080 1614488 5708072 -1614512 5708144 1614576 5708144 1614488 5708072 1610752 5708648 -1614648 5708080 1614664 5708048 1614488 5708072 1614576 5708144 -1610760 5708480 1614488 5708072 1614512 5707600 1610728 5708400 -1614512 5707600 1614488 5708072 1614696 5707848 1614648 5707656 -1614488 5708072 1614456 5707992 1610760 5708480 1610752 5708648 -1614488 5708072 1614456 5707992 1610752 5708648 1614512 5708144 -1610752 5708648 1611464 5715504 1614512 5708144 1614456 5707992 -1614456 5707992 1614512 5707600 1610760 5708480 1610752 5708648 -1614456 5707992 1610760 5708480 1610752 5708648 1614512 5708144 -1614488 5708072 1614512 5707600 1614456 5707992 1614512 5708144 -1614512 5707600 1614456 5707992 1614488 5708072 1614696 5707848 -1614488 5708072 1614688 5707952 1614696 5707848 1614456 5707992 -1614488 5708072 1614664 5708048 1614688 5707952 1614456 5707992 -1614688 5707952 1614696 5707848 1614456 5707992 1614664 5708048 -1614488 5708072 1614648 5708080 1614664 5708048 1614456 5707992 -1614512 5707600 1610760 5708480 1614456 5707992 1614696 5707848 -1614456 5707992 1614512 5708144 1614488 5708072 1614664 5708048 -1614696 5707848 1614512 5707600 1614456 5707992 1614688 5707952 -1610760 5708480 1614456 5707992 1614512 5707600 1610728 5708400 -1610760 5708480 1610752 5708648 1614456 5707992 1610728 5708400 -1614456 5707992 1614696 5707848 1614512 5707600 1610728 5708400 -1614512 5707600 1610712 5708360 1610728 5708400 1614456 5707992 -1614512 5707600 1610680 5708312 1610712 5708360 1614456 5707992 -1614512 5707600 1610712 5708360 1614456 5707992 1614696 5707848 -1610728 5708400 1610760 5708480 1614456 5707992 1610712 5708360 -1614512 5707600 1614456 5707992 1614696 5707848 1614648 5707656 -1610712 5708360 1614416 5707944 1614512 5707600 1610680 5708312 -1614512 5707600 1614416 5707944 1614456 5707992 1614696 5707848 -1614512 5707600 1610712 5708360 1614416 5707944 1614696 5707848 -1614416 5707944 1610712 5708360 1614456 5707992 1614696 5707848 -1614456 5707992 1614688 5707952 1614696 5707848 1614416 5707944 -1614456 5707992 1614416 5707944 1610712 5708360 1610728 5708400 -1614416 5707944 1614512 5707600 1610712 5708360 1610728 5708400 -1614456 5707992 1614696 5707848 1614416 5707944 1610728 5708400 -1614456 5707992 1614416 5707944 1610728 5708400 1610760 5708480 -1614456 5707992 1614416 5707944 1610760 5708480 1610752 5708648 -1614456 5707992 1614696 5707848 1614416 5707944 1610752 5708648 -1614456 5707992 1614416 5707944 1610752 5708648 1614512 5708144 -1614456 5707992 1614416 5707944 1614512 5708144 1614488 5708072 -1610752 5708648 1611464 5715504 1614512 5708144 1614416 5707944 -1614416 5707944 1610760 5708480 1610752 5708648 1614512 5708144 -1614456 5707992 1614696 5707848 1614416 5707944 1614488 5708072 -1614416 5707944 1610752 5708648 1614512 5708144 1614488 5708072 -1614416 5707944 1610712 5708360 1610728 5708400 1610760 5708480 -1614416 5707944 1610728 5708400 1610760 5708480 1610752 5708648 -1614512 5707600 1614416 5707944 1614696 5707848 1614648 5707656 -1614512 5707600 1610712 5708360 1614416 5707944 1614648 5707656 -1614416 5707944 1614456 5707992 1614696 5707848 1614648 5707656 -1614512 5707600 1614416 5707944 1614648 5707656 1614576 5707608 -1614696 5707848 1614704 5707744 1614648 5707656 1614416 5707944 -1614416 5707944 1614328 5707896 1610712 5708360 1610728 5708400 -1614416 5707944 1614512 5707600 1614328 5707896 1610728 5708400 -1614512 5707600 1614328 5707896 1614416 5707944 1614648 5707656 -1610712 5708360 1614328 5707896 1614512 5707600 1610680 5708312 -1614512 5707600 1609472 5706664 1610680 5708312 1614328 5707896 -1614328 5707896 1610680 5708312 1610712 5708360 1610728 5708400 -1614328 5707896 1614416 5707944 1614512 5707600 1610680 5708312 -1614416 5707944 1614328 5707896 1610728 5708400 1610760 5708480 -1614328 5707896 1610712 5708360 1610728 5708400 1610760 5708480 -1614416 5707944 1614512 5707600 1614328 5707896 1610760 5708480 -1614416 5707944 1614328 5707896 1610760 5708480 1610752 5708648 -1614416 5707944 1614512 5707600 1614328 5707896 1610752 5708648 -1614416 5707944 1614328 5707896 1610752 5708648 1614512 5708144 -1614416 5707944 1614512 5707600 1614328 5707896 1614512 5708144 -1610752 5708648 1611464 5715504 1614512 5708144 1614328 5707896 -1614416 5707944 1614328 5707896 1614512 5708144 1614488 5708072 -1614416 5707944 1614328 5707896 1614488 5708072 1614456 5707992 -1614416 5707944 1614512 5707600 1614328 5707896 1614456 5707992 -1614328 5707896 1610752 5708648 1614512 5708144 1614488 5708072 -1614328 5707896 1614512 5708144 1614488 5708072 1614456 5707992 -1614328 5707896 1610728 5708400 1610760 5708480 1610752 5708648 -1614328 5707896 1610760 5708480 1610752 5708648 1614512 5708144 -1610680 5708312 1614264 5707840 1614512 5707600 1609472 5706664 -1614512 5707600 1609424 5706616 1609472 5706664 1614264 5707840 -1610680 5708312 1614328 5707896 1614264 5707840 1609472 5706664 -1614264 5707840 1614328 5707896 1614512 5707600 1609472 5706664 -1610680 5708312 1614264 5707840 1609472 5706664 1610640 5708296 -1614328 5707896 1614264 5707840 1610680 5708312 1610712 5708360 -1614264 5707840 1609472 5706664 1610680 5708312 1610712 5708360 -1614328 5707896 1614264 5707840 1610712 5708360 1610728 5708400 -1614328 5707896 1614264 5707840 1610728 5708400 1610760 5708480 -1614264 5707840 1610680 5708312 1610712 5708360 1610728 5708400 -1614264 5707840 1610712 5708360 1610728 5708400 1610760 5708480 -1614328 5707896 1614512 5707600 1614264 5707840 1610760 5708480 -1614512 5707600 1614264 5707840 1614328 5707896 1614416 5707944 -1614328 5707896 1614264 5707840 1610760 5708480 1610752 5708648 -1614264 5707840 1610728 5708400 1610760 5708480 1610752 5708648 -1614328 5707896 1614512 5707600 1614264 5707840 1610752 5708648 -1614328 5707896 1614264 5707840 1610752 5708648 1614512 5708144 -1610752 5708648 1611464 5715504 1614512 5708144 1614264 5707840 -1614328 5707896 1614512 5707600 1614264 5707840 1614512 5708144 -1614328 5707896 1614264 5707840 1614512 5708144 1614488 5708072 -1614264 5707840 1610760 5708480 1610752 5708648 1614512 5708144 -1614264 5707840 1614224 5707816 1609472 5706664 1610680 5708312 -1609472 5706664 1614224 5707816 1614512 5707600 1609424 5706616 -1614264 5707840 1614224 5707816 1610680 5708312 1610712 5708360 -1614224 5707816 1609472 5706664 1610680 5708312 1610712 5708360 -1614264 5707840 1614512 5707600 1614224 5707816 1610712 5708360 -1614512 5707600 1614224 5707816 1614264 5707840 1614328 5707896 -1609472 5706664 1610640 5708296 1610680 5708312 1614224 5707816 -1614264 5707840 1614224 5707816 1610712 5708360 1610728 5708400 -1614224 5707816 1610680 5708312 1610712 5708360 1610728 5708400 -1614264 5707840 1614512 5707600 1614224 5707816 1610728 5708400 -1614224 5707816 1614512 5707600 1609472 5706664 1610680 5708312 -1614264 5707840 1614224 5707816 1610728 5708400 1610760 5708480 -1614264 5707840 1614512 5707600 1614224 5707816 1610760 5708480 -1614264 5707840 1614224 5707816 1610760 5708480 1610752 5708648 -1614264 5707840 1614512 5707600 1614224 5707816 1610752 5708648 -1614224 5707816 1610712 5708360 1610728 5708400 1610760 5708480 -1614224 5707816 1610728 5708400 1610760 5708480 1610752 5708648 -1614264 5707840 1614224 5707816 1610752 5708648 1614512 5708144 -1614264 5707840 1614512 5707600 1614224 5707816 1614512 5708144 -1614224 5707816 1610760 5708480 1610752 5708648 1614512 5708144 -1610752 5708648 1611464 5715504 1614512 5708144 1614224 5707816 -1614264 5707840 1614224 5707816 1614512 5708144 1614328 5707896 -1614264 5707840 1614512 5707600 1614224 5707816 1614328 5707896 -1614512 5708144 1614488 5708072 1614328 5707896 1614224 5707816 -1614224 5707816 1610752 5708648 1614512 5708144 1614328 5707896 -1609472 5706664 1614224 5707800 1614512 5707600 1609424 5706616 -1614224 5707816 1614224 5707800 1609472 5706664 1610680 5708312 -1614224 5707816 1614224 5707800 1610680 5708312 1610712 5708360 -1614224 5707816 1614224 5707800 1610712 5708360 1610728 5708400 -1614224 5707800 1610680 5708312 1610712 5708360 1610728 5708400 -1609472 5706664 1610640 5708296 1610680 5708312 1614224 5707800 -1614224 5707816 1614224 5707800 1610728 5708400 1610760 5708480 -1614224 5707800 1610712 5708360 1610728 5708400 1610760 5708480 -1614224 5707800 1609472 5706664 1610680 5708312 1610712 5708360 -1614224 5707816 1614512 5707600 1614224 5707800 1610760 5708480 -1614512 5707600 1614224 5707800 1614224 5707816 1614264 5707840 -1614512 5707600 1614224 5707800 1614264 5707840 1614328 5707896 -1614224 5707800 1610760 5708480 1614224 5707816 1614264 5707840 -1614224 5707800 1614512 5707600 1609472 5706664 1610680 5708312 -1614512 5707600 1609472 5706664 1614224 5707800 1614264 5707840 -1614224 5707816 1614224 5707800 1610760 5708480 1610752 5708648 -1609472 5706664 1614224 5707784 1614512 5707600 1609424 5706616 -1614224 5707800 1614224 5707784 1609472 5706664 1610680 5708312 -1614224 5707800 1614512 5707600 1614224 5707784 1610680 5708312 -1614224 5707784 1614512 5707600 1609472 5706664 1610680 5708312 -1609472 5706664 1610640 5708296 1610680 5708312 1614224 5707784 -1614224 5707800 1614224 5707784 1610680 5708312 1610712 5708360 -1614224 5707800 1614512 5707600 1614224 5707784 1610712 5708360 -1614224 5707800 1614224 5707784 1610712 5708360 1610728 5708400 -1614224 5707800 1614512 5707600 1614224 5707784 1610728 5708400 -1614224 5707800 1614224 5707784 1610728 5708400 1610760 5708480 -1614224 5707800 1614512 5707600 1614224 5707784 1610760 5708480 -1614224 5707784 1610712 5708360 1610728 5708400 1610760 5708480 -1614224 5707800 1614224 5707784 1610760 5708480 1614224 5707816 -1614224 5707784 1610680 5708312 1610712 5708360 1610728 5708400 -1614224 5707784 1609472 5706664 1610680 5708312 1610712 5708360 -1614512 5707600 1614224 5707784 1614224 5707800 1614264 5707840 -1614224 5707784 1610760 5708480 1614224 5707800 1614264 5707840 -1614512 5707600 1614224 5707784 1614264 5707840 1614328 5707896 -1614512 5707600 1609472 5706664 1614224 5707784 1614264 5707840 -1614224 5707800 1614224 5707816 1614264 5707840 1614224 5707784 -1614224 5707784 1614240 5707760 1609472 5706664 1610680 5708312 -1614224 5707784 1614512 5707600 1614240 5707760 1610680 5708312 -1609472 5706664 1614240 5707760 1614512 5707600 1609424 5706616 -1609472 5706664 1610640 5708296 1610680 5708312 1614240 5707760 -1614512 5707600 1614240 5707760 1614224 5707784 1614264 5707840 -1614240 5707760 1610680 5708312 1614224 5707784 1614264 5707840 -1614512 5707600 1614240 5707760 1614264 5707840 1614328 5707896 -1614240 5707760 1614224 5707784 1614264 5707840 1614328 5707896 -1614240 5707760 1614512 5707600 1609472 5706664 1610680 5708312 -1614224 5707784 1614240 5707760 1610680 5708312 1610712 5708360 -1614224 5707784 1614224 5707800 1614264 5707840 1614240 5707760 -1614224 5707784 1614224 5707800 1614240 5707760 1610680 5708312 -1614264 5707840 1614328 5707896 1614240 5707760 1614224 5707800 -1614224 5707800 1614224 5707816 1614264 5707840 1614240 5707760 -1614512 5707600 1614240 5707760 1614328 5707896 1614416 5707944 -1614512 5707600 1609472 5706664 1614240 5707760 1614328 5707896 -1609472 5706664 1614288 5707728 1614512 5707600 1609424 5706616 -1614240 5707760 1614288 5707728 1609472 5706664 1610680 5708312 -1614512 5707600 1614288 5707728 1614240 5707760 1614328 5707896 -1614512 5707600 1609472 5706664 1614288 5707728 1614328 5707896 -1614240 5707760 1614264 5707840 1614328 5707896 1614288 5707728 -1614240 5707760 1614224 5707800 1614264 5707840 1614288 5707728 -1614512 5707600 1614288 5707728 1614328 5707896 1614416 5707944 -1614512 5707600 1614288 5707728 1614416 5707944 1614648 5707656 -1614512 5707600 1609472 5706664 1614288 5707728 1614416 5707944 -1614328 5707896 1614416 5707944 1614288 5707728 1614264 5707840 -1614288 5707728 1609472 5706664 1614240 5707760 1614264 5707840 -1609472 5706664 1614360 5707680 1614512 5707600 1609424 5706616 -1614512 5707600 1614360 5707680 1614288 5707728 1614416 5707944 -1614512 5707600 1609472 5706664 1614360 5707680 1614416 5707944 -1614512 5707600 1614360 5707680 1614416 5707944 1614648 5707656 -1614288 5707728 1614328 5707896 1614416 5707944 1614360 5707680 -1614416 5707944 1614512 5707600 1614360 5707680 1614328 5707896 -1614360 5707680 1609472 5706664 1614288 5707728 1614328 5707896 -1614288 5707728 1614264 5707840 1614328 5707896 1614360 5707680 -1614288 5707728 1614360 5707680 1609472 5706664 1614240 5707760 -1609472 5706664 1614408 5707648 1614512 5707600 1609424 5706616 -1614360 5707680 1614408 5707648 1609472 5706664 1614288 5707728 -1614512 5707600 1614408 5707648 1614360 5707680 1614416 5707944 -1614408 5707648 1609472 5706664 1614360 5707680 1614416 5707944 -1614512 5707600 1614408 5707648 1614416 5707944 1614648 5707656 -1614408 5707648 1614360 5707680 1614416 5707944 1614648 5707656 -1614360 5707680 1614328 5707896 1614416 5707944 1614408 5707648 -1614512 5707600 1614408 5707648 1614648 5707656 1614576 5707608 -1614416 5707944 1614696 5707848 1614648 5707656 1614408 5707648 -1614416 5707944 1614696 5707848 1614408 5707648 1614360 5707680 -1614416 5707944 1614456 5707992 1614696 5707848 1614408 5707648 -1614696 5707848 1614704 5707744 1614648 5707656 1614408 5707648 -1614408 5707648 1614696 5707848 1614648 5707656 1614576 5707608 -1614512 5707600 1609472 5706664 1614408 5707648 1614576 5707608 -1610752 5708648 1613560 5708192 1614224 5707816 1610760 5708480 -1614512 5708144 1613560 5708192 1610752 5708648 1611464 5715504 -1613560 5708192 1614512 5708144 1614224 5707816 1610760 5708480 -1614512 5708144 1614224 5707816 1613560 5708192 1611464 5715504 -1614224 5707816 1614224 5707800 1610760 5708480 1613560 5708192 -1610760 5708480 1610752 5708648 1613560 5708192 1614224 5707800 -1614224 5707800 1614224 5707784 1610760 5708480 1613560 5708192 -1614224 5707784 1610728 5708400 1610760 5708480 1613560 5708192 -1614224 5707784 1610712 5708360 1610728 5708400 1613560 5708192 -1610728 5708400 1610760 5708480 1613560 5708192 1610712 5708360 -1610760 5708480 1610752 5708648 1613560 5708192 1610728 5708400 -1614224 5707784 1610712 5708360 1613560 5708192 1614224 5707800 -1614224 5707784 1610680 5708312 1610712 5708360 1613560 5708192 -1610712 5708360 1610728 5708400 1613560 5708192 1610680 5708312 -1614224 5707784 1610680 5708312 1613560 5708192 1614224 5707800 -1614224 5707816 1614224 5707800 1613560 5708192 1614512 5708144 -1614224 5707784 1614240 5707760 1610680 5708312 1613560 5708192 -1614240 5707760 1609472 5706664 1610680 5708312 1613560 5708192 -1609472 5706664 1610640 5708296 1610680 5708312 1613560 5708192 -1614224 5707784 1614240 5707760 1613560 5708192 1614224 5707800 -1610680 5708312 1610712 5708360 1613560 5708192 1609472 5706664 -1614240 5707760 1614288 5707728 1609472 5706664 1613560 5708192 -1614240 5707760 1609472 5706664 1613560 5708192 1614224 5707784 -1614224 5707800 1614224 5707784 1613560 5708192 1614224 5707816 -1610752 5708648 1611464 5715504 1613560 5708192 1610760 5708480 -1614512 5708144 1613560 5708192 1611464 5715504 1611512 5715528 -1613560 5708192 1610752 5708648 1611464 5715504 1611512 5715528 -1614512 5708144 1614224 5707816 1613560 5708192 1611512 5715528 -1614512 5708144 1613560 5708192 1611512 5715528 1614576 5708144 -1610752 5708648 1611352 5715472 1611464 5715504 1613560 5708192 -1614224 5707816 1613560 5708192 1614512 5708144 1614328 5707896 -1614224 5707816 1614224 5707800 1613560 5708192 1614328 5707896 -1613560 5708192 1611512 5715528 1614512 5708144 1614328 5707896 -1614512 5708144 1614488 5708072 1614328 5707896 1613560 5708192 -1614224 5707816 1613560 5708192 1614328 5707896 1614264 5707840 -1613560 5708192 1613616 5708152 1609472 5706664 1610680 5708312 -1609472 5706664 1613616 5708152 1614240 5707760 1614288 5707728 -1614240 5707760 1613616 5708152 1613560 5708192 1614224 5707784 -1614240 5707760 1609472 5706664 1613616 5708152 1614224 5707784 -1613560 5708192 1614224 5707800 1614224 5707784 1613616 5708152 -1613616 5708152 1609472 5706664 1613560 5708192 1614224 5707800 -1614224 5707784 1614240 5707760 1613616 5708152 1614224 5707800 -1613560 5708192 1614224 5707816 1614224 5707800 1613616 5708152 -1614224 5707800 1614224 5707784 1613616 5708152 1614224 5707816 -1613560 5708192 1614328 5707896 1614224 5707816 1613616 5708152 -1613560 5708192 1614328 5707896 1613616 5708152 1609472 5706664 -1614224 5707816 1614224 5707800 1613616 5708152 1614328 5707896 -1613560 5708192 1614512 5708144 1614328 5707896 1613616 5708152 -1614328 5707896 1614224 5707816 1613616 5708152 1614512 5708144 -1613560 5708192 1611512 5715528 1614512 5708144 1613616 5708152 -1613560 5708192 1614512 5708144 1613616 5708152 1609472 5706664 -1614512 5708144 1614488 5708072 1614328 5707896 1613616 5708152 -1614328 5707896 1614264 5707840 1614224 5707816 1613616 5708152 -1613616 5708152 1613640 5708144 1614328 5707896 1614224 5707816 -1613640 5708144 1614512 5708144 1614328 5707896 1614224 5707816 -1613616 5708152 1613640 5708144 1614224 5707816 1614224 5707800 -1613616 5708152 1613640 5708144 1614224 5707800 1614224 5707784 -1613640 5708144 1614328 5707896 1614224 5707816 1614224 5707800 -1613616 5708152 1613640 5708144 1614224 5707784 1614240 5707760 -1613616 5708152 1613640 5708144 1614240 5707760 1609472 5706664 -1613640 5708144 1614224 5707800 1614224 5707784 1614240 5707760 -1613640 5708144 1614224 5707816 1614224 5707800 1614224 5707784 -1614328 5707896 1613640 5708144 1614512 5708144 1614488 5708072 -1613616 5708152 1614512 5708144 1613640 5708144 1614240 5707760 -1614512 5708144 1613640 5708144 1613616 5708152 1613560 5708192 -1614512 5708144 1614328 5707896 1613640 5708144 1613560 5708192 -1614512 5708144 1613640 5708144 1613560 5708192 1611512 5715528 -1613640 5708144 1614240 5707760 1613616 5708152 1613560 5708192 -1614328 5707896 1614264 5707840 1614224 5707816 1613640 5708144 -1613640 5708144 1613720 5708152 1614512 5708144 1614328 5707896 -1613640 5708144 1613720 5708152 1614328 5707896 1614224 5707816 -1613640 5708144 1613560 5708192 1613720 5708152 1614224 5707816 -1613720 5708152 1614512 5708144 1614328 5707896 1614224 5707816 -1613640 5708144 1613720 5708152 1614224 5707816 1614224 5707800 -1613720 5708152 1614328 5707896 1614224 5707816 1614224 5707800 -1613640 5708144 1613560 5708192 1613720 5708152 1614224 5707800 -1614512 5708144 1613720 5708152 1613560 5708192 1611512 5715528 -1613640 5708144 1613720 5708152 1614224 5707800 1614224 5707784 -1613640 5708144 1613560 5708192 1613720 5708152 1614224 5707784 -1613640 5708144 1613720 5708152 1614224 5707784 1614240 5707760 -1613720 5708152 1614224 5707816 1614224 5707800 1614224 5707784 -1614512 5708144 1614488 5708072 1614328 5707896 1613720 5708152 -1613560 5708192 1613720 5708152 1613640 5708144 1613616 5708152 -1613720 5708152 1614224 5707784 1613640 5708144 1613616 5708152 -1614328 5707896 1614264 5707840 1614224 5707816 1613720 5708152 -1614224 5707816 1614224 5707800 1613720 5708152 1614264 5707840 -1614328 5707896 1614264 5707840 1613720 5708152 1614512 5708144 -1613720 5708152 1613560 5708192 1614512 5708144 1614328 5707896 -1613560 5708192 1614512 5708144 1613720 5708152 1613616 5708152 -1613560 5708192 1613768 5708184 1614512 5708144 1613720 5708152 -1613560 5708192 1611512 5715528 1613768 5708184 1613720 5708152 -1614512 5708144 1613768 5708184 1611512 5715528 1614576 5708144 -1611512 5715528 1613768 5708184 1613560 5708192 1611464 5715504 -1614512 5708144 1614328 5707896 1613720 5708152 1613768 5708184 -1614328 5707896 1614264 5707840 1613720 5708152 1613768 5708184 -1613720 5708152 1613560 5708192 1613768 5708184 1614264 5707840 -1614512 5708144 1614488 5708072 1614328 5707896 1613768 5708184 -1614488 5708072 1614456 5707992 1614328 5707896 1613768 5708184 -1614264 5707840 1614224 5707816 1613720 5708152 1613768 5708184 -1614224 5707816 1614224 5707800 1613720 5708152 1613768 5708184 -1614264 5707840 1614224 5707816 1613768 5708184 1614328 5707896 -1613720 5708152 1613560 5708192 1613768 5708184 1614224 5707816 -1614328 5707896 1614264 5707840 1613768 5708184 1614488 5708072 -1613768 5708184 1611512 5715528 1614512 5708144 1614488 5708072 -1613560 5708192 1613768 5708184 1613720 5708152 1613616 5708152 -1613560 5708192 1611512 5715528 1613768 5708184 1613616 5708152 -1613768 5708184 1614224 5707816 1613720 5708152 1613616 5708152 -1613720 5708152 1613640 5708144 1613616 5708152 1613768 5708184 -1614512 5708144 1613848 5708256 1611512 5715528 1614576 5708144 -1611512 5715528 1611528 5715552 1614576 5708144 1613848 5708256 -1613848 5708256 1613768 5708184 1611512 5715528 1614576 5708144 -1614512 5708144 1613768 5708184 1613848 5708256 1614576 5708144 -1613768 5708184 1613848 5708256 1614512 5708144 1614488 5708072 -1613768 5708184 1611512 5715528 1613848 5708256 1614488 5708072 -1613848 5708256 1614576 5708144 1614512 5708144 1614488 5708072 -1613768 5708184 1613848 5708256 1614488 5708072 1614328 5707896 -1613768 5708184 1611512 5715528 1613848 5708256 1614328 5707896 -1614488 5708072 1614456 5707992 1614328 5707896 1613848 5708256 -1613768 5708184 1613848 5708256 1614328 5707896 1614264 5707840 -1613768 5708184 1613848 5708256 1614264 5707840 1614224 5707816 -1613768 5708184 1611512 5715528 1613848 5708256 1614224 5707816 -1613848 5708256 1614488 5708072 1614328 5707896 1614264 5707840 -1613768 5708184 1613848 5708256 1614224 5707816 1613720 5708152 -1613848 5708256 1614328 5707896 1614264 5707840 1614224 5707816 -1613848 5708256 1614512 5708144 1614488 5708072 1614328 5707896 -1611512 5715528 1613848 5708256 1613768 5708184 1613560 5708192 -1611512 5715528 1614576 5708144 1613848 5708256 1613560 5708192 -1613848 5708256 1614224 5707816 1613768 5708184 1613560 5708192 -1613768 5708184 1613616 5708152 1613560 5708192 1613848 5708256 -1611512 5715528 1613848 5708256 1613560 5708192 1611464 5715504 -1613560 5708192 1610752 5708648 1611464 5715504 1613848 5708256 -1611512 5715528 1614576 5708144 1613848 5708256 1611464 5715504 -1613848 5708256 1613768 5708184 1613560 5708192 1611464 5715504 -1614576 5708144 1613904 5708352 1611512 5715528 1611528 5715552 -1611512 5715528 1613904 5708352 1613848 5708256 1611464 5715504 -1613904 5708352 1614576 5708144 1613848 5708256 1611464 5715504 -1614576 5708144 1613848 5708256 1613904 5708352 1611528 5715552 -1613904 5708352 1611464 5715504 1611512 5715528 1611528 5715552 -1613848 5708256 1613904 5708352 1614576 5708144 1614512 5708144 -1613848 5708256 1611464 5715504 1613904 5708352 1614512 5708144 -1613904 5708352 1611528 5715552 1614576 5708144 1614512 5708144 -1613848 5708256 1613904 5708352 1614512 5708144 1614488 5708072 -1613848 5708256 1611464 5715504 1613904 5708352 1614488 5708072 -1613904 5708352 1614576 5708144 1614512 5708144 1614488 5708072 -1613848 5708256 1613560 5708192 1611464 5715504 1613904 5708352 -1613560 5708192 1610752 5708648 1611464 5715504 1613904 5708352 -1611464 5715504 1611512 5715528 1613904 5708352 1610752 5708648 -1613848 5708256 1613560 5708192 1613904 5708352 1614488 5708072 -1613560 5708192 1610760 5708480 1610752 5708648 1613904 5708352 -1613560 5708192 1610752 5708648 1613904 5708352 1613848 5708256 -1610752 5708648 1611352 5715472 1611464 5715504 1613904 5708352 -1614576 5708144 1613904 5708352 1611528 5715552 1620656 5722632 -1613848 5708256 1613904 5708352 1614488 5708072 1614328 5707896 -1613848 5708256 1613560 5708192 1613904 5708352 1614328 5707896 -1613904 5708352 1614512 5708144 1614488 5708072 1614328 5707896 -1613848 5708256 1613904 5708352 1614328 5707896 1614264 5707840 -1614488 5708072 1614456 5707992 1614328 5707896 1613904 5708352 -1613848 5708256 1613768 5708184 1613560 5708192 1613904 5708352 -1611528 5715552 1613896 5708408 1613904 5708352 1611512 5715528 -1613904 5708352 1613896 5708408 1614576 5708144 1614512 5708144 -1611528 5715552 1614576 5708144 1613896 5708408 1611512 5715528 -1613904 5708352 1611464 5715504 1611512 5715528 1613896 5708408 -1611512 5715528 1611528 5715552 1613896 5708408 1611464 5715504 -1613904 5708352 1610752 5708648 1611464 5715504 1613896 5708408 -1613904 5708352 1613560 5708192 1610752 5708648 1613896 5708408 -1610752 5708648 1611464 5715504 1613896 5708408 1613560 5708192 -1611464 5715504 1611512 5715528 1613896 5708408 1610752 5708648 -1613896 5708408 1614512 5708144 1613904 5708352 1613560 5708192 -1613896 5708408 1611528 5715552 1614576 5708144 1614512 5708144 -1613560 5708192 1610760 5708480 1610752 5708648 1613896 5708408 -1613904 5708352 1613896 5708408 1614512 5708144 1614488 5708072 -1613904 5708352 1613848 5708256 1613560 5708192 1613896 5708408 -1613560 5708192 1610752 5708648 1613896 5708408 1613848 5708256 -1613904 5708352 1613848 5708256 1613896 5708408 1614512 5708144 -1610752 5708648 1611352 5715472 1611464 5715504 1613896 5708408 -1614576 5708144 1613896 5708408 1611528 5715552 1620656 5722632 -1613848 5708256 1613768 5708184 1613560 5708192 1613896 5708408 -1610752 5708648 1613840 5708448 1613896 5708408 1613560 5708192 -1610752 5708648 1611464 5715504 1613840 5708448 1613560 5708192 -1613896 5708408 1613848 5708256 1613560 5708192 1613840 5708448 -1613560 5708192 1610752 5708648 1613840 5708448 1613848 5708256 -1613840 5708448 1611464 5715504 1613896 5708408 1613848 5708256 -1613896 5708408 1613840 5708448 1611464 5715504 1611512 5715528 -1613896 5708408 1613840 5708448 1611512 5715528 1611528 5715552 -1613896 5708408 1613840 5708448 1611528 5715552 1614576 5708144 -1613840 5708448 1611512 5715528 1611528 5715552 1614576 5708144 -1613896 5708408 1613848 5708256 1613840 5708448 1614576 5708144 -1613840 5708448 1610752 5708648 1611464 5715504 1611512 5715528 -1613840 5708448 1611464 5715504 1611512 5715528 1611528 5715552 -1613896 5708408 1613840 5708448 1614576 5708144 1614512 5708144 -1610752 5708648 1613840 5708448 1613560 5708192 1610760 5708480 -1613896 5708408 1613904 5708352 1613848 5708256 1613840 5708448 -1613848 5708256 1613560 5708192 1613840 5708448 1613904 5708352 -1613896 5708408 1613904 5708352 1613840 5708448 1614576 5708144 -1611464 5715504 1613840 5708448 1610752 5708648 1611352 5715472 -1611528 5715552 1620656 5722632 1614576 5708144 1613840 5708448 -1613848 5708256 1613768 5708184 1613560 5708192 1613840 5708448 -1613848 5708256 1613768 5708184 1613840 5708448 1613904 5708352 -1613560 5708192 1610752 5708648 1613840 5708448 1613768 5708184 -1613768 5708184 1613616 5708152 1613560 5708192 1613840 5708448 -1610752 5708648 1613784 5708464 1613840 5708448 1613560 5708192 -1613784 5708464 1611464 5715504 1613840 5708448 1613560 5708192 -1613840 5708448 1613768 5708184 1613560 5708192 1613784 5708464 -1613560 5708192 1610752 5708648 1613784 5708464 1613768 5708184 -1613840 5708448 1613768 5708184 1613784 5708464 1611464 5715504 -1613768 5708184 1613616 5708152 1613560 5708192 1613784 5708464 -1613840 5708448 1613784 5708464 1611464 5715504 1611512 5715528 -1613840 5708448 1613768 5708184 1613784 5708464 1611512 5715528 -1613784 5708464 1610752 5708648 1611464 5715504 1611512 5715528 -1613840 5708448 1613784 5708464 1611512 5715528 1611528 5715552 -1610752 5708648 1611464 5715504 1613784 5708464 1613560 5708192 -1610752 5708648 1613784 5708464 1613560 5708192 1610760 5708480 -1611464 5715504 1613784 5708464 1610752 5708648 1611352 5715472 -1613840 5708448 1613848 5708256 1613768 5708184 1613784 5708464 -1613840 5708448 1613848 5708256 1613784 5708464 1611512 5715528 -1613840 5708448 1613904 5708352 1613848 5708256 1613784 5708464 -1613768 5708184 1613560 5708192 1613784 5708464 1613848 5708256 -1613560 5708192 1613696 5708424 1613784 5708464 1613768 5708184 -1613784 5708464 1613848 5708256 1613768 5708184 1613696 5708424 -1613768 5708184 1613560 5708192 1613696 5708424 1613848 5708256 -1613560 5708192 1613696 5708424 1613768 5708184 1613616 5708152 -1613784 5708464 1613696 5708424 1610752 5708648 1611464 5715504 -1613696 5708424 1610752 5708648 1613784 5708464 1613848 5708256 -1613560 5708192 1610752 5708648 1613696 5708424 1613768 5708184 -1610752 5708648 1613696 5708424 1613560 5708192 1610760 5708480 -1613784 5708464 1613840 5708448 1613848 5708256 1613696 5708424 -1613840 5708448 1613904 5708352 1613848 5708256 1613696 5708424 -1613848 5708256 1613768 5708184 1613696 5708424 1613840 5708448 -1613784 5708464 1613840 5708448 1613696 5708424 1610752 5708648 -1613696 5708424 1613656 5708392 1610752 5708648 1613784 5708464 -1613560 5708192 1613656 5708392 1613696 5708424 1613768 5708184 -1613696 5708424 1613848 5708256 1613768 5708184 1613656 5708392 -1613696 5708424 1613840 5708448 1613848 5708256 1613656 5708392 -1613560 5708192 1613656 5708392 1613768 5708184 1613616 5708152 -1613656 5708392 1610752 5708648 1613696 5708424 1613848 5708256 -1610752 5708648 1613656 5708392 1613560 5708192 1610760 5708480 -1613768 5708184 1613616 5708152 1613656 5708392 1613848 5708256 -1613560 5708192 1610752 5708648 1613656 5708392 1613616 5708152 -1613768 5708184 1613720 5708152 1613616 5708152 1613656 5708392 -1613616 5708152 1613560 5708192 1613656 5708392 1613720 5708152 -1613768 5708184 1613720 5708152 1613656 5708392 1613848 5708256 -1613720 5708152 1613640 5708144 1613616 5708152 1613656 5708392 -1613616 5708152 1613560 5708192 1613656 5708392 1613640 5708144 -1613720 5708152 1613640 5708144 1613656 5708392 1613768 5708184 -1613656 5708392 1613608 5708344 1610752 5708648 1613696 5708424 -1610752 5708648 1613608 5708344 1613560 5708192 1610760 5708480 -1613560 5708192 1613608 5708344 1613656 5708392 1613616 5708152 -1613560 5708192 1610752 5708648 1613608 5708344 1613616 5708152 -1613656 5708392 1613640 5708144 1613616 5708152 1613608 5708344 -1613616 5708152 1613560 5708192 1613608 5708344 1613640 5708144 -1613608 5708344 1610752 5708648 1613656 5708392 1613640 5708144 -1613656 5708392 1613720 5708152 1613640 5708144 1613608 5708344 -1613640 5708144 1613616 5708152 1613608 5708344 1613720 5708152 -1613656 5708392 1613720 5708152 1613608 5708344 1610752 5708648 -1613656 5708392 1613768 5708184 1613720 5708152 1613608 5708344 -1613656 5708392 1613848 5708256 1613768 5708184 1613608 5708344 -1613656 5708392 1613768 5708184 1613608 5708344 1610752 5708648 -1613720 5708152 1613640 5708144 1613608 5708344 1613768 5708184 -1613560 5708192 1613552 5708272 1613608 5708344 1613616 5708152 -1613552 5708272 1610752 5708648 1613608 5708344 1613616 5708152 -1613560 5708192 1610752 5708648 1613552 5708272 1613616 5708152 -1610752 5708648 1613552 5708272 1613560 5708192 1610760 5708480 -1613560 5708192 1610728 5708400 1610760 5708480 1613552 5708272 -1610752 5708648 1613608 5708344 1613552 5708272 1610760 5708480 -1613552 5708272 1613616 5708152 1613560 5708192 1610760 5708480 -1613608 5708344 1613640 5708144 1613616 5708152 1613552 5708272 -1613608 5708344 1613552 5708272 1610752 5708648 1613656 5708392 -1614512 5707600 1611784 5706704 1609424 5706616 1609472 5706664 -1614512 5707600 1611784 5706704 1609472 5706664 1614408 5707648 -1611784 5706704 1609424 5706616 1609472 5706664 1614408 5707648 -1609424 5706616 1611784 5706704 1604152 5700872 1604160 5700992 -1614512 5707600 1604152 5700872 1611784 5706704 1614408 5707648 -1604152 5700872 1611784 5706704 1614512 5707600 1604104 5700768 -1611784 5706704 1614408 5707648 1614512 5707600 1604104 5700768 -1614512 5707600 1614576 5707608 1604104 5700768 1611784 5706704 -1614576 5707608 1602504 5696992 1604104 5700768 1611784 5706704 -1614576 5707608 1602224 5696056 1602504 5696992 1611784 5706704 -1602504 5696992 1604104 5700768 1611784 5706704 1602224 5696056 -1614576 5707608 1601624 5681136 1602224 5696056 1611784 5706704 -1614512 5707600 1614576 5707608 1611784 5706704 1614408 5707648 -1604104 5700768 1604152 5700872 1611784 5706704 1602504 5696992 -1614576 5707608 1602224 5696056 1611784 5706704 1614512 5707600 -1611784 5706704 1604152 5700872 1609424 5706616 1609472 5706664 -1604152 5700872 1609424 5706616 1611784 5706704 1604104 5700768 -1602224 5696056 1602224 5696096 1602504 5696992 1611784 5706704 -1602504 5696992 1604056 5700696 1604104 5700768 1611784 5706704 -1609472 5706664 1614360 5707680 1614408 5707648 1611784 5706704 -1614408 5707648 1614512 5707600 1611784 5706704 1614360 5707680 -1609472 5706664 1614288 5707728 1614360 5707680 1611784 5706704 -1609472 5706664 1614288 5707728 1611784 5706704 1609424 5706616 -1609472 5706664 1614240 5707760 1614288 5707728 1611784 5706704 -1614288 5707728 1614360 5707680 1611784 5706704 1614240 5707760 -1609472 5706664 1614240 5707760 1611784 5706704 1609424 5706616 -1609472 5706664 1613616 5708152 1614240 5707760 1611784 5706704 -1609472 5706664 1613616 5708152 1611784 5706704 1609424 5706616 -1613616 5708152 1613640 5708144 1614240 5707760 1611784 5706704 -1613616 5708152 1613640 5708144 1611784 5706704 1609472 5706664 -1613640 5708144 1614224 5707784 1614240 5707760 1611784 5706704 -1609472 5706664 1613560 5708192 1613616 5708152 1611784 5706704 -1609472 5706664 1610680 5708312 1613560 5708192 1611784 5706704 -1609472 5706664 1610640 5708296 1610680 5708312 1611784 5706704 -1610680 5708312 1613560 5708192 1611784 5706704 1610640 5708296 -1609472 5706664 1610640 5708296 1611784 5706704 1609424 5706616 -1609472 5706664 1609464 5706776 1610640 5708296 1611784 5706704 -1609464 5706776 1610552 5708288 1610640 5708296 1611784 5706704 -1610640 5708296 1610680 5708312 1611784 5706704 1610552 5708288 -1609472 5706664 1609464 5706776 1611784 5706704 1609424 5706616 -1609464 5706776 1610552 5708288 1611784 5706704 1609472 5706664 -1610680 5708312 1610712 5708360 1613560 5708192 1611784 5706704 -1610680 5708312 1610712 5708360 1611784 5706704 1610640 5708296 -1610712 5708360 1610728 5708400 1613560 5708192 1611784 5706704 -1610728 5708400 1610760 5708480 1613560 5708192 1611784 5706704 -1610728 5708400 1610760 5708480 1611784 5706704 1610712 5708360 -1610760 5708480 1613552 5708272 1613560 5708192 1611784 5706704 -1610712 5708360 1610728 5708400 1611784 5706704 1610680 5708312 -1613616 5708152 1613640 5708144 1611784 5706704 1613560 5708192 -1609464 5706776 1610440 5708328 1610552 5708288 1611784 5706704 -1613560 5708192 1613616 5708152 1611784 5706704 1610760 5708480 -1614240 5707760 1614288 5707728 1611784 5706704 1613640 5708144 -1614360 5707680 1614408 5707648 1611784 5706704 1614288 5707728 -1611784 5706704 1611832 5706704 1602224 5696056 1602504 5696992 -1611784 5706704 1611832 5706704 1602504 5696992 1604104 5700768 -1611832 5706704 1602224 5696056 1602504 5696992 1604104 5700768 -1602224 5696056 1611832 5706704 1614576 5707608 1601624 5681136 -1611784 5706704 1611832 5706704 1604104 5700768 1604152 5700872 -1611832 5706704 1602504 5696992 1604104 5700768 1604152 5700872 -1614576 5707608 1611832 5706704 1611784 5706704 1614512 5707600 -1611784 5706704 1614408 5707648 1614512 5707600 1611832 5706704 -1611784 5706704 1614360 5707680 1614408 5707648 1611832 5706704 -1614408 5707648 1614512 5707600 1611832 5706704 1614360 5707680 -1614576 5707608 1602224 5696056 1611832 5706704 1614512 5707600 -1614512 5707600 1614576 5707608 1611832 5706704 1614408 5707648 -1611784 5706704 1611832 5706704 1604152 5700872 1609424 5706616 -1611784 5706704 1614360 5707680 1611832 5706704 1604152 5700872 -1602224 5696056 1602224 5696096 1602504 5696992 1611832 5706704 -1602504 5696992 1604056 5700696 1604104 5700768 1611832 5706704 -1611832 5706704 1614576 5707608 1602224 5696056 1602504 5696992 -1611784 5706704 1614288 5707728 1614360 5707680 1611832 5706704 -1614360 5707680 1614408 5707648 1611832 5706704 1614288 5707728 -1611784 5706704 1614240 5707760 1614288 5707728 1611832 5706704 -1611784 5706704 1614240 5707760 1611832 5706704 1604152 5700872 -1611784 5706704 1613640 5708144 1614240 5707760 1611832 5706704 -1614240 5707760 1614288 5707728 1611832 5706704 1613640 5708144 -1611784 5706704 1613616 5708152 1613640 5708144 1611832 5706704 -1611784 5706704 1613560 5708192 1613616 5708152 1611832 5706704 -1613616 5708152 1613640 5708144 1611832 5706704 1613560 5708192 -1613640 5708144 1614224 5707784 1614240 5707760 1611832 5706704 -1611784 5706704 1613560 5708192 1611832 5706704 1604152 5700872 -1611784 5706704 1610760 5708480 1613560 5708192 1611832 5706704 -1611784 5706704 1610728 5708400 1610760 5708480 1611832 5706704 -1611784 5706704 1610712 5708360 1610728 5708400 1611832 5706704 -1610728 5708400 1610760 5708480 1611832 5706704 1610712 5708360 -1610760 5708480 1613552 5708272 1613560 5708192 1611832 5706704 -1611784 5706704 1610680 5708312 1610712 5708360 1611832 5706704 -1613560 5708192 1613616 5708152 1611832 5706704 1613552 5708272 -1611784 5706704 1610712 5708360 1611832 5706704 1604152 5700872 -1610760 5708480 1610752 5708648 1613552 5708272 1611832 5706704 -1610760 5708480 1613552 5708272 1611832 5706704 1610728 5708400 -1613640 5708144 1614240 5707760 1611832 5706704 1613616 5708152 -1614288 5707728 1614360 5707680 1611832 5706704 1614240 5707760 -1611832 5706704 1611904 5706776 1613552 5708272 1613560 5708192 -1611832 5706704 1610760 5708480 1611904 5706776 1613560 5708192 -1611904 5706776 1610760 5708480 1613552 5708272 1613560 5708192 -1611832 5706704 1611904 5706776 1613560 5708192 1613616 5708152 -1611832 5706704 1610760 5708480 1611904 5706776 1613616 5708152 -1611904 5706776 1613552 5708272 1613560 5708192 1613616 5708152 -1611832 5706704 1611904 5706776 1613616 5708152 1613640 5708144 -1611832 5706704 1610760 5708480 1611904 5706776 1613640 5708144 -1611904 5706776 1613560 5708192 1613616 5708152 1613640 5708144 -1613552 5708272 1611904 5706776 1610760 5708480 1610752 5708648 -1610760 5708480 1611904 5706776 1611832 5706704 1610728 5708400 -1610760 5708480 1613552 5708272 1611904 5706776 1610728 5708400 -1611904 5706776 1613640 5708144 1611832 5706704 1610728 5708400 -1611832 5706704 1610712 5708360 1610728 5708400 1611904 5706776 -1611832 5706704 1610712 5708360 1611904 5706776 1613640 5708144 -1611832 5706704 1611784 5706704 1610712 5708360 1611904 5706776 -1611832 5706704 1611784 5706704 1611904 5706776 1613640 5708144 -1610712 5708360 1610728 5708400 1611904 5706776 1611784 5706704 -1611784 5706704 1610680 5708312 1610712 5708360 1611904 5706776 -1611784 5706704 1610640 5708296 1610680 5708312 1611904 5706776 -1611784 5706704 1610680 5708312 1611904 5706776 1611832 5706704 -1610712 5708360 1610728 5708400 1611904 5706776 1610680 5708312 -1610728 5708400 1610760 5708480 1611904 5706776 1610712 5708360 -1611832 5706704 1611904 5706776 1613640 5708144 1614240 5707760 -1611832 5706704 1611784 5706704 1611904 5706776 1614240 5707760 -1611832 5706704 1611904 5706776 1614240 5707760 1614288 5707728 -1611832 5706704 1611784 5706704 1611904 5706776 1614288 5707728 -1611904 5706776 1613616 5708152 1613640 5708144 1614240 5707760 -1613640 5708144 1614224 5707784 1614240 5707760 1611904 5706776 -1611904 5706776 1613640 5708144 1614240 5707760 1614288 5707728 -1611832 5706704 1611904 5706776 1614288 5707728 1614360 5707680 -1611832 5706704 1611784 5706704 1611904 5706776 1614360 5707680 -1611832 5706704 1611904 5706776 1614360 5707680 1614408 5707648 -1611832 5706704 1611784 5706704 1611904 5706776 1614408 5707648 -1611904 5706776 1614240 5707760 1614288 5707728 1614360 5707680 -1611832 5706704 1611904 5706776 1614408 5707648 1614512 5707600 -1611832 5706704 1611784 5706704 1611904 5706776 1614512 5707600 -1611904 5706776 1614360 5707680 1614408 5707648 1614512 5707600 -1611832 5706704 1611904 5706776 1614512 5707600 1614576 5707608 -1611904 5706776 1614288 5707728 1614360 5707680 1614408 5707648 -1610760 5708480 1611944 5706832 1611904 5706776 1610728 5708400 -1611944 5706832 1613552 5708272 1611904 5706776 1610728 5708400 -1610760 5708480 1613552 5708272 1611944 5706832 1610728 5708400 -1611904 5706776 1611944 5706832 1613552 5708272 1613560 5708192 -1611904 5706776 1610728 5708400 1611944 5706832 1613560 5708192 -1611944 5706832 1610760 5708480 1613552 5708272 1613560 5708192 -1611904 5706776 1611944 5706832 1613560 5708192 1613616 5708152 -1611904 5706776 1610728 5708400 1611944 5706832 1613616 5708152 -1611944 5706832 1613552 5708272 1613560 5708192 1613616 5708152 -1611904 5706776 1611944 5706832 1613616 5708152 1613640 5708144 -1611904 5706776 1610728 5708400 1611944 5706832 1613640 5708144 -1611944 5706832 1613560 5708192 1613616 5708152 1613640 5708144 -1611904 5706776 1611944 5706832 1613640 5708144 1614240 5707760 -1611904 5706776 1610728 5708400 1611944 5706832 1614240 5707760 -1611944 5706832 1613616 5708152 1613640 5708144 1614240 5707760 -1613640 5708144 1614224 5707784 1614240 5707760 1611944 5706832 -1613552 5708272 1611944 5706832 1610760 5708480 1610752 5708648 -1611904 5706776 1610712 5708360 1610728 5708400 1611944 5706832 -1611904 5706776 1610712 5708360 1611944 5706832 1614240 5707760 -1610728 5708400 1610760 5708480 1611944 5706832 1610712 5708360 -1611904 5706776 1610680 5708312 1610712 5708360 1611944 5706832 -1611904 5706776 1610680 5708312 1611944 5706832 1614240 5707760 -1611904 5706776 1611784 5706704 1610680 5708312 1611944 5706832 -1611904 5706776 1611784 5706704 1611944 5706832 1614240 5707760 -1611784 5706704 1610640 5708296 1610680 5708312 1611944 5706832 -1611904 5706776 1611832 5706704 1611784 5706704 1611944 5706832 -1610680 5708312 1610712 5708360 1611944 5706832 1611784 5706704 -1610712 5708360 1610728 5708400 1611944 5706832 1610680 5708312 -1611904 5706776 1611944 5706832 1614240 5707760 1614288 5707728 -1611904 5706776 1611784 5706704 1611944 5706832 1614288 5707728 -1611904 5706776 1611944 5706832 1614288 5707728 1614360 5707680 -1611904 5706776 1611784 5706704 1611944 5706832 1614360 5707680 -1611944 5706832 1613640 5708144 1614240 5707760 1614288 5707728 -1611944 5706832 1614240 5707760 1614288 5707728 1614360 5707680 -1611904 5706776 1611944 5706832 1614360 5707680 1614408 5707648 -1611904 5706776 1611784 5706704 1611944 5706832 1614408 5707648 -1611904 5706776 1611944 5706832 1614408 5707648 1614512 5707600 -1611904 5706776 1611784 5706704 1611944 5706832 1614512 5707600 -1611944 5706832 1614288 5707728 1614360 5707680 1614408 5707648 -1611904 5706776 1611944 5706832 1614512 5707600 1611832 5706704 -1611944 5706832 1614360 5707680 1614408 5707648 1614512 5707600 -1611944 5706832 1611984 5706880 1613552 5708272 1613560 5708192 -1611944 5706832 1610760 5708480 1611984 5706880 1613560 5708192 -1610760 5708480 1611984 5706880 1611944 5706832 1610728 5708400 -1611944 5706832 1610712 5708360 1610728 5708400 1611984 5706880 -1611984 5706880 1613560 5708192 1611944 5706832 1610712 5708360 -1610728 5708400 1610760 5708480 1611984 5706880 1610712 5708360 -1611944 5706832 1611984 5706880 1613560 5708192 1613616 5708152 -1611984 5706880 1613552 5708272 1613560 5708192 1613616 5708152 -1611944 5706832 1610712 5708360 1611984 5706880 1613616 5708152 -1611984 5706880 1610760 5708480 1613552 5708272 1613560 5708192 -1610760 5708480 1613552 5708272 1611984 5706880 1610728 5708400 -1611944 5706832 1611984 5706880 1613616 5708152 1613640 5708144 -1611944 5706832 1610712 5708360 1611984 5706880 1613640 5708144 -1611984 5706880 1613560 5708192 1613616 5708152 1613640 5708144 -1611944 5706832 1611984 5706880 1613640 5708144 1614240 5707760 -1611944 5706832 1610712 5708360 1611984 5706880 1614240 5707760 -1611984 5706880 1613616 5708152 1613640 5708144 1614240 5707760 -1611944 5706832 1611984 5706880 1614240 5707760 1614288 5707728 -1611944 5706832 1610712 5708360 1611984 5706880 1614288 5707728 -1611984 5706880 1613640 5708144 1614240 5707760 1614288 5707728 -1613640 5708144 1614224 5707784 1614240 5707760 1611984 5706880 -1613552 5708272 1611984 5706880 1610760 5708480 1610752 5708648 -1611944 5706832 1610680 5708312 1610712 5708360 1611984 5706880 -1610712 5708360 1610728 5708400 1611984 5706880 1610680 5708312 -1611944 5706832 1610680 5708312 1611984 5706880 1614288 5707728 -1611944 5706832 1611784 5706704 1610680 5708312 1611984 5706880 -1611944 5706832 1611784 5706704 1611984 5706880 1614288 5707728 -1611784 5706704 1610640 5708296 1610680 5708312 1611984 5706880 -1611944 5706832 1611904 5706776 1611784 5706704 1611984 5706880 -1610680 5708312 1610712 5708360 1611984 5706880 1611784 5706704 -1611944 5706832 1611984 5706880 1614288 5707728 1614360 5707680 -1611944 5706832 1611784 5706704 1611984 5706880 1614360 5707680 -1611944 5706832 1611984 5706880 1614360 5707680 1614408 5707648 -1611944 5706832 1611784 5706704 1611984 5706880 1614408 5707648 -1611984 5706880 1614240 5707760 1614288 5707728 1614360 5707680 -1611984 5706880 1614288 5707728 1614360 5707680 1614408 5707648 -1611944 5706832 1611984 5706880 1614408 5707648 1614512 5707600 -1611944 5706832 1611784 5706704 1611984 5706880 1614512 5707600 -1611944 5706832 1611984 5706880 1614512 5707600 1611904 5706776 -1611944 5706832 1611784 5706704 1611984 5706880 1611904 5706776 -1611984 5706880 1614360 5707680 1614408 5707648 1614512 5707600 -1614512 5707600 1611832 5706704 1611904 5706776 1611984 5706880 -1611984 5706880 1614408 5707648 1614512 5707600 1611904 5706776 -1611984 5706880 1612048 5706984 1613552 5708272 1613560 5708192 -1611984 5706880 1612048 5706984 1613560 5708192 1613616 5708152 -1611984 5706880 1612048 5706984 1613616 5708152 1613640 5708144 -1612048 5706984 1613560 5708192 1613616 5708152 1613640 5708144 -1612048 5706984 1613552 5708272 1613560 5708192 1613616 5708152 -1611984 5706880 1610760 5708480 1612048 5706984 1613640 5708144 -1610760 5708480 1612048 5706984 1611984 5706880 1610728 5708400 -1611984 5706880 1610712 5708360 1610728 5708400 1612048 5706984 -1611984 5706880 1610680 5708312 1610712 5708360 1612048 5706984 -1610712 5708360 1610728 5708400 1612048 5706984 1610680 5708312 -1612048 5706984 1613640 5708144 1611984 5706880 1610680 5708312 -1610728 5708400 1610760 5708480 1612048 5706984 1610712 5708360 -1612048 5706984 1610760 5708480 1613552 5708272 1613560 5708192 -1611984 5706880 1612048 5706984 1613640 5708144 1614240 5707760 -1612048 5706984 1613616 5708152 1613640 5708144 1614240 5707760 -1611984 5706880 1610680 5708312 1612048 5706984 1614240 5707760 -1610760 5708480 1613552 5708272 1612048 5706984 1610728 5708400 -1611984 5706880 1612048 5706984 1614240 5707760 1614288 5707728 -1611984 5706880 1610680 5708312 1612048 5706984 1614288 5707728 -1612048 5706984 1613640 5708144 1614240 5707760 1614288 5707728 -1611984 5706880 1612048 5706984 1614288 5707728 1614360 5707680 -1611984 5706880 1610680 5708312 1612048 5706984 1614360 5707680 -1612048 5706984 1614240 5707760 1614288 5707728 1614360 5707680 -1613640 5708144 1614224 5707784 1614240 5707760 1612048 5706984 -1613552 5708272 1612048 5706984 1610760 5708480 1610752 5708648 -1611984 5706880 1611784 5706704 1610680 5708312 1612048 5706984 -1610680 5708312 1610712 5708360 1612048 5706984 1611784 5706704 -1611784 5706704 1610640 5708296 1610680 5708312 1612048 5706984 -1611984 5706880 1611784 5706704 1612048 5706984 1614360 5707680 -1611984 5706880 1611944 5706832 1611784 5706704 1612048 5706984 -1611984 5706880 1611944 5706832 1612048 5706984 1614360 5707680 -1611944 5706832 1611904 5706776 1611784 5706704 1612048 5706984 -1611784 5706704 1610680 5708312 1612048 5706984 1611944 5706832 -1611984 5706880 1612048 5706984 1614360 5707680 1614408 5707648 -1611984 5706880 1611944 5706832 1612048 5706984 1614408 5707648 -1611984 5706880 1612048 5706984 1614408 5707648 1614512 5707600 -1612048 5706984 1614288 5707728 1614360 5707680 1614408 5707648 -1612048 5706984 1612096 5707088 1613552 5708272 1613560 5708192 -1612048 5706984 1612096 5707088 1613560 5708192 1613616 5708152 -1612048 5706984 1612096 5707088 1613616 5708152 1613640 5708144 -1612048 5706984 1612096 5707088 1613640 5708144 1614240 5707760 -1612096 5707088 1613616 5708152 1613640 5708144 1614240 5707760 -1612096 5707088 1613560 5708192 1613616 5708152 1613640 5708144 -1612096 5707088 1613552 5708272 1613560 5708192 1613616 5708152 -1612048 5706984 1610760 5708480 1612096 5707088 1614240 5707760 -1612048 5706984 1612096 5707088 1614240 5707760 1614288 5707728 -1612096 5707088 1613640 5708144 1614240 5707760 1614288 5707728 -1612048 5706984 1610760 5708480 1612096 5707088 1614288 5707728 -1610760 5708480 1612096 5707088 1612048 5706984 1610728 5708400 -1612048 5706984 1610712 5708360 1610728 5708400 1612096 5707088 -1612048 5706984 1610680 5708312 1610712 5708360 1612096 5707088 -1612048 5706984 1611784 5706704 1610680 5708312 1612096 5707088 -1610680 5708312 1610712 5708360 1612096 5707088 1611784 5706704 -1611784 5706704 1610640 5708296 1610680 5708312 1612096 5707088 -1610712 5708360 1610728 5708400 1612096 5707088 1610680 5708312 -1612096 5707088 1614288 5707728 1612048 5706984 1611784 5706704 -1610728 5708400 1610760 5708480 1612096 5707088 1610712 5708360 -1612096 5707088 1610760 5708480 1613552 5708272 1613560 5708192 -1610760 5708480 1613552 5708272 1612096 5707088 1610728 5708400 -1612048 5706984 1612096 5707088 1614288 5707728 1614360 5707680 -1612048 5706984 1611784 5706704 1612096 5707088 1614360 5707680 -1612096 5707088 1614240 5707760 1614288 5707728 1614360 5707680 -1612048 5706984 1612096 5707088 1614360 5707680 1614408 5707648 -1613640 5708144 1614224 5707784 1614240 5707760 1612096 5707088 -1613552 5708272 1612096 5707088 1610760 5708480 1610752 5708648 -1612048 5706984 1611944 5706832 1611784 5706704 1612096 5707088 -1612096 5707088 1612128 5707184 1613552 5708272 1613560 5708192 -1612096 5707088 1612128 5707184 1613560 5708192 1613616 5708152 -1612096 5707088 1612128 5707184 1613616 5708152 1613640 5708144 -1612096 5707088 1612128 5707184 1613640 5708144 1614240 5707760 -1612096 5707088 1612128 5707184 1614240 5707760 1614288 5707728 -1612128 5707184 1613616 5708152 1613640 5708144 1614240 5707760 -1612128 5707184 1613560 5708192 1613616 5708152 1613640 5708144 -1612128 5707184 1613552 5708272 1613560 5708192 1613616 5708152 -1612096 5707088 1610760 5708480 1612128 5707184 1614240 5707760 -1610760 5708480 1612128 5707184 1612096 5707088 1610728 5708400 -1612096 5707088 1610712 5708360 1610728 5708400 1612128 5707184 -1612096 5707088 1610680 5708312 1610712 5708360 1612128 5707184 -1612096 5707088 1611784 5706704 1610680 5708312 1612128 5707184 -1612096 5707088 1612048 5706984 1611784 5706704 1612128 5707184 -1611784 5706704 1610640 5708296 1610680 5708312 1612128 5707184 -1610680 5708312 1610712 5708360 1612128 5707184 1611784 5706704 -1610712 5708360 1610728 5708400 1612128 5707184 1610680 5708312 -1612128 5707184 1614240 5707760 1612096 5707088 1611784 5706704 -1610728 5708400 1610760 5708480 1612128 5707184 1610712 5708360 -1612128 5707184 1610760 5708480 1613552 5708272 1613560 5708192 -1613640 5708144 1614224 5707784 1614240 5707760 1612128 5707184 -1613552 5708272 1612128 5707184 1610760 5708480 1610752 5708648 -1610760 5708480 1613552 5708272 1612128 5707184 1610728 5708400 -1612128 5707184 1612160 5707288 1613552 5708272 1613560 5708192 -1612128 5707184 1612160 5707288 1613560 5708192 1613616 5708152 -1612128 5707184 1612160 5707288 1613616 5708152 1613640 5708144 -1612128 5707184 1612160 5707288 1613640 5708144 1614240 5707760 -1612128 5707184 1612160 5707288 1614240 5707760 1612096 5707088 -1612160 5707288 1613616 5708152 1613640 5708144 1614240 5707760 -1612160 5707288 1613560 5708192 1613616 5708152 1613640 5708144 -1612160 5707288 1613552 5708272 1613560 5708192 1613616 5708152 -1613640 5708144 1614224 5707784 1614240 5707760 1612160 5707288 -1613552 5708272 1612160 5707288 1610760 5708480 1610752 5708648 -1613552 5708272 1612160 5707288 1610752 5708648 1613608 5708344 -1612128 5707184 1610760 5708480 1612160 5707288 1614240 5707760 -1610760 5708480 1612160 5707288 1612128 5707184 1610728 5708400 -1612128 5707184 1610712 5708360 1610728 5708400 1612160 5707288 -1612128 5707184 1610680 5708312 1610712 5708360 1612160 5707288 -1612128 5707184 1611784 5706704 1610680 5708312 1612160 5707288 -1610712 5708360 1610728 5708400 1612160 5707288 1610680 5708312 -1612160 5707288 1614240 5707760 1612128 5707184 1610680 5708312 -1610728 5708400 1610760 5708480 1612160 5707288 1610712 5708360 -1612160 5707288 1610752 5708648 1613552 5708272 1613560 5708192 -1612160 5707288 1610728 5708400 1610760 5708480 1610752 5708648 -1613552 5708272 1612184 5707392 1610752 5708648 1613608 5708344 -1610752 5708648 1612184 5707392 1612160 5707288 1610760 5708480 -1610752 5708648 1613552 5708272 1612184 5707392 1610760 5708480 -1612160 5707288 1612184 5707392 1613552 5708272 1613560 5708192 -1612160 5707288 1612184 5707392 1613560 5708192 1613616 5708152 -1612160 5707288 1612184 5707392 1613616 5708152 1613640 5708144 -1612184 5707392 1610752 5708648 1613552 5708272 1613560 5708192 -1612184 5707392 1613552 5708272 1613560 5708192 1613616 5708152 -1612184 5707392 1613616 5708152 1612160 5707288 1610760 5708480 -1612160 5707288 1610728 5708400 1610760 5708480 1612184 5707392 -1610760 5708480 1610752 5708648 1612184 5707392 1610728 5708400 -1612160 5707288 1610712 5708360 1610728 5708400 1612184 5707392 -1612160 5707288 1610680 5708312 1610712 5708360 1612184 5707392 -1612160 5707288 1612128 5707184 1610680 5708312 1612184 5707392 -1610712 5708360 1610728 5708400 1612184 5707392 1610680 5708312 -1612160 5707288 1610680 5708312 1612184 5707392 1613616 5708152 -1610728 5708400 1610760 5708480 1612184 5707392 1610712 5708360 -1613552 5708272 1612192 5707440 1610752 5708648 1613608 5708344 -1612184 5707392 1612192 5707440 1613552 5708272 1613560 5708192 -1612184 5707392 1610752 5708648 1612192 5707440 1613560 5708192 -1610752 5708648 1612192 5707440 1612184 5707392 1610760 5708480 -1610752 5708648 1613552 5708272 1612192 5707440 1610760 5708480 -1612192 5707440 1613560 5708192 1612184 5707392 1610760 5708480 -1612192 5707440 1610752 5708648 1613552 5708272 1613560 5708192 -1612184 5707392 1610728 5708400 1610760 5708480 1612192 5707440 -1612184 5707392 1610728 5708400 1612192 5707440 1613560 5708192 -1610760 5708480 1610752 5708648 1612192 5707440 1610728 5708400 -1612184 5707392 1612192 5707440 1613560 5708192 1613616 5708152 -1612184 5707392 1612192 5707440 1613616 5708152 1612160 5707288 -1612192 5707440 1613552 5708272 1613560 5708192 1613616 5708152 -1612184 5707392 1610728 5708400 1612192 5707440 1613616 5708152 -1612184 5707392 1610712 5708360 1610728 5708400 1612192 5707440 -1612184 5707392 1610712 5708360 1612192 5707440 1613616 5708152 -1610728 5708400 1610760 5708480 1612192 5707440 1610712 5708360 -1612184 5707392 1610680 5708312 1610712 5708360 1612192 5707440 -1612184 5707392 1612160 5707288 1610680 5708312 1612192 5707440 -1612184 5707392 1610680 5708312 1612192 5707440 1613616 5708152 -1610712 5708360 1610728 5708400 1612192 5707440 1610680 5708312 -1610752 5708648 1612184 5707472 1612192 5707440 1610760 5708480 -1610752 5708648 1613552 5708272 1612184 5707472 1610760 5708480 -1613552 5708272 1612184 5707472 1610752 5708648 1613608 5708344 -1612192 5707440 1610728 5708400 1610760 5708480 1612184 5707472 -1610760 5708480 1610752 5708648 1612184 5707472 1610728 5708400 -1612192 5707440 1612184 5707472 1613552 5708272 1613560 5708192 -1612184 5707472 1610752 5708648 1613552 5708272 1613560 5708192 -1612192 5707440 1612184 5707472 1613560 5708192 1613616 5708152 -1612184 5707472 1613560 5708192 1612192 5707440 1610728 5708400 -1612192 5707440 1610712 5708360 1610728 5708400 1612184 5707472 -1610728 5708400 1610760 5708480 1612184 5707472 1610712 5708360 -1612192 5707440 1610712 5708360 1612184 5707472 1613560 5708192 -1612192 5707440 1610680 5708312 1610712 5708360 1612184 5707472 -1612192 5707440 1610680 5708312 1612184 5707472 1613560 5708192 -1610712 5708360 1610728 5708400 1612184 5707472 1610680 5708312 -1612192 5707440 1612184 5707392 1610680 5708312 1612184 5707472 -1612184 5707392 1612160 5707288 1610680 5708312 1612184 5707472 -1612160 5707288 1612128 5707184 1610680 5708312 1612184 5707472 -1612128 5707184 1611784 5706704 1610680 5708312 1612184 5707472 -1612160 5707288 1612128 5707184 1612184 5707472 1612184 5707392 -1612192 5707440 1612184 5707392 1612184 5707472 1613560 5708192 -1612184 5707392 1612160 5707288 1612184 5707472 1612192 5707440 -1610680 5708312 1610712 5708360 1612184 5707472 1612128 5707184 -1612184 5707472 1612128 5707520 1613552 5708272 1613560 5708192 -1612184 5707472 1610752 5708648 1612128 5707520 1613560 5708192 -1610752 5708648 1612128 5707520 1612184 5707472 1610760 5708480 -1610752 5708648 1613552 5708272 1612128 5707520 1610760 5708480 -1612184 5707472 1610728 5708400 1610760 5708480 1612128 5707520 -1612128 5707520 1613560 5708192 1612184 5707472 1610728 5708400 -1610760 5708480 1610752 5708648 1612128 5707520 1610728 5708400 -1612128 5707520 1610752 5708648 1613552 5708272 1613560 5708192 -1613552 5708272 1612128 5707520 1610752 5708648 1613608 5708344 -1612184 5707472 1610712 5708360 1610728 5708400 1612128 5707520 -1610728 5708400 1610760 5708480 1612128 5707520 1610712 5708360 -1612184 5707472 1610712 5708360 1612128 5707520 1613560 5708192 -1612184 5707472 1612128 5707520 1613560 5708192 1612192 5707440 -1612184 5707472 1610680 5708312 1610712 5708360 1612128 5707520 -1612184 5707472 1610680 5708312 1612128 5707520 1613560 5708192 -1610712 5708360 1610728 5708400 1612128 5707520 1610680 5708312 -1612184 5707472 1612128 5707184 1610680 5708312 1612128 5707520 -1612128 5707184 1611784 5706704 1610680 5708312 1612128 5707520 -1612128 5707184 1612096 5707088 1611784 5706704 1612128 5707520 -1612096 5707088 1612048 5706984 1611784 5706704 1612128 5707520 -1612096 5707088 1612048 5706984 1612128 5707520 1612128 5707184 -1611784 5706704 1610640 5708296 1610680 5708312 1612128 5707520 -1611784 5706704 1610680 5708312 1612128 5707520 1612048 5706984 -1612184 5707472 1612160 5707288 1612128 5707184 1612128 5707520 -1612184 5707472 1612184 5707392 1612160 5707288 1612128 5707520 -1612160 5707288 1612128 5707184 1612128 5707520 1612184 5707392 -1612184 5707472 1612184 5707392 1612128 5707520 1613560 5708192 -1610680 5708312 1610712 5708360 1612128 5707520 1611784 5706704 -1612048 5706984 1611944 5706832 1611784 5706704 1612128 5707520 -1612184 5707472 1612192 5707440 1612184 5707392 1612128 5707520 -1612184 5707392 1612160 5707288 1612128 5707520 1612192 5707440 -1612184 5707472 1612192 5707440 1612128 5707520 1613560 5708192 -1612128 5707184 1612096 5707088 1612128 5707520 1612160 5707288 -1610680 5708312 1612040 5707520 1611784 5706704 1610640 5708296 -1611784 5706704 1612040 5707520 1612128 5707520 1612048 5706984 -1612128 5707520 1612096 5707088 1612048 5706984 1612040 5707520 -1612128 5707520 1612128 5707184 1612096 5707088 1612040 5707520 -1612096 5707088 1612048 5706984 1612040 5707520 1612128 5707184 -1612048 5706984 1611784 5706704 1612040 5707520 1612096 5707088 -1612040 5707520 1610680 5708312 1612128 5707520 1612128 5707184 -1611784 5706704 1610680 5708312 1612040 5707520 1612048 5706984 -1612128 5707520 1612040 5707520 1610680 5708312 1610712 5708360 -1612128 5707520 1612128 5707184 1612040 5707520 1610712 5708360 -1612040 5707520 1611784 5706704 1610680 5708312 1610712 5708360 -1612128 5707520 1612040 5707520 1610712 5708360 1610728 5708400 -1612128 5707520 1612128 5707184 1612040 5707520 1610728 5708400 -1612128 5707520 1612040 5707520 1610728 5708400 1610760 5708480 -1612128 5707520 1612128 5707184 1612040 5707520 1610760 5708480 -1612128 5707520 1612040 5707520 1610760 5708480 1610752 5708648 -1612128 5707520 1612128 5707184 1612040 5707520 1610752 5708648 -1612128 5707520 1612040 5707520 1610752 5708648 1613552 5708272 -1612040 5707520 1610728 5708400 1610760 5708480 1610752 5708648 -1612040 5707520 1610712 5708360 1610728 5708400 1610760 5708480 -1612040 5707520 1610680 5708312 1610712 5708360 1610728 5708400 -1611784 5706704 1612040 5707520 1612048 5706984 1611944 5706832 -1612040 5707520 1612096 5707088 1612048 5706984 1611944 5706832 -1612048 5706984 1611984 5706880 1611944 5706832 1612040 5707520 -1612048 5706984 1611984 5706880 1612040 5707520 1612096 5707088 -1611784 5706704 1610680 5708312 1612040 5707520 1611944 5706832 -1611784 5706704 1612040 5707520 1611944 5706832 1611904 5706776 -1611944 5706832 1611784 5706704 1612040 5707520 1611984 5706880 -1612128 5707520 1612160 5707288 1612128 5707184 1612040 5707520 -1612128 5707184 1612096 5707088 1612040 5707520 1612160 5707288 -1612128 5707520 1612160 5707288 1612040 5707520 1610752 5708648 -1612128 5707520 1612184 5707392 1612160 5707288 1612040 5707520 -1612128 5707520 1612184 5707392 1612040 5707520 1610752 5708648 -1612128 5707520 1612192 5707440 1612184 5707392 1612040 5707520 -1612160 5707288 1612128 5707184 1612040 5707520 1612184 5707392 -1610680 5708312 1611960 5707464 1611784 5706704 1610640 5708296 -1611784 5706704 1610552 5708288 1610640 5708296 1611960 5707464 -1610680 5708312 1612040 5707520 1611960 5707464 1610640 5708296 -1611960 5707464 1612040 5707520 1611784 5706704 1610640 5708296 -1612040 5707520 1611960 5707464 1610680 5708312 1610712 5708360 -1611960 5707464 1610640 5708296 1610680 5708312 1610712 5708360 -1612040 5707520 1611784 5706704 1611960 5707464 1610712 5708360 -1611784 5706704 1611960 5707464 1612040 5707520 1611944 5706832 -1611784 5706704 1610640 5708296 1611960 5707464 1611944 5706832 -1611960 5707464 1610712 5708360 1612040 5707520 1611944 5706832 -1611784 5706704 1611960 5707464 1611944 5706832 1611904 5706776 -1612040 5707520 1611960 5707464 1610712 5708360 1610728 5708400 -1611960 5707464 1610680 5708312 1610712 5708360 1610728 5708400 -1612040 5707520 1611944 5706832 1611960 5707464 1610728 5708400 -1612040 5707520 1611960 5707464 1610728 5708400 1610760 5708480 -1612040 5707520 1611944 5706832 1611960 5707464 1610760 5708480 -1612040 5707520 1611960 5707464 1610760 5708480 1610752 5708648 -1611960 5707464 1610712 5708360 1610728 5708400 1610760 5708480 -1612040 5707520 1611984 5706880 1611944 5706832 1611960 5707464 -1612040 5707520 1612048 5706984 1611984 5706880 1611960 5707464 -1612040 5707520 1612096 5707088 1612048 5706984 1611960 5707464 -1612040 5707520 1612128 5707184 1612096 5707088 1611960 5707464 -1612040 5707520 1612160 5707288 1612128 5707184 1611960 5707464 -1612128 5707184 1612096 5707088 1611960 5707464 1612160 5707288 -1612096 5707088 1612048 5706984 1611960 5707464 1612128 5707184 -1612048 5706984 1611984 5706880 1611960 5707464 1612096 5707088 -1612040 5707520 1612160 5707288 1611960 5707464 1610760 5708480 -1611944 5706832 1611784 5706704 1611960 5707464 1611984 5706880 -1611984 5706880 1611944 5706832 1611960 5707464 1612048 5706984 -1612040 5707520 1612184 5707392 1612160 5707288 1611960 5707464 -1612160 5707288 1612128 5707184 1611960 5707464 1612184 5707392 -1612040 5707520 1612184 5707392 1611960 5707464 1610760 5708480 -1612040 5707520 1612128 5707520 1612184 5707392 1611960 5707464 -1611960 5707464 1611912 5707440 1610640 5708296 1610680 5708312 -1610640 5708296 1611912 5707440 1611784 5706704 1610552 5708288 -1611960 5707464 1611912 5707440 1610680 5708312 1610712 5708360 -1611912 5707440 1610640 5708296 1610680 5708312 1610712 5708360 -1611960 5707464 1611784 5706704 1611912 5707440 1610712 5708360 -1611784 5706704 1611912 5707440 1611960 5707464 1611944 5706832 -1611912 5707440 1610712 5708360 1611960 5707464 1611944 5706832 -1611912 5707440 1611784 5706704 1610640 5708296 1610680 5708312 -1611960 5707464 1611912 5707440 1610712 5708360 1610728 5708400 -1611912 5707440 1610680 5708312 1610712 5708360 1610728 5708400 -1611960 5707464 1611944 5706832 1611912 5707440 1610728 5708400 -1611960 5707464 1611984 5706880 1611944 5706832 1611912 5707440 -1611960 5707464 1611984 5706880 1611912 5707440 1610728 5708400 -1611944 5706832 1611784 5706704 1611912 5707440 1611984 5706880 -1611784 5706704 1611912 5707440 1611944 5706832 1611904 5706776 -1611784 5706704 1610640 5708296 1611912 5707440 1611944 5706832 -1611960 5707464 1611912 5707440 1610728 5708400 1610760 5708480 -1611960 5707464 1611984 5706880 1611912 5707440 1610760 5708480 -1611912 5707440 1610712 5708360 1610728 5708400 1610760 5708480 -1611960 5707464 1611912 5707440 1610760 5708480 1612040 5707520 -1611960 5707464 1611984 5706880 1611912 5707440 1612040 5707520 -1610760 5708480 1610752 5708648 1612040 5707520 1611912 5707440 -1611912 5707440 1610728 5708400 1610760 5708480 1612040 5707520 -1611960 5707464 1612048 5706984 1611984 5706880 1611912 5707440 -1611960 5707464 1612096 5707088 1612048 5706984 1611912 5707440 -1611960 5707464 1612128 5707184 1612096 5707088 1611912 5707440 -1611960 5707464 1612160 5707288 1612128 5707184 1611912 5707440 -1611960 5707464 1612184 5707392 1612160 5707288 1611912 5707440 -1612128 5707184 1612096 5707088 1611912 5707440 1612160 5707288 -1612096 5707088 1612048 5706984 1611912 5707440 1612128 5707184 -1611960 5707464 1612160 5707288 1611912 5707440 1612040 5707520 -1611984 5706880 1611944 5706832 1611912 5707440 1612048 5706984 -1612048 5706984 1611984 5706880 1611912 5707440 1612096 5707088 -1610640 5708296 1611872 5707400 1611784 5706704 1610552 5708288 -1611912 5707440 1611872 5707400 1610640 5708296 1610680 5708312 -1611912 5707440 1611872 5707400 1610680 5708312 1610712 5708360 -1611912 5707440 1611872 5707400 1610712 5708360 1610728 5708400 -1611872 5707400 1610640 5708296 1610680 5708312 1610712 5708360 -1611912 5707440 1611784 5706704 1611872 5707400 1610712 5708360 -1611784 5706704 1611872 5707400 1611912 5707440 1611944 5706832 -1611912 5707440 1611984 5706880 1611944 5706832 1611872 5707400 -1611872 5707400 1610712 5708360 1611912 5707440 1611984 5706880 -1611912 5707440 1612048 5706984 1611984 5706880 1611872 5707400 -1611984 5706880 1611944 5706832 1611872 5707400 1612048 5706984 -1611912 5707440 1612048 5706984 1611872 5707400 1610712 5708360 -1611784 5706704 1611872 5707400 1611944 5706832 1611904 5706776 -1611944 5706832 1611784 5706704 1611872 5707400 1611984 5706880 -1611872 5707400 1611784 5706704 1610640 5708296 1610680 5708312 -1611784 5706704 1610640 5708296 1611872 5707400 1611944 5706832 -1611912 5707440 1612096 5707088 1612048 5706984 1611872 5707400 -1611912 5707440 1612128 5707184 1612096 5707088 1611872 5707400 -1611912 5707440 1612160 5707288 1612128 5707184 1611872 5707400 -1611912 5707440 1611960 5707464 1612160 5707288 1611872 5707400 -1612128 5707184 1612096 5707088 1611872 5707400 1612160 5707288 -1611912 5707440 1612160 5707288 1611872 5707400 1610712 5708360 -1612048 5706984 1611984 5706880 1611872 5707400 1612096 5707088 -1612096 5707088 1612048 5706984 1611872 5707400 1612128 5707184 -1610640 5708296 1611824 5707344 1611784 5706704 1610552 5708288 -1611824 5707344 1611872 5707400 1611784 5706704 1610552 5708288 -1611784 5706704 1609464 5706776 1610552 5708288 1611824 5707344 -1611872 5707400 1611824 5707344 1610640 5708296 1610680 5708312 -1611872 5707400 1611824 5707344 1610680 5708312 1610712 5708360 -1611872 5707400 1611784 5706704 1611824 5707344 1610680 5708312 -1611784 5706704 1611824 5707344 1611872 5707400 1611944 5706832 -1611784 5706704 1610552 5708288 1611824 5707344 1611944 5706832 -1611784 5706704 1611824 5707344 1611944 5706832 1611904 5706776 -1611872 5707400 1611984 5706880 1611944 5706832 1611824 5707344 -1611872 5707400 1612048 5706984 1611984 5706880 1611824 5707344 -1611872 5707400 1612096 5707088 1612048 5706984 1611824 5707344 -1612048 5706984 1611984 5706880 1611824 5707344 1612096 5707088 -1611984 5706880 1611944 5706832 1611824 5707344 1612048 5706984 -1611824 5707344 1610680 5708312 1611872 5707400 1612096 5707088 -1611944 5706832 1611784 5706704 1611824 5707344 1611984 5706880 -1610640 5708296 1610680 5708312 1611824 5707344 1610552 5708288 -1611872 5707400 1612128 5707184 1612096 5707088 1611824 5707344 -1611872 5707400 1612160 5707288 1612128 5707184 1611824 5707344 -1612096 5707088 1612048 5706984 1611824 5707344 1612128 5707184 -1611872 5707400 1612128 5707184 1611824 5707344 1610680 5708312 -1611784 5706704 1611744 5707272 1611824 5707344 1611944 5706832 -1611744 5707272 1610552 5708288 1611824 5707344 1611944 5706832 -1611784 5706704 1610552 5708288 1611744 5707272 1611944 5706832 -1610552 5708288 1611744 5707272 1611784 5706704 1609464 5706776 -1610552 5708288 1611824 5707344 1611744 5707272 1609464 5706776 -1611744 5707272 1611944 5706832 1611784 5706704 1609464 5706776 -1611824 5707344 1611744 5707272 1610552 5708288 1610640 5708296 -1611824 5707344 1611944 5706832 1611744 5707272 1610640 5708296 -1611744 5707272 1609464 5706776 1610552 5708288 1610640 5708296 -1611784 5706704 1609472 5706664 1609464 5706776 1611744 5707272 -1611784 5706704 1611744 5707272 1611944 5706832 1611904 5706776 -1610552 5708288 1611744 5707272 1609464 5706776 1610440 5708328 -1611824 5707344 1611984 5706880 1611944 5706832 1611744 5707272 -1611824 5707344 1611984 5706880 1611744 5707272 1610640 5708296 -1611944 5706832 1611784 5706704 1611744 5707272 1611984 5706880 -1611824 5707344 1612048 5706984 1611984 5706880 1611744 5707272 -1611824 5707344 1612048 5706984 1611744 5707272 1610640 5708296 -1611824 5707344 1612096 5707088 1612048 5706984 1611744 5707272 -1611824 5707344 1612096 5707088 1611744 5707272 1610640 5708296 -1611824 5707344 1612128 5707184 1612096 5707088 1611744 5707272 -1612048 5706984 1611984 5706880 1611744 5707272 1612096 5707088 -1611984 5706880 1611944 5706832 1611744 5707272 1612048 5706984 -1611824 5707344 1611744 5707272 1610640 5708296 1610680 5708312 -1611824 5707344 1612096 5707088 1611744 5707272 1610680 5708312 -1611744 5707272 1610552 5708288 1610640 5708296 1610680 5708312 -1611824 5707344 1611744 5707272 1610680 5708312 1611872 5707400 -1611824 5707344 1612096 5707088 1611744 5707272 1611872 5707400 -1610680 5708312 1610712 5708360 1611872 5707400 1611744 5707272 -1611744 5707272 1610640 5708296 1610680 5708312 1611872 5707400 -1611784 5706704 1611696 5707232 1611744 5707272 1611944 5706832 -1611784 5706704 1609464 5706776 1611696 5707232 1611944 5706832 -1611744 5707272 1611984 5706880 1611944 5706832 1611696 5707232 -1611696 5707232 1609464 5706776 1611744 5707272 1611984 5706880 -1611944 5706832 1611784 5706704 1611696 5707232 1611984 5706880 -1611744 5707272 1611696 5707232 1609464 5706776 1610552 5708288 -1611696 5707232 1611784 5706704 1609464 5706776 1610552 5708288 -1611744 5707272 1611696 5707232 1610552 5708288 1610640 5708296 -1611744 5707272 1611984 5706880 1611696 5707232 1610640 5708296 -1611696 5707232 1609464 5706776 1610552 5708288 1610640 5708296 -1611744 5707272 1611696 5707232 1610640 5708296 1610680 5708312 -1611696 5707232 1610552 5708288 1610640 5708296 1610680 5708312 -1611744 5707272 1611984 5706880 1611696 5707232 1610680 5708312 -1609464 5706776 1611696 5707232 1611784 5706704 1609472 5706664 -1609464 5706776 1610552 5708288 1611696 5707232 1609472 5706664 -1611696 5707232 1611944 5706832 1611784 5706704 1609472 5706664 -1611784 5706704 1609424 5706616 1609472 5706664 1611696 5707232 -1611784 5706704 1611696 5707232 1611944 5706832 1611904 5706776 -1609464 5706776 1610440 5708328 1610552 5708288 1611696 5707232 -1611744 5707272 1612048 5706984 1611984 5706880 1611696 5707232 -1611984 5706880 1611944 5706832 1611696 5707232 1612048 5706984 -1611744 5707272 1612048 5706984 1611696 5707232 1610680 5708312 -1611744 5707272 1612096 5707088 1612048 5706984 1611696 5707232 -1611744 5707272 1611696 5707232 1610680 5708312 1611872 5707400 -1611784 5706704 1611672 5707208 1611696 5707232 1611944 5706832 -1611672 5707208 1609472 5706664 1611696 5707232 1611944 5706832 -1611696 5707232 1611984 5706880 1611944 5706832 1611672 5707208 -1611696 5707232 1611984 5706880 1611672 5707208 1609472 5706664 -1611944 5706832 1611784 5706704 1611672 5707208 1611984 5706880 -1611696 5707232 1612048 5706984 1611984 5706880 1611672 5707208 -1611696 5707232 1612048 5706984 1611672 5707208 1609472 5706664 -1611984 5706880 1611944 5706832 1611672 5707208 1612048 5706984 -1609472 5706664 1611672 5707208 1611784 5706704 1609424 5706616 -1611696 5707232 1611672 5707208 1609472 5706664 1609464 5706776 -1611696 5707232 1611672 5707208 1609464 5706776 1610552 5708288 -1611696 5707232 1612048 5706984 1611672 5707208 1610552 5708288 -1611672 5707208 1611784 5706704 1609472 5706664 1609464 5706776 -1611696 5707232 1611672 5707208 1610552 5708288 1610640 5708296 -1611672 5707208 1609464 5706776 1610552 5708288 1610640 5708296 -1611696 5707232 1612048 5706984 1611672 5707208 1610640 5708296 -1611696 5707232 1611672 5707208 1610640 5708296 1610680 5708312 -1611696 5707232 1612048 5706984 1611672 5707208 1610680 5708312 -1611672 5707208 1610552 5708288 1610640 5708296 1610680 5708312 -1611696 5707232 1611672 5707208 1610680 5708312 1611744 5707272 -1611672 5707208 1609472 5706664 1609464 5706776 1610552 5708288 -1611784 5706704 1611672 5707208 1611944 5706832 1611904 5706776 -1609464 5706776 1610440 5708328 1610552 5708288 1611672 5707208 -1611696 5707232 1611744 5707272 1612048 5706984 1611672 5707208 -1611784 5706704 1609472 5706664 1611672 5707208 1611944 5706832 -1611672 5707208 1611648 5707152 1609472 5706664 1609464 5706776 -1611672 5707208 1611784 5706704 1611648 5707152 1609464 5706776 -1609472 5706664 1611648 5707152 1611784 5706704 1609424 5706616 -1611672 5707208 1611648 5707152 1609464 5706776 1610552 5708288 -1611672 5707208 1611648 5707152 1610552 5708288 1610640 5708296 -1611648 5707152 1609472 5706664 1609464 5706776 1610552 5708288 -1611672 5707208 1611784 5706704 1611648 5707152 1610640 5708296 -1611672 5707208 1611648 5707152 1610640 5708296 1610680 5708312 -1611648 5707152 1609464 5706776 1610552 5708288 1610640 5708296 -1609464 5706776 1610440 5708328 1610552 5708288 1611648 5707152 -1611784 5706704 1611648 5707152 1611672 5707208 1611944 5706832 -1611672 5707208 1611984 5706880 1611944 5706832 1611648 5707152 -1611648 5707152 1610640 5708296 1611672 5707208 1611984 5706880 -1611672 5707208 1612048 5706984 1611984 5706880 1611648 5707152 -1611984 5706880 1611944 5706832 1611648 5707152 1612048 5706984 -1611672 5707208 1612048 5706984 1611648 5707152 1610640 5708296 -1611672 5707208 1611696 5707232 1612048 5706984 1611648 5707152 -1611672 5707208 1611696 5707232 1611648 5707152 1610640 5708296 -1612048 5706984 1611984 5706880 1611648 5707152 1611696 5707232 -1611784 5706704 1611648 5707152 1611944 5706832 1611904 5706776 -1611784 5706704 1611648 5707152 1611904 5706776 1611832 5706704 -1611696 5707232 1611744 5707272 1612048 5706984 1611648 5707152 -1611944 5706832 1611904 5706776 1611648 5707152 1611984 5706880 -1611648 5707152 1611784 5706704 1609472 5706664 1609464 5706776 -1611784 5706704 1609472 5706664 1611648 5707152 1611904 5706776 -1609472 5706664 1611640 5707096 1611784 5706704 1609424 5706616 -1611648 5707152 1611640 5707096 1609472 5706664 1609464 5706776 -1611648 5707152 1611640 5707096 1609464 5706776 1610552 5708288 -1611648 5707152 1611640 5707096 1610552 5708288 1610640 5708296 -1609464 5706776 1610440 5708328 1610552 5708288 1611640 5707096 -1611640 5707096 1609472 5706664 1609464 5706776 1610552 5708288 -1611648 5707152 1611784 5706704 1611640 5707096 1610552 5708288 -1611784 5706704 1611640 5707096 1611648 5707152 1611904 5706776 -1611784 5706704 1611640 5707096 1611904 5706776 1611832 5706704 -1611648 5707152 1611944 5706832 1611904 5706776 1611640 5707096 -1611784 5706704 1609472 5706664 1611640 5707096 1611904 5706776 -1611648 5707152 1611984 5706880 1611944 5706832 1611640 5707096 -1611648 5707152 1612048 5706984 1611984 5706880 1611640 5707096 -1611648 5707152 1611696 5707232 1612048 5706984 1611640 5707096 -1612048 5706984 1611984 5706880 1611640 5707096 1611696 5707232 -1611648 5707152 1611672 5707208 1611696 5707232 1611640 5707096 -1611944 5706832 1611904 5706776 1611640 5707096 1611984 5706880 -1611696 5707232 1611744 5707272 1612048 5706984 1611640 5707096 -1611984 5706880 1611944 5706832 1611640 5707096 1612048 5706984 -1611640 5707096 1610552 5708288 1611648 5707152 1611696 5707232 -1611904 5706776 1611784 5706704 1611640 5707096 1611944 5706832 -1611640 5707096 1611784 5706704 1609472 5706664 1609464 5706776 -1609472 5706664 1611648 5707000 1611784 5706704 1609424 5706616 -1611784 5706704 1611648 5707000 1611640 5707096 1611904 5706776 -1611784 5706704 1611648 5707000 1611904 5706776 1611832 5706704 -1611648 5707000 1609472 5706664 1611640 5707096 1611904 5706776 -1611784 5706704 1609472 5706664 1611648 5707000 1611904 5706776 -1611640 5707096 1611944 5706832 1611904 5706776 1611648 5707000 -1611640 5707096 1611984 5706880 1611944 5706832 1611648 5707000 -1611640 5707096 1611984 5706880 1611648 5707000 1609472 5706664 -1611904 5706776 1611784 5706704 1611648 5707000 1611944 5706832 -1611640 5707096 1612048 5706984 1611984 5706880 1611648 5707000 -1611640 5707096 1611696 5707232 1612048 5706984 1611648 5707000 -1611984 5706880 1611944 5706832 1611648 5707000 1612048 5706984 -1611640 5707096 1612048 5706984 1611648 5707000 1609472 5706664 -1611944 5706832 1611904 5706776 1611648 5707000 1611984 5706880 -1611640 5707096 1611648 5707000 1609472 5706664 1609464 5706776 -1611640 5707096 1612048 5706984 1611648 5707000 1609464 5706776 -1611648 5707000 1611784 5706704 1609472 5706664 1609464 5706776 -1611640 5707096 1611648 5707000 1609464 5706776 1610552 5708288 -1609472 5706664 1611664 5706896 1611784 5706704 1609424 5706616 -1611648 5707000 1611664 5706896 1609472 5706664 1609464 5706776 -1611784 5706704 1611664 5706896 1611648 5707000 1611904 5706776 -1611784 5706704 1611664 5706896 1611904 5706776 1611832 5706704 -1611784 5706704 1609472 5706664 1611664 5706896 1611904 5706776 -1611648 5707000 1611944 5706832 1611904 5706776 1611664 5706896 -1611664 5706896 1609472 5706664 1611648 5707000 1611944 5706832 -1611904 5706776 1611784 5706704 1611664 5706896 1611944 5706832 -1611648 5707000 1611984 5706880 1611944 5706832 1611664 5706896 -1611648 5707000 1612048 5706984 1611984 5706880 1611664 5706896 -1611944 5706832 1611904 5706776 1611664 5706896 1611984 5706880 -1611648 5707000 1611984 5706880 1611664 5706896 1609472 5706664 -1609472 5706664 1611672 5706800 1611784 5706704 1609424 5706616 -1611664 5706896 1611672 5706800 1609472 5706664 1611648 5707000 -1611784 5706704 1611672 5706800 1611664 5706896 1611904 5706776 -1611784 5706704 1611672 5706800 1611904 5706776 1611832 5706704 -1611784 5706704 1609472 5706664 1611672 5706800 1611904 5706776 -1611672 5706800 1609472 5706664 1611664 5706896 1611904 5706776 -1611664 5706896 1611944 5706832 1611904 5706776 1611672 5706800 -1609472 5706664 1611712 5706760 1611784 5706704 1609424 5706616 -1609472 5706664 1611672 5706800 1611712 5706760 1609424 5706616 -1611712 5706760 1611672 5706800 1611784 5706704 1609424 5706616 -1611784 5706704 1611712 5706760 1611672 5706800 1611904 5706776 -1611784 5706704 1609424 5706616 1611712 5706760 1611904 5706776 -1611784 5706704 1611712 5706760 1611904 5706776 1611832 5706704 -1611672 5706800 1611664 5706896 1611904 5706776 1611712 5706760 -1611904 5706776 1611784 5706704 1611712 5706760 1611664 5706896 -1611672 5706800 1611712 5706760 1609472 5706664 1611664 5706896 -1611712 5706760 1609472 5706664 1611672 5706800 1611664 5706896 -1611664 5706896 1611944 5706832 1611904 5706776 1611712 5706760 -1611784 5706704 1604152 5700872 1609424 5706616 1611712 5706760 -1602224 5696056 1612792 5706920 1614576 5707608 1601624 5681136 -1614576 5707608 1612792 5706920 1611832 5706704 1614512 5707600 -1612792 5706920 1602224 5696056 1611832 5706704 1614512 5707600 -1614576 5707608 1602224 5696056 1612792 5706920 1614512 5707600 -1611832 5706704 1611904 5706776 1614512 5707600 1612792 5706920 -1611832 5706704 1611904 5706776 1612792 5706920 1602224 5696056 -1611904 5706776 1611984 5706880 1614512 5707600 1612792 5706920 -1611904 5706776 1611944 5706832 1611984 5706880 1612792 5706920 -1611984 5706880 1614512 5707600 1612792 5706920 1611944 5706832 -1614512 5707600 1614576 5707608 1612792 5706920 1611984 5706880 -1611904 5706776 1611944 5706832 1612792 5706920 1611832 5706704 -1611832 5706704 1612792 5706920 1602224 5696056 1602504 5696992 -1611832 5706704 1612792 5706920 1602504 5696992 1604104 5700768 -1611832 5706704 1612792 5706920 1604104 5700768 1604152 5700872 -1611832 5706704 1611904 5706776 1612792 5706920 1604104 5700768 -1602224 5696056 1602224 5696096 1602504 5696992 1612792 5706920 -1602504 5696992 1604056 5700696 1604104 5700768 1612792 5706920 -1611984 5706880 1614408 5707648 1614512 5707600 1612792 5706920 -1611984 5706880 1612048 5706984 1614408 5707648 1612792 5706920 -1611984 5706880 1612048 5706984 1612792 5706920 1611944 5706832 -1614512 5707600 1614576 5707608 1612792 5706920 1614408 5707648 -1612048 5706984 1614360 5707680 1614408 5707648 1612792 5706920 -1612048 5706984 1614360 5707680 1612792 5706920 1611984 5706880 -1612048 5706984 1612096 5707088 1614360 5707680 1612792 5706920 -1612048 5706984 1612096 5707088 1612792 5706920 1611984 5706880 -1612096 5707088 1614288 5707728 1614360 5707680 1612792 5706920 -1612096 5707088 1614240 5707760 1614288 5707728 1612792 5706920 -1612096 5707088 1612128 5707184 1614240 5707760 1612792 5706920 -1612128 5707184 1612160 5707288 1614240 5707760 1612792 5706920 -1612128 5707184 1612160 5707288 1612792 5706920 1612096 5707088 -1612160 5707288 1613640 5708144 1614240 5707760 1612792 5706920 -1612160 5707288 1613640 5708144 1612792 5706920 1612128 5707184 -1612160 5707288 1613616 5708152 1613640 5708144 1612792 5706920 -1612160 5707288 1613616 5708152 1612792 5706920 1612128 5707184 -1613640 5708144 1614240 5707760 1612792 5706920 1613616 5708152 -1614240 5707760 1614288 5707728 1612792 5706920 1613640 5708144 -1612096 5707088 1612128 5707184 1612792 5706920 1612048 5706984 -1612160 5707288 1612184 5707392 1613616 5708152 1612792 5706920 -1612160 5707288 1612184 5707392 1612792 5706920 1612128 5707184 -1613616 5708152 1613640 5708144 1612792 5706920 1612184 5707392 -1612184 5707392 1612192 5707440 1613616 5708152 1612792 5706920 -1613616 5708152 1613640 5708144 1612792 5706920 1612192 5707440 -1612184 5707392 1612192 5707440 1612792 5706920 1612160 5707288 -1614288 5707728 1614360 5707680 1612792 5706920 1614240 5707760 -1613640 5708144 1614224 5707784 1614240 5707760 1612792 5706920 -1613640 5708144 1614224 5707784 1612792 5706920 1613616 5708152 -1614240 5707760 1614288 5707728 1612792 5706920 1614224 5707784 -1613640 5708144 1613720 5708152 1614224 5707784 1612792 5706920 -1612192 5707440 1613560 5708192 1613616 5708152 1612792 5706920 -1613616 5708152 1613640 5708144 1612792 5706920 1613560 5708192 -1612192 5707440 1613560 5708192 1612792 5706920 1612184 5707392 -1612192 5707440 1612184 5707472 1613560 5708192 1612792 5706920 -1612192 5707440 1612184 5707472 1612792 5706920 1612184 5707392 -1612184 5707472 1612128 5707520 1613560 5708192 1612792 5706920 -1613560 5708192 1613616 5708152 1612792 5706920 1612184 5707472 -1614360 5707680 1614408 5707648 1612792 5706920 1614288 5707728 -1614408 5707648 1614512 5707600 1612792 5706920 1614360 5707680 -1612792 5706920 1614576 5707608 1602224 5696056 1602504 5696992 -1612792 5706920 1602224 5696056 1602504 5696992 1604104 5700768 -1602224 5696056 1612848 5706920 1614576 5707608 1601624 5681136 -1614576 5707608 1612848 5706920 1612792 5706920 1614512 5707600 -1612848 5706920 1602224 5696056 1612792 5706920 1614512 5707600 -1612792 5706920 1614408 5707648 1614512 5707600 1612848 5706920 -1612792 5706920 1614408 5707648 1612848 5706920 1602224 5696056 -1614512 5707600 1614576 5707608 1612848 5706920 1614408 5707648 -1614576 5707608 1602224 5696056 1612848 5706920 1614512 5707600 -1612792 5706920 1614360 5707680 1614408 5707648 1612848 5706920 -1612792 5706920 1614360 5707680 1612848 5706920 1602224 5696056 -1614408 5707648 1614512 5707600 1612848 5706920 1614360 5707680 -1612792 5706920 1614288 5707728 1614360 5707680 1612848 5706920 -1612792 5706920 1614288 5707728 1612848 5706920 1602224 5696056 -1612792 5706920 1614240 5707760 1614288 5707728 1612848 5706920 -1612792 5706920 1614224 5707784 1614240 5707760 1612848 5706920 -1612792 5706920 1614224 5707784 1612848 5706920 1602224 5696056 -1614240 5707760 1614288 5707728 1612848 5706920 1614224 5707784 -1612792 5706920 1613640 5708144 1614224 5707784 1612848 5706920 -1612792 5706920 1613616 5708152 1613640 5708144 1612848 5706920 -1612792 5706920 1613560 5708192 1613616 5708152 1612848 5706920 -1613616 5708152 1613640 5708144 1612848 5706920 1613560 5708192 -1614224 5707784 1614240 5707760 1612848 5706920 1613640 5708144 -1612792 5706920 1613560 5708192 1612848 5706920 1602224 5696056 -1613640 5708144 1613720 5708152 1614224 5707784 1612848 5706920 -1613640 5708144 1614224 5707784 1612848 5706920 1613616 5708152 -1612792 5706920 1612184 5707472 1613560 5708192 1612848 5706920 -1613560 5708192 1613616 5708152 1612848 5706920 1612184 5707472 -1612792 5706920 1612184 5707472 1612848 5706920 1602224 5696056 -1612792 5706920 1612192 5707440 1612184 5707472 1612848 5706920 -1612792 5706920 1612192 5707440 1612848 5706920 1602224 5696056 -1612792 5706920 1612184 5707392 1612192 5707440 1612848 5706920 -1612184 5707472 1612128 5707520 1613560 5708192 1612848 5706920 -1612184 5707472 1613560 5708192 1612848 5706920 1612192 5707440 -1614288 5707728 1614360 5707680 1612848 5706920 1614240 5707760 -1614360 5707680 1614408 5707648 1612848 5706920 1614288 5707728 -1612792 5706920 1612848 5706920 1602224 5696056 1602504 5696992 -1612792 5706920 1612192 5707440 1612848 5706920 1602504 5696992 -1612848 5706920 1614576 5707608 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1612848 5706920 -1612792 5706920 1612848 5706920 1602504 5696992 1604104 5700768 -1612792 5706920 1612848 5706920 1604104 5700768 1611832 5706704 -1604104 5700768 1604152 5700872 1611832 5706704 1612848 5706920 -1612792 5706920 1612192 5707440 1612848 5706920 1611832 5706704 -1612792 5706920 1612848 5706920 1611832 5706704 1611904 5706776 -1602504 5696992 1604056 5700696 1604104 5700768 1612848 5706920 -1612848 5706920 1602224 5696056 1602504 5696992 1604104 5700768 -1612848 5706920 1602504 5696992 1604104 5700768 1611832 5706704 -1614408 5707648 1612992 5706984 1612848 5706920 1614360 5707680 -1612992 5706984 1614512 5707600 1612848 5706920 1614360 5707680 -1612848 5706920 1612992 5706984 1614512 5707600 1614576 5707608 -1612848 5706920 1614360 5707680 1612992 5706984 1614576 5707608 -1614408 5707648 1614512 5707600 1612992 5706984 1614360 5707680 -1612848 5706920 1612992 5706984 1614576 5707608 1602224 5696056 -1612848 5706920 1612992 5706984 1602224 5696056 1602504 5696992 -1612848 5706920 1614360 5707680 1612992 5706984 1602224 5696056 -1614576 5707608 1601624 5681136 1602224 5696056 1612992 5706984 -1612992 5706984 1614512 5707600 1614576 5707608 1602224 5696056 -1612992 5706984 1614408 5707648 1614512 5707600 1614576 5707608 -1612848 5706920 1614288 5707728 1614360 5707680 1612992 5706984 -1612848 5706920 1614288 5707728 1612992 5706984 1602224 5696056 -1614360 5707680 1614408 5707648 1612992 5706984 1614288 5707728 -1612848 5706920 1614240 5707760 1614288 5707728 1612992 5706984 -1612848 5706920 1614240 5707760 1612992 5706984 1602224 5696056 -1612848 5706920 1614224 5707784 1614240 5707760 1612992 5706984 -1612848 5706920 1613640 5708144 1614224 5707784 1612992 5706984 -1612848 5706920 1613640 5708144 1612992 5706984 1602224 5696056 -1613640 5708144 1613720 5708152 1614224 5707784 1612992 5706984 -1614224 5707784 1614240 5707760 1612992 5706984 1613640 5708144 -1612848 5706920 1613616 5708152 1613640 5708144 1612992 5706984 -1612848 5706920 1613560 5708192 1613616 5708152 1612992 5706984 -1612848 5706920 1612184 5707472 1613560 5708192 1612992 5706984 -1613560 5708192 1613616 5708152 1612992 5706984 1612184 5707472 -1613640 5708144 1614224 5707784 1612992 5706984 1613616 5708152 -1612848 5706920 1612184 5707472 1612992 5706984 1602224 5696056 -1613616 5708152 1613640 5708144 1612992 5706984 1613560 5708192 -1612184 5707472 1612128 5707520 1613560 5708192 1612992 5706984 -1612848 5706920 1612192 5707440 1612184 5707472 1612992 5706984 -1612184 5707472 1613560 5708192 1612992 5706984 1612192 5707440 -1612848 5706920 1612192 5707440 1612992 5706984 1602224 5696056 -1612848 5706920 1612792 5706920 1612192 5707440 1612992 5706984 -1612848 5706920 1612792 5706920 1612992 5706984 1602224 5696056 -1612792 5706920 1612184 5707392 1612192 5707440 1612992 5706984 -1612192 5707440 1612184 5707472 1612992 5706984 1612792 5706920 -1614240 5707760 1614288 5707728 1612992 5706984 1614224 5707784 -1614288 5707728 1614360 5707680 1612992 5706984 1614240 5707760 -1602224 5696056 1613096 5707024 1614576 5707608 1601624 5681136 -1614576 5707608 1614648 5707656 1601624 5681136 1613096 5707024 -1614576 5707608 1613096 5707024 1612992 5706984 1614512 5707600 -1602224 5696056 1612992 5706984 1613096 5707024 1601624 5681136 -1613096 5707024 1614512 5707600 1614576 5707608 1601624 5681136 -1602224 5696056 1613096 5707024 1601624 5681136 1601592 5681216 -1612992 5706984 1613096 5707024 1602224 5696056 1612848 5706920 -1602224 5696056 1602504 5696992 1612848 5706920 1613096 5707024 -1613096 5707024 1601624 5681136 1602224 5696056 1612848 5706920 -1612992 5706984 1614408 5707648 1614512 5707600 1613096 5707024 -1614512 5707600 1614576 5707608 1613096 5707024 1614408 5707648 -1612992 5706984 1614360 5707680 1614408 5707648 1613096 5707024 -1612992 5706984 1614288 5707728 1614360 5707680 1613096 5707024 -1614360 5707680 1614408 5707648 1613096 5707024 1614288 5707728 -1614408 5707648 1614512 5707600 1613096 5707024 1614360 5707680 -1613096 5707024 1612848 5706920 1612992 5706984 1614288 5707728 -1612992 5706984 1614240 5707760 1614288 5707728 1613096 5707024 -1614288 5707728 1614360 5707680 1613096 5707024 1614240 5707760 -1612992 5706984 1614240 5707760 1613096 5707024 1612848 5706920 -1612992 5706984 1614224 5707784 1614240 5707760 1613096 5707024 -1612992 5706984 1613640 5708144 1614224 5707784 1613096 5707024 -1612992 5706984 1613616 5708152 1613640 5708144 1613096 5707024 -1613640 5708144 1613720 5708152 1614224 5707784 1613096 5707024 -1613640 5708144 1614224 5707784 1613096 5707024 1613616 5708152 -1612992 5706984 1613560 5708192 1613616 5708152 1613096 5707024 -1612992 5706984 1612184 5707472 1613560 5708192 1613096 5707024 -1612992 5706984 1612192 5707440 1612184 5707472 1613096 5707024 -1612184 5707472 1613560 5708192 1613096 5707024 1612192 5707440 -1613616 5708152 1613640 5708144 1613096 5707024 1613560 5708192 -1613560 5708192 1613616 5708152 1613096 5707024 1612184 5707472 -1612184 5707472 1612128 5707520 1613560 5708192 1613096 5707024 -1612992 5706984 1612792 5706920 1612192 5707440 1613096 5707024 -1612992 5706984 1612192 5707440 1613096 5707024 1612848 5706920 -1614224 5707784 1614240 5707760 1613096 5707024 1613640 5708144 -1614240 5707760 1614288 5707728 1613096 5707024 1614224 5707784 -1613096 5707024 1613152 5707048 1614512 5707600 1614576 5707608 -1613096 5707024 1614408 5707648 1613152 5707048 1614576 5707608 -1613096 5707024 1613152 5707048 1614576 5707608 1601624 5681136 -1614576 5707608 1614648 5707656 1601624 5681136 1613152 5707048 -1613096 5707024 1613152 5707048 1601624 5681136 1602224 5696056 -1613152 5707048 1614512 5707600 1614576 5707608 1601624 5681136 -1613096 5707024 1613152 5707048 1602224 5696056 1612848 5706920 -1613096 5707024 1614408 5707648 1613152 5707048 1602224 5696056 -1613152 5707048 1614576 5707608 1601624 5681136 1602224 5696056 -1601624 5681136 1601592 5681216 1602224 5696056 1613152 5707048 -1614408 5707648 1613152 5707048 1613096 5707024 1614360 5707680 -1613096 5707024 1614288 5707728 1614360 5707680 1613152 5707048 -1613096 5707024 1614240 5707760 1614288 5707728 1613152 5707048 -1614288 5707728 1614360 5707680 1613152 5707048 1614240 5707760 -1613152 5707048 1602224 5696056 1613096 5707024 1614240 5707760 -1614360 5707680 1614408 5707648 1613152 5707048 1614288 5707728 -1613152 5707048 1614408 5707648 1614512 5707600 1614576 5707608 -1614408 5707648 1614512 5707600 1613152 5707048 1614360 5707680 -1613096 5707024 1614224 5707784 1614240 5707760 1613152 5707048 -1614240 5707760 1614288 5707728 1613152 5707048 1614224 5707784 -1613096 5707024 1614224 5707784 1613152 5707048 1602224 5696056 -1613096 5707024 1613640 5708144 1614224 5707784 1613152 5707048 -1613640 5708144 1613720 5708152 1614224 5707784 1613152 5707048 -1613096 5707024 1613640 5708144 1613152 5707048 1602224 5696056 -1613096 5707024 1613616 5708152 1613640 5708144 1613152 5707048 -1613096 5707024 1613560 5708192 1613616 5708152 1613152 5707048 -1613096 5707024 1613560 5708192 1613152 5707048 1602224 5696056 -1613616 5708152 1613640 5708144 1613152 5707048 1613560 5708192 -1613096 5707024 1612184 5707472 1613560 5708192 1613152 5707048 -1613096 5707024 1612192 5707440 1612184 5707472 1613152 5707048 -1613560 5708192 1613616 5708152 1613152 5707048 1612184 5707472 -1613096 5707024 1612184 5707472 1613152 5707048 1602224 5696056 -1612184 5707472 1612128 5707520 1613560 5708192 1613152 5707048 -1613640 5708144 1614224 5707784 1613152 5707048 1613616 5708152 -1614224 5707784 1614240 5707760 1613152 5707048 1613640 5708144 -1614240 5707760 1613240 5707104 1613152 5707048 1614224 5707784 -1614240 5707760 1614288 5707728 1613240 5707104 1614224 5707784 -1613152 5707048 1613240 5707104 1614288 5707728 1614360 5707680 -1613152 5707048 1613240 5707104 1614360 5707680 1614408 5707648 -1613240 5707104 1614288 5707728 1614360 5707680 1614408 5707648 -1613240 5707104 1614408 5707648 1613152 5707048 1614224 5707784 -1613152 5707048 1613240 5707104 1614408 5707648 1614512 5707600 -1613240 5707104 1614360 5707680 1614408 5707648 1614512 5707600 -1613152 5707048 1613240 5707104 1614512 5707600 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1601624 5681136 -1613152 5707048 1614224 5707784 1613240 5707104 1614576 5707608 -1613240 5707104 1614408 5707648 1614512 5707600 1614576 5707608 -1613240 5707104 1614240 5707760 1614288 5707728 1614360 5707680 -1613152 5707048 1613640 5708144 1614224 5707784 1613240 5707104 -1613640 5708144 1613720 5708152 1614224 5707784 1613240 5707104 -1614224 5707784 1614240 5707760 1613240 5707104 1613640 5708144 -1613152 5707048 1613616 5708152 1613640 5708144 1613240 5707104 -1613152 5707048 1613560 5708192 1613616 5708152 1613240 5707104 -1613152 5707048 1612184 5707472 1613560 5708192 1613240 5707104 -1613560 5708192 1613616 5708152 1613240 5707104 1612184 5707472 -1613152 5707048 1613096 5707024 1612184 5707472 1613240 5707104 -1613096 5707024 1612192 5707440 1612184 5707472 1613240 5707104 -1612184 5707472 1613560 5708192 1613240 5707104 1613096 5707024 -1612184 5707472 1612128 5707520 1613560 5708192 1613240 5707104 -1613616 5708152 1613640 5708144 1613240 5707104 1613560 5708192 -1613152 5707048 1613096 5707024 1613240 5707104 1614576 5707608 -1613640 5708144 1614224 5707784 1613240 5707104 1613616 5708152 -1614224 5707784 1613288 5707144 1613640 5708144 1613720 5708152 -1613240 5707104 1613288 5707144 1614224 5707784 1614240 5707760 -1613240 5707104 1613288 5707144 1614240 5707760 1614288 5707728 -1613288 5707144 1613640 5708144 1614224 5707784 1614240 5707760 -1613288 5707144 1614224 5707784 1614240 5707760 1614288 5707728 -1613240 5707104 1613288 5707144 1614288 5707728 1614360 5707680 -1613288 5707144 1614240 5707760 1614288 5707728 1614360 5707680 -1613240 5707104 1613288 5707144 1614360 5707680 1614408 5707648 -1613240 5707104 1613288 5707144 1614408 5707648 1614512 5707600 -1613288 5707144 1614360 5707680 1614408 5707648 1614512 5707600 -1613240 5707104 1613288 5707144 1614512 5707600 1614576 5707608 -1613288 5707144 1614288 5707728 1614360 5707680 1614408 5707648 -1613240 5707104 1613640 5708144 1613288 5707144 1614512 5707600 -1613640 5708144 1613288 5707144 1613240 5707104 1613616 5708152 -1613640 5708144 1614224 5707784 1613288 5707144 1613616 5708152 -1613240 5707104 1613560 5708192 1613616 5708152 1613288 5707144 -1613240 5707104 1612184 5707472 1613560 5708192 1613288 5707144 -1613240 5707104 1613096 5707024 1612184 5707472 1613288 5707144 -1613096 5707024 1612192 5707440 1612184 5707472 1613288 5707144 -1612184 5707472 1613560 5708192 1613288 5707144 1613096 5707024 -1613240 5707104 1613152 5707048 1613096 5707024 1613288 5707144 -1612184 5707472 1612128 5707520 1613560 5708192 1613288 5707144 -1613560 5708192 1613616 5708152 1613288 5707144 1612184 5707472 -1613288 5707144 1614512 5707600 1613240 5707104 1613096 5707024 -1613616 5708152 1613640 5708144 1613288 5707144 1613560 5708192 -1613288 5707144 1613312 5707168 1614224 5707784 1614240 5707760 -1613288 5707144 1613640 5708144 1613312 5707168 1614240 5707760 -1613640 5708144 1613312 5707168 1613288 5707144 1613616 5708152 -1613640 5708144 1614224 5707784 1613312 5707168 1613616 5708152 -1613312 5707168 1614240 5707760 1613288 5707144 1613616 5708152 -1613312 5707168 1613640 5708144 1614224 5707784 1614240 5707760 -1614224 5707784 1613312 5707168 1613640 5708144 1613720 5708152 -1613288 5707144 1613312 5707168 1614240 5707760 1614288 5707728 -1613288 5707144 1613312 5707168 1614288 5707728 1614360 5707680 -1613312 5707168 1614224 5707784 1614240 5707760 1614288 5707728 -1613288 5707144 1613616 5708152 1613312 5707168 1614360 5707680 -1613312 5707168 1614240 5707760 1614288 5707728 1614360 5707680 -1613288 5707144 1613312 5707168 1614360 5707680 1614408 5707648 -1613312 5707168 1614288 5707728 1614360 5707680 1614408 5707648 -1613288 5707144 1613616 5708152 1613312 5707168 1614408 5707648 -1613288 5707144 1613312 5707168 1614408 5707648 1614512 5707600 -1613288 5707144 1613616 5708152 1613312 5707168 1614512 5707600 -1613288 5707144 1613312 5707168 1614512 5707600 1613240 5707104 -1613312 5707168 1614360 5707680 1614408 5707648 1614512 5707600 -1613288 5707144 1613560 5708192 1613616 5708152 1613312 5707168 -1613288 5707144 1613560 5708192 1613312 5707168 1614512 5707600 -1613616 5708152 1613640 5708144 1613312 5707168 1613560 5708192 -1613288 5707144 1612184 5707472 1613560 5708192 1613312 5707168 -1613288 5707144 1612184 5707472 1613312 5707168 1614512 5707600 -1613288 5707144 1613096 5707024 1612184 5707472 1613312 5707168 -1613096 5707024 1612192 5707440 1612184 5707472 1613312 5707168 -1613288 5707144 1613096 5707024 1613312 5707168 1614512 5707600 -1613288 5707144 1613240 5707104 1613096 5707024 1613312 5707168 -1613288 5707144 1613240 5707104 1613312 5707168 1614512 5707600 -1613096 5707024 1612184 5707472 1613312 5707168 1613240 5707104 -1613240 5707104 1613152 5707048 1613096 5707024 1613312 5707168 -1612184 5707472 1612128 5707520 1613560 5708192 1613312 5707168 -1612184 5707472 1613560 5708192 1613312 5707168 1613096 5707024 -1613560 5708192 1613616 5708152 1613312 5707168 1612184 5707472 -1613560 5708192 1613320 5707208 1612184 5707472 1612128 5707520 -1612184 5707472 1613320 5707208 1613312 5707168 1613096 5707024 -1613320 5707208 1613560 5708192 1613312 5707168 1613096 5707024 -1612184 5707472 1613560 5708192 1613320 5707208 1613096 5707024 -1612184 5707472 1613320 5707208 1613096 5707024 1612192 5707440 -1612184 5707472 1613560 5708192 1613320 5707208 1612192 5707440 -1613096 5707024 1612992 5706984 1612192 5707440 1613320 5707208 -1612192 5707440 1612184 5707472 1613320 5707208 1612992 5706984 -1613312 5707168 1613240 5707104 1613096 5707024 1613320 5707208 -1613312 5707168 1613240 5707104 1613320 5707208 1613560 5708192 -1613312 5707168 1613288 5707144 1613240 5707104 1613320 5707208 -1613312 5707168 1613288 5707144 1613320 5707208 1613560 5708192 -1613240 5707104 1613096 5707024 1613320 5707208 1613288 5707144 -1613240 5707104 1613152 5707048 1613096 5707024 1613320 5707208 -1613240 5707104 1613152 5707048 1613320 5707208 1613288 5707144 -1612992 5706984 1612792 5706920 1612192 5707440 1613320 5707208 -1613320 5707208 1613152 5707048 1613096 5707024 1612992 5706984 -1613312 5707168 1613320 5707208 1613560 5708192 1613616 5708152 -1613312 5707168 1613288 5707144 1613320 5707208 1613616 5708152 -1613320 5707208 1612184 5707472 1613560 5708192 1613616 5708152 -1613312 5707168 1613320 5707208 1613616 5708152 1613640 5708144 -1613312 5707168 1613288 5707144 1613320 5707208 1613640 5708144 -1613312 5707168 1613320 5707208 1613640 5708144 1614224 5707784 -1613312 5707168 1613288 5707144 1613320 5707208 1614224 5707784 -1613320 5707208 1613616 5708152 1613640 5708144 1614224 5707784 -1613312 5707168 1613320 5707208 1614224 5707784 1614240 5707760 -1613312 5707168 1613288 5707144 1613320 5707208 1614240 5707760 -1613320 5707208 1613640 5708144 1614224 5707784 1614240 5707760 -1613312 5707168 1613320 5707208 1614240 5707760 1614288 5707728 -1613312 5707168 1613288 5707144 1613320 5707208 1614288 5707728 -1613320 5707208 1614224 5707784 1614240 5707760 1614288 5707728 -1613640 5708144 1613720 5708152 1614224 5707784 1613320 5707208 -1613312 5707168 1613320 5707208 1614288 5707728 1614360 5707680 -1613312 5707168 1613288 5707144 1613320 5707208 1614360 5707680 -1613312 5707168 1613320 5707208 1614360 5707680 1614408 5707648 -1613312 5707168 1613288 5707144 1613320 5707208 1614408 5707648 -1613320 5707208 1614240 5707760 1614288 5707728 1614360 5707680 -1613320 5707208 1614288 5707728 1614360 5707680 1614408 5707648 -1613312 5707168 1613320 5707208 1614408 5707648 1614512 5707600 -1613320 5707208 1613560 5708192 1613616 5708152 1613640 5708144 -1613320 5707208 1613328 5707256 1613560 5708192 1613616 5708152 -1613320 5707208 1612184 5707472 1613328 5707256 1613616 5708152 -1612184 5707472 1613328 5707256 1613320 5707208 1612192 5707440 -1613328 5707256 1613616 5708152 1613320 5707208 1612192 5707440 -1613320 5707208 1612992 5706984 1612192 5707440 1613328 5707256 -1613320 5707208 1612992 5706984 1613328 5707256 1613616 5708152 -1612192 5707440 1612184 5707472 1613328 5707256 1612992 5706984 -1613320 5707208 1613096 5707024 1612992 5706984 1613328 5707256 -1613320 5707208 1613096 5707024 1613328 5707256 1613616 5708152 -1612992 5706984 1612192 5707440 1613328 5707256 1613096 5707024 -1613328 5707256 1612184 5707472 1613560 5708192 1613616 5708152 -1612184 5707472 1613560 5708192 1613328 5707256 1612192 5707440 -1613560 5708192 1613328 5707256 1612184 5707472 1612128 5707520 -1612992 5706984 1612792 5706920 1612192 5707440 1613328 5707256 -1613320 5707208 1613152 5707048 1613096 5707024 1613328 5707256 -1613320 5707208 1613152 5707048 1613328 5707256 1613616 5708152 -1613096 5707024 1612992 5706984 1613328 5707256 1613152 5707048 -1613320 5707208 1613240 5707104 1613152 5707048 1613328 5707256 -1613320 5707208 1613240 5707104 1613328 5707256 1613616 5708152 -1613320 5707208 1613288 5707144 1613240 5707104 1613328 5707256 -1613152 5707048 1613096 5707024 1613328 5707256 1613240 5707104 -1613320 5707208 1613328 5707256 1613616 5708152 1613640 5708144 -1613328 5707256 1613560 5708192 1613616 5708152 1613640 5708144 -1613320 5707208 1613240 5707104 1613328 5707256 1613640 5708144 -1613320 5707208 1613328 5707256 1613640 5708144 1614224 5707784 -1613320 5707208 1613328 5707256 1614224 5707784 1614240 5707760 -1613320 5707208 1613240 5707104 1613328 5707256 1614240 5707760 -1613328 5707256 1613640 5708144 1614224 5707784 1614240 5707760 -1613320 5707208 1613328 5707256 1614240 5707760 1614288 5707728 -1613328 5707256 1614224 5707784 1614240 5707760 1614288 5707728 -1613320 5707208 1613240 5707104 1613328 5707256 1614288 5707728 -1613320 5707208 1613328 5707256 1614288 5707728 1614360 5707680 -1613320 5707208 1613240 5707104 1613328 5707256 1614360 5707680 -1613328 5707256 1614240 5707760 1614288 5707728 1614360 5707680 -1613640 5708144 1613720 5708152 1614224 5707784 1613328 5707256 -1613320 5707208 1613328 5707256 1614360 5707680 1614408 5707648 -1613328 5707256 1613616 5708152 1613640 5708144 1614224 5707784 -1613328 5707256 1613320 5707304 1613560 5708192 1613616 5708152 -1613328 5707256 1613320 5707304 1613616 5708152 1613640 5708144 -1613320 5707304 1613560 5708192 1613616 5708152 1613640 5708144 -1613328 5707256 1612184 5707472 1613320 5707304 1613640 5708144 -1612184 5707472 1613320 5707304 1613328 5707256 1612192 5707440 -1613328 5707256 1612992 5706984 1612192 5707440 1613320 5707304 -1613328 5707256 1613096 5707024 1612992 5706984 1613320 5707304 -1612992 5706984 1612192 5707440 1613320 5707304 1613096 5707024 -1613328 5707256 1613152 5707048 1613096 5707024 1613320 5707304 -1613096 5707024 1612992 5706984 1613320 5707304 1613152 5707048 -1613320 5707304 1613640 5708144 1613328 5707256 1613152 5707048 -1612192 5707440 1612184 5707472 1613320 5707304 1612992 5706984 -1613320 5707304 1612184 5707472 1613560 5708192 1613616 5708152 -1612184 5707472 1613560 5708192 1613320 5707304 1612192 5707440 -1613560 5708192 1613320 5707304 1612184 5707472 1612128 5707520 -1612992 5706984 1612792 5706920 1612192 5707440 1613320 5707304 -1613328 5707256 1613240 5707104 1613152 5707048 1613320 5707304 -1613152 5707048 1613096 5707024 1613320 5707304 1613240 5707104 -1613328 5707256 1613240 5707104 1613320 5707304 1613640 5708144 -1613328 5707256 1613320 5707208 1613240 5707104 1613320 5707304 -1613328 5707256 1613320 5707208 1613320 5707304 1613640 5708144 -1613320 5707208 1613288 5707144 1613240 5707104 1613320 5707304 -1613240 5707104 1613152 5707048 1613320 5707304 1613320 5707208 -1613328 5707256 1613320 5707304 1613640 5708144 1614224 5707784 -1613320 5707304 1613616 5708152 1613640 5708144 1614224 5707784 -1613328 5707256 1613320 5707208 1613320 5707304 1614224 5707784 -1613328 5707256 1613320 5707304 1614224 5707784 1614240 5707760 -1613328 5707256 1613320 5707304 1614240 5707760 1614288 5707728 -1613328 5707256 1613320 5707208 1613320 5707304 1614240 5707760 -1613640 5708144 1613720 5708152 1614224 5707784 1613320 5707304 -1613320 5707304 1613640 5708144 1614224 5707784 1614240 5707760 -1613320 5707304 1613272 5707408 1613560 5708192 1613616 5708152 -1613320 5707304 1613272 5707408 1613616 5708152 1613640 5708144 -1613320 5707304 1613272 5707408 1613640 5708144 1614224 5707784 -1613272 5707408 1613616 5708152 1613640 5708144 1614224 5707784 -1613272 5707408 1613560 5708192 1613616 5708152 1613640 5708144 -1613320 5707304 1612184 5707472 1613272 5707408 1614224 5707784 -1612184 5707472 1613272 5707408 1613320 5707304 1612192 5707440 -1613320 5707304 1612992 5706984 1612192 5707440 1613272 5707408 -1613320 5707304 1613096 5707024 1612992 5706984 1613272 5707408 -1613320 5707304 1613152 5707048 1613096 5707024 1613272 5707408 -1613096 5707024 1612992 5706984 1613272 5707408 1613152 5707048 -1613320 5707304 1613240 5707104 1613152 5707048 1613272 5707408 -1613152 5707048 1613096 5707024 1613272 5707408 1613240 5707104 -1612992 5706984 1612192 5707440 1613272 5707408 1613096 5707024 -1613272 5707408 1614224 5707784 1613320 5707304 1613240 5707104 -1612192 5707440 1612184 5707472 1613272 5707408 1612992 5706984 -1613272 5707408 1612184 5707472 1613560 5708192 1613616 5708152 -1612184 5707472 1613560 5708192 1613272 5707408 1612192 5707440 -1613640 5708144 1613720 5708152 1614224 5707784 1613272 5707408 -1614224 5707784 1613320 5707304 1613272 5707408 1613720 5708152 -1613640 5708144 1613720 5708152 1613272 5707408 1613616 5708152 -1613720 5708152 1614224 5707800 1614224 5707784 1613272 5707408 -1613560 5708192 1613272 5707408 1612184 5707472 1612128 5707520 -1612992 5706984 1612792 5706920 1612192 5707440 1613272 5707408 -1613320 5707304 1613320 5707208 1613240 5707104 1613272 5707408 -1613320 5707304 1613272 5707408 1614224 5707784 1614240 5707760 -1613272 5707408 1613240 5707496 1613560 5708192 1613616 5708152 -1613272 5707408 1613240 5707496 1613616 5708152 1613640 5708144 -1613272 5707408 1613240 5707496 1613640 5708144 1613720 5708152 -1613240 5707496 1613616 5708152 1613640 5708144 1613720 5708152 -1613240 5707496 1613560 5708192 1613616 5708152 1613640 5708144 -1613272 5707408 1612184 5707472 1613240 5707496 1613720 5708152 -1612184 5707472 1613240 5707496 1613272 5707408 1612192 5707440 -1613272 5707408 1612992 5706984 1612192 5707440 1613240 5707496 -1613272 5707408 1613096 5707024 1612992 5706984 1613240 5707496 -1613272 5707408 1613152 5707048 1613096 5707024 1613240 5707496 -1612992 5706984 1612192 5707440 1613240 5707496 1613096 5707024 -1613240 5707496 1613720 5708152 1613272 5707408 1613096 5707024 -1612192 5707440 1612184 5707472 1613240 5707496 1612992 5706984 -1613240 5707496 1612184 5707472 1613560 5708192 1613616 5708152 -1613272 5707408 1613240 5707496 1613720 5708152 1614224 5707784 -1613272 5707408 1613240 5707496 1614224 5707784 1613320 5707304 -1613240 5707496 1613640 5708144 1613720 5708152 1614224 5707784 -1613272 5707408 1613096 5707024 1613240 5707496 1614224 5707784 -1612184 5707472 1613560 5708192 1613240 5707496 1612192 5707440 -1613720 5708152 1614224 5707800 1614224 5707784 1613240 5707496 -1613560 5708192 1613240 5707496 1612184 5707472 1612128 5707520 -1613560 5708192 1613616 5708152 1613240 5707496 1612128 5707520 -1613240 5707496 1612192 5707440 1612184 5707472 1612128 5707520 -1613560 5708192 1613240 5707496 1612128 5707520 1613552 5708272 -1613560 5708192 1613616 5708152 1613240 5707496 1613552 5708272 -1612128 5707520 1610752 5708648 1613552 5708272 1613240 5707496 -1613240 5707496 1612184 5707472 1612128 5707520 1613552 5708272 -1612992 5706984 1612792 5706920 1612192 5707440 1613240 5707496 -1612992 5706984 1612792 5706920 1613240 5707496 1613096 5707024 -1612192 5707440 1612184 5707472 1613240 5707496 1612792 5706920 -1612792 5706920 1612184 5707392 1612192 5707440 1613240 5707496 -1612992 5706984 1612848 5706920 1612792 5706920 1613240 5707496 -1613240 5707496 1613224 5707552 1613552 5708272 1613560 5708192 -1613240 5707496 1613224 5707552 1613560 5708192 1613616 5708152 -1613240 5707496 1613224 5707552 1613616 5708152 1613640 5708144 -1613240 5707496 1613224 5707552 1613640 5708144 1613720 5708152 -1613224 5707552 1613560 5708192 1613616 5708152 1613640 5708144 -1613240 5707496 1612128 5707520 1613224 5707552 1613640 5708144 -1613224 5707552 1612128 5707520 1613552 5708272 1613560 5708192 -1613224 5707552 1613552 5708272 1613560 5708192 1613616 5708152 -1613552 5708272 1613224 5707552 1612128 5707520 1610752 5708648 -1612128 5707520 1613224 5707552 1613240 5707496 1612184 5707472 -1613224 5707552 1613640 5708144 1613240 5707496 1612184 5707472 -1613240 5707496 1612192 5707440 1612184 5707472 1613224 5707552 -1613240 5707496 1612792 5706920 1612192 5707440 1613224 5707552 -1613240 5707496 1612792 5706920 1613224 5707552 1613640 5708144 -1612192 5707440 1612184 5707472 1613224 5707552 1612792 5706920 -1612128 5707520 1613552 5708272 1613224 5707552 1612184 5707472 -1612792 5706920 1612184 5707392 1612192 5707440 1613224 5707552 -1612184 5707472 1612128 5707520 1613224 5707552 1612192 5707440 -1613240 5707496 1612992 5706984 1612792 5706920 1613224 5707552 -1613240 5707496 1613096 5707024 1612992 5706984 1613224 5707552 -1612792 5706920 1612192 5707440 1613224 5707552 1612992 5706984 -1613240 5707496 1612992 5706984 1613224 5707552 1613640 5708144 -1612992 5706984 1612848 5706920 1612792 5706920 1613224 5707552 -1613224 5707552 1613232 5707584 1613552 5708272 1613560 5708192 -1613224 5707552 1612128 5707520 1613232 5707584 1613560 5708192 -1612128 5707520 1613232 5707584 1613224 5707552 1612184 5707472 -1613232 5707584 1613560 5708192 1613224 5707552 1612184 5707472 -1613224 5707552 1613232 5707584 1613560 5708192 1613616 5708152 -1613224 5707552 1613232 5707584 1613616 5708152 1613640 5708144 -1613224 5707552 1613232 5707584 1613640 5708144 1613240 5707496 -1613640 5708144 1613720 5708152 1613240 5707496 1613232 5707584 -1613720 5708152 1614224 5707784 1613240 5707496 1613232 5707584 -1613720 5708152 1614224 5707784 1613232 5707584 1613640 5708144 -1613240 5707496 1613224 5707552 1613232 5707584 1614224 5707784 -1613232 5707584 1613616 5708152 1613640 5708144 1613720 5708152 -1614224 5707784 1613272 5707408 1613240 5707496 1613232 5707584 -1614224 5707784 1613320 5707304 1613272 5707408 1613232 5707584 -1614224 5707784 1613272 5707408 1613232 5707584 1613720 5708152 -1613240 5707496 1613224 5707552 1613232 5707584 1613272 5707408 -1613232 5707584 1613552 5708272 1613560 5708192 1613616 5708152 -1613224 5707552 1612184 5707472 1613232 5707584 1613240 5707496 -1613720 5708152 1614224 5707800 1614224 5707784 1613232 5707584 -1613232 5707584 1613560 5708192 1613616 5708152 1613640 5708144 -1613552 5708272 1613232 5707584 1612128 5707520 1610752 5708648 -1613232 5707584 1612128 5707520 1613552 5708272 1613560 5708192 -1612128 5707520 1613552 5708272 1613232 5707584 1612184 5707472 -1613224 5707552 1612192 5707440 1612184 5707472 1613232 5707584 -1613560 5708192 1613256 5707624 1613232 5707584 1613552 5708272 -1613560 5708192 1613616 5708152 1613256 5707624 1613552 5708272 -1613232 5707584 1613256 5707624 1613616 5708152 1613640 5708144 -1613232 5707584 1613256 5707624 1613640 5708144 1613720 5708152 -1613232 5707584 1613256 5707624 1613720 5708152 1614224 5707784 -1613232 5707584 1613256 5707624 1614224 5707784 1613272 5707408 -1614224 5707784 1613320 5707304 1613272 5707408 1613256 5707624 -1613272 5707408 1613232 5707584 1613256 5707624 1613320 5707304 -1613256 5707624 1613720 5708152 1614224 5707784 1613320 5707304 -1613256 5707624 1613640 5708144 1613720 5708152 1614224 5707784 -1613232 5707584 1613256 5707624 1613272 5707408 1613240 5707496 -1613256 5707624 1613320 5707304 1613272 5707408 1613240 5707496 -1613232 5707584 1613256 5707624 1613240 5707496 1613224 5707552 -1613720 5708152 1614224 5707800 1614224 5707784 1613256 5707624 -1613256 5707624 1613616 5708152 1613640 5708144 1613720 5708152 -1613232 5707584 1612128 5707520 1613552 5708272 1613256 5707624 -1613552 5708272 1613560 5708192 1613256 5707624 1612128 5707520 -1612128 5707520 1610752 5708648 1613552 5708272 1613256 5707624 -1613256 5707624 1613240 5707496 1613232 5707584 1612128 5707520 -1613232 5707584 1612184 5707472 1612128 5707520 1613256 5707624 -1613232 5707584 1613224 5707552 1612184 5707472 1613256 5707624 -1612128 5707520 1613552 5708272 1613256 5707624 1612184 5707472 -1613232 5707584 1612184 5707472 1613256 5707624 1613240 5707496 -1613256 5707624 1613560 5708192 1613616 5708152 1613640 5708144 -1614224 5707784 1614240 5707760 1613320 5707304 1613256 5707624 -1613256 5707624 1613304 5707680 1613720 5708152 1614224 5707784 -1613256 5707624 1613304 5707680 1614224 5707784 1613320 5707304 -1613256 5707624 1613304 5707680 1613320 5707304 1613272 5707408 -1613256 5707624 1613304 5707680 1613272 5707408 1613240 5707496 -1613304 5707680 1613320 5707304 1613272 5707408 1613240 5707496 -1613304 5707680 1614224 5707784 1613320 5707304 1613272 5707408 -1613304 5707680 1613720 5708152 1614224 5707784 1613320 5707304 -1613256 5707624 1613304 5707680 1613240 5707496 1613232 5707584 -1613304 5707680 1613640 5708144 1613720 5708152 1614224 5707784 -1613720 5708152 1614224 5707800 1614224 5707784 1613304 5707680 -1613640 5708144 1613304 5707680 1613256 5707624 1613616 5708152 -1613640 5708144 1613720 5708152 1613304 5707680 1613616 5708152 -1613256 5707624 1613560 5708192 1613616 5708152 1613304 5707680 -1613256 5707624 1613552 5708272 1613560 5708192 1613304 5707680 -1613256 5707624 1612128 5707520 1613552 5708272 1613304 5707680 -1613552 5708272 1613560 5708192 1613304 5707680 1612128 5707520 -1613616 5708152 1613640 5708144 1613304 5707680 1613560 5708192 -1612128 5707520 1610752 5708648 1613552 5708272 1613304 5707680 -1613256 5707624 1612184 5707472 1612128 5707520 1613304 5707680 -1613560 5708192 1613616 5708152 1613304 5707680 1613552 5708272 -1613256 5707624 1612128 5707520 1613304 5707680 1613240 5707496 -1614224 5707784 1614240 5707760 1613320 5707304 1613304 5707680 -1613304 5707680 1613344 5707728 1613720 5708152 1614224 5707784 -1613304 5707680 1613344 5707728 1614224 5707784 1613320 5707304 -1613304 5707680 1613344 5707728 1613320 5707304 1613272 5707408 -1613304 5707680 1613344 5707728 1613272 5707408 1613240 5707496 -1613344 5707728 1614224 5707784 1613320 5707304 1613272 5707408 -1613344 5707728 1613720 5708152 1614224 5707784 1613320 5707304 -1613304 5707680 1613640 5708144 1613344 5707728 1613272 5707408 -1613640 5708144 1613344 5707728 1613304 5707680 1613616 5708152 -1613344 5707728 1613272 5707408 1613304 5707680 1613616 5708152 -1613344 5707728 1613640 5708144 1613720 5708152 1614224 5707784 -1613720 5708152 1614224 5707800 1614224 5707784 1613344 5707728 -1613304 5707680 1613560 5708192 1613616 5708152 1613344 5707728 -1613304 5707680 1613560 5708192 1613344 5707728 1613272 5707408 -1613616 5708152 1613640 5708144 1613344 5707728 1613560 5708192 -1613304 5707680 1613552 5708272 1613560 5708192 1613344 5707728 -1613304 5707680 1612128 5707520 1613552 5708272 1613344 5707728 -1613304 5707680 1613256 5707624 1612128 5707520 1613344 5707728 -1613304 5707680 1612128 5707520 1613344 5707728 1613272 5707408 -1613560 5708192 1613616 5708152 1613344 5707728 1613552 5708272 -1612128 5707520 1610752 5708648 1613552 5708272 1613344 5707728 -1613552 5708272 1613560 5708192 1613344 5707728 1612128 5707520 -1613640 5708144 1613720 5708152 1613344 5707728 1613616 5708152 -1614224 5707784 1614240 5707760 1613320 5707304 1613344 5707728 -1613344 5707728 1613376 5707784 1613616 5708152 1613640 5708144 -1613560 5708192 1613376 5707784 1613344 5707728 1613552 5708272 -1613344 5707728 1612128 5707520 1613552 5708272 1613376 5707784 -1613344 5707728 1613304 5707680 1612128 5707520 1613376 5707784 -1613304 5707680 1613256 5707624 1612128 5707520 1613376 5707784 -1613552 5708272 1613560 5708192 1613376 5707784 1612128 5707520 -1612128 5707520 1610752 5708648 1613552 5708272 1613376 5707784 -1612128 5707520 1613552 5708272 1613376 5707784 1613304 5707680 -1613344 5707728 1613304 5707680 1613376 5707784 1613640 5708144 -1613344 5707728 1613376 5707784 1613640 5708144 1613720 5708152 -1613376 5707784 1613616 5708152 1613640 5708144 1613720 5708152 -1613344 5707728 1613376 5707784 1613720 5708152 1614224 5707784 -1613344 5707728 1613376 5707784 1614224 5707784 1613320 5707304 -1613720 5708152 1614224 5707800 1614224 5707784 1613376 5707784 -1613344 5707728 1613304 5707680 1613376 5707784 1614224 5707784 -1613376 5707784 1613640 5708144 1613720 5708152 1614224 5707784 -1613376 5707784 1613560 5708192 1613616 5708152 1613640 5708144 -1613560 5708192 1613616 5708152 1613376 5707784 1613552 5708272 -1613376 5707784 1613408 5707880 1613552 5708272 1613560 5708192 -1613408 5707880 1612128 5707520 1613552 5708272 1613560 5708192 -1613552 5708272 1613408 5707880 1612128 5707520 1610752 5708648 -1612128 5707520 1613408 5707880 1613376 5707784 1613304 5707680 -1612128 5707520 1613552 5708272 1613408 5707880 1613304 5707680 -1612128 5707520 1613408 5707880 1613304 5707680 1613256 5707624 -1612128 5707520 1613552 5708272 1613408 5707880 1613256 5707624 -1613376 5707784 1613344 5707728 1613304 5707680 1613408 5707880 -1612128 5707520 1613408 5707880 1613256 5707624 1612184 5707472 -1613408 5707880 1613376 5707784 1613304 5707680 1613256 5707624 -1613376 5707784 1613304 5707680 1613408 5707880 1613560 5708192 -1613376 5707784 1613408 5707880 1613560 5708192 1613616 5708152 -1613408 5707880 1613552 5708272 1613560 5708192 1613616 5708152 -1613376 5707784 1613408 5707880 1613616 5708152 1613640 5708144 -1613376 5707784 1613408 5707880 1613640 5708144 1613720 5708152 -1613376 5707784 1613408 5707880 1613720 5708152 1614224 5707784 -1613408 5707880 1613640 5708144 1613720 5708152 1614224 5707784 -1613376 5707784 1613408 5707880 1614224 5707784 1613344 5707728 -1613720 5708152 1614224 5707800 1614224 5707784 1613408 5707880 -1613408 5707880 1613616 5708152 1613640 5708144 1613720 5708152 -1613376 5707784 1613304 5707680 1613408 5707880 1614224 5707784 -1613408 5707880 1613560 5708192 1613616 5708152 1613640 5708144 -1613408 5707880 1613408 5707920 1613552 5708272 1613560 5708192 -1613408 5707880 1612128 5707520 1613408 5707920 1613560 5708192 -1612128 5707520 1613408 5707920 1613408 5707880 1613256 5707624 -1613408 5707920 1613560 5708192 1613408 5707880 1613256 5707624 -1613408 5707920 1612128 5707520 1613552 5708272 1613560 5708192 -1612128 5707520 1613552 5708272 1613408 5707920 1613256 5707624 -1613408 5707880 1613304 5707680 1613256 5707624 1613408 5707920 -1613408 5707880 1613304 5707680 1613408 5707920 1613560 5708192 -1613256 5707624 1612128 5707520 1613408 5707920 1613304 5707680 -1613408 5707880 1613408 5707920 1613560 5708192 1613616 5708152 -1613408 5707920 1613552 5708272 1613560 5708192 1613616 5708152 -1613408 5707880 1613304 5707680 1613408 5707920 1613616 5708152 -1613552 5708272 1613408 5707920 1612128 5707520 1610752 5708648 -1612128 5707520 1613408 5707920 1613256 5707624 1612184 5707472 -1613408 5707880 1613376 5707784 1613304 5707680 1613408 5707920 -1613408 5707880 1613376 5707784 1613408 5707920 1613616 5708152 -1613304 5707680 1613256 5707624 1613408 5707920 1613376 5707784 -1613376 5707784 1613344 5707728 1613304 5707680 1613408 5707920 -1613304 5707680 1613256 5707624 1613408 5707920 1613344 5707728 -1613376 5707784 1613344 5707728 1613408 5707920 1613408 5707880 -1613408 5707880 1613408 5707920 1613616 5708152 1613640 5708144 -1613408 5707880 1613376 5707784 1613408 5707920 1613640 5708144 -1613408 5707920 1613560 5708192 1613616 5708152 1613640 5708144 -1613408 5707880 1613408 5707920 1613640 5708144 1613720 5708152 -1613408 5707920 1613400 5707944 1613552 5708272 1613560 5708192 -1613408 5707920 1613400 5707944 1613560 5708192 1613616 5708152 -1613400 5707944 1613552 5708272 1613560 5708192 1613616 5708152 -1613408 5707920 1612128 5707520 1613400 5707944 1613616 5708152 -1612128 5707520 1613400 5707944 1613408 5707920 1613256 5707624 -1613408 5707920 1613304 5707680 1613256 5707624 1613400 5707944 -1613400 5707944 1613616 5708152 1613408 5707920 1613304 5707680 -1613256 5707624 1612128 5707520 1613400 5707944 1613304 5707680 -1613408 5707920 1613344 5707728 1613304 5707680 1613400 5707944 -1613304 5707680 1613256 5707624 1613400 5707944 1613344 5707728 -1613408 5707920 1613344 5707728 1613400 5707944 1613616 5708152 -1613408 5707920 1613376 5707784 1613344 5707728 1613400 5707944 -1613408 5707920 1613376 5707784 1613400 5707944 1613616 5708152 -1613344 5707728 1613304 5707680 1613400 5707944 1613376 5707784 -1613408 5707920 1613400 5707944 1613616 5708152 1613640 5708144 -1613552 5708272 1613400 5707944 1612128 5707520 1610752 5708648 -1612128 5707520 1613400 5707944 1613256 5707624 1612184 5707472 -1613408 5707920 1613408 5707880 1613376 5707784 1613400 5707944 -1613408 5707920 1613408 5707880 1613400 5707944 1613616 5708152 -1613376 5707784 1613344 5707728 1613400 5707944 1613408 5707880 -1613400 5707944 1612128 5707520 1613552 5708272 1613560 5708192 -1612128 5707520 1613552 5708272 1613400 5707944 1613256 5707624 -1613552 5708272 1613336 5708008 1612128 5707520 1610752 5708648 -1612128 5707520 1612040 5707520 1610752 5708648 1613336 5708008 -1613552 5708272 1613336 5708008 1610752 5708648 1613608 5708344 -1613552 5708272 1613400 5707944 1613336 5708008 1610752 5708648 -1613400 5707944 1613336 5708008 1613552 5708272 1613560 5708192 -1613400 5707944 1613336 5708008 1613560 5708192 1613616 5708152 -1613336 5708008 1610752 5708648 1613552 5708272 1613560 5708192 -1613400 5707944 1612128 5707520 1613336 5708008 1613560 5708192 -1612128 5707520 1613336 5708008 1613400 5707944 1613256 5707624 -1613400 5707944 1613304 5707680 1613256 5707624 1613336 5708008 -1613400 5707944 1613344 5707728 1613304 5707680 1613336 5708008 -1613304 5707680 1613256 5707624 1613336 5708008 1613344 5707728 -1613400 5707944 1613376 5707784 1613344 5707728 1613336 5708008 -1613344 5707728 1613304 5707680 1613336 5708008 1613376 5707784 -1613400 5707944 1613408 5707880 1613376 5707784 1613336 5708008 -1613376 5707784 1613344 5707728 1613336 5708008 1613408 5707880 -1612128 5707520 1613336 5708008 1613256 5707624 1612184 5707472 -1613256 5707624 1613232 5707584 1612184 5707472 1613336 5708008 -1613232 5707584 1613224 5707552 1612184 5707472 1613336 5708008 -1612184 5707472 1612128 5707520 1613336 5708008 1613232 5707584 -1613400 5707944 1613408 5707920 1613408 5707880 1613336 5708008 -1613336 5708008 1613560 5708192 1613400 5707944 1613408 5707880 -1613256 5707624 1613232 5707584 1613336 5708008 1613304 5707680 -1613336 5708008 1612184 5707472 1612128 5707520 1610752 5708648 -1610752 5708648 1613264 5708064 1613336 5708008 1612128 5707520 -1610752 5708648 1613552 5708272 1613264 5708064 1612128 5707520 -1610752 5708648 1613264 5708064 1612128 5707520 1612040 5707520 -1613552 5708272 1613264 5708064 1610752 5708648 1613608 5708344 -1613264 5708064 1612128 5707520 1610752 5708648 1613608 5708344 -1610752 5708648 1613656 5708392 1613608 5708344 1613264 5708064 -1613336 5708008 1613264 5708064 1613552 5708272 1613560 5708192 -1613336 5708008 1613264 5708064 1613560 5708192 1613400 5707944 -1613264 5708064 1613560 5708192 1613336 5708008 1612128 5707520 -1613336 5708008 1612184 5707472 1612128 5707520 1613264 5708064 -1612128 5707520 1610752 5708648 1613264 5708064 1612184 5707472 -1613336 5708008 1613232 5707584 1612184 5707472 1613264 5708064 -1613232 5707584 1613224 5707552 1612184 5707472 1613264 5708064 -1613336 5708008 1613256 5707624 1613232 5707584 1613264 5708064 -1613232 5707584 1612184 5707472 1613264 5708064 1613256 5707624 -1613336 5708008 1613304 5707680 1613256 5707624 1613264 5708064 -1613336 5708008 1613344 5707728 1613304 5707680 1613264 5708064 -1613336 5708008 1613376 5707784 1613344 5707728 1613264 5708064 -1613256 5707624 1613232 5707584 1613264 5708064 1613304 5707680 -1613304 5707680 1613256 5707624 1613264 5708064 1613344 5707728 -1613336 5708008 1613344 5707728 1613264 5708064 1613560 5708192 -1612184 5707472 1612128 5707520 1613264 5708064 1613232 5707584 -1613552 5708272 1613560 5708192 1613264 5708064 1613608 5708344 -1613264 5708064 1612984 5708056 1610752 5708648 1613608 5708344 -1612984 5708056 1612128 5707520 1610752 5708648 1613608 5708344 -1613264 5708064 1612128 5707520 1612984 5708056 1613608 5708344 -1610752 5708648 1612984 5708056 1612128 5707520 1612040 5707520 -1612984 5708056 1613264 5708064 1612128 5707520 1612040 5707520 -1610752 5708648 1613608 5708344 1612984 5708056 1612040 5707520 -1610752 5708648 1612984 5708056 1612040 5707520 1610760 5708480 -1612128 5707520 1612984 5708056 1613264 5708064 1612184 5707472 -1612128 5707520 1612040 5707520 1612984 5708056 1612184 5707472 -1612984 5708056 1613608 5708344 1613264 5708064 1612184 5707472 -1613264 5708064 1612984 5708056 1613608 5708344 1613552 5708272 -1612984 5708056 1610752 5708648 1613608 5708344 1613552 5708272 -1613264 5708064 1612184 5707472 1612984 5708056 1613552 5708272 -1610752 5708648 1613656 5708392 1613608 5708344 1612984 5708056 -1613608 5708344 1613552 5708272 1612984 5708056 1613656 5708392 -1610752 5708648 1613696 5708424 1613656 5708392 1612984 5708056 -1610752 5708648 1613696 5708424 1612984 5708056 1612040 5707520 -1610752 5708648 1613784 5708464 1613696 5708424 1612984 5708056 -1613656 5708392 1613608 5708344 1612984 5708056 1613696 5708424 -1613264 5708064 1613232 5707584 1612184 5707472 1612984 5708056 -1613264 5708064 1613232 5707584 1612984 5708056 1613552 5708272 -1613232 5707584 1613224 5707552 1612184 5707472 1612984 5708056 -1612184 5707472 1612128 5707520 1612984 5708056 1613224 5707552 -1613264 5708064 1613256 5707624 1613232 5707584 1612984 5708056 -1613264 5708064 1613256 5707624 1612984 5708056 1613552 5708272 -1613264 5708064 1613304 5707680 1613256 5707624 1612984 5708056 -1613264 5708064 1613304 5707680 1612984 5708056 1613552 5708272 -1613256 5707624 1613232 5707584 1612984 5708056 1613304 5707680 -1613224 5707552 1612192 5707440 1612184 5707472 1612984 5708056 -1613264 5708064 1613344 5707728 1613304 5707680 1612984 5708056 -1613232 5707584 1613224 5707552 1612984 5708056 1613256 5707624 -1613264 5708064 1612984 5708056 1613552 5708272 1613560 5708192 -1613224 5707552 1612944 5708016 1612984 5708056 1613232 5707584 -1612944 5708016 1612184 5707472 1612984 5708056 1613232 5707584 -1612984 5708056 1612944 5708016 1612184 5707472 1612128 5707520 -1612984 5708056 1612944 5708016 1612128 5707520 1612040 5707520 -1612984 5708056 1613232 5707584 1612944 5708016 1612040 5707520 -1612944 5708016 1613224 5707552 1612184 5707472 1612128 5707520 -1612984 5708056 1612944 5708016 1612040 5707520 1610752 5708648 -1612944 5708016 1612128 5707520 1612040 5707520 1610752 5708648 -1612984 5708056 1613232 5707584 1612944 5708016 1610752 5708648 -1612984 5708056 1612944 5708016 1610752 5708648 1613696 5708424 -1612040 5707520 1610760 5708480 1610752 5708648 1612944 5708016 -1612944 5708016 1612184 5707472 1612128 5707520 1612040 5707520 -1612184 5707472 1612944 5708016 1613224 5707552 1612192 5707440 -1612184 5707472 1612128 5707520 1612944 5708016 1612192 5707440 -1613224 5707552 1612792 5706920 1612192 5707440 1612944 5708016 -1613224 5707552 1612192 5707440 1612944 5708016 1613232 5707584 -1612984 5708056 1613256 5707624 1613232 5707584 1612944 5708016 -1612984 5708056 1613256 5707624 1612944 5708016 1610752 5708648 -1613232 5707584 1613224 5707552 1612944 5708016 1613256 5707624 -1612984 5708056 1613304 5707680 1613256 5707624 1612944 5708016 -1612984 5708056 1613304 5707680 1612944 5708016 1610752 5708648 -1612984 5708056 1613264 5708064 1613304 5707680 1612944 5708016 -1612984 5708056 1613264 5708064 1612944 5708016 1610752 5708648 -1613304 5707680 1613256 5707624 1612944 5708016 1613264 5708064 -1613264 5708064 1613344 5707728 1613304 5707680 1612944 5708016 -1613256 5707624 1613232 5707584 1612944 5708016 1613304 5707680 -1612192 5707440 1612912 5707960 1613224 5707552 1612792 5706920 -1612944 5708016 1612912 5707960 1612192 5707440 1612184 5707472 -1612944 5708016 1612912 5707960 1612184 5707472 1612128 5707520 -1612944 5708016 1612912 5707960 1612128 5707520 1612040 5707520 -1612912 5707960 1612192 5707440 1612184 5707472 1612128 5707520 -1612944 5708016 1613224 5707552 1612912 5707960 1612128 5707520 -1613224 5707552 1612912 5707960 1612944 5708016 1613232 5707584 -1612944 5708016 1613256 5707624 1613232 5707584 1612912 5707960 -1613224 5707552 1612192 5707440 1612912 5707960 1613232 5707584 -1612912 5707960 1612128 5707520 1612944 5708016 1613256 5707624 -1613232 5707584 1613224 5707552 1612912 5707960 1613256 5707624 -1612912 5707960 1613224 5707552 1612192 5707440 1612184 5707472 -1612944 5708016 1613304 5707680 1613256 5707624 1612912 5707960 -1613256 5707624 1613232 5707584 1612912 5707960 1613304 5707680 -1612944 5708016 1613264 5708064 1613304 5707680 1612912 5707960 -1612944 5708016 1612984 5708056 1613264 5708064 1612912 5707960 -1613264 5708064 1613304 5707680 1612912 5707960 1612984 5708056 -1612944 5708016 1612984 5708056 1612912 5707960 1612128 5707520 -1613264 5708064 1613344 5707728 1613304 5707680 1612912 5707960 -1613304 5707680 1613256 5707624 1612912 5707960 1613264 5708064 -1612192 5707440 1612880 5707912 1613224 5707552 1612792 5706920 -1613224 5707552 1612992 5706984 1612792 5706920 1612880 5707912 -1612192 5707440 1612880 5707912 1612792 5706920 1612184 5707392 -1613224 5707552 1612880 5707912 1612912 5707960 1613232 5707584 -1612880 5707912 1612192 5707440 1612912 5707960 1613232 5707584 -1612912 5707960 1613256 5707624 1613232 5707584 1612880 5707912 -1612912 5707960 1613304 5707680 1613256 5707624 1612880 5707912 -1613232 5707584 1613224 5707552 1612880 5707912 1613256 5707624 -1612912 5707960 1613256 5707624 1612880 5707912 1612192 5707440 -1612912 5707960 1612880 5707912 1612192 5707440 1612184 5707472 -1612912 5707960 1613256 5707624 1612880 5707912 1612184 5707472 -1612912 5707960 1612880 5707912 1612184 5707472 1612128 5707520 -1612912 5707960 1612880 5707912 1612128 5707520 1612944 5708016 -1612912 5707960 1613256 5707624 1612880 5707912 1612944 5708016 -1612128 5707520 1612040 5707520 1612944 5708016 1612880 5707912 -1612880 5707912 1612184 5707472 1612128 5707520 1612944 5708016 -1612880 5707912 1612192 5707440 1612184 5707472 1612128 5707520 -1612192 5707440 1612184 5707472 1612880 5707912 1612792 5706920 -1612880 5707912 1613232 5707584 1613224 5707552 1612792 5706920 -1612792 5706920 1612848 5707856 1612880 5707912 1613224 5707552 -1612792 5706920 1612192 5707440 1612848 5707856 1613224 5707552 -1612792 5706920 1612848 5707856 1613224 5707552 1612992 5706984 -1612792 5706920 1612192 5707440 1612848 5707856 1612992 5706984 -1612848 5707856 1612880 5707912 1613224 5707552 1612992 5706984 -1612192 5707440 1612848 5707856 1612792 5706920 1612184 5707392 -1612792 5706920 1612848 5707856 1612992 5706984 1612848 5706920 -1613224 5707552 1613240 5707496 1612992 5706984 1612848 5707856 -1612880 5707912 1612848 5707856 1612192 5707440 1612184 5707472 -1612848 5707856 1612792 5706920 1612192 5707440 1612184 5707472 -1612880 5707912 1612848 5707856 1612184 5707472 1612128 5707520 -1612880 5707912 1612848 5707856 1612128 5707520 1612944 5708016 -1612848 5707856 1612192 5707440 1612184 5707472 1612128 5707520 -1612848 5707856 1612128 5707520 1612880 5707912 1613224 5707552 -1612880 5707912 1613232 5707584 1613224 5707552 1612848 5707856 -1613224 5707552 1612992 5706984 1612848 5707856 1613232 5707584 -1612880 5707912 1613256 5707624 1613232 5707584 1612848 5707856 -1612880 5707912 1612912 5707960 1613256 5707624 1612848 5707856 -1612880 5707912 1613256 5707624 1612848 5707856 1612128 5707520 -1613232 5707584 1613224 5707552 1612848 5707856 1613256 5707624 -1612848 5707856 1612792 5707784 1612192 5707440 1612184 5707472 -1612792 5707784 1612792 5706920 1612192 5707440 1612184 5707472 -1612848 5707856 1612792 5706920 1612792 5707784 1612184 5707472 -1612792 5706920 1612792 5707784 1612848 5707856 1612992 5706984 -1612792 5706920 1612192 5707440 1612792 5707784 1612992 5706984 -1612792 5707784 1612184 5707472 1612848 5707856 1612992 5706984 -1612848 5707856 1613224 5707552 1612992 5706984 1612792 5707784 -1612848 5707856 1613224 5707552 1612792 5707784 1612184 5707472 -1612992 5706984 1612792 5706920 1612792 5707784 1613224 5707552 -1612848 5707856 1613232 5707584 1613224 5707552 1612792 5707784 -1612848 5707856 1613232 5707584 1612792 5707784 1612184 5707472 -1613224 5707552 1612992 5706984 1612792 5707784 1613232 5707584 -1612192 5707440 1612792 5707784 1612792 5706920 1612184 5707392 -1612792 5706920 1612792 5707784 1612992 5706984 1612848 5706920 -1613224 5707552 1613240 5707496 1612992 5706984 1612792 5707784 -1612992 5706984 1612792 5706920 1612792 5707784 1613240 5707496 -1613240 5707496 1613096 5707024 1612992 5706984 1612792 5707784 -1613224 5707552 1613240 5707496 1612792 5707784 1613232 5707584 -1612848 5707856 1612792 5707784 1612184 5707472 1612128 5707520 -1612792 5707784 1612192 5707440 1612184 5707472 1612128 5707520 -1612848 5707856 1613232 5707584 1612792 5707784 1612128 5707520 -1612848 5707856 1612792 5707784 1612128 5707520 1612880 5707912 -1612848 5707856 1613232 5707584 1612792 5707784 1612880 5707912 -1612128 5707520 1612944 5708016 1612880 5707912 1612792 5707784 -1612792 5707784 1612184 5707472 1612128 5707520 1612880 5707912 -1612848 5707856 1613256 5707624 1613232 5707584 1612792 5707784 -1612792 5707784 1612736 5707728 1612192 5707440 1612184 5707472 -1612792 5707784 1612792 5706920 1612736 5707728 1612184 5707472 -1612792 5706920 1612736 5707728 1612792 5707784 1612992 5706984 -1612736 5707728 1612184 5707472 1612792 5707784 1612992 5706984 -1612792 5707784 1612736 5707728 1612184 5707472 1612128 5707520 -1612736 5707728 1612192 5707440 1612184 5707472 1612128 5707520 -1612792 5707784 1612992 5706984 1612736 5707728 1612128 5707520 -1612792 5707784 1613240 5707496 1612992 5706984 1612736 5707728 -1612792 5707784 1613240 5707496 1612736 5707728 1612128 5707520 -1612992 5706984 1612792 5706920 1612736 5707728 1613240 5707496 -1613240 5707496 1613096 5707024 1612992 5706984 1612736 5707728 -1612736 5707728 1612792 5706920 1612192 5707440 1612184 5707472 -1612792 5706920 1612192 5707440 1612736 5707728 1612992 5706984 -1612192 5707440 1612736 5707728 1612792 5706920 1612184 5707392 -1612192 5707440 1612184 5707472 1612736 5707728 1612184 5707392 -1612736 5707728 1612992 5706984 1612792 5706920 1612184 5707392 -1612792 5706920 1612160 5707288 1612184 5707392 1612736 5707728 -1612792 5706920 1612736 5707728 1612992 5706984 1612848 5706920 -1612792 5707784 1613224 5707552 1613240 5707496 1612736 5707728 -1612792 5707784 1613224 5707552 1612736 5707728 1612128 5707520 -1613240 5707496 1612992 5706984 1612736 5707728 1613224 5707552 -1612792 5707784 1613232 5707584 1613224 5707552 1612736 5707728 -1612792 5707784 1612736 5707728 1612128 5707520 1612880 5707912 -1612792 5707784 1613224 5707552 1612736 5707728 1612880 5707912 -1612736 5707728 1612184 5707472 1612128 5707520 1612880 5707912 -1612128 5707520 1612944 5708016 1612880 5707912 1612736 5707728 -1612792 5707784 1612736 5707728 1612880 5707912 1612848 5707856 -1612792 5706920 1612688 5707680 1612736 5707728 1612992 5706984 -1612736 5707728 1613240 5707496 1612992 5706984 1612688 5707680 -1612736 5707728 1613224 5707552 1613240 5707496 1612688 5707680 -1613240 5707496 1612992 5706984 1612688 5707680 1613224 5707552 -1613240 5707496 1613096 5707024 1612992 5706984 1612688 5707680 -1612688 5707680 1612184 5707392 1612736 5707728 1613224 5707552 -1612992 5706984 1612792 5706920 1612688 5707680 1613240 5707496 -1612184 5707392 1612688 5707680 1612792 5706920 1612160 5707288 -1612736 5707728 1612688 5707680 1612184 5707392 1612192 5707440 -1612736 5707728 1612688 5707680 1612192 5707440 1612184 5707472 -1612736 5707728 1612688 5707680 1612184 5707472 1612128 5707520 -1612736 5707728 1612688 5707680 1612128 5707520 1612880 5707912 -1612688 5707680 1612192 5707440 1612184 5707472 1612128 5707520 -1612736 5707728 1613224 5707552 1612688 5707680 1612128 5707520 -1612688 5707680 1612792 5706920 1612184 5707392 1612192 5707440 -1612688 5707680 1612184 5707392 1612192 5707440 1612184 5707472 -1612792 5706920 1612184 5707392 1612688 5707680 1612992 5706984 -1612792 5706920 1612688 5707680 1612992 5706984 1612848 5706920 -1612736 5707728 1612792 5707784 1613224 5707552 1612688 5707680 -1612688 5707680 1612640 5707624 1612184 5707392 1612192 5707440 -1612184 5707392 1612640 5707624 1612792 5706920 1612160 5707288 -1612792 5706920 1612128 5707184 1612160 5707288 1612640 5707624 -1612688 5707680 1612640 5707624 1612192 5707440 1612184 5707472 -1612688 5707680 1612640 5707624 1612184 5707472 1612128 5707520 -1612688 5707680 1612640 5707624 1612128 5707520 1612736 5707728 -1612640 5707624 1612192 5707440 1612184 5707472 1612128 5707520 -1612640 5707624 1612160 5707288 1612184 5707392 1612192 5707440 -1612640 5707624 1612184 5707392 1612192 5707440 1612184 5707472 -1612640 5707624 1612688 5707680 1612792 5706920 1612160 5707288 -1612688 5707680 1612792 5706920 1612640 5707624 1612128 5707520 -1612792 5706920 1612640 5707624 1612688 5707680 1612992 5706984 -1612688 5707680 1613240 5707496 1612992 5706984 1612640 5707624 -1612688 5707680 1613224 5707552 1613240 5707496 1612640 5707624 -1612688 5707680 1612736 5707728 1613224 5707552 1612640 5707624 -1613240 5707496 1613096 5707024 1612992 5706984 1612640 5707624 -1613240 5707496 1612992 5706984 1612640 5707624 1613224 5707552 -1612792 5706920 1612160 5707288 1612640 5707624 1612992 5706984 -1612640 5707624 1612128 5707520 1612688 5707680 1613224 5707552 -1612992 5706984 1612792 5706920 1612640 5707624 1613240 5707496 -1612792 5706920 1612640 5707624 1612992 5706984 1612848 5706920 -1612160 5707288 1612616 5707584 1612792 5706920 1612128 5707184 -1612640 5707624 1612616 5707584 1612160 5707288 1612184 5707392 -1612640 5707624 1612792 5706920 1612616 5707584 1612184 5707392 -1612616 5707584 1612792 5706920 1612160 5707288 1612184 5707392 -1612640 5707624 1612616 5707584 1612184 5707392 1612192 5707440 -1612640 5707624 1612792 5706920 1612616 5707584 1612192 5707440 -1612616 5707584 1612160 5707288 1612184 5707392 1612192 5707440 -1612640 5707624 1612616 5707584 1612192 5707440 1612184 5707472 -1612640 5707624 1612792 5706920 1612616 5707584 1612184 5707472 -1612640 5707624 1612616 5707584 1612184 5707472 1612128 5707520 -1612640 5707624 1612792 5706920 1612616 5707584 1612128 5707520 -1612640 5707624 1612616 5707584 1612128 5707520 1612688 5707680 -1612616 5707584 1612184 5707392 1612192 5707440 1612184 5707472 -1612616 5707584 1612192 5707440 1612184 5707472 1612128 5707520 -1612792 5706920 1612616 5707584 1612640 5707624 1612992 5706984 -1612616 5707584 1612128 5707520 1612640 5707624 1612992 5706984 -1612792 5706920 1612160 5707288 1612616 5707584 1612992 5706984 -1612640 5707624 1613240 5707496 1612992 5706984 1612616 5707584 -1612640 5707624 1613240 5707496 1612616 5707584 1612128 5707520 -1613240 5707496 1613096 5707024 1612992 5706984 1612616 5707584 -1612640 5707624 1613224 5707552 1613240 5707496 1612616 5707584 -1612640 5707624 1613224 5707552 1612616 5707584 1612128 5707520 -1612640 5707624 1612688 5707680 1613224 5707552 1612616 5707584 -1612992 5706984 1612792 5706920 1612616 5707584 1613240 5707496 -1613240 5707496 1612992 5706984 1612616 5707584 1613224 5707552 -1612792 5706920 1612616 5707584 1612992 5706984 1612848 5706920 -1612160 5707288 1612584 5707488 1612792 5706920 1612128 5707184 -1612616 5707584 1612584 5707488 1612160 5707288 1612184 5707392 -1612616 5707584 1612792 5706920 1612584 5707488 1612184 5707392 -1612792 5706920 1612584 5707488 1612616 5707584 1612992 5706984 -1612584 5707488 1612184 5707392 1612616 5707584 1612992 5706984 -1612584 5707488 1612792 5706920 1612160 5707288 1612184 5707392 -1612616 5707584 1612584 5707488 1612184 5707392 1612192 5707440 -1612584 5707488 1612160 5707288 1612184 5707392 1612192 5707440 -1612616 5707584 1612992 5706984 1612584 5707488 1612192 5707440 -1612616 5707584 1612584 5707488 1612192 5707440 1612184 5707472 -1612616 5707584 1612992 5706984 1612584 5707488 1612184 5707472 -1612584 5707488 1612184 5707392 1612192 5707440 1612184 5707472 -1612616 5707584 1612584 5707488 1612184 5707472 1612128 5707520 -1612616 5707584 1613240 5707496 1612992 5706984 1612584 5707488 -1612616 5707584 1613240 5707496 1612584 5707488 1612184 5707472 -1612992 5706984 1612792 5706920 1612584 5707488 1613240 5707496 -1613240 5707496 1613096 5707024 1612992 5706984 1612584 5707488 -1612616 5707584 1613224 5707552 1613240 5707496 1612584 5707488 -1612792 5706920 1612584 5707488 1612992 5706984 1612848 5706920 -1612792 5706920 1612160 5707288 1612584 5707488 1612992 5706984 -1612160 5707288 1612552 5707384 1612792 5706920 1612128 5707184 -1612792 5706920 1612096 5707088 1612128 5707184 1612552 5707384 -1612584 5707488 1612552 5707384 1612160 5707288 1612184 5707392 -1612584 5707488 1612552 5707384 1612184 5707392 1612192 5707440 -1612552 5707384 1612160 5707288 1612184 5707392 1612192 5707440 -1612584 5707488 1612552 5707384 1612192 5707440 1612184 5707472 -1612584 5707488 1612792 5706920 1612552 5707384 1612192 5707440 -1612792 5706920 1612552 5707384 1612584 5707488 1612992 5706984 -1612584 5707488 1613240 5707496 1612992 5706984 1612552 5707384 -1612792 5706920 1612552 5707384 1612992 5706984 1612848 5706920 -1612552 5707384 1612192 5707440 1612584 5707488 1612992 5706984 -1612160 5707288 1612184 5707392 1612552 5707384 1612128 5707184 -1612552 5707384 1612992 5706984 1612792 5706920 1612128 5707184 -1612552 5707384 1612528 5707280 1612128 5707184 1612160 5707288 -1612128 5707184 1612528 5707280 1612792 5706920 1612096 5707088 -1612792 5706920 1612048 5706984 1612096 5707088 1612528 5707280 -1612528 5707280 1612096 5707088 1612128 5707184 1612160 5707288 -1612528 5707280 1612552 5707384 1612792 5706920 1612096 5707088 -1612552 5707384 1612528 5707280 1612160 5707288 1612184 5707392 -1612528 5707280 1612128 5707184 1612160 5707288 1612184 5707392 -1612552 5707384 1612528 5707280 1612184 5707392 1612192 5707440 -1612552 5707384 1612792 5706920 1612528 5707280 1612184 5707392 -1612792 5706920 1612528 5707280 1612552 5707384 1612992 5706984 -1612792 5706920 1612096 5707088 1612528 5707280 1612992 5706984 -1612792 5706920 1612528 5707280 1612992 5706984 1612848 5706920 -1612552 5707384 1612584 5707488 1612992 5706984 1612528 5707280 -1612528 5707280 1612184 5707392 1612552 5707384 1612992 5706984 -1612528 5707280 1612520 5707232 1612096 5707088 1612128 5707184 -1612096 5707088 1612520 5707232 1612792 5706920 1612048 5706984 -1612792 5706920 1611984 5706880 1612048 5706984 1612520 5707232 -1612528 5707280 1612520 5707232 1612128 5707184 1612160 5707288 -1612528 5707280 1612520 5707232 1612160 5707288 1612184 5707392 -1612520 5707232 1612096 5707088 1612128 5707184 1612160 5707288 -1612528 5707280 1612792 5706920 1612520 5707232 1612160 5707288 -1612792 5706920 1612520 5707232 1612528 5707280 1612992 5706984 -1612520 5707232 1612048 5706984 1612096 5707088 1612128 5707184 -1612520 5707232 1612528 5707280 1612792 5706920 1612048 5706984 -1612048 5706984 1612536 5707192 1612792 5706920 1611984 5706880 -1612520 5707232 1612536 5707192 1612048 5706984 1612096 5707088 -1612520 5707232 1612536 5707192 1612096 5707088 1612128 5707184 -1612520 5707232 1612536 5707192 1612128 5707184 1612160 5707288 -1612536 5707192 1612048 5706984 1612096 5707088 1612128 5707184 -1612792 5706920 1612536 5707192 1612520 5707232 1612528 5707280 -1612792 5706920 1612536 5707192 1612528 5707280 1612992 5706984 -1612536 5707192 1612520 5707232 1612528 5707280 1612992 5706984 -1612520 5707232 1612528 5707280 1612536 5707192 1612128 5707184 -1612536 5707192 1612792 5706920 1612048 5706984 1612096 5707088 -1612792 5706920 1612048 5706984 1612536 5707192 1612992 5706984 -1612792 5706920 1612536 5707192 1612992 5706984 1612848 5706920 -1612528 5707280 1612552 5707384 1612992 5706984 1612536 5707192 -1612992 5706984 1612792 5706920 1612536 5707192 1612552 5707384 -1612528 5707280 1612552 5707384 1612536 5707192 1612520 5707232 -1612552 5707384 1612584 5707488 1612992 5706984 1612536 5707192 -1612048 5706984 1612568 5707144 1612792 5706920 1611984 5706880 -1612536 5707192 1612568 5707144 1612048 5706984 1612096 5707088 -1612536 5707192 1612568 5707144 1612096 5707088 1612128 5707184 -1612536 5707192 1612792 5706920 1612568 5707144 1612096 5707088 -1612792 5706920 1612568 5707144 1612536 5707192 1612992 5706984 -1612536 5707192 1612552 5707384 1612992 5706984 1612568 5707144 -1612568 5707144 1612096 5707088 1612536 5707192 1612552 5707384 -1612992 5706984 1612792 5706920 1612568 5707144 1612552 5707384 -1612568 5707144 1612792 5706920 1612048 5706984 1612096 5707088 -1612792 5706920 1612048 5706984 1612568 5707144 1612992 5706984 -1612792 5706920 1612568 5707144 1612992 5706984 1612848 5706920 -1612568 5707144 1612552 5707384 1612992 5706984 1612848 5706920 -1612792 5706920 1612048 5706984 1612568 5707144 1612848 5706920 -1612552 5707384 1612584 5707488 1612992 5706984 1612568 5707144 -1612536 5707192 1612528 5707280 1612552 5707384 1612568 5707144 -1612552 5707384 1612992 5706984 1612568 5707144 1612528 5707280 -1612536 5707192 1612520 5707232 1612528 5707280 1612568 5707144 -1612536 5707192 1612528 5707280 1612568 5707144 1612096 5707088 -1612792 5706920 1611984 5706880 1612048 5706984 1612608 5707104 -1612568 5707144 1612608 5707104 1612048 5706984 1612096 5707088 -1612568 5707144 1612992 5706984 1612848 5706920 1612608 5707104 -1612848 5706920 1612792 5706920 1612608 5707104 1612992 5706984 -1612568 5707144 1612552 5707384 1612992 5706984 1612608 5707104 -1612568 5707144 1612528 5707280 1612552 5707384 1612608 5707104 -1612552 5707384 1612992 5706984 1612608 5707104 1612528 5707280 -1612568 5707144 1612528 5707280 1612608 5707104 1612048 5706984 -1612992 5706984 1612848 5706920 1612608 5707104 1612552 5707384 -1612552 5707384 1612584 5707488 1612992 5706984 1612608 5707104 -1612568 5707144 1612536 5707192 1612528 5707280 1612608 5707104 -1612792 5706920 1611984 5706880 1612048 5706984 1612656 5707056 -1612048 5706984 1612608 5707104 1612656 5707056 1611984 5706880 -1612792 5706920 1611984 5706880 1612656 5707056 1612848 5706920 -1612608 5707104 1612992 5706984 1612848 5706920 1612656 5707056 -1612608 5707104 1612992 5706984 1612656 5707056 1612048 5706984 -1612848 5706920 1612792 5706920 1612656 5707056 1612992 5706984 -1612608 5707104 1612656 5707056 1612048 5706984 1612568 5707144 -1612792 5706920 1611944 5706832 1611984 5706880 1612656 5707056 -1612608 5707104 1612552 5707384 1612992 5706984 1612656 5707056 -1612608 5707104 1612552 5707384 1612656 5707056 1612048 5706984 -1612992 5706984 1612848 5706920 1612656 5707056 1612552 5707384 -1612608 5707104 1612528 5707280 1612552 5707384 1612656 5707056 -1612552 5707384 1612584 5707488 1612992 5706984 1612656 5707056 -1612792 5706920 1612728 5706976 1612656 5707056 1612848 5706920 -1612656 5707056 1612992 5706984 1612848 5706920 1612728 5706976 -1612848 5706920 1612792 5706920 1612728 5706976 1612992 5706984 -1612728 5706976 1611984 5706880 1612656 5707056 1612992 5706984 -1612656 5707056 1612728 5706976 1611984 5706880 1612048 5706984 -1612656 5707056 1612728 5706976 1612048 5706984 1612608 5707104 -1612656 5707056 1612992 5706984 1612728 5706976 1612048 5706984 -1612656 5707056 1612552 5707384 1612992 5706984 1612728 5706976 -1611984 5706880 1612728 5706976 1612792 5706920 1611944 5706832 -1612728 5706976 1612792 5706920 1611984 5706880 1612048 5706984 -1612792 5706920 1611984 5706880 1612728 5706976 1612848 5706920 -1602224 5696056 1608312 5702496 1612848 5706920 1613096 5707024 -1602224 5696056 1608312 5702496 1613096 5707024 1613152 5707048 -1608312 5702496 1612848 5706920 1613096 5707024 1613152 5707048 -1602224 5696056 1608312 5702496 1613152 5707048 1601624 5681136 -1608312 5702496 1613096 5707024 1613152 5707048 1601624 5681136 -1613152 5707048 1614576 5707608 1601624 5681136 1608312 5702496 -1614576 5707608 1614648 5707656 1601624 5681136 1608312 5702496 -1601624 5681136 1602224 5696056 1608312 5702496 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1608312 5702496 -1613152 5707048 1614576 5707608 1608312 5702496 1613096 5707024 -1602224 5696056 1608312 5702496 1601624 5681136 1601592 5681216 -1608312 5702496 1614576 5707608 1601624 5681136 1601592 5681216 -1602224 5696056 1602504 5696992 1608312 5702496 1601592 5681216 -1608312 5702496 1602504 5696992 1612848 5706920 1613096 5707024 -1602504 5696992 1608312 5702496 1602224 5696056 1602224 5696096 -1602224 5696056 1608312 5702496 1601592 5681216 1602200 5696008 -1608312 5702496 1601624 5681136 1601592 5681216 1602200 5696008 -1602224 5696056 1602504 5696992 1608312 5702496 1602200 5696008 -1601592 5681216 1602160 5695928 1602200 5696008 1608312 5702496 -1601592 5681216 1601128 5681664 1602160 5695928 1608312 5702496 -1601592 5681216 1602160 5695928 1608312 5702496 1601624 5681136 -1602200 5696008 1602224 5696056 1608312 5702496 1602160 5695928 -1612848 5706920 1612992 5706984 1613096 5707024 1608312 5702496 -1612848 5706920 1608312 5702496 1602504 5696992 1604104 5700768 -1608312 5702496 1602224 5696056 1602504 5696992 1604104 5700768 -1612848 5706920 1613096 5707024 1608312 5702496 1604104 5700768 -1602504 5696992 1604056 5700696 1604104 5700768 1608312 5702496 -1602504 5696992 1604056 5700696 1608312 5702496 1602224 5696056 -1602504 5696992 1602504 5697056 1604056 5700696 1608312 5702496 -1604104 5700768 1612848 5706920 1608312 5702496 1604056 5700696 -1612848 5706920 1608312 5702496 1604104 5700768 1611832 5706704 -1612848 5706920 1608312 5702496 1611832 5706704 1612792 5706920 -1604104 5700768 1604152 5700872 1611832 5706704 1608312 5702496 -1604152 5700872 1611784 5706704 1611832 5706704 1608312 5702496 -1604152 5700872 1611784 5706704 1608312 5702496 1604104 5700768 -1612848 5706920 1613096 5707024 1608312 5702496 1611832 5706704 -1604152 5700872 1609424 5706616 1611784 5706704 1608312 5702496 -1604152 5700872 1609424 5706616 1608312 5702496 1604104 5700768 -1604152 5700872 1604160 5700992 1609424 5706616 1608312 5702496 -1604152 5700872 1604160 5700992 1608312 5702496 1604104 5700768 -1611784 5706704 1611832 5706704 1608312 5702496 1609424 5706616 -1609424 5706616 1611712 5706760 1611784 5706704 1608312 5702496 -1609424 5706616 1611784 5706704 1608312 5702496 1604160 5700992 -1604160 5700992 1604152 5701064 1609424 5706616 1608312 5702496 -1604152 5701064 1608680 5706648 1609424 5706616 1608312 5702496 -1604152 5701064 1608632 5706656 1608680 5706648 1608312 5702496 -1608680 5706648 1609424 5706616 1608312 5702496 1608632 5706656 -1604152 5701064 1604128 5701096 1608632 5706656 1608312 5702496 -1608632 5706656 1608680 5706648 1608312 5702496 1604128 5701096 -1604128 5701096 1604080 5701120 1608632 5706656 1608312 5702496 -1608632 5706656 1608680 5706648 1608312 5702496 1604080 5701120 -1604128 5701096 1604080 5701120 1608312 5702496 1604152 5701064 -1604080 5701120 1608592 5706712 1608632 5706656 1608312 5702496 -1608632 5706656 1608680 5706648 1608312 5702496 1608592 5706712 -1604080 5701120 1608568 5706784 1608592 5706712 1608312 5702496 -1604080 5701120 1608592 5706712 1608312 5702496 1604128 5701096 -1604160 5700992 1604152 5701064 1608312 5702496 1604152 5700872 -1609424 5706616 1611784 5706704 1608312 5702496 1608680 5706648 -1604152 5701064 1604128 5701096 1608312 5702496 1604160 5700992 -1608680 5706648 1608784 5706656 1609424 5706616 1608312 5702496 -1608680 5706648 1608784 5706656 1608312 5702496 1608632 5706656 -1609424 5706616 1611784 5706704 1608312 5702496 1608784 5706656 -1608784 5706656 1609352 5706640 1609424 5706616 1608312 5702496 -1608312 5702496 1604056 5700696 1604104 5700768 1604152 5700872 -1611832 5706704 1612848 5706920 1608312 5702496 1611784 5706704 -1602160 5695928 1608256 5702368 1601592 5681216 1601128 5681664 -1601592 5681216 1608256 5702368 1608312 5702496 1601624 5681136 -1608312 5702496 1614576 5707608 1601624 5681136 1608256 5702368 -1614576 5707608 1614648 5707656 1601624 5681136 1608256 5702368 -1608312 5702496 1613152 5707048 1614576 5707608 1608256 5702368 -1614576 5707608 1601624 5681136 1608256 5702368 1613152 5707048 -1613152 5707048 1613240 5707104 1614576 5707608 1608256 5702368 -1608312 5702496 1613096 5707024 1613152 5707048 1608256 5702368 -1608312 5702496 1612848 5706920 1613096 5707024 1608256 5702368 -1613096 5707024 1613152 5707048 1608256 5702368 1612848 5706920 -1613152 5707048 1614576 5707608 1608256 5702368 1613096 5707024 -1601592 5681216 1602160 5695928 1608256 5702368 1601624 5681136 -1601624 5681136 1601592 5681216 1608256 5702368 1614576 5707608 -1608256 5702368 1602160 5695928 1608312 5702496 1612848 5706920 -1608312 5702496 1611832 5706704 1612848 5706920 1608256 5702368 -1608312 5702496 1608256 5702368 1602160 5695928 1602200 5696008 -1608312 5702496 1612848 5706920 1608256 5702368 1602200 5696008 -1608256 5702368 1601592 5681216 1602160 5695928 1602200 5696008 -1608312 5702496 1608256 5702368 1602200 5696008 1602224 5696056 -1608312 5702496 1608256 5702368 1602224 5696056 1602504 5696992 -1608312 5702496 1608256 5702368 1602504 5696992 1604056 5700696 -1608256 5702368 1602224 5696056 1602504 5696992 1604056 5700696 -1608312 5702496 1612848 5706920 1608256 5702368 1604056 5700696 -1602504 5696992 1602504 5697056 1604056 5700696 1608256 5702368 -1602224 5696056 1602224 5696096 1602504 5696992 1608256 5702368 -1608256 5702368 1602200 5696008 1602224 5696056 1602504 5696992 -1608256 5702368 1602160 5695928 1602200 5696008 1602224 5696056 -1612848 5706920 1612992 5706984 1613096 5707024 1608256 5702368 -1608312 5702496 1608256 5702368 1604056 5700696 1604104 5700768 -1608256 5702368 1602504 5696992 1604056 5700696 1604104 5700768 -1608312 5702496 1612848 5706920 1608256 5702368 1604104 5700768 -1608312 5702496 1608256 5702368 1604104 5700768 1604152 5700872 -1608312 5702496 1608256 5702368 1604152 5700872 1604160 5700992 -1608312 5702496 1608256 5702368 1604160 5700992 1604152 5701064 -1608256 5702368 1604152 5700872 1604160 5700992 1604152 5701064 -1608312 5702496 1612848 5706920 1608256 5702368 1604152 5701064 -1608312 5702496 1608256 5702368 1604152 5701064 1604128 5701096 -1608312 5702496 1608256 5702368 1604128 5701096 1604080 5701120 -1608256 5702368 1604160 5700992 1604152 5701064 1604128 5701096 -1608312 5702496 1612848 5706920 1608256 5702368 1604128 5701096 -1608256 5702368 1604056 5700696 1604104 5700768 1604152 5700872 -1608256 5702368 1604104 5700768 1604152 5700872 1604160 5700992 -1601624 5681136 1608208 5702088 1614576 5707608 1614648 5707656 -1614576 5707608 1608208 5702088 1608256 5702368 1613152 5707048 -1614576 5707608 1608208 5702088 1613152 5707048 1613240 5707104 -1608256 5702368 1613096 5707024 1613152 5707048 1608208 5702088 -1613152 5707048 1614576 5707608 1608208 5702088 1613096 5707024 -1608256 5702368 1612848 5706920 1613096 5707024 1608208 5702088 -1608256 5702368 1608312 5702496 1612848 5706920 1608208 5702088 -1612848 5706920 1613096 5707024 1608208 5702088 1608312 5702496 -1613096 5707024 1613152 5707048 1608208 5702088 1612848 5706920 -1614576 5707608 1601624 5681136 1608208 5702088 1613152 5707048 -1608208 5702088 1601624 5681136 1608256 5702368 1608312 5702496 -1608256 5702368 1608208 5702088 1601624 5681136 1601592 5681216 -1608256 5702368 1608208 5702088 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1608208 5702088 -1608256 5702368 1608312 5702496 1608208 5702088 1602160 5695928 -1608208 5702088 1601624 5681136 1601592 5681216 1602160 5695928 -1608208 5702088 1614576 5707608 1601624 5681136 1601592 5681216 -1608312 5702496 1611832 5706704 1612848 5706920 1608208 5702088 -1608256 5702368 1608208 5702088 1602160 5695928 1602200 5696008 -1608208 5702088 1601592 5681216 1602160 5695928 1602200 5696008 -1608256 5702368 1608312 5702496 1608208 5702088 1602200 5696008 -1608256 5702368 1608208 5702088 1602200 5696008 1602224 5696056 -1608256 5702368 1608312 5702496 1608208 5702088 1602224 5696056 -1608208 5702088 1602160 5695928 1602200 5696008 1602224 5696056 -1608256 5702368 1608208 5702088 1602224 5696056 1602504 5696992 -1608256 5702368 1608312 5702496 1608208 5702088 1602504 5696992 -1608256 5702368 1608208 5702088 1602504 5696992 1604056 5700696 -1608256 5702368 1608312 5702496 1608208 5702088 1604056 5700696 -1608256 5702368 1608208 5702088 1604056 5700696 1604104 5700768 -1608256 5702368 1608312 5702496 1608208 5702088 1604104 5700768 -1608208 5702088 1602504 5696992 1604056 5700696 1604104 5700768 -1602504 5696992 1602504 5697056 1604056 5700696 1608208 5702088 -1604056 5700696 1604104 5700768 1608208 5702088 1602504 5697056 -1602224 5696056 1602224 5696096 1602504 5696992 1608208 5702088 -1608208 5702088 1602224 5696056 1602504 5696992 1602504 5697056 -1608208 5702088 1602200 5696008 1602224 5696056 1602504 5696992 -1612848 5706920 1612992 5706984 1613096 5707024 1608208 5702088 -1608256 5702368 1608208 5702088 1604104 5700768 1604152 5700872 -1608256 5702368 1608312 5702496 1608208 5702088 1604152 5700872 -1608208 5702088 1604056 5700696 1604104 5700768 1604152 5700872 -1602504 5697056 1603848 5700544 1604056 5700696 1608208 5702088 -1608256 5702368 1608208 5702088 1604152 5700872 1604160 5700992 -1608256 5702368 1608208 5702088 1604160 5700992 1604152 5701064 -1608256 5702368 1608208 5702088 1604152 5701064 1604128 5701096 -1608208 5702088 1604160 5700992 1604152 5701064 1604128 5701096 -1608256 5702368 1608312 5702496 1608208 5702088 1604128 5701096 -1608256 5702368 1608208 5702088 1604128 5701096 1608312 5702496 -1608208 5702088 1604104 5700768 1604152 5700872 1604160 5700992 -1608208 5702088 1604152 5700872 1604160 5700992 1604152 5701064 -1602160 5695928 1608160 5702000 1601592 5681216 1601128 5681664 -1608208 5702088 1608160 5702000 1602160 5695928 1602200 5696008 -1608160 5702000 1601592 5681216 1602160 5695928 1602200 5696008 -1601592 5681216 1608160 5702000 1608208 5702088 1601624 5681136 -1601592 5681216 1602160 5695928 1608160 5702000 1601624 5681136 -1608208 5702088 1614576 5707608 1601624 5681136 1608160 5702000 -1614576 5707608 1614648 5707656 1601624 5681136 1608160 5702000 -1608208 5702088 1613152 5707048 1614576 5707608 1608160 5702000 -1601624 5681136 1601592 5681216 1608160 5702000 1614576 5707608 -1608208 5702088 1614576 5707608 1608160 5702000 1602200 5696008 -1608208 5702088 1608160 5702000 1602200 5696008 1602224 5696056 -1608160 5702000 1602160 5695928 1602200 5696008 1602224 5696056 -1608208 5702088 1614576 5707608 1608160 5702000 1602224 5696056 -1608208 5702088 1608160 5702000 1602224 5696056 1602504 5696992 -1608208 5702088 1614576 5707608 1608160 5702000 1602504 5696992 -1608160 5702000 1602200 5696008 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1608160 5702000 -1608208 5702088 1608160 5702000 1602504 5696992 1602504 5697056 -1608208 5702088 1614576 5707608 1608160 5702000 1602504 5697056 -1608208 5702088 1608160 5702000 1602504 5697056 1604056 5700696 -1608208 5702088 1614576 5707608 1608160 5702000 1604056 5700696 -1608208 5702088 1608160 5702000 1604056 5700696 1604104 5700768 -1608208 5702088 1614576 5707608 1608160 5702000 1604104 5700768 -1608208 5702088 1608160 5702000 1604104 5700768 1604152 5700872 -1608208 5702088 1614576 5707608 1608160 5702000 1604152 5700872 -1608160 5702000 1604056 5700696 1604104 5700768 1604152 5700872 -1608160 5702000 1602504 5697056 1604056 5700696 1604104 5700768 -1608160 5702000 1602504 5696992 1602504 5697056 1604056 5700696 -1608160 5702000 1602224 5696056 1602504 5696992 1602504 5697056 -1608208 5702088 1608160 5702000 1604152 5700872 1604160 5700992 -1608208 5702088 1614576 5707608 1608160 5702000 1604160 5700992 -1608160 5702000 1604104 5700768 1604152 5700872 1604160 5700992 -1602504 5697056 1603848 5700544 1604056 5700696 1608160 5702000 -1608208 5702088 1608160 5702000 1604160 5700992 1604152 5701064 -1608208 5702088 1608160 5702000 1604152 5701064 1604128 5701096 -1608208 5702088 1608160 5702000 1604128 5701096 1608256 5702368 -1608160 5702000 1604152 5701064 1604128 5701096 1608256 5702368 -1608208 5702088 1614576 5707608 1608160 5702000 1608256 5702368 -1604128 5701096 1608312 5702496 1608256 5702368 1608160 5702000 -1608160 5702000 1604152 5700872 1604160 5700992 1604152 5701064 -1608160 5702000 1604160 5700992 1604152 5701064 1604128 5701096 -1601624 5681136 1608176 5701920 1614576 5707608 1614648 5707656 -1608160 5702000 1608176 5701920 1601624 5681136 1601592 5681216 -1608160 5702000 1614576 5707608 1608176 5701920 1601592 5681216 -1608160 5702000 1608176 5701920 1601592 5681216 1602160 5695928 -1608160 5702000 1614576 5707608 1608176 5701920 1602160 5695928 -1608176 5701920 1614576 5707608 1601624 5681136 1601592 5681216 -1608160 5702000 1608176 5701920 1602160 5695928 1602200 5696008 -1608160 5702000 1614576 5707608 1608176 5701920 1602200 5696008 -1608176 5701920 1601592 5681216 1602160 5695928 1602200 5696008 -1601592 5681216 1601128 5681664 1602160 5695928 1608176 5701920 -1608160 5702000 1608176 5701920 1602200 5696008 1602224 5696056 -1608160 5702000 1614576 5707608 1608176 5701920 1602224 5696056 -1608176 5701920 1602160 5695928 1602200 5696008 1602224 5696056 -1608176 5701920 1601624 5681136 1601592 5681216 1602160 5695928 -1614576 5707608 1608176 5701920 1608160 5702000 1608208 5702088 -1608176 5701920 1602224 5696056 1608160 5702000 1608208 5702088 -1614576 5707608 1601624 5681136 1608176 5701920 1608208 5702088 -1614576 5707608 1608176 5701920 1608208 5702088 1613152 5707048 -1614576 5707608 1601624 5681136 1608176 5701920 1613152 5707048 -1608208 5702088 1613096 5707024 1613152 5707048 1608176 5701920 -1614576 5707608 1608176 5701920 1613152 5707048 1613240 5707104 -1608208 5702088 1612848 5706920 1613096 5707024 1608176 5701920 -1613096 5707024 1613152 5707048 1608176 5701920 1612848 5706920 -1608208 5702088 1608312 5702496 1612848 5706920 1608176 5701920 -1608208 5702088 1608256 5702368 1608312 5702496 1608176 5701920 -1612848 5706920 1613096 5707024 1608176 5701920 1608312 5702496 -1613152 5707048 1614576 5707608 1608176 5701920 1613096 5707024 -1608176 5701920 1608160 5702000 1608208 5702088 1608312 5702496 -1608312 5702496 1611832 5706704 1612848 5706920 1608176 5701920 -1608160 5702000 1608176 5701920 1602224 5696056 1602504 5696992 -1608160 5702000 1608208 5702088 1608176 5701920 1602504 5696992 -1608176 5701920 1602200 5696008 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1608176 5701920 -1608160 5702000 1608176 5701920 1602504 5696992 1602504 5697056 -1608160 5702000 1608208 5702088 1608176 5701920 1602504 5697056 -1608176 5701920 1602224 5696056 1602504 5696992 1602504 5697056 -1608160 5702000 1608176 5701920 1602504 5697056 1604056 5700696 -1608160 5702000 1608208 5702088 1608176 5701920 1604056 5700696 -1608160 5702000 1608176 5701920 1604056 5700696 1604104 5700768 -1608160 5702000 1608208 5702088 1608176 5701920 1604104 5700768 -1608160 5702000 1608176 5701920 1604104 5700768 1604152 5700872 -1608160 5702000 1608208 5702088 1608176 5701920 1604152 5700872 -1608160 5702000 1608176 5701920 1604152 5700872 1604160 5700992 -1608160 5702000 1608208 5702088 1608176 5701920 1604160 5700992 -1608176 5701920 1604104 5700768 1604152 5700872 1604160 5700992 -1608176 5701920 1604056 5700696 1604104 5700768 1604152 5700872 -1608176 5701920 1602504 5697056 1604056 5700696 1604104 5700768 -1608176 5701920 1602504 5696992 1602504 5697056 1604056 5700696 -1612848 5706920 1612992 5706984 1613096 5707024 1608176 5701920 -1608160 5702000 1608176 5701920 1604160 5700992 1604152 5701064 -1608160 5702000 1608208 5702088 1608176 5701920 1604152 5701064 -1608176 5701920 1604152 5700872 1604160 5700992 1604152 5701064 -1602504 5697056 1603848 5700544 1604056 5700696 1608176 5701920 -1608160 5702000 1608176 5701920 1604152 5701064 1604128 5701096 -1608176 5701920 1608272 5701896 1601624 5681136 1601592 5681216 -1614576 5707608 1608272 5701896 1608176 5701920 1613152 5707048 -1601624 5681136 1608272 5701896 1614576 5707608 1614648 5707656 -1614576 5707608 1608272 5701896 1613152 5707048 1613240 5707104 -1608176 5701920 1613096 5707024 1613152 5707048 1608272 5701896 -1613152 5707048 1614576 5707608 1608272 5701896 1613096 5707024 -1608176 5701920 1612848 5706920 1613096 5707024 1608272 5701896 -1608176 5701920 1608312 5702496 1612848 5706920 1608272 5701896 -1612848 5706920 1613096 5707024 1608272 5701896 1608312 5702496 -1608176 5701920 1608208 5702088 1608312 5702496 1608272 5701896 -1608208 5702088 1608256 5702368 1608312 5702496 1608272 5701896 -1608208 5702088 1608256 5702368 1608272 5701896 1608176 5701920 -1608312 5702496 1612848 5706920 1608272 5701896 1608256 5702368 -1613096 5707024 1613152 5707048 1608272 5701896 1612848 5706920 -1614576 5707608 1614648 5707656 1608272 5701896 1613152 5707048 -1608176 5701920 1608272 5701896 1601592 5681216 1602160 5695928 -1608176 5701920 1608272 5701896 1602160 5695928 1602200 5696008 -1608272 5701896 1601624 5681136 1601592 5681216 1602160 5695928 -1608176 5701920 1608272 5701896 1602200 5696008 1602224 5696056 -1608272 5701896 1602160 5695928 1602200 5696008 1602224 5696056 -1601592 5681216 1601128 5681664 1602160 5695928 1608272 5701896 -1608176 5701920 1608272 5701896 1602224 5696056 1602504 5696992 -1608272 5701896 1602200 5696008 1602224 5696056 1602504 5696992 -1608272 5701896 1601592 5681216 1602160 5695928 1602200 5696008 -1608176 5701920 1608208 5702088 1608272 5701896 1602504 5696992 -1608272 5701896 1614648 5707656 1601624 5681136 1601592 5681216 -1608176 5701920 1608160 5702000 1608208 5702088 1608272 5701896 -1608208 5702088 1608256 5702368 1608272 5701896 1608160 5702000 -1608176 5701920 1608160 5702000 1608272 5701896 1602504 5696992 -1608312 5702496 1611832 5706704 1612848 5706920 1608272 5701896 -1611832 5706704 1612792 5706920 1612848 5706920 1608272 5701896 -1612848 5706920 1613096 5707024 1608272 5701896 1611832 5706704 -1608312 5702496 1611832 5706704 1608272 5701896 1608256 5702368 -1608176 5701920 1608272 5701896 1602504 5696992 1602504 5697056 -1608272 5701896 1602224 5696056 1602504 5696992 1602504 5697056 -1608176 5701920 1608160 5702000 1608272 5701896 1602504 5697056 -1602224 5696056 1602224 5696096 1602504 5696992 1608272 5701896 -1601624 5681136 1608272 5701896 1614648 5707656 1614680 5707680 -1608176 5701920 1608272 5701896 1602504 5697056 1604056 5700696 -1608176 5701920 1608160 5702000 1608272 5701896 1604056 5700696 -1608272 5701896 1602504 5696992 1602504 5697056 1604056 5700696 -1608176 5701920 1608272 5701896 1604056 5700696 1604104 5700768 -1612848 5706920 1612992 5706984 1613096 5707024 1608272 5701896 -1602504 5697056 1603848 5700544 1604056 5700696 1608272 5701896 -1608312 5702496 1611784 5706704 1611832 5706704 1608272 5701896 -1614648 5707656 1608464 5701920 1608272 5701896 1614576 5707608 -1608272 5701896 1613152 5707048 1614576 5707608 1608464 5701920 -1608272 5701896 1613096 5707024 1613152 5707048 1608464 5701920 -1614576 5707608 1614648 5707656 1608464 5701920 1613152 5707048 -1613152 5707048 1613240 5707104 1614576 5707608 1608464 5701920 -1608272 5701896 1612848 5706920 1613096 5707024 1608464 5701920 -1613096 5707024 1613152 5707048 1608464 5701920 1612848 5706920 -1608272 5701896 1611832 5706704 1612848 5706920 1608464 5701920 -1611832 5706704 1612792 5706920 1612848 5706920 1608464 5701920 -1612848 5706920 1613096 5707024 1608464 5701920 1611832 5706704 -1613152 5707048 1614576 5707608 1608464 5701920 1613096 5707024 -1614648 5707656 1601624 5681136 1608464 5701920 1614576 5707608 -1608272 5701896 1608464 5701920 1601624 5681136 1601592 5681216 -1608272 5701896 1608464 5701920 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1608464 5701920 -1608272 5701896 1608464 5701920 1602160 5695928 1602200 5696008 -1608272 5701896 1608464 5701920 1602200 5696008 1602224 5696056 -1608464 5701920 1601592 5681216 1602160 5695928 1602200 5696008 -1608272 5701896 1608464 5701920 1602224 5696056 1602504 5696992 -1608464 5701920 1602200 5696008 1602224 5696056 1602504 5696992 -1608272 5701896 1608464 5701920 1602504 5696992 1602504 5697056 -1608464 5701920 1602160 5695928 1602200 5696008 1602224 5696056 -1608464 5701920 1601624 5681136 1601592 5681216 1602160 5695928 -1608272 5701896 1608312 5702496 1611832 5706704 1608464 5701920 -1611832 5706704 1612848 5706920 1608464 5701920 1608312 5702496 -1608272 5701896 1608256 5702368 1608312 5702496 1608464 5701920 -1608272 5701896 1608208 5702088 1608256 5702368 1608464 5701920 -1608272 5701896 1608160 5702000 1608208 5702088 1608464 5701920 -1608256 5702368 1608312 5702496 1608464 5701920 1608208 5702088 -1608312 5702496 1611832 5706704 1608464 5701920 1608256 5702368 -1602224 5696056 1602224 5696096 1602504 5696992 1608464 5701920 -1601624 5681136 1608464 5701920 1614648 5707656 1614680 5707680 -1612848 5706920 1612992 5706984 1613096 5707024 1608464 5701920 -1608464 5701920 1602504 5696992 1608272 5701896 1608208 5702088 -1608464 5701920 1614648 5707656 1601624 5681136 1601592 5681216 -1608312 5702496 1611784 5706704 1611832 5706704 1608464 5701920 -1614648 5707656 1608624 5701952 1608464 5701920 1614576 5707608 -1608464 5701920 1613152 5707048 1614576 5707608 1608624 5701952 -1613152 5707048 1613240 5707104 1614576 5707608 1608624 5701952 -1608464 5701920 1613096 5707024 1613152 5707048 1608624 5701952 -1608464 5701920 1612848 5706920 1613096 5707024 1608624 5701952 -1613152 5707048 1614576 5707608 1608624 5701952 1613096 5707024 -1608464 5701920 1611832 5706704 1612848 5706920 1608624 5701952 -1611832 5706704 1612792 5706920 1612848 5706920 1608624 5701952 -1612848 5706920 1613096 5707024 1608624 5701952 1611832 5706704 -1608464 5701920 1608312 5702496 1611832 5706704 1608624 5701952 -1611832 5706704 1612848 5706920 1608624 5701952 1608312 5702496 -1613096 5707024 1613152 5707048 1608624 5701952 1612848 5706920 -1614576 5707608 1614648 5707656 1608624 5701952 1613152 5707048 -1608624 5701952 1601624 5681136 1608464 5701920 1608312 5702496 -1614648 5707656 1601624 5681136 1608624 5701952 1614576 5707608 -1608464 5701920 1608256 5702368 1608312 5702496 1608624 5701952 -1608312 5702496 1611832 5706704 1608624 5701952 1608256 5702368 -1608464 5701920 1608208 5702088 1608256 5702368 1608624 5701952 -1608464 5701920 1608256 5702368 1608624 5701952 1601624 5681136 -1601624 5681136 1608624 5701952 1614648 5707656 1614680 5707680 -1612848 5706920 1612992 5706984 1613096 5707024 1608624 5701952 -1608464 5701920 1608624 5701952 1601624 5681136 1601592 5681216 -1608464 5701920 1608256 5702368 1608624 5701952 1601592 5681216 -1608624 5701952 1614648 5707656 1601624 5681136 1601592 5681216 -1608464 5701920 1608624 5701952 1601592 5681216 1602160 5695928 -1608464 5701920 1608624 5701952 1602160 5695928 1602200 5696008 -1601592 5681216 1601128 5681664 1602160 5695928 1608624 5701952 -1608464 5701920 1608256 5702368 1608624 5701952 1602200 5696008 -1608464 5701920 1608624 5701952 1602200 5696008 1602224 5696056 -1608464 5701920 1608624 5701952 1602224 5696056 1602504 5696992 -1608624 5701952 1602160 5695928 1602200 5696008 1602224 5696056 -1608464 5701920 1608256 5702368 1608624 5701952 1602224 5696056 -1608624 5701952 1601592 5681216 1602160 5695928 1602200 5696008 -1608624 5701952 1601624 5681136 1601592 5681216 1602160 5695928 -1608312 5702496 1611784 5706704 1611832 5706704 1608624 5701952 -1608312 5702496 1611784 5706704 1608624 5701952 1608256 5702368 -1611832 5706704 1612848 5706920 1608624 5701952 1611784 5706704 -1608312 5702496 1609424 5706616 1611784 5706704 1608624 5701952 -1608624 5701952 1608728 5702016 1601624 5681136 1601592 5681216 -1614648 5707656 1608728 5702016 1608624 5701952 1614576 5707608 -1614648 5707656 1601624 5681136 1608728 5702016 1614576 5707608 -1608624 5701952 1613152 5707048 1614576 5707608 1608728 5702016 -1608624 5701952 1613096 5707024 1613152 5707048 1608728 5702016 -1613152 5707048 1613240 5707104 1614576 5707608 1608728 5702016 -1608624 5701952 1612848 5706920 1613096 5707024 1608728 5702016 -1608624 5701952 1611832 5706704 1612848 5706920 1608728 5702016 -1611832 5706704 1612792 5706920 1612848 5706920 1608728 5702016 -1613096 5707024 1613152 5707048 1608728 5702016 1612848 5706920 -1608624 5701952 1611784 5706704 1611832 5706704 1608728 5702016 -1611832 5706704 1612848 5706920 1608728 5702016 1611784 5706704 -1612848 5706920 1613096 5707024 1608728 5702016 1611832 5706704 -1613152 5707048 1614576 5707608 1608728 5702016 1613096 5707024 -1608728 5702016 1601624 5681136 1608624 5701952 1611784 5706704 -1614576 5707608 1614648 5707656 1608728 5702016 1613152 5707048 -1601624 5681136 1608728 5702016 1614648 5707656 1614680 5707680 -1612848 5706920 1612992 5706984 1613096 5707024 1608728 5702016 -1608624 5701952 1608312 5702496 1611784 5706704 1608728 5702016 -1608624 5701952 1608256 5702368 1608312 5702496 1608728 5702016 -1611784 5706704 1611832 5706704 1608728 5702016 1608312 5702496 -1608624 5701952 1608256 5702368 1608728 5702016 1601624 5681136 -1608312 5702496 1609424 5706616 1611784 5706704 1608728 5702016 -1611784 5706704 1611832 5706704 1608728 5702016 1609424 5706616 -1608624 5701952 1608464 5701920 1608256 5702368 1608728 5702016 -1609424 5706616 1611712 5706760 1611784 5706704 1608728 5702016 -1608312 5702496 1608784 5706656 1609424 5706616 1608728 5702016 -1608312 5702496 1609424 5706616 1608728 5702016 1608256 5702368 -1608728 5702016 1608856 5702128 1601624 5681136 1608624 5701952 -1614648 5707656 1608856 5702128 1608728 5702016 1614576 5707608 -1608856 5702128 1601624 5681136 1608728 5702016 1614576 5707608 -1614648 5707656 1601624 5681136 1608856 5702128 1614576 5707608 -1608728 5702016 1613152 5707048 1614576 5707608 1608856 5702128 -1608728 5702016 1613152 5707048 1608856 5702128 1601624 5681136 -1614576 5707608 1614648 5707656 1608856 5702128 1613152 5707048 -1613152 5707048 1613240 5707104 1614576 5707608 1608856 5702128 -1608728 5702016 1613096 5707024 1613152 5707048 1608856 5702128 -1608728 5702016 1613096 5707024 1608856 5702128 1601624 5681136 -1608728 5702016 1612848 5706920 1613096 5707024 1608856 5702128 -1608728 5702016 1612848 5706920 1608856 5702128 1601624 5681136 -1608728 5702016 1611832 5706704 1612848 5706920 1608856 5702128 -1611832 5706704 1612792 5706920 1612848 5706920 1608856 5702128 -1608728 5702016 1611832 5706704 1608856 5702128 1601624 5681136 -1608728 5702016 1611784 5706704 1611832 5706704 1608856 5702128 -1608728 5702016 1611784 5706704 1608856 5702128 1601624 5681136 -1612848 5706920 1613096 5707024 1608856 5702128 1611832 5706704 -1608728 5702016 1609424 5706616 1611784 5706704 1608856 5702128 -1608728 5702016 1609424 5706616 1608856 5702128 1601624 5681136 -1611784 5706704 1611832 5706704 1608856 5702128 1609424 5706616 -1611832 5706704 1612848 5706920 1608856 5702128 1611784 5706704 -1613096 5707024 1613152 5707048 1608856 5702128 1612848 5706920 -1613152 5707048 1614576 5707608 1608856 5702128 1613096 5707024 -1608728 5702016 1608312 5702496 1609424 5706616 1608856 5702128 -1608728 5702016 1608312 5702496 1608856 5702128 1601624 5681136 -1609424 5706616 1611784 5706704 1608856 5702128 1608312 5702496 -1609424 5706616 1611712 5706760 1611784 5706704 1608856 5702128 -1608312 5702496 1608784 5706656 1609424 5706616 1608856 5702128 -1601624 5681136 1608856 5702128 1614648 5707656 1614680 5707680 -1612848 5706920 1612992 5706984 1613096 5707024 1608856 5702128 -1608728 5702016 1608256 5702368 1608312 5702496 1608856 5702128 -1608856 5702128 1608976 5702256 1614576 5707608 1614648 5707656 -1608856 5702128 1608976 5702256 1614648 5707656 1601624 5681136 -1608856 5702128 1608976 5702256 1601624 5681136 1608728 5702016 -1608976 5702256 1614576 5707608 1614648 5707656 1601624 5681136 -1614576 5707608 1608976 5702256 1613152 5707048 1613240 5707104 -1613152 5707048 1608976 5702256 1608856 5702128 1613096 5707024 -1613152 5707048 1614576 5707608 1608976 5702256 1613096 5707024 -1608856 5702128 1612848 5706920 1613096 5707024 1608976 5702256 -1608856 5702128 1611832 5706704 1612848 5706920 1608976 5702256 -1611832 5706704 1612792 5706920 1612848 5706920 1608976 5702256 -1608856 5702128 1611784 5706704 1611832 5706704 1608976 5702256 -1608856 5702128 1609424 5706616 1611784 5706704 1608976 5702256 -1611832 5706704 1612848 5706920 1608976 5702256 1611784 5706704 -1608856 5702128 1608312 5702496 1609424 5706616 1608976 5702256 -1609424 5706616 1611784 5706704 1608976 5702256 1608312 5702496 -1611784 5706704 1611832 5706704 1608976 5702256 1609424 5706616 -1612848 5706920 1613096 5707024 1608976 5702256 1611832 5706704 -1613096 5707024 1613152 5707048 1608976 5702256 1612848 5706920 -1608856 5702128 1608728 5702016 1608312 5702496 1608976 5702256 -1609424 5706616 1611712 5706760 1611784 5706704 1608976 5702256 -1608312 5702496 1608784 5706656 1609424 5706616 1608976 5702256 -1614648 5707656 1614680 5707680 1601624 5681136 1608976 5702256 -1612848 5706920 1612992 5706984 1613096 5707024 1608976 5702256 -1608856 5702128 1608312 5702496 1608976 5702256 1601624 5681136 -1608976 5702256 1613152 5707048 1614576 5707608 1614648 5707656 -1609424 5706616 1609064 5702472 1608976 5702256 1608312 5702496 -1609424 5706616 1611784 5706704 1609064 5702472 1608312 5702496 -1608976 5702256 1608856 5702128 1608312 5702496 1609064 5702472 -1608976 5702256 1609064 5702472 1611784 5706704 1611832 5706704 -1609064 5702472 1609424 5706616 1611784 5706704 1611832 5706704 -1608976 5702256 1609064 5702472 1611832 5706704 1612848 5706920 -1611832 5706704 1612792 5706920 1612848 5706920 1609064 5702472 -1609064 5702472 1611784 5706704 1611832 5706704 1612848 5706920 -1608976 5702256 1609064 5702472 1612848 5706920 1613096 5707024 -1609064 5702472 1611832 5706704 1612848 5706920 1613096 5707024 -1608976 5702256 1609064 5702472 1613096 5707024 1613152 5707048 -1608976 5702256 1609064 5702472 1613152 5707048 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1609064 5702472 -1609064 5702472 1612848 5706920 1613096 5707024 1613152 5707048 -1609064 5702472 1613096 5707024 1613152 5707048 1614576 5707608 -1611784 5706704 1609064 5702472 1609424 5706616 1611712 5706760 -1609424 5706616 1609064 5702472 1608312 5702496 1608784 5706656 -1609064 5702472 1608976 5702256 1608312 5702496 1608784 5706656 -1609424 5706616 1611784 5706704 1609064 5702472 1608784 5706656 -1612848 5706920 1612992 5706984 1613096 5707024 1609064 5702472 -1608312 5702496 1608680 5706648 1608784 5706656 1609064 5702472 -1608312 5702496 1608680 5706648 1609064 5702472 1608976 5702256 -1608312 5702496 1608632 5706656 1608680 5706648 1609064 5702472 -1608784 5706656 1609424 5706616 1609064 5702472 1608680 5706648 -1608976 5702256 1609064 5702472 1614576 5707608 1614648 5707656 -1609064 5702472 1614576 5707608 1608976 5702256 1608312 5702496 -1609424 5706616 1609064 5702472 1608784 5706656 1609352 5706640 -1609064 5702472 1609168 5702648 1611784 5706704 1611832 5706704 -1609064 5702472 1609424 5706616 1609168 5702648 1611832 5706704 -1609424 5706616 1609168 5702648 1609064 5702472 1608784 5706656 -1609168 5702648 1611832 5706704 1609064 5702472 1608784 5706656 -1609168 5702648 1609424 5706616 1611784 5706704 1611832 5706704 -1609424 5706616 1611784 5706704 1609168 5702648 1608784 5706656 -1609064 5702472 1609168 5702648 1611832 5706704 1612848 5706920 -1611832 5706704 1612792 5706920 1612848 5706920 1609168 5702648 -1609168 5702648 1611784 5706704 1611832 5706704 1612848 5706920 -1609064 5702472 1608784 5706656 1609168 5702648 1612848 5706920 -1609064 5702472 1609168 5702648 1612848 5706920 1613096 5707024 -1609064 5702472 1608784 5706656 1609168 5702648 1613096 5707024 -1609168 5702648 1611832 5706704 1612848 5706920 1613096 5707024 -1609064 5702472 1609168 5702648 1613096 5707024 1613152 5707048 -1609064 5702472 1608784 5706656 1609168 5702648 1613152 5707048 -1609168 5702648 1612848 5706920 1613096 5707024 1613152 5707048 -1609064 5702472 1609168 5702648 1613152 5707048 1614576 5707608 -1609064 5702472 1609168 5702648 1614576 5707608 1608976 5702256 -1609064 5702472 1608784 5706656 1609168 5702648 1608976 5702256 -1613152 5707048 1613240 5707104 1614576 5707608 1609168 5702648 -1609168 5702648 1613096 5707024 1613152 5707048 1614576 5707608 -1609168 5702648 1613152 5707048 1614576 5707608 1608976 5702256 -1611784 5706704 1609168 5702648 1609424 5706616 1611712 5706760 -1609064 5702472 1608680 5706648 1608784 5706656 1609168 5702648 -1609064 5702472 1608680 5706648 1609168 5702648 1608976 5702256 -1608784 5706656 1609424 5706616 1609168 5702648 1608680 5706648 -1612848 5706920 1612992 5706984 1613096 5707024 1609168 5702648 -1609064 5702472 1608312 5702496 1608680 5706648 1609168 5702648 -1609064 5702472 1608976 5702256 1608312 5702496 1609168 5702648 -1609064 5702472 1608312 5702496 1609168 5702648 1608976 5702256 -1608312 5702496 1608632 5706656 1608680 5706648 1609168 5702648 -1608680 5706648 1608784 5706656 1609168 5702648 1608312 5702496 -1614576 5707608 1614648 5707656 1608976 5702256 1609168 5702648 -1609424 5706616 1609168 5702648 1608784 5706656 1609352 5706640 -1609168 5702648 1609232 5702704 1608976 5702256 1609064 5702472 -1609168 5702648 1614576 5707608 1609232 5702704 1609064 5702472 -1609232 5702704 1614576 5707608 1608976 5702256 1609064 5702472 -1614576 5707608 1609232 5702704 1609168 5702648 1613152 5707048 -1609232 5702704 1609064 5702472 1609168 5702648 1613152 5707048 -1614576 5707608 1608976 5702256 1609232 5702704 1613152 5707048 -1614576 5707608 1609232 5702704 1613152 5707048 1613240 5707104 -1609168 5702648 1613096 5707024 1613152 5707048 1609232 5702704 -1609168 5702648 1613096 5707024 1609232 5702704 1609064 5702472 -1609168 5702648 1612848 5706920 1613096 5707024 1609232 5702704 -1609168 5702648 1612848 5706920 1609232 5702704 1609064 5702472 -1609168 5702648 1611832 5706704 1612848 5706920 1609232 5702704 -1611832 5706704 1612792 5706920 1612848 5706920 1609232 5702704 -1609168 5702648 1611784 5706704 1611832 5706704 1609232 5702704 -1609168 5702648 1611784 5706704 1609232 5702704 1609064 5702472 -1612848 5706920 1613096 5707024 1609232 5702704 1611832 5706704 -1609168 5702648 1609424 5706616 1611784 5706704 1609232 5702704 -1611784 5706704 1611832 5706704 1609232 5702704 1609424 5706616 -1609168 5702648 1609424 5706616 1609232 5702704 1609064 5702472 -1609168 5702648 1608784 5706656 1609424 5706616 1609232 5702704 -1609168 5702648 1608784 5706656 1609232 5702704 1609064 5702472 -1609424 5706616 1611784 5706704 1609232 5702704 1608784 5706656 -1609168 5702648 1608680 5706648 1608784 5706656 1609232 5702704 -1609168 5702648 1608680 5706648 1609232 5702704 1609064 5702472 -1608784 5706656 1609424 5706616 1609232 5702704 1608680 5706648 -1611832 5706704 1612848 5706920 1609232 5702704 1611784 5706704 -1613096 5707024 1613152 5707048 1609232 5702704 1612848 5706920 -1613152 5707048 1614576 5707608 1609232 5702704 1613096 5707024 -1609424 5706616 1611712 5706760 1611784 5706704 1609232 5702704 -1609168 5702648 1608312 5702496 1608680 5706648 1609232 5702704 -1608312 5702496 1608632 5706656 1608680 5706648 1609232 5702704 -1609168 5702648 1608312 5702496 1609232 5702704 1609064 5702472 -1608680 5706648 1608784 5706656 1609232 5702704 1608312 5702496 -1612848 5706920 1612992 5706984 1613096 5707024 1609232 5702704 -1609168 5702648 1609064 5702472 1608312 5702496 1609232 5702704 -1608976 5702256 1609232 5702704 1614576 5707608 1614648 5707656 -1608784 5706656 1609352 5706640 1609424 5706616 1609232 5702704 -1609232 5702704 1609408 5702768 1608976 5702256 1609064 5702472 -1609232 5702704 1609408 5702768 1609064 5702472 1609168 5702648 -1609408 5702768 1608976 5702256 1609064 5702472 1609168 5702648 -1609232 5702704 1614576 5707608 1609408 5702768 1609168 5702648 -1614576 5707608 1609408 5702768 1609232 5702704 1613152 5707048 -1609408 5702768 1609168 5702648 1609232 5702704 1613152 5707048 -1609408 5702768 1614576 5707608 1608976 5702256 1609064 5702472 -1614576 5707608 1608976 5702256 1609408 5702768 1613152 5707048 -1614576 5707608 1609408 5702768 1613152 5707048 1613240 5707104 -1609232 5702704 1613096 5707024 1613152 5707048 1609408 5702768 -1609232 5702704 1613096 5707024 1609408 5702768 1609168 5702648 -1613152 5707048 1614576 5707608 1609408 5702768 1613096 5707024 -1609232 5702704 1612848 5706920 1613096 5707024 1609408 5702768 -1609232 5702704 1612848 5706920 1609408 5702768 1609168 5702648 -1609232 5702704 1611832 5706704 1612848 5706920 1609408 5702768 -1611832 5706704 1612792 5706920 1612848 5706920 1609408 5702768 -1609232 5702704 1611832 5706704 1609408 5702768 1609168 5702648 -1609232 5702704 1611784 5706704 1611832 5706704 1609408 5702768 -1609232 5702704 1609424 5706616 1611784 5706704 1609408 5702768 -1609232 5702704 1609424 5706616 1609408 5702768 1609168 5702648 -1611832 5706704 1612848 5706920 1609408 5702768 1611784 5706704 -1609232 5702704 1608784 5706656 1609424 5706616 1609408 5702768 -1609424 5706616 1611784 5706704 1609408 5702768 1608784 5706656 -1609232 5702704 1608784 5706656 1609408 5702768 1609168 5702648 -1609232 5702704 1608680 5706648 1608784 5706656 1609408 5702768 -1609232 5702704 1608680 5706648 1609408 5702768 1609168 5702648 -1608784 5706656 1609424 5706616 1609408 5702768 1608680 5706648 -1609232 5702704 1608312 5702496 1608680 5706648 1609408 5702768 -1611784 5706704 1611832 5706704 1609408 5702768 1609424 5706616 -1612848 5706920 1613096 5707024 1609408 5702768 1611832 5706704 -1613096 5707024 1613152 5707048 1609408 5702768 1612848 5706920 -1609424 5706616 1611712 5706760 1611784 5706704 1609408 5702768 -1612848 5706920 1612992 5706984 1613096 5707024 1609408 5702768 -1608976 5702256 1609408 5702768 1614576 5707608 1614648 5707656 -1608976 5702256 1609408 5702768 1614648 5707656 1601624 5681136 -1608976 5702256 1609408 5702768 1601624 5681136 1608856 5702128 -1608976 5702256 1609064 5702472 1609408 5702768 1601624 5681136 -1609408 5702768 1613152 5707048 1614576 5707608 1614648 5707656 -1614648 5707656 1614680 5707680 1601624 5681136 1609408 5702768 -1609408 5702768 1614576 5707608 1614648 5707656 1601624 5681136 -1608784 5706656 1609352 5706640 1609424 5706616 1609408 5702768 -1613152 5707048 1609488 5702848 1609408 5702768 1613096 5707024 -1609488 5702848 1614576 5707608 1609408 5702768 1613096 5707024 -1609408 5702768 1609488 5702848 1614576 5707608 1614648 5707656 -1609408 5702768 1613096 5707024 1609488 5702848 1614648 5707656 -1609488 5702848 1613152 5707048 1614576 5707608 1614648 5707656 -1613152 5707048 1614576 5707608 1609488 5702848 1613096 5707024 -1614576 5707608 1609488 5702848 1613152 5707048 1613240 5707104 -1609408 5702768 1612848 5706920 1613096 5707024 1609488 5702848 -1613096 5707024 1613152 5707048 1609488 5702848 1612848 5706920 -1609408 5702768 1612848 5706920 1609488 5702848 1614648 5707656 -1609408 5702768 1611832 5706704 1612848 5706920 1609488 5702848 -1611832 5706704 1612792 5706920 1612848 5706920 1609488 5702848 -1609408 5702768 1611832 5706704 1609488 5702848 1614648 5707656 -1609408 5702768 1611784 5706704 1611832 5706704 1609488 5702848 -1609408 5702768 1611784 5706704 1609488 5702848 1614648 5707656 -1609408 5702768 1609424 5706616 1611784 5706704 1609488 5702848 -1609408 5702768 1608784 5706656 1609424 5706616 1609488 5702848 -1609408 5702768 1608784 5706656 1609488 5702848 1614648 5707656 -1611784 5706704 1611832 5706704 1609488 5702848 1609424 5706616 -1609408 5702768 1608680 5706648 1608784 5706656 1609488 5702848 -1608784 5706656 1609424 5706616 1609488 5702848 1608680 5706648 -1609408 5702768 1608680 5706648 1609488 5702848 1614648 5707656 -1609408 5702768 1609232 5702704 1608680 5706648 1609488 5702848 -1609408 5702768 1609232 5702704 1609488 5702848 1614648 5707656 -1608680 5706648 1608784 5706656 1609488 5702848 1609232 5702704 -1609232 5702704 1608312 5702496 1608680 5706648 1609488 5702848 -1609424 5706616 1611784 5706704 1609488 5702848 1608784 5706656 -1611832 5706704 1612848 5706920 1609488 5702848 1611784 5706704 -1612848 5706920 1613096 5707024 1609488 5702848 1611832 5706704 -1609424 5706616 1611712 5706760 1611784 5706704 1609488 5702848 -1612848 5706920 1612992 5706984 1613096 5707024 1609488 5702848 -1609408 5702768 1609488 5702848 1614648 5707656 1601624 5681136 -1609408 5702768 1609488 5702848 1601624 5681136 1608976 5702256 -1601624 5681136 1608856 5702128 1608976 5702256 1609488 5702848 -1609408 5702768 1609488 5702848 1608976 5702256 1609064 5702472 -1609408 5702768 1609232 5702704 1609488 5702848 1608976 5702256 -1609488 5702848 1614576 5707608 1614648 5707656 1601624 5681136 -1614648 5707656 1614680 5707680 1601624 5681136 1609488 5702848 -1609488 5702848 1614648 5707656 1601624 5681136 1608976 5702256 -1608784 5706656 1609352 5706640 1609424 5706616 1609488 5702848 -1609488 5702848 1609512 5702904 1611784 5706704 1611832 5706704 -1609488 5702848 1609424 5706616 1609512 5702904 1611832 5706704 -1609512 5702904 1609424 5706616 1611784 5706704 1611832 5706704 -1609424 5706616 1609512 5702904 1609488 5702848 1608784 5706656 -1609488 5702848 1608680 5706648 1608784 5706656 1609512 5702904 -1609424 5706616 1611784 5706704 1609512 5702904 1608784 5706656 -1609512 5702904 1611832 5706704 1609488 5702848 1608680 5706648 -1609488 5702848 1609232 5702704 1608680 5706648 1609512 5702904 -1608680 5706648 1608784 5706656 1609512 5702904 1609232 5702704 -1609488 5702848 1609232 5702704 1609512 5702904 1611832 5706704 -1609232 5702704 1608312 5702496 1608680 5706648 1609512 5702904 -1608680 5706648 1608784 5706656 1609512 5702904 1608312 5702496 -1608312 5702496 1608632 5706656 1608680 5706648 1609512 5702904 -1608312 5702496 1608592 5706712 1608632 5706656 1609512 5702904 -1608680 5706648 1608784 5706656 1609512 5702904 1608632 5706656 -1609232 5702704 1608312 5702496 1609512 5702904 1609488 5702848 -1608312 5702496 1608632 5706656 1609512 5702904 1609232 5702704 -1609488 5702848 1609408 5702768 1609232 5702704 1609512 5702904 -1609488 5702848 1609408 5702768 1609512 5702904 1611832 5706704 -1609232 5702704 1608312 5702496 1609512 5702904 1609408 5702768 -1608784 5706656 1609424 5706616 1609512 5702904 1608680 5706648 -1609488 5702848 1609512 5702904 1611832 5706704 1612848 5706920 -1611832 5706704 1612792 5706920 1612848 5706920 1609512 5702904 -1609488 5702848 1609408 5702768 1609512 5702904 1612848 5706920 -1609512 5702904 1611784 5706704 1611832 5706704 1612848 5706920 -1609488 5702848 1609512 5702904 1612848 5706920 1613096 5707024 -1609488 5702848 1609512 5702904 1613096 5707024 1613152 5707048 -1609488 5702848 1609408 5702768 1609512 5702904 1613152 5707048 -1609488 5702848 1609512 5702904 1613152 5707048 1614576 5707608 -1609512 5702904 1613096 5707024 1613152 5707048 1614576 5707608 -1609488 5702848 1609512 5702904 1614576 5707608 1614648 5707656 -1609488 5702848 1609408 5702768 1609512 5702904 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1609512 5702904 -1609512 5702904 1611832 5706704 1612848 5706920 1613096 5707024 -1609512 5702904 1612848 5706920 1613096 5707024 1613152 5707048 -1611784 5706704 1609512 5702904 1609424 5706616 1611712 5706760 -1609232 5702704 1609168 5702648 1608312 5702496 1609512 5702904 -1612848 5706920 1612992 5706984 1613096 5707024 1609512 5702904 -1609424 5706616 1609512 5702904 1608784 5706656 1609352 5706640 -1608632 5706656 1609480 5702960 1608312 5702496 1608592 5706712 -1609512 5702904 1609480 5702960 1608632 5706656 1608680 5706648 -1609512 5702904 1609480 5702960 1608680 5706648 1608784 5706656 -1609512 5702904 1608312 5702496 1609480 5702960 1608784 5706656 -1609480 5702960 1608312 5702496 1608632 5706656 1608680 5706648 -1609480 5702960 1608632 5706656 1608680 5706648 1608784 5706656 -1608312 5702496 1609480 5702960 1609512 5702904 1609232 5702704 -1609480 5702960 1608784 5706656 1609512 5702904 1609232 5702704 -1608312 5702496 1608632 5706656 1609480 5702960 1609232 5702704 -1609512 5702904 1609408 5702768 1609232 5702704 1609480 5702960 -1609512 5702904 1609408 5702768 1609480 5702960 1608784 5706656 -1609232 5702704 1608312 5702496 1609480 5702960 1609408 5702768 -1609512 5702904 1609488 5702848 1609408 5702768 1609480 5702960 -1609512 5702904 1609488 5702848 1609480 5702960 1608784 5706656 -1609408 5702768 1609232 5702704 1609480 5702960 1609488 5702848 -1609512 5702904 1609480 5702960 1608784 5706656 1609424 5706616 -1609480 5702960 1608680 5706648 1608784 5706656 1609424 5706616 -1609512 5702904 1609488 5702848 1609480 5702960 1609424 5706616 -1609512 5702904 1609480 5702960 1609424 5706616 1611784 5706704 -1609512 5702904 1609488 5702848 1609480 5702960 1611784 5706704 -1609512 5702904 1609480 5702960 1611784 5706704 1611832 5706704 -1609480 5702960 1608784 5706656 1609424 5706616 1611784 5706704 -1609424 5706616 1611712 5706760 1611784 5706704 1609480 5702960 -1608312 5702496 1609480 5702960 1609232 5702704 1609168 5702648 -1608784 5706656 1609352 5706640 1609424 5706616 1609480 5702960 -1608632 5706656 1609416 5703016 1608312 5702496 1608592 5706712 -1609480 5702960 1609416 5703016 1608632 5706656 1608680 5706648 -1609480 5702960 1608312 5702496 1609416 5703016 1608680 5706648 -1608312 5702496 1609416 5703016 1609480 5702960 1609232 5702704 -1609416 5703016 1608680 5706648 1609480 5702960 1609232 5702704 -1609480 5702960 1609416 5703016 1608680 5706648 1608784 5706656 -1609480 5702960 1609416 5703016 1608784 5706656 1609424 5706616 -1609416 5703016 1608632 5706656 1608680 5706648 1608784 5706656 -1609480 5702960 1609232 5702704 1609416 5703016 1609424 5706616 -1609416 5703016 1608680 5706648 1608784 5706656 1609424 5706616 -1609480 5702960 1609408 5702768 1609232 5702704 1609416 5703016 -1609480 5702960 1609408 5702768 1609416 5703016 1609424 5706616 -1609232 5702704 1608312 5702496 1609416 5703016 1609408 5702768 -1609480 5702960 1609488 5702848 1609408 5702768 1609416 5703016 -1609480 5702960 1609488 5702848 1609416 5703016 1609424 5706616 -1609408 5702768 1609232 5702704 1609416 5703016 1609488 5702848 -1609480 5702960 1609512 5702904 1609488 5702848 1609416 5703016 -1609480 5702960 1609416 5703016 1609424 5706616 1611784 5706704 -1609416 5703016 1608784 5706656 1609424 5706616 1611784 5706704 -1609480 5702960 1609416 5703016 1611784 5706704 1609512 5702904 -1609480 5702960 1609488 5702848 1609416 5703016 1611784 5706704 -1609424 5706616 1611712 5706760 1611784 5706704 1609416 5703016 -1608312 5702496 1609416 5703016 1609232 5702704 1609168 5702648 -1609416 5703016 1609408 5702768 1609232 5702704 1609168 5702648 -1608312 5702496 1609416 5703016 1609168 5702648 1609064 5702472 -1608784 5706656 1609352 5706640 1609424 5706616 1609416 5703016 -1609416 5703016 1608312 5702496 1608632 5706656 1608680 5706648 -1608312 5702496 1608632 5706656 1609416 5703016 1609168 5702648 -1608632 5706656 1609320 5703064 1608312 5702496 1608592 5706712 -1609416 5703016 1609320 5703064 1608632 5706656 1608680 5706648 -1609416 5703016 1609320 5703064 1608680 5706648 1608784 5706656 -1609416 5703016 1609320 5703064 1608784 5706656 1609424 5706616 -1609416 5703016 1609320 5703064 1609424 5706616 1611784 5706704 -1609320 5703064 1608680 5706648 1608784 5706656 1609424 5706616 -1608784 5706656 1609352 5706640 1609424 5706616 1609320 5703064 -1609320 5703064 1608632 5706656 1608680 5706648 1608784 5706656 -1609416 5703016 1608312 5702496 1609320 5703064 1609424 5706616 -1608312 5702496 1609320 5703064 1609416 5703016 1609168 5702648 -1608312 5702496 1608632 5706656 1609320 5703064 1609168 5702648 -1609416 5703016 1609232 5702704 1609168 5702648 1609320 5703064 -1609416 5703016 1609408 5702768 1609232 5702704 1609320 5703064 -1609416 5703016 1609488 5702848 1609408 5702768 1609320 5703064 -1609232 5702704 1609168 5702648 1609320 5703064 1609408 5702768 -1608312 5702496 1609320 5703064 1609168 5702648 1609064 5702472 -1609320 5703064 1609424 5706616 1609416 5703016 1609408 5702768 -1609168 5702648 1608312 5702496 1609320 5703064 1609232 5702704 -1609320 5703064 1608312 5702496 1608632 5706656 1608680 5706648 -1608632 5706656 1609176 5703048 1608312 5702496 1608592 5706712 -1608312 5702496 1609176 5703048 1609320 5703064 1609168 5702648 -1608312 5702496 1608632 5706656 1609176 5703048 1609168 5702648 -1608312 5702496 1609176 5703048 1609168 5702648 1609064 5702472 -1609320 5703064 1609232 5702704 1609168 5702648 1609176 5703048 -1609168 5702648 1608312 5702496 1609176 5703048 1609232 5702704 -1609320 5703064 1609408 5702768 1609232 5702704 1609176 5703048 -1609320 5703064 1609416 5703016 1609408 5702768 1609176 5703048 -1609232 5702704 1609168 5702648 1609176 5703048 1609408 5702768 -1609320 5703064 1609176 5703048 1608632 5706656 1608680 5706648 -1609176 5703048 1608312 5702496 1608632 5706656 1608680 5706648 -1609320 5703064 1609176 5703048 1608680 5706648 1608784 5706656 -1609320 5703064 1609176 5703048 1608784 5706656 1609424 5706616 -1609320 5703064 1609176 5703048 1609424 5706616 1609416 5703016 -1608784 5706656 1609352 5706640 1609424 5706616 1609176 5703048 -1609176 5703048 1608680 5706648 1608784 5706656 1609424 5706616 -1609176 5703048 1608632 5706656 1608680 5706648 1608784 5706656 -1609176 5703048 1609424 5706616 1609320 5703064 1609408 5702768 -1608632 5706656 1608928 5702904 1608312 5702496 1608592 5706712 -1608312 5702496 1608928 5702904 1609176 5703048 1609168 5702648 -1608312 5702496 1608632 5706656 1608928 5702904 1609168 5702648 -1609176 5703048 1609232 5702704 1609168 5702648 1608928 5702904 -1609168 5702648 1608312 5702496 1608928 5702904 1609232 5702704 -1609176 5703048 1608928 5702904 1608632 5706656 1608680 5706648 -1608928 5702904 1608632 5706656 1609176 5703048 1609232 5702704 -1608312 5702496 1608928 5702904 1609168 5702648 1609064 5702472 -1608312 5702496 1608928 5702904 1609064 5702472 1608976 5702256 -1608312 5702496 1608632 5706656 1608928 5702904 1609064 5702472 -1608928 5702904 1609232 5702704 1609168 5702648 1609064 5702472 -1609176 5703048 1609408 5702768 1609232 5702704 1608928 5702904 -1608632 5706656 1608688 5702816 1608312 5702496 1608592 5706712 -1608312 5702496 1608688 5702816 1608928 5702904 1609064 5702472 -1608312 5702496 1608688 5702816 1609064 5702472 1608976 5702256 -1608312 5702496 1608632 5706656 1608688 5702816 1608976 5702256 -1608688 5702816 1608928 5702904 1609064 5702472 1608976 5702256 -1608312 5702496 1608688 5702816 1608976 5702256 1608856 5702128 -1608928 5702904 1608688 5702816 1608632 5706656 1609176 5703048 -1608688 5702816 1608312 5702496 1608632 5706656 1609176 5703048 -1608688 5702816 1609176 5703048 1608928 5702904 1609064 5702472 -1608632 5706656 1608680 5706648 1609176 5703048 1608688 5702816 -1608928 5702904 1609168 5702648 1609064 5702472 1608688 5702816 -1608632 5706656 1608424 5702616 1608312 5702496 1608592 5706712 -1608312 5702496 1608424 5702616 1608688 5702816 1608976 5702256 -1608688 5702816 1609064 5702472 1608976 5702256 1608424 5702616 -1608976 5702256 1608312 5702496 1608424 5702616 1609064 5702472 -1608312 5702496 1608632 5706656 1608424 5702616 1608976 5702256 -1608688 5702816 1608928 5702904 1609064 5702472 1608424 5702616 -1608688 5702816 1608424 5702616 1608632 5706656 1609176 5703048 -1608424 5702616 1608632 5706656 1608688 5702816 1609064 5702472 -1608312 5702496 1608424 5702616 1608976 5702256 1608856 5702128 -1608424 5702616 1609064 5702472 1608976 5702256 1608856 5702128 -1608312 5702496 1608632 5706656 1608424 5702616 1608856 5702128 -1608312 5702496 1608424 5702616 1608856 5702128 1608728 5702016 -1609488 5702848 1608256 5699504 1608976 5702256 1609408 5702768 -1608976 5702256 1608256 5699504 1601624 5681136 1608856 5702128 -1601624 5681136 1608728 5702016 1608856 5702128 1608256 5699504 -1601624 5681136 1608624 5701952 1608728 5702016 1608256 5699504 -1608728 5702016 1608856 5702128 1608256 5699504 1608624 5701952 -1608856 5702128 1608976 5702256 1608256 5699504 1608728 5702016 -1608256 5699504 1609488 5702848 1601624 5681136 1608624 5701952 -1609488 5702848 1601624 5681136 1608256 5699504 1609408 5702768 -1608256 5699504 1608856 5702128 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1608256 5699504 -1601624 5681136 1601592 5681216 1608624 5701952 1608256 5699504 -1608624 5701952 1608728 5702016 1608256 5699504 1601592 5681216 -1601624 5681136 1601592 5681216 1608256 5699504 1609488 5702848 -1601592 5681216 1602160 5695928 1608624 5701952 1608256 5699504 -1608624 5701952 1608728 5702016 1608256 5699504 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1608256 5699504 -1601592 5681216 1602160 5695928 1608256 5699504 1601624 5681136 -1602160 5695928 1602200 5696008 1608624 5701952 1608256 5699504 -1608624 5701952 1608728 5702016 1608256 5699504 1602200 5696008 -1602200 5696008 1602224 5696056 1608624 5701952 1608256 5699504 -1608624 5701952 1608728 5702016 1608256 5699504 1602224 5696056 -1602224 5696056 1608464 5701920 1608624 5701952 1608256 5699504 -1608624 5701952 1608728 5702016 1608256 5699504 1608464 5701920 -1602224 5696056 1602504 5696992 1608464 5701920 1608256 5699504 -1602224 5696056 1602504 5696992 1608256 5699504 1602200 5696008 -1602504 5696992 1608272 5701896 1608464 5701920 1608256 5699504 -1602504 5696992 1608272 5701896 1608256 5699504 1602224 5696056 -1602504 5696992 1602504 5697056 1608272 5701896 1608256 5699504 -1602504 5696992 1602504 5697056 1608256 5699504 1602224 5696056 -1608272 5701896 1608464 5701920 1608256 5699504 1602504 5697056 -1608464 5701920 1608624 5701952 1608256 5699504 1608272 5701896 -1602200 5696008 1602224 5696056 1608256 5699504 1602160 5695928 -1602504 5697056 1604056 5700696 1608272 5701896 1608256 5699504 -1608272 5701896 1608464 5701920 1608256 5699504 1604056 5700696 -1602504 5697056 1604056 5700696 1608256 5699504 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1608256 5699504 -1604056 5700696 1608176 5701920 1608272 5701896 1608256 5699504 -1608272 5701896 1608464 5701920 1608256 5699504 1608176 5701920 -1604056 5700696 1608176 5701920 1608256 5699504 1602504 5697056 -1604056 5700696 1604104 5700768 1608176 5701920 1608256 5699504 -1604056 5700696 1604104 5700768 1608256 5699504 1602504 5697056 -1604104 5700768 1604152 5700872 1608176 5701920 1608256 5699504 -1604152 5700872 1604160 5700992 1608176 5701920 1608256 5699504 -1604104 5700768 1604152 5700872 1608256 5699504 1604056 5700696 -1608176 5701920 1608272 5701896 1608256 5699504 1604152 5700872 -1602160 5695928 1602200 5696008 1608256 5699504 1601592 5681216 -1601624 5681136 1608256 5699504 1609488 5702848 1614648 5707656 -1601624 5681136 1601592 5681216 1608256 5699504 1614648 5707656 -1608256 5699504 1609408 5702768 1609488 5702848 1614648 5707656 -1609488 5702848 1614576 5707608 1614648 5707656 1608256 5699504 -1609488 5702848 1614576 5707608 1608256 5699504 1609408 5702768 -1609488 5702848 1609512 5702904 1614576 5707608 1608256 5699504 -1601624 5681136 1608256 5699504 1614648 5707656 1614680 5707680 -1601624 5681136 1608256 5699504 1614680 5707680 1663880 5646248 -1601624 5681136 1608256 5699504 1663880 5646248 1663776 5646144 -1614680 5707680 1614696 5707712 1663880 5646248 1608256 5699504 -1601624 5681136 1601592 5681216 1608256 5699504 1663880 5646248 -1608256 5699504 1614648 5707656 1614680 5707680 1663880 5646248 -1614648 5707656 1614680 5707680 1608256 5699504 1614576 5707608 -1602504 5697056 1603848 5700544 1604056 5700696 1608256 5699504 -1602504 5697056 1603848 5700544 1608256 5699504 1602504 5696992 -1604056 5700696 1604104 5700768 1608256 5699504 1603848 5700544 -1602504 5697056 1603680 5700448 1603848 5700544 1608256 5699504 -1608256 5699504 1608400 5699424 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1608400 5699424 -1663880 5646248 1608400 5699424 1614680 5707680 1614696 5707712 -1608256 5699504 1608400 5699424 1601624 5681136 1601592 5681216 -1608400 5699424 1663880 5646248 1601624 5681136 1601592 5681216 -1608256 5699504 1614680 5707680 1608400 5699424 1601592 5681216 -1608400 5699424 1614680 5707680 1663880 5646248 1601624 5681136 -1608256 5699504 1608400 5699424 1601592 5681216 1602160 5695928 -1608400 5699424 1601624 5681136 1601592 5681216 1602160 5695928 -1608256 5699504 1614680 5707680 1608400 5699424 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1608400 5699424 -1614680 5707680 1608400 5699424 1608256 5699504 1614648 5707656 -1608400 5699424 1602160 5695928 1608256 5699504 1614648 5707656 -1614680 5707680 1663880 5646248 1608400 5699424 1614648 5707656 -1608256 5699504 1608400 5699424 1602160 5695928 1602200 5696008 -1608256 5699504 1614648 5707656 1608400 5699424 1602200 5696008 -1608400 5699424 1601592 5681216 1602160 5695928 1602200 5696008 -1608256 5699504 1608400 5699424 1602200 5696008 1602224 5696056 -1608256 5699504 1608400 5699424 1602224 5696056 1602504 5696992 -1608256 5699504 1608400 5699424 1602504 5696992 1602504 5697056 -1608256 5699504 1614648 5707656 1608400 5699424 1602504 5696992 -1608400 5699424 1602200 5696008 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1608400 5699424 -1608400 5699424 1602160 5695928 1602200 5696008 1602224 5696056 -1608256 5699504 1614576 5707608 1614648 5707656 1608400 5699424 -1608256 5699504 1614576 5707608 1608400 5699424 1602504 5696992 -1608256 5699504 1609488 5702848 1614576 5707608 1608400 5699424 -1608256 5699504 1609408 5702768 1609488 5702848 1608400 5699424 -1608256 5699504 1608976 5702256 1609408 5702768 1608400 5699424 -1609408 5702768 1609488 5702848 1608400 5699424 1608976 5702256 -1608256 5699504 1608976 5702256 1608400 5699424 1602504 5696992 -1608256 5699504 1608856 5702128 1608976 5702256 1608400 5699424 -1608976 5702256 1609408 5702768 1608400 5699424 1608856 5702128 -1608256 5699504 1608728 5702016 1608856 5702128 1608400 5699424 -1608256 5699504 1608624 5701952 1608728 5702016 1608400 5699424 -1608256 5699504 1608464 5701920 1608624 5701952 1608400 5699424 -1608728 5702016 1608856 5702128 1608400 5699424 1608624 5701952 -1608256 5699504 1608624 5701952 1608400 5699424 1602504 5696992 -1608856 5702128 1608976 5702256 1608400 5699424 1608728 5702016 -1608976 5702256 1609064 5702472 1609408 5702768 1608400 5699424 -1609488 5702848 1614576 5707608 1608400 5699424 1609408 5702768 -1609488 5702848 1609512 5702904 1614576 5707608 1608400 5699424 -1614648 5707656 1614680 5707680 1608400 5699424 1614576 5707608 -1614576 5707608 1614648 5707656 1608400 5699424 1609488 5702848 -1663880 5646248 1608544 5699312 1614680 5707680 1614696 5707712 -1608400 5699424 1608544 5699312 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1608544 5699312 -1608400 5699424 1608544 5699312 1601624 5681136 1601592 5681216 -1608400 5699424 1608544 5699312 1601592 5681216 1602160 5695928 -1608544 5699312 1601624 5681136 1601592 5681216 1602160 5695928 -1608544 5699312 1663880 5646248 1601624 5681136 1601592 5681216 -1601592 5681216 1601128 5681664 1602160 5695928 1608544 5699312 -1608400 5699424 1608544 5699312 1602160 5695928 1602200 5696008 -1608544 5699312 1601592 5681216 1602160 5695928 1602200 5696008 -1608400 5699424 1614680 5707680 1608544 5699312 1602200 5696008 -1614680 5707680 1608544 5699312 1608400 5699424 1614648 5707656 -1608544 5699312 1602200 5696008 1608400 5699424 1614648 5707656 -1608544 5699312 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1608544 5699312 1614648 5707656 -1608400 5699424 1614576 5707608 1614648 5707656 1608544 5699312 -1608400 5699424 1614576 5707608 1608544 5699312 1602200 5696008 -1614648 5707656 1614680 5707680 1608544 5699312 1614576 5707608 -1608400 5699424 1608544 5699312 1602200 5696008 1602224 5696056 -1608544 5699312 1602160 5695928 1602200 5696008 1602224 5696056 -1608400 5699424 1608544 5699312 1602224 5696056 1602504 5696992 -1608400 5699424 1608544 5699312 1602504 5696992 1608256 5699504 -1602504 5696992 1602504 5697056 1608256 5699504 1608544 5699312 -1608544 5699312 1602224 5696056 1602504 5696992 1608256 5699504 -1608400 5699424 1614576 5707608 1608544 5699312 1608256 5699504 -1602224 5696056 1602224 5696096 1602504 5696992 1608544 5699312 -1608544 5699312 1602200 5696008 1602224 5696056 1602504 5696992 -1608400 5699424 1609488 5702848 1614576 5707608 1608544 5699312 -1608400 5699424 1609408 5702768 1609488 5702848 1608544 5699312 -1608400 5699424 1608976 5702256 1609408 5702768 1608544 5699312 -1608400 5699424 1608856 5702128 1608976 5702256 1608544 5699312 -1608976 5702256 1609408 5702768 1608544 5699312 1608856 5702128 -1608400 5699424 1608728 5702016 1608856 5702128 1608544 5699312 -1608856 5702128 1608976 5702256 1608544 5699312 1608728 5702016 -1608400 5699424 1608624 5701952 1608728 5702016 1608544 5699312 -1608400 5699424 1608256 5699504 1608624 5701952 1608544 5699312 -1608728 5702016 1608856 5702128 1608544 5699312 1608624 5701952 -1608976 5702256 1609064 5702472 1609408 5702768 1608544 5699312 -1609408 5702768 1609488 5702848 1608544 5699312 1608976 5702256 -1609488 5702848 1609512 5702904 1614576 5707608 1608544 5699312 -1608400 5699424 1608624 5701952 1608544 5699312 1608256 5699504 -1614576 5707608 1614648 5707656 1608544 5699312 1609488 5702848 -1609488 5702848 1614576 5707608 1608544 5699312 1609408 5702768 -1663880 5646248 1608624 5699288 1614680 5707680 1614696 5707712 -1608544 5699312 1608624 5699288 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1608624 5699288 -1608544 5699312 1608624 5699288 1601624 5681136 1601592 5681216 -1608544 5699312 1608624 5699288 1601592 5681216 1602160 5695928 -1608544 5699312 1608624 5699288 1602160 5695928 1602200 5696008 -1608624 5699288 1601592 5681216 1602160 5695928 1602200 5696008 -1608624 5699288 1601624 5681136 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1608624 5699288 -1608544 5699312 1608624 5699288 1602200 5696008 1602224 5696056 -1608624 5699288 1602160 5695928 1602200 5696008 1602224 5696056 -1608624 5699288 1663880 5646248 1601624 5681136 1601592 5681216 -1608544 5699312 1614680 5707680 1608624 5699288 1602224 5696056 -1614680 5707680 1608624 5699288 1608544 5699312 1614648 5707656 -1608544 5699312 1614576 5707608 1614648 5707656 1608624 5699288 -1608624 5699288 1602224 5696056 1608544 5699312 1614576 5707608 -1614648 5707656 1614680 5707680 1608624 5699288 1614576 5707608 -1608624 5699288 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1608624 5699288 1614648 5707656 -1608544 5699312 1609488 5702848 1614576 5707608 1608624 5699288 -1609488 5702848 1609512 5702904 1614576 5707608 1608624 5699288 -1614576 5707608 1614648 5707656 1608624 5699288 1609488 5702848 -1608544 5699312 1609488 5702848 1608624 5699288 1602224 5696056 -1608544 5699312 1608624 5699288 1602224 5696056 1602504 5696992 -1608544 5699312 1609408 5702768 1609488 5702848 1608624 5699288 -1608544 5699312 1608976 5702256 1609408 5702768 1608624 5699288 -1608544 5699312 1608856 5702128 1608976 5702256 1608624 5699288 -1608544 5699312 1608728 5702016 1608856 5702128 1608624 5699288 -1608856 5702128 1608976 5702256 1608624 5699288 1608728 5702016 -1608544 5699312 1608624 5701952 1608728 5702016 1608624 5699288 -1608728 5702016 1608856 5702128 1608624 5699288 1608624 5701952 -1608544 5699312 1608400 5699424 1608624 5701952 1608624 5699288 -1608400 5699424 1608256 5699504 1608624 5701952 1608624 5699288 -1608624 5701952 1608728 5702016 1608624 5699288 1608400 5699424 -1608976 5702256 1609064 5702472 1609408 5702768 1608624 5699288 -1608976 5702256 1609408 5702768 1608624 5699288 1608856 5702128 -1608544 5699312 1608400 5699424 1608624 5699288 1602224 5696056 -1609488 5702848 1614576 5707608 1608624 5699288 1609408 5702768 -1609408 5702768 1609488 5702848 1608624 5699288 1608976 5702256 -1663880 5646248 1608712 5699312 1614680 5707680 1614696 5707712 -1608624 5699288 1608712 5699312 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1608712 5699312 -1608712 5699312 1614680 5707680 1663880 5646248 1601624 5681136 -1608624 5699288 1608712 5699312 1601624 5681136 1601592 5681216 -1608624 5699288 1608712 5699312 1601592 5681216 1602160 5695928 -1608712 5699312 1663880 5646248 1601624 5681136 1601592 5681216 -1608624 5699288 1614680 5707680 1608712 5699312 1601592 5681216 -1614680 5707680 1608712 5699312 1608624 5699288 1614648 5707656 -1608624 5699288 1614576 5707608 1614648 5707656 1608712 5699312 -1608624 5699288 1609488 5702848 1614576 5707608 1608712 5699312 -1609488 5702848 1609512 5702904 1614576 5707608 1608712 5699312 -1614576 5707608 1614648 5707656 1608712 5699312 1609488 5702848 -1608712 5699312 1601592 5681216 1608624 5699288 1609488 5702848 -1614648 5707656 1614680 5707680 1608712 5699312 1614576 5707608 -1614680 5707680 1663880 5646248 1608712 5699312 1614648 5707656 -1608624 5699288 1609408 5702768 1609488 5702848 1608712 5699312 -1609488 5702848 1614576 5707608 1608712 5699312 1609408 5702768 -1608624 5699288 1609408 5702768 1608712 5699312 1601592 5681216 -1608624 5699288 1608976 5702256 1609408 5702768 1608712 5699312 -1608976 5702256 1609064 5702472 1609408 5702768 1608712 5699312 -1608624 5699288 1608856 5702128 1608976 5702256 1608712 5699312 -1608624 5699288 1608728 5702016 1608856 5702128 1608712 5699312 -1608624 5699288 1608624 5701952 1608728 5702016 1608712 5699312 -1608728 5702016 1608856 5702128 1608712 5699312 1608624 5701952 -1608624 5699288 1608400 5699424 1608624 5701952 1608712 5699312 -1608400 5699424 1608256 5699504 1608624 5701952 1608712 5699312 -1608624 5701952 1608728 5702016 1608712 5699312 1608400 5699424 -1608624 5699288 1608544 5699312 1608400 5699424 1608712 5699312 -1608400 5699424 1608624 5701952 1608712 5699312 1608544 5699312 -1608856 5702128 1608976 5702256 1608712 5699312 1608728 5702016 -1608624 5699288 1608544 5699312 1608712 5699312 1601592 5681216 -1609408 5702768 1609488 5702848 1608712 5699312 1608976 5702256 -1608976 5702256 1609408 5702768 1608712 5699312 1608856 5702128 -1663880 5646248 1608920 5699432 1614680 5707680 1614696 5707712 -1608712 5699312 1608920 5699432 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1608920 5699432 -1608712 5699312 1608920 5699432 1601624 5681136 1601592 5681216 -1608712 5699312 1614680 5707680 1608920 5699432 1601624 5681136 -1614680 5707680 1608920 5699432 1608712 5699312 1614648 5707656 -1608712 5699312 1614576 5707608 1614648 5707656 1608920 5699432 -1608712 5699312 1609488 5702848 1614576 5707608 1608920 5699432 -1609488 5702848 1609512 5702904 1614576 5707608 1608920 5699432 -1609512 5702904 1613152 5707048 1614576 5707608 1608920 5699432 -1608712 5699312 1609408 5702768 1609488 5702848 1608920 5699432 -1609488 5702848 1609512 5702904 1608920 5699432 1609408 5702768 -1614576 5707608 1614648 5707656 1608920 5699432 1609512 5702904 -1608920 5699432 1601624 5681136 1608712 5699312 1609408 5702768 -1614648 5707656 1614680 5707680 1608920 5699432 1614576 5707608 -1608712 5699312 1608976 5702256 1609408 5702768 1608920 5699432 -1608976 5702256 1609064 5702472 1609408 5702768 1608920 5699432 -1609408 5702768 1609488 5702848 1608920 5699432 1608976 5702256 -1608712 5699312 1608976 5702256 1608920 5699432 1601624 5681136 -1608920 5699432 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1608920 5699432 1614648 5707656 -1608712 5699312 1608856 5702128 1608976 5702256 1608920 5699432 -1608712 5699312 1608728 5702016 1608856 5702128 1608920 5699432 -1608712 5699312 1608624 5701952 1608728 5702016 1608920 5699432 -1608712 5699312 1608400 5699424 1608624 5701952 1608920 5699432 -1608400 5699424 1608256 5699504 1608624 5701952 1608920 5699432 -1608256 5699504 1608464 5701920 1608624 5701952 1608920 5699432 -1608256 5699504 1608464 5701920 1608920 5699432 1608400 5699424 -1608400 5699424 1608256 5699504 1608920 5699432 1608712 5699312 -1608624 5701952 1608728 5702016 1608920 5699432 1608464 5701920 -1608712 5699312 1608544 5699312 1608400 5699424 1608920 5699432 -1608728 5702016 1608856 5702128 1608920 5699432 1608624 5701952 -1608256 5699504 1608272 5701896 1608464 5701920 1608920 5699432 -1608712 5699312 1608400 5699424 1608920 5699432 1601624 5681136 -1608976 5702256 1609408 5702768 1608920 5699432 1608856 5702128 -1608856 5702128 1608976 5702256 1608920 5699432 1608728 5702016 -1663880 5646248 1608960 5699472 1614680 5707680 1614696 5707712 -1608920 5699432 1608960 5699472 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1608960 5699472 -1608920 5699432 1608960 5699472 1601624 5681136 1608712 5699312 -1608960 5699472 1614680 5707680 1663880 5646248 1601624 5681136 -1608920 5699432 1614680 5707680 1608960 5699472 1601624 5681136 -1614680 5707680 1608960 5699472 1608920 5699432 1614648 5707656 -1608920 5699432 1614576 5707608 1614648 5707656 1608960 5699472 -1608920 5699432 1609512 5702904 1614576 5707608 1608960 5699472 -1608920 5699432 1609488 5702848 1609512 5702904 1608960 5699472 -1609512 5702904 1613152 5707048 1614576 5707608 1608960 5699472 -1608920 5699432 1609408 5702768 1609488 5702848 1608960 5699472 -1609488 5702848 1609512 5702904 1608960 5699472 1609408 5702768 -1608920 5699432 1608976 5702256 1609408 5702768 1608960 5699472 -1608976 5702256 1609064 5702472 1609408 5702768 1608960 5699472 -1609408 5702768 1609488 5702848 1608960 5699472 1608976 5702256 -1609512 5702904 1614576 5707608 1608960 5699472 1609488 5702848 -1614576 5707608 1614648 5707656 1608960 5699472 1609512 5702904 -1608920 5699432 1608856 5702128 1608976 5702256 1608960 5699472 -1608976 5702256 1609408 5702768 1608960 5699472 1608856 5702128 -1614680 5707680 1663880 5646248 1608960 5699472 1614648 5707656 -1608960 5699472 1601624 5681136 1608920 5699432 1608856 5702128 -1614648 5707656 1614680 5707680 1608960 5699472 1614576 5707608 -1608920 5699432 1608728 5702016 1608856 5702128 1608960 5699472 -1608920 5699432 1608624 5701952 1608728 5702016 1608960 5699472 -1608920 5699432 1608464 5701920 1608624 5701952 1608960 5699472 -1608920 5699432 1608256 5699504 1608464 5701920 1608960 5699472 -1608920 5699432 1608400 5699424 1608256 5699504 1608960 5699472 -1608256 5699504 1608464 5701920 1608960 5699472 1608400 5699424 -1608920 5699432 1608712 5699312 1608400 5699424 1608960 5699472 -1608464 5701920 1608624 5701952 1608960 5699472 1608256 5699504 -1608624 5701952 1608728 5702016 1608960 5699472 1608464 5701920 -1608256 5699504 1608272 5701896 1608464 5701920 1608960 5699472 -1608856 5702128 1608976 5702256 1608960 5699472 1608728 5702016 -1608920 5699432 1608400 5699424 1608960 5699472 1601624 5681136 -1608728 5702016 1608856 5702128 1608960 5699472 1608624 5701952 -1614576 5707608 1608992 5699536 1609512 5702904 1613152 5707048 -1609512 5702904 1608992 5699536 1608960 5699472 1609488 5702848 -1608960 5699472 1609408 5702768 1609488 5702848 1608992 5699536 -1609512 5702904 1614576 5707608 1608992 5699536 1609488 5702848 -1608960 5699472 1608976 5702256 1609408 5702768 1608992 5699536 -1608976 5702256 1609064 5702472 1609408 5702768 1608992 5699536 -1609408 5702768 1609488 5702848 1608992 5699536 1608976 5702256 -1608960 5699472 1608856 5702128 1608976 5702256 1608992 5699536 -1608976 5702256 1609408 5702768 1608992 5699536 1608856 5702128 -1609488 5702848 1609512 5702904 1608992 5699536 1609408 5702768 -1608960 5699472 1608992 5699536 1614576 5707608 1614648 5707656 -1608992 5699536 1609512 5702904 1614576 5707608 1614648 5707656 -1608960 5699472 1608728 5702016 1608856 5702128 1608992 5699536 -1608856 5702128 1608976 5702256 1608992 5699536 1608728 5702016 -1608992 5699536 1614648 5707656 1608960 5699472 1608728 5702016 -1608960 5699472 1608992 5699536 1614648 5707656 1614680 5707680 -1608992 5699536 1614576 5707608 1614648 5707656 1614680 5707680 -1608960 5699472 1608728 5702016 1608992 5699536 1614680 5707680 -1608960 5699472 1608992 5699536 1614680 5707680 1663880 5646248 -1608960 5699472 1608624 5701952 1608728 5702016 1608992 5699536 -1608960 5699472 1608464 5701920 1608624 5701952 1608992 5699536 -1608960 5699472 1608256 5699504 1608464 5701920 1608992 5699536 -1608960 5699472 1608400 5699424 1608256 5699504 1608992 5699536 -1608960 5699472 1608920 5699432 1608400 5699424 1608992 5699536 -1608400 5699424 1608256 5699504 1608992 5699536 1608920 5699432 -1608920 5699432 1608712 5699312 1608400 5699424 1608992 5699536 -1608256 5699504 1608464 5701920 1608992 5699536 1608400 5699424 -1608464 5701920 1608624 5701952 1608992 5699536 1608256 5699504 -1608256 5699504 1608272 5701896 1608464 5701920 1608992 5699536 -1608728 5702016 1608856 5702128 1608992 5699536 1608624 5701952 -1608960 5699472 1608920 5699432 1608992 5699536 1614680 5707680 -1608624 5701952 1608728 5702016 1608992 5699536 1608464 5701920 -1609408 5702768 1609000 5699616 1608976 5702256 1609064 5702472 -1608992 5699536 1609000 5699616 1609408 5702768 1609488 5702848 -1608992 5699536 1608976 5702256 1609000 5699616 1609488 5702848 -1609000 5699616 1608976 5702256 1609408 5702768 1609488 5702848 -1608976 5702256 1609000 5699616 1608992 5699536 1608856 5702128 -1609000 5699616 1609488 5702848 1608992 5699536 1608856 5702128 -1608976 5702256 1609408 5702768 1609000 5699616 1608856 5702128 -1608992 5699536 1608728 5702016 1608856 5702128 1609000 5699616 -1608992 5699536 1608728 5702016 1609000 5699616 1609488 5702848 -1608856 5702128 1608976 5702256 1609000 5699616 1608728 5702016 -1608992 5699536 1609000 5699616 1609488 5702848 1609512 5702904 -1609000 5699616 1609408 5702768 1609488 5702848 1609512 5702904 -1608992 5699536 1608728 5702016 1609000 5699616 1609512 5702904 -1608992 5699536 1609000 5699616 1609512 5702904 1614576 5707608 -1609512 5702904 1613152 5707048 1614576 5707608 1609000 5699616 -1608992 5699536 1609000 5699616 1614576 5707608 1614648 5707656 -1608992 5699536 1608728 5702016 1609000 5699616 1614576 5707608 -1609000 5699616 1609488 5702848 1609512 5702904 1614576 5707608 -1608992 5699536 1608624 5701952 1608728 5702016 1609000 5699616 -1608992 5699536 1608624 5701952 1609000 5699616 1614576 5707608 -1608728 5702016 1608856 5702128 1609000 5699616 1608624 5701952 -1608992 5699536 1608464 5701920 1608624 5701952 1609000 5699616 -1608992 5699536 1608256 5699504 1608464 5701920 1609000 5699616 -1608992 5699536 1608400 5699424 1608256 5699504 1609000 5699616 -1608992 5699536 1608920 5699432 1608400 5699424 1609000 5699616 -1608992 5699536 1608960 5699472 1608920 5699432 1609000 5699616 -1608920 5699432 1608712 5699312 1608400 5699424 1609000 5699616 -1608400 5699424 1608256 5699504 1609000 5699616 1608920 5699432 -1608256 5699504 1608464 5701920 1609000 5699616 1608400 5699424 -1608256 5699504 1608272 5701896 1608464 5701920 1609000 5699616 -1608256 5699504 1608176 5701920 1608272 5701896 1609000 5699616 -1608256 5699504 1608272 5701896 1609000 5699616 1608400 5699424 -1608992 5699536 1608920 5699432 1609000 5699616 1614576 5707608 -1608624 5701952 1608728 5702016 1609000 5699616 1608464 5701920 -1608464 5701920 1608624 5701952 1609000 5699616 1608272 5701896 -1608272 5701896 1608976 5699688 1608256 5699504 1608176 5701920 -1608256 5699504 1608976 5699688 1609000 5699616 1608400 5699424 -1609000 5699616 1608920 5699432 1608400 5699424 1608976 5699688 -1609000 5699616 1608992 5699536 1608920 5699432 1608976 5699688 -1608992 5699536 1608960 5699472 1608920 5699432 1608976 5699688 -1608920 5699432 1608712 5699312 1608400 5699424 1608976 5699688 -1608920 5699432 1608712 5699312 1608976 5699688 1608992 5699536 -1608712 5699312 1608544 5699312 1608400 5699424 1608976 5699688 -1608400 5699424 1608256 5699504 1608976 5699688 1608712 5699312 -1609000 5699616 1608976 5699688 1608272 5701896 1608464 5701920 -1608976 5699688 1608256 5699504 1608272 5701896 1608464 5701920 -1608256 5699504 1608272 5701896 1608976 5699688 1608400 5699424 -1608976 5699688 1608464 5701920 1609000 5699616 1608992 5699536 -1609000 5699616 1608976 5699688 1608464 5701920 1608624 5701952 -1608976 5699688 1608272 5701896 1608464 5701920 1608624 5701952 -1609000 5699616 1608992 5699536 1608976 5699688 1608624 5701952 -1609000 5699616 1608976 5699688 1608624 5701952 1608728 5702016 -1609000 5699616 1608992 5699536 1608976 5699688 1608728 5702016 -1609000 5699616 1608976 5699688 1608728 5702016 1608856 5702128 -1609000 5699616 1608992 5699536 1608976 5699688 1608856 5702128 -1609000 5699616 1608976 5699688 1608856 5702128 1608976 5702256 -1609000 5699616 1608976 5699688 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1608976 5699688 -1609000 5699616 1608976 5699688 1609408 5702768 1609488 5702848 -1609000 5699616 1608976 5699688 1609488 5702848 1609512 5702904 -1608976 5699688 1608976 5702256 1609408 5702768 1609488 5702848 -1609000 5699616 1608992 5699536 1608976 5699688 1609488 5702848 -1608976 5699688 1608728 5702016 1608856 5702128 1608976 5702256 -1608976 5699688 1608856 5702128 1608976 5702256 1609408 5702768 -1608976 5699688 1608624 5701952 1608728 5702016 1608856 5702128 -1608976 5699688 1608464 5701920 1608624 5701952 1608728 5702016 -1608272 5701896 1608952 5699712 1608256 5699504 1608176 5701920 -1608976 5699688 1608952 5699712 1608272 5701896 1608464 5701920 -1608976 5699688 1608952 5699712 1608464 5701920 1608624 5701952 -1608952 5699712 1608272 5701896 1608464 5701920 1608624 5701952 -1608976 5699688 1608256 5699504 1608952 5699712 1608624 5701952 -1608256 5699504 1608952 5699712 1608976 5699688 1608400 5699424 -1608976 5699688 1608712 5699312 1608400 5699424 1608952 5699712 -1608976 5699688 1608920 5699432 1608712 5699312 1608952 5699712 -1608976 5699688 1608992 5699536 1608920 5699432 1608952 5699712 -1608976 5699688 1609000 5699616 1608992 5699536 1608952 5699712 -1608992 5699536 1608960 5699472 1608920 5699432 1608952 5699712 -1608920 5699432 1608712 5699312 1608952 5699712 1608960 5699472 -1608992 5699536 1608960 5699472 1608952 5699712 1609000 5699616 -1608712 5699312 1608544 5699312 1608400 5699424 1608952 5699712 -1608712 5699312 1608400 5699424 1608952 5699712 1608920 5699432 -1608256 5699504 1608272 5701896 1608952 5699712 1608400 5699424 -1608952 5699712 1608624 5701952 1608976 5699688 1609000 5699616 -1608400 5699424 1608256 5699504 1608952 5699712 1608712 5699312 -1608952 5699712 1608256 5699504 1608272 5701896 1608464 5701920 -1608976 5699688 1608952 5699712 1608624 5701952 1608728 5702016 -1608952 5699712 1608464 5701920 1608624 5701952 1608728 5702016 -1608976 5699688 1609000 5699616 1608952 5699712 1608728 5702016 -1608976 5699688 1608952 5699712 1608728 5702016 1608856 5702128 -1608976 5699688 1609000 5699616 1608952 5699712 1608856 5702128 -1608976 5699688 1608952 5699712 1608856 5702128 1608976 5702256 -1608976 5699688 1609000 5699616 1608952 5699712 1608976 5702256 -1608976 5699688 1608952 5699712 1608976 5702256 1609408 5702768 -1608952 5699712 1608728 5702016 1608856 5702128 1608976 5702256 -1608952 5699712 1608624 5701952 1608728 5702016 1608856 5702128 -1608976 5702256 1608960 5699744 1608952 5699712 1608856 5702128 -1608960 5699744 1608976 5699688 1608952 5699712 1608856 5702128 -1608976 5702256 1608976 5699688 1608960 5699744 1608856 5702128 -1608976 5699688 1608960 5699744 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1608960 5699744 -1608976 5699688 1608952 5699712 1608960 5699744 1609408 5702768 -1608960 5699744 1608856 5702128 1608976 5702256 1609408 5702768 -1608976 5699688 1608960 5699744 1609408 5702768 1609488 5702848 -1608976 5699688 1608952 5699712 1608960 5699744 1609488 5702848 -1608976 5699688 1608960 5699744 1609488 5702848 1609000 5699616 -1609488 5702848 1609512 5702904 1609000 5699616 1608960 5699744 -1608976 5699688 1608952 5699712 1608960 5699744 1609000 5699616 -1608960 5699744 1609408 5702768 1609488 5702848 1609000 5699616 -1608960 5699744 1608976 5702256 1609408 5702768 1609488 5702848 -1608952 5699712 1608728 5702016 1608856 5702128 1608960 5699744 -1608952 5699712 1608728 5702016 1608960 5699744 1608976 5699688 -1608856 5702128 1608976 5702256 1608960 5699744 1608728 5702016 -1608952 5699712 1608624 5701952 1608728 5702016 1608960 5699744 -1608952 5699712 1608624 5701952 1608960 5699744 1608976 5699688 -1608952 5699712 1608464 5701920 1608624 5701952 1608960 5699744 -1608952 5699712 1608464 5701920 1608960 5699744 1608976 5699688 -1608952 5699712 1608272 5701896 1608464 5701920 1608960 5699744 -1608952 5699712 1608272 5701896 1608960 5699744 1608976 5699688 -1608464 5701920 1608624 5701952 1608960 5699744 1608272 5701896 -1608952 5699712 1608256 5699504 1608272 5701896 1608960 5699744 -1608256 5699504 1608176 5701920 1608272 5701896 1608960 5699744 -1608952 5699712 1608256 5699504 1608960 5699744 1608976 5699688 -1608952 5699712 1608400 5699424 1608256 5699504 1608960 5699744 -1608952 5699712 1608400 5699424 1608960 5699744 1608976 5699688 -1608272 5701896 1608464 5701920 1608960 5699744 1608256 5699504 -1608952 5699712 1608712 5699312 1608400 5699424 1608960 5699744 -1608256 5699504 1608272 5701896 1608960 5699744 1608400 5699424 -1608728 5702016 1608856 5702128 1608960 5699744 1608624 5701952 -1608624 5701952 1608728 5702016 1608960 5699744 1608464 5701920 -1608272 5701896 1608904 5699824 1608256 5699504 1608176 5701920 -1608960 5699744 1608904 5699824 1608272 5701896 1608464 5701920 -1608960 5699744 1608256 5699504 1608904 5699824 1608464 5701920 -1608904 5699824 1608256 5699504 1608272 5701896 1608464 5701920 -1608960 5699744 1608904 5699824 1608464 5701920 1608624 5701952 -1608960 5699744 1608256 5699504 1608904 5699824 1608624 5701952 -1608904 5699824 1608272 5701896 1608464 5701920 1608624 5701952 -1608256 5699504 1608904 5699824 1608960 5699744 1608400 5699424 -1608960 5699744 1608952 5699712 1608400 5699424 1608904 5699824 -1608904 5699824 1608624 5701952 1608960 5699744 1608952 5699712 -1608256 5699504 1608272 5701896 1608904 5699824 1608400 5699424 -1608952 5699712 1608712 5699312 1608400 5699424 1608904 5699824 -1608400 5699424 1608256 5699504 1608904 5699824 1608952 5699712 -1608960 5699744 1608904 5699824 1608624 5701952 1608728 5702016 -1608960 5699744 1608952 5699712 1608904 5699824 1608728 5702016 -1608904 5699824 1608464 5701920 1608624 5701952 1608728 5702016 -1608960 5699744 1608904 5699824 1608728 5702016 1608856 5702128 -1608960 5699744 1608952 5699712 1608904 5699824 1608856 5702128 -1608960 5699744 1608904 5699824 1608856 5702128 1608976 5702256 -1608960 5699744 1608952 5699712 1608904 5699824 1608976 5702256 -1608960 5699744 1608904 5699824 1608976 5702256 1609408 5702768 -1608904 5699824 1608728 5702016 1608856 5702128 1608976 5702256 -1608904 5699824 1608624 5701952 1608728 5702016 1608856 5702128 -1608272 5701896 1608808 5699872 1608256 5699504 1608176 5701920 -1608904 5699824 1608808 5699872 1608272 5701896 1608464 5701920 -1608904 5699824 1608256 5699504 1608808 5699872 1608464 5701920 -1608256 5699504 1608808 5699872 1608904 5699824 1608400 5699424 -1608808 5699872 1608464 5701920 1608904 5699824 1608400 5699424 -1608272 5701896 1608464 5701920 1608808 5699872 1608176 5701920 -1608808 5699872 1608400 5699424 1608256 5699504 1608176 5701920 -1608904 5699824 1608808 5699872 1608464 5701920 1608624 5701952 -1608808 5699872 1608272 5701896 1608464 5701920 1608624 5701952 -1608904 5699824 1608400 5699424 1608808 5699872 1608624 5701952 -1608904 5699824 1608808 5699872 1608624 5701952 1608728 5702016 -1608904 5699824 1608400 5699424 1608808 5699872 1608728 5702016 -1608808 5699872 1608464 5701920 1608624 5701952 1608728 5702016 -1608904 5699824 1608952 5699712 1608400 5699424 1608808 5699872 -1608904 5699824 1608960 5699744 1608952 5699712 1608808 5699872 -1608904 5699824 1608952 5699712 1608808 5699872 1608728 5702016 -1608400 5699424 1608256 5699504 1608808 5699872 1608952 5699712 -1608952 5699712 1608712 5699312 1608400 5699424 1608808 5699872 -1608712 5699312 1608544 5699312 1608400 5699424 1608808 5699872 -1608952 5699712 1608920 5699432 1608712 5699312 1608808 5699872 -1608400 5699424 1608256 5699504 1608808 5699872 1608712 5699312 -1608952 5699712 1608712 5699312 1608808 5699872 1608904 5699824 -1608256 5699504 1604152 5700872 1608176 5701920 1608808 5699872 -1608904 5699824 1608808 5699872 1608728 5702016 1608856 5702128 -1608808 5699872 1608584 5699856 1608176 5701920 1608272 5701896 -1608584 5699856 1608256 5699504 1608176 5701920 1608272 5701896 -1608808 5699872 1608584 5699856 1608272 5701896 1608464 5701920 -1608584 5699856 1608176 5701920 1608272 5701896 1608464 5701920 -1608808 5699872 1608584 5699856 1608464 5701920 1608624 5701952 -1608808 5699872 1608256 5699504 1608584 5699856 1608464 5701920 -1608256 5699504 1608584 5699856 1608808 5699872 1608400 5699424 -1608256 5699504 1608176 5701920 1608584 5699856 1608400 5699424 -1608808 5699872 1608712 5699312 1608400 5699424 1608584 5699856 -1608712 5699312 1608544 5699312 1608400 5699424 1608584 5699856 -1608400 5699424 1608256 5699504 1608584 5699856 1608712 5699312 -1608584 5699856 1608464 5701920 1608808 5699872 1608712 5699312 -1608808 5699872 1608952 5699712 1608712 5699312 1608584 5699856 -1608952 5699712 1608920 5699432 1608712 5699312 1608584 5699856 -1608952 5699712 1608960 5699472 1608920 5699432 1608584 5699856 -1608712 5699312 1608400 5699424 1608584 5699856 1608920 5699432 -1608808 5699872 1608952 5699712 1608584 5699856 1608464 5701920 -1608952 5699712 1608920 5699432 1608584 5699856 1608808 5699872 -1608808 5699872 1608904 5699824 1608952 5699712 1608584 5699856 -1608176 5701920 1608584 5699856 1608256 5699504 1604152 5700872 -1608584 5699856 1608352 5699776 1608176 5701920 1608272 5701896 -1608584 5699856 1608352 5699776 1608272 5701896 1608464 5701920 -1608256 5699504 1608352 5699776 1608584 5699856 1608400 5699424 -1608584 5699856 1608712 5699312 1608400 5699424 1608352 5699776 -1608584 5699856 1608400 5699424 1608352 5699776 1608272 5701896 -1608352 5699776 1608256 5699504 1608176 5701920 1608272 5701896 -1608256 5699504 1608176 5701920 1608352 5699776 1608400 5699424 -1608176 5701920 1608352 5699776 1608256 5699504 1604152 5700872 -1608176 5701920 1608272 5701896 1608352 5699776 1604152 5700872 -1608352 5699776 1608400 5699424 1608256 5699504 1604152 5700872 -1608176 5701920 1608352 5699776 1604152 5700872 1604160 5700992 -1608256 5699504 1604104 5700768 1604152 5700872 1608352 5699776 -1608256 5699504 1608256 5699720 1608352 5699776 1608400 5699424 -1604152 5700872 1608256 5699720 1608256 5699504 1604104 5700768 -1604152 5700872 1608352 5699776 1608256 5699720 1604104 5700768 -1608256 5699720 1608352 5699776 1608256 5699504 1604104 5700768 -1608256 5699504 1604056 5700696 1604104 5700768 1608256 5699720 -1608352 5699776 1608256 5699720 1604152 5700872 1608176 5701920 -1608352 5699776 1608256 5699720 1608176 5701920 1608272 5701896 -1608352 5699776 1608256 5699504 1608256 5699720 1608176 5701920 -1608256 5699720 1604104 5700768 1604152 5700872 1608176 5701920 -1604152 5700872 1604160 5700992 1608176 5701920 1608256 5699720 -1608256 5699504 1608200 5699672 1608256 5699720 1608352 5699776 -1608256 5699720 1608200 5699672 1604104 5700768 1604152 5700872 -1608256 5699720 1608200 5699672 1604152 5700872 1608176 5701920 -1608256 5699720 1608256 5699504 1608200 5699672 1608176 5701920 -1608200 5699672 1608256 5699504 1604104 5700768 1604152 5700872 -1604152 5700872 1604160 5700992 1608176 5701920 1608200 5699672 -1608200 5699672 1604104 5700768 1604152 5700872 1608176 5701920 -1604104 5700768 1608200 5699672 1608256 5699504 1604056 5700696 -1604104 5700768 1604152 5700872 1608200 5699672 1604056 5700696 -1608200 5699672 1608256 5699720 1608256 5699504 1604056 5700696 -1608256 5699504 1603848 5700544 1604056 5700696 1608200 5699672 -1608256 5699720 1608200 5699672 1608176 5701920 1608352 5699776 -1608256 5699504 1608192 5699632 1608200 5699672 1608256 5699720 -1608256 5699504 1608192 5699632 1608256 5699720 1608352 5699776 -1608192 5699632 1604056 5700696 1608200 5699672 1608256 5699720 -1608256 5699504 1604056 5700696 1608192 5699632 1608256 5699720 -1604056 5700696 1608192 5699632 1608256 5699504 1603848 5700544 -1604056 5700696 1608200 5699672 1608192 5699632 1603848 5700544 -1608192 5699632 1608256 5699720 1608256 5699504 1603848 5700544 -1608200 5699672 1608192 5699632 1604056 5700696 1604104 5700768 -1608200 5699672 1608192 5699632 1604104 5700768 1604152 5700872 -1608200 5699672 1608256 5699720 1608192 5699632 1604152 5700872 -1608192 5699632 1603848 5700544 1604056 5700696 1604104 5700768 -1608200 5699672 1608192 5699632 1604152 5700872 1608176 5701920 -1608192 5699632 1604056 5700696 1604104 5700768 1604152 5700872 -1608256 5699504 1602504 5697056 1603848 5700544 1608192 5699632 -1608256 5699504 1608216 5699560 1608192 5699632 1608256 5699720 -1608256 5699504 1608216 5699560 1608256 5699720 1608352 5699776 -1608192 5699632 1608200 5699672 1608256 5699720 1608216 5699560 -1608216 5699560 1603848 5700544 1608192 5699632 1608256 5699720 -1608256 5699504 1603848 5700544 1608216 5699560 1608256 5699720 -1608192 5699632 1608216 5699560 1603848 5700544 1604056 5700696 -1608192 5699632 1608216 5699560 1604056 5700696 1604104 5700768 -1608192 5699632 1608256 5699720 1608216 5699560 1604056 5700696 -1608216 5699560 1608256 5699504 1603848 5700544 1604056 5700696 -1603848 5700544 1608216 5699560 1608256 5699504 1602504 5697056 -1608256 5699504 1602504 5696992 1602504 5697056 1608216 5699560 -1603848 5700544 1604056 5700696 1608216 5699560 1602504 5697056 -1608216 5699560 1608256 5699720 1608256 5699504 1602504 5697056 -1603848 5700544 1608216 5699560 1602504 5697056 1603680 5700448 -1663880 5646248 1610696 5698920 1614680 5707680 1614696 5707712 -1608960 5699472 1610696 5698920 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1610696 5698920 -1610696 5698920 1614680 5707680 1663880 5646248 1601624 5681136 -1608960 5699472 1614680 5707680 1610696 5698920 1601624 5681136 -1614680 5707680 1610696 5698920 1608960 5699472 1608992 5699536 -1614680 5707680 1663880 5646248 1610696 5698920 1608992 5699536 -1610696 5698920 1601624 5681136 1608960 5699472 1608992 5699536 -1608960 5699472 1610696 5698920 1601624 5681136 1608920 5699432 -1601624 5681136 1608712 5699312 1608920 5699432 1610696 5698920 -1608960 5699472 1608992 5699536 1610696 5698920 1608920 5699432 -1601624 5681136 1601592 5681216 1608712 5699312 1610696 5698920 -1608712 5699312 1608920 5699432 1610696 5698920 1601592 5681216 -1601592 5681216 1608624 5699288 1608712 5699312 1610696 5698920 -1601592 5681216 1602160 5695928 1608624 5699288 1610696 5698920 -1602160 5695928 1602200 5696008 1608624 5699288 1610696 5698920 -1601592 5681216 1601128 5681664 1602160 5695928 1610696 5698920 -1608712 5699312 1608920 5699432 1610696 5698920 1608624 5699288 -1608624 5699288 1608712 5699312 1610696 5698920 1602160 5695928 -1601592 5681216 1602160 5695928 1610696 5698920 1601624 5681136 -1610696 5698920 1663880 5646248 1601624 5681136 1601592 5681216 -1608920 5699432 1608960 5699472 1610696 5698920 1608712 5699312 -1614680 5707680 1610696 5698920 1608992 5699536 1614648 5707656 -1614680 5707680 1663880 5646248 1610696 5698920 1614648 5707656 -1608992 5699536 1614576 5707608 1614648 5707656 1610696 5698920 -1608992 5699536 1609000 5699616 1614576 5707608 1610696 5698920 -1609000 5699616 1609512 5702904 1614576 5707608 1610696 5698920 -1609512 5702904 1613152 5707048 1614576 5707608 1610696 5698920 -1609512 5702904 1613096 5707024 1613152 5707048 1610696 5698920 -1613152 5707048 1614576 5707608 1610696 5698920 1613096 5707024 -1613152 5707048 1613240 5707104 1614576 5707608 1610696 5698920 -1609512 5702904 1612848 5706920 1613096 5707024 1610696 5698920 -1613096 5707024 1613152 5707048 1610696 5698920 1612848 5706920 -1609512 5702904 1611832 5706704 1612848 5706920 1610696 5698920 -1609000 5699616 1609512 5702904 1610696 5698920 1608992 5699536 -1609512 5702904 1612848 5706920 1610696 5698920 1609000 5699616 -1609000 5699616 1609488 5702848 1609512 5702904 1610696 5698920 -1609000 5699616 1608960 5699744 1609488 5702848 1610696 5698920 -1609000 5699616 1608960 5699744 1610696 5698920 1608992 5699536 -1609512 5702904 1612848 5706920 1610696 5698920 1609488 5702848 -1608960 5699744 1609408 5702768 1609488 5702848 1610696 5698920 -1608960 5699744 1609408 5702768 1610696 5698920 1609000 5699616 -1609000 5699616 1608976 5699688 1608960 5699744 1610696 5698920 -1608960 5699744 1609408 5702768 1610696 5698920 1608976 5699688 -1608976 5699688 1608952 5699712 1608960 5699744 1610696 5698920 -1609000 5699616 1608976 5699688 1610696 5698920 1608992 5699536 -1608960 5699744 1608976 5702256 1609408 5702768 1610696 5698920 -1608976 5702256 1609064 5702472 1609408 5702768 1610696 5698920 -1608960 5699744 1608976 5702256 1610696 5698920 1608976 5699688 -1608960 5699744 1608904 5699824 1608976 5702256 1610696 5698920 -1608960 5699744 1608904 5699824 1610696 5698920 1608976 5699688 -1609408 5702768 1609488 5702848 1610696 5698920 1608976 5702256 -1608904 5699824 1608856 5702128 1608976 5702256 1610696 5698920 -1608976 5702256 1609408 5702768 1610696 5698920 1608904 5699824 -1609488 5702848 1609512 5702904 1610696 5698920 1609408 5702768 -1614576 5707608 1614648 5707656 1610696 5698920 1613152 5707048 -1612848 5706920 1612992 5706984 1613096 5707024 1610696 5698920 -1610696 5698920 1608960 5699472 1608992 5699536 1609000 5699616 -1614648 5707656 1614680 5707680 1610696 5698920 1614576 5707608 -1601624 5681136 1610736 5698824 1663880 5646248 1663776 5646144 -1663880 5646248 1610736 5698824 1610696 5698920 1614680 5707680 -1663880 5646248 1610736 5698824 1614680 5707680 1614696 5707712 -1610696 5698920 1614648 5707656 1614680 5707680 1610736 5698824 -1614680 5707680 1663880 5646248 1610736 5698824 1614648 5707656 -1610736 5698824 1601624 5681136 1610696 5698920 1614648 5707656 -1663880 5646248 1601624 5681136 1610736 5698824 1614680 5707680 -1610696 5698920 1610736 5698824 1601624 5681136 1601592 5681216 -1610696 5698920 1614648 5707656 1610736 5698824 1601592 5681216 -1610736 5698824 1663880 5646248 1601624 5681136 1601592 5681216 -1610696 5698920 1610736 5698824 1601592 5681216 1602160 5695928 -1610696 5698920 1610736 5698824 1602160 5695928 1608624 5699288 -1602160 5695928 1602200 5696008 1608624 5699288 1610736 5698824 -1601592 5681216 1601128 5681664 1602160 5695928 1610736 5698824 -1610696 5698920 1614648 5707656 1610736 5698824 1608624 5699288 -1610696 5698920 1610736 5698824 1608624 5699288 1608712 5699312 -1610736 5698824 1602160 5695928 1608624 5699288 1608712 5699312 -1610696 5698920 1610736 5698824 1608712 5699312 1608920 5699432 -1610696 5698920 1614648 5707656 1610736 5698824 1608920 5699432 -1610736 5698824 1608624 5699288 1608712 5699312 1608920 5699432 -1610736 5698824 1601592 5681216 1602160 5695928 1608624 5699288 -1610736 5698824 1601624 5681136 1601592 5681216 1602160 5695928 -1610696 5698920 1610736 5698824 1608920 5699432 1608960 5699472 -1610696 5698920 1614576 5707608 1614648 5707656 1610736 5698824 -1614648 5707656 1614680 5707680 1610736 5698824 1614576 5707608 -1610696 5698920 1614576 5707608 1610736 5698824 1608920 5699432 -1610696 5698920 1613152 5707048 1614576 5707608 1610736 5698824 -1663880 5646248 1610784 5698784 1614680 5707680 1614696 5707712 -1614680 5707680 1610784 5698784 1610736 5698824 1614648 5707656 -1610736 5698824 1614576 5707608 1614648 5707656 1610784 5698784 -1614648 5707656 1614680 5707680 1610784 5698784 1614576 5707608 -1610784 5698784 1663880 5646248 1610736 5698824 1614576 5707608 -1610736 5698824 1610784 5698784 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1610784 5698784 -1610736 5698824 1610784 5698784 1601624 5681136 1601592 5681216 -1610736 5698824 1614576 5707608 1610784 5698784 1601592 5681216 -1610784 5698784 1663880 5646248 1601624 5681136 1601592 5681216 -1610784 5698784 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1610784 5698784 1614648 5707656 -1610736 5698824 1610784 5698784 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1610784 5698784 -1610784 5698784 1601624 5681136 1601592 5681216 1602160 5695928 -1610736 5698824 1614576 5707608 1610784 5698784 1602160 5695928 -1610736 5698824 1610784 5698784 1602160 5695928 1608624 5699288 -1602160 5695928 1602200 5696008 1608624 5699288 1610784 5698784 -1610736 5698824 1610784 5698784 1608624 5699288 1608712 5699312 -1610736 5698824 1614576 5707608 1610784 5698784 1608624 5699288 -1610784 5698784 1601592 5681216 1602160 5695928 1608624 5699288 -1610736 5698824 1610696 5698920 1614576 5707608 1610784 5698784 -1614576 5707608 1614648 5707656 1610784 5698784 1610696 5698920 -1610736 5698824 1610696 5698920 1610784 5698784 1608624 5699288 -1610696 5698920 1613152 5707048 1614576 5707608 1610784 5698784 -1610696 5698920 1613096 5707024 1613152 5707048 1610784 5698784 -1613152 5707048 1613240 5707104 1614576 5707608 1610784 5698784 -1614576 5707608 1614648 5707656 1610784 5698784 1613152 5707048 -1610696 5698920 1613152 5707048 1610784 5698784 1610736 5698824 -1663880 5646248 1610848 5698768 1614680 5707680 1614696 5707712 -1610784 5698784 1610848 5698768 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1610848 5698768 -1610784 5698784 1610848 5698768 1601624 5681136 1601592 5681216 -1610784 5698784 1610848 5698768 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1610848 5698768 -1610848 5698768 1601624 5681136 1601592 5681216 1602160 5695928 -1610848 5698768 1663880 5646248 1601624 5681136 1601592 5681216 -1610784 5698784 1614680 5707680 1610848 5698768 1602160 5695928 -1614680 5707680 1610848 5698768 1610784 5698784 1614648 5707656 -1610784 5698784 1614576 5707608 1614648 5707656 1610848 5698768 -1610784 5698784 1613152 5707048 1614576 5707608 1610848 5698768 -1613152 5707048 1613240 5707104 1614576 5707608 1610848 5698768 -1614576 5707608 1614648 5707656 1610848 5698768 1613152 5707048 -1610848 5698768 1602160 5695928 1610784 5698784 1613152 5707048 -1614648 5707656 1614680 5707680 1610848 5698768 1614576 5707608 -1610848 5698768 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1610848 5698768 1614648 5707656 -1610784 5698784 1610696 5698920 1613152 5707048 1610848 5698768 -1610696 5698920 1613096 5707024 1613152 5707048 1610848 5698768 -1610696 5698920 1612848 5706920 1613096 5707024 1610848 5698768 -1613096 5707024 1613152 5707048 1610848 5698768 1612848 5706920 -1610696 5698920 1609512 5702904 1612848 5706920 1610848 5698768 -1612848 5706920 1613096 5707024 1610848 5698768 1609512 5702904 -1609512 5702904 1611832 5706704 1612848 5706920 1610848 5698768 -1610696 5698920 1609488 5702848 1609512 5702904 1610848 5698768 -1613152 5707048 1614576 5707608 1610848 5698768 1613096 5707024 -1610784 5698784 1610696 5698920 1610848 5698768 1602160 5695928 -1610696 5698920 1609512 5702904 1610848 5698768 1610784 5698784 -1612848 5706920 1612992 5706984 1613096 5707024 1610848 5698768 -1610784 5698784 1610848 5698768 1602160 5695928 1608624 5699288 -1610784 5698784 1610736 5698824 1610696 5698920 1610848 5698768 -1610784 5698784 1610736 5698824 1610848 5698768 1602160 5695928 -1610696 5698920 1609512 5702904 1610848 5698768 1610736 5698824 -1663880 5646248 1610904 5698784 1614680 5707680 1614696 5707712 -1610848 5698768 1610904 5698784 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1610904 5698784 -1610848 5698768 1610904 5698784 1601624 5681136 1601592 5681216 -1610848 5698768 1614680 5707680 1610904 5698784 1601624 5681136 -1614680 5707680 1610904 5698784 1610848 5698768 1614648 5707656 -1610848 5698768 1614576 5707608 1614648 5707656 1610904 5698784 -1610848 5698768 1613152 5707048 1614576 5707608 1610904 5698784 -1613152 5707048 1613240 5707104 1614576 5707608 1610904 5698784 -1610848 5698768 1613096 5707024 1613152 5707048 1610904 5698784 -1610848 5698768 1612848 5706920 1613096 5707024 1610904 5698784 -1610848 5698768 1609512 5702904 1612848 5706920 1610904 5698784 -1612848 5706920 1613096 5707024 1610904 5698784 1609512 5702904 -1609512 5702904 1611832 5706704 1612848 5706920 1610904 5698784 -1610848 5698768 1610696 5698920 1609512 5702904 1610904 5698784 -1609512 5702904 1612848 5706920 1610904 5698784 1610696 5698920 -1610696 5698920 1609488 5702848 1609512 5702904 1610904 5698784 -1613152 5707048 1614576 5707608 1610904 5698784 1613096 5707024 -1613096 5707024 1613152 5707048 1610904 5698784 1612848 5706920 -1614576 5707608 1614648 5707656 1610904 5698784 1613152 5707048 -1610904 5698784 1601624 5681136 1610848 5698768 1610696 5698920 -1614648 5707656 1614680 5707680 1610904 5698784 1614576 5707608 -1610904 5698784 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1610904 5698784 1614648 5707656 -1610848 5698768 1610736 5698824 1610696 5698920 1610904 5698784 -1610696 5698920 1609512 5702904 1610904 5698784 1610736 5698824 -1610848 5698768 1610736 5698824 1610904 5698784 1601624 5681136 -1612848 5706920 1612992 5706984 1613096 5707024 1610904 5698784 -1610848 5698768 1610784 5698784 1610736 5698824 1610904 5698784 -1610848 5698768 1610784 5698784 1610904 5698784 1601624 5681136 -1610736 5698824 1610696 5698920 1610904 5698784 1610784 5698784 -1663880 5646248 1610928 5698816 1614680 5707680 1614696 5707712 -1610904 5698784 1610928 5698816 1663880 5646248 1601624 5681136 -1614680 5707680 1610928 5698816 1610904 5698784 1614648 5707656 -1610904 5698784 1614576 5707608 1614648 5707656 1610928 5698816 -1610904 5698784 1613152 5707048 1614576 5707608 1610928 5698816 -1613152 5707048 1613240 5707104 1614576 5707608 1610928 5698816 -1610904 5698784 1613096 5707024 1613152 5707048 1610928 5698816 -1610904 5698784 1612848 5706920 1613096 5707024 1610928 5698816 -1610904 5698784 1609512 5702904 1612848 5706920 1610928 5698816 -1610904 5698784 1610696 5698920 1609512 5702904 1610928 5698816 -1609512 5702904 1612848 5706920 1610928 5698816 1610696 5698920 -1609512 5702904 1611832 5706704 1612848 5706920 1610928 5698816 -1610904 5698784 1610736 5698824 1610696 5698920 1610928 5698816 -1610696 5698920 1609512 5702904 1610928 5698816 1610736 5698824 -1610696 5698920 1609488 5702848 1609512 5702904 1610928 5698816 -1610696 5698920 1609488 5702848 1610928 5698816 1610736 5698824 -1609512 5702904 1612848 5706920 1610928 5698816 1609488 5702848 -1613096 5707024 1613152 5707048 1610928 5698816 1612848 5706920 -1612848 5706920 1613096 5707024 1610928 5698816 1609512 5702904 -1613152 5707048 1614576 5707608 1610928 5698816 1613096 5707024 -1614576 5707608 1614648 5707656 1610928 5698816 1613152 5707048 -1610928 5698816 1663880 5646248 1610904 5698784 1610736 5698824 -1614648 5707656 1614680 5707680 1610928 5698816 1614576 5707608 -1610696 5698920 1609408 5702768 1609488 5702848 1610928 5698816 -1610904 5698784 1610784 5698784 1610736 5698824 1610928 5698816 -1610736 5698824 1610696 5698920 1610928 5698816 1610784 5698784 -1610904 5698784 1610784 5698784 1610928 5698816 1663880 5646248 -1614680 5707680 1663880 5646248 1610928 5698816 1614648 5707656 -1612848 5706920 1612992 5706984 1613096 5707024 1610928 5698816 -1610904 5698784 1610848 5698768 1610784 5698784 1610928 5698816 -1610904 5698784 1610848 5698768 1610928 5698816 1663880 5646248 -1610784 5698784 1610736 5698824 1610928 5698816 1610848 5698768 -1609512 5702904 1610920 5699248 1610928 5698816 1609488 5702848 -1612848 5706920 1610920 5699248 1609512 5702904 1611832 5706704 -1610928 5698816 1610696 5698920 1609488 5702848 1610920 5699248 -1610928 5698816 1610736 5698824 1610696 5698920 1610920 5699248 -1609488 5702848 1609512 5702904 1610920 5699248 1610696 5698920 -1610928 5698816 1610920 5699248 1612848 5706920 1613096 5707024 -1610928 5698816 1610920 5699248 1613096 5707024 1613152 5707048 -1610920 5699248 1612848 5706920 1613096 5707024 1613152 5707048 -1610928 5698816 1610920 5699248 1613152 5707048 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1610920 5699248 -1610920 5699248 1613096 5707024 1613152 5707048 1614576 5707608 -1610928 5698816 1610920 5699248 1614576 5707608 1614648 5707656 -1610920 5699248 1613152 5707048 1614576 5707608 1614648 5707656 -1610928 5698816 1610920 5699248 1614648 5707656 1614680 5707680 -1610920 5699248 1614576 5707608 1614648 5707656 1614680 5707680 -1610696 5698920 1609408 5702768 1609488 5702848 1610920 5699248 -1609488 5702848 1609512 5702904 1610920 5699248 1609408 5702768 -1610696 5698920 1609408 5702768 1610920 5699248 1610928 5698816 -1610696 5698920 1608976 5702256 1609408 5702768 1610920 5699248 -1608976 5702256 1609064 5702472 1609408 5702768 1610920 5699248 -1610696 5698920 1608976 5702256 1610920 5699248 1610928 5698816 -1610696 5698920 1608904 5699824 1608976 5702256 1610920 5699248 -1610696 5698920 1608960 5699744 1608904 5699824 1610920 5699248 -1610696 5698920 1608976 5699688 1608960 5699744 1610920 5699248 -1608976 5699688 1608952 5699712 1608960 5699744 1610920 5699248 -1608960 5699744 1608904 5699824 1610920 5699248 1608976 5699688 -1610696 5698920 1608976 5699688 1610920 5699248 1610928 5698816 -1608976 5702256 1609408 5702768 1610920 5699248 1608904 5699824 -1610696 5698920 1609000 5699616 1608976 5699688 1610920 5699248 -1608976 5699688 1608960 5699744 1610920 5699248 1609000 5699616 -1610696 5698920 1608992 5699536 1609000 5699616 1610920 5699248 -1610696 5698920 1609000 5699616 1610920 5699248 1610928 5698816 -1608904 5699824 1608856 5702128 1608976 5702256 1610920 5699248 -1608904 5699824 1608976 5702256 1610920 5699248 1608960 5699744 -1609408 5702768 1609488 5702848 1610920 5699248 1608976 5702256 -1610920 5699248 1614680 5707680 1610928 5698816 1610696 5698920 -1610928 5698816 1610920 5699248 1614680 5707680 1663880 5646248 -1610920 5699248 1609512 5702904 1612848 5706920 1613096 5707024 -1609512 5702904 1612848 5706920 1610920 5699248 1609488 5702848 -1612848 5706920 1612992 5706984 1613096 5707024 1610920 5699248 -1610920 5699248 1610880 5699296 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1610880 5699296 -1608976 5702256 1610880 5699296 1608904 5699824 1608856 5702128 -1608904 5699824 1610880 5699296 1610920 5699248 1608960 5699744 -1610920 5699248 1608976 5699688 1608960 5699744 1610880 5699296 -1610920 5699248 1609000 5699616 1608976 5699688 1610880 5699296 -1608976 5699688 1608952 5699712 1608960 5699744 1610880 5699296 -1608976 5699688 1608960 5699744 1610880 5699296 1609000 5699616 -1610920 5699248 1610696 5698920 1609000 5699616 1610880 5699296 -1609000 5699616 1608976 5699688 1610880 5699296 1610696 5698920 -1610696 5698920 1608992 5699536 1609000 5699616 1610880 5699296 -1610920 5699248 1610928 5698816 1610696 5698920 1610880 5699296 -1608960 5699744 1608904 5699824 1610880 5699296 1608976 5699688 -1610920 5699248 1610880 5699296 1609408 5702768 1609488 5702848 -1610920 5699248 1610880 5699296 1609488 5702848 1609512 5702904 -1610880 5699296 1608976 5702256 1609408 5702768 1609488 5702848 -1610880 5699296 1609408 5702768 1609488 5702848 1609512 5702904 -1610920 5699248 1610696 5698920 1610880 5699296 1609512 5702904 -1610920 5699248 1610880 5699296 1609512 5702904 1612848 5706920 -1610880 5699296 1609488 5702848 1609512 5702904 1612848 5706920 -1609512 5702904 1611832 5706704 1612848 5706920 1610880 5699296 -1610920 5699248 1610880 5699296 1612848 5706920 1613096 5707024 -1610920 5699248 1610696 5698920 1610880 5699296 1612848 5706920 -1610880 5699296 1608904 5699824 1608976 5702256 1609408 5702768 -1608904 5699824 1608976 5702256 1610880 5699296 1608960 5699744 -1608976 5702256 1610856 5699312 1608904 5699824 1608856 5702128 -1610880 5699296 1610856 5699312 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1610856 5699312 -1610880 5699296 1610856 5699312 1609408 5702768 1609488 5702848 -1610880 5699296 1610856 5699312 1609488 5702848 1609512 5702904 -1610880 5699296 1610856 5699312 1609512 5702904 1612848 5706920 -1610856 5699312 1609408 5702768 1609488 5702848 1609512 5702904 -1610856 5699312 1608976 5702256 1609408 5702768 1609488 5702848 -1610880 5699296 1608904 5699824 1610856 5699312 1609512 5702904 -1608904 5699824 1610856 5699312 1610880 5699296 1608960 5699744 -1608904 5699824 1608976 5702256 1610856 5699312 1608960 5699744 -1610880 5699296 1608976 5699688 1608960 5699744 1610856 5699312 -1608976 5699688 1608952 5699712 1608960 5699744 1610856 5699312 -1610880 5699296 1609000 5699616 1608976 5699688 1610856 5699312 -1610880 5699296 1610696 5698920 1609000 5699616 1610856 5699312 -1609000 5699616 1608976 5699688 1610856 5699312 1610696 5698920 -1610696 5698920 1608992 5699536 1609000 5699616 1610856 5699312 -1610696 5698920 1608992 5699536 1610856 5699312 1610880 5699296 -1609000 5699616 1608976 5699688 1610856 5699312 1608992 5699536 -1610880 5699296 1610920 5699248 1610696 5698920 1610856 5699312 -1610696 5698920 1608992 5699536 1610856 5699312 1610920 5699248 -1610920 5699248 1610928 5698816 1610696 5698920 1610856 5699312 -1608976 5699688 1608960 5699744 1610856 5699312 1609000 5699616 -1610856 5699312 1609512 5702904 1610880 5699296 1610920 5699248 -1608960 5699744 1608904 5699824 1610856 5699312 1608976 5699688 -1610856 5699312 1608904 5699824 1608976 5702256 1609408 5702768 -1610696 5698920 1608960 5699472 1608992 5699536 1610856 5699312 -1610696 5698920 1610832 5699304 1610856 5699312 1610920 5699248 -1610832 5699304 1608992 5699536 1610856 5699312 1610920 5699248 -1610696 5698920 1608992 5699536 1610832 5699304 1610920 5699248 -1610856 5699312 1610832 5699304 1608992 5699536 1609000 5699616 -1610856 5699312 1610920 5699248 1610832 5699304 1609000 5699616 -1610832 5699304 1610696 5698920 1608992 5699536 1609000 5699616 -1610856 5699312 1610832 5699304 1609000 5699616 1608976 5699688 -1610856 5699312 1610920 5699248 1610832 5699304 1608976 5699688 -1610832 5699304 1608992 5699536 1609000 5699616 1608976 5699688 -1610696 5698920 1610832 5699304 1610920 5699248 1610928 5698816 -1610856 5699312 1610880 5699296 1610920 5699248 1610832 5699304 -1610856 5699312 1610880 5699296 1610832 5699304 1608976 5699688 -1610920 5699248 1610696 5698920 1610832 5699304 1610880 5699296 -1610856 5699312 1610832 5699304 1608976 5699688 1608960 5699744 -1610856 5699312 1610880 5699296 1610832 5699304 1608960 5699744 -1608976 5699688 1608952 5699712 1608960 5699744 1610832 5699304 -1610832 5699304 1609000 5699616 1608976 5699688 1608960 5699744 -1610856 5699312 1610832 5699304 1608960 5699744 1608904 5699824 -1610856 5699312 1610832 5699304 1608904 5699824 1608976 5702256 -1610856 5699312 1610880 5699296 1610832 5699304 1608976 5702256 -1608904 5699824 1608856 5702128 1608976 5702256 1610832 5699304 -1610832 5699304 1608976 5699688 1608960 5699744 1608904 5699824 -1610832 5699304 1608960 5699744 1608904 5699824 1608976 5702256 -1610856 5699312 1610832 5699304 1608976 5702256 1609408 5702768 -1608992 5699536 1610832 5699304 1610696 5698920 1608960 5699472 -1610832 5699304 1610768 5699208 1608992 5699536 1609000 5699616 -1610832 5699304 1610696 5698920 1610768 5699208 1609000 5699616 -1610696 5698920 1610768 5699208 1610832 5699304 1610920 5699248 -1610768 5699208 1609000 5699616 1610832 5699304 1610920 5699248 -1610768 5699208 1610696 5698920 1608992 5699536 1609000 5699616 -1610696 5698920 1608992 5699536 1610768 5699208 1610920 5699248 -1610832 5699304 1610880 5699296 1610920 5699248 1610768 5699208 -1610832 5699304 1610880 5699296 1610768 5699208 1609000 5699616 -1610920 5699248 1610696 5698920 1610768 5699208 1610880 5699296 -1610832 5699304 1610768 5699208 1609000 5699616 1608976 5699688 -1610696 5698920 1610768 5699208 1610920 5699248 1610928 5698816 -1610768 5699208 1610880 5699296 1610920 5699248 1610928 5698816 -1610696 5698920 1608992 5699536 1610768 5699208 1610928 5698816 -1610696 5698920 1610768 5699208 1610928 5698816 1610736 5698824 -1610832 5699304 1610856 5699312 1610880 5699296 1610768 5699208 -1608992 5699536 1610768 5699208 1610696 5698920 1608960 5699472 -1610768 5699208 1610736 5699128 1608992 5699536 1609000 5699616 -1610736 5699128 1610696 5698920 1608992 5699536 1609000 5699616 -1610768 5699208 1610736 5699128 1609000 5699616 1610832 5699304 -1610768 5699208 1610696 5698920 1610736 5699128 1609000 5699616 -1610696 5698920 1610736 5699128 1610768 5699208 1610928 5698816 -1610696 5698920 1608992 5699536 1610736 5699128 1610928 5698816 -1610736 5699128 1609000 5699616 1610768 5699208 1610928 5698816 -1610696 5698920 1610736 5699128 1610928 5698816 1610736 5698824 -1610768 5699208 1610920 5699248 1610928 5698816 1610736 5699128 -1610768 5699208 1610880 5699296 1610920 5699248 1610736 5699128 -1610768 5699208 1610920 5699248 1610736 5699128 1609000 5699616 -1610928 5698816 1610696 5698920 1610736 5699128 1610920 5699248 -1608992 5699536 1610736 5699128 1610696 5698920 1608960 5699472 -1610736 5699128 1610720 5699056 1608992 5699536 1609000 5699616 -1610696 5698920 1610720 5699056 1610736 5699128 1610928 5698816 -1610720 5699056 1608992 5699536 1610736 5699128 1610928 5698816 -1610696 5698920 1608992 5699536 1610720 5699056 1610928 5698816 -1610736 5699128 1610920 5699248 1610928 5698816 1610720 5699056 -1610736 5699128 1610920 5699248 1610720 5699056 1608992 5699536 -1610928 5698816 1610696 5698920 1610720 5699056 1610920 5699248 -1610696 5698920 1610720 5699056 1610928 5698816 1610736 5698824 -1610736 5699128 1610768 5699208 1610920 5699248 1610720 5699056 -1608992 5699536 1610720 5699056 1610696 5698920 1608960 5699472 -1610720 5699056 1610696 5698960 1608992 5699536 1610736 5699128 -1610696 5698920 1610696 5698960 1610720 5699056 1610928 5698816 -1610720 5699056 1610920 5699248 1610928 5698816 1610696 5698960 -1610696 5698960 1608992 5699536 1610720 5699056 1610928 5698816 -1610696 5698920 1608992 5699536 1610696 5698960 1610928 5698816 -1610696 5698920 1610696 5698960 1610928 5698816 1610736 5698824 -1608992 5699536 1610696 5698960 1610696 5698920 1608960 5699472 -1608992 5699536 1610720 5699056 1610696 5698960 1608960 5699472 -1610696 5698960 1610928 5698816 1610696 5698920 1608960 5699472 -1610696 5698920 1608920 5699432 1608960 5699472 1610696 5698960 -1663880 5646248 1611264 5699520 1614680 5707680 1614696 5707712 -1610928 5698816 1611264 5699520 1663880 5646248 1610904 5698784 -1614680 5707680 1611264 5699520 1610928 5698816 1610920 5699248 -1611264 5699520 1663880 5646248 1610928 5698816 1610920 5699248 -1614680 5707680 1663880 5646248 1611264 5699520 1610920 5699248 -1614680 5707680 1611264 5699520 1610920 5699248 1614648 5707656 -1614680 5707680 1663880 5646248 1611264 5699520 1614648 5707656 -1610920 5699248 1614576 5707608 1614648 5707656 1611264 5699520 -1610920 5699248 1613152 5707048 1614576 5707608 1611264 5699520 -1613152 5707048 1613240 5707104 1614576 5707608 1611264 5699520 -1610920 5699248 1613096 5707024 1613152 5707048 1611264 5699520 -1610920 5699248 1612848 5706920 1613096 5707024 1611264 5699520 -1613096 5707024 1613152 5707048 1611264 5699520 1612848 5706920 -1613152 5707048 1614576 5707608 1611264 5699520 1613096 5707024 -1614576 5707608 1614648 5707656 1611264 5699520 1613152 5707048 -1614648 5707656 1614680 5707680 1611264 5699520 1614576 5707608 -1611264 5699520 1610928 5698816 1610920 5699248 1612848 5706920 -1610920 5699248 1610880 5699296 1612848 5706920 1611264 5699520 -1612848 5706920 1613096 5707024 1611264 5699520 1610880 5699296 -1610920 5699248 1610880 5699296 1611264 5699520 1610928 5698816 -1610880 5699296 1609512 5702904 1612848 5706920 1611264 5699520 -1610880 5699296 1610856 5699312 1609512 5702904 1611264 5699520 -1609512 5702904 1611832 5706704 1612848 5706920 1611264 5699520 -1612848 5706920 1613096 5707024 1611264 5699520 1609512 5702904 -1610856 5699312 1609488 5702848 1609512 5702904 1611264 5699520 -1610856 5699312 1609488 5702848 1611264 5699520 1610880 5699296 -1610856 5699312 1609408 5702768 1609488 5702848 1611264 5699520 -1610856 5699312 1609408 5702768 1611264 5699520 1610880 5699296 -1609488 5702848 1609512 5702904 1611264 5699520 1609408 5702768 -1610880 5699296 1610856 5699312 1611264 5699520 1610920 5699248 -1609512 5702904 1612848 5706920 1611264 5699520 1609488 5702848 -1610856 5699312 1608976 5702256 1609408 5702768 1611264 5699520 -1608976 5702256 1609064 5702472 1609408 5702768 1611264 5699520 -1610856 5699312 1608976 5702256 1611264 5699520 1610880 5699296 -1609408 5702768 1609488 5702848 1611264 5699520 1608976 5702256 -1610856 5699312 1610832 5699304 1608976 5702256 1611264 5699520 -1610832 5699304 1608904 5699824 1608976 5702256 1611264 5699520 -1610856 5699312 1610832 5699304 1611264 5699520 1610880 5699296 -1608904 5699824 1608856 5702128 1608976 5702256 1611264 5699520 -1608976 5702256 1609408 5702768 1611264 5699520 1608904 5699824 -1610832 5699304 1608960 5699744 1608904 5699824 1611264 5699520 -1610832 5699304 1608904 5699824 1611264 5699520 1610856 5699312 -1612848 5706920 1612992 5706984 1613096 5707024 1611264 5699520 -1611264 5699520 1611288 5699384 1610928 5698816 1610920 5699248 -1663880 5646248 1611288 5699384 1611264 5699520 1614680 5707680 -1663880 5646248 1611288 5699384 1614680 5707680 1614696 5707712 -1611264 5699520 1614680 5707680 1611288 5699384 1610920 5699248 -1611264 5699520 1614648 5707656 1614680 5707680 1611288 5699384 -1614680 5707680 1663880 5646248 1611288 5699384 1614648 5707656 -1611264 5699520 1614648 5707656 1611288 5699384 1610920 5699248 -1611288 5699384 1663880 5646248 1610928 5698816 1610920 5699248 -1663880 5646248 1610928 5698816 1611288 5699384 1614680 5707680 -1611264 5699520 1614576 5707608 1614648 5707656 1611288 5699384 -1610928 5698816 1611288 5699384 1663880 5646248 1610904 5698784 -1611264 5699520 1611288 5699384 1610920 5699248 1610880 5699296 -1611288 5699384 1610928 5698816 1610920 5699248 1610880 5699296 -1611264 5699520 1614648 5707656 1611288 5699384 1610880 5699296 -1611264 5699520 1611288 5699384 1610880 5699296 1610856 5699312 -1611288 5699384 1611328 5699264 1610928 5698816 1610920 5699248 -1611288 5699384 1611328 5699264 1610920 5699248 1610880 5699296 -1611288 5699384 1663880 5646248 1611328 5699264 1610920 5699248 -1663880 5646248 1611328 5699264 1611288 5699384 1614680 5707680 -1663880 5646248 1611328 5699264 1614680 5707680 1614696 5707712 -1611288 5699384 1614648 5707656 1614680 5707680 1611328 5699264 -1611288 5699384 1611264 5699520 1614648 5707656 1611328 5699264 -1614648 5707656 1614680 5707680 1611328 5699264 1611264 5699520 -1611328 5699264 1610920 5699248 1611288 5699384 1611264 5699520 -1614680 5707680 1663880 5646248 1611328 5699264 1614648 5707656 -1611328 5699264 1663880 5646248 1610928 5698816 1610920 5699248 -1663880 5646248 1610928 5698816 1611328 5699264 1614680 5707680 -1611264 5699520 1614576 5707608 1614648 5707656 1611328 5699264 -1614648 5707656 1614680 5707680 1611328 5699264 1614576 5707608 -1611264 5699520 1614576 5707608 1611328 5699264 1611288 5699384 -1611264 5699520 1613152 5707048 1614576 5707608 1611328 5699264 -1610928 5698816 1611328 5699264 1663880 5646248 1610904 5698784 -1610928 5698816 1610920 5699248 1611328 5699264 1610904 5698784 -1611328 5699264 1614680 5707680 1663880 5646248 1610904 5698784 -1663880 5646248 1601624 5681136 1610904 5698784 1611328 5699264 -1663880 5646248 1611352 5699232 1611328 5699264 1614680 5707680 -1663880 5646248 1611352 5699232 1614680 5707680 1614696 5707712 -1611328 5699264 1614648 5707656 1614680 5707680 1611352 5699232 -1611328 5699264 1614576 5707608 1614648 5707656 1611352 5699232 -1614648 5707656 1614680 5707680 1611352 5699232 1614576 5707608 -1611352 5699232 1610904 5698784 1611328 5699264 1614576 5707608 -1614680 5707680 1663880 5646248 1611352 5699232 1614648 5707656 -1663880 5646248 1610904 5698784 1611352 5699232 1614680 5707680 -1610904 5698784 1611352 5699232 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1611352 5699232 -1610904 5698784 1611328 5699264 1611352 5699232 1601624 5681136 -1611352 5699232 1614680 5707680 1663880 5646248 1601624 5681136 -1610904 5698784 1611352 5699232 1601624 5681136 1610848 5698768 -1611328 5699264 1611264 5699520 1614576 5707608 1611352 5699232 -1614576 5707608 1614648 5707656 1611352 5699232 1611264 5699520 -1611328 5699264 1611288 5699384 1611264 5699520 1611352 5699232 -1611328 5699264 1611288 5699384 1611352 5699232 1610904 5698784 -1611264 5699520 1613152 5707048 1614576 5707608 1611352 5699232 -1611264 5699520 1614576 5707608 1611352 5699232 1611288 5699384 -1611328 5699264 1611352 5699232 1610904 5698784 1610928 5698816 -1611328 5699264 1611352 5699232 1610928 5698816 1610920 5699248 -1611328 5699264 1611352 5699232 1610920 5699248 1611288 5699384 -1611328 5699264 1611288 5699384 1611352 5699232 1610920 5699248 -1611352 5699232 1601624 5681136 1610904 5698784 1610928 5698816 -1611352 5699232 1610904 5698784 1610928 5698816 1610920 5699248 -1663880 5646248 1611400 5699192 1614680 5707680 1614696 5707712 -1614680 5707680 1611400 5699192 1611352 5699232 1614648 5707656 -1611352 5699232 1614576 5707608 1614648 5707656 1611400 5699192 -1611352 5699232 1611264 5699520 1614576 5707608 1611400 5699192 -1614576 5707608 1614648 5707656 1611400 5699192 1611264 5699520 -1614648 5707656 1614680 5707680 1611400 5699192 1614576 5707608 -1611400 5699192 1663880 5646248 1611352 5699232 1611264 5699520 -1611352 5699232 1611400 5699192 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1611400 5699192 -1611352 5699232 1611264 5699520 1611400 5699192 1601624 5681136 -1611400 5699192 1614680 5707680 1663880 5646248 1601624 5681136 -1611264 5699520 1613152 5707048 1614576 5707608 1611400 5699192 -1611352 5699232 1611400 5699192 1601624 5681136 1610904 5698784 -1611352 5699232 1611400 5699192 1610904 5698784 1610928 5698816 -1611352 5699232 1611264 5699520 1611400 5699192 1610928 5698816 -1611400 5699192 1663880 5646248 1601624 5681136 1610904 5698784 -1601624 5681136 1610848 5698768 1610904 5698784 1611400 5699192 -1611400 5699192 1601624 5681136 1610904 5698784 1610928 5698816 -1611352 5699232 1611288 5699384 1611264 5699520 1611400 5699192 -1611264 5699520 1614576 5707608 1611400 5699192 1611288 5699384 -1611352 5699232 1611328 5699264 1611288 5699384 1611400 5699192 -1611352 5699232 1611328 5699264 1611400 5699192 1610928 5698816 -1611288 5699384 1611264 5699520 1611400 5699192 1611328 5699264 -1614680 5707680 1663880 5646248 1611400 5699192 1614648 5707656 -1611352 5699232 1611400 5699192 1610928 5698816 1610920 5699248 -1663880 5646248 1611424 5699184 1614680 5707680 1614696 5707712 -1611400 5699192 1611424 5699184 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1611424 5699184 -1611400 5699192 1611424 5699184 1601624 5681136 1610904 5698784 -1611424 5699184 1663880 5646248 1601624 5681136 1610904 5698784 -1601624 5681136 1610848 5698768 1610904 5698784 1611424 5699184 -1611400 5699192 1611424 5699184 1610904 5698784 1610928 5698816 -1611400 5699192 1611424 5699184 1610928 5698816 1611352 5699232 -1611424 5699184 1601624 5681136 1610904 5698784 1610928 5698816 -1611400 5699192 1614680 5707680 1611424 5699184 1610928 5698816 -1614680 5707680 1611424 5699184 1611400 5699192 1614648 5707656 -1611400 5699192 1614576 5707608 1614648 5707656 1611424 5699184 -1611400 5699192 1611264 5699520 1614576 5707608 1611424 5699184 -1611400 5699192 1611288 5699384 1611264 5699520 1611424 5699184 -1611264 5699520 1614576 5707608 1611424 5699184 1611288 5699384 -1614576 5707608 1614648 5707656 1611424 5699184 1611264 5699520 -1611264 5699520 1613152 5707048 1614576 5707608 1611424 5699184 -1611400 5699192 1611328 5699264 1611288 5699384 1611424 5699184 -1611288 5699384 1611264 5699520 1611424 5699184 1611328 5699264 -1611400 5699192 1611352 5699232 1611328 5699264 1611424 5699184 -1611328 5699264 1611288 5699384 1611424 5699184 1611352 5699232 -1611424 5699184 1610928 5698816 1611400 5699192 1611352 5699232 -1614648 5707656 1614680 5707680 1611424 5699184 1614576 5707608 -1611424 5699184 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1611424 5699184 1614648 5707656 -1663880 5646248 1611448 5699192 1614680 5707680 1614696 5707712 -1611424 5699184 1611448 5699192 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1611448 5699192 -1611424 5699184 1611448 5699192 1601624 5681136 1610904 5698784 -1611424 5699184 1611448 5699192 1610904 5698784 1610928 5698816 -1611448 5699192 1601624 5681136 1610904 5698784 1610928 5698816 -1601624 5681136 1610848 5698768 1610904 5698784 1611448 5699192 -1611424 5699184 1611448 5699192 1610928 5698816 1611400 5699192 -1611448 5699192 1663880 5646248 1601624 5681136 1610904 5698784 -1611424 5699184 1614680 5707680 1611448 5699192 1610928 5698816 -1614680 5707680 1611448 5699192 1611424 5699184 1614648 5707656 -1611424 5699184 1614576 5707608 1614648 5707656 1611448 5699192 -1611424 5699184 1611264 5699520 1614576 5707608 1611448 5699192 -1611424 5699184 1611288 5699384 1611264 5699520 1611448 5699192 -1611424 5699184 1611328 5699264 1611288 5699384 1611448 5699192 -1611288 5699384 1611264 5699520 1611448 5699192 1611328 5699264 -1611264 5699520 1614576 5707608 1611448 5699192 1611288 5699384 -1611264 5699520 1613152 5707048 1614576 5707608 1611448 5699192 -1611424 5699184 1611352 5699232 1611328 5699264 1611448 5699192 -1611328 5699264 1611288 5699384 1611448 5699192 1611352 5699232 -1611424 5699184 1611400 5699192 1611352 5699232 1611448 5699192 -1611352 5699232 1611328 5699264 1611448 5699192 1611400 5699192 -1614576 5707608 1614648 5707656 1611448 5699192 1611264 5699520 -1611448 5699192 1610928 5698816 1611424 5699184 1611400 5699192 -1614648 5707656 1614680 5707680 1611448 5699192 1614576 5707608 -1611448 5699192 1614680 5707680 1663880 5646248 1601624 5681136 -1614680 5707680 1663880 5646248 1611448 5699192 1614648 5707656 -1663880 5646248 1611528 5699256 1614680 5707680 1614696 5707712 -1611448 5699192 1611528 5699256 1663880 5646248 1601624 5681136 -1663880 5646248 1663776 5646144 1601624 5681136 1611528 5699256 -1611448 5699192 1611528 5699256 1601624 5681136 1610904 5698784 -1611448 5699192 1614680 5707680 1611528 5699256 1601624 5681136 -1614680 5707680 1611528 5699256 1611448 5699192 1614648 5707656 -1611448 5699192 1614576 5707608 1614648 5707656 1611528 5699256 -1611448 5699192 1611264 5699520 1614576 5707608 1611528 5699256 -1611448 5699192 1611288 5699384 1611264 5699520 1611528 5699256 -1611448 5699192 1611328 5699264 1611288 5699384 1611528 5699256 -1611448 5699192 1611352 5699232 1611328 5699264 1611528 5699256 -1611328 5699264 1611288 5699384 1611528 5699256 1611352 5699232 -1611288 5699384 1611264 5699520 1611528 5699256 1611328 5699264 -1611264 5699520 1613152 5707048 1614576 5707608 1611528 5699256 -1613152 5707048 1613240 5707104 1614576 5707608 1611528 5699256 -1611264 5699520 1613096 5707024 1613152 5707048 1611528 5699256 -1611264 5699520 1612848 5706920 1613096 5707024 1611528 5699256 -1611264 5699520 1609512 5702904 1612848 5706920 1611528 5699256 -1613096 5707024 1613152 5707048 1611528 5699256 1612848 5706920 -1613152 5707048 1614576 5707608 1611528 5699256 1613096 5707024 -1611448 5699192 1611400 5699192 1611352 5699232 1611528 5699256 -1611264 5699520 1612848 5706920 1611528 5699256 1611288 5699384 -1614576 5707608 1614648 5707656 1611528 5699256 1613152 5707048 -1611528 5699256 1601624 5681136 1611448 5699192 1611352 5699232 -1614648 5707656 1614680 5707680 1611528 5699256 1614576 5707608 -1663880 5646248 1601624 5681136 1611528 5699256 1614696 5707712 -1611528 5699256 1614648 5707656 1614680 5707680 1614696 5707712 -1612848 5706920 1612992 5706984 1613096 5707024 1611528 5699256 -1663880 5646248 1611528 5699256 1614696 5707712 1663944 5646256 -1614696 5707712 1611560 5699312 1611528 5699256 1614680 5707680 -1614696 5707712 1663880 5646248 1611560 5699312 1614680 5707680 -1611528 5699256 1611560 5699312 1663880 5646248 1601624 5681136 -1611560 5699312 1663880 5646248 1611528 5699256 1614680 5707680 -1611528 5699256 1614648 5707656 1614680 5707680 1611560 5699312 -1614680 5707680 1614696 5707712 1611560 5699312 1614648 5707656 -1611528 5699256 1614576 5707608 1614648 5707656 1611560 5699312 -1611528 5699256 1613152 5707048 1614576 5707608 1611560 5699312 -1613152 5707048 1613240 5707104 1614576 5707608 1611560 5699312 -1611528 5699256 1613096 5707024 1613152 5707048 1611560 5699312 -1611528 5699256 1612848 5706920 1613096 5707024 1611560 5699312 -1611528 5699256 1611264 5699520 1612848 5706920 1611560 5699312 -1611264 5699520 1609512 5702904 1612848 5706920 1611560 5699312 -1612848 5706920 1613096 5707024 1611560 5699312 1611264 5699520 -1613096 5707024 1613152 5707048 1611560 5699312 1612848 5706920 -1611528 5699256 1611288 5699384 1611264 5699520 1611560 5699312 -1611528 5699256 1611328 5699264 1611288 5699384 1611560 5699312 -1611528 5699256 1611352 5699232 1611328 5699264 1611560 5699312 -1611264 5699520 1612848 5706920 1611560 5699312 1611288 5699384 -1611288 5699384 1611264 5699520 1611560 5699312 1611328 5699264 -1613152 5707048 1614576 5707608 1611560 5699312 1613096 5707024 -1614576 5707608 1614648 5707656 1611560 5699312 1613152 5707048 -1611528 5699256 1611328 5699264 1611560 5699312 1663880 5646248 -1614648 5707656 1614680 5707680 1611560 5699312 1614576 5707608 -1612848 5706920 1612992 5706984 1613096 5707024 1611560 5699312 -1663880 5646248 1611560 5699312 1614696 5707712 1663944 5646256 -1611264 5699520 1611552 5699400 1611560 5699312 1611288 5699384 -1611552 5699400 1612848 5706920 1611560 5699312 1611288 5699384 -1611264 5699520 1612848 5706920 1611552 5699400 1611288 5699384 -1612848 5706920 1611552 5699400 1611264 5699520 1609512 5702904 -1612848 5706920 1611560 5699312 1611552 5699400 1609512 5702904 -1611552 5699400 1611288 5699384 1611264 5699520 1609512 5702904 -1612848 5706920 1611552 5699400 1609512 5702904 1611832 5706704 -1611560 5699312 1611552 5699400 1612848 5706920 1613096 5707024 -1611560 5699312 1611288 5699384 1611552 5699400 1613096 5707024 -1611552 5699400 1609512 5702904 1612848 5706920 1613096 5707024 -1611560 5699312 1611552 5699400 1613096 5707024 1613152 5707048 -1611560 5699312 1611288 5699384 1611552 5699400 1613152 5707048 -1611552 5699400 1612848 5706920 1613096 5707024 1613152 5707048 -1611560 5699312 1611328 5699264 1611288 5699384 1611552 5699400 -1611560 5699312 1611528 5699256 1611328 5699264 1611552 5699400 -1611528 5699256 1611352 5699232 1611328 5699264 1611552 5699400 -1611560 5699312 1611528 5699256 1611552 5699400 1613152 5707048 -1611288 5699384 1611264 5699520 1611552 5699400 1611328 5699264 -1611328 5699264 1611288 5699384 1611552 5699400 1611528 5699256 -1611560 5699312 1611552 5699400 1613152 5707048 1614576 5707608 -1611560 5699312 1611528 5699256 1611552 5699400 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1611552 5699400 -1611552 5699400 1613096 5707024 1613152 5707048 1614576 5707608 -1611560 5699312 1611552 5699400 1614576 5707608 1614648 5707656 -1611560 5699312 1611528 5699256 1611552 5699400 1614648 5707656 -1611552 5699400 1613152 5707048 1614576 5707608 1614648 5707656 -1611560 5699312 1611552 5699400 1614648 5707656 1614680 5707680 -1611560 5699312 1611552 5699400 1614680 5707680 1614696 5707712 -1611560 5699312 1611528 5699256 1611552 5699400 1614680 5707680 -1611552 5699400 1614576 5707608 1614648 5707656 1614680 5707680 -1611264 5699520 1609488 5702848 1609512 5702904 1611552 5699400 -1612848 5706920 1612992 5706984 1613096 5707024 1611552 5699400 -1611552 5699400 1611528 5699488 1612848 5706920 1613096 5707024 -1611552 5699400 1609512 5702904 1611528 5699488 1613096 5707024 -1611528 5699488 1609512 5702904 1612848 5706920 1613096 5707024 -1612848 5706920 1611528 5699488 1609512 5702904 1611832 5706704 -1609512 5702904 1611528 5699488 1611552 5699400 1611264 5699520 -1611528 5699488 1613096 5707024 1611552 5699400 1611264 5699520 -1611552 5699400 1611288 5699384 1611264 5699520 1611528 5699488 -1611552 5699400 1611288 5699384 1611528 5699488 1613096 5707024 -1609512 5702904 1612848 5706920 1611528 5699488 1611264 5699520 -1611552 5699400 1611328 5699264 1611288 5699384 1611528 5699488 -1611264 5699520 1609512 5702904 1611528 5699488 1611288 5699384 -1611552 5699400 1611528 5699488 1613096 5707024 1613152 5707048 -1611528 5699488 1612848 5706920 1613096 5707024 1613152 5707048 -1611552 5699400 1611288 5699384 1611528 5699488 1613152 5707048 -1611552 5699400 1611528 5699488 1613152 5707048 1614576 5707608 -1611552 5699400 1611288 5699384 1611528 5699488 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1611528 5699488 -1611528 5699488 1613096 5707024 1613152 5707048 1614576 5707608 -1611552 5699400 1611528 5699488 1614576 5707608 1614648 5707656 -1609512 5702904 1611528 5699488 1611264 5699520 1609488 5702848 -1609512 5702904 1612848 5706920 1611528 5699488 1609488 5702848 -1611528 5699488 1611288 5699384 1611264 5699520 1609488 5702848 -1611264 5699520 1609408 5702768 1609488 5702848 1611528 5699488 -1612848 5706920 1612992 5706984 1613096 5707024 1611528 5699488 -1611528 5699488 1611480 5699576 1612848 5706920 1613096 5707024 -1611528 5699488 1611480 5699576 1613096 5707024 1613152 5707048 -1611480 5699576 1612848 5706920 1613096 5707024 1613152 5707048 -1611528 5699488 1609512 5702904 1611480 5699576 1613152 5707048 -1609512 5702904 1611480 5699576 1611528 5699488 1609488 5702848 -1611480 5699576 1613152 5707048 1611528 5699488 1609488 5702848 -1611480 5699576 1609512 5702904 1612848 5706920 1613096 5707024 -1609512 5702904 1612848 5706920 1611480 5699576 1609488 5702848 -1612848 5706920 1611480 5699576 1609512 5702904 1611832 5706704 -1611528 5699488 1611480 5699576 1613152 5707048 1614576 5707608 -1611480 5699576 1613096 5707024 1613152 5707048 1614576 5707608 -1611528 5699488 1609488 5702848 1611480 5699576 1614576 5707608 -1613152 5707048 1613240 5707104 1614576 5707608 1611480 5699576 -1611528 5699488 1611480 5699576 1614576 5707608 1611552 5699400 -1611528 5699488 1611264 5699520 1609488 5702848 1611480 5699576 -1611528 5699488 1611264 5699520 1611480 5699576 1614576 5707608 -1609488 5702848 1609512 5702904 1611480 5699576 1611264 5699520 -1611528 5699488 1611288 5699384 1611264 5699520 1611480 5699576 -1611528 5699488 1611552 5699400 1611288 5699384 1611480 5699576 -1611528 5699488 1611288 5699384 1611480 5699576 1614576 5707608 -1611264 5699520 1609408 5702768 1609488 5702848 1611480 5699576 -1611264 5699520 1609488 5702848 1611480 5699576 1611288 5699384 -1612848 5706920 1612992 5706984 1613096 5707024 1611480 5699576 -1611480 5699576 1611440 5699632 1609488 5702848 1609512 5702904 -1611480 5699576 1611264 5699520 1611440 5699632 1609512 5702904 -1611480 5699576 1611440 5699632 1609512 5702904 1612848 5706920 -1611440 5699632 1609488 5702848 1609512 5702904 1612848 5706920 -1611480 5699576 1611440 5699632 1612848 5706920 1613096 5707024 -1611480 5699576 1611440 5699632 1613096 5707024 1613152 5707048 -1611480 5699576 1611440 5699632 1613152 5707048 1614576 5707608 -1611440 5699632 1612848 5706920 1613096 5707024 1613152 5707048 -1611480 5699576 1611264 5699520 1611440 5699632 1613152 5707048 -1611440 5699632 1611264 5699520 1609488 5702848 1609512 5702904 -1611440 5699632 1609512 5702904 1612848 5706920 1613096 5707024 -1609512 5702904 1611832 5706704 1612848 5706920 1611440 5699632 -1609488 5702848 1611440 5699632 1611264 5699520 1609408 5702768 -1609488 5702848 1609512 5702904 1611440 5699632 1609408 5702768 -1611440 5699632 1611480 5699576 1611264 5699520 1609408 5702768 -1611264 5699520 1608976 5702256 1609408 5702768 1611440 5699632 -1608976 5702256 1609064 5702472 1609408 5702768 1611440 5699632 -1611264 5699520 1608976 5702256 1611440 5699632 1611480 5699576 -1609408 5702768 1609488 5702848 1611440 5699632 1608976 5702256 -1611264 5699520 1611440 5699632 1611480 5699576 1611288 5699384 -1611264 5699520 1608904 5699824 1608976 5702256 1611440 5699632 -1612848 5706920 1612992 5706984 1613096 5707024 1611440 5699632 -1611264 5699520 1611408 5699664 1611440 5699632 1611480 5699576 -1611440 5699632 1611408 5699664 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1611408 5699664 -1611440 5699632 1611264 5699520 1611408 5699664 1609408 5702768 -1611408 5699664 1611264 5699520 1608976 5702256 1609408 5702768 -1611440 5699632 1611408 5699664 1609408 5702768 1609488 5702848 -1611440 5699632 1611408 5699664 1609488 5702848 1609512 5702904 -1611440 5699632 1611408 5699664 1609512 5702904 1612848 5706920 -1611408 5699664 1609488 5702848 1609512 5702904 1612848 5706920 -1611440 5699632 1611408 5699664 1612848 5706920 1613096 5707024 -1611440 5699632 1611264 5699520 1611408 5699664 1612848 5706920 -1609512 5702904 1611832 5706704 1612848 5706920 1611408 5699664 -1611408 5699664 1608976 5702256 1609408 5702768 1609488 5702848 -1611408 5699664 1609408 5702768 1609488 5702848 1609512 5702904 -1608976 5702256 1611408 5699664 1611264 5699520 1608904 5699824 -1611264 5699520 1610832 5699304 1608904 5699824 1611408 5699664 -1608976 5702256 1609408 5702768 1611408 5699664 1608904 5699824 -1611408 5699664 1611440 5699632 1611264 5699520 1610832 5699304 -1608976 5702256 1611408 5699664 1608904 5699824 1608856 5702128 -1608904 5699824 1608976 5702256 1611408 5699664 1610832 5699304 -1610832 5699304 1608960 5699744 1608904 5699824 1611408 5699664 -1611264 5699520 1610856 5699312 1610832 5699304 1611408 5699664 -1610832 5699304 1608904 5699824 1611408 5699664 1610856 5699312 -1611264 5699520 1610880 5699296 1610856 5699312 1611408 5699664 -1611264 5699520 1610856 5699312 1611408 5699664 1611440 5699632 -1611408 5699664 1611384 5699672 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1611384 5699672 -1611408 5699664 1608904 5699824 1611384 5699672 1609408 5702768 -1611384 5699672 1608904 5699824 1608976 5702256 1609408 5702768 -1611408 5699664 1611384 5699672 1609408 5702768 1609488 5702848 -1611384 5699672 1608976 5702256 1609408 5702768 1609488 5702848 -1611408 5699664 1608904 5699824 1611384 5699672 1609488 5702848 -1608976 5702256 1611384 5699672 1608904 5699824 1608856 5702128 -1611408 5699664 1611384 5699672 1609488 5702848 1609512 5702904 -1611408 5699664 1611384 5699672 1609512 5702904 1612848 5706920 -1611408 5699664 1608904 5699824 1611384 5699672 1609512 5702904 -1611384 5699672 1609408 5702768 1609488 5702848 1609512 5702904 -1608904 5699824 1611384 5699672 1611408 5699664 1610832 5699304 -1611408 5699664 1610856 5699312 1610832 5699304 1611384 5699672 -1611384 5699672 1609512 5702904 1611408 5699664 1610856 5699312 -1608904 5699824 1608976 5702256 1611384 5699672 1610832 5699304 -1610832 5699304 1608904 5699824 1611384 5699672 1610856 5699312 -1608904 5699824 1611384 5699672 1610832 5699304 1608960 5699744 -1611408 5699664 1611264 5699520 1610856 5699312 1611384 5699672 -1610856 5699312 1610832 5699304 1611384 5699672 1611264 5699520 -1611264 5699520 1610880 5699296 1610856 5699312 1611384 5699672 -1611408 5699664 1611264 5699520 1611384 5699672 1609512 5702904 -1611408 5699664 1611440 5699632 1611264 5699520 1611384 5699672 -1611440 5699632 1611480 5699576 1611264 5699520 1611384 5699672 -1611408 5699664 1611440 5699632 1611384 5699672 1609512 5702904 -1611264 5699520 1610856 5699312 1611384 5699672 1611440 5699632 -1611384 5699672 1611344 5699672 1608904 5699824 1608976 5702256 -1611384 5699672 1611344 5699672 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1611344 5699672 -1611384 5699672 1611344 5699672 1609408 5702768 1609488 5702848 -1611344 5699672 1608976 5702256 1609408 5702768 1609488 5702848 -1611384 5699672 1610832 5699304 1611344 5699672 1609488 5702848 -1611344 5699672 1608904 5699824 1608976 5702256 1609408 5702768 -1611344 5699672 1610832 5699304 1608904 5699824 1608976 5702256 -1611384 5699672 1611344 5699672 1609488 5702848 1609512 5702904 -1608904 5699824 1608856 5702128 1608976 5702256 1611344 5699672 -1610832 5699304 1611344 5699672 1611384 5699672 1610856 5699312 -1611384 5699672 1611264 5699520 1610856 5699312 1611344 5699672 -1611264 5699520 1610880 5699296 1610856 5699312 1611344 5699672 -1611344 5699672 1609488 5702848 1611384 5699672 1611264 5699520 -1610832 5699304 1608904 5699824 1611344 5699672 1610856 5699312 -1610856 5699312 1610832 5699304 1611344 5699672 1611264 5699520 -1608904 5699824 1611344 5699672 1610832 5699304 1608960 5699744 -1611384 5699672 1611440 5699632 1611264 5699520 1611344 5699672 -1611264 5699520 1610856 5699312 1611344 5699672 1611440 5699632 -1611440 5699632 1611480 5699576 1611264 5699520 1611344 5699672 -1611384 5699672 1611408 5699664 1611440 5699632 1611344 5699672 -1611384 5699672 1611440 5699632 1611344 5699672 1609488 5702848 -1611344 5699672 1611304 5699664 1608904 5699824 1608976 5702256 -1611344 5699672 1611304 5699664 1608976 5702256 1609408 5702768 -1608976 5702256 1609064 5702472 1609408 5702768 1611304 5699664 -1611344 5699672 1611304 5699664 1609408 5702768 1609488 5702848 -1611344 5699672 1611304 5699664 1609488 5702848 1611384 5699672 -1611304 5699664 1608976 5702256 1609408 5702768 1609488 5702848 -1611304 5699664 1608904 5699824 1608976 5702256 1609408 5702768 -1611344 5699672 1610832 5699304 1611304 5699664 1609488 5702848 -1610832 5699304 1611304 5699664 1611344 5699672 1610856 5699312 -1611304 5699664 1609488 5702848 1611344 5699672 1610856 5699312 -1611304 5699664 1610832 5699304 1608904 5699824 1608976 5702256 -1610832 5699304 1608904 5699824 1611304 5699664 1610856 5699312 -1608904 5699824 1608856 5702128 1608976 5702256 1611304 5699664 -1611344 5699672 1611264 5699520 1610856 5699312 1611304 5699664 -1611344 5699672 1611440 5699632 1611264 5699520 1611304 5699664 -1611264 5699520 1610880 5699296 1610856 5699312 1611304 5699664 -1611344 5699672 1611264 5699520 1611304 5699664 1609488 5702848 -1610856 5699312 1610832 5699304 1611304 5699664 1611264 5699520 -1608904 5699824 1611304 5699664 1610832 5699304 1608960 5699744 -1610856 5699312 1611256 5699616 1611264 5699520 1610880 5699296 -1611304 5699664 1611256 5699616 1610856 5699312 1610832 5699304 -1611304 5699664 1611264 5699520 1611256 5699616 1610832 5699304 -1611304 5699664 1611256 5699616 1610832 5699304 1608904 5699824 -1611256 5699616 1610856 5699312 1610832 5699304 1608904 5699824 -1611304 5699664 1611256 5699616 1608904 5699824 1608976 5702256 -1611304 5699664 1611264 5699520 1611256 5699616 1608904 5699824 -1611256 5699616 1611264 5699520 1610856 5699312 1610832 5699304 -1611264 5699520 1611256 5699616 1611304 5699664 1611344 5699672 -1611264 5699520 1611256 5699616 1611344 5699672 1611440 5699632 -1611256 5699616 1608904 5699824 1611304 5699664 1611344 5699672 -1610832 5699304 1608960 5699744 1608904 5699824 1611256 5699616 -1611264 5699520 1610856 5699312 1611256 5699616 1611344 5699672 -1613152 5707048 1612088 5702120 1611480 5699576 1611440 5699632 -1613152 5707048 1612088 5702120 1611440 5699632 1613096 5707024 -1612088 5702120 1611480 5699576 1611440 5699632 1613096 5707024 -1611440 5699632 1612848 5706920 1613096 5707024 1612088 5702120 -1611440 5699632 1612848 5706920 1612088 5702120 1611480 5699576 -1613096 5707024 1613152 5707048 1612088 5702120 1612848 5706920 -1611440 5699632 1611408 5699664 1612848 5706920 1612088 5702120 -1611440 5699632 1611408 5699664 1612088 5702120 1611480 5699576 -1611408 5699664 1609512 5702904 1612848 5706920 1612088 5702120 -1612848 5706920 1613096 5707024 1612088 5702120 1609512 5702904 -1611408 5699664 1611384 5699672 1609512 5702904 1612088 5702120 -1609512 5702904 1612848 5706920 1612088 5702120 1611384 5699672 -1611408 5699664 1611384 5699672 1612088 5702120 1611440 5699632 -1612088 5702120 1614576 5707608 1611480 5699576 1611440 5699632 -1614576 5707608 1612088 5702120 1613152 5707048 1613240 5707104 -1609512 5702904 1611832 5706704 1612848 5706920 1612088 5702120 -1611832 5706704 1612792 5706920 1612848 5706920 1612088 5702120 -1609512 5702904 1611832 5706704 1612088 5702120 1611384 5699672 -1612848 5706920 1613096 5707024 1612088 5702120 1611832 5706704 -1609512 5702904 1611784 5706704 1611832 5706704 1612088 5702120 -1609512 5702904 1611784 5706704 1612088 5702120 1611384 5699672 -1609512 5702904 1609480 5702960 1611784 5706704 1612088 5702120 -1609480 5702960 1609416 5703016 1611784 5706704 1612088 5702120 -1609512 5702904 1609480 5702960 1612088 5702120 1611384 5699672 -1611784 5706704 1611832 5706704 1612088 5702120 1609480 5702960 -1611832 5706704 1612848 5706920 1612088 5702120 1611784 5706704 -1611480 5699576 1612088 5702120 1614576 5707608 1611528 5699488 -1611480 5699576 1611440 5699632 1612088 5702120 1611528 5699488 -1614576 5707608 1611552 5699400 1611528 5699488 1612088 5702120 -1611528 5699488 1611480 5699576 1612088 5702120 1611552 5699400 -1611384 5699672 1609488 5702848 1609512 5702904 1612088 5702120 -1609512 5702904 1609480 5702960 1612088 5702120 1609488 5702848 -1611384 5699672 1609488 5702848 1612088 5702120 1611408 5699664 -1611384 5699672 1611344 5699672 1609488 5702848 1612088 5702120 -1611384 5699672 1611344 5699672 1612088 5702120 1611408 5699664 -1611344 5699672 1611304 5699664 1609488 5702848 1612088 5702120 -1611304 5699664 1609408 5702768 1609488 5702848 1612088 5702120 -1611304 5699664 1609408 5702768 1612088 5702120 1611344 5699672 -1611304 5699664 1608976 5702256 1609408 5702768 1612088 5702120 -1608976 5702256 1609064 5702472 1609408 5702768 1612088 5702120 -1611304 5699664 1608976 5702256 1612088 5702120 1611344 5699672 -1609408 5702768 1609488 5702848 1612088 5702120 1608976 5702256 -1611304 5699664 1608904 5699824 1608976 5702256 1612088 5702120 -1611344 5699672 1611304 5699664 1612088 5702120 1611384 5699672 -1609488 5702848 1609512 5702904 1612088 5702120 1609408 5702768 -1614576 5707608 1614648 5707656 1611552 5699400 1612088 5702120 -1611552 5699400 1611528 5699488 1612088 5702120 1614648 5707656 -1614648 5707656 1614680 5707680 1611552 5699400 1612088 5702120 -1611552 5699400 1611528 5699488 1612088 5702120 1614680 5707680 -1614648 5707656 1614680 5707680 1612088 5702120 1614576 5707608 -1614680 5707680 1611560 5699312 1611552 5699400 1612088 5702120 -1614680 5707680 1614696 5707712 1611560 5699312 1612088 5702120 -1611552 5699400 1611528 5699488 1612088 5702120 1611560 5699312 -1614680 5707680 1611560 5699312 1612088 5702120 1614648 5707656 -1614576 5707608 1614648 5707656 1612088 5702120 1613240 5707104 -1613152 5707048 1613240 5707104 1612088 5702120 1613096 5707024 -1612848 5706920 1612992 5706984 1613096 5707024 1612088 5702120 -1614576 5707608 1612088 5702120 1613240 5707104 1614512 5707600 -1611560 5699312 1612120 5702096 1614680 5707680 1614696 5707712 -1614680 5707680 1612120 5702096 1612088 5702120 1614648 5707656 -1612088 5702120 1614576 5707608 1614648 5707656 1612120 5702096 -1614648 5707656 1614680 5707680 1612120 5702096 1614576 5707608 -1612088 5702120 1612120 5702096 1611560 5699312 1611552 5699400 -1612088 5702120 1612120 5702096 1611552 5699400 1611528 5699488 -1612088 5702120 1612120 5702096 1611528 5699488 1611480 5699576 -1612088 5702120 1612120 5702096 1611480 5699576 1611440 5699632 -1612088 5702120 1612120 5702096 1611440 5699632 1611408 5699664 -1612088 5702120 1612120 5702096 1611408 5699664 1611384 5699672 -1612120 5702096 1611440 5699632 1611408 5699664 1611384 5699672 -1612088 5702120 1612120 5702096 1611384 5699672 1611344 5699672 -1612120 5702096 1611408 5699664 1611384 5699672 1611344 5699672 -1612120 5702096 1611480 5699576 1611440 5699632 1611408 5699664 -1612088 5702120 1612120 5702096 1611344 5699672 1611304 5699664 -1612120 5702096 1611528 5699488 1611480 5699576 1611440 5699632 -1612120 5702096 1611552 5699400 1611528 5699488 1611480 5699576 -1612120 5702096 1611560 5699312 1611552 5699400 1611528 5699488 -1612088 5702120 1613240 5707104 1614576 5707608 1612120 5702096 -1612088 5702120 1613152 5707048 1613240 5707104 1612120 5702096 -1614576 5707608 1614648 5707656 1612120 5702096 1613240 5707104 -1613240 5707104 1614576 5707608 1612120 5702096 1613152 5707048 -1612120 5702096 1611344 5699672 1612088 5702120 1613152 5707048 -1612088 5702120 1613096 5707024 1613152 5707048 1612120 5702096 -1612088 5702120 1612848 5706920 1613096 5707024 1612120 5702096 -1612088 5702120 1611832 5706704 1612848 5706920 1612120 5702096 -1613152 5707048 1613240 5707104 1612120 5702096 1613096 5707024 -1612088 5702120 1612848 5706920 1612120 5702096 1611344 5699672 -1613096 5707024 1613152 5707048 1612120 5702096 1612848 5706920 -1612120 5702096 1614680 5707680 1611560 5699312 1611552 5699400 -1614680 5707680 1611560 5699312 1612120 5702096 1614648 5707656 -1612848 5706920 1612992 5706984 1613096 5707024 1612120 5702096 -1613240 5707104 1614512 5707600 1614576 5707608 1612120 5702096 -1611560 5699312 1612128 5702072 1614680 5707680 1614696 5707712 -1612120 5702096 1612128 5702072 1611560 5699312 1611552 5699400 -1612120 5702096 1612128 5702072 1611552 5699400 1611528 5699488 -1612120 5702096 1612128 5702072 1611528 5699488 1611480 5699576 -1612120 5702096 1612128 5702072 1611480 5699576 1611440 5699632 -1612120 5702096 1612128 5702072 1611440 5699632 1611408 5699664 -1612120 5702096 1612128 5702072 1611408 5699664 1611384 5699672 -1612120 5702096 1612128 5702072 1611384 5699672 1611344 5699672 -1612128 5702072 1611408 5699664 1611384 5699672 1611344 5699672 -1612120 5702096 1612128 5702072 1611344 5699672 1612088 5702120 -1612128 5702072 1611384 5699672 1611344 5699672 1612088 5702120 -1612128 5702072 1611440 5699632 1611408 5699664 1611384 5699672 -1611344 5699672 1611304 5699664 1612088 5702120 1612128 5702072 -1612088 5702120 1612120 5702096 1612128 5702072 1611304 5699664 -1611344 5699672 1611304 5699664 1612128 5702072 1611384 5699672 -1611304 5699664 1608976 5702256 1612088 5702120 1612128 5702072 -1612128 5702072 1611480 5699576 1611440 5699632 1611408 5699664 -1612128 5702072 1611528 5699488 1611480 5699576 1611440 5699632 -1612128 5702072 1611552 5699400 1611528 5699488 1611480 5699576 -1612128 5702072 1611560 5699312 1611552 5699400 1611528 5699488 -1612120 5702096 1614680 5707680 1612128 5702072 1612088 5702120 -1614680 5707680 1612128 5702072 1612120 5702096 1614648 5707656 -1612120 5702096 1614576 5707608 1614648 5707656 1612128 5702072 -1612120 5702096 1613240 5707104 1614576 5707608 1612128 5702072 -1612128 5702072 1612088 5702120 1612120 5702096 1614576 5707608 -1614648 5707656 1614680 5707680 1612128 5702072 1614576 5707608 -1612128 5702072 1614680 5707680 1611560 5699312 1611552 5699400 -1614680 5707680 1611560 5699312 1612128 5702072 1614648 5707656 -1611560 5699312 1612160 5702056 1614680 5707680 1614696 5707712 -1612128 5702072 1612160 5702056 1611560 5699312 1611552 5699400 -1612128 5702072 1612160 5702056 1611552 5699400 1611528 5699488 -1612128 5702072 1612160 5702056 1611528 5699488 1611480 5699576 -1612128 5702072 1612160 5702056 1611480 5699576 1611440 5699632 -1612128 5702072 1612160 5702056 1611440 5699632 1611408 5699664 -1612128 5702072 1612160 5702056 1611408 5699664 1611384 5699672 -1612128 5702072 1612160 5702056 1611384 5699672 1611344 5699672 -1612160 5702056 1611440 5699632 1611408 5699664 1611384 5699672 -1612160 5702056 1611480 5699576 1611440 5699632 1611408 5699664 -1612160 5702056 1611528 5699488 1611480 5699576 1611440 5699632 -1612160 5702056 1611552 5699400 1611528 5699488 1611480 5699576 -1612160 5702056 1611560 5699312 1611552 5699400 1611528 5699488 -1612128 5702072 1614680 5707680 1612160 5702056 1611384 5699672 -1614680 5707680 1612160 5702056 1612128 5702072 1614648 5707656 -1612128 5702072 1614576 5707608 1614648 5707656 1612160 5702056 -1612128 5702072 1612120 5702096 1614576 5707608 1612160 5702056 -1612120 5702096 1613240 5707104 1614576 5707608 1612160 5702056 -1612120 5702096 1613240 5707104 1612160 5702056 1612128 5702072 -1612120 5702096 1613152 5707048 1613240 5707104 1612160 5702056 -1612120 5702096 1613096 5707024 1613152 5707048 1612160 5702056 -1613240 5707104 1614576 5707608 1612160 5702056 1613152 5707048 -1612120 5702096 1613096 5707024 1612160 5702056 1612128 5702072 -1613152 5707048 1613240 5707104 1612160 5702056 1613096 5707024 -1612120 5702096 1612848 5706920 1613096 5707024 1612160 5702056 -1614576 5707608 1614648 5707656 1612160 5702056 1613240 5707104 -1612160 5702056 1611384 5699672 1612128 5702072 1612120 5702096 -1614648 5707656 1614680 5707680 1612160 5702056 1614576 5707608 -1614680 5707680 1611560 5699312 1612160 5702056 1614648 5707656 -1612160 5702056 1614680 5707680 1611560 5699312 1611552 5699400 -1613240 5707104 1614512 5707600 1614576 5707608 1612160 5702056 -1611560 5699312 1612184 5702056 1614680 5707680 1614696 5707712 -1614680 5707680 1612184 5702056 1612160 5702056 1614648 5707656 -1614680 5707680 1611560 5699312 1612184 5702056 1614648 5707656 -1612160 5702056 1614576 5707608 1614648 5707656 1612184 5702056 -1612160 5702056 1613240 5707104 1614576 5707608 1612184 5702056 -1612160 5702056 1613152 5707048 1613240 5707104 1612184 5702056 -1612160 5702056 1613096 5707024 1613152 5707048 1612184 5702056 -1612160 5702056 1612120 5702096 1613096 5707024 1612184 5702056 -1613152 5707048 1613240 5707104 1612184 5702056 1613096 5707024 -1612160 5702056 1612128 5702072 1612120 5702096 1612184 5702056 -1613096 5707024 1613152 5707048 1612184 5702056 1612120 5702096 -1612120 5702096 1612848 5706920 1613096 5707024 1612184 5702056 -1612120 5702096 1612088 5702120 1612848 5706920 1612184 5702056 -1612088 5702120 1611832 5706704 1612848 5706920 1612184 5702056 -1612120 5702096 1612088 5702120 1612184 5702056 1612160 5702056 -1613096 5707024 1613152 5707048 1612184 5702056 1612848 5706920 -1612848 5706920 1613096 5707024 1612184 5702056 1612088 5702120 -1613240 5707104 1614576 5707608 1612184 5702056 1613152 5707048 -1614576 5707608 1614648 5707656 1612184 5702056 1613240 5707104 -1614648 5707656 1614680 5707680 1612184 5702056 1614576 5707608 -1612160 5702056 1612184 5702056 1611560 5699312 1611552 5699400 -1612160 5702056 1612184 5702056 1611552 5699400 1611528 5699488 -1612160 5702056 1612184 5702056 1611528 5699488 1611480 5699576 -1612160 5702056 1612184 5702056 1611480 5699576 1611440 5699632 -1612160 5702056 1612184 5702056 1611440 5699632 1611408 5699664 -1612160 5702056 1612184 5702056 1611408 5699664 1611384 5699672 -1612184 5702056 1611480 5699576 1611440 5699632 1611408 5699664 -1612184 5702056 1611528 5699488 1611480 5699576 1611440 5699632 -1612184 5702056 1611552 5699400 1611528 5699488 1611480 5699576 -1612184 5702056 1614680 5707680 1611560 5699312 1611552 5699400 -1612184 5702056 1611560 5699312 1611552 5699400 1611528 5699488 -1612184 5702056 1611408 5699664 1612160 5702056 1612120 5702096 -1612848 5706920 1612992 5706984 1613096 5707024 1612184 5702056 -1613240 5707104 1614512 5707600 1614576 5707608 1612184 5702056 -1611560 5699312 1612208 5702072 1614680 5707680 1614696 5707712 -1614680 5707680 1612208 5702072 1612184 5702056 1614648 5707656 -1614680 5707680 1611560 5699312 1612208 5702072 1614648 5707656 -1612184 5702056 1614576 5707608 1614648 5707656 1612208 5702072 -1614648 5707656 1614680 5707680 1612208 5702072 1614576 5707608 -1612184 5702056 1613240 5707104 1614576 5707608 1612208 5702072 -1612184 5702056 1613152 5707048 1613240 5707104 1612208 5702072 -1612184 5702056 1613096 5707024 1613152 5707048 1612208 5702072 -1612184 5702056 1612848 5706920 1613096 5707024 1612208 5702072 -1613096 5707024 1613152 5707048 1612208 5702072 1612848 5706920 -1612184 5702056 1612088 5702120 1612848 5706920 1612208 5702072 -1612184 5702056 1612120 5702096 1612088 5702120 1612208 5702072 -1612088 5702120 1611832 5706704 1612848 5706920 1612208 5702072 -1612184 5702056 1612160 5702056 1612120 5702096 1612208 5702072 -1612120 5702096 1612088 5702120 1612208 5702072 1612160 5702056 -1612160 5702056 1612128 5702072 1612120 5702096 1612208 5702072 -1612848 5706920 1613096 5707024 1612208 5702072 1612088 5702120 -1612088 5702120 1612848 5706920 1612208 5702072 1612120 5702096 -1613152 5707048 1613240 5707104 1612208 5702072 1613096 5707024 -1613240 5707104 1614576 5707608 1612208 5702072 1613152 5707048 -1614576 5707608 1614648 5707656 1612208 5702072 1613240 5707104 -1612184 5702056 1612208 5702072 1611560 5699312 1611552 5699400 -1612208 5702072 1614680 5707680 1611560 5699312 1611552 5699400 -1612208 5702072 1611552 5699400 1612184 5702056 1612160 5702056 -1612184 5702056 1612208 5702072 1611552 5699400 1611528 5699488 -1612184 5702056 1612208 5702072 1611528 5699488 1611480 5699576 -1612208 5702072 1611560 5699312 1611552 5699400 1611528 5699488 -1612184 5702056 1612160 5702056 1612208 5702072 1611528 5699488 -1612848 5706920 1612992 5706984 1613096 5707024 1612208 5702072 -1613240 5707104 1614512 5707600 1614576 5707608 1612208 5702072 -1611560 5699312 1612232 5702104 1614680 5707680 1614696 5707712 -1612208 5702072 1612232 5702104 1611560 5699312 1611552 5699400 -1612208 5702072 1614680 5707680 1612232 5702104 1611552 5699400 -1614680 5707680 1612232 5702104 1612208 5702072 1614648 5707656 -1612208 5702072 1614576 5707608 1614648 5707656 1612232 5702104 -1612232 5702104 1611552 5699400 1612208 5702072 1614576 5707608 -1614648 5707656 1614680 5707680 1612232 5702104 1614576 5707608 -1612232 5702104 1614680 5707680 1611560 5699312 1611552 5699400 -1614680 5707680 1611560 5699312 1612232 5702104 1614648 5707656 -1612208 5702072 1613240 5707104 1614576 5707608 1612232 5702104 -1614576 5707608 1614648 5707656 1612232 5702104 1613240 5707104 -1612208 5702072 1613240 5707104 1612232 5702104 1611552 5699400 -1612208 5702072 1613152 5707048 1613240 5707104 1612232 5702104 -1612208 5702072 1613152 5707048 1612232 5702104 1611552 5699400 -1612208 5702072 1613096 5707024 1613152 5707048 1612232 5702104 -1612208 5702072 1613096 5707024 1612232 5702104 1611552 5699400 -1612208 5702072 1612848 5706920 1613096 5707024 1612232 5702104 -1612208 5702072 1612848 5706920 1612232 5702104 1611552 5699400 -1612208 5702072 1612088 5702120 1612848 5706920 1612232 5702104 -1612088 5702120 1611832 5706704 1612848 5706920 1612232 5702104 -1611832 5706704 1612792 5706920 1612848 5706920 1612232 5702104 -1612088 5702120 1611784 5706704 1611832 5706704 1612232 5702104 -1612208 5702072 1612088 5702120 1612232 5702104 1611552 5699400 -1612848 5706920 1613096 5707024 1612232 5702104 1611832 5706704 -1612088 5702120 1611832 5706704 1612232 5702104 1612208 5702072 -1612208 5702072 1612120 5702096 1612088 5702120 1612232 5702104 -1612208 5702072 1612160 5702056 1612120 5702096 1612232 5702104 -1612208 5702072 1612120 5702096 1612232 5702104 1611552 5699400 -1612088 5702120 1611832 5706704 1612232 5702104 1612120 5702096 -1613096 5707024 1613152 5707048 1612232 5702104 1612848 5706920 -1613152 5707048 1613240 5707104 1612232 5702104 1613096 5707024 -1613240 5707104 1614576 5707608 1612232 5702104 1613152 5707048 -1612208 5702072 1612232 5702104 1611552 5699400 1611528 5699488 -1612848 5706920 1612992 5706984 1613096 5707024 1612232 5702104 -1613240 5707104 1614512 5707600 1614576 5707608 1612232 5702104 -1614576 5707608 1612256 5702160 1612232 5702104 1613240 5707104 -1614576 5707608 1614648 5707656 1612256 5702160 1613240 5707104 -1612232 5702104 1612256 5702160 1614648 5707656 1614680 5707680 -1612256 5702160 1614576 5707608 1614648 5707656 1614680 5707680 -1612256 5702160 1614680 5707680 1612232 5702104 1613240 5707104 -1612232 5702104 1612256 5702160 1614680 5707680 1611560 5699312 -1614680 5707680 1614696 5707712 1611560 5699312 1612256 5702160 -1612256 5702160 1614648 5707656 1614680 5707680 1611560 5699312 -1612232 5702104 1612256 5702160 1611560 5699312 1611552 5699400 -1612232 5702104 1613240 5707104 1612256 5702160 1611560 5699312 -1612232 5702104 1613152 5707048 1613240 5707104 1612256 5702160 -1613240 5707104 1614576 5707608 1612256 5702160 1613152 5707048 -1612232 5702104 1613152 5707048 1612256 5702160 1611560 5699312 -1612232 5702104 1613096 5707024 1613152 5707048 1612256 5702160 -1612232 5702104 1613096 5707024 1612256 5702160 1611560 5699312 -1612232 5702104 1612848 5706920 1613096 5707024 1612256 5702160 -1612232 5702104 1612848 5706920 1612256 5702160 1611560 5699312 -1612232 5702104 1611832 5706704 1612848 5706920 1612256 5702160 -1611832 5706704 1612792 5706920 1612848 5706920 1612256 5702160 -1612232 5702104 1612088 5702120 1611832 5706704 1612256 5702160 -1612088 5702120 1611784 5706704 1611832 5706704 1612256 5702160 -1612088 5702120 1611784 5706704 1612256 5702160 1612232 5702104 -1612088 5702120 1609480 5702960 1611784 5706704 1612256 5702160 -1612232 5702104 1612088 5702120 1612256 5702160 1611560 5699312 -1611832 5706704 1612848 5706920 1612256 5702160 1611784 5706704 -1612232 5702104 1612120 5702096 1612088 5702120 1612256 5702160 -1612088 5702120 1611784 5706704 1612256 5702160 1612120 5702096 -1612232 5702104 1612120 5702096 1612256 5702160 1611560 5699312 -1612232 5702104 1612208 5702072 1612120 5702096 1612256 5702160 -1612848 5706920 1613096 5707024 1612256 5702160 1611832 5706704 -1613096 5707024 1613152 5707048 1612256 5702160 1612848 5706920 -1613152 5707048 1613240 5707104 1612256 5702160 1613096 5707024 -1612848 5706920 1612992 5706984 1613096 5707024 1612256 5702160 -1614576 5707608 1612256 5702160 1613240 5707104 1614512 5707600 -1612848 5706920 1612256 5702208 1611832 5706704 1612792 5706920 -1611832 5706704 1612256 5702208 1612256 5702160 1611784 5706704 -1612256 5702208 1612848 5706920 1612256 5702160 1611784 5706704 -1611832 5706704 1612848 5706920 1612256 5702208 1611784 5706704 -1612256 5702160 1612088 5702120 1611784 5706704 1612256 5702208 -1612256 5702160 1612120 5702096 1612088 5702120 1612256 5702208 -1612256 5702160 1612120 5702096 1612256 5702208 1612848 5706920 -1612088 5702120 1609480 5702960 1611784 5706704 1612256 5702208 -1609480 5702960 1609416 5703016 1611784 5706704 1612256 5702208 -1612088 5702120 1609512 5702904 1609480 5702960 1612256 5702208 -1612088 5702120 1609480 5702960 1612256 5702208 1612120 5702096 -1611784 5706704 1611832 5706704 1612256 5702208 1609480 5702960 -1612256 5702160 1612232 5702104 1612120 5702096 1612256 5702208 -1612256 5702160 1612256 5702208 1612848 5706920 1613096 5707024 -1612256 5702160 1612120 5702096 1612256 5702208 1613096 5707024 -1612256 5702208 1611832 5706704 1612848 5706920 1613096 5707024 -1612256 5702160 1612256 5702208 1613096 5707024 1613152 5707048 -1612256 5702160 1612120 5702096 1612256 5702208 1613152 5707048 -1612256 5702208 1612848 5706920 1613096 5707024 1613152 5707048 -1612256 5702160 1612256 5702208 1613152 5707048 1613240 5707104 -1612256 5702160 1612120 5702096 1612256 5702208 1613240 5707104 -1612256 5702160 1612256 5702208 1613240 5707104 1614576 5707608 -1612256 5702160 1612120 5702096 1612256 5702208 1614576 5707608 -1612256 5702160 1612256 5702208 1614576 5707608 1614648 5707656 -1612256 5702160 1612256 5702208 1614648 5707656 1614680 5707680 -1612256 5702160 1612120 5702096 1612256 5702208 1614680 5707680 -1612256 5702208 1614576 5707608 1614648 5707656 1614680 5707680 -1612256 5702208 1613240 5707104 1614576 5707608 1614648 5707656 -1612256 5702160 1612256 5702208 1614680 5707680 1611560 5699312 -1612256 5702208 1613096 5707024 1613152 5707048 1613240 5707104 -1612256 5702208 1613152 5707048 1613240 5707104 1614576 5707608 -1612848 5706920 1612992 5706984 1613096 5707024 1612256 5702208 -1613240 5707104 1614512 5707600 1614576 5707608 1612256 5702208 -1611784 5706704 1612224 5702288 1609480 5702960 1609416 5703016 -1609480 5702960 1612224 5702288 1612256 5702208 1612088 5702120 -1612224 5702288 1611784 5706704 1612256 5702208 1612088 5702120 -1609480 5702960 1611784 5706704 1612224 5702288 1612088 5702120 -1609480 5702960 1612224 5702288 1612088 5702120 1609512 5702904 -1612088 5702120 1609488 5702848 1609512 5702904 1612224 5702288 -1609480 5702960 1611784 5706704 1612224 5702288 1609512 5702904 -1612224 5702288 1612256 5702208 1612088 5702120 1609512 5702904 -1612256 5702208 1612120 5702096 1612088 5702120 1612224 5702288 -1612256 5702208 1612224 5702288 1611784 5706704 1611832 5706704 -1612256 5702208 1612088 5702120 1612224 5702288 1611832 5706704 -1612256 5702208 1612224 5702288 1611832 5706704 1612848 5706920 -1611832 5706704 1612792 5706920 1612848 5706920 1612224 5702288 -1612256 5702208 1612224 5702288 1612848 5706920 1613096 5707024 -1612256 5702208 1612088 5702120 1612224 5702288 1613096 5707024 -1612848 5706920 1613096 5707024 1612224 5702288 1612792 5706920 -1612224 5702288 1609480 5702960 1611784 5706704 1611832 5706704 -1611832 5706704 1611904 5706776 1612792 5706920 1612224 5702288 -1612224 5702288 1611784 5706704 1611832 5706704 1612792 5706920 -1612256 5702208 1612224 5702288 1613096 5707024 1613152 5707048 -1612224 5702288 1612848 5706920 1613096 5707024 1613152 5707048 -1612256 5702208 1612088 5702120 1612224 5702288 1613152 5707048 -1612256 5702208 1612224 5702288 1613152 5707048 1613240 5707104 -1612256 5702208 1612088 5702120 1612224 5702288 1613240 5707104 -1612224 5702288 1613096 5707024 1613152 5707048 1613240 5707104 -1612256 5702208 1612224 5702288 1613240 5707104 1614576 5707608 -1612256 5702208 1612088 5702120 1612224 5702288 1614576 5707608 -1612256 5702208 1612224 5702288 1614576 5707608 1614648 5707656 -1612224 5702288 1613152 5707048 1613240 5707104 1614576 5707608 -1612848 5706920 1612992 5706984 1613096 5707024 1612224 5702288 -1613240 5707104 1614512 5707600 1614576 5707608 1612224 5702288 -1611784 5706704 1612192 5702352 1609480 5702960 1609416 5703016 -1612224 5702288 1612192 5702352 1611784 5706704 1611832 5706704 -1612224 5702288 1609480 5702960 1612192 5702352 1611832 5706704 -1609480 5702960 1612192 5702352 1612224 5702288 1609512 5702904 -1612192 5702352 1611832 5706704 1612224 5702288 1609512 5702904 -1612192 5702352 1609480 5702960 1611784 5706704 1611832 5706704 -1609480 5702960 1611784 5706704 1612192 5702352 1609512 5702904 -1612224 5702288 1612088 5702120 1609512 5702904 1612192 5702352 -1612088 5702120 1609488 5702848 1609512 5702904 1612192 5702352 -1612224 5702288 1612088 5702120 1612192 5702352 1611832 5706704 -1609512 5702904 1609480 5702960 1612192 5702352 1612088 5702120 -1612224 5702288 1612256 5702208 1612088 5702120 1612192 5702352 -1612224 5702288 1612192 5702352 1611832 5706704 1612792 5706920 -1612224 5702288 1612192 5702352 1612792 5706920 1612848 5706920 -1612224 5702288 1612192 5702352 1612848 5706920 1613096 5707024 -1612192 5702352 1612792 5706920 1612848 5706920 1613096 5707024 -1612224 5702288 1612192 5702352 1613096 5707024 1613152 5707048 -1612192 5702352 1612848 5706920 1613096 5707024 1613152 5707048 -1612192 5702352 1611784 5706704 1611832 5706704 1612792 5706920 -1612224 5702288 1612088 5702120 1612192 5702352 1613152 5707048 -1611832 5706704 1611904 5706776 1612792 5706920 1612192 5702352 -1612192 5702352 1611832 5706704 1612792 5706920 1612848 5706920 -1612224 5702288 1612192 5702352 1613152 5707048 1613240 5707104 -1612192 5702352 1613096 5707024 1613152 5707048 1613240 5707104 -1612224 5702288 1612088 5702120 1612192 5702352 1613240 5707104 -1612224 5702288 1612192 5702352 1613240 5707104 1614576 5707608 -1612224 5702288 1612088 5702120 1612192 5702352 1614576 5707608 -1612192 5702352 1613152 5707048 1613240 5707104 1614576 5707608 -1612224 5702288 1612192 5702352 1614576 5707608 1612256 5702208 -1612848 5706920 1612992 5706984 1613096 5707024 1612192 5702352 -1613240 5707104 1614512 5707600 1614576 5707608 1612192 5702352 -1609512 5702904 1612176 5702352 1612088 5702120 1609488 5702848 -1612192 5702352 1612176 5702352 1609512 5702904 1609480 5702960 -1612192 5702352 1612088 5702120 1612176 5702352 1609480 5702960 -1612192 5702352 1612176 5702352 1609480 5702960 1611784 5706704 -1609480 5702960 1609416 5703016 1611784 5706704 1612176 5702352 -1612176 5702352 1609512 5702904 1609480 5702960 1611784 5706704 -1612192 5702352 1612176 5702352 1611784 5706704 1611832 5706704 -1612192 5702352 1612176 5702352 1611832 5706704 1612792 5706920 -1612192 5702352 1612088 5702120 1612176 5702352 1611832 5706704 -1612176 5702352 1609480 5702960 1611784 5706704 1611832 5706704 -1612176 5702352 1612088 5702120 1609512 5702904 1609480 5702960 -1612088 5702120 1612176 5702352 1612192 5702352 1612224 5702288 -1612176 5702352 1611832 5706704 1612192 5702352 1612224 5702288 -1612088 5702120 1609512 5702904 1612176 5702352 1612224 5702288 -1612088 5702120 1612176 5702352 1612224 5702288 1612256 5702208 -1609512 5702904 1612160 5702352 1612088 5702120 1609488 5702848 -1612176 5702352 1612160 5702352 1609512 5702904 1609480 5702960 -1612176 5702352 1612160 5702352 1609480 5702960 1611784 5706704 -1609480 5702960 1609416 5703016 1611784 5706704 1612160 5702352 -1612176 5702352 1612160 5702352 1611784 5706704 1611832 5706704 -1612160 5702352 1609480 5702960 1611784 5706704 1611832 5706704 -1612176 5702352 1612160 5702352 1611832 5706704 1612192 5702352 -1612160 5702352 1609512 5702904 1609480 5702960 1611784 5706704 -1612176 5702352 1612088 5702120 1612160 5702352 1611832 5706704 -1612088 5702120 1612160 5702352 1612176 5702352 1612224 5702288 -1612160 5702352 1611832 5706704 1612176 5702352 1612224 5702288 -1612160 5702352 1612088 5702120 1609512 5702904 1609480 5702960 -1612088 5702120 1609512 5702904 1612160 5702352 1612224 5702288 -1612176 5702352 1612192 5702352 1612224 5702288 1612160 5702352 -1612088 5702120 1612160 5702352 1612224 5702288 1612256 5702208 -1609512 5702904 1612136 5702320 1612088 5702120 1609488 5702848 -1612160 5702352 1612136 5702320 1609512 5702904 1609480 5702960 -1612088 5702120 1612136 5702320 1612160 5702352 1612224 5702288 -1612160 5702352 1612176 5702352 1612224 5702288 1612136 5702320 -1612136 5702320 1609512 5702904 1612160 5702352 1612176 5702352 -1612224 5702288 1612088 5702120 1612136 5702320 1612176 5702352 -1612088 5702120 1609512 5702904 1612136 5702320 1612224 5702288 -1612176 5702352 1612192 5702352 1612224 5702288 1612136 5702320 -1612088 5702120 1612136 5702320 1612224 5702288 1612256 5702208 -1609512 5702904 1612088 5702248 1612088 5702120 1609488 5702848 -1612136 5702320 1612088 5702248 1609512 5702904 1612160 5702352 -1612088 5702120 1612088 5702248 1612136 5702320 1612224 5702288 -1612136 5702320 1612176 5702352 1612224 5702288 1612088 5702248 -1612088 5702248 1609512 5702904 1612136 5702320 1612224 5702288 -1609512 5702904 1612136 5702320 1612088 5702248 1609488 5702848 -1612088 5702248 1612224 5702288 1612088 5702120 1609488 5702848 -1612088 5702120 1612088 5702248 1612224 5702288 1612256 5702208 -1612088 5702248 1612136 5702320 1612224 5702288 1612256 5702208 -1612088 5702120 1609488 5702848 1612088 5702248 1612256 5702208 -1612088 5702120 1612088 5702248 1612256 5702208 1612120 5702096 -1612256 5702208 1612256 5702160 1612120 5702096 1612088 5702248 -1612088 5702120 1609488 5702848 1612088 5702248 1612120 5702096 -1612088 5702248 1612224 5702288 1612256 5702208 1612120 5702096 -1612088 5702120 1609408 5702768 1609488 5702848 1612088 5702248 -1611560 5699312 1613176 5702944 1663880 5646248 1611528 5699256 -1614696 5707712 1613176 5702944 1611560 5699312 1614680 5707680 -1611560 5699312 1612256 5702160 1614680 5707680 1613176 5702944 -1614680 5707680 1614696 5707712 1613176 5702944 1612256 5702160 -1613176 5702944 1663880 5646248 1611560 5699312 1612256 5702160 -1614696 5707712 1663880 5646248 1613176 5702944 1614680 5707680 -1612256 5702160 1612256 5702208 1614680 5707680 1613176 5702944 -1612256 5702160 1612256 5702208 1613176 5702944 1611560 5699312 -1614680 5707680 1614696 5707712 1613176 5702944 1612256 5702208 -1612256 5702208 1614648 5707656 1614680 5707680 1613176 5702944 -1614680 5707680 1614696 5707712 1613176 5702944 1614648 5707656 -1612256 5702208 1614576 5707608 1614648 5707656 1613176 5702944 -1614648 5707656 1614680 5707680 1613176 5702944 1614576 5707608 -1612256 5702208 1612224 5702288 1614576 5707608 1613176 5702944 -1614576 5707608 1614648 5707656 1613176 5702944 1612224 5702288 -1612256 5702208 1612224 5702288 1613176 5702944 1612256 5702160 -1611560 5699312 1612232 5702104 1612256 5702160 1613176 5702944 -1612256 5702160 1612256 5702208 1613176 5702944 1612232 5702104 -1611560 5699312 1612232 5702104 1613176 5702944 1663880 5646248 -1611560 5699312 1611552 5699400 1612232 5702104 1613176 5702944 -1611560 5699312 1611552 5699400 1613176 5702944 1663880 5646248 -1611552 5699400 1612208 5702072 1612232 5702104 1613176 5702944 -1611552 5699400 1612208 5702072 1613176 5702944 1611560 5699312 -1612232 5702104 1612256 5702160 1613176 5702944 1612208 5702072 -1612224 5702288 1612192 5702352 1614576 5707608 1613176 5702944 -1614576 5707608 1614648 5707656 1613176 5702944 1612192 5702352 -1612224 5702288 1612192 5702352 1613176 5702944 1612256 5702208 -1612192 5702352 1613240 5707104 1614576 5707608 1613176 5702944 -1614576 5707608 1614648 5707656 1613176 5702944 1613240 5707104 -1612192 5702352 1613152 5707048 1613240 5707104 1613176 5702944 -1612192 5702352 1613096 5707024 1613152 5707048 1613176 5702944 -1612192 5702352 1612848 5706920 1613096 5707024 1613176 5702944 -1612192 5702352 1612792 5706920 1612848 5706920 1613176 5702944 -1613096 5707024 1613152 5707048 1613176 5702944 1612848 5706920 -1612848 5706920 1613096 5707024 1613176 5702944 1612792 5706920 -1612192 5702352 1611832 5706704 1612792 5706920 1613176 5702944 -1612792 5706920 1612848 5706920 1613176 5702944 1611832 5706704 -1612192 5702352 1612176 5702352 1611832 5706704 1613176 5702944 -1612176 5702352 1612160 5702352 1611832 5706704 1613176 5702944 -1612176 5702352 1612160 5702352 1613176 5702944 1612192 5702352 -1612160 5702352 1611784 5706704 1611832 5706704 1613176 5702944 -1612160 5702352 1609480 5702960 1611784 5706704 1613176 5702944 -1612160 5702352 1611784 5706704 1613176 5702944 1612176 5702352 -1611832 5706704 1611904 5706776 1612792 5706920 1613176 5702944 -1611832 5706704 1612792 5706920 1613176 5702944 1611784 5706704 -1613152 5707048 1613240 5707104 1613176 5702944 1613096 5707024 -1613240 5707104 1614576 5707608 1613176 5702944 1613152 5707048 -1612192 5702352 1612176 5702352 1613176 5702944 1612224 5702288 -1611552 5699400 1611528 5699488 1612208 5702072 1613176 5702944 -1612848 5706920 1612992 5706984 1613096 5707024 1613176 5702944 -1613096 5707024 1613152 5707048 1613176 5702944 1612992 5706984 -1612848 5706920 1612992 5706984 1613176 5702944 1612792 5706920 -1613240 5707104 1614512 5707600 1614576 5707608 1613176 5702944 -1614576 5707608 1614648 5707656 1613176 5702944 1614512 5707600 -1613240 5707104 1614512 5707600 1613176 5702944 1613152 5707048 -1613240 5707104 1613288 5707144 1614512 5707600 1613176 5702944 -1663880 5646248 1613176 5702944 1614696 5707712 1663944 5646256 -1611560 5699312 1613200 5702888 1663880 5646248 1611528 5699256 -1613176 5702944 1613200 5702888 1611560 5699312 1611552 5699400 -1663880 5646248 1613200 5702888 1613176 5702944 1614696 5707712 -1613176 5702944 1614696 5707712 1613200 5702888 1611552 5699400 -1613176 5702944 1614680 5707680 1614696 5707712 1613200 5702888 -1613176 5702944 1614648 5707656 1614680 5707680 1613200 5702888 -1613176 5702944 1614576 5707608 1614648 5707656 1613200 5702888 -1614648 5707656 1614680 5707680 1613200 5702888 1614576 5707608 -1613176 5702944 1614512 5707600 1614576 5707608 1613200 5702888 -1614696 5707712 1663880 5646248 1613200 5702888 1614680 5707680 -1613176 5702944 1614576 5707608 1613200 5702888 1611552 5699400 -1614680 5707680 1614696 5707712 1613200 5702888 1614648 5707656 -1613200 5702888 1663880 5646248 1611560 5699312 1611552 5699400 -1663880 5646248 1611560 5699312 1613200 5702888 1614696 5707712 -1613176 5702944 1613200 5702888 1611552 5699400 1612208 5702072 -1613200 5702888 1611560 5699312 1611552 5699400 1612208 5702072 -1613176 5702944 1614576 5707608 1613200 5702888 1612208 5702072 -1613176 5702944 1613200 5702888 1612208 5702072 1612232 5702104 -1613176 5702944 1614576 5707608 1613200 5702888 1612232 5702104 -1613200 5702888 1611552 5699400 1612208 5702072 1612232 5702104 -1613176 5702944 1613200 5702888 1612232 5702104 1612256 5702160 -1613176 5702944 1613200 5702888 1612256 5702160 1612256 5702208 -1613176 5702944 1614576 5707608 1613200 5702888 1612256 5702208 -1613200 5702888 1612208 5702072 1612232 5702104 1612256 5702160 -1613176 5702944 1613200 5702888 1612256 5702208 1612224 5702288 -1613200 5702888 1612256 5702160 1612256 5702208 1612224 5702288 -1613176 5702944 1614576 5707608 1613200 5702888 1612224 5702288 -1613176 5702944 1613200 5702888 1612224 5702288 1612192 5702352 -1613176 5702944 1614576 5707608 1613200 5702888 1612192 5702352 -1613200 5702888 1612256 5702208 1612224 5702288 1612192 5702352 -1613200 5702888 1612232 5702104 1612256 5702160 1612256 5702208 -1613176 5702944 1613200 5702888 1612192 5702352 1612176 5702352 -1611552 5699400 1611528 5699488 1612208 5702072 1613200 5702888 -1663880 5646248 1613200 5702888 1614696 5707712 1663944 5646256 -1614696 5707712 1613240 5702856 1613200 5702888 1614680 5707680 -1613200 5702888 1614648 5707656 1614680 5707680 1613240 5702856 -1613200 5702888 1614576 5707608 1614648 5707656 1613240 5702856 -1613200 5702888 1613176 5702944 1614576 5707608 1613240 5702856 -1614576 5707608 1614648 5707656 1613240 5702856 1613176 5702944 -1613176 5702944 1614512 5707600 1614576 5707608 1613240 5702856 -1614680 5707680 1614696 5707712 1613240 5702856 1614648 5707656 -1614648 5707656 1614680 5707680 1613240 5702856 1614576 5707608 -1613240 5702856 1663880 5646248 1613200 5702888 1613176 5702944 -1613200 5702888 1613240 5702856 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613240 5702856 -1613200 5702888 1613240 5702856 1611560 5699312 1611552 5699400 -1613200 5702888 1613240 5702856 1611552 5699400 1612208 5702072 -1613240 5702856 1611560 5699312 1611552 5699400 1612208 5702072 -1613200 5702888 1613176 5702944 1613240 5702856 1612208 5702072 -1613240 5702856 1663880 5646248 1611560 5699312 1611552 5699400 -1613200 5702888 1613240 5702856 1612208 5702072 1612232 5702104 -1613240 5702856 1611552 5699400 1612208 5702072 1612232 5702104 -1613200 5702888 1613176 5702944 1613240 5702856 1612232 5702104 -1613200 5702888 1613240 5702856 1612232 5702104 1612256 5702160 -1613200 5702888 1613176 5702944 1613240 5702856 1612256 5702160 -1613240 5702856 1612208 5702072 1612232 5702104 1612256 5702160 -1613200 5702888 1613240 5702856 1612256 5702160 1612256 5702208 -1613200 5702888 1613240 5702856 1612256 5702208 1612224 5702288 -1613200 5702888 1613176 5702944 1613240 5702856 1612256 5702208 -1613240 5702856 1612232 5702104 1612256 5702160 1612256 5702208 -1611552 5699400 1611528 5699488 1612208 5702072 1613240 5702856 -1613240 5702856 1614696 5707712 1663880 5646248 1611560 5699312 -1614696 5707712 1663880 5646248 1613240 5702856 1614680 5707680 -1663880 5646248 1613240 5702856 1614696 5707712 1663944 5646256 -1613240 5702856 1613256 5702848 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613256 5702848 -1613240 5702856 1613256 5702848 1611560 5699312 1611552 5699400 -1613240 5702856 1613256 5702848 1611552 5699400 1612208 5702072 -1613240 5702856 1613256 5702848 1612208 5702072 1612232 5702104 -1613256 5702848 1611552 5699400 1612208 5702072 1612232 5702104 -1613256 5702848 1611560 5699312 1611552 5699400 1612208 5702072 -1613240 5702856 1613256 5702848 1612232 5702104 1612256 5702160 -1613256 5702848 1612208 5702072 1612232 5702104 1612256 5702160 -1613240 5702856 1613256 5702848 1612256 5702160 1612256 5702208 -1613256 5702848 1612232 5702104 1612256 5702160 1612256 5702208 -1613240 5702856 1613256 5702848 1612256 5702208 1613200 5702888 -1611552 5699400 1611528 5699488 1612208 5702072 1613256 5702848 -1613256 5702848 1663880 5646248 1611560 5699312 1611552 5699400 -1613240 5702856 1614696 5707712 1613256 5702848 1612256 5702208 -1614696 5707712 1613256 5702848 1613240 5702856 1614680 5707680 -1613240 5702856 1614648 5707656 1614680 5707680 1613256 5702848 -1613240 5702856 1614576 5707608 1614648 5707656 1613256 5702848 -1613240 5702856 1613176 5702944 1614576 5707608 1613256 5702848 -1613240 5702856 1613200 5702888 1613176 5702944 1613256 5702848 -1613176 5702944 1614512 5707600 1614576 5707608 1613256 5702848 -1614648 5707656 1614680 5707680 1613256 5702848 1614576 5707608 -1614576 5707608 1614648 5707656 1613256 5702848 1613176 5702944 -1613256 5702848 1612256 5702208 1613240 5702856 1613176 5702944 -1614680 5707680 1614696 5707712 1613256 5702848 1614648 5707656 -1613256 5702848 1614696 5707712 1663880 5646248 1611560 5699312 -1614696 5707712 1663880 5646248 1613256 5702848 1614680 5707680 -1663880 5646248 1613256 5702848 1614696 5707712 1663944 5646256 -1663880 5646248 1611560 5699312 1613256 5702848 1663944 5646256 -1613256 5702848 1614680 5707680 1614696 5707712 1663944 5646256 -1614696 5707712 1614704 5707744 1663944 5646256 1613256 5702848 -1614696 5707712 1613304 5702872 1613256 5702848 1614680 5707680 -1613256 5702848 1614648 5707656 1614680 5707680 1613304 5702872 -1613256 5702848 1614576 5707608 1614648 5707656 1613304 5702872 -1613256 5702848 1613176 5702944 1614576 5707608 1613304 5702872 -1613256 5702848 1613240 5702856 1613176 5702944 1613304 5702872 -1613240 5702856 1613200 5702888 1613176 5702944 1613304 5702872 -1613240 5702856 1613200 5702888 1613304 5702872 1613256 5702848 -1613176 5702944 1614512 5707600 1614576 5707608 1613304 5702872 -1614576 5707608 1614648 5707656 1613304 5702872 1614512 5707600 -1613176 5702944 1614512 5707600 1613304 5702872 1613200 5702888 -1614648 5707656 1614680 5707680 1613304 5702872 1614576 5707608 -1613304 5702872 1663944 5646256 1613256 5702848 1613240 5702856 -1614680 5707680 1614696 5707712 1613304 5702872 1614648 5707656 -1614696 5707712 1663944 5646256 1613304 5702872 1614680 5707680 -1613176 5702944 1613240 5707104 1614512 5707600 1613304 5702872 -1614512 5707600 1614576 5707608 1613304 5702872 1613240 5707104 -1613176 5702944 1613240 5707104 1613304 5702872 1613200 5702888 -1613176 5702944 1613152 5707048 1613240 5707104 1613304 5702872 -1613176 5702944 1613152 5707048 1613304 5702872 1613200 5702888 -1613176 5702944 1613096 5707024 1613152 5707048 1613304 5702872 -1613240 5707104 1614512 5707600 1613304 5702872 1613152 5707048 -1613240 5707104 1613288 5707144 1614512 5707600 1613304 5702872 -1613256 5702848 1613304 5702872 1663944 5646256 1663880 5646248 -1613256 5702848 1613304 5702872 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613304 5702872 -1613256 5702848 1613304 5702872 1611560 5699312 1611552 5699400 -1613256 5702848 1613304 5702872 1611552 5699400 1612208 5702072 -1613304 5702872 1663880 5646248 1611560 5699312 1611552 5699400 -1613256 5702848 1613240 5702856 1613304 5702872 1611552 5699400 -1613304 5702872 1614696 5707712 1663944 5646256 1663880 5646248 -1613304 5702872 1663944 5646256 1663880 5646248 1611560 5699312 -1663944 5646256 1613304 5702872 1614696 5707712 1614704 5707744 -1614696 5707712 1613344 5702912 1613304 5702872 1614680 5707680 -1613304 5702872 1614648 5707656 1614680 5707680 1613344 5702912 -1613304 5702872 1614576 5707608 1614648 5707656 1613344 5702912 -1613304 5702872 1614512 5707600 1614576 5707608 1613344 5702912 -1613304 5702872 1613240 5707104 1614512 5707600 1613344 5702912 -1614512 5707600 1614576 5707608 1613344 5702912 1613240 5707104 -1614576 5707608 1614648 5707656 1613344 5702912 1614512 5707600 -1614648 5707656 1614680 5707680 1613344 5702912 1614576 5707608 -1613344 5702912 1663944 5646256 1613304 5702872 1613240 5707104 -1614680 5707680 1614696 5707712 1613344 5702912 1614648 5707656 -1614696 5707712 1663944 5646256 1613344 5702912 1614680 5707680 -1613304 5702872 1613344 5702912 1663944 5646256 1663880 5646248 -1613304 5702872 1613240 5707104 1613344 5702912 1663880 5646248 -1613344 5702912 1614696 5707712 1663944 5646256 1663880 5646248 -1613304 5702872 1613152 5707048 1613240 5707104 1613344 5702912 -1613240 5707104 1614512 5707600 1613344 5702912 1613152 5707048 -1613304 5702872 1613176 5702944 1613152 5707048 1613344 5702912 -1613304 5702872 1613200 5702888 1613176 5702944 1613344 5702912 -1613176 5702944 1613096 5707024 1613152 5707048 1613344 5702912 -1613176 5702944 1612992 5706984 1613096 5707024 1613344 5702912 -1613096 5707024 1613152 5707048 1613344 5702912 1612992 5706984 -1613176 5702944 1612992 5706984 1613344 5702912 1613304 5702872 -1613176 5702944 1612848 5706920 1612992 5706984 1613344 5702912 -1612992 5706984 1613096 5707024 1613344 5702912 1612848 5706920 -1613176 5702944 1612792 5706920 1612848 5706920 1613344 5702912 -1613176 5702944 1612848 5706920 1613344 5702912 1613304 5702872 -1613304 5702872 1613176 5702944 1613344 5702912 1663880 5646248 -1613152 5707048 1613240 5707104 1613344 5702912 1613096 5707024 -1613240 5707104 1613288 5707144 1614512 5707600 1613344 5702912 -1613304 5702872 1613344 5702912 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613344 5702912 -1613304 5702872 1613344 5702912 1611560 5699312 1611552 5699400 -1613304 5702872 1613176 5702944 1613344 5702912 1611560 5699312 -1613344 5702912 1663944 5646256 1663880 5646248 1611560 5699312 -1663944 5646256 1613344 5702912 1614696 5707712 1614704 5707744 -1613344 5702912 1613392 5702960 1663944 5646256 1663880 5646248 -1613344 5702912 1614696 5707712 1613392 5702960 1663880 5646248 -1613392 5702960 1614696 5707712 1663944 5646256 1663880 5646248 -1613344 5702912 1613392 5702960 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613392 5702960 -1613344 5702912 1614696 5707712 1613392 5702960 1611560 5699312 -1613392 5702960 1663944 5646256 1663880 5646248 1611560 5699312 -1614696 5707712 1613392 5702960 1613344 5702912 1614680 5707680 -1613392 5702960 1611560 5699312 1613344 5702912 1614680 5707680 -1614696 5707712 1663944 5646256 1613392 5702960 1614680 5707680 -1613344 5702912 1614648 5707656 1614680 5707680 1613392 5702960 -1613344 5702912 1614648 5707656 1613392 5702960 1611560 5699312 -1613344 5702912 1614576 5707608 1614648 5707656 1613392 5702960 -1613344 5702912 1614576 5707608 1613392 5702960 1611560 5699312 -1613344 5702912 1614512 5707600 1614576 5707608 1613392 5702960 -1613344 5702912 1613240 5707104 1614512 5707600 1613392 5702960 -1613344 5702912 1613152 5707048 1613240 5707104 1613392 5702960 -1613240 5707104 1614512 5707600 1613392 5702960 1613152 5707048 -1613344 5702912 1613152 5707048 1613392 5702960 1611560 5699312 -1614512 5707600 1614576 5707608 1613392 5702960 1613240 5707104 -1614576 5707608 1614648 5707656 1613392 5702960 1614512 5707600 -1614648 5707656 1614680 5707680 1613392 5702960 1614576 5707608 -1614680 5707680 1614696 5707712 1613392 5702960 1614648 5707656 -1613344 5702912 1613096 5707024 1613152 5707048 1613392 5702960 -1613152 5707048 1613240 5707104 1613392 5702960 1613096 5707024 -1613344 5702912 1612992 5706984 1613096 5707024 1613392 5702960 -1613344 5702912 1612848 5706920 1612992 5706984 1613392 5702960 -1612992 5706984 1613096 5707024 1613392 5702960 1612848 5706920 -1613344 5702912 1613176 5702944 1612848 5706920 1613392 5702960 -1612848 5706920 1612992 5706984 1613392 5702960 1613176 5702944 -1613176 5702944 1612792 5706920 1612848 5706920 1613392 5702960 -1613344 5702912 1613304 5702872 1613176 5702944 1613392 5702960 -1613344 5702912 1613176 5702944 1613392 5702960 1611560 5699312 -1613096 5707024 1613152 5707048 1613392 5702960 1612992 5706984 -1613240 5707104 1613288 5707144 1614512 5707600 1613392 5702960 -1613344 5702912 1613392 5702960 1611560 5699312 1613304 5702872 -1663944 5646256 1613392 5702960 1614696 5707712 1614704 5707744 -1613392 5702960 1613464 5703016 1663944 5646256 1663880 5646248 -1613392 5702960 1614696 5707712 1613464 5703016 1663880 5646248 -1614696 5707712 1613464 5703016 1613392 5702960 1614680 5707680 -1613464 5703016 1663880 5646248 1613392 5702960 1614680 5707680 -1613464 5703016 1614696 5707712 1663944 5646256 1663880 5646248 -1614696 5707712 1663944 5646256 1613464 5703016 1614680 5707680 -1613392 5702960 1613464 5703016 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613464 5703016 -1613464 5703016 1663944 5646256 1663880 5646248 1611560 5699312 -1613392 5702960 1614680 5707680 1613464 5703016 1611560 5699312 -1613392 5702960 1613464 5703016 1611560 5699312 1613344 5702912 -1613392 5702960 1614680 5707680 1613464 5703016 1613344 5702912 -1613464 5703016 1663880 5646248 1611560 5699312 1613344 5702912 -1613392 5702960 1614648 5707656 1614680 5707680 1613464 5703016 -1613392 5702960 1614648 5707656 1613464 5703016 1613344 5702912 -1614680 5707680 1614696 5707712 1613464 5703016 1614648 5707656 -1613392 5702960 1614576 5707608 1614648 5707656 1613464 5703016 -1613392 5702960 1614576 5707608 1613464 5703016 1613344 5702912 -1613392 5702960 1614512 5707600 1614576 5707608 1613464 5703016 -1613392 5702960 1614512 5707600 1613464 5703016 1613344 5702912 -1613392 5702960 1613240 5707104 1614512 5707600 1613464 5703016 -1613392 5702960 1613152 5707048 1613240 5707104 1613464 5703016 -1613392 5702960 1613096 5707024 1613152 5707048 1613464 5703016 -1613152 5707048 1613240 5707104 1613464 5703016 1613096 5707024 -1613392 5702960 1613096 5707024 1613464 5703016 1613344 5702912 -1613240 5707104 1614512 5707600 1613464 5703016 1613152 5707048 -1614512 5707600 1614576 5707608 1613464 5703016 1613240 5707104 -1614576 5707608 1614648 5707656 1613464 5703016 1614512 5707600 -1614648 5707656 1614680 5707680 1613464 5703016 1614576 5707608 -1613392 5702960 1612992 5706984 1613096 5707024 1613464 5703016 -1613096 5707024 1613152 5707048 1613464 5703016 1612992 5706984 -1613392 5702960 1612848 5706920 1612992 5706984 1613464 5703016 -1613392 5702960 1613176 5702944 1612848 5706920 1613464 5703016 -1613176 5702944 1612792 5706920 1612848 5706920 1613464 5703016 -1612848 5706920 1612992 5706984 1613464 5703016 1613176 5702944 -1613392 5702960 1613344 5702912 1613176 5702944 1613464 5703016 -1613392 5702960 1613176 5702944 1613464 5703016 1613344 5702912 -1612992 5706984 1613096 5707024 1613464 5703016 1612848 5706920 -1613240 5707104 1613288 5707144 1614512 5707600 1613464 5703016 -1611560 5699312 1613304 5702872 1613344 5702912 1613464 5703016 -1611560 5699312 1611552 5699400 1613304 5702872 1613464 5703016 -1611560 5699312 1613304 5702872 1613464 5703016 1663880 5646248 -1613344 5702912 1613392 5702960 1613464 5703016 1613304 5702872 -1663944 5646256 1613464 5703016 1614696 5707712 1614704 5707744 -1613464 5703016 1613512 5703064 1663944 5646256 1663880 5646248 -1613464 5703016 1613512 5703064 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613512 5703064 -1613512 5703064 1663944 5646256 1663880 5646248 1611560 5699312 -1613464 5703016 1614696 5707712 1613512 5703064 1611560 5699312 -1614696 5707712 1613512 5703064 1613464 5703016 1614680 5707680 -1613464 5703016 1614648 5707656 1614680 5707680 1613512 5703064 -1613512 5703064 1611560 5699312 1613464 5703016 1614648 5707656 -1614680 5707680 1614696 5707712 1613512 5703064 1614648 5707656 -1613512 5703064 1614696 5707712 1663944 5646256 1663880 5646248 -1614696 5707712 1663944 5646256 1613512 5703064 1614680 5707680 -1613464 5703016 1613512 5703064 1611560 5699312 1613304 5702872 -1613464 5703016 1614576 5707608 1614648 5707656 1613512 5703064 -1614648 5707656 1614680 5707680 1613512 5703064 1614576 5707608 -1613464 5703016 1614576 5707608 1613512 5703064 1611560 5699312 -1613464 5703016 1614512 5707600 1614576 5707608 1613512 5703064 -1613464 5703016 1614512 5707600 1613512 5703064 1611560 5699312 -1613464 5703016 1613240 5707104 1614512 5707600 1613512 5703064 -1613464 5703016 1613240 5707104 1613512 5703064 1611560 5699312 -1613464 5703016 1613152 5707048 1613240 5707104 1613512 5703064 -1613464 5703016 1613096 5707024 1613152 5707048 1613512 5703064 -1613464 5703016 1612992 5706984 1613096 5707024 1613512 5703064 -1613096 5707024 1613152 5707048 1613512 5703064 1612992 5706984 -1613464 5703016 1612992 5706984 1613512 5703064 1611560 5699312 -1613152 5707048 1613240 5707104 1613512 5703064 1613096 5707024 -1613240 5707104 1614512 5707600 1613512 5703064 1613152 5707048 -1614512 5707600 1614576 5707608 1613512 5703064 1613240 5707104 -1614576 5707608 1614648 5707656 1613512 5703064 1614512 5707600 -1613464 5703016 1612848 5706920 1612992 5706984 1613512 5703064 -1612992 5706984 1613096 5707024 1613512 5703064 1612848 5706920 -1613464 5703016 1613176 5702944 1612848 5706920 1613512 5703064 -1613464 5703016 1613392 5702960 1613176 5702944 1613512 5703064 -1613176 5702944 1612792 5706920 1612848 5706920 1613512 5703064 -1613176 5702944 1611832 5706704 1612792 5706920 1613512 5703064 -1612792 5706920 1612848 5706920 1613512 5703064 1611832 5706704 -1611832 5706704 1611904 5706776 1612792 5706920 1613512 5703064 -1613176 5702944 1611784 5706704 1611832 5706704 1613512 5703064 -1613176 5702944 1611832 5706704 1613512 5703064 1613464 5703016 -1613464 5703016 1613176 5702944 1613512 5703064 1611560 5699312 -1612848 5706920 1612992 5706984 1613512 5703064 1612792 5706920 -1613240 5707104 1613288 5707144 1614512 5707600 1613512 5703064 -1663944 5646256 1613512 5703064 1614696 5707712 1614704 5707744 -1613512 5703064 1613560 5703120 1663944 5646256 1663880 5646248 -1613512 5703064 1613560 5703120 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613560 5703120 -1613512 5703064 1613560 5703120 1611560 5699312 1613464 5703016 -1613560 5703120 1663944 5646256 1663880 5646248 1611560 5699312 -1613512 5703064 1614696 5707712 1613560 5703120 1611560 5699312 -1614696 5707712 1613560 5703120 1613512 5703064 1614680 5707680 -1613512 5703064 1614648 5707656 1614680 5707680 1613560 5703120 -1613512 5703064 1614576 5707608 1614648 5707656 1613560 5703120 -1614648 5707656 1614680 5707680 1613560 5703120 1614576 5707608 -1613560 5703120 1611560 5699312 1613512 5703064 1614576 5707608 -1614680 5707680 1614696 5707712 1613560 5703120 1614648 5707656 -1613560 5703120 1614696 5707712 1663944 5646256 1663880 5646248 -1614696 5707712 1663944 5646256 1613560 5703120 1614680 5707680 -1613512 5703064 1614512 5707600 1614576 5707608 1613560 5703120 -1614576 5707608 1614648 5707656 1613560 5703120 1614512 5707600 -1613512 5703064 1614512 5707600 1613560 5703120 1611560 5699312 -1613512 5703064 1613240 5707104 1614512 5707600 1613560 5703120 -1613512 5703064 1613240 5707104 1613560 5703120 1611560 5699312 -1613512 5703064 1613152 5707048 1613240 5707104 1613560 5703120 -1613512 5703064 1613152 5707048 1613560 5703120 1611560 5699312 -1613512 5703064 1613096 5707024 1613152 5707048 1613560 5703120 -1613512 5703064 1612992 5706984 1613096 5707024 1613560 5703120 -1613512 5703064 1612848 5706920 1612992 5706984 1613560 5703120 -1612992 5706984 1613096 5707024 1613560 5703120 1612848 5706920 -1613512 5703064 1612848 5706920 1613560 5703120 1611560 5699312 -1613096 5707024 1613152 5707048 1613560 5703120 1612992 5706984 -1613152 5707048 1613240 5707104 1613560 5703120 1613096 5707024 -1613240 5707104 1614512 5707600 1613560 5703120 1613152 5707048 -1614512 5707600 1614576 5707608 1613560 5703120 1613240 5707104 -1613512 5703064 1612792 5706920 1612848 5706920 1613560 5703120 -1612848 5706920 1612992 5706984 1613560 5703120 1612792 5706920 -1613512 5703064 1611832 5706704 1612792 5706920 1613560 5703120 -1613512 5703064 1613176 5702944 1611832 5706704 1613560 5703120 -1611832 5706704 1612792 5706920 1613560 5703120 1613176 5702944 -1611832 5706704 1611904 5706776 1612792 5706920 1613560 5703120 -1613176 5702944 1611784 5706704 1611832 5706704 1613560 5703120 -1613512 5703064 1613464 5703016 1613176 5702944 1613560 5703120 -1613512 5703064 1613176 5702944 1613560 5703120 1611560 5699312 -1612792 5706920 1612848 5706920 1613560 5703120 1611832 5706704 -1613240 5707104 1613288 5707144 1614512 5707600 1613560 5703120 -1663944 5646256 1613560 5703120 1614696 5707712 1614704 5707744 -1613560 5703120 1613592 5703136 1663944 5646256 1663880 5646248 -1613592 5703136 1614696 5707712 1663944 5646256 1663880 5646248 -1613560 5703120 1613592 5703136 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1613592 5703136 -1613560 5703120 1613592 5703136 1611560 5699312 1613512 5703064 -1611560 5699312 1613464 5703016 1613512 5703064 1613592 5703136 -1613512 5703064 1613560 5703120 1613592 5703136 1613464 5703016 -1613592 5703136 1663880 5646248 1611560 5699312 1613464 5703016 -1613592 5703136 1663944 5646256 1663880 5646248 1611560 5699312 -1613560 5703120 1614696 5707712 1613592 5703136 1613512 5703064 -1614696 5707712 1613592 5703136 1613560 5703120 1614680 5707680 -1614696 5707712 1663944 5646256 1613592 5703136 1614680 5707680 -1613560 5703120 1614648 5707656 1614680 5707680 1613592 5703136 -1613560 5703120 1614576 5707608 1614648 5707656 1613592 5703136 -1613560 5703120 1614512 5707600 1614576 5707608 1613592 5703136 -1614576 5707608 1614648 5707656 1613592 5703136 1614512 5707600 -1614648 5707656 1614680 5707680 1613592 5703136 1614576 5707608 -1613592 5703136 1613512 5703064 1613560 5703120 1614512 5707600 -1614680 5707680 1614696 5707712 1613592 5703136 1614648 5707656 -1611560 5699312 1613304 5702872 1613464 5703016 1613592 5703136 -1613560 5703120 1613240 5707104 1614512 5707600 1613592 5703136 -1614512 5707600 1614576 5707608 1613592 5703136 1613240 5707104 -1613560 5703120 1613240 5707104 1613592 5703136 1613512 5703064 -1613560 5703120 1613152 5707048 1613240 5707104 1613592 5703136 -1613560 5703120 1613152 5707048 1613592 5703136 1613512 5703064 -1613560 5703120 1613096 5707024 1613152 5707048 1613592 5703136 -1613560 5703120 1613096 5707024 1613592 5703136 1613512 5703064 -1613560 5703120 1612992 5706984 1613096 5707024 1613592 5703136 -1613560 5703120 1612848 5706920 1612992 5706984 1613592 5703136 -1613560 5703120 1612792 5706920 1612848 5706920 1613592 5703136 -1612848 5706920 1612992 5706984 1613592 5703136 1612792 5706920 -1613560 5703120 1612792 5706920 1613592 5703136 1613512 5703064 -1612992 5706984 1613096 5707024 1613592 5703136 1612848 5706920 -1613096 5707024 1613152 5707048 1613592 5703136 1612992 5706984 -1613152 5707048 1613240 5707104 1613592 5703136 1613096 5707024 -1613240 5707104 1614512 5707600 1613592 5703136 1613152 5707048 -1613560 5703120 1611832 5706704 1612792 5706920 1613592 5703136 -1612792 5706920 1612848 5706920 1613592 5703136 1611832 5706704 -1613560 5703120 1613176 5702944 1611832 5706704 1613592 5703136 -1611832 5706704 1611904 5706776 1612792 5706920 1613592 5703136 -1613560 5703120 1611832 5706704 1613592 5703136 1613512 5703064 -1613240 5707104 1613288 5707144 1614512 5707600 1613592 5703136 -1663944 5646256 1613592 5703136 1614696 5707712 1614704 5707744 -1613592 5703136 1613584 5703232 1614512 5707600 1614576 5707608 -1613592 5703136 1613240 5707104 1613584 5703232 1614576 5707608 -1613584 5703232 1613240 5707104 1614512 5707600 1614576 5707608 -1613592 5703136 1613584 5703232 1614576 5707608 1614648 5707656 -1613592 5703136 1613240 5707104 1613584 5703232 1614648 5707656 -1613584 5703232 1614512 5707600 1614576 5707608 1614648 5707656 -1613592 5703136 1613584 5703232 1614648 5707656 1614680 5707680 -1613592 5703136 1613240 5707104 1613584 5703232 1614680 5707680 -1613584 5703232 1614576 5707608 1614648 5707656 1614680 5707680 -1613592 5703136 1613584 5703232 1614680 5707680 1614696 5707712 -1613240 5707104 1613584 5703232 1613592 5703136 1613152 5707048 -1613584 5703232 1614680 5707680 1613592 5703136 1613152 5707048 -1613240 5707104 1614512 5707600 1613584 5703232 1613152 5707048 -1613592 5703136 1613096 5707024 1613152 5707048 1613584 5703232 -1613592 5703136 1613096 5707024 1613584 5703232 1614680 5707680 -1613592 5703136 1612992 5706984 1613096 5707024 1613584 5703232 -1613592 5703136 1612992 5706984 1613584 5703232 1614680 5707680 -1613592 5703136 1612848 5706920 1612992 5706984 1613584 5703232 -1613592 5703136 1612848 5706920 1613584 5703232 1614680 5707680 -1613592 5703136 1612792 5706920 1612848 5706920 1613584 5703232 -1613592 5703136 1612792 5706920 1613584 5703232 1614680 5707680 -1613592 5703136 1611832 5706704 1612792 5706920 1613584 5703232 -1613592 5703136 1611832 5706704 1613584 5703232 1614680 5707680 -1612792 5706920 1612848 5706920 1613584 5703232 1611832 5706704 -1611832 5706704 1611904 5706776 1612792 5706920 1613584 5703232 -1612848 5706920 1612992 5706984 1613584 5703232 1612792 5706920 -1612992 5706984 1613096 5707024 1613584 5703232 1612848 5706920 -1613096 5707024 1613152 5707048 1613584 5703232 1612992 5706984 -1613152 5707048 1613240 5707104 1613584 5703232 1613096 5707024 -1613592 5703136 1613560 5703120 1611832 5706704 1613584 5703232 -1613592 5703136 1613560 5703120 1613584 5703232 1614680 5707680 -1611832 5706704 1612792 5706920 1613584 5703232 1613560 5703120 -1613560 5703120 1613176 5702944 1611832 5706704 1613584 5703232 -1613560 5703120 1613512 5703064 1613176 5702944 1613584 5703232 -1611832 5706704 1612792 5706920 1613584 5703232 1613176 5702944 -1613176 5702944 1611832 5706704 1613584 5703232 1613512 5703064 -1613176 5702944 1611784 5706704 1611832 5706704 1613584 5703232 -1613512 5703064 1613464 5703016 1613176 5702944 1613584 5703232 -1613512 5703064 1613464 5703016 1613584 5703232 1613560 5703120 -1613464 5703016 1613392 5702960 1613176 5702944 1613584 5703232 -1613176 5702944 1611832 5706704 1613584 5703232 1613464 5703016 -1613560 5703120 1613512 5703064 1613584 5703232 1613592 5703136 -1614512 5707600 1613584 5703232 1613240 5707104 1613288 5707144 -1613584 5703232 1613552 5703272 1611832 5706704 1612792 5706920 -1613584 5703232 1613176 5702944 1613552 5703272 1612792 5706920 -1613552 5703272 1613176 5702944 1611832 5706704 1612792 5706920 -1613176 5702944 1613552 5703272 1613584 5703232 1613464 5703016 -1613552 5703272 1612792 5706920 1613584 5703232 1613464 5703016 -1613176 5702944 1611832 5706704 1613552 5703272 1613464 5703016 -1613176 5702944 1613552 5703272 1613464 5703016 1613392 5702960 -1613584 5703232 1613552 5703272 1612792 5706920 1612848 5706920 -1613584 5703232 1613464 5703016 1613552 5703272 1612848 5706920 -1613552 5703272 1611832 5706704 1612792 5706920 1612848 5706920 -1611832 5706704 1611904 5706776 1612792 5706920 1613552 5703272 -1611832 5706704 1613552 5703272 1613176 5702944 1611784 5706704 -1613584 5703232 1613512 5703064 1613464 5703016 1613552 5703272 -1613584 5703232 1613560 5703120 1613512 5703064 1613552 5703272 -1613584 5703232 1613560 5703120 1613552 5703272 1612848 5706920 -1613464 5703016 1613176 5702944 1613552 5703272 1613512 5703064 -1613512 5703064 1613464 5703016 1613552 5703272 1613560 5703120 -1613584 5703232 1613552 5703272 1612848 5706920 1612992 5706984 -1613584 5703232 1613560 5703120 1613552 5703272 1612992 5706984 -1613552 5703272 1612792 5706920 1612848 5706920 1612992 5706984 -1613584 5703232 1613552 5703272 1612992 5706984 1613096 5707024 -1613584 5703232 1613560 5703120 1613552 5703272 1613096 5707024 -1613552 5703272 1612848 5706920 1612992 5706984 1613096 5707024 -1613584 5703232 1613552 5703272 1613096 5707024 1613152 5707048 -1613584 5703232 1613560 5703120 1613552 5703272 1613152 5707048 -1613552 5703272 1612992 5706984 1613096 5707024 1613152 5707048 -1613584 5703232 1613552 5703272 1613152 5707048 1613240 5707104 -1613584 5703232 1613560 5703120 1613552 5703272 1613240 5707104 -1613584 5703232 1613552 5703272 1613240 5707104 1614512 5707600 -1613584 5703232 1613552 5703272 1614512 5707600 1614576 5707608 -1613584 5703232 1613560 5703120 1613552 5703272 1614576 5707608 -1613552 5703272 1613240 5707104 1614512 5707600 1614576 5707608 -1613584 5703232 1613552 5703272 1614576 5707608 1614648 5707656 -1613552 5703272 1613096 5707024 1613152 5707048 1613240 5707104 -1613552 5703272 1613152 5707048 1613240 5707104 1614512 5707600 -1613584 5703232 1613592 5703136 1613560 5703120 1613552 5703272 -1613240 5707104 1613288 5707144 1614512 5707600 1613552 5703272 -1613552 5703272 1613528 5703288 1611832 5706704 1612792 5706920 -1613552 5703272 1613176 5702944 1613528 5703288 1612792 5706920 -1613176 5702944 1613528 5703288 1613552 5703272 1613464 5703016 -1613528 5703288 1612792 5706920 1613552 5703272 1613464 5703016 -1613552 5703272 1613528 5703288 1612792 5706920 1612848 5706920 -1613528 5703288 1611832 5706704 1612792 5706920 1612848 5706920 -1613552 5703272 1613464 5703016 1613528 5703288 1612848 5706920 -1613176 5702944 1613528 5703288 1613464 5703016 1613392 5702960 -1613552 5703272 1613512 5703064 1613464 5703016 1613528 5703288 -1613552 5703272 1613512 5703064 1613528 5703288 1612848 5706920 -1613552 5703272 1613528 5703288 1612848 5706920 1612992 5706984 -1613552 5703272 1613512 5703064 1613528 5703288 1612992 5706984 -1613528 5703288 1612792 5706920 1612848 5706920 1612992 5706984 -1611832 5706704 1611904 5706776 1612792 5706920 1613528 5703288 -1611832 5706704 1613528 5703288 1613176 5702944 1611784 5706704 -1613552 5703272 1613560 5703120 1613512 5703064 1613528 5703288 -1613552 5703272 1613584 5703232 1613560 5703120 1613528 5703288 -1613552 5703272 1613560 5703120 1613528 5703288 1612992 5706984 -1613512 5703064 1613464 5703016 1613528 5703288 1613560 5703120 -1613176 5702944 1611832 5706704 1613528 5703288 1613464 5703016 -1613528 5703288 1613176 5702944 1611832 5706704 1612792 5706920 -1613464 5703016 1613176 5702944 1613528 5703288 1613512 5703064 -1613552 5703272 1613528 5703288 1612992 5706984 1613096 5707024 -1613552 5703272 1613560 5703120 1613528 5703288 1613096 5707024 -1613528 5703288 1612848 5706920 1612992 5706984 1613096 5707024 -1613552 5703272 1613528 5703288 1613096 5707024 1613152 5707048 -1613552 5703272 1613560 5703120 1613528 5703288 1613152 5707048 -1613528 5703288 1612992 5706984 1613096 5707024 1613152 5707048 -1613552 5703272 1613528 5703288 1613152 5707048 1613240 5707104 -1613552 5703272 1613560 5703120 1613528 5703288 1613240 5707104 -1613528 5703288 1613096 5707024 1613152 5707048 1613240 5707104 -1613552 5703272 1613528 5703288 1613240 5707104 1614512 5707600 -1613552 5703272 1613528 5703288 1614512 5707600 1614576 5707608 -1613552 5703272 1613528 5703288 1614576 5707608 1613584 5703232 -1613552 5703272 1613560 5703120 1613528 5703288 1614576 5707608 -1613528 5703288 1613152 5707048 1613240 5707104 1614512 5707600 -1613528 5703288 1613240 5707104 1614512 5707600 1614576 5707608 -1613240 5707104 1613288 5707144 1614512 5707600 1613528 5703288 -1611832 5706704 1613496 5703288 1613176 5702944 1611784 5706704 -1613496 5703288 1613528 5703288 1613176 5702944 1611784 5706704 -1613176 5702944 1612160 5702352 1611784 5706704 1613496 5703288 -1613176 5702944 1613496 5703288 1613528 5703288 1613464 5703016 -1613176 5702944 1611784 5706704 1613496 5703288 1613464 5703016 -1613176 5702944 1613496 5703288 1613464 5703016 1613392 5702960 -1613176 5702944 1611784 5706704 1613496 5703288 1613392 5702960 -1613176 5702944 1613496 5703288 1613392 5702960 1613344 5702912 -1613496 5703288 1613528 5703288 1613464 5703016 1613392 5702960 -1613496 5703288 1611832 5706704 1613528 5703288 1613464 5703016 -1611832 5706704 1613528 5703288 1613496 5703288 1611784 5706704 -1613528 5703288 1613496 5703288 1611832 5706704 1612792 5706920 -1613528 5703288 1613496 5703288 1612792 5706920 1612848 5706920 -1613528 5703288 1613496 5703288 1612848 5706920 1612992 5706984 -1611832 5706704 1611904 5706776 1612792 5706920 1613496 5703288 -1613528 5703288 1613464 5703016 1613496 5703288 1612848 5706920 -1613496 5703288 1611784 5706704 1611832 5706704 1612792 5706920 -1613496 5703288 1611832 5706704 1612792 5706920 1612848 5706920 -1613528 5703288 1613512 5703064 1613464 5703016 1613496 5703288 -1613528 5703288 1613560 5703120 1613512 5703064 1613496 5703288 -1613528 5703288 1613552 5703272 1613560 5703120 1613496 5703288 -1613552 5703272 1613584 5703232 1613560 5703120 1613496 5703288 -1613560 5703120 1613512 5703064 1613496 5703288 1613584 5703232 -1613552 5703272 1613584 5703232 1613496 5703288 1613528 5703288 -1613464 5703016 1613392 5702960 1613496 5703288 1613512 5703064 -1613528 5703288 1613552 5703272 1613496 5703288 1612848 5706920 -1613512 5703064 1613464 5703016 1613496 5703288 1613560 5703120 -1613584 5703232 1613592 5703136 1613560 5703120 1613496 5703288 -1613176 5702944 1613448 5703264 1613496 5703288 1613392 5702960 -1613448 5703264 1611784 5706704 1613496 5703288 1613392 5702960 -1613176 5702944 1611784 5706704 1613448 5703264 1613392 5702960 -1613496 5703288 1613464 5703016 1613392 5702960 1613448 5703264 -1613496 5703288 1613464 5703016 1613448 5703264 1611784 5706704 -1613392 5702960 1613176 5702944 1613448 5703264 1613464 5703016 -1611784 5706704 1613448 5703264 1613176 5702944 1612160 5702352 -1613496 5703288 1613448 5703264 1611784 5706704 1611832 5706704 -1613496 5703288 1613464 5703016 1613448 5703264 1611832 5706704 -1613448 5703264 1613176 5702944 1611784 5706704 1611832 5706704 -1613176 5702944 1613448 5703264 1613392 5702960 1613344 5702912 -1613496 5703288 1613512 5703064 1613464 5703016 1613448 5703264 -1613496 5703288 1613512 5703064 1613448 5703264 1611832 5706704 -1613464 5703016 1613392 5702960 1613448 5703264 1613512 5703064 -1613496 5703288 1613448 5703264 1611832 5706704 1612792 5706920 -1613496 5703288 1613560 5703120 1613512 5703064 1613448 5703264 -1613496 5703288 1613560 5703120 1613448 5703264 1611832 5706704 -1613496 5703288 1613584 5703232 1613560 5703120 1613448 5703264 -1613496 5703288 1613552 5703272 1613584 5703232 1613448 5703264 -1613496 5703288 1613552 5703272 1613448 5703264 1611832 5706704 -1613584 5703232 1613560 5703120 1613448 5703264 1613552 5703272 -1613496 5703288 1613528 5703288 1613552 5703272 1613448 5703264 -1613512 5703064 1613464 5703016 1613448 5703264 1613560 5703120 -1613560 5703120 1613512 5703064 1613448 5703264 1613584 5703232 -1613584 5703232 1613592 5703136 1613560 5703120 1613448 5703264 -1613448 5703264 1613376 5703232 1611784 5706704 1611832 5706704 -1613448 5703264 1613176 5702944 1613376 5703232 1611832 5706704 -1613176 5702944 1613376 5703232 1613448 5703264 1613392 5702960 -1613448 5703264 1613464 5703016 1613392 5702960 1613376 5703232 -1613376 5703232 1611832 5706704 1613448 5703264 1613464 5703016 -1613392 5702960 1613176 5702944 1613376 5703232 1613464 5703016 -1613376 5703232 1613176 5702944 1611784 5706704 1611832 5706704 -1613176 5702944 1611784 5706704 1613376 5703232 1613392 5702960 -1613448 5703264 1613512 5703064 1613464 5703016 1613376 5703232 -1613464 5703016 1613392 5702960 1613376 5703232 1613512 5703064 -1613448 5703264 1613512 5703064 1613376 5703232 1611832 5706704 -1611784 5706704 1613376 5703232 1613176 5702944 1612160 5702352 -1611784 5706704 1611832 5706704 1613376 5703232 1612160 5702352 -1613376 5703232 1613392 5702960 1613176 5702944 1612160 5702352 -1611784 5706704 1613376 5703232 1612160 5702352 1609480 5702960 -1613176 5702944 1612176 5702352 1612160 5702352 1613376 5703232 -1613448 5703264 1613376 5703232 1611832 5706704 1613496 5703288 -1613376 5703232 1611784 5706704 1611832 5706704 1613496 5703288 -1613448 5703264 1613512 5703064 1613376 5703232 1613496 5703288 -1613176 5702944 1613376 5703232 1613392 5702960 1613344 5702912 -1613448 5703264 1613560 5703120 1613512 5703064 1613376 5703232 -1611832 5706704 1612792 5706920 1613496 5703288 1613376 5703232 -1613376 5703232 1613328 5703200 1611784 5706704 1611832 5706704 -1613376 5703232 1613328 5703200 1611832 5706704 1613496 5703288 -1613376 5703232 1612160 5702352 1613328 5703200 1611832 5706704 -1613328 5703200 1612160 5702352 1611784 5706704 1611832 5706704 -1611784 5706704 1613328 5703200 1612160 5702352 1609480 5702960 -1612160 5702352 1613328 5703200 1613376 5703232 1613176 5702944 -1613328 5703200 1611832 5706704 1613376 5703232 1613176 5702944 -1613376 5703232 1613392 5702960 1613176 5702944 1613328 5703200 -1613376 5703232 1613464 5703016 1613392 5702960 1613328 5703200 -1613376 5703232 1613512 5703064 1613464 5703016 1613328 5703200 -1613464 5703016 1613392 5702960 1613328 5703200 1613512 5703064 -1613376 5703232 1613512 5703064 1613328 5703200 1611832 5706704 -1613392 5702960 1613176 5702944 1613328 5703200 1613464 5703016 -1613376 5703232 1613448 5703264 1613512 5703064 1613328 5703200 -1612160 5702352 1613328 5703200 1613176 5702944 1612176 5702352 -1613176 5702944 1612160 5702352 1613328 5703200 1613392 5702960 -1612160 5702352 1611784 5706704 1613328 5703200 1613176 5702944 -1613392 5702960 1613344 5702912 1613176 5702944 1613328 5703200 -1613328 5703200 1613272 5703160 1611784 5706704 1611832 5706704 -1613328 5703200 1613272 5703160 1611832 5706704 1613376 5703232 -1611784 5706704 1613272 5703160 1612160 5702352 1609480 5702960 -1613328 5703200 1612160 5702352 1613272 5703160 1611832 5706704 -1612160 5702352 1613272 5703160 1613328 5703200 1613176 5702944 -1612160 5702352 1613272 5703160 1613176 5702944 1612176 5702352 -1613328 5703200 1613392 5702960 1613176 5702944 1613272 5703160 -1613328 5703200 1613464 5703016 1613392 5702960 1613272 5703160 -1613328 5703200 1613512 5703064 1613464 5703016 1613272 5703160 -1613392 5702960 1613176 5702944 1613272 5703160 1613464 5703016 -1613272 5703160 1611832 5706704 1613328 5703200 1613464 5703016 -1613176 5702944 1612160 5702352 1613272 5703160 1613392 5702960 -1613272 5703160 1612160 5702352 1611784 5706704 1611832 5706704 -1612160 5702352 1611784 5706704 1613272 5703160 1613176 5702944 -1613392 5702960 1613344 5702912 1613176 5702944 1613272 5703160 -1612160 5702352 1613224 5703096 1613176 5702944 1612176 5702352 -1613176 5702944 1612192 5702352 1612176 5702352 1613224 5703096 -1612176 5702352 1612160 5702352 1613224 5703096 1612192 5702352 -1613176 5702944 1613200 5702888 1612192 5702352 1613224 5703096 -1613176 5702944 1613224 5703096 1613272 5703160 1613392 5702960 -1613272 5703160 1613464 5703016 1613392 5702960 1613224 5703096 -1613272 5703160 1613224 5703096 1612160 5702352 1611784 5706704 -1613224 5703096 1612160 5702352 1613272 5703160 1613392 5702960 -1612160 5702352 1613272 5703160 1613224 5703096 1612176 5702352 -1613224 5703096 1613392 5702960 1613176 5702944 1612192 5702352 -1613176 5702944 1613224 5703096 1613392 5702960 1613344 5702912 -1613176 5702944 1613224 5703096 1613344 5702912 1613304 5702872 -1613224 5703096 1613272 5703160 1613392 5702960 1613344 5702912 -1613176 5702944 1612192 5702352 1613224 5703096 1613344 5702912 -1613224 5703096 1613176 5702984 1612192 5702352 1612176 5702352 -1613224 5703096 1613176 5702984 1612176 5702352 1612160 5702352 -1613176 5702984 1612192 5702352 1612176 5702352 1612160 5702352 -1612192 5702352 1613176 5702984 1613176 5702944 1613200 5702888 -1613224 5703096 1613176 5702984 1612160 5702352 1613272 5703160 -1613224 5703096 1613176 5702944 1613176 5702984 1612160 5702352 -1613176 5702944 1613176 5702984 1613224 5703096 1613344 5702912 -1613176 5702944 1613176 5702984 1613344 5702912 1613304 5702872 -1613176 5702984 1612160 5702352 1613224 5703096 1613344 5702912 -1613176 5702984 1613176 5702944 1612192 5702352 1612176 5702352 -1613176 5702944 1612192 5702352 1613176 5702984 1613344 5702912 -1613224 5703096 1613392 5702960 1613344 5702912 1613176 5702984 -1663944 5646256 1619184 5717344 1621088 5722784 1621280 5723224 -1663944 5646256 1619184 5717344 1621280 5723224 1743800 5687320 -1663944 5646256 1614704 5707744 1619184 5717344 1621280 5723224 -1619184 5717344 1614704 5707744 1621088 5722784 1621280 5723224 -1621088 5722784 1619184 5717344 1614704 5707744 1621040 5722712 -1614704 5707744 1620992 5722672 1621040 5722712 1619184 5717344 -1614704 5707744 1614696 5707848 1620992 5722672 1619184 5717344 -1620992 5722672 1621040 5722712 1619184 5717344 1614696 5707848 -1621088 5722784 1621280 5723224 1619184 5717344 1621040 5722712 -1619184 5717344 1663944 5646256 1614704 5707744 1614696 5707848 -1614696 5707848 1614688 5707952 1620992 5722672 1619184 5717344 -1614696 5707848 1614688 5707952 1619184 5717344 1614704 5707744 -1620992 5722672 1621040 5722712 1619184 5717344 1614688 5707952 -1614688 5707952 1614664 5708048 1620992 5722672 1619184 5717344 -1620992 5722672 1621040 5722712 1619184 5717344 1614664 5708048 -1614664 5708048 1620872 5722632 1620992 5722672 1619184 5717344 -1620992 5722672 1621040 5722712 1619184 5717344 1620872 5722632 -1614664 5708048 1614648 5708080 1620872 5722632 1619184 5717344 -1614648 5708080 1620792 5722624 1620872 5722632 1619184 5717344 -1614648 5708080 1620792 5722624 1619184 5717344 1614664 5708048 -1614648 5708080 1620656 5722632 1620792 5722624 1619184 5717344 -1614648 5708080 1620656 5722632 1619184 5717344 1614664 5708048 -1614648 5708080 1614576 5708144 1620656 5722632 1619184 5717344 -1614648 5708080 1614576 5708144 1619184 5717344 1614664 5708048 -1620656 5722632 1620792 5722624 1619184 5717344 1614576 5708144 -1620792 5722624 1620872 5722632 1619184 5717344 1620656 5722632 -1614576 5708144 1611528 5715552 1620656 5722632 1619184 5717344 -1620656 5722632 1620792 5722624 1619184 5717344 1611528 5715552 -1614576 5708144 1611528 5715552 1619184 5717344 1614648 5708080 -1614664 5708048 1614648 5708080 1619184 5717344 1614688 5707952 -1611528 5715552 1620600 5722648 1620656 5722632 1619184 5717344 -1611528 5715552 1611520 5715576 1620600 5722648 1619184 5717344 -1611520 5715576 1611456 5715680 1620600 5722648 1619184 5717344 -1611520 5715576 1611456 5715680 1619184 5717344 1611528 5715552 -1611456 5715680 1611424 5715704 1620600 5722648 1619184 5717344 -1611456 5715680 1611424 5715704 1619184 5717344 1611520 5715576 -1611424 5715704 1611328 5715760 1620600 5722648 1619184 5717344 -1611328 5715760 1620584 5722728 1620600 5722648 1619184 5717344 -1611328 5715760 1620600 5722784 1620584 5722728 1619184 5717344 -1611328 5715760 1620584 5722728 1619184 5717344 1611424 5715704 -1611424 5715704 1611328 5715760 1619184 5717344 1611456 5715680 -1620656 5722632 1620792 5722624 1619184 5717344 1620600 5722648 -1611528 5715552 1611520 5715576 1619184 5717344 1614576 5708144 -1620600 5722648 1620656 5722632 1619184 5717344 1620584 5722728 -1620872 5722632 1620992 5722672 1619184 5717344 1620792 5722624 -1611520 5715576 1611464 5715656 1611456 5715680 1619184 5717344 -1614576 5708144 1613840 5708448 1611528 5715552 1619184 5717344 -1613840 5708448 1611512 5715528 1611528 5715552 1619184 5717344 -1614576 5708144 1613896 5708408 1613840 5708448 1619184 5717344 -1614576 5708144 1613840 5708448 1619184 5717344 1614648 5708080 -1611528 5715552 1611520 5715576 1619184 5717344 1613840 5708448 -1614688 5707952 1614664 5708048 1619184 5717344 1614696 5707848 -1621040 5722712 1621088 5722784 1619184 5717344 1620992 5722672 -1614704 5707744 1619184 5717344 1663944 5646256 1614696 5707712 -1619184 5717344 1621280 5723224 1663944 5646256 1614696 5707712 -1614704 5707744 1614696 5707848 1619184 5717344 1614696 5707712 -1663944 5646256 1613592 5703136 1614696 5707712 1619184 5717344 -1663944 5646256 1663880 5646248 1613592 5703136 1619184 5717344 -1613592 5703136 1614680 5707680 1614696 5707712 1619184 5717344 -1663944 5646256 1613592 5703136 1619184 5717344 1621280 5723224 -1614696 5707712 1614704 5707744 1619184 5717344 1613592 5703136 -1613592 5703136 1619224 5717272 1663944 5646256 1663880 5646248 -1663944 5646256 1619224 5717272 1619184 5717344 1621280 5723224 -1663944 5646256 1619224 5717272 1621280 5723224 1743800 5687320 -1663944 5646256 1613592 5703136 1619224 5717272 1621280 5723224 -1619224 5717272 1613592 5703136 1619184 5717344 1621280 5723224 -1619184 5717344 1621088 5722784 1621280 5723224 1619224 5717272 -1621280 5723224 1663944 5646256 1619224 5717272 1621088 5722784 -1619184 5717344 1621040 5722712 1621088 5722784 1619224 5717272 -1619184 5717344 1621040 5722712 1619224 5717272 1613592 5703136 -1621088 5722784 1621280 5723224 1619224 5717272 1621040 5722712 -1619184 5717344 1620992 5722672 1621040 5722712 1619224 5717272 -1619184 5717344 1620872 5722632 1620992 5722672 1619224 5717272 -1621040 5722712 1621088 5722784 1619224 5717272 1620992 5722672 -1619184 5717344 1620992 5722672 1619224 5717272 1613592 5703136 -1619184 5717344 1619224 5717272 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619224 5717272 -1619184 5717344 1620992 5722672 1619224 5717272 1614696 5707712 -1619224 5717272 1663944 5646256 1613592 5703136 1614696 5707712 -1619184 5717344 1619224 5717272 1614696 5707712 1614704 5707744 -1619184 5717344 1620992 5722672 1619224 5717272 1614704 5707744 -1619184 5717344 1619224 5717272 1614704 5707744 1614696 5707848 -1619184 5717344 1619224 5717272 1614696 5707848 1614688 5707952 -1619184 5717344 1620992 5722672 1619224 5717272 1614688 5707952 -1619224 5717272 1614704 5707744 1614696 5707848 1614688 5707952 -1619184 5717344 1619224 5717272 1614688 5707952 1614664 5708048 -1619224 5717272 1614696 5707848 1614688 5707952 1614664 5708048 -1619184 5717344 1620992 5722672 1619224 5717272 1614664 5708048 -1619184 5717344 1619224 5717272 1614664 5708048 1614648 5708080 -1619184 5717344 1619224 5717272 1614648 5708080 1614576 5708144 -1619184 5717344 1619224 5717272 1614576 5708144 1613840 5708448 -1619224 5717272 1614648 5708080 1614576 5708144 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1619224 5717272 -1619184 5717344 1620992 5722672 1619224 5717272 1613840 5708448 -1619224 5717272 1614664 5708048 1614648 5708080 1614576 5708144 -1619184 5717344 1619224 5717272 1613840 5708448 1611528 5715552 -1613840 5708448 1611512 5715528 1611528 5715552 1619224 5717272 -1619224 5717272 1614576 5708144 1613840 5708448 1611528 5715552 -1619184 5717344 1620992 5722672 1619224 5717272 1611528 5715552 -1619184 5717344 1619224 5717272 1611528 5715552 1611520 5715576 -1619224 5717272 1614688 5707952 1614664 5708048 1614648 5708080 -1619224 5717272 1613592 5703136 1614696 5707712 1614704 5707744 -1619224 5717272 1614696 5707712 1614704 5707744 1614696 5707848 -1663944 5646256 1619248 5717248 1621280 5723224 1743800 5687320 -1619224 5717272 1619248 5717248 1663944 5646256 1613592 5703136 -1663944 5646256 1663880 5646248 1613592 5703136 1619248 5717248 -1619224 5717272 1621280 5723224 1619248 5717248 1613592 5703136 -1619248 5717248 1621280 5723224 1663944 5646256 1613592 5703136 -1621280 5723224 1619248 5717248 1619224 5717272 1621088 5722784 -1619248 5717248 1613592 5703136 1619224 5717272 1621088 5722784 -1621280 5723224 1663944 5646256 1619248 5717248 1621088 5722784 -1619224 5717272 1619248 5717248 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619248 5717248 -1619224 5717272 1621088 5722784 1619248 5717248 1614696 5707712 -1619248 5717248 1663944 5646256 1613592 5703136 1614696 5707712 -1619224 5717272 1621040 5722712 1621088 5722784 1619248 5717248 -1619224 5717272 1621040 5722712 1619248 5717248 1614696 5707712 -1621088 5722784 1621280 5723224 1619248 5717248 1621040 5722712 -1619224 5717272 1620992 5722672 1621040 5722712 1619248 5717248 -1619224 5717272 1620992 5722672 1619248 5717248 1614696 5707712 -1621040 5722712 1621088 5722784 1619248 5717248 1620992 5722672 -1619224 5717272 1619184 5717344 1620992 5722672 1619248 5717248 -1619184 5717344 1620872 5722632 1620992 5722672 1619248 5717248 -1619224 5717272 1619184 5717344 1619248 5717248 1614696 5707712 -1620992 5722672 1621040 5722712 1619248 5717248 1619184 5717344 -1619224 5717272 1619248 5717248 1614696 5707712 1614704 5707744 -1619224 5717272 1619184 5717344 1619248 5717248 1614704 5707744 -1619248 5717248 1613592 5703136 1614696 5707712 1614704 5707744 -1619224 5717272 1619248 5717248 1614704 5707744 1614696 5707848 -1619224 5717272 1619184 5717344 1619248 5717248 1614696 5707848 -1619224 5717272 1619248 5717248 1614696 5707848 1614688 5707952 -1619224 5717272 1619248 5717248 1614688 5707952 1614664 5708048 -1619224 5717272 1619184 5717344 1619248 5717248 1614664 5708048 -1619248 5717248 1614696 5707848 1614688 5707952 1614664 5708048 -1619224 5717272 1619248 5717248 1614664 5708048 1614648 5708080 -1619248 5717248 1614688 5707952 1614664 5708048 1614648 5708080 -1619224 5717272 1619184 5717344 1619248 5717248 1614648 5708080 -1619224 5717272 1619248 5717248 1614648 5708080 1614576 5708144 -1619224 5717272 1619248 5717248 1614576 5708144 1613840 5708448 -1619224 5717272 1619184 5717344 1619248 5717248 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1619248 5717248 -1619224 5717272 1619248 5717248 1613840 5708448 1611528 5715552 -1619248 5717248 1614576 5708144 1613840 5708448 1611528 5715552 -1613840 5708448 1611512 5715528 1611528 5715552 1619248 5717248 -1619224 5717272 1619184 5717344 1619248 5717248 1611528 5715552 -1619248 5717248 1614648 5708080 1614576 5708144 1613840 5708448 -1619224 5717272 1619248 5717248 1611528 5715552 1619184 5717344 -1619248 5717248 1614664 5708048 1614648 5708080 1614576 5708144 -1619248 5717248 1614696 5707712 1614704 5707744 1614696 5707848 -1619248 5717248 1614704 5707744 1614696 5707848 1614688 5707952 -1663944 5646256 1619280 5717232 1621280 5723224 1743800 5687320 -1619248 5717248 1619280 5717232 1663944 5646256 1613592 5703136 -1663944 5646256 1663880 5646248 1613592 5703136 1619280 5717232 -1619248 5717248 1619280 5717232 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619280 5717232 -1619280 5717232 1663944 5646256 1613592 5703136 1614696 5707712 -1619248 5717248 1621280 5723224 1619280 5717232 1614696 5707712 -1621280 5723224 1619280 5717232 1619248 5717248 1621088 5722784 -1621280 5723224 1663944 5646256 1619280 5717232 1621088 5722784 -1619280 5717232 1614696 5707712 1619248 5717248 1621088 5722784 -1619280 5717232 1621280 5723224 1663944 5646256 1613592 5703136 -1619248 5717248 1621040 5722712 1621088 5722784 1619280 5717232 -1619248 5717248 1621040 5722712 1619280 5717232 1614696 5707712 -1621088 5722784 1621280 5723224 1619280 5717232 1621040 5722712 -1619248 5717248 1619280 5717232 1614696 5707712 1614704 5707744 -1619280 5717232 1613592 5703136 1614696 5707712 1614704 5707744 -1619248 5717248 1621040 5722712 1619280 5717232 1614704 5707744 -1619248 5717248 1620992 5722672 1621040 5722712 1619280 5717232 -1619248 5717248 1620992 5722672 1619280 5717232 1614704 5707744 -1621040 5722712 1621088 5722784 1619280 5717232 1620992 5722672 -1619248 5717248 1619184 5717344 1620992 5722672 1619280 5717232 -1619184 5717344 1620872 5722632 1620992 5722672 1619280 5717232 -1619248 5717248 1619184 5717344 1619280 5717232 1614704 5707744 -1619184 5717344 1620872 5722632 1619280 5717232 1619248 5717248 -1619184 5717344 1620792 5722624 1620872 5722632 1619280 5717232 -1620992 5722672 1621040 5722712 1619280 5717232 1620872 5722632 -1619248 5717248 1619224 5717272 1619184 5717344 1619280 5717232 -1619248 5717248 1619224 5717272 1619280 5717232 1614704 5707744 -1619184 5717344 1620872 5722632 1619280 5717232 1619224 5717272 -1619248 5717248 1619280 5717232 1614704 5707744 1614696 5707848 -1619248 5717248 1619224 5717272 1619280 5717232 1614696 5707848 -1619280 5717232 1614696 5707712 1614704 5707744 1614696 5707848 -1619248 5717248 1619280 5717232 1614696 5707848 1614688 5707952 -1619248 5717248 1619224 5717272 1619280 5717232 1614688 5707952 -1619248 5717248 1619280 5717232 1614688 5707952 1614664 5708048 -1619248 5717248 1619280 5717232 1614664 5708048 1614648 5708080 -1619248 5717248 1619224 5717272 1619280 5717232 1614648 5708080 -1619280 5717232 1614688 5707952 1614664 5708048 1614648 5708080 -1619248 5717248 1619280 5717232 1614648 5708080 1614576 5708144 -1619280 5717232 1614664 5708048 1614648 5708080 1614576 5708144 -1619248 5717248 1619224 5717272 1619280 5717232 1614576 5708144 -1619248 5717248 1619280 5717232 1614576 5708144 1613840 5708448 -1619280 5717232 1614704 5707744 1614696 5707848 1614688 5707952 -1619280 5717232 1614696 5707848 1614688 5707952 1614664 5708048 -1663944 5646256 1619296 5717232 1621280 5723224 1743800 5687320 -1621280 5723224 1619296 5717232 1619280 5717232 1621088 5722784 -1621280 5723224 1663944 5646256 1619296 5717232 1621088 5722784 -1619280 5717232 1621040 5722712 1621088 5722784 1619296 5717232 -1621088 5722784 1621280 5723224 1619296 5717232 1621040 5722712 -1619280 5717232 1619296 5717232 1663944 5646256 1613592 5703136 -1663944 5646256 1663880 5646248 1613592 5703136 1619296 5717232 -1619296 5717232 1621280 5723224 1663944 5646256 1613592 5703136 -1619280 5717232 1619296 5717232 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619296 5717232 -1619280 5717232 1619296 5717232 1614696 5707712 1614704 5707744 -1619296 5717232 1613592 5703136 1614696 5707712 1614704 5707744 -1619296 5717232 1663944 5646256 1613592 5703136 1614696 5707712 -1619296 5717232 1614704 5707744 1619280 5717232 1621040 5722712 -1619280 5717232 1620992 5722672 1621040 5722712 1619296 5717232 -1621040 5722712 1621088 5722784 1619296 5717232 1620992 5722672 -1619280 5717232 1620992 5722672 1619296 5717232 1614704 5707744 -1619280 5717232 1619296 5717232 1614704 5707744 1614696 5707848 -1619296 5717232 1614696 5707712 1614704 5707744 1614696 5707848 -1619280 5717232 1620992 5722672 1619296 5717232 1614696 5707848 -1619280 5717232 1620872 5722632 1620992 5722672 1619296 5717232 -1619280 5717232 1619184 5717344 1620872 5722632 1619296 5717232 -1619280 5717232 1619184 5717344 1619296 5717232 1614696 5707848 -1620992 5722672 1621040 5722712 1619296 5717232 1620872 5722632 -1619280 5717232 1619224 5717272 1619184 5717344 1619296 5717232 -1619184 5717344 1620872 5722632 1619296 5717232 1619224 5717272 -1619280 5717232 1619224 5717272 1619296 5717232 1614696 5707848 -1619184 5717344 1620792 5722624 1620872 5722632 1619296 5717232 -1620872 5722632 1620992 5722672 1619296 5717232 1619184 5717344 -1619280 5717232 1619248 5717248 1619224 5717272 1619296 5717232 -1619280 5717232 1619248 5717248 1619296 5717232 1614696 5707848 -1619224 5717272 1619184 5717344 1619296 5717232 1619248 5717248 -1619280 5717232 1619296 5717232 1614696 5707848 1614688 5707952 -1619280 5717232 1619248 5717248 1619296 5717232 1614688 5707952 -1619296 5717232 1614704 5707744 1614696 5707848 1614688 5707952 -1619280 5717232 1619296 5717232 1614688 5707952 1614664 5708048 -1619280 5717232 1619248 5717248 1619296 5717232 1614664 5708048 -1619280 5717232 1619296 5717232 1614664 5708048 1614648 5708080 -1619280 5717232 1619296 5717232 1614648 5708080 1614576 5708144 -1619280 5717232 1619248 5717248 1619296 5717232 1614648 5708080 -1619296 5717232 1614696 5707848 1614688 5707952 1614664 5708048 -1619296 5717232 1614688 5707952 1614664 5708048 1614648 5708080 -1663944 5646256 1619328 5717256 1621280 5723224 1743800 5687320 -1619296 5717232 1619328 5717256 1663944 5646256 1613592 5703136 -1663944 5646256 1663880 5646248 1613592 5703136 1619328 5717256 -1619296 5717232 1621280 5723224 1619328 5717256 1613592 5703136 -1621280 5723224 1619328 5717256 1619296 5717232 1621088 5722784 -1619296 5717232 1621040 5722712 1621088 5722784 1619328 5717256 -1619328 5717256 1613592 5703136 1619296 5717232 1621040 5722712 -1621088 5722784 1621280 5723224 1619328 5717256 1621040 5722712 -1619328 5717256 1621280 5723224 1663944 5646256 1613592 5703136 -1619296 5717232 1620992 5722672 1621040 5722712 1619328 5717256 -1621040 5722712 1621088 5722784 1619328 5717256 1620992 5722672 -1619296 5717232 1620992 5722672 1619328 5717256 1613592 5703136 -1619296 5717232 1619328 5717256 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619328 5717256 -1619328 5717256 1663944 5646256 1613592 5703136 1614696 5707712 -1619296 5717232 1620992 5722672 1619328 5717256 1614696 5707712 -1619296 5717232 1619328 5717256 1614696 5707712 1614704 5707744 -1619296 5717232 1619328 5717256 1614704 5707744 1614696 5707848 -1619296 5717232 1620992 5722672 1619328 5717256 1614704 5707744 -1619328 5717256 1613592 5703136 1614696 5707712 1614704 5707744 -1619296 5717232 1620872 5722632 1620992 5722672 1619328 5717256 -1619296 5717232 1620872 5722632 1619328 5717256 1614704 5707744 -1620992 5722672 1621040 5722712 1619328 5717256 1620872 5722632 -1619296 5717232 1619184 5717344 1620872 5722632 1619328 5717256 -1619296 5717232 1619224 5717272 1619184 5717344 1619328 5717256 -1619296 5717232 1619224 5717272 1619328 5717256 1614704 5707744 -1620872 5722632 1620992 5722672 1619328 5717256 1619184 5717344 -1619296 5717232 1619248 5717248 1619224 5717272 1619328 5717256 -1619224 5717272 1619184 5717344 1619328 5717256 1619248 5717248 -1619296 5717232 1619248 5717248 1619328 5717256 1614704 5707744 -1619184 5717344 1620792 5722624 1620872 5722632 1619328 5717256 -1620872 5722632 1620992 5722672 1619328 5717256 1620792 5722624 -1619184 5717344 1620656 5722632 1620792 5722624 1619328 5717256 -1619184 5717344 1620792 5722624 1619328 5717256 1619224 5717272 -1621280 5723224 1663944 5646256 1619328 5717256 1621088 5722784 -1619296 5717232 1619280 5717232 1619248 5717248 1619328 5717256 -1619296 5717232 1619280 5717232 1619328 5717256 1614704 5707744 -1619248 5717248 1619224 5717272 1619328 5717256 1619280 5717232 -1663944 5646256 1619360 5717312 1621280 5723224 1743800 5687320 -1619328 5717256 1619360 5717312 1663944 5646256 1613592 5703136 -1621280 5723224 1619360 5717312 1619328 5717256 1621088 5722784 -1619328 5717256 1621040 5722712 1621088 5722784 1619360 5717312 -1619328 5717256 1620992 5722672 1621040 5722712 1619360 5717312 -1621040 5722712 1621088 5722784 1619360 5717312 1620992 5722672 -1619360 5717312 1663944 5646256 1619328 5717256 1620992 5722672 -1619328 5717256 1620872 5722632 1620992 5722672 1619360 5717312 -1620992 5722672 1621040 5722712 1619360 5717312 1620872 5722632 -1619328 5717256 1620872 5722632 1619360 5717312 1663944 5646256 -1619328 5717256 1620792 5722624 1620872 5722632 1619360 5717312 -1619328 5717256 1620792 5722624 1619360 5717312 1663944 5646256 -1620872 5722632 1620992 5722672 1619360 5717312 1620792 5722624 -1619328 5717256 1619184 5717344 1620792 5722624 1619360 5717312 -1619328 5717256 1619184 5717344 1619360 5717312 1663944 5646256 -1620792 5722624 1620872 5722632 1619360 5717312 1619184 5717344 -1619184 5717344 1620656 5722632 1620792 5722624 1619360 5717312 -1619184 5717344 1620600 5722648 1620656 5722632 1619360 5717312 -1620792 5722624 1620872 5722632 1619360 5717312 1620656 5722632 -1620656 5722632 1620792 5722624 1619360 5717312 1620600 5722648 -1619184 5717344 1620584 5722728 1620600 5722648 1619360 5717312 -1619184 5717344 1620600 5722648 1619360 5717312 1619328 5717256 -1619328 5717256 1619224 5717272 1619184 5717344 1619360 5717312 -1619328 5717256 1619248 5717248 1619224 5717272 1619360 5717312 -1619328 5717256 1619224 5717272 1619360 5717312 1663944 5646256 -1619184 5717344 1620600 5722648 1619360 5717312 1619224 5717272 -1621088 5722784 1621280 5723224 1619360 5717312 1621040 5722712 -1621280 5723224 1663944 5646256 1619360 5717312 1621088 5722784 -1619360 5717312 1619392 5717424 1620992 5722672 1621040 5722712 -1619360 5717312 1619392 5717424 1621040 5722712 1621088 5722784 -1619392 5717424 1620992 5722672 1621040 5722712 1621088 5722784 -1620872 5722632 1619392 5717424 1619360 5717312 1620792 5722624 -1619392 5717424 1620872 5722632 1620992 5722672 1621040 5722712 -1620872 5722632 1620992 5722672 1619392 5717424 1620792 5722624 -1619360 5717312 1620656 5722632 1620792 5722624 1619392 5717424 -1620792 5722624 1620872 5722632 1619392 5717424 1620656 5722632 -1619360 5717312 1620600 5722648 1620656 5722632 1619392 5717424 -1619360 5717312 1619184 5717344 1620600 5722648 1619392 5717424 -1620656 5722632 1620792 5722624 1619392 5717424 1620600 5722648 -1620600 5722648 1620656 5722632 1619392 5717424 1619184 5717344 -1619184 5717344 1620584 5722728 1620600 5722648 1619392 5717424 -1619360 5717312 1619224 5717272 1619184 5717344 1619392 5717424 -1619360 5717312 1619392 5717424 1621088 5722784 1621280 5723224 -1619392 5717424 1621040 5722712 1621088 5722784 1621280 5723224 -1619360 5717312 1619184 5717344 1619392 5717424 1621280 5723224 -1619360 5717312 1619392 5717424 1621280 5723224 1663944 5646256 -1621280 5723224 1743800 5687320 1663944 5646256 1619392 5717424 -1619392 5717424 1621088 5722784 1621280 5723224 1663944 5646256 -1619360 5717312 1619392 5717424 1663944 5646256 1619328 5717256 -1619360 5717312 1619184 5717344 1619392 5717424 1663944 5646256 -1619184 5717344 1619392 5717504 1619392 5717424 1619360 5717312 -1619392 5717424 1619392 5717504 1620600 5722648 1620656 5722632 -1619392 5717424 1619184 5717344 1619392 5717504 1620656 5722632 -1619392 5717504 1619184 5717344 1620600 5722648 1620656 5722632 -1619392 5717424 1619392 5717504 1620656 5722632 1620792 5722624 -1619392 5717424 1619392 5717504 1620792 5722624 1620872 5722632 -1619392 5717424 1619392 5717504 1620872 5722632 1620992 5722672 -1619392 5717504 1620792 5722624 1620872 5722632 1620992 5722672 -1619392 5717424 1619392 5717504 1620992 5722672 1621040 5722712 -1619392 5717424 1619392 5717504 1621040 5722712 1621088 5722784 -1619392 5717504 1620872 5722632 1620992 5722672 1621040 5722712 -1619392 5717424 1619184 5717344 1619392 5717504 1621040 5722712 -1619392 5717504 1620656 5722632 1620792 5722624 1620872 5722632 -1619392 5717504 1620600 5722648 1620656 5722632 1620792 5722624 -1620600 5722648 1619392 5717504 1619184 5717344 1620584 5722728 -1619392 5717504 1619352 5717512 1620600 5722648 1620656 5722632 -1619184 5717344 1619352 5717512 1619392 5717504 1619392 5717424 -1619352 5717512 1620600 5722648 1619392 5717504 1619392 5717424 -1619184 5717344 1620600 5722648 1619352 5717512 1619392 5717424 -1619184 5717344 1619352 5717512 1619392 5717424 1619360 5717312 -1620600 5722648 1619352 5717512 1619184 5717344 1620584 5722728 -1619352 5717512 1619336 5717528 1620600 5722648 1619392 5717504 -1620600 5722648 1620656 5722632 1619392 5717504 1619336 5717528 -1619392 5717504 1619352 5717512 1619336 5717528 1620656 5722632 -1619352 5717512 1619184 5717344 1619336 5717528 1619392 5717504 -1619184 5717344 1619336 5717528 1619352 5717512 1619392 5717424 -1619336 5717528 1619184 5717344 1620600 5722648 1620656 5722632 -1620656 5722632 1620792 5722624 1619392 5717504 1619336 5717528 -1620600 5722648 1619336 5717528 1619184 5717344 1620584 5722728 -1620600 5722648 1620656 5722632 1619336 5717528 1620584 5722728 -1619336 5717528 1619352 5717512 1619184 5717344 1620584 5722728 -1619184 5717344 1611328 5715760 1620584 5722728 1619336 5717528 -1619184 5717344 1619312 5717528 1619336 5717528 1619352 5717512 -1619184 5717344 1619312 5717528 1619352 5717512 1619392 5717424 -1619352 5717512 1619392 5717504 1619392 5717424 1619312 5717528 -1619312 5717528 1620584 5722728 1619336 5717528 1619352 5717512 -1619312 5717528 1619336 5717528 1619352 5717512 1619392 5717424 -1619184 5717344 1620584 5722728 1619312 5717528 1619392 5717424 -1620584 5722728 1619312 5717528 1619184 5717344 1611328 5715760 -1620584 5722728 1619312 5717528 1611328 5715760 1620600 5722784 -1619184 5717344 1611424 5715704 1611328 5715760 1619312 5717528 -1620584 5722728 1619336 5717528 1619312 5717528 1611328 5715760 -1619312 5717528 1619392 5717424 1619184 5717344 1611424 5715704 -1611328 5715760 1620584 5722728 1619312 5717528 1611424 5715704 -1619184 5717344 1611456 5715680 1611424 5715704 1619312 5717528 -1619184 5717344 1619312 5717528 1619392 5717424 1619360 5717312 -1619336 5717528 1619312 5717528 1620584 5722728 1620600 5722648 -1619336 5717528 1619312 5717528 1620600 5722648 1620656 5722632 -1619336 5717528 1619352 5717512 1619312 5717528 1620600 5722648 -1619312 5717528 1611328 5715760 1620584 5722728 1620600 5722648 -1619312 5717528 1619264 5717504 1611424 5715704 1611328 5715760 -1619312 5717528 1619184 5717344 1619264 5717504 1611328 5715760 -1619184 5717344 1619264 5717504 1619312 5717528 1619392 5717424 -1619312 5717528 1619352 5717512 1619392 5717424 1619264 5717504 -1619352 5717512 1619392 5717504 1619392 5717424 1619264 5717504 -1619312 5717528 1619336 5717528 1619352 5717512 1619264 5717504 -1619264 5717504 1611328 5715760 1619312 5717528 1619352 5717512 -1619392 5717424 1619184 5717344 1619264 5717504 1619352 5717512 -1619184 5717344 1611424 5715704 1619264 5717504 1619392 5717424 -1619264 5717504 1619184 5717344 1611424 5715704 1611328 5715760 -1619312 5717528 1619264 5717504 1611328 5715760 1620584 5722728 -1611328 5715760 1620600 5722784 1620584 5722728 1619264 5717504 -1619264 5717504 1611424 5715704 1611328 5715760 1620584 5722728 -1619312 5717528 1619264 5717504 1620584 5722728 1620600 5722648 -1619312 5717528 1619352 5717512 1619264 5717504 1620600 5722648 -1619264 5717504 1611328 5715760 1620584 5722728 1620600 5722648 -1611424 5715704 1619264 5717504 1619184 5717344 1611456 5715680 -1619184 5717344 1611520 5715576 1611456 5715680 1619264 5717504 -1619264 5717504 1619392 5717424 1619184 5717344 1611456 5715680 -1611424 5715704 1611328 5715760 1619264 5717504 1611456 5715680 -1619184 5717344 1619264 5717504 1619392 5717424 1619360 5717312 -1619264 5717504 1619352 5717512 1619392 5717424 1619360 5717312 -1619184 5717344 1611456 5715680 1619264 5717504 1619360 5717312 -1619312 5717528 1619264 5717504 1620600 5722648 1619336 5717528 -1619184 5717344 1619264 5717504 1619360 5717312 1619224 5717272 -1611456 5715680 1619232 5717472 1619184 5717344 1611520 5715576 -1619184 5717344 1619232 5717472 1619264 5717504 1619360 5717312 -1619232 5717472 1611456 5715680 1619264 5717504 1619360 5717312 -1619264 5717504 1619232 5717472 1611456 5715680 1611424 5715704 -1619264 5717504 1619360 5717312 1619232 5717472 1611424 5715704 -1619232 5717472 1619184 5717344 1611456 5715680 1611424 5715704 -1619264 5717504 1619232 5717472 1611424 5715704 1611328 5715760 -1619264 5717504 1619232 5717472 1611328 5715760 1620584 5722728 -1611328 5715760 1620600 5722784 1620584 5722728 1619232 5717472 -1619264 5717504 1619360 5717312 1619232 5717472 1620584 5722728 -1619232 5717472 1611424 5715704 1611328 5715760 1620584 5722728 -1619264 5717504 1619232 5717472 1620584 5722728 1620600 5722648 -1619232 5717472 1611328 5715760 1620584 5722728 1620600 5722648 -1619264 5717504 1619232 5717472 1620600 5722648 1619312 5717528 -1619264 5717504 1619360 5717312 1619232 5717472 1620600 5722648 -1619232 5717472 1611456 5715680 1611424 5715704 1611328 5715760 -1619264 5717504 1619392 5717424 1619360 5717312 1619232 5717472 -1619264 5717504 1619352 5717512 1619392 5717424 1619232 5717472 -1619264 5717504 1619392 5717424 1619232 5717472 1620600 5722648 -1619360 5717312 1619184 5717344 1619232 5717472 1619392 5717424 -1619184 5717344 1611456 5715680 1619232 5717472 1619360 5717312 -1619184 5717344 1619232 5717472 1619360 5717312 1619224 5717272 -1611456 5715680 1619184 5717400 1619184 5717344 1611520 5715576 -1619232 5717472 1619184 5717400 1611456 5715680 1611424 5715704 -1619184 5717344 1611528 5715552 1611520 5715576 1619184 5717400 -1619232 5717472 1619184 5717400 1611424 5715704 1611328 5715760 -1619232 5717472 1619184 5717344 1619184 5717400 1611424 5715704 -1619184 5717344 1619184 5717400 1619232 5717472 1619360 5717312 -1619232 5717472 1619392 5717424 1619360 5717312 1619184 5717400 -1619184 5717400 1611424 5715704 1619232 5717472 1619360 5717312 -1611456 5715680 1611424 5715704 1619184 5717400 1611520 5715576 -1619184 5717400 1619360 5717312 1619184 5717344 1611520 5715576 -1619184 5717344 1619184 5717400 1619360 5717312 1619224 5717272 -1611456 5715680 1619184 5717400 1611520 5715576 1611464 5715656 -1611424 5715704 1618888 5717376 1619184 5717400 1611456 5715680 -1619232 5717472 1618888 5717376 1611424 5715704 1611328 5715760 -1619232 5717472 1618888 5717376 1611328 5715760 1620584 5722728 -1611328 5715760 1620600 5722784 1620584 5722728 1618888 5717376 -1619232 5717472 1618888 5717376 1620584 5722728 1620600 5722648 -1618888 5717376 1611328 5715760 1620584 5722728 1620600 5722648 -1619232 5717472 1618888 5717376 1620600 5722648 1619264 5717504 -1618888 5717376 1620584 5722728 1620600 5722648 1619264 5717504 -1620600 5722648 1619312 5717528 1619264 5717504 1618888 5717376 -1620600 5722648 1619312 5717528 1618888 5717376 1620584 5722728 -1619264 5717504 1619232 5717472 1618888 5717376 1619312 5717528 -1618888 5717376 1611424 5715704 1611328 5715760 1620584 5722728 -1619184 5717400 1611520 5715576 1611456 5715680 1618888 5717376 -1619184 5717400 1619184 5717344 1611520 5715576 1618888 5717376 -1611456 5715680 1611424 5715704 1618888 5717376 1611520 5715576 -1619184 5717344 1611528 5715552 1611520 5715576 1618888 5717376 -1619184 5717344 1611528 5715552 1618888 5717376 1619184 5717400 -1619184 5717344 1619224 5717272 1611528 5715552 1618888 5717376 -1619184 5717344 1619224 5717272 1618888 5717376 1619184 5717400 -1611528 5715552 1611520 5715576 1618888 5717376 1619224 5717272 -1611520 5715576 1611456 5715680 1618888 5717376 1611528 5715552 -1618888 5717376 1619232 5717472 1619184 5717400 1619184 5717344 -1619232 5717472 1619184 5717400 1618888 5717376 1619264 5717504 -1611424 5715704 1611328 5715760 1618888 5717376 1611456 5715680 -1620600 5722648 1619336 5717528 1619312 5717528 1618888 5717376 -1611520 5715576 1611464 5715656 1611456 5715680 1618888 5717376 -1619224 5717272 1619248 5717248 1611528 5715552 1618888 5717376 -1611528 5715552 1611520 5715576 1618888 5717376 1619248 5717248 -1619248 5717248 1613840 5708448 1611528 5715552 1618888 5717376 -1619248 5717248 1614576 5708144 1613840 5708448 1618888 5717376 -1613840 5708448 1611512 5715528 1611528 5715552 1618888 5717376 -1614576 5708144 1613896 5708408 1613840 5708448 1618888 5717376 -1611528 5715552 1611520 5715576 1618888 5717376 1613840 5708448 -1613840 5708448 1611528 5715552 1618888 5717376 1614576 5708144 -1619224 5717272 1619248 5717248 1618888 5717376 1619184 5717344 -1619248 5717248 1619280 5717232 1614576 5708144 1618888 5717376 -1614576 5708144 1613840 5708448 1618888 5717376 1619280 5717232 -1619248 5717248 1619280 5717232 1618888 5717376 1619224 5717272 -1619280 5717232 1614648 5708080 1614576 5708144 1618888 5717376 -1618888 5717376 1618952 5717376 1619184 5717344 1619224 5717272 -1618888 5717376 1618952 5717376 1619224 5717272 1619248 5717248 -1618952 5717376 1619184 5717344 1619224 5717272 1619248 5717248 -1619184 5717400 1618952 5717376 1618888 5717376 1619232 5717472 -1618888 5717376 1619264 5717504 1619232 5717472 1618952 5717376 -1618888 5717376 1619312 5717528 1619264 5717504 1618952 5717376 -1619232 5717472 1619184 5717400 1618952 5717376 1619264 5717504 -1618888 5717376 1619264 5717504 1618952 5717376 1619248 5717248 -1619184 5717400 1619184 5717344 1618952 5717376 1619232 5717472 -1618952 5717376 1619184 5717400 1619184 5717344 1619224 5717272 -1618888 5717376 1618952 5717376 1619248 5717248 1619280 5717232 -1620600 5722648 1619032 5717456 1618888 5717376 1620584 5722728 -1618888 5717376 1619032 5717456 1619312 5717528 1619264 5717504 -1618888 5717376 1619032 5717456 1619264 5717504 1618952 5717376 -1619032 5717456 1619312 5717528 1619264 5717504 1618952 5717376 -1619264 5717504 1619232 5717472 1618952 5717376 1619032 5717456 -1619264 5717504 1619232 5717472 1619032 5717456 1619312 5717528 -1618952 5717376 1618888 5717376 1619032 5717456 1619232 5717472 -1619232 5717472 1619184 5717400 1618952 5717376 1619032 5717456 -1618952 5717376 1618888 5717376 1619032 5717456 1619184 5717400 -1619232 5717472 1619184 5717400 1619032 5717456 1619264 5717504 -1619032 5717456 1620600 5722648 1619312 5717528 1619264 5717504 -1619184 5717400 1619184 5717344 1618952 5717376 1619032 5717456 -1618952 5717376 1618888 5717376 1619032 5717456 1619184 5717344 -1619184 5717400 1619184 5717344 1619032 5717456 1619232 5717472 -1618888 5717376 1620600 5722648 1619032 5717456 1618952 5717376 -1619184 5717344 1619224 5717272 1618952 5717376 1619032 5717456 -1619312 5717528 1619032 5717456 1620600 5722648 1619336 5717528 -1619032 5717456 1619064 5717512 1619312 5717528 1619264 5717504 -1619032 5717456 1619064 5717512 1619264 5717504 1619232 5717472 -1619032 5717456 1619064 5717512 1619232 5717472 1619184 5717400 -1619064 5717512 1619264 5717504 1619232 5717472 1619184 5717400 -1619032 5717456 1619064 5717512 1619184 5717400 1619184 5717344 -1619064 5717512 1619312 5717528 1619264 5717504 1619232 5717472 -1620600 5722648 1619064 5717512 1619032 5717456 1618888 5717376 -1620600 5722648 1619064 5717512 1618888 5717376 1620584 5722728 -1619032 5717456 1618888 5717376 1619064 5717512 1619184 5717400 -1619032 5717456 1618952 5717376 1618888 5717376 1619064 5717512 -1619312 5717528 1619064 5717512 1620600 5722648 1619336 5717528 -1619064 5717512 1620600 5722648 1619312 5717528 1619264 5717504 -1620600 5722648 1619312 5717528 1619064 5717512 1618888 5717376 -1620600 5722648 1619072 5717544 1618888 5717376 1620584 5722728 -1618888 5717376 1619072 5717544 1619064 5717512 1619032 5717456 -1618888 5717376 1619072 5717544 1619032 5717456 1618952 5717376 -1619072 5717544 1620600 5722648 1619064 5717512 1619032 5717456 -1619064 5717512 1619072 5717544 1620600 5722648 1619312 5717528 -1620600 5722648 1619336 5717528 1619312 5717528 1619072 5717544 -1620600 5722648 1620656 5722632 1619336 5717528 1619072 5717544 -1619064 5717512 1619072 5717544 1619312 5717528 1619264 5717504 -1619064 5717512 1619072 5717544 1619264 5717504 1619232 5717472 -1619064 5717512 1619072 5717544 1619232 5717472 1619184 5717400 -1619072 5717544 1619312 5717528 1619264 5717504 1619232 5717472 -1619064 5717512 1619032 5717456 1619072 5717544 1619232 5717472 -1619312 5717528 1619264 5717504 1619072 5717544 1619336 5717528 -1619072 5717544 1618888 5717376 1620600 5722648 1619336 5717528 -1618888 5717376 1620600 5722648 1619072 5717544 1619032 5717456 -1620600 5722648 1619064 5717632 1618888 5717376 1620584 5722728 -1618888 5717376 1611328 5715760 1620584 5722728 1619064 5717632 -1611328 5715760 1620600 5722784 1620584 5722728 1619064 5717632 -1620584 5722728 1620600 5722648 1619064 5717632 1611328 5715760 -1618888 5717376 1611424 5715704 1611328 5715760 1619064 5717632 -1619072 5717544 1619064 5717632 1620600 5722648 1619336 5717528 -1620600 5722648 1620656 5722632 1619336 5717528 1619064 5717632 -1620656 5722632 1619392 5717504 1619336 5717528 1619064 5717632 -1619072 5717544 1619064 5717632 1619336 5717528 1619312 5717528 -1619072 5717544 1619064 5717632 1619312 5717528 1619264 5717504 -1619064 5717632 1619336 5717528 1619312 5717528 1619264 5717504 -1619072 5717544 1619064 5717632 1619264 5717504 1619232 5717472 -1619336 5717528 1619312 5717528 1619064 5717632 1620656 5722632 -1619072 5717544 1618888 5717376 1619064 5717632 1619264 5717504 -1618888 5717376 1619064 5717632 1619072 5717544 1619032 5717456 -1619072 5717544 1619064 5717512 1619032 5717456 1619064 5717632 -1618888 5717376 1619064 5717632 1619032 5717456 1618952 5717376 -1619064 5717632 1619264 5717504 1619072 5717544 1619032 5717456 -1620600 5722648 1620656 5722632 1619064 5717632 1620584 5722728 -1619064 5717632 1619032 5717456 1618888 5717376 1611328 5715760 -1620584 5722728 1618976 5717632 1611328 5715760 1620600 5722784 -1619064 5717632 1618976 5717632 1620584 5722728 1620600 5722648 -1611328 5715760 1618976 5717632 1619064 5717632 1618888 5717376 -1611328 5715760 1618976 5717632 1618888 5717376 1611424 5715704 -1618976 5717632 1619064 5717632 1618888 5717376 1611424 5715704 -1618888 5717376 1611456 5715680 1611424 5715704 1618976 5717632 -1618888 5717376 1611520 5715576 1611456 5715680 1618976 5717632 -1618888 5717376 1611456 5715680 1618976 5717632 1619064 5717632 -1611424 5715704 1611328 5715760 1618976 5717632 1611456 5715680 -1619064 5717632 1618976 5717632 1620600 5722648 1620656 5722632 -1619064 5717632 1618888 5717376 1618976 5717632 1620600 5722648 -1619064 5717632 1619032 5717456 1618888 5717376 1618976 5717632 -1618888 5717376 1611456 5715680 1618976 5717632 1619032 5717456 -1619032 5717456 1618952 5717376 1618888 5717376 1618976 5717632 -1619064 5717632 1619072 5717544 1619032 5717456 1618976 5717632 -1619072 5717544 1619064 5717512 1619032 5717456 1618976 5717632 -1619072 5717544 1619064 5717512 1618976 5717632 1619064 5717632 -1619064 5717632 1619072 5717544 1618976 5717632 1620600 5722648 -1619032 5717456 1618888 5717376 1618976 5717632 1619064 5717512 -1618976 5717632 1611328 5715760 1620584 5722728 1620600 5722648 -1611328 5715760 1620584 5722728 1618976 5717632 1611424 5715704 -1611456 5715680 1618920 5717592 1618888 5717376 1611520 5715576 -1618888 5717376 1618920 5717592 1618976 5717632 1619032 5717456 -1618976 5717632 1618920 5717592 1611456 5715680 1611424 5715704 -1618976 5717632 1618920 5717592 1611424 5715704 1611328 5715760 -1618920 5717592 1611456 5715680 1611424 5715704 1611328 5715760 -1618888 5717376 1618920 5717592 1619032 5717456 1618952 5717376 -1618920 5717592 1618976 5717632 1619032 5717456 1618952 5717376 -1618976 5717632 1619064 5717512 1619032 5717456 1618920 5717592 -1619032 5717456 1618952 5717376 1618920 5717592 1619064 5717512 -1618976 5717632 1619072 5717544 1619064 5717512 1618920 5717592 -1618976 5717632 1619064 5717632 1619072 5717544 1618920 5717592 -1619064 5717512 1619032 5717456 1618920 5717592 1619072 5717544 -1618920 5717592 1611328 5715760 1618976 5717632 1619072 5717544 -1618976 5717632 1618920 5717592 1611328 5715760 1620584 5722728 -1611328 5715760 1620600 5722784 1620584 5722728 1618920 5717592 -1618920 5717592 1611424 5715704 1611328 5715760 1620584 5722728 -1618976 5717632 1618920 5717592 1620584 5722728 1620600 5722648 -1618976 5717632 1618920 5717592 1620600 5722648 1619064 5717632 -1618976 5717632 1619072 5717544 1618920 5717592 1620600 5722648 -1618920 5717592 1611328 5715760 1620584 5722728 1620600 5722648 -1618920 5717592 1618888 5717376 1611456 5715680 1611424 5715704 -1618888 5717376 1611456 5715680 1618920 5717592 1618952 5717376 -1611456 5715680 1618864 5717544 1618888 5717376 1611520 5715576 -1618888 5717376 1611528 5715552 1611520 5715576 1618864 5717544 -1611456 5715680 1618864 5717544 1611520 5715576 1611464 5715656 -1611456 5715680 1618920 5717592 1618864 5717544 1611520 5715576 -1618864 5717544 1618920 5717592 1618888 5717376 1611520 5715576 -1618920 5717592 1618864 5717544 1611456 5715680 1611424 5715704 -1618920 5717592 1618864 5717544 1611424 5715704 1611328 5715760 -1618920 5717592 1618864 5717544 1611328 5715760 1620584 5722728 -1611328 5715760 1620600 5722784 1620584 5722728 1618864 5717544 -1618864 5717544 1611424 5715704 1611328 5715760 1620584 5722728 -1618920 5717592 1618864 5717544 1620584 5722728 1620600 5722648 -1618864 5717544 1611328 5715760 1620584 5722728 1620600 5722648 -1618920 5717592 1618864 5717544 1620600 5722648 1618976 5717632 -1618864 5717544 1611520 5715576 1611456 5715680 1611424 5715704 -1618864 5717544 1611456 5715680 1611424 5715704 1611328 5715760 -1618920 5717592 1618888 5717376 1618864 5717544 1620600 5722648 -1618888 5717376 1618864 5717544 1618920 5717592 1618952 5717376 -1618920 5717592 1619032 5717456 1618952 5717376 1618864 5717544 -1618920 5717592 1619064 5717512 1619032 5717456 1618864 5717544 -1618888 5717376 1611520 5715576 1618864 5717544 1618952 5717376 -1618864 5717544 1620600 5722648 1618920 5717592 1619032 5717456 -1618952 5717376 1618888 5717376 1618864 5717544 1619032 5717456 -1618864 5717544 1618832 5717504 1611520 5715576 1611456 5715680 -1618832 5717504 1618888 5717376 1611520 5715576 1611456 5715680 -1611520 5715576 1618832 5717504 1618888 5717376 1611528 5715552 -1618888 5717376 1613840 5708448 1611528 5715552 1618832 5717504 -1611520 5715576 1611456 5715680 1618832 5717504 1611528 5715552 -1618832 5717504 1618864 5717544 1618888 5717376 1611528 5715552 -1611520 5715576 1611464 5715656 1611456 5715680 1618832 5717504 -1618864 5717544 1618832 5717504 1611456 5715680 1611424 5715704 -1618832 5717504 1611520 5715576 1611456 5715680 1611424 5715704 -1618864 5717544 1618888 5717376 1618832 5717504 1611424 5715704 -1618888 5717376 1618832 5717504 1618864 5717544 1618952 5717376 -1618888 5717376 1611528 5715552 1618832 5717504 1618952 5717376 -1618832 5717504 1611424 5715704 1618864 5717544 1618952 5717376 -1618864 5717544 1618832 5717504 1611424 5715704 1611328 5715760 -1618864 5717544 1618832 5717504 1611328 5715760 1620584 5722728 -1618832 5717504 1611456 5715680 1611424 5715704 1611328 5715760 -1618864 5717544 1618952 5717376 1618832 5717504 1611328 5715760 -1618864 5717544 1619032 5717456 1618952 5717376 1618832 5717504 -1611528 5715552 1618816 5717464 1618888 5717376 1613840 5708448 -1618888 5717376 1618816 5717464 1618832 5717504 1618952 5717376 -1618832 5717504 1618816 5717464 1611528 5715552 1611520 5715576 -1618832 5717504 1618816 5717464 1611520 5715576 1611456 5715680 -1618832 5717504 1618816 5717464 1611456 5715680 1611424 5715704 -1618832 5717504 1618888 5717376 1618816 5717464 1611456 5715680 -1618816 5717464 1618888 5717376 1611528 5715552 1611520 5715576 -1618816 5717464 1611528 5715552 1611520 5715576 1611456 5715680 -1611520 5715576 1611464 5715656 1611456 5715680 1618816 5717464 -1611528 5715552 1618824 5717440 1618888 5717376 1613840 5708448 -1618816 5717464 1618824 5717440 1611528 5715552 1611520 5715576 -1618888 5717376 1618824 5717440 1618816 5717464 1618832 5717504 -1618888 5717376 1618824 5717440 1618832 5717504 1618952 5717376 -1618824 5717440 1611528 5715552 1618816 5717464 1618832 5717504 -1618888 5717376 1611528 5715552 1618824 5717440 1618832 5717504 -1611528 5715552 1618856 5717400 1618888 5717376 1613840 5708448 -1618824 5717440 1618856 5717400 1611528 5715552 1618816 5717464 -1618888 5717376 1618856 5717400 1618824 5717440 1618832 5717504 -1618888 5717376 1618856 5717400 1618832 5717504 1618952 5717376 -1618824 5717440 1618816 5717464 1618832 5717504 1618856 5717400 -1618856 5717400 1611528 5715552 1618824 5717440 1618832 5717504 -1618856 5717400 1618824 5717440 1618832 5717504 1618952 5717376 -1618888 5717376 1611528 5715552 1618856 5717400 1618952 5717376 -1618832 5717504 1618864 5717544 1618952 5717376 1618856 5717400 -1618952 5717376 1618888 5717376 1618856 5717400 1618864 5717544 -1618832 5717504 1618864 5717544 1618856 5717400 1618824 5717440 -1618864 5717544 1619032 5717456 1618952 5717376 1618856 5717400 -1621280 5723304 1629904 5726504 1760125 5760125 1751256 5699792 -1620224 5752472 1629904 5726504 1621280 5723304 1620192 5752400 -1760125 5760125 1751376 5699848 1751256 5699792 1629904 5726504 -1760125 5760125 1629904 5726504 1620224 5752472 1620224 5752520 -1760125 5760125 1629904 5726504 1620224 5752520 1620152 5752552 -1621280 5723304 1629904 5726504 1751256 5699792 1743888 5687504 -1629904 5726504 1760125 5760125 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1629904 5726504 -1621280 5723304 1629904 5726504 1743888 5687504 1621280 5723224 -1629904 5726504 1751256 5699792 1743888 5687504 1621280 5723224 -1743888 5687504 1743800 5687320 1621280 5723224 1629904 5726504 -1621280 5723224 1621280 5723304 1629904 5726504 1743800 5687320 -1743888 5687504 1743800 5687320 1629904 5726504 1751256 5699792 -1743800 5687320 1663944 5646256 1621280 5723224 1629904 5726504 -1663944 5646256 1619392 5717424 1621280 5723224 1629904 5726504 -1743800 5687320 1664040 5646192 1663944 5646256 1629904 5726504 -1663944 5646256 1619360 5717312 1619392 5717424 1629904 5726504 -1619392 5717424 1621280 5723224 1629904 5726504 1619360 5717312 -1621280 5723224 1621280 5723304 1629904 5726504 1619392 5717424 -1663944 5646256 1619360 5717312 1629904 5726504 1743800 5687320 -1743800 5687320 1663944 5646256 1629904 5726504 1743888 5687504 -1629904 5726504 1620224 5752520 1760125 5760125 1751256 5699792 -1620224 5752472 1620224 5752520 1629904 5726504 1620192 5752400 -1621280 5723304 1620192 5752400 1629904 5726504 1621280 5723224 -1621280 5723304 1617768 5747376 1620192 5752400 1629904 5726504 -1620192 5752400 1620224 5752472 1629904 5726504 1617768 5747376 -1617768 5747376 1617848 5747624 1620192 5752400 1629904 5726504 -1620192 5752400 1620224 5752472 1629904 5726504 1617848 5747624 -1617848 5747624 1620152 5752352 1620192 5752400 1629904 5726504 -1621280 5723304 1617768 5747376 1629904 5726504 1621280 5723224 -1617768 5747376 1617848 5747624 1629904 5726504 1621280 5723304 -1621280 5723304 1617712 5747256 1617768 5747376 1629904 5726504 -1621280 5723304 1615632 5735512 1617712 5747256 1629904 5726504 -1615632 5735512 1617608 5747096 1617712 5747256 1629904 5726504 -1615632 5735512 1617512 5746992 1617608 5747096 1629904 5726504 -1615632 5735512 1617608 5747096 1629904 5726504 1621280 5723304 -1621280 5723304 1615632 5735416 1615632 5735512 1629904 5726504 -1615632 5735512 1617608 5747096 1629904 5726504 1615632 5735416 -1621280 5723304 1621208 5723336 1615632 5735416 1629904 5726504 -1615632 5735416 1615632 5735512 1629904 5726504 1621208 5723336 -1621280 5723304 1621208 5723336 1629904 5726504 1621280 5723224 -1617768 5747376 1617848 5747624 1629904 5726504 1617712 5747256 -1621208 5723336 1615584 5735320 1615632 5735416 1629904 5726504 -1615632 5735416 1615632 5735512 1629904 5726504 1615584 5735320 -1621208 5723336 1615584 5735320 1629904 5726504 1621280 5723304 -1621208 5723336 1621144 5723336 1615584 5735320 1629904 5726504 -1617712 5747256 1617768 5747376 1629904 5726504 1617608 5747096 -1619392 5717424 1621088 5722784 1621280 5723224 1629904 5726504 -1619392 5717424 1621088 5722784 1629904 5726504 1619360 5717312 -1619392 5717424 1621040 5722712 1621088 5722784 1629904 5726504 -1619392 5717424 1621040 5722712 1629904 5726504 1619360 5717312 -1619392 5717424 1619392 5717504 1621040 5722712 1629904 5726504 -1619392 5717424 1619392 5717504 1629904 5726504 1619360 5717312 -1621040 5722712 1621088 5722784 1629904 5726504 1619392 5717504 -1619392 5717504 1620992 5722672 1621040 5722712 1629904 5726504 -1621280 5723224 1621280 5723304 1629904 5726504 1621088 5722784 -1621088 5722784 1621280 5723224 1629904 5726504 1621040 5722712 -1663944 5646256 1619328 5717256 1619360 5717312 1629904 5726504 -1663944 5646256 1613592 5703136 1619328 5717256 1629904 5726504 -1663944 5646256 1663880 5646248 1613592 5703136 1629904 5726504 -1613592 5703136 1614696 5707712 1619328 5717256 1629904 5726504 -1613592 5703136 1614680 5707680 1614696 5707712 1629904 5726504 -1613592 5703136 1614696 5707712 1629904 5726504 1663880 5646248 -1614696 5707712 1614704 5707744 1619328 5717256 1629904 5726504 -1619360 5717312 1619392 5717424 1629904 5726504 1619328 5717256 -1663944 5646256 1663880 5646248 1629904 5726504 1743800 5687320 -1663880 5646248 1611560 5699312 1613592 5703136 1629904 5726504 -1619328 5717256 1619360 5717312 1629904 5726504 1614696 5707712 -1760125 5760125 1629944 5726576 1620224 5752520 1620152 5752552 -1620224 5752520 1629944 5726576 1629904 5726504 1620224 5752472 -1629904 5726504 1629944 5726576 1760125 5760125 1751256 5699792 -1629904 5726504 1629944 5726576 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1629944 5726576 -1760125 5760125 1751376 5699848 1751256 5699792 1629944 5726576 -1629904 5726504 1629944 5726576 1743888 5687504 1743800 5687320 -1629944 5726576 1751256 5699792 1743888 5687504 1743800 5687320 -1629904 5726504 1629944 5726576 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1629944 5726576 -1629944 5726576 1743888 5687504 1743800 5687320 1663944 5646256 -1629904 5726504 1629944 5726576 1663944 5646256 1663880 5646248 -1629944 5726576 1760125 5760125 1751256 5699792 1743888 5687504 -1629904 5726504 1620192 5752400 1620224 5752472 1629944 5726576 -1629904 5726504 1617848 5747624 1620192 5752400 1629944 5726576 -1620224 5752472 1620224 5752520 1629944 5726576 1620192 5752400 -1617848 5747624 1620152 5752352 1620192 5752400 1629944 5726576 -1629904 5726504 1617768 5747376 1617848 5747624 1629944 5726576 -1617848 5747624 1620192 5752400 1629944 5726576 1617768 5747376 -1620192 5752400 1620224 5752472 1629944 5726576 1617848 5747624 -1629944 5726576 1663944 5646256 1629904 5726504 1617768 5747376 -1629944 5726576 1620224 5752520 1760125 5760125 1751256 5699792 -1620224 5752520 1760125 5760125 1629944 5726576 1620224 5752472 -1629904 5726504 1617712 5747256 1617768 5747376 1629944 5726576 -1617768 5747376 1617848 5747624 1629944 5726576 1617712 5747256 -1629904 5726504 1617712 5747256 1629944 5726576 1663944 5646256 -1629904 5726504 1617608 5747096 1617712 5747256 1629944 5726576 -1629904 5726504 1615632 5735512 1617608 5747096 1629944 5726576 -1615632 5735512 1617512 5746992 1617608 5747096 1629944 5726576 -1629904 5726504 1615632 5735416 1615632 5735512 1629944 5726576 -1615632 5735512 1617608 5747096 1629944 5726576 1615632 5735416 -1629904 5726504 1615584 5735320 1615632 5735416 1629944 5726576 -1615632 5735416 1615632 5735512 1629944 5726576 1615584 5735320 -1629904 5726504 1615584 5735320 1629944 5726576 1663944 5646256 -1617712 5747256 1617768 5747376 1629944 5726576 1617608 5747096 -1629904 5726504 1621208 5723336 1615584 5735320 1629944 5726576 -1615584 5735320 1615632 5735416 1629944 5726576 1621208 5723336 -1629904 5726504 1621280 5723304 1621208 5723336 1629944 5726576 -1629904 5726504 1621208 5723336 1629944 5726576 1663944 5646256 -1621208 5723336 1621144 5723336 1615584 5735320 1629944 5726576 -1617608 5747096 1617712 5747256 1629944 5726576 1615632 5735512 -1760125 5760125 1629944 5726624 1620224 5752520 1620152 5752552 -1629944 5726576 1629944 5726624 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1629944 5726624 -1629944 5726576 1629944 5726624 1751256 5699792 1743888 5687504 -1629944 5726576 1620224 5752520 1629944 5726624 1751256 5699792 -1620224 5752520 1629944 5726624 1629944 5726576 1620224 5752472 -1629944 5726576 1620192 5752400 1620224 5752472 1629944 5726624 -1629944 5726576 1617848 5747624 1620192 5752400 1629944 5726624 -1629944 5726576 1617768 5747376 1617848 5747624 1629944 5726624 -1620192 5752400 1620224 5752472 1629944 5726624 1617848 5747624 -1617848 5747624 1620152 5752352 1620192 5752400 1629944 5726624 -1629944 5726576 1617712 5747256 1617768 5747376 1629944 5726624 -1617768 5747376 1617848 5747624 1629944 5726624 1617712 5747256 -1617848 5747624 1620192 5752400 1629944 5726624 1617768 5747376 -1629944 5726624 1751256 5699792 1629944 5726576 1617712 5747256 -1620224 5752472 1620224 5752520 1629944 5726624 1620192 5752400 -1629944 5726624 1620224 5752520 1760125 5760125 1751256 5699792 -1620224 5752520 1760125 5760125 1629944 5726624 1620224 5752472 -1629944 5726576 1617608 5747096 1617712 5747256 1629944 5726624 -1617712 5747256 1617768 5747376 1629944 5726624 1617608 5747096 -1629944 5726576 1617608 5747096 1629944 5726624 1751256 5699792 -1629944 5726576 1615632 5735512 1617608 5747096 1629944 5726624 -1629944 5726576 1615632 5735416 1615632 5735512 1629944 5726624 -1615632 5735512 1617512 5746992 1617608 5747096 1629944 5726624 -1629944 5726576 1615584 5735320 1615632 5735416 1629944 5726624 -1615632 5735416 1615632 5735512 1629944 5726624 1615584 5735320 -1629944 5726576 1621208 5723336 1615584 5735320 1629944 5726624 -1615584 5735320 1615632 5735416 1629944 5726624 1621208 5723336 -1629944 5726576 1621208 5723336 1629944 5726624 1751256 5699792 -1617608 5747096 1617712 5747256 1629944 5726624 1615632 5735512 -1621208 5723336 1621144 5723336 1615584 5735320 1629944 5726624 -1629944 5726576 1629904 5726504 1621208 5723336 1629944 5726624 -1621208 5723336 1615584 5735320 1629944 5726624 1629904 5726504 -1629904 5726504 1621280 5723304 1621208 5723336 1629944 5726624 -1621208 5723336 1615584 5735320 1629944 5726624 1621280 5723304 -1629904 5726504 1621280 5723224 1621280 5723304 1629944 5726624 -1629944 5726576 1629904 5726504 1629944 5726624 1751256 5699792 -1629904 5726504 1621280 5723304 1629944 5726624 1629944 5726576 -1615632 5735512 1617608 5747096 1629944 5726624 1615632 5735416 -1760125 5760125 1629928 5726696 1620224 5752520 1620152 5752552 -1629944 5726624 1629928 5726696 1760125 5760125 1751256 5699792 -1620224 5752520 1629928 5726696 1629944 5726624 1620224 5752472 -1629944 5726624 1620192 5752400 1620224 5752472 1629928 5726696 -1629944 5726624 1617848 5747624 1620192 5752400 1629928 5726696 -1617848 5747624 1620152 5752352 1620192 5752400 1629928 5726696 -1629944 5726624 1617768 5747376 1617848 5747624 1629928 5726696 -1629944 5726624 1617712 5747256 1617768 5747376 1629928 5726696 -1617848 5747624 1620192 5752400 1629928 5726696 1617768 5747376 -1629944 5726624 1617608 5747096 1617712 5747256 1629928 5726696 -1617712 5747256 1617768 5747376 1629928 5726696 1617608 5747096 -1617768 5747376 1617848 5747624 1629928 5726696 1617712 5747256 -1620192 5752400 1620224 5752472 1629928 5726696 1617848 5747624 -1629928 5726696 1760125 5760125 1629944 5726624 1617608 5747096 -1620224 5752472 1620224 5752520 1629928 5726696 1620192 5752400 -1620224 5752520 1760125 5760125 1629928 5726696 1620224 5752472 -1629944 5726624 1615632 5735512 1617608 5747096 1629928 5726696 -1615632 5735512 1617512 5746992 1617608 5747096 1629928 5726696 -1617608 5747096 1617712 5747256 1629928 5726696 1615632 5735512 -1629944 5726624 1615632 5735512 1629928 5726696 1760125 5760125 -1629944 5726624 1615632 5735416 1615632 5735512 1629928 5726696 -1629944 5726624 1615584 5735320 1615632 5735416 1629928 5726696 -1629944 5726624 1621208 5723336 1615584 5735320 1629928 5726696 -1615584 5735320 1615632 5735416 1629928 5726696 1621208 5723336 -1629944 5726624 1621280 5723304 1621208 5723336 1629928 5726696 -1621208 5723336 1615584 5735320 1629928 5726696 1621280 5723304 -1629944 5726624 1629904 5726504 1621280 5723304 1629928 5726696 -1621280 5723304 1621208 5723336 1629928 5726696 1629904 5726504 -1629904 5726504 1621280 5723224 1621280 5723304 1629928 5726696 -1629944 5726624 1629904 5726504 1629928 5726696 1760125 5760125 -1615632 5735512 1617608 5747096 1629928 5726696 1615632 5735416 -1621208 5723336 1621144 5723336 1615584 5735320 1629928 5726696 -1629944 5726624 1629944 5726576 1629904 5726504 1629928 5726696 -1615632 5735416 1615632 5735512 1629928 5726696 1615584 5735320 -1617608 5747096 1629872 5726768 1615632 5735512 1617512 5746992 -1629928 5726696 1629872 5726768 1617608 5747096 1617712 5747256 -1629928 5726696 1629872 5726768 1617712 5747256 1617768 5747376 -1629872 5726768 1617608 5747096 1617712 5747256 1617768 5747376 -1629928 5726696 1629872 5726768 1617768 5747376 1617848 5747624 -1629872 5726768 1617712 5747256 1617768 5747376 1617848 5747624 -1629928 5726696 1629872 5726768 1617848 5747624 1620192 5752400 -1617848 5747624 1620152 5752352 1620192 5752400 1629872 5726768 -1629872 5726768 1617768 5747376 1617848 5747624 1620192 5752400 -1629928 5726696 1629872 5726768 1620192 5752400 1620224 5752472 -1629872 5726768 1617848 5747624 1620192 5752400 1620224 5752472 -1629872 5726768 1615632 5735512 1617608 5747096 1617712 5747256 -1629928 5726696 1629872 5726768 1620224 5752472 1620224 5752520 -1629872 5726768 1620192 5752400 1620224 5752472 1620224 5752520 -1629928 5726696 1615632 5735512 1629872 5726768 1620224 5752520 -1629928 5726696 1629872 5726768 1620224 5752520 1760125 5760125 -1615632 5735512 1629872 5726768 1629928 5726696 1615632 5735416 -1615632 5735512 1617608 5747096 1629872 5726768 1615632 5735416 -1629872 5726768 1620224 5752520 1629928 5726696 1615632 5735416 -1629928 5726696 1615584 5735320 1615632 5735416 1629872 5726768 -1629928 5726696 1621208 5723336 1615584 5735320 1629872 5726768 -1629928 5726696 1621280 5723304 1621208 5723336 1629872 5726768 -1621208 5723336 1615584 5735320 1629872 5726768 1621280 5723304 -1629928 5726696 1629904 5726504 1621280 5723304 1629872 5726768 -1621280 5723304 1621208 5723336 1629872 5726768 1629904 5726504 -1629928 5726696 1629944 5726624 1629904 5726504 1629872 5726768 -1629904 5726504 1621280 5723224 1621280 5723304 1629872 5726768 -1629928 5726696 1629904 5726504 1629872 5726768 1620224 5752520 -1615632 5735416 1615632 5735512 1629872 5726768 1615584 5735320 -1621208 5723336 1621144 5723336 1615584 5735320 1629872 5726768 -1615584 5735320 1615632 5735416 1629872 5726768 1621208 5723336 -1617608 5747096 1629776 5726856 1615632 5735512 1617512 5746992 -1629872 5726768 1629776 5726856 1617608 5747096 1617712 5747256 -1629776 5726856 1615632 5735512 1617608 5747096 1617712 5747256 -1629872 5726768 1629776 5726856 1617712 5747256 1617768 5747376 -1629872 5726768 1629776 5726856 1617768 5747376 1617848 5747624 -1629776 5726856 1617712 5747256 1617768 5747376 1617848 5747624 -1629872 5726768 1629776 5726856 1617848 5747624 1620192 5752400 -1629776 5726856 1617768 5747376 1617848 5747624 1620192 5752400 -1629872 5726768 1629776 5726856 1620192 5752400 1620224 5752472 -1617848 5747624 1620152 5752352 1620192 5752400 1629776 5726856 -1629776 5726856 1617848 5747624 1620192 5752400 1620224 5752472 -1629872 5726768 1629776 5726856 1620224 5752472 1620224 5752520 -1629776 5726856 1617608 5747096 1617712 5747256 1617768 5747376 -1629872 5726768 1615632 5735512 1629776 5726856 1620224 5752472 -1615632 5735512 1629776 5726856 1629872 5726768 1615632 5735416 -1615632 5735512 1617608 5747096 1629776 5726856 1615632 5735416 -1629776 5726856 1620224 5752472 1629872 5726768 1615632 5735416 -1629872 5726768 1615584 5735320 1615632 5735416 1629776 5726856 -1629872 5726768 1615584 5735320 1629776 5726856 1620224 5752472 -1615632 5735416 1615632 5735512 1629776 5726856 1615584 5735320 -1629872 5726768 1621208 5723336 1615584 5735320 1629776 5726856 -1629872 5726768 1621280 5723304 1621208 5723336 1629776 5726856 -1629872 5726768 1629904 5726504 1621280 5723304 1629776 5726856 -1621280 5723304 1621208 5723336 1629776 5726856 1629904 5726504 -1629872 5726768 1629928 5726696 1629904 5726504 1629776 5726856 -1629904 5726504 1621280 5723224 1621280 5723304 1629776 5726856 -1629872 5726768 1629904 5726504 1629776 5726856 1620224 5752472 -1615584 5735320 1615632 5735416 1629776 5726856 1621208 5723336 -1621208 5723336 1621144 5723336 1615584 5735320 1629776 5726856 -1621208 5723336 1615584 5735320 1629776 5726856 1621280 5723304 -1629776 5726856 1629584 5726976 1617608 5747096 1617712 5747256 -1629776 5726856 1615632 5735512 1629584 5726976 1617712 5747256 -1615632 5735512 1629584 5726976 1629776 5726856 1615632 5735416 -1629584 5726976 1617712 5747256 1629776 5726856 1615632 5735416 -1629584 5726976 1615632 5735512 1617608 5747096 1617712 5747256 -1615632 5735512 1617608 5747096 1629584 5726976 1615632 5735416 -1617608 5747096 1629584 5726976 1615632 5735512 1617512 5746992 -1629776 5726856 1629584 5726976 1617712 5747256 1617768 5747376 -1629584 5726976 1617608 5747096 1617712 5747256 1617768 5747376 -1629776 5726856 1615632 5735416 1629584 5726976 1617768 5747376 -1629776 5726856 1629584 5726976 1617768 5747376 1617848 5747624 -1629776 5726856 1629584 5726976 1617848 5747624 1620192 5752400 -1629776 5726856 1615632 5735416 1629584 5726976 1620192 5752400 -1617848 5747624 1620152 5752352 1620192 5752400 1629584 5726976 -1629584 5726976 1617768 5747376 1617848 5747624 1620192 5752400 -1629776 5726856 1629584 5726976 1620192 5752400 1620224 5752472 -1629584 5726976 1617848 5747624 1620192 5752400 1620224 5752472 -1629776 5726856 1615632 5735416 1629584 5726976 1620224 5752472 -1629776 5726856 1629584 5726976 1620224 5752472 1629872 5726768 -1629584 5726976 1617712 5747256 1617768 5747376 1617848 5747624 -1629776 5726856 1615584 5735320 1615632 5735416 1629584 5726976 -1629776 5726856 1615584 5735320 1629584 5726976 1620224 5752472 -1615632 5735416 1615632 5735512 1629584 5726976 1615584 5735320 -1629776 5726856 1621208 5723336 1615584 5735320 1629584 5726976 -1629776 5726856 1621208 5723336 1629584 5726976 1620224 5752472 -1615584 5735320 1615632 5735416 1629584 5726976 1621208 5723336 -1621208 5723336 1621144 5723336 1615584 5735320 1629584 5726976 -1629776 5726856 1621280 5723304 1621208 5723336 1629584 5726976 -1629776 5726856 1629904 5726504 1621280 5723304 1629584 5726976 -1629776 5726856 1629904 5726504 1629584 5726976 1620224 5752472 -1629776 5726856 1629872 5726768 1629904 5726504 1629584 5726976 -1629904 5726504 1621280 5723224 1621280 5723304 1629584 5726976 -1621208 5723336 1615584 5735320 1629584 5726976 1621280 5723304 -1621280 5723304 1621208 5723336 1629584 5726976 1629904 5726504 -1629904 5726504 1629536 5726952 1629584 5726976 1629776 5726856 -1629536 5726952 1621280 5723304 1629584 5726976 1629776 5726856 -1629904 5726504 1621280 5723304 1629536 5726952 1629776 5726856 -1629904 5726504 1629536 5726952 1629776 5726856 1629872 5726768 -1621280 5723304 1629536 5726952 1629904 5726504 1621280 5723224 -1629584 5726976 1629536 5726952 1621280 5723304 1621208 5723336 -1629584 5726976 1629776 5726856 1629536 5726952 1621208 5723336 -1629536 5726952 1629904 5726504 1621280 5723304 1621208 5723336 -1629584 5726976 1629536 5726952 1621208 5723336 1615584 5735320 -1629584 5726976 1629776 5726856 1629536 5726952 1615584 5735320 -1629584 5726976 1629536 5726952 1615584 5735320 1615632 5735416 -1629584 5726976 1629536 5726952 1615632 5735416 1615632 5735512 -1629584 5726976 1629776 5726856 1629536 5726952 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1617608 5747096 -1629536 5726952 1615584 5735320 1615632 5735416 1615632 5735512 -1629536 5726952 1621208 5723336 1615584 5735320 1615632 5735416 -1621208 5723336 1621144 5723336 1615584 5735320 1629536 5726952 -1629536 5726952 1621280 5723304 1621208 5723336 1615584 5735320 -1629536 5726952 1629480 5726888 1621280 5723304 1621208 5723336 -1629536 5726952 1629904 5726504 1629480 5726888 1621208 5723336 -1629904 5726504 1629480 5726888 1629536 5726952 1629776 5726856 -1629536 5726952 1629584 5726976 1629776 5726856 1629480 5726888 -1629480 5726888 1621208 5723336 1629536 5726952 1629776 5726856 -1629480 5726888 1629904 5726504 1621280 5723304 1621208 5723336 -1629904 5726504 1621280 5723304 1629480 5726888 1629776 5726856 -1629904 5726504 1629480 5726888 1629776 5726856 1629872 5726768 -1621280 5723304 1629480 5726888 1629904 5726504 1621280 5723224 -1621280 5723304 1621208 5723336 1629480 5726888 1621280 5723224 -1629480 5726888 1629776 5726856 1629904 5726504 1621280 5723224 -1629904 5726504 1621088 5722784 1621280 5723224 1629480 5726888 -1629536 5726952 1629480 5726888 1621208 5723336 1615584 5735320 -1629480 5726888 1621280 5723304 1621208 5723336 1615584 5735320 -1629536 5726952 1629776 5726856 1629480 5726888 1615584 5735320 -1629536 5726952 1629480 5726888 1615584 5735320 1615632 5735416 -1629536 5726952 1629776 5726856 1629480 5726888 1615632 5735416 -1629536 5726952 1629480 5726888 1615632 5735416 1615632 5735512 -1621208 5723336 1621144 5723336 1615584 5735320 1629480 5726888 -1629480 5726888 1621208 5723336 1615584 5735320 1615632 5735416 -1629904 5726504 1629448 5726816 1629480 5726888 1629776 5726856 -1629480 5726888 1629536 5726952 1629776 5726856 1629448 5726816 -1629448 5726816 1621280 5723224 1629480 5726888 1629776 5726856 -1629904 5726504 1621280 5723224 1629448 5726816 1629776 5726856 -1621280 5723224 1629448 5726816 1629904 5726504 1621088 5722784 -1629904 5726504 1629448 5726816 1629776 5726856 1629872 5726768 -1629448 5726816 1629480 5726888 1629776 5726856 1629872 5726768 -1629904 5726504 1621280 5723224 1629448 5726816 1629872 5726768 -1629904 5726504 1629448 5726816 1629872 5726768 1629928 5726696 -1629480 5726888 1629448 5726816 1621280 5723224 1621280 5723304 -1629480 5726888 1629448 5726816 1621280 5723304 1621208 5723336 -1629480 5726888 1629448 5726816 1621208 5723336 1615584 5735320 -1629480 5726888 1629776 5726856 1629448 5726816 1621208 5723336 -1629448 5726816 1629904 5726504 1621280 5723224 1621280 5723304 -1629448 5726816 1621280 5723224 1621280 5723304 1621208 5723336 -1629448 5726816 1629360 5726560 1621280 5723224 1621280 5723304 -1629448 5726816 1629904 5726504 1629360 5726560 1621280 5723304 -1629904 5726504 1629360 5726560 1629448 5726816 1629872 5726768 -1629904 5726504 1621280 5723224 1629360 5726560 1629872 5726768 -1629360 5726560 1621280 5723304 1629448 5726816 1629872 5726768 -1629360 5726560 1629904 5726504 1621280 5723224 1621280 5723304 -1621280 5723224 1629360 5726560 1629904 5726504 1621088 5722784 -1629360 5726560 1629872 5726768 1629904 5726504 1621088 5722784 -1621280 5723224 1621280 5723304 1629360 5726560 1621088 5722784 -1629448 5726816 1629776 5726856 1629872 5726768 1629360 5726560 -1629904 5726504 1629360 5726560 1629872 5726768 1629928 5726696 -1629448 5726816 1629360 5726560 1621280 5723304 1621208 5723336 -1629904 5726504 1621040 5722712 1621088 5722784 1629360 5726560 -1629904 5726504 1621040 5722712 1629360 5726560 1629872 5726768 -1629904 5726504 1619392 5717504 1621040 5722712 1629360 5726560 -1629904 5726504 1619392 5717504 1629360 5726560 1629872 5726768 -1629904 5726504 1619392 5717424 1619392 5717504 1629360 5726560 -1629904 5726504 1619360 5717312 1619392 5717424 1629360 5726560 -1629904 5726504 1619392 5717424 1629360 5726560 1629872 5726768 -1619392 5717504 1621040 5722712 1629360 5726560 1619392 5717424 -1619392 5717504 1620992 5722672 1621040 5722712 1629360 5726560 -1621088 5722784 1621280 5723224 1629360 5726560 1621040 5722712 -1621040 5722712 1621088 5722784 1629360 5726560 1619392 5717504 -1619392 5717424 1629224 5726312 1629904 5726504 1619360 5717312 -1629904 5726504 1629224 5726312 1629360 5726560 1629872 5726768 -1619392 5717424 1629360 5726560 1629224 5726312 1619360 5717312 -1629224 5726312 1629360 5726560 1629904 5726504 1619360 5717312 -1629360 5726560 1629224 5726312 1619392 5717424 1619392 5717504 -1629224 5726312 1619360 5717312 1619392 5717424 1619392 5717504 -1629360 5726560 1629904 5726504 1629224 5726312 1619392 5717504 -1629360 5726560 1629224 5726312 1619392 5717504 1621040 5722712 -1629360 5726560 1629904 5726504 1629224 5726312 1621040 5722712 -1629224 5726312 1619392 5717424 1619392 5717504 1621040 5722712 -1619392 5717504 1620992 5722672 1621040 5722712 1629224 5726312 -1629904 5726504 1619328 5717256 1619360 5717312 1629224 5726312 -1629360 5726560 1629224 5726312 1621040 5722712 1621088 5722784 -1629360 5726560 1629904 5726504 1629224 5726312 1621088 5722784 -1629224 5726312 1619392 5717504 1621040 5722712 1621088 5722784 -1629360 5726560 1629224 5726312 1621088 5722784 1621280 5723224 -1629360 5726560 1629224 5726312 1621280 5723224 1621280 5723304 -1629360 5726560 1629224 5726312 1621280 5723304 1629448 5726816 -1629224 5726312 1621280 5723224 1621280 5723304 1629448 5726816 -1629360 5726560 1629904 5726504 1629224 5726312 1629448 5726816 -1629224 5726312 1621088 5722784 1621280 5723224 1621280 5723304 -1621280 5723304 1621208 5723336 1629448 5726816 1629224 5726312 -1621208 5723336 1629480 5726888 1629448 5726816 1629224 5726312 -1629448 5726816 1629360 5726560 1629224 5726312 1621208 5723336 -1621280 5723304 1621208 5723336 1629224 5726312 1621280 5723224 -1629224 5726312 1621040 5722712 1621088 5722784 1621280 5723224 -1629224 5726312 1629224 5726184 1619360 5717312 1619392 5717424 -1629224 5726312 1629224 5726184 1619392 5717424 1619392 5717504 -1629224 5726184 1619360 5717312 1619392 5717424 1619392 5717504 -1629224 5726312 1629904 5726504 1629224 5726184 1619392 5717504 -1629904 5726504 1629224 5726184 1629224 5726312 1629360 5726560 -1629224 5726184 1629904 5726504 1619360 5717312 1619392 5717424 -1629224 5726312 1629224 5726184 1619392 5717504 1621040 5722712 -1629224 5726184 1619392 5717424 1619392 5717504 1621040 5722712 -1629224 5726312 1629904 5726504 1629224 5726184 1621040 5722712 -1629224 5726312 1629224 5726184 1621040 5722712 1621088 5722784 -1629224 5726312 1629904 5726504 1629224 5726184 1621088 5722784 -1629224 5726184 1619392 5717504 1621040 5722712 1621088 5722784 -1619392 5717504 1620992 5722672 1621040 5722712 1629224 5726184 -1619360 5717312 1629224 5726184 1629904 5726504 1619328 5717256 -1619360 5717312 1619392 5717424 1629224 5726184 1619328 5717256 -1629224 5726184 1629224 5726312 1629904 5726504 1619328 5717256 -1629224 5726312 1629224 5726184 1621088 5722784 1621280 5723224 -1629224 5726312 1629904 5726504 1629224 5726184 1621280 5723224 -1629224 5726184 1621040 5722712 1621088 5722784 1621280 5723224 -1629224 5726312 1629224 5726184 1621280 5723224 1621280 5723304 -1629224 5726312 1629904 5726504 1629224 5726184 1621280 5723304 -1629224 5726312 1629224 5726184 1621280 5723304 1621208 5723336 -1629224 5726184 1621088 5722784 1621280 5723224 1621280 5723304 -1629904 5726504 1614696 5707712 1619328 5717256 1629224 5726184 -1629904 5726504 1629248 5726144 1629224 5726184 1629224 5726312 -1629904 5726504 1629248 5726144 1629224 5726312 1629360 5726560 -1629904 5726504 1629248 5726144 1629360 5726560 1629872 5726768 -1629248 5726144 1619328 5717256 1629224 5726184 1629224 5726312 -1629248 5726144 1629224 5726184 1629224 5726312 1629360 5726560 -1629904 5726504 1619328 5717256 1629248 5726144 1629360 5726560 -1629224 5726184 1629248 5726144 1619328 5717256 1619360 5717312 -1629224 5726184 1629248 5726144 1619360 5717312 1619392 5717424 -1629224 5726184 1629248 5726144 1619392 5717424 1619392 5717504 -1629224 5726184 1629248 5726144 1619392 5717504 1621040 5722712 -1629248 5726144 1619392 5717424 1619392 5717504 1621040 5722712 -1629248 5726144 1619360 5717312 1619392 5717424 1619392 5717504 -1629224 5726184 1629224 5726312 1629248 5726144 1621040 5722712 -1629248 5726144 1629904 5726504 1619328 5717256 1619360 5717312 -1629224 5726184 1629248 5726144 1621040 5722712 1621088 5722784 -1629248 5726144 1619392 5717504 1621040 5722712 1621088 5722784 -1629224 5726184 1629224 5726312 1629248 5726144 1621088 5722784 -1629224 5726184 1629248 5726144 1621088 5722784 1621280 5723224 -1629224 5726184 1629224 5726312 1629248 5726144 1621280 5723224 -1629248 5726144 1621040 5722712 1621088 5722784 1621280 5723224 -1619392 5717504 1620992 5722672 1621040 5722712 1629248 5726144 -1629248 5726144 1619328 5717256 1619360 5717312 1619392 5717424 -1629224 5726184 1629248 5726144 1621280 5723224 1621280 5723304 -1629224 5726184 1629224 5726312 1629248 5726144 1621280 5723304 -1629248 5726144 1621088 5722784 1621280 5723224 1621280 5723304 -1629224 5726184 1629248 5726144 1621280 5723304 1629224 5726312 -1619328 5717256 1629248 5726144 1629904 5726504 1614696 5707712 -1614696 5707712 1629392 5726056 1629904 5726504 1613592 5703136 -1614696 5707712 1629392 5726056 1613592 5703136 1614680 5707680 -1614696 5707712 1619328 5717256 1629392 5726056 1613592 5703136 -1629392 5726056 1619328 5717256 1629904 5726504 1613592 5703136 -1629904 5726504 1663880 5646248 1613592 5703136 1629392 5726056 -1629904 5726504 1663944 5646256 1663880 5646248 1629392 5726056 -1629904 5726504 1663944 5646256 1629392 5726056 1619328 5717256 -1613592 5703136 1614696 5707712 1629392 5726056 1663880 5646248 -1663880 5646248 1613592 5703136 1629392 5726056 1663944 5646256 -1619328 5717256 1629392 5726056 1614696 5707712 1614704 5707744 -1629904 5726504 1629944 5726576 1663944 5646256 1629392 5726056 -1663880 5646248 1611560 5699312 1613592 5703136 1629392 5726056 -1629904 5726504 1629392 5726056 1619328 5717256 1629248 5726144 -1619328 5717256 1619360 5717312 1629248 5726144 1629392 5726056 -1629392 5726056 1614696 5707712 1619328 5717256 1619360 5717312 -1629904 5726504 1629392 5726056 1629248 5726144 1629360 5726560 -1629904 5726504 1629392 5726056 1629360 5726560 1629872 5726768 -1629248 5726144 1629224 5726312 1629360 5726560 1629392 5726056 -1629248 5726144 1629224 5726184 1629224 5726312 1629392 5726056 -1629360 5726560 1629904 5726504 1629392 5726056 1629224 5726312 -1629904 5726504 1663944 5646256 1629392 5726056 1629360 5726560 -1619360 5717312 1619392 5717424 1629248 5726144 1629392 5726056 -1619392 5717424 1619392 5717504 1629248 5726144 1629392 5726056 -1619392 5717504 1621040 5722712 1629248 5726144 1629392 5726056 -1621040 5722712 1621088 5722784 1629248 5726144 1629392 5726056 -1621040 5722712 1621088 5722784 1629392 5726056 1619392 5717504 -1619392 5717504 1621040 5722712 1629392 5726056 1619392 5717424 -1619360 5717312 1619392 5717424 1629392 5726056 1619328 5717256 -1621088 5722784 1621280 5723224 1629248 5726144 1629392 5726056 -1621088 5722784 1621280 5723224 1629392 5726056 1621040 5722712 -1621280 5723224 1621280 5723304 1629248 5726144 1629392 5726056 -1619392 5717504 1620992 5722672 1621040 5722712 1629392 5726056 -1619392 5717424 1619392 5717504 1629392 5726056 1619360 5717312 -1629248 5726144 1629224 5726312 1629392 5726056 1621280 5723224 -1629392 5726056 1629464 5725960 1663944 5646256 1663880 5646248 -1629392 5726056 1629904 5726504 1629464 5725960 1663880 5646248 -1629904 5726504 1629464 5725960 1629392 5726056 1629360 5726560 -1629464 5725960 1629904 5726504 1663944 5646256 1663880 5646248 -1629392 5726056 1629464 5725960 1663880 5646248 1613592 5703136 -1629464 5725960 1663944 5646256 1663880 5646248 1613592 5703136 -1629392 5726056 1629904 5726504 1629464 5725960 1613592 5703136 -1629392 5726056 1629464 5725960 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1629464 5725960 -1629392 5726056 1629464 5725960 1614696 5707712 1619328 5717256 -1629392 5726056 1629464 5725960 1619328 5717256 1619360 5717312 -1629392 5726056 1629464 5725960 1619360 5717312 1619392 5717424 -1629464 5725960 1619328 5717256 1619360 5717312 1619392 5717424 -1629464 5725960 1614696 5707712 1619328 5717256 1619360 5717312 -1629392 5726056 1629904 5726504 1629464 5725960 1619392 5717424 -1629464 5725960 1613592 5703136 1614696 5707712 1619328 5717256 -1629464 5725960 1663880 5646248 1613592 5703136 1614696 5707712 -1614696 5707712 1614704 5707744 1619328 5717256 1629464 5725960 -1629392 5726056 1629464 5725960 1619392 5717424 1619392 5717504 -1629392 5726056 1629464 5725960 1619392 5717504 1621040 5722712 -1629392 5726056 1629464 5725960 1621040 5722712 1621088 5722784 -1629392 5726056 1629464 5725960 1621088 5722784 1621280 5723224 -1629464 5725960 1621040 5722712 1621088 5722784 1621280 5723224 -1629464 5725960 1619392 5717504 1621040 5722712 1621088 5722784 -1629464 5725960 1619360 5717312 1619392 5717424 1619392 5717504 -1629392 5726056 1629904 5726504 1629464 5725960 1621280 5723224 -1629392 5726056 1629464 5725960 1621280 5723224 1629248 5726144 -1629464 5725960 1621088 5722784 1621280 5723224 1629248 5726144 -1629392 5726056 1629904 5726504 1629464 5725960 1629248 5726144 -1621280 5723224 1621280 5723304 1629248 5726144 1629464 5725960 -1619392 5717504 1620992 5722672 1621040 5722712 1629464 5725960 -1629464 5725960 1619392 5717424 1619392 5717504 1621040 5722712 -1663944 5646256 1629464 5725960 1629904 5726504 1629944 5726576 -1663880 5646248 1611560 5699312 1613592 5703136 1629464 5725960 -1629464 5725960 1629568 5725912 1663944 5646256 1663880 5646248 -1629464 5725960 1629568 5725912 1663880 5646248 1613592 5703136 -1629568 5725912 1663944 5646256 1663880 5646248 1613592 5703136 -1629464 5725960 1629904 5726504 1629568 5725912 1613592 5703136 -1629904 5726504 1629568 5725912 1629464 5725960 1629392 5726056 -1629904 5726504 1629568 5725912 1629392 5726056 1629360 5726560 -1629568 5725912 1613592 5703136 1629464 5725960 1629392 5726056 -1629568 5725912 1629904 5726504 1663944 5646256 1663880 5646248 -1629904 5726504 1663944 5646256 1629568 5725912 1629392 5726056 -1629464 5725960 1629568 5725912 1613592 5703136 1614696 5707712 -1629568 5725912 1663880 5646248 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1629568 5725912 -1629464 5725960 1629392 5726056 1629568 5725912 1614696 5707712 -1629464 5725960 1629568 5725912 1614696 5707712 1619328 5717256 -1629464 5725960 1629568 5725912 1619328 5717256 1619360 5717312 -1629464 5725960 1629568 5725912 1619360 5717312 1619392 5717424 -1629464 5725960 1629568 5725912 1619392 5717424 1619392 5717504 -1629568 5725912 1619360 5717312 1619392 5717424 1619392 5717504 -1629568 5725912 1619328 5717256 1619360 5717312 1619392 5717424 -1629464 5725960 1629392 5726056 1629568 5725912 1619392 5717504 -1629568 5725912 1614696 5707712 1619328 5717256 1619360 5717312 -1629568 5725912 1613592 5703136 1614696 5707712 1619328 5717256 -1614696 5707712 1614704 5707744 1619328 5717256 1629568 5725912 -1629464 5725960 1629568 5725912 1619392 5717504 1621040 5722712 -1629464 5725960 1629568 5725912 1621040 5722712 1621088 5722784 -1629464 5725960 1629568 5725912 1621088 5722784 1621280 5723224 -1629568 5725912 1619392 5717424 1619392 5717504 1621040 5722712 -1629464 5725960 1629392 5726056 1629568 5725912 1621088 5722784 -1619392 5717504 1620992 5722672 1621040 5722712 1629568 5725912 -1629568 5725912 1619392 5717504 1621040 5722712 1621088 5722784 -1663944 5646256 1629568 5725912 1629904 5726504 1629944 5726576 -1663880 5646248 1611560 5699312 1613592 5703136 1629568 5725912 -1629568 5725912 1629600 5725952 1663944 5646256 1663880 5646248 -1629904 5726504 1629600 5725952 1629568 5725912 1629392 5726056 -1629904 5726504 1629600 5725952 1629392 5726056 1629360 5726560 -1629568 5725912 1629464 5725960 1629392 5726056 1629600 5725952 -1629600 5725952 1663944 5646256 1629568 5725912 1629464 5725960 -1629392 5726056 1629904 5726504 1629600 5725952 1629464 5725960 -1629904 5726504 1663944 5646256 1629600 5725952 1629392 5726056 -1663944 5646256 1629600 5725952 1629904 5726504 1629944 5726576 -1629600 5725952 1629624 5725984 1663944 5646256 1629568 5725912 -1629904 5726504 1629624 5725984 1629600 5725952 1629392 5726056 -1629904 5726504 1629624 5725984 1629392 5726056 1629360 5726560 -1629904 5726504 1629624 5725984 1629360 5726560 1629872 5726768 -1629392 5726056 1629224 5726312 1629360 5726560 1629624 5725984 -1629600 5725952 1629464 5725960 1629392 5726056 1629624 5725984 -1629600 5725952 1629568 5725912 1629464 5725960 1629624 5725984 -1629624 5725984 1663944 5646256 1629600 5725952 1629464 5725960 -1629624 5725984 1629464 5725960 1629392 5726056 1629360 5726560 -1629904 5726504 1663944 5646256 1629624 5725984 1629360 5726560 -1663944 5646256 1629624 5725984 1629904 5726504 1629944 5726576 -1663944 5646256 1629600 5725952 1629624 5725984 1629944 5726576 -1629624 5725984 1629360 5726560 1629904 5726504 1629944 5726576 -1663944 5646256 1629624 5725984 1629944 5726576 1743800 5687320 -1629624 5725984 1629736 5726176 1663944 5646256 1629600 5725952 -1629944 5726576 1629736 5726176 1629624 5725984 1629904 5726504 -1629736 5726176 1663944 5646256 1629624 5725984 1629904 5726504 -1629624 5725984 1629360 5726560 1629904 5726504 1629736 5726176 -1629360 5726560 1629872 5726768 1629904 5726504 1629736 5726176 -1629624 5725984 1629392 5726056 1629360 5726560 1629736 5726176 -1629392 5726056 1629224 5726312 1629360 5726560 1629736 5726176 -1629392 5726056 1629248 5726144 1629224 5726312 1629736 5726176 -1629392 5726056 1629224 5726312 1629736 5726176 1629624 5725984 -1629624 5725984 1629464 5725960 1629392 5726056 1629736 5726176 -1629624 5725984 1629392 5726056 1629736 5726176 1663944 5646256 -1629360 5726560 1629904 5726504 1629736 5726176 1629224 5726312 -1629944 5726576 1663944 5646256 1629736 5726176 1629904 5726504 -1629904 5726504 1629944 5726576 1629736 5726176 1629360 5726560 -1663944 5646256 1629736 5726176 1629944 5726576 1743800 5687320 -1760125 5760125 1625376 5746584 1620224 5752520 1620152 5752552 -1629928 5726696 1625376 5746584 1760125 5760125 1629944 5726624 -1620224 5752520 1625376 5746584 1629928 5726696 1629872 5726768 -1625376 5746584 1760125 5760125 1629928 5726696 1629872 5726768 -1620224 5752520 1760125 5760125 1625376 5746584 1629872 5726768 -1620224 5752520 1625376 5746584 1629872 5726768 1620224 5752472 -1620224 5752520 1760125 5760125 1625376 5746584 1620224 5752472 -1629872 5726768 1629776 5726856 1620224 5752472 1625376 5746584 -1629776 5726856 1629584 5726976 1620224 5752472 1625376 5746584 -1629584 5726976 1620192 5752400 1620224 5752472 1625376 5746584 -1629584 5726976 1617848 5747624 1620192 5752400 1625376 5746584 -1629584 5726976 1617848 5747624 1625376 5746584 1629776 5726856 -1617848 5747624 1620152 5752352 1620192 5752400 1625376 5746584 -1617848 5747624 1620152 5752352 1625376 5746584 1629584 5726976 -1617848 5747624 1617904 5747904 1620152 5752352 1625376 5746584 -1617848 5747624 1617904 5747904 1625376 5746584 1629584 5726976 -1617904 5747904 1620064 5752296 1620152 5752352 1625376 5746584 -1617904 5747904 1620064 5752296 1625376 5746584 1617848 5747624 -1620152 5752352 1620192 5752400 1625376 5746584 1620064 5752296 -1617904 5747904 1617896 5748024 1620064 5752296 1625376 5746584 -1617904 5747904 1617896 5748024 1625376 5746584 1617848 5747624 -1620064 5752296 1620152 5752352 1625376 5746584 1617896 5748024 -1617896 5748024 1620032 5752288 1620064 5752296 1625376 5746584 -1629584 5726976 1617768 5747376 1617848 5747624 1625376 5746584 -1617848 5747624 1617904 5747904 1625376 5746584 1617768 5747376 -1629584 5726976 1617768 5747376 1625376 5746584 1629776 5726856 -1620192 5752400 1620224 5752472 1625376 5746584 1620152 5752352 -1629776 5726856 1629584 5726976 1625376 5746584 1629872 5726768 -1629584 5726976 1617712 5747256 1617768 5747376 1625376 5746584 -1629584 5726976 1617608 5747096 1617712 5747256 1625376 5746584 -1629584 5726976 1615632 5735512 1617608 5747096 1625376 5746584 -1617608 5747096 1617712 5747256 1625376 5746584 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1625376 5746584 -1629584 5726976 1615632 5735512 1625376 5746584 1629776 5726856 -1615632 5735512 1617512 5746992 1617608 5747096 1625376 5746584 -1617608 5747096 1617712 5747256 1625376 5746584 1617512 5746992 -1615632 5735512 1617512 5746992 1625376 5746584 1629584 5726976 -1617768 5747376 1617848 5747624 1625376 5746584 1617712 5747256 -1615632 5735512 1616216 5745480 1617512 5746992 1625376 5746584 -1616216 5745480 1616232 5745520 1617512 5746992 1625376 5746584 -1615632 5735512 1616160 5745400 1616216 5745480 1625376 5746584 -1615632 5735512 1616160 5745400 1625376 5746584 1629584 5726976 -1617512 5746992 1617608 5747096 1625376 5746584 1616216 5745480 -1615632 5735512 1615496 5744536 1616160 5745400 1625376 5746584 -1616160 5745400 1616216 5745480 1625376 5746584 1615496 5744536 -1615632 5735512 1615368 5744400 1615496 5744536 1625376 5746584 -1615632 5735512 1615496 5744536 1625376 5746584 1629584 5726976 -1616216 5745480 1617512 5746992 1625376 5746584 1616160 5745400 -1617712 5747256 1617768 5747376 1625376 5746584 1617608 5747096 -1620224 5752472 1620224 5752520 1625376 5746584 1620192 5752400 -1625376 5746584 1629928 5726696 1629872 5726768 1629776 5726856 -1615496 5744536 1615544 5744608 1616160 5745400 1625376 5746584 -1616160 5745400 1616216 5745480 1625376 5746584 1615544 5744608 -1615496 5744536 1615544 5744608 1625376 5746584 1615632 5735512 -1615544 5744608 1616016 5745272 1616160 5745400 1625376 5746584 -1625376 5746584 1625448 5746768 1760125 5760125 1629928 5726696 -1625376 5746584 1625448 5746768 1629928 5726696 1629872 5726768 -1625448 5746768 1760125 5760125 1629928 5726696 1629872 5726768 -1760125 5760125 1625448 5746768 1620224 5752520 1620152 5752552 -1625376 5746584 1620224 5752520 1625448 5746768 1629872 5726768 -1620224 5752520 1625448 5746768 1625376 5746584 1620224 5752472 -1625448 5746768 1629872 5726768 1625376 5746584 1620224 5752472 -1625376 5746584 1620192 5752400 1620224 5752472 1625448 5746768 -1625376 5746584 1620192 5752400 1625448 5746768 1629872 5726768 -1620224 5752472 1620224 5752520 1625448 5746768 1620192 5752400 -1625376 5746584 1620152 5752352 1620192 5752400 1625448 5746768 -1625376 5746584 1620064 5752296 1620152 5752352 1625448 5746768 -1625376 5746584 1617896 5748024 1620064 5752296 1625448 5746768 -1620064 5752296 1620152 5752352 1625448 5746768 1617896 5748024 -1625376 5746584 1617904 5747904 1617896 5748024 1625448 5746768 -1625376 5746584 1617848 5747624 1617904 5747904 1625448 5746768 -1617896 5748024 1620064 5752296 1625448 5746768 1617904 5747904 -1617896 5748024 1620032 5752288 1620064 5752296 1625448 5746768 -1625376 5746584 1617904 5747904 1625448 5746768 1629872 5726768 -1620152 5752352 1620192 5752400 1625448 5746768 1620064 5752296 -1620192 5752400 1620224 5752472 1625448 5746768 1620152 5752352 -1760125 5760125 1629944 5726624 1629928 5726696 1625448 5746768 -1625376 5746584 1625448 5746768 1629872 5726768 1629776 5726856 -1625448 5746768 1620224 5752520 1760125 5760125 1629928 5726696 -1620224 5752520 1760125 5760125 1625448 5746768 1620224 5752472 -1760125 5760125 1625512 5747120 1620224 5752520 1620152 5752552 -1625448 5746768 1625512 5747120 1760125 5760125 1629928 5726696 -1625448 5746768 1625512 5747120 1629928 5726696 1629872 5726768 -1760125 5760125 1629944 5726624 1629928 5726696 1625512 5747120 -1625448 5746768 1620224 5752520 1625512 5747120 1629928 5726696 -1620224 5752520 1625512 5747120 1625448 5746768 1620224 5752472 -1625448 5746768 1620192 5752400 1620224 5752472 1625512 5747120 -1625448 5746768 1620152 5752352 1620192 5752400 1625512 5747120 -1620192 5752400 1620224 5752472 1625512 5747120 1620152 5752352 -1625448 5746768 1620064 5752296 1620152 5752352 1625512 5747120 -1625448 5746768 1617896 5748024 1620064 5752296 1625512 5747120 -1625448 5746768 1617904 5747904 1617896 5748024 1625512 5747120 -1617896 5748024 1620064 5752296 1625512 5747120 1617904 5747904 -1625448 5746768 1625376 5746584 1617904 5747904 1625512 5747120 -1625376 5746584 1617848 5747624 1617904 5747904 1625512 5747120 -1617904 5747904 1617896 5748024 1625512 5747120 1625376 5746584 -1617896 5748024 1620032 5752288 1620064 5752296 1625512 5747120 -1620064 5752296 1620152 5752352 1625512 5747120 1617896 5748024 -1620152 5752352 1620192 5752400 1625512 5747120 1620064 5752296 -1625512 5747120 1629928 5726696 1625448 5746768 1625376 5746584 -1620224 5752472 1620224 5752520 1625512 5747120 1620192 5752400 -1625512 5747120 1620224 5752520 1760125 5760125 1629928 5726696 -1620224 5752520 1760125 5760125 1625512 5747120 1620224 5752472 -1760125 5760125 1625624 5747288 1620224 5752520 1620152 5752552 -1625512 5747120 1625624 5747288 1760125 5760125 1629928 5726696 -1760125 5760125 1629944 5726624 1629928 5726696 1625624 5747288 -1625512 5747120 1625624 5747288 1629928 5726696 1625448 5746768 -1629928 5726696 1629872 5726768 1625448 5746768 1625624 5747288 -1629872 5726768 1625376 5746584 1625448 5746768 1625624 5747288 -1625448 5746768 1625512 5747120 1625624 5747288 1629872 5726768 -1625624 5747288 1760125 5760125 1629928 5726696 1629872 5726768 -1625512 5747120 1620224 5752520 1625624 5747288 1625448 5746768 -1620224 5752520 1625624 5747288 1625512 5747120 1620224 5752472 -1625512 5747120 1620192 5752400 1620224 5752472 1625624 5747288 -1625512 5747120 1620152 5752352 1620192 5752400 1625624 5747288 -1625512 5747120 1620064 5752296 1620152 5752352 1625624 5747288 -1620192 5752400 1620224 5752472 1625624 5747288 1620152 5752352 -1625624 5747288 1625448 5746768 1625512 5747120 1620152 5752352 -1620224 5752472 1620224 5752520 1625624 5747288 1620192 5752400 -1625624 5747288 1620224 5752520 1760125 5760125 1629928 5726696 -1620224 5752520 1760125 5760125 1625624 5747288 1620224 5752472 -1760125 5760125 1625872 5747552 1620224 5752520 1620152 5752552 -1625624 5747288 1625872 5747552 1760125 5760125 1629928 5726696 -1760125 5760125 1629944 5726624 1629928 5726696 1625872 5747552 -1625624 5747288 1625872 5747552 1629928 5726696 1629872 5726768 -1625624 5747288 1625872 5747552 1629872 5726768 1625448 5746768 -1629872 5726768 1625376 5746584 1625448 5746768 1625872 5747552 -1625448 5746768 1625624 5747288 1625872 5747552 1625376 5746584 -1629872 5726768 1629776 5726856 1625376 5746584 1625872 5747552 -1625376 5746584 1625448 5746768 1625872 5747552 1629776 5726856 -1629776 5726856 1629584 5726976 1625376 5746584 1625872 5747552 -1625624 5747288 1625872 5747552 1625448 5746768 1625512 5747120 -1625872 5747552 1629928 5726696 1629872 5726768 1629776 5726856 -1625872 5747552 1760125 5760125 1629928 5726696 1629872 5726768 -1625624 5747288 1620224 5752520 1625872 5747552 1625448 5746768 -1620224 5752520 1625872 5747552 1625624 5747288 1620224 5752472 -1625624 5747288 1620192 5752400 1620224 5752472 1625872 5747552 -1625624 5747288 1620152 5752352 1620192 5752400 1625872 5747552 -1625624 5747288 1625512 5747120 1620152 5752352 1625872 5747552 -1620192 5752400 1620224 5752472 1625872 5747552 1620152 5752352 -1625872 5747552 1625448 5746768 1625624 5747288 1620152 5752352 -1620224 5752472 1620224 5752520 1625872 5747552 1620192 5752400 -1625872 5747552 1620224 5752520 1760125 5760125 1629928 5726696 -1620224 5752520 1760125 5760125 1625872 5747552 1620224 5752472 -1760125 5760125 1625896 5747584 1620224 5752520 1620152 5752552 -1625872 5747552 1625896 5747584 1760125 5760125 1629928 5726696 -1760125 5760125 1629944 5726624 1629928 5726696 1625896 5747584 -1625872 5747552 1625896 5747584 1629928 5726696 1629872 5726768 -1625872 5747552 1625896 5747584 1629872 5726768 1629776 5726856 -1625872 5747552 1625896 5747584 1629776 5726856 1625376 5746584 -1625872 5747552 1625896 5747584 1625376 5746584 1625448 5746768 -1625872 5747552 1625896 5747584 1625448 5746768 1625624 5747288 -1629776 5726856 1629584 5726976 1625376 5746584 1625896 5747584 -1625896 5747584 1629776 5726856 1625376 5746584 1625448 5746768 -1625896 5747584 1629872 5726768 1629776 5726856 1625376 5746584 -1625896 5747584 1629928 5726696 1629872 5726768 1629776 5726856 -1625896 5747584 1760125 5760125 1629928 5726696 1629872 5726768 -1625872 5747552 1620224 5752520 1625896 5747584 1625448 5746768 -1620224 5752520 1625896 5747584 1625872 5747552 1620224 5752472 -1625872 5747552 1620192 5752400 1620224 5752472 1625896 5747584 -1625872 5747552 1620152 5752352 1620192 5752400 1625896 5747584 -1625872 5747552 1625624 5747288 1620152 5752352 1625896 5747584 -1625624 5747288 1625512 5747120 1620152 5752352 1625896 5747584 -1620152 5752352 1620192 5752400 1625896 5747584 1625624 5747288 -1620192 5752400 1620224 5752472 1625896 5747584 1620152 5752352 -1625896 5747584 1625448 5746768 1625872 5747552 1625624 5747288 -1620224 5752472 1620224 5752520 1625896 5747584 1620192 5752400 -1625896 5747584 1620224 5752520 1760125 5760125 1629928 5726696 -1620224 5752520 1760125 5760125 1625896 5747584 1620224 5752472 -1760125 5760125 1625960 5747656 1620224 5752520 1620152 5752552 -1625896 5747584 1625960 5747656 1760125 5760125 1629928 5726696 -1760125 5760125 1629944 5726624 1629928 5726696 1625960 5747656 -1625896 5747584 1625960 5747656 1629928 5726696 1629872 5726768 -1625896 5747584 1625960 5747656 1629872 5726768 1629776 5726856 -1625896 5747584 1625960 5747656 1629776 5726856 1625376 5746584 -1629776 5726856 1629584 5726976 1625376 5746584 1625960 5747656 -1625896 5747584 1625960 5747656 1625376 5746584 1625448 5746768 -1625896 5747584 1625960 5747656 1625448 5746768 1625872 5747552 -1625448 5746768 1625624 5747288 1625872 5747552 1625960 5747656 -1625960 5747656 1625376 5746584 1625448 5746768 1625872 5747552 -1625960 5747656 1629776 5726856 1625376 5746584 1625448 5746768 -1625960 5747656 1629872 5726768 1629776 5726856 1625376 5746584 -1625960 5747656 1629928 5726696 1629872 5726768 1629776 5726856 -1625960 5747656 1760125 5760125 1629928 5726696 1629872 5726768 -1625896 5747584 1620224 5752520 1625960 5747656 1625872 5747552 -1620224 5752520 1625960 5747656 1625896 5747584 1620224 5752472 -1625896 5747584 1620192 5752400 1620224 5752472 1625960 5747656 -1625896 5747584 1620152 5752352 1620192 5752400 1625960 5747656 -1625960 5747656 1625872 5747552 1625896 5747584 1620192 5752400 -1620224 5752472 1620224 5752520 1625960 5747656 1620192 5752400 -1625960 5747656 1620224 5752520 1760125 5760125 1629928 5726696 -1620224 5752520 1760125 5760125 1625960 5747656 1620224 5752472 -1760125 5760125 1625976 5747736 1620224 5752520 1620152 5752552 -1625960 5747656 1625976 5747736 1760125 5760125 1629928 5726696 -1760125 5760125 1629944 5726624 1629928 5726696 1625976 5747736 -1625960 5747656 1625976 5747736 1629928 5726696 1629872 5726768 -1625960 5747656 1620224 5752520 1625976 5747736 1629928 5726696 -1620224 5752520 1625976 5747736 1625960 5747656 1620224 5752472 -1620224 5752520 1760125 5760125 1625976 5747736 1620224 5752472 -1625960 5747656 1620192 5752400 1620224 5752472 1625976 5747736 -1625960 5747656 1625896 5747584 1620192 5752400 1625976 5747736 -1625896 5747584 1620152 5752352 1620192 5752400 1625976 5747736 -1625896 5747584 1625624 5747288 1620152 5752352 1625976 5747736 -1625624 5747288 1625512 5747120 1620152 5752352 1625976 5747736 -1625896 5747584 1625872 5747552 1625624 5747288 1625976 5747736 -1625624 5747288 1620152 5752352 1625976 5747736 1625872 5747552 -1620152 5752352 1620192 5752400 1625976 5747736 1625624 5747288 -1625896 5747584 1625872 5747552 1625976 5747736 1625960 5747656 -1620192 5752400 1620224 5752472 1625976 5747736 1620152 5752352 -1625976 5747736 1629928 5726696 1625960 5747656 1625896 5747584 -1620224 5752472 1620224 5752520 1625976 5747736 1620192 5752400 -1625976 5747736 1620224 5752520 1760125 5760125 1629928 5726696 -1760125 5760125 1625952 5747864 1620224 5752520 1620152 5752552 -1620224 5752520 1625952 5747864 1625976 5747736 1620224 5752472 -1625952 5747864 1760125 5760125 1625976 5747736 1620224 5752472 -1620224 5752520 1760125 5760125 1625952 5747864 1620224 5752472 -1625976 5747736 1620192 5752400 1620224 5752472 1625952 5747864 -1625976 5747736 1620192 5752400 1625952 5747864 1760125 5760125 -1620224 5752472 1620224 5752520 1625952 5747864 1620192 5752400 -1625976 5747736 1620152 5752352 1620192 5752400 1625952 5747864 -1625976 5747736 1620152 5752352 1625952 5747864 1760125 5760125 -1625976 5747736 1625624 5747288 1620152 5752352 1625952 5747864 -1625624 5747288 1625512 5747120 1620152 5752352 1625952 5747864 -1625976 5747736 1625624 5747288 1625952 5747864 1760125 5760125 -1625976 5747736 1625872 5747552 1625624 5747288 1625952 5747864 -1625976 5747736 1625872 5747552 1625952 5747864 1760125 5760125 -1625976 5747736 1625896 5747584 1625872 5747552 1625952 5747864 -1625976 5747736 1625896 5747584 1625952 5747864 1760125 5760125 -1625872 5747552 1625624 5747288 1625952 5747864 1625896 5747584 -1625624 5747288 1620152 5752352 1625952 5747864 1625872 5747552 -1625976 5747736 1625960 5747656 1625896 5747584 1625952 5747864 -1620152 5752352 1620192 5752400 1625952 5747864 1625624 5747288 -1620192 5752400 1620224 5752472 1625952 5747864 1620152 5752352 -1625976 5747736 1625952 5747864 1760125 5760125 1629928 5726696 -1760125 5760125 1625864 5747960 1620224 5752520 1620152 5752552 -1625952 5747864 1625864 5747960 1760125 5760125 1625976 5747736 -1620224 5752520 1625864 5747960 1625952 5747864 1620224 5752472 -1625952 5747864 1620192 5752400 1620224 5752472 1625864 5747960 -1625864 5747960 1760125 5760125 1625952 5747864 1620192 5752400 -1620224 5752472 1620224 5752520 1625864 5747960 1620192 5752400 -1620224 5752520 1760125 5760125 1625864 5747960 1620224 5752472 -1625952 5747864 1620152 5752352 1620192 5752400 1625864 5747960 -1620192 5752400 1620224 5752472 1625864 5747960 1620152 5752352 -1625952 5747864 1620152 5752352 1625864 5747960 1760125 5760125 -1625952 5747864 1625624 5747288 1620152 5752352 1625864 5747960 -1625624 5747288 1625512 5747120 1620152 5752352 1625864 5747960 -1625512 5747120 1620064 5752296 1620152 5752352 1625864 5747960 -1625512 5747120 1620064 5752296 1625864 5747960 1625624 5747288 -1625512 5747120 1617896 5748024 1620064 5752296 1625864 5747960 -1625952 5747864 1625624 5747288 1625864 5747960 1760125 5760125 -1625952 5747864 1625872 5747552 1625624 5747288 1625864 5747960 -1625952 5747864 1625872 5747552 1625864 5747960 1760125 5760125 -1625952 5747864 1625896 5747584 1625872 5747552 1625864 5747960 -1625952 5747864 1625896 5747584 1625864 5747960 1760125 5760125 -1625952 5747864 1625976 5747736 1625896 5747584 1625864 5747960 -1625872 5747552 1625624 5747288 1625864 5747960 1625896 5747584 -1625624 5747288 1625512 5747120 1625864 5747960 1625872 5747552 -1620152 5752352 1620192 5752400 1625864 5747960 1620064 5752296 -1760125 5760125 1625800 5748016 1620224 5752520 1620152 5752552 -1625864 5747960 1625800 5748016 1760125 5760125 1625952 5747864 -1620224 5752520 1625800 5748016 1625864 5747960 1620224 5752472 -1625864 5747960 1620192 5752400 1620224 5752472 1625800 5748016 -1625864 5747960 1620152 5752352 1620192 5752400 1625800 5748016 -1620192 5752400 1620224 5752472 1625800 5748016 1620152 5752352 -1625800 5748016 1760125 5760125 1625864 5747960 1620152 5752352 -1620224 5752472 1620224 5752520 1625800 5748016 1620192 5752400 -1620224 5752520 1760125 5760125 1625800 5748016 1620224 5752472 -1625864 5747960 1620064 5752296 1620152 5752352 1625800 5748016 -1625864 5747960 1625512 5747120 1620064 5752296 1625800 5748016 -1625864 5747960 1625624 5747288 1625512 5747120 1625800 5748016 -1625512 5747120 1617896 5748024 1620064 5752296 1625800 5748016 -1625512 5747120 1620064 5752296 1625800 5748016 1625624 5747288 -1620152 5752352 1620192 5752400 1625800 5748016 1620064 5752296 -1625864 5747960 1625624 5747288 1625800 5748016 1760125 5760125 -1625864 5747960 1625872 5747552 1625624 5747288 1625800 5748016 -1625624 5747288 1625512 5747120 1625800 5748016 1625872 5747552 -1625864 5747960 1625872 5747552 1625800 5748016 1760125 5760125 -1625864 5747960 1625896 5747584 1625872 5747552 1625800 5748016 -1620064 5752296 1620152 5752352 1625800 5748016 1625512 5747120 -1760125 5760125 1625784 5748032 1620224 5752520 1620152 5752552 -1625800 5748016 1625784 5748032 1760125 5760125 1625864 5747960 -1760125 5760125 1625952 5747864 1625864 5747960 1625784 5748032 -1625800 5748016 1620224 5752520 1625784 5748032 1625864 5747960 -1620224 5752520 1625784 5748032 1625800 5748016 1620224 5752472 -1625800 5748016 1620192 5752400 1620224 5752472 1625784 5748032 -1625800 5748016 1620152 5752352 1620192 5752400 1625784 5748032 -1625800 5748016 1620064 5752296 1620152 5752352 1625784 5748032 -1620152 5752352 1620192 5752400 1625784 5748032 1620064 5752296 -1620192 5752400 1620224 5752472 1625784 5748032 1620152 5752352 -1625784 5748032 1625864 5747960 1625800 5748016 1620064 5752296 -1620224 5752472 1620224 5752520 1625784 5748032 1620192 5752400 -1625784 5748032 1620224 5752520 1760125 5760125 1625864 5747960 -1620224 5752520 1760125 5760125 1625784 5748032 1620224 5752472 -1625800 5748016 1625512 5747120 1620064 5752296 1625784 5748032 -1625512 5747120 1617896 5748024 1620064 5752296 1625784 5748032 -1625800 5748016 1625624 5747288 1625512 5747120 1625784 5748032 -1625800 5748016 1625872 5747552 1625624 5747288 1625784 5748032 -1625624 5747288 1625512 5747120 1625784 5748032 1625872 5747552 -1620064 5752296 1620152 5752352 1625784 5748032 1625512 5747120 -1625800 5748016 1625872 5747552 1625784 5748032 1625864 5747960 -1625800 5748016 1625864 5747960 1625872 5747552 1625784 5748032 -1625512 5747120 1620064 5752296 1625784 5748032 1625624 5747288 -1620152 5752352 1625712 5748088 1625784 5748032 1620064 5752296 -1625784 5748032 1625512 5747120 1620064 5752296 1625712 5748088 -1625512 5747120 1617896 5748024 1620064 5752296 1625712 5748088 -1625512 5747120 1617904 5747904 1617896 5748024 1625712 5748088 -1617896 5748024 1620032 5752288 1620064 5752296 1625712 5748088 -1625512 5747120 1617896 5748024 1625712 5748088 1625784 5748032 -1620064 5752296 1620152 5752352 1625712 5748088 1617896 5748024 -1625784 5748032 1625712 5748088 1620192 5752400 1620224 5752472 -1625784 5748032 1625712 5748088 1620224 5752472 1620224 5752520 -1625712 5748088 1620192 5752400 1620224 5752472 1620224 5752520 -1625712 5748088 1620224 5752520 1625784 5748032 1625512 5747120 -1625784 5748032 1625712 5748088 1620224 5752520 1760125 5760125 -1620224 5752520 1620152 5752552 1760125 5760125 1625712 5748088 -1625712 5748088 1620224 5752472 1620224 5752520 1760125 5760125 -1625784 5748032 1625712 5748088 1760125 5760125 1625864 5747960 -1625784 5748032 1625512 5747120 1625712 5748088 1760125 5760125 -1625712 5748088 1620152 5752352 1620192 5752400 1620224 5752472 -1620152 5752352 1620192 5752400 1625712 5748088 1620064 5752296 -1625784 5748032 1625624 5747288 1625512 5747120 1625712 5748088 -1625784 5748032 1625872 5747552 1625624 5747288 1625712 5748088 -1625784 5748032 1625800 5748016 1625872 5747552 1625712 5748088 -1625512 5747120 1617896 5748024 1625712 5748088 1625624 5747288 -1625784 5748032 1625872 5747552 1625712 5748088 1760125 5760125 -1625624 5747288 1625512 5747120 1625712 5748088 1625872 5747552 -1760125 5760125 1625680 5748128 1620224 5752520 1620152 5752552 -1620224 5752520 1625680 5748128 1625712 5748088 1620224 5752472 -1625712 5748088 1620192 5752400 1620224 5752472 1625680 5748128 -1620224 5752472 1620224 5752520 1625680 5748128 1620192 5752400 -1625712 5748088 1625680 5748128 1760125 5760125 1625784 5748032 -1760125 5760125 1625864 5747960 1625784 5748032 1625680 5748128 -1760125 5760125 1625952 5747864 1625864 5747960 1625680 5748128 -1625864 5747960 1625800 5748016 1625784 5748032 1625680 5748128 -1625784 5748032 1625712 5748088 1625680 5748128 1625864 5747960 -1625712 5748088 1620152 5752352 1620192 5752400 1625680 5748128 -1620192 5752400 1620224 5752472 1625680 5748128 1620152 5752352 -1625680 5748128 1625784 5748032 1625712 5748088 1620152 5752352 -1625712 5748088 1620064 5752296 1620152 5752352 1625680 5748128 -1625712 5748088 1617896 5748024 1620064 5752296 1625680 5748128 -1617896 5748024 1620032 5752288 1620064 5752296 1625680 5748128 -1625712 5748088 1625512 5747120 1617896 5748024 1625680 5748128 -1625512 5747120 1617904 5747904 1617896 5748024 1625680 5748128 -1625712 5748088 1625624 5747288 1625512 5747120 1625680 5748128 -1625512 5747120 1617896 5748024 1625680 5748128 1625624 5747288 -1617896 5748024 1620064 5752296 1625680 5748128 1625512 5747120 -1620152 5752352 1620192 5752400 1625680 5748128 1620064 5752296 -1625712 5748088 1625624 5747288 1625680 5748128 1625784 5748032 -1620064 5752296 1620152 5752352 1625680 5748128 1617896 5748024 -1625680 5748128 1620224 5752520 1760125 5760125 1625864 5747960 -1620224 5752520 1760125 5760125 1625680 5748128 1620224 5752472 -1625712 5748088 1625872 5747552 1625624 5747288 1625680 5748128 -1620064 5752296 1625568 5748208 1617896 5748024 1620032 5752288 -1617896 5748024 1625568 5748208 1625680 5748128 1625512 5747120 -1617896 5748024 1625568 5748208 1625512 5747120 1617904 5747904 -1625512 5747120 1625376 5746584 1617904 5747904 1625568 5748208 -1625680 5748128 1625624 5747288 1625512 5747120 1625568 5748208 -1625680 5748128 1625712 5748088 1625624 5747288 1625568 5748208 -1625624 5747288 1625512 5747120 1625568 5748208 1625712 5748088 -1625568 5748208 1625624 5747288 1625512 5747120 1617904 5747904 -1625680 5748128 1625568 5748208 1620064 5752296 1620152 5752352 -1625680 5748128 1625568 5748208 1620152 5752352 1620192 5752400 -1625680 5748128 1625568 5748208 1620192 5752400 1620224 5752472 -1625680 5748128 1625568 5748208 1620224 5752472 1620224 5752520 -1625568 5748208 1620192 5752400 1620224 5752472 1620224 5752520 -1625568 5748208 1620152 5752352 1620192 5752400 1620224 5752472 -1625568 5748208 1620064 5752296 1620152 5752352 1620192 5752400 -1625568 5748208 1620224 5752520 1625680 5748128 1625712 5748088 -1625680 5748128 1625568 5748208 1620224 5752520 1760125 5760125 -1625568 5748208 1617896 5748024 1620064 5752296 1620152 5752352 -1617896 5748024 1620064 5752296 1625568 5748208 1617904 5747904 -1625712 5748088 1625872 5747552 1625624 5747288 1625568 5748208 -1620064 5752296 1625488 5748232 1617896 5748024 1620032 5752288 -1625568 5748208 1625488 5748232 1620064 5752296 1620152 5752352 -1625568 5748208 1625488 5748232 1620152 5752352 1620192 5752400 -1625568 5748208 1625488 5748232 1620192 5752400 1620224 5752472 -1625568 5748208 1625488 5748232 1620224 5752472 1620224 5752520 -1625568 5748208 1625488 5748232 1620224 5752520 1625680 5748128 -1625488 5748232 1620192 5752400 1620224 5752472 1620224 5752520 -1625488 5748232 1620152 5752352 1620192 5752400 1620224 5752472 -1625488 5748232 1620064 5752296 1620152 5752352 1620192 5752400 -1625568 5748208 1617896 5748024 1625488 5748232 1620224 5752520 -1617896 5748024 1625488 5748232 1625568 5748208 1617904 5747904 -1625568 5748208 1625512 5747120 1617904 5747904 1625488 5748232 -1625512 5747120 1625376 5746584 1617904 5747904 1625488 5748232 -1625376 5746584 1617848 5747624 1617904 5747904 1625488 5748232 -1625512 5747120 1625376 5746584 1625488 5748232 1625568 5748208 -1625512 5747120 1625448 5746768 1625376 5746584 1625488 5748232 -1625568 5748208 1625624 5747288 1625512 5747120 1625488 5748232 -1625512 5747120 1625376 5746584 1625488 5748232 1625624 5747288 -1625568 5748208 1625712 5748088 1625624 5747288 1625488 5748232 -1625568 5748208 1625680 5748128 1625712 5748088 1625488 5748232 -1625712 5748088 1625624 5747288 1625488 5748232 1625680 5748128 -1625624 5747288 1625512 5747120 1625488 5748232 1625712 5748088 -1625488 5748232 1620224 5752520 1625568 5748208 1625680 5748128 -1617904 5747904 1617896 5748024 1625488 5748232 1625376 5746584 -1625488 5748232 1617896 5748024 1620064 5752296 1620152 5752352 -1617896 5748024 1620064 5752296 1625488 5748232 1617904 5747904 -1625712 5748088 1625872 5747552 1625624 5747288 1625488 5748232 -1620064 5752296 1625464 5748232 1617896 5748024 1620032 5752288 -1625488 5748232 1625464 5748232 1620064 5752296 1620152 5752352 -1625488 5748232 1625464 5748232 1620152 5752352 1620192 5752400 -1625488 5748232 1625464 5748232 1620192 5752400 1620224 5752472 -1625488 5748232 1625464 5748232 1620224 5752472 1620224 5752520 -1625488 5748232 1625464 5748232 1620224 5752520 1625568 5748208 -1625464 5748232 1620192 5752400 1620224 5752472 1620224 5752520 -1625464 5748232 1620152 5752352 1620192 5752400 1620224 5752472 -1625464 5748232 1620064 5752296 1620152 5752352 1620192 5752400 -1625488 5748232 1617896 5748024 1625464 5748232 1620224 5752520 -1617896 5748024 1625464 5748232 1625488 5748232 1617904 5747904 -1625488 5748232 1625376 5746584 1617904 5747904 1625464 5748232 -1625376 5746584 1617848 5747624 1617904 5747904 1625464 5748232 -1625488 5748232 1625512 5747120 1625376 5746584 1625464 5748232 -1625488 5748232 1625624 5747288 1625512 5747120 1625464 5748232 -1625512 5747120 1625376 5746584 1625464 5748232 1625624 5747288 -1625512 5747120 1625448 5746768 1625376 5746584 1625464 5748232 -1625488 5748232 1625712 5748088 1625624 5747288 1625464 5748232 -1625624 5747288 1625512 5747120 1625464 5748232 1625712 5748088 -1625488 5748232 1625680 5748128 1625712 5748088 1625464 5748232 -1625488 5748232 1625568 5748208 1625680 5748128 1625464 5748232 -1625680 5748128 1625712 5748088 1625464 5748232 1625568 5748208 -1625712 5748088 1625624 5747288 1625464 5748232 1625680 5748128 -1625376 5746584 1617904 5747904 1625464 5748232 1625512 5747120 -1625464 5748232 1620224 5752520 1625488 5748232 1625568 5748208 -1617904 5747904 1617896 5748024 1625464 5748232 1625376 5746584 -1625464 5748232 1617896 5748024 1620064 5752296 1620152 5752352 -1617896 5748024 1620064 5752296 1625464 5748232 1617904 5747904 -1625712 5748088 1625872 5747552 1625624 5747288 1625464 5748232 -1617904 5747904 1625360 5748208 1625376 5746584 1617848 5747624 -1625376 5746584 1625360 5748208 1625464 5748232 1625512 5747120 -1625464 5748232 1625624 5747288 1625512 5747120 1625360 5748208 -1625464 5748232 1625712 5748088 1625624 5747288 1625360 5748208 -1625624 5747288 1625512 5747120 1625360 5748208 1625712 5748088 -1625376 5746584 1625360 5748208 1625512 5747120 1625448 5746768 -1625376 5746584 1617904 5747904 1625360 5748208 1625512 5747120 -1625464 5748232 1625680 5748128 1625712 5748088 1625360 5748208 -1625712 5748088 1625624 5747288 1625360 5748208 1625680 5748128 -1625464 5748232 1625568 5748208 1625680 5748128 1625360 5748208 -1625464 5748232 1625488 5748232 1625568 5748208 1625360 5748208 -1625680 5748128 1625712 5748088 1625360 5748208 1625568 5748208 -1625512 5747120 1625376 5746584 1625360 5748208 1625624 5747288 -1625464 5748232 1625360 5748208 1617904 5747904 1617896 5748024 -1625360 5748208 1617896 5748024 1625464 5748232 1625568 5748208 -1625464 5748232 1625360 5748208 1617896 5748024 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1625360 5748208 -1625360 5748208 1617904 5747904 1617896 5748024 1620064 5752296 -1625464 5748232 1625360 5748208 1620064 5752296 1620152 5752352 -1625464 5748232 1625360 5748208 1620152 5752352 1620192 5752400 -1625464 5748232 1625360 5748208 1620192 5752400 1620224 5752472 -1625464 5748232 1625360 5748208 1620224 5752472 1620224 5752520 -1625360 5748208 1620152 5752352 1620192 5752400 1620224 5752472 -1625360 5748208 1620064 5752296 1620152 5752352 1620192 5752400 -1625464 5748232 1625568 5748208 1625360 5748208 1620224 5752472 -1625360 5748208 1617896 5748024 1620064 5752296 1620152 5752352 -1625360 5748208 1625376 5746584 1617904 5747904 1617896 5748024 -1625712 5748088 1625872 5747552 1625624 5747288 1625360 5748208 -1617904 5747904 1625264 5748136 1625376 5746584 1617848 5747624 -1625376 5746584 1625264 5748136 1625360 5748208 1625512 5747120 -1625376 5746584 1625264 5748136 1625512 5747120 1625448 5746768 -1625264 5748136 1617904 5747904 1625360 5748208 1625512 5747120 -1625376 5746584 1617904 5747904 1625264 5748136 1625512 5747120 -1625360 5748208 1625624 5747288 1625512 5747120 1625264 5748136 -1625360 5748208 1625712 5748088 1625624 5747288 1625264 5748136 -1625360 5748208 1625680 5748128 1625712 5748088 1625264 5748136 -1625712 5748088 1625624 5747288 1625264 5748136 1625680 5748128 -1625360 5748208 1625680 5748128 1625264 5748136 1617904 5747904 -1625512 5747120 1625376 5746584 1625264 5748136 1625624 5747288 -1625360 5748208 1625568 5748208 1625680 5748128 1625264 5748136 -1625680 5748128 1625712 5748088 1625264 5748136 1625568 5748208 -1625360 5748208 1625568 5748208 1625264 5748136 1617904 5747904 -1625360 5748208 1625464 5748232 1625568 5748208 1625264 5748136 -1625624 5747288 1625512 5747120 1625264 5748136 1625712 5748088 -1625360 5748208 1625264 5748136 1617904 5747904 1617896 5748024 -1625360 5748208 1625568 5748208 1625264 5748136 1617896 5748024 -1625264 5748136 1625376 5746584 1617904 5747904 1617896 5748024 -1625360 5748208 1625264 5748136 1617896 5748024 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1625264 5748136 -1625360 5748208 1625568 5748208 1625264 5748136 1620064 5752296 -1625360 5748208 1625264 5748136 1620064 5752296 1620152 5752352 -1625360 5748208 1625568 5748208 1625264 5748136 1620152 5752352 -1625264 5748136 1617896 5748024 1620064 5752296 1620152 5752352 -1625360 5748208 1625264 5748136 1620152 5752352 1620192 5752400 -1625360 5748208 1625568 5748208 1625264 5748136 1620192 5752400 -1625360 5748208 1625264 5748136 1620192 5752400 1620224 5752472 -1625264 5748136 1620064 5752296 1620152 5752352 1620192 5752400 -1625264 5748136 1617904 5747904 1617896 5748024 1620064 5752296 -1625712 5748088 1625872 5747552 1625624 5747288 1625264 5748136 -1625712 5748088 1625872 5747552 1625264 5748136 1625680 5748128 -1625712 5748088 1625784 5748032 1625872 5747552 1625264 5748136 -1625624 5747288 1625512 5747120 1625264 5748136 1625872 5747552 -1617904 5747904 1625128 5748024 1625376 5746584 1617848 5747624 -1625376 5746584 1617768 5747376 1617848 5747624 1625128 5748024 -1625264 5748136 1625128 5748024 1617904 5747904 1617896 5748024 -1625264 5748136 1625376 5746584 1625128 5748024 1617896 5748024 -1625376 5746584 1625128 5748024 1625264 5748136 1625512 5747120 -1625376 5746584 1625128 5748024 1625512 5747120 1625448 5746768 -1625264 5748136 1625624 5747288 1625512 5747120 1625128 5748024 -1625128 5748024 1617896 5748024 1625264 5748136 1625624 5747288 -1625128 5748024 1625624 5747288 1625512 5747120 1625448 5746768 -1617904 5747904 1617896 5748024 1625128 5748024 1617848 5747624 -1625128 5748024 1625448 5746768 1625376 5746584 1617848 5747624 -1625264 5748136 1625872 5747552 1625624 5747288 1625128 5748024 -1625624 5747288 1625512 5747120 1625128 5748024 1625872 5747552 -1625264 5748136 1625872 5747552 1625128 5748024 1617896 5748024 -1625264 5748136 1625128 5748024 1617896 5748024 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1625128 5748024 -1625128 5748024 1617904 5747904 1617896 5748024 1620064 5752296 -1625264 5748136 1625872 5747552 1625128 5748024 1620064 5752296 -1625264 5748136 1625128 5748024 1620064 5752296 1620152 5752352 -1625264 5748136 1625872 5747552 1625128 5748024 1620152 5752352 -1625264 5748136 1625128 5748024 1620152 5752352 1620192 5752400 -1625264 5748136 1625872 5747552 1625128 5748024 1620192 5752400 -1625128 5748024 1620064 5752296 1620152 5752352 1620192 5752400 -1625264 5748136 1625128 5748024 1620192 5752400 1625360 5748208 -1625128 5748024 1617896 5748024 1620064 5752296 1620152 5752352 -1625264 5748136 1625712 5748088 1625872 5747552 1625128 5748024 -1625264 5748136 1625680 5748128 1625712 5748088 1625128 5748024 -1625264 5748136 1625712 5748088 1625128 5748024 1620192 5752400 -1625712 5748088 1625784 5748032 1625872 5747552 1625128 5748024 -1625872 5747552 1625624 5747288 1625128 5748024 1625712 5748088 -1617848 5747624 1625080 5747976 1625376 5746584 1617768 5747376 -1625128 5748024 1625080 5747976 1617848 5747624 1617904 5747904 -1625128 5748024 1625080 5747976 1617904 5747904 1617896 5748024 -1625080 5747976 1617848 5747624 1617904 5747904 1617896 5748024 -1625128 5748024 1625080 5747976 1617896 5748024 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1625080 5747976 -1625080 5747976 1617904 5747904 1617896 5748024 1620064 5752296 -1625128 5748024 1625376 5746584 1625080 5747976 1620064 5752296 -1625376 5746584 1625080 5747976 1625128 5748024 1625448 5746768 -1625128 5748024 1625512 5747120 1625448 5746768 1625080 5747976 -1625128 5748024 1625624 5747288 1625512 5747120 1625080 5747976 -1625512 5747120 1625448 5746768 1625080 5747976 1625624 5747288 -1625128 5748024 1625872 5747552 1625624 5747288 1625080 5747976 -1625080 5747976 1620064 5752296 1625128 5748024 1625624 5747288 -1625448 5746768 1625376 5746584 1625080 5747976 1625512 5747120 -1625080 5747976 1625376 5746584 1617848 5747624 1617904 5747904 -1625376 5746584 1617848 5747624 1625080 5747976 1625448 5746768 -1625128 5748024 1625080 5747976 1620064 5752296 1620152 5752352 -1625080 5747976 1617896 5748024 1620064 5752296 1620152 5752352 -1625128 5748024 1625624 5747288 1625080 5747976 1620152 5752352 -1625128 5748024 1625080 5747976 1620152 5752352 1620192 5752400 -1625128 5748024 1625624 5747288 1625080 5747976 1620192 5752400 -1625128 5748024 1625080 5747976 1620192 5752400 1625264 5748136 -1625080 5747976 1620064 5752296 1620152 5752352 1620192 5752400 -1617848 5747624 1624904 5747816 1625376 5746584 1617768 5747376 -1625376 5746584 1617712 5747256 1617768 5747376 1624904 5747816 -1625080 5747976 1624904 5747816 1617848 5747624 1617904 5747904 -1625080 5747976 1624904 5747816 1617904 5747904 1617896 5748024 -1625080 5747976 1624904 5747816 1617896 5748024 1620064 5752296 -1624904 5747816 1617904 5747904 1617896 5748024 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1624904 5747816 -1625080 5747976 1624904 5747816 1620064 5752296 1620152 5752352 -1624904 5747816 1617896 5748024 1620064 5752296 1620152 5752352 -1624904 5747816 1617848 5747624 1617904 5747904 1617896 5748024 -1617848 5747624 1617904 5747904 1624904 5747816 1617768 5747376 -1624904 5747816 1625080 5747976 1625376 5746584 1617768 5747376 -1625080 5747976 1625376 5746584 1624904 5747816 1620152 5752352 -1625376 5746584 1624904 5747816 1625080 5747976 1625448 5746768 -1625080 5747976 1625512 5747120 1625448 5746768 1624904 5747816 -1625080 5747976 1625624 5747288 1625512 5747120 1624904 5747816 -1625080 5747976 1625128 5748024 1625624 5747288 1624904 5747816 -1625512 5747120 1625448 5746768 1624904 5747816 1625624 5747288 -1625448 5746768 1625376 5746584 1624904 5747816 1625512 5747120 -1625376 5746584 1617768 5747376 1624904 5747816 1625448 5746768 -1624904 5747816 1620152 5752352 1625080 5747976 1625624 5747288 -1625080 5747976 1624904 5747816 1620152 5752352 1620192 5752400 -1624904 5747816 1620064 5752296 1620152 5752352 1620192 5752400 -1625080 5747976 1625624 5747288 1624904 5747816 1620192 5752400 -1625080 5747976 1624904 5747816 1620192 5752400 1625128 5748024 -1625080 5747976 1625624 5747288 1624904 5747816 1625128 5748024 -1620192 5752400 1625264 5748136 1625128 5748024 1624904 5747816 -1624904 5747816 1620152 5752352 1620192 5752400 1625128 5748024 -1624904 5747816 1624672 5747704 1617768 5747376 1617848 5747624 -1624904 5747816 1625376 5746584 1624672 5747704 1617848 5747624 -1624672 5747704 1625376 5746584 1617768 5747376 1617848 5747624 -1617768 5747376 1624672 5747704 1625376 5746584 1617712 5747256 -1617768 5747376 1617848 5747624 1624672 5747704 1617712 5747256 -1624672 5747704 1624904 5747816 1625376 5746584 1617712 5747256 -1624904 5747816 1624672 5747704 1617848 5747624 1617904 5747904 -1624672 5747704 1617768 5747376 1617848 5747624 1617904 5747904 -1624904 5747816 1625376 5746584 1624672 5747704 1617904 5747904 -1624904 5747816 1624672 5747704 1617904 5747904 1617896 5748024 -1624904 5747816 1625376 5746584 1624672 5747704 1617896 5748024 -1624904 5747816 1624672 5747704 1617896 5748024 1620064 5752296 -1624904 5747816 1625376 5746584 1624672 5747704 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1624672 5747704 -1624904 5747816 1624672 5747704 1620064 5752296 1620152 5752352 -1624904 5747816 1625376 5746584 1624672 5747704 1620152 5752352 -1624672 5747704 1617896 5748024 1620064 5752296 1620152 5752352 -1624904 5747816 1624672 5747704 1620152 5752352 1620192 5752400 -1624904 5747816 1625376 5746584 1624672 5747704 1620192 5752400 -1624672 5747704 1620064 5752296 1620152 5752352 1620192 5752400 -1624672 5747704 1617904 5747904 1617896 5748024 1620064 5752296 -1624672 5747704 1617848 5747624 1617904 5747904 1617896 5748024 -1625376 5746584 1624672 5747704 1624904 5747816 1625448 5746768 -1624672 5747704 1620192 5752400 1624904 5747816 1625448 5746768 -1625376 5746584 1617712 5747256 1624672 5747704 1625448 5746768 -1624904 5747816 1625512 5747120 1625448 5746768 1624672 5747704 -1624904 5747816 1625512 5747120 1624672 5747704 1620192 5752400 -1624904 5747816 1625624 5747288 1625512 5747120 1624672 5747704 -1625448 5746768 1625376 5746584 1624672 5747704 1625512 5747120 -1625376 5746584 1617608 5747096 1617712 5747256 1624672 5747704 -1624904 5747816 1624672 5747704 1620192 5752400 1625128 5748024 -1624904 5747816 1625512 5747120 1624672 5747704 1625128 5748024 -1624672 5747704 1620152 5752352 1620192 5752400 1625128 5748024 -1624904 5747816 1624672 5747704 1625128 5748024 1625080 5747976 -1624904 5747816 1625512 5747120 1624672 5747704 1625080 5747976 -1620192 5752400 1625264 5748136 1625128 5748024 1624672 5747704 -1624672 5747704 1620192 5752400 1625128 5748024 1625080 5747976 -1625376 5746584 1624656 5747688 1624672 5747704 1625448 5746768 -1624656 5747688 1617712 5747256 1624672 5747704 1625448 5746768 -1625376 5746584 1617712 5747256 1624656 5747688 1625448 5746768 -1624672 5747704 1624656 5747688 1617712 5747256 1617768 5747376 -1624672 5747704 1624656 5747688 1617768 5747376 1617848 5747624 -1624672 5747704 1624656 5747688 1617848 5747624 1617904 5747904 -1624656 5747688 1617768 5747376 1617848 5747624 1617904 5747904 -1624672 5747704 1625448 5746768 1624656 5747688 1617904 5747904 -1624656 5747688 1625376 5746584 1617712 5747256 1617768 5747376 -1624656 5747688 1617712 5747256 1617768 5747376 1617848 5747624 -1624672 5747704 1624656 5747688 1617904 5747904 1617896 5748024 -1624656 5747688 1617848 5747624 1617904 5747904 1617896 5748024 -1624672 5747704 1625448 5746768 1624656 5747688 1617896 5748024 -1624672 5747704 1624656 5747688 1617896 5748024 1620064 5752296 -1624672 5747704 1625448 5746768 1624656 5747688 1620064 5752296 -1624672 5747704 1624656 5747688 1620064 5752296 1620152 5752352 -1624672 5747704 1625448 5746768 1624656 5747688 1620152 5752352 -1617896 5748024 1620032 5752288 1620064 5752296 1624656 5747688 -1624672 5747704 1624656 5747688 1620152 5752352 1620192 5752400 -1624656 5747688 1617896 5748024 1620064 5752296 1620152 5752352 -1624656 5747688 1617904 5747904 1617896 5748024 1620064 5752296 -1624672 5747704 1625512 5747120 1625448 5746768 1624656 5747688 -1624672 5747704 1625512 5747120 1624656 5747688 1620152 5752352 -1625448 5746768 1625376 5746584 1624656 5747688 1625512 5747120 -1624672 5747704 1624904 5747816 1625512 5747120 1624656 5747688 -1624672 5747704 1624904 5747816 1624656 5747688 1620152 5752352 -1624904 5747816 1625624 5747288 1625512 5747120 1624656 5747688 -1625512 5747120 1625448 5746768 1624656 5747688 1624904 5747816 -1617712 5747256 1624656 5747688 1625376 5746584 1617608 5747096 -1617712 5747256 1617768 5747376 1624656 5747688 1617608 5747096 -1624656 5747688 1625448 5746768 1625376 5746584 1617608 5747096 -1625376 5746584 1617512 5746992 1617608 5747096 1624656 5747688 -1625376 5746584 1624536 5747664 1624656 5747688 1625448 5746768 -1624656 5747688 1625512 5747120 1625448 5746768 1624536 5747664 -1624536 5747664 1617608 5747096 1624656 5747688 1625448 5746768 -1625376 5746584 1617608 5747096 1624536 5747664 1625448 5746768 -1617608 5747096 1624536 5747664 1625376 5746584 1617512 5746992 -1624656 5747688 1624536 5747664 1617608 5747096 1617712 5747256 -1624656 5747688 1624536 5747664 1617712 5747256 1617768 5747376 -1624656 5747688 1625448 5746768 1624536 5747664 1617768 5747376 -1624536 5747664 1625376 5746584 1617608 5747096 1617712 5747256 -1624656 5747688 1624536 5747664 1617768 5747376 1617848 5747624 -1624656 5747688 1624536 5747664 1617848 5747624 1617904 5747904 -1624656 5747688 1624536 5747664 1617904 5747904 1617896 5748024 -1624536 5747664 1617848 5747624 1617904 5747904 1617896 5748024 -1624536 5747664 1617712 5747256 1617768 5747376 1617848 5747624 -1624656 5747688 1625448 5746768 1624536 5747664 1617896 5748024 -1624536 5747664 1617768 5747376 1617848 5747624 1617904 5747904 -1624656 5747688 1624536 5747664 1617896 5748024 1620064 5752296 -1624536 5747664 1617904 5747904 1617896 5748024 1620064 5752296 -1624656 5747688 1625448 5746768 1624536 5747664 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1624536 5747664 -1624656 5747688 1624536 5747664 1620064 5752296 1620152 5752352 -1624656 5747688 1625448 5746768 1624536 5747664 1620152 5752352 -1624656 5747688 1624536 5747664 1620152 5752352 1624672 5747704 -1624656 5747688 1625448 5746768 1624536 5747664 1624672 5747704 -1620152 5752352 1620192 5752400 1624672 5747704 1624536 5747664 -1624672 5747704 1624656 5747688 1624536 5747664 1620192 5752400 -1620192 5752400 1625128 5748024 1624672 5747704 1624536 5747664 -1624672 5747704 1624656 5747688 1624536 5747664 1625128 5748024 -1620192 5752400 1625128 5748024 1624536 5747664 1620152 5752352 -1624536 5747664 1620064 5752296 1620152 5752352 1620192 5752400 -1624536 5747664 1617896 5748024 1620064 5752296 1620152 5752352 -1624536 5747664 1617608 5747096 1617712 5747256 1617768 5747376 -1620192 5752400 1625264 5748136 1625128 5748024 1624536 5747664 -1625128 5748024 1624672 5747704 1624536 5747664 1625264 5748136 -1620192 5752400 1625264 5748136 1624536 5747664 1620152 5752352 -1620192 5752400 1625360 5748208 1625264 5748136 1624536 5747664 -1625128 5748024 1625080 5747976 1624672 5747704 1624536 5747664 -1624672 5747704 1624656 5747688 1624536 5747664 1625080 5747976 -1625128 5748024 1625080 5747976 1624536 5747664 1625264 5748136 -1625080 5747976 1624904 5747816 1624672 5747704 1624536 5747664 -1624536 5747664 1624208 5747632 1617608 5747096 1617712 5747256 -1624536 5747664 1625376 5746584 1624208 5747632 1617712 5747256 -1625376 5746584 1624208 5747632 1624536 5747664 1625448 5746768 -1624208 5747632 1625376 5746584 1617608 5747096 1617712 5747256 -1617608 5747096 1624208 5747632 1625376 5746584 1617512 5746992 -1617608 5747096 1617712 5747256 1624208 5747632 1617512 5746992 -1624208 5747632 1624536 5747664 1625376 5746584 1617512 5746992 -1625376 5746584 1616216 5745480 1617512 5746992 1624208 5747632 -1624536 5747664 1624208 5747632 1617712 5747256 1617768 5747376 -1624536 5747664 1624208 5747632 1617768 5747376 1617848 5747624 -1624208 5747632 1617608 5747096 1617712 5747256 1617768 5747376 -1624536 5747664 1625376 5746584 1624208 5747632 1617848 5747624 -1624536 5747664 1624208 5747632 1617848 5747624 1617904 5747904 -1624536 5747664 1624208 5747632 1617904 5747904 1617896 5748024 -1624536 5747664 1624208 5747632 1617896 5748024 1620064 5752296 -1624208 5747632 1617904 5747904 1617896 5748024 1620064 5752296 -1624208 5747632 1617768 5747376 1617848 5747624 1617904 5747904 -1624536 5747664 1625376 5746584 1624208 5747632 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1624208 5747632 -1624208 5747632 1617848 5747624 1617904 5747904 1617896 5748024 -1624536 5747664 1624208 5747632 1620064 5752296 1620152 5752352 -1624208 5747632 1617896 5748024 1620064 5752296 1620152 5752352 -1624536 5747664 1625376 5746584 1624208 5747632 1620152 5752352 -1624536 5747664 1624208 5747632 1620152 5752352 1620192 5752400 -1624536 5747664 1625376 5746584 1624208 5747632 1620192 5752400 -1624536 5747664 1624208 5747632 1620192 5752400 1625264 5748136 -1624536 5747664 1625376 5746584 1624208 5747632 1625264 5748136 -1624208 5747632 1620152 5752352 1620192 5752400 1625264 5748136 -1624208 5747632 1620064 5752296 1620152 5752352 1620192 5752400 -1624208 5747632 1617712 5747256 1617768 5747376 1617848 5747624 -1620192 5752400 1625360 5748208 1625264 5748136 1624208 5747632 -1625264 5748136 1624536 5747664 1624208 5747632 1625360 5748208 -1620192 5752400 1625360 5748208 1624208 5747632 1620152 5752352 -1620192 5752400 1620224 5752472 1625360 5748208 1624208 5747632 -1624536 5747664 1624208 5747632 1625264 5748136 1625128 5748024 -1624536 5747664 1625376 5746584 1624208 5747632 1625128 5748024 -1624536 5747664 1624208 5747632 1625128 5748024 1625080 5747976 -1624536 5747664 1625376 5746584 1624208 5747632 1625080 5747976 -1624208 5747632 1625360 5748208 1625264 5748136 1625128 5748024 -1624208 5747632 1625264 5748136 1625128 5748024 1625080 5747976 -1624536 5747664 1624208 5747632 1625080 5747976 1624672 5747704 -1625376 5746584 1623904 5747528 1624208 5747632 1624536 5747664 -1624208 5747632 1623904 5747528 1617512 5746992 1617608 5747096 -1624208 5747632 1623904 5747528 1617608 5747096 1617712 5747256 -1624208 5747632 1623904 5747528 1617712 5747256 1617768 5747376 -1623904 5747528 1617608 5747096 1617712 5747256 1617768 5747376 -1624208 5747632 1625376 5746584 1623904 5747528 1617768 5747376 -1623904 5747528 1625376 5746584 1617512 5746992 1617608 5747096 -1623904 5747528 1617512 5746992 1617608 5747096 1617712 5747256 -1617512 5746992 1623904 5747528 1625376 5746584 1616216 5745480 -1617512 5746992 1623904 5747528 1616216 5745480 1616232 5745520 -1617512 5746992 1617608 5747096 1623904 5747528 1616216 5745480 -1623904 5747528 1624208 5747632 1625376 5746584 1616216 5745480 -1625376 5746584 1616160 5745400 1616216 5745480 1623904 5747528 -1625376 5746584 1616160 5745400 1623904 5747528 1624208 5747632 -1625376 5746584 1615544 5744608 1616160 5745400 1623904 5747528 -1616216 5745480 1617512 5746992 1623904 5747528 1616160 5745400 -1624208 5747632 1623904 5747528 1617768 5747376 1617848 5747624 -1624208 5747632 1623904 5747528 1617848 5747624 1617904 5747904 -1623904 5747528 1617712 5747256 1617768 5747376 1617848 5747624 -1624208 5747632 1625376 5746584 1623904 5747528 1617904 5747904 -1624208 5747632 1623904 5747528 1617904 5747904 1617896 5748024 -1624208 5747632 1623904 5747528 1617896 5748024 1620064 5752296 -1624208 5747632 1623904 5747528 1620064 5752296 1620152 5752352 -1623904 5747528 1617896 5748024 1620064 5752296 1620152 5752352 -1623904 5747528 1617848 5747624 1617904 5747904 1617896 5748024 -1624208 5747632 1625376 5746584 1623904 5747528 1620152 5752352 -1617896 5748024 1620032 5752288 1620064 5752296 1623904 5747528 -1623904 5747528 1617904 5747904 1617896 5748024 1620064 5752296 -1624208 5747632 1623904 5747528 1620152 5752352 1620192 5752400 -1623904 5747528 1620064 5752296 1620152 5752352 1620192 5752400 -1624208 5747632 1625376 5746584 1623904 5747528 1620192 5752400 -1624208 5747632 1623904 5747528 1620192 5752400 1625360 5748208 -1623904 5747528 1617768 5747376 1617848 5747624 1617904 5747904 -1617512 5746992 1623656 5747496 1616216 5745480 1616232 5745520 -1623904 5747528 1623656 5747496 1617512 5746992 1617608 5747096 -1623904 5747528 1616216 5745480 1623656 5747496 1617608 5747096 -1623656 5747496 1616216 5745480 1617512 5746992 1617608 5747096 -1623904 5747528 1623656 5747496 1617608 5747096 1617712 5747256 -1623904 5747528 1623656 5747496 1617712 5747256 1617768 5747376 -1623904 5747528 1623656 5747496 1617768 5747376 1617848 5747624 -1623656 5747496 1617712 5747256 1617768 5747376 1617848 5747624 -1623656 5747496 1617512 5746992 1617608 5747096 1617712 5747256 -1623904 5747528 1616216 5745480 1623656 5747496 1617848 5747624 -1623656 5747496 1617608 5747096 1617712 5747256 1617768 5747376 -1616216 5745480 1623656 5747496 1623904 5747528 1616160 5745400 -1623656 5747496 1617848 5747624 1623904 5747528 1616160 5745400 -1616216 5745480 1617512 5746992 1623656 5747496 1616160 5745400 -1623904 5747528 1625376 5746584 1616160 5745400 1623656 5747496 -1623904 5747528 1625376 5746584 1623656 5747496 1617848 5747624 -1623904 5747528 1624208 5747632 1625376 5746584 1623656 5747496 -1625376 5746584 1615544 5744608 1616160 5745400 1623656 5747496 -1616160 5745400 1616216 5745480 1623656 5747496 1625376 5746584 -1623904 5747528 1623656 5747496 1617848 5747624 1617904 5747904 -1623904 5747528 1623656 5747496 1617904 5747904 1617896 5748024 -1623656 5747496 1617768 5747376 1617848 5747624 1617904 5747904 -1623904 5747528 1625376 5746584 1623656 5747496 1617896 5748024 -1623904 5747528 1623656 5747496 1617896 5748024 1620064 5752296 -1623904 5747528 1623656 5747496 1620064 5752296 1620152 5752352 -1623904 5747528 1623656 5747496 1620152 5752352 1620192 5752400 -1623656 5747496 1620064 5752296 1620152 5752352 1620192 5752400 -1623656 5747496 1617904 5747904 1617896 5748024 1620064 5752296 -1623904 5747528 1625376 5746584 1623656 5747496 1620192 5752400 -1617896 5748024 1620032 5752288 1620064 5752296 1623656 5747496 -1623656 5747496 1617896 5748024 1620064 5752296 1620152 5752352 -1623904 5747528 1623656 5747496 1620192 5752400 1624208 5747632 -1623656 5747496 1620152 5752352 1620192 5752400 1624208 5747632 -1623904 5747528 1625376 5746584 1623656 5747496 1624208 5747632 -1620192 5752400 1625360 5748208 1624208 5747632 1623656 5747496 -1623656 5747496 1617848 5747624 1617904 5747904 1617896 5748024 -1617512 5746992 1623264 5747416 1616216 5745480 1616232 5745520 -1623656 5747496 1623264 5747416 1617512 5746992 1617608 5747096 -1623656 5747496 1623264 5747416 1617608 5747096 1617712 5747256 -1623264 5747416 1617512 5746992 1617608 5747096 1617712 5747256 -1623656 5747496 1616216 5745480 1623264 5747416 1617712 5747256 -1616216 5745480 1623264 5747416 1623656 5747496 1616160 5745400 -1623264 5747416 1617712 5747256 1623656 5747496 1616160 5745400 -1623656 5747496 1623264 5747416 1617712 5747256 1617768 5747376 -1623656 5747496 1623264 5747416 1617768 5747376 1617848 5747624 -1623656 5747496 1623264 5747416 1617848 5747624 1617904 5747904 -1623264 5747416 1617768 5747376 1617848 5747624 1617904 5747904 -1623264 5747416 1617608 5747096 1617712 5747256 1617768 5747376 -1623656 5747496 1616160 5745400 1623264 5747416 1617904 5747904 -1623264 5747416 1617712 5747256 1617768 5747376 1617848 5747624 -1623656 5747496 1625376 5746584 1616160 5745400 1623264 5747416 -1623656 5747496 1625376 5746584 1623264 5747416 1617904 5747904 -1616160 5745400 1616216 5745480 1623264 5747416 1625376 5746584 -1625376 5746584 1615544 5744608 1616160 5745400 1623264 5747416 -1616160 5745400 1616216 5745480 1623264 5747416 1615544 5744608 -1625376 5746584 1615544 5744608 1623264 5747416 1623656 5747496 -1623264 5747416 1616216 5745480 1617512 5746992 1617608 5747096 -1616216 5745480 1617512 5746992 1623264 5747416 1616160 5745400 -1615544 5744608 1616016 5745272 1616160 5745400 1623264 5747416 -1623656 5747496 1623904 5747528 1625376 5746584 1623264 5747416 -1623656 5747496 1623264 5747416 1617904 5747904 1617896 5748024 -1623656 5747496 1623264 5747416 1617896 5748024 1620064 5752296 -1623264 5747416 1617848 5747624 1617904 5747904 1617896 5748024 -1623656 5747496 1625376 5746584 1623264 5747416 1620064 5752296 -1617896 5748024 1620032 5752288 1620064 5752296 1623264 5747416 -1620064 5752296 1623656 5747496 1623264 5747416 1620032 5752288 -1623656 5747496 1623264 5747416 1620064 5752296 1620152 5752352 -1623656 5747496 1623264 5747416 1620152 5752352 1620192 5752400 -1623656 5747496 1623264 5747416 1620192 5752400 1624208 5747632 -1623264 5747416 1620032 5752288 1620064 5752296 1620152 5752352 -1623656 5747496 1625376 5746584 1623264 5747416 1620192 5752400 -1623264 5747416 1620064 5752296 1620152 5752352 1620192 5752400 -1617896 5748024 1617848 5748112 1620032 5752288 1623264 5747416 -1623264 5747416 1617904 5747904 1617896 5748024 1620032 5752288 -1625376 5746584 1615496 5744536 1615544 5744608 1623264 5747416 -1615544 5744608 1616160 5745400 1623264 5747416 1615496 5744536 -1625376 5746584 1615496 5744536 1623264 5747416 1623656 5747496 -1625376 5746584 1615632 5735512 1615496 5744536 1623264 5747416 -1615632 5735512 1615368 5744400 1615496 5744536 1623264 5747416 -1625376 5746584 1629584 5726976 1615632 5735512 1623264 5747416 -1625376 5746584 1615632 5735512 1623264 5747416 1623656 5747496 -1615496 5744536 1615544 5744608 1623264 5747416 1615632 5735512 -1615496 5744536 1623152 5747352 1615632 5735512 1615368 5744400 -1615632 5735512 1623152 5747352 1623264 5747416 1625376 5746584 -1615632 5735512 1623152 5747352 1625376 5746584 1629584 5726976 -1623264 5747416 1623656 5747496 1625376 5746584 1623152 5747352 -1625376 5746584 1615632 5735512 1623152 5747352 1623656 5747496 -1623152 5747352 1615496 5744536 1623264 5747416 1623656 5747496 -1615632 5735512 1615496 5744536 1623152 5747352 1625376 5746584 -1623656 5747496 1623904 5747528 1625376 5746584 1623152 5747352 -1623264 5747416 1623152 5747352 1615496 5744536 1615544 5744608 -1623264 5747416 1623152 5747352 1615544 5744608 1616160 5745400 -1623264 5747416 1623152 5747352 1616160 5745400 1616216 5745480 -1623152 5747352 1615544 5744608 1616160 5745400 1616216 5745480 -1623264 5747416 1623656 5747496 1623152 5747352 1616216 5745480 -1623264 5747416 1623152 5747352 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1623152 5747352 -1623152 5747352 1616160 5745400 1616216 5745480 1617512 5746992 -1623264 5747416 1623152 5747352 1617512 5746992 1617608 5747096 -1623264 5747416 1623152 5747352 1617608 5747096 1617712 5747256 -1623264 5747416 1623152 5747352 1617712 5747256 1617768 5747376 -1623152 5747352 1617608 5747096 1617712 5747256 1617768 5747376 -1623264 5747416 1623152 5747352 1617768 5747376 1617848 5747624 -1623264 5747416 1623152 5747352 1617848 5747624 1617904 5747904 -1623264 5747416 1623152 5747352 1617904 5747904 1617896 5748024 -1623152 5747352 1617848 5747624 1617904 5747904 1617896 5748024 -1623152 5747352 1617712 5747256 1617768 5747376 1617848 5747624 -1623152 5747352 1617768 5747376 1617848 5747624 1617904 5747904 -1623152 5747352 1617512 5746992 1617608 5747096 1617712 5747256 -1623264 5747416 1623656 5747496 1623152 5747352 1617896 5748024 -1623152 5747352 1616216 5745480 1617512 5746992 1617608 5747096 -1623152 5747352 1615632 5735512 1615496 5744536 1615544 5744608 -1615544 5744608 1616016 5745272 1616160 5745400 1623152 5747352 -1623264 5747416 1623152 5747352 1617896 5748024 1620032 5752288 -1623152 5747352 1617904 5747904 1617896 5748024 1620032 5752288 -1623264 5747416 1623152 5747352 1620032 5752288 1620064 5752296 -1623264 5747416 1623152 5747352 1620064 5752296 1620152 5752352 -1623152 5747352 1620032 5752288 1620064 5752296 1620152 5752352 -1623264 5747416 1623152 5747352 1620152 5752352 1620192 5752400 -1623264 5747416 1623656 5747496 1623152 5747352 1620152 5752352 -1617896 5748024 1617848 5748112 1620032 5752288 1623152 5747352 -1623152 5747352 1617896 5748024 1620032 5752288 1620064 5752296 -1623152 5747352 1615496 5744536 1615544 5744608 1616160 5745400 -1615496 5744536 1622880 5747168 1615632 5735512 1615368 5744400 -1623152 5747352 1622880 5747168 1615496 5744536 1615544 5744608 -1623152 5747352 1615632 5735512 1622880 5747168 1615544 5744608 -1615632 5735512 1622880 5747168 1623152 5747352 1625376 5746584 -1615632 5735512 1622880 5747168 1625376 5746584 1629584 5726976 -1623152 5747352 1623656 5747496 1625376 5746584 1622880 5747168 -1623152 5747352 1623264 5747416 1623656 5747496 1622880 5747168 -1622880 5747168 1615544 5744608 1623152 5747352 1623656 5747496 -1625376 5746584 1615632 5735512 1622880 5747168 1623656 5747496 -1622880 5747168 1615632 5735512 1615496 5744536 1615544 5744608 -1615632 5735512 1615496 5744536 1622880 5747168 1625376 5746584 -1623656 5747496 1623904 5747528 1625376 5746584 1622880 5747168 -1623152 5747352 1622880 5747168 1615544 5744608 1616160 5745400 -1623152 5747352 1622880 5747168 1616160 5745400 1616216 5745480 -1623152 5747352 1622880 5747168 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1622880 5747168 -1622880 5747168 1616160 5745400 1616216 5745480 1617512 5746992 -1623152 5747352 1622880 5747168 1617512 5746992 1617608 5747096 -1622880 5747168 1616216 5745480 1617512 5746992 1617608 5747096 -1623152 5747352 1622880 5747168 1617608 5747096 1617712 5747256 -1623152 5747352 1622880 5747168 1617712 5747256 1617768 5747376 -1623152 5747352 1622880 5747168 1617768 5747376 1617848 5747624 -1622880 5747168 1617712 5747256 1617768 5747376 1617848 5747624 -1623152 5747352 1622880 5747168 1617848 5747624 1617904 5747904 -1623152 5747352 1622880 5747168 1617904 5747904 1617896 5748024 -1623152 5747352 1622880 5747168 1617896 5748024 1620032 5752288 -1622880 5747168 1617904 5747904 1617896 5748024 1620032 5752288 -1622880 5747168 1617768 5747376 1617848 5747624 1617904 5747904 -1622880 5747168 1617848 5747624 1617904 5747904 1617896 5748024 -1622880 5747168 1617608 5747096 1617712 5747256 1617768 5747376 -1622880 5747168 1617512 5746992 1617608 5747096 1617712 5747256 -1622880 5747168 1615496 5744536 1615544 5744608 1616160 5745400 -1623152 5747352 1623656 5747496 1622880 5747168 1620032 5752288 -1615544 5744608 1616016 5745272 1616160 5745400 1622880 5747168 -1617896 5748024 1617848 5748112 1620032 5752288 1622880 5747168 -1623152 5747352 1622880 5747168 1620032 5752288 1620064 5752296 -1622880 5747168 1617896 5748024 1620032 5752288 1620064 5752296 -1623152 5747352 1622880 5747168 1620064 5752296 1620152 5752352 -1623152 5747352 1623656 5747496 1622880 5747168 1620064 5752296 -1622880 5747168 1615544 5744608 1616160 5745400 1616216 5745480 -1615496 5744536 1622688 5747096 1615632 5735512 1615368 5744400 -1622880 5747168 1622688 5747096 1615496 5744536 1615544 5744608 -1622880 5747168 1622688 5747096 1615544 5744608 1616160 5745400 -1622688 5747096 1615496 5744536 1615544 5744608 1616160 5745400 -1622880 5747168 1615632 5735512 1622688 5747096 1616160 5745400 -1615632 5735512 1622688 5747096 1622880 5747168 1625376 5746584 -1615632 5735512 1622688 5747096 1625376 5746584 1629584 5726976 -1622880 5747168 1623656 5747496 1625376 5746584 1622688 5747096 -1622688 5747096 1616160 5745400 1622880 5747168 1625376 5746584 -1615544 5744608 1616016 5745272 1616160 5745400 1622688 5747096 -1622688 5747096 1615632 5735512 1615496 5744536 1615544 5744608 -1615632 5735512 1615496 5744536 1622688 5747096 1625376 5746584 -1622880 5747168 1622688 5747096 1616160 5745400 1616216 5745480 -1622880 5747168 1622688 5747096 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1622688 5747096 -1622880 5747168 1622688 5747096 1617512 5746992 1617608 5747096 -1622688 5747096 1616216 5745480 1617512 5746992 1617608 5747096 -1622880 5747168 1622688 5747096 1617608 5747096 1617712 5747256 -1622688 5747096 1617512 5746992 1617608 5747096 1617712 5747256 -1622880 5747168 1622688 5747096 1617712 5747256 1617768 5747376 -1622880 5747168 1622688 5747096 1617768 5747376 1617848 5747624 -1622880 5747168 1622688 5747096 1617848 5747624 1617904 5747904 -1622688 5747096 1617768 5747376 1617848 5747624 1617904 5747904 -1622880 5747168 1622688 5747096 1617904 5747904 1617896 5748024 -1622880 5747168 1622688 5747096 1617896 5748024 1620032 5752288 -1622880 5747168 1622688 5747096 1620032 5752288 1620064 5752296 -1622688 5747096 1617896 5748024 1620032 5752288 1620064 5752296 -1622688 5747096 1617848 5747624 1617904 5747904 1617896 5748024 -1622688 5747096 1617904 5747904 1617896 5748024 1620032 5752288 -1622688 5747096 1617712 5747256 1617768 5747376 1617848 5747624 -1622688 5747096 1617608 5747096 1617712 5747256 1617768 5747376 -1622688 5747096 1615544 5744608 1616160 5745400 1616216 5745480 -1622880 5747168 1625376 5746584 1622688 5747096 1620064 5752296 -1617896 5748024 1617848 5748112 1620032 5752288 1622688 5747096 -1622880 5747168 1622688 5747096 1620064 5752296 1623152 5747352 -1622688 5747096 1620032 5752288 1620064 5752296 1623152 5747352 -1620064 5752296 1620152 5752352 1623152 5747352 1622688 5747096 -1622880 5747168 1625376 5746584 1622688 5747096 1623152 5747352 -1622688 5747096 1616160 5745400 1616216 5745480 1617512 5746992 -1615496 5744536 1622504 5747016 1615632 5735512 1615368 5744400 -1622688 5747096 1622504 5747016 1615496 5744536 1615544 5744608 -1622688 5747096 1622504 5747016 1615544 5744608 1616160 5745400 -1622688 5747096 1622504 5747016 1616160 5745400 1616216 5745480 -1622504 5747016 1615544 5744608 1616160 5745400 1616216 5745480 -1615544 5744608 1616016 5745272 1616160 5745400 1622504 5747016 -1622504 5747016 1615496 5744536 1615544 5744608 1616160 5745400 -1622688 5747096 1615632 5735512 1622504 5747016 1616216 5745480 -1615632 5735512 1622504 5747016 1622688 5747096 1625376 5746584 -1615632 5735512 1622504 5747016 1625376 5746584 1629584 5726976 -1622688 5747096 1622880 5747168 1625376 5746584 1622504 5747016 -1615632 5735512 1615496 5744536 1622504 5747016 1625376 5746584 -1622504 5747016 1616216 5745480 1622688 5747096 1625376 5746584 -1622504 5747016 1615632 5735512 1615496 5744536 1615544 5744608 -1622688 5747096 1622504 5747016 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1622504 5747016 -1622688 5747096 1622504 5747016 1617512 5746992 1617608 5747096 -1622688 5747096 1622504 5747016 1617608 5747096 1617712 5747256 -1622504 5747016 1617512 5746992 1617608 5747096 1617712 5747256 -1622688 5747096 1622504 5747016 1617712 5747256 1617768 5747376 -1622504 5747016 1617608 5747096 1617712 5747256 1617768 5747376 -1622688 5747096 1622504 5747016 1617768 5747376 1617848 5747624 -1622688 5747096 1622504 5747016 1617848 5747624 1617904 5747904 -1622688 5747096 1622504 5747016 1617904 5747904 1617896 5748024 -1622504 5747016 1617848 5747624 1617904 5747904 1617896 5748024 -1622688 5747096 1622504 5747016 1617896 5748024 1620032 5752288 -1622688 5747096 1622504 5747016 1620032 5752288 1620064 5752296 -1622688 5747096 1622504 5747016 1620064 5752296 1623152 5747352 -1622504 5747016 1617904 5747904 1617896 5748024 1620032 5752288 -1622504 5747016 1617896 5748024 1620032 5752288 1620064 5752296 -1622504 5747016 1617768 5747376 1617848 5747624 1617904 5747904 -1622504 5747016 1617712 5747256 1617768 5747376 1617848 5747624 -1622504 5747016 1616160 5745400 1616216 5745480 1617512 5746992 -1622688 5747096 1625376 5746584 1622504 5747016 1620064 5752296 -1617896 5748024 1617848 5748112 1620032 5752288 1622504 5747016 -1622504 5747016 1616216 5745480 1617512 5746992 1617608 5747096 -1615496 5744536 1622392 5746896 1615632 5735512 1615368 5744400 -1615632 5735512 1622392 5746896 1622504 5747016 1625376 5746584 -1615632 5735512 1622392 5746896 1625376 5746584 1629584 5726976 -1615632 5735512 1615496 5744536 1622392 5746896 1625376 5746584 -1622504 5747016 1622688 5747096 1625376 5746584 1622392 5746896 -1622688 5747096 1622880 5747168 1625376 5746584 1622392 5746896 -1622880 5747168 1623656 5747496 1625376 5746584 1622392 5746896 -1625376 5746584 1615632 5735512 1622392 5746896 1622880 5747168 -1622688 5747096 1622880 5747168 1622392 5746896 1622504 5747016 -1622504 5747016 1622392 5746896 1615496 5744536 1615544 5744608 -1622392 5746896 1615632 5735512 1615496 5744536 1615544 5744608 -1622504 5747016 1622392 5746896 1615544 5744608 1616160 5745400 -1622504 5747016 1622392 5746896 1616160 5745400 1616216 5745480 -1622504 5747016 1622392 5746896 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1622392 5746896 -1622392 5746896 1616160 5745400 1616216 5745480 1617512 5746992 -1615544 5744608 1616016 5745272 1616160 5745400 1622392 5746896 -1622392 5746896 1615544 5744608 1616160 5745400 1616216 5745480 -1622392 5746896 1615496 5744536 1615544 5744608 1616160 5745400 -1622392 5746896 1617512 5746992 1622504 5747016 1622688 5747096 -1622504 5747016 1622392 5746896 1617512 5746992 1617608 5747096 -1622504 5747016 1622392 5746896 1617608 5747096 1617712 5747256 -1622504 5747016 1622392 5746896 1617712 5747256 1617768 5747376 -1622392 5746896 1617608 5747096 1617712 5747256 1617768 5747376 -1622504 5747016 1622392 5746896 1617768 5747376 1617848 5747624 -1622392 5746896 1617712 5747256 1617768 5747376 1617848 5747624 -1622504 5747016 1622392 5746896 1617848 5747624 1617904 5747904 -1622504 5747016 1622392 5746896 1617904 5747904 1617896 5748024 -1622504 5747016 1622392 5746896 1617896 5748024 1620032 5752288 -1622392 5746896 1617848 5747624 1617904 5747904 1617896 5748024 -1622392 5746896 1617768 5747376 1617848 5747624 1617904 5747904 -1622392 5746896 1616216 5745480 1617512 5746992 1617608 5747096 -1622504 5747016 1622688 5747096 1622392 5746896 1617896 5748024 -1622392 5746896 1617512 5746992 1617608 5747096 1617712 5747256 -1615632 5735512 1622296 5746712 1625376 5746584 1629584 5726976 -1625376 5746584 1622296 5746712 1622392 5746896 1622880 5747168 -1625376 5746584 1622296 5746712 1622880 5747168 1623656 5747496 -1622392 5746896 1622688 5747096 1622880 5747168 1622296 5746712 -1622880 5747168 1625376 5746584 1622296 5746712 1622688 5747096 -1622296 5746712 1615632 5735512 1622392 5746896 1622688 5747096 -1622392 5746896 1622296 5746712 1615632 5735512 1615496 5744536 -1615632 5735512 1615368 5744400 1615496 5744536 1622296 5746712 -1622392 5746896 1622296 5746712 1615496 5744536 1615544 5744608 -1622392 5746896 1622688 5747096 1622296 5746712 1615544 5744608 -1622296 5746712 1615632 5735512 1615496 5744536 1615544 5744608 -1622296 5746712 1625376 5746584 1615632 5735512 1615496 5744536 -1625376 5746584 1615632 5735512 1622296 5746712 1622880 5747168 -1622392 5746896 1622504 5747016 1622688 5747096 1622296 5746712 -1622392 5746896 1622296 5746712 1615544 5744608 1616160 5745400 -1622296 5746712 1615496 5744536 1615544 5744608 1616160 5745400 -1622392 5746896 1622688 5747096 1622296 5746712 1616160 5745400 -1615544 5744608 1616016 5745272 1616160 5745400 1622296 5746712 -1622392 5746896 1622296 5746712 1616160 5745400 1616216 5745480 -1622392 5746896 1622296 5746712 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1622296 5746712 -1622392 5746896 1622296 5746712 1617512 5746992 1617608 5747096 -1622296 5746712 1616216 5745480 1617512 5746992 1617608 5747096 -1622392 5746896 1622688 5747096 1622296 5746712 1617608 5747096 -1622296 5746712 1616160 5745400 1616216 5745480 1617512 5746992 -1622296 5746712 1615544 5744608 1616160 5745400 1616216 5745480 -1622392 5746896 1622296 5746712 1617608 5747096 1617712 5747256 -1622392 5746896 1622296 5746712 1617712 5747256 1617768 5747376 -1622392 5746896 1622296 5746712 1617768 5747376 1617848 5747624 -1622296 5746712 1617712 5747256 1617768 5747376 1617848 5747624 -1622392 5746896 1622296 5746712 1617848 5747624 1617904 5747904 -1622296 5746712 1617768 5747376 1617848 5747624 1617904 5747904 -1622392 5746896 1622296 5746712 1617904 5747904 1617896 5748024 -1622296 5746712 1617512 5746992 1617608 5747096 1617712 5747256 -1622392 5746896 1622688 5747096 1622296 5746712 1617904 5747904 -1622296 5746712 1617608 5747096 1617712 5747256 1617768 5747376 -1615496 5744536 1622208 5746568 1615632 5735512 1615368 5744400 -1622296 5746712 1622208 5746568 1615496 5744536 1615544 5744608 -1622296 5746712 1622208 5746568 1615544 5744608 1616160 5745400 -1622208 5746568 1615496 5744536 1615544 5744608 1616160 5745400 -1615632 5735512 1622208 5746568 1622296 5746712 1625376 5746584 -1615632 5735512 1622208 5746568 1625376 5746584 1629584 5726976 -1622296 5746712 1625376 5746584 1622208 5746568 1616160 5745400 -1622296 5746712 1622880 5747168 1625376 5746584 1622208 5746568 -1622880 5747168 1623656 5747496 1625376 5746584 1622208 5746568 -1622296 5746712 1622688 5747096 1622880 5747168 1622208 5746568 -1625376 5746584 1615632 5735512 1622208 5746568 1622880 5747168 -1622296 5746712 1622880 5747168 1622208 5746568 1616160 5745400 -1622208 5746568 1615632 5735512 1615496 5744536 1615544 5744608 -1615544 5744608 1616016 5745272 1616160 5745400 1622208 5746568 -1622296 5746712 1622208 5746568 1616160 5745400 1616216 5745480 -1622208 5746568 1615544 5744608 1616160 5745400 1616216 5745480 -1622296 5746712 1622880 5747168 1622208 5746568 1616216 5745480 -1622296 5746712 1622208 5746568 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1622208 5746568 -1622296 5746712 1622208 5746568 1617512 5746992 1617608 5747096 -1622296 5746712 1622208 5746568 1617608 5747096 1617712 5747256 -1622208 5746568 1617512 5746992 1617608 5747096 1617712 5747256 -1622296 5746712 1622880 5747168 1622208 5746568 1617712 5747256 -1622208 5746568 1616216 5745480 1617512 5746992 1617608 5747096 -1622208 5746568 1616160 5745400 1616216 5745480 1617512 5746992 -1615632 5735512 1615496 5744536 1622208 5746568 1625376 5746584 -1622296 5746712 1622208 5746568 1617712 5747256 1617768 5747376 -1622296 5746712 1622208 5746568 1617768 5747376 1617848 5747624 -1622296 5746712 1622208 5746568 1617848 5747624 1617904 5747904 -1622208 5746568 1617768 5747376 1617848 5747624 1617904 5747904 -1622296 5746712 1622208 5746568 1617904 5747904 1622392 5746896 -1622208 5746568 1617608 5747096 1617712 5747256 1617768 5747376 -1622296 5746712 1622880 5747168 1622208 5746568 1617904 5747904 -1622208 5746568 1617712 5747256 1617768 5747376 1617848 5747624 -1615496 5744536 1622024 5746384 1615632 5735512 1615368 5744400 -1622208 5746568 1622024 5746384 1615496 5744536 1615544 5744608 -1622208 5746568 1622024 5746384 1615544 5744608 1616160 5745400 -1622208 5746568 1622024 5746384 1616160 5745400 1616216 5745480 -1622024 5746384 1615544 5744608 1616160 5745400 1616216 5745480 -1622024 5746384 1615496 5744536 1615544 5744608 1616160 5745400 -1615544 5744608 1616016 5745272 1616160 5745400 1622024 5746384 -1622208 5746568 1622024 5746384 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1622024 5746384 -1622024 5746384 1616160 5745400 1616216 5745480 1617512 5746992 -1622208 5746568 1622024 5746384 1617512 5746992 1617608 5747096 -1622208 5746568 1622024 5746384 1617608 5747096 1617712 5747256 -1622208 5746568 1622024 5746384 1617712 5747256 1617768 5747376 -1622024 5746384 1617608 5747096 1617712 5747256 1617768 5747376 -1622024 5746384 1617512 5746992 1617608 5747096 1617712 5747256 -1622024 5746384 1616216 5745480 1617512 5746992 1617608 5747096 -1615632 5735512 1622024 5746384 1622208 5746568 1625376 5746584 -1615632 5735512 1615496 5744536 1622024 5746384 1625376 5746584 -1615632 5735512 1622024 5746384 1625376 5746584 1629584 5726976 -1622208 5746568 1622880 5747168 1625376 5746584 1622024 5746384 -1622208 5746568 1625376 5746584 1622024 5746384 1617768 5747376 -1622024 5746384 1615632 5735512 1615496 5744536 1615544 5744608 -1622208 5746568 1622024 5746384 1617768 5747376 1617848 5747624 -1622208 5746568 1622024 5746384 1617848 5747624 1617904 5747904 -1622208 5746568 1622024 5746384 1617904 5747904 1622296 5746712 -1622024 5746384 1617848 5747624 1617904 5747904 1622296 5746712 -1617904 5747904 1622392 5746896 1622296 5746712 1622024 5746384 -1622296 5746712 1622208 5746568 1622024 5746384 1622392 5746896 -1617904 5747904 1622392 5746896 1622024 5746384 1617848 5747624 -1617904 5747904 1617896 5748024 1622392 5746896 1622024 5746384 -1622024 5746384 1617712 5747256 1617768 5747376 1617848 5747624 -1622208 5746568 1625376 5746584 1622024 5746384 1622296 5746712 -1622024 5746384 1617768 5747376 1617848 5747624 1617904 5747904 -1615632 5735512 1621920 5746224 1622024 5746384 1625376 5746584 -1621920 5746224 1615496 5744536 1622024 5746384 1625376 5746584 -1615632 5735512 1615496 5744536 1621920 5746224 1625376 5746584 -1615496 5744536 1621920 5746224 1615632 5735512 1615368 5744400 -1615632 5735512 1621920 5746224 1625376 5746584 1629584 5726976 -1622024 5746384 1622208 5746568 1625376 5746584 1621920 5746224 -1622024 5746384 1622208 5746568 1621920 5746224 1615496 5744536 -1625376 5746584 1615632 5735512 1621920 5746224 1622208 5746568 -1622208 5746568 1622880 5747168 1625376 5746584 1621920 5746224 -1622024 5746384 1621920 5746224 1615496 5744536 1615544 5744608 -1622024 5746384 1622208 5746568 1621920 5746224 1615544 5744608 -1621920 5746224 1615632 5735512 1615496 5744536 1615544 5744608 -1622024 5746384 1621920 5746224 1615544 5744608 1616160 5745400 -1622024 5746384 1622208 5746568 1621920 5746224 1616160 5745400 -1622024 5746384 1621920 5746224 1616160 5745400 1616216 5745480 -1622024 5746384 1622208 5746568 1621920 5746224 1616216 5745480 -1622024 5746384 1621920 5746224 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1621920 5746224 -1622024 5746384 1622208 5746568 1621920 5746224 1617512 5746992 -1621920 5746224 1616160 5745400 1616216 5745480 1617512 5746992 -1621920 5746224 1615544 5744608 1616160 5745400 1616216 5745480 -1615544 5744608 1616016 5745272 1616160 5745400 1621920 5746224 -1622024 5746384 1621920 5746224 1617512 5746992 1617608 5747096 -1622024 5746384 1622208 5746568 1621920 5746224 1617608 5747096 -1621920 5746224 1616216 5745480 1617512 5746992 1617608 5747096 -1622024 5746384 1621920 5746224 1617608 5747096 1617712 5747256 -1622024 5746384 1622208 5746568 1621920 5746224 1617712 5747256 -1622024 5746384 1621920 5746224 1617712 5747256 1617768 5747376 -1622024 5746384 1622208 5746568 1621920 5746224 1617768 5747376 -1622024 5746384 1621920 5746224 1617768 5747376 1617848 5747624 -1622024 5746384 1622208 5746568 1621920 5746224 1617848 5747624 -1621920 5746224 1617712 5747256 1617768 5747376 1617848 5747624 -1621920 5746224 1617608 5747096 1617712 5747256 1617768 5747376 -1621920 5746224 1617512 5746992 1617608 5747096 1617712 5747256 -1621920 5746224 1615496 5744536 1615544 5744608 1616160 5745400 -1622024 5746384 1621920 5746224 1617848 5747624 1617904 5747904 -1622024 5746384 1622208 5746568 1621920 5746224 1617904 5747904 -1622024 5746384 1621920 5746224 1617904 5747904 1622392 5746896 -1621920 5746224 1617768 5747376 1617848 5747624 1617904 5747904 -1625376 5746584 1621696 5745712 1621920 5746224 1622208 5746568 -1621696 5745712 1615632 5735512 1621920 5746224 1622208 5746568 -1621920 5746224 1621696 5745712 1615632 5735512 1615496 5744536 -1621920 5746224 1621696 5745712 1615496 5744536 1615544 5744608 -1621920 5746224 1622208 5746568 1621696 5745712 1615544 5744608 -1621696 5745712 1615632 5735512 1615496 5744536 1615544 5744608 -1621696 5745712 1625376 5746584 1615632 5735512 1615496 5744536 -1625376 5746584 1615632 5735512 1621696 5745712 1622208 5746568 -1615632 5735512 1615368 5744400 1615496 5744536 1621696 5745712 -1615496 5744536 1615544 5744608 1621696 5745712 1615368 5744400 -1615632 5735512 1615368 5744400 1621696 5745712 1625376 5746584 -1615632 5735512 1621696 5745712 1625376 5746584 1629584 5726976 -1615632 5735512 1615368 5744400 1621696 5745712 1629584 5726976 -1621696 5745712 1622208 5746568 1625376 5746584 1629584 5726976 -1615632 5735512 1621696 5745712 1629584 5726976 1629536 5726952 -1625376 5746584 1629776 5726856 1629584 5726976 1621696 5745712 -1615632 5735512 1615584 5735552 1615368 5744400 1621696 5745712 -1625376 5746584 1621696 5745712 1622208 5746568 1622880 5747168 -1621920 5746224 1622024 5746384 1622208 5746568 1621696 5745712 -1621920 5746224 1621696 5745712 1615544 5744608 1616160 5745400 -1621696 5745712 1615496 5744536 1615544 5744608 1616160 5745400 -1621920 5746224 1622208 5746568 1621696 5745712 1616160 5745400 -1621920 5746224 1621696 5745712 1616160 5745400 1616216 5745480 -1621920 5746224 1622208 5746568 1621696 5745712 1616216 5745480 -1621920 5746224 1621696 5745712 1616216 5745480 1617512 5746992 -1616216 5745480 1616232 5745520 1617512 5746992 1621696 5745712 -1621920 5746224 1622208 5746568 1621696 5745712 1617512 5746992 -1621920 5746224 1621696 5745712 1617512 5746992 1617608 5747096 -1621920 5746224 1622208 5746568 1621696 5745712 1617608 5747096 -1617512 5746992 1617608 5747096 1621696 5745712 1616232 5745520 -1621696 5745712 1616160 5745400 1616216 5745480 1616232 5745520 -1616232 5745520 1616952 5746624 1617512 5746992 1621696 5745712 -1615544 5744608 1616016 5745272 1616160 5745400 1621696 5745712 -1621920 5746224 1621696 5745712 1617608 5747096 1617712 5747256 -1621920 5746224 1622208 5746568 1621696 5745712 1617712 5747256 -1621696 5745712 1617512 5746992 1617608 5747096 1617712 5747256 -1621920 5746224 1621696 5745712 1617712 5747256 1617768 5747376 -1621920 5746224 1622208 5746568 1621696 5745712 1617768 5747376 -1621920 5746224 1621696 5745712 1617768 5747376 1617848 5747624 -1621696 5745712 1617608 5747096 1617712 5747256 1617768 5747376 -1621696 5745712 1615544 5744608 1616160 5745400 1616216 5745480 -1621696 5745712 1621704 5745648 1615632 5735512 1615368 5744400 -1621696 5745712 1629584 5726976 1621704 5745648 1615368 5744400 -1621704 5745648 1629584 5726976 1615632 5735512 1615368 5744400 -1621696 5745712 1621704 5745648 1615368 5744400 1615496 5744536 -1621696 5745712 1621704 5745648 1615496 5744536 1615544 5744608 -1621696 5745712 1621704 5745648 1615544 5744608 1616160 5745400 -1621704 5745648 1615496 5744536 1615544 5744608 1616160 5745400 -1621704 5745648 1615632 5735512 1615368 5744400 1615496 5744536 -1621696 5745712 1629584 5726976 1621704 5745648 1616160 5745400 -1621704 5745648 1615368 5744400 1615496 5744536 1615544 5744608 -1629584 5726976 1621704 5745648 1621696 5745712 1625376 5746584 -1621704 5745648 1616160 5745400 1621696 5745712 1625376 5746584 -1621696 5745712 1622208 5746568 1625376 5746584 1621704 5745648 -1621696 5745712 1621920 5746224 1622208 5746568 1621704 5745648 -1621696 5745712 1621920 5746224 1621704 5745648 1616160 5745400 -1622208 5746568 1625376 5746584 1621704 5745648 1621920 5746224 -1625376 5746584 1629584 5726976 1621704 5745648 1622208 5746568 -1615632 5735512 1621704 5745648 1629584 5726976 1629536 5726952 -1629584 5726976 1621704 5745648 1625376 5746584 1629776 5726856 -1615632 5735512 1615584 5735552 1615368 5744400 1621704 5745648 -1622208 5746568 1622880 5747168 1625376 5746584 1621704 5745648 -1615544 5744608 1616016 5745272 1616160 5745400 1621704 5745648 -1621920 5746224 1622024 5746384 1622208 5746568 1621704 5745648 -1621696 5745712 1621704 5745648 1616160 5745400 1616216 5745480 -1621704 5745648 1615544 5744608 1616160 5745400 1616216 5745480 -1621696 5745712 1621920 5746224 1621704 5745648 1616216 5745480 -1621696 5745712 1621704 5745648 1616216 5745480 1616232 5745520 -1621696 5745712 1621704 5745648 1616232 5745520 1617512 5746992 -1621696 5745712 1621920 5746224 1621704 5745648 1617512 5746992 -1621696 5745712 1621704 5745648 1617512 5746992 1617608 5747096 -1621704 5745648 1616216 5745480 1616232 5745520 1617512 5746992 -1616232 5745520 1616952 5746624 1617512 5746992 1621704 5745648 -1621704 5745648 1616160 5745400 1616216 5745480 1616232 5745520 -1629584 5726976 1615632 5735512 1621704 5745648 1625376 5746584 -1625376 5746584 1621776 5745592 1621704 5745648 1622208 5746568 -1621704 5745648 1621920 5746224 1622208 5746568 1621776 5745592 -1621704 5745648 1621696 5745712 1621920 5746224 1621776 5745592 -1621920 5746224 1622208 5746568 1621776 5745592 1621696 5745712 -1621776 5745592 1629584 5726976 1621704 5745648 1621696 5745712 -1622208 5746568 1625376 5746584 1621776 5745592 1621920 5746224 -1629584 5726976 1621776 5745592 1625376 5746584 1629776 5726856 -1625376 5746584 1621776 5745592 1622208 5746568 1622880 5747168 -1621920 5746224 1622024 5746384 1622208 5746568 1621776 5745592 -1621704 5745648 1621776 5745592 1629584 5726976 1615632 5735512 -1621704 5745648 1621776 5745592 1615632 5735512 1615368 5744400 -1621704 5745648 1621776 5745592 1615368 5744400 1615496 5744536 -1621776 5745592 1615632 5735512 1615368 5744400 1615496 5744536 -1621704 5745648 1621696 5745712 1621776 5745592 1615496 5744536 -1621704 5745648 1621776 5745592 1615496 5744536 1615544 5744608 -1621704 5745648 1621776 5745592 1615544 5744608 1616160 5745400 -1621776 5745592 1615368 5744400 1615496 5744536 1615544 5744608 -1621704 5745648 1621696 5745712 1621776 5745592 1615544 5744608 -1629584 5726976 1629536 5726952 1615632 5735512 1621776 5745592 -1615632 5735512 1615584 5735552 1615368 5744400 1621776 5745592 -1621776 5745592 1629584 5726976 1615632 5735512 1615368 5744400 -1621776 5745592 1625376 5746584 1629584 5726976 1615632 5735512 -1625376 5746584 1629584 5726976 1621776 5745592 1622208 5746568 -1629584 5726976 1622064 5745632 1625376 5746584 1629776 5726856 -1621776 5745592 1622064 5745632 1629584 5726976 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1622064 5745632 -1621776 5745592 1622064 5745632 1615632 5735512 1615368 5744400 -1621776 5745592 1625376 5746584 1622064 5745632 1615632 5735512 -1625376 5746584 1622064 5745632 1621776 5745592 1622208 5746568 -1621776 5745592 1621920 5746224 1622208 5746568 1622064 5745632 -1621776 5745592 1621696 5745712 1621920 5746224 1622064 5745632 -1621776 5745592 1621704 5745648 1621696 5745712 1622064 5745632 -1621920 5746224 1622208 5746568 1622064 5745632 1621696 5745712 -1625376 5746584 1622064 5745632 1622208 5746568 1622880 5747168 -1625376 5746584 1622064 5745632 1622880 5747168 1623656 5747496 -1622208 5746568 1622296 5746712 1622880 5747168 1622064 5745632 -1621920 5746224 1622024 5746384 1622208 5746568 1622064 5745632 -1621920 5746224 1622024 5746384 1622064 5745632 1621696 5745712 -1622064 5745632 1615632 5735512 1621776 5745592 1621696 5745712 -1622208 5746568 1622880 5747168 1622064 5745632 1622024 5746384 -1622064 5745632 1625376 5746584 1629584 5726976 1615632 5735512 -1625376 5746584 1629584 5726976 1622064 5745632 1622880 5747168 -1629584 5726976 1622160 5745616 1625376 5746584 1629776 5726856 -1622064 5745632 1622160 5745616 1629584 5726976 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1622160 5745616 -1622064 5745632 1622160 5745616 1615632 5735512 1621776 5745592 -1615632 5735512 1615368 5744400 1621776 5745592 1622160 5745616 -1622160 5745616 1629584 5726976 1615632 5735512 1621776 5745592 -1622064 5745632 1625376 5746584 1622160 5745616 1621776 5745592 -1625376 5746584 1622160 5745616 1622064 5745632 1622880 5747168 -1625376 5746584 1622160 5745616 1622880 5747168 1623656 5747496 -1622064 5745632 1622208 5746568 1622880 5747168 1622160 5745616 -1622208 5746568 1622296 5746712 1622880 5747168 1622160 5745616 -1622296 5746712 1622688 5747096 1622880 5747168 1622160 5745616 -1622208 5746568 1622296 5746712 1622160 5745616 1622064 5745632 -1622064 5745632 1622024 5746384 1622208 5746568 1622160 5745616 -1622208 5746568 1622296 5746712 1622160 5745616 1622024 5746384 -1622064 5745632 1621920 5746224 1622024 5746384 1622160 5745616 -1622064 5745632 1621696 5745712 1621920 5746224 1622160 5745616 -1622024 5746384 1622208 5746568 1622160 5745616 1621920 5746224 -1622160 5745616 1621776 5745592 1622064 5745632 1621920 5746224 -1625376 5746584 1629584 5726976 1622160 5745616 1622880 5747168 -1622880 5747168 1625376 5746584 1622160 5745616 1622296 5746712 -1622160 5745616 1625376 5746584 1629584 5726976 1615632 5735512 -1629584 5726976 1622328 5745496 1625376 5746584 1629776 5726856 -1625376 5746584 1622328 5745496 1622160 5745616 1622880 5747168 -1625376 5746584 1622328 5745496 1622880 5747168 1623656 5747496 -1622880 5747168 1623152 5747352 1623656 5747496 1622328 5745496 -1625376 5746584 1622328 5745496 1623656 5747496 1623904 5747528 -1622328 5745496 1629584 5726976 1622160 5745616 1622880 5747168 -1622328 5745496 1622160 5745616 1622880 5747168 1623656 5747496 -1622160 5745616 1622296 5746712 1622880 5747168 1622328 5745496 -1622296 5746712 1622688 5747096 1622880 5747168 1622328 5745496 -1622160 5745616 1622208 5746568 1622296 5746712 1622328 5745496 -1622160 5745616 1622024 5746384 1622208 5746568 1622328 5745496 -1622160 5745616 1622208 5746568 1622328 5745496 1629584 5726976 -1622880 5747168 1623656 5747496 1622328 5745496 1622296 5746712 -1622296 5746712 1622880 5747168 1622328 5745496 1622208 5746568 -1622160 5745616 1622328 5745496 1629584 5726976 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1622328 5745496 -1622160 5745616 1622328 5745496 1615632 5735512 1621776 5745592 -1615632 5735512 1615368 5744400 1621776 5745592 1622328 5745496 -1622160 5745616 1622328 5745496 1621776 5745592 1622064 5745632 -1622328 5745496 1615632 5735512 1621776 5745592 1622064 5745632 -1622160 5745616 1622208 5746568 1622328 5745496 1622064 5745632 -1622328 5745496 1625376 5746584 1629584 5726976 1615632 5735512 -1622328 5745496 1629584 5726976 1615632 5735512 1621776 5745592 -1625376 5746584 1629584 5726976 1622328 5745496 1623656 5747496 -1615632 5735512 1622336 5745456 1629584 5726976 1629536 5726952 -1629584 5726976 1622336 5745456 1622328 5745496 1625376 5746584 -1629584 5726976 1622336 5745456 1625376 5746584 1629776 5726856 -1622328 5745496 1622336 5745456 1615632 5735512 1621776 5745592 -1615632 5735512 1615368 5744400 1621776 5745592 1622336 5745456 -1622328 5745496 1622336 5745456 1621776 5745592 1622064 5745632 -1622328 5745496 1622336 5745456 1622064 5745632 1622160 5745616 -1622336 5745456 1621776 5745592 1622064 5745632 1622160 5745616 -1622336 5745456 1615632 5735512 1621776 5745592 1622064 5745632 -1622328 5745496 1623656 5747496 1625376 5746584 1622336 5745456 -1622336 5745456 1622160 5745616 1622328 5745496 1625376 5746584 -1622336 5745456 1629584 5726976 1615632 5735512 1621776 5745592 -1629584 5726976 1615632 5735512 1622336 5745456 1625376 5746584 -1615632 5735512 1622288 5745376 1629584 5726976 1629536 5726952 -1622336 5745456 1622288 5745376 1615632 5735512 1621776 5745592 -1615632 5735512 1615368 5744400 1621776 5745592 1622288 5745376 -1622336 5745456 1622288 5745376 1621776 5745592 1622064 5745632 -1622336 5745456 1622288 5745376 1622064 5745632 1622160 5745616 -1622336 5745456 1622288 5745376 1622160 5745616 1622328 5745496 -1622288 5745376 1622064 5745632 1622160 5745616 1622328 5745496 -1622288 5745376 1621776 5745592 1622064 5745632 1622160 5745616 -1622288 5745376 1615632 5735512 1621776 5745592 1622064 5745632 -1622336 5745456 1629584 5726976 1622288 5745376 1622328 5745496 -1629584 5726976 1622288 5745376 1622336 5745456 1625376 5746584 -1629584 5726976 1622288 5745376 1625376 5746584 1629776 5726856 -1622336 5745456 1622328 5745496 1625376 5746584 1622288 5745376 -1622288 5745376 1622328 5745496 1622336 5745456 1625376 5746584 -1622288 5745376 1629584 5726976 1615632 5735512 1621776 5745592 -1629584 5726976 1615632 5735512 1622288 5745376 1625376 5746584 -1615632 5735512 1622216 5745152 1629584 5726976 1629536 5726952 -1622288 5745376 1622216 5745152 1615632 5735512 1621776 5745592 -1615632 5735512 1615368 5744400 1621776 5745592 1622216 5745152 -1615368 5744400 1615496 5744536 1621776 5745592 1622216 5745152 -1615496 5744536 1615544 5744608 1621776 5745592 1622216 5745152 -1615496 5744536 1615544 5744608 1622216 5745152 1615368 5744400 -1615544 5744608 1621704 5745648 1621776 5745592 1622216 5745152 -1615544 5744608 1616160 5745400 1621704 5745648 1622216 5745152 -1615544 5744608 1621704 5745648 1622216 5745152 1615496 5744536 -1615632 5735512 1615584 5735552 1615368 5744400 1622216 5745152 -1615584 5735552 1613528 5743008 1615368 5744400 1622216 5745152 -1615368 5744400 1615496 5744536 1622216 5745152 1615584 5735552 -1622288 5745376 1622216 5745152 1621776 5745592 1622064 5745632 -1622288 5745376 1622216 5745152 1622064 5745632 1622160 5745616 -1621776 5745592 1622064 5745632 1622216 5745152 1621704 5745648 -1622288 5745376 1629584 5726976 1622216 5745152 1622064 5745632 -1629584 5726976 1622216 5745152 1622288 5745376 1625376 5746584 -1629584 5726976 1622216 5745152 1625376 5746584 1629776 5726856 -1622288 5745376 1622336 5745456 1625376 5746584 1622216 5745152 -1622336 5745456 1622328 5745496 1625376 5746584 1622216 5745152 -1622216 5745152 1622064 5745632 1622288 5745376 1622336 5745456 -1625376 5746584 1629584 5726976 1622216 5745152 1622336 5745456 -1622216 5745152 1629584 5726976 1615632 5735512 1615584 5735552 -1629584 5726976 1615632 5735512 1622216 5745152 1625376 5746584 -1615632 5735512 1622232 5745080 1629584 5726976 1629536 5726952 -1622216 5745152 1622232 5745080 1615632 5735512 1615584 5735552 -1622216 5745152 1622232 5745080 1615584 5735552 1615368 5744400 -1615584 5735552 1613528 5743008 1615368 5744400 1622232 5745080 -1622216 5745152 1622232 5745080 1615368 5744400 1615496 5744536 -1622216 5745152 1622232 5745080 1615496 5744536 1615544 5744608 -1622216 5745152 1622232 5745080 1615544 5744608 1621704 5745648 -1615544 5744608 1616160 5745400 1621704 5745648 1622232 5745080 -1616160 5745400 1616216 5745480 1621704 5745648 1622232 5745080 -1621704 5745648 1622216 5745152 1622232 5745080 1616160 5745400 -1622232 5745080 1615496 5744536 1615544 5744608 1616160 5745400 -1622216 5745152 1622232 5745080 1621704 5745648 1621776 5745592 -1622232 5745080 1616160 5745400 1621704 5745648 1621776 5745592 -1622232 5745080 1615584 5735552 1615368 5744400 1615496 5744536 -1615544 5744608 1616016 5745272 1616160 5745400 1622232 5745080 -1622232 5745080 1615368 5744400 1615496 5744536 1615544 5744608 -1622216 5745152 1622232 5745080 1621776 5745592 1622064 5745632 -1622232 5745080 1615632 5735512 1615584 5735552 1615368 5744400 -1622216 5745152 1629584 5726976 1622232 5745080 1621776 5745592 -1629584 5726976 1622232 5745080 1622216 5745152 1625376 5746584 -1629584 5726976 1622232 5745080 1625376 5746584 1629776 5726856 -1622216 5745152 1622336 5745456 1625376 5746584 1622232 5745080 -1622336 5745456 1622328 5745496 1625376 5746584 1622232 5745080 -1622216 5745152 1622288 5745376 1622336 5745456 1622232 5745080 -1622336 5745456 1625376 5746584 1622232 5745080 1622288 5745376 -1622232 5745080 1621776 5745592 1622216 5745152 1622288 5745376 -1625376 5746584 1629584 5726976 1622232 5745080 1622336 5745456 -1622232 5745080 1629584 5726976 1615632 5735512 1615584 5735552 -1629584 5726976 1615632 5735512 1622232 5745080 1625376 5746584 -1629584 5726976 1622288 5745000 1625376 5746584 1629776 5726856 -1625376 5746584 1622288 5745000 1622232 5745080 1622336 5745456 -1625376 5746584 1622288 5745000 1622336 5745456 1622328 5745496 -1622232 5745080 1622288 5745376 1622336 5745456 1622288 5745000 -1622232 5745080 1622216 5745152 1622288 5745376 1622288 5745000 -1622288 5745376 1622336 5745456 1622288 5745000 1622216 5745152 -1622336 5745456 1625376 5746584 1622288 5745000 1622288 5745376 -1622288 5745000 1629584 5726976 1622232 5745080 1622216 5745152 -1622232 5745080 1622288 5745000 1629584 5726976 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1622288 5745000 -1622232 5745080 1622288 5745000 1615632 5735512 1615584 5735552 -1622232 5745080 1622288 5745000 1615584 5735552 1615368 5744400 -1622232 5745080 1622288 5745000 1615368 5744400 1615496 5744536 -1615584 5735552 1613528 5743008 1615368 5744400 1622288 5745000 -1622232 5745080 1622288 5745000 1615496 5744536 1615544 5744608 -1622232 5745080 1622288 5745000 1615544 5744608 1616160 5745400 -1622232 5745080 1622288 5745000 1616160 5745400 1621704 5745648 -1616160 5745400 1616216 5745480 1621704 5745648 1622288 5745000 -1622232 5745080 1622288 5745000 1621704 5745648 1621776 5745592 -1622288 5745000 1615544 5744608 1616160 5745400 1621704 5745648 -1622288 5745000 1615368 5744400 1615496 5744536 1615544 5744608 -1615544 5744608 1616016 5745272 1616160 5745400 1622288 5745000 -1622288 5745000 1615496 5744536 1615544 5744608 1616160 5745400 -1622288 5745000 1615584 5735552 1615368 5744400 1615496 5744536 -1622288 5745000 1615632 5735512 1615584 5735552 1615368 5744400 -1622232 5745080 1622216 5745152 1622288 5745000 1621704 5745648 -1622288 5745000 1629584 5726976 1615632 5735512 1615584 5735552 -1622288 5745000 1625376 5746584 1629584 5726976 1615632 5735512 -1625376 5746584 1629584 5726976 1622288 5745000 1622336 5745456 -1629584 5726976 1622352 5744936 1625376 5746584 1629776 5726856 -1622288 5745000 1622352 5744936 1629584 5726976 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1622352 5744936 -1622288 5745000 1622352 5744936 1615632 5735512 1615584 5735552 -1622288 5745000 1622352 5744936 1615584 5735552 1615368 5744400 -1615584 5735552 1613528 5743008 1615368 5744400 1622352 5744936 -1622288 5745000 1622352 5744936 1615368 5744400 1615496 5744536 -1622288 5745000 1622352 5744936 1615496 5744536 1615544 5744608 -1622352 5744936 1615584 5735552 1615368 5744400 1615496 5744536 -1622352 5744936 1615632 5735512 1615584 5735552 1615368 5744400 -1622352 5744936 1629584 5726976 1615632 5735512 1615584 5735552 -1622288 5745000 1625376 5746584 1622352 5744936 1615496 5744536 -1625376 5746584 1622352 5744936 1622288 5745000 1622336 5745456 -1625376 5746584 1622352 5744936 1622336 5745456 1622328 5745496 -1625376 5746584 1629584 5726976 1622352 5744936 1622336 5745456 -1622288 5745000 1622288 5745376 1622336 5745456 1622352 5744936 -1622288 5745000 1622216 5745152 1622288 5745376 1622352 5744936 -1622352 5744936 1615496 5744536 1622288 5745000 1622288 5745376 -1622336 5745456 1625376 5746584 1622352 5744936 1622288 5745376 -1622352 5744936 1625376 5746584 1629584 5726976 1615632 5735512 -1629584 5726976 1622528 5744936 1625376 5746584 1629776 5726856 -1625376 5746584 1622528 5744936 1622352 5744936 1622336 5745456 -1625376 5746584 1622528 5744936 1622336 5745456 1622328 5745496 -1622528 5744936 1629584 5726976 1622352 5744936 1622336 5745456 -1625376 5746584 1629584 5726976 1622528 5744936 1622336 5745456 -1622352 5744936 1622288 5745376 1622336 5745456 1622528 5744936 -1622352 5744936 1622288 5745376 1622528 5744936 1629584 5726976 -1622336 5745456 1625376 5746584 1622528 5744936 1622288 5745376 -1622352 5744936 1622288 5745000 1622288 5745376 1622528 5744936 -1622352 5744936 1622288 5745000 1622528 5744936 1629584 5726976 -1622288 5745000 1622216 5745152 1622288 5745376 1622528 5744936 -1622288 5745000 1622232 5745080 1622216 5745152 1622528 5744936 -1622288 5745000 1622216 5745152 1622528 5744936 1622352 5744936 -1622288 5745376 1622336 5745456 1622528 5744936 1622216 5745152 -1622352 5744936 1622528 5744936 1629584 5726976 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1622528 5744936 -1622352 5744936 1622288 5745000 1622528 5744936 1615632 5735512 -1622528 5744936 1625376 5746584 1629584 5726976 1615632 5735512 -1622352 5744936 1622528 5744936 1615632 5735512 1615584 5735552 -1629584 5726976 1622576 5744960 1625376 5746584 1629776 5726856 -1622528 5744936 1622576 5744960 1629584 5726976 1615632 5735512 -1625376 5746584 1622576 5744960 1622528 5744936 1622336 5745456 -1625376 5746584 1622576 5744960 1622336 5745456 1622328 5745496 -1622528 5744936 1622288 5745376 1622336 5745456 1622576 5744960 -1622576 5744960 1629584 5726976 1622528 5744936 1622288 5745376 -1622576 5744960 1622288 5745376 1622336 5745456 1622328 5745496 -1625376 5746584 1629584 5726976 1622576 5744960 1622328 5745496 -1625376 5746584 1622576 5744960 1622328 5745496 1623656 5747496 -1622328 5745496 1622880 5747168 1623656 5747496 1622576 5744960 -1625376 5746584 1622576 5744960 1623656 5747496 1623904 5747528 -1622576 5744960 1622336 5745456 1622328 5745496 1623656 5747496 -1625376 5746584 1629584 5726976 1622576 5744960 1623656 5747496 -1622528 5744936 1622216 5745152 1622288 5745376 1622576 5744960 -1622288 5745376 1622336 5745456 1622576 5744960 1622216 5745152 -1622528 5744936 1622216 5745152 1622576 5744960 1629584 5726976 -1622528 5744936 1622288 5745000 1622216 5745152 1622576 5744960 -1622528 5744936 1622288 5745000 1622576 5744960 1629584 5726976 -1622288 5745000 1622232 5745080 1622216 5745152 1622576 5744960 -1622528 5744936 1622352 5744936 1622288 5745000 1622576 5744960 -1622216 5745152 1622288 5745376 1622576 5744960 1622288 5745000 -1629584 5726976 1622680 5744976 1625376 5746584 1629776 5726856 -1622576 5744960 1622680 5744976 1629584 5726976 1622528 5744936 -1629584 5726976 1615632 5735512 1622528 5744936 1622680 5744976 -1629584 5726976 1629536 5726952 1615632 5735512 1622680 5744976 -1622528 5744936 1622576 5744960 1622680 5744976 1615632 5735512 -1622576 5744960 1625376 5746584 1622680 5744976 1622528 5744936 -1625376 5746584 1622680 5744976 1622576 5744960 1623656 5747496 -1625376 5746584 1622680 5744976 1623656 5747496 1623904 5747528 -1622680 5744976 1622528 5744936 1622576 5744960 1623656 5747496 -1622680 5744976 1625376 5746584 1629584 5726976 1615632 5735512 -1625376 5746584 1629584 5726976 1622680 5744976 1623656 5747496 -1622576 5744960 1622328 5745496 1623656 5747496 1622680 5744976 -1622328 5745496 1622880 5747168 1623656 5747496 1622680 5744976 -1622880 5747168 1623152 5747352 1623656 5747496 1622680 5744976 -1622328 5745496 1622296 5746712 1622880 5747168 1622680 5744976 -1622576 5744960 1622336 5745456 1622328 5745496 1622680 5744976 -1622576 5744960 1622288 5745376 1622336 5745456 1622680 5744976 -1622576 5744960 1622336 5745456 1622680 5744976 1622528 5744936 -1623656 5747496 1625376 5746584 1622680 5744976 1622880 5747168 -1622328 5745496 1622880 5747168 1622680 5744976 1622336 5745456 -1615632 5735512 1622352 5744936 1622528 5744936 1622680 5744976 -1629584 5726976 1622816 5745056 1625376 5746584 1629776 5726856 -1622680 5744976 1622816 5745056 1629584 5726976 1615632 5735512 -1625376 5746584 1622816 5745056 1622680 5744976 1623656 5747496 -1625376 5746584 1622816 5745056 1623656 5747496 1623904 5747528 -1625376 5746584 1622816 5745056 1623904 5747528 1624208 5747632 -1622680 5744976 1622880 5747168 1623656 5747496 1622816 5745056 -1622880 5747168 1623152 5747352 1623656 5747496 1622816 5745056 -1622680 5744976 1622328 5745496 1622880 5747168 1622816 5745056 -1622328 5745496 1622296 5746712 1622880 5747168 1622816 5745056 -1622880 5747168 1623656 5747496 1622816 5745056 1622328 5745496 -1622816 5745056 1629584 5726976 1622680 5744976 1622328 5745496 -1622816 5745056 1622880 5747168 1623656 5747496 1623904 5747528 -1625376 5746584 1629584 5726976 1622816 5745056 1623904 5747528 -1622680 5744976 1622336 5745456 1622328 5745496 1622816 5745056 -1622328 5745496 1622880 5747168 1622816 5745056 1622336 5745456 -1622680 5744976 1622576 5744960 1622336 5745456 1622816 5745056 -1622680 5744976 1622336 5745456 1622816 5745056 1629584 5726976 -1629584 5726976 1622936 5745096 1625376 5746584 1629776 5726856 -1622816 5745056 1622936 5745096 1629584 5726976 1622680 5744976 -1629584 5726976 1615632 5735512 1622680 5744976 1622936 5745096 -1622816 5745056 1625376 5746584 1622936 5745096 1622680 5744976 -1625376 5746584 1622936 5745096 1622816 5745056 1623904 5747528 -1625376 5746584 1622936 5745096 1623904 5747528 1624208 5747632 -1625376 5746584 1629584 5726976 1622936 5745096 1623904 5747528 -1622816 5745056 1623656 5747496 1623904 5747528 1622936 5745096 -1622816 5745056 1622880 5747168 1623656 5747496 1622936 5745096 -1622880 5747168 1623152 5747352 1623656 5747496 1622936 5745096 -1623152 5747352 1623264 5747416 1623656 5747496 1622936 5745096 -1623656 5747496 1623904 5747528 1622936 5745096 1623152 5747352 -1622816 5745056 1622328 5745496 1622880 5747168 1622936 5745096 -1622816 5745056 1622336 5745456 1622328 5745496 1622936 5745096 -1622328 5745496 1622296 5746712 1622880 5747168 1622936 5745096 -1622296 5746712 1622688 5747096 1622880 5747168 1622936 5745096 -1622328 5745496 1622208 5746568 1622296 5746712 1622936 5745096 -1622328 5745496 1622296 5746712 1622936 5745096 1622336 5745456 -1622880 5747168 1623152 5747352 1622936 5745096 1622296 5746712 -1622936 5745096 1622680 5744976 1622816 5745056 1622336 5745456 -1623904 5747528 1625376 5746584 1622936 5745096 1623656 5747496 -1622936 5745096 1625376 5746584 1629584 5726976 1622680 5744976 -1622816 5745056 1622680 5744976 1622336 5745456 1622936 5745096 -1629584 5726976 1623008 5745080 1625376 5746584 1629776 5726856 -1625376 5746584 1623008 5745080 1622936 5745096 1623904 5747528 -1625376 5746584 1623008 5745080 1623904 5747528 1624208 5747632 -1625376 5746584 1629584 5726976 1623008 5745080 1623904 5747528 -1622936 5745096 1623656 5747496 1623904 5747528 1623008 5745080 -1623904 5747528 1625376 5746584 1623008 5745080 1623656 5747496 -1622936 5745096 1623152 5747352 1623656 5747496 1623008 5745080 -1623152 5747352 1623264 5747416 1623656 5747496 1623008 5745080 -1622936 5745096 1622880 5747168 1623152 5747352 1623008 5745080 -1623152 5747352 1623656 5747496 1623008 5745080 1622880 5747168 -1622936 5745096 1622296 5746712 1622880 5747168 1623008 5745080 -1622880 5747168 1623152 5747352 1623008 5745080 1622296 5746712 -1622296 5746712 1622688 5747096 1622880 5747168 1623008 5745080 -1622936 5745096 1622328 5745496 1622296 5746712 1623008 5745080 -1623656 5747496 1623904 5747528 1623008 5745080 1623152 5747352 -1622936 5745096 1623008 5745080 1629584 5726976 1622680 5744976 -1623008 5745080 1625376 5746584 1629584 5726976 1622680 5744976 -1629584 5726976 1615632 5735512 1622680 5744976 1623008 5745080 -1622936 5745096 1623008 5745080 1622680 5744976 1622816 5745056 -1623008 5745080 1629584 5726976 1622680 5744976 1622816 5745056 -1623008 5745080 1622816 5745056 1622936 5745096 1622296 5746712 -1629584 5726976 1623128 5745016 1625376 5746584 1629776 5726856 -1623008 5745080 1623128 5745016 1629584 5726976 1622680 5744976 -1623008 5745080 1625376 5746584 1623128 5745016 1622680 5744976 -1625376 5746584 1623128 5745016 1623008 5745080 1623904 5747528 -1625376 5746584 1623128 5745016 1623904 5747528 1624208 5747632 -1623008 5745080 1623656 5747496 1623904 5747528 1623128 5745016 -1623128 5745016 1622680 5744976 1623008 5745080 1623656 5747496 -1623904 5747528 1625376 5746584 1623128 5745016 1623656 5747496 -1623128 5745016 1625376 5746584 1629584 5726976 1622680 5744976 -1625376 5746584 1629584 5726976 1623128 5745016 1623904 5747528 -1629584 5726976 1615632 5735512 1622680 5744976 1623128 5745016 -1629584 5726976 1629536 5726952 1615632 5735512 1623128 5745016 -1622680 5744976 1623008 5745080 1623128 5745016 1615632 5735512 -1629584 5726976 1615632 5735512 1623128 5745016 1625376 5746584 -1615632 5735512 1622528 5744936 1622680 5744976 1623128 5745016 -1622680 5744976 1623008 5745080 1623128 5745016 1622528 5744936 -1622528 5744936 1622576 5744960 1622680 5744976 1623128 5745016 -1615632 5735512 1622528 5744936 1623128 5745016 1629584 5726976 -1623008 5745080 1623152 5747352 1623656 5747496 1623128 5745016 -1623152 5747352 1623264 5747416 1623656 5747496 1623128 5745016 -1623656 5747496 1623904 5747528 1623128 5745016 1623152 5747352 -1623008 5745080 1623152 5747352 1623128 5745016 1622680 5744976 -1623008 5745080 1622880 5747168 1623152 5747352 1623128 5745016 -1623008 5745080 1622880 5747168 1623128 5745016 1622680 5744976 -1623008 5745080 1622296 5746712 1622880 5747168 1623128 5745016 -1623152 5747352 1623656 5747496 1623128 5745016 1622880 5747168 -1623008 5745080 1623128 5745016 1622680 5744976 1622816 5745056 -1623128 5745016 1622528 5744936 1622680 5744976 1622816 5745056 -1623008 5745080 1622880 5747168 1623128 5745016 1622816 5745056 -1623008 5745080 1623128 5745016 1622816 5745056 1622936 5745096 -1615632 5735512 1622352 5744936 1622528 5744936 1623128 5745016 -1629584 5726976 1623224 5745048 1625376 5746584 1629776 5726856 -1623128 5745016 1623224 5745048 1629584 5726976 1615632 5735512 -1625376 5746584 1623224 5745048 1623128 5745016 1623904 5747528 -1625376 5746584 1623224 5745048 1623904 5747528 1624208 5747632 -1623128 5745016 1623656 5747496 1623904 5747528 1623224 5745048 -1623128 5745016 1623152 5747352 1623656 5747496 1623224 5745048 -1623152 5747352 1623264 5747416 1623656 5747496 1623224 5745048 -1623656 5747496 1623904 5747528 1623224 5745048 1623152 5747352 -1623224 5745048 1629584 5726976 1623128 5745016 1623152 5747352 -1623904 5747528 1625376 5746584 1623224 5745048 1623656 5747496 -1625376 5746584 1629584 5726976 1623224 5745048 1623904 5747528 -1623128 5745016 1622880 5747168 1623152 5747352 1623224 5745048 -1623152 5747352 1623656 5747496 1623224 5745048 1622880 5747168 -1623128 5745016 1622880 5747168 1623224 5745048 1629584 5726976 -1623128 5745016 1623008 5745080 1622880 5747168 1623224 5745048 -1623128 5745016 1623008 5745080 1623224 5745048 1629584 5726976 -1623008 5745080 1622296 5746712 1622880 5747168 1623224 5745048 -1622880 5747168 1623152 5747352 1623224 5745048 1623008 5745080 -1625376 5746584 1623240 5745072 1623904 5747528 1624208 5747632 -1623904 5747528 1623240 5745072 1623224 5745048 1623656 5747496 -1623224 5745048 1623152 5747352 1623656 5747496 1623240 5745072 -1623152 5747352 1623264 5747416 1623656 5747496 1623240 5745072 -1623224 5745048 1622880 5747168 1623152 5747352 1623240 5745072 -1623152 5747352 1623656 5747496 1623240 5745072 1622880 5747168 -1623656 5747496 1623904 5747528 1623240 5745072 1623152 5747352 -1623240 5745072 1625376 5746584 1623224 5745048 1622880 5747168 -1623224 5745048 1623240 5745072 1625376 5746584 1629584 5726976 -1623904 5747528 1625376 5746584 1623240 5745072 1623656 5747496 -1623224 5745048 1623008 5745080 1622880 5747168 1623240 5745072 -1622880 5747168 1623152 5747352 1623240 5745072 1623008 5745080 -1623224 5745048 1623008 5745080 1623240 5745072 1625376 5746584 -1623008 5745080 1622296 5746712 1622880 5747168 1623240 5745072 -1622880 5747168 1623152 5747352 1623240 5745072 1622296 5746712 -1622296 5746712 1622688 5747096 1622880 5747168 1623240 5745072 -1623224 5745048 1623128 5745016 1623008 5745080 1623240 5745072 -1623224 5745048 1623128 5745016 1623240 5745072 1625376 5746584 -1623008 5745080 1622936 5745096 1622296 5746712 1623240 5745072 -1622296 5746712 1622880 5747168 1623240 5745072 1622936 5745096 -1622936 5745096 1622328 5745496 1622296 5746712 1623240 5745072 -1622296 5746712 1622880 5747168 1623240 5745072 1622328 5745496 -1622328 5745496 1622208 5746568 1622296 5746712 1623240 5745072 -1622936 5745096 1622336 5745456 1622328 5745496 1623240 5745072 -1622936 5745096 1622328 5745496 1623240 5745072 1623008 5745080 -1623008 5745080 1622936 5745096 1623240 5745072 1623128 5745016 -1623224 5745048 1623336 5745136 1625376 5746584 1629584 5726976 -1625376 5746584 1629776 5726856 1629584 5726976 1623336 5745136 -1623224 5745048 1623336 5745136 1629584 5726976 1623128 5745016 -1623224 5745048 1623240 5745072 1623336 5745136 1629584 5726976 -1623336 5745136 1623240 5745072 1625376 5746584 1629584 5726976 -1625376 5746584 1623336 5745136 1623240 5745072 1623904 5747528 -1625376 5746584 1623336 5745136 1623904 5747528 1624208 5747632 -1623336 5745136 1623224 5745048 1623240 5745072 1623904 5747528 -1623240 5745072 1623656 5747496 1623904 5747528 1623336 5745136 -1623240 5745072 1623152 5747352 1623656 5747496 1623336 5745136 -1623152 5747352 1623264 5747416 1623656 5747496 1623336 5745136 -1623240 5745072 1622880 5747168 1623152 5747352 1623336 5745136 -1623240 5745072 1622296 5746712 1622880 5747168 1623336 5745136 -1622880 5747168 1623152 5747352 1623336 5745136 1622296 5746712 -1623152 5747352 1623656 5747496 1623336 5745136 1622880 5747168 -1623240 5745072 1622296 5746712 1623336 5745136 1623224 5745048 -1623656 5747496 1623904 5747528 1623336 5745136 1623152 5747352 -1625376 5746584 1629584 5726976 1623336 5745136 1623904 5747528 -1623904 5747528 1625376 5746584 1623336 5745136 1623656 5747496 -1623240 5745072 1622328 5745496 1622296 5746712 1623336 5745136 -1622296 5746712 1622880 5747168 1623336 5745136 1622328 5745496 -1623240 5745072 1622328 5745496 1623336 5745136 1623224 5745048 -1622296 5746712 1622688 5747096 1622880 5747168 1623336 5745136 -1623240 5745072 1622936 5745096 1622328 5745496 1623336 5745136 -1623240 5745072 1622936 5745096 1623336 5745136 1623224 5745048 -1622328 5745496 1622296 5746712 1623336 5745136 1622936 5745096 -1622328 5745496 1622208 5746568 1622296 5746712 1623336 5745136 -1622936 5745096 1622336 5745456 1622328 5745496 1623336 5745136 -1623240 5745072 1623008 5745080 1622936 5745096 1623336 5745136 -1623240 5745072 1623008 5745080 1623336 5745136 1623224 5745048 -1622936 5745096 1622328 5745496 1623336 5745136 1623008 5745080 -1623240 5745072 1623128 5745016 1623008 5745080 1623336 5745136 -1629584 5726976 1623528 5745200 1625376 5746584 1629776 5726856 -1623336 5745136 1623528 5745200 1629584 5726976 1623224 5745048 -1629584 5726976 1623128 5745016 1623224 5745048 1623528 5745200 -1623336 5745136 1623528 5745200 1623224 5745048 1623240 5745072 -1623336 5745136 1625376 5746584 1623528 5745200 1623224 5745048 -1625376 5746584 1623528 5745200 1623336 5745136 1623904 5747528 -1625376 5746584 1623528 5745200 1623904 5747528 1624208 5747632 -1623528 5745200 1623224 5745048 1623336 5745136 1623904 5747528 -1623336 5745136 1623656 5747496 1623904 5747528 1623528 5745200 -1623336 5745136 1623152 5747352 1623656 5747496 1623528 5745200 -1623152 5747352 1623264 5747416 1623656 5747496 1623528 5745200 -1623336 5745136 1622880 5747168 1623152 5747352 1623528 5745200 -1623336 5745136 1622296 5746712 1622880 5747168 1623528 5745200 -1623336 5745136 1622328 5745496 1622296 5746712 1623528 5745200 -1622296 5746712 1622880 5747168 1623528 5745200 1622328 5745496 -1622880 5747168 1623152 5747352 1623528 5745200 1622296 5746712 -1623152 5747352 1623656 5747496 1623528 5745200 1622880 5747168 -1623336 5745136 1622328 5745496 1623528 5745200 1623224 5745048 -1623904 5747528 1625376 5746584 1623528 5745200 1623656 5747496 -1623656 5747496 1623904 5747528 1623528 5745200 1623152 5747352 -1623336 5745136 1622936 5745096 1622328 5745496 1623528 5745200 -1622296 5746712 1622688 5747096 1622880 5747168 1623528 5745200 -1623528 5745200 1625376 5746584 1629584 5726976 1623224 5745048 -1625376 5746584 1629584 5726976 1623528 5745200 1623904 5747528 -1622328 5745496 1622208 5746568 1622296 5746712 1623528 5745200 -1629584 5726976 1623592 5745240 1625376 5746584 1629776 5726856 -1623528 5745200 1623592 5745240 1629584 5726976 1623224 5745048 -1625376 5746584 1623592 5745240 1623528 5745200 1623904 5747528 -1625376 5746584 1623592 5745240 1623904 5747528 1624208 5747632 -1623528 5745200 1623656 5747496 1623904 5747528 1623592 5745240 -1623528 5745200 1623152 5747352 1623656 5747496 1623592 5745240 -1623152 5747352 1623264 5747416 1623656 5747496 1623592 5745240 -1623528 5745200 1622880 5747168 1623152 5747352 1623592 5745240 -1623528 5745200 1622296 5746712 1622880 5747168 1623592 5745240 -1623528 5745200 1622328 5745496 1622296 5746712 1623592 5745240 -1623528 5745200 1623336 5745136 1622328 5745496 1623592 5745240 -1622328 5745496 1622296 5746712 1623592 5745240 1623336 5745136 -1622296 5746712 1622880 5747168 1623592 5745240 1622328 5745496 -1622880 5747168 1623152 5747352 1623592 5745240 1622296 5746712 -1623656 5747496 1623904 5747528 1623592 5745240 1623152 5747352 -1623152 5747352 1623656 5747496 1623592 5745240 1622880 5747168 -1623336 5745136 1622936 5745096 1622328 5745496 1623592 5745240 -1622296 5746712 1622688 5747096 1622880 5747168 1623592 5745240 -1623592 5745240 1629584 5726976 1623528 5745200 1623336 5745136 -1623904 5747528 1625376 5746584 1623592 5745240 1623656 5747496 -1625376 5746584 1629584 5726976 1623592 5745240 1623904 5747528 -1622328 5745496 1622208 5746568 1622296 5746712 1623592 5745240 -1629584 5726976 1623640 5745232 1625376 5746584 1629776 5726856 -1623592 5745240 1623640 5745232 1629584 5726976 1623528 5745200 -1629584 5726976 1623224 5745048 1623528 5745200 1623640 5745232 -1629584 5726976 1623128 5745016 1623224 5745048 1623640 5745232 -1623224 5745048 1623336 5745136 1623528 5745200 1623640 5745232 -1623528 5745200 1623592 5745240 1623640 5745232 1623224 5745048 -1623592 5745240 1625376 5746584 1623640 5745232 1623528 5745200 -1625376 5746584 1623640 5745232 1623592 5745240 1623904 5747528 -1625376 5746584 1623640 5745232 1623904 5747528 1624208 5747632 -1623592 5745240 1623656 5747496 1623904 5747528 1623640 5745232 -1623592 5745240 1623152 5747352 1623656 5747496 1623640 5745232 -1623640 5745232 1623528 5745200 1623592 5745240 1623656 5747496 -1623904 5747528 1625376 5746584 1623640 5745232 1623656 5747496 -1623640 5745232 1625376 5746584 1629584 5726976 1623224 5745048 -1625376 5746584 1629584 5726976 1623640 5745232 1623904 5747528 -1625376 5746584 1623792 5745368 1623904 5747528 1624208 5747632 -1623904 5747528 1623792 5745368 1623640 5745232 1623656 5747496 -1623640 5745232 1623592 5745240 1623656 5747496 1623792 5745368 -1623592 5745240 1623152 5747352 1623656 5747496 1623792 5745368 -1623152 5747352 1623264 5747416 1623656 5747496 1623792 5745368 -1623592 5745240 1622880 5747168 1623152 5747352 1623792 5745368 -1623592 5745240 1622296 5746712 1622880 5747168 1623792 5745368 -1623592 5745240 1622328 5745496 1622296 5746712 1623792 5745368 -1623152 5747352 1623656 5747496 1623792 5745368 1622880 5747168 -1622880 5747168 1623152 5747352 1623792 5745368 1622296 5746712 -1622296 5746712 1622688 5747096 1622880 5747168 1623792 5745368 -1623592 5745240 1622296 5746712 1623792 5745368 1623640 5745232 -1623656 5747496 1623904 5747528 1623792 5745368 1623152 5747352 -1623792 5745368 1625376 5746584 1623640 5745232 1623592 5745240 -1623640 5745232 1623792 5745368 1625376 5746584 1629584 5726976 -1625376 5746584 1629776 5726856 1629584 5726976 1623792 5745368 -1623640 5745232 1623792 5745368 1629584 5726976 1623224 5745048 -1623640 5745232 1623592 5745240 1623792 5745368 1629584 5726976 -1623792 5745368 1623904 5747528 1625376 5746584 1629584 5726976 -1623904 5747528 1625376 5746584 1623792 5745368 1623656 5747496 -1629584 5726976 1623896 5745384 1625376 5746584 1629776 5726856 -1623792 5745368 1623896 5745384 1629584 5726976 1623640 5745232 -1629584 5726976 1623224 5745048 1623640 5745232 1623896 5745384 -1625376 5746584 1623896 5745384 1623792 5745368 1623904 5747528 -1625376 5746584 1623896 5745384 1623904 5747528 1624208 5747632 -1623792 5745368 1623904 5747528 1623896 5745384 1623640 5745232 -1623792 5745368 1623656 5747496 1623904 5747528 1623896 5745384 -1623792 5745368 1623152 5747352 1623656 5747496 1623896 5745384 -1623152 5747352 1623264 5747416 1623656 5747496 1623896 5745384 -1623792 5745368 1622880 5747168 1623152 5747352 1623896 5745384 -1623904 5747528 1625376 5746584 1623896 5745384 1623656 5747496 -1623792 5745368 1623152 5747352 1623896 5745384 1623640 5745232 -1623656 5747496 1623904 5747528 1623896 5745384 1623152 5747352 -1623896 5745384 1625376 5746584 1629584 5726976 1623640 5745232 -1625376 5746584 1629584 5726976 1623896 5745384 1623904 5747528 -1629584 5726976 1624032 5745472 1625376 5746584 1629776 5726856 -1623896 5745384 1624032 5745472 1629584 5726976 1623640 5745232 -1625376 5746584 1624032 5745472 1623896 5745384 1623904 5747528 -1625376 5746584 1624032 5745472 1623904 5747528 1624208 5747632 -1623896 5745384 1623656 5747496 1623904 5747528 1624032 5745472 -1623896 5745384 1623152 5747352 1623656 5747496 1624032 5745472 -1623152 5747352 1623264 5747416 1623656 5747496 1624032 5745472 -1623896 5745384 1623792 5745368 1623152 5747352 1624032 5745472 -1623792 5745368 1622880 5747168 1623152 5747352 1624032 5745472 -1623792 5745368 1622296 5746712 1622880 5747168 1624032 5745472 -1623792 5745368 1622880 5747168 1624032 5745472 1623896 5745384 -1623656 5747496 1623904 5747528 1624032 5745472 1623152 5747352 -1623152 5747352 1623656 5747496 1624032 5745472 1622880 5747168 -1624032 5745472 1629584 5726976 1623896 5745384 1623792 5745368 -1623904 5747528 1625376 5746584 1624032 5745472 1623656 5747496 -1625376 5746584 1629584 5726976 1624032 5745472 1623904 5747528 -1625376 5746584 1624224 5745656 1623904 5747528 1624208 5747632 -1625376 5746584 1624224 5745656 1624208 5747632 1624536 5747664 -1623904 5747528 1624224 5745656 1624032 5745472 1623656 5747496 -1624032 5745472 1623152 5747352 1623656 5747496 1624224 5745656 -1623152 5747352 1623264 5747416 1623656 5747496 1624224 5745656 -1624032 5745472 1622880 5747168 1623152 5747352 1624224 5745656 -1624032 5745472 1623792 5745368 1622880 5747168 1624224 5745656 -1623792 5745368 1622296 5746712 1622880 5747168 1624224 5745656 -1624032 5745472 1623896 5745384 1623792 5745368 1624224 5745656 -1623152 5747352 1623656 5747496 1624224 5745656 1622880 5747168 -1622880 5747168 1623152 5747352 1624224 5745656 1623792 5745368 -1623656 5747496 1623904 5747528 1624224 5745656 1623152 5747352 -1624224 5745656 1625376 5746584 1624032 5745472 1623792 5745368 -1624032 5745472 1624224 5745656 1625376 5746584 1629584 5726976 -1625376 5746584 1624032 5745472 1624224 5745656 1624208 5747632 -1624224 5745656 1623656 5747496 1623904 5747528 1624208 5747632 -1624032 5745472 1624272 5745688 1625376 5746584 1629584 5726976 -1625376 5746584 1629776 5726856 1629584 5726976 1624272 5745688 -1624032 5745472 1624272 5745688 1629584 5726976 1623896 5745384 -1625376 5746584 1624272 5745688 1624224 5745656 1624208 5747632 -1625376 5746584 1624272 5745688 1624208 5747632 1624536 5747664 -1624224 5745656 1623904 5747528 1624208 5747632 1624272 5745688 -1624208 5747632 1625376 5746584 1624272 5745688 1623904 5747528 -1624272 5745688 1624032 5745472 1624224 5745656 1623904 5747528 -1624224 5745656 1623656 5747496 1623904 5747528 1624272 5745688 -1623904 5747528 1624208 5747632 1624272 5745688 1623656 5747496 -1624224 5745656 1623152 5747352 1623656 5747496 1624272 5745688 -1624224 5745656 1623656 5747496 1624272 5745688 1624032 5745472 -1624032 5745472 1624224 5745656 1624272 5745688 1629584 5726976 -1624272 5745688 1624208 5747632 1625376 5746584 1629584 5726976 -1629584 5726976 1624528 5745760 1625376 5746584 1629776 5726856 -1624272 5745688 1624528 5745760 1629584 5726976 1624032 5745472 -1629584 5726976 1623896 5745384 1624032 5745472 1624528 5745760 -1629584 5726976 1623640 5745232 1623896 5745384 1624528 5745760 -1624032 5745472 1624272 5745688 1624528 5745760 1623896 5745384 -1624272 5745688 1624528 5745760 1624032 5745472 1624224 5745656 -1624528 5745760 1623896 5745384 1624032 5745472 1624224 5745656 -1624272 5745688 1625376 5746584 1624528 5745760 1624224 5745656 -1625376 5746584 1624528 5745760 1624272 5745688 1624208 5747632 -1625376 5746584 1624528 5745760 1624208 5747632 1624536 5747664 -1624272 5745688 1623904 5747528 1624208 5747632 1624528 5745760 -1624272 5745688 1623656 5747496 1623904 5747528 1624528 5745760 -1624528 5745760 1624224 5745656 1624272 5745688 1623904 5747528 -1624208 5747632 1625376 5746584 1624528 5745760 1623904 5747528 -1624528 5745760 1625376 5746584 1629584 5726976 1623896 5745384 -1625376 5746584 1629584 5726976 1624528 5745760 1624208 5747632 -1629584 5726976 1624712 5745880 1625376 5746584 1629776 5726856 -1624528 5745760 1624712 5745880 1629584 5726976 1623896 5745384 -1625376 5746584 1624712 5745880 1624528 5745760 1624208 5747632 -1625376 5746584 1624712 5745880 1624208 5747632 1624536 5747664 -1625376 5746584 1624712 5745880 1624536 5747664 1625448 5746768 -1624528 5745760 1623904 5747528 1624208 5747632 1624712 5745880 -1624528 5745760 1624272 5745688 1623904 5747528 1624712 5745880 -1624272 5745688 1623656 5747496 1623904 5747528 1624712 5745880 -1623904 5747528 1624208 5747632 1624712 5745880 1624272 5745688 -1624712 5745880 1629584 5726976 1624528 5745760 1624272 5745688 -1624712 5745880 1623904 5747528 1624208 5747632 1624536 5747664 -1625376 5746584 1629584 5726976 1624712 5745880 1624536 5747664 -1629584 5726976 1624976 5746096 1625376 5746584 1629776 5726856 -1624712 5745880 1624976 5746096 1629584 5726976 1624528 5745760 -1625376 5746584 1624976 5746096 1624712 5745880 1624536 5747664 -1625376 5746584 1624976 5746096 1624536 5747664 1625448 5746768 -1624712 5745880 1624208 5747632 1624536 5747664 1624976 5746096 -1624712 5745880 1623904 5747528 1624208 5747632 1624976 5746096 -1624208 5747632 1624536 5747664 1624976 5746096 1623904 5747528 -1624712 5745880 1624272 5745688 1623904 5747528 1624976 5746096 -1624976 5746096 1629584 5726976 1624712 5745880 1623904 5747528 -1624536 5747664 1625376 5746584 1624976 5746096 1624208 5747632 -1625376 5746584 1629584 5726976 1624976 5746096 1624536 5747664 -1629584 5726976 1625232 5746360 1625376 5746584 1629776 5726856 -1625376 5746584 1625960 5747656 1629776 5726856 1625232 5746360 -1624976 5746096 1625232 5746360 1629584 5726976 1624712 5745880 -1625376 5746584 1625232 5746360 1624976 5746096 1624536 5747664 -1625376 5746584 1625232 5746360 1624536 5747664 1625448 5746768 -1624976 5746096 1624208 5747632 1624536 5747664 1625232 5746360 -1625232 5746360 1629584 5726976 1624976 5746096 1624536 5747664 -1629584 5726976 1624976 5746096 1625232 5746360 1629776 5726856 -1625232 5746360 1624536 5747664 1625376 5746584 1629776 5726856 -1625376 5746584 1625112 5746640 1624536 5747664 1625448 5746768 -1624536 5747664 1624656 5747688 1625448 5746768 1625112 5746640 -1624656 5747688 1625512 5747120 1625448 5746768 1625112 5746640 -1624656 5747688 1625512 5747120 1625112 5746640 1624536 5747664 -1625448 5746768 1625376 5746584 1625112 5746640 1625512 5747120 -1625376 5746584 1625232 5746360 1625112 5746640 1625448 5746768 -1625112 5746640 1625232 5746360 1624536 5747664 1624656 5747688 -1624656 5747688 1624904 5747816 1625512 5747120 1625112 5746640 -1624536 5747664 1625112 5746640 1625232 5746360 1624976 5746096 -1624536 5747664 1624656 5747688 1625112 5746640 1624976 5746096 -1624536 5747664 1625112 5746640 1624976 5746096 1624208 5747632 -1624976 5746096 1623904 5747528 1624208 5747632 1625112 5746640 -1624536 5747664 1624656 5747688 1625112 5746640 1624208 5747632 -1624976 5746096 1624712 5745880 1623904 5747528 1625112 5746640 -1623904 5747528 1624208 5747632 1625112 5746640 1624712 5745880 -1624712 5745880 1624272 5745688 1623904 5747528 1625112 5746640 -1624208 5747632 1624536 5747664 1625112 5746640 1623904 5747528 -1625112 5746640 1625232 5746360 1624976 5746096 1624712 5745880 -1625112 5746640 1625376 5746584 1625232 5746360 1624976 5746096 -1625112 5746640 1625152 5746720 1625512 5747120 1625448 5746768 -1624656 5747688 1625152 5746720 1625112 5746640 1624536 5747664 -1625112 5746640 1625152 5746720 1625448 5746768 1625376 5746584 -1625152 5746720 1625512 5747120 1625448 5746768 1625376 5746584 -1625112 5746640 1625152 5746720 1625376 5746584 1625232 5746360 -1625112 5746640 1624536 5747664 1625152 5746720 1625376 5746584 -1625112 5746640 1624208 5747632 1624536 5747664 1625152 5746720 -1625152 5746720 1624656 5747688 1625512 5747120 1625448 5746768 -1624656 5747688 1625512 5747120 1625152 5746720 1624536 5747664 -1625512 5747120 1625152 5746720 1624656 5747688 1624904 5747816 -1625152 5746720 1625240 5746976 1625512 5747120 1625448 5746768 -1625152 5746720 1625240 5746976 1625448 5746768 1625376 5746584 -1625152 5746720 1624656 5747688 1625240 5746976 1625448 5746768 -1624656 5747688 1625240 5746976 1625152 5746720 1624536 5747664 -1625152 5746720 1625112 5746640 1624536 5747664 1625240 5746976 -1625240 5746976 1625448 5746768 1625152 5746720 1624536 5747664 -1625240 5746976 1624656 5747688 1625512 5747120 1625448 5746768 -1624656 5747688 1625512 5747120 1625240 5746976 1624536 5747664 -1625512 5747120 1625240 5746976 1624656 5747688 1624904 5747816 -1625512 5747120 1625448 5746768 1625240 5746976 1624904 5747816 -1625240 5746976 1624536 5747664 1624656 5747688 1624904 5747816 -1625512 5747120 1625240 5746976 1624904 5747816 1625624 5747288 -1624656 5747688 1624672 5747704 1624904 5747816 1625240 5746976 -1625240 5746976 1625336 5747152 1625512 5747120 1625448 5746768 -1625512 5747120 1625336 5747152 1624904 5747816 1625624 5747288 -1624904 5747816 1625080 5747976 1625624 5747288 1625336 5747152 -1625512 5747120 1625240 5746976 1625336 5747152 1625624 5747288 -1625336 5747152 1625240 5746976 1624904 5747816 1625080 5747976 -1625080 5747976 1625128 5748024 1625624 5747288 1625336 5747152 -1625624 5747288 1625512 5747120 1625336 5747152 1625080 5747976 -1624904 5747816 1625336 5747152 1625240 5746976 1624656 5747688 -1625336 5747152 1625512 5747120 1625240 5746976 1624656 5747688 -1625240 5746976 1624536 5747664 1624656 5747688 1625336 5747152 -1624904 5747816 1625080 5747976 1625336 5747152 1624656 5747688 -1624904 5747816 1625336 5747152 1624656 5747688 1624672 5747704 -1625128 5748024 1625552 5747448 1625624 5747288 1625080 5747976 -1625552 5747448 1625872 5747552 1625624 5747288 1625080 5747976 -1625128 5748024 1625872 5747552 1625552 5747448 1625080 5747976 -1625624 5747288 1625336 5747152 1625080 5747976 1625552 5747448 -1625336 5747152 1624904 5747816 1625080 5747976 1625552 5747448 -1625624 5747288 1625336 5747152 1625552 5747448 1625872 5747552 -1625336 5747152 1624656 5747688 1624904 5747816 1625552 5747448 -1625080 5747976 1625128 5748024 1625552 5747448 1624904 5747816 -1625336 5747152 1624904 5747816 1625552 5747448 1625624 5747288 -1625624 5747288 1625512 5747120 1625336 5747152 1625552 5747448 -1625872 5747552 1625552 5747448 1625128 5748024 1625712 5748088 -1625872 5747552 1625624 5747288 1625552 5747448 1625712 5748088 -1625552 5747448 1625080 5747976 1625128 5748024 1625712 5748088 -1625872 5747552 1625552 5747448 1625712 5748088 1625784 5748032 -1625872 5747552 1625552 5747448 1625784 5748032 1625800 5748016 -1625872 5747552 1625624 5747288 1625552 5747448 1625800 5748016 -1625552 5747448 1625712 5748088 1625784 5748032 1625800 5748016 -1625552 5747448 1625128 5748024 1625712 5748088 1625784 5748032 -1625872 5747552 1625552 5747448 1625800 5748016 1625864 5747960 -1625552 5747448 1625784 5748032 1625800 5748016 1625864 5747960 -1625872 5747552 1625624 5747288 1625552 5747448 1625864 5747960 -1625872 5747552 1625552 5747448 1625864 5747960 1625896 5747584 -1625128 5748024 1625264 5748136 1625712 5748088 1625552 5747448 -1625264 5748136 1625680 5748128 1625712 5748088 1625552 5747448 -1625128 5748024 1625264 5748136 1625552 5747448 1625080 5747976 -1625712 5748088 1625784 5748032 1625552 5747448 1625264 5748136 -1625712 5748088 1625560 5747496 1625264 5748136 1625680 5748128 -1625552 5747448 1625560 5747496 1625712 5748088 1625784 5748032 -1625552 5747448 1625264 5748136 1625560 5747496 1625784 5748032 -1625560 5747496 1625264 5748136 1625712 5748088 1625784 5748032 -1625552 5747448 1625560 5747496 1625784 5748032 1625800 5748016 -1625552 5747448 1625560 5747496 1625800 5748016 1625864 5747960 -1625552 5747448 1625264 5748136 1625560 5747496 1625864 5747960 -1625560 5747496 1625784 5748032 1625800 5748016 1625864 5747960 -1625560 5747496 1625712 5748088 1625784 5748032 1625800 5748016 -1625552 5747448 1625560 5747496 1625864 5747960 1625872 5747552 -1625560 5747496 1625800 5748016 1625864 5747960 1625872 5747552 -1625552 5747448 1625560 5747496 1625872 5747552 1625624 5747288 -1625552 5747448 1625264 5748136 1625560 5747496 1625872 5747552 -1625864 5747960 1625896 5747584 1625872 5747552 1625560 5747496 -1625864 5747960 1625896 5747584 1625560 5747496 1625800 5748016 -1625864 5747960 1625952 5747864 1625896 5747584 1625560 5747496 -1625872 5747552 1625552 5747448 1625560 5747496 1625896 5747584 -1625264 5748136 1625560 5747496 1625552 5747448 1625128 5748024 -1625560 5747496 1625872 5747552 1625552 5747448 1625128 5748024 -1625552 5747448 1625080 5747976 1625128 5748024 1625560 5747496 -1625552 5747448 1625080 5747976 1625560 5747496 1625872 5747552 -1625264 5748136 1625712 5748088 1625560 5747496 1625128 5748024 -1625552 5747448 1624904 5747816 1625080 5747976 1625560 5747496 -1625552 5747448 1625336 5747152 1624904 5747816 1625560 5747496 -1625552 5747448 1624904 5747816 1625560 5747496 1625872 5747552 -1625080 5747976 1625128 5748024 1625560 5747496 1624904 5747816 -1625128 5748024 1625264 5748136 1625560 5747496 1625080 5747976 -1625712 5748088 1625560 5747592 1625264 5748136 1625680 5748128 -1625560 5747496 1625560 5747592 1625712 5748088 1625784 5748032 -1625560 5747496 1625264 5748136 1625560 5747592 1625784 5748032 -1625264 5748136 1625560 5747592 1625560 5747496 1625128 5748024 -1625560 5747592 1625784 5748032 1625560 5747496 1625128 5748024 -1625560 5747592 1625264 5748136 1625712 5748088 1625784 5748032 -1625264 5748136 1625712 5748088 1625560 5747592 1625128 5748024 -1625560 5747496 1625560 5747592 1625784 5748032 1625800 5748016 -1625560 5747592 1625712 5748088 1625784 5748032 1625800 5748016 -1625560 5747496 1625128 5748024 1625560 5747592 1625800 5748016 -1625560 5747496 1625560 5747592 1625800 5748016 1625864 5747960 -1625560 5747496 1625560 5747592 1625864 5747960 1625896 5747584 -1625560 5747496 1625128 5748024 1625560 5747592 1625896 5747584 -1625560 5747592 1625800 5748016 1625864 5747960 1625896 5747584 -1625560 5747592 1625784 5748032 1625800 5748016 1625864 5747960 -1625864 5747960 1625952 5747864 1625896 5747584 1625560 5747592 -1625560 5747496 1625560 5747592 1625896 5747584 1625872 5747552 -1625560 5747592 1625864 5747960 1625896 5747584 1625872 5747552 -1625560 5747496 1625128 5748024 1625560 5747592 1625872 5747552 -1625560 5747496 1625560 5747592 1625872 5747552 1625552 5747448 -1625560 5747496 1625080 5747976 1625128 5748024 1625560 5747592 -1625560 5747496 1624904 5747816 1625080 5747976 1625560 5747592 -1625560 5747496 1624904 5747816 1625560 5747592 1625872 5747552 -1625128 5748024 1625264 5748136 1625560 5747592 1625080 5747976 -1625560 5747496 1625552 5747448 1624904 5747816 1625560 5747592 -1625080 5747976 1625128 5748024 1625560 5747592 1624904 5747816 -1625712 5748088 1625520 5747712 1625264 5748136 1625680 5748128 -1625264 5748136 1625568 5748208 1625680 5748128 1625520 5747712 -1625680 5748128 1625712 5748088 1625520 5747712 1625568 5748208 -1625560 5747592 1625520 5747712 1625712 5748088 1625784 5748032 -1625560 5747592 1625520 5747712 1625784 5748032 1625800 5748016 -1625520 5747712 1625712 5748088 1625784 5748032 1625800 5748016 -1625560 5747592 1625264 5748136 1625520 5747712 1625800 5748016 -1625264 5748136 1625520 5747712 1625560 5747592 1625128 5748024 -1625560 5747592 1625080 5747976 1625128 5748024 1625520 5747712 -1625520 5747712 1625800 5748016 1625560 5747592 1625080 5747976 -1625128 5748024 1625264 5748136 1625520 5747712 1625080 5747976 -1625712 5748088 1625784 5748032 1625520 5747712 1625680 5748128 -1625520 5747712 1625128 5748024 1625264 5748136 1625568 5748208 -1625264 5748136 1625360 5748208 1625568 5748208 1625520 5747712 -1625560 5747592 1625520 5747712 1625800 5748016 1625864 5747960 -1625520 5747712 1625784 5748032 1625800 5748016 1625864 5747960 -1625560 5747592 1625080 5747976 1625520 5747712 1625864 5747960 -1625560 5747592 1625520 5747712 1625864 5747960 1625896 5747584 -1625560 5747592 1625520 5747712 1625896 5747584 1625872 5747552 -1625560 5747592 1625080 5747976 1625520 5747712 1625896 5747584 -1625520 5747712 1625800 5748016 1625864 5747960 1625896 5747584 -1625864 5747960 1625952 5747864 1625896 5747584 1625520 5747712 -1625896 5747584 1625560 5747592 1625520 5747712 1625952 5747864 -1625864 5747960 1625952 5747864 1625520 5747712 1625800 5748016 -1625952 5747864 1625976 5747736 1625896 5747584 1625520 5747712 -1625560 5747592 1624904 5747816 1625080 5747976 1625520 5747712 -1625560 5747592 1625560 5747496 1624904 5747816 1625520 5747712 -1625080 5747976 1625128 5748024 1625520 5747712 1624904 5747816 -1625560 5747592 1625560 5747496 1625520 5747712 1625896 5747584 -1625560 5747496 1625552 5747448 1624904 5747816 1625520 5747712 -1624904 5747816 1625080 5747976 1625520 5747712 1625560 5747496 -1625128 5748024 1625400 5747824 1625520 5747712 1625080 5747976 -1625520 5747712 1624904 5747816 1625080 5747976 1625400 5747824 -1625080 5747976 1625128 5748024 1625400 5747824 1624904 5747816 -1625400 5747824 1625264 5748136 1625520 5747712 1624904 5747816 -1625520 5747712 1625400 5747824 1625264 5748136 1625568 5748208 -1625520 5747712 1625400 5747824 1625568 5748208 1625680 5748128 -1625520 5747712 1625400 5747824 1625680 5748128 1625712 5748088 -1625400 5747824 1625568 5748208 1625680 5748128 1625712 5748088 -1625520 5747712 1625400 5747824 1625712 5748088 1625784 5748032 -1625520 5747712 1624904 5747816 1625400 5747824 1625712 5748088 -1625264 5748136 1625360 5748208 1625568 5748208 1625400 5747824 -1625360 5748208 1625464 5748232 1625568 5748208 1625400 5747824 -1625464 5748232 1625488 5748232 1625568 5748208 1625400 5747824 -1625360 5748208 1625464 5748232 1625400 5747824 1625264 5748136 -1625400 5747824 1625128 5748024 1625264 5748136 1625360 5748208 -1625400 5747824 1625464 5748232 1625568 5748208 1625680 5748128 -1625128 5748024 1625264 5748136 1625400 5747824 1625080 5747976 -1625520 5747712 1625560 5747496 1624904 5747816 1625400 5747824 -1625520 5747712 1625560 5747592 1625560 5747496 1625400 5747824 -1624904 5747816 1625080 5747976 1625400 5747824 1625560 5747496 -1625520 5747712 1625560 5747592 1625400 5747824 1625712 5748088 -1625560 5747496 1625552 5747448 1624904 5747816 1625400 5747824 -1625552 5747448 1625336 5747152 1624904 5747816 1625400 5747824 -1625336 5747152 1624656 5747688 1624904 5747816 1625400 5747824 -1624904 5747816 1625080 5747976 1625400 5747824 1625336 5747152 -1625552 5747448 1625336 5747152 1625400 5747824 1625560 5747496 -1625560 5747496 1625552 5747448 1625400 5747824 1625560 5747592 -1625336 5747152 1625352 5747816 1625400 5747824 1625552 5747448 -1624904 5747816 1625352 5747816 1625336 5747152 1624656 5747688 -1625400 5747824 1625352 5747816 1624904 5747816 1625080 5747976 -1625400 5747824 1625352 5747816 1625080 5747976 1625128 5748024 -1625352 5747816 1624904 5747816 1625080 5747976 1625128 5748024 -1625400 5747824 1625560 5747496 1625552 5747448 1625352 5747816 -1625552 5747448 1625336 5747152 1625352 5747816 1625560 5747496 -1625400 5747824 1625352 5747816 1625128 5748024 1625264 5748136 -1625352 5747816 1625080 5747976 1625128 5748024 1625264 5748136 -1625400 5747824 1625352 5747816 1625264 5748136 1625360 5748208 -1625352 5747816 1625264 5748136 1625400 5747824 1625560 5747496 -1625352 5747816 1625336 5747152 1624904 5747816 1625080 5747976 -1625336 5747152 1624904 5747816 1625352 5747816 1625552 5747448 -1625400 5747824 1625560 5747592 1625560 5747496 1625352 5747816 -1625400 5747824 1625520 5747712 1625560 5747592 1625352 5747816 -1625560 5747496 1625552 5747448 1625352 5747816 1625560 5747592 -1625400 5747824 1625520 5747712 1625352 5747816 1625264 5748136 -1625560 5747592 1625560 5747496 1625352 5747816 1625520 5747712 -1625336 5747152 1624656 5747688 1624904 5747816 1625232 5747816 -1625352 5747816 1625232 5747816 1625080 5747976 1625128 5748024 -1625352 5747816 1625232 5747816 1625128 5748024 1625264 5748136 -1625232 5747816 1625080 5747976 1625128 5748024 1625264 5748136 -1625352 5747816 1625232 5747816 1625264 5748136 1625400 5747824 -1625352 5747816 1625336 5747152 1625232 5747816 1625264 5748136 -1625352 5747816 1625552 5747448 1625336 5747152 1625232 5747816 -1625352 5747816 1625560 5747496 1625552 5747448 1625232 5747816 -1625352 5747816 1625560 5747592 1625560 5747496 1625232 5747816 -1625560 5747496 1625552 5747448 1625232 5747816 1625560 5747592 -1625352 5747816 1625560 5747592 1625232 5747816 1625264 5748136 -1625336 5747152 1624904 5747816 1625232 5747816 1625552 5747448 -1625552 5747448 1625336 5747152 1625232 5747816 1625560 5747496 -1625232 5747816 1624904 5747816 1625080 5747976 1625128 5748024 -1625352 5747816 1625520 5747712 1625560 5747592 1625232 5747816 -1624904 5747816 1625032 5747760 1625336 5747152 1624656 5747688 -1624904 5747816 1625032 5747760 1624656 5747688 1624672 5747704 -1625032 5747760 1625336 5747152 1624656 5747688 1624672 5747704 -1625336 5747152 1625240 5746976 1624656 5747688 1625032 5747760 -1625336 5747152 1625032 5747760 1625232 5747816 1625552 5747448 -1625232 5747816 1625560 5747496 1625552 5747448 1625032 5747760 -1625232 5747816 1625032 5747760 1624904 5747816 1625080 5747976 -1625232 5747816 1625032 5747760 1625080 5747976 1625128 5748024 -1625032 5747760 1625080 5747976 1625232 5747816 1625552 5747448 -1624904 5747816 1625080 5747976 1625032 5747760 1624672 5747704 -1625032 5747760 1625552 5747448 1625336 5747152 1624656 5747688 -1625032 5747760 1624856 5747664 1624656 5747688 1624672 5747704 -1625032 5747760 1624856 5747664 1624672 5747704 1624904 5747816 -1624856 5747664 1624656 5747688 1624672 5747704 1624904 5747816 -1624656 5747688 1624856 5747664 1625336 5747152 1625240 5746976 -1624656 5747688 1624856 5747664 1625240 5746976 1624536 5747664 -1625240 5746976 1625152 5746720 1624536 5747664 1624856 5747664 -1624856 5747664 1625336 5747152 1625240 5746976 1624536 5747664 -1625032 5747760 1624856 5747664 1624904 5747816 1625080 5747976 -1625032 5747760 1625336 5747152 1624856 5747664 1624904 5747816 -1625336 5747152 1624856 5747664 1625032 5747760 1625552 5747448 -1624856 5747664 1624536 5747664 1624656 5747688 1624672 5747704 -1624856 5747664 1625032 5747760 1625336 5747152 1625240 5746976 -1625112 5746640 1624632 5747488 1624536 5747664 1625152 5746720 -1624536 5747664 1625240 5746976 1625152 5746720 1624632 5747488 -1625152 5746720 1625112 5746640 1624632 5747488 1625240 5746976 -1624536 5747664 1624856 5747664 1625240 5746976 1624632 5747488 -1625240 5746976 1625152 5746720 1624632 5747488 1624856 5747664 -1624536 5747664 1624656 5747688 1624856 5747664 1624632 5747488 -1624856 5747664 1625240 5746976 1624632 5747488 1624656 5747688 -1624856 5747664 1625336 5747152 1625240 5746976 1624632 5747488 -1625240 5746976 1625152 5746720 1624632 5747488 1625336 5747152 -1624856 5747664 1625336 5747152 1624632 5747488 1624656 5747688 -1625112 5746640 1624208 5747632 1624632 5747488 1625152 5746720 -1624656 5747688 1624672 5747704 1624856 5747664 1624632 5747488 -1624632 5747488 1624208 5747632 1624536 5747664 1624656 5747688 -1624856 5747664 1625032 5747760 1625336 5747152 1624632 5747488 -1624208 5747632 1624632 5747488 1625112 5746640 1623904 5747528 -1625112 5746640 1624712 5745880 1623904 5747528 1624632 5747488 -1624208 5747632 1624536 5747664 1624632 5747488 1623904 5747528 -1624632 5747488 1625152 5746720 1625112 5746640 1623904 5747528 -1623904 5747528 1624384 5747352 1625112 5746640 1624712 5745880 -1625112 5746640 1624384 5747352 1624632 5747488 1625152 5746720 -1624632 5747488 1625240 5746976 1625152 5746720 1624384 5747352 -1624384 5747352 1623904 5747528 1624632 5747488 1625152 5746720 -1623904 5747528 1624632 5747488 1624384 5747352 1624712 5745880 -1624384 5747352 1625152 5746720 1625112 5746640 1624712 5745880 -1623904 5747528 1624384 5747352 1624712 5745880 1624272 5745688 -1624384 5747352 1625112 5746640 1624712 5745880 1624272 5745688 -1623904 5747528 1624384 5747352 1624272 5745688 1623656 5747496 -1623904 5747528 1624632 5747488 1624384 5747352 1623656 5747496 -1624712 5745880 1624528 5745760 1624272 5745688 1624384 5747352 -1624272 5745688 1624224 5745656 1623656 5747496 1624384 5747352 -1624384 5747352 1624712 5745880 1624272 5745688 1623656 5747496 -1625112 5746640 1624976 5746096 1624712 5745880 1624384 5747352 -1624632 5747488 1624384 5747352 1623904 5747528 1624208 5747632 -1624632 5747488 1624384 5747352 1624208 5747632 1624536 5747664 -1624632 5747488 1625152 5746720 1624384 5747352 1624536 5747664 -1624384 5747352 1623656 5747496 1623904 5747528 1624208 5747632 -1624632 5747488 1624384 5747352 1624536 5747664 1624656 5747688 -1624384 5747352 1623904 5747528 1624208 5747632 1624536 5747664 -1624384 5747352 1624120 5747304 1623656 5747496 1623904 5747528 -1624384 5747352 1624120 5747304 1623904 5747528 1624208 5747632 -1624120 5747304 1623656 5747496 1623904 5747528 1624208 5747632 -1624384 5747352 1624272 5745688 1624120 5747304 1624208 5747632 -1624120 5747304 1624272 5745688 1623656 5747496 1623904 5747528 -1623656 5747496 1624120 5747304 1624272 5745688 1624224 5745656 -1623656 5747496 1624120 5747304 1624224 5745656 1623152 5747352 -1623656 5747496 1624120 5747304 1623152 5747352 1623264 5747416 -1624224 5745656 1622880 5747168 1623152 5747352 1624120 5747304 -1624120 5747304 1624224 5745656 1623152 5747352 1623264 5747416 -1623656 5747496 1623904 5747528 1624120 5747304 1623264 5747416 -1624120 5747304 1624384 5747352 1624272 5745688 1624224 5745656 -1624120 5747304 1624272 5745688 1624224 5745656 1623152 5747352 -1624272 5745688 1624120 5747304 1624384 5747352 1624712 5745880 -1624384 5747352 1625112 5746640 1624712 5745880 1624120 5747304 -1624120 5747304 1624208 5747632 1624384 5747352 1625112 5746640 -1624384 5747352 1625152 5746720 1625112 5746640 1624120 5747304 -1624272 5745688 1624224 5745656 1624120 5747304 1624712 5745880 -1624272 5745688 1624120 5747304 1624712 5745880 1624528 5745760 -1624712 5745880 1624272 5745688 1624120 5747304 1625112 5746640 -1625112 5746640 1624976 5746096 1624712 5745880 1624120 5747304 -1624384 5747352 1624120 5747304 1624208 5747632 1624536 5747664 -1623152 5747352 1623952 5747280 1624224 5745656 1622880 5747168 -1624224 5745656 1623792 5745368 1622880 5747168 1623952 5747280 -1624120 5747304 1623952 5747280 1623152 5747352 1623264 5747416 -1624120 5747304 1623952 5747280 1623264 5747416 1623656 5747496 -1623952 5747280 1623152 5747352 1623264 5747416 1623656 5747496 -1624120 5747304 1623952 5747280 1623656 5747496 1623904 5747528 -1624120 5747304 1623952 5747280 1623904 5747528 1624208 5747632 -1623952 5747280 1623264 5747416 1623656 5747496 1623904 5747528 -1624120 5747304 1624224 5745656 1623952 5747280 1623904 5747528 -1623152 5747352 1623264 5747416 1623952 5747280 1622880 5747168 -1623952 5747280 1624120 5747304 1624224 5745656 1622880 5747168 -1624224 5745656 1623952 5747280 1624120 5747304 1624272 5745688 -1623952 5747280 1623904 5747528 1624120 5747304 1624272 5745688 -1624120 5747304 1624712 5745880 1624272 5745688 1623952 5747280 -1624224 5745656 1622880 5747168 1623952 5747280 1624272 5745688 -1622880 5747168 1623624 5747256 1623952 5747280 1624224 5745656 -1622880 5747168 1623624 5747256 1624224 5745656 1623792 5745368 -1624224 5745656 1624032 5745472 1623792 5745368 1623624 5747256 -1622880 5747168 1623624 5747256 1623792 5745368 1622296 5746712 -1623624 5747256 1623952 5747280 1624224 5745656 1623792 5745368 -1623952 5747280 1623624 5747256 1623152 5747352 1623264 5747416 -1623952 5747280 1623624 5747256 1623264 5747416 1623656 5747496 -1623952 5747280 1623624 5747256 1623656 5747496 1623904 5747528 -1623624 5747256 1623152 5747352 1623264 5747416 1623656 5747496 -1623624 5747256 1623656 5747496 1623952 5747280 1624224 5745656 -1623952 5747280 1624272 5745688 1624224 5745656 1623624 5747256 -1624224 5745656 1623792 5745368 1623624 5747256 1624272 5745688 -1623952 5747280 1624272 5745688 1623624 5747256 1623656 5747496 -1623624 5747256 1622880 5747168 1623152 5747352 1623264 5747416 -1622880 5747168 1623152 5747352 1623624 5747256 1623792 5745368 -1623952 5747280 1624120 5747304 1624272 5745688 1623624 5747256 -1622880 5747168 1623040 5747128 1623792 5745368 1622296 5746712 -1623792 5745368 1623592 5745240 1622296 5746712 1623040 5747128 -1623592 5745240 1622328 5745496 1622296 5746712 1623040 5747128 -1623592 5745240 1623336 5745136 1622328 5745496 1623040 5747128 -1623592 5745240 1622328 5745496 1623040 5747128 1623792 5745368 -1622296 5746712 1622880 5747168 1623040 5747128 1622328 5745496 -1622880 5747168 1623040 5747128 1622296 5746712 1622688 5747096 -1623040 5747128 1622328 5745496 1622296 5746712 1622688 5747096 -1622296 5746712 1622392 5746896 1622688 5747096 1623040 5747128 -1623792 5745368 1623640 5745232 1623592 5745240 1623040 5747128 -1623792 5745368 1623040 5747128 1623624 5747256 1624224 5745656 -1623792 5745368 1623040 5747128 1624224 5745656 1624032 5745472 -1623624 5747256 1624272 5745688 1624224 5745656 1623040 5747128 -1623040 5747128 1622880 5747168 1623624 5747256 1624224 5745656 -1623624 5747256 1623040 5747128 1622880 5747168 1623152 5747352 -1623624 5747256 1623040 5747128 1623152 5747352 1623264 5747416 -1623624 5747256 1624224 5745656 1623040 5747128 1623152 5747352 -1622880 5747168 1623152 5747352 1623040 5747128 1622688 5747096 -1623040 5747128 1624224 5745656 1623792 5745368 1623592 5745240 -1622328 5745496 1622208 5746568 1622296 5746712 1623040 5747128 -1622296 5746712 1622760 5746984 1623040 5747128 1622328 5745496 -1623040 5747128 1623592 5745240 1622328 5745496 1622760 5746984 -1623592 5745240 1623336 5745136 1622328 5745496 1622760 5746984 -1623040 5747128 1623792 5745368 1623592 5745240 1622760 5746984 -1623592 5745240 1622328 5745496 1622760 5746984 1623792 5745368 -1622328 5745496 1622296 5746712 1622760 5746984 1623592 5745240 -1622688 5747096 1622760 5746984 1622296 5746712 1622392 5746896 -1623040 5747128 1622760 5746984 1622688 5747096 1622880 5747168 -1623792 5745368 1623640 5745232 1623592 5745240 1622760 5746984 -1622688 5747096 1622760 5746984 1622392 5746896 1622504 5747016 -1622760 5746984 1622296 5746712 1622392 5746896 1622504 5747016 -1623040 5747128 1622760 5746984 1622880 5747168 1623152 5747352 -1622760 5746984 1622880 5747168 1623040 5747128 1623792 5745368 -1623040 5747128 1624224 5745656 1623792 5745368 1622760 5746984 -1622688 5747096 1622880 5747168 1622760 5746984 1622504 5747016 -1622296 5746712 1622392 5746896 1622760 5746984 1622328 5745496 -1622296 5746712 1622760 5746984 1622328 5745496 1622208 5746568 -1622760 5746984 1623592 5745240 1622328 5745496 1622208 5746568 -1622328 5745496 1622160 5745616 1622208 5746568 1622760 5746984 -1622296 5746712 1622392 5746896 1622760 5746984 1622208 5746568 -1622760 5746984 1622528 5746824 1622296 5746712 1622392 5746896 -1622760 5746984 1622528 5746824 1622392 5746896 1622504 5747016 -1622760 5746984 1622528 5746824 1622504 5747016 1622688 5747096 -1622760 5746984 1622208 5746568 1622528 5746824 1622504 5747016 -1622528 5746824 1622296 5746712 1622392 5746896 1622504 5747016 -1622528 5746824 1622208 5746568 1622296 5746712 1622392 5746896 -1622208 5746568 1622528 5746824 1622760 5746984 1622328 5745496 -1622760 5746984 1623592 5745240 1622328 5745496 1622528 5746824 -1623592 5745240 1623336 5745136 1622328 5745496 1622528 5746824 -1623592 5745240 1623528 5745200 1623336 5745136 1622528 5746824 -1622760 5746984 1623792 5745368 1623592 5745240 1622528 5746824 -1622760 5746984 1623040 5747128 1623792 5745368 1622528 5746824 -1623592 5745240 1623336 5745136 1622528 5746824 1623792 5745368 -1623336 5745136 1622936 5745096 1622328 5745496 1622528 5746824 -1622208 5746568 1622528 5746824 1622328 5745496 1622160 5745616 -1623792 5745368 1623640 5745232 1623592 5745240 1622528 5746824 -1622528 5746824 1622504 5747016 1622760 5746984 1623792 5745368 -1622328 5745496 1622208 5746568 1622528 5746824 1623336 5745136 -1622208 5746568 1622296 5746712 1622528 5746824 1622328 5745496 -1622208 5746568 1622456 5746736 1622328 5745496 1622160 5745616 -1622328 5745496 1622456 5746736 1622528 5746824 1623336 5745136 -1622528 5746824 1623592 5745240 1623336 5745136 1622456 5746736 -1623592 5745240 1623528 5745200 1623336 5745136 1622456 5746736 -1622528 5746824 1623792 5745368 1623592 5745240 1622456 5746736 -1623592 5745240 1623336 5745136 1622456 5746736 1623792 5745368 -1622528 5746824 1622760 5746984 1623792 5745368 1622456 5746736 -1622760 5746984 1623040 5747128 1623792 5745368 1622456 5746736 -1623792 5745368 1623592 5745240 1622456 5746736 1622760 5746984 -1622328 5745496 1622456 5746736 1623336 5745136 1622936 5745096 -1623792 5745368 1623640 5745232 1623592 5745240 1622456 5746736 -1623336 5745136 1622328 5745496 1622456 5746736 1623592 5745240 -1622528 5746824 1622456 5746736 1622208 5746568 1622296 5746712 -1622528 5746824 1622456 5746736 1622296 5746712 1622392 5746896 -1622528 5746824 1622456 5746736 1622392 5746896 1622504 5747016 -1622456 5746736 1622208 5746568 1622296 5746712 1622392 5746896 -1622456 5746736 1622392 5746896 1622528 5746824 1622760 5746984 -1622456 5746736 1622328 5745496 1622208 5746568 1622296 5746712 -1622328 5745496 1622208 5746568 1622456 5746736 1623336 5745136 -1622160 5745616 1622128 5746232 1622208 5746568 1622328 5745496 -1622208 5746568 1622456 5746736 1622328 5745496 1622128 5746232 -1622328 5745496 1622160 5745616 1622128 5746232 1622456 5746736 -1622024 5746384 1622128 5746232 1622160 5745616 1621920 5746224 -1622160 5745616 1622064 5745632 1621920 5746224 1622128 5746232 -1622064 5745632 1621696 5745712 1621920 5746224 1622128 5746232 -1621920 5746224 1622024 5746384 1622128 5746232 1622064 5745632 -1622208 5746568 1622296 5746712 1622456 5746736 1622128 5746232 -1622128 5746232 1622024 5746384 1622208 5746568 1622456 5746736 -1622456 5746736 1623336 5745136 1622328 5745496 1622128 5746232 -1622024 5746384 1622208 5746568 1622128 5746232 1621920 5746224 -1622160 5745616 1622064 5745632 1622128 5746232 1622328 5745496 -1621920 5746224 1622064 5746064 1622064 5745632 1621696 5745712 -1622064 5745632 1621776 5745592 1621696 5745712 1622064 5746064 -1622064 5745632 1622064 5746064 1622128 5746232 1622160 5745616 -1622128 5746232 1622064 5746064 1621920 5746224 1622024 5746384 -1622064 5746064 1621920 5746224 1622128 5746232 1622160 5745616 -1622128 5746232 1622328 5745496 1622160 5745616 1622064 5746064 -1622128 5746232 1622456 5746736 1622328 5745496 1622064 5746064 -1622160 5745616 1622064 5745632 1622064 5746064 1622328 5745496 -1622128 5746232 1622328 5745496 1622064 5746064 1621920 5746224 -1621920 5746224 1622128 5746232 1622064 5746064 1621696 5745712 -1622064 5746064 1622160 5745616 1622064 5745632 1621696 5745712 -1622064 5746064 1622096 5745920 1622160 5745616 1622064 5745632 -1622328 5745496 1622096 5745920 1622064 5746064 1622128 5746232 -1622328 5745496 1622096 5745920 1622128 5746232 1622456 5746736 -1622064 5746064 1622128 5746232 1622096 5745920 1622064 5745632 -1622064 5746064 1622096 5745920 1622064 5745632 1621696 5745712 -1622064 5745632 1621776 5745592 1621696 5745712 1622096 5745920 -1622064 5746064 1622096 5745920 1621696 5745712 1621920 5746224 -1622096 5745920 1622160 5745616 1622064 5745632 1621696 5745712 -1622064 5746064 1622128 5746232 1622096 5745920 1621696 5745712 -1622096 5745920 1622328 5745496 1622160 5745616 1622064 5745632 -1622328 5745496 1622160 5745616 1622096 5745920 1622128 5746232 -1622328 5745496 1622136 5745896 1622128 5746232 1622456 5746736 -1622328 5745496 1622136 5745896 1622456 5746736 1623336 5745136 -1622128 5746232 1622136 5745896 1622096 5745920 1622064 5746064 -1622136 5745896 1622328 5745496 1622096 5745920 1622064 5746064 -1622096 5745920 1622136 5745896 1622328 5745496 1622160 5745616 -1622096 5745920 1622136 5745896 1622160 5745616 1622064 5745632 -1622096 5745920 1622136 5745896 1622064 5745632 1621696 5745712 -1622096 5745920 1622064 5746064 1622136 5745896 1622064 5745632 -1622136 5745896 1622328 5745496 1622160 5745616 1622064 5745632 -1622328 5745496 1622160 5745616 1622136 5745896 1622456 5746736 -1622136 5745896 1622064 5746064 1622128 5746232 1622456 5746736 -1622456 5746736 1622352 5746032 1622136 5745896 1622128 5746232 -1622456 5746736 1622328 5745496 1622352 5746032 1622128 5746232 -1622328 5745496 1622352 5746032 1622456 5746736 1623336 5745136 -1622328 5745496 1622352 5746032 1623336 5745136 1622936 5745096 -1622328 5745496 1622136 5745896 1622352 5746032 1622936 5745096 -1622352 5746032 1622128 5746232 1622456 5746736 1623336 5745136 -1623336 5745136 1623008 5745080 1622936 5745096 1622352 5746032 -1622456 5746736 1623592 5745240 1623336 5745136 1622352 5746032 -1623592 5745240 1623528 5745200 1623336 5745136 1622352 5746032 -1622456 5746736 1623792 5745368 1623592 5745240 1622352 5746032 -1622456 5746736 1622760 5746984 1623792 5745368 1622352 5746032 -1623792 5745368 1623592 5745240 1622352 5746032 1622760 5746984 -1622456 5746736 1622528 5746824 1622760 5746984 1622352 5746032 -1622760 5746984 1623040 5747128 1623792 5745368 1622352 5746032 -1623792 5745368 1623640 5745232 1623592 5745240 1622352 5746032 -1622456 5746736 1622760 5746984 1622352 5746032 1622128 5746232 -1623592 5745240 1623336 5745136 1622352 5746032 1623792 5745368 -1622328 5745496 1622352 5746032 1622936 5745096 1622336 5745456 -1622352 5746032 1623592 5745240 1623336 5745136 1622936 5745096 -1622136 5745896 1622352 5746032 1622328 5745496 1622160 5745616 -1622352 5746032 1622936 5745096 1622328 5745496 1622160 5745616 -1622136 5745896 1622352 5746032 1622160 5745616 1622064 5745632 -1622352 5746032 1622160 5745616 1622136 5745896 1622128 5746232 -1622136 5745896 1622064 5746064 1622128 5746232 1622352 5746032 -1622128 5746232 1622456 5746736 1622352 5746032 1622064 5746064 -1622136 5745896 1622096 5745920 1622064 5746064 1622352 5746032 -1622136 5745896 1622064 5746064 1622352 5746032 1622160 5745616 -1622352 5746032 1622448 5746048 1623792 5745368 1623592 5745240 -1623792 5745368 1622448 5746048 1622760 5746984 1623040 5747128 -1622760 5746984 1622448 5746048 1622352 5746032 1622456 5746736 -1622760 5746984 1622448 5746048 1622456 5746736 1622528 5746824 -1622448 5746048 1622352 5746032 1622456 5746736 1622528 5746824 -1623792 5745368 1623640 5745232 1623592 5745240 1622448 5746048 -1622352 5746032 1622456 5746736 1622448 5746048 1623592 5745240 -1622352 5746032 1622128 5746232 1622456 5746736 1622448 5746048 -1622456 5746736 1622528 5746824 1622448 5746048 1622128 5746232 -1622352 5746032 1622064 5746064 1622128 5746232 1622448 5746048 -1622352 5746032 1622128 5746232 1622448 5746048 1623592 5745240 -1622448 5746048 1623040 5747128 1623792 5745368 1623592 5745240 -1622448 5746048 1622528 5746824 1622760 5746984 1623040 5747128 -1623792 5745368 1622448 5746048 1623040 5747128 1624224 5745656 -1622352 5746032 1622448 5746048 1623592 5745240 1623336 5745136 -1623592 5745240 1623528 5745200 1623336 5745136 1622448 5746048 -1622448 5746048 1623792 5745368 1623592 5745240 1623336 5745136 -1622352 5746032 1622128 5746232 1622448 5746048 1623336 5745136 -1622352 5746032 1622448 5746048 1623336 5745136 1622936 5745096 -1622352 5746032 1622448 5746048 1622936 5745096 1622328 5745496 -1622352 5746032 1622448 5746048 1622328 5745496 1622160 5745616 -1622352 5746032 1622128 5746232 1622448 5746048 1622328 5745496 -1623336 5745136 1623008 5745080 1622936 5745096 1622448 5746048 -1622448 5746048 1623592 5745240 1623336 5745136 1622936 5745096 -1622936 5745096 1622336 5745456 1622328 5745496 1622448 5746048 -1622448 5746048 1623336 5745136 1622936 5745096 1622328 5745496 -1623040 5747128 1622520 5746024 1622448 5746048 1622760 5746984 -1622448 5746048 1622520 5746024 1623792 5745368 1623592 5745240 -1622448 5746048 1622520 5746024 1623592 5745240 1623336 5745136 -1623592 5745240 1623528 5745200 1623336 5745136 1622520 5746024 -1623792 5745368 1623640 5745232 1623592 5745240 1622520 5746024 -1622520 5746024 1623792 5745368 1623592 5745240 1623336 5745136 -1622520 5746024 1623336 5745136 1622448 5746048 1622760 5746984 -1622448 5746048 1622528 5746824 1622760 5746984 1622520 5746024 -1622448 5746048 1622456 5746736 1622528 5746824 1622520 5746024 -1622760 5746984 1623040 5747128 1622520 5746024 1622528 5746824 -1622448 5746048 1622128 5746232 1622456 5746736 1622520 5746024 -1622448 5746048 1622456 5746736 1622520 5746024 1623336 5745136 -1622528 5746824 1622760 5746984 1622520 5746024 1622456 5746736 -1622520 5746024 1623040 5747128 1623792 5745368 1623592 5745240 -1623040 5747128 1623792 5745368 1622520 5746024 1622760 5746984 -1623792 5745368 1622520 5746024 1623040 5747128 1624224 5745656 -1622448 5746048 1622520 5746024 1623336 5745136 1622936 5745096 -1622520 5746024 1623592 5745240 1623336 5745136 1622936 5745096 -1622448 5746048 1622456 5746736 1622520 5746024 1622936 5745096 -1623336 5745136 1623008 5745080 1622936 5745096 1622520 5746024 -1622448 5746048 1622520 5746024 1622936 5745096 1622328 5745496 -1622448 5746048 1622520 5746024 1622328 5745496 1622352 5746032 -1622328 5745496 1622160 5745616 1622352 5746032 1622520 5746024 -1622448 5746048 1622456 5746736 1622520 5746024 1622352 5746032 -1622520 5746024 1623336 5745136 1622936 5745096 1622328 5745496 -1622936 5745096 1622336 5745456 1622328 5745496 1622520 5746024 -1622520 5746024 1622936 5745096 1622328 5745496 1622352 5746032 -1622936 5745096 1622584 5745840 1622520 5746024 1623336 5745136 -1622520 5746024 1623592 5745240 1623336 5745136 1622584 5745840 -1623592 5745240 1623528 5745200 1623336 5745136 1622584 5745840 -1622520 5746024 1623792 5745368 1623592 5745240 1622584 5745840 -1623592 5745240 1623336 5745136 1622584 5745840 1623792 5745368 -1623792 5745368 1623640 5745232 1623592 5745240 1622584 5745840 -1622520 5746024 1623040 5747128 1623792 5745368 1622584 5745840 -1622584 5745840 1622328 5745496 1622520 5746024 1623792 5745368 -1622936 5745096 1622328 5745496 1622584 5745840 1623336 5745136 -1622936 5745096 1622584 5745840 1623336 5745136 1623008 5745080 -1623336 5745136 1622936 5745096 1622584 5745840 1623592 5745240 -1622328 5745496 1622584 5745840 1622936 5745096 1622336 5745456 -1622936 5745096 1622816 5745056 1622336 5745456 1622584 5745840 -1622328 5745496 1622520 5746024 1622584 5745840 1622336 5745456 -1622584 5745840 1623336 5745136 1622936 5745096 1622336 5745456 -1622520 5746024 1622584 5745840 1622328 5745496 1622352 5746032 -1622520 5746024 1622584 5745840 1622352 5746032 1622448 5746048 -1622328 5745496 1622160 5745616 1622352 5746032 1622584 5745840 -1622520 5746024 1623792 5745368 1622584 5745840 1622448 5746048 -1622584 5745840 1622336 5745456 1622328 5745496 1622160 5745616 -1622584 5745840 1622160 5745616 1622352 5746032 1622448 5746048 -1622160 5745616 1622136 5745896 1622352 5746032 1622584 5745840 -1622160 5745616 1622136 5745896 1622584 5745840 1622328 5745496 -1622352 5746032 1622448 5746048 1622584 5745840 1622136 5745896 -1622160 5745616 1622064 5745632 1622136 5745896 1622584 5745840 -1622584 5745840 1622616 5745824 1623592 5745240 1623336 5745136 -1623592 5745240 1623528 5745200 1623336 5745136 1622616 5745824 -1623592 5745240 1622616 5745824 1623792 5745368 1623640 5745232 -1623792 5745368 1622616 5745824 1622584 5745840 1622520 5746024 -1623792 5745368 1622616 5745824 1622520 5746024 1623040 5747128 -1622616 5745824 1622584 5745840 1622520 5746024 1623040 5747128 -1622520 5746024 1622760 5746984 1623040 5747128 1622616 5745824 -1622584 5745840 1622520 5746024 1622616 5745824 1623336 5745136 -1622616 5745824 1623792 5745368 1623592 5745240 1623336 5745136 -1623792 5745368 1623592 5745240 1622616 5745824 1623040 5747128 -1623792 5745368 1622616 5745824 1623040 5747128 1624224 5745656 -1622584 5745840 1622616 5745824 1623336 5745136 1622936 5745096 -1622616 5745824 1623592 5745240 1623336 5745136 1622936 5745096 -1622584 5745840 1622520 5746024 1622616 5745824 1622936 5745096 -1622584 5745840 1622616 5745824 1622936 5745096 1622336 5745456 -1622936 5745096 1622816 5745056 1622336 5745456 1622616 5745824 -1622584 5745840 1622520 5746024 1622616 5745824 1622336 5745456 -1622336 5745456 1622584 5745840 1622616 5745824 1622816 5745056 -1623336 5745136 1623008 5745080 1622936 5745096 1622616 5745824 -1623336 5745136 1623008 5745080 1622616 5745824 1623592 5745240 -1622616 5745824 1623008 5745080 1622936 5745096 1622816 5745056 -1622584 5745840 1622616 5745824 1622336 5745456 1622328 5745496 -1622584 5745840 1622616 5745824 1622328 5745496 1622160 5745616 -1622584 5745840 1622520 5746024 1622616 5745824 1622328 5745496 -1622616 5745824 1622816 5745056 1622336 5745456 1622328 5745496 -1623336 5745136 1623240 5745072 1623008 5745080 1622616 5745824 -1622816 5745056 1622680 5744976 1622336 5745456 1622616 5745824 -1623040 5747128 1622736 5745784 1622616 5745824 1622520 5746024 -1622616 5745824 1622584 5745840 1622520 5746024 1622736 5745784 -1623040 5747128 1622736 5745784 1622520 5746024 1622760 5746984 -1622520 5746024 1622528 5746824 1622760 5746984 1622736 5745784 -1622736 5745784 1622616 5745824 1622520 5746024 1622760 5746984 -1622736 5745784 1623792 5745368 1622616 5745824 1622520 5746024 -1622616 5745824 1622736 5745784 1623792 5745368 1623592 5745240 -1623792 5745368 1623640 5745232 1623592 5745240 1622736 5745784 -1622616 5745824 1622736 5745784 1623592 5745240 1623336 5745136 -1623592 5745240 1623528 5745200 1623336 5745136 1622736 5745784 -1622616 5745824 1622736 5745784 1623336 5745136 1623008 5745080 -1623336 5745136 1623008 5745080 1622736 5745784 1623528 5745200 -1622616 5745824 1622520 5746024 1622736 5745784 1623008 5745080 -1622736 5745784 1623792 5745368 1623592 5745240 1623528 5745200 -1622736 5745784 1623040 5747128 1623792 5745368 1623592 5745240 -1623040 5747128 1623792 5745368 1622736 5745784 1622760 5746984 -1623792 5745368 1622736 5745784 1623040 5747128 1624224 5745656 -1623792 5745368 1622736 5745784 1624224 5745656 1624032 5745472 -1623040 5747128 1623624 5747256 1624224 5745656 1622736 5745784 -1623624 5747256 1624272 5745688 1624224 5745656 1622736 5745784 -1623792 5745368 1623592 5745240 1622736 5745784 1624224 5745656 -1622736 5745784 1622760 5746984 1623040 5747128 1623624 5747256 -1624224 5745656 1623792 5745368 1622736 5745784 1623624 5747256 -1622616 5745824 1622736 5745784 1623008 5745080 1622936 5745096 -1622736 5745784 1623336 5745136 1623008 5745080 1622936 5745096 -1622616 5745824 1622520 5746024 1622736 5745784 1622936 5745096 -1622616 5745824 1622736 5745784 1622936 5745096 1622816 5745056 -1622616 5745824 1622736 5745784 1622816 5745056 1622336 5745456 -1622616 5745824 1622736 5745784 1622336 5745456 1622328 5745496 -1622736 5745784 1622816 5745056 1622336 5745456 1622328 5745496 -1622616 5745824 1622520 5746024 1622736 5745784 1622328 5745496 -1622736 5745784 1623008 5745080 1622936 5745096 1622816 5745056 -1622736 5745784 1622936 5745096 1622816 5745056 1622336 5745456 -1622616 5745824 1622736 5745784 1622328 5745496 1622584 5745840 -1623336 5745136 1623240 5745072 1623008 5745080 1622736 5745784 -1622816 5745056 1622680 5744976 1622336 5745456 1622736 5745784 -1622736 5745784 1622768 5745744 1623008 5745080 1622936 5745096 -1623336 5745136 1622768 5745744 1622736 5745784 1623528 5745200 -1622736 5745784 1623592 5745240 1623528 5745200 1622768 5745744 -1623528 5745200 1623336 5745136 1622768 5745744 1623592 5745240 -1622736 5745784 1623792 5745368 1623592 5745240 1622768 5745744 -1623592 5745240 1623528 5745200 1622768 5745744 1623792 5745368 -1623792 5745368 1623640 5745232 1623592 5745240 1622768 5745744 -1622736 5745784 1624224 5745656 1623792 5745368 1622768 5745744 -1624224 5745656 1624032 5745472 1623792 5745368 1622768 5745744 -1623792 5745368 1623592 5745240 1622768 5745744 1624224 5745656 -1622736 5745784 1624224 5745656 1622768 5745744 1622936 5745096 -1622768 5745744 1623336 5745136 1623008 5745080 1622936 5745096 -1623336 5745136 1623008 5745080 1622768 5745744 1623528 5745200 -1622736 5745784 1623624 5747256 1624224 5745656 1622768 5745744 -1623624 5747256 1624272 5745688 1624224 5745656 1622768 5745744 -1622736 5745784 1623040 5747128 1623624 5747256 1622768 5745744 -1624224 5745656 1623792 5745368 1622768 5745744 1623624 5747256 -1622736 5745784 1623040 5747128 1622768 5745744 1622936 5745096 -1622736 5745784 1622760 5746984 1623040 5747128 1622768 5745744 -1623624 5747256 1624224 5745656 1622768 5745744 1623040 5747128 -1622736 5745784 1622768 5745744 1622936 5745096 1622816 5745056 -1622768 5745744 1623008 5745080 1622936 5745096 1622816 5745056 -1622736 5745784 1623040 5747128 1622768 5745744 1622816 5745056 -1622736 5745784 1622768 5745744 1622816 5745056 1622336 5745456 -1622736 5745784 1622768 5745744 1622336 5745456 1622328 5745496 -1622736 5745784 1622768 5745744 1622328 5745496 1622616 5745824 -1622768 5745744 1622336 5745456 1622328 5745496 1622616 5745824 -1622736 5745784 1623040 5747128 1622768 5745744 1622616 5745824 -1622768 5745744 1622936 5745096 1622816 5745056 1622336 5745456 -1622768 5745744 1622816 5745056 1622336 5745456 1622328 5745496 -1622328 5745496 1622584 5745840 1622616 5745824 1622768 5745744 -1623008 5745080 1622768 5745744 1623336 5745136 1623240 5745072 -1622816 5745056 1622680 5744976 1622336 5745456 1622768 5745744 -1622936 5745096 1622776 5745704 1622768 5745744 1623008 5745080 -1622768 5745744 1623336 5745136 1623008 5745080 1622776 5745704 -1623008 5745080 1622936 5745096 1622776 5745704 1623336 5745136 -1622776 5745704 1622816 5745056 1622768 5745744 1623336 5745136 -1622768 5745744 1623528 5745200 1623336 5745136 1622776 5745704 -1622768 5745744 1623592 5745240 1623528 5745200 1622776 5745704 -1622768 5745744 1623792 5745368 1623592 5745240 1622776 5745704 -1623792 5745368 1623640 5745232 1623592 5745240 1622776 5745704 -1623592 5745240 1623528 5745200 1622776 5745704 1623792 5745368 -1622768 5745744 1624224 5745656 1623792 5745368 1622776 5745704 -1623336 5745136 1623008 5745080 1622776 5745704 1623528 5745200 -1622768 5745744 1623792 5745368 1622776 5745704 1622816 5745056 -1623528 5745200 1623336 5745136 1622776 5745704 1623592 5745240 -1622936 5745096 1622816 5745056 1622776 5745704 1623008 5745080 -1622768 5745744 1622776 5745704 1622816 5745056 1622336 5745456 -1622768 5745744 1623792 5745368 1622776 5745704 1622336 5745456 -1622776 5745704 1622936 5745096 1622816 5745056 1622336 5745456 -1622768 5745744 1622776 5745704 1622336 5745456 1622328 5745496 -1622768 5745744 1622776 5745704 1622328 5745496 1622616 5745824 -1622768 5745744 1622776 5745704 1622616 5745824 1622736 5745784 -1622776 5745704 1622328 5745496 1622616 5745824 1622736 5745784 -1622768 5745744 1623792 5745368 1622776 5745704 1622736 5745784 -1622776 5745704 1622816 5745056 1622336 5745456 1622328 5745496 -1622776 5745704 1622336 5745456 1622328 5745496 1622616 5745824 -1622328 5745496 1622584 5745840 1622616 5745824 1622776 5745704 -1623336 5745136 1623240 5745072 1623008 5745080 1622776 5745704 -1622816 5745056 1622680 5744976 1622336 5745456 1622776 5745704 -1622816 5745056 1622768 5745672 1622776 5745704 1622936 5745096 -1622768 5745672 1622336 5745456 1622776 5745704 1622936 5745096 -1622776 5745704 1623008 5745080 1622936 5745096 1622768 5745672 -1622776 5745704 1623336 5745136 1623008 5745080 1622768 5745672 -1622776 5745704 1623528 5745200 1623336 5745136 1622768 5745672 -1622936 5745096 1622816 5745056 1622768 5745672 1623008 5745080 -1622776 5745704 1623336 5745136 1622768 5745672 1622336 5745456 -1622776 5745704 1622768 5745672 1622336 5745456 1622328 5745496 -1622776 5745704 1623336 5745136 1622768 5745672 1622328 5745496 -1622776 5745704 1622768 5745672 1622328 5745496 1622616 5745824 -1622776 5745704 1622768 5745672 1622616 5745824 1622736 5745784 -1622776 5745704 1622768 5745672 1622736 5745784 1622768 5745744 -1622768 5745672 1622616 5745824 1622736 5745784 1622768 5745744 -1622776 5745704 1623336 5745136 1622768 5745672 1622768 5745744 -1622768 5745672 1622336 5745456 1622328 5745496 1622616 5745824 -1622768 5745672 1622328 5745496 1622616 5745824 1622736 5745784 -1622768 5745672 1622816 5745056 1622336 5745456 1622328 5745496 -1623008 5745080 1622936 5745096 1622768 5745672 1623336 5745136 -1622816 5745056 1622336 5745456 1622768 5745672 1622936 5745096 -1622328 5745496 1622584 5745840 1622616 5745824 1622768 5745672 -1623336 5745136 1623240 5745072 1623008 5745080 1622768 5745672 -1622336 5745456 1622768 5745672 1622816 5745056 1622680 5744976 -1622768 5745672 1622704 5745504 1622336 5745456 1622328 5745496 -1622768 5745672 1622704 5745504 1622328 5745496 1622616 5745824 -1622768 5745672 1622704 5745504 1622616 5745824 1622736 5745784 -1622704 5745504 1622336 5745456 1622328 5745496 1622616 5745824 -1622816 5745056 1622704 5745504 1622768 5745672 1622936 5745096 -1622768 5745672 1623008 5745080 1622936 5745096 1622704 5745504 -1622768 5745672 1623336 5745136 1623008 5745080 1622704 5745504 -1622936 5745096 1622816 5745056 1622704 5745504 1623008 5745080 -1622768 5745672 1623008 5745080 1622704 5745504 1622616 5745824 -1622704 5745504 1622816 5745056 1622336 5745456 1622328 5745496 -1622816 5745056 1622336 5745456 1622704 5745504 1622936 5745096 -1622328 5745496 1622584 5745840 1622616 5745824 1622704 5745504 -1622336 5745456 1622704 5745504 1622816 5745056 1622680 5744976 -1622336 5745456 1622704 5745504 1622680 5744976 1622576 5744960 -1622336 5745456 1622328 5745496 1622704 5745504 1622576 5744960 -1622704 5745504 1622936 5745096 1622816 5745056 1622680 5744976 -1622336 5745456 1622704 5745504 1622576 5744960 1622288 5745376 -1622704 5745504 1622680 5744976 1622576 5744960 1622288 5745376 -1622336 5745456 1622328 5745496 1622704 5745504 1622288 5745376 -1622576 5744960 1622216 5745152 1622288 5745376 1622704 5745504 -1622704 5745504 1622816 5745056 1622680 5744976 1622576 5744960 -1622816 5745056 1622704 5745408 1622704 5745504 1622936 5745096 -1622704 5745504 1623008 5745080 1622936 5745096 1622704 5745408 -1622704 5745504 1622768 5745672 1623008 5745080 1622704 5745408 -1622768 5745672 1623336 5745136 1623008 5745080 1622704 5745408 -1623008 5745080 1622936 5745096 1622704 5745408 1622768 5745672 -1622704 5745408 1622680 5744976 1622704 5745504 1622768 5745672 -1622936 5745096 1622816 5745056 1622704 5745408 1623008 5745080 -1622816 5745056 1622680 5744976 1622704 5745408 1622936 5745096 -1622704 5745504 1622704 5745408 1622680 5744976 1622576 5744960 -1622704 5745504 1622704 5745408 1622576 5744960 1622288 5745376 -1622704 5745504 1622768 5745672 1622704 5745408 1622288 5745376 -1622704 5745408 1622816 5745056 1622680 5744976 1622576 5744960 -1622576 5744960 1622216 5745152 1622288 5745376 1622704 5745408 -1622704 5745504 1622704 5745408 1622288 5745376 1622336 5745456 -1622704 5745408 1622576 5744960 1622288 5745376 1622336 5745456 -1622704 5745504 1622704 5745408 1622336 5745456 1622328 5745496 -1622704 5745504 1622768 5745672 1622704 5745408 1622336 5745456 -1622704 5745408 1622680 5744976 1622576 5744960 1622288 5745376 -1622936 5745096 1622720 5745384 1622704 5745408 1623008 5745080 -1622704 5745408 1622768 5745672 1623008 5745080 1622720 5745384 -1622704 5745408 1622704 5745504 1622768 5745672 1622720 5745384 -1622768 5745672 1623336 5745136 1623008 5745080 1622720 5745384 -1622768 5745672 1622776 5745704 1623336 5745136 1622720 5745384 -1622768 5745672 1623336 5745136 1622720 5745384 1622704 5745504 -1623008 5745080 1622936 5745096 1622720 5745384 1623336 5745136 -1622720 5745384 1622816 5745056 1622704 5745408 1622704 5745504 -1622704 5745408 1622720 5745384 1622816 5745056 1622680 5744976 -1622704 5745408 1622720 5745384 1622680 5744976 1622576 5744960 -1622704 5745408 1622704 5745504 1622720 5745384 1622576 5744960 -1622720 5745384 1622816 5745056 1622680 5744976 1622576 5744960 -1622720 5745384 1622936 5745096 1622816 5745056 1622680 5744976 -1622936 5745096 1622816 5745056 1622720 5745384 1623008 5745080 -1623336 5745136 1623240 5745072 1623008 5745080 1622720 5745384 -1622704 5745408 1622720 5745384 1622576 5744960 1622288 5745376 -1622704 5745408 1622720 5745384 1622288 5745376 1622336 5745456 -1622720 5745384 1622680 5744976 1622576 5744960 1622288 5745376 -1622704 5745408 1622704 5745504 1622720 5745384 1622288 5745376 -1622576 5744960 1622216 5745152 1622288 5745376 1622720 5745384 -1623336 5745136 1622792 5745344 1622720 5745384 1622768 5745672 -1623336 5745136 1622792 5745344 1622768 5745672 1622776 5745704 -1622720 5745384 1622704 5745504 1622768 5745672 1622792 5745344 -1622720 5745384 1622704 5745408 1622704 5745504 1622792 5745344 -1622768 5745672 1623336 5745136 1622792 5745344 1622704 5745504 -1622720 5745384 1622792 5745344 1623008 5745080 1622936 5745096 -1622792 5745344 1622936 5745096 1622720 5745384 1622704 5745504 -1622720 5745384 1622792 5745344 1622936 5745096 1622816 5745056 -1622792 5745344 1623008 5745080 1622936 5745096 1622816 5745056 -1622720 5745384 1622792 5745344 1622816 5745056 1622680 5744976 -1622720 5745384 1622704 5745504 1622792 5745344 1622816 5745056 -1622792 5745344 1623336 5745136 1623008 5745080 1622936 5745096 -1623336 5745136 1623008 5745080 1622792 5745344 1622768 5745672 -1623008 5745080 1622792 5745344 1623336 5745136 1623240 5745072 -1623336 5745136 1622840 5745328 1622768 5745672 1622776 5745704 -1623336 5745136 1622792 5745344 1622840 5745328 1622776 5745704 -1622840 5745328 1622792 5745344 1622768 5745672 1622776 5745704 -1623336 5745136 1622840 5745328 1622776 5745704 1623528 5745200 -1622768 5745672 1622840 5745328 1622792 5745344 1622704 5745504 -1622768 5745672 1622776 5745704 1622840 5745328 1622704 5745504 -1622792 5745344 1622720 5745384 1622704 5745504 1622840 5745328 -1622840 5745328 1623336 5745136 1622792 5745344 1622704 5745504 -1622792 5745344 1622840 5745328 1623336 5745136 1623008 5745080 -1622840 5745328 1622776 5745704 1623336 5745136 1623008 5745080 -1622792 5745344 1622840 5745328 1623008 5745080 1622936 5745096 -1622792 5745344 1622840 5745328 1622936 5745096 1622816 5745056 -1622792 5745344 1622840 5745328 1622816 5745056 1622720 5745384 -1622840 5745328 1623008 5745080 1622936 5745096 1622816 5745056 -1622792 5745344 1622704 5745504 1622840 5745328 1622816 5745056 -1622840 5745328 1623336 5745136 1623008 5745080 1622936 5745096 -1623336 5745136 1623240 5745072 1623008 5745080 1622840 5745328 -1622776 5745704 1623096 5745416 1623336 5745136 1622840 5745328 -1622776 5745704 1623096 5745416 1622840 5745328 1622768 5745672 -1623336 5745136 1623008 5745080 1622840 5745328 1623096 5745416 -1623096 5745416 1623528 5745200 1623336 5745136 1623008 5745080 -1622840 5745328 1622704 5745504 1622768 5745672 1623096 5745416 -1622776 5745704 1623528 5745200 1623096 5745416 1622768 5745672 -1623096 5745416 1623008 5745080 1622840 5745328 1622768 5745672 -1623528 5745200 1623096 5745416 1622776 5745704 1623592 5745240 -1623528 5745200 1623336 5745136 1623096 5745416 1623592 5745240 -1623096 5745416 1622768 5745672 1622776 5745704 1623592 5745240 -1622776 5745704 1623792 5745368 1623592 5745240 1623096 5745416 -1622776 5745704 1622768 5745744 1623792 5745368 1623096 5745416 -1623792 5745368 1623640 5745232 1623592 5745240 1623096 5745416 -1622776 5745704 1622768 5745744 1623096 5745416 1622768 5745672 -1623792 5745368 1623592 5745240 1623096 5745416 1622768 5745744 -1622768 5745744 1624224 5745656 1623792 5745368 1623096 5745416 -1623592 5745240 1623528 5745200 1623096 5745416 1623792 5745368 -1623008 5745080 1622936 5745096 1622840 5745328 1623096 5745416 -1623008 5745080 1622936 5745096 1623096 5745416 1623336 5745136 -1622840 5745328 1622768 5745672 1623096 5745416 1622936 5745096 -1622936 5745096 1622816 5745056 1622840 5745328 1623096 5745416 -1623336 5745136 1623240 5745072 1623008 5745080 1623096 5745416 -1623008 5745080 1622936 5745096 1623096 5745416 1623240 5745072 -1623336 5745136 1623240 5745072 1623096 5745416 1623528 5745200 -1623240 5745072 1623128 5745016 1623008 5745080 1623096 5745416 -1622768 5745744 1623120 5745440 1623096 5745416 1622776 5745704 -1622768 5745744 1623792 5745368 1623120 5745440 1622776 5745704 -1623120 5745440 1623792 5745368 1623096 5745416 1622776 5745704 -1623096 5745416 1622768 5745672 1622776 5745704 1623120 5745440 -1622776 5745704 1622768 5745744 1623120 5745440 1622768 5745672 -1623096 5745416 1622840 5745328 1622768 5745672 1623120 5745440 -1623096 5745416 1622768 5745672 1623120 5745440 1623792 5745368 -1623096 5745416 1623120 5745440 1623792 5745368 1623592 5745240 -1623792 5745368 1623640 5745232 1623592 5745240 1623120 5745440 -1623120 5745440 1622768 5745744 1623792 5745368 1623592 5745240 -1623096 5745416 1622768 5745672 1623120 5745440 1623592 5745240 -1623792 5745368 1623120 5745440 1622768 5745744 1624224 5745656 -1623792 5745368 1623120 5745440 1624224 5745656 1624032 5745472 -1623792 5745368 1623592 5745240 1623120 5745440 1624224 5745656 -1623120 5745440 1622776 5745704 1622768 5745744 1624224 5745656 -1622768 5745744 1623624 5747256 1624224 5745656 1623120 5745440 -1623096 5745416 1623120 5745440 1623592 5745240 1623528 5745200 -1623096 5745416 1623120 5745440 1623528 5745200 1623336 5745136 -1623096 5745416 1623120 5745440 1623336 5745136 1623240 5745072 -1623096 5745416 1622768 5745672 1623120 5745440 1623336 5745136 -1623120 5745440 1623792 5745368 1623592 5745240 1623528 5745200 -1623120 5745440 1623592 5745240 1623528 5745200 1623336 5745136 -1624224 5745656 1623712 5745712 1623624 5747256 1624272 5745688 -1624224 5745656 1622768 5745744 1623712 5745712 1624272 5745688 -1623712 5745712 1622768 5745744 1623624 5747256 1624272 5745688 -1622768 5745744 1623712 5745712 1624224 5745656 1623120 5745440 -1623712 5745712 1624272 5745688 1624224 5745656 1623120 5745440 -1622768 5745744 1623712 5745712 1623120 5745440 1622776 5745704 -1622768 5745744 1623624 5747256 1623712 5745712 1623120 5745440 -1624224 5745656 1623792 5745368 1623120 5745440 1623712 5745712 -1624224 5745656 1624032 5745472 1623792 5745368 1623712 5745712 -1624032 5745472 1623896 5745384 1623792 5745368 1623712 5745712 -1624032 5745472 1623896 5745384 1623712 5745712 1624224 5745656 -1623792 5745368 1623592 5745240 1623120 5745440 1623712 5745712 -1623792 5745368 1623640 5745232 1623592 5745240 1623712 5745712 -1624224 5745656 1624032 5745472 1623712 5745712 1624272 5745688 -1623592 5745240 1623528 5745200 1623120 5745440 1623712 5745712 -1623792 5745368 1623592 5745240 1623712 5745712 1623896 5745384 -1623120 5745440 1622768 5745744 1623712 5745712 1623592 5745240 -1623624 5747256 1623952 5747280 1624272 5745688 1623712 5745712 -1624272 5745688 1624224 5745656 1623712 5745712 1623952 5747280 -1623624 5747256 1623952 5747280 1623712 5745712 1622768 5745744 -1623624 5747256 1623712 5745712 1622768 5745744 1623040 5747128 -1622768 5745744 1622736 5745784 1623040 5747128 1623712 5745712 -1623624 5747256 1623952 5747280 1623712 5745712 1623040 5747128 -1623712 5745712 1623120 5745440 1622768 5745744 1622736 5745784 -1622736 5745784 1622760 5746984 1623040 5747128 1623712 5745712 -1623040 5747128 1623624 5747256 1623712 5745712 1622736 5745784 -1623952 5747280 1624120 5747304 1624272 5745688 1623712 5745712 -1623712 5745712 1623752 5745744 1624272 5745688 1624224 5745656 -1623712 5745712 1623752 5745744 1624224 5745656 1624032 5745472 -1623712 5745712 1623752 5745744 1624032 5745472 1623896 5745384 -1623712 5745712 1623752 5745744 1623896 5745384 1623792 5745368 -1623752 5745744 1624272 5745688 1624224 5745656 1624032 5745472 -1623752 5745744 1624224 5745656 1624032 5745472 1623896 5745384 -1623712 5745712 1623952 5747280 1623752 5745744 1623896 5745384 -1623752 5745744 1623952 5747280 1624272 5745688 1624224 5745656 -1623952 5747280 1623752 5745744 1623712 5745712 1623624 5747256 -1623712 5745712 1623040 5747128 1623624 5747256 1623752 5745744 -1623752 5745744 1623896 5745384 1623712 5745712 1623040 5747128 -1623952 5747280 1624272 5745688 1623752 5745744 1623624 5747256 -1623624 5747256 1623952 5747280 1623752 5745744 1623040 5747128 -1623712 5745712 1622736 5745784 1623040 5747128 1623752 5745744 -1623712 5745712 1622768 5745744 1622736 5745784 1623752 5745744 -1623040 5747128 1623624 5747256 1623752 5745744 1622736 5745784 -1623712 5745712 1622736 5745784 1623752 5745744 1623896 5745384 -1622736 5745784 1622760 5746984 1623040 5747128 1623752 5745744 -1624272 5745688 1623752 5745744 1623952 5747280 1624120 5747304 -1623752 5745744 1624088 5745888 1624272 5745688 1624224 5745656 -1623752 5745744 1624088 5745888 1624224 5745656 1624032 5745472 -1623752 5745744 1624088 5745888 1624032 5745472 1623896 5745384 -1624088 5745888 1624272 5745688 1624224 5745656 1624032 5745472 -1623752 5745744 1623952 5747280 1624088 5745888 1624032 5745472 -1623952 5747280 1624088 5745888 1623752 5745744 1623624 5747256 -1624088 5745888 1624032 5745472 1623752 5745744 1623624 5747256 -1623952 5747280 1624272 5745688 1624088 5745888 1623624 5747256 -1624088 5745888 1623952 5747280 1624272 5745688 1624224 5745656 -1623752 5745744 1623040 5747128 1623624 5747256 1624088 5745888 -1624272 5745688 1624088 5745888 1623952 5747280 1624120 5747304 -1624088 5745888 1623624 5747256 1623952 5747280 1624120 5747304 -1624272 5745688 1624224 5745656 1624088 5745888 1624120 5747304 -1624272 5745688 1624088 5745888 1624120 5747304 1624712 5745880 -1624272 5745688 1624224 5745656 1624088 5745888 1624712 5745880 -1624272 5745688 1624088 5745888 1624712 5745880 1624528 5745760 -1624272 5745688 1624224 5745656 1624088 5745888 1624528 5745760 -1624088 5745888 1624120 5747304 1624712 5745880 1624528 5745760 -1624088 5745888 1623952 5747280 1624120 5747304 1624712 5745880 -1624120 5747304 1625112 5746640 1624712 5745880 1624088 5745888 -1624120 5747304 1624384 5747352 1625112 5746640 1624088 5745888 -1624712 5745880 1624528 5745760 1624088 5745888 1625112 5746640 -1624120 5747304 1625112 5746640 1624088 5745888 1623952 5747280 -1625112 5746640 1624976 5746096 1624712 5745880 1624088 5745888 -1624712 5745880 1624528 5745760 1624088 5745888 1624976 5746096 -1625112 5746640 1624976 5746096 1624088 5745888 1624120 5747304 -1625112 5746640 1625232 5746360 1624976 5746096 1624088 5745888 -1625112 5746640 1624568 5746120 1624088 5745888 1624120 5747304 -1625112 5746640 1624568 5746120 1624120 5747304 1624384 5747352 -1624568 5746120 1624976 5746096 1624088 5745888 1624120 5747304 -1625112 5746640 1624568 5746120 1624384 5747352 1625152 5746720 -1625112 5746640 1624976 5746096 1624568 5746120 1624384 5747352 -1624088 5745888 1623952 5747280 1624120 5747304 1624568 5746120 -1624088 5745888 1623624 5747256 1623952 5747280 1624568 5746120 -1624088 5745888 1623952 5747280 1624568 5746120 1624976 5746096 -1624568 5746120 1623952 5747280 1624120 5747304 1624384 5747352 -1624088 5745888 1624568 5746120 1624976 5746096 1624712 5745880 -1624088 5745888 1623952 5747280 1624568 5746120 1624712 5745880 -1624568 5746120 1625112 5746640 1624976 5746096 1624712 5745880 -1624088 5745888 1624568 5746120 1624712 5745880 1624528 5745760 -1624088 5745888 1623952 5747280 1624568 5746120 1624528 5745760 -1624088 5745888 1624568 5746120 1624528 5745760 1624272 5745688 -1624568 5746120 1624976 5746096 1624712 5745880 1624528 5745760 -1624976 5746096 1624568 5746120 1625112 5746640 1625232 5746360 -1624568 5746120 1624848 5746288 1624976 5746096 1624712 5745880 -1625112 5746640 1624848 5746288 1624568 5746120 1624384 5747352 -1624568 5746120 1624120 5747304 1624384 5747352 1624848 5746288 -1625112 5746640 1624848 5746288 1624384 5747352 1625152 5746720 -1624848 5746288 1624976 5746096 1624568 5746120 1624384 5747352 -1625112 5746640 1624976 5746096 1624848 5746288 1624384 5747352 -1624976 5746096 1624848 5746288 1625112 5746640 1625232 5746360 -1624976 5746096 1624568 5746120 1624848 5746288 1625232 5746360 -1624848 5746288 1624384 5747352 1625112 5746640 1625232 5746360 -1625112 5746640 1625376 5746584 1625232 5746360 1624848 5746288 -1625112 5746640 1624864 5746312 1624384 5747352 1625152 5746720 -1624384 5747352 1624864 5746312 1624848 5746288 1624568 5746120 -1624384 5747352 1624864 5746312 1624568 5746120 1624120 5747304 -1624864 5746312 1625112 5746640 1624848 5746288 1624568 5746120 -1624848 5746288 1624864 5746312 1625112 5746640 1625232 5746360 -1624848 5746288 1624568 5746120 1624864 5746312 1625232 5746360 -1624864 5746312 1624384 5747352 1625112 5746640 1625232 5746360 -1624384 5747352 1625112 5746640 1624864 5746312 1624568 5746120 -1624848 5746288 1624864 5746312 1625232 5746360 1624976 5746096 -1624848 5746288 1624864 5746312 1624976 5746096 1624568 5746120 -1624848 5746288 1624568 5746120 1624864 5746312 1624976 5746096 -1624864 5746312 1625112 5746640 1625232 5746360 1624976 5746096 -1625112 5746640 1625376 5746584 1625232 5746360 1624864 5746312 -1624864 5746312 1624984 5746440 1625232 5746360 1624976 5746096 -1625112 5746640 1624984 5746440 1624864 5746312 1624384 5747352 -1625112 5746640 1624984 5746440 1624384 5747352 1625152 5746720 -1624864 5746312 1624384 5747352 1624984 5746440 1624976 5746096 -1624864 5746312 1624568 5746120 1624384 5747352 1624984 5746440 -1624984 5746440 1625112 5746640 1625232 5746360 1624976 5746096 -1625112 5746640 1625232 5746360 1624984 5746440 1624384 5747352 -1624864 5746312 1624984 5746440 1624976 5746096 1624848 5746288 -1625232 5746360 1624984 5746440 1625112 5746640 1625376 5746584 -1625152 5746720 1624872 5746968 1624632 5747488 1625240 5746976 -1624632 5747488 1625336 5747152 1625240 5746976 1624872 5746968 -1625240 5746976 1625152 5746720 1624872 5746968 1625336 5747152 -1624632 5747488 1624856 5747664 1625336 5747152 1624872 5746968 -1625336 5747152 1625240 5746976 1624872 5746968 1624856 5747664 -1624384 5747352 1624872 5746968 1625152 5746720 1625112 5746640 -1624384 5747352 1624872 5746968 1625112 5746640 1624984 5746440 -1624872 5746968 1625152 5746720 1625112 5746640 1624984 5746440 -1624856 5747664 1625032 5747760 1625336 5747152 1624872 5746968 -1624384 5747352 1624872 5746968 1624984 5746440 1624864 5746312 -1624872 5746968 1625112 5746640 1624984 5746440 1624864 5746312 -1624384 5747352 1624872 5746968 1624864 5746312 1624568 5746120 -1624384 5747352 1624872 5746968 1624568 5746120 1624120 5747304 -1624864 5746312 1624848 5746288 1624568 5746120 1624872 5746968 -1624872 5746968 1624984 5746440 1624864 5746312 1624568 5746120 -1624872 5746968 1624864 5746312 1624568 5746120 1624120 5747304 -1625152 5746720 1625112 5746640 1624872 5746968 1625240 5746976 -1624872 5746968 1624384 5747352 1624632 5747488 1624856 5747664 -1624384 5747352 1624632 5747488 1624872 5746968 1624120 5747304 -1624568 5746120 1623952 5747280 1624120 5747304 1624872 5746968 -1625240 5746976 1624928 5746968 1624872 5746968 1625336 5747152 -1624872 5746968 1624856 5747664 1625336 5747152 1624928 5746968 -1625336 5747152 1625240 5746976 1624928 5746968 1624856 5747664 -1624872 5746968 1624632 5747488 1624856 5747664 1624928 5746968 -1624856 5747664 1625336 5747152 1624928 5746968 1624632 5747488 -1624856 5747664 1625032 5747760 1625336 5747152 1624928 5746968 -1624872 5746968 1624928 5746968 1625152 5746720 1625112 5746640 -1624872 5746968 1624928 5746968 1625112 5746640 1624984 5746440 -1624872 5746968 1624384 5747352 1624632 5747488 1624928 5746968 -1624928 5746968 1625112 5746640 1624872 5746968 1624632 5747488 -1624928 5746968 1625240 5746976 1625152 5746720 1625112 5746640 -1625240 5746976 1625152 5746720 1624928 5746968 1625336 5747152 -1624856 5747664 1625024 5747040 1624928 5746968 1624632 5747488 -1624928 5746968 1625024 5747040 1625336 5747152 1625240 5746976 -1624928 5746968 1624872 5746968 1624632 5747488 1625024 5747040 -1624632 5747488 1624856 5747664 1625024 5747040 1624872 5746968 -1625336 5747152 1625024 5747040 1624856 5747664 1625032 5747760 -1624872 5746968 1624384 5747352 1624632 5747488 1625024 5747040 -1625024 5747040 1625240 5746976 1624928 5746968 1624872 5746968 -1624928 5746968 1625024 5747040 1625240 5746976 1625152 5746720 -1625024 5747040 1625336 5747152 1625240 5746976 1625152 5746720 -1624928 5746968 1625024 5747040 1625152 5746720 1625112 5746640 -1624928 5746968 1624872 5746968 1625024 5747040 1625152 5746720 -1625024 5747040 1624856 5747664 1625336 5747152 1625240 5746976 -1624856 5747664 1625336 5747152 1625024 5747040 1624632 5747488 -1625336 5747152 1625080 5747096 1624856 5747664 1625032 5747760 -1625336 5747152 1625080 5747096 1625032 5747760 1625552 5747448 -1625024 5747040 1625080 5747096 1625336 5747152 1625240 5746976 -1625024 5747040 1625080 5747096 1625240 5746976 1625152 5746720 -1625024 5747040 1624856 5747664 1625080 5747096 1625240 5746976 -1624856 5747664 1625080 5747096 1625024 5747040 1624632 5747488 -1625024 5747040 1624872 5746968 1624632 5747488 1625080 5747096 -1625080 5747096 1625240 5746976 1625024 5747040 1624632 5747488 -1625336 5747152 1625240 5746976 1625080 5747096 1625032 5747760 -1625080 5747096 1624632 5747488 1624856 5747664 1625032 5747760 -1625336 5747152 1625128 5747144 1625032 5747760 1625552 5747448 -1625336 5747152 1625080 5747096 1625128 5747144 1625552 5747448 -1625128 5747144 1625080 5747096 1625032 5747760 1625552 5747448 -1625032 5747760 1625232 5747816 1625552 5747448 1625128 5747144 -1625032 5747760 1625128 5747144 1625080 5747096 1624856 5747664 -1625032 5747760 1625552 5747448 1625128 5747144 1624856 5747664 -1625080 5747096 1625128 5747144 1625336 5747152 1625240 5746976 -1625128 5747144 1625552 5747448 1625336 5747152 1625240 5746976 -1625080 5747096 1625128 5747144 1625240 5746976 1625024 5747040 -1625128 5747144 1625240 5746976 1625080 5747096 1624856 5747664 -1625080 5747096 1624632 5747488 1624856 5747664 1625128 5747144 -1624856 5747664 1625032 5747760 1625128 5747144 1624632 5747488 -1625080 5747096 1625024 5747040 1624632 5747488 1625128 5747144 -1625080 5747096 1624632 5747488 1625128 5747144 1625240 5746976 -1625032 5747760 1625160 5747192 1625128 5747144 1624856 5747664 -1625160 5747192 1625552 5747448 1625128 5747144 1624856 5747664 -1625032 5747760 1625552 5747448 1625160 5747192 1624856 5747664 -1625552 5747448 1625160 5747192 1625032 5747760 1625232 5747816 -1625552 5747448 1625128 5747144 1625160 5747192 1625232 5747816 -1625160 5747192 1624856 5747664 1625032 5747760 1625232 5747816 -1625552 5747448 1625160 5747192 1625232 5747816 1625560 5747496 -1625128 5747144 1625160 5747192 1625552 5747448 1625336 5747152 -1625128 5747144 1625160 5747192 1625336 5747152 1625240 5746976 -1625128 5747144 1624856 5747664 1625160 5747192 1625336 5747152 -1625160 5747192 1625232 5747816 1625552 5747448 1625336 5747152 -1625128 5747144 1624632 5747488 1624856 5747664 1625160 5747192 -1625128 5747144 1624632 5747488 1625160 5747192 1625336 5747152 -1624856 5747664 1625032 5747760 1625160 5747192 1624632 5747488 -1625128 5747144 1625080 5747096 1624632 5747488 1625160 5747192 -1625160 5747192 1625192 5747288 1625552 5747448 1625336 5747152 -1625160 5747192 1625232 5747816 1625192 5747288 1625336 5747152 -1625192 5747288 1625232 5747816 1625552 5747448 1625336 5747152 -1625232 5747816 1625192 5747288 1625160 5747192 1625032 5747760 -1625192 5747288 1625336 5747152 1625160 5747192 1625032 5747760 -1625160 5747192 1624856 5747664 1625032 5747760 1625192 5747288 -1625160 5747192 1624632 5747488 1624856 5747664 1625192 5747288 -1625160 5747192 1624632 5747488 1625192 5747288 1625336 5747152 -1624856 5747664 1625032 5747760 1625192 5747288 1624632 5747488 -1625232 5747816 1625552 5747448 1625192 5747288 1625032 5747760 -1625032 5747760 1625232 5747816 1625192 5747288 1624856 5747664 -1625552 5747448 1625192 5747288 1625232 5747816 1625560 5747496 -1625232 5747816 1625560 5747592 1625560 5747496 1625192 5747288 -1625232 5747816 1625352 5747816 1625560 5747592 1625192 5747288 -1625552 5747448 1625336 5747152 1625192 5747288 1625560 5747496 -1625192 5747288 1625032 5747760 1625232 5747816 1625560 5747592 -1625560 5747496 1625552 5747448 1625192 5747288 1625560 5747592 -1625160 5747192 1625192 5747288 1625336 5747152 1625128 5747144 -1625160 5747192 1625128 5747144 1624632 5747488 1625192 5747288 -1624632 5747488 1624856 5747664 1625192 5747288 1625128 5747144 -1625160 5747192 1625128 5747144 1625192 5747288 1625336 5747152 -1625128 5747144 1625080 5747096 1624632 5747488 1625192 5747288 -1625192 5747288 1625200 5747336 1625560 5747592 1625560 5747496 -1625560 5747592 1625200 5747336 1625232 5747816 1625352 5747816 -1625192 5747288 1625232 5747816 1625200 5747336 1625560 5747496 -1625232 5747816 1625200 5747336 1625192 5747288 1625032 5747760 -1625200 5747336 1625560 5747496 1625192 5747288 1625032 5747760 -1625200 5747336 1625352 5747816 1625560 5747592 1625560 5747496 -1625200 5747336 1625032 5747760 1625232 5747816 1625352 5747816 -1625192 5747288 1624856 5747664 1625032 5747760 1625200 5747336 -1625192 5747288 1624632 5747488 1624856 5747664 1625200 5747336 -1625192 5747288 1625128 5747144 1624632 5747488 1625200 5747336 -1625192 5747288 1624632 5747488 1625200 5747336 1625560 5747496 -1625032 5747760 1625232 5747816 1625200 5747336 1624856 5747664 -1624856 5747664 1625032 5747760 1625200 5747336 1624632 5747488 -1625192 5747288 1625200 5747336 1625560 5747496 1625552 5747448 -1625200 5747336 1625560 5747592 1625560 5747496 1625552 5747448 -1625192 5747288 1625200 5747336 1625552 5747448 1625336 5747152 -1625192 5747288 1625200 5747336 1625336 5747152 1625160 5747192 -1625192 5747288 1624632 5747488 1625200 5747336 1625336 5747152 -1625200 5747336 1625560 5747496 1625552 5747448 1625336 5747152 -1625560 5747592 1625200 5747336 1625352 5747816 1625520 5747712 -1625200 5747336 1625216 5747392 1625352 5747816 1625560 5747592 -1625200 5747336 1625216 5747392 1625560 5747592 1625560 5747496 -1625200 5747336 1625216 5747392 1625560 5747496 1625552 5747448 -1625216 5747392 1625352 5747816 1625560 5747592 1625560 5747496 -1625216 5747392 1625560 5747592 1625560 5747496 1625552 5747448 -1625200 5747336 1625232 5747816 1625216 5747392 1625552 5747448 -1625232 5747816 1625216 5747392 1625200 5747336 1625032 5747760 -1625200 5747336 1624856 5747664 1625032 5747760 1625216 5747392 -1625216 5747392 1625552 5747448 1625200 5747336 1624856 5747664 -1625032 5747760 1625232 5747816 1625216 5747392 1624856 5747664 -1625216 5747392 1625232 5747816 1625352 5747816 1625560 5747592 -1625232 5747816 1625352 5747816 1625216 5747392 1625032 5747760 -1625200 5747336 1624632 5747488 1624856 5747664 1625216 5747392 -1625200 5747336 1625216 5747392 1625552 5747448 1625336 5747152 -1625216 5747392 1625560 5747496 1625552 5747448 1625336 5747152 -1625200 5747336 1625216 5747392 1625336 5747152 1625192 5747288 -1625200 5747336 1624856 5747664 1625216 5747392 1625336 5747152 -1625352 5747816 1625520 5747712 1625560 5747592 1625216 5747392 -1625352 5747816 1625400 5747824 1625520 5747712 1625216 5747392 -1625560 5747592 1625560 5747496 1625216 5747392 1625520 5747712 -1625352 5747816 1625520 5747712 1625216 5747392 1625232 5747816 -1625216 5747392 1625200 5747336 1624856 5747664 1625192 5747440 -1625216 5747392 1625200 5747336 1625192 5747440 1625232 5747816 -1624856 5747664 1625032 5747760 1625192 5747440 1625200 5747336 -1625216 5747392 1625192 5747440 1625232 5747816 1625352 5747816 -1625216 5747392 1625200 5747336 1625192 5747440 1625352 5747816 -1625216 5747392 1625192 5747440 1625352 5747816 1625520 5747712 -1625352 5747816 1625400 5747824 1625520 5747712 1625192 5747440 -1625216 5747392 1625200 5747336 1625192 5747440 1625520 5747712 -1625192 5747440 1625232 5747816 1625352 5747816 1625520 5747712 -1625192 5747440 1625032 5747760 1625232 5747816 1625352 5747816 -1625200 5747336 1624632 5747488 1624856 5747664 1625192 5747440 -1625200 5747336 1625192 5747288 1624632 5747488 1625192 5747440 -1625200 5747336 1624632 5747488 1625192 5747440 1625216 5747392 -1624856 5747664 1625032 5747760 1625192 5747440 1624632 5747488 -1625216 5747392 1625192 5747440 1625520 5747712 1625560 5747592 -1625216 5747392 1625192 5747440 1625560 5747592 1625560 5747496 -1625216 5747392 1625192 5747440 1625560 5747496 1625552 5747448 -1625216 5747392 1625192 5747440 1625552 5747448 1625336 5747152 -1625192 5747440 1625560 5747592 1625560 5747496 1625552 5747448 -1625216 5747392 1625200 5747336 1625192 5747440 1625552 5747448 -1625192 5747440 1625352 5747816 1625520 5747712 1625560 5747592 -1625192 5747440 1625520 5747712 1625560 5747592 1625560 5747496 -1624856 5747664 1625144 5747480 1625192 5747440 1624632 5747488 -1624856 5747664 1625032 5747760 1625144 5747480 1624632 5747488 -1625192 5747440 1625144 5747480 1625032 5747760 1625232 5747816 -1625144 5747480 1624856 5747664 1625032 5747760 1625232 5747816 -1625192 5747440 1625144 5747480 1625232 5747816 1625352 5747816 -1625192 5747440 1625144 5747480 1625352 5747816 1625520 5747712 -1625144 5747480 1625032 5747760 1625232 5747816 1625352 5747816 -1625144 5747480 1625352 5747816 1625192 5747440 1624632 5747488 -1625192 5747440 1625200 5747336 1624632 5747488 1625144 5747480 -1625200 5747336 1625192 5747288 1624632 5747488 1625144 5747480 -1625192 5747288 1625128 5747144 1624632 5747488 1625144 5747480 -1625192 5747288 1625128 5747144 1625144 5747480 1625200 5747336 -1625192 5747440 1625216 5747392 1625200 5747336 1625144 5747480 -1624632 5747488 1624856 5747664 1625144 5747480 1625128 5747144 -1625192 5747440 1625200 5747336 1625144 5747480 1625352 5747816 -1625200 5747336 1625192 5747288 1625144 5747480 1625192 5747440 -1625192 5747288 1625160 5747192 1625128 5747144 1625144 5747480 -1625128 5747144 1624632 5747488 1625144 5747480 1625160 5747192 -1625192 5747288 1625160 5747192 1625144 5747480 1625200 5747336 -1625128 5747144 1625080 5747096 1624632 5747488 1625144 5747480 -1625128 5747144 1625080 5747096 1625144 5747480 1625160 5747192 -1624632 5747488 1624856 5747664 1625144 5747480 1625080 5747096 -1625080 5747096 1625024 5747040 1624632 5747488 1625144 5747480 -1625144 5747480 1625112 5747488 1624856 5747664 1625032 5747760 -1625112 5747488 1624632 5747488 1624856 5747664 1625032 5747760 -1625144 5747480 1625112 5747488 1625032 5747760 1625232 5747816 -1625144 5747480 1624632 5747488 1625112 5747488 1625232 5747816 -1625112 5747488 1624856 5747664 1625032 5747760 1625232 5747816 -1624632 5747488 1625112 5747488 1625144 5747480 1625080 5747096 -1624632 5747488 1624856 5747664 1625112 5747488 1625080 5747096 -1625112 5747488 1625232 5747816 1625144 5747480 1625080 5747096 -1625144 5747480 1625112 5747488 1625232 5747816 1625352 5747816 -1624632 5747488 1625112 5747488 1625080 5747096 1625024 5747040 -1625144 5747480 1625128 5747144 1625080 5747096 1625112 5747488 -1625144 5747480 1625128 5747144 1625112 5747488 1625232 5747816 -1625144 5747480 1625160 5747192 1625128 5747144 1625112 5747488 -1625144 5747480 1625160 5747192 1625112 5747488 1625232 5747816 -1625080 5747096 1624632 5747488 1625112 5747488 1625128 5747144 -1625144 5747480 1625192 5747288 1625160 5747192 1625112 5747488 -1625144 5747480 1625192 5747288 1625112 5747488 1625232 5747816 -1625160 5747192 1625128 5747144 1625112 5747488 1625192 5747288 -1625144 5747480 1625200 5747336 1625192 5747288 1625112 5747488 -1625144 5747480 1625200 5747336 1625112 5747488 1625232 5747816 -1625144 5747480 1625192 5747440 1625200 5747336 1625112 5747488 -1625144 5747480 1625192 5747440 1625112 5747488 1625232 5747816 -1625200 5747336 1625192 5747288 1625112 5747488 1625192 5747440 -1625192 5747440 1625216 5747392 1625200 5747336 1625112 5747488 -1625192 5747288 1625160 5747192 1625112 5747488 1625200 5747336 -1625128 5747144 1625080 5747096 1625112 5747488 1625160 5747192 -1625112 5747488 1625024 5747528 1624856 5747664 1625032 5747760 -1625112 5747488 1624632 5747488 1625024 5747528 1625032 5747760 -1624632 5747488 1625024 5747528 1625112 5747488 1625080 5747096 -1625024 5747528 1625032 5747760 1625112 5747488 1625080 5747096 -1625024 5747528 1624632 5747488 1624856 5747664 1625032 5747760 -1624632 5747488 1624856 5747664 1625024 5747528 1625080 5747096 -1625112 5747488 1625024 5747528 1625032 5747760 1625232 5747816 -1625112 5747488 1625128 5747144 1625080 5747096 1625024 5747528 -1625112 5747488 1625128 5747144 1625024 5747528 1625032 5747760 -1625080 5747096 1624632 5747488 1625024 5747528 1625128 5747144 -1624632 5747488 1625024 5747528 1625080 5747096 1625024 5747040 -1625112 5747488 1625160 5747192 1625128 5747144 1625024 5747528 -1625112 5747488 1625160 5747192 1625024 5747528 1625032 5747760 -1625112 5747488 1625192 5747288 1625160 5747192 1625024 5747528 -1625112 5747488 1625192 5747288 1625024 5747528 1625032 5747760 -1625128 5747144 1625080 5747096 1625024 5747528 1625160 5747192 -1625112 5747488 1625200 5747336 1625192 5747288 1625024 5747528 -1625160 5747192 1625128 5747144 1625024 5747528 1625192 5747288 -1625024 5747528 1624984 5747528 1624856 5747664 1625032 5747760 -1625024 5747528 1624984 5747528 1625032 5747760 1625112 5747488 -1625024 5747528 1624632 5747488 1624984 5747528 1625032 5747760 -1624632 5747488 1624984 5747528 1625024 5747528 1625080 5747096 -1625024 5747528 1625128 5747144 1625080 5747096 1624984 5747528 -1624984 5747528 1625032 5747760 1625024 5747528 1625128 5747144 -1625080 5747096 1624632 5747488 1624984 5747528 1625128 5747144 -1624984 5747528 1624632 5747488 1624856 5747664 1625032 5747760 -1624632 5747488 1624856 5747664 1624984 5747528 1625080 5747096 -1625024 5747528 1625160 5747192 1625128 5747144 1624984 5747528 -1625128 5747144 1625080 5747096 1624984 5747528 1625160 5747192 -1625024 5747528 1625160 5747192 1624984 5747528 1625032 5747760 -1624632 5747488 1624984 5747528 1625080 5747096 1625024 5747040 -1624984 5747528 1625128 5747144 1625080 5747096 1625024 5747040 -1624632 5747488 1624856 5747664 1624984 5747528 1625024 5747040 -1624632 5747488 1624984 5747528 1625024 5747040 1624872 5746968 -1625024 5747528 1625192 5747288 1625160 5747192 1624984 5747528 -1625024 5747528 1625192 5747288 1624984 5747528 1625032 5747760 -1625024 5747528 1625112 5747488 1625192 5747288 1624984 5747528 -1625024 5747528 1625112 5747488 1624984 5747528 1625032 5747760 -1625160 5747192 1625128 5747144 1624984 5747528 1625192 5747288 -1625112 5747488 1625200 5747336 1625192 5747288 1624984 5747528 -1625192 5747288 1625160 5747192 1624984 5747528 1625112 5747488 -1624984 5747528 1624888 5747480 1624632 5747488 1624856 5747664 -1624984 5747528 1624888 5747480 1624856 5747664 1625032 5747760 -1624984 5747528 1625024 5747040 1624888 5747480 1624856 5747664 -1624888 5747480 1625024 5747040 1624632 5747488 1624856 5747664 -1624632 5747488 1624888 5747480 1625024 5747040 1624872 5746968 -1624632 5747488 1624856 5747664 1624888 5747480 1624872 5746968 -1624888 5747480 1624984 5747528 1625024 5747040 1624872 5746968 -1625024 5747040 1624928 5746968 1624872 5746968 1624888 5747480 -1624632 5747488 1624888 5747480 1624872 5746968 1624384 5747352 -1625024 5747040 1624888 5747480 1624984 5747528 1625080 5747096 -1624984 5747528 1625128 5747144 1625080 5747096 1624888 5747480 -1624984 5747528 1625160 5747192 1625128 5747144 1624888 5747480 -1625128 5747144 1625080 5747096 1624888 5747480 1625160 5747192 -1624888 5747480 1624856 5747664 1624984 5747528 1625160 5747192 -1625024 5747040 1624872 5746968 1624888 5747480 1625080 5747096 -1624984 5747528 1625192 5747288 1625160 5747192 1624888 5747480 -1625160 5747192 1625128 5747144 1624888 5747480 1625192 5747288 -1624984 5747528 1625192 5747288 1624888 5747480 1624856 5747664 -1625080 5747096 1625024 5747040 1624888 5747480 1625128 5747144 -1624984 5747528 1625112 5747488 1625192 5747288 1624888 5747480 -1624984 5747528 1625112 5747488 1624888 5747480 1624856 5747664 -1624984 5747528 1625024 5747528 1625112 5747488 1624888 5747480 -1624984 5747528 1625024 5747528 1624888 5747480 1624856 5747664 -1625192 5747288 1625160 5747192 1624888 5747480 1625112 5747488 -1625112 5747488 1625200 5747336 1625192 5747288 1624888 5747480 -1625112 5747488 1625192 5747288 1624888 5747480 1625024 5747528 -1624888 5747480 1624840 5747456 1624632 5747488 1624856 5747664 -1624888 5747480 1624840 5747456 1624856 5747664 1624984 5747528 -1624888 5747480 1624872 5746968 1624840 5747456 1624856 5747664 -1624840 5747456 1624872 5746968 1624632 5747488 1624856 5747664 -1624872 5746968 1624840 5747456 1624888 5747480 1625024 5747040 -1624840 5747456 1624856 5747664 1624888 5747480 1625024 5747040 -1624888 5747480 1625080 5747096 1625024 5747040 1624840 5747456 -1624888 5747480 1625080 5747096 1624840 5747456 1624856 5747664 -1624872 5746968 1624632 5747488 1624840 5747456 1625024 5747040 -1625024 5747040 1624872 5746968 1624840 5747456 1625080 5747096 -1624872 5746968 1624840 5747456 1625024 5747040 1624928 5746968 -1624632 5747488 1624840 5747456 1624872 5746968 1624384 5747352 -1624888 5747480 1625128 5747144 1625080 5747096 1624840 5747456 -1624888 5747480 1625160 5747192 1625128 5747144 1624840 5747456 -1624888 5747480 1625128 5747144 1624840 5747456 1624856 5747664 -1625080 5747096 1625024 5747040 1624840 5747456 1625128 5747144 -1624840 5747456 1624784 5747376 1624632 5747488 1624856 5747664 -1624872 5746968 1624784 5747376 1624840 5747456 1625024 5747040 -1624784 5747376 1624632 5747488 1624840 5747456 1625024 5747040 -1624872 5746968 1624632 5747488 1624784 5747376 1625024 5747040 -1624840 5747456 1625080 5747096 1625024 5747040 1624784 5747376 -1624840 5747456 1625128 5747144 1625080 5747096 1624784 5747376 -1624840 5747456 1625128 5747144 1624784 5747376 1624632 5747488 -1625024 5747040 1624872 5746968 1624784 5747376 1625080 5747096 -1625080 5747096 1625024 5747040 1624784 5747376 1625128 5747144 -1624872 5746968 1624784 5747376 1625024 5747040 1624928 5746968 -1624632 5747488 1624784 5747376 1624872 5746968 1624384 5747352 -1624632 5747488 1624840 5747456 1624784 5747376 1624384 5747352 -1624784 5747376 1625024 5747040 1624872 5746968 1624384 5747352 -1624872 5746968 1624120 5747304 1624384 5747352 1624784 5747376 -1624840 5747456 1624888 5747480 1625128 5747144 1624784 5747376 -1624888 5747480 1625160 5747192 1625128 5747144 1624784 5747376 -1624888 5747480 1625192 5747288 1625160 5747192 1624784 5747376 -1625128 5747144 1625080 5747096 1624784 5747376 1625160 5747192 -1624840 5747456 1624888 5747480 1624784 5747376 1624632 5747488 -1624888 5747480 1625160 5747192 1624784 5747376 1624840 5747456 -1624872 5746968 1624760 5747328 1624784 5747376 1625024 5747040 -1624784 5747376 1625080 5747096 1625024 5747040 1624760 5747328 -1624760 5747328 1624384 5747352 1624784 5747376 1625080 5747096 -1625024 5747040 1624872 5746968 1624760 5747328 1625080 5747096 -1624872 5746968 1624384 5747352 1624760 5747328 1625024 5747040 -1624784 5747376 1625128 5747144 1625080 5747096 1624760 5747328 -1624872 5746968 1624760 5747328 1625024 5747040 1624928 5746968 -1624784 5747376 1624760 5747328 1624384 5747352 1624632 5747488 -1624784 5747376 1624760 5747328 1624632 5747488 1624840 5747456 -1624784 5747376 1625080 5747096 1624760 5747328 1624632 5747488 -1624760 5747328 1624872 5746968 1624384 5747352 1624632 5747488 -1624384 5747352 1624760 5747328 1624872 5746968 1624120 5747304 -1624760 5747328 1624744 5747272 1624384 5747352 1624632 5747488 -1624760 5747328 1624872 5746968 1624744 5747272 1624632 5747488 -1624872 5746968 1624744 5747272 1624760 5747328 1625024 5747040 -1624760 5747328 1625080 5747096 1625024 5747040 1624744 5747272 -1624760 5747328 1624784 5747376 1625080 5747096 1624744 5747272 -1624744 5747272 1624632 5747488 1624760 5747328 1625080 5747096 -1625024 5747040 1624872 5746968 1624744 5747272 1625080 5747096 -1624744 5747272 1624872 5746968 1624384 5747352 1624632 5747488 -1624872 5746968 1624384 5747352 1624744 5747272 1625024 5747040 -1624872 5746968 1624744 5747272 1625024 5747040 1624928 5746968 -1624760 5747328 1624744 5747272 1624632 5747488 1624784 5747376 -1624384 5747352 1624744 5747272 1624872 5746968 1624120 5747304 -1624744 5747272 1624760 5747168 1624384 5747352 1624632 5747488 -1624872 5746968 1624760 5747168 1624744 5747272 1625024 5747040 -1624744 5747272 1625080 5747096 1625024 5747040 1624760 5747168 -1624744 5747272 1624760 5747328 1625080 5747096 1624760 5747168 -1624760 5747328 1624784 5747376 1625080 5747096 1624760 5747168 -1625080 5747096 1625024 5747040 1624760 5747168 1624760 5747328 -1624760 5747168 1624384 5747352 1624744 5747272 1624760 5747328 -1625024 5747040 1624872 5746968 1624760 5747168 1625080 5747096 -1624872 5746968 1624384 5747352 1624760 5747168 1625024 5747040 -1624872 5746968 1624760 5747168 1625024 5747040 1624928 5746968 -1624384 5747352 1624760 5747168 1624872 5746968 1624120 5747304 -1624760 5747168 1624792 5747080 1624384 5747352 1624744 5747272 -1624872 5746968 1624792 5747080 1624760 5747168 1625024 5747040 -1624760 5747168 1625080 5747096 1625024 5747040 1624792 5747080 -1624792 5747080 1624384 5747352 1624760 5747168 1625024 5747040 -1624872 5746968 1624384 5747352 1624792 5747080 1625024 5747040 -1624872 5746968 1624792 5747080 1625024 5747040 1624928 5746968 -1624792 5747080 1624760 5747168 1625024 5747040 1624928 5746968 -1624872 5746968 1624384 5747352 1624792 5747080 1624928 5746968 -1624384 5747352 1624792 5747080 1624872 5746968 1624120 5747304 -1624872 5746968 1624568 5746120 1624120 5747304 1624792 5747080 -1624384 5747352 1624760 5747168 1624792 5747080 1624120 5747304 -1624792 5747080 1624928 5746968 1624872 5746968 1624568 5746120 -1624872 5746968 1624864 5746312 1624568 5746120 1624792 5747080 -1624120 5747304 1624384 5747352 1624792 5747080 1624568 5746120 -1624568 5746120 1623952 5747280 1624120 5747304 1624792 5747080 -1624792 5747080 1624824 5747008 1624568 5746120 1624120 5747304 -1624792 5747080 1624872 5746968 1624824 5747008 1624120 5747304 -1624872 5746968 1624824 5747008 1624792 5747080 1624928 5746968 -1624824 5747008 1624120 5747304 1624792 5747080 1624928 5746968 -1624824 5747008 1624872 5746968 1624568 5746120 1624120 5747304 -1624872 5746968 1624568 5746120 1624824 5747008 1624928 5746968 -1624792 5747080 1625024 5747040 1624928 5746968 1624824 5747008 -1624792 5747080 1624760 5747168 1625024 5747040 1624824 5747008 -1624792 5747080 1625024 5747040 1624824 5747008 1624120 5747304 -1624928 5746968 1624872 5746968 1624824 5747008 1625024 5747040 -1624568 5746120 1624824 5747008 1624872 5746968 1624864 5746312 -1624568 5746120 1624120 5747304 1624824 5747008 1624864 5746312 -1624824 5747008 1624928 5746968 1624872 5746968 1624864 5746312 -1624568 5746120 1624824 5747008 1624864 5746312 1624848 5746288 -1624872 5746968 1624984 5746440 1624864 5746312 1624824 5747008 -1624792 5747080 1624824 5747008 1624120 5747304 1624384 5747352 -1624568 5746120 1623952 5747280 1624120 5747304 1624824 5747008 -1623752 5745744 1623176 5746616 1623040 5747128 1623624 5747256 -1623176 5746616 1622736 5745784 1623040 5747128 1623624 5747256 -1623752 5745744 1622736 5745784 1623176 5746616 1623624 5747256 -1623040 5747128 1623176 5746616 1622736 5745784 1622760 5746984 -1623040 5747128 1623624 5747256 1623176 5746616 1622760 5746984 -1623176 5746616 1623752 5745744 1622736 5745784 1622760 5746984 -1622736 5745784 1622520 5746024 1622760 5746984 1623176 5746616 -1622736 5745784 1622520 5746024 1623176 5746616 1623752 5745744 -1622520 5746024 1622528 5746824 1622760 5746984 1623176 5746616 -1622520 5746024 1622456 5746736 1622528 5746824 1623176 5746616 -1622520 5746024 1622448 5746048 1622456 5746736 1623176 5746616 -1622528 5746824 1622760 5746984 1623176 5746616 1622456 5746736 -1622736 5745784 1622616 5745824 1622520 5746024 1623176 5746616 -1622520 5746024 1622456 5746736 1623176 5746616 1622736 5745784 -1622760 5746984 1623040 5747128 1623176 5746616 1622528 5746824 -1623752 5745744 1623176 5746616 1623624 5747256 1624088 5745888 -1623752 5745744 1622736 5745784 1623176 5746616 1624088 5745888 -1623176 5746616 1623040 5747128 1623624 5747256 1624088 5745888 -1623624 5747256 1623952 5747280 1624088 5745888 1623176 5746616 -1623624 5747256 1623952 5747280 1623176 5746616 1623040 5747128 -1623952 5747280 1624568 5746120 1624088 5745888 1623176 5746616 -1624088 5745888 1623752 5745744 1623176 5746616 1623952 5747280 -1622736 5745784 1623176 5746616 1623752 5745744 1623712 5745712 -1622736 5745784 1622520 5746024 1623176 5746616 1623712 5745712 -1623176 5746616 1624088 5745888 1623752 5745744 1623712 5745712 -1622736 5745784 1623176 5746616 1623712 5745712 1622768 5745744 -1622736 5745784 1622520 5746024 1623176 5746616 1622768 5745744 -1623712 5745712 1623120 5745440 1622768 5745744 1623176 5746616 -1623176 5746616 1623752 5745744 1623712 5745712 1622768 5745744 -1623952 5747280 1623248 5746632 1623176 5746616 1623624 5747256 -1623248 5746632 1624088 5745888 1623176 5746616 1623624 5747256 -1623952 5747280 1624088 5745888 1623248 5746632 1623624 5747256 -1623176 5746616 1623040 5747128 1623624 5747256 1623248 5746632 -1623176 5746616 1622760 5746984 1623040 5747128 1623248 5746632 -1623176 5746616 1623040 5747128 1623248 5746632 1624088 5745888 -1623624 5747256 1623952 5747280 1623248 5746632 1623040 5747128 -1624088 5745888 1623248 5746632 1623952 5747280 1624568 5746120 -1623176 5746616 1623248 5746632 1624088 5745888 1623752 5745744 -1623176 5746616 1623040 5747128 1623248 5746632 1623752 5745744 -1623176 5746616 1623248 5746632 1623752 5745744 1623712 5745712 -1623176 5746616 1623040 5747128 1623248 5746632 1623712 5745712 -1623248 5746632 1623952 5747280 1624088 5745888 1623752 5745744 -1623248 5746632 1624088 5745888 1623752 5745744 1623712 5745712 -1623176 5746616 1623248 5746632 1623712 5745712 1622768 5745744 -1623248 5746632 1623352 5746592 1624088 5745888 1623752 5745744 -1623248 5746632 1623952 5747280 1623352 5746592 1623752 5745744 -1623952 5747280 1623352 5746592 1623248 5746632 1623624 5747256 -1623352 5746592 1623752 5745744 1623248 5746632 1623624 5747256 -1623352 5746592 1623952 5747280 1624088 5745888 1623752 5745744 -1623952 5747280 1624088 5745888 1623352 5746592 1623624 5747256 -1623248 5746632 1623040 5747128 1623624 5747256 1623352 5746592 -1624088 5745888 1623352 5746592 1623952 5747280 1624568 5746120 -1624088 5745888 1623752 5745744 1623352 5746592 1624568 5746120 -1623352 5746592 1623624 5747256 1623952 5747280 1624568 5746120 -1623248 5746632 1623352 5746592 1623752 5745744 1623712 5745712 -1623248 5746632 1623352 5746592 1623712 5745712 1623176 5746616 -1623352 5746592 1624088 5745888 1623752 5745744 1623712 5745712 -1623248 5746632 1623624 5747256 1623352 5746592 1623176 5746616 -1623352 5746592 1623752 5745744 1623712 5745712 1623176 5746616 -1623712 5745712 1622768 5745744 1623176 5746616 1623352 5746592 -1623176 5746616 1623248 5746632 1623352 5746592 1622768 5745744 -1622768 5745744 1622736 5745784 1623176 5746616 1623352 5746592 -1623712 5745712 1623120 5745440 1622768 5745744 1623352 5746592 -1623712 5745712 1622768 5745744 1623352 5746592 1623752 5745744 -1623952 5747280 1624120 5747304 1624568 5746120 1623352 5746592 -1623352 5746592 1623416 5746528 1623752 5745744 1623712 5745712 -1624088 5745888 1623416 5746528 1623352 5746592 1624568 5746120 -1623352 5746592 1624568 5746120 1623416 5746528 1623712 5745712 -1623416 5746528 1624088 5745888 1623752 5745744 1623712 5745712 -1624088 5745888 1623752 5745744 1623416 5746528 1624568 5746120 -1623352 5746592 1623952 5747280 1624568 5746120 1623416 5746528 -1624568 5746120 1624088 5745888 1623416 5746528 1623952 5747280 -1623352 5746592 1623952 5747280 1623416 5746528 1623712 5745712 -1623352 5746592 1623624 5747256 1623952 5747280 1623416 5746528 -1623352 5746592 1623248 5746632 1623624 5747256 1623416 5746528 -1623352 5746592 1623624 5747256 1623416 5746528 1623712 5745712 -1623952 5747280 1624568 5746120 1623416 5746528 1623624 5747256 -1623352 5746592 1623416 5746528 1623712 5745712 1622768 5745744 -1623416 5746528 1623752 5745744 1623712 5745712 1622768 5745744 -1623352 5746592 1623624 5747256 1623416 5746528 1622768 5745744 -1623712 5745712 1623120 5745440 1622768 5745744 1623416 5746528 -1623352 5746592 1623416 5746528 1622768 5745744 1623176 5746616 -1623352 5746592 1623416 5746528 1623176 5746616 1623248 5746632 -1623352 5746592 1623624 5747256 1623416 5746528 1623176 5746616 -1622768 5745744 1622736 5745784 1623176 5746616 1623416 5746528 -1622736 5745784 1622520 5746024 1623176 5746616 1623416 5746528 -1623416 5746528 1623712 5745712 1622768 5745744 1622736 5745784 -1623176 5746616 1623352 5746592 1623416 5746528 1622736 5745784 -1623952 5747280 1624120 5747304 1624568 5746120 1623416 5746528 -1623416 5746528 1623472 5746464 1623752 5745744 1623712 5745712 -1623472 5746464 1624088 5745888 1623752 5745744 1623712 5745712 -1623416 5746528 1623472 5746464 1623712 5745712 1622768 5745744 -1623472 5746464 1623752 5745744 1623712 5745712 1622768 5745744 -1623416 5746528 1624088 5745888 1623472 5746464 1622768 5745744 -1624088 5745888 1623472 5746464 1623416 5746528 1624568 5746120 -1624088 5745888 1623752 5745744 1623472 5746464 1624568 5746120 -1623416 5746528 1623952 5747280 1624568 5746120 1623472 5746464 -1623472 5746464 1622768 5745744 1623416 5746528 1623952 5747280 -1624568 5746120 1624088 5745888 1623472 5746464 1623952 5747280 -1623712 5745712 1623120 5745440 1622768 5745744 1623472 5746464 -1623416 5746528 1623624 5747256 1623952 5747280 1623472 5746464 -1623952 5747280 1624568 5746120 1623472 5746464 1623624 5747256 -1623416 5746528 1623352 5746592 1623624 5747256 1623472 5746464 -1623416 5746528 1623624 5747256 1623472 5746464 1622768 5745744 -1623416 5746528 1623472 5746464 1622768 5745744 1622736 5745784 -1623472 5746464 1623712 5745712 1622768 5745744 1622736 5745784 -1623416 5746528 1623624 5747256 1623472 5746464 1622736 5745784 -1623416 5746528 1623472 5746464 1622736 5745784 1623176 5746616 -1622736 5745784 1622520 5746024 1623176 5746616 1623472 5746464 -1623416 5746528 1623624 5747256 1623472 5746464 1623176 5746616 -1623472 5746464 1622768 5745744 1622736 5745784 1623176 5746616 -1623416 5746528 1623472 5746464 1623176 5746616 1623352 5746592 -1623952 5747280 1624120 5747304 1624568 5746120 1623472 5746464 -1623472 5746464 1623656 5746368 1624088 5745888 1623752 5745744 -1623472 5746464 1623656 5746368 1623752 5745744 1623712 5745712 -1623472 5746464 1624568 5746120 1623656 5746368 1623712 5745712 -1623656 5746368 1624088 5745888 1623752 5745744 1623712 5745712 -1623656 5746368 1624568 5746120 1624088 5745888 1623752 5745744 -1623472 5746464 1623656 5746368 1623712 5745712 1622768 5745744 -1624568 5746120 1623656 5746368 1623472 5746464 1623952 5747280 -1623656 5746368 1623712 5745712 1623472 5746464 1623952 5747280 -1624568 5746120 1624088 5745888 1623656 5746368 1623952 5747280 -1623472 5746464 1623624 5747256 1623952 5747280 1623656 5746368 -1623472 5746464 1623624 5747256 1623656 5746368 1623712 5745712 -1623952 5747280 1624568 5746120 1623656 5746368 1623624 5747256 -1623472 5746464 1623416 5746528 1623624 5747256 1623656 5746368 -1623472 5746464 1623416 5746528 1623656 5746368 1623712 5745712 -1623624 5747256 1623952 5747280 1623656 5746368 1623416 5746528 -1623416 5746528 1623352 5746592 1623624 5747256 1623656 5746368 -1624568 5746120 1623656 5746368 1623952 5747280 1624120 5747304 -1624568 5746120 1624088 5745888 1623656 5746368 1624120 5747304 -1623656 5746368 1623624 5747256 1623952 5747280 1624120 5747304 -1624568 5746120 1623656 5746368 1624120 5747304 1624824 5747008 -1623656 5746368 1623696 5746320 1623752 5745744 1623712 5745712 -1623656 5746368 1623696 5746320 1623712 5745712 1623472 5746464 -1623696 5746320 1623752 5745744 1623712 5745712 1623472 5746464 -1624088 5745888 1623696 5746320 1623656 5746368 1624568 5746120 -1623656 5746368 1624568 5746120 1623696 5746320 1623472 5746464 -1623656 5746368 1624120 5747304 1624568 5746120 1623696 5746320 -1624568 5746120 1624088 5745888 1623696 5746320 1624120 5747304 -1623656 5746368 1624120 5747304 1623696 5746320 1623472 5746464 -1623696 5746320 1624088 5745888 1623752 5745744 1623712 5745712 -1624088 5745888 1623752 5745744 1623696 5746320 1624568 5746120 -1623712 5745712 1622768 5745744 1623472 5746464 1623696 5746320 -1623656 5746368 1623952 5747280 1624120 5747304 1623696 5746320 -1624120 5747304 1624824 5747008 1624568 5746120 1623696 5746320 -1623696 5746320 1623728 5746320 1624568 5746120 1624088 5745888 -1624120 5747304 1623728 5746320 1623696 5746320 1623656 5746368 -1623696 5746320 1623656 5746368 1623728 5746320 1624088 5745888 -1623696 5746320 1623728 5746320 1624088 5745888 1623752 5745744 -1623728 5746320 1624568 5746120 1624088 5745888 1623752 5745744 -1623696 5746320 1623728 5746320 1623752 5745744 1623712 5745712 -1623696 5746320 1623656 5746368 1623728 5746320 1623752 5745744 -1623728 5746320 1624120 5747304 1624568 5746120 1624088 5745888 -1624120 5747304 1624568 5746120 1623728 5746320 1623656 5746368 -1624120 5747304 1623728 5746320 1623656 5746368 1623952 5747280 -1623728 5746320 1623696 5746320 1623656 5746368 1623952 5747280 -1624120 5747304 1624568 5746120 1623728 5746320 1623952 5747280 -1623656 5746368 1623624 5747256 1623952 5747280 1623728 5746320 -1624568 5746120 1623728 5746320 1624120 5747304 1624824 5747008 -1624088 5745888 1623768 5746176 1623728 5746320 1624568 5746120 -1623728 5746320 1623768 5746176 1623752 5745744 1623696 5746320 -1623752 5745744 1623712 5745712 1623696 5746320 1623768 5746176 -1623712 5745712 1623472 5746464 1623696 5746320 1623768 5746176 -1623472 5746464 1623656 5746368 1623696 5746320 1623768 5746176 -1623712 5745712 1623472 5746464 1623768 5746176 1623752 5745744 -1623696 5746320 1623728 5746320 1623768 5746176 1623472 5746464 -1623728 5746320 1624120 5747304 1624568 5746120 1623768 5746176 -1623768 5746176 1623696 5746320 1623728 5746320 1624568 5746120 -1623768 5746176 1624088 5745888 1623752 5745744 1623712 5745712 -1624088 5745888 1623752 5745744 1623768 5746176 1624568 5746120 -1623712 5745712 1622768 5745744 1623472 5746464 1623768 5746176 -1623768 5746176 1623744 5746096 1623472 5746464 1623696 5746320 -1623472 5746464 1623656 5746368 1623696 5746320 1623744 5746096 -1623696 5746320 1623768 5746176 1623744 5746096 1623656 5746368 -1623712 5745712 1623744 5746096 1623768 5746176 1623752 5745744 -1623768 5746176 1623744 5746096 1623696 5746320 1623728 5746320 -1623768 5746176 1624088 5745888 1623752 5745744 1623744 5746096 -1623752 5745744 1623712 5745712 1623744 5746096 1624088 5745888 -1623768 5746176 1624088 5745888 1623744 5746096 1623696 5746320 -1623768 5746176 1624568 5746120 1624088 5745888 1623744 5746096 -1623744 5746096 1623712 5745712 1623472 5746464 1623656 5746368 -1623712 5745712 1623472 5746464 1623744 5746096 1623752 5745744 -1623472 5746464 1623744 5746096 1623712 5745712 1622768 5745744 -1623472 5746464 1623656 5746368 1623744 5746096 1622768 5745744 -1623744 5746096 1623752 5745744 1623712 5745712 1622768 5745744 -1623472 5746464 1623744 5746096 1622768 5745744 1622736 5745784 -1623712 5745712 1623120 5745440 1622768 5745744 1623744 5746096 -1623744 5746096 1623784 5746016 1623752 5745744 1623712 5745712 -1624088 5745888 1623784 5746016 1623744 5746096 1623768 5746176 -1624088 5745888 1623784 5746016 1623768 5746176 1624568 5746120 -1623744 5746096 1623768 5746176 1623784 5746016 1623712 5745712 -1623744 5746096 1623784 5746016 1623712 5745712 1622768 5745744 -1623784 5746016 1624088 5745888 1623752 5745744 1623712 5745712 -1624088 5745888 1623752 5745744 1623784 5746016 1623768 5746176 -1623784 5746016 1623824 5745984 1623752 5745744 1623712 5745712 -1624088 5745888 1623824 5745984 1623784 5746016 1623768 5746176 -1623784 5746016 1623744 5746096 1623768 5746176 1623824 5745984 -1624088 5745888 1623824 5745984 1623768 5746176 1624568 5746120 -1623824 5745984 1623752 5745744 1623784 5746016 1623768 5746176 -1624088 5745888 1623752 5745744 1623824 5745984 1623768 5746176 -1624088 5745888 1623936 5745984 1623768 5746176 1624568 5746120 -1623768 5746176 1623728 5746320 1624568 5746120 1623936 5745984 -1623728 5746320 1624120 5747304 1624568 5746120 1623936 5745984 -1624568 5746120 1624088 5745888 1623936 5745984 1623728 5746320 -1623768 5746176 1623936 5745984 1623824 5745984 1623784 5746016 -1623768 5746176 1623936 5745984 1623784 5746016 1623744 5746096 -1623936 5745984 1624088 5745888 1623824 5745984 1623784 5746016 -1623824 5745984 1623936 5745984 1624088 5745888 1623752 5745744 -1623824 5745984 1623936 5745984 1623752 5745744 1623784 5746016 -1623824 5745984 1623784 5746016 1623936 5745984 1623752 5745744 -1624088 5745888 1623752 5745744 1623936 5745984 1624568 5746120 -1623936 5745984 1623784 5746016 1623768 5746176 1623728 5746320 -1623728 5746320 1624048 5746120 1623936 5745984 1623768 5746176 -1624568 5746120 1624048 5746120 1623728 5746320 1624120 5747304 -1623728 5746320 1623952 5747280 1624120 5747304 1624048 5746120 -1623936 5745984 1624048 5746120 1624568 5746120 1624088 5745888 -1623936 5745984 1624048 5746120 1624088 5745888 1623752 5745744 -1624048 5746120 1624088 5745888 1623936 5745984 1623768 5746176 -1623936 5745984 1623784 5746016 1623768 5746176 1624048 5746120 -1624568 5746120 1624088 5745888 1624048 5746120 1624120 5747304 -1623728 5746320 1624120 5747304 1624048 5746120 1623768 5746176 -1624568 5746120 1624048 5746120 1624120 5747304 1624824 5747008 -1624120 5747304 1624792 5747080 1624824 5747008 1624048 5746120 -1624048 5746120 1623728 5746320 1624120 5747304 1624824 5747008 -1624568 5746120 1624048 5746120 1624824 5747008 1624864 5746312 -1624568 5746120 1624088 5745888 1624048 5746120 1624824 5747008 -1624824 5747008 1624096 5746264 1624120 5747304 1624792 5747080 -1624120 5747304 1624096 5746264 1624048 5746120 1623728 5746320 -1624120 5747304 1624096 5746264 1623728 5746320 1623952 5747280 -1624096 5746264 1624048 5746120 1623728 5746320 1623952 5747280 -1624120 5747304 1624824 5747008 1624096 5746264 1623952 5747280 -1624096 5746264 1624824 5747008 1624048 5746120 1623728 5746320 -1624048 5746120 1623768 5746176 1623728 5746320 1624096 5746264 -1624048 5746120 1623936 5745984 1623768 5746176 1624096 5746264 -1623728 5746320 1623952 5747280 1624096 5746264 1623768 5746176 -1624048 5746120 1623768 5746176 1624096 5746264 1624824 5747008 -1623728 5746320 1623656 5746368 1623952 5747280 1624096 5746264 -1624048 5746120 1624096 5746264 1624824 5747008 1624568 5746120 -1624824 5747008 1624864 5746312 1624568 5746120 1624096 5746264 -1624048 5746120 1624096 5746264 1624568 5746120 1624088 5745888 -1624048 5746120 1623768 5746176 1624096 5746264 1624568 5746120 -1624096 5746264 1624120 5747304 1624824 5747008 1624864 5746312 -1624864 5746312 1624848 5746288 1624568 5746120 1624096 5746264 -1624824 5747008 1624872 5746968 1624864 5746312 1624096 5746264 -1624568 5746120 1624048 5746120 1624096 5746264 1624864 5746312 -1623952 5747280 1624096 5746344 1624096 5746264 1623728 5746320 -1624096 5746264 1623768 5746176 1623728 5746320 1624096 5746344 -1624096 5746344 1624120 5747304 1624096 5746264 1623728 5746320 -1624096 5746264 1624096 5746344 1624120 5747304 1624824 5747008 -1624120 5747304 1624792 5747080 1624824 5747008 1624096 5746344 -1624096 5746264 1623728 5746320 1624096 5746344 1624824 5747008 -1624096 5746344 1623952 5747280 1624120 5747304 1624824 5747008 -1624096 5746264 1624096 5746344 1624824 5747008 1624864 5746312 -1624096 5746264 1624096 5746344 1624864 5746312 1624568 5746120 -1624096 5746264 1623728 5746320 1624096 5746344 1624568 5746120 -1624096 5746344 1624120 5747304 1624824 5747008 1624864 5746312 -1624096 5746344 1624824 5747008 1624864 5746312 1624568 5746120 -1623952 5747280 1624120 5747304 1624096 5746344 1623728 5746320 -1624864 5746312 1624848 5746288 1624568 5746120 1624096 5746344 -1624824 5747008 1624872 5746968 1624864 5746312 1624096 5746344 -1623952 5747280 1624096 5746344 1623728 5746320 1623656 5746368 -1623728 5746320 1623696 5746320 1623656 5746368 1624096 5746344 -1624096 5746344 1624096 5746264 1623728 5746320 1623656 5746368 -1623952 5747280 1624096 5746344 1623656 5746368 1623624 5747256 -1623952 5747280 1624120 5747304 1624096 5746344 1623656 5746368 -1624096 5746264 1624096 5746344 1624568 5746120 1624048 5746120 -1623952 5747280 1624000 5746512 1623656 5746368 1623624 5747256 -1623656 5746368 1623416 5746528 1623624 5747256 1624000 5746512 -1623416 5746528 1623352 5746592 1623624 5747256 1624000 5746512 -1623624 5747256 1623952 5747280 1624000 5746512 1623416 5746528 -1623656 5746368 1623472 5746464 1623416 5746528 1624000 5746512 -1623416 5746528 1623624 5747256 1624000 5746512 1623472 5746464 -1624096 5746344 1624000 5746512 1623952 5747280 1624120 5747304 -1624096 5746344 1624000 5746512 1624120 5747304 1624824 5747008 -1624120 5747304 1624792 5747080 1624824 5747008 1624000 5746512 -1624096 5746344 1624000 5746512 1624824 5747008 1624864 5746312 -1624824 5747008 1624096 5746344 1624000 5746512 1624792 5747080 -1624096 5746344 1623656 5746368 1624000 5746512 1624824 5747008 -1624000 5746512 1623952 5747280 1624120 5747304 1624792 5747080 -1623952 5747280 1624120 5747304 1624000 5746512 1623624 5747256 -1624000 5746512 1624096 5746344 1623656 5746368 1623472 5746464 -1624120 5747304 1624384 5747352 1624792 5747080 1624000 5746512 -1624792 5747080 1624824 5747008 1624000 5746512 1624384 5747352 -1624384 5747352 1624760 5747168 1624792 5747080 1624000 5746512 -1624120 5747304 1624384 5747352 1624000 5746512 1623952 5747280 -1623656 5746368 1624000 5746512 1624096 5746344 1623728 5746320 -1623656 5746368 1624000 5746512 1623728 5746320 1623696 5746320 -1624096 5746344 1624096 5746264 1623728 5746320 1624000 5746512 -1624000 5746512 1624824 5747008 1624096 5746344 1623728 5746320 -1623656 5746368 1623472 5746464 1624000 5746512 1623728 5746320 -1624120 5747304 1624008 5746552 1624000 5746512 1623952 5747280 -1624000 5746512 1623624 5747256 1623952 5747280 1624008 5746552 -1624000 5746512 1623416 5746528 1623624 5747256 1624008 5746552 -1624000 5746512 1623472 5746464 1623416 5746528 1624008 5746552 -1623416 5746528 1623352 5746592 1623624 5747256 1624008 5746552 -1623416 5746528 1623624 5747256 1624008 5746552 1623472 5746464 -1624000 5746512 1623656 5746368 1623472 5746464 1624008 5746552 -1623472 5746464 1623416 5746528 1624008 5746552 1623656 5746368 -1623952 5747280 1624120 5747304 1624008 5746552 1623624 5747256 -1623624 5747256 1623952 5747280 1624008 5746552 1623416 5746528 -1624008 5746552 1624384 5747352 1624000 5746512 1623656 5746368 -1624000 5746512 1623728 5746320 1623656 5746368 1624008 5746552 -1624120 5747304 1624384 5747352 1624008 5746552 1623952 5747280 -1624000 5746512 1624008 5746552 1624384 5747352 1624792 5747080 -1624000 5746512 1624008 5746552 1624792 5747080 1624824 5747008 -1624384 5747352 1624760 5747168 1624792 5747080 1624008 5746552 -1624000 5746512 1624008 5746552 1624824 5747008 1624096 5746344 -1624008 5746552 1624792 5747080 1624824 5747008 1624096 5746344 -1624824 5747008 1624864 5746312 1624096 5746344 1624008 5746552 -1624824 5747008 1624864 5746312 1624008 5746552 1624792 5747080 -1624096 5746344 1624000 5746512 1624008 5746552 1624864 5746312 -1624864 5746312 1624568 5746120 1624096 5746344 1624008 5746552 -1624000 5746512 1623656 5746368 1624008 5746552 1624096 5746344 -1624008 5746552 1624120 5747304 1624384 5747352 1624792 5747080 -1624824 5747008 1624872 5746968 1624864 5746312 1624008 5746552 -1624008 5746552 1624384 5747352 1624792 5747080 1624824 5747008 -1624792 5747080 1624080 5746664 1624384 5747352 1624760 5747168 -1624384 5747352 1624080 5746664 1624008 5746552 1624120 5747304 -1624080 5746664 1624792 5747080 1624008 5746552 1624120 5747304 -1624008 5746552 1623952 5747280 1624120 5747304 1624080 5746664 -1624008 5746552 1623624 5747256 1623952 5747280 1624080 5746664 -1624008 5746552 1623416 5746528 1623624 5747256 1624080 5746664 -1623416 5746528 1623352 5746592 1623624 5747256 1624080 5746664 -1624008 5746552 1623472 5746464 1623416 5746528 1624080 5746664 -1623624 5747256 1623952 5747280 1624080 5746664 1623416 5746528 -1624120 5747304 1624384 5747352 1624080 5746664 1623952 5747280 -1624008 5746552 1623416 5746528 1624080 5746664 1624792 5747080 -1623952 5747280 1624120 5747304 1624080 5746664 1623624 5747256 -1624384 5747352 1624792 5747080 1624080 5746664 1624120 5747304 -1624008 5746552 1624080 5746664 1624792 5747080 1624824 5747008 -1624008 5746552 1624080 5746664 1624824 5747008 1624864 5746312 -1624008 5746552 1624080 5746664 1624864 5746312 1624096 5746344 -1624080 5746664 1624824 5747008 1624864 5746312 1624096 5746344 -1624008 5746552 1624080 5746664 1624096 5746344 1624000 5746512 -1624864 5746312 1624568 5746120 1624096 5746344 1624080 5746664 -1624864 5746312 1624568 5746120 1624080 5746664 1624824 5747008 -1624568 5746120 1624096 5746264 1624096 5746344 1624080 5746664 -1624096 5746344 1624008 5746552 1624080 5746664 1624568 5746120 -1624008 5746552 1623416 5746528 1624080 5746664 1624096 5746344 -1624080 5746664 1624384 5747352 1624792 5747080 1624824 5747008 -1624864 5746312 1624848 5746288 1624568 5746120 1624080 5746664 -1624824 5747008 1624872 5746968 1624864 5746312 1624080 5746664 -1624080 5746664 1624792 5747080 1624824 5747008 1624864 5746312 -1624792 5747080 1624200 5746792 1624384 5747352 1624760 5747168 -1624384 5747352 1624744 5747272 1624760 5747168 1624200 5746792 -1624080 5746664 1624200 5746792 1624792 5747080 1624824 5747008 -1624080 5746664 1624384 5747352 1624200 5746792 1624824 5747008 -1624384 5747352 1624200 5746792 1624080 5746664 1624120 5747304 -1624080 5746664 1623952 5747280 1624120 5747304 1624200 5746792 -1624080 5746664 1623624 5747256 1623952 5747280 1624200 5746792 -1624200 5746792 1624824 5747008 1624080 5746664 1623952 5747280 -1624120 5747304 1624384 5747352 1624200 5746792 1623952 5747280 -1624792 5747080 1624824 5747008 1624200 5746792 1624760 5747168 -1624200 5746792 1624120 5747304 1624384 5747352 1624760 5747168 -1624080 5746664 1624200 5746792 1624824 5747008 1624864 5746312 -1624080 5746664 1624200 5746792 1624864 5746312 1624568 5746120 -1624080 5746664 1624200 5746792 1624568 5746120 1624096 5746344 -1624200 5746792 1624864 5746312 1624568 5746120 1624096 5746344 -1624568 5746120 1624096 5746264 1624096 5746344 1624200 5746792 -1624080 5746664 1624200 5746792 1624096 5746344 1624008 5746552 -1624200 5746792 1624792 5747080 1624824 5747008 1624864 5746312 -1624080 5746664 1623952 5747280 1624200 5746792 1624096 5746344 -1624864 5746312 1624848 5746288 1624568 5746120 1624200 5746792 -1624568 5746120 1624096 5746344 1624200 5746792 1624848 5746288 -1624824 5747008 1624872 5746968 1624864 5746312 1624200 5746792 -1624824 5747008 1624872 5746968 1624200 5746792 1624792 5747080 -1624872 5746968 1624984 5746440 1624864 5746312 1624200 5746792 -1624200 5746792 1624872 5746968 1624864 5746312 1624848 5746288 -1624760 5747168 1624232 5746832 1624384 5747352 1624744 5747272 -1624200 5746792 1624232 5746832 1624760 5747168 1624792 5747080 -1624232 5746832 1624384 5747352 1624760 5747168 1624792 5747080 -1624200 5746792 1624232 5746832 1624792 5747080 1624824 5747008 -1624232 5746832 1624760 5747168 1624792 5747080 1624824 5747008 -1624200 5746792 1624232 5746832 1624824 5747008 1624872 5746968 -1624200 5746792 1624232 5746832 1624872 5746968 1624864 5746312 -1624232 5746832 1624824 5747008 1624872 5746968 1624864 5746312 -1624872 5746968 1624984 5746440 1624864 5746312 1624232 5746832 -1624232 5746832 1624792 5747080 1624824 5747008 1624872 5746968 -1624200 5746792 1624384 5747352 1624232 5746832 1624864 5746312 -1624384 5747352 1624232 5746832 1624200 5746792 1624120 5747304 -1624200 5746792 1623952 5747280 1624120 5747304 1624232 5746832 -1624200 5746792 1624080 5746664 1623952 5747280 1624232 5746832 -1624384 5747352 1624760 5747168 1624232 5746832 1624120 5747304 -1624232 5746832 1624864 5746312 1624200 5746792 1623952 5747280 -1624120 5747304 1624384 5747352 1624232 5746832 1623952 5747280 -1624200 5746792 1624232 5746832 1624864 5746312 1624848 5746288 -1623952 5747280 1624192 5746912 1624232 5746832 1624200 5746792 -1623952 5747280 1624120 5747304 1624192 5746912 1624200 5746792 -1623952 5747280 1624192 5746912 1624200 5746792 1624080 5746664 -1623952 5747280 1624120 5747304 1624192 5746912 1624080 5746664 -1623952 5747280 1624192 5746912 1624080 5746664 1623624 5747256 -1624192 5746912 1624232 5746832 1624200 5746792 1624080 5746664 -1624192 5746912 1624120 5747304 1624232 5746832 1624200 5746792 -1624232 5746832 1624192 5746912 1624120 5747304 1624384 5747352 -1624232 5746832 1624200 5746792 1624192 5746912 1624384 5747352 -1624232 5746832 1624192 5746912 1624384 5747352 1624760 5747168 -1624384 5747352 1624744 5747272 1624760 5747168 1624192 5746912 -1624232 5746832 1624192 5746912 1624760 5747168 1624792 5747080 -1624232 5746832 1624192 5746912 1624792 5747080 1624824 5747008 -1624232 5746832 1624200 5746792 1624192 5746912 1624792 5747080 -1624192 5746912 1624384 5747352 1624760 5747168 1624792 5747080 -1624192 5746912 1623952 5747280 1624120 5747304 1624384 5747352 -1624192 5746912 1624120 5747304 1624384 5747352 1624760 5747168 -1623952 5747280 1624184 5746944 1624192 5746912 1624080 5746664 -1623952 5747280 1624120 5747304 1624184 5746944 1624080 5746664 -1624192 5746912 1624200 5746792 1624080 5746664 1624184 5746944 -1623952 5747280 1624184 5746944 1624080 5746664 1623624 5747256 -1624184 5746944 1624192 5746912 1624080 5746664 1623624 5747256 -1623952 5747280 1624120 5747304 1624184 5746944 1623624 5747256 -1624080 5746664 1623416 5746528 1623624 5747256 1624184 5746944 -1624192 5746912 1624184 5746944 1624120 5747304 1624384 5747352 -1624184 5746944 1623952 5747280 1624120 5747304 1624384 5747352 -1624184 5746944 1624384 5747352 1624192 5746912 1624080 5746664 -1624192 5746912 1624184 5746944 1624384 5747352 1624760 5747168 -1624384 5747352 1624744 5747272 1624760 5747168 1624184 5746944 -1624192 5746912 1624184 5746944 1624760 5747168 1624792 5747080 -1624192 5746912 1624184 5746944 1624792 5747080 1624232 5746832 -1624792 5747080 1624824 5747008 1624232 5746832 1624184 5746944 -1624184 5746944 1624760 5747168 1624792 5747080 1624232 5746832 -1624184 5746944 1624120 5747304 1624384 5747352 1624760 5747168 -1624192 5746912 1624080 5746664 1624184 5746944 1624232 5746832 -1624184 5746944 1624384 5747352 1624760 5747168 1624792 5747080 -1624184 5746944 1624168 5746984 1624120 5747304 1624384 5747352 -1624184 5746944 1623952 5747280 1624168 5746984 1624384 5747352 -1623952 5747280 1624168 5746984 1624184 5746944 1623624 5747256 -1624168 5746984 1624384 5747352 1624184 5746944 1623624 5747256 -1624168 5746984 1623952 5747280 1624120 5747304 1624384 5747352 -1623952 5747280 1624120 5747304 1624168 5746984 1623624 5747256 -1624184 5746944 1624080 5746664 1623624 5747256 1624168 5746984 -1624184 5746944 1624192 5746912 1624080 5746664 1624168 5746984 -1624184 5746944 1624080 5746664 1624168 5746984 1624384 5747352 -1623624 5747256 1623952 5747280 1624168 5746984 1624080 5746664 -1624080 5746664 1623416 5746528 1623624 5747256 1624168 5746984 -1624184 5746944 1624168 5746984 1624384 5747352 1624760 5747168 -1623624 5747256 1624120 5747024 1624168 5746984 1624080 5746664 -1624120 5747024 1623952 5747280 1624168 5746984 1624080 5746664 -1624168 5746984 1624120 5747024 1623952 5747280 1624120 5747304 -1624168 5746984 1624120 5747024 1624120 5747304 1624384 5747352 -1624168 5746984 1624080 5746664 1624120 5747024 1624120 5747304 -1624120 5747024 1623624 5747256 1623952 5747280 1624120 5747304 -1623624 5747256 1623952 5747280 1624120 5747024 1624080 5746664 -1623624 5747256 1624120 5747024 1624080 5746664 1623416 5746528 -1624168 5746984 1624184 5746944 1624080 5746664 1624120 5747024 -1624184 5746944 1624192 5746912 1624080 5746664 1624120 5747024 -1624080 5746664 1623624 5747256 1624120 5747024 1624192 5746912 -1624168 5746984 1624184 5746944 1624120 5747024 1624120 5747304 -1624192 5746912 1624200 5746792 1624080 5746664 1624120 5747024 -1624184 5746944 1624192 5746912 1624120 5747024 1624168 5746984 -1624080 5746664 1624032 5747040 1624120 5747024 1624192 5746912 -1624080 5746664 1623624 5747256 1624032 5747040 1624192 5746912 -1624120 5747024 1624184 5746944 1624192 5746912 1624032 5747040 -1624192 5746912 1624080 5746664 1624032 5747040 1624184 5746944 -1624032 5747040 1623624 5747256 1624120 5747024 1624184 5746944 -1624120 5747024 1624032 5747040 1623624 5747256 1623952 5747280 -1624120 5747024 1624032 5747040 1623952 5747280 1624120 5747304 -1624120 5747024 1624032 5747040 1624120 5747304 1624168 5746984 -1624120 5747024 1624184 5746944 1624032 5747040 1624120 5747304 -1624032 5747040 1623624 5747256 1623952 5747280 1624120 5747304 -1624032 5747040 1624080 5746664 1623624 5747256 1623952 5747280 -1623624 5747256 1624032 5747040 1624080 5746664 1623416 5746528 -1623624 5747256 1624032 5747040 1623416 5746528 1623352 5746592 -1623624 5747256 1624032 5747040 1623352 5746592 1623248 5746632 -1624032 5747040 1624192 5746912 1624080 5746664 1623416 5746528 -1623624 5747256 1623952 5747280 1624032 5747040 1623352 5746592 -1624032 5747040 1624080 5746664 1623416 5746528 1623352 5746592 -1624080 5746664 1624008 5746552 1623416 5746528 1624032 5747040 -1624008 5746552 1623472 5746464 1623416 5746528 1624032 5747040 -1624080 5746664 1624008 5746552 1624032 5747040 1624192 5746912 -1623416 5746528 1623352 5746592 1624032 5747040 1624008 5746552 -1624080 5746664 1624032 5747040 1624192 5746912 1624200 5746792 -1624120 5747024 1624168 5746984 1624184 5746944 1624032 5747040 -1623416 5746528 1623984 5747000 1624008 5746552 1623472 5746464 -1624032 5747040 1623984 5747000 1623416 5746528 1623352 5746592 -1624032 5747040 1623984 5747000 1623352 5746592 1623624 5747256 -1623352 5746592 1623248 5746632 1623624 5747256 1623984 5747000 -1624032 5747040 1624008 5746552 1623984 5747000 1623624 5747256 -1623984 5747000 1624008 5746552 1623416 5746528 1623352 5746592 -1624032 5747040 1623984 5747000 1623624 5747256 1623952 5747280 -1623984 5747000 1623352 5746592 1623624 5747256 1623952 5747280 -1624032 5747040 1624008 5746552 1623984 5747000 1623952 5747280 -1624032 5747040 1623984 5747000 1623952 5747280 1624120 5747304 -1623984 5747000 1623416 5746528 1623352 5746592 1623624 5747256 -1624008 5746552 1623984 5747000 1624032 5747040 1624080 5746664 -1623984 5747000 1623952 5747280 1624032 5747040 1624080 5746664 -1624032 5747040 1624192 5746912 1624080 5746664 1623984 5747000 -1624032 5747040 1624192 5746912 1623984 5747000 1623952 5747280 -1624008 5746552 1623416 5746528 1623984 5747000 1624080 5746664 -1624032 5747040 1624184 5746944 1624192 5746912 1623984 5747000 -1624032 5747040 1624184 5746944 1623984 5747000 1623952 5747280 -1624192 5746912 1624080 5746664 1623984 5747000 1624184 5746944 -1624032 5747040 1624120 5747024 1624184 5746944 1623984 5747000 -1624032 5747040 1624120 5747024 1623984 5747000 1623952 5747280 -1624184 5746944 1624192 5746912 1623984 5747000 1624120 5747024 -1624080 5746664 1624008 5746552 1623984 5747000 1624192 5746912 -1624192 5746912 1624200 5746792 1624080 5746664 1623984 5747000 -1624192 5746912 1624200 5746792 1623984 5747000 1624184 5746944 -1624080 5746664 1624008 5746552 1623984 5747000 1624200 5746792 -1624120 5747024 1624168 5746984 1624184 5746944 1623984 5747000 -1624192 5746912 1624232 5746832 1624200 5746792 1623984 5747000 -1623624 5747256 1623808 5746944 1623352 5746592 1623248 5746632 -1623984 5747000 1623808 5746944 1623624 5747256 1623952 5747280 -1623984 5747000 1623352 5746592 1623808 5746944 1623952 5747280 -1623808 5746944 1623352 5746592 1623624 5747256 1623952 5747280 -1623984 5747000 1623808 5746944 1623952 5747280 1624032 5747040 -1623352 5746592 1623808 5746944 1623984 5747000 1623416 5746528 -1623984 5747000 1624008 5746552 1623416 5746528 1623808 5746944 -1624008 5746552 1623472 5746464 1623416 5746528 1623808 5746944 -1624008 5746552 1623656 5746368 1623472 5746464 1623808 5746944 -1623472 5746464 1623416 5746528 1623808 5746944 1623656 5746368 -1624008 5746552 1623656 5746368 1623808 5746944 1623984 5747000 -1623808 5746944 1623952 5747280 1623984 5747000 1624008 5746552 -1623984 5747000 1624080 5746664 1624008 5746552 1623808 5746944 -1624008 5746552 1623656 5746368 1623808 5746944 1624080 5746664 -1623984 5747000 1624080 5746664 1623808 5746944 1623952 5747280 -1623352 5746592 1623624 5747256 1623808 5746944 1623416 5746528 -1624008 5746552 1624000 5746512 1623656 5746368 1623808 5746944 -1623416 5746528 1623352 5746592 1623808 5746944 1623472 5746464 -1623984 5747000 1624200 5746792 1624080 5746664 1623808 5746944 -1623624 5747256 1623712 5746976 1623352 5746592 1623248 5746632 -1623808 5746944 1623712 5746976 1623624 5747256 1623952 5747280 -1623808 5746944 1623712 5746976 1623952 5747280 1623984 5747000 -1623808 5746944 1623352 5746592 1623712 5746976 1623952 5747280 -1623352 5746592 1623712 5746976 1623808 5746944 1623416 5746528 -1623712 5746976 1623952 5747280 1623808 5746944 1623416 5746528 -1623624 5747256 1623952 5747280 1623712 5746976 1623248 5746632 -1623712 5746976 1623416 5746528 1623352 5746592 1623248 5746632 -1623624 5747256 1623712 5746976 1623248 5746632 1623040 5747128 -1623712 5746976 1623352 5746592 1623248 5746632 1623040 5747128 -1623624 5747256 1623952 5747280 1623712 5746976 1623040 5747128 -1623248 5746632 1623176 5746616 1623040 5747128 1623712 5746976 -1623808 5746944 1623472 5746464 1623416 5746528 1623712 5746976 -1623808 5746944 1623656 5746368 1623472 5746464 1623712 5746976 -1623808 5746944 1623472 5746464 1623712 5746976 1623952 5747280 -1623416 5746528 1623352 5746592 1623712 5746976 1623472 5746464 -1623712 5746976 1623592 5747096 1623624 5747256 1623952 5747280 -1623040 5747128 1623592 5747096 1623712 5746976 1623248 5746632 -1623712 5746976 1623352 5746592 1623248 5746632 1623592 5747096 -1623592 5747096 1623624 5747256 1623712 5746976 1623352 5746592 -1623712 5746976 1623416 5746528 1623352 5746592 1623592 5747096 -1623040 5747128 1623624 5747256 1623592 5747096 1623248 5746632 -1623040 5747128 1623592 5747096 1623248 5746632 1623176 5746616 -1623248 5746632 1623040 5747128 1623592 5747096 1623352 5746592 -1623592 5747096 1623296 5747032 1623040 5747128 1623624 5747256 -1623592 5747096 1623296 5747032 1623624 5747256 1623712 5746976 -1623592 5747096 1623248 5746632 1623296 5747032 1623624 5747256 -1623296 5747032 1623248 5746632 1623040 5747128 1623624 5747256 -1623040 5747128 1623296 5747032 1623248 5746632 1623176 5746616 -1623040 5747128 1623296 5747032 1623176 5746616 1622760 5746984 -1623040 5747128 1623624 5747256 1623296 5747032 1623176 5746616 -1623296 5747032 1623592 5747096 1623248 5746632 1623176 5746616 -1623248 5746632 1623296 5747032 1623592 5747096 1623352 5746592 -1623592 5747096 1623712 5746976 1623352 5746592 1623296 5747032 -1623712 5746976 1623416 5746528 1623352 5746592 1623296 5747032 -1623296 5747032 1623624 5747256 1623592 5747096 1623712 5746976 -1623248 5746632 1623176 5746616 1623296 5747032 1623352 5746592 -1623352 5746592 1623248 5746632 1623296 5747032 1623712 5746976 -1623176 5746616 1622976 5746904 1623040 5747128 1623296 5747032 -1623040 5747128 1623624 5747256 1623296 5747032 1622976 5746904 -1622976 5746904 1622760 5746984 1623040 5747128 1623296 5747032 -1623176 5746616 1622760 5746984 1622976 5746904 1623296 5747032 -1623176 5746616 1622976 5746904 1623296 5747032 1623248 5746632 -1622976 5746904 1623040 5747128 1623296 5747032 1623248 5746632 -1623296 5747032 1623352 5746592 1623248 5746632 1622976 5746904 -1623176 5746616 1622760 5746984 1622976 5746904 1623248 5746632 -1622760 5746984 1622976 5746904 1623176 5746616 1622528 5746824 -1622760 5746984 1623040 5747128 1622976 5746904 1622528 5746824 -1622976 5746904 1623248 5746632 1623176 5746616 1622528 5746824 -1623176 5746616 1622456 5746736 1622528 5746824 1622976 5746904 -1623176 5746616 1622784 5746792 1622976 5746904 1623248 5746632 -1622528 5746824 1622784 5746792 1623176 5746616 1622456 5746736 -1622528 5746824 1622976 5746904 1622784 5746792 1622456 5746736 -1622784 5746792 1622976 5746904 1623176 5746616 1622456 5746736 -1623176 5746616 1622520 5746024 1622456 5746736 1622784 5746792 -1623176 5746616 1622520 5746024 1622784 5746792 1622976 5746904 -1622520 5746024 1622448 5746048 1622456 5746736 1622784 5746792 -1622456 5746736 1622528 5746824 1622784 5746792 1622520 5746024 -1623176 5746616 1622736 5745784 1622520 5746024 1622784 5746792 -1622976 5746904 1622784 5746792 1622528 5746824 1622760 5746984 -1622976 5746904 1622784 5746792 1622760 5746984 1623040 5747128 -1622976 5746904 1623176 5746616 1622784 5746792 1622760 5746984 -1622784 5746792 1622456 5746736 1622528 5746824 1622760 5746984 -1622456 5746736 1622600 5746728 1622520 5746024 1622448 5746048 -1622456 5746736 1622784 5746792 1622600 5746728 1622448 5746048 -1622600 5746728 1622784 5746792 1622520 5746024 1622448 5746048 -1622784 5746792 1622600 5746728 1622456 5746736 1622528 5746824 -1622600 5746728 1622448 5746048 1622456 5746736 1622528 5746824 -1622784 5746792 1622600 5746728 1622528 5746824 1622760 5746984 -1622784 5746792 1622520 5746024 1622600 5746728 1622528 5746824 -1622456 5746736 1622600 5746728 1622448 5746048 1622128 5746232 -1622520 5746024 1622600 5746728 1622784 5746792 1623176 5746616 -1622520 5746024 1622448 5746048 1622600 5746728 1623176 5746616 -1622600 5746728 1622528 5746824 1622784 5746792 1623176 5746616 -1622784 5746792 1622976 5746904 1623176 5746616 1622600 5746728 -1622520 5746024 1622600 5746728 1623176 5746616 1622736 5745784 -1622600 5746728 1622568 5746696 1622456 5746736 1622528 5746824 -1622600 5746728 1622448 5746048 1622568 5746696 1622528 5746824 -1622568 5746696 1622448 5746048 1622456 5746736 1622528 5746824 -1622448 5746048 1622568 5746696 1622600 5746728 1622520 5746024 -1622568 5746696 1622528 5746824 1622600 5746728 1622520 5746024 -1622600 5746728 1623176 5746616 1622520 5746024 1622568 5746696 -1622600 5746728 1623176 5746616 1622568 5746696 1622528 5746824 -1622448 5746048 1622456 5746736 1622568 5746696 1622520 5746024 -1622520 5746024 1622448 5746048 1622568 5746696 1623176 5746616 -1622600 5746728 1622568 5746696 1622528 5746824 1622784 5746792 -1622456 5746736 1622568 5746696 1622448 5746048 1622128 5746232 -1622456 5746736 1622528 5746824 1622568 5746696 1622128 5746232 -1622568 5746696 1622520 5746024 1622448 5746048 1622128 5746232 -1622448 5746048 1622352 5746032 1622128 5746232 1622568 5746696 -1622600 5746728 1622784 5746792 1623176 5746616 1622568 5746696 -1622600 5746728 1622784 5746792 1622568 5746696 1622528 5746824 -1623176 5746616 1622520 5746024 1622568 5746696 1622784 5746792 -1622784 5746792 1622976 5746904 1623176 5746616 1622568 5746696 -1623176 5746616 1622736 5745784 1622520 5746024 1622568 5746696 -1622448 5746048 1622544 5746648 1622568 5746696 1622520 5746024 -1622544 5746648 1622128 5746232 1622568 5746696 1622520 5746024 -1622448 5746048 1622128 5746232 1622544 5746648 1622520 5746024 -1622568 5746696 1623176 5746616 1622520 5746024 1622544 5746648 -1622568 5746696 1622784 5746792 1623176 5746616 1622544 5746648 -1622568 5746696 1622784 5746792 1622544 5746648 1622128 5746232 -1622520 5746024 1622448 5746048 1622544 5746648 1623176 5746616 -1622784 5746792 1622976 5746904 1623176 5746616 1622544 5746648 -1623176 5746616 1622520 5746024 1622544 5746648 1622784 5746792 -1622568 5746696 1622544 5746648 1622128 5746232 1622456 5746736 -1622568 5746696 1622544 5746648 1622456 5746736 1622528 5746824 -1622568 5746696 1622784 5746792 1622544 5746648 1622456 5746736 -1622544 5746648 1622448 5746048 1622128 5746232 1622456 5746736 -1622128 5746232 1622544 5746648 1622448 5746048 1622352 5746032 -1622568 5746696 1622600 5746728 1622784 5746792 1622544 5746648 -1622784 5746792 1623176 5746616 1622544 5746648 1622600 5746728 -1622568 5746696 1622600 5746728 1622544 5746648 1622456 5746736 -1623176 5746616 1622736 5745784 1622520 5746024 1622544 5746648 -1622128 5746232 1622496 5746616 1622544 5746648 1622448 5746048 -1622496 5746616 1622456 5746736 1622544 5746648 1622448 5746048 -1622544 5746648 1622520 5746024 1622448 5746048 1622496 5746616 -1622544 5746648 1623176 5746616 1622520 5746024 1622496 5746616 -1622448 5746048 1622128 5746232 1622496 5746616 1622520 5746024 -1622544 5746648 1622520 5746024 1622496 5746616 1622456 5746736 -1622544 5746648 1622496 5746616 1622456 5746736 1622568 5746696 -1622128 5746232 1622496 5746616 1622448 5746048 1622352 5746032 -1622128 5746232 1622456 5746736 1622496 5746616 1622448 5746048 -1622520 5746024 1622528 5746512 1622544 5746648 1623176 5746616 -1622496 5746616 1622528 5746512 1622520 5746024 1622448 5746048 -1622496 5746616 1622528 5746512 1622448 5746048 1622128 5746232 -1622528 5746512 1622520 5746024 1622448 5746048 1622128 5746232 -1622520 5746024 1622448 5746048 1622528 5746512 1623176 5746616 -1622528 5746512 1622496 5746616 1622544 5746648 1623176 5746616 -1622544 5746648 1622784 5746792 1623176 5746616 1622528 5746512 -1622544 5746648 1622600 5746728 1622784 5746792 1622528 5746512 -1623176 5746616 1622520 5746024 1622528 5746512 1622784 5746792 -1622544 5746648 1622784 5746792 1622528 5746512 1622496 5746616 -1622784 5746792 1622976 5746904 1623176 5746616 1622528 5746512 -1622448 5746048 1622352 5746032 1622128 5746232 1622528 5746512 -1622520 5746024 1622528 5746512 1623176 5746616 1622736 5745784 -1622496 5746616 1622544 5746648 1622528 5746512 1622128 5746232 -1622496 5746616 1622528 5746512 1622128 5746232 1622456 5746736 -1623176 5746616 1622552 5746480 1622528 5746512 1622784 5746792 -1622528 5746512 1622552 5746480 1622520 5746024 1622448 5746048 -1622528 5746512 1622552 5746480 1622448 5746048 1622128 5746232 -1622528 5746512 1622552 5746480 1622128 5746232 1622496 5746616 -1622552 5746480 1622520 5746024 1622448 5746048 1622128 5746232 -1622552 5746480 1622128 5746232 1622528 5746512 1622784 5746792 -1622552 5746480 1623176 5746616 1622520 5746024 1622448 5746048 -1623176 5746616 1622520 5746024 1622552 5746480 1622784 5746792 -1623176 5746616 1622552 5746480 1622784 5746792 1622976 5746904 -1622528 5746512 1622544 5746648 1622784 5746792 1622552 5746480 -1622544 5746648 1622600 5746728 1622784 5746792 1622552 5746480 -1622784 5746792 1623176 5746616 1622552 5746480 1622600 5746728 -1622528 5746512 1622544 5746648 1622552 5746480 1622128 5746232 -1622528 5746512 1622496 5746616 1622544 5746648 1622552 5746480 -1622544 5746648 1622600 5746728 1622552 5746480 1622528 5746512 -1622448 5746048 1622352 5746032 1622128 5746232 1622552 5746480 -1622544 5746648 1622568 5746696 1622600 5746728 1622552 5746480 -1622520 5746024 1622552 5746480 1623176 5746616 1622736 5745784 -1622552 5746480 1622648 5746400 1622520 5746024 1622448 5746048 -1622552 5746480 1622648 5746400 1622448 5746048 1622128 5746232 -1622552 5746480 1623176 5746616 1622648 5746400 1622448 5746048 -1623176 5746616 1622648 5746400 1622552 5746480 1622784 5746792 -1622552 5746480 1622600 5746728 1622784 5746792 1622648 5746400 -1622552 5746480 1622544 5746648 1622600 5746728 1622648 5746400 -1622600 5746728 1622784 5746792 1622648 5746400 1622544 5746648 -1622648 5746400 1622448 5746048 1622552 5746480 1622544 5746648 -1622784 5746792 1623176 5746616 1622648 5746400 1622600 5746728 -1622648 5746400 1623176 5746616 1622520 5746024 1622448 5746048 -1623176 5746616 1622520 5746024 1622648 5746400 1622784 5746792 -1623176 5746616 1622648 5746400 1622784 5746792 1622976 5746904 -1622552 5746480 1622528 5746512 1622544 5746648 1622648 5746400 -1622544 5746648 1622568 5746696 1622600 5746728 1622648 5746400 -1622520 5746024 1622648 5746400 1623176 5746616 1622736 5745784 -1622520 5746024 1622448 5746048 1622648 5746400 1622736 5745784 -1622648 5746400 1622784 5746792 1623176 5746616 1622736 5745784 -1623176 5746616 1623472 5746464 1622736 5745784 1622648 5746400 -1622520 5746024 1622648 5746400 1622736 5745784 1622616 5745824 -1623176 5746616 1622720 5746376 1622648 5746400 1622784 5746792 -1622648 5746400 1622600 5746728 1622784 5746792 1622720 5746376 -1622648 5746400 1622544 5746648 1622600 5746728 1622720 5746376 -1622720 5746376 1622736 5745784 1622648 5746400 1622600 5746728 -1622784 5746792 1623176 5746616 1622720 5746376 1622600 5746728 -1623176 5746616 1622736 5745784 1622720 5746376 1622784 5746792 -1622736 5745784 1622720 5746376 1623176 5746616 1623472 5746464 -1622736 5745784 1622648 5746400 1622720 5746376 1623472 5746464 -1622720 5746376 1622784 5746792 1623176 5746616 1623472 5746464 -1623176 5746616 1622720 5746376 1622784 5746792 1622976 5746904 -1623176 5746616 1623416 5746528 1623472 5746464 1622720 5746376 -1622648 5746400 1622720 5746376 1622736 5745784 1622520 5746024 -1622648 5746400 1622720 5746376 1622520 5746024 1622448 5746048 -1622648 5746400 1622600 5746728 1622720 5746376 1622520 5746024 -1622720 5746376 1623472 5746464 1622736 5745784 1622520 5746024 -1622736 5745784 1622616 5745824 1622520 5746024 1622720 5746376 -1622736 5745784 1622720 5746376 1623472 5746464 1622768 5745744 -1623176 5746616 1622856 5746400 1622720 5746376 1622784 5746792 -1622720 5746376 1622600 5746728 1622784 5746792 1622856 5746400 -1622856 5746400 1623472 5746464 1622720 5746376 1622784 5746792 -1623176 5746616 1623472 5746464 1622856 5746400 1622784 5746792 -1622720 5746376 1622856 5746400 1623472 5746464 1622736 5745784 -1622720 5746376 1622856 5746400 1622736 5745784 1622520 5746024 -1622720 5746376 1622784 5746792 1622856 5746400 1622736 5745784 -1622856 5746400 1623176 5746616 1623472 5746464 1622736 5745784 -1623176 5746616 1622856 5746400 1622784 5746792 1622976 5746904 -1623472 5746464 1622856 5746400 1623176 5746616 1623416 5746528 -1623472 5746464 1622768 5745744 1622736 5745784 1622856 5746400 -1623472 5746464 1622768 5745744 1622856 5746400 1623176 5746616 -1622736 5745784 1622720 5746376 1622856 5746400 1622768 5745744 -1623472 5746464 1623744 5746096 1622768 5745744 1622856 5746400 -1760125 5760125 1628896 5749392 1620224 5752520 1620152 5752552 -1760125 5760125 1625680 5748128 1628896 5749392 1620152 5752552 -1628896 5749392 1625680 5748128 1620224 5752520 1620152 5752552 -1760125 5760125 1628896 5749392 1620152 5752552 1599875 5760125 -1625680 5748128 1628896 5749392 1760125 5760125 1625864 5747960 -1628896 5749392 1620152 5752552 1760125 5760125 1625864 5747960 -1625680 5748128 1620224 5752520 1628896 5749392 1625864 5747960 -1760125 5760125 1625952 5747864 1625864 5747960 1628896 5749392 -1760125 5760125 1625952 5747864 1628896 5749392 1620152 5752552 -1760125 5760125 1625976 5747736 1625952 5747864 1628896 5749392 -1760125 5760125 1625976 5747736 1628896 5749392 1620152 5752552 -1625952 5747864 1625864 5747960 1628896 5749392 1625976 5747736 -1625680 5748128 1628896 5749392 1625864 5747960 1625784 5748032 -1625680 5748128 1620224 5752520 1628896 5749392 1625784 5748032 -1625864 5747960 1625800 5748016 1625784 5748032 1628896 5749392 -1625680 5748128 1628896 5749392 1625784 5748032 1625712 5748088 -1625864 5747960 1625784 5748032 1628896 5749392 1625952 5747864 -1620224 5752520 1628896 5749392 1625680 5748128 1625568 5748208 -1620224 5752520 1620152 5752552 1628896 5749392 1625568 5748208 -1628896 5749392 1625784 5748032 1625680 5748128 1625568 5748208 -1620224 5752520 1628896 5749392 1625568 5748208 1625488 5748232 -1620224 5752520 1620152 5752552 1628896 5749392 1625488 5748232 -1620224 5752520 1628896 5749392 1625488 5748232 1625464 5748232 -1628896 5749392 1625680 5748128 1625568 5748208 1625488 5748232 -1760125 5760125 1629928 5726696 1625976 5747736 1628896 5749392 -1760125 5760125 1629928 5726696 1628896 5749392 1620152 5752552 -1760125 5760125 1629944 5726624 1629928 5726696 1628896 5749392 -1760125 5760125 1629944 5726624 1628896 5749392 1620152 5752552 -1629928 5726696 1625976 5747736 1628896 5749392 1629944 5726624 -1760125 5760125 1751256 5699792 1629944 5726624 1628896 5749392 -1625976 5747736 1625952 5747864 1628896 5749392 1629928 5726696 -1629928 5726696 1625960 5747656 1625976 5747736 1628896 5749392 -1629928 5726696 1625960 5747656 1628896 5749392 1629944 5726624 -1625976 5747736 1625952 5747864 1628896 5749392 1625960 5747656 -1629928 5726696 1629872 5726768 1625960 5747656 1628896 5749392 -1629928 5726696 1629872 5726768 1628896 5749392 1629944 5726624 -1629872 5726768 1629776 5726856 1625960 5747656 1628896 5749392 -1629776 5726856 1625376 5746584 1625960 5747656 1628896 5749392 -1629776 5726856 1625232 5746360 1625376 5746584 1628896 5749392 -1629776 5726856 1629584 5726976 1625232 5746360 1628896 5749392 -1625232 5746360 1625376 5746584 1628896 5749392 1629584 5726976 -1625376 5746584 1625448 5746768 1625960 5747656 1628896 5749392 -1625376 5746584 1625960 5747656 1628896 5749392 1625232 5746360 -1629776 5726856 1629584 5726976 1628896 5749392 1629872 5726768 -1629872 5726768 1629776 5726856 1628896 5749392 1629928 5726696 -1625960 5747656 1625976 5747736 1628896 5749392 1625376 5746584 -1629584 5726976 1624976 5746096 1625232 5746360 1628896 5749392 -1620152 5752552 1628856 5749520 1628896 5749392 1620224 5752520 -1628896 5749392 1628856 5749520 1760125 5760125 1629944 5726624 -1628896 5749392 1625488 5748232 1620224 5752520 1628856 5749520 -1620224 5752520 1620152 5752552 1628856 5749520 1625488 5748232 -1620152 5752552 1760125 5760125 1628856 5749520 1620224 5752520 -1628856 5749520 1760125 5760125 1628896 5749392 1625488 5748232 -1625488 5748232 1625464 5748232 1620224 5752520 1628856 5749520 -1620224 5752520 1620152 5752552 1628856 5749520 1625464 5748232 -1625488 5748232 1625464 5748232 1628856 5749520 1628896 5749392 -1628896 5749392 1625568 5748208 1625488 5748232 1628856 5749520 -1625488 5748232 1625464 5748232 1628856 5749520 1625568 5748208 -1628896 5749392 1625568 5748208 1628856 5749520 1760125 5760125 -1760125 5760125 1628856 5749520 1620152 5752552 1599875 5760125 -1625464 5748232 1620224 5752472 1620224 5752520 1628856 5749520 -1628896 5749392 1625680 5748128 1625568 5748208 1628856 5749520 -1628896 5749392 1625784 5748032 1625680 5748128 1628856 5749520 -1628896 5749392 1625784 5748032 1628856 5749520 1760125 5760125 -1625568 5748208 1625488 5748232 1628856 5749520 1625680 5748128 -1628896 5749392 1625864 5747960 1625784 5748032 1628856 5749520 -1625784 5748032 1625680 5748128 1628856 5749520 1625864 5747960 -1628896 5749392 1625864 5747960 1628856 5749520 1760125 5760125 -1625864 5747960 1625800 5748016 1625784 5748032 1628856 5749520 -1625784 5748032 1625712 5748088 1625680 5748128 1628856 5749520 -1628896 5749392 1625952 5747864 1625864 5747960 1628856 5749520 -1628896 5749392 1625952 5747864 1628856 5749520 1760125 5760125 -1628896 5749392 1625976 5747736 1625952 5747864 1628856 5749520 -1625864 5747960 1625784 5748032 1628856 5749520 1625952 5747864 -1625680 5748128 1625568 5748208 1628856 5749520 1625784 5748032 -1620152 5752552 1628848 5749672 1628856 5749520 1620224 5752520 -1628856 5749520 1625464 5748232 1620224 5752520 1628848 5749672 -1620224 5752520 1620152 5752552 1628848 5749672 1625464 5748232 -1620152 5752552 1760125 5760125 1628848 5749672 1620224 5752520 -1628856 5749520 1628848 5749672 1760125 5760125 1628896 5749392 -1760125 5760125 1629944 5726624 1628896 5749392 1628848 5749672 -1628848 5749672 1620152 5752552 1760125 5760125 1628896 5749392 -1628848 5749672 1628896 5749392 1628856 5749520 1625464 5748232 -1628856 5749520 1625488 5748232 1625464 5748232 1628848 5749672 -1625464 5748232 1620224 5752520 1628848 5749672 1625488 5748232 -1628856 5749520 1625568 5748208 1625488 5748232 1628848 5749672 -1628856 5749520 1625568 5748208 1628848 5749672 1628896 5749392 -1625488 5748232 1625464 5748232 1628848 5749672 1625568 5748208 -1628856 5749520 1625680 5748128 1625568 5748208 1628848 5749672 -1625568 5748208 1625488 5748232 1628848 5749672 1625680 5748128 -1628856 5749520 1625680 5748128 1628848 5749672 1628896 5749392 -1760125 5760125 1628848 5749672 1620152 5752552 1599875 5760125 -1625464 5748232 1620224 5752472 1620224 5752520 1628848 5749672 -1628856 5749520 1625784 5748032 1625680 5748128 1628848 5749672 -1628848 5749672 1628944 5749920 1760125 5760125 1628896 5749392 -1760125 5760125 1629944 5726624 1628896 5749392 1628944 5749920 -1628848 5749672 1620152 5752552 1628944 5749920 1628896 5749392 -1620152 5752552 1628944 5749920 1628848 5749672 1620224 5752520 -1628848 5749672 1625464 5748232 1620224 5752520 1628944 5749920 -1628848 5749672 1625488 5748232 1625464 5748232 1628944 5749920 -1625464 5748232 1620224 5752520 1628944 5749920 1625488 5748232 -1628944 5749920 1628896 5749392 1628848 5749672 1625488 5748232 -1620224 5752520 1620152 5752552 1628944 5749920 1625464 5748232 -1628944 5749920 1620152 5752552 1760125 5760125 1628896 5749392 -1620152 5752552 1760125 5760125 1628944 5749920 1620224 5752520 -1628848 5749672 1628944 5749920 1628896 5749392 1628856 5749520 -1628944 5749920 1760125 5760125 1628896 5749392 1628856 5749520 -1628848 5749672 1625488 5748232 1628944 5749920 1628856 5749520 -1628848 5749672 1625568 5748208 1625488 5748232 1628944 5749920 -1625488 5748232 1625464 5748232 1628944 5749920 1625568 5748208 -1628848 5749672 1625680 5748128 1625568 5748208 1628944 5749920 -1628848 5749672 1625568 5748208 1628944 5749920 1628856 5749520 -1760125 5760125 1628944 5749920 1620152 5752552 1599875 5760125 -1625464 5748232 1620224 5752472 1620224 5752520 1628944 5749920 -1628944 5749920 1628952 5750072 1760125 5760125 1628896 5749392 -1620152 5752552 1628952 5750072 1628944 5749920 1620224 5752520 -1628944 5749920 1625464 5748232 1620224 5752520 1628952 5750072 -1628944 5749920 1625488 5748232 1625464 5748232 1628952 5750072 -1628944 5749920 1625568 5748208 1625488 5748232 1628952 5750072 -1625488 5748232 1625464 5748232 1628952 5750072 1625568 5748208 -1625464 5748232 1620224 5752520 1628952 5750072 1625488 5748232 -1628952 5750072 1760125 5760125 1628944 5749920 1625568 5748208 -1620224 5752520 1620152 5752552 1628952 5750072 1625464 5748232 -1620152 5752552 1760125 5760125 1628952 5750072 1620224 5752520 -1628944 5749920 1628848 5749672 1625568 5748208 1628952 5750072 -1625568 5748208 1625488 5748232 1628952 5750072 1628848 5749672 -1628848 5749672 1625680 5748128 1625568 5748208 1628952 5750072 -1628944 5749920 1628848 5749672 1628952 5750072 1760125 5760125 -1760125 5760125 1628952 5750072 1620152 5752552 1599875 5760125 -1760125 5760125 1628944 5749920 1628952 5750072 1599875 5760125 -1628952 5750072 1620224 5752520 1620152 5752552 1599875 5760125 -1620152 5752552 1620096 5752560 1599875 5760125 1628952 5750072 -1625464 5748232 1620224 5752472 1620224 5752520 1628952 5750072 -1628952 5750072 1628896 5750208 1760125 5760125 1628944 5749920 -1599875 5760125 1628896 5750208 1628952 5750072 1620152 5752552 -1628896 5750208 1760125 5760125 1628952 5750072 1620152 5752552 -1628952 5750072 1620224 5752520 1620152 5752552 1628896 5750208 -1628952 5750072 1625464 5748232 1620224 5752520 1628896 5750208 -1628952 5750072 1625488 5748232 1625464 5748232 1628896 5750208 -1628952 5750072 1625568 5748208 1625488 5748232 1628896 5750208 -1628952 5750072 1628848 5749672 1625568 5748208 1628896 5750208 -1628848 5749672 1625680 5748128 1625568 5748208 1628896 5750208 -1625568 5748208 1625488 5748232 1628896 5750208 1628848 5749672 -1625488 5748232 1625464 5748232 1628896 5750208 1625568 5748208 -1625464 5748232 1620224 5752520 1628896 5750208 1625488 5748232 -1628952 5750072 1628848 5749672 1628896 5750208 1760125 5760125 -1620224 5752520 1620152 5752552 1628896 5750208 1625464 5748232 -1599875 5760125 1760125 5760125 1628896 5750208 1620152 5752552 -1628952 5750072 1628944 5749920 1628848 5749672 1628896 5750208 -1628848 5749672 1625568 5748208 1628896 5750208 1628944 5749920 -1628952 5750072 1628944 5749920 1628896 5750208 1760125 5760125 -1620152 5752552 1599875 5760125 1628896 5750208 1620224 5752520 -1599875 5760125 1628896 5750208 1620152 5752552 1620096 5752560 -1625464 5748232 1620224 5752472 1620224 5752520 1628896 5750208 -1628896 5750208 1628768 5750400 1760125 5760125 1628952 5750072 -1599875 5760125 1628768 5750400 1628896 5750208 1620152 5752552 -1628768 5750400 1760125 5760125 1628896 5750208 1620152 5752552 -1599875 5760125 1760125 5760125 1628768 5750400 1620152 5752552 -1628896 5750208 1620224 5752520 1620152 5752552 1628768 5750400 -1628896 5750208 1625464 5748232 1620224 5752520 1628768 5750400 -1628896 5750208 1625488 5748232 1625464 5748232 1628768 5750400 -1628896 5750208 1625568 5748208 1625488 5748232 1628768 5750400 -1628896 5750208 1628848 5749672 1625568 5748208 1628768 5750400 -1628896 5750208 1628944 5749920 1628848 5749672 1628768 5750400 -1628848 5749672 1625680 5748128 1625568 5748208 1628768 5750400 -1628848 5749672 1625680 5748128 1628768 5750400 1628896 5750208 -1625568 5748208 1625488 5748232 1628768 5750400 1625680 5748128 -1625488 5748232 1625464 5748232 1628768 5750400 1625568 5748208 -1625464 5748232 1620224 5752520 1628768 5750400 1625488 5748232 -1628896 5750208 1628848 5749672 1628768 5750400 1760125 5760125 -1620152 5752552 1599875 5760125 1628768 5750400 1620224 5752520 -1628848 5749672 1628856 5749520 1625680 5748128 1628768 5750400 -1620224 5752520 1620152 5752552 1628768 5750400 1625464 5748232 -1599875 5760125 1628768 5750400 1620152 5752552 1620096 5752560 -1625464 5748232 1620224 5752472 1620224 5752520 1628768 5750400 -1628768 5750400 1628760 5750448 1760125 5760125 1628896 5750208 -1760125 5760125 1628952 5750072 1628896 5750208 1628760 5750448 -1628768 5750400 1599875 5760125 1628760 5750448 1628896 5750208 -1599875 5760125 1628760 5750448 1628768 5750400 1620152 5752552 -1628768 5750400 1620224 5752520 1620152 5752552 1628760 5750448 -1628760 5750448 1628896 5750208 1628768 5750400 1620224 5752520 -1628768 5750400 1625464 5748232 1620224 5752520 1628760 5750448 -1628768 5750400 1625488 5748232 1625464 5748232 1628760 5750448 -1628768 5750400 1625568 5748208 1625488 5748232 1628760 5750448 -1628768 5750400 1625680 5748128 1625568 5748208 1628760 5750448 -1625488 5748232 1625464 5748232 1628760 5750448 1625568 5748208 -1620224 5752520 1620152 5752552 1628760 5750448 1625464 5748232 -1628768 5750400 1625568 5748208 1628760 5750448 1628896 5750208 -1625464 5748232 1620224 5752520 1628760 5750448 1625488 5748232 -1599875 5760125 1628760 5750448 1620152 5752552 1620096 5752560 -1625464 5748232 1620224 5752472 1620224 5752520 1628760 5750448 -1628760 5750448 1599875 5760125 1760125 5760125 1628896 5750208 -1620152 5752552 1599875 5760125 1628760 5750448 1620224 5752520 -1599875 5760125 1760125 5760125 1628760 5750448 1620152 5752552 -1628760 5750448 1628808 5750592 1760125 5760125 1628896 5750208 -1760125 5760125 1628952 5750072 1628896 5750208 1628808 5750592 -1760125 5760125 1628944 5749920 1628952 5750072 1628808 5750592 -1628760 5750448 1628808 5750592 1628896 5750208 1628768 5750400 -1628896 5750208 1628768 5750400 1628808 5750592 1628952 5750072 -1599875 5760125 1628808 5750592 1628760 5750448 1620152 5752552 -1599875 5760125 1628808 5750592 1620152 5752552 1620096 5752560 -1628760 5750448 1620224 5752520 1620152 5752552 1628808 5750592 -1628760 5750448 1625464 5748232 1620224 5752520 1628808 5750592 -1628760 5750448 1625488 5748232 1625464 5748232 1628808 5750592 -1628760 5750448 1625568 5748208 1625488 5748232 1628808 5750592 -1625464 5748232 1620224 5752520 1628808 5750592 1625488 5748232 -1625464 5748232 1620224 5752472 1620224 5752520 1628808 5750592 -1620224 5752520 1620152 5752552 1628808 5750592 1625464 5748232 -1620152 5752552 1599875 5760125 1628808 5750592 1620224 5752520 -1628760 5750448 1625488 5748232 1628808 5750592 1628768 5750400 -1628808 5750592 1599875 5760125 1760125 5760125 1628952 5750072 -1599875 5760125 1760125 5760125 1628808 5750592 1620152 5752552 -1628808 5750592 1628800 5750648 1760125 5760125 1628952 5750072 -1760125 5760125 1628944 5749920 1628952 5750072 1628800 5750648 -1628808 5750592 1628800 5750648 1628952 5750072 1628896 5750208 -1628808 5750592 1599875 5760125 1628800 5750648 1628952 5750072 -1599875 5760125 1628800 5750648 1628808 5750592 1620152 5752552 -1599875 5760125 1628800 5750648 1620152 5752552 1620096 5752560 -1628808 5750592 1620224 5752520 1620152 5752552 1628800 5750648 -1628808 5750592 1625464 5748232 1620224 5752520 1628800 5750648 -1628808 5750592 1625488 5748232 1625464 5748232 1628800 5750648 -1628808 5750592 1628760 5750448 1625488 5748232 1628800 5750648 -1628760 5750448 1625568 5748208 1625488 5748232 1628800 5750648 -1625488 5748232 1625464 5748232 1628800 5750648 1628760 5750448 -1625464 5748232 1620224 5752472 1620224 5752520 1628800 5750648 -1625464 5748232 1620224 5752520 1628800 5750648 1625488 5748232 -1620224 5752520 1620152 5752552 1628800 5750648 1625464 5748232 -1628800 5750648 1628952 5750072 1628808 5750592 1628760 5750448 -1620152 5752552 1599875 5760125 1628800 5750648 1620224 5752520 -1628800 5750648 1599875 5760125 1760125 5760125 1628952 5750072 -1599875 5760125 1760125 5760125 1628800 5750648 1620152 5752552 -1628800 5750648 1628768 5750704 1760125 5760125 1628952 5750072 -1599875 5760125 1628768 5750704 1628800 5750648 1620152 5752552 -1599875 5760125 1628768 5750704 1620152 5752552 1620096 5752560 -1628800 5750648 1620224 5752520 1620152 5752552 1628768 5750704 -1628800 5750648 1625464 5748232 1620224 5752520 1628768 5750704 -1625464 5748232 1620224 5752472 1620224 5752520 1628768 5750704 -1628800 5750648 1625488 5748232 1625464 5748232 1628768 5750704 -1628800 5750648 1628760 5750448 1625488 5748232 1628768 5750704 -1628760 5750448 1625568 5748208 1625488 5748232 1628768 5750704 -1628800 5750648 1628808 5750592 1628760 5750448 1628768 5750704 -1628760 5750448 1625488 5748232 1628768 5750704 1628808 5750592 -1625488 5748232 1625464 5748232 1628768 5750704 1628760 5750448 -1625464 5748232 1620224 5752520 1628768 5750704 1625488 5748232 -1620224 5752520 1620152 5752552 1628768 5750704 1625464 5748232 -1628768 5750704 1760125 5760125 1628800 5750648 1628808 5750592 -1620152 5752552 1599875 5760125 1628768 5750704 1620224 5752520 -1599875 5760125 1760125 5760125 1628768 5750704 1620152 5752552 -1620224 5752520 1628664 5750680 1625464 5748232 1620224 5752472 -1625464 5748232 1628664 5750680 1628768 5750704 1625488 5748232 -1628768 5750704 1628760 5750448 1625488 5748232 1628664 5750680 -1628760 5750448 1625568 5748208 1625488 5748232 1628664 5750680 -1628760 5750448 1628768 5750400 1625568 5748208 1628664 5750680 -1628768 5750400 1625680 5748128 1625568 5748208 1628664 5750680 -1625568 5748208 1625488 5748232 1628664 5750680 1628768 5750400 -1628768 5750704 1628808 5750592 1628760 5750448 1628664 5750680 -1628768 5750704 1628800 5750648 1628808 5750592 1628664 5750680 -1628808 5750592 1628760 5750448 1628664 5750680 1628800 5750648 -1628760 5750448 1628768 5750400 1628664 5750680 1628808 5750592 -1625488 5748232 1625464 5748232 1628664 5750680 1625568 5748208 -1628768 5750704 1628664 5750680 1620224 5752520 1620152 5752552 -1628664 5750680 1620224 5752520 1628768 5750704 1628800 5750648 -1625464 5748232 1620224 5752520 1628664 5750680 1625488 5748232 -1625568 5748208 1628560 5750576 1628768 5750400 1625680 5748128 -1628768 5750400 1628848 5749672 1625680 5748128 1628560 5750576 -1628768 5750400 1628896 5750208 1628848 5749672 1628560 5750576 -1625680 5748128 1625568 5748208 1628560 5750576 1628848 5749672 -1628768 5750400 1628560 5750576 1628664 5750680 1628760 5750448 -1628664 5750680 1628560 5750576 1625568 5748208 1625488 5748232 -1628560 5750576 1628760 5750448 1628768 5750400 1628848 5749672 -1628848 5749672 1628856 5749520 1625680 5748128 1628560 5750576 -1628664 5750680 1628808 5750592 1628760 5750448 1628560 5750576 -1628760 5750448 1628768 5750400 1628560 5750576 1628808 5750592 -1628664 5750680 1628800 5750648 1628808 5750592 1628560 5750576 -1628664 5750680 1628560 5750576 1625488 5748232 1625464 5748232 -1628560 5750576 1625568 5748208 1625488 5748232 1625464 5748232 -1628560 5750576 1625464 5748232 1628664 5750680 1628808 5750592 -1628664 5750680 1628560 5750576 1625464 5748232 1620224 5752520 -1625464 5748232 1620224 5752472 1620224 5752520 1628560 5750576 -1628560 5750576 1625488 5748232 1625464 5748232 1620224 5752520 -1628664 5750680 1628560 5750576 1620224 5752520 1628768 5750704 -1628664 5750680 1628808 5750592 1628560 5750576 1620224 5752520 -1625568 5748208 1625488 5748232 1628560 5750576 1625680 5748128 -1628848 5749672 1628456 5750400 1628560 5750576 1628768 5750400 -1628848 5749672 1628456 5750400 1628768 5750400 1628896 5750208 -1628848 5749672 1628456 5750400 1628896 5750208 1628944 5749920 -1628456 5750400 1628560 5750576 1628768 5750400 1628896 5750208 -1628456 5750400 1628768 5750400 1628896 5750208 1628944 5749920 -1628560 5750576 1628456 5750400 1625680 5748128 1625568 5748208 -1628560 5750576 1628760 5750448 1628768 5750400 1628456 5750400 -1628768 5750400 1628896 5750208 1628456 5750400 1628760 5750448 -1628560 5750576 1628808 5750592 1628760 5750448 1628456 5750400 -1628456 5750400 1628848 5749672 1625680 5748128 1625568 5748208 -1628848 5749672 1625680 5748128 1628456 5750400 1628944 5749920 -1628896 5750208 1628952 5750072 1628944 5749920 1628456 5750400 -1625680 5748128 1628456 5750400 1628848 5749672 1628856 5749520 -1625680 5748128 1625568 5748208 1628456 5750400 1628856 5749520 -1628456 5750400 1628944 5749920 1628848 5749672 1628856 5749520 -1625680 5748128 1628456 5750400 1628856 5749520 1625784 5748032 -1628856 5749520 1625864 5747960 1625784 5748032 1628456 5750400 -1625680 5748128 1625568 5748208 1628456 5750400 1625784 5748032 -1625864 5747960 1625800 5748016 1625784 5748032 1628456 5750400 -1628456 5750400 1628848 5749672 1628856 5749520 1625864 5747960 -1628856 5749520 1625952 5747864 1625864 5747960 1628456 5750400 -1625680 5748128 1628456 5750400 1625784 5748032 1625712 5748088 -1625784 5748032 1625680 5748128 1628456 5750400 1625864 5747960 -1628560 5750576 1628456 5750400 1625568 5748208 1625488 5748232 -1628456 5750400 1625680 5748128 1625568 5748208 1625488 5748232 -1628560 5750576 1628456 5750400 1625488 5748232 1625464 5748232 -1628560 5750576 1628456 5750400 1625464 5748232 1620224 5752520 -1628456 5750400 1625488 5748232 1625464 5748232 1620224 5752520 -1625464 5748232 1620224 5752472 1620224 5752520 1628456 5750400 -1628560 5750576 1628456 5750400 1620224 5752520 1628664 5750680 -1628456 5750400 1625568 5748208 1625488 5748232 1625464 5748232 -1628456 5750400 1620224 5752520 1628560 5750576 1628760 5750448 -1628456 5750400 1628368 5750144 1625864 5747960 1625784 5748032 -1628456 5750400 1628856 5749520 1628368 5750144 1625784 5748032 -1628368 5750144 1628856 5749520 1625864 5747960 1625784 5748032 -1625864 5747960 1625800 5748016 1625784 5748032 1628368 5750144 -1628856 5749520 1628368 5750144 1628456 5750400 1628848 5749672 -1628368 5750144 1625784 5748032 1628456 5750400 1628848 5749672 -1628456 5750400 1628944 5749920 1628848 5749672 1628368 5750144 -1628456 5750400 1628896 5750208 1628944 5749920 1628368 5750144 -1628456 5750400 1628768 5750400 1628896 5750208 1628368 5750144 -1628896 5750208 1628944 5749920 1628368 5750144 1628768 5750400 -1628456 5750400 1628760 5750448 1628768 5750400 1628368 5750144 -1628456 5750400 1628768 5750400 1628368 5750144 1625784 5748032 -1628944 5749920 1628848 5749672 1628368 5750144 1628896 5750208 -1628856 5749520 1625864 5747960 1628368 5750144 1628848 5749672 -1628896 5750208 1628952 5750072 1628944 5749920 1628368 5750144 -1628896 5750208 1628952 5750072 1628368 5750144 1628768 5750400 -1628944 5749920 1628848 5749672 1628368 5750144 1628952 5750072 -1628848 5749672 1628856 5749520 1628368 5750144 1628944 5749920 -1625864 5747960 1628368 5750144 1628856 5749520 1625952 5747864 -1625864 5747960 1625784 5748032 1628368 5750144 1625952 5747864 -1628368 5750144 1628848 5749672 1628856 5749520 1625952 5747864 -1628856 5749520 1628896 5749392 1625952 5747864 1628368 5750144 -1628856 5749520 1628896 5749392 1628368 5750144 1628848 5749672 -1628896 5749392 1625976 5747736 1625952 5747864 1628368 5750144 -1625952 5747864 1625864 5747960 1628368 5750144 1628896 5749392 -1628456 5750400 1628368 5750144 1625784 5748032 1625680 5748128 -1628368 5750144 1625864 5747960 1625784 5748032 1625680 5748128 -1628456 5750400 1628368 5750144 1625680 5748128 1625568 5748208 -1628456 5750400 1628368 5750144 1625568 5748208 1625488 5748232 -1628368 5750144 1625680 5748128 1625568 5748208 1625488 5748232 -1628456 5750400 1628768 5750400 1628368 5750144 1625488 5748232 -1625784 5748032 1625712 5748088 1625680 5748128 1628368 5750144 -1628368 5750144 1625784 5748032 1625680 5748128 1625568 5748208 -1628456 5750400 1628368 5750144 1625488 5748232 1625464 5748232 -1625952 5747864 1628312 5749864 1628896 5749392 1625976 5747736 -1628368 5750144 1628312 5749864 1625952 5747864 1625864 5747960 -1628368 5750144 1628312 5749864 1625864 5747960 1625784 5748032 -1628368 5750144 1628312 5749864 1625784 5748032 1625680 5748128 -1628312 5749864 1625864 5747960 1625784 5748032 1625680 5748128 -1628368 5750144 1628896 5749392 1628312 5749864 1625680 5748128 -1628312 5749864 1628896 5749392 1625952 5747864 1625864 5747960 -1625864 5747960 1625800 5748016 1625784 5748032 1628312 5749864 -1628312 5749864 1625952 5747864 1625864 5747960 1625784 5748032 -1625784 5748032 1625712 5748088 1625680 5748128 1628312 5749864 -1628896 5749392 1628312 5749864 1628368 5750144 1628856 5749520 -1628312 5749864 1625680 5748128 1628368 5750144 1628856 5749520 -1628368 5750144 1628848 5749672 1628856 5749520 1628312 5749864 -1628368 5750144 1628848 5749672 1628312 5749864 1625680 5748128 -1628896 5749392 1625952 5747864 1628312 5749864 1628856 5749520 -1628368 5750144 1628944 5749920 1628848 5749672 1628312 5749864 -1628368 5750144 1628952 5750072 1628944 5749920 1628312 5749864 -1628368 5750144 1628944 5749920 1628312 5749864 1625680 5748128 -1628848 5749672 1628856 5749520 1628312 5749864 1628944 5749920 -1628856 5749520 1628896 5749392 1628312 5749864 1628848 5749672 -1628368 5750144 1628312 5749864 1625680 5748128 1625568 5748208 -1628312 5749864 1625784 5748032 1625680 5748128 1625568 5748208 -1628368 5750144 1628312 5749864 1625568 5748208 1625488 5748232 -1628368 5750144 1628312 5749864 1625488 5748232 1628456 5750400 -1628368 5750144 1628944 5749920 1628312 5749864 1625488 5748232 -1628312 5749864 1625680 5748128 1625568 5748208 1625488 5748232 -1628312 5749864 1628248 5749736 1625952 5747864 1625864 5747960 -1628312 5749864 1628896 5749392 1628248 5749736 1625864 5747960 -1628896 5749392 1628248 5749736 1628312 5749864 1628856 5749520 -1628248 5749736 1625864 5747960 1628312 5749864 1628856 5749520 -1628248 5749736 1628896 5749392 1625952 5747864 1625864 5747960 -1628896 5749392 1625952 5747864 1628248 5749736 1628856 5749520 -1625952 5747864 1628248 5749736 1628896 5749392 1625976 5747736 -1625952 5747864 1625864 5747960 1628248 5749736 1625976 5747736 -1628248 5749736 1628856 5749520 1628896 5749392 1625976 5747736 -1628896 5749392 1625960 5747656 1625976 5747736 1628248 5749736 -1628312 5749864 1628248 5749736 1625864 5747960 1625784 5748032 -1628312 5749864 1628248 5749736 1625784 5748032 1625680 5748128 -1628312 5749864 1628248 5749736 1625680 5748128 1625568 5748208 -1628248 5749736 1625784 5748032 1625680 5748128 1625568 5748208 -1628248 5749736 1625952 5747864 1625864 5747960 1625784 5748032 -1628312 5749864 1628856 5749520 1628248 5749736 1625568 5748208 -1625864 5747960 1625800 5748016 1625784 5748032 1628248 5749736 -1628248 5749736 1625864 5747960 1625784 5748032 1625680 5748128 -1625784 5748032 1625712 5748088 1625680 5748128 1628248 5749736 -1628312 5749864 1628848 5749672 1628856 5749520 1628248 5749736 -1628312 5749864 1628944 5749920 1628848 5749672 1628248 5749736 -1628312 5749864 1628848 5749672 1628248 5749736 1625568 5748208 -1628856 5749520 1628896 5749392 1628248 5749736 1628848 5749672 -1628312 5749864 1628248 5749736 1625568 5748208 1625488 5748232 -1628248 5749736 1625680 5748128 1625568 5748208 1625488 5748232 -1628312 5749864 1628248 5749736 1625488 5748232 1628368 5750144 -1625488 5748232 1628456 5750400 1628368 5750144 1628248 5749736 -1628312 5749864 1628848 5749672 1628248 5749736 1628368 5750144 -1628248 5749736 1625568 5748208 1625488 5748232 1628368 5750144 -1628896 5749392 1627704 5749168 1628248 5749736 1628856 5749520 -1625976 5747736 1627704 5749168 1628896 5749392 1625960 5747656 -1627704 5749168 1628248 5749736 1628896 5749392 1625960 5747656 -1625976 5747736 1628248 5749736 1627704 5749168 1625960 5747656 -1628248 5749736 1627704 5749168 1625976 5747736 1625952 5747864 -1628248 5749736 1627704 5749168 1625952 5747864 1625864 5747960 -1628248 5749736 1627704 5749168 1625864 5747960 1625784 5748032 -1627704 5749168 1625952 5747864 1625864 5747960 1625784 5748032 -1628248 5749736 1628896 5749392 1627704 5749168 1625784 5748032 -1627704 5749168 1625960 5747656 1625976 5747736 1625952 5747864 -1627704 5749168 1625976 5747736 1625952 5747864 1625864 5747960 -1625864 5747960 1625800 5748016 1625784 5748032 1627704 5749168 -1628248 5749736 1627704 5749168 1625784 5748032 1625680 5748128 -1628248 5749736 1627704 5749168 1625680 5748128 1625568 5748208 -1628248 5749736 1627704 5749168 1625568 5748208 1625488 5748232 -1627704 5749168 1625680 5748128 1625568 5748208 1625488 5748232 -1627704 5749168 1625864 5747960 1625784 5748032 1625680 5748128 -1628248 5749736 1628896 5749392 1627704 5749168 1625488 5748232 -1627704 5749168 1625784 5748032 1625680 5748128 1625568 5748208 -1625784 5748032 1625712 5748088 1625680 5748128 1627704 5749168 -1628248 5749736 1627704 5749168 1625488 5748232 1628368 5750144 -1627704 5749168 1625568 5748208 1625488 5748232 1628368 5750144 -1625488 5748232 1628456 5750400 1628368 5750144 1627704 5749168 -1625488 5748232 1628456 5750400 1627704 5749168 1625568 5748208 -1628248 5749736 1627704 5749168 1628368 5750144 1628312 5749864 -1628248 5749736 1628896 5749392 1627704 5749168 1628368 5750144 -1628368 5750144 1628248 5749736 1627704 5749168 1628456 5750400 -1625488 5748232 1625464 5748232 1628456 5750400 1627704 5749168 -1625488 5748232 1625464 5748232 1627704 5749168 1625568 5748208 -1628456 5750400 1628368 5750144 1627704 5749168 1625464 5748232 -1625464 5748232 1620224 5752520 1628456 5750400 1627704 5749168 -1628896 5749392 1625376 5746584 1625960 5747656 1627704 5749168 -1625976 5747736 1627320 5748856 1627704 5749168 1625960 5747656 -1627320 5748856 1625952 5747864 1627704 5749168 1625960 5747656 -1625976 5747736 1625952 5747864 1627320 5748856 1625960 5747656 -1627704 5749168 1628896 5749392 1625960 5747656 1627320 5748856 -1627704 5749168 1628896 5749392 1627320 5748856 1625952 5747864 -1627704 5749168 1628248 5749736 1628896 5749392 1627320 5748856 -1625960 5747656 1625976 5747736 1627320 5748856 1628896 5749392 -1627704 5749168 1627320 5748856 1625952 5747864 1625864 5747960 -1627704 5749168 1627320 5748856 1625864 5747960 1625784 5748032 -1627704 5749168 1627320 5748856 1625784 5748032 1625680 5748128 -1627320 5748856 1625864 5747960 1625784 5748032 1625680 5748128 -1627704 5749168 1628896 5749392 1627320 5748856 1625680 5748128 -1627320 5748856 1625976 5747736 1625952 5747864 1625864 5747960 -1627320 5748856 1625952 5747864 1625864 5747960 1625784 5748032 -1625864 5747960 1625800 5748016 1625784 5748032 1627320 5748856 -1627704 5749168 1627320 5748856 1625680 5748128 1625568 5748208 -1627704 5749168 1627320 5748856 1625568 5748208 1625488 5748232 -1627704 5749168 1627320 5748856 1625488 5748232 1625464 5748232 -1627320 5748856 1625568 5748208 1625488 5748232 1625464 5748232 -1627320 5748856 1625784 5748032 1625680 5748128 1625568 5748208 -1627704 5749168 1628896 5749392 1627320 5748856 1625464 5748232 -1627320 5748856 1625680 5748128 1625568 5748208 1625488 5748232 -1625784 5748032 1625712 5748088 1625680 5748128 1627320 5748856 -1627704 5749168 1627320 5748856 1625464 5748232 1628456 5750400 -1627320 5748856 1625488 5748232 1625464 5748232 1628456 5750400 -1627704 5749168 1627320 5748856 1628456 5750400 1628368 5750144 -1625464 5748232 1620224 5752520 1628456 5750400 1627320 5748856 -1627704 5749168 1628896 5749392 1627320 5748856 1628456 5750400 -1628896 5749392 1625376 5746584 1625960 5747656 1627320 5748856 -1625960 5747656 1625976 5747736 1627320 5748856 1625376 5746584 -1628896 5749392 1625376 5746584 1627320 5748856 1627704 5749168 -1625376 5746584 1625448 5746768 1625960 5747656 1627320 5748856 -1628896 5749392 1625232 5746360 1625376 5746584 1627320 5748856 -1627320 5748856 1626976 5748664 1625784 5748032 1625680 5748128 -1627320 5748856 1626976 5748664 1625680 5748128 1625568 5748208 -1626976 5748664 1625784 5748032 1625680 5748128 1625568 5748208 -1627320 5748856 1625864 5747960 1626976 5748664 1625568 5748208 -1626976 5748664 1625864 5747960 1625784 5748032 1625680 5748128 -1625864 5747960 1626976 5748664 1627320 5748856 1625952 5747864 -1627320 5748856 1625976 5747736 1625952 5747864 1626976 5748664 -1626976 5748664 1625568 5748208 1627320 5748856 1625976 5747736 -1627320 5748856 1625960 5747656 1625976 5747736 1626976 5748664 -1625976 5747736 1625952 5747864 1626976 5748664 1625960 5747656 -1627320 5748856 1625960 5747656 1626976 5748664 1625568 5748208 -1627320 5748856 1625376 5746584 1625960 5747656 1626976 5748664 -1625864 5747960 1625784 5748032 1626976 5748664 1625952 5747864 -1625952 5747864 1625864 5747960 1626976 5748664 1625976 5747736 -1625784 5748032 1626976 5748664 1625864 5747960 1625800 5748016 -1625784 5748032 1625680 5748128 1626976 5748664 1625800 5748016 -1626976 5748664 1625952 5747864 1625864 5747960 1625800 5748016 -1627320 5748856 1626976 5748664 1625568 5748208 1625488 5748232 -1627320 5748856 1626976 5748664 1625488 5748232 1625464 5748232 -1627320 5748856 1626976 5748664 1625464 5748232 1628456 5750400 -1625464 5748232 1620224 5752520 1628456 5750400 1626976 5748664 -1626976 5748664 1625488 5748232 1625464 5748232 1628456 5750400 -1626976 5748664 1625680 5748128 1625568 5748208 1625488 5748232 -1627320 5748856 1625960 5747656 1626976 5748664 1628456 5750400 -1626976 5748664 1625568 5748208 1625488 5748232 1625464 5748232 -1625784 5748032 1625712 5748088 1625680 5748128 1626976 5748664 -1627320 5748856 1626976 5748664 1628456 5750400 1627704 5749168 -1626976 5748664 1625464 5748232 1628456 5750400 1627704 5749168 -1628456 5750400 1628368 5750144 1627704 5749168 1626976 5748664 -1627320 5748856 1625960 5747656 1626976 5748664 1627704 5749168 -1626976 5748664 1626904 5748592 1625960 5747656 1625976 5747736 -1626976 5748664 1626904 5748592 1625976 5747736 1625952 5747864 -1626904 5748592 1625960 5747656 1625976 5747736 1625952 5747864 -1625960 5747656 1626904 5748592 1627320 5748856 1625376 5746584 -1626976 5748664 1627320 5748856 1626904 5748592 1625952 5747864 -1626904 5748592 1627320 5748856 1625960 5747656 1625976 5747736 -1626976 5748664 1626904 5748592 1625952 5747864 1625864 5747960 -1626904 5748592 1625976 5747736 1625952 5747864 1625864 5747960 -1626976 5748664 1627320 5748856 1626904 5748592 1625864 5747960 -1626976 5748664 1626904 5748592 1625864 5747960 1625800 5748016 -1626976 5748664 1627320 5748856 1626904 5748592 1625800 5748016 -1626904 5748592 1625952 5747864 1625864 5747960 1625800 5748016 -1626976 5748664 1626904 5748592 1625800 5748016 1625784 5748032 -1626976 5748664 1626904 5748592 1625784 5748032 1625680 5748128 -1626976 5748664 1626904 5748592 1625680 5748128 1625568 5748208 -1626976 5748664 1626904 5748592 1625568 5748208 1625488 5748232 -1626904 5748592 1625680 5748128 1625568 5748208 1625488 5748232 -1626904 5748592 1625784 5748032 1625680 5748128 1625568 5748208 -1626976 5748664 1627320 5748856 1626904 5748592 1625488 5748232 -1626904 5748592 1625864 5747960 1625800 5748016 1625784 5748032 -1626904 5748592 1625800 5748016 1625784 5748032 1625680 5748128 -1626976 5748664 1626904 5748592 1625488 5748232 1625464 5748232 -1625784 5748032 1625712 5748088 1625680 5748128 1626904 5748592 -1627320 5748856 1626912 5748472 1625960 5747656 1626904 5748592 -1625960 5747656 1625976 5747736 1626904 5748592 1626912 5748472 -1625976 5747736 1625952 5747864 1626904 5748592 1626912 5748472 -1625952 5747864 1625864 5747960 1626904 5748592 1626912 5748472 -1625952 5747864 1625864 5747960 1626912 5748472 1625976 5747736 -1626904 5748592 1627320 5748856 1626912 5748472 1625864 5747960 -1625976 5747736 1625952 5747864 1626912 5748472 1625960 5747656 -1626912 5748472 1625376 5746584 1625960 5747656 1625976 5747736 -1627320 5748856 1626912 5748472 1626904 5748592 1626976 5748664 -1626912 5748472 1625864 5747960 1626904 5748592 1626976 5748664 -1627320 5748856 1625376 5746584 1626912 5748472 1626976 5748664 -1625864 5747960 1625800 5748016 1626904 5748592 1626912 5748472 -1625864 5747960 1625800 5748016 1626912 5748472 1625952 5747864 -1626904 5748592 1626976 5748664 1626912 5748472 1625800 5748016 -1625800 5748016 1625784 5748032 1626904 5748592 1626912 5748472 -1626904 5748592 1626976 5748664 1626912 5748472 1625784 5748032 -1625800 5748016 1625784 5748032 1626912 5748472 1625864 5747960 -1625784 5748032 1625680 5748128 1626904 5748592 1626912 5748472 -1625960 5747656 1626912 5748472 1625376 5746584 1625448 5746768 -1625960 5747656 1625976 5747736 1626912 5748472 1625448 5746768 -1626912 5748472 1627320 5748856 1625376 5746584 1625448 5746768 -1625960 5747656 1626912 5748472 1625448 5746768 1625872 5747552 -1625376 5746584 1626912 5748472 1627320 5748856 1628896 5749392 -1625376 5746584 1625448 5746768 1626912 5748472 1628896 5749392 -1626912 5748472 1626976 5748664 1627320 5748856 1628896 5749392 -1627320 5748856 1627704 5749168 1628896 5749392 1626912 5748472 -1625376 5746584 1626912 5748472 1628896 5749392 1625232 5746360 -1626912 5748472 1626872 5748264 1625376 5746584 1625448 5746768 -1626912 5748472 1628896 5749392 1626872 5748264 1625448 5746768 -1626872 5748264 1628896 5749392 1625376 5746584 1625448 5746768 -1626912 5748472 1626872 5748264 1625448 5746768 1625960 5747656 -1626912 5748472 1626872 5748264 1625960 5747656 1625976 5747736 -1626912 5748472 1626872 5748264 1625976 5747736 1625952 5747864 -1626912 5748472 1626872 5748264 1625952 5747864 1625864 5747960 -1626912 5748472 1626872 5748264 1625864 5747960 1625800 5748016 -1626872 5748264 1625952 5747864 1625864 5747960 1625800 5748016 -1626872 5748264 1625976 5747736 1625952 5747864 1625864 5747960 -1626872 5748264 1625960 5747656 1625976 5747736 1625952 5747864 -1626872 5748264 1625376 5746584 1625448 5746768 1625960 5747656 -1626912 5748472 1628896 5749392 1626872 5748264 1625800 5748016 -1625448 5746768 1625872 5747552 1625960 5747656 1626872 5748264 -1625872 5747552 1625896 5747584 1625960 5747656 1626872 5748264 -1625448 5746768 1625624 5747288 1625872 5747552 1626872 5748264 -1625448 5746768 1625872 5747552 1626872 5748264 1625376 5746584 -1626912 5748472 1626872 5748264 1625800 5748016 1625784 5748032 -1626872 5748264 1625864 5747960 1625800 5748016 1625784 5748032 -1626912 5748472 1626872 5748264 1625784 5748032 1626904 5748592 -1626912 5748472 1628896 5749392 1626872 5748264 1626904 5748592 -1626872 5748264 1625800 5748016 1625784 5748032 1626904 5748592 -1625784 5748032 1625680 5748128 1626904 5748592 1626872 5748264 -1626872 5748264 1625872 5747552 1625960 5747656 1625976 5747736 -1625376 5746584 1626872 5748264 1628896 5749392 1625232 5746360 -1628896 5749392 1626872 5748264 1626912 5748472 1627320 5748856 -1626872 5748264 1626904 5748592 1626912 5748472 1627320 5748856 -1626912 5748472 1626976 5748664 1627320 5748856 1626872 5748264 -1628896 5749392 1625376 5746584 1626872 5748264 1627320 5748856 -1628896 5749392 1626872 5748264 1627320 5748856 1627704 5749168 -1626872 5748264 1626808 5748160 1625376 5746584 1625448 5746768 -1626872 5748264 1626808 5748160 1625448 5746768 1625872 5747552 -1625448 5746768 1625624 5747288 1625872 5747552 1626808 5748160 -1626808 5748160 1625376 5746584 1625448 5746768 1625872 5747552 -1626872 5748264 1628896 5749392 1626808 5748160 1625872 5747552 -1628896 5749392 1626808 5748160 1626872 5748264 1627320 5748856 -1626808 5748160 1628896 5749392 1625376 5746584 1625448 5746768 -1626872 5748264 1626808 5748160 1625872 5747552 1625960 5747656 -1625872 5747552 1625896 5747584 1625960 5747656 1626808 5748160 -1626808 5748160 1625448 5746768 1625872 5747552 1625960 5747656 -1626872 5748264 1628896 5749392 1626808 5748160 1625960 5747656 -1626872 5748264 1626808 5748160 1625960 5747656 1625976 5747736 -1626872 5748264 1626808 5748160 1625976 5747736 1625952 5747864 -1626872 5748264 1626808 5748160 1625952 5747864 1625864 5747960 -1626872 5748264 1626808 5748160 1625864 5747960 1625800 5748016 -1626872 5748264 1626808 5748160 1625800 5748016 1625784 5748032 -1626808 5748160 1625864 5747960 1625800 5748016 1625784 5748032 -1626808 5748160 1625952 5747864 1625864 5747960 1625800 5748016 -1626808 5748160 1625976 5747736 1625952 5747864 1625864 5747960 -1626872 5748264 1628896 5749392 1626808 5748160 1625784 5748032 -1626808 5748160 1625872 5747552 1625960 5747656 1625976 5747736 -1626872 5748264 1626808 5748160 1625784 5748032 1626904 5748592 -1626808 5748160 1625800 5748016 1625784 5748032 1626904 5748592 -1626872 5748264 1626808 5748160 1626904 5748592 1626912 5748472 -1626872 5748264 1628896 5749392 1626808 5748160 1626912 5748472 -1626808 5748160 1625784 5748032 1626904 5748592 1626912 5748472 -1625784 5748032 1625680 5748128 1626904 5748592 1626808 5748160 -1626808 5748160 1625960 5747656 1625976 5747736 1625952 5747864 -1625376 5746584 1626808 5748160 1628896 5749392 1625232 5746360 -1625376 5746584 1625448 5746768 1626808 5748160 1625232 5746360 -1626808 5748160 1626872 5748264 1628896 5749392 1625232 5746360 -1628896 5749392 1629584 5726976 1625232 5746360 1626808 5748160 -1625872 5747552 1626704 5748056 1625448 5746768 1625624 5747288 -1626808 5748160 1626704 5748056 1625872 5747552 1625960 5747656 -1625872 5747552 1625896 5747584 1625960 5747656 1626704 5748056 -1625448 5746768 1626704 5748056 1626808 5748160 1625376 5746584 -1626808 5748160 1625232 5746360 1625376 5746584 1626704 5748056 -1625376 5746584 1625448 5746768 1626704 5748056 1625232 5746360 -1626808 5748160 1625232 5746360 1626704 5748056 1625960 5747656 -1625448 5746768 1625872 5747552 1626704 5748056 1625376 5746584 -1626704 5748056 1625448 5746768 1625872 5747552 1625960 5747656 -1626808 5748160 1626704 5748056 1625960 5747656 1625976 5747736 -1626704 5748056 1625872 5747552 1625960 5747656 1625976 5747736 -1626808 5748160 1625232 5746360 1626704 5748056 1625976 5747736 -1626808 5748160 1626704 5748056 1625976 5747736 1625952 5747864 -1626808 5748160 1626704 5748056 1625952 5747864 1625864 5747960 -1626808 5748160 1626704 5748056 1625864 5747960 1625800 5748016 -1626808 5748160 1626704 5748056 1625800 5748016 1625784 5748032 -1626808 5748160 1626704 5748056 1625784 5748032 1626904 5748592 -1626704 5748056 1625800 5748016 1625784 5748032 1626904 5748592 -1626704 5748056 1625864 5747960 1625800 5748016 1625784 5748032 -1626704 5748056 1625952 5747864 1625864 5747960 1625800 5748016 -1626808 5748160 1625232 5746360 1626704 5748056 1626904 5748592 -1626704 5748056 1625960 5747656 1625976 5747736 1625952 5747864 -1626808 5748160 1626704 5748056 1626904 5748592 1626912 5748472 -1626704 5748056 1625784 5748032 1626904 5748592 1626912 5748472 -1626808 5748160 1626704 5748056 1626912 5748472 1626872 5748264 -1626808 5748160 1625232 5746360 1626704 5748056 1626912 5748472 -1625784 5748032 1625680 5748128 1626904 5748592 1626704 5748056 -1626704 5748056 1625976 5747736 1625952 5747864 1625864 5747960 -1626808 5748160 1628896 5749392 1625232 5746360 1626704 5748056 -1625232 5746360 1625376 5746584 1626704 5748056 1628896 5749392 -1626808 5748160 1628896 5749392 1626704 5748056 1626912 5748472 -1626808 5748160 1626872 5748264 1628896 5749392 1626704 5748056 -1628896 5749392 1629584 5726976 1625232 5746360 1626704 5748056 -1625872 5747552 1626488 5747912 1625448 5746768 1625624 5747288 -1625448 5746768 1626488 5747912 1626704 5748056 1625376 5746584 -1625448 5746768 1625872 5747552 1626488 5747912 1625376 5746584 -1626704 5748056 1625232 5746360 1625376 5746584 1626488 5747912 -1626704 5748056 1626488 5747912 1625872 5747552 1625960 5747656 -1625872 5747552 1625896 5747584 1625960 5747656 1626488 5747912 -1626704 5748056 1626488 5747912 1625960 5747656 1625976 5747736 -1626488 5747912 1625872 5747552 1625960 5747656 1625976 5747736 -1626488 5747912 1625976 5747736 1626704 5748056 1625376 5746584 -1626704 5748056 1626488 5747912 1625976 5747736 1625952 5747864 -1626488 5747912 1625960 5747656 1625976 5747736 1625952 5747864 -1626704 5748056 1625376 5746584 1626488 5747912 1625952 5747864 -1626488 5747912 1625448 5746768 1625872 5747552 1625960 5747656 -1626704 5748056 1626488 5747912 1625952 5747864 1625864 5747960 -1626704 5748056 1626488 5747912 1625864 5747960 1625800 5748016 -1626704 5748056 1626488 5747912 1625800 5748016 1625784 5748032 -1626704 5748056 1626488 5747912 1625784 5748032 1626904 5748592 -1626488 5747912 1625864 5747960 1625800 5748016 1625784 5748032 -1626704 5748056 1625376 5746584 1626488 5747912 1625784 5748032 -1626488 5747912 1625976 5747736 1625952 5747864 1625864 5747960 -1626488 5747912 1625952 5747864 1625864 5747960 1625800 5748016 -1625376 5746584 1626392 5747784 1626704 5748056 1625232 5746360 -1626488 5747912 1626392 5747784 1625376 5746584 1625448 5746768 -1626392 5747784 1626704 5748056 1625376 5746584 1625448 5746768 -1626488 5747912 1626392 5747784 1625448 5746768 1625872 5747552 -1625448 5746768 1625624 5747288 1625872 5747552 1626392 5747784 -1626392 5747784 1625376 5746584 1625448 5746768 1625872 5747552 -1626488 5747912 1626704 5748056 1626392 5747784 1625872 5747552 -1626488 5747912 1626392 5747784 1625872 5747552 1625960 5747656 -1625872 5747552 1625896 5747584 1625960 5747656 1626392 5747784 -1626392 5747784 1625448 5746768 1625872 5747552 1625896 5747584 -1626488 5747912 1626392 5747784 1625960 5747656 1625976 5747736 -1626488 5747912 1626392 5747784 1625976 5747736 1625952 5747864 -1626392 5747784 1625960 5747656 1625976 5747736 1625952 5747864 -1626488 5747912 1626392 5747784 1625952 5747864 1625864 5747960 -1626488 5747912 1626704 5748056 1626392 5747784 1625952 5747864 -1625960 5747656 1625976 5747736 1626392 5747784 1625896 5747584 -1626704 5748056 1626376 5747696 1626392 5747784 1626488 5747912 -1626376 5747696 1625376 5746584 1626392 5747784 1626488 5747912 -1626392 5747784 1626376 5747696 1625376 5746584 1625448 5746768 -1626392 5747784 1626488 5747912 1626376 5747696 1625448 5746768 -1626704 5748056 1625376 5746584 1626376 5747696 1626488 5747912 -1625376 5746584 1626376 5747696 1626704 5748056 1625232 5746360 -1626376 5747696 1626488 5747912 1626704 5748056 1625232 5746360 -1626704 5748056 1628896 5749392 1625232 5746360 1626376 5747696 -1626704 5748056 1628896 5749392 1626376 5747696 1626488 5747912 -1625232 5746360 1625376 5746584 1626376 5747696 1628896 5749392 -1626392 5747784 1626376 5747696 1625448 5746768 1625872 5747552 -1625448 5746768 1625624 5747288 1625872 5747552 1626376 5747696 -1626392 5747784 1626488 5747912 1626376 5747696 1625872 5747552 -1626376 5747696 1625376 5746584 1625448 5746768 1625624 5747288 -1626392 5747784 1626376 5747696 1625872 5747552 1625896 5747584 -1626392 5747784 1626376 5747696 1625896 5747584 1625960 5747656 -1626392 5747784 1626488 5747912 1626376 5747696 1625960 5747656 -1626376 5747696 1625872 5747552 1625896 5747584 1625960 5747656 -1625872 5747552 1625896 5747584 1626376 5747696 1625624 5747288 -1626376 5747696 1625232 5746360 1625376 5746584 1625448 5746768 -1628896 5749392 1629584 5726976 1625232 5746360 1626376 5747696 -1626392 5747784 1626376 5747696 1625960 5747656 1625976 5747736 -1626376 5747696 1625896 5747584 1625960 5747656 1625976 5747736 -1626392 5747784 1626488 5747912 1626376 5747696 1625976 5747736 -1626392 5747784 1626376 5747696 1625976 5747736 1625952 5747864 -1625448 5746768 1625512 5747120 1625624 5747288 1626376 5747696 -1626704 5748056 1626808 5748160 1628896 5749392 1626376 5747696 -1626376 5747696 1626408 5747544 1625232 5746360 1625376 5746584 -1626408 5747544 1628896 5749392 1625232 5746360 1625376 5746584 -1628896 5749392 1626408 5747544 1626376 5747696 1626704 5748056 -1628896 5749392 1625232 5746360 1626408 5747544 1626704 5748056 -1626376 5747696 1626488 5747912 1626704 5748056 1626408 5747544 -1626376 5747696 1626392 5747784 1626488 5747912 1626408 5747544 -1626704 5748056 1628896 5749392 1626408 5747544 1626488 5747912 -1626376 5747696 1626488 5747912 1626408 5747544 1625376 5746584 -1626376 5747696 1626408 5747544 1625376 5746584 1625448 5746768 -1626376 5747696 1626408 5747544 1625448 5746768 1625624 5747288 -1626376 5747696 1626408 5747544 1625624 5747288 1625872 5747552 -1626408 5747544 1625448 5746768 1625624 5747288 1625872 5747552 -1626408 5747544 1625232 5746360 1625376 5746584 1625448 5746768 -1626376 5747696 1626408 5747544 1625872 5747552 1625896 5747584 -1626408 5747544 1625624 5747288 1625872 5747552 1625896 5747584 -1626376 5747696 1626408 5747544 1625896 5747584 1625960 5747656 -1626376 5747696 1626408 5747544 1625960 5747656 1625976 5747736 -1626408 5747544 1625872 5747552 1625896 5747584 1625960 5747656 -1626376 5747696 1626488 5747912 1626408 5747544 1625960 5747656 -1626408 5747544 1625376 5746584 1625448 5746768 1625624 5747288 -1625232 5746360 1626408 5747544 1628896 5749392 1629584 5726976 -1626408 5747544 1626704 5748056 1628896 5749392 1629584 5726976 -1625232 5746360 1625376 5746584 1626408 5747544 1629584 5726976 -1628896 5749392 1629776 5726856 1629584 5726976 1626408 5747544 -1625448 5746768 1625512 5747120 1625624 5747288 1626408 5747544 -1628896 5749392 1626408 5747544 1626704 5748056 1626808 5748160 -1628896 5749392 1629584 5726976 1626408 5747544 1626808 5748160 -1626408 5747544 1626488 5747912 1626704 5748056 1626808 5748160 -1628896 5749392 1626408 5747544 1626808 5748160 1626872 5748264 -1625232 5746360 1626408 5747544 1629584 5726976 1624976 5746096 -1628896 5749392 1626504 5747392 1626408 5747544 1626808 5748160 -1629584 5726976 1626504 5747392 1628896 5749392 1629776 5726856 -1626504 5747392 1629584 5726976 1626408 5747544 1626808 5748160 -1628896 5749392 1629584 5726976 1626504 5747392 1626808 5748160 -1628896 5749392 1626504 5747392 1626808 5748160 1626872 5748264 -1626408 5747544 1626504 5747392 1629584 5726976 1625232 5746360 -1626408 5747544 1626504 5747392 1625232 5746360 1625376 5746584 -1626504 5747392 1628896 5749392 1629584 5726976 1625232 5746360 -1626408 5747544 1626808 5748160 1626504 5747392 1625376 5746584 -1626408 5747544 1626504 5747392 1625376 5746584 1625448 5746768 -1626504 5747392 1625232 5746360 1625376 5746584 1625448 5746768 -1626408 5747544 1626808 5748160 1626504 5747392 1625448 5746768 -1626408 5747544 1626504 5747392 1625448 5746768 1625624 5747288 -1626408 5747544 1626504 5747392 1625624 5747288 1625872 5747552 -1626504 5747392 1625448 5746768 1625624 5747288 1625872 5747552 -1626408 5747544 1626504 5747392 1625872 5747552 1625896 5747584 -1626408 5747544 1626808 5748160 1626504 5747392 1625872 5747552 -1626504 5747392 1625376 5746584 1625448 5746768 1625624 5747288 -1626504 5747392 1629584 5726976 1625232 5746360 1625376 5746584 -1625448 5746768 1625512 5747120 1625624 5747288 1626504 5747392 -1625624 5747288 1625872 5747552 1626504 5747392 1625512 5747120 -1625448 5746768 1625512 5747120 1626504 5747392 1625376 5746584 -1626408 5747544 1626704 5748056 1626808 5748160 1626504 5747392 -1626808 5748160 1628896 5749392 1626504 5747392 1626704 5748056 -1626408 5747544 1626704 5748056 1626504 5747392 1625872 5747552 -1626408 5747544 1626488 5747912 1626704 5748056 1626504 5747392 -1626408 5747544 1626376 5747696 1626488 5747912 1626504 5747392 -1626408 5747544 1626488 5747912 1626504 5747392 1625872 5747552 -1626704 5748056 1626808 5748160 1626504 5747392 1626488 5747912 -1629584 5726976 1624976 5746096 1625232 5746360 1626504 5747392 -1629584 5726976 1624976 5746096 1626504 5747392 1628896 5749392 -1625232 5746360 1625376 5746584 1626504 5747392 1624976 5746096 -1629584 5726976 1624712 5745880 1624976 5746096 1626504 5747392 -1629584 5726976 1626600 5747328 1628896 5749392 1629776 5726856 -1626504 5747392 1626600 5747328 1629584 5726976 1624976 5746096 -1626600 5747328 1628896 5749392 1629584 5726976 1624976 5746096 -1626504 5747392 1628896 5749392 1626600 5747328 1624976 5746096 -1628896 5749392 1626600 5747328 1626504 5747392 1626808 5748160 -1626504 5747392 1626704 5748056 1626808 5748160 1626600 5747328 -1628896 5749392 1629584 5726976 1626600 5747328 1626808 5748160 -1626808 5748160 1628896 5749392 1626600 5747328 1626704 5748056 -1626600 5747328 1624976 5746096 1626504 5747392 1626704 5748056 -1628896 5749392 1626600 5747328 1626808 5748160 1626872 5748264 -1628896 5749392 1629584 5726976 1626600 5747328 1626872 5748264 -1626600 5747328 1626704 5748056 1626808 5748160 1626872 5748264 -1628896 5749392 1626600 5747328 1626872 5748264 1627320 5748856 -1626504 5747392 1626488 5747912 1626704 5748056 1626600 5747328 -1626504 5747392 1626488 5747912 1626600 5747328 1624976 5746096 -1626704 5748056 1626808 5748160 1626600 5747328 1626488 5747912 -1626504 5747392 1626408 5747544 1626488 5747912 1626600 5747328 -1626408 5747544 1626376 5747696 1626488 5747912 1626600 5747328 -1626504 5747392 1626408 5747544 1626600 5747328 1624976 5746096 -1626488 5747912 1626704 5748056 1626600 5747328 1626408 5747544 -1629584 5726976 1624712 5745880 1624976 5746096 1626600 5747328 -1626504 5747392 1626600 5747328 1624976 5746096 1625232 5746360 -1626504 5747392 1626408 5747544 1626600 5747328 1625232 5746360 -1626600 5747328 1629584 5726976 1624976 5746096 1625232 5746360 -1626504 5747392 1626600 5747328 1625232 5746360 1625376 5746584 -1626504 5747392 1626600 5747328 1625376 5746584 1625448 5746768 -1626504 5747392 1626408 5747544 1626600 5747328 1625448 5746768 -1626504 5747392 1626600 5747328 1625448 5746768 1625512 5747120 -1626600 5747328 1625232 5746360 1625376 5746584 1625448 5746768 -1626600 5747328 1624976 5746096 1625232 5746360 1625376 5746584 -1628896 5749392 1626744 5747272 1626600 5747328 1626872 5748264 -1629584 5726976 1626744 5747272 1628896 5749392 1629776 5726856 -1629584 5726976 1626600 5747328 1626744 5747272 1629776 5726856 -1626600 5747328 1626744 5747272 1629584 5726976 1624976 5746096 -1626744 5747272 1629776 5726856 1629584 5726976 1624976 5746096 -1626744 5747272 1624976 5746096 1626600 5747328 1626872 5748264 -1626600 5747328 1626744 5747272 1624976 5746096 1625232 5746360 -1626744 5747272 1629584 5726976 1624976 5746096 1625232 5746360 -1626600 5747328 1626872 5748264 1626744 5747272 1625232 5746360 -1628896 5749392 1626744 5747272 1626872 5748264 1627320 5748856 -1626744 5747272 1626600 5747328 1626872 5748264 1627320 5748856 -1626600 5747328 1626808 5748160 1626872 5748264 1626744 5747272 -1626600 5747328 1626704 5748056 1626808 5748160 1626744 5747272 -1626872 5748264 1627320 5748856 1626744 5747272 1626808 5748160 -1626600 5747328 1626704 5748056 1626744 5747272 1625232 5746360 -1626600 5747328 1626488 5747912 1626704 5748056 1626744 5747272 -1626808 5748160 1626872 5748264 1626744 5747272 1626704 5748056 -1628896 5749392 1626744 5747272 1627320 5748856 1627704 5749168 -1628896 5749392 1629776 5726856 1626744 5747272 1627320 5748856 -1628896 5749392 1629872 5726768 1629776 5726856 1626744 5747272 -1626872 5748264 1626912 5748472 1627320 5748856 1626744 5747272 -1629584 5726976 1624712 5745880 1624976 5746096 1626744 5747272 -1626600 5747328 1626744 5747272 1625232 5746360 1625376 5746584 -1626600 5747328 1626704 5748056 1626744 5747272 1625376 5746584 -1626600 5747328 1626744 5747272 1625376 5746584 1625448 5746768 -1626600 5747328 1626704 5748056 1626744 5747272 1625448 5746768 -1626600 5747328 1626744 5747272 1625448 5746768 1626504 5747392 -1626744 5747272 1624976 5746096 1625232 5746360 1625376 5746584 -1626744 5747272 1625232 5746360 1625376 5746584 1625448 5746768 -1626744 5747272 1626848 5747256 1629776 5726856 1629584 5726976 -1626744 5747272 1626848 5747256 1629584 5726976 1624976 5746096 -1626744 5747272 1626848 5747256 1624976 5746096 1625232 5746360 -1626848 5747256 1628896 5749392 1629776 5726856 1629584 5726976 -1626848 5747256 1629776 5726856 1629584 5726976 1624976 5746096 -1626744 5747272 1628896 5749392 1626848 5747256 1625232 5746360 -1626848 5747256 1629584 5726976 1624976 5746096 1625232 5746360 -1626744 5747272 1626848 5747256 1625232 5746360 1625376 5746584 -1626848 5747256 1624976 5746096 1625232 5746360 1625376 5746584 -1626744 5747272 1628896 5749392 1626848 5747256 1625376 5746584 -1628896 5749392 1626848 5747256 1626744 5747272 1627320 5748856 -1626848 5747256 1625376 5746584 1626744 5747272 1627320 5748856 -1626744 5747272 1626872 5748264 1627320 5748856 1626848 5747256 -1626744 5747272 1626808 5748160 1626872 5748264 1626848 5747256 -1626744 5747272 1626808 5748160 1626848 5747256 1625376 5746584 -1626872 5748264 1627320 5748856 1626848 5747256 1626808 5748160 -1626744 5747272 1626704 5748056 1626808 5748160 1626848 5747256 -1626744 5747272 1626600 5747328 1626704 5748056 1626848 5747256 -1626744 5747272 1626704 5748056 1626848 5747256 1625376 5746584 -1628896 5749392 1629776 5726856 1626848 5747256 1627320 5748856 -1628896 5749392 1626848 5747256 1627320 5748856 1627704 5749168 -1626808 5748160 1626872 5748264 1626848 5747256 1626704 5748056 -1629776 5726856 1626848 5747256 1628896 5749392 1629872 5726768 -1626872 5748264 1626912 5748472 1627320 5748856 1626848 5747256 -1627320 5748856 1628896 5749392 1626848 5747256 1626872 5748264 -1629584 5726976 1624712 5745880 1624976 5746096 1626848 5747256 -1629584 5726976 1624712 5745880 1626848 5747256 1629776 5726856 -1624976 5746096 1625232 5746360 1626848 5747256 1624712 5745880 -1629584 5726976 1624528 5745760 1624712 5745880 1626848 5747256 -1626744 5747272 1626848 5747256 1625376 5746584 1625448 5746768 -1626848 5747256 1627016 5747176 1629776 5726856 1629584 5726976 -1627016 5747176 1628896 5749392 1629776 5726856 1629584 5726976 -1626848 5747256 1627016 5747176 1629584 5726976 1624712 5745880 -1626848 5747256 1628896 5749392 1627016 5747176 1624712 5745880 -1628896 5749392 1627016 5747176 1626848 5747256 1627320 5748856 -1627016 5747176 1624712 5745880 1626848 5747256 1627320 5748856 -1628896 5749392 1629776 5726856 1627016 5747176 1627320 5748856 -1628896 5749392 1627016 5747176 1627320 5748856 1627704 5749168 -1628896 5749392 1627016 5747176 1627704 5749168 1628248 5749736 -1627016 5747176 1626848 5747256 1627320 5748856 1627704 5749168 -1628896 5749392 1629776 5726856 1627016 5747176 1627704 5749168 -1629776 5726856 1627016 5747176 1628896 5749392 1629872 5726768 -1627016 5747176 1629776 5726856 1629584 5726976 1624712 5745880 -1626848 5747256 1626872 5748264 1627320 5748856 1627016 5747176 -1626848 5747256 1626872 5748264 1627016 5747176 1624712 5745880 -1626848 5747256 1626808 5748160 1626872 5748264 1627016 5747176 -1626872 5748264 1627320 5748856 1627016 5747176 1626808 5748160 -1626848 5747256 1626808 5748160 1627016 5747176 1624712 5745880 -1627320 5748856 1627704 5749168 1627016 5747176 1626872 5748264 -1626848 5747256 1626704 5748056 1626808 5748160 1627016 5747176 -1626872 5748264 1626912 5748472 1627320 5748856 1627016 5747176 -1629584 5726976 1624528 5745760 1624712 5745880 1627016 5747176 -1626848 5747256 1627016 5747176 1624712 5745880 1624976 5746096 -1627016 5747176 1629584 5726976 1624712 5745880 1624976 5746096 -1626848 5747256 1626808 5748160 1627016 5747176 1624976 5746096 -1626848 5747256 1627016 5747176 1624976 5746096 1625232 5746360 -1626848 5747256 1626808 5748160 1627016 5747176 1625232 5746360 -1626848 5747256 1627016 5747176 1625232 5746360 1625376 5746584 -1626848 5747256 1626808 5748160 1627016 5747176 1625376 5746584 -1627016 5747176 1624976 5746096 1625232 5746360 1625376 5746584 -1626848 5747256 1627016 5747176 1625376 5746584 1626744 5747272 -1626848 5747256 1626808 5748160 1627016 5747176 1626744 5747272 -1627016 5747176 1625232 5746360 1625376 5746584 1626744 5747272 -1627016 5747176 1624712 5745880 1624976 5746096 1625232 5746360 -1625376 5746584 1625448 5746768 1626744 5747272 1627016 5747176 -1627016 5747176 1627136 5747072 1629776 5726856 1629584 5726976 -1627136 5747072 1628896 5749392 1629776 5726856 1629584 5726976 -1627016 5747176 1628896 5749392 1627136 5747072 1629584 5726976 -1628896 5749392 1627136 5747072 1627016 5747176 1627704 5749168 -1627136 5747072 1629584 5726976 1627016 5747176 1627704 5749168 -1628896 5749392 1627136 5747072 1627704 5749168 1628248 5749736 -1628896 5749392 1629776 5726856 1627136 5747072 1627704 5749168 -1627016 5747176 1627320 5748856 1627704 5749168 1627136 5747072 -1627704 5749168 1628896 5749392 1627136 5747072 1627320 5748856 -1627016 5747176 1627320 5748856 1627136 5747072 1629584 5726976 -1627016 5747176 1626872 5748264 1627320 5748856 1627136 5747072 -1627016 5747176 1626808 5748160 1626872 5748264 1627136 5747072 -1627016 5747176 1626872 5748264 1627136 5747072 1629584 5726976 -1627320 5748856 1627704 5749168 1627136 5747072 1626872 5748264 -1629776 5726856 1627136 5747072 1628896 5749392 1629872 5726768 -1629776 5726856 1629584 5726976 1627136 5747072 1629872 5726768 -1627136 5747072 1627704 5749168 1628896 5749392 1629872 5726768 -1628896 5749392 1629928 5726696 1629872 5726768 1627136 5747072 -1626872 5748264 1626912 5748472 1627320 5748856 1627136 5747072 -1627016 5747176 1627136 5747072 1629584 5726976 1624712 5745880 -1627136 5747072 1629776 5726856 1629584 5726976 1624712 5745880 -1627016 5747176 1627136 5747072 1624712 5745880 1624976 5746096 -1627016 5747176 1626872 5748264 1627136 5747072 1624976 5746096 -1627136 5747072 1629584 5726976 1624712 5745880 1624976 5746096 -1629584 5726976 1624528 5745760 1624712 5745880 1627136 5747072 -1627016 5747176 1627136 5747072 1624976 5746096 1625232 5746360 -1627136 5747072 1624712 5745880 1624976 5746096 1625232 5746360 -1627016 5747176 1626872 5748264 1627136 5747072 1625232 5746360 -1627016 5747176 1627136 5747072 1625232 5746360 1625376 5746584 -1627016 5747176 1627136 5747072 1625376 5746584 1626744 5747272 -1627016 5747176 1626872 5748264 1627136 5747072 1626744 5747272 -1627016 5747176 1627136 5747072 1626744 5747272 1626848 5747256 -1627136 5747072 1625232 5746360 1625376 5746584 1626744 5747272 -1627136 5747072 1624976 5746096 1625232 5746360 1625376 5746584 -1625376 5746584 1625448 5746768 1626744 5747272 1627136 5747072 -1628896 5749392 1627312 5746976 1627136 5747072 1627704 5749168 -1627136 5747072 1627320 5748856 1627704 5749168 1627312 5746976 -1628896 5749392 1629872 5726768 1627312 5746976 1627704 5749168 -1627312 5746976 1629872 5726768 1627136 5747072 1627320 5748856 -1627704 5749168 1628896 5749392 1627312 5746976 1627320 5748856 -1628896 5749392 1627312 5746976 1627704 5749168 1628248 5749736 -1627136 5747072 1626872 5748264 1627320 5748856 1627312 5746976 -1627320 5748856 1627704 5749168 1627312 5746976 1626872 5748264 -1627136 5747072 1626872 5748264 1627312 5746976 1629872 5726768 -1627136 5747072 1627016 5747176 1626872 5748264 1627312 5746976 -1627016 5747176 1626808 5748160 1626872 5748264 1627312 5746976 -1627136 5747072 1627016 5747176 1627312 5746976 1629872 5726768 -1626872 5748264 1627320 5748856 1627312 5746976 1627016 5747176 -1627136 5747072 1627312 5746976 1629872 5726768 1629776 5726856 -1627136 5747072 1627312 5746976 1629776 5726856 1629584 5726976 -1627136 5747072 1627312 5746976 1629584 5726976 1624712 5745880 -1627136 5747072 1627016 5747176 1627312 5746976 1624712 5745880 -1627312 5746976 1628896 5749392 1629872 5726768 1629776 5726856 -1627312 5746976 1629776 5726856 1629584 5726976 1624712 5745880 -1627136 5747072 1627312 5746976 1624712 5745880 1624976 5746096 -1627136 5747072 1627312 5746976 1624976 5746096 1625232 5746360 -1627136 5747072 1627016 5747176 1627312 5746976 1625232 5746360 -1627312 5746976 1629584 5726976 1624712 5745880 1624976 5746096 -1627312 5746976 1624712 5745880 1624976 5746096 1625232 5746360 -1627312 5746976 1629872 5726768 1629776 5726856 1629584 5726976 -1629872 5726768 1627312 5746976 1628896 5749392 1629928 5726696 -1626872 5748264 1626912 5748472 1627320 5748856 1627312 5746976 -1629584 5726976 1624528 5745760 1624712 5745880 1627312 5746976 -1629584 5726976 1624528 5745760 1627312 5746976 1629776 5726856 -1624712 5745880 1624976 5746096 1627312 5746976 1624528 5745760 -1629584 5726976 1623896 5745384 1624528 5745760 1627312 5746976 -1627136 5747072 1627312 5746976 1625232 5746360 1625376 5746584 -1627312 5746976 1624976 5746096 1625232 5746360 1625376 5746584 -1627136 5747072 1627016 5747176 1627312 5746976 1625376 5746584 -1627136 5747072 1627312 5746976 1625376 5746584 1626744 5747272 -1628896 5749392 1627416 5746952 1627312 5746976 1627704 5749168 -1627312 5746976 1627416 5746952 1629872 5726768 1629776 5726856 -1627312 5746976 1627320 5748856 1627704 5749168 1627416 5746952 -1627704 5749168 1628896 5749392 1627416 5746952 1627320 5748856 -1627312 5746976 1626872 5748264 1627320 5748856 1627416 5746952 -1627320 5748856 1627704 5749168 1627416 5746952 1626872 5748264 -1627416 5746952 1628896 5749392 1629872 5726768 1629776 5726856 -1628896 5749392 1629872 5726768 1627416 5746952 1627704 5749168 -1628896 5749392 1627416 5746952 1627704 5749168 1628248 5749736 -1627416 5746952 1629776 5726856 1627312 5746976 1626872 5748264 -1627312 5746976 1627016 5747176 1626872 5748264 1627416 5746952 -1627016 5747176 1626808 5748160 1626872 5748264 1627416 5746952 -1626872 5748264 1627320 5748856 1627416 5746952 1627016 5747176 -1627312 5746976 1627136 5747072 1627016 5747176 1627416 5746952 -1627312 5746976 1627136 5747072 1627416 5746952 1629776 5726856 -1627016 5747176 1626872 5748264 1627416 5746952 1627136 5747072 -1627312 5746976 1627416 5746952 1629776 5726856 1629584 5726976 -1627416 5746952 1629872 5726768 1629776 5726856 1629584 5726976 -1627312 5746976 1627416 5746952 1629584 5726976 1624528 5745760 -1627312 5746976 1627136 5747072 1627416 5746952 1624528 5745760 -1627416 5746952 1629776 5726856 1629584 5726976 1624528 5745760 -1629872 5726768 1627416 5746952 1628896 5749392 1629928 5726696 -1626872 5748264 1626912 5748472 1627320 5748856 1627416 5746952 -1629584 5726976 1623896 5745384 1624528 5745760 1627416 5746952 -1627312 5746976 1627416 5746952 1624528 5745760 1624712 5745880 -1627416 5746952 1629584 5726976 1624528 5745760 1624712 5745880 -1627312 5746976 1627416 5746952 1624712 5745880 1624976 5746096 -1627312 5746976 1627136 5747072 1627416 5746952 1624976 5746096 -1627312 5746976 1627416 5746952 1624976 5746096 1625232 5746360 -1627312 5746976 1627416 5746952 1625232 5746360 1625376 5746584 -1627416 5746952 1624712 5745880 1624976 5746096 1625232 5746360 -1627312 5746976 1627136 5747072 1627416 5746952 1625232 5746360 -1627416 5746952 1624528 5745760 1624712 5745880 1624976 5746096 -1627416 5746952 1627512 5746960 1629872 5726768 1629776 5726856 -1627512 5746960 1628896 5749392 1629872 5726768 1629776 5726856 -1627416 5746952 1627512 5746960 1629776 5726856 1629584 5726976 -1627512 5746960 1629872 5726768 1629776 5726856 1629584 5726976 -1627416 5746952 1628896 5749392 1627512 5746960 1629584 5726976 -1628896 5749392 1627512 5746960 1627416 5746952 1627704 5749168 -1628896 5749392 1629872 5726768 1627512 5746960 1627704 5749168 -1627416 5746952 1627320 5748856 1627704 5749168 1627512 5746960 -1627416 5746952 1626872 5748264 1627320 5748856 1627512 5746960 -1627320 5748856 1627704 5749168 1627512 5746960 1626872 5748264 -1627416 5746952 1627016 5747176 1626872 5748264 1627512 5746960 -1627016 5747176 1626808 5748160 1626872 5748264 1627512 5746960 -1626872 5748264 1627320 5748856 1627512 5746960 1627016 5747176 -1627512 5746960 1629584 5726976 1627416 5746952 1627016 5747176 -1627704 5749168 1628896 5749392 1627512 5746960 1627320 5748856 -1628896 5749392 1627512 5746960 1627704 5749168 1628248 5749736 -1627416 5746952 1627136 5747072 1627016 5747176 1627512 5746960 -1627016 5747176 1626872 5748264 1627512 5746960 1627136 5747072 -1627416 5746952 1627312 5746976 1627136 5747072 1627512 5746960 -1627416 5746952 1627312 5746976 1627512 5746960 1629584 5726976 -1627136 5747072 1627016 5747176 1627512 5746960 1627312 5746976 -1627416 5746952 1627512 5746960 1629584 5726976 1624528 5745760 -1627512 5746960 1629776 5726856 1629584 5726976 1624528 5745760 -1627416 5746952 1627312 5746976 1627512 5746960 1624528 5745760 -1627416 5746952 1627512 5746960 1624528 5745760 1624712 5745880 -1627416 5746952 1627312 5746976 1627512 5746960 1624712 5745880 -1627512 5746960 1629584 5726976 1624528 5745760 1624712 5745880 -1629872 5726768 1627512 5746960 1628896 5749392 1629928 5726696 -1626872 5748264 1626912 5748472 1627320 5748856 1627512 5746960 -1629584 5726976 1623896 5745384 1624528 5745760 1627512 5746960 -1627416 5746952 1627512 5746960 1624712 5745880 1624976 5746096 -1627512 5746960 1627800 5747032 1629872 5726768 1629776 5726856 -1627512 5746960 1628896 5749392 1627800 5747032 1629776 5726856 -1628896 5749392 1627800 5747032 1627512 5746960 1627704 5749168 -1627800 5747032 1629776 5726856 1627512 5746960 1627704 5749168 -1627512 5746960 1627800 5747032 1629776 5726856 1629584 5726976 -1627800 5747032 1629872 5726768 1629776 5726856 1629584 5726976 -1627512 5746960 1627704 5749168 1627800 5747032 1629584 5726976 -1627512 5746960 1627800 5747032 1629584 5726976 1624528 5745760 -1627512 5746960 1627320 5748856 1627704 5749168 1627800 5747032 -1627512 5746960 1627320 5748856 1627800 5747032 1629584 5726976 -1627704 5749168 1628896 5749392 1627800 5747032 1627320 5748856 -1627512 5746960 1626872 5748264 1627320 5748856 1627800 5747032 -1627512 5746960 1626872 5748264 1627800 5747032 1629584 5726976 -1627512 5746960 1627016 5747176 1626872 5748264 1627800 5747032 -1627512 5746960 1627016 5747176 1627800 5747032 1629584 5726976 -1627016 5747176 1626808 5748160 1626872 5748264 1627800 5747032 -1626872 5748264 1627320 5748856 1627800 5747032 1627016 5747176 -1627512 5746960 1627136 5747072 1627016 5747176 1627800 5747032 -1627512 5746960 1627136 5747072 1627800 5747032 1629584 5726976 -1627016 5747176 1626872 5748264 1627800 5747032 1627136 5747072 -1627320 5748856 1627704 5749168 1627800 5747032 1626872 5748264 -1628896 5749392 1627800 5747032 1627704 5749168 1628248 5749736 -1627800 5747032 1628896 5749392 1629872 5726768 1629776 5726856 -1628896 5749392 1629872 5726768 1627800 5747032 1627704 5749168 -1627512 5746960 1627312 5746976 1627136 5747072 1627800 5747032 -1629872 5726768 1627800 5747032 1628896 5749392 1629928 5726696 -1628896 5749392 1629944 5726624 1629928 5726696 1627800 5747032 -1629872 5726768 1629776 5726856 1627800 5747032 1629928 5726696 -1627800 5747032 1627704 5749168 1628896 5749392 1629928 5726696 -1626872 5748264 1626912 5748472 1627320 5748856 1627800 5747032 -1629928 5726696 1628016 5747192 1628896 5749392 1629944 5726624 -1628896 5749392 1628016 5747192 1627800 5747032 1627704 5749168 -1627800 5747032 1627320 5748856 1627704 5749168 1628016 5747192 -1627800 5747032 1626872 5748264 1627320 5748856 1628016 5747192 -1627320 5748856 1627704 5749168 1628016 5747192 1626872 5748264 -1627800 5747032 1627016 5747176 1626872 5748264 1628016 5747192 -1627016 5747176 1626808 5748160 1626872 5748264 1628016 5747192 -1627016 5747176 1626808 5748160 1628016 5747192 1627800 5747032 -1627800 5747032 1627136 5747072 1627016 5747176 1628016 5747192 -1626872 5748264 1627320 5748856 1628016 5747192 1626808 5748160 -1628896 5749392 1628016 5747192 1627704 5749168 1628248 5749736 -1627016 5747176 1626848 5747256 1626808 5748160 1628016 5747192 -1628016 5747192 1629928 5726696 1627800 5747032 1627016 5747176 -1627704 5749168 1628896 5749392 1628016 5747192 1627320 5748856 -1627800 5747032 1628016 5747192 1629928 5726696 1629872 5726768 -1627800 5747032 1628016 5747192 1629872 5726768 1629776 5726856 -1627800 5747032 1628016 5747192 1629776 5726856 1629584 5726976 -1627800 5747032 1628016 5747192 1629584 5726976 1627512 5746960 -1628016 5747192 1629872 5726768 1629776 5726856 1629584 5726976 -1627800 5747032 1627016 5747176 1628016 5747192 1629584 5726976 -1628016 5747192 1629928 5726696 1629872 5726768 1629776 5726856 -1626872 5748264 1626912 5748472 1627320 5748856 1628016 5747192 -1628016 5747192 1628896 5749392 1629928 5726696 1629872 5726768 -1628896 5749392 1629928 5726696 1628016 5747192 1627704 5749168 -1629928 5726696 1628120 5747304 1628896 5749392 1629944 5726624 -1628016 5747192 1628120 5747304 1629928 5726696 1629872 5726768 -1628016 5747192 1628896 5749392 1628120 5747304 1629872 5726768 -1628120 5747304 1628896 5749392 1629928 5726696 1629872 5726768 -1628016 5747192 1628120 5747304 1629872 5726768 1629776 5726856 -1628016 5747192 1628896 5749392 1628120 5747304 1629776 5726856 -1628016 5747192 1628120 5747304 1629776 5726856 1629584 5726976 -1628120 5747304 1629928 5726696 1629872 5726768 1629776 5726856 -1628896 5749392 1628120 5747304 1628016 5747192 1627704 5749168 -1628896 5749392 1629928 5726696 1628120 5747304 1627704 5749168 -1628896 5749392 1628120 5747304 1627704 5749168 1628248 5749736 -1628120 5747304 1629776 5726856 1628016 5747192 1627704 5749168 -1628016 5747192 1627320 5748856 1627704 5749168 1628120 5747304 -1628016 5747192 1626872 5748264 1627320 5748856 1628120 5747304 -1628016 5747192 1626808 5748160 1626872 5748264 1628120 5747304 -1626872 5748264 1627320 5748856 1628120 5747304 1626808 5748160 -1628016 5747192 1626808 5748160 1628120 5747304 1629776 5726856 -1627320 5748856 1627704 5749168 1628120 5747304 1626872 5748264 -1626872 5748264 1626912 5748472 1627320 5748856 1628120 5747304 -1628016 5747192 1627016 5747176 1626808 5748160 1628120 5747304 -1628016 5747192 1627800 5747032 1627016 5747176 1628120 5747304 -1626808 5748160 1626872 5748264 1628120 5747304 1627016 5747176 -1627016 5747176 1626848 5747256 1626808 5748160 1628120 5747304 -1628016 5747192 1627016 5747176 1628120 5747304 1629776 5726856 -1627704 5749168 1628896 5749392 1628120 5747304 1627320 5748856 -1629928 5726696 1628168 5747408 1628896 5749392 1629944 5726624 -1628896 5749392 1628168 5747408 1628120 5747304 1627704 5749168 -1628896 5749392 1628168 5747408 1627704 5749168 1628248 5749736 -1628120 5747304 1628168 5747408 1629928 5726696 1629872 5726768 -1628168 5747408 1629928 5726696 1628120 5747304 1627704 5749168 -1628896 5749392 1629928 5726696 1628168 5747408 1627704 5749168 -1628120 5747304 1627320 5748856 1627704 5749168 1628168 5747408 -1627704 5749168 1628896 5749392 1628168 5747408 1627320 5748856 -1628120 5747304 1627320 5748856 1628168 5747408 1629928 5726696 -1628120 5747304 1626872 5748264 1627320 5748856 1628168 5747408 -1628120 5747304 1626808 5748160 1626872 5748264 1628168 5747408 -1628120 5747304 1627016 5747176 1626808 5748160 1628168 5747408 -1626808 5748160 1626872 5748264 1628168 5747408 1627016 5747176 -1627016 5747176 1626848 5747256 1626808 5748160 1628168 5747408 -1628120 5747304 1627016 5747176 1628168 5747408 1629928 5726696 -1626872 5748264 1627320 5748856 1628168 5747408 1626808 5748160 -1626872 5748264 1626912 5748472 1627320 5748856 1628168 5747408 -1628120 5747304 1628016 5747192 1627016 5747176 1628168 5747408 -1628016 5747192 1627800 5747032 1627016 5747176 1628168 5747408 -1627016 5747176 1626808 5748160 1628168 5747408 1628016 5747192 -1628120 5747304 1628016 5747192 1628168 5747408 1629928 5726696 -1627320 5748856 1627704 5749168 1628168 5747408 1626872 5748264 -1627704 5749168 1628160 5747504 1628168 5747408 1627320 5748856 -1628160 5747504 1628896 5749392 1628168 5747408 1627320 5748856 -1627704 5749168 1628896 5749392 1628160 5747504 1627320 5748856 -1628896 5749392 1628160 5747504 1627704 5749168 1628248 5749736 -1628168 5747408 1628160 5747504 1628896 5749392 1629928 5726696 -1628168 5747408 1626872 5748264 1627320 5748856 1628160 5747504 -1627320 5748856 1627704 5749168 1628160 5747504 1626872 5748264 -1628168 5747408 1626872 5748264 1628160 5747504 1628896 5749392 -1628168 5747408 1626808 5748160 1626872 5748264 1628160 5747504 -1628168 5747408 1627016 5747176 1626808 5748160 1628160 5747504 -1628168 5747408 1628016 5747192 1627016 5747176 1628160 5747504 -1627016 5747176 1626808 5748160 1628160 5747504 1628016 5747192 -1628016 5747192 1627800 5747032 1627016 5747176 1628160 5747504 -1627016 5747176 1626808 5748160 1628160 5747504 1627800 5747032 -1627800 5747032 1627136 5747072 1627016 5747176 1628160 5747504 -1628016 5747192 1627800 5747032 1628160 5747504 1628168 5747408 -1628168 5747408 1628016 5747192 1628160 5747504 1628896 5749392 -1627016 5747176 1626848 5747256 1626808 5748160 1628160 5747504 -1626808 5748160 1626872 5748264 1628160 5747504 1627016 5747176 -1626872 5748264 1626912 5748472 1627320 5748856 1628160 5747504 -1628168 5747408 1628120 5747304 1628016 5747192 1628160 5747504 -1628016 5747192 1627800 5747032 1628160 5747504 1628120 5747304 -1628168 5747408 1628120 5747304 1628160 5747504 1628896 5749392 -1626872 5748264 1627320 5748856 1628160 5747504 1626808 5748160 -1627704 5749168 1628160 5747616 1628160 5747504 1627320 5748856 -1628160 5747504 1626872 5748264 1627320 5748856 1628160 5747616 -1627320 5748856 1627704 5749168 1628160 5747616 1626872 5748264 -1628896 5749392 1628160 5747616 1627704 5749168 1628248 5749736 -1627704 5749168 1628896 5749392 1628160 5747616 1627320 5748856 -1628160 5747504 1628160 5747616 1628896 5749392 1628168 5747408 -1628160 5747616 1627704 5749168 1628896 5749392 1628168 5747408 -1628896 5749392 1629928 5726696 1628168 5747408 1628160 5747616 -1628160 5747616 1628168 5747408 1628160 5747504 1626872 5748264 -1626872 5748264 1626912 5748472 1627320 5748856 1628160 5747616 -1628160 5747504 1626808 5748160 1626872 5748264 1628160 5747616 -1626872 5748264 1627320 5748856 1628160 5747616 1626808 5748160 -1628160 5747504 1627016 5747176 1626808 5748160 1628160 5747616 -1628160 5747504 1627800 5747032 1627016 5747176 1628160 5747616 -1628160 5747504 1628016 5747192 1627800 5747032 1628160 5747616 -1627800 5747032 1627016 5747176 1628160 5747616 1628016 5747192 -1627800 5747032 1627136 5747072 1627016 5747176 1628160 5747616 -1628160 5747504 1628120 5747304 1628016 5747192 1628160 5747616 -1627016 5747176 1626848 5747256 1626808 5748160 1628160 5747616 -1627016 5747176 1626808 5748160 1628160 5747616 1627800 5747032 -1628160 5747504 1628016 5747192 1628160 5747616 1628168 5747408 -1626808 5748160 1626872 5748264 1628160 5747616 1627016 5747176 -1628896 5749392 1628200 5747680 1628160 5747616 1627704 5749168 -1628896 5749392 1628168 5747408 1628200 5747680 1627704 5749168 -1628200 5747680 1628168 5747408 1628160 5747616 1627704 5749168 -1628896 5749392 1628200 5747680 1627704 5749168 1628248 5749736 -1628160 5747616 1627320 5748856 1627704 5749168 1628200 5747680 -1628160 5747616 1626872 5748264 1627320 5748856 1628200 5747680 -1628160 5747616 1626808 5748160 1626872 5748264 1628200 5747680 -1627704 5749168 1628896 5749392 1628200 5747680 1627320 5748856 -1628160 5747616 1626872 5748264 1628200 5747680 1628168 5747408 -1627320 5748856 1627704 5749168 1628200 5747680 1626872 5748264 -1628168 5747408 1628200 5747680 1628896 5749392 1629928 5726696 -1628160 5747616 1628200 5747680 1628168 5747408 1628160 5747504 -1628160 5747616 1626872 5748264 1628200 5747680 1628160 5747504 -1628200 5747680 1628896 5749392 1628168 5747408 1628160 5747504 -1626872 5748264 1626912 5748472 1627320 5748856 1628200 5747680 -1629928 5726696 1628304 5747744 1628896 5749392 1629944 5726624 -1628168 5747408 1628304 5747744 1629928 5726696 1628120 5747304 -1628896 5749392 1628304 5747744 1628168 5747408 1628200 5747680 -1628896 5749392 1629928 5726696 1628304 5747744 1628200 5747680 -1628896 5749392 1628304 5747744 1628200 5747680 1627704 5749168 -1628896 5749392 1629928 5726696 1628304 5747744 1627704 5749168 -1628200 5747680 1627320 5748856 1627704 5749168 1628304 5747744 -1627704 5749168 1628896 5749392 1628304 5747744 1627320 5748856 -1628896 5749392 1628304 5747744 1627704 5749168 1628248 5749736 -1628200 5747680 1626872 5748264 1627320 5748856 1628304 5747744 -1628168 5747408 1628160 5747504 1628200 5747680 1628304 5747744 -1628304 5747744 1629928 5726696 1628168 5747408 1628160 5747504 -1628304 5747744 1628160 5747504 1628200 5747680 1627320 5748856 -1628160 5747504 1628160 5747616 1628200 5747680 1628304 5747744 -1628896 5749392 1628504 5747840 1628304 5747744 1627704 5749168 -1629928 5726696 1628504 5747840 1628896 5749392 1629944 5726624 -1628896 5749392 1629928 5726696 1628504 5747840 1627704 5749168 -1628304 5747744 1627320 5748856 1627704 5749168 1628504 5747840 -1628304 5747744 1628504 5747840 1629928 5726696 1628168 5747408 -1628504 5747840 1628896 5749392 1629928 5726696 1628168 5747408 -1628504 5747840 1628168 5747408 1628304 5747744 1627704 5749168 -1629928 5726696 1628120 5747304 1628168 5747408 1628504 5747840 -1629928 5726696 1628120 5747304 1628504 5747840 1628896 5749392 -1628168 5747408 1628304 5747744 1628504 5747840 1628120 5747304 -1628896 5749392 1628504 5747840 1627704 5749168 1628248 5749736 -1628304 5747744 1628504 5747840 1628168 5747408 1628160 5747504 -1629928 5726696 1629872 5726768 1628120 5747304 1628504 5747840 -1629928 5726696 1629872 5726768 1628504 5747840 1628896 5749392 -1628120 5747304 1628168 5747408 1628504 5747840 1629872 5726768 -1629872 5726768 1629776 5726856 1628120 5747304 1628504 5747840 -1628504 5747840 1628776 5748096 1629928 5726696 1629872 5726768 -1628504 5747840 1628896 5749392 1628776 5748096 1629872 5726768 -1629928 5726696 1628776 5748096 1628896 5749392 1629944 5726624 -1628896 5749392 1628776 5748096 1628504 5747840 1627704 5749168 -1628504 5747840 1628304 5747744 1627704 5749168 1628776 5748096 -1628776 5748096 1629872 5726768 1628504 5747840 1627704 5749168 -1628776 5748096 1629944 5726624 1629928 5726696 1629872 5726768 -1628776 5748096 1627704 5749168 1628896 5749392 1629944 5726624 -1628896 5749392 1628776 5748096 1627704 5749168 1628248 5749736 -1628896 5749392 1760125 5760125 1629944 5726624 1628776 5748096 -1628896 5749392 1628944 5749920 1760125 5760125 1628776 5748096 -1629944 5726624 1629928 5726696 1628776 5748096 1760125 5760125 -1628896 5749392 1760125 5760125 1628776 5748096 1627704 5749168 -1760125 5760125 1751256 5699792 1629944 5726624 1628776 5748096 -1628504 5747840 1628776 5748096 1629872 5726768 1628120 5747304 -1628776 5748096 1629928 5726696 1629872 5726768 1628120 5747304 -1628504 5747840 1627704 5749168 1628776 5748096 1628120 5747304 -1628504 5747840 1628776 5748096 1628120 5747304 1628168 5747408 -1629872 5726768 1629776 5726856 1628120 5747304 1628776 5748096 -1760125 5760125 1628960 5748368 1628896 5749392 1628944 5749920 -1628960 5748368 1628776 5748096 1628896 5749392 1628944 5749920 -1628896 5749392 1628856 5749520 1628944 5749920 1628960 5748368 -1760125 5760125 1628960 5748368 1628944 5749920 1628952 5750072 -1628960 5748368 1628896 5749392 1628944 5749920 1628952 5750072 -1760125 5760125 1628960 5748368 1628952 5750072 1628800 5750648 -1628896 5749392 1628960 5748368 1628776 5748096 1627704 5749168 -1628896 5749392 1628944 5749920 1628960 5748368 1627704 5749168 -1628776 5748096 1628504 5747840 1627704 5749168 1628960 5748368 -1628960 5748368 1760125 5760125 1628776 5748096 1627704 5749168 -1760125 5760125 1628776 5748096 1628960 5748368 1628952 5750072 -1628896 5749392 1628960 5748368 1627704 5749168 1628248 5749736 -1628776 5748096 1628960 5748368 1760125 5760125 1629944 5726624 -1628776 5748096 1628960 5748368 1629944 5726624 1629928 5726696 -1628776 5748096 1628960 5748368 1629928 5726696 1629872 5726768 -1628776 5748096 1628960 5748368 1629872 5726768 1628120 5747304 -1628960 5748368 1629944 5726624 1629928 5726696 1629872 5726768 -1628776 5748096 1627704 5749168 1628960 5748368 1629872 5726768 -1628960 5748368 1628952 5750072 1760125 5760125 1629944 5726624 -1760125 5760125 1751256 5699792 1629944 5726624 1628960 5748368 -1628960 5748368 1760125 5760125 1629944 5726624 1629928 5726696 -1628952 5750072 1629048 5748600 1628960 5748368 1628944 5749920 -1628952 5750072 1760125 5760125 1629048 5748600 1628944 5749920 -1628960 5748368 1628896 5749392 1628944 5749920 1629048 5748600 -1628960 5748368 1627704 5749168 1628896 5749392 1629048 5748600 -1628896 5749392 1628944 5749920 1629048 5748600 1627704 5749168 -1628896 5749392 1628856 5749520 1628944 5749920 1629048 5748600 -1628944 5749920 1628952 5750072 1629048 5748600 1628896 5749392 -1760125 5760125 1629048 5748600 1628952 5750072 1628800 5750648 -1628960 5748368 1628776 5748096 1627704 5749168 1629048 5748600 -1628960 5748368 1629048 5748600 1760125 5760125 1629944 5726624 -1629048 5748600 1628952 5750072 1760125 5760125 1629944 5726624 -1629048 5748600 1629944 5726624 1628960 5748368 1627704 5749168 -1627704 5749168 1628248 5749736 1628896 5749392 1629048 5748600 -1760125 5760125 1751256 5699792 1629944 5726624 1629048 5748600 -1628960 5748368 1629048 5748600 1629944 5726624 1629928 5726696 -1628960 5748368 1629048 5748600 1629928 5726696 1629872 5726768 -1629048 5748600 1760125 5760125 1629944 5726624 1629928 5726696 -1628960 5748368 1627704 5749168 1629048 5748600 1629928 5726696 -1629048 5748600 1629072 5748768 1760125 5760125 1629944 5726624 -1629048 5748600 1628952 5750072 1629072 5748768 1629944 5726624 -1628952 5750072 1629072 5748768 1629048 5748600 1628944 5749920 -1629072 5748768 1629944 5726624 1629048 5748600 1628944 5749920 -1629072 5748768 1628952 5750072 1760125 5760125 1629944 5726624 -1629048 5748600 1628896 5749392 1628944 5749920 1629072 5748768 -1629048 5748600 1628896 5749392 1629072 5748768 1629944 5726624 -1628944 5749920 1628952 5750072 1629072 5748768 1628896 5749392 -1629048 5748600 1627704 5749168 1628896 5749392 1629072 5748768 -1629048 5748600 1628960 5748368 1627704 5749168 1629072 5748768 -1629048 5748600 1627704 5749168 1629072 5748768 1629944 5726624 -1628896 5749392 1628856 5749520 1628944 5749920 1629072 5748768 -1628896 5749392 1628944 5749920 1629072 5748768 1627704 5749168 -1760125 5760125 1629072 5748768 1628952 5750072 1628800 5750648 -1629048 5748600 1629072 5748768 1629944 5726624 1629928 5726696 -1629072 5748768 1760125 5760125 1629944 5726624 1629928 5726696 -1629048 5748600 1627704 5749168 1629072 5748768 1629928 5726696 -1628952 5750072 1760125 5760125 1629072 5748768 1628944 5749920 -1627704 5749168 1628248 5749736 1628896 5749392 1629072 5748768 -1760125 5760125 1751256 5699792 1629944 5726624 1629072 5748768 -1629048 5748600 1629072 5748768 1629928 5726696 1628960 5748368 -1629072 5748768 1629056 5748960 1760125 5760125 1629944 5726624 -1760125 5760125 1629056 5748960 1628952 5750072 1628800 5750648 -1628952 5750072 1629056 5748960 1629072 5748768 1628944 5749920 -1629072 5748768 1628896 5749392 1628944 5749920 1629056 5748960 -1629056 5748960 1760125 5760125 1629072 5748768 1628896 5749392 -1628896 5749392 1628856 5749520 1628944 5749920 1629056 5748960 -1629072 5748768 1627704 5749168 1628896 5749392 1629056 5748960 -1628896 5749392 1628944 5749920 1629056 5748960 1627704 5749168 -1629072 5748768 1627704 5749168 1629056 5748960 1760125 5760125 -1629072 5748768 1629048 5748600 1627704 5749168 1629056 5748960 -1628944 5749920 1628952 5750072 1629056 5748960 1628896 5749392 -1627704 5749168 1628248 5749736 1628896 5749392 1629056 5748960 -1628952 5750072 1760125 5760125 1629056 5748960 1628944 5749920 -1628896 5749392 1629000 5749168 1629056 5748960 1627704 5749168 -1628944 5749920 1629000 5749168 1628896 5749392 1628856 5749520 -1629056 5748960 1629072 5748768 1627704 5749168 1629000 5749168 -1628896 5749392 1628944 5749920 1629000 5749168 1627704 5749168 -1629056 5748960 1629000 5749168 1628944 5749920 1628952 5750072 -1629000 5749168 1628944 5749920 1629056 5748960 1627704 5749168 -1628896 5749392 1629000 5749168 1627704 5749168 1628248 5749736 -1628768 5750704 1631720 5751408 1760125 5760125 1628800 5750648 -1628768 5750704 1599875 5760125 1631720 5751408 1628800 5750648 -1631720 5751408 1599875 5760125 1760125 5760125 1628800 5750648 -1760125 5760125 1628952 5750072 1628800 5750648 1631720 5751408 -1760125 5760125 1629056 5748960 1628952 5750072 1631720 5751408 -1760125 5760125 1629072 5748768 1629056 5748960 1631720 5751408 -1760125 5760125 1629944 5726624 1629072 5748768 1631720 5751408 -1629944 5726624 1629928 5726696 1629072 5748768 1631720 5751408 -1629944 5726624 1629928 5726696 1631720 5751408 1760125 5760125 -1629056 5748960 1628952 5750072 1631720 5751408 1629072 5748768 -1629928 5726696 1629048 5748600 1629072 5748768 1631720 5751408 -1629928 5726696 1629048 5748600 1631720 5751408 1629944 5726624 -1629072 5748768 1629056 5748960 1631720 5751408 1629048 5748600 -1629056 5748960 1628944 5749920 1628952 5750072 1631720 5751408 -1629056 5748960 1628944 5749920 1631720 5751408 1629072 5748768 -1629056 5748960 1629000 5749168 1628944 5749920 1631720 5751408 -1629056 5748960 1629000 5749168 1631720 5751408 1629072 5748768 -1628944 5749920 1628952 5750072 1631720 5751408 1629000 5749168 -1629000 5749168 1628896 5749392 1628944 5749920 1631720 5751408 -1760125 5760125 1629944 5726624 1631720 5751408 1599875 5760125 -1760125 5760125 1751256 5699792 1629944 5726624 1631720 5751408 -1629944 5726624 1629928 5726696 1631720 5751408 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1631720 5751408 -1760125 5760125 1751256 5699792 1631720 5751408 1599875 5760125 -1751256 5699792 1629944 5726576 1629944 5726624 1631720 5751408 -1629928 5726696 1628960 5748368 1629048 5748600 1631720 5751408 -1629928 5726696 1628960 5748368 1631720 5751408 1629944 5726624 -1629928 5726696 1629872 5726768 1628960 5748368 1631720 5751408 -1629928 5726696 1629872 5726768 1631720 5751408 1629944 5726624 -1629872 5726768 1628776 5748096 1628960 5748368 1631720 5751408 -1629872 5726768 1628120 5747304 1628776 5748096 1631720 5751408 -1629872 5726768 1628776 5748096 1631720 5751408 1629928 5726696 -1629048 5748600 1629072 5748768 1631720 5751408 1628960 5748368 -1628960 5748368 1629048 5748600 1631720 5751408 1628776 5748096 -1628952 5750072 1628808 5750592 1628800 5750648 1631720 5751408 -1628952 5750072 1628896 5750208 1628808 5750592 1631720 5751408 -1628896 5750208 1628768 5750400 1628808 5750592 1631720 5751408 -1628808 5750592 1628800 5750648 1631720 5751408 1628896 5750208 -1628952 5750072 1628896 5750208 1631720 5751408 1628944 5749920 -1628800 5750648 1628768 5750704 1631720 5751408 1628808 5750592 -1599875 5760125 1631720 5751408 1628768 5750704 1620152 5752552 -1631720 5751408 1628800 5750648 1628768 5750704 1620152 5752552 -1599875 5760125 1760125 5760125 1631720 5751408 1620152 5752552 -1599875 5760125 1631720 5751408 1620152 5752552 1620096 5752560 -1628768 5750704 1620224 5752520 1620152 5752552 1631720 5751408 -1628768 5750704 1620224 5752520 1631720 5751408 1628800 5750648 -1628768 5750704 1628664 5750680 1620224 5752520 1631720 5751408 -1620152 5752552 1599875 5760125 1631720 5751408 1620224 5752520 -1631720 5751408 1631680 5751416 1599875 5760125 1760125 5760125 -1599875 5760125 1631680 5751416 1620152 5752552 1620096 5752560 -1620152 5752552 1631680 5751416 1631720 5751408 1620224 5752520 -1620152 5752552 1599875 5760125 1631680 5751416 1620224 5752520 -1631680 5751416 1599875 5760125 1631720 5751408 1620224 5752520 -1631720 5751408 1628768 5750704 1620224 5752520 1631680 5751416 -1631720 5751408 1628800 5750648 1628768 5750704 1631680 5751416 -1631720 5751408 1628800 5750648 1631680 5751416 1599875 5760125 -1628768 5750704 1628664 5750680 1620224 5752520 1631680 5751416 -1628768 5750704 1620224 5752520 1631680 5751416 1628800 5750648 -1631720 5751408 1628808 5750592 1628800 5750648 1631680 5751416 -1628800 5750648 1628768 5750704 1631680 5751416 1628808 5750592 -1631720 5751408 1628808 5750592 1631680 5751416 1599875 5760125 -1631720 5751408 1628896 5750208 1628808 5750592 1631680 5751416 -1631720 5751408 1628952 5750072 1628896 5750208 1631680 5751416 -1631720 5751408 1628952 5750072 1631680 5751416 1599875 5760125 -1628896 5750208 1628768 5750400 1628808 5750592 1631680 5751416 -1628896 5750208 1628808 5750592 1631680 5751416 1628952 5750072 -1631720 5751408 1628944 5749920 1628952 5750072 1631680 5751416 -1628952 5750072 1628896 5750208 1631680 5751416 1628944 5749920 -1631720 5751408 1628944 5749920 1631680 5751416 1599875 5760125 -1631720 5751408 1629000 5749168 1628944 5749920 1631680 5751416 -1631720 5751408 1629000 5749168 1631680 5751416 1599875 5760125 -1631720 5751408 1629056 5748960 1629000 5749168 1631680 5751416 -1631720 5751408 1629072 5748768 1629056 5748960 1631680 5751416 -1631720 5751408 1629056 5748960 1631680 5751416 1599875 5760125 -1629000 5749168 1628944 5749920 1631680 5751416 1629056 5748960 -1629000 5749168 1628896 5749392 1628944 5749920 1631680 5751416 -1628944 5749920 1628952 5750072 1631680 5751416 1629000 5749168 -1628808 5750592 1628800 5750648 1631680 5751416 1628896 5750208 -1620224 5752520 1620152 5752552 1631680 5751416 1628768 5750704 -1620224 5752520 1631584 5751416 1628768 5750704 1628664 5750680 -1628768 5750704 1631584 5751416 1631680 5751416 1628800 5750648 -1631680 5751416 1628808 5750592 1628800 5750648 1631584 5751416 -1631584 5751416 1620224 5752520 1631680 5751416 1628808 5750592 -1628768 5750704 1620224 5752520 1631584 5751416 1628800 5750648 -1628800 5750648 1628768 5750704 1631584 5751416 1628808 5750592 -1631680 5751416 1628896 5750208 1628808 5750592 1631584 5751416 -1628808 5750592 1628800 5750648 1631584 5751416 1628896 5750208 -1631680 5751416 1628896 5750208 1631584 5751416 1620224 5752520 -1628896 5750208 1628768 5750400 1628808 5750592 1631584 5751416 -1631680 5751416 1628952 5750072 1628896 5750208 1631584 5751416 -1631680 5751416 1628952 5750072 1631584 5751416 1620224 5752520 -1631680 5751416 1628944 5749920 1628952 5750072 1631584 5751416 -1631680 5751416 1628944 5749920 1631584 5751416 1620224 5752520 -1628952 5750072 1628896 5750208 1631584 5751416 1628944 5749920 -1631680 5751416 1629000 5749168 1628944 5749920 1631584 5751416 -1631680 5751416 1629000 5749168 1631584 5751416 1620224 5752520 -1628944 5749920 1628952 5750072 1631584 5751416 1629000 5749168 -1631680 5751416 1629056 5748960 1629000 5749168 1631584 5751416 -1631680 5751416 1629056 5748960 1631584 5751416 1620224 5752520 -1631680 5751416 1631720 5751408 1629056 5748960 1631584 5751416 -1631680 5751416 1631720 5751408 1631584 5751416 1620224 5752520 -1631720 5751408 1629072 5748768 1629056 5748960 1631584 5751416 -1631720 5751408 1629072 5748768 1631584 5751416 1631680 5751416 -1631720 5751408 1629048 5748600 1629072 5748768 1631584 5751416 -1629056 5748960 1629000 5749168 1631584 5751416 1629072 5748768 -1629000 5749168 1628896 5749392 1628944 5749920 1631584 5751416 -1629000 5749168 1628944 5749920 1631584 5751416 1629056 5748960 -1628896 5750208 1628808 5750592 1631584 5751416 1628952 5750072 -1631680 5751416 1631584 5751416 1620224 5752520 1620152 5752552 -1631680 5751416 1631720 5751408 1631584 5751416 1620152 5752552 -1631680 5751416 1631584 5751416 1620152 5752552 1599875 5760125 -1631584 5751416 1628768 5750704 1620224 5752520 1620152 5752552 -1631584 5751416 1631432 5751368 1628808 5750592 1628800 5750648 -1631584 5751416 1628896 5750208 1631432 5751368 1628800 5750648 -1631432 5751368 1628896 5750208 1628808 5750592 1628800 5750648 -1628808 5750592 1631432 5751368 1628896 5750208 1628768 5750400 -1631584 5751416 1631432 5751368 1628800 5750648 1628768 5750704 -1631432 5751368 1628808 5750592 1628800 5750648 1628768 5750704 -1631584 5751416 1628896 5750208 1631432 5751368 1628768 5750704 -1631584 5751416 1631432 5751368 1628768 5750704 1620224 5752520 -1631584 5751416 1631432 5751368 1620224 5752520 1620152 5752552 -1631584 5751416 1628896 5750208 1631432 5751368 1620224 5752520 -1628768 5750704 1628664 5750680 1620224 5752520 1631432 5751368 -1631432 5751368 1628800 5750648 1628768 5750704 1620224 5752520 -1628896 5750208 1631432 5751368 1631584 5751416 1628952 5750072 -1631432 5751368 1620224 5752520 1631584 5751416 1628952 5750072 -1628896 5750208 1628808 5750592 1631432 5751368 1628952 5750072 -1631584 5751416 1628944 5749920 1628952 5750072 1631432 5751368 -1631584 5751416 1628944 5749920 1631432 5751368 1620224 5752520 -1631584 5751416 1629000 5749168 1628944 5749920 1631432 5751368 -1631584 5751416 1629000 5749168 1631432 5751368 1620224 5752520 -1629000 5749168 1628896 5749392 1628944 5749920 1631432 5751368 -1628944 5749920 1628952 5750072 1631432 5751368 1629000 5749168 -1631584 5751416 1629056 5748960 1629000 5749168 1631432 5751368 -1631584 5751416 1629056 5748960 1631432 5751368 1620224 5752520 -1629000 5749168 1628944 5749920 1631432 5751368 1629056 5748960 -1631584 5751416 1629072 5748768 1629056 5748960 1631432 5751368 -1631584 5751416 1629072 5748768 1631432 5751368 1620224 5752520 -1631584 5751416 1631720 5751408 1629072 5748768 1631432 5751368 -1631584 5751416 1631720 5751408 1631432 5751368 1620224 5752520 -1631584 5751416 1631680 5751416 1631720 5751408 1631432 5751368 -1631720 5751408 1629048 5748600 1629072 5748768 1631432 5751368 -1629072 5748768 1629056 5748960 1631432 5751368 1631720 5751408 -1629056 5748960 1629000 5749168 1631432 5751368 1629072 5748768 -1628952 5750072 1628896 5750208 1631432 5751368 1628944 5749920 -1629000 5749168 1631272 5751256 1631432 5751368 1629056 5748960 -1631272 5751256 1628944 5749920 1631432 5751368 1629056 5748960 -1628944 5749920 1631272 5751256 1629000 5749168 1628896 5749392 -1629000 5749168 1628944 5749920 1631272 5751256 1629056 5748960 -1631432 5751368 1631272 5751256 1628944 5749920 1628952 5750072 -1631432 5751368 1629056 5748960 1631272 5751256 1628952 5750072 -1631272 5751256 1629000 5749168 1628944 5749920 1628952 5750072 -1631432 5751368 1629072 5748768 1629056 5748960 1631272 5751256 -1631432 5751368 1629072 5748768 1631272 5751256 1628952 5750072 -1629056 5748960 1629000 5749168 1631272 5751256 1629072 5748768 -1631432 5751368 1631720 5751408 1629072 5748768 1631272 5751256 -1631432 5751368 1631720 5751408 1631272 5751256 1628952 5750072 -1631432 5751368 1631584 5751416 1631720 5751408 1631272 5751256 -1631720 5751408 1629048 5748600 1629072 5748768 1631272 5751256 -1631720 5751408 1628960 5748368 1629048 5748600 1631272 5751256 -1631720 5751408 1629048 5748600 1631272 5751256 1631432 5751368 -1629072 5748768 1629056 5748960 1631272 5751256 1629048 5748600 -1631432 5751368 1631272 5751256 1628952 5750072 1628896 5750208 -1631432 5751368 1631720 5751408 1631272 5751256 1628896 5750208 -1631432 5751368 1631272 5751256 1628896 5750208 1628808 5750592 -1631432 5751368 1631272 5751256 1628808 5750592 1628800 5750648 -1631432 5751368 1631272 5751256 1628800 5750648 1628768 5750704 -1631272 5751256 1628808 5750592 1628800 5750648 1628768 5750704 -1631432 5751368 1631720 5751408 1631272 5751256 1628768 5750704 -1631272 5751256 1628896 5750208 1628808 5750592 1628800 5750648 -1628896 5750208 1628768 5750400 1628808 5750592 1631272 5751256 -1631272 5751256 1628944 5749920 1628952 5750072 1628896 5750208 -1631432 5751368 1631272 5751256 1628768 5750704 1620224 5752520 -1631272 5751256 1628952 5750072 1628896 5750208 1628808 5750592 -1629048 5748600 1631152 5751080 1631720 5751408 1628960 5748368 -1631272 5751256 1631152 5751080 1629048 5748600 1629072 5748768 -1631720 5751408 1631152 5751080 1631272 5751256 1631432 5751368 -1631272 5751256 1631720 5751408 1631152 5751080 1629072 5748768 -1631152 5751080 1631272 5751256 1631720 5751408 1628960 5748368 -1629048 5748600 1629072 5748768 1631152 5751080 1628960 5748368 -1631720 5751408 1628776 5748096 1628960 5748368 1631152 5751080 -1631272 5751256 1631152 5751080 1629072 5748768 1629056 5748960 -1631272 5751256 1631152 5751080 1629056 5748960 1629000 5749168 -1631152 5751080 1629048 5748600 1629072 5748768 1629056 5748960 -1631272 5751256 1631720 5751408 1631152 5751080 1629000 5749168 -1631272 5751256 1631152 5751080 1629000 5749168 1628944 5749920 -1631152 5751080 1629056 5748960 1629000 5749168 1628944 5749920 -1629000 5749168 1628896 5749392 1628944 5749920 1631152 5751080 -1631272 5751256 1631152 5751080 1628944 5749920 1628952 5750072 -1631272 5751256 1631720 5751408 1631152 5751080 1628952 5750072 -1631152 5751080 1629000 5749168 1628944 5749920 1628952 5750072 -1631272 5751256 1631152 5751080 1628952 5750072 1628896 5750208 -1631152 5751080 1628944 5749920 1628952 5750072 1628896 5750208 -1631272 5751256 1631720 5751408 1631152 5751080 1628896 5750208 -1631152 5751080 1629072 5748768 1629056 5748960 1629000 5749168 -1631272 5751256 1631152 5751080 1628896 5750208 1628808 5750592 -1631272 5751256 1631152 5751080 1628808 5750592 1628800 5750648 -1631272 5751256 1631152 5751080 1628800 5750648 1628768 5750704 -1631272 5751256 1631152 5751080 1628768 5750704 1631432 5751368 -1631152 5751080 1628808 5750592 1628800 5750648 1628768 5750704 -1631272 5751256 1631720 5751408 1631152 5751080 1628768 5750704 -1628896 5750208 1628768 5750400 1628808 5750592 1631152 5751080 -1631152 5751080 1628952 5750072 1628896 5750208 1628808 5750592 -1631152 5751080 1628896 5750208 1628808 5750592 1628800 5750648 -1629072 5748768 1630840 5750760 1631152 5751080 1629048 5748600 -1629072 5748768 1629056 5748960 1630840 5750760 1629048 5748600 -1631152 5751080 1628960 5748368 1629048 5748600 1630840 5750760 -1631152 5751080 1631720 5751408 1628960 5748368 1630840 5750760 -1629048 5748600 1629072 5748768 1630840 5750760 1628960 5748368 -1631152 5751080 1631272 5751256 1631720 5751408 1630840 5750760 -1628960 5748368 1629048 5748600 1630840 5750760 1631720 5751408 -1630840 5750760 1629056 5748960 1631152 5751080 1631720 5751408 -1631720 5751408 1628776 5748096 1628960 5748368 1630840 5750760 -1631152 5751080 1630840 5750760 1629056 5748960 1629000 5749168 -1631152 5751080 1630840 5750760 1629000 5749168 1628944 5749920 -1629000 5749168 1628896 5749392 1628944 5749920 1630840 5750760 -1630840 5750760 1629072 5748768 1629056 5748960 1629000 5749168 -1631152 5751080 1630840 5750760 1628944 5749920 1628952 5750072 -1630840 5750760 1629000 5749168 1628944 5749920 1628952 5750072 -1631152 5751080 1630840 5750760 1628952 5750072 1628896 5750208 -1630840 5750760 1628944 5749920 1628952 5750072 1628896 5750208 -1631152 5751080 1631720 5751408 1630840 5750760 1628896 5750208 -1631152 5751080 1630840 5750760 1628896 5750208 1628808 5750592 -1630840 5750760 1628952 5750072 1628896 5750208 1628808 5750592 -1631152 5751080 1631720 5751408 1630840 5750760 1628808 5750592 -1628896 5750208 1628768 5750400 1628808 5750592 1630840 5750760 -1630840 5750760 1629056 5748960 1629000 5749168 1628944 5749920 -1631152 5751080 1630840 5750760 1628808 5750592 1628800 5750648 -1631152 5751080 1630840 5750760 1628800 5750648 1628768 5750704 -1631152 5751080 1630840 5750760 1628768 5750704 1631272 5751256 -1631152 5751080 1631720 5751408 1630840 5750760 1628768 5750704 -1630840 5750760 1628896 5750208 1628808 5750592 1628800 5750648 -1630840 5750760 1628808 5750592 1628800 5750648 1628768 5750704 -1631720 5751408 1630840 5750704 1630840 5750760 1631152 5751080 -1631720 5751408 1628960 5748368 1630840 5750704 1631152 5751080 -1631720 5751408 1630840 5750704 1631152 5751080 1631272 5751256 -1630840 5750704 1628960 5748368 1630840 5750760 1631152 5751080 -1630840 5750760 1630840 5750704 1628960 5748368 1629048 5748600 -1630840 5750704 1631720 5751408 1628960 5748368 1629048 5748600 -1630840 5750760 1630840 5750704 1629048 5748600 1629072 5748768 -1630840 5750760 1630840 5750704 1629072 5748768 1629056 5748960 -1630840 5750704 1629048 5748600 1629072 5748768 1629056 5748960 -1630840 5750760 1630840 5750704 1629056 5748960 1629000 5749168 -1630840 5750704 1629072 5748768 1629056 5748960 1629000 5749168 -1630840 5750760 1631152 5751080 1630840 5750704 1629000 5749168 -1630840 5750704 1628960 5748368 1629048 5748600 1629072 5748768 -1628960 5748368 1630840 5750704 1631720 5751408 1628776 5748096 -1630840 5750760 1630840 5750704 1629000 5749168 1628944 5749920 -1630840 5750760 1630840 5750704 1628944 5749920 1628952 5750072 -1629000 5749168 1628896 5749392 1628944 5749920 1630840 5750704 -1630840 5750704 1629056 5748960 1629000 5749168 1628944 5749920 -1630840 5750760 1631152 5751080 1630840 5750704 1628952 5750072 -1630840 5750760 1630840 5750704 1628952 5750072 1628896 5750208 -1630840 5750704 1628944 5749920 1628952 5750072 1628896 5750208 -1630840 5750760 1630840 5750704 1628896 5750208 1628808 5750592 -1630840 5750760 1631152 5751080 1630840 5750704 1628808 5750592 -1630840 5750704 1628952 5750072 1628896 5750208 1628808 5750592 -1628896 5750208 1628768 5750400 1628808 5750592 1630840 5750704 -1630840 5750760 1630840 5750704 1628808 5750592 1628800 5750648 -1630840 5750704 1629000 5749168 1628944 5749920 1628952 5750072 -1630840 5750704 1630864 5750688 1628960 5748368 1629048 5748600 -1630840 5750704 1631720 5751408 1630864 5750688 1629048 5748600 -1631720 5751408 1630864 5750688 1630840 5750704 1631152 5751080 -1630864 5750688 1629048 5748600 1630840 5750704 1631152 5751080 -1630840 5750704 1630840 5750760 1631152 5751080 1630864 5750688 -1630840 5750704 1630840 5750760 1630864 5750688 1629048 5748600 -1631152 5751080 1631720 5751408 1630864 5750688 1630840 5750760 -1630864 5750688 1631720 5751408 1628960 5748368 1629048 5748600 -1631720 5751408 1630864 5750688 1631152 5751080 1631272 5751256 -1630840 5750704 1630864 5750688 1629048 5748600 1629072 5748768 -1630864 5750688 1628960 5748368 1629048 5748600 1629072 5748768 -1630840 5750704 1630840 5750760 1630864 5750688 1629072 5748768 -1630840 5750704 1630864 5750688 1629072 5748768 1629056 5748960 -1630840 5750704 1630864 5750688 1629056 5748960 1629000 5749168 -1630840 5750704 1630840 5750760 1630864 5750688 1629000 5749168 -1630864 5750688 1629072 5748768 1629056 5748960 1629000 5749168 -1630840 5750704 1630864 5750688 1629000 5749168 1628944 5749920 -1630864 5750688 1629056 5748960 1629000 5749168 1628944 5749920 -1630840 5750704 1630840 5750760 1630864 5750688 1628944 5749920 -1629000 5749168 1628896 5749392 1628944 5749920 1630864 5750688 -1630864 5750688 1629048 5748600 1629072 5748768 1629056 5748960 -1628960 5748368 1630864 5750688 1631720 5751408 1628776 5748096 -1630840 5750704 1630864 5750688 1628944 5749920 1628952 5750072 -1631720 5751408 1628960 5748368 1630864 5750688 1631152 5751080 -1630864 5750688 1630912 5750672 1628960 5748368 1629048 5748600 -1630864 5750688 1630912 5750672 1629048 5748600 1629072 5748768 -1630912 5750672 1628960 5748368 1629048 5748600 1629072 5748768 -1630864 5750688 1631720 5751408 1630912 5750672 1629072 5748768 -1630864 5750688 1630912 5750672 1629072 5748768 1629056 5748960 -1630912 5750672 1629048 5748600 1629072 5748768 1629056 5748960 -1630864 5750688 1630912 5750672 1629056 5748960 1629000 5749168 -1630864 5750688 1631720 5751408 1630912 5750672 1629056 5748960 -1628960 5748368 1630912 5750672 1631720 5751408 1628776 5748096 -1631720 5751408 1629872 5726768 1628776 5748096 1630912 5750672 -1630912 5750672 1630864 5750688 1631720 5751408 1628776 5748096 -1631720 5751408 1630912 5750672 1630864 5750688 1631152 5751080 -1630864 5750688 1630840 5750760 1631152 5751080 1630912 5750672 -1630864 5750688 1630840 5750704 1630840 5750760 1630912 5750672 -1630912 5750672 1629056 5748960 1630864 5750688 1630840 5750760 -1631720 5751408 1630912 5750672 1631152 5751080 1631272 5751256 -1631720 5751408 1628776 5748096 1630912 5750672 1631152 5751080 -1631152 5751080 1631720 5751408 1630912 5750672 1630840 5750760 -1630912 5750672 1628776 5748096 1628960 5748368 1629048 5748600 -1628776 5748096 1631064 5750648 1629872 5726768 1628120 5747304 -1629872 5726768 1631064 5750648 1631720 5751408 1629928 5726696 -1631720 5751408 1629944 5726624 1629928 5726696 1631064 5750648 -1631720 5751408 1631064 5750648 1628776 5748096 1630912 5750672 -1628776 5748096 1628960 5748368 1630912 5750672 1631064 5750648 -1630912 5750672 1631720 5751408 1631064 5750648 1628960 5748368 -1631064 5750648 1630912 5750672 1631720 5751408 1629928 5726696 -1631720 5751408 1631064 5750648 1630912 5750672 1631152 5751080 -1631064 5750648 1628960 5748368 1630912 5750672 1631152 5751080 -1631720 5751408 1631064 5750648 1631152 5751080 1631272 5751256 -1631720 5751408 1629928 5726696 1631064 5750648 1631152 5751080 -1629872 5726768 1628776 5748096 1631064 5750648 1629928 5726696 -1630912 5750672 1630840 5750760 1631152 5751080 1631064 5750648 -1630912 5750672 1630840 5750760 1631064 5750648 1628960 5748368 -1630912 5750672 1630864 5750688 1630840 5750760 1631064 5750648 -1631152 5751080 1631720 5751408 1631064 5750648 1630840 5750760 -1628960 5748368 1629048 5748600 1630912 5750672 1631064 5750648 -1630912 5750672 1630840 5750760 1631064 5750648 1629048 5748600 -1629048 5748600 1629072 5748768 1630912 5750672 1631064 5750648 -1630912 5750672 1630840 5750760 1631064 5750648 1629072 5748768 -1629072 5748768 1629056 5748960 1630912 5750672 1631064 5750648 -1630912 5750672 1630840 5750760 1631064 5750648 1629056 5748960 -1629072 5748768 1629056 5748960 1631064 5750648 1629048 5748600 -1629056 5748960 1630864 5750688 1630912 5750672 1631064 5750648 -1628960 5748368 1629048 5748600 1631064 5750648 1628776 5748096 -1629048 5748600 1629072 5748768 1631064 5750648 1628960 5748368 -1631064 5750648 1629872 5726768 1628776 5748096 1628960 5748368 -1629928 5726696 1631168 5750568 1631720 5751408 1629944 5726624 -1631064 5750648 1631168 5750568 1629928 5726696 1629872 5726768 -1631720 5751408 1631168 5750568 1631064 5750648 1631152 5751080 -1631720 5751408 1629928 5726696 1631168 5750568 1631152 5751080 -1631720 5751408 1631168 5750568 1631152 5751080 1631272 5751256 -1631168 5750568 1631720 5751408 1629928 5726696 1629872 5726768 -1631064 5750648 1630840 5750760 1631152 5751080 1631168 5750568 -1631064 5750648 1631168 5750568 1629872 5726768 1628776 5748096 -1629872 5726768 1628120 5747304 1628776 5748096 1631168 5750568 -1631168 5750568 1629928 5726696 1629872 5726768 1628776 5748096 -1631064 5750648 1631152 5751080 1631168 5750568 1628776 5748096 -1631064 5750648 1631168 5750568 1628776 5748096 1628960 5748368 -1631064 5750648 1631168 5750568 1628960 5748368 1629048 5748600 -1631168 5750568 1629872 5726768 1628776 5748096 1628960 5748368 -1631064 5750648 1631152 5751080 1631168 5750568 1629048 5748600 -1631064 5750648 1631168 5750568 1629048 5748600 1629072 5748768 -1631064 5750648 1631168 5750568 1629072 5748768 1629056 5748960 -1631064 5750648 1631168 5750568 1629056 5748960 1630912 5750672 -1631168 5750568 1629072 5748768 1629056 5748960 1630912 5750672 -1629056 5748960 1630864 5750688 1630912 5750672 1631168 5750568 -1631168 5750568 1628960 5748368 1629048 5748600 1629072 5748768 -1631064 5750648 1631152 5751080 1631168 5750568 1630912 5750672 -1631168 5750568 1629048 5748600 1629072 5748768 1629056 5748960 -1631168 5750568 1628776 5748096 1628960 5748368 1629048 5748600 -1629928 5726696 1631232 5750544 1631720 5751408 1629944 5726624 -1631720 5751408 1631232 5750544 1631168 5750568 1631152 5751080 -1631720 5751408 1629928 5726696 1631232 5750544 1631152 5751080 -1631720 5751408 1631232 5750544 1631152 5751080 1631272 5751256 -1631232 5750544 1631168 5750568 1631152 5751080 1631272 5751256 -1631720 5751408 1629928 5726696 1631232 5750544 1631272 5751256 -1631720 5751408 1631232 5750544 1631272 5751256 1631432 5751368 -1631168 5750568 1631064 5750648 1631152 5751080 1631232 5750544 -1631168 5750568 1631232 5750544 1629928 5726696 1629872 5726768 -1631168 5750568 1631232 5750544 1629872 5726768 1628776 5748096 -1629872 5726768 1628120 5747304 1628776 5748096 1631232 5750544 -1631232 5750544 1631720 5751408 1629928 5726696 1629872 5726768 -1631232 5750544 1629928 5726696 1629872 5726768 1628776 5748096 -1631232 5750544 1628776 5748096 1631168 5750568 1631152 5751080 -1631168 5750568 1631232 5750544 1628776 5748096 1628960 5748368 -1631232 5750544 1629872 5726768 1628776 5748096 1628960 5748368 -1631168 5750568 1631152 5751080 1631232 5750544 1628960 5748368 -1631168 5750568 1631232 5750544 1628960 5748368 1629048 5748600 -1631168 5750568 1631232 5750544 1629048 5748600 1629072 5748768 -1631168 5750568 1631152 5751080 1631232 5750544 1629072 5748768 -1631232 5750544 1628776 5748096 1628960 5748368 1629048 5748600 -1631168 5750568 1631232 5750544 1629072 5748768 1629056 5748960 -1631168 5750568 1631232 5750544 1629056 5748960 1630912 5750672 -1631232 5750544 1629048 5748600 1629072 5748768 1629056 5748960 -1631168 5750568 1631152 5751080 1631232 5750544 1629056 5748960 -1631232 5750544 1628960 5748368 1629048 5748600 1629072 5748768 -1629928 5726696 1631392 5750568 1631720 5751408 1629944 5726624 -1631232 5750544 1631392 5750568 1629928 5726696 1629872 5726768 -1631232 5750544 1631720 5751408 1631392 5750568 1629872 5726768 -1631720 5751408 1631392 5750568 1631232 5750544 1631272 5751256 -1631720 5751408 1629928 5726696 1631392 5750568 1631272 5751256 -1631392 5750568 1629872 5726768 1631232 5750544 1631272 5751256 -1631392 5750568 1631720 5751408 1629928 5726696 1629872 5726768 -1631720 5751408 1631392 5750568 1631272 5751256 1631432 5751368 -1631720 5751408 1631392 5750568 1631432 5751368 1631584 5751416 -1631720 5751408 1629928 5726696 1631392 5750568 1631432 5751368 -1631392 5750568 1631232 5750544 1631272 5751256 1631432 5751368 -1631232 5750544 1631152 5751080 1631272 5751256 1631392 5750568 -1631232 5750544 1631168 5750568 1631152 5751080 1631392 5750568 -1631232 5750544 1631168 5750568 1631392 5750568 1629872 5726768 -1631272 5751256 1631432 5751368 1631392 5750568 1631152 5751080 -1631152 5751080 1631272 5751256 1631392 5750568 1631168 5750568 -1631168 5750568 1631064 5750648 1631152 5751080 1631392 5750568 -1631168 5750568 1631064 5750648 1631392 5750568 1631232 5750544 -1631152 5751080 1631272 5751256 1631392 5750568 1631064 5750648 -1631232 5750544 1631392 5750568 1629872 5726768 1628776 5748096 -1629872 5726768 1628120 5747304 1628776 5748096 1631392 5750568 -1631232 5750544 1631392 5750568 1628776 5748096 1628960 5748368 -1631392 5750568 1629928 5726696 1629872 5726768 1628776 5748096 -1631232 5750544 1631168 5750568 1631392 5750568 1628960 5748368 -1631392 5750568 1629872 5726768 1628776 5748096 1628960 5748368 -1631064 5750648 1630840 5750760 1631152 5751080 1631392 5750568 -1631232 5750544 1631392 5750568 1628960 5748368 1629048 5748600 -1631392 5750568 1628776 5748096 1628960 5748368 1629048 5748600 -1631232 5750544 1631168 5750568 1631392 5750568 1629048 5748600 -1631232 5750544 1631392 5750568 1629048 5748600 1629072 5748768 -1629928 5726696 1631624 5750656 1631720 5751408 1629944 5726624 -1631720 5751408 1751256 5699792 1629944 5726624 1631624 5750656 -1629944 5726624 1629928 5726696 1631624 5750656 1751256 5699792 -1631720 5751408 1631624 5750656 1631392 5750568 1631432 5751368 -1631720 5751408 1631624 5750656 1631432 5751368 1631584 5751416 -1631624 5750656 1631392 5750568 1631432 5751368 1631584 5751416 -1629928 5726696 1631392 5750568 1631624 5750656 1629944 5726624 -1631392 5750568 1631624 5750656 1629928 5726696 1629872 5726768 -1631624 5750656 1629944 5726624 1629928 5726696 1629872 5726768 -1631392 5750568 1631624 5750656 1629872 5726768 1628776 5748096 -1629872 5726768 1628120 5747304 1628776 5748096 1631624 5750656 -1631624 5750656 1629928 5726696 1629872 5726768 1628776 5748096 -1631624 5750656 1628776 5748096 1631392 5750568 1631432 5751368 -1631720 5751408 1631624 5750656 1631584 5751416 1631680 5751416 -1631392 5750568 1631272 5751256 1631432 5751368 1631624 5750656 -1631432 5751368 1631584 5751416 1631624 5750656 1631272 5751256 -1631392 5750568 1631152 5751080 1631272 5751256 1631624 5750656 -1631392 5750568 1631152 5751080 1631624 5750656 1628776 5748096 -1631272 5751256 1631432 5751368 1631624 5750656 1631152 5751080 -1631392 5750568 1631064 5750648 1631152 5751080 1631624 5750656 -1751256 5699792 1629944 5726576 1629944 5726624 1631624 5750656 -1631720 5751408 1760125 5760125 1751256 5699792 1631624 5750656 -1751256 5699792 1629944 5726624 1631624 5750656 1760125 5760125 -1760125 5760125 1751376 5699848 1751256 5699792 1631624 5750656 -1631720 5751408 1599875 5760125 1760125 5760125 1631624 5750656 -1631624 5750656 1631584 5751416 1631720 5751408 1760125 5760125 -1631392 5750568 1631624 5750656 1628776 5748096 1628960 5748368 -1631392 5750568 1631624 5750656 1628960 5748368 1629048 5748600 -1631624 5750656 1629872 5726768 1628776 5748096 1628960 5748368 -1631392 5750568 1631152 5751080 1631624 5750656 1628960 5748368 -1760125 5760125 1631808 5750832 1631720 5751408 1599875 5760125 -1631624 5750656 1631808 5750832 1760125 5760125 1751256 5699792 -1631624 5750656 1631808 5750832 1751256 5699792 1629944 5726624 -1631624 5750656 1631808 5750832 1629944 5726624 1629928 5726696 -1631808 5750832 1751256 5699792 1629944 5726624 1629928 5726696 -1760125 5760125 1751376 5699848 1751256 5699792 1631808 5750832 -1631624 5750656 1631808 5750832 1629928 5726696 1629872 5726768 -1631624 5750656 1631720 5751408 1631808 5750832 1629928 5726696 -1751256 5699792 1629944 5726576 1629944 5726624 1631808 5750832 -1631808 5750832 1760125 5760125 1751256 5699792 1629944 5726624 -1631720 5751408 1631808 5750832 1631624 5750656 1631584 5751416 -1631624 5750656 1631432 5751368 1631584 5751416 1631808 5750832 -1631624 5750656 1631272 5751256 1631432 5751368 1631808 5750832 -1631432 5751368 1631584 5751416 1631808 5750832 1631272 5751256 -1631808 5750832 1629928 5726696 1631624 5750656 1631272 5751256 -1631720 5751408 1631808 5750832 1631584 5751416 1631680 5751416 -1631624 5750656 1631152 5751080 1631272 5751256 1631808 5750832 -1631720 5751408 1760125 5760125 1631808 5750832 1631680 5751416 -1631584 5751416 1631680 5751416 1631808 5750832 1631432 5751368 -1631808 5750832 1631720 5751408 1760125 5760125 1751256 5699792 -1760125 5760125 1631896 5750984 1631720 5751408 1599875 5760125 -1631720 5751408 1631896 5750984 1631808 5750832 1631680 5751416 -1631720 5751408 1760125 5760125 1631896 5750984 1631680 5751416 -1631808 5750832 1631584 5751416 1631680 5751416 1631896 5750984 -1631680 5751416 1631720 5751408 1631896 5750984 1631584 5751416 -1631808 5750832 1631432 5751368 1631584 5751416 1631896 5750984 -1631808 5750832 1631272 5751256 1631432 5751368 1631896 5750984 -1631584 5751416 1631680 5751416 1631896 5750984 1631432 5751368 -1631808 5750832 1631896 5750984 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1631896 5750984 -1631896 5750984 1631720 5751408 1760125 5760125 1751256 5699792 -1631808 5750832 1631896 5750984 1751256 5699792 1629944 5726624 -1631808 5750832 1631896 5750984 1629944 5726624 1629928 5726696 -1631808 5750832 1631896 5750984 1629928 5726696 1631624 5750656 -1751256 5699792 1629944 5726576 1629944 5726624 1631896 5750984 -1631896 5750984 1751256 5699792 1629944 5726624 1629928 5726696 -1631896 5750984 1760125 5760125 1751256 5699792 1629944 5726624 -1631896 5750984 1629928 5726696 1631808 5750832 1631432 5751368 -1631720 5751408 1631920 5751080 1631896 5750984 1631680 5751416 -1631720 5751408 1760125 5760125 1631920 5751080 1631680 5751416 -1760125 5760125 1631920 5751080 1631720 5751408 1599875 5760125 -1631896 5750984 1631584 5751416 1631680 5751416 1631920 5751080 -1631680 5751416 1631720 5751408 1631920 5751080 1631584 5751416 -1631896 5750984 1631432 5751368 1631584 5751416 1631920 5751080 -1631896 5750984 1631920 5751080 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1631920 5751080 -1631920 5751080 1631720 5751408 1760125 5760125 1751256 5699792 -1631920 5751080 1751256 5699792 1631896 5750984 1631584 5751416 -1631896 5750984 1631920 5751080 1751256 5699792 1629944 5726624 -1631720 5751408 1631896 5751232 1631920 5751080 1631680 5751416 -1631720 5751408 1760125 5760125 1631896 5751232 1631680 5751416 -1631920 5751080 1631584 5751416 1631680 5751416 1631896 5751232 -1631680 5751416 1631720 5751408 1631896 5751232 1631584 5751416 -1631920 5751080 1631896 5751232 1760125 5760125 1751256 5699792 -1631896 5751232 1760125 5760125 1631920 5751080 1631584 5751416 -1760125 5760125 1631896 5751232 1631720 5751408 1599875 5760125 -1631920 5751080 1631896 5750984 1631584 5751416 1631896 5751232 -1631896 5751232 1631896 5751280 1760125 5760125 1631920 5751080 -1631896 5751232 1631720 5751408 1631896 5751280 1631920 5751080 -1631720 5751408 1631896 5751280 1631896 5751232 1631680 5751416 -1631896 5751280 1631720 5751408 1760125 5760125 1631920 5751080 -1760125 5760125 1751256 5699792 1631920 5751080 1631896 5751280 -1760125 5760125 1631896 5751280 1631720 5751408 1599875 5760125 -1631896 5751280 1631856 5751344 1760125 5760125 1631920 5751080 -1631720 5751408 1631856 5751344 1631896 5751280 1631896 5751232 -1631720 5751408 1631856 5751344 1631896 5751232 1631680 5751416 -1631856 5751344 1760125 5760125 1631896 5751280 1631896 5751232 -1760125 5760125 1631856 5751344 1631720 5751408 1599875 5760125 -1631720 5751408 1760125 5760125 1631856 5751344 1631896 5751232 -1627704 5749168 1628368 5748664 1628776 5748096 1628504 5747840 -1627704 5749168 1628368 5748664 1628504 5747840 1628304 5747744 -1627704 5749168 1628960 5748368 1628368 5748664 1628304 5747744 -1628368 5748664 1628776 5748096 1628504 5747840 1628304 5747744 -1628960 5748368 1628368 5748664 1627704 5749168 1629048 5748600 -1627704 5749168 1629072 5748768 1629048 5748600 1628368 5748664 -1628960 5748368 1628776 5748096 1628368 5748664 1629048 5748600 -1627704 5749168 1629056 5748960 1629072 5748768 1628368 5748664 -1629072 5748768 1629048 5748600 1628368 5748664 1629056 5748960 -1627704 5749168 1629000 5749168 1629056 5748960 1628368 5748664 -1627704 5749168 1628896 5749392 1629000 5749168 1628368 5748664 -1629056 5748960 1629072 5748768 1628368 5748664 1629000 5749168 -1629000 5749168 1629056 5748960 1628368 5748664 1628896 5749392 -1628368 5748664 1628304 5747744 1627704 5749168 1628896 5749392 -1629048 5748600 1628960 5748368 1628368 5748664 1629072 5748768 -1627704 5749168 1628368 5748664 1628304 5747744 1627320 5748856 -1628368 5748664 1628504 5747840 1628304 5747744 1627320 5748856 -1627704 5749168 1628896 5749392 1628368 5748664 1627320 5748856 -1628304 5747744 1628200 5747680 1627320 5748856 1628368 5748664 -1628304 5747744 1628200 5747680 1628368 5748664 1628504 5747840 -1627320 5748856 1627704 5749168 1628368 5748664 1628200 5747680 -1627704 5749168 1628248 5749736 1628896 5749392 1628368 5748664 -1628896 5749392 1629000 5749168 1628368 5748664 1628248 5749736 -1627704 5749168 1628248 5749736 1628368 5748664 1627320 5748856 -1628248 5749736 1628856 5749520 1628896 5749392 1628368 5748664 -1628368 5748664 1628960 5748368 1628776 5748096 1628504 5747840 -1628200 5747680 1626872 5748264 1627320 5748856 1628368 5748664 -1627704 5749168 1628296 5748776 1628368 5748664 1627320 5748856 -1627704 5749168 1628248 5749736 1628296 5748776 1627320 5748856 -1628368 5748664 1628200 5747680 1627320 5748856 1628296 5748776 -1628368 5748664 1628296 5748776 1628248 5749736 1628896 5749392 -1628296 5748776 1627704 5749168 1628248 5749736 1628896 5749392 -1628368 5748664 1628296 5748776 1628896 5749392 1629000 5749168 -1628368 5748664 1628296 5748776 1629000 5749168 1629056 5748960 -1628296 5748776 1628896 5749392 1629000 5749168 1629056 5748960 -1628368 5748664 1628296 5748776 1629056 5748960 1629072 5748768 -1628248 5749736 1628856 5749520 1628896 5749392 1628296 5748776 -1628296 5748776 1628248 5749736 1628896 5749392 1629000 5749168 -1628296 5748776 1629056 5748960 1628368 5748664 1627320 5748856 -1628296 5748776 1628280 5748856 1628248 5749736 1628896 5749392 -1628296 5748776 1627704 5749168 1628280 5748856 1628896 5749392 -1627704 5749168 1628280 5748856 1628296 5748776 1627320 5748856 -1628280 5748856 1627704 5749168 1628248 5749736 1628896 5749392 -1628248 5749736 1628856 5749520 1628896 5749392 1628280 5748856 -1628296 5748776 1628280 5748856 1628896 5749392 1629000 5749168 -1628280 5748856 1628248 5749736 1628896 5749392 1629000 5749168 -1628296 5748776 1627704 5749168 1628280 5748856 1629000 5749168 -1628296 5748776 1628280 5748856 1629000 5749168 1629056 5748960 -1628296 5748776 1627704 5749168 1628280 5748856 1629056 5748960 -1628296 5748776 1628280 5748856 1629056 5748960 1628368 5748664 -1628296 5748776 1627704 5749168 1628280 5748856 1628368 5748664 -1628280 5748856 1629000 5749168 1629056 5748960 1628368 5748664 -1629056 5748960 1629072 5748768 1628368 5748664 1628280 5748856 -1628280 5748856 1628896 5749392 1629000 5749168 1629056 5748960 -1628280 5748856 1628312 5748912 1628896 5749392 1629000 5749168 -1628312 5748912 1628248 5749736 1628896 5749392 1629000 5749168 -1628248 5749736 1628312 5748912 1628280 5748856 1627704 5749168 -1628280 5748856 1628296 5748776 1627704 5749168 1628312 5748912 -1628280 5748856 1627704 5749168 1628312 5748912 1629000 5749168 -1628896 5749392 1628312 5748912 1628248 5749736 1628856 5749520 -1628896 5749392 1629000 5749168 1628312 5748912 1628856 5749520 -1628248 5749736 1628848 5749672 1628856 5749520 1628312 5748912 -1628280 5748856 1628312 5748912 1629000 5749168 1629056 5748960 -1628312 5748912 1628896 5749392 1629000 5749168 1629056 5748960 -1628280 5748856 1628312 5748912 1629056 5748960 1628368 5748664 -1629056 5748960 1629072 5748768 1628368 5748664 1628312 5748912 -1628280 5748856 1628312 5748912 1628368 5748664 1628296 5748776 -1628312 5748912 1629056 5748960 1628368 5748664 1628296 5748776 -1628280 5748856 1627704 5749168 1628312 5748912 1628296 5748776 -1628312 5748912 1629000 5749168 1629056 5748960 1628368 5748664 -1628248 5749736 1628856 5749520 1628312 5748912 1627704 5749168 -1627704 5749168 1628296 5748976 1628312 5748912 1628280 5748856 -1627704 5749168 1628248 5749736 1628296 5748976 1628280 5748856 -1627704 5749168 1628296 5748976 1628280 5748856 1628296 5748776 -1628296 5748976 1628248 5749736 1628312 5748912 1628280 5748856 -1628312 5748912 1628296 5748976 1628248 5749736 1628856 5749520 -1628312 5748912 1628280 5748856 1628296 5748976 1628856 5749520 -1628248 5749736 1628848 5749672 1628856 5749520 1628296 5748976 -1628312 5748912 1628296 5748976 1628856 5749520 1628896 5749392 -1628312 5748912 1628296 5748976 1628896 5749392 1629000 5749168 -1628312 5748912 1628296 5748976 1629000 5749168 1629056 5748960 -1628312 5748912 1628280 5748856 1628296 5748976 1629000 5749168 -1628296 5748976 1628856 5749520 1628896 5749392 1629000 5749168 -1628296 5748976 1628248 5749736 1628856 5749520 1628896 5749392 -1628296 5748976 1627704 5749168 1628248 5749736 1628856 5749520 -1627704 5749168 1628256 5749016 1628296 5748976 1628280 5748856 -1627704 5749168 1628256 5749016 1628280 5748856 1628296 5748776 -1628296 5748976 1628312 5748912 1628280 5748856 1628256 5749016 -1627704 5749168 1628248 5749736 1628256 5749016 1628280 5748856 -1628296 5748976 1628256 5749016 1628248 5749736 1628856 5749520 -1628256 5749016 1627704 5749168 1628248 5749736 1628856 5749520 -1628248 5749736 1628848 5749672 1628856 5749520 1628256 5749016 -1628296 5748976 1628256 5749016 1628856 5749520 1628896 5749392 -1628296 5748976 1628256 5749016 1628896 5749392 1629000 5749168 -1628256 5749016 1628248 5749736 1628856 5749520 1628896 5749392 -1628256 5749016 1628896 5749392 1628296 5748976 1628280 5748856 -1628256 5749016 1628160 5749088 1628248 5749736 1628856 5749520 -1627704 5749168 1628160 5749088 1628256 5749016 1628280 5748856 -1628256 5749016 1628296 5748976 1628280 5748856 1628160 5749088 -1628160 5749088 1628248 5749736 1628256 5749016 1628280 5748856 -1627704 5749168 1628160 5749088 1628280 5748856 1628296 5748776 -1627704 5749168 1628248 5749736 1628160 5749088 1628280 5748856 -1627704 5749168 1628048 5749104 1628280 5748856 1628296 5748776 -1627704 5749168 1628048 5749104 1628296 5748776 1627320 5748856 -1628296 5748776 1628368 5748664 1627320 5748856 1628048 5749104 -1628048 5749104 1628280 5748856 1628296 5748776 1627320 5748856 -1628280 5748856 1628048 5749104 1628160 5749088 1628256 5749016 -1628160 5749088 1628048 5749104 1627704 5749168 1628248 5749736 -1628160 5749088 1628048 5749104 1628248 5749736 1628256 5749016 -1628160 5749088 1628280 5748856 1628048 5749104 1628248 5749736 -1627704 5749168 1628248 5749736 1628048 5749104 1627320 5748856 -1628048 5749104 1628160 5749088 1628280 5748856 1628296 5748776 -1627320 5748856 1627952 5749048 1628296 5748776 1628368 5748664 -1628296 5748776 1627952 5749048 1628048 5749104 1628280 5748856 -1628296 5748776 1627320 5748856 1627952 5749048 1628280 5748856 -1628048 5749104 1627952 5749048 1627320 5748856 1627704 5749168 -1628048 5749104 1627952 5749048 1627704 5749168 1628248 5749736 -1627952 5749048 1627704 5749168 1628048 5749104 1628280 5748856 -1628048 5749104 1628160 5749088 1628280 5748856 1627952 5749048 -1628280 5748856 1628296 5748776 1627952 5749048 1628160 5749088 -1628160 5749088 1628256 5749016 1628280 5748856 1627952 5749048 -1628048 5749104 1628160 5749088 1627952 5749048 1627704 5749168 -1627952 5749048 1628296 5748776 1627320 5748856 1627704 5749168 -1628296 5748776 1627808 5748832 1627952 5749048 1628280 5748856 -1627320 5748856 1627808 5748832 1628296 5748776 1628368 5748664 -1627320 5748856 1627952 5749048 1627808 5748832 1628368 5748664 -1627952 5749048 1628160 5749088 1628280 5748856 1627808 5748832 -1627320 5748856 1627808 5748832 1628368 5748664 1628200 5747680 -1627320 5748856 1627952 5749048 1627808 5748832 1628200 5747680 -1627808 5748832 1628296 5748776 1628368 5748664 1628200 5747680 -1628368 5748664 1628304 5747744 1628200 5747680 1627808 5748832 -1628368 5748664 1628504 5747840 1628304 5747744 1627808 5748832 -1628368 5748664 1628304 5747744 1627808 5748832 1628296 5748776 -1628200 5747680 1627320 5748856 1627808 5748832 1628304 5747744 -1627320 5748856 1627808 5748832 1628200 5747680 1626872 5748264 -1627320 5748856 1627952 5749048 1627808 5748832 1626872 5748264 -1627808 5748832 1628304 5747744 1628200 5747680 1626872 5748264 -1628200 5747680 1628160 5747616 1626872 5748264 1627808 5748832 -1628296 5748776 1628368 5748664 1627808 5748832 1628280 5748856 -1627952 5749048 1627808 5748832 1627320 5748856 1627704 5749168 -1627808 5748832 1626872 5748264 1627320 5748856 1627704 5749168 -1627952 5749048 1627808 5748832 1627704 5749168 1628048 5749104 -1627808 5748832 1627704 5749168 1627952 5749048 1628280 5748856 -1627320 5748856 1627808 5748832 1626872 5748264 1626912 5748472 -1628200 5747680 1627520 5748640 1627808 5748832 1628304 5747744 -1627520 5748640 1626872 5748264 1627808 5748832 1628304 5747744 -1626872 5748264 1627520 5748640 1628200 5747680 1628160 5747616 -1626872 5748264 1627520 5748640 1628160 5747616 1626808 5748160 -1627808 5748832 1628368 5748664 1628304 5747744 1627520 5748640 -1628368 5748664 1628504 5747840 1628304 5747744 1627520 5748640 -1627808 5748832 1628368 5748664 1627520 5748640 1626872 5748264 -1627808 5748832 1628296 5748776 1628368 5748664 1627520 5748640 -1628304 5747744 1628200 5747680 1627520 5748640 1628368 5748664 -1628200 5747680 1628160 5747616 1627520 5748640 1628304 5747744 -1627808 5748832 1627520 5748640 1626872 5748264 1627320 5748856 -1627808 5748832 1627520 5748640 1627320 5748856 1627704 5749168 -1627808 5748832 1628368 5748664 1627520 5748640 1627320 5748856 -1626872 5748264 1627320 5748856 1627520 5748640 1628160 5747616 -1626872 5748264 1626912 5748472 1627320 5748856 1627520 5748640 -1626912 5748472 1626976 5748664 1627320 5748856 1627520 5748640 -1626912 5748472 1626904 5748592 1626976 5748664 1627520 5748640 -1627320 5748856 1627808 5748832 1627520 5748640 1626976 5748664 -1626872 5748264 1626912 5748472 1627520 5748640 1628160 5747616 -1626912 5748472 1626976 5748664 1627520 5748640 1626872 5748264 -1626872 5748264 1627368 5748488 1628160 5747616 1626808 5748160 -1628160 5747616 1627368 5748488 1627520 5748640 1628200 5747680 -1627520 5748640 1628304 5747744 1628200 5747680 1627368 5748488 -1626872 5748264 1627520 5748640 1627368 5748488 1626808 5748160 -1627520 5748640 1627368 5748488 1626872 5748264 1626912 5748472 -1627368 5748488 1626808 5748160 1626872 5748264 1626912 5748472 -1627368 5748488 1626912 5748472 1627520 5748640 1628200 5747680 -1627520 5748640 1627368 5748488 1626912 5748472 1626976 5748664 -1626912 5748472 1626904 5748592 1626976 5748664 1627368 5748488 -1627520 5748640 1627368 5748488 1626976 5748664 1627320 5748856 -1627520 5748640 1627368 5748488 1627320 5748856 1627808 5748832 -1627368 5748488 1626872 5748264 1626912 5748472 1626976 5748664 -1627520 5748640 1628200 5747680 1627368 5748488 1627320 5748856 -1627368 5748488 1626912 5748472 1626976 5748664 1627320 5748856 -1627368 5748488 1628200 5747680 1628160 5747616 1626808 5748160 -1628160 5747616 1627016 5747176 1626808 5748160 1627368 5748488 -1626808 5748160 1626872 5748264 1627368 5748488 1627016 5747176 -1627016 5747176 1626848 5747256 1626808 5748160 1627368 5748488 -1628160 5747616 1627800 5747032 1627016 5747176 1627368 5748488 -1628160 5747616 1627016 5747176 1627368 5748488 1628200 5747680 -1626872 5748264 1627328 5748480 1627368 5748488 1626808 5748160 -1627368 5748488 1627016 5747176 1626808 5748160 1627328 5748480 -1626808 5748160 1626872 5748264 1627328 5748480 1627016 5747176 -1627328 5748480 1626912 5748472 1627368 5748488 1627016 5747176 -1627016 5747176 1626848 5747256 1626808 5748160 1627328 5748480 -1626872 5748264 1626912 5748472 1627328 5748480 1626808 5748160 -1627368 5748488 1627328 5748480 1626912 5748472 1626976 5748664 -1627368 5748488 1627016 5747176 1627328 5748480 1626976 5748664 -1626912 5748472 1626904 5748592 1626976 5748664 1627328 5748480 -1627368 5748488 1627328 5748480 1626976 5748664 1627320 5748856 -1627368 5748488 1627016 5747176 1627328 5748480 1627320 5748856 -1627368 5748488 1627328 5748480 1627320 5748856 1627520 5748640 -1627328 5748480 1626912 5748472 1626976 5748664 1627320 5748856 -1627328 5748480 1626872 5748264 1626912 5748472 1626976 5748664 -1627368 5748488 1628160 5747616 1627016 5747176 1627328 5748480 -1627016 5747176 1626808 5748160 1627328 5748480 1628160 5747616 -1627368 5748488 1628160 5747616 1627328 5748480 1627320 5748856 -1628160 5747616 1627800 5747032 1627016 5747176 1627328 5748480 -1627368 5748488 1628200 5747680 1628160 5747616 1627328 5748480 -1627016 5747176 1627304 5748456 1627328 5748480 1628160 5747616 -1627328 5748480 1627304 5748456 1626808 5748160 1626872 5748264 -1626808 5748160 1627304 5748456 1627016 5747176 1626848 5747256 -1627328 5748480 1627304 5748456 1626872 5748264 1626912 5748472 -1627304 5748456 1626808 5748160 1626872 5748264 1626912 5748472 -1627304 5748456 1627016 5747176 1626808 5748160 1626872 5748264 -1627016 5747176 1626808 5748160 1627304 5748456 1628160 5747616 -1627016 5747176 1627304 5748456 1628160 5747616 1627800 5747032 -1627328 5748480 1627304 5748456 1626912 5748472 1626976 5748664 -1626912 5748472 1626904 5748592 1626976 5748664 1627304 5748456 -1627304 5748456 1626872 5748264 1626912 5748472 1626976 5748664 -1627328 5748480 1627304 5748456 1626976 5748664 1627320 5748856 -1627304 5748456 1626976 5748664 1627328 5748480 1628160 5747616 -1627328 5748480 1627368 5748488 1628160 5747616 1627304 5748456 -1628160 5747616 1627016 5747176 1627304 5748456 1627368 5748488 -1627368 5748488 1628200 5747680 1628160 5747616 1627304 5748456 -1627328 5748480 1627368 5748488 1627304 5748456 1626976 5748664 -1626808 5748160 1627280 5748400 1627016 5747176 1626848 5747256 -1627304 5748456 1627280 5748400 1626808 5748160 1626872 5748264 -1627304 5748456 1627280 5748400 1626872 5748264 1626912 5748472 -1627304 5748456 1627280 5748400 1626912 5748472 1626976 5748664 -1627280 5748400 1626808 5748160 1626872 5748264 1626912 5748472 -1627304 5748456 1627016 5747176 1627280 5748400 1626912 5748472 -1627016 5747176 1627280 5748400 1627304 5748456 1628160 5747616 -1627304 5748456 1627368 5748488 1628160 5747616 1627280 5748400 -1627280 5748400 1626912 5748472 1627304 5748456 1627368 5748488 -1628160 5747616 1627016 5747176 1627280 5748400 1627368 5748488 -1627280 5748400 1627016 5747176 1626808 5748160 1626872 5748264 -1627016 5747176 1627280 5748400 1628160 5747616 1627800 5747032 -1627368 5748488 1628200 5747680 1628160 5747616 1627280 5748400 -1627368 5748488 1628200 5747680 1627280 5748400 1627304 5748456 -1627368 5748488 1627520 5748640 1628200 5747680 1627280 5748400 -1628160 5747616 1627016 5747176 1627280 5748400 1628200 5747680 -1627304 5748456 1627328 5748480 1627368 5748488 1627280 5748400 -1627016 5747176 1626808 5748160 1627280 5748400 1628160 5747616 -1628160 5747616 1627288 5748360 1627280 5748400 1628200 5747680 -1627288 5748360 1627016 5747176 1627280 5748400 1628200 5747680 -1627016 5747176 1627288 5748360 1628160 5747616 1627800 5747032 -1627280 5748400 1627368 5748488 1628200 5747680 1627288 5748360 -1627280 5748400 1627304 5748456 1627368 5748488 1627288 5748360 -1627368 5748488 1627520 5748640 1628200 5747680 1627288 5748360 -1628200 5747680 1628160 5747616 1627288 5748360 1627368 5748488 -1627280 5748400 1627304 5748456 1627288 5748360 1627016 5747176 -1627368 5748488 1628200 5747680 1627288 5748360 1627304 5748456 -1627304 5748456 1627328 5748480 1627368 5748488 1627288 5748360 -1628160 5747616 1627016 5747176 1627288 5748360 1628200 5747680 -1627280 5748400 1627288 5748360 1627016 5747176 1626808 5748160 -1627016 5747176 1626848 5747256 1626808 5748160 1627288 5748360 -1627280 5748400 1627288 5748360 1626808 5748160 1626872 5748264 -1627280 5748400 1627288 5748360 1626872 5748264 1626912 5748472 -1627280 5748400 1627288 5748360 1626912 5748472 1627304 5748456 -1627288 5748360 1626808 5748160 1626872 5748264 1626912 5748472 -1627280 5748400 1627304 5748456 1627288 5748360 1626912 5748472 -1627288 5748360 1627016 5747176 1626808 5748160 1626872 5748264 -1627288 5748360 1628160 5747616 1627016 5747176 1626808 5748160 -1627016 5747176 1627296 5748320 1628160 5747616 1627800 5747032 -1628160 5747616 1627296 5748320 1627288 5748360 1628200 5747680 -1627288 5748360 1627368 5748488 1628200 5747680 1627296 5748320 -1627368 5748488 1627520 5748640 1628200 5747680 1627296 5748320 -1627520 5748640 1628304 5747744 1628200 5747680 1627296 5748320 -1627368 5748488 1627520 5748640 1627296 5748320 1627288 5748360 -1628160 5747616 1627016 5747176 1627296 5748320 1628200 5747680 -1627288 5748360 1627304 5748456 1627368 5748488 1627296 5748320 -1628200 5747680 1628160 5747616 1627296 5748320 1627520 5748640 -1627288 5748360 1627296 5748320 1627016 5747176 1626808 5748160 -1627016 5747176 1626848 5747256 1626808 5748160 1627296 5748320 -1627296 5748320 1628160 5747616 1627016 5747176 1626808 5748160 -1627288 5748360 1627296 5748320 1626808 5748160 1626872 5748264 -1627288 5748360 1627296 5748320 1626872 5748264 1626912 5748472 -1627296 5748320 1627016 5747176 1626808 5748160 1626872 5748264 -1627296 5748320 1626872 5748264 1627288 5748360 1627368 5748488 -1627016 5747176 1627368 5748232 1628160 5747616 1627800 5747032 -1628160 5747616 1628016 5747192 1627800 5747032 1627368 5748232 -1627368 5748232 1627296 5748320 1628160 5747616 1627800 5747032 -1627016 5747176 1627368 5748232 1627800 5747032 1627136 5747072 -1627800 5747032 1627512 5746960 1627136 5747072 1627368 5748232 -1627136 5747072 1627016 5747176 1627368 5748232 1627512 5746960 -1627368 5748232 1628160 5747616 1627800 5747032 1627512 5746960 -1627512 5746960 1627312 5746976 1627136 5747072 1627368 5748232 -1628160 5747616 1627368 5748232 1627296 5748320 1628200 5747680 -1628160 5747616 1627800 5747032 1627368 5748232 1628200 5747680 -1627016 5747176 1627296 5748320 1627368 5748232 1627136 5747072 -1627296 5748320 1627520 5748640 1628200 5747680 1627368 5748232 -1627296 5748320 1627368 5748488 1627520 5748640 1627368 5748232 -1627520 5748640 1628304 5747744 1628200 5747680 1627368 5748232 -1627520 5748640 1628368 5748664 1628304 5747744 1627368 5748232 -1628368 5748664 1628504 5747840 1628304 5747744 1627368 5748232 -1627520 5748640 1627808 5748832 1628368 5748664 1627368 5748232 -1628304 5747744 1628200 5747680 1627368 5748232 1628368 5748664 -1627296 5748320 1627288 5748360 1627368 5748488 1627368 5748232 -1628200 5747680 1628160 5747616 1627368 5748232 1628304 5747744 -1627520 5748640 1628368 5748664 1627368 5748232 1627368 5748488 -1627296 5748320 1627368 5748232 1627016 5747176 1626808 5748160 -1627016 5747176 1626848 5747256 1626808 5748160 1627368 5748232 -1627368 5748232 1627136 5747072 1627016 5747176 1626848 5747256 -1626848 5747256 1626704 5748056 1626808 5748160 1627368 5748232 -1626808 5748160 1627296 5748320 1627368 5748232 1626848 5747256 -1627368 5748232 1626808 5748160 1627296 5748320 1627368 5748488 -1627296 5748320 1627368 5748232 1626808 5748160 1626872 5748264 -1627368 5748232 1626848 5747256 1626808 5748160 1626872 5748264 -1627296 5748320 1627368 5748488 1627368 5748232 1626872 5748264 -1627296 5748320 1627368 5748232 1626872 5748264 1627288 5748360 -1628304 5747744 1627472 5748168 1627368 5748232 1628368 5748664 -1628304 5747744 1627472 5748168 1628368 5748664 1628504 5747840 -1627368 5748232 1627520 5748640 1628368 5748664 1627472 5748168 -1627520 5748640 1627808 5748832 1628368 5748664 1627472 5748168 -1627808 5748832 1628296 5748776 1628368 5748664 1627472 5748168 -1627520 5748640 1627808 5748832 1627472 5748168 1627368 5748232 -1628368 5748664 1628304 5747744 1627472 5748168 1627808 5748832 -1628304 5747744 1628200 5747680 1627472 5748168 1628368 5748664 -1627368 5748232 1627472 5748168 1628200 5747680 1628160 5747616 -1627368 5748232 1627472 5748168 1628160 5747616 1627800 5747032 -1628160 5747616 1628016 5747192 1627800 5747032 1627472 5748168 -1628160 5747616 1628160 5747504 1628016 5747192 1627472 5748168 -1627800 5747032 1627368 5748232 1627472 5748168 1628016 5747192 -1627472 5748168 1628304 5747744 1628200 5747680 1628160 5747616 -1627368 5748232 1627472 5748168 1627800 5747032 1627512 5746960 -1627368 5748232 1627472 5748168 1627512 5746960 1627136 5747072 -1627472 5748168 1628016 5747192 1627800 5747032 1627512 5746960 -1627368 5748232 1627472 5748168 1627136 5747072 1627016 5747176 -1627472 5748168 1627512 5746960 1627136 5747072 1627016 5747176 -1627472 5748168 1627800 5747032 1627512 5746960 1627136 5747072 -1627512 5746960 1627312 5746976 1627136 5747072 1627472 5748168 -1627472 5748168 1628200 5747680 1628160 5747616 1628016 5747192 -1627368 5748232 1627472 5748168 1627016 5747176 1626848 5747256 -1627472 5748168 1627136 5747072 1627016 5747176 1626848 5747256 -1627368 5748232 1627472 5748168 1626848 5747256 1626808 5748160 -1627472 5748168 1627016 5747176 1626848 5747256 1626808 5748160 -1627472 5748168 1626808 5748160 1627368 5748232 1627520 5748640 -1626848 5747256 1626704 5748056 1626808 5748160 1627472 5748168 -1627368 5748232 1627368 5748488 1627520 5748640 1627472 5748168 -1627520 5748640 1627808 5748832 1627472 5748168 1627368 5748488 -1627368 5748232 1627296 5748320 1627368 5748488 1627472 5748168 -1627368 5748232 1627368 5748488 1627472 5748168 1626808 5748160 -1627368 5748232 1627472 5748168 1626808 5748160 1626872 5748264 -1628304 5747744 1627576 5748144 1628368 5748664 1628504 5747840 -1628368 5748664 1627576 5748144 1627472 5748168 1627808 5748832 -1627576 5748144 1628304 5747744 1627472 5748168 1627808 5748832 -1628368 5748664 1627576 5748144 1627808 5748832 1628296 5748776 -1628368 5748664 1628304 5747744 1627576 5748144 1627808 5748832 -1627472 5748168 1627520 5748640 1627808 5748832 1627576 5748144 -1627472 5748168 1627520 5748640 1627576 5748144 1628304 5747744 -1627472 5748168 1627368 5748488 1627520 5748640 1627576 5748144 -1627472 5748168 1627368 5748488 1627576 5748144 1628304 5747744 -1627520 5748640 1627808 5748832 1627576 5748144 1627368 5748488 -1627808 5748832 1628368 5748664 1627576 5748144 1627520 5748640 -1627472 5748168 1627576 5748144 1628304 5747744 1628200 5747680 -1627472 5748168 1627576 5748144 1628200 5747680 1628160 5747616 -1627472 5748168 1627368 5748488 1627576 5748144 1628160 5747616 -1627576 5748144 1628304 5747744 1628200 5747680 1628160 5747616 -1627576 5748144 1628368 5748664 1628304 5747744 1628200 5747680 -1627472 5748168 1627576 5748144 1628160 5747616 1628016 5747192 -1627472 5748168 1627576 5748144 1628016 5747192 1627800 5747032 -1628160 5747616 1628160 5747504 1628016 5747192 1627576 5748144 -1627472 5748168 1627576 5748144 1627800 5747032 1627512 5746960 -1627576 5748144 1628016 5747192 1627800 5747032 1627512 5746960 -1627576 5748144 1628200 5747680 1628160 5747616 1628016 5747192 -1627472 5748168 1627368 5748488 1627576 5748144 1627512 5746960 -1627472 5748168 1627576 5748144 1627512 5746960 1627136 5747072 -1627472 5748168 1627576 5748144 1627136 5747072 1627016 5747176 -1627576 5748144 1627800 5747032 1627512 5746960 1627136 5747072 -1627472 5748168 1627368 5748488 1627576 5748144 1627016 5747176 -1627472 5748168 1627576 5748144 1627016 5747176 1626848 5747256 -1627576 5748144 1627512 5746960 1627136 5747072 1627016 5747176 -1627512 5746960 1627312 5746976 1627136 5747072 1627576 5748144 -1627576 5748144 1628160 5747616 1628016 5747192 1627800 5747032 -1627472 5748168 1627368 5748232 1627368 5748488 1627576 5748144 -1628304 5747744 1627816 5748152 1628368 5748664 1628504 5747840 -1628368 5748664 1627816 5748152 1627576 5748144 1627808 5748832 -1628368 5748664 1627816 5748152 1627808 5748832 1628296 5748776 -1628304 5747744 1627576 5748144 1627816 5748152 1628504 5747840 -1628368 5748664 1628776 5748096 1628504 5747840 1627816 5748152 -1627576 5748144 1627520 5748640 1627808 5748832 1627816 5748152 -1627808 5748832 1628368 5748664 1627816 5748152 1627520 5748640 -1627576 5748144 1627368 5748488 1627520 5748640 1627816 5748152 -1627816 5748152 1627808 5748832 1628368 5748664 1628504 5747840 -1627576 5748144 1627816 5748152 1628304 5747744 1628200 5747680 -1627816 5748152 1628504 5747840 1628304 5747744 1628200 5747680 -1627576 5748144 1627816 5748152 1628200 5747680 1628160 5747616 -1627576 5748144 1627816 5748152 1628160 5747616 1628016 5747192 -1627816 5748152 1628304 5747744 1628200 5747680 1628160 5747616 -1627816 5748152 1628160 5747616 1627576 5748144 1627520 5748640 -1628504 5747840 1627952 5748040 1627816 5748152 1628368 5748664 -1628504 5747840 1628304 5747744 1627952 5748040 1628368 5748664 -1627816 5748152 1627952 5748040 1628304 5747744 1628200 5747680 -1627952 5748040 1628200 5747680 1627816 5748152 1628368 5748664 -1628504 5747840 1627952 5748040 1628368 5748664 1628776 5748096 -1627816 5748152 1627808 5748832 1628368 5748664 1627952 5748040 -1627952 5748040 1628504 5747840 1628304 5747744 1628200 5747680 -1627816 5748152 1627952 5748040 1628200 5747680 1628160 5747616 -1627952 5748040 1628304 5747744 1628200 5747680 1628160 5747616 -1627816 5748152 1628368 5748664 1627952 5748040 1628160 5747616 -1627816 5748152 1627952 5748040 1628160 5747616 1627576 5748144 -1628160 5747616 1628016 5747192 1627576 5748144 1627952 5748040 -1627816 5748152 1628368 5748664 1627952 5748040 1627576 5748144 -1627952 5748040 1628200 5747680 1628160 5747616 1627576 5748144 -1628368 5748664 1628048 5748008 1627952 5748040 1627816 5748152 -1627952 5748040 1628048 5748008 1628504 5747840 1628304 5747744 -1628048 5748008 1628368 5748664 1628504 5747840 1628304 5747744 -1628504 5747840 1628048 5748008 1628368 5748664 1628776 5748096 -1628504 5747840 1628304 5747744 1628048 5748008 1628776 5748096 -1628048 5748008 1627952 5748040 1628368 5748664 1628776 5748096 -1627952 5748040 1628048 5748008 1628304 5747744 1628200 5747680 -1628048 5748008 1628504 5747840 1628304 5747744 1628200 5747680 -1627952 5748040 1628048 5748008 1628200 5747680 1628160 5747616 -1628048 5748008 1628304 5747744 1628200 5747680 1628160 5747616 -1627952 5748040 1628368 5748664 1628048 5748008 1628160 5747616 -1628368 5748664 1628960 5748368 1628776 5748096 1628048 5748008 -1627952 5748040 1628048 5748008 1628160 5747616 1627576 5748144 -1628048 5748008 1628264 5748000 1628504 5747840 1628304 5747744 -1628048 5748008 1628264 5748000 1628304 5747744 1628200 5747680 -1628264 5748000 1628504 5747840 1628304 5747744 1628200 5747680 -1628048 5748008 1628776 5748096 1628264 5748000 1628200 5747680 -1628264 5748000 1628776 5748096 1628504 5747840 1628304 5747744 -1628776 5748096 1628264 5748000 1628048 5748008 1628368 5748664 -1628264 5748000 1628200 5747680 1628048 5748008 1628368 5748664 -1628048 5748008 1627952 5748040 1628368 5748664 1628264 5748000 -1628776 5748096 1628504 5747840 1628264 5748000 1628368 5748664 -1628048 5748008 1628264 5748000 1628200 5747680 1628160 5747616 -1628776 5748096 1628264 5748000 1628368 5748664 1628960 5748368 -1628264 5748000 1628432 5748032 1628776 5748096 1628504 5747840 -1628264 5748000 1628432 5748032 1628504 5747840 1628304 5747744 -1628264 5748000 1628368 5748664 1628432 5748032 1628504 5747840 -1628432 5748032 1628368 5748664 1628776 5748096 1628504 5747840 -1628368 5748664 1628432 5748032 1628264 5748000 1628048 5748008 -1628776 5748096 1628432 5748032 1628368 5748664 1628960 5748368 -1628432 5748032 1628448 5748032 1628504 5747840 1628264 5748000 -1628776 5748096 1628448 5748032 1628432 5748032 1628368 5748664 -1628448 5748032 1628504 5747840 1628432 5748032 1628368 5748664 -1628776 5748096 1628448 5748032 1628368 5748664 1628960 5748368 -1628776 5748096 1628504 5747840 1628448 5748032 1628368 5748664 -1628432 5748032 1628264 5748000 1628368 5748664 1628448 5748032 -1628368 5748664 1628488 5748056 1628448 5748032 1628432 5748032 -1628368 5748664 1628776 5748096 1628488 5748056 1628432 5748032 -1628776 5748096 1628488 5748056 1628368 5748664 1628960 5748368 -1628448 5748032 1628488 5748056 1628776 5748096 1628504 5747840 -1628488 5748056 1628368 5748664 1628776 5748096 1628504 5747840 -1628368 5748664 1628488 5748056 1628432 5748032 1628264 5748000 -1628448 5748032 1628488 5748056 1628504 5747840 1628432 5748032 -1628488 5748056 1628504 5747840 1628448 5748032 1628432 5748032 -1628368 5748664 1628496 5748096 1628488 5748056 1628432 5748032 -1628488 5748056 1628448 5748032 1628432 5748032 1628496 5748096 -1628432 5748032 1628368 5748664 1628496 5748096 1628448 5748032 -1628776 5748096 1628496 5748096 1628368 5748664 1628960 5748368 -1628368 5748664 1629048 5748600 1628960 5748368 1628496 5748096 -1628776 5748096 1628488 5748056 1628496 5748096 1628960 5748368 -1628488 5748056 1628496 5748096 1628776 5748096 1628504 5747840 -1628496 5748096 1628776 5748096 1628488 5748056 1628448 5748032 -1628368 5748664 1628496 5748096 1628432 5748032 1628264 5748000 -1628496 5748096 1628448 5748032 1628432 5748032 1628264 5748000 -1628368 5748664 1628496 5748096 1628264 5748000 1628048 5748008 -1628368 5748664 1628960 5748368 1628496 5748096 1628264 5748000 -1628960 5748368 1628520 5748136 1628368 5748664 1629048 5748600 -1628496 5748096 1628520 5748136 1628960 5748368 1628776 5748096 -1628496 5748096 1628520 5748136 1628776 5748096 1628488 5748056 -1628496 5748096 1628368 5748664 1628520 5748136 1628488 5748056 -1628520 5748136 1628960 5748368 1628776 5748096 1628488 5748056 -1628776 5748096 1628504 5747840 1628488 5748056 1628520 5748136 -1628368 5748664 1628520 5748136 1628496 5748096 1628264 5748000 -1628520 5748136 1628488 5748056 1628496 5748096 1628264 5748000 -1628368 5748664 1628960 5748368 1628520 5748136 1628264 5748000 -1628368 5748664 1628520 5748136 1628264 5748000 1628048 5748008 -1628496 5748096 1628432 5748032 1628264 5748000 1628520 5748136 -1628520 5748136 1628368 5748664 1628960 5748368 1628776 5748096 -1628960 5748368 1628544 5748192 1628368 5748664 1629048 5748600 -1628368 5748664 1628544 5748192 1628520 5748136 1628264 5748000 -1628544 5748192 1628960 5748368 1628520 5748136 1628264 5748000 -1628368 5748664 1628544 5748192 1628264 5748000 1628048 5748008 -1628368 5748664 1628960 5748368 1628544 5748192 1628264 5748000 -1628520 5748136 1628496 5748096 1628264 5748000 1628544 5748192 -1628520 5748136 1628544 5748192 1628960 5748368 1628776 5748096 -1628520 5748136 1628264 5748000 1628544 5748192 1628776 5748096 -1628544 5748192 1628368 5748664 1628960 5748368 1628776 5748096 -1628520 5748136 1628544 5748192 1628776 5748096 1628488 5748056 -1628960 5748368 1628528 5748296 1628368 5748664 1629048 5748600 -1628544 5748192 1628528 5748296 1628960 5748368 1628776 5748096 -1628544 5748192 1628368 5748664 1628528 5748296 1628776 5748096 -1628368 5748664 1628528 5748296 1628544 5748192 1628264 5748000 -1628544 5748192 1628520 5748136 1628264 5748000 1628528 5748296 -1628368 5748664 1628528 5748296 1628264 5748000 1628048 5748008 -1628368 5748664 1628528 5748296 1628048 5748008 1627952 5748040 -1628528 5748296 1628776 5748096 1628544 5748192 1628520 5748136 -1628264 5748000 1628048 5748008 1628528 5748296 1628520 5748136 -1628528 5748296 1628368 5748664 1628960 5748368 1628776 5748096 -1628368 5748664 1628960 5748368 1628528 5748296 1628048 5748008 -1628520 5748136 1628496 5748096 1628264 5748000 1628528 5748296 -1628520 5748136 1628496 5748096 1628528 5748296 1628544 5748192 -1628264 5748000 1628048 5748008 1628528 5748296 1628496 5748096 -1628496 5748096 1628432 5748032 1628264 5748000 1628528 5748296 -1628544 5748192 1628528 5748296 1628776 5748096 1628520 5748136 -1628960 5748368 1628472 5748480 1628368 5748664 1629048 5748600 -1628960 5748368 1628528 5748296 1628472 5748480 1629048 5748600 -1628472 5748480 1628528 5748296 1628368 5748664 1629048 5748600 -1628368 5748664 1629072 5748768 1629048 5748600 1628472 5748480 -1628368 5748664 1629056 5748960 1629072 5748768 1628472 5748480 -1629048 5748600 1628960 5748368 1628472 5748480 1629072 5748768 -1628368 5748664 1629072 5748768 1628472 5748480 1628528 5748296 -1628528 5748296 1628472 5748480 1628960 5748368 1628776 5748096 -1628368 5748664 1628472 5748480 1628528 5748296 1628048 5748008 -1628368 5748664 1628472 5748480 1628048 5748008 1627952 5748040 -1628368 5748664 1628472 5748480 1627952 5748040 1627816 5748152 -1628472 5748480 1628048 5748008 1627952 5748040 1627816 5748152 -1628368 5748664 1629072 5748768 1628472 5748480 1627816 5748152 -1628528 5748296 1628264 5748000 1628048 5748008 1628472 5748480 -1628528 5748296 1628496 5748096 1628264 5748000 1628472 5748480 -1628368 5748664 1628472 5748480 1627816 5748152 1627808 5748832 -1628472 5748480 1628264 5748000 1628048 5748008 1627952 5748040 -1628472 5748480 1628960 5748368 1628528 5748296 1628264 5748000 -1626744 5747272 1626664 5747696 1626704 5748056 1626848 5747256 -1626664 5747696 1626600 5747328 1626704 5748056 1626848 5747256 -1626704 5748056 1626664 5747696 1626600 5747328 1626488 5747912 -1626704 5748056 1626848 5747256 1626664 5747696 1626488 5747912 -1626704 5748056 1626808 5748160 1626848 5747256 1626664 5747696 -1626704 5748056 1626808 5748160 1626664 5747696 1626488 5747912 -1626808 5748160 1627472 5748168 1626848 5747256 1626664 5747696 -1626808 5748160 1627368 5748232 1627472 5748168 1626664 5747696 -1626808 5748160 1627368 5748232 1626664 5747696 1626704 5748056 -1627472 5748168 1627016 5747176 1626848 5747256 1626664 5747696 -1627472 5748168 1627576 5748144 1627016 5747176 1626664 5747696 -1627472 5748168 1627016 5747176 1626664 5747696 1627368 5748232 -1626600 5747328 1626408 5747544 1626488 5747912 1626664 5747696 -1626408 5747544 1626376 5747696 1626488 5747912 1626664 5747696 -1626376 5747696 1626392 5747784 1626488 5747912 1626664 5747696 -1626600 5747328 1626504 5747392 1626408 5747544 1626664 5747696 -1626488 5747912 1626704 5748056 1626664 5747696 1626392 5747784 -1626376 5747696 1626392 5747784 1626664 5747696 1626408 5747544 -1626408 5747544 1626376 5747696 1626664 5747696 1626504 5747392 -1626808 5748160 1626872 5748264 1627368 5748232 1626664 5747696 -1626664 5747696 1626744 5747272 1626600 5747328 1626504 5747392 -1626848 5747256 1626744 5747272 1626664 5747696 1627016 5747176 -1626744 5747272 1626600 5747328 1626664 5747696 1626848 5747256 -1627016 5747176 1626728 5747616 1627472 5748168 1627576 5748144 -1626664 5747696 1626728 5747616 1627016 5747176 1626848 5747256 -1626664 5747696 1627472 5748168 1626728 5747616 1626848 5747256 -1626728 5747616 1627472 5748168 1627016 5747176 1626848 5747256 -1627472 5748168 1626728 5747616 1626664 5747696 1627368 5748232 -1627472 5748168 1627016 5747176 1626728 5747616 1627368 5748232 -1626664 5747696 1626808 5748160 1627368 5748232 1626728 5747616 -1626664 5747696 1626704 5748056 1626808 5748160 1626728 5747616 -1626664 5747696 1626488 5747912 1626704 5748056 1626728 5747616 -1626808 5748160 1627368 5748232 1626728 5747616 1626704 5748056 -1626728 5747616 1626848 5747256 1626664 5747696 1626704 5748056 -1627368 5748232 1627472 5748168 1626728 5747616 1626808 5748160 -1626808 5748160 1626872 5748264 1627368 5748232 1626728 5747616 -1626664 5747696 1626728 5747616 1626848 5747256 1626744 5747272 -1626664 5747696 1626704 5748056 1626728 5747616 1626744 5747272 -1626728 5747616 1627016 5747176 1626848 5747256 1626744 5747272 -1626664 5747696 1626728 5747616 1626744 5747272 1626600 5747328 -1626664 5747696 1626704 5748056 1626728 5747616 1626600 5747328 -1626664 5747696 1626728 5747616 1626600 5747328 1626504 5747392 -1626728 5747616 1626744 5747272 1626600 5747328 1626504 5747392 -1626664 5747696 1626728 5747616 1626504 5747392 1626408 5747544 -1626664 5747696 1626704 5748056 1626728 5747616 1626408 5747544 -1626664 5747696 1626728 5747616 1626408 5747544 1626376 5747696 -1626728 5747616 1626600 5747328 1626504 5747392 1626408 5747544 -1626728 5747616 1626848 5747256 1626744 5747272 1626600 5747328 -1627472 5748168 1626792 5747568 1626728 5747616 1627368 5748232 -1626792 5747568 1627016 5747176 1626728 5747616 1627368 5748232 -1627016 5747176 1626792 5747568 1627472 5748168 1627576 5748144 -1627472 5748168 1627016 5747176 1626792 5747568 1627368 5748232 -1626728 5747616 1626792 5747568 1627016 5747176 1626848 5747256 -1626728 5747616 1627368 5748232 1626792 5747568 1626848 5747256 -1626792 5747568 1627472 5748168 1627016 5747176 1626848 5747256 -1626728 5747616 1626792 5747568 1626848 5747256 1626744 5747272 -1626728 5747616 1627368 5748232 1626792 5747568 1626744 5747272 -1626792 5747568 1627016 5747176 1626848 5747256 1626744 5747272 -1626728 5747616 1626808 5748160 1627368 5748232 1626792 5747568 -1627368 5748232 1627472 5748168 1626792 5747568 1626808 5748160 -1626728 5747616 1626808 5748160 1626792 5747568 1626744 5747272 -1626728 5747616 1626704 5748056 1626808 5748160 1626792 5747568 -1626728 5747616 1626704 5748056 1626792 5747568 1626744 5747272 -1626728 5747616 1626664 5747696 1626704 5748056 1626792 5747568 -1626808 5748160 1627368 5748232 1626792 5747568 1626704 5748056 -1626808 5748160 1626872 5748264 1627368 5748232 1626792 5747568 -1626728 5747616 1626792 5747568 1626744 5747272 1626600 5747328 -1626728 5747616 1626792 5747568 1626600 5747328 1626504 5747392 -1626728 5747616 1626704 5748056 1626792 5747568 1626600 5747328 -1626792 5747568 1626848 5747256 1626744 5747272 1626600 5747328 -1627016 5747176 1626832 5747544 1627472 5748168 1627576 5748144 -1627016 5747176 1626832 5747544 1627576 5748144 1627136 5747072 -1626792 5747568 1626832 5747544 1627016 5747176 1626848 5747256 -1626792 5747568 1627472 5748168 1626832 5747544 1626848 5747256 -1627472 5748168 1626832 5747544 1626792 5747568 1627368 5748232 -1626792 5747568 1626808 5748160 1627368 5748232 1626832 5747544 -1626832 5747544 1626848 5747256 1626792 5747568 1626808 5748160 -1627016 5747176 1626848 5747256 1626832 5747544 1627576 5748144 -1627368 5748232 1627472 5748168 1626832 5747544 1626808 5748160 -1626832 5747544 1627368 5748232 1627472 5748168 1627576 5748144 -1626792 5747568 1626832 5747544 1626848 5747256 1626744 5747272 -1626832 5747544 1627016 5747176 1626848 5747256 1626744 5747272 -1626792 5747568 1626808 5748160 1626832 5747544 1626744 5747272 -1626792 5747568 1626832 5747544 1626744 5747272 1626600 5747328 -1626792 5747568 1626704 5748056 1626808 5748160 1626832 5747544 -1626808 5748160 1627368 5748232 1626832 5747544 1626704 5748056 -1626792 5747568 1626704 5748056 1626832 5747544 1626744 5747272 -1626792 5747568 1626728 5747616 1626704 5748056 1626832 5747544 -1626808 5748160 1626872 5748264 1627368 5748232 1626832 5747544 -1627016 5747176 1626920 5747512 1627576 5748144 1627136 5747072 -1627576 5748144 1626920 5747512 1626832 5747544 1627472 5748168 -1626920 5747512 1627472 5748168 1627576 5748144 1627136 5747072 -1626832 5747544 1626920 5747512 1627016 5747176 1626848 5747256 -1626832 5747544 1626920 5747512 1626848 5747256 1626744 5747272 -1626832 5747544 1627368 5748232 1627472 5748168 1626920 5747512 -1627472 5748168 1627576 5748144 1626920 5747512 1627368 5748232 -1626832 5747544 1626808 5748160 1627368 5748232 1626920 5747512 -1626832 5747544 1626704 5748056 1626808 5748160 1626920 5747512 -1627368 5748232 1627472 5748168 1626920 5747512 1626808 5748160 -1626808 5748160 1627368 5748232 1626920 5747512 1626704 5748056 -1627576 5748144 1627512 5746960 1627136 5747072 1626920 5747512 -1627136 5747072 1627016 5747176 1626920 5747512 1627512 5746960 -1627576 5748144 1627800 5747032 1627512 5746960 1626920 5747512 -1627576 5748144 1627512 5746960 1626920 5747512 1627472 5748168 -1627512 5746960 1627312 5746976 1627136 5747072 1626920 5747512 -1626832 5747544 1626792 5747568 1626704 5748056 1626920 5747512 -1626808 5748160 1626872 5748264 1627368 5748232 1626920 5747512 -1626920 5747512 1626848 5747256 1626832 5747544 1626704 5748056 -1627016 5747176 1626848 5747256 1626920 5747512 1627136 5747072 -1627512 5746960 1627016 5747504 1627576 5748144 1627800 5747032 -1627576 5748144 1628016 5747192 1627800 5747032 1627016 5747504 -1627800 5747032 1627512 5746960 1627016 5747504 1628016 5747192 -1627512 5746960 1626920 5747512 1627016 5747504 1627800 5747032 -1627016 5747504 1626920 5747512 1627576 5748144 1628016 5747192 -1627576 5748144 1627016 5747504 1626920 5747512 1627472 5748168 -1626920 5747512 1627368 5748232 1627472 5748168 1627016 5747504 -1627576 5748144 1628016 5747192 1627016 5747504 1627472 5748168 -1627472 5748168 1627576 5748144 1627016 5747504 1627368 5748232 -1626920 5747512 1626808 5748160 1627368 5748232 1627016 5747504 -1627368 5748232 1627472 5748168 1627016 5747504 1626808 5748160 -1627016 5747504 1627512 5746960 1626920 5747512 1626808 5748160 -1626920 5747512 1626704 5748056 1626808 5748160 1627016 5747504 -1626920 5747512 1626832 5747544 1626704 5748056 1627016 5747504 -1626808 5748160 1627368 5748232 1627016 5747504 1626704 5748056 -1626920 5747512 1626704 5748056 1627016 5747504 1627512 5746960 -1626920 5747512 1627016 5747504 1627512 5746960 1627136 5747072 -1626920 5747512 1627016 5747504 1627136 5747072 1627016 5747176 -1627016 5747504 1627800 5747032 1627512 5746960 1627136 5747072 -1626920 5747512 1626704 5748056 1627016 5747504 1627016 5747176 -1627016 5747504 1627512 5746960 1627136 5747072 1627016 5747176 -1627512 5746960 1627312 5746976 1627136 5747072 1627016 5747504 -1627512 5746960 1627416 5746952 1627312 5746976 1627016 5747504 -1627512 5746960 1627312 5746976 1627016 5747504 1627800 5747032 -1627136 5747072 1627016 5747176 1627016 5747504 1627312 5746976 -1627576 5748144 1628160 5747616 1628016 5747192 1627016 5747504 -1626808 5748160 1626872 5748264 1627368 5748232 1627016 5747504 -1626920 5747512 1627016 5747504 1627016 5747176 1626848 5747256 -1627016 5747504 1627136 5747072 1627016 5747176 1626848 5747256 -1626920 5747512 1626704 5748056 1627016 5747504 1626848 5747256 -1626920 5747512 1627016 5747504 1626848 5747256 1626832 5747544 -1627016 5747504 1627064 5747512 1628016 5747192 1627800 5747032 -1627016 5747504 1627064 5747512 1627800 5747032 1627512 5746960 -1627064 5747512 1628016 5747192 1627800 5747032 1627512 5746960 -1627016 5747504 1627064 5747512 1627512 5746960 1627312 5746976 -1627512 5746960 1627416 5746952 1627312 5746976 1627064 5747512 -1627064 5747512 1627800 5747032 1627512 5746960 1627312 5746976 -1627016 5747504 1627576 5748144 1627064 5747512 1627312 5746976 -1627576 5748144 1627064 5747512 1627016 5747504 1627472 5748168 -1627064 5747512 1627312 5746976 1627016 5747504 1627472 5748168 -1627016 5747504 1627368 5748232 1627472 5748168 1627064 5747512 -1627016 5747504 1626808 5748160 1627368 5748232 1627064 5747512 -1627016 5747504 1626808 5748160 1627064 5747512 1627312 5746976 -1627472 5748168 1627576 5748144 1627064 5747512 1627368 5748232 -1627368 5748232 1627472 5748168 1627064 5747512 1626808 5748160 -1627016 5747504 1626704 5748056 1626808 5748160 1627064 5747512 -1626808 5748160 1627368 5748232 1627064 5747512 1626704 5748056 -1627016 5747504 1626704 5748056 1627064 5747512 1627312 5746976 -1627016 5747504 1626920 5747512 1626704 5748056 1627064 5747512 -1626920 5747512 1626832 5747544 1626704 5748056 1627064 5747512 -1627016 5747504 1626920 5747512 1627064 5747512 1627312 5746976 -1626704 5748056 1626808 5748160 1627064 5747512 1626832 5747544 -1626920 5747512 1626832 5747544 1627064 5747512 1627016 5747504 -1627016 5747504 1627064 5747512 1627312 5746976 1627136 5747072 -1627064 5747512 1627512 5746960 1627312 5746976 1627136 5747072 -1627016 5747504 1626920 5747512 1627064 5747512 1627136 5747072 -1627016 5747504 1627064 5747512 1627136 5747072 1627016 5747176 -1627016 5747504 1627064 5747512 1627016 5747176 1626848 5747256 -1627016 5747504 1626920 5747512 1627064 5747512 1627016 5747176 -1627064 5747512 1627312 5746976 1627136 5747072 1627016 5747176 -1628016 5747192 1627064 5747512 1627576 5748144 1628160 5747616 -1628016 5747192 1627064 5747512 1628160 5747616 1628160 5747504 -1627576 5748144 1627952 5748040 1628160 5747616 1627064 5747512 -1626832 5747544 1626792 5747568 1626704 5748056 1627064 5747512 -1627064 5747512 1628160 5747616 1628016 5747192 1627800 5747032 -1627576 5748144 1628160 5747616 1627064 5747512 1627472 5748168 -1626808 5748160 1626872 5748264 1627368 5748232 1627064 5747512 -1628160 5747616 1627144 5747544 1627576 5748144 1627952 5748040 -1628160 5747616 1627064 5747512 1627144 5747544 1627952 5748040 -1627144 5747544 1627064 5747512 1627576 5748144 1627952 5748040 -1627576 5748144 1627816 5748152 1627952 5748040 1627144 5747544 -1628160 5747616 1627144 5747544 1627952 5748040 1628048 5748008 -1627064 5747512 1627144 5747544 1628160 5747616 1628016 5747192 -1627144 5747544 1627952 5748040 1628160 5747616 1628016 5747192 -1628160 5747616 1628160 5747504 1628016 5747192 1627144 5747544 -1628160 5747616 1628160 5747504 1627144 5747544 1627952 5748040 -1628160 5747504 1628120 5747304 1628016 5747192 1627144 5747544 -1628016 5747192 1627064 5747512 1627144 5747544 1628160 5747504 -1627064 5747512 1627144 5747544 1628016 5747192 1627800 5747032 -1627064 5747512 1627144 5747544 1627800 5747032 1627512 5746960 -1627064 5747512 1627144 5747544 1627512 5746960 1627312 5746976 -1627144 5747544 1627800 5747032 1627512 5746960 1627312 5746976 -1627512 5746960 1627416 5746952 1627312 5746976 1627144 5747544 -1627064 5747512 1627144 5747544 1627312 5746976 1627136 5747072 -1627144 5747544 1627512 5746960 1627312 5746976 1627136 5747072 -1627064 5747512 1627144 5747544 1627136 5747072 1627016 5747176 -1627144 5747544 1627312 5746976 1627136 5747072 1627016 5747176 -1627064 5747512 1627144 5747544 1627016 5747176 1627016 5747504 -1627144 5747544 1628160 5747504 1628016 5747192 1627800 5747032 -1627144 5747544 1628016 5747192 1627800 5747032 1627512 5746960 -1627064 5747512 1627576 5748144 1627144 5747544 1627016 5747176 -1627576 5748144 1627144 5747544 1627064 5747512 1627472 5748168 -1627576 5748144 1627952 5748040 1627144 5747544 1627472 5748168 -1627064 5747512 1627368 5748232 1627472 5748168 1627144 5747544 -1627064 5747512 1626808 5748160 1627368 5748232 1627144 5747544 -1627064 5747512 1626704 5748056 1626808 5748160 1627144 5747544 -1627368 5748232 1627472 5748168 1627144 5747544 1626808 5748160 -1626808 5748160 1627368 5748232 1627144 5747544 1626704 5748056 -1627064 5747512 1626832 5747544 1626704 5748056 1627144 5747544 -1627064 5747512 1626920 5747512 1626832 5747544 1627144 5747544 -1626704 5748056 1626808 5748160 1627144 5747544 1626832 5747544 -1626832 5747544 1626704 5748056 1627144 5747544 1626920 5747512 -1627064 5747512 1627016 5747504 1626920 5747512 1627144 5747544 -1626832 5747544 1626792 5747568 1626704 5748056 1627144 5747544 -1626704 5748056 1626808 5748160 1627144 5747544 1626792 5747568 -1626792 5747568 1626728 5747616 1626704 5748056 1627144 5747544 -1626832 5747544 1626792 5747568 1627144 5747544 1626920 5747512 -1627144 5747544 1627016 5747176 1627064 5747512 1626920 5747512 -1627472 5748168 1627576 5748144 1627144 5747544 1627368 5748232 -1626808 5748160 1626872 5748264 1627368 5748232 1627144 5747544 -1627576 5748144 1627200 5747600 1627144 5747544 1627472 5748168 -1627576 5748144 1627952 5748040 1627200 5747600 1627472 5748168 -1627200 5747600 1627952 5748040 1627144 5747544 1627472 5748168 -1627144 5747544 1627200 5747600 1627952 5748040 1628160 5747616 -1627200 5747600 1627576 5748144 1627952 5748040 1628160 5747616 -1627144 5747544 1627200 5747600 1628160 5747616 1628160 5747504 -1627144 5747544 1627472 5748168 1627200 5747600 1628160 5747504 -1627144 5747544 1627200 5747600 1628160 5747504 1628016 5747192 -1627200 5747600 1628160 5747616 1628160 5747504 1628016 5747192 -1627144 5747544 1627472 5748168 1627200 5747600 1628016 5747192 -1627200 5747600 1627952 5748040 1628160 5747616 1628160 5747504 -1628160 5747504 1628120 5747304 1628016 5747192 1627200 5747600 -1627952 5748040 1627200 5747600 1627576 5748144 1627816 5748152 -1627952 5748040 1628048 5748008 1628160 5747616 1627200 5747600 -1627144 5747544 1627200 5747600 1628016 5747192 1627800 5747032 -1627144 5747544 1627472 5748168 1627200 5747600 1627800 5747032 -1627200 5747600 1628160 5747504 1628016 5747192 1627800 5747032 -1627144 5747544 1627200 5747600 1627800 5747032 1627512 5746960 -1627144 5747544 1627200 5747600 1627512 5746960 1627312 5746976 -1627144 5747544 1627472 5748168 1627200 5747600 1627312 5746976 -1627512 5746960 1627416 5746952 1627312 5746976 1627200 5747600 -1627144 5747544 1627200 5747600 1627312 5746976 1627136 5747072 -1627200 5747600 1628016 5747192 1627800 5747032 1627512 5746960 -1627200 5747600 1627800 5747032 1627512 5746960 1627312 5746976 -1627144 5747544 1627368 5748232 1627472 5748168 1627200 5747600 -1627144 5747544 1627368 5748232 1627200 5747600 1627312 5746976 -1627472 5748168 1627576 5748144 1627200 5747600 1627368 5748232 -1627144 5747544 1626808 5748160 1627368 5748232 1627200 5747600 -1627144 5747544 1626808 5748160 1627200 5747600 1627312 5746976 -1627144 5747544 1626704 5748056 1626808 5748160 1627200 5747600 -1627144 5747544 1626704 5748056 1627200 5747600 1627312 5746976 -1627144 5747544 1626792 5747568 1626704 5748056 1627200 5747600 -1627144 5747544 1626792 5747568 1627200 5747600 1627312 5746976 -1626792 5747568 1626728 5747616 1626704 5748056 1627200 5747600 -1626808 5748160 1627368 5748232 1627200 5747600 1626704 5748056 -1626704 5748056 1626808 5748160 1627200 5747600 1626792 5747568 -1627144 5747544 1626832 5747544 1626792 5747568 1627200 5747600 -1627144 5747544 1626832 5747544 1627200 5747600 1627312 5746976 -1626792 5747568 1626704 5748056 1627200 5747600 1626832 5747544 -1627144 5747544 1626920 5747512 1626832 5747544 1627200 5747600 -1627144 5747544 1627064 5747512 1626920 5747512 1627200 5747600 -1627144 5747544 1627064 5747512 1627200 5747600 1627312 5746976 -1626920 5747512 1626832 5747544 1627200 5747600 1627064 5747512 -1627064 5747512 1627016 5747504 1626920 5747512 1627200 5747600 -1627064 5747512 1627016 5747504 1627200 5747600 1627144 5747544 -1626920 5747512 1626832 5747544 1627200 5747600 1627016 5747504 -1626832 5747544 1626792 5747568 1627200 5747600 1626920 5747512 -1627368 5748232 1627472 5748168 1627200 5747600 1626808 5748160 -1626808 5748160 1626872 5748264 1627368 5748232 1627200 5747600 -1626808 5748160 1627200 5747656 1627200 5747600 1626704 5748056 -1627200 5747656 1627368 5748232 1627200 5747600 1626704 5748056 -1627200 5747600 1626792 5747568 1626704 5748056 1627200 5747656 -1627200 5747600 1626792 5747568 1627200 5747656 1627368 5748232 -1627200 5747600 1626832 5747544 1626792 5747568 1627200 5747656 -1627200 5747600 1626832 5747544 1627200 5747656 1627368 5748232 -1626792 5747568 1626728 5747616 1626704 5748056 1627200 5747656 -1626728 5747616 1626664 5747696 1626704 5748056 1627200 5747656 -1626704 5748056 1626808 5748160 1627200 5747656 1626728 5747616 -1626792 5747568 1626728 5747616 1627200 5747656 1626832 5747544 -1626808 5748160 1627368 5748232 1627200 5747656 1626704 5748056 -1627200 5747600 1626920 5747512 1626832 5747544 1627200 5747656 -1627200 5747600 1626920 5747512 1627200 5747656 1627368 5748232 -1626832 5747544 1626792 5747568 1627200 5747656 1626920 5747512 -1627200 5747600 1627016 5747504 1626920 5747512 1627200 5747656 -1627200 5747600 1627016 5747504 1627200 5747656 1627368 5748232 -1627200 5747600 1627064 5747512 1627016 5747504 1627200 5747656 -1627200 5747600 1627144 5747544 1627064 5747512 1627200 5747656 -1627200 5747600 1627144 5747544 1627200 5747656 1627368 5748232 -1627016 5747504 1626920 5747512 1627200 5747656 1627064 5747512 -1627064 5747512 1627016 5747504 1627200 5747656 1627144 5747544 -1626920 5747512 1626832 5747544 1627200 5747656 1627016 5747504 -1627200 5747600 1627200 5747656 1627368 5748232 1627472 5748168 -1627200 5747600 1627144 5747544 1627200 5747656 1627472 5748168 -1627200 5747600 1627200 5747656 1627472 5748168 1627576 5748144 -1627200 5747600 1627144 5747544 1627200 5747656 1627576 5748144 -1627200 5747600 1627200 5747656 1627576 5748144 1627952 5748040 -1627200 5747600 1627200 5747656 1627952 5748040 1628160 5747616 -1627200 5747600 1627144 5747544 1627200 5747656 1628160 5747616 -1627200 5747656 1627576 5748144 1627952 5748040 1628160 5747616 -1627200 5747656 1627472 5748168 1627576 5748144 1627952 5748040 -1627200 5747600 1627200 5747656 1628160 5747616 1628160 5747504 -1627200 5747656 1626808 5748160 1627368 5748232 1627472 5748168 -1627576 5748144 1627816 5748152 1627952 5748040 1627200 5747656 -1627952 5748040 1628048 5748008 1628160 5747616 1627200 5747656 -1627200 5747656 1627368 5748232 1627472 5748168 1627576 5748144 -1627368 5748232 1627200 5747656 1626808 5748160 1626872 5748264 -1626728 5747616 1627144 5747696 1627200 5747656 1626792 5747568 -1626728 5747616 1626704 5748056 1627144 5747696 1626792 5747568 -1626704 5748056 1627144 5747696 1626728 5747616 1626664 5747696 -1626704 5748056 1627144 5747696 1626664 5747696 1626488 5747912 -1626704 5748056 1627200 5747656 1627144 5747696 1626664 5747696 -1627144 5747696 1626792 5747568 1626728 5747616 1626664 5747696 -1627200 5747656 1627144 5747696 1626704 5748056 1626808 5748160 -1627144 5747696 1626664 5747696 1626704 5748056 1626808 5748160 -1627200 5747656 1626832 5747544 1626792 5747568 1627144 5747696 -1627200 5747656 1626920 5747512 1626832 5747544 1627144 5747696 -1626792 5747568 1626728 5747616 1627144 5747696 1626832 5747544 -1626832 5747544 1626792 5747568 1627144 5747696 1626920 5747512 -1627144 5747696 1626808 5748160 1627200 5747656 1626920 5747512 -1627200 5747656 1627144 5747696 1626808 5748160 1627368 5748232 -1627144 5747696 1626704 5748056 1626808 5748160 1627368 5748232 -1627200 5747656 1627144 5747696 1627368 5748232 1627472 5748168 -1627200 5747656 1626920 5747512 1627144 5747696 1627472 5748168 -1627144 5747696 1626808 5748160 1627368 5748232 1627472 5748168 -1627200 5747656 1627016 5747504 1626920 5747512 1627144 5747696 -1626920 5747512 1626832 5747544 1627144 5747696 1627016 5747504 -1627200 5747656 1627064 5747512 1627016 5747504 1627144 5747696 -1627200 5747656 1627144 5747544 1627064 5747512 1627144 5747696 -1627200 5747656 1627200 5747600 1627144 5747544 1627144 5747696 -1627064 5747512 1627016 5747504 1627144 5747696 1627144 5747544 -1627144 5747544 1627064 5747512 1627144 5747696 1627200 5747600 -1627200 5747656 1627200 5747600 1627144 5747696 1627472 5748168 -1627016 5747504 1626920 5747512 1627144 5747696 1627064 5747512 -1627200 5747656 1627144 5747696 1627472 5748168 1627576 5748144 -1626808 5748160 1626872 5748264 1627368 5748232 1627144 5747696 -1626808 5748160 1627136 5747720 1627144 5747696 1626704 5748056 -1627144 5747696 1626664 5747696 1626704 5748056 1627136 5747720 -1626664 5747696 1626488 5747912 1626704 5748056 1627136 5747720 -1627136 5747720 1627368 5748232 1627144 5747696 1626664 5747696 -1627144 5747696 1626728 5747616 1626664 5747696 1627136 5747720 -1626664 5747696 1626704 5748056 1627136 5747720 1626728 5747616 -1627144 5747696 1626728 5747616 1627136 5747720 1627368 5748232 -1627144 5747696 1626792 5747568 1626728 5747616 1627136 5747720 -1627144 5747696 1626792 5747568 1627136 5747720 1627368 5748232 -1627144 5747696 1626832 5747544 1626792 5747568 1627136 5747720 -1627144 5747696 1626832 5747544 1627136 5747720 1627368 5748232 -1626792 5747568 1626728 5747616 1627136 5747720 1626832 5747544 -1626728 5747616 1626664 5747696 1627136 5747720 1626792 5747568 -1626704 5748056 1626808 5748160 1627136 5747720 1626664 5747696 -1627144 5747696 1626920 5747512 1626832 5747544 1627136 5747720 -1627144 5747696 1627016 5747504 1626920 5747512 1627136 5747720 -1627144 5747696 1627016 5747504 1627136 5747720 1627368 5748232 -1626832 5747544 1626792 5747568 1627136 5747720 1626920 5747512 -1626920 5747512 1626832 5747544 1627136 5747720 1627016 5747504 -1627144 5747696 1627136 5747720 1627368 5748232 1627472 5748168 -1627144 5747696 1627016 5747504 1627136 5747720 1627472 5748168 -1627144 5747696 1627136 5747720 1627472 5748168 1627200 5747656 -1627144 5747696 1627016 5747504 1627136 5747720 1627200 5747656 -1627136 5747720 1627368 5748232 1627472 5748168 1627200 5747656 -1627136 5747720 1626808 5748160 1627368 5748232 1627472 5748168 -1626808 5748160 1627368 5748232 1627136 5747720 1626704 5748056 -1627144 5747696 1627064 5747512 1627016 5747504 1627136 5747720 -1627472 5748168 1627576 5748144 1627200 5747656 1627136 5747720 -1627368 5748232 1627136 5747720 1626808 5748160 1626872 5748264 -1626704 5748056 1627096 5747752 1627136 5747720 1626664 5747696 -1626704 5748056 1626808 5748160 1627096 5747752 1626664 5747696 -1626704 5748056 1627096 5747752 1626664 5747696 1626488 5747912 -1627136 5747720 1626728 5747616 1626664 5747696 1627096 5747752 -1627136 5747720 1626792 5747568 1626728 5747616 1627096 5747752 -1626728 5747616 1626664 5747696 1627096 5747752 1626792 5747568 -1627136 5747720 1626832 5747544 1626792 5747568 1627096 5747752 -1627136 5747720 1626920 5747512 1626832 5747544 1627096 5747752 -1626832 5747544 1626792 5747568 1627096 5747752 1626920 5747512 -1626792 5747568 1626728 5747616 1627096 5747752 1626832 5747544 -1626664 5747696 1626704 5748056 1627096 5747752 1626728 5747616 -1627136 5747720 1627016 5747504 1626920 5747512 1627096 5747752 -1627136 5747720 1627144 5747696 1627016 5747504 1627096 5747752 -1626920 5747512 1626832 5747544 1627096 5747752 1627016 5747504 -1627016 5747504 1626920 5747512 1627096 5747752 1627144 5747696 -1627096 5747752 1626808 5748160 1627136 5747720 1627144 5747696 -1627136 5747720 1627096 5747752 1626808 5748160 1627368 5748232 -1627096 5747752 1626704 5748056 1626808 5748160 1627368 5748232 -1627136 5747720 1627096 5747752 1627368 5748232 1627472 5748168 -1627136 5747720 1627096 5747752 1627472 5748168 1627200 5747656 -1627136 5747720 1627144 5747696 1627096 5747752 1627472 5748168 -1627096 5747752 1626808 5748160 1627368 5748232 1627472 5748168 -1627144 5747696 1627064 5747512 1627016 5747504 1627096 5747752 -1627144 5747696 1627064 5747512 1627096 5747752 1627136 5747720 -1627016 5747504 1626920 5747512 1627096 5747752 1627064 5747512 -1627144 5747696 1627144 5747544 1627064 5747512 1627096 5747752 -1626808 5748160 1626872 5748264 1627368 5748232 1627096 5747752 -1626808 5748160 1626872 5748264 1627096 5747752 1626704 5748056 -1627368 5748232 1627472 5748168 1627096 5747752 1626872 5748264 -1626872 5748264 1627296 5748320 1627368 5748232 1627096 5747752 -1627096 5747752 1627024 5747792 1626704 5748056 1626808 5748160 -1627096 5747752 1627024 5747792 1626808 5748160 1626872 5748264 -1627096 5747752 1626664 5747696 1627024 5747792 1626872 5748264 -1627024 5747792 1626704 5748056 1626808 5748160 1626872 5748264 -1627024 5747792 1626664 5747696 1626704 5748056 1626808 5748160 -1626704 5748056 1627024 5747792 1626664 5747696 1626488 5747912 -1626664 5747696 1627024 5747792 1627096 5747752 1626728 5747616 -1627024 5747792 1626872 5748264 1627096 5747752 1626728 5747616 -1626664 5747696 1626704 5748056 1627024 5747792 1626728 5747616 -1627096 5747752 1626792 5747568 1626728 5747616 1627024 5747792 -1627096 5747752 1626792 5747568 1627024 5747792 1626872 5748264 -1627096 5747752 1626832 5747544 1626792 5747568 1627024 5747792 -1627096 5747752 1626832 5747544 1627024 5747792 1626872 5748264 -1626792 5747568 1626728 5747616 1627024 5747792 1626832 5747544 -1627096 5747752 1626920 5747512 1626832 5747544 1627024 5747792 -1627096 5747752 1626920 5747512 1627024 5747792 1626872 5748264 -1627096 5747752 1627016 5747504 1626920 5747512 1627024 5747792 -1627096 5747752 1627016 5747504 1627024 5747792 1626872 5748264 -1626920 5747512 1626832 5747544 1627024 5747792 1627016 5747504 -1626832 5747544 1626792 5747568 1627024 5747792 1626920 5747512 -1626728 5747616 1626664 5747696 1627024 5747792 1626792 5747568 -1627096 5747752 1627064 5747512 1627016 5747504 1627024 5747792 -1627096 5747752 1627024 5747792 1626872 5748264 1627368 5748232 -1627024 5747792 1626808 5748160 1626872 5748264 1627368 5748232 -1627096 5747752 1627016 5747504 1627024 5747792 1627368 5748232 -1627096 5747752 1627024 5747792 1627368 5748232 1627472 5748168 -1626872 5748264 1627296 5748320 1627368 5748232 1627024 5747792 -1627024 5747792 1626944 5747816 1626704 5748056 1626808 5748160 -1627024 5747792 1626944 5747816 1626808 5748160 1626872 5748264 -1627024 5747792 1626664 5747696 1626944 5747816 1626808 5748160 -1626664 5747696 1626944 5747816 1627024 5747792 1626728 5747616 -1626944 5747816 1626808 5748160 1627024 5747792 1626728 5747616 -1626704 5748056 1626944 5747816 1626664 5747696 1626488 5747912 -1626944 5747816 1626664 5747696 1626704 5748056 1626808 5748160 -1626664 5747696 1626704 5748056 1626944 5747816 1626728 5747616 -1627024 5747792 1626792 5747568 1626728 5747616 1626944 5747816 -1627024 5747792 1626792 5747568 1626944 5747816 1626808 5748160 -1626728 5747616 1626664 5747696 1626944 5747816 1626792 5747568 -1627024 5747792 1626832 5747544 1626792 5747568 1626944 5747816 -1627024 5747792 1626832 5747544 1626944 5747816 1626808 5748160 -1627024 5747792 1626920 5747512 1626832 5747544 1626944 5747816 -1627024 5747792 1626920 5747512 1626944 5747816 1626808 5748160 -1626832 5747544 1626792 5747568 1626944 5747816 1626920 5747512 -1627024 5747792 1627016 5747504 1626920 5747512 1626944 5747816 -1626792 5747568 1626728 5747616 1626944 5747816 1626832 5747544 -1626704 5748056 1626856 5747808 1626664 5747696 1626488 5747912 -1626944 5747816 1626856 5747808 1626704 5748056 1626808 5748160 -1626944 5747816 1626856 5747808 1626808 5748160 1627024 5747792 -1626856 5747808 1626664 5747696 1626704 5748056 1626808 5748160 -1626944 5747816 1626664 5747696 1626856 5747808 1626808 5748160 -1626664 5747696 1626856 5747808 1626944 5747816 1626728 5747616 -1626944 5747816 1626792 5747568 1626728 5747616 1626856 5747808 -1626664 5747696 1626704 5748056 1626856 5747808 1626728 5747616 -1626856 5747808 1626808 5748160 1626944 5747816 1626792 5747568 -1626728 5747616 1626664 5747696 1626856 5747808 1626792 5747568 -1626944 5747816 1626832 5747544 1626792 5747568 1626856 5747808 -1626792 5747568 1626728 5747616 1626856 5747808 1626832 5747544 -1626944 5747816 1626920 5747512 1626832 5747544 1626856 5747808 -1626944 5747816 1626832 5747544 1626856 5747808 1626808 5748160 -1626704 5748056 1626760 5747768 1626664 5747696 1626488 5747912 -1626856 5747808 1626760 5747768 1626704 5748056 1626808 5748160 -1626664 5747696 1626760 5747768 1626856 5747808 1626728 5747616 -1626760 5747768 1626704 5748056 1626856 5747808 1626728 5747616 -1626856 5747808 1626792 5747568 1626728 5747616 1626760 5747768 -1626856 5747808 1626832 5747544 1626792 5747568 1626760 5747768 -1626856 5747808 1626792 5747568 1626760 5747768 1626704 5748056 -1626728 5747616 1626664 5747696 1626760 5747768 1626792 5747568 -1626664 5747696 1626392 5747784 1626488 5747912 1626760 5747768 -1626704 5748056 1626856 5747808 1626760 5747768 1626488 5747912 -1626760 5747768 1626728 5747616 1626664 5747696 1626488 5747912 -1626760 5747768 1626664 5747736 1626488 5747912 1626704 5748056 -1626488 5747912 1626664 5747736 1626664 5747696 1626392 5747784 -1626664 5747696 1626376 5747696 1626392 5747784 1626664 5747736 -1626664 5747736 1626760 5747768 1626664 5747696 1626392 5747784 -1626760 5747768 1626664 5747736 1626704 5748056 1626856 5747808 -1626760 5747768 1626664 5747696 1626664 5747736 1626704 5748056 -1626664 5747696 1626664 5747736 1626760 5747768 1626728 5747616 -1626664 5747736 1626392 5747784 1626488 5747912 1626704 5748056 -1628776 5748096 1630952 5748464 1629872 5726768 1628120 5747304 -1631624 5750656 1630952 5748464 1628776 5748096 1628960 5748368 -1629872 5726768 1630952 5748464 1631624 5750656 1629928 5726696 -1631624 5750656 1631808 5750832 1629928 5726696 1630952 5748464 -1631808 5750832 1631896 5750984 1629928 5726696 1630952 5748464 -1631896 5750984 1629944 5726624 1629928 5726696 1630952 5748464 -1631808 5750832 1631896 5750984 1630952 5748464 1631624 5750656 -1629928 5726696 1629872 5726768 1630952 5748464 1631896 5750984 -1630952 5748464 1629928 5726696 1629872 5726768 1628120 5747304 -1631624 5750656 1631808 5750832 1630952 5748464 1628960 5748368 -1628776 5748096 1628960 5748368 1630952 5748464 1628120 5747304 -1628776 5748096 1630952 5748464 1628120 5747304 1628504 5747840 -1630952 5748464 1629872 5726768 1628120 5747304 1628504 5747840 -1628776 5748096 1628960 5748368 1630952 5748464 1628504 5747840 -1628120 5747304 1628168 5747408 1628504 5747840 1630952 5748464 -1631624 5750656 1630952 5748464 1628960 5748368 1631392 5750568 -1628960 5748368 1629048 5748600 1631392 5750568 1630952 5748464 -1630952 5748464 1628776 5748096 1628960 5748368 1629048 5748600 -1631624 5750656 1631808 5750832 1630952 5748464 1631392 5750568 -1631392 5750568 1631624 5750656 1630952 5748464 1629048 5748600 -1629872 5726768 1629776 5726856 1628120 5747304 1630952 5748464 -1628120 5747304 1628504 5747840 1630952 5748464 1629776 5726856 -1629872 5726768 1629776 5726856 1630952 5748464 1629928 5726696 -1629776 5726856 1628016 5747192 1628120 5747304 1630952 5748464 -1628120 5747304 1628504 5747840 1630952 5748464 1628016 5747192 -1629776 5726856 1629584 5726976 1628016 5747192 1630952 5748464 -1629584 5726976 1627800 5747032 1628016 5747192 1630952 5748464 -1629584 5726976 1627512 5746960 1627800 5747032 1630952 5748464 -1629584 5726976 1627800 5747032 1630952 5748464 1629776 5726856 -1628016 5747192 1628120 5747304 1630952 5748464 1627800 5747032 -1629776 5726856 1629584 5726976 1630952 5748464 1629872 5726768 -1629048 5748600 1631232 5750544 1631392 5750568 1630952 5748464 -1629048 5748600 1631232 5750544 1630952 5748464 1628960 5748368 -1631392 5750568 1631624 5750656 1630952 5748464 1631232 5750544 -1629048 5748600 1629072 5748768 1631232 5750544 1630952 5748464 -1629048 5748600 1629072 5748768 1630952 5748464 1628960 5748368 -1629072 5748768 1629056 5748960 1631232 5750544 1630952 5748464 -1631232 5750544 1631392 5750568 1630952 5748464 1629056 5748960 -1629056 5748960 1631168 5750568 1631232 5750544 1630952 5748464 -1629056 5748960 1630912 5750672 1631168 5750568 1630952 5748464 -1630912 5750672 1631064 5750648 1631168 5750568 1630952 5748464 -1629056 5748960 1630864 5750688 1630912 5750672 1630952 5748464 -1629056 5748960 1629000 5749168 1630864 5750688 1630952 5748464 -1629000 5749168 1628944 5749920 1630864 5750688 1630952 5748464 -1630912 5750672 1631168 5750568 1630952 5748464 1630864 5750688 -1630864 5750688 1630912 5750672 1630952 5748464 1629000 5749168 -1629056 5748960 1629000 5749168 1630952 5748464 1629072 5748768 -1631232 5750544 1631392 5750568 1630952 5748464 1631168 5750568 -1631168 5750568 1631232 5750544 1630952 5748464 1630912 5750672 -1629072 5748768 1629056 5748960 1630952 5748464 1629048 5748600 -1631896 5750984 1631072 5748576 1630952 5748464 1631808 5750832 -1629928 5726696 1631072 5748576 1631896 5750984 1629944 5726624 -1630952 5748464 1631624 5750656 1631808 5750832 1631072 5748576 -1631808 5750832 1631896 5750984 1631072 5748576 1631624 5750656 -1630952 5748464 1631072 5748576 1629928 5726696 1629872 5726768 -1630952 5748464 1631072 5748576 1629872 5726768 1629776 5726856 -1630952 5748464 1631392 5750568 1631624 5750656 1631072 5748576 -1631624 5750656 1631808 5750832 1631072 5748576 1631392 5750568 -1631072 5748576 1629872 5726768 1630952 5748464 1631392 5750568 -1629928 5726696 1629872 5726768 1631072 5748576 1629944 5726624 -1631896 5750984 1629944 5726624 1631072 5748576 1631808 5750832 -1631896 5750984 1751256 5699792 1629944 5726624 1631072 5748576 -1630952 5748464 1631232 5750544 1631392 5750568 1631072 5748576 -1631392 5750568 1631624 5750656 1631072 5748576 1631232 5750544 -1630952 5748464 1631232 5750544 1631072 5748576 1629872 5726768 -1630952 5748464 1631168 5750568 1631232 5750544 1631072 5748576 -1630952 5748464 1631168 5750568 1631072 5748576 1629872 5726768 -1631232 5750544 1631392 5750568 1631072 5748576 1631168 5750568 -1630952 5748464 1630912 5750672 1631168 5750568 1631072 5748576 -1630952 5748464 1630912 5750672 1631072 5748576 1629872 5726768 -1630912 5750672 1631064 5750648 1631168 5750568 1631072 5748576 -1630952 5748464 1630864 5750688 1630912 5750672 1631072 5748576 -1630952 5748464 1630864 5750688 1631072 5748576 1629872 5726768 -1630952 5748464 1629000 5749168 1630864 5750688 1631072 5748576 -1630952 5748464 1629000 5749168 1631072 5748576 1629872 5726768 -1629000 5749168 1628944 5749920 1630864 5750688 1631072 5748576 -1630952 5748464 1629056 5748960 1629000 5749168 1631072 5748576 -1630864 5750688 1630912 5750672 1631072 5748576 1629000 5749168 -1631168 5750568 1631232 5750544 1631072 5748576 1630912 5750672 -1630912 5750672 1631168 5750568 1631072 5748576 1630864 5750688 -1631072 5748576 1631096 5748624 1629944 5726624 1629928 5726696 -1631096 5748624 1631896 5750984 1629944 5726624 1629928 5726696 -1631072 5748576 1631096 5748624 1629928 5726696 1629872 5726768 -1631072 5748576 1631896 5750984 1631096 5748624 1629928 5726696 -1631896 5750984 1631096 5748624 1631072 5748576 1631808 5750832 -1631072 5748576 1631624 5750656 1631808 5750832 1631096 5748624 -1631072 5748576 1631392 5750568 1631624 5750656 1631096 5748624 -1631624 5750656 1631808 5750832 1631096 5748624 1631392 5750568 -1631896 5750984 1629944 5726624 1631096 5748624 1631808 5750832 -1631072 5748576 1631232 5750544 1631392 5750568 1631096 5748624 -1631392 5750568 1631624 5750656 1631096 5748624 1631232 5750544 -1631096 5748624 1629928 5726696 1631072 5748576 1631232 5750544 -1631808 5750832 1631896 5750984 1631096 5748624 1631624 5750656 -1629944 5726624 1631096 5748624 1631896 5750984 1751256 5699792 -1631072 5748576 1631168 5750568 1631232 5750544 1631096 5748624 -1631232 5750544 1631392 5750568 1631096 5748624 1631168 5750568 -1631072 5748576 1631168 5750568 1631096 5748624 1629928 5726696 -1631072 5748576 1630912 5750672 1631168 5750568 1631096 5748624 -1631072 5748576 1630912 5750672 1631096 5748624 1629928 5726696 -1630912 5750672 1631064 5750648 1631168 5750568 1631096 5748624 -1631168 5750568 1631232 5750544 1631096 5748624 1630912 5750672 -1631072 5748576 1630864 5750688 1630912 5750672 1631096 5748624 -1631072 5748576 1630864 5750688 1631096 5748624 1629928 5726696 -1631072 5748576 1629000 5749168 1630864 5750688 1631096 5748624 -1631072 5748576 1629000 5749168 1631096 5748624 1629928 5726696 -1629000 5749168 1628944 5749920 1630864 5750688 1631096 5748624 -1631072 5748576 1630952 5748464 1629000 5749168 1631096 5748624 -1631072 5748576 1630952 5748464 1631096 5748624 1629928 5726696 -1630952 5748464 1629056 5748960 1629000 5749168 1631096 5748624 -1629000 5749168 1630864 5750688 1631096 5748624 1629056 5748960 -1630952 5748464 1629056 5748960 1631096 5748624 1631072 5748576 -1630952 5748464 1629072 5748768 1629056 5748960 1631096 5748624 -1630912 5750672 1631168 5750568 1631096 5748624 1630864 5750688 -1630864 5750688 1630912 5750672 1631096 5748624 1629000 5749168 -1631168 5750568 1631096 5748744 1630912 5750672 1631064 5750648 -1631096 5748624 1631096 5748744 1631168 5750568 1631232 5750544 -1631096 5748624 1630912 5750672 1631096 5748744 1631232 5750544 -1631096 5748744 1630912 5750672 1631168 5750568 1631232 5750544 -1631096 5748624 1631096 5748744 1631232 5750544 1631392 5750568 -1631096 5748624 1631096 5748744 1631392 5750568 1631624 5750656 -1631096 5748624 1631096 5748744 1631624 5750656 1631808 5750832 -1631096 5748744 1631392 5750568 1631624 5750656 1631808 5750832 -1631096 5748624 1630912 5750672 1631096 5748744 1631808 5750832 -1631096 5748744 1631232 5750544 1631392 5750568 1631624 5750656 -1631096 5748624 1631096 5748744 1631808 5750832 1631896 5750984 -1631096 5748744 1631168 5750568 1631232 5750544 1631392 5750568 -1630912 5750672 1631096 5748744 1631096 5748624 1630864 5750688 -1630912 5750672 1631168 5750568 1631096 5748744 1630864 5750688 -1631096 5748744 1631808 5750832 1631096 5748624 1630864 5750688 -1631096 5748624 1629000 5749168 1630864 5750688 1631096 5748744 -1631096 5748624 1629000 5749168 1631096 5748744 1631808 5750832 -1629000 5749168 1628944 5749920 1630864 5750688 1631096 5748744 -1631096 5748624 1629056 5748960 1629000 5749168 1631096 5748744 -1631096 5748624 1629056 5748960 1631096 5748744 1631808 5750832 -1631096 5748624 1630952 5748464 1629056 5748960 1631096 5748744 -1631096 5748624 1630952 5748464 1631096 5748744 1631808 5750832 -1629056 5748960 1629000 5749168 1631096 5748744 1630952 5748464 -1631096 5748624 1631072 5748576 1630952 5748464 1631096 5748744 -1631096 5748624 1631072 5748576 1631096 5748744 1631808 5750832 -1630952 5748464 1629056 5748960 1631096 5748744 1631072 5748576 -1630952 5748464 1629072 5748768 1629056 5748960 1631096 5748744 -1630864 5750688 1630912 5750672 1631096 5748744 1629000 5749168 -1629000 5749168 1630864 5750688 1631096 5748744 1629056 5748960 -1630864 5750688 1631040 5748856 1629000 5749168 1628944 5749920 -1630864 5750688 1631096 5748744 1631040 5748856 1628944 5749920 -1629000 5749168 1628896 5749392 1628944 5749920 1631040 5748856 -1631040 5748856 1631096 5748744 1629000 5749168 1628944 5749920 -1630864 5750688 1631040 5748856 1628944 5749920 1630840 5750704 -1630864 5750688 1631096 5748744 1631040 5748856 1630840 5750704 -1631040 5748856 1629000 5749168 1628944 5749920 1630840 5750704 -1628944 5749920 1628952 5750072 1630840 5750704 1631040 5748856 -1631096 5748744 1631040 5748856 1630864 5750688 1630912 5750672 -1631096 5748744 1629000 5749168 1631040 5748856 1630912 5750672 -1631096 5748744 1631040 5748856 1630912 5750672 1631168 5750568 -1631096 5748744 1629000 5749168 1631040 5748856 1631168 5750568 -1631040 5748856 1630840 5750704 1630864 5750688 1630912 5750672 -1631096 5748744 1631040 5748856 1631168 5750568 1631232 5750544 -1631096 5748744 1629000 5749168 1631040 5748856 1631232 5750544 -1631040 5748856 1630912 5750672 1631168 5750568 1631232 5750544 -1630912 5750672 1631064 5750648 1631168 5750568 1631040 5748856 -1631096 5748744 1631040 5748856 1631232 5750544 1631392 5750568 -1631096 5748744 1629000 5749168 1631040 5748856 1631392 5750568 -1631096 5748744 1631040 5748856 1631392 5750568 1631624 5750656 -1631096 5748744 1629000 5749168 1631040 5748856 1631624 5750656 -1631096 5748744 1631040 5748856 1631624 5750656 1631808 5750832 -1631040 5748856 1631168 5750568 1631232 5750544 1631392 5750568 -1631040 5748856 1631232 5750544 1631392 5750568 1631624 5750656 -1631040 5748856 1630864 5750688 1630912 5750672 1631168 5750568 -1629000 5749168 1631040 5748856 1631096 5748744 1629056 5748960 -1631040 5748856 1631624 5750656 1631096 5748744 1629056 5748960 -1631096 5748744 1630952 5748464 1629056 5748960 1631040 5748856 -1631096 5748744 1630952 5748464 1631040 5748856 1631624 5750656 -1631096 5748744 1631072 5748576 1630952 5748464 1631040 5748856 -1631096 5748744 1631072 5748576 1631040 5748856 1631624 5750656 -1630952 5748464 1629056 5748960 1631040 5748856 1631072 5748576 -1629000 5749168 1628944 5749920 1631040 5748856 1629056 5748960 -1631096 5748744 1631096 5748624 1631072 5748576 1631040 5748856 -1630952 5748464 1629072 5748768 1629056 5748960 1631040 5748856 -1630952 5748464 1629072 5748768 1631040 5748856 1631072 5748576 -1629056 5748960 1629000 5749168 1631040 5748856 1629072 5748768 -1630952 5748464 1629048 5748600 1629072 5748768 1631040 5748856 -1628944 5749920 1630952 5748960 1631040 5748856 1629000 5749168 -1628944 5749920 1630952 5748960 1629000 5749168 1628896 5749392 -1631040 5748856 1629056 5748960 1629000 5749168 1630952 5748960 -1629000 5749168 1628944 5749920 1630952 5748960 1629056 5748960 -1630952 5748960 1630840 5750704 1631040 5748856 1629056 5748960 -1631040 5748856 1630952 5748960 1630840 5750704 1630864 5750688 -1631040 5748856 1630952 5748960 1630864 5750688 1630912 5750672 -1631040 5748856 1629056 5748960 1630952 5748960 1630912 5750672 -1630952 5748960 1628944 5749920 1630840 5750704 1630864 5750688 -1630952 5748960 1630840 5750704 1630864 5750688 1630912 5750672 -1630840 5750704 1630952 5748960 1628944 5749920 1628952 5750072 -1628944 5749920 1630840 5750704 1630952 5748960 1629000 5749168 -1631040 5748856 1630952 5748960 1630912 5750672 1631168 5750568 -1631040 5748856 1630952 5748960 1631168 5750568 1631232 5750544 -1630952 5748960 1630864 5750688 1630912 5750672 1631168 5750568 -1630912 5750672 1631064 5750648 1631168 5750568 1630952 5748960 -1631040 5748856 1630952 5748960 1631232 5750544 1631392 5750568 -1630952 5748960 1631168 5750568 1631232 5750544 1631392 5750568 -1631040 5748856 1629056 5748960 1630952 5748960 1631392 5750568 -1631040 5748856 1630952 5748960 1631392 5750568 1631624 5750656 -1630952 5748960 1630912 5750672 1631168 5750568 1631232 5750544 -1631040 5748856 1629072 5748768 1629056 5748960 1630952 5748960 -1629056 5748960 1629000 5749168 1630952 5748960 1629072 5748768 -1631040 5748856 1629072 5748768 1630952 5748960 1631392 5750568 -1631040 5748856 1630952 5748464 1629072 5748768 1630952 5748960 -1631040 5748856 1631072 5748576 1630952 5748464 1630952 5748960 -1631040 5748856 1630952 5748464 1630952 5748960 1631392 5750568 -1629072 5748768 1629056 5748960 1630952 5748960 1630952 5748464 -1630952 5748464 1629048 5748600 1629072 5748768 1630952 5748960 -1630952 5748960 1630832 5749024 1630840 5750704 1630864 5750688 -1630952 5748960 1630832 5749024 1630864 5750688 1630912 5750672 -1630952 5748960 1630832 5749024 1630912 5750672 1631168 5750568 -1630912 5750672 1631064 5750648 1631168 5750568 1630832 5749024 -1630832 5749024 1630840 5750704 1630864 5750688 1630912 5750672 -1630832 5749024 1630864 5750688 1630912 5750672 1631168 5750568 -1630840 5750704 1630832 5749024 1628944 5749920 1628952 5750072 -1630952 5748960 1628944 5749920 1630832 5749024 1631168 5750568 -1628944 5749920 1630832 5749024 1630952 5748960 1629000 5749168 -1630952 5748960 1629056 5748960 1629000 5749168 1630832 5749024 -1628944 5749920 1630840 5750704 1630832 5749024 1629000 5749168 -1628944 5749920 1630832 5749024 1629000 5749168 1628896 5749392 -1630952 5748960 1629072 5748768 1629056 5748960 1630832 5749024 -1629056 5748960 1629000 5749168 1630832 5749024 1629072 5748768 -1630832 5749024 1631168 5750568 1630952 5748960 1629072 5748768 -1629000 5749168 1628944 5749920 1630832 5749024 1629056 5748960 -1630832 5749024 1628944 5749920 1630840 5750704 1630864 5750688 -1630952 5748960 1630832 5749024 1631168 5750568 1631232 5750544 -1630952 5748960 1630832 5749024 1631232 5750544 1631392 5750568 -1630832 5749024 1630912 5750672 1631168 5750568 1631232 5750544 -1630952 5748960 1629072 5748768 1630832 5749024 1631232 5750544 -1630952 5748960 1630952 5748464 1629072 5748768 1630832 5749024 -1629072 5748768 1629056 5748960 1630832 5749024 1630952 5748464 -1630952 5748960 1631040 5748856 1630952 5748464 1630832 5749024 -1630952 5748960 1630952 5748464 1630832 5749024 1631232 5750544 -1630952 5748464 1629048 5748600 1629072 5748768 1630832 5749024 -1630832 5749024 1630776 5749016 1629056 5748960 1629000 5749168 -1630832 5749024 1629072 5748768 1630776 5749016 1629000 5749168 -1630776 5749016 1629072 5748768 1629056 5748960 1629000 5749168 -1629072 5748768 1630776 5749016 1630832 5749024 1630952 5748464 -1629072 5748768 1629056 5748960 1630776 5749016 1630952 5748464 -1630776 5749016 1629000 5749168 1630832 5749024 1630952 5748464 -1630832 5749024 1630776 5749016 1629000 5749168 1628944 5749920 -1630776 5749016 1629056 5748960 1629000 5749168 1628944 5749920 -1630832 5749024 1630776 5749016 1628944 5749920 1630840 5750704 -1630832 5749024 1630952 5748464 1630776 5749016 1630840 5750704 -1629000 5749168 1628896 5749392 1628944 5749920 1630776 5749016 -1628944 5749920 1628952 5750072 1630840 5750704 1630776 5749016 -1630776 5749016 1629000 5749168 1628944 5749920 1630840 5750704 -1630832 5749024 1630776 5749016 1630840 5750704 1630864 5750688 -1630776 5749016 1628944 5749920 1630840 5750704 1630864 5750688 -1630832 5749024 1630776 5749016 1630864 5750688 1630912 5750672 -1630832 5749024 1630952 5748464 1630776 5749016 1630912 5750672 -1630832 5749024 1630776 5749016 1630912 5750672 1631168 5750568 -1630776 5749016 1630840 5750704 1630864 5750688 1630912 5750672 -1630832 5749024 1630952 5748960 1630952 5748464 1630776 5749016 -1630832 5749024 1630952 5748960 1630776 5749016 1630912 5750672 -1630952 5748464 1629072 5748768 1630776 5749016 1630952 5748960 -1630952 5748960 1631040 5748856 1630952 5748464 1630776 5749016 -1631040 5748856 1631072 5748576 1630952 5748464 1630776 5749016 -1630952 5748464 1629072 5748768 1630776 5749016 1631040 5748856 -1630952 5748960 1631040 5748856 1630776 5749016 1630832 5749024 -1629072 5748768 1630776 5749016 1630952 5748464 1629048 5748600 -1630952 5748464 1628960 5748368 1629048 5748600 1630776 5749016 -1629072 5748768 1629056 5748960 1630776 5749016 1629048 5748600 -1630776 5749016 1631040 5748856 1630952 5748464 1629048 5748600 -1629048 5748600 1630576 5748888 1630952 5748464 1628960 5748368 -1630952 5748464 1628776 5748096 1628960 5748368 1630576 5748888 -1629048 5748600 1630776 5749016 1630576 5748888 1628960 5748368 -1630576 5748888 1630776 5749016 1630952 5748464 1628960 5748368 -1630952 5748464 1630576 5748888 1630776 5749016 1631040 5748856 -1630576 5748888 1629048 5748600 1630776 5749016 1631040 5748856 -1630952 5748464 1628960 5748368 1630576 5748888 1631040 5748856 -1630952 5748464 1630576 5748888 1631040 5748856 1631072 5748576 -1630776 5749016 1630952 5748960 1631040 5748856 1630576 5748888 -1630776 5749016 1630952 5748960 1630576 5748888 1629048 5748600 -1631040 5748856 1630952 5748464 1630576 5748888 1630952 5748960 -1630776 5749016 1630832 5749024 1630952 5748960 1630576 5748888 -1630776 5749016 1630576 5748888 1629048 5748600 1629072 5748768 -1630776 5749016 1630576 5748888 1629072 5748768 1629056 5748960 -1630776 5749016 1630952 5748960 1630576 5748888 1629056 5748960 -1630576 5748888 1628960 5748368 1629048 5748600 1629072 5748768 -1630776 5749016 1630576 5748888 1629056 5748960 1629000 5749168 -1630776 5749016 1630576 5748888 1629000 5749168 1628944 5749920 -1630576 5748888 1629072 5748768 1629056 5748960 1629000 5749168 -1630776 5749016 1630952 5748960 1630576 5748888 1628944 5749920 -1630576 5748888 1629056 5748960 1629000 5749168 1628944 5749920 -1629000 5749168 1628896 5749392 1628944 5749920 1630576 5748888 -1630776 5749016 1630576 5748888 1628944 5749920 1630840 5750704 -1630576 5748888 1629000 5749168 1628944 5749920 1630840 5750704 -1630776 5749016 1630952 5748960 1630576 5748888 1630840 5750704 -1630776 5749016 1630576 5748888 1630840 5750704 1630864 5750688 -1628944 5749920 1628952 5750072 1630840 5750704 1630576 5748888 -1630576 5748888 1629048 5748600 1629072 5748768 1629056 5748960 -1630576 5748888 1630344 5748704 1628960 5748368 1629048 5748600 -1628960 5748368 1630344 5748704 1630952 5748464 1628776 5748096 -1630952 5748464 1628504 5747840 1628776 5748096 1630344 5748704 -1630576 5748888 1630344 5748704 1629048 5748600 1629072 5748768 -1630344 5748704 1628960 5748368 1629048 5748600 1629072 5748768 -1630576 5748888 1630952 5748464 1630344 5748704 1629072 5748768 -1630952 5748464 1630344 5748704 1630576 5748888 1631040 5748856 -1630344 5748704 1628776 5748096 1628960 5748368 1629048 5748600 -1630344 5748704 1630576 5748888 1630952 5748464 1628776 5748096 -1630576 5748888 1630344 5748704 1629072 5748768 1629056 5748960 -1630576 5748888 1630344 5748704 1629056 5748960 1629000 5749168 -1630344 5748704 1629048 5748600 1629072 5748768 1629056 5748960 -1630576 5748888 1630952 5748464 1630344 5748704 1629000 5749168 -1630576 5748888 1630344 5748704 1629000 5749168 1628944 5749920 -1630344 5748704 1629072 5748768 1629056 5748960 1629000 5749168 -1630344 5748704 1630288 5748608 1628776 5748096 1628960 5748368 -1628776 5748096 1630288 5748608 1630952 5748464 1628504 5747840 -1630344 5748704 1630288 5748608 1628960 5748368 1629048 5748600 -1630344 5748704 1630288 5748608 1629048 5748600 1629072 5748768 -1630288 5748608 1628776 5748096 1628960 5748368 1629048 5748600 -1630344 5748704 1630288 5748608 1629072 5748768 1629056 5748960 -1630288 5748608 1629048 5748600 1629072 5748768 1629056 5748960 -1630288 5748608 1628960 5748368 1629048 5748600 1629072 5748768 -1630344 5748704 1630952 5748464 1630288 5748608 1629056 5748960 -1630952 5748464 1630288 5748608 1630344 5748704 1630576 5748888 -1630288 5748608 1630952 5748464 1628776 5748096 1628960 5748368 -1630344 5748704 1630288 5748608 1629056 5748960 1629000 5749168 -1628776 5748096 1630336 5748456 1630952 5748464 1628504 5747840 -1630336 5748456 1630288 5748608 1630952 5748464 1628504 5747840 -1630288 5748608 1630336 5748456 1628776 5748096 1628960 5748368 -1630288 5748608 1630336 5748456 1628960 5748368 1629048 5748600 -1630288 5748608 1630336 5748456 1629048 5748600 1629072 5748768 -1630336 5748456 1628776 5748096 1628960 5748368 1629048 5748600 -1630288 5748608 1630952 5748464 1630336 5748456 1629048 5748600 -1630952 5748464 1628120 5747304 1628504 5747840 1630336 5748456 -1630952 5748464 1628016 5747192 1628120 5747304 1630336 5748456 -1628120 5747304 1628168 5747408 1628504 5747840 1630336 5748456 -1628504 5747840 1628776 5748096 1630336 5748456 1628120 5747304 -1630952 5748464 1628120 5747304 1630336 5748456 1630288 5748608 -1630952 5748464 1630336 5748456 1630288 5748608 1630344 5748704 -1630952 5748464 1628120 5747304 1630336 5748456 1630344 5748704 -1630952 5748464 1630336 5748456 1630344 5748704 1630576 5748888 -1630952 5748464 1630336 5748456 1630576 5748888 1631040 5748856 -1630952 5748464 1628120 5747304 1630336 5748456 1630576 5748888 -1630336 5748456 1629048 5748600 1630288 5748608 1630344 5748704 -1630336 5748456 1630288 5748608 1630344 5748704 1630576 5748888 -1628776 5748096 1628960 5748368 1630336 5748456 1628504 5747840 -1628120 5747304 1630416 5748320 1630952 5748464 1628016 5747192 -1630416 5748320 1630336 5748456 1630952 5748464 1628016 5747192 -1630952 5748464 1630416 5748320 1630336 5748456 1630576 5748888 -1628120 5747304 1630336 5748456 1630416 5748320 1628016 5747192 -1630336 5748456 1630416 5748320 1628120 5747304 1628504 5747840 -1628120 5747304 1628168 5747408 1628504 5747840 1630416 5748320 -1630336 5748456 1630416 5748320 1628504 5747840 1628776 5748096 -1630336 5748456 1630952 5748464 1630416 5748320 1628776 5748096 -1630416 5748320 1628016 5747192 1628120 5747304 1628504 5747840 -1630416 5748320 1628120 5747304 1628504 5747840 1628776 5748096 -1630336 5748456 1630416 5748320 1628776 5748096 1628960 5748368 -1630416 5748320 1628504 5747840 1628776 5748096 1628960 5748368 -1630336 5748456 1630952 5748464 1630416 5748320 1628960 5748368 -1630336 5748456 1630416 5748320 1628960 5748368 1629048 5748600 -1630952 5748464 1627800 5747032 1628016 5747192 1630416 5748320 -1628016 5747192 1628120 5747304 1630416 5748320 1627800 5747032 -1630952 5748464 1629584 5726976 1627800 5747032 1630416 5748320 -1630952 5748464 1627800 5747032 1630416 5748320 1630336 5748456 -1627800 5747032 1630488 5748256 1630952 5748464 1629584 5726976 -1630952 5748464 1630488 5748256 1630416 5748320 1630336 5748456 -1627800 5747032 1630416 5748320 1630488 5748256 1629584 5726976 -1630488 5748256 1630416 5748320 1630952 5748464 1629584 5726976 -1627800 5747032 1630488 5748256 1629584 5726976 1627512 5746960 -1630952 5748464 1629776 5726856 1629584 5726976 1630488 5748256 -1630416 5748320 1630488 5748256 1627800 5747032 1628016 5747192 -1630416 5748320 1630488 5748256 1628016 5747192 1628120 5747304 -1630488 5748256 1629584 5726976 1627800 5747032 1628016 5747192 -1630416 5748320 1630488 5748256 1628120 5747304 1628504 5747840 -1630488 5748256 1628016 5747192 1628120 5747304 1628504 5747840 -1628120 5747304 1628168 5747408 1628504 5747840 1630488 5748256 -1630416 5748320 1630952 5748464 1630488 5748256 1628504 5747840 -1630416 5748320 1630488 5748256 1628504 5747840 1628776 5748096 -1630416 5748320 1630488 5748256 1628776 5748096 1628960 5748368 -1630488 5748256 1628120 5747304 1628504 5747840 1628776 5748096 -1630416 5748320 1630952 5748464 1630488 5748256 1628776 5748096 -1630488 5748256 1627800 5747032 1628016 5747192 1628120 5747304 -1630488 5748256 1630616 5748224 1629584 5726976 1627800 5747032 -1630488 5748256 1630616 5748224 1627800 5747032 1628016 5747192 -1630616 5748224 1629584 5726976 1627800 5747032 1628016 5747192 -1630488 5748256 1630952 5748464 1630616 5748224 1628016 5747192 -1630952 5748464 1630616 5748224 1630488 5748256 1630416 5748320 -1630952 5748464 1630616 5748224 1630416 5748320 1630336 5748456 -1630616 5748224 1628016 5747192 1630488 5748256 1630416 5748320 -1630616 5748224 1630952 5748464 1629584 5726976 1627800 5747032 -1629584 5726976 1627512 5746960 1627800 5747032 1630616 5748224 -1630952 5748464 1629584 5726976 1630616 5748224 1630416 5748320 -1629584 5726976 1630616 5748224 1630952 5748464 1629776 5726856 -1629584 5726976 1627800 5747032 1630616 5748224 1629776 5726856 -1630616 5748224 1630416 5748320 1630952 5748464 1629776 5726856 -1630488 5748256 1630616 5748224 1628016 5747192 1628120 5747304 -1630488 5748256 1630616 5748224 1628120 5747304 1628504 5747840 -1630616 5748224 1627800 5747032 1628016 5747192 1628120 5747304 -1630488 5748256 1630416 5748320 1630616 5748224 1628120 5747304 -1630952 5748464 1629872 5726768 1629776 5726856 1630616 5748224 -1630952 5748464 1630704 5748256 1630616 5748224 1630416 5748320 -1630952 5748464 1630704 5748256 1630416 5748320 1630336 5748456 -1630616 5748224 1630488 5748256 1630416 5748320 1630704 5748256 -1630704 5748256 1629776 5726856 1630616 5748224 1630488 5748256 -1630704 5748256 1630488 5748256 1630416 5748320 1630336 5748456 -1630952 5748464 1629776 5726856 1630704 5748256 1630336 5748456 -1630952 5748464 1630704 5748256 1630336 5748456 1630576 5748888 -1630704 5748256 1630416 5748320 1630336 5748456 1630576 5748888 -1630952 5748464 1630704 5748256 1630576 5748888 1631040 5748856 -1630952 5748464 1629776 5726856 1630704 5748256 1630576 5748888 -1630336 5748456 1630344 5748704 1630576 5748888 1630704 5748256 -1630336 5748456 1630344 5748704 1630704 5748256 1630416 5748320 -1630576 5748888 1630952 5748464 1630704 5748256 1630344 5748704 -1630616 5748224 1630704 5748256 1629776 5726856 1629584 5726976 -1630616 5748224 1630704 5748256 1629584 5726976 1627800 5747032 -1630616 5748224 1630488 5748256 1630704 5748256 1629584 5726976 -1630704 5748256 1630952 5748464 1629776 5726856 1629584 5726976 -1630336 5748456 1630288 5748608 1630344 5748704 1630704 5748256 -1629776 5726856 1630704 5748256 1630952 5748464 1629872 5726768 -1630952 5748464 1631072 5748576 1629872 5726768 1630704 5748256 -1629776 5726856 1629584 5726976 1630704 5748256 1629872 5726768 -1630704 5748256 1630576 5748888 1630952 5748464 1629872 5726768 -1630616 5748224 1630128 5746960 1627800 5747032 1628016 5747192 -1630616 5748224 1630128 5746960 1628016 5747192 1628120 5747304 -1630128 5746960 1627800 5747032 1628016 5747192 1628120 5747304 -1629584 5726976 1630128 5746960 1630616 5748224 1630704 5748256 -1627800 5747032 1630128 5746960 1629584 5726976 1627512 5746960 -1629584 5726976 1624528 5745760 1627512 5746960 1630128 5746960 -1627512 5746960 1627800 5747032 1630128 5746960 1624528 5745760 -1630128 5746960 1627512 5746960 1627800 5747032 1628016 5747192 -1629584 5726976 1624528 5745760 1630128 5746960 1630704 5748256 -1630616 5748224 1630704 5748256 1630128 5746960 1628120 5747304 -1629584 5726976 1630128 5746960 1630704 5748256 1629776 5726856 -1630128 5746960 1630616 5748224 1630704 5748256 1629776 5726856 -1629584 5726976 1624528 5745760 1630128 5746960 1629776 5726856 -1630704 5748256 1629872 5726768 1629776 5726856 1630128 5746960 -1630704 5748256 1629872 5726768 1630128 5746960 1630616 5748224 -1629776 5726856 1629584 5726976 1630128 5746960 1629872 5726768 -1624528 5745760 1624712 5745880 1627512 5746960 1630128 5746960 -1624528 5745760 1624712 5745880 1630128 5746960 1629584 5726976 -1627512 5746960 1627800 5747032 1630128 5746960 1624712 5745880 -1624712 5745880 1627416 5746952 1627512 5746960 1630128 5746960 -1630616 5748224 1630128 5746960 1628120 5747304 1630488 5748256 -1628120 5747304 1628504 5747840 1630488 5748256 1630128 5746960 -1630128 5746960 1628016 5747192 1628120 5747304 1628504 5747840 -1628120 5747304 1628168 5747408 1628504 5747840 1630128 5746960 -1628504 5747840 1630488 5748256 1630128 5746960 1628168 5747408 -1628120 5747304 1628168 5747408 1630128 5746960 1628016 5747192 -1628168 5747408 1628304 5747744 1628504 5747840 1630128 5746960 -1630616 5748224 1630704 5748256 1630128 5746960 1630488 5748256 -1628504 5747840 1628776 5748096 1630488 5748256 1630128 5746960 -1628504 5747840 1628776 5748096 1630128 5746960 1628168 5747408 -1628776 5748096 1630416 5748320 1630488 5748256 1630128 5746960 -1628776 5748096 1628960 5748368 1630416 5748320 1630128 5746960 -1628776 5748096 1628960 5748368 1630128 5746960 1628504 5747840 -1630416 5748320 1630488 5748256 1630128 5746960 1628960 5748368 -1628960 5748368 1630336 5748456 1630416 5748320 1630128 5746960 -1630488 5748256 1630616 5748224 1630128 5746960 1630416 5748320 -1630704 5748256 1630952 5748464 1629872 5726768 1630128 5746960 -1630952 5748464 1631072 5748576 1629872 5726768 1630128 5746960 -1631072 5748576 1629928 5726696 1629872 5726768 1630128 5746960 -1631072 5748576 1629928 5726696 1630128 5746960 1630952 5748464 -1630704 5748256 1630952 5748464 1630128 5746960 1630616 5748224 -1631072 5748576 1631096 5748624 1629928 5726696 1630128 5746960 -1629872 5726768 1629776 5726856 1630128 5746960 1629928 5726696 -1630952 5748464 1631072 5748576 1630128 5746960 1630704 5748256 -1629584 5726976 1623896 5745384 1624528 5745760 1630128 5746960 -1630128 5746960 1630192 5746944 1629928 5726696 1629872 5726768 -1631072 5748576 1630192 5746944 1630128 5746960 1630952 5748464 -1629928 5726696 1630192 5746944 1631072 5748576 1631096 5748624 -1630128 5746960 1630952 5748464 1630192 5746944 1629872 5726768 -1630192 5746944 1631072 5748576 1629928 5726696 1629872 5726768 -1630128 5746960 1630192 5746944 1629872 5726768 1629776 5726856 -1630192 5746944 1629928 5726696 1629872 5726768 1629776 5726856 -1630128 5746960 1630952 5748464 1630192 5746944 1629776 5726856 -1630128 5746960 1630192 5746944 1629776 5726856 1629584 5726976 -1630128 5746960 1630952 5748464 1630192 5746944 1629584 5726976 -1630128 5746960 1630192 5746944 1629584 5726976 1624528 5745760 -1630128 5746960 1630192 5746944 1624528 5745760 1624712 5745880 -1630128 5746960 1630952 5748464 1630192 5746944 1624712 5745880 -1630192 5746944 1629584 5726976 1624528 5745760 1624712 5745880 -1630192 5746944 1629872 5726768 1629776 5726856 1629584 5726976 -1630192 5746944 1629776 5726856 1629584 5726976 1624528 5745760 -1631072 5748576 1629928 5726696 1630192 5746944 1630952 5748464 -1630128 5746960 1630192 5746944 1624712 5745880 1627512 5746960 -1630192 5746944 1624528 5745760 1624712 5745880 1627512 5746960 -1630128 5746960 1630192 5746944 1627512 5746960 1627800 5747032 -1630128 5746960 1630952 5748464 1630192 5746944 1627512 5746960 -1624712 5745880 1627416 5746952 1627512 5746960 1630192 5746944 -1630128 5746960 1630704 5748256 1630952 5748464 1630192 5746944 -1630952 5748464 1631072 5748576 1630192 5746944 1630704 5748256 -1630128 5746960 1630616 5748224 1630704 5748256 1630192 5746944 -1630128 5746960 1630616 5748224 1630192 5746944 1627512 5746960 -1630128 5746960 1630488 5748256 1630616 5748224 1630192 5746944 -1630616 5748224 1630704 5748256 1630192 5746944 1630488 5748256 -1630128 5746960 1630488 5748256 1630192 5746944 1627512 5746960 -1630128 5746960 1630416 5748320 1630488 5748256 1630192 5746944 -1630704 5748256 1630952 5748464 1630192 5746944 1630616 5748224 -1629584 5726976 1623896 5745384 1624528 5745760 1630192 5746944 -1624528 5745760 1624712 5745880 1630192 5746944 1623896 5745384 -1629584 5726976 1623640 5745232 1623896 5745384 1630192 5746944 -1629584 5726976 1623896 5745384 1630192 5746944 1629776 5726856 -1623896 5745384 1624032 5745472 1624528 5745760 1630192 5746944 -1629928 5726696 1630280 5746960 1631072 5748576 1631096 5748624 -1630192 5746944 1630280 5746960 1629928 5726696 1629872 5726768 -1630192 5746944 1630280 5746960 1629872 5726768 1629776 5726856 -1630280 5746960 1629928 5726696 1629872 5726768 1629776 5726856 -1630192 5746944 1631072 5748576 1630280 5746960 1629776 5726856 -1630192 5746944 1630280 5746960 1629776 5726856 1629584 5726976 -1630280 5746960 1629872 5726768 1629776 5726856 1629584 5726976 -1630192 5746944 1631072 5748576 1630280 5746960 1629584 5726976 -1630192 5746944 1630280 5746960 1629584 5726976 1623896 5745384 -1631072 5748576 1630280 5746960 1630192 5746944 1630952 5748464 -1630192 5746944 1630704 5748256 1630952 5748464 1630280 5746960 -1630280 5746960 1629584 5726976 1630192 5746944 1630704 5748256 -1630952 5748464 1631072 5748576 1630280 5746960 1630704 5748256 -1630280 5746960 1631072 5748576 1629928 5726696 1629872 5726768 -1631072 5748576 1629928 5726696 1630280 5746960 1630952 5748464 -1630192 5746944 1630616 5748224 1630704 5748256 1630280 5746960 -1630704 5748256 1630952 5748464 1630280 5746960 1630616 5748224 -1630192 5746944 1630488 5748256 1630616 5748224 1630280 5746960 -1630192 5746944 1630488 5748256 1630280 5746960 1629584 5726976 -1630192 5746944 1630128 5746960 1630488 5748256 1630280 5746960 -1630488 5748256 1630616 5748224 1630280 5746960 1630128 5746960 -1630192 5746944 1630128 5746960 1630280 5746960 1629584 5726976 -1630128 5746960 1630416 5748320 1630488 5748256 1630280 5746960 -1630616 5748224 1630704 5748256 1630280 5746960 1630488 5748256 -1629928 5726696 1630328 5746984 1631072 5748576 1631096 5748624 -1630280 5746960 1630328 5746984 1629928 5726696 1629872 5726768 -1630280 5746960 1630328 5746984 1629872 5726768 1629776 5726856 -1630280 5746960 1630328 5746984 1629776 5726856 1629584 5726976 -1630328 5746984 1629872 5726768 1629776 5726856 1629584 5726976 -1630280 5746960 1630328 5746984 1629584 5726976 1630192 5746944 -1630328 5746984 1629928 5726696 1629872 5726768 1629776 5726856 -1630280 5746960 1631072 5748576 1630328 5746984 1629584 5726976 -1631072 5748576 1630328 5746984 1630280 5746960 1630952 5748464 -1631072 5748576 1629928 5726696 1630328 5746984 1630952 5748464 -1630280 5746960 1630704 5748256 1630952 5748464 1630328 5746984 -1630280 5746960 1630616 5748224 1630704 5748256 1630328 5746984 -1630704 5748256 1630952 5748464 1630328 5746984 1630616 5748224 -1630328 5746984 1629584 5726976 1630280 5746960 1630616 5748224 -1630952 5748464 1631072 5748576 1630328 5746984 1630704 5748256 -1630328 5746984 1631072 5748576 1629928 5726696 1629872 5726768 -1630280 5746960 1630488 5748256 1630616 5748224 1630328 5746984 -1630616 5748224 1630704 5748256 1630328 5746984 1630488 5748256 -1630280 5746960 1630128 5746960 1630488 5748256 1630328 5746984 -1630280 5746960 1630192 5746944 1630128 5746960 1630328 5746984 -1630280 5746960 1630128 5746960 1630328 5746984 1629584 5726976 -1630128 5746960 1630416 5748320 1630488 5748256 1630328 5746984 -1630488 5748256 1630616 5748224 1630328 5746984 1630128 5746960 -1629928 5726696 1630368 5747016 1631072 5748576 1631096 5748624 -1629928 5726696 1630368 5747016 1631096 5748624 1629944 5726624 -1631072 5748576 1630368 5747016 1630328 5746984 1630952 5748464 -1630368 5747016 1629928 5726696 1630328 5746984 1630952 5748464 -1629928 5726696 1630328 5746984 1630368 5747016 1631096 5748624 -1630368 5747016 1630952 5748464 1631072 5748576 1631096 5748624 -1630328 5746984 1630704 5748256 1630952 5748464 1630368 5747016 -1630328 5746984 1630704 5748256 1630368 5747016 1629928 5726696 -1630952 5748464 1631072 5748576 1630368 5747016 1630704 5748256 -1630328 5746984 1630616 5748224 1630704 5748256 1630368 5747016 -1630328 5746984 1630488 5748256 1630616 5748224 1630368 5747016 -1630328 5746984 1630488 5748256 1630368 5747016 1629928 5726696 -1630616 5748224 1630704 5748256 1630368 5747016 1630488 5748256 -1630704 5748256 1630952 5748464 1630368 5747016 1630616 5748224 -1630328 5746984 1630368 5747016 1629928 5726696 1629872 5726768 -1630328 5746984 1630488 5748256 1630368 5747016 1629872 5726768 -1630368 5747016 1631096 5748624 1629928 5726696 1629872 5726768 -1630328 5746984 1630368 5747016 1629872 5726768 1629776 5726856 -1630328 5746984 1630368 5747016 1629776 5726856 1629584 5726976 -1630328 5746984 1630488 5748256 1630368 5747016 1629776 5726856 -1630368 5747016 1629928 5726696 1629872 5726768 1629776 5726856 -1630328 5746984 1630128 5746960 1630488 5748256 1630368 5747016 -1630488 5748256 1630616 5748224 1630368 5747016 1630128 5746960 -1630328 5746984 1630280 5746960 1630128 5746960 1630368 5747016 -1630328 5746984 1630128 5746960 1630368 5747016 1629776 5726856 -1630128 5746960 1630416 5748320 1630488 5748256 1630368 5747016 -1629928 5726696 1630416 5747064 1631096 5748624 1629944 5726624 -1631096 5748624 1630416 5747064 1630368 5747016 1631072 5748576 -1631096 5748624 1629928 5726696 1630416 5747064 1631072 5748576 -1630368 5747016 1630416 5747064 1629928 5726696 1629872 5726768 -1630416 5747064 1631096 5748624 1629928 5726696 1629872 5726768 -1630416 5747064 1629872 5726768 1630368 5747016 1631072 5748576 -1630368 5747016 1630952 5748464 1631072 5748576 1630416 5747064 -1631072 5748576 1631096 5748624 1630416 5747064 1630952 5748464 -1630368 5747016 1630704 5748256 1630952 5748464 1630416 5747064 -1630368 5747016 1630704 5748256 1630416 5747064 1629872 5726768 -1630952 5748464 1631072 5748576 1630416 5747064 1630704 5748256 -1630368 5747016 1630616 5748224 1630704 5748256 1630416 5747064 -1630704 5748256 1630952 5748464 1630416 5747064 1630616 5748224 -1630368 5747016 1630616 5748224 1630416 5747064 1629872 5726768 -1630368 5747016 1630488 5748256 1630616 5748224 1630416 5747064 -1630368 5747016 1630128 5746960 1630488 5748256 1630416 5747064 -1630368 5747016 1630128 5746960 1630416 5747064 1629872 5726768 -1630488 5748256 1630616 5748224 1630416 5747064 1630128 5746960 -1630616 5748224 1630704 5748256 1630416 5747064 1630488 5748256 -1630368 5747016 1630416 5747064 1629872 5726768 1629776 5726856 -1630128 5746960 1630416 5748320 1630488 5748256 1630416 5747064 -1630368 5747016 1630328 5746984 1630128 5746960 1630416 5747064 -1629928 5726696 1630456 5747104 1631096 5748624 1629944 5726624 -1630416 5747064 1630456 5747104 1629928 5726696 1629872 5726768 -1630416 5747064 1631096 5748624 1630456 5747104 1629872 5726768 -1631096 5748624 1630456 5747104 1630416 5747064 1631072 5748576 -1630456 5747104 1629872 5726768 1630416 5747064 1631072 5748576 -1630456 5747104 1631096 5748624 1629928 5726696 1629872 5726768 -1630416 5747064 1630952 5748464 1631072 5748576 1630456 5747104 -1630416 5747064 1630952 5748464 1630456 5747104 1629872 5726768 -1631072 5748576 1631096 5748624 1630456 5747104 1630952 5748464 -1630416 5747064 1630456 5747104 1629872 5726768 1630368 5747016 -1630416 5747064 1630704 5748256 1630952 5748464 1630456 5747104 -1630416 5747064 1630704 5748256 1630456 5747104 1629872 5726768 -1630952 5748464 1631072 5748576 1630456 5747104 1630704 5748256 -1630416 5747064 1630616 5748224 1630704 5748256 1630456 5747104 -1630416 5747064 1630616 5748224 1630456 5747104 1629872 5726768 -1630704 5748256 1630952 5748464 1630456 5747104 1630616 5748224 -1630416 5747064 1630488 5748256 1630616 5748224 1630456 5747104 -1630416 5747064 1630488 5748256 1630456 5747104 1629872 5726768 -1630616 5748224 1630704 5748256 1630456 5747104 1630488 5748256 -1630416 5747064 1630128 5746960 1630488 5748256 1630456 5747104 -1630416 5747064 1630368 5747016 1630128 5746960 1630456 5747104 -1630416 5747064 1630128 5746960 1630456 5747104 1629872 5726768 -1630488 5748256 1630616 5748224 1630456 5747104 1630128 5746960 -1630128 5746960 1630416 5748320 1630488 5748256 1630456 5747104 -1631096 5748624 1629928 5726696 1630456 5747104 1631072 5748576 -1629928 5726696 1630496 5747152 1631096 5748624 1629944 5726624 -1630456 5747104 1630496 5747152 1629928 5726696 1629872 5726768 -1631096 5748624 1630496 5747152 1630456 5747104 1631072 5748576 -1630456 5747104 1630952 5748464 1631072 5748576 1630496 5747152 -1630496 5747152 1629928 5726696 1630456 5747104 1630952 5748464 -1630456 5747104 1630704 5748256 1630952 5748464 1630496 5747152 -1630952 5748464 1631072 5748576 1630496 5747152 1630704 5748256 -1630456 5747104 1630704 5748256 1630496 5747152 1629928 5726696 -1630456 5747104 1630616 5748224 1630704 5748256 1630496 5747152 -1630456 5747104 1630616 5748224 1630496 5747152 1629928 5726696 -1630704 5748256 1630952 5748464 1630496 5747152 1630616 5748224 -1630456 5747104 1630488 5748256 1630616 5748224 1630496 5747152 -1630456 5747104 1630488 5748256 1630496 5747152 1629928 5726696 -1630616 5748224 1630704 5748256 1630496 5747152 1630488 5748256 -1630456 5747104 1630128 5746960 1630488 5748256 1630496 5747152 -1630456 5747104 1630128 5746960 1630496 5747152 1629928 5726696 -1630488 5748256 1630616 5748224 1630496 5747152 1630128 5746960 -1630456 5747104 1630416 5747064 1630128 5746960 1630496 5747152 -1630128 5746960 1630416 5748320 1630488 5748256 1630496 5747152 -1631072 5748576 1631096 5748624 1630496 5747152 1630952 5748464 -1631096 5748624 1629928 5726696 1630496 5747152 1631072 5748576 -1629928 5726696 1630544 5747200 1631096 5748624 1629944 5726624 -1630496 5747152 1630544 5747200 1629928 5726696 1630456 5747104 -1629928 5726696 1629872 5726768 1630456 5747104 1630544 5747200 -1629872 5726768 1630416 5747064 1630456 5747104 1630544 5747200 -1630456 5747104 1630496 5747152 1630544 5747200 1629872 5726768 -1630496 5747152 1631096 5748624 1630544 5747200 1630456 5747104 -1631096 5748624 1630544 5747200 1630496 5747152 1631072 5748576 -1631096 5748624 1629928 5726696 1630544 5747200 1631072 5748576 -1630496 5747152 1630952 5748464 1631072 5748576 1630544 5747200 -1630496 5747152 1630704 5748256 1630952 5748464 1630544 5747200 -1630496 5747152 1630616 5748224 1630704 5748256 1630544 5747200 -1630704 5748256 1630952 5748464 1630544 5747200 1630616 5748224 -1630496 5747152 1630488 5748256 1630616 5748224 1630544 5747200 -1630616 5748224 1630704 5748256 1630544 5747200 1630488 5748256 -1630496 5747152 1630128 5746960 1630488 5748256 1630544 5747200 -1630952 5748464 1631072 5748576 1630544 5747200 1630704 5748256 -1630544 5747200 1630456 5747104 1630496 5747152 1630488 5748256 -1631072 5748576 1631096 5748624 1630544 5747200 1630952 5748464 -1630544 5747200 1631096 5748624 1629928 5726696 1629872 5726768 -1629928 5726696 1630592 5747248 1631096 5748624 1629944 5726624 -1631096 5748624 1630592 5747248 1630544 5747200 1631072 5748576 -1630592 5747248 1629928 5726696 1630544 5747200 1631072 5748576 -1631096 5748624 1629928 5726696 1630592 5747248 1631072 5748576 -1630544 5747200 1630952 5748464 1631072 5748576 1630592 5747248 -1630544 5747200 1630952 5748464 1630592 5747248 1629928 5726696 -1631072 5748576 1631096 5748624 1630592 5747248 1630952 5748464 -1630544 5747200 1630704 5748256 1630952 5748464 1630592 5747248 -1630544 5747200 1630616 5748224 1630704 5748256 1630592 5747248 -1630544 5747200 1630488 5748256 1630616 5748224 1630592 5747248 -1630616 5748224 1630704 5748256 1630592 5747248 1630488 5748256 -1630544 5747200 1630488 5748256 1630592 5747248 1629928 5726696 -1630544 5747200 1630496 5747152 1630488 5748256 1630592 5747248 -1630704 5748256 1630952 5748464 1630592 5747248 1630616 5748224 -1630952 5748464 1631072 5748576 1630592 5747248 1630704 5748256 -1630544 5747200 1630592 5747248 1629928 5726696 1629872 5726768 -1630544 5747200 1630592 5747248 1629872 5726768 1630456 5747104 -1629872 5726768 1630416 5747064 1630456 5747104 1630592 5747248 -1630544 5747200 1630488 5748256 1630592 5747248 1630456 5747104 -1630592 5747248 1631096 5748624 1629928 5726696 1629872 5726768 -1630544 5747200 1630592 5747248 1630456 5747104 1630496 5747152 -1630592 5747248 1629928 5726696 1629872 5726768 1630456 5747104 -1630592 5747248 1630592 5747288 1630616 5748224 1630704 5748256 -1630592 5747288 1630488 5748256 1630616 5748224 1630704 5748256 -1630488 5748256 1630592 5747288 1630592 5747248 1630544 5747200 -1630488 5748256 1630616 5748224 1630592 5747288 1630544 5747200 -1630592 5747248 1630544 5747200 1630592 5747288 1630704 5748256 -1630488 5748256 1630592 5747288 1630544 5747200 1630496 5747152 -1630488 5748256 1630616 5748224 1630592 5747288 1630496 5747152 -1630592 5747288 1630592 5747248 1630544 5747200 1630496 5747152 -1630488 5748256 1630592 5747288 1630496 5747152 1630128 5746960 -1630488 5748256 1630616 5748224 1630592 5747288 1630128 5746960 -1630592 5747288 1630544 5747200 1630496 5747152 1630128 5746960 -1630496 5747152 1630456 5747104 1630128 5746960 1630592 5747288 -1630488 5748256 1630592 5747288 1630128 5746960 1630416 5748320 -1630592 5747248 1630592 5747288 1630704 5748256 1630952 5748464 -1630592 5747288 1630616 5748224 1630704 5748256 1630952 5748464 -1630592 5747248 1630544 5747200 1630592 5747288 1630952 5748464 -1630592 5747248 1630592 5747288 1630952 5748464 1631072 5748576 -1630592 5747248 1630592 5747288 1631072 5748576 1631096 5748624 -1630592 5747248 1630544 5747200 1630592 5747288 1631072 5748576 -1630592 5747288 1630704 5748256 1630952 5748464 1631072 5748576 -1630592 5747288 1630536 5747376 1630488 5748256 1630616 5748224 -1630592 5747288 1630536 5747376 1630616 5748224 1630704 5748256 -1630592 5747288 1630128 5746960 1630536 5747376 1630704 5748256 -1630536 5747376 1630488 5748256 1630616 5748224 1630704 5748256 -1630536 5747376 1630128 5746960 1630488 5748256 1630616 5748224 -1630592 5747288 1630536 5747376 1630704 5748256 1630952 5748464 -1630128 5746960 1630536 5747376 1630592 5747288 1630496 5747152 -1630128 5746960 1630488 5748256 1630536 5747376 1630496 5747152 -1630536 5747376 1630704 5748256 1630592 5747288 1630496 5747152 -1630592 5747288 1630544 5747200 1630496 5747152 1630536 5747376 -1630592 5747288 1630544 5747200 1630536 5747376 1630704 5748256 -1630592 5747288 1630592 5747248 1630544 5747200 1630536 5747376 -1630496 5747152 1630128 5746960 1630536 5747376 1630544 5747200 -1630128 5746960 1630536 5747376 1630496 5747152 1630456 5747104 -1630128 5746960 1630488 5748256 1630536 5747376 1630456 5747104 -1630536 5747376 1630544 5747200 1630496 5747152 1630456 5747104 -1630128 5746960 1630536 5747376 1630456 5747104 1630416 5747064 -1630128 5746960 1630488 5748256 1630536 5747376 1630416 5747064 -1630128 5746960 1630536 5747376 1630416 5747064 1630368 5747016 -1630536 5747376 1630496 5747152 1630456 5747104 1630416 5747064 -1630488 5748256 1630536 5747376 1630128 5746960 1630416 5748320 -1630536 5747376 1630416 5747064 1630128 5746960 1630416 5748320 -1630488 5748256 1630616 5748224 1630536 5747376 1630416 5748320 -1630128 5746960 1628960 5748368 1630416 5748320 1630536 5747376 -1630128 5746960 1630480 5747424 1630536 5747376 1630416 5747064 -1630128 5746960 1630416 5748320 1630480 5747424 1630416 5747064 -1630480 5747424 1630416 5748320 1630536 5747376 1630416 5747064 -1630128 5746960 1630480 5747424 1630416 5747064 1630368 5747016 -1630416 5748320 1630480 5747424 1630128 5746960 1628960 5748368 -1630416 5748320 1630536 5747376 1630480 5747424 1628960 5748368 -1630480 5747424 1630416 5747064 1630128 5746960 1628960 5748368 -1630128 5746960 1628776 5748096 1628960 5748368 1630480 5747424 -1630128 5746960 1628776 5748096 1630480 5747424 1630416 5747064 -1630128 5746960 1628504 5747840 1628776 5748096 1630480 5747424 -1628960 5748368 1630416 5748320 1630480 5747424 1628776 5748096 -1630416 5748320 1630480 5747424 1628960 5748368 1630336 5748456 -1630536 5747376 1630456 5747104 1630416 5747064 1630480 5747424 -1630416 5747064 1630128 5746960 1630480 5747424 1630456 5747104 -1630536 5747376 1630456 5747104 1630480 5747424 1630416 5748320 -1630536 5747376 1630496 5747152 1630456 5747104 1630480 5747424 -1630536 5747376 1630496 5747152 1630480 5747424 1630416 5748320 -1630536 5747376 1630544 5747200 1630496 5747152 1630480 5747424 -1630456 5747104 1630416 5747064 1630480 5747424 1630496 5747152 -1630536 5747376 1630480 5747424 1630416 5748320 1630488 5748256 -1630480 5747424 1628960 5748368 1630416 5748320 1630488 5748256 -1630536 5747376 1630480 5747424 1630488 5748256 1630616 5748224 -1630536 5747376 1630480 5747424 1630616 5748224 1630704 5748256 -1630536 5747376 1630480 5747424 1630704 5748256 1630592 5747288 -1630480 5747424 1630488 5748256 1630616 5748224 1630704 5748256 -1630536 5747376 1630496 5747152 1630480 5747424 1630704 5748256 -1630480 5747424 1630416 5748320 1630488 5748256 1630616 5748224 -1630128 5746960 1630408 5747440 1630480 5747424 1630416 5747064 -1630480 5747424 1630456 5747104 1630416 5747064 1630408 5747440 -1630408 5747440 1628776 5748096 1630480 5747424 1630456 5747104 -1630416 5747064 1630128 5746960 1630408 5747440 1630456 5747104 -1630128 5746960 1630408 5747440 1630416 5747064 1630368 5747016 -1630480 5747424 1630408 5747440 1628776 5748096 1628960 5748368 -1630480 5747424 1630456 5747104 1630408 5747440 1628960 5748368 -1630408 5747440 1630128 5746960 1628776 5748096 1628960 5748368 -1628776 5748096 1630408 5747440 1630128 5746960 1628504 5747840 -1630128 5746960 1628776 5748096 1630408 5747440 1630416 5747064 -1630480 5747424 1630408 5747440 1628960 5748368 1630416 5748320 -1630480 5747424 1630408 5747440 1630416 5748320 1630488 5748256 -1630480 5747424 1630456 5747104 1630408 5747440 1630488 5748256 -1630408 5747440 1628776 5748096 1628960 5748368 1630416 5748320 -1630408 5747440 1628960 5748368 1630416 5748320 1630488 5748256 -1628960 5748368 1630336 5748456 1630416 5748320 1630408 5747440 -1630480 5747424 1630496 5747152 1630456 5747104 1630408 5747440 -1630456 5747104 1630416 5747064 1630408 5747440 1630496 5747152 -1630480 5747424 1630496 5747152 1630408 5747440 1630488 5748256 -1630480 5747424 1630536 5747376 1630496 5747152 1630408 5747440 -1630480 5747424 1630536 5747376 1630408 5747440 1630488 5748256 -1630536 5747376 1630544 5747200 1630496 5747152 1630408 5747440 -1630496 5747152 1630456 5747104 1630408 5747440 1630536 5747376 -1630480 5747424 1630408 5747440 1630488 5748256 1630616 5748224 -1630408 5747440 1630416 5748320 1630488 5748256 1630616 5748224 -1630480 5747424 1630536 5747376 1630408 5747440 1630616 5748224 -1630480 5747424 1630408 5747440 1630616 5748224 1630704 5748256 -1630408 5747440 1630368 5747432 1628776 5748096 1628960 5748368 -1630408 5747440 1630368 5747432 1628960 5748368 1630416 5748320 -1630368 5747432 1628776 5748096 1628960 5748368 1630416 5748320 -1628776 5748096 1630368 5747432 1630128 5746960 1628504 5747840 -1630408 5747440 1630128 5746960 1630368 5747432 1630416 5748320 -1630128 5746960 1630368 5747432 1630408 5747440 1630416 5747064 -1630408 5747440 1630456 5747104 1630416 5747064 1630368 5747432 -1630408 5747440 1630496 5747152 1630456 5747104 1630368 5747432 -1630456 5747104 1630416 5747064 1630368 5747432 1630496 5747152 -1630128 5746960 1630368 5747432 1630416 5747064 1630368 5747016 -1630368 5747432 1630416 5748320 1630408 5747440 1630496 5747152 -1630416 5747064 1630368 5747016 1630368 5747432 1630456 5747104 -1630368 5747432 1630128 5746960 1628776 5748096 1628960 5748368 -1630128 5746960 1628776 5748096 1630368 5747432 1630368 5747016 -1630408 5747440 1630368 5747432 1630416 5748320 1630488 5748256 -1630408 5747440 1630368 5747432 1630488 5748256 1630616 5748224 -1630368 5747432 1628960 5748368 1630416 5748320 1630488 5748256 -1630408 5747440 1630496 5747152 1630368 5747432 1630488 5748256 -1628960 5748368 1630336 5748456 1630416 5748320 1630368 5747432 -1630408 5747440 1630536 5747376 1630496 5747152 1630368 5747432 -1630496 5747152 1630456 5747104 1630368 5747432 1630536 5747376 -1630408 5747440 1630536 5747376 1630368 5747432 1630488 5748256 -1630536 5747376 1630544 5747200 1630496 5747152 1630368 5747432 -1630408 5747440 1630480 5747424 1630536 5747376 1630368 5747432 -1630408 5747440 1630480 5747424 1630368 5747432 1630488 5748256 -1630536 5747376 1630496 5747152 1630368 5747432 1630480 5747424 -1630128 5746960 1630368 5747432 1630368 5747016 1630328 5746984 -1628776 5748096 1630328 5747400 1630128 5746960 1628504 5747840 -1630368 5747432 1630328 5747400 1628776 5748096 1628960 5748368 -1630368 5747432 1630328 5747400 1628960 5748368 1630416 5748320 -1630368 5747432 1630328 5747400 1630416 5748320 1630488 5748256 -1630328 5747400 1628776 5748096 1628960 5748368 1630416 5748320 -1630368 5747432 1630128 5746960 1630328 5747400 1630416 5748320 -1630128 5746960 1630328 5747400 1630368 5747432 1630368 5747016 -1630368 5747432 1630416 5747064 1630368 5747016 1630328 5747400 -1630368 5747432 1630456 5747104 1630416 5747064 1630328 5747400 -1630368 5747432 1630496 5747152 1630456 5747104 1630328 5747400 -1630368 5747432 1630536 5747376 1630496 5747152 1630328 5747400 -1630496 5747152 1630456 5747104 1630328 5747400 1630536 5747376 -1630416 5747064 1630368 5747016 1630328 5747400 1630456 5747104 -1630456 5747104 1630416 5747064 1630328 5747400 1630496 5747152 -1630328 5747400 1630416 5748320 1630368 5747432 1630536 5747376 -1630368 5747016 1630128 5746960 1630328 5747400 1630416 5747064 -1628960 5748368 1630336 5748456 1630416 5748320 1630328 5747400 -1630536 5747376 1630544 5747200 1630496 5747152 1630328 5747400 -1630536 5747376 1630544 5747200 1630328 5747400 1630368 5747432 -1630496 5747152 1630456 5747104 1630328 5747400 1630544 5747200 -1630536 5747376 1630592 5747288 1630544 5747200 1630328 5747400 -1630368 5747432 1630480 5747424 1630536 5747376 1630328 5747400 -1630536 5747376 1630544 5747200 1630328 5747400 1630480 5747424 -1630368 5747432 1630480 5747424 1630328 5747400 1630416 5748320 -1630368 5747432 1630408 5747440 1630480 5747424 1630328 5747400 -1630368 5747432 1630408 5747440 1630328 5747400 1630416 5748320 -1630480 5747424 1630536 5747376 1630328 5747400 1630408 5747440 -1630328 5747400 1630128 5746960 1628776 5748096 1628960 5748368 -1630128 5746960 1628776 5748096 1630328 5747400 1630368 5747016 -1630128 5746960 1630328 5747400 1630368 5747016 1630328 5746984 -1628776 5748096 1630264 5747304 1630128 5746960 1628504 5747840 -1630328 5747400 1630264 5747304 1628776 5748096 1628960 5748368 -1630328 5747400 1630264 5747304 1628960 5748368 1630416 5748320 -1630328 5747400 1630128 5746960 1630264 5747304 1628960 5748368 -1630128 5746960 1630264 5747304 1630328 5747400 1630368 5747016 -1630128 5746960 1628776 5748096 1630264 5747304 1630368 5747016 -1630328 5747400 1630416 5747064 1630368 5747016 1630264 5747304 -1630328 5747400 1630456 5747104 1630416 5747064 1630264 5747304 -1630328 5747400 1630496 5747152 1630456 5747104 1630264 5747304 -1630328 5747400 1630544 5747200 1630496 5747152 1630264 5747304 -1630456 5747104 1630416 5747064 1630264 5747304 1630496 5747152 -1630416 5747064 1630368 5747016 1630264 5747304 1630456 5747104 -1630264 5747304 1628960 5748368 1630328 5747400 1630496 5747152 -1630368 5747016 1630128 5746960 1630264 5747304 1630416 5747064 -1630264 5747304 1630128 5746960 1628776 5748096 1628960 5748368 -1630128 5746960 1630264 5747304 1630368 5747016 1630328 5746984 -1630128 5746960 1628776 5748096 1630264 5747304 1630328 5746984 -1630128 5746960 1630264 5747304 1630328 5746984 1630280 5746960 -1630128 5746960 1628776 5748096 1630264 5747304 1630280 5746960 -1630128 5746960 1630264 5747304 1630280 5746960 1630192 5746944 -1630264 5747304 1630416 5747064 1630368 5747016 1630328 5746984 -1630264 5747304 1630368 5747016 1630328 5746984 1630280 5746960 -1630128 5746960 1630216 5747200 1630264 5747304 1630280 5746960 -1630128 5746960 1628776 5748096 1630216 5747200 1630280 5746960 -1630264 5747304 1630328 5746984 1630280 5746960 1630216 5747200 -1630280 5746960 1630128 5746960 1630216 5747200 1630328 5746984 -1630128 5746960 1630216 5747200 1630280 5746960 1630192 5746944 -1630216 5747200 1630328 5746984 1630280 5746960 1630192 5746944 -1630128 5746960 1628776 5748096 1630216 5747200 1630192 5746944 -1628776 5748096 1630216 5747200 1630128 5746960 1628504 5747840 -1630264 5747304 1630216 5747200 1628776 5748096 1628960 5748368 -1630216 5747200 1628776 5748096 1630264 5747304 1630328 5746984 -1630264 5747304 1630368 5747016 1630328 5746984 1630216 5747200 -1630328 5746984 1630280 5746960 1630216 5747200 1630368 5747016 -1630264 5747304 1630416 5747064 1630368 5747016 1630216 5747200 -1630264 5747304 1630456 5747104 1630416 5747064 1630216 5747200 -1630264 5747304 1630496 5747152 1630456 5747104 1630216 5747200 -1630416 5747064 1630368 5747016 1630216 5747200 1630456 5747104 -1630264 5747304 1630456 5747104 1630216 5747200 1628776 5748096 -1630368 5747016 1630328 5746984 1630216 5747200 1630416 5747064 -1630216 5747200 1630184 5747136 1628776 5748096 1630264 5747304 -1630128 5746960 1630184 5747136 1630216 5747200 1630192 5746944 -1630128 5746960 1628776 5748096 1630184 5747136 1630192 5746944 -1630184 5747136 1628776 5748096 1630216 5747200 1630192 5746944 -1630216 5747200 1630280 5746960 1630192 5746944 1630184 5747136 -1630216 5747200 1630328 5746984 1630280 5746960 1630184 5747136 -1630216 5747200 1630328 5746984 1630184 5747136 1628776 5748096 -1630192 5746944 1630128 5746960 1630184 5747136 1630280 5746960 -1630216 5747200 1630368 5747016 1630328 5746984 1630184 5747136 -1630328 5746984 1630280 5746960 1630184 5747136 1630368 5747016 -1630216 5747200 1630368 5747016 1630184 5747136 1628776 5748096 -1630280 5746960 1630192 5746944 1630184 5747136 1630328 5746984 -1628776 5748096 1630184 5747136 1630128 5746960 1628504 5747840 -1630216 5747200 1630416 5747064 1630368 5747016 1630184 5747136 -1630128 5746960 1630128 5747016 1630184 5747136 1630192 5746944 -1630128 5747016 1628776 5748096 1630184 5747136 1630192 5746944 -1630128 5746960 1628776 5748096 1630128 5747016 1630192 5746944 -1630184 5747136 1630280 5746960 1630192 5746944 1630128 5747016 -1630184 5747136 1630280 5746960 1630128 5747016 1628776 5748096 -1630192 5746944 1630128 5746960 1630128 5747016 1630280 5746960 -1630184 5747136 1630128 5747016 1628776 5748096 1630216 5747200 -1630184 5747136 1630328 5746984 1630280 5746960 1630128 5747016 -1628776 5748096 1630128 5747016 1630128 5746960 1628504 5747840 -1630128 5746960 1628168 5747408 1628504 5747840 1630128 5747016 -1628776 5748096 1630184 5747136 1630128 5747016 1628504 5747840 -1630128 5747016 1630192 5746944 1630128 5746960 1628168 5747408 -1628168 5747408 1628304 5747744 1628504 5747840 1630128 5747016 -1630128 5746960 1628120 5747304 1628168 5747408 1630128 5747016 -1628504 5747840 1628776 5748096 1630128 5747016 1628168 5747408 -1623896 5745384 1627776 5745184 1629584 5726976 1623640 5745232 -1623896 5745384 1630192 5746944 1627776 5745184 1623640 5745232 -1627776 5745184 1630192 5746944 1629584 5726976 1623640 5745232 -1629584 5726976 1623224 5745048 1623640 5745232 1627776 5745184 -1629584 5726976 1623224 5745048 1627776 5745184 1630192 5746944 -1629584 5726976 1623128 5745016 1623224 5745048 1627776 5745184 -1629584 5726976 1623128 5745016 1627776 5745184 1630192 5746944 -1629584 5726976 1615632 5735512 1623128 5745016 1627776 5745184 -1623224 5745048 1623528 5745200 1623640 5745232 1627776 5745184 -1623224 5745048 1623640 5745232 1627776 5745184 1623128 5745016 -1623896 5745384 1627776 5745184 1623640 5745232 1623792 5745368 -1623640 5745232 1623896 5745384 1627776 5745184 1623224 5745048 -1629584 5726976 1627776 5745184 1630192 5746944 1630280 5746960 -1629584 5726976 1623128 5745016 1627776 5745184 1630280 5746960 -1629584 5726976 1627776 5745184 1630280 5746960 1630328 5746984 -1629584 5726976 1623128 5745016 1627776 5745184 1630328 5746984 -1629584 5726976 1627776 5745184 1630328 5746984 1629776 5726856 -1627776 5745184 1623896 5745384 1630192 5746944 1630280 5746960 -1627776 5745184 1630192 5746944 1630280 5746960 1630328 5746984 -1630192 5746944 1627776 5745184 1623896 5745384 1624528 5745760 -1627776 5745184 1623640 5745232 1623896 5745384 1624528 5745760 -1630192 5746944 1627776 5745184 1624528 5745760 1624712 5745880 -1630192 5746944 1627776 5745184 1624712 5745880 1627512 5746960 -1627776 5745184 1624528 5745760 1624712 5745880 1627512 5746960 -1630192 5746944 1630280 5746960 1627776 5745184 1627512 5746960 -1624712 5745880 1627416 5746952 1627512 5746960 1627776 5745184 -1627512 5746960 1630192 5746944 1627776 5745184 1627416 5746952 -1624712 5745880 1627416 5746952 1627776 5745184 1624528 5745760 -1630192 5746944 1627776 5745184 1627512 5746960 1630128 5746960 -1627776 5745184 1627416 5746952 1627512 5746960 1630128 5746960 -1627512 5746960 1627800 5747032 1630128 5746960 1627776 5745184 -1627512 5746960 1627800 5747032 1627776 5745184 1627416 5746952 -1627800 5747032 1628016 5747192 1630128 5746960 1627776 5745184 -1628016 5747192 1628120 5747304 1630128 5746960 1627776 5745184 -1627800 5747032 1628016 5747192 1627776 5745184 1627512 5746960 -1630192 5746944 1630280 5746960 1627776 5745184 1630128 5746960 -1630128 5746960 1630192 5746944 1627776 5745184 1628016 5747192 -1623896 5745384 1624032 5745472 1624528 5745760 1627776 5745184 -1623896 5745384 1624032 5745472 1627776 5745184 1623640 5745232 -1624032 5745472 1624224 5745656 1624528 5745760 1627776 5745184 -1627776 5745184 1624032 5745472 1624528 5745760 1624712 5745880 -1624712 5745880 1624976 5746096 1627416 5746952 1627776 5745184 -1624712 5745880 1624976 5746096 1627776 5745184 1624528 5745760 -1627416 5746952 1627512 5746960 1627776 5745184 1624976 5746096 -1624976 5746096 1625232 5746360 1627416 5746952 1627776 5745184 -1627416 5746952 1627512 5746960 1627776 5745184 1625232 5746360 -1625232 5746360 1627312 5746976 1627416 5746952 1627776 5745184 -1625232 5746360 1625376 5746584 1627312 5746976 1627776 5745184 -1627416 5746952 1627512 5746960 1627776 5745184 1627312 5746976 -1625232 5746360 1625376 5746584 1627776 5745184 1624976 5746096 -1627312 5746976 1627416 5746952 1627776 5745184 1625376 5746584 -1624976 5746096 1625232 5746360 1627776 5745184 1624712 5745880 -1625376 5746584 1627136 5747072 1627312 5746976 1627776 5745184 -1625376 5746584 1627136 5747072 1627776 5745184 1625232 5746360 -1627312 5746976 1627416 5746952 1627776 5745184 1627136 5747072 -1625376 5746584 1626744 5747272 1627136 5747072 1627776 5745184 -1627776 5745184 1627840 5745184 1629584 5726976 1623128 5745016 -1629584 5726976 1627840 5745184 1630328 5746984 1629776 5726856 -1630328 5746984 1627840 5745184 1627776 5745184 1630280 5746960 -1627840 5745184 1629584 5726976 1627776 5745184 1630280 5746960 -1630328 5746984 1629584 5726976 1627840 5745184 1630280 5746960 -1627776 5745184 1630192 5746944 1630280 5746960 1627840 5745184 -1627776 5745184 1630192 5746944 1627840 5745184 1629584 5726976 -1630280 5746960 1630328 5746984 1627840 5745184 1630192 5746944 -1627776 5745184 1630128 5746960 1630192 5746944 1627840 5745184 -1627776 5745184 1630128 5746960 1627840 5745184 1629584 5726976 -1630192 5746944 1630280 5746960 1627840 5745184 1630128 5746960 -1627776 5745184 1628016 5747192 1630128 5746960 1627840 5745184 -1628016 5747192 1628120 5747304 1630128 5746960 1627840 5745184 -1627776 5745184 1628016 5747192 1627840 5745184 1629584 5726976 -1627776 5745184 1627800 5747032 1628016 5747192 1627840 5745184 -1627776 5745184 1627800 5747032 1627840 5745184 1629584 5726976 -1627776 5745184 1627512 5746960 1627800 5747032 1627840 5745184 -1627776 5745184 1627512 5746960 1627840 5745184 1629584 5726976 -1627776 5745184 1627416 5746952 1627512 5746960 1627840 5745184 -1627800 5747032 1628016 5747192 1627840 5745184 1627512 5746960 -1630128 5746960 1630192 5746944 1627840 5745184 1628016 5747192 -1628016 5747192 1630128 5746960 1627840 5745184 1627800 5747032 -1630128 5746960 1627880 5745216 1628016 5747192 1628120 5747304 -1627840 5745184 1627880 5745216 1630128 5746960 1630192 5746944 -1627840 5745184 1628016 5747192 1627880 5745216 1630192 5746944 -1627880 5745216 1628016 5747192 1630128 5746960 1630192 5746944 -1627840 5745184 1627880 5745216 1630192 5746944 1630280 5746960 -1627840 5745184 1628016 5747192 1627880 5745216 1630280 5746960 -1627840 5745184 1627880 5745216 1630280 5746960 1630328 5746984 -1627840 5745184 1628016 5747192 1627880 5745216 1630328 5746984 -1627880 5745216 1630128 5746960 1630192 5746944 1630280 5746960 -1627840 5745184 1627880 5745216 1630328 5746984 1629584 5726976 -1627840 5745184 1628016 5747192 1627880 5745216 1629584 5726976 -1630328 5746984 1629776 5726856 1629584 5726976 1627880 5745216 -1627840 5745184 1627880 5745216 1629584 5726976 1627776 5745184 -1630328 5746984 1630368 5747016 1629776 5726856 1627880 5745216 -1627880 5745216 1630280 5746960 1630328 5746984 1629776 5726856 -1629584 5726976 1627840 5745184 1627880 5745216 1629776 5726856 -1627880 5745216 1630192 5746944 1630280 5746960 1630328 5746984 -1628016 5747192 1627880 5745216 1627840 5745184 1627800 5747032 -1627880 5745216 1629584 5726976 1627840 5745184 1627800 5747032 -1628016 5747192 1630128 5746960 1627880 5745216 1627800 5747032 -1627840 5745184 1627512 5746960 1627800 5747032 1627880 5745216 -1627840 5745184 1627512 5746960 1627880 5745216 1629584 5726976 -1627840 5745184 1627776 5745184 1627512 5746960 1627880 5745216 -1627840 5745184 1627776 5745184 1627880 5745216 1629584 5726976 -1627776 5745184 1627416 5746952 1627512 5746960 1627880 5745216 -1627512 5746960 1627800 5747032 1627880 5745216 1627776 5745184 -1627800 5747032 1628016 5747192 1627880 5745216 1627512 5746960 -1630128 5746960 1627936 5745296 1628016 5747192 1628120 5747304 -1627880 5745216 1627936 5745296 1630128 5746960 1630192 5746944 -1627880 5745216 1628016 5747192 1627936 5745296 1630192 5746944 -1628016 5747192 1627936 5745296 1627880 5745216 1627800 5747032 -1628016 5747192 1630128 5746960 1627936 5745296 1627800 5747032 -1627936 5745296 1630192 5746944 1627880 5745216 1627800 5747032 -1627936 5745296 1628016 5747192 1630128 5746960 1630192 5746944 -1627880 5745216 1627936 5745296 1630192 5746944 1630280 5746960 -1627936 5745296 1630128 5746960 1630192 5746944 1630280 5746960 -1627880 5745216 1627800 5747032 1627936 5745296 1630280 5746960 -1627880 5745216 1627936 5745296 1630280 5746960 1630328 5746984 -1627880 5745216 1627512 5746960 1627800 5747032 1627936 5745296 -1627880 5745216 1627512 5746960 1627936 5745296 1630280 5746960 -1627800 5747032 1628016 5747192 1627936 5745296 1627512 5746960 -1627880 5745216 1627776 5745184 1627512 5746960 1627936 5745296 -1627776 5745184 1627416 5746952 1627512 5746960 1627936 5745296 -1627880 5745216 1627840 5745184 1627776 5745184 1627936 5745296 -1627880 5745216 1627776 5745184 1627936 5745296 1630280 5746960 -1627776 5745184 1627416 5746952 1627936 5745296 1627880 5745216 -1627776 5745184 1627312 5746976 1627416 5746952 1627936 5745296 -1627512 5746960 1627800 5747032 1627936 5745296 1627416 5746952 -1628016 5747192 1627984 5745352 1627936 5745296 1627800 5747032 -1627984 5745352 1630128 5746960 1627936 5745296 1627800 5747032 -1628016 5747192 1630128 5746960 1627984 5745352 1627800 5747032 -1630128 5746960 1627984 5745352 1628016 5747192 1628120 5747304 -1627936 5745296 1627512 5746960 1627800 5747032 1627984 5745352 -1627936 5745296 1627512 5746960 1627984 5745352 1630128 5746960 -1627800 5747032 1628016 5747192 1627984 5745352 1627512 5746960 -1627936 5745296 1627984 5745352 1630128 5746960 1630192 5746944 -1627936 5745296 1627512 5746960 1627984 5745352 1630192 5746944 -1627984 5745352 1628016 5747192 1630128 5746960 1630192 5746944 -1627936 5745296 1627984 5745352 1630192 5746944 1630280 5746960 -1627936 5745296 1627512 5746960 1627984 5745352 1630280 5746960 -1627984 5745352 1630128 5746960 1630192 5746944 1630280 5746960 -1627936 5745296 1627984 5745352 1630280 5746960 1627880 5745216 -1627936 5745296 1627512 5746960 1627984 5745352 1627880 5745216 -1627984 5745352 1630192 5746944 1630280 5746960 1627880 5745216 -1630280 5746960 1630328 5746984 1627880 5745216 1627984 5745352 -1627936 5745296 1627416 5746952 1627512 5746960 1627984 5745352 -1627936 5745296 1627416 5746952 1627984 5745352 1627880 5745216 -1627936 5745296 1627776 5745184 1627416 5746952 1627984 5745352 -1627936 5745296 1627776 5745184 1627984 5745352 1627880 5745216 -1627512 5746960 1627800 5747032 1627984 5745352 1627416 5746952 -1627936 5745296 1627880 5745216 1627776 5745184 1627984 5745352 -1627776 5745184 1627312 5746976 1627416 5746952 1627984 5745352 -1627416 5746952 1627512 5746960 1627984 5745352 1627776 5745184 -1627984 5745352 1628032 5745400 1630128 5746960 1630192 5746944 -1627984 5745352 1628016 5747192 1628032 5745400 1630192 5746944 -1628016 5747192 1628032 5745400 1627984 5745352 1627800 5747032 -1627984 5745352 1627512 5746960 1627800 5747032 1628032 5745400 -1628032 5745400 1630192 5746944 1627984 5745352 1627512 5746960 -1627800 5747032 1628016 5747192 1628032 5745400 1627512 5746960 -1630128 5746960 1628032 5745400 1628016 5747192 1628120 5747304 -1627984 5745352 1627416 5746952 1627512 5746960 1628032 5745400 -1627512 5746960 1627800 5747032 1628032 5745400 1627416 5746952 -1627984 5745352 1627416 5746952 1628032 5745400 1630192 5746944 -1627984 5745352 1628032 5745400 1630192 5746944 1630280 5746960 -1628032 5745400 1630128 5746960 1630192 5746944 1630280 5746960 -1627984 5745352 1627416 5746952 1628032 5745400 1630280 5746960 -1627984 5745352 1628032 5745400 1630280 5746960 1627880 5745216 -1627984 5745352 1627416 5746952 1628032 5745400 1627880 5745216 -1628032 5745400 1630192 5746944 1630280 5746960 1627880 5745216 -1628032 5745400 1628016 5747192 1630128 5746960 1630192 5746944 -1628016 5747192 1630128 5746960 1628032 5745400 1627800 5747032 -1627984 5745352 1628032 5745400 1627880 5745216 1627936 5745296 -1630280 5746960 1630328 5746984 1627880 5745216 1628032 5745400 -1627984 5745352 1627776 5745184 1627416 5746952 1628032 5745400 -1630128 5746960 1628064 5745440 1628016 5747192 1628120 5747304 -1628032 5745400 1628064 5745440 1630128 5746960 1630192 5746944 -1628032 5745400 1628064 5745440 1630192 5746944 1630280 5746960 -1628032 5745400 1628064 5745440 1630280 5746960 1627880 5745216 -1628064 5745440 1630128 5746960 1630192 5746944 1630280 5746960 -1628032 5745400 1628016 5747192 1628064 5745440 1630280 5746960 -1628016 5747192 1628064 5745440 1628032 5745400 1627800 5747032 -1628032 5745400 1627512 5746960 1627800 5747032 1628064 5745440 -1628032 5745400 1627416 5746952 1627512 5746960 1628064 5745440 -1627512 5746960 1627800 5747032 1628064 5745440 1627416 5746952 -1628016 5747192 1630128 5746960 1628064 5745440 1627800 5747032 -1628032 5745400 1627984 5745352 1627416 5746952 1628064 5745440 -1627416 5746952 1627512 5746960 1628064 5745440 1627984 5745352 -1628064 5745440 1630280 5746960 1628032 5745400 1627984 5745352 -1627800 5747032 1628016 5747192 1628064 5745440 1627512 5746960 -1628064 5745440 1628016 5747192 1630128 5746960 1630192 5746944 -1627984 5745352 1627776 5745184 1627416 5746952 1628064 5745440 -1630128 5746960 1628088 5745496 1628016 5747192 1628120 5747304 -1628016 5747192 1628088 5745496 1628064 5745440 1627800 5747032 -1628016 5747192 1630128 5746960 1628088 5745496 1627800 5747032 -1628064 5745440 1627512 5746960 1627800 5747032 1628088 5745496 -1628064 5745440 1627416 5746952 1627512 5746960 1628088 5745496 -1628064 5745440 1627984 5745352 1627416 5746952 1628088 5745496 -1627416 5746952 1627512 5746960 1628088 5745496 1627984 5745352 -1627800 5747032 1628016 5747192 1628088 5745496 1627512 5746960 -1628064 5745440 1628032 5745400 1627984 5745352 1628088 5745496 -1627984 5745352 1627416 5746952 1628088 5745496 1628032 5745400 -1627512 5746960 1627800 5747032 1628088 5745496 1627416 5746952 -1628064 5745440 1628088 5745496 1630128 5746960 1630192 5746944 -1628088 5745496 1628016 5747192 1630128 5746960 1630192 5746944 -1628064 5745440 1628088 5745496 1630192 5746944 1630280 5746960 -1628088 5745496 1630192 5746944 1628064 5745440 1628032 5745400 -1627984 5745352 1627776 5745184 1627416 5746952 1628088 5745496 -1627984 5745352 1627776 5745184 1628088 5745496 1628032 5745400 -1627416 5746952 1627512 5746960 1628088 5745496 1627776 5745184 -1627984 5745352 1627936 5745296 1627776 5745184 1628088 5745496 -1627776 5745184 1627312 5746976 1627416 5746952 1628088 5745496 -1630128 5746960 1628104 5745544 1628016 5747192 1628120 5747304 -1628088 5745496 1628104 5745544 1630128 5746960 1630192 5746944 -1628088 5745496 1628016 5747192 1628104 5745544 1630192 5746944 -1628016 5747192 1628104 5745544 1628088 5745496 1627800 5747032 -1628088 5745496 1627512 5746960 1627800 5747032 1628104 5745544 -1628104 5745544 1630192 5746944 1628088 5745496 1627512 5746960 -1627800 5747032 1628016 5747192 1628104 5745544 1627512 5746960 -1630128 5746960 1630192 5746944 1628104 5745544 1628120 5747304 -1630128 5746960 1628104 5745544 1628120 5747304 1628168 5747408 -1628088 5745496 1627416 5746952 1627512 5746960 1628104 5745544 -1628088 5745496 1627776 5745184 1627416 5746952 1628104 5745544 -1627512 5746960 1627800 5747032 1628104 5745544 1627416 5746952 -1628088 5745496 1627776 5745184 1628104 5745544 1630192 5746944 -1627416 5746952 1627512 5746960 1628104 5745544 1627776 5745184 -1628088 5745496 1628104 5745544 1630192 5746944 1628064 5745440 -1628104 5745544 1627800 5747032 1628016 5747192 1628120 5747304 -1627776 5745184 1627312 5746976 1627416 5746952 1628104 5745544 -1628088 5745496 1627984 5745352 1627776 5745184 1628104 5745544 -1628088 5745496 1628032 5745400 1627984 5745352 1628104 5745544 -1627776 5745184 1627416 5746952 1628104 5745544 1627984 5745352 -1628088 5745496 1627984 5745352 1628104 5745544 1630192 5746944 -1627984 5745352 1627936 5745296 1627776 5745184 1628104 5745544 -1627512 5746960 1628096 5745568 1628104 5745544 1627416 5746952 -1628104 5745544 1628096 5745568 1627800 5747032 1628016 5747192 -1628104 5745544 1627776 5745184 1627416 5746952 1628096 5745568 -1628104 5745544 1627984 5745352 1627776 5745184 1628096 5745568 -1627416 5746952 1627512 5746960 1628096 5745568 1627776 5745184 -1627984 5745352 1627936 5745296 1627776 5745184 1628096 5745568 -1627776 5745184 1627416 5746952 1628096 5745568 1627984 5745352 -1628096 5745568 1628016 5747192 1628104 5745544 1627984 5745352 -1628104 5745544 1628096 5745568 1628016 5747192 1628120 5747304 -1628104 5745544 1628096 5745568 1628120 5747304 1630128 5746960 -1628096 5745568 1627800 5747032 1628016 5747192 1628120 5747304 -1628104 5745544 1628096 5745568 1630128 5746960 1630192 5746944 -1628120 5747304 1628168 5747408 1630128 5746960 1628096 5745568 -1628104 5745544 1627984 5745352 1628096 5745568 1630128 5746960 -1628096 5745568 1628016 5747192 1628120 5747304 1630128 5746960 -1628096 5745568 1627512 5746960 1627800 5747032 1628016 5747192 -1627512 5746960 1627800 5747032 1628096 5745568 1627416 5746952 -1627776 5745184 1627312 5746976 1627416 5746952 1628096 5745568 -1628104 5745544 1628088 5745496 1627984 5745352 1628096 5745568 -1628088 5745496 1628032 5745400 1627984 5745352 1628096 5745568 -1627984 5745352 1627776 5745184 1628096 5745568 1628032 5745400 -1628088 5745496 1628064 5745440 1628032 5745400 1628096 5745568 -1628104 5745544 1628088 5745496 1628096 5745568 1630128 5746960 -1628088 5745496 1628032 5745400 1628096 5745568 1628104 5745544 -1628096 5745568 1628080 5745592 1627416 5746952 1627512 5746960 -1627776 5745184 1628080 5745592 1628096 5745568 1627984 5745352 -1628096 5745568 1628032 5745400 1627984 5745352 1628080 5745592 -1628096 5745568 1628088 5745496 1628032 5745400 1628080 5745592 -1628032 5745400 1627984 5745352 1628080 5745592 1628088 5745496 -1627776 5745184 1628080 5745592 1627984 5745352 1627936 5745296 -1628088 5745496 1628064 5745440 1628032 5745400 1628080 5745592 -1628088 5745496 1628064 5745440 1628080 5745592 1628096 5745568 -1628032 5745400 1627984 5745352 1628080 5745592 1628064 5745440 -1627776 5745184 1628080 5745592 1627936 5745296 1627880 5745216 -1627984 5745352 1627936 5745296 1628080 5745592 1628032 5745400 -1628096 5745568 1628088 5745496 1628080 5745592 1627512 5746960 -1628096 5745568 1628080 5745592 1627512 5746960 1627800 5747032 -1628080 5745592 1627416 5746952 1627512 5746960 1627800 5747032 -1628096 5745568 1628080 5745592 1627800 5747032 1628016 5747192 -1628096 5745568 1628080 5745592 1628016 5747192 1628120 5747304 -1628096 5745568 1628080 5745592 1628120 5747304 1630128 5746960 -1628096 5745568 1628080 5745592 1630128 5746960 1628104 5745544 -1628080 5745592 1628016 5747192 1628120 5747304 1630128 5746960 -1628120 5747304 1628168 5747408 1630128 5746960 1628080 5745592 -1628080 5745592 1627800 5747032 1628016 5747192 1628120 5747304 -1628096 5745568 1628088 5745496 1628080 5745592 1630128 5746960 -1628080 5745592 1627512 5746960 1627800 5747032 1628016 5747192 -1627416 5746952 1628080 5745592 1627776 5745184 1627312 5746976 -1628080 5745592 1627776 5745184 1627416 5746952 1627512 5746960 -1627776 5745184 1627416 5746952 1628080 5745592 1627936 5745296 -1628096 5745568 1628104 5745544 1628088 5745496 1628080 5745592 -1627416 5746952 1627992 5745592 1627776 5745184 1627312 5746976 -1627992 5745592 1628080 5745592 1627776 5745184 1627312 5746976 -1628080 5745592 1627992 5745592 1627416 5746952 1627512 5746960 -1628080 5745592 1627992 5745592 1627512 5746960 1627800 5747032 -1628080 5745592 1627992 5745592 1627800 5747032 1628016 5747192 -1627992 5745592 1627416 5746952 1627512 5746960 1627800 5747032 -1628080 5745592 1627776 5745184 1627992 5745592 1627800 5747032 -1627776 5745184 1627992 5745592 1628080 5745592 1627936 5745296 -1628080 5745592 1627984 5745352 1627936 5745296 1627992 5745592 -1627776 5745184 1627992 5745592 1627936 5745296 1627880 5745216 -1628080 5745592 1628032 5745400 1627984 5745352 1627992 5745592 -1628080 5745592 1628064 5745440 1628032 5745400 1627992 5745592 -1627984 5745352 1627936 5745296 1627992 5745592 1628032 5745400 -1628080 5745592 1628088 5745496 1628064 5745440 1627992 5745592 -1628080 5745592 1628096 5745568 1628088 5745496 1627992 5745592 -1628064 5745440 1628032 5745400 1627992 5745592 1628088 5745496 -1628088 5745496 1628064 5745440 1627992 5745592 1628096 5745568 -1628032 5745400 1627984 5745352 1627992 5745592 1628064 5745440 -1627776 5745184 1627312 5746976 1627992 5745592 1627936 5745296 -1627992 5745592 1627800 5747032 1628080 5745592 1628096 5745568 -1627936 5745296 1627776 5745184 1627992 5745592 1627984 5745352 -1627416 5746952 1627512 5746960 1627992 5745592 1627312 5746976 -1627776 5745184 1627136 5747072 1627312 5746976 1627992 5745592 -1628096 5745568 1628104 5745544 1628088 5745496 1627992 5745592 -1627992 5745592 1627912 5745568 1627312 5746976 1627416 5746952 -1627776 5745184 1627912 5745568 1627992 5745592 1627936 5745296 -1627776 5745184 1627912 5745568 1627936 5745296 1627880 5745216 -1627912 5745568 1627776 5745184 1627312 5746976 1627416 5746952 -1627776 5745184 1627312 5746976 1627912 5745568 1627936 5745296 -1627992 5745592 1627984 5745352 1627936 5745296 1627912 5745568 -1627992 5745592 1628032 5745400 1627984 5745352 1627912 5745568 -1627992 5745592 1628064 5745440 1628032 5745400 1627912 5745568 -1627992 5745592 1628088 5745496 1628064 5745440 1627912 5745568 -1628032 5745400 1627984 5745352 1627912 5745568 1628064 5745440 -1627936 5745296 1627776 5745184 1627912 5745568 1627984 5745352 -1627984 5745352 1627936 5745296 1627912 5745568 1628032 5745400 -1627992 5745592 1627912 5745568 1627416 5746952 1627512 5746960 -1627912 5745568 1627312 5746976 1627416 5746952 1627512 5746960 -1627992 5745592 1627912 5745568 1627512 5746960 1627800 5747032 -1627992 5745592 1628064 5745440 1627912 5745568 1627512 5746960 -1627312 5746976 1627912 5745568 1627776 5745184 1627136 5747072 -1627312 5746976 1627416 5746952 1627912 5745568 1627136 5747072 -1627912 5745568 1627936 5745296 1627776 5745184 1627136 5747072 -1627776 5745184 1625376 5746584 1627136 5747072 1627912 5745568 -1627776 5745184 1627880 5745552 1627912 5745568 1627936 5745296 -1627776 5745184 1627880 5745552 1627936 5745296 1627880 5745216 -1627776 5745184 1627136 5747072 1627880 5745552 1627936 5745296 -1627912 5745568 1627984 5745352 1627936 5745296 1627880 5745552 -1627880 5745552 1627136 5747072 1627912 5745568 1627984 5745352 -1627936 5745296 1627776 5745184 1627880 5745552 1627984 5745352 -1627912 5745568 1628032 5745400 1627984 5745352 1627880 5745552 -1627912 5745568 1628064 5745440 1628032 5745400 1627880 5745552 -1627984 5745352 1627936 5745296 1627880 5745552 1628032 5745400 -1627912 5745568 1628032 5745400 1627880 5745552 1627136 5747072 -1627912 5745568 1627880 5745552 1627136 5747072 1627312 5746976 -1627912 5745568 1627880 5745552 1627312 5746976 1627416 5746952 -1627912 5745568 1627880 5745552 1627416 5746952 1627512 5746960 -1627880 5745552 1627312 5746976 1627416 5746952 1627512 5746960 -1627912 5745568 1628032 5745400 1627880 5745552 1627512 5746960 -1627880 5745552 1627776 5745184 1627136 5747072 1627312 5746976 -1627912 5745568 1627880 5745552 1627512 5746960 1627992 5745592 -1627880 5745552 1627136 5747072 1627312 5746976 1627416 5746952 -1627136 5747072 1627880 5745552 1627776 5745184 1625376 5746584 -1627776 5745184 1625232 5746360 1625376 5746584 1627880 5745552 -1627880 5745552 1627936 5745296 1627776 5745184 1625376 5746584 -1627136 5747072 1627312 5746976 1627880 5745552 1625376 5746584 -1627136 5747072 1627880 5745552 1625376 5746584 1626744 5747272 -1625376 5746584 1627792 5745496 1627776 5745184 1625232 5746360 -1627776 5745184 1627792 5745496 1627880 5745552 1627936 5745296 -1627776 5745184 1627792 5745496 1627936 5745296 1627880 5745216 -1627776 5745184 1627792 5745496 1627880 5745216 1627840 5745184 -1627792 5745496 1625376 5746584 1627880 5745552 1627936 5745296 -1627792 5745496 1627880 5745552 1627936 5745296 1627880 5745216 -1625376 5746584 1627880 5745552 1627792 5745496 1625232 5746360 -1627792 5745496 1627880 5745216 1627776 5745184 1625232 5746360 -1627776 5745184 1624976 5746096 1625232 5746360 1627792 5745496 -1627880 5745552 1627984 5745352 1627936 5745296 1627792 5745496 -1627880 5745552 1627984 5745352 1627792 5745496 1625376 5746584 -1627936 5745296 1627880 5745216 1627792 5745496 1627984 5745352 -1627880 5745552 1628032 5745400 1627984 5745352 1627792 5745496 -1627880 5745552 1627792 5745496 1625376 5746584 1627136 5747072 -1627880 5745552 1627984 5745352 1627792 5745496 1627136 5747072 -1627792 5745496 1625232 5746360 1625376 5746584 1627136 5747072 -1627880 5745552 1627792 5745496 1627136 5747072 1627312 5746976 -1627880 5745552 1627984 5745352 1627792 5745496 1627312 5746976 -1627880 5745552 1627792 5745496 1627312 5746976 1627416 5746952 -1627880 5745552 1627984 5745352 1627792 5745496 1627416 5746952 -1627880 5745552 1627792 5745496 1627416 5746952 1627512 5746960 -1627792 5745496 1627136 5747072 1627312 5746976 1627416 5746952 -1625376 5746584 1626744 5747272 1627136 5747072 1627792 5745496 -1627792 5745496 1625376 5746584 1627136 5747072 1627312 5746976 -1627792 5745496 1627752 5745472 1625232 5746360 1625376 5746584 -1627792 5745496 1627752 5745472 1625376 5746584 1627136 5747072 -1627752 5745472 1625232 5746360 1625376 5746584 1627136 5747072 -1627792 5745496 1627776 5745184 1627752 5745472 1627136 5747072 -1627776 5745184 1627752 5745472 1627792 5745496 1627880 5745216 -1627776 5745184 1627752 5745472 1627880 5745216 1627840 5745184 -1627792 5745496 1627936 5745296 1627880 5745216 1627752 5745472 -1627792 5745496 1627984 5745352 1627936 5745296 1627752 5745472 -1627752 5745472 1627136 5747072 1627792 5745496 1627936 5745296 -1627880 5745216 1627776 5745184 1627752 5745472 1627936 5745296 -1627752 5745472 1627776 5745184 1625232 5746360 1625376 5746584 -1627776 5745184 1625232 5746360 1627752 5745472 1627880 5745216 -1625232 5746360 1627752 5745472 1627776 5745184 1624976 5746096 -1625376 5746584 1626744 5747272 1627136 5747072 1627752 5745472 -1627792 5745496 1627752 5745472 1627136 5747072 1627312 5746976 -1627752 5745472 1625376 5746584 1627136 5747072 1627312 5746976 -1627792 5745496 1627936 5745296 1627752 5745472 1627312 5746976 -1627792 5745496 1627752 5745472 1627312 5746976 1627416 5746952 -1627792 5745496 1627936 5745296 1627752 5745472 1627416 5746952 -1627792 5745496 1627752 5745472 1627416 5746952 1627880 5745552 -1627752 5745472 1627136 5747072 1627312 5746976 1627416 5746952 -1627752 5745472 1627720 5745432 1625232 5746360 1625376 5746584 -1627752 5745472 1627720 5745432 1625376 5746584 1627136 5747072 -1627752 5745472 1627720 5745432 1627136 5747072 1627312 5746976 -1627720 5745432 1625376 5746584 1627136 5747072 1627312 5746976 -1627720 5745432 1625232 5746360 1625376 5746584 1627136 5747072 -1627752 5745472 1627776 5745184 1627720 5745432 1627312 5746976 -1627776 5745184 1627720 5745432 1627752 5745472 1627880 5745216 -1627776 5745184 1627720 5745432 1627880 5745216 1627840 5745184 -1627752 5745472 1627936 5745296 1627880 5745216 1627720 5745432 -1627752 5745472 1627792 5745496 1627936 5745296 1627720 5745432 -1627720 5745432 1627312 5746976 1627752 5745472 1627936 5745296 -1627880 5745216 1627776 5745184 1627720 5745432 1627936 5745296 -1627720 5745432 1627776 5745184 1625232 5746360 1625376 5746584 -1625232 5746360 1627720 5745432 1627776 5745184 1624976 5746096 -1625232 5746360 1625376 5746584 1627720 5745432 1624976 5746096 -1627776 5745184 1624976 5746096 1627720 5745432 1627880 5745216 -1625376 5746584 1626744 5747272 1627136 5747072 1627720 5745432 -1627776 5745184 1624712 5745880 1624976 5746096 1627720 5745432 -1627752 5745472 1627720 5745432 1627312 5746976 1627416 5746952 -1627720 5745432 1627696 5745392 1624976 5746096 1625232 5746360 -1627720 5745432 1627696 5745392 1625232 5746360 1625376 5746584 -1627720 5745432 1627696 5745392 1625376 5746584 1627136 5747072 -1627720 5745432 1627696 5745392 1627136 5747072 1627312 5746976 -1627720 5745432 1627696 5745392 1627312 5746976 1627752 5745472 -1627696 5745392 1625376 5746584 1627136 5747072 1627312 5746976 -1627696 5745392 1625232 5746360 1625376 5746584 1627136 5747072 -1627720 5745432 1627776 5745184 1627696 5745392 1627312 5746976 -1627696 5745392 1624976 5746096 1625232 5746360 1625376 5746584 -1627776 5745184 1627696 5745392 1627720 5745432 1627880 5745216 -1627776 5745184 1627696 5745392 1627880 5745216 1627840 5745184 -1627720 5745432 1627936 5745296 1627880 5745216 1627696 5745392 -1627720 5745432 1627752 5745472 1627936 5745296 1627696 5745392 -1627696 5745392 1627312 5746976 1627720 5745432 1627936 5745296 -1627880 5745216 1627776 5745184 1627696 5745392 1627936 5745296 -1627696 5745392 1627776 5745184 1624976 5746096 1625232 5746360 -1627776 5745184 1624976 5746096 1627696 5745392 1627880 5745216 -1625376 5746584 1626744 5747272 1627136 5747072 1627696 5745392 -1624976 5746096 1627696 5745392 1627776 5745184 1624712 5745880 -1627696 5745392 1627688 5745368 1624976 5746096 1625232 5746360 -1627696 5745392 1627688 5745368 1625232 5746360 1625376 5746584 -1627696 5745392 1627688 5745368 1625376 5746584 1627136 5747072 -1627688 5745368 1624976 5746096 1625232 5746360 1625376 5746584 -1627696 5745392 1627776 5745184 1627688 5745368 1625376 5746584 -1627776 5745184 1627688 5745368 1627696 5745392 1627880 5745216 -1627776 5745184 1627688 5745368 1627880 5745216 1627840 5745184 -1627776 5745184 1624976 5746096 1627688 5745368 1627880 5745216 -1627696 5745392 1627936 5745296 1627880 5745216 1627688 5745368 -1627696 5745392 1627720 5745432 1627936 5745296 1627688 5745368 -1627688 5745368 1625376 5746584 1627696 5745392 1627936 5745296 -1627880 5745216 1627776 5745184 1627688 5745368 1627936 5745296 -1627688 5745368 1627776 5745184 1624976 5746096 1625232 5746360 -1624976 5746096 1627688 5745368 1627776 5745184 1624712 5745880 -1627776 5745184 1624528 5745760 1624712 5745880 1627688 5745368 -1627688 5745368 1627880 5745216 1627776 5745184 1624712 5745880 -1624976 5746096 1625232 5746360 1627688 5745368 1624712 5745880 -1624712 5745880 1627680 5745320 1627776 5745184 1624528 5745760 -1627776 5745184 1627680 5745320 1627688 5745368 1627880 5745216 -1627776 5745184 1627680 5745320 1627880 5745216 1627840 5745184 -1627680 5745320 1624712 5745880 1627688 5745368 1627880 5745216 -1627776 5745184 1624712 5745880 1627680 5745320 1627880 5745216 -1627688 5745368 1627936 5745296 1627880 5745216 1627680 5745320 -1627688 5745368 1627680 5745320 1624712 5745880 1624976 5746096 -1627688 5745368 1627880 5745216 1627680 5745320 1624976 5746096 -1627680 5745320 1627776 5745184 1624712 5745880 1624976 5746096 -1627688 5745368 1627680 5745320 1624976 5746096 1625232 5746360 -1627688 5745368 1627880 5745216 1627680 5745320 1625232 5746360 -1627688 5745368 1627680 5745320 1625232 5746360 1625376 5746584 -1627680 5745320 1624712 5745880 1624976 5746096 1625232 5746360 -1624712 5745880 1627696 5745264 1627776 5745184 1624528 5745760 -1627696 5745264 1627680 5745320 1627776 5745184 1624528 5745760 -1624712 5745880 1627680 5745320 1627696 5745264 1624528 5745760 -1627680 5745320 1627696 5745264 1624712 5745880 1624976 5746096 -1627696 5745264 1624528 5745760 1624712 5745880 1624976 5746096 -1627680 5745320 1627776 5745184 1627696 5745264 1624976 5746096 -1627776 5745184 1627696 5745264 1627680 5745320 1627880 5745216 -1627776 5745184 1624528 5745760 1627696 5745264 1627880 5745216 -1627776 5745184 1627696 5745264 1627880 5745216 1627840 5745184 -1627680 5745320 1627688 5745368 1627880 5745216 1627696 5745264 -1627696 5745264 1624976 5746096 1627680 5745320 1627688 5745368 -1627880 5745216 1627776 5745184 1627696 5745264 1627688 5745368 -1627688 5745368 1627936 5745296 1627880 5745216 1627696 5745264 -1627688 5745368 1627936 5745296 1627696 5745264 1627680 5745320 -1627880 5745216 1627776 5745184 1627696 5745264 1627936 5745296 -1627688 5745368 1627696 5745392 1627936 5745296 1627696 5745264 -1627776 5745184 1624032 5745472 1624528 5745760 1627696 5745264 -1627680 5745320 1627696 5745264 1624976 5746096 1625232 5746360 -1627776 5745184 1627728 5745216 1627696 5745264 1627880 5745216 -1627776 5745184 1624528 5745760 1627728 5745216 1627880 5745216 -1627776 5745184 1627728 5745216 1627880 5745216 1627840 5745184 -1627728 5745216 1624528 5745760 1627696 5745264 1627880 5745216 -1627696 5745264 1627728 5745216 1624528 5745760 1624712 5745880 -1627728 5745216 1627776 5745184 1624528 5745760 1624712 5745880 -1627696 5745264 1627728 5745216 1624712 5745880 1624976 5746096 -1627696 5745264 1627880 5745216 1627728 5745216 1624712 5745880 -1627696 5745264 1627936 5745296 1627880 5745216 1627728 5745216 -1624528 5745760 1627728 5745216 1627776 5745184 1624032 5745472 -1624528 5745760 1624712 5745880 1627728 5745216 1624032 5745472 -1627728 5745216 1627880 5745216 1627776 5745184 1624032 5745472 -1627776 5745184 1623896 5745384 1624032 5745472 1627728 5745216 -1627776 5745184 1623896 5745384 1627728 5745216 1627880 5745216 -1627776 5745184 1623640 5745232 1623896 5745384 1627728 5745216 -1627776 5745184 1623640 5745232 1627728 5745216 1627880 5745216 -1623640 5745232 1623792 5745368 1623896 5745384 1627728 5745216 -1627776 5745184 1623224 5745048 1623640 5745232 1627728 5745216 -1623896 5745384 1624032 5745472 1627728 5745216 1623640 5745232 -1624528 5745760 1627728 5745216 1624032 5745472 1624224 5745656 -1624032 5745472 1624528 5745760 1627728 5745216 1623896 5745384 -1627880 5745216 1628128 5742888 1629776 5726856 1629584 5726976 -1628128 5742888 1630328 5746984 1629776 5726856 1629584 5726976 -1629776 5726856 1628128 5742888 1630328 5746984 1630368 5747016 -1629776 5726856 1629584 5726976 1628128 5742888 1630368 5747016 -1628128 5742888 1627880 5745216 1630328 5746984 1630368 5747016 -1630328 5746984 1628128 5742888 1627880 5745216 1630280 5746960 -1630328 5746984 1630368 5747016 1628128 5742888 1630280 5746960 -1627880 5745216 1628128 5742888 1629584 5726976 1627840 5745184 -1628128 5742888 1629776 5726856 1629584 5726976 1627840 5745184 -1629584 5726976 1627776 5745184 1627840 5745184 1628128 5742888 -1629584 5726976 1623128 5745016 1627776 5745184 1628128 5742888 -1629584 5726976 1623128 5745016 1628128 5742888 1629776 5726856 -1629584 5726976 1615632 5735512 1623128 5745016 1628128 5742888 -1623128 5745016 1627776 5745184 1628128 5742888 1615632 5735512 -1629584 5726976 1629536 5726952 1615632 5735512 1628128 5742888 -1629536 5726952 1615632 5735416 1615632 5735512 1628128 5742888 -1629536 5726952 1615632 5735416 1628128 5742888 1629584 5726976 -1629584 5726976 1629536 5726952 1628128 5742888 1629776 5726856 -1615632 5735512 1623128 5745016 1628128 5742888 1615632 5735416 -1623128 5745016 1623224 5745048 1627776 5745184 1628128 5742888 -1623128 5745016 1623224 5745048 1628128 5742888 1615632 5735512 -1623224 5745048 1623640 5745232 1627776 5745184 1628128 5742888 -1623224 5745048 1623640 5745232 1628128 5742888 1623128 5745016 -1623224 5745048 1623528 5745200 1623640 5745232 1628128 5742888 -1623640 5745232 1627728 5745216 1627776 5745184 1628128 5742888 -1623640 5745232 1623896 5745384 1627728 5745216 1628128 5742888 -1623640 5745232 1623896 5745384 1628128 5742888 1623224 5745048 -1623640 5745232 1623792 5745368 1623896 5745384 1628128 5742888 -1627728 5745216 1627776 5745184 1628128 5742888 1623896 5745384 -1627840 5745184 1627880 5745216 1628128 5742888 1627776 5745184 -1629536 5726952 1629480 5726888 1615632 5735416 1628128 5742888 -1627880 5745216 1628032 5745400 1630280 5746960 1628128 5742888 -1627880 5745216 1627984 5745352 1628032 5745400 1628128 5742888 -1628032 5745400 1628064 5745440 1630280 5746960 1628128 5742888 -1628064 5745440 1630192 5746944 1630280 5746960 1628128 5742888 -1628064 5745440 1630192 5746944 1628128 5742888 1628032 5745400 -1628064 5745440 1628088 5745496 1630192 5746944 1628128 5742888 -1630280 5746960 1630328 5746984 1628128 5742888 1630192 5746944 -1628032 5745400 1628064 5745440 1628128 5742888 1627880 5745216 -1615632 5735512 1622528 5744936 1623128 5745016 1628128 5742888 -1623128 5745016 1623224 5745048 1628128 5742888 1622528 5744936 -1615632 5735512 1622528 5744936 1628128 5742888 1615632 5735416 -1622528 5744936 1622680 5744976 1623128 5745016 1628128 5742888 -1629776 5726856 1628128 5742888 1630368 5747016 1629872 5726768 -1629776 5726856 1629584 5726976 1628128 5742888 1629872 5726768 -1628128 5742888 1630328 5746984 1630368 5747016 1629872 5726768 -1630368 5747016 1630416 5747064 1629872 5726768 1628128 5742888 -1630368 5747016 1630416 5747064 1628128 5742888 1630328 5746984 -1630416 5747064 1630456 5747104 1629872 5726768 1628128 5742888 -1630456 5747104 1630592 5747248 1629872 5726768 1628128 5742888 -1630456 5747104 1630544 5747200 1630592 5747248 1628128 5742888 -1630456 5747104 1630592 5747248 1628128 5742888 1630416 5747064 -1629872 5726768 1629776 5726856 1628128 5742888 1630592 5747248 -1630416 5747064 1630456 5747104 1628128 5742888 1630368 5747016 -1627776 5745184 1627840 5745184 1628128 5742888 1627728 5745216 -1627880 5745216 1628032 5745400 1628128 5742888 1627840 5745184 -1615632 5735512 1622352 5744936 1622528 5744936 1628128 5742888 -1623896 5745384 1624032 5745472 1627728 5745216 1628128 5742888 -1623896 5745384 1624032 5745472 1628128 5742888 1623640 5745232 -1627728 5745216 1627776 5745184 1628128 5742888 1624032 5745472 -1624032 5745472 1624528 5745760 1627728 5745216 1628128 5742888 -1624528 5745760 1624712 5745880 1627728 5745216 1628128 5742888 -1627728 5745216 1627776 5745184 1628128 5742888 1624528 5745760 -1624032 5745472 1624528 5745760 1628128 5742888 1623896 5745384 -1624032 5745472 1624224 5745656 1624528 5745760 1628128 5742888 -1630592 5747248 1629928 5726696 1629872 5726768 1628128 5742888 -1630592 5747248 1629928 5726696 1628128 5742888 1630456 5747104 -1630592 5747248 1631096 5748624 1629928 5726696 1628128 5742888 -1629872 5726768 1629776 5726856 1628128 5742888 1629928 5726696 -1630592 5747248 1628168 5742888 1628128 5742888 1630456 5747104 -1630592 5747248 1629928 5726696 1628168 5742888 1630456 5747104 -1628168 5742888 1629928 5726696 1628128 5742888 1630456 5747104 -1630592 5747248 1628168 5742888 1630456 5747104 1630544 5747200 -1629928 5726696 1628168 5742888 1630592 5747248 1631096 5748624 -1628128 5742888 1630416 5747064 1630456 5747104 1628168 5742888 -1628128 5742888 1630416 5747064 1628168 5742888 1629928 5726696 -1630456 5747104 1630592 5747248 1628168 5742888 1630416 5747064 -1628128 5742888 1630368 5747016 1630416 5747064 1628168 5742888 -1628128 5742888 1630368 5747016 1628168 5742888 1629928 5726696 -1628128 5742888 1630328 5746984 1630368 5747016 1628168 5742888 -1628128 5742888 1630280 5746960 1630328 5746984 1628168 5742888 -1628128 5742888 1630280 5746960 1628168 5742888 1629928 5726696 -1630328 5746984 1630368 5747016 1628168 5742888 1630280 5746960 -1628128 5742888 1630192 5746944 1630280 5746960 1628168 5742888 -1628128 5742888 1628064 5745440 1630192 5746944 1628168 5742888 -1630280 5746960 1630328 5746984 1628168 5742888 1630192 5746944 -1628128 5742888 1628064 5745440 1628168 5742888 1629928 5726696 -1628128 5742888 1628032 5745400 1628064 5745440 1628168 5742888 -1628064 5745440 1630192 5746944 1628168 5742888 1628032 5745400 -1628128 5742888 1628032 5745400 1628168 5742888 1629928 5726696 -1628064 5745440 1628088 5745496 1630192 5746944 1628168 5742888 -1630192 5746944 1630280 5746960 1628168 5742888 1628064 5745440 -1628128 5742888 1627880 5745216 1628032 5745400 1628168 5742888 -1628128 5742888 1627880 5745216 1628168 5742888 1629928 5726696 -1627880 5745216 1627984 5745352 1628032 5745400 1628168 5742888 -1628032 5745400 1628064 5745440 1628168 5742888 1627880 5745216 -1630416 5747064 1630456 5747104 1628168 5742888 1630368 5747016 -1630368 5747016 1630416 5747064 1628168 5742888 1630328 5746984 -1628128 5742888 1627840 5745184 1627880 5745216 1628168 5742888 -1628128 5742888 1627840 5745184 1628168 5742888 1629928 5726696 -1628128 5742888 1627776 5745184 1627840 5745184 1628168 5742888 -1627880 5745216 1628032 5745400 1628168 5742888 1627840 5745184 -1628128 5742888 1628168 5742888 1629928 5726696 1629872 5726768 -1628128 5742888 1627840 5745184 1628168 5742888 1629872 5726768 -1628168 5742888 1630592 5747248 1629928 5726696 1629872 5726768 -1628128 5742888 1628168 5742888 1629872 5726768 1629776 5726856 -1628128 5742888 1628168 5742888 1629776 5726856 1629584 5726976 -1628128 5742888 1627840 5745184 1628168 5742888 1629584 5726976 -1628128 5742888 1628168 5742888 1629584 5726976 1629536 5726952 -1628168 5742888 1629872 5726768 1629776 5726856 1629584 5726976 -1628168 5742888 1629928 5726696 1629872 5726768 1629776 5726856 -1630592 5747248 1628224 5742936 1628168 5742888 1630456 5747104 -1628224 5742936 1629928 5726696 1628168 5742888 1630456 5747104 -1628168 5742888 1628224 5742936 1629928 5726696 1629872 5726768 -1628168 5742888 1630456 5747104 1628224 5742936 1629872 5726768 -1628168 5742888 1630416 5747064 1630456 5747104 1628224 5742936 -1628168 5742888 1630416 5747064 1628224 5742936 1629872 5726768 -1630456 5747104 1630592 5747248 1628224 5742936 1630416 5747064 -1630592 5747248 1628224 5742936 1630456 5747104 1630544 5747200 -1629928 5726696 1628224 5742936 1630592 5747248 1631096 5748624 -1628168 5742888 1630368 5747016 1630416 5747064 1628224 5742936 -1628168 5742888 1630368 5747016 1628224 5742936 1629872 5726768 -1630416 5747064 1630456 5747104 1628224 5742936 1630368 5747016 -1628168 5742888 1630328 5746984 1630368 5747016 1628224 5742936 -1628168 5742888 1630328 5746984 1628224 5742936 1629872 5726768 -1628168 5742888 1630280 5746960 1630328 5746984 1628224 5742936 -1628168 5742888 1630192 5746944 1630280 5746960 1628224 5742936 -1628168 5742888 1630192 5746944 1628224 5742936 1629872 5726768 -1630280 5746960 1630328 5746984 1628224 5742936 1630192 5746944 -1628168 5742888 1628064 5745440 1630192 5746944 1628224 5742936 -1628168 5742888 1628032 5745400 1628064 5745440 1628224 5742936 -1630192 5746944 1630280 5746960 1628224 5742936 1628064 5745440 -1628168 5742888 1628032 5745400 1628224 5742936 1629872 5726768 -1628168 5742888 1627880 5745216 1628032 5745400 1628224 5742936 -1628032 5745400 1628064 5745440 1628224 5742936 1627880 5745216 -1628168 5742888 1627880 5745216 1628224 5742936 1629872 5726768 -1627880 5745216 1627984 5745352 1628032 5745400 1628224 5742936 -1628064 5745440 1628088 5745496 1630192 5746944 1628224 5742936 -1628064 5745440 1630192 5746944 1628224 5742936 1628032 5745400 -1628168 5742888 1627840 5745184 1627880 5745216 1628224 5742936 -1628168 5742888 1627840 5745184 1628224 5742936 1629872 5726768 -1627880 5745216 1628032 5745400 1628224 5742936 1627840 5745184 -1630368 5747016 1630416 5747064 1628224 5742936 1630328 5746984 -1630328 5746984 1630368 5747016 1628224 5742936 1630280 5746960 -1628224 5742936 1630592 5747248 1629928 5726696 1629872 5726768 -1630592 5747248 1629928 5726696 1628224 5742936 1630456 5747104 -1628168 5742888 1628128 5742888 1627840 5745184 1628224 5742936 -1628168 5742888 1628128 5742888 1628224 5742936 1629872 5726768 -1628128 5742888 1627776 5745184 1627840 5745184 1628224 5742936 -1627840 5745184 1627880 5745216 1628224 5742936 1627776 5745184 -1628128 5742888 1627728 5745216 1627776 5745184 1628224 5742936 -1628128 5742888 1627776 5745184 1628224 5742936 1628168 5742888 -1628168 5742888 1628224 5742936 1629872 5726768 1629776 5726856 -1628168 5742888 1628128 5742888 1628224 5742936 1629776 5726856 -1628168 5742888 1628224 5742936 1629776 5726856 1629584 5726976 -1628168 5742888 1628224 5742936 1629584 5726976 1628128 5742888 -1628168 5742888 1628128 5742888 1628224 5742936 1629584 5726976 -1628224 5742936 1629928 5726696 1629872 5726768 1629776 5726856 -1628224 5742936 1629872 5726768 1629776 5726856 1629584 5726976 -1629928 5726696 1628272 5742976 1630592 5747248 1631096 5748624 -1628224 5742936 1628272 5742976 1629928 5726696 1629872 5726768 -1628224 5742936 1630592 5747248 1628272 5742976 1629872 5726768 -1628272 5742976 1630592 5747248 1629928 5726696 1629872 5726768 -1628224 5742936 1628272 5742976 1629872 5726768 1629776 5726856 -1628224 5742936 1630592 5747248 1628272 5742976 1629776 5726856 -1628272 5742976 1629928 5726696 1629872 5726768 1629776 5726856 -1630592 5747248 1628272 5742976 1628224 5742936 1630456 5747104 -1630592 5747248 1629928 5726696 1628272 5742976 1630456 5747104 -1628224 5742936 1630416 5747064 1630456 5747104 1628272 5742976 -1628272 5742976 1629776 5726856 1628224 5742936 1630416 5747064 -1628224 5742936 1630368 5747016 1630416 5747064 1628272 5742976 -1630416 5747064 1630456 5747104 1628272 5742976 1630368 5747016 -1628224 5742936 1630368 5747016 1628272 5742976 1629776 5726856 -1630592 5747248 1628272 5742976 1630456 5747104 1630544 5747200 -1628224 5742936 1630328 5746984 1630368 5747016 1628272 5742976 -1628224 5742936 1630328 5746984 1628272 5742976 1629776 5726856 -1630368 5747016 1630416 5747064 1628272 5742976 1630328 5746984 -1628224 5742936 1630280 5746960 1630328 5746984 1628272 5742976 -1628224 5742936 1630280 5746960 1628272 5742976 1629776 5726856 -1628224 5742936 1630192 5746944 1630280 5746960 1628272 5742976 -1628224 5742936 1628064 5745440 1630192 5746944 1628272 5742976 -1628224 5742936 1628064 5745440 1628272 5742976 1629776 5726856 -1630192 5746944 1630280 5746960 1628272 5742976 1628064 5745440 -1628064 5745440 1628088 5745496 1630192 5746944 1628272 5742976 -1628224 5742936 1628032 5745400 1628064 5745440 1628272 5742976 -1628224 5742936 1627880 5745216 1628032 5745400 1628272 5742976 -1628064 5745440 1630192 5746944 1628272 5742976 1628032 5745400 -1628224 5742936 1627880 5745216 1628272 5742976 1629776 5726856 -1627880 5745216 1627984 5745352 1628032 5745400 1628272 5742976 -1628224 5742936 1627840 5745184 1627880 5745216 1628272 5742976 -1627880 5745216 1628032 5745400 1628272 5742976 1627840 5745184 -1628224 5742936 1627840 5745184 1628272 5742976 1629776 5726856 -1628032 5745400 1628064 5745440 1628272 5742976 1627880 5745216 -1628224 5742936 1627776 5745184 1627840 5745184 1628272 5742976 -1628224 5742936 1627776 5745184 1628272 5742976 1629776 5726856 -1627840 5745184 1627880 5745216 1628272 5742976 1627776 5745184 -1628224 5742936 1628128 5742888 1627776 5745184 1628272 5742976 -1628224 5742936 1628128 5742888 1628272 5742976 1629776 5726856 -1627776 5745184 1627840 5745184 1628272 5742976 1628128 5742888 -1630328 5746984 1630368 5747016 1628272 5742976 1630280 5746960 -1630280 5746960 1630328 5746984 1628272 5742976 1630192 5746944 -1630456 5747104 1630592 5747248 1628272 5742976 1630416 5747064 -1628128 5742888 1627728 5745216 1627776 5745184 1628272 5742976 -1628224 5742936 1628168 5742888 1628128 5742888 1628272 5742976 -1628224 5742936 1628272 5742976 1629776 5726856 1629584 5726976 -1628224 5742936 1628128 5742888 1628272 5742976 1629584 5726976 -1628224 5742936 1628272 5742976 1629584 5726976 1628168 5742888 -1629584 5726976 1628128 5742888 1628168 5742888 1628272 5742976 -1628224 5742936 1628128 5742888 1628272 5742976 1628168 5742888 -1628272 5742976 1629872 5726768 1629776 5726856 1629584 5726976 -1628272 5742976 1629776 5726856 1629584 5726976 1628168 5742888 -1630592 5747248 1628304 5743016 1628272 5742976 1630456 5747104 -1630592 5747248 1629928 5726696 1628304 5743016 1630456 5747104 -1628272 5742976 1628304 5743016 1629928 5726696 1629872 5726768 -1628304 5743016 1630592 5747248 1629928 5726696 1629872 5726768 -1628304 5743016 1629872 5726768 1628272 5742976 1630456 5747104 -1630592 5747248 1628304 5743016 1630456 5747104 1630544 5747200 -1629928 5726696 1628304 5743016 1630592 5747248 1631096 5748624 -1628272 5742976 1628304 5743016 1629872 5726768 1629776 5726856 -1628304 5743016 1629928 5726696 1629872 5726768 1629776 5726856 -1628272 5742976 1630456 5747104 1628304 5743016 1629776 5726856 -1628272 5742976 1628304 5743016 1629776 5726856 1629584 5726976 -1628272 5742976 1630416 5747064 1630456 5747104 1628304 5743016 -1630456 5747104 1630592 5747248 1628304 5743016 1630416 5747064 -1628272 5742976 1630368 5747016 1630416 5747064 1628304 5743016 -1628272 5742976 1630368 5747016 1628304 5743016 1629776 5726856 -1628272 5742976 1630328 5746984 1630368 5747016 1628304 5743016 -1630368 5747016 1630416 5747064 1628304 5743016 1630328 5746984 -1628272 5742976 1630328 5746984 1628304 5743016 1629776 5726856 -1628272 5742976 1630280 5746960 1630328 5746984 1628304 5743016 -1628272 5742976 1630280 5746960 1628304 5743016 1629776 5726856 -1630328 5746984 1630368 5747016 1628304 5743016 1630280 5746960 -1628272 5742976 1630192 5746944 1630280 5746960 1628304 5743016 -1628272 5742976 1630192 5746944 1628304 5743016 1629776 5726856 -1628272 5742976 1628064 5745440 1630192 5746944 1628304 5743016 -1628272 5742976 1628032 5745400 1628064 5745440 1628304 5743016 -1628272 5742976 1628032 5745400 1628304 5743016 1629776 5726856 -1628064 5745440 1630192 5746944 1628304 5743016 1628032 5745400 -1628064 5745440 1628088 5745496 1630192 5746944 1628304 5743016 -1628272 5742976 1627880 5745216 1628032 5745400 1628304 5743016 -1628272 5742976 1627840 5745184 1627880 5745216 1628304 5743016 -1628032 5745400 1628064 5745440 1628304 5743016 1627880 5745216 -1628272 5742976 1627840 5745184 1628304 5743016 1629776 5726856 -1627880 5745216 1627984 5745352 1628032 5745400 1628304 5743016 -1628272 5742976 1627776 5745184 1627840 5745184 1628304 5743016 -1627840 5745184 1627880 5745216 1628304 5743016 1627776 5745184 -1628272 5742976 1627776 5745184 1628304 5743016 1629776 5726856 -1627880 5745216 1628032 5745400 1628304 5743016 1627840 5745184 -1628272 5742976 1628128 5742888 1627776 5745184 1628304 5743016 -1628272 5742976 1628128 5742888 1628304 5743016 1629776 5726856 -1627776 5745184 1627840 5745184 1628304 5743016 1628128 5742888 -1628272 5742976 1628224 5742936 1628128 5742888 1628304 5743016 -1628272 5742976 1628224 5742936 1628304 5743016 1629776 5726856 -1628128 5742888 1627776 5745184 1628304 5743016 1628224 5742936 -1630280 5746960 1630328 5746984 1628304 5743016 1630192 5746944 -1630192 5746944 1630280 5746960 1628304 5743016 1628064 5745440 -1630416 5747064 1630456 5747104 1628304 5743016 1630368 5747016 -1628128 5742888 1627728 5745216 1627776 5745184 1628304 5743016 -1628224 5742936 1628168 5742888 1628128 5742888 1628304 5743016 -1628304 5743016 1628320 5743048 1630280 5746960 1630328 5746984 -1628304 5743016 1630192 5746944 1628320 5743048 1630328 5746984 -1628320 5743048 1630192 5746944 1630280 5746960 1630328 5746984 -1628304 5743016 1628320 5743048 1630328 5746984 1630368 5747016 -1628304 5743016 1630192 5746944 1628320 5743048 1630368 5747016 -1628304 5743016 1628320 5743048 1630368 5747016 1630416 5747064 -1628304 5743016 1630192 5746944 1628320 5743048 1630416 5747064 -1628320 5743048 1630328 5746984 1630368 5747016 1630416 5747064 -1628320 5743048 1630280 5746960 1630328 5746984 1630368 5747016 -1630192 5746944 1628320 5743048 1628304 5743016 1628064 5745440 -1628320 5743048 1630416 5747064 1628304 5743016 1628064 5745440 -1628304 5743016 1628032 5745400 1628064 5745440 1628320 5743048 -1628304 5743016 1628032 5745400 1628320 5743048 1630416 5747064 -1628304 5743016 1627880 5745216 1628032 5745400 1628320 5743048 -1628304 5743016 1627880 5745216 1628320 5743048 1630416 5747064 -1627880 5745216 1627984 5745352 1628032 5745400 1628320 5743048 -1628032 5745400 1628064 5745440 1628320 5743048 1627880 5745216 -1630192 5746944 1628320 5743048 1628064 5745440 1628088 5745496 -1628304 5743016 1627840 5745184 1627880 5745216 1628320 5743048 -1628304 5743016 1627776 5745184 1627840 5745184 1628320 5743048 -1628304 5743016 1627776 5745184 1628320 5743048 1630416 5747064 -1627880 5745216 1628032 5745400 1628320 5743048 1627840 5745184 -1628304 5743016 1628128 5742888 1627776 5745184 1628320 5743048 -1627776 5745184 1627840 5745184 1628320 5743048 1628128 5742888 -1628304 5743016 1628128 5742888 1628320 5743048 1630416 5747064 -1627840 5745184 1627880 5745216 1628320 5743048 1627776 5745184 -1630192 5746944 1630280 5746960 1628320 5743048 1628064 5745440 -1628304 5743016 1628224 5742936 1628128 5742888 1628320 5743048 -1628304 5743016 1628224 5742936 1628320 5743048 1630416 5747064 -1628128 5742888 1627776 5745184 1628320 5743048 1628224 5742936 -1628304 5743016 1628272 5742976 1628224 5742936 1628320 5743048 -1628304 5743016 1628272 5742976 1628320 5743048 1630416 5747064 -1628224 5742936 1628128 5742888 1628320 5743048 1628272 5742976 -1628064 5745440 1630192 5746944 1628320 5743048 1628032 5745400 -1628304 5743016 1628320 5743048 1630416 5747064 1630456 5747104 -1628304 5743016 1628320 5743048 1630456 5747104 1630592 5747248 -1628304 5743016 1628272 5742976 1628320 5743048 1630592 5747248 -1628304 5743016 1628320 5743048 1630592 5747248 1629928 5726696 -1628320 5743048 1630456 5747104 1630592 5747248 1629928 5726696 -1628304 5743016 1628320 5743048 1629928 5726696 1629872 5726768 -1628304 5743016 1628272 5742976 1628320 5743048 1629928 5726696 -1628320 5743048 1630368 5747016 1630416 5747064 1630456 5747104 -1630456 5747104 1630544 5747200 1630592 5747248 1628320 5743048 -1630592 5747248 1631096 5748624 1629928 5726696 1628320 5743048 -1628320 5743048 1630416 5747064 1630456 5747104 1630592 5747248 -1628128 5742888 1627728 5745216 1627776 5745184 1628320 5743048 -1628224 5742936 1628168 5742888 1628128 5742888 1628320 5743048 -1630192 5746944 1628320 5743088 1628064 5745440 1628088 5745496 -1628320 5743048 1628320 5743088 1630192 5746944 1630280 5746960 -1628320 5743048 1628320 5743088 1630280 5746960 1630328 5746984 -1628320 5743048 1628064 5745440 1628320 5743088 1630328 5746984 -1628320 5743088 1630192 5746944 1630280 5746960 1630328 5746984 -1628320 5743088 1628064 5745440 1630192 5746944 1630280 5746960 -1628320 5743048 1628320 5743088 1630328 5746984 1630368 5747016 -1628064 5745440 1628320 5743088 1628320 5743048 1628032 5745400 -1628320 5743048 1627880 5745216 1628032 5745400 1628320 5743088 -1628320 5743048 1627840 5745184 1627880 5745216 1628320 5743088 -1627880 5745216 1627984 5745352 1628032 5745400 1628320 5743088 -1627880 5745216 1628032 5745400 1628320 5743088 1627840 5745184 -1628320 5743048 1627776 5745184 1627840 5745184 1628320 5743088 -1628320 5743048 1628128 5742888 1627776 5745184 1628320 5743088 -1627840 5745184 1627880 5745216 1628320 5743088 1627776 5745184 -1628320 5743048 1628224 5742936 1628128 5742888 1628320 5743088 -1628128 5742888 1627776 5745184 1628320 5743088 1628224 5742936 -1627776 5745184 1627840 5745184 1628320 5743088 1628128 5742888 -1628320 5743088 1630328 5746984 1628320 5743048 1628224 5742936 -1628064 5745440 1630192 5746944 1628320 5743088 1628032 5745400 -1628320 5743048 1628272 5742976 1628224 5742936 1628320 5743088 -1628224 5742936 1628128 5742888 1628320 5743088 1628272 5742976 -1628320 5743048 1628304 5743016 1628272 5742976 1628320 5743088 -1628320 5743048 1628304 5743016 1628320 5743088 1630328 5746984 -1628272 5742976 1628224 5742936 1628320 5743088 1628304 5743016 -1628032 5745400 1628064 5745440 1628320 5743088 1627880 5745216 -1628128 5742888 1627728 5745216 1627776 5745184 1628320 5743088 -1628224 5742936 1628168 5742888 1628128 5742888 1628320 5743088 -1630192 5746944 1628320 5743136 1628064 5745440 1628088 5745496 -1630192 5746944 1628320 5743088 1628320 5743136 1628088 5745496 -1628320 5743136 1628320 5743088 1628064 5745440 1628088 5745496 -1630192 5746944 1628320 5743136 1628088 5745496 1628104 5745544 -1628320 5743088 1628320 5743136 1630192 5746944 1630280 5746960 -1628320 5743136 1628088 5745496 1630192 5746944 1630280 5746960 -1628320 5743088 1628320 5743136 1630280 5746960 1630328 5746984 -1628320 5743088 1628320 5743136 1630328 5746984 1628320 5743048 -1628320 5743136 1630192 5746944 1630280 5746960 1630328 5746984 -1628320 5743088 1628064 5745440 1628320 5743136 1630328 5746984 -1628064 5745440 1628320 5743136 1628320 5743088 1628032 5745400 -1628064 5745440 1628088 5745496 1628320 5743136 1628032 5745400 -1628320 5743136 1630328 5746984 1628320 5743088 1628032 5745400 -1628320 5743088 1627880 5745216 1628032 5745400 1628320 5743136 -1627880 5745216 1627984 5745352 1628032 5745400 1628320 5743136 -1628320 5743088 1627840 5745184 1627880 5745216 1628320 5743136 -1628320 5743088 1627776 5745184 1627840 5745184 1628320 5743136 -1627840 5745184 1627880 5745216 1628320 5743136 1627776 5745184 -1628320 5743088 1628128 5742888 1627776 5745184 1628320 5743136 -1628320 5743088 1628224 5742936 1628128 5742888 1628320 5743136 -1627776 5745184 1627840 5745184 1628320 5743136 1628128 5742888 -1628320 5743088 1628272 5742976 1628224 5742936 1628320 5743136 -1628128 5742888 1627776 5745184 1628320 5743136 1628224 5742936 -1628320 5743088 1628224 5742936 1628320 5743136 1630328 5746984 -1628032 5745400 1628064 5745440 1628320 5743136 1627880 5745216 -1627880 5745216 1628032 5745400 1628320 5743136 1627840 5745184 -1628128 5742888 1627728 5745216 1627776 5745184 1628320 5743136 -1628224 5742936 1628168 5742888 1628128 5742888 1628320 5743136 -1628320 5743136 1628288 5743232 1627776 5745184 1627840 5745184 -1628320 5743136 1628128 5742888 1628288 5743232 1627840 5745184 -1628288 5743232 1628128 5742888 1627776 5745184 1627840 5745184 -1628320 5743136 1628288 5743232 1627840 5745184 1627880 5745216 -1628288 5743232 1627776 5745184 1627840 5745184 1627880 5745216 -1628320 5743136 1628128 5742888 1628288 5743232 1627880 5745216 -1628128 5742888 1628288 5743232 1628320 5743136 1628224 5742936 -1628320 5743136 1628320 5743088 1628224 5742936 1628288 5743232 -1628128 5742888 1627776 5745184 1628288 5743232 1628224 5742936 -1628288 5743232 1627880 5745216 1628320 5743136 1628224 5742936 -1628320 5743136 1628288 5743232 1627880 5745216 1628032 5745400 -1627880 5745216 1627984 5745352 1628032 5745400 1628288 5743232 -1628320 5743136 1628224 5742936 1628288 5743232 1628032 5745400 -1628288 5743232 1627840 5745184 1627880 5745216 1628032 5745400 -1628320 5743136 1628288 5743232 1628032 5745400 1628064 5745440 -1628320 5743136 1628224 5742936 1628288 5743232 1628064 5745440 -1628320 5743136 1628288 5743232 1628064 5745440 1628088 5745496 -1628320 5743136 1628224 5742936 1628288 5743232 1628088 5745496 -1628320 5743136 1628288 5743232 1628088 5745496 1630192 5746944 -1628320 5743136 1628288 5743232 1630192 5746944 1630280 5746960 -1628320 5743136 1628224 5742936 1628288 5743232 1630280 5746960 -1628288 5743232 1628064 5745440 1628088 5745496 1630192 5746944 -1628288 5743232 1628088 5745496 1630192 5746944 1630280 5746960 -1628088 5745496 1628104 5745544 1630192 5746944 1628288 5743232 -1628320 5743136 1628288 5743232 1630280 5746960 1630328 5746984 -1628288 5743232 1628032 5745400 1628064 5745440 1628088 5745496 -1628288 5743232 1627880 5745216 1628032 5745400 1628064 5745440 -1627776 5745184 1628288 5743232 1628128 5742888 1627728 5745216 -1628288 5743232 1628224 5742936 1628128 5742888 1627728 5745216 -1627776 5745184 1627840 5745184 1628288 5743232 1627728 5745216 -1628128 5742888 1624528 5745760 1627728 5745216 1628288 5743232 -1628128 5742888 1628288 5743232 1628224 5742936 1628168 5742888 -1628128 5742888 1628240 5743264 1628288 5743232 1628224 5742936 -1628128 5742888 1627728 5745216 1628240 5743264 1628224 5742936 -1628240 5743264 1627728 5745216 1628288 5743232 1628224 5742936 -1627728 5745216 1628240 5743264 1628128 5742888 1624528 5745760 -1628288 5743232 1628320 5743136 1628224 5742936 1628240 5743264 -1628320 5743136 1628320 5743088 1628224 5742936 1628240 5743264 -1628224 5742936 1628128 5742888 1628240 5743264 1628320 5743088 -1628288 5743232 1628320 5743136 1628240 5743264 1627728 5745216 -1628320 5743088 1628272 5742976 1628224 5742936 1628240 5743264 -1628320 5743088 1628272 5742976 1628240 5743264 1628320 5743136 -1628224 5742936 1628128 5742888 1628240 5743264 1628272 5742976 -1628320 5743136 1628320 5743088 1628240 5743264 1628288 5743232 -1628320 5743088 1628304 5743016 1628272 5742976 1628240 5743264 -1628288 5743232 1628240 5743264 1627728 5745216 1627776 5745184 -1628240 5743264 1628128 5742888 1627728 5745216 1627776 5745184 -1628288 5743232 1628240 5743264 1627776 5745184 1627840 5745184 -1628288 5743232 1628240 5743264 1627840 5745184 1627880 5745216 -1628240 5743264 1627776 5745184 1627840 5745184 1627880 5745216 -1628288 5743232 1628320 5743136 1628240 5743264 1627880 5745216 -1628288 5743232 1628240 5743264 1627880 5745216 1628032 5745400 -1628240 5743264 1627840 5745184 1627880 5745216 1628032 5745400 -1627880 5745216 1627984 5745352 1628032 5745400 1628240 5743264 -1628288 5743232 1628320 5743136 1628240 5743264 1628032 5745400 -1628288 5743232 1628240 5743264 1628032 5745400 1628064 5745440 -1628240 5743264 1627728 5745216 1627776 5745184 1627840 5745184 -1628128 5742888 1628240 5743264 1628224 5742936 1628168 5742888 -1628240 5743264 1628224 5743288 1627728 5745216 1627776 5745184 -1628240 5743264 1628128 5742888 1628224 5743288 1627776 5745184 -1628128 5742888 1628224 5743288 1628240 5743264 1628224 5742936 -1628224 5743288 1628128 5742888 1627728 5745216 1627776 5745184 -1627728 5745216 1628224 5743288 1628128 5742888 1624528 5745760 -1627728 5745216 1628224 5743288 1624528 5745760 1624712 5745880 -1627728 5745216 1627776 5745184 1628224 5743288 1624528 5745760 -1628224 5743288 1628240 5743264 1628128 5742888 1624528 5745760 -1628240 5743264 1628224 5743288 1627776 5745184 1627840 5745184 -1628224 5743288 1627728 5745216 1627776 5745184 1627840 5745184 -1628240 5743264 1628128 5742888 1628224 5743288 1627840 5745184 -1628240 5743264 1628224 5743288 1627840 5745184 1627880 5745216 -1628240 5743264 1628224 5743288 1627880 5745216 1628032 5745400 -1627880 5745216 1627984 5745352 1628032 5745400 1628224 5743288 -1628240 5743264 1628128 5742888 1628224 5743288 1628032 5745400 -1628224 5743288 1627840 5745184 1627880 5745216 1628032 5745400 -1628240 5743264 1628224 5743288 1628032 5745400 1628288 5743232 -1628224 5743288 1627880 5745216 1628032 5745400 1628288 5743232 -1628240 5743264 1628128 5742888 1628224 5743288 1628288 5743232 -1628032 5745400 1628064 5745440 1628288 5743232 1628224 5743288 -1628032 5745400 1628064 5745440 1628224 5743288 1627880 5745216 -1628288 5743232 1628240 5743264 1628224 5743288 1628064 5745440 -1628064 5745440 1628088 5745496 1628288 5743232 1628224 5743288 -1628224 5743288 1627776 5745184 1627840 5745184 1627880 5745216 -1628128 5742888 1624032 5745472 1624528 5745760 1628224 5743288 -1628128 5742888 1628176 5743288 1628224 5743288 1628240 5743264 -1628128 5742888 1628176 5743288 1628240 5743264 1628224 5742936 -1628240 5743264 1628272 5742976 1628224 5742936 1628176 5743288 -1628224 5742936 1628128 5742888 1628176 5743288 1628272 5742976 -1628240 5743264 1628320 5743088 1628272 5742976 1628176 5743288 -1628240 5743264 1628320 5743136 1628320 5743088 1628176 5743288 -1628272 5742976 1628224 5742936 1628176 5743288 1628320 5743088 -1628320 5743088 1628272 5742976 1628176 5743288 1628320 5743136 -1628176 5743288 1624528 5745760 1628224 5743288 1628240 5743264 -1628176 5743288 1628224 5743288 1628240 5743264 1628320 5743136 -1628128 5742888 1624528 5745760 1628176 5743288 1628224 5742936 -1628224 5743288 1628176 5743288 1624528 5745760 1627728 5745216 -1624528 5745760 1624712 5745880 1627728 5745216 1628176 5743288 -1628224 5743288 1628176 5743288 1627728 5745216 1627776 5745184 -1628224 5743288 1628176 5743288 1627776 5745184 1627840 5745184 -1628176 5743288 1627728 5745216 1627776 5745184 1627840 5745184 -1628224 5743288 1628240 5743264 1628176 5743288 1627840 5745184 -1628176 5743288 1628128 5742888 1624528 5745760 1627728 5745216 -1628176 5743288 1624528 5745760 1627728 5745216 1627776 5745184 -1628240 5743264 1628288 5743232 1628320 5743136 1628176 5743288 -1628320 5743088 1628304 5743016 1628272 5742976 1628176 5743288 -1628224 5743288 1628176 5743288 1627840 5745184 1627880 5745216 -1628128 5742888 1628176 5743288 1628224 5742936 1628168 5742888 -1624528 5745760 1628176 5743288 1628128 5742888 1624032 5745472 -1628176 5743288 1628104 5743248 1624528 5745760 1627728 5745216 -1624528 5745760 1624712 5745880 1627728 5745216 1628104 5743248 -1628176 5743288 1628128 5742888 1628104 5743248 1627728 5745216 -1628128 5742888 1628104 5743248 1628176 5743288 1628224 5742936 -1628176 5743288 1628272 5742976 1628224 5742936 1628104 5743248 -1628176 5743288 1628320 5743088 1628272 5742976 1628104 5743248 -1628272 5742976 1628224 5742936 1628104 5743248 1628320 5743088 -1628176 5743288 1628320 5743136 1628320 5743088 1628104 5743248 -1628176 5743288 1628240 5743264 1628320 5743136 1628104 5743248 -1628320 5743088 1628272 5742976 1628104 5743248 1628320 5743136 -1628320 5743136 1628320 5743088 1628104 5743248 1628240 5743264 -1628176 5743288 1628224 5743288 1628240 5743264 1628104 5743248 -1628104 5743248 1627728 5745216 1628176 5743288 1628240 5743264 -1628224 5742936 1628128 5742888 1628104 5743248 1628272 5742976 -1628176 5743288 1628104 5743248 1627728 5745216 1627776 5745184 -1628176 5743288 1628104 5743248 1627776 5745184 1627840 5745184 -1628104 5743248 1624528 5745760 1627728 5745216 1627776 5745184 -1628176 5743288 1628240 5743264 1628104 5743248 1627776 5745184 -1628240 5743264 1628288 5743232 1628320 5743136 1628104 5743248 -1628104 5743248 1628128 5742888 1624528 5745760 1627728 5745216 -1628128 5742888 1624528 5745760 1628104 5743248 1628224 5742936 -1628320 5743088 1628304 5743016 1628272 5742976 1628104 5743248 -1628128 5742888 1628104 5743248 1628224 5742936 1628168 5742888 -1624528 5745760 1628104 5743248 1628128 5742888 1624032 5745472 -1624528 5745760 1627728 5745216 1628104 5743248 1624032 5745472 -1628104 5743248 1628224 5742936 1628128 5742888 1624032 5745472 -1628128 5742888 1623896 5745384 1624032 5745472 1628104 5743248 -1628128 5742888 1623640 5745232 1623896 5745384 1628104 5743248 -1628128 5742888 1623896 5745384 1628104 5743248 1628224 5742936 -1624528 5745760 1628104 5743248 1624032 5745472 1624224 5745656 -1624032 5745472 1624528 5745760 1628104 5743248 1623896 5745384 -1623896 5745384 1628048 5743224 1628128 5742888 1623640 5745232 -1628048 5743224 1628104 5743248 1628128 5742888 1623640 5745232 -1628128 5742888 1623224 5745048 1623640 5745232 1628048 5743224 -1623896 5745384 1628048 5743224 1623640 5745232 1623792 5745368 -1628128 5742888 1628048 5743224 1628104 5743248 1628224 5742936 -1628104 5743248 1628272 5742976 1628224 5742936 1628048 5743224 -1628128 5742888 1623640 5745232 1628048 5743224 1628224 5742936 -1628048 5743224 1623896 5745384 1628104 5743248 1628224 5742936 -1623896 5745384 1628104 5743248 1628048 5743224 1623640 5745232 -1628128 5742888 1628048 5743224 1628224 5742936 1628168 5742888 -1628104 5743248 1628048 5743224 1623896 5745384 1624032 5745472 -1628104 5743248 1628224 5742936 1628048 5743224 1624032 5745472 -1628048 5743224 1623640 5745232 1623896 5745384 1624032 5745472 -1628104 5743248 1628048 5743224 1624032 5745472 1624528 5745760 -1628104 5743248 1628048 5743224 1624528 5745760 1627728 5745216 -1624528 5745760 1624712 5745880 1627728 5745216 1628048 5743224 -1628104 5743248 1628048 5743224 1627728 5745216 1627776 5745184 -1628104 5743248 1628048 5743224 1627776 5745184 1628176 5743288 -1627776 5745184 1627840 5745184 1628176 5743288 1628048 5743224 -1628048 5743224 1627728 5745216 1627776 5745184 1628176 5743288 -1628048 5743224 1624528 5745760 1627728 5745216 1627776 5745184 -1628104 5743248 1628224 5742936 1628048 5743224 1628176 5743288 -1628048 5743224 1623896 5745384 1624032 5745472 1624528 5745760 -1624032 5745472 1624224 5745656 1624528 5745760 1628048 5743224 -1628048 5743224 1624032 5745472 1624528 5745760 1627728 5745216 -1628048 5743224 1628032 5743200 1623640 5745232 1623896 5745384 -1628128 5742888 1628032 5743200 1628048 5743224 1628224 5742936 -1628032 5743200 1628128 5742888 1623640 5745232 1623896 5745384 -1628128 5742888 1623640 5745232 1628032 5743200 1628224 5742936 -1623640 5745232 1628032 5743200 1628128 5742888 1623224 5745048 -1623640 5745232 1623792 5745368 1623896 5745384 1628032 5743200 -1628048 5743224 1628104 5743248 1628224 5742936 1628032 5743200 -1628104 5743248 1628272 5742976 1628224 5742936 1628032 5743200 -1628104 5743248 1628320 5743088 1628272 5742976 1628032 5743200 -1628104 5743248 1628320 5743136 1628320 5743088 1628032 5743200 -1628272 5742976 1628224 5742936 1628032 5743200 1628320 5743088 -1628224 5742936 1628128 5742888 1628032 5743200 1628272 5742976 -1628104 5743248 1628320 5743088 1628032 5743200 1628048 5743224 -1628048 5743224 1628032 5743200 1623896 5745384 1624032 5745472 -1628032 5743200 1623640 5745232 1623896 5745384 1624032 5745472 -1628048 5743224 1628104 5743248 1628032 5743200 1624032 5745472 -1628320 5743088 1628304 5743016 1628272 5742976 1628032 5743200 -1628128 5742888 1628032 5743200 1628224 5742936 1628168 5742888 -1628048 5743224 1628032 5743200 1624032 5745472 1624528 5745760 -1628032 5743200 1623896 5745384 1624032 5745472 1624528 5745760 -1628048 5743224 1628104 5743248 1628032 5743200 1624528 5745760 -1624032 5745472 1624224 5745656 1624528 5745760 1628032 5743200 -1628048 5743224 1628032 5743200 1624528 5745760 1627728 5745216 -1624528 5745760 1624712 5745880 1627728 5745216 1628032 5743200 -1628048 5743224 1628032 5743200 1627728 5745216 1627776 5745184 -1628048 5743224 1628104 5743248 1628032 5743200 1627728 5745216 -1628032 5743200 1624032 5745472 1624528 5745760 1627728 5745216 -1628032 5743200 1628024 5743112 1623640 5745232 1623896 5745384 -1628032 5743200 1628024 5743112 1623896 5745384 1624032 5745472 -1628024 5743112 1623640 5745232 1623896 5745384 1624032 5745472 -1628032 5743200 1628128 5742888 1628024 5743112 1624032 5745472 -1628128 5742888 1628024 5743112 1628032 5743200 1628224 5742936 -1628032 5743200 1628272 5742976 1628224 5742936 1628024 5743112 -1628032 5743200 1628320 5743088 1628272 5742976 1628024 5743112 -1628032 5743200 1628104 5743248 1628320 5743088 1628024 5743112 -1628104 5743248 1628320 5743136 1628320 5743088 1628024 5743112 -1628104 5743248 1628320 5743136 1628024 5743112 1628032 5743200 -1628104 5743248 1628240 5743264 1628320 5743136 1628024 5743112 -1628320 5743088 1628272 5742976 1628024 5743112 1628320 5743136 -1628272 5742976 1628224 5742936 1628024 5743112 1628320 5743088 -1628024 5743112 1624032 5745472 1628032 5743200 1628104 5743248 -1628224 5742936 1628128 5742888 1628024 5743112 1628272 5742976 -1628024 5743112 1628128 5742888 1623640 5745232 1623896 5745384 -1623640 5745232 1628024 5743112 1628128 5742888 1623224 5745048 -1628128 5742888 1623128 5745016 1623224 5745048 1628024 5743112 -1623640 5745232 1623896 5745384 1628024 5743112 1623224 5745048 -1623640 5745232 1628024 5743112 1623224 5745048 1623528 5745200 -1623640 5745232 1623792 5745368 1623896 5745384 1628024 5743112 -1628128 5742888 1623224 5745048 1628024 5743112 1628224 5742936 -1628032 5743200 1628048 5743224 1628104 5743248 1628024 5743112 -1628032 5743200 1628024 5743112 1624032 5745472 1624528 5745760 -1628320 5743088 1628304 5743016 1628272 5742976 1628024 5743112 -1628128 5742888 1628024 5743112 1628224 5742936 1628168 5742888 -1623224 5745048 1628032 5743064 1628128 5742888 1623128 5745016 -1628128 5742888 1622528 5744936 1623128 5745016 1628032 5743064 -1628024 5743112 1628032 5743064 1623224 5745048 1623640 5745232 -1628024 5743112 1628032 5743064 1623640 5745232 1623896 5745384 -1623224 5745048 1623528 5745200 1623640 5745232 1628032 5743064 -1628024 5743112 1628128 5742888 1628032 5743064 1623640 5745232 -1628128 5742888 1628032 5743064 1628024 5743112 1628224 5742936 -1628024 5743112 1628272 5742976 1628224 5742936 1628032 5743064 -1628024 5743112 1628320 5743088 1628272 5742976 1628032 5743064 -1628024 5743112 1628320 5743136 1628320 5743088 1628032 5743064 -1628024 5743112 1628104 5743248 1628320 5743136 1628032 5743064 -1628320 5743088 1628272 5742976 1628032 5743064 1628320 5743136 -1628272 5742976 1628224 5742936 1628032 5743064 1628320 5743088 -1628032 5743064 1623640 5745232 1628024 5743112 1628320 5743136 -1628224 5742936 1628128 5742888 1628032 5743064 1628272 5742976 -1623224 5745048 1623640 5745232 1628032 5743064 1623128 5745016 -1628032 5743064 1628224 5742936 1628128 5742888 1623128 5745016 -1628320 5743088 1628304 5743016 1628272 5742976 1628032 5743064 -1628128 5742888 1628032 5743064 1628224 5742936 1628168 5742888 -1623128 5745016 1628056 5742960 1628128 5742888 1622528 5744936 -1628032 5743064 1628056 5742960 1623128 5745016 1623224 5745048 -1628032 5743064 1628056 5742960 1623224 5745048 1623640 5745232 -1628056 5742960 1623128 5745016 1623224 5745048 1623640 5745232 -1623224 5745048 1623528 5745200 1623640 5745232 1628056 5742960 -1628032 5743064 1628056 5742960 1623640 5745232 1628024 5743112 -1628032 5743064 1628128 5742888 1628056 5742960 1623640 5745232 -1628128 5742888 1628056 5742960 1628032 5743064 1628224 5742936 -1628032 5743064 1628272 5742976 1628224 5742936 1628056 5742960 -1628056 5742960 1623640 5745232 1628032 5743064 1628224 5742936 -1623128 5745016 1623224 5745048 1628056 5742960 1622528 5744936 -1628056 5742960 1628224 5742936 1628128 5742888 1622528 5744936 -1623128 5745016 1628056 5742960 1622528 5744936 1622680 5744976 -1628128 5742888 1615632 5735512 1622528 5744936 1628056 5742960 -1628128 5742888 1628056 5742960 1628224 5742936 1628168 5742888 -1628128 5742888 1621048 5732784 1615632 5735416 1615632 5735512 -1629536 5726952 1621048 5732784 1628128 5742888 1629584 5726976 -1628128 5742888 1628168 5742888 1629584 5726976 1621048 5732784 -1628168 5742888 1628272 5742976 1629584 5726976 1621048 5732784 -1629584 5726976 1629536 5726952 1621048 5732784 1628168 5742888 -1628128 5742888 1628168 5742888 1621048 5732784 1615632 5735512 -1628128 5742888 1621048 5732784 1615632 5735512 1622528 5744936 -1621048 5732784 1615632 5735416 1615632 5735512 1622528 5744936 -1628128 5742888 1628168 5742888 1621048 5732784 1622528 5744936 -1615632 5735416 1621048 5732784 1629536 5726952 1629480 5726888 -1615632 5735416 1621048 5732784 1629480 5726888 1615584 5735320 -1621048 5732784 1629536 5726952 1629480 5726888 1615584 5735320 -1629480 5726888 1621208 5723336 1615584 5735320 1621048 5732784 -1629480 5726888 1629448 5726816 1621208 5723336 1621048 5732784 -1629448 5726816 1629224 5726312 1621208 5723336 1621048 5732784 -1629448 5726816 1629224 5726312 1621048 5732784 1629480 5726888 -1629448 5726816 1629360 5726560 1629224 5726312 1621048 5732784 -1629224 5726312 1621280 5723304 1621208 5723336 1621048 5732784 -1629224 5726312 1621280 5723304 1621048 5732784 1629448 5726816 -1629224 5726312 1629224 5726184 1621280 5723304 1621048 5732784 -1629480 5726888 1629448 5726816 1621048 5732784 1629536 5726952 -1615584 5735320 1615632 5735416 1621048 5732784 1621208 5723336 -1621208 5723336 1621144 5723336 1615584 5735320 1621048 5732784 -1621144 5723336 1615528 5735256 1615584 5735320 1621048 5732784 -1621144 5723336 1615440 5735216 1615528 5735256 1621048 5732784 -1615528 5735256 1615584 5735320 1621048 5732784 1615440 5735216 -1621144 5723336 1620800 5723008 1615440 5735216 1621048 5732784 -1615440 5735216 1615528 5735256 1621048 5732784 1620800 5723008 -1620800 5723008 1620600 5722784 1615440 5735216 1621048 5732784 -1615584 5735320 1615632 5735416 1621048 5732784 1615528 5735256 -1621144 5723336 1620800 5723008 1621048 5732784 1621208 5723336 -1621208 5723336 1621144 5723336 1621048 5732784 1621280 5723304 -1621048 5732784 1615584 5735320 1615632 5735416 1615632 5735512 -1629536 5726952 1629480 5726888 1621048 5732784 1629584 5726976 -1628128 5742888 1621048 5732784 1622528 5744936 1628056 5742960 -1622528 5744936 1623128 5745016 1628056 5742960 1621048 5732784 -1628128 5742888 1628168 5742888 1621048 5732784 1628056 5742960 -1621048 5732784 1615632 5735512 1622528 5744936 1628056 5742960 -1615632 5735512 1622352 5744936 1622528 5744936 1621048 5732784 -1615632 5735512 1622352 5744936 1621048 5732784 1615632 5735416 -1622528 5744936 1628056 5742960 1621048 5732784 1622352 5744936 -1615632 5735512 1615584 5735552 1622352 5744936 1621048 5732784 -1621048 5732784 1621032 5732744 1615440 5735216 1615528 5735256 -1621048 5732784 1621032 5732744 1615528 5735256 1615584 5735320 -1621032 5732744 1620800 5723008 1615440 5735216 1615528 5735256 -1621032 5732744 1615440 5735216 1615528 5735256 1615584 5735320 -1620800 5723008 1621032 5732744 1621048 5732784 1621144 5723336 -1620800 5723008 1615440 5735216 1621032 5732744 1621144 5723336 -1615440 5735216 1621032 5732744 1620800 5723008 1620600 5722784 -1621048 5732784 1621032 5732744 1615584 5735320 1615632 5735416 -1621048 5732784 1621208 5723336 1621144 5723336 1621032 5732744 -1621144 5723336 1620800 5723008 1621032 5732744 1621208 5723336 -1621048 5732784 1621280 5723304 1621208 5723336 1621032 5732744 -1621048 5732784 1629224 5726312 1621280 5723304 1621032 5732744 -1621048 5732784 1629448 5726816 1629224 5726312 1621032 5732744 -1621048 5732784 1629480 5726888 1629448 5726816 1621032 5732744 -1629448 5726816 1629224 5726312 1621032 5732744 1629480 5726888 -1629448 5726816 1629360 5726560 1629224 5726312 1621032 5732744 -1629224 5726312 1629224 5726184 1621280 5723304 1621032 5732744 -1629224 5726312 1621280 5723304 1621032 5732744 1629448 5726816 -1621048 5732784 1629536 5726952 1629480 5726888 1621032 5732744 -1629480 5726888 1629448 5726816 1621032 5732744 1629536 5726952 -1621208 5723336 1621144 5723336 1621032 5732744 1621280 5723304 -1621280 5723304 1621208 5723336 1621032 5732744 1629224 5726312 -1621048 5732784 1629584 5726976 1629536 5726952 1621032 5732744 -1621048 5732784 1629536 5726952 1621032 5732744 1615584 5735320 -1621032 5732744 1621008 5732664 1615440 5735216 1615528 5735256 -1620800 5723008 1621008 5732664 1621032 5732744 1621144 5723336 -1620800 5723008 1615440 5735216 1621008 5732664 1621144 5723336 -1621032 5732744 1621008 5732664 1615528 5735256 1615584 5735320 -1621032 5732744 1621008 5732664 1615584 5735320 1621048 5732784 -1621008 5732664 1615440 5735216 1615528 5735256 1615584 5735320 -1621032 5732744 1621208 5723336 1621144 5723336 1621008 5732664 -1621144 5723336 1620800 5723008 1621008 5732664 1621208 5723336 -1615440 5735216 1621008 5732664 1620800 5723008 1620600 5722784 -1621032 5732744 1621280 5723304 1621208 5723336 1621008 5732664 -1621208 5723336 1621144 5723336 1621008 5732664 1621280 5723304 -1621032 5732744 1629224 5726312 1621280 5723304 1621008 5732664 -1629224 5726312 1629224 5726184 1621280 5723304 1621008 5732664 -1621032 5732744 1629448 5726816 1629224 5726312 1621008 5732664 -1621032 5732744 1629480 5726888 1629448 5726816 1621008 5732664 -1621032 5732744 1629536 5726952 1629480 5726888 1621008 5732664 -1629480 5726888 1629448 5726816 1621008 5732664 1629536 5726952 -1629448 5726816 1629360 5726560 1629224 5726312 1621008 5732664 -1629448 5726816 1629224 5726312 1621008 5732664 1629480 5726888 -1621032 5732744 1621048 5732784 1629536 5726952 1621008 5732664 -1629536 5726952 1629480 5726888 1621008 5732664 1621048 5732784 -1621280 5723304 1621208 5723336 1621008 5732664 1629224 5726312 -1629224 5726312 1621280 5723304 1621008 5732664 1629448 5726816 -1621008 5732664 1620800 5723008 1615440 5735216 1615528 5735256 -1621048 5732784 1629584 5726976 1629536 5726952 1621008 5732664 -1621032 5732744 1621048 5732784 1621008 5732664 1615584 5735320 -1620800 5723008 1620992 5732536 1621008 5732664 1621144 5723336 -1621008 5732664 1621208 5723336 1621144 5723336 1620992 5732536 -1621144 5723336 1620800 5723008 1620992 5732536 1621208 5723336 -1620800 5723008 1615440 5735216 1620992 5732536 1621144 5723336 -1621008 5732664 1621280 5723304 1621208 5723336 1620992 5732536 -1621208 5723336 1621144 5723336 1620992 5732536 1621280 5723304 -1615440 5735216 1620992 5732536 1620800 5723008 1620600 5722784 -1620992 5732536 1615440 5735216 1621008 5732664 1621280 5723304 -1621008 5732664 1629224 5726312 1621280 5723304 1620992 5732536 -1629224 5726312 1629224 5726184 1621280 5723304 1620992 5732536 -1621280 5723304 1621208 5723336 1620992 5732536 1629224 5726312 -1621008 5732664 1629224 5726312 1620992 5732536 1615440 5735216 -1621008 5732664 1629448 5726816 1629224 5726312 1620992 5732536 -1629448 5726816 1629360 5726560 1629224 5726312 1620992 5732536 -1621008 5732664 1629448 5726816 1620992 5732536 1615440 5735216 -1621008 5732664 1629480 5726888 1629448 5726816 1620992 5732536 -1621008 5732664 1629536 5726952 1629480 5726888 1620992 5732536 -1621008 5732664 1621048 5732784 1629536 5726952 1620992 5732536 -1629536 5726952 1629480 5726888 1620992 5732536 1621048 5732784 -1621008 5732664 1621048 5732784 1620992 5732536 1615440 5735216 -1629480 5726888 1629448 5726816 1620992 5732536 1629536 5726952 -1621008 5732664 1621032 5732744 1621048 5732784 1620992 5732536 -1621048 5732784 1629536 5726952 1620992 5732536 1621032 5732744 -1621008 5732664 1621032 5732744 1620992 5732536 1615440 5735216 -1629224 5726312 1621280 5723304 1620992 5732536 1629448 5726816 -1629448 5726816 1629224 5726312 1620992 5732536 1629480 5726888 -1621008 5732664 1620992 5732536 1615440 5735216 1615528 5735256 -1621008 5732664 1620992 5732536 1615528 5735256 1615584 5735320 -1621008 5732664 1621032 5732744 1620992 5732536 1615528 5735256 -1620992 5732536 1620800 5723008 1615440 5735216 1615528 5735256 -1621048 5732784 1629584 5726976 1629536 5726952 1620992 5732536 -1621280 5723304 1621008 5732472 1629224 5726312 1629224 5726184 -1620992 5732536 1621008 5732472 1621280 5723304 1621208 5723336 -1621008 5732472 1629224 5726312 1621280 5723304 1621208 5723336 -1620992 5732536 1621008 5732472 1621208 5723336 1621144 5723336 -1620992 5732536 1621008 5732472 1621144 5723336 1620800 5723008 -1621008 5732472 1621208 5723336 1621144 5723336 1620800 5723008 -1620992 5732536 1621008 5732472 1620800 5723008 1615440 5735216 -1621008 5732472 1621144 5723336 1620800 5723008 1615440 5735216 -1620992 5732536 1629224 5726312 1621008 5732472 1615440 5735216 -1621008 5732472 1621280 5723304 1621208 5723336 1621144 5723336 -1620800 5723008 1620600 5722784 1615440 5735216 1621008 5732472 -1620992 5732536 1621008 5732472 1615440 5735216 1615528 5735256 -1629224 5726312 1621008 5732472 1620992 5732536 1629448 5726816 -1629224 5726312 1621280 5723304 1621008 5732472 1629448 5726816 -1629224 5726312 1621008 5732472 1629448 5726816 1629360 5726560 -1621008 5732472 1615440 5735216 1620992 5732536 1629448 5726816 -1620992 5732536 1629480 5726888 1629448 5726816 1621008 5732472 -1620992 5732536 1629480 5726888 1621008 5732472 1615440 5735216 -1620992 5732536 1629536 5726952 1629480 5726888 1621008 5732472 -1620992 5732536 1621048 5732784 1629536 5726952 1621008 5732472 -1620992 5732536 1621032 5732744 1621048 5732784 1621008 5732472 -1621048 5732784 1629536 5726952 1621008 5732472 1621032 5732744 -1620992 5732536 1621032 5732744 1621008 5732472 1615440 5735216 -1629536 5726952 1629480 5726888 1621008 5732472 1621048 5732784 -1620992 5732536 1621008 5732664 1621032 5732744 1621008 5732472 -1621032 5732744 1621048 5732784 1621008 5732472 1621008 5732664 -1620992 5732536 1621008 5732664 1621008 5732472 1615440 5735216 -1629448 5726816 1629224 5726312 1621008 5732472 1629480 5726888 -1629480 5726888 1629448 5726816 1621008 5732472 1629536 5726952 -1621048 5732784 1629584 5726976 1629536 5726952 1621008 5732472 -1621008 5732472 1621048 5732416 1621280 5723304 1621208 5723336 -1621008 5732472 1629224 5726312 1621048 5732416 1621208 5723336 -1629224 5726312 1621048 5732416 1621008 5732472 1629448 5726816 -1621048 5732416 1621208 5723336 1621008 5732472 1629448 5726816 -1629224 5726312 1621048 5732416 1629448 5726816 1629360 5726560 -1621280 5723304 1621048 5732416 1629224 5726312 1629224 5726184 -1621008 5732472 1621048 5732416 1621208 5723336 1621144 5723336 -1621048 5732416 1621280 5723304 1621208 5723336 1621144 5723336 -1621008 5732472 1629448 5726816 1621048 5732416 1621144 5723336 -1621008 5732472 1621048 5732416 1621144 5723336 1620800 5723008 -1621008 5732472 1629448 5726816 1621048 5732416 1620800 5723008 -1621008 5732472 1621048 5732416 1620800 5723008 1615440 5735216 -1621008 5732472 1629448 5726816 1621048 5732416 1615440 5735216 -1621048 5732416 1621144 5723336 1620800 5723008 1615440 5735216 -1621008 5732472 1621048 5732416 1615440 5735216 1620992 5732536 -1621048 5732416 1621208 5723336 1621144 5723336 1620800 5723008 -1621048 5732416 1629224 5726312 1621280 5723304 1621208 5723336 -1629224 5726312 1621280 5723304 1621048 5732416 1629448 5726816 -1620800 5723008 1620600 5722784 1615440 5735216 1621048 5732416 -1621008 5732472 1629480 5726888 1629448 5726816 1621048 5732416 -1621008 5732472 1629480 5726888 1621048 5732416 1615440 5735216 -1629448 5726816 1629224 5726312 1621048 5732416 1629480 5726888 -1621008 5732472 1629536 5726952 1629480 5726888 1621048 5732416 -1621008 5732472 1629536 5726952 1621048 5732416 1615440 5735216 -1621008 5732472 1621048 5732784 1629536 5726952 1621048 5732416 -1621008 5732472 1621048 5732784 1621048 5732416 1615440 5735216 -1621008 5732472 1621032 5732744 1621048 5732784 1621048 5732416 -1621008 5732472 1621032 5732744 1621048 5732416 1615440 5735216 -1621008 5732472 1621008 5732664 1621032 5732744 1621048 5732416 -1621008 5732472 1621008 5732664 1621048 5732416 1615440 5735216 -1621032 5732744 1621048 5732784 1621048 5732416 1621008 5732664 -1621048 5732784 1629536 5726952 1621048 5732416 1621032 5732744 -1621008 5732472 1620992 5732536 1621008 5732664 1621048 5732416 -1621008 5732472 1620992 5732536 1621048 5732416 1615440 5735216 -1621008 5732664 1621032 5732744 1621048 5732416 1620992 5732536 -1629480 5726888 1629448 5726816 1621048 5732416 1629536 5726952 -1629536 5726952 1629480 5726888 1621048 5732416 1621048 5732784 -1621048 5732784 1629584 5726976 1629536 5726952 1621048 5732416 -1621048 5732784 1628168 5742888 1629584 5726976 1621048 5732416 -1621048 5732784 1629584 5726976 1621048 5732416 1621032 5732744 -1629536 5726952 1629480 5726888 1621048 5732416 1629584 5726976 -1621280 5723304 1621096 5732376 1629224 5726312 1629224 5726184 -1621048 5732416 1621096 5732376 1621280 5723304 1621208 5723336 -1621048 5732416 1621096 5732376 1621208 5723336 1621144 5723336 -1621048 5732416 1621096 5732376 1621144 5723336 1620800 5723008 -1621096 5732376 1621280 5723304 1621208 5723336 1621144 5723336 -1629224 5726312 1621096 5732376 1621048 5732416 1629448 5726816 -1629224 5726312 1621096 5732376 1629448 5726816 1629360 5726560 -1629224 5726312 1621280 5723304 1621096 5732376 1629448 5726816 -1621048 5732416 1629480 5726888 1629448 5726816 1621096 5732376 -1629448 5726816 1629224 5726312 1621096 5732376 1629480 5726888 -1621048 5732416 1629480 5726888 1621096 5732376 1621144 5723336 -1621096 5732376 1629224 5726312 1621280 5723304 1621208 5723336 -1621048 5732416 1629536 5726952 1629480 5726888 1621096 5732376 -1629480 5726888 1629448 5726816 1621096 5732376 1629536 5726952 -1621048 5732416 1629536 5726952 1621096 5732376 1621144 5723336 -1621048 5732416 1629584 5726976 1629536 5726952 1621096 5732376 -1621048 5732416 1629584 5726976 1621096 5732376 1621144 5723336 -1629536 5726952 1629480 5726888 1621096 5732376 1629584 5726976 -1621048 5732416 1621048 5732784 1629584 5726976 1621096 5732376 -1621048 5732784 1628168 5742888 1629584 5726976 1621096 5732376 -1621048 5732416 1621048 5732784 1621096 5732376 1621144 5723336 -1621048 5732416 1621032 5732744 1621048 5732784 1621096 5732376 -1621048 5732416 1621008 5732664 1621032 5732744 1621096 5732376 -1621048 5732416 1620992 5732536 1621008 5732664 1621096 5732376 -1621008 5732664 1621032 5732744 1621096 5732376 1620992 5732536 -1621048 5732416 1620992 5732536 1621096 5732376 1621144 5723336 -1621032 5732744 1621048 5732784 1621096 5732376 1621008 5732664 -1621048 5732416 1621008 5732472 1620992 5732536 1621096 5732376 -1629584 5726976 1629536 5726952 1621096 5732376 1621048 5732784 -1621048 5732784 1629584 5726976 1621096 5732376 1621032 5732744 -1629584 5726976 1621200 5732344 1621048 5732784 1628168 5742888 -1629584 5726976 1621200 5732344 1628168 5742888 1628272 5742976 -1621048 5732784 1628128 5742888 1628168 5742888 1621200 5732344 -1629584 5726976 1621096 5732376 1621200 5732344 1628168 5742888 -1621200 5732344 1621096 5732376 1621048 5732784 1628168 5742888 -1621096 5732376 1621200 5732344 1629584 5726976 1629536 5726952 -1621096 5732376 1621048 5732784 1621200 5732344 1629536 5726952 -1621200 5732344 1628168 5742888 1629584 5726976 1629536 5726952 -1621096 5732376 1621200 5732344 1629536 5726952 1629480 5726888 -1621096 5732376 1621048 5732784 1621200 5732344 1629480 5726888 -1621096 5732376 1621200 5732344 1629480 5726888 1629448 5726816 -1621096 5732376 1621048 5732784 1621200 5732344 1629448 5726816 -1621096 5732376 1621200 5732344 1629448 5726816 1629224 5726312 -1629448 5726816 1629360 5726560 1629224 5726312 1621200 5732344 -1621096 5732376 1621048 5732784 1621200 5732344 1629224 5726312 -1621096 5732376 1621200 5732344 1629224 5726312 1621280 5723304 -1629224 5726312 1629224 5726184 1621280 5723304 1621200 5732344 -1621096 5732376 1621048 5732784 1621200 5732344 1621280 5723304 -1621200 5732344 1629480 5726888 1629448 5726816 1629224 5726312 -1621200 5732344 1629448 5726816 1629224 5726312 1621280 5723304 -1621096 5732376 1621200 5732344 1621280 5723304 1621208 5723336 -1621096 5732376 1621048 5732784 1621200 5732344 1621208 5723336 -1621200 5732344 1629224 5726312 1621280 5723304 1621208 5723336 -1621096 5732376 1621200 5732344 1621208 5723336 1621144 5723336 -1621096 5732376 1621200 5732344 1621144 5723336 1621048 5732416 -1621096 5732376 1621048 5732784 1621200 5732344 1621144 5723336 -1621200 5732344 1621280 5723304 1621208 5723336 1621144 5723336 -1621200 5732344 1629536 5726952 1629480 5726888 1629448 5726816 -1621200 5732344 1629584 5726976 1629536 5726952 1629480 5726888 -1621048 5732784 1621200 5732344 1621096 5732376 1621032 5732744 -1621200 5732344 1621144 5723336 1621096 5732376 1621032 5732744 -1621048 5732784 1628168 5742888 1621200 5732344 1621032 5732744 -1621096 5732376 1621008 5732664 1621032 5732744 1621200 5732344 -1621096 5732376 1620992 5732536 1621008 5732664 1621200 5732344 -1621096 5732376 1621048 5732416 1620992 5732536 1621200 5732344 -1620992 5732536 1621008 5732664 1621200 5732344 1621048 5732416 -1621096 5732376 1621048 5732416 1621200 5732344 1621144 5723336 -1621008 5732664 1621032 5732744 1621200 5732344 1620992 5732536 -1621048 5732416 1621008 5732472 1620992 5732536 1621200 5732344 -1621032 5732744 1621048 5732784 1621200 5732344 1621008 5732664 -1629584 5726976 1621328 5732344 1628168 5742888 1628272 5742976 -1628168 5742888 1621328 5732344 1621200 5732344 1621048 5732784 -1628168 5742888 1629584 5726976 1621328 5732344 1621048 5732784 -1628168 5742888 1621328 5732344 1621048 5732784 1628128 5742888 -1621328 5732344 1621200 5732344 1621048 5732784 1628128 5742888 -1628168 5742888 1629584 5726976 1621328 5732344 1628128 5742888 -1621048 5732784 1628056 5742960 1628128 5742888 1621328 5732344 -1621200 5732344 1621328 5732344 1629584 5726976 1629536 5726952 -1621328 5732344 1628168 5742888 1629584 5726976 1629536 5726952 -1621328 5732344 1629536 5726952 1621200 5732344 1621048 5732784 -1621200 5732344 1621032 5732744 1621048 5732784 1621328 5732344 -1621048 5732784 1628128 5742888 1621328 5732344 1621032 5732744 -1621200 5732344 1621032 5732744 1621328 5732344 1629536 5726952 -1621200 5732344 1621328 5732344 1629536 5726952 1629480 5726888 -1621328 5732344 1629584 5726976 1629536 5726952 1629480 5726888 -1621200 5732344 1621032 5732744 1621328 5732344 1629480 5726888 -1621200 5732344 1621328 5732344 1629480 5726888 1629448 5726816 -1621200 5732344 1621032 5732744 1621328 5732344 1629448 5726816 -1621200 5732344 1621328 5732344 1629448 5726816 1629224 5726312 -1629448 5726816 1629360 5726560 1629224 5726312 1621328 5732344 -1621200 5732344 1621032 5732744 1621328 5732344 1629224 5726312 -1621200 5732344 1621328 5732344 1629224 5726312 1621280 5723304 -1629224 5726312 1629224 5726184 1621280 5723304 1621328 5732344 -1621200 5732344 1621328 5732344 1621280 5723304 1621208 5723336 -1621200 5732344 1621032 5732744 1621328 5732344 1621208 5723336 -1621328 5732344 1629448 5726816 1629224 5726312 1621280 5723304 -1621328 5732344 1629224 5726312 1621280 5723304 1621208 5723336 -1621200 5732344 1621328 5732344 1621208 5723336 1621144 5723336 -1621328 5732344 1629480 5726888 1629448 5726816 1629224 5726312 -1621328 5732344 1629536 5726952 1629480 5726888 1629448 5726816 -1621200 5732344 1621008 5732664 1621032 5732744 1621328 5732344 -1621200 5732344 1621008 5732664 1621328 5732344 1621208 5723336 -1621032 5732744 1621048 5732784 1621328 5732344 1621008 5732664 -1621200 5732344 1620992 5732536 1621008 5732664 1621328 5732344 -1629584 5726976 1621496 5732416 1628168 5742888 1628272 5742976 -1621328 5732344 1621496 5732416 1629584 5726976 1629536 5726952 -1621328 5732344 1628168 5742888 1621496 5732416 1629536 5726952 -1628168 5742888 1621496 5732416 1621328 5732344 1628128 5742888 -1628168 5742888 1629584 5726976 1621496 5732416 1628128 5742888 -1621496 5732416 1629536 5726952 1621328 5732344 1628128 5742888 -1621496 5732416 1628168 5742888 1629584 5726976 1629536 5726952 -1621328 5732344 1621048 5732784 1628128 5742888 1621496 5732416 -1621328 5732344 1621032 5732744 1621048 5732784 1621496 5732416 -1621328 5732344 1621032 5732744 1621496 5732416 1629536 5726952 -1628128 5742888 1628168 5742888 1621496 5732416 1621048 5732784 -1621048 5732784 1628128 5742888 1621496 5732416 1621032 5732744 -1621048 5732784 1628056 5742960 1628128 5742888 1621496 5732416 -1621328 5732344 1621496 5732416 1629536 5726952 1629480 5726888 -1621496 5732416 1629584 5726976 1629536 5726952 1629480 5726888 -1621328 5732344 1621032 5732744 1621496 5732416 1629480 5726888 -1621328 5732344 1621008 5732664 1621032 5732744 1621496 5732416 -1621328 5732344 1621496 5732416 1629480 5726888 1629448 5726816 -1621328 5732344 1621032 5732744 1621496 5732416 1629448 5726816 -1621496 5732416 1629536 5726952 1629480 5726888 1629448 5726816 -1621328 5732344 1621496 5732416 1629448 5726816 1629224 5726312 -1629448 5726816 1629360 5726560 1629224 5726312 1621496 5732416 -1621328 5732344 1621032 5732744 1621496 5732416 1629224 5726312 -1621328 5732344 1621496 5732416 1629224 5726312 1621280 5723304 -1629224 5726312 1629224 5726184 1621280 5723304 1621496 5732416 -1621328 5732344 1621032 5732744 1621496 5732416 1621280 5723304 -1621328 5732344 1621496 5732416 1621280 5723304 1621208 5723336 -1621496 5732416 1629448 5726816 1629224 5726312 1621280 5723304 -1621496 5732416 1629480 5726888 1629448 5726816 1629224 5726312 -1629584 5726976 1621632 5732520 1628168 5742888 1628272 5742976 -1628168 5742888 1621632 5732520 1621496 5732416 1628128 5742888 -1628168 5742888 1629584 5726976 1621632 5732520 1628128 5742888 -1621496 5732416 1621048 5732784 1628128 5742888 1621632 5732520 -1628128 5742888 1628168 5742888 1621632 5732520 1621048 5732784 -1621496 5732416 1621632 5732520 1629584 5726976 1629536 5726952 -1621632 5732520 1628168 5742888 1629584 5726976 1629536 5726952 -1621496 5732416 1621632 5732520 1629536 5726952 1629480 5726888 -1621632 5732520 1629584 5726976 1629536 5726952 1629480 5726888 -1621632 5732520 1629480 5726888 1621496 5732416 1621048 5732784 -1621496 5732416 1621032 5732744 1621048 5732784 1621632 5732520 -1621048 5732784 1628056 5742960 1628128 5742888 1621632 5732520 -1621496 5732416 1621632 5732520 1629480 5726888 1629448 5726816 -1621632 5732520 1629536 5726952 1629480 5726888 1629448 5726816 -1621496 5732416 1621048 5732784 1621632 5732520 1629448 5726816 -1621496 5732416 1621632 5732520 1629448 5726816 1629224 5726312 -1629448 5726816 1629360 5726560 1629224 5726312 1621632 5732520 -1621496 5732416 1621048 5732784 1621632 5732520 1629224 5726312 -1621632 5732520 1629480 5726888 1629448 5726816 1629224 5726312 -1621496 5732416 1621632 5732520 1629224 5726312 1621280 5723304 -1629584 5726976 1621752 5732672 1628168 5742888 1628272 5742976 -1621632 5732520 1621752 5732672 1629584 5726976 1629536 5726952 -1621632 5732520 1628168 5742888 1621752 5732672 1629536 5726952 -1628168 5742888 1621752 5732672 1621632 5732520 1628128 5742888 -1621632 5732520 1621048 5732784 1628128 5742888 1621752 5732672 -1621752 5732672 1629536 5726952 1621632 5732520 1621048 5732784 -1628128 5742888 1628168 5742888 1621752 5732672 1621048 5732784 -1621752 5732672 1628168 5742888 1629584 5726976 1629536 5726952 -1621632 5732520 1621496 5732416 1621048 5732784 1621752 5732672 -1621632 5732520 1621752 5732672 1629536 5726952 1629480 5726888 -1621752 5732672 1629584 5726976 1629536 5726952 1629480 5726888 -1621632 5732520 1621048 5732784 1621752 5732672 1629480 5726888 -1621632 5732520 1621752 5732672 1629480 5726888 1629448 5726816 -1621048 5732784 1628056 5742960 1628128 5742888 1621752 5732672 -1621048 5732784 1628056 5742960 1621752 5732672 1621632 5732520 -1628128 5742888 1628168 5742888 1621752 5732672 1628056 5742960 -1628168 5742888 1629584 5726976 1621752 5732672 1628128 5742888 -1621048 5732784 1622528 5744936 1628056 5742960 1621752 5732672 -1622528 5744936 1623128 5745016 1628056 5742960 1621752 5732672 -1621048 5732784 1622528 5744936 1621752 5732672 1621632 5732520 -1628056 5742960 1628128 5742888 1621752 5732672 1622528 5744936 -1621048 5732784 1622352 5744936 1622528 5744936 1621752 5732672 -1621048 5732784 1622352 5744936 1621752 5732672 1621632 5732520 -1622528 5744936 1628056 5742960 1621752 5732672 1622352 5744936 -1621048 5732784 1615632 5735512 1622352 5744936 1621752 5732672 -1628056 5742960 1621776 5732752 1622528 5744936 1623128 5745016 -1621752 5732672 1621776 5732752 1628056 5742960 1628128 5742888 -1621752 5732672 1621776 5732752 1628128 5742888 1628168 5742888 -1621776 5732752 1622528 5744936 1628056 5742960 1628128 5742888 -1621776 5732752 1628056 5742960 1628128 5742888 1628168 5742888 -1621752 5732672 1622528 5744936 1621776 5732752 1628168 5742888 -1621752 5732672 1621776 5732752 1628168 5742888 1629584 5726976 -1628168 5742888 1628272 5742976 1629584 5726976 1621776 5732752 -1621776 5732752 1628128 5742888 1628168 5742888 1629584 5726976 -1621752 5732672 1621776 5732752 1629584 5726976 1629536 5726952 -1621752 5732672 1621776 5732752 1629536 5726952 1629480 5726888 -1621752 5732672 1622528 5744936 1621776 5732752 1629536 5726952 -1621776 5732752 1628168 5742888 1629584 5726976 1629536 5726952 -1622528 5744936 1621776 5732752 1621752 5732672 1622352 5744936 -1622528 5744936 1628056 5742960 1621776 5732752 1622352 5744936 -1621752 5732672 1621048 5732784 1622352 5744936 1621776 5732752 -1621752 5732672 1621632 5732520 1621048 5732784 1621776 5732752 -1621776 5732752 1629536 5726952 1621752 5732672 1621048 5732784 -1622352 5744936 1622528 5744936 1621776 5732752 1621048 5732784 -1621048 5732784 1615632 5735512 1622352 5744936 1621776 5732752 -1628056 5742960 1621800 5732912 1622528 5744936 1623128 5745016 -1621776 5732752 1621800 5732912 1628056 5742960 1628128 5742888 -1621776 5732752 1622528 5744936 1621800 5732912 1628128 5742888 -1622528 5744936 1621800 5732912 1621776 5732752 1622352 5744936 -1621800 5732912 1628128 5742888 1621776 5732752 1622352 5744936 -1621776 5732752 1621800 5732912 1628128 5742888 1628168 5742888 -1621776 5732752 1621800 5732912 1628168 5742888 1629584 5726976 -1628168 5742888 1628272 5742976 1629584 5726976 1621800 5732912 -1621800 5732912 1628056 5742960 1628128 5742888 1628168 5742888 -1621776 5732752 1622352 5744936 1621800 5732912 1629584 5726976 -1621800 5732912 1628128 5742888 1628168 5742888 1629584 5726976 -1621776 5732752 1621800 5732912 1629584 5726976 1629536 5726952 -1621800 5732912 1622528 5744936 1628056 5742960 1628128 5742888 -1622528 5744936 1628056 5742960 1621800 5732912 1622352 5744936 -1621776 5732752 1621048 5732784 1622352 5744936 1621800 5732912 -1621776 5732752 1621048 5732784 1621800 5732912 1629584 5726976 -1622352 5744936 1622528 5744936 1621800 5732912 1621048 5732784 -1621776 5732752 1621752 5732672 1621048 5732784 1621800 5732912 -1621048 5732784 1615632 5735512 1622352 5744936 1621800 5732912 -1621048 5732784 1615632 5735416 1615632 5735512 1621800 5732912 -1622352 5744936 1622528 5744936 1621800 5732912 1615632 5735512 -1621048 5732784 1615632 5735512 1621800 5732912 1621776 5732752 -1615632 5735512 1615584 5735552 1622352 5744936 1621800 5732912 -1621800 5732912 1621808 5733136 1622352 5744936 1622528 5744936 -1621808 5733136 1615632 5735512 1622352 5744936 1622528 5744936 -1621800 5732912 1615632 5735512 1621808 5733136 1622528 5744936 -1621800 5732912 1621808 5733136 1622528 5744936 1628056 5742960 -1622528 5744936 1623128 5745016 1628056 5742960 1621808 5733136 -1621808 5733136 1622352 5744936 1622528 5744936 1628056 5742960 -1621800 5732912 1621808 5733136 1628056 5742960 1628128 5742888 -1621800 5732912 1621808 5733136 1628128 5742888 1628168 5742888 -1621800 5732912 1621808 5733136 1628168 5742888 1629584 5726976 -1628168 5742888 1628272 5742976 1629584 5726976 1621808 5733136 -1621800 5732912 1621808 5733136 1629584 5726976 1621776 5732752 -1621808 5733136 1628128 5742888 1628168 5742888 1629584 5726976 -1621808 5733136 1628056 5742960 1628128 5742888 1628168 5742888 -1621800 5732912 1615632 5735512 1621808 5733136 1629584 5726976 -1621808 5733136 1622528 5744936 1628056 5742960 1628128 5742888 -1622352 5744936 1621808 5733136 1615632 5735512 1615584 5735552 -1615632 5735512 1621808 5733136 1621800 5732912 1621048 5732784 -1615632 5735512 1622352 5744936 1621808 5733136 1621048 5732784 -1615632 5735512 1621808 5733136 1621048 5732784 1615632 5735416 -1621808 5733136 1629584 5726976 1621800 5732912 1621048 5732784 -1621800 5732912 1621776 5732752 1621048 5732784 1621808 5733136 -1621808 5733136 1621784 5733192 1622352 5744936 1622528 5744936 -1621808 5733136 1615632 5735512 1621784 5733192 1622528 5744936 -1615632 5735512 1621784 5733192 1621808 5733136 1621048 5732784 -1621784 5733192 1622528 5744936 1621808 5733136 1621048 5732784 -1621784 5733192 1615632 5735512 1622352 5744936 1622528 5744936 -1615632 5735512 1621784 5733192 1621048 5732784 1615632 5735416 -1621808 5733136 1621784 5733192 1622528 5744936 1628056 5742960 -1621784 5733192 1622352 5744936 1622528 5744936 1628056 5742960 -1621808 5733136 1621048 5732784 1621784 5733192 1628056 5742960 -1622528 5744936 1623128 5745016 1628056 5742960 1621784 5733192 -1615632 5735512 1622352 5744936 1621784 5733192 1621048 5732784 -1621808 5733136 1621784 5733192 1628056 5742960 1628128 5742888 -1621808 5733136 1621048 5732784 1621784 5733192 1628128 5742888 -1621784 5733192 1622528 5744936 1628056 5742960 1628128 5742888 -1621808 5733136 1621784 5733192 1628128 5742888 1628168 5742888 -1621808 5733136 1621048 5732784 1621784 5733192 1628168 5742888 -1621808 5733136 1621784 5733192 1628168 5742888 1629584 5726976 -1621784 5733192 1628056 5742960 1628128 5742888 1628168 5742888 -1622352 5744936 1621784 5733192 1615632 5735512 1615584 5735552 -1621808 5733136 1621800 5732912 1621048 5732784 1621784 5733192 -1621808 5733136 1621800 5732912 1621784 5733192 1628168 5742888 -1621048 5732784 1615632 5735512 1621784 5733192 1621800 5732912 -1621800 5732912 1621776 5732752 1621048 5732784 1621784 5733192 -1621784 5733192 1621712 5733232 1622352 5744936 1622528 5744936 -1621784 5733192 1621712 5733232 1622528 5744936 1628056 5742960 -1621712 5733232 1622352 5744936 1622528 5744936 1628056 5742960 -1621784 5733192 1615632 5735512 1621712 5733232 1628056 5742960 -1622528 5744936 1623128 5745016 1628056 5742960 1621712 5733232 -1621784 5733192 1621712 5733232 1628056 5742960 1628128 5742888 -1621712 5733232 1622528 5744936 1628056 5742960 1628128 5742888 -1621784 5733192 1615632 5735512 1621712 5733232 1628128 5742888 -1615632 5735512 1621712 5733232 1621784 5733192 1621048 5732784 -1621784 5733192 1621800 5732912 1621048 5732784 1621712 5733232 -1621712 5733232 1628128 5742888 1621784 5733192 1621800 5732912 -1615632 5735512 1621712 5733232 1621048 5732784 1615632 5735416 -1621048 5732784 1615632 5735512 1621712 5733232 1621800 5732912 -1621712 5733232 1615632 5735512 1622352 5744936 1622528 5744936 -1615632 5735512 1622352 5744936 1621712 5733232 1621048 5732784 -1621784 5733192 1621712 5733232 1628128 5742888 1628168 5742888 -1621800 5732912 1621776 5732752 1621048 5732784 1621712 5733232 -1622352 5744936 1621712 5733232 1615632 5735512 1615584 5735552 -1621784 5733192 1621808 5733136 1621800 5732912 1621712 5733232 -1621800 5732912 1621048 5732784 1621712 5733232 1621808 5733136 -1621784 5733192 1621808 5733136 1621712 5733232 1628128 5742888 -1615632 5735512 1621616 5733232 1621048 5732784 1615632 5735416 -1621048 5732784 1621616 5733232 1621712 5733232 1621800 5732912 -1621712 5733232 1621808 5733136 1621800 5732912 1621616 5733232 -1621800 5732912 1621048 5732784 1621616 5733232 1621808 5733136 -1621616 5733232 1615632 5735512 1621712 5733232 1621808 5733136 -1621712 5733232 1621616 5733232 1615632 5735512 1622352 5744936 -1621712 5733232 1621616 5733232 1622352 5744936 1622528 5744936 -1621712 5733232 1621808 5733136 1621616 5733232 1622352 5744936 -1621616 5733232 1621048 5732784 1615632 5735512 1622352 5744936 -1621048 5732784 1621616 5733232 1621800 5732912 1621776 5732752 -1615632 5735512 1615584 5735552 1622352 5744936 1621616 5733232 -1621712 5733232 1621784 5733192 1621808 5733136 1621616 5733232 -1621048 5732784 1615632 5735512 1621616 5733232 1621800 5732912 -1615632 5735512 1621440 5733160 1621048 5732784 1615632 5735416 -1621616 5733232 1621440 5733160 1615632 5735512 1622352 5744936 -1621048 5732784 1615584 5735320 1615632 5735416 1621440 5733160 -1615632 5735512 1621616 5733232 1621440 5733160 1615632 5735416 -1621440 5733160 1621616 5733232 1621048 5732784 1615632 5735416 -1621048 5732784 1621440 5733160 1621616 5733232 1621800 5732912 -1621616 5733232 1621808 5733136 1621800 5732912 1621440 5733160 -1621048 5732784 1621440 5733160 1621800 5732912 1621776 5732752 -1621048 5732784 1621440 5733160 1621776 5732752 1621752 5732672 -1621048 5732784 1621440 5733160 1621752 5732672 1621632 5732520 -1621048 5732784 1621440 5733160 1621632 5732520 1621496 5732416 -1621440 5733160 1621776 5732752 1621752 5732672 1621632 5732520 -1621440 5733160 1621800 5732912 1621776 5732752 1621752 5732672 -1621048 5732784 1615632 5735416 1621440 5733160 1621632 5732520 -1621440 5733160 1615632 5735512 1621616 5733232 1621800 5732912 -1621440 5733160 1621616 5733232 1621800 5732912 1621776 5732752 -1621440 5733160 1621232 5732992 1615632 5735416 1615632 5735512 -1615632 5735416 1621232 5732992 1621048 5732784 1615584 5735320 -1621440 5733160 1621232 5732992 1615632 5735512 1621616 5733232 -1621440 5733160 1621048 5732784 1621232 5732992 1615632 5735512 -1621048 5732784 1621232 5732992 1621440 5733160 1621632 5732520 -1621440 5733160 1621752 5732672 1621632 5732520 1621232 5732992 -1621048 5732784 1621232 5732992 1621632 5732520 1621496 5732416 -1621048 5732784 1621232 5732992 1621496 5732416 1621032 5732744 -1621440 5733160 1621776 5732752 1621752 5732672 1621232 5732992 -1621752 5732672 1621632 5732520 1621232 5732992 1621776 5732752 -1621048 5732784 1615632 5735416 1621232 5732992 1621496 5732416 -1621440 5733160 1621800 5732912 1621776 5732752 1621232 5732992 -1621232 5732992 1615632 5735512 1621440 5733160 1621776 5732752 -1621632 5732520 1621496 5732416 1621232 5732992 1621752 5732672 -1621232 5732992 1621048 5732784 1615632 5735416 1615632 5735512 -1621232 5732992 1621480 5732944 1621776 5732752 1621752 5732672 -1621232 5732992 1621480 5732944 1621752 5732672 1621632 5732520 -1621480 5732944 1621776 5732752 1621752 5732672 1621632 5732520 -1621480 5732944 1621440 5733160 1621776 5732752 1621752 5732672 -1621776 5732752 1621480 5732944 1621440 5733160 1621800 5732912 -1621776 5732752 1621752 5732672 1621480 5732944 1621800 5732912 -1621480 5732944 1621232 5732992 1621440 5733160 1621800 5732912 -1621232 5732992 1621480 5732944 1621632 5732520 1621496 5732416 -1621480 5732944 1621752 5732672 1621632 5732520 1621496 5732416 -1621232 5732992 1621480 5732944 1621496 5732416 1621048 5732784 -1621496 5732416 1621032 5732744 1621048 5732784 1621480 5732944 -1621480 5732944 1621632 5732520 1621496 5732416 1621048 5732784 -1621232 5732992 1621440 5733160 1621480 5732944 1621048 5732784 -1621440 5733160 1621616 5733232 1621800 5732912 1621480 5732944 -1621440 5733160 1621616 5733232 1621480 5732944 1621232 5732992 -1621616 5733232 1621808 5733136 1621800 5732912 1621480 5732944 -1621616 5733232 1621712 5733232 1621808 5733136 1621480 5732944 -1621800 5732912 1621776 5732752 1621480 5732944 1621808 5733136 -1621616 5733232 1621808 5733136 1621480 5732944 1621440 5733160 -1621048 5732784 1621464 5732944 1621480 5732944 1621496 5732416 -1621048 5732784 1621464 5732944 1621496 5732416 1621032 5732744 -1621464 5732944 1621232 5732992 1621480 5732944 1621496 5732416 -1621480 5732944 1621632 5732520 1621496 5732416 1621464 5732944 -1621480 5732944 1621752 5732672 1621632 5732520 1621464 5732944 -1621496 5732416 1621048 5732784 1621464 5732944 1621632 5732520 -1621480 5732944 1621632 5732520 1621464 5732944 1621232 5732992 -1621480 5732944 1621464 5732944 1621232 5732992 1621440 5733160 -1621480 5732944 1621632 5732520 1621464 5732944 1621440 5733160 -1621480 5732944 1621464 5732944 1621440 5733160 1621616 5733232 -1621464 5732944 1621048 5732784 1621232 5732992 1621440 5733160 -1621048 5732784 1621232 5732992 1621464 5732944 1621496 5732416 -1621464 5732944 1621368 5732912 1621232 5732992 1621440 5733160 -1621368 5732912 1621048 5732784 1621232 5732992 1621440 5733160 -1621464 5732944 1621368 5732912 1621440 5733160 1621480 5732944 -1621464 5732944 1621048 5732784 1621368 5732912 1621440 5733160 -1621048 5732784 1621368 5732912 1621464 5732944 1621496 5732416 -1621464 5732944 1621632 5732520 1621496 5732416 1621368 5732912 -1621048 5732784 1621368 5732912 1621496 5732416 1621032 5732744 -1621496 5732416 1621328 5732344 1621032 5732744 1621368 5732912 -1621032 5732744 1621048 5732784 1621368 5732912 1621328 5732344 -1621048 5732784 1621232 5732992 1621368 5732912 1621032 5732744 -1621328 5732344 1621008 5732664 1621032 5732744 1621368 5732912 -1621464 5732944 1621480 5732944 1621632 5732520 1621368 5732912 -1621480 5732944 1621752 5732672 1621632 5732520 1621368 5732912 -1621632 5732520 1621496 5732416 1621368 5732912 1621480 5732944 -1621368 5732912 1621440 5733160 1621464 5732944 1621480 5732944 -1621496 5732416 1621328 5732344 1621368 5732912 1621632 5732520 -1621328 5732344 1621288 5732832 1621368 5732912 1621496 5732416 -1621368 5732912 1621288 5732832 1621032 5732744 1621048 5732784 -1621328 5732344 1621032 5732744 1621288 5732832 1621496 5732416 -1621288 5732832 1621048 5732784 1621368 5732912 1621496 5732416 -1621368 5732912 1621288 5732832 1621048 5732784 1621232 5732992 -1621288 5732832 1621032 5732744 1621048 5732784 1621232 5732992 -1621368 5732912 1621288 5732832 1621232 5732992 1621440 5733160 -1621368 5732912 1621496 5732416 1621288 5732832 1621232 5732992 -1621288 5732832 1621328 5732344 1621032 5732744 1621048 5732784 -1621032 5732744 1621288 5732832 1621328 5732344 1621008 5732664 -1621288 5732832 1621496 5732416 1621328 5732344 1621008 5732664 -1621032 5732744 1621048 5732784 1621288 5732832 1621008 5732664 -1621328 5732344 1621200 5732344 1621008 5732664 1621288 5732832 -1621328 5732344 1621200 5732344 1621288 5732832 1621496 5732416 -1621008 5732664 1621032 5732744 1621288 5732832 1621200 5732344 -1621200 5732344 1620992 5732536 1621008 5732664 1621288 5732832 -1621368 5732912 1621632 5732520 1621496 5732416 1621288 5732832 -1621496 5732416 1621328 5732344 1621288 5732832 1621632 5732520 -1621368 5732912 1621480 5732944 1621632 5732520 1621288 5732832 -1621480 5732944 1621752 5732672 1621632 5732520 1621288 5732832 -1621368 5732912 1621480 5732944 1621288 5732832 1621232 5732992 -1621368 5732912 1621464 5732944 1621480 5732944 1621288 5732832 -1621632 5732520 1621496 5732416 1621288 5732832 1621480 5732944 -1621288 5732832 1621272 5732792 1621008 5732664 1621032 5732744 -1621272 5732792 1621200 5732344 1621008 5732664 1621032 5732744 -1621288 5732832 1621272 5732792 1621032 5732744 1621048 5732784 -1621288 5732832 1621272 5732792 1621048 5732784 1621232 5732992 -1621288 5732832 1621200 5732344 1621272 5732792 1621048 5732784 -1621272 5732792 1621008 5732664 1621032 5732744 1621048 5732784 -1621008 5732664 1621272 5732792 1621200 5732344 1620992 5732536 -1621200 5732344 1621048 5732416 1620992 5732536 1621272 5732792 -1621008 5732664 1621032 5732744 1621272 5732792 1620992 5732536 -1621272 5732792 1621288 5732832 1621200 5732344 1620992 5732536 -1621200 5732344 1621272 5732792 1621288 5732832 1621328 5732344 -1621288 5732832 1621496 5732416 1621328 5732344 1621272 5732792 -1621288 5732832 1621632 5732520 1621496 5732416 1621272 5732792 -1621496 5732416 1621328 5732344 1621272 5732792 1621632 5732520 -1621200 5732344 1620992 5732536 1621272 5732792 1621328 5732344 -1621272 5732792 1621048 5732784 1621288 5732832 1621632 5732520 -1621328 5732344 1621200 5732344 1621272 5732792 1621496 5732416 -1621288 5732832 1621480 5732944 1621632 5732520 1621272 5732792 -1621480 5732944 1621752 5732672 1621632 5732520 1621272 5732792 -1621632 5732520 1621496 5732416 1621272 5732792 1621480 5732944 -1621288 5732832 1621368 5732912 1621480 5732944 1621272 5732792 -1621288 5732832 1621368 5732912 1621272 5732792 1621048 5732784 -1621368 5732912 1621464 5732944 1621480 5732944 1621272 5732792 -1621480 5732944 1621632 5732520 1621272 5732792 1621368 5732912 -1621496 5732416 1621288 5732752 1621272 5732792 1621632 5732520 -1621272 5732792 1621480 5732944 1621632 5732520 1621288 5732752 -1621480 5732944 1621752 5732672 1621632 5732520 1621288 5732752 -1621632 5732520 1621496 5732416 1621288 5732752 1621480 5732944 -1621288 5732752 1621328 5732344 1621272 5732792 1621480 5732944 -1621496 5732416 1621328 5732344 1621288 5732752 1621632 5732520 -1621272 5732792 1621288 5732752 1621328 5732344 1621200 5732344 -1621272 5732792 1621480 5732944 1621288 5732752 1621200 5732344 -1621272 5732792 1621288 5732752 1621200 5732344 1620992 5732536 -1621200 5732344 1621048 5732416 1620992 5732536 1621288 5732752 -1621200 5732344 1621096 5732376 1621048 5732416 1621288 5732752 -1621048 5732416 1620992 5732536 1621288 5732752 1621096 5732376 -1621272 5732792 1621480 5732944 1621288 5732752 1620992 5732536 -1620992 5732536 1621272 5732792 1621288 5732752 1621048 5732416 -1621288 5732752 1621496 5732416 1621328 5732344 1621200 5732344 -1621272 5732792 1621288 5732752 1620992 5732536 1621008 5732664 -1621272 5732792 1621288 5732752 1621008 5732664 1621032 5732744 -1621272 5732792 1621480 5732944 1621288 5732752 1621032 5732744 -1621288 5732752 1621048 5732416 1620992 5732536 1621008 5732664 -1621272 5732792 1621288 5732752 1621032 5732744 1621048 5732784 -1621288 5732752 1621008 5732664 1621032 5732744 1621048 5732784 -1621272 5732792 1621480 5732944 1621288 5732752 1621048 5732784 -1621272 5732792 1621288 5732752 1621048 5732784 1621288 5732832 -1621288 5732752 1620992 5732536 1621008 5732664 1621032 5732744 -1621048 5732416 1621008 5732472 1620992 5732536 1621288 5732752 -1621288 5732752 1621328 5732344 1621200 5732344 1621096 5732376 -1621272 5732792 1621368 5732912 1621480 5732944 1621288 5732752 -1621480 5732944 1621632 5732520 1621288 5732752 1621368 5732912 -1621272 5732792 1621288 5732832 1621368 5732912 1621288 5732752 -1621272 5732792 1621288 5732832 1621288 5732752 1621048 5732784 -1621368 5732912 1621464 5732944 1621480 5732944 1621288 5732752 -1621368 5732912 1621480 5732944 1621288 5732752 1621288 5732832 -1621632 5732520 1621384 5732736 1621480 5732944 1621752 5732672 -1621480 5732944 1621384 5732736 1621288 5732752 1621368 5732912 -1621480 5732944 1621776 5732752 1621752 5732672 1621384 5732736 -1621752 5732672 1621632 5732520 1621384 5732736 1621776 5732752 -1621480 5732944 1621800 5732912 1621776 5732752 1621384 5732736 -1621288 5732752 1621384 5732736 1621632 5732520 1621496 5732416 -1621384 5732736 1621496 5732416 1621288 5732752 1621368 5732912 -1621288 5732752 1621384 5732736 1621496 5732416 1621328 5732344 -1621384 5732736 1621632 5732520 1621496 5732416 1621328 5732344 -1621288 5732752 1621384 5732736 1621328 5732344 1621200 5732344 -1621288 5732752 1621368 5732912 1621384 5732736 1621328 5732344 -1621632 5732520 1621496 5732416 1621384 5732736 1621752 5732672 -1621384 5732736 1621368 5732912 1621480 5732944 1621776 5732752 -1621480 5732944 1621384 5732736 1621368 5732912 1621464 5732944 -1621384 5732736 1621288 5732752 1621368 5732912 1621464 5732944 -1621480 5732944 1621776 5732752 1621384 5732736 1621464 5732944 -1621288 5732752 1621288 5732832 1621368 5732912 1621384 5732736 -1621368 5732912 1621464 5732944 1621384 5732736 1621288 5732832 -1621288 5732752 1621272 5732792 1621288 5732832 1621384 5732736 -1621288 5732752 1621288 5732832 1621384 5732736 1621328 5732344 -1621384 5732736 1621440 5732744 1621776 5732752 1621752 5732672 -1621384 5732736 1621440 5732744 1621752 5732672 1621632 5732520 -1621440 5732744 1621776 5732752 1621752 5732672 1621632 5732520 -1621776 5732752 1621440 5732744 1621480 5732944 1621800 5732912 -1621440 5732744 1621480 5732944 1621776 5732752 1621752 5732672 -1621384 5732736 1621440 5732744 1621632 5732520 1621496 5732416 -1621440 5732744 1621752 5732672 1621632 5732520 1621496 5732416 -1621384 5732736 1621440 5732744 1621496 5732416 1621328 5732344 -1621384 5732736 1621480 5732944 1621440 5732744 1621496 5732416 -1621480 5732944 1621440 5732744 1621384 5732736 1621464 5732944 -1621480 5732944 1621776 5732752 1621440 5732744 1621464 5732944 -1621440 5732744 1621496 5732416 1621384 5732736 1621464 5732944 -1621384 5732736 1621368 5732912 1621464 5732944 1621440 5732744 -1621384 5732736 1621288 5732832 1621368 5732912 1621440 5732744 -1621384 5732736 1621368 5732912 1621440 5732744 1621496 5732416 -1621464 5732944 1621480 5732944 1621440 5732744 1621368 5732912 -1621776 5732752 1621552 5732824 1621480 5732944 1621800 5732912 -1621552 5732824 1621440 5732744 1621480 5732944 1621800 5732912 -1621440 5732744 1621552 5732824 1621776 5732752 1621752 5732672 -1621440 5732744 1621552 5732824 1621752 5732672 1621632 5732520 -1621440 5732744 1621552 5732824 1621632 5732520 1621496 5732416 -1621552 5732824 1621776 5732752 1621752 5732672 1621632 5732520 -1621440 5732744 1621480 5732944 1621552 5732824 1621632 5732520 -1621480 5732944 1621552 5732824 1621440 5732744 1621464 5732944 -1621480 5732944 1621800 5732912 1621552 5732824 1621464 5732944 -1621552 5732824 1621632 5732520 1621440 5732744 1621464 5732944 -1621776 5732752 1621752 5732672 1621552 5732824 1621800 5732912 -1621440 5732744 1621368 5732912 1621464 5732944 1621552 5732824 -1621480 5732944 1621808 5733136 1621800 5732912 1621552 5732824 -1621552 5732824 1621568 5732848 1621800 5732912 1621776 5732752 -1621480 5732944 1621568 5732848 1621552 5732824 1621464 5732944 -1621568 5732848 1621480 5732944 1621800 5732912 1621776 5732752 -1621552 5732824 1621568 5732848 1621776 5732752 1621752 5732672 -1621552 5732824 1621480 5732944 1621568 5732848 1621776 5732752 -1621800 5732912 1621568 5732848 1621480 5732944 1621808 5733136 -1621480 5732944 1621552 5732912 1621568 5732848 1621552 5732824 -1621480 5732944 1621800 5732912 1621552 5732912 1621552 5732824 -1621552 5732912 1621800 5732912 1621568 5732848 1621552 5732824 -1621480 5732944 1621552 5732912 1621552 5732824 1621464 5732944 -1621568 5732848 1621552 5732912 1621800 5732912 1621776 5732752 -1621800 5732912 1621552 5732912 1621480 5732944 1621808 5733136 -1621800 5732912 1621568 5732848 1621552 5732912 1621808 5733136 -1621552 5732912 1621552 5732824 1621480 5732944 1621808 5733136 -1621480 5732944 1621616 5733232 1621808 5733136 1621552 5732912 -1621616 5733232 1621712 5733232 1621808 5733136 1621552 5732912 -1621480 5732944 1621616 5733232 1621552 5732912 1621552 5732824 -1621808 5733136 1621800 5732912 1621552 5732912 1621616 5733232 -1621480 5732944 1621440 5733160 1621616 5733232 1621552 5732912 -1629928 5726696 1630632 5743536 1631096 5748624 1629944 5726624 -1629928 5726696 1630592 5747248 1630632 5743536 1629944 5726624 -1630632 5743536 1630592 5747248 1631096 5748624 1629944 5726624 -1631096 5748624 1631896 5750984 1629944 5726624 1630632 5743536 -1631096 5748624 1631896 5750984 1630632 5743536 1630592 5747248 -1629944 5726624 1629928 5726696 1630632 5743536 1631896 5750984 -1631096 5748624 1631808 5750832 1631896 5750984 1630632 5743536 -1630592 5747248 1630632 5743536 1629928 5726696 1628320 5743048 -1630592 5747248 1630632 5743536 1628320 5743048 1630456 5747104 -1629928 5726696 1628304 5743016 1628320 5743048 1630632 5743536 -1629928 5726696 1629872 5726768 1628304 5743016 1630632 5743536 -1628304 5743016 1628320 5743048 1630632 5743536 1629872 5726768 -1630632 5743536 1629944 5726624 1629928 5726696 1629872 5726768 -1629872 5726768 1629776 5726856 1628304 5743016 1630632 5743536 -1629872 5726768 1629776 5726856 1630632 5743536 1629928 5726696 -1628304 5743016 1628320 5743048 1630632 5743536 1629776 5726856 -1630592 5747248 1630632 5743536 1630456 5747104 1630544 5747200 -1630632 5743536 1628304 5743016 1628320 5743048 1630456 5747104 -1631096 5748624 1630632 5743536 1630592 5747248 1631072 5748576 -1631896 5750984 1751256 5699792 1629944 5726624 1630632 5743536 -1629944 5726624 1629928 5726696 1630632 5743536 1751256 5699792 -1631896 5750984 1751256 5699792 1630632 5743536 1631096 5748624 -1751256 5699792 1629944 5726576 1629944 5726624 1630632 5743536 -1631896 5750984 1631920 5751080 1751256 5699792 1630632 5743536 -1631896 5750984 1631920 5751080 1630632 5743536 1631096 5748624 -1631920 5751080 1760125 5760125 1751256 5699792 1630632 5743536 -1751256 5699792 1629944 5726624 1630632 5743536 1631920 5751080 -1630592 5747248 1631096 5748624 1630632 5743536 1630456 5747104 -1629776 5726856 1628272 5742976 1628304 5743016 1630632 5743536 -1628304 5743016 1628320 5743048 1630632 5743536 1628272 5742976 -1629776 5726856 1628272 5742976 1630632 5743536 1629872 5726768 -1629776 5726856 1629584 5726976 1628272 5742976 1630632 5743536 -1629776 5726856 1629584 5726976 1630632 5743536 1629872 5726768 -1628272 5742976 1628304 5743016 1630632 5743536 1629584 5726976 -1628320 5743048 1630416 5747064 1630456 5747104 1630632 5743536 -1630456 5747104 1630592 5747248 1630632 5743536 1630416 5747064 -1628320 5743048 1630368 5747016 1630416 5747064 1630632 5743536 -1628320 5743048 1630328 5746984 1630368 5747016 1630632 5743536 -1630368 5747016 1630416 5747064 1630632 5743536 1630328 5746984 -1628320 5743048 1630328 5746984 1630632 5743536 1628304 5743016 -1628320 5743048 1628320 5743088 1630328 5746984 1630632 5743536 -1628320 5743088 1628320 5743136 1630328 5746984 1630632 5743536 -1630328 5746984 1630368 5747016 1630632 5743536 1628320 5743136 -1628320 5743136 1630280 5746960 1630328 5746984 1630632 5743536 -1628320 5743136 1630280 5746960 1630632 5743536 1628320 5743088 -1630328 5746984 1630368 5747016 1630632 5743536 1630280 5746960 -1628320 5743136 1628288 5743232 1630280 5746960 1630632 5743536 -1628320 5743136 1628288 5743232 1630632 5743536 1628320 5743088 -1628288 5743232 1630192 5746944 1630280 5746960 1630632 5743536 -1628288 5743232 1628088 5745496 1630192 5746944 1630632 5743536 -1630192 5746944 1630280 5746960 1630632 5743536 1628088 5745496 -1628288 5743232 1628064 5745440 1628088 5745496 1630632 5743536 -1628088 5745496 1630192 5746944 1630632 5743536 1628064 5745440 -1628088 5745496 1628104 5745544 1630192 5746944 1630632 5743536 -1628104 5745544 1630128 5746960 1630192 5746944 1630632 5743536 -1630192 5746944 1630280 5746960 1630632 5743536 1628104 5745544 -1628088 5745496 1628104 5745544 1630632 5743536 1628064 5745440 -1630280 5746960 1630328 5746984 1630632 5743536 1630192 5746944 -1628288 5743232 1628064 5745440 1630632 5743536 1628320 5743136 -1628288 5743232 1628224 5743288 1628064 5745440 1630632 5743536 -1628320 5743048 1628320 5743088 1630632 5743536 1628304 5743016 -1628320 5743088 1628320 5743136 1630632 5743536 1628320 5743048 -1630416 5747064 1630456 5747104 1630632 5743536 1630368 5747016 -1629584 5726976 1628168 5742888 1628272 5742976 1630632 5743536 -1629584 5726976 1621808 5733136 1628168 5742888 1630632 5743536 -1628168 5742888 1628224 5742936 1628272 5742976 1630632 5743536 -1628272 5742976 1628304 5743016 1630632 5743536 1628224 5742936 -1629584 5726976 1628168 5742888 1630632 5743536 1629776 5726856 -1628168 5742888 1628224 5742936 1630632 5743536 1629584 5726976 -1751256 5699792 1630864 5743768 1631920 5751080 1760125 5760125 -1630632 5743536 1630864 5743768 1751256 5699792 1629944 5726624 -1630632 5743536 1631920 5751080 1630864 5743768 1629944 5726624 -1630632 5743536 1630864 5743768 1629944 5726624 1629928 5726696 -1630632 5743536 1630864 5743768 1629928 5726696 1629872 5726768 -1630632 5743536 1630864 5743768 1629872 5726768 1629776 5726856 -1630632 5743536 1631920 5751080 1630864 5743768 1629872 5726768 -1630864 5743768 1629944 5726624 1629928 5726696 1629872 5726768 -1751256 5699792 1629944 5726576 1629944 5726624 1630864 5743768 -1630864 5743768 1751256 5699792 1629944 5726624 1629928 5726696 -1631920 5751080 1630864 5743768 1630632 5743536 1631896 5750984 -1630864 5743768 1629872 5726768 1630632 5743536 1631896 5750984 -1630632 5743536 1631096 5748624 1631896 5750984 1630864 5743768 -1630632 5743536 1630592 5747248 1631096 5748624 1630864 5743768 -1630632 5743536 1630592 5747248 1630864 5743768 1629872 5726768 -1631096 5748624 1631896 5750984 1630864 5743768 1630592 5747248 -1631096 5748624 1631808 5750832 1631896 5750984 1630864 5743768 -1631920 5751080 1751256 5699792 1630864 5743768 1631896 5750984 -1630592 5747248 1631072 5748576 1631096 5748624 1630864 5743768 -1630592 5747248 1631072 5748576 1630864 5743768 1630632 5743536 -1631096 5748624 1631896 5750984 1630864 5743768 1631072 5748576 -1630592 5747248 1630592 5747288 1631072 5748576 1630864 5743768 -1631896 5750984 1631920 5751080 1630864 5743768 1631096 5748624 -1630632 5743536 1630456 5747104 1630592 5747248 1630864 5743768 -1630632 5743536 1630416 5747064 1630456 5747104 1630864 5743768 -1630592 5747248 1631072 5748576 1630864 5743768 1630456 5747104 -1630632 5743536 1630416 5747064 1630864 5743768 1629872 5726768 -1630456 5747104 1630544 5747200 1630592 5747248 1630864 5743768 -1630592 5747248 1631072 5748576 1630864 5743768 1630544 5747200 -1630456 5747104 1630544 5747200 1630864 5743768 1630416 5747064 -1630864 5743768 1631920 5751080 1751256 5699792 1629944 5726624 -1630632 5743536 1630368 5747016 1630416 5747064 1630864 5743768 -1630416 5747064 1630456 5747104 1630864 5743768 1630368 5747016 -1630632 5743536 1630368 5747016 1630864 5743768 1629872 5726768 -1630632 5743536 1630328 5746984 1630368 5747016 1630864 5743768 -1630632 5743536 1630328 5746984 1630864 5743768 1629872 5726768 -1630632 5743536 1630280 5746960 1630328 5746984 1630864 5743768 -1630632 5743536 1630280 5746960 1630864 5743768 1629872 5726768 -1630328 5746984 1630368 5747016 1630864 5743768 1630280 5746960 -1630632 5743536 1630192 5746944 1630280 5746960 1630864 5743768 -1630632 5743536 1630192 5746944 1630864 5743768 1629872 5726768 -1630632 5743536 1628104 5745544 1630192 5746944 1630864 5743768 -1630632 5743536 1628104 5745544 1630864 5743768 1629872 5726768 -1628104 5745544 1630128 5746960 1630192 5746944 1630864 5743768 -1630280 5746960 1630328 5746984 1630864 5743768 1630192 5746944 -1630632 5743536 1628088 5745496 1628104 5745544 1630864 5743768 -1630632 5743536 1628088 5745496 1630864 5743768 1629872 5726768 -1628104 5745544 1630192 5746944 1630864 5743768 1628088 5745496 -1630632 5743536 1628064 5745440 1628088 5745496 1630864 5743768 -1630632 5743536 1628064 5745440 1630864 5743768 1629872 5726768 -1630632 5743536 1628288 5743232 1628064 5745440 1630864 5743768 -1628088 5745496 1628104 5745544 1630864 5743768 1628064 5745440 -1630192 5746944 1630280 5746960 1630864 5743768 1628104 5745544 -1630368 5747016 1630416 5747064 1630864 5743768 1630328 5746984 -1630456 5747104 1630496 5747152 1630544 5747200 1630864 5743768 -1631920 5751080 1630952 5743928 1630864 5743768 1631896 5750984 -1630952 5743928 1751256 5699792 1630864 5743768 1631896 5750984 -1631920 5751080 1751256 5699792 1630952 5743928 1631896 5750984 -1751256 5699792 1630952 5743928 1631920 5751080 1760125 5760125 -1751256 5699792 1630952 5743928 1760125 5760125 1751376 5699848 -1631920 5751080 1631896 5751280 1760125 5760125 1630952 5743928 -1751256 5699792 1630864 5743768 1630952 5743928 1760125 5760125 -1630952 5743928 1631896 5750984 1631920 5751080 1760125 5760125 -1630864 5743768 1631096 5748624 1631896 5750984 1630952 5743928 -1630864 5743768 1631072 5748576 1631096 5748624 1630952 5743928 -1631096 5748624 1631808 5750832 1631896 5750984 1630952 5743928 -1630864 5743768 1631072 5748576 1630952 5743928 1751256 5699792 -1631896 5750984 1631920 5751080 1630952 5743928 1631096 5748624 -1630864 5743768 1630592 5747248 1631072 5748576 1630952 5743928 -1630864 5743768 1630544 5747200 1630592 5747248 1630952 5743928 -1631072 5748576 1631096 5748624 1630952 5743928 1630592 5747248 -1630864 5743768 1630456 5747104 1630544 5747200 1630952 5743928 -1630544 5747200 1630592 5747248 1630952 5743928 1630456 5747104 -1630864 5743768 1630456 5747104 1630952 5743928 1751256 5699792 -1630592 5747248 1630592 5747288 1631072 5748576 1630952 5743928 -1630592 5747248 1631072 5748576 1630952 5743928 1630544 5747200 -1631096 5748624 1631896 5750984 1630952 5743928 1631072 5748576 -1630864 5743768 1630416 5747064 1630456 5747104 1630952 5743928 -1630864 5743768 1630368 5747016 1630416 5747064 1630952 5743928 -1630456 5747104 1630544 5747200 1630952 5743928 1630416 5747064 -1630864 5743768 1630368 5747016 1630952 5743928 1751256 5699792 -1630416 5747064 1630456 5747104 1630952 5743928 1630368 5747016 -1630864 5743768 1630952 5743928 1751256 5699792 1629944 5726624 -1630864 5743768 1630368 5747016 1630952 5743928 1629944 5726624 -1630952 5743928 1760125 5760125 1751256 5699792 1629944 5726624 -1751256 5699792 1629944 5726576 1629944 5726624 1630952 5743928 -1630864 5743768 1630952 5743928 1629944 5726624 1629928 5726696 -1630864 5743768 1630952 5743928 1629928 5726696 1629872 5726768 -1630864 5743768 1630368 5747016 1630952 5743928 1629928 5726696 -1630952 5743928 1751256 5699792 1629944 5726624 1629928 5726696 -1630864 5743768 1630328 5746984 1630368 5747016 1630952 5743928 -1630368 5747016 1630416 5747064 1630952 5743928 1630328 5746984 -1630864 5743768 1630280 5746960 1630328 5746984 1630952 5743928 -1630864 5743768 1630192 5746944 1630280 5746960 1630952 5743928 -1630280 5746960 1630328 5746984 1630952 5743928 1630192 5746944 -1630864 5743768 1630192 5746944 1630952 5743928 1629928 5726696 -1630864 5743768 1628104 5745544 1630192 5746944 1630952 5743928 -1628104 5745544 1630128 5746960 1630192 5746944 1630952 5743928 -1630864 5743768 1628088 5745496 1628104 5745544 1630952 5743928 -1630192 5746944 1630280 5746960 1630952 5743928 1628104 5745544 -1630864 5743768 1628064 5745440 1628088 5745496 1630952 5743928 -1628088 5745496 1628104 5745544 1630952 5743928 1628064 5745440 -1630864 5743768 1630632 5743536 1628064 5745440 1630952 5743928 -1630632 5743536 1628288 5743232 1628064 5745440 1630952 5743928 -1628064 5745440 1628088 5745496 1630952 5743928 1630632 5743536 -1630864 5743768 1630632 5743536 1630952 5743928 1629928 5726696 -1628104 5745544 1630192 5746944 1630952 5743928 1628088 5745496 -1630328 5746984 1630368 5747016 1630952 5743928 1630280 5746960 -1630456 5747104 1630496 5747152 1630544 5747200 1630952 5743928 -1760125 5760125 1630992 5744048 1631920 5751080 1631896 5751280 -1631920 5751080 1630992 5744048 1630952 5743928 1631896 5750984 -1630952 5743928 1631096 5748624 1631896 5750984 1630992 5744048 -1631096 5748624 1631808 5750832 1631896 5750984 1630992 5744048 -1630992 5744048 1760125 5760125 1630952 5743928 1631096 5748624 -1631896 5750984 1631920 5751080 1630992 5744048 1631096 5748624 -1630952 5743928 1630992 5744048 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1630992 5744048 -1630952 5743928 1630992 5744048 1751256 5699792 1629944 5726624 -1630952 5743928 1631096 5748624 1630992 5744048 1629944 5726624 -1630992 5744048 1760125 5760125 1751256 5699792 1629944 5726624 -1751256 5699792 1629944 5726576 1629944 5726624 1630992 5744048 -1630952 5743928 1631072 5748576 1631096 5748624 1630992 5744048 -1630952 5743928 1630592 5747248 1631072 5748576 1630992 5744048 -1631096 5748624 1631896 5750984 1630992 5744048 1631072 5748576 -1630952 5743928 1630592 5747248 1630992 5744048 1629944 5726624 -1630592 5747248 1630592 5747288 1631072 5748576 1630992 5744048 -1630952 5743928 1630544 5747200 1630592 5747248 1630992 5744048 -1630952 5743928 1630456 5747104 1630544 5747200 1630992 5744048 -1630592 5747248 1631072 5748576 1630992 5744048 1630544 5747200 -1630952 5743928 1630416 5747064 1630456 5747104 1630992 5744048 -1630456 5747104 1630544 5747200 1630992 5744048 1630416 5747064 -1630952 5743928 1630416 5747064 1630992 5744048 1629944 5726624 -1630544 5747200 1630592 5747248 1630992 5744048 1630456 5747104 -1631072 5748576 1631096 5748624 1630992 5744048 1630592 5747248 -1630952 5743928 1630368 5747016 1630416 5747064 1630992 5744048 -1630952 5743928 1630328 5746984 1630368 5747016 1630992 5744048 -1630416 5747064 1630456 5747104 1630992 5744048 1630368 5747016 -1630952 5743928 1630328 5746984 1630992 5744048 1629944 5726624 -1630368 5747016 1630416 5747064 1630992 5744048 1630328 5746984 -1630952 5743928 1630992 5744048 1629944 5726624 1629928 5726696 -1630992 5744048 1631920 5751080 1760125 5760125 1751256 5699792 -1631920 5751080 1760125 5760125 1630992 5744048 1631896 5750984 -1630952 5743928 1630280 5746960 1630328 5746984 1630992 5744048 -1630328 5746984 1630368 5747016 1630992 5744048 1630280 5746960 -1630952 5743928 1630192 5746944 1630280 5746960 1630992 5744048 -1630952 5743928 1628104 5745544 1630192 5746944 1630992 5744048 -1630192 5746944 1630280 5746960 1630992 5744048 1628104 5745544 -1628104 5745544 1630128 5746960 1630192 5746944 1630992 5744048 -1630952 5743928 1628104 5745544 1630992 5744048 1629944 5726624 -1630952 5743928 1628088 5745496 1628104 5745544 1630992 5744048 -1630952 5743928 1628064 5745440 1628088 5745496 1630992 5744048 -1628104 5745544 1630192 5746944 1630992 5744048 1628088 5745496 -1630952 5743928 1630632 5743536 1628064 5745440 1630992 5744048 -1628064 5745440 1628088 5745496 1630992 5744048 1630632 5743536 -1630632 5743536 1628288 5743232 1628064 5745440 1630992 5744048 -1630952 5743928 1630864 5743768 1630632 5743536 1630992 5744048 -1630632 5743536 1628064 5745440 1630992 5744048 1630864 5743768 -1630952 5743928 1630864 5743768 1630992 5744048 1629944 5726624 -1628088 5745496 1628104 5745544 1630992 5744048 1628064 5745440 -1630280 5746960 1630328 5746984 1630992 5744048 1630192 5746944 -1630456 5747104 1630496 5747152 1630544 5747200 1630992 5744048 -1630592 5747248 1630976 5744216 1630992 5744048 1630544 5747200 -1630592 5747248 1631072 5748576 1630976 5744216 1630544 5747200 -1631072 5748576 1630976 5744216 1630592 5747248 1630592 5747288 -1630992 5744048 1630456 5747104 1630544 5747200 1630976 5744216 -1630992 5744048 1630416 5747064 1630456 5747104 1630976 5744216 -1630544 5747200 1630592 5747248 1630976 5744216 1630456 5747104 -1630992 5744048 1630368 5747016 1630416 5747064 1630976 5744216 -1630416 5747064 1630456 5747104 1630976 5744216 1630368 5747016 -1630456 5747104 1630544 5747200 1630976 5744216 1630416 5747064 -1630992 5744048 1630976 5744216 1631072 5748576 1631096 5748624 -1630992 5744048 1630976 5744216 1631096 5748624 1631896 5750984 -1631096 5748624 1631808 5750832 1631896 5750984 1630976 5744216 -1630992 5744048 1630976 5744216 1631896 5750984 1631920 5751080 -1630976 5744216 1631072 5748576 1631096 5748624 1631896 5750984 -1630992 5744048 1630328 5746984 1630368 5747016 1630976 5744216 -1630992 5744048 1630280 5746960 1630328 5746984 1630976 5744216 -1630368 5747016 1630416 5747064 1630976 5744216 1630328 5746984 -1630328 5746984 1630368 5747016 1630976 5744216 1630280 5746960 -1630976 5744216 1631896 5750984 1630992 5744048 1630280 5746960 -1630976 5744216 1630592 5747248 1631072 5748576 1631096 5748624 -1630992 5744048 1630192 5746944 1630280 5746960 1630976 5744216 -1630280 5746960 1630328 5746984 1630976 5744216 1630192 5746944 -1630992 5744048 1628104 5745544 1630192 5746944 1630976 5744216 -1628104 5745544 1630128 5746960 1630192 5746944 1630976 5744216 -1628104 5745544 1630128 5746960 1630976 5744216 1630992 5744048 -1628104 5745544 1628096 5745568 1630128 5746960 1630976 5744216 -1630992 5744048 1628088 5745496 1628104 5745544 1630976 5744216 -1628104 5745544 1630128 5746960 1630976 5744216 1628088 5745496 -1630992 5744048 1628064 5745440 1628088 5745496 1630976 5744216 -1630992 5744048 1630632 5743536 1628064 5745440 1630976 5744216 -1630632 5743536 1628288 5743232 1628064 5745440 1630976 5744216 -1628088 5745496 1628104 5745544 1630976 5744216 1628064 5745440 -1630992 5744048 1630864 5743768 1630632 5743536 1630976 5744216 -1630632 5743536 1628064 5745440 1630976 5744216 1630864 5743768 -1630992 5744048 1630952 5743928 1630864 5743768 1630976 5744216 -1630864 5743768 1630632 5743536 1630976 5744216 1630952 5743928 -1628064 5745440 1628088 5745496 1630976 5744216 1630632 5743536 -1630992 5744048 1630952 5743928 1630976 5744216 1631896 5750984 -1630192 5746944 1630280 5746960 1630976 5744216 1630128 5746960 -1630456 5747104 1630496 5747152 1630544 5747200 1630976 5744216 -1628104 5745544 1630944 5744304 1630976 5744216 1628088 5745496 -1628104 5745544 1630128 5746960 1630944 5744304 1628088 5745496 -1630976 5744216 1630944 5744304 1630128 5746960 1630192 5746944 -1630944 5744304 1628104 5745544 1630128 5746960 1630192 5746944 -1630128 5746960 1630944 5744304 1628104 5745544 1628096 5745568 -1630976 5744216 1628064 5745440 1628088 5745496 1630944 5744304 -1628088 5745496 1628104 5745544 1630944 5744304 1628064 5745440 -1630976 5744216 1630632 5743536 1628064 5745440 1630944 5744304 -1630976 5744216 1630864 5743768 1630632 5743536 1630944 5744304 -1630632 5743536 1628288 5743232 1628064 5745440 1630944 5744304 -1628064 5745440 1628088 5745496 1630944 5744304 1630632 5743536 -1630976 5744216 1630952 5743928 1630864 5743768 1630944 5744304 -1630864 5743768 1630632 5743536 1630944 5744304 1630952 5743928 -1630976 5744216 1630992 5744048 1630952 5743928 1630944 5744304 -1630632 5743536 1628064 5745440 1630944 5744304 1630864 5743768 -1630944 5744304 1630192 5746944 1630976 5744216 1630952 5743928 -1630976 5744216 1630944 5744304 1630192 5746944 1630280 5746960 -1630976 5744216 1630944 5744304 1630280 5746960 1630328 5746984 -1630944 5744304 1630128 5746960 1630192 5746944 1630280 5746960 -1630976 5744216 1630944 5744304 1630328 5746984 1630368 5747016 -1630944 5744304 1630280 5746960 1630328 5746984 1630368 5747016 -1630976 5744216 1630944 5744304 1630368 5747016 1630416 5747064 -1630976 5744216 1630944 5744304 1630416 5747064 1630456 5747104 -1630944 5744304 1630368 5747016 1630416 5747064 1630456 5747104 -1630976 5744216 1630944 5744304 1630456 5747104 1630544 5747200 -1630944 5744304 1630416 5747064 1630456 5747104 1630544 5747200 -1630976 5744216 1630944 5744304 1630544 5747200 1630592 5747248 -1630976 5744216 1630944 5744304 1630592 5747248 1631072 5748576 -1630944 5744304 1630544 5747200 1630592 5747248 1631072 5748576 -1630592 5747248 1630592 5747288 1631072 5748576 1630944 5744304 -1630944 5744304 1630456 5747104 1630544 5747200 1630592 5747248 -1630944 5744304 1630328 5746984 1630368 5747016 1630416 5747064 -1630976 5744216 1630944 5744304 1631072 5748576 1631096 5748624 -1630944 5744304 1630592 5747248 1631072 5748576 1631096 5748624 -1630976 5744216 1630944 5744304 1631096 5748624 1631896 5750984 -1630976 5744216 1630952 5743928 1630944 5744304 1631096 5748624 -1630944 5744304 1630192 5746944 1630280 5746960 1630328 5746984 -1630456 5747104 1630496 5747152 1630544 5747200 1630944 5744304 -1630944 5744304 1630768 5744584 1630128 5746960 1630192 5746944 -1630944 5744304 1628104 5745544 1630768 5744584 1630192 5746944 -1628104 5745544 1630768 5744584 1630944 5744304 1628088 5745496 -1630768 5744584 1630192 5746944 1630944 5744304 1628088 5745496 -1630768 5744584 1628104 5745544 1630128 5746960 1630192 5746944 -1630944 5744304 1628064 5745440 1628088 5745496 1630768 5744584 -1630944 5744304 1628064 5745440 1630768 5744584 1630192 5746944 -1628088 5745496 1628104 5745544 1630768 5744584 1628064 5745440 -1630944 5744304 1630768 5744584 1630192 5746944 1630280 5746960 -1630768 5744584 1630128 5746960 1630192 5746944 1630280 5746960 -1630944 5744304 1628064 5745440 1630768 5744584 1630280 5746960 -1630128 5746960 1630768 5744584 1628104 5745544 1628096 5745568 -1630944 5744304 1630632 5743536 1628064 5745440 1630768 5744584 -1630944 5744304 1630632 5743536 1630768 5744584 1630280 5746960 -1628064 5745440 1628088 5745496 1630768 5744584 1630632 5743536 -1630632 5743536 1628288 5743232 1628064 5745440 1630768 5744584 -1628064 5745440 1628088 5745496 1630768 5744584 1628288 5743232 -1630632 5743536 1628288 5743232 1630768 5744584 1630944 5744304 -1628104 5745544 1630128 5746960 1630768 5744584 1628088 5745496 -1630944 5744304 1630864 5743768 1630632 5743536 1630768 5744584 -1630944 5744304 1630864 5743768 1630768 5744584 1630280 5746960 -1630944 5744304 1630952 5743928 1630864 5743768 1630768 5744584 -1630632 5743536 1628288 5743232 1630768 5744584 1630864 5743768 -1630632 5743536 1628320 5743136 1628288 5743232 1630768 5744584 -1628288 5743232 1628224 5743288 1628064 5745440 1630768 5744584 -1628064 5745440 1628088 5745496 1630768 5744584 1628224 5743288 -1628288 5743232 1628224 5743288 1630768 5744584 1630632 5743536 -1628288 5743232 1628240 5743264 1628224 5743288 1630768 5744584 -1628224 5743288 1628032 5745400 1628064 5745440 1630768 5744584 -1628224 5743288 1627880 5745216 1628032 5745400 1630768 5744584 -1628064 5745440 1628088 5745496 1630768 5744584 1628032 5745400 -1628224 5743288 1628032 5745400 1630768 5744584 1628288 5743232 -1630944 5744304 1630768 5744584 1630280 5746960 1630328 5746984 -1630944 5744304 1630864 5743768 1630768 5744584 1630328 5746984 -1630944 5744304 1630768 5744584 1630328 5746984 1630368 5747016 -1630944 5744304 1630864 5743768 1630768 5744584 1630368 5747016 -1630768 5744584 1630192 5746944 1630280 5746960 1630328 5746984 -1630944 5744304 1630768 5744584 1630368 5747016 1630416 5747064 -1630944 5744304 1630864 5743768 1630768 5744584 1630416 5747064 -1630768 5744584 1630328 5746984 1630368 5747016 1630416 5747064 -1630944 5744304 1630768 5744584 1630416 5747064 1630456 5747104 -1630944 5744304 1630864 5743768 1630768 5744584 1630456 5747104 -1630944 5744304 1630768 5744584 1630456 5747104 1630544 5747200 -1630944 5744304 1630864 5743768 1630768 5744584 1630544 5747200 -1630768 5744584 1630416 5747064 1630456 5747104 1630544 5747200 -1630944 5744304 1630768 5744584 1630544 5747200 1630592 5747248 -1630944 5744304 1630864 5743768 1630768 5744584 1630592 5747248 -1630768 5744584 1630456 5747104 1630544 5747200 1630592 5747248 -1630944 5744304 1630768 5744584 1630592 5747248 1631072 5748576 -1630768 5744584 1630368 5747016 1630416 5747064 1630456 5747104 -1630768 5744584 1630280 5746960 1630328 5746984 1630368 5747016 -1630456 5747104 1630496 5747152 1630544 5747200 1630768 5744584 -1630768 5744584 1630760 5744656 1630544 5747200 1630592 5747248 -1630456 5747104 1630760 5744656 1630768 5744584 1630416 5747064 -1630768 5744584 1630416 5747064 1630760 5744656 1630592 5747248 -1630760 5744656 1630456 5747104 1630544 5747200 1630592 5747248 -1630456 5747104 1630544 5747200 1630760 5744656 1630416 5747064 -1630768 5744584 1630760 5744656 1630592 5747248 1630944 5744304 -1630760 5744656 1630544 5747200 1630592 5747248 1630944 5744304 -1630592 5747248 1631072 5748576 1630944 5744304 1630760 5744656 -1630768 5744584 1630416 5747064 1630760 5744656 1630944 5744304 -1630768 5744584 1630368 5747016 1630416 5747064 1630760 5744656 -1630768 5744584 1630328 5746984 1630368 5747016 1630760 5744656 -1630416 5747064 1630456 5747104 1630760 5744656 1630368 5747016 -1630768 5744584 1630328 5746984 1630760 5744656 1630944 5744304 -1630368 5747016 1630416 5747064 1630760 5744656 1630328 5746984 -1630768 5744584 1630280 5746960 1630328 5746984 1630760 5744656 -1630328 5746984 1630368 5747016 1630760 5744656 1630280 5746960 -1630768 5744584 1630192 5746944 1630280 5746960 1630760 5744656 -1630768 5744584 1630128 5746960 1630192 5746944 1630760 5744656 -1630768 5744584 1628104 5745544 1630128 5746960 1630760 5744656 -1630128 5746960 1630192 5746944 1630760 5744656 1628104 5745544 -1630192 5746944 1630280 5746960 1630760 5744656 1630128 5746960 -1628104 5745544 1628096 5745568 1630128 5746960 1630760 5744656 -1630768 5744584 1628104 5745544 1630760 5744656 1630944 5744304 -1630768 5744584 1628088 5745496 1628104 5745544 1630760 5744656 -1630768 5744584 1628064 5745440 1628088 5745496 1630760 5744656 -1628104 5745544 1630128 5746960 1630760 5744656 1628088 5745496 -1630768 5744584 1628032 5745400 1628064 5745440 1630760 5744656 -1628064 5745440 1628088 5745496 1630760 5744656 1628032 5745400 -1630768 5744584 1628032 5745400 1630760 5744656 1630944 5744304 -1628088 5745496 1628104 5745544 1630760 5744656 1628064 5745440 -1630768 5744584 1628224 5743288 1628032 5745400 1630760 5744656 -1630280 5746960 1630328 5746984 1630760 5744656 1630192 5746944 -1630544 5747200 1630760 5744656 1630456 5747104 1630496 5747152 -1630592 5747248 1630776 5744688 1630760 5744656 1630544 5747200 -1630944 5744304 1630776 5744688 1630592 5747248 1631072 5748576 -1630760 5744656 1630456 5747104 1630544 5747200 1630776 5744688 -1630544 5747200 1630592 5747248 1630776 5744688 1630456 5747104 -1630776 5744688 1630944 5744304 1630760 5744656 1630456 5747104 -1630760 5744656 1630416 5747064 1630456 5747104 1630776 5744688 -1630760 5744656 1630368 5747016 1630416 5747064 1630776 5744688 -1630456 5747104 1630544 5747200 1630776 5744688 1630416 5747064 -1630760 5744656 1630368 5747016 1630776 5744688 1630944 5744304 -1630416 5747064 1630456 5747104 1630776 5744688 1630368 5747016 -1630592 5747248 1630944 5744304 1630776 5744688 1630544 5747200 -1630760 5744656 1630776 5744688 1630944 5744304 1630768 5744584 -1630760 5744656 1630368 5747016 1630776 5744688 1630768 5744584 -1630776 5744688 1630592 5747248 1630944 5744304 1630768 5744584 -1630760 5744656 1630328 5746984 1630368 5747016 1630776 5744688 -1630760 5744656 1630280 5746960 1630328 5746984 1630776 5744688 -1630368 5747016 1630416 5747064 1630776 5744688 1630328 5746984 -1630760 5744656 1630280 5746960 1630776 5744688 1630768 5744584 -1630328 5746984 1630368 5747016 1630776 5744688 1630280 5746960 -1630760 5744656 1630192 5746944 1630280 5746960 1630776 5744688 -1630280 5746960 1630328 5746984 1630776 5744688 1630192 5746944 -1630760 5744656 1630128 5746960 1630192 5746944 1630776 5744688 -1630760 5744656 1628104 5745544 1630128 5746960 1630776 5744688 -1630760 5744656 1628088 5745496 1628104 5745544 1630776 5744688 -1630128 5746960 1630192 5746944 1630776 5744688 1628104 5745544 -1628104 5745544 1628096 5745568 1630128 5746960 1630776 5744688 -1630760 5744656 1628104 5745544 1630776 5744688 1630768 5744584 -1630192 5746944 1630280 5746960 1630776 5744688 1630128 5746960 -1630456 5747104 1630496 5747152 1630544 5747200 1630776 5744688 -1630944 5744304 1630824 5744752 1630592 5747248 1631072 5748576 -1630944 5744304 1630824 5744752 1631072 5748576 1631096 5748624 -1630824 5744752 1630592 5747248 1631072 5748576 1631096 5748624 -1630776 5744688 1630824 5744752 1630944 5744304 1630768 5744584 -1630776 5744688 1630592 5747248 1630824 5744752 1630768 5744584 -1630592 5747248 1630824 5744752 1630776 5744688 1630544 5747200 -1630776 5744688 1630456 5747104 1630544 5747200 1630824 5744752 -1630776 5744688 1630416 5747064 1630456 5747104 1630824 5744752 -1630456 5747104 1630544 5747200 1630824 5744752 1630416 5747064 -1630776 5744688 1630368 5747016 1630416 5747064 1630824 5744752 -1630776 5744688 1630328 5746984 1630368 5747016 1630824 5744752 -1630416 5747064 1630456 5747104 1630824 5744752 1630368 5747016 -1630368 5747016 1630416 5747064 1630824 5744752 1630328 5746984 -1630824 5744752 1630768 5744584 1630776 5744688 1630328 5746984 -1630544 5747200 1630592 5747248 1630824 5744752 1630456 5747104 -1630944 5744304 1630768 5744584 1630824 5744752 1631096 5748624 -1630592 5747248 1630592 5747288 1631072 5748576 1630824 5744752 -1630776 5744688 1630824 5744752 1630768 5744584 1630760 5744656 -1630776 5744688 1630280 5746960 1630328 5746984 1630824 5744752 -1630776 5744688 1630192 5746944 1630280 5746960 1630824 5744752 -1630328 5746984 1630368 5747016 1630824 5744752 1630280 5746960 -1630776 5744688 1630192 5746944 1630824 5744752 1630768 5744584 -1630280 5746960 1630328 5746984 1630824 5744752 1630192 5746944 -1630944 5744304 1630824 5744752 1631096 5748624 1630976 5744216 -1630824 5744752 1631072 5748576 1631096 5748624 1630976 5744216 -1630944 5744304 1630768 5744584 1630824 5744752 1630976 5744216 -1631096 5748624 1631896 5750984 1630976 5744216 1630824 5744752 -1630776 5744688 1630128 5746960 1630192 5746944 1630824 5744752 -1630192 5746944 1630280 5746960 1630824 5744752 1630128 5746960 -1630776 5744688 1628104 5745544 1630128 5746960 1630824 5744752 -1630776 5744688 1630128 5746960 1630824 5744752 1630768 5744584 -1630824 5744752 1630544 5747200 1630592 5747248 1631072 5748576 -1630456 5747104 1630496 5747152 1630544 5747200 1630824 5744752 -1631096 5748624 1630888 5744792 1630824 5744752 1631072 5748576 -1630824 5744752 1630592 5747248 1631072 5748576 1630888 5744792 -1631072 5748576 1631096 5748624 1630888 5744792 1630592 5747248 -1630888 5744792 1630976 5744216 1630824 5744752 1630592 5747248 -1630592 5747248 1630592 5747288 1631072 5748576 1630888 5744792 -1630976 5744216 1630888 5744792 1631096 5748624 1631896 5750984 -1630824 5744752 1630888 5744792 1630976 5744216 1630944 5744304 -1630824 5744752 1630888 5744792 1630944 5744304 1630768 5744584 -1630824 5744752 1630888 5744792 1630768 5744584 1630776 5744688 -1630824 5744752 1630592 5747248 1630888 5744792 1630768 5744584 -1630888 5744792 1630976 5744216 1630944 5744304 1630768 5744584 -1630824 5744752 1630544 5747200 1630592 5747248 1630888 5744792 -1630592 5747248 1631072 5748576 1630888 5744792 1630544 5747200 -1630824 5744752 1630456 5747104 1630544 5747200 1630888 5744792 -1630824 5744752 1630416 5747064 1630456 5747104 1630888 5744792 -1630824 5744752 1630368 5747016 1630416 5747064 1630888 5744792 -1630416 5747064 1630456 5747104 1630888 5744792 1630368 5747016 -1630824 5744752 1630328 5746984 1630368 5747016 1630888 5744792 -1630824 5744752 1630280 5746960 1630328 5746984 1630888 5744792 -1630368 5747016 1630416 5747064 1630888 5744792 1630328 5746984 -1630328 5746984 1630368 5747016 1630888 5744792 1630280 5746960 -1630456 5747104 1630544 5747200 1630888 5744792 1630416 5747064 -1630824 5744752 1630280 5746960 1630888 5744792 1630768 5744584 -1630824 5744752 1630192 5746944 1630280 5746960 1630888 5744792 -1630824 5744752 1630128 5746960 1630192 5746944 1630888 5744792 -1630280 5746960 1630328 5746984 1630888 5744792 1630192 5746944 -1630824 5744752 1630192 5746944 1630888 5744792 1630768 5744584 -1630544 5747200 1630592 5747248 1630888 5744792 1630456 5747104 -1630888 5744792 1631096 5748624 1630976 5744216 1630944 5744304 -1631096 5748624 1630976 5744216 1630888 5744792 1631072 5748576 -1630456 5747104 1630496 5747152 1630544 5747200 1630888 5744792 -1760125 5760125 1631168 5744784 1631920 5751080 1631896 5751280 -1630992 5744048 1631168 5744784 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1631168 5744784 -1630992 5744048 1631168 5744784 1751256 5699792 1629944 5726624 -1630992 5744048 1631168 5744784 1629944 5726624 1630952 5743928 -1751256 5699792 1629944 5726576 1629944 5726624 1631168 5744784 -1631168 5744784 1760125 5760125 1751256 5699792 1629944 5726624 -1631920 5751080 1631168 5744784 1630992 5744048 1631896 5750984 -1631920 5751080 1760125 5760125 1631168 5744784 1631896 5750984 -1630992 5744048 1630976 5744216 1631896 5750984 1631168 5744784 -1630976 5744216 1631096 5748624 1631896 5750984 1631168 5744784 -1631096 5748624 1631808 5750832 1631896 5750984 1631168 5744784 -1630976 5744216 1631096 5748624 1631168 5744784 1630992 5744048 -1630976 5744216 1630888 5744792 1631096 5748624 1631168 5744784 -1631096 5748624 1631896 5750984 1631168 5744784 1630888 5744792 -1630976 5744216 1630888 5744792 1631168 5744784 1630992 5744048 -1631896 5750984 1631920 5751080 1631168 5744784 1631096 5748624 -1630976 5744216 1630944 5744304 1630888 5744792 1631168 5744784 -1630976 5744216 1630944 5744304 1631168 5744784 1630992 5744048 -1630888 5744792 1631096 5748624 1631168 5744784 1630944 5744304 -1630944 5744304 1630768 5744584 1630888 5744792 1631168 5744784 -1630768 5744584 1630824 5744752 1630888 5744792 1631168 5744784 -1630888 5744792 1631096 5748624 1631168 5744784 1630768 5744584 -1630944 5744304 1630768 5744584 1631168 5744784 1630976 5744216 -1630992 5744048 1630976 5744216 1631168 5744784 1629944 5726624 -1630888 5744792 1631072 5748576 1631096 5748624 1631168 5744784 -1630888 5744792 1630592 5747248 1631072 5748576 1631168 5744784 -1630888 5744792 1630544 5747200 1630592 5747248 1631168 5744784 -1630592 5747248 1631072 5748576 1631168 5744784 1630544 5747200 -1631096 5748624 1631896 5750984 1631168 5744784 1631072 5748576 -1630592 5747248 1630592 5747288 1631072 5748576 1631168 5744784 -1630888 5744792 1630544 5747200 1631168 5744784 1630768 5744584 -1630888 5744792 1630456 5747104 1630544 5747200 1631168 5744784 -1630544 5747200 1630592 5747248 1631168 5744784 1630456 5747104 -1630888 5744792 1630416 5747064 1630456 5747104 1631168 5744784 -1630888 5744792 1630368 5747016 1630416 5747064 1631168 5744784 -1630888 5744792 1630328 5746984 1630368 5747016 1631168 5744784 -1630368 5747016 1630416 5747064 1631168 5744784 1630328 5746984 -1630888 5744792 1630280 5746960 1630328 5746984 1631168 5744784 -1630416 5747064 1630456 5747104 1631168 5744784 1630368 5747016 -1630888 5744792 1630328 5746984 1631168 5744784 1630768 5744584 -1630456 5747104 1630544 5747200 1631168 5744784 1630416 5747064 -1631072 5748576 1631096 5748624 1631168 5744784 1630592 5747248 -1631168 5744784 1631920 5751080 1760125 5760125 1751256 5699792 -1630456 5747104 1630496 5747152 1630544 5747200 1631168 5744784 -1631920 5751080 1631312 5744824 1631168 5744784 1631896 5750984 -1631312 5744824 1760125 5760125 1631168 5744784 1631896 5750984 -1631920 5751080 1760125 5760125 1631312 5744824 1631896 5750984 -1760125 5760125 1631312 5744824 1631920 5751080 1631896 5751280 -1631168 5744784 1631096 5748624 1631896 5750984 1631312 5744824 -1631168 5744784 1631096 5748624 1631312 5744824 1760125 5760125 -1631896 5750984 1631920 5751080 1631312 5744824 1631096 5748624 -1631096 5748624 1631808 5750832 1631896 5750984 1631312 5744824 -1631168 5744784 1631072 5748576 1631096 5748624 1631312 5744824 -1631168 5744784 1631072 5748576 1631312 5744824 1760125 5760125 -1631096 5748624 1631896 5750984 1631312 5744824 1631072 5748576 -1631168 5744784 1630592 5747248 1631072 5748576 1631312 5744824 -1631168 5744784 1630544 5747200 1630592 5747248 1631312 5744824 -1631168 5744784 1630544 5747200 1631312 5744824 1760125 5760125 -1631168 5744784 1630456 5747104 1630544 5747200 1631312 5744824 -1630544 5747200 1630592 5747248 1631312 5744824 1630456 5747104 -1631168 5744784 1630456 5747104 1631312 5744824 1760125 5760125 -1631072 5748576 1631096 5748624 1631312 5744824 1630592 5747248 -1630592 5747248 1630592 5747288 1631072 5748576 1631312 5744824 -1631168 5744784 1630416 5747064 1630456 5747104 1631312 5744824 -1631168 5744784 1630416 5747064 1631312 5744824 1760125 5760125 -1630456 5747104 1630544 5747200 1631312 5744824 1630416 5747064 -1631168 5744784 1630368 5747016 1630416 5747064 1631312 5744824 -1631168 5744784 1630368 5747016 1631312 5744824 1760125 5760125 -1631168 5744784 1630328 5746984 1630368 5747016 1631312 5744824 -1631168 5744784 1630328 5746984 1631312 5744824 1760125 5760125 -1631168 5744784 1630888 5744792 1630328 5746984 1631312 5744824 -1631168 5744784 1630888 5744792 1631312 5744824 1760125 5760125 -1630328 5746984 1630368 5747016 1631312 5744824 1630888 5744792 -1630888 5744792 1630280 5746960 1630328 5746984 1631312 5744824 -1630368 5747016 1630416 5747064 1631312 5744824 1630328 5746984 -1630416 5747064 1630456 5747104 1631312 5744824 1630368 5747016 -1630592 5747248 1631072 5748576 1631312 5744824 1630544 5747200 -1631168 5744784 1631312 5744824 1760125 5760125 1751256 5699792 -1631168 5744784 1630888 5744792 1631312 5744824 1751256 5699792 -1631312 5744824 1631920 5751080 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1631312 5744824 -1631168 5744784 1631312 5744824 1751256 5699792 1629944 5726624 -1631168 5744784 1630888 5744792 1631312 5744824 1629944 5726624 -1631168 5744784 1631312 5744824 1629944 5726624 1630992 5744048 -1631168 5744784 1630888 5744792 1631312 5744824 1630992 5744048 -1629944 5726624 1630952 5743928 1630992 5744048 1631312 5744824 -1630992 5744048 1631168 5744784 1631312 5744824 1630952 5743928 -1751256 5699792 1629944 5726576 1629944 5726624 1631312 5744824 -1629944 5726624 1629928 5726696 1630952 5743928 1631312 5744824 -1630952 5743928 1630992 5744048 1631312 5744824 1629928 5726696 -1629928 5726696 1630864 5743768 1630952 5743928 1631312 5744824 -1631312 5744824 1751256 5699792 1629944 5726624 1629928 5726696 -1631168 5744784 1631312 5744824 1630992 5744048 1630976 5744216 -1631168 5744784 1630888 5744792 1631312 5744824 1630976 5744216 -1631168 5744784 1631312 5744824 1630976 5744216 1630944 5744304 -1631168 5744784 1630888 5744792 1631312 5744824 1630944 5744304 -1631312 5744824 1630952 5743928 1630992 5744048 1630976 5744216 -1631168 5744784 1631312 5744824 1630944 5744304 1630768 5744584 -1631312 5744824 1630992 5744048 1630976 5744216 1630944 5744304 -1631312 5744824 1760125 5760125 1751256 5699792 1629944 5726624 -1630456 5747104 1630496 5747152 1630544 5747200 1631312 5744824 -1631312 5744824 1631312 5744920 1631896 5750984 1631920 5751080 -1631312 5744824 1631096 5748624 1631312 5744920 1631920 5751080 -1631312 5744824 1631312 5744920 1631920 5751080 1760125 5760125 -1631896 5750984 1631312 5744920 1631096 5748624 1631808 5750832 -1631312 5744920 1631096 5748624 1631896 5750984 1631920 5751080 -1631096 5748624 1631312 5744920 1631312 5744824 1631072 5748576 -1631312 5744920 1631920 5751080 1631312 5744824 1631072 5748576 -1631312 5744824 1630592 5747248 1631072 5748576 1631312 5744920 -1631312 5744824 1630592 5747248 1631312 5744920 1631920 5751080 -1630592 5747248 1630592 5747288 1631072 5748576 1631312 5744920 -1631096 5748624 1631896 5750984 1631312 5744920 1631072 5748576 -1631072 5748576 1631096 5748624 1631312 5744920 1630592 5747248 -1631312 5744824 1630544 5747200 1630592 5747248 1631312 5744920 -1631312 5744824 1630456 5747104 1630544 5747200 1631312 5744920 -1631312 5744824 1630456 5747104 1631312 5744920 1631920 5751080 -1631312 5744824 1630416 5747064 1630456 5747104 1631312 5744920 -1630456 5747104 1630544 5747200 1631312 5744920 1630416 5747064 -1631312 5744824 1630416 5747064 1631312 5744920 1631920 5751080 -1630592 5747248 1631072 5748576 1631312 5744920 1630544 5747200 -1631312 5744824 1630368 5747016 1630416 5747064 1631312 5744920 -1631312 5744824 1630368 5747016 1631312 5744920 1631920 5751080 -1630416 5747064 1630456 5747104 1631312 5744920 1630368 5747016 -1631312 5744824 1630328 5746984 1630368 5747016 1631312 5744920 -1631312 5744824 1630328 5746984 1631312 5744920 1631920 5751080 -1631312 5744824 1630888 5744792 1630328 5746984 1631312 5744920 -1631312 5744824 1630888 5744792 1631312 5744920 1631920 5751080 -1631312 5744824 1631168 5744784 1630888 5744792 1631312 5744920 -1631312 5744824 1631168 5744784 1631312 5744920 1631920 5751080 -1630888 5744792 1630328 5746984 1631312 5744920 1631168 5744784 -1630888 5744792 1630280 5746960 1630328 5746984 1631312 5744920 -1630888 5744792 1630280 5746960 1631312 5744920 1631168 5744784 -1630888 5744792 1630192 5746944 1630280 5746960 1631312 5744920 -1630328 5746984 1630368 5747016 1631312 5744920 1630280 5746960 -1630368 5747016 1630416 5747064 1631312 5744920 1630328 5746984 -1630544 5747200 1630592 5747248 1631312 5744920 1630456 5747104 -1630456 5747104 1630496 5747152 1630544 5747200 1631312 5744920 -1630888 5744792 1631256 5744952 1631312 5744920 1631168 5744784 -1630280 5746960 1631256 5744952 1630888 5744792 1630192 5746944 -1631312 5744920 1631312 5744824 1631168 5744784 1631256 5744952 -1631168 5744784 1630888 5744792 1631256 5744952 1631312 5744824 -1631312 5744920 1631256 5744952 1630280 5746960 1630328 5746984 -1631312 5744920 1631256 5744952 1630328 5746984 1630368 5747016 -1631256 5744952 1630280 5746960 1630328 5746984 1630368 5747016 -1631256 5744952 1630368 5747016 1631312 5744920 1631312 5744824 -1631256 5744952 1630888 5744792 1630280 5746960 1630328 5746984 -1630888 5744792 1630280 5746960 1631256 5744952 1631168 5744784 -1631312 5744920 1631256 5744952 1630368 5747016 1630416 5747064 -1631312 5744920 1631256 5744952 1630416 5747064 1630456 5747104 -1631312 5744920 1631256 5744952 1630456 5747104 1630544 5747200 -1631256 5744952 1630416 5747064 1630456 5747104 1630544 5747200 -1631256 5744952 1630328 5746984 1630368 5747016 1630416 5747064 -1631312 5744920 1631312 5744824 1631256 5744952 1630544 5747200 -1631256 5744952 1630368 5747016 1630416 5747064 1630456 5747104 -1631312 5744920 1631256 5744952 1630544 5747200 1630592 5747248 -1631256 5744952 1630456 5747104 1630544 5747200 1630592 5747248 -1631312 5744920 1631256 5744952 1630592 5747248 1631072 5748576 -1631312 5744920 1631312 5744824 1631256 5744952 1630592 5747248 -1630456 5747104 1630496 5747152 1630544 5747200 1631256 5744952 -1630280 5746960 1631136 5745000 1630888 5744792 1630192 5746944 -1631256 5744952 1631136 5745000 1630280 5746960 1630328 5746984 -1631256 5744952 1631136 5745000 1630328 5746984 1630368 5747016 -1631256 5744952 1631136 5745000 1630368 5747016 1630416 5747064 -1631136 5745000 1630328 5746984 1630368 5747016 1630416 5747064 -1631136 5745000 1630280 5746960 1630328 5746984 1630368 5747016 -1631256 5744952 1630888 5744792 1631136 5745000 1630416 5747064 -1630888 5744792 1630824 5744752 1630192 5746944 1631136 5745000 -1630888 5744792 1631136 5745000 1631256 5744952 1631168 5744784 -1631256 5744952 1631312 5744824 1631168 5744784 1631136 5745000 -1631136 5745000 1630416 5747064 1631256 5744952 1631168 5744784 -1630280 5746960 1630328 5746984 1631136 5745000 1630192 5746944 -1631136 5745000 1631168 5744784 1630888 5744792 1630192 5746944 -1631256 5744952 1631136 5745000 1630416 5747064 1630456 5747104 -1631256 5744952 1631136 5745000 1630456 5747104 1630544 5747200 -1631256 5744952 1631136 5745000 1630544 5747200 1630592 5747248 -1631136 5745000 1630456 5747104 1630544 5747200 1630592 5747248 -1631136 5745000 1630368 5747016 1630416 5747064 1630456 5747104 -1631256 5744952 1631168 5744784 1631136 5745000 1630592 5747248 -1631136 5745000 1630416 5747064 1630456 5747104 1630544 5747200 -1631256 5744952 1631136 5745000 1630592 5747248 1631312 5744920 -1630456 5747104 1630496 5747152 1630544 5747200 1631136 5745000 -1631136 5745000 1630904 5745040 1630192 5746944 1630280 5746960 -1630192 5746944 1630904 5745040 1630888 5744792 1630824 5744752 -1630192 5746944 1630904 5745040 1630824 5744752 1630128 5746960 -1630904 5745040 1631136 5745000 1630888 5744792 1630824 5744752 -1630904 5745040 1630888 5744792 1630824 5744752 1630128 5746960 -1630824 5744752 1630776 5744688 1630128 5746960 1630904 5745040 -1630128 5746960 1630192 5746944 1630904 5745040 1630776 5744688 -1630776 5744688 1628104 5745544 1630128 5746960 1630904 5745040 -1630776 5744688 1630760 5744656 1628104 5745544 1630904 5745040 -1630128 5746960 1630192 5746944 1630904 5745040 1628104 5745544 -1628104 5745544 1628096 5745568 1630128 5746960 1630904 5745040 -1630824 5744752 1630776 5744688 1630904 5745040 1630888 5744792 -1630776 5744688 1628104 5745544 1630904 5745040 1630824 5744752 -1631136 5745000 1630904 5745040 1630280 5746960 1630328 5746984 -1630904 5745040 1630192 5746944 1630280 5746960 1630328 5746984 -1631136 5745000 1630904 5745040 1630328 5746984 1630368 5747016 -1631136 5745000 1630904 5745040 1630368 5747016 1630416 5747064 -1630904 5745040 1630280 5746960 1630328 5746984 1630368 5747016 -1631136 5745000 1630888 5744792 1630904 5745040 1630368 5747016 -1630888 5744792 1630904 5745040 1631136 5745000 1631168 5744784 -1630904 5745040 1630128 5746960 1630192 5746944 1630280 5746960 -1628104 5745544 1630616 5745056 1630776 5744688 1630760 5744656 -1628104 5745544 1630616 5745056 1630760 5744656 1628088 5745496 -1630616 5745056 1630776 5744688 1630760 5744656 1628088 5745496 -1630904 5745040 1630616 5745056 1628104 5745544 1630128 5746960 -1630904 5745040 1630616 5745056 1630128 5746960 1630192 5746944 -1630616 5745056 1628104 5745544 1630128 5746960 1630192 5746944 -1628104 5745544 1628096 5745568 1630128 5746960 1630616 5745056 -1630904 5745040 1630776 5744688 1630616 5745056 1630192 5746944 -1628104 5745544 1630128 5746960 1630616 5745056 1628088 5745496 -1630616 5745056 1630904 5745040 1630776 5744688 1630760 5744656 -1630760 5744656 1628064 5745440 1628088 5745496 1630616 5745056 -1630760 5744656 1628064 5745440 1630616 5745056 1630776 5744688 -1630760 5744656 1628032 5745400 1628064 5745440 1630616 5745056 -1630760 5744656 1628032 5745400 1630616 5745056 1630776 5744688 -1628088 5745496 1628104 5745544 1630616 5745056 1628064 5745440 -1630760 5744656 1630768 5744584 1628032 5745400 1630616 5745056 -1630760 5744656 1630768 5744584 1630616 5745056 1630776 5744688 -1628032 5745400 1628064 5745440 1630616 5745056 1630768 5744584 -1628064 5745440 1628088 5745496 1630616 5745056 1628032 5745400 -1630768 5744584 1628224 5743288 1628032 5745400 1630616 5745056 -1628032 5745400 1628064 5745440 1630616 5745056 1628224 5743288 -1628224 5743288 1627880 5745216 1628032 5745400 1630616 5745056 -1630768 5744584 1628224 5743288 1630616 5745056 1630760 5744656 -1630768 5744584 1628288 5743232 1628224 5743288 1630616 5745056 -1630768 5744584 1628288 5743232 1630616 5745056 1630760 5744656 -1630768 5744584 1630632 5743536 1628288 5743232 1630616 5745056 -1628288 5743232 1628240 5743264 1628224 5743288 1630616 5745056 -1628224 5743288 1628032 5745400 1630616 5745056 1628288 5743232 -1630776 5744688 1630616 5745056 1630904 5745040 1630824 5744752 -1630616 5745056 1630192 5746944 1630904 5745040 1630824 5744752 -1630776 5744688 1630760 5744656 1630616 5745056 1630824 5744752 -1630904 5745040 1630888 5744792 1630824 5744752 1630616 5745056 -1630904 5745040 1630616 5745056 1630192 5746944 1630280 5746960 -1630616 5745056 1630128 5746960 1630192 5746944 1630280 5746960 -1630904 5745040 1630616 5745056 1630280 5746960 1630328 5746984 -1630904 5745040 1630824 5744752 1630616 5745056 1630328 5746984 -1630904 5745040 1630616 5745056 1630328 5746984 1630368 5747016 -1630616 5745056 1630192 5746944 1630280 5746960 1630328 5746984 -1630616 5745056 1630464 5745032 1628032 5745400 1628064 5745440 -1628032 5745400 1630464 5745032 1628224 5743288 1627880 5745216 -1630464 5745032 1628224 5743288 1628032 5745400 1628064 5745440 -1630616 5745056 1628224 5743288 1630464 5745032 1628064 5745440 -1630616 5745056 1630464 5745032 1628064 5745440 1628088 5745496 -1630464 5745032 1628032 5745400 1628064 5745440 1628088 5745496 -1630616 5745056 1630464 5745032 1628088 5745496 1628104 5745544 -1630616 5745056 1630464 5745032 1628104 5745544 1630128 5746960 -1630464 5745032 1628088 5745496 1628104 5745544 1630128 5746960 -1630616 5745056 1630464 5745032 1630128 5746960 1630192 5746944 -1630616 5745056 1630464 5745032 1630192 5746944 1630280 5746960 -1628104 5745544 1628096 5745568 1630128 5746960 1630464 5745032 -1630464 5745032 1628104 5745544 1630128 5746960 1630192 5746944 -1630616 5745056 1628224 5743288 1630464 5745032 1630192 5746944 -1630464 5745032 1628064 5745440 1628088 5745496 1628104 5745544 -1628224 5743288 1630464 5745032 1630616 5745056 1628288 5743232 -1628224 5743288 1628032 5745400 1630464 5745032 1628288 5743232 -1630464 5745032 1630192 5746944 1630616 5745056 1628288 5743232 -1628224 5743288 1630464 5745032 1628288 5743232 1628240 5743264 -1630616 5745056 1630768 5744584 1628288 5743232 1630464 5745032 -1630616 5745056 1630760 5744656 1630768 5744584 1630464 5745032 -1630616 5745056 1630776 5744688 1630760 5744656 1630464 5745032 -1630760 5744656 1630768 5744584 1630464 5745032 1630776 5744688 -1630768 5744584 1630632 5743536 1628288 5743232 1630464 5745032 -1630768 5744584 1630864 5743768 1630632 5743536 1630464 5745032 -1630616 5745056 1630776 5744688 1630464 5745032 1630192 5746944 -1630616 5745056 1630824 5744752 1630776 5744688 1630464 5745032 -1630632 5743536 1628320 5743136 1628288 5743232 1630464 5745032 -1630768 5744584 1630632 5743536 1630464 5745032 1630760 5744656 -1628288 5743232 1628224 5743288 1630464 5745032 1630632 5743536 -1628032 5745400 1630304 5744984 1628224 5743288 1627880 5745216 -1630464 5745032 1630304 5744984 1628032 5745400 1628064 5745440 -1630464 5745032 1630304 5744984 1628064 5745440 1628088 5745496 -1630304 5744984 1628032 5745400 1628064 5745440 1628088 5745496 -1630464 5745032 1628224 5743288 1630304 5744984 1628088 5745496 -1628224 5743288 1630304 5744984 1630464 5745032 1628288 5743232 -1630304 5744984 1628088 5745496 1630464 5745032 1628288 5743232 -1630304 5744984 1628224 5743288 1628032 5745400 1628064 5745440 -1628224 5743288 1630304 5744984 1628288 5743232 1628240 5743264 -1630464 5745032 1630304 5744984 1628088 5745496 1628104 5745544 -1630304 5744984 1628064 5745440 1628088 5745496 1628104 5745544 -1630464 5745032 1630304 5744984 1628104 5745544 1630128 5746960 -1630464 5745032 1628288 5743232 1630304 5744984 1630128 5746960 -1628104 5745544 1628096 5745568 1630128 5746960 1630304 5744984 -1630464 5745032 1630304 5744984 1630128 5746960 1630192 5746944 -1630304 5744984 1628104 5745544 1630128 5746960 1630192 5746944 -1630464 5745032 1628288 5743232 1630304 5744984 1630192 5746944 -1630464 5745032 1630304 5744984 1630192 5746944 1630616 5745056 -1630304 5744984 1628088 5745496 1628104 5745544 1630128 5746960 -1628224 5743288 1628032 5745400 1630304 5744984 1628288 5743232 -1630464 5745032 1630632 5743536 1628288 5743232 1630304 5744984 -1630464 5745032 1630632 5743536 1630304 5744984 1630192 5746944 -1628288 5743232 1628224 5743288 1630304 5744984 1630632 5743536 -1630464 5745032 1630768 5744584 1630632 5743536 1630304 5744984 -1630464 5745032 1630768 5744584 1630304 5744984 1630192 5746944 -1630768 5744584 1630864 5743768 1630632 5743536 1630304 5744984 -1630632 5743536 1628320 5743136 1628288 5743232 1630304 5744984 -1630464 5745032 1630760 5744656 1630768 5744584 1630304 5744984 -1630464 5745032 1630776 5744688 1630760 5744656 1630304 5744984 -1630464 5745032 1630760 5744656 1630304 5744984 1630192 5746944 -1630768 5744584 1630632 5743536 1630304 5744984 1630760 5744656 -1630632 5743536 1628288 5743232 1630304 5744984 1630768 5744584 -1628032 5745400 1630240 5744936 1628224 5743288 1627880 5745216 -1628032 5745400 1630240 5744936 1627880 5745216 1627984 5745352 -1630304 5744984 1630240 5744936 1628032 5745400 1628064 5745440 -1630304 5744984 1630240 5744936 1628064 5745440 1628088 5745496 -1630304 5744984 1630240 5744936 1628088 5745496 1628104 5745544 -1630240 5744936 1628064 5745440 1628088 5745496 1628104 5745544 -1630240 5744936 1628032 5745400 1628064 5745440 1628088 5745496 -1630304 5744984 1628224 5743288 1630240 5744936 1628104 5745544 -1628224 5743288 1627840 5745184 1627880 5745216 1630240 5744936 -1630304 5744984 1630240 5744936 1628104 5745544 1630128 5746960 -1630240 5744936 1628088 5745496 1628104 5745544 1630128 5746960 -1630304 5744984 1630240 5744936 1630128 5746960 1630192 5746944 -1630304 5744984 1628224 5743288 1630240 5744936 1630128 5746960 -1628104 5745544 1628096 5745568 1630128 5746960 1630240 5744936 -1628224 5743288 1630240 5744936 1630304 5744984 1628288 5743232 -1630304 5744984 1630632 5743536 1628288 5743232 1630240 5744936 -1630240 5744936 1630128 5746960 1630304 5744984 1630632 5743536 -1628224 5743288 1630240 5744936 1628288 5743232 1628240 5743264 -1630632 5743536 1628320 5743136 1628288 5743232 1630240 5744936 -1628288 5743232 1628224 5743288 1630240 5744936 1630632 5743536 -1628032 5745400 1628064 5745440 1630240 5744936 1627880 5745216 -1630240 5744936 1628288 5743232 1628224 5743288 1627880 5745216 -1630304 5744984 1630768 5744584 1630632 5743536 1630240 5744936 -1630632 5743536 1628288 5743232 1630240 5744936 1630768 5744584 -1630304 5744984 1630768 5744584 1630240 5744936 1630128 5746960 -1630304 5744984 1630760 5744656 1630768 5744584 1630240 5744936 -1630304 5744984 1630760 5744656 1630240 5744936 1630128 5746960 -1630768 5744584 1630864 5743768 1630632 5743536 1630240 5744936 -1630304 5744984 1630464 5745032 1630760 5744656 1630240 5744936 -1630768 5744584 1630632 5743536 1630240 5744936 1630760 5744656 -1630632 5743536 1630176 5744848 1630240 5744936 1630768 5744584 -1630632 5743536 1628288 5743232 1630176 5744848 1630768 5744584 -1630632 5743536 1630176 5744848 1630768 5744584 1630864 5743768 -1628288 5743232 1630176 5744848 1630632 5743536 1628320 5743136 -1630240 5744936 1630176 5744848 1628288 5743232 1628224 5743288 -1628288 5743232 1628240 5743264 1628224 5743288 1630176 5744848 -1630176 5744848 1628224 5743288 1630240 5744936 1630768 5744584 -1630240 5744936 1630176 5744848 1628224 5743288 1627880 5745216 -1630240 5744936 1630176 5744848 1627880 5745216 1628032 5745400 -1627880 5745216 1627984 5745352 1628032 5745400 1630176 5744848 -1628224 5743288 1627840 5745184 1627880 5745216 1630176 5744848 -1630176 5744848 1628288 5743232 1628224 5743288 1627880 5745216 -1630240 5744936 1630176 5744848 1628032 5745400 1628064 5745440 -1630176 5744848 1627880 5745216 1628032 5745400 1628064 5745440 -1630240 5744936 1630176 5744848 1628064 5745440 1628088 5745496 -1630240 5744936 1630176 5744848 1628088 5745496 1628104 5745544 -1630240 5744936 1630176 5744848 1628104 5745544 1630128 5746960 -1630176 5744848 1628064 5745440 1628088 5745496 1628104 5745544 -1630176 5744848 1628032 5745400 1628064 5745440 1628088 5745496 -1630240 5744936 1630768 5744584 1630176 5744848 1628104 5745544 -1630176 5744848 1628224 5743288 1627880 5745216 1628032 5745400 -1630176 5744848 1630632 5743536 1628288 5743232 1628224 5743288 -1630240 5744936 1630760 5744656 1630768 5744584 1630176 5744848 -1630768 5744584 1630632 5743536 1630176 5744848 1630760 5744656 -1630240 5744936 1630304 5744984 1630760 5744656 1630176 5744848 -1630240 5744936 1630760 5744656 1630176 5744848 1628104 5745544 -1630632 5743536 1630176 5744736 1630176 5744848 1630768 5744584 -1630176 5744848 1630760 5744656 1630768 5744584 1630176 5744736 -1630176 5744736 1628288 5743232 1630176 5744848 1630760 5744656 -1630768 5744584 1630632 5743536 1630176 5744736 1630760 5744656 -1630632 5743536 1628288 5743232 1630176 5744736 1630768 5744584 -1630632 5743536 1630176 5744736 1630768 5744584 1630864 5743768 -1630176 5744736 1630760 5744656 1630768 5744584 1630864 5743768 -1630632 5743536 1628288 5743232 1630176 5744736 1630864 5743768 -1630768 5744584 1630944 5744304 1630864 5743768 1630176 5744736 -1628288 5743232 1630176 5744736 1630632 5743536 1628320 5743136 -1630176 5744848 1630176 5744736 1628288 5743232 1628224 5743288 -1630176 5744848 1630760 5744656 1630176 5744736 1628224 5743288 -1630176 5744736 1630632 5743536 1628288 5743232 1628224 5743288 -1628288 5743232 1628240 5743264 1628224 5743288 1630176 5744736 -1630176 5744848 1630176 5744736 1628224 5743288 1627880 5745216 -1630176 5744848 1630760 5744656 1630176 5744736 1627880 5745216 -1628224 5743288 1627840 5745184 1627880 5745216 1630176 5744736 -1630176 5744848 1630176 5744736 1627880 5745216 1628032 5745400 -1630176 5744848 1630176 5744736 1628032 5745400 1628064 5745440 -1627880 5745216 1627984 5745352 1628032 5745400 1630176 5744736 -1630176 5744848 1630760 5744656 1630176 5744736 1628064 5745440 -1630176 5744736 1628224 5743288 1627880 5745216 1628032 5745400 -1630176 5744848 1630176 5744736 1628064 5745440 1628088 5745496 -1630176 5744736 1627880 5745216 1628032 5745400 1628064 5745440 -1630176 5744736 1628288 5743232 1628224 5743288 1627880 5745216 -1630176 5744848 1630240 5744936 1630760 5744656 1630176 5744736 -1630760 5744656 1630768 5744584 1630176 5744736 1630240 5744936 -1630176 5744848 1630240 5744936 1630176 5744736 1628064 5745440 -1630240 5744936 1630304 5744984 1630760 5744656 1630176 5744736 -1630760 5744656 1630768 5744584 1630176 5744736 1630304 5744984 -1630304 5744984 1630464 5745032 1630760 5744656 1630176 5744736 -1630464 5745032 1630776 5744688 1630760 5744656 1630176 5744736 -1630760 5744656 1630768 5744584 1630176 5744736 1630464 5745032 -1630304 5744984 1630464 5745032 1630176 5744736 1630240 5744936 -1630240 5744936 1630304 5744984 1630176 5744736 1630176 5744848 -1630768 5744584 1630248 5744704 1630176 5744736 1630760 5744656 -1630768 5744584 1630864 5743768 1630248 5744704 1630760 5744656 -1630176 5744736 1630464 5745032 1630760 5744656 1630248 5744704 -1630464 5745032 1630776 5744688 1630760 5744656 1630248 5744704 -1630760 5744656 1630768 5744584 1630248 5744704 1630464 5745032 -1630248 5744704 1630864 5743768 1630176 5744736 1630464 5745032 -1630176 5744736 1630248 5744704 1630864 5743768 1630632 5743536 -1630248 5744704 1630768 5744584 1630864 5743768 1630632 5743536 -1630176 5744736 1630464 5745032 1630248 5744704 1630632 5743536 -1630176 5744736 1630248 5744704 1630632 5743536 1628288 5743232 -1630864 5743768 1630248 5744704 1630768 5744584 1630944 5744304 -1630864 5743768 1630632 5743536 1630248 5744704 1630944 5744304 -1630248 5744704 1630760 5744656 1630768 5744584 1630944 5744304 -1630864 5743768 1630248 5744704 1630944 5744304 1630952 5743928 -1630176 5744736 1630304 5744984 1630464 5745032 1630248 5744704 -1630464 5745032 1630760 5744656 1630248 5744704 1630304 5744984 -1630176 5744736 1630304 5744984 1630248 5744704 1630632 5743536 -1630176 5744736 1630240 5744936 1630304 5744984 1630248 5744704 -1630176 5744736 1630240 5744936 1630248 5744704 1630632 5743536 -1630304 5744984 1630464 5745032 1630248 5744704 1630240 5744936 -1630176 5744736 1630176 5744848 1630240 5744936 1630248 5744704 -1630176 5744736 1630176 5744848 1630248 5744704 1630632 5743536 -1630240 5744936 1630304 5744984 1630248 5744704 1630176 5744848 -1630768 5744584 1630408 5744648 1630248 5744704 1630760 5744656 -1630408 5744648 1630944 5744304 1630248 5744704 1630760 5744656 -1630768 5744584 1630944 5744304 1630408 5744648 1630760 5744656 -1630248 5744704 1630464 5745032 1630760 5744656 1630408 5744648 -1630248 5744704 1630464 5745032 1630408 5744648 1630944 5744304 -1630760 5744656 1630768 5744584 1630408 5744648 1630464 5745032 -1630464 5745032 1630776 5744688 1630760 5744656 1630408 5744648 -1630464 5745032 1630616 5745056 1630776 5744688 1630408 5744648 -1630760 5744656 1630768 5744584 1630408 5744648 1630776 5744688 -1630776 5744688 1630760 5744656 1630408 5744648 1630616 5745056 -1630248 5744704 1630304 5744984 1630464 5745032 1630408 5744648 -1630248 5744704 1630304 5744984 1630408 5744648 1630944 5744304 -1630464 5745032 1630616 5745056 1630408 5744648 1630304 5744984 -1630616 5745056 1630824 5744752 1630776 5744688 1630408 5744648 -1630248 5744704 1630408 5744648 1630944 5744304 1630864 5743768 -1630248 5744704 1630408 5744648 1630864 5743768 1630632 5743536 -1630248 5744704 1630304 5744984 1630408 5744648 1630632 5743536 -1630408 5744648 1630768 5744584 1630944 5744304 1630864 5743768 -1630944 5744304 1630952 5743928 1630864 5743768 1630408 5744648 -1630248 5744704 1630408 5744648 1630632 5743536 1630176 5744736 -1630408 5744648 1630944 5744304 1630864 5743768 1630632 5743536 -1630248 5744704 1630240 5744936 1630304 5744984 1630408 5744648 -1630408 5744648 1630512 5744600 1630944 5744304 1630864 5743768 -1630408 5744648 1630768 5744584 1630512 5744600 1630864 5743768 -1630768 5744584 1630512 5744600 1630408 5744648 1630760 5744656 -1630408 5744648 1630776 5744688 1630760 5744656 1630512 5744600 -1630512 5744600 1630864 5743768 1630408 5744648 1630776 5744688 -1630408 5744648 1630616 5745056 1630776 5744688 1630512 5744600 -1630408 5744648 1630464 5745032 1630616 5745056 1630512 5744600 -1630776 5744688 1630760 5744656 1630512 5744600 1630616 5745056 -1630408 5744648 1630464 5745032 1630512 5744600 1630864 5743768 -1630616 5745056 1630776 5744688 1630512 5744600 1630464 5745032 -1630760 5744656 1630768 5744584 1630512 5744600 1630776 5744688 -1630512 5744600 1630768 5744584 1630944 5744304 1630864 5743768 -1630768 5744584 1630944 5744304 1630512 5744600 1630760 5744656 -1630408 5744648 1630304 5744984 1630464 5745032 1630512 5744600 -1630944 5744304 1630952 5743928 1630864 5743768 1630512 5744600 -1630864 5743768 1630408 5744648 1630512 5744600 1630952 5743928 -1630944 5744304 1630952 5743928 1630512 5744600 1630768 5744584 -1630616 5745056 1630824 5744752 1630776 5744688 1630512 5744600 -1630944 5744304 1630976 5744216 1630952 5743928 1630512 5744600 -1630408 5744648 1630512 5744600 1630864 5743768 1630632 5743536 -1630408 5744648 1630512 5744600 1630632 5743536 1630248 5744704 -1630512 5744600 1630952 5743928 1630864 5743768 1630632 5743536 -1630408 5744648 1630464 5745032 1630512 5744600 1630632 5743536 -1630944 5744304 1630552 5744560 1630512 5744600 1630768 5744584 -1630552 5744560 1630952 5743928 1630512 5744600 1630768 5744584 -1630512 5744600 1630760 5744656 1630768 5744584 1630552 5744560 -1630512 5744600 1630776 5744688 1630760 5744656 1630552 5744560 -1630768 5744584 1630944 5744304 1630552 5744560 1630760 5744656 -1630512 5744600 1630760 5744656 1630552 5744560 1630952 5743928 -1630512 5744600 1630552 5744560 1630952 5743928 1630864 5743768 -1630512 5744600 1630552 5744560 1630864 5743768 1630632 5743536 -1630512 5744600 1630760 5744656 1630552 5744560 1630632 5743536 -1630552 5744560 1630944 5744304 1630952 5743928 1630864 5743768 -1630552 5744560 1630952 5743928 1630864 5743768 1630632 5743536 -1630952 5743928 1630552 5744560 1630944 5744304 1630976 5744216 -1630944 5744304 1630952 5743928 1630552 5744560 1630768 5744584 -1630512 5744600 1630552 5744560 1630632 5743536 1630408 5744648 -1630632 5743536 1630248 5744704 1630408 5744648 1630552 5744560 -1630552 5744560 1630864 5743768 1630632 5743536 1630408 5744648 -1630512 5744600 1630760 5744656 1630552 5744560 1630408 5744648 -1630408 5744648 1630528 5744392 1630632 5743536 1630248 5744704 -1630632 5743536 1630528 5744392 1630552 5744560 1630864 5743768 -1630552 5744560 1630952 5743928 1630864 5743768 1630528 5744392 -1630864 5743768 1630632 5743536 1630528 5744392 1630952 5743928 -1630552 5744560 1630944 5744304 1630952 5743928 1630528 5744392 -1630952 5743928 1630864 5743768 1630528 5744392 1630944 5744304 -1630632 5743536 1630176 5744736 1630248 5744704 1630528 5744392 -1630248 5744704 1630408 5744648 1630528 5744392 1630176 5744736 -1630632 5743536 1628288 5743232 1630176 5744736 1630528 5744392 -1630944 5744304 1630976 5744216 1630952 5743928 1630528 5744392 -1630944 5744304 1630976 5744216 1630528 5744392 1630552 5744560 -1630952 5743928 1630864 5743768 1630528 5744392 1630976 5744216 -1630976 5744216 1630992 5744048 1630952 5743928 1630528 5744392 -1630952 5743928 1630864 5743768 1630528 5744392 1630992 5744048 -1630976 5744216 1630992 5744048 1630528 5744392 1630944 5744304 -1630528 5744392 1630408 5744648 1630552 5744560 1630944 5744304 -1630552 5744560 1630768 5744584 1630944 5744304 1630528 5744392 -1630552 5744560 1630760 5744656 1630768 5744584 1630528 5744392 -1630944 5744304 1630976 5744216 1630528 5744392 1630768 5744584 -1630552 5744560 1630768 5744584 1630528 5744392 1630408 5744648 -1630408 5744648 1630552 5744560 1630528 5744392 1630248 5744704 -1630528 5744392 1630864 5743768 1630632 5743536 1630176 5744736 -1630552 5744560 1630528 5744392 1630408 5744648 1630512 5744600 -1630552 5744560 1630768 5744584 1630528 5744392 1630512 5744600 -1630528 5744392 1630248 5744704 1630408 5744648 1630512 5744600 -1630176 5744736 1630440 5744176 1630632 5743536 1628288 5743232 -1630176 5744736 1630440 5744176 1628288 5743232 1628224 5743288 -1630528 5744392 1630440 5744176 1630176 5744736 1630248 5744704 -1630528 5744392 1630440 5744176 1630248 5744704 1630408 5744648 -1630176 5744736 1630248 5744704 1630440 5744176 1628288 5743232 -1630440 5744176 1630528 5744392 1630632 5743536 1628288 5743232 -1630528 5744392 1630632 5743536 1630440 5744176 1630248 5744704 -1630632 5743536 1630440 5744176 1630528 5744392 1630864 5743768 -1630528 5744392 1630952 5743928 1630864 5743768 1630440 5744176 -1630528 5744392 1630992 5744048 1630952 5743928 1630440 5744176 -1630952 5743928 1630864 5743768 1630440 5744176 1630992 5744048 -1630632 5743536 1628288 5743232 1630440 5744176 1630864 5743768 -1630528 5744392 1630976 5744216 1630992 5744048 1630440 5744176 -1630992 5744048 1630952 5743928 1630440 5744176 1630976 5744216 -1630528 5744392 1630944 5744304 1630976 5744216 1630440 5744176 -1630528 5744392 1630768 5744584 1630944 5744304 1630440 5744176 -1630976 5744216 1630992 5744048 1630440 5744176 1630944 5744304 -1630440 5744176 1630248 5744704 1630528 5744392 1630944 5744304 -1630864 5743768 1630632 5743536 1630440 5744176 1630952 5743928 -1630632 5743536 1628320 5743136 1628288 5743232 1630440 5744176 -1630632 5743536 1628320 5743088 1628320 5743136 1630440 5744176 -1628288 5743232 1630176 5744736 1630440 5744176 1628320 5743136 -1630632 5743536 1628320 5743136 1630440 5744176 1630864 5743768 -1628320 5743136 1630368 5744048 1630632 5743536 1628320 5743088 -1630632 5743536 1630368 5744048 1630440 5744176 1630864 5743768 -1630368 5744048 1628320 5743136 1630440 5744176 1630864 5743768 -1630632 5743536 1628320 5743136 1630368 5744048 1630864 5743768 -1630440 5744176 1630952 5743928 1630864 5743768 1630368 5744048 -1630440 5744176 1630368 5744048 1628320 5743136 1628288 5743232 -1630440 5744176 1630368 5744048 1628288 5743232 1630176 5744736 -1628288 5743232 1628224 5743288 1630176 5744736 1630368 5744048 -1630440 5744176 1630368 5744048 1630176 5744736 1630248 5744704 -1630440 5744176 1630864 5743768 1630368 5744048 1630176 5744736 -1630368 5744048 1630632 5743536 1628320 5743136 1628288 5743232 -1630368 5744048 1628320 5743136 1628288 5743232 1630176 5744736 -1628320 5743136 1630272 5743968 1630632 5743536 1628320 5743088 -1630272 5743968 1630368 5744048 1630632 5743536 1628320 5743088 -1630368 5744048 1630272 5743968 1628320 5743136 1628288 5743232 -1630368 5744048 1630632 5743536 1630272 5743968 1628288 5743232 -1630632 5743536 1630272 5743968 1630368 5744048 1630864 5743768 -1628320 5743136 1628288 5743232 1630272 5743968 1628320 5743088 -1630368 5744048 1630272 5743968 1628288 5743232 1630176 5744736 -1628288 5743232 1628224 5743288 1630176 5744736 1630272 5743968 -1630368 5744048 1630272 5743968 1630176 5744736 1630440 5744176 -1630176 5744736 1630248 5744704 1630440 5744176 1630272 5743968 -1630272 5743968 1628320 5743136 1628288 5743232 1628224 5743288 -1630368 5744048 1630632 5743536 1630272 5743968 1630440 5744176 -1628288 5743232 1628240 5743264 1628224 5743288 1630272 5743968 -1630176 5744736 1630440 5744176 1630272 5743968 1628224 5743288 -1628224 5743288 1627880 5745216 1630176 5744736 1630272 5743968 -1630632 5743536 1628320 5743048 1628320 5743088 1630272 5743968 -1628320 5743088 1628320 5743136 1630272 5743968 1628320 5743048 -1630632 5743536 1628320 5743048 1630272 5743968 1630368 5744048 -1630632 5743536 1628304 5743016 1628320 5743048 1630272 5743968 -1628224 5743288 1629936 5743888 1630272 5743968 1628288 5743232 -1628224 5743288 1630176 5744736 1629936 5743888 1628288 5743232 -1630272 5743968 1628320 5743136 1628288 5743232 1629936 5743888 -1628288 5743232 1628224 5743288 1629936 5743888 1628320 5743136 -1630272 5743968 1628320 5743088 1628320 5743136 1629936 5743888 -1630272 5743968 1628320 5743048 1628320 5743088 1629936 5743888 -1628320 5743136 1628288 5743232 1629936 5743888 1628320 5743088 -1628320 5743088 1628320 5743136 1629936 5743888 1628320 5743048 -1629936 5743888 1630176 5744736 1630272 5743968 1628320 5743048 -1628224 5743288 1629936 5743888 1628288 5743232 1628240 5743264 -1630272 5743968 1629936 5743888 1630176 5744736 1630440 5744176 -1630176 5744736 1629936 5743888 1628224 5743288 1627880 5745216 -1630176 5744736 1630272 5743968 1629936 5743888 1627880 5745216 -1629936 5743888 1628288 5743232 1628224 5743288 1627880 5745216 -1628224 5743288 1627840 5745184 1627880 5745216 1629936 5743888 -1630176 5744736 1629936 5743888 1627880 5745216 1628032 5745400 -1630176 5744736 1630272 5743968 1629936 5743888 1628032 5745400 -1627880 5745216 1627984 5745352 1628032 5745400 1629936 5743888 -1630176 5744736 1629936 5743888 1628032 5745400 1628064 5745440 -1629936 5743888 1628224 5743288 1627880 5745216 1628032 5745400 -1630272 5743968 1630632 5743536 1628320 5743048 1629936 5743888 -1628320 5743048 1628320 5743088 1629936 5743888 1630632 5743536 -1630272 5743968 1630368 5744048 1630632 5743536 1629936 5743888 -1630272 5743968 1630632 5743536 1629936 5743888 1630176 5744736 -1630632 5743536 1628304 5743016 1628320 5743048 1629936 5743888 -1629936 5743888 1629880 5743848 1628320 5743048 1628320 5743088 -1629936 5743888 1630632 5743536 1629880 5743848 1628320 5743088 -1629880 5743848 1630632 5743536 1628320 5743048 1628320 5743088 -1629936 5743888 1629880 5743848 1628320 5743088 1628320 5743136 -1629880 5743848 1628320 5743048 1628320 5743088 1628320 5743136 -1629936 5743888 1630632 5743536 1629880 5743848 1628320 5743136 -1629936 5743888 1629880 5743848 1628320 5743136 1628288 5743232 -1629936 5743888 1630632 5743536 1629880 5743848 1628288 5743232 -1629936 5743888 1629880 5743848 1628288 5743232 1628224 5743288 -1629936 5743888 1630632 5743536 1629880 5743848 1628224 5743288 -1629936 5743888 1629880 5743848 1628224 5743288 1627880 5745216 -1629936 5743888 1630632 5743536 1629880 5743848 1627880 5745216 -1629880 5743848 1628288 5743232 1628224 5743288 1627880 5745216 -1628224 5743288 1627840 5745184 1627880 5745216 1629880 5743848 -1629880 5743848 1628320 5743136 1628288 5743232 1628224 5743288 -1629880 5743848 1628320 5743088 1628320 5743136 1628288 5743232 -1628288 5743232 1628240 5743264 1628224 5743288 1629880 5743848 -1628320 5743048 1629880 5743848 1630632 5743536 1628304 5743016 -1629880 5743848 1629936 5743888 1630632 5743536 1628304 5743016 -1630632 5743536 1628272 5742976 1628304 5743016 1629880 5743848 -1628320 5743048 1628320 5743088 1629880 5743848 1628304 5743016 -1629936 5743888 1629880 5743848 1627880 5745216 1628032 5745400 -1629936 5743888 1630632 5743536 1629880 5743848 1628032 5745400 -1629880 5743848 1628224 5743288 1627880 5745216 1628032 5745400 -1627880 5745216 1627984 5745352 1628032 5745400 1629880 5743848 -1629936 5743888 1629880 5743848 1628032 5745400 1630176 5744736 -1629936 5743888 1629880 5743848 1630176 5744736 1630272 5743968 -1629936 5743888 1630632 5743536 1629880 5743848 1630176 5744736 -1628032 5745400 1628064 5745440 1630176 5744736 1629880 5743848 -1629880 5743848 1627880 5745216 1628032 5745400 1630176 5744736 -1630632 5743536 1629880 5743848 1629936 5743888 1630272 5743968 -1629880 5743848 1629832 5743856 1627880 5745216 1628032 5745400 -1629832 5743856 1628224 5743288 1627880 5745216 1628032 5745400 -1629880 5743848 1628224 5743288 1629832 5743856 1628032 5745400 -1627880 5745216 1627984 5745352 1628032 5745400 1629832 5743856 -1628224 5743288 1629832 5743856 1629880 5743848 1628288 5743232 -1628224 5743288 1627880 5745216 1629832 5743856 1628288 5743232 -1629832 5743856 1628032 5745400 1629880 5743848 1628288 5743232 -1627880 5745216 1629832 5743856 1628224 5743288 1627840 5745184 -1629880 5743848 1628320 5743136 1628288 5743232 1629832 5743856 -1629880 5743848 1628320 5743136 1629832 5743856 1628032 5745400 -1628288 5743232 1628224 5743288 1629832 5743856 1628320 5743136 -1629880 5743848 1628320 5743088 1628320 5743136 1629832 5743856 -1629880 5743848 1628320 5743048 1628320 5743088 1629832 5743856 -1629880 5743848 1628304 5743016 1628320 5743048 1629832 5743856 -1629880 5743848 1628320 5743048 1629832 5743856 1628032 5745400 -1628320 5743136 1628288 5743232 1629832 5743856 1628320 5743088 -1628320 5743088 1628320 5743136 1629832 5743856 1628320 5743048 -1628224 5743288 1629832 5743856 1628288 5743232 1628240 5743264 -1629880 5743848 1629832 5743856 1628032 5745400 1630176 5744736 -1629832 5743856 1627880 5745216 1628032 5745400 1630176 5744736 -1629880 5743848 1628320 5743048 1629832 5743856 1630176 5744736 -1629880 5743848 1629832 5743856 1630176 5744736 1629936 5743888 -1630176 5744736 1630272 5743968 1629936 5743888 1629832 5743856 -1629880 5743848 1628320 5743048 1629832 5743856 1629936 5743888 -1628032 5745400 1628064 5745440 1630176 5744736 1629832 5743856 -1628032 5745400 1628064 5745440 1629832 5743856 1627880 5745216 -1628064 5745440 1630176 5744848 1630176 5744736 1629832 5743856 -1629832 5743856 1628064 5745440 1630176 5744736 1629936 5743888 -1629832 5743856 1629792 5743832 1628320 5743048 1628320 5743088 -1629832 5743856 1629880 5743848 1629792 5743832 1628320 5743088 -1629792 5743832 1629880 5743848 1628320 5743048 1628320 5743088 -1628320 5743048 1629792 5743832 1629880 5743848 1628304 5743016 -1628320 5743048 1628320 5743088 1629792 5743832 1628304 5743016 -1629792 5743832 1629832 5743856 1629880 5743848 1628304 5743016 -1629832 5743856 1629792 5743832 1628320 5743088 1628320 5743136 -1629832 5743856 1629880 5743848 1629792 5743832 1628320 5743136 -1629792 5743832 1628320 5743048 1628320 5743088 1628320 5743136 -1629832 5743856 1629792 5743832 1628320 5743136 1628288 5743232 -1629832 5743856 1629880 5743848 1629792 5743832 1628288 5743232 -1629832 5743856 1629792 5743832 1628288 5743232 1628224 5743288 -1629832 5743856 1629880 5743848 1629792 5743832 1628224 5743288 -1629832 5743856 1629792 5743832 1628224 5743288 1627880 5745216 -1629832 5743856 1629792 5743832 1627880 5745216 1628032 5745400 -1629832 5743856 1629880 5743848 1629792 5743832 1628032 5745400 -1629792 5743832 1628224 5743288 1627880 5745216 1628032 5745400 -1629832 5743856 1629792 5743832 1628032 5745400 1628064 5745440 -1629792 5743832 1627880 5745216 1628032 5745400 1628064 5745440 -1629832 5743856 1629880 5743848 1629792 5743832 1628064 5745440 -1627880 5745216 1627984 5745352 1628032 5745400 1629792 5743832 -1629792 5743832 1628288 5743232 1628224 5743288 1627880 5745216 -1628224 5743288 1627840 5745184 1627880 5745216 1629792 5743832 -1629792 5743832 1628320 5743136 1628288 5743232 1628224 5743288 -1629792 5743832 1628320 5743088 1628320 5743136 1628288 5743232 -1628288 5743232 1628240 5743264 1628224 5743288 1629792 5743832 -1629880 5743848 1630632 5743536 1628304 5743016 1629792 5743832 -1629880 5743848 1629936 5743888 1630632 5743536 1629792 5743832 -1630632 5743536 1628272 5742976 1628304 5743016 1629792 5743832 -1628304 5743016 1628320 5743048 1629792 5743832 1630632 5743536 -1629880 5743848 1630632 5743536 1629792 5743832 1629832 5743856 -1629832 5743856 1629792 5743832 1628064 5745440 1630176 5744736 -1629832 5743856 1629880 5743848 1629792 5743832 1630176 5744736 -1629792 5743832 1628032 5745400 1628064 5745440 1630176 5744736 -1628064 5745440 1630176 5744848 1630176 5744736 1629792 5743832 -1629832 5743856 1629792 5743832 1630176 5744736 1629936 5743888 -1629792 5743832 1629760 5743832 1627880 5745216 1628032 5745400 -1629792 5743832 1629760 5743832 1628032 5745400 1628064 5745440 -1629760 5743832 1627880 5745216 1628032 5745400 1628064 5745440 -1629792 5743832 1629760 5743832 1628064 5745440 1630176 5744736 -1629760 5743832 1628032 5745400 1628064 5745440 1630176 5744736 -1629792 5743832 1628224 5743288 1629760 5743832 1630176 5744736 -1629760 5743832 1628224 5743288 1627880 5745216 1628032 5745400 -1628064 5745440 1630176 5744848 1630176 5744736 1629760 5743832 -1627880 5745216 1627984 5745352 1628032 5745400 1629760 5743832 -1628224 5743288 1629760 5743832 1629792 5743832 1628288 5743232 -1629760 5743832 1630176 5744736 1629792 5743832 1628288 5743232 -1628224 5743288 1627880 5745216 1629760 5743832 1628288 5743232 -1627880 5745216 1629760 5743832 1628224 5743288 1627840 5745184 -1629792 5743832 1628320 5743136 1628288 5743232 1629760 5743832 -1629792 5743832 1628320 5743136 1629760 5743832 1630176 5744736 -1628288 5743232 1628224 5743288 1629760 5743832 1628320 5743136 -1629792 5743832 1628320 5743088 1628320 5743136 1629760 5743832 -1629792 5743832 1628320 5743048 1628320 5743088 1629760 5743832 -1629792 5743832 1628304 5743016 1628320 5743048 1629760 5743832 -1628320 5743048 1628320 5743088 1629760 5743832 1628304 5743016 -1629792 5743832 1630632 5743536 1628304 5743016 1629760 5743832 -1628304 5743016 1628320 5743048 1629760 5743832 1630632 5743536 -1630632 5743536 1628272 5742976 1628304 5743016 1629760 5743832 -1629792 5743832 1630632 5743536 1629760 5743832 1630176 5744736 -1628320 5743136 1628288 5743232 1629760 5743832 1628320 5743088 -1628320 5743088 1628320 5743136 1629760 5743832 1628320 5743048 -1628224 5743288 1629760 5743832 1628288 5743232 1628240 5743264 -1629792 5743832 1629880 5743848 1630632 5743536 1629760 5743832 -1629792 5743832 1629760 5743832 1630176 5744736 1629832 5743856 -1629760 5743832 1628064 5745440 1630176 5744736 1629832 5743856 -1629792 5743832 1630632 5743536 1629760 5743832 1629832 5743856 -1630176 5744736 1629936 5743888 1629832 5743856 1629760 5743832 -1629760 5743832 1629680 5743784 1628304 5743016 1628320 5743048 -1628304 5743016 1629680 5743784 1630632 5743536 1628272 5742976 -1629760 5743832 1629680 5743784 1628320 5743048 1628320 5743088 -1629680 5743784 1628304 5743016 1628320 5743048 1628320 5743088 -1630632 5743536 1629680 5743784 1629760 5743832 1629792 5743832 -1629760 5743832 1629792 5743832 1629680 5743784 1628320 5743088 -1629680 5743784 1630632 5743536 1628304 5743016 1628320 5743048 -1630632 5743536 1628304 5743016 1629680 5743784 1629792 5743832 -1629760 5743832 1629680 5743784 1628320 5743088 1628320 5743136 -1629680 5743784 1628320 5743048 1628320 5743088 1628320 5743136 -1629760 5743832 1629792 5743832 1629680 5743784 1628320 5743136 -1629760 5743832 1629680 5743784 1628320 5743136 1628288 5743232 -1629760 5743832 1629792 5743832 1629680 5743784 1628288 5743232 -1629760 5743832 1629680 5743784 1628288 5743232 1628224 5743288 -1629760 5743832 1629792 5743832 1629680 5743784 1628224 5743288 -1629760 5743832 1629680 5743784 1628224 5743288 1627880 5745216 -1629760 5743832 1629680 5743784 1627880 5745216 1628032 5745400 -1629760 5743832 1629680 5743784 1628032 5745400 1628064 5745440 -1629760 5743832 1629680 5743784 1628064 5745440 1630176 5744736 -1629680 5743784 1628032 5745400 1628064 5745440 1630176 5744736 -1629760 5743832 1629680 5743784 1630176 5744736 1629832 5743856 -1629680 5743784 1627880 5745216 1628032 5745400 1628064 5745440 -1629760 5743832 1629792 5743832 1629680 5743784 1630176 5744736 -1629680 5743784 1628224 5743288 1627880 5745216 1628032 5745400 -1628064 5745440 1630176 5744848 1630176 5744736 1629680 5743784 -1627880 5745216 1627984 5745352 1628032 5745400 1629680 5743784 -1629680 5743784 1628288 5743232 1628224 5743288 1627880 5745216 -1628224 5743288 1627840 5745184 1627880 5745216 1629680 5743784 -1629680 5743784 1628320 5743136 1628288 5743232 1628224 5743288 -1629680 5743784 1628320 5743088 1628320 5743136 1628288 5743232 -1628288 5743232 1628240 5743264 1628224 5743288 1629680 5743784 -1630632 5743536 1629680 5743784 1629792 5743832 1629880 5743848 -1630632 5743536 1629680 5743784 1629880 5743848 1629936 5743888 -1629680 5743784 1629760 5743832 1629792 5743832 1629880 5743848 -1629792 5743832 1629832 5743856 1629880 5743848 1629680 5743784 -1630632 5743536 1628304 5743016 1629680 5743784 1629880 5743848 -1628304 5743016 1629552 5743632 1630632 5743536 1628272 5742976 -1629680 5743784 1629552 5743632 1628304 5743016 1628320 5743048 -1629680 5743784 1629552 5743632 1628320 5743048 1628320 5743088 -1629680 5743784 1629552 5743632 1628320 5743088 1628320 5743136 -1629552 5743632 1628320 5743048 1628320 5743088 1628320 5743136 -1629680 5743784 1630632 5743536 1629552 5743632 1628320 5743136 -1630632 5743536 1629552 5743632 1629680 5743784 1629880 5743848 -1630632 5743536 1629552 5743632 1629880 5743848 1629936 5743888 -1629552 5743632 1628320 5743136 1629680 5743784 1629880 5743848 -1628304 5743016 1628320 5743048 1629552 5743632 1628272 5742976 -1629552 5743632 1628304 5743016 1628320 5743048 1628320 5743088 -1629552 5743632 1629880 5743848 1630632 5743536 1628272 5742976 -1629680 5743784 1629552 5743632 1628320 5743136 1628288 5743232 -1629552 5743632 1628320 5743088 1628320 5743136 1628288 5743232 -1629680 5743784 1629552 5743632 1628288 5743232 1628224 5743288 -1629680 5743784 1629552 5743632 1628224 5743288 1627880 5745216 -1629680 5743784 1629552 5743632 1627880 5745216 1628032 5745400 -1628224 5743288 1627840 5745184 1627880 5745216 1629552 5743632 -1629552 5743632 1628288 5743232 1628224 5743288 1627880 5745216 -1629680 5743784 1629880 5743848 1629552 5743632 1627880 5745216 -1629552 5743632 1628320 5743136 1628288 5743232 1628224 5743288 -1628288 5743232 1628240 5743264 1628224 5743288 1629552 5743632 -1629680 5743784 1629792 5743832 1629880 5743848 1629552 5743632 -1629680 5743784 1629760 5743832 1629792 5743832 1629552 5743632 -1629792 5743832 1629832 5743856 1629880 5743848 1629552 5743632 -1629680 5743784 1629792 5743832 1629552 5743632 1627880 5745216 -1629880 5743848 1630632 5743536 1629552 5743632 1629792 5743832 -1630632 5743536 1628224 5742936 1628272 5742976 1629552 5743632 -1629552 5743632 1629304 5743408 1628272 5742976 1628304 5743016 -1629552 5743632 1629304 5743408 1628304 5743016 1628320 5743048 -1629304 5743408 1628272 5742976 1628304 5743016 1628320 5743048 -1629552 5743632 1629304 5743408 1628320 5743048 1628320 5743088 -1629552 5743632 1629304 5743408 1628320 5743088 1628320 5743136 -1629552 5743632 1629304 5743408 1628320 5743136 1628288 5743232 -1629304 5743408 1628320 5743088 1628320 5743136 1628288 5743232 -1629304 5743408 1628304 5743016 1628320 5743048 1628320 5743088 -1629304 5743408 1628320 5743048 1628320 5743088 1628320 5743136 -1630632 5743536 1629304 5743408 1629552 5743632 1629880 5743848 -1629304 5743408 1630632 5743536 1628272 5742976 1628304 5743016 -1629552 5743632 1629304 5743408 1628288 5743232 1628224 5743288 -1629304 5743408 1628320 5743136 1628288 5743232 1628224 5743288 -1629552 5743632 1629304 5743408 1628224 5743288 1627880 5745216 -1629552 5743632 1629304 5743408 1627880 5745216 1629680 5743784 -1628224 5743288 1627840 5745184 1627880 5745216 1629304 5743408 -1629304 5743408 1628288 5743232 1628224 5743288 1627880 5745216 -1628288 5743232 1628240 5743264 1628224 5743288 1629304 5743408 -1629552 5743632 1630632 5743536 1629304 5743408 1627880 5745216 -1628272 5742976 1629304 5743408 1630632 5743536 1628224 5742936 -1628272 5742976 1628304 5743016 1629304 5743408 1628224 5742936 -1629304 5743408 1629552 5743632 1630632 5743536 1628224 5742936 -1630632 5743536 1628168 5742888 1628224 5742936 1629304 5743408 -1630632 5743536 1628168 5742888 1629304 5743408 1629552 5743632 -1628224 5742936 1628272 5742976 1629304 5743408 1628168 5742888 -1630632 5743536 1629584 5726976 1628168 5742888 1629304 5743408 -1630632 5743536 1629248 5743344 1629304 5743408 1629552 5743632 -1629304 5743408 1629248 5743344 1628168 5742888 1628224 5742936 -1629248 5743344 1630632 5743536 1628168 5742888 1628224 5742936 -1629304 5743408 1630632 5743536 1629248 5743344 1628224 5742936 -1629304 5743408 1629248 5743344 1628224 5742936 1628272 5742976 -1629304 5743408 1629248 5743344 1628272 5742976 1628304 5743016 -1629304 5743408 1629248 5743344 1628304 5743016 1628320 5743048 -1629304 5743408 1629248 5743344 1628320 5743048 1628320 5743088 -1629248 5743344 1628304 5743016 1628320 5743048 1628320 5743088 -1629304 5743408 1629248 5743344 1628320 5743088 1628320 5743136 -1629304 5743408 1629248 5743344 1628320 5743136 1628288 5743232 -1629304 5743408 1629248 5743344 1628288 5743232 1628224 5743288 -1629248 5743344 1628320 5743136 1628288 5743232 1628224 5743288 -1629248 5743344 1628320 5743048 1628320 5743088 1628320 5743136 -1629248 5743344 1628320 5743088 1628320 5743136 1628288 5743232 -1629304 5743408 1629248 5743344 1628224 5743288 1627880 5745216 -1628288 5743232 1628240 5743264 1628224 5743288 1629248 5743344 -1629304 5743408 1630632 5743536 1629248 5743344 1628224 5743288 -1629248 5743344 1628272 5742976 1628304 5743016 1628320 5743048 -1629248 5743344 1628168 5742888 1628224 5742936 1628272 5742976 -1629248 5743344 1628224 5742936 1628272 5742976 1628304 5743016 -1628168 5742888 1629248 5743344 1630632 5743536 1629584 5726976 -1629248 5743344 1629248 5743296 1628168 5742888 1628224 5742936 -1629248 5743344 1630632 5743536 1629248 5743296 1628224 5742936 -1630632 5743536 1629248 5743296 1629248 5743344 1629304 5743408 -1629248 5743296 1628224 5742936 1629248 5743344 1629304 5743408 -1630632 5743536 1629248 5743296 1629304 5743408 1629552 5743632 -1630632 5743536 1629248 5743296 1629552 5743632 1629880 5743848 -1629248 5743296 1629248 5743344 1629304 5743408 1629552 5743632 -1629248 5743296 1630632 5743536 1628168 5742888 1628224 5742936 -1630632 5743536 1628168 5742888 1629248 5743296 1629552 5743632 -1629248 5743344 1629248 5743296 1628224 5742936 1628272 5742976 -1629248 5743344 1629304 5743408 1629248 5743296 1628272 5742976 -1629248 5743296 1628168 5742888 1628224 5742936 1628272 5742976 -1629248 5743344 1629248 5743296 1628272 5742976 1628304 5743016 -1629248 5743344 1629304 5743408 1629248 5743296 1628304 5743016 -1629248 5743344 1629248 5743296 1628304 5743016 1628320 5743048 -1629248 5743344 1629304 5743408 1629248 5743296 1628320 5743048 -1629248 5743344 1629248 5743296 1628320 5743048 1628320 5743088 -1629248 5743344 1629304 5743408 1629248 5743296 1628320 5743088 -1629248 5743344 1629248 5743296 1628320 5743088 1628320 5743136 -1629248 5743344 1629304 5743408 1629248 5743296 1628320 5743136 -1629248 5743296 1628320 5743048 1628320 5743088 1628320 5743136 -1629248 5743344 1629248 5743296 1628320 5743136 1628288 5743232 -1629248 5743296 1628304 5743016 1628320 5743048 1628320 5743088 -1629248 5743296 1628224 5742936 1628272 5742976 1628304 5743016 -1629248 5743296 1628272 5742976 1628304 5743016 1628320 5743048 -1628168 5742888 1629248 5743296 1630632 5743536 1629584 5726976 -1628168 5742888 1629296 5743016 1629584 5726976 1621808 5733136 -1629584 5726976 1629296 5743016 1630632 5743536 1629776 5726856 -1630632 5743536 1629296 5743016 1628168 5742888 1629248 5743296 -1629296 5743016 1629584 5726976 1628168 5742888 1629248 5743296 -1628168 5742888 1628224 5742936 1629248 5743296 1629296 5743016 -1628168 5742888 1628224 5742936 1629296 5743016 1629584 5726976 -1628224 5742936 1628272 5742976 1629248 5743296 1629296 5743016 -1628224 5742936 1628272 5742976 1629296 5743016 1628168 5742888 -1630632 5743536 1629296 5743016 1629248 5743296 1629552 5743632 -1630632 5743536 1629296 5743016 1629552 5743632 1629880 5743848 -1629248 5743296 1629304 5743408 1629552 5743632 1629296 5743016 -1629248 5743296 1629248 5743344 1629304 5743408 1629296 5743016 -1629552 5743632 1630632 5743536 1629296 5743016 1629304 5743408 -1630632 5743536 1629584 5726976 1629296 5743016 1629552 5743632 -1628272 5742976 1628304 5743016 1629248 5743296 1629296 5743016 -1628272 5742976 1628304 5743016 1629296 5743016 1628224 5742936 -1628304 5743016 1628320 5743048 1629248 5743296 1629296 5743016 -1628320 5743048 1628320 5743088 1629248 5743296 1629296 5743016 -1628320 5743088 1628320 5743136 1629248 5743296 1629296 5743016 -1628304 5743016 1628320 5743048 1629296 5743016 1628272 5742976 -1628320 5743048 1628320 5743088 1629296 5743016 1628304 5743016 -1629248 5743296 1629304 5743408 1629296 5743016 1628320 5743088 -1629296 5743016 1629312 5742992 1629584 5726976 1628168 5742888 -1629584 5726976 1621808 5733136 1628168 5742888 1629312 5742992 -1629296 5743016 1629312 5742992 1628168 5742888 1628224 5742936 -1621808 5733136 1621784 5733192 1628168 5742888 1629312 5742992 -1629584 5726976 1621800 5732912 1621808 5733136 1629312 5742992 -1629296 5743016 1629312 5742992 1628224 5742936 1628272 5742976 -1629296 5743016 1629312 5742992 1628272 5742976 1628304 5743016 -1629312 5742992 1628224 5742936 1628272 5742976 1628304 5743016 -1629312 5742992 1630632 5743536 1629584 5726976 1621808 5733136 -1628168 5742888 1628224 5742936 1629312 5742992 1621808 5733136 -1629296 5743016 1630632 5743536 1629312 5742992 1628304 5743016 -1630632 5743536 1629312 5742992 1629296 5743016 1629552 5743632 -1630632 5743536 1629312 5742992 1629552 5743632 1629880 5743848 -1629296 5743016 1629304 5743408 1629552 5743632 1629312 5742992 -1629296 5743016 1629248 5743296 1629304 5743408 1629312 5742992 -1629312 5742992 1628304 5743016 1629296 5743016 1629304 5743408 -1629552 5743632 1630632 5743536 1629312 5742992 1629304 5743408 -1629312 5742992 1628168 5742888 1628224 5742936 1628272 5742976 -1630632 5743536 1629584 5726976 1629312 5742992 1629552 5743632 -1629296 5743016 1629312 5742992 1628304 5743016 1628320 5743048 -1629584 5726976 1629312 5742992 1630632 5743536 1629776 5726856 -1629312 5742992 1629408 5742976 1629584 5726976 1621808 5733136 -1629312 5742992 1629408 5742976 1621808 5733136 1628168 5742888 -1629408 5742976 1630632 5743536 1629584 5726976 1621808 5733136 -1621808 5733136 1621784 5733192 1628168 5742888 1629408 5742976 -1629584 5726976 1621800 5732912 1621808 5733136 1629408 5742976 -1629408 5742976 1629584 5726976 1621808 5733136 1628168 5742888 -1629312 5742992 1629408 5742976 1628168 5742888 1628224 5742936 -1630632 5743536 1629408 5742976 1629312 5742992 1629552 5743632 -1630632 5743536 1629408 5742976 1629552 5743632 1629880 5743848 -1630632 5743536 1629584 5726976 1629408 5742976 1629552 5743632 -1629312 5742992 1629304 5743408 1629552 5743632 1629408 5742976 -1629312 5742992 1629296 5743016 1629304 5743408 1629408 5742976 -1629296 5743016 1629248 5743296 1629304 5743408 1629408 5742976 -1629248 5743296 1629248 5743344 1629304 5743408 1629408 5742976 -1629296 5743016 1629248 5743296 1629408 5742976 1629312 5742992 -1629304 5743408 1629552 5743632 1629408 5742976 1629248 5743296 -1629552 5743632 1630632 5743536 1629408 5742976 1629304 5743408 -1629312 5742992 1629296 5743016 1629408 5742976 1628168 5742888 -1629584 5726976 1629408 5742976 1630632 5743536 1629776 5726856 -1629408 5742976 1629560 5742992 1629584 5726976 1621808 5733136 -1630632 5743536 1629560 5742992 1629408 5742976 1629552 5743632 -1630632 5743536 1629560 5742992 1629552 5743632 1629880 5743848 -1630632 5743536 1629560 5742992 1629880 5743848 1629936 5743888 -1629552 5743632 1629792 5743832 1629880 5743848 1629560 5742992 -1629560 5742992 1629584 5726976 1629408 5742976 1629552 5743632 -1629560 5742992 1629408 5742976 1629552 5743632 1629880 5743848 -1630632 5743536 1629584 5726976 1629560 5742992 1629880 5743848 -1629408 5742976 1629304 5743408 1629552 5743632 1629560 5742992 -1629408 5742976 1629304 5743408 1629560 5742992 1629584 5726976 -1629552 5743632 1629880 5743848 1629560 5742992 1629304 5743408 -1629408 5742976 1629248 5743296 1629304 5743408 1629560 5742992 -1629408 5742976 1629296 5743016 1629248 5743296 1629560 5742992 -1629248 5743296 1629248 5743344 1629304 5743408 1629560 5742992 -1629408 5742976 1629248 5743296 1629560 5742992 1629584 5726976 -1629304 5743408 1629552 5743632 1629560 5742992 1629248 5743296 -1629584 5726976 1629560 5742992 1630632 5743536 1629776 5726856 -1629560 5742992 1629640 5742832 1629584 5726976 1629408 5742976 -1629584 5726976 1621808 5733136 1629408 5742976 1629640 5742832 -1629584 5726976 1621800 5732912 1621808 5733136 1629640 5742832 -1621808 5733136 1628168 5742888 1629408 5742976 1629640 5742832 -1628168 5742888 1629312 5742992 1629408 5742976 1629640 5742832 -1621808 5733136 1628168 5742888 1629640 5742832 1629584 5726976 -1621808 5733136 1621784 5733192 1628168 5742888 1629640 5742832 -1628168 5742888 1629312 5742992 1629640 5742832 1621808 5733136 -1629408 5742976 1629560 5742992 1629640 5742832 1629312 5742992 -1629560 5742992 1630632 5743536 1629640 5742832 1629408 5742976 -1630632 5743536 1629640 5742832 1629560 5742992 1629880 5743848 -1629640 5742832 1630632 5743536 1629584 5726976 1621808 5733136 -1628168 5742888 1628224 5742936 1629312 5742992 1629640 5742832 -1629584 5726976 1629640 5742832 1630632 5743536 1629776 5726856 -1629640 5742832 1629560 5742992 1630632 5743536 1629776 5726856 -1630632 5743536 1629872 5726768 1629776 5726856 1629640 5742832 -1629584 5726976 1621808 5733136 1629640 5742832 1629776 5726856 -1630632 5743536 1629688 5742824 1629640 5742832 1629560 5742992 -1629688 5742824 1629776 5726856 1629640 5742832 1629560 5742992 -1629776 5726856 1629688 5742824 1630632 5743536 1629872 5726768 -1630632 5743536 1629776 5726856 1629688 5742824 1629560 5742992 -1630632 5743536 1629688 5742824 1629560 5742992 1629880 5743848 -1629640 5742832 1629688 5742824 1629776 5726856 1629584 5726976 -1629640 5742832 1629560 5742992 1629688 5742824 1629584 5726976 -1629688 5742824 1630632 5743536 1629776 5726856 1629584 5726976 -1629640 5742832 1629688 5742824 1629584 5726976 1621808 5733136 -1629640 5742832 1629560 5742992 1629688 5742824 1621808 5733136 -1629640 5742832 1629688 5742824 1621808 5733136 1628168 5742888 -1629640 5742832 1629560 5742992 1629688 5742824 1628168 5742888 -1621808 5733136 1621784 5733192 1628168 5742888 1629688 5742824 -1629584 5726976 1621800 5732912 1621808 5733136 1629688 5742824 -1629640 5742832 1629688 5742824 1628168 5742888 1629312 5742992 -1629688 5742824 1629584 5726976 1621808 5733136 1628168 5742888 -1629688 5742824 1629776 5726856 1629584 5726976 1621808 5733136 -1629776 5726856 1629784 5742896 1630632 5743536 1629872 5726768 -1629688 5742824 1629784 5742896 1629776 5726856 1629584 5726976 -1630632 5743536 1629784 5742896 1629688 5742824 1629560 5742992 -1629688 5742824 1629640 5742832 1629560 5742992 1629784 5742896 -1629784 5742896 1629776 5726856 1629688 5742824 1629640 5742832 -1629560 5742992 1630632 5743536 1629784 5742896 1629640 5742832 -1630632 5743536 1629776 5726856 1629784 5742896 1629560 5742992 -1630632 5743536 1629784 5742896 1629560 5742992 1629880 5743848 -1630632 5743536 1629784 5742896 1629880 5743848 1629936 5743888 -1629560 5742992 1629552 5743632 1629880 5743848 1629784 5742896 -1629552 5743632 1629792 5743832 1629880 5743848 1629784 5742896 -1629784 5742896 1629640 5742832 1629560 5742992 1629552 5743632 -1630632 5743536 1629776 5726856 1629784 5742896 1629880 5743848 -1629560 5742992 1629304 5743408 1629552 5743632 1629784 5742896 -1629880 5743848 1630632 5743536 1629784 5742896 1629552 5743632 -1630632 5743536 1629944 5743136 1629880 5743848 1629936 5743888 -1629784 5742896 1629944 5743136 1630632 5743536 1629776 5726856 -1630632 5743536 1629784 5742896 1629944 5743136 1629936 5743888 -1629880 5743848 1629944 5743136 1629784 5742896 1629552 5743632 -1629880 5743848 1629944 5743136 1629552 5743632 1629792 5743832 -1629880 5743848 1629944 5743136 1629792 5743832 1629832 5743856 -1629784 5742896 1629560 5742992 1629552 5743632 1629944 5743136 -1629784 5742896 1629640 5742832 1629560 5742992 1629944 5743136 -1629944 5743136 1630632 5743536 1629784 5742896 1629560 5742992 -1629552 5743632 1629680 5743784 1629792 5743832 1629944 5743136 -1629560 5742992 1629304 5743408 1629552 5743632 1629944 5743136 -1629944 5743136 1629560 5742992 1629552 5743632 1629792 5743832 -1630632 5743536 1629944 5743136 1629936 5743888 1630272 5743968 -1629944 5743136 1629792 5743832 1629880 5743848 1629936 5743888 -1629936 5743888 1630088 5743240 1629944 5743136 1629880 5743848 -1629944 5743136 1630088 5743240 1630632 5743536 1629784 5742896 -1630632 5743536 1629776 5726856 1629784 5742896 1630088 5743240 -1630632 5743536 1630088 5743240 1629936 5743888 1630272 5743968 -1630632 5743536 1630088 5743240 1630272 5743968 1630368 5744048 -1630088 5743240 1629784 5742896 1629944 5743136 1629880 5743848 -1629944 5743136 1629792 5743832 1629880 5743848 1630088 5743240 -1629880 5743848 1629936 5743888 1630088 5743240 1629792 5743832 -1629792 5743832 1629832 5743856 1629880 5743848 1630088 5743240 -1629944 5743136 1629552 5743632 1629792 5743832 1630088 5743240 -1629552 5743632 1629680 5743784 1629792 5743832 1630088 5743240 -1629680 5743784 1629760 5743832 1629792 5743832 1630088 5743240 -1629552 5743632 1629680 5743784 1630088 5743240 1629944 5743136 -1629944 5743136 1629560 5742992 1629552 5743632 1630088 5743240 -1629944 5743136 1629552 5743632 1630088 5743240 1629784 5742896 -1629792 5743832 1629880 5743848 1630088 5743240 1629680 5743784 -1630088 5743240 1630272 5743968 1630632 5743536 1629784 5742896 -1629936 5743888 1630272 5743968 1630088 5743240 1629880 5743848 -1629784 5742896 1630312 5743312 1630632 5743536 1629776 5726856 -1630088 5743240 1630312 5743312 1629784 5742896 1629944 5743136 -1630632 5743536 1630312 5743312 1630088 5743240 1630272 5743968 -1630632 5743536 1630312 5743312 1630272 5743968 1630368 5744048 -1630632 5743536 1629784 5742896 1630312 5743312 1630272 5743968 -1630088 5743240 1629936 5743888 1630272 5743968 1630312 5743312 -1630272 5743968 1630632 5743536 1630312 5743312 1629936 5743888 -1630312 5743312 1629784 5742896 1630088 5743240 1629936 5743888 -1630088 5743240 1629880 5743848 1629936 5743888 1630312 5743312 -1630088 5743240 1629792 5743832 1629880 5743848 1630312 5743312 -1629936 5743888 1630272 5743968 1630312 5743312 1629880 5743848 -1630088 5743240 1629880 5743848 1630312 5743312 1629784 5742896 -1629784 5742896 1630424 5743368 1629776 5726856 1629688 5742824 -1629776 5726856 1630424 5743368 1630632 5743536 1629872 5726768 -1630632 5743536 1630864 5743768 1629872 5726768 1630424 5743368 -1630632 5743536 1630424 5743368 1629784 5742896 1630312 5743312 -1629784 5742896 1630088 5743240 1630312 5743312 1630424 5743368 -1630424 5743368 1629776 5726856 1629784 5742896 1630312 5743312 -1630632 5743536 1630424 5743368 1630312 5743312 1630272 5743968 -1630632 5743536 1630424 5743368 1630272 5743968 1630368 5744048 -1630424 5743368 1629784 5742896 1630312 5743312 1630272 5743968 -1629776 5726856 1629784 5742896 1630424 5743368 1629872 5726768 -1630424 5743368 1630272 5743968 1630632 5743536 1629872 5726768 -1630312 5743312 1629936 5743888 1630272 5743968 1630424 5743368 -1621712 5733232 1626056 5741184 1628056 5742960 1628128 5742888 -1622528 5744936 1626056 5741184 1621712 5733232 1622352 5744936 -1621712 5733232 1622352 5744936 1626056 5741184 1628128 5742888 -1626056 5741184 1622528 5744936 1628056 5742960 1628128 5742888 -1628056 5742960 1626056 5741184 1622528 5744936 1623128 5745016 -1628056 5742960 1628128 5742888 1626056 5741184 1623128 5745016 -1621712 5733232 1626056 5741184 1628128 5742888 1621784 5733192 -1626056 5741184 1628056 5742960 1628128 5742888 1621784 5733192 -1621712 5733232 1622352 5744936 1626056 5741184 1621784 5733192 -1621712 5733232 1621616 5733232 1622352 5744936 1626056 5741184 -1622352 5744936 1622528 5744936 1626056 5741184 1621616 5733232 -1621712 5733232 1621616 5733232 1626056 5741184 1621784 5733192 -1621616 5733232 1615632 5735512 1622352 5744936 1626056 5741184 -1622352 5744936 1622528 5744936 1626056 5741184 1615632 5735512 -1621616 5733232 1615632 5735512 1626056 5741184 1621712 5733232 -1621616 5733232 1621440 5733160 1615632 5735512 1626056 5741184 -1622528 5744936 1623128 5745016 1626056 5741184 1622352 5744936 -1628128 5742888 1628168 5742888 1621784 5733192 1626056 5741184 -1628128 5742888 1628168 5742888 1626056 5741184 1628056 5742960 -1621784 5733192 1621712 5733232 1626056 5741184 1628168 5742888 -1628168 5742888 1621808 5733136 1621784 5733192 1626056 5741184 -1628168 5742888 1629688 5742824 1621808 5733136 1626056 5741184 -1628168 5742888 1629640 5742832 1629688 5742824 1626056 5741184 -1629688 5742824 1621808 5733136 1626056 5741184 1629640 5742832 -1621784 5733192 1621712 5733232 1626056 5741184 1621808 5733136 -1628168 5742888 1629312 5742992 1629640 5742832 1626056 5741184 -1629688 5742824 1629584 5726976 1621808 5733136 1626056 5741184 -1629688 5742824 1629584 5726976 1626056 5741184 1629640 5742832 -1629584 5726976 1621800 5732912 1621808 5733136 1626056 5741184 -1621808 5733136 1621784 5733192 1626056 5741184 1629584 5726976 -1628168 5742888 1629640 5742832 1626056 5741184 1628128 5742888 -1628056 5742960 1626056 5741184 1623128 5745016 1623224 5745048 -1628056 5742960 1628128 5742888 1626056 5741184 1623224 5745048 -1626056 5741184 1622528 5744936 1623128 5745016 1623224 5745048 -1628056 5742960 1626056 5741184 1623224 5745048 1623640 5745232 -1628056 5742960 1628128 5742888 1626056 5741184 1623640 5745232 -1623224 5745048 1623528 5745200 1623640 5745232 1626056 5741184 -1628056 5742960 1626056 5741184 1623640 5745232 1628032 5743064 -1628056 5742960 1628128 5742888 1626056 5741184 1628032 5743064 -1626056 5741184 1623224 5745048 1623640 5745232 1628032 5743064 -1623640 5745232 1628024 5743112 1628032 5743064 1626056 5741184 -1623640 5745232 1628024 5743112 1626056 5741184 1623224 5745048 -1623640 5745232 1623896 5745384 1628024 5743112 1626056 5741184 -1623640 5745232 1623896 5745384 1626056 5741184 1623224 5745048 -1623896 5745384 1624032 5745472 1628024 5743112 1626056 5741184 -1624032 5745472 1628032 5743200 1628024 5743112 1626056 5741184 -1624032 5745472 1628032 5743200 1626056 5741184 1623896 5745384 -1623896 5745384 1624032 5745472 1626056 5741184 1623640 5745232 -1628024 5743112 1628032 5743064 1626056 5741184 1628032 5743200 -1623640 5745232 1623792 5745368 1623896 5745384 1626056 5741184 -1628032 5743064 1628056 5742960 1626056 5741184 1628024 5743112 -1624032 5745472 1624528 5745760 1628032 5743200 1626056 5741184 -1628032 5743200 1628024 5743112 1626056 5741184 1624528 5745760 -1624032 5745472 1624528 5745760 1626056 5741184 1623896 5745384 -1626056 5741184 1623128 5745016 1623224 5745048 1623640 5745232 -1622528 5744936 1622680 5744976 1623128 5745016 1626056 5741184 -1629688 5742824 1629776 5726856 1629584 5726976 1626056 5741184 -1615632 5735512 1615584 5735552 1622352 5744936 1626056 5741184 -1624528 5745760 1627728 5745216 1628032 5743200 1626056 5741184 -1624032 5745472 1624224 5745656 1624528 5745760 1626056 5741184 -1626056 5741184 1626080 5741216 1628032 5743200 1628024 5743112 -1626056 5741184 1624528 5745760 1626080 5741216 1628024 5743112 -1626080 5741216 1624528 5745760 1628032 5743200 1628024 5743112 -1626056 5741184 1626080 5741216 1628024 5743112 1628032 5743064 -1626056 5741184 1624528 5745760 1626080 5741216 1628032 5743064 -1626080 5741216 1628032 5743200 1628024 5743112 1628032 5743064 -1626056 5741184 1626080 5741216 1628032 5743064 1628056 5742960 -1626056 5741184 1624528 5745760 1626080 5741216 1628056 5742960 -1626056 5741184 1626080 5741216 1628056 5742960 1628128 5742888 -1626056 5741184 1626080 5741216 1628128 5742888 1628168 5742888 -1626056 5741184 1624528 5745760 1626080 5741216 1628168 5742888 -1626080 5741216 1628056 5742960 1628128 5742888 1628168 5742888 -1626080 5741216 1628024 5743112 1628032 5743064 1628056 5742960 -1626080 5741216 1628032 5743064 1628056 5742960 1628128 5742888 -1624528 5745760 1626080 5741216 1626056 5741184 1624032 5745472 -1626080 5741216 1628168 5742888 1626056 5741184 1624032 5745472 -1624528 5745760 1628032 5743200 1626080 5741216 1624032 5745472 -1626056 5741184 1623896 5745384 1624032 5745472 1626080 5741216 -1626056 5741184 1623896 5745384 1626080 5741216 1628168 5742888 -1626056 5741184 1623640 5745232 1623896 5745384 1626080 5741216 -1626056 5741184 1623640 5745232 1626080 5741216 1628168 5742888 -1626056 5741184 1623224 5745048 1623640 5745232 1626080 5741216 -1626056 5741184 1623224 5745048 1626080 5741216 1628168 5742888 -1623896 5745384 1624032 5745472 1626080 5741216 1623640 5745232 -1623640 5745232 1623896 5745384 1626080 5741216 1623224 5745048 -1623224 5745048 1623528 5745200 1623640 5745232 1626080 5741216 -1623640 5745232 1623792 5745368 1623896 5745384 1626080 5741216 -1624032 5745472 1624528 5745760 1626080 5741216 1623896 5745384 -1626056 5741184 1626080 5741216 1628168 5742888 1629640 5742832 -1626080 5741216 1628128 5742888 1628168 5742888 1629640 5742832 -1626056 5741184 1623224 5745048 1626080 5741216 1629640 5742832 -1626056 5741184 1626080 5741216 1629640 5742832 1629688 5742824 -1626056 5741184 1623224 5745048 1626080 5741216 1629688 5742824 -1626056 5741184 1626080 5741216 1629688 5742824 1629584 5726976 -1628168 5742888 1629312 5742992 1629640 5742832 1626080 5741216 -1626080 5741216 1628168 5742888 1629640 5742832 1629688 5742824 -1626056 5741184 1623128 5745016 1623224 5745048 1626080 5741216 -1628032 5743200 1626080 5741216 1624528 5745760 1627728 5745216 -1624528 5745760 1626080 5741216 1624032 5745472 1624224 5745656 -1626080 5741216 1626120 5741352 1628032 5743200 1628024 5743112 -1626080 5741216 1624528 5745760 1626120 5741352 1628024 5743112 -1626080 5741216 1626120 5741352 1628024 5743112 1628032 5743064 -1626120 5741352 1628032 5743200 1628024 5743112 1628032 5743064 -1626080 5741216 1624528 5745760 1626120 5741352 1628032 5743064 -1624528 5745760 1626120 5741352 1626080 5741216 1624032 5745472 -1626120 5741352 1628032 5743064 1626080 5741216 1624032 5745472 -1626120 5741352 1624528 5745760 1628032 5743200 1628024 5743112 -1624528 5745760 1628032 5743200 1626120 5741352 1624032 5745472 -1626080 5741216 1626120 5741352 1628032 5743064 1628056 5742960 -1626080 5741216 1624032 5745472 1626120 5741352 1628056 5742960 -1626120 5741352 1628024 5743112 1628032 5743064 1628056 5742960 -1626080 5741216 1626120 5741352 1628056 5742960 1628128 5742888 -1626080 5741216 1626120 5741352 1628128 5742888 1628168 5742888 -1626080 5741216 1626120 5741352 1628168 5742888 1629640 5742832 -1626080 5741216 1624032 5745472 1626120 5741352 1628168 5742888 -1626120 5741352 1628032 5743064 1628056 5742960 1628128 5742888 -1626120 5741352 1628056 5742960 1628128 5742888 1628168 5742888 -1626080 5741216 1623896 5745384 1624032 5745472 1626120 5741352 -1626080 5741216 1623896 5745384 1626120 5741352 1628168 5742888 -1624032 5745472 1624528 5745760 1626120 5741352 1623896 5745384 -1626080 5741216 1623640 5745232 1623896 5745384 1626120 5741352 -1626080 5741216 1623640 5745232 1626120 5741352 1628168 5742888 -1626080 5741216 1623224 5745048 1623640 5745232 1626120 5741352 -1626080 5741216 1623224 5745048 1626120 5741352 1628168 5742888 -1626080 5741216 1626056 5741184 1623224 5745048 1626120 5741352 -1626080 5741216 1626056 5741184 1626120 5741352 1628168 5742888 -1623640 5745232 1623896 5745384 1626120 5741352 1623224 5745048 -1623224 5745048 1623640 5745232 1626120 5741352 1626056 5741184 -1623224 5745048 1623528 5745200 1623640 5745232 1626120 5741352 -1623640 5745232 1623792 5745368 1623896 5745384 1626120 5741352 -1623896 5745384 1624032 5745472 1626120 5741352 1623640 5745232 -1626056 5741184 1623128 5745016 1623224 5745048 1626120 5741352 -1626056 5741184 1622528 5744936 1623128 5745016 1626120 5741352 -1626056 5741184 1623128 5745016 1626120 5741352 1626080 5741216 -1623224 5745048 1623640 5745232 1626120 5741352 1623128 5745016 -1628032 5743200 1626120 5741352 1624528 5745760 1627728 5745216 -1624528 5745760 1626120 5741352 1624032 5745472 1624224 5745656 -1626120 5741352 1625984 5741560 1623640 5745232 1623896 5745384 -1626120 5741352 1623224 5745048 1625984 5741560 1623896 5745384 -1625984 5741560 1623224 5745048 1623640 5745232 1623896 5745384 -1623224 5745048 1625984 5741560 1626120 5741352 1623128 5745016 -1625984 5741560 1623896 5745384 1626120 5741352 1623128 5745016 -1623224 5745048 1623640 5745232 1625984 5741560 1623128 5745016 -1623640 5745232 1625984 5741560 1623224 5745048 1623528 5745200 -1623640 5745232 1623792 5745368 1623896 5745384 1625984 5741560 -1626120 5741352 1625984 5741560 1623896 5745384 1624032 5745472 -1626120 5741352 1625984 5741560 1624032 5745472 1624528 5745760 -1626120 5741352 1623128 5745016 1625984 5741560 1624528 5745760 -1626120 5741352 1625984 5741560 1624528 5745760 1628032 5743200 -1625984 5741560 1624032 5745472 1624528 5745760 1628032 5743200 -1626120 5741352 1625984 5741560 1628032 5743200 1628024 5743112 -1626120 5741352 1625984 5741560 1628024 5743112 1628032 5743064 -1626120 5741352 1625984 5741560 1628032 5743064 1628056 5742960 -1625984 5741560 1628024 5743112 1628032 5743064 1628056 5742960 -1625984 5741560 1628032 5743200 1628024 5743112 1628032 5743064 -1626120 5741352 1623128 5745016 1625984 5741560 1628056 5742960 -1625984 5741560 1624528 5745760 1628032 5743200 1628024 5743112 -1625984 5741560 1623640 5745232 1623896 5745384 1624032 5745472 -1626120 5741352 1625984 5741560 1628056 5742960 1628128 5742888 -1625984 5741560 1623896 5745384 1624032 5745472 1624528 5745760 -1626120 5741352 1626056 5741184 1623128 5745016 1625984 5741560 -1626056 5741184 1622528 5744936 1623128 5745016 1625984 5741560 -1626120 5741352 1626056 5741184 1625984 5741560 1628056 5742960 -1626120 5741352 1626080 5741216 1626056 5741184 1625984 5741560 -1626120 5741352 1626080 5741216 1625984 5741560 1628056 5742960 -1623128 5745016 1623224 5745048 1625984 5741560 1622528 5744936 -1626056 5741184 1622352 5744936 1622528 5744936 1625984 5741560 -1626056 5741184 1615632 5735512 1622352 5744936 1625984 5741560 -1622528 5744936 1623128 5745016 1625984 5741560 1622352 5744936 -1626056 5741184 1622352 5744936 1625984 5741560 1626080 5741216 -1622528 5744936 1622680 5744976 1623128 5745016 1625984 5741560 -1624528 5745760 1627728 5745216 1628032 5743200 1625984 5741560 -1624032 5745472 1624224 5745656 1624528 5745760 1625984 5741560 -1622352 5744936 1625832 5741696 1626056 5741184 1615632 5735512 -1622352 5744936 1625984 5741560 1625832 5741696 1615632 5735512 -1625832 5741696 1625984 5741560 1626056 5741184 1615632 5735512 -1626056 5741184 1621616 5733232 1615632 5735512 1625832 5741696 -1615632 5735512 1622352 5744936 1625832 5741696 1621616 5733232 -1626056 5741184 1621616 5733232 1625832 5741696 1625984 5741560 -1626056 5741184 1621712 5733232 1621616 5733232 1625832 5741696 -1621616 5733232 1621440 5733160 1615632 5735512 1625832 5741696 -1625984 5741560 1625832 5741696 1622352 5744936 1622528 5744936 -1625984 5741560 1625832 5741696 1622528 5744936 1623128 5745016 -1625984 5741560 1626056 5741184 1625832 5741696 1623128 5745016 -1625984 5741560 1625832 5741696 1623128 5745016 1623224 5745048 -1625832 5741696 1622528 5744936 1623128 5745016 1623224 5745048 -1625984 5741560 1626056 5741184 1625832 5741696 1623224 5745048 -1625984 5741560 1625832 5741696 1623224 5745048 1623640 5745232 -1625984 5741560 1625832 5741696 1623640 5745232 1623896 5745384 -1625984 5741560 1626056 5741184 1625832 5741696 1623896 5745384 -1625832 5741696 1623224 5745048 1623640 5745232 1623896 5745384 -1625984 5741560 1625832 5741696 1623896 5745384 1624032 5745472 -1625832 5741696 1623640 5745232 1623896 5745384 1624032 5745472 -1625984 5741560 1626056 5741184 1625832 5741696 1624032 5745472 -1625832 5741696 1623128 5745016 1623224 5745048 1623640 5745232 -1623224 5745048 1623528 5745200 1623640 5745232 1625832 5741696 -1623640 5745232 1623792 5745368 1623896 5745384 1625832 5741696 -1625832 5741696 1615632 5735512 1622352 5744936 1622528 5744936 -1625984 5741560 1625832 5741696 1624032 5745472 1624528 5745760 -1625984 5741560 1625832 5741696 1624528 5745760 1628032 5743200 -1625984 5741560 1625832 5741696 1628032 5743200 1628024 5743112 -1625832 5741696 1624528 5745760 1628032 5743200 1628024 5743112 -1625984 5741560 1625832 5741696 1628024 5743112 1628032 5743064 -1625984 5741560 1625832 5741696 1628032 5743064 1628056 5742960 -1625984 5741560 1625832 5741696 1628056 5742960 1626120 5741352 -1625832 5741696 1628024 5743112 1628032 5743064 1628056 5742960 -1625832 5741696 1628032 5743200 1628024 5743112 1628032 5743064 -1625984 5741560 1626056 5741184 1625832 5741696 1628056 5742960 -1625832 5741696 1623896 5745384 1624032 5745472 1624528 5745760 -1625832 5741696 1624032 5745472 1624528 5745760 1628032 5743200 -1625832 5741696 1622352 5744936 1622528 5744936 1623128 5745016 -1626056 5741184 1625832 5741696 1625984 5741560 1626080 5741216 -1622528 5744936 1622680 5744976 1623128 5745016 1625832 5741696 -1622352 5744936 1625832 5741696 1615632 5735512 1615584 5735552 -1624528 5745760 1627728 5745216 1628032 5743200 1625832 5741696 -1624528 5745760 1624712 5745880 1627728 5745216 1625832 5741696 -1628032 5743200 1628024 5743112 1625832 5741696 1627728 5745216 -1624712 5745880 1627696 5745264 1627728 5745216 1625832 5741696 -1624528 5745760 1624712 5745880 1625832 5741696 1624032 5745472 -1627728 5745216 1628032 5743200 1625832 5741696 1624712 5745880 -1624032 5745472 1624224 5745656 1624528 5745760 1625832 5741696 -1627728 5745216 1628048 5743224 1628032 5743200 1625832 5741696 -1615632 5735512 1625704 5741736 1625832 5741696 1621616 5733232 -1615632 5735512 1622352 5744936 1625704 5741736 1621616 5733232 -1625832 5741696 1625704 5741736 1622352 5744936 1622528 5744936 -1625704 5741736 1615632 5735512 1622352 5744936 1622528 5744936 -1625704 5741736 1622528 5744936 1625832 5741696 1621616 5733232 -1625832 5741696 1626056 5741184 1621616 5733232 1625704 5741736 -1621616 5733232 1615632 5735512 1625704 5741736 1626056 5741184 -1625832 5741696 1626056 5741184 1625704 5741736 1622528 5744936 -1625832 5741696 1625984 5741560 1626056 5741184 1625704 5741736 -1625832 5741696 1625984 5741560 1625704 5741736 1622528 5744936 -1626056 5741184 1621712 5733232 1621616 5733232 1625704 5741736 -1626056 5741184 1621616 5733232 1625704 5741736 1625984 5741560 -1615632 5735512 1625704 5741736 1621616 5733232 1621440 5733160 -1625832 5741696 1625704 5741736 1622528 5744936 1623128 5745016 -1625832 5741696 1625704 5741736 1623128 5745016 1623224 5745048 -1625832 5741696 1625704 5741736 1623224 5745048 1623640 5745232 -1625704 5741736 1623128 5745016 1623224 5745048 1623640 5745232 -1625832 5741696 1625704 5741736 1623640 5745232 1623896 5745384 -1625832 5741696 1625704 5741736 1623896 5745384 1624032 5745472 -1625704 5741736 1623640 5745232 1623896 5745384 1624032 5745472 -1625832 5741696 1625704 5741736 1624032 5745472 1624528 5745760 -1625704 5741736 1623896 5745384 1624032 5745472 1624528 5745760 -1625704 5741736 1623224 5745048 1623640 5745232 1623896 5745384 -1623224 5745048 1623528 5745200 1623640 5745232 1625704 5741736 -1623640 5745232 1623792 5745368 1623896 5745384 1625704 5741736 -1625704 5741736 1622352 5744936 1622528 5744936 1623128 5745016 -1625832 5741696 1625984 5741560 1625704 5741736 1624528 5745760 -1625832 5741696 1625704 5741736 1624528 5745760 1624712 5745880 -1625832 5741696 1625704 5741736 1624712 5745880 1627728 5745216 -1624712 5745880 1627696 5745264 1627728 5745216 1625704 5741736 -1625704 5741736 1624032 5745472 1624528 5745760 1624712 5745880 -1625832 5741696 1625984 5741560 1625704 5741736 1627728 5745216 -1625704 5741736 1624528 5745760 1624712 5745880 1627728 5745216 -1625704 5741736 1622528 5744936 1623128 5745016 1623224 5745048 -1625984 5741560 1626080 5741216 1626056 5741184 1625704 5741736 -1622528 5744936 1622680 5744976 1623128 5745016 1625704 5741736 -1622352 5744936 1625704 5741736 1615632 5735512 1615584 5735552 -1625832 5741696 1625704 5741736 1627728 5745216 1628032 5743200 -1625704 5741736 1624712 5745880 1627728 5745216 1628032 5743200 -1625832 5741696 1625704 5741736 1628032 5743200 1628024 5743112 -1625832 5741696 1625984 5741560 1625704 5741736 1628032 5743200 -1624032 5745472 1624224 5745656 1624528 5745760 1625704 5741736 -1627728 5745216 1628048 5743224 1628032 5743200 1625704 5741736 -1625704 5741736 1625528 5741736 1622352 5744936 1622528 5744936 -1625704 5741736 1615632 5735512 1625528 5741736 1622528 5744936 -1615632 5735512 1625528 5741736 1625704 5741736 1621616 5733232 -1625704 5741736 1626056 5741184 1621616 5733232 1625528 5741736 -1625528 5741736 1622528 5744936 1625704 5741736 1626056 5741184 -1621616 5733232 1615632 5735512 1625528 5741736 1626056 5741184 -1625528 5741736 1615632 5735512 1622352 5744936 1622528 5744936 -1615632 5735512 1622352 5744936 1625528 5741736 1621616 5733232 -1625704 5741736 1625528 5741736 1622528 5744936 1623128 5745016 -1625528 5741736 1622352 5744936 1622528 5744936 1623128 5745016 -1625704 5741736 1626056 5741184 1625528 5741736 1623128 5745016 -1626056 5741184 1621712 5733232 1621616 5733232 1625528 5741736 -1626056 5741184 1621712 5733232 1625528 5741736 1625704 5741736 -1626056 5741184 1621784 5733192 1621712 5733232 1625528 5741736 -1621616 5733232 1615632 5735512 1625528 5741736 1621712 5733232 -1625704 5741736 1625984 5741560 1626056 5741184 1625528 5741736 -1615632 5735512 1625528 5741736 1621616 5733232 1621440 5733160 -1625704 5741736 1625528 5741736 1623128 5745016 1623224 5745048 -1625704 5741736 1625528 5741736 1623224 5745048 1623640 5745232 -1625704 5741736 1626056 5741184 1625528 5741736 1623640 5745232 -1625704 5741736 1625528 5741736 1623640 5745232 1623896 5745384 -1625528 5741736 1623224 5745048 1623640 5745232 1623896 5745384 -1625704 5741736 1626056 5741184 1625528 5741736 1623896 5745384 -1625704 5741736 1625528 5741736 1623896 5745384 1624032 5745472 -1625704 5741736 1626056 5741184 1625528 5741736 1624032 5745472 -1625704 5741736 1625528 5741736 1624032 5745472 1624528 5745760 -1625704 5741736 1626056 5741184 1625528 5741736 1624528 5745760 -1625528 5741736 1623896 5745384 1624032 5745472 1624528 5745760 -1625704 5741736 1625528 5741736 1624528 5745760 1624712 5745880 -1625528 5741736 1623640 5745232 1623896 5745384 1624032 5745472 -1623224 5745048 1623528 5745200 1623640 5745232 1625528 5741736 -1623640 5745232 1623792 5745368 1623896 5745384 1625528 5741736 -1625528 5741736 1622528 5744936 1623128 5745016 1623224 5745048 -1625528 5741736 1623128 5745016 1623224 5745048 1623640 5745232 -1622528 5744936 1622680 5744976 1623128 5745016 1625528 5741736 -1622352 5744936 1625528 5741736 1615632 5735512 1615584 5735552 -1624032 5745472 1624224 5745656 1624528 5745760 1625528 5741736 -1625528 5741736 1625360 5741680 1622352 5744936 1622528 5744936 -1625528 5741736 1625360 5741680 1622528 5744936 1623128 5745016 -1625360 5741680 1622352 5744936 1622528 5744936 1623128 5745016 -1625528 5741736 1615632 5735512 1625360 5741680 1623128 5745016 -1615632 5735512 1625360 5741680 1625528 5741736 1621616 5733232 -1625528 5741736 1621712 5733232 1621616 5733232 1625360 5741680 -1625360 5741680 1623128 5745016 1625528 5741736 1621712 5733232 -1621616 5733232 1615632 5735512 1625360 5741680 1621712 5733232 -1625528 5741736 1625360 5741680 1623128 5745016 1623224 5745048 -1625360 5741680 1622528 5744936 1623128 5745016 1623224 5745048 -1625528 5741736 1621712 5733232 1625360 5741680 1623224 5745048 -1625528 5741736 1626056 5741184 1621712 5733232 1625360 5741680 -1625528 5741736 1625704 5741736 1626056 5741184 1625360 5741680 -1626056 5741184 1621784 5733192 1621712 5733232 1625360 5741680 -1621712 5733232 1621616 5733232 1625360 5741680 1626056 5741184 -1625528 5741736 1626056 5741184 1625360 5741680 1623224 5745048 -1615632 5735512 1625360 5741680 1621616 5733232 1621440 5733160 -1625528 5741736 1625360 5741680 1623224 5745048 1623640 5745232 -1625528 5741736 1625360 5741680 1623640 5745232 1623896 5745384 -1625528 5741736 1625360 5741680 1623896 5745384 1624032 5745472 -1623224 5745048 1623528 5745200 1623640 5745232 1625360 5741680 -1623640 5745232 1623792 5745368 1623896 5745384 1625360 5741680 -1625528 5741736 1626056 5741184 1625360 5741680 1623896 5745384 -1625360 5741680 1623128 5745016 1623224 5745048 1623640 5745232 -1625360 5741680 1623224 5745048 1623640 5745232 1623896 5745384 -1622528 5744936 1622680 5744976 1623128 5745016 1625360 5741680 -1622352 5744936 1625360 5741680 1615632 5735512 1615584 5735552 -1625360 5741680 1615632 5735512 1622352 5744936 1622528 5744936 -1615632 5735512 1622352 5744936 1625360 5741680 1621616 5733232 -1621616 5733232 1625296 5741616 1625360 5741680 1621712 5733232 -1621616 5733232 1615632 5735512 1625296 5741616 1621712 5733232 -1625360 5741680 1626056 5741184 1621712 5733232 1625296 5741616 -1626056 5741184 1621784 5733192 1621712 5733232 1625296 5741616 -1621712 5733232 1621616 5733232 1625296 5741616 1626056 5741184 -1625360 5741680 1625528 5741736 1626056 5741184 1625296 5741616 -1625528 5741736 1625704 5741736 1626056 5741184 1625296 5741616 -1626056 5741184 1621712 5733232 1625296 5741616 1625528 5741736 -1615632 5735512 1625296 5741616 1621616 5733232 1621440 5733160 -1625296 5741616 1615632 5735512 1625360 5741680 1625528 5741736 -1625360 5741680 1625296 5741616 1615632 5735512 1622352 5744936 -1625296 5741616 1621616 5733232 1615632 5735512 1622352 5744936 -1615632 5735512 1615584 5735552 1622352 5744936 1625296 5741616 -1625360 5741680 1625296 5741616 1622352 5744936 1622528 5744936 -1625360 5741680 1625296 5741616 1622528 5744936 1623128 5745016 -1625360 5741680 1625296 5741616 1623128 5745016 1623224 5745048 -1625296 5741616 1622528 5744936 1623128 5745016 1623224 5745048 -1625360 5741680 1625296 5741616 1623224 5745048 1623640 5745232 -1622528 5744936 1622680 5744976 1623128 5745016 1625296 5741616 -1625296 5741616 1622352 5744936 1622528 5744936 1623128 5745016 -1625360 5741680 1625528 5741736 1625296 5741616 1623224 5745048 -1625296 5741616 1615632 5735512 1622352 5744936 1622528 5744936 -1621712 5733232 1625232 5741464 1626056 5741184 1621784 5733192 -1626056 5741184 1625232 5741464 1625296 5741616 1625528 5741736 -1626056 5741184 1625232 5741464 1625528 5741736 1625704 5741736 -1625232 5741464 1621712 5733232 1625296 5741616 1625528 5741736 -1625232 5741464 1625296 5741616 1625528 5741736 1625704 5741736 -1621712 5733232 1625296 5741616 1625232 5741464 1621784 5733192 -1625232 5741464 1625704 5741736 1626056 5741184 1621784 5733192 -1626056 5741184 1621808 5733136 1621784 5733192 1625232 5741464 -1625296 5741616 1625232 5741464 1621712 5733232 1621616 5733232 -1625296 5741616 1625528 5741736 1625232 5741464 1621616 5733232 -1625296 5741616 1625232 5741464 1621616 5733232 1615632 5735512 -1625296 5741616 1625232 5741464 1615632 5735512 1622352 5744936 -1625296 5741616 1625528 5741736 1625232 5741464 1622352 5744936 -1625232 5741464 1621616 5733232 1615632 5735512 1622352 5744936 -1625232 5741464 1621784 5733192 1621712 5733232 1621616 5733232 -1625232 5741464 1621712 5733232 1621616 5733232 1615632 5735512 -1625296 5741616 1625360 5741680 1625528 5741736 1625232 5741464 -1626056 5741184 1625232 5741464 1625704 5741736 1625984 5741560 -1625232 5741464 1625528 5741736 1625704 5741736 1625984 5741560 -1626056 5741184 1621784 5733192 1625232 5741464 1625984 5741560 -1625704 5741736 1625832 5741696 1625984 5741560 1625232 5741464 -1621616 5733232 1621440 5733160 1615632 5735512 1625232 5741464 -1626056 5741184 1625232 5741464 1625984 5741560 1626080 5741216 -1615632 5735512 1615584 5735552 1622352 5744936 1625232 5741464 -1625296 5741616 1625232 5741464 1622352 5744936 1622528 5744936 -1625232 5741464 1615632 5735512 1622352 5744936 1622528 5744936 -1625296 5741616 1625528 5741736 1625232 5741464 1622528 5744936 -1625296 5741616 1625232 5741464 1622528 5744936 1623128 5745016 -1625232 5741464 1625288 5741224 1621784 5733192 1621712 5733232 -1625232 5741464 1625288 5741224 1621712 5733232 1621616 5733232 -1625288 5741224 1621784 5733192 1621712 5733232 1621616 5733232 -1625232 5741464 1626056 5741184 1625288 5741224 1621616 5733232 -1626056 5741184 1625288 5741224 1625232 5741464 1625984 5741560 -1625288 5741224 1621616 5733232 1625232 5741464 1625984 5741560 -1621784 5733192 1625288 5741224 1626056 5741184 1621808 5733136 -1625232 5741464 1625288 5741224 1621616 5733232 1615632 5735512 -1625232 5741464 1625288 5741224 1615632 5735512 1622352 5744936 -1625232 5741464 1625288 5741224 1622352 5744936 1622528 5744936 -1625288 5741224 1621712 5733232 1621616 5733232 1615632 5735512 -1625232 5741464 1625984 5741560 1625288 5741224 1622352 5744936 -1625288 5741224 1621616 5733232 1615632 5735512 1622352 5744936 -1625232 5741464 1625704 5741736 1625984 5741560 1625288 5741224 -1625232 5741464 1625528 5741736 1625704 5741736 1625288 5741224 -1625232 5741464 1625296 5741616 1625528 5741736 1625288 5741224 -1625232 5741464 1625528 5741736 1625288 5741224 1622352 5744936 -1625984 5741560 1626056 5741184 1625288 5741224 1625704 5741736 -1625704 5741736 1625832 5741696 1625984 5741560 1625288 5741224 -1625984 5741560 1626056 5741184 1625288 5741224 1625832 5741696 -1625704 5741736 1625832 5741696 1625288 5741224 1625528 5741736 -1621616 5733232 1621440 5733160 1615632 5735512 1625288 5741224 -1626056 5741184 1625288 5741224 1625984 5741560 1626080 5741216 -1625288 5741224 1626056 5741184 1621784 5733192 1621712 5733232 -1626056 5741184 1621784 5733192 1625288 5741224 1625984 5741560 -1615632 5735512 1615584 5735552 1622352 5744936 1625288 5741224 -1621784 5733192 1625272 5741048 1626056 5741184 1621808 5733136 -1625288 5741224 1625272 5741048 1621784 5733192 1621712 5733232 -1625288 5741224 1625272 5741048 1621712 5733232 1621616 5733232 -1625288 5741224 1625272 5741048 1621616 5733232 1615632 5735512 -1625272 5741048 1621712 5733232 1621616 5733232 1615632 5735512 -1625288 5741224 1625272 5741048 1615632 5735512 1622352 5744936 -1625288 5741224 1625272 5741048 1622352 5744936 1625232 5741464 -1622352 5744936 1622528 5744936 1625232 5741464 1625272 5741048 -1625272 5741048 1621616 5733232 1615632 5735512 1622352 5744936 -1625272 5741048 1615632 5735512 1622352 5744936 1625232 5741464 -1625272 5741048 1626056 5741184 1621784 5733192 1621712 5733232 -1621616 5733232 1621440 5733160 1615632 5735512 1625272 5741048 -1625272 5741048 1621784 5733192 1621712 5733232 1621616 5733232 -1625288 5741224 1626056 5741184 1625272 5741048 1625232 5741464 -1626056 5741184 1625272 5741048 1625288 5741224 1625984 5741560 -1615632 5735512 1615584 5735552 1622352 5744936 1625272 5741048 -1621784 5733192 1625280 5740944 1626056 5741184 1621808 5733136 -1625272 5741048 1625280 5740944 1621784 5733192 1621712 5733232 -1625272 5741048 1626056 5741184 1625280 5740944 1621712 5733232 -1626056 5741184 1625280 5740944 1625272 5741048 1625288 5741224 -1626056 5741184 1629584 5726976 1621808 5733136 1625280 5740944 -1625272 5741048 1625280 5740944 1621712 5733232 1621616 5733232 -1625272 5741048 1625280 5740944 1621616 5733232 1615632 5735512 -1625272 5741048 1625280 5740944 1615632 5735512 1622352 5744936 -1625280 5740944 1621616 5733232 1615632 5735512 1622352 5744936 -1625272 5741048 1625280 5740944 1622352 5744936 1625232 5741464 -1625280 5740944 1621784 5733192 1621712 5733232 1621616 5733232 -1625272 5741048 1626056 5741184 1625280 5740944 1622352 5744936 -1621616 5733232 1621440 5733160 1615632 5735512 1625280 5740944 -1625280 5740944 1621712 5733232 1621616 5733232 1615632 5735512 -1615632 5735512 1615584 5735552 1622352 5744936 1625280 5740944 -1621784 5733192 1621712 5733232 1625280 5740944 1621808 5733136 -1625280 5740944 1625272 5741048 1626056 5741184 1621808 5733136 -1625280 5740944 1625336 5740928 1621808 5733136 1621784 5733192 -1621808 5733136 1625336 5740928 1626056 5741184 1629584 5726976 -1625336 5740928 1626056 5741184 1621808 5733136 1621784 5733192 -1625280 5740944 1625336 5740928 1621784 5733192 1621712 5733232 -1625280 5740944 1626056 5741184 1625336 5740928 1621784 5733192 -1626056 5741184 1625336 5740928 1625280 5740944 1625272 5741048 -1626056 5741184 1625336 5740928 1625272 5741048 1625288 5741224 -1626056 5741184 1625336 5740928 1625288 5741224 1625984 5741560 -1626056 5741184 1621808 5733136 1625336 5740928 1625288 5741224 -1625336 5740928 1621784 5733192 1625280 5740944 1625272 5741048 -1625336 5740928 1625280 5740944 1625272 5741048 1625288 5741224 -1621808 5733136 1625656 5740944 1626056 5741184 1629584 5726976 -1621808 5733136 1625336 5740928 1625656 5740944 1629584 5726976 -1625656 5740944 1625336 5740928 1626056 5741184 1629584 5726976 -1621808 5733136 1625656 5740944 1629584 5726976 1621800 5732912 -1626056 5741184 1629688 5742824 1629584 5726976 1625656 5740944 -1625336 5740928 1625656 5740944 1621808 5733136 1621784 5733192 -1625656 5740944 1629584 5726976 1621808 5733136 1621784 5733192 -1625336 5740928 1625656 5740944 1621784 5733192 1625280 5740944 -1625336 5740928 1626056 5741184 1625656 5740944 1621784 5733192 -1626056 5741184 1625656 5740944 1625336 5740928 1625288 5741224 -1626056 5741184 1629584 5726976 1625656 5740944 1625288 5741224 -1625336 5740928 1625272 5741048 1625288 5741224 1625656 5740944 -1626056 5741184 1625656 5740944 1625288 5741224 1625984 5741560 -1626056 5741184 1629584 5726976 1625656 5740944 1625984 5741560 -1625288 5741224 1625832 5741696 1625984 5741560 1625656 5740944 -1626056 5741184 1625656 5740944 1625984 5741560 1626080 5741216 -1625656 5740944 1621784 5733192 1625336 5740928 1625272 5741048 -1625288 5741224 1625984 5741560 1625656 5740944 1625272 5741048 -1625336 5740928 1625280 5740944 1625272 5741048 1625656 5740944 -1626056 5741184 1625784 5741000 1625656 5740944 1625984 5741560 -1625784 5741000 1629584 5726976 1625656 5740944 1625984 5741560 -1629584 5726976 1625784 5741000 1626056 5741184 1629688 5742824 -1625656 5740944 1625784 5741000 1629584 5726976 1621808 5733136 -1625656 5740944 1625784 5741000 1621808 5733136 1621784 5733192 -1625656 5740944 1625984 5741560 1625784 5741000 1621808 5733136 -1625784 5741000 1626056 5741184 1629584 5726976 1621808 5733136 -1629584 5726976 1621800 5732912 1621808 5733136 1625784 5741000 -1626056 5741184 1625784 5741000 1625984 5741560 1626080 5741216 -1625656 5740944 1625288 5741224 1625984 5741560 1625784 5741000 -1625656 5740944 1625288 5741224 1625784 5741000 1621808 5733136 -1625984 5741560 1626056 5741184 1625784 5741000 1625288 5741224 -1625288 5741224 1625832 5741696 1625984 5741560 1625784 5741000 -1625984 5741560 1626056 5741184 1625784 5741000 1625832 5741696 -1625288 5741224 1625704 5741736 1625832 5741696 1625784 5741000 -1625832 5741696 1625984 5741560 1625784 5741000 1625704 5741736 -1625288 5741224 1625528 5741736 1625704 5741736 1625784 5741000 -1625288 5741224 1625704 5741736 1625784 5741000 1625656 5740944 -1626056 5741184 1629584 5726976 1625784 5741000 1625984 5741560 -1625656 5740944 1625272 5741048 1625288 5741224 1625784 5741000 -1625784 5741000 1625984 5741112 1629584 5726976 1621808 5733136 -1629584 5726976 1625984 5741112 1626056 5741184 1629688 5742824 -1626056 5741184 1626080 5741216 1629688 5742824 1625984 5741112 -1625984 5741112 1625784 5741000 1626056 5741184 1629688 5742824 -1629584 5726976 1625984 5741112 1629688 5742824 1629776 5726856 -1626056 5741184 1625984 5741112 1625784 5741000 1625984 5741560 -1625784 5741000 1625832 5741696 1625984 5741560 1625984 5741112 -1626056 5741184 1629688 5742824 1625984 5741112 1625984 5741560 -1626056 5741184 1625984 5741112 1625984 5741560 1626080 5741216 -1625984 5741112 1629584 5726976 1625784 5741000 1625984 5741560 -1629584 5726976 1625784 5741000 1625984 5741112 1629688 5742824 -1629584 5726976 1626248 5738800 1625784 5741000 1625984 5741112 -1629584 5726976 1621808 5733136 1626248 5738800 1625984 5741112 -1621808 5733136 1626248 5738800 1629584 5726976 1621800 5732912 -1626248 5738800 1621808 5733136 1625784 5741000 1625984 5741112 -1625784 5741000 1626248 5738800 1621808 5733136 1625656 5740944 -1621808 5733136 1621784 5733192 1625656 5740944 1626248 5738800 -1625784 5741000 1625984 5741112 1626248 5738800 1625656 5740944 -1626248 5738800 1629584 5726976 1621808 5733136 1621784 5733192 -1625656 5740944 1625784 5741000 1626248 5738800 1621784 5733192 -1629584 5726976 1626248 5738800 1625984 5741112 1629688 5742824 -1626248 5738800 1625784 5741000 1625984 5741112 1629688 5742824 -1629584 5726976 1621808 5733136 1626248 5738800 1629688 5742824 -1625984 5741112 1626056 5741184 1629688 5742824 1626248 5738800 -1625984 5741112 1626056 5741184 1626248 5738800 1625784 5741000 -1626056 5741184 1626080 5741216 1629688 5742824 1626248 5738800 -1626080 5741216 1629640 5742832 1629688 5742824 1626248 5738800 -1626080 5741216 1629640 5742832 1626248 5738800 1626056 5741184 -1626056 5741184 1626080 5741216 1626248 5738800 1625984 5741112 -1626080 5741216 1628168 5742888 1629640 5742832 1626248 5738800 -1626080 5741216 1626120 5741352 1628168 5742888 1626248 5738800 -1629640 5742832 1629688 5742824 1626248 5738800 1628168 5742888 -1626080 5741216 1628168 5742888 1626248 5738800 1626056 5741184 -1628168 5742888 1629312 5742992 1629640 5742832 1626248 5738800 -1629584 5726976 1626248 5738800 1629688 5742824 1629776 5726856 -1629584 5726976 1621808 5733136 1626248 5738800 1629776 5726856 -1629688 5742824 1629784 5742896 1629776 5726856 1626248 5738800 -1629688 5742824 1629776 5726856 1626248 5738800 1629640 5742832 -1621784 5733192 1625336 5740928 1625656 5740944 1626248 5738800 -1621784 5733192 1625336 5740928 1626248 5738800 1621808 5733136 -1621784 5733192 1625280 5740944 1625336 5740928 1626248 5738800 -1621784 5733192 1625280 5740944 1626248 5738800 1621808 5733136 -1625656 5740944 1625784 5741000 1626248 5738800 1625336 5740928 -1625336 5740928 1625656 5740944 1626248 5738800 1625280 5740944 -1621784 5733192 1621712 5733232 1625280 5740944 1626248 5738800 -1621784 5733192 1621712 5733232 1626248 5738800 1621808 5733136 -1625280 5740944 1625336 5740928 1626248 5738800 1621712 5733232 -1621712 5733232 1621616 5733232 1625280 5740944 1626248 5738800 -1625280 5740944 1625336 5740928 1626248 5738800 1621616 5733232 -1621616 5733232 1615632 5735512 1625280 5740944 1626248 5738800 -1621712 5733232 1621616 5733232 1626248 5738800 1621784 5733192 -1626248 5738800 1625888 5738752 1625280 5740944 1625336 5740928 -1626248 5738800 1621616 5733232 1625888 5738752 1625336 5740928 -1625888 5738752 1621616 5733232 1625280 5740944 1625336 5740928 -1621616 5733232 1625888 5738752 1626248 5738800 1621712 5733232 -1625888 5738752 1625336 5740928 1626248 5738800 1621712 5733232 -1621616 5733232 1625280 5740944 1625888 5738752 1621712 5733232 -1625280 5740944 1625888 5738752 1621616 5733232 1615632 5735512 -1626248 5738800 1625888 5738752 1625336 5740928 1625656 5740944 -1626248 5738800 1621712 5733232 1625888 5738752 1625656 5740944 -1625888 5738752 1625280 5740944 1625336 5740928 1625656 5740944 -1626248 5738800 1625888 5738752 1625656 5740944 1625784 5741000 -1626248 5738800 1621784 5733192 1621712 5733232 1625888 5738752 -1626248 5738800 1621808 5733136 1621784 5733192 1625888 5738752 -1626248 5738800 1621808 5733136 1625888 5738752 1625656 5740944 -1626248 5738800 1629584 5726976 1621808 5733136 1625888 5738752 -1621712 5733232 1621616 5733232 1625888 5738752 1621784 5733192 -1621784 5733192 1621712 5733232 1625888 5738752 1621808 5733136 -1625888 5738752 1625520 5738640 1625280 5740944 1625336 5740928 -1625888 5738752 1621616 5733232 1625520 5738640 1625336 5740928 -1621616 5733232 1625520 5738640 1625888 5738752 1621712 5733232 -1625520 5738640 1625336 5740928 1625888 5738752 1621712 5733232 -1625888 5738752 1625520 5738640 1625336 5740928 1625656 5740944 -1625888 5738752 1621784 5733192 1621712 5733232 1625520 5738640 -1625888 5738752 1621784 5733192 1625520 5738640 1625336 5740928 -1621712 5733232 1621616 5733232 1625520 5738640 1621784 5733192 -1625520 5738640 1621616 5733232 1625280 5740944 1625336 5740928 -1621616 5733232 1625280 5740944 1625520 5738640 1621712 5733232 -1625280 5740944 1625520 5738640 1621616 5733232 1615632 5735512 -1625280 5740944 1625520 5738640 1615632 5735512 1622352 5744936 -1621616 5733232 1621440 5733160 1615632 5735512 1625520 5738640 -1625280 5740944 1625336 5740928 1625520 5738640 1615632 5735512 -1625520 5738640 1621712 5733232 1621616 5733232 1615632 5735512 -1625888 5738752 1621808 5733136 1621784 5733192 1625520 5738640 -1625888 5738752 1626248 5738800 1621808 5733136 1625520 5738640 -1625888 5738752 1626248 5738800 1625520 5738640 1625336 5740928 -1626248 5738800 1629584 5726976 1621808 5733136 1625520 5738640 -1621784 5733192 1621712 5733232 1625520 5738640 1621808 5733136 -1621808 5733136 1621784 5733192 1625520 5738640 1626248 5738800 -1615632 5735512 1625384 5738568 1621616 5733232 1621440 5733160 -1621616 5733232 1625384 5738568 1625520 5738640 1621712 5733232 -1625520 5738640 1621784 5733192 1621712 5733232 1625384 5738568 -1625520 5738640 1621808 5733136 1621784 5733192 1625384 5738568 -1621784 5733192 1621712 5733232 1625384 5738568 1621808 5733136 -1625384 5738568 1615632 5735512 1625520 5738640 1621808 5733136 -1621712 5733232 1621616 5733232 1625384 5738568 1621784 5733192 -1625520 5738640 1625384 5738568 1615632 5735512 1625280 5740944 -1615632 5735512 1622352 5744936 1625280 5740944 1625384 5738568 -1625520 5738640 1625384 5738568 1625280 5740944 1625336 5740928 -1625520 5738640 1621808 5733136 1625384 5738568 1625280 5740944 -1625384 5738568 1621616 5733232 1615632 5735512 1625280 5740944 -1621616 5733232 1615632 5735512 1625384 5738568 1621712 5733232 -1625520 5738640 1626248 5738800 1621808 5733136 1625384 5738568 -1625520 5738640 1625888 5738752 1626248 5738800 1625384 5738568 -1626248 5738800 1629584 5726976 1621808 5733136 1625384 5738568 -1621808 5733136 1621784 5733192 1625384 5738568 1626248 5738800 -1625520 5738640 1625888 5738752 1625384 5738568 1625280 5740944 -1626248 5738800 1621808 5733136 1625384 5738568 1625888 5738752 -1615632 5735512 1625320 5738488 1621616 5733232 1621440 5733160 -1625384 5738568 1625320 5738488 1615632 5735512 1625280 5740944 -1615632 5735512 1622352 5744936 1625280 5740944 1625320 5738488 -1625320 5738488 1621616 5733232 1615632 5735512 1625280 5740944 -1625384 5738568 1625320 5738488 1625280 5740944 1625520 5738640 -1625384 5738568 1621616 5733232 1625320 5738488 1625280 5740944 -1621616 5733232 1625320 5738488 1625384 5738568 1621712 5733232 -1621616 5733232 1615632 5735512 1625320 5738488 1621712 5733232 -1625384 5738568 1621784 5733192 1621712 5733232 1625320 5738488 -1625384 5738568 1621808 5733136 1621784 5733192 1625320 5738488 -1625384 5738568 1626248 5738800 1621808 5733136 1625320 5738488 -1621808 5733136 1621784 5733192 1625320 5738488 1626248 5738800 -1626248 5738800 1629584 5726976 1621808 5733136 1625320 5738488 -1621784 5733192 1621712 5733232 1625320 5738488 1621808 5733136 -1625320 5738488 1625280 5740944 1625384 5738568 1626248 5738800 -1621712 5733232 1621616 5733232 1625320 5738488 1621784 5733192 -1625384 5738568 1625888 5738752 1626248 5738800 1625320 5738488 -1625384 5738568 1625520 5738640 1625888 5738752 1625320 5738488 -1626248 5738800 1621808 5733136 1625320 5738488 1625888 5738752 -1625384 5738568 1625520 5738640 1625320 5738488 1625280 5740944 -1625888 5738752 1626248 5738800 1625320 5738488 1625520 5738640 -1625320 5738488 1625208 5738280 1621808 5733136 1621784 5733192 -1625208 5738280 1626248 5738800 1621808 5733136 1621784 5733192 -1621808 5733136 1625208 5738280 1626248 5738800 1629584 5726976 -1626248 5738800 1629776 5726856 1629584 5726976 1625208 5738280 -1621808 5733136 1625208 5738280 1629584 5726976 1621800 5732912 -1621808 5733136 1621784 5733192 1625208 5738280 1629584 5726976 -1625208 5738280 1625320 5738488 1626248 5738800 1629584 5726976 -1626248 5738800 1625208 5738280 1625320 5738488 1625888 5738752 -1626248 5738800 1629584 5726976 1625208 5738280 1625888 5738752 -1625320 5738488 1625888 5738752 1625208 5738280 1621784 5733192 -1625320 5738488 1625208 5738280 1621784 5733192 1621712 5733232 -1625208 5738280 1621808 5733136 1621784 5733192 1621712 5733232 -1625320 5738488 1625888 5738752 1625208 5738280 1621712 5733232 -1625320 5738488 1625208 5738280 1621712 5733232 1621616 5733232 -1625320 5738488 1625888 5738752 1625208 5738280 1621616 5733232 -1625320 5738488 1625208 5738280 1621616 5733232 1615632 5735512 -1621616 5733232 1621440 5733160 1615632 5735512 1625208 5738280 -1625320 5738488 1625208 5738280 1615632 5735512 1625280 5740944 -1615632 5735512 1622352 5744936 1625280 5740944 1625208 5738280 -1625320 5738488 1625888 5738752 1625208 5738280 1625280 5740944 -1625208 5738280 1621616 5733232 1615632 5735512 1625280 5740944 -1625208 5738280 1621784 5733192 1621712 5733232 1621616 5733232 -1625320 5738488 1625208 5738280 1625280 5740944 1625384 5738568 -1625208 5738280 1621712 5733232 1621616 5733232 1615632 5735512 -1625320 5738488 1625520 5738640 1625888 5738752 1625208 5738280 -1625320 5738488 1625384 5738568 1625520 5738640 1625208 5738280 -1625888 5738752 1626248 5738800 1625208 5738280 1625520 5738640 -1625320 5738488 1625520 5738640 1625208 5738280 1625280 5740944 -1615632 5735512 1625088 5738152 1621616 5733232 1621440 5733160 -1625208 5738280 1625088 5738152 1615632 5735512 1625280 5740944 -1615632 5735512 1622352 5744936 1625280 5740944 1625088 5738152 -1622352 5744936 1625272 5741048 1625280 5740944 1625088 5738152 -1625208 5738280 1621616 5733232 1625088 5738152 1625280 5740944 -1625088 5738152 1621616 5733232 1615632 5735512 1622352 5744936 -1625208 5738280 1625088 5738152 1625280 5740944 1625320 5738488 -1625208 5738280 1621616 5733232 1625088 5738152 1625320 5738488 -1625280 5740944 1625320 5738488 1625088 5738152 1622352 5744936 -1615632 5735512 1615584 5735552 1622352 5744936 1625088 5738152 -1625280 5740944 1625384 5738568 1625320 5738488 1625088 5738152 -1621616 5733232 1625088 5738152 1625208 5738280 1621712 5733232 -1625088 5738152 1625320 5738488 1625208 5738280 1621712 5733232 -1621616 5733232 1615632 5735512 1625088 5738152 1621712 5733232 -1625208 5738280 1621784 5733192 1621712 5733232 1625088 5738152 -1625208 5738280 1621808 5733136 1621784 5733192 1625088 5738152 -1625208 5738280 1629584 5726976 1621808 5733136 1625088 5738152 -1621808 5733136 1621784 5733192 1625088 5738152 1629584 5726976 -1629584 5726976 1621800 5732912 1621808 5733136 1625088 5738152 -1629584 5726976 1621776 5732752 1621800 5732912 1625088 5738152 -1621808 5733136 1621784 5733192 1625088 5738152 1621800 5732912 -1629584 5726976 1621800 5732912 1625088 5738152 1625208 5738280 -1625208 5738280 1629584 5726976 1625088 5738152 1625320 5738488 -1625208 5738280 1626248 5738800 1629584 5726976 1625088 5738152 -1626248 5738800 1629776 5726856 1629584 5726976 1625088 5738152 -1629584 5726976 1621800 5732912 1625088 5738152 1626248 5738800 -1625208 5738280 1626248 5738800 1625088 5738152 1625320 5738488 -1625208 5738280 1625888 5738752 1626248 5738800 1625088 5738152 -1621784 5733192 1621712 5733232 1625088 5738152 1621808 5733136 -1621712 5733232 1621616 5733232 1625088 5738152 1621784 5733192 -1625088 5738152 1625032 5738112 1615632 5735512 1622352 5744936 -1625088 5738152 1625032 5738112 1622352 5744936 1625280 5740944 -1622352 5744936 1625272 5741048 1625280 5740944 1625032 5738112 -1625032 5738112 1621616 5733232 1615632 5735512 1622352 5744936 -1625032 5738112 1615632 5735512 1622352 5744936 1625280 5740944 -1625088 5738152 1621616 5733232 1625032 5738112 1625280 5740944 -1621616 5733232 1625032 5738112 1625088 5738152 1621712 5733232 -1621616 5733232 1615632 5735512 1625032 5738112 1621712 5733232 -1625032 5738112 1625280 5740944 1625088 5738152 1621712 5733232 -1615632 5735512 1625032 5738112 1621616 5733232 1621440 5733160 -1625088 5738152 1625032 5738112 1625280 5740944 1625320 5738488 -1625032 5738112 1622352 5744936 1625280 5740944 1625320 5738488 -1625088 5738152 1621712 5733232 1625032 5738112 1625320 5738488 -1625088 5738152 1625032 5738112 1625320 5738488 1625208 5738280 -1625088 5738152 1621712 5733232 1625032 5738112 1625208 5738280 -1625032 5738112 1625280 5740944 1625320 5738488 1625208 5738280 -1615632 5735512 1615584 5735552 1622352 5744936 1625032 5738112 -1625280 5740944 1625384 5738568 1625320 5738488 1625032 5738112 -1625088 5738152 1621784 5733192 1621712 5733232 1625032 5738112 -1625088 5738152 1621784 5733192 1625032 5738112 1625208 5738280 -1621712 5733232 1621616 5733232 1625032 5738112 1621784 5733192 -1625088 5738152 1621808 5733136 1621784 5733192 1625032 5738112 -1625088 5738152 1621800 5732912 1621808 5733136 1625032 5738112 -1625088 5738152 1629584 5726976 1621800 5732912 1625032 5738112 -1629584 5726976 1621776 5732752 1621800 5732912 1625032 5738112 -1621800 5732912 1621808 5733136 1625032 5738112 1629584 5726976 -1625088 5738152 1626248 5738800 1629584 5726976 1625032 5738112 -1625088 5738152 1629584 5726976 1625032 5738112 1625208 5738280 -1621808 5733136 1621784 5733192 1625032 5738112 1621800 5732912 -1621784 5733192 1621712 5733232 1625032 5738112 1621808 5733136 -1625032 5738112 1624944 5738064 1615632 5735512 1622352 5744936 -1625032 5738112 1621616 5733232 1624944 5738064 1622352 5744936 -1621616 5733232 1624944 5738064 1625032 5738112 1621712 5733232 -1624944 5738064 1622352 5744936 1625032 5738112 1621712 5733232 -1625032 5738112 1624944 5738064 1622352 5744936 1625280 5740944 -1625032 5738112 1624944 5738064 1625280 5740944 1625320 5738488 -1622352 5744936 1625272 5741048 1625280 5740944 1624944 5738064 -1624944 5738064 1615632 5735512 1622352 5744936 1625280 5740944 -1625032 5738112 1621712 5733232 1624944 5738064 1625320 5738488 -1624944 5738064 1622352 5744936 1625280 5740944 1625320 5738488 -1625032 5738112 1621784 5733192 1621712 5733232 1624944 5738064 -1625032 5738112 1621784 5733192 1624944 5738064 1625320 5738488 -1621712 5733232 1621616 5733232 1624944 5738064 1621784 5733192 -1615632 5735512 1624944 5738064 1621616 5733232 1621440 5733160 -1625032 5738112 1624944 5738064 1625320 5738488 1625208 5738280 -1624944 5738064 1625280 5740944 1625320 5738488 1625208 5738280 -1625032 5738112 1621784 5733192 1624944 5738064 1625208 5738280 -1625032 5738112 1624944 5738064 1625208 5738280 1625088 5738152 -1621616 5733232 1615632 5735512 1624944 5738064 1621712 5733232 -1624944 5738064 1621616 5733232 1615632 5735512 1622352 5744936 -1615632 5735512 1615584 5735552 1622352 5744936 1624944 5738064 -1625280 5740944 1625384 5738568 1625320 5738488 1624944 5738064 -1625032 5738112 1621808 5733136 1621784 5733192 1624944 5738064 -1625032 5738112 1621808 5733136 1624944 5738064 1625208 5738280 -1621784 5733192 1621712 5733232 1624944 5738064 1621808 5733136 -1625032 5738112 1621800 5732912 1621808 5733136 1624944 5738064 -1625032 5738112 1629584 5726976 1621800 5732912 1624944 5738064 -1629584 5726976 1621776 5732752 1621800 5732912 1624944 5738064 -1625032 5738112 1629584 5726976 1624944 5738064 1625208 5738280 -1625032 5738112 1625088 5738152 1629584 5726976 1624944 5738064 -1621800 5732912 1621808 5733136 1624944 5738064 1629584 5726976 -1621808 5733136 1621784 5733192 1624944 5738064 1621800 5732912 -1621800 5732912 1624904 5738000 1624944 5738064 1629584 5726976 -1621800 5732912 1624904 5738000 1629584 5726976 1621776 5732752 -1624944 5738064 1625032 5738112 1629584 5726976 1624904 5738000 -1625032 5738112 1625088 5738152 1629584 5726976 1624904 5738000 -1625032 5738112 1625088 5738152 1624904 5738000 1624944 5738064 -1625088 5738152 1626248 5738800 1629584 5726976 1624904 5738000 -1626248 5738800 1629776 5726856 1629584 5726976 1624904 5738000 -1625088 5738152 1626248 5738800 1624904 5738000 1625032 5738112 -1625088 5738152 1625208 5738280 1626248 5738800 1624904 5738000 -1629584 5726976 1621800 5732912 1624904 5738000 1626248 5738800 -1621800 5732912 1621808 5733136 1624904 5738000 1629584 5726976 -1624904 5738000 1621808 5733136 1624944 5738064 1625032 5738112 -1624944 5738064 1624904 5738000 1621808 5733136 1621784 5733192 -1624944 5738064 1624904 5738000 1621784 5733192 1621712 5733232 -1624944 5738064 1624904 5738000 1621712 5733232 1621616 5733232 -1624904 5738000 1621784 5733192 1621712 5733232 1621616 5733232 -1624944 5738064 1625032 5738112 1624904 5738000 1621616 5733232 -1624944 5738064 1624904 5738000 1621616 5733232 1615632 5735512 -1624904 5738000 1621712 5733232 1621616 5733232 1615632 5735512 -1621616 5733232 1621440 5733160 1615632 5735512 1624904 5738000 -1624944 5738064 1625032 5738112 1624904 5738000 1615632 5735512 -1624904 5738000 1621800 5732912 1621808 5733136 1621784 5733192 -1624944 5738064 1624904 5738000 1615632 5735512 1622352 5744936 -1624944 5738064 1624904 5738000 1622352 5744936 1625280 5740944 -1622352 5744936 1625272 5741048 1625280 5740944 1624904 5738000 -1624944 5738064 1624904 5738000 1625280 5740944 1625320 5738488 -1624904 5738000 1615632 5735512 1622352 5744936 1625280 5740944 -1624944 5738064 1625032 5738112 1624904 5738000 1625280 5740944 -1624904 5738000 1621616 5733232 1615632 5735512 1622352 5744936 -1615632 5735512 1615584 5735552 1622352 5744936 1624904 5738000 -1624904 5738000 1621808 5733136 1621784 5733192 1621712 5733232 -1629584 5726976 1625120 5738032 1626248 5738800 1629776 5726856 -1626248 5738800 1625120 5738032 1624904 5738000 1625088 5738152 -1624904 5738000 1625032 5738112 1625088 5738152 1625120 5738032 -1624904 5738000 1624944 5738064 1625032 5738112 1625120 5738032 -1625032 5738112 1625088 5738152 1625120 5738032 1624944 5738064 -1625088 5738152 1626248 5738800 1625120 5738032 1625032 5738112 -1626248 5738800 1625120 5738032 1625088 5738152 1625208 5738280 -1625120 5738032 1625032 5738112 1625088 5738152 1625208 5738280 -1626248 5738800 1625120 5738032 1625208 5738280 1625888 5738752 -1625120 5738032 1625088 5738152 1625208 5738280 1625888 5738752 -1626248 5738800 1629584 5726976 1625120 5738032 1625888 5738752 -1625208 5738280 1625520 5738640 1625888 5738752 1625120 5738032 -1624904 5738000 1625120 5738032 1629584 5726976 1621800 5732912 -1629584 5726976 1621776 5732752 1621800 5732912 1625120 5738032 -1624904 5738000 1625120 5738032 1621800 5732912 1621808 5733136 -1625120 5738032 1629584 5726976 1621800 5732912 1621808 5733136 -1625120 5738032 1621808 5733136 1624904 5738000 1624944 5738064 -1625120 5738032 1626248 5738800 1629584 5726976 1621800 5732912 -1624904 5738000 1625120 5738032 1621808 5733136 1621784 5733192 -1629584 5726976 1625488 5738112 1626248 5738800 1629776 5726856 -1626248 5738800 1625488 5738112 1625120 5738032 1625888 5738752 -1626248 5738800 1629584 5726976 1625488 5738112 1625888 5738752 -1625120 5738032 1625208 5738280 1625888 5738752 1625488 5738112 -1625120 5738032 1625088 5738152 1625208 5738280 1625488 5738112 -1625488 5738112 1629584 5726976 1625120 5738032 1625208 5738280 -1625888 5738752 1626248 5738800 1625488 5738112 1625208 5738280 -1625208 5738280 1625520 5738640 1625888 5738752 1625488 5738112 -1625208 5738280 1625520 5738640 1625488 5738112 1625120 5738032 -1625888 5738752 1626248 5738800 1625488 5738112 1625520 5738640 -1625120 5738032 1625488 5738112 1629584 5726976 1621800 5732912 -1629584 5726976 1621776 5732752 1621800 5732912 1625488 5738112 -1625120 5738032 1625208 5738280 1625488 5738112 1621800 5732912 -1625488 5738112 1626248 5738800 1629584 5726976 1621800 5732912 -1625120 5738032 1625488 5738112 1621800 5732912 1621808 5733136 -1625120 5738032 1625208 5738280 1625488 5738112 1621808 5733136 -1625120 5738032 1625488 5738112 1621808 5733136 1624904 5738000 -1625488 5738112 1629584 5726976 1621800 5732912 1621808 5733136 -1625208 5738280 1625320 5738488 1625520 5738640 1625488 5738112 -1625320 5738488 1625384 5738568 1625520 5738640 1625488 5738112 -1625208 5738280 1625320 5738488 1625488 5738112 1625120 5738032 -1625520 5738640 1625888 5738752 1625488 5738112 1625384 5738568 -1625320 5738488 1625384 5738568 1625488 5738112 1625208 5738280 -1629584 5726976 1625656 5738160 1626248 5738800 1629776 5726856 -1626248 5738800 1625656 5738160 1625488 5738112 1625888 5738752 -1626248 5738800 1629584 5726976 1625656 5738160 1625888 5738752 -1625656 5738160 1629584 5726976 1625488 5738112 1625888 5738752 -1625488 5738112 1625520 5738640 1625888 5738752 1625656 5738160 -1625488 5738112 1625520 5738640 1625656 5738160 1629584 5726976 -1625888 5738752 1626248 5738800 1625656 5738160 1625520 5738640 -1625488 5738112 1625656 5738160 1629584 5726976 1621800 5732912 -1629584 5726976 1621776 5732752 1621800 5732912 1625656 5738160 -1625656 5738160 1626248 5738800 1629584 5726976 1621800 5732912 -1625488 5738112 1625520 5738640 1625656 5738160 1621800 5732912 -1625488 5738112 1625384 5738568 1625520 5738640 1625656 5738160 -1625488 5738112 1625320 5738488 1625384 5738568 1625656 5738160 -1625488 5738112 1625320 5738488 1625656 5738160 1621800 5732912 -1625520 5738640 1625888 5738752 1625656 5738160 1625384 5738568 -1625384 5738568 1625520 5738640 1625656 5738160 1625320 5738488 -1625488 5738112 1625656 5738160 1621800 5732912 1621808 5733136 -1625488 5738112 1625320 5738488 1625656 5738160 1621808 5733136 -1625656 5738160 1629584 5726976 1621800 5732912 1621808 5733136 -1625488 5738112 1625656 5738160 1621808 5733136 1625120 5738032 -1625488 5738112 1625208 5738280 1625320 5738488 1625656 5738160 -1629584 5726976 1625760 5738184 1626248 5738800 1629776 5726856 -1625656 5738160 1625760 5738184 1629584 5726976 1621800 5732912 -1629584 5726976 1621776 5732752 1621800 5732912 1625760 5738184 -1625656 5738160 1626248 5738800 1625760 5738184 1621800 5732912 -1626248 5738800 1625760 5738184 1625656 5738160 1625888 5738752 -1625760 5738184 1621800 5732912 1625656 5738160 1625888 5738752 -1625656 5738160 1625520 5738640 1625888 5738752 1625760 5738184 -1625656 5738160 1625520 5738640 1625760 5738184 1621800 5732912 -1625888 5738752 1626248 5738800 1625760 5738184 1625520 5738640 -1625760 5738184 1626248 5738800 1629584 5726976 1621800 5732912 -1626248 5738800 1629584 5726976 1625760 5738184 1625888 5738752 -1625656 5738160 1625384 5738568 1625520 5738640 1625760 5738184 -1625656 5738160 1625760 5738184 1621800 5732912 1621808 5733136 -1625760 5738184 1629584 5726976 1621800 5732912 1621808 5733136 -1625656 5738160 1625520 5738640 1625760 5738184 1621808 5733136 -1625656 5738160 1625760 5738184 1621808 5733136 1625488 5738112 -1625656 5738160 1625520 5738640 1625760 5738184 1625488 5738112 -1625760 5738184 1621800 5732912 1621808 5733136 1625488 5738112 -1621808 5733136 1625120 5738032 1625488 5738112 1625760 5738184 -1629584 5726976 1626040 5738272 1626248 5738800 1629776 5726856 -1625760 5738184 1626040 5738272 1629584 5726976 1621800 5732912 -1629584 5726976 1621776 5732752 1621800 5732912 1626040 5738272 -1625760 5738184 1626040 5738272 1621800 5732912 1621808 5733136 -1625760 5738184 1626248 5738800 1626040 5738272 1621800 5732912 -1626248 5738800 1626040 5738272 1625760 5738184 1625888 5738752 -1625760 5738184 1625520 5738640 1625888 5738752 1626040 5738272 -1626040 5738272 1621800 5732912 1625760 5738184 1625888 5738752 -1629584 5726976 1621800 5732912 1626040 5738272 1629776 5726856 -1626040 5738272 1625888 5738752 1626248 5738800 1629776 5726856 -1626248 5738800 1629688 5742824 1629776 5726856 1626040 5738272 -1629776 5726856 1629584 5726976 1626040 5738272 1629688 5742824 -1629688 5742824 1629784 5742896 1629776 5726856 1626040 5738272 -1626248 5738800 1629688 5742824 1626040 5738272 1625888 5738752 -1626248 5738800 1629640 5742832 1629688 5742824 1626040 5738272 -1626040 5738272 1626136 5738328 1629776 5726856 1629584 5726976 -1626040 5738272 1626136 5738328 1629584 5726976 1621800 5732912 -1626040 5738272 1629688 5742824 1626136 5738328 1629584 5726976 -1629776 5726856 1626136 5738328 1629688 5742824 1629784 5742896 -1626136 5738328 1629688 5742824 1629776 5726856 1629584 5726976 -1629688 5742824 1626136 5738328 1626040 5738272 1626248 5738800 -1626136 5738328 1629584 5726976 1626040 5738272 1626248 5738800 -1626040 5738272 1625888 5738752 1626248 5738800 1626136 5738328 -1626040 5738272 1625760 5738184 1625888 5738752 1626136 5738328 -1626040 5738272 1625888 5738752 1626136 5738328 1629584 5726976 -1629688 5742824 1629776 5726856 1626136 5738328 1626248 5738800 -1626248 5738800 1629688 5742824 1626136 5738328 1625888 5738752 -1629688 5742824 1626136 5738328 1626248 5738800 1629640 5742832 -1629776 5726856 1626296 5738488 1629688 5742824 1629784 5742896 -1626136 5738328 1626296 5738488 1629776 5726856 1629584 5726976 -1626136 5738328 1626296 5738488 1629584 5726976 1626040 5738272 -1626296 5738488 1629688 5742824 1629776 5726856 1629584 5726976 -1626136 5738328 1629688 5742824 1626296 5738488 1629584 5726976 -1629688 5742824 1626296 5738488 1626136 5738328 1626248 5738800 -1629688 5742824 1629776 5726856 1626296 5738488 1626248 5738800 -1626296 5738488 1629584 5726976 1626136 5738328 1626248 5738800 -1626136 5738328 1625888 5738752 1626248 5738800 1626296 5738488 -1626136 5738328 1626040 5738272 1625888 5738752 1626296 5738488 -1626136 5738328 1625888 5738752 1626296 5738488 1629584 5726976 -1626248 5738800 1629688 5742824 1626296 5738488 1625888 5738752 -1629688 5742824 1626296 5738488 1626248 5738800 1629640 5742832 -1629776 5726856 1626424 5738568 1629688 5742824 1629784 5742896 -1626296 5738488 1626424 5738568 1629776 5726856 1629584 5726976 -1626296 5738488 1626424 5738568 1629584 5726976 1626136 5738328 -1629584 5726976 1626040 5738272 1626136 5738328 1626424 5738568 -1626424 5738568 1629776 5726856 1629584 5726976 1626136 5738328 -1626296 5738488 1629688 5742824 1626424 5738568 1626136 5738328 -1629688 5742824 1626424 5738568 1626296 5738488 1626248 5738800 -1626424 5738568 1626136 5738328 1626296 5738488 1626248 5738800 -1626424 5738568 1629688 5742824 1629776 5726856 1629584 5726976 -1629688 5742824 1629776 5726856 1626424 5738568 1626248 5738800 -1626296 5738488 1625888 5738752 1626248 5738800 1626424 5738568 -1629688 5742824 1626424 5738568 1626248 5738800 1629640 5742832 -1626248 5738800 1628168 5742888 1629640 5742832 1626424 5738568 -1628168 5742888 1629312 5742992 1629640 5742832 1626424 5738568 -1626424 5738568 1626296 5738488 1626248 5738800 1628168 5742888 -1629688 5742824 1629776 5726856 1626424 5738568 1629640 5742832 -1626248 5738800 1626080 5741216 1628168 5742888 1626424 5738568 -1626080 5741216 1626120 5741352 1628168 5742888 1626424 5738568 -1628168 5742888 1629640 5742832 1626424 5738568 1626080 5741216 -1626248 5738800 1626056 5741184 1626080 5741216 1626424 5738568 -1626248 5738800 1626080 5741216 1626424 5738568 1626296 5738488 -1629640 5742832 1629688 5742824 1626424 5738568 1628168 5742888 -1629776 5726856 1626496 5738600 1629688 5742824 1629784 5742896 -1629776 5726856 1626496 5738600 1629784 5742896 1630424 5743368 -1626424 5738568 1626496 5738600 1629776 5726856 1629584 5726976 -1626424 5738568 1626496 5738600 1629584 5726976 1626136 5738328 -1629584 5726976 1626040 5738272 1626136 5738328 1626496 5738600 -1626424 5738568 1626496 5738600 1626136 5738328 1626296 5738488 -1626496 5738600 1629584 5726976 1626136 5738328 1626296 5738488 -1626496 5738600 1629776 5726856 1629584 5726976 1626136 5738328 -1626424 5738568 1629688 5742824 1626496 5738600 1626296 5738488 -1629688 5742824 1626496 5738600 1626424 5738568 1629640 5742832 -1626496 5738600 1626296 5738488 1626424 5738568 1629640 5742832 -1629776 5726856 1629584 5726976 1626496 5738600 1629784 5742896 -1626496 5738600 1629640 5742832 1629688 5742824 1629784 5742896 -1626424 5738568 1628168 5742888 1629640 5742832 1626496 5738600 -1626424 5738568 1626080 5741216 1628168 5742888 1626496 5738600 -1626080 5741216 1626120 5741352 1628168 5742888 1626496 5738600 -1628168 5742888 1629312 5742992 1629640 5742832 1626496 5738600 -1626424 5738568 1626080 5741216 1626496 5738600 1626296 5738488 -1629640 5742832 1629688 5742824 1626496 5738600 1628168 5742888 -1626424 5738568 1626248 5738800 1626080 5741216 1626496 5738600 -1626080 5741216 1628168 5742888 1626496 5738600 1626248 5738800 -1626248 5738800 1626056 5741184 1626080 5741216 1626496 5738600 -1626080 5741216 1628168 5742888 1626496 5738600 1626056 5741184 -1626248 5738800 1625984 5741112 1626056 5741184 1626496 5738600 -1626424 5738568 1626296 5738488 1626248 5738800 1626496 5738600 -1626424 5738568 1626248 5738800 1626496 5738600 1626296 5738488 -1626248 5738800 1626056 5741184 1626496 5738600 1626424 5738568 -1628168 5742888 1629640 5742832 1626496 5738600 1626080 5741216 -1629776 5726856 1626688 5738608 1629784 5742896 1630424 5743368 -1629784 5742896 1630312 5743312 1630424 5743368 1626688 5738608 -1629784 5742896 1626688 5738608 1626496 5738600 1629688 5742824 -1629776 5726856 1626688 5738608 1630424 5743368 1629872 5726768 -1626496 5738600 1626688 5738608 1629776 5726856 1629584 5726976 -1626496 5738600 1626688 5738608 1629584 5726976 1626136 5738328 -1629584 5726976 1626040 5738272 1626136 5738328 1626688 5738608 -1626496 5738600 1626688 5738608 1626136 5738328 1626296 5738488 -1626496 5738600 1626688 5738608 1626296 5738488 1626424 5738568 -1626688 5738608 1626136 5738328 1626296 5738488 1626424 5738568 -1626688 5738608 1629584 5726976 1626136 5738328 1626296 5738488 -1626688 5738608 1629776 5726856 1629584 5726976 1626136 5738328 -1629776 5726856 1629584 5726976 1626688 5738608 1630424 5743368 -1626688 5738608 1629688 5742824 1629784 5742896 1630424 5743368 -1626496 5738600 1629640 5742832 1629688 5742824 1626688 5738608 -1629688 5742824 1629784 5742896 1626688 5738608 1629640 5742832 -1626496 5738600 1628168 5742888 1629640 5742832 1626688 5738608 -1628168 5742888 1629312 5742992 1629640 5742832 1626688 5738608 -1629640 5742832 1629688 5742824 1626688 5738608 1628168 5742888 -1626688 5738608 1626424 5738568 1626496 5738600 1628168 5742888 -1626496 5738600 1626080 5741216 1628168 5742888 1626688 5738608 -1626080 5741216 1626120 5741352 1628168 5742888 1626688 5738608 -1626496 5738600 1626056 5741184 1626080 5741216 1626688 5738608 -1626496 5738600 1626248 5738800 1626056 5741184 1626688 5738608 -1626056 5741184 1626080 5741216 1626688 5738608 1626248 5738800 -1626248 5738800 1625984 5741112 1626056 5741184 1626688 5738608 -1626056 5741184 1626080 5741216 1626688 5738608 1625984 5741112 -1626248 5738800 1625784 5741000 1625984 5741112 1626688 5738608 -1626248 5738800 1625984 5741112 1626688 5738608 1626496 5738600 -1628168 5742888 1629640 5742832 1626688 5738608 1626080 5741216 -1626496 5738600 1626248 5738800 1626688 5738608 1626424 5738568 -1626496 5738600 1626424 5738568 1626248 5738800 1626688 5738608 -1626080 5741216 1628168 5742888 1626688 5738608 1626056 5741184 -1630424 5743368 1626944 5738696 1626688 5738608 1629784 5742896 -1630424 5743368 1626944 5738696 1629784 5742896 1630312 5743312 -1629776 5726856 1626944 5738696 1630424 5743368 1629872 5726768 -1626688 5738608 1626944 5738696 1629776 5726856 1629584 5726976 -1626688 5738608 1626944 5738696 1629584 5726976 1626136 5738328 -1629584 5726976 1626040 5738272 1626136 5738328 1626944 5738696 -1629584 5726976 1621800 5732912 1626040 5738272 1626944 5738696 -1626688 5738608 1626944 5738696 1626136 5738328 1626296 5738488 -1626136 5738328 1626688 5738608 1626944 5738696 1626040 5738272 -1626944 5738696 1629776 5726856 1629584 5726976 1626040 5738272 -1626944 5738696 1626136 5738328 1626688 5738608 1629784 5742896 -1626688 5738608 1629688 5742824 1629784 5742896 1626944 5738696 -1629784 5742896 1630424 5743368 1626944 5738696 1629688 5742824 -1626688 5738608 1629640 5742832 1629688 5742824 1626944 5738696 -1626688 5738608 1629640 5742832 1626944 5738696 1626136 5738328 -1629688 5742824 1629784 5742896 1626944 5738696 1629640 5742832 -1626688 5738608 1628168 5742888 1629640 5742832 1626944 5738696 -1628168 5742888 1629312 5742992 1629640 5742832 1626944 5738696 -1629640 5742832 1629688 5742824 1626944 5738696 1628168 5742888 -1626688 5738608 1626080 5741216 1628168 5742888 1626944 5738696 -1626080 5741216 1626120 5741352 1628168 5742888 1626944 5738696 -1626688 5738608 1626080 5741216 1626944 5738696 1626136 5738328 -1628168 5742888 1629640 5742832 1626944 5738696 1626080 5741216 -1626944 5738696 1630424 5743368 1629776 5726856 1629584 5726976 -1630424 5743368 1629776 5726856 1626944 5738696 1629784 5742896 -1626688 5738608 1626056 5741184 1626080 5741216 1626944 5738696 -1626688 5738608 1625984 5741112 1626056 5741184 1626944 5738696 -1626688 5738608 1626248 5738800 1625984 5741112 1626944 5738696 -1625984 5741112 1626056 5741184 1626944 5738696 1626248 5738800 -1626248 5738800 1625784 5741000 1625984 5741112 1626944 5738696 -1626688 5738608 1626496 5738600 1626248 5738800 1626944 5738696 -1626080 5741216 1628168 5742888 1626944 5738696 1626056 5741184 -1626688 5738608 1626248 5738800 1626944 5738696 1626136 5738328 -1626056 5741184 1626080 5741216 1626944 5738696 1625984 5741112 -1629776 5726856 1627032 5738744 1630424 5743368 1629872 5726768 -1627032 5738744 1626944 5738696 1630424 5743368 1629872 5726768 -1630424 5743368 1630632 5743536 1629872 5726768 1627032 5738744 -1626944 5738696 1627032 5738744 1629776 5726856 1629584 5726976 -1626944 5738696 1627032 5738744 1629584 5726976 1626040 5738272 -1626944 5738696 1630424 5743368 1627032 5738744 1629584 5726976 -1630424 5743368 1627032 5738744 1626944 5738696 1629784 5742896 -1630424 5743368 1629872 5726768 1627032 5738744 1629784 5742896 -1626944 5738696 1629688 5742824 1629784 5742896 1627032 5738744 -1630424 5743368 1627032 5738744 1629784 5742896 1630312 5743312 -1626944 5738696 1629640 5742832 1629688 5742824 1627032 5738744 -1629688 5742824 1629784 5742896 1627032 5738744 1629640 5742832 -1626944 5738696 1628168 5742888 1629640 5742832 1627032 5738744 -1628168 5742888 1629312 5742992 1629640 5742832 1627032 5738744 -1629640 5742832 1629688 5742824 1627032 5738744 1628168 5742888 -1626944 5738696 1626080 5741216 1628168 5742888 1627032 5738744 -1626080 5741216 1626120 5741352 1628168 5742888 1627032 5738744 -1628168 5742888 1629640 5742832 1627032 5738744 1626080 5741216 -1626944 5738696 1626056 5741184 1626080 5741216 1627032 5738744 -1626080 5741216 1628168 5742888 1627032 5738744 1626056 5741184 -1627032 5738744 1629584 5726976 1626944 5738696 1626056 5741184 -1629784 5742896 1630424 5743368 1627032 5738744 1629688 5742824 -1629776 5726856 1629584 5726976 1627032 5738744 1629872 5726768 -1626944 5738696 1625984 5741112 1626056 5741184 1627032 5738744 -1626944 5738696 1626248 5738800 1625984 5741112 1627032 5738744 -1626248 5738800 1625784 5741000 1625984 5741112 1627032 5738744 -1626944 5738696 1626688 5738608 1626248 5738800 1627032 5738744 -1626056 5741184 1626080 5741216 1627032 5738744 1625984 5741112 -1626944 5738696 1626248 5738800 1627032 5738744 1629584 5726976 -1625984 5741112 1626056 5741184 1627032 5738744 1626248 5738800 -1630424 5743368 1627128 5738848 1627032 5738744 1629784 5742896 -1630424 5743368 1629872 5726768 1627128 5738848 1629784 5742896 -1629872 5726768 1627128 5738848 1630424 5743368 1630632 5743536 -1630424 5743368 1627128 5738848 1629784 5742896 1630312 5743312 -1627032 5738744 1627128 5738848 1629872 5726768 1629776 5726856 -1627128 5738848 1630424 5743368 1629872 5726768 1629776 5726856 -1627032 5738744 1629688 5742824 1629784 5742896 1627128 5738848 -1629784 5742896 1630424 5743368 1627128 5738848 1629688 5742824 -1627032 5738744 1629640 5742832 1629688 5742824 1627128 5738848 -1627032 5738744 1628168 5742888 1629640 5742832 1627128 5738848 -1629640 5742832 1629688 5742824 1627128 5738848 1628168 5742888 -1628168 5742888 1629312 5742992 1629640 5742832 1627128 5738848 -1627032 5738744 1626080 5741216 1628168 5742888 1627128 5738848 -1626080 5741216 1626120 5741352 1628168 5742888 1627128 5738848 -1626120 5741352 1628128 5742888 1628168 5742888 1627128 5738848 -1626080 5741216 1626120 5741352 1627128 5738848 1627032 5738744 -1628168 5742888 1629640 5742832 1627128 5738848 1626120 5741352 -1627032 5738744 1626056 5741184 1626080 5741216 1627128 5738848 -1626080 5741216 1626120 5741352 1627128 5738848 1626056 5741184 -1627032 5738744 1625984 5741112 1626056 5741184 1627128 5738848 -1626056 5741184 1626080 5741216 1627128 5738848 1625984 5741112 -1629688 5742824 1629784 5742896 1627128 5738848 1629640 5742832 -1627032 5738744 1627128 5738848 1629776 5726856 1629584 5726976 -1627128 5738848 1629872 5726768 1629776 5726856 1629584 5726976 -1627032 5738744 1627128 5738848 1629584 5726976 1626944 5738696 -1627128 5738848 1629584 5726976 1627032 5738744 1625984 5741112 -1627032 5738744 1626248 5738800 1625984 5741112 1627128 5738848 -1627032 5738744 1626944 5738696 1626248 5738800 1627128 5738848 -1626248 5738800 1625784 5741000 1625984 5741112 1627128 5738848 -1626944 5738696 1626688 5738608 1626248 5738800 1627128 5738848 -1625984 5741112 1626056 5741184 1627128 5738848 1626248 5738800 -1627032 5738744 1626944 5738696 1627128 5738848 1629584 5726976 -1626248 5738800 1625984 5741112 1627128 5738848 1626944 5738696 -1626120 5741352 1627136 5738888 1627128 5738848 1626080 5741216 -1628168 5742888 1627136 5738888 1626120 5741352 1628128 5742888 -1627136 5738888 1628168 5742888 1627128 5738848 1626080 5741216 -1627128 5738848 1626056 5741184 1626080 5741216 1627136 5738888 -1626080 5741216 1626120 5741352 1627136 5738888 1626056 5741184 -1627128 5738848 1626056 5741184 1627136 5738888 1628168 5742888 -1626120 5741352 1628168 5742888 1627136 5738888 1626080 5741216 -1627128 5738848 1627136 5738888 1628168 5742888 1629640 5742832 -1627128 5738848 1626056 5741184 1627136 5738888 1629640 5742832 -1627136 5738888 1626120 5741352 1628168 5742888 1629640 5742832 -1627128 5738848 1627136 5738888 1629640 5742832 1629688 5742824 -1627128 5738848 1626056 5741184 1627136 5738888 1629688 5742824 -1628168 5742888 1629312 5742992 1629640 5742832 1627136 5738888 -1627136 5738888 1628168 5742888 1629640 5742832 1629688 5742824 -1627128 5738848 1625984 5741112 1626056 5741184 1627136 5738888 -1627128 5738848 1625984 5741112 1627136 5738888 1629688 5742824 -1626056 5741184 1626080 5741216 1627136 5738888 1625984 5741112 -1627128 5738848 1626248 5738800 1625984 5741112 1627136 5738888 -1627128 5738848 1626248 5738800 1627136 5738888 1629688 5742824 -1626248 5738800 1625784 5741000 1625984 5741112 1627136 5738888 -1625984 5741112 1626056 5741184 1627136 5738888 1626248 5738800 -1627128 5738848 1627136 5738888 1629688 5742824 1629784 5742896 -1627128 5738848 1626944 5738696 1626248 5738800 1627136 5738888 -1627128 5738848 1626944 5738696 1627136 5738888 1629688 5742824 -1627128 5738848 1627032 5738744 1626944 5738696 1627136 5738888 -1627128 5738848 1627032 5738744 1627136 5738888 1629688 5742824 -1626944 5738696 1626688 5738608 1626248 5738800 1627136 5738888 -1626248 5738800 1625984 5741112 1627136 5738888 1626944 5738696 -1626944 5738696 1626248 5738800 1627136 5738888 1627032 5738744 -1627136 5738888 1627096 5738976 1626080 5741216 1626120 5741352 -1626056 5741184 1627096 5738976 1627136 5738888 1625984 5741112 -1626056 5741184 1626080 5741216 1627096 5738976 1625984 5741112 -1627136 5738888 1625984 5741112 1627096 5738976 1626120 5741352 -1627136 5738888 1627096 5738976 1626120 5741352 1628168 5742888 -1627096 5738976 1626080 5741216 1626120 5741352 1628168 5742888 -1626120 5741352 1628128 5742888 1628168 5742888 1627096 5738976 -1626120 5741352 1628128 5742888 1627096 5738976 1626080 5741216 -1627136 5738888 1627096 5738976 1628168 5742888 1629640 5742832 -1626120 5741352 1628056 5742960 1628128 5742888 1627096 5738976 -1628168 5742888 1629312 5742992 1629640 5742832 1627096 5738976 -1627136 5738888 1625984 5741112 1627096 5738976 1629640 5742832 -1628168 5742888 1629640 5742832 1627096 5738976 1628128 5742888 -1627096 5738976 1626056 5741184 1626080 5741216 1626120 5741352 -1627136 5738888 1627096 5738976 1629640 5742832 1629688 5742824 -1627096 5738976 1628168 5742888 1629640 5742832 1629688 5742824 -1627136 5738888 1627096 5738976 1629688 5742824 1627128 5738848 -1627136 5738888 1625984 5741112 1627096 5738976 1629688 5742824 -1627136 5738888 1626248 5738800 1625984 5741112 1627096 5738976 -1626248 5738800 1625784 5741000 1625984 5741112 1627096 5738976 -1625984 5741112 1626056 5741184 1627096 5738976 1625784 5741000 -1626248 5738800 1625656 5740944 1625784 5741000 1627096 5738976 -1627136 5738888 1626944 5738696 1626248 5738800 1627096 5738976 -1626944 5738696 1626688 5738608 1626248 5738800 1627096 5738976 -1626688 5738608 1626496 5738600 1626248 5738800 1627096 5738976 -1626944 5738696 1626688 5738608 1627096 5738976 1627136 5738888 -1627136 5738888 1626944 5738696 1627096 5738976 1629688 5742824 -1626248 5738800 1625784 5741000 1627096 5738976 1626688 5738608 -1627136 5738888 1627032 5738744 1626944 5738696 1627096 5738976 -1627136 5738888 1627128 5738848 1627032 5738744 1627096 5738976 -1626944 5738696 1626688 5738608 1627096 5738976 1627032 5738744 -1627136 5738888 1627128 5738848 1627096 5738976 1629688 5742824 -1627032 5738744 1626944 5738696 1627096 5738976 1627128 5738848 -1627096 5738976 1627024 5739072 1625784 5741000 1625984 5741112 -1627096 5738976 1627024 5739072 1625984 5741112 1626056 5741184 -1627024 5739072 1625784 5741000 1625984 5741112 1626056 5741184 -1625784 5741000 1627024 5739072 1626248 5738800 1625656 5740944 -1627096 5738976 1626248 5738800 1627024 5739072 1626056 5741184 -1627096 5738976 1627024 5739072 1626056 5741184 1626080 5741216 -1627024 5739072 1625984 5741112 1626056 5741184 1626080 5741216 -1627096 5738976 1626248 5738800 1627024 5739072 1626080 5741216 -1627024 5739072 1626248 5738800 1625784 5741000 1625984 5741112 -1627096 5738976 1627024 5739072 1626080 5741216 1626120 5741352 -1627096 5738976 1627024 5739072 1626120 5741352 1628128 5742888 -1627096 5738976 1627024 5739072 1628128 5742888 1628168 5742888 -1627024 5739072 1626120 5741352 1628128 5742888 1628168 5742888 -1626120 5741352 1628056 5742960 1628128 5742888 1627024 5739072 -1627096 5738976 1626248 5738800 1627024 5739072 1628168 5742888 -1627024 5739072 1626056 5741184 1626080 5741216 1626120 5741352 -1627096 5738976 1627024 5739072 1628168 5742888 1629640 5742832 -1627024 5739072 1628128 5742888 1628168 5742888 1629640 5742832 -1627096 5738976 1627024 5739072 1629640 5742832 1629688 5742824 -1628168 5742888 1629312 5742992 1629640 5742832 1627024 5739072 -1627096 5738976 1626248 5738800 1627024 5739072 1629640 5742832 -1627024 5739072 1626080 5741216 1626120 5741352 1628128 5742888 -1626248 5738800 1627024 5739072 1627096 5738976 1626688 5738608 -1626248 5738800 1627024 5739072 1626688 5738608 1626496 5738600 -1627096 5738976 1626944 5738696 1626688 5738608 1627024 5739072 -1626248 5738800 1625784 5741000 1627024 5739072 1626688 5738608 -1627096 5738976 1627032 5738744 1626944 5738696 1627024 5739072 -1626944 5738696 1626688 5738608 1627024 5739072 1627032 5738744 -1627024 5739072 1629640 5742832 1627096 5738976 1627032 5738744 -1626688 5738608 1626248 5738800 1627024 5739072 1626944 5738696 -1627096 5738976 1627128 5738848 1627032 5738744 1627024 5739072 -1625784 5741000 1626992 5739096 1626248 5738800 1625656 5740944 -1626248 5738800 1626992 5739096 1627024 5739072 1626688 5738608 -1626248 5738800 1626992 5739096 1626688 5738608 1626496 5738600 -1626992 5739096 1625784 5741000 1627024 5739072 1626688 5738608 -1626248 5738800 1625784 5741000 1626992 5739096 1626688 5738608 -1627024 5739072 1626992 5739096 1625784 5741000 1625984 5741112 -1627024 5739072 1626992 5739096 1625984 5741112 1626056 5741184 -1627024 5739072 1626992 5739096 1626056 5741184 1626080 5741216 -1626992 5739096 1625984 5741112 1626056 5741184 1626080 5741216 -1627024 5739072 1626688 5738608 1626992 5739096 1626080 5741216 -1626992 5739096 1626248 5738800 1625784 5741000 1625984 5741112 -1627024 5739072 1626992 5739096 1626080 5741216 1626120 5741352 -1626992 5739096 1626056 5741184 1626080 5741216 1626120 5741352 -1627024 5739072 1626688 5738608 1626992 5739096 1626120 5741352 -1626992 5739096 1625784 5741000 1625984 5741112 1626056 5741184 -1627024 5739072 1626992 5739096 1626120 5741352 1628128 5742888 -1627024 5739072 1626992 5739096 1628128 5742888 1628168 5742888 -1627024 5739072 1626992 5739096 1628168 5742888 1629640 5742832 -1626120 5741352 1628056 5742960 1628128 5742888 1626992 5739096 -1627024 5739072 1626688 5738608 1626992 5739096 1628168 5742888 -1626992 5739096 1626080 5741216 1626120 5741352 1628128 5742888 -1626992 5739096 1626120 5741352 1628128 5742888 1628168 5742888 -1627024 5739072 1626944 5738696 1626688 5738608 1626992 5739096 -1627024 5739072 1627032 5738744 1626944 5738696 1626992 5739096 -1627024 5739072 1626944 5738696 1626992 5739096 1628168 5742888 -1626688 5738608 1626248 5738800 1626992 5739096 1626944 5738696 -1625784 5741000 1626968 5739088 1626248 5738800 1625656 5740944 -1626992 5739096 1626968 5739088 1625784 5741000 1625984 5741112 -1626992 5739096 1626248 5738800 1626968 5739088 1625984 5741112 -1626248 5738800 1626968 5739088 1626992 5739096 1626688 5738608 -1626248 5738800 1626968 5739088 1626688 5738608 1626496 5738600 -1626248 5738800 1625784 5741000 1626968 5739088 1626688 5738608 -1626992 5739096 1626944 5738696 1626688 5738608 1626968 5739088 -1626968 5739088 1625984 5741112 1626992 5739096 1626944 5738696 -1626688 5738608 1626248 5738800 1626968 5739088 1626944 5738696 -1626968 5739088 1626248 5738800 1625784 5741000 1625984 5741112 -1626992 5739096 1626968 5739088 1625984 5741112 1626056 5741184 -1626992 5739096 1627024 5739072 1626944 5738696 1626968 5739088 -1627024 5739072 1627032 5738744 1626944 5738696 1626968 5739088 -1626944 5738696 1626688 5738608 1626968 5739088 1627032 5738744 -1626992 5739096 1627024 5739072 1626968 5739088 1625984 5741112 -1627024 5739072 1627096 5738976 1627032 5738744 1626968 5739088 -1627032 5738744 1626944 5738696 1626968 5739088 1627096 5738976 -1627024 5739072 1627096 5738976 1626968 5739088 1626992 5739096 -1627096 5738976 1627128 5738848 1627032 5738744 1626968 5739088 -1626248 5738800 1626856 5739080 1626968 5739088 1626688 5738608 -1626248 5738800 1626856 5739080 1626688 5738608 1626496 5738600 -1626248 5738800 1625784 5741000 1626856 5739080 1626496 5738600 -1626856 5739080 1625784 5741000 1626968 5739088 1626688 5738608 -1626856 5739080 1626968 5739088 1626688 5738608 1626496 5738600 -1625784 5741000 1626856 5739080 1626248 5738800 1625656 5740944 -1626856 5739080 1626496 5738600 1626248 5738800 1625656 5740944 -1625784 5741000 1626968 5739088 1626856 5739080 1625656 5740944 -1626968 5739088 1626944 5738696 1626688 5738608 1626856 5739080 -1626968 5739088 1626944 5738696 1626856 5739080 1625784 5741000 -1626688 5738608 1626496 5738600 1626856 5739080 1626944 5738696 -1626968 5739088 1627032 5738744 1626944 5738696 1626856 5739080 -1626968 5739088 1627032 5738744 1626856 5739080 1625784 5741000 -1626968 5739088 1627096 5738976 1627032 5738744 1626856 5739080 -1626968 5739088 1627096 5738976 1626856 5739080 1625784 5741000 -1627032 5738744 1626944 5738696 1626856 5739080 1627096 5738976 -1626944 5738696 1626688 5738608 1626856 5739080 1627032 5738744 -1626968 5739088 1626856 5739080 1625784 5741000 1625984 5741112 -1626968 5739088 1627096 5738976 1626856 5739080 1625984 5741112 -1626856 5739080 1625656 5740944 1625784 5741000 1625984 5741112 -1626968 5739088 1626856 5739080 1625984 5741112 1626992 5739096 -1626968 5739088 1627096 5738976 1626856 5739080 1626992 5739096 -1626856 5739080 1625784 5741000 1625984 5741112 1626992 5739096 -1626968 5739088 1627024 5739072 1627096 5738976 1626856 5739080 -1625984 5741112 1626056 5741184 1626992 5739096 1626856 5739080 -1626248 5738800 1625888 5738752 1625656 5740944 1626856 5739080 -1626248 5738800 1626856 5739080 1626496 5738600 1626424 5738568 -1627096 5738976 1627128 5738848 1627032 5738744 1626856 5739080 -1626248 5738800 1626624 5738992 1626856 5739080 1626496 5738600 -1626856 5739080 1626688 5738608 1626496 5738600 1626624 5738992 -1626624 5738992 1625656 5740944 1626856 5739080 1626688 5738608 -1626496 5738600 1626248 5738800 1626624 5738992 1626688 5738608 -1626856 5739080 1626944 5738696 1626688 5738608 1626624 5738992 -1626688 5738608 1626496 5738600 1626624 5738992 1626944 5738696 -1626856 5739080 1626944 5738696 1626624 5738992 1625656 5740944 -1626248 5738800 1625656 5740944 1626624 5738992 1626496 5738600 -1626856 5739080 1626624 5738992 1625656 5740944 1625784 5741000 -1626856 5739080 1626944 5738696 1626624 5738992 1625784 5741000 -1626624 5738992 1626248 5738800 1625656 5740944 1625784 5741000 -1626856 5739080 1626624 5738992 1625784 5741000 1625984 5741112 -1626856 5739080 1627032 5738744 1626944 5738696 1626624 5738992 -1625656 5740944 1626624 5738992 1626248 5738800 1625888 5738752 -1626248 5738800 1626624 5738992 1626496 5738600 1626424 5738568 -1626496 5738600 1626408 5738864 1626624 5738992 1626688 5738608 -1626624 5738992 1626944 5738696 1626688 5738608 1626408 5738864 -1626496 5738600 1626248 5738800 1626408 5738864 1626688 5738608 -1626408 5738864 1626248 5738800 1626624 5738992 1626688 5738608 -1626624 5738992 1626408 5738864 1626248 5738800 1625656 5740944 -1626624 5738992 1626408 5738864 1625656 5740944 1625784 5741000 -1626624 5738992 1626688 5738608 1626408 5738864 1625656 5740944 -1626408 5738864 1626496 5738600 1626248 5738800 1625656 5740944 -1626248 5738800 1625888 5738752 1625656 5740944 1626408 5738864 -1625656 5740944 1626624 5738992 1626408 5738864 1625888 5738752 -1626248 5738800 1625888 5738752 1626408 5738864 1626496 5738600 -1626248 5738800 1626408 5738864 1626496 5738600 1626424 5738568 -1626408 5738864 1626688 5738608 1626496 5738600 1626424 5738568 -1626248 5738800 1625888 5738752 1626408 5738864 1626424 5738568 -1626248 5738800 1626408 5738864 1626424 5738568 1626296 5738488 -1625888 5738752 1625336 5740928 1625656 5740944 1626408 5738864 -1627136 5738888 1627480 5739472 1629688 5742824 1627128 5738848 -1627480 5739472 1627096 5738976 1629688 5742824 1627128 5738848 -1627136 5738888 1627096 5738976 1627480 5739472 1627128 5738848 -1629688 5742824 1627480 5739472 1627096 5738976 1629640 5742832 -1627096 5738976 1627024 5739072 1629640 5742832 1627480 5739472 -1629688 5742824 1627128 5738848 1627480 5739472 1629640 5742832 -1627480 5739472 1627136 5738888 1627096 5738976 1627024 5739072 -1627024 5739072 1628168 5742888 1629640 5742832 1627480 5739472 -1627024 5739072 1626992 5739096 1628168 5742888 1627480 5739472 -1626992 5739096 1628128 5742888 1628168 5742888 1627480 5739472 -1626992 5739096 1628128 5742888 1627480 5739472 1627024 5739072 -1627024 5739072 1626992 5739096 1627480 5739472 1627096 5738976 -1628168 5742888 1629312 5742992 1629640 5742832 1627480 5739472 -1628168 5742888 1629640 5742832 1627480 5739472 1628128 5742888 -1626992 5739096 1626120 5741352 1628128 5742888 1627480 5739472 -1628128 5742888 1628168 5742888 1627480 5739472 1626120 5741352 -1626992 5739096 1626120 5741352 1627480 5739472 1627024 5739072 -1626120 5741352 1628056 5742960 1628128 5742888 1627480 5739472 -1626992 5739096 1626080 5741216 1626120 5741352 1627480 5739472 -1626992 5739096 1626080 5741216 1627480 5739472 1627024 5739072 -1626992 5739096 1626056 5741184 1626080 5741216 1627480 5739472 -1626992 5739096 1626056 5741184 1627480 5739472 1627024 5739072 -1626992 5739096 1625984 5741112 1626056 5741184 1627480 5739472 -1626992 5739096 1625984 5741112 1627480 5739472 1627024 5739072 -1626056 5741184 1626080 5741216 1627480 5739472 1625984 5741112 -1626080 5741216 1626120 5741352 1627480 5739472 1626056 5741184 -1626992 5739096 1626856 5739080 1625984 5741112 1627480 5739472 -1626992 5739096 1626856 5739080 1627480 5739472 1627024 5739072 -1625984 5741112 1626056 5741184 1627480 5739472 1626856 5739080 -1626992 5739096 1626968 5739088 1626856 5739080 1627480 5739472 -1626856 5739080 1625784 5741000 1625984 5741112 1627480 5739472 -1626120 5741352 1628128 5742888 1627480 5739472 1626080 5741216 -1629640 5742832 1629688 5742824 1627480 5739472 1628168 5742888 -1629688 5742824 1629784 5742896 1627128 5738848 1627480 5739472 -1629784 5742896 1630424 5743368 1627128 5738848 1627480 5739472 -1630424 5743368 1629872 5726768 1627128 5738848 1627480 5739472 -1630424 5743368 1629872 5726768 1627480 5739472 1629784 5742896 -1629872 5726768 1629776 5726856 1627128 5738848 1627480 5739472 -1629872 5726768 1629776 5726856 1627480 5739472 1630424 5743368 -1627128 5738848 1627136 5738888 1627480 5739472 1629776 5726856 -1630424 5743368 1630632 5743536 1629872 5726768 1627480 5739472 -1630632 5743536 1630864 5743768 1629872 5726768 1627480 5739472 -1630424 5743368 1630632 5743536 1627480 5739472 1629784 5742896 -1629872 5726768 1629776 5726856 1627480 5739472 1630632 5743536 -1629784 5742896 1630312 5743312 1630424 5743368 1627480 5739472 -1629688 5742824 1629784 5742896 1627480 5739472 1629640 5742832 -1629776 5726856 1629584 5726976 1627128 5738848 1627480 5739472 -1629784 5742896 1630424 5743368 1627480 5739472 1629688 5742824 -1627480 5739472 1627424 5739392 1627096 5738976 1627024 5739072 -1627480 5739472 1627424 5739392 1627024 5739072 1626992 5739096 -1627480 5739472 1627424 5739392 1626992 5739096 1626856 5739080 -1627424 5739392 1627024 5739072 1626992 5739096 1626856 5739080 -1627424 5739392 1627096 5738976 1627024 5739072 1626992 5739096 -1627480 5739472 1627136 5738888 1627424 5739392 1626856 5739080 -1627136 5738888 1627424 5739392 1627480 5739472 1627128 5738848 -1627480 5739472 1629776 5726856 1627128 5738848 1627424 5739392 -1627424 5739392 1626856 5739080 1627480 5739472 1627128 5738848 -1626992 5739096 1626968 5739088 1626856 5739080 1627424 5739392 -1627480 5739472 1627424 5739392 1626856 5739080 1625984 5741112 -1627424 5739392 1627136 5738888 1627096 5738976 1627024 5739072 -1627136 5738888 1627096 5738976 1627424 5739392 1627128 5738848 -1629776 5726856 1627408 5739280 1627480 5739472 1629872 5726768 -1627480 5739472 1630632 5743536 1629872 5726768 1627408 5739280 -1630632 5743536 1630864 5743768 1629872 5726768 1627408 5739280 -1629872 5726768 1629776 5726856 1627408 5739280 1630632 5743536 -1627480 5739472 1627408 5739280 1627128 5738848 1627424 5739392 -1627480 5739472 1630424 5743368 1630632 5743536 1627408 5739280 -1627480 5739472 1629784 5742896 1630424 5743368 1627408 5739280 -1630632 5743536 1629872 5726768 1627408 5739280 1630424 5743368 -1627128 5738848 1627136 5738888 1627424 5739392 1627408 5739280 -1627424 5739392 1627480 5739472 1627408 5739280 1627136 5738888 -1627128 5738848 1627408 5739280 1629776 5726856 1629584 5726976 -1627408 5739280 1627424 5739392 1627480 5739472 1630424 5743368 -1627408 5739280 1629776 5726856 1627128 5738848 1627136 5738888 -1627136 5738888 1627096 5738976 1627424 5739392 1627408 5739280 -1627424 5739392 1627480 5739472 1627408 5739280 1627096 5738976 -1627136 5738888 1627096 5738976 1627408 5739280 1627128 5738848 -1627096 5738976 1627024 5739072 1627424 5739392 1627408 5739280 -1627424 5739392 1627480 5739472 1627408 5739280 1627024 5739072 -1627024 5739072 1626992 5739096 1627424 5739392 1627408 5739280 -1626992 5739096 1626856 5739080 1627424 5739392 1627408 5739280 -1627424 5739392 1627480 5739472 1627408 5739280 1626992 5739096 -1627024 5739072 1626992 5739096 1627408 5739280 1627096 5738976 -1627096 5738976 1627024 5739072 1627408 5739280 1627136 5738888 -1629776 5726856 1627128 5738848 1627408 5739280 1629872 5726768 -1629872 5726768 1627424 5739216 1630632 5743536 1630864 5743768 -1627408 5739280 1627424 5739216 1629872 5726768 1629776 5726856 -1630632 5743536 1627424 5739216 1627408 5739280 1630424 5743368 -1627408 5739280 1627480 5739472 1630424 5743368 1627424 5739216 -1627480 5739472 1629784 5742896 1630424 5743368 1627424 5739216 -1630424 5743368 1630632 5743536 1627424 5739216 1629784 5742896 -1627480 5739472 1629784 5742896 1627424 5739216 1627408 5739280 -1629784 5742896 1630312 5743312 1630424 5743368 1627424 5739216 -1627408 5739280 1627424 5739392 1627480 5739472 1627424 5739216 -1630632 5743536 1629872 5726768 1627424 5739216 1630424 5743368 -1627424 5739216 1630632 5743536 1629872 5726768 1629776 5726856 -1627408 5739280 1627424 5739216 1629776 5726856 1627128 5738848 -1627424 5739216 1629872 5726768 1629776 5726856 1627128 5738848 -1629776 5726856 1629584 5726976 1627128 5738848 1627424 5739216 -1629776 5726856 1629584 5726976 1627424 5739216 1629872 5726768 -1627408 5739280 1627424 5739216 1627128 5738848 1627136 5738888 -1627408 5739280 1627424 5739216 1627136 5738888 1627096 5738976 -1627424 5739216 1627128 5738848 1627136 5738888 1627096 5738976 -1627408 5739280 1627424 5739216 1627096 5738976 1627024 5739072 -1627424 5739216 1627136 5738888 1627096 5738976 1627024 5739072 -1627408 5739280 1627424 5739216 1627024 5739072 1626992 5739096 -1627128 5738848 1627136 5738888 1627424 5739216 1629584 5726976 -1627408 5739280 1627480 5739472 1627424 5739216 1627024 5739072 -1627480 5739472 1629688 5742824 1629784 5742896 1627424 5739216 -1629784 5742896 1630424 5743368 1627424 5739216 1629688 5742824 -1627480 5739472 1629688 5742824 1627424 5739216 1627408 5739280 -1627480 5739472 1629640 5742832 1629688 5742824 1627424 5739216 -1629584 5726976 1627032 5738744 1627128 5738848 1627424 5739216 -1629872 5726768 1627464 5739192 1630632 5743536 1630864 5743768 -1630632 5743536 1627464 5739192 1627424 5739216 1630424 5743368 -1627424 5739216 1629784 5742896 1630424 5743368 1627464 5739192 -1627424 5739216 1629688 5742824 1629784 5742896 1627464 5739192 -1629784 5742896 1630424 5743368 1627464 5739192 1629688 5742824 -1629784 5742896 1630312 5743312 1630424 5743368 1627464 5739192 -1630632 5743536 1629872 5726768 1627464 5739192 1630424 5743368 -1630424 5743368 1630632 5743536 1627464 5739192 1629784 5742896 -1627464 5739192 1629872 5726768 1627424 5739216 1629688 5742824 -1627424 5739216 1627464 5739192 1629872 5726768 1629776 5726856 -1627424 5739216 1627464 5739192 1629776 5726856 1629584 5726976 -1627424 5739216 1627464 5739192 1629584 5726976 1627128 5738848 -1627464 5739192 1629776 5726856 1629584 5726976 1627128 5738848 -1627424 5739216 1629688 5742824 1627464 5739192 1627128 5738848 -1627464 5739192 1630632 5743536 1629872 5726768 1629776 5726856 -1627464 5739192 1629872 5726768 1629776 5726856 1629584 5726976 -1627424 5739216 1627464 5739192 1627128 5738848 1627136 5738888 -1627464 5739192 1629584 5726976 1627128 5738848 1627136 5738888 -1627424 5739216 1629688 5742824 1627464 5739192 1627136 5738888 -1627424 5739216 1627464 5739192 1627136 5738888 1627096 5738976 -1627424 5739216 1627480 5739472 1629688 5742824 1627464 5739192 -1629688 5742824 1629784 5742896 1627464 5739192 1627480 5739472 -1627424 5739216 1627408 5739280 1627480 5739472 1627464 5739192 -1627480 5739472 1629640 5742832 1629688 5742824 1627464 5739192 -1627408 5739280 1627424 5739392 1627480 5739472 1627464 5739192 -1627408 5739280 1627424 5739392 1627464 5739192 1627424 5739216 -1627424 5739216 1627408 5739280 1627464 5739192 1627136 5738888 -1627480 5739472 1629688 5742824 1627464 5739192 1627424 5739392 -1629584 5726976 1627032 5738744 1627128 5738848 1627464 5739192 -1629872 5726768 1627520 5739192 1630632 5743536 1630864 5743768 -1630632 5743536 1627520 5739192 1627464 5739192 1630424 5743368 -1627520 5739192 1629872 5726768 1627464 5739192 1630424 5743368 -1630632 5743536 1629872 5726768 1627520 5739192 1630424 5743368 -1627464 5739192 1629784 5742896 1630424 5743368 1627520 5739192 -1627464 5739192 1629688 5742824 1629784 5742896 1627520 5739192 -1627464 5739192 1627480 5739472 1629688 5742824 1627520 5739192 -1629688 5742824 1629784 5742896 1627520 5739192 1627480 5739472 -1629784 5742896 1630312 5743312 1630424 5743368 1627520 5739192 -1627480 5739472 1629640 5742832 1629688 5742824 1627520 5739192 -1627464 5739192 1627480 5739472 1627520 5739192 1629872 5726768 -1630424 5743368 1630632 5743536 1627520 5739192 1629784 5742896 -1629784 5742896 1630424 5743368 1627520 5739192 1629688 5742824 -1627464 5739192 1627520 5739192 1629872 5726768 1629776 5726856 -1627464 5739192 1627480 5739472 1627520 5739192 1629776 5726856 -1627520 5739192 1630632 5743536 1629872 5726768 1629776 5726856 -1627464 5739192 1627520 5739192 1629776 5726856 1629584 5726976 -1627464 5739192 1627520 5739192 1629584 5726976 1627128 5738848 -1627464 5739192 1627480 5739472 1627520 5739192 1627128 5738848 -1627464 5739192 1627520 5739192 1627128 5738848 1627136 5738888 -1627520 5739192 1629584 5726976 1627128 5738848 1627136 5738888 -1627464 5739192 1627480 5739472 1627520 5739192 1627136 5738888 -1627520 5739192 1629872 5726768 1629776 5726856 1629584 5726976 -1627520 5739192 1629776 5726856 1629584 5726976 1627128 5738848 -1627464 5739192 1627520 5739192 1627136 5738888 1627424 5739216 -1627464 5739192 1627424 5739392 1627480 5739472 1627520 5739192 -1627480 5739472 1629688 5742824 1627520 5739192 1627424 5739392 -1627464 5739192 1627424 5739392 1627520 5739192 1627136 5738888 -1627464 5739192 1627408 5739280 1627424 5739392 1627520 5739192 -1627464 5739192 1627424 5739216 1627408 5739280 1627520 5739192 -1627464 5739192 1627408 5739280 1627520 5739192 1627136 5738888 -1627424 5739392 1627480 5739472 1627520 5739192 1627408 5739280 -1629584 5726976 1627032 5738744 1627128 5738848 1627520 5739192 -1627128 5738848 1627136 5738888 1627520 5739192 1627032 5738744 -1629584 5726976 1627032 5738744 1627520 5739192 1629776 5726856 -1629584 5726976 1626944 5738696 1627032 5738744 1627520 5739192 -1629872 5726768 1627584 5739200 1630632 5743536 1630864 5743768 -1627520 5739192 1627584 5739200 1629872 5726768 1629776 5726856 -1627520 5739192 1630632 5743536 1627584 5739200 1629776 5726856 -1630632 5743536 1627584 5739200 1627520 5739192 1630424 5743368 -1627520 5739192 1629784 5742896 1630424 5743368 1627584 5739200 -1629784 5742896 1630312 5743312 1630424 5743368 1627584 5739200 -1627584 5739200 1629776 5726856 1627520 5739192 1629784 5742896 -1630424 5743368 1630632 5743536 1627584 5739200 1629784 5742896 -1627520 5739192 1629688 5742824 1629784 5742896 1627584 5739200 -1627520 5739192 1627480 5739472 1629688 5742824 1627584 5739200 -1627520 5739192 1627424 5739392 1627480 5739472 1627584 5739200 -1627480 5739472 1629688 5742824 1627584 5739200 1627424 5739392 -1627480 5739472 1629640 5742832 1629688 5742824 1627584 5739200 -1629784 5742896 1630424 5743368 1627584 5739200 1629688 5742824 -1627520 5739192 1627424 5739392 1627584 5739200 1629776 5726856 -1629688 5742824 1629784 5742896 1627584 5739200 1627480 5739472 -1627520 5739192 1627584 5739200 1629776 5726856 1629584 5726976 -1627584 5739200 1629872 5726768 1629776 5726856 1629584 5726976 -1627520 5739192 1627424 5739392 1627584 5739200 1629584 5726976 -1627520 5739192 1627584 5739200 1629584 5726976 1627032 5738744 -1627520 5739192 1627424 5739392 1627584 5739200 1627032 5738744 -1627584 5739200 1629776 5726856 1629584 5726976 1627032 5738744 -1627584 5739200 1630632 5743536 1629872 5726768 1629776 5726856 -1630632 5743536 1629872 5726768 1627584 5739200 1630424 5743368 -1629584 5726976 1626944 5738696 1627032 5738744 1627584 5739200 -1627520 5739192 1627408 5739280 1627424 5739392 1627584 5739200 -1627520 5739192 1627584 5739200 1627032 5738744 1627128 5738848 -1627520 5739192 1627584 5739200 1627128 5738848 1627136 5738888 -1627520 5739192 1627424 5739392 1627584 5739200 1627128 5738848 -1627584 5739200 1629584 5726976 1627032 5738744 1627128 5738848 -1629872 5726768 1627776 5739304 1630632 5743536 1630864 5743768 -1627584 5739200 1627776 5739304 1629872 5726768 1629776 5726856 -1627584 5739200 1627776 5739304 1629776 5726856 1629584 5726976 -1627584 5739200 1627776 5739304 1629584 5726976 1627032 5738744 -1627776 5739304 1629776 5726856 1629584 5726976 1627032 5738744 -1627584 5739200 1627776 5739304 1627032 5738744 1627128 5738848 -1627776 5739304 1629872 5726768 1629776 5726856 1629584 5726976 -1627584 5739200 1630632 5743536 1627776 5739304 1627032 5738744 -1630632 5743536 1627776 5739304 1627584 5739200 1630424 5743368 -1627584 5739200 1629784 5742896 1630424 5743368 1627776 5739304 -1629784 5742896 1630312 5743312 1630424 5743368 1627776 5739304 -1627584 5739200 1629688 5742824 1629784 5742896 1627776 5739304 -1629784 5742896 1630424 5743368 1627776 5739304 1629688 5742824 -1630632 5743536 1629872 5726768 1627776 5739304 1630424 5743368 -1627584 5739200 1627480 5739472 1629688 5742824 1627776 5739304 -1627584 5739200 1627424 5739392 1627480 5739472 1627776 5739304 -1627480 5739472 1629640 5742832 1629688 5742824 1627776 5739304 -1629688 5742824 1629784 5742896 1627776 5739304 1629640 5742832 -1627480 5739472 1629640 5742832 1627776 5739304 1627584 5739200 -1627776 5739304 1627032 5738744 1627584 5739200 1627480 5739472 -1630424 5743368 1630632 5743536 1627776 5739304 1629784 5742896 -1627776 5739304 1630632 5743536 1629872 5726768 1629776 5726856 -1627480 5739472 1628168 5742888 1629640 5742832 1627776 5739304 -1629640 5742832 1629688 5742824 1627776 5739304 1628168 5742888 -1628168 5742888 1629312 5742992 1629640 5742832 1627776 5739304 -1627480 5739472 1628168 5742888 1627776 5739304 1627584 5739200 -1627480 5739472 1628128 5742888 1628168 5742888 1627776 5739304 -1629584 5726976 1626944 5738696 1627032 5738744 1627776 5739304 -1629872 5726768 1628080 5739504 1630632 5743536 1630864 5743768 -1629872 5726768 1628080 5739504 1630864 5743768 1629928 5726696 -1630632 5743536 1628080 5739504 1627776 5739304 1630424 5743368 -1628080 5739504 1629872 5726768 1627776 5739304 1630424 5743368 -1629872 5726768 1627776 5739304 1628080 5739504 1630864 5743768 -1628080 5739504 1630424 5743368 1630632 5743536 1630864 5743768 -1627776 5739304 1629784 5742896 1630424 5743368 1628080 5739504 -1629784 5742896 1630312 5743312 1630424 5743368 1628080 5739504 -1627776 5739304 1629688 5742824 1629784 5742896 1628080 5739504 -1627776 5739304 1629640 5742832 1629688 5742824 1628080 5739504 -1627776 5739304 1628168 5742888 1629640 5742832 1628080 5739504 -1629640 5742832 1629688 5742824 1628080 5739504 1628168 5742888 -1629688 5742824 1629784 5742896 1628080 5739504 1629640 5742832 -1630424 5743368 1630632 5743536 1628080 5739504 1629784 5742896 -1627776 5739304 1628168 5742888 1628080 5739504 1629872 5726768 -1628168 5742888 1629312 5742992 1629640 5742832 1628080 5739504 -1629784 5742896 1630424 5743368 1628080 5739504 1629688 5742824 -1627776 5739304 1628080 5739504 1629872 5726768 1629776 5726856 -1627776 5739304 1628168 5742888 1628080 5739504 1629776 5726856 -1628080 5739504 1630864 5743768 1629872 5726768 1629776 5726856 -1627776 5739304 1628080 5739504 1629776 5726856 1629584 5726976 -1627776 5739304 1628080 5739504 1629584 5726976 1627032 5738744 -1627776 5739304 1628168 5742888 1628080 5739504 1629584 5726976 -1628080 5739504 1629872 5726768 1629776 5726856 1629584 5726976 -1627776 5739304 1627480 5739472 1628168 5742888 1628080 5739504 -1628168 5742888 1629640 5742832 1628080 5739504 1627480 5739472 -1627776 5739304 1627480 5739472 1628080 5739504 1629584 5726976 -1627776 5739304 1627584 5739200 1627480 5739472 1628080 5739504 -1627480 5739472 1628128 5742888 1628168 5742888 1628080 5739504 -1627480 5739472 1626120 5741352 1628128 5742888 1628080 5739504 -1628168 5742888 1629640 5742832 1628080 5739504 1628128 5742888 -1626120 5741352 1628056 5742960 1628128 5742888 1628080 5739504 -1628128 5742888 1628168 5742888 1628080 5739504 1626120 5741352 -1627480 5739472 1626080 5741216 1626120 5741352 1628080 5739504 -1627480 5739472 1626120 5741352 1628080 5739504 1627776 5739304 -1630864 5743768 1628160 5739568 1628080 5739504 1630632 5743536 -1629872 5726768 1628160 5739568 1630864 5743768 1629928 5726696 -1630864 5743768 1630952 5743928 1629928 5726696 1628160 5739568 -1630864 5743768 1629928 5726696 1628160 5739568 1630632 5743536 -1628080 5739504 1628160 5739568 1629872 5726768 1629776 5726856 -1628160 5739568 1629776 5726856 1628080 5739504 1630632 5743536 -1628080 5739504 1630424 5743368 1630632 5743536 1628160 5739568 -1630632 5743536 1630864 5743768 1628160 5739568 1630424 5743368 -1628080 5739504 1629784 5742896 1630424 5743368 1628160 5739568 -1629784 5742896 1630312 5743312 1630424 5743368 1628160 5739568 -1628080 5739504 1629784 5742896 1628160 5739568 1629776 5726856 -1630424 5743368 1630632 5743536 1628160 5739568 1629784 5742896 -1629872 5726768 1629776 5726856 1628160 5739568 1629928 5726696 -1628080 5739504 1629688 5742824 1629784 5742896 1628160 5739568 -1628080 5739504 1629640 5742832 1629688 5742824 1628160 5739568 -1628080 5739504 1628168 5742888 1629640 5742832 1628160 5739568 -1628080 5739504 1628128 5742888 1628168 5742888 1628160 5739568 -1628168 5742888 1629640 5742832 1628160 5739568 1628128 5742888 -1629640 5742832 1629688 5742824 1628160 5739568 1628168 5742888 -1629784 5742896 1630424 5743368 1628160 5739568 1629688 5742824 -1628080 5739504 1628128 5742888 1628160 5739568 1629776 5726856 -1628168 5742888 1629312 5742992 1629640 5742832 1628160 5739568 -1628080 5739504 1626120 5741352 1628128 5742888 1628160 5739568 -1628080 5739504 1627480 5739472 1626120 5741352 1628160 5739568 -1628128 5742888 1628168 5742888 1628160 5739568 1626120 5741352 -1628080 5739504 1627480 5739472 1628160 5739568 1629776 5726856 -1626120 5741352 1628056 5742960 1628128 5742888 1628160 5739568 -1626120 5741352 1628128 5742888 1628160 5739568 1627480 5739472 -1627480 5739472 1626080 5741216 1626120 5741352 1628160 5739568 -1629688 5742824 1629784 5742896 1628160 5739568 1629640 5742832 -1628080 5739504 1628160 5739568 1629776 5726856 1629584 5726976 -1628160 5739568 1629872 5726768 1629776 5726856 1629584 5726976 -1628080 5739504 1627480 5739472 1628160 5739568 1629584 5726976 -1628080 5739504 1628160 5739568 1629584 5726976 1627776 5739304 -1628080 5739504 1627776 5739304 1627480 5739472 1628160 5739568 -1628168 5742888 1628176 5739664 1628160 5739568 1628128 5742888 -1628160 5739568 1626120 5741352 1628128 5742888 1628176 5739664 -1628176 5739664 1629640 5742832 1628160 5739568 1626120 5741352 -1628168 5742888 1629640 5742832 1628176 5739664 1628128 5742888 -1628128 5742888 1628168 5742888 1628176 5739664 1626120 5741352 -1628160 5739568 1628176 5739664 1629640 5742832 1629688 5742824 -1628160 5739568 1626120 5741352 1628176 5739664 1629688 5742824 -1628176 5739664 1628168 5742888 1629640 5742832 1629688 5742824 -1626120 5741352 1628056 5742960 1628128 5742888 1628176 5739664 -1629640 5742832 1628176 5739664 1628168 5742888 1629312 5742992 -1628160 5739568 1627480 5739472 1626120 5741352 1628176 5739664 -1628160 5739568 1628080 5739504 1627480 5739472 1628176 5739664 -1626120 5741352 1628128 5742888 1628176 5739664 1627480 5739472 -1628160 5739568 1628080 5739504 1628176 5739664 1629688 5742824 -1627480 5739472 1626120 5741352 1628176 5739664 1628080 5739504 -1627480 5739472 1626080 5741216 1626120 5741352 1628176 5739664 -1628160 5739568 1628176 5739664 1629688 5742824 1629784 5742896 -1628160 5739568 1628080 5739504 1628176 5739664 1629784 5742896 -1628176 5739664 1629640 5742832 1629688 5742824 1629784 5742896 -1628160 5739568 1628176 5739664 1629784 5742896 1630424 5743368 -1629784 5742896 1630312 5743312 1630424 5743368 1628176 5739664 -1628160 5739568 1628080 5739504 1628176 5739664 1630424 5743368 -1628160 5739568 1628176 5739664 1630424 5743368 1630632 5743536 -1628176 5739664 1629688 5742824 1629784 5742896 1630424 5743368 -1628080 5739504 1627776 5739304 1627480 5739472 1628176 5739664 -1628176 5739664 1628072 5739696 1626120 5741352 1628128 5742888 -1628176 5739664 1627480 5739472 1628072 5739696 1628128 5742888 -1628176 5739664 1628072 5739696 1628128 5742888 1628168 5742888 -1628072 5739696 1626120 5741352 1628128 5742888 1628168 5742888 -1628176 5739664 1627480 5739472 1628072 5739696 1628168 5742888 -1628176 5739664 1628072 5739696 1628168 5742888 1629640 5742832 -1626120 5741352 1628056 5742960 1628128 5742888 1628072 5739696 -1627480 5739472 1628072 5739696 1628176 5739664 1628080 5739504 -1628176 5739664 1628160 5739568 1628080 5739504 1628072 5739696 -1628072 5739696 1628168 5742888 1628176 5739664 1628160 5739568 -1628080 5739504 1627480 5739472 1628072 5739696 1628160 5739568 -1626120 5741352 1628072 5739696 1627480 5739472 1626080 5741216 -1627480 5739472 1626056 5741184 1626080 5741216 1628072 5739696 -1627480 5739472 1628072 5739696 1628080 5739504 1627776 5739304 -1627480 5739472 1628072 5739696 1627776 5739304 1627584 5739200 -1628072 5739696 1628160 5739568 1628080 5739504 1627776 5739304 -1628072 5739696 1626080 5741216 1626120 5741352 1628128 5742888 -1627480 5739472 1626080 5741216 1628072 5739696 1627776 5739304 -1626080 5741216 1627920 5739640 1627480 5739472 1626056 5741184 -1628072 5739696 1627920 5739640 1626080 5741216 1626120 5741352 -1628072 5739696 1627920 5739640 1626120 5741352 1628128 5742888 -1628072 5739696 1627480 5739472 1627920 5739640 1626120 5741352 -1627480 5739472 1627920 5739640 1628072 5739696 1627776 5739304 -1627480 5739472 1627920 5739640 1627776 5739304 1627584 5739200 -1628072 5739696 1628080 5739504 1627776 5739304 1627920 5739640 -1628072 5739696 1628160 5739568 1628080 5739504 1627920 5739640 -1627480 5739472 1626080 5741216 1627920 5739640 1627776 5739304 -1627920 5739640 1626120 5741352 1628072 5739696 1628080 5739504 -1627776 5739304 1627480 5739472 1627920 5739640 1628080 5739504 -1627920 5739640 1627480 5739472 1626080 5741216 1626120 5741352 -1626080 5741216 1627792 5739608 1627480 5739472 1626056 5741184 -1627480 5739472 1627792 5739608 1627920 5739640 1627776 5739304 -1627480 5739472 1627792 5739608 1627776 5739304 1627584 5739200 -1627480 5739472 1626080 5741216 1627792 5739608 1627776 5739304 -1627920 5739640 1628080 5739504 1627776 5739304 1627792 5739608 -1627920 5739640 1628072 5739696 1628080 5739504 1627792 5739608 -1627776 5739304 1627480 5739472 1627792 5739608 1628080 5739504 -1627920 5739640 1627792 5739608 1626080 5741216 1626120 5741352 -1627920 5739640 1627792 5739608 1626120 5741352 1628072 5739696 -1627792 5739608 1627480 5739472 1626080 5741216 1626120 5741352 -1626120 5741352 1628128 5742888 1628072 5739696 1627792 5739608 -1627792 5739608 1626080 5741216 1626120 5741352 1628072 5739696 -1627792 5739608 1628072 5739696 1627920 5739640 1628080 5739504 -1626080 5741216 1627720 5739608 1627480 5739472 1626056 5741184 -1627792 5739608 1627720 5739608 1626080 5741216 1626120 5741352 -1627792 5739608 1627480 5739472 1627720 5739608 1626120 5741352 -1627480 5739472 1627720 5739608 1627792 5739608 1627776 5739304 -1627480 5739472 1627720 5739608 1627776 5739304 1627584 5739200 -1627792 5739608 1628080 5739504 1627776 5739304 1627720 5739608 -1627720 5739608 1626120 5741352 1627792 5739608 1627776 5739304 -1627720 5739608 1627480 5739472 1626080 5741216 1626120 5741352 -1627480 5739472 1626080 5741216 1627720 5739608 1627776 5739304 -1627792 5739608 1627720 5739608 1626120 5741352 1628072 5739696 -1627792 5739608 1627720 5739608 1628072 5739696 1627920 5739640 -1627720 5739608 1626080 5741216 1626120 5741352 1628072 5739696 -1627792 5739608 1627776 5739304 1627720 5739608 1627920 5739640 -1626120 5741352 1628128 5742888 1628072 5739696 1627720 5739608 -1627720 5739608 1626120 5741352 1628072 5739696 1627920 5739640 -1626080 5741216 1627688 5739616 1627480 5739472 1626056 5741184 -1627480 5739472 1625984 5741112 1626056 5741184 1627688 5739616 -1627720 5739608 1627688 5739616 1626080 5741216 1626120 5741352 -1627720 5739608 1627688 5739616 1626120 5741352 1628072 5739696 -1627688 5739616 1626080 5741216 1626120 5741352 1628072 5739696 -1627720 5739608 1627480 5739472 1627688 5739616 1628072 5739696 -1627480 5739472 1627688 5739616 1627720 5739608 1627776 5739304 -1627480 5739472 1627688 5739616 1627776 5739304 1627584 5739200 -1627720 5739608 1627792 5739608 1627776 5739304 1627688 5739616 -1627688 5739616 1628072 5739696 1627720 5739608 1627776 5739304 -1626080 5741216 1626120 5741352 1627688 5739616 1626056 5741184 -1627688 5739616 1627776 5739304 1627480 5739472 1626056 5741184 -1626120 5741352 1628128 5742888 1628072 5739696 1627688 5739616 -1627720 5739608 1627688 5739616 1628072 5739696 1627920 5739640 -1627720 5739608 1627688 5739616 1627920 5739640 1627792 5739608 -1627688 5739616 1626120 5741352 1628072 5739696 1627920 5739640 -1627720 5739608 1627776 5739304 1627688 5739616 1627792 5739608 -1627688 5739616 1628072 5739696 1627920 5739640 1627792 5739608 -1626056 5741184 1627640 5739584 1627480 5739472 1625984 5741112 -1627688 5739616 1627640 5739584 1626056 5741184 1626080 5741216 -1627688 5739616 1627640 5739584 1626080 5741216 1626120 5741352 -1627688 5739616 1627480 5739472 1627640 5739584 1626080 5741216 -1627480 5739472 1627640 5739584 1627688 5739616 1627776 5739304 -1627480 5739472 1627640 5739584 1627776 5739304 1627584 5739200 -1627688 5739616 1627720 5739608 1627776 5739304 1627640 5739584 -1627720 5739608 1627792 5739608 1627776 5739304 1627640 5739584 -1627640 5739584 1626080 5741216 1627688 5739616 1627720 5739608 -1627776 5739304 1627480 5739472 1627640 5739584 1627720 5739608 -1627640 5739584 1627480 5739472 1626056 5741184 1626080 5741216 -1627480 5739472 1626056 5741184 1627640 5739584 1627776 5739304 -1626056 5741184 1627592 5739576 1627480 5739472 1625984 5741112 -1627480 5739472 1626856 5739080 1625984 5741112 1627592 5739576 -1626056 5741184 1627640 5739584 1627592 5739576 1625984 5741112 -1627592 5739576 1627640 5739584 1627480 5739472 1625984 5741112 -1627640 5739584 1627592 5739576 1626056 5741184 1626080 5741216 -1627592 5739576 1625984 5741112 1626056 5741184 1626080 5741216 -1627640 5739584 1627592 5739576 1626080 5741216 1627688 5739616 -1626080 5741216 1626120 5741352 1627688 5739616 1627592 5739576 -1627592 5739576 1626056 5741184 1626080 5741216 1627688 5739616 -1627640 5739584 1627480 5739472 1627592 5739576 1627688 5739616 -1627480 5739472 1627592 5739576 1627640 5739584 1627776 5739304 -1627480 5739472 1625984 5741112 1627592 5739576 1627776 5739304 -1627480 5739472 1627592 5739576 1627776 5739304 1627584 5739200 -1627640 5739584 1627720 5739608 1627776 5739304 1627592 5739576 -1627592 5739576 1627688 5739616 1627640 5739584 1627776 5739304 -1629584 5726976 1627776 5737664 1627776 5739304 1628080 5739504 -1627776 5737664 1627032 5738744 1627776 5739304 1628080 5739504 -1629584 5726976 1627032 5738744 1627776 5737664 1628080 5739504 -1627776 5739304 1627776 5737664 1627032 5738744 1627584 5739200 -1627776 5739304 1628080 5739504 1627776 5737664 1627584 5739200 -1627776 5737664 1629584 5726976 1627032 5738744 1627584 5739200 -1627032 5738744 1627128 5738848 1627584 5739200 1627776 5737664 -1627032 5738744 1627128 5738848 1627776 5737664 1629584 5726976 -1627584 5739200 1627776 5739304 1627776 5737664 1627128 5738848 -1629584 5726976 1627776 5737664 1628080 5739504 1628160 5739568 -1629584 5726976 1627032 5738744 1627776 5737664 1628160 5739568 -1627776 5737664 1627776 5739304 1628080 5739504 1628160 5739568 -1629584 5726976 1627776 5737664 1628160 5739568 1629776 5726856 -1629584 5726976 1627032 5738744 1627776 5737664 1629776 5726856 -1628160 5739568 1629872 5726768 1629776 5726856 1627776 5737664 -1628160 5739568 1629928 5726696 1629872 5726768 1627776 5737664 -1628160 5739568 1630864 5743768 1629928 5726696 1627776 5737664 -1630864 5743768 1630952 5743928 1629928 5726696 1627776 5737664 -1628160 5739568 1630632 5743536 1630864 5743768 1627776 5737664 -1628160 5739568 1630424 5743368 1630632 5743536 1627776 5737664 -1630864 5743768 1629928 5726696 1627776 5737664 1630632 5743536 -1629872 5726768 1629776 5726856 1627776 5737664 1629928 5726696 -1629928 5726696 1629872 5726768 1627776 5737664 1630864 5743768 -1627776 5737664 1628080 5739504 1628160 5739568 1630632 5743536 -1629776 5726856 1629584 5726976 1627776 5737664 1629872 5726768 -1627032 5738744 1627776 5737664 1629584 5726976 1626944 5738696 -1627032 5738744 1627128 5738848 1627776 5737664 1626944 5738696 -1627776 5737664 1629776 5726856 1629584 5726976 1626944 5738696 -1629584 5726976 1626040 5738272 1626944 5738696 1627776 5737664 -1629584 5726976 1626040 5738272 1627776 5737664 1629776 5726856 -1626040 5738272 1626136 5738328 1626944 5738696 1627776 5737664 -1629584 5726976 1621800 5732912 1626040 5738272 1627776 5737664 -1629584 5726976 1621776 5732752 1621800 5732912 1627776 5737664 -1629584 5726976 1621800 5732912 1627776 5737664 1629776 5726856 -1621800 5732912 1625760 5738184 1626040 5738272 1627776 5737664 -1621800 5732912 1621808 5733136 1625760 5738184 1627776 5737664 -1625760 5738184 1626040 5738272 1627776 5737664 1621808 5733136 -1621800 5732912 1621808 5733136 1627776 5737664 1629584 5726976 -1621808 5733136 1625488 5738112 1625760 5738184 1627776 5737664 -1621808 5733136 1625488 5738112 1627776 5737664 1621800 5732912 -1625760 5738184 1626040 5738272 1627776 5737664 1625488 5738112 -1621808 5733136 1625120 5738032 1625488 5738112 1627776 5737664 -1621808 5733136 1625120 5738032 1627776 5737664 1621800 5732912 -1625488 5738112 1625760 5738184 1627776 5737664 1625120 5738032 -1626136 5738328 1626688 5738608 1626944 5738696 1627776 5737664 -1626136 5738328 1626688 5738608 1627776 5737664 1626040 5738272 -1626136 5738328 1626296 5738488 1626688 5738608 1627776 5737664 -1621808 5733136 1624904 5738000 1625120 5738032 1627776 5737664 -1625488 5738112 1625656 5738160 1625760 5738184 1627776 5737664 -1625760 5738184 1626040 5738272 1627776 5737664 1625656 5738160 -1625488 5738112 1625656 5738160 1627776 5737664 1625120 5738032 -1626040 5738272 1626136 5738328 1627776 5737664 1625760 5738184 -1626944 5738696 1627032 5738744 1627776 5737664 1626688 5738608 -1627128 5738848 1627520 5739192 1627584 5739200 1627776 5737664 -1630864 5743768 1627856 5737672 1627776 5737664 1630632 5743536 -1629928 5726696 1627856 5737672 1630864 5743768 1630952 5743928 -1627856 5737672 1629928 5726696 1627776 5737664 1630632 5743536 -1627776 5737664 1628160 5739568 1630632 5743536 1627856 5737672 -1628160 5739568 1630424 5743368 1630632 5743536 1627856 5737672 -1630632 5743536 1630864 5743768 1627856 5737672 1628160 5739568 -1627776 5737664 1628160 5739568 1627856 5737672 1629928 5726696 -1630864 5743768 1629928 5726696 1627856 5737672 1630632 5743536 -1627776 5737664 1627856 5737672 1629928 5726696 1629872 5726768 -1627776 5737664 1628160 5739568 1627856 5737672 1629872 5726768 -1627856 5737672 1630864 5743768 1629928 5726696 1629872 5726768 -1627776 5737664 1627856 5737672 1629872 5726768 1629776 5726856 -1627776 5737664 1628160 5739568 1627856 5737672 1629776 5726856 -1627856 5737672 1629928 5726696 1629872 5726768 1629776 5726856 -1627776 5737664 1628080 5739504 1628160 5739568 1627856 5737672 -1627776 5737664 1628080 5739504 1627856 5737672 1629776 5726856 -1628160 5739568 1630632 5743536 1627856 5737672 1628080 5739504 -1627776 5737664 1627776 5739304 1628080 5739504 1627856 5737672 -1627776 5737664 1627776 5739304 1627856 5737672 1629776 5726856 -1627776 5737664 1627584 5739200 1627776 5739304 1627856 5737672 -1627776 5737664 1627584 5739200 1627856 5737672 1629776 5726856 -1627776 5739304 1628080 5739504 1627856 5737672 1627584 5739200 -1627776 5737664 1627128 5738848 1627584 5739200 1627856 5737672 -1627776 5737664 1627128 5738848 1627856 5737672 1629776 5726856 -1627584 5739200 1627776 5739304 1627856 5737672 1627128 5738848 -1627776 5737664 1627032 5738744 1627128 5738848 1627856 5737672 -1628080 5739504 1628160 5739568 1627856 5737672 1627776 5739304 -1627776 5737664 1627856 5737672 1629776 5726856 1629584 5726976 -1627776 5737664 1627128 5738848 1627856 5737672 1629584 5726976 -1627776 5737664 1627856 5737672 1629584 5726976 1621800 5732912 -1627856 5737672 1629872 5726768 1629776 5726856 1629584 5726976 -1627128 5738848 1627520 5739192 1627584 5739200 1627856 5737672 -1629928 5726696 1627952 5737688 1630864 5743768 1630952 5743928 -1627856 5737672 1627952 5737688 1629928 5726696 1629872 5726768 -1627856 5737672 1630864 5743768 1627952 5737688 1629872 5726768 -1630864 5743768 1627952 5737688 1627856 5737672 1630632 5743536 -1627856 5737672 1628160 5739568 1630632 5743536 1627952 5737688 -1628160 5739568 1630424 5743368 1630632 5743536 1627952 5737688 -1627856 5737672 1628080 5739504 1628160 5739568 1627952 5737688 -1628160 5739568 1630632 5743536 1627952 5737688 1628080 5739504 -1627952 5737688 1629872 5726768 1627856 5737672 1628080 5739504 -1630632 5743536 1630864 5743768 1627952 5737688 1628160 5739568 -1627952 5737688 1630864 5743768 1629928 5726696 1629872 5726768 -1630864 5743768 1629928 5726696 1627952 5737688 1630632 5743536 -1627856 5737672 1627952 5737688 1629872 5726768 1629776 5726856 -1627952 5737688 1629928 5726696 1629872 5726768 1629776 5726856 -1627856 5737672 1628080 5739504 1627952 5737688 1629776 5726856 -1627856 5737672 1627952 5737688 1629776 5726856 1629584 5726976 -1627856 5737672 1628080 5739504 1627952 5737688 1629584 5726976 -1627952 5737688 1629872 5726768 1629776 5726856 1629584 5726976 -1627856 5737672 1627776 5739304 1628080 5739504 1627952 5737688 -1628080 5739504 1628160 5739568 1627952 5737688 1627776 5739304 -1627856 5737672 1627776 5739304 1627952 5737688 1629584 5726976 -1627856 5737672 1627584 5739200 1627776 5739304 1627952 5737688 -1627856 5737672 1627128 5738848 1627584 5739200 1627952 5737688 -1627856 5737672 1627128 5738848 1627952 5737688 1629584 5726976 -1627584 5739200 1627776 5739304 1627952 5737688 1627128 5738848 -1627856 5737672 1627776 5737664 1627128 5738848 1627952 5737688 -1627776 5739304 1628080 5739504 1627952 5737688 1627584 5739200 -1627856 5737672 1627952 5737688 1629584 5726976 1627776 5737664 -1627128 5738848 1627520 5739192 1627584 5739200 1627952 5737688 -1629928 5726696 1628032 5737712 1630864 5743768 1630952 5743928 -1627952 5737688 1628032 5737712 1629928 5726696 1629872 5726768 -1627952 5737688 1628032 5737712 1629872 5726768 1629776 5726856 -1628032 5737712 1629928 5726696 1629872 5726768 1629776 5726856 -1627952 5737688 1630864 5743768 1628032 5737712 1629776 5726856 -1630864 5743768 1628032 5737712 1627952 5737688 1630632 5743536 -1627952 5737688 1628160 5739568 1630632 5743536 1628032 5737712 -1628160 5739568 1630424 5743368 1630632 5743536 1628032 5737712 -1627952 5737688 1628080 5739504 1628160 5739568 1628032 5737712 -1627952 5737688 1627776 5739304 1628080 5739504 1628032 5737712 -1628080 5739504 1628160 5739568 1628032 5737712 1627776 5739304 -1628160 5739568 1630632 5743536 1628032 5737712 1628080 5739504 -1628032 5737712 1629776 5726856 1627952 5737688 1627776 5739304 -1630632 5743536 1630864 5743768 1628032 5737712 1628160 5739568 -1628032 5737712 1630864 5743768 1629928 5726696 1629872 5726768 -1630864 5743768 1629928 5726696 1628032 5737712 1630632 5743536 -1627952 5737688 1628032 5737712 1629776 5726856 1629584 5726976 -1628032 5737712 1629872 5726768 1629776 5726856 1629584 5726976 -1627952 5737688 1627776 5739304 1628032 5737712 1629584 5726976 -1627952 5737688 1628032 5737712 1629584 5726976 1627856 5737672 -1627952 5737688 1627584 5739200 1627776 5739304 1628032 5737712 -1627776 5739304 1628080 5739504 1628032 5737712 1627584 5739200 -1627952 5737688 1627584 5739200 1628032 5737712 1629584 5726976 -1627952 5737688 1627128 5738848 1627584 5739200 1628032 5737712 -1627952 5737688 1627856 5737672 1627128 5738848 1628032 5737712 -1627952 5737688 1627856 5737672 1628032 5737712 1629584 5726976 -1627128 5738848 1627584 5739200 1628032 5737712 1627856 5737672 -1627856 5737672 1627776 5737664 1627128 5738848 1628032 5737712 -1627584 5739200 1627776 5739304 1628032 5737712 1627128 5738848 -1627128 5738848 1627520 5739192 1627584 5739200 1628032 5737712 -1629928 5726696 1628056 5737728 1630864 5743768 1630952 5743928 -1628032 5737712 1628056 5737728 1629928 5726696 1629872 5726768 -1628032 5737712 1628056 5737728 1629872 5726768 1629776 5726856 -1628032 5737712 1628056 5737728 1629776 5726856 1629584 5726976 -1628056 5737728 1629872 5726768 1629776 5726856 1629584 5726976 -1628056 5737728 1629928 5726696 1629872 5726768 1629776 5726856 -1628032 5737712 1630864 5743768 1628056 5737728 1629584 5726976 -1630864 5743768 1628056 5737728 1628032 5737712 1630632 5743536 -1630864 5743768 1629928 5726696 1628056 5737728 1630632 5743536 -1628032 5737712 1628160 5739568 1630632 5743536 1628056 5737728 -1628160 5739568 1630424 5743368 1630632 5743536 1628056 5737728 -1628032 5737712 1628080 5739504 1628160 5739568 1628056 5737728 -1628032 5737712 1627776 5739304 1628080 5739504 1628056 5737728 -1628032 5737712 1627584 5739200 1627776 5739304 1628056 5737728 -1627776 5739304 1628080 5739504 1628056 5737728 1627584 5739200 -1628080 5739504 1628160 5739568 1628056 5737728 1627776 5739304 -1628160 5739568 1630424 5743368 1628056 5737728 1628080 5739504 -1628056 5737728 1629584 5726976 1628032 5737712 1627584 5739200 -1630632 5743536 1630864 5743768 1628056 5737728 1630424 5743368 -1628056 5737728 1630864 5743768 1629928 5726696 1629872 5726768 -1628160 5739568 1628176 5739664 1630424 5743368 1628056 5737728 -1628032 5737712 1628056 5737728 1629584 5726976 1627952 5737688 -1628032 5737712 1627128 5738848 1627584 5739200 1628056 5737728 -1627584 5739200 1627776 5739304 1628056 5737728 1627128 5738848 -1628032 5737712 1627128 5738848 1628056 5737728 1629584 5726976 -1628032 5737712 1627856 5737672 1627128 5738848 1628056 5737728 -1628032 5737712 1627952 5737688 1627856 5737672 1628056 5737728 -1628032 5737712 1627952 5737688 1628056 5737728 1629584 5726976 -1627856 5737672 1627128 5738848 1628056 5737728 1627952 5737688 -1627856 5737672 1627776 5737664 1627128 5738848 1628056 5737728 -1627128 5738848 1627584 5739200 1628056 5737728 1627856 5737672 -1627128 5738848 1627520 5739192 1627584 5739200 1628056 5737728 -1629928 5726696 1628080 5737752 1630864 5743768 1630952 5743928 -1630864 5743768 1628080 5737752 1628056 5737728 1630632 5743536 -1630864 5743768 1629928 5726696 1628080 5737752 1630632 5743536 -1628056 5737728 1630424 5743368 1630632 5743536 1628080 5737752 -1628056 5737728 1628160 5739568 1630424 5743368 1628080 5737752 -1630632 5743536 1630864 5743768 1628080 5737752 1630424 5743368 -1628056 5737728 1628080 5739504 1628160 5739568 1628080 5737752 -1628160 5739568 1630424 5743368 1628080 5737752 1628080 5739504 -1628056 5737728 1627776 5739304 1628080 5739504 1628080 5737752 -1628056 5737728 1627584 5739200 1627776 5739304 1628080 5737752 -1628056 5737728 1627128 5738848 1627584 5739200 1628080 5737752 -1627584 5739200 1627776 5739304 1628080 5737752 1627128 5738848 -1627776 5739304 1628080 5739504 1628080 5737752 1627584 5739200 -1628080 5739504 1628160 5739568 1628080 5737752 1627776 5739304 -1630424 5743368 1630632 5743536 1628080 5737752 1628160 5739568 -1628056 5737728 1628080 5737752 1629928 5726696 1629872 5726768 -1628080 5737752 1630864 5743768 1629928 5726696 1629872 5726768 -1628056 5737728 1628080 5737752 1629872 5726768 1629776 5726856 -1628056 5737728 1628080 5737752 1629776 5726856 1629584 5726976 -1628056 5737728 1628080 5737752 1629584 5726976 1628032 5737712 -1628080 5737752 1629872 5726768 1629776 5726856 1629584 5726976 -1628080 5737752 1629928 5726696 1629872 5726768 1629776 5726856 -1628080 5737752 1629584 5726976 1628056 5737728 1627128 5738848 -1628160 5739568 1628176 5739664 1630424 5743368 1628080 5737752 -1628056 5737728 1627856 5737672 1627128 5738848 1628080 5737752 -1627128 5738848 1627584 5739200 1628080 5737752 1627856 5737672 -1628056 5737728 1627856 5737672 1628080 5737752 1629584 5726976 -1628056 5737728 1627952 5737688 1627856 5737672 1628080 5737752 -1628056 5737728 1628032 5737712 1627952 5737688 1628080 5737752 -1628056 5737728 1628032 5737712 1628080 5737752 1629584 5726976 -1627952 5737688 1627856 5737672 1628080 5737752 1628032 5737712 -1627856 5737672 1627776 5737664 1627128 5738848 1628080 5737752 -1627128 5738848 1627584 5739200 1628080 5737752 1627776 5737664 -1627776 5737664 1627032 5738744 1627128 5738848 1628080 5737752 -1627856 5737672 1627776 5737664 1628080 5737752 1627952 5737688 -1627128 5738848 1627520 5739192 1627584 5739200 1628080 5737752 -1628160 5739568 1628096 5737800 1628080 5737752 1628080 5739504 -1628096 5737800 1630424 5743368 1628080 5737752 1628080 5739504 -1628080 5737752 1627776 5739304 1628080 5739504 1628096 5737800 -1628080 5739504 1628160 5739568 1628096 5737800 1627776 5739304 -1628080 5737752 1627776 5739304 1628096 5737800 1630424 5743368 -1628080 5737752 1627584 5739200 1627776 5739304 1628096 5737800 -1628080 5737752 1627128 5738848 1627584 5739200 1628096 5737800 -1628080 5737752 1627128 5738848 1628096 5737800 1630424 5743368 -1628080 5737752 1627776 5737664 1627128 5738848 1628096 5737800 -1627128 5738848 1627584 5739200 1628096 5737800 1627776 5737664 -1628080 5737752 1627776 5737664 1628096 5737800 1630424 5743368 -1627584 5739200 1627776 5739304 1628096 5737800 1627128 5738848 -1627776 5739304 1628080 5739504 1628096 5737800 1627584 5739200 -1628080 5737752 1628096 5737800 1630424 5743368 1630632 5743536 -1628080 5737752 1628096 5737800 1630632 5743536 1630864 5743768 -1628080 5737752 1627776 5737664 1628096 5737800 1630864 5743768 -1628080 5737752 1628096 5737800 1630864 5743768 1629928 5726696 -1630864 5743768 1630952 5743928 1629928 5726696 1628096 5737800 -1628096 5737800 1630632 5743536 1630864 5743768 1629928 5726696 -1628080 5737752 1628096 5737800 1629928 5726696 1629872 5726768 -1628080 5737752 1627776 5737664 1628096 5737800 1629928 5726696 -1628096 5737800 1628160 5739568 1630424 5743368 1630632 5743536 -1628096 5737800 1630424 5743368 1630632 5743536 1630864 5743768 -1630424 5743368 1628096 5737800 1628160 5739568 1628176 5739664 -1628160 5739568 1630424 5743368 1628096 5737800 1628080 5739504 -1628080 5737752 1627856 5737672 1627776 5737664 1628096 5737800 -1628080 5737752 1627856 5737672 1628096 5737800 1629928 5726696 -1627776 5737664 1627128 5738848 1628096 5737800 1627856 5737672 -1627776 5737664 1627032 5738744 1627128 5738848 1628096 5737800 -1628080 5737752 1627952 5737688 1627856 5737672 1628096 5737800 -1628080 5737752 1627952 5737688 1628096 5737800 1629928 5726696 -1628080 5737752 1628032 5737712 1627952 5737688 1628096 5737800 -1628080 5737752 1628056 5737728 1628032 5737712 1628096 5737800 -1628080 5737752 1628056 5737728 1628096 5737800 1629928 5726696 -1628032 5737712 1627952 5737688 1628096 5737800 1628056 5737728 -1627856 5737672 1627776 5737664 1628096 5737800 1627952 5737688 -1627952 5737688 1627856 5737672 1628096 5737800 1628032 5737712 -1627128 5738848 1627520 5739192 1627584 5739200 1628096 5737800 -1628080 5739504 1628096 5737824 1628096 5737800 1627776 5739304 -1628096 5737824 1628160 5739568 1628096 5737800 1627776 5739304 -1628096 5737800 1627584 5739200 1627776 5739304 1628096 5737824 -1627776 5739304 1628080 5739504 1628096 5737824 1627584 5739200 -1628096 5737800 1627584 5739200 1628096 5737824 1628160 5739568 -1628096 5737800 1627128 5738848 1627584 5739200 1628096 5737824 -1628096 5737800 1627776 5737664 1627128 5738848 1628096 5737824 -1628096 5737800 1627776 5737664 1628096 5737824 1628160 5739568 -1628096 5737800 1627856 5737672 1627776 5737664 1628096 5737824 -1627776 5737664 1627128 5738848 1628096 5737824 1627856 5737672 -1628096 5737800 1627856 5737672 1628096 5737824 1628160 5739568 -1627128 5738848 1627584 5739200 1628096 5737824 1627776 5737664 -1627584 5739200 1627776 5739304 1628096 5737824 1627128 5738848 -1628096 5737800 1628096 5737824 1628160 5739568 1630424 5743368 -1628096 5737800 1628096 5737824 1630424 5743368 1630632 5743536 -1628096 5737800 1627856 5737672 1628096 5737824 1630632 5743536 -1628096 5737800 1628096 5737824 1630632 5743536 1630864 5743768 -1628160 5739568 1628176 5739664 1630424 5743368 1628096 5737824 -1628096 5737824 1628160 5739568 1630424 5743368 1630632 5743536 -1628080 5739504 1628160 5739568 1628096 5737824 1627776 5739304 -1628096 5737824 1628080 5739504 1628160 5739568 1630424 5743368 -1628096 5737800 1627952 5737688 1627856 5737672 1628096 5737824 -1628096 5737800 1627952 5737688 1628096 5737824 1630632 5743536 -1627856 5737672 1627776 5737664 1628096 5737824 1627952 5737688 -1627776 5737664 1627032 5738744 1627128 5738848 1628096 5737824 -1628096 5737800 1628032 5737712 1627952 5737688 1628096 5737824 -1628096 5737800 1628032 5737712 1628096 5737824 1630632 5743536 -1628096 5737800 1628056 5737728 1628032 5737712 1628096 5737824 -1628096 5737800 1628080 5737752 1628056 5737728 1628096 5737824 -1628096 5737800 1628056 5737728 1628096 5737824 1630632 5743536 -1627952 5737688 1627856 5737672 1628096 5737824 1628032 5737712 -1628032 5737712 1627952 5737688 1628096 5737824 1628056 5737728 -1627128 5738848 1627520 5739192 1627584 5739200 1628096 5737824 -1627128 5738848 1628072 5737856 1628096 5737824 1627776 5737664 -1628096 5737824 1627856 5737672 1627776 5737664 1628072 5737856 -1628096 5737824 1627952 5737688 1627856 5737672 1628072 5737856 -1627856 5737672 1627776 5737664 1628072 5737856 1627952 5737688 -1627776 5737664 1627128 5738848 1628072 5737856 1627856 5737672 -1628096 5737824 1628072 5737856 1627584 5739200 1627776 5739304 -1628096 5737824 1628072 5737856 1627776 5739304 1628080 5739504 -1628072 5737856 1627584 5739200 1627776 5739304 1628080 5739504 -1627128 5738848 1627584 5739200 1628072 5737856 1627776 5737664 -1628072 5737856 1628080 5739504 1628096 5737824 1627952 5737688 -1628096 5737824 1628072 5737856 1628080 5739504 1628160 5739568 -1628072 5737856 1627776 5739304 1628080 5739504 1628160 5739568 -1628096 5737824 1627952 5737688 1628072 5737856 1628160 5739568 -1628072 5737856 1627128 5738848 1627584 5739200 1627776 5739304 -1628096 5737824 1628072 5737856 1628160 5739568 1630424 5743368 -1628096 5737824 1628032 5737712 1627952 5737688 1628072 5737856 -1627952 5737688 1627856 5737672 1628072 5737856 1628032 5737712 -1628096 5737824 1628032 5737712 1628072 5737856 1628160 5739568 -1627128 5738848 1628072 5737856 1627776 5737664 1627032 5738744 -1627776 5737664 1626944 5738696 1627032 5738744 1628072 5737856 -1628072 5737856 1627856 5737672 1627776 5737664 1627032 5738744 -1627128 5738848 1627584 5739200 1628072 5737856 1627032 5738744 -1628096 5737824 1628056 5737728 1628032 5737712 1628072 5737856 -1628096 5737824 1628096 5737800 1628056 5737728 1628072 5737856 -1628096 5737800 1628080 5737752 1628056 5737728 1628072 5737856 -1628096 5737800 1628080 5737752 1628072 5737856 1628096 5737824 -1628096 5737824 1628096 5737800 1628072 5737856 1628160 5739568 -1628032 5737712 1627952 5737688 1628072 5737856 1628056 5737728 -1628056 5737728 1628032 5737712 1628072 5737856 1628080 5737752 -1627584 5739200 1628072 5737856 1627128 5738848 1627520 5739192 -1627032 5738744 1628024 5737880 1627776 5737664 1626944 5738696 -1627776 5737664 1628024 5737880 1628072 5737856 1627856 5737672 -1628072 5737856 1627952 5737688 1627856 5737672 1628024 5737880 -1628072 5737856 1628032 5737712 1627952 5737688 1628024 5737880 -1627952 5737688 1627856 5737672 1628024 5737880 1628032 5737712 -1627856 5737672 1627776 5737664 1628024 5737880 1627952 5737688 -1627776 5737664 1627032 5738744 1628024 5737880 1627856 5737672 -1628024 5737880 1627032 5738744 1628072 5737856 1628032 5737712 -1628072 5737856 1628056 5737728 1628032 5737712 1628024 5737880 -1628032 5737712 1627952 5737688 1628024 5737880 1628056 5737728 -1628072 5737856 1628056 5737728 1628024 5737880 1627032 5738744 -1628072 5737856 1628024 5737880 1627032 5738744 1627128 5738848 -1628024 5737880 1627776 5737664 1627032 5738744 1627128 5738848 -1628072 5737856 1628056 5737728 1628024 5737880 1627128 5738848 -1628072 5737856 1628024 5737880 1627128 5738848 1627584 5739200 -1628072 5737856 1628056 5737728 1628024 5737880 1627584 5739200 -1628072 5737856 1628024 5737880 1627584 5739200 1627776 5739304 -1628072 5737856 1628024 5737880 1627776 5739304 1628080 5739504 -1628072 5737856 1628024 5737880 1628080 5739504 1628160 5739568 -1628024 5737880 1627128 5738848 1627584 5739200 1627776 5739304 -1628072 5737856 1628056 5737728 1628024 5737880 1628080 5739504 -1628024 5737880 1627584 5739200 1627776 5739304 1628080 5739504 -1628024 5737880 1627032 5738744 1627128 5738848 1627584 5739200 -1628072 5737856 1628080 5737752 1628056 5737728 1628024 5737880 -1628072 5737856 1628096 5737800 1628080 5737752 1628024 5737880 -1628072 5737856 1628080 5737752 1628024 5737880 1628080 5739504 -1628056 5737728 1628032 5737712 1628024 5737880 1628080 5737752 -1627128 5738848 1627520 5739192 1627584 5739200 1628024 5737880 -1627032 5738744 1627992 5737880 1627776 5737664 1626944 5738696 -1628024 5737880 1627992 5737880 1627032 5738744 1627128 5738848 -1628024 5737880 1627776 5737664 1627992 5737880 1627128 5738848 -1627992 5737880 1627776 5737664 1627032 5738744 1627128 5738848 -1627776 5737664 1627992 5737880 1628024 5737880 1627856 5737672 -1627992 5737880 1627128 5738848 1628024 5737880 1627856 5737672 -1627776 5737664 1627032 5738744 1627992 5737880 1627856 5737672 -1628024 5737880 1627952 5737688 1627856 5737672 1627992 5737880 -1628024 5737880 1627952 5737688 1627992 5737880 1627128 5738848 -1628024 5737880 1628032 5737712 1627952 5737688 1627992 5737880 -1628024 5737880 1628032 5737712 1627992 5737880 1627128 5738848 -1628024 5737880 1628056 5737728 1628032 5737712 1627992 5737880 -1628024 5737880 1628056 5737728 1627992 5737880 1627128 5738848 -1628032 5737712 1627952 5737688 1627992 5737880 1628056 5737728 -1627952 5737688 1627856 5737672 1627992 5737880 1628032 5737712 -1627856 5737672 1627776 5737664 1627992 5737880 1627952 5737688 -1628024 5737880 1628080 5737752 1628056 5737728 1627992 5737880 -1628024 5737880 1627992 5737880 1627128 5738848 1627584 5739200 -1628024 5737880 1628056 5737728 1627992 5737880 1627584 5739200 -1627992 5737880 1627032 5738744 1627128 5738848 1627584 5739200 -1628024 5737880 1627992 5737880 1627584 5739200 1627776 5739304 -1627128 5738848 1627520 5739192 1627584 5739200 1627992 5737880 -1627992 5737880 1627920 5737848 1627032 5738744 1627128 5738848 -1627992 5737880 1627776 5737664 1627920 5737848 1627128 5738848 -1627776 5737664 1627920 5737848 1627992 5737880 1627856 5737672 -1627920 5737848 1627128 5738848 1627992 5737880 1627856 5737672 -1627920 5737848 1627776 5737664 1627032 5738744 1627128 5738848 -1627776 5737664 1627032 5738744 1627920 5737848 1627856 5737672 -1627032 5738744 1627920 5737848 1627776 5737664 1626944 5738696 -1627992 5737880 1627920 5737848 1627128 5738848 1627584 5739200 -1627992 5737880 1627952 5737688 1627856 5737672 1627920 5737848 -1627992 5737880 1627952 5737688 1627920 5737848 1627128 5738848 -1627856 5737672 1627776 5737664 1627920 5737848 1627952 5737688 -1627992 5737880 1628032 5737712 1627952 5737688 1627920 5737848 -1627992 5737880 1628032 5737712 1627920 5737848 1627128 5738848 -1627992 5737880 1628056 5737728 1628032 5737712 1627920 5737848 -1627952 5737688 1627856 5737672 1627920 5737848 1628032 5737712 -1627920 5737848 1627856 5737824 1627032 5738744 1627128 5738848 -1627920 5737848 1627856 5737824 1627128 5738848 1627992 5737880 -1627920 5737848 1627776 5737664 1627856 5737824 1627128 5738848 -1627776 5737664 1627856 5737824 1627920 5737848 1627856 5737672 -1627920 5737848 1627952 5737688 1627856 5737672 1627856 5737824 -1627856 5737824 1627128 5738848 1627920 5737848 1627952 5737688 -1627856 5737672 1627776 5737664 1627856 5737824 1627952 5737688 -1627032 5738744 1627856 5737824 1627776 5737664 1626944 5738696 -1627920 5737848 1628032 5737712 1627952 5737688 1627856 5737824 -1627856 5737824 1626944 5738696 1627032 5738744 1627128 5738848 -1627776 5737664 1626944 5738696 1627856 5737824 1627856 5737672 -1627776 5737664 1626688 5738608 1626944 5738696 1627856 5737824 -1627856 5737824 1627816 5737792 1626944 5738696 1627032 5738744 -1627856 5737824 1627816 5737792 1627032 5738744 1627128 5738848 -1627856 5737824 1627776 5737664 1627816 5737792 1627032 5738744 -1627776 5737664 1627816 5737792 1627856 5737824 1627856 5737672 -1627856 5737824 1627952 5737688 1627856 5737672 1627816 5737792 -1627816 5737792 1627032 5738744 1627856 5737824 1627856 5737672 -1627816 5737792 1627776 5737664 1626944 5738696 1627032 5738744 -1627776 5737664 1626944 5738696 1627816 5737792 1627856 5737672 -1626944 5738696 1627816 5737792 1627776 5737664 1626688 5738608 -1627816 5737792 1627736 5737728 1626944 5738696 1627032 5738744 -1627816 5737792 1627736 5737728 1627032 5738744 1627856 5737824 -1627816 5737792 1627776 5737664 1627736 5737728 1627032 5738744 -1627776 5737664 1627736 5737728 1627816 5737792 1627856 5737672 -1627736 5737728 1627776 5737664 1626944 5738696 1627032 5738744 -1626944 5738696 1627736 5737728 1627776 5737664 1626688 5738608 -1626944 5738696 1627032 5738744 1627736 5737728 1626688 5738608 -1627736 5737728 1627816 5737792 1627776 5737664 1626688 5738608 -1627776 5737664 1626136 5738328 1626688 5738608 1627736 5737728 -1627776 5737664 1626040 5738272 1626136 5738328 1627736 5737728 -1627776 5737664 1626040 5738272 1627736 5737728 1627816 5737792 -1626136 5738328 1626296 5738488 1626688 5738608 1627736 5737728 -1626136 5738328 1626688 5738608 1627736 5737728 1626040 5738272 -1627776 5737664 1625760 5738184 1626040 5738272 1627736 5737728 -1626688 5738608 1626944 5738696 1627736 5737728 1626136 5738328 -1627736 5737728 1627736 5737704 1626040 5738272 1626136 5738328 -1627736 5737728 1627776 5737664 1627736 5737704 1626136 5738328 -1627776 5737664 1627736 5737704 1627736 5737728 1627816 5737792 -1627736 5737704 1627776 5737664 1626040 5738272 1626136 5738328 -1627736 5737728 1627736 5737704 1626136 5738328 1626688 5738608 -1627736 5737704 1626040 5738272 1626136 5738328 1626688 5738608 -1627736 5737728 1627776 5737664 1627736 5737704 1626688 5738608 -1626136 5738328 1626296 5738488 1626688 5738608 1627736 5737704 -1626040 5738272 1627736 5737704 1627776 5737664 1625760 5738184 -1626040 5738272 1626136 5738328 1627736 5737704 1625760 5738184 -1627736 5737704 1627736 5737728 1627776 5737664 1625760 5738184 -1627776 5737664 1625656 5738160 1625760 5738184 1627736 5737704 -1627736 5737728 1627736 5737704 1626688 5738608 1626944 5738696 -1621800 5732912 1627320 5730360 1629584 5726976 1621776 5732752 -1629584 5726976 1627320 5730360 1627776 5737664 1627856 5737672 -1621800 5732912 1627776 5737664 1627320 5730360 1621776 5732752 -1627320 5730360 1627856 5737672 1629584 5726976 1621776 5732752 -1627320 5730360 1621800 5732912 1627776 5737664 1627856 5737672 -1627776 5737664 1627320 5730360 1621800 5732912 1621808 5733136 -1627776 5737664 1627320 5730360 1621808 5733136 1625120 5738032 -1627320 5730360 1621776 5732752 1621800 5732912 1621808 5733136 -1627776 5737664 1627856 5737672 1627320 5730360 1625120 5738032 -1627320 5730360 1621800 5732912 1621808 5733136 1625120 5738032 -1627776 5737664 1627320 5730360 1625120 5738032 1625488 5738112 -1621808 5733136 1624904 5738000 1625120 5738032 1627320 5730360 -1629584 5726976 1627320 5730360 1627856 5737672 1627952 5737688 -1627320 5730360 1627776 5737664 1627856 5737672 1627952 5737688 -1629584 5726976 1627320 5730360 1627952 5737688 1628032 5737712 -1629584 5726976 1627320 5730360 1628032 5737712 1628056 5737728 -1629584 5726976 1627320 5730360 1628056 5737728 1628080 5737752 -1629584 5726976 1627320 5730360 1628080 5737752 1629776 5726856 -1627320 5730360 1628056 5737728 1628080 5737752 1629776 5726856 -1628080 5737752 1629872 5726768 1629776 5726856 1627320 5730360 -1627320 5730360 1627952 5737688 1628032 5737712 1628056 5737728 -1627320 5730360 1628032 5737712 1628056 5737728 1628080 5737752 -1629584 5726976 1621776 5732752 1627320 5730360 1629776 5726856 -1627320 5730360 1627856 5737672 1627952 5737688 1628032 5737712 -1629584 5726976 1629536 5726952 1621776 5732752 1627320 5730360 -1621776 5732752 1621800 5732912 1627320 5730360 1629536 5726952 -1629536 5726952 1621752 5732672 1621776 5732752 1627320 5730360 -1629536 5726952 1629480 5726888 1621752 5732672 1627320 5730360 -1621776 5732752 1621800 5732912 1627320 5730360 1621752 5732672 -1621752 5732672 1621776 5732752 1627320 5730360 1629480 5726888 -1629480 5726888 1621632 5732520 1621752 5732672 1627320 5730360 -1629480 5726888 1621632 5732520 1627320 5730360 1629536 5726952 -1621752 5732672 1621776 5732752 1627320 5730360 1621632 5732520 -1629480 5726888 1629448 5726816 1621632 5732520 1627320 5730360 -1629480 5726888 1629448 5726816 1627320 5730360 1629536 5726952 -1621632 5732520 1621752 5732672 1627320 5730360 1629448 5726816 -1629448 5726816 1629224 5726312 1621632 5732520 1627320 5730360 -1629448 5726816 1629360 5726560 1629224 5726312 1627320 5730360 -1629448 5726816 1629224 5726312 1627320 5730360 1629480 5726888 -1621632 5732520 1621752 5732672 1627320 5730360 1629224 5726312 -1629584 5726976 1629536 5726952 1627320 5730360 1629776 5726856 -1629224 5726312 1621496 5732416 1621632 5732520 1627320 5730360 -1621632 5732520 1621752 5732672 1627320 5730360 1621496 5732416 -1629224 5726312 1621496 5732416 1627320 5730360 1629448 5726816 -1629224 5726312 1621280 5723304 1621496 5732416 1627320 5730360 -1629224 5726312 1629224 5726184 1621280 5723304 1627320 5730360 -1629224 5726312 1621280 5723304 1627320 5730360 1629448 5726816 -1621280 5723304 1621328 5732344 1621496 5732416 1627320 5730360 -1621280 5723304 1621208 5723336 1621328 5732344 1627320 5730360 -1621208 5723336 1621200 5732344 1621328 5732344 1627320 5730360 -1621328 5732344 1621496 5732416 1627320 5730360 1621208 5723336 -1621280 5723304 1621208 5723336 1627320 5730360 1629224 5726312 -1621496 5732416 1621632 5732520 1627320 5730360 1621328 5732344 -1629536 5726952 1629480 5726888 1627320 5730360 1629584 5726976 -1628080 5737752 1627384 5730360 1627320 5730360 1628056 5737728 -1627320 5730360 1627384 5730360 1629776 5726856 1629584 5726976 -1629776 5726856 1627384 5730360 1628080 5737752 1629872 5726768 -1627320 5730360 1628032 5737712 1628056 5737728 1627384 5730360 -1628056 5737728 1628080 5737752 1627384 5730360 1628032 5737712 -1627320 5730360 1627952 5737688 1628032 5737712 1627384 5730360 -1628032 5737712 1628056 5737728 1627384 5730360 1627952 5737688 -1627320 5730360 1627384 5730360 1629584 5726976 1629536 5726952 -1627384 5730360 1629776 5726856 1629584 5726976 1629536 5726952 -1627384 5730360 1629536 5726952 1627320 5730360 1627952 5737688 -1627384 5730360 1628080 5737752 1629776 5726856 1629584 5726976 -1628080 5737752 1629776 5726856 1627384 5730360 1628056 5737728 -1627320 5730360 1627856 5737672 1627952 5737688 1627384 5730360 -1627320 5730360 1627776 5737664 1627856 5737672 1627384 5730360 -1627952 5737688 1628032 5737712 1627384 5730360 1627856 5737672 -1627320 5730360 1627776 5737664 1627384 5730360 1629536 5726952 -1627320 5730360 1625120 5738032 1627776 5737664 1627384 5730360 -1627856 5737672 1627952 5737688 1627384 5730360 1627776 5737664 -1627320 5730360 1627384 5730360 1629536 5726952 1629480 5726888 -1627320 5730360 1627384 5730360 1629480 5726888 1629448 5726816 -1627384 5730360 1629584 5726976 1629536 5726952 1629480 5726888 -1627320 5730360 1627776 5737664 1627384 5730360 1629480 5726888 -1629776 5726856 1627480 5730384 1628080 5737752 1629872 5726768 -1628080 5737752 1629928 5726696 1629872 5726768 1627480 5730384 -1627384 5730360 1627480 5730384 1629776 5726856 1629584 5726976 -1627384 5730360 1627480 5730384 1629584 5726976 1629536 5726952 -1627384 5730360 1627480 5730384 1629536 5726952 1629480 5726888 -1627480 5730384 1629776 5726856 1629584 5726976 1629536 5726952 -1627384 5730360 1628080 5737752 1627480 5730384 1629536 5726952 -1628080 5737752 1627480 5730384 1627384 5730360 1628056 5737728 -1627384 5730360 1628032 5737712 1628056 5737728 1627480 5730384 -1627384 5730360 1627952 5737688 1628032 5737712 1627480 5730384 -1628032 5737712 1628056 5737728 1627480 5730384 1627952 5737688 -1627384 5730360 1627856 5737672 1627952 5737688 1627480 5730384 -1627952 5737688 1628032 5737712 1627480 5730384 1627856 5737672 -1627480 5730384 1629536 5726952 1627384 5730360 1627856 5737672 -1628056 5737728 1628080 5737752 1627480 5730384 1628032 5737712 -1629776 5726856 1629584 5726976 1627480 5730384 1629872 5726768 -1627480 5730384 1628056 5737728 1628080 5737752 1629872 5726768 -1627384 5730360 1627776 5737664 1627856 5737672 1627480 5730384 -1627384 5730360 1627320 5730360 1627776 5737664 1627480 5730384 -1627856 5737672 1627952 5737688 1627480 5730384 1627776 5737664 -1627320 5730360 1625120 5738032 1627776 5737664 1627480 5730384 -1627384 5730360 1627320 5730360 1627480 5730384 1629536 5726952 -1627776 5737664 1627856 5737672 1627480 5730384 1627320 5730360 -1627480 5730384 1627584 5730416 1629872 5726768 1629776 5726856 -1629872 5726768 1627584 5730416 1628080 5737752 1629928 5726696 -1627584 5730416 1628080 5737752 1629872 5726768 1629776 5726856 -1627480 5730384 1627584 5730416 1629776 5726856 1629584 5726976 -1627584 5730416 1629872 5726768 1629776 5726856 1629584 5726976 -1627480 5730384 1627584 5730416 1629584 5726976 1629536 5726952 -1627480 5730384 1627584 5730416 1629536 5726952 1627384 5730360 -1627584 5730416 1629776 5726856 1629584 5726976 1629536 5726952 -1627480 5730384 1628080 5737752 1627584 5730416 1629536 5726952 -1628080 5737752 1627584 5730416 1627480 5730384 1628056 5737728 -1627480 5730384 1628032 5737712 1628056 5737728 1627584 5730416 -1627480 5730384 1627952 5737688 1628032 5737712 1627584 5730416 -1627480 5730384 1627856 5737672 1627952 5737688 1627584 5730416 -1627952 5737688 1628032 5737712 1627584 5730416 1627856 5737672 -1627480 5730384 1627776 5737664 1627856 5737672 1627584 5730416 -1627856 5737672 1627952 5737688 1627584 5730416 1627776 5737664 -1628032 5737712 1628056 5737728 1627584 5730416 1627952 5737688 -1627584 5730416 1629536 5726952 1627480 5730384 1627776 5737664 -1628056 5737728 1628080 5737752 1627584 5730416 1628032 5737712 -1628080 5737752 1629872 5726768 1627584 5730416 1628056 5737728 -1627480 5730384 1627320 5730360 1627776 5737664 1627584 5730416 -1627480 5730384 1627384 5730360 1627320 5730360 1627584 5730416 -1627776 5737664 1627856 5737672 1627584 5730416 1627320 5730360 -1627320 5730360 1625120 5738032 1627776 5737664 1627584 5730416 -1627480 5730384 1627320 5730360 1627584 5730416 1629536 5726952 -1629872 5726768 1627648 5730440 1628080 5737752 1629928 5726696 -1627584 5730416 1627648 5730440 1629872 5726768 1629776 5726856 -1627584 5730416 1627648 5730440 1629776 5726856 1629584 5726976 -1627648 5730440 1629872 5726768 1629776 5726856 1629584 5726976 -1627584 5730416 1628080 5737752 1627648 5730440 1629584 5726976 -1627584 5730416 1627648 5730440 1629584 5726976 1629536 5726952 -1627648 5730440 1629776 5726856 1629584 5726976 1629536 5726952 -1627584 5730416 1627648 5730440 1629536 5726952 1627480 5730384 -1627584 5730416 1628080 5737752 1627648 5730440 1629536 5726952 -1628080 5737752 1627648 5730440 1627584 5730416 1628056 5737728 -1628080 5737752 1629872 5726768 1627648 5730440 1628056 5737728 -1627648 5730440 1629536 5726952 1627584 5730416 1628056 5737728 -1627584 5730416 1628032 5737712 1628056 5737728 1627648 5730440 -1627584 5730416 1627952 5737688 1628032 5737712 1627648 5730440 -1627584 5730416 1627856 5737672 1627952 5737688 1627648 5730440 -1627584 5730416 1627776 5737664 1627856 5737672 1627648 5730440 -1627856 5737672 1627952 5737688 1627648 5730440 1627776 5737664 -1627584 5730416 1627320 5730360 1627776 5737664 1627648 5730440 -1627776 5737664 1627856 5737672 1627648 5730440 1627320 5730360 -1627320 5730360 1625120 5738032 1627776 5737664 1627648 5730440 -1627952 5737688 1628032 5737712 1627648 5730440 1627856 5737672 -1627584 5730416 1627320 5730360 1627648 5730440 1629536 5726952 -1628032 5737712 1628056 5737728 1627648 5730440 1627952 5737688 -1628056 5737728 1628080 5737752 1627648 5730440 1628032 5737712 -1627648 5730440 1628080 5737752 1629872 5726768 1629776 5726856 -1627584 5730416 1627480 5730384 1627320 5730360 1627648 5730440 -1628080 5737752 1627736 5730496 1627648 5730440 1628056 5737728 -1628080 5737752 1629872 5726768 1627736 5730496 1628056 5737728 -1629872 5726768 1627736 5730496 1628080 5737752 1629928 5726696 -1627648 5730440 1628032 5737712 1628056 5737728 1627736 5730496 -1628056 5737728 1628080 5737752 1627736 5730496 1628032 5737712 -1627648 5730440 1627952 5737688 1628032 5737712 1627736 5730496 -1627648 5730440 1627856 5737672 1627952 5737688 1627736 5730496 -1627648 5730440 1627776 5737664 1627856 5737672 1627736 5730496 -1627648 5730440 1627320 5730360 1627776 5737664 1627736 5730496 -1627776 5737664 1627856 5737672 1627736 5730496 1627320 5730360 -1627648 5730440 1627584 5730416 1627320 5730360 1627736 5730496 -1627320 5730360 1627776 5737664 1627736 5730496 1627584 5730416 -1627320 5730360 1625120 5738032 1627776 5737664 1627736 5730496 -1627856 5737672 1627952 5737688 1627736 5730496 1627776 5737664 -1627952 5737688 1628032 5737712 1627736 5730496 1627856 5737672 -1628032 5737712 1628056 5737728 1627736 5730496 1627952 5737688 -1627648 5730440 1627736 5730496 1629872 5726768 1629776 5726856 -1627736 5730496 1628080 5737752 1629872 5726768 1629776 5726856 -1627648 5730440 1627736 5730496 1629776 5726856 1629584 5726976 -1627648 5730440 1627736 5730496 1629584 5726976 1629536 5726952 -1627736 5730496 1629872 5726768 1629776 5726856 1629584 5726976 -1627736 5730496 1629584 5726976 1627648 5730440 1627584 5730416 -1627584 5730416 1627480 5730384 1627320 5730360 1627736 5730496 -1627480 5730384 1627384 5730360 1627320 5730360 1627736 5730496 -1627584 5730416 1627480 5730384 1627736 5730496 1627648 5730440 -1627320 5730360 1627776 5737664 1627736 5730496 1627480 5730384 -1627736 5730496 1627752 5730520 1629872 5726768 1629776 5726856 -1627736 5730496 1628080 5737752 1627752 5730520 1629776 5726856 -1628080 5737752 1627752 5730520 1627736 5730496 1628056 5737728 -1627736 5730496 1628032 5737712 1628056 5737728 1627752 5730520 -1627752 5730520 1629776 5726856 1627736 5730496 1628032 5737712 -1628056 5737728 1628080 5737752 1627752 5730520 1628032 5737712 -1627752 5730520 1628080 5737752 1629872 5726768 1629776 5726856 -1628080 5737752 1629872 5726768 1627752 5730520 1628056 5737728 -1629872 5726768 1627752 5730520 1628080 5737752 1629928 5726696 -1627736 5730496 1627952 5737688 1628032 5737712 1627752 5730520 -1628032 5737712 1628056 5737728 1627752 5730520 1627952 5737688 -1627736 5730496 1627952 5737688 1627752 5730520 1629776 5726856 -1627736 5730496 1627856 5737672 1627952 5737688 1627752 5730520 -1627736 5730496 1627856 5737672 1627752 5730520 1629776 5726856 -1627736 5730496 1627776 5737664 1627856 5737672 1627752 5730520 -1627736 5730496 1627776 5737664 1627752 5730520 1629776 5726856 -1627736 5730496 1627320 5730360 1627776 5737664 1627752 5730520 -1627736 5730496 1627320 5730360 1627752 5730520 1629776 5726856 -1627736 5730496 1627480 5730384 1627320 5730360 1627752 5730520 -1627480 5730384 1627384 5730360 1627320 5730360 1627752 5730520 -1627736 5730496 1627480 5730384 1627752 5730520 1629776 5726856 -1627320 5730360 1627776 5737664 1627752 5730520 1627480 5730384 -1627320 5730360 1625120 5738032 1627776 5737664 1627752 5730520 -1627776 5737664 1627856 5737672 1627752 5730520 1627320 5730360 -1627856 5737672 1627952 5737688 1627752 5730520 1627776 5737664 -1627952 5737688 1628032 5737712 1627752 5730520 1627856 5737672 -1627736 5730496 1627752 5730520 1629776 5726856 1629584 5726976 -1627752 5730520 1629872 5726768 1629776 5726856 1629584 5726976 -1627736 5730496 1627480 5730384 1627752 5730520 1629584 5726976 -1627736 5730496 1627752 5730520 1629584 5726976 1627648 5730440 -1627736 5730496 1627584 5730416 1627480 5730384 1627752 5730520 -1627736 5730496 1627584 5730416 1627752 5730520 1629584 5726976 -1627736 5730496 1627648 5730440 1627584 5730416 1627752 5730520 -1627736 5730496 1627648 5730440 1627752 5730520 1629584 5726976 -1627480 5730384 1627320 5730360 1627752 5730520 1627584 5730416 -1627584 5730416 1627480 5730384 1627752 5730520 1627648 5730440 -1627320 5730360 1627744 5730544 1627752 5730520 1627480 5730384 -1627320 5730360 1627744 5730544 1627480 5730384 1627384 5730360 -1627744 5730544 1627776 5737664 1627752 5730520 1627480 5730384 -1627320 5730360 1627776 5737664 1627744 5730544 1627480 5730384 -1627752 5730520 1627584 5730416 1627480 5730384 1627744 5730544 -1627752 5730520 1627584 5730416 1627744 5730544 1627776 5737664 -1627480 5730384 1627320 5730360 1627744 5730544 1627584 5730416 -1627776 5737664 1627744 5730544 1627320 5730360 1625120 5738032 -1627752 5730520 1627744 5730544 1627776 5737664 1627856 5737672 -1627752 5730520 1627584 5730416 1627744 5730544 1627856 5737672 -1627744 5730544 1627320 5730360 1627776 5737664 1627856 5737672 -1627752 5730520 1627744 5730544 1627856 5737672 1627952 5737688 -1627752 5730520 1627584 5730416 1627744 5730544 1627952 5737688 -1627744 5730544 1627776 5737664 1627856 5737672 1627952 5737688 -1627752 5730520 1627744 5730544 1627952 5737688 1628032 5737712 -1627752 5730520 1627744 5730544 1628032 5737712 1628056 5737728 -1627752 5730520 1627744 5730544 1628056 5737728 1628080 5737752 -1627744 5730544 1628032 5737712 1628056 5737728 1628080 5737752 -1627752 5730520 1627584 5730416 1627744 5730544 1628080 5737752 -1627752 5730520 1627744 5730544 1628080 5737752 1629872 5726768 -1627744 5730544 1627856 5737672 1627952 5737688 1628032 5737712 -1627744 5730544 1627952 5737688 1628032 5737712 1628056 5737728 -1627752 5730520 1627648 5730440 1627584 5730416 1627744 5730544 -1627752 5730520 1627648 5730440 1627744 5730544 1628080 5737752 -1627752 5730520 1627736 5730496 1627648 5730440 1627744 5730544 -1627752 5730520 1627736 5730496 1627744 5730544 1628080 5737752 -1627584 5730416 1627480 5730384 1627744 5730544 1627648 5730440 -1627648 5730440 1627584 5730416 1627744 5730544 1627736 5730496 -1627744 5730544 1627720 5730568 1627776 5737664 1627856 5737672 -1627744 5730544 1627320 5730360 1627720 5730568 1627856 5737672 -1627320 5730360 1627720 5730568 1627744 5730544 1627480 5730384 -1627320 5730360 1627776 5737664 1627720 5730568 1627480 5730384 -1627320 5730360 1627720 5730568 1627480 5730384 1627384 5730360 -1627720 5730568 1627856 5737672 1627744 5730544 1627480 5730384 -1627720 5730568 1627320 5730360 1627776 5737664 1627856 5737672 -1627744 5730544 1627584 5730416 1627480 5730384 1627720 5730568 -1627744 5730544 1627584 5730416 1627720 5730568 1627856 5737672 -1627480 5730384 1627320 5730360 1627720 5730568 1627584 5730416 -1627744 5730544 1627648 5730440 1627584 5730416 1627720 5730568 -1627744 5730544 1627648 5730440 1627720 5730568 1627856 5737672 -1627584 5730416 1627480 5730384 1627720 5730568 1627648 5730440 -1627776 5737664 1627720 5730568 1627320 5730360 1625120 5738032 -1627720 5730568 1627480 5730384 1627320 5730360 1625120 5738032 -1627776 5737664 1627856 5737672 1627720 5730568 1625120 5738032 -1627320 5730360 1621808 5733136 1625120 5738032 1627720 5730568 -1627320 5730360 1621808 5733136 1627720 5730568 1627480 5730384 -1625120 5738032 1627776 5737664 1627720 5730568 1621808 5733136 -1627744 5730544 1627720 5730568 1627856 5737672 1627952 5737688 -1627720 5730568 1627776 5737664 1627856 5737672 1627952 5737688 -1627744 5730544 1627648 5730440 1627720 5730568 1627952 5737688 -1627320 5730360 1621800 5732912 1621808 5733136 1627720 5730568 -1627744 5730544 1627720 5730568 1627952 5737688 1628032 5737712 -1627744 5730544 1627648 5730440 1627720 5730568 1628032 5737712 -1627720 5730568 1627856 5737672 1627952 5737688 1628032 5737712 -1627744 5730544 1627720 5730568 1628032 5737712 1628056 5737728 -1627744 5730544 1627720 5730568 1628056 5737728 1628080 5737752 -1627744 5730544 1627648 5730440 1627720 5730568 1628056 5737728 -1627720 5730568 1627952 5737688 1628032 5737712 1628056 5737728 -1627776 5737664 1627720 5730568 1625120 5738032 1625488 5738112 -1621808 5733136 1624904 5738000 1625120 5738032 1627720 5730568 -1627744 5730544 1627736 5730496 1627648 5730440 1627720 5730568 -1627744 5730544 1627736 5730496 1627720 5730568 1628056 5737728 -1627744 5730544 1627752 5730520 1627736 5730496 1627720 5730568 -1627648 5730440 1627584 5730416 1627720 5730568 1627736 5730496 -1621808 5733136 1627656 5730600 1627720 5730568 1627320 5730360 -1627656 5730600 1625120 5738032 1627720 5730568 1627320 5730360 -1627720 5730568 1627480 5730384 1627320 5730360 1627656 5730600 -1627720 5730568 1627480 5730384 1627656 5730600 1625120 5738032 -1621808 5733136 1625120 5738032 1627656 5730600 1627320 5730360 -1627480 5730384 1627384 5730360 1627320 5730360 1627656 5730600 -1627480 5730384 1627384 5730360 1627656 5730600 1627720 5730568 -1627720 5730568 1627584 5730416 1627480 5730384 1627656 5730600 -1627720 5730568 1627584 5730416 1627656 5730600 1625120 5738032 -1627480 5730384 1627384 5730360 1627656 5730600 1627584 5730416 -1627320 5730360 1621808 5733136 1627656 5730600 1627384 5730360 -1627720 5730568 1627648 5730440 1627584 5730416 1627656 5730600 -1627720 5730568 1627648 5730440 1627656 5730600 1625120 5738032 -1627584 5730416 1627480 5730384 1627656 5730600 1627648 5730440 -1627720 5730568 1627736 5730496 1627648 5730440 1627656 5730600 -1627720 5730568 1627656 5730600 1625120 5738032 1627776 5737664 -1627720 5730568 1627648 5730440 1627656 5730600 1627776 5737664 -1627656 5730600 1621808 5733136 1625120 5738032 1627776 5737664 -1627720 5730568 1627656 5730600 1627776 5737664 1627856 5737672 -1627720 5730568 1627648 5730440 1627656 5730600 1627856 5737672 -1627720 5730568 1627656 5730600 1627856 5737672 1627952 5737688 -1627720 5730568 1627648 5730440 1627656 5730600 1627952 5737688 -1627656 5730600 1627776 5737664 1627856 5737672 1627952 5737688 -1627656 5730600 1625120 5738032 1627776 5737664 1627856 5737672 -1627720 5730568 1627656 5730600 1627952 5737688 1628032 5737712 -1627720 5730568 1627648 5730440 1627656 5730600 1628032 5737712 -1627656 5730600 1627856 5737672 1627952 5737688 1628032 5737712 -1621808 5733136 1627656 5730600 1627320 5730360 1621800 5732912 -1627720 5730568 1627656 5730600 1628032 5737712 1628056 5737728 -1625120 5738032 1625488 5738112 1627776 5737664 1627656 5730600 -1625120 5738032 1627656 5730600 1621808 5733136 1624904 5738000 -1627656 5730600 1627632 5730600 1621808 5733136 1625120 5738032 -1627656 5730600 1627632 5730600 1625120 5738032 1627776 5737664 -1627656 5730600 1627320 5730360 1627632 5730600 1627776 5737664 -1627632 5730600 1621808 5733136 1625120 5738032 1627776 5737664 -1627632 5730600 1627320 5730360 1621808 5733136 1625120 5738032 -1627320 5730360 1627632 5730600 1627656 5730600 1627384 5730360 -1627632 5730600 1627776 5737664 1627656 5730600 1627384 5730360 -1627320 5730360 1621808 5733136 1627632 5730600 1627384 5730360 -1627656 5730600 1627480 5730384 1627384 5730360 1627632 5730600 -1627656 5730600 1627584 5730416 1627480 5730384 1627632 5730600 -1627656 5730600 1627584 5730416 1627632 5730600 1627776 5737664 -1627480 5730384 1627384 5730360 1627632 5730600 1627584 5730416 -1627656 5730600 1627648 5730440 1627584 5730416 1627632 5730600 -1627584 5730416 1627480 5730384 1627632 5730600 1627648 5730440 -1627656 5730600 1627648 5730440 1627632 5730600 1627776 5737664 -1627384 5730360 1627320 5730360 1627632 5730600 1627480 5730384 -1627656 5730600 1627720 5730568 1627648 5730440 1627632 5730600 -1627656 5730600 1627632 5730600 1627776 5737664 1627856 5737672 -1621808 5733136 1627632 5730600 1627320 5730360 1621800 5732912 -1625120 5738032 1625488 5738112 1627776 5737664 1627632 5730600 -1621808 5733136 1624904 5738000 1625120 5738032 1627632 5730600 -1627632 5730600 1627560 5730576 1621808 5733136 1625120 5738032 -1627632 5730600 1627560 5730576 1625120 5738032 1627776 5737664 -1627632 5730600 1627560 5730576 1627776 5737664 1627656 5730600 -1627560 5730576 1621808 5733136 1625120 5738032 1627776 5737664 -1627632 5730600 1627320 5730360 1627560 5730576 1627776 5737664 -1627320 5730360 1627560 5730576 1627632 5730600 1627384 5730360 -1627560 5730576 1627776 5737664 1627632 5730600 1627384 5730360 -1627560 5730576 1627320 5730360 1621808 5733136 1625120 5738032 -1627320 5730360 1621808 5733136 1627560 5730576 1627384 5730360 -1627632 5730600 1627480 5730384 1627384 5730360 1627560 5730576 -1627632 5730600 1627480 5730384 1627560 5730576 1627776 5737664 -1627384 5730360 1627320 5730360 1627560 5730576 1627480 5730384 -1627632 5730600 1627584 5730416 1627480 5730384 1627560 5730576 -1627632 5730600 1627648 5730440 1627584 5730416 1627560 5730576 -1627632 5730600 1627648 5730440 1627560 5730576 1627776 5737664 -1627584 5730416 1627480 5730384 1627560 5730576 1627648 5730440 -1627632 5730600 1627656 5730600 1627648 5730440 1627560 5730576 -1627480 5730384 1627384 5730360 1627560 5730576 1627584 5730416 -1621808 5733136 1627560 5730576 1627320 5730360 1621800 5732912 -1625120 5738032 1625488 5738112 1627776 5737664 1627560 5730576 -1621808 5733136 1624904 5738000 1625120 5738032 1627560 5730576 -1627560 5730576 1627520 5730552 1621808 5733136 1625120 5738032 -1627320 5730360 1627520 5730552 1627560 5730576 1627384 5730360 -1627320 5730360 1621808 5733136 1627520 5730552 1627384 5730360 -1627560 5730576 1627480 5730384 1627384 5730360 1627520 5730552 -1627520 5730552 1621808 5733136 1627560 5730576 1627480 5730384 -1627384 5730360 1627320 5730360 1627520 5730552 1627480 5730384 -1627560 5730576 1627584 5730416 1627480 5730384 1627520 5730552 -1627480 5730384 1627384 5730360 1627520 5730552 1627584 5730416 -1627560 5730576 1627584 5730416 1627520 5730552 1621808 5733136 -1627560 5730576 1627648 5730440 1627584 5730416 1627520 5730552 -1621808 5733136 1627520 5730552 1627320 5730360 1621800 5732912 -1621808 5733136 1627560 5730576 1627520 5730552 1621800 5732912 -1627520 5730552 1627384 5730360 1627320 5730360 1621800 5732912 -1627320 5730360 1621776 5732752 1621800 5732912 1627520 5730552 -1627320 5730360 1627440 5730528 1627520 5730552 1627384 5730360 -1627440 5730528 1621800 5732912 1627520 5730552 1627384 5730360 -1627320 5730360 1621800 5732912 1627440 5730528 1627384 5730360 -1627520 5730552 1627480 5730384 1627384 5730360 1627440 5730528 -1627520 5730552 1627480 5730384 1627440 5730528 1621800 5732912 -1627384 5730360 1627320 5730360 1627440 5730528 1627480 5730384 -1627520 5730552 1627584 5730416 1627480 5730384 1627440 5730528 -1621800 5732912 1627440 5730528 1627320 5730360 1621776 5732752 -1621800 5732912 1627520 5730552 1627440 5730528 1621776 5732752 -1627440 5730528 1627384 5730360 1627320 5730360 1621776 5732752 -1627320 5730360 1621752 5732672 1621776 5732752 1627440 5730528 -1627520 5730552 1627440 5730528 1621800 5732912 1621808 5733136 -1627520 5730552 1627440 5730528 1621808 5733136 1627560 5730576 -1627520 5730552 1627480 5730384 1627440 5730528 1627560 5730576 -1627440 5730528 1621776 5732752 1621800 5732912 1621808 5733136 -1621808 5733136 1625120 5738032 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1625120 5738032 -1625120 5738032 1627776 5737664 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1627776 5737664 -1627776 5737664 1627632 5730600 1627560 5730576 1627440 5730528 -1625120 5738032 1627776 5737664 1627440 5730528 1621808 5733136 -1627440 5730528 1621800 5732912 1621808 5733136 1625120 5738032 -1625120 5738032 1625488 5738112 1627776 5737664 1627440 5730528 -1621808 5733136 1624904 5738000 1625120 5738032 1627440 5730528 -1627320 5730360 1627360 5730472 1627440 5730528 1627384 5730360 -1627440 5730528 1627480 5730384 1627384 5730360 1627360 5730472 -1627360 5730472 1621776 5732752 1627440 5730528 1627480 5730384 -1627384 5730360 1627320 5730360 1627360 5730472 1627480 5730384 -1627320 5730360 1621776 5732752 1627360 5730472 1627384 5730360 -1621776 5732752 1627360 5730472 1627320 5730360 1621752 5732672 -1621776 5732752 1627440 5730528 1627360 5730472 1621752 5732672 -1627360 5730472 1627384 5730360 1627320 5730360 1621752 5732672 -1627320 5730360 1621632 5732520 1621752 5732672 1627360 5730472 -1627440 5730528 1627520 5730552 1627480 5730384 1627360 5730472 -1627440 5730528 1627360 5730472 1621776 5732752 1621800 5732912 -1627440 5730528 1627360 5730472 1621800 5732912 1621808 5733136 -1627440 5730528 1627480 5730384 1627360 5730472 1621808 5733136 -1627360 5730472 1621752 5732672 1621776 5732752 1621800 5732912 -1627360 5730472 1621776 5732752 1621800 5732912 1621808 5733136 -1627440 5730528 1627360 5730472 1621808 5733136 1625120 5738032 -1627320 5730360 1627328 5730448 1627360 5730472 1627384 5730360 -1627360 5730472 1627480 5730384 1627384 5730360 1627328 5730448 -1627328 5730448 1621752 5732672 1627360 5730472 1627384 5730360 -1627320 5730360 1621752 5732672 1627328 5730448 1627384 5730360 -1627360 5730472 1627328 5730448 1621752 5732672 1621776 5732752 -1627360 5730472 1627328 5730448 1621776 5732752 1621800 5732912 -1627360 5730472 1627384 5730360 1627328 5730448 1621800 5732912 -1627328 5730448 1627320 5730360 1621752 5732672 1621776 5732752 -1627328 5730448 1621752 5732672 1621776 5732752 1621800 5732912 -1621752 5732672 1627328 5730448 1627320 5730360 1621632 5732520 -1627360 5730472 1627328 5730448 1621800 5732912 1621808 5733136 -1627360 5730472 1627328 5730448 1621808 5733136 1627440 5730528 -1627360 5730472 1627384 5730360 1627328 5730448 1621808 5733136 -1627328 5730448 1621776 5732752 1621800 5732912 1621808 5733136 -1627328 5730448 1627296 5730408 1621752 5732672 1621776 5732752 -1627320 5730360 1627296 5730408 1627328 5730448 1627384 5730360 -1627328 5730448 1627320 5730360 1627296 5730408 1621776 5732752 -1627296 5730408 1627320 5730360 1621752 5732672 1621776 5732752 -1627328 5730448 1627296 5730408 1621776 5732752 1621800 5732912 -1627296 5730408 1621752 5732672 1621776 5732752 1621800 5732912 -1627328 5730448 1627296 5730408 1621800 5732912 1621808 5733136 -1627328 5730448 1627320 5730360 1627296 5730408 1621800 5732912 -1621752 5732672 1627296 5730408 1627320 5730360 1621632 5732520 -1621752 5732672 1621776 5732752 1627296 5730408 1621632 5732520 -1627296 5730408 1627328 5730448 1627320 5730360 1621632 5732520 -1627320 5730360 1621496 5732416 1621632 5732520 1627296 5730408 -1627320 5730360 1621496 5732416 1627296 5730408 1627328 5730448 -1621632 5732520 1621752 5732672 1627296 5730408 1621496 5732416 -1627320 5730360 1621328 5732344 1621496 5732416 1627296 5730408 -1627320 5730360 1627288 5730392 1627296 5730408 1627328 5730448 -1627296 5730408 1627288 5730392 1621496 5732416 1621632 5732520 -1627296 5730408 1627320 5730360 1627288 5730392 1621632 5732520 -1627288 5730392 1627320 5730360 1621496 5732416 1621632 5732520 -1627296 5730408 1627288 5730392 1621632 5732520 1621752 5732672 -1627296 5730408 1627288 5730392 1621752 5732672 1621776 5732752 -1627296 5730408 1627320 5730360 1627288 5730392 1621752 5732672 -1627288 5730392 1621496 5732416 1621632 5732520 1621752 5732672 -1621496 5732416 1627288 5730392 1627320 5730360 1621328 5732344 -1621496 5732416 1621632 5732520 1627288 5730392 1621328 5732344 -1627288 5730392 1627296 5730408 1627320 5730360 1621328 5732344 -1627320 5730360 1621208 5723336 1621328 5732344 1627288 5730392 -1627320 5730360 1621208 5723336 1627288 5730392 1627296 5730408 -1621208 5723336 1621200 5732344 1621328 5732344 1627288 5730392 -1627320 5730360 1621280 5723304 1621208 5723336 1627288 5730392 -1627320 5730360 1621280 5723304 1627288 5730392 1627296 5730408 -1621208 5723336 1621328 5732344 1627288 5730392 1621280 5723304 -1627320 5730360 1629224 5726312 1621280 5723304 1627288 5730392 -1621328 5732344 1621496 5732416 1627288 5730392 1621208 5723336 -1627296 5730408 1627328 5730448 1627320 5730360 1627296 5730384 -1627288 5730392 1627296 5730384 1621280 5723304 1621208 5723336 -1627320 5730360 1629224 5726312 1621280 5723304 1627296 5730384 -1627656 5730600 1627856 5736056 1627952 5737688 1628032 5737712 -1627856 5737672 1627856 5736056 1627656 5730600 1627776 5737664 -1627656 5730600 1627632 5730600 1627776 5737664 1627856 5736056 -1627632 5730600 1627560 5730576 1627776 5737664 1627856 5736056 -1627560 5730576 1627440 5730528 1627776 5737664 1627856 5736056 -1627560 5730576 1627520 5730552 1627440 5730528 1627856 5736056 -1627560 5730576 1627440 5730528 1627856 5736056 1627632 5730600 -1627440 5730528 1625120 5738032 1627776 5737664 1627856 5736056 -1627440 5730528 1625120 5738032 1627856 5736056 1627560 5730576 -1627440 5730528 1621808 5733136 1625120 5738032 1627856 5736056 -1627440 5730528 1621808 5733136 1627856 5736056 1627560 5730576 -1625120 5738032 1627776 5737664 1627856 5736056 1621808 5733136 -1627776 5737664 1627856 5737672 1627856 5736056 1625120 5738032 -1627632 5730600 1627560 5730576 1627856 5736056 1627656 5730600 -1627656 5730600 1627856 5736056 1628032 5737712 1627720 5730568 -1627856 5736056 1627952 5737688 1628032 5737712 1627720 5730568 -1627440 5730528 1627360 5730472 1621808 5733136 1627856 5736056 -1628032 5737712 1628056 5737728 1627720 5730568 1627856 5736056 -1628032 5737712 1628056 5737728 1627856 5736056 1627952 5737688 -1627720 5730568 1627656 5730600 1627856 5736056 1628056 5737728 -1628056 5737728 1627744 5730544 1627720 5730568 1627856 5736056 -1628056 5737728 1628080 5737752 1627744 5730544 1627856 5736056 -1628080 5737752 1627752 5730520 1627744 5730544 1627856 5736056 -1628080 5737752 1627752 5730520 1627856 5736056 1628056 5737728 -1628080 5737752 1629872 5726768 1627752 5730520 1627856 5736056 -1628080 5737752 1629872 5726768 1627856 5736056 1628056 5737728 -1627752 5730520 1627744 5730544 1627856 5736056 1629872 5726768 -1629872 5726768 1629776 5726856 1627752 5730520 1627856 5736056 -1628080 5737752 1629928 5726696 1629872 5726768 1627856 5736056 -1628080 5737752 1628096 5737800 1629928 5726696 1627856 5736056 -1628096 5737800 1630864 5743768 1629928 5726696 1627856 5736056 -1630864 5743768 1630952 5743928 1629928 5726696 1627856 5736056 -1628096 5737800 1630632 5743536 1630864 5743768 1627856 5736056 -1628096 5737800 1630864 5743768 1627856 5736056 1628080 5737752 -1628080 5737752 1628096 5737800 1627856 5736056 1628056 5737728 -1629872 5726768 1627752 5730520 1627856 5736056 1629928 5726696 -1629928 5726696 1629872 5726768 1627856 5736056 1630864 5743768 -1627720 5730568 1627656 5730600 1627856 5736056 1627744 5730544 -1628056 5737728 1628080 5737752 1627856 5736056 1628032 5737712 -1627744 5730544 1627720 5730568 1627856 5736056 1627752 5730520 -1625120 5738032 1625488 5738112 1627776 5737664 1627856 5736056 -1625120 5738032 1625488 5738112 1627856 5736056 1621808 5733136 -1627776 5737664 1627856 5737672 1627856 5736056 1625488 5738112 -1625488 5738112 1625656 5738160 1627776 5737664 1627856 5736056 -1627776 5737664 1627856 5737672 1627856 5736056 1625656 5738160 -1625488 5738112 1625656 5738160 1627856 5736056 1625120 5738032 -1621808 5733136 1624904 5738000 1625120 5738032 1627856 5736056 -1625120 5738032 1625488 5738112 1627856 5736056 1624904 5738000 -1621808 5733136 1624904 5738000 1627856 5736056 1627440 5730528 -1625656 5738160 1625760 5738184 1627776 5737664 1627856 5736056 -1627776 5737664 1627856 5737672 1627856 5736056 1625760 5738184 -1625760 5738184 1627736 5737704 1627776 5737664 1627856 5736056 -1627776 5737664 1627856 5737672 1627856 5736056 1627736 5737704 -1625656 5738160 1625760 5738184 1627856 5736056 1625488 5738112 -1625760 5738184 1627736 5737704 1627856 5736056 1625656 5738160 -1625760 5738184 1626040 5738272 1627736 5737704 1627856 5736056 -1626040 5738272 1626136 5738328 1627736 5737704 1627856 5736056 -1627736 5737704 1627776 5737664 1627856 5736056 1626040 5738272 -1625760 5738184 1626040 5738272 1627856 5736056 1625656 5738160 -1627656 5730600 1627632 5730600 1627856 5736056 1627720 5730568 -1627856 5736056 1627856 5737672 1627952 5737688 1628032 5737712 -1627856 5737672 1627952 5737688 1627856 5736056 1627776 5737664 -1621808 5733136 1621784 5733192 1624904 5738000 1627856 5736056 -1621808 5733136 1621784 5733192 1627856 5736056 1627440 5730528 -1624904 5738000 1625120 5738032 1627856 5736056 1621784 5733192 -1621784 5733192 1621712 5733232 1624904 5738000 1627856 5736056 -1629928 5726696 1628256 5736240 1630864 5743768 1630952 5743928 -1630864 5743768 1628256 5736240 1627856 5736056 1628096 5737800 -1630864 5743768 1629928 5726696 1628256 5736240 1628096 5737800 -1630864 5743768 1628256 5736240 1628096 5737800 1630632 5743536 -1630864 5743768 1629928 5726696 1628256 5736240 1630632 5743536 -1627856 5736056 1628080 5737752 1628096 5737800 1628256 5736240 -1628256 5736240 1628080 5737752 1628096 5737800 1630632 5743536 -1627856 5736056 1628056 5737728 1628080 5737752 1628256 5736240 -1628080 5737752 1628096 5737800 1628256 5736240 1628056 5737728 -1628096 5737800 1628096 5737824 1630632 5743536 1628256 5736240 -1627856 5736056 1628256 5736240 1629928 5726696 1629872 5726768 -1628256 5736240 1630864 5743768 1629928 5726696 1629872 5726768 -1627856 5736056 1628256 5736240 1629872 5726768 1627752 5730520 -1627856 5736056 1628256 5736240 1627752 5730520 1627744 5730544 -1629872 5726768 1629776 5726856 1627752 5730520 1628256 5736240 -1628256 5736240 1629872 5726768 1627752 5730520 1627744 5730544 -1628256 5736240 1629928 5726696 1629872 5726768 1627752 5730520 -1627856 5736056 1628032 5737712 1628056 5737728 1628256 5736240 -1628056 5737728 1628080 5737752 1628256 5736240 1628032 5737712 -1627856 5736056 1627952 5737688 1628032 5737712 1628256 5736240 -1628032 5737712 1628056 5737728 1628256 5736240 1627952 5737688 -1627856 5736056 1628256 5736240 1627744 5730544 1627720 5730568 -1628256 5736240 1627752 5730520 1627744 5730544 1627720 5730568 -1627856 5736056 1628256 5736240 1627720 5730568 1627656 5730600 -1627856 5736056 1627856 5737672 1627952 5737688 1628256 5736240 -1627952 5737688 1628032 5737712 1628256 5736240 1627856 5737672 -1628256 5736240 1627720 5730568 1627856 5736056 1627856 5737672 -1627856 5736056 1627776 5737664 1627856 5737672 1628256 5736240 -1627856 5736056 1627736 5737704 1627776 5737664 1628256 5736240 -1627856 5737672 1627952 5737688 1628256 5736240 1627776 5737664 -1627856 5736056 1627776 5737664 1628256 5736240 1627720 5730568 -1628256 5736240 1628488 5736312 1629928 5726696 1629872 5726768 -1628256 5736240 1630864 5743768 1628488 5736312 1629872 5726768 -1630864 5743768 1628488 5736312 1628256 5736240 1630632 5743536 -1628488 5736312 1629872 5726768 1628256 5736240 1630632 5743536 -1629928 5726696 1628488 5736312 1630864 5743768 1630952 5743928 -1628256 5736240 1628096 5737800 1630632 5743536 1628488 5736312 -1628256 5736240 1628096 5737800 1628488 5736312 1629872 5726768 -1630632 5743536 1630864 5743768 1628488 5736312 1628096 5737800 -1628256 5736240 1628080 5737752 1628096 5737800 1628488 5736312 -1628256 5736240 1628080 5737752 1628488 5736312 1629872 5726768 -1628096 5737800 1630632 5743536 1628488 5736312 1628080 5737752 -1628256 5736240 1628056 5737728 1628080 5737752 1628488 5736312 -1628256 5736240 1628056 5737728 1628488 5736312 1629872 5726768 -1628080 5737752 1628096 5737800 1628488 5736312 1628056 5737728 -1628256 5736240 1628032 5737712 1628056 5737728 1628488 5736312 -1628256 5736240 1628032 5737712 1628488 5736312 1629872 5726768 -1628056 5737728 1628080 5737752 1628488 5736312 1628032 5737712 -1628096 5737800 1628096 5737824 1630632 5743536 1628488 5736312 -1630632 5743536 1630864 5743768 1628488 5736312 1628096 5737824 -1628096 5737800 1628096 5737824 1628488 5736312 1628080 5737752 -1628096 5737824 1630424 5743368 1630632 5743536 1628488 5736312 -1630632 5743536 1630864 5743768 1628488 5736312 1630424 5743368 -1628096 5737824 1630424 5743368 1628488 5736312 1628096 5737800 -1628256 5736240 1628488 5736312 1629872 5726768 1627752 5730520 -1628488 5736312 1629928 5726696 1629872 5726768 1627752 5730520 -1628256 5736240 1628032 5737712 1628488 5736312 1627752 5730520 -1629872 5726768 1629776 5726856 1627752 5730520 1628488 5736312 -1628256 5736240 1628488 5736312 1627752 5730520 1627744 5730544 -1628256 5736240 1628032 5737712 1628488 5736312 1627744 5730544 -1628256 5736240 1628488 5736312 1627744 5730544 1627720 5730568 -1628256 5736240 1628032 5737712 1628488 5736312 1627720 5730568 -1628488 5736312 1627752 5730520 1627744 5730544 1627720 5730568 -1628488 5736312 1629872 5726768 1627752 5730520 1627744 5730544 -1628096 5737824 1628160 5739568 1630424 5743368 1628488 5736312 -1630424 5743368 1630632 5743536 1628488 5736312 1628160 5739568 -1628096 5737824 1628160 5739568 1628488 5736312 1628096 5737800 -1628160 5739568 1628176 5739664 1630424 5743368 1628488 5736312 -1628096 5737824 1628072 5737856 1628160 5739568 1628488 5736312 -1628256 5736240 1627952 5737688 1628032 5737712 1628488 5736312 -1628256 5736240 1627952 5737688 1628488 5736312 1627720 5730568 -1628032 5737712 1628056 5737728 1628488 5736312 1627952 5737688 -1628256 5736240 1627856 5737672 1627952 5737688 1628488 5736312 -1628256 5736240 1628488 5736312 1627720 5730568 1627856 5736056 -1628256 5736240 1627952 5737688 1628488 5736312 1627856 5736056 -1628488 5736312 1627744 5730544 1627720 5730568 1627856 5736056 -1627720 5730568 1627656 5730600 1627856 5736056 1628488 5736312 -1628488 5736312 1630864 5743768 1629928 5726696 1629872 5726768 -1630864 5743768 1629928 5726696 1628488 5736312 1630632 5743536 -1629928 5726696 1629008 5736448 1630864 5743768 1630952 5743928 -1629928 5726696 1628488 5736312 1629008 5736448 1630952 5743928 -1629008 5736448 1628488 5736312 1630864 5743768 1630952 5743928 -1629928 5726696 1629008 5736448 1630952 5743928 1631312 5744824 -1628488 5736312 1629008 5736448 1629928 5726696 1629872 5726768 -1628488 5736312 1629008 5736448 1629872 5726768 1627752 5730520 -1629872 5726768 1629776 5726856 1627752 5730520 1629008 5736448 -1629008 5736448 1630952 5743928 1629928 5726696 1629872 5726768 -1628488 5736312 1629008 5736448 1627752 5730520 1627744 5730544 -1629008 5736448 1629872 5726768 1627752 5730520 1627744 5730544 -1628488 5736312 1629008 5736448 1627744 5730544 1627720 5730568 -1628488 5736312 1629008 5736448 1627720 5730568 1627856 5736056 -1629008 5736448 1627752 5730520 1627744 5730544 1627720 5730568 -1629008 5736448 1629928 5726696 1629872 5726768 1627752 5730520 -1628488 5736312 1630864 5743768 1629008 5736448 1627720 5730568 -1630864 5743768 1629008 5736448 1628488 5736312 1630632 5743536 -1628488 5736312 1630424 5743368 1630632 5743536 1629008 5736448 -1628488 5736312 1628160 5739568 1630424 5743368 1629008 5736448 -1630424 5743368 1630632 5743536 1629008 5736448 1628160 5739568 -1630864 5743768 1630952 5743928 1629008 5736448 1630632 5743536 -1628160 5739568 1628176 5739664 1630424 5743368 1629008 5736448 -1630424 5743368 1630632 5743536 1629008 5736448 1628176 5739664 -1628160 5739568 1628176 5739664 1629008 5736448 1628488 5736312 -1628176 5739664 1629784 5742896 1630424 5743368 1629008 5736448 -1628488 5736312 1628096 5737824 1628160 5739568 1629008 5736448 -1628160 5739568 1628176 5739664 1629008 5736448 1628096 5737824 -1628488 5736312 1628096 5737800 1628096 5737824 1629008 5736448 -1628488 5736312 1628080 5737752 1628096 5737800 1629008 5736448 -1628488 5736312 1628056 5737728 1628080 5737752 1629008 5736448 -1628080 5737752 1628096 5737800 1629008 5736448 1628056 5737728 -1628488 5736312 1628032 5737712 1628056 5737728 1629008 5736448 -1628096 5737800 1628096 5737824 1629008 5736448 1628080 5737752 -1628096 5737824 1628160 5739568 1629008 5736448 1628096 5737800 -1628096 5737824 1628072 5737856 1628160 5739568 1629008 5736448 -1629008 5736448 1627720 5730568 1628488 5736312 1628056 5737728 -1630632 5743536 1630864 5743768 1629008 5736448 1630424 5743368 -1630952 5743928 1629288 5736552 1629008 5736448 1630864 5743768 -1629008 5736448 1629288 5736552 1629928 5726696 1629872 5726768 -1629288 5736552 1629872 5726768 1629008 5736448 1630864 5743768 -1629008 5736448 1630632 5743536 1630864 5743768 1629288 5736552 -1630864 5743768 1630952 5743928 1629288 5736552 1630632 5743536 -1629008 5736448 1630632 5743536 1629288 5736552 1629872 5726768 -1629288 5736552 1630952 5743928 1629928 5726696 1629872 5726768 -1630952 5743928 1629928 5726696 1629288 5736552 1630864 5743768 -1629928 5726696 1629288 5736552 1630952 5743928 1631312 5744824 -1629928 5726696 1629872 5726768 1629288 5736552 1631312 5744824 -1629288 5736552 1630864 5743768 1630952 5743928 1631312 5744824 -1630952 5743928 1630992 5744048 1631312 5744824 1629288 5736552 -1629008 5736448 1629288 5736552 1629872 5726768 1627752 5730520 -1629008 5736448 1629288 5736552 1627752 5730520 1627744 5730544 -1629872 5726768 1629776 5726856 1627752 5730520 1629288 5736552 -1629288 5736552 1629928 5726696 1629872 5726768 1627752 5730520 -1629008 5736448 1630632 5743536 1629288 5736552 1627744 5730544 -1629008 5736448 1629288 5736552 1627744 5730544 1627720 5730568 -1629288 5736552 1629872 5726768 1627752 5730520 1627744 5730544 -1629008 5736448 1630424 5743368 1630632 5743536 1629288 5736552 -1629008 5736448 1628176 5739664 1630424 5743368 1629288 5736552 -1629008 5736448 1628176 5739664 1629288 5736552 1627744 5730544 -1630632 5743536 1630864 5743768 1629288 5736552 1630424 5743368 -1628176 5739664 1629784 5742896 1630424 5743368 1629288 5736552 -1628176 5739664 1629784 5742896 1629288 5736552 1629008 5736448 -1629784 5742896 1630312 5743312 1630424 5743368 1629288 5736552 -1629008 5736448 1628160 5739568 1628176 5739664 1629288 5736552 -1628176 5739664 1629784 5742896 1629288 5736552 1628160 5739568 -1629008 5736448 1628096 5737824 1628160 5739568 1629288 5736552 -1629008 5736448 1628096 5737824 1629288 5736552 1627744 5730544 -1628160 5739568 1628176 5739664 1629288 5736552 1628096 5737824 -1629008 5736448 1628096 5737800 1628096 5737824 1629288 5736552 -1628096 5737824 1628160 5739568 1629288 5736552 1628096 5737800 -1629008 5736448 1628096 5737800 1629288 5736552 1627744 5730544 -1629008 5736448 1628080 5737752 1628096 5737800 1629288 5736552 -1629008 5736448 1628056 5737728 1628080 5737752 1629288 5736552 -1629008 5736448 1628080 5737752 1629288 5736552 1627744 5730544 -1628096 5737800 1628096 5737824 1629288 5736552 1628080 5737752 -1628096 5737824 1628072 5737856 1628160 5739568 1629288 5736552 -1628176 5739664 1629688 5742824 1629784 5742896 1629288 5736552 -1630424 5743368 1630632 5743536 1629288 5736552 1629784 5742896 -1629928 5726696 1629288 5736552 1631312 5744824 1629944 5726624 -1629288 5736552 1629320 5736568 1629928 5726696 1629872 5726768 -1629288 5736552 1629320 5736568 1629872 5726768 1627752 5730520 -1629872 5726768 1629776 5726856 1627752 5730520 1629320 5736568 -1629320 5736568 1629928 5726696 1629872 5726768 1627752 5730520 -1629288 5736552 1631312 5744824 1629320 5736568 1627752 5730520 -1629320 5736568 1631312 5744824 1629928 5726696 1629872 5726768 -1631312 5744824 1629320 5736568 1629288 5736552 1630952 5743928 -1629320 5736568 1627752 5730520 1629288 5736552 1630952 5743928 -1629288 5736552 1630864 5743768 1630952 5743928 1629320 5736568 -1629288 5736552 1630632 5743536 1630864 5743768 1629320 5736568 -1629288 5736552 1630424 5743368 1630632 5743536 1629320 5736568 -1630632 5743536 1630864 5743768 1629320 5736568 1630424 5743368 -1629288 5736552 1630424 5743368 1629320 5736568 1627752 5730520 -1630864 5743768 1630952 5743928 1629320 5736568 1630632 5743536 -1631312 5744824 1629928 5726696 1629320 5736568 1630952 5743928 -1631312 5744824 1629320 5736568 1630952 5743928 1630992 5744048 -1630952 5743928 1631312 5744824 1629320 5736568 1630864 5743768 -1629288 5736552 1629320 5736568 1627752 5730520 1627744 5730544 -1629288 5736552 1629320 5736568 1627744 5730544 1629008 5736448 -1629320 5736568 1629872 5726768 1627752 5730520 1627744 5730544 -1629288 5736552 1630424 5743368 1629320 5736568 1627744 5730544 -1629288 5736552 1629784 5742896 1630424 5743368 1629320 5736568 -1629784 5742896 1630312 5743312 1630424 5743368 1629320 5736568 -1630424 5743368 1630632 5743536 1629320 5736568 1629784 5742896 -1629288 5736552 1629784 5742896 1629320 5736568 1627744 5730544 -1629288 5736552 1628176 5739664 1629784 5742896 1629320 5736568 -1629288 5736552 1628160 5739568 1628176 5739664 1629320 5736568 -1629288 5736552 1628160 5739568 1629320 5736568 1627744 5730544 -1628176 5739664 1629784 5742896 1629320 5736568 1628160 5739568 -1629288 5736552 1628096 5737824 1628160 5739568 1629320 5736568 -1628160 5739568 1628176 5739664 1629320 5736568 1628096 5737824 -1629288 5736552 1628096 5737800 1628096 5737824 1629320 5736568 -1629288 5736552 1628096 5737800 1629320 5736568 1627744 5730544 -1628096 5737824 1628160 5739568 1629320 5736568 1628096 5737800 -1629288 5736552 1628080 5737752 1628096 5737800 1629320 5736568 -1628096 5737800 1628096 5737824 1629320 5736568 1628080 5737752 -1629288 5736552 1628080 5737752 1629320 5736568 1627744 5730544 -1629288 5736552 1629008 5736448 1628080 5737752 1629320 5736568 -1628096 5737824 1628072 5737856 1628160 5739568 1629320 5736568 -1628176 5739664 1629688 5742824 1629784 5742896 1629320 5736568 -1629784 5742896 1630424 5743368 1629320 5736568 1628176 5739664 -1629928 5726696 1629320 5736568 1631312 5744824 1629944 5726624 -1629320 5736568 1629416 5736656 1629928 5726696 1629872 5726768 -1629320 5736568 1629416 5736656 1629872 5726768 1627752 5730520 -1629872 5726768 1629776 5726856 1627752 5730520 1629416 5736656 -1629320 5736568 1629416 5736656 1627752 5730520 1627744 5730544 -1629416 5736656 1629928 5726696 1629872 5726768 1627752 5730520 -1629320 5736568 1631312 5744824 1629416 5736656 1627752 5730520 -1631312 5744824 1629416 5736656 1629320 5736568 1630952 5743928 -1629416 5736656 1627752 5730520 1629320 5736568 1630952 5743928 -1629416 5736656 1631312 5744824 1629928 5726696 1629872 5726768 -1631312 5744824 1629416 5736656 1630952 5743928 1630992 5744048 -1629320 5736568 1630864 5743768 1630952 5743928 1629416 5736656 -1629320 5736568 1630632 5743536 1630864 5743768 1629416 5736656 -1629320 5736568 1630424 5743368 1630632 5743536 1629416 5736656 -1629320 5736568 1629784 5742896 1630424 5743368 1629416 5736656 -1630424 5743368 1630632 5743536 1629416 5736656 1629784 5742896 -1629784 5742896 1630312 5743312 1630424 5743368 1629416 5736656 -1630632 5743536 1630864 5743768 1629416 5736656 1630424 5743368 -1629320 5736568 1629784 5742896 1629416 5736656 1627752 5730520 -1630952 5743928 1631312 5744824 1629416 5736656 1630864 5743768 -1630864 5743768 1630952 5743928 1629416 5736656 1630632 5743536 -1629320 5736568 1628176 5739664 1629784 5742896 1629416 5736656 -1629784 5742896 1630424 5743368 1629416 5736656 1628176 5739664 -1629320 5736568 1628176 5739664 1629416 5736656 1627752 5730520 -1629320 5736568 1628160 5739568 1628176 5739664 1629416 5736656 -1629320 5736568 1628096 5737824 1628160 5739568 1629416 5736656 -1629320 5736568 1628096 5737824 1629416 5736656 1627752 5730520 -1628160 5739568 1628176 5739664 1629416 5736656 1628096 5737824 -1629320 5736568 1628096 5737800 1628096 5737824 1629416 5736656 -1628096 5737824 1628160 5739568 1629416 5736656 1628096 5737800 -1629320 5736568 1628080 5737752 1628096 5737800 1629416 5736656 -1629320 5736568 1628080 5737752 1629416 5736656 1627752 5730520 -1628096 5737800 1628096 5737824 1629416 5736656 1628080 5737752 -1629320 5736568 1629288 5736552 1628080 5737752 1629416 5736656 -1628080 5737752 1628096 5737800 1629416 5736656 1629288 5736552 -1629320 5736568 1629288 5736552 1629416 5736656 1627752 5730520 -1629288 5736552 1629008 5736448 1628080 5737752 1629416 5736656 -1629008 5736448 1628056 5737728 1628080 5737752 1629416 5736656 -1628080 5737752 1628096 5737800 1629416 5736656 1629008 5736448 -1629288 5736552 1629008 5736448 1629416 5736656 1629320 5736568 -1628096 5737824 1628072 5737856 1628160 5739568 1629416 5736656 -1628176 5739664 1629688 5742824 1629784 5742896 1629416 5736656 -1628176 5739664 1629784 5742896 1629416 5736656 1628160 5739568 -1631312 5744824 1629928 5726696 1629416 5736656 1630952 5743928 -1629928 5726696 1629416 5736656 1631312 5744824 1629944 5726624 -1629928 5726696 1629872 5726768 1629416 5736656 1629944 5726624 -1629416 5736656 1630952 5743928 1631312 5744824 1629944 5726624 -1631312 5744824 1751256 5699792 1629944 5726624 1629416 5736656 -1631312 5744824 1629432 5736720 1629416 5736656 1630952 5743928 -1629416 5736656 1630864 5743768 1630952 5743928 1629432 5736720 -1631312 5744824 1629432 5736720 1630952 5743928 1630992 5744048 -1629416 5736656 1630632 5743536 1630864 5743768 1629432 5736720 -1629416 5736656 1630424 5743368 1630632 5743536 1629432 5736720 -1629416 5736656 1629784 5742896 1630424 5743368 1629432 5736720 -1629784 5742896 1630312 5743312 1630424 5743368 1629432 5736720 -1629416 5736656 1628176 5739664 1629784 5742896 1629432 5736720 -1629784 5742896 1630424 5743368 1629432 5736720 1628176 5739664 -1630424 5743368 1630632 5743536 1629432 5736720 1629784 5742896 -1630864 5743768 1630952 5743928 1629432 5736720 1630632 5743536 -1630632 5743536 1630864 5743768 1629432 5736720 1630424 5743368 -1628176 5739664 1629688 5742824 1629784 5742896 1629432 5736720 -1629416 5736656 1628160 5739568 1628176 5739664 1629432 5736720 -1628176 5739664 1629784 5742896 1629432 5736720 1628160 5739568 -1629416 5736656 1628096 5737824 1628160 5739568 1629432 5736720 -1629416 5736656 1628096 5737800 1628096 5737824 1629432 5736720 -1628096 5737824 1628160 5739568 1629432 5736720 1628096 5737800 -1629416 5736656 1628080 5737752 1628096 5737800 1629432 5736720 -1628096 5737800 1628096 5737824 1629432 5736720 1628080 5737752 -1629416 5736656 1629008 5736448 1628080 5737752 1629432 5736720 -1629008 5736448 1628056 5737728 1628080 5737752 1629432 5736720 -1629416 5736656 1629288 5736552 1629008 5736448 1629432 5736720 -1629008 5736448 1628080 5737752 1629432 5736720 1629288 5736552 -1628080 5737752 1628096 5737800 1629432 5736720 1629008 5736448 -1629416 5736656 1629320 5736568 1629288 5736552 1629432 5736720 -1629288 5736552 1629008 5736448 1629432 5736720 1629320 5736568 -1628096 5737824 1628072 5737856 1628160 5739568 1629432 5736720 -1628160 5739568 1628176 5739664 1629432 5736720 1628096 5737824 -1629432 5736720 1629944 5726624 1629416 5736656 1629320 5736568 -1630952 5743928 1631312 5744824 1629432 5736720 1630864 5743768 -1631312 5744824 1629944 5726624 1629432 5736720 1630952 5743928 -1629416 5736656 1629432 5736720 1629944 5726624 1629928 5726696 -1629416 5736656 1629432 5736720 1629928 5726696 1629872 5726768 -1629416 5736656 1629320 5736568 1629432 5736720 1629928 5726696 -1629432 5736720 1631312 5744824 1629944 5726624 1629928 5726696 -1629944 5726624 1629432 5736720 1631312 5744824 1751256 5699792 -1628080 5737752 1629344 5736744 1629008 5736448 1628056 5737728 -1629008 5736448 1629344 5736744 1629432 5736720 1629288 5736552 -1629008 5736448 1628080 5737752 1629344 5736744 1629288 5736552 -1629432 5736720 1629320 5736568 1629288 5736552 1629344 5736744 -1629288 5736552 1629008 5736448 1629344 5736744 1629320 5736568 -1629432 5736720 1629344 5736744 1628080 5737752 1628096 5737800 -1629432 5736720 1629344 5736744 1628096 5737800 1628096 5737824 -1629432 5736720 1629344 5736744 1628096 5737824 1628160 5739568 -1629344 5736744 1628096 5737800 1628096 5737824 1628160 5739568 -1629344 5736744 1628080 5737752 1628096 5737800 1628096 5737824 -1629432 5736720 1629416 5736656 1629320 5736568 1629344 5736744 -1629320 5736568 1629288 5736552 1629344 5736744 1629416 5736656 -1628096 5737824 1628072 5737856 1628160 5739568 1629344 5736744 -1629432 5736720 1629344 5736744 1628160 5739568 1628176 5739664 -1629344 5736744 1628160 5739568 1629432 5736720 1629416 5736656 -1629344 5736744 1629008 5736448 1628080 5737752 1628096 5737800 -1629008 5736448 1629248 5736760 1629344 5736744 1629288 5736552 -1629008 5736448 1628080 5737752 1629248 5736760 1629288 5736552 -1628080 5737752 1629248 5736760 1629008 5736448 1628056 5737728 -1629248 5736760 1629288 5736552 1629008 5736448 1628056 5737728 -1629008 5736448 1628488 5736312 1628056 5737728 1629248 5736760 -1629008 5736448 1628488 5736312 1629248 5736760 1629288 5736552 -1628056 5737728 1628080 5737752 1629248 5736760 1628488 5736312 -1628488 5736312 1628032 5737712 1628056 5737728 1629248 5736760 -1629344 5736744 1629320 5736568 1629288 5736552 1629248 5736760 -1629288 5736552 1629008 5736448 1629248 5736760 1629320 5736568 -1629248 5736760 1628080 5737752 1629344 5736744 1629320 5736568 -1628080 5737752 1629344 5736744 1629248 5736760 1628056 5737728 -1629344 5736744 1629416 5736656 1629320 5736568 1629248 5736760 -1629344 5736744 1629248 5736760 1628080 5737752 1628096 5737800 -1629344 5736744 1629320 5736568 1629248 5736760 1628096 5737800 -1629248 5736760 1628056 5737728 1628080 5737752 1628096 5737800 -1629344 5736744 1629248 5736760 1628096 5737800 1628096 5737824 -1629344 5736744 1629248 5736760 1628096 5737824 1628160 5739568 -1629344 5736744 1629320 5736568 1629248 5736760 1628096 5737824 -1629248 5736760 1628080 5737752 1628096 5737800 1628096 5737824 -1629248 5736760 1629064 5736736 1628056 5737728 1628080 5737752 -1629248 5736760 1628488 5736312 1629064 5736736 1628080 5737752 -1629064 5736736 1628488 5736312 1628056 5737728 1628080 5737752 -1628056 5737728 1629064 5736736 1628488 5736312 1628032 5737712 -1628056 5737728 1628080 5737752 1629064 5736736 1628032 5737712 -1629064 5736736 1629248 5736760 1628488 5736312 1628032 5737712 -1628488 5736312 1629064 5736736 1629248 5736760 1629008 5736448 -1629064 5736736 1628080 5737752 1629248 5736760 1629008 5736448 -1629248 5736760 1629288 5736552 1629008 5736448 1629064 5736736 -1629248 5736760 1629320 5736568 1629288 5736552 1629064 5736736 -1629248 5736760 1629288 5736552 1629064 5736736 1628080 5737752 -1628488 5736312 1628032 5737712 1629064 5736736 1629008 5736448 -1629008 5736448 1628488 5736312 1629064 5736736 1629288 5736552 -1628488 5736312 1627952 5737688 1628032 5737712 1629064 5736736 -1629248 5736760 1629064 5736736 1628080 5737752 1628096 5737800 -1629248 5736760 1629288 5736552 1629064 5736736 1628096 5737800 -1629064 5736736 1628056 5737728 1628080 5737752 1628096 5737800 -1629248 5736760 1629064 5736736 1628096 5737800 1628096 5737824 -1628488 5736312 1628864 5736672 1629064 5736736 1629008 5736448 -1628864 5736672 1628032 5737712 1629064 5736736 1629008 5736448 -1628488 5736312 1628032 5737712 1628864 5736672 1629008 5736448 -1629064 5736736 1628864 5736672 1628032 5737712 1628056 5737728 -1629064 5736736 1628864 5736672 1628056 5737728 1628080 5737752 -1629064 5736736 1629008 5736448 1628864 5736672 1628080 5737752 -1628864 5736672 1628488 5736312 1628032 5737712 1628056 5737728 -1629064 5736736 1628864 5736672 1628080 5737752 1628096 5737800 -1628864 5736672 1628032 5737712 1628056 5737728 1628080 5737752 -1629064 5736736 1629288 5736552 1629008 5736448 1628864 5736672 -1628032 5737712 1628864 5736672 1628488 5736312 1627952 5737688 -1628032 5737712 1628056 5737728 1628864 5736672 1627952 5737688 -1628864 5736672 1629008 5736448 1628488 5736312 1627952 5737688 -1628488 5736312 1628256 5736240 1627952 5737688 1628864 5736672 -1628488 5736312 1628664 5736560 1628864 5736672 1629008 5736448 -1628864 5736672 1629064 5736736 1629008 5736448 1628664 5736560 -1628664 5736560 1627952 5737688 1628864 5736672 1629008 5736448 -1628488 5736312 1627952 5737688 1628664 5736560 1629008 5736448 -1628864 5736672 1628664 5736560 1627952 5737688 1628032 5737712 -1628864 5736672 1628664 5736560 1628032 5737712 1628056 5737728 -1628864 5736672 1629008 5736448 1628664 5736560 1628056 5737728 -1628664 5736560 1628488 5736312 1627952 5737688 1628032 5737712 -1628864 5736672 1628664 5736560 1628056 5737728 1628080 5737752 -1628664 5736560 1627952 5737688 1628032 5737712 1628056 5737728 -1627952 5737688 1628664 5736560 1628488 5736312 1628256 5736240 -1627952 5737688 1628032 5737712 1628664 5736560 1628256 5736240 -1628664 5736560 1629008 5736448 1628488 5736312 1628256 5736240 -1627952 5737688 1628664 5736560 1628256 5736240 1627856 5737672 -1628664 5736560 1628504 5736512 1627952 5737688 1628032 5737712 -1628664 5736560 1628256 5736240 1628504 5736512 1628032 5737712 -1628504 5736512 1628256 5736240 1627952 5737688 1628032 5737712 -1628664 5736560 1628504 5736512 1628032 5737712 1628056 5737728 -1627952 5737688 1628504 5736512 1628256 5736240 1627856 5737672 -1627952 5737688 1628032 5737712 1628504 5736512 1627856 5737672 -1628504 5736512 1628664 5736560 1628256 5736240 1627856 5737672 -1628256 5736240 1628504 5736512 1628664 5736560 1628488 5736312 -1628504 5736512 1628032 5737712 1628664 5736560 1628488 5736312 -1628664 5736560 1629008 5736448 1628488 5736312 1628504 5736512 -1628256 5736240 1627856 5737672 1628504 5736512 1628488 5736312 -1628256 5736240 1627776 5737664 1627856 5737672 1628504 5736512 -1628256 5736240 1627776 5737664 1628504 5736512 1628488 5736312 -1627856 5737672 1627952 5737688 1628504 5736512 1627776 5737664 -1628256 5736240 1627856 5736056 1627776 5737664 1628504 5736512 -1628256 5736240 1628400 5736528 1628504 5736512 1628488 5736312 -1628400 5736528 1627776 5737664 1628504 5736512 1628488 5736312 -1628256 5736240 1627776 5737664 1628400 5736528 1628488 5736312 -1628504 5736512 1628664 5736560 1628488 5736312 1628400 5736528 -1628504 5736512 1628400 5736528 1627776 5737664 1627856 5737672 -1628504 5736512 1628488 5736312 1628400 5736528 1627856 5737672 -1628400 5736528 1628256 5736240 1627776 5737664 1627856 5737672 -1628504 5736512 1628400 5736528 1627856 5737672 1627952 5737688 -1628504 5736512 1628400 5736528 1627952 5737688 1628032 5737712 -1628504 5736512 1628400 5736528 1628032 5737712 1628664 5736560 -1628400 5736528 1627952 5737688 1628032 5737712 1628664 5736560 -1628504 5736512 1628488 5736312 1628400 5736528 1628664 5736560 -1628032 5737712 1628056 5737728 1628664 5736560 1628400 5736528 -1628056 5737728 1628864 5736672 1628664 5736560 1628400 5736528 -1628664 5736560 1628504 5736512 1628400 5736528 1628864 5736672 -1628032 5737712 1628056 5737728 1628400 5736528 1627952 5737688 -1628056 5737728 1628080 5737752 1628864 5736672 1628400 5736528 -1628056 5737728 1628864 5736672 1628400 5736528 1628032 5737712 -1628400 5736528 1627856 5737672 1627952 5737688 1628032 5737712 -1628400 5736528 1627776 5737664 1627856 5737672 1627952 5737688 -1627776 5737664 1628400 5736528 1628256 5736240 1627856 5736056 -1627776 5737664 1627856 5737672 1628400 5736528 1627856 5736056 -1628400 5736528 1628488 5736312 1628256 5736240 1627856 5736056 -1627776 5737664 1628400 5736528 1627856 5736056 1627736 5737704 -1628400 5736528 1628352 5736600 1627776 5737664 1627856 5737672 -1628400 5736528 1627856 5736056 1628352 5736600 1627856 5737672 -1628352 5736600 1627856 5736056 1627776 5737664 1627856 5737672 -1627776 5737664 1628352 5736600 1627856 5736056 1627736 5737704 -1628400 5736528 1628352 5736600 1627856 5737672 1627952 5737688 -1628352 5736600 1627776 5737664 1627856 5737672 1627952 5737688 -1628400 5736528 1627856 5736056 1628352 5736600 1627952 5737688 -1628400 5736528 1628352 5736600 1627952 5737688 1628032 5737712 -1628400 5736528 1628352 5736600 1628032 5737712 1628056 5737728 -1628400 5736528 1627856 5736056 1628352 5736600 1628056 5737728 -1628400 5736528 1628352 5736600 1628056 5737728 1628864 5736672 -1628400 5736528 1628352 5736600 1628864 5736672 1628664 5736560 -1628400 5736528 1628352 5736600 1628664 5736560 1628504 5736512 -1628352 5736600 1628864 5736672 1628664 5736560 1628504 5736512 -1628352 5736600 1628032 5737712 1628056 5737728 1628864 5736672 -1628400 5736528 1627856 5736056 1628352 5736600 1628504 5736512 -1628056 5737728 1628080 5737752 1628864 5736672 1628352 5736600 -1628352 5736600 1628056 5737728 1628864 5736672 1628664 5736560 -1628352 5736600 1627952 5737688 1628032 5737712 1628056 5737728 -1628352 5736600 1627856 5737672 1627952 5737688 1628032 5737712 -1627856 5736056 1628352 5736600 1628400 5736528 1628256 5736240 -1628352 5736600 1628504 5736512 1628400 5736528 1628256 5736240 -1628400 5736528 1628488 5736312 1628256 5736240 1628352 5736600 -1627856 5736056 1627776 5737664 1628352 5736600 1628256 5736240 -1628056 5737728 1628368 5736736 1628352 5736600 1628032 5737712 -1628368 5736736 1628864 5736672 1628352 5736600 1628032 5737712 -1628056 5737728 1628864 5736672 1628368 5736736 1628032 5737712 -1628864 5736672 1628368 5736736 1628056 5737728 1628080 5737752 -1628864 5736672 1628368 5736736 1628080 5737752 1629064 5736736 -1628864 5736672 1628352 5736600 1628368 5736736 1628080 5737752 -1628368 5736736 1628032 5737712 1628056 5737728 1628080 5737752 -1628352 5736600 1628368 5736736 1628864 5736672 1628664 5736560 -1628352 5736600 1628368 5736736 1628664 5736560 1628504 5736512 -1628352 5736600 1628368 5736736 1628504 5736512 1628400 5736528 -1628352 5736600 1628032 5737712 1628368 5736736 1628504 5736512 -1628368 5736736 1628080 5737752 1628864 5736672 1628664 5736560 -1628368 5736736 1628864 5736672 1628664 5736560 1628504 5736512 -1628352 5736600 1627952 5737688 1628032 5737712 1628368 5736736 -1628032 5737712 1628056 5737728 1628368 5736736 1627952 5737688 -1628352 5736600 1627952 5737688 1628368 5736736 1628504 5736512 -1628352 5736600 1627856 5737672 1627952 5737688 1628368 5736736 -1628352 5736600 1627776 5737664 1627856 5737672 1628368 5736736 -1628352 5736600 1627856 5736056 1627776 5737664 1628368 5736736 -1627776 5737664 1627856 5737672 1628368 5736736 1627856 5736056 -1628352 5736600 1627856 5736056 1628368 5736736 1628504 5736512 -1628352 5736600 1628256 5736240 1627856 5736056 1628368 5736736 -1627952 5737688 1628032 5737712 1628368 5736736 1627856 5737672 -1627856 5736056 1627736 5737704 1627776 5737664 1628368 5736736 -1627856 5737672 1627952 5737688 1628368 5736736 1627776 5737664 -1628368 5736736 1628320 5736784 1627776 5737664 1627856 5737672 -1627856 5736056 1628320 5736784 1628368 5736736 1628352 5736600 -1627856 5736056 1628320 5736784 1628352 5736600 1628256 5736240 -1628368 5736736 1628352 5736600 1628320 5736784 1627856 5737672 -1628320 5736784 1627856 5736056 1627776 5737664 1627856 5737672 -1627856 5736056 1627776 5737664 1628320 5736784 1628352 5736600 -1627776 5737664 1628320 5736784 1627856 5736056 1627736 5737704 -1628368 5736736 1628320 5736784 1627856 5737672 1627952 5737688 -1628320 5736784 1627776 5737664 1627856 5737672 1627952 5737688 -1628368 5736736 1628352 5736600 1628320 5736784 1627952 5737688 -1628368 5736736 1628320 5736784 1627952 5737688 1628032 5737712 -1628368 5736736 1628320 5736784 1628032 5737712 1628056 5737728 -1628368 5736736 1628352 5736600 1628320 5736784 1628056 5737728 -1628368 5736736 1628320 5736784 1628056 5737728 1628080 5737752 -1628320 5736784 1628032 5737712 1628056 5737728 1628080 5737752 -1628368 5736736 1628352 5736600 1628320 5736784 1628080 5737752 -1628368 5736736 1628320 5736784 1628080 5737752 1628864 5736672 -1628080 5737752 1629064 5736736 1628864 5736672 1628320 5736784 -1628368 5736736 1628320 5736784 1628864 5736672 1628664 5736560 -1628368 5736736 1628352 5736600 1628320 5736784 1628864 5736672 -1628320 5736784 1628056 5737728 1628080 5737752 1628864 5736672 -1628320 5736784 1627952 5737688 1628032 5737712 1628056 5737728 -1628320 5736784 1627856 5737672 1627952 5737688 1628032 5737712 -1628320 5736784 1628272 5736808 1627776 5737664 1627856 5737672 -1628320 5736784 1628272 5736808 1627856 5737672 1627952 5737688 -1628272 5736808 1627776 5737664 1627856 5737672 1627952 5737688 -1628320 5736784 1627856 5736056 1628272 5736808 1627952 5737688 -1627856 5736056 1628272 5736808 1628320 5736784 1628352 5736600 -1628320 5736784 1628368 5736736 1628352 5736600 1628272 5736808 -1627856 5736056 1628272 5736808 1628352 5736600 1628256 5736240 -1628272 5736808 1627952 5737688 1628320 5736784 1628352 5736600 -1628272 5736808 1627856 5736056 1627776 5737664 1627856 5737672 -1627856 5736056 1627776 5737664 1628272 5736808 1628352 5736600 -1627776 5737664 1628272 5736808 1627856 5736056 1627736 5737704 -1628320 5736784 1628272 5736808 1627952 5737688 1628032 5737712 -1628272 5736808 1627856 5737672 1627952 5737688 1628032 5737712 -1628320 5736784 1628352 5736600 1628272 5736808 1628032 5737712 -1628320 5736784 1628272 5736808 1628032 5737712 1628056 5737728 -1628320 5736784 1628272 5736808 1628056 5737728 1628080 5737752 -1628320 5736784 1628272 5736808 1628080 5737752 1628864 5736672 -1628320 5736784 1628352 5736600 1628272 5736808 1628080 5737752 -1628272 5736808 1628032 5737712 1628056 5737728 1628080 5737752 -1628272 5736808 1627952 5737688 1628032 5737712 1628056 5737728 -1628272 5736808 1628176 5736792 1627776 5737664 1627856 5737672 -1628272 5736808 1628176 5736792 1627856 5737672 1627952 5737688 -1628272 5736808 1628176 5736792 1627952 5737688 1628032 5737712 -1628176 5736792 1627856 5737672 1627952 5737688 1628032 5737712 -1628176 5736792 1627776 5737664 1627856 5737672 1627952 5737688 -1628272 5736808 1627856 5736056 1628176 5736792 1628032 5737712 -1627856 5736056 1628176 5736792 1628272 5736808 1628352 5736600 -1627856 5736056 1628176 5736792 1628352 5736600 1628256 5736240 -1628272 5736808 1628320 5736784 1628352 5736600 1628176 5736792 -1628320 5736784 1628368 5736736 1628352 5736600 1628176 5736792 -1628176 5736792 1628032 5737712 1628272 5736808 1628320 5736784 -1628176 5736792 1628320 5736784 1628352 5736600 1628256 5736240 -1628176 5736792 1627856 5736056 1627776 5737664 1627856 5737672 -1627856 5736056 1627776 5737664 1628176 5736792 1628256 5736240 -1627776 5737664 1628176 5736792 1627856 5736056 1627736 5737704 -1628272 5736808 1628176 5736792 1628032 5737712 1628056 5737728 -1628352 5736600 1628400 5736528 1628256 5736240 1628176 5736792 -1628176 5736792 1627976 5736656 1627776 5737664 1627856 5737672 -1627856 5736056 1627976 5736656 1628176 5736792 1628256 5736240 -1628176 5736792 1628352 5736600 1628256 5736240 1627976 5736656 -1628176 5736792 1628320 5736784 1628352 5736600 1627976 5736656 -1627976 5736656 1627776 5737664 1628176 5736792 1628352 5736600 -1628256 5736240 1627856 5736056 1627976 5736656 1628352 5736600 -1627856 5736056 1627776 5737664 1627976 5736656 1628256 5736240 -1627776 5737664 1627976 5736656 1627856 5736056 1627736 5737704 -1627776 5737664 1628176 5736792 1627976 5736656 1627736 5737704 -1627976 5736656 1628256 5736240 1627856 5736056 1627736 5737704 -1627856 5736056 1626040 5738272 1627736 5737704 1627976 5736656 -1627856 5736056 1626040 5738272 1627976 5736656 1628256 5736240 -1627736 5737704 1627776 5737664 1627976 5736656 1626040 5738272 -1626040 5738272 1626136 5738328 1627736 5737704 1627976 5736656 -1627856 5736056 1625760 5738184 1626040 5738272 1627976 5736656 -1627856 5736056 1625760 5738184 1627976 5736656 1628256 5736240 -1626040 5738272 1627736 5737704 1627976 5736656 1625760 5738184 -1627856 5736056 1625656 5738160 1625760 5738184 1627976 5736656 -1628352 5736600 1628400 5736528 1628256 5736240 1627976 5736656 -1627856 5736056 1627936 5736648 1627976 5736656 1628256 5736240 -1627976 5736656 1628352 5736600 1628256 5736240 1627936 5736648 -1627936 5736648 1625760 5738184 1627976 5736656 1628256 5736240 -1627856 5736056 1625760 5738184 1627936 5736648 1628256 5736240 -1625760 5738184 1627936 5736648 1627856 5736056 1625656 5738160 -1627976 5736656 1627936 5736648 1625760 5738184 1626040 5738272 -1627976 5736656 1628256 5736240 1627936 5736648 1626040 5738272 -1627936 5736648 1627856 5736056 1625760 5738184 1626040 5738272 -1627976 5736656 1627936 5736648 1626040 5738272 1627736 5737704 -1627976 5736656 1628256 5736240 1627936 5736648 1627736 5737704 -1627976 5736656 1627936 5736648 1627736 5737704 1627776 5737664 -1627976 5736656 1627936 5736648 1627776 5737664 1628176 5736792 -1627776 5737664 1627856 5737672 1628176 5736792 1627936 5736648 -1627976 5736656 1628256 5736240 1627936 5736648 1628176 5736792 -1627936 5736648 1627736 5737704 1627776 5737664 1628176 5736792 -1626040 5738272 1626136 5738328 1627736 5737704 1627936 5736648 -1627936 5736648 1626040 5738272 1627736 5737704 1627776 5737664 -1627936 5736648 1625760 5738184 1626040 5738272 1627736 5737704 -1627936 5736648 1627920 5736632 1625760 5738184 1626040 5738272 -1627936 5736648 1627856 5736056 1627920 5736632 1626040 5738272 -1627856 5736056 1627920 5736632 1627936 5736648 1628256 5736240 -1627936 5736648 1627976 5736656 1628256 5736240 1627920 5736632 -1627976 5736656 1628352 5736600 1628256 5736240 1627920 5736632 -1627920 5736632 1626040 5738272 1627936 5736648 1627976 5736656 -1628256 5736240 1627856 5736056 1627920 5736632 1627976 5736656 -1627920 5736632 1627856 5736056 1625760 5738184 1626040 5738272 -1627856 5736056 1625760 5738184 1627920 5736632 1628256 5736240 -1625760 5738184 1627920 5736632 1627856 5736056 1625656 5738160 -1627936 5736648 1627920 5736632 1626040 5738272 1627736 5737704 -1627920 5736632 1625760 5738184 1626040 5738272 1627736 5737704 -1627936 5736648 1627976 5736656 1627920 5736632 1627736 5737704 -1626040 5738272 1626136 5738328 1627736 5737704 1627920 5736632 -1627936 5736648 1627920 5736632 1627736 5737704 1627776 5737664 -1627936 5736648 1627976 5736656 1627920 5736632 1627776 5737664 -1627936 5736648 1627920 5736632 1627776 5737664 1628176 5736792 -1627920 5736632 1626040 5738272 1627736 5737704 1627776 5737664 -1627920 5736632 1627624 5736560 1625760 5738184 1626040 5738272 -1627920 5736632 1627624 5736560 1626040 5738272 1627736 5737704 -1627624 5736560 1625760 5738184 1626040 5738272 1627736 5737704 -1627920 5736632 1627856 5736056 1627624 5736560 1627736 5737704 -1627856 5736056 1627624 5736560 1627920 5736632 1628256 5736240 -1627624 5736560 1627856 5736056 1625760 5738184 1626040 5738272 -1626040 5738272 1626136 5738328 1627736 5737704 1627624 5736560 -1625760 5738184 1627624 5736560 1627856 5736056 1625656 5738160 -1625760 5738184 1626040 5738272 1627624 5736560 1625656 5738160 -1627624 5736560 1627920 5736632 1627856 5736056 1625656 5738160 -1627856 5736056 1625488 5738112 1625656 5738160 1627624 5736560 -1627856 5736056 1625488 5738112 1627624 5736560 1627920 5736632 -1627856 5736056 1625120 5738032 1625488 5738112 1627624 5736560 -1627856 5736056 1625120 5738032 1627624 5736560 1627920 5736632 -1627856 5736056 1624904 5738000 1625120 5738032 1627624 5736560 -1627856 5736056 1624904 5738000 1627624 5736560 1627920 5736632 -1625488 5738112 1625656 5738160 1627624 5736560 1625120 5738032 -1625120 5738032 1625488 5738112 1627624 5736560 1624904 5738000 -1627856 5736056 1621784 5733192 1624904 5738000 1627624 5736560 -1625656 5738160 1625760 5738184 1627624 5736560 1625488 5738112 -1627920 5736632 1627624 5736560 1627736 5737704 1627776 5737664 -1627624 5736560 1626040 5738272 1627736 5737704 1627776 5737664 -1627920 5736632 1627856 5736056 1627624 5736560 1627776 5737664 -1627920 5736632 1627624 5736560 1627776 5737664 1627936 5736648 -1627920 5736632 1627856 5736056 1627624 5736560 1627936 5736648 -1627776 5737664 1628176 5736792 1627936 5736648 1627624 5736560 -1627624 5736560 1627736 5737704 1627776 5737664 1627936 5736648 -1627856 5736056 1627376 5736376 1627624 5736560 1627920 5736632 -1627624 5736560 1627376 5736376 1624904 5738000 1625120 5738032 -1627624 5736560 1627856 5736056 1627376 5736376 1625120 5738032 -1627376 5736376 1627856 5736056 1624904 5738000 1625120 5738032 -1627624 5736560 1627376 5736376 1625120 5738032 1625488 5738112 -1627624 5736560 1627856 5736056 1627376 5736376 1625488 5738112 -1627376 5736376 1624904 5738000 1625120 5738032 1625488 5738112 -1627624 5736560 1627376 5736376 1625488 5738112 1625656 5738160 -1627624 5736560 1627856 5736056 1627376 5736376 1625656 5738160 -1627376 5736376 1625120 5738032 1625488 5738112 1625656 5738160 -1624904 5738000 1627376 5736376 1627856 5736056 1621784 5733192 -1624904 5738000 1625120 5738032 1627376 5736376 1621784 5733192 -1627376 5736376 1627624 5736560 1627856 5736056 1621784 5733192 -1627624 5736560 1627376 5736376 1625656 5738160 1625760 5738184 -1627624 5736560 1627376 5736376 1625760 5738184 1626040 5738272 -1627624 5736560 1627376 5736376 1626040 5738272 1627736 5737704 -1627624 5736560 1627376 5736376 1627736 5737704 1627776 5737664 -1627376 5736376 1625760 5738184 1626040 5738272 1627736 5737704 -1627624 5736560 1627856 5736056 1627376 5736376 1627736 5737704 -1626040 5738272 1626136 5738328 1627736 5737704 1627376 5736376 -1627376 5736376 1625488 5738112 1625656 5738160 1625760 5738184 -1627376 5736376 1625656 5738160 1625760 5738184 1626040 5738272 -1627856 5736056 1621808 5733136 1621784 5733192 1627376 5736376 -1627856 5736056 1621808 5733136 1627376 5736376 1627624 5736560 -1627856 5736056 1627440 5730528 1621808 5733136 1627376 5736376 -1627856 5736056 1627440 5730528 1627376 5736376 1627624 5736560 -1627856 5736056 1627560 5730576 1627440 5730528 1627376 5736376 -1627440 5730528 1627360 5730472 1621808 5733136 1627376 5736376 -1621784 5733192 1624904 5738000 1627376 5736376 1621808 5733136 -1621808 5733136 1621784 5733192 1627376 5736376 1627440 5730528 -1624904 5738000 1627376 5736376 1621784 5733192 1621712 5733232 -1627376 5736376 1627168 5736256 1621784 5733192 1624904 5738000 -1627376 5736376 1627168 5736256 1624904 5738000 1625120 5738032 -1627376 5736376 1621808 5733136 1627168 5736256 1625120 5738032 -1627168 5736256 1621808 5733136 1621784 5733192 1624904 5738000 -1627376 5736376 1627168 5736256 1625120 5738032 1625488 5738112 -1627168 5736256 1624904 5738000 1625120 5738032 1625488 5738112 -1627376 5736376 1621808 5733136 1627168 5736256 1625488 5738112 -1627376 5736376 1627168 5736256 1625488 5738112 1625656 5738160 -1627376 5736376 1621808 5733136 1627168 5736256 1625656 5738160 -1627168 5736256 1625120 5738032 1625488 5738112 1625656 5738160 -1627376 5736376 1627168 5736256 1625656 5738160 1625760 5738184 -1627376 5736376 1621808 5733136 1627168 5736256 1625760 5738184 -1627168 5736256 1625488 5738112 1625656 5738160 1625760 5738184 -1627168 5736256 1621784 5733192 1624904 5738000 1625120 5738032 -1627376 5736376 1627168 5736256 1625760 5738184 1626040 5738272 -1627376 5736376 1627168 5736256 1626040 5738272 1627736 5737704 -1627376 5736376 1627168 5736256 1627736 5737704 1627624 5736560 -1627376 5736376 1621808 5733136 1627168 5736256 1627736 5737704 -1626040 5738272 1626136 5738328 1627736 5737704 1627168 5736256 -1627168 5736256 1625656 5738160 1625760 5738184 1626040 5738272 -1627168 5736256 1625760 5738184 1626040 5738272 1627736 5737704 -1621808 5733136 1627168 5736256 1627376 5736376 1627440 5730528 -1627168 5736256 1627736 5737704 1627376 5736376 1627440 5730528 -1621808 5733136 1621784 5733192 1627168 5736256 1627440 5730528 -1627376 5736376 1627856 5736056 1627440 5730528 1627168 5736256 -1627376 5736376 1627856 5736056 1627168 5736256 1627736 5737704 -1627376 5736376 1627624 5736560 1627856 5736056 1627168 5736256 -1627856 5736056 1627560 5730576 1627440 5730528 1627168 5736256 -1627560 5730576 1627520 5730552 1627440 5730528 1627168 5736256 -1627856 5736056 1627632 5730600 1627560 5730576 1627168 5736256 -1627560 5730576 1627440 5730528 1627168 5736256 1627632 5730600 -1627856 5736056 1627632 5730600 1627168 5736256 1627376 5736376 -1627856 5736056 1627656 5730600 1627632 5730600 1627168 5736256 -1621808 5733136 1627168 5736256 1627440 5730528 1627360 5730472 -1621808 5733136 1627168 5736256 1627360 5730472 1627328 5730448 -1621808 5733136 1621784 5733192 1627168 5736256 1627360 5730472 -1627440 5730528 1627360 5730472 1627168 5736256 1627560 5730576 -1621784 5733192 1621712 5733232 1624904 5738000 1627168 5736256 -1621784 5733192 1626992 5736208 1627168 5736256 1621808 5733136 -1626992 5736208 1624904 5738000 1627168 5736256 1621808 5733136 -1627168 5736256 1627360 5730472 1621808 5733136 1626992 5736208 -1627360 5730472 1627328 5730448 1621808 5733136 1626992 5736208 -1621808 5733136 1621784 5733192 1626992 5736208 1627328 5730448 -1627168 5736256 1627360 5730472 1626992 5736208 1624904 5738000 -1627360 5730472 1627328 5730448 1626992 5736208 1627168 5736256 -1621784 5733192 1624904 5738000 1626992 5736208 1621808 5733136 -1627328 5730448 1621800 5732912 1621808 5733136 1626992 5736208 -1627168 5736256 1627440 5730528 1627360 5730472 1626992 5736208 -1627168 5736256 1627440 5730528 1626992 5736208 1624904 5738000 -1627360 5730472 1627328 5730448 1626992 5736208 1627440 5730528 -1627168 5736256 1626992 5736208 1624904 5738000 1625120 5738032 -1627168 5736256 1626992 5736208 1625120 5738032 1625488 5738112 -1627168 5736256 1627440 5730528 1626992 5736208 1625488 5738112 -1626992 5736208 1621784 5733192 1624904 5738000 1625120 5738032 -1627168 5736256 1626992 5736208 1625488 5738112 1625656 5738160 -1626992 5736208 1625120 5738032 1625488 5738112 1625656 5738160 -1627168 5736256 1627440 5730528 1626992 5736208 1625656 5738160 -1627168 5736256 1626992 5736208 1625656 5738160 1625760 5738184 -1627168 5736256 1627440 5730528 1626992 5736208 1625760 5738184 -1626992 5736208 1625488 5738112 1625656 5738160 1625760 5738184 -1627168 5736256 1626992 5736208 1625760 5738184 1626040 5738272 -1627168 5736256 1627440 5730528 1626992 5736208 1626040 5738272 -1626992 5736208 1625656 5738160 1625760 5738184 1626040 5738272 -1626992 5736208 1624904 5738000 1625120 5738032 1625488 5738112 -1627168 5736256 1626992 5736208 1626040 5738272 1627736 5737704 -1627168 5736256 1626992 5736208 1627736 5737704 1627376 5736376 -1627736 5737704 1627624 5736560 1627376 5736376 1626992 5736208 -1627168 5736256 1627440 5730528 1626992 5736208 1627376 5736376 -1626040 5738272 1626136 5738328 1627736 5737704 1626992 5736208 -1626992 5736208 1625760 5738184 1626040 5738272 1627736 5737704 -1626992 5736208 1626040 5738272 1627736 5737704 1627376 5736376 -1627168 5736256 1627560 5730576 1627440 5730528 1626992 5736208 -1627560 5730576 1627520 5730552 1627440 5730528 1626992 5736208 -1627168 5736256 1627560 5730576 1626992 5736208 1627376 5736376 -1627168 5736256 1627632 5730600 1627560 5730576 1626992 5736208 -1627168 5736256 1627632 5730600 1626992 5736208 1627376 5736376 -1627168 5736256 1627856 5736056 1627632 5730600 1626992 5736208 -1627168 5736256 1627856 5736056 1626992 5736208 1627376 5736376 -1627632 5730600 1627560 5730576 1626992 5736208 1627856 5736056 -1627168 5736256 1627376 5736376 1627856 5736056 1626992 5736208 -1627856 5736056 1627656 5730600 1627632 5730600 1626992 5736208 -1627440 5730528 1627360 5730472 1626992 5736208 1627560 5730576 -1627560 5730576 1627440 5730528 1626992 5736208 1627632 5730600 -1624904 5738000 1626992 5736208 1621784 5733192 1621712 5733232 -1626992 5736208 1626800 5736136 1624904 5738000 1625120 5738032 -1626992 5736208 1621784 5733192 1626800 5736136 1625120 5738032 -1621784 5733192 1626800 5736136 1626992 5736208 1621808 5733136 -1626992 5736208 1627328 5730448 1621808 5733136 1626800 5736136 -1626992 5736208 1627360 5730472 1627328 5730448 1626800 5736136 -1627328 5730448 1621808 5733136 1626800 5736136 1627360 5730472 -1626992 5736208 1627440 5730528 1627360 5730472 1626800 5736136 -1627360 5730472 1627328 5730448 1626800 5736136 1627440 5730528 -1626800 5736136 1625120 5738032 1626992 5736208 1627440 5730528 -1621808 5733136 1621784 5733192 1626800 5736136 1627328 5730448 -1627328 5730448 1621800 5732912 1621808 5733136 1626800 5736136 -1626800 5736136 1621784 5733192 1624904 5738000 1625120 5738032 -1621784 5733192 1624904 5738000 1626800 5736136 1621808 5733136 -1626992 5736208 1627560 5730576 1627440 5730528 1626800 5736136 -1627560 5730576 1627520 5730552 1627440 5730528 1626800 5736136 -1627440 5730528 1627360 5730472 1626800 5736136 1627560 5730576 -1626992 5736208 1627560 5730576 1626800 5736136 1625120 5738032 -1626992 5736208 1626800 5736136 1625120 5738032 1625488 5738112 -1626992 5736208 1626800 5736136 1625488 5738112 1625656 5738160 -1626800 5736136 1624904 5738000 1625120 5738032 1625488 5738112 -1626992 5736208 1627560 5730576 1626800 5736136 1625656 5738160 -1626992 5736208 1626800 5736136 1625656 5738160 1625760 5738184 -1626800 5736136 1625488 5738112 1625656 5738160 1625760 5738184 -1626992 5736208 1627560 5730576 1626800 5736136 1625760 5738184 -1626992 5736208 1626800 5736136 1625760 5738184 1626040 5738272 -1626992 5736208 1627560 5730576 1626800 5736136 1626040 5738272 -1626800 5736136 1625656 5738160 1625760 5738184 1626040 5738272 -1626992 5736208 1626800 5736136 1626040 5738272 1627736 5737704 -1626800 5736136 1625120 5738032 1625488 5738112 1625656 5738160 -1626992 5736208 1627632 5730600 1627560 5730576 1626800 5736136 -1626992 5736208 1627632 5730600 1626800 5736136 1626040 5738272 -1626992 5736208 1627856 5736056 1627632 5730600 1626800 5736136 -1626992 5736208 1627856 5736056 1626800 5736136 1626040 5738272 -1626992 5736208 1627168 5736256 1627856 5736056 1626800 5736136 -1627856 5736056 1627656 5730600 1627632 5730600 1626800 5736136 -1627560 5730576 1627440 5730528 1626800 5736136 1627632 5730600 -1627632 5730600 1627560 5730576 1626800 5736136 1627856 5736056 -1624904 5738000 1626800 5736136 1621784 5733192 1621712 5733232 -1627328 5730448 1626664 5736032 1626800 5736136 1627360 5730472 -1626800 5736136 1627440 5730528 1627360 5730472 1626664 5736032 -1627360 5730472 1627328 5730448 1626664 5736032 1627440 5730528 -1626800 5736136 1627560 5730576 1627440 5730528 1626664 5736032 -1627560 5730576 1627520 5730552 1627440 5730528 1626664 5736032 -1627440 5730528 1627360 5730472 1626664 5736032 1627560 5730576 -1626800 5736136 1626664 5736032 1621808 5733136 1621784 5733192 -1626664 5736032 1627328 5730448 1621808 5733136 1621784 5733192 -1627328 5730448 1621808 5733136 1626664 5736032 1627360 5730472 -1621808 5733136 1626664 5736032 1627328 5730448 1621800 5732912 -1626664 5736032 1621784 5733192 1626800 5736136 1627560 5730576 -1626800 5736136 1626664 5736032 1621784 5733192 1624904 5738000 -1626664 5736032 1621808 5733136 1621784 5733192 1624904 5738000 -1626800 5736136 1626664 5736032 1624904 5738000 1625120 5738032 -1626800 5736136 1626664 5736032 1625120 5738032 1625488 5738112 -1626664 5736032 1624904 5738000 1625120 5738032 1625488 5738112 -1626800 5736136 1627560 5730576 1626664 5736032 1625488 5738112 -1626664 5736032 1621784 5733192 1624904 5738000 1625120 5738032 -1626800 5736136 1627632 5730600 1627560 5730576 1626664 5736032 -1627560 5730576 1627440 5730528 1626664 5736032 1627632 5730600 -1626800 5736136 1627632 5730600 1626664 5736032 1625488 5738112 -1626800 5736136 1626664 5736032 1625488 5738112 1625656 5738160 -1626800 5736136 1626664 5736032 1625656 5738160 1625760 5738184 -1626664 5736032 1625120 5738032 1625488 5738112 1625656 5738160 -1626800 5736136 1626664 5736032 1625760 5738184 1626040 5738272 -1626800 5736136 1627632 5730600 1626664 5736032 1625760 5738184 -1626664 5736032 1625488 5738112 1625656 5738160 1625760 5738184 -1626800 5736136 1627856 5736056 1627632 5730600 1626664 5736032 -1626800 5736136 1626992 5736208 1627856 5736056 1626664 5736032 -1626992 5736208 1627168 5736256 1627856 5736056 1626664 5736032 -1626800 5736136 1626992 5736208 1626664 5736032 1625760 5738184 -1627856 5736056 1627656 5730600 1627632 5730600 1626664 5736032 -1627632 5730600 1627560 5730576 1626664 5736032 1627856 5736056 -1627856 5736056 1627632 5730600 1626664 5736032 1626992 5736208 -1621784 5733192 1621712 5733232 1624904 5738000 1626664 5736032 -1626664 5736032 1626504 5735936 1621808 5733136 1621784 5733192 -1626664 5736032 1626504 5735936 1621784 5733192 1624904 5738000 -1626504 5735936 1621808 5733136 1621784 5733192 1624904 5738000 -1626664 5736032 1627328 5730448 1626504 5735936 1624904 5738000 -1627328 5730448 1626504 5735936 1626664 5736032 1627360 5730472 -1626664 5736032 1627440 5730528 1627360 5730472 1626504 5735936 -1626664 5736032 1627560 5730576 1627440 5730528 1626504 5735936 -1627560 5730576 1627520 5730552 1627440 5730528 1626504 5735936 -1627440 5730528 1627360 5730472 1626504 5735936 1627560 5730576 -1626664 5736032 1627632 5730600 1627560 5730576 1626504 5735936 -1627560 5730576 1627440 5730528 1626504 5735936 1627632 5730600 -1626504 5735936 1624904 5738000 1626664 5736032 1627632 5730600 -1627360 5730472 1627328 5730448 1626504 5735936 1627440 5730528 -1626504 5735936 1627328 5730448 1621808 5733136 1621784 5733192 -1627328 5730448 1621808 5733136 1626504 5735936 1627360 5730472 -1621808 5733136 1626504 5735936 1627328 5730448 1621800 5732912 -1626664 5736032 1626504 5735936 1624904 5738000 1625120 5738032 -1626504 5735936 1621784 5733192 1624904 5738000 1625120 5738032 -1626664 5736032 1627632 5730600 1626504 5735936 1625120 5738032 -1626664 5736032 1626504 5735936 1625120 5738032 1625488 5738112 -1626664 5736032 1626504 5735936 1625488 5738112 1625656 5738160 -1626664 5736032 1627632 5730600 1626504 5735936 1625656 5738160 -1626504 5735936 1625120 5738032 1625488 5738112 1625656 5738160 -1626504 5735936 1624904 5738000 1625120 5738032 1625488 5738112 -1626664 5736032 1627856 5736056 1627632 5730600 1626504 5735936 -1627632 5730600 1627560 5730576 1626504 5735936 1627856 5736056 -1626664 5736032 1627856 5736056 1626504 5735936 1625656 5738160 -1627856 5736056 1627656 5730600 1627632 5730600 1626504 5735936 -1626664 5736032 1626504 5735936 1625656 5738160 1625760 5738184 -1626664 5736032 1626992 5736208 1627856 5736056 1626504 5735936 -1621784 5733192 1621712 5733232 1624904 5738000 1626504 5735936 -1626504 5735936 1626320 5735888 1624904 5738000 1625120 5738032 -1621784 5733192 1626320 5735888 1626504 5735936 1621808 5733136 -1621784 5733192 1624904 5738000 1626320 5735888 1621808 5733136 -1626504 5735936 1627328 5730448 1621808 5733136 1626320 5735888 -1621808 5733136 1621784 5733192 1626320 5735888 1627328 5730448 -1626504 5735936 1627328 5730448 1626320 5735888 1625120 5738032 -1626504 5735936 1627360 5730472 1627328 5730448 1626320 5735888 -1626504 5735936 1627440 5730528 1627360 5730472 1626320 5735888 -1626504 5735936 1627560 5730576 1627440 5730528 1626320 5735888 -1627560 5730576 1627520 5730552 1627440 5730528 1626320 5735888 -1626504 5735936 1627632 5730600 1627560 5730576 1626320 5735888 -1627560 5730576 1627440 5730528 1626320 5735888 1627632 5730600 -1626504 5735936 1627856 5736056 1627632 5730600 1626320 5735888 -1627440 5730528 1627360 5730472 1626320 5735888 1627560 5730576 -1627328 5730448 1621808 5733136 1626320 5735888 1627360 5730472 -1626504 5735936 1627632 5730600 1626320 5735888 1625120 5738032 -1627360 5730472 1627328 5730448 1626320 5735888 1627440 5730528 -1626320 5735888 1621784 5733192 1624904 5738000 1625120 5738032 -1627328 5730448 1621800 5732912 1621808 5733136 1626320 5735888 -1627328 5730448 1627296 5730408 1621800 5732912 1626320 5735888 -1621808 5733136 1621784 5733192 1626320 5735888 1621800 5732912 -1627328 5730448 1621800 5732912 1626320 5735888 1627360 5730472 -1626504 5735936 1626320 5735888 1625120 5738032 1625488 5738112 -1626320 5735888 1624904 5738000 1625120 5738032 1625488 5738112 -1626504 5735936 1627632 5730600 1626320 5735888 1625488 5738112 -1626504 5735936 1626320 5735888 1625488 5738112 1625656 5738160 -1626504 5735936 1626320 5735888 1625656 5738160 1626664 5736032 -1626504 5735936 1627632 5730600 1626320 5735888 1626664 5736032 -1626320 5735888 1625488 5738112 1625656 5738160 1626664 5736032 -1626320 5735888 1625120 5738032 1625488 5738112 1625656 5738160 -1625656 5738160 1625760 5738184 1626664 5736032 1626320 5735888 -1625760 5738184 1626800 5736136 1626664 5736032 1626320 5735888 -1626664 5736032 1626504 5735936 1626320 5735888 1626800 5736136 -1625760 5738184 1626040 5738272 1626800 5736136 1626320 5735888 -1625656 5738160 1625760 5738184 1626320 5735888 1625488 5738112 -1625760 5738184 1626800 5736136 1626320 5735888 1625656 5738160 -1624904 5738000 1626320 5735888 1621784 5733192 1621712 5733232 -1621784 5733192 1626240 5735904 1626320 5735888 1621808 5733136 -1626240 5735904 1624904 5738000 1626320 5735888 1621808 5733136 -1621784 5733192 1624904 5738000 1626240 5735904 1621808 5733136 -1626320 5735888 1621800 5732912 1621808 5733136 1626240 5735904 -1626320 5735888 1621800 5732912 1626240 5735904 1624904 5738000 -1621808 5733136 1621784 5733192 1626240 5735904 1621800 5732912 -1626320 5735888 1626240 5735904 1624904 5738000 1625120 5738032 -1626320 5735888 1621800 5732912 1626240 5735904 1625120 5738032 -1626240 5735904 1621784 5733192 1624904 5738000 1625120 5738032 -1626320 5735888 1626240 5735904 1625120 5738032 1625488 5738112 -1626320 5735888 1621800 5732912 1626240 5735904 1625488 5738112 -1626240 5735904 1624904 5738000 1625120 5738032 1625488 5738112 -1626320 5735888 1627328 5730448 1621800 5732912 1626240 5735904 -1627328 5730448 1627296 5730408 1621800 5732912 1626240 5735904 -1626320 5735888 1627328 5730448 1626240 5735904 1625488 5738112 -1621800 5732912 1621808 5733136 1626240 5735904 1627328 5730448 -1626320 5735888 1627360 5730472 1627328 5730448 1626240 5735904 -1626320 5735888 1627360 5730472 1626240 5735904 1625488 5738112 -1626320 5735888 1627440 5730528 1627360 5730472 1626240 5735904 -1626320 5735888 1627440 5730528 1626240 5735904 1625488 5738112 -1626320 5735888 1627560 5730576 1627440 5730528 1626240 5735904 -1627360 5730472 1627328 5730448 1626240 5735904 1627440 5730528 -1627328 5730448 1621800 5732912 1626240 5735904 1627360 5730472 -1626320 5735888 1626240 5735904 1625488 5738112 1625656 5738160 -1626320 5735888 1627440 5730528 1626240 5735904 1625656 5738160 -1626240 5735904 1625120 5738032 1625488 5738112 1625656 5738160 -1626320 5735888 1626240 5735904 1625656 5738160 1625760 5738184 -1626320 5735888 1627440 5730528 1626240 5735904 1625760 5738184 -1626240 5735904 1625488 5738112 1625656 5738160 1625760 5738184 -1626320 5735888 1626240 5735904 1625760 5738184 1626800 5736136 -1626320 5735888 1627440 5730528 1626240 5735904 1626800 5736136 -1626320 5735888 1626240 5735904 1626800 5736136 1626664 5736032 -1626320 5735888 1627440 5730528 1626240 5735904 1626664 5736032 -1626320 5735888 1626240 5735904 1626664 5736032 1626504 5735936 -1626320 5735888 1627440 5730528 1626240 5735904 1626504 5735936 -1626240 5735904 1626800 5736136 1626664 5736032 1626504 5735936 -1625760 5738184 1626040 5738272 1626800 5736136 1626240 5735904 -1626240 5735904 1625656 5738160 1625760 5738184 1626800 5736136 -1626240 5735904 1625760 5738184 1626800 5736136 1626664 5736032 -1624904 5738000 1626240 5735904 1621784 5733192 1621712 5733232 -1626240 5735904 1626096 5736000 1624904 5738000 1625120 5738032 -1626240 5735904 1626096 5736000 1625120 5738032 1625488 5738112 -1626096 5736000 1624904 5738000 1625120 5738032 1625488 5738112 -1621784 5733192 1626096 5736000 1626240 5735904 1621808 5733136 -1626240 5735904 1621800 5732912 1621808 5733136 1626096 5736000 -1626240 5735904 1621808 5733136 1626096 5736000 1625488 5738112 -1626096 5736000 1621784 5733192 1624904 5738000 1625120 5738032 -1621784 5733192 1624904 5738000 1626096 5736000 1621808 5733136 -1626240 5735904 1626096 5736000 1625488 5738112 1625656 5738160 -1626096 5736000 1625120 5738032 1625488 5738112 1625656 5738160 -1626240 5735904 1621808 5733136 1626096 5736000 1625656 5738160 -1626240 5735904 1626096 5736000 1625656 5738160 1625760 5738184 -1626240 5735904 1621808 5733136 1626096 5736000 1625760 5738184 -1626096 5736000 1625488 5738112 1625656 5738160 1625760 5738184 -1626240 5735904 1626096 5736000 1625760 5738184 1626800 5736136 -1626240 5735904 1621808 5733136 1626096 5736000 1626800 5736136 -1625760 5738184 1626040 5738272 1626800 5736136 1626096 5736000 -1626096 5736000 1625656 5738160 1625760 5738184 1626800 5736136 -1626240 5735904 1626096 5736000 1626800 5736136 1626664 5736032 -1626240 5735904 1621808 5733136 1626096 5736000 1626664 5736032 -1626240 5735904 1626096 5736000 1626664 5736032 1626504 5735936 -1626240 5735904 1621808 5733136 1626096 5736000 1626504 5735936 -1626240 5735904 1626096 5736000 1626504 5735936 1626320 5735888 -1626096 5736000 1625760 5738184 1626800 5736136 1626664 5736032 -1626096 5736000 1626800 5736136 1626664 5736032 1626504 5735936 -1624904 5738000 1626096 5736000 1621784 5733192 1621712 5733232 -1626096 5736000 1626064 5736040 1624904 5738000 1625120 5738032 -1626096 5736000 1626064 5736040 1625120 5738032 1625488 5738112 -1626096 5736000 1626064 5736040 1625488 5738112 1625656 5738160 -1626064 5736040 1625120 5738032 1625488 5738112 1625656 5738160 -1626064 5736040 1624904 5738000 1625120 5738032 1625488 5738112 -1626096 5736000 1621784 5733192 1626064 5736040 1625656 5738160 -1621784 5733192 1626064 5736040 1626096 5736000 1621808 5733136 -1626064 5736040 1621784 5733192 1624904 5738000 1625120 5738032 -1626096 5736000 1626064 5736040 1625656 5738160 1625760 5738184 -1626064 5736040 1625488 5738112 1625656 5738160 1625760 5738184 -1626096 5736000 1621784 5733192 1626064 5736040 1625760 5738184 -1626096 5736000 1626064 5736040 1625760 5738184 1626800 5736136 -1626096 5736000 1621784 5733192 1626064 5736040 1626800 5736136 -1626064 5736040 1625656 5738160 1625760 5738184 1626800 5736136 -1625760 5738184 1626040 5738272 1626800 5736136 1626064 5736040 -1625760 5738184 1626040 5738272 1626064 5736040 1625656 5738160 -1626096 5736000 1626064 5736040 1626800 5736136 1626664 5736032 -1626096 5736000 1621784 5733192 1626064 5736040 1626664 5736032 -1626800 5736136 1626664 5736032 1626064 5736040 1626040 5738272 -1626040 5738272 1626992 5736208 1626800 5736136 1626064 5736040 -1626096 5736000 1626064 5736040 1626664 5736032 1626504 5735936 -1626096 5736000 1621784 5733192 1626064 5736040 1626504 5735936 -1626096 5736000 1626064 5736040 1626504 5735936 1626240 5735904 -1626064 5736040 1626800 5736136 1626664 5736032 1626504 5735936 -1624904 5738000 1626064 5736040 1621784 5733192 1621712 5733232 -1626064 5736040 1626048 5736096 1625488 5738112 1625656 5738160 -1626064 5736040 1626048 5736096 1625656 5738160 1625760 5738184 -1626048 5736096 1625488 5738112 1625656 5738160 1625760 5738184 -1625120 5738032 1626048 5736096 1626064 5736040 1624904 5738000 -1626064 5736040 1621784 5733192 1624904 5738000 1626048 5736096 -1624904 5738000 1625120 5738032 1626048 5736096 1621784 5733192 -1626064 5736040 1621784 5733192 1626048 5736096 1625760 5738184 -1626064 5736040 1626096 5736000 1621784 5733192 1626048 5736096 -1626048 5736096 1625120 5738032 1625488 5738112 1625656 5738160 -1625120 5738032 1625488 5738112 1626048 5736096 1624904 5738000 -1626064 5736040 1626048 5736096 1625760 5738184 1626040 5738272 -1626048 5736096 1625656 5738160 1625760 5738184 1626040 5738272 -1626064 5736040 1621784 5733192 1626048 5736096 1626040 5738272 -1626064 5736040 1626048 5736096 1626040 5738272 1626800 5736136 -1626064 5736040 1621784 5733192 1626048 5736096 1626800 5736136 -1626048 5736096 1625760 5738184 1626040 5738272 1626800 5736136 -1626064 5736040 1626048 5736096 1626800 5736136 1626664 5736032 -1626064 5736040 1621784 5733192 1626048 5736096 1626664 5736032 -1626048 5736096 1626040 5738272 1626800 5736136 1626664 5736032 -1626064 5736040 1626048 5736096 1626664 5736032 1626504 5735936 -1626064 5736040 1621784 5733192 1626048 5736096 1626504 5735936 -1626048 5736096 1626800 5736136 1626664 5736032 1626504 5735936 -1626040 5738272 1626992 5736208 1626800 5736136 1626048 5736096 -1626064 5736040 1626048 5736096 1626504 5735936 1626096 5736000 -1626064 5736040 1621784 5733192 1626048 5736096 1626096 5736000 -1626504 5735936 1626240 5735904 1626096 5736000 1626048 5736096 -1626504 5735936 1626320 5735888 1626240 5735904 1626048 5736096 -1626048 5736096 1626664 5736032 1626504 5735936 1626240 5735904 -1626096 5736000 1626064 5736040 1626048 5736096 1626240 5735904 -1621784 5733192 1621712 5733232 1624904 5738000 1626048 5736096 -1626040 5738272 1626072 5736440 1626048 5736096 1625760 5738184 -1626048 5736096 1625656 5738160 1625760 5738184 1626072 5736440 -1626048 5736096 1625488 5738112 1625656 5738160 1626072 5736440 -1625656 5738160 1625760 5738184 1626072 5736440 1625488 5738112 -1626048 5736096 1625120 5738032 1625488 5738112 1626072 5736440 -1625488 5738112 1625656 5738160 1626072 5736440 1625120 5738032 -1626072 5736440 1626800 5736136 1626048 5736096 1625120 5738032 -1626048 5736096 1624904 5738000 1625120 5738032 1626072 5736440 -1626048 5736096 1621784 5733192 1624904 5738000 1626072 5736440 -1625120 5738032 1625488 5738112 1626072 5736440 1624904 5738000 -1626048 5736096 1624904 5738000 1626072 5736440 1626800 5736136 -1626040 5738272 1626800 5736136 1626072 5736440 1625760 5738184 -1625760 5738184 1626040 5738272 1626072 5736440 1625656 5738160 -1626048 5736096 1626072 5736440 1626800 5736136 1626664 5736032 -1626048 5736096 1624904 5738000 1626072 5736440 1626664 5736032 -1626072 5736440 1626040 5738272 1626800 5736136 1626664 5736032 -1626048 5736096 1626072 5736440 1626664 5736032 1626504 5735936 -1626048 5736096 1624904 5738000 1626072 5736440 1626504 5735936 -1626072 5736440 1626800 5736136 1626664 5736032 1626504 5735936 -1626048 5736096 1626072 5736440 1626504 5735936 1626240 5735904 -1626800 5736136 1626072 5736440 1626040 5738272 1626992 5736208 -1626800 5736136 1626664 5736032 1626072 5736440 1626992 5736208 -1626072 5736440 1625760 5738184 1626040 5738272 1626992 5736208 -1626040 5738272 1627736 5737704 1626992 5736208 1626072 5736440 -1626040 5738272 1627736 5737704 1626072 5736440 1625760 5738184 -1626040 5738272 1626136 5738328 1627736 5737704 1626072 5736440 -1626040 5738272 1626136 5738328 1626072 5736440 1625760 5738184 -1626136 5738328 1626688 5738608 1627736 5737704 1626072 5736440 -1627736 5737704 1626992 5736208 1626072 5736440 1626136 5738328 -1626992 5736208 1626800 5736136 1626072 5736440 1627736 5737704 -1627736 5737704 1627376 5736376 1626992 5736208 1626072 5736440 -1627736 5737704 1627624 5736560 1627376 5736376 1626072 5736440 -1627376 5736376 1627168 5736256 1626992 5736208 1626072 5736440 -1627736 5737704 1627376 5736376 1626072 5736440 1626136 5738328 -1626992 5736208 1626800 5736136 1626072 5736440 1627376 5736376 -1626072 5736440 1626056 5736464 1625120 5738032 1625488 5738112 -1626072 5736440 1626056 5736464 1625488 5738112 1625656 5738160 -1626072 5736440 1626056 5736464 1625656 5738160 1625760 5738184 -1626056 5736464 1625488 5738112 1625656 5738160 1625760 5738184 -1626056 5736464 1625120 5738032 1625488 5738112 1625656 5738160 -1624904 5738000 1626056 5736464 1626072 5736440 1626048 5736096 -1624904 5738000 1626056 5736464 1626048 5736096 1621784 5733192 -1626072 5736440 1626048 5736096 1626056 5736464 1625760 5738184 -1626056 5736464 1624904 5738000 1625120 5738032 1625488 5738112 -1624904 5738000 1625120 5738032 1626056 5736464 1626048 5736096 -1626072 5736440 1626056 5736464 1625760 5738184 1626040 5738272 -1626056 5736464 1625656 5738160 1625760 5738184 1626040 5738272 -1626072 5736440 1626056 5736464 1626040 5738272 1626136 5738328 -1626072 5736440 1626056 5736464 1626136 5738328 1627736 5737704 -1626056 5736464 1626040 5738272 1626136 5738328 1627736 5737704 -1626072 5736440 1626048 5736096 1626056 5736464 1627736 5737704 -1626056 5736464 1625760 5738184 1626040 5738272 1626136 5738328 -1626136 5738328 1626688 5738608 1627736 5737704 1626056 5736464 -1626072 5736440 1626056 5736464 1627736 5737704 1627376 5736376 -1626056 5736464 1626136 5738328 1627736 5737704 1627376 5736376 -1626072 5736440 1626048 5736096 1626056 5736464 1627376 5736376 -1627736 5737704 1627624 5736560 1627376 5736376 1626056 5736464 -1626072 5736440 1626056 5736464 1627376 5736376 1626992 5736208 -1626072 5736440 1626048 5736096 1626056 5736464 1626992 5736208 -1627376 5736376 1627168 5736256 1626992 5736208 1626056 5736464 -1626056 5736464 1627736 5737704 1627376 5736376 1626992 5736208 -1626072 5736440 1626056 5736464 1626992 5736208 1626800 5736136 -1626056 5736464 1626032 5736528 1625488 5738112 1625656 5738160 -1626056 5736464 1626032 5736528 1625656 5738160 1625760 5738184 -1626056 5736464 1626032 5736528 1625760 5738184 1626040 5738272 -1626032 5736528 1625656 5738160 1625760 5738184 1626040 5738272 -1626032 5736528 1625488 5738112 1625656 5738160 1625760 5738184 -1625120 5738032 1626032 5736528 1626056 5736464 1624904 5738000 -1626056 5736464 1624904 5738000 1626032 5736528 1626040 5738272 -1626056 5736464 1626048 5736096 1624904 5738000 1626032 5736528 -1626048 5736096 1621784 5733192 1624904 5738000 1626032 5736528 -1626056 5736464 1626072 5736440 1626048 5736096 1626032 5736528 -1624904 5738000 1625120 5738032 1626032 5736528 1626048 5736096 -1626056 5736464 1626048 5736096 1626032 5736528 1626040 5738272 -1626032 5736528 1625120 5738032 1625488 5738112 1625656 5738160 -1625120 5738032 1625488 5738112 1626032 5736528 1624904 5738000 -1626056 5736464 1626032 5736528 1626040 5738272 1626136 5738328 -1626032 5736528 1625760 5738184 1626040 5738272 1626136 5738328 -1626056 5736464 1626032 5736528 1626136 5738328 1627736 5737704 -1626056 5736464 1626032 5736528 1627736 5737704 1627376 5736376 -1626032 5736528 1626136 5738328 1627736 5737704 1627376 5736376 -1626056 5736464 1626048 5736096 1626032 5736528 1627376 5736376 -1627736 5737704 1627624 5736560 1627376 5736376 1626032 5736528 -1626032 5736528 1626040 5738272 1626136 5738328 1627736 5737704 -1626136 5738328 1626688 5738608 1627736 5737704 1626032 5736528 -1626056 5736464 1626032 5736528 1627376 5736376 1626992 5736208 -1626032 5736528 1627736 5737704 1627376 5736376 1626992 5736208 -1626056 5736464 1626048 5736096 1626032 5736528 1626992 5736208 -1627376 5736376 1627168 5736256 1626992 5736208 1626032 5736528 -1626056 5736464 1626032 5736528 1626992 5736208 1626072 5736440 -1626056 5736464 1626048 5736096 1626032 5736528 1626072 5736440 -1626032 5736528 1627376 5736376 1626992 5736208 1626072 5736440 -1626992 5736208 1626800 5736136 1626072 5736440 1626032 5736528 -1626800 5736136 1626664 5736032 1626072 5736440 1626032 5736528 -1626992 5736208 1626800 5736136 1626032 5736528 1627376 5736376 -1626072 5736440 1626056 5736464 1626032 5736528 1626800 5736136 -1626032 5736528 1626008 5736584 1625488 5738112 1625656 5738160 -1626032 5736528 1626008 5736584 1625656 5738160 1625760 5738184 -1626032 5736528 1626008 5736584 1625760 5738184 1626040 5738272 -1626032 5736528 1626008 5736584 1626040 5738272 1626136 5738328 -1626008 5736584 1625760 5738184 1626040 5738272 1626136 5738328 -1626008 5736584 1625656 5738160 1625760 5738184 1626040 5738272 -1626008 5736584 1625488 5738112 1625656 5738160 1625760 5738184 -1626032 5736528 1625120 5738032 1626008 5736584 1626136 5738328 -1625120 5738032 1626008 5736584 1626032 5736528 1624904 5738000 -1626032 5736528 1626048 5736096 1624904 5738000 1626008 5736584 -1626048 5736096 1621784 5733192 1624904 5738000 1626008 5736584 -1626032 5736528 1626056 5736464 1626048 5736096 1626008 5736584 -1626008 5736584 1626136 5738328 1626032 5736528 1626048 5736096 -1624904 5738000 1625120 5738032 1626008 5736584 1626048 5736096 -1626008 5736584 1625120 5738032 1625488 5738112 1625656 5738160 -1626032 5736528 1626008 5736584 1626136 5738328 1627736 5737704 -1626008 5736584 1626040 5738272 1626136 5738328 1627736 5737704 -1626032 5736528 1626008 5736584 1627736 5737704 1627376 5736376 -1626032 5736528 1626008 5736584 1627376 5736376 1626992 5736208 -1626008 5736584 1627736 5737704 1627376 5736376 1626992 5736208 -1626032 5736528 1626048 5736096 1626008 5736584 1626992 5736208 -1627736 5737704 1627624 5736560 1627376 5736376 1626008 5736584 -1627376 5736376 1627168 5736256 1626992 5736208 1626008 5736584 -1626008 5736584 1626136 5738328 1627736 5737704 1627376 5736376 -1626136 5738328 1626688 5738608 1627736 5737704 1626008 5736584 -1626032 5736528 1626008 5736584 1626992 5736208 1626800 5736136 -1625120 5738032 1625488 5738112 1626008 5736584 1624904 5738000 -1624904 5738000 1625920 5736648 1626048 5736096 1621784 5733192 -1626048 5736096 1625920 5736648 1626008 5736584 1626032 5736528 -1626048 5736096 1625920 5736648 1626032 5736528 1626056 5736464 -1626048 5736096 1625920 5736648 1626056 5736464 1626072 5736440 -1625920 5736648 1626008 5736584 1626032 5736528 1626056 5736464 -1626008 5736584 1625920 5736648 1624904 5738000 1625120 5738032 -1625920 5736648 1625120 5738032 1626008 5736584 1626032 5736528 -1626008 5736584 1625920 5736648 1625120 5738032 1625488 5738112 -1625920 5736648 1624904 5738000 1625120 5738032 1625488 5738112 -1626008 5736584 1625920 5736648 1625488 5738112 1625656 5738160 -1626008 5736584 1625920 5736648 1625656 5738160 1625760 5738184 -1626008 5736584 1625920 5736648 1625760 5738184 1626040 5738272 -1626008 5736584 1625920 5736648 1626040 5738272 1626136 5738328 -1625920 5736648 1625656 5738160 1625760 5738184 1626040 5738272 -1625920 5736648 1625488 5738112 1625656 5738160 1625760 5738184 -1626008 5736584 1626032 5736528 1625920 5736648 1626040 5738272 -1625920 5736648 1625120 5738032 1625488 5738112 1625656 5738160 -1625920 5736648 1626048 5736096 1624904 5738000 1625120 5738032 -1626048 5736096 1624904 5738000 1625920 5736648 1626056 5736464 -1624904 5738000 1625880 5736656 1626048 5736096 1621784 5733192 -1626048 5736096 1626064 5736040 1621784 5733192 1625880 5736656 -1625920 5736648 1625880 5736656 1624904 5738000 1625120 5738032 -1625920 5736648 1625880 5736656 1625120 5738032 1625488 5738112 -1625920 5736648 1625880 5736656 1625488 5738112 1625656 5738160 -1625880 5736656 1625120 5738032 1625488 5738112 1625656 5738160 -1625920 5736648 1625880 5736656 1625656 5738160 1625760 5738184 -1625920 5736648 1625880 5736656 1625760 5738184 1626040 5738272 -1625880 5736656 1625488 5738112 1625656 5738160 1625760 5738184 -1625880 5736656 1624904 5738000 1625120 5738032 1625488 5738112 -1625920 5736648 1626048 5736096 1625880 5736656 1625760 5738184 -1626048 5736096 1625880 5736656 1625920 5736648 1626056 5736464 -1626048 5736096 1625880 5736656 1626056 5736464 1626072 5736440 -1625920 5736648 1626032 5736528 1626056 5736464 1625880 5736656 -1625920 5736648 1626008 5736584 1626032 5736528 1625880 5736656 -1625880 5736656 1625760 5738184 1625920 5736648 1626032 5736528 -1626056 5736464 1626048 5736096 1625880 5736656 1626032 5736528 -1624904 5738000 1625120 5738032 1625880 5736656 1621784 5733192 -1625880 5736656 1626056 5736464 1626048 5736096 1621784 5733192 -1624904 5738000 1625880 5736656 1621784 5733192 1621712 5733232 -1621784 5733192 1625752 5736648 1625880 5736656 1626048 5736096 -1621784 5733192 1625752 5736648 1626048 5736096 1626064 5736040 -1625752 5736648 1625880 5736656 1626048 5736096 1626064 5736040 -1621784 5733192 1625752 5736648 1626064 5736040 1626096 5736000 -1625880 5736656 1625752 5736648 1624904 5738000 1625120 5738032 -1625880 5736656 1625752 5736648 1625120 5738032 1625488 5738112 -1625880 5736656 1625752 5736648 1625488 5738112 1625656 5738160 -1625752 5736648 1624904 5738000 1625120 5738032 1625488 5738112 -1625752 5736648 1625488 5738112 1625880 5736656 1626048 5736096 -1625880 5736656 1626056 5736464 1626048 5736096 1625752 5736648 -1626048 5736096 1626064 5736040 1625752 5736648 1626056 5736464 -1626056 5736464 1626072 5736440 1626048 5736096 1625752 5736648 -1625880 5736656 1626032 5736528 1626056 5736464 1625752 5736648 -1625880 5736656 1625920 5736648 1626032 5736528 1625752 5736648 -1625880 5736656 1626032 5736528 1625752 5736648 1625488 5738112 -1626056 5736464 1626048 5736096 1625752 5736648 1626032 5736528 -1625752 5736648 1621784 5733192 1624904 5738000 1625120 5738032 -1621784 5733192 1624904 5738000 1625752 5736648 1626064 5736040 -1624904 5738000 1625752 5736648 1621784 5733192 1621712 5733232 -1624904 5738000 1625752 5736648 1621712 5733232 1621616 5733232 -1624904 5738000 1625120 5738032 1625752 5736648 1621712 5733232 -1625752 5736648 1626064 5736040 1621784 5733192 1621712 5733232 -1624904 5738000 1625448 5736544 1621712 5733232 1621616 5733232 -1625752 5736648 1625448 5736544 1624904 5738000 1625120 5738032 -1625752 5736648 1625448 5736544 1625120 5738032 1625488 5738112 -1625752 5736648 1621712 5733232 1625448 5736544 1625120 5738032 -1625448 5736544 1621712 5733232 1624904 5738000 1625120 5738032 -1621712 5733232 1625448 5736544 1625752 5736648 1621784 5733192 -1625448 5736544 1625120 5738032 1625752 5736648 1621784 5733192 -1625752 5736648 1626064 5736040 1621784 5733192 1625448 5736544 -1625752 5736648 1626048 5736096 1626064 5736040 1625448 5736544 -1625752 5736648 1626056 5736464 1626048 5736096 1625448 5736544 -1626064 5736040 1626096 5736000 1621784 5733192 1625448 5736544 -1626096 5736000 1621808 5733136 1621784 5733192 1625448 5736544 -1625752 5736648 1626048 5736096 1625448 5736544 1625120 5738032 -1626064 5736040 1626096 5736000 1625448 5736544 1626048 5736096 -1621712 5733232 1624904 5738000 1625448 5736544 1621784 5733192 -1621784 5733192 1621712 5733232 1625448 5736544 1626096 5736000 -1624904 5738000 1625152 5736368 1621712 5733232 1621616 5733232 -1625448 5736544 1625152 5736368 1624904 5738000 1625120 5738032 -1621712 5733232 1625152 5736368 1625448 5736544 1621784 5733192 -1625152 5736368 1624904 5738000 1625448 5736544 1621784 5733192 -1621712 5733232 1624904 5738000 1625152 5736368 1621784 5733192 -1625448 5736544 1626096 5736000 1621784 5733192 1625152 5736368 -1626096 5736000 1621808 5733136 1621784 5733192 1625152 5736368 -1626096 5736000 1626240 5735904 1621808 5733136 1625152 5736368 -1626240 5735904 1621800 5732912 1621808 5733136 1625152 5736368 -1621808 5733136 1621784 5733192 1625152 5736368 1626240 5735904 -1625448 5736544 1626064 5736040 1626096 5736000 1625152 5736368 -1625448 5736544 1626048 5736096 1626064 5736040 1625152 5736368 -1625448 5736544 1625752 5736648 1626048 5736096 1625152 5736368 -1626064 5736040 1626096 5736000 1625152 5736368 1626048 5736096 -1625448 5736544 1626048 5736096 1625152 5736368 1624904 5738000 -1621784 5733192 1621712 5733232 1625152 5736368 1621808 5733136 -1626096 5736000 1626240 5735904 1625152 5736368 1626064 5736040 -1624904 5738000 1624896 5736208 1621712 5733232 1621616 5733232 -1624904 5738000 1624896 5736208 1621616 5733232 1615632 5735512 -1625152 5736368 1624896 5736208 1624904 5738000 1625448 5736544 -1621712 5733232 1624896 5736208 1625152 5736368 1621784 5733192 -1625152 5736368 1621808 5733136 1621784 5733192 1624896 5736208 -1625152 5736368 1626240 5735904 1621808 5733136 1624896 5736208 -1626240 5735904 1621800 5732912 1621808 5733136 1624896 5736208 -1625152 5736368 1626096 5736000 1626240 5735904 1624896 5736208 -1626240 5735904 1621808 5733136 1624896 5736208 1626096 5736000 -1621808 5733136 1621784 5733192 1624896 5736208 1626240 5735904 -1624896 5736208 1624904 5738000 1625152 5736368 1626096 5736000 -1621784 5733192 1621712 5733232 1624896 5736208 1621808 5733136 -1624896 5736208 1621784 5733192 1621712 5733232 1621616 5733232 -1624904 5738000 1625152 5736368 1624896 5736208 1621616 5733232 -1625152 5736368 1626064 5736040 1626096 5736000 1624896 5736208 -1626096 5736000 1626240 5735904 1624896 5736208 1626064 5736040 -1625152 5736368 1626048 5736096 1626064 5736040 1624896 5736208 -1625152 5736368 1626064 5736040 1624896 5736208 1624904 5738000 -1621808 5733136 1624808 5736120 1626240 5735904 1621800 5732912 -1626240 5735904 1624808 5736120 1624896 5736208 1626096 5736000 -1624896 5736208 1626064 5736040 1626096 5736000 1624808 5736120 -1626096 5736000 1626240 5735904 1624808 5736120 1626064 5736040 -1626240 5735904 1627328 5730448 1621800 5732912 1624808 5736120 -1624896 5736208 1624808 5736120 1621808 5733136 1621784 5733192 -1624896 5736208 1624808 5736120 1621784 5733192 1621712 5733232 -1624808 5736120 1621808 5733136 1621784 5733192 1621712 5733232 -1624808 5736120 1621712 5733232 1624896 5736208 1626064 5736040 -1624896 5736208 1624808 5736120 1621712 5733232 1621616 5733232 -1624896 5736208 1624808 5736120 1621616 5733232 1624904 5738000 -1621616 5733232 1615632 5735512 1624904 5738000 1624808 5736120 -1624808 5736120 1621784 5733192 1621712 5733232 1621616 5733232 -1624896 5736208 1626064 5736040 1624808 5736120 1624904 5738000 -1624808 5736120 1621712 5733232 1621616 5733232 1624904 5738000 -1621808 5733136 1621784 5733192 1624808 5736120 1621800 5732912 -1624808 5736120 1626096 5736000 1626240 5735904 1621800 5732912 -1624896 5736208 1624808 5736120 1624904 5738000 1625152 5736368 -1624896 5736208 1625152 5736368 1626064 5736040 1624808 5736120 -1624808 5736120 1624736 5736008 1621800 5732912 1621808 5733136 -1621800 5732912 1624736 5736008 1626240 5735904 1627328 5730448 -1621800 5732912 1624736 5736008 1627328 5730448 1627296 5730408 -1624736 5736008 1627328 5730448 1621800 5732912 1621808 5733136 -1624736 5736008 1624808 5736120 1626240 5735904 1627328 5730448 -1626240 5735904 1627360 5730472 1627328 5730448 1624736 5736008 -1624808 5736120 1624736 5736008 1621808 5733136 1621784 5733192 -1624736 5736008 1621800 5732912 1621808 5733136 1621784 5733192 -1624808 5736120 1624736 5736008 1621784 5733192 1621712 5733232 -1624808 5736120 1624736 5736008 1621712 5733232 1621616 5733232 -1624736 5736008 1621784 5733192 1621712 5733232 1621616 5733232 -1624808 5736120 1624736 5736008 1621616 5733232 1624904 5738000 -1621616 5733232 1615632 5735512 1624904 5738000 1624736 5736008 -1624808 5736120 1624736 5736008 1624904 5738000 1624896 5736208 -1624736 5736008 1621712 5733232 1621616 5733232 1624904 5738000 -1624736 5736008 1621808 5733136 1621784 5733192 1621712 5733232 -1624808 5736120 1626240 5735904 1624736 5736008 1624904 5738000 -1626240 5735904 1624736 5736008 1624808 5736120 1626096 5736000 -1624808 5736120 1626064 5736040 1626096 5736000 1624736 5736008 -1624808 5736120 1624896 5736208 1626064 5736040 1624736 5736008 -1626064 5736040 1626096 5736000 1624736 5736008 1624896 5736208 -1626240 5735904 1627328 5730448 1624736 5736008 1626096 5736000 -1624736 5736008 1624904 5738000 1624808 5736120 1624896 5736208 -1626096 5736000 1626240 5735904 1624736 5736008 1626064 5736040 -1624896 5736208 1625152 5736368 1626064 5736040 1624736 5736008 -1621800 5732912 1624608 5735568 1627328 5730448 1627296 5730408 -1627328 5730448 1624608 5735568 1624736 5736008 1626240 5735904 -1624736 5736008 1624608 5735568 1621800 5732912 1621808 5733136 -1624736 5736008 1624608 5735568 1621808 5733136 1621784 5733192 -1624608 5735568 1621800 5732912 1621808 5733136 1621784 5733192 -1624608 5735568 1621784 5733192 1624736 5736008 1626240 5735904 -1624736 5736008 1626096 5736000 1626240 5735904 1624608 5735568 -1626240 5735904 1627328 5730448 1624608 5735568 1626096 5736000 -1624736 5736008 1626096 5736000 1624608 5735568 1621784 5733192 -1624608 5735568 1627328 5730448 1621800 5732912 1621808 5733136 -1627328 5730448 1621800 5732912 1624608 5735568 1626240 5735904 -1627328 5730448 1624608 5735568 1626240 5735904 1627360 5730472 -1624608 5735568 1626096 5736000 1626240 5735904 1627360 5730472 -1626240 5735904 1627440 5730528 1627360 5730472 1624608 5735568 -1626240 5735904 1627440 5730528 1624608 5735568 1626096 5736000 -1626240 5735904 1626320 5735888 1627440 5730528 1624608 5735568 -1626240 5735904 1626320 5735888 1624608 5735568 1626096 5736000 -1626320 5735888 1627560 5730576 1627440 5730528 1624608 5735568 -1627440 5730528 1627360 5730472 1624608 5735568 1626320 5735888 -1627328 5730448 1621800 5732912 1624608 5735568 1627360 5730472 -1627360 5730472 1627328 5730448 1624608 5735568 1627440 5730528 -1624736 5736008 1624608 5735568 1621784 5733192 1621712 5733232 -1624608 5735568 1621808 5733136 1621784 5733192 1621712 5733232 -1624736 5736008 1626096 5736000 1624608 5735568 1621712 5733232 -1624736 5736008 1624608 5735568 1621712 5733232 1621616 5733232 -1624736 5736008 1626096 5736000 1624608 5735568 1621616 5733232 -1624736 5736008 1624608 5735568 1621616 5733232 1624904 5738000 -1624608 5735568 1621784 5733192 1621712 5733232 1621616 5733232 -1624736 5736008 1626064 5736040 1626096 5736000 1624608 5735568 -1624736 5736008 1624896 5736208 1626064 5736040 1624608 5735568 -1624736 5736008 1626064 5736040 1624608 5735568 1621616 5733232 -1626096 5736000 1626240 5735904 1624608 5735568 1626064 5736040 -1621800 5732912 1624520 5735400 1627328 5730448 1627296 5730408 -1621800 5732912 1624520 5735400 1627296 5730408 1621776 5732752 -1627296 5730408 1621752 5732672 1621776 5732752 1624520 5735400 -1624520 5735400 1627328 5730448 1627296 5730408 1621776 5732752 -1624608 5735568 1624520 5735400 1621800 5732912 1621808 5733136 -1624608 5735568 1624520 5735400 1621808 5733136 1621784 5733192 -1624608 5735568 1624520 5735400 1621784 5733192 1621712 5733232 -1624520 5735400 1621808 5733136 1621784 5733192 1621712 5733232 -1624520 5735400 1621800 5732912 1621808 5733136 1621784 5733192 -1624608 5735568 1627328 5730448 1624520 5735400 1621712 5733232 -1627328 5730448 1624520 5735400 1624608 5735568 1627360 5730472 -1624520 5735400 1621712 5733232 1624608 5735568 1627360 5730472 -1621800 5732912 1621808 5733136 1624520 5735400 1621776 5732752 -1624520 5735400 1627360 5730472 1627328 5730448 1627296 5730408 -1624608 5735568 1627440 5730528 1627360 5730472 1624520 5735400 -1624608 5735568 1626320 5735888 1627440 5730528 1624520 5735400 -1626320 5735888 1627560 5730576 1627440 5730528 1624520 5735400 -1624608 5735568 1626240 5735904 1626320 5735888 1624520 5735400 -1624608 5735568 1626096 5736000 1626240 5735904 1624520 5735400 -1626320 5735888 1627440 5730528 1624520 5735400 1626240 5735904 -1624608 5735568 1626240 5735904 1624520 5735400 1621712 5733232 -1627360 5730472 1627328 5730448 1624520 5735400 1627440 5730528 -1627440 5730528 1627360 5730472 1624520 5735400 1626320 5735888 -1624608 5735568 1624520 5735400 1621712 5733232 1621616 5733232 -1624520 5735400 1621784 5733192 1621712 5733232 1621616 5733232 -1624608 5735568 1626240 5735904 1624520 5735400 1621616 5733232 -1624608 5735568 1624520 5735400 1621616 5733232 1624736 5736008 -1624608 5735568 1626240 5735904 1624520 5735400 1624736 5736008 -1621616 5733232 1624904 5738000 1624736 5736008 1624520 5735400 -1624520 5735400 1621712 5733232 1621616 5733232 1624736 5736008 -1621776 5732752 1624432 5735296 1627296 5730408 1621752 5732672 -1627296 5730408 1624432 5735296 1624520 5735400 1627328 5730448 -1624520 5735400 1624432 5735296 1621776 5732752 1621800 5732912 -1624520 5735400 1624432 5735296 1621800 5732912 1621808 5733136 -1624432 5735296 1621776 5732752 1621800 5732912 1621808 5733136 -1624520 5735400 1624432 5735296 1621808 5733136 1621784 5733192 -1624520 5735400 1624432 5735296 1621784 5733192 1621712 5733232 -1624520 5735400 1624432 5735296 1621712 5733232 1621616 5733232 -1624432 5735296 1621784 5733192 1621712 5733232 1621616 5733232 -1624432 5735296 1621808 5733136 1621784 5733192 1621712 5733232 -1624432 5735296 1621800 5732912 1621808 5733136 1621784 5733192 -1624432 5735296 1621616 5733232 1624520 5735400 1627328 5730448 -1624520 5735400 1627360 5730472 1627328 5730448 1624432 5735296 -1627328 5730448 1627296 5730408 1624432 5735296 1627360 5730472 -1624520 5735400 1627440 5730528 1627360 5730472 1624432 5735296 -1624520 5735400 1627440 5730528 1624432 5735296 1621616 5733232 -1627360 5730472 1627328 5730448 1624432 5735296 1627440 5730528 -1624432 5735296 1627296 5730408 1621776 5732752 1621800 5732912 -1627296 5730408 1621776 5732752 1624432 5735296 1627328 5730448 -1624520 5735400 1626320 5735888 1627440 5730528 1624432 5735296 -1626320 5735888 1627560 5730576 1627440 5730528 1624432 5735296 -1624520 5735400 1626240 5735904 1626320 5735888 1624432 5735296 -1624520 5735400 1624608 5735568 1626240 5735904 1624432 5735296 -1627440 5730528 1627360 5730472 1624432 5735296 1626320 5735888 -1624520 5735400 1626240 5735904 1624432 5735296 1621616 5733232 -1626320 5735888 1627440 5730528 1624432 5735296 1626240 5735904 -1624520 5735400 1624432 5735296 1621616 5733232 1624736 5736008 -1624432 5735296 1621712 5733232 1621616 5733232 1624736 5736008 -1624520 5735400 1626240 5735904 1624432 5735296 1624736 5736008 -1624520 5735400 1624432 5735296 1624736 5736008 1624608 5735568 -1624520 5735400 1626240 5735904 1624432 5735296 1624608 5735568 -1621616 5733232 1624904 5738000 1624736 5736008 1624432 5735296 -1624432 5735296 1621616 5733232 1624736 5736008 1624608 5735568 -1621616 5733232 1624176 5735160 1624432 5735296 1621712 5733232 -1624432 5735296 1621784 5733192 1621712 5733232 1624176 5735160 -1621712 5733232 1621616 5733232 1624176 5735160 1621784 5733192 -1624432 5735296 1621808 5733136 1621784 5733192 1624176 5735160 -1621784 5733192 1621712 5733232 1624176 5735160 1621808 5733136 -1624432 5735296 1621800 5732912 1621808 5733136 1624176 5735160 -1624432 5735296 1621776 5732752 1621800 5732912 1624176 5735160 -1621808 5733136 1621784 5733192 1624176 5735160 1621800 5732912 -1621800 5732912 1621808 5733136 1624176 5735160 1621776 5732752 -1624432 5735296 1627296 5730408 1621776 5732752 1624176 5735160 -1627296 5730408 1621752 5732672 1621776 5732752 1624176 5735160 -1621776 5732752 1621800 5732912 1624176 5735160 1627296 5730408 -1624176 5735160 1624736 5736008 1624432 5735296 1627296 5730408 -1624432 5735296 1627328 5730448 1627296 5730408 1624176 5735160 -1624432 5735296 1627360 5730472 1627328 5730448 1624176 5735160 -1627296 5730408 1621776 5732752 1624176 5735160 1627328 5730448 -1624432 5735296 1627328 5730448 1624176 5735160 1624736 5736008 -1621616 5733232 1624736 5736008 1624176 5735160 1621712 5733232 -1624736 5736008 1624176 5735160 1621616 5733232 1624904 5738000 -1621616 5733232 1615632 5735512 1624904 5738000 1624176 5735160 -1624736 5736008 1624432 5735296 1624176 5735160 1624904 5738000 -1624176 5735160 1621712 5733232 1621616 5733232 1624904 5738000 -1624736 5736008 1624176 5735160 1624904 5738000 1624808 5736120 -1624432 5735296 1624176 5735160 1624736 5736008 1624608 5735568 -1624432 5735296 1627328 5730448 1624176 5735160 1624608 5735568 -1624176 5735160 1624904 5738000 1624736 5736008 1624608 5735568 -1624432 5735296 1624176 5735160 1624608 5735568 1624520 5735400 -1624432 5735296 1627328 5730448 1624176 5735160 1624520 5735400 -1624176 5735160 1624736 5736008 1624608 5735568 1624520 5735400 -1624176 5735160 1624072 5735064 1621808 5733136 1621784 5733192 -1624176 5735160 1624072 5735064 1621784 5733192 1621712 5733232 -1624176 5735160 1624072 5735064 1621712 5733232 1621616 5733232 -1624072 5735064 1621784 5733192 1621712 5733232 1621616 5733232 -1624072 5735064 1621808 5733136 1621784 5733192 1621712 5733232 -1621800 5732912 1624072 5735064 1624176 5735160 1621776 5732752 -1624176 5735160 1627296 5730408 1621776 5732752 1624072 5735064 -1627296 5730408 1621752 5732672 1621776 5732752 1624072 5735064 -1621776 5732752 1621800 5732912 1624072 5735064 1627296 5730408 -1624176 5735160 1627328 5730448 1627296 5730408 1624072 5735064 -1627296 5730408 1621776 5732752 1624072 5735064 1627328 5730448 -1624176 5735160 1624432 5735296 1627328 5730448 1624072 5735064 -1624432 5735296 1627360 5730472 1627328 5730448 1624072 5735064 -1624432 5735296 1627440 5730528 1627360 5730472 1624072 5735064 -1627328 5730448 1627296 5730408 1624072 5735064 1627360 5730472 -1624432 5735296 1627360 5730472 1624072 5735064 1624176 5735160 -1624176 5735160 1624432 5735296 1624072 5735064 1621616 5733232 -1624176 5735160 1624072 5735064 1621616 5733232 1624904 5738000 -1624072 5735064 1621712 5733232 1621616 5733232 1624904 5738000 -1621616 5733232 1615632 5735512 1624904 5738000 1624072 5735064 -1624176 5735160 1624432 5735296 1624072 5735064 1624904 5738000 -1624072 5735064 1621800 5732912 1621808 5733136 1621784 5733192 -1621800 5732912 1621808 5733136 1624072 5735064 1621776 5732752 -1624176 5735160 1624072 5735064 1624904 5738000 1624736 5736008 -1624176 5735160 1624072 5735064 1624736 5736008 1624608 5735568 -1624176 5735160 1624432 5735296 1624072 5735064 1624736 5736008 -1624072 5735064 1621616 5733232 1624904 5738000 1624736 5736008 -1624904 5738000 1624808 5736120 1624736 5736008 1624072 5735064 -1621776 5732752 1624016 5734848 1627296 5730408 1621752 5732672 -1627296 5730408 1624016 5734848 1624072 5735064 1627328 5730448 -1624072 5735064 1624016 5734848 1621776 5732752 1621800 5732912 -1624072 5735064 1627360 5730472 1627328 5730448 1624016 5734848 -1624072 5735064 1624432 5735296 1627360 5730472 1624016 5734848 -1627328 5730448 1627296 5730408 1624016 5734848 1627360 5730472 -1624432 5735296 1627440 5730528 1627360 5730472 1624016 5734848 -1624432 5735296 1627440 5730528 1624016 5734848 1624072 5735064 -1624432 5735296 1626320 5735888 1627440 5730528 1624016 5734848 -1624432 5735296 1626320 5735888 1624016 5734848 1624072 5735064 -1626320 5735888 1627560 5730576 1627440 5730528 1624016 5734848 -1627440 5730528 1627360 5730472 1624016 5734848 1626320 5735888 -1627360 5730472 1627328 5730448 1624016 5734848 1627440 5730528 -1624072 5735064 1624176 5735160 1624432 5735296 1624016 5734848 -1624432 5735296 1626320 5735888 1624016 5734848 1624176 5735160 -1624016 5734848 1621800 5732912 1624072 5735064 1624176 5735160 -1624072 5735064 1624016 5734848 1621800 5732912 1621808 5733136 -1624016 5734848 1621776 5732752 1621800 5732912 1621808 5733136 -1624072 5735064 1624016 5734848 1621808 5733136 1621784 5733192 -1624072 5735064 1624016 5734848 1621784 5733192 1621712 5733232 -1624072 5735064 1624016 5734848 1621712 5733232 1621616 5733232 -1624016 5734848 1621808 5733136 1621784 5733192 1621712 5733232 -1624072 5735064 1624176 5735160 1624016 5734848 1621712 5733232 -1624016 5734848 1621800 5732912 1621808 5733136 1621784 5733192 -1624016 5734848 1627296 5730408 1621776 5732752 1621800 5732912 -1627296 5730408 1621776 5732752 1624016 5734848 1627328 5730448 -1624432 5735296 1626240 5735904 1626320 5735888 1624016 5734848 -1621776 5732752 1624008 5734832 1627296 5730408 1621752 5732672 -1624016 5734848 1624008 5734832 1621776 5732752 1621800 5732912 -1624016 5734848 1624008 5734832 1621800 5732912 1621808 5733136 -1624016 5734848 1624008 5734832 1621808 5733136 1621784 5733192 -1624008 5734832 1621800 5732912 1621808 5733136 1621784 5733192 -1624016 5734848 1624008 5734832 1621784 5733192 1621712 5733232 -1624016 5734848 1624008 5734832 1621712 5733232 1624072 5735064 -1621712 5733232 1621616 5733232 1624072 5735064 1624008 5734832 -1624008 5734832 1621784 5733192 1621712 5733232 1624072 5735064 -1624008 5734832 1621808 5733136 1621784 5733192 1621712 5733232 -1624008 5734832 1621776 5732752 1621800 5732912 1621808 5733136 -1624016 5734848 1627296 5730408 1624008 5734832 1624072 5735064 -1627296 5730408 1624008 5734832 1624016 5734848 1627328 5730448 -1624016 5734848 1627360 5730472 1627328 5730448 1624008 5734832 -1624016 5734848 1627440 5730528 1627360 5730472 1624008 5734832 -1627360 5730472 1627328 5730448 1624008 5734832 1627440 5730528 -1624016 5734848 1626320 5735888 1627440 5730528 1624008 5734832 -1626320 5735888 1627560 5730576 1627440 5730528 1624008 5734832 -1624016 5734848 1624432 5735296 1626320 5735888 1624008 5734832 -1624016 5734848 1624176 5735160 1624432 5735296 1624008 5734832 -1626320 5735888 1627440 5730528 1624008 5734832 1624432 5735296 -1627440 5730528 1627360 5730472 1624008 5734832 1626320 5735888 -1624008 5734832 1624072 5735064 1624016 5734848 1624432 5735296 -1627328 5730448 1627296 5730408 1624008 5734832 1627360 5730472 -1624008 5734832 1627296 5730408 1621776 5732752 1621800 5732912 -1627296 5730408 1621776 5732752 1624008 5734832 1627328 5730448 -1624432 5735296 1626240 5735904 1626320 5735888 1624008 5734832 -1624008 5734832 1623904 5734736 1621800 5732912 1621808 5733136 -1624008 5734832 1623904 5734736 1621808 5733136 1621784 5733192 -1624008 5734832 1623904 5734736 1621784 5733192 1621712 5733232 -1623904 5734736 1621808 5733136 1621784 5733192 1621712 5733232 -1624008 5734832 1623904 5734736 1621712 5733232 1624072 5735064 -1621712 5733232 1621616 5733232 1624072 5735064 1623904 5734736 -1621616 5733232 1624904 5738000 1624072 5735064 1623904 5734736 -1624008 5734832 1623904 5734736 1624072 5735064 1624016 5734848 -1624072 5735064 1624016 5734848 1623904 5734736 1621616 5733232 -1623904 5734736 1621784 5733192 1621712 5733232 1621616 5733232 -1623904 5734736 1621800 5732912 1621808 5733136 1621784 5733192 -1621776 5732752 1623904 5734736 1624008 5734832 1627296 5730408 -1621776 5732752 1623904 5734736 1627296 5730408 1621752 5732672 -1627296 5730408 1627288 5730392 1621752 5732672 1623904 5734736 -1623904 5734736 1624008 5734832 1627296 5730408 1621752 5732672 -1624008 5734832 1627296 5730408 1623904 5734736 1624016 5734848 -1624008 5734832 1627328 5730448 1627296 5730408 1623904 5734736 -1624008 5734832 1627360 5730472 1627328 5730448 1623904 5734736 -1624008 5734832 1627440 5730528 1627360 5730472 1623904 5734736 -1624008 5734832 1626320 5735888 1627440 5730528 1623904 5734736 -1627360 5730472 1627328 5730448 1623904 5734736 1627440 5730528 -1627296 5730408 1621752 5732672 1623904 5734736 1627328 5730448 -1624008 5734832 1627440 5730528 1623904 5734736 1624016 5734848 -1627328 5730448 1627296 5730408 1623904 5734736 1627360 5730472 -1623904 5734736 1621776 5732752 1621800 5732912 1621808 5733136 -1621776 5732752 1621800 5732912 1623904 5734736 1621752 5732672 -1624072 5735064 1623808 5734704 1621616 5733232 1624904 5738000 -1621616 5733232 1623808 5734704 1623904 5734736 1621712 5733232 -1623904 5734736 1623808 5734704 1624072 5735064 1624016 5734848 -1623904 5734736 1623808 5734704 1624016 5734848 1624008 5734832 -1623904 5734736 1621784 5733192 1621712 5733232 1623808 5734704 -1621712 5733232 1621616 5733232 1623808 5734704 1621784 5733192 -1623904 5734736 1621808 5733136 1621784 5733192 1623808 5734704 -1621784 5733192 1621712 5733232 1623808 5734704 1621808 5733136 -1623904 5734736 1621800 5732912 1621808 5733136 1623808 5734704 -1621808 5733136 1621784 5733192 1623808 5734704 1621800 5732912 -1623904 5734736 1621776 5732752 1621800 5732912 1623808 5734704 -1621800 5732912 1621808 5733136 1623808 5734704 1621776 5732752 -1623808 5734704 1624016 5734848 1623904 5734736 1621776 5732752 -1623904 5734736 1621752 5732672 1621776 5732752 1623808 5734704 -1623904 5734736 1627296 5730408 1621752 5732672 1623808 5734704 -1627296 5730408 1627288 5730392 1621752 5732672 1623808 5734704 -1623904 5734736 1627328 5730448 1627296 5730408 1623808 5734704 -1621776 5732752 1621800 5732912 1623808 5734704 1621752 5732672 -1623904 5734736 1627296 5730408 1623808 5734704 1624016 5734848 -1621752 5732672 1621776 5732752 1623808 5734704 1627296 5730408 -1623808 5734704 1621616 5733232 1624072 5735064 1624016 5734848 -1621616 5733232 1624072 5735064 1623808 5734704 1621712 5733232 -1624072 5735064 1623664 5734632 1621616 5733232 1624904 5738000 -1621616 5733232 1615632 5735512 1624904 5738000 1623664 5734632 -1624904 5738000 1624072 5735064 1623664 5734632 1615632 5735512 -1624072 5735064 1623664 5734632 1624904 5738000 1624736 5736008 -1623808 5734704 1623664 5734632 1624072 5735064 1624016 5734848 -1621616 5733232 1621440 5733160 1615632 5735512 1623664 5734632 -1621616 5733232 1623664 5734632 1623808 5734704 1621712 5733232 -1623808 5734704 1621784 5733192 1621712 5733232 1623664 5734632 -1623808 5734704 1621808 5733136 1621784 5733192 1623664 5734632 -1621784 5733192 1621712 5733232 1623664 5734632 1621808 5733136 -1623808 5734704 1621800 5732912 1621808 5733136 1623664 5734632 -1621808 5733136 1621784 5733192 1623664 5734632 1621800 5732912 -1623808 5734704 1621776 5732752 1621800 5732912 1623664 5734632 -1621800 5732912 1621808 5733136 1623664 5734632 1621776 5732752 -1623808 5734704 1621752 5732672 1621776 5732752 1623664 5734632 -1621776 5732752 1621800 5732912 1623664 5734632 1621752 5732672 -1623808 5734704 1627296 5730408 1621752 5732672 1623664 5734632 -1623808 5734704 1623904 5734736 1627296 5730408 1623664 5734632 -1627296 5730408 1627288 5730392 1621752 5732672 1623664 5734632 -1623904 5734736 1627328 5730448 1627296 5730408 1623664 5734632 -1621752 5732672 1621776 5732752 1623664 5734632 1627296 5730408 -1627296 5730408 1621752 5732672 1623664 5734632 1623904 5734736 -1623664 5734632 1624072 5735064 1623808 5734704 1623904 5734736 -1621712 5733232 1621616 5733232 1623664 5734632 1621784 5733192 -1624072 5735064 1623808 5734704 1623664 5734632 1624904 5738000 -1623664 5734632 1621712 5733232 1621616 5733232 1615632 5735512 -1615632 5735512 1622352 5744936 1624904 5738000 1623664 5734632 -1623664 5734632 1623592 5734560 1621776 5732752 1621800 5732912 -1623664 5734632 1623592 5734560 1621800 5732912 1621808 5733136 -1623664 5734632 1623592 5734560 1621808 5733136 1621784 5733192 -1623664 5734632 1623592 5734560 1621784 5733192 1621712 5733232 -1623592 5734560 1621800 5732912 1621808 5733136 1621784 5733192 -1623592 5734560 1621808 5733136 1621784 5733192 1621712 5733232 -1623592 5734560 1621776 5732752 1621800 5732912 1621808 5733136 -1621752 5732672 1623592 5734560 1623664 5734632 1627296 5730408 -1621752 5732672 1623592 5734560 1627296 5730408 1627288 5730392 -1621752 5732672 1623592 5734560 1627288 5730392 1621632 5732520 -1623592 5734560 1623664 5734632 1627296 5730408 1627288 5730392 -1623664 5734632 1623904 5734736 1627296 5730408 1623592 5734560 -1623664 5734632 1623808 5734704 1623904 5734736 1623592 5734560 -1623904 5734736 1627328 5730448 1627296 5730408 1623592 5734560 -1623904 5734736 1627360 5730472 1627328 5730448 1623592 5734560 -1627296 5730408 1627288 5730392 1623592 5734560 1627328 5730448 -1623904 5734736 1627328 5730448 1623592 5734560 1623808 5734704 -1623664 5734632 1623592 5734560 1621712 5733232 1621616 5733232 -1623592 5734560 1621784 5733192 1621712 5733232 1621616 5733232 -1623664 5734632 1623808 5734704 1623592 5734560 1621616 5733232 -1623664 5734632 1623592 5734560 1621616 5733232 1615632 5735512 -1623664 5734632 1623592 5734560 1615632 5735512 1624904 5738000 -1623664 5734632 1623592 5734560 1624904 5738000 1624072 5735064 -1621616 5733232 1621440 5733160 1615632 5735512 1623592 5734560 -1623592 5734560 1621712 5733232 1621616 5733232 1615632 5735512 -1623664 5734632 1623808 5734704 1623592 5734560 1624904 5738000 -1623592 5734560 1621616 5733232 1615632 5735512 1624904 5738000 -1623592 5734560 1621752 5732672 1621776 5732752 1621800 5732912 -1621752 5732672 1621776 5732752 1623592 5734560 1627288 5730392 -1615632 5735512 1622352 5744936 1624904 5738000 1623592 5734560 -1623592 5734560 1623464 5734448 1621808 5733136 1621784 5733192 -1623592 5734560 1623464 5734448 1621784 5733192 1621712 5733232 -1623592 5734560 1623464 5734448 1621712 5733232 1621616 5733232 -1623464 5734448 1621808 5733136 1621784 5733192 1621712 5733232 -1623464 5734448 1621784 5733192 1621712 5733232 1621616 5733232 -1621800 5732912 1623464 5734448 1623592 5734560 1621776 5732752 -1623592 5734560 1623464 5734448 1621616 5733232 1615632 5735512 -1623464 5734448 1621712 5733232 1621616 5733232 1615632 5735512 -1621616 5733232 1621440 5733160 1615632 5735512 1623464 5734448 -1623592 5734560 1623464 5734448 1615632 5735512 1624904 5738000 -1623592 5734560 1623464 5734448 1624904 5738000 1623664 5734632 -1624904 5738000 1624072 5735064 1623664 5734632 1623464 5734448 -1623464 5734448 1621616 5733232 1615632 5735512 1624904 5738000 -1623464 5734448 1615632 5735512 1624904 5738000 1623664 5734632 -1623592 5734560 1621752 5732672 1621776 5732752 1623464 5734448 -1621776 5732752 1621800 5732912 1623464 5734448 1621752 5732672 -1623592 5734560 1621752 5732672 1623464 5734448 1623664 5734632 -1623592 5734560 1627288 5730392 1621752 5732672 1623464 5734448 -1623592 5734560 1627296 5730408 1627288 5730392 1623464 5734448 -1627288 5730392 1621632 5732520 1621752 5732672 1623464 5734448 -1623592 5734560 1627328 5730448 1627296 5730408 1623464 5734448 -1627296 5730408 1627288 5730392 1623464 5734448 1627328 5730448 -1623592 5734560 1623904 5734736 1627328 5730448 1623464 5734448 -1623904 5734736 1627360 5730472 1627328 5730448 1623464 5734448 -1627328 5730448 1627296 5730408 1623464 5734448 1623904 5734736 -1623592 5734560 1623808 5734704 1623904 5734736 1623464 5734448 -1621752 5732672 1621776 5732752 1623464 5734448 1627288 5730392 -1623592 5734560 1623904 5734736 1623464 5734448 1623664 5734632 -1627288 5730392 1621752 5732672 1623464 5734448 1627296 5730408 -1623464 5734448 1621800 5732912 1621808 5733136 1621784 5733192 -1621800 5732912 1621808 5733136 1623464 5734448 1621776 5732752 -1615632 5735512 1622352 5744936 1624904 5738000 1623464 5734448 -1621752 5732672 1623440 5734328 1627288 5730392 1621632 5732520 -1623464 5734448 1623440 5734328 1621752 5732672 1621776 5732752 -1623464 5734448 1623440 5734328 1621776 5732752 1621800 5732912 -1623440 5734328 1621752 5732672 1621776 5732752 1621800 5732912 -1627288 5730392 1623440 5734328 1623464 5734448 1627296 5730408 -1623464 5734448 1627328 5730448 1627296 5730408 1623440 5734328 -1627288 5730392 1621752 5732672 1623440 5734328 1627296 5730408 -1623464 5734448 1623904 5734736 1627328 5730448 1623440 5734328 -1627328 5730448 1627296 5730408 1623440 5734328 1623904 5734736 -1623464 5734448 1623592 5734560 1623904 5734736 1623440 5734328 -1623904 5734736 1627360 5730472 1627328 5730448 1623440 5734328 -1623904 5734736 1627328 5730448 1623440 5734328 1623592 5734560 -1623592 5734560 1623808 5734704 1623904 5734736 1623440 5734328 -1623592 5734560 1623664 5734632 1623808 5734704 1623440 5734328 -1623592 5734560 1623808 5734704 1623440 5734328 1623464 5734448 -1623904 5734736 1627328 5730448 1623440 5734328 1623808 5734704 -1627296 5730408 1627288 5730392 1623440 5734328 1627328 5730448 -1623464 5734448 1623592 5734560 1623440 5734328 1621800 5732912 -1623464 5734448 1623440 5734328 1621800 5732912 1621808 5733136 -1623440 5734328 1621776 5732752 1621800 5732912 1621808 5733136 -1623464 5734448 1623440 5734328 1621808 5733136 1621784 5733192 -1623464 5734448 1623440 5734328 1621784 5733192 1621712 5733232 -1623464 5734448 1623440 5734328 1621712 5733232 1621616 5733232 -1623440 5734328 1621808 5733136 1621784 5733192 1621712 5733232 -1623464 5734448 1623592 5734560 1623440 5734328 1621712 5733232 -1623440 5734328 1621800 5732912 1621808 5733136 1621784 5733192 -1623440 5734328 1627288 5730392 1621752 5732672 1621776 5732752 -1623440 5734328 1623504 5734344 1627328 5730448 1627296 5730408 -1623440 5734328 1623904 5734736 1623504 5734344 1627296 5730408 -1623504 5734344 1623904 5734736 1627328 5730448 1627296 5730408 -1627328 5730448 1623504 5734344 1623904 5734736 1627360 5730472 -1623904 5734736 1623504 5734344 1623440 5734328 1623808 5734704 -1623504 5734344 1627296 5730408 1623440 5734328 1623808 5734704 -1623440 5734328 1623592 5734560 1623808 5734704 1623504 5734344 -1623592 5734560 1623664 5734632 1623808 5734704 1623504 5734344 -1623440 5734328 1623592 5734560 1623504 5734344 1627296 5730408 -1623440 5734328 1623464 5734448 1623592 5734560 1623504 5734344 -1623440 5734328 1623464 5734448 1623504 5734344 1627296 5730408 -1623808 5734704 1623904 5734736 1623504 5734344 1623592 5734560 -1623592 5734560 1623808 5734704 1623504 5734344 1623464 5734448 -1623440 5734328 1623504 5734344 1627296 5730408 1627288 5730392 -1623504 5734344 1627328 5730448 1627296 5730408 1627288 5730392 -1623440 5734328 1623464 5734448 1623504 5734344 1627288 5730392 -1623440 5734328 1623504 5734344 1627288 5730392 1621752 5732672 -1623440 5734328 1623464 5734448 1623504 5734344 1621752 5732672 -1627288 5730392 1621632 5732520 1621752 5732672 1623504 5734344 -1623504 5734344 1627296 5730408 1627288 5730392 1621752 5732672 -1623440 5734328 1623504 5734344 1621752 5732672 1621776 5732752 -1623904 5734736 1627328 5730448 1623504 5734344 1623808 5734704 -1623504 5734344 1623656 5734432 1627328 5730448 1627296 5730408 -1623504 5734344 1623656 5734432 1627296 5730408 1627288 5730392 -1627328 5730448 1623656 5734432 1623904 5734736 1627360 5730472 -1623904 5734736 1627440 5730528 1627360 5730472 1623656 5734432 -1623904 5734736 1624008 5734832 1627440 5730528 1623656 5734432 -1624008 5734832 1626320 5735888 1627440 5730528 1623656 5734432 -1627440 5730528 1627360 5730472 1623656 5734432 1624008 5734832 -1627360 5730472 1627328 5730448 1623656 5734432 1627440 5730528 -1623504 5734344 1623904 5734736 1623656 5734432 1627296 5730408 -1623904 5734736 1623656 5734432 1623504 5734344 1623808 5734704 -1623504 5734344 1623592 5734560 1623808 5734704 1623656 5734432 -1623592 5734560 1623664 5734632 1623808 5734704 1623656 5734432 -1623592 5734560 1623664 5734632 1623656 5734432 1623504 5734344 -1623504 5734344 1623464 5734448 1623592 5734560 1623656 5734432 -1623504 5734344 1623440 5734328 1623464 5734448 1623656 5734432 -1623592 5734560 1623664 5734632 1623656 5734432 1623464 5734448 -1623656 5734432 1627296 5730408 1623504 5734344 1623464 5734448 -1623808 5734704 1623904 5734736 1623656 5734432 1623664 5734632 -1623656 5734432 1627360 5730472 1627328 5730448 1627296 5730408 -1623656 5734432 1623808 5734704 1623904 5734736 1624008 5734832 -1624008 5734832 1623792 5734448 1623656 5734432 1623904 5734736 -1627440 5730528 1623792 5734448 1624008 5734832 1626320 5735888 -1627440 5730528 1623792 5734448 1626320 5735888 1627560 5730576 -1624008 5734832 1624432 5735296 1626320 5735888 1623792 5734448 -1624008 5734832 1624016 5734848 1624432 5735296 1623792 5734448 -1626320 5735888 1627440 5730528 1623792 5734448 1624432 5735296 -1623656 5734432 1623792 5734448 1627440 5730528 1627360 5730472 -1623656 5734432 1623792 5734448 1627360 5730472 1627328 5730448 -1623792 5734448 1627440 5730528 1627360 5730472 1627328 5730448 -1624432 5735296 1626240 5735904 1626320 5735888 1623792 5734448 -1623656 5734432 1623792 5734448 1627328 5730448 1627296 5730408 -1623656 5734432 1623792 5734448 1627296 5730408 1623504 5734344 -1627296 5730408 1627288 5730392 1623504 5734344 1623792 5734448 -1623504 5734344 1623656 5734432 1623792 5734448 1627288 5730392 -1623792 5734448 1627360 5730472 1627328 5730448 1627296 5730408 -1627288 5730392 1621752 5732672 1623504 5734344 1623792 5734448 -1623792 5734448 1627328 5730448 1627296 5730408 1627288 5730392 -1623792 5734448 1623504 5734344 1623656 5734432 1623904 5734736 -1623656 5734432 1623808 5734704 1623904 5734736 1623792 5734448 -1623904 5734736 1624008 5734832 1623792 5734448 1623808 5734704 -1623656 5734432 1623664 5734632 1623808 5734704 1623792 5734448 -1623656 5734432 1623592 5734560 1623664 5734632 1623792 5734448 -1623656 5734432 1623664 5734632 1623792 5734448 1623504 5734344 -1623808 5734704 1623904 5734736 1623792 5734448 1623664 5734632 -1627440 5730528 1627360 5730472 1623792 5734448 1626320 5735888 -1624008 5734832 1624432 5735296 1623792 5734448 1623904 5734736 -1627440 5730528 1624104 5734392 1626320 5735888 1627560 5730576 -1627440 5730528 1624104 5734392 1627560 5730576 1627520 5730552 -1626320 5735888 1627632 5730600 1627560 5730576 1624104 5734392 -1626320 5735888 1624104 5734392 1623792 5734448 1624432 5735296 -1623792 5734448 1624008 5734832 1624432 5735296 1624104 5734392 -1624008 5734832 1624016 5734848 1624432 5735296 1624104 5734392 -1624016 5734848 1624176 5735160 1624432 5735296 1624104 5734392 -1624008 5734832 1624016 5734848 1624104 5734392 1623792 5734448 -1624432 5735296 1626320 5735888 1624104 5734392 1624016 5734848 -1626320 5735888 1624104 5734392 1624432 5735296 1626240 5735904 -1624432 5735296 1624520 5735400 1626240 5735904 1624104 5734392 -1624520 5735400 1624608 5735568 1626240 5735904 1624104 5734392 -1624104 5734392 1624016 5734848 1624432 5735296 1624520 5735400 -1626240 5735904 1626320 5735888 1624104 5734392 1624520 5735400 -1623792 5734448 1624104 5734392 1627440 5730528 1627360 5730472 -1623792 5734448 1624104 5734392 1627360 5730472 1627328 5730448 -1623792 5734448 1624104 5734392 1627328 5730448 1627296 5730408 -1624104 5734392 1627360 5730472 1627328 5730448 1627296 5730408 -1623792 5734448 1624104 5734392 1627296 5730408 1627288 5730392 -1623792 5734448 1624104 5734392 1627288 5730392 1623504 5734344 -1623792 5734448 1624104 5734392 1623504 5734344 1623656 5734432 -1624104 5734392 1627328 5730448 1627296 5730408 1627288 5730392 -1627288 5730392 1621752 5732672 1623504 5734344 1624104 5734392 -1623504 5734344 1623792 5734448 1624104 5734392 1621752 5732672 -1621752 5732672 1623440 5734328 1623504 5734344 1624104 5734392 -1623504 5734344 1623792 5734448 1624104 5734392 1623440 5734328 -1627288 5730392 1621632 5732520 1621752 5732672 1624104 5734392 -1621752 5732672 1623440 5734328 1624104 5734392 1627288 5730392 -1621752 5732672 1621776 5732752 1623440 5734328 1624104 5734392 -1623440 5734328 1623504 5734344 1624104 5734392 1621776 5732752 -1621776 5732752 1621800 5732912 1623440 5734328 1624104 5734392 -1621752 5732672 1621776 5732752 1624104 5734392 1627288 5730392 -1624104 5734392 1627296 5730408 1627288 5730392 1621752 5732672 -1624104 5734392 1627440 5730528 1627360 5730472 1627328 5730448 -1624104 5734392 1623504 5734344 1623792 5734448 1624008 5734832 -1623792 5734448 1623904 5734736 1624008 5734832 1624104 5734392 -1623792 5734448 1623808 5734704 1623904 5734736 1624104 5734392 -1624008 5734832 1624016 5734848 1624104 5734392 1623904 5734736 -1623792 5734448 1623904 5734736 1624104 5734392 1623504 5734344 -1627440 5730528 1627360 5730472 1624104 5734392 1627560 5730576 -1624104 5734392 1626240 5735904 1626320 5735888 1627560 5730576 -1627560 5730576 1624264 5734424 1626320 5735888 1627632 5730600 -1624104 5734392 1624264 5734424 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1624264 5734424 -1624264 5734424 1626320 5735888 1627560 5730576 1627440 5730528 -1624104 5734392 1624264 5734424 1627440 5730528 1627360 5730472 -1624264 5734424 1627560 5730576 1627440 5730528 1627360 5730472 -1624104 5734392 1624264 5734424 1627360 5730472 1627328 5730448 -1624104 5734392 1624264 5734424 1627328 5730448 1627296 5730408 -1624104 5734392 1624264 5734424 1627296 5730408 1627288 5730392 -1624264 5734424 1627328 5730448 1627296 5730408 1627288 5730392 -1624104 5734392 1624264 5734424 1627288 5730392 1621752 5732672 -1624264 5734424 1627360 5730472 1627328 5730448 1627296 5730408 -1624264 5734424 1627440 5730528 1627360 5730472 1627328 5730448 -1624104 5734392 1626320 5735888 1624264 5734424 1627288 5730392 -1626320 5735888 1624264 5734424 1624104 5734392 1626240 5735904 -1626320 5735888 1627560 5730576 1624264 5734424 1626240 5735904 -1624104 5734392 1624520 5735400 1626240 5735904 1624264 5734424 -1624104 5734392 1624432 5735296 1624520 5735400 1624264 5734424 -1624520 5735400 1624608 5735568 1626240 5735904 1624264 5734424 -1624104 5734392 1624016 5734848 1624432 5735296 1624264 5734424 -1624016 5734848 1624176 5735160 1624432 5735296 1624264 5734424 -1624432 5735296 1624520 5735400 1624264 5734424 1624176 5735160 -1624104 5734392 1624008 5734832 1624016 5734848 1624264 5734424 -1624104 5734392 1623904 5734736 1624008 5734832 1624264 5734424 -1624016 5734848 1624176 5735160 1624264 5734424 1624008 5734832 -1624016 5734848 1624072 5735064 1624176 5735160 1624264 5734424 -1624520 5735400 1626240 5735904 1624264 5734424 1624432 5735296 -1624264 5734424 1627288 5730392 1624104 5734392 1624008 5734832 -1626240 5735904 1626320 5735888 1624264 5734424 1624520 5735400 -1626240 5735904 1624536 5734640 1624520 5735400 1624608 5735568 -1626240 5735904 1624264 5734424 1624536 5734640 1624608 5735568 -1624536 5734640 1624264 5734424 1624520 5735400 1624608 5735568 -1626240 5735904 1624536 5734640 1624608 5735568 1626096 5736000 -1624520 5735400 1624536 5734640 1624264 5734424 1624432 5735296 -1624536 5734640 1626240 5735904 1624264 5734424 1624432 5735296 -1624520 5735400 1624608 5735568 1624536 5734640 1624432 5735296 -1624264 5734424 1624176 5735160 1624432 5735296 1624536 5734640 -1624264 5734424 1624176 5735160 1624536 5734640 1626240 5735904 -1624264 5734424 1624016 5734848 1624176 5735160 1624536 5734640 -1624264 5734424 1624016 5734848 1624536 5734640 1626240 5735904 -1624176 5735160 1624432 5735296 1624536 5734640 1624016 5734848 -1624264 5734424 1624008 5734832 1624016 5734848 1624536 5734640 -1624264 5734424 1624008 5734832 1624536 5734640 1626240 5735904 -1624016 5734848 1624176 5735160 1624536 5734640 1624008 5734832 -1624264 5734424 1624104 5734392 1624008 5734832 1624536 5734640 -1624016 5734848 1624072 5735064 1624176 5735160 1624536 5734640 -1624016 5734848 1624072 5735064 1624536 5734640 1624008 5734832 -1624176 5735160 1624432 5735296 1624536 5734640 1624072 5735064 -1624432 5735296 1624520 5735400 1624536 5734640 1624176 5735160 -1624264 5734424 1624536 5734640 1626240 5735904 1626320 5735888 -1624264 5734424 1624008 5734832 1624536 5734640 1626320 5735888 -1624264 5734424 1624536 5734640 1626320 5735888 1627560 5730576 -1624264 5734424 1624536 5734640 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1624536 5734640 -1624264 5734424 1624008 5734832 1624536 5734640 1627440 5730528 -1624536 5734640 1626320 5735888 1627560 5730576 1627440 5730528 -1624536 5734640 1624608 5735568 1626240 5735904 1626320 5735888 -1626320 5735888 1627632 5730600 1627560 5730576 1624536 5734640 -1626320 5735888 1626504 5735936 1627632 5730600 1624536 5734640 -1627560 5730576 1627440 5730528 1624536 5734640 1627632 5730600 -1624264 5734424 1624536 5734640 1627440 5730528 1627360 5730472 -1624536 5734640 1626240 5735904 1626320 5735888 1627632 5730600 -1627632 5730600 1624728 5734744 1626320 5735888 1626504 5735936 -1624536 5734640 1624728 5734744 1627632 5730600 1627560 5730576 -1624536 5734640 1624728 5734744 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1624728 5734744 -1624536 5734640 1624728 5734744 1627440 5730528 1624264 5734424 -1624728 5734744 1627560 5730576 1627440 5730528 1624264 5734424 -1624536 5734640 1626320 5735888 1624728 5734744 1624264 5734424 -1624728 5734744 1626320 5735888 1627632 5730600 1627560 5730576 -1624728 5734744 1627632 5730600 1627560 5730576 1627440 5730528 -1627440 5730528 1627360 5730472 1624264 5734424 1624728 5734744 -1624264 5734424 1624536 5734640 1624728 5734744 1627360 5730472 -1627440 5730528 1627360 5730472 1624728 5734744 1627560 5730576 -1627360 5730472 1627328 5730448 1624264 5734424 1624728 5734744 -1626320 5735888 1624728 5734744 1624536 5734640 1626240 5735904 -1624536 5734640 1624608 5735568 1626240 5735904 1624728 5734744 -1624728 5734744 1624264 5734424 1624536 5734640 1624608 5735568 -1626320 5735888 1627632 5730600 1624728 5734744 1626240 5735904 -1624608 5735568 1626096 5736000 1626240 5735904 1624728 5734744 -1624608 5735568 1626096 5736000 1624728 5734744 1624536 5734640 -1624536 5734640 1624520 5735400 1624608 5735568 1624728 5734744 -1624608 5735568 1626096 5736000 1624728 5734744 1624520 5735400 -1624536 5734640 1624520 5735400 1624728 5734744 1624264 5734424 -1624536 5734640 1624432 5735296 1624520 5735400 1624728 5734744 -1624536 5734640 1624432 5735296 1624728 5734744 1624264 5734424 -1624520 5735400 1624608 5735568 1624728 5734744 1624432 5735296 -1624608 5735568 1626064 5736040 1626096 5736000 1624728 5734744 -1624536 5734640 1624176 5735160 1624432 5735296 1624728 5734744 -1626240 5735904 1626320 5735888 1624728 5734744 1626096 5736000 -1627632 5730600 1625040 5734896 1626320 5735888 1626504 5735936 -1624728 5734744 1625040 5734896 1627632 5730600 1627560 5730576 -1624728 5734744 1626320 5735888 1625040 5734896 1627560 5730576 -1626320 5735888 1625040 5734896 1624728 5734744 1626240 5735904 -1625040 5734896 1627560 5730576 1624728 5734744 1626240 5735904 -1627632 5730600 1627560 5730576 1625040 5734896 1626504 5735936 -1625040 5734896 1626240 5735904 1626320 5735888 1626504 5735936 -1624728 5734744 1625040 5734896 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1625040 5734896 -1624728 5734744 1625040 5734896 1627440 5730528 1627360 5730472 -1625040 5734896 1627632 5730600 1627560 5730576 1627440 5730528 -1624728 5734744 1626240 5735904 1625040 5734896 1627440 5730528 -1627632 5730600 1625040 5734896 1626504 5735936 1627856 5736056 -1624728 5734744 1626096 5736000 1626240 5735904 1625040 5734896 -1624728 5734744 1626096 5736000 1625040 5734896 1627440 5730528 -1626240 5735904 1626320 5735888 1625040 5734896 1626096 5736000 -1624728 5734744 1624608 5735568 1626096 5736000 1625040 5734896 -1624728 5734744 1624520 5735400 1624608 5735568 1625040 5734896 -1624728 5734744 1624520 5735400 1625040 5734896 1627440 5730528 -1624608 5735568 1626096 5736000 1625040 5734896 1624520 5735400 -1624728 5734744 1624432 5735296 1624520 5735400 1625040 5734896 -1624520 5735400 1624608 5735568 1625040 5734896 1624432 5735296 -1624728 5734744 1624536 5734640 1624432 5735296 1625040 5734896 -1624728 5734744 1624432 5735296 1625040 5734896 1627440 5730528 -1624608 5735568 1626064 5736040 1626096 5736000 1625040 5734896 -1624608 5735568 1626064 5736040 1625040 5734896 1624520 5735400 -1624608 5735568 1624736 5736008 1626064 5736040 1625040 5734896 -1624736 5736008 1624896 5736208 1626064 5736040 1625040 5734896 -1624608 5735568 1624736 5736008 1625040 5734896 1624520 5735400 -1626064 5736040 1626096 5736000 1625040 5734896 1624736 5736008 -1626096 5736000 1626240 5735904 1625040 5734896 1626064 5736040 -1626504 5735936 1625176 5734984 1625040 5734896 1626320 5735888 -1625040 5734896 1625176 5734984 1627632 5730600 1627560 5730576 -1625040 5734896 1625176 5734984 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1625176 5734984 -1625176 5734984 1627632 5730600 1627560 5730576 1627440 5730528 -1625176 5734984 1627440 5730528 1625040 5734896 1626320 5735888 -1625040 5734896 1626240 5735904 1626320 5735888 1625176 5734984 -1626320 5735888 1626504 5735936 1625176 5734984 1626240 5735904 -1625040 5734896 1626096 5736000 1626240 5735904 1625176 5734984 -1625040 5734896 1626096 5736000 1625176 5734984 1627440 5730528 -1626240 5735904 1626320 5735888 1625176 5734984 1626096 5736000 -1625176 5734984 1626504 5735936 1627632 5730600 1627560 5730576 -1626504 5735936 1627632 5730600 1625176 5734984 1626320 5735888 -1625040 5734896 1625176 5734984 1627440 5730528 1624728 5734744 -1627632 5730600 1625176 5734984 1626504 5735936 1627856 5736056 -1625040 5734896 1626064 5736040 1626096 5736000 1625176 5734984 -1626096 5736000 1626240 5735904 1625176 5734984 1626064 5736040 -1625040 5734896 1626064 5736040 1625176 5734984 1627440 5730528 -1625040 5734896 1624736 5736008 1626064 5736040 1625176 5734984 -1625040 5734896 1624736 5736008 1625176 5734984 1627440 5730528 -1624736 5736008 1624896 5736208 1626064 5736040 1625176 5734984 -1624736 5736008 1624808 5736120 1624896 5736208 1625176 5734984 -1624736 5736008 1624896 5736208 1625176 5734984 1625040 5734896 -1625040 5734896 1624608 5735568 1624736 5736008 1625176 5734984 -1625040 5734896 1624608 5735568 1625176 5734984 1627440 5730528 -1625040 5734896 1624520 5735400 1624608 5735568 1625176 5734984 -1625040 5734896 1624432 5735296 1624520 5735400 1625176 5734984 -1625040 5734896 1624520 5735400 1625176 5734984 1627440 5730528 -1624736 5736008 1624896 5736208 1625176 5734984 1624608 5735568 -1624608 5735568 1624736 5736008 1625176 5734984 1624520 5735400 -1626064 5736040 1626096 5736000 1625176 5734984 1624896 5736208 -1624896 5736208 1625152 5736368 1626064 5736040 1625176 5734984 -1624896 5736208 1625152 5736368 1625176 5734984 1624736 5736008 -1625152 5736368 1626048 5736096 1626064 5736040 1625176 5734984 -1626064 5736040 1626096 5736000 1625176 5734984 1625152 5736368 -1625176 5734984 1625440 5735200 1626320 5735888 1626504 5735936 -1626240 5735904 1625440 5735200 1625176 5734984 1626096 5736000 -1625176 5734984 1626064 5736040 1626096 5736000 1625440 5735200 -1626096 5736000 1626240 5735904 1625440 5735200 1626064 5736040 -1625176 5734984 1626064 5736040 1625440 5735200 1626504 5735936 -1625176 5734984 1625440 5735200 1626504 5735936 1627632 5730600 -1625440 5735200 1626320 5735888 1626504 5735936 1627632 5730600 -1625176 5734984 1625440 5735200 1627632 5730600 1627560 5730576 -1625176 5734984 1626064 5736040 1625440 5735200 1627632 5730600 -1625440 5735200 1626240 5735904 1626320 5735888 1626504 5735936 -1626240 5735904 1626320 5735888 1625440 5735200 1626096 5736000 -1626504 5735936 1627856 5736056 1627632 5730600 1625440 5735200 -1626504 5735936 1627856 5736056 1625440 5735200 1626320 5735888 -1627632 5730600 1625176 5734984 1625440 5735200 1627856 5736056 -1627856 5736056 1627656 5730600 1627632 5730600 1625440 5735200 -1626504 5735936 1626664 5736032 1627856 5736056 1625440 5735200 -1625176 5734984 1625152 5736368 1626064 5736040 1625440 5735200 -1626064 5736040 1626096 5736000 1625440 5735200 1625152 5736368 -1625176 5734984 1625152 5736368 1625440 5735200 1627632 5730600 -1625152 5736368 1626048 5736096 1626064 5736040 1625440 5735200 -1625176 5734984 1624896 5736208 1625152 5736368 1625440 5735200 -1625176 5734984 1624896 5736208 1625440 5735200 1627632 5730600 -1625176 5734984 1624736 5736008 1624896 5736208 1625440 5735200 -1625176 5734984 1624736 5736008 1625440 5735200 1627632 5730600 -1624736 5736008 1624808 5736120 1624896 5736208 1625440 5735200 -1624736 5736008 1624808 5736120 1625440 5735200 1625176 5734984 -1625176 5734984 1624608 5735568 1624736 5736008 1625440 5735200 -1625176 5734984 1624608 5735568 1625440 5735200 1627632 5730600 -1624736 5736008 1624808 5736120 1625440 5735200 1624608 5735568 -1625176 5734984 1624520 5735400 1624608 5735568 1625440 5735200 -1625152 5736368 1626064 5736040 1625440 5735200 1624896 5736208 -1624896 5736208 1625152 5736368 1625440 5735200 1624808 5736120 -1626096 5736000 1625576 5735360 1625440 5735200 1626064 5736040 -1625440 5735200 1625152 5736368 1626064 5736040 1625576 5735360 -1626064 5736040 1626096 5736000 1625576 5735360 1625152 5736368 -1625576 5735360 1626240 5735904 1625440 5735200 1625152 5736368 -1625440 5735200 1625576 5735360 1626240 5735904 1626320 5735888 -1625440 5735200 1625576 5735360 1626320 5735888 1626504 5735936 -1625440 5735200 1625576 5735360 1626504 5735936 1627856 5736056 -1625440 5735200 1625152 5736368 1625576 5735360 1626504 5735936 -1625576 5735360 1626240 5735904 1626320 5735888 1626504 5735936 -1625576 5735360 1626096 5736000 1626240 5735904 1626320 5735888 -1626096 5736000 1626240 5735904 1625576 5735360 1626064 5736040 -1625152 5736368 1626048 5736096 1626064 5736040 1625576 5735360 -1625152 5736368 1626048 5736096 1625576 5735360 1625440 5735200 -1626064 5736040 1626096 5736000 1625576 5735360 1626048 5736096 -1625152 5736368 1625448 5736544 1626048 5736096 1625576 5735360 -1625440 5735200 1624896 5736208 1625152 5736368 1625576 5735360 -1625152 5736368 1626048 5736096 1625576 5735360 1624896 5736208 -1625440 5735200 1624896 5736208 1625576 5735360 1626504 5735936 -1625440 5735200 1624808 5736120 1624896 5736208 1625576 5735360 -1625440 5735200 1624808 5736120 1625576 5735360 1626504 5735936 -1625440 5735200 1624736 5736008 1624808 5736120 1625576 5735360 -1625440 5735200 1624736 5736008 1625576 5735360 1626504 5735936 -1625440 5735200 1624608 5735568 1624736 5736008 1625576 5735360 -1625440 5735200 1624608 5735568 1625576 5735360 1626504 5735936 -1624736 5736008 1624808 5736120 1625576 5735360 1624608 5735568 -1625440 5735200 1625176 5734984 1624608 5735568 1625576 5735360 -1624896 5736208 1625152 5736368 1625576 5735360 1624808 5736120 -1624808 5736120 1624896 5736208 1625576 5735360 1624736 5736008 -1625152 5736368 1625736 5735632 1625576 5735360 1624896 5736208 -1625736 5735632 1626048 5736096 1625576 5735360 1624896 5736208 -1625576 5735360 1625736 5735632 1626048 5736096 1626064 5736040 -1625576 5735360 1625736 5735632 1626064 5736040 1626096 5736000 -1625576 5735360 1624896 5736208 1625736 5735632 1626096 5736000 -1625576 5735360 1625736 5735632 1626096 5736000 1626240 5735904 -1625736 5735632 1626064 5736040 1626096 5736000 1626240 5735904 -1625576 5735360 1625736 5735632 1626240 5735904 1626320 5735888 -1625576 5735360 1625736 5735632 1626320 5735888 1626504 5735936 -1625576 5735360 1624896 5736208 1625736 5735632 1626320 5735888 -1625736 5735632 1626096 5736000 1626240 5735904 1626320 5735888 -1625736 5735632 1625152 5736368 1626048 5736096 1626064 5736040 -1625736 5735632 1626048 5736096 1626064 5736040 1626096 5736000 -1626048 5736096 1625736 5735632 1625152 5736368 1625448 5736544 -1626048 5736096 1626064 5736040 1625736 5735632 1625448 5736544 -1626048 5736096 1625736 5735632 1625448 5736544 1625752 5736648 -1625152 5736368 1625448 5736544 1625736 5735632 1624896 5736208 -1625576 5735360 1624808 5736120 1624896 5736208 1625736 5735632 -1624896 5736208 1625152 5736368 1625736 5735632 1624808 5736120 -1625576 5735360 1624808 5736120 1625736 5735632 1626320 5735888 -1625576 5735360 1624736 5736008 1624808 5736120 1625736 5735632 -1625576 5735360 1624736 5736008 1625736 5735632 1626320 5735888 -1625576 5735360 1624608 5735568 1624736 5736008 1625736 5735632 -1624808 5736120 1624896 5736208 1625736 5735632 1624736 5736008 -1626096 5736000 1625800 5735688 1625736 5735632 1626064 5736040 -1625736 5735632 1625800 5735688 1626240 5735904 1626320 5735888 -1625736 5735632 1625800 5735688 1626320 5735888 1625576 5735360 -1626320 5735888 1626504 5735936 1625576 5735360 1625800 5735688 -1625800 5735688 1626240 5735904 1626320 5735888 1625576 5735360 -1625800 5735688 1625576 5735360 1625736 5735632 1626064 5736040 -1625736 5735632 1626048 5736096 1626064 5736040 1625800 5735688 -1626064 5736040 1626096 5736000 1625800 5735688 1626048 5736096 -1625736 5735632 1625448 5736544 1626048 5736096 1625800 5735688 -1625736 5735632 1625448 5736544 1625800 5735688 1625576 5735360 -1625448 5736544 1625752 5736648 1626048 5736096 1625800 5735688 -1626048 5736096 1626064 5736040 1625800 5735688 1625448 5736544 -1625736 5735632 1625152 5736368 1625448 5736544 1625800 5735688 -1625448 5736544 1626048 5736096 1625800 5735688 1625152 5736368 -1625736 5735632 1625152 5736368 1625800 5735688 1625576 5735360 -1625736 5735632 1624896 5736208 1625152 5736368 1625800 5735688 -1625800 5735688 1626096 5736000 1626240 5735904 1626320 5735888 -1626096 5736000 1626240 5735904 1625800 5735688 1626064 5736040 -1625800 5735688 1625896 5735736 1626240 5735904 1626320 5735888 -1625800 5735688 1625896 5735736 1626320 5735888 1625576 5735360 -1626320 5735888 1626504 5735936 1625576 5735360 1625896 5735736 -1625800 5735688 1625896 5735736 1625576 5735360 1625736 5735632 -1625896 5735736 1626320 5735888 1625576 5735360 1625736 5735632 -1625896 5735736 1626240 5735904 1626320 5735888 1625576 5735360 -1625800 5735688 1626096 5736000 1625896 5735736 1625736 5735632 -1626096 5736000 1625896 5735736 1625800 5735688 1626064 5736040 -1625800 5735688 1626048 5736096 1626064 5736040 1625896 5735736 -1625800 5735688 1625448 5736544 1626048 5736096 1625896 5735736 -1625896 5735736 1625736 5735632 1625800 5735688 1626048 5736096 -1626064 5736040 1626096 5736000 1625896 5735736 1626048 5736096 -1625896 5735736 1626096 5736000 1626240 5735904 1626320 5735888 -1626096 5736000 1626240 5735904 1625896 5735736 1626064 5736040 -1625576 5735360 1625984 5735736 1626320 5735888 1626504 5735936 -1625896 5735736 1625984 5735736 1625576 5735360 1625736 5735632 -1625896 5735736 1625984 5735736 1625736 5735632 1625800 5735688 -1625984 5735736 1625576 5735360 1625736 5735632 1625800 5735688 -1626320 5735888 1625984 5735736 1625896 5735736 1626240 5735904 -1625896 5735736 1626096 5736000 1626240 5735904 1625984 5735736 -1626240 5735904 1626320 5735888 1625984 5735736 1626096 5736000 -1625896 5735736 1626096 5736000 1625984 5735736 1625800 5735688 -1625896 5735736 1626064 5736040 1626096 5736000 1625984 5735736 -1625896 5735736 1626048 5736096 1626064 5736040 1625984 5735736 -1626096 5736000 1626240 5735904 1625984 5735736 1626064 5736040 -1625896 5735736 1626064 5736040 1625984 5735736 1625800 5735688 -1625984 5735736 1626320 5735888 1625576 5735360 1625736 5735632 -1626320 5735888 1625576 5735360 1625984 5735736 1626240 5735904 -1625576 5735360 1626064 5735680 1626504 5735936 1625440 5735200 -1626504 5735936 1627856 5736056 1625440 5735200 1626064 5735680 -1625440 5735200 1625576 5735360 1626064 5735680 1627856 5736056 -1626320 5735888 1626064 5735680 1625576 5735360 1625984 5735736 -1627856 5736056 1627632 5730600 1625440 5735200 1626064 5735680 -1627856 5736056 1627632 5730600 1626064 5735680 1626504 5735936 -1627632 5730600 1625176 5734984 1625440 5735200 1626064 5735680 -1625440 5735200 1625576 5735360 1626064 5735680 1627632 5730600 -1627856 5736056 1627656 5730600 1627632 5730600 1626064 5735680 -1626504 5735936 1626664 5736032 1627856 5736056 1626064 5735680 -1625576 5735360 1625736 5735632 1625984 5735736 1626064 5735680 -1625984 5735736 1626320 5735888 1626064 5735680 1625736 5735632 -1625736 5735632 1625800 5735688 1625984 5735736 1626064 5735680 -1625984 5735736 1626320 5735888 1626064 5735680 1625800 5735688 -1625800 5735688 1625896 5735736 1625984 5735736 1626064 5735680 -1625984 5735736 1626320 5735888 1626064 5735680 1625896 5735736 -1625800 5735688 1625896 5735736 1626064 5735680 1625736 5735632 -1625736 5735632 1625800 5735688 1626064 5735680 1625576 5735360 -1625576 5735360 1625736 5735632 1626064 5735680 1625440 5735200 -1626320 5735888 1626064 5735680 1625984 5735736 1626240 5735904 -1626064 5735680 1625896 5735736 1625984 5735736 1626240 5735904 -1625984 5735736 1626096 5736000 1626240 5735904 1626064 5735680 -1626064 5735680 1626320 5735888 1626504 5735936 1627856 5736056 -1626320 5735888 1626504 5735936 1626064 5735680 1626240 5735904 -1627856 5736056 1626096 5735584 1626064 5735680 1626504 5735936 -1626064 5735680 1626096 5735584 1627632 5730600 1625440 5735200 -1627632 5730600 1625176 5734984 1625440 5735200 1626096 5735584 -1626064 5735680 1626096 5735584 1625440 5735200 1625576 5735360 -1626096 5735584 1627632 5730600 1625440 5735200 1625576 5735360 -1627632 5730600 1626096 5735584 1627856 5736056 1627656 5730600 -1627856 5736056 1626096 5735584 1626504 5735936 1626664 5736032 -1626064 5735680 1626096 5735584 1625576 5735360 1625736 5735632 -1626096 5735584 1625440 5735200 1625576 5735360 1625736 5735632 -1626064 5735680 1626096 5735584 1625736 5735632 1625800 5735688 -1626064 5735680 1626096 5735584 1625800 5735688 1625896 5735736 -1626064 5735680 1626096 5735584 1625896 5735736 1625984 5735736 -1626096 5735584 1625736 5735632 1625800 5735688 1625896 5735736 -1626096 5735584 1625576 5735360 1625736 5735632 1625800 5735688 -1626064 5735680 1626320 5735888 1626504 5735936 1626096 5735584 -1626504 5735936 1627856 5736056 1626096 5735584 1626320 5735888 -1626096 5735584 1625896 5735736 1626064 5735680 1626320 5735888 -1626096 5735584 1627856 5736056 1627632 5730600 1625440 5735200 -1627856 5736056 1627632 5730600 1626096 5735584 1626504 5735936 -1626064 5735680 1626240 5735904 1626320 5735888 1626096 5735584 -1625440 5735200 1626088 5735544 1627632 5730600 1625176 5734984 -1626096 5735584 1626088 5735544 1625440 5735200 1625576 5735360 -1626096 5735584 1626088 5735544 1625576 5735360 1625736 5735632 -1626088 5735544 1625440 5735200 1625576 5735360 1625736 5735632 -1626096 5735584 1626088 5735544 1625736 5735632 1625800 5735688 -1626088 5735544 1625576 5735360 1625736 5735632 1625800 5735688 -1626096 5735584 1626088 5735544 1625800 5735688 1625896 5735736 -1626096 5735584 1626088 5735544 1625896 5735736 1626064 5735680 -1625896 5735736 1625984 5735736 1626064 5735680 1626088 5735544 -1626088 5735544 1625800 5735688 1625896 5735736 1626064 5735680 -1626088 5735544 1625736 5735632 1625800 5735688 1625896 5735736 -1627632 5730600 1626088 5735544 1626096 5735584 1627856 5736056 -1627632 5730600 1626088 5735544 1627856 5736056 1627656 5730600 -1626088 5735544 1626096 5735584 1627856 5736056 1627656 5730600 -1626096 5735584 1627856 5736056 1626088 5735544 1626064 5735680 -1626096 5735584 1626504 5735936 1627856 5736056 1626088 5735544 -1626096 5735584 1626320 5735888 1626504 5735936 1626088 5735544 -1626504 5735936 1626664 5736032 1627856 5736056 1626088 5735544 -1627856 5736056 1627656 5730600 1626088 5735544 1626504 5735936 -1626096 5735584 1626504 5735936 1626088 5735544 1626064 5735680 -1626088 5735544 1627632 5730600 1625440 5735200 1625576 5735360 -1627632 5730600 1625440 5735200 1626088 5735544 1627656 5730600 -1627856 5736056 1627720 5730568 1627656 5730600 1626088 5735544 -1626088 5735544 1626112 5735488 1627656 5730600 1627632 5730600 -1627856 5736056 1626112 5735488 1626088 5735544 1626504 5735936 -1627856 5736056 1626112 5735488 1626504 5735936 1626664 5736032 -1626112 5735488 1626088 5735544 1626504 5735936 1626664 5736032 -1626088 5735544 1626096 5735584 1626504 5735936 1626112 5735488 -1626096 5735584 1626320 5735888 1626504 5735936 1626112 5735488 -1626096 5735584 1626064 5735680 1626320 5735888 1626112 5735488 -1626504 5735936 1626664 5736032 1626112 5735488 1626320 5735888 -1626096 5735584 1626320 5735888 1626112 5735488 1626088 5735544 -1626088 5735544 1626096 5735584 1626112 5735488 1627632 5730600 -1626088 5735544 1626112 5735488 1627632 5730600 1625440 5735200 -1627632 5730600 1625176 5734984 1625440 5735200 1626112 5735488 -1627632 5730600 1627560 5730576 1625176 5734984 1626112 5735488 -1626112 5735488 1627656 5730600 1627632 5730600 1625176 5734984 -1626088 5735544 1626112 5735488 1625440 5735200 1625576 5735360 -1626088 5735544 1626112 5735488 1625576 5735360 1625736 5735632 -1626088 5735544 1626112 5735488 1625736 5735632 1625800 5735688 -1626112 5735488 1625440 5735200 1625576 5735360 1625736 5735632 -1626088 5735544 1626096 5735584 1626112 5735488 1625736 5735632 -1625440 5735200 1625576 5735360 1626112 5735488 1625176 5734984 -1626112 5735488 1627856 5736056 1627656 5730600 1627632 5730600 -1627856 5736056 1627656 5730600 1626112 5735488 1626664 5736032 -1627656 5730600 1626112 5735488 1627856 5736056 1627720 5730568 -1627856 5736056 1626112 5735488 1626664 5736032 1626992 5736208 -1626112 5735488 1626144 5735440 1627656 5730600 1627632 5730600 -1626112 5735488 1626144 5735440 1627632 5730600 1625176 5734984 -1627632 5730600 1627560 5730576 1625176 5734984 1626144 5735440 -1627560 5730576 1627440 5730528 1625176 5734984 1626144 5735440 -1626112 5735488 1626144 5735440 1625176 5734984 1625440 5735200 -1625176 5734984 1625440 5735200 1626144 5735440 1627560 5730576 -1626112 5735488 1626144 5735440 1625440 5735200 1625576 5735360 -1626144 5735440 1625176 5734984 1625440 5735200 1625576 5735360 -1626112 5735488 1626144 5735440 1625576 5735360 1625736 5735632 -1626144 5735440 1627656 5730600 1627632 5730600 1627560 5730576 -1626112 5735488 1627856 5736056 1626144 5735440 1625576 5735360 -1627856 5736056 1626144 5735440 1626112 5735488 1626664 5736032 -1627856 5736056 1627656 5730600 1626144 5735440 1626664 5736032 -1626112 5735488 1626504 5735936 1626664 5736032 1626144 5735440 -1626112 5735488 1626320 5735888 1626504 5735936 1626144 5735440 -1626112 5735488 1626096 5735584 1626320 5735888 1626144 5735440 -1626504 5735936 1626664 5736032 1626144 5735440 1626320 5735888 -1626096 5735584 1626064 5735680 1626320 5735888 1626144 5735440 -1626320 5735888 1626504 5735936 1626144 5735440 1626096 5735584 -1626112 5735488 1626088 5735544 1626096 5735584 1626144 5735440 -1626144 5735440 1625576 5735360 1626112 5735488 1626096 5735584 -1626664 5736032 1627856 5736056 1626144 5735440 1626504 5735936 -1626144 5735440 1627856 5736056 1627656 5730600 1627632 5730600 -1627656 5730600 1626144 5735440 1627856 5736056 1627720 5730568 -1627856 5736056 1626144 5735440 1626664 5736032 1626992 5736208 -1627856 5736056 1626192 5735400 1626144 5735440 1626664 5736032 -1626192 5735400 1627656 5730600 1626144 5735440 1626664 5736032 -1627856 5736056 1627656 5730600 1626192 5735400 1626664 5736032 -1626144 5735440 1626504 5735936 1626664 5736032 1626192 5735400 -1626664 5736032 1627856 5736056 1626192 5735400 1626504 5735936 -1626144 5735440 1626504 5735936 1626192 5735400 1627656 5730600 -1626144 5735440 1626320 5735888 1626504 5735936 1626192 5735400 -1626144 5735440 1626320 5735888 1626192 5735400 1627656 5730600 -1626144 5735440 1626096 5735584 1626320 5735888 1626192 5735400 -1626144 5735440 1626112 5735488 1626096 5735584 1626192 5735400 -1626144 5735440 1626096 5735584 1626192 5735400 1627656 5730600 -1626320 5735888 1626504 5735936 1626192 5735400 1626096 5735584 -1626096 5735584 1626064 5735680 1626320 5735888 1626192 5735400 -1626504 5735936 1626664 5736032 1626192 5735400 1626320 5735888 -1626144 5735440 1626192 5735400 1627656 5730600 1627632 5730600 -1626144 5735440 1626096 5735584 1626192 5735400 1627632 5730600 -1626192 5735400 1627856 5736056 1627656 5730600 1627632 5730600 -1626144 5735440 1626192 5735400 1627632 5730600 1627560 5730576 -1626144 5735440 1626192 5735400 1627560 5730576 1625176 5734984 -1627560 5730576 1627440 5730528 1625176 5734984 1626192 5735400 -1626144 5735440 1626096 5735584 1626192 5735400 1625176 5734984 -1626144 5735440 1626192 5735400 1625176 5734984 1625440 5735200 -1626192 5735400 1627560 5730576 1625176 5734984 1625440 5735200 -1626144 5735440 1626192 5735400 1625440 5735200 1625576 5735360 -1626144 5735440 1626096 5735584 1626192 5735400 1625576 5735360 -1626192 5735400 1625176 5734984 1625440 5735200 1625576 5735360 -1626144 5735440 1626192 5735400 1625576 5735360 1626112 5735488 -1626192 5735400 1627632 5730600 1627560 5730576 1625176 5734984 -1626192 5735400 1627656 5730600 1627632 5730600 1627560 5730576 -1627656 5730600 1626192 5735400 1627856 5736056 1627720 5730568 -1627856 5736056 1626192 5735400 1626664 5736032 1626992 5736208 -1626192 5735400 1626328 5735392 1627656 5730600 1627632 5730600 -1626192 5735400 1627856 5736056 1626328 5735392 1627632 5730600 -1627856 5736056 1626328 5735392 1626192 5735400 1626664 5736032 -1626192 5735400 1626504 5735936 1626664 5736032 1626328 5735392 -1626328 5735392 1627632 5730600 1626192 5735400 1626504 5735936 -1626664 5736032 1627856 5736056 1626328 5735392 1626504 5735936 -1626328 5735392 1627856 5736056 1627656 5730600 1627632 5730600 -1627856 5736056 1627656 5730600 1626328 5735392 1626664 5736032 -1626192 5735400 1626320 5735888 1626504 5735936 1626328 5735392 -1626504 5735936 1626664 5736032 1626328 5735392 1626320 5735888 -1626192 5735400 1626320 5735888 1626328 5735392 1627632 5730600 -1626192 5735400 1626096 5735584 1626320 5735888 1626328 5735392 -1626192 5735400 1626096 5735584 1626328 5735392 1627632 5730600 -1626096 5735584 1626064 5735680 1626320 5735888 1626328 5735392 -1626192 5735400 1626144 5735440 1626096 5735584 1626328 5735392 -1626144 5735440 1626112 5735488 1626096 5735584 1626328 5735392 -1626192 5735400 1626144 5735440 1626328 5735392 1627632 5730600 -1626096 5735584 1626320 5735888 1626328 5735392 1626112 5735488 -1626144 5735440 1626112 5735488 1626328 5735392 1626192 5735400 -1626112 5735488 1626088 5735544 1626096 5735584 1626328 5735392 -1626320 5735888 1626504 5735936 1626328 5735392 1626096 5735584 -1626192 5735400 1626328 5735392 1627632 5730600 1627560 5730576 -1626328 5735392 1627656 5730600 1627632 5730600 1627560 5730576 -1626192 5735400 1626144 5735440 1626328 5735392 1627560 5730576 -1626192 5735400 1626328 5735392 1627560 5730576 1625176 5734984 -1627560 5730576 1627440 5730528 1625176 5734984 1626328 5735392 -1626192 5735400 1626328 5735392 1625176 5734984 1625440 5735200 -1626192 5735400 1626144 5735440 1626328 5735392 1625176 5734984 -1626328 5735392 1627632 5730600 1627560 5730576 1625176 5734984 -1627656 5730600 1626328 5735392 1627856 5736056 1627720 5730568 -1627856 5736056 1626328 5735392 1626664 5736032 1626992 5736208 -1626328 5735392 1626504 5735936 1626664 5736032 1626992 5736208 -1627856 5736056 1627656 5730600 1626328 5735392 1626992 5736208 -1627856 5736056 1626328 5735392 1626992 5736208 1627168 5736256 -1626664 5736032 1626800 5736136 1626992 5736208 1626328 5735392 -1626328 5735392 1626480 5735432 1627656 5730600 1627632 5730600 -1626328 5735392 1626480 5735432 1627632 5730600 1627560 5730576 -1626328 5735392 1627856 5736056 1626480 5735432 1627632 5730600 -1627856 5736056 1626480 5735432 1626328 5735392 1626992 5736208 -1626480 5735432 1627632 5730600 1626328 5735392 1626992 5736208 -1626480 5735432 1627856 5736056 1627656 5730600 1627632 5730600 -1627856 5736056 1627656 5730600 1626480 5735432 1626992 5736208 -1627856 5736056 1626480 5735432 1626992 5736208 1627168 5736256 -1626480 5735432 1626328 5735392 1626992 5736208 1627168 5736256 -1627856 5736056 1627656 5730600 1626480 5735432 1627168 5736256 -1627856 5736056 1626480 5735432 1627168 5736256 1627376 5736376 -1627656 5730600 1626480 5735432 1627856 5736056 1627720 5730568 -1626328 5735392 1626664 5736032 1626992 5736208 1626480 5735432 -1626328 5735392 1626504 5735936 1626664 5736032 1626480 5735432 -1626328 5735392 1626320 5735888 1626504 5735936 1626480 5735432 -1626504 5735936 1626664 5736032 1626480 5735432 1626320 5735888 -1626328 5735392 1626320 5735888 1626480 5735432 1627632 5730600 -1626992 5736208 1627168 5736256 1626480 5735432 1626664 5736032 -1626664 5736032 1626800 5736136 1626992 5736208 1626480 5735432 -1626328 5735392 1626096 5735584 1626320 5735888 1626480 5735432 -1626664 5736032 1626992 5736208 1626480 5735432 1626504 5735936 -1626480 5735432 1626712 5735520 1627656 5730600 1627632 5730600 -1626480 5735432 1626712 5735520 1627632 5730600 1626328 5735392 -1626480 5735432 1627856 5736056 1626712 5735520 1627632 5730600 -1627856 5736056 1626712 5735520 1626480 5735432 1627168 5736256 -1626712 5735520 1627632 5730600 1626480 5735432 1627168 5736256 -1626712 5735520 1627856 5736056 1627656 5730600 1627632 5730600 -1627856 5736056 1627656 5730600 1626712 5735520 1627168 5736256 -1626480 5735432 1626992 5736208 1627168 5736256 1626712 5735520 -1626480 5735432 1626664 5736032 1626992 5736208 1626712 5735520 -1626480 5735432 1626664 5736032 1626712 5735520 1627632 5730600 -1627168 5736256 1627856 5736056 1626712 5735520 1626992 5736208 -1626992 5736208 1627168 5736256 1626712 5735520 1626664 5736032 -1626664 5736032 1626800 5736136 1626992 5736208 1626712 5735520 -1626664 5736032 1626800 5736136 1626712 5735520 1626480 5735432 -1626992 5736208 1627168 5736256 1626712 5735520 1626800 5736136 -1627856 5736056 1626712 5735520 1627168 5736256 1627376 5736376 -1627656 5730600 1626712 5735520 1627856 5736056 1627720 5730568 -1626480 5735432 1626504 5735936 1626664 5736032 1626712 5735520 -1626480 5735432 1626320 5735888 1626504 5735936 1626712 5735520 -1626664 5736032 1626800 5736136 1626712 5735520 1626504 5735936 -1626480 5735432 1626504 5735936 1626712 5735520 1627632 5730600 -1626712 5735520 1627384 5735808 1627656 5730600 1627632 5730600 -1627856 5736056 1627384 5735808 1626712 5735520 1627168 5736256 -1626712 5735520 1626992 5736208 1627168 5736256 1627384 5735808 -1627384 5735808 1627656 5730600 1626712 5735520 1626992 5736208 -1627168 5736256 1627856 5736056 1627384 5735808 1626992 5736208 -1627856 5736056 1627656 5730600 1627384 5735808 1627168 5736256 -1626712 5735520 1626800 5736136 1626992 5736208 1627384 5735808 -1626992 5736208 1627168 5736256 1627384 5735808 1626800 5736136 -1626712 5735520 1626800 5736136 1627384 5735808 1627656 5730600 -1626712 5735520 1626664 5736032 1626800 5736136 1627384 5735808 -1627856 5736056 1627384 5735808 1627168 5736256 1627376 5736376 -1627856 5736056 1627384 5735808 1627376 5736376 1627624 5736560 -1627384 5735808 1626992 5736208 1627168 5736256 1627376 5736376 -1627856 5736056 1627656 5730600 1627384 5735808 1627376 5736376 -1627656 5730600 1627384 5735808 1627856 5736056 1627720 5730568 -1624896 5736208 1625192 5736144 1625736 5735632 1624808 5736120 -1624896 5736208 1625152 5736368 1625192 5736144 1624808 5736120 -1625192 5736144 1625152 5736368 1625736 5735632 1624808 5736120 -1625736 5735632 1625192 5736144 1625152 5736368 1625800 5735688 -1625192 5736144 1624896 5736208 1625152 5736368 1625800 5735688 -1625736 5735632 1624808 5736120 1625192 5736144 1625800 5735688 -1625152 5736368 1625448 5736544 1625800 5735688 1625192 5736144 -1625448 5736544 1626048 5736096 1625800 5735688 1625192 5736144 -1625448 5736544 1625752 5736648 1626048 5736096 1625192 5736144 -1626048 5736096 1625896 5735736 1625800 5735688 1625192 5736144 -1625152 5736368 1625448 5736544 1625192 5736144 1624896 5736208 -1625448 5736544 1626048 5736096 1625192 5736144 1625152 5736368 -1625800 5735688 1625736 5735632 1625192 5736144 1626048 5736096 -1625736 5735632 1624736 5736008 1624808 5736120 1625192 5736144 -1624808 5736120 1624896 5736208 1625192 5736144 1624736 5736008 -1625736 5735632 1624736 5736008 1625192 5736144 1625800 5735688 -1625736 5735632 1625576 5735360 1624736 5736008 1625192 5736144 -1625576 5735360 1624608 5735568 1624736 5736008 1625192 5736144 -1625576 5735360 1625440 5735200 1624608 5735568 1625192 5736144 -1625736 5735632 1625576 5735360 1625192 5736144 1625800 5735688 -1624736 5736008 1624808 5736120 1625192 5736144 1624608 5735568 -1625576 5735360 1624608 5735568 1625192 5736144 1625736 5735632 -1625192 5736144 1625088 5735952 1624608 5735568 1624736 5736008 -1624608 5735568 1625088 5735952 1625576 5735360 1625440 5735200 -1625192 5736144 1625576 5735360 1625088 5735952 1624736 5736008 -1625088 5735952 1625440 5735200 1624608 5735568 1624736 5736008 -1625088 5735952 1625192 5736144 1625576 5735360 1625440 5735200 -1624608 5735568 1625088 5735952 1625440 5735200 1625176 5734984 -1625192 5736144 1625088 5735952 1624736 5736008 1624808 5736120 -1625192 5736144 1625088 5735952 1624808 5736120 1624896 5736208 -1625088 5735952 1624608 5735568 1624736 5736008 1624808 5736120 -1625192 5736144 1625088 5735952 1624896 5736208 1625152 5736368 -1625192 5736144 1625576 5735360 1625088 5735952 1624896 5736208 -1625088 5735952 1624736 5736008 1624808 5736120 1624896 5736208 -1625576 5735360 1625088 5735952 1625192 5736144 1625736 5735632 -1625088 5735952 1624896 5736208 1625192 5736144 1625736 5735632 -1625192 5736144 1625800 5735688 1625736 5735632 1625088 5735952 -1625576 5735360 1625440 5735200 1625088 5735952 1625736 5735632 -1625440 5735200 1624928 5735800 1625088 5735952 1625576 5735360 -1625088 5735952 1624928 5735800 1624608 5735568 1624736 5736008 -1625088 5735952 1624928 5735800 1624736 5736008 1624808 5736120 -1624928 5735800 1624608 5735568 1624736 5736008 1624808 5736120 -1624928 5735800 1624808 5736120 1625088 5735952 1625576 5735360 -1625088 5735952 1625736 5735632 1625576 5735360 1624928 5735800 -1624928 5735800 1625440 5735200 1624608 5735568 1624736 5736008 -1625440 5735200 1624608 5735568 1624928 5735800 1625576 5735360 -1624608 5735568 1624928 5735800 1625440 5735200 1625176 5734984 -1624608 5735568 1624736 5736008 1624928 5735800 1625176 5734984 -1624928 5735800 1625576 5735360 1625440 5735200 1625176 5734984 -1624608 5735568 1624928 5735800 1625176 5734984 1624520 5735400 -1625088 5735952 1624928 5735800 1624808 5736120 1624896 5736208 -1624928 5735800 1624904 5735760 1624608 5735568 1624736 5736008 -1624928 5735800 1624904 5735760 1624736 5736008 1624808 5736120 -1624928 5735800 1625176 5734984 1624904 5735760 1624736 5736008 -1624904 5735760 1625176 5734984 1624608 5735568 1624736 5736008 -1625176 5734984 1624904 5735760 1624928 5735800 1625440 5735200 -1624904 5735760 1624736 5736008 1624928 5735800 1625440 5735200 -1624928 5735800 1625576 5735360 1625440 5735200 1624904 5735760 -1624928 5735800 1625088 5735952 1625576 5735360 1624904 5735760 -1624928 5735800 1625576 5735360 1624904 5735760 1624736 5736008 -1625440 5735200 1625176 5734984 1624904 5735760 1625576 5735360 -1625176 5734984 1624608 5735568 1624904 5735760 1625440 5735200 -1624608 5735568 1624904 5735760 1625176 5734984 1624520 5735400 -1624904 5735760 1624864 5735680 1624608 5735568 1624736 5736008 -1624904 5735760 1624864 5735680 1624736 5736008 1624928 5735800 -1624904 5735760 1625176 5734984 1624864 5735680 1624736 5736008 -1625176 5734984 1624864 5735680 1624904 5735760 1625440 5735200 -1624904 5735760 1625576 5735360 1625440 5735200 1624864 5735680 -1624904 5735760 1624928 5735800 1625576 5735360 1624864 5735680 -1624864 5735680 1624736 5736008 1624904 5735760 1625576 5735360 -1625440 5735200 1625176 5734984 1624864 5735680 1625576 5735360 -1624864 5735680 1625176 5734984 1624608 5735568 1624736 5736008 -1625176 5734984 1624608 5735568 1624864 5735680 1625440 5735200 -1624608 5735568 1624864 5735680 1625176 5734984 1624520 5735400 -1625176 5734984 1625040 5734896 1624520 5735400 1624864 5735680 -1624608 5735568 1624736 5736008 1624864 5735680 1624520 5735400 -1624864 5735680 1625440 5735200 1625176 5734984 1624520 5735400 -1625440 5735200 1624880 5735664 1624864 5735680 1625576 5735360 -1624864 5735680 1624904 5735760 1625576 5735360 1624880 5735664 -1624904 5735760 1624928 5735800 1625576 5735360 1624880 5735664 -1624928 5735800 1625088 5735952 1625576 5735360 1624880 5735664 -1625088 5735952 1625736 5735632 1625576 5735360 1624880 5735664 -1624928 5735800 1625088 5735952 1624880 5735664 1624904 5735760 -1624904 5735760 1624928 5735800 1624880 5735664 1624864 5735680 -1625576 5735360 1625440 5735200 1624880 5735664 1625088 5735952 -1624864 5735680 1624880 5735664 1625176 5734984 1624520 5735400 -1625176 5734984 1625040 5734896 1624520 5735400 1624880 5735664 -1625040 5734896 1624432 5735296 1624520 5735400 1624880 5735664 -1624520 5735400 1624864 5735680 1624880 5735664 1625040 5734896 -1624880 5735664 1624520 5735400 1624864 5735680 1624904 5735760 -1624880 5735664 1625440 5735200 1625176 5734984 1625040 5734896 -1625440 5735200 1625176 5734984 1624880 5735664 1625576 5735360 -1624864 5735680 1624880 5735664 1624520 5735400 1624608 5735568 -1624864 5735680 1624880 5735664 1624608 5735568 1624736 5736008 -1624880 5735664 1625040 5734896 1624520 5735400 1624608 5735568 -1624864 5735680 1624904 5735760 1624880 5735664 1624608 5735568 -1624880 5735664 1624968 5735512 1625176 5734984 1625040 5734896 -1624880 5735664 1624968 5735512 1625040 5734896 1624520 5735400 -1625040 5734896 1624432 5735296 1624520 5735400 1624968 5735512 -1624880 5735664 1624968 5735512 1624520 5735400 1624608 5735568 -1624968 5735512 1625040 5734896 1624520 5735400 1624608 5735568 -1624968 5735512 1625176 5734984 1625040 5734896 1624520 5735400 -1624880 5735664 1625440 5735200 1624968 5735512 1624608 5735568 -1625440 5735200 1624968 5735512 1624880 5735664 1625576 5735360 -1624880 5735664 1625088 5735952 1625576 5735360 1624968 5735512 -1624880 5735664 1624928 5735800 1625088 5735952 1624968 5735512 -1625088 5735952 1625736 5735632 1625576 5735360 1624968 5735512 -1624880 5735664 1624904 5735760 1624928 5735800 1624968 5735512 -1624928 5735800 1625088 5735952 1624968 5735512 1624904 5735760 -1624880 5735664 1624864 5735680 1624904 5735760 1624968 5735512 -1625088 5735952 1625576 5735360 1624968 5735512 1624928 5735800 -1624968 5735512 1624608 5735568 1624880 5735664 1624904 5735760 -1625576 5735360 1625440 5735200 1624968 5735512 1625088 5735952 -1624968 5735512 1625440 5735200 1625176 5734984 1625040 5734896 -1625440 5735200 1625176 5734984 1624968 5735512 1625576 5735360 -1624880 5735664 1624968 5735512 1624608 5735568 1624864 5735680 -1624968 5735512 1625016 5735360 1625040 5734896 1624520 5735400 -1625040 5734896 1624432 5735296 1624520 5735400 1625016 5735360 -1624968 5735512 1625016 5735360 1624520 5735400 1624608 5735568 -1625040 5734896 1624728 5734744 1624432 5735296 1625016 5735360 -1624520 5735400 1624968 5735512 1625016 5735360 1624432 5735296 -1625176 5734984 1625016 5735360 1624968 5735512 1625440 5735200 -1624968 5735512 1625440 5735200 1625016 5735360 1624520 5735400 -1624968 5735512 1625576 5735360 1625440 5735200 1625016 5735360 -1624968 5735512 1625088 5735952 1625576 5735360 1625016 5735360 -1625440 5735200 1625176 5734984 1625016 5735360 1625576 5735360 -1624968 5735512 1625576 5735360 1625016 5735360 1624520 5735400 -1625016 5735360 1625176 5734984 1625040 5734896 1624432 5735296 -1625176 5734984 1625040 5734896 1625016 5735360 1625440 5735200 -1625440 5735200 1625064 5735304 1625016 5735360 1625576 5735360 -1625016 5735360 1624968 5735512 1625576 5735360 1625064 5735304 -1624968 5735512 1625088 5735952 1625576 5735360 1625064 5735304 -1625576 5735360 1625440 5735200 1625064 5735304 1624968 5735512 -1625064 5735304 1625176 5734984 1625016 5735360 1624968 5735512 -1625016 5735360 1625064 5735304 1625176 5734984 1625040 5734896 -1625016 5735360 1625064 5735304 1625040 5734896 1624432 5735296 -1625016 5735360 1624968 5735512 1625064 5735304 1625040 5734896 -1625064 5735304 1625440 5735200 1625176 5734984 1625040 5734896 -1625440 5735200 1625176 5734984 1625064 5735304 1625576 5735360 -1625576 5735360 1625128 5735296 1625064 5735304 1624968 5735512 -1625576 5735360 1625128 5735296 1624968 5735512 1625088 5735952 -1625064 5735304 1625016 5735360 1624968 5735512 1625128 5735296 -1624968 5735512 1625576 5735360 1625128 5735296 1625016 5735360 -1625128 5735296 1625440 5735200 1625064 5735304 1625016 5735360 -1625064 5735304 1625128 5735296 1625440 5735200 1625176 5734984 -1625064 5735304 1625128 5735296 1625176 5734984 1625040 5734896 -1625064 5735304 1625016 5735360 1625128 5735296 1625176 5734984 -1625128 5735296 1625576 5735360 1625440 5735200 1625176 5734984 -1625576 5735360 1625440 5735200 1625128 5735296 1624968 5735512 -1625576 5735360 1625296 5735368 1624968 5735512 1625088 5735952 -1625576 5735360 1625296 5735368 1625088 5735952 1625736 5735632 -1624968 5735512 1624928 5735800 1625088 5735952 1625296 5735368 -1625296 5735368 1624968 5735512 1625088 5735952 1625736 5735632 -1624968 5735512 1625296 5735368 1625128 5735296 1625016 5735360 -1625128 5735296 1625064 5735304 1625016 5735360 1625296 5735368 -1625296 5735368 1625576 5735360 1625128 5735296 1625016 5735360 -1625128 5735296 1625296 5735368 1625576 5735360 1625440 5735200 -1625128 5735296 1625296 5735368 1625440 5735200 1625176 5734984 -1625128 5735296 1625016 5735360 1625296 5735368 1625440 5735200 -1625576 5735360 1625440 5735200 1625296 5735368 1625736 5735632 -1625296 5735368 1625016 5735360 1624968 5735512 1625088 5735952 -1625088 5735952 1625192 5736144 1625736 5735632 1625296 5735368 -1625736 5735632 1625448 5735448 1625296 5735368 1625088 5735952 -1625296 5735368 1624968 5735512 1625088 5735952 1625448 5735448 -1625088 5735952 1625736 5735632 1625448 5735448 1624968 5735512 -1624968 5735512 1624928 5735800 1625088 5735952 1625448 5735448 -1625296 5735368 1625448 5735448 1625576 5735360 1625440 5735200 -1625296 5735368 1625448 5735448 1625440 5735200 1625128 5735296 -1625448 5735448 1625440 5735200 1625296 5735368 1624968 5735512 -1625296 5735368 1625016 5735360 1624968 5735512 1625448 5735448 -1625448 5735448 1625736 5735632 1625576 5735360 1625440 5735200 -1625736 5735632 1625576 5735360 1625448 5735448 1625088 5735952 -1625736 5735632 1625448 5735448 1625088 5735952 1625192 5736144 -1625088 5735952 1625488 5735496 1625448 5735448 1624968 5735512 -1625088 5735952 1625488 5735496 1624968 5735512 1624928 5735800 -1625448 5735448 1625296 5735368 1624968 5735512 1625488 5735496 -1624968 5735512 1625088 5735952 1625488 5735496 1625296 5735368 -1625296 5735368 1625016 5735360 1624968 5735512 1625488 5735496 -1625488 5735496 1625736 5735632 1625448 5735448 1625296 5735368 -1625448 5735448 1625488 5735496 1625736 5735632 1625576 5735360 -1625448 5735448 1625488 5735496 1625576 5735360 1625440 5735200 -1625448 5735448 1625296 5735368 1625488 5735496 1625576 5735360 -1625488 5735496 1625088 5735952 1625736 5735632 1625576 5735360 -1625088 5735952 1625736 5735632 1625488 5735496 1624968 5735512 -1625736 5735632 1625488 5735496 1625088 5735952 1625192 5736144 -1625736 5735632 1625600 5735728 1625192 5736144 1625800 5735688 -1625736 5735632 1625088 5735952 1625600 5735728 1625800 5735688 -1625600 5735728 1625088 5735952 1625192 5736144 1625800 5735688 -1625192 5736144 1626048 5736096 1625800 5735688 1625600 5735728 -1625192 5736144 1625448 5736544 1626048 5736096 1625600 5735728 -1625448 5736544 1625752 5736648 1626048 5736096 1625600 5735728 -1626048 5736096 1625896 5735736 1625800 5735688 1625600 5735728 -1626048 5736096 1626064 5736040 1625896 5735736 1625600 5735728 -1625800 5735688 1625736 5735632 1625600 5735728 1625896 5735736 -1625192 5736144 1625448 5736544 1625600 5735728 1625088 5735952 -1625192 5736144 1625152 5736368 1625448 5736544 1625600 5735728 -1626048 5736096 1625896 5735736 1625600 5735728 1625448 5736544 -1625088 5735952 1625600 5735728 1625736 5735632 1625488 5735496 -1625088 5735952 1625192 5736144 1625600 5735728 1625488 5735496 -1625736 5735632 1625576 5735360 1625488 5735496 1625600 5735728 -1625600 5735728 1625800 5735688 1625736 5735632 1625488 5735496 -1625088 5735952 1625600 5735728 1625488 5735496 1624968 5735512 -1625448 5736544 1625680 5735832 1625600 5735728 1625192 5736144 -1626048 5736096 1625680 5735832 1625448 5736544 1625752 5736648 -1625448 5736544 1626048 5736096 1625680 5735832 1625192 5736144 -1625600 5735728 1625088 5735952 1625192 5736144 1625680 5735832 -1625680 5735832 1626048 5736096 1625600 5735728 1625192 5736144 -1625448 5736544 1625680 5735832 1625192 5736144 1625152 5736368 -1625600 5735728 1625680 5735832 1626048 5736096 1625896 5735736 -1626048 5736096 1626064 5736040 1625896 5735736 1625680 5735832 -1625600 5735728 1625680 5735832 1625896 5735736 1625800 5735688 -1625600 5735728 1625680 5735832 1625800 5735688 1625736 5735632 -1625680 5735832 1625896 5735736 1625800 5735688 1625736 5735632 -1625680 5735832 1625448 5736544 1626048 5736096 1626064 5736040 -1625600 5735728 1625680 5735832 1625736 5735632 1625488 5735496 -1625600 5735728 1625192 5736144 1625680 5735832 1625736 5735632 -1625896 5735736 1625800 5735688 1625680 5735832 1626064 5736040 -1626064 5736040 1625984 5735736 1625896 5735736 1625680 5735832 -1626048 5736096 1625840 5735952 1625448 5736544 1625752 5736648 -1626048 5736096 1625840 5735952 1625752 5736648 1626056 5736464 -1625840 5735952 1625448 5736544 1625752 5736648 1626056 5736464 -1626048 5736096 1625840 5735952 1626056 5736464 1626072 5736440 -1625680 5735832 1625840 5735952 1626048 5736096 1626064 5736040 -1625680 5735832 1625840 5735952 1626064 5736040 1625896 5735736 -1625840 5735952 1626048 5736096 1626064 5736040 1625896 5735736 -1625680 5735832 1625448 5736544 1625840 5735952 1625896 5735736 -1625448 5736544 1625840 5735952 1625680 5735832 1625192 5736144 -1625680 5735832 1625600 5735728 1625192 5736144 1625840 5735952 -1625840 5735952 1625896 5735736 1625680 5735832 1625192 5736144 -1626048 5736096 1626064 5736040 1625840 5735952 1626056 5736464 -1625840 5735952 1625192 5736144 1625448 5736544 1625752 5736648 -1625752 5736648 1626032 5736528 1626056 5736464 1625840 5735952 -1625448 5736544 1625840 5735952 1625192 5736144 1625152 5736368 -1625680 5735832 1625840 5735952 1625896 5735736 1625800 5735688 -1626064 5736040 1625984 5735736 1625896 5735736 1625840 5735952 -1625896 5735736 1625680 5735832 1625840 5735952 1625984 5735736 -1626064 5736040 1625984 5735736 1625840 5735952 1626048 5736096 -1626064 5736040 1626096 5736000 1625984 5735736 1625840 5735952 -1626064 5736040 1626096 5736000 1625840 5735952 1626048 5736096 -1625984 5735736 1625896 5735736 1625840 5735952 1626096 5736000 -1626096 5736000 1626240 5735904 1625984 5735736 1625840 5735952 -1625840 5735952 1625856 5735992 1626056 5736464 1626048 5736096 -1625752 5736648 1625856 5735992 1625840 5735952 1625448 5736544 -1626056 5736464 1626072 5736440 1626048 5736096 1625856 5735992 -1626048 5736096 1625840 5735952 1625856 5735992 1626072 5736440 -1625840 5735952 1625856 5735992 1626048 5736096 1626064 5736040 -1625856 5735992 1626072 5736440 1626048 5736096 1626064 5736040 -1625840 5735952 1625856 5735992 1626064 5736040 1626096 5736000 -1625856 5735992 1626048 5736096 1626064 5736040 1626096 5736000 -1625840 5735952 1625448 5736544 1625856 5735992 1626096 5736000 -1625840 5735952 1625192 5736144 1625448 5736544 1625856 5735992 -1625448 5736544 1625752 5736648 1625856 5735992 1625192 5736144 -1625840 5735952 1625680 5735832 1625192 5736144 1625856 5735992 -1625680 5735832 1625600 5735728 1625192 5736144 1625856 5735992 -1625840 5735952 1625680 5735832 1625856 5735992 1626096 5736000 -1625192 5736144 1625448 5736544 1625856 5735992 1625680 5735832 -1625856 5735992 1625752 5736648 1626056 5736464 1626072 5736440 -1625752 5736648 1626056 5736464 1625856 5735992 1625448 5736544 -1626056 5736464 1625856 5735992 1625752 5736648 1626032 5736528 -1625192 5736144 1625152 5736368 1625448 5736544 1625856 5735992 -1625840 5735952 1625856 5735992 1626096 5736000 1625984 5735736 -1625448 5736544 1625848 5736032 1625856 5735992 1625192 5736144 -1625856 5735992 1625680 5735832 1625192 5736144 1625848 5736032 -1625680 5735832 1625600 5735728 1625192 5736144 1625848 5736032 -1625192 5736144 1625448 5736544 1625848 5736032 1625680 5735832 -1625856 5735992 1625840 5735952 1625680 5735832 1625848 5736032 -1625680 5735832 1625192 5736144 1625848 5736032 1625840 5735952 -1625848 5736032 1625752 5736648 1625856 5735992 1625840 5735952 -1625856 5735992 1625848 5736032 1625752 5736648 1626056 5736464 -1625856 5735992 1625848 5736032 1626056 5736464 1626072 5736440 -1625856 5735992 1625848 5736032 1626072 5736440 1626048 5736096 -1625856 5735992 1625848 5736032 1626048 5736096 1626064 5736040 -1625848 5736032 1626072 5736440 1626048 5736096 1626064 5736040 -1625856 5735992 1625848 5736032 1626064 5736040 1626096 5736000 -1625848 5736032 1626056 5736464 1626072 5736440 1626048 5736096 -1625856 5735992 1625840 5735952 1625848 5736032 1626064 5736040 -1625848 5736032 1625752 5736648 1626056 5736464 1626072 5736440 -1625848 5736032 1625448 5736544 1625752 5736648 1626056 5736464 -1625448 5736544 1625752 5736648 1625848 5736032 1625192 5736144 -1625752 5736648 1626032 5736528 1626056 5736464 1625848 5736032 -1625448 5736544 1625848 5736032 1625192 5736144 1625152 5736368 -1625848 5736032 1625808 5736088 1625752 5736648 1626056 5736464 -1625848 5736032 1625808 5736088 1626056 5736464 1626072 5736440 -1625848 5736032 1625808 5736088 1626072 5736440 1626048 5736096 -1625848 5736032 1625808 5736088 1626048 5736096 1626064 5736040 -1625808 5736088 1626056 5736464 1626072 5736440 1626048 5736096 -1625808 5736088 1625752 5736648 1626056 5736464 1626072 5736440 -1625848 5736032 1625448 5736544 1625808 5736088 1626048 5736096 -1625448 5736544 1625808 5736088 1625848 5736032 1625192 5736144 -1625848 5736032 1625680 5735832 1625192 5736144 1625808 5736088 -1625680 5735832 1625600 5735728 1625192 5736144 1625808 5736088 -1625848 5736032 1625840 5735952 1625680 5735832 1625808 5736088 -1625680 5735832 1625192 5736144 1625808 5736088 1625840 5735952 -1625848 5736032 1625856 5735992 1625840 5735952 1625808 5736088 -1625808 5736088 1626048 5736096 1625848 5736032 1625840 5735952 -1625192 5736144 1625448 5736544 1625808 5736088 1625680 5735832 -1625808 5736088 1625448 5736544 1625752 5736648 1626056 5736464 -1625448 5736544 1625752 5736648 1625808 5736088 1625192 5736144 -1625752 5736648 1626032 5736528 1626056 5736464 1625808 5736088 -1625448 5736544 1625808 5736088 1625192 5736144 1625152 5736368 -1625192 5736144 1625744 5736128 1625808 5736088 1625680 5735832 -1625192 5736144 1625744 5736128 1625680 5735832 1625600 5735728 -1625808 5736088 1625840 5735952 1625680 5735832 1625744 5736128 -1625808 5736088 1625848 5736032 1625840 5735952 1625744 5736128 -1625680 5735832 1625192 5736144 1625744 5736128 1625840 5735952 -1625744 5736128 1625448 5736544 1625808 5736088 1625840 5735952 -1625808 5736088 1625744 5736128 1625448 5736544 1625752 5736648 -1625808 5736088 1625744 5736128 1625752 5736648 1626056 5736464 -1625808 5736088 1625744 5736128 1626056 5736464 1626072 5736440 -1625808 5736088 1625744 5736128 1626072 5736440 1626048 5736096 -1625744 5736128 1625752 5736648 1626056 5736464 1626072 5736440 -1625808 5736088 1625840 5735952 1625744 5736128 1626072 5736440 -1625744 5736128 1625448 5736544 1625752 5736648 1626056 5736464 -1625744 5736128 1625192 5736144 1625448 5736544 1625752 5736648 -1625192 5736144 1625448 5736544 1625744 5736128 1625680 5735832 -1625752 5736648 1626032 5736528 1626056 5736464 1625744 5736128 -1625448 5736544 1625744 5736128 1625192 5736144 1625152 5736368 -1625744 5736128 1625512 5736176 1625448 5736544 1625752 5736648 -1625744 5736128 1625512 5736176 1625752 5736648 1626056 5736464 -1625744 5736128 1625192 5736144 1625512 5736176 1625752 5736648 -1625192 5736144 1625512 5736176 1625744 5736128 1625680 5735832 -1625192 5736144 1625512 5736176 1625680 5735832 1625600 5735728 -1625744 5736128 1625840 5735952 1625680 5735832 1625512 5736176 -1625512 5736176 1625752 5736648 1625744 5736128 1625680 5735832 -1625512 5736176 1625744 5736128 1625680 5735832 1625600 5735728 -1625512 5736176 1625192 5736144 1625448 5736544 1625752 5736648 -1625192 5736144 1625448 5736544 1625512 5736176 1625600 5735728 -1625192 5736144 1625512 5736176 1625600 5735728 1625088 5735952 -1625512 5736176 1625680 5735832 1625600 5735728 1625088 5735952 -1625600 5735728 1625488 5735496 1625088 5735952 1625512 5736176 -1625192 5736144 1625448 5736544 1625512 5736176 1625088 5735952 -1625448 5736544 1625512 5736176 1625192 5736144 1625152 5736368 -1625192 5736144 1624896 5736208 1625152 5736368 1625512 5736176 -1625448 5736544 1625752 5736648 1625512 5736176 1625152 5736368 -1625512 5736176 1625088 5735952 1625192 5736144 1625152 5736368 -1625152 5736368 1625472 5736176 1625192 5736144 1624896 5736208 -1625192 5736144 1625472 5736176 1625512 5736176 1625088 5735952 -1625472 5736176 1625152 5736368 1625512 5736176 1625088 5735952 -1625192 5736144 1625152 5736368 1625472 5736176 1625088 5735952 -1625512 5736176 1625600 5735728 1625088 5735952 1625472 5736176 -1625512 5736176 1625680 5735832 1625600 5735728 1625472 5736176 -1625600 5735728 1625488 5735496 1625088 5735952 1625472 5736176 -1625512 5736176 1625744 5736128 1625680 5735832 1625472 5736176 -1625512 5736176 1625680 5735832 1625472 5736176 1625152 5736368 -1625088 5735952 1625192 5736144 1625472 5736176 1625600 5735728 -1625600 5735728 1625088 5735952 1625472 5736176 1625680 5735832 -1625512 5736176 1625472 5736176 1625152 5736368 1625448 5736544 -1625512 5736176 1625472 5736176 1625448 5736544 1625752 5736648 -1625512 5736176 1625680 5735832 1625472 5736176 1625448 5736544 -1625472 5736176 1625192 5736144 1625152 5736368 1625448 5736544 -1625152 5736368 1625328 5736224 1625192 5736144 1624896 5736208 -1625472 5736176 1625328 5736224 1625152 5736368 1625448 5736544 -1625472 5736176 1625192 5736144 1625328 5736224 1625448 5736544 -1625192 5736144 1625328 5736224 1625472 5736176 1625088 5735952 -1625328 5736224 1625192 5736144 1625152 5736368 1625448 5736544 -1625472 5736176 1625328 5736224 1625448 5736544 1625512 5736176 -1625152 5736368 1625256 5736208 1625192 5736144 1624896 5736208 -1625328 5736224 1625256 5736208 1625152 5736368 1625448 5736544 -1625192 5736144 1625256 5736208 1625328 5736224 1625472 5736176 -1627752 5730520 1629216 5731112 1629872 5726768 1629776 5726856 -1629216 5731112 1629416 5736656 1629872 5726768 1629776 5726856 -1627752 5730520 1629416 5736656 1629216 5731112 1629776 5726856 -1627752 5730520 1629216 5731112 1629776 5726856 1629584 5726976 -1627752 5730520 1629416 5736656 1629216 5731112 1629584 5726976 -1629216 5731112 1629872 5726768 1629776 5726856 1629584 5726976 -1629416 5736656 1629216 5731112 1627752 5730520 1629320 5736568 -1629416 5736656 1629872 5726768 1629216 5731112 1629320 5736568 -1629216 5731112 1629584 5726976 1627752 5730520 1629320 5736568 -1627752 5730520 1627744 5730544 1629320 5736568 1629216 5731112 -1627752 5730520 1627744 5730544 1629216 5731112 1629584 5726976 -1629320 5736568 1629416 5736656 1629216 5731112 1627744 5730544 -1629872 5726768 1629216 5731112 1629416 5736656 1629928 5726696 -1629872 5726768 1629776 5726856 1629216 5731112 1629928 5726696 -1629216 5731112 1629320 5736568 1629416 5736656 1629928 5726696 -1629416 5736656 1629432 5736720 1629928 5726696 1629216 5731112 -1629416 5736656 1629432 5736720 1629216 5731112 1629320 5736568 -1629928 5726696 1629872 5726768 1629216 5731112 1629432 5736720 -1627752 5730520 1629216 5731112 1629584 5726976 1627736 5730496 -1627752 5730520 1627744 5730544 1629216 5731112 1627736 5730496 -1629216 5731112 1629776 5726856 1629584 5726976 1627736 5730496 -1629584 5726976 1627648 5730440 1627736 5730496 1629216 5731112 -1627744 5730544 1629288 5736552 1629320 5736568 1629216 5731112 -1627744 5730544 1629008 5736448 1629288 5736552 1629216 5731112 -1627744 5730544 1629008 5736448 1629216 5731112 1627752 5730520 -1629320 5736568 1629416 5736656 1629216 5731112 1629288 5736552 -1627744 5730544 1627720 5730568 1629008 5736448 1629216 5731112 -1629008 5736448 1629288 5736552 1629216 5731112 1627720 5730568 -1627720 5730568 1628488 5736312 1629008 5736448 1629216 5731112 -1629008 5736448 1629288 5736552 1629216 5731112 1628488 5736312 -1627720 5730568 1627856 5736056 1628488 5736312 1629216 5731112 -1628488 5736312 1629008 5736448 1629216 5731112 1627856 5736056 -1627744 5730544 1627720 5730568 1629216 5731112 1627752 5730520 -1627720 5730568 1627856 5736056 1629216 5731112 1627744 5730544 -1627720 5730568 1627656 5730600 1627856 5736056 1629216 5731112 -1627856 5736056 1628488 5736312 1629216 5731112 1627656 5730600 -1627720 5730568 1627656 5730600 1629216 5731112 1627744 5730544 -1627856 5736056 1628256 5736240 1628488 5736312 1629216 5731112 -1627656 5730600 1627384 5735808 1627856 5736056 1629216 5731112 -1627656 5730600 1626712 5735520 1627384 5735808 1629216 5731112 -1627656 5730600 1627632 5730600 1626712 5735520 1629216 5731112 -1627856 5736056 1628488 5736312 1629216 5731112 1627384 5735808 -1627656 5730600 1626712 5735520 1629216 5731112 1627720 5730568 -1627384 5735808 1627856 5736056 1629216 5731112 1626712 5735520 -1629288 5736552 1629320 5736568 1629216 5731112 1629008 5736448 -1629432 5736720 1629944 5726624 1629928 5726696 1629216 5731112 -1629216 5731112 1629304 5731208 1629928 5726696 1629872 5726768 -1629216 5731112 1629304 5731208 1629872 5726768 1629776 5726856 -1629216 5731112 1629432 5736720 1629304 5731208 1629776 5726856 -1629304 5731208 1629432 5736720 1629928 5726696 1629872 5726768 -1629216 5731112 1629304 5731208 1629776 5726856 1629584 5726976 -1629304 5731208 1629928 5726696 1629872 5726768 1629776 5726856 -1629432 5736720 1629304 5731208 1629216 5731112 1629416 5736656 -1629216 5731112 1629320 5736568 1629416 5736656 1629304 5731208 -1629304 5731208 1629776 5726856 1629216 5731112 1629320 5736568 -1629432 5736720 1629928 5726696 1629304 5731208 1629416 5736656 -1629216 5731112 1629288 5736552 1629320 5736568 1629304 5731208 -1629320 5736568 1629416 5736656 1629304 5731208 1629288 5736552 -1629216 5731112 1629288 5736552 1629304 5731208 1629776 5726856 -1629416 5736656 1629432 5736720 1629304 5731208 1629320 5736568 -1629216 5731112 1629008 5736448 1629288 5736552 1629304 5731208 -1629216 5731112 1628488 5736312 1629008 5736448 1629304 5731208 -1629216 5731112 1628488 5736312 1629304 5731208 1629776 5726856 -1629216 5731112 1627856 5736056 1628488 5736312 1629304 5731208 -1628488 5736312 1629008 5736448 1629304 5731208 1627856 5736056 -1629216 5731112 1627856 5736056 1629304 5731208 1629776 5726856 -1629216 5731112 1627384 5735808 1627856 5736056 1629304 5731208 -1629216 5731112 1627384 5735808 1629304 5731208 1629776 5726856 -1627856 5736056 1628488 5736312 1629304 5731208 1627384 5735808 -1629288 5736552 1629320 5736568 1629304 5731208 1629008 5736448 -1627856 5736056 1628256 5736240 1628488 5736312 1629304 5731208 -1628488 5736312 1629008 5736448 1629304 5731208 1628256 5736240 -1627856 5736056 1628256 5736240 1629304 5731208 1627384 5735808 -1629216 5731112 1626712 5735520 1627384 5735808 1629304 5731208 -1629216 5731112 1627656 5730600 1626712 5735520 1629304 5731208 -1627656 5730600 1627632 5730600 1626712 5735520 1629304 5731208 -1629216 5731112 1627656 5730600 1629304 5731208 1629776 5726856 -1627384 5735808 1627856 5736056 1629304 5731208 1626712 5735520 -1629216 5731112 1627720 5730568 1627656 5730600 1629304 5731208 -1626712 5735520 1627384 5735808 1629304 5731208 1627656 5730600 -1629008 5736448 1629288 5736552 1629304 5731208 1628488 5736312 -1629928 5726696 1629304 5731208 1629432 5736720 1629944 5726624 -1629928 5726696 1629872 5726768 1629304 5731208 1629944 5726624 -1629304 5731208 1629416 5736656 1629432 5736720 1629944 5726624 -1629432 5736720 1631312 5744824 1629944 5726624 1629304 5731208 -1629432 5736720 1629320 5731248 1629304 5731208 1629416 5736656 -1629320 5731248 1629944 5726624 1629304 5731208 1629416 5736656 -1629432 5736720 1629944 5726624 1629320 5731248 1629416 5736656 -1629304 5731208 1629320 5736568 1629416 5736656 1629320 5731248 -1629304 5731208 1629288 5736552 1629320 5736568 1629320 5731248 -1629304 5731208 1629288 5736552 1629320 5731248 1629944 5726624 -1629416 5736656 1629432 5736720 1629320 5731248 1629320 5736568 -1629304 5731208 1629008 5736448 1629288 5736552 1629320 5731248 -1629288 5736552 1629320 5736568 1629320 5731248 1629008 5736448 -1629304 5731208 1629008 5736448 1629320 5731248 1629944 5726624 -1629320 5736568 1629416 5736656 1629320 5731248 1629288 5736552 -1629304 5731208 1628488 5736312 1629008 5736448 1629320 5731248 -1629304 5731208 1628256 5736240 1628488 5736312 1629320 5731248 -1629304 5731208 1628256 5736240 1629320 5731248 1629944 5726624 -1629008 5736448 1629288 5736552 1629320 5731248 1628488 5736312 -1629304 5731208 1627856 5736056 1628256 5736240 1629320 5731248 -1628256 5736240 1628488 5736312 1629320 5731248 1627856 5736056 -1629304 5731208 1627856 5736056 1629320 5731248 1629944 5726624 -1629304 5731208 1627384 5735808 1627856 5736056 1629320 5731248 -1629304 5731208 1627384 5735808 1629320 5731248 1629944 5726624 -1629304 5731208 1626712 5735520 1627384 5735808 1629320 5731248 -1629304 5731208 1626712 5735520 1629320 5731248 1629944 5726624 -1627384 5735808 1627856 5736056 1629320 5731248 1626712 5735520 -1627856 5736056 1628256 5736240 1629320 5731248 1627384 5735808 -1629304 5731208 1627656 5730600 1626712 5735520 1629320 5731248 -1627656 5730600 1627632 5730600 1626712 5735520 1629320 5731248 -1627632 5730600 1626480 5735432 1626712 5735520 1629320 5731248 -1629304 5731208 1629216 5731112 1627656 5730600 1629320 5731248 -1629304 5731208 1629216 5731112 1629320 5731248 1629944 5726624 -1626712 5735520 1627384 5735808 1629320 5731248 1627632 5730600 -1629216 5731112 1627720 5730568 1627656 5730600 1629320 5731248 -1627656 5730600 1627632 5730600 1629320 5731248 1629216 5731112 -1628488 5736312 1629008 5736448 1629320 5731248 1628256 5736240 -1629944 5726624 1629320 5731248 1629432 5736720 1631312 5744824 -1629304 5731208 1629320 5731248 1629944 5726624 1629928 5726696 -1629304 5731208 1629320 5731248 1629928 5726696 1629872 5726768 -1629304 5731208 1629216 5731112 1629320 5731248 1629928 5726696 -1629320 5731248 1629432 5736720 1629944 5726624 1629928 5726696 -1626712 5735520 1629272 5731304 1627632 5730600 1626480 5735432 -1627632 5730600 1629272 5731304 1629320 5731248 1627656 5730600 -1629272 5731304 1626712 5735520 1629320 5731248 1627656 5730600 -1627632 5730600 1626712 5735520 1629272 5731304 1627656 5730600 -1629320 5731248 1629272 5731304 1626712 5735520 1627384 5735808 -1629320 5731248 1627656 5730600 1629272 5731304 1627384 5735808 -1629272 5731304 1627632 5730600 1626712 5735520 1627384 5735808 -1629320 5731248 1629272 5731304 1627384 5735808 1627856 5736056 -1629320 5731248 1627656 5730600 1629272 5731304 1627856 5736056 -1629272 5731304 1626712 5735520 1627384 5735808 1627856 5736056 -1629320 5731248 1629272 5731304 1627856 5736056 1628256 5736240 -1629320 5731248 1629272 5731304 1628256 5736240 1628488 5736312 -1629320 5731248 1627656 5730600 1629272 5731304 1628488 5736312 -1629272 5731304 1627384 5735808 1627856 5736056 1628256 5736240 -1629272 5731304 1627856 5736056 1628256 5736240 1628488 5736312 -1629320 5731248 1629216 5731112 1627656 5730600 1629272 5731304 -1627656 5730600 1627632 5730600 1629272 5731304 1629216 5731112 -1629320 5731248 1629304 5731208 1629216 5731112 1629272 5731304 -1629320 5731248 1629304 5731208 1629272 5731304 1628488 5736312 -1629216 5731112 1627720 5730568 1627656 5730600 1629272 5731304 -1627656 5730600 1627632 5730600 1629272 5731304 1627720 5730568 -1629216 5731112 1627744 5730544 1627720 5730568 1629272 5731304 -1629216 5731112 1627720 5730568 1629272 5731304 1629304 5731208 -1629320 5731248 1629272 5731304 1628488 5736312 1629008 5736448 -1629272 5731304 1628256 5736240 1628488 5736312 1629008 5736448 -1629320 5731248 1629304 5731208 1629272 5731304 1629008 5736448 -1629320 5731248 1629272 5731304 1629008 5736448 1629288 5736552 -1629320 5731248 1629272 5731304 1629288 5736552 1629320 5736568 -1629320 5731248 1629304 5731208 1629272 5731304 1629320 5736568 -1629272 5731304 1629008 5736448 1629288 5736552 1629320 5736568 -1629320 5731248 1629272 5731304 1629320 5736568 1629416 5736656 -1629272 5731304 1629288 5736552 1629320 5736568 1629416 5736656 -1629320 5731248 1629272 5731304 1629416 5736656 1629432 5736720 -1629320 5731248 1629304 5731208 1629272 5731304 1629416 5736656 -1629272 5731304 1628488 5736312 1629008 5736448 1629288 5736552 -1626712 5735520 1629208 5731336 1627632 5730600 1626480 5735432 -1627632 5730600 1626328 5735392 1626480 5735432 1629208 5731336 -1629272 5731304 1629208 5731336 1626712 5735520 1627384 5735808 -1629272 5731304 1627632 5730600 1629208 5731336 1627384 5735808 -1627632 5730600 1629208 5731336 1629272 5731304 1627656 5730600 -1629272 5731304 1627720 5730568 1627656 5730600 1629208 5731336 -1629208 5731336 1627384 5735808 1629272 5731304 1627720 5730568 -1627656 5730600 1627632 5730600 1629208 5731336 1627720 5730568 -1626712 5735520 1627384 5735808 1629208 5731336 1626480 5735432 -1629208 5731336 1627656 5730600 1627632 5730600 1626480 5735432 -1629272 5731304 1629208 5731336 1627384 5735808 1627856 5736056 -1629208 5731336 1626712 5735520 1627384 5735808 1627856 5736056 -1629272 5731304 1627720 5730568 1629208 5731336 1627856 5736056 -1629272 5731304 1629208 5731336 1627856 5736056 1628256 5736240 -1629272 5731304 1627720 5730568 1629208 5731336 1628256 5736240 -1629208 5731336 1627384 5735808 1627856 5736056 1628256 5736240 -1629272 5731304 1629216 5731112 1627720 5730568 1629208 5731336 -1627720 5730568 1627656 5730600 1629208 5731336 1629216 5731112 -1629272 5731304 1629216 5731112 1629208 5731336 1628256 5736240 -1629216 5731112 1627744 5730544 1627720 5730568 1629208 5731336 -1629272 5731304 1629208 5731336 1628256 5736240 1628488 5736312 -1629272 5731304 1629208 5731336 1628488 5736312 1629008 5736448 -1629272 5731304 1629216 5731112 1629208 5731336 1629008 5736448 -1629208 5731336 1627856 5736056 1628256 5736240 1628488 5736312 -1629208 5731336 1628256 5736240 1628488 5736312 1629008 5736448 -1629272 5731304 1629304 5731208 1629216 5731112 1629208 5731336 -1629272 5731304 1629320 5731248 1629304 5731208 1629208 5731336 -1629272 5731304 1629304 5731208 1629208 5731336 1629008 5736448 -1629216 5731112 1627720 5730568 1629208 5731336 1629304 5731208 -1629272 5731304 1629208 5731336 1629008 5736448 1629288 5736552 -1629208 5731336 1628488 5736312 1629008 5736448 1629288 5736552 -1629272 5731304 1629304 5731208 1629208 5731336 1629288 5736552 -1629272 5731304 1629208 5731336 1629288 5736552 1629320 5736568 -1626480 5735432 1628976 5731296 1627632 5730600 1626328 5735392 -1629208 5731336 1628976 5731296 1626480 5735432 1626712 5735520 -1629208 5731336 1628976 5731296 1626712 5735520 1627384 5735808 -1628976 5731296 1626480 5735432 1626712 5735520 1627384 5735808 -1629208 5731336 1628976 5731296 1627384 5735808 1627856 5736056 -1629208 5731336 1627632 5730600 1628976 5731296 1627384 5735808 -1627632 5730600 1628976 5731296 1629208 5731336 1627656 5730600 -1629208 5731336 1627720 5730568 1627656 5730600 1628976 5731296 -1629208 5731336 1629216 5731112 1627720 5730568 1628976 5731296 -1627720 5730568 1627656 5730600 1628976 5731296 1629216 5731112 -1628976 5731296 1627384 5735808 1629208 5731336 1629216 5731112 -1627656 5730600 1627632 5730600 1628976 5731296 1627720 5730568 -1628976 5731296 1627632 5730600 1626480 5735432 1626712 5735520 -1627632 5730600 1626480 5735432 1628976 5731296 1627656 5730600 -1629216 5731112 1627744 5730544 1627720 5730568 1628976 5731296 -1629216 5731112 1627744 5730544 1628976 5731296 1629208 5731336 -1627720 5730568 1627656 5730600 1628976 5731296 1627744 5730544 -1629216 5731112 1627752 5730520 1627744 5730544 1628976 5731296 -1629216 5731112 1627752 5730520 1628976 5731296 1629208 5731336 -1629216 5731112 1627736 5730496 1627752 5730520 1628976 5731296 -1627744 5730544 1627720 5730568 1628976 5731296 1627752 5730520 -1629208 5731336 1629304 5731208 1629216 5731112 1628976 5731296 -1626480 5735432 1628864 5731328 1627632 5730600 1626328 5735392 -1628976 5731296 1628864 5731328 1626480 5735432 1626712 5735520 -1628976 5731296 1628864 5731328 1626712 5735520 1627384 5735808 -1628976 5731296 1628864 5731328 1627384 5735808 1629208 5731336 -1628864 5731328 1626712 5735520 1627384 5735808 1629208 5731336 -1627384 5735808 1627856 5736056 1629208 5731336 1628864 5731328 -1627384 5735808 1627856 5736056 1628864 5731328 1626712 5735520 -1629208 5731336 1628976 5731296 1628864 5731328 1627856 5736056 -1628864 5731328 1626480 5735432 1626712 5735520 1627384 5735808 -1628976 5731296 1627632 5730600 1628864 5731328 1629208 5731336 -1627632 5730600 1628864 5731328 1628976 5731296 1627656 5730600 -1628976 5731296 1627720 5730568 1627656 5730600 1628864 5731328 -1628976 5731296 1627744 5730544 1627720 5730568 1628864 5731328 -1627720 5730568 1627656 5730600 1628864 5731328 1627744 5730544 -1628864 5731328 1629208 5731336 1628976 5731296 1627744 5730544 -1627656 5730600 1627632 5730600 1628864 5731328 1627720 5730568 -1628864 5731328 1627632 5730600 1626480 5735432 1626712 5735520 -1627632 5730600 1626480 5735432 1628864 5731328 1627656 5730600 -1627856 5736056 1628256 5736240 1629208 5731336 1628864 5731328 -1628976 5731296 1627752 5730520 1627744 5730544 1628864 5731328 -1627744 5730544 1627720 5730568 1628864 5731328 1627752 5730520 -1628976 5731296 1627752 5730520 1628864 5731328 1629208 5731336 -1628976 5731296 1629216 5731112 1627752 5730520 1628864 5731328 -1628976 5731296 1629208 5731336 1629216 5731112 1628864 5731328 -1629216 5731112 1627736 5730496 1627752 5730520 1628864 5731328 -1628976 5731296 1629216 5731112 1628864 5731328 1629208 5731336 -1627752 5730520 1627744 5730544 1628864 5731328 1629216 5731112 -1626480 5735432 1628768 5731368 1627632 5730600 1626328 5735392 -1627632 5730600 1627560 5730576 1626328 5735392 1628768 5731368 -1626480 5735432 1628864 5731328 1628768 5731368 1626328 5735392 -1628768 5731368 1628864 5731328 1627632 5730600 1626328 5735392 -1628864 5731328 1628768 5731368 1626480 5735432 1626712 5735520 -1628768 5731368 1626328 5735392 1626480 5735432 1626712 5735520 -1628864 5731328 1628768 5731368 1626712 5735520 1627384 5735808 -1628864 5731328 1628768 5731368 1627384 5735808 1627856 5736056 -1628864 5731328 1628768 5731368 1627856 5736056 1629208 5731336 -1628768 5731368 1627384 5735808 1627856 5736056 1629208 5731336 -1628864 5731328 1628768 5731368 1629208 5731336 1628976 5731296 -1628768 5731368 1626712 5735520 1627384 5735808 1627856 5736056 -1628768 5731368 1626480 5735432 1626712 5735520 1627384 5735808 -1628864 5731328 1627632 5730600 1628768 5731368 1629208 5731336 -1627632 5730600 1628768 5731368 1628864 5731328 1627656 5730600 -1627632 5730600 1626328 5735392 1628768 5731368 1627656 5730600 -1628864 5731328 1627720 5730568 1627656 5730600 1628768 5731368 -1628864 5731328 1627744 5730544 1627720 5730568 1628768 5731368 -1628864 5731328 1627752 5730520 1627744 5730544 1628768 5731368 -1627744 5730544 1627720 5730568 1628768 5731368 1627752 5730520 -1627720 5730568 1627656 5730600 1628768 5731368 1627744 5730544 -1628768 5731368 1629208 5731336 1628864 5731328 1627752 5730520 -1627656 5730600 1627632 5730600 1628768 5731368 1627720 5730568 -1627856 5736056 1628256 5736240 1629208 5731336 1628768 5731368 -1627856 5736056 1628256 5736240 1628768 5731368 1627384 5735808 -1629208 5731336 1628864 5731328 1628768 5731368 1628256 5736240 -1628256 5736240 1628488 5736312 1629208 5731336 1628768 5731368 -1629208 5731336 1628864 5731328 1628768 5731368 1628488 5736312 -1628256 5736240 1628488 5736312 1628768 5731368 1627856 5736056 -1628864 5731328 1629216 5731112 1627752 5730520 1628768 5731368 -1628488 5736312 1629008 5736448 1629208 5731336 1628768 5731368 -1626328 5735392 1628640 5731360 1627632 5730600 1627560 5730576 -1628768 5731368 1628640 5731360 1626328 5735392 1626480 5735432 -1628768 5731368 1628640 5731360 1626480 5735432 1626712 5735520 -1628640 5731360 1626328 5735392 1626480 5735432 1626712 5735520 -1628768 5731368 1627632 5730600 1628640 5731360 1626712 5735520 -1627632 5730600 1628640 5731360 1628768 5731368 1627656 5730600 -1628640 5731360 1626712 5735520 1628768 5731368 1627656 5730600 -1628768 5731368 1628640 5731360 1626712 5735520 1627384 5735808 -1628640 5731360 1626480 5735432 1626712 5735520 1627384 5735808 -1628768 5731368 1627656 5730600 1628640 5731360 1627384 5735808 -1628768 5731368 1628640 5731360 1627384 5735808 1627856 5736056 -1628768 5731368 1627720 5730568 1627656 5730600 1628640 5731360 -1628768 5731368 1627720 5730568 1628640 5731360 1627384 5735808 -1627656 5730600 1627632 5730600 1628640 5731360 1627720 5730568 -1628768 5731368 1627744 5730544 1627720 5730568 1628640 5731360 -1628768 5731368 1627744 5730544 1628640 5731360 1627384 5735808 -1628768 5731368 1627752 5730520 1627744 5730544 1628640 5731360 -1628768 5731368 1627752 5730520 1628640 5731360 1627384 5735808 -1628768 5731368 1628864 5731328 1627752 5730520 1628640 5731360 -1628768 5731368 1628864 5731328 1628640 5731360 1627384 5735808 -1627752 5730520 1627744 5730544 1628640 5731360 1628864 5731328 -1627744 5730544 1627720 5730568 1628640 5731360 1627752 5730520 -1627720 5730568 1627656 5730600 1628640 5731360 1627744 5730544 -1626328 5735392 1626480 5735432 1628640 5731360 1627560 5730576 -1628640 5731360 1627656 5730600 1627632 5730600 1627560 5730576 -1628864 5731328 1629216 5731112 1627752 5730520 1628640 5731360 -1629216 5731112 1627736 5730496 1627752 5730520 1628640 5731360 -1628864 5731328 1629216 5731112 1628640 5731360 1628768 5731368 -1627752 5730520 1627744 5730544 1628640 5731360 1629216 5731112 -1628864 5731328 1628976 5731296 1629216 5731112 1628640 5731360 -1626328 5735392 1628640 5731360 1627560 5730576 1625176 5734984 -1627560 5730576 1628376 5731232 1628640 5731360 1627632 5730600 -1628640 5731360 1628376 5731232 1626328 5735392 1626480 5735432 -1628640 5731360 1628376 5731232 1626480 5735432 1626712 5735520 -1628640 5731360 1628376 5731232 1626712 5735520 1627384 5735808 -1628376 5731232 1626328 5735392 1626480 5735432 1626712 5735520 -1628376 5731232 1626712 5735520 1628640 5731360 1627632 5730600 -1628640 5731360 1627656 5730600 1627632 5730600 1628376 5731232 -1627632 5730600 1627560 5730576 1628376 5731232 1627656 5730600 -1628640 5731360 1627720 5730568 1627656 5730600 1628376 5731232 -1628640 5731360 1627744 5730544 1627720 5730568 1628376 5731232 -1627720 5730568 1627656 5730600 1628376 5731232 1627744 5730544 -1628640 5731360 1627752 5730520 1627744 5730544 1628376 5731232 -1628640 5731360 1629216 5731112 1627752 5730520 1628376 5731232 -1629216 5731112 1627736 5730496 1627752 5730520 1628376 5731232 -1627752 5730520 1627744 5730544 1628376 5731232 1629216 5731112 -1627744 5730544 1627720 5730568 1628376 5731232 1627752 5730520 -1628640 5731360 1629216 5731112 1628376 5731232 1626712 5735520 -1627656 5730600 1627632 5730600 1628376 5731232 1627720 5730568 -1628376 5731232 1627560 5730576 1626328 5735392 1626480 5735432 -1628640 5731360 1628864 5731328 1629216 5731112 1628376 5731232 -1628640 5731360 1628768 5731368 1628864 5731328 1628376 5731232 -1629216 5731112 1627752 5730520 1628376 5731232 1628864 5731328 -1628640 5731360 1628864 5731328 1628376 5731232 1626712 5735520 -1628864 5731328 1628976 5731296 1629216 5731112 1628376 5731232 -1627560 5730576 1626328 5735392 1628376 5731232 1627632 5730600 -1626328 5735392 1628376 5731232 1627560 5730576 1625176 5734984 -1627560 5730576 1627440 5730528 1625176 5734984 1628376 5731232 -1627560 5730576 1627520 5730552 1627440 5730528 1628376 5731232 -1627440 5730528 1625040 5734896 1625176 5734984 1628376 5731232 -1627440 5730528 1625040 5734896 1628376 5731232 1627560 5730576 -1627440 5730528 1624728 5734744 1625040 5734896 1628376 5731232 -1626328 5735392 1626480 5735432 1628376 5731232 1625176 5734984 -1628376 5731232 1627632 5730600 1627560 5730576 1627440 5730528 -1626328 5735392 1628376 5731232 1625176 5734984 1626192 5735400 -1625176 5734984 1626328 5735392 1628376 5731232 1625040 5734896 -1627720 5730568 1628336 5731192 1628376 5731232 1627744 5730544 -1628376 5731232 1627752 5730520 1627744 5730544 1628336 5731192 -1627744 5730544 1627720 5730568 1628336 5731192 1627752 5730520 -1628376 5731232 1629216 5731112 1627752 5730520 1628336 5731192 -1629216 5731112 1627736 5730496 1627752 5730520 1628336 5731192 -1628376 5731232 1628864 5731328 1629216 5731112 1628336 5731192 -1629216 5731112 1627752 5730520 1628336 5731192 1628864 5731328 -1627752 5730520 1627744 5730544 1628336 5731192 1629216 5731112 -1628376 5731232 1628336 5731192 1627656 5730600 1627632 5730600 -1628376 5731232 1628336 5731192 1627632 5730600 1627560 5730576 -1628336 5731192 1627656 5730600 1627632 5730600 1627560 5730576 -1628864 5731328 1628976 5731296 1629216 5731112 1628336 5731192 -1628376 5731232 1628640 5731360 1628864 5731328 1628336 5731192 -1628336 5731192 1627560 5730576 1628376 5731232 1628864 5731328 -1628376 5731232 1628336 5731192 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1628336 5731192 -1628376 5731232 1628336 5731192 1627440 5730528 1625040 5734896 -1628376 5731232 1628336 5731192 1625040 5734896 1625176 5734984 -1628336 5731192 1627440 5730528 1625040 5734896 1625176 5734984 -1627440 5730528 1624728 5734744 1625040 5734896 1628336 5731192 -1628336 5731192 1627632 5730600 1627560 5730576 1627440 5730528 -1628376 5731232 1628864 5731328 1628336 5731192 1625176 5734984 -1628336 5731192 1627560 5730576 1627440 5730528 1625040 5734896 -1628336 5731192 1627720 5730568 1627656 5730600 1627632 5730600 -1627720 5730568 1627656 5730600 1628336 5731192 1627744 5730544 -1628376 5731232 1628336 5731192 1625176 5734984 1626328 5735392 -1628336 5731192 1625040 5734896 1625176 5734984 1626328 5735392 -1628376 5731232 1628336 5731192 1626328 5735392 1626480 5735432 -1628376 5731232 1628864 5731328 1628336 5731192 1626328 5735392 -1625176 5734984 1626192 5735400 1626328 5735392 1628336 5731192 -1627752 5730520 1628304 5731136 1629216 5731112 1627736 5730496 -1629216 5731112 1628304 5731136 1628336 5731192 1628864 5731328 -1628336 5731192 1628376 5731232 1628864 5731328 1628304 5731136 -1628864 5731328 1629216 5731112 1628304 5731136 1628376 5731232 -1628336 5731192 1628304 5731136 1627752 5730520 1627744 5730544 -1628336 5731192 1628304 5731136 1627744 5730544 1627720 5730568 -1628304 5731136 1627752 5730520 1627744 5730544 1627720 5730568 -1629216 5731112 1628304 5731136 1628864 5731328 1628976 5731296 -1628376 5731232 1628640 5731360 1628864 5731328 1628304 5731136 -1628640 5731360 1628768 5731368 1628864 5731328 1628304 5731136 -1628376 5731232 1628640 5731360 1628304 5731136 1628336 5731192 -1628864 5731328 1629216 5731112 1628304 5731136 1628640 5731360 -1628304 5731136 1627720 5730568 1628336 5731192 1628376 5731232 -1628336 5731192 1628304 5731136 1627720 5730568 1627656 5730600 -1628304 5731136 1627744 5730544 1627720 5730568 1627656 5730600 -1628336 5731192 1628304 5731136 1627656 5730600 1627632 5730600 -1628336 5731192 1628304 5731136 1627632 5730600 1627560 5730576 -1628336 5731192 1628376 5731232 1628304 5731136 1627632 5730600 -1628304 5731136 1627720 5730568 1627656 5730600 1627632 5730600 -1628304 5731136 1629216 5731112 1627752 5730520 1627744 5730544 -1629216 5731112 1627752 5730520 1628304 5731136 1628864 5731328 -1627752 5730520 1628288 5731016 1629216 5731112 1627736 5730496 -1628304 5731136 1628288 5731016 1627752 5730520 1627744 5730544 -1628304 5731136 1628288 5731016 1627744 5730544 1627720 5730568 -1628304 5731136 1628288 5731016 1627720 5730568 1627656 5730600 -1628288 5731016 1627744 5730544 1627720 5730568 1627656 5730600 -1628304 5731136 1628288 5731016 1627656 5730600 1627632 5730600 -1628288 5731016 1627752 5730520 1627744 5730544 1627720 5730568 -1628304 5731136 1629216 5731112 1628288 5731016 1627656 5730600 -1629216 5731112 1628288 5731016 1628304 5731136 1628864 5731328 -1628304 5731136 1628640 5731360 1628864 5731328 1628288 5731016 -1628640 5731360 1628768 5731368 1628864 5731328 1628288 5731016 -1629216 5731112 1628288 5731016 1628864 5731328 1628976 5731296 -1629216 5731112 1628288 5731016 1628976 5731296 1629208 5731336 -1628304 5731136 1628376 5731232 1628640 5731360 1628288 5731016 -1628304 5731136 1628336 5731192 1628376 5731232 1628288 5731016 -1628640 5731360 1628864 5731328 1628288 5731016 1628376 5731232 -1628288 5731016 1627656 5730600 1628304 5731136 1628376 5731232 -1628864 5731328 1628976 5731296 1628288 5731016 1628640 5731360 -1628288 5731016 1629216 5731112 1627752 5730520 1627744 5730544 -1629216 5731112 1627752 5730520 1628288 5731016 1628976 5731296 -1627752 5730520 1628440 5730936 1629216 5731112 1627736 5730496 -1628288 5731016 1628440 5730936 1627752 5730520 1627744 5730544 -1629216 5731112 1628440 5730936 1628288 5731016 1628976 5731296 -1629216 5731112 1628440 5730936 1628976 5731296 1629208 5731336 -1628288 5731016 1628864 5731328 1628976 5731296 1628440 5730936 -1628288 5731016 1628640 5731360 1628864 5731328 1628440 5730936 -1628640 5731360 1628768 5731368 1628864 5731328 1628440 5730936 -1628288 5731016 1628376 5731232 1628640 5731360 1628440 5730936 -1628864 5731328 1628976 5731296 1628440 5730936 1628640 5731360 -1628288 5731016 1628304 5731136 1628376 5731232 1628440 5730936 -1628304 5731136 1628336 5731192 1628376 5731232 1628440 5730936 -1628376 5731232 1628640 5731360 1628440 5730936 1628336 5731192 -1628304 5731136 1628336 5731192 1628440 5730936 1628288 5731016 -1628640 5731360 1628864 5731328 1628440 5730936 1628376 5731232 -1628440 5730936 1627752 5730520 1628288 5731016 1628304 5731136 -1628976 5731296 1629216 5731112 1628440 5730936 1628864 5731328 -1627752 5730520 1628288 5731016 1628440 5730936 1627736 5730496 -1628440 5730936 1628976 5731296 1629216 5731112 1627736 5730496 -1629216 5731112 1629584 5726976 1627736 5730496 1628440 5730936 -1627736 5730496 1627752 5730520 1628440 5730936 1629584 5726976 -1629216 5731112 1629776 5726856 1629584 5726976 1628440 5730936 -1629216 5731112 1629584 5726976 1628440 5730936 1628976 5731296 -1629584 5726976 1627648 5730440 1627736 5730496 1628440 5730936 -1629584 5726976 1628608 5730968 1629216 5731112 1629776 5726856 -1629216 5731112 1628608 5730968 1628440 5730936 1628976 5731296 -1629216 5731112 1628608 5730968 1628976 5731296 1629208 5731336 -1628440 5730936 1628864 5731328 1628976 5731296 1628608 5730968 -1628440 5730936 1628640 5731360 1628864 5731328 1628608 5730968 -1628640 5731360 1628768 5731368 1628864 5731328 1628608 5730968 -1628640 5731360 1628768 5731368 1628608 5730968 1628440 5730936 -1628440 5730936 1628376 5731232 1628640 5731360 1628608 5730968 -1628440 5730936 1628336 5731192 1628376 5731232 1628608 5730968 -1628640 5731360 1628768 5731368 1628608 5730968 1628376 5731232 -1628864 5731328 1628976 5731296 1628608 5730968 1628768 5731368 -1628608 5730968 1629584 5726976 1628440 5730936 1628376 5731232 -1628976 5731296 1629216 5731112 1628608 5730968 1628864 5731328 -1629216 5731112 1629584 5726976 1628608 5730968 1628976 5731296 -1628440 5730936 1628608 5730968 1629584 5726976 1627736 5730496 -1628440 5730936 1628608 5730968 1627736 5730496 1627752 5730520 -1628440 5730936 1628376 5731232 1628608 5730968 1627736 5730496 -1628608 5730968 1629216 5731112 1629584 5726976 1627736 5730496 -1629584 5726976 1627648 5730440 1627736 5730496 1628608 5730968 -1629584 5726976 1628944 5731008 1629216 5731112 1629776 5726856 -1628608 5730968 1628944 5731008 1629584 5726976 1627736 5730496 -1628944 5731008 1629216 5731112 1629584 5726976 1627736 5730496 -1628608 5730968 1629216 5731112 1628944 5731008 1627736 5730496 -1629216 5731112 1628944 5731008 1628608 5730968 1628976 5731296 -1629216 5731112 1628944 5731008 1628976 5731296 1629208 5731336 -1628608 5730968 1628864 5731328 1628976 5731296 1628944 5731008 -1628608 5730968 1628768 5731368 1628864 5731328 1628944 5731008 -1629216 5731112 1629584 5726976 1628944 5731008 1628976 5731296 -1628944 5731008 1627736 5730496 1628608 5730968 1628864 5731328 -1628976 5731296 1629216 5731112 1628944 5731008 1628864 5731328 -1629584 5726976 1627648 5730440 1627736 5730496 1628944 5731008 -1628608 5730968 1628944 5731008 1627736 5730496 1628440 5730936 -1629584 5726976 1629136 5731064 1629216 5731112 1629776 5726856 -1628944 5731008 1629136 5731064 1629584 5726976 1627736 5730496 -1629216 5731112 1629136 5731064 1628944 5731008 1628976 5731296 -1629216 5731112 1629136 5731064 1628976 5731296 1629208 5731336 -1629136 5731064 1629584 5726976 1628944 5731008 1628976 5731296 -1628944 5731008 1628864 5731328 1628976 5731296 1629136 5731064 -1629216 5731112 1629584 5726976 1629136 5731064 1628976 5731296 -1629320 5731248 1629464 5735560 1629944 5726624 1629928 5726696 -1629432 5736720 1629464 5735560 1629320 5731248 1629416 5736656 -1629320 5731248 1629272 5731304 1629416 5736656 1629464 5735560 -1629416 5736656 1629432 5736720 1629464 5735560 1629272 5731304 -1629272 5731304 1629320 5736568 1629416 5736656 1629464 5735560 -1629272 5731304 1629288 5736552 1629320 5736568 1629464 5735560 -1629272 5731304 1629288 5736552 1629464 5735560 1629320 5731248 -1629416 5736656 1629432 5736720 1629464 5735560 1629320 5736568 -1629272 5731304 1629208 5731336 1629288 5736552 1629464 5735560 -1629288 5736552 1629320 5736568 1629464 5735560 1629208 5731336 -1629272 5731304 1629208 5731336 1629464 5735560 1629320 5731248 -1629320 5736568 1629416 5736656 1629464 5735560 1629288 5736552 -1629320 5731248 1629272 5731304 1629464 5735560 1629928 5726696 -1629464 5735560 1629432 5736720 1629944 5726624 1629928 5726696 -1629432 5736720 1629944 5726624 1629464 5735560 1629416 5736656 -1629208 5731336 1629008 5736448 1629288 5736552 1629464 5735560 -1629208 5731336 1628488 5736312 1629008 5736448 1629464 5735560 -1629288 5736552 1629320 5736568 1629464 5735560 1629008 5736448 -1629208 5731336 1628488 5736312 1629464 5735560 1629272 5731304 -1629208 5731336 1628768 5731368 1628488 5736312 1629464 5735560 -1628488 5736312 1629008 5736448 1629464 5735560 1628768 5731368 -1629208 5731336 1628864 5731328 1628768 5731368 1629464 5735560 -1628768 5731368 1628256 5736240 1628488 5736312 1629464 5735560 -1628488 5736312 1629008 5736448 1629464 5735560 1628256 5736240 -1628768 5731368 1627856 5736056 1628256 5736240 1629464 5735560 -1628768 5731368 1627384 5735808 1627856 5736056 1629464 5735560 -1628768 5731368 1628640 5731360 1627384 5735808 1629464 5735560 -1627384 5735808 1627856 5736056 1629464 5735560 1628640 5731360 -1628640 5731360 1626712 5735520 1627384 5735808 1629464 5735560 -1627856 5736056 1628256 5736240 1629464 5735560 1627384 5735808 -1628256 5736240 1628488 5736312 1629464 5735560 1627856 5736056 -1629208 5731336 1628768 5731368 1629464 5735560 1629272 5731304 -1628768 5731368 1628640 5731360 1629464 5735560 1629208 5731336 -1629008 5736448 1629288 5736552 1629464 5735560 1628488 5736312 -1629944 5726624 1629464 5735560 1629432 5736720 1631312 5744824 -1629944 5726624 1629928 5726696 1629464 5735560 1631312 5744824 -1629464 5735560 1629416 5736656 1629432 5736720 1631312 5744824 -1629432 5736720 1630952 5743928 1631312 5744824 1629464 5735560 -1630952 5743928 1630992 5744048 1631312 5744824 1629464 5735560 -1629432 5736720 1630952 5743928 1629464 5735560 1629416 5736656 -1629432 5736720 1630864 5743768 1630952 5743928 1629464 5735560 -1631312 5744824 1629944 5726624 1629464 5735560 1630952 5743928 -1629320 5731248 1629464 5735560 1629928 5726696 1629304 5731208 -1629944 5726624 1629464 5735560 1631312 5744824 1751256 5699792 -1629464 5735560 1629328 5735456 1627384 5735808 1627856 5736056 -1628640 5731360 1629328 5735456 1629464 5735560 1628768 5731368 -1627384 5735808 1629328 5735456 1628640 5731360 1626712 5735520 -1629464 5735560 1629328 5735456 1627856 5736056 1628256 5736240 -1629328 5735456 1627384 5735808 1627856 5736056 1628256 5736240 -1629464 5735560 1629328 5735456 1628256 5736240 1628488 5736312 -1629464 5735560 1629328 5735456 1628488 5736312 1629008 5736448 -1629328 5735456 1627856 5736056 1628256 5736240 1628488 5736312 -1629328 5735456 1628256 5736240 1628488 5736312 1629008 5736448 -1629464 5735560 1629208 5731336 1628768 5731368 1629328 5735456 -1629208 5731336 1628864 5731328 1628768 5731368 1629328 5735456 -1628768 5731368 1628640 5731360 1629328 5735456 1629208 5731336 -1629464 5735560 1629272 5731304 1629208 5731336 1629328 5735456 -1629464 5735560 1629320 5731248 1629272 5731304 1629328 5735456 -1629208 5731336 1628768 5731368 1629328 5735456 1629272 5731304 -1629464 5735560 1629272 5731304 1629328 5735456 1629008 5736448 -1629328 5735456 1628640 5731360 1627384 5735808 1627856 5736056 -1628640 5731360 1627384 5735808 1629328 5735456 1628768 5731368 -1629464 5735560 1629328 5735456 1629008 5736448 1629288 5736552 -1627384 5735808 1629280 5735448 1628640 5731360 1626712 5735520 -1628640 5731360 1628376 5731232 1626712 5735520 1629280 5735448 -1629328 5735456 1629280 5735448 1627384 5735808 1627856 5736056 -1629328 5735456 1629280 5735448 1627856 5736056 1628256 5736240 -1629328 5735456 1629280 5735448 1628256 5736240 1628488 5736312 -1629280 5735448 1627856 5736056 1628256 5736240 1628488 5736312 -1629328 5735456 1629280 5735448 1628488 5736312 1629008 5736448 -1629328 5735456 1629280 5735448 1629008 5736448 1629464 5735560 -1629280 5735448 1628256 5736240 1628488 5736312 1629008 5736448 -1629280 5735448 1628488 5736312 1629008 5736448 1629464 5735560 -1629280 5735448 1627384 5735808 1627856 5736056 1628256 5736240 -1629328 5735456 1628640 5731360 1629280 5735448 1629464 5735560 -1628640 5731360 1629280 5735448 1629328 5735456 1628768 5731368 -1629328 5735456 1629208 5731336 1628768 5731368 1629280 5735448 -1629208 5731336 1628864 5731328 1628768 5731368 1629280 5735448 -1629328 5735456 1629272 5731304 1629208 5731336 1629280 5735448 -1629280 5735448 1629464 5735560 1629328 5735456 1629208 5731336 -1628768 5731368 1628640 5731360 1629280 5735448 1629208 5731336 -1627384 5735808 1627856 5736056 1629280 5735448 1626712 5735520 -1629280 5735448 1628768 5731368 1628640 5731360 1626712 5735520 -1629008 5736448 1629288 5736552 1629464 5735560 1629280 5735448 -1626712 5735520 1629208 5735392 1628640 5731360 1628376 5731232 -1629280 5735448 1629208 5735392 1626712 5735520 1627384 5735808 -1629280 5735448 1629208 5735392 1627384 5735808 1627856 5736056 -1629208 5735392 1626712 5735520 1627384 5735808 1627856 5736056 -1629280 5735448 1629208 5735392 1627856 5736056 1628256 5736240 -1629280 5735448 1629208 5735392 1628256 5736240 1628488 5736312 -1629280 5735448 1629208 5735392 1628488 5736312 1629008 5736448 -1629208 5735392 1628256 5736240 1628488 5736312 1629008 5736448 -1629280 5735448 1629208 5735392 1629008 5736448 1629464 5735560 -1629208 5735392 1627856 5736056 1628256 5736240 1628488 5736312 -1629208 5735392 1627384 5735808 1627856 5736056 1628256 5736240 -1629280 5735448 1628640 5731360 1629208 5735392 1629008 5736448 -1628640 5731360 1629208 5735392 1629280 5735448 1628768 5731368 -1629280 5735448 1629208 5731336 1628768 5731368 1629208 5735392 -1629208 5731336 1628864 5731328 1628768 5731368 1629208 5735392 -1629280 5735448 1629328 5735456 1629208 5731336 1629208 5735392 -1629328 5735456 1629272 5731304 1629208 5731336 1629208 5735392 -1629328 5735456 1629272 5731304 1629208 5735392 1629280 5735448 -1629328 5735456 1629464 5735560 1629272 5731304 1629208 5735392 -1629208 5731336 1628768 5731368 1629208 5735392 1629272 5731304 -1629208 5735392 1629008 5736448 1629280 5735448 1629328 5735456 -1628768 5731368 1628640 5731360 1629208 5735392 1629208 5731336 -1629208 5735392 1628640 5731360 1626712 5735520 1627384 5735808 -1628640 5731360 1626712 5735520 1629208 5735392 1628768 5731368 -1626712 5735520 1629064 5735344 1628640 5731360 1628376 5731232 -1629208 5735392 1629064 5735344 1626712 5735520 1627384 5735808 -1629208 5735392 1629064 5735344 1627384 5735808 1627856 5736056 -1629208 5735392 1629064 5735344 1627856 5736056 1628256 5736240 -1629064 5735344 1627384 5735808 1627856 5736056 1628256 5736240 -1629208 5735392 1629064 5735344 1628256 5736240 1628488 5736312 -1629208 5735392 1629064 5735344 1628488 5736312 1629008 5736448 -1629208 5735392 1629064 5735344 1629008 5736448 1629280 5735448 -1629064 5735344 1628488 5736312 1629008 5736448 1629280 5735448 -1629008 5736448 1629464 5735560 1629280 5735448 1629064 5735344 -1629064 5735344 1628256 5736240 1628488 5736312 1629008 5736448 -1629064 5735344 1627856 5736056 1628256 5736240 1628488 5736312 -1629064 5735344 1626712 5735520 1627384 5735808 1627856 5736056 -1629208 5735392 1628640 5731360 1629064 5735344 1629280 5735448 -1628640 5731360 1629064 5735344 1629208 5735392 1628768 5731368 -1629208 5735392 1629208 5731336 1628768 5731368 1629064 5735344 -1629208 5731336 1628864 5731328 1628768 5731368 1629064 5735344 -1629208 5735392 1629272 5731304 1629208 5731336 1629064 5735344 -1629064 5735344 1629280 5735448 1629208 5735392 1629208 5731336 -1628768 5731368 1628640 5731360 1629064 5735344 1629208 5731336 -1629064 5735344 1628640 5731360 1626712 5735520 1627384 5735808 -1628640 5731360 1626712 5735520 1629064 5735344 1628768 5731368 -1626712 5735520 1628824 5735312 1628640 5731360 1628376 5731232 -1629064 5735344 1628824 5735312 1626712 5735520 1627384 5735808 -1629064 5735344 1628824 5735312 1627384 5735808 1627856 5736056 -1629064 5735344 1628824 5735312 1627856 5736056 1628256 5736240 -1629064 5735344 1628824 5735312 1628256 5736240 1628488 5736312 -1628824 5735312 1627856 5736056 1628256 5736240 1628488 5736312 -1629064 5735344 1628824 5735312 1628488 5736312 1629008 5736448 -1628824 5735312 1627384 5735808 1627856 5736056 1628256 5736240 -1628824 5735312 1626712 5735520 1627384 5735808 1627856 5736056 -1629064 5735344 1628640 5731360 1628824 5735312 1628488 5736312 -1628640 5731360 1628824 5735312 1629064 5735344 1628768 5731368 -1629064 5735344 1629208 5731336 1628768 5731368 1628824 5735312 -1629208 5731336 1628864 5731328 1628768 5731368 1628824 5735312 -1629064 5735344 1629208 5735392 1629208 5731336 1628824 5735312 -1628824 5735312 1628488 5736312 1629064 5735344 1629208 5731336 -1628768 5731368 1628640 5731360 1628824 5735312 1629208 5731336 -1628824 5735312 1628640 5731360 1626712 5735520 1627384 5735808 -1628640 5731360 1626712 5735520 1628824 5735312 1628768 5731368 -1626712 5735520 1628736 5735280 1628640 5731360 1628376 5731232 -1626712 5735520 1628736 5735280 1628376 5731232 1626480 5735432 -1628824 5735312 1628736 5735280 1626712 5735520 1627384 5735808 -1628824 5735312 1628736 5735280 1627384 5735808 1627856 5736056 -1628824 5735312 1628736 5735280 1627856 5736056 1628256 5736240 -1628824 5735312 1628736 5735280 1628256 5736240 1628488 5736312 -1628824 5735312 1628736 5735280 1628488 5736312 1629064 5735344 -1628736 5735280 1627856 5736056 1628256 5736240 1628488 5736312 -1628736 5735280 1627384 5735808 1627856 5736056 1628256 5736240 -1628736 5735280 1626712 5735520 1627384 5735808 1627856 5736056 -1628824 5735312 1628640 5731360 1628736 5735280 1628488 5736312 -1628640 5731360 1628736 5735280 1628824 5735312 1628768 5731368 -1628824 5735312 1629208 5731336 1628768 5731368 1628736 5735280 -1629208 5731336 1628864 5731328 1628768 5731368 1628736 5735280 -1628824 5735312 1629064 5735344 1629208 5731336 1628736 5735280 -1629064 5735344 1629208 5735392 1629208 5731336 1628736 5735280 -1629208 5731336 1628768 5731368 1628736 5735280 1629064 5735344 -1628736 5735280 1628488 5736312 1628824 5735312 1629064 5735344 -1628768 5731368 1628640 5731360 1628736 5735280 1629208 5731336 -1626712 5735520 1627384 5735808 1628736 5735280 1628376 5731232 -1628736 5735280 1628768 5731368 1628640 5731360 1628376 5731232 -1626712 5735520 1628672 5735216 1628376 5731232 1626480 5735432 -1628376 5731232 1628672 5735216 1628736 5735280 1628640 5731360 -1628376 5731232 1626328 5735392 1626480 5735432 1628672 5735216 -1628736 5735280 1628672 5735216 1626712 5735520 1627384 5735808 -1628736 5735280 1628672 5735216 1627384 5735808 1627856 5736056 -1628736 5735280 1628672 5735216 1627856 5736056 1628256 5736240 -1628736 5735280 1628672 5735216 1628256 5736240 1628488 5736312 -1628672 5735216 1627384 5735808 1627856 5736056 1628256 5736240 -1628672 5735216 1626712 5735520 1627384 5735808 1627856 5736056 -1628672 5735216 1628256 5736240 1628736 5735280 1628640 5731360 -1628672 5735216 1628640 5731360 1628376 5731232 1626480 5735432 -1628736 5735280 1628768 5731368 1628640 5731360 1628672 5735216 -1628640 5731360 1628376 5731232 1628672 5735216 1628768 5731368 -1628736 5735280 1629208 5731336 1628768 5731368 1628672 5735216 -1629208 5731336 1628864 5731328 1628768 5731368 1628672 5735216 -1628736 5735280 1629064 5735344 1629208 5731336 1628672 5735216 -1629064 5735344 1629208 5735392 1629208 5731336 1628672 5735216 -1628736 5735280 1628824 5735312 1629064 5735344 1628672 5735216 -1629064 5735344 1629208 5731336 1628672 5735216 1628824 5735312 -1629208 5731336 1628768 5731368 1628672 5735216 1629064 5735344 -1628736 5735280 1628824 5735312 1628672 5735216 1628256 5736240 -1628768 5731368 1628640 5731360 1628672 5735216 1629208 5731336 -1626712 5735520 1627384 5735808 1628672 5735216 1626480 5735432 -1628672 5735216 1628560 5735016 1626480 5735432 1626712 5735520 -1626480 5735432 1628560 5735016 1628376 5731232 1626328 5735392 -1628672 5735216 1628376 5731232 1628560 5735016 1626712 5735520 -1628376 5731232 1628560 5735016 1628672 5735216 1628640 5731360 -1628376 5731232 1626480 5735432 1628560 5735016 1628640 5731360 -1628672 5735216 1628768 5731368 1628640 5731360 1628560 5735016 -1628560 5735016 1626712 5735520 1628672 5735216 1628768 5731368 -1628640 5731360 1628376 5731232 1628560 5735016 1628768 5731368 -1628560 5735016 1628376 5731232 1626480 5735432 1626712 5735520 -1628672 5735216 1629208 5731336 1628768 5731368 1628560 5735016 -1628768 5731368 1628640 5731360 1628560 5735016 1629208 5731336 -1629208 5731336 1628864 5731328 1628768 5731368 1628560 5735016 -1628672 5735216 1629064 5735344 1629208 5731336 1628560 5735016 -1629064 5735344 1629208 5735392 1629208 5731336 1628560 5735016 -1629208 5735392 1629272 5731304 1629208 5731336 1628560 5735016 -1628672 5735216 1628824 5735312 1629064 5735344 1628560 5735016 -1628672 5735216 1628736 5735280 1628824 5735312 1628560 5735016 -1629064 5735344 1629208 5735392 1628560 5735016 1628824 5735312 -1628672 5735216 1628824 5735312 1628560 5735016 1626712 5735520 -1629208 5731336 1628768 5731368 1628560 5735016 1629208 5735392 -1628672 5735216 1628560 5735016 1626712 5735520 1627384 5735808 -1628560 5735016 1626480 5735432 1626712 5735520 1627384 5735808 -1628672 5735216 1628560 5735016 1627384 5735808 1627856 5736056 -1628672 5735216 1628560 5735016 1627856 5736056 1628256 5736240 -1628672 5735216 1628824 5735312 1628560 5735016 1627856 5736056 -1628560 5735016 1626712 5735520 1627384 5735808 1627856 5736056 -1628376 5731232 1628504 5734856 1628560 5735016 1628640 5731360 -1628504 5734856 1626480 5735432 1628560 5735016 1628640 5731360 -1628376 5731232 1626480 5735432 1628504 5734856 1628640 5731360 -1626480 5735432 1628504 5734856 1628376 5731232 1626328 5735392 -1626480 5735432 1628560 5735016 1628504 5734856 1626328 5735392 -1628504 5734856 1628640 5731360 1628376 5731232 1626328 5735392 -1628376 5731232 1628336 5731192 1626328 5735392 1628504 5734856 -1628560 5735016 1628768 5731368 1628640 5731360 1628504 5734856 -1628560 5735016 1628768 5731368 1628504 5734856 1626480 5735432 -1628640 5731360 1628376 5731232 1628504 5734856 1628768 5731368 -1628560 5735016 1629208 5731336 1628768 5731368 1628504 5734856 -1628560 5735016 1629208 5731336 1628504 5734856 1626480 5735432 -1629208 5731336 1628864 5731328 1628768 5731368 1628504 5734856 -1628768 5731368 1628640 5731360 1628504 5734856 1629208 5731336 -1628560 5735016 1628504 5734856 1626480 5735432 1626712 5735520 -1628560 5735016 1629208 5731336 1628504 5734856 1626712 5735520 -1628504 5734856 1626328 5735392 1626480 5735432 1626712 5735520 -1628560 5735016 1628504 5734856 1626712 5735520 1627384 5735808 -1628560 5735016 1629208 5731336 1628504 5734856 1627384 5735808 -1628504 5734856 1626480 5735432 1626712 5735520 1627384 5735808 -1628560 5735016 1629208 5735392 1629208 5731336 1628504 5734856 -1628560 5735016 1629208 5735392 1628504 5734856 1627384 5735808 -1629208 5731336 1628768 5731368 1628504 5734856 1629208 5735392 -1629208 5735392 1629272 5731304 1629208 5731336 1628504 5734856 -1628560 5735016 1629064 5735344 1629208 5735392 1628504 5734856 -1628560 5735016 1629064 5735344 1628504 5734856 1627384 5735808 -1628560 5735016 1628824 5735312 1629064 5735344 1628504 5734856 -1629208 5735392 1629208 5731336 1628504 5734856 1629064 5735344 -1628560 5735016 1628504 5734856 1627384 5735808 1627856 5736056 -1628376 5731232 1628496 5734816 1628504 5734856 1628640 5731360 -1628504 5734856 1628768 5731368 1628640 5731360 1628496 5734816 -1628496 5734816 1626328 5735392 1628504 5734856 1628768 5731368 -1628640 5731360 1628376 5731232 1628496 5734816 1628768 5731368 -1628376 5731232 1626328 5735392 1628496 5734816 1628640 5731360 -1628504 5734856 1628496 5734816 1626328 5735392 1626480 5735432 -1628504 5734856 1628496 5734816 1626480 5735432 1626712 5735520 -1628504 5734856 1628768 5731368 1628496 5734816 1626712 5735520 -1628496 5734816 1628376 5731232 1626328 5735392 1626480 5735432 -1628496 5734816 1626328 5735392 1626480 5735432 1626712 5735520 -1626328 5735392 1628496 5734816 1628376 5731232 1628336 5731192 -1628504 5734856 1629208 5731336 1628768 5731368 1628496 5734816 -1628768 5731368 1628640 5731360 1628496 5734816 1629208 5731336 -1628504 5734856 1629208 5731336 1628496 5734816 1626712 5735520 -1628504 5734856 1629208 5735392 1629208 5731336 1628496 5734816 -1628504 5734856 1629208 5735392 1628496 5734816 1626712 5735520 -1629208 5731336 1628864 5731328 1628768 5731368 1628496 5734816 -1629208 5735392 1629272 5731304 1629208 5731336 1628496 5734816 -1629208 5731336 1628768 5731368 1628496 5734816 1629208 5735392 -1628504 5734856 1628496 5734816 1626712 5735520 1627384 5735808 -1628496 5734816 1626480 5735432 1626712 5735520 1627384 5735808 -1628504 5734856 1629208 5735392 1628496 5734816 1627384 5735808 -1628504 5734856 1628496 5734816 1627384 5735808 1628560 5735016 -1628504 5734856 1629064 5735344 1629208 5735392 1628496 5734816 -1628504 5734856 1629064 5735344 1628496 5734816 1627384 5735808 -1629208 5735392 1629208 5731336 1628496 5734816 1629064 5735344 -1628504 5734856 1628560 5735016 1629064 5735344 1628496 5734816 -1629208 5735392 1628512 5734776 1628496 5734816 1629064 5735344 -1628512 5734776 1629208 5731336 1628496 5734816 1629064 5735344 -1629208 5735392 1629208 5731336 1628512 5734776 1629064 5735344 -1629208 5731336 1628512 5734776 1629208 5735392 1629272 5731304 -1629208 5731336 1628496 5734816 1628512 5734776 1629272 5731304 -1628512 5734776 1629064 5735344 1629208 5735392 1629272 5731304 -1629208 5735392 1629328 5735456 1629272 5731304 1628512 5734776 -1629208 5735392 1629328 5735456 1628512 5734776 1629064 5735344 -1629208 5735392 1629280 5735448 1629328 5735456 1628512 5734776 -1629328 5735456 1629464 5735560 1629272 5731304 1628512 5734776 -1629272 5731304 1629208 5731336 1628512 5734776 1629328 5735456 -1628496 5734816 1628512 5734776 1629208 5731336 1628768 5731368 -1628496 5734816 1628512 5734776 1628768 5731368 1628640 5731360 -1628496 5734816 1628512 5734776 1628640 5731360 1628376 5731232 -1628512 5734776 1628768 5731368 1628640 5731360 1628376 5731232 -1628496 5734816 1629064 5735344 1628512 5734776 1628376 5731232 -1628496 5734816 1628512 5734776 1628376 5731232 1626328 5735392 -1628512 5734776 1628640 5731360 1628376 5731232 1626328 5735392 -1628496 5734816 1628512 5734776 1626328 5735392 1626480 5735432 -1628496 5734816 1629064 5735344 1628512 5734776 1626480 5735432 -1628512 5734776 1628376 5731232 1626328 5735392 1626480 5735432 -1628512 5734776 1629272 5731304 1629208 5731336 1628768 5731368 -1629208 5731336 1628864 5731328 1628768 5731368 1628512 5734776 -1628496 5734816 1628512 5734776 1626480 5735432 1626712 5735520 -1628496 5734816 1628512 5734776 1626712 5735520 1627384 5735808 -1628512 5734776 1626328 5735392 1626480 5735432 1626712 5735520 -1628496 5734816 1629064 5735344 1628512 5734776 1626712 5735520 -1628376 5731232 1628336 5731192 1626328 5735392 1628512 5734776 -1628512 5734776 1629208 5731336 1628768 5731368 1628640 5731360 -1628496 5734816 1628504 5734856 1629064 5735344 1628512 5734776 -1628496 5734816 1628504 5734856 1628512 5734776 1626712 5735520 -1629064 5735344 1629208 5735392 1628512 5734776 1628504 5734856 -1628504 5734856 1628560 5735016 1629064 5735344 1628512 5734776 -1629064 5735344 1629208 5735392 1628512 5734776 1628560 5735016 -1628560 5735016 1628824 5735312 1629064 5735344 1628512 5734776 -1628504 5734856 1628560 5735016 1628512 5734776 1628496 5734816 -1629272 5731304 1628648 5734680 1629328 5735456 1629464 5735560 -1629328 5735456 1628648 5734680 1628512 5734776 1629208 5735392 -1628648 5734680 1629272 5731304 1628512 5734776 1629208 5735392 -1628512 5734776 1629064 5735344 1629208 5735392 1628648 5734680 -1628512 5734776 1629064 5735344 1628648 5734680 1629272 5731304 -1629328 5735456 1629272 5731304 1628648 5734680 1629208 5735392 -1628512 5734776 1628560 5735016 1629064 5735344 1628648 5734680 -1628512 5734776 1628560 5735016 1628648 5734680 1629272 5731304 -1629064 5735344 1629208 5735392 1628648 5734680 1628560 5735016 -1629328 5735456 1628648 5734680 1629208 5735392 1629280 5735448 -1629208 5735392 1629328 5735456 1628648 5734680 1629064 5735344 -1628512 5734776 1628648 5734680 1629272 5731304 1629208 5731336 -1628512 5734776 1628648 5734680 1629208 5731336 1628768 5731368 -1628512 5734776 1628560 5735016 1628648 5734680 1628768 5731368 -1628648 5734680 1629328 5735456 1629272 5731304 1629208 5731336 -1629208 5731336 1628864 5731328 1628768 5731368 1628648 5734680 -1628648 5734680 1629272 5731304 1629208 5731336 1628768 5731368 -1628512 5734776 1628504 5734856 1628560 5735016 1628648 5734680 -1628512 5734776 1628504 5734856 1628648 5734680 1628768 5731368 -1628560 5735016 1629064 5735344 1628648 5734680 1628504 5734856 -1628560 5735016 1628824 5735312 1629064 5735344 1628648 5734680 -1629064 5735344 1629208 5735392 1628648 5734680 1628824 5735312 -1628560 5735016 1628824 5735312 1628648 5734680 1628504 5734856 -1628560 5735016 1628672 5735216 1628824 5735312 1628648 5734680 -1628560 5735016 1628672 5735216 1628648 5734680 1628504 5734856 -1628672 5735216 1628736 5735280 1628824 5735312 1628648 5734680 -1628824 5735312 1629064 5735344 1628648 5734680 1628672 5735216 -1628512 5734776 1628648 5734680 1628768 5731368 1628640 5731360 -1628512 5734776 1628648 5734680 1628640 5731360 1628376 5731232 -1628512 5734776 1628648 5734680 1628376 5731232 1626328 5735392 -1628648 5734680 1629208 5731336 1628768 5731368 1628640 5731360 -1628512 5734776 1628504 5734856 1628648 5734680 1628376 5731232 -1628648 5734680 1628768 5731368 1628640 5731360 1628376 5731232 -1628512 5734776 1628496 5734816 1628504 5734856 1628648 5734680 -1628824 5735312 1628656 5734712 1628672 5735216 1628736 5735280 -1628672 5735216 1628656 5734712 1628648 5734680 1628560 5735016 -1628656 5734712 1628824 5735312 1628648 5734680 1628560 5735016 -1628672 5735216 1628824 5735312 1628656 5734712 1628560 5735016 -1628648 5734680 1628504 5734856 1628560 5735016 1628656 5734712 -1628648 5734680 1628504 5734856 1628656 5734712 1628824 5735312 -1628648 5734680 1628512 5734776 1628504 5734856 1628656 5734712 -1628648 5734680 1628512 5734776 1628656 5734712 1628824 5735312 -1628504 5734856 1628560 5735016 1628656 5734712 1628512 5734776 -1628560 5735016 1628672 5735216 1628656 5734712 1628504 5734856 -1628648 5734680 1628656 5734712 1628824 5735312 1629064 5735344 -1628648 5734680 1628656 5734712 1629064 5735344 1629208 5735392 -1628648 5734680 1628512 5734776 1628656 5734712 1629208 5735392 -1628656 5734712 1628672 5735216 1628824 5735312 1629064 5735344 -1628648 5734680 1628656 5734712 1629208 5735392 1629328 5735456 -1628656 5734712 1628824 5735312 1629064 5735344 1629208 5735392 -1628512 5734776 1628496 5734816 1628504 5734856 1628656 5734712 -1628648 5734680 1628944 5734832 1629272 5731304 1629208 5731336 -1629328 5735456 1628944 5734832 1628648 5734680 1629208 5735392 -1628648 5734680 1629208 5735392 1628944 5734832 1629208 5731336 -1628944 5734832 1629328 5735456 1629272 5731304 1629208 5731336 -1629328 5735456 1629272 5731304 1628944 5734832 1629208 5735392 -1629328 5735456 1628944 5734832 1629208 5735392 1629280 5735448 -1629272 5731304 1628944 5734832 1629328 5735456 1629464 5735560 -1629272 5731304 1629208 5731336 1628944 5734832 1629464 5735560 -1628944 5734832 1629208 5735392 1629328 5735456 1629464 5735560 -1629272 5731304 1628944 5734832 1629464 5735560 1629320 5731248 -1629272 5731304 1629208 5731336 1628944 5734832 1629320 5731248 -1628944 5734832 1629328 5735456 1629464 5735560 1629320 5731248 -1628648 5734680 1628656 5734712 1629208 5735392 1628944 5734832 -1628656 5734712 1629064 5735344 1629208 5735392 1628944 5734832 -1629208 5735392 1629328 5735456 1628944 5734832 1629064 5735344 -1628648 5734680 1628656 5734712 1628944 5734832 1629208 5731336 -1628656 5734712 1629064 5735344 1628944 5734832 1628648 5734680 -1629464 5735560 1629928 5726696 1629320 5731248 1628944 5734832 -1628648 5734680 1628944 5734832 1629208 5731336 1628768 5731368 -1628656 5734712 1628824 5735312 1629064 5735344 1628944 5734832 -1629064 5735344 1629208 5735392 1628944 5734832 1628824 5735312 -1628656 5734712 1628672 5735216 1628824 5735312 1628944 5734832 -1628656 5734712 1628560 5735016 1628672 5735216 1628944 5734832 -1628672 5735216 1628824 5735312 1628944 5734832 1628560 5735016 -1628656 5734712 1628560 5735016 1628944 5734832 1628648 5734680 -1628672 5735216 1628736 5735280 1628824 5735312 1628944 5734832 -1628656 5734712 1628504 5734856 1628560 5735016 1628944 5734832 -1628824 5735312 1629064 5735344 1628944 5734832 1628672 5735216 -1628944 5734832 1629168 5734864 1629320 5731248 1629272 5731304 -1628944 5734832 1629168 5734864 1629272 5731304 1629208 5731336 -1628944 5734832 1629168 5734864 1629208 5731336 1628648 5734680 -1628944 5734832 1629168 5734864 1628648 5734680 1628656 5734712 -1629168 5734864 1629272 5731304 1629208 5731336 1628648 5734680 -1629168 5734864 1629464 5735560 1629320 5731248 1629272 5731304 -1628944 5734832 1629464 5735560 1629168 5734864 1628648 5734680 -1629168 5734864 1629320 5731248 1629272 5731304 1629208 5731336 -1629464 5735560 1629168 5734864 1628944 5734832 1629328 5735456 -1629464 5735560 1629320 5731248 1629168 5734864 1629328 5735456 -1629168 5734864 1628648 5734680 1628944 5734832 1629328 5735456 -1628944 5734832 1629208 5735392 1629328 5735456 1629168 5734864 -1628944 5734832 1629064 5735344 1629208 5735392 1629168 5734864 -1628944 5734832 1628824 5735312 1629064 5735344 1629168 5734864 -1628944 5734832 1629064 5735344 1629168 5734864 1628648 5734680 -1629208 5735392 1629328 5735456 1629168 5734864 1629064 5735344 -1629208 5735392 1629280 5735448 1629328 5735456 1629168 5734864 -1629328 5735456 1629464 5735560 1629168 5734864 1629208 5735392 -1629320 5731248 1629168 5734864 1629464 5735560 1629928 5726696 -1629208 5731336 1628768 5731368 1628648 5734680 1629168 5734864 -1629464 5735560 1629696 5735040 1629944 5726624 1629928 5726696 -1629696 5735040 1631312 5744824 1629944 5726624 1629928 5726696 -1629464 5735560 1631312 5744824 1629696 5735040 1629928 5726696 -1629464 5735560 1629696 5735040 1629928 5726696 1629320 5731248 -1629464 5735560 1631312 5744824 1629696 5735040 1629320 5731248 -1629464 5735560 1629696 5735040 1629320 5731248 1629168 5734864 -1629320 5731248 1629272 5731304 1629168 5734864 1629696 5735040 -1629464 5735560 1629696 5735040 1629168 5734864 1629328 5735456 -1629464 5735560 1631312 5744824 1629696 5735040 1629328 5735456 -1629272 5731304 1629208 5731336 1629168 5734864 1629696 5735040 -1629208 5731336 1628648 5734680 1629168 5734864 1629696 5735040 -1629272 5731304 1629208 5731336 1629696 5735040 1629320 5731248 -1629696 5735040 1629928 5726696 1629320 5731248 1629272 5731304 -1629168 5734864 1629208 5735392 1629328 5735456 1629696 5735040 -1629328 5735456 1629464 5735560 1629696 5735040 1629208 5735392 -1629168 5734864 1629064 5735344 1629208 5735392 1629696 5735040 -1629208 5735392 1629280 5735448 1629328 5735456 1629696 5735040 -1629168 5734864 1629208 5735392 1629696 5735040 1629208 5731336 -1629696 5735040 1629944 5726624 1629928 5726696 1629320 5731248 -1631312 5744824 1629696 5735040 1629464 5735560 1630952 5743928 -1631312 5744824 1629944 5726624 1629696 5735040 1630952 5743928 -1629696 5735040 1629328 5735456 1629464 5735560 1630952 5743928 -1631312 5744824 1629696 5735040 1630952 5743928 1630992 5744048 -1629464 5735560 1629432 5736720 1630952 5743928 1629696 5735040 -1629464 5735560 1629432 5736720 1629696 5735040 1629328 5735456 -1629464 5735560 1629416 5736656 1629432 5736720 1629696 5735040 -1629432 5736720 1630864 5743768 1630952 5743928 1629696 5735040 -1630952 5743928 1631312 5744824 1629696 5735040 1629432 5736720 -1629928 5726696 1629304 5731208 1629320 5731248 1629696 5735040 -1629944 5726624 1629696 5735040 1631312 5744824 1751256 5699792 -1629696 5735040 1630120 5735160 1629944 5726624 1629928 5726696 -1631312 5744824 1630120 5735160 1629696 5735040 1630952 5743928 -1629696 5735040 1630952 5743928 1630120 5735160 1629928 5726696 -1630120 5735160 1631312 5744824 1629944 5726624 1629928 5726696 -1631312 5744824 1629944 5726624 1630120 5735160 1630952 5743928 -1631312 5744824 1630120 5735160 1630952 5743928 1630992 5744048 -1629696 5735040 1630120 5735160 1629928 5726696 1629320 5731248 -1630120 5735160 1629944 5726624 1629928 5726696 1629320 5731248 -1629696 5735040 1630952 5743928 1630120 5735160 1629320 5731248 -1629696 5735040 1630120 5735160 1629320 5731248 1629272 5731304 -1629696 5735040 1630120 5735160 1629272 5731304 1629208 5731336 -1629696 5735040 1630952 5743928 1630120 5735160 1629272 5731304 -1630120 5735160 1629928 5726696 1629320 5731248 1629272 5731304 -1629696 5735040 1629432 5736720 1630952 5743928 1630120 5735160 -1630952 5743928 1631312 5744824 1630120 5735160 1629432 5736720 -1629696 5735040 1629432 5736720 1630120 5735160 1629272 5731304 -1629432 5736720 1630864 5743768 1630952 5743928 1630120 5735160 -1630952 5743928 1631312 5744824 1630120 5735160 1630864 5743768 -1629432 5736720 1630632 5743536 1630864 5743768 1630120 5735160 -1629432 5736720 1630864 5743768 1630120 5735160 1629696 5735040 -1629696 5735040 1629464 5735560 1629432 5736720 1630120 5735160 -1629696 5735040 1629464 5735560 1630120 5735160 1629272 5731304 -1629696 5735040 1629328 5735456 1629464 5735560 1630120 5735160 -1629464 5735560 1629416 5736656 1629432 5736720 1630120 5735160 -1629464 5735560 1629320 5736568 1629416 5736656 1630120 5735160 -1629432 5736720 1630864 5743768 1630120 5735160 1629416 5736656 -1629464 5735560 1629416 5736656 1630120 5735160 1629696 5735040 -1629928 5726696 1629304 5731208 1629320 5731248 1630120 5735160 -1629944 5726624 1630120 5735160 1631312 5744824 1751256 5699792 -1629944 5726624 1629928 5726696 1630120 5735160 1751256 5699792 -1630120 5735160 1630952 5743928 1631312 5744824 1751256 5699792 -1629944 5726624 1630120 5735160 1751256 5699792 1629944 5726576 -1631312 5744824 1760125 5760125 1751256 5699792 1630120 5735160 -1631312 5744824 1630440 5735312 1630120 5735160 1630952 5743928 -1630120 5735160 1630864 5743768 1630952 5743928 1630440 5735312 -1630440 5735312 1751256 5699792 1630120 5735160 1630864 5743768 -1630952 5743928 1631312 5744824 1630440 5735312 1630864 5743768 -1631312 5744824 1630440 5735312 1630952 5743928 1630992 5744048 -1631312 5744824 1751256 5699792 1630440 5735312 1630952 5743928 -1630120 5735160 1629432 5736720 1630864 5743768 1630440 5735312 -1630864 5743768 1630952 5743928 1630440 5735312 1629432 5736720 -1630120 5735160 1629432 5736720 1630440 5735312 1751256 5699792 -1629432 5736720 1630632 5743536 1630864 5743768 1630440 5735312 -1630864 5743768 1630952 5743928 1630440 5735312 1630632 5743536 -1629432 5736720 1630424 5743368 1630632 5743536 1630440 5735312 -1629432 5736720 1630632 5743536 1630440 5735312 1630120 5735160 -1630120 5735160 1629416 5736656 1629432 5736720 1630440 5735312 -1630120 5735160 1629416 5736656 1630440 5735312 1751256 5699792 -1630120 5735160 1629464 5735560 1629416 5736656 1630440 5735312 -1630120 5735160 1629464 5735560 1630440 5735312 1751256 5699792 -1629464 5735560 1629320 5736568 1629416 5736656 1630440 5735312 -1629432 5736720 1630632 5743536 1630440 5735312 1629416 5736656 -1629416 5736656 1629432 5736720 1630440 5735312 1629464 5735560 -1630120 5735160 1629696 5735040 1629464 5735560 1630440 5735312 -1630120 5735160 1630440 5735312 1751256 5699792 1629944 5726624 -1630120 5735160 1630440 5735312 1629944 5726624 1629928 5726696 -1630120 5735160 1630440 5735312 1629928 5726696 1629320 5731248 -1630440 5735312 1629944 5726624 1629928 5726696 1629320 5731248 -1630120 5735160 1629464 5735560 1630440 5735312 1629320 5731248 -1630440 5735312 1631312 5744824 1751256 5699792 1629944 5726624 -1630120 5735160 1630440 5735312 1629320 5731248 1629272 5731304 -1751256 5699792 1629944 5726576 1629944 5726624 1630440 5735312 -1629928 5726696 1629304 5731208 1629320 5731248 1630440 5735312 -1630440 5735312 1751256 5699792 1629944 5726624 1629928 5726696 -1751256 5699792 1630440 5735312 1631312 5744824 1760125 5760125 -1630440 5735312 1630608 5735424 1751256 5699792 1629944 5726624 -1631312 5744824 1630608 5735424 1630440 5735312 1630952 5743928 -1630440 5735312 1630864 5743768 1630952 5743928 1630608 5735424 -1630440 5735312 1630632 5743536 1630864 5743768 1630608 5735424 -1630864 5743768 1630952 5743928 1630608 5735424 1630632 5743536 -1630440 5735312 1629432 5736720 1630632 5743536 1630608 5735424 -1630632 5743536 1630864 5743768 1630608 5735424 1629432 5736720 -1631312 5744824 1630608 5735424 1630952 5743928 1630992 5744048 -1630952 5743928 1631312 5744824 1630608 5735424 1630864 5743768 -1630440 5735312 1629432 5736720 1630608 5735424 1629944 5726624 -1630608 5735424 1631312 5744824 1751256 5699792 1629944 5726624 -1631312 5744824 1751256 5699792 1630608 5735424 1630952 5743928 -1751256 5699792 1629944 5726576 1629944 5726624 1630608 5735424 -1629944 5726624 1630440 5735312 1630608 5735424 1629944 5726576 -1751256 5699792 1629944 5726576 1630608 5735424 1631312 5744824 -1751256 5699792 1743888 5687504 1629944 5726576 1630608 5735424 -1629432 5736720 1630424 5743368 1630632 5743536 1630608 5735424 -1630440 5735312 1629416 5736656 1629432 5736720 1630608 5735424 -1629432 5736720 1630632 5743536 1630608 5735424 1629416 5736656 -1630440 5735312 1629416 5736656 1630608 5735424 1629944 5726624 -1630440 5735312 1629464 5735560 1629416 5736656 1630608 5735424 -1629464 5735560 1629320 5736568 1629416 5736656 1630608 5735424 -1630440 5735312 1629464 5735560 1630608 5735424 1629944 5726624 -1630440 5735312 1630120 5735160 1629464 5735560 1630608 5735424 -1629416 5736656 1629432 5736720 1630608 5735424 1629464 5735560 -1630440 5735312 1630608 5735424 1629944 5726624 1629928 5726696 -1630440 5735312 1630608 5735424 1629928 5726696 1629320 5731248 -1630440 5735312 1630608 5735424 1629320 5731248 1630120 5735160 -1630608 5735424 1629944 5726576 1629944 5726624 1629928 5726696 -1630440 5735312 1629464 5735560 1630608 5735424 1629320 5731248 -1629928 5726696 1629304 5731208 1629320 5731248 1630608 5735424 -1630608 5735424 1629944 5726624 1629928 5726696 1629320 5731248 -1751256 5699792 1630608 5735424 1631312 5744824 1760125 5760125 -1630608 5735424 1630704 5735512 1751256 5699792 1629944 5726576 -1630608 5735424 1631312 5744824 1630704 5735512 1629944 5726576 -1631312 5744824 1630704 5735512 1630608 5735424 1630952 5743928 -1631312 5744824 1630704 5735512 1630952 5743928 1630992 5744048 -1630608 5735424 1630864 5743768 1630952 5743928 1630704 5735512 -1630608 5735424 1630632 5743536 1630864 5743768 1630704 5735512 -1630608 5735424 1629432 5736720 1630632 5743536 1630704 5735512 -1630632 5743536 1630864 5743768 1630704 5735512 1629432 5736720 -1630608 5735424 1629416 5736656 1629432 5736720 1630704 5735512 -1629432 5736720 1630632 5743536 1630704 5735512 1629416 5736656 -1630864 5743768 1630952 5743928 1630704 5735512 1630632 5743536 -1630704 5735512 1629944 5726576 1630608 5735424 1629416 5736656 -1630952 5743928 1631312 5744824 1630704 5735512 1630864 5743768 -1630704 5735512 1631312 5744824 1751256 5699792 1629944 5726576 -1631312 5744824 1751256 5699792 1630704 5735512 1630952 5743928 -1751256 5699792 1743888 5687504 1629944 5726576 1630704 5735512 -1743888 5687504 1743800 5687320 1629944 5726576 1630704 5735512 -1751256 5699792 1743976 5687584 1743888 5687504 1630704 5735512 -1629944 5726576 1630608 5735424 1630704 5735512 1743888 5687504 -1751256 5699792 1743888 5687504 1630704 5735512 1631312 5744824 -1630608 5735424 1630704 5735512 1629944 5726576 1629944 5726624 -1630608 5735424 1630704 5735512 1629944 5726624 1629928 5726696 -1630704 5735512 1743888 5687504 1629944 5726576 1629944 5726624 -1630608 5735424 1629416 5736656 1630704 5735512 1629928 5726696 -1630704 5735512 1629944 5726576 1629944 5726624 1629928 5726696 -1629432 5736720 1630424 5743368 1630632 5743536 1630704 5735512 -1629432 5736720 1630424 5743368 1630704 5735512 1629416 5736656 -1630632 5743536 1630864 5743768 1630704 5735512 1630424 5743368 -1629432 5736720 1629784 5742896 1630424 5743368 1630704 5735512 -1630608 5735424 1629464 5735560 1629416 5736656 1630704 5735512 -1629464 5735560 1629320 5736568 1629416 5736656 1630704 5735512 -1629416 5736656 1629432 5736720 1630704 5735512 1629464 5735560 -1630608 5735424 1629464 5735560 1630704 5735512 1629928 5726696 -1630608 5735424 1630440 5735312 1629464 5735560 1630704 5735512 -1630608 5735424 1630704 5735512 1629928 5726696 1629320 5731248 -1630608 5735424 1630704 5735512 1629320 5731248 1630440 5735312 -1630704 5735512 1629944 5726624 1629928 5726696 1629320 5731248 -1630608 5735424 1629464 5735560 1630704 5735512 1629320 5731248 -1629928 5726696 1629304 5731208 1629320 5731248 1630704 5735512 -1751256 5699792 1630704 5735512 1631312 5744824 1760125 5760125 -1629432 5736720 1630688 5735528 1630704 5735512 1629416 5736656 -1630424 5743368 1630688 5735528 1629432 5736720 1629784 5742896 -1630704 5735512 1629464 5735560 1629416 5736656 1630688 5735528 -1629416 5736656 1629432 5736720 1630688 5735528 1629464 5735560 -1629464 5735560 1629320 5736568 1629416 5736656 1630688 5735528 -1630688 5735528 1630424 5743368 1630704 5735512 1629464 5735560 -1629432 5736720 1630424 5743368 1630688 5735528 1629416 5736656 -1630704 5735512 1630688 5735528 1630424 5743368 1630632 5743536 -1630704 5735512 1630688 5735528 1630632 5743536 1630864 5743768 -1630704 5735512 1629464 5735560 1630688 5735528 1630632 5743536 -1630688 5735528 1629432 5736720 1630424 5743368 1630632 5743536 -1630704 5735512 1630608 5735424 1629464 5735560 1630688 5735528 -1629464 5735560 1629416 5736656 1630688 5735528 1630608 5735424 -1630704 5735512 1630608 5735424 1630688 5735528 1630632 5743536 -1630608 5735424 1630440 5735312 1629464 5735560 1630688 5735528 -1629464 5735560 1629416 5736656 1630688 5735528 1630440 5735312 -1630440 5735312 1630120 5735160 1629464 5735560 1630688 5735528 -1630608 5735424 1630440 5735312 1630688 5735528 1630704 5735512 -1630632 5743536 1630704 5735568 1630704 5735512 1630688 5735528 -1630704 5735512 1630704 5735568 1630864 5743768 1630952 5743928 -1630704 5735512 1630704 5735568 1630952 5743928 1631312 5744824 -1630952 5743928 1630992 5744048 1631312 5744824 1630704 5735568 -1630704 5735568 1630864 5743768 1630952 5743928 1631312 5744824 -1630704 5735512 1630704 5735568 1631312 5744824 1751256 5699792 -1630704 5735568 1630952 5743928 1631312 5744824 1751256 5699792 -1630704 5735512 1630704 5735568 1751256 5699792 1743888 5687504 -1630704 5735568 1751256 5699792 1630704 5735512 1630688 5735528 -1630704 5735568 1630632 5743536 1630864 5743768 1630952 5743928 -1630632 5743536 1630864 5743768 1630704 5735568 1630688 5735528 -1630632 5743536 1630704 5735568 1630688 5735528 1630424 5743368 -1630704 5735568 1630704 5735512 1630688 5735528 1630424 5743368 -1630688 5735528 1629432 5736720 1630424 5743368 1630704 5735568 -1630688 5735528 1629432 5736720 1630704 5735568 1630704 5735512 -1629432 5736720 1629784 5742896 1630424 5743368 1630704 5735568 -1630688 5735528 1629416 5736656 1629432 5736720 1630704 5735568 -1630688 5735528 1629464 5735560 1629416 5736656 1630704 5735568 -1630688 5735528 1629464 5735560 1630704 5735568 1630704 5735512 -1629464 5735560 1629320 5736568 1629416 5736656 1630704 5735568 -1630688 5735528 1630440 5735312 1629464 5735560 1630704 5735568 -1629464 5735560 1629416 5736656 1630704 5735568 1630440 5735312 -1630688 5735528 1630440 5735312 1630704 5735568 1630704 5735512 -1629432 5736720 1630424 5743368 1630704 5735568 1629416 5736656 -1629416 5736656 1629432 5736720 1630704 5735568 1629464 5735560 -1630632 5743536 1630864 5743768 1630704 5735568 1630424 5743368 -1630440 5735312 1630120 5735160 1629464 5735560 1630704 5735568 -1630424 5743368 1630632 5743536 1630704 5735568 1629432 5736720 -1630688 5735528 1630608 5735424 1630440 5735312 1630704 5735568 -1630688 5735528 1630608 5735424 1630704 5735568 1630704 5735512 -1630440 5735312 1629464 5735560 1630704 5735568 1630608 5735424 -1630688 5735528 1630704 5735512 1630608 5735424 1630704 5735568 -1631312 5744824 1760125 5760125 1751256 5699792 1630704 5735568 -1630424 5743368 1630672 5735640 1629432 5736720 1629784 5742896 -1629432 5736720 1630672 5735640 1630704 5735568 1629416 5736656 -1630704 5735568 1629464 5735560 1629416 5736656 1630672 5735640 -1630704 5735568 1630440 5735312 1629464 5735560 1630672 5735640 -1629464 5735560 1629320 5736568 1629416 5736656 1630672 5735640 -1630704 5735568 1630608 5735424 1630440 5735312 1630672 5735640 -1630440 5735312 1629464 5735560 1630672 5735640 1630608 5735424 -1629416 5736656 1629432 5736720 1630672 5735640 1629464 5735560 -1629464 5735560 1629416 5736656 1630672 5735640 1630440 5735312 -1629432 5736720 1630424 5743368 1630672 5735640 1629416 5736656 -1630672 5735640 1630424 5743368 1630704 5735568 1630608 5735424 -1630440 5735312 1630120 5735160 1629464 5735560 1630672 5735640 -1630704 5735568 1630672 5735640 1630424 5743368 1630632 5743536 -1630672 5735640 1629432 5736720 1630424 5743368 1630632 5743536 -1630704 5735568 1630608 5735424 1630672 5735640 1630632 5743536 -1630704 5735568 1630672 5735640 1630632 5743536 1630864 5743768 -1630704 5735568 1630672 5735640 1630864 5743768 1630952 5743928 -1630704 5735568 1630672 5735640 1630952 5743928 1631312 5744824 -1630704 5735568 1630608 5735424 1630672 5735640 1630952 5743928 -1630672 5735640 1630632 5743536 1630864 5743768 1630952 5743928 -1630672 5735640 1630424 5743368 1630632 5743536 1630864 5743768 -1630704 5735568 1630688 5735528 1630608 5735424 1630672 5735640 -1630608 5735424 1630440 5735312 1630672 5735640 1630688 5735528 -1630704 5735568 1630688 5735528 1630672 5735640 1630952 5743928 -1630688 5735528 1630704 5735512 1630608 5735424 1630672 5735640 -1629416 5736656 1630480 5735720 1629464 5735560 1629320 5736568 -1630672 5735640 1630480 5735720 1629416 5736656 1629432 5736720 -1629464 5735560 1630480 5735720 1630672 5735640 1630440 5735312 -1630672 5735640 1630608 5735424 1630440 5735312 1630480 5735720 -1630672 5735640 1630688 5735528 1630608 5735424 1630480 5735720 -1630440 5735312 1629464 5735560 1630480 5735720 1630608 5735424 -1630672 5735640 1630608 5735424 1630480 5735720 1629432 5736720 -1630672 5735640 1630480 5735720 1629432 5736720 1630424 5743368 -1630480 5735720 1629464 5735560 1629416 5736656 1629432 5736720 -1629464 5735560 1629416 5736656 1630480 5735720 1630440 5735312 -1629464 5735560 1630480 5735720 1630440 5735312 1630120 5735160 -1630480 5735720 1630608 5735424 1630440 5735312 1630120 5735160 -1629464 5735560 1629416 5736656 1630480 5735720 1630120 5735160 -1629464 5735560 1630480 5735720 1630120 5735160 1629696 5735040 -1629416 5736656 1630248 5735688 1629464 5735560 1629320 5736568 -1630248 5735688 1630480 5735720 1629464 5735560 1629320 5736568 -1629464 5735560 1629288 5736552 1629320 5736568 1630248 5735688 -1630480 5735720 1630248 5735688 1629416 5736656 1629432 5736720 -1630480 5735720 1630248 5735688 1629432 5736720 1630672 5735640 -1630480 5735720 1629464 5735560 1630248 5735688 1629432 5736720 -1629464 5735560 1630248 5735688 1630480 5735720 1630120 5735160 -1629464 5735560 1629320 5736568 1630248 5735688 1630120 5735160 -1630248 5735688 1629432 5736720 1630480 5735720 1630120 5735160 -1629416 5736656 1629432 5736720 1630248 5735688 1629320 5736568 -1630480 5735720 1630440 5735312 1630120 5735160 1630248 5735688 -1630480 5735720 1630608 5735424 1630440 5735312 1630248 5735688 -1630480 5735720 1630440 5735312 1630248 5735688 1629432 5736720 -1630120 5735160 1629464 5735560 1630248 5735688 1630440 5735312 -1629464 5735560 1630248 5735688 1630120 5735160 1629696 5735040 -1629464 5735560 1630192 5735704 1630248 5735688 1630120 5735160 -1630192 5735704 1629320 5736568 1630248 5735688 1630120 5735160 -1629464 5735560 1629320 5736568 1630192 5735704 1630120 5735160 -1630248 5735688 1630192 5735704 1629320 5736568 1629416 5736656 -1630248 5735688 1630120 5735160 1630192 5735704 1629416 5736656 -1630192 5735704 1629464 5735560 1629320 5736568 1629416 5736656 -1629320 5736568 1630192 5735704 1629464 5735560 1629288 5736552 -1630248 5735688 1630440 5735312 1630120 5735160 1630192 5735704 -1630248 5735688 1630192 5735704 1629416 5736656 1629432 5736720 -1630248 5735688 1630120 5735160 1630192 5735704 1629432 5736720 -1630192 5735704 1629320 5736568 1629416 5736656 1629432 5736720 -1630248 5735688 1630192 5735704 1629432 5736720 1630480 5735720 -1630248 5735688 1630120 5735160 1630192 5735704 1630480 5735720 -1629432 5736720 1630672 5735640 1630480 5735720 1630192 5735704 -1630192 5735704 1629416 5736656 1629432 5736720 1630480 5735720 -1629464 5735560 1630192 5735704 1630120 5735160 1629696 5735040 -1630192 5735704 1629968 5735816 1629320 5736568 1629416 5736656 -1630192 5735704 1629464 5735560 1629968 5735816 1629416 5736656 -1629464 5735560 1629968 5735816 1630192 5735704 1630120 5735160 -1630192 5735704 1630248 5735688 1630120 5735160 1629968 5735816 -1629968 5735816 1629416 5736656 1630192 5735704 1630120 5735160 -1629968 5735816 1629464 5735560 1629320 5736568 1629416 5736656 -1629464 5735560 1629320 5736568 1629968 5735816 1630120 5735160 -1630192 5735704 1629968 5735816 1629416 5736656 1629432 5736720 -1629968 5735816 1629320 5736568 1629416 5736656 1629432 5736720 -1630192 5735704 1630120 5735160 1629968 5735816 1629432 5736720 -1629320 5736568 1629968 5735816 1629464 5735560 1629288 5736552 -1629320 5736568 1629416 5736656 1629968 5735816 1629288 5736552 -1629968 5735816 1630120 5735160 1629464 5735560 1629288 5736552 -1629464 5735560 1629008 5736448 1629288 5736552 1629968 5735816 -1630192 5735704 1629968 5735816 1629432 5736720 1630480 5735720 -1630192 5735704 1630120 5735160 1629968 5735816 1630480 5735720 -1629968 5735816 1629416 5736656 1629432 5736720 1630480 5735720 -1629432 5736720 1630672 5735640 1630480 5735720 1629968 5735816 -1630192 5735704 1629968 5735816 1630480 5735720 1630248 5735688 -1629464 5735560 1629968 5735816 1630120 5735160 1629696 5735040 -1629464 5735560 1629840 5735800 1629968 5735816 1630120 5735160 -1629968 5735816 1630192 5735704 1630120 5735160 1629840 5735800 -1630192 5735704 1630248 5735688 1630120 5735160 1629840 5735800 -1629840 5735800 1629288 5736552 1629968 5735816 1630192 5735704 -1630120 5735160 1629464 5735560 1629840 5735800 1630192 5735704 -1629464 5735560 1629288 5736552 1629840 5735800 1630120 5735160 -1629288 5736552 1629840 5735800 1629464 5735560 1629008 5736448 -1629968 5735816 1629840 5735800 1629288 5736552 1629320 5736568 -1629968 5735816 1629840 5735800 1629320 5736568 1629416 5736656 -1629968 5735816 1629840 5735800 1629416 5736656 1629432 5736720 -1629968 5735816 1630192 5735704 1629840 5735800 1629416 5736656 -1629840 5735800 1629464 5735560 1629288 5736552 1629320 5736568 -1629840 5735800 1629288 5736552 1629320 5736568 1629416 5736656 -1629464 5735560 1629840 5735800 1630120 5735160 1629696 5735040 -1629840 5735800 1629680 5735728 1629288 5736552 1629320 5736568 -1629840 5735800 1629464 5735560 1629680 5735728 1629320 5736568 -1629464 5735560 1629680 5735728 1629840 5735800 1630120 5735160 -1629840 5735800 1630192 5735704 1630120 5735160 1629680 5735728 -1629680 5735728 1629320 5736568 1629840 5735800 1630120 5735160 -1629680 5735728 1629464 5735560 1629288 5736552 1629320 5736568 -1629464 5735560 1629288 5736552 1629680 5735728 1630120 5735160 -1629288 5736552 1629680 5735728 1629464 5735560 1629008 5736448 -1629288 5736552 1629320 5736568 1629680 5735728 1629008 5736448 -1629680 5735728 1630120 5735160 1629464 5735560 1629008 5736448 -1629840 5735800 1629680 5735728 1629320 5736568 1629416 5736656 -1629464 5735560 1629280 5735448 1629008 5736448 1629680 5735728 -1629464 5735560 1629680 5735728 1630120 5735160 1629696 5735040 -1629464 5735560 1629680 5735728 1629696 5735040 1629328 5735456 -1629680 5735728 1629840 5735800 1630120 5735160 1629696 5735040 -1629464 5735560 1629008 5736448 1629680 5735728 1629696 5735040 -1630120 5735160 1629808 5735480 1629680 5735728 1629840 5735800 -1630120 5735160 1629808 5735480 1629840 5735800 1630192 5735704 -1630120 5735160 1629808 5735480 1630192 5735704 1630248 5735688 -1629840 5735800 1629968 5735816 1630192 5735704 1629808 5735480 -1630192 5735704 1630120 5735160 1629808 5735480 1629968 5735816 -1629808 5735480 1629680 5735728 1629840 5735800 1629968 5735816 -1629808 5735480 1629696 5735040 1629680 5735728 1629840 5735800 -1630120 5735160 1629696 5735040 1629808 5735480 1630192 5735704 -1629680 5735728 1629808 5735480 1629696 5735040 1629464 5735560 -1629696 5735040 1629328 5735456 1629464 5735560 1629808 5735480 -1629680 5735728 1629840 5735800 1629808 5735480 1629464 5735560 -1629808 5735480 1630120 5735160 1629696 5735040 1629464 5735560 -1629464 5735560 1629664 5735456 1629696 5735040 1629328 5735456 -1629696 5735040 1629208 5735392 1629328 5735456 1629664 5735456 -1629696 5735040 1629664 5735456 1629808 5735480 1630120 5735160 -1629464 5735560 1629808 5735480 1629664 5735456 1629328 5735456 -1629664 5735456 1629808 5735480 1629696 5735040 1629328 5735456 -1629808 5735480 1629664 5735456 1629464 5735560 1629680 5735728 -1629808 5735480 1629664 5735456 1629680 5735728 1629840 5735800 -1629808 5735480 1629696 5735040 1629664 5735456 1629680 5735728 -1629664 5735456 1629328 5735456 1629464 5735560 1629680 5735728 -1629328 5735456 1629464 5735360 1629696 5735040 1629208 5735392 -1629664 5735456 1629464 5735360 1629328 5735456 1629464 5735560 -1629664 5735456 1629464 5735360 1629464 5735560 1629680 5735728 -1629664 5735456 1629696 5735040 1629464 5735360 1629464 5735560 -1629696 5735040 1629464 5735360 1629664 5735456 1629808 5735480 -1629328 5735456 1629464 5735560 1629464 5735360 1629208 5735392 -1629464 5735360 1629664 5735456 1629696 5735040 1629208 5735392 -1629328 5735456 1629464 5735360 1629208 5735392 1629280 5735448 -1629696 5735040 1629168 5734864 1629208 5735392 1629464 5735360 -1629208 5735392 1629328 5735456 1629464 5735360 1629168 5734864 -1629168 5734864 1629064 5735344 1629208 5735392 1629464 5735360 -1629696 5735040 1629168 5734864 1629464 5735360 1629664 5735456 -1629464 5735360 1629352 5735280 1629208 5735392 1629328 5735456 -1629208 5735392 1629352 5735280 1629168 5734864 1629064 5735344 -1629168 5734864 1628944 5734832 1629064 5735344 1629352 5735280 -1629464 5735360 1629352 5735280 1629328 5735456 1629464 5735560 -1629464 5735360 1629168 5734864 1629352 5735280 1629328 5735456 -1629352 5735280 1629064 5735344 1629208 5735392 1629328 5735456 -1629352 5735280 1629464 5735360 1629168 5734864 1629064 5735344 -1629208 5735392 1629280 5735448 1629328 5735456 1629352 5735280 -1629328 5735456 1629464 5735360 1629352 5735280 1629280 5735448 -1629208 5735392 1629280 5735448 1629352 5735280 1629064 5735344 -1629168 5734864 1629352 5735280 1629464 5735360 1629696 5735040 -1629352 5735280 1629328 5735456 1629464 5735360 1629696 5735040 -1629464 5735360 1629664 5735456 1629696 5735040 1629352 5735280 -1629168 5734864 1629064 5735344 1629352 5735280 1629696 5735040 -1629064 5735344 1629312 5735264 1629168 5734864 1628944 5734832 -1629352 5735280 1629312 5735264 1629064 5735344 1629208 5735392 -1629352 5735280 1629312 5735264 1629208 5735392 1629280 5735448 -1629312 5735264 1629064 5735344 1629208 5735392 1629280 5735448 -1629352 5735280 1629168 5734864 1629312 5735264 1629280 5735448 -1629168 5734864 1629312 5735264 1629352 5735280 1629696 5735040 -1629312 5735264 1629280 5735448 1629352 5735280 1629696 5735040 -1629312 5735264 1629168 5734864 1629064 5735344 1629208 5735392 -1629168 5734864 1629064 5735344 1629312 5735264 1629696 5735040 -1629352 5735280 1629312 5735264 1629280 5735448 1629328 5735456 -1629352 5735280 1629464 5735360 1629696 5735040 1629312 5735264 -1629064 5735344 1629256 5735208 1629168 5734864 1628944 5734832 -1629312 5735264 1629256 5735208 1629064 5735344 1629208 5735392 -1629312 5735264 1629256 5735208 1629208 5735392 1629280 5735448 -1629312 5735264 1629168 5734864 1629256 5735208 1629208 5735392 -1629168 5734864 1629256 5735208 1629312 5735264 1629696 5735040 -1629312 5735264 1629352 5735280 1629696 5735040 1629256 5735208 -1629256 5735208 1629208 5735392 1629312 5735264 1629352 5735280 -1629696 5735040 1629168 5734864 1629256 5735208 1629352 5735280 -1629256 5735208 1629168 5734864 1629064 5735344 1629208 5735392 -1629168 5734864 1629064 5735344 1629256 5735208 1629696 5735040 -1629352 5735280 1629464 5735360 1629696 5735040 1629256 5735208 -1629696 5735040 1629248 5735168 1629256 5735208 1629352 5735280 -1629256 5735208 1629312 5735264 1629352 5735280 1629248 5735168 -1629352 5735280 1629696 5735040 1629248 5735168 1629312 5735264 -1629248 5735168 1629168 5734864 1629256 5735208 1629312 5735264 -1629256 5735208 1629248 5735168 1629168 5734864 1629064 5735344 -1629168 5734864 1628944 5734832 1629064 5735344 1629248 5735168 -1628944 5734832 1628824 5735312 1629064 5735344 1629248 5735168 -1629256 5735208 1629248 5735168 1629064 5735344 1629208 5735392 -1629256 5735208 1629312 5735264 1629248 5735168 1629064 5735344 -1629064 5735344 1629256 5735208 1629248 5735168 1628944 5734832 -1629248 5735168 1629696 5735040 1629168 5734864 1628944 5734832 -1629696 5735040 1629168 5734864 1629248 5735168 1629352 5735280 -1629696 5735040 1629248 5735168 1629352 5735280 1629464 5735360 -1629248 5735168 1629296 5735120 1629168 5734864 1628944 5734832 -1629696 5735040 1629296 5735120 1629248 5735168 1629352 5735280 -1629248 5735168 1629312 5735264 1629352 5735280 1629296 5735120 -1629248 5735168 1629256 5735208 1629312 5735264 1629296 5735120 -1629312 5735264 1629352 5735280 1629296 5735120 1629256 5735208 -1629296 5735120 1629168 5734864 1629248 5735168 1629256 5735208 -1629352 5735280 1629696 5735040 1629296 5735120 1629312 5735264 -1629696 5735040 1629168 5734864 1629296 5735120 1629352 5735280 -1629696 5735040 1629296 5735120 1629352 5735280 1629464 5735360 -1629352 5735280 1629376 5735128 1629296 5735120 1629312 5735264 -1629296 5735120 1629256 5735208 1629312 5735264 1629376 5735128 -1629296 5735120 1629248 5735168 1629256 5735208 1629376 5735128 -1629312 5735264 1629352 5735280 1629376 5735128 1629256 5735208 -1629376 5735128 1629696 5735040 1629296 5735120 1629256 5735208 -1629296 5735120 1629376 5735128 1629696 5735040 1629168 5734864 -1629296 5735120 1629376 5735128 1629168 5734864 1629248 5735168 -1629296 5735120 1629256 5735208 1629376 5735128 1629168 5734864 -1629376 5735128 1629352 5735280 1629696 5735040 1629168 5734864 -1629352 5735280 1629696 5735040 1629376 5735128 1629312 5735264 -1629696 5735040 1629376 5735128 1629352 5735280 1629464 5735360 -1629696 5735040 1629376 5735128 1629464 5735360 1629664 5735456 -1629696 5735040 1629168 5734864 1629376 5735128 1629464 5735360 -1629376 5735128 1629312 5735264 1629352 5735280 1629464 5735360 -1629696 5735040 1629616 5735200 1629664 5735456 1629808 5735480 -1629696 5735040 1629616 5735200 1629808 5735480 1630120 5735160 -1629808 5735480 1630192 5735704 1630120 5735160 1629616 5735200 -1629616 5735200 1629664 5735456 1629808 5735480 1630120 5735160 -1629464 5735360 1629616 5735200 1629696 5735040 1629376 5735128 -1629696 5735040 1629168 5734864 1629376 5735128 1629616 5735200 -1629696 5735040 1629376 5735128 1629616 5735200 1630120 5735160 -1629616 5735200 1629464 5735360 1629664 5735456 1629808 5735480 -1629464 5735360 1629664 5735456 1629616 5735200 1629376 5735128 -1629464 5735360 1629616 5735200 1629376 5735128 1629352 5735280 -1629616 5735200 1629968 5735296 1630120 5735160 1629696 5735040 -1630120 5735160 1629968 5735296 1629808 5735480 1630192 5735704 -1630120 5735160 1629968 5735296 1630192 5735704 1630248 5735688 -1629808 5735480 1629968 5735816 1630192 5735704 1629968 5735296 -1629968 5735296 1629808 5735480 1630192 5735704 1630248 5735688 -1629808 5735480 1629968 5735296 1629616 5735200 1629664 5735456 -1629616 5735200 1629968 5735296 1629696 5735040 1629376 5735128 -1629616 5735200 1629808 5735480 1629968 5735296 1629696 5735040 -1629968 5735296 1630248 5735688 1630120 5735160 1629696 5735040 -1629968 5735296 1629616 5735200 1629808 5735480 1630192 5735704 -1630120 5735160 1629968 5735296 1630248 5735688 1630440 5735312 -1629968 5735296 1630192 5735704 1630248 5735688 1630440 5735312 -1630120 5735160 1629696 5735040 1629968 5735296 1630440 5735312 -1630248 5735688 1630480 5735720 1630440 5735312 1629968 5735296 -1630248 5735688 1630064 5735368 1629968 5735296 1630192 5735704 -1629968 5735296 1629808 5735480 1630192 5735704 1630064 5735368 -1630192 5735704 1630248 5735688 1630064 5735368 1629808 5735480 -1629808 5735480 1629968 5735816 1630192 5735704 1630064 5735368 -1630064 5735368 1630440 5735312 1629968 5735296 1629808 5735480 -1629968 5735296 1629616 5735200 1629808 5735480 1630064 5735368 -1630248 5735688 1630440 5735312 1630064 5735368 1630192 5735704 -1629968 5735296 1630064 5735368 1630440 5735312 1630120 5735160 -1629968 5735296 1630064 5735368 1630120 5735160 1629696 5735040 -1629968 5735296 1629808 5735480 1630064 5735368 1630120 5735160 -1630064 5735368 1630248 5735688 1630440 5735312 1630120 5735160 -1630440 5735312 1630064 5735368 1630248 5735688 1630480 5735720 -1630064 5735368 1630040 5735432 1630192 5735704 1630248 5735688 -1630192 5735704 1630040 5735432 1629808 5735480 1629968 5735816 -1629808 5735480 1629840 5735800 1629968 5735816 1630040 5735432 -1629808 5735480 1630040 5735432 1630064 5735368 1629968 5735296 -1629808 5735480 1630040 5735432 1629968 5735296 1629616 5735200 -1630064 5735368 1629968 5735296 1630040 5735432 1630248 5735688 -1630064 5735368 1630040 5735432 1630248 5735688 1630440 5735312 -1630040 5735432 1629968 5735816 1630192 5735704 1630248 5735688 -1630040 5735432 1629968 5735296 1629808 5735480 1629968 5735816 -1629968 5735816 1629968 5735472 1629808 5735480 1629840 5735800 -1630040 5735432 1629968 5735472 1629968 5735816 1630192 5735704 -1629808 5735480 1629680 5735728 1629840 5735800 1629968 5735472 -1630040 5735432 1629968 5735472 1630192 5735704 1630248 5735688 -1630040 5735432 1629808 5735480 1629968 5735472 1630192 5735704 -1629808 5735480 1629968 5735472 1630040 5735432 1629968 5735296 -1630040 5735432 1630064 5735368 1629968 5735296 1629968 5735472 -1629808 5735480 1629968 5735472 1629968 5735296 1629616 5735200 -1629968 5735472 1630192 5735704 1630040 5735432 1629968 5735296 -1629968 5735816 1630192 5735704 1629968 5735472 1629840 5735800 -1629968 5735472 1629968 5735296 1629808 5735480 1629840 5735800 -1629968 5735472 1629904 5735488 1629840 5735800 1629968 5735816 -1629840 5735800 1629904 5735488 1629808 5735480 1629680 5735728 -1629968 5735472 1629904 5735488 1629968 5735816 1630192 5735704 -1629968 5735472 1629808 5735480 1629904 5735488 1629968 5735816 -1629808 5735480 1629904 5735488 1629968 5735472 1629968 5735296 -1629808 5735480 1629904 5735488 1629968 5735296 1629616 5735200 -1629968 5735472 1630040 5735432 1629968 5735296 1629904 5735488 -1629904 5735488 1629968 5735816 1629968 5735472 1629968 5735296 -1629904 5735488 1629808 5735480 1629840 5735800 1629968 5735816 -1629808 5735480 1629840 5735800 1629904 5735488 1629968 5735296 -1629168 5734864 1629432 5733200 1629208 5731336 1628648 5734680 -1629168 5734864 1629432 5733200 1628648 5734680 1628944 5734832 -1629168 5734864 1629696 5735040 1629432 5733200 1628648 5734680 -1629432 5733200 1629696 5735040 1629208 5731336 1628648 5734680 -1629208 5731336 1629432 5733200 1629696 5735040 1629272 5731304 -1629696 5735040 1630120 5735160 1629272 5731304 1629432 5733200 -1629208 5731336 1628648 5734680 1629432 5733200 1629272 5731304 -1629432 5733200 1629168 5734864 1629696 5735040 1630120 5735160 -1629272 5731304 1629208 5731336 1629432 5733200 1630120 5735160 -1630120 5735160 1629320 5731248 1629272 5731304 1629432 5733200 -1630120 5735160 1629320 5731248 1629432 5733200 1629696 5735040 -1629272 5731304 1629208 5731336 1629432 5733200 1629320 5731248 -1630120 5735160 1630440 5735312 1629320 5731248 1629432 5733200 -1630120 5735160 1630440 5735312 1629432 5733200 1629696 5735040 -1630440 5735312 1630608 5735424 1629320 5731248 1629432 5733200 -1630608 5735424 1630704 5735512 1629320 5731248 1629432 5733200 -1630608 5735424 1630704 5735512 1629432 5733200 1630440 5735312 -1629320 5731248 1629272 5731304 1629432 5733200 1630704 5735512 -1630440 5735312 1630608 5735424 1629432 5733200 1630120 5735160 -1629208 5731336 1628768 5731368 1628648 5734680 1629432 5733200 -1628768 5731368 1628640 5731360 1628648 5734680 1629432 5733200 -1628648 5734680 1629168 5734864 1629432 5733200 1628640 5731360 -1629208 5731336 1628768 5731368 1629432 5733200 1629272 5731304 -1629208 5731336 1628864 5731328 1628768 5731368 1629432 5733200 -1628768 5731368 1628640 5731360 1629432 5733200 1629208 5731336 -1628640 5731360 1628376 5731232 1628648 5734680 1629432 5733200 -1628376 5731232 1628512 5734776 1628648 5734680 1629432 5733200 -1628376 5731232 1626328 5735392 1628512 5734776 1629432 5733200 -1628640 5731360 1628376 5731232 1629432 5733200 1628768 5731368 -1628648 5734680 1629168 5734864 1629432 5733200 1628512 5734776 -1628376 5731232 1628512 5734776 1629432 5733200 1628640 5731360 -1630704 5735512 1629928 5726696 1629320 5731248 1629432 5733200 -1630704 5735512 1629624 5733200 1629432 5733200 1630608 5735424 -1629432 5733200 1630440 5735312 1630608 5735424 1629624 5733200 -1630608 5735424 1630704 5735512 1629624 5733200 1630440 5735312 -1629624 5733200 1629320 5731248 1629432 5733200 1630440 5735312 -1630704 5735512 1629320 5731248 1629624 5733200 1630608 5735424 -1629432 5733200 1629624 5733200 1629320 5731248 1629272 5731304 -1629432 5733200 1630440 5735312 1629624 5733200 1629272 5731304 -1629624 5733200 1630704 5735512 1629320 5731248 1629272 5731304 -1629432 5733200 1629624 5733200 1629272 5731304 1629208 5731336 -1629432 5733200 1629624 5733200 1629208 5731336 1628768 5731368 -1629432 5733200 1630440 5735312 1629624 5733200 1629208 5731336 -1629624 5733200 1629320 5731248 1629272 5731304 1629208 5731336 -1629432 5733200 1630120 5735160 1630440 5735312 1629624 5733200 -1629432 5733200 1629696 5735040 1630120 5735160 1629624 5733200 -1630440 5735312 1630608 5735424 1629624 5733200 1630120 5735160 -1629432 5733200 1629696 5735040 1629624 5733200 1629208 5731336 -1629432 5733200 1629168 5734864 1629696 5735040 1629624 5733200 -1629696 5735040 1630120 5735160 1629624 5733200 1629168 5734864 -1629432 5733200 1628648 5734680 1629168 5734864 1629624 5733200 -1629432 5733200 1629168 5734864 1629624 5733200 1629208 5731336 -1630120 5735160 1630440 5735312 1629624 5733200 1629696 5735040 -1629320 5731248 1629624 5733200 1630704 5735512 1629928 5726696 -1629624 5733200 1629800 5733120 1629320 5731248 1629272 5731304 -1629624 5733200 1630704 5735512 1629800 5733120 1629272 5731304 -1630704 5735512 1629800 5733120 1629624 5733200 1630608 5735424 -1629624 5733200 1630440 5735312 1630608 5735424 1629800 5733120 -1629624 5733200 1630120 5735160 1630440 5735312 1629800 5733120 -1630440 5735312 1630608 5735424 1629800 5733120 1630120 5735160 -1629800 5733120 1629272 5731304 1629624 5733200 1630120 5735160 -1630608 5735424 1630704 5735512 1629800 5733120 1630440 5735312 -1629800 5733120 1630704 5735512 1629320 5731248 1629272 5731304 -1630704 5735512 1629320 5731248 1629800 5733120 1630608 5735424 -1629624 5733200 1629800 5733120 1629272 5731304 1629208 5731336 -1629800 5733120 1629320 5731248 1629272 5731304 1629208 5731336 -1629624 5733200 1630120 5735160 1629800 5733120 1629208 5731336 -1629624 5733200 1629800 5733120 1629208 5731336 1629432 5733200 -1629208 5731336 1628768 5731368 1629432 5733200 1629800 5733120 -1629624 5733200 1630120 5735160 1629800 5733120 1629432 5733200 -1629800 5733120 1629272 5731304 1629208 5731336 1629432 5733200 -1629624 5733200 1629696 5735040 1630120 5735160 1629800 5733120 -1629624 5733200 1629168 5734864 1629696 5735040 1629800 5733120 -1630120 5735160 1630440 5735312 1629800 5733120 1629696 5735040 -1629624 5733200 1629696 5735040 1629800 5733120 1629432 5733200 -1629320 5731248 1629800 5733120 1630704 5735512 1629928 5726696 -1630704 5735512 1629944 5726624 1629928 5726696 1629800 5733120 -1629320 5731248 1629272 5731304 1629800 5733120 1629928 5726696 -1629800 5733120 1630608 5735424 1630704 5735512 1629928 5726696 -1629320 5731248 1629800 5733120 1629928 5726696 1629304 5731208 -1629928 5726696 1629928 5733104 1630704 5735512 1629944 5726624 -1630704 5735512 1629928 5733104 1629800 5733120 1630608 5735424 -1629800 5733120 1630440 5735312 1630608 5735424 1629928 5733104 -1629800 5733120 1630120 5735160 1630440 5735312 1629928 5733104 -1629800 5733120 1629696 5735040 1630120 5735160 1629928 5733104 -1630120 5735160 1630440 5735312 1629928 5733104 1629696 5735040 -1630440 5735312 1630608 5735424 1629928 5733104 1630120 5735160 -1629928 5733104 1629928 5726696 1629800 5733120 1629696 5735040 -1630608 5735424 1630704 5735512 1629928 5733104 1630440 5735312 -1629800 5733120 1629624 5733200 1629696 5735040 1629928 5733104 -1629624 5733200 1629168 5734864 1629696 5735040 1629928 5733104 -1629696 5735040 1630120 5735160 1629928 5733104 1629624 5733200 -1629800 5733120 1629624 5733200 1629928 5733104 1629928 5726696 -1630704 5735512 1629928 5726696 1629928 5733104 1630608 5735424 -1629800 5733120 1629928 5733104 1629928 5726696 1629320 5731248 -1629800 5733120 1629928 5733104 1629320 5731248 1629272 5731304 -1629800 5733120 1629928 5733104 1629272 5731304 1629208 5731336 -1629800 5733120 1629624 5733200 1629928 5733104 1629272 5731304 -1629928 5733104 1630704 5735512 1629928 5726696 1629320 5731248 -1629928 5726696 1629304 5731208 1629320 5731248 1629928 5733104 -1629928 5733104 1629928 5726696 1629320 5731248 1629272 5731304 -1629928 5726696 1630040 5733128 1630704 5735512 1629944 5726624 -1629928 5733104 1630040 5733128 1629928 5726696 1629320 5731248 -1630704 5735512 1629944 5726576 1629944 5726624 1630040 5733128 -1629928 5733104 1630704 5735512 1630040 5733128 1629320 5731248 -1630704 5735512 1630040 5733128 1629928 5733104 1630608 5735424 -1629928 5733104 1630440 5735312 1630608 5735424 1630040 5733128 -1629928 5733104 1630120 5735160 1630440 5735312 1630040 5733128 -1629928 5733104 1629696 5735040 1630120 5735160 1630040 5733128 -1629928 5733104 1629624 5733200 1629696 5735040 1630040 5733128 -1629624 5733200 1629168 5734864 1629696 5735040 1630040 5733128 -1629696 5735040 1630120 5735160 1630040 5733128 1629624 5733200 -1630120 5735160 1630440 5735312 1630040 5733128 1629696 5735040 -1630440 5735312 1630608 5735424 1630040 5733128 1630120 5735160 -1629928 5733104 1629800 5733120 1629624 5733200 1630040 5733128 -1629624 5733200 1629696 5735040 1630040 5733128 1629800 5733120 -1630040 5733128 1629320 5731248 1629928 5733104 1629800 5733120 -1630608 5735424 1630704 5735512 1630040 5733128 1630440 5735312 -1629928 5726696 1629320 5731248 1630040 5733128 1629944 5726624 -1630040 5733128 1630608 5735424 1630704 5735512 1629944 5726624 -1629928 5726696 1629304 5731208 1629320 5731248 1630040 5733128 -1629928 5733104 1630040 5733128 1629320 5731248 1629272 5731304 -1630040 5733128 1630128 5733192 1629944 5726624 1629928 5726696 -1629944 5726624 1630128 5733192 1630704 5735512 1629944 5726576 -1630040 5733128 1630128 5733192 1629928 5726696 1629320 5731248 -1630128 5733192 1629944 5726624 1629928 5726696 1629320 5731248 -1630040 5733128 1630128 5733192 1629320 5731248 1629928 5733104 -1630040 5733128 1630704 5735512 1630128 5733192 1629320 5731248 -1630704 5735512 1630128 5733192 1630040 5733128 1630608 5735424 -1630040 5733128 1630440 5735312 1630608 5735424 1630128 5733192 -1630040 5733128 1630120 5735160 1630440 5735312 1630128 5733192 -1630040 5733128 1629696 5735040 1630120 5735160 1630128 5733192 -1630040 5733128 1629624 5733200 1629696 5735040 1630128 5733192 -1629624 5733200 1629168 5734864 1629696 5735040 1630128 5733192 -1630040 5733128 1629800 5733120 1629624 5733200 1630128 5733192 -1629624 5733200 1629696 5735040 1630128 5733192 1629800 5733120 -1629696 5735040 1630120 5735160 1630128 5733192 1629624 5733200 -1630120 5735160 1630440 5735312 1630128 5733192 1629696 5735040 -1630040 5733128 1629928 5733104 1629800 5733120 1630128 5733192 -1629800 5733120 1629624 5733200 1630128 5733192 1629928 5733104 -1630440 5735312 1630608 5735424 1630128 5733192 1630120 5735160 -1630128 5733192 1629320 5731248 1630040 5733128 1629928 5733104 -1630608 5735424 1630704 5735512 1630128 5733192 1630440 5735312 -1630128 5733192 1630704 5735512 1629944 5726624 1629928 5726696 -1630704 5735512 1629944 5726624 1630128 5733192 1630608 5735424 -1629928 5726696 1629304 5731208 1629320 5731248 1630128 5733192 -1629944 5726624 1630200 5733272 1630704 5735512 1629944 5726576 -1630128 5733192 1630200 5733272 1629944 5726624 1629928 5726696 -1630128 5733192 1630200 5733272 1629928 5726696 1629320 5731248 -1630128 5733192 1630200 5733272 1629320 5731248 1630040 5733128 -1630200 5733272 1629944 5726624 1629928 5726696 1629320 5731248 -1630128 5733192 1630704 5735512 1630200 5733272 1629320 5731248 -1630704 5735512 1630200 5733272 1630128 5733192 1630608 5735424 -1630128 5733192 1630440 5735312 1630608 5735424 1630200 5733272 -1630128 5733192 1630120 5735160 1630440 5735312 1630200 5733272 -1630128 5733192 1629696 5735040 1630120 5735160 1630200 5733272 -1630128 5733192 1629624 5733200 1629696 5735040 1630200 5733272 -1629624 5733200 1629168 5734864 1629696 5735040 1630200 5733272 -1630128 5733192 1629800 5733120 1629624 5733200 1630200 5733272 -1630128 5733192 1629928 5733104 1629800 5733120 1630200 5733272 -1629624 5733200 1629696 5735040 1630200 5733272 1629800 5733120 -1629696 5735040 1630120 5735160 1630200 5733272 1629624 5733200 -1630120 5735160 1630440 5735312 1630200 5733272 1629696 5735040 -1630440 5735312 1630608 5735424 1630200 5733272 1630120 5735160 -1630200 5733272 1629320 5731248 1630128 5733192 1629800 5733120 -1630608 5735424 1630704 5735512 1630200 5733272 1630440 5735312 -1630200 5733272 1630704 5735512 1629944 5726624 1629928 5726696 -1630704 5735512 1629944 5726624 1630200 5733272 1630608 5735424 -1629928 5726696 1629304 5731208 1629320 5731248 1630200 5733272 -1629944 5726624 1630456 5733648 1630704 5735512 1629944 5726576 -1630704 5735512 1743888 5687504 1629944 5726576 1630456 5733648 -1743888 5687504 1743800 5687320 1629944 5726576 1630456 5733648 -1630704 5735512 1751256 5699792 1743888 5687504 1630456 5733648 -1751256 5699792 1743976 5687584 1743888 5687504 1630456 5733648 -1743888 5687504 1629944 5726576 1630456 5733648 1751256 5699792 -1630704 5735512 1630704 5735568 1751256 5699792 1630456 5733648 -1629944 5726576 1629944 5726624 1630456 5733648 1743888 5687504 -1630200 5733272 1630456 5733648 1629944 5726624 1629928 5726696 -1630200 5733272 1630456 5733648 1629928 5726696 1629320 5731248 -1630200 5733272 1630704 5735512 1630456 5733648 1629928 5726696 -1630704 5735512 1630456 5733648 1630200 5733272 1630608 5735424 -1630200 5733272 1630440 5735312 1630608 5735424 1630456 5733648 -1630200 5733272 1630120 5735160 1630440 5735312 1630456 5733648 -1630200 5733272 1629696 5735040 1630120 5735160 1630456 5733648 -1630200 5733272 1629624 5733200 1629696 5735040 1630456 5733648 -1629624 5733200 1629168 5734864 1629696 5735040 1630456 5733648 -1629624 5733200 1629432 5733200 1629168 5734864 1630456 5733648 -1630200 5733272 1629800 5733120 1629624 5733200 1630456 5733648 -1629624 5733200 1629168 5734864 1630456 5733648 1630200 5733272 -1629696 5735040 1630120 5735160 1630456 5733648 1629168 5734864 -1630120 5735160 1630440 5735312 1630456 5733648 1629696 5735040 -1630440 5735312 1630608 5735424 1630456 5733648 1630120 5735160 -1630456 5733648 1629928 5726696 1630200 5733272 1629624 5733200 -1630608 5735424 1630704 5735512 1630456 5733648 1630440 5735312 -1629944 5726624 1629928 5726696 1630456 5733648 1629944 5726576 -1630456 5733648 1630608 5735424 1630704 5735512 1751256 5699792 -1751256 5699792 1630704 5733848 1630704 5735512 1630704 5735568 -1630456 5733648 1630704 5733848 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1630704 5733848 -1630456 5733648 1630704 5733848 1743888 5687504 1629944 5726576 -1743888 5687504 1743800 5687320 1629944 5726576 1630704 5733848 -1630704 5733848 1751256 5699792 1743888 5687504 1629944 5726576 -1630456 5733648 1630704 5733848 1629944 5726576 1629944 5726624 -1630704 5733848 1743888 5687504 1629944 5726576 1629944 5726624 -1630456 5733648 1630704 5733848 1629944 5726624 1629928 5726696 -1630704 5733848 1629944 5726576 1629944 5726624 1629928 5726696 -1630456 5733648 1630704 5733848 1629928 5726696 1630200 5733272 -1629928 5726696 1629320 5731248 1630200 5733272 1630704 5733848 -1629320 5731248 1630128 5733192 1630200 5733272 1630704 5733848 -1630200 5733272 1630456 5733648 1630704 5733848 1629320 5731248 -1630704 5733848 1629944 5726624 1629928 5726696 1629320 5731248 -1630456 5733648 1630704 5735512 1630704 5733848 1630200 5733272 -1630704 5735512 1630704 5733848 1630456 5733648 1630608 5735424 -1630456 5733648 1630440 5735312 1630608 5735424 1630704 5733848 -1630456 5733648 1630120 5735160 1630440 5735312 1630704 5733848 -1630456 5733648 1629696 5735040 1630120 5735160 1630704 5733848 -1630456 5733648 1629168 5734864 1629696 5735040 1630704 5733848 -1630120 5735160 1630440 5735312 1630704 5733848 1629696 5735040 -1630440 5735312 1630608 5735424 1630704 5733848 1630120 5735160 -1630704 5733848 1630200 5733272 1630456 5733648 1629696 5735040 -1630608 5735424 1630704 5735512 1630704 5733848 1630440 5735312 -1630704 5733848 1630704 5735512 1751256 5699792 1743888 5687504 -1630704 5735512 1751256 5699792 1630704 5733848 1630608 5735424 -1629928 5726696 1629304 5731208 1629320 5731248 1630704 5733848 -1751256 5699792 1630736 5733944 1630704 5735512 1630704 5735568 -1751256 5699792 1630736 5733944 1630704 5735568 1631312 5744824 -1630704 5735568 1630952 5743928 1631312 5744824 1630736 5733944 -1630736 5733944 1630704 5735512 1630704 5735568 1631312 5744824 -1630704 5735512 1630688 5735528 1630704 5735568 1630736 5733944 -1630704 5733848 1630736 5733944 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1630736 5733944 -1630704 5733848 1630736 5733944 1743888 5687504 1629944 5726576 -1743888 5687504 1743800 5687320 1629944 5726576 1630736 5733944 -1630704 5733848 1630736 5733944 1629944 5726576 1629944 5726624 -1630736 5733944 1743888 5687504 1629944 5726576 1629944 5726624 -1630704 5733848 1630736 5733944 1629944 5726624 1629928 5726696 -1630736 5733944 1751256 5699792 1743888 5687504 1629944 5726576 -1630704 5733848 1630704 5735512 1630736 5733944 1629944 5726624 -1630704 5735512 1630736 5733944 1630704 5733848 1630608 5735424 -1630704 5733848 1630440 5735312 1630608 5735424 1630736 5733944 -1630704 5733848 1630120 5735160 1630440 5735312 1630736 5733944 -1630704 5733848 1629696 5735040 1630120 5735160 1630736 5733944 -1630704 5733848 1630456 5733648 1629696 5735040 1630736 5733944 -1630456 5733648 1629168 5734864 1629696 5735040 1630736 5733944 -1629696 5735040 1630120 5735160 1630736 5733944 1630456 5733648 -1630120 5735160 1630440 5735312 1630736 5733944 1629696 5735040 -1630440 5735312 1630608 5735424 1630736 5733944 1630120 5735160 -1630736 5733944 1629944 5726624 1630704 5733848 1630456 5733648 -1630608 5735424 1630704 5735512 1630736 5733944 1630440 5735312 -1751256 5699792 1743888 5687504 1630736 5733944 1631312 5744824 -1630736 5733944 1630608 5735424 1630704 5735512 1630704 5735568 -1751256 5699792 1630736 5733944 1631312 5744824 1760125 5760125 -1630120 5735160 1630720 5734000 1630736 5733944 1629696 5735040 -1630736 5733944 1630456 5733648 1629696 5735040 1630720 5734000 -1630456 5733648 1629168 5734864 1629696 5735040 1630720 5734000 -1630736 5733944 1630704 5733848 1630456 5733648 1630720 5734000 -1630456 5733648 1629696 5735040 1630720 5734000 1630704 5733848 -1629696 5735040 1630120 5735160 1630720 5734000 1630456 5733648 -1630736 5733944 1630720 5734000 1630440 5735312 1630608 5735424 -1630736 5733944 1630720 5734000 1630608 5735424 1630704 5735512 -1630720 5734000 1630440 5735312 1630608 5735424 1630704 5735512 -1630720 5734000 1630704 5735512 1630736 5733944 1630704 5733848 -1630736 5733944 1630720 5734000 1630704 5735512 1630704 5735568 -1630720 5734000 1630120 5735160 1630440 5735312 1630608 5735424 -1630120 5735160 1630440 5735312 1630720 5734000 1629696 5735040 -1629696 5735040 1630664 5734072 1630720 5734000 1630456 5733648 -1629696 5735040 1630664 5734072 1630456 5733648 1629168 5734864 -1630720 5734000 1630704 5733848 1630456 5733648 1630664 5734072 -1630720 5734000 1630736 5733944 1630704 5733848 1630664 5734072 -1630456 5733648 1629696 5735040 1630664 5734072 1630704 5733848 -1629696 5735040 1630120 5735160 1630664 5734072 1630456 5733648 -1630664 5734072 1630120 5735160 1630720 5734000 1630704 5733848 -1630720 5734000 1630664 5734072 1630120 5735160 1630440 5735312 -1630720 5734000 1630664 5734072 1630440 5735312 1630608 5735424 -1630720 5734000 1630664 5734072 1630608 5735424 1630704 5735512 -1630720 5734000 1630664 5734072 1630704 5735512 1630736 5733944 -1630664 5734072 1630440 5735312 1630608 5735424 1630704 5735512 -1630720 5734000 1630704 5733848 1630664 5734072 1630704 5735512 -1630664 5734072 1630120 5735160 1630440 5735312 1630608 5735424 -1630664 5734072 1629696 5735040 1630120 5735160 1630440 5735312 -1629696 5735040 1630568 5734144 1630456 5733648 1629168 5734864 -1630456 5733648 1629624 5733200 1629168 5734864 1630568 5734144 -1629624 5733200 1629432 5733200 1629168 5734864 1630568 5734144 -1630456 5733648 1630200 5733272 1629624 5733200 1630568 5734144 -1630568 5734144 1630664 5734072 1630456 5733648 1629624 5733200 -1629168 5734864 1629696 5735040 1630568 5734144 1629624 5733200 -1630456 5733648 1630568 5734144 1630664 5734072 1630704 5733848 -1630456 5733648 1629624 5733200 1630568 5734144 1630704 5733848 -1630664 5734072 1630720 5734000 1630704 5733848 1630568 5734144 -1630568 5734144 1629696 5735040 1630664 5734072 1630704 5733848 -1630664 5734072 1630568 5734144 1629696 5735040 1630120 5735160 -1630664 5734072 1630704 5733848 1630568 5734144 1630120 5735160 -1629696 5735040 1630120 5735160 1630568 5734144 1629168 5734864 -1630664 5734072 1630568 5734144 1630120 5735160 1630440 5735312 -1630664 5734072 1630704 5733848 1630568 5734144 1630440 5735312 -1630568 5734144 1629696 5735040 1630120 5735160 1630440 5735312 -1630664 5734072 1630568 5734144 1630440 5735312 1630608 5735424 -1630664 5734072 1630568 5734144 1630608 5735424 1630704 5735512 -1630664 5734072 1630704 5733848 1630568 5734144 1630608 5735424 -1630568 5734144 1630120 5735160 1630440 5735312 1630608 5735424 -1629624 5733200 1630392 5734184 1630568 5734144 1630456 5733648 -1629168 5734864 1630392 5734184 1629624 5733200 1629432 5733200 -1629168 5734864 1630392 5734184 1629432 5733200 1628648 5734680 -1629624 5733200 1630392 5734184 1630456 5733648 1630200 5733272 -1630392 5734184 1629168 5734864 1630568 5734144 1630456 5733648 -1630568 5734144 1630704 5733848 1630456 5733648 1630392 5734184 -1629168 5734864 1630568 5734144 1630392 5734184 1629432 5733200 -1629624 5733200 1629432 5733200 1630392 5734184 1630456 5733648 -1630568 5734144 1630392 5734184 1629168 5734864 1629696 5735040 -1630568 5734144 1630456 5733648 1630392 5734184 1629696 5735040 -1630392 5734184 1629432 5733200 1629168 5734864 1629696 5735040 -1630568 5734144 1630392 5734184 1629696 5735040 1630120 5735160 -1630568 5734144 1630456 5733648 1630392 5734184 1630120 5735160 -1630392 5734184 1629168 5734864 1629696 5735040 1630120 5735160 -1630568 5734144 1630392 5734184 1630120 5735160 1630440 5735312 -1630568 5734144 1630456 5733648 1630392 5734184 1630440 5735312 -1630392 5734184 1629696 5735040 1630120 5735160 1630440 5735312 -1630568 5734144 1630392 5734184 1630440 5735312 1630608 5735424 -1629168 5734864 1630224 5734232 1629432 5733200 1628648 5734680 -1629432 5733200 1630224 5734232 1630392 5734184 1629624 5733200 -1630392 5734184 1630224 5734232 1629168 5734864 1629696 5735040 -1630224 5734232 1629696 5735040 1630392 5734184 1629624 5733200 -1630392 5734184 1630456 5733648 1629624 5733200 1630224 5734232 -1630392 5734184 1630568 5734144 1630456 5733648 1630224 5734232 -1629624 5733200 1629432 5733200 1630224 5734232 1630456 5733648 -1630456 5733648 1630200 5733272 1629624 5733200 1630224 5734232 -1629624 5733200 1629432 5733200 1630224 5734232 1630200 5733272 -1630200 5733272 1629800 5733120 1629624 5733200 1630224 5734232 -1630392 5734184 1630456 5733648 1630224 5734232 1629696 5735040 -1630456 5733648 1630200 5733272 1630224 5734232 1630392 5734184 -1630224 5734232 1629432 5733200 1629168 5734864 1629696 5735040 -1629432 5733200 1629168 5734864 1630224 5734232 1629624 5733200 -1630392 5734184 1630224 5734232 1629696 5735040 1630120 5735160 -1630224 5734232 1629168 5734864 1629696 5735040 1630120 5735160 -1630392 5734184 1630456 5733648 1630224 5734232 1630120 5735160 -1630392 5734184 1630224 5734232 1630120 5735160 1630440 5735312 -1629168 5734864 1630048 5734248 1629432 5733200 1628648 5734680 -1630224 5734232 1630048 5734248 1629168 5734864 1629696 5735040 -1630224 5734232 1630048 5734248 1629696 5735040 1630120 5735160 -1630048 5734248 1629168 5734864 1629696 5735040 1630120 5735160 -1630224 5734232 1629432 5733200 1630048 5734248 1630120 5735160 -1629432 5733200 1630048 5734248 1630224 5734232 1629624 5733200 -1630224 5734232 1630200 5733272 1629624 5733200 1630048 5734248 -1630200 5733272 1629800 5733120 1629624 5733200 1630048 5734248 -1630224 5734232 1630456 5733648 1630200 5733272 1630048 5734248 -1630200 5733272 1629624 5733200 1630048 5734248 1630456 5733648 -1630224 5734232 1630392 5734184 1630456 5733648 1630048 5734248 -1630048 5734248 1630120 5735160 1630224 5734232 1630456 5733648 -1629624 5733200 1629432 5733200 1630048 5734248 1630200 5733272 -1630048 5734248 1629432 5733200 1629168 5734864 1629696 5735040 -1629432 5733200 1629168 5734864 1630048 5734248 1629624 5733200 -1630224 5734232 1630048 5734248 1630120 5735160 1630392 5734184 -1629168 5734864 1629920 5734216 1629432 5733200 1628648 5734680 -1629168 5734864 1629920 5734216 1628648 5734680 1628944 5734832 -1628648 5734680 1628656 5734712 1628944 5734832 1629920 5734216 -1629432 5733200 1628512 5734776 1628648 5734680 1629920 5734216 -1629920 5734216 1629432 5733200 1628648 5734680 1628944 5734832 -1630048 5734248 1629920 5734216 1629168 5734864 1629696 5735040 -1630048 5734248 1629920 5734216 1629696 5735040 1630120 5735160 -1630048 5734248 1629432 5733200 1629920 5734216 1629696 5735040 -1629432 5733200 1629920 5734216 1630048 5734248 1629624 5733200 -1630048 5734248 1630200 5733272 1629624 5733200 1629920 5734216 -1630048 5734248 1630456 5733648 1630200 5733272 1629920 5734216 -1630200 5733272 1629800 5733120 1629624 5733200 1629920 5734216 -1630048 5734248 1630224 5734232 1630456 5733648 1629920 5734216 -1630200 5733272 1629624 5733200 1629920 5734216 1630456 5733648 -1629920 5734216 1629696 5735040 1630048 5734248 1630456 5733648 -1629624 5733200 1629432 5733200 1629920 5734216 1630200 5733272 -1629168 5734864 1629696 5735040 1629920 5734216 1628944 5734832 -1629920 5734216 1629624 5733200 1629432 5733200 1628648 5734680 -1628648 5734680 1629760 5734112 1629432 5733200 1628512 5734776 -1629920 5734216 1629760 5734112 1628648 5734680 1628944 5734832 -1629920 5734216 1629760 5734112 1628944 5734832 1629168 5734864 -1628648 5734680 1628656 5734712 1628944 5734832 1629760 5734112 -1629760 5734112 1628648 5734680 1628944 5734832 1629168 5734864 -1629920 5734216 1629760 5734112 1629168 5734864 1629696 5735040 -1629760 5734112 1628944 5734832 1629168 5734864 1629696 5735040 -1629920 5734216 1629760 5734112 1629696 5735040 1630048 5734248 -1629920 5734216 1629432 5733200 1629760 5734112 1629696 5735040 -1629432 5733200 1629760 5734112 1629920 5734216 1629624 5733200 -1629920 5734216 1630200 5733272 1629624 5733200 1629760 5734112 -1630200 5733272 1629800 5733120 1629624 5733200 1629760 5734112 -1629920 5734216 1630456 5733648 1630200 5733272 1629760 5734112 -1629920 5734216 1630048 5734248 1630456 5733648 1629760 5734112 -1630200 5733272 1629624 5733200 1629760 5734112 1630456 5733648 -1629760 5734112 1629696 5735040 1629920 5734216 1630456 5733648 -1629624 5733200 1629432 5733200 1629760 5734112 1630200 5733272 -1629760 5734112 1629432 5733200 1628648 5734680 1628944 5734832 -1629432 5733200 1628648 5734680 1629760 5734112 1629624 5733200 -1628648 5734680 1629664 5734016 1629432 5733200 1628512 5734776 -1629760 5734112 1629664 5734016 1628648 5734680 1628944 5734832 -1628648 5734680 1628656 5734712 1628944 5734832 1629664 5734016 -1629760 5734112 1629664 5734016 1628944 5734832 1629168 5734864 -1629760 5734112 1629664 5734016 1629168 5734864 1629696 5735040 -1629664 5734016 1628648 5734680 1628944 5734832 1629168 5734864 -1629760 5734112 1629432 5733200 1629664 5734016 1629168 5734864 -1629432 5733200 1629664 5734016 1629760 5734112 1629624 5733200 -1629760 5734112 1630200 5733272 1629624 5733200 1629664 5734016 -1630200 5733272 1629800 5733120 1629624 5733200 1629664 5734016 -1629760 5734112 1630456 5733648 1630200 5733272 1629664 5734016 -1629760 5734112 1629920 5734216 1630456 5733648 1629664 5734016 -1630200 5733272 1629624 5733200 1629664 5734016 1630456 5733648 -1629664 5734016 1629168 5734864 1629760 5734112 1630456 5733648 -1629624 5733200 1629432 5733200 1629664 5734016 1630200 5733272 -1629664 5734016 1629432 5733200 1628648 5734680 1628944 5734832 -1629432 5733200 1628648 5734680 1629664 5734016 1629624 5733200 -1628648 5734680 1629432 5733824 1629432 5733200 1628512 5734776 -1629664 5734016 1629432 5733824 1628648 5734680 1628944 5734832 -1628648 5734680 1628656 5734712 1628944 5734832 1629432 5733824 -1629664 5734016 1629432 5733824 1628944 5734832 1629168 5734864 -1629664 5734016 1629432 5733824 1629168 5734864 1629760 5734112 -1629432 5733824 1628648 5734680 1628944 5734832 1629168 5734864 -1629664 5734016 1629432 5733200 1629432 5733824 1629168 5734864 -1629432 5733200 1629432 5733824 1629664 5734016 1629624 5733200 -1629664 5734016 1630200 5733272 1629624 5733200 1629432 5733824 -1629432 5733824 1629168 5734864 1629664 5734016 1629624 5733200 -1629432 5733824 1629432 5733200 1628648 5734680 1628944 5734832 -1629432 5733200 1628648 5734680 1629432 5733824 1629624 5733200 -1629432 5733200 1629016 5733664 1628512 5734776 1628648 5734680 -1628512 5734776 1629016 5733664 1628376 5731232 1626328 5735392 -1628512 5734776 1629016 5733664 1626328 5735392 1626480 5735432 -1629016 5733664 1628376 5731232 1626328 5735392 1626480 5735432 -1628512 5734776 1629016 5733664 1626480 5735432 1626712 5735520 -1629432 5733200 1629016 5733664 1628648 5734680 1629432 5733824 -1629016 5733664 1628512 5734776 1628648 5734680 1629432 5733824 -1629432 5733200 1628376 5731232 1629016 5733664 1629432 5733824 -1628376 5731232 1628336 5731192 1626328 5735392 1629016 5733664 -1628376 5731232 1629016 5733664 1629432 5733200 1628640 5731360 -1629432 5733200 1628768 5731368 1628640 5731360 1629016 5733664 -1629016 5733664 1629432 5733824 1629432 5733200 1628640 5731360 -1628648 5734680 1628944 5734832 1629432 5733824 1629016 5733664 -1629016 5733664 1626480 5735432 1628512 5734776 1628648 5734680 -1629432 5733200 1629016 5733664 1629432 5733824 1629624 5733200 -1629016 5733664 1628640 5731360 1628376 5731232 1626328 5735392 -1629016 5733664 1628832 5733560 1626328 5735392 1626480 5735432 -1629016 5733664 1628832 5733560 1626480 5735432 1628512 5734776 -1628832 5733560 1626328 5735392 1626480 5735432 1628512 5734776 -1626480 5735432 1626712 5735520 1628512 5734776 1628832 5733560 -1628832 5733560 1628376 5731232 1626328 5735392 1626480 5735432 -1626328 5735392 1628832 5733560 1628376 5731232 1628336 5731192 -1626328 5735392 1626480 5735432 1628832 5733560 1628336 5731192 -1628832 5733560 1629016 5733664 1628376 5731232 1628336 5731192 -1626328 5735392 1628832 5733560 1628336 5731192 1625176 5734984 -1628336 5731192 1625040 5734896 1625176 5734984 1628832 5733560 -1628336 5731192 1627440 5730528 1625040 5734896 1628832 5733560 -1626328 5735392 1626480 5735432 1628832 5733560 1625176 5734984 -1628832 5733560 1628376 5731232 1628336 5731192 1625040 5734896 -1626328 5735392 1628832 5733560 1625176 5734984 1626192 5735400 -1625176 5734984 1626328 5735392 1628832 5733560 1625040 5734896 -1629016 5733664 1628832 5733560 1628512 5734776 1628648 5734680 -1629016 5733664 1628832 5733560 1628648 5734680 1629432 5733824 -1628832 5733560 1626480 5735432 1628512 5734776 1628648 5734680 -1628376 5731232 1628832 5733560 1629016 5733664 1628640 5731360 -1628376 5731232 1628336 5731192 1628832 5733560 1628640 5731360 -1629016 5733664 1629432 5733200 1628640 5731360 1628832 5733560 -1629432 5733200 1628768 5731368 1628640 5731360 1628832 5733560 -1629016 5733664 1629432 5733824 1629432 5733200 1628832 5733560 -1628640 5731360 1628376 5731232 1628832 5733560 1629432 5733200 -1629016 5733664 1629432 5733200 1628832 5733560 1628648 5734680 -1628832 5733560 1628768 5733488 1625040 5734896 1625176 5734984 -1625040 5734896 1628768 5733488 1628336 5731192 1627440 5730528 -1628832 5733560 1628336 5731192 1628768 5733488 1625176 5734984 -1628768 5733488 1627440 5730528 1625040 5734896 1625176 5734984 -1628768 5733488 1628832 5733560 1628336 5731192 1627440 5730528 -1625040 5734896 1628768 5733488 1627440 5730528 1624728 5734744 -1628336 5731192 1628768 5733488 1628832 5733560 1628376 5731232 -1628768 5733488 1625176 5734984 1628832 5733560 1628376 5731232 -1628832 5733560 1628640 5731360 1628376 5731232 1628768 5733488 -1628832 5733560 1628640 5731360 1628768 5733488 1625176 5734984 -1628336 5731192 1627440 5730528 1628768 5733488 1628376 5731232 -1628376 5731232 1628336 5731192 1628768 5733488 1628640 5731360 -1628336 5731192 1627560 5730576 1627440 5730528 1628768 5733488 -1628832 5733560 1628768 5733488 1625176 5734984 1626328 5735392 -1628768 5733488 1625040 5734896 1625176 5734984 1626328 5735392 -1628832 5733560 1628768 5733488 1626328 5735392 1626480 5735432 -1628832 5733560 1628768 5733488 1626480 5735432 1628512 5734776 -1626480 5735432 1626712 5735520 1628512 5734776 1628768 5733488 -1628832 5733560 1628768 5733488 1628512 5734776 1628648 5734680 -1628768 5733488 1626480 5735432 1628512 5734776 1628648 5734680 -1628768 5733488 1626328 5735392 1626480 5735432 1628512 5734776 -1628832 5733560 1628640 5731360 1628768 5733488 1628648 5734680 -1625176 5734984 1626192 5735400 1626328 5735392 1628768 5733488 -1628768 5733488 1625176 5734984 1626328 5735392 1626480 5735432 -1628832 5733560 1628768 5733488 1628648 5734680 1629016 5733664 -1628832 5733560 1629432 5733200 1628640 5731360 1628768 5733488 -1629432 5733200 1628768 5731368 1628640 5731360 1628768 5733488 -1628832 5733560 1629432 5733200 1628768 5733488 1628648 5734680 -1628640 5731360 1628376 5731232 1628768 5733488 1628768 5731368 -1629432 5733200 1629208 5731336 1628768 5731368 1628768 5733488 -1628832 5733560 1629016 5733664 1629432 5733200 1628768 5733488 -1629432 5733200 1628768 5731368 1628768 5733488 1628832 5733560 -1627440 5730528 1628736 5733424 1628768 5733488 1628336 5731192 -1628768 5733488 1628736 5733424 1625040 5734896 1625176 5734984 -1628768 5733488 1628736 5733424 1625176 5734984 1626328 5735392 -1628736 5733424 1625040 5734896 1625176 5734984 1626328 5735392 -1628736 5733424 1626328 5735392 1628768 5733488 1628336 5731192 -1628768 5733488 1628376 5731232 1628336 5731192 1628736 5733424 -1628336 5731192 1627440 5730528 1628736 5733424 1628376 5731232 -1628768 5733488 1628376 5731232 1628736 5733424 1626328 5735392 -1628736 5733424 1627440 5730528 1625040 5734896 1625176 5734984 -1627440 5730528 1625040 5734896 1628736 5733424 1628336 5731192 -1625040 5734896 1628736 5733424 1627440 5730528 1624728 5734744 -1628768 5733488 1628640 5731360 1628376 5731232 1628736 5733424 -1628768 5733488 1628768 5731368 1628640 5731360 1628736 5733424 -1628768 5733488 1629432 5733200 1628768 5731368 1628736 5733424 -1628768 5731368 1628640 5731360 1628736 5733424 1629432 5733200 -1628768 5733488 1629432 5733200 1628736 5733424 1626328 5735392 -1628376 5731232 1628336 5731192 1628736 5733424 1628640 5731360 -1628640 5731360 1628376 5731232 1628736 5733424 1628768 5731368 -1627440 5730528 1628736 5733424 1628336 5731192 1627560 5730576 -1629432 5733200 1629208 5731336 1628768 5731368 1628736 5733424 -1625176 5734984 1626192 5735400 1626328 5735392 1628736 5733424 -1628768 5733488 1628736 5733424 1626328 5735392 1626480 5735432 -1628736 5733424 1625176 5734984 1626328 5735392 1626480 5735432 -1628768 5733488 1628736 5733424 1626480 5735432 1628512 5734776 -1628768 5733488 1628736 5733424 1628512 5734776 1628648 5734680 -1626480 5735432 1626712 5735520 1628512 5734776 1628736 5733424 -1628768 5733488 1629432 5733200 1628736 5733424 1628512 5734776 -1628736 5733424 1626328 5735392 1626480 5735432 1628512 5734776 -1628768 5733488 1628832 5733560 1629432 5733200 1628736 5733424 -1629432 5733200 1628768 5731368 1628736 5733424 1628832 5733560 -1628768 5733488 1628832 5733560 1628736 5733424 1628512 5734776 -1628832 5733560 1629016 5733664 1629432 5733200 1628736 5733424 -1628736 5733424 1628688 5733368 1625040 5734896 1625176 5734984 -1628736 5733424 1628688 5733368 1625176 5734984 1626328 5735392 -1628736 5733424 1628688 5733368 1626328 5735392 1626480 5735432 -1628688 5733368 1625176 5734984 1626328 5735392 1626480 5735432 -1628688 5733368 1625040 5734896 1625176 5734984 1626328 5735392 -1628736 5733424 1627440 5730528 1628688 5733368 1626480 5735432 -1627440 5730528 1628688 5733368 1628736 5733424 1628336 5731192 -1628736 5733424 1628376 5731232 1628336 5731192 1628688 5733368 -1628736 5733424 1628640 5731360 1628376 5731232 1628688 5733368 -1628376 5731232 1628336 5731192 1628688 5733368 1628640 5731360 -1628688 5733368 1626480 5735432 1628736 5733424 1628640 5731360 -1628336 5731192 1627440 5730528 1628688 5733368 1628376 5731232 -1628688 5733368 1627440 5730528 1625040 5734896 1625176 5734984 -1627440 5730528 1625040 5734896 1628688 5733368 1628336 5731192 -1625040 5734896 1628688 5733368 1627440 5730528 1624728 5734744 -1628736 5733424 1628768 5731368 1628640 5731360 1628688 5733368 -1628736 5733424 1629432 5733200 1628768 5731368 1628688 5733368 -1628736 5733424 1628832 5733560 1629432 5733200 1628688 5733368 -1628640 5731360 1628376 5731232 1628688 5733368 1628768 5731368 -1628736 5733424 1629432 5733200 1628688 5733368 1626480 5735432 -1628768 5731368 1628640 5731360 1628688 5733368 1629432 5733200 -1627440 5730528 1628688 5733368 1628336 5731192 1627560 5730576 -1629432 5733200 1629208 5731336 1628768 5731368 1628688 5733368 -1625176 5734984 1626192 5735400 1626328 5735392 1628688 5733368 -1628736 5733424 1628688 5733368 1626480 5735432 1628512 5734776 -1626480 5735432 1626712 5735520 1628512 5734776 1628688 5733368 -1628688 5733368 1626328 5735392 1626480 5735432 1628512 5734776 -1628736 5733424 1628688 5733368 1628512 5734776 1628768 5733488 -1628512 5734776 1628648 5734680 1628768 5733488 1628688 5733368 -1628736 5733424 1629432 5733200 1628688 5733368 1628768 5733488 -1628688 5733368 1626480 5735432 1628512 5734776 1628768 5733488 -1628688 5733368 1628664 5733376 1625040 5734896 1625176 5734984 -1628688 5733368 1628664 5733376 1625176 5734984 1626328 5735392 -1628688 5733368 1628664 5733376 1626328 5735392 1626480 5735432 -1628688 5733368 1628664 5733376 1626480 5735432 1628512 5734776 -1626480 5735432 1626712 5735520 1628512 5734776 1628664 5733376 -1628664 5733376 1626328 5735392 1626480 5735432 1628512 5734776 -1628664 5733376 1625176 5734984 1626328 5735392 1626480 5735432 -1628664 5733376 1625040 5734896 1625176 5734984 1626328 5735392 -1628688 5733368 1627440 5730528 1628664 5733376 1628512 5734776 -1627440 5730528 1628664 5733376 1628688 5733368 1628336 5731192 -1628688 5733368 1628376 5731232 1628336 5731192 1628664 5733376 -1628688 5733368 1628640 5731360 1628376 5731232 1628664 5733376 -1628688 5733368 1628768 5731368 1628640 5731360 1628664 5733376 -1628376 5731232 1628336 5731192 1628664 5733376 1628640 5731360 -1628664 5733376 1628512 5734776 1628688 5733368 1628640 5731360 -1628336 5731192 1627440 5730528 1628664 5733376 1628376 5731232 -1628664 5733376 1627440 5730528 1625040 5734896 1625176 5734984 -1627440 5730528 1625040 5734896 1628664 5733376 1628336 5731192 -1625040 5734896 1628664 5733376 1627440 5730528 1624728 5734744 -1627440 5730528 1628664 5733376 1628336 5731192 1627560 5730576 -1625176 5734984 1626192 5735400 1626328 5735392 1628664 5733376 -1628688 5733368 1628664 5733376 1628512 5734776 1628768 5733488 -1628512 5734776 1628648 5734680 1628768 5733488 1628664 5733376 -1628648 5734680 1628832 5733560 1628768 5733488 1628664 5733376 -1628664 5733376 1626480 5735432 1628512 5734776 1628648 5734680 -1628688 5733368 1628664 5733376 1628768 5733488 1628736 5733424 -1628688 5733368 1628640 5731360 1628664 5733376 1628736 5733424 -1628768 5733488 1628736 5733424 1628664 5733376 1628648 5734680 -1628336 5731192 1628648 5733280 1628664 5733376 1628376 5731232 -1628664 5733376 1628640 5731360 1628376 5731232 1628648 5733280 -1628664 5733376 1628688 5733368 1628640 5731360 1628648 5733280 -1628688 5733368 1628768 5731368 1628640 5731360 1628648 5733280 -1628688 5733368 1628768 5731368 1628648 5733280 1628664 5733376 -1628640 5731360 1628376 5731232 1628648 5733280 1628768 5731368 -1628376 5731232 1628336 5731192 1628648 5733280 1628640 5731360 -1628648 5733280 1627440 5730528 1628664 5733376 1628688 5733368 -1628664 5733376 1628648 5733280 1627440 5730528 1625040 5734896 -1628664 5733376 1628648 5733280 1625040 5734896 1625176 5734984 -1628664 5733376 1628648 5733280 1625176 5734984 1626328 5735392 -1628664 5733376 1628648 5733280 1626328 5735392 1626480 5735432 -1628648 5733280 1625040 5734896 1625176 5734984 1626328 5735392 -1628664 5733376 1628688 5733368 1628648 5733280 1626328 5735392 -1628648 5733280 1627440 5730528 1625040 5734896 1625176 5734984 -1628648 5733280 1628336 5731192 1627440 5730528 1625040 5734896 -1628336 5731192 1627440 5730528 1628648 5733280 1628376 5731232 -1627440 5730528 1624728 5734744 1625040 5734896 1628648 5733280 -1628688 5733368 1629432 5733200 1628768 5731368 1628648 5733280 -1628688 5733368 1629432 5733200 1628648 5733280 1628664 5733376 -1628688 5733368 1628736 5733424 1629432 5733200 1628648 5733280 -1628736 5733424 1628832 5733560 1629432 5733200 1628648 5733280 -1628688 5733368 1628736 5733424 1628648 5733280 1628664 5733376 -1628768 5731368 1628640 5731360 1628648 5733280 1629432 5733200 -1629432 5733200 1628768 5731368 1628648 5733280 1628736 5733424 -1627440 5730528 1628648 5733280 1628336 5731192 1627560 5730576 -1629432 5733200 1629208 5731336 1628768 5731368 1628648 5733280 -1625176 5734984 1626192 5735400 1626328 5735392 1628648 5733280 -1628648 5733280 1628728 5733192 1628768 5731368 1628640 5731360 -1628648 5733280 1628728 5733192 1628640 5731360 1628376 5731232 -1628728 5733192 1628768 5731368 1628640 5731360 1628376 5731232 -1628648 5733280 1628728 5733192 1628376 5731232 1628336 5731192 -1628648 5733280 1629432 5733200 1628728 5733192 1628376 5731232 -1628728 5733192 1629432 5733200 1628768 5731368 1628640 5731360 -1629432 5733200 1628728 5733192 1628648 5733280 1628736 5733424 -1629432 5733200 1628728 5733192 1628736 5733424 1628832 5733560 -1628648 5733280 1628688 5733368 1628736 5733424 1628728 5733192 -1628648 5733280 1628664 5733376 1628688 5733368 1628728 5733192 -1628728 5733192 1628376 5731232 1628648 5733280 1628688 5733368 -1629432 5733200 1628768 5731368 1628728 5733192 1628832 5733560 -1628728 5733192 1628688 5733368 1628736 5733424 1628832 5733560 -1628768 5731368 1628728 5733192 1629432 5733200 1629208 5731336 -1629432 5733200 1629800 5733120 1629208 5731336 1628728 5733192 -1628768 5731368 1628640 5731360 1628728 5733192 1629208 5731336 -1628728 5733192 1628832 5733560 1629432 5733200 1629208 5731336 -1628768 5731368 1628728 5733192 1629208 5731336 1628864 5731328 -1629432 5733200 1628728 5733192 1628832 5733560 1629016 5733664 -1628736 5733424 1628768 5733488 1628832 5733560 1628728 5733192 -1629208 5731336 1628792 5733136 1629432 5733200 1629800 5733120 -1629432 5733200 1628792 5733136 1628728 5733192 1628832 5733560 -1628728 5733192 1628736 5733424 1628832 5733560 1628792 5733136 -1628792 5733136 1629208 5731336 1628728 5733192 1628736 5733424 -1628832 5733560 1629432 5733200 1628792 5733136 1628736 5733424 -1629432 5733200 1629208 5731336 1628792 5733136 1628832 5733560 -1628728 5733192 1628688 5733368 1628736 5733424 1628792 5733136 -1628728 5733192 1628792 5733136 1629208 5731336 1628768 5731368 -1628728 5733192 1628792 5733136 1628768 5731368 1628640 5731360 -1628728 5733192 1628792 5733136 1628640 5731360 1628376 5731232 -1628728 5733192 1628792 5733136 1628376 5731232 1628648 5733280 -1628792 5733136 1628768 5731368 1628640 5731360 1628376 5731232 -1628728 5733192 1628736 5733424 1628792 5733136 1628376 5731232 -1628792 5733136 1629432 5733200 1629208 5731336 1628768 5731368 -1629208 5731336 1628864 5731328 1628768 5731368 1628792 5733136 -1628792 5733136 1629208 5731336 1628768 5731368 1628640 5731360 -1629432 5733200 1628792 5733136 1628832 5733560 1629016 5733664 -1629432 5733200 1628792 5733136 1629016 5733664 1629432 5733824 -1628792 5733136 1628736 5733424 1628832 5733560 1629016 5733664 -1629432 5733200 1629208 5731336 1628792 5733136 1629016 5733664 -1628736 5733424 1628768 5733488 1628832 5733560 1628792 5733136 -1628736 5733424 1628768 5733488 1628792 5733136 1628728 5733192 -1628832 5733560 1629016 5733664 1628792 5733136 1628768 5733488 -1629208 5731336 1628928 5733096 1629432 5733200 1629800 5733120 -1628792 5733136 1628928 5733096 1629208 5731336 1628768 5731368 -1628792 5733136 1629432 5733200 1628928 5733096 1628768 5731368 -1629432 5733200 1628928 5733096 1628792 5733136 1629016 5733664 -1629432 5733200 1628928 5733096 1629016 5733664 1629432 5733824 -1628928 5733096 1628768 5731368 1628792 5733136 1629016 5733664 -1628928 5733096 1629432 5733200 1629208 5731336 1628768 5731368 -1629432 5733200 1629208 5731336 1628928 5733096 1629016 5733664 -1629208 5731336 1628864 5731328 1628768 5731368 1628928 5733096 -1628792 5733136 1628928 5733096 1628768 5731368 1628640 5731360 -1628792 5733136 1628928 5733096 1628640 5731360 1628376 5731232 -1628928 5733096 1629208 5731336 1628768 5731368 1628640 5731360 -1628792 5733136 1629016 5733664 1628928 5733096 1628640 5731360 -1628792 5733136 1628832 5733560 1629016 5733664 1628928 5733096 -1628792 5733136 1628768 5733488 1628832 5733560 1628928 5733096 -1628792 5733136 1628768 5733488 1628928 5733096 1628640 5731360 -1629016 5733664 1629432 5733200 1628928 5733096 1628832 5733560 -1628832 5733560 1629016 5733664 1628928 5733096 1628768 5733488 -1628792 5733136 1628736 5733424 1628768 5733488 1628928 5733096 -1628792 5733136 1628728 5733192 1628736 5733424 1628928 5733096 -1628768 5733488 1628832 5733560 1628928 5733096 1628736 5733424 -1628792 5733136 1628736 5733424 1628928 5733096 1628640 5731360 -1629208 5731336 1629088 5733088 1629432 5733200 1629800 5733120 -1628928 5733096 1629088 5733088 1629208 5731336 1628768 5731368 -1628928 5733096 1629088 5733088 1628768 5731368 1628640 5731360 -1628928 5733096 1629432 5733200 1629088 5733088 1628768 5731368 -1629432 5733200 1629088 5733088 1628928 5733096 1629016 5733664 -1629432 5733200 1629088 5733088 1629016 5733664 1629432 5733824 -1628928 5733096 1628832 5733560 1629016 5733664 1629088 5733088 -1629088 5733088 1628768 5731368 1628928 5733096 1628832 5733560 -1629016 5733664 1629432 5733200 1629088 5733088 1628832 5733560 -1629432 5733200 1629624 5733200 1629800 5733120 1629088 5733088 -1629208 5731336 1629088 5733088 1629800 5733120 1629272 5731304 -1629208 5731336 1628864 5731328 1628768 5731368 1629088 5733088 -1628928 5733096 1628768 5733488 1628832 5733560 1629088 5733088 -1629208 5731336 1628768 5731368 1629088 5733088 1629800 5733120 -1629088 5733088 1629016 5733664 1629432 5733200 1629800 5733120 -1629624 5733200 1629768 5733656 1630200 5733272 1629800 5733120 -1630200 5733272 1630128 5733192 1629800 5733120 1629768 5733656 -1630128 5733192 1629928 5733104 1629800 5733120 1629768 5733656 -1630128 5733192 1629928 5733104 1629768 5733656 1630200 5733272 -1629800 5733120 1629624 5733200 1629768 5733656 1629928 5733104 -1630128 5733192 1630040 5733128 1629928 5733104 1629768 5733656 -1630200 5733272 1629768 5733656 1629664 5734016 1630456 5733648 -1629664 5734016 1629760 5734112 1630456 5733648 1629768 5733656 -1629760 5734112 1629920 5734216 1630456 5733648 1629768 5733656 -1629920 5734216 1630048 5734248 1630456 5733648 1629768 5733656 -1630048 5734248 1630224 5734232 1630456 5733648 1629768 5733656 -1630048 5734248 1630224 5734232 1629768 5733656 1629920 5734216 -1630224 5734232 1630392 5734184 1630456 5733648 1629768 5733656 -1629920 5734216 1630048 5734248 1629768 5733656 1629760 5734112 -1629760 5734112 1629920 5734216 1629768 5733656 1629664 5734016 -1630456 5733648 1630200 5733272 1629768 5733656 1630224 5734232 -1629664 5734016 1629768 5733656 1629624 5733200 1629432 5733824 -1629624 5733200 1629432 5733200 1629432 5733824 1629768 5733656 -1629432 5733824 1629664 5734016 1629768 5733656 1629432 5733200 -1629432 5733200 1629016 5733664 1629432 5733824 1629768 5733656 -1629624 5733200 1629432 5733200 1629768 5733656 1629800 5733120 -1629768 5733656 1630456 5733648 1630200 5733272 1630128 5733192 -1629768 5733656 1629432 5733824 1629664 5734016 1629760 5734112 -1630224 5734232 1629928 5733664 1629768 5733656 1630048 5734248 -1629768 5733656 1629920 5734216 1630048 5734248 1629928 5733664 -1630048 5734248 1630224 5734232 1629928 5733664 1629920 5734216 -1630456 5733648 1629928 5733664 1630224 5734232 1630392 5734184 -1629768 5733656 1629760 5734112 1629920 5734216 1629928 5733664 -1629920 5734216 1630048 5734248 1629928 5733664 1629760 5734112 -1629768 5733656 1629664 5734016 1629760 5734112 1629928 5733664 -1629760 5734112 1629920 5734216 1629928 5733664 1629664 5734016 -1629768 5733656 1629928 5733664 1630456 5733648 1630200 5733272 -1629768 5733656 1629928 5733664 1630200 5733272 1630128 5733192 -1629768 5733656 1629928 5733664 1630128 5733192 1629928 5733104 -1629768 5733656 1629928 5733664 1629928 5733104 1629800 5733120 -1629928 5733664 1630128 5733192 1629928 5733104 1629800 5733120 -1629768 5733656 1629928 5733664 1629800 5733120 1629624 5733200 -1630128 5733192 1630040 5733128 1629928 5733104 1629928 5733664 -1629928 5733664 1630456 5733648 1630200 5733272 1630128 5733192 -1629928 5733664 1630200 5733272 1630128 5733192 1629928 5733104 -1629928 5733664 1629800 5733120 1629768 5733656 1629664 5734016 -1629768 5733656 1629432 5733824 1629664 5734016 1629928 5733664 -1629928 5733664 1630224 5734232 1630456 5733648 1630200 5733272 -1630224 5734232 1630456 5733648 1629928 5733664 1630048 5734248 -1630456 5733648 1630024 5733688 1630224 5734232 1630392 5734184 -1630456 5733648 1630024 5733688 1630392 5734184 1630568 5734144 -1629928 5733664 1630024 5733688 1630456 5733648 1630200 5733272 -1629928 5733664 1630024 5733688 1630200 5733272 1630128 5733192 -1629928 5733664 1630224 5734232 1630024 5733688 1630200 5733272 -1630224 5734232 1630024 5733688 1629928 5733664 1630048 5734248 -1629928 5733664 1629920 5734216 1630048 5734248 1630024 5733688 -1629928 5733664 1629760 5734112 1629920 5734216 1630024 5733688 -1629920 5734216 1630048 5734248 1630024 5733688 1629760 5734112 -1629928 5733664 1629664 5734016 1629760 5734112 1630024 5733688 -1630024 5733688 1630200 5733272 1629928 5733664 1629760 5734112 -1630048 5734248 1630224 5734232 1630024 5733688 1629920 5734216 -1630456 5733648 1630200 5733272 1630024 5733688 1630392 5734184 -1630024 5733688 1630048 5734248 1630224 5734232 1630392 5734184 -1630456 5733648 1630120 5733728 1630392 5734184 1630568 5734144 -1630392 5734184 1630120 5733728 1630024 5733688 1630224 5734232 -1630024 5733688 1630120 5733728 1630456 5733648 1630200 5733272 -1630024 5733688 1630120 5733728 1630200 5733272 1629928 5733664 -1630120 5733728 1630200 5733272 1630024 5733688 1630224 5734232 -1630024 5733688 1630048 5734248 1630224 5734232 1630120 5733728 -1630224 5734232 1630392 5734184 1630120 5733728 1630048 5734248 -1630024 5733688 1629920 5734216 1630048 5734248 1630120 5733728 -1630024 5733688 1629760 5734112 1629920 5734216 1630120 5733728 -1630024 5733688 1629928 5733664 1629760 5734112 1630120 5733728 -1629920 5734216 1630048 5734248 1630120 5733728 1629760 5734112 -1630024 5733688 1629760 5734112 1630120 5733728 1630200 5733272 -1630048 5734248 1630224 5734232 1630120 5733728 1629920 5734216 -1630120 5733728 1630392 5734184 1630456 5733648 1630200 5733272 -1630392 5734184 1630456 5733648 1630120 5733728 1630224 5734232 -1630456 5733648 1630152 5733752 1630392 5734184 1630568 5734144 -1630120 5733728 1630152 5733752 1630456 5733648 1630200 5733272 -1630392 5734184 1630152 5733752 1630120 5733728 1630224 5734232 -1630120 5733728 1630048 5734248 1630224 5734232 1630152 5733752 -1630120 5733728 1629920 5734216 1630048 5734248 1630152 5733752 -1630048 5734248 1630224 5734232 1630152 5733752 1629920 5734216 -1630120 5733728 1629760 5734112 1629920 5734216 1630152 5733752 -1630120 5733728 1630024 5733688 1629760 5734112 1630152 5733752 -1629920 5734216 1630048 5734248 1630152 5733752 1629760 5734112 -1630152 5733752 1630456 5733648 1630120 5733728 1629760 5734112 -1630224 5734232 1630392 5734184 1630152 5733752 1630048 5734248 -1630392 5734184 1630456 5733648 1630152 5733752 1630224 5734232 -1630224 5734232 1630168 5733792 1630152 5733752 1630048 5734248 -1630152 5733752 1629920 5734216 1630048 5734248 1630168 5733792 -1630152 5733752 1629760 5734112 1629920 5734216 1630168 5733792 -1629920 5734216 1630048 5734248 1630168 5733792 1629760 5734112 -1630152 5733752 1630120 5733728 1629760 5734112 1630168 5733792 -1630120 5733728 1630024 5733688 1629760 5734112 1630168 5733792 -1630024 5733688 1629928 5733664 1629760 5734112 1630168 5733792 -1630120 5733728 1630024 5733688 1630168 5733792 1630152 5733752 -1629760 5734112 1629920 5734216 1630168 5733792 1630024 5733688 -1630048 5734248 1630224 5734232 1630168 5733792 1629920 5734216 -1630168 5733792 1630392 5734184 1630152 5733752 1630120 5733728 -1630152 5733752 1630168 5733792 1630392 5734184 1630456 5733648 -1630392 5734184 1630568 5734144 1630456 5733648 1630168 5733792 -1630152 5733752 1630168 5733792 1630456 5733648 1630120 5733728 -1630152 5733752 1630120 5733728 1630168 5733792 1630456 5733648 -1630168 5733792 1630224 5734232 1630392 5734184 1630456 5733648 -1630224 5734232 1630392 5734184 1630168 5733792 1630048 5734248 -1630168 5733792 1630176 5733832 1630392 5734184 1630456 5733648 -1630392 5734184 1630568 5734144 1630456 5733648 1630176 5733832 -1630568 5734144 1630704 5733848 1630456 5733648 1630176 5733832 -1630168 5733792 1630176 5733832 1630456 5733648 1630152 5733752 -1630456 5733648 1630168 5733792 1630176 5733832 1630568 5734144 -1630168 5733792 1630224 5734232 1630176 5733832 1630456 5733648 -1630224 5734232 1630176 5733832 1630168 5733792 1630048 5734248 -1630168 5733792 1629920 5734216 1630048 5734248 1630176 5733832 -1630168 5733792 1629760 5734112 1629920 5734216 1630176 5733832 -1630168 5733792 1630024 5733688 1629760 5734112 1630176 5733832 -1630024 5733688 1629928 5733664 1629760 5734112 1630176 5733832 -1630168 5733792 1630120 5733728 1630024 5733688 1630176 5733832 -1629760 5734112 1629920 5734216 1630176 5733832 1630024 5733688 -1630168 5733792 1630152 5733752 1630120 5733728 1630176 5733832 -1630024 5733688 1629760 5734112 1630176 5733832 1630120 5733728 -1629920 5734216 1630048 5734248 1630176 5733832 1629760 5734112 -1630176 5733832 1630456 5733648 1630168 5733792 1630120 5733728 -1630048 5734248 1630224 5734232 1630176 5733832 1629920 5734216 -1630176 5733832 1630224 5734232 1630392 5734184 1630568 5734144 -1630224 5734232 1630392 5734184 1630176 5733832 1630048 5734248 -1629920 5734216 1630168 5733856 1630176 5733832 1629760 5734112 -1630176 5733832 1630024 5733688 1629760 5734112 1630168 5733856 -1630024 5733688 1629928 5733664 1629760 5734112 1630168 5733856 -1630176 5733832 1630120 5733728 1630024 5733688 1630168 5733856 -1630176 5733832 1630168 5733792 1630120 5733728 1630168 5733856 -1630024 5733688 1629760 5734112 1630168 5733856 1630120 5733728 -1630168 5733792 1630152 5733752 1630120 5733728 1630168 5733856 -1630120 5733728 1630024 5733688 1630168 5733856 1630168 5733792 -1629760 5734112 1629920 5734216 1630168 5733856 1630024 5733688 -1630176 5733832 1630168 5733856 1630048 5734248 1630224 5734232 -1630168 5733856 1630224 5734232 1630176 5733832 1630168 5733792 -1630176 5733832 1630168 5733856 1630224 5734232 1630392 5734184 -1630168 5733856 1630048 5734248 1630224 5734232 1630392 5734184 -1630176 5733832 1630168 5733856 1630392 5734184 1630568 5734144 -1630176 5733832 1630168 5733792 1630168 5733856 1630392 5734184 -1630168 5733856 1629920 5734216 1630048 5734248 1630224 5734232 -1629920 5734216 1630048 5734248 1630168 5733856 1629760 5734112 -1629760 5734112 1630128 5733880 1630024 5733688 1629928 5733664 -1630024 5733688 1630128 5733880 1630168 5733856 1630120 5733728 -1629760 5734112 1630128 5733880 1629928 5733664 1629664 5734016 -1630168 5733856 1630168 5733792 1630120 5733728 1630128 5733880 -1630168 5733856 1630176 5733832 1630168 5733792 1630128 5733880 -1630120 5733728 1630024 5733688 1630128 5733880 1630168 5733792 -1630168 5733792 1630152 5733752 1630120 5733728 1630128 5733880 -1630168 5733792 1630120 5733728 1630128 5733880 1630176 5733832 -1630168 5733856 1630128 5733880 1629760 5734112 1629920 5734216 -1630128 5733880 1629920 5734216 1630168 5733856 1630176 5733832 -1630168 5733856 1630128 5733880 1629920 5734216 1630048 5734248 -1630128 5733880 1629760 5734112 1629920 5734216 1630048 5734248 -1630168 5733856 1630128 5733880 1630048 5734248 1630224 5734232 -1630168 5733856 1630128 5733880 1630224 5734232 1630392 5734184 -1630168 5733856 1630176 5733832 1630128 5733880 1630224 5734232 -1630128 5733880 1629920 5734216 1630048 5734248 1630224 5734232 -1629760 5734112 1629920 5734216 1630128 5733880 1629928 5733664 -1630128 5733880 1630120 5733728 1630024 5733688 1629928 5733664 -1629928 5733664 1630040 5733912 1630128 5733880 1630024 5733688 -1629760 5734112 1630040 5733912 1629928 5733664 1629664 5734016 -1629928 5733664 1629768 5733656 1629664 5734016 1630040 5733912 -1629664 5734016 1629760 5734112 1630040 5733912 1629768 5733656 -1629768 5733656 1629432 5733824 1629664 5734016 1630040 5733912 -1630128 5733880 1630040 5733912 1629760 5734112 1629920 5734216 -1630128 5733880 1630040 5733912 1629920 5734216 1630048 5734248 -1630128 5733880 1630040 5733912 1630048 5734248 1630224 5734232 -1630040 5733912 1629920 5734216 1630048 5734248 1630224 5734232 -1630128 5733880 1630040 5733912 1630224 5734232 1630168 5733856 -1630040 5733912 1629760 5734112 1629920 5734216 1630048 5734248 -1630040 5733912 1630224 5734232 1630128 5733880 1630024 5733688 -1630128 5733880 1630120 5733728 1630024 5733688 1630040 5733912 -1630024 5733688 1629928 5733664 1630040 5733912 1630120 5733728 -1630128 5733880 1630168 5733792 1630120 5733728 1630040 5733912 -1630128 5733880 1630120 5733728 1630040 5733912 1630224 5734232 -1629760 5734112 1629920 5734216 1630040 5733912 1629664 5734016 -1629928 5733664 1629768 5733656 1630040 5733912 1630024 5733688 -1630040 5733912 1629952 5733912 1629664 5734016 1629760 5734112 -1629768 5733656 1629952 5733912 1630040 5733912 1629928 5733664 -1629768 5733656 1629664 5734016 1629952 5733912 1629928 5733664 -1629664 5734016 1629952 5733912 1629768 5733656 1629432 5733824 -1630040 5733912 1629952 5733912 1629760 5734112 1629920 5734216 -1629952 5733912 1629664 5734016 1629760 5734112 1629920 5734216 -1630040 5733912 1629952 5733912 1629920 5734216 1630048 5734248 -1630040 5733912 1629928 5733664 1629952 5733912 1629920 5734216 -1630040 5733912 1630024 5733688 1629928 5733664 1629952 5733912 -1630040 5733912 1630120 5733728 1630024 5733688 1629952 5733912 -1629928 5733664 1629768 5733656 1629952 5733912 1630024 5733688 -1630040 5733912 1630024 5733688 1629952 5733912 1629920 5734216 -1629952 5733912 1629768 5733656 1629664 5734016 1629760 5734112 -1629768 5733656 1629880 5733880 1629952 5733912 1629928 5733664 -1629880 5733880 1629664 5734016 1629952 5733912 1629928 5733664 -1629768 5733656 1629664 5734016 1629880 5733880 1629928 5733664 -1629952 5733912 1630024 5733688 1629928 5733664 1629880 5733880 -1629952 5733912 1630024 5733688 1629880 5733880 1629664 5734016 -1629928 5733664 1629768 5733656 1629880 5733880 1630024 5733688 -1629664 5734016 1629880 5733880 1629768 5733656 1629432 5733824 -1629952 5733912 1630040 5733912 1630024 5733688 1629880 5733880 -1629952 5733912 1629880 5733880 1629664 5734016 1629760 5734112 -1629952 5733912 1630024 5733688 1629880 5733880 1629760 5734112 -1629880 5733880 1629768 5733656 1629664 5734016 1629760 5734112 -1629952 5733912 1629880 5733880 1629760 5734112 1629920 5734216 -1629880 5733880 1629840 5733848 1629664 5734016 1629760 5734112 -1629768 5733656 1629840 5733848 1629880 5733880 1629928 5733664 -1629880 5733880 1630024 5733688 1629928 5733664 1629840 5733848 -1629840 5733848 1629664 5734016 1629880 5733880 1629928 5733664 -1629768 5733656 1629664 5734016 1629840 5733848 1629928 5733664 -1629664 5734016 1629840 5733848 1629768 5733656 1629432 5733824 -1629840 5733848 1629768 5733800 1629664 5734016 1629880 5733880 -1629768 5733656 1629768 5733800 1629840 5733848 1629928 5733664 -1629840 5733848 1629880 5733880 1629928 5733664 1629768 5733800 -1629768 5733800 1629664 5734016 1629840 5733848 1629928 5733664 -1629768 5733656 1629664 5734016 1629768 5733800 1629928 5733664 -1629664 5734016 1629768 5733800 1629768 5733656 1629432 5733824 -1629664 5734016 1629840 5733848 1629768 5733800 1629432 5733824 -1629768 5733800 1629928 5733664 1629768 5733656 1629432 5733824 -1629768 5733656 1629432 5733200 1629432 5733824 1629768 5733800 -1629768 5733656 1629728 5733768 1629768 5733800 1629928 5733664 -1629432 5733824 1629728 5733768 1629768 5733656 1629432 5733200 -1629768 5733800 1629728 5733768 1629432 5733824 1629664 5734016 -1629768 5733800 1629728 5733768 1629664 5734016 1629840 5733848 -1629768 5733800 1629768 5733656 1629728 5733768 1629664 5734016 -1629728 5733768 1629768 5733656 1629432 5733824 1629664 5734016 -1629728 5733768 1629696 5733736 1629432 5733824 1629664 5734016 -1629432 5733824 1629696 5733736 1629768 5733656 1629432 5733200 -1629696 5733736 1629728 5733768 1629768 5733656 1629432 5733200 -1629768 5733656 1629624 5733200 1629432 5733200 1629696 5733736 -1629432 5733824 1629696 5733736 1629432 5733200 1629016 5733664 -1629728 5733768 1629768 5733656 1629696 5733736 1629664 5734016 -1629768 5733656 1629696 5733736 1629728 5733768 1629768 5733800 -1629696 5733736 1629432 5733200 1629432 5733824 1629664 5734016 -1629728 5733768 1629696 5733736 1629664 5734016 1629768 5733800 -1629768 5733656 1629704 5733720 1629696 5733736 1629728 5733768 -1629704 5733720 1629432 5733200 1629696 5733736 1629728 5733768 -1629768 5733656 1629432 5733200 1629704 5733720 1629728 5733768 -1629696 5733736 1629704 5733720 1629432 5733200 1629432 5733824 -1629696 5733736 1629728 5733768 1629704 5733720 1629432 5733824 -1629704 5733720 1629768 5733656 1629432 5733200 1629432 5733824 -1629432 5733200 1629704 5733720 1629768 5733656 1629624 5733200 -1629432 5733200 1629432 5733824 1629704 5733720 1629624 5733200 -1629704 5733720 1629728 5733768 1629768 5733656 1629624 5733200 -1629432 5733200 1629016 5733664 1629432 5733824 1629704 5733720 -1629768 5733656 1629704 5733720 1629728 5733768 1629768 5733800 -1629696 5733736 1629704 5733720 1629432 5733824 1629664 5734016 -1629768 5733656 1629800 5733120 1629624 5733200 1629704 5733720 -1628648 5734680 1629224 5733944 1629016 5733664 1628832 5733560 -1629432 5733824 1629224 5733944 1628648 5734680 1628944 5734832 -1628648 5734680 1628656 5734712 1628944 5734832 1629224 5733944 -1629224 5733944 1629016 5733664 1628648 5734680 1628944 5734832 -1629432 5733824 1629016 5733664 1629224 5733944 1628944 5734832 -1629432 5733824 1629224 5733944 1628944 5734832 1629168 5734864 -1629432 5733824 1629016 5733664 1629224 5733944 1629168 5734864 -1629432 5733824 1629224 5733944 1629168 5734864 1629664 5734016 -1629168 5734864 1629760 5734112 1629664 5734016 1629224 5733944 -1629168 5734864 1629696 5735040 1629760 5734112 1629224 5733944 -1629432 5733824 1629016 5733664 1629224 5733944 1629664 5734016 -1629664 5734016 1629432 5733824 1629224 5733944 1629760 5734112 -1629224 5733944 1628944 5734832 1629168 5734864 1629760 5734112 -1629224 5733944 1628648 5734680 1628944 5734832 1629168 5734864 -1628648 5734680 1629064 5733856 1629016 5733664 1628832 5733560 -1629224 5733944 1629064 5733856 1628648 5734680 1628944 5734832 -1629016 5733664 1629064 5733856 1629224 5733944 1629432 5733824 -1629064 5733856 1628648 5734680 1629224 5733944 1629432 5733824 -1629224 5733944 1629664 5734016 1629432 5733824 1629064 5733856 -1628648 5734680 1629224 5733944 1629064 5733856 1628832 5733560 -1629064 5733856 1629432 5733824 1629016 5733664 1628832 5733560 -1628648 5734680 1629064 5733856 1628832 5733560 1628768 5733488 -1628832 5733560 1628896 5733792 1629064 5733856 1629016 5733664 -1629064 5733856 1628896 5733792 1628648 5734680 1629224 5733944 -1628896 5733792 1628648 5734680 1629064 5733856 1629016 5733664 -1629064 5733856 1629432 5733824 1629016 5733664 1628896 5733792 -1628832 5733560 1628648 5734680 1628896 5733792 1629016 5733664 -1628648 5734680 1628896 5733792 1628832 5733560 1628768 5733488 -1628648 5734680 1628896 5733792 1628768 5733488 1628664 5733376 -1628648 5734680 1628896 5733792 1628664 5733376 1628512 5734776 -1628896 5733792 1628768 5733488 1628664 5733376 1628512 5734776 -1628664 5733376 1626480 5735432 1628512 5734776 1628896 5733792 -1628648 5734680 1629064 5733856 1628896 5733792 1628512 5734776 -1628896 5733792 1629016 5733664 1628832 5733560 1628768 5733488 -1628768 5733488 1628736 5733424 1628664 5733376 1628896 5733792 -1628896 5733792 1628832 5733560 1628768 5733488 1628664 5733376 -1628896 5733792 1628856 5733792 1628512 5734776 1628648 5734680 -1628664 5733376 1628856 5733792 1628896 5733792 1628768 5733488 -1628512 5734776 1628856 5733792 1628664 5733376 1626480 5735432 -1628896 5733792 1628856 5733792 1628648 5734680 1629064 5733856 -1628856 5733792 1628512 5734776 1628648 5734680 1629064 5733856 -1628648 5734680 1629224 5733944 1629064 5733856 1628856 5733792 -1628896 5733792 1628768 5733488 1628856 5733792 1629064 5733856 -1628856 5733792 1628664 5733376 1628512 5734776 1628648 5734680 -1628664 5733376 1628512 5734776 1628856 5733792 1628768 5733488 -1628664 5733376 1628856 5733792 1628768 5733488 1628736 5733424 -1628896 5733792 1628832 5733560 1628768 5733488 1628856 5733792 -1628768 5733488 1628664 5733376 1628856 5733792 1628832 5733560 -1628896 5733792 1628832 5733560 1628856 5733792 1629064 5733856 -1628896 5733792 1629016 5733664 1628832 5733560 1628856 5733792 -1628512 5734776 1628752 5733752 1628664 5733376 1626480 5735432 -1628856 5733792 1628752 5733752 1628512 5734776 1628648 5734680 -1628856 5733792 1628752 5733752 1628648 5734680 1629064 5733856 -1628856 5733792 1628664 5733376 1628752 5733752 1628648 5734680 -1628664 5733376 1628752 5733752 1628856 5733792 1628768 5733488 -1628856 5733792 1628832 5733560 1628768 5733488 1628752 5733752 -1628752 5733752 1628648 5734680 1628856 5733792 1628832 5733560 -1628768 5733488 1628664 5733376 1628752 5733752 1628832 5733560 -1628752 5733752 1628664 5733376 1628512 5734776 1628648 5734680 -1628664 5733376 1628512 5734776 1628752 5733752 1628768 5733488 -1628664 5733376 1628752 5733752 1628768 5733488 1628736 5733424 -1628856 5733792 1628896 5733792 1628832 5733560 1628752 5733752 -1628512 5734776 1628616 5733640 1626480 5735432 1626712 5735520 -1628664 5733376 1628616 5733640 1628512 5734776 1628752 5733752 -1626480 5735432 1628616 5733640 1628664 5733376 1626328 5735392 -1628664 5733376 1628648 5733280 1626328 5735392 1628616 5733640 -1626328 5735392 1626480 5735432 1628616 5733640 1628648 5733280 -1628648 5733280 1625176 5734984 1626328 5735392 1628616 5733640 -1628512 5734776 1628616 5733640 1626712 5735520 1628496 5734816 -1628512 5734776 1628648 5734680 1628752 5733752 1628616 5733640 -1628752 5733752 1628664 5733376 1628616 5733640 1628648 5734680 -1628648 5734680 1628856 5733792 1628752 5733752 1628616 5733640 -1628512 5734776 1628648 5734680 1628616 5733640 1626712 5735520 -1628664 5733376 1628616 5733640 1628752 5733752 1628768 5733488 -1628616 5733640 1628648 5734680 1628752 5733752 1628768 5733488 -1628752 5733752 1628832 5733560 1628768 5733488 1628616 5733640 -1628752 5733752 1628856 5733792 1628832 5733560 1628616 5733640 -1628752 5733752 1628832 5733560 1628616 5733640 1628648 5734680 -1628768 5733488 1628664 5733376 1628616 5733640 1628832 5733560 -1628616 5733640 1626328 5735392 1626480 5735432 1626712 5735520 -1628664 5733376 1628648 5733280 1628616 5733640 1628768 5733488 -1628664 5733376 1628616 5733640 1628768 5733488 1628736 5733424 -1628664 5733376 1628616 5733640 1628736 5733424 1628688 5733368 -1628616 5733640 1628832 5733560 1628768 5733488 1628736 5733424 -1628664 5733376 1628648 5733280 1628616 5733640 1628736 5733424 -1628648 5733280 1628400 5733272 1625040 5734896 1625176 5734984 -1628648 5733280 1628400 5733272 1625176 5734984 1626328 5735392 -1628648 5733280 1628400 5733272 1626328 5735392 1628616 5733640 -1626328 5735392 1626480 5735432 1628616 5733640 1628400 5733272 -1628648 5733280 1628400 5733272 1628616 5733640 1628664 5733376 -1628616 5733640 1628664 5733376 1628400 5733272 1626480 5735432 -1628400 5733272 1625176 5734984 1626328 5735392 1626480 5735432 -1628400 5733272 1625040 5734896 1625176 5734984 1626328 5735392 -1627440 5730528 1628400 5733272 1628648 5733280 1628336 5731192 -1628648 5733280 1628376 5731232 1628336 5731192 1628400 5733272 -1628648 5733280 1628728 5733192 1628376 5731232 1628400 5733272 -1628728 5733192 1628792 5733136 1628376 5731232 1628400 5733272 -1628792 5733136 1628640 5731360 1628376 5731232 1628400 5733272 -1628792 5733136 1628640 5731360 1628400 5733272 1628728 5733192 -1628728 5733192 1628792 5733136 1628400 5733272 1628648 5733280 -1628336 5731192 1627440 5730528 1628400 5733272 1628376 5731232 -1628376 5731232 1628336 5731192 1628400 5733272 1628640 5731360 -1628792 5733136 1628928 5733096 1628640 5731360 1628400 5733272 -1625040 5734896 1628400 5733272 1627440 5730528 1624728 5734744 -1626480 5735432 1626712 5735520 1628616 5733640 1628400 5733272 -1626712 5735520 1628512 5734776 1628616 5733640 1628400 5733272 -1626480 5735432 1626712 5735520 1628400 5733272 1626328 5735392 -1628616 5733640 1628664 5733376 1628400 5733272 1628512 5734776 -1626712 5735520 1628496 5734816 1628512 5734776 1628400 5733272 -1628512 5734776 1628648 5734680 1628616 5733640 1628400 5733272 -1626712 5735520 1628512 5734776 1628400 5733272 1626480 5735432 -1628400 5733272 1627440 5730528 1625040 5734896 1625176 5734984 -1628616 5733640 1628736 5733424 1628664 5733376 1628400 5733272 -1627440 5730528 1625040 5734896 1628400 5733272 1628336 5731192 -1628648 5733280 1628728 5733192 1628400 5733272 1628664 5733376 -1627440 5730528 1628400 5733272 1628336 5731192 1627560 5730576 -1627440 5730528 1628400 5733272 1627560 5730576 1627520 5730552 -1628400 5733272 1628376 5731232 1628336 5731192 1627560 5730576 -1628336 5731192 1627632 5730600 1627560 5730576 1628400 5733272 -1627440 5730528 1625040 5734896 1628400 5733272 1627560 5730576 -1625176 5734984 1626192 5735400 1626328 5735392 1628400 5733272 -1625040 5734896 1628248 5733088 1627440 5730528 1624728 5734744 -1627440 5730528 1627360 5730472 1624728 5734744 1628248 5733088 -1624728 5734744 1625040 5734896 1628248 5733088 1627360 5730472 -1627360 5730472 1624264 5734424 1624728 5734744 1628248 5733088 -1624264 5734424 1624536 5734640 1624728 5734744 1628248 5733088 -1627360 5730472 1624264 5734424 1628248 5733088 1627440 5730528 -1624728 5734744 1625040 5734896 1628248 5733088 1624264 5734424 -1628400 5733272 1628248 5733088 1625040 5734896 1625176 5734984 -1628400 5733272 1628248 5733088 1625176 5734984 1626328 5735392 -1628400 5733272 1628248 5733088 1626328 5735392 1626480 5735432 -1628400 5733272 1628248 5733088 1626480 5735432 1626712 5735520 -1628248 5733088 1626328 5735392 1626480 5735432 1626712 5735520 -1628248 5733088 1625176 5734984 1626328 5735392 1626480 5735432 -1628400 5733272 1628248 5733088 1626712 5735520 1628512 5734776 -1628400 5733272 1628248 5733088 1628512 5734776 1628616 5733640 -1628248 5733088 1626480 5735432 1626712 5735520 1628512 5734776 -1626712 5735520 1628496 5734816 1628512 5734776 1628248 5733088 -1628248 5733088 1625040 5734896 1625176 5734984 1626328 5735392 -1627440 5730528 1628248 5733088 1628400 5733272 1627560 5730576 -1627440 5730528 1628248 5733088 1627560 5730576 1627520 5730552 -1628400 5733272 1627560 5730576 1628248 5733088 1628512 5734776 -1625040 5734896 1625176 5734984 1628248 5733088 1624728 5734744 -1628248 5733088 1627560 5730576 1627440 5730528 1627360 5730472 -1628400 5733272 1628336 5731192 1627560 5730576 1628248 5733088 -1628400 5733272 1628376 5731232 1628336 5731192 1628248 5733088 -1628400 5733272 1628640 5731360 1628376 5731232 1628248 5733088 -1628400 5733272 1628792 5733136 1628640 5731360 1628248 5733088 -1628400 5733272 1628728 5733192 1628792 5733136 1628248 5733088 -1628792 5733136 1628640 5731360 1628248 5733088 1628728 5733192 -1628400 5733272 1628648 5733280 1628728 5733192 1628248 5733088 -1628376 5731232 1628336 5731192 1628248 5733088 1628640 5731360 -1628640 5731360 1628376 5731232 1628248 5733088 1628792 5733136 -1628792 5733136 1628928 5733096 1628640 5731360 1628248 5733088 -1628336 5731192 1627632 5730600 1627560 5730576 1628248 5733088 -1627560 5730576 1627440 5730528 1628248 5733088 1628336 5731192 -1628400 5733272 1628728 5733192 1628248 5733088 1628512 5734776 -1628336 5731192 1627560 5730576 1628248 5733088 1628376 5731232 -1625176 5734984 1626192 5735400 1626328 5735392 1628248 5733088 -1627360 5730472 1627328 5730448 1624264 5734424 1628248 5733088 -1627360 5730472 1627328 5730448 1628248 5733088 1627440 5730528 -1624264 5734424 1624728 5734744 1628248 5733088 1627328 5730448 -1627328 5730448 1627296 5730408 1624264 5734424 1628248 5733088 -1628248 5733088 1628208 5733016 1624264 5734424 1624728 5734744 -1624264 5734424 1624536 5734640 1624728 5734744 1628208 5733016 -1628248 5733088 1628208 5733016 1624728 5734744 1625040 5734896 -1628208 5733016 1624264 5734424 1624728 5734744 1625040 5734896 -1628248 5733088 1628208 5733016 1625040 5734896 1625176 5734984 -1628208 5733016 1624728 5734744 1625040 5734896 1625176 5734984 -1628248 5733088 1628208 5733016 1625176 5734984 1626328 5735392 -1628248 5733088 1628208 5733016 1626328 5735392 1626480 5735432 -1628208 5733016 1625040 5734896 1625176 5734984 1626328 5735392 -1628248 5733088 1627328 5730448 1628208 5733016 1626328 5735392 -1628208 5733016 1627328 5730448 1624264 5734424 1624728 5734744 -1625176 5734984 1626192 5735400 1626328 5735392 1628208 5733016 -1624264 5734424 1628208 5733016 1627328 5730448 1627296 5730408 -1627328 5730448 1628208 5733016 1628248 5733088 1627360 5730472 -1628248 5733088 1627440 5730528 1627360 5730472 1628208 5733016 -1628208 5733016 1626328 5735392 1628248 5733088 1627440 5730528 -1628248 5733088 1627560 5730576 1627440 5730528 1628208 5733016 -1627560 5730576 1627520 5730552 1627440 5730528 1628208 5733016 -1627440 5730528 1627360 5730472 1628208 5733016 1627560 5730576 -1628248 5733088 1628336 5731192 1627560 5730576 1628208 5733016 -1628336 5731192 1627632 5730600 1627560 5730576 1628208 5733016 -1628248 5733088 1628336 5731192 1628208 5733016 1626328 5735392 -1627560 5730576 1627440 5730528 1628208 5733016 1628336 5731192 -1627328 5730448 1624264 5734424 1628208 5733016 1627360 5730472 -1628248 5733088 1628376 5731232 1628336 5731192 1628208 5733016 -1628248 5733088 1628640 5731360 1628376 5731232 1628208 5733016 -1628248 5733088 1628792 5733136 1628640 5731360 1628208 5733016 -1628248 5733088 1628728 5733192 1628792 5733136 1628208 5733016 -1628640 5731360 1628376 5731232 1628208 5733016 1628792 5733136 -1628792 5733136 1628928 5733096 1628640 5731360 1628208 5733016 -1628640 5731360 1628376 5731232 1628208 5733016 1628928 5733096 -1628792 5733136 1628928 5733096 1628208 5733016 1628248 5733088 -1628336 5731192 1627560 5730576 1628208 5733016 1628376 5731232 -1628248 5733088 1628792 5733136 1628208 5733016 1626328 5735392 -1628376 5731232 1628336 5731192 1628208 5733016 1628640 5731360 -1628928 5733096 1628768 5731368 1628640 5731360 1628208 5733016 -1628640 5731360 1628376 5731232 1628208 5733016 1628768 5731368 -1628928 5733096 1628768 5731368 1628208 5733016 1628792 5733136 -1628928 5733096 1629088 5733088 1628768 5731368 1628208 5733016 -1627360 5730472 1627328 5730448 1628208 5733016 1627440 5730528 -1628208 5733016 1628184 5732984 1624264 5734424 1624728 5734744 -1624264 5734424 1624536 5734640 1624728 5734744 1628184 5732984 -1628208 5733016 1628184 5732984 1624728 5734744 1625040 5734896 -1628208 5733016 1628184 5732984 1625040 5734896 1625176 5734984 -1628184 5732984 1624728 5734744 1625040 5734896 1625176 5734984 -1628208 5733016 1628184 5732984 1625176 5734984 1626328 5735392 -1628184 5732984 1625040 5734896 1625176 5734984 1626328 5735392 -1628208 5733016 1628184 5732984 1626328 5735392 1628248 5733088 -1626328 5735392 1626480 5735432 1628248 5733088 1628184 5732984 -1626480 5735432 1626712 5735520 1628248 5733088 1628184 5732984 -1628248 5733088 1628208 5733016 1628184 5732984 1626480 5735432 -1628184 5732984 1625176 5734984 1626328 5735392 1626480 5735432 -1628184 5732984 1624264 5734424 1624728 5734744 1625040 5734896 -1628208 5733016 1627328 5730448 1628184 5732984 1628248 5733088 -1627328 5730448 1628184 5732984 1628208 5733016 1627360 5730472 -1627328 5730448 1624264 5734424 1628184 5732984 1627360 5730472 -1628184 5732984 1628248 5733088 1628208 5733016 1627360 5730472 -1628184 5732984 1627328 5730448 1624264 5734424 1624728 5734744 -1625176 5734984 1626192 5735400 1626328 5735392 1628184 5732984 -1624264 5734424 1628184 5732984 1627328 5730448 1627296 5730408 -1628208 5733016 1627440 5730528 1627360 5730472 1628184 5732984 -1628208 5733016 1627560 5730576 1627440 5730528 1628184 5732984 -1627560 5730576 1627520 5730552 1627440 5730528 1628184 5732984 -1628208 5733016 1628336 5731192 1627560 5730576 1628184 5732984 -1627560 5730576 1627440 5730528 1628184 5732984 1628336 5731192 -1628336 5731192 1627632 5730600 1627560 5730576 1628184 5732984 -1628208 5733016 1628376 5731232 1628336 5731192 1628184 5732984 -1628336 5731192 1627560 5730576 1628184 5732984 1628376 5731232 -1628208 5733016 1628376 5731232 1628184 5732984 1628248 5733088 -1627360 5730472 1627328 5730448 1628184 5732984 1627440 5730528 -1628208 5733016 1628640 5731360 1628376 5731232 1628184 5732984 -1628208 5733016 1628768 5731368 1628640 5731360 1628184 5732984 -1628376 5731232 1628336 5731192 1628184 5732984 1628640 5731360 -1628208 5733016 1628768 5731368 1628184 5732984 1628248 5733088 -1628640 5731360 1628376 5731232 1628184 5732984 1628768 5731368 -1628208 5733016 1628928 5733096 1628768 5731368 1628184 5732984 -1628768 5731368 1628640 5731360 1628184 5732984 1628928 5733096 -1628208 5733016 1628792 5733136 1628928 5733096 1628184 5732984 -1628208 5733016 1628248 5733088 1628792 5733136 1628184 5732984 -1628928 5733096 1629088 5733088 1628768 5731368 1628184 5732984 -1628208 5733016 1628792 5733136 1628184 5732984 1628248 5733088 -1628928 5733096 1628768 5731368 1628184 5732984 1628792 5733136 -1627440 5730528 1627360 5730472 1628184 5732984 1627560 5730576 -1628184 5732984 1628176 5732880 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1628176 5732880 -1627560 5730576 1628176 5732880 1628336 5731192 1627632 5730600 -1628336 5731192 1628176 5732880 1628184 5732984 1628376 5731232 -1628184 5732984 1628640 5731360 1628376 5731232 1628176 5732880 -1628376 5731232 1628336 5731192 1628176 5732880 1628640 5731360 -1628176 5732880 1628336 5731192 1627560 5730576 1627440 5730528 -1628336 5731192 1627560 5730576 1628176 5732880 1628376 5731232 -1628184 5732984 1628640 5731360 1628176 5732880 1627440 5730528 -1628184 5732984 1628768 5731368 1628640 5731360 1628176 5732880 -1628184 5732984 1628928 5733096 1628768 5731368 1628176 5732880 -1628928 5733096 1629088 5733088 1628768 5731368 1628176 5732880 -1628640 5731360 1628376 5731232 1628176 5732880 1628768 5731368 -1628184 5732984 1628928 5733096 1628176 5732880 1627440 5730528 -1628768 5731368 1628640 5731360 1628176 5732880 1628928 5733096 -1628184 5732984 1628792 5733136 1628928 5733096 1628176 5732880 -1628928 5733096 1628768 5731368 1628176 5732880 1628792 5733136 -1628184 5732984 1628208 5733016 1628792 5733136 1628176 5732880 -1628208 5733016 1628248 5733088 1628792 5733136 1628176 5732880 -1628184 5732984 1628208 5733016 1628176 5732880 1627440 5730528 -1628792 5733136 1628928 5733096 1628176 5732880 1628208 5733016 -1628184 5732984 1628176 5732880 1627440 5730528 1627360 5730472 -1628176 5732880 1627560 5730576 1627440 5730528 1627360 5730472 -1628184 5732984 1628176 5732880 1627360 5730472 1627328 5730448 -1628184 5732984 1628176 5732880 1627328 5730448 1624264 5734424 -1628176 5732880 1627360 5730472 1627328 5730448 1624264 5734424 -1628184 5732984 1628176 5732880 1624264 5734424 1624728 5734744 -1624264 5734424 1624536 5734640 1624728 5734744 1628176 5732880 -1628176 5732880 1627328 5730448 1624264 5734424 1624728 5734744 -1628184 5732984 1628176 5732880 1624728 5734744 1625040 5734896 -1628184 5732984 1628176 5732880 1625040 5734896 1625176 5734984 -1628176 5732880 1624264 5734424 1624728 5734744 1625040 5734896 -1628184 5732984 1628208 5733016 1628176 5732880 1625040 5734896 -1627328 5730448 1627296 5730408 1624264 5734424 1628176 5732880 -1628176 5732880 1627440 5730528 1627360 5730472 1627328 5730448 -1628928 5733096 1628208 5732824 1628176 5732880 1628792 5733136 -1628768 5731368 1628208 5732824 1628928 5733096 1629088 5733088 -1628208 5732824 1628768 5731368 1628176 5732880 1628792 5733136 -1628928 5733096 1628768 5731368 1628208 5732824 1628792 5733136 -1628176 5732880 1628208 5732824 1628768 5731368 1628640 5731360 -1628176 5732880 1628208 5732824 1628640 5731360 1628376 5731232 -1628176 5732880 1628208 5732824 1628376 5731232 1628336 5731192 -1628208 5732824 1628640 5731360 1628376 5731232 1628336 5731192 -1628176 5732880 1628792 5733136 1628208 5732824 1628336 5731192 -1628176 5732880 1628208 5732824 1628336 5731192 1627560 5730576 -1628336 5731192 1627632 5730600 1627560 5730576 1628208 5732824 -1628208 5732824 1628376 5731232 1628336 5731192 1627560 5730576 -1628176 5732880 1628208 5732824 1627560 5730576 1627440 5730528 -1627560 5730576 1627520 5730552 1627440 5730528 1628208 5732824 -1628176 5732880 1628208 5732824 1627440 5730528 1627360 5730472 -1628176 5732880 1628792 5733136 1628208 5732824 1627440 5730528 -1628208 5732824 1628336 5731192 1627560 5730576 1627440 5730528 -1628208 5732824 1628928 5733096 1628768 5731368 1628640 5731360 -1628208 5732824 1628768 5731368 1628640 5731360 1628376 5731232 -1628176 5732880 1628208 5733016 1628792 5733136 1628208 5732824 -1628792 5733136 1628928 5733096 1628208 5732824 1628208 5733016 -1628208 5733016 1628248 5733088 1628792 5733136 1628208 5732824 -1628248 5733088 1628728 5733192 1628792 5733136 1628208 5732824 -1628792 5733136 1628928 5733096 1628208 5732824 1628248 5733088 -1628176 5732880 1628184 5732984 1628208 5733016 1628208 5732824 -1628176 5732880 1628208 5733016 1628208 5732824 1627440 5730528 -1628208 5733016 1628248 5733088 1628208 5732824 1628176 5732880 -1628768 5731368 1628336 5732728 1628928 5733096 1629088 5733088 -1628768 5731368 1628336 5732728 1629088 5733088 1629208 5731336 -1628208 5732824 1628336 5732728 1628768 5731368 1628640 5731360 -1628336 5732728 1628208 5732824 1628928 5733096 1629088 5733088 -1628208 5732824 1628928 5733096 1628336 5732728 1628640 5731360 -1628928 5733096 1628336 5732728 1628208 5732824 1628792 5733136 -1628208 5732824 1628248 5733088 1628792 5733136 1628336 5732728 -1628248 5733088 1628728 5733192 1628792 5733136 1628336 5732728 -1628248 5733088 1628400 5733272 1628728 5733192 1628336 5732728 -1628248 5733088 1628728 5733192 1628336 5732728 1628208 5732824 -1628208 5732824 1628208 5733016 1628248 5733088 1628336 5732728 -1628248 5733088 1628728 5733192 1628336 5732728 1628208 5733016 -1628928 5733096 1629088 5733088 1628336 5732728 1628792 5733136 -1628336 5732728 1628640 5731360 1628208 5732824 1628208 5733016 -1628792 5733136 1628928 5733096 1628336 5732728 1628728 5733192 -1628768 5731368 1628640 5731360 1628336 5732728 1629088 5733088 -1628208 5732824 1628336 5732728 1628640 5731360 1628376 5731232 -1628208 5732824 1628336 5732728 1628376 5731232 1628336 5731192 -1628336 5732728 1628768 5731368 1628640 5731360 1628376 5731232 -1628208 5732824 1628208 5733016 1628336 5732728 1628376 5731232 -1628208 5732824 1628176 5732880 1628208 5733016 1628336 5732728 -1629088 5733088 1628472 5732696 1628336 5732728 1628928 5733096 -1628768 5731368 1628472 5732696 1629088 5733088 1629208 5731336 -1628768 5731368 1628472 5732696 1629208 5731336 1628864 5731328 -1628472 5732696 1628768 5731368 1628336 5732728 1628928 5733096 -1628336 5732728 1628792 5733136 1628928 5733096 1628472 5732696 -1628928 5733096 1629088 5733088 1628472 5732696 1628792 5733136 -1628336 5732728 1628792 5733136 1628472 5732696 1628768 5731368 -1628768 5731368 1628336 5732728 1628472 5732696 1629208 5731336 -1629088 5733088 1629208 5731336 1628472 5732696 1628928 5733096 -1628336 5732728 1628728 5733192 1628792 5733136 1628472 5732696 -1628336 5732728 1628248 5733088 1628728 5733192 1628472 5732696 -1628248 5733088 1628400 5733272 1628728 5733192 1628472 5732696 -1628336 5732728 1628208 5733016 1628248 5733088 1628472 5732696 -1628336 5732728 1628248 5733088 1628472 5732696 1628768 5731368 -1628792 5733136 1628928 5733096 1628472 5732696 1628728 5733192 -1628728 5733192 1628792 5733136 1628472 5732696 1628248 5733088 -1628336 5732728 1628472 5732696 1628768 5731368 1628640 5731360 -1628336 5732728 1628472 5732696 1628640 5731360 1628376 5731232 -1628336 5732728 1628248 5733088 1628472 5732696 1628640 5731360 -1628472 5732696 1629208 5731336 1628768 5731368 1628640 5731360 -1629088 5733088 1629800 5733120 1629208 5731336 1628472 5732696 -1628472 5732696 1628664 5732696 1629208 5731336 1628768 5731368 -1629208 5731336 1628864 5731328 1628768 5731368 1628664 5732696 -1628472 5732696 1628664 5732696 1628768 5731368 1628640 5731360 -1628664 5732696 1629208 5731336 1628768 5731368 1628640 5731360 -1628472 5732696 1628664 5732696 1628640 5731360 1628336 5732728 -1629088 5733088 1628664 5732696 1628472 5732696 1628928 5733096 -1628472 5732696 1628792 5733136 1628928 5733096 1628664 5732696 -1629088 5733088 1629208 5731336 1628664 5732696 1628928 5733096 -1628472 5732696 1628728 5733192 1628792 5733136 1628664 5732696 -1628792 5733136 1628928 5733096 1628664 5732696 1628728 5733192 -1628928 5733096 1629088 5733088 1628664 5732696 1628792 5733136 -1628472 5732696 1628248 5733088 1628728 5733192 1628664 5732696 -1629208 5731336 1628664 5732696 1629088 5733088 1629800 5733120 -1629088 5733088 1629432 5733200 1629800 5733120 1628664 5732696 -1628664 5732696 1628928 5733096 1629088 5733088 1629800 5733120 -1629208 5731336 1628664 5732696 1629800 5733120 1629272 5731304 -1628472 5732696 1628728 5733192 1628664 5732696 1628640 5731360 -1628664 5732696 1629800 5733120 1629208 5731336 1628768 5731368 -1629208 5731336 1628848 5732736 1629800 5733120 1629272 5731304 -1629800 5733120 1628848 5732736 1628664 5732696 1629088 5733088 -1629800 5733120 1628848 5732736 1629088 5733088 1629432 5733200 -1628664 5732696 1628928 5733096 1629088 5733088 1628848 5732736 -1629800 5733120 1629208 5731336 1628848 5732736 1629432 5733200 -1629800 5733120 1628848 5732736 1629432 5733200 1629624 5733200 -1628664 5732696 1628792 5733136 1628928 5733096 1628848 5732736 -1628664 5732696 1628728 5733192 1628792 5733136 1628848 5732736 -1628928 5733096 1629088 5733088 1628848 5732736 1628792 5733136 -1628848 5732736 1628928 5733096 1629088 5733088 1629432 5733200 -1628664 5732696 1628848 5732736 1629208 5731336 1628768 5731368 -1628664 5732696 1628848 5732736 1628768 5731368 1628640 5731360 -1628848 5732736 1629800 5733120 1629208 5731336 1628768 5731368 -1629208 5731336 1628864 5731328 1628768 5731368 1628848 5732736 -1628848 5732736 1628768 5731368 1628664 5732696 1628792 5733136 -1629432 5733200 1629120 5732912 1628848 5732736 1629088 5733088 -1629120 5732912 1629800 5733120 1628848 5732736 1629088 5733088 -1628848 5732736 1629120 5732912 1629800 5733120 1629208 5731336 -1628848 5732736 1629120 5732912 1629208 5731336 1628768 5731368 -1628848 5732736 1629088 5733088 1629120 5732912 1629208 5731336 -1629120 5732912 1629432 5733200 1629800 5733120 1629208 5731336 -1629432 5733200 1629800 5733120 1629120 5732912 1629088 5733088 -1629800 5733120 1629120 5732912 1629432 5733200 1629624 5733200 -1629800 5733120 1629208 5731336 1629120 5732912 1629624 5733200 -1629120 5732912 1629088 5733088 1629432 5733200 1629624 5733200 -1629800 5733120 1629272 5731304 1629208 5731336 1629120 5732912 -1629800 5733120 1629928 5733104 1629272 5731304 1629120 5732912 -1629208 5731336 1628848 5732736 1629120 5732912 1629272 5731304 -1629800 5733120 1629272 5731304 1629120 5732912 1629624 5733200 -1628848 5732736 1628928 5733096 1629088 5733088 1629120 5732912 -1629088 5733088 1629432 5733200 1629120 5732912 1628928 5733096 -1628848 5732736 1628792 5733136 1628928 5733096 1629120 5732912 -1628848 5732736 1628928 5733096 1629120 5732912 1629208 5731336 -1629120 5732912 1629248 5732952 1629800 5733120 1629272 5731304 -1629800 5733120 1629928 5733104 1629272 5731304 1629248 5732952 -1629928 5733104 1629320 5731248 1629272 5731304 1629248 5732952 -1629272 5731304 1629120 5732912 1629248 5732952 1629928 5733104 -1629120 5732912 1629624 5733200 1629248 5732952 1629272 5731304 -1629248 5732952 1629624 5733200 1629800 5733120 1629928 5733104 -1629624 5733200 1629248 5732952 1629120 5732912 1629432 5733200 -1629248 5732952 1629272 5731304 1629120 5732912 1629432 5733200 -1629120 5732912 1629088 5733088 1629432 5733200 1629248 5732952 -1629120 5732912 1628928 5733096 1629088 5733088 1629248 5732952 -1629120 5732912 1629088 5733088 1629248 5732952 1629272 5731304 -1629624 5733200 1629800 5733120 1629248 5732952 1629432 5733200 -1629432 5733200 1629624 5733200 1629248 5732952 1629088 5733088 -1629120 5732912 1629248 5732952 1629272 5731304 1629208 5731336 -1629120 5732912 1629248 5732952 1629208 5731336 1628848 5732736 -1629248 5732952 1629928 5733104 1629272 5731304 1629208 5731336 -1629120 5732912 1629088 5733088 1629248 5732952 1629208 5731336 -1629928 5733104 1629416 5732952 1629248 5732952 1629800 5733120 -1629272 5731304 1629416 5732952 1629928 5733104 1629320 5731248 -1629248 5732952 1629416 5732952 1629272 5731304 1629208 5731336 -1629248 5732952 1629624 5733200 1629800 5733120 1629416 5732952 -1629800 5733120 1629928 5733104 1629416 5732952 1629624 5733200 -1629416 5732952 1629208 5731336 1629248 5732952 1629624 5733200 -1629248 5732952 1629432 5733200 1629624 5733200 1629416 5732952 -1629624 5733200 1629800 5733120 1629416 5732952 1629432 5733200 -1629248 5732952 1629432 5733200 1629416 5732952 1629208 5731336 -1629416 5732952 1629928 5733104 1629272 5731304 1629208 5731336 -1629928 5733104 1629272 5731304 1629416 5732952 1629800 5733120 -1629248 5732952 1629088 5733088 1629432 5733200 1629416 5732952 -1629248 5732952 1629416 5732952 1629208 5731336 1629120 5732912 -1629208 5731336 1628848 5732736 1629120 5732912 1629416 5732952 -1629208 5731336 1628768 5731368 1628848 5732736 1629416 5732952 -1629416 5732952 1629272 5731304 1629208 5731336 1628848 5732736 -1629248 5732952 1629432 5733200 1629416 5732952 1629120 5732912 -1629120 5732912 1629248 5732952 1629416 5732952 1628848 5732736 -1629272 5731304 1629624 5732928 1629928 5733104 1629320 5731248 -1629416 5732952 1629624 5732928 1629272 5731304 1629208 5731336 -1629416 5732952 1629624 5732928 1629208 5731336 1628848 5732736 -1629416 5732952 1629928 5733104 1629624 5732928 1629208 5731336 -1629928 5733104 1629624 5732928 1629416 5732952 1629800 5733120 -1629416 5732952 1629624 5733200 1629800 5733120 1629624 5732928 -1629416 5732952 1629432 5733200 1629624 5733200 1629624 5732928 -1629624 5732928 1629208 5731336 1629416 5732952 1629624 5733200 -1629800 5733120 1629928 5733104 1629624 5732928 1629624 5733200 -1629272 5731304 1629208 5731336 1629624 5732928 1629320 5731248 -1629624 5732928 1629800 5733120 1629928 5733104 1629320 5731248 -1629928 5733104 1630040 5733128 1629320 5731248 1629624 5732928 -1629320 5731248 1629272 5731304 1629624 5732928 1630040 5733128 -1630040 5733128 1630128 5733192 1629320 5731248 1629624 5732928 -1629928 5733104 1630040 5733128 1629624 5732928 1629800 5733120 -1629624 5732928 1629856 5732960 1629320 5731248 1629272 5731304 -1629320 5731248 1629856 5732960 1630040 5733128 1630128 5733192 -1629624 5732928 1629856 5732960 1629272 5731304 1629208 5731336 -1629624 5732928 1630040 5733128 1629856 5732960 1629272 5731304 -1629856 5732960 1630128 5733192 1629320 5731248 1629272 5731304 -1629856 5732960 1629624 5732928 1630040 5733128 1630128 5733192 -1629320 5731248 1629856 5732960 1630128 5733192 1630200 5733272 -1630040 5733128 1629856 5732960 1629624 5732928 1629928 5733104 -1629856 5732960 1629272 5731304 1629624 5732928 1629928 5733104 -1629624 5732928 1629800 5733120 1629928 5733104 1629856 5732960 -1629624 5732928 1629624 5733200 1629800 5733120 1629856 5732960 -1629624 5732928 1629800 5733120 1629856 5732960 1629272 5731304 -1630040 5733128 1630128 5733192 1629856 5732960 1629928 5733104 -1629928 5733104 1630040 5733128 1629856 5732960 1629800 5733120 -1630200 5733272 1630104 5733016 1629320 5731248 1630128 5733192 -1630104 5733016 1630704 5733848 1629320 5731248 1630128 5733192 -1630200 5733272 1630704 5733848 1630104 5733016 1630128 5733192 -1629320 5731248 1629856 5732960 1630128 5733192 1630104 5733016 -1630128 5733192 1630200 5733272 1630104 5733016 1629856 5732960 -1629856 5732960 1630040 5733128 1630128 5733192 1630104 5733016 -1630128 5733192 1630200 5733272 1630104 5733016 1630040 5733128 -1629320 5731248 1629272 5731304 1629856 5732960 1630104 5733016 -1629320 5731248 1629856 5732960 1630104 5733016 1630704 5733848 -1629856 5732960 1629928 5733104 1630040 5733128 1630104 5733016 -1630040 5733128 1630128 5733192 1630104 5733016 1629928 5733104 -1629856 5732960 1629928 5733104 1630104 5733016 1629320 5731248 -1629320 5731248 1630104 5733016 1630704 5733848 1629928 5726696 -1629320 5731248 1629856 5732960 1630104 5733016 1629928 5726696 -1630104 5733016 1630200 5733272 1630704 5733848 1629928 5726696 -1630704 5733848 1630104 5733016 1630200 5733272 1630456 5733648 -1630704 5733848 1629944 5726624 1629928 5726696 1630104 5733016 -1629320 5731248 1630104 5733016 1629928 5726696 1629304 5731208 -1629856 5732960 1629800 5733120 1629928 5733104 1630104 5733016 -1630704 5733848 1630536 5733184 1630104 5733016 1630200 5733272 -1630104 5733016 1630128 5733192 1630200 5733272 1630536 5733184 -1630104 5733016 1630040 5733128 1630128 5733192 1630536 5733184 -1630200 5733272 1630704 5733848 1630536 5733184 1630128 5733192 -1630704 5733848 1629928 5726696 1630536 5733184 1630200 5733272 -1630536 5733184 1629928 5726696 1630104 5733016 1630128 5733192 -1630104 5733016 1630536 5733184 1629928 5726696 1629320 5731248 -1630104 5733016 1630536 5733184 1629320 5731248 1629856 5732960 -1630536 5733184 1630704 5733848 1629928 5726696 1629320 5731248 -1630104 5733016 1630128 5733192 1630536 5733184 1629320 5731248 -1630704 5733848 1630536 5733184 1630200 5733272 1630456 5733648 -1630536 5733184 1630128 5733192 1630200 5733272 1630456 5733648 -1630704 5733848 1629928 5726696 1630536 5733184 1630456 5733648 -1629928 5726696 1630536 5733184 1630704 5733848 1629944 5726624 -1629928 5726696 1629320 5731248 1630536 5733184 1629944 5726624 -1630536 5733184 1630456 5733648 1630704 5733848 1629944 5726624 -1630704 5733848 1630736 5733944 1629944 5726624 1630536 5733184 -1630704 5733848 1630736 5733944 1630536 5733184 1630456 5733648 -1630736 5733944 1629944 5726576 1629944 5726624 1630536 5733184 -1629944 5726624 1629928 5726696 1630536 5733184 1630736 5733944 -1629928 5726696 1629304 5731208 1629320 5731248 1630536 5733184 -1629944 5726576 1630688 5733312 1743888 5687504 1743800 5687320 -1630736 5733944 1630688 5733312 1629944 5726576 1629944 5726624 -1630688 5733312 1743888 5687504 1629944 5726576 1629944 5726624 -1630736 5733944 1743888 5687504 1630688 5733312 1629944 5726624 -1630736 5733944 1630688 5733312 1629944 5726624 1630536 5733184 -1630736 5733944 1743888 5687504 1630688 5733312 1630536 5733184 -1630688 5733312 1629944 5726576 1629944 5726624 1630536 5733184 -1630736 5733944 1630688 5733312 1630536 5733184 1630704 5733848 -1630536 5733184 1630456 5733648 1630704 5733848 1630688 5733312 -1630736 5733944 1743888 5687504 1630688 5733312 1630704 5733848 -1630688 5733312 1629944 5726624 1630536 5733184 1630456 5733648 -1630704 5733848 1630736 5733944 1630688 5733312 1630456 5733648 -1630536 5733184 1630200 5733272 1630456 5733648 1630688 5733312 -1629944 5726624 1629928 5726696 1630536 5733184 1630688 5733312 -1629928 5726696 1629320 5731248 1630536 5733184 1630688 5733312 -1630536 5733184 1630456 5733648 1630688 5733312 1629320 5731248 -1629944 5726624 1629928 5726696 1630688 5733312 1629944 5726576 -1629320 5731248 1630104 5733016 1630536 5733184 1630688 5733312 -1629928 5726696 1629320 5731248 1630688 5733312 1629944 5726624 -1743888 5687504 1630688 5733312 1630736 5733944 1751256 5699792 -1743888 5687504 1630688 5733312 1751256 5699792 1743976 5687584 -1743888 5687504 1629944 5726576 1630688 5733312 1751256 5699792 -1630688 5733312 1630704 5733848 1630736 5733944 1751256 5699792 -1630736 5733944 1631312 5744824 1751256 5699792 1630688 5733312 -1629928 5726696 1629304 5731208 1629320 5731248 1630688 5733312 -1630736 5733944 1630752 5733408 1630688 5733312 1630704 5733848 -1630752 5733408 1751256 5699792 1630688 5733312 1630704 5733848 -1630736 5733944 1751256 5699792 1630752 5733408 1630704 5733848 -1630688 5733312 1630456 5733648 1630704 5733848 1630752 5733408 -1630688 5733312 1630536 5733184 1630456 5733648 1630752 5733408 -1630688 5733312 1630456 5733648 1630752 5733408 1751256 5699792 -1630704 5733848 1630736 5733944 1630752 5733408 1630456 5733648 -1630688 5733312 1630752 5733408 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1630752 5733408 -1630688 5733312 1630752 5733408 1743888 5687504 1629944 5726576 -1743888 5687504 1743800 5687320 1629944 5726576 1630752 5733408 -1630688 5733312 1630752 5733408 1629944 5726576 1629944 5726624 -1630752 5733408 1743888 5687504 1629944 5726576 1629944 5726624 -1630688 5733312 1630456 5733648 1630752 5733408 1629944 5726624 -1630752 5733408 1630736 5733944 1751256 5699792 1743888 5687504 -1630688 5733312 1630752 5733408 1629944 5726624 1629928 5726696 -1630752 5733408 1629944 5726576 1629944 5726624 1629928 5726696 -1630688 5733312 1630456 5733648 1630752 5733408 1629928 5726696 -1630688 5733312 1630752 5733408 1629928 5726696 1629320 5731248 -1630752 5733408 1751256 5699792 1743888 5687504 1629944 5726576 -1751256 5699792 1630752 5733408 1630736 5733944 1631312 5744824 -1630752 5733408 1630944 5733600 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1630944 5733600 -1630752 5733408 1630736 5733944 1630944 5733600 1743888 5687504 -1630736 5733944 1630944 5733600 1630752 5733408 1630704 5733848 -1630752 5733408 1630456 5733648 1630704 5733848 1630944 5733600 -1630944 5733600 1743888 5687504 1630752 5733408 1630704 5733848 -1630944 5733600 1630736 5733944 1751256 5699792 1743888 5687504 -1630736 5733944 1751256 5699792 1630944 5733600 1630704 5733848 -1630752 5733408 1630944 5733600 1743888 5687504 1629944 5726576 -1743888 5687504 1743800 5687320 1629944 5726576 1630944 5733600 -1630752 5733408 1630944 5733600 1629944 5726576 1629944 5726624 -1630752 5733408 1630944 5733600 1629944 5726624 1629928 5726696 -1630944 5733600 1629944 5726576 1629944 5726624 1629928 5726696 -1630944 5733600 1751256 5699792 1743888 5687504 1629944 5726576 -1630752 5733408 1630704 5733848 1630944 5733600 1629928 5726696 -1630752 5733408 1630944 5733600 1629928 5726696 1630688 5733312 -1630944 5733600 1629944 5726624 1629928 5726696 1630688 5733312 -1630752 5733408 1630704 5733848 1630944 5733600 1630688 5733312 -1629928 5726696 1629320 5731248 1630688 5733312 1630944 5733600 -1630944 5733600 1743888 5687504 1629944 5726576 1629944 5726624 -1751256 5699792 1630944 5733600 1630736 5733944 1631312 5744824 -1751256 5699792 1743888 5687504 1630944 5733600 1631312 5744824 -1630944 5733600 1630704 5733848 1630736 5733944 1631312 5744824 -1630736 5733944 1630704 5735568 1631312 5744824 1630944 5733600 -1630736 5733944 1630704 5735568 1630944 5733600 1630704 5733848 -1630704 5735568 1630952 5743928 1631312 5744824 1630944 5733600 -1630736 5733944 1630704 5735512 1630704 5735568 1630944 5733600 -1630736 5733944 1630704 5735512 1630944 5733600 1630704 5733848 -1630704 5735568 1631312 5744824 1630944 5733600 1630704 5735512 -1630704 5735512 1630688 5735528 1630704 5735568 1630944 5733600 -1631312 5744824 1751256 5699792 1630944 5733600 1630704 5735568 -1630736 5733944 1630720 5734000 1630704 5735512 1630944 5733600 -1630736 5733944 1630720 5734000 1630944 5733600 1630704 5733848 -1630704 5735512 1630704 5735568 1630944 5733600 1630720 5734000 -1630720 5734000 1630664 5734072 1630704 5735512 1630944 5733600 -1751256 5699792 1630944 5733600 1631312 5744824 1760125 5760125 -1630944 5733600 1631104 5733736 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1631104 5733736 -1630944 5733600 1631104 5733736 1743888 5687504 1629944 5726576 -1743888 5687504 1743800 5687320 1629944 5726576 1631104 5733736 -1631104 5733736 1751256 5699792 1743888 5687504 1629944 5726576 -1630944 5733600 1631312 5744824 1631104 5733736 1629944 5726576 -1631104 5733736 1631312 5744824 1751256 5699792 1743888 5687504 -1630944 5733600 1631104 5733736 1629944 5726576 1629944 5726624 -1630944 5733600 1631104 5733736 1629944 5726624 1629928 5726696 -1630944 5733600 1631104 5733736 1629928 5726696 1630688 5733312 -1631104 5733736 1629944 5726624 1629928 5726696 1630688 5733312 -1631104 5733736 1743888 5687504 1629944 5726576 1629944 5726624 -1630944 5733600 1631312 5744824 1631104 5733736 1630688 5733312 -1630944 5733600 1631104 5733736 1630688 5733312 1630752 5733408 -1629928 5726696 1629320 5731248 1630688 5733312 1631104 5733736 -1631104 5733736 1629944 5726576 1629944 5726624 1629928 5726696 -1631312 5744824 1631104 5733736 1630944 5733600 1630704 5735568 -1631104 5733736 1630688 5733312 1630944 5733600 1630704 5735568 -1631312 5744824 1751256 5699792 1631104 5733736 1630704 5735568 -1631312 5744824 1631104 5733736 1630704 5735568 1630952 5743928 -1630944 5733600 1630704 5735512 1630704 5735568 1631104 5733736 -1630944 5733600 1630704 5735512 1631104 5733736 1630688 5733312 -1630944 5733600 1630720 5734000 1630704 5735512 1631104 5733736 -1630944 5733600 1630720 5734000 1631104 5733736 1630688 5733312 -1630704 5735512 1630704 5735568 1631104 5733736 1630720 5734000 -1630704 5735512 1630688 5735528 1630704 5735568 1631104 5733736 -1630720 5734000 1630664 5734072 1630704 5735512 1631104 5733736 -1630720 5734000 1630664 5734072 1631104 5733736 1630944 5733600 -1630704 5735512 1630704 5735568 1631104 5733736 1630664 5734072 -1630664 5734072 1630608 5735424 1630704 5735512 1631104 5733736 -1630704 5735568 1631312 5744824 1631104 5733736 1630704 5735512 -1630944 5733600 1630736 5733944 1630720 5734000 1631104 5733736 -1630944 5733600 1630736 5733944 1631104 5733736 1630688 5733312 -1630944 5733600 1630704 5733848 1630736 5733944 1631104 5733736 -1630944 5733600 1630752 5733408 1630704 5733848 1631104 5733736 -1630944 5733600 1630704 5733848 1631104 5733736 1630688 5733312 -1630720 5734000 1630664 5734072 1631104 5733736 1630736 5733944 -1630736 5733944 1630720 5734000 1631104 5733736 1630704 5733848 -1751256 5699792 1631104 5733736 1631312 5744824 1760125 5760125 -1631104 5733736 1631176 5733840 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1631176 5733840 -1631104 5733736 1631176 5733840 1743888 5687504 1629944 5726576 -1743888 5687504 1743800 5687320 1629944 5726576 1631176 5733840 -1631104 5733736 1631176 5733840 1629944 5726576 1629944 5726624 -1631176 5733840 1743888 5687504 1629944 5726576 1629944 5726624 -1631176 5733840 1751256 5699792 1743888 5687504 1629944 5726576 -1631104 5733736 1631312 5744824 1631176 5733840 1629944 5726624 -1631312 5744824 1631176 5733840 1631104 5733736 1630704 5735568 -1631176 5733840 1629944 5726624 1631104 5733736 1630704 5735568 -1631176 5733840 1631312 5744824 1751256 5699792 1743888 5687504 -1631312 5744824 1751256 5699792 1631176 5733840 1630704 5735568 -1631312 5744824 1631176 5733840 1630704 5735568 1630952 5743928 -1631104 5733736 1631176 5733840 1629944 5726624 1629928 5726696 -1631104 5733736 1631176 5733840 1629928 5726696 1630688 5733312 -1631176 5733840 1629944 5726576 1629944 5726624 1629928 5726696 -1631104 5733736 1630704 5735568 1631176 5733840 1629928 5726696 -1631104 5733736 1630704 5735512 1630704 5735568 1631176 5733840 -1631104 5733736 1630704 5735512 1631176 5733840 1629928 5726696 -1630704 5735568 1631312 5744824 1631176 5733840 1630704 5735512 -1631104 5733736 1630664 5734072 1630704 5735512 1631176 5733840 -1631104 5733736 1630664 5734072 1631176 5733840 1629928 5726696 -1630704 5735512 1630688 5735528 1630704 5735568 1631176 5733840 -1630664 5734072 1630608 5735424 1630704 5735512 1631176 5733840 -1631104 5733736 1630720 5734000 1630664 5734072 1631176 5733840 -1631104 5733736 1630720 5734000 1631176 5733840 1629928 5726696 -1631104 5733736 1630736 5733944 1630720 5734000 1631176 5733840 -1631104 5733736 1630736 5733944 1631176 5733840 1629928 5726696 -1630664 5734072 1630704 5735512 1631176 5733840 1630720 5734000 -1630720 5734000 1630664 5734072 1631176 5733840 1630736 5733944 -1630704 5735512 1630704 5735568 1631176 5733840 1630664 5734072 -1631104 5733736 1630704 5733848 1630736 5733944 1631176 5733840 -1751256 5699792 1631176 5733840 1631312 5744824 1760125 5760125 -1631176 5733840 1631224 5733936 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1631224 5733936 -1631176 5733840 1631224 5733936 1743888 5687504 1629944 5726576 -1743888 5687504 1743800 5687320 1629944 5726576 1631224 5733936 -1631176 5733840 1631224 5733936 1629944 5726576 1629944 5726624 -1631176 5733840 1631224 5733936 1629944 5726624 1629928 5726696 -1631224 5733936 1743888 5687504 1629944 5726576 1629944 5726624 -1631224 5733936 1751256 5699792 1743888 5687504 1629944 5726576 -1631176 5733840 1631312 5744824 1631224 5733936 1629944 5726624 -1631312 5744824 1631224 5733936 1631176 5733840 1630704 5735568 -1631176 5733840 1630704 5735512 1630704 5735568 1631224 5733936 -1631224 5733936 1629944 5726624 1631176 5733840 1630704 5735512 -1630704 5735568 1631312 5744824 1631224 5733936 1630704 5735512 -1631224 5733936 1631312 5744824 1751256 5699792 1743888 5687504 -1631312 5744824 1751256 5699792 1631224 5733936 1630704 5735568 -1631312 5744824 1631224 5733936 1630704 5735568 1630952 5743928 -1630704 5735512 1630688 5735528 1630704 5735568 1631224 5733936 -1631176 5733840 1630664 5734072 1630704 5735512 1631224 5733936 -1630704 5735512 1630704 5735568 1631224 5733936 1630664 5734072 -1631176 5733840 1630664 5734072 1631224 5733936 1629944 5726624 -1631176 5733840 1630720 5734000 1630664 5734072 1631224 5733936 -1631176 5733840 1630720 5734000 1631224 5733936 1629944 5726624 -1630664 5734072 1630608 5735424 1630704 5735512 1631224 5733936 -1630704 5735512 1630704 5735568 1631224 5733936 1630608 5735424 -1631176 5733840 1630736 5733944 1630720 5734000 1631224 5733936 -1631176 5733840 1630736 5733944 1631224 5733936 1629944 5726624 -1631176 5733840 1631104 5733736 1630736 5733944 1631224 5733936 -1630720 5734000 1630664 5734072 1631224 5733936 1630736 5733944 -1630664 5734072 1630608 5735424 1631224 5733936 1630720 5734000 -1630664 5734072 1630568 5734144 1630608 5735424 1631224 5733936 -1751256 5699792 1631224 5733936 1631312 5744824 1760125 5760125 -1631312 5744824 1631920 5751080 1760125 5760125 1631224 5733936 -1751256 5699792 1631224 5733936 1760125 5760125 1751376 5699848 -1751256 5699792 1743888 5687504 1631224 5733936 1760125 5760125 -1631224 5733936 1630704 5735568 1631312 5744824 1760125 5760125 -1760125 5760125 1631240 5734008 1631312 5744824 1631920 5751080 -1631312 5744824 1631240 5734008 1631224 5733936 1630704 5735568 -1631224 5733936 1630704 5735512 1630704 5735568 1631240 5734008 -1631224 5733936 1630608 5735424 1630704 5735512 1631240 5734008 -1630704 5735512 1630704 5735568 1631240 5734008 1630608 5735424 -1631240 5734008 1760125 5760125 1631224 5733936 1630608 5735424 -1630704 5735568 1631312 5744824 1631240 5734008 1630704 5735512 -1631312 5744824 1760125 5760125 1631240 5734008 1630704 5735568 -1631312 5744824 1631240 5734008 1630704 5735568 1630952 5743928 -1630704 5735512 1630688 5735528 1630704 5735568 1631240 5734008 -1631224 5733936 1630664 5734072 1630608 5735424 1631240 5734008 -1630608 5735424 1630704 5735512 1631240 5734008 1630664 5734072 -1631224 5733936 1630664 5734072 1631240 5734008 1760125 5760125 -1631224 5733936 1630720 5734000 1630664 5734072 1631240 5734008 -1631224 5733936 1630720 5734000 1631240 5734008 1760125 5760125 -1631224 5733936 1630736 5733944 1630720 5734000 1631240 5734008 -1631224 5733936 1630736 5733944 1631240 5734008 1760125 5760125 -1630664 5734072 1630608 5735424 1631240 5734008 1630720 5734000 -1631224 5733936 1631176 5733840 1630736 5733944 1631240 5734008 -1630720 5734000 1630664 5734072 1631240 5734008 1630736 5733944 -1630664 5734072 1630568 5734144 1630608 5735424 1631240 5734008 -1630608 5735424 1630704 5735512 1631240 5734008 1630568 5734144 -1630664 5734072 1630568 5734144 1631240 5734008 1630720 5734000 -1630568 5734144 1630440 5735312 1630608 5735424 1631240 5734008 -1631224 5733936 1631240 5734008 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1631240 5734008 -1631224 5733936 1631240 5734008 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1631240 5734008 -1631224 5733936 1631240 5734008 1743888 5687504 1629944 5726576 -1631224 5733936 1630736 5733944 1631240 5734008 1743888 5687504 -1631240 5734008 1631312 5744824 1760125 5760125 1751256 5699792 -1631240 5734008 1760125 5760125 1751256 5699792 1743888 5687504 -1631240 5734008 1631216 5734056 1630608 5735424 1630704 5735512 -1631240 5734008 1631216 5734056 1630704 5735512 1630704 5735568 -1631216 5734056 1630608 5735424 1630704 5735512 1630704 5735568 -1631240 5734008 1631216 5734056 1630704 5735568 1631312 5744824 -1631240 5734008 1630568 5734144 1631216 5734056 1630704 5735568 -1631216 5734056 1630568 5734144 1630608 5735424 1630704 5735512 -1630704 5735512 1630688 5735528 1630704 5735568 1631216 5734056 -1630568 5734144 1631216 5734056 1631240 5734008 1630664 5734072 -1631216 5734056 1630704 5735568 1631240 5734008 1630664 5734072 -1630568 5734144 1630608 5735424 1631216 5734056 1630664 5734072 -1631240 5734008 1630720 5734000 1630664 5734072 1631216 5734056 -1631240 5734008 1630720 5734000 1631216 5734056 1630704 5735568 -1631240 5734008 1630736 5733944 1630720 5734000 1631216 5734056 -1631240 5734008 1630736 5733944 1631216 5734056 1630704 5735568 -1631240 5734008 1631224 5733936 1630736 5733944 1631216 5734056 -1631240 5734008 1631224 5733936 1631216 5734056 1630704 5735568 -1630720 5734000 1630664 5734072 1631216 5734056 1630736 5733944 -1631224 5733936 1631176 5733840 1630736 5733944 1631216 5734056 -1631176 5733840 1631104 5733736 1630736 5733944 1631216 5734056 -1631224 5733936 1631176 5733840 1631216 5734056 1631240 5734008 -1630736 5733944 1630720 5734000 1631216 5734056 1631176 5733840 -1630664 5734072 1630568 5734144 1631216 5734056 1630720 5734000 -1630608 5735424 1631216 5734056 1630568 5734144 1630440 5735312 -1631216 5734056 1631160 5734184 1630704 5735512 1630704 5735568 -1631216 5734056 1631160 5734184 1630704 5735568 1631240 5734008 -1631160 5734184 1630704 5735512 1630704 5735568 1631240 5734008 -1630704 5735568 1631312 5744824 1631240 5734008 1631160 5734184 -1630608 5735424 1631160 5734184 1631216 5734056 1630568 5734144 -1630608 5735424 1630704 5735512 1631160 5734184 1630568 5734144 -1631216 5734056 1630568 5734144 1631160 5734184 1631240 5734008 -1631216 5734056 1630664 5734072 1630568 5734144 1631160 5734184 -1630568 5734144 1630608 5735424 1631160 5734184 1630664 5734072 -1631216 5734056 1630664 5734072 1631160 5734184 1631240 5734008 -1631160 5734184 1630608 5735424 1630704 5735512 1630704 5735568 -1630704 5735512 1630688 5735528 1630704 5735568 1631160 5734184 -1631216 5734056 1630720 5734000 1630664 5734072 1631160 5734184 -1631216 5734056 1630720 5734000 1631160 5734184 1631240 5734008 -1630664 5734072 1630568 5734144 1631160 5734184 1630720 5734000 -1631216 5734056 1630736 5733944 1630720 5734000 1631160 5734184 -1631216 5734056 1630736 5733944 1631160 5734184 1631240 5734008 -1631216 5734056 1631176 5733840 1630736 5733944 1631160 5734184 -1630720 5734000 1630664 5734072 1631160 5734184 1630736 5733944 -1630608 5735424 1631160 5734184 1630568 5734144 1630440 5735312 -1630608 5735424 1630704 5735512 1631160 5734184 1630440 5735312 -1631160 5734184 1630664 5734072 1630568 5734144 1630440 5735312 -1630568 5734144 1630392 5734184 1630440 5735312 1631160 5734184 -1630568 5734144 1631064 5734304 1631160 5734184 1630664 5734072 -1631064 5734304 1630440 5735312 1631160 5734184 1630664 5734072 -1630568 5734144 1630440 5735312 1631064 5734304 1630664 5734072 -1631160 5734184 1630720 5734000 1630664 5734072 1631064 5734304 -1631160 5734184 1630720 5734000 1631064 5734304 1630440 5735312 -1630664 5734072 1630568 5734144 1631064 5734304 1630720 5734000 -1631160 5734184 1630736 5733944 1630720 5734000 1631064 5734304 -1631160 5734184 1631064 5734304 1630440 5735312 1630608 5735424 -1631160 5734184 1630720 5734000 1631064 5734304 1630608 5735424 -1631160 5734184 1631064 5734304 1630608 5735424 1630704 5735512 -1631160 5734184 1630720 5734000 1631064 5734304 1630704 5735512 -1631064 5734304 1630568 5734144 1630440 5735312 1630608 5735424 -1631160 5734184 1631064 5734304 1630704 5735512 1630704 5735568 -1631064 5734304 1630440 5735312 1630608 5735424 1630704 5735512 -1630440 5735312 1631064 5734304 1630568 5734144 1630392 5734184 -1631064 5734304 1630880 5734424 1630440 5735312 1630608 5735424 -1631064 5734304 1630568 5734144 1630880 5734424 1630608 5735424 -1630568 5734144 1630880 5734424 1631064 5734304 1630664 5734072 -1630880 5734424 1630608 5735424 1631064 5734304 1630664 5734072 -1630880 5734424 1630568 5734144 1630440 5735312 1630608 5735424 -1630568 5734144 1630440 5735312 1630880 5734424 1630664 5734072 -1631064 5734304 1630720 5734000 1630664 5734072 1630880 5734424 -1631064 5734304 1630880 5734424 1630608 5735424 1630704 5735512 -1631064 5734304 1630880 5734424 1630704 5735512 1631160 5734184 -1630880 5734424 1630440 5735312 1630608 5735424 1630704 5735512 -1631064 5734304 1630664 5734072 1630880 5734424 1630704 5735512 -1630440 5735312 1630880 5734424 1630568 5734144 1630392 5734184 -1630440 5735312 1630608 5735424 1630880 5734424 1630392 5734184 -1630880 5734424 1630664 5734072 1630568 5734144 1630392 5734184 -1630440 5735312 1630880 5734424 1630392 5734184 1630120 5735160 -1630440 5735312 1630608 5735424 1630880 5734424 1630120 5735160 -1630392 5734184 1630224 5734232 1630120 5735160 1630880 5734424 -1630224 5734232 1630048 5734248 1630120 5735160 1630880 5734424 -1630120 5735160 1630440 5735312 1630880 5734424 1630224 5734232 -1630880 5734424 1630568 5734144 1630392 5734184 1630224 5734232 -1630120 5735160 1630808 5734464 1630224 5734232 1630048 5734248 -1630880 5734424 1630808 5734464 1630120 5735160 1630440 5735312 -1630880 5734424 1630808 5734464 1630440 5735312 1630608 5735424 -1630880 5734424 1630808 5734464 1630608 5735424 1630704 5735512 -1630808 5734464 1630440 5735312 1630608 5735424 1630704 5735512 -1630880 5734424 1630224 5734232 1630808 5734464 1630704 5735512 -1630808 5734464 1630224 5734232 1630120 5735160 1630440 5735312 -1630808 5734464 1630120 5735160 1630440 5735312 1630608 5735424 -1630224 5734232 1630808 5734464 1630880 5734424 1630392 5734184 -1630808 5734464 1630704 5735512 1630880 5734424 1630392 5734184 -1630224 5734232 1630120 5735160 1630808 5734464 1630392 5734184 -1630880 5734424 1630808 5734464 1630704 5735512 1631064 5734304 -1630880 5734424 1630568 5734144 1630392 5734184 1630808 5734464 -1630880 5734424 1630568 5734144 1630808 5734464 1630704 5735512 -1630880 5734424 1630664 5734072 1630568 5734144 1630808 5734464 -1630880 5734424 1631064 5734304 1630664 5734072 1630808 5734464 -1630880 5734424 1630664 5734072 1630808 5734464 1630704 5735512 -1630392 5734184 1630224 5734232 1630808 5734464 1630568 5734144 -1630568 5734144 1630392 5734184 1630808 5734464 1630664 5734072 -1630808 5734464 1630768 5734504 1630120 5735160 1630440 5735312 -1630808 5734464 1630224 5734232 1630768 5734504 1630440 5735312 -1630224 5734232 1630768 5734504 1630808 5734464 1630392 5734184 -1630768 5734504 1630440 5735312 1630808 5734464 1630392 5734184 -1630768 5734504 1630224 5734232 1630120 5735160 1630440 5735312 -1630224 5734232 1630120 5735160 1630768 5734504 1630392 5734184 -1630120 5735160 1630768 5734504 1630224 5734232 1630048 5734248 -1630808 5734464 1630768 5734504 1630440 5735312 1630608 5735424 -1630808 5734464 1630768 5734504 1630608 5735424 1630704 5735512 -1630808 5734464 1630768 5734504 1630704 5735512 1630880 5734424 -1630768 5734504 1630608 5735424 1630704 5735512 1630880 5734424 -1630768 5734504 1630120 5735160 1630440 5735312 1630608 5735424 -1630808 5734464 1630392 5734184 1630768 5734504 1630880 5734424 -1630768 5734504 1630440 5735312 1630608 5735424 1630704 5735512 -1630808 5734464 1630568 5734144 1630392 5734184 1630768 5734504 -1630808 5734464 1630568 5734144 1630768 5734504 1630880 5734424 -1630392 5734184 1630224 5734232 1630768 5734504 1630568 5734144 -1630704 5735512 1631064 5734304 1630880 5734424 1630768 5734504 -1630808 5734464 1630664 5734072 1630568 5734144 1630768 5734504 -1630768 5734504 1630624 5734576 1630120 5735160 1630440 5735312 -1630768 5734504 1630624 5734576 1630440 5735312 1630608 5735424 -1630624 5734576 1630120 5735160 1630440 5735312 1630608 5735424 -1630768 5734504 1630224 5734232 1630624 5734576 1630608 5735424 -1630224 5734232 1630624 5734576 1630768 5734504 1630392 5734184 -1630768 5734504 1630568 5734144 1630392 5734184 1630624 5734576 -1630624 5734576 1630608 5735424 1630768 5734504 1630568 5734144 -1630392 5734184 1630224 5734232 1630624 5734576 1630568 5734144 -1630624 5734576 1630224 5734232 1630120 5735160 1630440 5735312 -1630224 5734232 1630120 5735160 1630624 5734576 1630392 5734184 -1630120 5735160 1630624 5734576 1630224 5734232 1630048 5734248 -1630120 5735160 1630440 5735312 1630624 5734576 1630048 5734248 -1630624 5734576 1630392 5734184 1630224 5734232 1630048 5734248 -1630120 5735160 1630624 5734576 1630048 5734248 1629696 5735040 -1630768 5734504 1630624 5734576 1630608 5735424 1630704 5735512 -1630768 5734504 1630808 5734464 1630568 5734144 1630624 5734576 -1630624 5734576 1630456 5734584 1630120 5735160 1630440 5735312 -1630624 5734576 1630456 5734584 1630440 5735312 1630608 5735424 -1630624 5734576 1630048 5734248 1630456 5734584 1630440 5735312 -1630456 5734584 1630048 5734248 1630120 5735160 1630440 5735312 -1630120 5735160 1630456 5734584 1630048 5734248 1629696 5735040 -1630120 5735160 1630440 5735312 1630456 5734584 1629696 5735040 -1630456 5734584 1630624 5734576 1630048 5734248 1629696 5735040 -1630048 5734248 1629920 5734216 1629696 5735040 1630456 5734584 -1630048 5734248 1630456 5734584 1630624 5734576 1630224 5734232 -1630456 5734584 1630440 5735312 1630624 5734576 1630224 5734232 -1630624 5734576 1630392 5734184 1630224 5734232 1630456 5734584 -1630624 5734576 1630568 5734144 1630392 5734184 1630456 5734584 -1630624 5734576 1630768 5734504 1630568 5734144 1630456 5734584 -1630624 5734576 1630568 5734144 1630456 5734584 1630440 5735312 -1630392 5734184 1630224 5734232 1630456 5734584 1630568 5734144 -1630048 5734248 1629696 5735040 1630456 5734584 1630224 5734232 -1630224 5734232 1630048 5734248 1630456 5734584 1630392 5734184 -1630048 5734248 1630430 5734574 1630456 5734584 1630224 5734232 -1630430 5734574 1629696 5735040 1630456 5734584 1630224 5734232 -1630048 5734248 1629696 5735040 1630430 5734574 1630224 5734232 -1630456 5734584 1630430 5734574 1629696 5735040 1630120 5735160 -1630456 5734584 1630430 5734574 1630120 5735160 1630440 5735312 -1630456 5734584 1630224 5734232 1630430 5734574 1630120 5735160 -1630430 5734574 1630048 5734248 1629696 5735040 1630120 5735160 -1629696 5735040 1630430 5734574 1630048 5734248 1629920 5734216 -1630456 5734584 1630392 5734184 1630224 5734232 1630430 5734574 -1630456 5734584 1630568 5734144 1630392 5734184 1630430 5734574 -1630456 5734584 1630392 5734184 1630430 5734574 1630120 5735160 -1630224 5734232 1630048 5734248 1630430 5734574 1630392 5734184 -1629168 5734864 1629712 5734288 1629760 5734112 1629224 5733944 -1629760 5734112 1629664 5734016 1629224 5733944 1629712 5734288 -1629224 5733944 1629168 5734864 1629712 5734288 1629664 5734016 -1629168 5734864 1629696 5735040 1629712 5734288 1629224 5733944 -1629712 5734288 1629696 5735040 1629760 5734112 1629664 5734016 -1629760 5734112 1629712 5734288 1629696 5735040 1629920 5734216 -1629712 5734288 1629168 5734864 1629696 5735040 1629920 5734216 -1629760 5734112 1629664 5734016 1629712 5734288 1629920 5734216 -1629696 5735040 1630048 5734248 1629920 5734216 1629712 5734288 -1629696 5735040 1630048 5734248 1629712 5734288 1629168 5734864 -1629696 5735040 1630430 5734574 1630048 5734248 1629712 5734288 -1629920 5734216 1629760 5734112 1629712 5734288 1630048 5734248 -1629664 5734016 1629432 5733824 1629224 5733944 1629712 5734288 -1629168 5734864 1629712 5734288 1629224 5733944 1628944 5734832 -1629696 5735040 1630120 5735160 1630430 5734574 1629712 5734288 -1629696 5735040 1630430 5734574 1629712 5734288 1629168 5734864 -1630430 5734574 1630224 5734232 1630048 5734248 1629712 5734288 -1629712 5734288 1630430 5734574 1630048 5734248 1629920 5734216 -1629224 5733944 1629560 5734232 1629712 5734288 1629664 5734016 -1629712 5734288 1629760 5734112 1629664 5734016 1629560 5734232 -1629664 5734016 1629224 5733944 1629560 5734232 1629760 5734112 -1629712 5734288 1629560 5734232 1629168 5734864 1629696 5735040 -1629560 5734232 1629168 5734864 1629712 5734288 1629760 5734112 -1629712 5734288 1629920 5734216 1629760 5734112 1629560 5734232 -1629224 5733944 1629168 5734864 1629560 5734232 1629664 5734016 -1629224 5733944 1629560 5734232 1629664 5734016 1629432 5733824 -1629560 5734232 1629760 5734112 1629664 5734016 1629432 5733824 -1629224 5733944 1629168 5734864 1629560 5734232 1629432 5733824 -1629224 5733944 1629560 5734232 1629432 5733824 1629064 5733856 -1629168 5734864 1629560 5734232 1629224 5733944 1628944 5734832 -1629224 5733944 1629480 5734176 1629560 5734232 1629432 5733824 -1629480 5734176 1629168 5734864 1629560 5734232 1629432 5733824 -1629560 5734232 1629480 5734176 1629168 5734864 1629712 5734288 -1629224 5733944 1629480 5734176 1629432 5733824 1629064 5733856 -1629224 5733944 1629168 5734864 1629480 5734176 1629432 5733824 -1629560 5734232 1629664 5734016 1629432 5733824 1629480 5734176 -1629560 5734232 1629760 5734112 1629664 5734016 1629480 5734176 -1629560 5734232 1629664 5734016 1629480 5734176 1629168 5734864 -1629432 5733824 1629224 5733944 1629480 5734176 1629664 5734016 -1629168 5734864 1629480 5734176 1629224 5733944 1628944 5734832 -1629168 5734864 1629560 5734232 1629480 5734176 1628944 5734832 -1629480 5734176 1629432 5733824 1629224 5733944 1628944 5734832 -1629224 5733944 1628648 5734680 1628944 5734832 1629480 5734176 -1760125 5760125 1631936 5739320 1631312 5744824 1631920 5751080 -1631312 5744824 1631312 5744920 1631920 5751080 1631936 5739320 -1631312 5744920 1631896 5750984 1631920 5751080 1631936 5739320 -1631920 5751080 1760125 5760125 1631936 5739320 1631312 5744920 -1631240 5734008 1631936 5739320 1760125 5760125 1751256 5699792 -1760125 5760125 1751376 5699848 1751256 5699792 1631936 5739320 -1631312 5744824 1631936 5739320 1631240 5734008 1630704 5735568 -1631240 5734008 1631160 5734184 1630704 5735568 1631936 5739320 -1631160 5734184 1630704 5735512 1630704 5735568 1631936 5739320 -1631240 5734008 1631216 5734056 1631160 5734184 1631936 5739320 -1630704 5735568 1631312 5744824 1631936 5739320 1631160 5734184 -1760125 5760125 1631936 5739320 1631920 5751080 1631896 5751280 -1631240 5734008 1631160 5734184 1631936 5739320 1751256 5699792 -1760125 5760125 1751256 5699792 1631936 5739320 1631920 5751080 -1631936 5739320 1630704 5735568 1631312 5744824 1631312 5744920 -1631312 5744824 1631936 5739320 1630704 5735568 1630952 5743928 -1631936 5739320 1631160 5734184 1630704 5735568 1630952 5743928 -1631312 5744824 1631312 5744920 1631936 5739320 1630952 5743928 -1631312 5744824 1631936 5739320 1630952 5743928 1630992 5744048 -1631312 5744824 1631312 5744920 1631936 5739320 1630992 5744048 -1631312 5744824 1631936 5739320 1630992 5744048 1630976 5744216 -1630704 5735568 1630672 5735640 1630952 5743928 1631936 5739320 -1630704 5735568 1630672 5735640 1631936 5739320 1631160 5734184 -1631936 5739320 1630672 5735640 1630952 5743928 1630992 5744048 -1630672 5735640 1630864 5743768 1630952 5743928 1631936 5739320 -1630672 5735640 1630864 5743768 1631936 5739320 1630704 5735568 -1630952 5743928 1630992 5744048 1631936 5739320 1630864 5743768 -1630672 5735640 1630632 5743536 1630864 5743768 1631936 5739320 -1630672 5735640 1630632 5743536 1631936 5739320 1630704 5735568 -1630864 5743768 1630952 5743928 1631936 5739320 1630632 5743536 -1630672 5735640 1630424 5743368 1630632 5743536 1631936 5739320 -1630672 5735640 1630424 5743368 1631936 5739320 1630704 5735568 -1630672 5735640 1629432 5736720 1630424 5743368 1631936 5739320 -1629432 5736720 1629784 5742896 1630424 5743368 1631936 5739320 -1629432 5736720 1628176 5739664 1629784 5742896 1631936 5739320 -1629784 5742896 1630312 5743312 1630424 5743368 1631936 5739320 -1629432 5736720 1628160 5739568 1628176 5739664 1631936 5739320 -1628176 5739664 1629784 5742896 1631936 5739320 1628160 5739568 -1629784 5742896 1630424 5743368 1631936 5739320 1628176 5739664 -1630672 5735640 1629432 5736720 1631936 5739320 1630704 5735568 -1629432 5736720 1628160 5739568 1631936 5739320 1630672 5735640 -1630672 5735640 1630480 5735720 1629432 5736720 1631936 5739320 -1630672 5735640 1630480 5735720 1631936 5739320 1630704 5735568 -1630480 5735720 1629968 5735816 1629432 5736720 1631936 5739320 -1629432 5736720 1628160 5739568 1631936 5739320 1630480 5735720 -1630632 5743536 1630864 5743768 1631936 5739320 1630424 5743368 -1630424 5743368 1630632 5743536 1631936 5739320 1629784 5742896 -1628176 5739664 1629688 5742824 1629784 5742896 1631936 5739320 -1628176 5739664 1629688 5742824 1631936 5739320 1628160 5739568 -1629784 5742896 1630424 5743368 1631936 5739320 1629688 5742824 -1628176 5739664 1629640 5742832 1629688 5742824 1631936 5739320 -1629432 5736720 1629344 5736744 1628160 5739568 1631936 5739320 -1631240 5734008 1631936 5739320 1751256 5699792 1743888 5687504 -1751256 5699792 1632040 5739168 1631936 5739320 1760125 5760125 -1751256 5699792 1632040 5739168 1760125 5760125 1751376 5699848 -1631936 5739320 1632040 5739168 1631240 5734008 1631160 5734184 -1631240 5734008 1631216 5734056 1631160 5734184 1632040 5739168 -1631936 5739320 1632040 5739168 1631160 5734184 1630704 5735568 -1631160 5734184 1630704 5735512 1630704 5735568 1632040 5739168 -1631936 5739320 1632040 5739168 1630704 5735568 1630672 5735640 -1632040 5739168 1631160 5734184 1630704 5735568 1630672 5735640 -1632040 5739168 1631240 5734008 1631160 5734184 1630704 5735568 -1631936 5739320 1631920 5751080 1760125 5760125 1632040 5739168 -1631936 5739320 1631312 5744920 1631920 5751080 1632040 5739168 -1631312 5744920 1631896 5750984 1631920 5751080 1632040 5739168 -1631936 5739320 1631312 5744824 1631312 5744920 1632040 5739168 -1631312 5744920 1631920 5751080 1632040 5739168 1631312 5744824 -1760125 5760125 1751256 5699792 1632040 5739168 1631920 5751080 -1631920 5751080 1631896 5751280 1760125 5760125 1632040 5739168 -1631920 5751080 1760125 5760125 1632040 5739168 1631312 5744920 -1632040 5739168 1630672 5735640 1631936 5739320 1631312 5744824 -1631936 5739320 1630992 5744048 1631312 5744824 1632040 5739168 -1632040 5739168 1751256 5699792 1631240 5734008 1631160 5734184 -1751256 5699792 1631240 5734008 1632040 5739168 1760125 5760125 -1631936 5739320 1632040 5739168 1630672 5735640 1630480 5735720 -1632040 5739168 1630704 5735568 1630672 5735640 1630480 5735720 -1631936 5739320 1631312 5744824 1632040 5739168 1630480 5735720 -1631936 5739320 1632040 5739168 1630480 5735720 1629432 5736720 -1631936 5739320 1631312 5744824 1632040 5739168 1629432 5736720 -1632040 5739168 1630672 5735640 1630480 5735720 1629432 5736720 -1630480 5735720 1629968 5735816 1629432 5736720 1632040 5739168 -1631936 5739320 1632040 5739168 1629432 5736720 1628160 5739568 -1631240 5734008 1632040 5739168 1751256 5699792 1743888 5687504 -1751256 5699792 1632160 5739160 1760125 5760125 1751376 5699848 -1760125 5760125 1632160 5739160 1632040 5739168 1631920 5751080 -1760125 5760125 1751256 5699792 1632160 5739160 1631920 5751080 -1760125 5760125 1632160 5739160 1631920 5751080 1631896 5751280 -1632040 5739168 1631312 5744920 1631920 5751080 1632160 5739160 -1631312 5744920 1631896 5750984 1631920 5751080 1632160 5739160 -1632040 5739168 1631312 5744824 1631312 5744920 1632160 5739160 -1632040 5739168 1631936 5739320 1631312 5744824 1632160 5739160 -1631312 5744824 1631312 5744920 1632160 5739160 1631936 5739320 -1631920 5751080 1760125 5760125 1632160 5739160 1631312 5744920 -1631312 5744920 1631920 5751080 1632160 5739160 1631312 5744824 -1631936 5739320 1630992 5744048 1631312 5744824 1632160 5739160 -1631312 5744824 1631312 5744920 1632160 5739160 1630992 5744048 -1631936 5739320 1630992 5744048 1632160 5739160 1632040 5739168 -1632160 5739160 1751256 5699792 1632040 5739168 1631936 5739320 -1632040 5739168 1632160 5739160 1751256 5699792 1631240 5734008 -1632160 5739160 1760125 5760125 1751256 5699792 1631240 5734008 -1632040 5739168 1632160 5739160 1631240 5734008 1631160 5734184 -1631240 5734008 1631216 5734056 1631160 5734184 1632160 5739160 -1632040 5739168 1632160 5739160 1631160 5734184 1630704 5735568 -1631160 5734184 1630704 5735512 1630704 5735568 1632160 5739160 -1632040 5739168 1632160 5739160 1630704 5735568 1630672 5735640 -1632040 5739168 1632160 5739160 1630672 5735640 1630480 5735720 -1632160 5739160 1631160 5734184 1630704 5735568 1630672 5735640 -1632160 5739160 1631240 5734008 1631160 5734184 1630704 5735568 -1632040 5739168 1631936 5739320 1632160 5739160 1630672 5735640 -1632160 5739160 1751256 5699792 1631240 5734008 1631160 5734184 -1631936 5739320 1630952 5743928 1630992 5744048 1632160 5739160 -1631936 5739320 1630952 5743928 1632160 5739160 1632040 5739168 -1630992 5744048 1631312 5744824 1632160 5739160 1630952 5743928 -1630992 5744048 1630976 5744216 1631312 5744824 1632160 5739160 -1631936 5739320 1630864 5743768 1630952 5743928 1632160 5739160 -1751256 5699792 1743888 5687504 1631240 5734008 1632160 5739160 -1751256 5699792 1743888 5687504 1632160 5739160 1760125 5760125 -1751256 5699792 1743976 5687584 1743888 5687504 1632160 5739160 -1743888 5687504 1631224 5733936 1631240 5734008 1632160 5739160 -1631240 5734008 1631160 5734184 1632160 5739160 1743888 5687504 -1632160 5739160 1632320 5739232 1760125 5760125 1751256 5699792 -1632160 5739160 1632320 5739232 1751256 5699792 1743888 5687504 -1632160 5739160 1631920 5751080 1632320 5739232 1743888 5687504 -1632320 5739232 1760125 5760125 1751256 5699792 1743888 5687504 -1751256 5699792 1743976 5687584 1743888 5687504 1632320 5739232 -1760125 5760125 1751376 5699848 1751256 5699792 1632320 5739232 -1631920 5751080 1632320 5739232 1632160 5739160 1631312 5744920 -1632320 5739232 1743888 5687504 1632160 5739160 1631312 5744920 -1631920 5751080 1632320 5739232 1631312 5744920 1631896 5750984 -1760125 5760125 1632320 5739232 1631920 5751080 1631896 5751280 -1632160 5739160 1631312 5744824 1631312 5744920 1632320 5739232 -1632160 5739160 1631312 5744824 1632320 5739232 1743888 5687504 -1632160 5739160 1630992 5744048 1631312 5744824 1632320 5739232 -1632160 5739160 1630992 5744048 1632320 5739232 1743888 5687504 -1631312 5744920 1631920 5751080 1632320 5739232 1631312 5744824 -1631312 5744824 1631312 5744920 1632320 5739232 1630992 5744048 -1632160 5739160 1630952 5743928 1630992 5744048 1632320 5739232 -1632160 5739160 1630952 5743928 1632320 5739232 1743888 5687504 -1630992 5744048 1631312 5744824 1632320 5739232 1630952 5743928 -1632320 5739232 1631920 5751080 1760125 5760125 1751256 5699792 -1631920 5751080 1760125 5760125 1632320 5739232 1631312 5744920 -1632160 5739160 1631936 5739320 1630952 5743928 1632320 5739232 -1632160 5739160 1631936 5739320 1632320 5739232 1743888 5687504 -1632160 5739160 1632040 5739168 1631936 5739320 1632320 5739232 -1630952 5743928 1630992 5744048 1632320 5739232 1631936 5739320 -1630992 5744048 1630976 5744216 1631312 5744824 1632320 5739232 -1631936 5739320 1630864 5743768 1630952 5743928 1632320 5739232 -1630952 5743928 1630992 5744048 1632320 5739232 1630864 5743768 -1631936 5739320 1630864 5743768 1632320 5739232 1632160 5739160 -1631936 5739320 1630632 5743536 1630864 5743768 1632320 5739232 -1632160 5739160 1632320 5739232 1743888 5687504 1631240 5734008 -1632320 5739232 1751256 5699792 1743888 5687504 1631240 5734008 -1632160 5739160 1631936 5739320 1632320 5739232 1631240 5734008 -1743888 5687504 1631224 5733936 1631240 5734008 1632320 5739232 -1632160 5739160 1632320 5739232 1631240 5734008 1631160 5734184 -1632160 5739160 1631936 5739320 1632320 5739232 1631160 5734184 -1631240 5734008 1631216 5734056 1631160 5734184 1632320 5739232 -1632160 5739160 1632320 5739232 1631160 5734184 1630704 5735568 -1632160 5739160 1631936 5739320 1632320 5739232 1630704 5735568 -1631160 5734184 1630704 5735512 1630704 5735568 1632320 5739232 -1632160 5739160 1632320 5739232 1630704 5735568 1630672 5735640 -1632320 5739232 1631240 5734008 1631160 5734184 1630704 5735568 -1632320 5739232 1743888 5687504 1631240 5734008 1631160 5734184 -1760125 5760125 1632432 5739272 1631920 5751080 1631896 5751280 -1632320 5739232 1632432 5739272 1760125 5760125 1751256 5699792 -1632320 5739232 1632432 5739272 1751256 5699792 1743888 5687504 -1632320 5739232 1632432 5739272 1743888 5687504 1631240 5734008 -1632432 5739272 1751256 5699792 1743888 5687504 1631240 5734008 -1751256 5699792 1743976 5687584 1743888 5687504 1632432 5739272 -1760125 5760125 1751376 5699848 1751256 5699792 1632432 5739272 -1743888 5687504 1631224 5733936 1631240 5734008 1632432 5739272 -1632432 5739272 1760125 5760125 1751256 5699792 1743888 5687504 -1632320 5739232 1631920 5751080 1632432 5739272 1631240 5734008 -1631920 5751080 1632432 5739272 1632320 5739232 1631312 5744920 -1631920 5751080 1632432 5739272 1631312 5744920 1631896 5750984 -1632320 5739232 1631312 5744824 1631312 5744920 1632432 5739272 -1632320 5739232 1630992 5744048 1631312 5744824 1632432 5739272 -1632320 5739232 1630952 5743928 1630992 5744048 1632432 5739272 -1631312 5744824 1631312 5744920 1632432 5739272 1630992 5744048 -1630992 5744048 1631312 5744824 1632432 5739272 1630952 5743928 -1632320 5739232 1630864 5743768 1630952 5743928 1632432 5739272 -1630952 5743928 1630992 5744048 1632432 5739272 1630864 5743768 -1632432 5739272 1631240 5734008 1632320 5739232 1630864 5743768 -1632432 5739272 1631312 5744824 1631312 5744920 1631896 5750984 -1632432 5739272 1631920 5751080 1760125 5760125 1751256 5699792 -1631920 5751080 1760125 5760125 1632432 5739272 1631896 5750984 -1630992 5744048 1630976 5744216 1631312 5744824 1632432 5739272 -1632320 5739232 1631936 5739320 1630864 5743768 1632432 5739272 -1630864 5743768 1630952 5743928 1632432 5739272 1631936 5739320 -1632320 5739232 1631936 5739320 1632432 5739272 1631240 5734008 -1632320 5739232 1632160 5739160 1631936 5739320 1632432 5739272 -1631936 5739320 1630632 5743536 1630864 5743768 1632432 5739272 -1630864 5743768 1630952 5743928 1632432 5739272 1630632 5743536 -1631936 5739320 1630632 5743536 1632432 5739272 1632320 5739232 -1631936 5739320 1630424 5743368 1630632 5743536 1632432 5739272 -1631312 5744920 1631096 5748624 1631896 5750984 1632432 5739272 -1632320 5739232 1632432 5739272 1631240 5734008 1631160 5734184 -1632432 5739272 1743888 5687504 1631240 5734008 1631160 5734184 -1631240 5734008 1631216 5734056 1631160 5734184 1632432 5739272 -1632320 5739232 1632432 5739272 1631160 5734184 1630704 5735568 -1631160 5734184 1630704 5735512 1630704 5735568 1632432 5739272 -1632320 5739232 1632432 5739272 1630704 5735568 1632160 5739160 -1630704 5735568 1630672 5735640 1632160 5739160 1632432 5739272 -1632432 5739272 1631160 5734184 1630704 5735568 1632160 5739160 -1632320 5739232 1631936 5739320 1632432 5739272 1632160 5739160 -1632432 5739272 1631240 5734008 1631160 5734184 1630704 5735568 -1751256 5699792 1632528 5739272 1760125 5760125 1751376 5699848 -1632432 5739272 1632528 5739272 1751256 5699792 1743888 5687504 -1632432 5739272 1632528 5739272 1743888 5687504 1631240 5734008 -1632432 5739272 1632528 5739272 1631240 5734008 1631160 5734184 -1632528 5739272 1743888 5687504 1631240 5734008 1631160 5734184 -1751256 5699792 1743976 5687584 1743888 5687504 1632528 5739272 -1631240 5734008 1631216 5734056 1631160 5734184 1632528 5739272 -1743888 5687504 1631224 5733936 1631240 5734008 1632528 5739272 -1632528 5739272 1751256 5699792 1743888 5687504 1631240 5734008 -1760125 5760125 1632528 5739272 1632432 5739272 1631920 5751080 -1760125 5760125 1632528 5739272 1631920 5751080 1631896 5751280 -1632432 5739272 1631920 5751080 1632528 5739272 1631160 5734184 -1632432 5739272 1631896 5750984 1631920 5751080 1632528 5739272 -1632432 5739272 1631312 5744920 1631896 5750984 1632528 5739272 -1632432 5739272 1631312 5744824 1631312 5744920 1632528 5739272 -1631312 5744920 1631896 5750984 1632528 5739272 1631312 5744824 -1632432 5739272 1630992 5744048 1631312 5744824 1632528 5739272 -1632432 5739272 1630952 5743928 1630992 5744048 1632528 5739272 -1632432 5739272 1630864 5743768 1630952 5743928 1632528 5739272 -1630992 5744048 1631312 5744824 1632528 5739272 1630952 5743928 -1630952 5743928 1630992 5744048 1632528 5739272 1630864 5743768 -1632432 5739272 1630632 5743536 1630864 5743768 1632528 5739272 -1630864 5743768 1630952 5743928 1632528 5739272 1630632 5743536 -1631312 5744824 1631312 5744920 1632528 5739272 1630992 5744048 -1631920 5751080 1760125 5760125 1632528 5739272 1631896 5750984 -1632432 5739272 1630632 5743536 1632528 5739272 1631160 5734184 -1631896 5750984 1631920 5751080 1632528 5739272 1631312 5744920 -1632528 5739272 1760125 5760125 1751256 5699792 1743888 5687504 -1760125 5760125 1751256 5699792 1632528 5739272 1631920 5751080 -1630992 5744048 1630976 5744216 1631312 5744824 1632528 5739272 -1632432 5739272 1631936 5739320 1630632 5743536 1632528 5739272 -1631312 5744920 1631096 5748624 1631896 5750984 1632528 5739272 -1632432 5739272 1632528 5739272 1631160 5734184 1630704 5735568 -1632528 5739272 1631240 5734008 1631160 5734184 1630704 5735568 -1631160 5734184 1630704 5735512 1630704 5735568 1632528 5739272 -1632432 5739272 1632528 5739272 1630704 5735568 1632160 5739160 -1630704 5735568 1630672 5735640 1632160 5739160 1632528 5739272 -1632432 5739272 1632528 5739272 1632160 5739160 1632320 5739232 -1632528 5739272 1630704 5735568 1632160 5739160 1632320 5739232 -1632432 5739272 1630632 5743536 1632528 5739272 1632320 5739232 -1632528 5739272 1631160 5734184 1630704 5735568 1632160 5739160 -1632528 5739272 1632616 5739192 1631240 5734008 1631160 5734184 -1632528 5739272 1632616 5739192 1631160 5734184 1630704 5735568 -1632616 5739192 1631240 5734008 1631160 5734184 1630704 5735568 -1631160 5734184 1630704 5735512 1630704 5735568 1632616 5739192 -1631240 5734008 1631216 5734056 1631160 5734184 1632616 5739192 -1631240 5734008 1632616 5739192 1743888 5687504 1631224 5733936 -1743888 5687504 1632616 5739192 1632528 5739272 1751256 5699792 -1743888 5687504 1632616 5739192 1751256 5699792 1743976 5687584 -1632528 5739272 1760125 5760125 1751256 5699792 1632616 5739192 -1760125 5760125 1751376 5699848 1751256 5699792 1632616 5739192 -1751256 5699792 1743888 5687504 1632616 5739192 1760125 5760125 -1632528 5739272 1760125 5760125 1632616 5739192 1630704 5735568 -1632528 5739272 1631920 5751080 1760125 5760125 1632616 5739192 -1631920 5751080 1631896 5751280 1760125 5760125 1632616 5739192 -1632528 5739272 1631896 5750984 1631920 5751080 1632616 5739192 -1632528 5739272 1631312 5744920 1631896 5750984 1632616 5739192 -1632528 5739272 1631312 5744824 1631312 5744920 1632616 5739192 -1632528 5739272 1630992 5744048 1631312 5744824 1632616 5739192 -1631896 5750984 1631920 5751080 1632616 5739192 1631312 5744920 -1631312 5744920 1631896 5750984 1632616 5739192 1631312 5744824 -1760125 5760125 1751256 5699792 1632616 5739192 1631920 5751080 -1632528 5739272 1631312 5744824 1632616 5739192 1630704 5735568 -1631920 5751080 1760125 5760125 1632616 5739192 1631896 5750984 -1632616 5739192 1743888 5687504 1631240 5734008 1631160 5734184 -1743888 5687504 1631240 5734008 1632616 5739192 1751256 5699792 -1631312 5744920 1631096 5748624 1631896 5750984 1632616 5739192 -1632528 5739272 1632616 5739192 1630704 5735568 1632160 5739160 -1632616 5739192 1631160 5734184 1630704 5735568 1632160 5739160 -1630704 5735568 1630672 5735640 1632160 5739160 1632616 5739192 -1630704 5735568 1630672 5735640 1632616 5739192 1631160 5734184 -1630672 5735640 1632040 5739168 1632160 5739160 1632616 5739192 -1632528 5739272 1632616 5739192 1632160 5739160 1632320 5739232 -1632528 5739272 1632616 5739192 1632320 5739232 1632432 5739272 -1632616 5739192 1632160 5739160 1632320 5739232 1632432 5739272 -1632528 5739272 1631312 5744824 1632616 5739192 1632432 5739272 -1632160 5739160 1632320 5739232 1632616 5739192 1630672 5735640 -1631240 5734008 1632696 5739008 1743888 5687504 1631224 5733936 -1743888 5687504 1629944 5726576 1631224 5733936 1632696 5739008 -1743888 5687504 1743800 5687320 1629944 5726576 1632696 5739008 -1629944 5726576 1629944 5726624 1631224 5733936 1632696 5739008 -1631224 5733936 1631240 5734008 1632696 5739008 1629944 5726576 -1632616 5739192 1632696 5739008 1631240 5734008 1631160 5734184 -1632616 5739192 1632696 5739008 1631160 5734184 1630704 5735568 -1632616 5739192 1632696 5739008 1630704 5735568 1630672 5735640 -1632696 5739008 1631160 5734184 1630704 5735568 1630672 5735640 -1631160 5734184 1630704 5735512 1630704 5735568 1632696 5739008 -1631240 5734008 1631216 5734056 1631160 5734184 1632696 5739008 -1632616 5739192 1632696 5739008 1630672 5735640 1632160 5739160 -1632696 5739008 1630704 5735568 1630672 5735640 1632160 5739160 -1630672 5735640 1632040 5739168 1632160 5739160 1632696 5739008 -1630672 5735640 1632040 5739168 1632696 5739008 1630704 5735568 -1630672 5735640 1630480 5735720 1632040 5739168 1632696 5739008 -1632160 5739160 1632616 5739192 1632696 5739008 1632040 5739168 -1632696 5739008 1631240 5734008 1631160 5734184 1630704 5735568 -1632616 5739192 1743888 5687504 1632696 5739008 1632160 5739160 -1743888 5687504 1632696 5739008 1632616 5739192 1751256 5699792 -1743888 5687504 1632696 5739008 1751256 5699792 1743976 5687584 -1632616 5739192 1760125 5760125 1751256 5699792 1632696 5739008 -1760125 5760125 1751376 5699848 1751256 5699792 1632696 5739008 -1632616 5739192 1631920 5751080 1760125 5760125 1632696 5739008 -1631920 5751080 1631896 5751280 1760125 5760125 1632696 5739008 -1760125 5760125 1751256 5699792 1632696 5739008 1631920 5751080 -1632616 5739192 1631896 5750984 1631920 5751080 1632696 5739008 -1632616 5739192 1631312 5744920 1631896 5750984 1632696 5739008 -1632616 5739192 1631312 5744824 1631312 5744920 1632696 5739008 -1631920 5751080 1760125 5760125 1632696 5739008 1631896 5750984 -1631896 5750984 1631920 5751080 1632696 5739008 1631312 5744920 -1632696 5739008 1632160 5739160 1632616 5739192 1631312 5744920 -1751256 5699792 1743888 5687504 1632696 5739008 1760125 5760125 -1632696 5739008 1751256 5699792 1743888 5687504 1629944 5726576 -1631240 5734008 1631160 5734184 1632696 5739008 1631224 5733936 -1631312 5744920 1631096 5748624 1631896 5750984 1632696 5739008 -1632616 5739192 1632696 5739008 1632160 5739160 1632320 5739232 -1632696 5739008 1632040 5739168 1632160 5739160 1632320 5739232 -1632616 5739192 1632696 5739008 1632320 5739232 1632432 5739272 -1632616 5739192 1631312 5744920 1632696 5739008 1632320 5739232 -1632696 5739008 1632544 5738712 1630704 5735568 1630672 5735640 -1632696 5739008 1632544 5738712 1630672 5735640 1632040 5739168 -1632544 5738712 1630704 5735568 1630672 5735640 1632040 5739168 -1630704 5735568 1632544 5738712 1631160 5734184 1630704 5735512 -1632696 5739008 1632544 5738712 1632040 5739168 1632160 5739160 -1632544 5738712 1630672 5735640 1632040 5739168 1632160 5739160 -1630672 5735640 1630480 5735720 1632040 5739168 1632544 5738712 -1632040 5739168 1632160 5739160 1632544 5738712 1630480 5735720 -1630672 5735640 1630480 5735720 1632544 5738712 1630704 5735568 -1632696 5739008 1632544 5738712 1632160 5739160 1632320 5739232 -1632544 5738712 1632040 5739168 1632160 5739160 1632320 5739232 -1631160 5734184 1632544 5738712 1632696 5739008 1631240 5734008 -1631160 5734184 1632544 5738712 1631240 5734008 1631216 5734056 -1632696 5739008 1631240 5734008 1632544 5738712 1632320 5739232 -1632544 5738712 1631160 5734184 1630704 5735568 1630672 5735640 -1631160 5734184 1630704 5735568 1632544 5738712 1631240 5734008 -1632696 5739008 1631224 5733936 1631240 5734008 1632544 5738712 -1630480 5735720 1629432 5736720 1632040 5739168 1632544 5738712 -1632040 5739168 1632160 5739160 1632544 5738712 1629432 5736720 -1630480 5735720 1629432 5736720 1632544 5738712 1630672 5735640 -1630480 5735720 1629968 5735816 1629432 5736720 1632544 5738712 -1629432 5736720 1631936 5739320 1632040 5739168 1632544 5738712 -1632696 5739008 1632544 5738712 1632320 5739232 1632616 5739192 -1630480 5735720 1632328 5738560 1632544 5738712 1630672 5735640 -1632544 5738712 1630704 5735568 1630672 5735640 1632328 5738560 -1630672 5735640 1630480 5735720 1632328 5738560 1630704 5735568 -1630480 5735720 1629432 5736720 1632328 5738560 1630672 5735640 -1632544 5738712 1631160 5734184 1630704 5735568 1632328 5738560 -1630704 5735568 1630672 5735640 1632328 5738560 1631160 5734184 -1631160 5734184 1630704 5735512 1630704 5735568 1632328 5738560 -1632328 5738560 1629432 5736720 1632544 5738712 1631160 5734184 -1632544 5738712 1631240 5734008 1631160 5734184 1632328 5738560 -1631240 5734008 1631216 5734056 1631160 5734184 1632328 5738560 -1632544 5738712 1632696 5739008 1631240 5734008 1632328 5738560 -1631160 5734184 1630704 5735568 1632328 5738560 1631240 5734008 -1632544 5738712 1631240 5734008 1632328 5738560 1629432 5736720 -1632544 5738712 1632328 5738560 1629432 5736720 1632040 5739168 -1632544 5738712 1632328 5738560 1632040 5739168 1632160 5739160 -1632544 5738712 1632328 5738560 1632160 5739160 1632320 5739232 -1632328 5738560 1630480 5735720 1629432 5736720 1632040 5739168 -1632544 5738712 1631240 5734008 1632328 5738560 1632160 5739160 -1632328 5738560 1629432 5736720 1632040 5739168 1632160 5739160 -1629432 5736720 1632328 5738560 1630480 5735720 1629968 5735816 -1629432 5736720 1631936 5739320 1632040 5739168 1632328 5738560 -1629432 5736720 1631912 5738592 1632328 5738560 1630480 5735720 -1631912 5738592 1632040 5739168 1632328 5738560 1630480 5735720 -1632328 5738560 1630672 5735640 1630480 5735720 1631912 5738592 -1632328 5738560 1630704 5735568 1630672 5735640 1631912 5738592 -1630480 5735720 1629432 5736720 1631912 5738592 1630672 5735640 -1632328 5738560 1630672 5735640 1631912 5738592 1632040 5739168 -1629432 5736720 1632040 5739168 1631912 5738592 1630480 5735720 -1632328 5738560 1631912 5738592 1632040 5739168 1632160 5739160 -1632328 5738560 1631912 5738592 1632160 5739160 1632544 5738712 -1632328 5738560 1630672 5735640 1631912 5738592 1632160 5739160 -1631912 5738592 1629432 5736720 1632040 5739168 1632160 5739160 -1629432 5736720 1631912 5738592 1630480 5735720 1629968 5735816 -1632040 5739168 1631912 5738592 1629432 5736720 1631936 5739320 -1632040 5739168 1632160 5739160 1631912 5738592 1631936 5739320 -1631912 5738592 1630480 5735720 1629432 5736720 1631936 5739320 -1629432 5736720 1628160 5739568 1631936 5739320 1631912 5738592 -1629432 5736720 1628160 5739568 1631912 5738592 1630480 5735720 -1628160 5739568 1628176 5739664 1631936 5739320 1631912 5738592 -1631936 5739320 1632040 5739168 1631912 5738592 1628160 5739568 -1629432 5736720 1629344 5736744 1628160 5739568 1631912 5738592 -1629432 5736720 1631504 5738552 1631912 5738592 1630480 5735720 -1631912 5738592 1630672 5735640 1630480 5735720 1631504 5738552 -1631912 5738592 1632328 5738560 1630672 5735640 1631504 5738552 -1631504 5738552 1628160 5739568 1631912 5738592 1630672 5735640 -1630480 5735720 1629432 5736720 1631504 5738552 1630672 5735640 -1629432 5736720 1628160 5739568 1631504 5738552 1630480 5735720 -1629432 5736720 1631504 5738552 1630480 5735720 1629968 5735816 -1631912 5738592 1631504 5738552 1628160 5739568 1631936 5739320 -1631912 5738592 1630672 5735640 1631504 5738552 1631936 5739320 -1631504 5738552 1629432 5736720 1628160 5739568 1631936 5739320 -1628160 5739568 1628176 5739664 1631936 5739320 1631504 5738552 -1628176 5739664 1629688 5742824 1631936 5739320 1631504 5738552 -1628160 5739568 1628176 5739664 1631504 5738552 1629432 5736720 -1631936 5739320 1631912 5738592 1631504 5738552 1628176 5739664 -1631912 5738592 1631504 5738552 1631936 5739320 1632040 5739168 -1631912 5738592 1631504 5738552 1632040 5739168 1632160 5739160 -1631912 5738592 1630672 5735640 1631504 5738552 1632040 5739168 -1631504 5738552 1628176 5739664 1631936 5739320 1632040 5739168 -1628160 5739568 1631504 5738552 1629432 5736720 1629344 5736744 -1628160 5739568 1628176 5739664 1631504 5738552 1629344 5736744 -1631504 5738552 1630480 5735720 1629432 5736720 1629344 5736744 -1628160 5739568 1631504 5738552 1629344 5736744 1628096 5737824 -1629344 5736744 1629248 5736760 1628096 5737824 1631504 5738552 -1628160 5739568 1628176 5739664 1631504 5738552 1628096 5737824 -1628160 5739568 1631504 5738552 1628096 5737824 1628072 5737856 -1631504 5738552 1629432 5736720 1629344 5736744 1628096 5737824 -1628160 5739568 1631456 5738568 1631504 5738552 1628096 5737824 -1631456 5738568 1628176 5739664 1631504 5738552 1628096 5737824 -1628160 5739568 1628176 5739664 1631456 5738568 1628096 5737824 -1631504 5738552 1631456 5738568 1628176 5739664 1631936 5739320 -1628176 5739664 1629688 5742824 1631936 5739320 1631456 5738568 -1631504 5738552 1628096 5737824 1631456 5738568 1631936 5739320 -1631456 5738568 1628160 5739568 1628176 5739664 1631936 5739320 -1631504 5738552 1629344 5736744 1628096 5737824 1631456 5738568 -1629344 5736744 1629248 5736760 1628096 5737824 1631456 5738568 -1628096 5737824 1628160 5739568 1631456 5738568 1629344 5736744 -1631504 5738552 1629344 5736744 1631456 5738568 1631936 5739320 -1628160 5739568 1631456 5738568 1628096 5737824 1628072 5737856 -1631504 5738552 1631456 5738568 1631936 5739320 1632040 5739168 -1631504 5738552 1629344 5736744 1631456 5738568 1632040 5739168 -1631456 5738568 1628176 5739664 1631936 5739320 1632040 5739168 -1631504 5738552 1631456 5738568 1632040 5739168 1631912 5738592 -1631504 5738552 1629432 5736720 1629344 5736744 1631456 5738568 -1631504 5738552 1629432 5736720 1631456 5738568 1632040 5739168 -1631504 5738552 1630480 5735720 1629432 5736720 1631456 5738568 -1631504 5738552 1630672 5735640 1630480 5735720 1631456 5738568 -1631504 5738552 1630480 5735720 1631456 5738568 1632040 5739168 -1629344 5736744 1628096 5737824 1631456 5738568 1629432 5736720 -1630480 5735720 1629968 5735816 1629432 5736720 1631456 5738568 -1629432 5736720 1629344 5736744 1631456 5738568 1630480 5735720 -1631936 5739320 1631392 5738624 1628176 5739664 1629688 5742824 -1628176 5739664 1631392 5738624 1631456 5738568 1628160 5739568 -1631392 5738624 1631936 5739320 1631456 5738568 1628160 5739568 -1631456 5738568 1628096 5737824 1628160 5739568 1631392 5738624 -1631456 5738568 1629344 5736744 1628096 5737824 1631392 5738624 -1629344 5736744 1629248 5736760 1628096 5737824 1631392 5738624 -1628160 5739568 1628176 5739664 1631392 5738624 1628096 5737824 -1631456 5738568 1629344 5736744 1631392 5738624 1631936 5739320 -1628096 5737824 1628160 5739568 1631392 5738624 1629344 5736744 -1628176 5739664 1631936 5739320 1631392 5738624 1628160 5739568 -1631456 5738568 1631392 5738624 1631936 5739320 1632040 5739168 -1631456 5738568 1629344 5736744 1631392 5738624 1632040 5739168 -1631392 5738624 1628176 5739664 1631936 5739320 1632040 5739168 -1631456 5738568 1629432 5736720 1629344 5736744 1631392 5738624 -1629344 5736744 1628096 5737824 1631392 5738624 1629432 5736720 -1631456 5738568 1629432 5736720 1631392 5738624 1632040 5739168 -1628096 5737824 1628072 5737856 1628160 5739568 1631392 5738624 -1631456 5738568 1631392 5738624 1632040 5739168 1631504 5738552 -1631456 5738568 1629432 5736720 1631392 5738624 1631504 5738552 -1631392 5738624 1631936 5739320 1632040 5739168 1631504 5738552 -1632040 5739168 1631912 5738592 1631504 5738552 1631392 5738624 -1632040 5739168 1632160 5739160 1631912 5738592 1631392 5738624 -1632040 5739168 1631912 5738592 1631392 5738624 1631936 5739320 -1631504 5738552 1631456 5738568 1631392 5738624 1631912 5738592 -1631456 5738568 1630480 5735720 1629432 5736720 1631392 5738624 -1631392 5738624 1631352 5738632 1628160 5739568 1628176 5739664 -1628096 5737824 1631352 5738632 1631392 5738624 1629344 5736744 -1628096 5737824 1631352 5738632 1629344 5736744 1629248 5736760 -1631392 5738624 1629432 5736720 1629344 5736744 1631352 5738632 -1629344 5736744 1628096 5737824 1631352 5738632 1629432 5736720 -1631392 5738624 1629432 5736720 1631352 5738632 1628176 5739664 -1631392 5738624 1631352 5738632 1628176 5739664 1631936 5739320 -1628176 5739664 1629688 5742824 1631936 5739320 1631352 5738632 -1631352 5738632 1628160 5739568 1628176 5739664 1631936 5739320 -1631392 5738624 1631352 5738632 1631936 5739320 1632040 5739168 -1631392 5738624 1629432 5736720 1631352 5738632 1631936 5739320 -1631352 5738632 1628096 5737824 1628160 5739568 1628176 5739664 -1628096 5737824 1628160 5739568 1631352 5738632 1629344 5736744 -1631392 5738624 1631456 5738568 1629432 5736720 1631352 5738632 -1629432 5736720 1629344 5736744 1631352 5738632 1631456 5738568 -1631392 5738624 1631456 5738568 1631352 5738632 1631936 5739320 -1628160 5739568 1631352 5738632 1628096 5737824 1628072 5737856 -1631456 5738568 1630480 5735720 1629432 5736720 1631352 5738632 -1631352 5738632 1631240 5738608 1628160 5739568 1628176 5739664 -1631352 5738632 1631240 5738608 1628176 5739664 1631936 5739320 -1628176 5739664 1629688 5742824 1631936 5739320 1631240 5738608 -1631352 5738632 1631240 5738608 1631936 5739320 1631392 5738624 -1631240 5738608 1628160 5739568 1628176 5739664 1631936 5739320 -1631352 5738632 1628096 5737824 1631240 5738608 1631936 5739320 -1628096 5737824 1631240 5738608 1631352 5738632 1629344 5736744 -1628096 5737824 1631240 5738608 1629344 5736744 1629248 5736760 -1631352 5738632 1629432 5736720 1629344 5736744 1631240 5738608 -1631352 5738632 1631456 5738568 1629432 5736720 1631240 5738608 -1629432 5736720 1629344 5736744 1631240 5738608 1631456 5738568 -1631240 5738608 1631936 5739320 1631352 5738632 1631456 5738568 -1629344 5736744 1628096 5737824 1631240 5738608 1629432 5736720 -1628096 5737824 1628160 5739568 1631240 5738608 1629344 5736744 -1631240 5738608 1628096 5737824 1628160 5739568 1628176 5739664 -1631352 5738632 1631392 5738624 1631456 5738568 1631240 5738608 -1628160 5739568 1631240 5738608 1628096 5737824 1628072 5737856 -1631456 5738568 1630480 5735720 1629432 5736720 1631240 5738608 -1631456 5738568 1630480 5735720 1631240 5738608 1631352 5738632 -1631456 5738568 1631504 5738552 1630480 5735720 1631240 5738608 -1631504 5738552 1630672 5735640 1630480 5735720 1631240 5738608 -1631456 5738568 1631504 5738552 1631240 5738608 1631352 5738632 -1629432 5736720 1629344 5736744 1631240 5738608 1630480 5735720 -1630480 5735720 1629968 5735816 1629432 5736720 1631240 5738608 -1630480 5735720 1629432 5736720 1631240 5738608 1631504 5738552 -1629432 5736720 1631192 5738560 1631240 5738608 1630480 5735720 -1631240 5738608 1631192 5738560 1629344 5736744 1628096 5737824 -1629344 5736744 1629248 5736760 1628096 5737824 1631192 5738560 -1631192 5738560 1628096 5737824 1631240 5738608 1630480 5735720 -1631240 5738608 1631192 5738560 1628096 5737824 1628160 5739568 -1631192 5738560 1629344 5736744 1628096 5737824 1628160 5739568 -1631240 5738608 1630480 5735720 1631192 5738560 1628160 5739568 -1631192 5738560 1629432 5736720 1629344 5736744 1628096 5737824 -1629432 5736720 1629344 5736744 1631192 5738560 1630480 5735720 -1631240 5738608 1631192 5738560 1628160 5739568 1628176 5739664 -1631240 5738608 1631192 5738560 1628176 5739664 1631936 5739320 -1631240 5738608 1630480 5735720 1631192 5738560 1628176 5739664 -1631192 5738560 1628096 5737824 1628160 5739568 1628176 5739664 -1628096 5737824 1628072 5737856 1628160 5739568 1631192 5738560 -1629432 5736720 1631192 5738560 1630480 5735720 1629968 5735816 -1631240 5738608 1631504 5738552 1630480 5735720 1631192 5738560 -1631504 5738552 1630672 5735640 1630480 5735720 1631192 5738560 -1631504 5738552 1631912 5738592 1630672 5735640 1631192 5738560 -1631240 5738608 1631456 5738568 1631504 5738552 1631192 5738560 -1631240 5738608 1631352 5738632 1631456 5738568 1631192 5738560 -1630480 5735720 1629432 5736720 1631192 5738560 1630672 5735640 -1631240 5738608 1631456 5738568 1631192 5738560 1628176 5739664 -1631504 5738552 1630672 5735640 1631192 5738560 1631456 5738568 -1628096 5737824 1631152 5738560 1631192 5738560 1629344 5736744 -1628096 5737824 1631152 5738560 1629344 5736744 1629248 5736760 -1631192 5738560 1631152 5738560 1628160 5739568 1628176 5739664 -1631192 5738560 1629432 5736720 1629344 5736744 1631152 5738560 -1629344 5736744 1628096 5737824 1631152 5738560 1629432 5736720 -1631152 5738560 1628176 5739664 1631192 5738560 1629432 5736720 -1631192 5738560 1630480 5735720 1629432 5736720 1631152 5738560 -1631192 5738560 1630672 5735640 1630480 5735720 1631152 5738560 -1631192 5738560 1631504 5738552 1630672 5735640 1631152 5738560 -1629432 5736720 1629344 5736744 1631152 5738560 1630480 5735720 -1631192 5738560 1630672 5735640 1631152 5738560 1628176 5739664 -1630480 5735720 1629432 5736720 1631152 5738560 1630672 5735640 -1631192 5738560 1631152 5738560 1628176 5739664 1631240 5738608 -1628176 5739664 1631936 5739320 1631240 5738608 1631152 5738560 -1628176 5739664 1629688 5742824 1631936 5739320 1631152 5738560 -1631936 5739320 1631352 5738632 1631240 5738608 1631152 5738560 -1631152 5738560 1628160 5739568 1628176 5739664 1631936 5739320 -1631192 5738560 1630672 5735640 1631152 5738560 1631240 5738608 -1631240 5738608 1631192 5738560 1631152 5738560 1631936 5739320 -1631152 5738560 1628096 5737824 1628160 5739568 1628176 5739664 -1628096 5737824 1628160 5739568 1631152 5738560 1629344 5736744 -1628160 5739568 1631152 5738560 1628096 5737824 1628072 5737856 -1630480 5735720 1629968 5735816 1629432 5736720 1631152 5738560 -1631936 5739320 1631112 5738584 1628176 5739664 1629688 5742824 -1631152 5738560 1631112 5738584 1631936 5739320 1631240 5738608 -1631936 5739320 1631352 5738632 1631240 5738608 1631112 5738584 -1628176 5739664 1631112 5738584 1631152 5738560 1628160 5739568 -1631152 5738560 1631112 5738584 1631240 5738608 1631192 5738560 -1631152 5738560 1628096 5737824 1628160 5739568 1631112 5738584 -1628160 5739568 1628176 5739664 1631112 5738584 1628096 5737824 -1631152 5738560 1628096 5737824 1631112 5738584 1631240 5738608 -1631152 5738560 1629344 5736744 1628096 5737824 1631112 5738584 -1629344 5736744 1629248 5736760 1628096 5737824 1631112 5738584 -1631152 5738560 1629432 5736720 1629344 5736744 1631112 5738584 -1631152 5738560 1630480 5735720 1629432 5736720 1631112 5738584 -1628096 5737824 1628160 5739568 1631112 5738584 1629344 5736744 -1631152 5738560 1629432 5736720 1631112 5738584 1631240 5738608 -1629344 5736744 1628096 5737824 1631112 5738584 1629432 5736720 -1631112 5738584 1628176 5739664 1631936 5739320 1631240 5738608 -1628176 5739664 1631936 5739320 1631112 5738584 1628160 5739568 -1628096 5737824 1628072 5737856 1628160 5739568 1631112 5738584 -1631936 5739320 1631088 5738648 1628176 5739664 1629688 5742824 -1631112 5738584 1631088 5738648 1631936 5739320 1631240 5738608 -1631936 5739320 1631352 5738632 1631240 5738608 1631088 5738648 -1631936 5739320 1631392 5738624 1631352 5738632 1631088 5738648 -1631112 5738584 1631088 5738648 1631240 5738608 1631152 5738560 -1631240 5738608 1631112 5738584 1631088 5738648 1631352 5738632 -1631112 5738584 1628176 5739664 1631088 5738648 1631240 5738608 -1628176 5739664 1631088 5738648 1631112 5738584 1628160 5739568 -1631112 5738584 1628096 5737824 1628160 5739568 1631088 5738648 -1631112 5738584 1629344 5736744 1628096 5737824 1631088 5738648 -1629344 5736744 1629248 5736760 1628096 5737824 1631088 5738648 -1628096 5737824 1628160 5739568 1631088 5738648 1629344 5736744 -1631112 5738584 1629432 5736720 1629344 5736744 1631088 5738648 -1631088 5738648 1631240 5738608 1631112 5738584 1629344 5736744 -1628160 5739568 1628176 5739664 1631088 5738648 1628096 5737824 -1631936 5739320 1631352 5738632 1631088 5738648 1629688 5742824 -1631088 5738648 1628160 5739568 1628176 5739664 1629688 5742824 -1628176 5739664 1629640 5742832 1629688 5742824 1631088 5738648 -1628096 5737824 1628072 5737856 1628160 5739568 1631088 5738648 -1631936 5739320 1631088 5738648 1629688 5742824 1629784 5742896 -1629688 5742824 1631120 5738680 1631088 5738648 1628176 5739664 -1631088 5738648 1631120 5738680 1631936 5739320 1631352 5738632 -1631088 5738648 1631120 5738680 1631352 5738632 1631240 5738608 -1631936 5739320 1631392 5738624 1631352 5738632 1631120 5738680 -1631088 5738648 1631120 5738680 1631240 5738608 1631112 5738584 -1631120 5738680 1631352 5738632 1631240 5738608 1631112 5738584 -1631240 5738608 1631152 5738560 1631112 5738584 1631120 5738680 -1631240 5738608 1631152 5738560 1631120 5738680 1631352 5738632 -1631240 5738608 1631192 5738560 1631152 5738560 1631120 5738680 -1631112 5738584 1631088 5738648 1631120 5738680 1631152 5738560 -1631120 5738680 1631936 5739320 1631352 5738632 1631240 5738608 -1631120 5738680 1631112 5738584 1631088 5738648 1628176 5739664 -1631088 5738648 1628160 5739568 1628176 5739664 1631120 5738680 -1631120 5738680 1629688 5742824 1631936 5739320 1631352 5738632 -1629688 5742824 1631936 5739320 1631120 5738680 1628176 5739664 -1629688 5742824 1631120 5738680 1628176 5739664 1629640 5742832 -1631936 5739320 1631120 5738680 1629688 5742824 1629784 5742896 -1631120 5738680 1631200 5738752 1631936 5739320 1631352 5738632 -1631936 5739320 1631392 5738624 1631352 5738632 1631200 5738752 -1631936 5739320 1632040 5739168 1631392 5738624 1631200 5738752 -1631120 5738680 1631200 5738752 1631352 5738632 1631240 5738608 -1631120 5738680 1631200 5738752 1631240 5738608 1631152 5738560 -1631352 5738632 1631240 5738608 1631200 5738752 1631392 5738624 -1631120 5738680 1629688 5742824 1631200 5738752 1631240 5738608 -1629688 5742824 1631200 5738752 1631120 5738680 1628176 5739664 -1631120 5738680 1631088 5738648 1628176 5739664 1631200 5738752 -1631200 5738752 1631240 5738608 1631120 5738680 1628176 5739664 -1631200 5738752 1629688 5742824 1631936 5739320 1631392 5738624 -1629688 5742824 1631936 5739320 1631200 5738752 1628176 5739664 -1629688 5742824 1631200 5738752 1628176 5739664 1629640 5742832 -1631936 5739320 1631200 5738752 1629688 5742824 1629784 5742896 -1631200 5738752 1631264 5738848 1631936 5739320 1631392 5738624 -1631936 5739320 1632040 5739168 1631392 5738624 1631264 5738848 -1631200 5738752 1631264 5738848 1631392 5738624 1631352 5738632 -1631200 5738752 1631264 5738848 1631352 5738632 1631240 5738608 -1631392 5738624 1631352 5738632 1631264 5738848 1632040 5739168 -1631200 5738752 1629688 5742824 1631264 5738848 1631352 5738632 -1629688 5742824 1631264 5738848 1631200 5738752 1628176 5739664 -1631200 5738752 1631120 5738680 1628176 5739664 1631264 5738848 -1631120 5738680 1631088 5738648 1628176 5739664 1631264 5738848 -1631264 5738848 1631352 5738632 1631200 5738752 1631120 5738680 -1628176 5739664 1629688 5742824 1631264 5738848 1631120 5738680 -1631264 5738848 1629688 5742824 1631936 5739320 1632040 5739168 -1629688 5742824 1631936 5739320 1631264 5738848 1628176 5739664 -1632040 5739168 1631912 5738592 1631392 5738624 1631264 5738848 -1632040 5739168 1632160 5739160 1631912 5738592 1631264 5738848 -1632040 5739168 1631912 5738592 1631264 5738848 1631936 5739320 -1631392 5738624 1631352 5738632 1631264 5738848 1631912 5738592 -1629688 5742824 1631264 5738848 1628176 5739664 1629640 5742832 -1631912 5738592 1631504 5738552 1631392 5738624 1631264 5738848 -1631392 5738624 1631352 5738632 1631264 5738848 1631504 5738552 -1631912 5738592 1631504 5738552 1631264 5738848 1632040 5739168 -1631504 5738552 1631456 5738568 1631392 5738624 1631264 5738848 -1631936 5739320 1631264 5738848 1629688 5742824 1629784 5742896 -1631264 5738848 1631400 5738976 1631936 5739320 1632040 5739168 -1631264 5738848 1631400 5738976 1632040 5739168 1631912 5738592 -1632040 5739168 1632160 5739160 1631912 5738592 1631400 5738976 -1631400 5738976 1631936 5739320 1632040 5739168 1631912 5738592 -1631264 5738848 1629688 5742824 1631400 5738976 1631912 5738592 -1629688 5742824 1631400 5738976 1631264 5738848 1628176 5739664 -1631264 5738848 1631120 5738680 1628176 5739664 1631400 5738976 -1631400 5738976 1631912 5738592 1631264 5738848 1628176 5739664 -1631400 5738976 1629688 5742824 1631936 5739320 1632040 5739168 -1629688 5742824 1631936 5739320 1631400 5738976 1628176 5739664 -1631264 5738848 1631400 5738976 1631912 5738592 1631504 5738552 -1631400 5738976 1632040 5739168 1631912 5738592 1631504 5738552 -1631264 5738848 1628176 5739664 1631400 5738976 1631504 5738552 -1629688 5742824 1631400 5738976 1628176 5739664 1629640 5742832 -1631264 5738848 1631400 5738976 1631504 5738552 1631392 5738624 -1631264 5738848 1631400 5738976 1631392 5738624 1631352 5738632 -1631264 5738848 1628176 5739664 1631400 5738976 1631392 5738624 -1631400 5738976 1631912 5738592 1631504 5738552 1631392 5738624 -1631504 5738552 1631456 5738568 1631392 5738624 1631400 5738976 -1631936 5739320 1631400 5738976 1629688 5742824 1629784 5742896 -1631400 5738976 1631448 5739216 1631936 5739320 1632040 5739168 -1631400 5738976 1631448 5739216 1632040 5739168 1631912 5738592 -1631400 5738976 1629688 5742824 1631448 5739216 1632040 5739168 -1629688 5742824 1631448 5739216 1631400 5738976 1628176 5739664 -1631400 5738976 1631264 5738848 1628176 5739664 1631448 5739216 -1631264 5738848 1631120 5738680 1628176 5739664 1631448 5739216 -1631120 5738680 1631088 5738648 1628176 5739664 1631448 5739216 -1631088 5738648 1628160 5739568 1628176 5739664 1631448 5739216 -1631264 5738848 1631200 5738752 1631120 5738680 1631448 5739216 -1631120 5738680 1631088 5738648 1631448 5739216 1631264 5738848 -1631264 5738848 1631120 5738680 1631448 5739216 1631400 5738976 -1631448 5739216 1632040 5739168 1631400 5738976 1631264 5738848 -1628176 5739664 1629688 5742824 1631448 5739216 1631088 5738648 -1631448 5739216 1629688 5742824 1631936 5739320 1632040 5739168 -1629688 5742824 1631936 5739320 1631448 5739216 1628176 5739664 -1629688 5742824 1631448 5739216 1628176 5739664 1629640 5742832 -1631936 5739320 1631448 5739216 1629688 5742824 1629784 5742896 -1631936 5739320 1632040 5739168 1631448 5739216 1629784 5742896 -1631448 5739216 1628176 5739664 1629688 5742824 1629784 5742896 -1631936 5739320 1631448 5739216 1629784 5742896 1630424 5743368 -1631448 5739216 1631568 5739328 1631936 5739320 1632040 5739168 -1631448 5739216 1631568 5739328 1632040 5739168 1631400 5738976 -1632040 5739168 1631912 5738592 1631400 5738976 1631568 5739328 -1631568 5739328 1631936 5739320 1632040 5739168 1631400 5738976 -1631448 5739216 1629784 5742896 1631568 5739328 1631400 5738976 -1631568 5739328 1629784 5742896 1631936 5739320 1632040 5739168 -1631936 5739320 1631568 5739328 1629784 5742896 1630424 5743368 -1629784 5742896 1630312 5743312 1630424 5743368 1631568 5739328 -1631936 5739320 1632040 5739168 1631568 5739328 1630424 5743368 -1631568 5739328 1631448 5739216 1629784 5742896 1630424 5743368 -1631936 5739320 1631568 5739328 1630424 5743368 1630632 5743536 -1629784 5742896 1631568 5739328 1631448 5739216 1629688 5742824 -1631568 5739328 1631400 5738976 1631448 5739216 1629688 5742824 -1631448 5739216 1628176 5739664 1629688 5742824 1631568 5739328 -1629784 5742896 1630424 5743368 1631568 5739328 1629688 5742824 -1631568 5739328 1631680 5739464 1631936 5739320 1632040 5739168 -1630424 5743368 1631680 5739464 1631568 5739328 1629784 5742896 -1630424 5743368 1631680 5739464 1629784 5742896 1630312 5743312 -1631680 5739464 1631936 5739320 1631568 5739328 1629784 5742896 -1631568 5739328 1629688 5742824 1629784 5742896 1631680 5739464 -1631568 5739328 1629688 5742824 1631680 5739464 1631936 5739320 -1629784 5742896 1630424 5743368 1631680 5739464 1629688 5742824 -1630424 5743368 1631936 5739320 1631680 5739464 1629784 5742896 -1631936 5739320 1631680 5739464 1630424 5743368 1630632 5743536 -1631936 5739320 1631568 5739328 1631680 5739464 1630632 5743536 -1631680 5739464 1629784 5742896 1630424 5743368 1630632 5743536 -1631936 5739320 1631680 5739464 1630632 5743536 1632432 5739272 -1631936 5739320 1631568 5739328 1631680 5739464 1632432 5739272 -1631936 5739320 1631680 5739464 1632432 5739272 1632320 5739232 -1630632 5743536 1632528 5739272 1632432 5739272 1631680 5739464 -1630632 5743536 1630864 5743768 1632528 5739272 1631680 5739464 -1630864 5743768 1630952 5743928 1632528 5739272 1631680 5739464 -1632528 5739272 1632432 5739272 1631680 5739464 1630864 5743768 -1632432 5739272 1631936 5739320 1631680 5739464 1632528 5739272 -1631680 5739464 1630424 5743368 1630632 5743536 1630864 5743768 -1631568 5739328 1631448 5739216 1629688 5742824 1631680 5739464 -1631448 5739216 1628176 5739664 1629688 5742824 1631680 5739464 -1631568 5739328 1631448 5739216 1631680 5739464 1631936 5739320 -1629688 5742824 1629784 5742896 1631680 5739464 1631448 5739216 -1632528 5739272 1631728 5739480 1630864 5743768 1630952 5743928 -1630864 5743768 1631728 5739480 1631680 5739464 1630632 5743536 -1631728 5739480 1632528 5739272 1631680 5739464 1630632 5743536 -1630864 5743768 1632528 5739272 1631728 5739480 1630632 5743536 -1631680 5739464 1631728 5739480 1632528 5739272 1632432 5739272 -1631680 5739464 1630632 5743536 1631728 5739480 1632432 5739272 -1631728 5739480 1630864 5743768 1632528 5739272 1632432 5739272 -1631680 5739464 1631728 5739480 1632432 5739272 1631936 5739320 -1631680 5739464 1631728 5739480 1631936 5739320 1631568 5739328 -1631680 5739464 1630632 5743536 1631728 5739480 1631936 5739320 -1632432 5739272 1632320 5739232 1631936 5739320 1631728 5739480 -1631728 5739480 1632528 5739272 1632432 5739272 1631936 5739320 -1631680 5739464 1630424 5743368 1630632 5743536 1631728 5739480 -1631680 5739464 1630424 5743368 1631728 5739480 1631936 5739320 -1630632 5743536 1630864 5743768 1631728 5739480 1630424 5743368 -1631680 5739464 1629784 5742896 1630424 5743368 1631728 5739480 -1629784 5742896 1630312 5743312 1630424 5743368 1631728 5739480 -1631680 5739464 1629784 5742896 1631728 5739480 1631936 5739320 -1631680 5739464 1629688 5742824 1629784 5742896 1631728 5739480 -1630424 5743368 1630632 5743536 1631728 5739480 1629784 5742896 -1631936 5739320 1631800 5739456 1632432 5739272 1632320 5739232 -1632432 5739272 1631800 5739456 1631728 5739480 1632528 5739272 -1631728 5739480 1630864 5743768 1632528 5739272 1631800 5739456 -1630864 5743768 1630952 5743928 1632528 5739272 1631800 5739456 -1631800 5739456 1631936 5739320 1631728 5739480 1630864 5743768 -1631728 5739480 1630632 5743536 1630864 5743768 1631800 5739456 -1632432 5739272 1631936 5739320 1631800 5739456 1632528 5739272 -1632528 5739272 1632432 5739272 1631800 5739456 1630864 5743768 -1631728 5739480 1631800 5739456 1631936 5739320 1631680 5739464 -1631936 5739320 1631568 5739328 1631680 5739464 1631800 5739456 -1631936 5739320 1632040 5739168 1631568 5739328 1631800 5739456 -1631728 5739480 1630864 5743768 1631800 5739456 1631680 5739464 -1631800 5739456 1632432 5739272 1631936 5739320 1631568 5739328 -1631680 5739464 1631728 5739480 1631800 5739456 1631568 5739328 -1629568 5725912 1626864 5719976 1613592 5703136 1614696 5707712 -1629568 5725912 1663880 5646248 1626864 5719976 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1626864 5719976 -1663880 5646248 1626864 5719976 1629568 5725912 1663944 5646256 -1663880 5646248 1613592 5703136 1626864 5719976 1663944 5646256 -1626864 5719976 1614696 5707712 1629568 5725912 1663944 5646256 -1629568 5725912 1629600 5725952 1663944 5646256 1626864 5719976 -1629568 5725912 1629600 5725952 1626864 5719976 1614696 5707712 -1663944 5646256 1663880 5646248 1626864 5719976 1629600 5725952 -1629600 5725952 1629624 5725984 1663944 5646256 1626864 5719976 -1663944 5646256 1663880 5646248 1626864 5719976 1629624 5725984 -1629600 5725952 1629624 5725984 1626864 5719976 1629568 5725912 -1629624 5725984 1629736 5726176 1663944 5646256 1626864 5719976 -1663944 5646256 1663880 5646248 1626864 5719976 1629736 5726176 -1629624 5725984 1629736 5726176 1626864 5719976 1629600 5725952 -1629736 5726176 1629944 5726576 1663944 5646256 1626864 5719976 -1629568 5725912 1626864 5719976 1614696 5707712 1619328 5717256 -1629568 5725912 1629600 5725952 1626864 5719976 1619328 5717256 -1626864 5719976 1613592 5703136 1614696 5707712 1619328 5717256 -1629568 5725912 1626864 5719976 1619328 5717256 1619360 5717312 -1629568 5725912 1629600 5725952 1626864 5719976 1619360 5717312 -1629568 5725912 1626864 5719976 1619360 5717312 1619392 5717424 -1629568 5725912 1629600 5725952 1626864 5719976 1619392 5717424 -1629568 5725912 1626864 5719976 1619392 5717424 1619392 5717504 -1629568 5725912 1629600 5725952 1626864 5719976 1619392 5717504 -1629568 5725912 1626864 5719976 1619392 5717504 1621040 5722712 -1629568 5725912 1629600 5725952 1626864 5719976 1621040 5722712 -1626864 5719976 1619392 5717424 1619392 5717504 1621040 5722712 -1626864 5719976 1619360 5717312 1619392 5717424 1619392 5717504 -1626864 5719976 1619328 5717256 1619360 5717312 1619392 5717424 -1626864 5719976 1614696 5707712 1619328 5717256 1619360 5717312 -1614696 5707712 1614704 5707744 1619328 5717256 1626864 5719976 -1614696 5707712 1614704 5707744 1626864 5719976 1613592 5703136 -1619328 5717256 1619360 5717312 1626864 5719976 1614704 5707744 -1614704 5707744 1619296 5717232 1619328 5717256 1626864 5719976 -1619392 5717504 1620992 5722672 1621040 5722712 1626864 5719976 -1621040 5722712 1629568 5725912 1626864 5719976 1620992 5722672 -1619392 5717504 1620992 5722672 1626864 5719976 1619392 5717424 -1629568 5725912 1626864 5719976 1621040 5722712 1621088 5722784 -1629568 5725912 1629600 5725952 1626864 5719976 1621088 5722784 -1629568 5725912 1626864 5719976 1621088 5722784 1629464 5725960 -1629568 5725912 1629600 5725952 1626864 5719976 1629464 5725960 -1621088 5722784 1621280 5723224 1629464 5725960 1626864 5719976 -1621280 5723224 1629248 5726144 1629464 5725960 1626864 5719976 -1621280 5723224 1629248 5726144 1626864 5719976 1621088 5722784 -1629464 5725960 1629568 5725912 1626864 5719976 1629248 5726144 -1626864 5719976 1620992 5722672 1621040 5722712 1621088 5722784 -1629248 5726144 1629392 5726056 1629464 5725960 1626864 5719976 -1621280 5723224 1621280 5723304 1629248 5726144 1626864 5719976 -1621280 5723224 1621280 5723304 1626864 5719976 1621088 5722784 -1629248 5726144 1629464 5725960 1626864 5719976 1621280 5723304 -1626864 5719976 1621040 5722712 1621088 5722784 1621280 5723224 -1619392 5717504 1620872 5722632 1620992 5722672 1626864 5719976 -1626864 5719976 1663880 5646248 1613592 5703136 1614696 5707712 -1613592 5703136 1626864 5719976 1663880 5646248 1611560 5699312 -1621280 5723304 1629224 5726184 1629248 5726144 1626864 5719976 -1629248 5726144 1629464 5725960 1626864 5719976 1629224 5726184 -1621280 5723304 1629224 5726184 1626864 5719976 1621280 5723224 -1621280 5723304 1629224 5726312 1629224 5726184 1626864 5719976 -1626864 5719976 1626912 5719928 1663944 5646256 1663880 5646248 -1626864 5719976 1626912 5719928 1663880 5646248 1613592 5703136 -1626864 5719976 1629736 5726176 1626912 5719928 1613592 5703136 -1626912 5719928 1663944 5646256 1663880 5646248 1613592 5703136 -1629736 5726176 1626912 5719928 1626864 5719976 1629624 5725984 -1626912 5719928 1613592 5703136 1626864 5719976 1629624 5725984 -1626864 5719976 1629600 5725952 1629624 5725984 1626912 5719928 -1626864 5719976 1629600 5725952 1626912 5719928 1613592 5703136 -1626864 5719976 1629568 5725912 1629600 5725952 1626912 5719928 -1626864 5719976 1629568 5725912 1626912 5719928 1613592 5703136 -1626864 5719976 1629464 5725960 1629568 5725912 1626912 5719928 -1629600 5725952 1629624 5725984 1626912 5719928 1629568 5725912 -1629624 5725984 1629736 5726176 1626912 5719928 1629600 5725952 -1663944 5646256 1626912 5719928 1629736 5726176 1629944 5726576 -1626864 5719976 1626912 5719928 1613592 5703136 1614696 5707712 -1626912 5719928 1663880 5646248 1613592 5703136 1614696 5707712 -1626864 5719976 1629568 5725912 1626912 5719928 1614696 5707712 -1626864 5719976 1626912 5719928 1614696 5707712 1614704 5707744 -1626864 5719976 1629568 5725912 1626912 5719928 1614704 5707744 -1613592 5703136 1614680 5707680 1614696 5707712 1626912 5719928 -1626864 5719976 1626912 5719928 1614704 5707744 1619328 5717256 -1626864 5719976 1629568 5725912 1626912 5719928 1619328 5717256 -1626912 5719928 1614696 5707712 1614704 5707744 1619328 5717256 -1626864 5719976 1626912 5719928 1619328 5717256 1619360 5717312 -1626864 5719976 1629568 5725912 1626912 5719928 1619360 5717312 -1626864 5719976 1626912 5719928 1619360 5717312 1619392 5717424 -1626864 5719976 1629568 5725912 1626912 5719928 1619392 5717424 -1626864 5719976 1626912 5719928 1619392 5717424 1619392 5717504 -1626912 5719928 1619328 5717256 1619360 5717312 1619392 5717424 -1614704 5707744 1619296 5717232 1619328 5717256 1626912 5719928 -1626912 5719928 1614704 5707744 1619328 5717256 1619360 5717312 -1626912 5719928 1613592 5703136 1614696 5707712 1614704 5707744 -1626912 5719928 1629736 5726176 1663944 5646256 1663880 5646248 -1629736 5726176 1663944 5646256 1626912 5719928 1629624 5725984 -1663880 5646248 1611560 5699312 1613592 5703136 1626912 5719928 -1663944 5646256 1627008 5719872 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1627008 5719872 -1663944 5646256 1627008 5719872 1629944 5726576 1743800 5687320 -1626912 5719928 1627008 5719872 1663944 5646256 1663880 5646248 -1626912 5719928 1627008 5719872 1663880 5646248 1613592 5703136 -1626912 5719928 1627008 5719872 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1627008 5719872 -1627008 5719872 1663880 5646248 1613592 5703136 1614696 5707712 -1626912 5719928 1627008 5719872 1614696 5707712 1614704 5707744 -1627008 5719872 1613592 5703136 1614696 5707712 1614704 5707744 -1626912 5719928 1627008 5719872 1614704 5707744 1619328 5717256 -1614704 5707744 1619296 5717232 1619328 5717256 1627008 5719872 -1626912 5719928 1627008 5719872 1619328 5717256 1619360 5717312 -1627008 5719872 1614704 5707744 1619328 5717256 1619360 5717312 -1626912 5719928 1627008 5719872 1619360 5717312 1619392 5717424 -1627008 5719872 1614696 5707712 1614704 5707744 1619328 5717256 -1627008 5719872 1663944 5646256 1663880 5646248 1613592 5703136 -1626912 5719928 1629736 5726176 1627008 5719872 1619360 5717312 -1629736 5726176 1627008 5719872 1626912 5719928 1629624 5725984 -1626912 5719928 1629600 5725952 1629624 5725984 1627008 5719872 -1626912 5719928 1629568 5725912 1629600 5725952 1627008 5719872 -1626912 5719928 1626864 5719976 1629568 5725912 1627008 5719872 -1626864 5719976 1629464 5725960 1629568 5725912 1627008 5719872 -1629568 5725912 1629600 5725952 1627008 5719872 1626864 5719976 -1629600 5725952 1629624 5725984 1627008 5719872 1629568 5725912 -1627008 5719872 1619360 5717312 1626912 5719928 1626864 5719976 -1629624 5725984 1629736 5726176 1627008 5719872 1629600 5725952 -1663944 5646256 1663880 5646248 1627008 5719872 1629944 5726576 -1627008 5719872 1629624 5725984 1629736 5726176 1629944 5726576 -1663880 5646248 1611560 5699312 1613592 5703136 1627008 5719872 -1629944 5726576 1627112 5719824 1627008 5719872 1629736 5726176 -1629944 5726576 1627112 5719824 1629736 5726176 1629904 5726504 -1629944 5726576 1663944 5646256 1627112 5719824 1629736 5726176 -1663944 5646256 1627112 5719824 1629944 5726576 1743800 5687320 -1627008 5719872 1627112 5719824 1663944 5646256 1663880 5646248 -1627112 5719824 1629944 5726576 1663944 5646256 1663880 5646248 -1627008 5719872 1627112 5719824 1663880 5646248 1613592 5703136 -1627008 5719872 1627112 5719824 1613592 5703136 1614696 5707712 -1627008 5719872 1627112 5719824 1614696 5707712 1614704 5707744 -1613592 5703136 1614680 5707680 1614696 5707712 1627112 5719824 -1627112 5719824 1613592 5703136 1614696 5707712 1614704 5707744 -1627008 5719872 1627112 5719824 1614704 5707744 1619328 5717256 -1627112 5719824 1614696 5707712 1614704 5707744 1619328 5717256 -1627008 5719872 1627112 5719824 1619328 5717256 1619360 5717312 -1614704 5707744 1619296 5717232 1619328 5717256 1627112 5719824 -1627008 5719872 1627112 5719824 1619360 5717312 1626912 5719928 -1627112 5719824 1614704 5707744 1619328 5717256 1619360 5717312 -1627112 5719824 1663880 5646248 1613592 5703136 1614696 5707712 -1627112 5719824 1663944 5646256 1663880 5646248 1613592 5703136 -1627112 5719824 1619360 5717312 1627008 5719872 1629736 5726176 -1627008 5719872 1629624 5725984 1629736 5726176 1627112 5719824 -1629736 5726176 1629944 5726576 1627112 5719824 1629624 5725984 -1627008 5719872 1629600 5725952 1629624 5725984 1627112 5719824 -1627008 5719872 1629568 5725912 1629600 5725952 1627112 5719824 -1627008 5719872 1626864 5719976 1629568 5725912 1627112 5719824 -1626864 5719976 1629464 5725960 1629568 5725912 1627112 5719824 -1627008 5719872 1626912 5719928 1626864 5719976 1627112 5719824 -1629568 5725912 1629600 5725952 1627112 5719824 1626864 5719976 -1629624 5725984 1629736 5726176 1627112 5719824 1629600 5725952 -1629600 5725952 1629624 5725984 1627112 5719824 1629568 5725912 -1627008 5719872 1626864 5719976 1627112 5719824 1619360 5717312 -1663880 5646248 1611560 5699312 1613592 5703136 1627112 5719824 -1627112 5719824 1627152 5719784 1663944 5646256 1663880 5646248 -1629944 5726576 1627152 5719784 1627112 5719824 1629736 5726176 -1627112 5719824 1629624 5725984 1629736 5726176 1627152 5719784 -1629944 5726576 1627152 5719784 1629736 5726176 1629904 5726504 -1627112 5719824 1629600 5725952 1629624 5725984 1627152 5719784 -1629624 5725984 1629736 5726176 1627152 5719784 1629600 5725952 -1629736 5726176 1629944 5726576 1627152 5719784 1629624 5725984 -1627112 5719824 1629600 5725952 1627152 5719784 1663880 5646248 -1627152 5719784 1629944 5726576 1663944 5646256 1663880 5646248 -1629944 5726576 1663944 5646256 1627152 5719784 1629736 5726176 -1663944 5646256 1627152 5719784 1629944 5726576 1743800 5687320 -1627112 5719824 1629568 5725912 1629600 5725952 1627152 5719784 -1627112 5719824 1626864 5719976 1629568 5725912 1627152 5719784 -1629600 5725952 1629624 5725984 1627152 5719784 1629568 5725912 -1627112 5719824 1629568 5725912 1627152 5719784 1663880 5646248 -1627112 5719824 1627152 5719784 1663880 5646248 1613592 5703136 -1627152 5719784 1663944 5646256 1663880 5646248 1613592 5703136 -1627112 5719824 1629568 5725912 1627152 5719784 1613592 5703136 -1627112 5719824 1627152 5719784 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1627152 5719784 -1627112 5719824 1627152 5719784 1614696 5707712 1614704 5707744 -1627112 5719824 1627152 5719784 1614704 5707744 1619328 5717256 -1627152 5719784 1614696 5707712 1614704 5707744 1619328 5717256 -1627112 5719824 1629568 5725912 1627152 5719784 1619328 5717256 -1614704 5707744 1619296 5717232 1619328 5717256 1627152 5719784 -1627112 5719824 1627152 5719784 1619328 5717256 1619360 5717312 -1627152 5719784 1614704 5707744 1619328 5717256 1619360 5717312 -1627112 5719824 1627152 5719784 1619360 5717312 1627008 5719872 -1627112 5719824 1629568 5725912 1627152 5719784 1627008 5719872 -1619360 5717312 1626912 5719928 1627008 5719872 1627152 5719784 -1627152 5719784 1619328 5717256 1619360 5717312 1627008 5719872 -1627152 5719784 1613592 5703136 1614696 5707712 1614704 5707744 -1627152 5719784 1663880 5646248 1613592 5703136 1614696 5707712 -1663880 5646248 1611560 5699312 1613592 5703136 1627152 5719784 -1627152 5719784 1627232 5719704 1663944 5646256 1663880 5646248 -1627152 5719784 1627232 5719704 1663880 5646248 1613592 5703136 -1627232 5719704 1663944 5646256 1663880 5646248 1613592 5703136 -1627152 5719784 1629944 5726576 1627232 5719704 1613592 5703136 -1629944 5726576 1627232 5719704 1627152 5719784 1629736 5726176 -1629944 5726576 1627232 5719704 1629736 5726176 1629904 5726504 -1627152 5719784 1629624 5725984 1629736 5726176 1627232 5719704 -1627152 5719784 1629600 5725952 1629624 5725984 1627232 5719704 -1627152 5719784 1629568 5725912 1629600 5725952 1627232 5719704 -1629600 5725952 1629624 5725984 1627232 5719704 1629568 5725912 -1629624 5725984 1629736 5726176 1627232 5719704 1629600 5725952 -1627232 5719704 1613592 5703136 1627152 5719784 1629568 5725912 -1629736 5726176 1629944 5726576 1627232 5719704 1629624 5725984 -1627232 5719704 1629944 5726576 1663944 5646256 1663880 5646248 -1629944 5726576 1663944 5646256 1627232 5719704 1629736 5726176 -1663944 5646256 1627232 5719704 1629944 5726576 1743800 5687320 -1627152 5719784 1627112 5719824 1629568 5725912 1627232 5719704 -1627152 5719784 1627232 5719704 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1627232 5719704 -1627232 5719704 1663880 5646248 1613592 5703136 1614696 5707712 -1627152 5719784 1629568 5725912 1627232 5719704 1614696 5707712 -1627152 5719784 1627232 5719704 1614696 5707712 1614704 5707744 -1627152 5719784 1627232 5719704 1614704 5707744 1619328 5717256 -1627152 5719784 1627232 5719704 1619328 5717256 1619360 5717312 -1627232 5719704 1614704 5707744 1619328 5717256 1619360 5717312 -1627152 5719784 1629568 5725912 1627232 5719704 1619360 5717312 -1614704 5707744 1619296 5717232 1619328 5717256 1627232 5719704 -1627152 5719784 1627232 5719704 1619360 5717312 1627008 5719872 -1627232 5719704 1619328 5717256 1619360 5717312 1627008 5719872 -1627152 5719784 1627232 5719704 1627008 5719872 1627112 5719824 -1627152 5719784 1629568 5725912 1627232 5719704 1627008 5719872 -1619360 5717312 1626912 5719928 1627008 5719872 1627232 5719704 -1619360 5717312 1626912 5719928 1627232 5719704 1619328 5717256 -1619360 5717312 1619392 5717424 1626912 5719928 1627232 5719704 -1627008 5719872 1627152 5719784 1627232 5719704 1626912 5719928 -1627232 5719704 1614696 5707712 1614704 5707744 1619328 5717256 -1627232 5719704 1613592 5703136 1614696 5707712 1614704 5707744 -1663880 5646248 1611560 5699312 1613592 5703136 1627232 5719704 -1627232 5719704 1627280 5719664 1663944 5646256 1663880 5646248 -1627232 5719704 1627280 5719664 1663880 5646248 1613592 5703136 -1627232 5719704 1627280 5719664 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1627280 5719664 -1627280 5719664 1663880 5646248 1613592 5703136 1614696 5707712 -1627280 5719664 1663944 5646256 1663880 5646248 1613592 5703136 -1627232 5719704 1629944 5726576 1627280 5719664 1614696 5707712 -1629944 5726576 1627280 5719664 1627232 5719704 1629736 5726176 -1629944 5726576 1627280 5719664 1629736 5726176 1629904 5726504 -1627232 5719704 1629624 5725984 1629736 5726176 1627280 5719664 -1627232 5719704 1629600 5725952 1629624 5725984 1627280 5719664 -1627232 5719704 1629568 5725912 1629600 5725952 1627280 5719664 -1627232 5719704 1627152 5719784 1629568 5725912 1627280 5719664 -1629568 5725912 1629600 5725952 1627280 5719664 1627152 5719784 -1629600 5725952 1629624 5725984 1627280 5719664 1629568 5725912 -1629624 5725984 1629736 5726176 1627280 5719664 1629600 5725952 -1627280 5719664 1614696 5707712 1627232 5719704 1627152 5719784 -1629736 5726176 1629944 5726576 1627280 5719664 1629624 5725984 -1627280 5719664 1629944 5726576 1663944 5646256 1663880 5646248 -1629944 5726576 1663944 5646256 1627280 5719664 1629736 5726176 -1663944 5646256 1627280 5719664 1629944 5726576 1743800 5687320 -1627152 5719784 1627112 5719824 1629568 5725912 1627280 5719664 -1627232 5719704 1627280 5719664 1614696 5707712 1614704 5707744 -1627280 5719664 1613592 5703136 1614696 5707712 1614704 5707744 -1627232 5719704 1627152 5719784 1627280 5719664 1614704 5707744 -1627232 5719704 1627280 5719664 1614704 5707744 1619328 5717256 -1627232 5719704 1627280 5719664 1619328 5717256 1619360 5717312 -1627232 5719704 1627280 5719664 1619360 5717312 1626912 5719928 -1627280 5719664 1619328 5717256 1619360 5717312 1626912 5719928 -1627232 5719704 1627152 5719784 1627280 5719664 1626912 5719928 -1619360 5717312 1619392 5717424 1626912 5719928 1627280 5719664 -1614704 5707744 1619296 5717232 1619328 5717256 1627280 5719664 -1627232 5719704 1627280 5719664 1626912 5719928 1627008 5719872 -1627280 5719664 1614704 5707744 1619328 5717256 1619360 5717312 -1627280 5719664 1614696 5707712 1614704 5707744 1619328 5717256 -1663880 5646248 1611560 5699312 1613592 5703136 1627280 5719664 -1627280 5719664 1627312 5719640 1663944 5646256 1663880 5646248 -1627280 5719664 1627312 5719640 1663880 5646248 1613592 5703136 -1627280 5719664 1627312 5719640 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1627312 5719640 -1627280 5719664 1627312 5719640 1614696 5707712 1614704 5707744 -1627312 5719640 1613592 5703136 1614696 5707712 1614704 5707744 -1627312 5719640 1663880 5646248 1613592 5703136 1614696 5707712 -1627312 5719640 1663944 5646256 1663880 5646248 1613592 5703136 -1627280 5719664 1629944 5726576 1627312 5719640 1614704 5707744 -1629944 5726576 1627312 5719640 1627280 5719664 1629736 5726176 -1629944 5726576 1627312 5719640 1629736 5726176 1629904 5726504 -1627280 5719664 1629624 5725984 1629736 5726176 1627312 5719640 -1627280 5719664 1629600 5725952 1629624 5725984 1627312 5719640 -1627280 5719664 1629568 5725912 1629600 5725952 1627312 5719640 -1627280 5719664 1627152 5719784 1629568 5725912 1627312 5719640 -1627280 5719664 1627232 5719704 1627152 5719784 1627312 5719640 -1629568 5725912 1629600 5725952 1627312 5719640 1627152 5719784 -1629600 5725952 1629624 5725984 1627312 5719640 1629568 5725912 -1629624 5725984 1629736 5726176 1627312 5719640 1629600 5725952 -1627312 5719640 1614704 5707744 1627280 5719664 1627152 5719784 -1629736 5726176 1629944 5726576 1627312 5719640 1629624 5725984 -1627312 5719640 1629944 5726576 1663944 5646256 1663880 5646248 -1629944 5726576 1663944 5646256 1627312 5719640 1629736 5726176 -1663944 5646256 1627312 5719640 1629944 5726576 1743800 5687320 -1627152 5719784 1627112 5719824 1629568 5725912 1627312 5719640 -1627112 5719824 1626864 5719976 1629568 5725912 1627312 5719640 -1627152 5719784 1627112 5719824 1627312 5719640 1627280 5719664 -1629568 5725912 1629600 5725952 1627312 5719640 1627112 5719824 -1627280 5719664 1627312 5719640 1614704 5707744 1619328 5717256 -1627312 5719640 1614696 5707712 1614704 5707744 1619328 5717256 -1627280 5719664 1627152 5719784 1627312 5719640 1619328 5717256 -1614704 5707744 1619296 5717232 1619328 5717256 1627312 5719640 -1627280 5719664 1627312 5719640 1619328 5717256 1619360 5717312 -1627280 5719664 1627312 5719640 1619360 5717312 1626912 5719928 -1627280 5719664 1627152 5719784 1627312 5719640 1619360 5717312 -1627312 5719640 1614704 5707744 1619328 5717256 1619360 5717312 -1663880 5646248 1611560 5699312 1613592 5703136 1627312 5719640 -1627312 5719640 1627336 5719640 1663944 5646256 1663880 5646248 -1627312 5719640 1627336 5719640 1663880 5646248 1613592 5703136 -1627312 5719640 1627336 5719640 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1627336 5719640 -1627312 5719640 1627336 5719640 1614696 5707712 1614704 5707744 -1627312 5719640 1627336 5719640 1614704 5707744 1619328 5717256 -1627336 5719640 1613592 5703136 1614696 5707712 1614704 5707744 -1627336 5719640 1663880 5646248 1613592 5703136 1614696 5707712 -1627336 5719640 1663944 5646256 1663880 5646248 1613592 5703136 -1627312 5719640 1629944 5726576 1627336 5719640 1614704 5707744 -1629944 5726576 1627336 5719640 1627312 5719640 1629736 5726176 -1629944 5726576 1627336 5719640 1629736 5726176 1629904 5726504 -1627312 5719640 1629624 5725984 1629736 5726176 1627336 5719640 -1627312 5719640 1629600 5725952 1629624 5725984 1627336 5719640 -1627312 5719640 1629568 5725912 1629600 5725952 1627336 5719640 -1627312 5719640 1627112 5719824 1629568 5725912 1627336 5719640 -1627112 5719824 1626864 5719976 1629568 5725912 1627336 5719640 -1629568 5725912 1629600 5725952 1627336 5719640 1627112 5719824 -1629600 5725952 1629624 5725984 1627336 5719640 1629568 5725912 -1629624 5725984 1629736 5726176 1627336 5719640 1629600 5725952 -1627336 5719640 1614704 5707744 1627312 5719640 1627112 5719824 -1629736 5726176 1629944 5726576 1627336 5719640 1629624 5725984 -1629944 5726576 1663944 5646256 1627336 5719640 1629736 5726176 -1627336 5719640 1629944 5726576 1663944 5646256 1663880 5646248 -1663944 5646256 1627336 5719640 1629944 5726576 1743800 5687320 -1627312 5719640 1627152 5719784 1627112 5719824 1627336 5719640 -1627312 5719640 1627280 5719664 1627152 5719784 1627336 5719640 -1627280 5719664 1627232 5719704 1627152 5719784 1627336 5719640 -1627280 5719664 1627232 5719704 1627336 5719640 1627312 5719640 -1627112 5719824 1629568 5725912 1627336 5719640 1627152 5719784 -1627312 5719640 1627280 5719664 1627336 5719640 1614704 5707744 -1627152 5719784 1627112 5719824 1627336 5719640 1627232 5719704 -1663880 5646248 1611560 5699312 1613592 5703136 1627336 5719640 -1629944 5726576 1627384 5719672 1627336 5719640 1629736 5726176 -1629944 5726576 1627384 5719672 1629736 5726176 1629904 5726504 -1627336 5719640 1629624 5725984 1629736 5726176 1627384 5719672 -1627336 5719640 1629600 5725952 1629624 5725984 1627384 5719672 -1627336 5719640 1629568 5725912 1629600 5725952 1627384 5719672 -1627336 5719640 1627112 5719824 1629568 5725912 1627384 5719672 -1627112 5719824 1626864 5719976 1629568 5725912 1627384 5719672 -1627336 5719640 1627152 5719784 1627112 5719824 1627384 5719672 -1627112 5719824 1629568 5725912 1627384 5719672 1627152 5719784 -1629568 5725912 1629600 5725952 1627384 5719672 1627112 5719824 -1629600 5725952 1629624 5725984 1627384 5719672 1629568 5725912 -1629624 5725984 1629736 5726176 1627384 5719672 1629600 5725952 -1629736 5726176 1629944 5726576 1627384 5719672 1629624 5725984 -1627336 5719640 1627384 5719672 1663944 5646256 1663880 5646248 -1627336 5719640 1627384 5719672 1663880 5646248 1613592 5703136 -1627336 5719640 1627384 5719672 1613592 5703136 1614696 5707712 -1627384 5719672 1629944 5726576 1663944 5646256 1663880 5646248 -1627384 5719672 1663944 5646256 1663880 5646248 1613592 5703136 -1627384 5719672 1613592 5703136 1627336 5719640 1627152 5719784 -1629944 5726576 1663944 5646256 1627384 5719672 1629736 5726176 -1663944 5646256 1627384 5719672 1629944 5726576 1743800 5687320 -1627336 5719640 1627232 5719704 1627152 5719784 1627384 5719672 -1627336 5719640 1627280 5719664 1627232 5719704 1627384 5719672 -1627336 5719640 1627312 5719640 1627280 5719664 1627384 5719672 -1627152 5719784 1627112 5719824 1627384 5719672 1627232 5719704 -1627336 5719640 1627280 5719664 1627384 5719672 1613592 5703136 -1627232 5719704 1627152 5719784 1627384 5719672 1627280 5719664 -1663880 5646248 1611560 5699312 1613592 5703136 1627384 5719672 -1627384 5719672 1627400 5719704 1663944 5646256 1663880 5646248 -1629944 5726576 1627400 5719704 1627384 5719672 1629736 5726176 -1629944 5726576 1627400 5719704 1629736 5726176 1629904 5726504 -1627384 5719672 1629624 5725984 1629736 5726176 1627400 5719704 -1627384 5719672 1629600 5725952 1629624 5725984 1627400 5719704 -1627384 5719672 1629568 5725912 1629600 5725952 1627400 5719704 -1627384 5719672 1627112 5719824 1629568 5725912 1627400 5719704 -1627112 5719824 1626864 5719976 1629568 5725912 1627400 5719704 -1626864 5719976 1629464 5725960 1629568 5725912 1627400 5719704 -1627112 5719824 1627008 5719872 1626864 5719976 1627400 5719704 -1627384 5719672 1627152 5719784 1627112 5719824 1627400 5719704 -1627384 5719672 1627232 5719704 1627152 5719784 1627400 5719704 -1627152 5719784 1627112 5719824 1627400 5719704 1627232 5719704 -1627112 5719824 1626864 5719976 1627400 5719704 1627152 5719784 -1629568 5725912 1629600 5725952 1627400 5719704 1626864 5719976 -1629600 5725952 1629624 5725984 1627400 5719704 1629568 5725912 -1629624 5725984 1629736 5726176 1627400 5719704 1629600 5725952 -1627400 5719704 1663944 5646256 1627384 5719672 1627232 5719704 -1629736 5726176 1629944 5726576 1627400 5719704 1629624 5725984 -1629944 5726576 1663944 5646256 1627400 5719704 1629736 5726176 -1663944 5646256 1627400 5719704 1629944 5726576 1743800 5687320 -1627384 5719672 1627280 5719664 1627232 5719704 1627400 5719704 -1627384 5719672 1627336 5719640 1627280 5719664 1627400 5719704 -1627232 5719704 1627152 5719784 1627400 5719704 1627280 5719664 -1627384 5719672 1627280 5719664 1627400 5719704 1663944 5646256 -1627400 5719704 1627448 5719792 1663944 5646256 1627384 5719672 -1663944 5646256 1663880 5646248 1627384 5719672 1627448 5719792 -1627400 5719704 1629944 5726576 1627448 5719792 1627384 5719672 -1629944 5726576 1627448 5719792 1627400 5719704 1629736 5726176 -1629944 5726576 1627448 5719792 1629736 5726176 1629904 5726504 -1627400 5719704 1629624 5725984 1629736 5726176 1627448 5719792 -1627400 5719704 1629600 5725952 1629624 5725984 1627448 5719792 -1627400 5719704 1629568 5725912 1629600 5725952 1627448 5719792 -1627400 5719704 1626864 5719976 1629568 5725912 1627448 5719792 -1626864 5719976 1629464 5725960 1629568 5725912 1627448 5719792 -1626864 5719976 1629248 5726144 1629464 5725960 1627448 5719792 -1627400 5719704 1627112 5719824 1626864 5719976 1627448 5719792 -1627112 5719824 1627008 5719872 1626864 5719976 1627448 5719792 -1627008 5719872 1626912 5719928 1626864 5719976 1627448 5719792 -1627112 5719824 1627008 5719872 1627448 5719792 1627400 5719704 -1627400 5719704 1627152 5719784 1627112 5719824 1627448 5719792 -1627112 5719824 1627008 5719872 1627448 5719792 1627152 5719784 -1627400 5719704 1627232 5719704 1627152 5719784 1627448 5719792 -1627400 5719704 1627280 5719664 1627232 5719704 1627448 5719792 -1627152 5719784 1627112 5719824 1627448 5719792 1627232 5719704 -1626864 5719976 1629464 5725960 1627448 5719792 1627008 5719872 -1629568 5725912 1629600 5725952 1627448 5719792 1629464 5725960 -1629600 5725952 1629624 5725984 1627448 5719792 1629568 5725912 -1629624 5725984 1629736 5726176 1627448 5719792 1629600 5725952 -1627448 5719792 1627384 5719672 1627400 5719704 1627232 5719704 -1629736 5726176 1629944 5726576 1627448 5719792 1629624 5725984 -1627448 5719792 1629944 5726576 1663944 5646256 1627384 5719672 -1629944 5726576 1663944 5646256 1627448 5719792 1629736 5726176 -1663944 5646256 1627448 5719792 1629944 5726576 1743800 5687320 -1629464 5725960 1627448 5719840 1626864 5719976 1629248 5726144 -1626864 5719976 1627448 5719840 1627448 5719792 1627008 5719872 -1626864 5719976 1627448 5719840 1627008 5719872 1626912 5719928 -1627448 5719792 1627112 5719824 1627008 5719872 1627448 5719840 -1627448 5719792 1627152 5719784 1627112 5719824 1627448 5719840 -1627112 5719824 1627008 5719872 1627448 5719840 1627152 5719784 -1627448 5719792 1627232 5719704 1627152 5719784 1627448 5719840 -1627152 5719784 1627112 5719824 1627448 5719840 1627232 5719704 -1627448 5719792 1627400 5719704 1627232 5719704 1627448 5719840 -1627008 5719872 1626864 5719976 1627448 5719840 1627112 5719824 -1627448 5719792 1627448 5719840 1629464 5725960 1629568 5725912 -1627448 5719792 1627448 5719840 1629568 5725912 1629600 5725952 -1627448 5719792 1627448 5719840 1629600 5725952 1629624 5725984 -1627448 5719840 1629464 5725960 1629568 5725912 1629600 5725952 -1627448 5719840 1629600 5725952 1627448 5719792 1627232 5719704 -1627448 5719840 1626864 5719976 1629464 5725960 1629568 5725912 -1626864 5719976 1629464 5725960 1627448 5719840 1627008 5719872 -1629464 5725960 1627400 5719960 1626864 5719976 1629248 5726144 -1627448 5719840 1627400 5719960 1629464 5725960 1629568 5725912 -1627448 5719840 1627400 5719960 1629568 5725912 1629600 5725952 -1627448 5719840 1626864 5719976 1627400 5719960 1629568 5725912 -1626864 5719976 1627400 5719960 1627448 5719840 1627008 5719872 -1626864 5719976 1627400 5719960 1627008 5719872 1626912 5719928 -1627448 5719840 1627112 5719824 1627008 5719872 1627400 5719960 -1627448 5719840 1627152 5719784 1627112 5719824 1627400 5719960 -1627448 5719840 1627232 5719704 1627152 5719784 1627400 5719960 -1627112 5719824 1627008 5719872 1627400 5719960 1627152 5719784 -1627400 5719960 1629568 5725912 1627448 5719840 1627152 5719784 -1627008 5719872 1626864 5719976 1627400 5719960 1627112 5719824 -1627400 5719960 1626864 5719976 1629464 5725960 1629568 5725912 -1626864 5719976 1629464 5725960 1627400 5719960 1627008 5719872 -1629464 5725960 1627376 5720016 1626864 5719976 1629248 5726144 -1626864 5719976 1629224 5726184 1629248 5726144 1627376 5720016 -1627400 5719960 1627376 5720016 1629464 5725960 1629568 5725912 -1627400 5719960 1627376 5720016 1629568 5725912 1627448 5719840 -1627400 5719960 1626864 5719976 1627376 5720016 1629568 5725912 -1626864 5719976 1627376 5720016 1627400 5719960 1627008 5719872 -1626864 5719976 1627376 5720016 1627008 5719872 1626912 5719928 -1627400 5719960 1627112 5719824 1627008 5719872 1627376 5720016 -1627400 5719960 1627152 5719784 1627112 5719824 1627376 5720016 -1627376 5720016 1629568 5725912 1627400 5719960 1627112 5719824 -1627376 5720016 1627112 5719824 1627008 5719872 1626912 5719928 -1629464 5725960 1629568 5725912 1627376 5720016 1629248 5726144 -1627376 5720016 1626912 5719928 1626864 5719976 1629248 5726144 -1629464 5725960 1627376 5720016 1629248 5726144 1629392 5726056 -1629248 5726144 1627328 5720072 1626864 5719976 1629224 5726184 -1627376 5720016 1627328 5720072 1629248 5726144 1629464 5725960 -1627376 5720016 1627328 5720072 1629464 5725960 1629568 5725912 -1627328 5720072 1629248 5726144 1629464 5725960 1629568 5725912 -1627376 5720016 1627328 5720072 1629568 5725912 1627400 5719960 -1627376 5720016 1626864 5719976 1627328 5720072 1629568 5725912 -1626864 5719976 1627328 5720072 1627376 5720016 1626912 5719928 -1627376 5720016 1627008 5719872 1626912 5719928 1627328 5720072 -1627376 5720016 1627112 5719824 1627008 5719872 1627328 5720072 -1627008 5719872 1626912 5719928 1627328 5720072 1627112 5719824 -1627376 5720016 1627400 5719960 1627112 5719824 1627328 5720072 -1627328 5720072 1629568 5725912 1627376 5720016 1627112 5719824 -1626912 5719928 1626864 5719976 1627328 5720072 1627008 5719872 -1627328 5720072 1626864 5719976 1629248 5726144 1629464 5725960 -1626864 5719976 1629248 5726144 1627328 5720072 1626912 5719928 -1629248 5726144 1629392 5726056 1629464 5725960 1627328 5720072 -1629248 5726144 1627240 5720136 1626864 5719976 1629224 5726184 -1627328 5720072 1627240 5720136 1629248 5726144 1629464 5725960 -1627328 5720072 1627240 5720136 1629464 5725960 1629568 5725912 -1627328 5720072 1627240 5720136 1629568 5725912 1627376 5720016 -1627240 5720136 1629248 5726144 1629464 5725960 1629568 5725912 -1627328 5720072 1626864 5719976 1627240 5720136 1629568 5725912 -1626864 5719976 1627240 5720136 1627328 5720072 1626912 5719928 -1627328 5720072 1627008 5719872 1626912 5719928 1627240 5720136 -1627328 5720072 1627112 5719824 1627008 5719872 1627240 5720136 -1627328 5720072 1627376 5720016 1627112 5719824 1627240 5720136 -1627008 5719872 1626912 5719928 1627240 5720136 1627112 5719824 -1627240 5720136 1629568 5725912 1627328 5720072 1627112 5719824 -1626912 5719928 1626864 5719976 1627240 5720136 1627008 5719872 -1629248 5726144 1629464 5725960 1627240 5720136 1629224 5726184 -1627240 5720136 1626912 5719928 1626864 5719976 1629224 5726184 -1629248 5726144 1629392 5726056 1629464 5725960 1627240 5720136 -1626864 5719976 1621280 5723304 1629224 5726184 1627240 5720136 -1629224 5726184 1629248 5726144 1627240 5720136 1621280 5723304 -1626864 5719976 1621280 5723304 1627240 5720136 1626912 5719928 -1626864 5719976 1621280 5723224 1621280 5723304 1627240 5720136 -1621280 5723304 1629224 5726312 1629224 5726184 1627240 5720136 -1626864 5719976 1627192 5720152 1627240 5720136 1626912 5719928 -1627240 5720136 1627008 5719872 1626912 5719928 1627192 5720152 -1627240 5720136 1627112 5719824 1627008 5719872 1627192 5720152 -1627240 5720136 1627328 5720072 1627112 5719824 1627192 5720152 -1627008 5719872 1626912 5719928 1627192 5720152 1627112 5719824 -1627192 5720152 1621280 5723304 1627240 5720136 1627112 5719824 -1626912 5719928 1626864 5719976 1627192 5720152 1627008 5719872 -1626864 5719976 1621280 5723304 1627192 5720152 1626912 5719928 -1621280 5723304 1627192 5720152 1626864 5719976 1621280 5723224 -1627240 5720136 1627192 5720152 1621280 5723304 1629224 5726184 -1627240 5720136 1627192 5720152 1629224 5726184 1629248 5726144 -1627240 5720136 1627192 5720152 1629248 5726144 1629464 5725960 -1627192 5720152 1629224 5726184 1629248 5726144 1629464 5725960 -1627240 5720136 1627192 5720152 1629464 5725960 1629568 5725912 -1627240 5720136 1627112 5719824 1627192 5720152 1629464 5725960 -1627192 5720152 1626864 5719976 1621280 5723304 1629224 5726184 -1629248 5726144 1629392 5726056 1629464 5725960 1627192 5720152 -1621280 5723304 1629224 5726312 1629224 5726184 1627192 5720152 -1627192 5720152 1621280 5723304 1629224 5726184 1629248 5726144 -1627192 5720152 1627144 5720152 1621280 5723304 1629224 5726184 -1627192 5720152 1626864 5719976 1627144 5720152 1629224 5726184 -1626864 5719976 1627144 5720152 1627192 5720152 1626912 5719928 -1627192 5720152 1627008 5719872 1626912 5719928 1627144 5720152 -1627192 5720152 1627112 5719824 1627008 5719872 1627144 5720152 -1627192 5720152 1627240 5720136 1627112 5719824 1627144 5720152 -1627240 5720136 1627328 5720072 1627112 5719824 1627144 5720152 -1627112 5719824 1627008 5719872 1627144 5720152 1627240 5720136 -1627008 5719872 1626912 5719928 1627144 5720152 1627112 5719824 -1627144 5720152 1629224 5726184 1627192 5720152 1627240 5720136 -1626912 5719928 1626864 5719976 1627144 5720152 1627008 5719872 -1627144 5720152 1626864 5719976 1621280 5723304 1629224 5726184 -1626864 5719976 1621280 5723304 1627144 5720152 1626912 5719928 -1621280 5723304 1627144 5720152 1626864 5719976 1621280 5723224 -1626864 5719976 1621088 5722784 1621280 5723224 1627144 5720152 -1621280 5723304 1629224 5726184 1627144 5720152 1621280 5723224 -1627144 5720152 1626912 5719928 1626864 5719976 1621280 5723224 -1621280 5723304 1629224 5726312 1629224 5726184 1627144 5720152 -1627192 5720152 1627144 5720152 1629224 5726184 1629248 5726144 -1627192 5720152 1627144 5720152 1629248 5726144 1629464 5725960 -1627144 5720152 1621280 5723304 1629224 5726184 1629248 5726144 -1627192 5720152 1627240 5720136 1627144 5720152 1629248 5726144 -1621280 5723224 1627064 5720152 1626864 5719976 1621088 5722784 -1626864 5719976 1627064 5720152 1627144 5720152 1626912 5719928 -1627144 5720152 1627008 5719872 1626912 5719928 1627064 5720152 -1627144 5720152 1627112 5719824 1627008 5719872 1627064 5720152 -1627064 5720152 1621280 5723224 1627144 5720152 1627008 5719872 -1626912 5719928 1626864 5719976 1627064 5720152 1627008 5719872 -1626864 5719976 1621280 5723224 1627064 5720152 1626912 5719928 -1627144 5720152 1627064 5720152 1621280 5723224 1621280 5723304 -1627144 5720152 1627064 5720152 1621280 5723304 1629224 5726184 -1627144 5720152 1627064 5720152 1629224 5726184 1629248 5726144 -1627064 5720152 1621280 5723304 1629224 5726184 1629248 5726144 -1627144 5720152 1627008 5719872 1627064 5720152 1629248 5726144 -1627064 5720152 1626864 5719976 1621280 5723224 1621280 5723304 -1627064 5720152 1621280 5723224 1621280 5723304 1629224 5726184 -1621280 5723304 1629224 5726312 1629224 5726184 1627064 5720152 -1627144 5720152 1627064 5720152 1629248 5726144 1627192 5720152 -1621280 5723224 1626976 5720112 1626864 5719976 1621088 5722784 -1627064 5720152 1626976 5720112 1621280 5723224 1621280 5723304 -1627064 5720152 1626864 5719976 1626976 5720112 1621280 5723304 -1626864 5719976 1626976 5720112 1627064 5720152 1626912 5719928 -1627064 5720152 1627008 5719872 1626912 5719928 1626976 5720112 -1627064 5720152 1627144 5720152 1627008 5719872 1626976 5720112 -1626976 5720112 1621280 5723304 1627064 5720152 1627008 5719872 -1626912 5719928 1626864 5719976 1626976 5720112 1627008 5719872 -1626976 5720112 1626864 5719976 1621280 5723224 1621280 5723304 -1626864 5719976 1621280 5723224 1626976 5720112 1626912 5719928 -1627064 5720152 1626976 5720112 1621280 5723304 1629224 5726184 -1621280 5723224 1626912 5720080 1626864 5719976 1621088 5722784 -1626976 5720112 1626912 5720080 1621280 5723224 1621280 5723304 -1626976 5720112 1626912 5720080 1621280 5723304 1627064 5720152 -1626976 5720112 1626864 5719976 1626912 5720080 1621280 5723304 -1626864 5719976 1626912 5720080 1626976 5720112 1626912 5719928 -1626976 5720112 1627008 5719872 1626912 5719928 1626912 5720080 -1626912 5720080 1621280 5723304 1626976 5720112 1626912 5719928 -1621280 5723224 1621280 5723304 1626912 5720080 1621088 5722784 -1626864 5719976 1621040 5722712 1621088 5722784 1626912 5720080 -1626912 5720080 1626912 5719928 1626864 5719976 1621088 5722784 -1626912 5720080 1626864 5720032 1621088 5722784 1621280 5723224 -1626912 5720080 1626864 5720032 1621280 5723224 1621280 5723304 -1621088 5722784 1626864 5720032 1626864 5719976 1621040 5722712 -1626864 5719976 1620992 5722672 1621040 5722712 1626864 5720032 -1626912 5720080 1626864 5719976 1626864 5720032 1621280 5723224 -1626864 5719976 1626864 5720032 1626912 5720080 1626912 5719928 -1626864 5720032 1621040 5722712 1621088 5722784 1621280 5723224 -1626864 5720032 1626912 5720080 1626864 5719976 1621040 5722712 -1614704 5707744 1619864 5714184 1627312 5719640 1627336 5719640 -1614704 5707744 1619864 5714184 1627336 5719640 1614696 5707712 -1619864 5714184 1627312 5719640 1627336 5719640 1614696 5707712 -1627336 5719640 1613592 5703136 1614696 5707712 1619864 5714184 -1613592 5703136 1614680 5707680 1614696 5707712 1619864 5714184 -1627336 5719640 1613592 5703136 1619864 5714184 1627312 5719640 -1614696 5707712 1614704 5707744 1619864 5714184 1613592 5703136 -1627336 5719640 1627384 5719672 1613592 5703136 1619864 5714184 -1619328 5717256 1619864 5714184 1614704 5707744 1619296 5717232 -1614704 5707744 1614696 5707848 1619296 5717232 1619864 5714184 -1619296 5717232 1619328 5717256 1619864 5714184 1614696 5707848 -1614696 5707848 1614688 5707952 1619296 5717232 1619864 5714184 -1614696 5707848 1614688 5707952 1619864 5714184 1614704 5707744 -1619296 5717232 1619328 5717256 1619864 5714184 1614688 5707952 -1619328 5717256 1627312 5719640 1619864 5714184 1619296 5717232 -1614704 5707744 1614696 5707848 1619864 5714184 1614696 5707712 -1619864 5714184 1619328 5717256 1627312 5719640 1627336 5719640 -1627312 5719640 1619864 5714184 1619328 5717256 1619360 5717312 -1619864 5714184 1619296 5717232 1619328 5717256 1619360 5717312 -1627312 5719640 1627336 5719640 1619864 5714184 1619360 5717312 -1627312 5719640 1619864 5714184 1619360 5717312 1627280 5719664 -1619360 5717312 1626912 5719928 1627280 5719664 1619864 5714184 -1626912 5719928 1627232 5719704 1627280 5719664 1619864 5714184 -1619360 5717312 1619392 5717424 1626912 5719928 1619864 5714184 -1626912 5719928 1627280 5719664 1619864 5714184 1619392 5717424 -1619392 5717424 1626864 5719976 1626912 5719928 1619864 5714184 -1627312 5719640 1627336 5719640 1619864 5714184 1627280 5719664 -1627280 5719664 1627312 5719640 1619864 5714184 1626912 5719928 -1619864 5714184 1619328 5717256 1619360 5717312 1619392 5717424 -1614688 5707952 1614664 5708048 1619296 5717232 1619864 5714184 -1619296 5717232 1619328 5717256 1619864 5714184 1614664 5708048 -1614688 5707952 1614664 5708048 1619864 5714184 1614696 5707848 -1614664 5708048 1614648 5708080 1619296 5717232 1619864 5714184 -1619296 5717232 1619328 5717256 1619864 5714184 1614648 5708080 -1614648 5708080 1619280 5717232 1619296 5717232 1619864 5714184 -1614648 5708080 1614576 5708144 1619280 5717232 1619864 5714184 -1619296 5717232 1619328 5717256 1619864 5714184 1619280 5717232 -1619280 5717232 1619296 5717232 1619864 5714184 1614576 5708144 -1614576 5708144 1618888 5717376 1619280 5717232 1619864 5714184 -1614576 5708144 1618888 5717376 1619864 5714184 1614648 5708080 -1614576 5708144 1613840 5708448 1618888 5717376 1619864 5714184 -1614576 5708144 1613840 5708448 1619864 5714184 1614648 5708080 -1614576 5708144 1613896 5708408 1613840 5708448 1619864 5714184 -1613840 5708448 1611528 5715552 1618888 5717376 1619864 5714184 -1613840 5708448 1611528 5715552 1619864 5714184 1614576 5708144 -1613840 5708448 1611512 5715528 1611528 5715552 1619864 5714184 -1613840 5708448 1611512 5715528 1619864 5714184 1614576 5708144 -1613840 5708448 1613784 5708464 1611512 5715528 1619864 5714184 -1611528 5715552 1618856 5717400 1618888 5717376 1619864 5714184 -1611528 5715552 1618856 5717400 1619864 5714184 1611512 5715528 -1619280 5717232 1619296 5717232 1619864 5714184 1618888 5717376 -1611528 5715552 1618824 5717440 1618856 5717400 1619864 5714184 -1618888 5717376 1619248 5717248 1619280 5717232 1619864 5714184 -1618888 5717376 1619280 5717232 1619864 5714184 1618856 5717400 -1614664 5708048 1614648 5708080 1619864 5714184 1614688 5707952 -1614648 5708080 1614576 5708144 1619864 5714184 1614664 5708048 -1627336 5719640 1619792 5714008 1619864 5714184 1627312 5719640 -1619864 5714184 1619792 5714008 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619792 5714008 -1619864 5714184 1619792 5714008 1614696 5707712 1614704 5707744 -1619792 5714008 1613592 5703136 1614696 5707712 1614704 5707744 -1613592 5703136 1619792 5714008 1627336 5719640 1627384 5719672 -1619864 5714184 1619792 5714008 1614704 5707744 1614696 5707848 -1619792 5714008 1614696 5707712 1614704 5707744 1614696 5707848 -1619864 5714184 1619792 5714008 1614696 5707848 1614688 5707952 -1619864 5714184 1619792 5714008 1614688 5707952 1614664 5708048 -1619792 5714008 1614696 5707848 1614688 5707952 1614664 5708048 -1619792 5714008 1614704 5707744 1614696 5707848 1614688 5707952 -1619864 5714184 1627336 5719640 1619792 5714008 1614664 5708048 -1619792 5714008 1627336 5719640 1613592 5703136 1614696 5707712 -1619864 5714184 1619792 5714008 1614664 5708048 1614648 5708080 -1619792 5714008 1614688 5707952 1614664 5708048 1614648 5708080 -1619864 5714184 1627336 5719640 1619792 5714008 1614648 5708080 -1619864 5714184 1619792 5714008 1614648 5708080 1614576 5708144 -1619864 5714184 1619792 5714008 1614576 5708144 1613840 5708448 -1619864 5714184 1619792 5714008 1613840 5708448 1611512 5715528 -1619792 5714008 1614576 5708144 1613840 5708448 1611512 5715528 -1619864 5714184 1619792 5714008 1611512 5715528 1611528 5715552 -1619792 5714008 1613840 5708448 1611512 5715528 1611528 5715552 -1614576 5708144 1613896 5708408 1613840 5708448 1619792 5714008 -1613840 5708448 1613784 5708464 1611512 5715528 1619792 5714008 -1619864 5714184 1619792 5714008 1611528 5715552 1618856 5717400 -1619792 5714008 1611512 5715528 1611528 5715552 1618856 5717400 -1619864 5714184 1619792 5714008 1618856 5717400 1618888 5717376 -1619792 5714008 1611528 5715552 1618856 5717400 1618888 5717376 -1619864 5714184 1627336 5719640 1619792 5714008 1618888 5717376 -1611528 5715552 1618824 5717440 1618856 5717400 1619792 5714008 -1619864 5714184 1619792 5714008 1618888 5717376 1619280 5717232 -1619792 5714008 1614664 5708048 1614648 5708080 1614576 5708144 -1619792 5714008 1614648 5708080 1614576 5708144 1613840 5708448 -1613592 5703136 1619656 5713744 1627336 5719640 1627384 5719672 -1627336 5719640 1619656 5713744 1619792 5714008 1619864 5714184 -1619792 5714008 1619656 5713744 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619656 5713744 -1619792 5714008 1619656 5713744 1614696 5707712 1614704 5707744 -1619792 5714008 1619656 5713744 1614704 5707744 1614696 5707848 -1619656 5713744 1614696 5707712 1614704 5707744 1614696 5707848 -1619792 5714008 1619656 5713744 1614696 5707848 1614688 5707952 -1619656 5713744 1614704 5707744 1614696 5707848 1614688 5707952 -1619792 5714008 1619656 5713744 1614688 5707952 1614664 5708048 -1619792 5714008 1619656 5713744 1614664 5708048 1614648 5708080 -1619656 5713744 1614688 5707952 1614664 5708048 1614648 5708080 -1619656 5713744 1614696 5707848 1614688 5707952 1614664 5708048 -1619792 5714008 1627336 5719640 1619656 5713744 1614648 5708080 -1619656 5713744 1627336 5719640 1613592 5703136 1614696 5707712 -1619656 5713744 1613592 5703136 1614696 5707712 1614704 5707744 -1619792 5714008 1619656 5713744 1614648 5708080 1614576 5708144 -1619656 5713744 1614664 5708048 1614648 5708080 1614576 5708144 -1619792 5714008 1627336 5719640 1619656 5713744 1614576 5708144 -1619792 5714008 1619656 5713744 1614576 5708144 1613840 5708448 -1619792 5714008 1619656 5713744 1613840 5708448 1611512 5715528 -1619792 5714008 1619656 5713744 1611512 5715528 1611528 5715552 -1619656 5713744 1613840 5708448 1611512 5715528 1611528 5715552 -1619792 5714008 1619656 5713744 1611528 5715552 1618856 5717400 -1619656 5713744 1611512 5715528 1611528 5715552 1618856 5717400 -1614576 5708144 1613896 5708408 1613840 5708448 1619656 5713744 -1613840 5708448 1613784 5708464 1611512 5715528 1619656 5713744 -1619792 5714008 1619656 5713744 1618856 5717400 1618888 5717376 -1619656 5713744 1611528 5715552 1618856 5717400 1618888 5717376 -1619792 5714008 1619656 5713744 1618888 5717376 1619864 5714184 -1619792 5714008 1627336 5719640 1619656 5713744 1618888 5717376 -1611528 5715552 1618824 5717440 1618856 5717400 1619656 5713744 -1619656 5713744 1614648 5708080 1614576 5708144 1613840 5708448 -1619656 5713744 1614576 5708144 1613840 5708448 1611512 5715528 -1613592 5703136 1619688 5713672 1627336 5719640 1627384 5719672 -1619656 5713744 1619688 5713672 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619688 5713672 -1619656 5713744 1619688 5713672 1614696 5707712 1614704 5707744 -1619656 5713744 1619688 5713672 1614704 5707744 1614696 5707848 -1619656 5713744 1619688 5713672 1614696 5707848 1614688 5707952 -1619688 5713672 1614704 5707744 1614696 5707848 1614688 5707952 -1619656 5713744 1619688 5713672 1614688 5707952 1614664 5708048 -1619688 5713672 1614696 5707848 1614688 5707952 1614664 5708048 -1619656 5713744 1619688 5713672 1614664 5708048 1614648 5708080 -1619656 5713744 1619688 5713672 1614648 5708080 1614576 5708144 -1619688 5713672 1614664 5708048 1614648 5708080 1614576 5708144 -1619688 5713672 1614688 5707952 1614664 5708048 1614648 5708080 -1619688 5713672 1613592 5703136 1614696 5707712 1614704 5707744 -1619688 5713672 1614696 5707712 1614704 5707744 1614696 5707848 -1619656 5713744 1627336 5719640 1619688 5713672 1614576 5708144 -1627336 5719640 1619688 5713672 1619656 5713744 1619792 5714008 -1627336 5719640 1613592 5703136 1619688 5713672 1619792 5714008 -1627336 5719640 1619688 5713672 1619792 5714008 1619864 5714184 -1627336 5719640 1613592 5703136 1619688 5713672 1619864 5714184 -1627336 5719640 1619688 5713672 1619864 5714184 1627312 5719640 -1619688 5713672 1614576 5708144 1619656 5713744 1619792 5714008 -1619688 5713672 1619656 5713744 1619792 5714008 1619864 5714184 -1619688 5713672 1627336 5719640 1613592 5703136 1614696 5707712 -1619656 5713744 1619688 5713672 1614576 5708144 1613840 5708448 -1627336 5719640 1619824 5713672 1619688 5713672 1619864 5714184 -1619824 5713672 1613592 5703136 1619688 5713672 1619864 5714184 -1627336 5719640 1613592 5703136 1619824 5713672 1619864 5714184 -1627336 5719640 1619824 5713672 1619864 5714184 1627312 5719640 -1619824 5713672 1619688 5713672 1619864 5714184 1627312 5719640 -1627336 5719640 1613592 5703136 1619824 5713672 1627312 5719640 -1613592 5703136 1619824 5713672 1627336 5719640 1627384 5719672 -1619864 5714184 1627280 5719664 1627312 5719640 1619824 5713672 -1619688 5713672 1619792 5714008 1619864 5714184 1619824 5713672 -1619688 5713672 1619792 5714008 1619824 5713672 1613592 5703136 -1619864 5714184 1627312 5719640 1619824 5713672 1619792 5714008 -1619688 5713672 1619656 5713744 1619792 5714008 1619824 5713672 -1619688 5713672 1619656 5713744 1619824 5713672 1613592 5703136 -1619792 5714008 1619864 5714184 1619824 5713672 1619656 5713744 -1619688 5713672 1619824 5713672 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619824 5713672 -1619688 5713672 1619656 5713744 1619824 5713672 1614696 5707712 -1619824 5713672 1627336 5719640 1613592 5703136 1614696 5707712 -1619688 5713672 1619824 5713672 1614696 5707712 1614704 5707744 -1619688 5713672 1619656 5713744 1619824 5713672 1614704 5707744 -1619824 5713672 1613592 5703136 1614696 5707712 1614704 5707744 -1619688 5713672 1619824 5713672 1614704 5707744 1614696 5707848 -1619688 5713672 1619656 5713744 1619824 5713672 1614696 5707848 -1619688 5713672 1619824 5713672 1614696 5707848 1614688 5707952 -1619688 5713672 1619656 5713744 1619824 5713672 1614688 5707952 -1619688 5713672 1619824 5713672 1614688 5707952 1614664 5708048 -1619824 5713672 1614696 5707712 1614704 5707744 1614696 5707848 -1619824 5713672 1614704 5707744 1614696 5707848 1614688 5707952 -1619824 5713672 1619952 5713672 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1619952 5713672 -1619824 5713672 1619952 5713672 1614696 5707712 1614704 5707744 -1619952 5713672 1613592 5703136 1614696 5707712 1614704 5707744 -1627336 5719640 1619952 5713672 1619824 5713672 1627312 5719640 -1619824 5713672 1627312 5719640 1619952 5713672 1614704 5707744 -1619952 5713672 1627336 5719640 1613592 5703136 1614696 5707712 -1627336 5719640 1613592 5703136 1619952 5713672 1627312 5719640 -1619824 5713672 1619864 5714184 1627312 5719640 1619952 5713672 -1619824 5713672 1619792 5714008 1619864 5714184 1619952 5713672 -1627312 5719640 1627336 5719640 1619952 5713672 1619864 5714184 -1619824 5713672 1619792 5714008 1619952 5713672 1614704 5707744 -1619864 5714184 1627312 5719640 1619952 5713672 1619792 5714008 -1613592 5703136 1619952 5713672 1627336 5719640 1627384 5719672 -1619864 5714184 1627280 5719664 1627312 5719640 1619952 5713672 -1619824 5713672 1619656 5713744 1619792 5714008 1619952 5713672 -1619824 5713672 1619952 5713672 1614704 5707744 1614696 5707848 -1619952 5713672 1614696 5707712 1614704 5707744 1614696 5707848 -1619824 5713672 1619792 5714008 1619952 5713672 1614696 5707848 -1619824 5713672 1619952 5713672 1614696 5707848 1614688 5707952 -1619824 5713672 1619792 5714008 1619952 5713672 1614688 5707952 -1619824 5713672 1619952 5713672 1614688 5707952 1619688 5713672 -1619952 5713672 1614704 5707744 1614696 5707848 1614688 5707952 -1619952 5713672 1620040 5713712 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1620040 5713712 -1619952 5713672 1620040 5713712 1614696 5707712 1614704 5707744 -1619952 5713672 1627336 5719640 1620040 5713712 1614696 5707712 -1627336 5719640 1620040 5713712 1619952 5713672 1627312 5719640 -1619952 5713672 1619864 5714184 1627312 5719640 1620040 5713712 -1620040 5713712 1614696 5707712 1619952 5713672 1619864 5714184 -1627312 5719640 1627336 5719640 1620040 5713712 1619864 5714184 -1620040 5713712 1627336 5719640 1613592 5703136 1614696 5707712 -1627336 5719640 1613592 5703136 1620040 5713712 1627312 5719640 -1619952 5713672 1619792 5714008 1619864 5714184 1620040 5713712 -1619952 5713672 1619824 5713672 1619792 5714008 1620040 5713712 -1619864 5714184 1627312 5719640 1620040 5713712 1619792 5714008 -1619952 5713672 1619792 5714008 1620040 5713712 1614696 5707712 -1613592 5703136 1620040 5713712 1627336 5719640 1627384 5719672 -1619864 5714184 1627280 5719664 1627312 5719640 1620040 5713712 -1619864 5714184 1620072 5713752 1620040 5713712 1619792 5714008 -1620040 5713712 1620072 5713752 1627312 5719640 1627336 5719640 -1620072 5713752 1627336 5719640 1620040 5713712 1619792 5714008 -1620040 5713712 1620072 5713752 1627336 5719640 1613592 5703136 -1620072 5713752 1619864 5714184 1627312 5719640 1627336 5719640 -1619864 5714184 1627312 5719640 1620072 5713752 1619792 5714008 -1620040 5713712 1619952 5713672 1619792 5714008 1620072 5713752 -1619952 5713672 1619824 5713672 1619792 5714008 1620072 5713752 -1619792 5714008 1619864 5714184 1620072 5713752 1619952 5713672 -1620040 5713712 1619952 5713672 1620072 5713752 1627336 5719640 -1627312 5719640 1620072 5713752 1619864 5714184 1627280 5719664 -1627312 5719640 1627336 5719640 1620072 5713752 1627280 5719664 -1620072 5713752 1619792 5714008 1619864 5714184 1627280 5719664 -1619864 5714184 1626912 5719928 1627280 5719664 1620072 5713752 -1626912 5719928 1627232 5719704 1627280 5719664 1620072 5713752 -1619864 5714184 1619392 5717424 1626912 5719928 1620072 5713752 -1619864 5714184 1626912 5719928 1620072 5713752 1619792 5714008 -1627280 5719664 1627312 5719640 1620072 5713752 1626912 5719928 -1627336 5719640 1620104 5713768 1620072 5713752 1627312 5719640 -1620040 5713712 1620104 5713768 1627336 5719640 1613592 5703136 -1620040 5713712 1620104 5713768 1613592 5703136 1614696 5707712 -1620072 5713752 1627280 5719664 1627312 5719640 1620104 5713768 -1627312 5719640 1627336 5719640 1620104 5713768 1627280 5719664 -1620104 5713768 1620040 5713712 1620072 5713752 1627280 5719664 -1620040 5713712 1620072 5713752 1620104 5713768 1613592 5703136 -1627336 5719640 1613592 5703136 1620104 5713768 1627312 5719640 -1627336 5719640 1627384 5719672 1613592 5703136 1620104 5713768 -1620072 5713752 1626912 5719928 1627280 5719664 1620104 5713768 -1626912 5719928 1627232 5719704 1627280 5719664 1620104 5713768 -1627280 5719664 1627312 5719640 1620104 5713768 1626912 5719928 -1620072 5713752 1626912 5719928 1620104 5713768 1620040 5713712 -1620072 5713752 1619864 5714184 1626912 5719928 1620104 5713768 -1619864 5714184 1619392 5717424 1626912 5719928 1620104 5713768 -1620072 5713752 1619864 5714184 1620104 5713768 1620040 5713712 -1620072 5713752 1619792 5714008 1619864 5714184 1620104 5713768 -1620072 5713752 1619952 5713672 1619792 5714008 1620104 5713768 -1620072 5713752 1619792 5714008 1620104 5713768 1620040 5713712 -1626912 5719928 1627280 5719664 1620104 5713768 1619864 5714184 -1619864 5714184 1626912 5719928 1620104 5713768 1619792 5714008 -1626912 5719928 1620160 5713848 1619864 5714184 1619392 5717424 -1626912 5719928 1620104 5713768 1620160 5713848 1619392 5717424 -1620160 5713848 1620104 5713768 1619864 5714184 1619392 5717424 -1626912 5719928 1620160 5713848 1619392 5717424 1626864 5719976 -1619864 5714184 1619360 5717312 1619392 5717424 1620160 5713848 -1619392 5717424 1626912 5719928 1620160 5713848 1619360 5717312 -1619864 5714184 1619360 5717312 1620160 5713848 1620104 5713768 -1620104 5713768 1620160 5713848 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620160 5713848 -1620104 5713768 1620160 5713848 1627280 5719664 1627312 5719640 -1620104 5713768 1620160 5713848 1627312 5719640 1627336 5719640 -1620160 5713848 1627280 5719664 1627312 5719640 1627336 5719640 -1620104 5713768 1619864 5714184 1620160 5713848 1627336 5719640 -1620104 5713768 1620160 5713848 1627336 5719640 1613592 5703136 -1620160 5713848 1619392 5717424 1626912 5719928 1627280 5719664 -1620160 5713848 1626912 5719928 1627280 5719664 1627312 5719640 -1619864 5714184 1620160 5713848 1620104 5713768 1619792 5714008 -1620104 5713768 1620072 5713752 1619792 5714008 1620160 5713848 -1620072 5713752 1619952 5713672 1619792 5714008 1620160 5713848 -1620160 5713848 1627336 5719640 1620104 5713768 1620072 5713752 -1619864 5714184 1619360 5717312 1620160 5713848 1619792 5714008 -1619792 5714008 1619864 5714184 1620160 5713848 1620072 5713752 -1619864 5714184 1619328 5717256 1619360 5717312 1620160 5713848 -1619392 5717424 1620272 5714120 1620160 5713848 1619360 5717312 -1620160 5713848 1620272 5714120 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620272 5714120 -1620272 5714120 1627280 5719664 1620160 5713848 1619360 5717312 -1620272 5714120 1619392 5717424 1626912 5719928 1627280 5719664 -1619392 5717424 1626912 5719928 1620272 5714120 1619360 5717312 -1626912 5719928 1620272 5714120 1619392 5717424 1626864 5719976 -1620160 5713848 1619864 5714184 1619360 5717312 1620272 5714120 -1619360 5717312 1619392 5717424 1620272 5714120 1619864 5714184 -1620160 5713848 1619864 5714184 1620272 5714120 1627280 5719664 -1620160 5713848 1619792 5714008 1619864 5714184 1620272 5714120 -1620160 5713848 1620272 5714120 1627280 5719664 1627312 5719640 -1620160 5713848 1620272 5714120 1627312 5719640 1627336 5719640 -1620160 5713848 1620272 5714120 1627336 5719640 1620104 5713768 -1620272 5714120 1626912 5719928 1627280 5719664 1627312 5719640 -1620160 5713848 1619864 5714184 1620272 5714120 1627336 5719640 -1620272 5714120 1627280 5719664 1627312 5719640 1627336 5719640 -1619864 5714184 1619328 5717256 1619360 5717312 1620272 5714120 -1619360 5717312 1619392 5717424 1620272 5714120 1619328 5717256 -1619864 5714184 1619328 5717256 1620272 5714120 1620160 5713848 -1619864 5714184 1619296 5717232 1619328 5717256 1620272 5714120 -1619864 5714184 1619296 5717232 1620272 5714120 1620160 5713848 -1619864 5714184 1619280 5717232 1619296 5717232 1620272 5714120 -1619328 5717256 1619360 5717312 1620272 5714120 1619296 5717232 -1620272 5714120 1620344 5714224 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620344 5714224 -1620272 5714120 1620344 5714224 1627280 5719664 1627312 5719640 -1620344 5714224 1626912 5719928 1627280 5719664 1627312 5719640 -1620272 5714120 1619392 5717424 1620344 5714224 1627312 5719640 -1619392 5717424 1620344 5714224 1620272 5714120 1619360 5717312 -1620272 5714120 1619328 5717256 1619360 5717312 1620344 5714224 -1620344 5714224 1627312 5719640 1620272 5714120 1619328 5717256 -1619360 5717312 1619392 5717424 1620344 5714224 1619328 5717256 -1619392 5717424 1626912 5719928 1620344 5714224 1619360 5717312 -1620344 5714224 1619392 5717424 1626912 5719928 1627280 5719664 -1626912 5719928 1620344 5714224 1619392 5717424 1626864 5719976 -1619392 5717424 1619392 5717504 1626864 5719976 1620344 5714224 -1620344 5714224 1619360 5717312 1619392 5717424 1626864 5719976 -1626912 5719928 1627280 5719664 1620344 5714224 1626864 5719976 -1620272 5714120 1620344 5714224 1627312 5719640 1627336 5719640 -1620272 5714120 1620344 5714224 1627336 5719640 1620160 5713848 -1627336 5719640 1620104 5713768 1620160 5713848 1620344 5714224 -1620344 5714224 1627280 5719664 1627312 5719640 1627336 5719640 -1620272 5714120 1619328 5717256 1620344 5714224 1620160 5713848 -1620344 5714224 1627312 5719640 1627336 5719640 1620160 5713848 -1620272 5714120 1619296 5717232 1619328 5717256 1620344 5714224 -1619328 5717256 1619360 5717312 1620344 5714224 1619296 5717232 -1620272 5714120 1619296 5717232 1620344 5714224 1620160 5713848 -1620272 5714120 1619864 5714184 1619296 5717232 1620344 5714224 -1620272 5714120 1619864 5714184 1620344 5714224 1620160 5713848 -1620272 5714120 1620160 5713848 1619864 5714184 1620344 5714224 -1619864 5714184 1619280 5717232 1619296 5717232 1620344 5714224 -1619296 5717232 1619328 5717256 1620344 5714224 1619864 5714184 -1627280 5719664 1620512 5714368 1626912 5719928 1627232 5719704 -1620344 5714224 1620512 5714368 1627280 5719664 1627312 5719640 -1620344 5714224 1620512 5714368 1627312 5719640 1627336 5719640 -1620512 5714368 1627280 5719664 1627312 5719640 1627336 5719640 -1620344 5714224 1626912 5719928 1620512 5714368 1627336 5719640 -1620512 5714368 1626912 5719928 1627280 5719664 1627312 5719640 -1626912 5719928 1620512 5714368 1620344 5714224 1626864 5719976 -1620512 5714368 1627336 5719640 1620344 5714224 1626864 5719976 -1620344 5714224 1619392 5717424 1626864 5719976 1620512 5714368 -1619392 5717424 1619392 5717504 1626864 5719976 1620512 5714368 -1620344 5714224 1619360 5717312 1619392 5717424 1620512 5714368 -1620344 5714224 1619328 5717256 1619360 5717312 1620512 5714368 -1620344 5714224 1619296 5717232 1619328 5717256 1620512 5714368 -1619328 5717256 1619360 5717312 1620512 5714368 1619296 5717232 -1619360 5717312 1619392 5717424 1620512 5714368 1619328 5717256 -1620344 5714224 1619296 5717232 1620512 5714368 1627336 5719640 -1626864 5719976 1626912 5719928 1620512 5714368 1619392 5717424 -1619392 5717424 1626864 5719976 1620512 5714368 1619360 5717312 -1626912 5719928 1627280 5719664 1620512 5714368 1626864 5719976 -1620344 5714224 1620512 5714368 1627336 5719640 1620160 5713848 -1627336 5719640 1620104 5713768 1620160 5713848 1620512 5714368 -1620344 5714224 1620512 5714368 1620160 5713848 1620272 5714120 -1620512 5714368 1627312 5719640 1627336 5719640 1620160 5713848 -1620344 5714224 1619296 5717232 1620512 5714368 1620272 5714120 -1620512 5714368 1627336 5719640 1620160 5713848 1620272 5714120 -1620344 5714224 1619864 5714184 1619296 5717232 1620512 5714368 -1619296 5717232 1619328 5717256 1620512 5714368 1619864 5714184 -1620344 5714224 1619864 5714184 1620512 5714368 1620272 5714120 -1619864 5714184 1619280 5717232 1619296 5717232 1620512 5714368 -1620344 5714224 1620272 5714120 1619864 5714184 1620512 5714368 -1626864 5719976 1620552 5714440 1619392 5717424 1619392 5717504 -1620512 5714368 1620552 5714440 1626864 5719976 1626912 5719928 -1619392 5717424 1620552 5714440 1620512 5714368 1619360 5717312 -1620512 5714368 1619328 5717256 1619360 5717312 1620552 5714440 -1620512 5714368 1619296 5717232 1619328 5717256 1620552 5714440 -1620512 5714368 1619864 5714184 1619296 5717232 1620552 5714440 -1619296 5717232 1619328 5717256 1620552 5714440 1619864 5714184 -1619328 5717256 1619360 5717312 1620552 5714440 1619296 5717232 -1619360 5717312 1619392 5717424 1620552 5714440 1619328 5717256 -1619864 5714184 1619280 5717232 1619296 5717232 1620552 5714440 -1620512 5714368 1619864 5714184 1620552 5714440 1626912 5719928 -1620512 5714368 1620552 5714440 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620552 5714440 -1620512 5714368 1620552 5714440 1627280 5719664 1627312 5719640 -1620512 5714368 1620552 5714440 1627312 5719640 1627336 5719640 -1620512 5714368 1620552 5714440 1627336 5719640 1620160 5713848 -1620552 5714440 1627280 5719664 1627312 5719640 1627336 5719640 -1620552 5714440 1626864 5719976 1626912 5719928 1627280 5719664 -1620512 5714368 1619864 5714184 1620552 5714440 1627336 5719640 -1620552 5714440 1626912 5719928 1627280 5719664 1627312 5719640 -1620552 5714440 1619392 5717424 1626864 5719976 1626912 5719928 -1619392 5717424 1626864 5719976 1620552 5714440 1619360 5717312 -1620512 5714368 1620344 5714224 1619864 5714184 1620552 5714440 -1619864 5714184 1619296 5717232 1620552 5714440 1620344 5714224 -1620512 5714368 1620344 5714224 1620552 5714440 1627336 5719640 -1620344 5714224 1620272 5714120 1619864 5714184 1620552 5714440 -1626864 5719976 1620560 5714512 1619392 5717424 1619392 5717504 -1620552 5714440 1620560 5714512 1626864 5719976 1626912 5719928 -1620552 5714440 1620560 5714512 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620560 5714512 -1620552 5714440 1620560 5714512 1627280 5719664 1627312 5719640 -1620552 5714440 1620560 5714512 1627312 5719640 1627336 5719640 -1620560 5714512 1626912 5719928 1627280 5719664 1627312 5719640 -1620560 5714512 1626864 5719976 1626912 5719928 1627280 5719664 -1620552 5714440 1619392 5717424 1620560 5714512 1627312 5719640 -1619392 5717424 1620560 5714512 1620552 5714440 1619360 5717312 -1620552 5714440 1619328 5717256 1619360 5717312 1620560 5714512 -1620552 5714440 1619296 5717232 1619328 5717256 1620560 5714512 -1620552 5714440 1619864 5714184 1619296 5717232 1620560 5714512 -1620552 5714440 1620344 5714224 1619864 5714184 1620560 5714512 -1619864 5714184 1619296 5717232 1620560 5714512 1620344 5714224 -1619296 5717232 1619328 5717256 1620560 5714512 1619864 5714184 -1619328 5717256 1619360 5717312 1620560 5714512 1619296 5717232 -1619864 5714184 1619280 5717232 1619296 5717232 1620560 5714512 -1620560 5714512 1627312 5719640 1620552 5714440 1620344 5714224 -1619360 5717312 1619392 5717424 1620560 5714512 1619328 5717256 -1620560 5714512 1619392 5717424 1626864 5719976 1626912 5719928 -1619392 5717424 1626864 5719976 1620560 5714512 1619360 5717312 -1620344 5714224 1620272 5714120 1619864 5714184 1620560 5714512 -1620552 5714440 1620512 5714368 1620344 5714224 1620560 5714512 -1620344 5714224 1619864 5714184 1620560 5714512 1620512 5714368 -1620552 5714440 1620512 5714368 1620560 5714512 1627312 5719640 -1626864 5719976 1620520 5714728 1619392 5717424 1619392 5717504 -1626864 5719976 1620520 5714728 1619392 5717504 1620992 5722672 -1620560 5714512 1620520 5714728 1626864 5719976 1626912 5719928 -1620560 5714512 1620520 5714728 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620520 5714728 -1620560 5714512 1620520 5714728 1627280 5719664 1627312 5719640 -1620560 5714512 1620520 5714728 1627312 5719640 1620552 5714440 -1620520 5714728 1626912 5719928 1627280 5719664 1627312 5719640 -1620520 5714728 1626864 5719976 1626912 5719928 1627280 5719664 -1620560 5714512 1619392 5717424 1620520 5714728 1627312 5719640 -1619392 5717424 1620520 5714728 1620560 5714512 1619360 5717312 -1620560 5714512 1619328 5717256 1619360 5717312 1620520 5714728 -1620560 5714512 1619296 5717232 1619328 5717256 1620520 5714728 -1620560 5714512 1619864 5714184 1619296 5717232 1620520 5714728 -1620560 5714512 1620344 5714224 1619864 5714184 1620520 5714728 -1620560 5714512 1620512 5714368 1620344 5714224 1620520 5714728 -1619864 5714184 1619296 5717232 1620520 5714728 1620344 5714224 -1619296 5717232 1619328 5717256 1620520 5714728 1619864 5714184 -1619864 5714184 1619280 5717232 1619296 5717232 1620520 5714728 -1619864 5714184 1619280 5717232 1620520 5714728 1620344 5714224 -1619296 5717232 1619328 5717256 1620520 5714728 1619280 5717232 -1619328 5717256 1619360 5717312 1620520 5714728 1619296 5717232 -1620520 5714728 1627312 5719640 1620560 5714512 1620344 5714224 -1619360 5717312 1619392 5717424 1620520 5714728 1619328 5717256 -1626864 5719976 1626912 5719928 1620520 5714728 1619392 5717504 -1620520 5714728 1619360 5717312 1619392 5717424 1619392 5717504 -1619864 5714184 1618888 5717376 1619280 5717232 1620520 5714728 -1620344 5714224 1620272 5714120 1619864 5714184 1620520 5714728 -1619864 5714184 1620456 5714784 1620520 5714728 1620344 5714224 -1620520 5714728 1620560 5714512 1620344 5714224 1620456 5714784 -1620560 5714512 1620512 5714368 1620344 5714224 1620456 5714784 -1620560 5714512 1620512 5714368 1620456 5714784 1620520 5714728 -1620344 5714224 1619864 5714184 1620456 5714784 1620512 5714368 -1620520 5714728 1620456 5714784 1619280 5717232 1619296 5717232 -1620520 5714728 1620456 5714784 1619296 5717232 1619328 5717256 -1620456 5714784 1619280 5717232 1619296 5717232 1619328 5717256 -1620520 5714728 1620456 5714784 1619328 5717256 1619360 5717312 -1620456 5714784 1619296 5717232 1619328 5717256 1619360 5717312 -1620520 5714728 1620456 5714784 1619360 5717312 1619392 5717424 -1620456 5714784 1619328 5717256 1619360 5717312 1619392 5717424 -1620456 5714784 1619392 5717424 1620520 5714728 1620560 5714512 -1620520 5714728 1620456 5714784 1619392 5717424 1619392 5717504 -1620456 5714784 1619864 5714184 1619280 5717232 1619296 5717232 -1619864 5714184 1619280 5717232 1620456 5714784 1620344 5714224 -1619280 5717232 1620456 5714784 1619864 5714184 1618888 5717376 -1619864 5714184 1620456 5714784 1620344 5714224 1620272 5714120 -1620560 5714512 1620552 5714440 1620512 5714368 1620456 5714784 -1620456 5714784 1620424 5714784 1619280 5717232 1619296 5717232 -1620456 5714784 1620424 5714784 1619296 5717232 1619328 5717256 -1620456 5714784 1620424 5714784 1619328 5717256 1619360 5717312 -1620424 5714784 1619280 5717232 1619296 5717232 1619328 5717256 -1620456 5714784 1619864 5714184 1620424 5714784 1619328 5717256 -1619864 5714184 1620424 5714784 1620456 5714784 1620344 5714224 -1620456 5714784 1620512 5714368 1620344 5714224 1620424 5714784 -1620456 5714784 1620560 5714512 1620512 5714368 1620424 5714784 -1620456 5714784 1620520 5714728 1620560 5714512 1620424 5714784 -1620560 5714512 1620512 5714368 1620424 5714784 1620520 5714728 -1620512 5714368 1620344 5714224 1620424 5714784 1620560 5714512 -1620424 5714784 1619328 5717256 1620456 5714784 1620520 5714728 -1620344 5714224 1619864 5714184 1620424 5714784 1620512 5714368 -1620424 5714784 1619864 5714184 1619280 5717232 1619296 5717232 -1619864 5714184 1619280 5717232 1620424 5714784 1620344 5714224 -1619280 5717232 1620424 5714784 1619864 5714184 1618888 5717376 -1619864 5714184 1620424 5714784 1620344 5714224 1620272 5714120 -1620560 5714512 1620552 5714440 1620512 5714368 1620424 5714784 -1620424 5714784 1620384 5714776 1619280 5717232 1619296 5717232 -1620424 5714784 1620384 5714776 1619296 5717232 1619328 5717256 -1620424 5714784 1619864 5714184 1620384 5714776 1619296 5717232 -1619864 5714184 1620384 5714776 1620424 5714784 1620344 5714224 -1620424 5714784 1620512 5714368 1620344 5714224 1620384 5714776 -1620424 5714784 1620560 5714512 1620512 5714368 1620384 5714776 -1620424 5714784 1620520 5714728 1620560 5714512 1620384 5714776 -1620424 5714784 1620456 5714784 1620520 5714728 1620384 5714776 -1620560 5714512 1620512 5714368 1620384 5714776 1620520 5714728 -1620512 5714368 1620344 5714224 1620384 5714776 1620560 5714512 -1620384 5714776 1619296 5717232 1620424 5714784 1620520 5714728 -1620344 5714224 1619864 5714184 1620384 5714776 1620512 5714368 -1620384 5714776 1619864 5714184 1619280 5717232 1619296 5717232 -1619864 5714184 1619280 5717232 1620384 5714776 1620344 5714224 -1619280 5717232 1620384 5714776 1619864 5714184 1618888 5717376 -1619864 5714184 1620384 5714776 1620344 5714224 1620272 5714120 -1620560 5714512 1620552 5714440 1620512 5714368 1620384 5714776 -1620384 5714776 1620352 5714744 1619280 5717232 1619296 5717232 -1620384 5714776 1620352 5714744 1619296 5717232 1620424 5714784 -1620384 5714776 1619864 5714184 1620352 5714744 1619296 5717232 -1619864 5714184 1620352 5714744 1620384 5714776 1620344 5714224 -1620384 5714776 1620512 5714368 1620344 5714224 1620352 5714744 -1620384 5714776 1620560 5714512 1620512 5714368 1620352 5714744 -1620384 5714776 1620520 5714728 1620560 5714512 1620352 5714744 -1620384 5714776 1620424 5714784 1620520 5714728 1620352 5714744 -1620424 5714784 1620456 5714784 1620520 5714728 1620352 5714744 -1620520 5714728 1620560 5714512 1620352 5714744 1620424 5714784 -1620560 5714512 1620512 5714368 1620352 5714744 1620520 5714728 -1620512 5714368 1620344 5714224 1620352 5714744 1620560 5714512 -1620352 5714744 1619296 5717232 1620384 5714776 1620424 5714784 -1620344 5714224 1619864 5714184 1620352 5714744 1620512 5714368 -1620352 5714744 1619864 5714184 1619280 5717232 1619296 5717232 -1619864 5714184 1619280 5717232 1620352 5714744 1620344 5714224 -1619280 5717232 1620352 5714744 1619864 5714184 1618888 5717376 -1619864 5714184 1620352 5714744 1620344 5714224 1620272 5714120 -1620560 5714512 1620552 5714440 1620512 5714368 1620352 5714744 -1620344 5714224 1620256 5714592 1620352 5714744 1620512 5714368 -1620352 5714744 1620560 5714512 1620512 5714368 1620256 5714592 -1620352 5714744 1620520 5714728 1620560 5714512 1620256 5714592 -1620512 5714368 1620344 5714224 1620256 5714592 1620560 5714512 -1620256 5714592 1619864 5714184 1620352 5714744 1620560 5714512 -1620352 5714744 1620256 5714592 1619864 5714184 1619280 5717232 -1620352 5714744 1620256 5714592 1619280 5717232 1619296 5717232 -1620352 5714744 1620560 5714512 1620256 5714592 1619280 5717232 -1620256 5714592 1620344 5714224 1619864 5714184 1619280 5717232 -1620344 5714224 1619864 5714184 1620256 5714592 1620512 5714368 -1619864 5714184 1618888 5717376 1619280 5717232 1620256 5714592 -1619864 5714184 1620256 5714592 1620344 5714224 1620272 5714120 -1620560 5714512 1620552 5714440 1620512 5714368 1620256 5714592 -1620560 5714512 1620552 5714440 1620256 5714592 1620352 5714744 -1620512 5714368 1620344 5714224 1620256 5714592 1620552 5714440 -1620256 5714592 1620144 5714440 1619864 5714184 1619280 5717232 -1620344 5714224 1620144 5714440 1620256 5714592 1620512 5714368 -1620256 5714592 1620552 5714440 1620512 5714368 1620144 5714440 -1620144 5714440 1619864 5714184 1620256 5714592 1620512 5714368 -1620344 5714224 1619864 5714184 1620144 5714440 1620512 5714368 -1619864 5714184 1620144 5714440 1620344 5714224 1620272 5714120 -1619864 5714184 1620144 5714440 1620272 5714120 1620160 5713848 -1619864 5714184 1620256 5714592 1620144 5714440 1620272 5714120 -1620144 5714440 1620512 5714368 1620344 5714224 1620272 5714120 -1620256 5714592 1619920 5714264 1619280 5717232 1620352 5714744 -1619280 5717232 1619296 5717232 1620352 5714744 1619920 5714264 -1619864 5714184 1619920 5714264 1620256 5714592 1620144 5714440 -1619864 5714184 1619920 5714264 1620144 5714440 1620272 5714120 -1619864 5714184 1619920 5714264 1620272 5714120 1620160 5713848 -1619920 5714264 1620256 5714592 1620144 5714440 1620272 5714120 -1620256 5714592 1620144 5714440 1619920 5714264 1620352 5714744 -1619920 5714264 1619864 5714184 1619280 5717232 1620352 5714744 -1619864 5714184 1619280 5717232 1619920 5714264 1620272 5714120 -1619280 5717232 1619920 5714264 1619864 5714184 1618888 5717376 -1619280 5717232 1620352 5714744 1619920 5714264 1618888 5717376 -1619920 5714264 1620272 5714120 1619864 5714184 1618888 5717376 -1620144 5714440 1620344 5714224 1620272 5714120 1619920 5714264 -1619280 5717232 1619920 5714264 1618888 5717376 1619248 5717248 -1619864 5714184 1619792 5714008 1618888 5717376 1619920 5714264 -1619656 5713744 1617312 5711816 1611512 5715528 1611528 5715552 -1619656 5713744 1617312 5711816 1611528 5715552 1618856 5717400 -1617312 5711816 1611512 5715528 1611528 5715552 1618856 5717400 -1619656 5713744 1617312 5711816 1618856 5717400 1618888 5717376 -1611512 5715528 1617312 5711816 1613840 5708448 1613784 5708464 -1611512 5715528 1617312 5711816 1613784 5708464 1611464 5715504 -1617312 5711816 1613784 5708464 1611512 5715528 1611528 5715552 -1617312 5711816 1619656 5713744 1613840 5708448 1613784 5708464 -1611528 5715552 1618824 5717440 1618856 5717400 1617312 5711816 -1611528 5715552 1618824 5717440 1617312 5711816 1611512 5715528 -1618856 5717400 1619656 5713744 1617312 5711816 1618824 5717440 -1611528 5715552 1618816 5717464 1618824 5717440 1617312 5711816 -1619656 5713744 1613840 5708448 1617312 5711816 1618856 5717400 -1613840 5708448 1617312 5711816 1619656 5713744 1614576 5708144 -1613840 5708448 1617312 5711816 1614576 5708144 1613896 5708408 -1613840 5708448 1613784 5708464 1617312 5711816 1614576 5708144 -1617312 5711816 1618856 5717400 1619656 5713744 1614576 5708144 -1619656 5713744 1619688 5713672 1614576 5708144 1617312 5711816 -1619688 5713672 1614648 5708080 1614576 5708144 1617312 5711816 -1619688 5713672 1614664 5708048 1614648 5708080 1617312 5711816 -1614648 5708080 1614576 5708144 1617312 5711816 1614664 5708048 -1619688 5713672 1614688 5707952 1614664 5708048 1617312 5711816 -1619688 5713672 1619824 5713672 1614688 5707952 1617312 5711816 -1619824 5713672 1619952 5713672 1614688 5707952 1617312 5711816 -1619824 5713672 1619952 5713672 1617312 5711816 1619688 5713672 -1614664 5708048 1614648 5708080 1617312 5711816 1614688 5707952 -1614688 5707952 1614664 5708048 1617312 5711816 1619952 5713672 -1619952 5713672 1614696 5707848 1614688 5707952 1617312 5711816 -1619952 5713672 1614696 5707848 1617312 5711816 1619824 5713672 -1614688 5707952 1614664 5708048 1617312 5711816 1614696 5707848 -1619952 5713672 1614704 5707744 1614696 5707848 1617312 5711816 -1619952 5713672 1614696 5707712 1614704 5707744 1617312 5711816 -1619952 5713672 1620040 5713712 1614696 5707712 1617312 5711816 -1614696 5707712 1614704 5707744 1617312 5711816 1620040 5713712 -1620040 5713712 1613592 5703136 1614696 5707712 1617312 5711816 -1619952 5713672 1620040 5713712 1617312 5711816 1619824 5713672 -1614704 5707744 1614696 5707848 1617312 5711816 1614696 5707712 -1614696 5707848 1614688 5707952 1617312 5711816 1614704 5707744 -1619656 5713744 1619688 5713672 1617312 5711816 1618856 5717400 -1619688 5713672 1619824 5713672 1617312 5711816 1619656 5713744 -1614576 5708144 1613840 5708448 1617312 5711816 1614648 5708080 -1611512 5715528 1617184 5711760 1613784 5708464 1611464 5715504 -1613784 5708464 1617184 5711760 1617312 5711816 1613840 5708448 -1617312 5711816 1617184 5711760 1611512 5715528 1611528 5715552 -1617312 5711816 1617184 5711760 1611528 5715552 1618824 5717440 -1617184 5711760 1611512 5715528 1611528 5715552 1618824 5717440 -1617312 5711816 1614576 5708144 1613840 5708448 1617184 5711760 -1614576 5708144 1613896 5708408 1613840 5708448 1617184 5711760 -1613840 5708448 1613784 5708464 1617184 5711760 1614576 5708144 -1611528 5715552 1618816 5717464 1618824 5717440 1617184 5711760 -1617312 5711816 1617184 5711760 1618824 5717440 1618856 5717400 -1617184 5711760 1618824 5717440 1617312 5711816 1614576 5708144 -1617184 5711760 1613784 5708464 1611512 5715528 1611528 5715552 -1613784 5708464 1611512 5715528 1617184 5711760 1613840 5708448 -1617312 5711816 1614648 5708080 1614576 5708144 1617184 5711760 -1614576 5708144 1613840 5708448 1617184 5711760 1614648 5708080 -1617312 5711816 1614664 5708048 1614648 5708080 1617184 5711760 -1617312 5711816 1614688 5707952 1614664 5708048 1617184 5711760 -1614664 5708048 1614648 5708080 1617184 5711760 1614688 5707952 -1617312 5711816 1614696 5707848 1614688 5707952 1617184 5711760 -1614688 5707952 1614664 5708048 1617184 5711760 1614696 5707848 -1617312 5711816 1614704 5707744 1614696 5707848 1617184 5711760 -1614696 5707848 1614688 5707952 1617184 5711760 1614704 5707744 -1617312 5711816 1614696 5707712 1614704 5707744 1617184 5711760 -1617312 5711816 1614704 5707744 1617184 5711760 1618824 5717440 -1614648 5708080 1614576 5708144 1617184 5711760 1614664 5708048 -1611512 5715528 1617000 5711648 1613784 5708464 1611464 5715504 -1617184 5711760 1617000 5711648 1611512 5715528 1611528 5715552 -1617184 5711760 1617000 5711648 1611528 5715552 1618824 5717440 -1617184 5711760 1613784 5708464 1617000 5711648 1611528 5715552 -1613784 5708464 1617000 5711648 1617184 5711760 1613840 5708448 -1617184 5711760 1614576 5708144 1613840 5708448 1617000 5711648 -1614576 5708144 1613896 5708408 1613840 5708448 1617000 5711648 -1617184 5711760 1614648 5708080 1614576 5708144 1617000 5711648 -1614576 5708144 1613840 5708448 1617000 5711648 1614648 5708080 -1617000 5711648 1611528 5715552 1617184 5711760 1614648 5708080 -1613840 5708448 1613784 5708464 1617000 5711648 1614576 5708144 -1617000 5711648 1613784 5708464 1611512 5715528 1611528 5715552 -1613784 5708464 1611512 5715528 1617000 5711648 1613840 5708448 -1617184 5711760 1614664 5708048 1614648 5708080 1617000 5711648 -1614648 5708080 1614576 5708144 1617000 5711648 1614664 5708048 -1617184 5711760 1614688 5707952 1614664 5708048 1617000 5711648 -1617184 5711760 1614696 5707848 1614688 5707952 1617000 5711648 -1614688 5707952 1614664 5708048 1617000 5711648 1614696 5707848 -1617184 5711760 1614704 5707744 1614696 5707848 1617000 5711648 -1614696 5707848 1614688 5707952 1617000 5711648 1614704 5707744 -1617184 5711760 1617312 5711816 1614704 5707744 1617000 5711648 -1614704 5707744 1614696 5707848 1617000 5711648 1617312 5711816 -1617312 5711816 1614696 5707712 1614704 5707744 1617000 5711648 -1617184 5711760 1617312 5711816 1617000 5711648 1611528 5715552 -1614664 5708048 1614648 5708080 1617000 5711648 1614688 5707952 -1611512 5715528 1616808 5711600 1613784 5708464 1611464 5715504 -1613784 5708464 1610752 5708648 1611464 5715504 1616808 5711600 -1617000 5711648 1616808 5711600 1611512 5715528 1611528 5715552 -1617000 5711648 1616808 5711600 1611528 5715552 1617184 5711760 -1611528 5715552 1618824 5717440 1617184 5711760 1616808 5711600 -1616808 5711600 1611512 5715528 1611528 5715552 1617184 5711760 -1617000 5711648 1613784 5708464 1616808 5711600 1617184 5711760 -1613784 5708464 1616808 5711600 1617000 5711648 1613840 5708448 -1617000 5711648 1614576 5708144 1613840 5708448 1616808 5711600 -1614576 5708144 1613896 5708408 1613840 5708448 1616808 5711600 -1617000 5711648 1614648 5708080 1614576 5708144 1616808 5711600 -1617000 5711648 1614664 5708048 1614648 5708080 1616808 5711600 -1614648 5708080 1614576 5708144 1616808 5711600 1614664 5708048 -1614576 5708144 1613840 5708448 1616808 5711600 1614648 5708080 -1616808 5711600 1617184 5711760 1617000 5711648 1614664 5708048 -1613840 5708448 1613784 5708464 1616808 5711600 1614576 5708144 -1611512 5715528 1611528 5715552 1616808 5711600 1611464 5715504 -1616808 5711600 1613840 5708448 1613784 5708464 1611464 5715504 -1617000 5711648 1614688 5707952 1614664 5708048 1616808 5711600 -1614664 5708048 1614648 5708080 1616808 5711600 1614688 5707952 -1617000 5711648 1614696 5707848 1614688 5707952 1616808 5711600 -1617000 5711648 1614688 5707952 1616808 5711600 1617184 5711760 -1611464 5715504 1616736 5711544 1613784 5708464 1610752 5708648 -1616808 5711600 1616736 5711544 1611464 5715504 1611512 5715528 -1616808 5711600 1616736 5711544 1611512 5715528 1611528 5715552 -1616736 5711544 1611464 5715504 1611512 5715528 1611528 5715552 -1616808 5711600 1616736 5711544 1611528 5715552 1617184 5711760 -1616808 5711600 1613784 5708464 1616736 5711544 1611528 5715552 -1613784 5708464 1616736 5711544 1616808 5711600 1613840 5708448 -1616808 5711600 1614576 5708144 1613840 5708448 1616736 5711544 -1614576 5708144 1613896 5708408 1613840 5708448 1616736 5711544 -1616808 5711600 1614648 5708080 1614576 5708144 1616736 5711544 -1616808 5711600 1614664 5708048 1614648 5708080 1616736 5711544 -1616808 5711600 1614688 5707952 1614664 5708048 1616736 5711544 -1614664 5708048 1614648 5708080 1616736 5711544 1614688 5707952 -1614648 5708080 1614576 5708144 1616736 5711544 1614664 5708048 -1614576 5708144 1613840 5708448 1616736 5711544 1614648 5708080 -1616736 5711544 1611528 5715552 1616808 5711600 1614688 5707952 -1613840 5708448 1613784 5708464 1616736 5711544 1614576 5708144 -1616736 5711544 1613784 5708464 1611464 5715504 1611512 5715528 -1613784 5708464 1611464 5715504 1616736 5711544 1613840 5708448 -1616808 5711600 1617000 5711648 1614688 5707952 1616736 5711544 -1614688 5707952 1614664 5708048 1616736 5711544 1617000 5711648 -1617000 5711648 1614696 5707848 1614688 5707952 1616736 5711544 -1616808 5711600 1617000 5711648 1616736 5711544 1611528 5715552 -1611464 5715504 1616712 5711552 1613784 5708464 1610752 5708648 -1616736 5711544 1616712 5711552 1611464 5715504 1611512 5715528 -1616736 5711544 1616712 5711552 1611512 5715528 1611528 5715552 -1616736 5711544 1616712 5711552 1611528 5715552 1616808 5711600 -1616712 5711552 1611512 5715528 1611528 5715552 1616808 5711600 -1611528 5715552 1617184 5711760 1616808 5711600 1616712 5711552 -1616712 5711552 1611464 5715504 1611512 5715528 1611528 5715552 -1616736 5711544 1613784 5708464 1616712 5711552 1616808 5711600 -1613784 5708464 1616712 5711552 1616736 5711544 1613840 5708448 -1616736 5711544 1614576 5708144 1613840 5708448 1616712 5711552 -1614576 5708144 1613896 5708408 1613840 5708448 1616712 5711552 -1616736 5711544 1614648 5708080 1614576 5708144 1616712 5711552 -1616736 5711544 1614664 5708048 1614648 5708080 1616712 5711552 -1614576 5708144 1613840 5708448 1616712 5711552 1614648 5708080 -1616712 5711552 1616808 5711600 1616736 5711544 1614648 5708080 -1613840 5708448 1613784 5708464 1616712 5711552 1614576 5708144 -1616712 5711552 1613784 5708464 1611464 5715504 1611512 5715528 -1613784 5708464 1611464 5715504 1616712 5711552 1613840 5708448 -1614648 5708080 1616688 5711480 1616736 5711544 1614664 5708048 -1616736 5711544 1614688 5707952 1614664 5708048 1616688 5711480 -1616736 5711544 1617000 5711648 1614688 5707952 1616688 5711480 -1614688 5707952 1614664 5708048 1616688 5711480 1617000 5711648 -1617000 5711648 1614696 5707848 1614688 5707952 1616688 5711480 -1617000 5711648 1614704 5707744 1614696 5707848 1616688 5711480 -1614688 5707952 1614664 5708048 1616688 5711480 1614696 5707848 -1617000 5711648 1614704 5707744 1616688 5711480 1616736 5711544 -1614696 5707848 1614688 5707952 1616688 5711480 1614704 5707744 -1617000 5711648 1617312 5711816 1614704 5707744 1616688 5711480 -1614664 5708048 1614648 5708080 1616688 5711480 1614688 5707952 -1616712 5711552 1616688 5711480 1614648 5708080 1614576 5708144 -1616712 5711552 1616688 5711480 1614576 5708144 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1616688 5711480 -1616688 5711480 1614648 5708080 1614576 5708144 1613840 5708448 -1616712 5711552 1616688 5711480 1613840 5708448 1613784 5708464 -1616688 5711480 1614576 5708144 1613840 5708448 1613784 5708464 -1616712 5711552 1616736 5711544 1616688 5711480 1613784 5708464 -1616712 5711552 1616688 5711480 1613784 5708464 1611464 5715504 -1613784 5708464 1610752 5708648 1611464 5715504 1616688 5711480 -1616688 5711480 1613840 5708448 1613784 5708464 1611464 5715504 -1616712 5711552 1616688 5711480 1611464 5715504 1611512 5715528 -1616712 5711552 1616688 5711480 1611512 5715528 1611528 5715552 -1616712 5711552 1616736 5711544 1616688 5711480 1611512 5715528 -1616688 5711480 1613784 5708464 1611464 5715504 1611512 5715528 -1614648 5708080 1614576 5708144 1616688 5711480 1614664 5708048 -1616688 5711480 1616712 5711552 1616736 5711544 1617000 5711648 -1616736 5711544 1616808 5711600 1617000 5711648 1616688 5711480 -1617000 5711648 1614704 5707744 1616688 5711480 1616808 5711600 -1616736 5711544 1616808 5711600 1616688 5711480 1616712 5711552 -1616688 5711480 1616688 5711408 1614704 5707744 1614696 5707848 -1617000 5711648 1616688 5711408 1616688 5711480 1616808 5711600 -1616688 5711480 1616688 5711408 1614696 5707848 1614688 5707952 -1616688 5711408 1614704 5707744 1614696 5707848 1614688 5707952 -1616688 5711480 1616688 5711408 1614688 5707952 1614664 5708048 -1616688 5711408 1614696 5707848 1614688 5707952 1614664 5708048 -1614704 5707744 1616688 5711408 1617000 5711648 1617312 5711816 -1614704 5707744 1616688 5711408 1617312 5711816 1614696 5707712 -1617000 5711648 1617184 5711760 1617312 5711816 1616688 5711408 -1616688 5711480 1616688 5711408 1614664 5708048 1614648 5708080 -1616688 5711408 1614688 5707952 1614664 5708048 1614648 5708080 -1616688 5711480 1616688 5711408 1614648 5708080 1614576 5708144 -1616688 5711408 1614664 5708048 1614648 5708080 1614576 5708144 -1616688 5711480 1616688 5711408 1614576 5708144 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1616688 5711408 -1616688 5711480 1616688 5711408 1613840 5708448 1613784 5708464 -1616688 5711408 1614576 5708144 1613840 5708448 1613784 5708464 -1616688 5711480 1616688 5711408 1613784 5708464 1611464 5715504 -1616688 5711408 1614648 5708080 1614576 5708144 1613840 5708448 -1616688 5711480 1616808 5711600 1616688 5711408 1613784 5708464 -1616688 5711408 1617312 5711816 1614704 5707744 1614696 5707848 -1617000 5711648 1617312 5711816 1616688 5711408 1616808 5711600 -1616688 5711480 1616736 5711544 1616808 5711600 1616688 5711408 -1616808 5711600 1617000 5711648 1616688 5711408 1616736 5711544 -1616688 5711480 1616736 5711544 1616688 5711408 1613784 5708464 -1616688 5711480 1616712 5711552 1616736 5711544 1616688 5711408 -1617312 5711816 1616728 5711296 1616688 5711408 1617000 5711648 -1614704 5707744 1616728 5711296 1617312 5711816 1614696 5707712 -1617312 5711816 1616728 5711296 1617000 5711648 1617184 5711760 -1616728 5711296 1616688 5711408 1617000 5711648 1617184 5711760 -1616688 5711408 1616728 5711296 1614704 5707744 1614696 5707848 -1616688 5711408 1616728 5711296 1614696 5707848 1614688 5707952 -1616688 5711408 1616728 5711296 1614688 5707952 1614664 5708048 -1616728 5711296 1614696 5707848 1614688 5707952 1614664 5708048 -1616688 5711408 1616728 5711296 1614664 5708048 1614648 5708080 -1616728 5711296 1614688 5707952 1614664 5708048 1614648 5708080 -1616688 5711408 1616728 5711296 1614648 5708080 1614576 5708144 -1616728 5711296 1614664 5708048 1614648 5708080 1614576 5708144 -1616688 5711408 1616728 5711296 1614576 5708144 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1616728 5711296 -1616728 5711296 1614648 5708080 1614576 5708144 1613840 5708448 -1616688 5711408 1616728 5711296 1613840 5708448 1613784 5708464 -1616728 5711296 1614704 5707744 1614696 5707848 1614688 5707952 -1616728 5711296 1613840 5708448 1616688 5711408 1617000 5711648 -1616688 5711408 1616808 5711600 1617000 5711648 1616728 5711296 -1616688 5711408 1616736 5711544 1616808 5711600 1616728 5711296 -1617000 5711648 1617184 5711760 1616728 5711296 1616808 5711600 -1616688 5711408 1616736 5711544 1616728 5711296 1613840 5708448 -1616808 5711600 1617000 5711648 1616728 5711296 1616736 5711544 -1616728 5711296 1617312 5711816 1614704 5707744 1614696 5707848 -1617312 5711816 1614704 5707744 1616728 5711296 1617184 5711760 -1616688 5711408 1616688 5711480 1616736 5711544 1616728 5711296 -1614704 5707744 1616752 5711280 1617312 5711816 1614696 5707712 -1617312 5711816 1620040 5713712 1614696 5707712 1616752 5711280 -1616752 5711280 1616728 5711296 1617312 5711816 1614696 5707712 -1616728 5711296 1616752 5711280 1614704 5707744 1614696 5707848 -1616728 5711296 1616752 5711280 1614696 5707848 1614688 5707952 -1616728 5711296 1616752 5711280 1614688 5707952 1614664 5708048 -1616728 5711296 1616752 5711280 1614664 5708048 1614648 5708080 -1616752 5711280 1614688 5707952 1614664 5708048 1614648 5708080 -1616728 5711296 1616752 5711280 1614648 5708080 1614576 5708144 -1616752 5711280 1614664 5708048 1614648 5708080 1614576 5708144 -1616728 5711296 1616752 5711280 1614576 5708144 1613840 5708448 -1616752 5711280 1614696 5707848 1614688 5707952 1614664 5708048 -1616752 5711280 1614704 5707744 1614696 5707848 1614688 5707952 -1617312 5711816 1616752 5711280 1616728 5711296 1617184 5711760 -1617312 5711816 1614696 5707712 1616752 5711280 1617184 5711760 -1616728 5711296 1617000 5711648 1617184 5711760 1616752 5711280 -1616728 5711296 1616808 5711600 1617000 5711648 1616752 5711280 -1617000 5711648 1617184 5711760 1616752 5711280 1616808 5711600 -1616728 5711296 1616736 5711544 1616808 5711600 1616752 5711280 -1616728 5711296 1616688 5711408 1616736 5711544 1616752 5711280 -1616808 5711600 1617000 5711648 1616752 5711280 1616736 5711544 -1616736 5711544 1616808 5711600 1616752 5711280 1616688 5711408 -1617184 5711760 1617312 5711816 1616752 5711280 1617000 5711648 -1614704 5707744 1614696 5707848 1616752 5711280 1614696 5707712 -1616728 5711296 1616688 5711408 1616752 5711280 1614576 5708144 -1616688 5711408 1616688 5711480 1616736 5711544 1616752 5711280 -1614696 5707712 1616744 5711240 1617312 5711816 1620040 5713712 -1617312 5711816 1616744 5711240 1616752 5711280 1617184 5711760 -1617312 5711816 1614696 5707712 1616744 5711240 1617184 5711760 -1616752 5711280 1616744 5711240 1614696 5707712 1614704 5707744 -1616744 5711240 1617312 5711816 1614696 5707712 1614704 5707744 -1616752 5711280 1617000 5711648 1617184 5711760 1616744 5711240 -1617184 5711760 1617312 5711816 1616744 5711240 1617000 5711648 -1616752 5711280 1616808 5711600 1617000 5711648 1616744 5711240 -1616752 5711280 1616744 5711240 1614704 5707744 1614696 5707848 -1616744 5711240 1614696 5707712 1614704 5707744 1614696 5707848 -1616752 5711280 1616744 5711240 1614696 5707848 1614688 5707952 -1616752 5711280 1616744 5711240 1614688 5707952 1614664 5708048 -1616752 5711280 1616744 5711240 1614664 5708048 1614648 5708080 -1616752 5711280 1616744 5711240 1614648 5708080 1614576 5708144 -1616744 5711240 1614664 5708048 1614648 5708080 1614576 5708144 -1616752 5711280 1616744 5711240 1614576 5708144 1616728 5711296 -1616744 5711240 1614648 5708080 1614576 5708144 1616728 5711296 -1614576 5708144 1613840 5708448 1616728 5711296 1616744 5711240 -1614576 5708144 1613896 5708408 1613840 5708448 1616744 5711240 -1616728 5711296 1616752 5711280 1616744 5711240 1613840 5708448 -1614576 5708144 1613840 5708448 1616744 5711240 1614648 5708080 -1613840 5708448 1616688 5711408 1616728 5711296 1616744 5711240 -1616728 5711296 1616752 5711280 1616744 5711240 1616688 5711408 -1613840 5708448 1616688 5711408 1616744 5711240 1614576 5708144 -1613840 5708448 1613784 5708464 1616688 5711408 1616744 5711240 -1616744 5711240 1614688 5707952 1614664 5708048 1614648 5708080 -1616744 5711240 1614696 5707848 1614688 5707952 1614664 5708048 -1616744 5711240 1614704 5707744 1614696 5707848 1614688 5707952 -1616744 5711240 1616728 5711296 1616752 5711280 1617000 5711648 -1613840 5708448 1616712 5711216 1616744 5711240 1614576 5708144 -1616712 5711216 1616688 5711408 1616744 5711240 1614576 5708144 -1613840 5708448 1616688 5711408 1616712 5711216 1614576 5708144 -1613840 5708448 1616712 5711216 1614576 5708144 1613896 5708408 -1616744 5711240 1614648 5708080 1614576 5708144 1616712 5711216 -1616744 5711240 1614648 5708080 1616712 5711216 1616688 5711408 -1616744 5711240 1614664 5708048 1614648 5708080 1616712 5711216 -1616744 5711240 1614664 5708048 1616712 5711216 1616688 5711408 -1614648 5708080 1614576 5708144 1616712 5711216 1614664 5708048 -1614576 5708144 1613840 5708448 1616712 5711216 1614648 5708080 -1616688 5711408 1616712 5711216 1613840 5708448 1613784 5708464 -1616688 5711408 1616744 5711240 1616712 5711216 1613784 5708464 -1616712 5711216 1614576 5708144 1613840 5708448 1613784 5708464 -1616688 5711408 1616712 5711216 1613784 5708464 1616688 5711480 -1616744 5711240 1616712 5711216 1616688 5711408 1616728 5711296 -1616744 5711240 1614664 5708048 1616712 5711216 1616728 5711296 -1616712 5711216 1613784 5708464 1616688 5711408 1616728 5711296 -1616744 5711240 1616712 5711216 1616728 5711296 1616752 5711280 -1616744 5711240 1614688 5707952 1614664 5708048 1616712 5711216 -1616744 5711240 1614688 5707952 1616712 5711216 1616728 5711296 -1614664 5708048 1614648 5708080 1616712 5711216 1614688 5707952 -1616744 5711240 1614696 5707848 1614688 5707952 1616712 5711216 -1616744 5711240 1614696 5707848 1616712 5711216 1616728 5711296 -1614688 5707952 1614664 5708048 1616712 5711216 1614696 5707848 -1616744 5711240 1614704 5707744 1614696 5707848 1616712 5711216 -1616744 5711240 1614704 5707744 1616712 5711216 1616728 5711296 -1616744 5711240 1614696 5707712 1614704 5707744 1616712 5711216 -1614696 5707848 1614688 5707952 1616712 5711216 1614704 5707744 -1616712 5711216 1616656 5711232 1616688 5711408 1616728 5711296 -1616712 5711216 1613784 5708464 1616656 5711232 1616728 5711296 -1616656 5711232 1613784 5708464 1616688 5711408 1616728 5711296 -1613784 5708464 1616656 5711232 1616712 5711216 1613840 5708448 -1616656 5711232 1616728 5711296 1616712 5711216 1613840 5708448 -1616712 5711216 1614576 5708144 1613840 5708448 1616656 5711232 -1616712 5711216 1614576 5708144 1616656 5711232 1616728 5711296 -1613784 5708464 1616688 5711408 1616656 5711232 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1616656 5711232 -1616712 5711216 1614648 5708080 1614576 5708144 1616656 5711232 -1616712 5711216 1614648 5708080 1616656 5711232 1616728 5711296 -1614576 5708144 1613840 5708448 1616656 5711232 1614648 5708080 -1616712 5711216 1614664 5708048 1614648 5708080 1616656 5711232 -1613840 5708448 1613784 5708464 1616656 5711232 1614576 5708144 -1616688 5711408 1616656 5711232 1613784 5708464 1616688 5711480 -1616688 5711408 1616728 5711296 1616656 5711232 1616688 5711480 -1616656 5711232 1613840 5708448 1613784 5708464 1616688 5711480 -1613784 5708464 1611464 5715504 1616688 5711480 1616656 5711232 -1616712 5711216 1616656 5711232 1616728 5711296 1616744 5711240 -1613784 5708464 1616456 5711216 1616656 5711232 1613840 5708448 -1616456 5711216 1616688 5711480 1616656 5711232 1613840 5708448 -1613784 5708464 1616688 5711480 1616456 5711216 1613840 5708448 -1616656 5711232 1614576 5708144 1613840 5708448 1616456 5711216 -1616656 5711232 1614648 5708080 1614576 5708144 1616456 5711216 -1616656 5711232 1614648 5708080 1616456 5711216 1616688 5711480 -1613840 5708448 1613784 5708464 1616456 5711216 1614576 5708144 -1614576 5708144 1613896 5708408 1613840 5708448 1616456 5711216 -1616656 5711232 1616712 5711216 1614648 5708080 1616456 5711216 -1614648 5708080 1614576 5708144 1616456 5711216 1616712 5711216 -1616656 5711232 1616712 5711216 1616456 5711216 1616688 5711480 -1616712 5711216 1614664 5708048 1614648 5708080 1616456 5711216 -1614576 5708144 1613840 5708448 1616456 5711216 1614648 5708080 -1616656 5711232 1616456 5711216 1616688 5711480 1616688 5711408 -1616656 5711232 1616456 5711216 1616688 5711408 1616728 5711296 -1616656 5711232 1616712 5711216 1616456 5711216 1616688 5711408 -1616456 5711216 1613784 5708464 1616688 5711480 1616688 5711408 -1616688 5711480 1616456 5711216 1613784 5708464 1611464 5715504 -1613784 5708464 1610752 5708648 1611464 5715504 1616456 5711216 -1616688 5711480 1616688 5711408 1616456 5711216 1611464 5715504 -1616456 5711216 1613840 5708448 1613784 5708464 1611464 5715504 -1616688 5711480 1616456 5711216 1611464 5715504 1611512 5715528 -1616688 5711480 1616688 5711408 1616456 5711216 1611512 5715528 -1616456 5711216 1613784 5708464 1611464 5715504 1611512 5715528 -1616688 5711480 1616456 5711216 1611512 5715528 1616712 5711552 -1616688 5711480 1616688 5711408 1616456 5711216 1616712 5711552 -1611512 5715528 1611528 5715552 1616712 5711552 1616456 5711216 -1616456 5711216 1611464 5715504 1611512 5715528 1616712 5711552 -1611464 5715504 1616328 5711160 1613784 5708464 1610752 5708648 -1613784 5708464 1616328 5711160 1616456 5711216 1613840 5708448 -1616456 5711216 1614576 5708144 1613840 5708448 1616328 5711160 -1616328 5711160 1611464 5715504 1616456 5711216 1614576 5708144 -1613840 5708448 1613784 5708464 1616328 5711160 1614576 5708144 -1613784 5708464 1611464 5715504 1616328 5711160 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1616328 5711160 -1616456 5711216 1614648 5708080 1614576 5708144 1616328 5711160 -1616456 5711216 1616712 5711216 1614648 5708080 1616328 5711160 -1614576 5708144 1613840 5708448 1616328 5711160 1614648 5708080 -1616456 5711216 1616712 5711216 1616328 5711160 1611464 5715504 -1616712 5711216 1614664 5708048 1614648 5708080 1616328 5711160 -1616712 5711216 1614664 5708048 1616328 5711160 1616456 5711216 -1616712 5711216 1614688 5707952 1614664 5708048 1616328 5711160 -1616456 5711216 1616656 5711232 1616712 5711216 1616328 5711160 -1614648 5708080 1614576 5708144 1616328 5711160 1614664 5708048 -1616456 5711216 1616328 5711160 1611464 5715504 1611512 5715528 -1616456 5711216 1616712 5711216 1616328 5711160 1611512 5715528 -1616328 5711160 1613784 5708464 1611464 5715504 1611512 5715528 -1616456 5711216 1616328 5711160 1611512 5715528 1616712 5711552 -1616456 5711216 1616712 5711216 1616328 5711160 1616712 5711552 -1611512 5715528 1611528 5715552 1616712 5711552 1616328 5711160 -1616328 5711160 1611464 5715504 1611512 5715528 1616712 5711552 -1616456 5711216 1616328 5711160 1616712 5711552 1616688 5711480 -1611464 5715504 1616264 5711104 1613784 5708464 1610752 5708648 -1616328 5711160 1616264 5711104 1611464 5715504 1611512 5715528 -1616328 5711160 1613784 5708464 1616264 5711104 1611512 5715528 -1613784 5708464 1616264 5711104 1616328 5711160 1613840 5708448 -1616328 5711160 1614576 5708144 1613840 5708448 1616264 5711104 -1616328 5711160 1614648 5708080 1614576 5708144 1616264 5711104 -1614576 5708144 1613840 5708448 1616264 5711104 1614648 5708080 -1616264 5711104 1611512 5715528 1616328 5711160 1614648 5708080 -1613840 5708448 1613784 5708464 1616264 5711104 1614576 5708144 -1616264 5711104 1613784 5708464 1611464 5715504 1611512 5715528 -1613784 5708464 1611464 5715504 1616264 5711104 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1616264 5711104 -1616328 5711160 1614664 5708048 1614648 5708080 1616264 5711104 -1614648 5708080 1614576 5708144 1616264 5711104 1614664 5708048 -1616328 5711160 1614664 5708048 1616264 5711104 1611512 5715528 -1616328 5711160 1616712 5711216 1614664 5708048 1616264 5711104 -1616328 5711160 1616456 5711216 1616712 5711216 1616264 5711104 -1616328 5711160 1616456 5711216 1616264 5711104 1611512 5715528 -1616712 5711216 1614688 5707952 1614664 5708048 1616264 5711104 -1616712 5711216 1614664 5708048 1616264 5711104 1616456 5711216 -1616456 5711216 1616656 5711232 1616712 5711216 1616264 5711104 -1614664 5708048 1614648 5708080 1616264 5711104 1616712 5711216 -1616328 5711160 1616264 5711104 1611512 5715528 1616712 5711552 -1614576 5708144 1616232 5711064 1616264 5711104 1614648 5708080 -1616264 5711104 1614664 5708048 1614648 5708080 1616232 5711064 -1614648 5708080 1614576 5708144 1616232 5711064 1614664 5708048 -1616264 5711104 1616232 5711064 1613840 5708448 1613784 5708464 -1616232 5711064 1613784 5708464 1616264 5711104 1614664 5708048 -1616264 5711104 1616232 5711064 1613784 5708464 1611464 5715504 -1613784 5708464 1610752 5708648 1611464 5715504 1616232 5711064 -1616232 5711064 1613840 5708448 1613784 5708464 1611464 5715504 -1616264 5711104 1616232 5711064 1611464 5715504 1611512 5715528 -1616264 5711104 1616232 5711064 1611512 5715528 1616328 5711160 -1616264 5711104 1614664 5708048 1616232 5711064 1611512 5715528 -1616232 5711064 1613784 5708464 1611464 5715504 1611512 5715528 -1616232 5711064 1614576 5708144 1613840 5708448 1613784 5708464 -1614576 5708144 1613840 5708448 1616232 5711064 1614648 5708080 -1613840 5708448 1616232 5711064 1614576 5708144 1613896 5708408 -1616264 5711104 1616712 5711216 1614664 5708048 1616232 5711064 -1614664 5708048 1614648 5708080 1616232 5711064 1616712 5711216 -1616264 5711104 1616712 5711216 1616232 5711064 1611512 5715528 -1616712 5711216 1614688 5707952 1614664 5708048 1616232 5711064 -1614664 5708048 1614648 5708080 1616232 5711064 1614688 5707952 -1616264 5711104 1616456 5711216 1616712 5711216 1616232 5711064 -1616264 5711104 1616328 5711160 1616456 5711216 1616232 5711064 -1616264 5711104 1616456 5711216 1616232 5711064 1611512 5715528 -1616456 5711216 1616656 5711232 1616712 5711216 1616232 5711064 -1616712 5711216 1614688 5707952 1616232 5711064 1616456 5711216 -1616712 5711216 1614696 5707848 1614688 5707952 1616232 5711064 -1616232 5711064 1616168 5710928 1614688 5707952 1614664 5708048 -1616232 5711064 1616168 5710928 1614664 5708048 1614648 5708080 -1616232 5711064 1616168 5710928 1614648 5708080 1614576 5708144 -1616168 5710928 1614664 5708048 1614648 5708080 1614576 5708144 -1616232 5711064 1616712 5711216 1616168 5710928 1614576 5708144 -1616232 5711064 1616168 5710928 1614576 5708144 1613840 5708448 -1616168 5710928 1614648 5708080 1614576 5708144 1613840 5708448 -1616232 5711064 1616168 5710928 1613840 5708448 1613784 5708464 -1616232 5711064 1616168 5710928 1613784 5708464 1611464 5715504 -1613784 5708464 1610752 5708648 1611464 5715504 1616168 5710928 -1616232 5711064 1616168 5710928 1611464 5715504 1611512 5715528 -1616168 5710928 1613784 5708464 1611464 5715504 1611512 5715528 -1616232 5711064 1616168 5710928 1611512 5715528 1616264 5711104 -1616168 5710928 1613840 5708448 1613784 5708464 1611464 5715504 -1616232 5711064 1616712 5711216 1616168 5710928 1611512 5715528 -1616168 5710928 1614576 5708144 1613840 5708448 1613784 5708464 -1616168 5710928 1616712 5711216 1614688 5707952 1614664 5708048 -1616168 5710928 1614688 5707952 1614664 5708048 1614648 5708080 -1614576 5708144 1613896 5708408 1613840 5708448 1616168 5710928 -1616712 5711216 1616168 5710928 1616232 5711064 1616456 5711216 -1616168 5710928 1611512 5715528 1616232 5711064 1616456 5711216 -1616712 5711216 1614688 5707952 1616168 5710928 1616456 5711216 -1616232 5711064 1616264 5711104 1616456 5711216 1616168 5710928 -1616712 5711216 1616168 5710928 1616456 5711216 1616656 5711232 -1614688 5707952 1616168 5710928 1616712 5711216 1614696 5707848 -1616168 5710928 1616144 5710736 1614688 5707952 1614664 5708048 -1616168 5710928 1616712 5711216 1616144 5710736 1614664 5708048 -1616712 5711216 1616144 5710736 1616168 5710928 1616456 5711216 -1616144 5710736 1616712 5711216 1614688 5707952 1614664 5708048 -1616168 5710928 1616144 5710736 1614664 5708048 1614648 5708080 -1616168 5710928 1616144 5710736 1614648 5708080 1614576 5708144 -1616168 5710928 1616144 5710736 1614576 5708144 1613840 5708448 -1616144 5710736 1614648 5708080 1614576 5708144 1613840 5708448 -1616168 5710928 1616144 5710736 1613840 5708448 1613784 5708464 -1616144 5710736 1614576 5708144 1613840 5708448 1613784 5708464 -1616168 5710928 1616144 5710736 1613784 5708464 1611464 5715504 -1616144 5710736 1614688 5707952 1614664 5708048 1614648 5708080 -1616168 5710928 1616712 5711216 1616144 5710736 1613784 5708464 -1616144 5710736 1614664 5708048 1614648 5708080 1614576 5708144 -1614576 5708144 1613896 5708408 1613840 5708448 1616144 5710736 -1614688 5707952 1616144 5710736 1616712 5711216 1614696 5707848 -1614688 5707952 1614664 5708048 1616144 5710736 1614696 5707848 -1616144 5710736 1616168 5710928 1616712 5711216 1614696 5707848 -1616712 5711216 1614704 5707744 1614696 5707848 1616144 5710736 -1616712 5711216 1614704 5707744 1616144 5710736 1616168 5710928 -1614696 5707848 1614688 5707952 1616144 5710736 1614704 5707744 -1616712 5711216 1616744 5711240 1614704 5707744 1616144 5710736 -1616712 5711216 1616168 5710616 1616144 5710736 1616168 5710928 -1616144 5710736 1616168 5710616 1614704 5707744 1614696 5707848 -1616144 5710736 1616712 5711216 1616168 5710616 1614696 5707848 -1616168 5710616 1616712 5711216 1614704 5707744 1614696 5707848 -1616144 5710736 1616168 5710616 1614696 5707848 1614688 5707952 -1616144 5710736 1616168 5710616 1614688 5707952 1614664 5708048 -1616144 5710736 1616168 5710616 1614664 5708048 1614648 5708080 -1616168 5710616 1614688 5707952 1614664 5708048 1614648 5708080 -1616144 5710736 1616712 5711216 1616168 5710616 1614648 5708080 -1616144 5710736 1616168 5710616 1614648 5708080 1614576 5708144 -1616144 5710736 1616168 5710616 1614576 5708144 1613840 5708448 -1616144 5710736 1616168 5710616 1613840 5708448 1613784 5708464 -1616168 5710616 1614576 5708144 1613840 5708448 1613784 5708464 -1616144 5710736 1616168 5710616 1613784 5708464 1616168 5710928 -1616168 5710616 1614664 5708048 1614648 5708080 1614576 5708144 -1616144 5710736 1616712 5711216 1616168 5710616 1613784 5708464 -1616168 5710616 1614648 5708080 1614576 5708144 1613840 5708448 -1614576 5708144 1613896 5708408 1613840 5708448 1616168 5710616 -1616168 5710616 1614696 5707848 1614688 5707952 1614664 5708048 -1616168 5710616 1614704 5707744 1614696 5707848 1614688 5707952 -1614704 5707744 1616168 5710616 1616712 5711216 1616744 5711240 -1614704 5707744 1614696 5707848 1616168 5710616 1616744 5711240 -1616168 5710616 1616144 5710736 1616712 5711216 1616744 5711240 -1614704 5707744 1616168 5710616 1616744 5711240 1614696 5707712 -1616744 5711240 1617312 5711816 1614696 5707712 1616168 5710616 -1614704 5707744 1614696 5707848 1616168 5710616 1614696 5707712 -1616168 5710616 1616712 5711216 1616744 5711240 1614696 5707712 -1614696 5707712 1616232 5710512 1616744 5711240 1617312 5711816 -1614696 5707712 1616232 5710512 1617312 5711816 1620040 5713712 -1617312 5711816 1619952 5713672 1620040 5713712 1616232 5710512 -1614696 5707712 1616232 5710512 1620040 5713712 1613592 5703136 -1616232 5710512 1616744 5711240 1617312 5711816 1620040 5713712 -1616744 5711240 1617184 5711760 1617312 5711816 1616232 5710512 -1614696 5707712 1616168 5710616 1616232 5710512 1620040 5713712 -1616232 5710512 1616168 5710616 1616744 5711240 1617312 5711816 -1616168 5710616 1616232 5710512 1614696 5707712 1614704 5707744 -1616168 5710616 1616232 5710512 1614704 5707744 1614696 5707848 -1616168 5710616 1616744 5711240 1616232 5710512 1614696 5707848 -1616232 5710512 1620040 5713712 1614696 5707712 1614704 5707744 -1616232 5710512 1614696 5707712 1614704 5707744 1614696 5707848 -1616168 5710616 1616232 5710512 1614696 5707848 1614688 5707952 -1616232 5710512 1614704 5707744 1614696 5707848 1614688 5707952 -1616168 5710616 1616744 5711240 1616232 5710512 1614688 5707952 -1616168 5710616 1616232 5710512 1614688 5707952 1614664 5708048 -1616168 5710616 1616232 5710512 1614664 5708048 1614648 5708080 -1616168 5710616 1616232 5710512 1614648 5708080 1614576 5708144 -1616232 5710512 1614664 5708048 1614648 5708080 1614576 5708144 -1616168 5710616 1616744 5711240 1616232 5710512 1614576 5708144 -1616168 5710616 1616232 5710512 1614576 5708144 1613840 5708448 -1616232 5710512 1614688 5707952 1614664 5708048 1614648 5708080 -1616232 5710512 1614696 5707848 1614688 5707952 1614664 5708048 -1616744 5711240 1616232 5710512 1616168 5710616 1616712 5711216 -1616232 5710512 1614576 5708144 1616168 5710616 1616712 5711216 -1616168 5710616 1616144 5710736 1616712 5711216 1616232 5710512 -1616144 5710736 1616168 5710928 1616712 5711216 1616232 5710512 -1616168 5710928 1616456 5711216 1616712 5711216 1616232 5710512 -1616168 5710616 1616144 5710736 1616232 5710512 1614576 5708144 -1616144 5710736 1616168 5710928 1616232 5710512 1616168 5710616 -1616744 5711240 1617312 5711816 1616232 5710512 1616712 5711216 -1616712 5711216 1616744 5711240 1616232 5710512 1616168 5710928 -1620040 5713712 1616280 5710480 1616232 5710512 1617312 5711816 -1620040 5713712 1616280 5710480 1617312 5711816 1619952 5713672 -1616280 5710480 1616232 5710512 1617312 5711816 1619952 5713672 -1614696 5707712 1616280 5710480 1620040 5713712 1613592 5703136 -1617312 5711816 1619824 5713672 1619952 5713672 1616280 5710480 -1616232 5710512 1616744 5711240 1617312 5711816 1616280 5710480 -1617312 5711816 1619952 5713672 1616280 5710480 1616744 5711240 -1616744 5711240 1617184 5711760 1617312 5711816 1616280 5710480 -1616232 5710512 1616280 5710480 1614696 5707712 1614704 5707744 -1616280 5710480 1614704 5707744 1616232 5710512 1616744 5711240 -1616232 5710512 1616712 5711216 1616744 5711240 1616280 5710480 -1616744 5711240 1617312 5711816 1616280 5710480 1616712 5711216 -1616232 5710512 1616712 5711216 1616280 5710480 1614704 5707744 -1616280 5710480 1620040 5713712 1614696 5707712 1614704 5707744 -1620040 5713712 1614696 5707712 1616280 5710480 1619952 5713672 -1616232 5710512 1616280 5710480 1614704 5707744 1614696 5707848 -1616232 5710512 1616280 5710480 1614696 5707848 1614688 5707952 -1616280 5710480 1614696 5707712 1614704 5707744 1614696 5707848 -1616232 5710512 1616712 5711216 1616280 5710480 1614688 5707952 -1616280 5710480 1614704 5707744 1614696 5707848 1614688 5707952 -1616232 5710512 1616280 5710480 1614688 5707952 1614664 5708048 -1616280 5710480 1614696 5707848 1614688 5707952 1614664 5708048 -1616232 5710512 1616712 5711216 1616280 5710480 1614664 5708048 -1616232 5710512 1616280 5710480 1614664 5708048 1614648 5708080 -1616232 5710512 1616280 5710480 1614648 5708080 1614576 5708144 -1616232 5710512 1616280 5710480 1614576 5708144 1616168 5710616 -1616232 5710512 1616712 5711216 1616280 5710480 1614576 5708144 -1616280 5710480 1614664 5708048 1614648 5708080 1614576 5708144 -1616280 5710480 1614688 5707952 1614664 5708048 1614648 5708080 -1616232 5710512 1616168 5710928 1616712 5711216 1616280 5710480 -1616168 5710928 1616456 5711216 1616712 5711216 1616280 5710480 -1616232 5710512 1616144 5710736 1616168 5710928 1616280 5710480 -1616232 5710512 1616168 5710616 1616144 5710736 1616280 5710480 -1616144 5710736 1616168 5710928 1616280 5710480 1616168 5710616 -1616232 5710512 1616168 5710616 1616280 5710480 1614576 5708144 -1616712 5711216 1616744 5711240 1616280 5710480 1616168 5710928 -1616168 5710928 1616712 5711216 1616280 5710480 1616144 5710736 -1614696 5707712 1616296 5710448 1620040 5713712 1613592 5703136 -1616280 5710480 1616296 5710448 1614696 5707712 1614704 5707744 -1616280 5710480 1616296 5710448 1614704 5707744 1614696 5707848 -1616296 5710448 1614696 5707712 1614704 5707744 1614696 5707848 -1616280 5710480 1620040 5713712 1616296 5710448 1614696 5707848 -1620040 5713712 1616296 5710448 1616280 5710480 1619952 5713672 -1616280 5710480 1617312 5711816 1619952 5713672 1616296 5710448 -1616280 5710480 1616744 5711240 1617312 5711816 1616296 5710448 -1617312 5711816 1619952 5713672 1616296 5710448 1616744 5711240 -1617312 5711816 1619824 5713672 1619952 5713672 1616296 5710448 -1616280 5710480 1616712 5711216 1616744 5711240 1616296 5710448 -1616744 5711240 1617312 5711816 1616296 5710448 1616712 5711216 -1616744 5711240 1617184 5711760 1617312 5711816 1616296 5710448 -1616280 5710480 1616168 5710928 1616712 5711216 1616296 5710448 -1616296 5710448 1614696 5707848 1616280 5710480 1616712 5711216 -1619952 5713672 1620040 5713712 1616296 5710448 1617312 5711816 -1616296 5710448 1620040 5713712 1614696 5707712 1614704 5707744 -1620040 5713712 1614696 5707712 1616296 5710448 1619952 5713672 -1616280 5710480 1616296 5710448 1614696 5707848 1614688 5707952 -1616280 5710480 1616296 5710448 1614688 5707952 1614664 5708048 -1616296 5710448 1614704 5707744 1614696 5707848 1614688 5707952 -1616280 5710480 1616712 5711216 1616296 5710448 1614664 5708048 -1616296 5710448 1614696 5707848 1614688 5707952 1614664 5708048 -1616280 5710480 1616296 5710448 1614664 5708048 1614648 5708080 -1616296 5710448 1614688 5707952 1614664 5708048 1614648 5708080 -1616280 5710480 1616712 5711216 1616296 5710448 1614648 5708080 -1616280 5710480 1616296 5710448 1614648 5708080 1614576 5708144 -1616280 5710480 1616296 5710448 1614576 5708144 1616232 5710512 -1614576 5708144 1616168 5710616 1616232 5710512 1616296 5710448 -1616280 5710480 1616712 5711216 1616296 5710448 1616232 5710512 -1616296 5710448 1614648 5708080 1614576 5708144 1616232 5710512 -1616296 5710448 1614664 5708048 1614648 5708080 1614576 5708144 -1614696 5707712 1616376 5710416 1620040 5713712 1613592 5703136 -1614696 5707712 1616376 5710416 1613592 5703136 1614680 5707680 -1620040 5713712 1620104 5713768 1613592 5703136 1616376 5710416 -1616296 5710448 1616376 5710416 1614696 5707712 1614704 5707744 -1616296 5710448 1616376 5710416 1614704 5707744 1614696 5707848 -1616296 5710448 1616376 5710416 1614696 5707848 1614688 5707952 -1616376 5710416 1614704 5707744 1614696 5707848 1614688 5707952 -1616376 5710416 1614696 5707712 1614704 5707744 1614696 5707848 -1616296 5710448 1620040 5713712 1616376 5710416 1614688 5707952 -1620040 5713712 1616376 5710416 1616296 5710448 1619952 5713672 -1616296 5710448 1617312 5711816 1619952 5713672 1616376 5710416 -1616296 5710448 1616744 5711240 1617312 5711816 1616376 5710416 -1616296 5710448 1616712 5711216 1616744 5711240 1616376 5710416 -1616744 5711240 1617312 5711816 1616376 5710416 1616712 5711216 -1617312 5711816 1619824 5713672 1619952 5713672 1616376 5710416 -1616296 5710448 1616280 5710480 1616712 5711216 1616376 5710416 -1616712 5711216 1616744 5711240 1616376 5710416 1616280 5710480 -1616744 5711240 1617184 5711760 1617312 5711816 1616376 5710416 -1616280 5710480 1616168 5710928 1616712 5711216 1616376 5710416 -1616712 5711216 1616744 5711240 1616376 5710416 1616168 5710928 -1616280 5710480 1616168 5710928 1616376 5710416 1616296 5710448 -1616168 5710928 1616456 5711216 1616712 5711216 1616376 5710416 -1617312 5711816 1619952 5713672 1616376 5710416 1616744 5711240 -1616376 5710416 1614688 5707952 1616296 5710448 1616280 5710480 -1619952 5713672 1620040 5713712 1616376 5710416 1617312 5711816 -1614696 5707712 1614704 5707744 1616376 5710416 1613592 5703136 -1616376 5710416 1619952 5713672 1620040 5713712 1613592 5703136 -1616296 5710448 1616376 5710416 1614688 5707952 1614664 5708048 -1616296 5710448 1616376 5710416 1614664 5708048 1614648 5708080 -1616376 5710416 1614696 5707848 1614688 5707952 1614664 5708048 -1616296 5710448 1616280 5710480 1616376 5710416 1614648 5708080 -1616376 5710416 1614688 5707952 1614664 5708048 1614648 5708080 -1616296 5710448 1616376 5710416 1614648 5708080 1614576 5708144 -1616280 5710480 1616144 5710736 1616168 5710928 1616376 5710416 -1616376 5710416 1616568 5710400 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1616568 5710400 -1613592 5703136 1616568 5710400 1620040 5713712 1620104 5713768 -1616376 5710416 1616568 5710400 1614696 5707712 1614704 5707744 -1616568 5710400 1613592 5703136 1614696 5707712 1614704 5707744 -1616376 5710416 1616568 5710400 1614704 5707744 1614696 5707848 -1616376 5710416 1616568 5710400 1614696 5707848 1614688 5707952 -1616376 5710416 1616568 5710400 1614688 5707952 1614664 5708048 -1616568 5710400 1614696 5707848 1614688 5707952 1614664 5708048 -1616568 5710400 1614704 5707744 1614696 5707848 1614688 5707952 -1616568 5710400 1614696 5707712 1614704 5707744 1614696 5707848 -1616376 5710416 1620040 5713712 1616568 5710400 1614664 5708048 -1620040 5713712 1616568 5710400 1616376 5710416 1619952 5713672 -1616376 5710416 1617312 5711816 1619952 5713672 1616568 5710400 -1617312 5711816 1619824 5713672 1619952 5713672 1616568 5710400 -1616376 5710416 1616744 5711240 1617312 5711816 1616568 5710400 -1616376 5710416 1616712 5711216 1616744 5711240 1616568 5710400 -1616376 5710416 1616168 5710928 1616712 5711216 1616568 5710400 -1616712 5711216 1616744 5711240 1616568 5710400 1616168 5710928 -1616744 5711240 1617184 5711760 1617312 5711816 1616568 5710400 -1616168 5710928 1616456 5711216 1616712 5711216 1616568 5710400 -1616712 5711216 1616744 5711240 1616568 5710400 1616456 5711216 -1616168 5710928 1616456 5711216 1616568 5710400 1616376 5710416 -1616376 5710416 1616280 5710480 1616168 5710928 1616568 5710400 -1616168 5710928 1616456 5711216 1616568 5710400 1616280 5710480 -1616376 5710416 1616296 5710448 1616280 5710480 1616568 5710400 -1616744 5711240 1617312 5711816 1616568 5710400 1616712 5711216 -1617312 5711816 1619952 5713672 1616568 5710400 1616744 5711240 -1616568 5710400 1614664 5708048 1616376 5710416 1616280 5710480 -1619952 5713672 1620040 5713712 1616568 5710400 1617312 5711816 -1616568 5710400 1620040 5713712 1613592 5703136 1614696 5707712 -1620040 5713712 1613592 5703136 1616568 5710400 1619952 5713672 -1616376 5710416 1616568 5710400 1614664 5708048 1614648 5708080 -1616456 5711216 1616656 5711232 1616712 5711216 1616568 5710400 -1616168 5710928 1616232 5711064 1616456 5711216 1616568 5710400 -1616280 5710480 1616144 5710736 1616168 5710928 1616568 5710400 -1616168 5710928 1616456 5711216 1616568 5710400 1616144 5710736 -1616280 5710480 1616168 5710616 1616144 5710736 1616568 5710400 -1616280 5710480 1616144 5710736 1616568 5710400 1616376 5710416 -1613592 5703136 1616712 5710416 1620040 5713712 1620104 5713768 -1616568 5710400 1616712 5710416 1613592 5703136 1614696 5707712 -1613592 5703136 1614680 5707680 1614696 5707712 1616712 5710416 -1616568 5710400 1616712 5710416 1614696 5707712 1614704 5707744 -1616568 5710400 1616712 5710416 1614704 5707744 1614696 5707848 -1616712 5710416 1614696 5707712 1614704 5707744 1614696 5707848 -1616568 5710400 1616712 5710416 1614696 5707848 1614688 5707952 -1616568 5710400 1616712 5710416 1614688 5707952 1614664 5708048 -1616712 5710416 1614704 5707744 1614696 5707848 1614688 5707952 -1614696 5707712 1614704 5707744 1616712 5710416 1614680 5707680 -1616568 5710400 1620040 5713712 1616712 5710416 1614688 5707952 -1620040 5713712 1616712 5710416 1616568 5710400 1619952 5713672 -1616568 5710400 1617312 5711816 1619952 5713672 1616712 5710416 -1617312 5711816 1619824 5713672 1619952 5713672 1616712 5710416 -1616568 5710400 1616744 5711240 1617312 5711816 1616712 5710416 -1616744 5711240 1617184 5711760 1617312 5711816 1616712 5710416 -1616568 5710400 1616712 5711216 1616744 5711240 1616712 5710416 -1616568 5710400 1616456 5711216 1616712 5711216 1616712 5710416 -1616744 5711240 1617312 5711816 1616712 5710416 1616712 5711216 -1617312 5711816 1619952 5713672 1616712 5710416 1616744 5711240 -1616712 5710416 1614688 5707952 1616568 5710400 1616712 5711216 -1619952 5713672 1620040 5713712 1616712 5710416 1617312 5711816 -1616712 5710416 1620040 5713712 1613592 5703136 1614680 5707680 -1620040 5713712 1613592 5703136 1616712 5710416 1619952 5713672 -1613592 5703136 1613584 5703232 1614680 5707680 1616712 5710416 -1613592 5703136 1617040 5710544 1620040 5713712 1620104 5713768 -1616712 5710416 1617040 5710544 1613592 5703136 1614680 5707680 -1616712 5710416 1617040 5710544 1614680 5707680 1614696 5707712 -1616712 5710416 1617040 5710544 1614696 5707712 1614704 5707744 -1617040 5710544 1614680 5707680 1614696 5707712 1614704 5707744 -1616712 5710416 1617040 5710544 1614704 5707744 1614696 5707848 -1617040 5710544 1613592 5703136 1614680 5707680 1614696 5707712 -1616712 5710416 1620040 5713712 1617040 5710544 1614704 5707744 -1620040 5713712 1617040 5710544 1616712 5710416 1619952 5713672 -1616712 5710416 1617312 5711816 1619952 5713672 1617040 5710544 -1617312 5711816 1619824 5713672 1619952 5713672 1617040 5710544 -1616712 5710416 1616744 5711240 1617312 5711816 1617040 5710544 -1616744 5711240 1617184 5711760 1617312 5711816 1617040 5710544 -1616744 5711240 1617000 5711648 1617184 5711760 1617040 5710544 -1617184 5711760 1617312 5711816 1617040 5710544 1617000 5711648 -1616712 5710416 1616712 5711216 1616744 5711240 1617040 5710544 -1616712 5710416 1616568 5710400 1616712 5711216 1617040 5710544 -1616744 5711240 1617000 5711648 1617040 5710544 1616712 5711216 -1617312 5711816 1619952 5713672 1617040 5710544 1617184 5711760 -1617040 5710544 1614704 5707744 1616712 5710416 1616712 5711216 -1619952 5713672 1620040 5713712 1617040 5710544 1617312 5711816 -1617040 5710544 1620040 5713712 1613592 5703136 1614680 5707680 -1620040 5713712 1613592 5703136 1617040 5710544 1619952 5713672 -1616744 5711240 1616752 5711280 1617000 5711648 1617040 5710544 -1613592 5703136 1613584 5703232 1614680 5707680 1617040 5710544 -1613592 5703136 1617144 5710648 1620040 5713712 1620104 5713768 -1617040 5710544 1617144 5710648 1613592 5703136 1614680 5707680 -1620040 5713712 1617144 5710648 1617040 5710544 1619952 5713672 -1617040 5710544 1617312 5711816 1619952 5713672 1617144 5710648 -1617312 5711816 1619824 5713672 1619952 5713672 1617144 5710648 -1617040 5710544 1617184 5711760 1617312 5711816 1617144 5710648 -1617040 5710544 1617000 5711648 1617184 5711760 1617144 5710648 -1617040 5710544 1616744 5711240 1617000 5711648 1617144 5710648 -1617000 5711648 1617184 5711760 1617144 5710648 1616744 5711240 -1617040 5710544 1616712 5711216 1616744 5711240 1617144 5710648 -1616744 5711240 1617000 5711648 1617144 5710648 1616712 5711216 -1617040 5710544 1616712 5710416 1616712 5711216 1617144 5710648 -1617184 5711760 1617312 5711816 1617144 5710648 1617000 5711648 -1617312 5711816 1619952 5713672 1617144 5710648 1617184 5711760 -1617144 5710648 1613592 5703136 1617040 5710544 1616712 5711216 -1619952 5713672 1620040 5713712 1617144 5710648 1617312 5711816 -1620040 5713712 1613592 5703136 1617144 5710648 1619952 5713672 -1616744 5711240 1616752 5711280 1617000 5711648 1617144 5710648 -1616744 5711240 1616752 5711280 1617144 5710648 1616712 5711216 -1617000 5711648 1617184 5711760 1617144 5710648 1616752 5711280 -1616752 5711280 1616808 5711600 1617000 5711648 1617144 5710648 -1619952 5713672 1617256 5710832 1617312 5711816 1619824 5713672 -1617312 5711816 1619688 5713672 1619824 5713672 1617256 5710832 -1619824 5713672 1619952 5713672 1617256 5710832 1619688 5713672 -1617312 5711816 1617256 5710832 1617144 5710648 1617184 5711760 -1617144 5710648 1617000 5711648 1617184 5711760 1617256 5710832 -1617144 5710648 1616752 5711280 1617000 5711648 1617256 5710832 -1617000 5711648 1617184 5711760 1617256 5710832 1616752 5711280 -1617184 5711760 1617312 5711816 1617256 5710832 1617000 5711648 -1617144 5710648 1617256 5710832 1619952 5713672 1620040 5713712 -1617256 5710832 1620040 5713712 1617144 5710648 1616752 5711280 -1617144 5710648 1617256 5710832 1620040 5713712 1613592 5703136 -1619952 5713672 1620040 5713712 1617256 5710832 1619824 5713672 -1617256 5710832 1617184 5711760 1617312 5711816 1619688 5713672 -1616752 5711280 1616808 5711600 1617000 5711648 1617256 5710832 -1617144 5710648 1616744 5711240 1616752 5711280 1617256 5710832 -1617144 5710648 1616712 5711216 1616744 5711240 1617256 5710832 -1616752 5711280 1617000 5711648 1617256 5710832 1616744 5711240 -1617144 5710648 1617040 5710544 1616712 5711216 1617256 5710832 -1617144 5710648 1616712 5711216 1617256 5710832 1620040 5713712 -1616744 5711240 1616752 5711280 1617256 5710832 1616712 5711216 -1617312 5711816 1619656 5713744 1619688 5713672 1617256 5710832 -1617256 5710832 1617368 5711048 1619688 5713672 1619824 5713672 -1617256 5710832 1617368 5711048 1619824 5713672 1619952 5713672 -1617368 5711048 1619688 5713672 1619824 5713672 1619952 5713672 -1617256 5710832 1617368 5711048 1619952 5713672 1620040 5713712 -1617368 5711048 1619824 5713672 1619952 5713672 1620040 5713712 -1617256 5710832 1617368 5711048 1620040 5713712 1617144 5710648 -1617256 5710832 1617312 5711816 1617368 5711048 1620040 5713712 -1617312 5711816 1617368 5711048 1617256 5710832 1617184 5711760 -1617256 5710832 1617000 5711648 1617184 5711760 1617368 5711048 -1617256 5710832 1616752 5711280 1617000 5711648 1617368 5711048 -1617256 5710832 1616744 5711240 1616752 5711280 1617368 5711048 -1616752 5711280 1617000 5711648 1617368 5711048 1616744 5711240 -1617000 5711648 1617184 5711760 1617368 5711048 1616752 5711280 -1617368 5711048 1620040 5713712 1617256 5710832 1616744 5711240 -1617184 5711760 1617312 5711816 1617368 5711048 1617000 5711648 -1617368 5711048 1617312 5711816 1619688 5713672 1619824 5713672 -1617312 5711816 1619688 5713672 1617368 5711048 1617184 5711760 -1616752 5711280 1616808 5711600 1617000 5711648 1617368 5711048 -1617256 5710832 1616712 5711216 1616744 5711240 1617368 5711048 -1619688 5713672 1617368 5711048 1617312 5711816 1619656 5713744 -1617368 5711048 1617480 5711200 1619688 5713672 1619824 5713672 -1617368 5711048 1617480 5711200 1619824 5713672 1619952 5713672 -1617368 5711048 1617480 5711200 1619952 5713672 1620040 5713712 -1617480 5711200 1619824 5713672 1619952 5713672 1620040 5713712 -1617368 5711048 1617480 5711200 1620040 5713712 1617256 5710832 -1617480 5711200 1619952 5713672 1620040 5713712 1617256 5710832 -1620040 5713712 1617144 5710648 1617256 5710832 1617480 5711200 -1617480 5711200 1619688 5713672 1619824 5713672 1619952 5713672 -1617368 5711048 1617312 5711816 1617480 5711200 1617256 5710832 -1617312 5711816 1617480 5711200 1617368 5711048 1617184 5711760 -1617368 5711048 1617000 5711648 1617184 5711760 1617480 5711200 -1617368 5711048 1616752 5711280 1617000 5711648 1617480 5711200 -1617480 5711200 1617256 5710832 1617368 5711048 1617000 5711648 -1617184 5711760 1617312 5711816 1617480 5711200 1617000 5711648 -1617480 5711200 1617312 5711816 1619688 5713672 1619824 5713672 -1617312 5711816 1619688 5713672 1617480 5711200 1617184 5711760 -1619688 5713672 1617480 5711200 1617312 5711816 1619656 5713744 -1620040 5713712 1617632 5711328 1617480 5711200 1619952 5713672 -1617480 5711200 1619824 5713672 1619952 5713672 1617632 5711328 -1619952 5713672 1620040 5713712 1617632 5711328 1619824 5713672 -1617256 5710832 1617632 5711328 1620040 5713712 1617144 5710648 -1620040 5713712 1613592 5703136 1617144 5710648 1617632 5711328 -1617480 5711200 1617632 5711328 1617256 5710832 1617368 5711048 -1617480 5711200 1619688 5713672 1619824 5713672 1617632 5711328 -1619824 5713672 1619952 5713672 1617632 5711328 1619688 5713672 -1617480 5711200 1617312 5711816 1619688 5713672 1617632 5711328 -1619688 5713672 1619824 5713672 1617632 5711328 1617312 5711816 -1617632 5711328 1617368 5711048 1617480 5711200 1617312 5711816 -1617480 5711200 1617184 5711760 1617312 5711816 1617632 5711328 -1617480 5711200 1617000 5711648 1617184 5711760 1617632 5711328 -1617480 5711200 1617184 5711760 1617632 5711328 1617368 5711048 -1617256 5710832 1617368 5711048 1617632 5711328 1617144 5710648 -1617312 5711816 1619688 5713672 1617632 5711328 1617184 5711760 -1620040 5713712 1617144 5710648 1617632 5711328 1619952 5713672 -1617312 5711816 1619656 5713744 1619688 5713672 1617632 5711328 -1613592 5703136 1617912 5711456 1620040 5713712 1620104 5713768 -1613592 5703136 1617912 5711456 1620104 5713768 1627336 5719640 -1620040 5713712 1620072 5713752 1620104 5713768 1617912 5711456 -1617144 5710648 1617912 5711456 1613592 5703136 1617040 5710544 -1620040 5713712 1617912 5711456 1617144 5710648 1617632 5711328 -1617144 5710648 1617256 5710832 1617632 5711328 1617912 5711456 -1617632 5711328 1620040 5713712 1617912 5711456 1617256 5710832 -1617256 5710832 1617368 5711048 1617632 5711328 1617912 5711456 -1617256 5710832 1617368 5711048 1617912 5711456 1617144 5710648 -1617632 5711328 1620040 5713712 1617912 5711456 1617368 5711048 -1617368 5711048 1617480 5711200 1617632 5711328 1617912 5711456 -1620040 5713712 1617912 5711456 1617632 5711328 1619952 5713672 -1617632 5711328 1619824 5713672 1619952 5713672 1617912 5711456 -1617632 5711328 1619688 5713672 1619824 5713672 1617912 5711456 -1619824 5713672 1619952 5713672 1617912 5711456 1619688 5713672 -1617912 5711456 1617368 5711048 1617632 5711328 1619688 5713672 -1617632 5711328 1617312 5711816 1619688 5713672 1617912 5711456 -1619688 5713672 1619824 5713672 1617912 5711456 1617312 5711816 -1617632 5711328 1617312 5711816 1617912 5711456 1617368 5711048 -1617632 5711328 1617184 5711760 1617312 5711816 1617912 5711456 -1619952 5713672 1620040 5713712 1617912 5711456 1619824 5713672 -1617912 5711456 1613592 5703136 1617144 5710648 1617256 5710832 -1613592 5703136 1617144 5710648 1617912 5711456 1620104 5713768 -1617912 5711456 1619952 5713672 1620040 5713712 1620104 5713768 -1617312 5711816 1619656 5713744 1619688 5713672 1617912 5711456 -1620104 5713768 1618088 5711560 1617912 5711456 1620040 5713712 -1613592 5703136 1618088 5711560 1620104 5713768 1627336 5719640 -1620104 5713768 1618088 5711560 1620040 5713712 1620072 5713752 -1617912 5711456 1618088 5711560 1613592 5703136 1617144 5710648 -1613592 5703136 1617040 5710544 1617144 5710648 1618088 5711560 -1617912 5711456 1618088 5711560 1617144 5710648 1617256 5710832 -1618088 5711560 1617144 5710648 1617912 5711456 1620040 5713712 -1617912 5711456 1619952 5713672 1620040 5713712 1618088 5711560 -1620040 5713712 1620104 5713768 1618088 5711560 1619952 5713672 -1617912 5711456 1619824 5713672 1619952 5713672 1618088 5711560 -1617912 5711456 1619688 5713672 1619824 5713672 1618088 5711560 -1617912 5711456 1617312 5711816 1619688 5713672 1618088 5711560 -1619688 5713672 1619824 5713672 1618088 5711560 1617312 5711816 -1617912 5711456 1617632 5711328 1617312 5711816 1618088 5711560 -1619824 5713672 1619952 5713672 1618088 5711560 1619688 5713672 -1617912 5711456 1617312 5711816 1618088 5711560 1617144 5710648 -1619952 5713672 1620040 5713712 1618088 5711560 1619824 5713672 -1618088 5711560 1620104 5713768 1613592 5703136 1617144 5710648 -1620104 5713768 1613592 5703136 1618088 5711560 1620040 5713712 -1617312 5711816 1619656 5713744 1619688 5713672 1618088 5711560 -1617312 5711816 1619656 5713744 1618088 5711560 1617912 5711456 -1619688 5713672 1619824 5713672 1618088 5711560 1619656 5713744 -1617312 5711816 1618856 5717400 1619656 5713744 1618088 5711560 -1619824 5713672 1618184 5711672 1618088 5711560 1619688 5713672 -1618088 5711560 1619656 5713744 1619688 5713672 1618184 5711672 -1619688 5713672 1619824 5713672 1618184 5711672 1619656 5713744 -1618088 5711560 1618184 5711672 1619952 5713672 1620040 5713712 -1618088 5711560 1618184 5711672 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1618184 5711672 -1618184 5711672 1619952 5713672 1620040 5713712 1620104 5713768 -1618184 5711672 1620104 5713768 1618088 5711560 1619656 5713744 -1618088 5711560 1618184 5711672 1620104 5713768 1613592 5703136 -1618184 5711672 1620040 5713712 1620104 5713768 1613592 5703136 -1620104 5713768 1627336 5719640 1613592 5703136 1618184 5711672 -1618088 5711560 1618184 5711672 1613592 5703136 1617144 5710648 -1618088 5711560 1619656 5713744 1618184 5711672 1613592 5703136 -1618184 5711672 1619824 5713672 1619952 5713672 1620040 5713712 -1619824 5713672 1619952 5713672 1618184 5711672 1619688 5713672 -1618088 5711560 1617312 5711816 1619656 5713744 1618184 5711672 -1618088 5711560 1617912 5711456 1617312 5711816 1618184 5711672 -1619656 5713744 1619688 5713672 1618184 5711672 1617312 5711816 -1618088 5711560 1617312 5711816 1618184 5711672 1613592 5703136 -1617312 5711816 1618856 5717400 1619656 5713744 1618184 5711672 -1618184 5711672 1618264 5711808 1619656 5713744 1619688 5713672 -1618184 5711672 1618264 5711808 1619688 5713672 1619824 5713672 -1618264 5711808 1619656 5713744 1619688 5713672 1619824 5713672 -1618184 5711672 1617312 5711816 1618264 5711808 1619824 5713672 -1618184 5711672 1618264 5711808 1619824 5713672 1619952 5713672 -1618264 5711808 1619688 5713672 1619824 5713672 1619952 5713672 -1618184 5711672 1618264 5711808 1619952 5713672 1620040 5713712 -1618184 5711672 1618264 5711808 1620040 5713712 1620104 5713768 -1618184 5711672 1617312 5711816 1618264 5711808 1620040 5713712 -1618264 5711808 1619824 5713672 1619952 5713672 1620040 5713712 -1618264 5711808 1617312 5711816 1619656 5713744 1619688 5713672 -1619656 5713744 1618264 5711808 1617312 5711816 1618856 5717400 -1617312 5711816 1618264 5711808 1618184 5711672 1618088 5711560 -1618264 5711808 1618280 5712016 1619656 5713744 1619688 5713672 -1618264 5711808 1618280 5712016 1619688 5713672 1619824 5713672 -1618264 5711808 1618280 5712016 1619824 5713672 1619952 5713672 -1618280 5712016 1619688 5713672 1619824 5713672 1619952 5713672 -1618264 5711808 1618280 5712016 1619952 5713672 1620040 5713712 -1618280 5712016 1619656 5713744 1619688 5713672 1619824 5713672 -1618264 5711808 1617312 5711816 1618280 5712016 1619952 5713672 -1617312 5711816 1618280 5712016 1618264 5711808 1618184 5711672 -1618280 5712016 1619952 5713672 1618264 5711808 1618184 5711672 -1618280 5712016 1617312 5711816 1619656 5713744 1619688 5713672 -1617312 5711816 1619656 5713744 1618280 5712016 1618184 5711672 -1619656 5713744 1618280 5712016 1617312 5711816 1618856 5717400 -1617312 5711816 1618280 5712016 1618184 5711672 1618088 5711560 -1618280 5712016 1618256 5712040 1619656 5713744 1619688 5713672 -1618280 5712016 1618256 5712040 1619688 5713672 1619824 5713672 -1618280 5712016 1617312 5711816 1618256 5712040 1619688 5713672 -1617312 5711816 1618256 5712040 1618280 5712016 1618184 5711672 -1618280 5712016 1618264 5711808 1618184 5711672 1618256 5712040 -1618256 5712040 1619688 5713672 1618280 5712016 1618264 5711808 -1618184 5711672 1617312 5711816 1618256 5712040 1618264 5711808 -1618256 5712040 1617312 5711816 1619656 5713744 1619688 5713672 -1617312 5711816 1619656 5713744 1618256 5712040 1618184 5711672 -1619656 5713744 1618256 5712040 1617312 5711816 1618856 5717400 -1617312 5711816 1618256 5712040 1618184 5711672 1618088 5711560 -1618256 5712040 1618248 5712072 1619656 5713744 1619688 5713672 -1618256 5712040 1618248 5712072 1619688 5713672 1618280 5712016 -1619688 5713672 1619824 5713672 1618280 5712016 1618248 5712072 -1618248 5712072 1619656 5713744 1619688 5713672 1618280 5712016 -1618256 5712040 1617312 5711816 1618248 5712072 1618280 5712016 -1617312 5711816 1618248 5712072 1618256 5712040 1618184 5711672 -1618256 5712040 1618264 5711808 1618184 5711672 1618248 5712072 -1618248 5712072 1618280 5712016 1618256 5712040 1618184 5711672 -1618248 5712072 1617312 5711816 1619656 5713744 1619688 5713672 -1617312 5711816 1619656 5713744 1618248 5712072 1618184 5711672 -1619656 5713744 1618248 5712072 1617312 5711816 1618856 5717400 -1617312 5711816 1618248 5712072 1618184 5711672 1618088 5711560 -1618248 5712072 1618160 5712112 1619656 5713744 1619688 5713672 -1618248 5712072 1618160 5712112 1619688 5713672 1618280 5712016 -1618248 5712072 1617312 5711816 1618160 5712112 1619688 5713672 -1617312 5711816 1618160 5712112 1618248 5712072 1618184 5711672 -1618248 5712072 1618256 5712040 1618184 5711672 1618160 5712112 -1618256 5712040 1618264 5711808 1618184 5711672 1618160 5712112 -1618256 5712040 1618280 5712016 1618264 5711808 1618160 5712112 -1618256 5712040 1618264 5711808 1618160 5712112 1618248 5712072 -1618160 5712112 1619688 5713672 1618248 5712072 1618256 5712040 -1618184 5711672 1617312 5711816 1618160 5712112 1618264 5711808 -1618160 5712112 1617312 5711816 1619656 5713744 1619688 5713672 -1617312 5711816 1619656 5713744 1618160 5712112 1618184 5711672 -1619656 5713744 1618160 5712112 1617312 5711816 1618856 5717400 -1617312 5711816 1618160 5712112 1618184 5711672 1618088 5711560 -1617312 5711816 1618160 5712112 1618088 5711560 1617912 5711456 -1617312 5711816 1618160 5712112 1617912 5711456 1617632 5711328 -1618160 5712112 1618264 5711808 1618184 5711672 1618088 5711560 -1617312 5711816 1619656 5713744 1618160 5712112 1617912 5711456 -1618160 5712112 1618184 5711672 1618088 5711560 1617912 5711456 -1617912 5711456 1618048 5712072 1618160 5712112 1618088 5711560 -1617312 5711816 1618048 5712072 1617912 5711456 1617632 5711328 -1618048 5712072 1617312 5711816 1618160 5712112 1618088 5711560 -1618160 5712112 1618048 5712072 1617312 5711816 1619656 5713744 -1618160 5712112 1618048 5712072 1619656 5713744 1619688 5713672 -1618160 5712112 1618088 5711560 1618048 5712072 1619656 5713744 -1618048 5712072 1617912 5711456 1617312 5711816 1619656 5713744 -1617912 5711456 1617312 5711816 1618048 5712072 1618088 5711560 -1617312 5711816 1618856 5717400 1619656 5713744 1618048 5712072 -1617312 5711816 1618824 5717440 1618856 5717400 1618048 5712072 -1618856 5717400 1618888 5717376 1619656 5713744 1618048 5712072 -1619656 5713744 1618160 5712112 1618048 5712072 1618856 5717400 -1617312 5711816 1618856 5717400 1618048 5712072 1617912 5711456 -1618160 5712112 1618184 5711672 1618088 5711560 1618048 5712072 -1618088 5711560 1617912 5711456 1618048 5712072 1618184 5711672 -1618160 5712112 1618264 5711808 1618184 5711672 1618048 5712072 -1618160 5712112 1618256 5712040 1618264 5711808 1618048 5712072 -1618256 5712040 1618280 5712016 1618264 5711808 1618048 5712072 -1618160 5712112 1618248 5712072 1618256 5712040 1618048 5712072 -1618264 5711808 1618184 5711672 1618048 5712072 1618256 5712040 -1618160 5712112 1618256 5712040 1618048 5712072 1619656 5713744 -1618184 5711672 1618088 5711560 1618048 5712072 1618264 5711808 -1617312 5711816 1617888 5712008 1617912 5711456 1617632 5711328 -1618048 5712072 1617888 5712008 1617312 5711816 1618856 5717400 -1617312 5711816 1618824 5717440 1618856 5717400 1617888 5712008 -1618048 5712072 1617912 5711456 1617888 5712008 1618856 5717400 -1617912 5711456 1617888 5712008 1618048 5712072 1618088 5711560 -1618048 5712072 1618184 5711672 1618088 5711560 1617888 5712008 -1617888 5712008 1618856 5717400 1618048 5712072 1618184 5711672 -1618088 5711560 1617912 5711456 1617888 5712008 1618184 5711672 -1617888 5712008 1617912 5711456 1617312 5711816 1618856 5717400 -1617912 5711456 1617312 5711816 1617888 5712008 1618088 5711560 -1618048 5712072 1617888 5712008 1618856 5717400 1619656 5713744 -1618856 5717400 1618888 5717376 1619656 5713744 1617888 5712008 -1618048 5712072 1617888 5712008 1619656 5713744 1618160 5712112 -1617888 5712008 1617312 5711816 1618856 5717400 1619656 5713744 -1618048 5712072 1618184 5711672 1617888 5712008 1619656 5713744 -1618048 5712072 1618264 5711808 1618184 5711672 1617888 5712008 -1618184 5711672 1618088 5711560 1617888 5712008 1618264 5711808 -1618048 5712072 1618256 5712040 1618264 5711808 1617888 5712008 -1618048 5712072 1618264 5711808 1617888 5712008 1619656 5713744 -1617312 5711816 1617736 5711920 1617912 5711456 1617632 5711328 -1617736 5711920 1617888 5712008 1617912 5711456 1617632 5711328 -1617312 5711816 1617736 5711920 1617632 5711328 1617184 5711760 -1617888 5712008 1617736 5711920 1617312 5711816 1618856 5717400 -1617912 5711456 1617736 5711920 1617888 5712008 1618088 5711560 -1617912 5711456 1617632 5711328 1617736 5711920 1618088 5711560 -1617888 5712008 1618184 5711672 1618088 5711560 1617736 5711920 -1617736 5711920 1617312 5711816 1617888 5712008 1618088 5711560 -1617312 5711816 1617888 5712008 1617736 5711920 1617632 5711328 -1617632 5711328 1617680 5711880 1617736 5711920 1617912 5711456 -1617736 5711920 1618088 5711560 1617912 5711456 1617680 5711880 -1617680 5711880 1617312 5711816 1617736 5711920 1617912 5711456 -1617632 5711328 1617312 5711816 1617680 5711880 1617912 5711456 -1617312 5711816 1617680 5711880 1617632 5711328 1617184 5711760 -1617736 5711920 1617680 5711880 1617312 5711816 1617888 5712008 -1617312 5711816 1617656 5711880 1617680 5711880 1617632 5711328 -1617656 5711880 1617736 5711920 1617680 5711880 1617632 5711328 -1617680 5711880 1617912 5711456 1617632 5711328 1617656 5711880 -1617312 5711816 1617736 5711920 1617656 5711880 1617632 5711328 -1617312 5711816 1617656 5711880 1617632 5711328 1617184 5711760 -1617736 5711920 1617656 5711880 1617312 5711816 1617888 5712008 -1617632 5711328 1617552 5711848 1617656 5711880 1617680 5711880 -1617632 5711328 1617552 5711848 1617680 5711880 1617912 5711456 -1617680 5711880 1617736 5711920 1617912 5711456 1617552 5711848 -1617552 5711848 1617656 5711880 1617680 5711880 1617912 5711456 -1617552 5711848 1617312 5711816 1617656 5711880 1617680 5711880 -1617656 5711880 1617552 5711848 1617312 5711816 1617736 5711920 -1617656 5711880 1617552 5711848 1617736 5711920 1617680 5711880 -1617656 5711880 1617680 5711880 1617552 5711848 1617736 5711920 -1617552 5711848 1617632 5711328 1617312 5711816 1617736 5711920 -1617632 5711328 1617312 5711816 1617552 5711848 1617912 5711456 -1617312 5711816 1617552 5711848 1617632 5711328 1617184 5711760 -1617312 5711816 1617888 5712008 1617736 5711920 1617552 5711848 -1627384 5719672 1617728 5707184 1613592 5703136 1627336 5719640 -1613592 5703136 1620104 5713768 1627336 5719640 1617728 5707184 -1613592 5703136 1618184 5711672 1620104 5713768 1617728 5707184 -1618184 5711672 1620040 5713712 1620104 5713768 1617728 5707184 -1618184 5711672 1620040 5713712 1617728 5707184 1613592 5703136 -1620040 5713712 1620072 5713752 1620104 5713768 1617728 5707184 -1620104 5713768 1620160 5713848 1627336 5719640 1617728 5707184 -1620160 5713848 1620512 5714368 1627336 5719640 1617728 5707184 -1620104 5713768 1620160 5713848 1617728 5707184 1620040 5713712 -1627336 5719640 1627384 5719672 1617728 5707184 1620160 5713848 -1663880 5646248 1617728 5707184 1627384 5719672 1663944 5646256 -1617728 5707184 1663880 5646248 1613592 5703136 1618184 5711672 -1627384 5719672 1663880 5646248 1617728 5707184 1627336 5719640 -1618184 5711672 1618264 5711808 1620040 5713712 1617728 5707184 -1620040 5713712 1620104 5713768 1617728 5707184 1618264 5711808 -1618184 5711672 1618264 5711808 1617728 5707184 1613592 5703136 -1613592 5703136 1618088 5711560 1618184 5711672 1617728 5707184 -1618184 5711672 1618264 5711808 1617728 5707184 1618088 5711560 -1613592 5703136 1618088 5711560 1617728 5707184 1663880 5646248 -1613592 5703136 1617144 5710648 1618088 5711560 1617728 5707184 -1613592 5703136 1617040 5710544 1617144 5710648 1617728 5707184 -1613592 5703136 1614680 5707680 1617040 5710544 1617728 5707184 -1614680 5707680 1614696 5707712 1617040 5710544 1617728 5707184 -1614696 5707712 1614704 5707744 1617040 5710544 1617728 5707184 -1614704 5707744 1616712 5710416 1617040 5710544 1617728 5707184 -1614704 5707744 1616712 5710416 1617728 5707184 1614696 5707712 -1614704 5707744 1614696 5707848 1616712 5710416 1617728 5707184 -1614704 5707744 1614696 5707848 1617728 5707184 1614696 5707712 -1614696 5707848 1614688 5707952 1616712 5710416 1617728 5707184 -1614696 5707848 1614688 5707952 1617728 5707184 1614704 5707744 -1614688 5707952 1616568 5710400 1616712 5710416 1617728 5707184 -1614688 5707952 1614664 5708048 1616568 5710400 1617728 5707184 -1614664 5708048 1616376 5710416 1616568 5710400 1617728 5707184 -1616568 5710400 1616712 5710416 1617728 5707184 1614664 5708048 -1614688 5707952 1614664 5708048 1617728 5707184 1614696 5707848 -1616712 5710416 1617040 5710544 1617728 5707184 1616568 5710400 -1614696 5707712 1614704 5707744 1617728 5707184 1614680 5707680 -1614680 5707680 1614696 5707712 1617728 5707184 1613592 5703136 -1617040 5710544 1617144 5710648 1617728 5707184 1616712 5710416 -1613592 5703136 1614680 5707680 1617728 5707184 1663880 5646248 -1617144 5710648 1617912 5711456 1618088 5711560 1617728 5707184 -1617144 5710648 1618088 5711560 1617728 5707184 1617040 5710544 -1618088 5711560 1618184 5711672 1617728 5707184 1617144 5710648 -1618264 5711808 1619952 5713672 1620040 5713712 1617728 5707184 -1613592 5703136 1617728 5707184 1663880 5646248 1611560 5699312 -1663880 5646248 1611528 5699256 1611560 5699312 1617728 5707184 -1613592 5703136 1614680 5707680 1617728 5707184 1611560 5699312 -1617728 5707184 1627384 5719672 1663880 5646248 1611528 5699256 -1663880 5646248 1601624 5681136 1611528 5699256 1617728 5707184 -1613592 5703136 1617728 5707184 1611560 5699312 1613464 5703016 -1611560 5699312 1613592 5703136 1617728 5707184 1611528 5699256 -1613592 5703136 1613584 5703232 1614680 5707680 1617728 5707184 -1614680 5707680 1614696 5707712 1617728 5707184 1613584 5703232 -1613592 5703136 1613584 5703232 1617728 5707184 1611560 5699312 -1613584 5703232 1614648 5707656 1614680 5707680 1617728 5707184 -1614680 5707680 1614696 5707712 1617728 5707184 1614648 5707656 -1613584 5703232 1614576 5707608 1614648 5707656 1617728 5707184 -1613584 5703232 1613552 5703272 1614576 5707608 1617728 5707184 -1614648 5707656 1614680 5707680 1617728 5707184 1614576 5707608 -1613584 5703232 1614576 5707608 1617728 5707184 1613592 5703136 -1663880 5646248 1617792 5707104 1627384 5719672 1663944 5646256 -1617728 5707184 1617792 5707104 1663880 5646248 1611528 5699256 -1617728 5707184 1617792 5707104 1611528 5699256 1611560 5699312 -1617792 5707104 1663880 5646248 1611528 5699256 1611560 5699312 -1617728 5707184 1627384 5719672 1617792 5707104 1611560 5699312 -1627384 5719672 1617792 5707104 1617728 5707184 1627336 5719640 -1617728 5707184 1620160 5713848 1627336 5719640 1617792 5707104 -1620160 5713848 1620512 5714368 1627336 5719640 1617792 5707104 -1617728 5707184 1620104 5713768 1620160 5713848 1617792 5707104 -1617728 5707184 1620040 5713712 1620104 5713768 1617792 5707104 -1617728 5707184 1618264 5711808 1620040 5713712 1617792 5707104 -1620040 5713712 1620072 5713752 1620104 5713768 1617792 5707104 -1620104 5713768 1620160 5713848 1617792 5707104 1620040 5713712 -1620040 5713712 1620104 5713768 1617792 5707104 1618264 5711808 -1620160 5713848 1627336 5719640 1617792 5707104 1620104 5713768 -1617792 5707104 1611560 5699312 1617728 5707184 1618264 5711808 -1627336 5719640 1627384 5719672 1617792 5707104 1620160 5713848 -1617792 5707104 1627384 5719672 1663880 5646248 1611528 5699256 -1627384 5719672 1663880 5646248 1617792 5707104 1627336 5719640 -1663880 5646248 1601624 5681136 1611528 5699256 1617792 5707104 -1617728 5707184 1618184 5711672 1618264 5711808 1617792 5707104 -1618264 5711808 1620040 5713712 1617792 5707104 1618184 5711672 -1617728 5707184 1618088 5711560 1618184 5711672 1617792 5707104 -1617728 5707184 1618088 5711560 1617792 5707104 1611560 5699312 -1618184 5711672 1618264 5711808 1617792 5707104 1618088 5711560 -1617728 5707184 1617144 5710648 1618088 5711560 1617792 5707104 -1618264 5711808 1619952 5713672 1620040 5713712 1617792 5707104 -1617728 5707184 1617792 5707104 1611560 5699312 1613592 5703136 -1617792 5707104 1611528 5699256 1611560 5699312 1613592 5703136 -1617728 5707184 1617792 5707104 1613592 5703136 1613584 5703232 -1617728 5707184 1618088 5711560 1617792 5707104 1613584 5703232 -1611560 5699312 1613464 5703016 1613592 5703136 1617792 5707104 -1617792 5707104 1611560 5699312 1613592 5703136 1613584 5703232 -1617728 5707184 1617792 5707104 1613584 5703232 1614576 5707608 -1617792 5707104 1613592 5703136 1613584 5703232 1614576 5707608 -1617728 5707184 1618088 5711560 1617792 5707104 1614576 5707608 -1613584 5703232 1613552 5703272 1614576 5707608 1617792 5707104 -1617728 5707184 1617792 5707104 1614576 5707608 1614648 5707656 -1617728 5707184 1618088 5711560 1617792 5707104 1614648 5707656 -1617728 5707184 1617792 5707104 1614648 5707656 1614680 5707680 -1617792 5707104 1613584 5703232 1614576 5707608 1614648 5707656 -1663880 5646248 1617824 5707096 1627384 5719672 1663944 5646256 -1617792 5707104 1617824 5707096 1663880 5646248 1611528 5699256 -1617792 5707104 1617824 5707096 1611528 5699256 1611560 5699312 -1617792 5707104 1617824 5707096 1611560 5699312 1613592 5703136 -1617824 5707096 1611528 5699256 1611560 5699312 1613592 5703136 -1617824 5707096 1663880 5646248 1611528 5699256 1611560 5699312 -1617792 5707104 1627384 5719672 1617824 5707096 1613592 5703136 -1627384 5719672 1617824 5707096 1617792 5707104 1627336 5719640 -1617792 5707104 1620160 5713848 1627336 5719640 1617824 5707096 -1620160 5713848 1620512 5714368 1627336 5719640 1617824 5707096 -1617792 5707104 1620104 5713768 1620160 5713848 1617824 5707096 -1617792 5707104 1620040 5713712 1620104 5713768 1617824 5707096 -1620040 5713712 1620072 5713752 1620104 5713768 1617824 5707096 -1617792 5707104 1618264 5711808 1620040 5713712 1617824 5707096 -1617792 5707104 1618184 5711672 1618264 5711808 1617824 5707096 -1620040 5713712 1620104 5713768 1617824 5707096 1618264 5711808 -1618264 5711808 1620040 5713712 1617824 5707096 1618184 5711672 -1620104 5713768 1620160 5713848 1617824 5707096 1620040 5713712 -1620160 5713848 1627336 5719640 1617824 5707096 1620104 5713768 -1617824 5707096 1613592 5703136 1617792 5707104 1618184 5711672 -1627336 5719640 1627384 5719672 1617824 5707096 1620160 5713848 -1663880 5646248 1601624 5681136 1611528 5699256 1617824 5707096 -1617792 5707104 1618088 5711560 1618184 5711672 1617824 5707096 -1618184 5711672 1618264 5711808 1617824 5707096 1618088 5711560 -1617792 5707104 1617728 5707184 1618088 5711560 1617824 5707096 -1617792 5707104 1617728 5707184 1617824 5707096 1613592 5703136 -1618088 5711560 1618184 5711672 1617824 5707096 1617728 5707184 -1617728 5707184 1617144 5710648 1618088 5711560 1617824 5707096 -1618264 5711808 1619952 5713672 1620040 5713712 1617824 5707096 -1617824 5707096 1627384 5719672 1663880 5646248 1611528 5699256 -1627384 5719672 1663880 5646248 1617824 5707096 1627336 5719640 -1611560 5699312 1613464 5703016 1613592 5703136 1617824 5707096 -1617792 5707104 1617824 5707096 1613592 5703136 1613584 5703232 -1617824 5707096 1611560 5699312 1613592 5703136 1613584 5703232 -1617792 5707104 1617824 5707096 1613584 5703232 1614576 5707608 -1617792 5707104 1617728 5707184 1617824 5707096 1613584 5703232 -1663880 5646248 1617856 5707112 1627384 5719672 1663944 5646256 -1617824 5707096 1617856 5707112 1663880 5646248 1611528 5699256 -1617824 5707096 1617856 5707112 1611528 5699256 1611560 5699312 -1617824 5707096 1617856 5707112 1611560 5699312 1613592 5703136 -1617824 5707096 1617856 5707112 1613592 5703136 1613584 5703232 -1617856 5707112 1611528 5699256 1611560 5699312 1613592 5703136 -1617856 5707112 1627384 5719672 1663880 5646248 1611528 5699256 -1663880 5646248 1601624 5681136 1611528 5699256 1617856 5707112 -1617856 5707112 1663880 5646248 1611528 5699256 1611560 5699312 -1617824 5707096 1627384 5719672 1617856 5707112 1613592 5703136 -1627384 5719672 1617856 5707112 1617824 5707096 1627336 5719640 -1617824 5707096 1620160 5713848 1627336 5719640 1617856 5707112 -1620160 5713848 1620512 5714368 1627336 5719640 1617856 5707112 -1620512 5714368 1620552 5714440 1627336 5719640 1617856 5707112 -1617824 5707096 1620104 5713768 1620160 5713848 1617856 5707112 -1617824 5707096 1620040 5713712 1620104 5713768 1617856 5707112 -1620040 5713712 1620072 5713752 1620104 5713768 1617856 5707112 -1617824 5707096 1618264 5711808 1620040 5713712 1617856 5707112 -1617824 5707096 1618184 5711672 1618264 5711808 1617856 5707112 -1617824 5707096 1618088 5711560 1618184 5711672 1617856 5707112 -1618264 5711808 1620040 5713712 1617856 5707112 1618184 5711672 -1618184 5711672 1618264 5711808 1617856 5707112 1618088 5711560 -1620040 5713712 1620104 5713768 1617856 5707112 1618264 5711808 -1620104 5713768 1620160 5713848 1617856 5707112 1620040 5713712 -1620160 5713848 1620512 5714368 1617856 5707112 1620104 5713768 -1627384 5719672 1663880 5646248 1617856 5707112 1627336 5719640 -1620160 5713848 1620272 5714120 1620512 5714368 1617856 5707112 -1617824 5707096 1617728 5707184 1618088 5711560 1617856 5707112 -1618088 5711560 1618184 5711672 1617856 5707112 1617728 5707184 -1617824 5707096 1617792 5707104 1617728 5707184 1617856 5707112 -1617728 5707184 1618088 5711560 1617856 5707112 1617792 5707104 -1617728 5707184 1617144 5710648 1618088 5711560 1617856 5707112 -1618088 5711560 1618184 5711672 1617856 5707112 1617144 5710648 -1617144 5710648 1617912 5711456 1618088 5711560 1617856 5707112 -1617728 5707184 1617144 5710648 1617856 5707112 1617792 5707104 -1617728 5707184 1617040 5710544 1617144 5710648 1617856 5707112 -1618264 5711808 1619952 5713672 1620040 5713712 1617856 5707112 -1617856 5707112 1613592 5703136 1617824 5707096 1617792 5707104 -1627336 5719640 1627384 5719672 1617856 5707112 1620512 5714368 -1611560 5699312 1613464 5703016 1613592 5703136 1617856 5707112 -1663880 5646248 1617904 5707152 1627384 5719672 1663944 5646256 -1617856 5707112 1617904 5707152 1663880 5646248 1611528 5699256 -1617904 5707152 1627384 5719672 1663880 5646248 1611528 5699256 -1617856 5707112 1627384 5719672 1617904 5707152 1611528 5699256 -1627384 5719672 1617904 5707152 1617856 5707112 1627336 5719640 -1627384 5719672 1663880 5646248 1617904 5707152 1627336 5719640 -1617904 5707152 1611528 5699256 1617856 5707112 1627336 5719640 -1663880 5646248 1601624 5681136 1611528 5699256 1617904 5707152 -1617856 5707112 1617904 5707152 1611528 5699256 1611560 5699312 -1617856 5707112 1617904 5707152 1611560 5699312 1613592 5703136 -1617904 5707152 1663880 5646248 1611528 5699256 1611560 5699312 -1617856 5707112 1627336 5719640 1617904 5707152 1611560 5699312 -1617856 5707112 1620512 5714368 1627336 5719640 1617904 5707152 -1617856 5707112 1620160 5713848 1620512 5714368 1617904 5707152 -1620512 5714368 1620552 5714440 1627336 5719640 1617904 5707152 -1617856 5707112 1620104 5713768 1620160 5713848 1617904 5707152 -1620160 5713848 1620512 5714368 1617904 5707152 1620104 5713768 -1617856 5707112 1620040 5713712 1620104 5713768 1617904 5707152 -1620040 5713712 1620072 5713752 1620104 5713768 1617904 5707152 -1617856 5707112 1618264 5711808 1620040 5713712 1617904 5707152 -1617856 5707112 1618184 5711672 1618264 5711808 1617904 5707152 -1617856 5707112 1618088 5711560 1618184 5711672 1617904 5707152 -1617856 5707112 1617144 5710648 1618088 5711560 1617904 5707152 -1618184 5711672 1618264 5711808 1617904 5707152 1618088 5711560 -1618088 5711560 1618184 5711672 1617904 5707152 1617144 5710648 -1618264 5711808 1620040 5713712 1617904 5707152 1618184 5711672 -1620040 5713712 1620104 5713768 1617904 5707152 1618264 5711808 -1620104 5713768 1620160 5713848 1617904 5707152 1620040 5713712 -1617856 5707112 1617144 5710648 1617904 5707152 1611560 5699312 -1627336 5719640 1627384 5719672 1617904 5707152 1620512 5714368 -1620160 5713848 1620272 5714120 1620512 5714368 1617904 5707152 -1617144 5710648 1617912 5711456 1618088 5711560 1617904 5707152 -1617856 5707112 1617728 5707184 1617144 5710648 1617904 5707152 -1617144 5710648 1618088 5711560 1617904 5707152 1617728 5707184 -1617856 5707112 1617728 5707184 1617904 5707152 1611560 5699312 -1617856 5707112 1617792 5707104 1617728 5707184 1617904 5707152 -1617728 5707184 1617040 5710544 1617144 5710648 1617904 5707152 -1617144 5710648 1618088 5711560 1617904 5707152 1617040 5710544 -1617728 5707184 1616712 5710416 1617040 5710544 1617904 5707152 -1617728 5707184 1617040 5710544 1617904 5707152 1617856 5707112 -1618264 5711808 1619952 5713672 1620040 5713712 1617904 5707152 -1620512 5714368 1627336 5719640 1617904 5707152 1620160 5713848 -1627336 5719640 1617944 5707208 1620512 5714368 1620552 5714440 -1617904 5707152 1617944 5707208 1627336 5719640 1627384 5719672 -1617904 5707152 1620512 5714368 1617944 5707208 1627384 5719672 -1617904 5707152 1617944 5707208 1627384 5719672 1663880 5646248 -1617904 5707152 1617944 5707208 1663880 5646248 1611528 5699256 -1617904 5707152 1620512 5714368 1617944 5707208 1663880 5646248 -1617944 5707208 1620512 5714368 1627336 5719640 1627384 5719672 -1627384 5719672 1663944 5646256 1663880 5646248 1617944 5707208 -1617944 5707208 1627336 5719640 1627384 5719672 1663880 5646248 -1620512 5714368 1617944 5707208 1617904 5707152 1620160 5713848 -1617944 5707208 1663880 5646248 1617904 5707152 1620160 5713848 -1620512 5714368 1627336 5719640 1617944 5707208 1620160 5713848 -1617904 5707152 1620104 5713768 1620160 5713848 1617944 5707208 -1617904 5707152 1620104 5713768 1617944 5707208 1663880 5646248 -1617904 5707152 1620040 5713712 1620104 5713768 1617944 5707208 -1617904 5707152 1620040 5713712 1617944 5707208 1663880 5646248 -1620104 5713768 1620160 5713848 1617944 5707208 1620040 5713712 -1620040 5713712 1620072 5713752 1620104 5713768 1617944 5707208 -1617904 5707152 1618264 5711808 1620040 5713712 1617944 5707208 -1617904 5707152 1618264 5711808 1617944 5707208 1663880 5646248 -1617904 5707152 1618184 5711672 1618264 5711808 1617944 5707208 -1617904 5707152 1618184 5711672 1617944 5707208 1663880 5646248 -1617904 5707152 1618088 5711560 1618184 5711672 1617944 5707208 -1617904 5707152 1618088 5711560 1617944 5707208 1663880 5646248 -1617904 5707152 1617144 5710648 1618088 5711560 1617944 5707208 -1617904 5707152 1617144 5710648 1617944 5707208 1663880 5646248 -1617904 5707152 1617040 5710544 1617144 5710648 1617944 5707208 -1617904 5707152 1617040 5710544 1617944 5707208 1663880 5646248 -1618088 5711560 1618184 5711672 1617944 5707208 1617144 5710648 -1617144 5710648 1618088 5711560 1617944 5707208 1617040 5710544 -1618184 5711672 1618264 5711808 1617944 5707208 1618088 5711560 -1618264 5711808 1620040 5713712 1617944 5707208 1618184 5711672 -1620040 5713712 1620104 5713768 1617944 5707208 1618264 5711808 -1620512 5714368 1617944 5707208 1620160 5713848 1620272 5714120 -1617144 5710648 1617912 5711456 1618088 5711560 1617944 5707208 -1617904 5707152 1617728 5707184 1617040 5710544 1617944 5707208 -1617904 5707152 1617728 5707184 1617944 5707208 1663880 5646248 -1617040 5710544 1617144 5710648 1617944 5707208 1617728 5707184 -1617728 5707184 1616712 5710416 1617040 5710544 1617944 5707208 -1617904 5707152 1617856 5707112 1617728 5707184 1617944 5707208 -1618264 5711808 1619952 5713672 1620040 5713712 1617944 5707208 -1620160 5713848 1620512 5714368 1617944 5707208 1620104 5713768 -1617944 5707208 1617984 5707264 1627336 5719640 1627384 5719672 -1617944 5707208 1620512 5714368 1617984 5707264 1627384 5719672 -1620512 5714368 1617984 5707264 1617944 5707208 1620160 5713848 -1617984 5707264 1627384 5719672 1617944 5707208 1620160 5713848 -1620512 5714368 1627336 5719640 1617984 5707264 1620160 5713848 -1627336 5719640 1617984 5707264 1620512 5714368 1620552 5714440 -1617944 5707208 1617984 5707264 1627384 5719672 1663880 5646248 -1617944 5707208 1617984 5707264 1663880 5646248 1617904 5707152 -1617984 5707264 1627336 5719640 1627384 5719672 1663880 5646248 -1617944 5707208 1620160 5713848 1617984 5707264 1663880 5646248 -1627384 5719672 1663944 5646256 1663880 5646248 1617984 5707264 -1617984 5707264 1620512 5714368 1627336 5719640 1627384 5719672 -1620512 5714368 1617984 5707264 1620160 5713848 1620272 5714120 -1617944 5707208 1620104 5713768 1620160 5713848 1617984 5707264 -1617944 5707208 1620104 5713768 1617984 5707264 1663880 5646248 -1620160 5713848 1620512 5714368 1617984 5707264 1620104 5713768 -1617944 5707208 1620040 5713712 1620104 5713768 1617984 5707264 -1617944 5707208 1620040 5713712 1617984 5707264 1663880 5646248 -1620040 5713712 1620072 5713752 1620104 5713768 1617984 5707264 -1617944 5707208 1618264 5711808 1620040 5713712 1617984 5707264 -1617944 5707208 1618264 5711808 1617984 5707264 1663880 5646248 -1620040 5713712 1620104 5713768 1617984 5707264 1618264 5711808 -1617944 5707208 1618184 5711672 1618264 5711808 1617984 5707264 -1617944 5707208 1618184 5711672 1617984 5707264 1663880 5646248 -1617944 5707208 1618088 5711560 1618184 5711672 1617984 5707264 -1617944 5707208 1618088 5711560 1617984 5707264 1663880 5646248 -1617944 5707208 1617144 5710648 1618088 5711560 1617984 5707264 -1617944 5707208 1617144 5710648 1617984 5707264 1663880 5646248 -1617944 5707208 1617040 5710544 1617144 5710648 1617984 5707264 -1617944 5707208 1617040 5710544 1617984 5707264 1663880 5646248 -1617944 5707208 1617728 5707184 1617040 5710544 1617984 5707264 -1617944 5707208 1617728 5707184 1617984 5707264 1663880 5646248 -1617144 5710648 1618088 5711560 1617984 5707264 1617040 5710544 -1617040 5710544 1617144 5710648 1617984 5707264 1617728 5707184 -1618088 5711560 1618184 5711672 1617984 5707264 1617144 5710648 -1617728 5707184 1616712 5710416 1617040 5710544 1617984 5707264 -1617728 5707184 1616712 5710416 1617984 5707264 1617944 5707208 -1617040 5710544 1617144 5710648 1617984 5707264 1616712 5710416 -1617728 5707184 1616568 5710400 1616712 5710416 1617984 5707264 -1618184 5711672 1618264 5711808 1617984 5707264 1618088 5711560 -1618264 5711808 1620040 5713712 1617984 5707264 1618184 5711672 -1617144 5710648 1617912 5711456 1618088 5711560 1617984 5707264 -1617944 5707208 1617904 5707152 1617728 5707184 1617984 5707264 -1618264 5711808 1619952 5713672 1620040 5713712 1617984 5707264 -1620104 5713768 1620160 5713848 1617984 5707264 1620040 5713712 -1627384 5719672 1618032 5707320 1617984 5707264 1627336 5719640 -1618032 5707320 1663880 5646248 1617984 5707264 1627336 5719640 -1627384 5719672 1663880 5646248 1618032 5707320 1627336 5719640 -1663880 5646248 1618032 5707320 1627384 5719672 1663944 5646256 -1617984 5707264 1618032 5707320 1663880 5646248 1617944 5707208 -1663880 5646248 1617904 5707152 1617944 5707208 1618032 5707320 -1663880 5646248 1611528 5699256 1617904 5707152 1618032 5707320 -1617984 5707264 1627336 5719640 1618032 5707320 1617944 5707208 -1618032 5707320 1627384 5719672 1663880 5646248 1617904 5707152 -1617944 5707208 1617984 5707264 1618032 5707320 1617904 5707152 -1617984 5707264 1620512 5714368 1627336 5719640 1618032 5707320 -1627336 5719640 1627384 5719672 1618032 5707320 1620512 5714368 -1617984 5707264 1620512 5714368 1618032 5707320 1617944 5707208 -1617984 5707264 1620160 5713848 1620512 5714368 1618032 5707320 -1617984 5707264 1620104 5713768 1620160 5713848 1618032 5707320 -1617984 5707264 1620104 5713768 1618032 5707320 1617944 5707208 -1620160 5713848 1620512 5714368 1618032 5707320 1620104 5713768 -1620512 5714368 1620552 5714440 1627336 5719640 1618032 5707320 -1620512 5714368 1627336 5719640 1618032 5707320 1620160 5713848 -1620160 5713848 1620272 5714120 1620512 5714368 1618032 5707320 -1617984 5707264 1620040 5713712 1620104 5713768 1618032 5707320 -1620104 5713768 1620160 5713848 1618032 5707320 1620040 5713712 -1617984 5707264 1620040 5713712 1618032 5707320 1617944 5707208 -1617984 5707264 1618264 5711808 1620040 5713712 1618032 5707320 -1617984 5707264 1618264 5711808 1618032 5707320 1617944 5707208 -1620040 5713712 1620072 5713752 1620104 5713768 1618032 5707320 -1617984 5707264 1618184 5711672 1618264 5711808 1618032 5707320 -1617984 5707264 1618184 5711672 1618032 5707320 1617944 5707208 -1618264 5711808 1620040 5713712 1618032 5707320 1618184 5711672 -1617984 5707264 1618088 5711560 1618184 5711672 1618032 5707320 -1617984 5707264 1618088 5711560 1618032 5707320 1617944 5707208 -1617984 5707264 1617144 5710648 1618088 5711560 1618032 5707320 -1617984 5707264 1617144 5710648 1618032 5707320 1617944 5707208 -1617984 5707264 1617040 5710544 1617144 5710648 1618032 5707320 -1617984 5707264 1617040 5710544 1618032 5707320 1617944 5707208 -1617984 5707264 1616712 5710416 1617040 5710544 1618032 5707320 -1617984 5707264 1616712 5710416 1618032 5707320 1617944 5707208 -1617040 5710544 1617144 5710648 1618032 5707320 1616712 5710416 -1617144 5710648 1618088 5711560 1618032 5707320 1617040 5710544 -1617984 5707264 1617728 5707184 1616712 5710416 1618032 5707320 -1617984 5707264 1617728 5707184 1618032 5707320 1617944 5707208 -1617984 5707264 1617944 5707208 1617728 5707184 1618032 5707320 -1616712 5710416 1617040 5710544 1618032 5707320 1617728 5707184 -1617728 5707184 1616568 5710400 1616712 5710416 1618032 5707320 -1618088 5711560 1618184 5711672 1618032 5707320 1617144 5710648 -1618184 5711672 1618264 5711808 1618032 5707320 1618088 5711560 -1617144 5710648 1617912 5711456 1618088 5711560 1618032 5707320 -1618264 5711808 1619952 5713672 1620040 5713712 1618032 5707320 -1620040 5713712 1620104 5713768 1618032 5707320 1618264 5711808 -1618032 5707320 1618072 5707384 1627336 5719640 1627384 5719672 -1618032 5707320 1620512 5714368 1618072 5707384 1627384 5719672 -1618032 5707320 1618072 5707384 1627384 5719672 1663880 5646248 -1618072 5707384 1627336 5719640 1627384 5719672 1663880 5646248 -1618032 5707320 1618072 5707384 1663880 5646248 1617904 5707152 -1618032 5707320 1620512 5714368 1618072 5707384 1663880 5646248 -1618072 5707384 1620512 5714368 1627336 5719640 1627384 5719672 -1627336 5719640 1618072 5707384 1620512 5714368 1620552 5714440 -1627384 5719672 1663944 5646256 1663880 5646248 1618072 5707384 -1620512 5714368 1618072 5707384 1618032 5707320 1620160 5713848 -1618032 5707320 1620104 5713768 1620160 5713848 1618072 5707384 -1618032 5707320 1620040 5713712 1620104 5713768 1618072 5707384 -1620104 5713768 1620160 5713848 1618072 5707384 1620040 5713712 -1618072 5707384 1663880 5646248 1618032 5707320 1620040 5713712 -1620512 5714368 1627336 5719640 1618072 5707384 1620160 5713848 -1620040 5713712 1620072 5713752 1620104 5713768 1618072 5707384 -1620160 5713848 1620512 5714368 1618072 5707384 1620104 5713768 -1620512 5714368 1618072 5707384 1620160 5713848 1620272 5714120 -1618032 5707320 1618264 5711808 1620040 5713712 1618072 5707384 -1620040 5713712 1620104 5713768 1618072 5707384 1618264 5711808 -1618032 5707320 1618264 5711808 1618072 5707384 1663880 5646248 -1618032 5707320 1618184 5711672 1618264 5711808 1618072 5707384 -1618032 5707320 1618184 5711672 1618072 5707384 1663880 5646248 -1618032 5707320 1618088 5711560 1618184 5711672 1618072 5707384 -1618032 5707320 1618088 5711560 1618072 5707384 1663880 5646248 -1618184 5711672 1618264 5711808 1618072 5707384 1618088 5711560 -1618032 5707320 1617144 5710648 1618088 5711560 1618072 5707384 -1618032 5707320 1617144 5710648 1618072 5707384 1663880 5646248 -1618032 5707320 1617040 5710544 1617144 5710648 1618072 5707384 -1618032 5707320 1617040 5710544 1618072 5707384 1663880 5646248 -1618032 5707320 1616712 5710416 1617040 5710544 1618072 5707384 -1618032 5707320 1616712 5710416 1618072 5707384 1663880 5646248 -1618032 5707320 1617728 5707184 1616712 5710416 1618072 5707384 -1618032 5707320 1617728 5707184 1618072 5707384 1663880 5646248 -1616712 5710416 1617040 5710544 1618072 5707384 1617728 5707184 -1617040 5710544 1617144 5710648 1618072 5707384 1616712 5710416 -1617728 5707184 1616568 5710400 1616712 5710416 1618072 5707384 -1618032 5707320 1617984 5707264 1617728 5707184 1618072 5707384 -1617144 5710648 1618088 5711560 1618072 5707384 1617040 5710544 -1618088 5711560 1618184 5711672 1618072 5707384 1617144 5710648 -1617144 5710648 1617912 5711456 1618088 5711560 1618072 5707384 -1617144 5710648 1617912 5711456 1618072 5707384 1617040 5710544 -1618088 5711560 1618184 5711672 1618072 5707384 1617912 5711456 -1617144 5710648 1617256 5710832 1617912 5711456 1618072 5707384 -1618264 5711808 1619952 5713672 1620040 5713712 1618072 5707384 -1618264 5711808 1620040 5713712 1618072 5707384 1618184 5711672 -1627384 5719672 1618120 5707440 1618072 5707384 1627336 5719640 -1618072 5707384 1618120 5707440 1663880 5646248 1618032 5707320 -1663880 5646248 1617904 5707152 1618032 5707320 1618120 5707440 -1618072 5707384 1620512 5714368 1627336 5719640 1618120 5707440 -1627336 5719640 1627384 5719672 1618120 5707440 1620512 5714368 -1618120 5707440 1618032 5707320 1618072 5707384 1620512 5714368 -1618072 5707384 1620160 5713848 1620512 5714368 1618120 5707440 -1620512 5714368 1627336 5719640 1618120 5707440 1620160 5713848 -1618072 5707384 1620160 5713848 1618120 5707440 1618032 5707320 -1618120 5707440 1627384 5719672 1663880 5646248 1618032 5707320 -1627384 5719672 1663880 5646248 1618120 5707440 1627336 5719640 -1620512 5714368 1620552 5714440 1627336 5719640 1618120 5707440 -1663880 5646248 1618120 5707440 1627384 5719672 1663944 5646256 -1618072 5707384 1620104 5713768 1620160 5713848 1618120 5707440 -1618072 5707384 1620040 5713712 1620104 5713768 1618120 5707440 -1618072 5707384 1618264 5711808 1620040 5713712 1618120 5707440 -1620040 5713712 1620104 5713768 1618120 5707440 1618264 5711808 -1618072 5707384 1618264 5711808 1618120 5707440 1618032 5707320 -1620160 5713848 1620512 5714368 1618120 5707440 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1618120 5707440 -1620104 5713768 1620160 5713848 1618120 5707440 1620040 5713712 -1620160 5713848 1620272 5714120 1620512 5714368 1618120 5707440 -1618264 5711808 1619952 5713672 1620040 5713712 1618120 5707440 -1618072 5707384 1618184 5711672 1618264 5711808 1618120 5707440 -1618264 5711808 1620040 5713712 1618120 5707440 1618184 5711672 -1618072 5707384 1618184 5711672 1618120 5707440 1618032 5707320 -1618072 5707384 1618088 5711560 1618184 5711672 1618120 5707440 -1618072 5707384 1618088 5711560 1618120 5707440 1618032 5707320 -1618072 5707384 1617912 5711456 1618088 5711560 1618120 5707440 -1618072 5707384 1617912 5711456 1618120 5707440 1618032 5707320 -1618088 5711560 1618184 5711672 1618120 5707440 1617912 5711456 -1618072 5707384 1617144 5710648 1617912 5711456 1618120 5707440 -1618072 5707384 1617144 5710648 1618120 5707440 1618032 5707320 -1618072 5707384 1617040 5710544 1617144 5710648 1618120 5707440 -1618072 5707384 1617040 5710544 1618120 5707440 1618032 5707320 -1618072 5707384 1616712 5710416 1617040 5710544 1618120 5707440 -1618072 5707384 1616712 5710416 1618120 5707440 1618032 5707320 -1618072 5707384 1617728 5707184 1616712 5710416 1618120 5707440 -1618072 5707384 1617728 5707184 1618120 5707440 1618032 5707320 -1618072 5707384 1618032 5707320 1617728 5707184 1618120 5707440 -1616712 5710416 1617040 5710544 1618120 5707440 1617728 5707184 -1617728 5707184 1616568 5710400 1616712 5710416 1618120 5707440 -1617040 5710544 1617144 5710648 1618120 5707440 1616712 5710416 -1617912 5711456 1618088 5711560 1618120 5707440 1617144 5710648 -1617144 5710648 1617256 5710832 1617912 5711456 1618120 5707440 -1617144 5710648 1617912 5711456 1618120 5707440 1617040 5710544 -1618184 5711672 1618264 5711808 1618120 5707440 1618088 5711560 -1618120 5707440 1618184 5707536 1627336 5719640 1627384 5719672 -1620512 5714368 1618184 5707536 1618120 5707440 1620160 5713848 -1618120 5707440 1620104 5713768 1620160 5713848 1618184 5707536 -1620160 5713848 1620512 5714368 1618184 5707536 1620104 5713768 -1618120 5707440 1620104 5713768 1618184 5707536 1627384 5719672 -1618120 5707440 1618184 5707536 1627384 5719672 1663880 5646248 -1618184 5707536 1627336 5719640 1627384 5719672 1663880 5646248 -1618120 5707440 1618184 5707536 1663880 5646248 1618032 5707320 -1618120 5707440 1620104 5713768 1618184 5707536 1663880 5646248 -1618184 5707536 1620512 5714368 1627336 5719640 1627384 5719672 -1620512 5714368 1627336 5719640 1618184 5707536 1620160 5713848 -1627336 5719640 1618184 5707536 1620512 5714368 1620552 5714440 -1627384 5719672 1663944 5646256 1663880 5646248 1618184 5707536 -1618120 5707440 1620040 5713712 1620104 5713768 1618184 5707536 -1618120 5707440 1618264 5711808 1620040 5713712 1618184 5707536 -1618120 5707440 1618184 5711672 1618264 5711808 1618184 5707536 -1618264 5711808 1620040 5713712 1618184 5707536 1618184 5711672 -1620104 5713768 1620160 5713848 1618184 5707536 1620040 5713712 -1618120 5707440 1618184 5711672 1618184 5707536 1663880 5646248 -1620040 5713712 1620072 5713752 1620104 5713768 1618184 5707536 -1620040 5713712 1620104 5713768 1618184 5707536 1618264 5711808 -1620512 5714368 1618184 5707536 1620160 5713848 1620272 5714120 -1618264 5711808 1619952 5713672 1620040 5713712 1618184 5707536 -1618120 5707440 1618088 5711560 1618184 5711672 1618184 5707536 -1618184 5711672 1618264 5711808 1618184 5707536 1618088 5711560 -1618120 5707440 1618088 5711560 1618184 5707536 1663880 5646248 -1618120 5707440 1617912 5711456 1618088 5711560 1618184 5707536 -1618120 5707440 1617912 5711456 1618184 5707536 1663880 5646248 -1618120 5707440 1617144 5710648 1617912 5711456 1618184 5707536 -1618120 5707440 1617144 5710648 1618184 5707536 1663880 5646248 -1617912 5711456 1618088 5711560 1618184 5707536 1617144 5710648 -1617144 5710648 1617256 5710832 1617912 5711456 1618184 5707536 -1618120 5707440 1617040 5710544 1617144 5710648 1618184 5707536 -1618120 5707440 1617040 5710544 1618184 5707536 1663880 5646248 -1618120 5707440 1616712 5710416 1617040 5710544 1618184 5707536 -1618120 5707440 1616712 5710416 1618184 5707536 1663880 5646248 -1618120 5707440 1617728 5707184 1616712 5710416 1618184 5707536 -1618120 5707440 1617728 5707184 1618184 5707536 1663880 5646248 -1618120 5707440 1618072 5707384 1617728 5707184 1618184 5707536 -1617728 5707184 1616568 5710400 1616712 5710416 1618184 5707536 -1616712 5710416 1617040 5710544 1618184 5707536 1617728 5707184 -1617144 5710648 1617912 5711456 1618184 5707536 1617040 5710544 -1617040 5710544 1617144 5710648 1618184 5707536 1616712 5710416 -1618088 5711560 1618184 5711672 1618184 5707536 1617912 5711456 -1618184 5707536 1618184 5707576 1618264 5711808 1620040 5713712 -1618184 5707536 1618088 5711560 1618184 5707576 1620040 5713712 -1618184 5707576 1618184 5711672 1618264 5711808 1620040 5713712 -1618184 5707536 1618184 5707576 1620040 5713712 1620104 5713768 -1618184 5707536 1618088 5711560 1618184 5707576 1620104 5713768 -1618184 5707576 1618264 5711808 1620040 5713712 1620104 5713768 -1618184 5707536 1618184 5707576 1620104 5713768 1620160 5713848 -1618184 5707536 1618088 5711560 1618184 5707576 1620160 5713848 -1618184 5707536 1618184 5707576 1620160 5713848 1620512 5714368 -1620040 5713712 1620072 5713752 1620104 5713768 1618184 5707576 -1618184 5707576 1620040 5713712 1620104 5713768 1620160 5713848 -1618264 5711808 1619952 5713672 1620040 5713712 1618184 5707576 -1618184 5707536 1617912 5711456 1618088 5711560 1618184 5707576 -1618184 5707536 1617912 5711456 1618184 5707576 1620160 5713848 -1618088 5711560 1618184 5711672 1618184 5707576 1617912 5711456 -1618184 5707536 1617144 5710648 1617912 5711456 1618184 5707576 -1618184 5707536 1617144 5710648 1618184 5707576 1620160 5713848 -1618184 5707536 1617040 5710544 1617144 5710648 1618184 5707576 -1618184 5707536 1617040 5710544 1618184 5707576 1620160 5713848 -1617144 5710648 1617912 5711456 1618184 5707576 1617040 5710544 -1617144 5710648 1617256 5710832 1617912 5711456 1618184 5707576 -1618184 5707536 1616712 5710416 1617040 5710544 1618184 5707576 -1618184 5707536 1616712 5710416 1618184 5707576 1620160 5713848 -1618184 5707536 1617728 5707184 1616712 5710416 1618184 5707576 -1618184 5707536 1617728 5707184 1618184 5707576 1620160 5713848 -1618184 5707536 1618120 5707440 1617728 5707184 1618184 5707576 -1618184 5707536 1618120 5707440 1618184 5707576 1620160 5713848 -1618120 5707440 1618072 5707384 1617728 5707184 1618184 5707576 -1618072 5707384 1618032 5707320 1617728 5707184 1618184 5707576 -1618120 5707440 1618072 5707384 1618184 5707576 1618184 5707536 -1617728 5707184 1616568 5710400 1616712 5710416 1618184 5707576 -1617728 5707184 1616712 5710416 1618184 5707576 1618072 5707384 -1617040 5710544 1617144 5710648 1618184 5707576 1616712 5710416 -1616712 5710416 1617040 5710544 1618184 5707576 1617728 5707184 -1617912 5711456 1618088 5711560 1618184 5707576 1617144 5710648 -1616712 5710416 1618112 5707624 1617728 5707184 1616568 5710400 -1616712 5710416 1618184 5707576 1618112 5707624 1616568 5710400 -1618112 5707624 1618184 5707576 1617728 5707184 1616568 5710400 -1617728 5707184 1614664 5708048 1616568 5710400 1618112 5707624 -1617728 5707184 1618112 5707624 1618184 5707576 1618072 5707384 -1618112 5707624 1616712 5710416 1618184 5707576 1618072 5707384 -1617728 5707184 1616568 5710400 1618112 5707624 1618072 5707384 -1618184 5707576 1618120 5707440 1618072 5707384 1618112 5707624 -1618184 5707576 1618120 5707440 1618112 5707624 1616712 5710416 -1617728 5707184 1618112 5707624 1618072 5707384 1618032 5707320 -1618184 5707576 1618184 5707536 1618120 5707440 1618112 5707624 -1618184 5707576 1618184 5707536 1618112 5707624 1616712 5710416 -1618120 5707440 1618072 5707384 1618112 5707624 1618184 5707536 -1618072 5707384 1617728 5707184 1618112 5707624 1618120 5707440 -1618184 5707576 1618112 5707624 1616712 5710416 1617040 5710544 -1618184 5707576 1618184 5707536 1618112 5707624 1617040 5710544 -1618112 5707624 1616568 5710400 1616712 5710416 1617040 5710544 -1618184 5707576 1618112 5707624 1617040 5710544 1617144 5710648 -1618184 5707576 1618184 5707536 1618112 5707624 1617144 5710648 -1618184 5707576 1618112 5707624 1617144 5710648 1617912 5711456 -1618184 5707576 1618184 5707536 1618112 5707624 1617912 5711456 -1618112 5707624 1617040 5710544 1617144 5710648 1617912 5711456 -1617144 5710648 1617256 5710832 1617912 5711456 1618112 5707624 -1618112 5707624 1616712 5710416 1617040 5710544 1617144 5710648 -1618184 5707576 1618112 5707624 1617912 5711456 1618088 5711560 -1618184 5707576 1618112 5707624 1618088 5711560 1618184 5711672 -1618184 5707576 1618184 5707536 1618112 5707624 1618088 5711560 -1618112 5707624 1617144 5710648 1617912 5711456 1618088 5711560 -1617728 5707184 1618080 5707632 1618112 5707624 1618072 5707384 -1618080 5707632 1616568 5710400 1618112 5707624 1618072 5707384 -1617728 5707184 1618080 5707632 1618072 5707384 1618032 5707320 -1618080 5707632 1618112 5707624 1618072 5707384 1618032 5707320 -1616568 5710400 1618080 5707632 1617728 5707184 1614664 5708048 -1618112 5707624 1618080 5707632 1616568 5710400 1616712 5710416 -1618112 5707624 1618080 5707632 1616712 5710416 1617040 5710544 -1618112 5707624 1618072 5707384 1618080 5707632 1617040 5710544 -1618080 5707632 1617728 5707184 1616568 5710400 1616712 5710416 -1618080 5707632 1616568 5710400 1616712 5710416 1617040 5710544 -1617728 5707184 1618080 5707632 1618032 5707320 1617984 5707264 -1618112 5707624 1618120 5707440 1618072 5707384 1618080 5707632 -1618112 5707624 1618120 5707440 1618080 5707632 1617040 5710544 -1618072 5707384 1618032 5707320 1618080 5707632 1618120 5707440 -1618112 5707624 1618184 5707536 1618120 5707440 1618080 5707632 -1618112 5707624 1618080 5707632 1617040 5710544 1617144 5710648 -1618080 5707632 1616712 5710416 1617040 5710544 1617144 5710648 -1618112 5707624 1618120 5707440 1618080 5707632 1617144 5710648 -1618112 5707624 1618080 5707632 1617144 5710648 1617912 5711456 -1617728 5707184 1616568 5710400 1618080 5707632 1618032 5707320 -1618080 5707632 1618048 5707616 1616568 5710400 1616712 5710416 -1618080 5707632 1617728 5707184 1618048 5707616 1616712 5710416 -1616568 5710400 1618048 5707616 1617728 5707184 1614664 5708048 -1616568 5710400 1618048 5707616 1614664 5708048 1616376 5710416 -1617728 5707184 1614688 5707952 1614664 5708048 1618048 5707616 -1618080 5707632 1618048 5707616 1616712 5710416 1617040 5710544 -1617728 5707184 1618048 5707616 1618080 5707632 1618032 5707320 -1618048 5707616 1616712 5710416 1618080 5707632 1618032 5707320 -1618080 5707632 1618072 5707384 1618032 5707320 1618048 5707616 -1618080 5707632 1618120 5707440 1618072 5707384 1618048 5707616 -1618080 5707632 1618120 5707440 1618048 5707616 1616712 5710416 -1618072 5707384 1618032 5707320 1618048 5707616 1618120 5707440 -1617728 5707184 1618048 5707616 1618032 5707320 1617984 5707264 -1617728 5707184 1618048 5707616 1617984 5707264 1617944 5707208 -1618080 5707632 1618112 5707624 1618120 5707440 1618048 5707616 -1618120 5707440 1618072 5707384 1618048 5707616 1618112 5707624 -1618080 5707632 1618112 5707624 1618048 5707616 1616712 5710416 -1618112 5707624 1618184 5707536 1618120 5707440 1618048 5707616 -1618120 5707440 1618072 5707384 1618048 5707616 1618184 5707536 -1618112 5707624 1618184 5707576 1618184 5707536 1618048 5707616 -1618112 5707624 1618184 5707536 1618048 5707616 1618080 5707632 -1618032 5707320 1617984 5707264 1618048 5707616 1618072 5707384 -1618048 5707616 1614664 5708048 1616568 5710400 1616712 5710416 -1618048 5707616 1617984 5707264 1617728 5707184 1614664 5708048 -1614664 5708048 1617960 5707536 1617728 5707184 1614688 5707952 -1618048 5707616 1617960 5707536 1614664 5708048 1616568 5710400 -1614664 5708048 1616376 5710416 1616568 5710400 1617960 5707536 -1617728 5707184 1614696 5707848 1614688 5707952 1617960 5707536 -1618048 5707616 1617960 5707536 1616568 5710400 1616712 5710416 -1618048 5707616 1617960 5707536 1616712 5710416 1618080 5707632 -1617960 5707536 1614664 5708048 1616568 5710400 1616712 5710416 -1618048 5707616 1617728 5707184 1617960 5707536 1616712 5710416 -1617728 5707184 1617960 5707536 1618048 5707616 1617984 5707264 -1617728 5707184 1617960 5707536 1617984 5707264 1617944 5707208 -1618048 5707616 1618032 5707320 1617984 5707264 1617960 5707536 -1618048 5707616 1618072 5707384 1618032 5707320 1617960 5707536 -1618048 5707616 1618120 5707440 1618072 5707384 1617960 5707536 -1618048 5707616 1618184 5707536 1618120 5707440 1617960 5707536 -1618032 5707320 1617984 5707264 1617960 5707536 1618072 5707384 -1618072 5707384 1618032 5707320 1617960 5707536 1618120 5707440 -1617960 5707536 1616712 5710416 1618048 5707616 1618120 5707440 -1617984 5707264 1617728 5707184 1617960 5707536 1618032 5707320 -1614664 5708048 1616568 5710400 1617960 5707536 1614688 5707952 -1617960 5707536 1617984 5707264 1617728 5707184 1614688 5707952 -1617960 5707536 1617912 5707496 1614688 5707952 1614664 5708048 -1614688 5707952 1617912 5707496 1617728 5707184 1614696 5707848 -1617960 5707536 1617912 5707496 1614664 5708048 1616568 5710400 -1614664 5708048 1616376 5710416 1616568 5710400 1617912 5707496 -1617912 5707496 1614688 5707952 1614664 5708048 1616568 5710400 -1617960 5707536 1617912 5707496 1616568 5710400 1616712 5710416 -1617960 5707536 1617912 5707496 1616712 5710416 1618048 5707616 -1617912 5707496 1614664 5708048 1616568 5710400 1616712 5710416 -1617960 5707536 1617728 5707184 1617912 5707496 1616712 5710416 -1617728 5707184 1617912 5707496 1617960 5707536 1617984 5707264 -1617728 5707184 1617912 5707496 1617984 5707264 1617944 5707208 -1617960 5707536 1618032 5707320 1617984 5707264 1617912 5707496 -1617960 5707536 1618072 5707384 1618032 5707320 1617912 5707496 -1617960 5707536 1618120 5707440 1618072 5707384 1617912 5707496 -1618032 5707320 1617984 5707264 1617912 5707496 1618072 5707384 -1617912 5707496 1616712 5710416 1617960 5707536 1618072 5707384 -1617984 5707264 1617728 5707184 1617912 5707496 1618032 5707320 -1617912 5707496 1617728 5707184 1614688 5707952 1614664 5708048 -1617728 5707184 1614688 5707952 1617912 5707496 1617984 5707264 -1614688 5707952 1617872 5707448 1617728 5707184 1614696 5707848 -1617912 5707496 1617872 5707448 1614688 5707952 1614664 5708048 -1617912 5707496 1617872 5707448 1614664 5708048 1616568 5710400 -1614664 5708048 1616376 5710416 1616568 5710400 1617872 5707448 -1617912 5707496 1617872 5707448 1616568 5710400 1616712 5710416 -1617872 5707448 1614688 5707952 1614664 5708048 1616568 5710400 -1617912 5707496 1617728 5707184 1617872 5707448 1616568 5710400 -1617728 5707184 1617872 5707448 1617912 5707496 1617984 5707264 -1617728 5707184 1617872 5707448 1617984 5707264 1617944 5707208 -1617728 5707184 1617872 5707448 1617944 5707208 1617904 5707152 -1617912 5707496 1618032 5707320 1617984 5707264 1617872 5707448 -1617912 5707496 1618072 5707384 1618032 5707320 1617872 5707448 -1617912 5707496 1617960 5707536 1618072 5707384 1617872 5707448 -1618032 5707320 1617984 5707264 1617872 5707448 1618072 5707384 -1617872 5707448 1616568 5710400 1617912 5707496 1618072 5707384 -1617872 5707448 1618032 5707320 1617984 5707264 1617944 5707208 -1617872 5707448 1617728 5707184 1614688 5707952 1614664 5708048 -1617728 5707184 1614688 5707952 1617872 5707448 1617944 5707208 -1614688 5707952 1617824 5707400 1617728 5707184 1614696 5707848 -1617728 5707184 1614704 5707744 1614696 5707848 1617824 5707400 -1617872 5707448 1617824 5707400 1614688 5707952 1614664 5708048 -1617872 5707448 1617824 5707400 1614664 5708048 1616568 5710400 -1614664 5708048 1616376 5710416 1616568 5710400 1617824 5707400 -1617872 5707448 1617824 5707400 1616568 5710400 1617912 5707496 -1616568 5710400 1616712 5710416 1617912 5707496 1617824 5707400 -1617824 5707400 1614664 5708048 1616568 5710400 1617912 5707496 -1617824 5707400 1614688 5707952 1614664 5708048 1616568 5710400 -1617872 5707448 1617728 5707184 1617824 5707400 1617912 5707496 -1617728 5707184 1617824 5707400 1617872 5707448 1617944 5707208 -1617872 5707448 1617984 5707264 1617944 5707208 1617824 5707400 -1617728 5707184 1617824 5707400 1617944 5707208 1617904 5707152 -1617872 5707448 1618032 5707320 1617984 5707264 1617824 5707400 -1617824 5707400 1617912 5707496 1617872 5707448 1617984 5707264 -1617944 5707208 1617728 5707184 1617824 5707400 1617984 5707264 -1614688 5707952 1614664 5708048 1617824 5707400 1614696 5707848 -1617824 5707400 1617944 5707208 1617728 5707184 1614696 5707848 -1614696 5707848 1617784 5707360 1617728 5707184 1614704 5707744 -1617728 5707184 1614696 5707712 1614704 5707744 1617784 5707360 -1617824 5707400 1617784 5707360 1614696 5707848 1614688 5707952 -1617824 5707400 1617784 5707360 1614688 5707952 1614664 5708048 -1617784 5707360 1614696 5707848 1614688 5707952 1614664 5708048 -1617824 5707400 1617784 5707360 1614664 5708048 1616568 5710400 -1614664 5708048 1616376 5710416 1616568 5710400 1617784 5707360 -1617824 5707400 1617784 5707360 1616568 5710400 1617912 5707496 -1617784 5707360 1614688 5707952 1614664 5708048 1616568 5710400 -1617824 5707400 1617728 5707184 1617784 5707360 1616568 5710400 -1617728 5707184 1617784 5707360 1617824 5707400 1617944 5707208 -1617728 5707184 1617784 5707360 1617944 5707208 1617904 5707152 -1617824 5707400 1617984 5707264 1617944 5707208 1617784 5707360 -1617824 5707400 1617872 5707448 1617984 5707264 1617784 5707360 -1617784 5707360 1616568 5710400 1617824 5707400 1617984 5707264 -1617944 5707208 1617728 5707184 1617784 5707360 1617984 5707264 -1614696 5707848 1614688 5707952 1617784 5707360 1614704 5707744 -1617784 5707360 1617944 5707208 1617728 5707184 1614704 5707744 -1614704 5707744 1617720 5707304 1617728 5707184 1614696 5707712 -1617784 5707360 1617720 5707304 1614704 5707744 1614696 5707848 -1617728 5707184 1614680 5707680 1614696 5707712 1617720 5707304 -1617784 5707360 1617720 5707304 1614696 5707848 1614688 5707952 -1617720 5707304 1614704 5707744 1614696 5707848 1614688 5707952 -1617784 5707360 1617720 5707304 1614688 5707952 1614664 5708048 -1617784 5707360 1617720 5707304 1614664 5708048 1616568 5710400 -1614664 5708048 1616376 5710416 1616568 5710400 1617720 5707304 -1617720 5707304 1614688 5707952 1614664 5708048 1616568 5710400 -1617784 5707360 1617720 5707304 1616568 5710400 1617824 5707400 -1616568 5710400 1617912 5707496 1617824 5707400 1617720 5707304 -1617912 5707496 1617872 5707448 1617824 5707400 1617720 5707304 -1616568 5710400 1616712 5710416 1617912 5707496 1617720 5707304 -1617824 5707400 1617784 5707360 1617720 5707304 1617912 5707496 -1617720 5707304 1614664 5708048 1616568 5710400 1617912 5707496 -1617720 5707304 1614696 5707848 1614688 5707952 1614664 5708048 -1617784 5707360 1617728 5707184 1617720 5707304 1617824 5707400 -1617728 5707184 1617720 5707304 1617784 5707360 1617944 5707208 -1614704 5707744 1614696 5707848 1617720 5707304 1614696 5707712 -1617720 5707304 1617784 5707360 1617728 5707184 1614696 5707712 -1627384 5719672 1621664 5703552 1618184 5707536 1627336 5719640 -1618184 5707536 1621664 5703552 1663880 5646248 1618120 5707440 -1663880 5646248 1618032 5707320 1618120 5707440 1621664 5703552 -1663880 5646248 1617904 5707152 1618032 5707320 1621664 5703552 -1663880 5646248 1611528 5699256 1617904 5707152 1621664 5703552 -1617904 5707152 1617944 5707208 1618032 5707320 1621664 5703552 -1617904 5707152 1618032 5707320 1621664 5703552 1611528 5699256 -1618032 5707320 1618072 5707384 1618120 5707440 1621664 5703552 -1618032 5707320 1618120 5707440 1621664 5703552 1617904 5707152 -1618120 5707440 1618184 5707536 1621664 5703552 1618032 5707320 -1618184 5707536 1620512 5714368 1627336 5719640 1621664 5703552 -1627336 5719640 1627384 5719672 1621664 5703552 1620512 5714368 -1618184 5707536 1620160 5713848 1620512 5714368 1621664 5703552 -1618184 5707536 1618184 5707576 1620160 5713848 1621664 5703552 -1618184 5707576 1620104 5713768 1620160 5713848 1621664 5703552 -1618184 5707576 1620104 5713768 1621664 5703552 1618184 5707536 -1620512 5714368 1627336 5719640 1621664 5703552 1620160 5713848 -1620160 5713848 1620512 5714368 1621664 5703552 1620104 5713768 -1620512 5714368 1620552 5714440 1627336 5719640 1621664 5703552 -1627336 5719640 1627384 5719672 1621664 5703552 1620552 5714440 -1620512 5714368 1620552 5714440 1621664 5703552 1620160 5713848 -1620552 5714440 1627312 5719640 1627336 5719640 1621664 5703552 -1663880 5646248 1621664 5703552 1627384 5719672 1663944 5646256 -1627384 5719672 1627448 5719792 1663944 5646256 1621664 5703552 -1611528 5699256 1611560 5699312 1617904 5707152 1621664 5703552 -1611528 5699256 1611560 5699312 1621664 5703552 1663880 5646248 -1617904 5707152 1618032 5707320 1621664 5703552 1611560 5699312 -1618184 5707576 1620040 5713712 1620104 5713768 1621664 5703552 -1618184 5707576 1618264 5711808 1620040 5713712 1621664 5703552 -1618184 5707576 1620040 5713712 1621664 5703552 1618184 5707536 -1620104 5713768 1620160 5713848 1621664 5703552 1620040 5713712 -1620040 5713712 1620072 5713752 1620104 5713768 1621664 5703552 -1663880 5646248 1601624 5681136 1611528 5699256 1621664 5703552 -1663880 5646248 1663776 5646144 1601624 5681136 1621664 5703552 -1611528 5699256 1611560 5699312 1621664 5703552 1601624 5681136 -1663776 5646144 1657088 5639464 1601624 5681136 1621664 5703552 -1601624 5681136 1611448 5699192 1611528 5699256 1621664 5703552 -1611528 5699256 1611560 5699312 1621664 5703552 1611448 5699192 -1601624 5681136 1610904 5698784 1611448 5699192 1621664 5703552 -1601624 5681136 1611448 5699192 1621664 5703552 1663776 5646144 -1620160 5713848 1620272 5714120 1620512 5714368 1621664 5703552 -1611560 5699312 1617856 5707112 1617904 5707152 1621664 5703552 -1617904 5707152 1618032 5707320 1621664 5703552 1617856 5707112 -1611560 5699312 1613592 5703136 1617856 5707112 1621664 5703552 -1613592 5703136 1617824 5707096 1617856 5707112 1621664 5703552 -1613592 5703136 1613584 5703232 1617824 5707096 1621664 5703552 -1613592 5703136 1617824 5707096 1621664 5703552 1611560 5699312 -1611560 5699312 1613592 5703136 1621664 5703552 1611528 5699256 -1617856 5707112 1617904 5707152 1621664 5703552 1617824 5707096 -1611560 5699312 1613464 5703016 1613592 5703136 1621664 5703552 -1613592 5703136 1617824 5707096 1621664 5703552 1613464 5703016 -1611560 5699312 1613464 5703016 1621664 5703552 1611528 5699256 -1613464 5703016 1613512 5703064 1613592 5703136 1621664 5703552 -1611560 5699312 1613304 5702872 1613464 5703016 1621664 5703552 -1621664 5703552 1663944 5646256 1663880 5646248 1663776 5646144 -1627384 5719672 1663944 5646256 1621664 5703552 1627336 5719640 -1621664 5703552 1618120 5707440 1618184 5707536 1618184 5707576 -1663776 5646144 1621720 5703464 1621664 5703552 1663880 5646248 -1601624 5681136 1621720 5703464 1663776 5646144 1657088 5639464 -1621664 5703552 1621720 5703464 1601624 5681136 1611448 5699192 -1621720 5703464 1663776 5646144 1601624 5681136 1611448 5699192 -1601624 5681136 1610904 5698784 1611448 5699192 1621720 5703464 -1601624 5681136 1610904 5698784 1621720 5703464 1663776 5646144 -1610904 5698784 1610928 5698816 1611448 5699192 1621720 5703464 -1601624 5681136 1610848 5698768 1610904 5698784 1621720 5703464 -1621664 5703552 1621720 5703464 1611448 5699192 1611528 5699256 -1621664 5703552 1621720 5703464 1611528 5699256 1611560 5699312 -1621664 5703552 1621720 5703464 1611560 5699312 1613464 5703016 -1621720 5703464 1611528 5699256 1611560 5699312 1613464 5703016 -1621720 5703464 1611448 5699192 1611528 5699256 1611560 5699312 -1611448 5699192 1611528 5699256 1621720 5703464 1610904 5698784 -1621664 5703552 1621720 5703464 1613464 5703016 1613592 5703136 -1621664 5703552 1621720 5703464 1613592 5703136 1617824 5707096 -1621720 5703464 1611560 5699312 1613464 5703016 1613592 5703136 -1613464 5703016 1613512 5703064 1613592 5703136 1621720 5703464 -1611560 5699312 1613304 5702872 1613464 5703016 1621720 5703464 -1621664 5703552 1663944 5646256 1663880 5646248 1621720 5703464 -1663880 5646248 1663776 5646144 1621720 5703464 1663944 5646256 -1621664 5703552 1627384 5719672 1663944 5646256 1621720 5703464 -1627384 5719672 1627448 5719792 1663944 5646256 1621720 5703464 -1663944 5646256 1663880 5646248 1621720 5703464 1627384 5719672 -1621664 5703552 1627336 5719640 1627384 5719672 1621720 5703464 -1621664 5703552 1620552 5714440 1627336 5719640 1621720 5703464 -1627384 5719672 1663944 5646256 1621720 5703464 1627336 5719640 -1621720 5703464 1613592 5703136 1621664 5703552 1627336 5719640 -1663776 5646144 1601624 5681136 1621720 5703464 1663880 5646248 -1663944 5646256 1621744 5703440 1627384 5719672 1627448 5719792 -1627384 5719672 1621744 5703440 1621720 5703464 1627336 5719640 -1621720 5703464 1621744 5703440 1663944 5646256 1663880 5646248 -1621720 5703464 1621744 5703440 1663880 5646248 1663776 5646144 -1621744 5703440 1663944 5646256 1663880 5646248 1663776 5646144 -1621720 5703464 1621664 5703552 1627336 5719640 1621744 5703440 -1621664 5703552 1620552 5714440 1627336 5719640 1621744 5703440 -1627336 5719640 1627384 5719672 1621744 5703440 1621664 5703552 -1621744 5703440 1627384 5719672 1663944 5646256 1663880 5646248 -1627384 5719672 1663944 5646256 1621744 5703440 1627336 5719640 -1621744 5703440 1663776 5646144 1621720 5703464 1621664 5703552 -1621720 5703464 1621744 5703440 1663776 5646144 1601624 5681136 -1621720 5703464 1621744 5703440 1601624 5681136 1610904 5698784 -1621744 5703440 1663880 5646248 1663776 5646144 1601624 5681136 -1663776 5646144 1657088 5639464 1601624 5681136 1621744 5703440 -1601624 5681136 1610848 5698768 1610904 5698784 1621744 5703440 -1621720 5703464 1621744 5703440 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1621744 5703440 -1621720 5703464 1621744 5703440 1611448 5699192 1611528 5699256 -1621744 5703440 1610904 5698784 1611448 5699192 1611528 5699256 -1621720 5703464 1621744 5703440 1611528 5699256 1611560 5699312 -1621720 5703464 1621744 5703440 1611560 5699312 1613464 5703016 -1621720 5703464 1621744 5703440 1613464 5703016 1613592 5703136 -1621744 5703440 1611560 5699312 1613464 5703016 1613592 5703136 -1621744 5703440 1611528 5699256 1611560 5699312 1613464 5703016 -1621744 5703440 1611448 5699192 1611528 5699256 1611560 5699312 -1613464 5703016 1613512 5703064 1613592 5703136 1621744 5703440 -1621720 5703464 1621744 5703440 1613592 5703136 1621664 5703552 -1611560 5699312 1613304 5702872 1613464 5703016 1621744 5703440 -1621744 5703440 1601624 5681136 1610904 5698784 1611448 5699192 -1621720 5703464 1621664 5703552 1621744 5703440 1613592 5703136 -1621744 5703440 1663776 5646144 1601624 5681136 1610904 5698784 -1663944 5646256 1621824 5703424 1627384 5719672 1627448 5719792 -1621744 5703440 1621824 5703424 1663944 5646256 1663880 5646248 -1621744 5703440 1627384 5719672 1621824 5703424 1663880 5646248 -1621824 5703424 1627384 5719672 1663944 5646256 1663880 5646248 -1621744 5703440 1621824 5703424 1663880 5646248 1663776 5646144 -1621744 5703440 1621824 5703424 1663776 5646144 1601624 5681136 -1621744 5703440 1627384 5719672 1621824 5703424 1601624 5681136 -1663776 5646144 1657088 5639464 1601624 5681136 1621824 5703424 -1621824 5703424 1663880 5646248 1663776 5646144 1601624 5681136 -1621824 5703424 1663944 5646256 1663880 5646248 1663776 5646144 -1627384 5719672 1621824 5703424 1621744 5703440 1627336 5719640 -1627384 5719672 1663944 5646256 1621824 5703424 1627336 5719640 -1621824 5703424 1601624 5681136 1621744 5703440 1627336 5719640 -1621744 5703440 1621664 5703552 1627336 5719640 1621824 5703424 -1621744 5703440 1621664 5703552 1621824 5703424 1601624 5681136 -1621664 5703552 1620552 5714440 1627336 5719640 1621824 5703424 -1621664 5703552 1620512 5714368 1620552 5714440 1621824 5703424 -1620552 5714440 1627336 5719640 1621824 5703424 1620512 5714368 -1621664 5703552 1620160 5713848 1620512 5714368 1621824 5703424 -1621664 5703552 1620104 5713768 1620160 5713848 1621824 5703424 -1620512 5714368 1620552 5714440 1621824 5703424 1620160 5713848 -1620552 5714440 1627312 5719640 1627336 5719640 1621824 5703424 -1621664 5703552 1620160 5713848 1621824 5703424 1621744 5703440 -1620160 5713848 1620272 5714120 1620512 5714368 1621824 5703424 -1621744 5703440 1621720 5703464 1621664 5703552 1621824 5703424 -1621744 5703440 1621720 5703464 1621824 5703424 1601624 5681136 -1621664 5703552 1620160 5713848 1621824 5703424 1621720 5703464 -1627336 5719640 1627384 5719672 1621824 5703424 1620552 5714440 -1621744 5703440 1621824 5703424 1601624 5681136 1610904 5698784 -1621824 5703424 1663776 5646144 1601624 5681136 1610904 5698784 -1621744 5703440 1621720 5703464 1621824 5703424 1610904 5698784 -1601624 5681136 1610848 5698768 1610904 5698784 1621824 5703424 -1621744 5703440 1621824 5703424 1610904 5698784 1611448 5699192 -1621744 5703440 1621720 5703464 1621824 5703424 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1621824 5703424 -1621744 5703440 1621824 5703424 1611448 5699192 1611528 5699256 -1621744 5703440 1621720 5703464 1621824 5703424 1611528 5699256 -1621744 5703440 1621824 5703424 1611528 5699256 1611560 5699312 -1621824 5703424 1610904 5698784 1611448 5699192 1611528 5699256 -1621824 5703424 1601624 5681136 1610904 5698784 1611448 5699192 -1627384 5719672 1621856 5703472 1621824 5703424 1627336 5719640 -1627384 5719672 1663944 5646256 1621856 5703472 1627336 5719640 -1621824 5703424 1621856 5703472 1663944 5646256 1663880 5646248 -1621856 5703472 1627384 5719672 1663944 5646256 1663880 5646248 -1621856 5703472 1663880 5646248 1621824 5703424 1627336 5719640 -1663944 5646256 1621856 5703472 1627384 5719672 1627448 5719792 -1621824 5703424 1621856 5703472 1663880 5646248 1663776 5646144 -1621824 5703424 1620552 5714440 1627336 5719640 1621856 5703472 -1627336 5719640 1627384 5719672 1621856 5703472 1620552 5714440 -1621824 5703424 1620552 5714440 1621856 5703472 1663880 5646248 -1621824 5703424 1620512 5714368 1620552 5714440 1621856 5703472 -1621824 5703424 1620512 5714368 1621856 5703472 1663880 5646248 -1621824 5703424 1620160 5713848 1620512 5714368 1621856 5703472 -1621824 5703424 1620160 5713848 1621856 5703472 1663880 5646248 -1620512 5714368 1620552 5714440 1621856 5703472 1620160 5713848 -1621824 5703424 1621664 5703552 1620160 5713848 1621856 5703472 -1621824 5703424 1621664 5703552 1621856 5703472 1663880 5646248 -1621664 5703552 1620104 5713768 1620160 5713848 1621856 5703472 -1621664 5703552 1620040 5713712 1620104 5713768 1621856 5703472 -1621664 5703552 1620104 5713768 1621856 5703472 1621824 5703424 -1620160 5713848 1620512 5714368 1621856 5703472 1620104 5713768 -1620552 5714440 1627312 5719640 1627336 5719640 1621856 5703472 -1621824 5703424 1621720 5703464 1621664 5703552 1621856 5703472 -1621824 5703424 1621720 5703464 1621856 5703472 1663880 5646248 -1621664 5703552 1620104 5713768 1621856 5703472 1621720 5703464 -1620160 5713848 1620272 5714120 1620512 5714368 1621856 5703472 -1621824 5703424 1621744 5703440 1621720 5703464 1621856 5703472 -1621824 5703424 1621744 5703440 1621856 5703472 1663880 5646248 -1621720 5703464 1621664 5703552 1621856 5703472 1621744 5703440 -1620552 5714440 1627336 5719640 1621856 5703472 1620512 5714368 -1621856 5703472 1621912 5703512 1663944 5646256 1663880 5646248 -1621856 5703472 1627384 5719672 1621912 5703512 1663880 5646248 -1627384 5719672 1621912 5703512 1621856 5703472 1627336 5719640 -1621856 5703472 1620552 5714440 1627336 5719640 1621912 5703512 -1621912 5703512 1663880 5646248 1621856 5703472 1620552 5714440 -1627336 5719640 1627384 5719672 1621912 5703512 1620552 5714440 -1621912 5703512 1627384 5719672 1663944 5646256 1663880 5646248 -1627384 5719672 1663944 5646256 1621912 5703512 1627336 5719640 -1621856 5703472 1621912 5703512 1663880 5646248 1621824 5703424 -1621912 5703512 1663944 5646256 1663880 5646248 1621824 5703424 -1621856 5703472 1620552 5714440 1621912 5703512 1621824 5703424 -1620552 5714440 1627312 5719640 1627336 5719640 1621912 5703512 -1663944 5646256 1621912 5703512 1627384 5719672 1627448 5719792 -1663880 5646248 1663776 5646144 1621824 5703424 1621912 5703512 -1621856 5703472 1620512 5714368 1620552 5714440 1621912 5703512 -1620552 5714440 1627336 5719640 1621912 5703512 1620512 5714368 -1621856 5703472 1620512 5714368 1621912 5703512 1621824 5703424 -1621856 5703472 1620160 5713848 1620512 5714368 1621912 5703512 -1621856 5703472 1620160 5713848 1621912 5703512 1621824 5703424 -1621856 5703472 1620104 5713768 1620160 5713848 1621912 5703512 -1621856 5703472 1620104 5713768 1621912 5703512 1621824 5703424 -1620160 5713848 1620512 5714368 1621912 5703512 1620104 5713768 -1621856 5703472 1621664 5703552 1620104 5713768 1621912 5703512 -1621856 5703472 1621664 5703552 1621912 5703512 1621824 5703424 -1621664 5703552 1620040 5713712 1620104 5713768 1621912 5703512 -1621856 5703472 1621720 5703464 1621664 5703552 1621912 5703512 -1621664 5703552 1620040 5713712 1621912 5703512 1621856 5703472 -1620040 5713712 1620072 5713752 1620104 5713768 1621912 5703512 -1620104 5713768 1620160 5713848 1621912 5703512 1620040 5713712 -1621664 5703552 1618184 5707576 1620040 5713712 1621912 5703512 -1618184 5707576 1618264 5711808 1620040 5713712 1621912 5703512 -1621664 5703552 1618184 5707536 1618184 5707576 1621912 5703512 -1620040 5713712 1620104 5713768 1621912 5703512 1618184 5707576 -1621664 5703552 1618184 5707576 1621912 5703512 1621856 5703472 -1620160 5713848 1620272 5714120 1620512 5714368 1621912 5703512 -1620512 5714368 1620552 5714440 1621912 5703512 1620160 5713848 -1621912 5703512 1621952 5703576 1663944 5646256 1663880 5646248 -1621912 5703512 1621952 5703576 1663880 5646248 1621824 5703424 -1621912 5703512 1627384 5719672 1621952 5703576 1663880 5646248 -1627384 5719672 1621952 5703576 1621912 5703512 1627336 5719640 -1621912 5703512 1620552 5714440 1627336 5719640 1621952 5703576 -1621912 5703512 1620512 5714368 1620552 5714440 1621952 5703576 -1620552 5714440 1627336 5719640 1621952 5703576 1620512 5714368 -1621952 5703576 1663880 5646248 1621912 5703512 1620512 5714368 -1627336 5719640 1627384 5719672 1621952 5703576 1620552 5714440 -1621952 5703576 1627384 5719672 1663944 5646256 1663880 5646248 -1627384 5719672 1663944 5646256 1621952 5703576 1627336 5719640 -1620552 5714440 1627312 5719640 1627336 5719640 1621952 5703576 -1663944 5646256 1621952 5703576 1627384 5719672 1627448 5719792 -1621912 5703512 1620160 5713848 1620512 5714368 1621952 5703576 -1620512 5714368 1620552 5714440 1621952 5703576 1620160 5713848 -1621912 5703512 1620160 5713848 1621952 5703576 1663880 5646248 -1621912 5703512 1620104 5713768 1620160 5713848 1621952 5703576 -1621912 5703512 1620104 5713768 1621952 5703576 1663880 5646248 -1621912 5703512 1620040 5713712 1620104 5713768 1621952 5703576 -1621912 5703512 1620040 5713712 1621952 5703576 1663880 5646248 -1620104 5713768 1620160 5713848 1621952 5703576 1620040 5713712 -1621912 5703512 1618184 5707576 1620040 5713712 1621952 5703576 -1621912 5703512 1618184 5707576 1621952 5703576 1663880 5646248 -1618184 5707576 1618264 5711808 1620040 5713712 1621952 5703576 -1620040 5713712 1620072 5713752 1620104 5713768 1621952 5703576 -1620040 5713712 1620104 5713768 1621952 5703576 1618184 5707576 -1621912 5703512 1621664 5703552 1618184 5707576 1621952 5703576 -1621912 5703512 1621664 5703552 1621952 5703576 1663880 5646248 -1621664 5703552 1618184 5707536 1618184 5707576 1621952 5703576 -1618184 5707576 1620040 5713712 1621952 5703576 1618184 5707536 -1621912 5703512 1621856 5703472 1621664 5703552 1621952 5703576 -1621664 5703552 1618184 5707536 1621952 5703576 1621912 5703512 -1620160 5713848 1620272 5714120 1620512 5714368 1621952 5703576 -1620160 5713848 1620512 5714368 1621952 5703576 1620104 5713768 -1621664 5703552 1618120 5707440 1618184 5707536 1621952 5703576 -1621952 5703576 1621976 5703632 1663944 5646256 1663880 5646248 -1627384 5719672 1621976 5703632 1621952 5703576 1627336 5719640 -1621952 5703576 1620552 5714440 1627336 5719640 1621976 5703632 -1621952 5703576 1620512 5714368 1620552 5714440 1621976 5703632 -1621952 5703576 1620160 5713848 1620512 5714368 1621976 5703632 -1620512 5714368 1620552 5714440 1621976 5703632 1620160 5713848 -1620552 5714440 1627336 5719640 1621976 5703632 1620512 5714368 -1621976 5703632 1663944 5646256 1621952 5703576 1620160 5713848 -1627336 5719640 1627384 5719672 1621976 5703632 1620552 5714440 -1627384 5719672 1663944 5646256 1621976 5703632 1627336 5719640 -1620552 5714440 1627312 5719640 1627336 5719640 1621976 5703632 -1663944 5646256 1621976 5703632 1627384 5719672 1627448 5719792 -1620160 5713848 1620272 5714120 1620512 5714368 1621976 5703632 -1621952 5703576 1620104 5713768 1620160 5713848 1621976 5703632 -1620160 5713848 1620512 5714368 1621976 5703632 1620104 5713768 -1621952 5703576 1620104 5713768 1621976 5703632 1663944 5646256 -1621952 5703576 1620040 5713712 1620104 5713768 1621976 5703632 -1621952 5703576 1620040 5713712 1621976 5703632 1663944 5646256 -1620040 5713712 1620072 5713752 1620104 5713768 1621976 5703632 -1621952 5703576 1618184 5707576 1620040 5713712 1621976 5703632 -1621952 5703576 1618184 5707576 1621976 5703632 1663944 5646256 -1620040 5713712 1620104 5713768 1621976 5703632 1618184 5707576 -1618184 5707576 1618264 5711808 1620040 5713712 1621976 5703632 -1621952 5703576 1618184 5707536 1618184 5707576 1621976 5703632 -1621952 5703576 1618184 5707536 1621976 5703632 1663944 5646256 -1621952 5703576 1621664 5703552 1618184 5707536 1621976 5703632 -1621952 5703576 1621664 5703552 1621976 5703632 1663944 5646256 -1618184 5707536 1618184 5707576 1621976 5703632 1621664 5703552 -1618184 5707576 1620040 5713712 1621976 5703632 1618184 5707536 -1621952 5703576 1621912 5703512 1621664 5703552 1621976 5703632 -1620104 5713768 1620160 5713848 1621976 5703632 1620040 5713712 -1621664 5703552 1618120 5707440 1618184 5707536 1621976 5703632 -1621976 5703632 1622032 5703760 1663944 5646256 1621952 5703576 -1663944 5646256 1663880 5646248 1621952 5703576 1622032 5703760 -1621976 5703632 1627384 5719672 1622032 5703760 1621952 5703576 -1627384 5719672 1622032 5703760 1621976 5703632 1627336 5719640 -1621976 5703632 1620552 5714440 1627336 5719640 1622032 5703760 -1621976 5703632 1620512 5714368 1620552 5714440 1622032 5703760 -1621976 5703632 1620160 5713848 1620512 5714368 1622032 5703760 -1621976 5703632 1620104 5713768 1620160 5713848 1622032 5703760 -1620160 5713848 1620512 5714368 1622032 5703760 1620104 5713768 -1620512 5714368 1620552 5714440 1622032 5703760 1620160 5713848 -1620552 5714440 1627336 5719640 1622032 5703760 1620512 5714368 -1622032 5703760 1621952 5703576 1621976 5703632 1620104 5713768 -1627336 5719640 1627384 5719672 1622032 5703760 1620552 5714440 -1622032 5703760 1627384 5719672 1663944 5646256 1621952 5703576 -1627384 5719672 1663944 5646256 1622032 5703760 1627336 5719640 -1620552 5714440 1627312 5719640 1627336 5719640 1622032 5703760 -1663944 5646256 1622032 5703760 1627384 5719672 1627448 5719792 -1620160 5713848 1620272 5714120 1620512 5714368 1622032 5703760 -1621976 5703632 1620040 5713712 1620104 5713768 1622032 5703760 -1620104 5713768 1620160 5713848 1622032 5703760 1620040 5713712 -1621976 5703632 1620040 5713712 1622032 5703760 1621952 5703576 -1621976 5703632 1618184 5707576 1620040 5713712 1622032 5703760 -1621976 5703632 1618184 5707576 1622032 5703760 1621952 5703576 -1618184 5707576 1618264 5711808 1620040 5713712 1622032 5703760 -1620040 5713712 1620072 5713752 1620104 5713768 1622032 5703760 -1621976 5703632 1618184 5707536 1618184 5707576 1622032 5703760 -1621976 5703632 1618184 5707536 1622032 5703760 1621952 5703576 -1618184 5707576 1620040 5713712 1622032 5703760 1618184 5707536 -1621976 5703632 1621664 5703552 1618184 5707536 1622032 5703760 -1621976 5703632 1621664 5703552 1622032 5703760 1621952 5703576 -1621976 5703632 1621952 5703576 1621664 5703552 1622032 5703760 -1618184 5707536 1618184 5707576 1622032 5703760 1621664 5703552 -1620040 5713712 1620104 5713768 1622032 5703760 1618184 5707576 -1621664 5703552 1618120 5707440 1618184 5707536 1622032 5703760 -1620552 5714440 1622032 5703808 1622032 5703760 1620512 5714368 -1622032 5703760 1620160 5713848 1620512 5714368 1622032 5703808 -1622032 5703760 1620104 5713768 1620160 5713848 1622032 5703808 -1622032 5703760 1620040 5713712 1620104 5713768 1622032 5703808 -1620104 5713768 1620160 5713848 1622032 5703808 1620040 5713712 -1620160 5713848 1620512 5714368 1622032 5703808 1620104 5713768 -1620512 5714368 1620552 5714440 1622032 5703808 1620160 5713848 -1622032 5703760 1622032 5703808 1627336 5719640 1627384 5719672 -1622032 5703808 1627384 5719672 1622032 5703760 1620040 5713712 -1622032 5703760 1622032 5703808 1627384 5719672 1663944 5646256 -1622032 5703808 1620552 5714440 1627336 5719640 1627384 5719672 -1620552 5714440 1627336 5719640 1622032 5703808 1620512 5714368 -1620040 5713712 1620072 5713752 1620104 5713768 1622032 5703808 -1627336 5719640 1622032 5703808 1620552 5714440 1627312 5719640 -1620160 5713848 1620272 5714120 1620512 5714368 1622032 5703808 -1622032 5703760 1618184 5707576 1620040 5713712 1622032 5703808 -1620040 5713712 1620104 5713768 1622032 5703808 1618184 5707576 -1622032 5703760 1618184 5707576 1622032 5703808 1627384 5719672 -1622032 5703760 1618184 5707536 1618184 5707576 1622032 5703808 -1622032 5703760 1618184 5707536 1622032 5703808 1627384 5719672 -1618184 5707576 1618264 5711808 1620040 5713712 1622032 5703808 -1622032 5703760 1621664 5703552 1618184 5707536 1622032 5703808 -1622032 5703760 1621664 5703552 1622032 5703808 1627384 5719672 -1618184 5707536 1618184 5707576 1622032 5703808 1621664 5703552 -1622032 5703760 1621976 5703632 1621664 5703552 1622032 5703808 -1622032 5703760 1621976 5703632 1622032 5703808 1627384 5719672 -1621976 5703632 1621952 5703576 1621664 5703552 1622032 5703808 -1621664 5703552 1618184 5707536 1622032 5703808 1621976 5703632 -1618184 5707576 1620040 5713712 1622032 5703808 1618184 5707536 -1621664 5703552 1618120 5707440 1618184 5707536 1622032 5703808 -1618184 5707536 1618184 5707576 1622032 5703808 1618120 5707440 -1621664 5703552 1618032 5707320 1618120 5707440 1622032 5703808 -1621664 5703552 1618120 5707440 1622032 5703808 1621976 5703632 -1622032 5703808 1621968 5703872 1620040 5713712 1620104 5713768 -1622032 5703808 1621968 5703872 1620104 5713768 1620160 5713848 -1621968 5703872 1620040 5713712 1620104 5713768 1620160 5713848 -1622032 5703808 1621968 5703872 1620160 5713848 1620512 5714368 -1621968 5703872 1620104 5713768 1620160 5713848 1620512 5714368 -1622032 5703808 1621968 5703872 1620512 5714368 1620552 5714440 -1622032 5703808 1618184 5707576 1621968 5703872 1620512 5714368 -1621968 5703872 1618184 5707576 1620040 5713712 1620104 5713768 -1620040 5713712 1621968 5703872 1618184 5707576 1618264 5711808 -1620040 5713712 1620072 5713752 1620104 5713768 1621968 5703872 -1620160 5713848 1620272 5714120 1620512 5714368 1621968 5703872 -1618184 5707576 1621968 5703872 1622032 5703808 1618184 5707536 -1621968 5703872 1620512 5714368 1622032 5703808 1618184 5707536 -1618184 5707576 1620040 5713712 1621968 5703872 1618184 5707536 -1622032 5703808 1618120 5707440 1618184 5707536 1621968 5703872 -1622032 5703808 1618120 5707440 1621968 5703872 1620512 5714368 -1618184 5707536 1618184 5707576 1621968 5703872 1618120 5707440 -1622032 5703808 1621664 5703552 1618120 5707440 1621968 5703872 -1622032 5703808 1621664 5703552 1621968 5703872 1620512 5714368 -1618120 5707440 1618184 5707536 1621968 5703872 1621664 5703552 -1621664 5703552 1618032 5707320 1618120 5707440 1621968 5703872 -1618120 5707440 1618184 5707536 1621968 5703872 1618032 5707320 -1618032 5707320 1618072 5707384 1618120 5707440 1621968 5703872 -1621664 5703552 1617904 5707152 1618032 5707320 1621968 5703872 -1617904 5707152 1617944 5707208 1618032 5707320 1621968 5703872 -1621664 5703552 1617856 5707112 1617904 5707152 1621968 5703872 -1618032 5707320 1618120 5707440 1621968 5703872 1617904 5707152 -1622032 5703808 1621976 5703632 1621664 5703552 1621968 5703872 -1622032 5703808 1621976 5703632 1621968 5703872 1620512 5714368 -1621976 5703632 1621952 5703576 1621664 5703552 1621968 5703872 -1622032 5703808 1622032 5703760 1621976 5703632 1621968 5703872 -1622032 5703808 1622032 5703760 1621968 5703872 1620512 5714368 -1621976 5703632 1621664 5703552 1621968 5703872 1622032 5703760 -1621664 5703552 1617904 5707152 1621968 5703872 1621976 5703632 -1621968 5703872 1621944 5703896 1620040 5713712 1620104 5713768 -1621968 5703872 1621944 5703896 1620104 5713768 1620160 5713848 -1621968 5703872 1621944 5703896 1620160 5713848 1620512 5714368 -1621944 5703896 1620104 5713768 1620160 5713848 1620512 5714368 -1621968 5703872 1621944 5703896 1620512 5714368 1622032 5703808 -1621944 5703896 1620040 5713712 1620104 5713768 1620160 5713848 -1621968 5703872 1618184 5707576 1621944 5703896 1620512 5714368 -1618184 5707576 1621944 5703896 1621968 5703872 1618184 5707536 -1621944 5703896 1620512 5714368 1621968 5703872 1618184 5707536 -1621944 5703896 1618184 5707576 1620040 5713712 1620104 5713768 -1618184 5707576 1620040 5713712 1621944 5703896 1618184 5707536 -1620040 5713712 1621944 5703896 1618184 5707576 1618264 5711808 -1620040 5713712 1620072 5713752 1620104 5713768 1621944 5703896 -1620160 5713848 1620272 5714120 1620512 5714368 1621944 5703896 -1621968 5703872 1618120 5707440 1618184 5707536 1621944 5703896 -1621968 5703872 1618120 5707440 1621944 5703896 1620512 5714368 -1618184 5707536 1618184 5707576 1621944 5703896 1618120 5707440 -1621968 5703872 1618032 5707320 1618120 5707440 1621944 5703896 -1621968 5703872 1618032 5707320 1621944 5703896 1620512 5714368 -1618032 5707320 1618072 5707384 1618120 5707440 1621944 5703896 -1621968 5703872 1617904 5707152 1618032 5707320 1621944 5703896 -1621968 5703872 1617904 5707152 1621944 5703896 1620512 5714368 -1617904 5707152 1617944 5707208 1618032 5707320 1621944 5703896 -1618032 5707320 1618120 5707440 1621944 5703896 1617904 5707152 -1621968 5703872 1621664 5703552 1617904 5707152 1621944 5703896 -1621968 5703872 1621664 5703552 1621944 5703896 1620512 5714368 -1621664 5703552 1617856 5707112 1617904 5707152 1621944 5703896 -1617904 5707152 1618032 5707320 1621944 5703896 1621664 5703552 -1618120 5707440 1618184 5707536 1621944 5703896 1618032 5707320 -1621968 5703872 1621976 5703632 1621664 5703552 1621944 5703896 -1621968 5703872 1621976 5703632 1621944 5703896 1620512 5714368 -1621976 5703632 1621952 5703576 1621664 5703552 1621944 5703896 -1621664 5703552 1617904 5707152 1621944 5703896 1621976 5703632 -1621968 5703872 1622032 5703760 1621976 5703632 1621944 5703896 -1617904 5707152 1621912 5703896 1621664 5703552 1617856 5707112 -1621664 5703552 1621912 5703896 1621944 5703896 1621976 5703632 -1621912 5703896 1617904 5707152 1621944 5703896 1621976 5703632 -1621664 5703552 1617904 5707152 1621912 5703896 1621976 5703632 -1621664 5703552 1621912 5703896 1621976 5703632 1621952 5703576 -1621944 5703896 1621912 5703896 1617904 5707152 1618032 5707320 -1621944 5703896 1621976 5703632 1621912 5703896 1618032 5707320 -1621912 5703896 1621664 5703552 1617904 5707152 1618032 5707320 -1617904 5707152 1617944 5707208 1618032 5707320 1621912 5703896 -1621944 5703896 1621912 5703896 1618032 5707320 1618120 5707440 -1621944 5703896 1621976 5703632 1621912 5703896 1618120 5707440 -1618032 5707320 1618072 5707384 1618120 5707440 1621912 5703896 -1621912 5703896 1617904 5707152 1618032 5707320 1618120 5707440 -1621944 5703896 1621912 5703896 1618120 5707440 1618184 5707536 -1621944 5703896 1621912 5703896 1618184 5707536 1618184 5707576 -1621944 5703896 1621912 5703896 1618184 5707576 1620040 5713712 -1621944 5703896 1621976 5703632 1621912 5703896 1618184 5707576 -1621912 5703896 1618032 5707320 1618120 5707440 1618184 5707536 -1621912 5703896 1618120 5707440 1618184 5707536 1618184 5707576 -1621944 5703896 1621968 5703872 1621976 5703632 1621912 5703896 -1621944 5703896 1621968 5703872 1621912 5703896 1618184 5707576 -1621976 5703632 1621664 5703552 1621912 5703896 1621968 5703872 -1621968 5703872 1622032 5703760 1621976 5703632 1621912 5703896 -1621912 5703896 1621872 5703872 1617904 5707152 1618032 5707320 -1621912 5703896 1621664 5703552 1621872 5703872 1618032 5707320 -1621664 5703552 1621872 5703872 1621912 5703896 1621976 5703632 -1621872 5703872 1618032 5707320 1621912 5703896 1621976 5703632 -1621872 5703872 1621664 5703552 1617904 5707152 1618032 5707320 -1621664 5703552 1617904 5707152 1621872 5703872 1621976 5703632 -1617904 5707152 1617944 5707208 1618032 5707320 1621872 5703872 -1617904 5707152 1621872 5703872 1621664 5703552 1617856 5707112 -1621664 5703552 1621872 5703872 1621976 5703632 1621952 5703576 -1621912 5703896 1621968 5703872 1621976 5703632 1621872 5703872 -1621912 5703896 1621968 5703872 1621872 5703872 1618032 5707320 -1621976 5703632 1621664 5703552 1621872 5703872 1621968 5703872 -1621912 5703896 1621872 5703872 1618032 5707320 1618120 5707440 -1621872 5703872 1617904 5707152 1618032 5707320 1618120 5707440 -1621912 5703896 1621968 5703872 1621872 5703872 1618120 5707440 -1621912 5703896 1621872 5703872 1618120 5707440 1618184 5707536 -1621912 5703896 1621968 5703872 1621872 5703872 1618184 5707536 -1618032 5707320 1618072 5707384 1618120 5707440 1621872 5703872 -1621872 5703872 1618032 5707320 1618120 5707440 1618184 5707536 -1621968 5703872 1622032 5703760 1621976 5703632 1621872 5703872 -1621976 5703632 1621664 5703552 1621872 5703872 1622032 5703760 -1621968 5703872 1622032 5703808 1622032 5703760 1621872 5703872 -1621968 5703872 1622032 5703760 1621872 5703872 1621912 5703896 -1621912 5703896 1621872 5703872 1618184 5707536 1618184 5707576 -1621912 5703896 1621944 5703896 1621968 5703872 1621872 5703872 -1621872 5703872 1621840 5703840 1617904 5707152 1618032 5707320 -1621872 5703872 1621840 5703840 1618032 5707320 1618120 5707440 -1621872 5703872 1621664 5703552 1621840 5703840 1618032 5707320 -1621664 5703552 1621840 5703840 1621872 5703872 1621976 5703632 -1621872 5703872 1622032 5703760 1621976 5703632 1621840 5703840 -1621840 5703840 1618032 5707320 1621872 5703872 1622032 5703760 -1621976 5703632 1621664 5703552 1621840 5703840 1622032 5703760 -1621840 5703840 1621664 5703552 1617904 5707152 1618032 5707320 -1621664 5703552 1617904 5707152 1621840 5703840 1621976 5703632 -1617904 5707152 1617944 5707208 1618032 5707320 1621840 5703840 -1617904 5707152 1621840 5703840 1621664 5703552 1617856 5707112 -1617904 5707152 1618032 5707320 1621840 5703840 1617856 5707112 -1621840 5703840 1621976 5703632 1621664 5703552 1617856 5707112 -1621664 5703552 1621840 5703840 1621976 5703632 1621952 5703576 -1621840 5703840 1622032 5703760 1621976 5703632 1621952 5703576 -1621664 5703552 1617856 5707112 1621840 5703840 1621952 5703576 -1621872 5703872 1621968 5703872 1622032 5703760 1621840 5703840 -1622032 5703760 1621976 5703632 1621840 5703840 1621968 5703872 -1621872 5703872 1621968 5703872 1621840 5703840 1618032 5707320 -1621968 5703872 1622032 5703808 1622032 5703760 1621840 5703840 -1621872 5703872 1621912 5703896 1621968 5703872 1621840 5703840 -1621664 5703552 1621840 5703840 1621952 5703576 1621912 5703512 -1621664 5703552 1617824 5707096 1617856 5707112 1621840 5703840 -1621664 5703552 1621792 5703784 1621840 5703840 1621952 5703576 -1621792 5703784 1617856 5707112 1621840 5703840 1621952 5703576 -1621664 5703552 1617856 5707112 1621792 5703784 1621952 5703576 -1621840 5703840 1621792 5703784 1617856 5707112 1617904 5707152 -1621840 5703840 1621792 5703784 1617904 5707152 1618032 5707320 -1621840 5703840 1621952 5703576 1621792 5703784 1617904 5707152 -1621792 5703784 1621664 5703552 1617856 5707112 1617904 5707152 -1621840 5703840 1621976 5703632 1621952 5703576 1621792 5703784 -1621840 5703840 1622032 5703760 1621976 5703632 1621792 5703784 -1621840 5703840 1621976 5703632 1621792 5703784 1617904 5707152 -1621952 5703576 1621664 5703552 1621792 5703784 1621976 5703632 -1621664 5703552 1621792 5703784 1621952 5703576 1621912 5703512 -1617856 5707112 1621792 5703784 1621664 5703552 1617824 5707096 -1621792 5703784 1621752 5703728 1617856 5707112 1617904 5707152 -1621792 5703784 1621664 5703552 1621752 5703728 1617904 5707152 -1621664 5703552 1621752 5703728 1621792 5703784 1621952 5703576 -1621792 5703784 1621976 5703632 1621952 5703576 1621752 5703728 -1621752 5703728 1617904 5707152 1621792 5703784 1621976 5703632 -1621952 5703576 1621664 5703552 1621752 5703728 1621976 5703632 -1621752 5703728 1621664 5703552 1617856 5707112 1617904 5707152 -1621664 5703552 1617856 5707112 1621752 5703728 1621952 5703576 -1621792 5703784 1621752 5703728 1617904 5707152 1621840 5703840 -1621792 5703784 1621840 5703840 1621976 5703632 1621752 5703728 -1621664 5703552 1621752 5703728 1621952 5703576 1621912 5703512 -1621752 5703728 1621976 5703632 1621952 5703576 1621912 5703512 -1621664 5703552 1617856 5707112 1621752 5703728 1621912 5703512 -1621664 5703552 1621752 5703728 1621912 5703512 1621856 5703472 -1621664 5703552 1617856 5707112 1621752 5703728 1621856 5703472 -1621664 5703552 1621752 5703728 1621856 5703472 1621720 5703464 -1621752 5703728 1621952 5703576 1621912 5703512 1621856 5703472 -1617856 5707112 1621752 5703728 1621664 5703552 1617824 5707096 -1621752 5703728 1621720 5703680 1617856 5707112 1617904 5707152 -1621752 5703728 1621720 5703680 1617904 5707152 1621792 5703784 -1621752 5703728 1621664 5703552 1621720 5703680 1617904 5707152 -1621664 5703552 1621720 5703680 1621752 5703728 1621856 5703472 -1621720 5703680 1617904 5707152 1621752 5703728 1621856 5703472 -1621720 5703680 1621664 5703552 1617856 5707112 1617904 5707152 -1621664 5703552 1617856 5707112 1621720 5703680 1621856 5703472 -1621664 5703552 1621720 5703680 1621856 5703472 1621720 5703464 -1621752 5703728 1621912 5703512 1621856 5703472 1621720 5703680 -1621752 5703728 1621912 5703512 1621720 5703680 1617904 5707152 -1621856 5703472 1621664 5703552 1621720 5703680 1621912 5703512 -1621752 5703728 1621952 5703576 1621912 5703512 1621720 5703680 -1621752 5703728 1621976 5703632 1621952 5703576 1621720 5703680 -1621752 5703728 1621952 5703576 1621720 5703680 1617904 5707152 -1621912 5703512 1621856 5703472 1621720 5703680 1621952 5703576 -1617856 5707112 1621720 5703680 1621664 5703552 1617824 5707096 -1621720 5703680 1621664 5703600 1617856 5707112 1617904 5707152 -1621720 5703680 1621664 5703600 1617904 5707152 1621752 5703728 -1621720 5703680 1621664 5703552 1621664 5703600 1617904 5707152 -1621664 5703552 1621664 5703600 1621720 5703680 1621856 5703472 -1621664 5703600 1621664 5703552 1617856 5707112 1617904 5707152 -1617856 5707112 1621664 5703600 1621664 5703552 1617824 5707096 -1617856 5707112 1617904 5707152 1621664 5703600 1617824 5707096 -1621664 5703600 1621720 5703680 1621664 5703552 1617824 5707096 -1621664 5703552 1613592 5703136 1617824 5707096 1621664 5703600 -1621824 5703424 1621752 5702000 1601624 5681136 1610904 5698784 -1621752 5702000 1663776 5646144 1601624 5681136 1610904 5698784 -1621824 5703424 1663776 5646144 1621752 5702000 1610904 5698784 -1601624 5681136 1621752 5702000 1663776 5646144 1657088 5639464 -1601624 5681136 1610848 5698768 1610904 5698784 1621752 5702000 -1663776 5646144 1621752 5702000 1621824 5703424 1663880 5646248 -1663776 5646144 1601624 5681136 1621752 5702000 1663880 5646248 -1621752 5702000 1610904 5698784 1621824 5703424 1663880 5646248 -1621824 5703424 1621912 5703512 1663880 5646248 1621752 5702000 -1621912 5703512 1621952 5703576 1663880 5646248 1621752 5702000 -1621952 5703576 1663944 5646256 1663880 5646248 1621752 5702000 -1621952 5703576 1663944 5646256 1621752 5702000 1621912 5703512 -1621952 5703576 1622032 5703760 1663944 5646256 1621752 5702000 -1621952 5703576 1622032 5703760 1621752 5702000 1621912 5703512 -1663944 5646256 1663880 5646248 1621752 5702000 1622032 5703760 -1621952 5703576 1621976 5703632 1622032 5703760 1621752 5702000 -1621952 5703576 1621976 5703632 1621752 5702000 1621912 5703512 -1622032 5703760 1663944 5646256 1621752 5702000 1621976 5703632 -1622032 5703760 1627384 5719672 1663944 5646256 1621752 5702000 -1621824 5703424 1621856 5703472 1621912 5703512 1621752 5702000 -1621824 5703424 1621912 5703512 1621752 5702000 1610904 5698784 -1663880 5646248 1663776 5646144 1621752 5702000 1663944 5646256 -1621912 5703512 1621952 5703576 1621752 5702000 1621824 5703424 -1621824 5703424 1621752 5702000 1610904 5698784 1611448 5699192 -1621752 5702000 1601624 5681136 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1621752 5702000 -1621824 5703424 1621912 5703512 1621752 5702000 1611448 5699192 -1621824 5703424 1621752 5702000 1611448 5699192 1611528 5699256 -1621824 5703424 1621912 5703512 1621752 5702000 1611528 5699256 -1621824 5703424 1621752 5702000 1611528 5699256 1621744 5703440 -1621824 5703424 1621912 5703512 1621752 5702000 1621744 5703440 -1611528 5699256 1611560 5699312 1621744 5703440 1621752 5702000 -1621744 5703440 1621824 5703424 1621752 5702000 1611560 5699312 -1611560 5699312 1613464 5703016 1621744 5703440 1621752 5702000 -1613464 5703016 1613592 5703136 1621744 5703440 1621752 5702000 -1613592 5703136 1621720 5703464 1621744 5703440 1621752 5702000 -1613592 5703136 1621720 5703464 1621752 5702000 1613464 5703016 -1621744 5703440 1621824 5703424 1621752 5702000 1621720 5703464 -1613464 5703016 1613592 5703136 1621752 5702000 1611560 5699312 -1611560 5699312 1613464 5703016 1621752 5702000 1611528 5699256 -1613464 5703016 1613512 5703064 1613592 5703136 1621752 5702000 -1613592 5703136 1621664 5703552 1621720 5703464 1621752 5702000 -1613592 5703136 1621664 5703552 1621752 5702000 1613464 5703016 -1613592 5703136 1617824 5707096 1621664 5703552 1621752 5702000 -1621720 5703464 1621744 5703440 1621752 5702000 1621664 5703552 -1611560 5699312 1613304 5702872 1613464 5703016 1621752 5702000 -1621752 5702000 1611448 5699192 1611528 5699256 1611560 5699312 -1621752 5702000 1610904 5698784 1611448 5699192 1611528 5699256 -1621752 5702000 1621448 5701528 1601624 5681136 1610904 5698784 -1621752 5702000 1621448 5701528 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1621448 5701528 -1621448 5701528 1601624 5681136 1610904 5698784 1611448 5699192 -1663776 5646144 1621448 5701528 1621752 5702000 1663880 5646248 -1621752 5702000 1663880 5646248 1621448 5701528 1611448 5699192 -1621448 5701528 1663776 5646144 1601624 5681136 1610904 5698784 -1663776 5646144 1601624 5681136 1621448 5701528 1663880 5646248 -1601624 5681136 1621448 5701528 1663776 5646144 1657088 5639464 -1601624 5681136 1610848 5698768 1610904 5698784 1621448 5701528 -1621752 5702000 1663944 5646256 1663880 5646248 1621448 5701528 -1621752 5702000 1621448 5701528 1611448 5699192 1611528 5699256 -1621448 5701528 1610904 5698784 1611448 5699192 1611528 5699256 -1621752 5702000 1663880 5646248 1621448 5701528 1611528 5699256 -1621752 5702000 1621448 5701528 1611528 5699256 1611560 5699312 -1621752 5702000 1663880 5646248 1621448 5701528 1611560 5699312 -1621752 5702000 1621448 5701528 1611560 5699312 1613464 5703016 -1621752 5702000 1663880 5646248 1621448 5701528 1613464 5703016 -1621752 5702000 1621448 5701528 1613464 5703016 1613592 5703136 -1621752 5702000 1663880 5646248 1621448 5701528 1613592 5703136 -1621752 5702000 1621448 5701528 1613592 5703136 1621664 5703552 -1621752 5702000 1663880 5646248 1621448 5701528 1621664 5703552 -1613592 5703136 1617824 5707096 1621664 5703552 1621448 5701528 -1621448 5701528 1613464 5703016 1613592 5703136 1621664 5703552 -1621448 5701528 1611560 5699312 1613464 5703016 1613592 5703136 -1613464 5703016 1613512 5703064 1613592 5703136 1621448 5701528 -1621752 5702000 1621448 5701528 1621664 5703552 1621720 5703464 -1611560 5699312 1613304 5702872 1613464 5703016 1621448 5701528 -1613464 5703016 1613592 5703136 1621448 5701528 1613304 5702872 -1611560 5699312 1611552 5699400 1613304 5702872 1621448 5701528 -1613304 5702872 1613344 5702912 1613464 5703016 1621448 5701528 -1621448 5701528 1611528 5699256 1611560 5699312 1613304 5702872 -1621448 5701528 1611448 5699192 1611528 5699256 1611560 5699312 -1621448 5701528 1621464 5701464 1601624 5681136 1610904 5698784 -1621464 5701464 1663776 5646144 1601624 5681136 1610904 5698784 -1621448 5701528 1621464 5701464 1610904 5698784 1611448 5699192 -1621448 5701528 1621464 5701464 1611448 5699192 1611528 5699256 -1610904 5698784 1610928 5698816 1611448 5699192 1621464 5701464 -1621464 5701464 1610904 5698784 1611448 5699192 1611528 5699256 -1621464 5701464 1601624 5681136 1610904 5698784 1611448 5699192 -1621448 5701528 1663776 5646144 1621464 5701464 1611528 5699256 -1663776 5646144 1621464 5701464 1621448 5701528 1663880 5646248 -1663776 5646144 1601624 5681136 1621464 5701464 1663880 5646248 -1621448 5701528 1621752 5702000 1663880 5646248 1621464 5701464 -1621464 5701464 1611528 5699256 1621448 5701528 1621752 5702000 -1663880 5646248 1663776 5646144 1621464 5701464 1621752 5702000 -1601624 5681136 1621464 5701464 1663776 5646144 1657088 5639464 -1601624 5681136 1610848 5698768 1610904 5698784 1621464 5701464 -1621752 5702000 1663944 5646256 1663880 5646248 1621464 5701464 -1621448 5701528 1621464 5701464 1611528 5699256 1611560 5699312 -1621464 5701464 1611448 5699192 1611528 5699256 1611560 5699312 -1621448 5701528 1621752 5702000 1621464 5701464 1611560 5699312 -1621448 5701528 1621464 5701464 1611560 5699312 1613304 5702872 -1621448 5701528 1621752 5702000 1621464 5701464 1613304 5702872 -1611560 5699312 1611552 5699400 1613304 5702872 1621464 5701464 -1621448 5701528 1621464 5701464 1613304 5702872 1613464 5703016 -1621448 5701528 1621752 5702000 1621464 5701464 1613464 5703016 -1621448 5701528 1621464 5701464 1613464 5703016 1613592 5703136 -1621448 5701528 1621752 5702000 1621464 5701464 1613592 5703136 -1621448 5701528 1621464 5701464 1613592 5703136 1621664 5703552 -1613464 5703016 1613512 5703064 1613592 5703136 1621464 5701464 -1621464 5701464 1613304 5702872 1613464 5703016 1613592 5703136 -1613304 5702872 1613344 5702912 1613464 5703016 1621464 5701464 -1621464 5701464 1611560 5699312 1613304 5702872 1613464 5703016 -1621464 5701464 1611528 5699256 1611560 5699312 1613304 5702872 -1621464 5701464 1621488 5701424 1601624 5681136 1610904 5698784 -1621464 5701464 1663776 5646144 1621488 5701424 1610904 5698784 -1663776 5646144 1621488 5701424 1621464 5701464 1663880 5646248 -1621488 5701424 1610904 5698784 1621464 5701464 1663880 5646248 -1621488 5701424 1663776 5646144 1601624 5681136 1610904 5698784 -1663776 5646144 1601624 5681136 1621488 5701424 1663880 5646248 -1621464 5701464 1621488 5701424 1610904 5698784 1611448 5699192 -1621488 5701424 1601624 5681136 1610904 5698784 1611448 5699192 -1621464 5701464 1663880 5646248 1621488 5701424 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1621488 5701424 -1621464 5701464 1621488 5701424 1611448 5699192 1611528 5699256 -1621464 5701464 1663880 5646248 1621488 5701424 1611528 5699256 -1621464 5701464 1621488 5701424 1611528 5699256 1611560 5699312 -1621464 5701464 1663880 5646248 1621488 5701424 1611560 5699312 -1621488 5701424 1611448 5699192 1611528 5699256 1611560 5699312 -1621488 5701424 1610904 5698784 1611448 5699192 1611528 5699256 -1621464 5701464 1621752 5702000 1663880 5646248 1621488 5701424 -1621464 5701464 1621752 5702000 1621488 5701424 1611560 5699312 -1663880 5646248 1663776 5646144 1621488 5701424 1621752 5702000 -1621464 5701464 1621448 5701528 1621752 5702000 1621488 5701424 -1621464 5701464 1621448 5701528 1621488 5701424 1611560 5699312 -1621752 5702000 1663880 5646248 1621488 5701424 1621448 5701528 -1601624 5681136 1621488 5701424 1663776 5646144 1657088 5639464 -1601624 5681136 1610848 5698768 1610904 5698784 1621488 5701424 -1621752 5702000 1663944 5646256 1663880 5646248 1621488 5701424 -1621464 5701464 1621488 5701424 1611560 5699312 1613304 5702872 -1621488 5701424 1621576 5701360 1663880 5646248 1663776 5646144 -1621488 5701424 1621752 5702000 1621576 5701360 1663776 5646144 -1621488 5701424 1621576 5701360 1663776 5646144 1601624 5681136 -1621576 5701360 1663880 5646248 1663776 5646144 1601624 5681136 -1621488 5701424 1621576 5701360 1601624 5681136 1610904 5698784 -1621488 5701424 1621576 5701360 1610904 5698784 1611448 5699192 -1621576 5701360 1601624 5681136 1610904 5698784 1611448 5699192 -1621488 5701424 1621752 5702000 1621576 5701360 1611448 5699192 -1621576 5701360 1663776 5646144 1601624 5681136 1610904 5698784 -1621576 5701360 1621752 5702000 1663880 5646248 1663776 5646144 -1610904 5698784 1610928 5698816 1611448 5699192 1621576 5701360 -1621488 5701424 1621576 5701360 1611448 5699192 1611528 5699256 -1621576 5701360 1610904 5698784 1611448 5699192 1611528 5699256 -1621488 5701424 1621752 5702000 1621576 5701360 1611528 5699256 -1621488 5701424 1621576 5701360 1611528 5699256 1611560 5699312 -1621752 5702000 1621576 5701360 1621488 5701424 1621448 5701528 -1621576 5701360 1611528 5699256 1621488 5701424 1621448 5701528 -1621752 5702000 1663880 5646248 1621576 5701360 1621448 5701528 -1621488 5701424 1621464 5701464 1621448 5701528 1621576 5701360 -1663776 5646144 1657088 5639464 1601624 5681136 1621576 5701360 -1663776 5646144 1657088 5639464 1621576 5701360 1663880 5646248 -1601624 5681136 1610904 5698784 1621576 5701360 1657088 5639464 -1657088 5639464 1601592 5681064 1601624 5681136 1621576 5701360 -1601624 5681136 1610848 5698768 1610904 5698784 1621576 5701360 -1663776 5646144 1663688 5645984 1657088 5639464 1621576 5701360 -1663880 5646248 1621576 5701360 1621752 5702000 1663944 5646256 -1621752 5702000 1622032 5703760 1663944 5646256 1621576 5701360 -1663880 5646248 1663776 5646144 1621576 5701360 1663944 5646256 -1621576 5701360 1621448 5701528 1621752 5702000 1663944 5646256 -1663944 5646256 1621712 5701344 1621752 5702000 1622032 5703760 -1621752 5702000 1621976 5703632 1622032 5703760 1621712 5701344 -1663944 5646256 1621712 5701344 1622032 5703760 1627384 5719672 -1621712 5701344 1621752 5702000 1622032 5703760 1627384 5719672 -1622032 5703760 1622032 5703808 1627384 5719672 1621712 5701344 -1621752 5702000 1621712 5701344 1621576 5701360 1621448 5701528 -1621712 5701344 1663944 5646256 1621576 5701360 1621448 5701528 -1663944 5646256 1621576 5701360 1621712 5701344 1627384 5719672 -1621712 5701344 1621448 5701528 1621752 5702000 1622032 5703760 -1621576 5701360 1621488 5701424 1621448 5701528 1621712 5701344 -1663944 5646256 1621712 5701344 1627384 5719672 1627448 5719792 -1621576 5701360 1621712 5701344 1663944 5646256 1663880 5646248 -1621576 5701360 1621712 5701344 1663880 5646248 1663776 5646144 -1621576 5701360 1621712 5701344 1663776 5646144 1657088 5639464 -1621712 5701344 1663880 5646248 1663776 5646144 1657088 5639464 -1621576 5701360 1621448 5701528 1621712 5701344 1657088 5639464 -1621712 5701344 1627384 5719672 1663944 5646256 1663880 5646248 -1621576 5701360 1621712 5701344 1657088 5639464 1601624 5681136 -1621712 5701344 1663776 5646144 1657088 5639464 1601624 5681136 -1621576 5701360 1621712 5701344 1601624 5681136 1610904 5698784 -1621576 5701360 1621712 5701344 1610904 5698784 1611448 5699192 -1621576 5701360 1621448 5701528 1621712 5701344 1610904 5698784 -1657088 5639464 1601592 5681064 1601624 5681136 1621712 5701344 -1621712 5701344 1657088 5639464 1601624 5681136 1610904 5698784 -1601624 5681136 1610848 5698768 1610904 5698784 1621712 5701344 -1663776 5646144 1663688 5645984 1657088 5639464 1621712 5701344 -1621712 5701344 1663944 5646256 1663880 5646248 1663776 5646144 -1627384 5719672 1621816 5701384 1621712 5701344 1622032 5703760 -1621712 5701344 1621752 5702000 1622032 5703760 1621816 5701384 -1621752 5702000 1621976 5703632 1622032 5703760 1621816 5701384 -1622032 5703760 1627384 5719672 1621816 5701384 1621752 5702000 -1627384 5719672 1621816 5701384 1622032 5703760 1622032 5703808 -1621712 5701344 1621816 5701384 1663944 5646256 1663880 5646248 -1621816 5701384 1663880 5646248 1621712 5701344 1621752 5702000 -1621712 5701344 1621448 5701528 1621752 5702000 1621816 5701384 -1621752 5702000 1622032 5703760 1621816 5701384 1621448 5701528 -1621712 5701344 1621576 5701360 1621448 5701528 1621816 5701384 -1621712 5701344 1621448 5701528 1621816 5701384 1663880 5646248 -1663944 5646256 1621816 5701384 1627384 5719672 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1621816 5701384 -1663944 5646256 1621816 5701384 1627448 5719792 1629944 5726576 -1621816 5701384 1627448 5719792 1663944 5646256 1663880 5646248 -1627384 5719672 1627448 5719792 1621816 5701384 1622032 5703760 -1621712 5701344 1621816 5701384 1663880 5646248 1663776 5646144 -1621712 5701344 1621816 5701384 1663776 5646144 1657088 5639464 -1621712 5701344 1621816 5701384 1657088 5639464 1601624 5681136 -1621816 5701384 1663776 5646144 1657088 5639464 1601624 5681136 -1621816 5701384 1663944 5646256 1663880 5646248 1663776 5646144 -1621712 5701344 1621448 5701528 1621816 5701384 1601624 5681136 -1657088 5639464 1601592 5681064 1601624 5681136 1621816 5701384 -1621712 5701344 1621816 5701384 1601624 5681136 1610904 5698784 -1663776 5646144 1663688 5645984 1657088 5639464 1621816 5701384 -1621816 5701384 1663880 5646248 1663776 5646144 1657088 5639464 -1627448 5719792 1622216 5701544 1621816 5701384 1627384 5719672 -1627448 5719792 1663944 5646256 1622216 5701544 1627384 5719672 -1627448 5719792 1622216 5701544 1627384 5719672 1627400 5719704 -1663944 5646256 1622216 5701544 1627448 5719792 1629944 5726576 -1621816 5701384 1622216 5701544 1663944 5646256 1663880 5646248 -1621816 5701384 1622216 5701544 1663880 5646248 1663776 5646144 -1622216 5701544 1627448 5719792 1663944 5646256 1663880 5646248 -1622216 5701544 1663944 5646256 1663880 5646248 1663776 5646144 -1622216 5701544 1663776 5646144 1621816 5701384 1627384 5719672 -1621816 5701384 1622032 5703760 1627384 5719672 1622216 5701544 -1621816 5701384 1621752 5702000 1622032 5703760 1622216 5701544 -1621816 5701384 1621448 5701528 1621752 5702000 1622216 5701544 -1621752 5702000 1621976 5703632 1622032 5703760 1622216 5701544 -1621752 5702000 1621952 5703576 1621976 5703632 1622216 5701544 -1621752 5702000 1621912 5703512 1621952 5703576 1622216 5701544 -1621976 5703632 1622032 5703760 1622216 5701544 1621952 5703576 -1621952 5703576 1621976 5703632 1622216 5701544 1621912 5703512 -1621752 5702000 1621912 5703512 1622216 5701544 1621816 5701384 -1622032 5703760 1622032 5703808 1627384 5719672 1622216 5701544 -1622032 5703808 1627336 5719640 1627384 5719672 1622216 5701544 -1622032 5703760 1622032 5703808 1622216 5701544 1621976 5703632 -1627384 5719672 1627448 5719792 1622216 5701544 1622032 5703808 -1621816 5701384 1621752 5702000 1622216 5701544 1663776 5646144 -1621816 5701384 1622216 5701544 1663776 5646144 1657088 5639464 -1621752 5702000 1621824 5703424 1621912 5703512 1622216 5701544 -1622216 5701544 1622440 5701576 1663944 5646256 1663880 5646248 -1627448 5719792 1622440 5701576 1622216 5701544 1627384 5719672 -1622216 5701544 1627384 5719672 1622440 5701576 1663880 5646248 -1622440 5701576 1627448 5719792 1663944 5646256 1663880 5646248 -1627448 5719792 1663944 5646256 1622440 5701576 1627384 5719672 -1622216 5701544 1622032 5703808 1627384 5719672 1622440 5701576 -1622032 5703808 1627336 5719640 1627384 5719672 1622440 5701576 -1622216 5701544 1622032 5703760 1622032 5703808 1622440 5701576 -1622216 5701544 1621976 5703632 1622032 5703760 1622440 5701576 -1622216 5701544 1621952 5703576 1621976 5703632 1622440 5701576 -1622216 5701544 1621912 5703512 1621952 5703576 1622440 5701576 -1622216 5701544 1621752 5702000 1621912 5703512 1622440 5701576 -1621952 5703576 1621976 5703632 1622440 5701576 1621912 5703512 -1621912 5703512 1621952 5703576 1622440 5701576 1621752 5702000 -1622216 5701544 1621816 5701384 1621752 5702000 1622440 5701576 -1622032 5703760 1622032 5703808 1622440 5701576 1621976 5703632 -1621976 5703632 1622032 5703760 1622440 5701576 1621952 5703576 -1627384 5719672 1627448 5719792 1622440 5701576 1622032 5703808 -1622216 5701544 1621752 5702000 1622440 5701576 1663880 5646248 -1622032 5703808 1627384 5719672 1622440 5701576 1622032 5703760 -1627448 5719792 1622440 5701576 1627384 5719672 1627400 5719704 -1663944 5646256 1622440 5701576 1627448 5719792 1629944 5726576 -1622216 5701544 1622440 5701576 1663880 5646248 1663776 5646144 -1622216 5701544 1622440 5701576 1663776 5646144 1621816 5701384 -1622440 5701576 1663944 5646256 1663880 5646248 1663776 5646144 -1622216 5701544 1621752 5702000 1622440 5701576 1621816 5701384 -1622440 5701576 1663880 5646248 1663776 5646144 1621816 5701384 -1663776 5646144 1657088 5639464 1621816 5701384 1622440 5701576 -1657088 5639464 1601624 5681136 1621816 5701384 1622440 5701576 -1601624 5681136 1621712 5701344 1621816 5701384 1622440 5701576 -1601624 5681136 1621712 5701344 1622440 5701576 1657088 5639464 -1621816 5701384 1622216 5701544 1622440 5701576 1621712 5701344 -1657088 5639464 1601592 5681064 1601624 5681136 1622440 5701576 -1601624 5681136 1610904 5698784 1621712 5701344 1622440 5701576 -1663776 5646144 1663688 5645984 1657088 5639464 1622440 5701576 -1663776 5646144 1657088 5639464 1622440 5701576 1663880 5646248 -1657088 5639464 1601624 5681136 1622440 5701576 1663776 5646144 -1621752 5702000 1621824 5703424 1621912 5703512 1622440 5701576 -1621752 5702000 1621824 5703424 1622440 5701576 1622216 5701544 -1621912 5703512 1621952 5703576 1622440 5701576 1621824 5703424 -1621824 5703424 1621856 5703472 1621912 5703512 1622440 5701576 -1621752 5702000 1621744 5703440 1621824 5703424 1622440 5701576 -1622440 5701576 1622664 5701568 1663944 5646256 1663880 5646248 -1622440 5701576 1622664 5701568 1663880 5646248 1663776 5646144 -1622664 5701568 1663944 5646256 1663880 5646248 1663776 5646144 -1622440 5701576 1627448 5719792 1622664 5701568 1663776 5646144 -1627448 5719792 1622664 5701568 1622440 5701576 1627384 5719672 -1622440 5701576 1622032 5703808 1627384 5719672 1622664 5701568 -1622032 5703808 1627336 5719640 1627384 5719672 1622664 5701568 -1622664 5701568 1663776 5646144 1622440 5701576 1622032 5703808 -1627384 5719672 1627448 5719792 1622664 5701568 1622032 5703808 -1622664 5701568 1627448 5719792 1663944 5646256 1663880 5646248 -1627448 5719792 1663944 5646256 1622664 5701568 1627384 5719672 -1622440 5701576 1622032 5703760 1622032 5703808 1622664 5701568 -1622440 5701576 1621976 5703632 1622032 5703760 1622664 5701568 -1622440 5701576 1621952 5703576 1621976 5703632 1622664 5701568 -1622440 5701576 1621912 5703512 1621952 5703576 1622664 5701568 -1622440 5701576 1621824 5703424 1621912 5703512 1622664 5701568 -1621912 5703512 1621952 5703576 1622664 5701568 1621824 5703424 -1621976 5703632 1622032 5703760 1622664 5701568 1621952 5703576 -1621952 5703576 1621976 5703632 1622664 5701568 1621912 5703512 -1622032 5703808 1627384 5719672 1622664 5701568 1622032 5703760 -1622440 5701576 1621824 5703424 1622664 5701568 1663776 5646144 -1621824 5703424 1621856 5703472 1621912 5703512 1622664 5701568 -1622032 5703760 1622032 5703808 1622664 5701568 1621976 5703632 -1627448 5719792 1622664 5701568 1627384 5719672 1627400 5719704 -1663944 5646256 1622664 5701568 1627448 5719792 1629944 5726576 -1622440 5701576 1622664 5701568 1663776 5646144 1657088 5639464 -1622664 5701568 1663880 5646248 1663776 5646144 1657088 5639464 -1622440 5701576 1621824 5703424 1622664 5701568 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1622664 5701568 -1622440 5701576 1622664 5701568 1657088 5639464 1601624 5681136 -1622440 5701576 1622664 5701568 1601624 5681136 1621712 5701344 -1622440 5701576 1622664 5701568 1621712 5701344 1621816 5701384 -1622664 5701568 1601624 5681136 1621712 5701344 1621816 5701384 -1622440 5701576 1622664 5701568 1621816 5701384 1622216 5701544 -1622664 5701568 1621712 5701344 1621816 5701384 1622216 5701544 -1622440 5701576 1621824 5703424 1622664 5701568 1622216 5701544 -1657088 5639464 1601592 5681064 1601624 5681136 1622664 5701568 -1601624 5681136 1610904 5698784 1621712 5701344 1622664 5701568 -1622664 5701568 1663776 5646144 1657088 5639464 1601624 5681136 -1622664 5701568 1657088 5639464 1601624 5681136 1621712 5701344 -1622440 5701576 1621752 5702000 1621824 5703424 1622664 5701568 -1622440 5701576 1622216 5701544 1621752 5702000 1622664 5701568 -1621824 5703424 1621912 5703512 1622664 5701568 1621752 5702000 -1622440 5701576 1621752 5702000 1622664 5701568 1622216 5701544 -1621752 5702000 1621744 5703440 1621824 5703424 1622664 5701568 -1622664 5701568 1622880 5701536 1663944 5646256 1663880 5646248 -1622664 5701568 1622880 5701536 1663880 5646248 1663776 5646144 -1622664 5701568 1622880 5701536 1663776 5646144 1657088 5639464 -1622880 5701536 1663880 5646248 1663776 5646144 1657088 5639464 -1622880 5701536 1663944 5646256 1663880 5646248 1663776 5646144 -1622664 5701568 1627448 5719792 1622880 5701536 1657088 5639464 -1627448 5719792 1622880 5701536 1622664 5701568 1627384 5719672 -1622664 5701568 1622032 5703808 1627384 5719672 1622880 5701536 -1622032 5703808 1627336 5719640 1627384 5719672 1622880 5701536 -1622664 5701568 1622032 5703760 1622032 5703808 1622880 5701536 -1622032 5703808 1627384 5719672 1622880 5701536 1622032 5703760 -1622880 5701536 1657088 5639464 1622664 5701568 1622032 5703760 -1627384 5719672 1627448 5719792 1622880 5701536 1622032 5703808 -1622880 5701536 1627448 5719792 1663944 5646256 1663880 5646248 -1627448 5719792 1663944 5646256 1622880 5701536 1627384 5719672 -1622664 5701568 1621976 5703632 1622032 5703760 1622880 5701536 -1622664 5701568 1621952 5703576 1621976 5703632 1622880 5701536 -1622664 5701568 1621912 5703512 1621952 5703576 1622880 5701536 -1622664 5701568 1621824 5703424 1621912 5703512 1622880 5701536 -1621952 5703576 1621976 5703632 1622880 5701536 1621912 5703512 -1622032 5703760 1622032 5703808 1622880 5701536 1621976 5703632 -1622664 5701568 1621912 5703512 1622880 5701536 1657088 5639464 -1621976 5703632 1622032 5703760 1622880 5701536 1621952 5703576 -1627448 5719792 1622880 5701536 1627384 5719672 1627400 5719704 -1663944 5646256 1622880 5701536 1627448 5719792 1629944 5726576 -1663776 5646144 1663688 5645984 1657088 5639464 1622880 5701536 -1622664 5701568 1622880 5701536 1657088 5639464 1601624 5681136 -1622880 5701536 1663776 5646144 1657088 5639464 1601624 5681136 -1622664 5701568 1621912 5703512 1622880 5701536 1601624 5681136 -1657088 5639464 1601592 5681064 1601624 5681136 1622880 5701536 -1622664 5701568 1622880 5701536 1601624 5681136 1621712 5701344 -1622664 5701568 1622880 5701536 1621712 5701344 1621816 5701384 -1622664 5701568 1622880 5701536 1621816 5701384 1622216 5701544 -1622664 5701568 1621912 5703512 1622880 5701536 1621816 5701384 -1601624 5681136 1610904 5698784 1621712 5701344 1622880 5701536 -1622880 5701536 1657088 5639464 1601624 5681136 1621712 5701344 -1622880 5701536 1601624 5681136 1621712 5701344 1621816 5701384 -1622880 5701536 1623016 5701528 1663944 5646256 1663880 5646248 -1622880 5701536 1623016 5701528 1663880 5646248 1663776 5646144 -1622880 5701536 1623016 5701528 1663776 5646144 1657088 5639464 -1622880 5701536 1623016 5701528 1657088 5639464 1601624 5681136 -1623016 5701528 1663776 5646144 1657088 5639464 1601624 5681136 -1623016 5701528 1663880 5646248 1663776 5646144 1657088 5639464 -1623016 5701528 1627448 5719792 1663944 5646256 1663880 5646248 -1623016 5701528 1663944 5646256 1663880 5646248 1663776 5646144 -1622880 5701536 1627448 5719792 1623016 5701528 1601624 5681136 -1627448 5719792 1623016 5701528 1622880 5701536 1627384 5719672 -1622880 5701536 1622032 5703808 1627384 5719672 1623016 5701528 -1622032 5703808 1627336 5719640 1627384 5719672 1623016 5701528 -1622880 5701536 1622032 5703760 1622032 5703808 1623016 5701528 -1622880 5701536 1621976 5703632 1622032 5703760 1623016 5701528 -1622032 5703760 1622032 5703808 1623016 5701528 1621976 5703632 -1622032 5703808 1627384 5719672 1623016 5701528 1622032 5703760 -1627448 5719792 1663944 5646256 1623016 5701528 1627384 5719672 -1623016 5701528 1601624 5681136 1622880 5701536 1621976 5703632 -1627384 5719672 1627448 5719792 1623016 5701528 1622032 5703808 -1622880 5701536 1621952 5703576 1621976 5703632 1623016 5701528 -1622880 5701536 1621912 5703512 1621952 5703576 1623016 5701528 -1622880 5701536 1622664 5701568 1621912 5703512 1623016 5701528 -1621976 5703632 1622032 5703760 1623016 5701528 1621952 5703576 -1622880 5701536 1621912 5703512 1623016 5701528 1601624 5681136 -1621952 5703576 1621976 5703632 1623016 5701528 1621912 5703512 -1657088 5639464 1601592 5681064 1601624 5681136 1623016 5701528 -1627448 5719792 1623016 5701528 1627384 5719672 1627400 5719704 -1663944 5646256 1623016 5701528 1627448 5719792 1629944 5726576 -1663776 5646144 1663688 5645984 1657088 5639464 1623016 5701528 -1622880 5701536 1623016 5701528 1601624 5681136 1621712 5701344 -1623016 5701528 1657088 5639464 1601624 5681136 1621712 5701344 -1622880 5701536 1621912 5703512 1623016 5701528 1621712 5701344 -1601624 5681136 1610904 5698784 1621712 5701344 1623016 5701528 -1622880 5701536 1623016 5701528 1621712 5701344 1621816 5701384 -1623016 5701528 1623192 5701576 1663944 5646256 1663880 5646248 -1623016 5701528 1627448 5719792 1623192 5701576 1663880 5646248 -1627448 5719792 1623192 5701576 1623016 5701528 1627384 5719672 -1627448 5719792 1663944 5646256 1623192 5701576 1627384 5719672 -1623192 5701576 1663880 5646248 1623016 5701528 1627384 5719672 -1623192 5701576 1627448 5719792 1663944 5646256 1663880 5646248 -1623016 5701528 1623192 5701576 1663880 5646248 1663776 5646144 -1623016 5701528 1623192 5701576 1663776 5646144 1657088 5639464 -1623016 5701528 1623192 5701576 1657088 5639464 1601624 5681136 -1623016 5701528 1623192 5701576 1601624 5681136 1621712 5701344 -1623192 5701576 1663776 5646144 1657088 5639464 1601624 5681136 -1623192 5701576 1663944 5646256 1663880 5646248 1663776 5646144 -1623016 5701528 1627384 5719672 1623192 5701576 1601624 5681136 -1623192 5701576 1663880 5646248 1663776 5646144 1657088 5639464 -1623016 5701528 1622032 5703808 1627384 5719672 1623192 5701576 -1622032 5703808 1627336 5719640 1627384 5719672 1623192 5701576 -1622032 5703808 1620552 5714440 1627336 5719640 1623192 5701576 -1623016 5701528 1622032 5703760 1622032 5703808 1623192 5701576 -1623016 5701528 1621976 5703632 1622032 5703760 1623192 5701576 -1623016 5701528 1621952 5703576 1621976 5703632 1623192 5701576 -1621976 5703632 1622032 5703760 1623192 5701576 1621952 5703576 -1622032 5703760 1622032 5703808 1623192 5701576 1621976 5703632 -1623016 5701528 1621952 5703576 1623192 5701576 1601624 5681136 -1627384 5719672 1627448 5719792 1623192 5701576 1627336 5719640 -1622032 5703808 1627336 5719640 1623192 5701576 1622032 5703760 -1623016 5701528 1621912 5703512 1621952 5703576 1623192 5701576 -1623016 5701528 1622880 5701536 1621912 5703512 1623192 5701576 -1622880 5701536 1622664 5701568 1621912 5703512 1623192 5701576 -1622664 5701568 1621824 5703424 1621912 5703512 1623192 5701576 -1622880 5701536 1622664 5701568 1623192 5701576 1623016 5701528 -1621952 5703576 1621976 5703632 1623192 5701576 1621912 5703512 -1623016 5701528 1622880 5701536 1623192 5701576 1601624 5681136 -1621912 5703512 1621952 5703576 1623192 5701576 1622664 5701568 -1657088 5639464 1601592 5681064 1601624 5681136 1623192 5701576 -1627448 5719792 1623192 5701576 1627384 5719672 1627400 5719704 -1663944 5646256 1623192 5701576 1627448 5719792 1629944 5726576 -1663776 5646144 1663688 5645984 1657088 5639464 1623192 5701576 -1627448 5719792 1623296 5701624 1623192 5701576 1627384 5719672 -1627448 5719792 1663944 5646256 1623296 5701624 1627384 5719672 -1623192 5701576 1627336 5719640 1627384 5719672 1623296 5701624 -1623192 5701576 1622032 5703808 1627336 5719640 1623296 5701624 -1622032 5703808 1620552 5714440 1627336 5719640 1623296 5701624 -1627384 5719672 1627448 5719792 1623296 5701624 1627336 5719640 -1627336 5719640 1627384 5719672 1623296 5701624 1622032 5703808 -1623192 5701576 1623296 5701624 1663944 5646256 1663880 5646248 -1623296 5701624 1627448 5719792 1663944 5646256 1663880 5646248 -1623192 5701576 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663944 5646256 1663880 5646248 1663776 5646144 -1623296 5701624 1663776 5646144 1623192 5701576 1622032 5703808 -1623192 5701576 1623296 5701624 1663776 5646144 1657088 5639464 -1623192 5701576 1622032 5703760 1622032 5703808 1623296 5701624 -1622032 5703808 1627336 5719640 1623296 5701624 1622032 5703760 -1623192 5701576 1621976 5703632 1622032 5703760 1623296 5701624 -1623192 5701576 1621952 5703576 1621976 5703632 1623296 5701624 -1623192 5701576 1621912 5703512 1621952 5703576 1623296 5701624 -1621952 5703576 1621976 5703632 1623296 5701624 1621912 5703512 -1621976 5703632 1622032 5703760 1623296 5701624 1621952 5703576 -1623192 5701576 1621912 5703512 1623296 5701624 1663776 5646144 -1622032 5703760 1622032 5703808 1623296 5701624 1621976 5703632 -1623192 5701576 1622664 5701568 1621912 5703512 1623296 5701624 -1622664 5701568 1621824 5703424 1621912 5703512 1623296 5701624 -1623192 5701576 1622880 5701536 1622664 5701568 1623296 5701624 -1623192 5701576 1623016 5701528 1622880 5701536 1623296 5701624 -1621912 5703512 1621952 5703576 1623296 5701624 1622664 5701568 -1623192 5701576 1622880 5701536 1623296 5701624 1663776 5646144 -1622664 5701568 1621912 5703512 1623296 5701624 1622880 5701536 -1627448 5719792 1623296 5701624 1627384 5719672 1627400 5719704 -1663944 5646256 1623296 5701624 1627448 5719792 1629944 5726576 -1623296 5701624 1623408 5701720 1663944 5646256 1663880 5646248 -1623296 5701624 1627448 5719792 1623408 5701720 1663880 5646248 -1627448 5719792 1623408 5701720 1623296 5701624 1627384 5719672 -1623296 5701624 1627336 5719640 1627384 5719672 1623408 5701720 -1623408 5701720 1663880 5646248 1623296 5701624 1627336 5719640 -1627384 5719672 1627448 5719792 1623408 5701720 1627336 5719640 -1623408 5701720 1627448 5719792 1663944 5646256 1663880 5646248 -1627448 5719792 1663944 5646256 1623408 5701720 1627384 5719672 -1623296 5701624 1622032 5703808 1627336 5719640 1623408 5701720 -1623296 5701624 1622032 5703760 1622032 5703808 1623408 5701720 -1622032 5703808 1620552 5714440 1627336 5719640 1623408 5701720 -1627336 5719640 1627384 5719672 1623408 5701720 1622032 5703808 -1623296 5701624 1622032 5703760 1623408 5701720 1663880 5646248 -1622032 5703808 1627336 5719640 1623408 5701720 1622032 5703760 -1623296 5701624 1623408 5701720 1663880 5646248 1663776 5646144 -1623296 5701624 1621976 5703632 1622032 5703760 1623408 5701720 -1622032 5703760 1622032 5703808 1623408 5701720 1621976 5703632 -1623296 5701624 1621976 5703632 1623408 5701720 1663880 5646248 -1623296 5701624 1621952 5703576 1621976 5703632 1623408 5701720 -1623296 5701624 1621952 5703576 1623408 5701720 1663880 5646248 -1623296 5701624 1621912 5703512 1621952 5703576 1623408 5701720 -1623296 5701624 1621912 5703512 1623408 5701720 1663880 5646248 -1623296 5701624 1622664 5701568 1621912 5703512 1623408 5701720 -1622664 5701568 1621824 5703424 1621912 5703512 1623408 5701720 -1623296 5701624 1622664 5701568 1623408 5701720 1663880 5646248 -1621912 5703512 1621952 5703576 1623408 5701720 1622664 5701568 -1621952 5703576 1621976 5703632 1623408 5701720 1621912 5703512 -1621976 5703632 1622032 5703760 1623408 5701720 1621952 5703576 -1623296 5701624 1622880 5701536 1622664 5701568 1623408 5701720 -1623296 5701624 1622880 5701536 1623408 5701720 1663880 5646248 -1623296 5701624 1623192 5701576 1622880 5701536 1623408 5701720 -1623192 5701576 1623016 5701528 1622880 5701536 1623408 5701720 -1623296 5701624 1623192 5701576 1623408 5701720 1663880 5646248 -1622664 5701568 1621912 5703512 1623408 5701720 1622880 5701536 -1622880 5701536 1622664 5701568 1623408 5701720 1623192 5701576 -1627448 5719792 1623408 5701720 1627384 5719672 1627400 5719704 -1663944 5646256 1623408 5701720 1627448 5719792 1629944 5726576 -1623408 5701720 1623576 5701960 1663944 5646256 1663880 5646248 -1623408 5701720 1623576 5701960 1663880 5646248 1623296 5701624 -1623408 5701720 1627448 5719792 1623576 5701960 1663880 5646248 -1627448 5719792 1623576 5701960 1623408 5701720 1627384 5719672 -1623408 5701720 1627336 5719640 1627384 5719672 1623576 5701960 -1623408 5701720 1622032 5703808 1627336 5719640 1623576 5701960 -1622032 5703808 1620552 5714440 1627336 5719640 1623576 5701960 -1627336 5719640 1627384 5719672 1623576 5701960 1622032 5703808 -1623576 5701960 1663880 5646248 1623408 5701720 1622032 5703808 -1627384 5719672 1627448 5719792 1623576 5701960 1627336 5719640 -1623576 5701960 1627448 5719792 1663944 5646256 1663880 5646248 -1627448 5719792 1663944 5646256 1623576 5701960 1627384 5719672 -1623408 5701720 1622032 5703760 1622032 5703808 1623576 5701960 -1623408 5701720 1621976 5703632 1622032 5703760 1623576 5701960 -1622032 5703808 1627336 5719640 1623576 5701960 1622032 5703760 -1623408 5701720 1621976 5703632 1623576 5701960 1663880 5646248 -1622032 5703760 1622032 5703808 1623576 5701960 1621976 5703632 -1623408 5701720 1621952 5703576 1621976 5703632 1623576 5701960 -1621976 5703632 1622032 5703760 1623576 5701960 1621952 5703576 -1623408 5701720 1621952 5703576 1623576 5701960 1663880 5646248 -1623408 5701720 1621912 5703512 1621952 5703576 1623576 5701960 -1623408 5701720 1621912 5703512 1623576 5701960 1663880 5646248 -1623408 5701720 1622664 5701568 1621912 5703512 1623576 5701960 -1622664 5701568 1621824 5703424 1621912 5703512 1623576 5701960 -1623408 5701720 1622664 5701568 1623576 5701960 1663880 5646248 -1623408 5701720 1622880 5701536 1622664 5701568 1623576 5701960 -1623408 5701720 1622880 5701536 1623576 5701960 1663880 5646248 -1622664 5701568 1621912 5703512 1623576 5701960 1622880 5701536 -1621912 5703512 1621952 5703576 1623576 5701960 1622664 5701568 -1621952 5703576 1621976 5703632 1623576 5701960 1621912 5703512 -1623408 5701720 1623192 5701576 1622880 5701536 1623576 5701960 -1627448 5719792 1623576 5701960 1627384 5719672 1627400 5719704 -1663944 5646256 1623576 5701960 1627448 5719792 1629944 5726576 -1623576 5701960 1623840 5702400 1663944 5646256 1663880 5646248 -1623576 5701960 1623840 5702400 1663880 5646248 1623408 5701720 -1623576 5701960 1627448 5719792 1623840 5702400 1663880 5646248 -1627448 5719792 1623840 5702400 1623576 5701960 1627384 5719672 -1623576 5701960 1627336 5719640 1627384 5719672 1623840 5702400 -1623576 5701960 1622032 5703808 1627336 5719640 1623840 5702400 -1622032 5703808 1620552 5714440 1627336 5719640 1623840 5702400 -1622032 5703808 1620512 5714368 1620552 5714440 1623840 5702400 -1623576 5701960 1622032 5703760 1622032 5703808 1623840 5702400 -1622032 5703808 1620552 5714440 1623840 5702400 1622032 5703760 -1627336 5719640 1627384 5719672 1623840 5702400 1620552 5714440 -1623840 5702400 1663880 5646248 1623576 5701960 1622032 5703760 -1627384 5719672 1627448 5719792 1623840 5702400 1627336 5719640 -1623840 5702400 1627448 5719792 1663944 5646256 1663880 5646248 -1627448 5719792 1663944 5646256 1623840 5702400 1627384 5719672 -1623576 5701960 1621976 5703632 1622032 5703760 1623840 5702400 -1623576 5701960 1621952 5703576 1621976 5703632 1623840 5702400 -1622032 5703760 1622032 5703808 1623840 5702400 1621976 5703632 -1623576 5701960 1621952 5703576 1623840 5702400 1663880 5646248 -1621976 5703632 1622032 5703760 1623840 5702400 1621952 5703576 -1623576 5701960 1621912 5703512 1621952 5703576 1623840 5702400 -1621952 5703576 1621976 5703632 1623840 5702400 1621912 5703512 -1623576 5701960 1621912 5703512 1623840 5702400 1663880 5646248 -1623576 5701960 1622664 5701568 1621912 5703512 1623840 5702400 -1620552 5714440 1627312 5719640 1627336 5719640 1623840 5702400 -1627448 5719792 1623840 5702400 1627384 5719672 1627400 5719704 -1663944 5646256 1623840 5702400 1627448 5719792 1629944 5726576 -1623840 5702400 1623944 5702640 1663944 5646256 1663880 5646248 -1627448 5719792 1623944 5702640 1623840 5702400 1627384 5719672 -1623840 5702400 1627336 5719640 1627384 5719672 1623944 5702640 -1623840 5702400 1620552 5714440 1627336 5719640 1623944 5702640 -1623840 5702400 1622032 5703808 1620552 5714440 1623944 5702640 -1622032 5703808 1620512 5714368 1620552 5714440 1623944 5702640 -1622032 5703808 1621968 5703872 1620512 5714368 1623944 5702640 -1621968 5703872 1621944 5703896 1620512 5714368 1623944 5702640 -1621944 5703896 1620160 5713848 1620512 5714368 1623944 5702640 -1621968 5703872 1621944 5703896 1623944 5702640 1622032 5703808 -1622032 5703808 1621968 5703872 1623944 5702640 1623840 5702400 -1620512 5714368 1620552 5714440 1623944 5702640 1621944 5703896 -1623840 5702400 1622032 5703760 1622032 5703808 1623944 5702640 -1622032 5703808 1621968 5703872 1623944 5702640 1622032 5703760 -1623840 5702400 1621976 5703632 1622032 5703760 1623944 5702640 -1622032 5703760 1622032 5703808 1623944 5702640 1621976 5703632 -1620552 5714440 1627336 5719640 1623944 5702640 1620512 5714368 -1627336 5719640 1627384 5719672 1623944 5702640 1620552 5714440 -1623944 5702640 1663944 5646256 1623840 5702400 1621976 5703632 -1627384 5719672 1627448 5719792 1623944 5702640 1627336 5719640 -1627448 5719792 1663944 5646256 1623944 5702640 1627384 5719672 -1623840 5702400 1621952 5703576 1621976 5703632 1623944 5702640 -1623840 5702400 1621912 5703512 1621952 5703576 1623944 5702640 -1621976 5703632 1622032 5703760 1623944 5702640 1621952 5703576 -1623840 5702400 1621952 5703576 1623944 5702640 1663944 5646256 -1620552 5714440 1627312 5719640 1627336 5719640 1623944 5702640 -1627448 5719792 1623944 5702640 1627384 5719672 1627400 5719704 -1663944 5646256 1623944 5702640 1627448 5719792 1629944 5726576 -1620512 5714368 1623888 5702776 1621944 5703896 1620160 5713848 -1621944 5703896 1623888 5702776 1623944 5702640 1621968 5703872 -1623944 5702640 1622032 5703808 1621968 5703872 1623888 5702776 -1621968 5703872 1621944 5703896 1623888 5702776 1622032 5703808 -1623944 5702640 1622032 5703760 1622032 5703808 1623888 5702776 -1622032 5703808 1621968 5703872 1623888 5702776 1622032 5703760 -1623944 5702640 1623888 5702776 1620512 5714368 1620552 5714440 -1623944 5702640 1621976 5703632 1622032 5703760 1623888 5702776 -1622032 5703760 1622032 5703808 1623888 5702776 1621976 5703632 -1623944 5702640 1621952 5703576 1621976 5703632 1623888 5702776 -1621976 5703632 1622032 5703760 1623888 5702776 1621952 5703576 -1623944 5702640 1623888 5702776 1620552 5714440 1627336 5719640 -1623888 5702776 1620512 5714368 1620552 5714440 1627336 5719640 -1623944 5702640 1623888 5702776 1627336 5719640 1627384 5719672 -1623888 5702776 1620552 5714440 1627336 5719640 1627384 5719672 -1623944 5702640 1623888 5702776 1627384 5719672 1627448 5719792 -1623888 5702776 1627384 5719672 1623944 5702640 1621952 5703576 -1623888 5702776 1621944 5703896 1620512 5714368 1620552 5714440 -1621944 5703896 1620512 5714368 1623888 5702776 1621968 5703872 -1623944 5702640 1623840 5702400 1621952 5703576 1623888 5702776 -1623840 5702400 1621912 5703512 1621952 5703576 1623888 5702776 -1621952 5703576 1621976 5703632 1623888 5702776 1621912 5703512 -1623944 5702640 1623840 5702400 1623888 5702776 1627384 5719672 -1623840 5702400 1621912 5703512 1623888 5702776 1623944 5702640 -1623840 5702400 1623576 5701960 1621912 5703512 1623888 5702776 -1621912 5703512 1621952 5703576 1623888 5702776 1623576 5701960 -1623576 5701960 1622664 5701568 1621912 5703512 1623888 5702776 -1623840 5702400 1623576 5701960 1623888 5702776 1623944 5702640 -1620552 5714440 1627312 5719640 1627336 5719640 1623888 5702776 -1623888 5702776 1623848 5702776 1621912 5703512 1621952 5703576 -1623888 5702776 1623848 5702776 1621952 5703576 1621976 5703632 -1623848 5702776 1621912 5703512 1621952 5703576 1621976 5703632 -1623888 5702776 1623848 5702776 1621976 5703632 1622032 5703760 -1623888 5702776 1623848 5702776 1622032 5703760 1622032 5703808 -1623888 5702776 1623848 5702776 1622032 5703808 1621968 5703872 -1623848 5702776 1621952 5703576 1621976 5703632 1622032 5703760 -1623848 5702776 1621976 5703632 1622032 5703760 1622032 5703808 -1623888 5702776 1623576 5701960 1623848 5702776 1622032 5703808 -1623848 5702776 1623576 5701960 1621912 5703512 1621952 5703576 -1621912 5703512 1623848 5702776 1623576 5701960 1622664 5701568 -1621912 5703512 1623848 5702776 1622664 5701568 1621824 5703424 -1621912 5703512 1621952 5703576 1623848 5702776 1622664 5701568 -1623848 5702776 1623888 5702776 1623576 5701960 1622664 5701568 -1623576 5701960 1622880 5701536 1622664 5701568 1623848 5702776 -1623576 5701960 1623848 5702776 1623888 5702776 1623840 5702400 -1623848 5702776 1622032 5703808 1623888 5702776 1623840 5702400 -1623576 5701960 1622664 5701568 1623848 5702776 1623840 5702400 -1623888 5702776 1623944 5702640 1623840 5702400 1623848 5702776 -1623888 5702776 1623944 5702640 1623848 5702776 1622032 5703808 -1623840 5702400 1623576 5701960 1623848 5702776 1623944 5702640 -1620512 5714368 1623816 5702824 1621944 5703896 1620160 5713848 -1623888 5702776 1623816 5702824 1620512 5714368 1620552 5714440 -1623888 5702776 1623816 5702824 1620552 5714440 1627336 5719640 -1623888 5702776 1623816 5702824 1627336 5719640 1627384 5719672 -1623816 5702824 1620512 5714368 1620552 5714440 1627336 5719640 -1621944 5703896 1623816 5702824 1623888 5702776 1621968 5703872 -1623888 5702776 1622032 5703808 1621968 5703872 1623816 5702824 -1623888 5702776 1623848 5702776 1622032 5703808 1623816 5702824 -1622032 5703808 1621968 5703872 1623816 5702824 1623848 5702776 -1623848 5702776 1622032 5703760 1622032 5703808 1623816 5702824 -1622032 5703808 1621968 5703872 1623816 5702824 1622032 5703760 -1623848 5702776 1622032 5703760 1623816 5702824 1623888 5702776 -1623848 5702776 1621976 5703632 1622032 5703760 1623816 5702824 -1623848 5702776 1621976 5703632 1623816 5702824 1623888 5702776 -1622032 5703760 1622032 5703808 1623816 5702824 1621976 5703632 -1623848 5702776 1621952 5703576 1621976 5703632 1623816 5702824 -1623848 5702776 1621952 5703576 1623816 5702824 1623888 5702776 -1623848 5702776 1621912 5703512 1621952 5703576 1623816 5702824 -1623848 5702776 1621912 5703512 1623816 5702824 1623888 5702776 -1621952 5703576 1621976 5703632 1623816 5702824 1621912 5703512 -1621976 5703632 1622032 5703760 1623816 5702824 1621952 5703576 -1621968 5703872 1621944 5703896 1623816 5702824 1622032 5703808 -1623848 5702776 1622664 5701568 1621912 5703512 1623816 5702824 -1622664 5701568 1621824 5703424 1621912 5703512 1623816 5702824 -1623848 5702776 1622664 5701568 1623816 5702824 1623888 5702776 -1621912 5703512 1621952 5703576 1623816 5702824 1622664 5701568 -1623888 5702776 1623848 5702776 1623816 5702824 1627336 5719640 -1623816 5702824 1621944 5703896 1620512 5714368 1620552 5714440 -1621944 5703896 1620512 5714368 1623816 5702824 1621968 5703872 -1623848 5702776 1623576 5701960 1622664 5701568 1623816 5702824 -1623848 5702776 1623576 5701960 1623816 5702824 1623888 5702776 -1622664 5701568 1621912 5703512 1623816 5702824 1623576 5701960 -1623848 5702776 1623840 5702400 1623576 5701960 1623816 5702824 -1623848 5702776 1623840 5702400 1623816 5702824 1623888 5702776 -1623576 5701960 1622880 5701536 1622664 5701568 1623816 5702824 -1623576 5701960 1622664 5701568 1623816 5702824 1623840 5702400 -1623848 5702776 1623944 5702640 1623840 5702400 1623816 5702824 -1620552 5714440 1627312 5719640 1627336 5719640 1623816 5702824 -1623816 5702824 1623720 5702872 1622032 5703760 1622032 5703808 -1623816 5702824 1623720 5702872 1622032 5703808 1621968 5703872 -1623720 5702872 1622032 5703760 1622032 5703808 1621968 5703872 -1621976 5703632 1623720 5702872 1623816 5702824 1621952 5703576 -1623816 5702824 1621912 5703512 1621952 5703576 1623720 5702872 -1623816 5702824 1622664 5701568 1621912 5703512 1623720 5702872 -1622664 5701568 1621824 5703424 1621912 5703512 1623720 5702872 -1622664 5701568 1621752 5702000 1621824 5703424 1623720 5702872 -1622664 5701568 1621824 5703424 1623720 5702872 1623816 5702824 -1621912 5703512 1621952 5703576 1623720 5702872 1621824 5703424 -1621952 5703576 1621976 5703632 1623720 5702872 1621912 5703512 -1623816 5702824 1623720 5702872 1621968 5703872 1621944 5703896 -1623720 5702872 1622032 5703808 1621968 5703872 1621944 5703896 -1623816 5702824 1623576 5701960 1622664 5701568 1623720 5702872 -1622664 5701568 1621824 5703424 1623720 5702872 1623576 5701960 -1623816 5702824 1623576 5701960 1623720 5702872 1621944 5703896 -1623816 5702824 1623720 5702872 1621944 5703896 1620512 5714368 -1621944 5703896 1620160 5713848 1620512 5714368 1623720 5702872 -1621944 5703896 1620104 5713768 1620160 5713848 1623720 5702872 -1623720 5702872 1621968 5703872 1621944 5703896 1620160 5713848 -1623816 5702824 1623720 5702872 1620512 5714368 1620552 5714440 -1623816 5702824 1623576 5701960 1623720 5702872 1620512 5714368 -1620512 5714368 1623816 5702824 1623720 5702872 1620160 5713848 -1623720 5702872 1621976 5703632 1622032 5703760 1622032 5703808 -1621976 5703632 1622032 5703760 1623720 5702872 1621952 5703576 -1623576 5701960 1622880 5701536 1622664 5701568 1623720 5702872 -1623816 5702824 1623840 5702400 1623576 5701960 1623720 5702872 -1623576 5701960 1622664 5701568 1623720 5702872 1623840 5702400 -1623816 5702824 1623848 5702776 1623840 5702400 1623720 5702872 -1623816 5702824 1623848 5702776 1623720 5702872 1620512 5714368 -1623840 5702400 1623576 5701960 1623720 5702872 1623848 5702776 -1623848 5702776 1623944 5702640 1623840 5702400 1623720 5702872 -1621824 5703424 1621856 5703472 1621912 5703512 1623720 5702872 -1620160 5713848 1620272 5714120 1620512 5714368 1623720 5702872 -1621824 5703424 1623616 5702904 1623720 5702872 1622664 5701568 -1621824 5703424 1623616 5702904 1622664 5701568 1621752 5702000 -1623616 5702904 1623720 5702872 1622664 5701568 1621752 5702000 -1623720 5702872 1623576 5701960 1622664 5701568 1623616 5702904 -1622664 5701568 1621752 5702000 1623616 5702904 1623576 5701960 -1623720 5702872 1623616 5702904 1621912 5703512 1621952 5703576 -1623720 5702872 1623616 5702904 1621952 5703576 1621976 5703632 -1623616 5702904 1621912 5703512 1621952 5703576 1621976 5703632 -1623720 5702872 1623840 5702400 1623576 5701960 1623616 5702904 -1623576 5701960 1622664 5701568 1623616 5702904 1623840 5702400 -1623616 5702904 1621976 5703632 1623720 5702872 1623840 5702400 -1623720 5702872 1623616 5702904 1621976 5703632 1622032 5703760 -1623616 5702904 1621952 5703576 1621976 5703632 1622032 5703760 -1623720 5702872 1623616 5702904 1622032 5703760 1622032 5703808 -1623720 5702872 1623616 5702904 1622032 5703808 1621968 5703872 -1623720 5702872 1623616 5702904 1621968 5703872 1621944 5703896 -1623616 5702904 1622032 5703808 1621968 5703872 1621944 5703896 -1623720 5702872 1623616 5702904 1621944 5703896 1620160 5713848 -1623616 5702904 1622032 5703760 1622032 5703808 1621968 5703872 -1623720 5702872 1623840 5702400 1623616 5702904 1621944 5703896 -1623616 5702904 1621976 5703632 1622032 5703760 1622032 5703808 -1623616 5702904 1621824 5703424 1621912 5703512 1621952 5703576 -1621824 5703424 1621912 5703512 1623616 5702904 1621752 5702000 -1623576 5701960 1622880 5701536 1622664 5701568 1623616 5702904 -1623720 5702872 1623848 5702776 1623840 5702400 1623616 5702904 -1621912 5703512 1623616 5702904 1621824 5703424 1621856 5703472 -1621824 5703424 1623616 5702904 1621752 5702000 1621744 5703440 -1622664 5701568 1622440 5701576 1621752 5702000 1623616 5702904 -1621752 5702000 1623448 5702888 1623616 5702904 1622664 5701568 -1623616 5702904 1623576 5701960 1622664 5701568 1623448 5702888 -1622664 5701568 1621752 5702000 1623448 5702888 1623576 5701960 -1623616 5702904 1623840 5702400 1623576 5701960 1623448 5702888 -1623576 5701960 1622664 5701568 1623448 5702888 1623840 5702400 -1623616 5702904 1623720 5702872 1623840 5702400 1623448 5702888 -1623616 5702904 1623448 5702888 1621824 5703424 1621912 5703512 -1623616 5702904 1623448 5702888 1621912 5703512 1621952 5703576 -1623616 5702904 1623448 5702888 1621952 5703576 1621976 5703632 -1623616 5702904 1623448 5702888 1621976 5703632 1622032 5703760 -1623448 5702888 1621952 5703576 1621976 5703632 1622032 5703760 -1623616 5702904 1623448 5702888 1622032 5703760 1622032 5703808 -1623448 5702888 1621976 5703632 1622032 5703760 1622032 5703808 -1623616 5702904 1623448 5702888 1622032 5703808 1621968 5703872 -1623448 5702888 1621912 5703512 1621952 5703576 1621976 5703632 -1623448 5702888 1621824 5703424 1621912 5703512 1621952 5703576 -1623448 5702888 1622032 5703808 1623616 5702904 1623840 5702400 -1623448 5702888 1621752 5702000 1621824 5703424 1621912 5703512 -1623576 5701960 1622880 5701536 1622664 5701568 1623448 5702888 -1621824 5703424 1621856 5703472 1621912 5703512 1623448 5702888 -1621824 5703424 1623448 5702888 1621752 5702000 1621744 5703440 -1621752 5702000 1621824 5703424 1623448 5702888 1622664 5701568 -1621752 5702000 1623448 5702888 1622664 5701568 1622440 5701576 -1621752 5702000 1623448 5702888 1622440 5701576 1622216 5701544 -1623448 5702888 1623576 5701960 1622664 5701568 1622440 5701576 -1621752 5702000 1621824 5703424 1623448 5702888 1622440 5701576 -1623448 5702888 1623064 5702776 1621824 5703424 1621912 5703512 -1623448 5702888 1623064 5702776 1621912 5703512 1621952 5703576 -1623448 5702888 1623064 5702776 1621952 5703576 1621976 5703632 -1623448 5702888 1623064 5702776 1621976 5703632 1622032 5703760 -1623448 5702888 1623064 5702776 1622032 5703760 1622032 5703808 -1623064 5702776 1621952 5703576 1621976 5703632 1622032 5703760 -1623064 5702776 1621912 5703512 1621952 5703576 1621976 5703632 -1623064 5702776 1621824 5703424 1621912 5703512 1621952 5703576 -1621824 5703424 1621856 5703472 1621912 5703512 1623064 5702776 -1621824 5703424 1623064 5702776 1621752 5702000 1621744 5703440 -1623448 5702888 1621752 5702000 1623064 5702776 1622032 5703760 -1621752 5702000 1623064 5702776 1623448 5702888 1622440 5701576 -1621752 5702000 1623064 5702776 1622440 5701576 1622216 5701544 -1623064 5702776 1622032 5703760 1623448 5702888 1622440 5701576 -1623064 5702776 1621752 5702000 1621824 5703424 1621912 5703512 -1621752 5702000 1621824 5703424 1623064 5702776 1622440 5701576 -1623448 5702888 1622664 5701568 1622440 5701576 1623064 5702776 -1623448 5702888 1623576 5701960 1622664 5701568 1623064 5702776 -1623448 5702888 1623840 5702400 1623576 5701960 1623064 5702776 -1623576 5701960 1622664 5701568 1623064 5702776 1623840 5702400 -1623448 5702888 1623616 5702904 1623840 5702400 1623064 5702776 -1623576 5701960 1622880 5701536 1622664 5701568 1623064 5702776 -1623576 5701960 1622880 5701536 1623064 5702776 1623840 5702400 -1623576 5701960 1623408 5701720 1622880 5701536 1623064 5702776 -1623576 5701960 1623408 5701720 1623064 5702776 1623840 5702400 -1622880 5701536 1622664 5701568 1623064 5702776 1623408 5701720 -1623408 5701720 1623192 5701576 1622880 5701536 1623064 5702776 -1623192 5701576 1623016 5701528 1622880 5701536 1623064 5702776 -1623408 5701720 1623296 5701624 1623192 5701576 1623064 5702776 -1623408 5701720 1623192 5701576 1623064 5702776 1623576 5701960 -1622880 5701536 1622664 5701568 1623064 5702776 1623192 5701576 -1623448 5702888 1623840 5702400 1623064 5702776 1622032 5703760 -1622440 5701576 1621752 5702000 1623064 5702776 1622664 5701568 -1622664 5701568 1622440 5701576 1623064 5702776 1622880 5701536 -1621824 5703424 1622880 5702712 1621752 5702000 1621744 5703440 -1623064 5702776 1622880 5702712 1621824 5703424 1621912 5703512 -1623064 5702776 1622880 5702712 1621912 5703512 1621952 5703576 -1623064 5702776 1622880 5702712 1621952 5703576 1621976 5703632 -1623064 5702776 1622880 5702712 1621976 5703632 1622032 5703760 -1623064 5702776 1622880 5702712 1622032 5703760 1623448 5702888 -1622880 5702712 1621952 5703576 1621976 5703632 1622032 5703760 -1622880 5702712 1621912 5703512 1621952 5703576 1621976 5703632 -1621824 5703424 1621856 5703472 1621912 5703512 1622880 5702712 -1622880 5702712 1621824 5703424 1621912 5703512 1621952 5703576 -1623064 5702776 1621752 5702000 1622880 5702712 1622032 5703760 -1621752 5702000 1622880 5702712 1623064 5702776 1622440 5701576 -1621752 5702000 1622880 5702712 1622440 5701576 1622216 5701544 -1623064 5702776 1622664 5701568 1622440 5701576 1622880 5702712 -1622880 5702712 1622032 5703760 1623064 5702776 1622664 5701568 -1622440 5701576 1621752 5702000 1622880 5702712 1622664 5701568 -1622880 5702712 1621752 5702000 1621824 5703424 1621912 5703512 -1621752 5702000 1621824 5703424 1622880 5702712 1622440 5701576 -1623064 5702776 1622880 5701536 1622664 5701568 1622880 5702712 -1623064 5702776 1623192 5701576 1622880 5701536 1622880 5702712 -1623192 5701576 1623016 5701528 1622880 5701536 1622880 5702712 -1623064 5702776 1623408 5701720 1623192 5701576 1622880 5702712 -1623408 5701720 1623296 5701624 1623192 5701576 1622880 5702712 -1623064 5702776 1623576 5701960 1623408 5701720 1622880 5702712 -1623064 5702776 1623840 5702400 1623576 5701960 1622880 5702712 -1623192 5701576 1622880 5701536 1622880 5702712 1623408 5701720 -1623408 5701720 1623192 5701576 1622880 5702712 1623576 5701960 -1622664 5701568 1622440 5701576 1622880 5702712 1622880 5701536 -1623064 5702776 1623576 5701960 1622880 5702712 1622032 5703760 -1622880 5701536 1622664 5701568 1622880 5702712 1623192 5701576 -1621824 5703424 1622632 5702592 1621752 5702000 1621744 5703440 -1622880 5702712 1622632 5702592 1621824 5703424 1621912 5703512 -1621824 5703424 1621856 5703472 1621912 5703512 1622632 5702592 -1622880 5702712 1622632 5702592 1621912 5703512 1621952 5703576 -1622880 5702712 1622632 5702592 1621952 5703576 1621976 5703632 -1622632 5702592 1621824 5703424 1621912 5703512 1621952 5703576 -1622880 5702712 1621752 5702000 1622632 5702592 1621952 5703576 -1621752 5702000 1622632 5702592 1622880 5702712 1622440 5701576 -1621752 5702000 1622632 5702592 1622440 5701576 1622216 5701544 -1622880 5702712 1622664 5701568 1622440 5701576 1622632 5702592 -1622880 5702712 1622880 5701536 1622664 5701568 1622632 5702592 -1622664 5701568 1622440 5701576 1622632 5702592 1622880 5701536 -1622632 5702592 1621952 5703576 1622880 5702712 1622880 5701536 -1622440 5701576 1621752 5702000 1622632 5702592 1622664 5701568 -1622632 5702592 1621752 5702000 1621824 5703424 1621912 5703512 -1621752 5702000 1621824 5703424 1622632 5702592 1622440 5701576 -1622880 5702712 1623192 5701576 1622880 5701536 1622632 5702592 -1623192 5701576 1623016 5701528 1622880 5701536 1622632 5702592 -1622880 5702712 1623408 5701720 1623192 5701576 1622632 5702592 -1623408 5701720 1623296 5701624 1623192 5701576 1622632 5702592 -1622880 5702712 1623576 5701960 1623408 5701720 1622632 5702592 -1622880 5701536 1622664 5701568 1622632 5702592 1623192 5701576 -1622880 5702712 1623408 5701720 1622632 5702592 1621952 5703576 -1623192 5701576 1622880 5701536 1622632 5702592 1623408 5701720 -1621752 5702000 1622256 5702336 1622440 5701576 1622216 5701544 -1621752 5702000 1622256 5702336 1622216 5701544 1621816 5701384 -1622440 5701576 1622256 5702336 1622632 5702592 1622664 5701568 -1622632 5702592 1622880 5701536 1622664 5701568 1622256 5702336 -1622256 5702336 1621752 5702000 1622632 5702592 1622664 5701568 -1622632 5702592 1622256 5702336 1621752 5702000 1621824 5703424 -1621752 5702000 1621744 5703440 1621824 5703424 1622256 5702336 -1621752 5702000 1621720 5703464 1621744 5703440 1622256 5702336 -1622632 5702592 1622256 5702336 1621824 5703424 1621912 5703512 -1622632 5702592 1622664 5701568 1622256 5702336 1621824 5703424 -1621824 5703424 1622632 5702592 1622256 5702336 1621744 5703440 -1621752 5702000 1621744 5703440 1622256 5702336 1622216 5701544 -1622256 5702336 1622664 5701568 1622440 5701576 1622216 5701544 -1622256 5702336 1621952 5702272 1621744 5703440 1621824 5703424 -1621744 5703440 1621952 5702272 1621752 5702000 1621720 5703464 -1622256 5702336 1621952 5702272 1621824 5703424 1622632 5702592 -1621752 5702000 1621952 5702272 1622256 5702336 1622216 5701544 -1622256 5702336 1622440 5701576 1622216 5701544 1621952 5702272 -1621752 5702000 1621952 5702272 1622216 5701544 1621816 5701384 -1622256 5702336 1622216 5701544 1621952 5702272 1621824 5703424 -1621952 5702272 1621752 5702000 1621744 5703440 1621824 5703424 -1621752 5702000 1621744 5703440 1621952 5702272 1622216 5701544 -1621752 5702000 1621936 5702248 1622216 5701544 1621816 5701384 -1622216 5701544 1621936 5702248 1621952 5702272 1622256 5702336 -1622216 5701544 1621936 5702248 1622256 5702336 1622440 5701576 -1621936 5702248 1621752 5702000 1621952 5702272 1622256 5702336 -1621952 5702272 1621936 5702248 1621752 5702000 1621744 5703440 -1621752 5702000 1621720 5703464 1621744 5703440 1621936 5702248 -1621952 5702272 1621936 5702248 1621744 5703440 1621824 5703424 -1621952 5702272 1622256 5702336 1621936 5702248 1621744 5703440 -1621936 5702248 1622216 5701544 1621752 5702000 1621744 5703440 -1622216 5701544 1621752 5702000 1621936 5702248 1622256 5702336 -1621744 5703440 1621880 5702208 1621752 5702000 1621720 5703464 -1621752 5702000 1621664 5703552 1621720 5703464 1621880 5702208 -1621936 5702248 1621880 5702208 1621744 5703440 1621952 5702272 -1621744 5703440 1621824 5703424 1621952 5702272 1621880 5702208 -1621752 5702000 1621880 5702208 1621936 5702248 1622216 5701544 -1621752 5702000 1621880 5702208 1622216 5701544 1621816 5701384 -1621936 5702248 1622216 5701544 1621880 5702208 1621952 5702272 -1621936 5702248 1622256 5702336 1622216 5701544 1621880 5702208 -1621744 5703440 1621952 5702272 1621880 5702208 1621720 5703464 -1621880 5702208 1622216 5701544 1621752 5702000 1621720 5703464 -1621720 5703464 1621848 5702168 1621752 5702000 1621664 5703552 -1621880 5702208 1621848 5702168 1621720 5703464 1621744 5703440 -1621880 5702208 1621848 5702168 1621744 5703440 1621952 5702272 -1621880 5702208 1621752 5702000 1621848 5702168 1621744 5703440 -1621752 5702000 1621848 5702168 1621880 5702208 1622216 5701544 -1621752 5702000 1621848 5702168 1622216 5701544 1621816 5701384 -1621880 5702208 1621936 5702248 1622216 5701544 1621848 5702168 -1621936 5702248 1622256 5702336 1622216 5701544 1621848 5702168 -1621848 5702168 1621744 5703440 1621880 5702208 1621936 5702248 -1622216 5701544 1621752 5702000 1621848 5702168 1621936 5702248 -1621848 5702168 1621752 5702000 1621720 5703464 1621744 5703440 -1621752 5702000 1621720 5703464 1621848 5702168 1622216 5701544 -1621712 5701344 1615968 5699848 1610904 5698784 1621576 5701360 -1610904 5698784 1611448 5699192 1621576 5701360 1615968 5699848 -1611448 5699192 1611528 5699256 1621576 5701360 1615968 5699848 -1611448 5699192 1611528 5699256 1615968 5699848 1610904 5698784 -1621576 5701360 1621712 5701344 1615968 5699848 1611528 5699256 -1610904 5698784 1610928 5698816 1611448 5699192 1615968 5699848 -1611528 5699256 1621488 5701424 1621576 5701360 1615968 5699848 -1611528 5699256 1621488 5701424 1615968 5699848 1611448 5699192 -1621576 5701360 1621712 5701344 1615968 5699848 1621488 5701424 -1611528 5699256 1611560 5699312 1621488 5701424 1615968 5699848 -1611528 5699256 1611560 5699312 1615968 5699848 1611448 5699192 -1611560 5699312 1621464 5701464 1621488 5701424 1615968 5699848 -1611560 5699312 1621464 5701464 1615968 5699848 1611528 5699256 -1621488 5701424 1621576 5701360 1615968 5699848 1621464 5701464 -1601624 5681136 1615968 5699848 1621712 5701344 1623016 5701528 -1610904 5698784 1615968 5699848 1601624 5681136 1610848 5698768 -1615968 5699848 1601624 5681136 1610904 5698784 1611448 5699192 -1621712 5701344 1601624 5681136 1615968 5699848 1621576 5701360 -1611560 5699312 1613304 5702872 1621464 5701464 1615968 5699848 -1621464 5701464 1621488 5701424 1615968 5699848 1613304 5702872 -1611560 5699312 1613304 5702872 1615968 5699848 1611528 5699256 -1611560 5699312 1611552 5699400 1613304 5702872 1615968 5699848 -1611560 5699312 1611552 5699400 1615968 5699848 1611528 5699256 -1611552 5699400 1613256 5702848 1613304 5702872 1615968 5699848 -1611552 5699400 1612208 5702072 1613256 5702848 1615968 5699848 -1612208 5702072 1612232 5702104 1613256 5702848 1615968 5699848 -1612232 5702104 1612256 5702160 1613256 5702848 1615968 5699848 -1612208 5702072 1612232 5702104 1615968 5699848 1611552 5699400 -1611552 5699400 1611528 5699488 1612208 5702072 1615968 5699848 -1612208 5702072 1612232 5702104 1615968 5699848 1611528 5699488 -1611528 5699488 1612184 5702056 1612208 5702072 1615968 5699848 -1613256 5702848 1613304 5702872 1615968 5699848 1612232 5702104 -1611552 5699400 1611528 5699488 1615968 5699848 1611560 5699312 -1613304 5702872 1613464 5703016 1621464 5701464 1615968 5699848 -1621464 5701464 1621488 5701424 1615968 5699848 1613464 5703016 -1613464 5703016 1613592 5703136 1621464 5701464 1615968 5699848 -1621464 5701464 1621488 5701424 1615968 5699848 1613592 5703136 -1613592 5703136 1621448 5701528 1621464 5701464 1615968 5699848 -1621464 5701464 1621488 5701424 1615968 5699848 1621448 5701528 -1613592 5703136 1621664 5703552 1621448 5701528 1615968 5699848 -1621664 5703552 1621752 5702000 1621448 5701528 1615968 5699848 -1613592 5703136 1617824 5707096 1621664 5703552 1615968 5699848 -1613592 5703136 1613584 5703232 1617824 5707096 1615968 5699848 -1617824 5707096 1621664 5703600 1621664 5703552 1615968 5699848 -1621664 5703552 1621448 5701528 1615968 5699848 1617824 5707096 -1621448 5701528 1621464 5701464 1615968 5699848 1621664 5703552 -1613464 5703016 1613512 5703064 1613592 5703136 1615968 5699848 -1613592 5703136 1617824 5707096 1615968 5699848 1613464 5703016 -1613304 5702872 1613344 5702912 1613464 5703016 1615968 5699848 -1613464 5703016 1613592 5703136 1615968 5699848 1613304 5702872 -1613304 5702872 1613464 5703016 1615968 5699848 1613256 5702848 -1615968 5699848 1615776 5699960 1612208 5702072 1612232 5702104 -1615968 5699848 1615776 5699960 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1615776 5699960 -1615776 5699960 1612208 5702072 1612232 5702104 1613256 5702848 -1611528 5699488 1615776 5699960 1615968 5699848 1611552 5699400 -1611528 5699488 1612208 5702072 1615776 5699960 1611552 5699400 -1612208 5702072 1615776 5699960 1611528 5699488 1612184 5702056 -1615968 5699848 1611552 5699400 1615776 5699960 1613256 5702848 -1615776 5699960 1611528 5699488 1612208 5702072 1612232 5702104 -1615968 5699848 1615776 5699960 1613256 5702848 1613304 5702872 -1615776 5699960 1612232 5702104 1613256 5702848 1613304 5702872 -1615968 5699848 1611552 5699400 1615776 5699960 1613304 5702872 -1615968 5699848 1611560 5699312 1611552 5699400 1615776 5699960 -1615968 5699848 1611528 5699256 1611560 5699312 1615776 5699960 -1615968 5699848 1611448 5699192 1611528 5699256 1615776 5699960 -1611552 5699400 1611528 5699488 1615776 5699960 1611560 5699312 -1615968 5699848 1611528 5699256 1615776 5699960 1613304 5702872 -1611560 5699312 1611552 5699400 1615776 5699960 1611528 5699256 -1615968 5699848 1615776 5699960 1613304 5702872 1613464 5703016 -1615968 5699848 1611528 5699256 1615776 5699960 1613464 5703016 -1615776 5699960 1613256 5702848 1613304 5702872 1613464 5703016 -1613304 5702872 1613344 5702912 1613464 5703016 1615776 5699960 -1615968 5699848 1615776 5699960 1613464 5703016 1613592 5703136 -1615968 5699848 1611528 5699256 1615776 5699960 1613592 5703136 -1613464 5703016 1613512 5703064 1613592 5703136 1615776 5699960 -1615968 5699848 1615776 5699960 1613592 5703136 1617824 5707096 -1613592 5703136 1613584 5703232 1617824 5707096 1615776 5699960 -1615968 5699848 1615776 5699960 1617824 5707096 1621664 5703552 -1615968 5699848 1611528 5699256 1615776 5699960 1617824 5707096 -1615776 5699960 1613464 5703016 1613592 5703136 1617824 5707096 -1615776 5699960 1613304 5702872 1613464 5703016 1613592 5703136 -1611528 5699488 1615600 5700000 1615776 5699960 1611552 5699400 -1615600 5700000 1612208 5702072 1615776 5699960 1611552 5699400 -1615776 5699960 1611560 5699312 1611552 5699400 1615600 5700000 -1611552 5699400 1611528 5699488 1615600 5700000 1611560 5699312 -1615776 5699960 1611560 5699312 1615600 5700000 1612208 5702072 -1612208 5702072 1615600 5700000 1611528 5699488 1612184 5702056 -1611528 5699488 1612208 5702072 1615600 5700000 1611552 5699400 -1615776 5699960 1615600 5700000 1612208 5702072 1612232 5702104 -1615776 5699960 1615600 5700000 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1615600 5700000 -1615776 5699960 1615600 5700000 1613256 5702848 1613304 5702872 -1615600 5700000 1612232 5702104 1613256 5702848 1613304 5702872 -1615776 5699960 1611560 5699312 1615600 5700000 1613304 5702872 -1615600 5700000 1611528 5699488 1612208 5702072 1612232 5702104 -1615600 5700000 1612208 5702072 1612232 5702104 1613256 5702848 -1615776 5699960 1615600 5700000 1613304 5702872 1613464 5703016 -1615600 5700000 1613256 5702848 1613304 5702872 1613464 5703016 -1615776 5699960 1611560 5699312 1615600 5700000 1613464 5703016 -1615776 5699960 1611528 5699256 1611560 5699312 1615600 5700000 -1615776 5699960 1615968 5699848 1611528 5699256 1615600 5700000 -1615968 5699848 1611448 5699192 1611528 5699256 1615600 5700000 -1615776 5699960 1615968 5699848 1615600 5700000 1613464 5703016 -1611560 5699312 1611552 5699400 1615600 5700000 1611528 5699256 -1611528 5699256 1611560 5699312 1615600 5700000 1615968 5699848 -1613304 5702872 1613344 5702912 1613464 5703016 1615600 5700000 -1615776 5699960 1615600 5700000 1613464 5703016 1613592 5703136 -1615776 5699960 1615968 5699848 1615600 5700000 1613592 5703136 -1613464 5703016 1613512 5703064 1613592 5703136 1615600 5700000 -1615600 5700000 1613304 5702872 1613464 5703016 1613592 5703136 -1615776 5699960 1615600 5700000 1613592 5703136 1617824 5707096 -1615600 5700000 1615392 5700008 1612208 5702072 1612232 5702104 -1612208 5702072 1615392 5700008 1611528 5699488 1612184 5702056 -1615600 5700000 1611528 5699488 1615392 5700008 1612232 5702104 -1611528 5699488 1615392 5700008 1615600 5700000 1611552 5699400 -1615600 5700000 1611560 5699312 1611552 5699400 1615392 5700008 -1615600 5700000 1611528 5699256 1611560 5699312 1615392 5700008 -1611560 5699312 1611552 5699400 1615392 5700008 1611528 5699256 -1615392 5700008 1612232 5702104 1615600 5700000 1611528 5699256 -1611552 5699400 1611528 5699488 1615392 5700008 1611560 5699312 -1615392 5700008 1611528 5699488 1612208 5702072 1612232 5702104 -1611528 5699488 1612208 5702072 1615392 5700008 1611552 5699400 -1615600 5700000 1615392 5700008 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1615392 5700008 -1615600 5700000 1615392 5700008 1613256 5702848 1613304 5702872 -1615600 5700000 1615392 5700008 1613304 5702872 1613464 5703016 -1615392 5700008 1613256 5702848 1613304 5702872 1613464 5703016 -1615392 5700008 1612208 5702072 1612232 5702104 1613256 5702848 -1615600 5700000 1611528 5699256 1615392 5700008 1613464 5703016 -1615392 5700008 1612232 5702104 1613256 5702848 1613304 5702872 -1615600 5700000 1615392 5700008 1613464 5703016 1613592 5703136 -1615392 5700008 1613304 5702872 1613464 5703016 1613592 5703136 -1615600 5700000 1611528 5699256 1615392 5700008 1613592 5703136 -1613464 5703016 1613512 5703064 1613592 5703136 1615392 5700008 -1615600 5700000 1615968 5699848 1611528 5699256 1615392 5700008 -1615968 5699848 1611448 5699192 1611528 5699256 1615392 5700008 -1615968 5699848 1610904 5698784 1611448 5699192 1615392 5700008 -1615600 5700000 1615776 5699960 1615968 5699848 1615392 5700008 -1611528 5699256 1611560 5699312 1615392 5700008 1611448 5699192 -1615600 5700000 1615968 5699848 1615392 5700008 1613592 5703136 -1615968 5699848 1611448 5699192 1615392 5700008 1615600 5700000 -1613304 5702872 1613344 5702912 1613464 5703016 1615392 5700008 -1615600 5700000 1615392 5700008 1613592 5703136 1615776 5699960 -1612208 5702072 1615168 5700080 1611528 5699488 1612184 5702056 -1611528 5699488 1611480 5699576 1612184 5702056 1615168 5700080 -1615392 5700008 1615168 5700080 1612208 5702072 1612232 5702104 -1615392 5700008 1615168 5700080 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1615168 5700080 -1615168 5700080 1612208 5702072 1612232 5702104 1613256 5702848 -1615392 5700008 1611528 5699488 1615168 5700080 1613256 5702848 -1611528 5699488 1615168 5700080 1615392 5700008 1611552 5699400 -1615392 5700008 1611560 5699312 1611552 5699400 1615168 5700080 -1615392 5700008 1611528 5699256 1611560 5699312 1615168 5700080 -1615392 5700008 1611448 5699192 1611528 5699256 1615168 5700080 -1611560 5699312 1611552 5699400 1615168 5700080 1611528 5699256 -1615168 5700080 1613256 5702848 1615392 5700008 1611528 5699256 -1611552 5699400 1611528 5699488 1615168 5700080 1611560 5699312 -1615392 5700008 1615168 5700080 1613256 5702848 1613304 5702872 -1615392 5700008 1615168 5700080 1613304 5702872 1613464 5703016 -1615392 5700008 1615168 5700080 1613464 5703016 1613592 5703136 -1615168 5700080 1613304 5702872 1613464 5703016 1613592 5703136 -1615168 5700080 1612232 5702104 1613256 5702848 1613304 5702872 -1615392 5700008 1611528 5699256 1615168 5700080 1613592 5703136 -1615168 5700080 1613256 5702848 1613304 5702872 1613464 5703016 -1613464 5703016 1613512 5703064 1613592 5703136 1615168 5700080 -1615392 5700008 1615168 5700080 1613592 5703136 1615600 5700000 -1615168 5700080 1613464 5703016 1613592 5703136 1615600 5700000 -1615392 5700008 1611528 5699256 1615168 5700080 1615600 5700000 -1613304 5702872 1613344 5702912 1613464 5703016 1615168 5700080 -1613592 5703136 1615776 5699960 1615600 5700000 1615168 5700080 -1612208 5702072 1612232 5702104 1615168 5700080 1612184 5702056 -1615168 5700080 1611552 5699400 1611528 5699488 1612184 5702056 -1611552 5699400 1615072 5700064 1615168 5700080 1611560 5699312 -1615168 5700080 1611528 5699256 1611560 5699312 1615072 5700064 -1615168 5700080 1615392 5700008 1611528 5699256 1615072 5700064 -1615392 5700008 1611448 5699192 1611528 5699256 1615072 5700064 -1615392 5700008 1615968 5699848 1611448 5699192 1615072 5700064 -1615968 5699848 1610904 5698784 1611448 5699192 1615072 5700064 -1615392 5700008 1615968 5699848 1615072 5700064 1615168 5700080 -1611448 5699192 1611528 5699256 1615072 5700064 1615968 5699848 -1611528 5699256 1611560 5699312 1615072 5700064 1611448 5699192 -1611560 5699312 1611552 5699400 1615072 5700064 1611528 5699256 -1615392 5700008 1615600 5700000 1615968 5699848 1615072 5700064 -1615072 5700064 1611528 5699488 1615168 5700080 1615392 5700008 -1615168 5700080 1615072 5700064 1611528 5699488 1612184 5702056 -1611528 5699488 1611480 5699576 1612184 5702056 1615072 5700064 -1615168 5700080 1615072 5700064 1612184 5702056 1612208 5702072 -1615168 5700080 1615072 5700064 1612208 5702072 1612232 5702104 -1615072 5700064 1612184 5702056 1612208 5702072 1612232 5702104 -1615168 5700080 1615072 5700064 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1615072 5700064 -1615168 5700080 1615072 5700064 1613256 5702848 1613304 5702872 -1615072 5700064 1612232 5702104 1613256 5702848 1613304 5702872 -1615168 5700080 1615072 5700064 1613304 5702872 1613464 5703016 -1615168 5700080 1615072 5700064 1613464 5703016 1613592 5703136 -1615168 5700080 1615072 5700064 1613592 5703136 1615600 5700000 -1615072 5700064 1613256 5702848 1613304 5702872 1613464 5703016 -1615072 5700064 1613304 5702872 1613464 5703016 1613592 5703136 -1613464 5703016 1613512 5703064 1613592 5703136 1615072 5700064 -1613304 5702872 1613344 5702912 1613464 5703016 1615072 5700064 -1615072 5700064 1612208 5702072 1612232 5702104 1613256 5702848 -1615168 5700080 1615392 5700008 1615072 5700064 1613592 5703136 -1615072 5700064 1611528 5699488 1612184 5702056 1612208 5702072 -1615072 5700064 1611552 5699400 1611528 5699488 1612184 5702056 -1611552 5699400 1611528 5699488 1615072 5700064 1611560 5699312 -1615968 5699848 1614856 5699920 1615072 5700064 1615392 5700008 -1611448 5699192 1614856 5699920 1615968 5699848 1610904 5698784 -1611448 5699192 1614856 5699920 1610904 5698784 1610928 5698816 -1615072 5700064 1615168 5700080 1615392 5700008 1614856 5699920 -1615072 5700064 1614856 5699920 1611448 5699192 1611528 5699256 -1615968 5699848 1601624 5681136 1610904 5698784 1614856 5699920 -1615072 5700064 1614856 5699920 1611528 5699256 1611560 5699312 -1614856 5699920 1611448 5699192 1611528 5699256 1611560 5699312 -1615072 5700064 1614856 5699920 1611560 5699312 1611552 5699400 -1614856 5699920 1611528 5699256 1611560 5699312 1611552 5699400 -1615968 5699848 1614856 5699920 1615392 5700008 1615600 5700000 -1614856 5699920 1611552 5699400 1615072 5700064 1615392 5700008 -1615072 5700064 1614856 5699920 1611552 5699400 1611528 5699488 -1614856 5699920 1611560 5699312 1611552 5699400 1611528 5699488 -1615072 5700064 1614856 5699920 1611528 5699488 1612184 5702056 -1611528 5699488 1611480 5699576 1612184 5702056 1614856 5699920 -1611480 5699576 1611440 5699632 1612184 5702056 1614856 5699920 -1615072 5700064 1614856 5699920 1612184 5702056 1612208 5702072 -1615072 5700064 1614856 5699920 1612208 5702072 1612232 5702104 -1615072 5700064 1614856 5699920 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614856 5699920 -1614856 5699920 1612208 5702072 1612232 5702104 1613256 5702848 -1615072 5700064 1614856 5699920 1613256 5702848 1613304 5702872 -1615072 5700064 1614856 5699920 1613304 5702872 1613464 5703016 -1614856 5699920 1612232 5702104 1613256 5702848 1613304 5702872 -1614856 5699920 1612184 5702056 1612208 5702072 1612232 5702104 -1612184 5702056 1612208 5702072 1614856 5699920 1611480 5699576 -1615072 5700064 1615392 5700008 1614856 5699920 1613304 5702872 -1614856 5699920 1611552 5699400 1611528 5699488 1611480 5699576 -1611448 5699192 1611528 5699256 1614856 5699920 1610904 5698784 -1615968 5699848 1610904 5698784 1614856 5699920 1615392 5700008 -1611528 5699256 1614728 5699896 1614856 5699920 1611448 5699192 -1614856 5699920 1614728 5699896 1611560 5699312 1611552 5699400 -1614856 5699920 1614728 5699896 1611552 5699400 1611528 5699488 -1614728 5699896 1611560 5699312 1611552 5699400 1611528 5699488 -1614856 5699920 1614728 5699896 1611528 5699488 1611480 5699576 -1614856 5699920 1614728 5699896 1611480 5699576 1612184 5702056 -1611480 5699576 1611440 5699632 1612184 5702056 1614728 5699896 -1614728 5699896 1611552 5699400 1611528 5699488 1611480 5699576 -1614856 5699920 1614728 5699896 1612184 5702056 1612208 5702072 -1614728 5699896 1611480 5699576 1612184 5702056 1612208 5702072 -1614856 5699920 1614728 5699896 1612208 5702072 1612232 5702104 -1614856 5699920 1614728 5699896 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614728 5699896 -1614856 5699920 1614728 5699896 1613256 5702848 1613304 5702872 -1614728 5699896 1612232 5702104 1613256 5702848 1613304 5702872 -1614856 5699920 1614728 5699896 1613304 5702872 1615072 5700064 -1613304 5702872 1613464 5703016 1615072 5700064 1614728 5699896 -1614728 5699896 1613256 5702848 1613304 5702872 1615072 5700064 -1614728 5699896 1612208 5702072 1612232 5702104 1613256 5702848 -1614728 5699896 1612184 5702056 1612208 5702072 1612232 5702104 -1614728 5699896 1611528 5699488 1611480 5699576 1612184 5702056 -1614856 5699920 1610904 5698784 1611448 5699192 1614728 5699896 -1614856 5699920 1615968 5699848 1610904 5698784 1614728 5699896 -1610904 5698784 1610928 5698816 1611448 5699192 1614728 5699896 -1611448 5699192 1611528 5699256 1614728 5699896 1610904 5698784 -1615968 5699848 1601624 5681136 1610904 5698784 1614728 5699896 -1610904 5698784 1611448 5699192 1614728 5699896 1615968 5699848 -1614728 5699896 1615072 5700064 1614856 5699920 1615968 5699848 -1614856 5699920 1615392 5700008 1615968 5699848 1614728 5699896 -1614728 5699896 1611528 5699256 1611560 5699312 1611552 5699400 -1611528 5699256 1611560 5699312 1614728 5699896 1611448 5699192 -1612184 5702056 1614600 5699912 1611480 5699576 1611440 5699632 -1614728 5699896 1614600 5699912 1612184 5702056 1612208 5702072 -1614728 5699896 1614600 5699912 1612208 5702072 1612232 5702104 -1614600 5699912 1612184 5702056 1612208 5702072 1612232 5702104 -1614728 5699896 1614600 5699912 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614600 5699912 -1614728 5699896 1614600 5699912 1613256 5702848 1613304 5702872 -1614728 5699896 1614600 5699912 1613304 5702872 1615072 5700064 -1613304 5702872 1613464 5703016 1615072 5700064 1614600 5699912 -1614600 5699912 1613256 5702848 1613304 5702872 1615072 5700064 -1614728 5699896 1614600 5699912 1615072 5700064 1614856 5699920 -1614600 5699912 1613304 5702872 1615072 5700064 1614856 5699920 -1614600 5699912 1612232 5702104 1613256 5702848 1613304 5702872 -1614600 5699912 1612208 5702072 1612232 5702104 1613256 5702848 -1611480 5699576 1614600 5699912 1614728 5699896 1611528 5699488 -1614728 5699896 1611552 5699400 1611528 5699488 1614600 5699912 -1614728 5699896 1611560 5699312 1611552 5699400 1614600 5699912 -1611552 5699400 1611528 5699488 1614600 5699912 1611560 5699312 -1611528 5699488 1611480 5699576 1614600 5699912 1611552 5699400 -1614728 5699896 1611528 5699256 1611560 5699312 1614600 5699912 -1611560 5699312 1611552 5699400 1614600 5699912 1611528 5699256 -1614728 5699896 1611528 5699256 1614600 5699912 1614856 5699920 -1614728 5699896 1611448 5699192 1611528 5699256 1614600 5699912 -1614728 5699896 1610904 5698784 1611448 5699192 1614600 5699912 -1610904 5698784 1610928 5698816 1611448 5699192 1614600 5699912 -1614728 5699896 1615968 5699848 1610904 5698784 1614600 5699912 -1611528 5699256 1611560 5699312 1614600 5699912 1611448 5699192 -1614728 5699896 1610904 5698784 1614600 5699912 1614856 5699920 -1611448 5699192 1611528 5699256 1614600 5699912 1610904 5698784 -1614600 5699912 1611480 5699576 1612184 5702056 1612208 5702072 -1611480 5699576 1612184 5702056 1614600 5699912 1611528 5699488 -1612184 5702056 1614280 5699976 1611480 5699576 1611440 5699632 -1612184 5702056 1614280 5699976 1611440 5699632 1611408 5699664 -1614600 5699912 1614280 5699976 1612184 5702056 1612208 5702072 -1614600 5699912 1614280 5699976 1612208 5702072 1612232 5702104 -1614600 5699912 1614280 5699976 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614280 5699976 -1614280 5699976 1612208 5702072 1612232 5702104 1613256 5702848 -1614600 5699912 1614280 5699976 1613256 5702848 1613304 5702872 -1614600 5699912 1614280 5699976 1613304 5702872 1615072 5700064 -1613304 5702872 1613464 5703016 1615072 5700064 1614280 5699976 -1614600 5699912 1614280 5699976 1615072 5700064 1614856 5699920 -1614280 5699976 1613256 5702848 1613304 5702872 1615072 5700064 -1614280 5699976 1612232 5702104 1613256 5702848 1613304 5702872 -1614280 5699976 1612184 5702056 1612208 5702072 1612232 5702104 -1614600 5699912 1611480 5699576 1614280 5699976 1615072 5700064 -1611480 5699576 1614280 5699976 1614600 5699912 1611528 5699488 -1614600 5699912 1611552 5699400 1611528 5699488 1614280 5699976 -1614600 5699912 1611560 5699312 1611552 5699400 1614280 5699976 -1614600 5699912 1611528 5699256 1611560 5699312 1614280 5699976 -1611560 5699312 1611552 5699400 1614280 5699976 1611528 5699256 -1611552 5699400 1611528 5699488 1614280 5699976 1611560 5699312 -1614600 5699912 1611448 5699192 1611528 5699256 1614280 5699976 -1614280 5699976 1615072 5700064 1614600 5699912 1611528 5699256 -1611528 5699488 1611480 5699576 1614280 5699976 1611552 5699400 -1612184 5702056 1612208 5702072 1614280 5699976 1611440 5699632 -1614280 5699976 1611528 5699488 1611480 5699576 1611440 5699632 -1612184 5702056 1614160 5699968 1611440 5699632 1611408 5699664 -1611440 5699632 1614160 5699968 1614280 5699976 1611480 5699576 -1614280 5699976 1614160 5699968 1612184 5702056 1612208 5702072 -1614280 5699976 1614160 5699968 1612208 5702072 1612232 5702104 -1614280 5699976 1614160 5699968 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614160 5699968 -1614280 5699976 1614160 5699968 1613256 5702848 1613304 5702872 -1614160 5699968 1612232 5702104 1613256 5702848 1613304 5702872 -1614280 5699976 1614160 5699968 1613304 5702872 1615072 5700064 -1614160 5699968 1612208 5702072 1612232 5702104 1613256 5702848 -1614160 5699968 1612184 5702056 1612208 5702072 1612232 5702104 -1614160 5699968 1613304 5702872 1614280 5699976 1611480 5699576 -1614280 5699976 1611528 5699488 1611480 5699576 1614160 5699968 -1611480 5699576 1611440 5699632 1614160 5699968 1611528 5699488 -1614280 5699976 1611552 5699400 1611528 5699488 1614160 5699968 -1614280 5699976 1611560 5699312 1611552 5699400 1614160 5699968 -1614280 5699976 1611528 5699256 1611560 5699312 1614160 5699968 -1614280 5699976 1614600 5699912 1611528 5699256 1614160 5699968 -1611528 5699256 1611560 5699312 1614160 5699968 1614600 5699912 -1611560 5699312 1611552 5699400 1614160 5699968 1611528 5699256 -1614600 5699912 1611448 5699192 1611528 5699256 1614160 5699968 -1614600 5699912 1611448 5699192 1614160 5699968 1614280 5699976 -1611528 5699256 1611560 5699312 1614160 5699968 1611448 5699192 -1614600 5699912 1610904 5698784 1611448 5699192 1614160 5699968 -1611552 5699400 1611528 5699488 1614160 5699968 1611560 5699312 -1614280 5699976 1614600 5699912 1614160 5699968 1613304 5702872 -1611528 5699488 1611480 5699576 1614160 5699968 1611552 5699400 -1614160 5699968 1611440 5699632 1612184 5702056 1612208 5702072 -1611440 5699632 1612184 5702056 1614160 5699968 1611480 5699576 -1614600 5699912 1614056 5699912 1614160 5699968 1614280 5699976 -1614160 5699968 1614056 5699912 1611448 5699192 1611528 5699256 -1614160 5699968 1614056 5699912 1611528 5699256 1611560 5699312 -1614160 5699968 1614056 5699912 1611560 5699312 1611552 5699400 -1614056 5699912 1611528 5699256 1611560 5699312 1611552 5699400 -1614056 5699912 1611448 5699192 1611528 5699256 1611560 5699312 -1611448 5699192 1614056 5699912 1614600 5699912 1610904 5698784 -1611448 5699192 1614056 5699912 1610904 5698784 1610928 5698816 -1614600 5699912 1614728 5699896 1610904 5698784 1614056 5699912 -1614728 5699896 1615968 5699848 1610904 5698784 1614056 5699912 -1610904 5698784 1611448 5699192 1614056 5699912 1614728 5699896 -1614160 5699968 1614056 5699912 1611552 5699400 1611528 5699488 -1614056 5699912 1611560 5699312 1611552 5699400 1611528 5699488 -1614160 5699968 1614056 5699912 1611528 5699488 1611480 5699576 -1614160 5699968 1614056 5699912 1611480 5699576 1611440 5699632 -1614056 5699912 1611552 5699400 1611528 5699488 1611480 5699576 -1614056 5699912 1611528 5699488 1611480 5699576 1611440 5699632 -1614056 5699912 1611440 5699632 1614160 5699968 1614280 5699976 -1614160 5699968 1614056 5699912 1611440 5699632 1612184 5702056 -1611440 5699632 1611408 5699664 1612184 5702056 1614056 5699912 -1614056 5699912 1611480 5699576 1611440 5699632 1612184 5702056 -1614160 5699968 1614056 5699912 1612184 5702056 1612208 5702072 -1614160 5699968 1614056 5699912 1612208 5702072 1612232 5702104 -1614160 5699968 1614056 5699912 1612232 5702104 1613256 5702848 -1614056 5699912 1612184 5702056 1612208 5702072 1612232 5702104 -1614160 5699968 1614280 5699976 1614056 5699912 1612232 5702104 -1614056 5699912 1611440 5699632 1612184 5702056 1612208 5702072 -1614056 5699912 1610904 5698784 1611448 5699192 1611528 5699256 -1614600 5699912 1614728 5699896 1614056 5699912 1614280 5699976 -1614728 5699896 1613984 5699832 1614056 5699912 1614600 5699912 -1610904 5698784 1613984 5699832 1614728 5699896 1615968 5699848 -1614728 5699896 1614856 5699920 1615968 5699848 1613984 5699832 -1610904 5698784 1613984 5699832 1615968 5699848 1601624 5681136 -1614056 5699912 1613984 5699832 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613984 5699832 -1614056 5699912 1613984 5699832 1611448 5699192 1611528 5699256 -1614056 5699912 1613984 5699832 1611528 5699256 1611560 5699312 -1614056 5699912 1613984 5699832 1611560 5699312 1611552 5699400 -1614056 5699912 1613984 5699832 1611552 5699400 1611528 5699488 -1613984 5699832 1611560 5699312 1611552 5699400 1611528 5699488 -1613984 5699832 1611528 5699256 1611560 5699312 1611552 5699400 -1613984 5699832 1610904 5698784 1611448 5699192 1611528 5699256 -1614056 5699912 1613984 5699832 1611528 5699488 1611480 5699576 -1613984 5699832 1611552 5699400 1611528 5699488 1611480 5699576 -1614056 5699912 1613984 5699832 1611480 5699576 1611440 5699632 -1614056 5699912 1613984 5699832 1611440 5699632 1612184 5702056 -1611440 5699632 1611408 5699664 1612184 5702056 1613984 5699832 -1613984 5699832 1611528 5699488 1611480 5699576 1611440 5699632 -1613984 5699832 1611480 5699576 1611440 5699632 1612184 5702056 -1614056 5699912 1613984 5699832 1612184 5702056 1612208 5702072 -1613984 5699832 1611448 5699192 1611528 5699256 1611560 5699312 -1613984 5699832 1612184 5702056 1614056 5699912 1614600 5699912 -1614056 5699912 1614280 5699976 1614600 5699912 1613984 5699832 -1614600 5699912 1614728 5699896 1613984 5699832 1614280 5699976 -1614056 5699912 1614160 5699968 1614280 5699976 1613984 5699832 -1614056 5699912 1614280 5699976 1613984 5699832 1612184 5702056 -1610904 5698784 1611448 5699192 1613984 5699832 1615968 5699848 -1614728 5699896 1615968 5699848 1613984 5699832 1614600 5699912 -1610904 5698784 1613896 5699672 1615968 5699848 1601624 5681136 -1615968 5699848 1613896 5699672 1613984 5699832 1614728 5699896 -1615968 5699848 1613896 5699672 1614728 5699896 1614856 5699920 -1615968 5699848 1610904 5698784 1613896 5699672 1614728 5699896 -1613984 5699832 1613896 5699672 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613896 5699672 -1613984 5699832 1613896 5699672 1611448 5699192 1611528 5699256 -1613984 5699832 1613896 5699672 1611528 5699256 1611560 5699312 -1613984 5699832 1613896 5699672 1611560 5699312 1611552 5699400 -1613984 5699832 1613896 5699672 1611552 5699400 1611528 5699488 -1613984 5699832 1613896 5699672 1611528 5699488 1611480 5699576 -1613896 5699672 1611552 5699400 1611528 5699488 1611480 5699576 -1613896 5699672 1611560 5699312 1611552 5699400 1611528 5699488 -1613896 5699672 1611448 5699192 1611528 5699256 1611560 5699312 -1613984 5699832 1613896 5699672 1611480 5699576 1611440 5699632 -1613896 5699672 1611528 5699488 1611480 5699576 1611440 5699632 -1613984 5699832 1613896 5699672 1611440 5699632 1612184 5702056 -1613896 5699672 1611528 5699256 1611560 5699312 1611552 5699400 -1613896 5699672 1610904 5698784 1611448 5699192 1611528 5699256 -1613896 5699672 1611440 5699632 1613984 5699832 1614728 5699896 -1613984 5699832 1614600 5699912 1614728 5699896 1613896 5699672 -1613984 5699832 1614280 5699976 1614600 5699912 1613896 5699672 -1614728 5699896 1615968 5699848 1613896 5699672 1614600 5699912 -1613984 5699832 1614056 5699912 1614280 5699976 1613896 5699672 -1613984 5699832 1614280 5699976 1613896 5699672 1611440 5699632 -1614600 5699912 1614728 5699896 1613896 5699672 1614280 5699976 -1613896 5699672 1615968 5699848 1610904 5698784 1611448 5699192 -1610904 5698784 1613856 5699232 1601624 5681136 1610848 5698768 -1601624 5681136 1601592 5681216 1610848 5698768 1613856 5699232 -1615968 5699848 1613856 5699232 1610904 5698784 1613896 5699672 -1601624 5681136 1613856 5699232 1615968 5699848 1621712 5701344 -1615968 5699848 1613856 5699232 1613896 5699672 1614728 5699896 -1615968 5699848 1613856 5699232 1614728 5699896 1614856 5699920 -1613856 5699232 1610904 5698784 1613896 5699672 1614728 5699896 -1613856 5699232 1613896 5699672 1614728 5699896 1614856 5699920 -1610904 5698784 1613896 5699672 1613856 5699232 1610848 5698768 -1613856 5699232 1615968 5699848 1601624 5681136 1610848 5698768 -1615968 5699848 1601624 5681136 1613856 5699232 1614856 5699920 -1613896 5699672 1614600 5699912 1614728 5699896 1613856 5699232 -1613896 5699672 1614600 5699912 1613856 5699232 1610904 5698784 -1614728 5699896 1614856 5699920 1613856 5699232 1614600 5699912 -1615968 5699848 1613856 5699232 1614856 5699920 1615392 5700008 -1613896 5699672 1614280 5699976 1614600 5699912 1613856 5699232 -1610904 5698784 1611448 5699192 1613896 5699672 1613856 5699232 -1610904 5698784 1610928 5698816 1611448 5699192 1613856 5699232 -1613896 5699672 1614600 5699912 1613856 5699232 1611448 5699192 -1610904 5698784 1611448 5699192 1613856 5699232 1610848 5698768 -1611448 5699192 1611528 5699256 1613896 5699672 1613856 5699232 -1613896 5699672 1614600 5699912 1613856 5699232 1611528 5699256 -1611528 5699256 1611560 5699312 1613896 5699672 1613856 5699232 -1613896 5699672 1614600 5699912 1613856 5699232 1611560 5699312 -1611560 5699312 1611552 5699400 1613896 5699672 1613856 5699232 -1613896 5699672 1614600 5699912 1613856 5699232 1611552 5699400 -1611552 5699400 1611528 5699488 1613896 5699672 1613856 5699232 -1611560 5699312 1611552 5699400 1613856 5699232 1611528 5699256 -1611528 5699256 1611560 5699312 1613856 5699232 1611448 5699192 -1611448 5699192 1611528 5699256 1613856 5699232 1610904 5698784 -1601624 5681136 1613808 5699080 1615968 5699848 1621712 5701344 -1613856 5699232 1613808 5699080 1601624 5681136 1610848 5698768 -1601624 5681136 1601592 5681216 1610848 5698768 1613808 5699080 -1601592 5681216 1602160 5695928 1610848 5698768 1613808 5699080 -1613856 5699232 1613808 5699080 1610848 5698768 1610904 5698784 -1613856 5699232 1613808 5699080 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613808 5699080 -1613808 5699080 1610848 5698768 1610904 5698784 1611448 5699192 -1610848 5698768 1610904 5698784 1613808 5699080 1601592 5681216 -1613856 5699232 1615968 5699848 1613808 5699080 1611448 5699192 -1615968 5699848 1613808 5699080 1613856 5699232 1614856 5699920 -1613856 5699232 1614728 5699896 1614856 5699920 1613808 5699080 -1613856 5699232 1614600 5699912 1614728 5699896 1613808 5699080 -1613808 5699080 1611448 5699192 1613856 5699232 1614728 5699896 -1614856 5699920 1615968 5699848 1613808 5699080 1614728 5699896 -1613808 5699080 1615968 5699848 1601624 5681136 1601592 5681216 -1615968 5699848 1601624 5681136 1613808 5699080 1614856 5699920 -1615968 5699848 1613808 5699080 1614856 5699920 1615392 5700008 -1613856 5699232 1613808 5699080 1611448 5699192 1611528 5699256 -1613808 5699080 1610904 5698784 1611448 5699192 1611528 5699256 -1613856 5699232 1614728 5699896 1613808 5699080 1611528 5699256 -1613856 5699232 1613808 5699080 1611528 5699256 1611560 5699312 -1613856 5699232 1614728 5699896 1613808 5699080 1611560 5699312 -1613856 5699232 1613808 5699080 1611560 5699312 1611552 5699400 -1613856 5699232 1614728 5699896 1613808 5699080 1611552 5699400 -1613856 5699232 1613808 5699080 1611552 5699400 1613896 5699672 -1613808 5699080 1611528 5699256 1611560 5699312 1611552 5699400 -1613808 5699080 1611448 5699192 1611528 5699256 1611560 5699312 -1610848 5698768 1613728 5698992 1601592 5681216 1602160 5695928 -1601592 5681216 1613728 5698992 1613808 5699080 1601624 5681136 -1613808 5699080 1613728 5698992 1610848 5698768 1610904 5698784 -1613808 5699080 1613728 5698992 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613728 5698992 -1613808 5699080 1613728 5698992 1611448 5699192 1611528 5699256 -1613728 5698992 1610904 5698784 1611448 5699192 1611528 5699256 -1613728 5698992 1610848 5698768 1610904 5698784 1611448 5699192 -1613808 5699080 1615968 5699848 1601624 5681136 1613728 5698992 -1601624 5681136 1601592 5681216 1613728 5698992 1615968 5699848 -1615968 5699848 1621712 5701344 1601624 5681136 1613728 5698992 -1613728 5698992 1611528 5699256 1613808 5699080 1615968 5699848 -1613808 5699080 1614856 5699920 1615968 5699848 1613728 5698992 -1613728 5698992 1601592 5681216 1610848 5698768 1610904 5698784 -1601592 5681216 1610848 5698768 1613728 5698992 1601624 5681136 -1613808 5699080 1613728 5698992 1611528 5699256 1611560 5699312 -1613728 5698992 1611448 5699192 1611528 5699256 1611560 5699312 -1613808 5699080 1615968 5699848 1613728 5698992 1611560 5699312 -1613808 5699080 1613728 5698992 1611560 5699312 1611552 5699400 -1613808 5699080 1615968 5699848 1613728 5698992 1611552 5699400 -1613808 5699080 1613728 5698992 1611552 5699400 1613856 5699232 -1613808 5699080 1615968 5699848 1613728 5698992 1613856 5699232 -1611552 5699400 1613896 5699672 1613856 5699232 1613728 5698992 -1611552 5699400 1611528 5699488 1613896 5699672 1613728 5698992 -1613856 5699232 1613808 5699080 1613728 5698992 1613896 5699672 -1613728 5698992 1611560 5699312 1611552 5699400 1613896 5699672 -1613728 5698992 1611528 5699256 1611560 5699312 1611552 5699400 -1610848 5698768 1613656 5698968 1601592 5681216 1602160 5695928 -1613728 5698992 1613656 5698968 1610848 5698768 1610904 5698784 -1613728 5698992 1613656 5698968 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613656 5698968 -1613728 5698992 1613656 5698968 1611448 5699192 1611528 5699256 -1613728 5698992 1613656 5698968 1611528 5699256 1611560 5699312 -1613656 5698968 1611448 5699192 1611528 5699256 1611560 5699312 -1613656 5698968 1610904 5698784 1611448 5699192 1611528 5699256 -1613656 5698968 1610848 5698768 1610904 5698784 1611448 5699192 -1613728 5698992 1601592 5681216 1613656 5698968 1611560 5699312 -1601592 5681216 1613656 5698968 1613728 5698992 1601624 5681136 -1613728 5698992 1615968 5699848 1601624 5681136 1613656 5698968 -1613656 5698968 1611560 5699312 1613728 5698992 1601624 5681136 -1613656 5698968 1601592 5681216 1610848 5698768 1610904 5698784 -1601592 5681216 1610848 5698768 1613656 5698968 1601624 5681136 -1613728 5698992 1613656 5698968 1611560 5699312 1611552 5699400 -1613656 5698968 1611528 5699256 1611560 5699312 1611552 5699400 -1613728 5698992 1601624 5681136 1613656 5698968 1611552 5699400 -1613728 5698992 1613656 5698968 1611552 5699400 1613896 5699672 -1613728 5698992 1601624 5681136 1613656 5698968 1613896 5699672 -1611552 5699400 1611528 5699488 1613896 5699672 1613656 5698968 -1613728 5698992 1613656 5698968 1613896 5699672 1613856 5699232 -1613728 5698992 1601624 5681136 1613656 5698968 1613856 5699232 -1613728 5698992 1613656 5698968 1613856 5699232 1613808 5699080 -1613728 5698992 1601624 5681136 1613656 5698968 1613808 5699080 -1613656 5698968 1613896 5699672 1613856 5699232 1613808 5699080 -1613656 5698968 1611552 5699400 1613896 5699672 1613856 5699232 -1613656 5698968 1611560 5699312 1611552 5699400 1613896 5699672 -1610848 5698768 1613632 5698952 1601592 5681216 1602160 5695928 -1613656 5698968 1613632 5698952 1610848 5698768 1610904 5698784 -1613656 5698968 1613632 5698952 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613632 5698952 -1613656 5698968 1613632 5698952 1611448 5699192 1611528 5699256 -1613656 5698968 1613632 5698952 1611528 5699256 1611560 5699312 -1613656 5698968 1613632 5698952 1611560 5699312 1611552 5699400 -1613632 5698952 1611528 5699256 1611560 5699312 1611552 5699400 -1613632 5698952 1611448 5699192 1611528 5699256 1611560 5699312 -1613632 5698952 1610904 5698784 1611448 5699192 1611528 5699256 -1613632 5698952 1610848 5698768 1610904 5698784 1611448 5699192 -1613656 5698968 1601592 5681216 1613632 5698952 1611552 5699400 -1601592 5681216 1613632 5698952 1613656 5698968 1601624 5681136 -1613656 5698968 1613728 5698992 1601624 5681136 1613632 5698952 -1613728 5698992 1615968 5699848 1601624 5681136 1613632 5698952 -1613632 5698952 1611552 5699400 1613656 5698968 1613728 5698992 -1601624 5681136 1601592 5681216 1613632 5698952 1613728 5698992 -1613632 5698952 1601592 5681216 1610848 5698768 1610904 5698784 -1601592 5681216 1610848 5698768 1613632 5698952 1601624 5681136 -1613656 5698968 1613632 5698952 1611552 5699400 1613896 5699672 -1613632 5698952 1611560 5699312 1611552 5699400 1613896 5699672 -1613656 5698968 1613728 5698992 1613632 5698952 1613896 5699672 -1611552 5699400 1611528 5699488 1613896 5699672 1613632 5698952 -1613656 5698968 1613632 5698952 1613896 5699672 1613856 5699232 -1613656 5698968 1613728 5698992 1613632 5698952 1613856 5699232 -1613656 5698968 1613632 5698952 1613856 5699232 1613808 5699080 -1613632 5698952 1611552 5699400 1613896 5699672 1613856 5699232 -1610848 5698768 1613488 5698888 1601592 5681216 1602160 5695928 -1613632 5698952 1613488 5698888 1610848 5698768 1610904 5698784 -1613632 5698952 1613488 5698888 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613488 5698888 -1613632 5698952 1613488 5698888 1611448 5699192 1611528 5699256 -1613632 5698952 1613488 5698888 1611528 5699256 1611560 5699312 -1613632 5698952 1613488 5698888 1611560 5699312 1611552 5699400 -1613632 5698952 1613488 5698888 1611552 5699400 1613896 5699672 -1613488 5698888 1611560 5699312 1611552 5699400 1613896 5699672 -1613488 5698888 1611528 5699256 1611560 5699312 1611552 5699400 -1613488 5698888 1611448 5699192 1611528 5699256 1611560 5699312 -1613488 5698888 1610904 5698784 1611448 5699192 1611528 5699256 -1613488 5698888 1610848 5698768 1610904 5698784 1611448 5699192 -1613632 5698952 1601592 5681216 1613488 5698888 1613896 5699672 -1601592 5681216 1613488 5698888 1613632 5698952 1601624 5681136 -1613632 5698952 1613728 5698992 1601624 5681136 1613488 5698888 -1613728 5698992 1615968 5699848 1601624 5681136 1613488 5698888 -1613632 5698952 1613656 5698968 1613728 5698992 1613488 5698888 -1613488 5698888 1613896 5699672 1613632 5698952 1613728 5698992 -1601624 5681136 1601592 5681216 1613488 5698888 1613728 5698992 -1613488 5698888 1601592 5681216 1610848 5698768 1610904 5698784 -1601592 5681216 1610848 5698768 1613488 5698888 1601624 5681136 -1611552 5699400 1611528 5699488 1613896 5699672 1613488 5698888 -1611552 5699400 1611528 5699488 1613488 5698888 1611560 5699312 -1611528 5699488 1611480 5699576 1613896 5699672 1613488 5698888 -1613896 5699672 1613632 5698952 1613488 5698888 1611528 5699488 -1613632 5698952 1613488 5698888 1613896 5699672 1613856 5699232 -1613488 5698888 1611528 5699488 1613896 5699672 1613856 5699232 -1613632 5698952 1613728 5698992 1613488 5698888 1613856 5699232 -1613632 5698952 1613488 5698888 1613856 5699232 1613656 5698968 -1610848 5698768 1613440 5698848 1601592 5681216 1602160 5695928 -1613488 5698888 1613440 5698848 1610848 5698768 1610904 5698784 -1613488 5698888 1613440 5698848 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613440 5698848 -1613488 5698888 1613440 5698848 1611448 5699192 1611528 5699256 -1613488 5698888 1613440 5698848 1611528 5699256 1611560 5699312 -1613488 5698888 1613440 5698848 1611560 5699312 1611552 5699400 -1613488 5698888 1613440 5698848 1611552 5699400 1611528 5699488 -1613440 5698848 1611560 5699312 1611552 5699400 1611528 5699488 -1613440 5698848 1611528 5699256 1611560 5699312 1611552 5699400 -1613440 5698848 1611448 5699192 1611528 5699256 1611560 5699312 -1613440 5698848 1610904 5698784 1611448 5699192 1611528 5699256 -1613440 5698848 1610848 5698768 1610904 5698784 1611448 5699192 -1613488 5698888 1601592 5681216 1613440 5698848 1611528 5699488 -1601592 5681216 1613440 5698848 1613488 5698888 1601624 5681136 -1613488 5698888 1613728 5698992 1601624 5681136 1613440 5698848 -1613728 5698992 1615968 5699848 1601624 5681136 1613440 5698848 -1615968 5699848 1621712 5701344 1601624 5681136 1613440 5698848 -1613728 5698992 1613808 5699080 1615968 5699848 1613440 5698848 -1613488 5698888 1613632 5698952 1613728 5698992 1613440 5698848 -1613632 5698952 1613656 5698968 1613728 5698992 1613440 5698848 -1613728 5698992 1615968 5699848 1613440 5698848 1613632 5698952 -1613440 5698848 1611528 5699488 1613488 5698888 1613632 5698952 -1601624 5681136 1601592 5681216 1613440 5698848 1615968 5699848 -1613440 5698848 1601592 5681216 1610848 5698768 1610904 5698784 -1601592 5681216 1610848 5698768 1613440 5698848 1601624 5681136 -1613488 5698888 1613440 5698848 1611528 5699488 1613896 5699672 -1615968 5699848 1613424 5698816 1613440 5698848 1613728 5698992 -1601624 5681136 1613424 5698816 1615968 5699848 1621712 5701344 -1615968 5699848 1613424 5698816 1613728 5698992 1613808 5699080 -1613440 5698848 1613632 5698952 1613728 5698992 1613424 5698816 -1613728 5698992 1615968 5699848 1613424 5698816 1613632 5698952 -1613632 5698952 1613656 5698968 1613728 5698992 1613424 5698816 -1613440 5698848 1613488 5698888 1613632 5698952 1613424 5698816 -1613632 5698952 1613728 5698992 1613424 5698816 1613488 5698888 -1613440 5698848 1613424 5698816 1601624 5681136 1601592 5681216 -1613424 5698816 1601592 5681216 1613440 5698848 1613488 5698888 -1613440 5698848 1613424 5698816 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613424 5698816 -1613424 5698816 1601624 5681136 1601592 5681216 1610848 5698768 -1613440 5698848 1613424 5698816 1610848 5698768 1610904 5698784 -1613440 5698848 1613424 5698816 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613424 5698816 -1613440 5698848 1613424 5698816 1611448 5699192 1611528 5699256 -1613440 5698848 1613424 5698816 1611528 5699256 1611560 5699312 -1613440 5698848 1613424 5698816 1611560 5699312 1611552 5699400 -1613424 5698816 1611448 5699192 1611528 5699256 1611560 5699312 -1613424 5698816 1610904 5698784 1611448 5699192 1611528 5699256 -1613424 5698816 1610848 5698768 1610904 5698784 1611448 5699192 -1613440 5698848 1613488 5698888 1613424 5698816 1611560 5699312 -1613424 5698816 1601592 5681216 1610848 5698768 1610904 5698784 -1613424 5698816 1615968 5699848 1601624 5681136 1601592 5681216 -1615968 5699848 1601624 5681136 1613424 5698816 1613728 5698992 -1601624 5681136 1613400 5698720 1615968 5699848 1621712 5701344 -1613424 5698816 1613400 5698720 1601624 5681136 1601592 5681216 -1613424 5698816 1613400 5698720 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613400 5698720 -1613424 5698816 1613400 5698720 1610848 5698768 1610904 5698784 -1613400 5698720 1601592 5681216 1610848 5698768 1610904 5698784 -1613424 5698816 1613400 5698720 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613400 5698720 -1613424 5698816 1613400 5698720 1611448 5699192 1611528 5699256 -1613424 5698816 1613400 5698720 1611528 5699256 1611560 5699312 -1613424 5698816 1613400 5698720 1611560 5699312 1613440 5698848 -1613400 5698720 1611448 5699192 1611528 5699256 1611560 5699312 -1613400 5698720 1610904 5698784 1611448 5699192 1611528 5699256 -1613400 5698720 1610848 5698768 1610904 5698784 1611448 5699192 -1613400 5698720 1601624 5681136 1601592 5681216 1610848 5698768 -1613424 5698816 1615968 5699848 1613400 5698720 1611560 5699312 -1615968 5699848 1613400 5698720 1613424 5698816 1613728 5698992 -1613424 5698816 1613632 5698952 1613728 5698992 1613400 5698720 -1615968 5699848 1613400 5698720 1613728 5698992 1613808 5699080 -1613632 5698952 1613656 5698968 1613728 5698992 1613400 5698720 -1613424 5698816 1613488 5698888 1613632 5698952 1613400 5698720 -1613632 5698952 1613728 5698992 1613400 5698720 1613488 5698888 -1613424 5698816 1613440 5698848 1613488 5698888 1613400 5698720 -1613400 5698720 1611560 5699312 1613424 5698816 1613488 5698888 -1613728 5698992 1615968 5699848 1613400 5698720 1613632 5698952 -1613400 5698720 1615968 5699848 1601624 5681136 1601592 5681216 -1615968 5699848 1601624 5681136 1613400 5698720 1613728 5698992 -1601624 5681136 1613456 5698608 1615968 5699848 1621712 5701344 -1601624 5681136 1613456 5698608 1621712 5701344 1623016 5701528 -1615968 5699848 1621576 5701360 1621712 5701344 1613456 5698608 -1613400 5698720 1613456 5698608 1601624 5681136 1601592 5681216 -1613400 5698720 1613456 5698608 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613456 5698608 -1613400 5698720 1613456 5698608 1610848 5698768 1610904 5698784 -1613400 5698720 1613456 5698608 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613456 5698608 -1613456 5698608 1610848 5698768 1610904 5698784 1611448 5699192 -1613400 5698720 1613456 5698608 1611448 5699192 1611528 5699256 -1613456 5698608 1601592 5681216 1610848 5698768 1610904 5698784 -1613456 5698608 1601624 5681136 1601592 5681216 1610848 5698768 -1613400 5698720 1615968 5699848 1613456 5698608 1611448 5699192 -1615968 5699848 1613456 5698608 1613400 5698720 1613728 5698992 -1615968 5699848 1613456 5698608 1613728 5698992 1613808 5699080 -1615968 5699848 1613456 5698608 1613808 5699080 1614856 5699920 -1613400 5698720 1613632 5698952 1613728 5698992 1613456 5698608 -1613400 5698720 1613488 5698888 1613632 5698952 1613456 5698608 -1613632 5698952 1613656 5698968 1613728 5698992 1613456 5698608 -1613400 5698720 1613424 5698816 1613488 5698888 1613456 5698608 -1613488 5698888 1613632 5698952 1613456 5698608 1613424 5698816 -1613424 5698816 1613440 5698848 1613488 5698888 1613456 5698608 -1613632 5698952 1613728 5698992 1613456 5698608 1613488 5698888 -1613456 5698608 1611448 5699192 1613400 5698720 1613424 5698816 -1613456 5698608 1613632 5698952 1613728 5698992 1613808 5699080 -1601624 5681136 1601592 5681216 1613456 5698608 1621712 5701344 -1613456 5698608 1613808 5699080 1615968 5699848 1621712 5701344 -1601624 5681136 1613648 5698408 1621712 5701344 1623016 5701528 -1601624 5681136 1613648 5698408 1623016 5701528 1623192 5701576 -1621712 5701344 1613648 5698408 1613456 5698608 1615968 5699848 -1621712 5701344 1613648 5698408 1615968 5699848 1621576 5701360 -1621712 5701344 1622880 5701536 1623016 5701528 1613648 5698408 -1601624 5681136 1613456 5698608 1613648 5698408 1623016 5701528 -1613648 5698408 1615968 5699848 1621712 5701344 1623016 5701528 -1613456 5698608 1613648 5698408 1601624 5681136 1601592 5681216 -1613648 5698408 1623016 5701528 1601624 5681136 1601592 5681216 -1613456 5698608 1613648 5698408 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613648 5698408 -1613456 5698608 1613648 5698408 1610848 5698768 1610904 5698784 -1613456 5698608 1613648 5698408 1610904 5698784 1611448 5699192 -1613648 5698408 1601592 5681216 1610848 5698768 1610904 5698784 -1613648 5698408 1601624 5681136 1601592 5681216 1610848 5698768 -1613648 5698408 1610904 5698784 1613456 5698608 1615968 5699848 -1613456 5698608 1613808 5699080 1615968 5699848 1613648 5698408 -1615968 5699848 1621712 5701344 1613648 5698408 1613808 5699080 -1613456 5698608 1613728 5698992 1613808 5699080 1613648 5698408 -1613808 5699080 1614856 5699920 1615968 5699848 1613648 5698408 -1615968 5699848 1621712 5701344 1613648 5698408 1614856 5699920 -1613808 5699080 1614728 5699896 1614856 5699920 1613648 5698408 -1613456 5698608 1613632 5698952 1613728 5698992 1613648 5698408 -1613728 5698992 1613808 5699080 1613648 5698408 1613632 5698952 -1613632 5698952 1613656 5698968 1613728 5698992 1613648 5698408 -1613456 5698608 1613488 5698888 1613632 5698952 1613648 5698408 -1613456 5698608 1613632 5698952 1613648 5698408 1610904 5698784 -1613808 5699080 1614856 5699920 1613648 5698408 1613728 5698992 -1614856 5699920 1615392 5700008 1615968 5699848 1613648 5698408 -1601624 5681136 1613656 5698376 1623016 5701528 1623192 5701576 -1623016 5701528 1613656 5698376 1613648 5698408 1621712 5701344 -1623016 5701528 1613656 5698376 1621712 5701344 1622880 5701536 -1613648 5698408 1613656 5698376 1601624 5681136 1601592 5681216 -1613656 5698376 1601592 5681216 1613648 5698408 1621712 5701344 -1613648 5698408 1615968 5699848 1621712 5701344 1613656 5698376 -1621712 5701344 1623016 5701528 1613656 5698376 1615968 5699848 -1613648 5698408 1614856 5699920 1615968 5699848 1613656 5698376 -1615968 5699848 1621576 5701360 1621712 5701344 1613656 5698376 -1613648 5698408 1614856 5699920 1613656 5698376 1601592 5681216 -1615968 5699848 1621712 5701344 1613656 5698376 1614856 5699920 -1613656 5698376 1623016 5701528 1601624 5681136 1601592 5681216 -1623016 5701528 1601624 5681136 1613656 5698376 1621712 5701344 -1613648 5698408 1613808 5699080 1614856 5699920 1613656 5698376 -1614856 5699920 1615968 5699848 1613656 5698376 1613808 5699080 -1613648 5698408 1613808 5699080 1613656 5698376 1601592 5681216 -1613808 5699080 1614728 5699896 1614856 5699920 1613656 5698376 -1613648 5698408 1613656 5698376 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613656 5698376 -1613656 5698376 1601624 5681136 1601592 5681216 1610848 5698768 -1613648 5698408 1613808 5699080 1613656 5698376 1610848 5698768 -1613648 5698408 1613656 5698376 1610848 5698768 1610904 5698784 -1613648 5698408 1613808 5699080 1613656 5698376 1610904 5698784 -1613648 5698408 1613656 5698376 1610904 5698784 1613456 5698608 -1613648 5698408 1613808 5699080 1613656 5698376 1613456 5698608 -1610904 5698784 1611448 5699192 1613456 5698608 1613656 5698376 -1613656 5698376 1610848 5698768 1610904 5698784 1613456 5698608 -1613656 5698376 1601592 5681216 1610848 5698768 1610904 5698784 -1613648 5698408 1613728 5698992 1613808 5699080 1613656 5698376 -1614856 5699920 1615392 5700008 1615968 5699848 1613656 5698376 -1601624 5681136 1613704 5698312 1623016 5701528 1623192 5701576 -1613656 5698376 1613704 5698312 1601624 5681136 1601592 5681216 -1613656 5698376 1613704 5698312 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613704 5698312 -1613704 5698312 1601624 5681136 1601592 5681216 1610848 5698768 -1613656 5698376 1623016 5701528 1613704 5698312 1610848 5698768 -1623016 5701528 1613704 5698312 1613656 5698376 1621712 5701344 -1613656 5698376 1615968 5699848 1621712 5701344 1613704 5698312 -1615968 5699848 1621576 5701360 1621712 5701344 1613704 5698312 -1623016 5701528 1613704 5698312 1621712 5701344 1622880 5701536 -1613656 5698376 1614856 5699920 1615968 5699848 1613704 5698312 -1615968 5699848 1621712 5701344 1613704 5698312 1614856 5699920 -1613656 5698376 1613808 5699080 1614856 5699920 1613704 5698312 -1614856 5699920 1615968 5699848 1613704 5698312 1613808 5699080 -1613704 5698312 1610848 5698768 1613656 5698376 1613808 5699080 -1621712 5701344 1623016 5701528 1613704 5698312 1615968 5699848 -1613704 5698312 1623016 5701528 1601624 5681136 1601592 5681216 -1623016 5701528 1601624 5681136 1613704 5698312 1621712 5701344 -1613808 5699080 1614728 5699896 1614856 5699920 1613704 5698312 -1613656 5698376 1613648 5698408 1613808 5699080 1613704 5698312 -1613808 5699080 1614856 5699920 1613704 5698312 1613648 5698408 -1613656 5698376 1613648 5698408 1613704 5698312 1610848 5698768 -1613656 5698376 1613704 5698312 1610848 5698768 1610904 5698784 -1613704 5698312 1601592 5681216 1610848 5698768 1610904 5698784 -1613656 5698376 1613648 5698408 1613704 5698312 1610904 5698784 -1613656 5698376 1613704 5698312 1610904 5698784 1613456 5698608 -1613648 5698408 1613728 5698992 1613808 5699080 1613704 5698312 -1613808 5699080 1614856 5699920 1613704 5698312 1613728 5698992 -1613648 5698408 1613632 5698952 1613728 5698992 1613704 5698312 -1613648 5698408 1613728 5698992 1613704 5698312 1613656 5698376 -1614856 5699920 1615392 5700008 1615968 5699848 1613704 5698312 -1601624 5681136 1613736 5698080 1623016 5701528 1623192 5701576 -1613704 5698312 1613736 5698080 1601624 5681136 1601592 5681216 -1613704 5698312 1613736 5698080 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613736 5698080 -1613704 5698312 1613736 5698080 1610848 5698768 1610904 5698784 -1613736 5698080 1601592 5681216 1610848 5698768 1610904 5698784 -1613736 5698080 1601624 5681136 1601592 5681216 1610848 5698768 -1613704 5698312 1623016 5701528 1613736 5698080 1610904 5698784 -1623016 5701528 1613736 5698080 1613704 5698312 1621712 5701344 -1623016 5701528 1613736 5698080 1621712 5701344 1622880 5701536 -1613704 5698312 1615968 5699848 1621712 5701344 1613736 5698080 -1613704 5698312 1614856 5699920 1615968 5699848 1613736 5698080 -1615968 5699848 1621576 5701360 1621712 5701344 1613736 5698080 -1613704 5698312 1613808 5699080 1614856 5699920 1613736 5698080 -1615968 5699848 1621712 5701344 1613736 5698080 1614856 5699920 -1613736 5698080 1610904 5698784 1613704 5698312 1614856 5699920 -1621712 5701344 1623016 5701528 1613736 5698080 1615968 5699848 -1613736 5698080 1623016 5701528 1601624 5681136 1601592 5681216 -1623016 5701528 1601624 5681136 1613736 5698080 1621712 5701344 -1613704 5698312 1613736 5698080 1610904 5698784 1613656 5698376 -1613736 5698080 1610848 5698768 1610904 5698784 1613656 5698376 -1613704 5698312 1614856 5699920 1613736 5698080 1613656 5698376 -1610904 5698784 1613456 5698608 1613656 5698376 1613736 5698080 -1610904 5698784 1613456 5698608 1613736 5698080 1610848 5698768 -1610904 5698784 1611448 5699192 1613456 5698608 1613736 5698080 -1613456 5698608 1613648 5698408 1613656 5698376 1613736 5698080 -1613656 5698376 1613704 5698312 1613736 5698080 1613456 5698608 -1614856 5699920 1615392 5700008 1615968 5699848 1613736 5698080 -1601624 5681136 1613728 5697776 1623016 5701528 1623192 5701576 -1613736 5698080 1613728 5697776 1601624 5681136 1601592 5681216 -1613736 5698080 1613728 5697776 1601592 5681216 1610848 5698768 -1601592 5681216 1602160 5695928 1610848 5698768 1613728 5697776 -1601592 5681216 1601128 5681664 1602160 5695928 1613728 5697776 -1602160 5695928 1610784 5698784 1610848 5698768 1613728 5697776 -1613736 5698080 1613728 5697776 1610848 5698768 1610904 5698784 -1613736 5698080 1613728 5697776 1610904 5698784 1613456 5698608 -1613728 5697776 1610848 5698768 1610904 5698784 1613456 5698608 -1610848 5698768 1610904 5698784 1613728 5697776 1602160 5695928 -1613728 5697776 1601624 5681136 1601592 5681216 1602160 5695928 -1613736 5698080 1623016 5701528 1613728 5697776 1613456 5698608 -1623016 5701528 1613728 5697776 1613736 5698080 1621712 5701344 -1623016 5701528 1613728 5697776 1621712 5701344 1622880 5701536 -1613736 5698080 1615968 5699848 1621712 5701344 1613728 5697776 -1615968 5699848 1621576 5701360 1621712 5701344 1613728 5697776 -1613736 5698080 1614856 5699920 1615968 5699848 1613728 5697776 -1613728 5697776 1613456 5698608 1613736 5698080 1615968 5699848 -1621712 5701344 1623016 5701528 1613728 5697776 1615968 5699848 -1613728 5697776 1623016 5701528 1601624 5681136 1601592 5681216 -1623016 5701528 1601624 5681136 1613728 5697776 1621712 5701344 -1610904 5698784 1611448 5699192 1613456 5698608 1613728 5697776 -1613736 5698080 1613728 5697776 1613456 5698608 1613656 5698376 -1601624 5681136 1613696 5697608 1623016 5701528 1623192 5701576 -1613728 5697776 1613696 5697608 1601624 5681136 1601592 5681216 -1613728 5697776 1613696 5697608 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1613696 5697608 -1613728 5697776 1613696 5697608 1602160 5695928 1610848 5698768 -1602160 5695928 1610784 5698784 1610848 5698768 1613696 5697608 -1613728 5697776 1613696 5697608 1610848 5698768 1610904 5698784 -1613696 5697608 1602160 5695928 1610848 5698768 1610904 5698784 -1613728 5697776 1613696 5697608 1610904 5698784 1613456 5698608 -1613728 5697776 1613696 5697608 1613456 5698608 1613736 5698080 -1613696 5697608 1610848 5698768 1610904 5698784 1613456 5698608 -1613696 5697608 1601592 5681216 1602160 5695928 1610848 5698768 -1613696 5697608 1601624 5681136 1601592 5681216 1602160 5695928 -1613728 5697776 1623016 5701528 1613696 5697608 1613456 5698608 -1623016 5701528 1613696 5697608 1613728 5697776 1621712 5701344 -1623016 5701528 1613696 5697608 1621712 5701344 1622880 5701536 -1613728 5697776 1615968 5699848 1621712 5701344 1613696 5697608 -1615968 5699848 1621576 5701360 1621712 5701344 1613696 5697608 -1613728 5697776 1613736 5698080 1615968 5699848 1613696 5697608 -1613696 5697608 1613456 5698608 1613728 5697776 1615968 5699848 -1621712 5701344 1623016 5701528 1613696 5697608 1615968 5699848 -1613696 5697608 1623016 5701528 1601624 5681136 1601592 5681216 -1623016 5701528 1601624 5681136 1613696 5697608 1621712 5701344 -1610904 5698784 1611448 5699192 1613456 5698608 1613696 5697608 -1610904 5698784 1610928 5698816 1611448 5699192 1613696 5697608 -1613456 5698608 1613728 5697776 1613696 5697608 1611448 5699192 -1610904 5698784 1611448 5699192 1613696 5697608 1610848 5698768 -1611448 5699192 1613400 5698720 1613456 5698608 1613696 5697608 -1601624 5681136 1613640 5697488 1623016 5701528 1623192 5701576 -1613696 5697608 1613640 5697488 1601624 5681136 1601592 5681216 -1613696 5697608 1613640 5697488 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1613640 5697488 -1613696 5697608 1613640 5697488 1602160 5695928 1610848 5698768 -1602160 5695928 1610784 5698784 1610848 5698768 1613640 5697488 -1613696 5697608 1613640 5697488 1610848 5698768 1610904 5698784 -1613696 5697608 1613640 5697488 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613640 5697488 -1613640 5697488 1610848 5698768 1610904 5698784 1611448 5699192 -1610848 5698768 1610904 5698784 1613640 5697488 1610784 5698784 -1613640 5697488 1601592 5681216 1602160 5695928 1610784 5698784 -1613640 5697488 1623016 5701528 1601624 5681136 1601592 5681216 -1602160 5695928 1608624 5699288 1610784 5698784 1613640 5697488 -1613640 5697488 1601624 5681136 1601592 5681216 1602160 5695928 -1613696 5697608 1623016 5701528 1613640 5697488 1611448 5699192 -1623016 5701528 1613640 5697488 1613696 5697608 1621712 5701344 -1623016 5701528 1613640 5697488 1621712 5701344 1622880 5701536 -1613696 5697608 1615968 5699848 1621712 5701344 1613640 5697488 -1615968 5699848 1621576 5701360 1621712 5701344 1613640 5697488 -1613696 5697608 1613728 5697776 1615968 5699848 1613640 5697488 -1623016 5701528 1601624 5681136 1613640 5697488 1621712 5701344 -1613640 5697488 1611448 5699192 1613696 5697608 1615968 5699848 -1621712 5701344 1623016 5701528 1613640 5697488 1615968 5699848 -1613696 5697608 1613640 5697488 1611448 5699192 1613456 5698608 -1613696 5697608 1613640 5697488 1613456 5698608 1613728 5697776 -1613456 5698608 1613736 5698080 1613728 5697776 1613640 5697488 -1613640 5697488 1610904 5698784 1611448 5699192 1613456 5698608 -1613696 5697608 1615968 5699848 1613640 5697488 1613728 5697776 -1613640 5697488 1611448 5699192 1613456 5698608 1613728 5697776 -1611448 5699192 1613400 5698720 1613456 5698608 1613640 5697488 -1602160 5695928 1613528 5697360 1601592 5681216 1601128 5681664 -1613640 5697488 1613528 5697360 1602160 5695928 1610784 5698784 -1613640 5697488 1613528 5697360 1610784 5698784 1610848 5698768 -1613640 5697488 1613528 5697360 1610848 5698768 1610904 5698784 -1613528 5697360 1610784 5698784 1610848 5698768 1610904 5698784 -1613640 5697488 1613528 5697360 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613528 5697360 -1613640 5697488 1613528 5697360 1611448 5699192 1613456 5698608 -1613528 5697360 1610904 5698784 1611448 5699192 1613456 5698608 -1613528 5697360 1610848 5698768 1610904 5698784 1611448 5699192 -1613528 5697360 1602160 5695928 1610784 5698784 1610848 5698768 -1613640 5697488 1601592 5681216 1613528 5697360 1613456 5698608 -1613528 5697360 1601592 5681216 1602160 5695928 1610784 5698784 -1602160 5695928 1608624 5699288 1610784 5698784 1613528 5697360 -1601592 5681216 1613528 5697360 1613640 5697488 1601624 5681136 -1613640 5697488 1623016 5701528 1601624 5681136 1613528 5697360 -1623016 5701528 1623192 5701576 1601624 5681136 1613528 5697360 -1613528 5697360 1613456 5698608 1613640 5697488 1623016 5701528 -1613640 5697488 1621712 5701344 1623016 5701528 1613528 5697360 -1621712 5701344 1622880 5701536 1623016 5701528 1613528 5697360 -1623016 5701528 1601624 5681136 1613528 5697360 1621712 5701344 -1613640 5697488 1621712 5701344 1613528 5697360 1613456 5698608 -1601592 5681216 1602160 5695928 1613528 5697360 1601624 5681136 -1601624 5681136 1601592 5681216 1613528 5697360 1623016 5701528 -1613640 5697488 1615968 5699848 1621712 5701344 1613528 5697360 -1613640 5697488 1613528 5697360 1613456 5698608 1613728 5697776 -1613456 5698608 1613736 5698080 1613728 5697776 1613528 5697360 -1613640 5697488 1613528 5697360 1613728 5697776 1613696 5697608 -1613528 5697360 1611448 5699192 1613456 5698608 1613728 5697776 -1613640 5697488 1621712 5701344 1613528 5697360 1613696 5697608 -1613528 5697360 1613456 5698608 1613728 5697776 1613696 5697608 -1611448 5699192 1613400 5698720 1613456 5698608 1613528 5697360 -1602160 5695928 1613312 5697192 1601592 5681216 1601128 5681664 -1613528 5697360 1613312 5697192 1602160 5695928 1610784 5698784 -1613528 5697360 1613312 5697192 1610784 5698784 1610848 5698768 -1613528 5697360 1613312 5697192 1610848 5698768 1610904 5698784 -1613528 5697360 1613312 5697192 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613312 5697192 -1613312 5697192 1610848 5698768 1610904 5698784 1611448 5699192 -1613528 5697360 1613312 5697192 1611448 5699192 1613456 5698608 -1613528 5697360 1613312 5697192 1613456 5698608 1613728 5697776 -1613312 5697192 1611448 5699192 1613456 5698608 1613728 5697776 -1613456 5698608 1613736 5698080 1613728 5697776 1613312 5697192 -1613456 5698608 1613736 5698080 1613312 5697192 1611448 5699192 -1613728 5697776 1613528 5697360 1613312 5697192 1613736 5698080 -1613312 5697192 1610904 5698784 1611448 5699192 1613456 5698608 -1613312 5697192 1610784 5698784 1610848 5698768 1610904 5698784 -1613312 5697192 1602160 5695928 1610784 5698784 1610848 5698768 -1613528 5697360 1601592 5681216 1613312 5697192 1613728 5697776 -1601592 5681216 1613312 5697192 1613528 5697360 1601624 5681136 -1613312 5697192 1613728 5697776 1613528 5697360 1601624 5681136 -1613312 5697192 1601592 5681216 1602160 5695928 1610784 5698784 -1601592 5681216 1602160 5695928 1613312 5697192 1601624 5681136 -1602160 5695928 1608624 5699288 1610784 5698784 1613312 5697192 -1613528 5697360 1623016 5701528 1601624 5681136 1613312 5697192 -1623016 5701528 1623192 5701576 1601624 5681136 1613312 5697192 -1613528 5697360 1621712 5701344 1623016 5701528 1613312 5697192 -1613528 5697360 1623016 5701528 1613312 5697192 1613728 5697776 -1601624 5681136 1601592 5681216 1613312 5697192 1623016 5701528 -1613528 5697360 1613312 5697192 1613728 5697776 1613696 5697608 -1611448 5699192 1613400 5698720 1613456 5698608 1613312 5697192 -1613456 5698608 1613656 5698376 1613736 5698080 1613312 5697192 -1602160 5695928 1613072 5696952 1601592 5681216 1601128 5681664 -1613312 5697192 1613072 5696952 1602160 5695928 1610784 5698784 -1613312 5697192 1613072 5696952 1610784 5698784 1610848 5698768 -1613312 5697192 1613072 5696952 1610848 5698768 1610904 5698784 -1613312 5697192 1613072 5696952 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613072 5696952 -1613312 5697192 1613072 5696952 1611448 5699192 1613456 5698608 -1613072 5696952 1610904 5698784 1611448 5699192 1613456 5698608 -1613312 5697192 1613072 5696952 1613456 5698608 1613736 5698080 -1613072 5696952 1610848 5698768 1610904 5698784 1611448 5699192 -1613072 5696952 1610784 5698784 1610848 5698768 1610904 5698784 -1613072 5696952 1602160 5695928 1610784 5698784 1610848 5698768 -1613312 5697192 1601592 5681216 1613072 5696952 1613456 5698608 -1601592 5681216 1613072 5696952 1613312 5697192 1601624 5681136 -1613312 5697192 1623016 5701528 1601624 5681136 1613072 5696952 -1623016 5701528 1623192 5701576 1601624 5681136 1613072 5696952 -1613072 5696952 1613456 5698608 1613312 5697192 1623016 5701528 -1601624 5681136 1601592 5681216 1613072 5696952 1623016 5701528 -1601592 5681216 1602160 5695928 1613072 5696952 1601624 5681136 -1613072 5696952 1601592 5681216 1602160 5695928 1610784 5698784 -1602160 5695928 1608624 5699288 1610784 5698784 1613072 5696952 -1602160 5695928 1602200 5696008 1608624 5699288 1613072 5696952 -1608624 5699288 1610736 5698824 1610784 5698784 1613072 5696952 -1610784 5698784 1610848 5698768 1613072 5696952 1608624 5699288 -1602160 5695928 1608624 5699288 1613072 5696952 1601592 5681216 -1613312 5697192 1613528 5697360 1623016 5701528 1613072 5696952 -1613528 5697360 1621712 5701344 1623016 5701528 1613072 5696952 -1623016 5701528 1601624 5681136 1613072 5696952 1613528 5697360 -1613312 5697192 1613528 5697360 1613072 5696952 1613456 5698608 -1611448 5699192 1613400 5698720 1613456 5698608 1613072 5696952 -1602160 5695928 1613008 5696896 1601592 5681216 1601128 5681664 -1601592 5681216 1613008 5696896 1613072 5696952 1601624 5681136 -1601592 5681216 1602160 5695928 1613008 5696896 1601624 5681136 -1613072 5696952 1623016 5701528 1601624 5681136 1613008 5696896 -1623016 5701528 1623192 5701576 1601624 5681136 1613008 5696896 -1613072 5696952 1613528 5697360 1623016 5701528 1613008 5696896 -1613008 5696896 1602160 5695928 1613072 5696952 1623016 5701528 -1601624 5681136 1601592 5681216 1613008 5696896 1623016 5701528 -1613072 5696952 1613008 5696896 1602160 5695928 1608624 5699288 -1602160 5695928 1602200 5696008 1608624 5699288 1613008 5696896 -1613072 5696952 1623016 5701528 1613008 5696896 1608624 5699288 -1613008 5696896 1601592 5681216 1602160 5695928 1608624 5699288 -1613072 5696952 1613008 5696896 1608624 5699288 1610784 5698784 -1613008 5696896 1602160 5695928 1608624 5699288 1610784 5698784 -1608624 5699288 1610736 5698824 1610784 5698784 1613008 5696896 -1613072 5696952 1613008 5696896 1610784 5698784 1610848 5698768 -1613072 5696952 1613008 5696896 1610848 5698768 1610904 5698784 -1613072 5696952 1613008 5696896 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1613008 5696896 -1613072 5696952 1613008 5696896 1611448 5699192 1613456 5698608 -1613008 5696896 1610848 5698768 1610904 5698784 1611448 5699192 -1613008 5696896 1610784 5698784 1610848 5698768 1610904 5698784 -1613072 5696952 1623016 5701528 1613008 5696896 1611448 5699192 -1613008 5696896 1608624 5699288 1610784 5698784 1610848 5698768 -1602160 5695928 1612840 5696712 1601592 5681216 1601128 5681664 -1601592 5681216 1612840 5696712 1613008 5696896 1601624 5681136 -1612840 5696712 1602160 5695928 1613008 5696896 1601624 5681136 -1601592 5681216 1602160 5695928 1612840 5696712 1601624 5681136 -1613008 5696896 1623016 5701528 1601624 5681136 1612840 5696712 -1623016 5701528 1623192 5701576 1601624 5681136 1612840 5696712 -1601624 5681136 1601592 5681216 1612840 5696712 1623016 5701528 -1613008 5696896 1623016 5701528 1612840 5696712 1602160 5695928 -1613008 5696896 1613072 5696952 1623016 5701528 1612840 5696712 -1613008 5696896 1613072 5696952 1612840 5696712 1602160 5695928 -1613072 5696952 1613528 5697360 1623016 5701528 1612840 5696712 -1613528 5697360 1621712 5701344 1623016 5701528 1612840 5696712 -1621712 5701344 1622880 5701536 1623016 5701528 1612840 5696712 -1613528 5697360 1613640 5697488 1621712 5701344 1612840 5696712 -1613528 5697360 1621712 5701344 1612840 5696712 1613072 5696952 -1613072 5696952 1613528 5697360 1612840 5696712 1613008 5696896 -1623016 5701528 1601624 5681136 1612840 5696712 1621712 5701344 -1613008 5696896 1612840 5696712 1602160 5695928 1608624 5699288 -1602160 5695928 1602200 5696008 1608624 5699288 1612840 5696712 -1613008 5696896 1612840 5696712 1608624 5699288 1610784 5698784 -1613008 5696896 1613072 5696952 1612840 5696712 1610784 5698784 -1612840 5696712 1601592 5681216 1602160 5695928 1608624 5699288 -1608624 5699288 1610736 5698824 1610784 5698784 1612840 5696712 -1612840 5696712 1602160 5695928 1608624 5699288 1610784 5698784 -1613008 5696896 1612840 5696712 1610784 5698784 1610848 5698768 -1612840 5696712 1608624 5699288 1610784 5698784 1610848 5698768 -1613008 5696896 1613072 5696952 1612840 5696712 1610848 5698768 -1613008 5696896 1612840 5696712 1610848 5698768 1610904 5698784 -1613008 5696896 1613072 5696952 1612840 5696712 1610904 5698784 -1613008 5696896 1612840 5696712 1610904 5698784 1611448 5699192 -1612840 5696712 1610784 5698784 1610848 5698768 1610904 5698784 -1613072 5696952 1613312 5697192 1613528 5697360 1612840 5696712 -1601624 5681136 1612736 5696520 1623016 5701528 1623192 5701576 -1601624 5681136 1612736 5696520 1623192 5701576 1657088 5639464 -1612840 5696712 1612736 5696520 1601624 5681136 1601592 5681216 -1612840 5696712 1623016 5701528 1612736 5696520 1601592 5681216 -1612840 5696712 1612736 5696520 1601592 5681216 1602160 5695928 -1601592 5681216 1601128 5681664 1602160 5695928 1612736 5696520 -1601128 5681664 1601088 5681704 1602160 5695928 1612736 5696520 -1601592 5681216 1601160 5681616 1601128 5681664 1612736 5696520 -1612736 5696520 1601624 5681136 1601592 5681216 1601128 5681664 -1612840 5696712 1612736 5696520 1602160 5695928 1608624 5699288 -1602160 5695928 1602200 5696008 1608624 5699288 1612736 5696520 -1602200 5696008 1602224 5696056 1608624 5699288 1612736 5696520 -1602200 5696008 1602224 5696056 1612736 5696520 1602160 5695928 -1602224 5696056 1608544 5699312 1608624 5699288 1612736 5696520 -1608624 5699288 1612840 5696712 1612736 5696520 1602224 5696056 -1612840 5696712 1623016 5701528 1612736 5696520 1608624 5699288 -1602160 5695928 1602200 5696008 1612736 5696520 1601128 5681664 -1601624 5681136 1601592 5681216 1612736 5696520 1623192 5701576 -1612736 5696520 1612840 5696712 1623016 5701528 1623192 5701576 -1623016 5701528 1612736 5696520 1612840 5696712 1621712 5701344 -1612736 5696520 1608624 5699288 1612840 5696712 1621712 5701344 -1623016 5701528 1623192 5701576 1612736 5696520 1621712 5701344 -1623016 5701528 1612736 5696520 1621712 5701344 1622880 5701536 -1612840 5696712 1613528 5697360 1621712 5701344 1612736 5696520 -1612840 5696712 1613528 5697360 1612736 5696520 1608624 5699288 -1613528 5697360 1613640 5697488 1621712 5701344 1612736 5696520 -1612840 5696712 1613072 5696952 1613528 5697360 1612736 5696520 -1612840 5696712 1613072 5696952 1612736 5696520 1608624 5699288 -1613528 5697360 1621712 5701344 1612736 5696520 1613072 5696952 -1612840 5696712 1613008 5696896 1613072 5696952 1612736 5696520 -1612840 5696712 1613008 5696896 1612736 5696520 1608624 5699288 -1613072 5696952 1613528 5697360 1612736 5696520 1613008 5696896 -1621712 5701344 1623016 5701528 1612736 5696520 1613528 5697360 -1612840 5696712 1612736 5696520 1608624 5699288 1610784 5698784 -1612840 5696712 1612736 5696520 1610784 5698784 1610848 5698768 -1612736 5696520 1602224 5696056 1608624 5699288 1610784 5698784 -1612840 5696712 1613008 5696896 1612736 5696520 1610848 5698768 -1608624 5699288 1610736 5698824 1610784 5698784 1612736 5696520 -1612736 5696520 1608624 5699288 1610784 5698784 1610848 5698768 -1612840 5696712 1612736 5696520 1610848 5698768 1610904 5698784 -1612736 5696520 1610784 5698784 1610848 5698768 1610904 5698784 -1612840 5696712 1613008 5696896 1612736 5696520 1610904 5698784 -1612840 5696712 1612736 5696520 1610904 5698784 1613008 5696896 -1613072 5696952 1613312 5697192 1613528 5697360 1612736 5696520 -1623192 5701576 1612560 5696144 1612736 5696520 1623016 5701528 -1601624 5681136 1612560 5696144 1623192 5701576 1657088 5639464 -1612736 5696520 1612560 5696144 1601624 5681136 1601592 5681216 -1612736 5696520 1612560 5696144 1601592 5681216 1601128 5681664 -1612736 5696520 1612560 5696144 1601128 5681664 1602160 5695928 -1601128 5681664 1601088 5681704 1602160 5695928 1612560 5696144 -1602160 5695928 1612736 5696520 1612560 5696144 1601088 5681704 -1601088 5681704 1602112 5695896 1602160 5695928 1612560 5696144 -1601592 5681216 1601160 5681616 1601128 5681664 1612560 5696144 -1612560 5696144 1601592 5681216 1601128 5681664 1601088 5681704 -1612736 5696520 1612560 5696144 1602160 5695928 1602200 5696008 -1612736 5696520 1612560 5696144 1602200 5696008 1602224 5696056 -1612736 5696520 1612560 5696144 1602224 5696056 1608624 5699288 -1612560 5696144 1602200 5696008 1602224 5696056 1608624 5699288 -1612560 5696144 1601088 5681704 1602160 5695928 1602200 5696008 -1602224 5696056 1608544 5699312 1608624 5699288 1612560 5696144 -1612736 5696520 1612560 5696144 1608624 5699288 1610784 5698784 -1612560 5696144 1602224 5696056 1608624 5699288 1610784 5698784 -1612560 5696144 1602160 5695928 1602200 5696008 1602224 5696056 -1612560 5696144 1601624 5681136 1601592 5681216 1601128 5681664 -1612560 5696144 1610784 5698784 1612736 5696520 1623016 5701528 -1612736 5696520 1621712 5701344 1623016 5701528 1612560 5696144 -1623016 5701528 1623192 5701576 1612560 5696144 1621712 5701344 -1612736 5696520 1621712 5701344 1612560 5696144 1610784 5698784 -1608624 5699288 1610736 5698824 1610784 5698784 1612560 5696144 -1621712 5701344 1622880 5701536 1623016 5701528 1612560 5696144 -1612736 5696520 1613528 5697360 1621712 5701344 1612560 5696144 -1612736 5696520 1613528 5697360 1612560 5696144 1610784 5698784 -1621712 5701344 1623016 5701528 1612560 5696144 1613528 5697360 -1612736 5696520 1613072 5696952 1613528 5697360 1612560 5696144 -1612736 5696520 1613072 5696952 1612560 5696144 1610784 5698784 -1613528 5697360 1613640 5697488 1621712 5701344 1612560 5696144 -1612736 5696520 1613008 5696896 1613072 5696952 1612560 5696144 -1613528 5697360 1621712 5701344 1612560 5696144 1613072 5696952 -1612736 5696520 1612560 5696144 1610784 5698784 1610848 5698768 -1612736 5696520 1612560 5696144 1610848 5698768 1610904 5698784 -1612560 5696144 1608624 5699288 1610784 5698784 1610848 5698768 -1612736 5696520 1613072 5696952 1612560 5696144 1610848 5698768 -1613072 5696952 1613312 5697192 1613528 5697360 1612560 5696144 -1612560 5696144 1623192 5701576 1601624 5681136 1601592 5681216 -1623192 5701576 1601624 5681136 1612560 5696144 1623016 5701528 -1601624 5681136 1612480 5696016 1623192 5701576 1657088 5639464 -1612560 5696144 1612480 5696016 1601624 5681136 1601592 5681216 -1612560 5696144 1612480 5696016 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612480 5696016 -1612560 5696144 1612480 5696016 1601128 5681664 1601088 5681704 -1612560 5696144 1612480 5696016 1601088 5681704 1602160 5695928 -1612560 5696144 1612480 5696016 1602160 5695928 1602200 5696008 -1612480 5696016 1601088 5681704 1602160 5695928 1602200 5696008 -1601088 5681704 1602112 5695896 1602160 5695928 1612480 5696016 -1612480 5696016 1601128 5681664 1601088 5681704 1602160 5695928 -1612560 5696144 1612480 5696016 1602200 5696008 1602224 5696056 -1612560 5696144 1612480 5696016 1602224 5696056 1608624 5699288 -1612560 5696144 1612480 5696016 1608624 5699288 1610784 5698784 -1612480 5696016 1602224 5696056 1608624 5699288 1610784 5698784 -1612480 5696016 1602160 5695928 1602200 5696008 1602224 5696056 -1602224 5696056 1608544 5699312 1608624 5699288 1612480 5696016 -1612560 5696144 1612480 5696016 1610784 5698784 1610848 5698768 -1612480 5696016 1608624 5699288 1610784 5698784 1610848 5698768 -1612480 5696016 1602200 5696008 1602224 5696056 1608624 5699288 -1612480 5696016 1601592 5681216 1601128 5681664 1601088 5681704 -1612480 5696016 1623192 5701576 1601624 5681136 1601592 5681216 -1608624 5699288 1610736 5698824 1610784 5698784 1612480 5696016 -1612560 5696144 1612480 5696016 1610848 5698768 1612736 5696520 -1612480 5696016 1601624 5681136 1601592 5681216 1601128 5681664 -1612560 5696144 1623192 5701576 1612480 5696016 1610848 5698768 -1623192 5701576 1612480 5696016 1612560 5696144 1623016 5701528 -1612560 5696144 1621712 5701344 1623016 5701528 1612480 5696016 -1612560 5696144 1613528 5697360 1621712 5701344 1612480 5696016 -1621712 5701344 1623016 5701528 1612480 5696016 1613528 5697360 -1623192 5701576 1601624 5681136 1612480 5696016 1623016 5701528 -1621712 5701344 1622880 5701536 1623016 5701528 1612480 5696016 -1613528 5697360 1613640 5697488 1621712 5701344 1612480 5696016 -1612560 5696144 1613072 5696952 1613528 5697360 1612480 5696016 -1612480 5696016 1610848 5698768 1612560 5696144 1613528 5697360 -1623016 5701528 1623192 5701576 1612480 5696016 1621712 5701344 -1612480 5696016 1612248 5695760 1602160 5695928 1602200 5696008 -1612480 5696016 1612248 5695760 1602200 5696008 1602224 5696056 -1612248 5695760 1602160 5695928 1602200 5696008 1602224 5696056 -1602160 5695928 1612248 5695760 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612248 5695760 -1601088 5681704 1612248 5695760 1612480 5696016 1601128 5681664 -1612480 5696016 1612248 5695760 1602224 5696056 1608624 5699288 -1612480 5696016 1612248 5695760 1608624 5699288 1610784 5698784 -1612480 5696016 1612248 5695760 1610784 5698784 1610848 5698768 -1612248 5695760 1608624 5699288 1610784 5698784 1610848 5698768 -1612248 5695760 1602200 5696008 1602224 5696056 1608624 5699288 -1602224 5696056 1608544 5699312 1608624 5699288 1612248 5695760 -1612480 5696016 1612248 5695760 1610848 5698768 1612560 5696144 -1612248 5695760 1610784 5698784 1610848 5698768 1612560 5696144 -1612248 5695760 1602224 5696056 1608624 5699288 1610784 5698784 -1612480 5696016 1601592 5681216 1601128 5681664 1612248 5695760 -1601592 5681216 1601160 5681616 1601128 5681664 1612248 5695760 -1601128 5681664 1601088 5681704 1612248 5695760 1601592 5681216 -1612248 5695760 1602112 5695896 1602160 5695928 1602200 5696008 -1612480 5696016 1601592 5681216 1612248 5695760 1612560 5696144 -1612248 5695760 1601128 5681664 1601088 5681704 1602112 5695896 -1608624 5699288 1610736 5698824 1610784 5698784 1612248 5695760 -1610848 5698768 1612736 5696520 1612560 5696144 1612248 5695760 -1612480 5696016 1601624 5681136 1601592 5681216 1612248 5695760 -1601592 5681216 1601128 5681664 1612248 5695760 1601624 5681136 -1612480 5696016 1623192 5701576 1601624 5681136 1612248 5695760 -1623192 5701576 1657088 5639464 1601624 5681136 1612248 5695760 -1612480 5696016 1623016 5701528 1623192 5701576 1612248 5695760 -1623192 5701576 1601624 5681136 1612248 5695760 1623016 5701528 -1612480 5696016 1623016 5701528 1612248 5695760 1612560 5696144 -1601624 5681136 1601592 5681216 1612248 5695760 1623192 5701576 -1612480 5696016 1621712 5701344 1623016 5701528 1612248 5695760 -1602112 5695896 1612224 5695736 1601088 5681704 1602016 5695848 -1612248 5695760 1612224 5695736 1602112 5695896 1602160 5695928 -1612248 5695760 1612224 5695736 1602160 5695928 1602200 5696008 -1612248 5695760 1612224 5695736 1602200 5696008 1602224 5696056 -1612248 5695760 1612224 5695736 1602224 5696056 1608624 5699288 -1612224 5695736 1602200 5696008 1602224 5696056 1608624 5699288 -1612224 5695736 1602112 5695896 1602160 5695928 1602200 5696008 -1602224 5696056 1608544 5699312 1608624 5699288 1612224 5695736 -1612248 5695760 1612224 5695736 1608624 5699288 1610784 5698784 -1612248 5695760 1612224 5695736 1610784 5698784 1610848 5698768 -1612248 5695760 1612224 5695736 1610848 5698768 1612560 5696144 -1612224 5695736 1602224 5696056 1608624 5699288 1610784 5698784 -1612224 5695736 1608624 5699288 1610784 5698784 1610848 5698768 -1612224 5695736 1602160 5695928 1602200 5696008 1602224 5696056 -1612248 5695760 1601088 5681704 1612224 5695736 1610848 5698768 -1601088 5681704 1612224 5695736 1612248 5695760 1601128 5681664 -1612248 5695760 1601592 5681216 1601128 5681664 1612224 5695736 -1601592 5681216 1601160 5681616 1601128 5681664 1612224 5695736 -1612248 5695760 1601624 5681136 1601592 5681216 1612224 5695736 -1601592 5681216 1601128 5681664 1612224 5695736 1601624 5681136 -1612224 5695736 1610848 5698768 1612248 5695760 1601624 5681136 -1601128 5681664 1601088 5681704 1612224 5695736 1601592 5681216 -1612224 5695736 1601088 5681704 1602112 5695896 1602160 5695928 -1601088 5681704 1602112 5695896 1612224 5695736 1601128 5681664 -1608624 5699288 1610736 5698824 1610784 5698784 1612224 5695736 -1612248 5695760 1623192 5701576 1601624 5681136 1612224 5695736 -1623192 5701576 1657088 5639464 1601624 5681136 1612224 5695736 -1601624 5681136 1601592 5681216 1612224 5695736 1623192 5701576 -1612248 5695760 1623192 5701576 1612224 5695736 1610848 5698768 -1612248 5695760 1623016 5701528 1623192 5701576 1612224 5695736 -1612248 5695760 1612480 5696016 1623016 5701528 1612224 5695736 -1612248 5695760 1623016 5701528 1612224 5695736 1610848 5698768 -1623192 5701576 1601624 5681136 1612224 5695736 1623016 5701528 -1601624 5681136 1612192 5695688 1623192 5701576 1657088 5639464 -1612224 5695736 1612192 5695688 1601624 5681136 1601592 5681216 -1612224 5695736 1612192 5695688 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612192 5695688 -1612192 5695688 1601624 5681136 1601592 5681216 1601128 5681664 -1612224 5695736 1612192 5695688 1601128 5681664 1601088 5681704 -1612192 5695688 1601592 5681216 1601128 5681664 1601088 5681704 -1612224 5695736 1623192 5701576 1612192 5695688 1601088 5681704 -1612224 5695736 1612192 5695688 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612192 5695688 -1612192 5695688 1601128 5681664 1601088 5681704 1602112 5695896 -1612224 5695736 1612192 5695688 1602112 5695896 1602160 5695928 -1612224 5695736 1612192 5695688 1602160 5695928 1602200 5696008 -1612224 5695736 1612192 5695688 1602200 5696008 1602224 5696056 -1612224 5695736 1612192 5695688 1602224 5696056 1608624 5699288 -1612224 5695736 1612192 5695688 1608624 5699288 1610784 5698784 -1612192 5695688 1602224 5696056 1608624 5699288 1610784 5698784 -1612192 5695688 1602160 5695928 1602200 5696008 1602224 5696056 -1602224 5696056 1608544 5699312 1608624 5699288 1612192 5695688 -1612224 5695736 1612192 5695688 1610784 5698784 1610848 5698768 -1612224 5695736 1612192 5695688 1610848 5698768 1612248 5695760 -1612192 5695688 1608624 5699288 1610784 5698784 1610848 5698768 -1612192 5695688 1602200 5696008 1602224 5696056 1608624 5699288 -1612192 5695688 1602112 5695896 1602160 5695928 1602200 5696008 -1612224 5695736 1623192 5701576 1612192 5695688 1610848 5698768 -1612192 5695688 1601088 5681704 1602112 5695896 1602160 5695928 -1612192 5695688 1623192 5701576 1601624 5681136 1601592 5681216 -1608624 5699288 1610736 5698824 1610784 5698784 1612192 5695688 -1623192 5701576 1612192 5695688 1612224 5695736 1623016 5701528 -1612224 5695736 1612248 5695760 1623016 5701528 1612192 5695688 -1612248 5695760 1612480 5696016 1623016 5701528 1612192 5695688 -1612248 5695760 1612480 5696016 1612192 5695688 1612224 5695736 -1612192 5695688 1610848 5698768 1612224 5695736 1612248 5695760 -1623192 5701576 1601624 5681136 1612192 5695688 1623016 5701528 -1623016 5701528 1623192 5701576 1612192 5695688 1612480 5696016 -1612480 5696016 1621712 5701344 1623016 5701528 1612192 5695688 -1601624 5681136 1612176 5695584 1623192 5701576 1657088 5639464 -1612192 5695688 1612176 5695584 1601624 5681136 1601592 5681216 -1612192 5695688 1612176 5695584 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612176 5695584 -1612192 5695688 1612176 5695584 1601128 5681664 1601088 5681704 -1612176 5695584 1601592 5681216 1601128 5681664 1601088 5681704 -1612192 5695688 1612176 5695584 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612176 5695584 -1612176 5695584 1601128 5681664 1601088 5681704 1602112 5695896 -1612192 5695688 1612176 5695584 1602112 5695896 1602160 5695928 -1612176 5695584 1601088 5681704 1602112 5695896 1602160 5695928 -1612192 5695688 1612176 5695584 1602160 5695928 1602200 5696008 -1612192 5695688 1612176 5695584 1602200 5696008 1602224 5696056 -1612192 5695688 1612176 5695584 1602224 5696056 1608624 5699288 -1612192 5695688 1612176 5695584 1608624 5699288 1610784 5698784 -1612192 5695688 1612176 5695584 1610784 5698784 1610848 5698768 -1612176 5695584 1602200 5696008 1602224 5696056 1608624 5699288 -1602224 5696056 1608544 5699312 1608624 5699288 1612176 5695584 -1612176 5695584 1602224 5696056 1608624 5699288 1610784 5698784 -1612176 5695584 1602160 5695928 1602200 5696008 1602224 5696056 -1612176 5695584 1602112 5695896 1602160 5695928 1602200 5696008 -1612176 5695584 1601624 5681136 1601592 5681216 1601128 5681664 -1612192 5695688 1623192 5701576 1612176 5695584 1610784 5698784 -1623192 5701576 1612176 5695584 1612192 5695688 1623016 5701528 -1612176 5695584 1610784 5698784 1612192 5695688 1623016 5701528 -1612176 5695584 1623192 5701576 1601624 5681136 1601592 5681216 -1608624 5699288 1610736 5698824 1610784 5698784 1612176 5695584 -1612192 5695688 1612480 5696016 1623016 5701528 1612176 5695584 -1612192 5695688 1612248 5695760 1612480 5696016 1612176 5695584 -1612192 5695688 1612224 5695736 1612248 5695760 1612176 5695584 -1612248 5695760 1612480 5696016 1612176 5695584 1612224 5695736 -1612192 5695688 1612224 5695736 1612176 5695584 1610784 5698784 -1623016 5701528 1623192 5701576 1612176 5695584 1612480 5696016 -1612480 5696016 1623016 5701528 1612176 5695584 1612248 5695760 -1612480 5696016 1621712 5701344 1623016 5701528 1612176 5695584 -1612480 5696016 1613528 5697360 1621712 5701344 1612176 5695584 -1623016 5701528 1623192 5701576 1612176 5695584 1621712 5701344 -1621712 5701344 1622880 5701536 1623016 5701528 1612176 5695584 -1612480 5696016 1621712 5701344 1612176 5695584 1612248 5695760 -1623192 5701576 1601624 5681136 1612176 5695584 1623016 5701528 -1601624 5681136 1612216 5695512 1623192 5701576 1657088 5639464 -1612176 5695584 1612216 5695512 1601624 5681136 1601592 5681216 -1612176 5695584 1612216 5695512 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612216 5695512 -1612176 5695584 1612216 5695512 1601128 5681664 1601088 5681704 -1612176 5695584 1612216 5695512 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612216 5695512 -1612216 5695512 1601128 5681664 1601088 5681704 1602112 5695896 -1612176 5695584 1612216 5695512 1602112 5695896 1602160 5695928 -1612216 5695512 1601088 5681704 1602112 5695896 1602160 5695928 -1612176 5695584 1612216 5695512 1602160 5695928 1602200 5696008 -1612216 5695512 1601592 5681216 1601128 5681664 1601088 5681704 -1612216 5695512 1601624 5681136 1601592 5681216 1601128 5681664 -1612176 5695584 1623192 5701576 1612216 5695512 1602160 5695928 -1623192 5701576 1612216 5695512 1612176 5695584 1623016 5701528 -1612176 5695584 1621712 5701344 1623016 5701528 1612216 5695512 -1621712 5701344 1622880 5701536 1623016 5701528 1612216 5695512 -1612176 5695584 1612480 5696016 1621712 5701344 1612216 5695512 -1612480 5696016 1613528 5697360 1621712 5701344 1612216 5695512 -1612480 5696016 1612560 5696144 1613528 5697360 1612216 5695512 -1613528 5697360 1621712 5701344 1612216 5695512 1612560 5696144 -1621712 5701344 1623016 5701528 1612216 5695512 1613528 5697360 -1613528 5697360 1613640 5697488 1621712 5701344 1612216 5695512 -1612560 5696144 1613072 5696952 1613528 5697360 1612216 5695512 -1612176 5695584 1612248 5695760 1612480 5696016 1612216 5695512 -1612176 5695584 1612224 5695736 1612248 5695760 1612216 5695512 -1612176 5695584 1612192 5695688 1612224 5695736 1612216 5695512 -1612224 5695736 1612248 5695760 1612216 5695512 1612192 5695688 -1612248 5695760 1612480 5696016 1612216 5695512 1612224 5695736 -1612480 5696016 1612560 5696144 1612216 5695512 1612248 5695760 -1612216 5695512 1602160 5695928 1612176 5695584 1612192 5695688 -1623016 5701528 1623192 5701576 1612216 5695512 1621712 5701344 -1612216 5695512 1623192 5701576 1601624 5681136 1601592 5681216 -1623192 5701576 1601624 5681136 1612216 5695512 1623016 5701528 -1601624 5681136 1612216 5695400 1623192 5701576 1657088 5639464 -1623192 5701576 1663776 5646144 1657088 5639464 1612216 5695400 -1601624 5681136 1612216 5695400 1657088 5639464 1601592 5681064 -1612216 5695512 1612216 5695400 1601624 5681136 1601592 5681216 -1612216 5695512 1612216 5695400 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612216 5695400 -1612216 5695512 1612216 5695400 1601128 5681664 1601088 5681704 -1612216 5695512 1612216 5695400 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612216 5695400 -1612216 5695512 1612216 5695400 1602112 5695896 1602160 5695928 -1612216 5695400 1601088 5681704 1602112 5695896 1602160 5695928 -1612216 5695512 1612216 5695400 1602160 5695928 1612176 5695584 -1612216 5695400 1602112 5695896 1602160 5695928 1612176 5695584 -1602160 5695928 1602200 5696008 1612176 5695584 1612216 5695400 -1602160 5695928 1602200 5696008 1612216 5695400 1602112 5695896 -1612176 5695584 1612216 5695512 1612216 5695400 1602200 5696008 -1602200 5696008 1602224 5696056 1612176 5695584 1612216 5695400 -1602224 5696056 1608624 5699288 1612176 5695584 1612216 5695400 -1602224 5696056 1608544 5699312 1608624 5699288 1612216 5695400 -1608624 5699288 1610784 5698784 1612176 5695584 1612216 5695400 -1612176 5695584 1612216 5695512 1612216 5695400 1608624 5699288 -1602224 5696056 1608624 5699288 1612216 5695400 1602200 5696008 -1602200 5696008 1602224 5696056 1612216 5695400 1602160 5695928 -1612216 5695400 1601128 5681664 1601088 5681704 1602112 5695896 -1612216 5695400 1601592 5681216 1601128 5681664 1601088 5681704 -1612216 5695400 1601624 5681136 1601592 5681216 1601128 5681664 -1612216 5695512 1623192 5701576 1612216 5695400 1612176 5695584 -1623192 5701576 1612216 5695400 1612216 5695512 1623016 5701528 -1612216 5695512 1621712 5701344 1623016 5701528 1612216 5695400 -1612216 5695512 1613528 5697360 1621712 5701344 1612216 5695400 -1612216 5695512 1612560 5696144 1613528 5697360 1612216 5695400 -1612216 5695512 1612480 5696016 1612560 5696144 1612216 5695400 -1612560 5696144 1613528 5697360 1612216 5695400 1612480 5696016 -1613528 5697360 1621712 5701344 1612216 5695400 1612560 5696144 -1621712 5701344 1622880 5701536 1623016 5701528 1612216 5695400 -1613528 5697360 1613640 5697488 1621712 5701344 1612216 5695400 -1613528 5697360 1613640 5697488 1612216 5695400 1612560 5696144 -1612560 5696144 1613072 5696952 1613528 5697360 1612216 5695400 -1613640 5697488 1615968 5699848 1621712 5701344 1612216 5695400 -1612216 5695512 1612248 5695760 1612480 5696016 1612216 5695400 -1621712 5701344 1623016 5701528 1612216 5695400 1613640 5697488 -1612216 5695400 1612176 5695584 1612216 5695512 1612480 5696016 -1623016 5701528 1623192 5701576 1612216 5695400 1621712 5701344 -1601624 5681136 1601592 5681216 1612216 5695400 1657088 5639464 -1612216 5695400 1623016 5701528 1623192 5701576 1657088 5639464 -1657088 5639464 1612128 5695248 1612216 5695400 1623192 5701576 -1657088 5639464 1612128 5695248 1623192 5701576 1663776 5646144 -1601624 5681136 1612128 5695248 1657088 5639464 1601592 5681064 -1612216 5695400 1612128 5695248 1601624 5681136 1601592 5681216 -1612216 5695400 1612128 5695248 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612128 5695248 -1612216 5695400 1612128 5695248 1601128 5681664 1601088 5681704 -1612216 5695400 1612128 5695248 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612128 5695248 -1612216 5695400 1612128 5695248 1602112 5695896 1602160 5695928 -1612216 5695400 1612128 5695248 1602160 5695928 1602200 5696008 -1612128 5695248 1602112 5695896 1602160 5695928 1602200 5696008 -1612216 5695400 1612128 5695248 1602200 5696008 1602224 5696056 -1612128 5695248 1602160 5695928 1602200 5696008 1602224 5696056 -1612216 5695400 1612128 5695248 1602224 5696056 1608624 5699288 -1612216 5695400 1612128 5695248 1608624 5699288 1612176 5695584 -1602224 5696056 1608544 5699312 1608624 5699288 1612128 5695248 -1608624 5699288 1610784 5698784 1612176 5695584 1612128 5695248 -1612216 5695400 1612128 5695248 1612176 5695584 1612216 5695512 -1612128 5695248 1608544 5699312 1608624 5699288 1612176 5695584 -1612128 5695248 1602200 5696008 1602224 5696056 1608544 5699312 -1612128 5695248 1601088 5681704 1602112 5695896 1602160 5695928 -1612128 5695248 1601128 5681664 1601088 5681704 1602112 5695896 -1602224 5696056 1602504 5696992 1608544 5699312 1612128 5695248 -1612128 5695248 1601592 5681216 1601128 5681664 1601088 5681704 -1612128 5695248 1601624 5681136 1601592 5681216 1601128 5681664 -1612128 5695248 1612176 5695584 1612216 5695400 1623192 5701576 -1612216 5695400 1623016 5701528 1623192 5701576 1612128 5695248 -1623192 5701576 1657088 5639464 1612128 5695248 1623016 5701528 -1612216 5695400 1621712 5701344 1623016 5701528 1612128 5695248 -1621712 5701344 1622880 5701536 1623016 5701528 1612128 5695248 -1612216 5695400 1613640 5697488 1621712 5701344 1612128 5695248 -1612216 5695400 1621712 5701344 1612128 5695248 1612176 5695584 -1623016 5701528 1623192 5701576 1612128 5695248 1621712 5701344 -1612128 5695248 1657088 5639464 1601624 5681136 1601592 5681216 -1657088 5639464 1601624 5681136 1612128 5695248 1623192 5701576 -1601624 5681136 1612120 5695192 1657088 5639464 1601592 5681064 -1612128 5695248 1612120 5695192 1601624 5681136 1601592 5681216 -1612128 5695248 1612120 5695192 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612120 5695192 -1612128 5695248 1612120 5695192 1601128 5681664 1601088 5681704 -1612128 5695248 1612120 5695192 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612120 5695192 -1612128 5695248 1612120 5695192 1602112 5695896 1602160 5695928 -1612128 5695248 1612120 5695192 1602160 5695928 1602200 5696008 -1612128 5695248 1612120 5695192 1602200 5696008 1602224 5696056 -1612120 5695192 1602160 5695928 1602200 5696008 1602224 5696056 -1612128 5695248 1612120 5695192 1602224 5696056 1608544 5699312 -1612128 5695248 1612120 5695192 1608544 5699312 1608624 5699288 -1612120 5695192 1602200 5696008 1602224 5696056 1608544 5699312 -1612128 5695248 1612120 5695192 1608624 5699288 1612176 5695584 -1612120 5695192 1602224 5696056 1608544 5699312 1608624 5699288 -1612120 5695192 1602112 5695896 1602160 5695928 1602200 5696008 -1612120 5695192 1601088 5681704 1602112 5695896 1602160 5695928 -1602224 5696056 1602504 5696992 1608544 5699312 1612120 5695192 -1612120 5695192 1601128 5681664 1601088 5681704 1602112 5695896 -1612120 5695192 1601592 5681216 1601128 5681664 1601088 5681704 -1612120 5695192 1601624 5681136 1601592 5681216 1601128 5681664 -1612128 5695248 1657088 5639464 1612120 5695192 1608624 5699288 -1657088 5639464 1612120 5695192 1612128 5695248 1623192 5701576 -1612128 5695248 1623016 5701528 1623192 5701576 1612120 5695192 -1657088 5639464 1612120 5695192 1623192 5701576 1663776 5646144 -1657088 5639464 1601624 5681136 1612120 5695192 1623192 5701576 -1612128 5695248 1621712 5701344 1623016 5701528 1612120 5695192 -1623016 5701528 1623192 5701576 1612120 5695192 1621712 5701344 -1621712 5701344 1622880 5701536 1623016 5701528 1612120 5695192 -1612128 5695248 1612216 5695400 1621712 5701344 1612120 5695192 -1612216 5695400 1613640 5697488 1621712 5701344 1612120 5695192 -1612216 5695400 1613528 5697360 1613640 5697488 1612120 5695192 -1612216 5695400 1612560 5696144 1613528 5697360 1612120 5695192 -1613640 5697488 1615968 5699848 1621712 5701344 1612120 5695192 -1613640 5697488 1621712 5701344 1612120 5695192 1613528 5697360 -1612216 5695400 1613528 5697360 1612120 5695192 1612128 5695248 -1621712 5701344 1623016 5701528 1612120 5695192 1613640 5697488 -1612120 5695192 1608624 5699288 1612128 5695248 1612216 5695400 -1623192 5701576 1657088 5639464 1612120 5695192 1623016 5701528 -1612120 5695192 1657088 5639464 1601624 5681136 1601592 5681216 -1601624 5681136 1612136 5695120 1657088 5639464 1601592 5681064 -1657088 5639464 1612136 5695120 1612120 5695192 1623192 5701576 -1657088 5639464 1612136 5695120 1623192 5701576 1663776 5646144 -1623192 5701576 1623296 5701624 1663776 5646144 1612136 5695120 -1657088 5639464 1612136 5695120 1663776 5646144 1663688 5645984 -1612136 5695120 1601624 5681136 1612120 5695192 1623192 5701576 -1612120 5695192 1623016 5701528 1623192 5701576 1612136 5695120 -1612120 5695192 1621712 5701344 1623016 5701528 1612136 5695120 -1621712 5701344 1622880 5701536 1623016 5701528 1612136 5695120 -1612120 5695192 1621712 5701344 1612136 5695120 1601624 5681136 -1612120 5695192 1613640 5697488 1621712 5701344 1612136 5695120 -1621712 5701344 1623016 5701528 1612136 5695120 1613640 5697488 -1613640 5697488 1615968 5699848 1621712 5701344 1612136 5695120 -1612120 5695192 1613528 5697360 1613640 5697488 1612136 5695120 -1612120 5695192 1612216 5695400 1613528 5697360 1612136 5695120 -1612216 5695400 1612560 5696144 1613528 5697360 1612136 5695120 -1612216 5695400 1612480 5696016 1612560 5696144 1612136 5695120 -1612216 5695400 1612560 5696144 1612136 5695120 1612120 5695192 -1612560 5696144 1613072 5696952 1613528 5697360 1612136 5695120 -1613528 5697360 1613640 5697488 1612136 5695120 1612560 5696144 -1612120 5695192 1612216 5695400 1612136 5695120 1601624 5681136 -1612120 5695192 1612128 5695248 1612216 5695400 1612136 5695120 -1612216 5695400 1612560 5696144 1612136 5695120 1612128 5695248 -1612120 5695192 1612128 5695248 1612136 5695120 1601624 5681136 -1613640 5697488 1621712 5701344 1612136 5695120 1613528 5697360 -1623016 5701528 1623192 5701576 1612136 5695120 1621712 5701344 -1612120 5695192 1612136 5695120 1601624 5681136 1601592 5681216 -1612120 5695192 1612128 5695248 1612136 5695120 1601592 5681216 -1612120 5695192 1612136 5695120 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612136 5695120 -1612120 5695192 1612128 5695248 1612136 5695120 1601128 5681664 -1612120 5695192 1612136 5695120 1601128 5681664 1601088 5681704 -1612120 5695192 1612128 5695248 1612136 5695120 1601088 5681704 -1612120 5695192 1612136 5695120 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612136 5695120 -1612120 5695192 1612136 5695120 1602112 5695896 1602160 5695928 -1612120 5695192 1612136 5695120 1602160 5695928 1602200 5696008 -1612120 5695192 1612136 5695120 1602200 5696008 1602224 5696056 -1612120 5695192 1612136 5695120 1602224 5696056 1608544 5699312 -1612136 5695120 1602160 5695928 1602200 5696008 1602224 5696056 -1612136 5695120 1602112 5695896 1602160 5695928 1602200 5696008 -1612120 5695192 1612128 5695248 1612136 5695120 1602224 5696056 -1612136 5695120 1601088 5681704 1602112 5695896 1602160 5695928 -1612136 5695120 1601128 5681664 1601088 5681704 1602112 5695896 -1612136 5695120 1601592 5681216 1601128 5681664 1601088 5681704 -1612136 5695120 1601624 5681136 1601592 5681216 1601128 5681664 -1612136 5695120 1657088 5639464 1601624 5681136 1601592 5681216 -1612136 5695120 1623016 5701528 1623192 5701576 1663776 5646144 -1657088 5639464 1601624 5681136 1612136 5695120 1663776 5646144 -1601624 5681136 1612160 5695080 1657088 5639464 1601592 5681064 -1612136 5695120 1612160 5695080 1601624 5681136 1601592 5681216 -1612136 5695120 1612160 5695080 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612160 5695080 -1612136 5695120 1612160 5695080 1601128 5681664 1601088 5681704 -1612136 5695120 1612160 5695080 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612160 5695080 -1612136 5695120 1612160 5695080 1602112 5695896 1602160 5695928 -1612136 5695120 1612160 5695080 1602160 5695928 1602200 5696008 -1612160 5695080 1601088 5681704 1602112 5695896 1602160 5695928 -1612160 5695080 1601128 5681664 1601088 5681704 1602112 5695896 -1612160 5695080 1601592 5681216 1601128 5681664 1601088 5681704 -1612160 5695080 1601624 5681136 1601592 5681216 1601128 5681664 -1657088 5639464 1612160 5695080 1612136 5695120 1663776 5646144 -1612136 5695120 1623192 5701576 1663776 5646144 1612160 5695080 -1623192 5701576 1623296 5701624 1663776 5646144 1612160 5695080 -1657088 5639464 1612160 5695080 1663776 5646144 1663688 5645984 -1612136 5695120 1623016 5701528 1623192 5701576 1612160 5695080 -1623192 5701576 1663776 5646144 1612160 5695080 1623016 5701528 -1612136 5695120 1621712 5701344 1623016 5701528 1612160 5695080 -1612136 5695120 1613640 5697488 1621712 5701344 1612160 5695080 -1621712 5701344 1622880 5701536 1623016 5701528 1612160 5695080 -1613640 5697488 1615968 5699848 1621712 5701344 1612160 5695080 -1612136 5695120 1613528 5697360 1613640 5697488 1612160 5695080 -1613640 5697488 1621712 5701344 1612160 5695080 1613528 5697360 -1612136 5695120 1612560 5696144 1613528 5697360 1612160 5695080 -1612136 5695120 1612216 5695400 1612560 5696144 1612160 5695080 -1612216 5695400 1612480 5696016 1612560 5696144 1612160 5695080 -1612216 5695400 1612216 5695512 1612480 5696016 1612160 5695080 -1612216 5695400 1612480 5696016 1612160 5695080 1612136 5695120 -1612136 5695120 1612128 5695248 1612216 5695400 1612160 5695080 -1612216 5695400 1612480 5696016 1612160 5695080 1612128 5695248 -1612560 5696144 1613072 5696952 1613528 5697360 1612160 5695080 -1612560 5696144 1613528 5697360 1612160 5695080 1612480 5696016 -1612136 5695120 1612120 5695192 1612128 5695248 1612160 5695080 -1613528 5697360 1613640 5697488 1612160 5695080 1612560 5696144 -1621712 5701344 1623016 5701528 1612160 5695080 1613640 5697488 -1623016 5701528 1623192 5701576 1612160 5695080 1621712 5701344 -1663776 5646144 1657088 5639464 1612160 5695080 1623192 5701576 -1612136 5695120 1612128 5695248 1612160 5695080 1602160 5695928 -1612160 5695080 1657088 5639464 1601624 5681136 1601592 5681216 -1657088 5639464 1601624 5681136 1612160 5695080 1663776 5646144 -1613640 5697488 1612184 5695104 1612160 5695080 1613528 5697360 -1621712 5701344 1612184 5695104 1613640 5697488 1615968 5699848 -1612160 5695080 1612560 5696144 1613528 5697360 1612184 5695104 -1613528 5697360 1613640 5697488 1612184 5695104 1612560 5696144 -1612560 5696144 1613072 5696952 1613528 5697360 1612184 5695104 -1612160 5695080 1612480 5696016 1612560 5696144 1612184 5695104 -1612160 5695080 1612216 5695400 1612480 5696016 1612184 5695104 -1612216 5695400 1612216 5695512 1612480 5696016 1612184 5695104 -1612160 5695080 1612128 5695248 1612216 5695400 1612184 5695104 -1612216 5695400 1612480 5696016 1612184 5695104 1612128 5695248 -1612160 5695080 1612136 5695120 1612128 5695248 1612184 5695104 -1612128 5695248 1612216 5695400 1612184 5695104 1612136 5695120 -1612480 5696016 1612560 5696144 1612184 5695104 1612216 5695400 -1612136 5695120 1612120 5695192 1612128 5695248 1612184 5695104 -1612128 5695248 1612216 5695400 1612184 5695104 1612120 5695192 -1612136 5695120 1612120 5695192 1612184 5695104 1612160 5695080 -1612560 5696144 1613528 5697360 1612184 5695104 1612480 5696016 -1612160 5695080 1612184 5695104 1621712 5701344 1623016 5701528 -1621712 5701344 1622880 5701536 1623016 5701528 1612184 5695104 -1612160 5695080 1612184 5695104 1623016 5701528 1623192 5701576 -1612160 5695080 1612184 5695104 1623192 5701576 1663776 5646144 -1612184 5695104 1621712 5701344 1623016 5701528 1623192 5701576 -1612184 5695104 1623192 5701576 1612160 5695080 1612136 5695120 -1612184 5695104 1613640 5697488 1621712 5701344 1623016 5701528 -1613640 5697488 1621712 5701344 1612184 5695104 1613528 5697360 -1623192 5701576 1612240 5695096 1612160 5695080 1612184 5695104 -1663776 5646144 1612240 5695096 1623192 5701576 1623296 5701624 -1623192 5701576 1612240 5695096 1612184 5695104 1623016 5701528 -1612240 5695096 1612160 5695080 1612184 5695104 1623016 5701528 -1612184 5695104 1621712 5701344 1623016 5701528 1612240 5695096 -1612184 5695104 1621712 5701344 1612240 5695096 1612160 5695080 -1621712 5701344 1622880 5701536 1623016 5701528 1612240 5695096 -1623016 5701528 1623192 5701576 1612240 5695096 1621712 5701344 -1612160 5695080 1612240 5695096 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1612240 5695096 -1612160 5695080 1612240 5695096 1657088 5639464 1601624 5681136 -1657088 5639464 1601592 5681064 1601624 5681136 1612240 5695096 -1612240 5695096 1663776 5646144 1657088 5639464 1601624 5681136 -1612160 5695080 1612240 5695096 1601624 5681136 1601592 5681216 -1612184 5695104 1613640 5697488 1621712 5701344 1612240 5695096 -1612184 5695104 1613640 5697488 1612240 5695096 1612160 5695080 -1613640 5697488 1615968 5699848 1621712 5701344 1612240 5695096 -1621712 5701344 1623016 5701528 1612240 5695096 1613640 5697488 -1612240 5695096 1601624 5681136 1612160 5695080 1612184 5695104 -1612184 5695104 1613528 5697360 1613640 5697488 1612240 5695096 -1612184 5695104 1612560 5696144 1613528 5697360 1612240 5695096 -1612184 5695104 1612560 5696144 1612240 5695096 1612160 5695080 -1612560 5696144 1613072 5696952 1613528 5697360 1612240 5695096 -1612184 5695104 1612480 5696016 1612560 5696144 1612240 5695096 -1612560 5696144 1613528 5697360 1612240 5695096 1612480 5696016 -1612184 5695104 1612480 5696016 1612240 5695096 1612160 5695080 -1612184 5695104 1612216 5695400 1612480 5696016 1612240 5695096 -1612184 5695104 1612128 5695248 1612216 5695400 1612240 5695096 -1612184 5695104 1612128 5695248 1612240 5695096 1612160 5695080 -1612216 5695400 1612216 5695512 1612480 5696016 1612240 5695096 -1612184 5695104 1612120 5695192 1612128 5695248 1612240 5695096 -1612128 5695248 1612216 5695400 1612240 5695096 1612120 5695192 -1612184 5695104 1612120 5695192 1612240 5695096 1612160 5695080 -1612216 5695400 1612480 5696016 1612240 5695096 1612128 5695248 -1612184 5695104 1612136 5695120 1612120 5695192 1612240 5695096 -1612480 5696016 1612560 5696144 1612240 5695096 1612216 5695400 -1613640 5697488 1621712 5701344 1612240 5695096 1613528 5697360 -1613528 5697360 1613640 5697488 1612240 5695096 1612560 5696144 -1623192 5701576 1663776 5646144 1612240 5695096 1623016 5701528 -1612240 5695096 1623192 5701576 1663776 5646144 1657088 5639464 -1663776 5646144 1612648 5695152 1623192 5701576 1623296 5701624 -1623192 5701576 1612648 5695152 1612240 5695096 1623016 5701528 -1623192 5701576 1663776 5646144 1612648 5695152 1623016 5701528 -1612240 5695096 1621712 5701344 1623016 5701528 1612648 5695152 -1621712 5701344 1622880 5701536 1623016 5701528 1612648 5695152 -1612240 5695096 1613640 5697488 1621712 5701344 1612648 5695152 -1613640 5697488 1615968 5699848 1621712 5701344 1612648 5695152 -1615968 5699848 1621576 5701360 1621712 5701344 1612648 5695152 -1613640 5697488 1613696 5697608 1615968 5699848 1612648 5695152 -1613640 5697488 1615968 5699848 1612648 5695152 1612240 5695096 -1621712 5701344 1623016 5701528 1612648 5695152 1615968 5699848 -1612240 5695096 1613528 5697360 1613640 5697488 1612648 5695152 -1613640 5697488 1615968 5699848 1612648 5695152 1613528 5697360 -1612240 5695096 1612560 5696144 1613528 5697360 1612648 5695152 -1612240 5695096 1612480 5696016 1612560 5696144 1612648 5695152 -1612560 5696144 1613072 5696952 1613528 5697360 1612648 5695152 -1612560 5696144 1612736 5696520 1613072 5696952 1612648 5695152 -1612736 5696520 1613008 5696896 1613072 5696952 1612648 5695152 -1613072 5696952 1613528 5697360 1612648 5695152 1612736 5696520 -1613072 5696952 1613312 5697192 1613528 5697360 1612648 5695152 -1613072 5696952 1613312 5697192 1612648 5695152 1612736 5696520 -1612240 5695096 1612216 5695400 1612480 5696016 1612648 5695152 -1612480 5696016 1612560 5696144 1612648 5695152 1612216 5695400 -1612216 5695400 1612216 5695512 1612480 5696016 1612648 5695152 -1612480 5696016 1612560 5696144 1612648 5695152 1612216 5695512 -1612216 5695512 1612248 5695760 1612480 5696016 1612648 5695152 -1612480 5696016 1612560 5696144 1612648 5695152 1612248 5695760 -1612216 5695512 1612248 5695760 1612648 5695152 1612216 5695400 -1612216 5695512 1612224 5695736 1612248 5695760 1612648 5695152 -1612240 5695096 1612128 5695248 1612216 5695400 1612648 5695152 -1612216 5695400 1612216 5695512 1612648 5695152 1612240 5695096 -1613528 5697360 1613640 5697488 1612648 5695152 1613312 5697192 -1612560 5696144 1612736 5696520 1612648 5695152 1612480 5696016 -1623016 5701528 1623192 5701576 1612648 5695152 1621712 5701344 -1612240 5695096 1612648 5695152 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1612648 5695152 -1612240 5695096 1612648 5695152 1657088 5639464 1601624 5681136 -1657088 5639464 1601592 5681064 1601624 5681136 1612648 5695152 -1612240 5695096 1612648 5695152 1601624 5681136 1612160 5695080 -1612648 5695152 1657088 5639464 1601624 5681136 1612160 5695080 -1601624 5681136 1601592 5681216 1612160 5695080 1612648 5695152 -1612240 5695096 1612648 5695152 1612160 5695080 1612184 5695104 -1612648 5695152 1623192 5701576 1663776 5646144 1657088 5639464 -1612648 5695152 1663776 5646144 1657088 5639464 1601624 5681136 -1612648 5695152 1612160 5695080 1612240 5695096 1612216 5695400 -1663776 5646144 1612896 5695232 1623192 5701576 1623296 5701624 -1623192 5701576 1612896 5695232 1612648 5695152 1623016 5701528 -1623192 5701576 1663776 5646144 1612896 5695232 1623016 5701528 -1612648 5695152 1621712 5701344 1623016 5701528 1612896 5695232 -1623016 5701528 1623192 5701576 1612896 5695232 1621712 5701344 -1621712 5701344 1622880 5701536 1623016 5701528 1612896 5695232 -1612648 5695152 1615968 5699848 1621712 5701344 1612896 5695232 -1615968 5699848 1621576 5701360 1621712 5701344 1612896 5695232 -1612648 5695152 1613640 5697488 1615968 5699848 1612896 5695232 -1613640 5697488 1613696 5697608 1615968 5699848 1612896 5695232 -1612648 5695152 1613528 5697360 1613640 5697488 1612896 5695232 -1613640 5697488 1615968 5699848 1612896 5695232 1613528 5697360 -1615968 5699848 1621712 5701344 1612896 5695232 1613640 5697488 -1612648 5695152 1613312 5697192 1613528 5697360 1612896 5695232 -1612648 5695152 1613072 5696952 1613312 5697192 1612896 5695232 -1612648 5695152 1612736 5696520 1613072 5696952 1612896 5695232 -1612648 5695152 1612560 5696144 1612736 5696520 1612896 5695232 -1612736 5696520 1613008 5696896 1613072 5696952 1612896 5695232 -1612736 5696520 1613072 5696952 1612896 5695232 1612560 5696144 -1613072 5696952 1613312 5697192 1612896 5695232 1612736 5696520 -1613528 5697360 1613640 5697488 1612896 5695232 1613312 5697192 -1613312 5697192 1613528 5697360 1612896 5695232 1613072 5696952 -1612648 5695152 1612480 5696016 1612560 5696144 1612896 5695232 -1612648 5695152 1612248 5695760 1612480 5696016 1612896 5695232 -1612560 5696144 1612736 5696520 1612896 5695232 1612480 5696016 -1612648 5695152 1612216 5695512 1612248 5695760 1612896 5695232 -1612480 5696016 1612560 5696144 1612896 5695232 1612248 5695760 -1621712 5701344 1623016 5701528 1612896 5695232 1615968 5699848 -1612648 5695152 1612896 5695232 1663776 5646144 1657088 5639464 -1612896 5695232 1623192 5701576 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1612896 5695232 -1612896 5695232 1657088 5639464 1612648 5695152 1612248 5695760 -1612648 5695152 1612896 5695232 1657088 5639464 1601624 5681136 -1657088 5639464 1601592 5681064 1601624 5681136 1612896 5695232 -1612648 5695152 1612896 5695232 1601624 5681136 1612160 5695080 -1612896 5695232 1663776 5646144 1657088 5639464 1601624 5681136 -1612648 5695152 1612248 5695760 1612896 5695232 1601624 5681136 -1663776 5646144 1613232 5695376 1623192 5701576 1623296 5701624 -1612896 5695232 1613232 5695376 1663776 5646144 1657088 5639464 -1612896 5695232 1623192 5701576 1613232 5695376 1657088 5639464 -1623192 5701576 1613232 5695376 1612896 5695232 1623016 5701528 -1612896 5695232 1621712 5701344 1623016 5701528 1613232 5695376 -1613232 5695376 1657088 5639464 1612896 5695232 1621712 5701344 -1623016 5701528 1623192 5701576 1613232 5695376 1621712 5701344 -1613232 5695376 1623192 5701576 1663776 5646144 1657088 5639464 -1623192 5701576 1663776 5646144 1613232 5695376 1623016 5701528 -1663776 5646144 1663688 5645984 1657088 5639464 1613232 5695376 -1621712 5701344 1622880 5701536 1623016 5701528 1613232 5695376 -1612896 5695232 1615968 5699848 1621712 5701344 1613232 5695376 -1621712 5701344 1623016 5701528 1613232 5695376 1615968 5699848 -1612896 5695232 1615968 5699848 1613232 5695376 1657088 5639464 -1615968 5699848 1621576 5701360 1621712 5701344 1613232 5695376 -1615968 5699848 1621488 5701424 1621576 5701360 1613232 5695376 -1621712 5701344 1623016 5701528 1613232 5695376 1621576 5701360 -1612896 5695232 1613640 5697488 1615968 5699848 1613232 5695376 -1612896 5695232 1613640 5697488 1613232 5695376 1657088 5639464 -1613640 5697488 1613696 5697608 1615968 5699848 1613232 5695376 -1613696 5697608 1613728 5697776 1615968 5699848 1613232 5695376 -1612896 5695232 1613528 5697360 1613640 5697488 1613232 5695376 -1612896 5695232 1613528 5697360 1613232 5695376 1657088 5639464 -1612896 5695232 1613312 5697192 1613528 5697360 1613232 5695376 -1612896 5695232 1613312 5697192 1613232 5695376 1657088 5639464 -1613528 5697360 1613640 5697488 1613232 5695376 1613312 5697192 -1613640 5697488 1613696 5697608 1613232 5695376 1613528 5697360 -1612896 5695232 1613072 5696952 1613312 5697192 1613232 5695376 -1612896 5695232 1613072 5696952 1613232 5695376 1657088 5639464 -1612896 5695232 1612736 5696520 1613072 5696952 1613232 5695376 -1612896 5695232 1612736 5696520 1613232 5695376 1657088 5639464 -1612736 5696520 1613008 5696896 1613072 5696952 1613232 5695376 -1612736 5696520 1612840 5696712 1613008 5696896 1613232 5695376 -1613008 5696896 1613072 5696952 1613232 5695376 1612840 5696712 -1612896 5695232 1612560 5696144 1612736 5696520 1613232 5695376 -1612896 5695232 1612560 5696144 1613232 5695376 1657088 5639464 -1612896 5695232 1612480 5696016 1612560 5696144 1613232 5695376 -1612896 5695232 1612480 5696016 1613232 5695376 1657088 5639464 -1612560 5696144 1612736 5696520 1613232 5695376 1612480 5696016 -1612736 5696520 1612840 5696712 1613232 5695376 1612560 5696144 -1613312 5697192 1613528 5697360 1613232 5695376 1613072 5696952 -1613072 5696952 1613312 5697192 1613232 5695376 1613008 5696896 -1612896 5695232 1612248 5695760 1612480 5696016 1613232 5695376 -1615968 5699848 1621576 5701360 1613232 5695376 1613696 5697608 -1612896 5695232 1613232 5695376 1657088 5639464 1601624 5681136 -1613232 5695376 1663776 5646144 1657088 5639464 1601624 5681136 -1612896 5695232 1612480 5696016 1613232 5695376 1601624 5681136 -1657088 5639464 1601592 5681064 1601624 5681136 1613232 5695376 -1657088 5639464 1601592 5681064 1613232 5695376 1663776 5646144 -1657088 5639464 1601560 5681032 1601592 5681064 1613232 5695376 -1601624 5681136 1612896 5695232 1613232 5695376 1601592 5681064 -1612896 5695232 1613232 5695376 1601624 5681136 1612648 5695152 -1663776 5646144 1613448 5695424 1623192 5701576 1623296 5701624 -1613232 5695376 1613448 5695424 1663776 5646144 1657088 5639464 -1613232 5695376 1613448 5695424 1657088 5639464 1601592 5681064 -1613448 5695424 1663776 5646144 1657088 5639464 1601592 5681064 -1613232 5695376 1623192 5701576 1613448 5695424 1601592 5681064 -1623192 5701576 1613448 5695424 1613232 5695376 1623016 5701528 -1613232 5695376 1621712 5701344 1623016 5701528 1613448 5695424 -1613232 5695376 1621576 5701360 1621712 5701344 1613448 5695424 -1621712 5701344 1623016 5701528 1613448 5695424 1621576 5701360 -1613448 5695424 1601592 5681064 1613232 5695376 1621576 5701360 -1623016 5701528 1623192 5701576 1613448 5695424 1621712 5701344 -1613448 5695424 1623192 5701576 1663776 5646144 1657088 5639464 -1623192 5701576 1663776 5646144 1613448 5695424 1623016 5701528 -1613232 5695376 1613448 5695424 1601592 5681064 1601624 5681136 -1613448 5695424 1657088 5639464 1601592 5681064 1601624 5681136 -1613232 5695376 1621576 5701360 1613448 5695424 1601624 5681136 -1663776 5646144 1663688 5645984 1657088 5639464 1613448 5695424 -1613232 5695376 1615968 5699848 1621576 5701360 1613448 5695424 -1615968 5699848 1621488 5701424 1621576 5701360 1613448 5695424 -1621576 5701360 1621712 5701344 1613448 5695424 1615968 5699848 -1613232 5695376 1615968 5699848 1613448 5695424 1601624 5681136 -1621712 5701344 1622880 5701536 1623016 5701528 1613448 5695424 -1657088 5639464 1601560 5681032 1601592 5681064 1613448 5695424 -1613232 5695376 1613696 5697608 1615968 5699848 1613448 5695424 -1613232 5695376 1613696 5697608 1613448 5695424 1601624 5681136 -1615968 5699848 1621576 5701360 1613448 5695424 1613696 5697608 -1613696 5697608 1613728 5697776 1615968 5699848 1613448 5695424 -1613232 5695376 1613640 5697488 1613696 5697608 1613448 5695424 -1613232 5695376 1613640 5697488 1613448 5695424 1601624 5681136 -1613232 5695376 1613528 5697360 1613640 5697488 1613448 5695424 -1613232 5695376 1613528 5697360 1613448 5695424 1601624 5681136 -1613640 5697488 1613696 5697608 1613448 5695424 1613528 5697360 -1613232 5695376 1613312 5697192 1613528 5697360 1613448 5695424 -1613232 5695376 1613312 5697192 1613448 5695424 1601624 5681136 -1613232 5695376 1613072 5696952 1613312 5697192 1613448 5695424 -1613232 5695376 1613072 5696952 1613448 5695424 1601624 5681136 -1613312 5697192 1613528 5697360 1613448 5695424 1613072 5696952 -1613528 5697360 1613640 5697488 1613448 5695424 1613312 5697192 -1613232 5695376 1613008 5696896 1613072 5696952 1613448 5695424 -1613232 5695376 1613008 5696896 1613448 5695424 1601624 5681136 -1613232 5695376 1612840 5696712 1613008 5696896 1613448 5695424 -1613232 5695376 1612840 5696712 1613448 5695424 1601624 5681136 -1613232 5695376 1612736 5696520 1612840 5696712 1613448 5695424 -1613232 5695376 1612736 5696520 1613448 5695424 1601624 5681136 -1612840 5696712 1613008 5696896 1613448 5695424 1612736 5696520 -1613232 5695376 1612560 5696144 1612736 5696520 1613448 5695424 -1613232 5695376 1612560 5696144 1613448 5695424 1601624 5681136 -1612736 5696520 1612840 5696712 1613448 5695424 1612560 5696144 -1613232 5695376 1612480 5696016 1612560 5696144 1613448 5695424 -1613072 5696952 1613312 5697192 1613448 5695424 1613008 5696896 -1613008 5696896 1613072 5696952 1613448 5695424 1612840 5696712 -1613696 5697608 1615968 5699848 1613448 5695424 1613640 5697488 -1613232 5695376 1613448 5695424 1601624 5681136 1612896 5695232 -1613232 5695376 1612560 5696144 1613448 5695424 1612896 5695232 -1613448 5695424 1601592 5681064 1601624 5681136 1612896 5695232 -1601624 5681136 1612648 5695152 1612896 5695232 1613448 5695424 -1663776 5646144 1613656 5695408 1623192 5701576 1623296 5701624 -1613448 5695424 1613656 5695408 1663776 5646144 1657088 5639464 -1613448 5695424 1613656 5695408 1657088 5639464 1601592 5681064 -1613448 5695424 1613656 5695408 1601592 5681064 1601624 5681136 -1613656 5695408 1657088 5639464 1601592 5681064 1601624 5681136 -1613656 5695408 1663776 5646144 1657088 5639464 1601592 5681064 -1613448 5695424 1623192 5701576 1613656 5695408 1601624 5681136 -1623192 5701576 1613656 5695408 1613448 5695424 1623016 5701528 -1613448 5695424 1621712 5701344 1623016 5701528 1613656 5695408 -1613448 5695424 1621576 5701360 1621712 5701344 1613656 5695408 -1613448 5695424 1615968 5699848 1621576 5701360 1613656 5695408 -1615968 5699848 1621488 5701424 1621576 5701360 1613656 5695408 -1621576 5701360 1621712 5701344 1613656 5695408 1615968 5699848 -1621712 5701344 1623016 5701528 1613656 5695408 1621576 5701360 -1613656 5695408 1601624 5681136 1613448 5695424 1615968 5699848 -1623016 5701528 1623192 5701576 1613656 5695408 1621712 5701344 -1613656 5695408 1623192 5701576 1663776 5646144 1657088 5639464 -1623192 5701576 1663776 5646144 1613656 5695408 1623016 5701528 -1613448 5695424 1613656 5695408 1601624 5681136 1612896 5695232 -1613656 5695408 1601592 5681064 1601624 5681136 1612896 5695232 -1613448 5695424 1615968 5699848 1613656 5695408 1612896 5695232 -1663776 5646144 1663688 5645984 1657088 5639464 1613656 5695408 -1613448 5695424 1613696 5697608 1615968 5699848 1613656 5695408 -1615968 5699848 1621576 5701360 1613656 5695408 1613696 5697608 -1613448 5695424 1613696 5697608 1613656 5695408 1612896 5695232 -1621712 5701344 1622880 5701536 1623016 5701528 1613656 5695408 -1613696 5697608 1613728 5697776 1615968 5699848 1613656 5695408 -1657088 5639464 1601560 5681032 1601592 5681064 1613656 5695408 -1613448 5695424 1613640 5697488 1613696 5697608 1613656 5695408 -1613448 5695424 1613640 5697488 1613656 5695408 1612896 5695232 -1613696 5697608 1615968 5699848 1613656 5695408 1613640 5697488 -1613448 5695424 1613528 5697360 1613640 5697488 1613656 5695408 -1613448 5695424 1613528 5697360 1613656 5695408 1612896 5695232 -1613448 5695424 1613312 5697192 1613528 5697360 1613656 5695408 -1613448 5695424 1613312 5697192 1613656 5695408 1612896 5695232 -1613528 5697360 1613640 5697488 1613656 5695408 1613312 5697192 -1613448 5695424 1613072 5696952 1613312 5697192 1613656 5695408 -1613448 5695424 1613072 5696952 1613656 5695408 1612896 5695232 -1613448 5695424 1613008 5696896 1613072 5696952 1613656 5695408 -1613312 5697192 1613528 5697360 1613656 5695408 1613072 5696952 -1613640 5697488 1613696 5697608 1613656 5695408 1613528 5697360 -1613448 5695424 1613656 5695408 1612896 5695232 1613232 5695376 -1613448 5695424 1613072 5696952 1613656 5695408 1613232 5695376 -1613656 5695408 1601624 5681136 1612896 5695232 1613232 5695376 -1601624 5681136 1612648 5695152 1612896 5695232 1613656 5695408 -1601624 5681136 1612648 5695152 1613656 5695408 1601592 5681064 -1612896 5695232 1613232 5695376 1613656 5695408 1612648 5695152 -1601624 5681136 1612160 5695080 1612648 5695152 1613656 5695408 -1663776 5646144 1613744 5695376 1623192 5701576 1623296 5701624 -1613656 5695408 1613744 5695376 1663776 5646144 1657088 5639464 -1613656 5695408 1613744 5695376 1657088 5639464 1601592 5681064 -1613656 5695408 1613744 5695376 1601592 5681064 1601624 5681136 -1613656 5695408 1613744 5695376 1601624 5681136 1612648 5695152 -1613744 5695376 1601592 5681064 1601624 5681136 1612648 5695152 -1613744 5695376 1657088 5639464 1601592 5681064 1601624 5681136 -1613744 5695376 1663776 5646144 1657088 5639464 1601592 5681064 -1613656 5695408 1623192 5701576 1613744 5695376 1612648 5695152 -1623192 5701576 1613744 5695376 1613656 5695408 1623016 5701528 -1613656 5695408 1621712 5701344 1623016 5701528 1613744 5695376 -1613656 5695408 1621576 5701360 1621712 5701344 1613744 5695376 -1613656 5695408 1615968 5699848 1621576 5701360 1613744 5695376 -1615968 5699848 1621488 5701424 1621576 5701360 1613744 5695376 -1613656 5695408 1613696 5697608 1615968 5699848 1613744 5695376 -1615968 5699848 1621576 5701360 1613744 5695376 1613696 5697608 -1621576 5701360 1621712 5701344 1613744 5695376 1615968 5699848 -1621712 5701344 1623016 5701528 1613744 5695376 1621576 5701360 -1613744 5695376 1612648 5695152 1613656 5695408 1613696 5697608 -1623016 5701528 1623192 5701576 1613744 5695376 1621712 5701344 -1613744 5695376 1623192 5701576 1663776 5646144 1657088 5639464 -1623192 5701576 1663776 5646144 1613744 5695376 1623016 5701528 -1663776 5646144 1663688 5645984 1657088 5639464 1613744 5695376 -1613656 5695408 1613640 5697488 1613696 5697608 1613744 5695376 -1613696 5697608 1615968 5699848 1613744 5695376 1613640 5697488 -1613656 5695408 1613640 5697488 1613744 5695376 1612648 5695152 -1621712 5701344 1622880 5701536 1623016 5701528 1613744 5695376 -1613696 5697608 1613728 5697776 1615968 5699848 1613744 5695376 -1657088 5639464 1601560 5681032 1601592 5681064 1613744 5695376 -1601624 5681136 1612160 5695080 1612648 5695152 1613744 5695376 -1613656 5695408 1613528 5697360 1613640 5697488 1613744 5695376 -1613656 5695408 1613528 5697360 1613744 5695376 1612648 5695152 -1613640 5697488 1613696 5697608 1613744 5695376 1613528 5697360 -1613656 5695408 1613312 5697192 1613528 5697360 1613744 5695376 -1613656 5695408 1613312 5697192 1613744 5695376 1612648 5695152 -1613656 5695408 1613072 5696952 1613312 5697192 1613744 5695376 -1613528 5697360 1613640 5697488 1613744 5695376 1613312 5697192 -1613656 5695408 1613744 5695376 1612648 5695152 1612896 5695232 -1613744 5695376 1601624 5681136 1612648 5695152 1612896 5695232 -1613656 5695408 1613312 5697192 1613744 5695376 1612896 5695232 -1613656 5695408 1613744 5695376 1612896 5695232 1613232 5695376 -1613656 5695408 1613312 5697192 1613744 5695376 1613232 5695376 -1613656 5695408 1613744 5695376 1613232 5695376 1613448 5695424 -1613656 5695408 1613312 5697192 1613744 5695376 1613448 5695424 -1613744 5695376 1612896 5695232 1613232 5695376 1613448 5695424 -1613744 5695376 1612648 5695152 1612896 5695232 1613232 5695376 -1663776 5646144 1613792 5695344 1623192 5701576 1623296 5701624 -1613744 5695376 1613792 5695344 1663776 5646144 1657088 5639464 -1613792 5695344 1623192 5701576 1663776 5646144 1657088 5639464 -1613744 5695376 1613792 5695344 1657088 5639464 1601592 5681064 -1613744 5695376 1613792 5695344 1601592 5681064 1601624 5681136 -1613744 5695376 1613792 5695344 1601624 5681136 1612648 5695152 -1613744 5695376 1613792 5695344 1612648 5695152 1612896 5695232 -1613792 5695344 1601624 5681136 1612648 5695152 1612896 5695232 -1613792 5695344 1601592 5681064 1601624 5681136 1612648 5695152 -1613792 5695344 1657088 5639464 1601592 5681064 1601624 5681136 -1613792 5695344 1663776 5646144 1657088 5639464 1601592 5681064 -1613744 5695376 1623192 5701576 1613792 5695344 1612896 5695232 -1623192 5701576 1613792 5695344 1613744 5695376 1623016 5701528 -1623192 5701576 1663776 5646144 1613792 5695344 1623016 5701528 -1613744 5695376 1621712 5701344 1623016 5701528 1613792 5695344 -1613744 5695376 1621576 5701360 1621712 5701344 1613792 5695344 -1613744 5695376 1615968 5699848 1621576 5701360 1613792 5695344 -1615968 5699848 1621488 5701424 1621576 5701360 1613792 5695344 -1613744 5695376 1613696 5697608 1615968 5699848 1613792 5695344 -1613744 5695376 1613640 5697488 1613696 5697608 1613792 5695344 -1613696 5697608 1615968 5699848 1613792 5695344 1613640 5697488 -1615968 5699848 1621576 5701360 1613792 5695344 1613696 5697608 -1621576 5701360 1621712 5701344 1613792 5695344 1615968 5699848 -1621712 5701344 1623016 5701528 1613792 5695344 1621576 5701360 -1613792 5695344 1612896 5695232 1613744 5695376 1613640 5697488 -1623016 5701528 1623192 5701576 1613792 5695344 1621712 5701344 -1663776 5646144 1663688 5645984 1657088 5639464 1613792 5695344 -1613744 5695376 1613528 5697360 1613640 5697488 1613792 5695344 -1613640 5697488 1613696 5697608 1613792 5695344 1613528 5697360 -1613744 5695376 1613528 5697360 1613792 5695344 1612896 5695232 -1621712 5701344 1622880 5701536 1623016 5701528 1613792 5695344 -1613696 5697608 1613728 5697776 1615968 5699848 1613792 5695344 -1657088 5639464 1601560 5681032 1601592 5681064 1613792 5695344 -1601624 5681136 1612160 5695080 1612648 5695152 1613792 5695344 -1613744 5695376 1613312 5697192 1613528 5697360 1613792 5695344 -1613744 5695376 1613792 5695344 1612896 5695232 1613232 5695376 -1613792 5695344 1612648 5695152 1612896 5695232 1613232 5695376 -1613744 5695376 1613528 5697360 1613792 5695344 1613232 5695376 -1613744 5695376 1613792 5695344 1613232 5695376 1613448 5695424 -1613744 5695376 1613528 5697360 1613792 5695344 1613448 5695424 -1613744 5695376 1613792 5695344 1613448 5695424 1613656 5695408 -1613744 5695376 1613528 5697360 1613792 5695344 1613656 5695408 -1613792 5695344 1613232 5695376 1613448 5695424 1613656 5695408 -1613792 5695344 1612896 5695232 1613232 5695376 1613448 5695424 -1663776 5646144 1613832 5695328 1623192 5701576 1623296 5701624 -1613792 5695344 1613832 5695328 1663776 5646144 1657088 5639464 -1613792 5695344 1623192 5701576 1613832 5695328 1657088 5639464 -1623192 5701576 1613832 5695328 1613792 5695344 1623016 5701528 -1613832 5695328 1657088 5639464 1613792 5695344 1623016 5701528 -1613832 5695328 1623192 5701576 1663776 5646144 1657088 5639464 -1623192 5701576 1663776 5646144 1613832 5695328 1623016 5701528 -1613792 5695344 1613832 5695328 1657088 5639464 1601592 5681064 -1613832 5695328 1663776 5646144 1657088 5639464 1601592 5681064 -1613792 5695344 1623016 5701528 1613832 5695328 1601592 5681064 -1613792 5695344 1613832 5695328 1601592 5681064 1601624 5681136 -1613792 5695344 1623016 5701528 1613832 5695328 1601624 5681136 -1613792 5695344 1613832 5695328 1601624 5681136 1612648 5695152 -1613792 5695344 1623016 5701528 1613832 5695328 1612648 5695152 -1613792 5695344 1613832 5695328 1612648 5695152 1612896 5695232 -1613792 5695344 1613832 5695328 1612896 5695232 1613232 5695376 -1613792 5695344 1623016 5701528 1613832 5695328 1613232 5695376 -1613832 5695328 1612648 5695152 1612896 5695232 1613232 5695376 -1613832 5695328 1601624 5681136 1612648 5695152 1612896 5695232 -1613832 5695328 1601592 5681064 1601624 5681136 1612648 5695152 -1613832 5695328 1657088 5639464 1601592 5681064 1601624 5681136 -1613792 5695344 1621712 5701344 1623016 5701528 1613832 5695328 -1613792 5695344 1621712 5701344 1613832 5695328 1613232 5695376 -1623016 5701528 1623192 5701576 1613832 5695328 1621712 5701344 -1613792 5695344 1621576 5701360 1621712 5701344 1613832 5695328 -1613792 5695344 1621576 5701360 1613832 5695328 1613232 5695376 -1613792 5695344 1615968 5699848 1621576 5701360 1613832 5695328 -1615968 5699848 1621488 5701424 1621576 5701360 1613832 5695328 -1613792 5695344 1615968 5699848 1613832 5695328 1613232 5695376 -1613792 5695344 1613696 5697608 1615968 5699848 1613832 5695328 -1613792 5695344 1613640 5697488 1613696 5697608 1613832 5695328 -1613792 5695344 1613528 5697360 1613640 5697488 1613832 5695328 -1613640 5697488 1613696 5697608 1613832 5695328 1613528 5697360 -1613792 5695344 1613528 5697360 1613832 5695328 1613232 5695376 -1613696 5697608 1615968 5699848 1613832 5695328 1613640 5697488 -1615968 5699848 1621576 5701360 1613832 5695328 1613696 5697608 -1621576 5701360 1621712 5701344 1613832 5695328 1615968 5699848 -1621712 5701344 1623016 5701528 1613832 5695328 1621576 5701360 -1663776 5646144 1663688 5645984 1657088 5639464 1613832 5695328 -1613792 5695344 1613744 5695376 1613528 5697360 1613832 5695328 -1613528 5697360 1613640 5697488 1613832 5695328 1613744 5695376 -1613792 5695344 1613744 5695376 1613832 5695328 1613232 5695376 -1621712 5701344 1622880 5701536 1623016 5701528 1613832 5695328 -1613696 5697608 1613728 5697776 1615968 5699848 1613832 5695328 -1657088 5639464 1601560 5681032 1601592 5681064 1613832 5695328 -1601624 5681136 1612160 5695080 1612648 5695152 1613832 5695328 -1613744 5695376 1613312 5697192 1613528 5697360 1613832 5695328 -1613792 5695344 1613832 5695328 1613232 5695376 1613448 5695424 -1657088 5639464 1613864 5695256 1613832 5695328 1663776 5646144 -1613832 5695328 1623192 5701576 1663776 5646144 1613864 5695256 -1623192 5701576 1623296 5701624 1663776 5646144 1613864 5695256 -1663776 5646144 1657088 5639464 1613864 5695256 1623192 5701576 -1613864 5695256 1601592 5681064 1613832 5695328 1623192 5701576 -1613832 5695328 1623016 5701528 1623192 5701576 1613864 5695256 -1613832 5695328 1621712 5701344 1623016 5701528 1613864 5695256 -1623192 5701576 1663776 5646144 1613864 5695256 1623016 5701528 -1613832 5695328 1621712 5701344 1613864 5695256 1601592 5681064 -1623016 5701528 1623192 5701576 1613864 5695256 1621712 5701344 -1613832 5695328 1613864 5695256 1601592 5681064 1601624 5681136 -1613832 5695328 1621712 5701344 1613864 5695256 1601624 5681136 -1613864 5695256 1657088 5639464 1601592 5681064 1601624 5681136 -1613832 5695328 1613864 5695256 1601624 5681136 1612648 5695152 -1613832 5695328 1621712 5701344 1613864 5695256 1612648 5695152 -1613832 5695328 1613864 5695256 1612648 5695152 1612896 5695232 -1613832 5695328 1621712 5701344 1613864 5695256 1612896 5695232 -1613832 5695328 1613864 5695256 1612896 5695232 1613232 5695376 -1613832 5695328 1613864 5695256 1613232 5695376 1613792 5695344 -1613832 5695328 1621712 5701344 1613864 5695256 1613792 5695344 -1613864 5695256 1612896 5695232 1613232 5695376 1613792 5695344 -1613864 5695256 1612648 5695152 1612896 5695232 1613232 5695376 -1613864 5695256 1601624 5681136 1612648 5695152 1612896 5695232 -1613864 5695256 1601592 5681064 1601624 5681136 1612648 5695152 -1613832 5695328 1621576 5701360 1621712 5701344 1613864 5695256 -1621712 5701344 1623016 5701528 1613864 5695256 1621576 5701360 -1613832 5695328 1621576 5701360 1613864 5695256 1613792 5695344 -1613832 5695328 1615968 5699848 1621576 5701360 1613864 5695256 -1615968 5699848 1621488 5701424 1621576 5701360 1613864 5695256 -1613832 5695328 1615968 5699848 1613864 5695256 1613792 5695344 -1613832 5695328 1613696 5697608 1615968 5699848 1613864 5695256 -1621576 5701360 1621712 5701344 1613864 5695256 1615968 5699848 -1657088 5639464 1601592 5681064 1613864 5695256 1663776 5646144 -1657088 5639464 1613864 5695256 1663776 5646144 1663688 5645984 -1621712 5701344 1622880 5701536 1623016 5701528 1613864 5695256 -1601592 5681064 1613864 5695256 1657088 5639464 1601560 5681032 -1601624 5681136 1612160 5695080 1612648 5695152 1613864 5695256 -1613232 5695376 1613448 5695424 1613792 5695344 1613864 5695256 -1613792 5695344 1613832 5695328 1613864 5695256 1613448 5695424 -1613232 5695376 1613448 5695424 1613864 5695256 1612896 5695232 -1613448 5695424 1613656 5695408 1613792 5695344 1613864 5695256 -1613792 5695344 1613832 5695328 1613864 5695256 1613656 5695408 -1613656 5695408 1613744 5695376 1613792 5695344 1613864 5695256 -1613792 5695344 1613832 5695328 1613864 5695256 1613744 5695376 -1613656 5695408 1613744 5695376 1613864 5695256 1613448 5695424 -1613448 5695424 1613656 5695408 1613864 5695256 1613232 5695376 -1613864 5695256 1613840 5695128 1601592 5681064 1601624 5681136 -1613864 5695256 1613840 5695128 1601624 5681136 1612648 5695152 -1613840 5695128 1601592 5681064 1601624 5681136 1612648 5695152 -1613864 5695256 1613840 5695128 1612648 5695152 1612896 5695232 -1613864 5695256 1613840 5695128 1612896 5695232 1613232 5695376 -1613864 5695256 1613840 5695128 1613232 5695376 1613448 5695424 -1613840 5695128 1612896 5695232 1613232 5695376 1613448 5695424 -1613840 5695128 1612648 5695152 1612896 5695232 1613232 5695376 -1613840 5695128 1601624 5681136 1612648 5695152 1612896 5695232 -1613864 5695256 1657088 5639464 1613840 5695128 1613448 5695424 -1657088 5639464 1613840 5695128 1613864 5695256 1663776 5646144 -1613864 5695256 1623192 5701576 1663776 5646144 1613840 5695128 -1623192 5701576 1623296 5701624 1663776 5646144 1613840 5695128 -1623296 5701624 1663880 5646248 1663776 5646144 1613840 5695128 -1623192 5701576 1623296 5701624 1613840 5695128 1613864 5695256 -1613864 5695256 1623016 5701528 1623192 5701576 1613840 5695128 -1623192 5701576 1623296 5701624 1613840 5695128 1623016 5701528 -1613864 5695256 1621712 5701344 1623016 5701528 1613840 5695128 -1613864 5695256 1621576 5701360 1621712 5701344 1613840 5695128 -1623016 5701528 1623192 5701576 1613840 5695128 1621712 5701344 -1613840 5695128 1613448 5695424 1613864 5695256 1621712 5701344 -1663776 5646144 1657088 5639464 1613840 5695128 1623296 5701624 -1613840 5695128 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1613840 5695128 1663776 5646144 -1657088 5639464 1613840 5695128 1663776 5646144 1663688 5645984 -1621712 5701344 1622880 5701536 1623016 5701528 1613840 5695128 -1601592 5681064 1613840 5695128 1657088 5639464 1601560 5681032 -1601624 5681136 1612160 5695080 1612648 5695152 1613840 5695128 -1601624 5681136 1612160 5695080 1613840 5695128 1601592 5681064 -1612648 5695152 1612896 5695232 1613840 5695128 1612160 5695080 -1601624 5681136 1601592 5681216 1612160 5695080 1613840 5695128 -1612160 5695080 1612240 5695096 1612648 5695152 1613840 5695128 -1613864 5695256 1613840 5695128 1613448 5695424 1613656 5695408 -1613840 5695128 1613232 5695376 1613448 5695424 1613656 5695408 -1613864 5695256 1621712 5701344 1613840 5695128 1613656 5695408 -1613864 5695256 1613840 5695128 1613656 5695408 1613744 5695376 -1613864 5695256 1621712 5701344 1613840 5695128 1613744 5695376 -1613864 5695256 1613840 5695128 1613744 5695376 1613792 5695344 -1613864 5695256 1613840 5695128 1613792 5695344 1613832 5695328 -1613864 5695256 1621712 5701344 1613840 5695128 1613792 5695344 -1613840 5695128 1613656 5695408 1613744 5695376 1613792 5695344 -1613840 5695128 1613448 5695424 1613656 5695408 1613744 5695376 -1613840 5695128 1613728 5694936 1601592 5681064 1601624 5681136 -1613840 5695128 1613728 5694936 1601624 5681136 1612160 5695080 -1613728 5694936 1601592 5681064 1601624 5681136 1612160 5695080 -1613840 5695128 1657088 5639464 1613728 5694936 1612160 5695080 -1657088 5639464 1613728 5694936 1613840 5695128 1663776 5646144 -1613840 5695128 1623296 5701624 1663776 5646144 1613728 5694936 -1623296 5701624 1663880 5646248 1663776 5646144 1613728 5694936 -1613840 5695128 1623192 5701576 1623296 5701624 1613728 5694936 -1613840 5695128 1623016 5701528 1623192 5701576 1613728 5694936 -1623192 5701576 1623296 5701624 1613728 5694936 1623016 5701528 -1613840 5695128 1621712 5701344 1623016 5701528 1613728 5694936 -1623296 5701624 1663776 5646144 1613728 5694936 1623192 5701576 -1613728 5694936 1612160 5695080 1613840 5695128 1623016 5701528 -1663776 5646144 1657088 5639464 1613728 5694936 1623296 5701624 -1613728 5694936 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1613728 5694936 1663776 5646144 -1657088 5639464 1613728 5694936 1663776 5646144 1663688 5645984 -1601592 5681064 1613728 5694936 1657088 5639464 1601560 5681032 -1613840 5695128 1613728 5694936 1612160 5695080 1612648 5695152 -1613728 5694936 1601624 5681136 1612160 5695080 1612648 5695152 -1613840 5695128 1613728 5694936 1612648 5695152 1612896 5695232 -1613840 5695128 1613728 5694936 1612896 5695232 1613232 5695376 -1613840 5695128 1613728 5694936 1613232 5695376 1613448 5695424 -1613840 5695128 1613728 5694936 1613448 5695424 1613656 5695408 -1613728 5694936 1613232 5695376 1613448 5695424 1613656 5695408 -1613728 5694936 1612896 5695232 1613232 5695376 1613448 5695424 -1613728 5694936 1612648 5695152 1612896 5695232 1613232 5695376 -1613840 5695128 1623016 5701528 1613728 5694936 1613656 5695408 -1613728 5694936 1612160 5695080 1612648 5695152 1612896 5695232 -1601624 5681136 1601592 5681216 1612160 5695080 1613728 5694936 -1612160 5695080 1612240 5695096 1612648 5695152 1613728 5694936 -1612160 5695080 1612240 5695096 1613728 5694936 1601624 5681136 -1612648 5695152 1612896 5695232 1613728 5694936 1612240 5695096 -1612160 5695080 1612184 5695104 1612240 5695096 1613728 5694936 -1613840 5695128 1613728 5694936 1613656 5695408 1613744 5695376 -1613728 5694936 1613688 5694912 1612160 5695080 1612240 5695096 -1613688 5694912 1601624 5681136 1612160 5695080 1612240 5695096 -1601624 5681136 1613688 5694912 1613728 5694936 1601592 5681064 -1613728 5694936 1601624 5681136 1613688 5694912 1612240 5695096 -1612160 5695080 1613688 5694912 1601624 5681136 1601592 5681216 -1613728 5694936 1613688 5694912 1612240 5695096 1612648 5695152 -1613688 5694912 1612160 5695080 1612240 5695096 1612648 5695152 -1613728 5694936 1601624 5681136 1613688 5694912 1612648 5695152 -1613728 5694936 1613688 5694912 1612648 5695152 1612896 5695232 -1613728 5694936 1613688 5694912 1612896 5695232 1613232 5695376 -1613728 5694936 1613688 5694912 1613232 5695376 1613448 5695424 -1613728 5694936 1613688 5694912 1613448 5695424 1613656 5695408 -1613728 5694936 1613688 5694912 1613656 5695408 1613840 5695128 -1613688 5694912 1613232 5695376 1613448 5695424 1613656 5695408 -1613688 5694912 1612896 5695232 1613232 5695376 1613448 5695424 -1613728 5694936 1601624 5681136 1613688 5694912 1613656 5695408 -1613688 5694912 1612648 5695152 1612896 5695232 1613232 5695376 -1613688 5694912 1612240 5695096 1612648 5695152 1612896 5695232 -1612160 5695080 1612184 5695104 1612240 5695096 1613688 5694912 -1613688 5694912 1613592 5694904 1612160 5695080 1612240 5695096 -1613688 5694912 1613592 5694904 1612240 5695096 1612648 5695152 -1613592 5694904 1612160 5695080 1612240 5695096 1612648 5695152 -1613688 5694912 1601624 5681136 1613592 5694904 1612648 5695152 -1601624 5681136 1613592 5694904 1613688 5694912 1613728 5694936 -1613592 5694904 1601624 5681136 1612160 5695080 1612240 5695096 -1612160 5695080 1613592 5694904 1601624 5681136 1601592 5681216 -1613688 5694912 1613592 5694904 1612648 5695152 1612896 5695232 -1613592 5694904 1612240 5695096 1612648 5695152 1612896 5695232 -1613688 5694912 1601624 5681136 1613592 5694904 1612896 5695232 -1613688 5694912 1613592 5694904 1612896 5695232 1613232 5695376 -1613688 5694912 1613592 5694904 1613232 5695376 1613448 5695424 -1613688 5694912 1613592 5694904 1613448 5695424 1613656 5695408 -1613688 5694912 1613592 5694904 1613656 5695408 1613728 5694936 -1613656 5695408 1613840 5695128 1613728 5694936 1613592 5694904 -1613728 5694936 1613688 5694912 1613592 5694904 1613840 5695128 -1613592 5694904 1613448 5695424 1613656 5695408 1613840 5695128 -1613592 5694904 1613232 5695376 1613448 5695424 1613656 5695408 -1613688 5694912 1601624 5681136 1613592 5694904 1613728 5694936 -1613592 5694904 1612896 5695232 1613232 5695376 1613448 5695424 -1613592 5694904 1612648 5695152 1612896 5695232 1613232 5695376 -1612160 5695080 1612184 5695104 1612240 5695096 1613592 5694904 -1613656 5695408 1613744 5695376 1613840 5695128 1613592 5694904 -1613592 5694904 1613384 5694896 1612160 5695080 1612240 5695096 -1613592 5694904 1613384 5694896 1612240 5695096 1612648 5695152 -1613592 5694904 1613384 5694896 1612648 5695152 1612896 5695232 -1613384 5694896 1612240 5695096 1612648 5695152 1612896 5695232 -1613384 5694896 1612160 5695080 1612240 5695096 1612648 5695152 -1613592 5694904 1601624 5681136 1613384 5694896 1612896 5695232 -1601624 5681136 1613384 5694896 1613592 5694904 1613688 5694912 -1613384 5694896 1601624 5681136 1612160 5695080 1612240 5695096 -1612160 5695080 1613384 5694896 1601624 5681136 1601592 5681216 -1613592 5694904 1613384 5694896 1612896 5695232 1613232 5695376 -1613384 5694896 1612648 5695152 1612896 5695232 1613232 5695376 -1613592 5694904 1601624 5681136 1613384 5694896 1613232 5695376 -1613592 5694904 1613384 5694896 1613232 5695376 1613448 5695424 -1613592 5694904 1613384 5694896 1613448 5695424 1613656 5695408 -1613592 5694904 1601624 5681136 1613384 5694896 1613448 5695424 -1613384 5694896 1612896 5695232 1613232 5695376 1613448 5695424 -1612160 5695080 1612184 5695104 1612240 5695096 1613384 5694896 -1613384 5694896 1613080 5694848 1612160 5695080 1612240 5695096 -1613384 5694896 1613080 5694848 1612240 5695096 1612648 5695152 -1613384 5694896 1613080 5694848 1612648 5695152 1612896 5695232 -1613384 5694896 1613080 5694848 1612896 5695232 1613232 5695376 -1613080 5694848 1612648 5695152 1612896 5695232 1613232 5695376 -1613080 5694848 1612240 5695096 1612648 5695152 1612896 5695232 -1613080 5694848 1612160 5695080 1612240 5695096 1612648 5695152 -1613384 5694896 1601624 5681136 1613080 5694848 1613232 5695376 -1601624 5681136 1613080 5694848 1613384 5694896 1613592 5694904 -1601624 5681136 1613080 5694848 1613592 5694904 1613688 5694912 -1601624 5681136 1613080 5694848 1613688 5694912 1613728 5694936 -1613080 5694848 1613232 5695376 1613384 5694896 1613592 5694904 -1613080 5694848 1613384 5694896 1613592 5694904 1613688 5694912 -1613080 5694848 1601624 5681136 1612160 5695080 1612240 5695096 -1601624 5681136 1612160 5695080 1613080 5694848 1613688 5694912 -1612160 5695080 1613080 5694848 1601624 5681136 1601592 5681216 -1612160 5695080 1612240 5695096 1613080 5694848 1601592 5681216 -1613080 5694848 1613688 5694912 1601624 5681136 1601592 5681216 -1612160 5695080 1613080 5694848 1601592 5681216 1601128 5681664 -1613384 5694896 1613080 5694848 1613232 5695376 1613448 5695424 -1612160 5695080 1612184 5695104 1612240 5695096 1613080 5694848 -1613080 5694848 1612712 5694704 1612160 5695080 1612240 5695096 -1613080 5694848 1612712 5694704 1612240 5695096 1612648 5695152 -1613080 5694848 1612712 5694704 1612648 5695152 1612896 5695232 -1612712 5694704 1612160 5695080 1612240 5695096 1612648 5695152 -1613080 5694848 1601592 5681216 1612712 5694704 1612648 5695152 -1612712 5694704 1601592 5681216 1612160 5695080 1612240 5695096 -1612160 5695080 1612712 5694704 1601592 5681216 1601128 5681664 -1601592 5681216 1612712 5694704 1613080 5694848 1601624 5681136 -1612712 5694704 1612648 5695152 1613080 5694848 1601624 5681136 -1613080 5694848 1613688 5694912 1601624 5681136 1612712 5694704 -1613688 5694912 1613728 5694936 1601624 5681136 1612712 5694704 -1613080 5694848 1613592 5694904 1613688 5694912 1612712 5694704 -1613080 5694848 1613384 5694896 1613592 5694904 1612712 5694704 -1613592 5694904 1613688 5694912 1612712 5694704 1613384 5694896 -1613080 5694848 1613384 5694896 1612712 5694704 1612648 5695152 -1613688 5694912 1601624 5681136 1612712 5694704 1613592 5694904 -1601592 5681216 1612160 5695080 1612712 5694704 1601624 5681136 -1601624 5681136 1601592 5681216 1612712 5694704 1613688 5694912 -1612160 5695080 1612184 5695104 1612240 5695096 1612712 5694704 -1601592 5681216 1612608 5694640 1612712 5694704 1601624 5681136 -1612608 5694640 1612160 5695080 1612712 5694704 1601624 5681136 -1601592 5681216 1612160 5695080 1612608 5694640 1601624 5681136 -1612712 5694704 1612608 5694640 1612160 5695080 1612240 5695096 -1612712 5694704 1612608 5694640 1612240 5695096 1612648 5695152 -1612712 5694704 1612608 5694640 1612648 5695152 1613080 5694848 -1612712 5694704 1601624 5681136 1612608 5694640 1612648 5695152 -1612608 5694640 1601592 5681216 1612160 5695080 1612240 5695096 -1612608 5694640 1612160 5695080 1612240 5695096 1612648 5695152 -1612160 5695080 1612608 5694640 1601592 5681216 1601128 5681664 -1612160 5695080 1612240 5695096 1612608 5694640 1601128 5681664 -1612608 5694640 1601624 5681136 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612608 5694640 -1612160 5695080 1612608 5694640 1601128 5681664 1601088 5681704 -1612160 5695080 1612240 5695096 1612608 5694640 1601088 5681704 -1612160 5695080 1612608 5694640 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612608 5694640 -1612160 5695080 1612240 5695096 1612608 5694640 1602112 5695896 -1612160 5695080 1612608 5694640 1602112 5695896 1602160 5695928 -1612608 5694640 1601128 5681664 1601088 5681704 1602112 5695896 -1612608 5694640 1601592 5681216 1601128 5681664 1601088 5681704 -1612712 5694704 1613688 5694912 1601624 5681136 1612608 5694640 -1613688 5694912 1613728 5694936 1601624 5681136 1612608 5694640 -1612712 5694704 1613592 5694904 1613688 5694912 1612608 5694640 -1612712 5694704 1613384 5694896 1613592 5694904 1612608 5694640 -1612712 5694704 1613080 5694848 1613384 5694896 1612608 5694640 -1613384 5694896 1613592 5694904 1612608 5694640 1613080 5694848 -1613592 5694904 1613688 5694912 1612608 5694640 1613384 5694896 -1612712 5694704 1613080 5694848 1612608 5694640 1612648 5695152 -1601624 5681136 1601592 5681216 1612608 5694640 1613688 5694912 -1613688 5694912 1601624 5681136 1612608 5694640 1613592 5694904 -1612160 5695080 1612184 5695104 1612240 5695096 1612608 5694640 -1601624 5681136 1612592 5694608 1613688 5694912 1613728 5694936 -1612608 5694640 1612592 5694608 1601624 5681136 1601592 5681216 -1612608 5694640 1613688 5694912 1612592 5694608 1601592 5681216 -1612608 5694640 1612592 5694608 1601592 5681216 1601128 5681664 -1612592 5694608 1601624 5681136 1601592 5681216 1601128 5681664 -1612608 5694640 1613688 5694912 1612592 5694608 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612592 5694608 -1612592 5694608 1613688 5694912 1601624 5681136 1601592 5681216 -1612608 5694640 1612592 5694608 1601128 5681664 1601088 5681704 -1612608 5694640 1613688 5694912 1612592 5694608 1601088 5681704 -1612592 5694608 1601592 5681216 1601128 5681664 1601088 5681704 -1612608 5694640 1612592 5694608 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612592 5694608 -1612608 5694640 1613688 5694912 1612592 5694608 1602112 5695896 -1612608 5694640 1612592 5694608 1602112 5695896 1612160 5695080 -1612608 5694640 1612592 5694608 1612160 5695080 1612240 5695096 -1612608 5694640 1613688 5694912 1612592 5694608 1612240 5695096 -1612608 5694640 1612592 5694608 1612240 5695096 1612648 5695152 -1602112 5695896 1602160 5695928 1612160 5695080 1612592 5694608 -1602160 5695928 1612136 5695120 1612160 5695080 1612592 5694608 -1612592 5694608 1602160 5695928 1612160 5695080 1612240 5695096 -1612592 5694608 1601088 5681704 1602112 5695896 1602160 5695928 -1612592 5694608 1601128 5681664 1601088 5681704 1602112 5695896 -1613688 5694912 1612592 5694608 1612608 5694640 1613592 5694904 -1612608 5694640 1613384 5694896 1613592 5694904 1612592 5694608 -1612608 5694640 1613080 5694848 1613384 5694896 1612592 5694608 -1612608 5694640 1612712 5694704 1613080 5694848 1612592 5694608 -1613080 5694848 1613384 5694896 1612592 5694608 1612712 5694704 -1613384 5694896 1613592 5694904 1612592 5694608 1613080 5694848 -1612592 5694608 1612240 5695096 1612608 5694640 1612712 5694704 -1613688 5694912 1601624 5681136 1612592 5694608 1613592 5694904 -1613592 5694904 1613688 5694912 1612592 5694608 1613384 5694896 -1612160 5695080 1612184 5695104 1612240 5695096 1612592 5694608 -1601624 5681136 1612584 5694512 1613688 5694912 1613728 5694936 -1612592 5694608 1612584 5694512 1601624 5681136 1601592 5681216 -1612592 5694608 1612584 5694512 1601592 5681216 1601128 5681664 -1612592 5694608 1612584 5694512 1601128 5681664 1601088 5681704 -1612584 5694512 1601592 5681216 1601128 5681664 1601088 5681704 -1601592 5681216 1601160 5681616 1601128 5681664 1612584 5694512 -1612584 5694512 1601624 5681136 1601592 5681216 1601128 5681664 -1612592 5694608 1613688 5694912 1612584 5694512 1601088 5681704 -1613688 5694912 1612584 5694512 1612592 5694608 1613592 5694904 -1612584 5694512 1601088 5681704 1612592 5694608 1613592 5694904 -1612584 5694512 1613688 5694912 1601624 5681136 1601592 5681216 -1613688 5694912 1601624 5681136 1612584 5694512 1613592 5694904 -1612592 5694608 1612584 5694512 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612584 5694512 -1612584 5694512 1601128 5681664 1601088 5681704 1602112 5695896 -1612592 5694608 1613592 5694904 1612584 5694512 1602112 5695896 -1612592 5694608 1612584 5694512 1602112 5695896 1602160 5695928 -1612592 5694608 1613592 5694904 1612584 5694512 1602160 5695928 -1612592 5694608 1612584 5694512 1602160 5695928 1612160 5695080 -1612592 5694608 1613592 5694904 1612584 5694512 1612160 5695080 -1602160 5695928 1612136 5695120 1612160 5695080 1612584 5694512 -1612592 5694608 1612584 5694512 1612160 5695080 1612240 5695096 -1612584 5694512 1602112 5695896 1602160 5695928 1612160 5695080 -1612584 5694512 1601088 5681704 1602112 5695896 1602160 5695928 -1612592 5694608 1613384 5694896 1613592 5694904 1612584 5694512 -1612592 5694608 1613080 5694848 1613384 5694896 1612584 5694512 -1612592 5694608 1612712 5694704 1613080 5694848 1612584 5694512 -1612592 5694608 1612608 5694640 1612712 5694704 1612584 5694512 -1613080 5694848 1613384 5694896 1612584 5694512 1612712 5694704 -1612592 5694608 1612712 5694704 1612584 5694512 1612160 5695080 -1613592 5694904 1613688 5694912 1612584 5694512 1613384 5694896 -1613384 5694896 1613592 5694904 1612584 5694512 1613080 5694848 -1601624 5681136 1612680 5694440 1613688 5694912 1613728 5694936 -1612584 5694512 1612680 5694440 1601624 5681136 1601592 5681216 -1612584 5694512 1612680 5694440 1601592 5681216 1601128 5681664 -1612584 5694512 1613688 5694912 1612680 5694440 1601592 5681216 -1613688 5694912 1612680 5694440 1612584 5694512 1613592 5694904 -1612584 5694512 1613384 5694896 1613592 5694904 1612680 5694440 -1612680 5694440 1601592 5681216 1612584 5694512 1613384 5694896 -1613592 5694904 1613688 5694912 1612680 5694440 1613384 5694896 -1612680 5694440 1613688 5694912 1601624 5681136 1601592 5681216 -1613688 5694912 1601624 5681136 1612680 5694440 1613592 5694904 -1612584 5694512 1613080 5694848 1613384 5694896 1612680 5694440 -1612584 5694512 1612712 5694704 1613080 5694848 1612680 5694440 -1612584 5694512 1612592 5694608 1612712 5694704 1612680 5694440 -1612592 5694608 1612608 5694640 1612712 5694704 1612680 5694440 -1612592 5694608 1612608 5694640 1612680 5694440 1612584 5694512 -1612712 5694704 1613080 5694848 1612680 5694440 1612608 5694640 -1613384 5694896 1613592 5694904 1612680 5694440 1613080 5694848 -1612584 5694512 1612592 5694608 1612680 5694440 1601592 5681216 -1613080 5694848 1613384 5694896 1612680 5694440 1612712 5694704 -1601624 5681136 1612848 5694408 1613688 5694912 1613728 5694936 -1612680 5694440 1612848 5694408 1601624 5681136 1601592 5681216 -1613688 5694912 1612848 5694408 1612680 5694440 1613592 5694904 -1612680 5694440 1613384 5694896 1613592 5694904 1612848 5694408 -1612680 5694440 1613080 5694848 1613384 5694896 1612848 5694408 -1613384 5694896 1613592 5694904 1612848 5694408 1613080 5694848 -1612848 5694408 1601624 5681136 1612680 5694440 1613080 5694848 -1613592 5694904 1613688 5694912 1612848 5694408 1613384 5694896 -1613688 5694912 1601624 5681136 1612848 5694408 1613592 5694904 -1612680 5694440 1612712 5694704 1613080 5694848 1612848 5694408 -1612680 5694440 1612608 5694640 1612712 5694704 1612848 5694408 -1613080 5694848 1613384 5694896 1612848 5694408 1612712 5694704 -1612680 5694440 1612712 5694704 1612848 5694408 1601624 5681136 -1601624 5681136 1612880 5694392 1613688 5694912 1613728 5694936 -1601624 5681136 1612880 5694392 1613728 5694936 1601592 5681064 -1613728 5694936 1657088 5639464 1601592 5681064 1612880 5694392 -1612880 5694392 1613688 5694912 1613728 5694936 1601592 5681064 -1612848 5694408 1612880 5694392 1601624 5681136 1612680 5694440 -1601624 5681136 1601592 5681216 1612680 5694440 1612880 5694392 -1601592 5681216 1612584 5694512 1612680 5694440 1612880 5694392 -1612680 5694440 1612848 5694408 1612880 5694392 1601592 5681216 -1612848 5694408 1613688 5694912 1612880 5694392 1612680 5694440 -1613688 5694912 1612880 5694392 1612848 5694408 1613592 5694904 -1612848 5694408 1613384 5694896 1613592 5694904 1612880 5694392 -1612848 5694408 1613080 5694848 1613384 5694896 1612880 5694392 -1612848 5694408 1612712 5694704 1613080 5694848 1612880 5694392 -1613384 5694896 1613592 5694904 1612880 5694392 1613080 5694848 -1612880 5694392 1612680 5694440 1612848 5694408 1613080 5694848 -1613592 5694904 1613688 5694912 1612880 5694392 1613384 5694896 -1601624 5681136 1601592 5681216 1612880 5694392 1601592 5681064 -1612880 5694392 1613592 5694904 1613688 5694912 1613728 5694936 -1612880 5694392 1612848 5694408 1613080 5694848 1612896 5694408 -1612848 5694408 1612712 5694704 1613080 5694848 1612896 5694408 -1612848 5694408 1612712 5694704 1612896 5694408 1612880 5694392 -1612880 5694392 1612848 5694408 1612896 5694408 1613592 5694904 -1612880 5694392 1612896 5694408 1613592 5694904 1613688 5694912 -1612880 5694392 1612848 5694408 1612896 5694408 1613688 5694912 -1613080 5694848 1613384 5694896 1612896 5694408 1612712 5694704 -1612880 5694392 1612896 5694408 1613688 5694912 1613728 5694936 -1612896 5694408 1613384 5694896 1613592 5694904 1613688 5694912 -1612848 5694408 1612680 5694440 1612712 5694704 1612896 5694408 -1612880 5694392 1612936 5694392 1601592 5681064 1601624 5681136 -1601592 5681064 1612936 5694392 1613728 5694936 1657088 5639464 -1613728 5694936 1663776 5646144 1657088 5639464 1612936 5694392 -1613728 5694936 1612936 5694392 1612880 5694392 1613688 5694912 -1612880 5694392 1612936 5694392 1601624 5681136 1601592 5681216 -1612880 5694392 1612896 5694408 1613688 5694912 1612936 5694392 -1613688 5694912 1613728 5694936 1612936 5694392 1612896 5694408 -1612896 5694408 1613592 5694904 1613688 5694912 1612936 5694392 -1613688 5694912 1613728 5694936 1612936 5694392 1613592 5694904 -1612896 5694408 1613592 5694904 1612936 5694392 1612880 5694392 -1612896 5694408 1613384 5694896 1613592 5694904 1612936 5694392 -1613592 5694904 1613688 5694912 1612936 5694392 1613384 5694896 -1612896 5694408 1613384 5694896 1612936 5694392 1612880 5694392 -1612896 5694408 1613080 5694848 1613384 5694896 1612936 5694392 -1612896 5694408 1612712 5694704 1613080 5694848 1612936 5694392 -1612896 5694408 1613080 5694848 1612936 5694392 1612880 5694392 -1613384 5694896 1613592 5694904 1612936 5694392 1613080 5694848 -1612880 5694392 1612896 5694408 1612936 5694392 1601624 5681136 -1612936 5694392 1657088 5639464 1601592 5681064 1601624 5681136 -1612936 5694392 1613688 5694912 1613728 5694936 1657088 5639464 -1601592 5681064 1612936 5694392 1657088 5639464 1601560 5681032 -1657088 5639464 1612952 5694360 1612936 5694392 1613728 5694936 -1657088 5639464 1612952 5694360 1613728 5694936 1663776 5646144 -1612936 5694392 1612952 5694360 1601592 5681064 1601624 5681136 -1612936 5694392 1612952 5694360 1601624 5681136 1612880 5694392 -1601624 5681136 1601592 5681216 1612880 5694392 1612952 5694360 -1612880 5694392 1612936 5694392 1612952 5694360 1601592 5681216 -1601592 5681216 1612680 5694440 1612880 5694392 1612952 5694360 -1612880 5694392 1612936 5694392 1612952 5694360 1612680 5694440 -1601592 5681216 1612584 5694512 1612680 5694440 1612952 5694360 -1612680 5694440 1612848 5694408 1612880 5694392 1612952 5694360 -1601592 5681216 1612680 5694440 1612952 5694360 1601624 5681136 -1612936 5694392 1612952 5694360 1612880 5694392 1612896 5694408 -1612952 5694360 1601592 5681064 1601624 5681136 1601592 5681216 -1612952 5694360 1612880 5694392 1612936 5694392 1613728 5694936 -1612936 5694392 1613688 5694912 1613728 5694936 1612952 5694360 -1613728 5694936 1657088 5639464 1612952 5694360 1613688 5694912 -1612936 5694392 1613592 5694904 1613688 5694912 1612952 5694360 -1612936 5694392 1613384 5694896 1613592 5694904 1612952 5694360 -1613592 5694904 1613688 5694912 1612952 5694360 1613384 5694896 -1612936 5694392 1613080 5694848 1613384 5694896 1612952 5694360 -1613384 5694896 1613592 5694904 1612952 5694360 1613080 5694848 -1612936 5694392 1612896 5694408 1613080 5694848 1612952 5694360 -1612936 5694392 1613080 5694848 1612952 5694360 1612880 5694392 -1613688 5694912 1613728 5694936 1612952 5694360 1613592 5694904 -1612952 5694360 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612952 5694360 1613728 5694936 -1601592 5681064 1612952 5694360 1657088 5639464 1601560 5681032 -1612952 5694360 1612936 5694272 1601592 5681064 1601624 5681136 -1612952 5694360 1612936 5694272 1601624 5681136 1601592 5681216 -1612952 5694360 1612936 5694272 1601592 5681216 1612680 5694440 -1601592 5681216 1612584 5694512 1612680 5694440 1612936 5694272 -1612952 5694360 1612936 5694272 1612680 5694440 1612880 5694392 -1612952 5694360 1612936 5694272 1612880 5694392 1612936 5694392 -1612680 5694440 1612848 5694408 1612880 5694392 1612936 5694272 -1612880 5694392 1612952 5694360 1612936 5694272 1612848 5694408 -1612936 5694272 1601592 5681216 1612680 5694440 1612848 5694408 -1612936 5694272 1601624 5681136 1601592 5681216 1612680 5694440 -1612936 5694272 1601592 5681064 1601624 5681136 1601592 5681216 -1612952 5694360 1657088 5639464 1612936 5694272 1612880 5694392 -1657088 5639464 1612936 5694272 1612952 5694360 1613728 5694936 -1612952 5694360 1613688 5694912 1613728 5694936 1612936 5694272 -1657088 5639464 1612936 5694272 1613728 5694936 1663776 5646144 -1613728 5694936 1623296 5701624 1663776 5646144 1612936 5694272 -1612952 5694360 1613592 5694904 1613688 5694912 1612936 5694272 -1613688 5694912 1613728 5694936 1612936 5694272 1613592 5694904 -1612952 5694360 1613384 5694896 1613592 5694904 1612936 5694272 -1612936 5694272 1612880 5694392 1612952 5694360 1613592 5694904 -1613728 5694936 1663776 5646144 1612936 5694272 1613688 5694912 -1612936 5694272 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612936 5694272 1663776 5646144 -1657088 5639464 1612936 5694272 1663776 5646144 1663688 5645984 -1601592 5681064 1612936 5694272 1657088 5639464 1601560 5681032 -1612936 5694272 1612944 5694152 1601592 5681064 1601624 5681136 -1612936 5694272 1612944 5694152 1601624 5681136 1601592 5681216 -1612936 5694272 1612944 5694152 1601592 5681216 1612680 5694440 -1601592 5681216 1612584 5694512 1612680 5694440 1612944 5694152 -1601592 5681216 1601128 5681664 1612584 5694512 1612944 5694152 -1601128 5681664 1601088 5681704 1612584 5694512 1612944 5694152 -1601088 5681704 1602112 5695896 1612584 5694512 1612944 5694152 -1601592 5681216 1601160 5681616 1601128 5681664 1612944 5694152 -1601128 5681664 1601088 5681704 1612944 5694152 1601592 5681216 -1612584 5694512 1612680 5694440 1612944 5694152 1601088 5681704 -1612936 5694272 1612944 5694152 1612680 5694440 1612848 5694408 -1612680 5694440 1612936 5694272 1612944 5694152 1612584 5694512 -1612944 5694152 1601624 5681136 1601592 5681216 1601128 5681664 -1612944 5694152 1601592 5681064 1601624 5681136 1601592 5681216 -1612936 5694272 1657088 5639464 1612944 5694152 1612680 5694440 -1657088 5639464 1612944 5694152 1612936 5694272 1663776 5646144 -1612936 5694272 1613728 5694936 1663776 5646144 1612944 5694152 -1613728 5694936 1623296 5701624 1663776 5646144 1612944 5694152 -1612936 5694272 1613688 5694912 1613728 5694936 1612944 5694152 -1612936 5694272 1613592 5694904 1613688 5694912 1612944 5694152 -1613728 5694936 1663776 5646144 1612944 5694152 1613688 5694912 -1612936 5694272 1612952 5694360 1613592 5694904 1612944 5694152 -1613592 5694904 1613688 5694912 1612944 5694152 1612952 5694360 -1612952 5694360 1613384 5694896 1613592 5694904 1612944 5694152 -1613688 5694912 1613728 5694936 1612944 5694152 1613592 5694904 -1612944 5694152 1612680 5694440 1612936 5694272 1612952 5694360 -1663776 5646144 1657088 5639464 1612944 5694152 1613728 5694936 -1612944 5694152 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612944 5694152 1663776 5646144 -1657088 5639464 1612944 5694152 1663776 5646144 1663688 5645984 -1601592 5681064 1612944 5694152 1657088 5639464 1601560 5681032 -1612944 5694152 1612920 5694072 1601592 5681064 1601624 5681136 -1612944 5694152 1612920 5694072 1601624 5681136 1601592 5681216 -1612944 5694152 1612920 5694072 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612920 5694072 -1612944 5694152 1612920 5694072 1601128 5681664 1601088 5681704 -1612944 5694152 1612920 5694072 1601088 5681704 1612584 5694512 -1601088 5681704 1602112 5695896 1612584 5694512 1612920 5694072 -1601088 5681704 1602016 5695848 1602112 5695896 1612920 5694072 -1612584 5694512 1612944 5694152 1612920 5694072 1602112 5695896 -1612920 5694072 1601128 5681664 1601088 5681704 1602112 5695896 -1612944 5694152 1612920 5694072 1612584 5694512 1612680 5694440 -1612920 5694072 1602112 5695896 1612584 5694512 1612680 5694440 -1612944 5694152 1612920 5694072 1612680 5694440 1612936 5694272 -1612920 5694072 1601592 5681216 1601128 5681664 1601088 5681704 -1612920 5694072 1601624 5681136 1601592 5681216 1601128 5681664 -1612920 5694072 1601592 5681064 1601624 5681136 1601592 5681216 -1612944 5694152 1657088 5639464 1612920 5694072 1612680 5694440 -1657088 5639464 1612920 5694072 1612944 5694152 1663776 5646144 -1612944 5694152 1613728 5694936 1663776 5646144 1612920 5694072 -1613728 5694936 1623296 5701624 1663776 5646144 1612920 5694072 -1623296 5701624 1663880 5646248 1663776 5646144 1612920 5694072 -1613728 5694936 1623192 5701576 1623296 5701624 1612920 5694072 -1613728 5694936 1623016 5701528 1623192 5701576 1612920 5694072 -1623296 5701624 1663776 5646144 1612920 5694072 1623192 5701576 -1612944 5694152 1613688 5694912 1613728 5694936 1612920 5694072 -1612944 5694152 1613592 5694904 1613688 5694912 1612920 5694072 -1613728 5694936 1623192 5701576 1612920 5694072 1613688 5694912 -1612920 5694072 1612680 5694440 1612944 5694152 1613688 5694912 -1663776 5646144 1657088 5639464 1612920 5694072 1623296 5701624 -1612920 5694072 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612920 5694072 1663776 5646144 -1657088 5639464 1612920 5694072 1663776 5646144 1663688 5645984 -1601592 5681064 1612920 5694072 1657088 5639464 1601560 5681032 -1602112 5695896 1602160 5695928 1612584 5694512 1612920 5694072 -1612584 5694512 1612680 5694440 1612920 5694072 1602160 5695928 -1602112 5695896 1602160 5695928 1612920 5694072 1601088 5681704 -1602160 5695928 1612160 5695080 1612584 5694512 1612920 5694072 -1612920 5694072 1612840 5693952 1601592 5681064 1601624 5681136 -1612920 5694072 1612840 5693952 1601624 5681136 1601592 5681216 -1612920 5694072 1612840 5693952 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612840 5693952 -1612920 5694072 1612840 5693952 1601128 5681664 1601088 5681704 -1612920 5694072 1612840 5693952 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612840 5693952 -1612920 5694072 1612840 5693952 1602112 5695896 1602160 5695928 -1612840 5693952 1601088 5681704 1602112 5695896 1602160 5695928 -1612840 5693952 1601128 5681664 1601088 5681704 1602112 5695896 -1612840 5693952 1601592 5681216 1601128 5681664 1601088 5681704 -1612840 5693952 1601624 5681136 1601592 5681216 1601128 5681664 -1612840 5693952 1601592 5681064 1601624 5681136 1601592 5681216 -1612920 5694072 1657088 5639464 1612840 5693952 1602160 5695928 -1657088 5639464 1612840 5693952 1612920 5694072 1663776 5646144 -1612920 5694072 1623296 5701624 1663776 5646144 1612840 5693952 -1623296 5701624 1663880 5646248 1663776 5646144 1612840 5693952 -1612920 5694072 1623192 5701576 1623296 5701624 1612840 5693952 -1612920 5694072 1613728 5694936 1623192 5701576 1612840 5693952 -1613728 5694936 1623016 5701528 1623192 5701576 1612840 5693952 -1623192 5701576 1623296 5701624 1612840 5693952 1613728 5694936 -1612920 5694072 1613688 5694912 1613728 5694936 1612840 5693952 -1623296 5701624 1663776 5646144 1612840 5693952 1623192 5701576 -1612840 5693952 1602160 5695928 1612920 5694072 1613728 5694936 -1663776 5646144 1657088 5639464 1612840 5693952 1623296 5701624 -1657088 5639464 1601592 5681064 1612840 5693952 1663776 5646144 -1612840 5693952 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1612840 5693952 1663776 5646144 1663688 5645984 -1601592 5681064 1612840 5693952 1657088 5639464 1601560 5681032 -1612920 5694072 1612840 5693952 1602160 5695928 1612584 5694512 -1612920 5694072 1612840 5693952 1612584 5694512 1612680 5694440 -1612840 5693952 1602112 5695896 1602160 5695928 1612584 5694512 -1612920 5694072 1612840 5693952 1612680 5694440 1612944 5694152 -1612920 5694072 1613728 5694936 1612840 5693952 1612680 5694440 -1602160 5695928 1612160 5695080 1612584 5694512 1612840 5693952 -1602160 5695928 1612160 5695080 1612840 5693952 1602112 5695896 -1602160 5695928 1612136 5695120 1612160 5695080 1612840 5693952 -1612160 5695080 1612592 5694608 1612584 5694512 1612840 5693952 -1612840 5693952 1612160 5695080 1612584 5694512 1612680 5694440 -1602112 5695896 1612680 5693808 1601088 5681704 1602016 5695848 -1612840 5693952 1612680 5693808 1602112 5695896 1602160 5695928 -1612680 5693808 1601088 5681704 1602112 5695896 1602160 5695928 -1612840 5693952 1612680 5693808 1602160 5695928 1612160 5695080 -1612680 5693808 1602112 5695896 1602160 5695928 1612160 5695080 -1601088 5681704 1612680 5693808 1612840 5693952 1601128 5681664 -1601088 5681704 1602112 5695896 1612680 5693808 1601128 5681664 -1612840 5693952 1601592 5681216 1601128 5681664 1612680 5693808 -1601592 5681216 1601160 5681616 1601128 5681664 1612680 5693808 -1601128 5681664 1601088 5681704 1612680 5693808 1601592 5681216 -1612840 5693952 1601624 5681136 1601592 5681216 1612680 5693808 -1601592 5681216 1601128 5681664 1612680 5693808 1601624 5681136 -1612840 5693952 1601592 5681064 1601624 5681136 1612680 5693808 -1601624 5681136 1601592 5681216 1612680 5693808 1601592 5681064 -1612840 5693952 1601592 5681064 1612680 5693808 1612160 5695080 -1612840 5693952 1657088 5639464 1601592 5681064 1612680 5693808 -1601592 5681064 1601624 5681136 1612680 5693808 1657088 5639464 -1612840 5693952 1657088 5639464 1612680 5693808 1612160 5695080 -1612840 5693952 1663776 5646144 1657088 5639464 1612680 5693808 -1612840 5693952 1623296 5701624 1663776 5646144 1612680 5693808 -1612840 5693952 1663776 5646144 1612680 5693808 1612160 5695080 -1657088 5639464 1601592 5681064 1612680 5693808 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1612680 5693808 -1657088 5639464 1601560 5681032 1601592 5681064 1612680 5693808 -1602160 5695928 1612136 5695120 1612160 5695080 1612680 5693808 -1612160 5695080 1612840 5693952 1612680 5693808 1612136 5695120 -1602160 5695928 1602200 5696008 1612136 5695120 1612680 5693808 -1602160 5695928 1612136 5695120 1612680 5693808 1602112 5695896 -1612840 5693952 1612680 5693808 1612160 5695080 1612584 5694512 -1612680 5693808 1612136 5695120 1612160 5695080 1612584 5694512 -1612840 5693952 1663776 5646144 1612680 5693808 1612584 5694512 -1612160 5695080 1612592 5694608 1612584 5694512 1612680 5693808 -1612840 5693952 1612680 5693808 1612584 5694512 1612680 5694440 -1612840 5693952 1612680 5693808 1612680 5694440 1612920 5694072 -1612840 5693952 1663776 5646144 1612680 5693808 1612680 5694440 -1612680 5693808 1612160 5695080 1612584 5694512 1612680 5694440 -1612680 5693808 1612504 5693584 1601592 5681064 1601624 5681136 -1612680 5693808 1657088 5639464 1612504 5693584 1601624 5681136 -1612504 5693584 1657088 5639464 1601592 5681064 1601624 5681136 -1612680 5693808 1612504 5693584 1601624 5681136 1601592 5681216 -1612680 5693808 1657088 5639464 1612504 5693584 1601592 5681216 -1612680 5693808 1612504 5693584 1601592 5681216 1601128 5681664 -1612680 5693808 1657088 5639464 1612504 5693584 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612504 5693584 -1612680 5693808 1612504 5693584 1601128 5681664 1601088 5681704 -1612680 5693808 1657088 5639464 1612504 5693584 1601088 5681704 -1612680 5693808 1612504 5693584 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612504 5693584 -1612680 5693808 1612504 5693584 1602112 5695896 1602160 5695928 -1612680 5693808 1657088 5639464 1612504 5693584 1602160 5695928 -1612504 5693584 1601088 5681704 1602112 5695896 1602160 5695928 -1612680 5693808 1612504 5693584 1602160 5695928 1612136 5695120 -1612504 5693584 1602112 5695896 1602160 5695928 1612136 5695120 -1612680 5693808 1657088 5639464 1612504 5693584 1612136 5695120 -1602160 5695928 1602200 5696008 1612136 5695120 1612504 5693584 -1612504 5693584 1601128 5681664 1601088 5681704 1602112 5695896 -1612504 5693584 1601592 5681216 1601128 5681664 1601088 5681704 -1612504 5693584 1601624 5681136 1601592 5681216 1601128 5681664 -1612504 5693584 1601592 5681064 1601624 5681136 1601592 5681216 -1657088 5639464 1612504 5693584 1612680 5693808 1663776 5646144 -1612504 5693584 1612136 5695120 1612680 5693808 1663776 5646144 -1612680 5693808 1612840 5693952 1663776 5646144 1612504 5693584 -1612680 5693808 1612840 5693952 1612504 5693584 1612136 5695120 -1612840 5693952 1623296 5701624 1663776 5646144 1612504 5693584 -1623296 5701624 1663880 5646248 1663776 5646144 1612504 5693584 -1612840 5693952 1623192 5701576 1623296 5701624 1612504 5693584 -1612840 5693952 1623296 5701624 1612504 5693584 1612680 5693808 -1657088 5639464 1601592 5681064 1612504 5693584 1663776 5646144 -1663776 5646144 1657088 5639464 1612504 5693584 1623296 5701624 -1657088 5639464 1612504 5693584 1663776 5646144 1663688 5645984 -1601592 5681064 1612504 5693584 1657088 5639464 1601560 5681032 -1612680 5693808 1612504 5693584 1612136 5695120 1612160 5695080 -1612680 5693808 1612840 5693952 1612504 5693584 1612160 5695080 -1612680 5693808 1612504 5693584 1612160 5695080 1612584 5694512 -1612680 5693808 1612840 5693952 1612504 5693584 1612584 5694512 -1612504 5693584 1602160 5695928 1612136 5695120 1612160 5695080 -1612504 5693584 1612136 5695120 1612160 5695080 1612584 5694512 -1612160 5695080 1612592 5694608 1612584 5694512 1612504 5693584 -1612680 5693808 1612504 5693584 1612584 5694512 1612680 5694440 -1612504 5693584 1612440 5693432 1601592 5681064 1601624 5681136 -1612504 5693584 1657088 5639464 1612440 5693432 1601624 5681136 -1612504 5693584 1612440 5693432 1601624 5681136 1601592 5681216 -1612440 5693432 1601592 5681064 1601624 5681136 1601592 5681216 -1612504 5693584 1657088 5639464 1612440 5693432 1601592 5681216 -1612504 5693584 1612440 5693432 1601592 5681216 1601128 5681664 -1612504 5693584 1657088 5639464 1612440 5693432 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612440 5693432 -1612504 5693584 1612440 5693432 1601128 5681664 1601088 5681704 -1612504 5693584 1657088 5639464 1612440 5693432 1601088 5681704 -1612504 5693584 1612440 5693432 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612440 5693432 -1612504 5693584 1612440 5693432 1602112 5695896 1602160 5695928 -1612504 5693584 1612440 5693432 1602160 5695928 1612136 5695120 -1612440 5693432 1602112 5695896 1602160 5695928 1612136 5695120 -1612504 5693584 1657088 5639464 1612440 5693432 1612136 5695120 -1602160 5695928 1602200 5696008 1612136 5695120 1612440 5693432 -1612504 5693584 1612440 5693432 1612136 5695120 1612160 5695080 -1612440 5693432 1602160 5695928 1612136 5695120 1612160 5695080 -1612504 5693584 1657088 5639464 1612440 5693432 1612160 5695080 -1612440 5693432 1601088 5681704 1602112 5695896 1602160 5695928 -1612440 5693432 1601128 5681664 1601088 5681704 1602112 5695896 -1612440 5693432 1601592 5681216 1601128 5681664 1601088 5681704 -1612440 5693432 1601624 5681136 1601592 5681216 1601128 5681664 -1657088 5639464 1612440 5693432 1612504 5693584 1663776 5646144 -1612440 5693432 1612160 5695080 1612504 5693584 1663776 5646144 -1612440 5693432 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612440 5693432 1663776 5646144 -1612504 5693584 1623296 5701624 1663776 5646144 1612440 5693432 -1623296 5701624 1663880 5646248 1663776 5646144 1612440 5693432 -1612504 5693584 1623296 5701624 1612440 5693432 1612160 5695080 -1612504 5693584 1612840 5693952 1623296 5701624 1612440 5693432 -1612504 5693584 1612840 5693952 1612440 5693432 1612160 5695080 -1612840 5693952 1623192 5701576 1623296 5701624 1612440 5693432 -1612840 5693952 1613728 5694936 1623192 5701576 1612440 5693432 -1613728 5694936 1623016 5701528 1623192 5701576 1612440 5693432 -1612840 5693952 1612920 5694072 1613728 5694936 1612440 5693432 -1623192 5701576 1623296 5701624 1612440 5693432 1613728 5694936 -1612840 5693952 1613728 5694936 1612440 5693432 1612504 5693584 -1612504 5693584 1612680 5693808 1612840 5693952 1612440 5693432 -1612504 5693584 1612680 5693808 1612440 5693432 1612160 5695080 -1612840 5693952 1613728 5694936 1612440 5693432 1612680 5693808 -1663776 5646144 1657088 5639464 1612440 5693432 1623296 5701624 -1623296 5701624 1663776 5646144 1612440 5693432 1623192 5701576 -1657088 5639464 1612440 5693432 1663776 5646144 1663688 5645984 -1601592 5681064 1612440 5693432 1657088 5639464 1601560 5681032 -1612504 5693584 1612440 5693432 1612160 5695080 1612584 5694512 -1612440 5693432 1612400 5693248 1601592 5681064 1601624 5681136 -1612440 5693432 1612400 5693248 1601624 5681136 1601592 5681216 -1612440 5693432 1612400 5693248 1601592 5681216 1601128 5681664 -1612400 5693248 1601624 5681136 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612400 5693248 -1612440 5693432 1612400 5693248 1601128 5681664 1601088 5681704 -1612440 5693432 1612400 5693248 1601088 5681704 1602112 5695896 -1601088 5681704 1602016 5695848 1602112 5695896 1612400 5693248 -1612440 5693432 1612400 5693248 1602112 5695896 1602160 5695928 -1612440 5693432 1612400 5693248 1602160 5695928 1612136 5695120 -1612440 5693432 1612400 5693248 1612136 5695120 1612160 5695080 -1602160 5695928 1602200 5696008 1612136 5695120 1612400 5693248 -1612400 5693248 1602112 5695896 1602160 5695928 1612136 5695120 -1602112 5695896 1602160 5695928 1612400 5693248 1602016 5695848 -1612400 5693248 1601128 5681664 1601088 5681704 1602016 5695848 -1612400 5693248 1601592 5681216 1601128 5681664 1601088 5681704 -1612400 5693248 1601592 5681064 1601624 5681136 1601592 5681216 -1612440 5693432 1657088 5639464 1612400 5693248 1612136 5695120 -1657088 5639464 1612400 5693248 1612440 5693432 1663776 5646144 -1657088 5639464 1601592 5681064 1612400 5693248 1663776 5646144 -1612440 5693432 1623296 5701624 1663776 5646144 1612400 5693248 -1623296 5701624 1663880 5646248 1663776 5646144 1612400 5693248 -1612400 5693248 1612136 5695120 1612440 5693432 1623296 5701624 -1663776 5646144 1657088 5639464 1612400 5693248 1623296 5701624 -1612400 5693248 1657088 5639464 1601592 5681064 1601624 5681136 -1612440 5693432 1623192 5701576 1623296 5701624 1612400 5693248 -1612440 5693432 1613728 5694936 1623192 5701576 1612400 5693248 -1613728 5694936 1623016 5701528 1623192 5701576 1612400 5693248 -1612440 5693432 1612840 5693952 1613728 5694936 1612400 5693248 -1612840 5693952 1612920 5694072 1613728 5694936 1612400 5693248 -1613728 5694936 1623192 5701576 1612400 5693248 1612840 5693952 -1612440 5693432 1612680 5693808 1612840 5693952 1612400 5693248 -1612840 5693952 1613728 5694936 1612400 5693248 1612680 5693808 -1612440 5693432 1612504 5693584 1612680 5693808 1612400 5693248 -1623296 5701624 1663776 5646144 1612400 5693248 1623192 5701576 -1612440 5693432 1612680 5693808 1612400 5693248 1612136 5695120 -1623192 5701576 1623296 5701624 1612400 5693248 1613728 5694936 -1657088 5639464 1612400 5693248 1663776 5646144 1663688 5645984 -1601088 5681704 1600992 5681736 1602016 5695848 1612400 5693248 -1601592 5681064 1612400 5693248 1657088 5639464 1601560 5681032 -1657088 5639464 1612408 5693168 1612400 5693248 1663776 5646144 -1657088 5639464 1601592 5681064 1612408 5693168 1663776 5646144 -1612400 5693248 1623296 5701624 1663776 5646144 1612408 5693168 -1623296 5701624 1663880 5646248 1663776 5646144 1612408 5693168 -1663776 5646144 1657088 5639464 1612408 5693168 1623296 5701624 -1612400 5693248 1623192 5701576 1623296 5701624 1612408 5693168 -1623296 5701624 1663776 5646144 1612408 5693168 1623192 5701576 -1612400 5693248 1612408 5693168 1601592 5681064 1601624 5681136 -1612408 5693168 1657088 5639464 1601592 5681064 1601624 5681136 -1612400 5693248 1612408 5693168 1601624 5681136 1601592 5681216 -1612400 5693248 1612408 5693168 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1612408 5693168 -1612400 5693248 1612408 5693168 1601128 5681664 1601088 5681704 -1612408 5693168 1601592 5681216 1601128 5681664 1601088 5681704 -1612400 5693248 1612408 5693168 1601088 5681704 1602016 5695848 -1612400 5693248 1612408 5693168 1602016 5695848 1602112 5695896 -1612400 5693248 1612408 5693168 1602112 5695896 1602160 5695928 -1612408 5693168 1602016 5695848 1602112 5695896 1602160 5695928 -1612400 5693248 1612408 5693168 1602160 5695928 1612136 5695120 -1612408 5693168 1601088 5681704 1602016 5695848 1602112 5695896 -1612408 5693168 1601128 5681664 1601088 5681704 1602016 5695848 -1612408 5693168 1601624 5681136 1601592 5681216 1601128 5681664 -1612408 5693168 1601592 5681064 1601624 5681136 1601592 5681216 -1612408 5693168 1602160 5695928 1612400 5693248 1623192 5701576 -1612400 5693248 1613728 5694936 1623192 5701576 1612408 5693168 -1613728 5694936 1623016 5701528 1623192 5701576 1612408 5693168 -1612400 5693248 1612840 5693952 1613728 5694936 1612408 5693168 -1612840 5693952 1612920 5694072 1613728 5694936 1612408 5693168 -1612400 5693248 1612680 5693808 1612840 5693952 1612408 5693168 -1612840 5693952 1613728 5694936 1612408 5693168 1612680 5693808 -1612400 5693248 1612440 5693432 1612680 5693808 1612408 5693168 -1612680 5693808 1612840 5693952 1612408 5693168 1612440 5693432 -1612440 5693432 1612504 5693584 1612680 5693808 1612408 5693168 -1612680 5693808 1612840 5693952 1612408 5693168 1612504 5693584 -1612440 5693432 1612504 5693584 1612408 5693168 1612400 5693248 -1623192 5701576 1623296 5701624 1612408 5693168 1613728 5694936 -1612400 5693248 1612440 5693432 1612408 5693168 1602160 5695928 -1613728 5694936 1623192 5701576 1612408 5693168 1612840 5693952 -1657088 5639464 1612408 5693168 1663776 5646144 1663688 5645984 -1601088 5681704 1600992 5681736 1602016 5695848 1612408 5693168 -1601592 5681064 1612408 5693168 1657088 5639464 1601560 5681032 -1612408 5693168 1612440 5693112 1601592 5681064 1601624 5681136 -1612408 5693168 1657088 5639464 1612440 5693112 1601624 5681136 -1657088 5639464 1612440 5693112 1612408 5693168 1663776 5646144 -1612408 5693168 1623296 5701624 1663776 5646144 1612440 5693112 -1623296 5701624 1663880 5646248 1663776 5646144 1612440 5693112 -1612440 5693112 1601624 5681136 1612408 5693168 1623296 5701624 -1663776 5646144 1657088 5639464 1612440 5693112 1623296 5701624 -1612440 5693112 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612440 5693112 1663776 5646144 -1612408 5693168 1623192 5701576 1623296 5701624 1612440 5693112 -1623296 5701624 1663776 5646144 1612440 5693112 1623192 5701576 -1612408 5693168 1623192 5701576 1612440 5693112 1601624 5681136 -1612408 5693168 1613728 5694936 1623192 5701576 1612440 5693112 -1613728 5694936 1623016 5701528 1623192 5701576 1612440 5693112 -1612408 5693168 1613728 5694936 1612440 5693112 1601624 5681136 -1623192 5701576 1623296 5701624 1612440 5693112 1613728 5694936 -1612408 5693168 1612440 5693112 1601624 5681136 1601592 5681216 -1612440 5693112 1601592 5681064 1601624 5681136 1601592 5681216 -1612408 5693168 1613728 5694936 1612440 5693112 1601592 5681216 -1612408 5693168 1612440 5693112 1601592 5681216 1601128 5681664 -1612408 5693168 1612440 5693112 1601128 5681664 1601088 5681704 -1612408 5693168 1613728 5694936 1612440 5693112 1601088 5681704 -1601592 5681216 1601160 5681616 1601128 5681664 1612440 5693112 -1612408 5693168 1612440 5693112 1601088 5681704 1602016 5695848 -1612440 5693112 1601128 5681664 1601088 5681704 1602016 5695848 -1612408 5693168 1613728 5694936 1612440 5693112 1602016 5695848 -1612408 5693168 1612440 5693112 1602016 5695848 1602112 5695896 -1612408 5693168 1612440 5693112 1602112 5695896 1602160 5695928 -1612408 5693168 1613728 5694936 1612440 5693112 1602112 5695896 -1612440 5693112 1601088 5681704 1602016 5695848 1602112 5695896 -1612440 5693112 1601592 5681216 1601128 5681664 1601088 5681704 -1612440 5693112 1601624 5681136 1601592 5681216 1601128 5681664 -1612408 5693168 1612840 5693952 1613728 5694936 1612440 5693112 -1612840 5693952 1612920 5694072 1613728 5694936 1612440 5693112 -1612408 5693168 1612840 5693952 1612440 5693112 1602112 5695896 -1612920 5694072 1613688 5694912 1613728 5694936 1612440 5693112 -1612408 5693168 1612680 5693808 1612840 5693952 1612440 5693112 -1612408 5693168 1612680 5693808 1612440 5693112 1602112 5695896 -1612408 5693168 1612504 5693584 1612680 5693808 1612440 5693112 -1612408 5693168 1612504 5693584 1612440 5693112 1602112 5695896 -1612680 5693808 1612840 5693952 1612440 5693112 1612504 5693584 -1612408 5693168 1612440 5693432 1612504 5693584 1612440 5693112 -1612408 5693168 1612440 5693432 1612440 5693112 1602112 5695896 -1612504 5693584 1612680 5693808 1612440 5693112 1612440 5693432 -1612408 5693168 1612400 5693248 1612440 5693432 1612440 5693112 -1612408 5693168 1612400 5693248 1612440 5693112 1602112 5695896 -1612440 5693432 1612504 5693584 1612440 5693112 1612400 5693248 -1613728 5694936 1623192 5701576 1612440 5693112 1612920 5694072 -1612840 5693952 1612920 5694072 1612440 5693112 1612680 5693808 -1657088 5639464 1612440 5693112 1663776 5646144 1663688 5645984 -1601088 5681704 1600992 5681736 1602016 5695848 1612440 5693112 -1601592 5681064 1612440 5693112 1657088 5639464 1601560 5681032 -1663776 5646144 1612544 5693040 1623296 5701624 1663880 5646248 -1623296 5701624 1612544 5693040 1612440 5693112 1623192 5701576 -1612440 5693112 1612544 5693040 1663776 5646144 1657088 5639464 -1612544 5693040 1657088 5639464 1612440 5693112 1623192 5701576 -1612440 5693112 1612544 5693040 1657088 5639464 1601592 5681064 -1612544 5693040 1663776 5646144 1657088 5639464 1601592 5681064 -1612440 5693112 1612544 5693040 1601592 5681064 1601624 5681136 -1612440 5693112 1612544 5693040 1601624 5681136 1601592 5681216 -1612544 5693040 1601592 5681064 1601624 5681136 1601592 5681216 -1612440 5693112 1623192 5701576 1612544 5693040 1601592 5681216 -1612544 5693040 1657088 5639464 1601592 5681064 1601624 5681136 -1612544 5693040 1623296 5701624 1663776 5646144 1657088 5639464 -1623296 5701624 1663776 5646144 1612544 5693040 1623192 5701576 -1612440 5693112 1613728 5694936 1623192 5701576 1612544 5693040 -1613728 5694936 1623016 5701528 1623192 5701576 1612544 5693040 -1623192 5701576 1623296 5701624 1612544 5693040 1613728 5694936 -1612440 5693112 1613728 5694936 1612544 5693040 1601592 5681216 -1612440 5693112 1612920 5694072 1613728 5694936 1612544 5693040 -1612440 5693112 1612840 5693952 1612920 5694072 1612544 5693040 -1612440 5693112 1612840 5693952 1612544 5693040 1601592 5681216 -1612920 5694072 1613688 5694912 1613728 5694936 1612544 5693040 -1612920 5694072 1613728 5694936 1612544 5693040 1612840 5693952 -1613728 5694936 1623192 5701576 1612544 5693040 1612920 5694072 -1612440 5693112 1612544 5693040 1601592 5681216 1601128 5681664 -1612440 5693112 1612680 5693808 1612840 5693952 1612544 5693040 -1612840 5693952 1612920 5694072 1612544 5693040 1612680 5693808 -1612440 5693112 1612680 5693808 1612544 5693040 1601592 5681216 -1612440 5693112 1612504 5693584 1612680 5693808 1612544 5693040 -1612440 5693112 1612504 5693584 1612544 5693040 1601592 5681216 -1612440 5693112 1612440 5693432 1612504 5693584 1612544 5693040 -1612440 5693112 1612440 5693432 1612544 5693040 1601592 5681216 -1612504 5693584 1612680 5693808 1612544 5693040 1612440 5693432 -1612440 5693112 1612400 5693248 1612440 5693432 1612544 5693040 -1612440 5693112 1612400 5693248 1612544 5693040 1601592 5681216 -1612440 5693432 1612504 5693584 1612544 5693040 1612400 5693248 -1612440 5693112 1612408 5693168 1612400 5693248 1612544 5693040 -1612680 5693808 1612840 5693952 1612544 5693040 1612504 5693584 -1663776 5646144 1663688 5645984 1657088 5639464 1612544 5693040 -1657088 5639464 1601560 5681032 1601592 5681064 1612544 5693040 -1663776 5646144 1612736 5692952 1623296 5701624 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1612736 5692952 -1612544 5693040 1612736 5692952 1663776 5646144 1657088 5639464 -1612544 5693040 1612736 5692952 1657088 5639464 1601592 5681064 -1612544 5693040 1612736 5692952 1601592 5681064 1601624 5681136 -1612736 5692952 1657088 5639464 1601592 5681064 1601624 5681136 -1612544 5693040 1612736 5692952 1601624 5681136 1601592 5681216 -1612544 5693040 1612736 5692952 1601592 5681216 1612440 5693112 -1612736 5692952 1601592 5681064 1601624 5681136 1601592 5681216 -1612736 5692952 1663776 5646144 1657088 5639464 1601592 5681064 -1612544 5693040 1623296 5701624 1612736 5692952 1601592 5681216 -1623296 5701624 1612736 5692952 1612544 5693040 1623192 5701576 -1612544 5693040 1613728 5694936 1623192 5701576 1612736 5692952 -1613728 5694936 1623016 5701528 1623192 5701576 1612736 5692952 -1613728 5694936 1613840 5695128 1623016 5701528 1612736 5692952 -1613728 5694936 1623016 5701528 1612736 5692952 1612544 5693040 -1612736 5692952 1601592 5681216 1612544 5693040 1613728 5694936 -1623192 5701576 1623296 5701624 1612736 5692952 1623016 5701528 -1663776 5646144 1657088 5639464 1612736 5692952 1663880 5646248 -1612736 5692952 1623192 5701576 1623296 5701624 1663880 5646248 -1612544 5693040 1612920 5694072 1613728 5694936 1612736 5692952 -1613728 5694936 1623016 5701528 1612736 5692952 1612920 5694072 -1612544 5693040 1612920 5694072 1612736 5692952 1601592 5681216 -1612920 5694072 1613688 5694912 1613728 5694936 1612736 5692952 -1613728 5694936 1623016 5701528 1612736 5692952 1613688 5694912 -1612920 5694072 1612944 5694152 1613688 5694912 1612736 5692952 -1612544 5693040 1612840 5693952 1612920 5694072 1612736 5692952 -1612544 5693040 1612680 5693808 1612840 5693952 1612736 5692952 -1612544 5693040 1612680 5693808 1612736 5692952 1601592 5681216 -1612840 5693952 1612920 5694072 1612736 5692952 1612680 5693808 -1612920 5694072 1613688 5694912 1612736 5692952 1612840 5693952 -1612544 5693040 1612504 5693584 1612680 5693808 1612736 5692952 -1612680 5693808 1612840 5693952 1612736 5692952 1612504 5693584 -1612544 5693040 1612504 5693584 1612736 5692952 1601592 5681216 -1612544 5693040 1612440 5693432 1612504 5693584 1612736 5692952 -1612544 5693040 1612440 5693432 1612736 5692952 1601592 5681216 -1612544 5693040 1612400 5693248 1612440 5693432 1612736 5692952 -1612504 5693584 1612680 5693808 1612736 5692952 1612440 5693432 -1663776 5646144 1663688 5645984 1657088 5639464 1612736 5692952 -1657088 5639464 1601560 5681032 1601592 5681064 1612736 5692952 -1612736 5692952 1612880 5692928 1663880 5646248 1663776 5646144 -1663880 5646248 1612880 5692928 1623296 5701624 1623408 5701720 -1612736 5692952 1612880 5692928 1663776 5646144 1657088 5639464 -1612880 5692928 1663880 5646248 1663776 5646144 1657088 5639464 -1612736 5692952 1612880 5692928 1657088 5639464 1601592 5681064 -1612736 5692952 1612880 5692928 1601592 5681064 1601624 5681136 -1612736 5692952 1612880 5692928 1601624 5681136 1601592 5681216 -1612880 5692928 1657088 5639464 1601592 5681064 1601624 5681136 -1612880 5692928 1663776 5646144 1657088 5639464 1601592 5681064 -1612736 5692952 1623296 5701624 1612880 5692928 1601624 5681136 -1623296 5701624 1612880 5692928 1612736 5692952 1623192 5701576 -1612736 5692952 1623016 5701528 1623192 5701576 1612880 5692928 -1612736 5692952 1613728 5694936 1623016 5701528 1612880 5692928 -1613728 5694936 1613840 5695128 1623016 5701528 1612880 5692928 -1613728 5694936 1613840 5695128 1612880 5692928 1612736 5692952 -1613840 5695128 1621712 5701344 1623016 5701528 1612880 5692928 -1612736 5692952 1613688 5694912 1613728 5694936 1612880 5692928 -1613728 5694936 1613840 5695128 1612880 5692928 1613688 5694912 -1623016 5701528 1623192 5701576 1612880 5692928 1613840 5695128 -1612880 5692928 1601624 5681136 1612736 5692952 1613688 5694912 -1623192 5701576 1623296 5701624 1612880 5692928 1623016 5701528 -1623296 5701624 1663880 5646248 1612880 5692928 1623192 5701576 -1612880 5692928 1623296 5701624 1663880 5646248 1663776 5646144 -1612736 5692952 1612920 5694072 1613688 5694912 1612880 5692928 -1613688 5694912 1613728 5694936 1612880 5692928 1612920 5694072 -1612736 5692952 1612920 5694072 1612880 5692928 1601624 5681136 -1612920 5694072 1612944 5694152 1613688 5694912 1612880 5692928 -1612736 5692952 1612840 5693952 1612920 5694072 1612880 5692928 -1612736 5692952 1612840 5693952 1612880 5692928 1601624 5681136 -1612920 5694072 1613688 5694912 1612880 5692928 1612840 5693952 -1612736 5692952 1612680 5693808 1612840 5693952 1612880 5692928 -1612736 5692952 1612504 5693584 1612680 5693808 1612880 5692928 -1612736 5692952 1612504 5693584 1612880 5692928 1601624 5681136 -1612680 5693808 1612840 5693952 1612880 5692928 1612504 5693584 -1612840 5693952 1612920 5694072 1612880 5692928 1612680 5693808 -1612736 5692952 1612440 5693432 1612504 5693584 1612880 5692928 -1663776 5646144 1663688 5645984 1657088 5639464 1612880 5692928 -1657088 5639464 1601560 5681032 1601592 5681064 1612880 5692928 -1663880 5646248 1613016 5692968 1623296 5701624 1623408 5701720 -1623296 5701624 1613016 5692968 1612880 5692928 1623192 5701576 -1612880 5692928 1623016 5701528 1623192 5701576 1613016 5692968 -1612880 5692928 1613840 5695128 1623016 5701528 1613016 5692968 -1612880 5692928 1613728 5694936 1613840 5695128 1613016 5692968 -1612880 5692928 1613688 5694912 1613728 5694936 1613016 5692968 -1613728 5694936 1613840 5695128 1613016 5692968 1613688 5694912 -1613840 5695128 1621712 5701344 1623016 5701528 1613016 5692968 -1612880 5692928 1612920 5694072 1613688 5694912 1613016 5692968 -1613688 5694912 1613728 5694936 1613016 5692968 1612920 5694072 -1613840 5695128 1623016 5701528 1613016 5692968 1613728 5694936 -1623016 5701528 1623192 5701576 1613016 5692968 1613840 5695128 -1613016 5692968 1663880 5646248 1612880 5692928 1612920 5694072 -1623192 5701576 1623296 5701624 1613016 5692968 1623016 5701528 -1612880 5692928 1613016 5692968 1663880 5646248 1663776 5646144 -1612880 5692928 1613016 5692968 1663776 5646144 1657088 5639464 -1612880 5692928 1613016 5692968 1657088 5639464 1601592 5681064 -1613016 5692968 1663776 5646144 1657088 5639464 1601592 5681064 -1612880 5692928 1613016 5692968 1601592 5681064 1601624 5681136 -1612880 5692928 1613016 5692968 1601624 5681136 1612736 5692952 -1613016 5692968 1657088 5639464 1601592 5681064 1601624 5681136 -1612880 5692928 1612920 5694072 1613016 5692968 1601624 5681136 -1613016 5692968 1663880 5646248 1663776 5646144 1657088 5639464 -1612920 5694072 1612944 5694152 1613688 5694912 1613016 5692968 -1613016 5692968 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1613016 5692968 1623192 5701576 -1612880 5692928 1612840 5693952 1612920 5694072 1613016 5692968 -1612920 5694072 1613688 5694912 1613016 5692968 1612840 5693952 -1612880 5692928 1612840 5693952 1613016 5692968 1601624 5681136 -1612880 5692928 1612680 5693808 1612840 5693952 1613016 5692968 -1612880 5692928 1612680 5693808 1613016 5692968 1601624 5681136 -1612840 5693952 1612920 5694072 1613016 5692968 1612680 5693808 -1612880 5692928 1612504 5693584 1612680 5693808 1613016 5692968 -1612880 5692928 1612736 5692952 1612504 5693584 1613016 5692968 -1612880 5692928 1612736 5692952 1613016 5692968 1601624 5681136 -1612504 5693584 1612680 5693808 1613016 5692968 1612736 5692952 -1612680 5693808 1612840 5693952 1613016 5692968 1612504 5693584 -1612736 5692952 1612440 5693432 1612504 5693584 1613016 5692968 -1663776 5646144 1663688 5645984 1657088 5639464 1613016 5692968 -1657088 5639464 1601560 5681032 1601592 5681064 1613016 5692968 -1623016 5701528 1613112 5693056 1613840 5695128 1621712 5701344 -1613840 5695128 1613112 5693056 1613016 5692968 1613728 5694936 -1613016 5692968 1613688 5694912 1613728 5694936 1613112 5693056 -1613016 5692968 1612920 5694072 1613688 5694912 1613112 5693056 -1613688 5694912 1613728 5694936 1613112 5693056 1612920 5694072 -1613016 5692968 1612840 5693952 1612920 5694072 1613112 5693056 -1612920 5694072 1613688 5694912 1613112 5693056 1612840 5693952 -1613728 5694936 1613840 5695128 1613112 5693056 1613688 5694912 -1613016 5692968 1613112 5693056 1623016 5701528 1623192 5701576 -1613016 5692968 1613112 5693056 1623192 5701576 1623296 5701624 -1613112 5693056 1623016 5701528 1623192 5701576 1623296 5701624 -1612920 5694072 1612944 5694152 1613688 5694912 1613112 5693056 -1612920 5694072 1612944 5694152 1613112 5693056 1612840 5693952 -1613688 5694912 1613728 5694936 1613112 5693056 1612944 5694152 -1613112 5693056 1623296 5701624 1613016 5692968 1612840 5693952 -1613016 5692968 1613112 5693056 1623296 5701624 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1613112 5693056 -1613112 5693056 1623192 5701576 1623296 5701624 1663880 5646248 -1613016 5692968 1613112 5693056 1663880 5646248 1663776 5646144 -1613016 5692968 1613112 5693056 1663776 5646144 1657088 5639464 -1613016 5692968 1612840 5693952 1613112 5693056 1663776 5646144 -1613112 5693056 1623296 5701624 1663880 5646248 1663776 5646144 -1613112 5693056 1613840 5695128 1623016 5701528 1623192 5701576 -1613840 5695128 1623016 5701528 1613112 5693056 1613728 5694936 -1612944 5694152 1613592 5694904 1613688 5694912 1613112 5693056 -1613016 5692968 1612680 5693808 1612840 5693952 1613112 5693056 -1612840 5693952 1612920 5694072 1613112 5693056 1612680 5693808 -1613016 5692968 1612680 5693808 1613112 5693056 1663776 5646144 -1613016 5692968 1612504 5693584 1612680 5693808 1613112 5693056 -1613016 5692968 1612504 5693584 1613112 5693056 1663776 5646144 -1612680 5693808 1612840 5693952 1613112 5693056 1612504 5693584 -1613016 5692968 1612736 5692952 1612504 5693584 1613112 5693056 -1613016 5692968 1612880 5692928 1612736 5692952 1613112 5693056 -1613016 5692968 1612880 5692928 1613112 5693056 1663776 5646144 -1612736 5692952 1612504 5693584 1613112 5693056 1612880 5692928 -1612504 5693584 1612680 5693808 1613112 5693056 1612736 5692952 -1612736 5692952 1612440 5693432 1612504 5693584 1613112 5693056 -1612736 5692952 1612544 5693040 1612440 5693432 1613112 5693056 -1612736 5692952 1612440 5693432 1613112 5693056 1612880 5692928 -1612504 5693584 1612680 5693808 1613112 5693056 1612440 5693432 -1623016 5701528 1613216 5693184 1613840 5695128 1621712 5701344 -1613840 5695128 1613864 5695256 1621712 5701344 1613216 5693184 -1613112 5693056 1613216 5693184 1623016 5701528 1623192 5701576 -1613112 5693056 1613216 5693184 1623192 5701576 1623296 5701624 -1613112 5693056 1613216 5693184 1623296 5701624 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1613216 5693184 -1613216 5693184 1623192 5701576 1623296 5701624 1663880 5646248 -1613112 5693056 1613216 5693184 1663880 5646248 1663776 5646144 -1613216 5693184 1623016 5701528 1623192 5701576 1623296 5701624 -1613112 5693056 1613840 5695128 1613216 5693184 1663880 5646248 -1613840 5695128 1613216 5693184 1613112 5693056 1613728 5694936 -1613112 5693056 1613688 5694912 1613728 5694936 1613216 5693184 -1613112 5693056 1612944 5694152 1613688 5694912 1613216 5693184 -1613688 5694912 1613728 5694936 1613216 5693184 1612944 5694152 -1613112 5693056 1612920 5694072 1612944 5694152 1613216 5693184 -1613112 5693056 1612840 5693952 1612920 5694072 1613216 5693184 -1612944 5694152 1613688 5694912 1613216 5693184 1612920 5694072 -1613112 5693056 1612680 5693808 1612840 5693952 1613216 5693184 -1612840 5693952 1612920 5694072 1613216 5693184 1612680 5693808 -1612920 5694072 1612944 5694152 1613216 5693184 1612840 5693952 -1613216 5693184 1663880 5646248 1613112 5693056 1612680 5693808 -1613728 5694936 1613840 5695128 1613216 5693184 1613688 5694912 -1623016 5701528 1623192 5701576 1613216 5693184 1621712 5701344 -1613216 5693184 1613728 5694936 1613840 5695128 1621712 5701344 -1612944 5694152 1613592 5694904 1613688 5694912 1613216 5693184 -1613112 5693056 1612504 5693584 1612680 5693808 1613216 5693184 -1612680 5693808 1612840 5693952 1613216 5693184 1612504 5693584 -1613112 5693056 1612504 5693584 1613216 5693184 1663880 5646248 -1613112 5693056 1612440 5693432 1612504 5693584 1613216 5693184 -1623016 5701528 1613216 5693184 1621712 5701344 1622880 5701536 -1663880 5646248 1613384 5693288 1623296 5701624 1623408 5701720 -1623296 5701624 1613384 5693288 1613216 5693184 1623192 5701576 -1613216 5693184 1613384 5693288 1663880 5646248 1613112 5693056 -1623296 5701624 1663880 5646248 1613384 5693288 1623192 5701576 -1663880 5646248 1663776 5646144 1613112 5693056 1613384 5693288 -1613112 5693056 1613216 5693184 1613384 5693288 1663776 5646144 -1663776 5646144 1613016 5692968 1613112 5693056 1613384 5693288 -1613112 5693056 1613216 5693184 1613384 5693288 1613016 5692968 -1663776 5646144 1657088 5639464 1613016 5692968 1613384 5693288 -1657088 5639464 1601592 5681064 1613016 5692968 1613384 5693288 -1613016 5692968 1613112 5693056 1613384 5693288 1657088 5639464 -1663776 5646144 1657088 5639464 1613384 5693288 1663880 5646248 -1613216 5693184 1623016 5701528 1623192 5701576 1613384 5693288 -1623192 5701576 1623296 5701624 1613384 5693288 1623016 5701528 -1613216 5693184 1621712 5701344 1623016 5701528 1613384 5693288 -1613216 5693184 1613840 5695128 1621712 5701344 1613384 5693288 -1613840 5695128 1613864 5695256 1621712 5701344 1613384 5693288 -1623016 5701528 1623192 5701576 1613384 5693288 1621712 5701344 -1621712 5701344 1623016 5701528 1613384 5693288 1613840 5695128 -1613384 5693288 1613112 5693056 1613216 5693184 1613840 5695128 -1613216 5693184 1613728 5694936 1613840 5695128 1613384 5693288 -1613840 5695128 1621712 5701344 1613384 5693288 1613728 5694936 -1613216 5693184 1613688 5694912 1613728 5694936 1613384 5693288 -1613216 5693184 1612944 5694152 1613688 5694912 1613384 5693288 -1613216 5693184 1612920 5694072 1612944 5694152 1613384 5693288 -1612944 5694152 1613688 5694912 1613384 5693288 1612920 5694072 -1613216 5693184 1612840 5693952 1612920 5694072 1613384 5693288 -1613216 5693184 1612680 5693808 1612840 5693952 1613384 5693288 -1612920 5694072 1612944 5694152 1613384 5693288 1612840 5693952 -1613688 5694912 1613728 5694936 1613384 5693288 1612944 5694152 -1613216 5693184 1612840 5693952 1613384 5693288 1613112 5693056 -1613728 5694936 1613840 5695128 1613384 5693288 1613688 5694912 -1613384 5693288 1623296 5701624 1663880 5646248 1663776 5646144 -1612944 5694152 1613592 5694904 1613688 5694912 1613384 5693288 -1663776 5646144 1663688 5645984 1657088 5639464 1613384 5693288 -1621712 5701344 1622880 5701536 1623016 5701528 1613384 5693288 -1613384 5693288 1613488 5693384 1623016 5701528 1623192 5701576 -1613384 5693288 1613488 5693384 1623192 5701576 1623296 5701624 -1613384 5693288 1621712 5701344 1613488 5693384 1623296 5701624 -1613384 5693288 1613488 5693384 1623296 5701624 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1613488 5693384 -1613488 5693384 1623192 5701576 1623296 5701624 1663880 5646248 -1613384 5693288 1621712 5701344 1613488 5693384 1663880 5646248 -1613488 5693384 1621712 5701344 1623016 5701528 1623192 5701576 -1613488 5693384 1623016 5701528 1623192 5701576 1623296 5701624 -1621712 5701344 1613488 5693384 1613384 5693288 1613840 5695128 -1613384 5693288 1613728 5694936 1613840 5695128 1613488 5693384 -1621712 5701344 1613488 5693384 1613840 5695128 1613864 5695256 -1613488 5693384 1663880 5646248 1613384 5693288 1613728 5694936 -1621712 5701344 1623016 5701528 1613488 5693384 1613840 5695128 -1613840 5695128 1621712 5701344 1613488 5693384 1613728 5694936 -1613384 5693288 1613688 5694912 1613728 5694936 1613488 5693384 -1613728 5694936 1613840 5695128 1613488 5693384 1613688 5694912 -1613384 5693288 1613688 5694912 1613488 5693384 1663880 5646248 -1613384 5693288 1612944 5694152 1613688 5694912 1613488 5693384 -1613384 5693288 1612920 5694072 1612944 5694152 1613488 5693384 -1613384 5693288 1612840 5693952 1612920 5694072 1613488 5693384 -1612920 5694072 1612944 5694152 1613488 5693384 1612840 5693952 -1613384 5693288 1612840 5693952 1613488 5693384 1663880 5646248 -1613384 5693288 1613216 5693184 1612840 5693952 1613488 5693384 -1612944 5694152 1613688 5694912 1613488 5693384 1612920 5694072 -1613688 5694912 1613728 5694936 1613488 5693384 1612944 5694152 -1613384 5693288 1613488 5693384 1663880 5646248 1663776 5646144 -1613384 5693288 1612840 5693952 1613488 5693384 1663776 5646144 -1613488 5693384 1623296 5701624 1663880 5646248 1663776 5646144 -1613384 5693288 1613488 5693384 1663776 5646144 1657088 5639464 -1612944 5694152 1613592 5694904 1613688 5694912 1613488 5693384 -1623016 5701528 1613488 5693384 1621712 5701344 1622880 5701536 -1621712 5701344 1613584 5693568 1613840 5695128 1613864 5695256 -1613488 5693384 1613584 5693568 1621712 5701344 1623016 5701528 -1613488 5693384 1613584 5693568 1623016 5701528 1623192 5701576 -1613488 5693384 1613840 5695128 1613584 5693568 1623192 5701576 -1613584 5693568 1621712 5701344 1623016 5701528 1623192 5701576 -1613584 5693568 1613840 5695128 1621712 5701344 1623016 5701528 -1613488 5693384 1613584 5693568 1623192 5701576 1623296 5701624 -1613840 5695128 1613584 5693568 1613488 5693384 1613728 5694936 -1613488 5693384 1613688 5694912 1613728 5694936 1613584 5693568 -1613584 5693568 1623192 5701576 1613488 5693384 1613688 5694912 -1613728 5694936 1613840 5695128 1613584 5693568 1613688 5694912 -1613488 5693384 1612944 5694152 1613688 5694912 1613584 5693568 -1613688 5694912 1613728 5694936 1613584 5693568 1612944 5694152 -1613488 5693384 1612944 5694152 1613584 5693568 1623192 5701576 -1613488 5693384 1612920 5694072 1612944 5694152 1613584 5693568 -1613488 5693384 1612840 5693952 1612920 5694072 1613584 5693568 -1613488 5693384 1613384 5693288 1612840 5693952 1613584 5693568 -1613488 5693384 1612840 5693952 1613584 5693568 1623192 5701576 -1612920 5694072 1612944 5694152 1613584 5693568 1612840 5693952 -1612944 5694152 1613688 5694912 1613584 5693568 1612920 5694072 -1613840 5695128 1621712 5701344 1613584 5693568 1613728 5694936 -1612944 5694152 1613592 5694904 1613688 5694912 1613584 5693568 -1613688 5694912 1613728 5694936 1613584 5693568 1613592 5694904 -1612944 5694152 1612952 5694360 1613592 5694904 1613584 5693568 -1612952 5694360 1613384 5694896 1613592 5694904 1613584 5693568 -1612944 5694152 1612952 5694360 1613584 5693568 1612920 5694072 -1612944 5694152 1612936 5694272 1612952 5694360 1613584 5693568 -1613592 5694904 1613688 5694912 1613584 5693568 1612952 5694360 -1621712 5701344 1622880 5701536 1623016 5701528 1613584 5693568 -1621712 5701344 1613656 5693824 1613840 5695128 1613864 5695256 -1613584 5693568 1613656 5693824 1621712 5701344 1623016 5701528 -1613584 5693568 1613656 5693824 1623016 5701528 1623192 5701576 -1613584 5693568 1613840 5695128 1613656 5693824 1623016 5701528 -1613840 5695128 1613656 5693824 1613584 5693568 1613728 5694936 -1613656 5693824 1623016 5701528 1613584 5693568 1613728 5694936 -1613584 5693568 1613688 5694912 1613728 5694936 1613656 5693824 -1613584 5693568 1613592 5694904 1613688 5694912 1613656 5693824 -1613584 5693568 1613592 5694904 1613656 5693824 1623016 5701528 -1613688 5694912 1613728 5694936 1613656 5693824 1613592 5694904 -1613728 5694936 1613840 5695128 1613656 5693824 1613688 5694912 -1613656 5693824 1613840 5695128 1621712 5701344 1623016 5701528 -1613840 5695128 1621712 5701344 1613656 5693824 1613728 5694936 -1613584 5693568 1612952 5694360 1613592 5694904 1613656 5693824 -1613592 5694904 1613688 5694912 1613656 5693824 1612952 5694360 -1613584 5693568 1612952 5694360 1613656 5693824 1623016 5701528 -1613584 5693568 1612944 5694152 1612952 5694360 1613656 5693824 -1613584 5693568 1612944 5694152 1613656 5693824 1623016 5701528 -1612952 5694360 1613384 5694896 1613592 5694904 1613656 5693824 -1613592 5694904 1613688 5694912 1613656 5693824 1613384 5694896 -1613584 5693568 1612920 5694072 1612944 5694152 1613656 5693824 -1613584 5693568 1612920 5694072 1613656 5693824 1623016 5701528 -1612944 5694152 1612952 5694360 1613656 5693824 1612920 5694072 -1613584 5693568 1612840 5693952 1612920 5694072 1613656 5693824 -1612952 5694360 1613080 5694848 1613384 5694896 1613656 5693824 -1612944 5694152 1612936 5694272 1612952 5694360 1613656 5693824 -1612952 5694360 1613384 5694896 1613656 5693824 1612944 5694152 -1621712 5701344 1622880 5701536 1623016 5701528 1613656 5693824 -1621712 5701344 1613752 5694024 1613840 5695128 1613864 5695256 -1621712 5701344 1613752 5694024 1613864 5695256 1621576 5701360 -1613656 5693824 1613752 5694024 1621712 5701344 1623016 5701528 -1613656 5693824 1613752 5694024 1623016 5701528 1613584 5693568 -1623016 5701528 1623192 5701576 1613584 5693568 1613752 5694024 -1613752 5694024 1621712 5701344 1623016 5701528 1613584 5693568 -1613656 5693824 1613840 5695128 1613752 5694024 1613584 5693568 -1613840 5695128 1613752 5694024 1613656 5693824 1613728 5694936 -1613656 5693824 1613688 5694912 1613728 5694936 1613752 5694024 -1613656 5693824 1613592 5694904 1613688 5694912 1613752 5694024 -1613656 5693824 1613384 5694896 1613592 5694904 1613752 5694024 -1613656 5693824 1612952 5694360 1613384 5694896 1613752 5694024 -1613384 5694896 1613592 5694904 1613752 5694024 1612952 5694360 -1613592 5694904 1613688 5694912 1613752 5694024 1613384 5694896 -1613688 5694912 1613728 5694936 1613752 5694024 1613592 5694904 -1613752 5694024 1613584 5693568 1613656 5693824 1612952 5694360 -1613728 5694936 1613840 5695128 1613752 5694024 1613688 5694912 -1621712 5701344 1623016 5701528 1613752 5694024 1613864 5695256 -1613752 5694024 1613728 5694936 1613840 5695128 1613864 5695256 -1612952 5694360 1613080 5694848 1613384 5694896 1613752 5694024 -1613656 5693824 1612944 5694152 1612952 5694360 1613752 5694024 -1613656 5693824 1612920 5694072 1612944 5694152 1613752 5694024 -1612952 5694360 1613384 5694896 1613752 5694024 1612944 5694152 -1613656 5693824 1612944 5694152 1613752 5694024 1613584 5693568 -1612944 5694152 1612936 5694272 1612952 5694360 1613752 5694024 -1621712 5701344 1622880 5701536 1623016 5701528 1613752 5694024 -1613752 5694024 1613800 5694064 1623016 5701528 1613584 5693568 -1623016 5701528 1623192 5701576 1613584 5693568 1613800 5694064 -1613752 5694024 1613800 5694064 1613584 5693568 1613656 5693824 -1613800 5694064 1623016 5701528 1613584 5693568 1613656 5693824 -1621712 5701344 1613800 5694064 1613752 5694024 1613864 5695256 -1621712 5701344 1613800 5694064 1613864 5695256 1621576 5701360 -1613752 5694024 1613840 5695128 1613864 5695256 1613800 5694064 -1613864 5695256 1621712 5701344 1613800 5694064 1613840 5695128 -1613752 5694024 1613840 5695128 1613800 5694064 1613656 5693824 -1613752 5694024 1613728 5694936 1613840 5695128 1613800 5694064 -1613840 5695128 1613864 5695256 1613800 5694064 1613728 5694936 -1613752 5694024 1613688 5694912 1613728 5694936 1613800 5694064 -1613752 5694024 1613592 5694904 1613688 5694912 1613800 5694064 -1613752 5694024 1613384 5694896 1613592 5694904 1613800 5694064 -1613752 5694024 1612952 5694360 1613384 5694896 1613800 5694064 -1613592 5694904 1613688 5694912 1613800 5694064 1613384 5694896 -1613688 5694912 1613728 5694936 1613800 5694064 1613592 5694904 -1613752 5694024 1613384 5694896 1613800 5694064 1613656 5693824 -1613728 5694936 1613840 5695128 1613800 5694064 1613688 5694912 -1613800 5694064 1621712 5701344 1623016 5701528 1613584 5693568 -1621712 5701344 1623016 5701528 1613800 5694064 1613864 5695256 -1623016 5701528 1613800 5694064 1621712 5701344 1622880 5701536 -1613800 5694064 1613800 5694104 1613840 5695128 1613864 5695256 -1613800 5694064 1613800 5694104 1613864 5695256 1621712 5701344 -1613864 5695256 1621576 5701360 1621712 5701344 1613800 5694104 -1613800 5694104 1613840 5695128 1613864 5695256 1621712 5701344 -1613728 5694936 1613800 5694104 1613800 5694064 1613688 5694912 -1613800 5694064 1613592 5694904 1613688 5694912 1613800 5694104 -1613800 5694064 1613384 5694896 1613592 5694904 1613800 5694104 -1613800 5694064 1613752 5694024 1613384 5694896 1613800 5694104 -1613752 5694024 1612952 5694360 1613384 5694896 1613800 5694104 -1613752 5694024 1612944 5694152 1612952 5694360 1613800 5694104 -1613752 5694024 1612952 5694360 1613800 5694104 1613800 5694064 -1613384 5694896 1613592 5694904 1613800 5694104 1612952 5694360 -1613592 5694904 1613688 5694912 1613800 5694104 1613384 5694896 -1613688 5694912 1613728 5694936 1613800 5694104 1613592 5694904 -1613800 5694064 1613752 5694024 1613800 5694104 1621712 5701344 -1613800 5694064 1613800 5694104 1621712 5701344 1623016 5701528 -1613800 5694104 1613728 5694936 1613840 5695128 1613864 5695256 -1613728 5694936 1613840 5695128 1613800 5694104 1613688 5694912 -1612952 5694360 1613080 5694848 1613384 5694896 1613800 5694104 -1621712 5701344 1613840 5694144 1613864 5695256 1621576 5701360 -1613864 5695256 1613840 5694144 1613800 5694104 1613840 5695128 -1613864 5695256 1615968 5699848 1621576 5701360 1613840 5694144 -1613800 5694104 1613840 5694144 1621712 5701344 1613800 5694064 -1621712 5701344 1623016 5701528 1613800 5694064 1613840 5694144 -1613800 5694064 1613800 5694104 1613840 5694144 1623016 5701528 -1623016 5701528 1613584 5693568 1613800 5694064 1613840 5694144 -1623016 5701528 1623192 5701576 1613584 5693568 1613840 5694144 -1613584 5693568 1613656 5693824 1613800 5694064 1613840 5694144 -1613800 5694064 1613800 5694104 1613840 5694144 1613584 5693568 -1623016 5701528 1613584 5693568 1613840 5694144 1621712 5701344 -1613800 5694104 1613728 5694936 1613840 5695128 1613840 5694144 -1613840 5695128 1613864 5695256 1613840 5694144 1613728 5694936 -1613840 5694144 1613800 5694064 1613800 5694104 1613728 5694936 -1613800 5694104 1613688 5694912 1613728 5694936 1613840 5694144 -1613800 5694104 1613592 5694904 1613688 5694912 1613840 5694144 -1613800 5694104 1613384 5694896 1613592 5694904 1613840 5694144 -1613800 5694104 1612952 5694360 1613384 5694896 1613840 5694144 -1613592 5694904 1613688 5694912 1613840 5694144 1613384 5694896 -1613728 5694936 1613840 5695128 1613840 5694144 1613688 5694912 -1613800 5694104 1613384 5694896 1613840 5694144 1613800 5694064 -1613688 5694912 1613728 5694936 1613840 5694144 1613592 5694904 -1621712 5701344 1623016 5701528 1613840 5694144 1621576 5701360 -1613840 5694144 1613840 5695128 1613864 5695256 1621576 5701360 -1621712 5701344 1622880 5701536 1623016 5701528 1613840 5694144 -1613584 5693568 1613904 5694160 1623016 5701528 1623192 5701576 -1613584 5693568 1613904 5694160 1623192 5701576 1613488 5693384 -1613840 5694144 1613904 5694160 1613584 5693568 1613800 5694064 -1613584 5693568 1613656 5693824 1613800 5694064 1613904 5694160 -1613656 5693824 1613752 5694024 1613800 5694064 1613904 5694160 -1613840 5694144 1613904 5694160 1613800 5694064 1613800 5694104 -1613800 5694064 1613840 5694144 1613904 5694160 1613656 5693824 -1623016 5701528 1613904 5694160 1613840 5694144 1621712 5701344 -1613840 5694144 1621576 5701360 1621712 5701344 1613904 5694160 -1613840 5694144 1613864 5695256 1621576 5701360 1613904 5694160 -1613864 5695256 1615968 5699848 1621576 5701360 1613904 5694160 -1621712 5701344 1623016 5701528 1613904 5694160 1621576 5701360 -1621576 5701360 1621712 5701344 1613904 5694160 1613864 5695256 -1613840 5694144 1613864 5695256 1613904 5694160 1613800 5694064 -1613840 5694144 1613840 5695128 1613864 5695256 1613904 5694160 -1613864 5695256 1621576 5701360 1613904 5694160 1613840 5695128 -1613840 5694144 1613728 5694936 1613840 5695128 1613904 5694160 -1613840 5694144 1613688 5694912 1613728 5694936 1613904 5694160 -1613728 5694936 1613840 5695128 1613904 5694160 1613688 5694912 -1613840 5694144 1613592 5694904 1613688 5694912 1613904 5694160 -1613840 5694144 1613688 5694912 1613904 5694160 1613800 5694064 -1613840 5695128 1613864 5695256 1613904 5694160 1613728 5694936 -1613584 5693568 1613656 5693824 1613904 5694160 1623192 5701576 -1613904 5694160 1621712 5701344 1623016 5701528 1623192 5701576 -1623016 5701528 1613904 5694160 1621712 5701344 1622880 5701536 -1613584 5693568 1613984 5694128 1623192 5701576 1613488 5693384 -1623192 5701576 1613984 5694128 1613904 5694160 1623016 5701528 -1623192 5701576 1623296 5701624 1613488 5693384 1613984 5694128 -1613904 5694160 1613984 5694128 1613584 5693568 1613656 5693824 -1613904 5694160 1613984 5694128 1613656 5693824 1613800 5694064 -1613656 5693824 1613752 5694024 1613800 5694064 1613984 5694128 -1613904 5694160 1613984 5694128 1613800 5694064 1613840 5694144 -1613984 5694128 1613584 5693568 1613656 5693824 1613800 5694064 -1613984 5694128 1613800 5694064 1613904 5694160 1623016 5701528 -1613904 5694160 1621712 5701344 1623016 5701528 1613984 5694128 -1623016 5701528 1623192 5701576 1613984 5694128 1621712 5701344 -1613904 5694160 1621576 5701360 1621712 5701344 1613984 5694128 -1613904 5694160 1613864 5695256 1621576 5701360 1613984 5694128 -1613904 5694160 1613840 5695128 1613864 5695256 1613984 5694128 -1613864 5695256 1615968 5699848 1621576 5701360 1613984 5694128 -1615968 5699848 1621488 5701424 1621576 5701360 1613984 5694128 -1613864 5695256 1613832 5695328 1615968 5699848 1613984 5694128 -1621576 5701360 1621712 5701344 1613984 5694128 1615968 5699848 -1613864 5695256 1615968 5699848 1613984 5694128 1613840 5695128 -1613904 5694160 1613728 5694936 1613840 5695128 1613984 5694128 -1613840 5695128 1613864 5695256 1613984 5694128 1613728 5694936 -1613904 5694160 1613688 5694912 1613728 5694936 1613984 5694128 -1613904 5694160 1613728 5694936 1613984 5694128 1613800 5694064 -1621712 5701344 1623016 5701528 1613984 5694128 1621576 5701360 -1613584 5693568 1613656 5693824 1613984 5694128 1613488 5693384 -1613984 5694128 1623016 5701528 1623192 5701576 1613488 5693384 -1621712 5701344 1622880 5701536 1623016 5701528 1613984 5694128 -1613984 5694128 1614056 5694128 1613488 5693384 1613584 5693568 -1613488 5693384 1614056 5694128 1623192 5701576 1623296 5701624 -1613488 5693384 1614056 5694128 1623296 5701624 1663880 5646248 -1613984 5694128 1614056 5694128 1613584 5693568 1613656 5693824 -1614056 5694128 1613488 5693384 1613584 5693568 1613656 5693824 -1613984 5694128 1614056 5694128 1613656 5693824 1613800 5694064 -1613984 5694128 1623192 5701576 1614056 5694128 1613656 5693824 -1623192 5701576 1614056 5694128 1613984 5694128 1623016 5701528 -1613984 5694128 1621712 5701344 1623016 5701528 1614056 5694128 -1613984 5694128 1621576 5701360 1621712 5701344 1614056 5694128 -1621712 5701344 1623016 5701528 1614056 5694128 1621576 5701360 -1613984 5694128 1615968 5699848 1621576 5701360 1614056 5694128 -1615968 5699848 1621488 5701424 1621576 5701360 1614056 5694128 -1613984 5694128 1613864 5695256 1615968 5699848 1614056 5694128 -1613864 5695256 1613832 5695328 1615968 5699848 1614056 5694128 -1615968 5699848 1621576 5701360 1614056 5694128 1613864 5695256 -1613984 5694128 1613840 5695128 1613864 5695256 1614056 5694128 -1613984 5694128 1613728 5694936 1613840 5695128 1614056 5694128 -1613864 5695256 1615968 5699848 1614056 5694128 1613840 5695128 -1613840 5695128 1613864 5695256 1614056 5694128 1613728 5694936 -1613984 5694128 1613904 5694160 1613728 5694936 1614056 5694128 -1613728 5694936 1613840 5695128 1614056 5694128 1613904 5694160 -1613904 5694160 1613688 5694912 1613728 5694936 1614056 5694128 -1621576 5701360 1621712 5701344 1614056 5694128 1615968 5699848 -1614056 5694128 1613656 5693824 1613984 5694128 1613904 5694160 -1623016 5701528 1623192 5701576 1614056 5694128 1621712 5701344 -1614056 5694128 1623296 5701624 1613488 5693384 1613584 5693568 -1621712 5701344 1622880 5701536 1623016 5701528 1614056 5694128 -1614056 5694128 1623016 5701528 1623192 5701576 1623296 5701624 -1613488 5693384 1614120 5694152 1623296 5701624 1663880 5646248 -1623296 5701624 1614120 5694152 1614056 5694128 1623192 5701576 -1614056 5694128 1614120 5694152 1613488 5693384 1613584 5693568 -1614056 5694128 1614120 5694152 1613584 5693568 1613656 5693824 -1614120 5694152 1613584 5693568 1614056 5694128 1623192 5701576 -1614056 5694128 1623016 5701528 1623192 5701576 1614120 5694152 -1623192 5701576 1623296 5701624 1614120 5694152 1623016 5701528 -1614056 5694128 1621712 5701344 1623016 5701528 1614120 5694152 -1614056 5694128 1621576 5701360 1621712 5701344 1614120 5694152 -1614056 5694128 1615968 5699848 1621576 5701360 1614120 5694152 -1615968 5699848 1621488 5701424 1621576 5701360 1614120 5694152 -1621576 5701360 1621712 5701344 1614120 5694152 1615968 5699848 -1614056 5694128 1613864 5695256 1615968 5699848 1614120 5694152 -1613864 5695256 1613832 5695328 1615968 5699848 1614120 5694152 -1614056 5694128 1613840 5695128 1613864 5695256 1614120 5694152 -1613864 5695256 1615968 5699848 1614120 5694152 1613840 5695128 -1614056 5694128 1613728 5694936 1613840 5695128 1614120 5694152 -1614056 5694128 1613904 5694160 1613728 5694936 1614120 5694152 -1613904 5694160 1613688 5694912 1613728 5694936 1614120 5694152 -1613840 5695128 1613864 5695256 1614120 5694152 1613728 5694936 -1613728 5694936 1613840 5695128 1614120 5694152 1613904 5694160 -1614056 5694128 1613984 5694128 1613904 5694160 1614120 5694152 -1613904 5694160 1613728 5694936 1614120 5694152 1613984 5694128 -1615968 5699848 1621576 5701360 1614120 5694152 1613864 5695256 -1621712 5701344 1623016 5701528 1614120 5694152 1621576 5701360 -1621712 5701344 1622880 5701536 1623016 5701528 1614120 5694152 -1614056 5694128 1613984 5694128 1614120 5694152 1613584 5693568 -1623016 5701528 1623192 5701576 1614120 5694152 1621712 5701344 -1614120 5694152 1623296 5701624 1613488 5693384 1613584 5693568 -1623296 5701624 1613488 5693384 1614120 5694152 1623192 5701576 -1621576 5701360 1614216 5694264 1615968 5699848 1621488 5701424 -1614120 5694152 1614216 5694264 1621576 5701360 1621712 5701344 -1615968 5699848 1614216 5694264 1614120 5694152 1613864 5695256 -1615968 5699848 1614216 5694264 1613864 5695256 1613832 5695328 -1614120 5694152 1613840 5695128 1613864 5695256 1614216 5694264 -1614120 5694152 1613728 5694936 1613840 5695128 1614216 5694264 -1613840 5695128 1613864 5695256 1614216 5694264 1613728 5694936 -1614120 5694152 1613904 5694160 1613728 5694936 1614216 5694264 -1614120 5694152 1613984 5694128 1613904 5694160 1614216 5694264 -1613904 5694160 1613688 5694912 1613728 5694936 1614216 5694264 -1613728 5694936 1613840 5695128 1614216 5694264 1613904 5694160 -1613864 5695256 1615968 5699848 1614216 5694264 1613840 5695128 -1614120 5694152 1614216 5694264 1621712 5701344 1623016 5701528 -1614216 5694264 1621576 5701360 1621712 5701344 1623016 5701528 -1621712 5701344 1622880 5701536 1623016 5701528 1614216 5694264 -1614120 5694152 1614216 5694264 1623016 5701528 1623192 5701576 -1614120 5694152 1614216 5694264 1623192 5701576 1623296 5701624 -1614216 5694264 1621712 5701344 1623016 5701528 1623192 5701576 -1614216 5694264 1623016 5701528 1623192 5701576 1623296 5701624 -1614120 5694152 1613904 5694160 1614216 5694264 1623296 5701624 -1614120 5694152 1614216 5694264 1623296 5701624 1613488 5693384 -1623296 5701624 1663880 5646248 1613488 5693384 1614216 5694264 -1614216 5694264 1623192 5701576 1623296 5701624 1613488 5693384 -1614120 5694152 1614216 5694264 1613488 5693384 1613584 5693568 -1614120 5694152 1613904 5694160 1614216 5694264 1613488 5693384 -1614216 5694264 1615968 5699848 1621576 5701360 1621712 5701344 -1615968 5699848 1621576 5701360 1614216 5694264 1613864 5695256 -1615968 5699848 1614256 5694448 1613864 5695256 1613832 5695328 -1613864 5695256 1614256 5694448 1614216 5694264 1613840 5695128 -1614216 5694264 1613728 5694936 1613840 5695128 1614256 5694448 -1614216 5694264 1613904 5694160 1613728 5694936 1614256 5694448 -1613904 5694160 1613688 5694912 1613728 5694936 1614256 5694448 -1613904 5694160 1613688 5694912 1614256 5694448 1614216 5694264 -1613728 5694936 1613840 5695128 1614256 5694448 1613688 5694912 -1613904 5694160 1613840 5694144 1613688 5694912 1614256 5694448 -1614216 5694264 1614120 5694152 1613904 5694160 1614256 5694448 -1613840 5695128 1613864 5695256 1614256 5694448 1613728 5694936 -1614256 5694448 1615968 5699848 1614216 5694264 1613904 5694160 -1614216 5694264 1614256 5694448 1615968 5699848 1621576 5701360 -1615968 5699848 1621488 5701424 1621576 5701360 1614256 5694448 -1614216 5694264 1614256 5694448 1621576 5701360 1621712 5701344 -1614216 5694264 1614256 5694448 1621712 5701344 1623016 5701528 -1614216 5694264 1613904 5694160 1614256 5694448 1621712 5701344 -1614256 5694448 1615968 5699848 1621576 5701360 1621712 5701344 -1614256 5694448 1613864 5695256 1615968 5699848 1621576 5701360 -1613864 5695256 1615968 5699848 1614256 5694448 1613840 5695128 -1615968 5699848 1614280 5694808 1613864 5695256 1613832 5695328 -1615968 5699848 1614280 5694808 1613832 5695328 1613696 5697608 -1613832 5695328 1613640 5697488 1613696 5697608 1614280 5694808 -1614280 5694808 1613864 5695256 1613832 5695328 1613696 5697608 -1615968 5699848 1614280 5694808 1613696 5697608 1613728 5697776 -1614256 5694448 1614280 5694808 1615968 5699848 1621576 5701360 -1615968 5699848 1621488 5701424 1621576 5701360 1614280 5694808 -1614256 5694448 1614280 5694808 1621576 5701360 1621712 5701344 -1614256 5694448 1614280 5694808 1621712 5701344 1614216 5694264 -1614280 5694808 1615968 5699848 1621576 5701360 1621712 5701344 -1614256 5694448 1613864 5695256 1614280 5694808 1621712 5701344 -1613864 5695256 1614280 5694808 1614256 5694448 1613840 5695128 -1614256 5694448 1613728 5694936 1613840 5695128 1614280 5694808 -1614256 5694448 1613688 5694912 1613728 5694936 1614280 5694808 -1614280 5694808 1621712 5701344 1614256 5694448 1613728 5694936 -1613840 5695128 1613864 5695256 1614280 5694808 1613728 5694936 -1615968 5699848 1621576 5701360 1614280 5694808 1613696 5697608 -1614280 5694808 1613840 5695128 1613864 5695256 1613832 5695328 -1613696 5697608 1614344 5695072 1614280 5694808 1613832 5695328 -1613696 5697608 1614344 5695072 1613832 5695328 1613640 5697488 -1613832 5695328 1613528 5697360 1613640 5697488 1614344 5695072 -1614344 5695072 1614280 5694808 1613832 5695328 1613640 5697488 -1614280 5694808 1613864 5695256 1613832 5695328 1614344 5695072 -1613832 5695328 1613640 5697488 1614344 5695072 1613864 5695256 -1615968 5699848 1614344 5695072 1613696 5697608 1613728 5697776 -1614280 5694808 1614344 5695072 1615968 5699848 1621576 5701360 -1615968 5699848 1621488 5701424 1621576 5701360 1614344 5695072 -1614280 5694808 1614344 5695072 1621576 5701360 1621712 5701344 -1614280 5694808 1614344 5695072 1621712 5701344 1614256 5694448 -1621712 5701344 1614216 5694264 1614256 5694448 1614344 5695072 -1614344 5695072 1621576 5701360 1621712 5701344 1614256 5694448 -1614344 5695072 1615968 5699848 1621576 5701360 1621712 5701344 -1614344 5695072 1614256 5694448 1614280 5694808 1613864 5695256 -1614280 5694808 1613840 5695128 1613864 5695256 1614344 5695072 -1613864 5695256 1613832 5695328 1614344 5695072 1613840 5695128 -1614280 5694808 1613728 5694936 1613840 5695128 1614344 5695072 -1614280 5694808 1613840 5695128 1614344 5695072 1614256 5694448 -1614344 5695072 1613696 5697608 1615968 5699848 1621576 5701360 -1613696 5697608 1615968 5699848 1614344 5695072 1613640 5697488 -1621576 5701360 1614440 5695208 1615968 5699848 1621488 5701424 -1614344 5695072 1614440 5695208 1621576 5701360 1621712 5701344 -1614344 5695072 1614440 5695208 1621712 5701344 1614256 5694448 -1621712 5701344 1614216 5694264 1614256 5694448 1614440 5695208 -1614344 5695072 1614440 5695208 1614256 5694448 1614280 5694808 -1614440 5695208 1621712 5701344 1614256 5694448 1614280 5694808 -1614440 5695208 1621576 5701360 1621712 5701344 1614256 5694448 -1615968 5699848 1614440 5695208 1614344 5695072 1613696 5697608 -1615968 5699848 1614440 5695208 1613696 5697608 1613728 5697776 -1614344 5695072 1613696 5697608 1614440 5695208 1614280 5694808 -1614344 5695072 1613640 5697488 1613696 5697608 1614440 5695208 -1614344 5695072 1613832 5695328 1613640 5697488 1614440 5695208 -1613832 5695328 1613528 5697360 1613640 5697488 1614440 5695208 -1613832 5695328 1613744 5695376 1613528 5697360 1614440 5695208 -1613528 5697360 1613640 5697488 1614440 5695208 1613744 5695376 -1613832 5695328 1613744 5695376 1614440 5695208 1614344 5695072 -1614344 5695072 1613864 5695256 1613832 5695328 1614440 5695208 -1613832 5695328 1613744 5695376 1614440 5695208 1613864 5695256 -1614344 5695072 1613840 5695128 1613864 5695256 1614440 5695208 -1613832 5695328 1613792 5695344 1613744 5695376 1614440 5695208 -1613696 5697608 1615968 5699848 1614440 5695208 1613640 5697488 -1614344 5695072 1613864 5695256 1614440 5695208 1614280 5694808 -1613640 5697488 1613696 5697608 1614440 5695208 1613528 5697360 -1614440 5695208 1615968 5699848 1621576 5701360 1621712 5701344 -1615968 5699848 1621576 5701360 1614440 5695208 1613696 5697608 -1613744 5695376 1613312 5697192 1613528 5697360 1614440 5695208 -1621576 5701360 1614568 5695320 1615968 5699848 1621488 5701424 -1614440 5695208 1614568 5695320 1621576 5701360 1621712 5701344 -1614440 5695208 1614568 5695320 1621712 5701344 1614256 5694448 -1621712 5701344 1614216 5694264 1614256 5694448 1614568 5695320 -1621712 5701344 1623016 5701528 1614216 5694264 1614568 5695320 -1623016 5701528 1623192 5701576 1614216 5694264 1614568 5695320 -1621712 5701344 1622880 5701536 1623016 5701528 1614568 5695320 -1614216 5694264 1614256 5694448 1614568 5695320 1623016 5701528 -1614440 5695208 1614568 5695320 1614256 5694448 1614280 5694808 -1614440 5695208 1614568 5695320 1614280 5694808 1614344 5695072 -1614256 5694448 1614280 5694808 1614568 5695320 1614216 5694264 -1614568 5695320 1621576 5701360 1621712 5701344 1623016 5701528 -1614440 5695208 1615968 5699848 1614568 5695320 1614280 5694808 -1615968 5699848 1614568 5695320 1614440 5695208 1613696 5697608 -1615968 5699848 1614568 5695320 1613696 5697608 1613728 5697776 -1615968 5699848 1614568 5695320 1613728 5697776 1613736 5698080 -1614440 5695208 1613640 5697488 1613696 5697608 1614568 5695320 -1614440 5695208 1613528 5697360 1613640 5697488 1614568 5695320 -1614440 5695208 1613744 5695376 1613528 5697360 1614568 5695320 -1614440 5695208 1613832 5695328 1613744 5695376 1614568 5695320 -1613744 5695376 1613528 5697360 1614568 5695320 1613832 5695328 -1614440 5695208 1613864 5695256 1613832 5695328 1614568 5695320 -1613832 5695328 1613792 5695344 1613744 5695376 1614568 5695320 -1613640 5697488 1613696 5697608 1614568 5695320 1613528 5697360 -1613528 5697360 1613640 5697488 1614568 5695320 1613744 5695376 -1614568 5695320 1614280 5694808 1614440 5695208 1613832 5695328 -1614568 5695320 1613640 5697488 1613696 5697608 1613728 5697776 -1614568 5695320 1615968 5699848 1621576 5701360 1621712 5701344 -1615968 5699848 1621576 5701360 1614568 5695320 1613728 5697776 -1613744 5695376 1613312 5697192 1613528 5697360 1614568 5695320 -1623016 5701528 1614696 5695376 1614568 5695320 1621712 5701344 -1614216 5694264 1614696 5695376 1623016 5701528 1623192 5701576 -1623016 5701528 1614696 5695376 1621712 5701344 1622880 5701536 -1614568 5695320 1614696 5695376 1614216 5694264 1614256 5694448 -1614568 5695320 1614696 5695376 1614256 5694448 1614280 5694808 -1614696 5695376 1614216 5694264 1614256 5694448 1614280 5694808 -1614568 5695320 1614696 5695376 1614280 5694808 1614440 5695208 -1614280 5694808 1614344 5695072 1614440 5695208 1614696 5695376 -1614696 5695376 1614256 5694448 1614280 5694808 1614440 5695208 -1614568 5695320 1621576 5701360 1621712 5701344 1614696 5695376 -1621712 5701344 1623016 5701528 1614696 5695376 1621576 5701360 -1614568 5695320 1615968 5699848 1621576 5701360 1614696 5695376 -1615968 5699848 1621488 5701424 1621576 5701360 1614696 5695376 -1621576 5701360 1621712 5701344 1614696 5695376 1615968 5699848 -1614696 5695376 1614440 5695208 1614568 5695320 1615968 5699848 -1614568 5695320 1613728 5697776 1615968 5699848 1614696 5695376 -1613728 5697776 1613736 5698080 1615968 5699848 1614696 5695376 -1614568 5695320 1613696 5697608 1613728 5697776 1614696 5695376 -1614568 5695320 1613640 5697488 1613696 5697608 1614696 5695376 -1613696 5697608 1613728 5697776 1614696 5695376 1613640 5697488 -1614568 5695320 1613528 5697360 1613640 5697488 1614696 5695376 -1614568 5695320 1613744 5695376 1613528 5697360 1614696 5695376 -1614568 5695320 1613832 5695328 1613744 5695376 1614696 5695376 -1613528 5697360 1613640 5697488 1614696 5695376 1613744 5695376 -1613640 5697488 1613696 5697608 1614696 5695376 1613528 5697360 -1615968 5699848 1621576 5701360 1614696 5695376 1613728 5697776 -1614568 5695320 1613744 5695376 1614696 5695376 1614440 5695208 -1613728 5697776 1615968 5699848 1614696 5695376 1613696 5697608 -1614696 5695376 1623016 5701528 1614216 5694264 1614256 5694448 -1623016 5701528 1614216 5694264 1614696 5695376 1621712 5701344 -1613744 5695376 1613312 5697192 1613528 5697360 1614696 5695376 -1614216 5694264 1614856 5695400 1623016 5701528 1623192 5701576 -1614216 5694264 1614856 5695400 1623192 5701576 1623296 5701624 -1614696 5695376 1614856 5695400 1614216 5694264 1614256 5694448 -1614696 5695376 1614856 5695400 1614256 5694448 1614280 5694808 -1614696 5695376 1614856 5695400 1614280 5694808 1614440 5695208 -1614856 5695400 1614256 5694448 1614280 5694808 1614440 5695208 -1614280 5694808 1614344 5695072 1614440 5695208 1614856 5695400 -1614696 5695376 1614856 5695400 1614440 5695208 1614568 5695320 -1614856 5695400 1614216 5694264 1614256 5694448 1614280 5694808 -1614696 5695376 1623016 5701528 1614856 5695400 1614440 5695208 -1623016 5701528 1614856 5695400 1614696 5695376 1621712 5701344 -1614696 5695376 1621576 5701360 1621712 5701344 1614856 5695400 -1623016 5701528 1614856 5695400 1621712 5701344 1622880 5701536 -1614696 5695376 1615968 5699848 1621576 5701360 1614856 5695400 -1615968 5699848 1621488 5701424 1621576 5701360 1614856 5695400 -1621576 5701360 1621712 5701344 1614856 5695400 1615968 5699848 -1614696 5695376 1613728 5697776 1615968 5699848 1614856 5695400 -1613728 5697776 1613736 5698080 1615968 5699848 1614856 5695400 -1615968 5699848 1621576 5701360 1614856 5695400 1613728 5697776 -1614696 5695376 1613696 5697608 1613728 5697776 1614856 5695400 -1614696 5695376 1613640 5697488 1613696 5697608 1614856 5695400 -1614696 5695376 1613528 5697360 1613640 5697488 1614856 5695400 -1613728 5697776 1615968 5699848 1614856 5695400 1613696 5697608 -1613696 5697608 1613728 5697776 1614856 5695400 1613640 5697488 -1614856 5695400 1614440 5695208 1614696 5695376 1613640 5697488 -1621712 5701344 1623016 5701528 1614856 5695400 1621576 5701360 -1614216 5694264 1614256 5694448 1614856 5695400 1623192 5701576 -1614856 5695400 1621712 5701344 1623016 5701528 1623192 5701576 -1623192 5701576 1615056 5695464 1614856 5695400 1623016 5701528 -1614216 5694264 1615056 5695464 1623192 5701576 1623296 5701624 -1614856 5695400 1615056 5695464 1614216 5694264 1614256 5694448 -1614856 5695400 1615056 5695464 1614256 5694448 1614280 5694808 -1615056 5695464 1614256 5694448 1614856 5695400 1623016 5701528 -1614856 5695400 1621712 5701344 1623016 5701528 1615056 5695464 -1623016 5701528 1623192 5701576 1615056 5695464 1621712 5701344 -1621712 5701344 1622880 5701536 1623016 5701528 1615056 5695464 -1614856 5695400 1621576 5701360 1621712 5701344 1615056 5695464 -1614856 5695400 1615968 5699848 1621576 5701360 1615056 5695464 -1615968 5699848 1621488 5701424 1621576 5701360 1615056 5695464 -1614856 5695400 1613728 5697776 1615968 5699848 1615056 5695464 -1615968 5699848 1621576 5701360 1615056 5695464 1613728 5697776 -1613728 5697776 1613736 5698080 1615968 5699848 1615056 5695464 -1614856 5695400 1613696 5697608 1613728 5697776 1615056 5695464 -1613728 5697776 1615968 5699848 1615056 5695464 1613696 5697608 -1614856 5695400 1613640 5697488 1613696 5697608 1615056 5695464 -1614856 5695400 1614696 5695376 1613640 5697488 1615056 5695464 -1614696 5695376 1613528 5697360 1613640 5697488 1615056 5695464 -1613696 5697608 1613728 5697776 1615056 5695464 1613640 5697488 -1613640 5697488 1613696 5697608 1615056 5695464 1614696 5695376 -1621576 5701360 1621712 5701344 1615056 5695464 1615968 5699848 -1614856 5695400 1614696 5695376 1615056 5695464 1614256 5694448 -1621712 5701344 1623016 5701528 1615056 5695464 1621576 5701360 -1615056 5695464 1623192 5701576 1614216 5694264 1614256 5694448 -1623192 5701576 1614216 5694264 1615056 5695464 1623016 5701528 -1615056 5695464 1615200 5695576 1623016 5701528 1623192 5701576 -1623016 5701528 1615200 5695576 1621712 5701344 1622880 5701536 -1621712 5701344 1615200 5695576 1615056 5695464 1621576 5701360 -1615056 5695464 1615968 5699848 1621576 5701360 1615200 5695576 -1615968 5699848 1621488 5701424 1621576 5701360 1615200 5695576 -1615056 5695464 1613728 5697776 1615968 5699848 1615200 5695576 -1613728 5697776 1613736 5698080 1615968 5699848 1615200 5695576 -1615056 5695464 1613696 5697608 1613728 5697776 1615200 5695576 -1613728 5697776 1615968 5699848 1615200 5695576 1613696 5697608 -1615056 5695464 1613640 5697488 1613696 5697608 1615200 5695576 -1613696 5697608 1613728 5697776 1615200 5695576 1613640 5697488 -1615056 5695464 1614696 5695376 1613640 5697488 1615200 5695576 -1615056 5695464 1614856 5695400 1614696 5695376 1615200 5695576 -1614696 5695376 1613528 5697360 1613640 5697488 1615200 5695576 -1614696 5695376 1613744 5695376 1613528 5697360 1615200 5695576 -1613640 5697488 1613696 5697608 1615200 5695576 1613528 5697360 -1614696 5695376 1613528 5697360 1615200 5695576 1614856 5695400 -1615968 5699848 1621576 5701360 1615200 5695576 1613728 5697776 -1621576 5701360 1621712 5701344 1615200 5695576 1615968 5699848 -1615056 5695464 1614856 5695400 1615200 5695576 1623192 5701576 -1615056 5695464 1615200 5695576 1623192 5701576 1614216 5694264 -1615200 5695576 1623016 5701528 1623192 5701576 1614216 5694264 -1623192 5701576 1623296 5701624 1614216 5694264 1615200 5695576 -1615056 5695464 1615200 5695576 1614216 5694264 1614256 5694448 -1615056 5695464 1614856 5695400 1615200 5695576 1614216 5694264 -1615200 5695576 1621712 5701344 1623016 5701528 1623192 5701576 -1621712 5701344 1623016 5701528 1615200 5695576 1621576 5701360 -1621576 5701360 1615376 5695816 1615968 5699848 1621488 5701424 -1615968 5699848 1615376 5695816 1615200 5695576 1613728 5697776 -1615200 5695576 1613696 5697608 1613728 5697776 1615376 5695816 -1615968 5699848 1615376 5695816 1613728 5697776 1613736 5698080 -1615200 5695576 1613640 5697488 1613696 5697608 1615376 5695816 -1613696 5697608 1613728 5697776 1615376 5695816 1613640 5697488 -1615200 5695576 1613528 5697360 1613640 5697488 1615376 5695816 -1613640 5697488 1613696 5697608 1615376 5695816 1613528 5697360 -1615200 5695576 1614696 5695376 1613528 5697360 1615376 5695816 -1614696 5695376 1613744 5695376 1613528 5697360 1615376 5695816 -1613528 5697360 1613640 5697488 1615376 5695816 1614696 5695376 -1615200 5695576 1614856 5695400 1614696 5695376 1615376 5695816 -1615200 5695576 1615056 5695464 1614856 5695400 1615376 5695816 -1614696 5695376 1613528 5697360 1615376 5695816 1614856 5695400 -1613728 5697776 1615968 5699848 1615376 5695816 1613696 5697608 -1615200 5695576 1615376 5695816 1621576 5701360 1621712 5701344 -1615376 5695816 1621712 5701344 1615200 5695576 1614856 5695400 -1615200 5695576 1615376 5695816 1621712 5701344 1623016 5701528 -1621712 5701344 1622880 5701536 1623016 5701528 1615376 5695816 -1615376 5695816 1621576 5701360 1621712 5701344 1623016 5701528 -1615200 5695576 1615376 5695816 1623016 5701528 1623192 5701576 -1615200 5695576 1615376 5695816 1623192 5701576 1614216 5694264 -1615200 5695576 1614856 5695400 1615376 5695816 1623192 5701576 -1615376 5695816 1621712 5701344 1623016 5701528 1623192 5701576 -1615376 5695816 1615968 5699848 1621576 5701360 1621712 5701344 -1615968 5699848 1621576 5701360 1615376 5695816 1613728 5697776 -1621576 5701360 1615512 5696024 1615968 5699848 1621488 5701424 -1615376 5695816 1615512 5696024 1621576 5701360 1621712 5701344 -1615376 5695816 1615512 5696024 1621712 5701344 1623016 5701528 -1621712 5701344 1622880 5701536 1623016 5701528 1615512 5696024 -1615376 5695816 1615512 5696024 1623016 5701528 1623192 5701576 -1615512 5696024 1621712 5701344 1623016 5701528 1623192 5701576 -1615376 5695816 1615512 5696024 1623192 5701576 1615200 5695576 -1615512 5696024 1621576 5701360 1621712 5701344 1623016 5701528 -1615376 5695816 1615968 5699848 1615512 5696024 1623192 5701576 -1615968 5699848 1615512 5696024 1615376 5695816 1613728 5697776 -1615968 5699848 1621576 5701360 1615512 5696024 1613728 5697776 -1615968 5699848 1615512 5696024 1613728 5697776 1613736 5698080 -1615968 5699848 1621576 5701360 1615512 5696024 1613736 5698080 -1615968 5699848 1615512 5696024 1613736 5698080 1614856 5699920 -1615376 5695816 1613696 5697608 1613728 5697776 1615512 5696024 -1615376 5695816 1613640 5697488 1613696 5697608 1615512 5696024 -1615376 5695816 1613528 5697360 1613640 5697488 1615512 5696024 -1613640 5697488 1613696 5697608 1615512 5696024 1613528 5697360 -1615376 5695816 1614696 5695376 1613528 5697360 1615512 5696024 -1613696 5697608 1613728 5697776 1615512 5696024 1613640 5697488 -1615512 5696024 1623192 5701576 1615376 5695816 1613528 5697360 -1615512 5696024 1613696 5697608 1613728 5697776 1613736 5698080 -1615512 5696024 1615968 5699848 1621576 5701360 1621712 5701344 -1621576 5701360 1615632 5696264 1615968 5699848 1621488 5701424 -1615968 5699848 1615632 5696264 1615512 5696024 1613736 5698080 -1615632 5696264 1621576 5701360 1615512 5696024 1613736 5698080 -1615968 5699848 1621576 5701360 1615632 5696264 1613736 5698080 -1615968 5699848 1615632 5696264 1613736 5698080 1614856 5699920 -1615512 5696024 1613728 5697776 1613736 5698080 1615632 5696264 -1613736 5698080 1615968 5699848 1615632 5696264 1613728 5697776 -1615512 5696024 1613728 5697776 1615632 5696264 1621576 5701360 -1615512 5696024 1613696 5697608 1613728 5697776 1615632 5696264 -1615512 5696024 1613696 5697608 1615632 5696264 1621576 5701360 -1613728 5697776 1613736 5698080 1615632 5696264 1613696 5697608 -1615512 5696024 1613640 5697488 1613696 5697608 1615632 5696264 -1615512 5696024 1613528 5697360 1613640 5697488 1615632 5696264 -1615512 5696024 1613640 5697488 1615632 5696264 1621576 5701360 -1613696 5697608 1613728 5697776 1615632 5696264 1613640 5697488 -1615512 5696024 1615632 5696264 1621576 5701360 1621712 5701344 -1615512 5696024 1613640 5697488 1615632 5696264 1621712 5701344 -1615632 5696264 1615968 5699848 1621576 5701360 1621712 5701344 -1615512 5696024 1615632 5696264 1621712 5701344 1623016 5701528 -1615512 5696024 1613640 5697488 1615632 5696264 1623016 5701528 -1621712 5701344 1622880 5701536 1623016 5701528 1615632 5696264 -1615512 5696024 1615632 5696264 1623016 5701528 1623192 5701576 -1615632 5696264 1621576 5701360 1621712 5701344 1623016 5701528 -1621576 5701360 1615680 5696424 1615968 5699848 1621488 5701424 -1615632 5696264 1615680 5696424 1621576 5701360 1621712 5701344 -1615632 5696264 1615968 5699848 1615680 5696424 1621712 5701344 -1615968 5699848 1615680 5696424 1615632 5696264 1613736 5698080 -1615632 5696264 1613728 5697776 1613736 5698080 1615680 5696424 -1615680 5696424 1621712 5701344 1615632 5696264 1613728 5697776 -1613736 5698080 1615968 5699848 1615680 5696424 1613728 5697776 -1615680 5696424 1615968 5699848 1621576 5701360 1621712 5701344 -1615968 5699848 1621576 5701360 1615680 5696424 1613736 5698080 -1615968 5699848 1615680 5696424 1613736 5698080 1614856 5699920 -1615632 5696264 1613696 5697608 1613728 5697776 1615680 5696424 -1613728 5697776 1613736 5698080 1615680 5696424 1613696 5697608 -1615632 5696264 1613696 5697608 1615680 5696424 1621712 5701344 -1615632 5696264 1613640 5697488 1613696 5697608 1615680 5696424 -1615632 5696264 1613640 5697488 1615680 5696424 1621712 5701344 -1613696 5697608 1613728 5697776 1615680 5696424 1613640 5697488 -1615632 5696264 1615512 5696024 1613640 5697488 1615680 5696424 -1615632 5696264 1615680 5696424 1621712 5701344 1623016 5701528 -1613736 5698080 1615696 5696632 1615680 5696424 1613728 5697776 -1615680 5696424 1613696 5697608 1613728 5697776 1615696 5696632 -1613728 5697776 1613736 5698080 1615696 5696632 1613696 5697608 -1615696 5696632 1615968 5699848 1615680 5696424 1613696 5697608 -1615680 5696424 1615696 5696632 1615968 5699848 1621576 5701360 -1615968 5699848 1621488 5701424 1621576 5701360 1615696 5696632 -1615680 5696424 1615696 5696632 1621576 5701360 1621712 5701344 -1615680 5696424 1613696 5697608 1615696 5696632 1621576 5701360 -1615696 5696632 1613736 5698080 1615968 5699848 1621576 5701360 -1613736 5698080 1615968 5699848 1615696 5696632 1613728 5697776 -1615968 5699848 1615696 5696632 1613736 5698080 1614856 5699920 -1615680 5696424 1613640 5697488 1613696 5697608 1615696 5696632 -1613696 5697608 1613728 5697776 1615696 5696632 1613640 5697488 -1615680 5696424 1613640 5697488 1615696 5696632 1621576 5701360 -1615680 5696424 1615632 5696264 1613640 5697488 1615696 5696632 -1615680 5696424 1615632 5696264 1615696 5696632 1621576 5701360 -1613640 5697488 1613696 5697608 1615696 5696632 1615632 5696264 -1615632 5696264 1615512 5696024 1613640 5697488 1615696 5696632 -1615512 5696024 1613528 5697360 1613640 5697488 1615696 5696632 -1613640 5697488 1613696 5697608 1615696 5696632 1615512 5696024 -1615632 5696264 1615512 5696024 1615696 5696632 1615680 5696424 -1615696 5696632 1615648 5697056 1615968 5699848 1621576 5701360 -1615968 5699848 1621488 5701424 1621576 5701360 1615648 5697056 -1615696 5696632 1615648 5697056 1621576 5701360 1615680 5696424 -1615696 5696632 1613736 5698080 1615648 5697056 1621576 5701360 -1613736 5698080 1615648 5697056 1615696 5696632 1613728 5697776 -1615696 5696632 1613696 5697608 1613728 5697776 1615648 5697056 -1615696 5696632 1613640 5697488 1613696 5697608 1615648 5697056 -1613696 5697608 1613728 5697776 1615648 5697056 1613640 5697488 -1615648 5697056 1621576 5701360 1615696 5696632 1613640 5697488 -1613728 5697776 1613736 5698080 1615648 5697056 1613696 5697608 -1615648 5697056 1613736 5698080 1615968 5699848 1621576 5701360 -1613736 5698080 1615968 5699848 1615648 5697056 1613728 5697776 -1615968 5699848 1615648 5697056 1613736 5698080 1614856 5699920 -1615968 5699848 1621576 5701360 1615648 5697056 1614856 5699920 -1615648 5697056 1613728 5697776 1613736 5698080 1614856 5699920 -1613736 5698080 1613704 5698312 1614856 5699920 1615648 5697056 -1613736 5698080 1613704 5698312 1615648 5697056 1613728 5697776 -1613704 5698312 1613808 5699080 1614856 5699920 1615648 5697056 -1614856 5699920 1615968 5699848 1615648 5697056 1613704 5698312 -1615696 5696632 1615512 5696024 1613640 5697488 1615648 5697056 -1615968 5699848 1615648 5697056 1614856 5699920 1615392 5700008 -1615648 5697056 1615528 5697784 1615968 5699848 1621576 5701360 -1614856 5699920 1615528 5697784 1615648 5697056 1613704 5698312 -1615528 5697784 1615968 5699848 1615648 5697056 1613704 5698312 -1614856 5699920 1615968 5699848 1615528 5697784 1613704 5698312 -1615648 5697056 1613736 5698080 1613704 5698312 1615528 5697784 -1615648 5697056 1613736 5698080 1615528 5697784 1615968 5699848 -1615648 5697056 1613728 5697776 1613736 5698080 1615528 5697784 -1615648 5697056 1613696 5697608 1613728 5697776 1615528 5697784 -1615648 5697056 1613640 5697488 1613696 5697608 1615528 5697784 -1615648 5697056 1613696 5697608 1615528 5697784 1615968 5699848 -1613728 5697776 1613736 5698080 1615528 5697784 1613696 5697608 -1613736 5698080 1613704 5698312 1615528 5697784 1613728 5697776 -1614856 5699920 1615528 5697784 1613704 5698312 1613808 5699080 -1614856 5699920 1615968 5699848 1615528 5697784 1613808 5699080 -1613704 5698312 1613728 5698992 1613808 5699080 1615528 5697784 -1613704 5698312 1613808 5699080 1615528 5697784 1613736 5698080 -1614856 5699920 1615528 5697784 1613808 5699080 1614728 5699896 -1613808 5699080 1613856 5699232 1614728 5699896 1615528 5697784 -1614856 5699920 1615968 5699848 1615528 5697784 1614728 5699896 -1615528 5697784 1613704 5698312 1613808 5699080 1614728 5699896 -1615968 5699848 1615528 5697784 1614856 5699920 1615392 5700008 -1614856 5699920 1615072 5700064 1615392 5700008 1615528 5697784 -1615968 5699848 1615648 5697056 1615528 5697784 1615392 5700008 -1615528 5697784 1614728 5699896 1614856 5699920 1615392 5700008 -1615968 5699848 1615528 5697784 1615392 5700008 1615600 5700000 -1615392 5700008 1615456 5698048 1614856 5699920 1615072 5700064 -1614856 5699920 1615456 5698048 1615528 5697784 1614728 5699896 -1615456 5698048 1615392 5700008 1615528 5697784 1614728 5699896 -1614856 5699920 1615392 5700008 1615456 5698048 1614728 5699896 -1615528 5697784 1613808 5699080 1614728 5699896 1615456 5698048 -1613808 5699080 1613856 5699232 1614728 5699896 1615456 5698048 -1615528 5697784 1613808 5699080 1615456 5698048 1615392 5700008 -1614728 5699896 1614856 5699920 1615456 5698048 1613856 5699232 -1615528 5697784 1613704 5698312 1613808 5699080 1615456 5698048 -1615528 5697784 1613704 5698312 1615456 5698048 1615392 5700008 -1613704 5698312 1613728 5698992 1613808 5699080 1615456 5698048 -1615528 5697784 1613736 5698080 1613704 5698312 1615456 5698048 -1615528 5697784 1613736 5698080 1615456 5698048 1615392 5700008 -1615528 5697784 1613728 5697776 1613736 5698080 1615456 5698048 -1615528 5697784 1613696 5697608 1613728 5697776 1615456 5698048 -1615528 5697784 1613728 5697776 1615456 5698048 1615392 5700008 -1613704 5698312 1613808 5699080 1615456 5698048 1613736 5698080 -1613736 5698080 1613704 5698312 1615456 5698048 1613728 5697776 -1613856 5699232 1614600 5699912 1614728 5699896 1615456 5698048 -1613808 5699080 1613856 5699232 1615456 5698048 1613704 5698312 -1615528 5697784 1615456 5698048 1615392 5700008 1615968 5699848 -1615528 5697784 1615456 5698048 1615968 5699848 1615648 5697056 -1615528 5697784 1613728 5697776 1615456 5698048 1615968 5699848 -1615456 5698048 1614856 5699920 1615392 5700008 1615968 5699848 -1615392 5700008 1615600 5700000 1615968 5699848 1615456 5698048 -1615392 5700008 1615456 5698128 1615456 5698048 1614856 5699920 -1615392 5700008 1615456 5698128 1614856 5699920 1615072 5700064 -1615456 5698128 1615968 5699848 1615456 5698048 1614856 5699920 -1615456 5698048 1614728 5699896 1614856 5699920 1615456 5698128 -1615456 5698048 1613856 5699232 1614728 5699896 1615456 5698128 -1615456 5698048 1613808 5699080 1613856 5699232 1615456 5698128 -1613856 5699232 1614728 5699896 1615456 5698128 1613808 5699080 -1614856 5699920 1615392 5700008 1615456 5698128 1614728 5699896 -1615456 5698048 1613808 5699080 1615456 5698128 1615968 5699848 -1614728 5699896 1614856 5699920 1615456 5698128 1613856 5699232 -1615392 5700008 1615968 5699848 1615456 5698128 1614856 5699920 -1615968 5699848 1615456 5698128 1615392 5700008 1615600 5700000 -1613856 5699232 1614600 5699912 1614728 5699896 1615456 5698128 -1615456 5698048 1613704 5698312 1613808 5699080 1615456 5698128 -1613808 5699080 1613856 5699232 1615456 5698128 1613704 5698312 -1615456 5698048 1613704 5698312 1615456 5698128 1615968 5699848 -1613704 5698312 1613728 5698992 1613808 5699080 1615456 5698128 -1615456 5698048 1613736 5698080 1613704 5698312 1615456 5698128 -1615456 5698048 1613736 5698080 1615456 5698128 1615968 5699848 -1615456 5698048 1613728 5697776 1613736 5698080 1615456 5698128 -1613704 5698312 1613808 5699080 1615456 5698128 1613736 5698080 -1615456 5698048 1615456 5698128 1615968 5699848 1615528 5697784 -1615968 5699848 1615648 5697056 1615528 5697784 1615456 5698128 -1615456 5698048 1613736 5698080 1615456 5698128 1615528 5697784 -1615456 5698128 1615392 5700008 1615968 5699848 1615528 5697784 -1615528 5697784 1615560 5698200 1615968 5699848 1615648 5697056 -1615968 5699848 1621576 5701360 1615648 5697056 1615560 5698200 -1615968 5699848 1621488 5701424 1621576 5701360 1615560 5698200 -1621576 5701360 1615696 5696632 1615648 5697056 1615560 5698200 -1615648 5697056 1615528 5697784 1615560 5698200 1621576 5701360 -1615968 5699848 1615560 5698200 1615456 5698128 1615392 5700008 -1615560 5698200 1615528 5697784 1615456 5698128 1615392 5700008 -1615456 5698128 1614856 5699920 1615392 5700008 1615560 5698200 -1614856 5699920 1615072 5700064 1615392 5700008 1615560 5698200 -1615456 5698128 1614728 5699896 1614856 5699920 1615560 5698200 -1615456 5698128 1613856 5699232 1614728 5699896 1615560 5698200 -1615392 5700008 1615968 5699848 1615560 5698200 1614856 5699920 -1615456 5698128 1614728 5699896 1615560 5698200 1615528 5697784 -1614856 5699920 1615392 5700008 1615560 5698200 1614728 5699896 -1615528 5697784 1615456 5698128 1615560 5698200 1615648 5697056 -1615560 5698200 1615392 5700008 1615968 5699848 1621576 5701360 -1615968 5699848 1615560 5698200 1615392 5700008 1615600 5700000 -1615456 5698128 1615560 5698200 1615528 5697784 1615456 5698048 -1615456 5698128 1614728 5699896 1615560 5698200 1615456 5698048 -1615560 5698200 1615648 5697056 1615528 5697784 1615456 5698048 -1615648 5697056 1615648 5698224 1621576 5701360 1615696 5696632 -1621576 5701360 1615648 5698224 1615560 5698200 1615968 5699848 -1621576 5701360 1615648 5698224 1615968 5699848 1621488 5701424 -1615560 5698200 1615648 5698224 1615648 5697056 1615528 5697784 -1615560 5698200 1615648 5698224 1615528 5697784 1615456 5698048 -1615648 5698224 1615648 5697056 1615528 5697784 1615456 5698048 -1615648 5698224 1615456 5698048 1615560 5698200 1615968 5699848 -1615560 5698200 1615392 5700008 1615968 5699848 1615648 5698224 -1615968 5699848 1621576 5701360 1615648 5698224 1615392 5700008 -1615560 5698200 1614856 5699920 1615392 5700008 1615648 5698224 -1615560 5698200 1615392 5700008 1615648 5698224 1615456 5698048 -1615648 5698224 1621576 5701360 1615648 5697056 1615528 5697784 -1621576 5701360 1615648 5697056 1615648 5698224 1615968 5699848 -1615392 5700008 1615600 5700000 1615968 5699848 1615648 5698224 -1615560 5698200 1615648 5698224 1615456 5698048 1615456 5698128 -1621576 5701360 1615720 5698296 1615968 5699848 1621488 5701424 -1615968 5699848 1621464 5701464 1621488 5701424 1615720 5698296 -1615968 5699848 1615720 5698296 1615648 5698224 1615392 5700008 -1615648 5698224 1615560 5698200 1615392 5700008 1615720 5698296 -1615392 5700008 1615968 5699848 1615720 5698296 1615560 5698200 -1615560 5698200 1614856 5699920 1615392 5700008 1615720 5698296 -1614856 5699920 1615072 5700064 1615392 5700008 1615720 5698296 -1615392 5700008 1615968 5699848 1615720 5698296 1614856 5699920 -1615560 5698200 1614728 5699896 1614856 5699920 1615720 5698296 -1615560 5698200 1614856 5699920 1615720 5698296 1615648 5698224 -1615720 5698296 1621576 5701360 1615648 5698224 1615560 5698200 -1615648 5698224 1615720 5698296 1621576 5701360 1615648 5697056 -1621576 5701360 1615696 5696632 1615648 5697056 1615720 5698296 -1615648 5698224 1615720 5698296 1615648 5697056 1615528 5697784 -1615648 5698224 1615720 5698296 1615528 5697784 1615456 5698048 -1615648 5698224 1615560 5698200 1615720 5698296 1615528 5697784 -1615720 5698296 1621576 5701360 1615648 5697056 1615528 5697784 -1621576 5701360 1615648 5697056 1615720 5698296 1621488 5701424 -1615720 5698296 1615392 5700008 1615968 5699848 1621488 5701424 -1615968 5699848 1615720 5698296 1615392 5700008 1615600 5700000 -1615720 5698296 1615792 5698416 1621488 5701424 1621576 5701360 -1621488 5701424 1615792 5698416 1615968 5699848 1621464 5701464 -1615720 5698296 1615792 5698416 1621576 5701360 1615648 5697056 -1615792 5698416 1621488 5701424 1621576 5701360 1615648 5697056 -1621576 5701360 1615696 5696632 1615648 5697056 1615792 5698416 -1621576 5701360 1615696 5696632 1615792 5698416 1621488 5701424 -1621576 5701360 1615680 5696424 1615696 5696632 1615792 5698416 -1615720 5698296 1615792 5698416 1615648 5697056 1615528 5697784 -1615648 5697056 1615720 5698296 1615792 5698416 1615696 5696632 -1615720 5698296 1615968 5699848 1615792 5698416 1615648 5697056 -1615968 5699848 1615792 5698416 1615720 5698296 1615392 5700008 -1615720 5698296 1614856 5699920 1615392 5700008 1615792 5698416 -1614856 5699920 1615072 5700064 1615392 5700008 1615792 5698416 -1615720 5698296 1615560 5698200 1614856 5699920 1615792 5698416 -1614856 5699920 1615392 5700008 1615792 5698416 1615560 5698200 -1615560 5698200 1614728 5699896 1614856 5699920 1615792 5698416 -1615720 5698296 1615648 5698224 1615560 5698200 1615792 5698416 -1615792 5698416 1615648 5697056 1615720 5698296 1615560 5698200 -1615392 5700008 1615968 5699848 1615792 5698416 1614856 5699920 -1615792 5698416 1615968 5699848 1621488 5701424 1621576 5701360 -1615968 5699848 1621488 5701424 1615792 5698416 1615392 5700008 -1615968 5699848 1615792 5698416 1615392 5700008 1615600 5700000 -1615968 5699848 1615792 5698416 1615600 5700000 1615776 5699960 -1615792 5698416 1614856 5699920 1615392 5700008 1615600 5700000 -1615968 5699848 1621488 5701424 1615792 5698416 1615600 5700000 -1621488 5701424 1615848 5698584 1615968 5699848 1621464 5701464 -1615792 5698416 1615848 5698584 1621488 5701424 1621576 5701360 -1615792 5698416 1615848 5698584 1621576 5701360 1615696 5696632 -1621576 5701360 1615680 5696424 1615696 5696632 1615848 5698584 -1615792 5698416 1615848 5698584 1615696 5696632 1615648 5697056 -1615848 5698584 1621576 5701360 1615696 5696632 1615648 5697056 -1615792 5698416 1615848 5698584 1615648 5697056 1615720 5698296 -1615848 5698584 1621488 5701424 1621576 5701360 1615696 5696632 -1615792 5698416 1615968 5699848 1615848 5698584 1615648 5697056 -1615968 5699848 1615848 5698584 1615792 5698416 1615600 5700000 -1615968 5699848 1615848 5698584 1615600 5700000 1615776 5699960 -1615848 5698584 1615648 5697056 1615792 5698416 1615600 5700000 -1615848 5698584 1615968 5699848 1621488 5701424 1621576 5701360 -1615968 5699848 1621488 5701424 1615848 5698584 1615600 5700000 -1615792 5698416 1615392 5700008 1615600 5700000 1615848 5698584 -1615792 5698416 1614856 5699920 1615392 5700008 1615848 5698584 -1614856 5699920 1615072 5700064 1615392 5700008 1615848 5698584 -1615792 5698416 1615560 5698200 1614856 5699920 1615848 5698584 -1615792 5698416 1615720 5698296 1615560 5698200 1615848 5698584 -1615560 5698200 1614728 5699896 1614856 5699920 1615848 5698584 -1615560 5698200 1614728 5699896 1615848 5698584 1615792 5698416 -1615560 5698200 1615456 5698128 1614728 5699896 1615848 5698584 -1615560 5698200 1615456 5698128 1615848 5698584 1615792 5698416 -1615456 5698128 1613856 5699232 1614728 5699896 1615848 5698584 -1614728 5699896 1614856 5699920 1615848 5698584 1615456 5698128 -1614856 5699920 1615392 5700008 1615848 5698584 1614728 5699896 -1615792 5698416 1615560 5698200 1615848 5698584 1615648 5697056 -1615600 5700000 1615968 5699848 1615848 5698584 1615392 5700008 -1615392 5700008 1615600 5700000 1615848 5698584 1614856 5699920 -1621488 5701424 1615920 5698664 1615968 5699848 1621464 5701464 -1615848 5698584 1615920 5698664 1621488 5701424 1621576 5701360 -1615848 5698584 1615920 5698664 1621576 5701360 1615696 5696632 -1615848 5698584 1615920 5698664 1615696 5696632 1615648 5697056 -1621576 5701360 1615680 5696424 1615696 5696632 1615920 5698664 -1615848 5698584 1615920 5698664 1615648 5697056 1615792 5698416 -1615920 5698664 1615696 5696632 1615648 5697056 1615792 5698416 -1615648 5697056 1615720 5698296 1615792 5698416 1615920 5698664 -1615920 5698664 1621576 5701360 1615696 5696632 1615648 5697056 -1615920 5698664 1621488 5701424 1621576 5701360 1615696 5696632 -1615848 5698584 1615968 5699848 1615920 5698664 1615792 5698416 -1615968 5699848 1615920 5698664 1615848 5698584 1615600 5700000 -1615968 5699848 1615920 5698664 1615600 5700000 1615776 5699960 -1615848 5698584 1615392 5700008 1615600 5700000 1615920 5698664 -1615920 5698664 1615792 5698416 1615848 5698584 1615392 5700008 -1615600 5700000 1615968 5699848 1615920 5698664 1615392 5700008 -1615920 5698664 1615968 5699848 1621488 5701424 1621576 5701360 -1615968 5699848 1621488 5701424 1615920 5698664 1615600 5700000 -1615848 5698584 1614856 5699920 1615392 5700008 1615920 5698664 -1621488 5701424 1615976 5698704 1615968 5699848 1621464 5701464 -1615920 5698664 1615976 5698704 1621488 5701424 1621576 5701360 -1615920 5698664 1615976 5698704 1621576 5701360 1615696 5696632 -1621576 5701360 1615680 5696424 1615696 5696632 1615976 5698704 -1615920 5698664 1615976 5698704 1615696 5696632 1615648 5697056 -1615920 5698664 1615976 5698704 1615648 5697056 1615792 5698416 -1615920 5698664 1615976 5698704 1615792 5698416 1615848 5698584 -1615648 5697056 1615720 5698296 1615792 5698416 1615976 5698704 -1615976 5698704 1615696 5696632 1615648 5697056 1615792 5698416 -1615976 5698704 1621576 5701360 1615696 5696632 1615648 5697056 -1615976 5698704 1621488 5701424 1621576 5701360 1615696 5696632 -1615920 5698664 1615968 5699848 1615976 5698704 1615792 5698416 -1615968 5699848 1615976 5698704 1615920 5698664 1615600 5700000 -1615976 5698704 1615968 5699848 1621488 5701424 1621576 5701360 -1615696 5696632 1616160 5698656 1621576 5701360 1615680 5696424 -1615976 5698704 1616160 5698656 1615696 5696632 1615648 5697056 -1615976 5698704 1616160 5698656 1615648 5697056 1615792 5698416 -1615976 5698704 1616160 5698656 1615792 5698416 1615920 5698664 -1615792 5698416 1615848 5698584 1615920 5698664 1616160 5698656 -1615920 5698664 1615976 5698704 1616160 5698656 1615848 5698584 -1615648 5697056 1615720 5698296 1615792 5698416 1616160 5698656 -1615648 5697056 1615528 5697784 1615720 5698296 1616160 5698656 -1615528 5697784 1615648 5698224 1615720 5698296 1616160 5698656 -1615720 5698296 1615792 5698416 1616160 5698656 1615528 5697784 -1616160 5698656 1615720 5698296 1615792 5698416 1615848 5698584 -1616160 5698656 1615696 5696632 1615648 5697056 1615528 5697784 -1621576 5701360 1616160 5698656 1615976 5698704 1621488 5701424 -1615976 5698704 1615968 5699848 1621488 5701424 1616160 5698656 -1615968 5699848 1621464 5701464 1621488 5701424 1616160 5698656 -1621488 5701424 1621576 5701360 1616160 5698656 1615968 5699848 -1615976 5698704 1615968 5699848 1616160 5698656 1615920 5698664 -1615976 5698704 1615920 5698664 1615968 5699848 1616160 5698656 -1616160 5698656 1621576 5701360 1615696 5696632 1615648 5697056 -1621576 5701360 1615696 5696632 1616160 5698656 1621488 5701424 -1615696 5696632 1616304 5698552 1621576 5701360 1615680 5696424 -1621576 5701360 1621712 5701344 1615680 5696424 1616304 5698552 -1621712 5701344 1615632 5696264 1615680 5696424 1616304 5698552 -1615680 5696424 1615696 5696632 1616304 5698552 1621712 5701344 -1616160 5698656 1616304 5698552 1615696 5696632 1615648 5697056 -1616160 5698656 1616304 5698552 1615648 5697056 1615528 5697784 -1616160 5698656 1616304 5698552 1615528 5697784 1615720 5698296 -1615528 5697784 1615648 5698224 1615720 5698296 1616304 5698552 -1616160 5698656 1616304 5698552 1615720 5698296 1615792 5698416 -1616304 5698552 1615528 5697784 1615720 5698296 1615792 5698416 -1616160 5698656 1616304 5698552 1615792 5698416 1615848 5698584 -1616304 5698552 1615648 5697056 1615528 5697784 1615720 5698296 -1616304 5698552 1615696 5696632 1615648 5697056 1615528 5697784 -1616160 5698656 1621576 5701360 1616304 5698552 1615792 5698416 -1621576 5701360 1616304 5698552 1616160 5698656 1621488 5701424 -1616160 5698656 1615968 5699848 1621488 5701424 1616304 5698552 -1615968 5699848 1621464 5701464 1621488 5701424 1616304 5698552 -1615968 5699848 1621448 5701528 1621464 5701464 1616304 5698552 -1615968 5699848 1621464 5701464 1616304 5698552 1616160 5698656 -1616160 5698656 1615976 5698704 1615968 5699848 1616304 5698552 -1616304 5698552 1615792 5698416 1616160 5698656 1615968 5699848 -1621488 5701424 1621576 5701360 1616304 5698552 1621464 5701464 -1615696 5696632 1615648 5697056 1616304 5698552 1615680 5696424 -1616304 5698552 1621488 5701424 1621576 5701360 1621712 5701344 -1615680 5696424 1616392 5698520 1621712 5701344 1615632 5696264 -1621712 5701344 1616392 5698520 1616304 5698552 1621576 5701360 -1616304 5698552 1616392 5698520 1615680 5696424 1615696 5696632 -1616304 5698552 1616392 5698520 1615696 5696632 1615648 5697056 -1616392 5698520 1615680 5696424 1615696 5696632 1615648 5697056 -1616304 5698552 1616392 5698520 1615648 5697056 1615528 5697784 -1616304 5698552 1616392 5698520 1615528 5697784 1615720 5698296 -1615528 5697784 1615648 5698224 1615720 5698296 1616392 5698520 -1616304 5698552 1616392 5698520 1615720 5698296 1615792 5698416 -1616392 5698520 1615648 5697056 1615528 5697784 1615720 5698296 -1616392 5698520 1615696 5696632 1615648 5697056 1615528 5697784 -1616392 5698520 1615720 5698296 1616304 5698552 1621576 5701360 -1616304 5698552 1621488 5701424 1621576 5701360 1616392 5698520 -1621576 5701360 1621712 5701344 1616392 5698520 1621488 5701424 -1616304 5698552 1621464 5701464 1621488 5701424 1616392 5698520 -1616304 5698552 1615968 5699848 1621464 5701464 1616392 5698520 -1615968 5699848 1621448 5701528 1621464 5701464 1616392 5698520 -1616304 5698552 1616160 5698656 1615968 5699848 1616392 5698520 -1615968 5699848 1621464 5701464 1616392 5698520 1616160 5698656 -1616160 5698656 1615976 5698704 1615968 5699848 1616392 5698520 -1621464 5701464 1621488 5701424 1616392 5698520 1615968 5699848 -1616304 5698552 1616160 5698656 1616392 5698520 1615720 5698296 -1621488 5701424 1621576 5701360 1616392 5698520 1621464 5701464 -1616392 5698520 1621712 5701344 1615680 5696424 1615696 5696632 -1621712 5701344 1615680 5696424 1616392 5698520 1621576 5701360 -1615680 5696424 1616456 5698536 1621712 5701344 1615632 5696264 -1616392 5698520 1616456 5698536 1615680 5696424 1615696 5696632 -1616392 5698520 1616456 5698536 1615696 5696632 1615648 5697056 -1616392 5698520 1616456 5698536 1615648 5697056 1615528 5697784 -1616456 5698536 1615680 5696424 1615696 5696632 1615648 5697056 -1616392 5698520 1621712 5701344 1616456 5698536 1615648 5697056 -1621712 5701344 1616456 5698536 1616392 5698520 1621576 5701360 -1616392 5698520 1621488 5701424 1621576 5701360 1616456 5698536 -1616392 5698520 1621464 5701464 1621488 5701424 1616456 5698536 -1621488 5701424 1621576 5701360 1616456 5698536 1621464 5701464 -1616392 5698520 1615968 5699848 1621464 5701464 1616456 5698536 -1615968 5699848 1621448 5701528 1621464 5701464 1616456 5698536 -1616392 5698520 1616160 5698656 1615968 5699848 1616456 5698536 -1616392 5698520 1616304 5698552 1616160 5698656 1616456 5698536 -1616160 5698656 1615968 5699848 1616456 5698536 1616304 5698552 -1616160 5698656 1615976 5698704 1615968 5699848 1616456 5698536 -1615968 5699848 1621464 5701464 1616456 5698536 1616160 5698656 -1621464 5701464 1621488 5701424 1616456 5698536 1615968 5699848 -1616456 5698536 1615648 5697056 1616392 5698520 1616304 5698552 -1621576 5701360 1621712 5701344 1616456 5698536 1621488 5701424 -1616456 5698536 1621712 5701344 1615680 5696424 1615696 5696632 -1621712 5701344 1615680 5696424 1616456 5698536 1621576 5701360 -1621488 5701424 1616528 5698576 1616456 5698536 1621464 5701464 -1616456 5698536 1615968 5699848 1621464 5701464 1616528 5698576 -1615968 5699848 1621448 5701528 1621464 5701464 1616528 5698576 -1621464 5701464 1621488 5701424 1616528 5698576 1615968 5699848 -1616456 5698536 1616160 5698656 1615968 5699848 1616528 5698576 -1616456 5698536 1616304 5698552 1616160 5698656 1616528 5698576 -1616456 5698536 1616392 5698520 1616304 5698552 1616528 5698576 -1616160 5698656 1615976 5698704 1615968 5699848 1616528 5698576 -1616160 5698656 1615968 5699848 1616528 5698576 1616304 5698552 -1615968 5699848 1621464 5701464 1616528 5698576 1616160 5698656 -1616456 5698536 1616528 5698576 1621576 5701360 1621712 5701344 -1616528 5698576 1621712 5701344 1616456 5698536 1616304 5698552 -1616456 5698536 1616528 5698576 1621712 5701344 1615680 5696424 -1621712 5701344 1615632 5696264 1615680 5696424 1616528 5698576 -1616528 5698576 1621576 5701360 1621712 5701344 1615680 5696424 -1616456 5698536 1616528 5698576 1615680 5696424 1615696 5696632 -1616456 5698536 1616528 5698576 1615696 5696632 1615648 5697056 -1616456 5698536 1616528 5698576 1615648 5697056 1616392 5698520 -1616528 5698576 1615680 5696424 1615696 5696632 1615648 5697056 -1616456 5698536 1616304 5698552 1616528 5698576 1615648 5697056 -1616528 5698576 1621712 5701344 1615680 5696424 1615696 5696632 -1616528 5698576 1621488 5701424 1621576 5701360 1621712 5701344 -1621488 5701424 1621576 5701360 1616528 5698576 1621464 5701464 -1621464 5701464 1616560 5698616 1615968 5699848 1621448 5701528 -1616528 5698576 1616560 5698616 1621464 5701464 1621488 5701424 -1615968 5699848 1616560 5698616 1616528 5698576 1616160 5698656 -1615968 5699848 1616560 5698616 1616160 5698656 1615976 5698704 -1616528 5698576 1616304 5698552 1616160 5698656 1616560 5698616 -1616528 5698576 1616456 5698536 1616304 5698552 1616560 5698616 -1616456 5698536 1616392 5698520 1616304 5698552 1616560 5698616 -1616304 5698552 1616160 5698656 1616560 5698616 1616456 5698536 -1616160 5698656 1615968 5699848 1616560 5698616 1616304 5698552 -1616528 5698576 1616456 5698536 1616560 5698616 1621488 5701424 -1616528 5698576 1616560 5698616 1621488 5701424 1621576 5701360 -1616560 5698616 1621464 5701464 1621488 5701424 1621576 5701360 -1616528 5698576 1616560 5698616 1621576 5701360 1621712 5701344 -1616528 5698576 1616560 5698616 1621712 5701344 1615680 5696424 -1621712 5701344 1615632 5696264 1615680 5696424 1616560 5698616 -1616528 5698576 1616560 5698616 1615680 5696424 1615696 5696632 -1616560 5698616 1621576 5701360 1621712 5701344 1615680 5696424 -1616528 5698576 1616456 5698536 1616560 5698616 1615680 5696424 -1616560 5698616 1621488 5701424 1621576 5701360 1621712 5701344 -1616560 5698616 1615968 5699848 1621464 5701464 1621488 5701424 -1615968 5699848 1621464 5701464 1616560 5698616 1616160 5698656 -1615680 5696424 1616592 5698624 1621712 5701344 1615632 5696264 -1616560 5698616 1616592 5698624 1615680 5696424 1616528 5698576 -1615680 5696424 1615696 5696632 1616528 5698576 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1615696 5696632 -1615696 5696632 1615648 5697056 1616528 5698576 1616592 5698624 -1621712 5701344 1616592 5698624 1616560 5698616 1621576 5701360 -1616560 5698616 1621488 5701424 1621576 5701360 1616592 5698624 -1616560 5698616 1621464 5701464 1621488 5701424 1616592 5698624 -1621576 5701360 1621712 5701344 1616592 5698624 1621488 5701424 -1621488 5701424 1621576 5701360 1616592 5698624 1621464 5701464 -1616560 5698616 1615968 5699848 1621464 5701464 1616592 5698624 -1615968 5699848 1621448 5701528 1621464 5701464 1616592 5698624 -1621464 5701464 1621488 5701424 1616592 5698624 1615968 5699848 -1616560 5698616 1615968 5699848 1616592 5698624 1616528 5698576 -1616560 5698616 1616160 5698656 1615968 5699848 1616592 5698624 -1616160 5698656 1615976 5698704 1615968 5699848 1616592 5698624 -1616560 5698616 1616304 5698552 1616160 5698656 1616592 5698624 -1615968 5699848 1621464 5701464 1616592 5698624 1616160 5698656 -1616560 5698616 1616160 5698656 1616592 5698624 1616528 5698576 -1616592 5698624 1621712 5701344 1615680 5696424 1615696 5696632 -1621712 5701344 1615680 5696424 1616592 5698624 1621576 5701360 -1621464 5701464 1616624 5698656 1615968 5699848 1621448 5701528 -1616592 5698624 1616624 5698656 1621464 5701464 1621488 5701424 -1616592 5698624 1616624 5698656 1621488 5701424 1621576 5701360 -1616624 5698656 1621464 5701464 1621488 5701424 1621576 5701360 -1616592 5698624 1616624 5698656 1621576 5701360 1621712 5701344 -1616624 5698656 1621488 5701424 1621576 5701360 1621712 5701344 -1615968 5699848 1616624 5698656 1616592 5698624 1616160 5698656 -1615968 5699848 1616624 5698656 1616160 5698656 1615976 5698704 -1616592 5698624 1616560 5698616 1616160 5698656 1616624 5698656 -1616560 5698616 1616304 5698552 1616160 5698656 1616624 5698656 -1616160 5698656 1615968 5699848 1616624 5698656 1616560 5698616 -1616592 5698624 1616560 5698616 1616624 5698656 1621712 5701344 -1616592 5698624 1616624 5698656 1621712 5701344 1615680 5696424 -1621712 5701344 1615632 5696264 1615680 5696424 1616624 5698656 -1616624 5698656 1621576 5701360 1621712 5701344 1615680 5696424 -1616592 5698624 1616624 5698656 1615680 5696424 1615696 5696632 -1616592 5698624 1616624 5698656 1615696 5696632 1616528 5698576 -1616592 5698624 1616560 5698616 1616624 5698656 1615696 5696632 -1616624 5698656 1621712 5701344 1615680 5696424 1615696 5696632 -1616624 5698656 1615968 5699848 1621464 5701464 1621488 5701424 -1615968 5699848 1621464 5701464 1616624 5698656 1616160 5698656 -1621464 5701464 1616616 5698720 1615968 5699848 1621448 5701528 -1616624 5698656 1616616 5698720 1621464 5701464 1621488 5701424 -1616624 5698656 1616616 5698720 1621488 5701424 1621576 5701360 -1616624 5698656 1615968 5699848 1616616 5698720 1621488 5701424 -1615968 5699848 1616616 5698720 1616624 5698656 1616160 5698656 -1615968 5699848 1616616 5698720 1616160 5698656 1615976 5698704 -1616624 5698656 1616560 5698616 1616160 5698656 1616616 5698720 -1616560 5698616 1616304 5698552 1616160 5698656 1616616 5698720 -1616560 5698616 1616456 5698536 1616304 5698552 1616616 5698720 -1616560 5698616 1616304 5698552 1616616 5698720 1616624 5698656 -1616624 5698656 1616592 5698624 1616560 5698616 1616616 5698720 -1616560 5698616 1616304 5698552 1616616 5698720 1616592 5698624 -1616616 5698720 1621488 5701424 1616624 5698656 1616592 5698624 -1616160 5698656 1615968 5699848 1616616 5698720 1616304 5698552 -1616616 5698720 1615968 5699848 1621464 5701464 1621488 5701424 -1615968 5699848 1621464 5701464 1616616 5698720 1616160 5698656 -1621464 5701464 1616624 5698800 1615968 5699848 1621448 5701528 -1616616 5698720 1616624 5698800 1621464 5701464 1621488 5701424 -1616616 5698720 1616624 5698800 1621488 5701424 1616624 5698656 -1621488 5701424 1621576 5701360 1616624 5698656 1616624 5698800 -1621576 5701360 1621712 5701344 1616624 5698656 1616624 5698800 -1616624 5698656 1616616 5698720 1616624 5698800 1621576 5701360 -1616624 5698800 1621464 5701464 1621488 5701424 1621576 5701360 -1616616 5698720 1615968 5699848 1616624 5698800 1616624 5698656 -1615968 5699848 1616624 5698800 1616616 5698720 1616160 5698656 -1615968 5699848 1616624 5698800 1616160 5698656 1615976 5698704 -1615968 5699848 1616624 5698800 1615976 5698704 1615920 5698664 -1616616 5698720 1616304 5698552 1616160 5698656 1616624 5698800 -1616616 5698720 1616560 5698616 1616304 5698552 1616624 5698800 -1616624 5698800 1616624 5698656 1616616 5698720 1616304 5698552 -1616624 5698800 1616304 5698552 1616160 5698656 1615976 5698704 -1621464 5701464 1621488 5701424 1616624 5698800 1621448 5701528 -1616624 5698800 1615976 5698704 1615968 5699848 1621448 5701528 -1615968 5699848 1621664 5703552 1621448 5701528 1616624 5698800 -1616624 5698800 1616600 5698864 1621448 5701528 1621464 5701464 -1616624 5698800 1616600 5698864 1621464 5701464 1621488 5701424 -1616600 5698864 1621448 5701528 1621464 5701464 1621488 5701424 -1616624 5698800 1616600 5698864 1621488 5701424 1621576 5701360 -1616624 5698800 1615968 5699848 1616600 5698864 1621488 5701424 -1615968 5699848 1616600 5698864 1616624 5698800 1615976 5698704 -1616624 5698800 1616160 5698656 1615976 5698704 1616600 5698864 -1615968 5699848 1616600 5698864 1615976 5698704 1615920 5698664 -1616624 5698800 1616304 5698552 1616160 5698656 1616600 5698864 -1616160 5698656 1615976 5698704 1616600 5698864 1616304 5698552 -1616624 5698800 1616616 5698720 1616304 5698552 1616600 5698864 -1616616 5698720 1616560 5698616 1616304 5698552 1616600 5698864 -1616560 5698616 1616456 5698536 1616304 5698552 1616600 5698864 -1616616 5698720 1616592 5698624 1616560 5698616 1616600 5698864 -1616616 5698720 1616560 5698616 1616600 5698864 1616624 5698800 -1616304 5698552 1616160 5698656 1616600 5698864 1616560 5698616 -1616600 5698864 1621488 5701424 1616624 5698800 1616616 5698720 -1615976 5698704 1615968 5699848 1616600 5698864 1616160 5698656 -1616600 5698864 1615968 5699848 1621448 5701528 1621464 5701464 -1615968 5699848 1621448 5701528 1616600 5698864 1615976 5698704 -1621448 5701528 1616600 5698864 1615968 5699848 1621664 5703552 -1615968 5699848 1616440 5698960 1615976 5698704 1615920 5698664 -1615976 5698704 1616440 5698960 1616600 5698864 1616160 5698656 -1616600 5698864 1616304 5698552 1616160 5698656 1616440 5698960 -1616600 5698864 1616560 5698616 1616304 5698552 1616440 5698960 -1616304 5698552 1616160 5698656 1616440 5698960 1616560 5698616 -1616560 5698616 1616456 5698536 1616304 5698552 1616440 5698960 -1616600 5698864 1616616 5698720 1616560 5698616 1616440 5698960 -1616616 5698720 1616592 5698624 1616560 5698616 1616440 5698960 -1616600 5698864 1616624 5698800 1616616 5698720 1616440 5698960 -1616560 5698616 1616304 5698552 1616440 5698960 1616616 5698720 -1616160 5698656 1615976 5698704 1616440 5698960 1616304 5698552 -1616440 5698960 1615968 5699848 1616600 5698864 1616616 5698720 -1616600 5698864 1616440 5698960 1615968 5699848 1621448 5701528 -1615976 5698704 1615968 5699848 1616440 5698960 1616160 5698656 -1615968 5699848 1616208 5699040 1615976 5698704 1615920 5698664 -1615968 5699848 1616208 5699040 1615920 5698664 1615600 5700000 -1615968 5699848 1616208 5699040 1615600 5700000 1615776 5699960 -1615920 5698664 1615392 5700008 1615600 5700000 1616208 5699040 -1616208 5699040 1615976 5698704 1615920 5698664 1615600 5700000 -1616440 5698960 1616208 5699040 1615968 5699848 1616600 5698864 -1615976 5698704 1616208 5699040 1616440 5698960 1616160 5698656 -1616440 5698960 1616304 5698552 1616160 5698656 1616208 5699040 -1616208 5699040 1615968 5699848 1616440 5698960 1616160 5698656 -1615968 5699848 1616440 5698960 1616208 5699040 1615600 5700000 -1616208 5699040 1616160 5698656 1615976 5698704 1615920 5698664 -1615600 5700000 1616128 5699088 1615920 5698664 1615392 5700008 -1615920 5698664 1615848 5698584 1615392 5700008 1616128 5699088 -1616208 5699040 1616128 5699088 1615600 5700000 1615968 5699848 -1615600 5700000 1615776 5699960 1615968 5699848 1616128 5699088 -1615968 5699848 1616208 5699040 1616128 5699088 1615776 5699960 -1615920 5698664 1616128 5699088 1616208 5699040 1615976 5698704 -1616208 5699040 1616128 5699088 1615968 5699848 1616440 5698960 -1616208 5699040 1615976 5698704 1616128 5699088 1615968 5699848 -1616208 5699040 1616160 5698656 1615976 5698704 1616128 5699088 -1615600 5700000 1615776 5699960 1616128 5699088 1615392 5700008 -1616128 5699088 1615976 5698704 1615920 5698664 1615392 5700008 -1615392 5700008 1616104 5699088 1615920 5698664 1615848 5698584 -1616128 5699088 1616104 5699088 1615392 5700008 1615600 5700000 -1616128 5699088 1616104 5699088 1615600 5700000 1615776 5699960 -1616128 5699088 1616104 5699088 1615776 5699960 1615968 5699848 -1616104 5699088 1615392 5700008 1615600 5700000 1615776 5699960 -1616128 5699088 1616104 5699088 1615968 5699848 1616208 5699040 -1616104 5699088 1615600 5700000 1615776 5699960 1615968 5699848 -1615920 5698664 1616104 5699088 1616128 5699088 1615976 5698704 -1616128 5699088 1616208 5699040 1615976 5698704 1616104 5699088 -1616208 5699040 1616160 5698656 1615976 5698704 1616104 5699088 -1615976 5698704 1615920 5698664 1616104 5699088 1616208 5699040 -1616128 5699088 1616208 5699040 1616104 5699088 1615968 5699848 -1616104 5699088 1615920 5698664 1615392 5700008 1615600 5700000 -1615920 5698664 1615392 5700008 1616104 5699088 1615976 5698704 -1616104 5699088 1616088 5699168 1615968 5699848 1616128 5699088 -1615968 5699848 1616208 5699040 1616128 5699088 1616088 5699168 -1616128 5699088 1616104 5699088 1616088 5699168 1616208 5699040 -1615968 5699848 1616440 5698960 1616208 5699040 1616088 5699168 -1616208 5699040 1616128 5699088 1616088 5699168 1616440 5698960 -1615968 5699848 1616600 5698864 1616440 5698960 1616088 5699168 -1615776 5699960 1616088 5699168 1616104 5699088 1615600 5700000 -1616104 5699088 1615392 5700008 1615600 5700000 1616088 5699168 -1615600 5700000 1615776 5699960 1616088 5699168 1615392 5700008 -1616104 5699088 1615920 5698664 1615392 5700008 1616088 5699168 -1615920 5698664 1615848 5698584 1615392 5700008 1616088 5699168 -1615392 5700008 1615600 5700000 1616088 5699168 1615848 5698584 -1615920 5698664 1615848 5698584 1616088 5699168 1616104 5699088 -1616104 5699088 1615920 5698664 1616088 5699168 1616128 5699088 -1616104 5699088 1615976 5698704 1615920 5698664 1616088 5699168 -1616088 5699168 1615776 5699960 1615968 5699848 1616440 5698960 -1615776 5699960 1615968 5699848 1616088 5699168 1615600 5700000 -1615848 5698584 1614856 5699920 1615392 5700008 1616088 5699168 -1614856 5699920 1615072 5700064 1615392 5700008 1616088 5699168 -1615848 5698584 1614728 5699896 1614856 5699920 1616088 5699168 -1615848 5698584 1614856 5699920 1616088 5699168 1615920 5698664 -1615392 5700008 1615600 5700000 1616088 5699168 1614856 5699920 -1614856 5699920 1616016 5699184 1615848 5698584 1614728 5699896 -1615848 5698584 1616016 5699184 1616088 5699168 1615920 5698664 -1616088 5699168 1616104 5699088 1615920 5698664 1616016 5699184 -1615920 5698664 1615848 5698584 1616016 5699184 1616104 5699088 -1616104 5699088 1615976 5698704 1615920 5698664 1616016 5699184 -1615920 5698664 1615848 5698584 1616016 5699184 1615976 5698704 -1616104 5699088 1616208 5699040 1615976 5698704 1616016 5699184 -1616104 5699088 1615976 5698704 1616016 5699184 1616088 5699168 -1616016 5699184 1614856 5699920 1616088 5699168 1616104 5699088 -1615848 5698584 1614856 5699920 1616016 5699184 1615920 5698664 -1616088 5699168 1616016 5699184 1614856 5699920 1615392 5700008 -1614856 5699920 1615072 5700064 1615392 5700008 1616016 5699184 -1616088 5699168 1616016 5699184 1615392 5700008 1615600 5700000 -1616088 5699168 1616016 5699184 1615600 5700000 1615776 5699960 -1616016 5699184 1615392 5700008 1615600 5700000 1615776 5699960 -1616088 5699168 1616104 5699088 1616016 5699184 1615776 5699960 -1616088 5699168 1616016 5699184 1615776 5699960 1615968 5699848 -1616016 5699184 1615600 5700000 1615776 5699960 1615968 5699848 -1616088 5699168 1616016 5699184 1615968 5699848 1616440 5698960 -1616088 5699168 1616104 5699088 1616016 5699184 1615968 5699848 -1616016 5699184 1615848 5698584 1614856 5699920 1615392 5700008 -1616016 5699184 1614856 5699920 1615392 5700008 1615600 5700000 -1616088 5699168 1616072 5699200 1615968 5699848 1616440 5698960 -1615968 5699848 1616600 5698864 1616440 5698960 1616072 5699200 -1616088 5699168 1616072 5699200 1616440 5698960 1616208 5699040 -1616088 5699168 1616072 5699200 1616208 5699040 1616128 5699088 -1616072 5699200 1615968 5699848 1616440 5698960 1616208 5699040 -1615968 5699848 1616072 5699200 1616016 5699184 1615776 5699960 -1616088 5699168 1616016 5699184 1616072 5699200 1616208 5699040 -1616072 5699200 1616016 5699184 1615968 5699848 1616440 5698960 -1616440 5698960 1616152 5699304 1615968 5699848 1616600 5698864 -1615968 5699848 1621448 5701528 1616600 5698864 1616152 5699304 -1616072 5699200 1616152 5699304 1616440 5698960 1616208 5699040 -1616072 5699200 1616152 5699304 1616208 5699040 1616088 5699168 -1616208 5699040 1616128 5699088 1616088 5699168 1616152 5699304 -1616128 5699088 1616104 5699088 1616088 5699168 1616152 5699304 -1616088 5699168 1616072 5699200 1616152 5699304 1616128 5699088 -1616152 5699304 1616440 5698960 1616208 5699040 1616128 5699088 -1616072 5699200 1616152 5699304 1616088 5699168 1616016 5699184 -1616072 5699200 1615968 5699848 1616152 5699304 1616088 5699168 -1615968 5699848 1616152 5699304 1616072 5699200 1616016 5699184 -1615968 5699848 1616152 5699304 1616016 5699184 1615776 5699960 -1616152 5699304 1616088 5699168 1616072 5699200 1616016 5699184 -1616440 5698960 1616208 5699040 1616152 5699304 1616600 5698864 -1616152 5699304 1616016 5699184 1615968 5699848 1616600 5698864 -1616600 5698864 1616256 5699472 1621448 5701528 1621464 5701464 -1616600 5698864 1616256 5699472 1621464 5701464 1621488 5701424 -1615968 5699848 1616256 5699472 1616600 5698864 1616152 5699304 -1616600 5698864 1616440 5698960 1616152 5699304 1616256 5699472 -1616152 5699304 1615968 5699848 1616256 5699472 1616440 5698960 -1616440 5698960 1616208 5699040 1616152 5699304 1616256 5699472 -1616600 5698864 1616440 5698960 1616256 5699472 1621464 5701464 -1615968 5699848 1616256 5699472 1616152 5699304 1616016 5699184 -1616256 5699472 1615968 5699848 1621448 5701528 1621464 5701464 -1615968 5699848 1621448 5701528 1616256 5699472 1616152 5699304 -1621448 5701528 1616256 5699472 1615968 5699848 1621664 5703552 -1616256 5699472 1616256 5699536 1621448 5701528 1621464 5701464 -1616256 5699472 1616256 5699536 1621464 5701464 1616600 5698864 -1621464 5701464 1621488 5701424 1616600 5698864 1616256 5699536 -1616256 5699472 1616256 5699536 1616600 5698864 1616440 5698960 -1616256 5699536 1615968 5699848 1621448 5701528 1621464 5701464 -1616256 5699536 1621448 5701528 1621464 5701464 1616600 5698864 -1616256 5699472 1615968 5699848 1616256 5699536 1616600 5698864 -1615968 5699848 1616256 5699536 1616256 5699472 1616152 5699304 -1615968 5699848 1616256 5699536 1616152 5699304 1616016 5699184 -1615968 5699848 1621448 5701528 1616256 5699536 1616152 5699304 -1616256 5699536 1616600 5698864 1616256 5699472 1616152 5699304 -1621448 5701528 1616256 5699536 1615968 5699848 1621664 5703552 -1616256 5699536 1616112 5699736 1621448 5701528 1621464 5701464 -1615968 5699848 1616112 5699736 1616256 5699536 1616152 5699304 -1615968 5699848 1616112 5699736 1616152 5699304 1616016 5699184 -1615968 5699848 1616112 5699736 1616016 5699184 1615776 5699960 -1616152 5699304 1616072 5699200 1616016 5699184 1616112 5699736 -1616112 5699736 1621448 5701528 1616256 5699536 1616152 5699304 -1616112 5699736 1616256 5699536 1616152 5699304 1616016 5699184 -1616256 5699536 1616256 5699472 1616152 5699304 1616112 5699736 -1615968 5699848 1621448 5701528 1616112 5699736 1616016 5699184 -1621448 5701528 1616112 5699736 1615968 5699848 1621664 5703552 -1657088 5639464 1612232 5689456 1613016 5692968 1613384 5693288 -1613016 5692968 1612232 5689456 1601592 5681064 1601624 5681136 -1613016 5692968 1612232 5689456 1601624 5681136 1612880 5692928 -1601624 5681136 1612736 5692952 1612880 5692928 1612232 5689456 -1601624 5681136 1601592 5681216 1612736 5692952 1612232 5689456 -1612736 5692952 1612880 5692928 1612232 5689456 1601592 5681216 -1601592 5681216 1612544 5693040 1612736 5692952 1612232 5689456 -1601592 5681216 1612440 5693112 1612544 5693040 1612232 5689456 -1612736 5692952 1612880 5692928 1612232 5689456 1612544 5693040 -1612544 5693040 1612736 5692952 1612232 5689456 1612440 5693112 -1601592 5681216 1612440 5693112 1612232 5689456 1601624 5681136 -1612880 5692928 1613016 5692968 1612232 5689456 1612736 5692952 -1612232 5689456 1601592 5681064 1601624 5681136 1601592 5681216 -1657088 5639464 1612232 5689456 1613384 5693288 1663776 5646144 -1612232 5689456 1613016 5692968 1613384 5693288 1663776 5646144 -1613016 5692968 1613112 5693056 1613384 5693288 1612232 5689456 -1613384 5693288 1663776 5646144 1612232 5689456 1613112 5693056 -1613112 5693056 1613216 5693184 1613384 5693288 1612232 5689456 -1613384 5693288 1613488 5693384 1663776 5646144 1612232 5689456 -1613384 5693288 1613488 5693384 1612232 5689456 1613112 5693056 -1663776 5646144 1657088 5639464 1612232 5689456 1613488 5693384 -1613488 5693384 1663880 5646248 1663776 5646144 1612232 5689456 -1613488 5693384 1623296 5701624 1663880 5646248 1612232 5689456 -1623296 5701624 1623408 5701720 1663880 5646248 1612232 5689456 -1613488 5693384 1614216 5694264 1623296 5701624 1612232 5689456 -1623296 5701624 1663880 5646248 1612232 5689456 1614216 5694264 -1663776 5646144 1657088 5639464 1612232 5689456 1663880 5646248 -1613488 5693384 1614216 5694264 1612232 5689456 1613384 5693288 -1614216 5694264 1623192 5701576 1623296 5701624 1612232 5689456 -1614216 5694264 1623192 5701576 1612232 5689456 1613488 5693384 -1623296 5701624 1663880 5646248 1612232 5689456 1623192 5701576 -1663880 5646248 1663776 5646144 1612232 5689456 1623296 5701624 -1612232 5689456 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612232 5689456 1663776 5646144 -1612232 5689456 1612880 5692928 1613016 5692968 1613112 5693056 -1601592 5681216 1601128 5681664 1612440 5693112 1612232 5689456 -1612440 5693112 1612544 5693040 1612232 5689456 1601128 5681664 -1601592 5681216 1601128 5681664 1612232 5689456 1601624 5681136 -1601592 5681216 1601160 5681616 1601128 5681664 1612232 5689456 -1601128 5681664 1601088 5681704 1612440 5693112 1612232 5689456 -1601088 5681704 1602016 5695848 1612440 5693112 1612232 5689456 -1612440 5693112 1612544 5693040 1612232 5689456 1602016 5695848 -1602016 5695848 1602112 5695896 1612440 5693112 1612232 5689456 -1602016 5695848 1602112 5695896 1612232 5689456 1601088 5681704 -1612440 5693112 1612544 5693040 1612232 5689456 1602112 5695896 -1602112 5695896 1612408 5693168 1612440 5693112 1612232 5689456 -1602112 5695896 1602160 5695928 1612408 5693168 1612232 5689456 -1612440 5693112 1612544 5693040 1612232 5689456 1612408 5693168 -1602160 5695928 1612400 5693248 1612408 5693168 1612232 5689456 -1612408 5693168 1612440 5693112 1612232 5689456 1602160 5695928 -1602112 5695896 1602160 5695928 1612232 5689456 1602016 5695848 -1601088 5681704 1602016 5695848 1612232 5689456 1601128 5681664 -1601128 5681664 1601088 5681704 1612232 5689456 1601592 5681216 -1657088 5639464 1612232 5689456 1663776 5646144 1663688 5645984 -1601088 5681704 1600992 5681736 1602016 5695848 1612232 5689456 -1614216 5694264 1615200 5695576 1623192 5701576 1612232 5689456 -1614216 5694264 1615200 5695576 1612232 5689456 1613488 5693384 -1623192 5701576 1623296 5701624 1612232 5689456 1615200 5695576 -1615200 5695576 1615376 5695816 1623192 5701576 1612232 5689456 -1613488 5693384 1614120 5694152 1614216 5694264 1612232 5689456 -1614216 5694264 1615200 5695576 1612232 5689456 1614120 5694152 -1613488 5693384 1614120 5694152 1612232 5689456 1613384 5693288 -1613488 5693384 1613584 5693568 1614120 5694152 1612232 5689456 -1614216 5694264 1615056 5695464 1615200 5695576 1612232 5689456 -1601592 5681064 1612232 5689456 1657088 5639464 1601560 5681032 -1663880 5646248 1612288 5689416 1623296 5701624 1623408 5701720 -1623296 5701624 1612288 5689416 1612232 5689456 1623192 5701576 -1612232 5689456 1615200 5695576 1623192 5701576 1612288 5689416 -1623192 5701576 1623296 5701624 1612288 5689416 1615200 5695576 -1612232 5689456 1612288 5689416 1663880 5646248 1663776 5646144 -1612232 5689456 1612288 5689416 1663776 5646144 1657088 5639464 -1612288 5689416 1663880 5646248 1663776 5646144 1657088 5639464 -1615200 5695576 1615376 5695816 1623192 5701576 1612288 5689416 -1612232 5689456 1612288 5689416 1657088 5639464 1601592 5681064 -1612288 5689416 1663776 5646144 1657088 5639464 1601592 5681064 -1612232 5689456 1612288 5689416 1601592 5681064 1601624 5681136 -1612232 5689456 1612288 5689416 1601624 5681136 1601592 5681216 -1612288 5689416 1657088 5639464 1601592 5681064 1601624 5681136 -1612288 5689416 1601624 5681136 1612232 5689456 1615200 5695576 -1612288 5689416 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1612288 5689416 1623192 5701576 -1663776 5646144 1663688 5645984 1657088 5639464 1612288 5689416 -1612232 5689456 1614216 5694264 1615200 5695576 1612288 5689416 -1612232 5689456 1614120 5694152 1614216 5694264 1612288 5689416 -1615200 5695576 1623192 5701576 1612288 5689416 1614216 5694264 -1612232 5689456 1614120 5694152 1612288 5689416 1601624 5681136 -1614216 5694264 1615200 5695576 1612288 5689416 1614120 5694152 -1612232 5689456 1613488 5693384 1614120 5694152 1612288 5689416 -1614120 5694152 1614216 5694264 1612288 5689416 1613488 5693384 -1612232 5689456 1613384 5693288 1613488 5693384 1612288 5689416 -1612232 5689456 1613112 5693056 1613384 5693288 1612288 5689416 -1613112 5693056 1613216 5693184 1613384 5693288 1612288 5689416 -1612232 5689456 1613016 5692968 1613112 5693056 1612288 5689416 -1613112 5693056 1613384 5693288 1612288 5689416 1613016 5692968 -1613384 5693288 1613488 5693384 1612288 5689416 1613112 5693056 -1612232 5689456 1613016 5692968 1612288 5689416 1601624 5681136 -1612232 5689456 1612880 5692928 1613016 5692968 1612288 5689416 -1612232 5689456 1612736 5692952 1612880 5692928 1612288 5689416 -1613016 5692968 1613112 5693056 1612288 5689416 1612880 5692928 -1612232 5689456 1612880 5692928 1612288 5689416 1601624 5681136 -1613488 5693384 1613584 5693568 1614120 5694152 1612288 5689416 -1613488 5693384 1614120 5694152 1612288 5689416 1613384 5693288 -1614216 5694264 1615056 5695464 1615200 5695576 1612288 5689416 -1657088 5639464 1601560 5681032 1601592 5681064 1612288 5689416 -1657088 5639464 1612312 5689384 1612288 5689416 1663776 5646144 -1612288 5689416 1663880 5646248 1663776 5646144 1612312 5689384 -1663776 5646144 1657088 5639464 1612312 5689384 1663880 5646248 -1612288 5689416 1612312 5689384 1601592 5681064 1601624 5681136 -1612288 5689416 1612312 5689384 1601624 5681136 1612232 5689456 -1601624 5681136 1601592 5681216 1612232 5689456 1612312 5689384 -1601592 5681216 1601128 5681664 1612232 5689456 1612312 5689384 -1612232 5689456 1612288 5689416 1612312 5689384 1601592 5681216 -1612312 5689384 1601592 5681064 1601624 5681136 1601592 5681216 -1612288 5689416 1623296 5701624 1663880 5646248 1612312 5689384 -1623296 5701624 1623408 5701720 1663880 5646248 1612312 5689384 -1663880 5646248 1663776 5646144 1612312 5689384 1623296 5701624 -1612312 5689384 1612232 5689456 1612288 5689416 1623296 5701624 -1612288 5689416 1623192 5701576 1623296 5701624 1612312 5689384 -1612288 5689416 1615200 5695576 1623192 5701576 1612312 5689384 -1612288 5689416 1614216 5694264 1615200 5695576 1612312 5689384 -1615200 5695576 1623192 5701576 1612312 5689384 1614216 5694264 -1615200 5695576 1615376 5695816 1623192 5701576 1612312 5689384 -1623296 5701624 1663880 5646248 1612312 5689384 1623192 5701576 -1612288 5689416 1614216 5694264 1612312 5689384 1612232 5689456 -1623192 5701576 1623296 5701624 1612312 5689384 1615200 5695576 -1612312 5689384 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612312 5689384 1663776 5646144 -1657088 5639464 1612312 5689384 1663776 5646144 1663688 5645984 -1612288 5689416 1614120 5694152 1614216 5694264 1612312 5689384 -1612288 5689416 1613488 5693384 1614120 5694152 1612312 5689384 -1614216 5694264 1615200 5695576 1612312 5689384 1614120 5694152 -1612288 5689416 1613488 5693384 1612312 5689384 1612232 5689456 -1614120 5694152 1614216 5694264 1612312 5689384 1613488 5693384 -1613488 5693384 1613584 5693568 1614120 5694152 1612312 5689384 -1612288 5689416 1613384 5693288 1613488 5693384 1612312 5689384 -1613488 5693384 1614120 5694152 1612312 5689384 1613384 5693288 -1612288 5689416 1613112 5693056 1613384 5693288 1612312 5689384 -1612288 5689416 1613016 5692968 1613112 5693056 1612312 5689384 -1613112 5693056 1613216 5693184 1613384 5693288 1612312 5689384 -1612288 5689416 1612880 5692928 1613016 5692968 1612312 5689384 -1613112 5693056 1613384 5693288 1612312 5689384 1613016 5692968 -1612288 5689416 1613016 5692968 1612312 5689384 1612232 5689456 -1613384 5693288 1613488 5693384 1612312 5689384 1613112 5693056 -1614216 5694264 1615056 5695464 1615200 5695576 1612312 5689384 -1601592 5681064 1612312 5689384 1657088 5639464 1601560 5681032 -1612312 5689384 1612336 5689264 1601592 5681064 1601624 5681136 -1612312 5689384 1612336 5689264 1601624 5681136 1601592 5681216 -1612312 5689384 1612336 5689264 1601592 5681216 1612232 5689456 -1601592 5681216 1601128 5681664 1612232 5689456 1612336 5689264 -1612312 5689384 1612336 5689264 1612232 5689456 1612288 5689416 -1612336 5689264 1601624 5681136 1601592 5681216 1612232 5689456 -1612336 5689264 1601592 5681064 1601624 5681136 1601592 5681216 -1612312 5689384 1657088 5639464 1612336 5689264 1612232 5689456 -1657088 5639464 1612336 5689264 1612312 5689384 1663776 5646144 -1612312 5689384 1663880 5646248 1663776 5646144 1612336 5689264 -1612312 5689384 1623296 5701624 1663880 5646248 1612336 5689264 -1623296 5701624 1623408 5701720 1663880 5646248 1612336 5689264 -1663880 5646248 1663776 5646144 1612336 5689264 1623296 5701624 -1612312 5689384 1623192 5701576 1623296 5701624 1612336 5689264 -1623296 5701624 1663880 5646248 1612336 5689264 1623192 5701576 -1612312 5689384 1615200 5695576 1623192 5701576 1612336 5689264 -1612312 5689384 1614216 5694264 1615200 5695576 1612336 5689264 -1612312 5689384 1614120 5694152 1614216 5694264 1612336 5689264 -1614216 5694264 1615200 5695576 1612336 5689264 1614120 5694152 -1615200 5695576 1615376 5695816 1623192 5701576 1612336 5689264 -1623192 5701576 1623296 5701624 1612336 5689264 1615200 5695576 -1615200 5695576 1623192 5701576 1612336 5689264 1614216 5694264 -1612336 5689264 1612232 5689456 1612312 5689384 1614120 5694152 -1663776 5646144 1657088 5639464 1612336 5689264 1663880 5646248 -1612336 5689264 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612336 5689264 1663776 5646144 -1657088 5639464 1612336 5689264 1663776 5646144 1663688 5645984 -1612312 5689384 1613488 5693384 1614120 5694152 1612336 5689264 -1612312 5689384 1613384 5693288 1613488 5693384 1612336 5689264 -1614120 5694152 1614216 5694264 1612336 5689264 1613488 5693384 -1612312 5689384 1613488 5693384 1612336 5689264 1612232 5689456 -1613488 5693384 1613584 5693568 1614120 5694152 1612336 5689264 -1614216 5694264 1615056 5695464 1615200 5695576 1612336 5689264 -1601592 5681064 1612336 5689264 1657088 5639464 1601560 5681032 -1612336 5689264 1612320 5689216 1601592 5681064 1601624 5681136 -1612336 5689264 1612320 5689216 1601624 5681136 1601592 5681216 -1612336 5689264 1612320 5689216 1601592 5681216 1612232 5689456 -1601592 5681216 1601128 5681664 1612232 5689456 1612320 5689216 -1612336 5689264 1612320 5689216 1612232 5689456 1612312 5689384 -1601592 5681216 1601160 5681616 1601128 5681664 1612320 5689216 -1612232 5689456 1612288 5689416 1612312 5689384 1612320 5689216 -1612232 5689456 1612312 5689384 1612320 5689216 1601128 5681664 -1612320 5689216 1601624 5681136 1601592 5681216 1601128 5681664 -1612320 5689216 1601592 5681064 1601624 5681136 1601592 5681216 -1612336 5689264 1657088 5639464 1612320 5689216 1612312 5689384 -1657088 5639464 1612320 5689216 1612336 5689264 1663776 5646144 -1612336 5689264 1663880 5646248 1663776 5646144 1612320 5689216 -1612336 5689264 1623296 5701624 1663880 5646248 1612320 5689216 -1623296 5701624 1623408 5701720 1663880 5646248 1612320 5689216 -1612336 5689264 1623192 5701576 1623296 5701624 1612320 5689216 -1663880 5646248 1663776 5646144 1612320 5689216 1623296 5701624 -1612320 5689216 1612312 5689384 1612336 5689264 1623296 5701624 -1663776 5646144 1657088 5639464 1612320 5689216 1663880 5646248 -1612320 5689216 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1612320 5689216 1663776 5646144 -1601128 5681664 1601088 5681704 1612232 5689456 1612320 5689216 -1601128 5681664 1601088 5681704 1612320 5689216 1601592 5681216 -1612232 5689456 1612312 5689384 1612320 5689216 1601088 5681704 -1601088 5681704 1602016 5695848 1612232 5689456 1612320 5689216 -1657088 5639464 1612320 5689216 1663776 5646144 1663688 5645984 -1601592 5681064 1612320 5689216 1657088 5639464 1601560 5681032 -1612320 5689216 1612192 5689088 1601592 5681064 1601624 5681136 -1612320 5689216 1612192 5689088 1601624 5681136 1601592 5681216 -1612320 5689216 1612192 5689088 1601592 5681216 1601128 5681664 -1612320 5689216 1612192 5689088 1601128 5681664 1601088 5681704 -1601592 5681216 1601160 5681616 1601128 5681664 1612192 5689088 -1612192 5689088 1601592 5681216 1601128 5681664 1601088 5681704 -1612192 5689088 1601624 5681136 1601592 5681216 1601128 5681664 -1612192 5689088 1601592 5681064 1601624 5681136 1601592 5681216 -1612320 5689216 1657088 5639464 1612192 5689088 1601088 5681704 -1657088 5639464 1612192 5689088 1612320 5689216 1663776 5646144 -1612192 5689088 1657088 5639464 1601592 5681064 1601624 5681136 -1612320 5689216 1612192 5689088 1601088 5681704 1612232 5689456 -1612192 5689088 1601128 5681664 1601088 5681704 1612232 5689456 -1612320 5689216 1612192 5689088 1612232 5689456 1612312 5689384 -1612320 5689216 1657088 5639464 1612192 5689088 1612232 5689456 -1601088 5681704 1602016 5695848 1612232 5689456 1612192 5689088 -1602016 5695848 1602112 5695896 1612232 5689456 1612192 5689088 -1601088 5681704 1602016 5695848 1612192 5689088 1601128 5681664 -1602112 5695896 1602160 5695928 1612232 5689456 1612192 5689088 -1602016 5695848 1602112 5695896 1612192 5689088 1601088 5681704 -1612232 5689456 1612320 5689216 1612192 5689088 1602112 5695896 -1601088 5681704 1600992 5681736 1602016 5695848 1612192 5689088 -1601592 5681064 1612192 5689088 1657088 5639464 1601560 5681032 -1601088 5681704 1612088 5689040 1612192 5689088 1601128 5681664 -1612192 5689088 1601592 5681216 1601128 5681664 1612088 5689040 -1601128 5681664 1601088 5681704 1612088 5689040 1601592 5681216 -1601592 5681216 1601160 5681616 1601128 5681664 1612088 5689040 -1612192 5689088 1601624 5681136 1601592 5681216 1612088 5689040 -1601592 5681216 1601128 5681664 1612088 5689040 1601624 5681136 -1612192 5689088 1601592 5681064 1601624 5681136 1612088 5689040 -1601624 5681136 1601592 5681216 1612088 5689040 1601592 5681064 -1612192 5689088 1657088 5639464 1601592 5681064 1612088 5689040 -1612088 5689040 1602016 5695848 1612192 5689088 1601592 5681064 -1601088 5681704 1602016 5695848 1612088 5689040 1601128 5681664 -1612192 5689088 1612088 5689040 1602016 5695848 1602112 5695896 -1612192 5689088 1612088 5689040 1602112 5695896 1612232 5689456 -1612192 5689088 1601592 5681064 1612088 5689040 1612232 5689456 -1612088 5689040 1601088 5681704 1602016 5695848 1602112 5695896 -1602112 5695896 1602160 5695928 1612232 5689456 1612088 5689040 -1602160 5695928 1612408 5693168 1612232 5689456 1612088 5689040 -1612232 5689456 1612192 5689088 1612088 5689040 1602160 5695928 -1612088 5689040 1602016 5695848 1602112 5695896 1602160 5695928 -1612192 5689088 1612088 5689040 1612232 5689456 1612320 5689216 -1602016 5695848 1612088 5689040 1601088 5681704 1600992 5681736 -1612088 5689040 1611920 5689032 1602016 5695848 1602112 5695896 -1612088 5689040 1601088 5681704 1611920 5689032 1602112 5695896 -1601088 5681704 1611920 5689032 1612088 5689040 1601128 5681664 -1612088 5689040 1601592 5681216 1601128 5681664 1611920 5689032 -1601592 5681216 1601160 5681616 1601128 5681664 1611920 5689032 -1612088 5689040 1601624 5681136 1601592 5681216 1611920 5689032 -1601592 5681216 1601128 5681664 1611920 5689032 1601624 5681136 -1612088 5689040 1601592 5681064 1601624 5681136 1611920 5689032 -1611920 5689032 1602112 5695896 1612088 5689040 1601624 5681136 -1601128 5681664 1601088 5681704 1611920 5689032 1601592 5681216 -1611920 5689032 1601088 5681704 1602016 5695848 1602112 5695896 -1601088 5681704 1602016 5695848 1611920 5689032 1601128 5681664 -1612088 5689040 1611920 5689032 1602112 5695896 1602160 5695928 -1611920 5689032 1602016 5695848 1602112 5695896 1602160 5695928 -1612088 5689040 1601624 5681136 1611920 5689032 1602160 5695928 -1612088 5689040 1611920 5689032 1602160 5695928 1612232 5689456 -1602160 5695928 1612408 5693168 1612232 5689456 1611920 5689032 -1612088 5689040 1611920 5689032 1612232 5689456 1612192 5689088 -1612088 5689040 1601624 5681136 1611920 5689032 1612232 5689456 -1602160 5695928 1612400 5693248 1612408 5693168 1611920 5689032 -1612408 5693168 1612440 5693112 1612232 5689456 1611920 5689032 -1612232 5689456 1612088 5689040 1611920 5689032 1612408 5693168 -1611920 5689032 1602112 5695896 1602160 5695928 1612408 5693168 -1602016 5695848 1611920 5689032 1601088 5681704 1600992 5681736 -1611920 5689032 1611688 5689072 1602016 5695848 1602112 5695896 -1611688 5689072 1601088 5681704 1602016 5695848 1602112 5695896 -1611920 5689032 1611688 5689072 1602112 5695896 1602160 5695928 -1611688 5689072 1602016 5695848 1602112 5695896 1602160 5695928 -1611920 5689032 1601088 5681704 1611688 5689072 1602160 5695928 -1601088 5681704 1611688 5689072 1611920 5689032 1601128 5681664 -1601088 5681704 1602016 5695848 1611688 5689072 1601128 5681664 -1611920 5689032 1601592 5681216 1601128 5681664 1611688 5689072 -1611920 5689032 1601624 5681136 1601592 5681216 1611688 5689072 -1601128 5681664 1601088 5681704 1611688 5689072 1601592 5681216 -1601592 5681216 1601160 5681616 1601128 5681664 1611688 5689072 -1611920 5689032 1612088 5689040 1601624 5681136 1611688 5689072 -1601592 5681216 1601128 5681664 1611688 5689072 1601624 5681136 -1611688 5689072 1602160 5695928 1611920 5689032 1601624 5681136 -1611920 5689032 1611688 5689072 1602160 5695928 1612408 5693168 -1611920 5689032 1611688 5689072 1612408 5693168 1612232 5689456 -1611688 5689072 1602112 5695896 1602160 5695928 1612408 5693168 -1611920 5689032 1601624 5681136 1611688 5689072 1612232 5689456 -1602160 5695928 1612400 5693248 1612408 5693168 1611688 5689072 -1612408 5693168 1612440 5693112 1612232 5689456 1611688 5689072 -1612232 5689456 1611920 5689032 1611688 5689072 1612440 5693112 -1612440 5693112 1612544 5693040 1612232 5689456 1611688 5689072 -1611920 5689032 1611688 5689072 1612232 5689456 1612088 5689040 -1611688 5689072 1602160 5695928 1612408 5693168 1612440 5693112 -1602016 5695848 1611688 5689072 1601088 5681704 1600992 5681736 -1611688 5689072 1611600 5689064 1602016 5695848 1602112 5695896 -1601088 5681704 1611600 5689064 1611688 5689072 1601128 5681664 -1611688 5689072 1601592 5681216 1601128 5681664 1611600 5689064 -1601128 5681664 1601088 5681704 1611600 5689064 1601592 5681216 -1611688 5689072 1601592 5681216 1611600 5689064 1602112 5695896 -1611600 5689064 1601088 5681704 1602016 5695848 1602112 5695896 -1601088 5681704 1602016 5695848 1611600 5689064 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1611600 5689064 -1611688 5689072 1601624 5681136 1601592 5681216 1611600 5689064 -1611688 5689072 1611920 5689032 1601624 5681136 1611600 5689064 -1601592 5681216 1601128 5681664 1611600 5689064 1601624 5681136 -1611688 5689072 1611920 5689032 1611600 5689064 1602112 5695896 -1611920 5689032 1612088 5689040 1601624 5681136 1611600 5689064 -1601624 5681136 1601592 5681216 1611600 5689064 1611920 5689032 -1611688 5689072 1611600 5689064 1602112 5695896 1602160 5695928 -1611600 5689064 1602016 5695848 1602112 5695896 1602160 5695928 -1611688 5689072 1611920 5689032 1611600 5689064 1602160 5695928 -1611688 5689072 1611600 5689064 1602160 5695928 1612408 5693168 -1611688 5689072 1611920 5689032 1611600 5689064 1612408 5693168 -1611600 5689064 1602112 5695896 1602160 5695928 1612408 5693168 -1602160 5695928 1612400 5693248 1612408 5693168 1611600 5689064 -1611688 5689072 1611600 5689064 1612408 5693168 1612440 5693112 -1611688 5689072 1611920 5689032 1611600 5689064 1612440 5693112 -1611600 5689064 1602160 5695928 1612408 5693168 1612440 5693112 -1611688 5689072 1611600 5689064 1612440 5693112 1612232 5689456 -1611688 5689072 1611600 5689064 1612232 5689456 1611920 5689032 -1612440 5693112 1612544 5693040 1612232 5689456 1611600 5689064 -1611688 5689072 1611920 5689032 1611600 5689064 1612232 5689456 -1611600 5689064 1612408 5693168 1612440 5693112 1612232 5689456 -1602016 5695848 1611600 5689064 1601088 5681704 1600992 5681736 -1611600 5689064 1611536 5689032 1602016 5695848 1602112 5695896 -1611600 5689064 1611536 5689032 1602112 5695896 1602160 5695928 -1611536 5689032 1602016 5695848 1602112 5695896 1602160 5695928 -1611600 5689064 1601088 5681704 1611536 5689032 1602160 5695928 -1601088 5681704 1611536 5689032 1611600 5689064 1601128 5681664 -1611600 5689064 1601592 5681216 1601128 5681664 1611536 5689032 -1611600 5689064 1601624 5681136 1601592 5681216 1611536 5689032 -1601592 5681216 1601128 5681664 1611536 5689032 1601624 5681136 -1611536 5689032 1602160 5695928 1611600 5689064 1601624 5681136 -1601128 5681664 1601088 5681704 1611536 5689032 1601592 5681216 -1611536 5689032 1601088 5681704 1602016 5695848 1602112 5695896 -1601088 5681704 1602016 5695848 1611536 5689032 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1611536 5689032 -1611600 5689064 1611920 5689032 1601624 5681136 1611536 5689032 -1611600 5689064 1611688 5689072 1611920 5689032 1611536 5689032 -1601624 5681136 1601592 5681216 1611536 5689032 1611920 5689032 -1611600 5689064 1611688 5689072 1611536 5689032 1602160 5695928 -1611920 5689032 1612088 5689040 1601624 5681136 1611536 5689032 -1611920 5689032 1601624 5681136 1611536 5689032 1611688 5689072 -1611600 5689064 1611536 5689032 1602160 5695928 1612408 5693168 -1611536 5689032 1602112 5695896 1602160 5695928 1612408 5693168 -1611600 5689064 1611688 5689072 1611536 5689032 1612408 5693168 -1611600 5689064 1611536 5689032 1612408 5693168 1612440 5693112 -1611600 5689064 1611688 5689072 1611536 5689032 1612440 5693112 -1611536 5689032 1602160 5695928 1612408 5693168 1612440 5693112 -1602160 5695928 1612400 5693248 1612408 5693168 1611536 5689032 -1611600 5689064 1611536 5689032 1612440 5693112 1612232 5689456 -1602016 5695848 1611536 5689032 1601088 5681704 1600992 5681736 -1611536 5689032 1611520 5689000 1601624 5681136 1601592 5681216 -1611536 5689032 1611520 5689000 1601592 5681216 1601128 5681664 -1611520 5689000 1601624 5681136 1601592 5681216 1601128 5681664 -1611536 5689032 1611520 5689000 1601128 5681664 1601088 5681704 -1611520 5689000 1601592 5681216 1601128 5681664 1601088 5681704 -1611536 5689032 1611920 5689032 1611520 5689000 1601088 5681704 -1611536 5689032 1611520 5689000 1601088 5681704 1602016 5695848 -1611520 5689000 1601128 5681664 1601088 5681704 1602016 5695848 -1611536 5689032 1611520 5689000 1602016 5695848 1602112 5695896 -1611536 5689032 1611520 5689000 1602112 5695896 1602160 5695928 -1611536 5689032 1611520 5689000 1602160 5695928 1612408 5693168 -1611520 5689000 1602016 5695848 1602112 5695896 1602160 5695928 -1611536 5689032 1611920 5689032 1611520 5689000 1602160 5695928 -1611520 5689000 1601088 5681704 1602016 5695848 1602112 5695896 -1611520 5689000 1611920 5689032 1601624 5681136 1601592 5681216 -1601592 5681216 1601160 5681616 1601128 5681664 1611520 5689000 -1601624 5681136 1611520 5689000 1611920 5689032 1612088 5689040 -1601624 5681136 1601592 5681216 1611520 5689000 1612088 5689040 -1611520 5689000 1611536 5689032 1611920 5689032 1612088 5689040 -1601624 5681136 1611520 5689000 1612088 5689040 1601592 5681064 -1611920 5689032 1611520 5689000 1611536 5689032 1611688 5689072 -1611536 5689032 1611600 5689064 1611688 5689072 1611520 5689000 -1611520 5689000 1602160 5695928 1611536 5689032 1611600 5689064 -1611920 5689032 1612088 5689040 1611520 5689000 1611688 5689072 -1611688 5689072 1611920 5689032 1611520 5689000 1611600 5689064 -1601088 5681704 1600992 5681736 1602016 5695848 1611520 5689000 -1601088 5681704 1611480 5688984 1611520 5689000 1601128 5681664 -1611520 5689000 1601592 5681216 1601128 5681664 1611480 5688984 -1611520 5689000 1601624 5681136 1601592 5681216 1611480 5688984 -1601592 5681216 1601128 5681664 1611480 5688984 1601624 5681136 -1601128 5681664 1601088 5681704 1611480 5688984 1601592 5681216 -1611520 5689000 1611480 5688984 1602016 5695848 1602112 5695896 -1611520 5689000 1611480 5688984 1602112 5695896 1602160 5695928 -1611520 5689000 1611480 5688984 1602160 5695928 1611536 5689032 -1602160 5695928 1612408 5693168 1611536 5689032 1611480 5688984 -1611536 5689032 1611520 5689000 1611480 5688984 1612408 5693168 -1611480 5688984 1602112 5695896 1602160 5695928 1612408 5693168 -1611480 5688984 1602016 5695848 1602112 5695896 1602160 5695928 -1611520 5689000 1612088 5689040 1601624 5681136 1611480 5688984 -1601624 5681136 1601592 5681216 1611480 5688984 1612088 5689040 -1611480 5688984 1611536 5689032 1611520 5689000 1612088 5689040 -1611480 5688984 1601088 5681704 1602016 5695848 1602112 5695896 -1601088 5681704 1602016 5695848 1611480 5688984 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1611480 5688984 -1611520 5689000 1611920 5689032 1612088 5689040 1611480 5688984 -1612088 5689040 1601624 5681136 1611480 5688984 1611920 5689032 -1611520 5689000 1611920 5689032 1611480 5688984 1611536 5689032 -1611520 5689000 1611688 5689072 1611920 5689032 1611480 5688984 -1612088 5689040 1601592 5681064 1601624 5681136 1611480 5688984 -1612408 5693168 1612440 5693112 1611536 5689032 1611480 5688984 -1602160 5695928 1612400 5693248 1612408 5693168 1611480 5688984 -1602016 5695848 1611480 5688984 1601088 5681704 1600992 5681736 -1611480 5688984 1611392 5688904 1601624 5681136 1601592 5681216 -1611480 5688984 1611392 5688904 1601592 5681216 1601128 5681664 -1611392 5688904 1601624 5681136 1601592 5681216 1601128 5681664 -1611480 5688984 1611392 5688904 1601128 5681664 1601088 5681704 -1611392 5688904 1601592 5681216 1601128 5681664 1601088 5681704 -1612088 5689040 1611392 5688904 1611480 5688984 1611920 5689032 -1611480 5688984 1611920 5689032 1611392 5688904 1601088 5681704 -1611480 5688984 1611392 5688904 1601088 5681704 1602016 5695848 -1611392 5688904 1601128 5681664 1601088 5681704 1602016 5695848 -1611480 5688984 1611392 5688904 1602016 5695848 1602112 5695896 -1611480 5688984 1611392 5688904 1602112 5695896 1602160 5695928 -1611480 5688984 1611392 5688904 1602160 5695928 1612408 5693168 -1611480 5688984 1611392 5688904 1612408 5693168 1611536 5689032 -1611392 5688904 1602112 5695896 1602160 5695928 1612408 5693168 -1611392 5688904 1602016 5695848 1602112 5695896 1602160 5695928 -1611480 5688984 1611920 5689032 1611392 5688904 1612408 5693168 -1611392 5688904 1601088 5681704 1602016 5695848 1602112 5695896 -1611392 5688904 1612088 5689040 1601624 5681136 1601592 5681216 -1612088 5689040 1601624 5681136 1611392 5688904 1611920 5689032 -1601592 5681216 1601160 5681616 1601128 5681664 1611392 5688904 -1611480 5688984 1611520 5689000 1611920 5689032 1611392 5688904 -1611920 5689032 1612088 5689040 1611392 5688904 1611520 5689000 -1611520 5689000 1611688 5689072 1611920 5689032 1611392 5688904 -1611480 5688984 1611520 5689000 1611392 5688904 1612408 5693168 -1601624 5681136 1611392 5688904 1612088 5689040 1601592 5681064 -1601624 5681136 1601592 5681216 1611392 5688904 1601592 5681064 -1611392 5688904 1611920 5689032 1612088 5689040 1601592 5681064 -1612088 5689040 1612192 5689088 1601592 5681064 1611392 5688904 -1602160 5695928 1612400 5693248 1612408 5693168 1611392 5688904 -1601088 5681704 1600992 5681736 1602016 5695848 1611392 5688904 -1612088 5689040 1611360 5688848 1611392 5688904 1611920 5689032 -1611392 5688904 1611520 5689000 1611920 5689032 1611360 5688848 -1611520 5689000 1611688 5689072 1611920 5689032 1611360 5688848 -1611360 5688848 1601592 5681064 1611392 5688904 1611520 5689000 -1611920 5689032 1612088 5689040 1611360 5688848 1611520 5689000 -1612088 5689040 1601592 5681064 1611360 5688848 1611920 5689032 -1611392 5688904 1611480 5688984 1611520 5689000 1611360 5688848 -1611392 5688904 1611360 5688848 1601592 5681064 1601624 5681136 -1611392 5688904 1611360 5688848 1601624 5681136 1601592 5681216 -1611392 5688904 1611360 5688848 1601592 5681216 1601128 5681664 -1611392 5688904 1611360 5688848 1601128 5681664 1601088 5681704 -1611360 5688848 1601592 5681216 1601128 5681664 1601088 5681704 -1611392 5688904 1611360 5688848 1601088 5681704 1602016 5695848 -1611360 5688848 1601128 5681664 1601088 5681704 1602016 5695848 -1611392 5688904 1611360 5688848 1602016 5695848 1602112 5695896 -1611360 5688848 1601088 5681704 1602016 5695848 1602112 5695896 -1611392 5688904 1611360 5688848 1602112 5695896 1602160 5695928 -1611392 5688904 1611360 5688848 1602160 5695928 1612408 5693168 -1611360 5688848 1602016 5695848 1602112 5695896 1602160 5695928 -1611360 5688848 1601624 5681136 1601592 5681216 1601128 5681664 -1611392 5688904 1611520 5689000 1611360 5688848 1602160 5695928 -1611360 5688848 1612088 5689040 1601592 5681064 1601624 5681136 -1601592 5681216 1601160 5681616 1601128 5681664 1611360 5688848 -1611360 5688848 1601592 5681064 1601624 5681136 1601592 5681216 -1601592 5681064 1611360 5688848 1612088 5689040 1612192 5689088 -1601088 5681704 1600992 5681736 1602016 5695848 1611360 5688848 -1611360 5688848 1611360 5688736 1601592 5681064 1601624 5681136 -1611360 5688848 1612088 5689040 1611360 5688736 1601624 5681136 -1612088 5689040 1611360 5688736 1611360 5688848 1611920 5689032 -1611360 5688848 1611520 5689000 1611920 5689032 1611360 5688736 -1611360 5688848 1611392 5688904 1611520 5689000 1611360 5688736 -1611520 5689000 1611688 5689072 1611920 5689032 1611360 5688736 -1611520 5689000 1611920 5689032 1611360 5688736 1611392 5688904 -1611360 5688736 1601624 5681136 1611360 5688848 1611392 5688904 -1611920 5689032 1612088 5689040 1611360 5688736 1611520 5689000 -1611360 5688736 1612088 5689040 1601592 5681064 1601624 5681136 -1612088 5689040 1601592 5681064 1611360 5688736 1611920 5689032 -1611392 5688904 1611480 5688984 1611520 5689000 1611360 5688736 -1611360 5688848 1611360 5688736 1601624 5681136 1601592 5681216 -1611360 5688848 1611360 5688736 1601592 5681216 1601128 5681664 -1611360 5688848 1611360 5688736 1601128 5681664 1601088 5681704 -1611360 5688848 1611360 5688736 1601088 5681704 1602016 5695848 -1611360 5688736 1601128 5681664 1601088 5681704 1602016 5695848 -1611360 5688848 1611360 5688736 1602016 5695848 1602112 5695896 -1611360 5688736 1601592 5681216 1601128 5681664 1601088 5681704 -1611360 5688736 1601592 5681064 1601624 5681136 1601592 5681216 -1611360 5688848 1611392 5688904 1611360 5688736 1602016 5695848 -1601592 5681216 1601160 5681616 1601128 5681664 1611360 5688736 -1611360 5688736 1601624 5681136 1601592 5681216 1601128 5681664 -1601592 5681064 1611360 5688736 1612088 5689040 1612192 5689088 -1601088 5681704 1600992 5681736 1602016 5695848 1611360 5688736 -1612192 5689088 1611416 5688480 1601592 5681064 1612088 5689040 -1611416 5688480 1657088 5639464 1601592 5681064 1612088 5689040 -1612192 5689088 1657088 5639464 1611416 5688480 1612088 5689040 -1601592 5681064 1611360 5688736 1612088 5689040 1611416 5688480 -1601592 5681064 1601624 5681136 1611360 5688736 1611416 5688480 -1601624 5681136 1601592 5681216 1611360 5688736 1611416 5688480 -1601624 5681136 1601592 5681216 1611416 5688480 1601592 5681064 -1601592 5681064 1601624 5681136 1611416 5688480 1657088 5639464 -1611360 5688736 1611920 5689032 1612088 5689040 1611416 5688480 -1611360 5688736 1611520 5689000 1611920 5689032 1611416 5688480 -1611520 5689000 1611688 5689072 1611920 5689032 1611416 5688480 -1611360 5688736 1611392 5688904 1611520 5689000 1611416 5688480 -1611920 5689032 1612088 5689040 1611416 5688480 1611520 5689000 -1601592 5681216 1601128 5681664 1611360 5688736 1611416 5688480 -1601128 5681664 1601088 5681704 1611360 5688736 1611416 5688480 -1601088 5681704 1602016 5695848 1611360 5688736 1611416 5688480 -1601592 5681216 1601128 5681664 1611416 5688480 1601624 5681136 -1601592 5681216 1601160 5681616 1601128 5681664 1611416 5688480 -1601128 5681664 1601088 5681704 1611416 5688480 1601592 5681216 -1611360 5688736 1611520 5689000 1611416 5688480 1601088 5681704 -1612088 5689040 1612192 5689088 1611416 5688480 1611920 5689032 -1657088 5639464 1611416 5688480 1612192 5689088 1612320 5689216 -1601592 5681064 1611416 5688480 1657088 5639464 1601560 5681032 -1611416 5688480 1611408 5688288 1601592 5681064 1601624 5681136 -1611416 5688480 1611408 5688288 1601624 5681136 1601592 5681216 -1611416 5688480 1611408 5688288 1601592 5681216 1601128 5681664 -1611408 5688288 1601624 5681136 1601592 5681216 1601128 5681664 -1611408 5688288 1601592 5681064 1601624 5681136 1601592 5681216 -1657088 5639464 1611408 5688288 1611416 5688480 1612192 5689088 -1611416 5688480 1612192 5689088 1611408 5688288 1601128 5681664 -1611416 5688480 1612088 5689040 1612192 5689088 1611408 5688288 -1612192 5689088 1657088 5639464 1611408 5688288 1612088 5689040 -1611416 5688480 1612088 5689040 1611408 5688288 1601128 5681664 -1611408 5688288 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1611408 5688288 1612192 5689088 -1601592 5681216 1601160 5681616 1601128 5681664 1611408 5688288 -1611416 5688480 1611408 5688288 1601128 5681664 1601088 5681704 -1611416 5688480 1611408 5688288 1601088 5681704 1611360 5688736 -1601088 5681704 1602016 5695848 1611360 5688736 1611408 5688288 -1611408 5688288 1601592 5681216 1601128 5681664 1601088 5681704 -1611416 5688480 1612088 5689040 1611408 5688288 1611360 5688736 -1611408 5688288 1601128 5681664 1601088 5681704 1611360 5688736 -1611416 5688480 1611920 5689032 1612088 5689040 1611408 5688288 -1657088 5639464 1611408 5688288 1612192 5689088 1612320 5689216 -1601592 5681064 1611408 5688288 1657088 5639464 1601560 5681032 -1611408 5688288 1611488 5688024 1601592 5681064 1601624 5681136 -1611408 5688288 1611488 5688024 1601624 5681136 1601592 5681216 -1611408 5688288 1611488 5688024 1601592 5681216 1601128 5681664 -1611408 5688288 1611488 5688024 1601128 5681664 1601088 5681704 -1611488 5688024 1601592 5681216 1601128 5681664 1601088 5681704 -1611488 5688024 1601624 5681136 1601592 5681216 1601128 5681664 -1611488 5688024 1601592 5681064 1601624 5681136 1601592 5681216 -1611408 5688288 1657088 5639464 1611488 5688024 1601088 5681704 -1657088 5639464 1611488 5688024 1611408 5688288 1612192 5689088 -1611408 5688288 1612088 5689040 1612192 5689088 1611488 5688024 -1611408 5688288 1611416 5688480 1612088 5689040 1611488 5688024 -1611488 5688024 1601088 5681704 1611408 5688288 1612088 5689040 -1612192 5689088 1657088 5639464 1611488 5688024 1612088 5689040 -1611488 5688024 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1611488 5688024 1612192 5689088 -1601592 5681216 1601160 5681616 1601128 5681664 1611488 5688024 -1611408 5688288 1611488 5688024 1601088 5681704 1611360 5688736 -1657088 5639464 1611488 5688024 1612192 5689088 1612320 5689216 -1611488 5688024 1612088 5689040 1612192 5689088 1612320 5689216 -1657088 5639464 1601592 5681064 1611488 5688024 1612320 5689216 -1657088 5639464 1611488 5688024 1612320 5689216 1663776 5646144 -1657088 5639464 1601592 5681064 1611488 5688024 1663776 5646144 -1612320 5689216 1663880 5646248 1663776 5646144 1611488 5688024 -1611488 5688024 1612192 5689088 1612320 5689216 1663776 5646144 -1657088 5639464 1611488 5688024 1663776 5646144 1663688 5645984 -1601592 5681064 1611488 5688024 1657088 5639464 1601560 5681032 -1611488 5688024 1611480 5687816 1601592 5681064 1601624 5681136 -1611488 5688024 1611480 5687816 1601624 5681136 1601592 5681216 -1611488 5688024 1611480 5687816 1601592 5681216 1601128 5681664 -1611488 5688024 1611480 5687816 1601128 5681664 1601088 5681704 -1611488 5688024 1611480 5687816 1601088 5681704 1611408 5688288 -1611480 5687816 1601128 5681664 1601088 5681704 1611408 5688288 -1611480 5687816 1601592 5681216 1601128 5681664 1601088 5681704 -1611480 5687816 1601624 5681136 1601592 5681216 1601128 5681664 -1611480 5687816 1601592 5681064 1601624 5681136 1601592 5681216 -1611488 5688024 1657088 5639464 1611480 5687816 1611408 5688288 -1657088 5639464 1611480 5687816 1611488 5688024 1663776 5646144 -1611480 5687816 1611408 5688288 1611488 5688024 1663776 5646144 -1611480 5687816 1657088 5639464 1601592 5681064 1601624 5681136 -1657088 5639464 1601592 5681064 1611480 5687816 1663776 5646144 -1601592 5681216 1601160 5681616 1601128 5681664 1611480 5687816 -1601088 5681704 1611360 5688736 1611408 5688288 1611480 5687816 -1611488 5688024 1612320 5689216 1663776 5646144 1611480 5687816 -1611488 5688024 1612320 5689216 1611480 5687816 1611408 5688288 -1663776 5646144 1657088 5639464 1611480 5687816 1612320 5689216 -1612320 5689216 1663880 5646248 1663776 5646144 1611480 5687816 -1663776 5646144 1657088 5639464 1611480 5687816 1663880 5646248 -1612320 5689216 1623296 5701624 1663880 5646248 1611480 5687816 -1612320 5689216 1663880 5646248 1611480 5687816 1611488 5688024 -1611488 5688024 1612192 5689088 1612320 5689216 1611480 5687816 -1611488 5688024 1612088 5689040 1612192 5689088 1611480 5687816 -1611488 5688024 1612192 5689088 1611480 5687816 1611408 5688288 -1612320 5689216 1663880 5646248 1611480 5687816 1612192 5689088 -1657088 5639464 1611480 5687816 1663776 5646144 1663688 5645984 -1601592 5681064 1611480 5687816 1657088 5639464 1601560 5681032 -1657088 5639464 1657056 5639384 1601560 5681032 1611480 5687816 -1601592 5681064 1601624 5681136 1611480 5687816 1601560 5681032 -1611480 5687816 1663776 5646144 1657088 5639464 1601560 5681032 -1601560 5681032 1611456 5687704 1657088 5639464 1657056 5639384 -1657088 5639464 1611456 5687704 1611480 5687816 1663776 5646144 -1657088 5639464 1601560 5681032 1611456 5687704 1663776 5646144 -1611480 5687816 1663880 5646248 1663776 5646144 1611456 5687704 -1611456 5687704 1601560 5681032 1611480 5687816 1663880 5646248 -1663776 5646144 1657088 5639464 1611456 5687704 1663880 5646248 -1611480 5687816 1612320 5689216 1663880 5646248 1611456 5687704 -1663880 5646248 1663776 5646144 1611456 5687704 1612320 5689216 -1611480 5687816 1612320 5689216 1611456 5687704 1601560 5681032 -1612320 5689216 1623296 5701624 1663880 5646248 1611456 5687704 -1611480 5687816 1612192 5689088 1612320 5689216 1611456 5687704 -1611480 5687816 1612192 5689088 1611456 5687704 1601560 5681032 -1612320 5689216 1663880 5646248 1611456 5687704 1612192 5689088 -1611480 5687816 1611488 5688024 1612192 5689088 1611456 5687704 -1657088 5639464 1611456 5687704 1663776 5646144 1663688 5645984 -1611480 5687816 1611456 5687704 1601560 5681032 1601592 5681064 -1611480 5687816 1611456 5687704 1601592 5681064 1601624 5681136 -1611480 5687816 1611456 5687704 1601624 5681136 1601592 5681216 -1611480 5687816 1611456 5687704 1601592 5681216 1601128 5681664 -1611480 5687816 1611456 5687704 1601128 5681664 1601088 5681704 -1611480 5687816 1611456 5687704 1601088 5681704 1611408 5688288 -1611480 5687816 1611456 5687704 1611408 5688288 1611488 5688024 -1611456 5687704 1601128 5681664 1601088 5681704 1611408 5688288 -1611456 5687704 1601592 5681216 1601128 5681664 1601088 5681704 -1611456 5687704 1601624 5681136 1601592 5681216 1601128 5681664 -1611456 5687704 1601592 5681064 1601624 5681136 1601592 5681216 -1611480 5687816 1612192 5689088 1611456 5687704 1611408 5688288 -1611456 5687704 1657088 5639464 1601560 5681032 1601592 5681064 -1601592 5681216 1601160 5681616 1601128 5681664 1611456 5687704 -1601088 5681704 1611360 5688736 1611408 5688288 1611456 5687704 -1611456 5687704 1601560 5681032 1601592 5681064 1601624 5681136 -1657088 5639464 1611264 5687512 1611456 5687704 1663776 5646144 -1601560 5681032 1611264 5687512 1657088 5639464 1657056 5639384 -1611456 5687704 1611264 5687512 1601560 5681032 1601592 5681064 -1611456 5687704 1657088 5639464 1611264 5687512 1601592 5681064 -1611264 5687512 1657088 5639464 1601560 5681032 1601592 5681064 -1611456 5687704 1611264 5687512 1601592 5681064 1601624 5681136 -1611456 5687704 1657088 5639464 1611264 5687512 1601624 5681136 -1611456 5687704 1611264 5687512 1601624 5681136 1601592 5681216 -1611456 5687704 1657088 5639464 1611264 5687512 1601592 5681216 -1611456 5687704 1611264 5687512 1601592 5681216 1601128 5681664 -1611456 5687704 1657088 5639464 1611264 5687512 1601128 5681664 -1611456 5687704 1611264 5687512 1601128 5681664 1601088 5681704 -1611456 5687704 1657088 5639464 1611264 5687512 1601088 5681704 -1611456 5687704 1611264 5687512 1601088 5681704 1611408 5688288 -1611456 5687704 1657088 5639464 1611264 5687512 1611408 5688288 -1611456 5687704 1611264 5687512 1611408 5688288 1611480 5687816 -1611456 5687704 1657088 5639464 1611264 5687512 1611480 5687816 -1611408 5688288 1611488 5688024 1611480 5687816 1611264 5687512 -1611480 5687816 1611456 5687704 1611264 5687512 1611488 5688024 -1611264 5687512 1601088 5681704 1611408 5688288 1611488 5688024 -1611264 5687512 1601128 5681664 1601088 5681704 1611408 5688288 -1611264 5687512 1601592 5681216 1601128 5681664 1601088 5681704 -1611264 5687512 1601624 5681136 1601592 5681216 1601128 5681664 -1611264 5687512 1601560 5681032 1601592 5681064 1601624 5681136 -1601592 5681216 1601160 5681616 1601128 5681664 1611264 5687512 -1601088 5681704 1611360 5688736 1611408 5688288 1611264 5687512 -1601088 5681704 1602016 5695848 1611360 5688736 1611264 5687512 -1602016 5695848 1611360 5688848 1611360 5688736 1611264 5687512 -1611360 5688736 1611416 5688480 1611408 5688288 1611264 5687512 -1611408 5688288 1611488 5688024 1611264 5687512 1611360 5688736 -1601088 5681704 1602016 5695848 1611264 5687512 1601128 5681664 -1611360 5688736 1611408 5688288 1611264 5687512 1602016 5695848 -1601088 5681704 1600992 5681736 1602016 5695848 1611264 5687512 -1611264 5687512 1601592 5681064 1601624 5681136 1601592 5681216 -1611264 5687512 1611224 5687456 1601560 5681032 1601592 5681064 -1611264 5687512 1657088 5639464 1611224 5687456 1601592 5681064 -1657088 5639464 1611224 5687456 1611264 5687512 1611456 5687704 -1657088 5639464 1611224 5687456 1611456 5687704 1663776 5646144 -1611224 5687456 1601592 5681064 1611264 5687512 1611456 5687704 -1611224 5687456 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1611224 5687456 1611456 5687704 -1601560 5681032 1611224 5687456 1657088 5639464 1657056 5639384 -1611264 5687512 1611224 5687456 1601592 5681064 1601624 5681136 -1611224 5687456 1601560 5681032 1601592 5681064 1601624 5681136 -1611264 5687512 1611456 5687704 1611224 5687456 1601624 5681136 -1611264 5687512 1611224 5687456 1601624 5681136 1601592 5681216 -1611264 5687512 1611456 5687704 1611224 5687456 1601592 5681216 -1611264 5687512 1611224 5687456 1601592 5681216 1601128 5681664 -1611264 5687512 1611456 5687704 1611224 5687456 1601128 5681664 -1611264 5687512 1611224 5687456 1601128 5681664 1601088 5681704 -1611264 5687512 1611456 5687704 1611224 5687456 1601088 5681704 -1611264 5687512 1611224 5687456 1601088 5681704 1602016 5695848 -1611264 5687512 1611456 5687704 1611224 5687456 1602016 5695848 -1611264 5687512 1611224 5687456 1602016 5695848 1611360 5688736 -1611264 5687512 1611456 5687704 1611224 5687456 1611360 5688736 -1602016 5695848 1611360 5688848 1611360 5688736 1611224 5687456 -1611360 5688736 1611264 5687512 1611224 5687456 1611360 5688848 -1602016 5695848 1602112 5695896 1611360 5688848 1611224 5687456 -1611224 5687456 1601088 5681704 1602016 5695848 1611360 5688848 -1611224 5687456 1601128 5681664 1601088 5681704 1602016 5695848 -1611224 5687456 1601592 5681216 1601128 5681664 1601088 5681704 -1611224 5687456 1601592 5681064 1601624 5681136 1601592 5681216 -1601592 5681216 1601160 5681616 1601128 5681664 1611224 5687456 -1611264 5687512 1611224 5687456 1611360 5688736 1611408 5688288 -1611264 5687512 1611456 5687704 1611224 5687456 1611408 5688288 -1611224 5687456 1611360 5688848 1611360 5688736 1611408 5688288 -1611360 5688736 1611416 5688480 1611408 5688288 1611224 5687456 -1611264 5687512 1611224 5687456 1611408 5688288 1611488 5688024 -1601088 5681704 1600992 5681736 1602016 5695848 1611224 5687456 -1611224 5687456 1601624 5681136 1601592 5681216 1601128 5681664 -1657088 5639464 1611288 5687432 1611456 5687704 1663776 5646144 -1611456 5687704 1611288 5687432 1611224 5687456 1611264 5687512 -1611288 5687432 1657088 5639464 1611224 5687456 1611264 5687512 -1611224 5687456 1611288 5687432 1657088 5639464 1601560 5681032 -1611224 5687456 1611288 5687432 1601560 5681032 1601592 5681064 -1611224 5687456 1611288 5687432 1601592 5681064 1601624 5681136 -1611288 5687432 1601560 5681032 1601592 5681064 1601624 5681136 -1611224 5687456 1611264 5687512 1611288 5687432 1601624 5681136 -1611288 5687432 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1611288 5687432 1663776 5646144 -1611288 5687432 1611264 5687512 1611456 5687704 1663776 5646144 -1657088 5639464 1657056 5639384 1601560 5681032 1611288 5687432 -1611456 5687704 1663880 5646248 1663776 5646144 1611288 5687432 -1611224 5687456 1611288 5687432 1601624 5681136 1601592 5681216 -1657088 5639464 1611288 5687432 1663776 5646144 1663688 5645984 -1611288 5687432 1611440 5687464 1663776 5646144 1657088 5639464 -1611288 5687432 1611440 5687464 1657088 5639464 1601560 5681032 -1611440 5687464 1663776 5646144 1657088 5639464 1601560 5681032 -1611288 5687432 1611440 5687464 1601560 5681032 1601592 5681064 -1611288 5687432 1611440 5687464 1601592 5681064 1601624 5681136 -1611440 5687464 1657088 5639464 1601560 5681032 1601592 5681064 -1611288 5687432 1611456 5687704 1611440 5687464 1601592 5681064 -1611456 5687704 1611440 5687464 1611288 5687432 1611264 5687512 -1611288 5687432 1611224 5687456 1611264 5687512 1611440 5687464 -1611440 5687464 1601592 5681064 1611288 5687432 1611264 5687512 -1611440 5687464 1611456 5687704 1663776 5646144 1657088 5639464 -1611456 5687704 1663776 5646144 1611440 5687464 1611264 5687512 -1657088 5639464 1657056 5639384 1601560 5681032 1611440 5687464 -1663776 5646144 1611440 5687464 1611456 5687704 1663880 5646248 -1663776 5646144 1657088 5639464 1611440 5687464 1663880 5646248 -1611440 5687464 1611264 5687512 1611456 5687704 1663880 5646248 -1611456 5687704 1612320 5689216 1663880 5646248 1611440 5687464 -1611456 5687704 1612320 5689216 1611440 5687464 1611264 5687512 -1663880 5646248 1663776 5646144 1611440 5687464 1612320 5689216 -1612320 5689216 1623296 5701624 1663880 5646248 1611440 5687464 -1611456 5687704 1612192 5689088 1612320 5689216 1611440 5687464 -1611456 5687704 1612192 5689088 1611440 5687464 1611264 5687512 -1612320 5689216 1663880 5646248 1611440 5687464 1612192 5689088 -1611456 5687704 1611480 5687816 1612192 5689088 1611440 5687464 -1611456 5687704 1611480 5687816 1611440 5687464 1611264 5687512 -1612192 5689088 1612320 5689216 1611440 5687464 1611480 5687816 -1611480 5687816 1611488 5688024 1612192 5689088 1611440 5687464 -1663776 5646144 1663688 5645984 1657088 5639464 1611440 5687464 -1612320 5689216 1611584 5687552 1611440 5687464 1612192 5689088 -1611584 5687552 1663880 5646248 1611440 5687464 1612192 5689088 -1612320 5689216 1663880 5646248 1611584 5687552 1612192 5689088 -1611440 5687464 1611584 5687552 1663880 5646248 1663776 5646144 -1611440 5687464 1611584 5687552 1663776 5646144 1657088 5639464 -1611440 5687464 1611584 5687552 1657088 5639464 1601560 5681032 -1611440 5687464 1612192 5689088 1611584 5687552 1657088 5639464 -1611584 5687552 1612320 5689216 1663880 5646248 1663776 5646144 -1611584 5687552 1663880 5646248 1663776 5646144 1657088 5639464 -1663880 5646248 1611584 5687552 1612320 5689216 1623296 5701624 -1663880 5646248 1611584 5687552 1623296 5701624 1623408 5701720 -1663880 5646248 1663776 5646144 1611584 5687552 1623296 5701624 -1611584 5687552 1612192 5689088 1612320 5689216 1623296 5701624 -1612320 5689216 1612336 5689264 1623296 5701624 1611584 5687552 -1611440 5687464 1611480 5687816 1612192 5689088 1611584 5687552 -1611440 5687464 1611480 5687816 1611584 5687552 1657088 5639464 -1612192 5689088 1612320 5689216 1611584 5687552 1611480 5687816 -1611440 5687464 1611456 5687704 1611480 5687816 1611584 5687552 -1611440 5687464 1611456 5687704 1611584 5687552 1657088 5639464 -1611440 5687464 1611264 5687512 1611456 5687704 1611584 5687552 -1611480 5687816 1612192 5689088 1611584 5687552 1611456 5687704 -1611480 5687816 1611488 5688024 1612192 5689088 1611584 5687552 -1611488 5688024 1612088 5689040 1612192 5689088 1611584 5687552 -1612192 5689088 1612320 5689216 1611584 5687552 1611488 5688024 -1611480 5687816 1611488 5688024 1611584 5687552 1611456 5687704 -1663776 5646144 1663688 5645984 1657088 5639464 1611584 5687552 -1663880 5646248 1611736 5687600 1623296 5701624 1623408 5701720 -1611584 5687552 1611736 5687600 1663880 5646248 1663776 5646144 -1611584 5687552 1623296 5701624 1611736 5687600 1663776 5646144 -1611736 5687600 1623296 5701624 1663880 5646248 1663776 5646144 -1611584 5687552 1611736 5687600 1663776 5646144 1657088 5639464 -1611584 5687552 1611736 5687600 1657088 5639464 1611440 5687464 -1657088 5639464 1601560 5681032 1611440 5687464 1611736 5687600 -1611736 5687600 1663880 5646248 1663776 5646144 1657088 5639464 -1611584 5687552 1623296 5701624 1611736 5687600 1611440 5687464 -1611736 5687600 1663776 5646144 1657088 5639464 1611440 5687464 -1623296 5701624 1611736 5687600 1611584 5687552 1612320 5689216 -1611736 5687600 1611440 5687464 1611584 5687552 1612320 5689216 -1611584 5687552 1612192 5689088 1612320 5689216 1611736 5687600 -1611584 5687552 1612192 5689088 1611736 5687600 1611440 5687464 -1623296 5701624 1663880 5646248 1611736 5687600 1612320 5689216 -1623296 5701624 1611736 5687600 1612320 5689216 1612336 5689264 -1611584 5687552 1611488 5688024 1612192 5689088 1611736 5687600 -1611584 5687552 1611488 5688024 1611736 5687600 1611440 5687464 -1612192 5689088 1612320 5689216 1611736 5687600 1611488 5688024 -1611488 5688024 1612088 5689040 1612192 5689088 1611736 5687600 -1612192 5689088 1612320 5689216 1611736 5687600 1612088 5689040 -1611488 5688024 1611408 5688288 1612088 5689040 1611736 5687600 -1611488 5688024 1612088 5689040 1611736 5687600 1611584 5687552 -1612320 5689216 1623296 5701624 1611736 5687600 1612192 5689088 -1611584 5687552 1611480 5687816 1611488 5688024 1611736 5687600 -1611584 5687552 1611480 5687816 1611736 5687600 1611440 5687464 -1611488 5688024 1612088 5689040 1611736 5687600 1611480 5687816 -1611584 5687552 1611456 5687704 1611480 5687816 1611736 5687600 -1611584 5687552 1611456 5687704 1611736 5687600 1611440 5687464 -1611584 5687552 1611440 5687464 1611456 5687704 1611736 5687600 -1611480 5687816 1611488 5688024 1611736 5687600 1611456 5687704 -1663776 5646144 1663688 5645984 1657088 5639464 1611736 5687600 -1663880 5646248 1611968 5687600 1623296 5701624 1623408 5701720 -1611736 5687600 1611968 5687600 1663880 5646248 1663776 5646144 -1611736 5687600 1611968 5687600 1663776 5646144 1657088 5639464 -1611968 5687600 1663880 5646248 1663776 5646144 1657088 5639464 -1611736 5687600 1623296 5701624 1611968 5687600 1657088 5639464 -1623296 5701624 1611968 5687600 1611736 5687600 1612320 5689216 -1611968 5687600 1657088 5639464 1611736 5687600 1612320 5689216 -1611968 5687600 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1611968 5687600 1612320 5689216 -1623296 5701624 1611968 5687600 1612320 5689216 1612336 5689264 -1611968 5687600 1611736 5687600 1612320 5689216 1612336 5689264 -1623296 5701624 1663880 5646248 1611968 5687600 1612336 5689264 -1611736 5687600 1611968 5687600 1657088 5639464 1611440 5687464 -1657088 5639464 1601560 5681032 1611440 5687464 1611968 5687600 -1601560 5681032 1601592 5681064 1611440 5687464 1611968 5687600 -1601560 5681032 1601592 5681064 1611968 5687600 1657088 5639464 -1601592 5681064 1611288 5687432 1611440 5687464 1611968 5687600 -1611736 5687600 1611968 5687600 1611440 5687464 1611584 5687552 -1611968 5687600 1663776 5646144 1657088 5639464 1601560 5681032 -1611736 5687600 1612320 5689216 1611968 5687600 1611584 5687552 -1657088 5639464 1657056 5639384 1601560 5681032 1611968 5687600 -1611440 5687464 1611584 5687552 1611968 5687600 1601592 5681064 -1623296 5701624 1611968 5687600 1612336 5689264 1623192 5701576 -1623296 5701624 1663880 5646248 1611968 5687600 1623192 5701576 -1611968 5687600 1612320 5689216 1612336 5689264 1623192 5701576 -1612336 5689264 1615200 5695576 1623192 5701576 1611968 5687600 -1611736 5687600 1612192 5689088 1612320 5689216 1611968 5687600 -1611736 5687600 1612088 5689040 1612192 5689088 1611968 5687600 -1611736 5687600 1612088 5689040 1611968 5687600 1611584 5687552 -1612320 5689216 1612336 5689264 1611968 5687600 1612192 5689088 -1611736 5687600 1611488 5688024 1612088 5689040 1611968 5687600 -1612088 5689040 1612192 5689088 1611968 5687600 1611488 5688024 -1611736 5687600 1611488 5688024 1611968 5687600 1611584 5687552 -1611488 5688024 1611408 5688288 1612088 5689040 1611968 5687600 -1611736 5687600 1611480 5687816 1611488 5688024 1611968 5687600 -1612192 5689088 1612320 5689216 1611968 5687600 1612088 5689040 -1663776 5646144 1663688 5645984 1657088 5639464 1611968 5687600 -1663880 5646248 1612112 5687552 1623296 5701624 1623408 5701720 -1611968 5687600 1612112 5687552 1663880 5646248 1663776 5646144 -1611968 5687600 1612112 5687552 1663776 5646144 1657088 5639464 -1611968 5687600 1612112 5687552 1657088 5639464 1601560 5681032 -1611968 5687600 1612112 5687552 1601560 5681032 1601592 5681064 -1611968 5687600 1612112 5687552 1601592 5681064 1611440 5687464 -1612112 5687552 1601560 5681032 1601592 5681064 1611440 5687464 -1601592 5681064 1611288 5687432 1611440 5687464 1612112 5687552 -1601592 5681064 1611288 5687432 1612112 5687552 1601560 5681032 -1601592 5681064 1601624 5681136 1611288 5687432 1612112 5687552 -1611440 5687464 1611968 5687600 1612112 5687552 1611288 5687432 -1612112 5687552 1657088 5639464 1601560 5681032 1601592 5681064 -1612112 5687552 1663776 5646144 1657088 5639464 1601560 5681032 -1612112 5687552 1663880 5646248 1663776 5646144 1657088 5639464 -1611968 5687600 1623296 5701624 1612112 5687552 1611440 5687464 -1623296 5701624 1612112 5687552 1611968 5687600 1623192 5701576 -1612112 5687552 1611440 5687464 1611968 5687600 1623192 5701576 -1612112 5687552 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1612112 5687552 1623192 5701576 -1657088 5639464 1657056 5639384 1601560 5681032 1612112 5687552 -1611968 5687600 1612112 5687552 1611440 5687464 1611584 5687552 -1612112 5687552 1611288 5687432 1611440 5687464 1611584 5687552 -1611968 5687600 1612112 5687552 1611584 5687552 1611736 5687600 -1611968 5687600 1623192 5701576 1612112 5687552 1611736 5687600 -1612112 5687552 1611440 5687464 1611584 5687552 1611736 5687600 -1611968 5687600 1612336 5689264 1623192 5701576 1612112 5687552 -1611968 5687600 1612336 5689264 1612112 5687552 1611736 5687600 -1623192 5701576 1623296 5701624 1612112 5687552 1612336 5689264 -1611968 5687600 1612320 5689216 1612336 5689264 1612112 5687552 -1611968 5687600 1612192 5689088 1612320 5689216 1612112 5687552 -1611968 5687600 1612192 5689088 1612112 5687552 1611736 5687600 -1612320 5689216 1612336 5689264 1612112 5687552 1612192 5689088 -1612336 5689264 1623192 5701576 1612112 5687552 1612320 5689216 -1612336 5689264 1615200 5695576 1623192 5701576 1612112 5687552 -1623192 5701576 1623296 5701624 1612112 5687552 1615200 5695576 -1612336 5689264 1615200 5695576 1612112 5687552 1612320 5689216 -1615200 5695576 1615376 5695816 1623192 5701576 1612112 5687552 -1612336 5689264 1614216 5694264 1615200 5695576 1612112 5687552 -1611968 5687600 1612088 5689040 1612192 5689088 1612112 5687552 -1611968 5687600 1611488 5688024 1612088 5689040 1612112 5687552 -1612192 5689088 1612320 5689216 1612112 5687552 1612088 5689040 -1611968 5687600 1612088 5689040 1612112 5687552 1611736 5687600 -1663776 5646144 1663688 5645984 1657088 5639464 1612112 5687552 -1612112 5687552 1612184 5687456 1601560 5681032 1601592 5681064 -1612112 5687552 1612184 5687456 1601592 5681064 1611288 5687432 -1601592 5681064 1601624 5681136 1611288 5687432 1612184 5687456 -1612112 5687552 1612184 5687456 1611288 5687432 1611440 5687464 -1612184 5687456 1601592 5681064 1611288 5687432 1611440 5687464 -1612112 5687552 1612184 5687456 1611440 5687464 1611584 5687552 -1612184 5687456 1611288 5687432 1611440 5687464 1611584 5687552 -1612184 5687456 1601560 5681032 1601592 5681064 1611288 5687432 -1657088 5639464 1612184 5687456 1612112 5687552 1663776 5646144 -1612112 5687552 1663880 5646248 1663776 5646144 1612184 5687456 -1663776 5646144 1657088 5639464 1612184 5687456 1663880 5646248 -1612112 5687552 1623296 5701624 1663880 5646248 1612184 5687456 -1623296 5701624 1623408 5701720 1663880 5646248 1612184 5687456 -1663880 5646248 1663776 5646144 1612184 5687456 1623296 5701624 -1612112 5687552 1623296 5701624 1612184 5687456 1611584 5687552 -1612112 5687552 1623192 5701576 1623296 5701624 1612184 5687456 -1612112 5687552 1615200 5695576 1623192 5701576 1612184 5687456 -1623296 5701624 1663880 5646248 1612184 5687456 1623192 5701576 -1612112 5687552 1615200 5695576 1612184 5687456 1611584 5687552 -1623192 5701576 1623296 5701624 1612184 5687456 1615200 5695576 -1612184 5687456 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1612184 5687456 1663776 5646144 -1601560 5681032 1612184 5687456 1657088 5639464 1657056 5639384 -1612112 5687552 1612184 5687456 1611584 5687552 1611736 5687600 -1612184 5687456 1611440 5687464 1611584 5687552 1611736 5687600 -1612112 5687552 1612184 5687456 1611736 5687600 1611968 5687600 -1612112 5687552 1615200 5695576 1612184 5687456 1611968 5687600 -1612184 5687456 1611584 5687552 1611736 5687600 1611968 5687600 -1615200 5695576 1615376 5695816 1623192 5701576 1612184 5687456 -1615200 5695576 1615376 5695816 1612184 5687456 1612112 5687552 -1623192 5701576 1623296 5701624 1612184 5687456 1615376 5695816 -1612112 5687552 1612336 5689264 1615200 5695576 1612184 5687456 -1615200 5695576 1615376 5695816 1612184 5687456 1612336 5689264 -1612112 5687552 1612336 5689264 1612184 5687456 1611968 5687600 -1612112 5687552 1612320 5689216 1612336 5689264 1612184 5687456 -1612112 5687552 1612320 5689216 1612184 5687456 1611968 5687600 -1612112 5687552 1612192 5689088 1612320 5689216 1612184 5687456 -1612336 5689264 1615200 5695576 1612184 5687456 1612320 5689216 -1612336 5689264 1614216 5694264 1615200 5695576 1612184 5687456 -1657088 5639464 1612184 5687456 1663776 5646144 1663688 5645984 -1615376 5695816 1615512 5696024 1623192 5701576 1612184 5687456 -1612184 5687456 1612184 5687376 1601560 5681032 1601592 5681064 -1612184 5687456 1612184 5687376 1601592 5681064 1611288 5687432 -1612184 5687456 1612184 5687376 1611288 5687432 1611440 5687464 -1601592 5681064 1601624 5681136 1611288 5687432 1612184 5687376 -1601624 5681136 1611224 5687456 1611288 5687432 1612184 5687376 -1612184 5687456 1612184 5687376 1611440 5687464 1611584 5687552 -1612184 5687376 1611288 5687432 1611440 5687464 1611584 5687552 -1612184 5687456 1612184 5687376 1611584 5687552 1611736 5687600 -1612184 5687376 1611440 5687464 1611584 5687552 1611736 5687600 -1612184 5687376 1601624 5681136 1611288 5687432 1611440 5687464 -1612184 5687376 1601560 5681032 1601592 5681064 1601624 5681136 -1612184 5687456 1657088 5639464 1612184 5687376 1611736 5687600 -1657088 5639464 1612184 5687376 1612184 5687456 1663776 5646144 -1612184 5687456 1663880 5646248 1663776 5646144 1612184 5687376 -1612184 5687456 1623296 5701624 1663880 5646248 1612184 5687376 -1623296 5701624 1623408 5701720 1663880 5646248 1612184 5687376 -1663880 5646248 1663776 5646144 1612184 5687376 1623296 5701624 -1612184 5687456 1623192 5701576 1623296 5701624 1612184 5687376 -1623296 5701624 1663880 5646248 1612184 5687376 1623192 5701576 -1612184 5687456 1615376 5695816 1623192 5701576 1612184 5687376 -1623192 5701576 1623296 5701624 1612184 5687376 1615376 5695816 -1612184 5687376 1611736 5687600 1612184 5687456 1615376 5695816 -1663776 5646144 1657088 5639464 1612184 5687376 1663880 5646248 -1612184 5687376 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1612184 5687376 1663776 5646144 -1601560 5681032 1612184 5687376 1657088 5639464 1657056 5639384 -1612184 5687456 1612184 5687376 1611736 5687600 1611968 5687600 -1612184 5687376 1611584 5687552 1611736 5687600 1611968 5687600 -1612184 5687456 1612184 5687376 1611968 5687600 1612112 5687552 -1612184 5687456 1615376 5695816 1612184 5687376 1612112 5687552 -1612184 5687376 1611736 5687600 1611968 5687600 1612112 5687552 -1612184 5687456 1615200 5695576 1615376 5695816 1612184 5687376 -1612184 5687456 1612336 5689264 1615200 5695576 1612184 5687376 -1615376 5695816 1623192 5701576 1612184 5687376 1615200 5695576 -1612184 5687456 1612336 5689264 1612184 5687376 1612112 5687552 -1615200 5695576 1615376 5695816 1612184 5687376 1612336 5689264 -1612184 5687456 1612320 5689216 1612336 5689264 1612184 5687376 -1612336 5689264 1614216 5694264 1615200 5695576 1612184 5687376 -1657088 5639464 1612184 5687376 1663776 5646144 1663688 5645984 -1615376 5695816 1615512 5696024 1623192 5701576 1612184 5687376 -1612184 5687376 1612096 5687208 1601560 5681032 1601592 5681064 -1612184 5687376 1612096 5687208 1601592 5681064 1601624 5681136 -1612184 5687376 1612096 5687208 1601624 5681136 1611288 5687432 -1601624 5681136 1611224 5687456 1611288 5687432 1612096 5687208 -1612184 5687376 1612096 5687208 1611288 5687432 1611440 5687464 -1612184 5687376 1612096 5687208 1611440 5687464 1611584 5687552 -1612096 5687208 1601624 5681136 1611288 5687432 1611440 5687464 -1612184 5687376 1612096 5687208 1611584 5687552 1611736 5687600 -1612096 5687208 1611440 5687464 1611584 5687552 1611736 5687600 -1612184 5687376 1612096 5687208 1611736 5687600 1611968 5687600 -1612096 5687208 1611584 5687552 1611736 5687600 1611968 5687600 -1612096 5687208 1611288 5687432 1611440 5687464 1611584 5687552 -1612096 5687208 1601592 5681064 1601624 5681136 1611288 5687432 -1612096 5687208 1601560 5681032 1601592 5681064 1601624 5681136 -1612184 5687376 1657088 5639464 1612096 5687208 1611968 5687600 -1657088 5639464 1612096 5687208 1612184 5687376 1663776 5646144 -1612184 5687376 1663880 5646248 1663776 5646144 1612096 5687208 -1612184 5687376 1623296 5701624 1663880 5646248 1612096 5687208 -1612096 5687208 1611968 5687600 1612184 5687376 1663880 5646248 -1663776 5646144 1657088 5639464 1612096 5687208 1663880 5646248 -1612096 5687208 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1612096 5687208 1663776 5646144 -1601560 5681032 1612096 5687208 1657088 5639464 1657056 5639384 -1612184 5687376 1612096 5687208 1611968 5687600 1612112 5687552 -1657088 5639464 1612096 5687208 1663776 5646144 1663688 5645984 -1612096 5687208 1612088 5687168 1601560 5681032 1601592 5681064 -1612096 5687208 1612088 5687168 1601592 5681064 1601624 5681136 -1612096 5687208 1612088 5687168 1601624 5681136 1611288 5687432 -1601624 5681136 1611224 5687456 1611288 5687432 1612088 5687168 -1612096 5687208 1612088 5687168 1611288 5687432 1611440 5687464 -1612096 5687208 1612088 5687168 1611440 5687464 1611584 5687552 -1612096 5687208 1612088 5687168 1611584 5687552 1611736 5687600 -1612088 5687168 1611288 5687432 1611440 5687464 1611584 5687552 -1612088 5687168 1601624 5681136 1611288 5687432 1611440 5687464 -1612088 5687168 1601592 5681064 1601624 5681136 1611288 5687432 -1612088 5687168 1601560 5681032 1601592 5681064 1601624 5681136 -1612096 5687208 1657088 5639464 1612088 5687168 1611584 5687552 -1657088 5639464 1612088 5687168 1612096 5687208 1663776 5646144 -1612096 5687208 1663880 5646248 1663776 5646144 1612088 5687168 -1612096 5687208 1612184 5687376 1663880 5646248 1612088 5687168 -1612184 5687376 1623296 5701624 1663880 5646248 1612088 5687168 -1663880 5646248 1663776 5646144 1612088 5687168 1612184 5687376 -1612088 5687168 1611584 5687552 1612096 5687208 1612184 5687376 -1663776 5646144 1657088 5639464 1612088 5687168 1663880 5646248 -1657088 5639464 1601560 5681032 1612088 5687168 1663776 5646144 -1612088 5687168 1657088 5639464 1601560 5681032 1601592 5681064 -1601560 5681032 1612088 5687168 1657088 5639464 1657056 5639384 -1657088 5639464 1612088 5687168 1663776 5646144 1663688 5645984 -1657088 5639464 1612096 5687136 1612088 5687168 1663776 5646144 -1612088 5687168 1663880 5646248 1663776 5646144 1612096 5687136 -1612088 5687168 1612184 5687376 1663880 5646248 1612096 5687136 -1612184 5687376 1623296 5701624 1663880 5646248 1612096 5687136 -1623296 5701624 1623408 5701720 1663880 5646248 1612096 5687136 -1612184 5687376 1623192 5701576 1623296 5701624 1612096 5687136 -1612088 5687168 1612096 5687208 1612184 5687376 1612096 5687136 -1612184 5687376 1623296 5701624 1612096 5687136 1612096 5687208 -1663880 5646248 1663776 5646144 1612096 5687136 1623296 5701624 -1663776 5646144 1657088 5639464 1612096 5687136 1663880 5646248 -1612096 5687136 1601560 5681032 1612088 5687168 1612096 5687208 -1612088 5687168 1612096 5687136 1601560 5681032 1601592 5681064 -1612088 5687168 1612096 5687136 1601592 5681064 1601624 5681136 -1612088 5687168 1612096 5687136 1601624 5681136 1611288 5687432 -1601624 5681136 1611224 5687456 1611288 5687432 1612096 5687136 -1612088 5687168 1612096 5687136 1611288 5687432 1611440 5687464 -1612088 5687168 1612096 5687136 1611440 5687464 1611584 5687552 -1612096 5687136 1601624 5681136 1611288 5687432 1611440 5687464 -1612096 5687136 1601592 5681064 1601624 5681136 1611288 5687432 -1612088 5687168 1612096 5687208 1612096 5687136 1611440 5687464 -1612096 5687136 1657088 5639464 1601560 5681032 1601592 5681064 -1612096 5687136 1601560 5681032 1601592 5681064 1601624 5681136 -1601560 5681032 1612096 5687136 1657088 5639464 1657056 5639384 -1657088 5639464 1612096 5687136 1663776 5646144 1663688 5645984 -1657088 5639464 1601560 5681032 1612096 5687136 1663776 5646144 -1612096 5687136 1612128 5687096 1601560 5681032 1601592 5681064 -1612096 5687136 1612128 5687096 1601592 5681064 1601624 5681136 -1612096 5687136 1612128 5687096 1601624 5681136 1611288 5687432 -1601624 5681136 1611224 5687456 1611288 5687432 1612128 5687096 -1612096 5687136 1612128 5687096 1611288 5687432 1611440 5687464 -1612128 5687096 1601560 5681032 1601592 5681064 1601624 5681136 -1612128 5687096 1601592 5681064 1601624 5681136 1611288 5687432 -1601560 5681032 1612128 5687096 1657088 5639464 1657056 5639384 -1612096 5687136 1657088 5639464 1612128 5687096 1611288 5687432 -1657088 5639464 1612128 5687096 1612096 5687136 1663776 5646144 -1612096 5687136 1663880 5646248 1663776 5646144 1612128 5687096 -1612096 5687136 1623296 5701624 1663880 5646248 1612128 5687096 -1623296 5701624 1623408 5701720 1663880 5646248 1612128 5687096 -1612096 5687136 1612184 5687376 1623296 5701624 1612128 5687096 -1612184 5687376 1623192 5701576 1623296 5701624 1612128 5687096 -1612096 5687136 1612096 5687208 1612184 5687376 1612128 5687096 -1612184 5687376 1623296 5701624 1612128 5687096 1612096 5687208 -1612096 5687136 1612088 5687168 1612096 5687208 1612128 5687096 -1623296 5701624 1663880 5646248 1612128 5687096 1612184 5687376 -1663880 5646248 1663776 5646144 1612128 5687096 1623296 5701624 -1657088 5639464 1612128 5687096 1663776 5646144 1663688 5645984 -1612128 5687096 1611288 5687432 1612096 5687136 1612096 5687208 -1663776 5646144 1657088 5639464 1612128 5687096 1663880 5646248 -1612128 5687096 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1612128 5687096 1663776 5646144 -1657088 5639464 1612248 5686976 1663776 5646144 1663688 5645984 -1663776 5646144 1612248 5686976 1612128 5687096 1663880 5646248 -1612128 5687096 1623296 5701624 1663880 5646248 1612248 5686976 -1623296 5701624 1623408 5701720 1663880 5646248 1612248 5686976 -1612128 5687096 1612184 5687376 1623296 5701624 1612248 5686976 -1612128 5687096 1612096 5687208 1612184 5687376 1612248 5686976 -1612184 5687376 1623192 5701576 1623296 5701624 1612248 5686976 -1612184 5687376 1615376 5695816 1623192 5701576 1612248 5686976 -1623192 5701576 1623296 5701624 1612248 5686976 1615376 5695816 -1612184 5687376 1615200 5695576 1615376 5695816 1612248 5686976 -1615376 5695816 1623192 5701576 1612248 5686976 1615200 5695576 -1612184 5687376 1615200 5695576 1612248 5686976 1612128 5687096 -1623296 5701624 1663880 5646248 1612248 5686976 1623192 5701576 -1612184 5687376 1612336 5689264 1615200 5695576 1612248 5686976 -1612184 5687376 1612184 5687456 1612336 5689264 1612248 5686976 -1615200 5695576 1615376 5695816 1612248 5686976 1612336 5689264 -1612184 5687376 1612184 5687456 1612248 5686976 1612128 5687096 -1612336 5689264 1615200 5695576 1612248 5686976 1612184 5687456 -1612184 5687456 1612320 5689216 1612336 5689264 1612248 5686976 -1612336 5689264 1614216 5694264 1615200 5695576 1612248 5686976 -1615200 5695576 1615376 5695816 1612248 5686976 1614216 5694264 -1612336 5689264 1614120 5694152 1614216 5694264 1612248 5686976 -1612336 5689264 1614216 5694264 1612248 5686976 1612184 5687456 -1663880 5646248 1663776 5646144 1612248 5686976 1623296 5701624 -1612248 5686976 1657088 5639464 1612128 5687096 1612184 5687376 -1612128 5687096 1612248 5686976 1657088 5639464 1601560 5681032 -1657088 5639464 1657056 5639384 1601560 5681032 1612248 5686976 -1612128 5687096 1612248 5686976 1601560 5681032 1601592 5681064 -1612128 5687096 1612248 5686976 1601592 5681064 1601624 5681136 -1612128 5687096 1612248 5686976 1601624 5681136 1611288 5687432 -1601624 5681136 1611224 5687456 1611288 5687432 1612248 5686976 -1612128 5687096 1612248 5686976 1611288 5687432 1612096 5687136 -1612248 5686976 1601592 5681064 1601624 5681136 1611224 5687456 -1611288 5687432 1612128 5687096 1612248 5686976 1611224 5687456 -1601624 5681136 1601592 5681216 1611224 5687456 1612248 5686976 -1612248 5686976 1601560 5681032 1601592 5681064 1601624 5681136 -1612128 5687096 1612184 5687376 1612248 5686976 1611288 5687432 -1612248 5686976 1657088 5639464 1601560 5681032 1601592 5681064 -1612248 5686976 1663776 5646144 1657088 5639464 1601560 5681032 -1663776 5646144 1657088 5639464 1612248 5686976 1663880 5646248 -1614216 5694264 1615056 5695464 1615200 5695576 1612248 5686976 -1615376 5695816 1615512 5696024 1623192 5701576 1612248 5686976 -1601560 5681032 1612296 5686888 1657088 5639464 1657056 5639384 -1612248 5686976 1612296 5686888 1601560 5681032 1601592 5681064 -1612248 5686976 1612296 5686888 1601592 5681064 1601624 5681136 -1612248 5686976 1612296 5686888 1601624 5681136 1611224 5687456 -1612248 5686976 1612296 5686888 1611224 5687456 1611288 5687432 -1612296 5686888 1601624 5681136 1611224 5687456 1611288 5687432 -1612248 5686976 1612296 5686888 1611288 5687432 1612128 5687096 -1612296 5686888 1611224 5687456 1611288 5687432 1612128 5687096 -1611288 5687432 1612096 5687136 1612128 5687096 1612296 5686888 -1601624 5681136 1601592 5681216 1611224 5687456 1612296 5686888 -1612296 5686888 1601592 5681064 1601624 5681136 1611224 5687456 -1612296 5686888 1601560 5681032 1601592 5681064 1601624 5681136 -1657088 5639464 1612296 5686888 1612248 5686976 1663776 5646144 -1657088 5639464 1612296 5686888 1663776 5646144 1663688 5645984 -1612248 5686976 1663776 5646144 1612296 5686888 1612128 5687096 -1612248 5686976 1663880 5646248 1663776 5646144 1612296 5686888 -1612248 5686976 1623296 5701624 1663880 5646248 1612296 5686888 -1623296 5701624 1623408 5701720 1663880 5646248 1612296 5686888 -1612248 5686976 1623192 5701576 1623296 5701624 1612296 5686888 -1612248 5686976 1615376 5695816 1623192 5701576 1612296 5686888 -1612248 5686976 1615200 5695576 1615376 5695816 1612296 5686888 -1615376 5695816 1623192 5701576 1612296 5686888 1615200 5695576 -1612248 5686976 1614216 5694264 1615200 5695576 1612296 5686888 -1615200 5695576 1615376 5695816 1612296 5686888 1614216 5694264 -1623192 5701576 1623296 5701624 1612296 5686888 1615376 5695816 -1612248 5686976 1612336 5689264 1614216 5694264 1612296 5686888 -1614216 5694264 1615200 5695576 1612296 5686888 1612336 5689264 -1612336 5689264 1614120 5694152 1614216 5694264 1612296 5686888 -1612248 5686976 1612184 5687456 1612336 5689264 1612296 5686888 -1612248 5686976 1612184 5687376 1612184 5687456 1612296 5686888 -1612248 5686976 1612128 5687096 1612184 5687376 1612296 5686888 -1612184 5687456 1612336 5689264 1612296 5686888 1612184 5687376 -1612184 5687456 1612320 5689216 1612336 5689264 1612296 5686888 -1612336 5689264 1614216 5694264 1612296 5686888 1612184 5687456 -1623296 5701624 1663880 5646248 1612296 5686888 1623192 5701576 -1663776 5646144 1657088 5639464 1612296 5686888 1663880 5646248 -1612248 5686976 1612184 5687376 1612296 5686888 1612128 5687096 -1663880 5646248 1663776 5646144 1612296 5686888 1623296 5701624 -1612296 5686888 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1612296 5686888 1663776 5646144 -1614216 5694264 1615056 5695464 1615200 5695576 1612296 5686888 -1615376 5695816 1615512 5696024 1623192 5701576 1612296 5686888 -1601560 5681032 1612304 5686856 1657088 5639464 1657056 5639384 -1612296 5686888 1612304 5686856 1601560 5681032 1601592 5681064 -1612296 5686888 1612304 5686856 1601592 5681064 1601624 5681136 -1612296 5686888 1612304 5686856 1601624 5681136 1611224 5687456 -1612296 5686888 1612304 5686856 1611224 5687456 1611288 5687432 -1612296 5686888 1612304 5686856 1611288 5687432 1612128 5687096 -1611288 5687432 1612096 5687136 1612128 5687096 1612304 5686856 -1612304 5686856 1611224 5687456 1611288 5687432 1612128 5687096 -1612296 5686888 1612304 5686856 1612128 5687096 1612248 5686976 -1612304 5686856 1611288 5687432 1612128 5687096 1612248 5686976 -1601624 5681136 1601592 5681216 1611224 5687456 1612304 5686856 -1612304 5686856 1601624 5681136 1611224 5687456 1611288 5687432 -1612304 5686856 1601592 5681064 1601624 5681136 1611224 5687456 -1612304 5686856 1601560 5681032 1601592 5681064 1601624 5681136 -1612296 5686888 1657088 5639464 1612304 5686856 1612248 5686976 -1657088 5639464 1612304 5686856 1612296 5686888 1663776 5646144 -1657088 5639464 1612304 5686856 1663776 5646144 1663688 5645984 -1612296 5686888 1663880 5646248 1663776 5646144 1612304 5686856 -1612296 5686888 1623296 5701624 1663880 5646248 1612304 5686856 -1623296 5701624 1623408 5701720 1663880 5646248 1612304 5686856 -1612296 5686888 1623192 5701576 1623296 5701624 1612304 5686856 -1612296 5686888 1615376 5695816 1623192 5701576 1612304 5686856 -1612296 5686888 1615200 5695576 1615376 5695816 1612304 5686856 -1612296 5686888 1614216 5694264 1615200 5695576 1612304 5686856 -1615200 5695576 1615376 5695816 1612304 5686856 1614216 5694264 -1612296 5686888 1612336 5689264 1614216 5694264 1612304 5686856 -1614216 5694264 1615200 5695576 1612304 5686856 1612336 5689264 -1615376 5695816 1623192 5701576 1612304 5686856 1615200 5695576 -1612336 5689264 1614120 5694152 1614216 5694264 1612304 5686856 -1612296 5686888 1612184 5687456 1612336 5689264 1612304 5686856 -1623192 5701576 1623296 5701624 1612304 5686856 1615376 5695816 -1663880 5646248 1663776 5646144 1612304 5686856 1623296 5701624 -1623296 5701624 1663880 5646248 1612304 5686856 1623192 5701576 -1612304 5686856 1612248 5686976 1612296 5686888 1612336 5689264 -1663776 5646144 1657088 5639464 1612304 5686856 1663880 5646248 -1612304 5686856 1657088 5639464 1601560 5681032 1601592 5681064 -1657088 5639464 1601560 5681032 1612304 5686856 1663776 5646144 -1614216 5694264 1615056 5695464 1615200 5695576 1612304 5686856 -1615376 5695816 1615512 5696024 1623192 5701576 1612304 5686856 -1601560 5681032 1612280 5686776 1657088 5639464 1657056 5639384 -1601560 5681032 1612280 5686776 1657056 5639384 1601464 5680984 -1612304 5686856 1612280 5686776 1601560 5681032 1601592 5681064 -1612304 5686856 1612280 5686776 1601592 5681064 1601624 5681136 -1612304 5686856 1612280 5686776 1601624 5681136 1611224 5687456 -1601624 5681136 1601592 5681216 1611224 5687456 1612280 5686776 -1612304 5686856 1612280 5686776 1611224 5687456 1611288 5687432 -1612304 5686856 1612280 5686776 1611288 5687432 1612128 5687096 -1612304 5686856 1612280 5686776 1612128 5687096 1612248 5686976 -1611288 5687432 1612096 5687136 1612128 5687096 1612280 5686776 -1612280 5686776 1611288 5687432 1612128 5687096 1612248 5686976 -1612304 5686856 1612280 5686776 1612248 5686976 1612296 5686888 -1612280 5686776 1612128 5687096 1612248 5686976 1612296 5686888 -1612280 5686776 1611224 5687456 1611288 5687432 1612128 5687096 -1612280 5686776 1601624 5681136 1611224 5687456 1611288 5687432 -1612280 5686776 1601592 5681064 1601624 5681136 1611224 5687456 -1612280 5686776 1601560 5681032 1601592 5681064 1601624 5681136 -1612304 5686856 1657088 5639464 1612280 5686776 1612296 5686888 -1657088 5639464 1612280 5686776 1612304 5686856 1663776 5646144 -1657088 5639464 1612280 5686776 1663776 5646144 1663688 5645984 -1612304 5686856 1663880 5646248 1663776 5646144 1612280 5686776 -1612304 5686856 1623296 5701624 1663880 5646248 1612280 5686776 -1623296 5701624 1623408 5701720 1663880 5646248 1612280 5686776 -1612304 5686856 1623192 5701576 1623296 5701624 1612280 5686776 -1663880 5646248 1663776 5646144 1612280 5686776 1623296 5701624 -1612280 5686776 1612296 5686888 1612304 5686856 1623296 5701624 -1663776 5646144 1657088 5639464 1612280 5686776 1663880 5646248 -1601560 5681032 1601592 5681064 1612280 5686776 1657056 5639384 -1612280 5686776 1663776 5646144 1657088 5639464 1657056 5639384 -1657056 5639384 1612216 5686664 1612280 5686776 1657088 5639464 -1601560 5681032 1612216 5686664 1657056 5639384 1601464 5680984 -1657056 5639384 1601560 5681032 1612216 5686664 1657088 5639464 -1612280 5686776 1612216 5686664 1601560 5681032 1601592 5681064 -1612280 5686776 1612216 5686664 1601592 5681064 1601624 5681136 -1612280 5686776 1612216 5686664 1601624 5681136 1611224 5687456 -1601624 5681136 1601592 5681216 1611224 5687456 1612216 5686664 -1612280 5686776 1612216 5686664 1611224 5687456 1611288 5687432 -1612280 5686776 1612216 5686664 1611288 5687432 1612128 5687096 -1611288 5687432 1612096 5687136 1612128 5687096 1612216 5686664 -1611288 5687432 1611440 5687464 1612096 5687136 1612216 5686664 -1612280 5686776 1612216 5686664 1612128 5687096 1612248 5686976 -1612280 5686776 1612216 5686664 1612248 5686976 1612296 5686888 -1612128 5687096 1612248 5686976 1612216 5686664 1612096 5687136 -1612216 5686664 1611224 5687456 1611288 5687432 1612096 5687136 -1612216 5686664 1601624 5681136 1611224 5687456 1611288 5687432 -1612216 5686664 1601592 5681064 1601624 5681136 1611224 5687456 -1612216 5686664 1601560 5681032 1601592 5681064 1601624 5681136 -1612216 5686664 1612248 5686976 1612280 5686776 1657088 5639464 -1612280 5686776 1663776 5646144 1657088 5639464 1612216 5686664 -1657088 5639464 1657056 5639384 1612216 5686664 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1612216 5686664 -1612280 5686776 1663880 5646248 1663776 5646144 1612216 5686664 -1612280 5686776 1623296 5701624 1663880 5646248 1612216 5686664 -1612280 5686776 1663880 5646248 1612216 5686664 1612248 5686976 -1663776 5646144 1657088 5639464 1612216 5686664 1663880 5646248 -1612216 5686664 1657056 5639384 1601560 5681032 1601592 5681064 -1601560 5681032 1612216 5686496 1657056 5639384 1601464 5680984 -1657056 5639384 1612216 5686496 1612216 5686664 1657088 5639464 -1612216 5686664 1663776 5646144 1657088 5639464 1612216 5686496 -1663776 5646144 1663688 5645984 1657088 5639464 1612216 5686496 -1612216 5686496 1601560 5681032 1612216 5686664 1663776 5646144 -1657088 5639464 1657056 5639384 1612216 5686496 1663776 5646144 -1657056 5639384 1601560 5681032 1612216 5686496 1657088 5639464 -1612216 5686664 1663880 5646248 1663776 5646144 1612216 5686496 -1663776 5646144 1657088 5639464 1612216 5686496 1663880 5646248 -1612216 5686664 1663880 5646248 1612216 5686496 1601560 5681032 -1612216 5686664 1612280 5686776 1663880 5646248 1612216 5686496 -1612280 5686776 1623296 5701624 1663880 5646248 1612216 5686496 -1623296 5701624 1623408 5701720 1663880 5646248 1612216 5686496 -1612280 5686776 1612304 5686856 1623296 5701624 1612216 5686496 -1612304 5686856 1623192 5701576 1623296 5701624 1612216 5686496 -1623296 5701624 1663880 5646248 1612216 5686496 1612304 5686856 -1612216 5686664 1612280 5686776 1612216 5686496 1601560 5681032 -1612280 5686776 1612304 5686856 1612216 5686496 1612216 5686664 -1663880 5646248 1663776 5646144 1612216 5686496 1623296 5701624 -1612216 5686664 1612216 5686496 1601560 5681032 1601592 5681064 -1612216 5686664 1612280 5686776 1612216 5686496 1601592 5681064 -1612216 5686496 1657056 5639384 1601560 5681032 1601592 5681064 -1612216 5686664 1612216 5686496 1601592 5681064 1601624 5681136 -1612216 5686664 1612280 5686776 1612216 5686496 1601624 5681136 -1612216 5686664 1612216 5686496 1601624 5681136 1611224 5687456 -1601624 5681136 1601592 5681216 1611224 5687456 1612216 5686496 -1612216 5686664 1612216 5686496 1611224 5687456 1611288 5687432 -1612216 5686664 1612216 5686496 1611288 5687432 1612096 5687136 -1612216 5686664 1612280 5686776 1612216 5686496 1611288 5687432 -1612216 5686496 1601624 5681136 1611224 5687456 1611288 5687432 -1612216 5686496 1601592 5681064 1601624 5681136 1611224 5687456 -1612216 5686496 1601560 5681032 1601592 5681064 1601624 5681136 -1663880 5646248 1612272 5686464 1623296 5701624 1623408 5701720 -1623296 5701624 1612272 5686464 1612216 5686496 1612304 5686856 -1612216 5686496 1612280 5686776 1612304 5686856 1612272 5686464 -1623296 5701624 1612272 5686464 1612304 5686856 1623192 5701576 -1612304 5686856 1615376 5695816 1623192 5701576 1612272 5686464 -1612304 5686856 1623192 5701576 1612272 5686464 1612280 5686776 -1612272 5686464 1663880 5646248 1612216 5686496 1612280 5686776 -1612216 5686496 1612216 5686664 1612280 5686776 1612272 5686464 -1612280 5686776 1612304 5686856 1612272 5686464 1612216 5686664 -1612216 5686496 1612216 5686664 1612272 5686464 1663880 5646248 -1612216 5686496 1612272 5686464 1663880 5646248 1663776 5646144 -1612216 5686496 1612272 5686464 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1612272 5686464 -1612216 5686496 1612272 5686464 1657088 5639464 1657056 5639384 -1612272 5686464 1663776 5646144 1657088 5639464 1657056 5639384 -1612216 5686496 1612216 5686664 1612272 5686464 1657056 5639384 -1612216 5686496 1612272 5686464 1657056 5639384 1601560 5681032 -1657056 5639384 1601464 5680984 1601560 5681032 1612272 5686464 -1612272 5686464 1657088 5639464 1657056 5639384 1601560 5681032 -1612216 5686496 1612272 5686464 1601560 5681032 1601592 5681064 -1612216 5686496 1612216 5686664 1612272 5686464 1601592 5681064 -1612272 5686464 1657056 5639384 1601560 5681032 1601592 5681064 -1612272 5686464 1623296 5701624 1663880 5646248 1663776 5646144 -1612272 5686464 1663880 5646248 1663776 5646144 1657088 5639464 -1612216 5686496 1612272 5686464 1601592 5681064 1601624 5681136 -1612272 5686464 1601560 5681032 1601592 5681064 1601624 5681136 -1612216 5686496 1612216 5686664 1612272 5686464 1601624 5681136 -1612216 5686496 1612272 5686464 1601624 5681136 1611224 5687456 -1623296 5701624 1663880 5646248 1612272 5686464 1623192 5701576 -1663880 5646248 1612336 5686456 1623296 5701624 1623408 5701720 -1612272 5686464 1612336 5686456 1663880 5646248 1663776 5646144 -1612272 5686464 1612336 5686456 1663776 5646144 1657088 5639464 -1612272 5686464 1612336 5686456 1657088 5639464 1657056 5639384 -1663776 5646144 1663688 5645984 1657088 5639464 1612336 5686456 -1612272 5686464 1612336 5686456 1657056 5639384 1601560 5681032 -1612336 5686456 1657088 5639464 1657056 5639384 1601560 5681032 -1657056 5639384 1601464 5680984 1601560 5681032 1612336 5686456 -1612272 5686464 1612336 5686456 1601560 5681032 1601592 5681064 -1612336 5686456 1657056 5639384 1601560 5681032 1601592 5681064 -1612272 5686464 1612336 5686456 1601592 5681064 1601624 5681136 -1612336 5686456 1663880 5646248 1663776 5646144 1657088 5639464 -1612336 5686456 1663776 5646144 1657088 5639464 1657056 5639384 -1612336 5686456 1623296 5701624 1663880 5646248 1663776 5646144 -1612272 5686464 1623296 5701624 1612336 5686456 1601592 5681064 -1623296 5701624 1612336 5686456 1612272 5686464 1623192 5701576 -1612272 5686464 1612304 5686856 1623192 5701576 1612336 5686456 -1612304 5686856 1615376 5695816 1623192 5701576 1612336 5686456 -1612304 5686856 1615200 5695576 1615376 5695816 1612336 5686456 -1612304 5686856 1614216 5694264 1615200 5695576 1612336 5686456 -1615376 5695816 1623192 5701576 1612336 5686456 1615200 5695576 -1612304 5686856 1615200 5695576 1612336 5686456 1612272 5686464 -1612272 5686464 1612280 5686776 1612304 5686856 1612336 5686456 -1612272 5686464 1612216 5686664 1612280 5686776 1612336 5686456 -1612304 5686856 1615200 5695576 1612336 5686456 1612280 5686776 -1612280 5686776 1612304 5686856 1612336 5686456 1612216 5686664 -1612272 5686464 1612216 5686496 1612216 5686664 1612336 5686456 -1623296 5701624 1663880 5646248 1612336 5686456 1623192 5701576 -1612336 5686456 1601592 5681064 1612272 5686464 1612216 5686664 -1623192 5701576 1623296 5701624 1612336 5686456 1615376 5695816 -1615376 5695816 1615512 5696024 1623192 5701576 1612336 5686456 -1615376 5695816 1612352 5686496 1612336 5686456 1615200 5695576 -1615376 5695816 1623192 5701576 1612352 5686496 1615200 5695576 -1612336 5686456 1612304 5686856 1615200 5695576 1612352 5686496 -1612304 5686856 1614216 5694264 1615200 5695576 1612352 5686496 -1612304 5686856 1612336 5689264 1614216 5694264 1612352 5686496 -1614216 5694264 1615200 5695576 1612352 5686496 1612336 5689264 -1612304 5686856 1612296 5686888 1612336 5689264 1612352 5686496 -1612304 5686856 1612336 5689264 1612352 5686496 1612336 5686456 -1612336 5689264 1614120 5694152 1614216 5694264 1612352 5686496 -1615200 5695576 1615376 5695816 1612352 5686496 1614216 5694264 -1612336 5686456 1612280 5686776 1612304 5686856 1612352 5686496 -1612304 5686856 1612336 5689264 1612352 5686496 1612280 5686776 -1612336 5686456 1612216 5686664 1612280 5686776 1612352 5686496 -1612336 5686456 1612272 5686464 1612216 5686664 1612352 5686496 -1612280 5686776 1612304 5686856 1612352 5686496 1612216 5686664 -1612216 5686664 1612280 5686776 1612352 5686496 1612272 5686464 -1612272 5686464 1612216 5686496 1612216 5686664 1612352 5686496 -1612272 5686464 1612216 5686496 1612352 5686496 1612336 5686456 -1612216 5686664 1612280 5686776 1612352 5686496 1612216 5686496 -1612352 5686496 1623192 5701576 1612336 5686456 1612272 5686464 -1612336 5686456 1612352 5686496 1623192 5701576 1623296 5701624 -1612352 5686496 1615376 5695816 1623192 5701576 1623296 5701624 -1612336 5686456 1612272 5686464 1612352 5686496 1623296 5701624 -1612336 5686456 1612352 5686496 1623296 5701624 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1612352 5686496 -1612336 5686456 1612352 5686496 1663880 5646248 1663776 5646144 -1612336 5686456 1612272 5686464 1612352 5686496 1663880 5646248 -1612352 5686496 1623192 5701576 1623296 5701624 1663880 5646248 -1614216 5694264 1615056 5695464 1615200 5695576 1612352 5686496 -1623192 5701576 1612352 5686496 1615376 5695816 1615512 5696024 -1663880 5646248 1612448 5686536 1623296 5701624 1623408 5701720 -1612352 5686496 1612448 5686536 1663880 5646248 1612336 5686456 -1612352 5686496 1623296 5701624 1612448 5686536 1612336 5686456 -1612448 5686536 1623296 5701624 1663880 5646248 1612336 5686456 -1663880 5646248 1663776 5646144 1612336 5686456 1612448 5686536 -1663880 5646248 1663776 5646144 1612448 5686536 1623296 5701624 -1663776 5646144 1657088 5639464 1612336 5686456 1612448 5686536 -1663776 5646144 1663688 5645984 1657088 5639464 1612448 5686536 -1657088 5639464 1657056 5639384 1612336 5686456 1612448 5686536 -1663776 5646144 1657088 5639464 1612448 5686536 1663880 5646248 -1612336 5686456 1612352 5686496 1612448 5686536 1657088 5639464 -1623296 5701624 1612448 5686536 1612352 5686496 1623192 5701576 -1612352 5686496 1615376 5695816 1623192 5701576 1612448 5686536 -1612448 5686536 1612336 5686456 1612352 5686496 1615376 5695816 -1612352 5686496 1615200 5695576 1615376 5695816 1612448 5686536 -1615376 5695816 1623192 5701576 1612448 5686536 1615200 5695576 -1612352 5686496 1615200 5695576 1612448 5686536 1612336 5686456 -1623296 5701624 1663880 5646248 1612448 5686536 1623192 5701576 -1612352 5686496 1614216 5694264 1615200 5695576 1612448 5686536 -1612352 5686496 1614216 5694264 1612448 5686536 1612336 5686456 -1615200 5695576 1615376 5695816 1612448 5686536 1614216 5694264 -1612352 5686496 1612336 5689264 1614216 5694264 1612448 5686536 -1612352 5686496 1612336 5689264 1612448 5686536 1612336 5686456 -1612352 5686496 1612304 5686856 1612336 5689264 1612448 5686536 -1612352 5686496 1612304 5686856 1612448 5686536 1612336 5686456 -1612336 5689264 1614216 5694264 1612448 5686536 1612304 5686856 -1612304 5686856 1612296 5686888 1612336 5689264 1612448 5686536 -1612336 5689264 1614216 5694264 1612448 5686536 1612296 5686888 -1612304 5686856 1612296 5686888 1612448 5686536 1612352 5686496 -1612352 5686496 1612280 5686776 1612304 5686856 1612448 5686536 -1612352 5686496 1612280 5686776 1612448 5686536 1612336 5686456 -1612304 5686856 1612296 5686888 1612448 5686536 1612280 5686776 -1612336 5689264 1614120 5694152 1614216 5694264 1612448 5686536 -1612296 5686888 1612184 5687456 1612336 5689264 1612448 5686536 -1612336 5689264 1614216 5694264 1612448 5686536 1612184 5687456 -1612296 5686888 1612184 5687456 1612448 5686536 1612304 5686856 -1612296 5686888 1612184 5687376 1612184 5687456 1612448 5686536 -1612184 5687456 1612320 5689216 1612336 5689264 1612448 5686536 -1614216 5694264 1615200 5695576 1612448 5686536 1612336 5689264 -1612352 5686496 1612216 5686664 1612280 5686776 1612448 5686536 -1612352 5686496 1612216 5686664 1612448 5686536 1612336 5686456 -1612280 5686776 1612304 5686856 1612448 5686536 1612216 5686664 -1612352 5686496 1612216 5686496 1612216 5686664 1612448 5686536 -1623192 5701576 1623296 5701624 1612448 5686536 1615376 5695816 -1614216 5694264 1615056 5695464 1615200 5695576 1612448 5686536 -1615376 5695816 1615512 5696024 1623192 5701576 1612448 5686536 -1612448 5686536 1612488 5686576 1663880 5646248 1663776 5646144 -1612448 5686536 1623296 5701624 1612488 5686576 1663776 5646144 -1623296 5701624 1612488 5686576 1612448 5686536 1623192 5701576 -1612488 5686576 1663776 5646144 1612448 5686536 1623192 5701576 -1612488 5686576 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1612488 5686576 1623192 5701576 -1663880 5646248 1612488 5686576 1623296 5701624 1623408 5701720 -1612448 5686536 1612488 5686576 1663776 5646144 1657088 5639464 -1612488 5686576 1663880 5646248 1663776 5646144 1657088 5639464 -1612448 5686536 1623192 5701576 1612488 5686576 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1612488 5686576 -1612448 5686536 1612488 5686576 1657088 5639464 1612336 5686456 -1612448 5686536 1615376 5695816 1623192 5701576 1612488 5686576 -1612448 5686536 1615200 5695576 1615376 5695816 1612488 5686576 -1612448 5686536 1614216 5694264 1615200 5695576 1612488 5686576 -1615200 5695576 1615376 5695816 1612488 5686576 1614216 5694264 -1612448 5686536 1614216 5694264 1612488 5686576 1657088 5639464 -1623192 5701576 1623296 5701624 1612488 5686576 1615376 5695816 -1612448 5686536 1612336 5689264 1614216 5694264 1612488 5686576 -1614216 5694264 1615200 5695576 1612488 5686576 1612336 5689264 -1612448 5686536 1612336 5689264 1612488 5686576 1657088 5639464 -1612448 5686536 1612184 5687456 1612336 5689264 1612488 5686576 -1612448 5686536 1612184 5687456 1612488 5686576 1657088 5639464 -1612336 5689264 1614120 5694152 1614216 5694264 1612488 5686576 -1612184 5687456 1612320 5689216 1612336 5689264 1612488 5686576 -1612184 5687456 1612320 5689216 1612488 5686576 1612448 5686536 -1612184 5687456 1612112 5687552 1612320 5689216 1612488 5686576 -1612448 5686536 1612296 5686888 1612184 5687456 1612488 5686576 -1612448 5686536 1612296 5686888 1612488 5686576 1657088 5639464 -1612184 5687456 1612320 5689216 1612488 5686576 1612296 5686888 -1612448 5686536 1612304 5686856 1612296 5686888 1612488 5686576 -1612448 5686536 1612304 5686856 1612488 5686576 1657088 5639464 -1612448 5686536 1612280 5686776 1612304 5686856 1612488 5686576 -1612448 5686536 1612280 5686776 1612488 5686576 1657088 5639464 -1612304 5686856 1612296 5686888 1612488 5686576 1612280 5686776 -1612448 5686536 1612216 5686664 1612280 5686776 1612488 5686576 -1612296 5686888 1612184 5687376 1612184 5687456 1612488 5686576 -1612296 5686888 1612184 5687456 1612488 5686576 1612304 5686856 -1612336 5689264 1614216 5694264 1612488 5686576 1612320 5689216 -1615376 5695816 1623192 5701576 1612488 5686576 1615200 5695576 -1614216 5694264 1615056 5695464 1615200 5695576 1612488 5686576 -1615376 5695816 1615512 5696024 1623192 5701576 1612488 5686576 -1612488 5686576 1612632 5686728 1663880 5646248 1663776 5646144 -1612488 5686576 1612632 5686728 1663776 5646144 1657088 5639464 -1612632 5686728 1663880 5646248 1663776 5646144 1657088 5639464 -1612488 5686576 1623296 5701624 1612632 5686728 1657088 5639464 -1623296 5701624 1612632 5686728 1612488 5686576 1623192 5701576 -1612488 5686576 1615376 5695816 1623192 5701576 1612632 5686728 -1612632 5686728 1657088 5639464 1612488 5686576 1615376 5695816 -1623192 5701576 1623296 5701624 1612632 5686728 1615376 5695816 -1612632 5686728 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1612632 5686728 1623192 5701576 -1663880 5646248 1612632 5686728 1623296 5701624 1623408 5701720 -1663776 5646144 1663688 5645984 1657088 5639464 1612632 5686728 -1612488 5686576 1612632 5686728 1657088 5639464 1612448 5686536 -1612488 5686576 1615200 5695576 1615376 5695816 1612632 5686728 -1612488 5686576 1614216 5694264 1615200 5695576 1612632 5686728 -1612488 5686576 1612336 5689264 1614216 5694264 1612632 5686728 -1614216 5694264 1615200 5695576 1612632 5686728 1612336 5689264 -1615376 5695816 1623192 5701576 1612632 5686728 1615200 5695576 -1612488 5686576 1612336 5689264 1612632 5686728 1657088 5639464 -1612336 5689264 1614120 5694152 1614216 5694264 1612632 5686728 -1612488 5686576 1612320 5689216 1612336 5689264 1612632 5686728 -1612336 5689264 1614216 5694264 1612632 5686728 1612320 5689216 -1612488 5686576 1612320 5689216 1612632 5686728 1657088 5639464 -1612488 5686576 1612184 5687456 1612320 5689216 1612632 5686728 -1612488 5686576 1612184 5687456 1612632 5686728 1657088 5639464 -1612488 5686576 1612296 5686888 1612184 5687456 1612632 5686728 -1612488 5686576 1612296 5686888 1612632 5686728 1657088 5639464 -1612184 5687456 1612112 5687552 1612320 5689216 1612632 5686728 -1612296 5686888 1612184 5687376 1612184 5687456 1612632 5686728 -1612296 5686888 1612184 5687376 1612632 5686728 1612488 5686576 -1612296 5686888 1612248 5686976 1612184 5687376 1612632 5686728 -1612296 5686888 1612248 5686976 1612632 5686728 1612488 5686576 -1612248 5686976 1612128 5687096 1612184 5687376 1612632 5686728 -1612184 5687376 1612184 5687456 1612632 5686728 1612248 5686976 -1612184 5687456 1612320 5689216 1612632 5686728 1612184 5687376 -1612488 5686576 1612304 5686856 1612296 5686888 1612632 5686728 -1612488 5686576 1612304 5686856 1612632 5686728 1657088 5639464 -1612296 5686888 1612248 5686976 1612632 5686728 1612304 5686856 -1612488 5686576 1612280 5686776 1612304 5686856 1612632 5686728 -1612488 5686576 1612280 5686776 1612632 5686728 1657088 5639464 -1612488 5686576 1612448 5686536 1612280 5686776 1612632 5686728 -1612304 5686856 1612296 5686888 1612632 5686728 1612280 5686776 -1612320 5689216 1612336 5689264 1612632 5686728 1612184 5687456 -1615200 5695576 1615376 5695816 1612632 5686728 1614216 5694264 -1614216 5694264 1615056 5695464 1615200 5695576 1612632 5686728 -1615376 5695816 1615512 5696024 1623192 5701576 1612632 5686728 -1612632 5686728 1612704 5686768 1663880 5646248 1663776 5646144 -1612632 5686728 1612704 5686768 1663776 5646144 1657088 5639464 -1612632 5686728 1612704 5686768 1657088 5639464 1612488 5686576 -1612704 5686768 1663776 5646144 1657088 5639464 1612488 5686576 -1612704 5686768 1663880 5646248 1663776 5646144 1657088 5639464 -1612632 5686728 1623296 5701624 1612704 5686768 1612488 5686576 -1623296 5701624 1612704 5686768 1612632 5686728 1623192 5701576 -1612632 5686728 1615376 5695816 1623192 5701576 1612704 5686768 -1612632 5686728 1615200 5695576 1615376 5695816 1612704 5686768 -1615376 5695816 1623192 5701576 1612704 5686768 1615200 5695576 -1612704 5686768 1612488 5686576 1612632 5686728 1615200 5695576 -1623192 5701576 1623296 5701624 1612704 5686768 1615376 5695816 -1612704 5686768 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1612704 5686768 1623192 5701576 -1663880 5646248 1612704 5686768 1623296 5701624 1623408 5701720 -1663776 5646144 1663688 5645984 1657088 5639464 1612704 5686768 -1657088 5639464 1612448 5686536 1612488 5686576 1612704 5686768 -1612488 5686576 1612632 5686728 1612704 5686768 1612448 5686536 -1657088 5639464 1612448 5686536 1612704 5686768 1663776 5646144 -1657088 5639464 1612336 5686456 1612448 5686536 1612704 5686768 -1612632 5686728 1614216 5694264 1615200 5695576 1612704 5686768 -1612632 5686728 1612336 5689264 1614216 5694264 1612704 5686768 -1612632 5686728 1612320 5689216 1612336 5689264 1612704 5686768 -1612336 5689264 1614216 5694264 1612704 5686768 1612320 5689216 -1615200 5695576 1615376 5695816 1612704 5686768 1614216 5694264 -1612632 5686728 1612320 5689216 1612704 5686768 1612488 5686576 -1612336 5689264 1614120 5694152 1614216 5694264 1612704 5686768 -1612632 5686728 1612184 5687456 1612320 5689216 1612704 5686768 -1612320 5689216 1612336 5689264 1612704 5686768 1612184 5687456 -1612632 5686728 1612184 5687456 1612704 5686768 1612488 5686576 -1612184 5687456 1612112 5687552 1612320 5689216 1612704 5686768 -1612632 5686728 1612184 5687376 1612184 5687456 1612704 5686768 -1612632 5686728 1612184 5687376 1612704 5686768 1612488 5686576 -1612632 5686728 1612248 5686976 1612184 5687376 1612704 5686768 -1612632 5686728 1612248 5686976 1612704 5686768 1612488 5686576 -1612632 5686728 1612296 5686888 1612248 5686976 1612704 5686768 -1612632 5686728 1612296 5686888 1612704 5686768 1612488 5686576 -1612632 5686728 1612304 5686856 1612296 5686888 1612704 5686768 -1612248 5686976 1612128 5687096 1612184 5687376 1612704 5686768 -1612248 5686976 1612184 5687376 1612704 5686768 1612296 5686888 -1612184 5687376 1612184 5687456 1612704 5686768 1612248 5686976 -1612184 5687456 1612320 5689216 1612704 5686768 1612184 5687376 -1614216 5694264 1615200 5695576 1612704 5686768 1612336 5689264 -1614216 5694264 1615056 5695464 1615200 5695576 1612704 5686768 -1615376 5695816 1615512 5696024 1623192 5701576 1612704 5686768 -1612704 5686768 1612848 5686808 1663880 5646248 1663776 5646144 -1612704 5686768 1612848 5686808 1663776 5646144 1657088 5639464 -1612704 5686768 1612848 5686808 1657088 5639464 1612448 5686536 -1612848 5686808 1663776 5646144 1657088 5639464 1612448 5686536 -1612848 5686808 1663880 5646248 1663776 5646144 1657088 5639464 -1612704 5686768 1623296 5701624 1612848 5686808 1612448 5686536 -1623296 5701624 1612848 5686808 1612704 5686768 1623192 5701576 -1612704 5686768 1615376 5695816 1623192 5701576 1612848 5686808 -1612704 5686768 1615200 5695576 1615376 5695816 1612848 5686808 -1612704 5686768 1614216 5694264 1615200 5695576 1612848 5686808 -1615200 5695576 1615376 5695816 1612848 5686808 1614216 5694264 -1615376 5695816 1623192 5701576 1612848 5686808 1615200 5695576 -1612848 5686808 1612448 5686536 1612704 5686768 1614216 5694264 -1623192 5701576 1623296 5701624 1612848 5686808 1615376 5695816 -1612848 5686808 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1612848 5686808 1623192 5701576 -1663880 5646248 1612848 5686808 1623296 5701624 1623408 5701720 -1663776 5646144 1663688 5645984 1657088 5639464 1612848 5686808 -1657088 5639464 1612336 5686456 1612448 5686536 1612848 5686808 -1612448 5686536 1612704 5686768 1612848 5686808 1612336 5686456 -1657088 5639464 1612336 5686456 1612848 5686808 1663776 5646144 -1657088 5639464 1657056 5639384 1612336 5686456 1612848 5686808 -1612704 5686768 1612848 5686808 1612448 5686536 1612488 5686576 -1612704 5686768 1612848 5686808 1612488 5686576 1612632 5686728 -1612848 5686808 1612336 5686456 1612448 5686536 1612488 5686576 -1612704 5686768 1614216 5694264 1612848 5686808 1612488 5686576 -1612336 5686456 1612352 5686496 1612448 5686536 1612848 5686808 -1612704 5686768 1612336 5689264 1614216 5694264 1612848 5686808 -1612704 5686768 1612320 5689216 1612336 5689264 1612848 5686808 -1612704 5686768 1612184 5687456 1612320 5689216 1612848 5686808 -1612320 5689216 1612336 5689264 1612848 5686808 1612184 5687456 -1614216 5694264 1615200 5695576 1612848 5686808 1612336 5689264 -1612704 5686768 1612184 5687456 1612848 5686808 1612488 5686576 -1612336 5689264 1614120 5694152 1614216 5694264 1612848 5686808 -1614216 5694264 1615200 5695576 1612848 5686808 1614120 5694152 -1612336 5689264 1613488 5693384 1614120 5694152 1612848 5686808 -1612184 5687456 1612112 5687552 1612320 5689216 1612848 5686808 -1612704 5686768 1612184 5687376 1612184 5687456 1612848 5686808 -1612184 5687456 1612320 5689216 1612848 5686808 1612184 5687376 -1612704 5686768 1612184 5687376 1612848 5686808 1612488 5686576 -1612704 5686768 1612248 5686976 1612184 5687376 1612848 5686808 -1612336 5689264 1614120 5694152 1612848 5686808 1612320 5689216 -1614216 5694264 1615056 5695464 1615200 5695576 1612848 5686808 -1615376 5695816 1615512 5696024 1623192 5701576 1612848 5686808 -1612848 5686808 1612896 5686792 1663880 5646248 1663776 5646144 -1612848 5686808 1612896 5686792 1663776 5646144 1657088 5639464 -1612848 5686808 1612896 5686792 1657088 5639464 1612336 5686456 -1612896 5686792 1663776 5646144 1657088 5639464 1612336 5686456 -1612896 5686792 1663880 5646248 1663776 5646144 1657088 5639464 -1612848 5686808 1623296 5701624 1612896 5686792 1612336 5686456 -1623296 5701624 1612896 5686792 1612848 5686808 1623192 5701576 -1612848 5686808 1615376 5695816 1623192 5701576 1612896 5686792 -1612848 5686808 1615200 5695576 1615376 5695816 1612896 5686792 -1612848 5686808 1614216 5694264 1615200 5695576 1612896 5686792 -1612848 5686808 1614120 5694152 1614216 5694264 1612896 5686792 -1614216 5694264 1615200 5695576 1612896 5686792 1614120 5694152 -1615200 5695576 1615376 5695816 1612896 5686792 1614216 5694264 -1615376 5695816 1623192 5701576 1612896 5686792 1615200 5695576 -1612896 5686792 1612336 5686456 1612848 5686808 1614120 5694152 -1623192 5701576 1623296 5701624 1612896 5686792 1615376 5695816 -1612896 5686792 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1663880 5646248 1612896 5686792 1623192 5701576 -1663880 5646248 1612896 5686792 1623296 5701624 1623408 5701720 -1612848 5686808 1612336 5689264 1614120 5694152 1612896 5686792 -1614120 5694152 1614216 5694264 1612896 5686792 1612336 5689264 -1612848 5686808 1612336 5689264 1612896 5686792 1612336 5686456 -1612336 5689264 1613488 5693384 1614120 5694152 1612896 5686792 -1663776 5646144 1663688 5645984 1657088 5639464 1612896 5686792 -1612848 5686808 1612896 5686792 1612336 5686456 1612448 5686536 -1612848 5686808 1612896 5686792 1612448 5686536 1612488 5686576 -1612896 5686792 1657088 5639464 1612336 5686456 1612448 5686536 -1612848 5686808 1612336 5689264 1612896 5686792 1612488 5686576 -1612896 5686792 1612336 5686456 1612448 5686536 1612488 5686576 -1657088 5639464 1657056 5639384 1612336 5686456 1612896 5686792 -1612848 5686808 1612896 5686792 1612488 5686576 1612704 5686768 -1612488 5686576 1612632 5686728 1612704 5686768 1612896 5686792 -1612896 5686792 1612448 5686536 1612488 5686576 1612632 5686728 -1612848 5686808 1612336 5689264 1612896 5686792 1612704 5686768 -1612704 5686768 1612848 5686808 1612896 5686792 1612632 5686728 -1612336 5686456 1612352 5686496 1612448 5686536 1612896 5686792 -1612848 5686808 1612320 5689216 1612336 5689264 1612896 5686792 -1612848 5686808 1612184 5687456 1612320 5689216 1612896 5686792 -1612848 5686808 1612184 5687376 1612184 5687456 1612896 5686792 -1612848 5686808 1612184 5687456 1612896 5686792 1612704 5686768 -1612336 5689264 1614120 5694152 1612896 5686792 1612320 5689216 -1612184 5687456 1612112 5687552 1612320 5689216 1612896 5686792 -1612320 5689216 1612336 5689264 1612896 5686792 1612184 5687456 -1614216 5694264 1615056 5695464 1615200 5695576 1612896 5686792 -1615376 5695816 1615512 5696024 1623192 5701576 1612896 5686792 -1612896 5686792 1613016 5686640 1612336 5686456 1612448 5686536 -1657088 5639464 1613016 5686640 1612896 5686792 1663776 5646144 -1612896 5686792 1663880 5646248 1663776 5646144 1613016 5686640 -1663776 5646144 1657088 5639464 1613016 5686640 1663880 5646248 -1612896 5686792 1623296 5701624 1663880 5646248 1613016 5686640 -1663880 5646248 1663776 5646144 1613016 5686640 1623296 5701624 -1612896 5686792 1623296 5701624 1613016 5686640 1612448 5686536 -1612896 5686792 1623192 5701576 1623296 5701624 1613016 5686640 -1612896 5686792 1615376 5695816 1623192 5701576 1613016 5686640 -1612896 5686792 1615200 5695576 1615376 5695816 1613016 5686640 -1612896 5686792 1614216 5694264 1615200 5695576 1613016 5686640 -1612896 5686792 1614120 5694152 1614216 5694264 1613016 5686640 -1612896 5686792 1612336 5689264 1614120 5694152 1613016 5686640 -1614120 5694152 1614216 5694264 1613016 5686640 1612336 5689264 -1614216 5694264 1615200 5695576 1613016 5686640 1614120 5694152 -1615200 5695576 1615376 5695816 1613016 5686640 1614216 5694264 -1615376 5695816 1623192 5701576 1613016 5686640 1615200 5695576 -1623296 5701624 1663880 5646248 1613016 5686640 1623192 5701576 -1612896 5686792 1612336 5689264 1613016 5686640 1612448 5686536 -1623192 5701576 1623296 5701624 1613016 5686640 1615376 5695816 -1613016 5686640 1657088 5639464 1612336 5686456 1612448 5686536 -1657088 5639464 1612336 5686456 1613016 5686640 1663776 5646144 -1623296 5701624 1623408 5701720 1663880 5646248 1613016 5686640 -1612896 5686792 1612320 5689216 1612336 5689264 1613016 5686640 -1612336 5689264 1613488 5693384 1614120 5694152 1613016 5686640 -1657088 5639464 1613016 5686640 1663776 5646144 1663688 5645984 -1612896 5686792 1613016 5686640 1612448 5686536 1612488 5686576 -1612896 5686792 1613016 5686640 1612488 5686576 1612632 5686728 -1612896 5686792 1613016 5686640 1612632 5686728 1612704 5686768 -1613016 5686640 1612488 5686576 1612632 5686728 1612704 5686768 -1613016 5686640 1612336 5686456 1612448 5686536 1612488 5686576 -1612896 5686792 1612336 5689264 1613016 5686640 1612704 5686768 -1613016 5686640 1612448 5686536 1612488 5686576 1612632 5686728 -1612336 5686456 1613016 5686640 1657088 5639464 1657056 5639384 -1612336 5686456 1612448 5686536 1613016 5686640 1657056 5639384 -1613016 5686640 1663776 5646144 1657088 5639464 1657056 5639384 -1612336 5686456 1613016 5686640 1657056 5639384 1601560 5681032 -1612336 5686456 1612448 5686536 1613016 5686640 1601560 5681032 -1657056 5639384 1601464 5680984 1601560 5681032 1613016 5686640 -1612336 5686456 1613016 5686640 1601560 5681032 1601592 5681064 -1613016 5686640 1657088 5639464 1657056 5639384 1601560 5681032 -1612896 5686792 1613016 5686640 1612704 5686768 1612848 5686808 -1612336 5686456 1612352 5686496 1612448 5686536 1613016 5686640 -1614216 5694264 1615056 5695464 1615200 5695576 1613016 5686640 -1615376 5695816 1615512 5696024 1623192 5701576 1613016 5686640 -1613016 5686640 1612968 5686624 1612336 5686456 1612448 5686536 -1613016 5686640 1612968 5686624 1612448 5686536 1612488 5686576 -1612968 5686624 1612336 5686456 1612448 5686536 1612488 5686576 -1613016 5686640 1601560 5681032 1612968 5686624 1612488 5686576 -1612968 5686624 1601560 5681032 1612336 5686456 1612448 5686536 -1601560 5681032 1612968 5686624 1613016 5686640 1657056 5639384 -1601560 5681032 1612336 5686456 1612968 5686624 1657056 5639384 -1612968 5686624 1612488 5686576 1613016 5686640 1657056 5639384 -1601560 5681032 1612968 5686624 1657056 5639384 1601464 5680984 -1612336 5686456 1612968 5686624 1601560 5681032 1601592 5681064 -1613016 5686640 1612968 5686624 1612488 5686576 1612632 5686728 -1613016 5686640 1612968 5686624 1612632 5686728 1612704 5686768 -1613016 5686640 1612968 5686624 1612704 5686768 1612896 5686792 -1612968 5686624 1612632 5686728 1612704 5686768 1612896 5686792 -1612968 5686624 1612448 5686536 1612488 5686576 1612632 5686728 -1613016 5686640 1657056 5639384 1612968 5686624 1612896 5686792 -1612968 5686624 1612488 5686576 1612632 5686728 1612704 5686768 -1613016 5686640 1657088 5639464 1657056 5639384 1612968 5686624 -1613016 5686640 1657088 5639464 1612968 5686624 1612896 5686792 -1613016 5686640 1663776 5646144 1657088 5639464 1612968 5686624 -1657056 5639384 1601560 5681032 1612968 5686624 1657088 5639464 -1612704 5686768 1612848 5686808 1612896 5686792 1612968 5686624 -1612896 5686792 1613016 5686640 1612968 5686624 1612848 5686808 -1612704 5686768 1612848 5686808 1612968 5686624 1612632 5686728 -1612336 5686456 1612352 5686496 1612448 5686536 1612968 5686624 -1612968 5686624 1613008 5686504 1601560 5681032 1612336 5686456 -1612968 5686624 1657056 5639384 1613008 5686504 1612336 5686456 -1613008 5686504 1657056 5639384 1601560 5681032 1612336 5686456 -1612968 5686624 1613008 5686504 1612336 5686456 1612448 5686536 -1612968 5686624 1657056 5639384 1613008 5686504 1612448 5686536 -1613008 5686504 1601560 5681032 1612336 5686456 1612448 5686536 -1612968 5686624 1613008 5686504 1612448 5686536 1612488 5686576 -1612968 5686624 1613008 5686504 1612488 5686576 1612632 5686728 -1612968 5686624 1657056 5639384 1613008 5686504 1612488 5686576 -1613008 5686504 1612336 5686456 1612448 5686536 1612488 5686576 -1657056 5639384 1613008 5686504 1612968 5686624 1657088 5639464 -1613008 5686504 1612488 5686576 1612968 5686624 1657088 5639464 -1657056 5639384 1601560 5681032 1613008 5686504 1657088 5639464 -1601560 5681032 1613008 5686504 1657056 5639384 1601464 5680984 -1601560 5681032 1601592 5681064 1612336 5686456 1613008 5686504 -1612336 5686456 1612448 5686536 1613008 5686504 1601592 5681064 -1601560 5681032 1601592 5681064 1613008 5686504 1657056 5639384 -1601592 5681064 1612272 5686464 1612336 5686456 1613008 5686504 -1612968 5686624 1613016 5686640 1657088 5639464 1613008 5686504 -1612968 5686624 1613016 5686640 1613008 5686504 1612488 5686576 -1613016 5686640 1663776 5646144 1657088 5639464 1613008 5686504 -1613016 5686640 1663880 5646248 1663776 5646144 1613008 5686504 -1613016 5686640 1623296 5701624 1663880 5646248 1613008 5686504 -1663880 5646248 1663776 5646144 1613008 5686504 1623296 5701624 -1613016 5686640 1623192 5701576 1623296 5701624 1613008 5686504 -1663776 5646144 1657088 5639464 1613008 5686504 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1613008 5686504 -1657088 5639464 1657056 5639384 1613008 5686504 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1613008 5686504 -1613016 5686640 1623296 5701624 1613008 5686504 1612968 5686624 -1612336 5686456 1612352 5686496 1612448 5686536 1613008 5686504 -1613008 5686504 1613040 5686488 1663880 5646248 1663776 5646144 -1613008 5686504 1623296 5701624 1613040 5686488 1663776 5646144 -1613040 5686488 1623296 5701624 1663880 5646248 1663776 5646144 -1623296 5701624 1613040 5686488 1613008 5686504 1613016 5686640 -1613040 5686488 1663776 5646144 1613008 5686504 1613016 5686640 -1623296 5701624 1613040 5686488 1613016 5686640 1623192 5701576 -1613040 5686488 1613008 5686504 1613016 5686640 1623192 5701576 -1613016 5686640 1615376 5695816 1623192 5701576 1613040 5686488 -1613016 5686640 1615376 5695816 1613040 5686488 1613008 5686504 -1613016 5686640 1615200 5695576 1615376 5695816 1613040 5686488 -1613016 5686640 1614216 5694264 1615200 5695576 1613040 5686488 -1613016 5686640 1615200 5695576 1613040 5686488 1613008 5686504 -1623192 5701576 1623296 5701624 1613040 5686488 1615376 5695816 -1615376 5695816 1623192 5701576 1613040 5686488 1615200 5695576 -1613008 5686504 1613040 5686488 1663776 5646144 1657088 5639464 -1613040 5686488 1663880 5646248 1663776 5646144 1657088 5639464 -1613008 5686504 1613016 5686640 1613040 5686488 1657088 5639464 -1623296 5701624 1663880 5646248 1613040 5686488 1623192 5701576 -1663880 5646248 1613040 5686488 1623296 5701624 1623408 5701720 -1613008 5686504 1613040 5686488 1657088 5639464 1657056 5639384 -1613008 5686504 1613016 5686640 1613040 5686488 1657056 5639384 -1613008 5686504 1613040 5686488 1657056 5639384 1601560 5681032 -1613008 5686504 1613040 5686488 1601560 5681032 1601592 5681064 -1613008 5686504 1613016 5686640 1613040 5686488 1601592 5681064 -1613040 5686488 1657056 5639384 1601560 5681032 1601592 5681064 -1613040 5686488 1663776 5646144 1657088 5639464 1657056 5639384 -1613040 5686488 1657088 5639464 1657056 5639384 1601560 5681032 -1657056 5639384 1601464 5680984 1601560 5681032 1613040 5686488 -1663776 5646144 1663688 5645984 1657088 5639464 1613040 5686488 -1613008 5686504 1613040 5686488 1601592 5681064 1612336 5686456 -1613008 5686504 1613040 5686488 1612336 5686456 1612448 5686536 -1613040 5686488 1601560 5681032 1601592 5681064 1612336 5686456 -1613008 5686504 1613016 5686640 1613040 5686488 1612336 5686456 -1601592 5681064 1612272 5686464 1612336 5686456 1613040 5686488 -1613008 5686504 1612968 5686624 1613016 5686640 1613040 5686488 -1615376 5695816 1615512 5696024 1623192 5701576 1613040 5686488 -1613040 5686488 1613056 5686432 1601560 5681032 1601592 5681064 -1613040 5686488 1613056 5686432 1601592 5681064 1612336 5686456 -1613056 5686432 1601560 5681032 1601592 5681064 1612336 5686456 -1613040 5686488 1657056 5639384 1613056 5686432 1612336 5686456 -1613056 5686432 1657056 5639384 1601560 5681032 1601592 5681064 -1657056 5639384 1613056 5686432 1613040 5686488 1657088 5639464 -1613056 5686432 1612336 5686456 1613040 5686488 1657088 5639464 -1613040 5686488 1663776 5646144 1657088 5639464 1613056 5686432 -1613040 5686488 1663880 5646248 1663776 5646144 1613056 5686432 -1613040 5686488 1623296 5701624 1663880 5646248 1613056 5686432 -1663880 5646248 1663776 5646144 1613056 5686432 1623296 5701624 -1613040 5686488 1623296 5701624 1613056 5686432 1612336 5686456 -1663776 5646144 1657088 5639464 1613056 5686432 1663880 5646248 -1613040 5686488 1623192 5701576 1623296 5701624 1613056 5686432 -1623296 5701624 1663880 5646248 1613056 5686432 1623192 5701576 -1613040 5686488 1623192 5701576 1613056 5686432 1612336 5686456 -1613040 5686488 1615376 5695816 1623192 5701576 1613056 5686432 -1613040 5686488 1615376 5695816 1613056 5686432 1612336 5686456 -1613040 5686488 1615200 5695576 1615376 5695816 1613056 5686432 -1613040 5686488 1615200 5695576 1613056 5686432 1612336 5686456 -1613040 5686488 1613016 5686640 1615200 5695576 1613056 5686432 -1613016 5686640 1614216 5694264 1615200 5695576 1613056 5686432 -1613040 5686488 1613016 5686640 1613056 5686432 1612336 5686456 -1613040 5686488 1613008 5686504 1613016 5686640 1613056 5686432 -1615376 5695816 1623192 5701576 1613056 5686432 1615200 5695576 -1615200 5695576 1615376 5695816 1613056 5686432 1613016 5686640 -1623192 5701576 1623296 5701624 1613056 5686432 1615376 5695816 -1657056 5639384 1601560 5681032 1613056 5686432 1657088 5639464 -1623296 5701624 1623408 5701720 1663880 5646248 1613056 5686432 -1657088 5639464 1657056 5639384 1613056 5686432 1663776 5646144 -1601560 5681032 1613056 5686432 1657056 5639384 1601464 5680984 -1663776 5646144 1663688 5645984 1657088 5639464 1613056 5686432 -1613040 5686488 1613056 5686432 1612336 5686456 1613008 5686504 -1612336 5686456 1612448 5686536 1613008 5686504 1613056 5686432 -1613056 5686432 1601592 5681064 1612336 5686456 1612448 5686536 -1613040 5686488 1613016 5686640 1613056 5686432 1613008 5686504 -1612448 5686536 1612488 5686576 1613008 5686504 1613056 5686432 -1613008 5686504 1613040 5686488 1613056 5686432 1612448 5686536 -1601592 5681064 1612272 5686464 1612336 5686456 1613056 5686432 -1612336 5686456 1612352 5686496 1612448 5686536 1613056 5686432 -1615376 5695816 1615512 5696024 1623192 5701576 1613056 5686432 -1615200 5695576 1613088 5686584 1613016 5686640 1614216 5694264 -1613016 5686640 1614120 5694152 1614216 5694264 1613088 5686584 -1613016 5686640 1612336 5689264 1614120 5694152 1613088 5686584 -1613016 5686640 1612896 5686792 1612336 5689264 1613088 5686584 -1612336 5689264 1614120 5694152 1613088 5686584 1612896 5686792 -1614120 5694152 1614216 5694264 1613088 5686584 1612336 5689264 -1614216 5694264 1615200 5695576 1613088 5686584 1614120 5694152 -1613016 5686640 1613088 5686584 1613056 5686432 1613040 5686488 -1613016 5686640 1613088 5686584 1613040 5686488 1613008 5686504 -1613088 5686584 1613056 5686432 1613040 5686488 1613008 5686504 -1613056 5686432 1613088 5686584 1615200 5695576 1615376 5695816 -1613056 5686432 1613088 5686584 1615376 5695816 1623192 5701576 -1613088 5686584 1615200 5695576 1615376 5695816 1623192 5701576 -1613056 5686432 1613088 5686584 1623192 5701576 1623296 5701624 -1613056 5686432 1613088 5686584 1623296 5701624 1663880 5646248 -1613088 5686584 1615376 5695816 1623192 5701576 1623296 5701624 -1613088 5686584 1623296 5701624 1613056 5686432 1613040 5686488 -1615200 5695576 1615376 5695816 1613088 5686584 1614216 5694264 -1612896 5686792 1612320 5689216 1612336 5689264 1613088 5686584 -1612336 5689264 1613488 5693384 1614120 5694152 1613088 5686584 -1613016 5686640 1613088 5686584 1613008 5686504 1612968 5686624 -1613088 5686584 1613008 5686504 1613016 5686640 1612896 5686792 -1615200 5695576 1613088 5686584 1614216 5694264 1615056 5695464 -1615376 5695816 1615512 5696024 1623192 5701576 1613088 5686584 -1613056 5686432 1613152 5686608 1623296 5701624 1663880 5646248 -1613056 5686432 1613152 5686608 1663880 5646248 1663776 5646144 -1623296 5701624 1613152 5686608 1613088 5686584 1623192 5701576 -1613088 5686584 1615376 5695816 1623192 5701576 1613152 5686608 -1613088 5686584 1615200 5695576 1615376 5695816 1613152 5686608 -1615376 5695816 1623192 5701576 1613152 5686608 1615200 5695576 -1623192 5701576 1623296 5701624 1613152 5686608 1615376 5695816 -1613088 5686584 1614216 5694264 1615200 5695576 1613152 5686608 -1613088 5686584 1614120 5694152 1614216 5694264 1613152 5686608 -1613088 5686584 1612336 5689264 1614120 5694152 1613152 5686608 -1613088 5686584 1612896 5686792 1612336 5689264 1613152 5686608 -1613088 5686584 1613016 5686640 1612896 5686792 1613152 5686608 -1612896 5686792 1612336 5689264 1613152 5686608 1613016 5686640 -1612336 5689264 1614120 5694152 1613152 5686608 1612896 5686792 -1614120 5694152 1614216 5694264 1613152 5686608 1612336 5689264 -1615200 5695576 1615376 5695816 1613152 5686608 1614216 5694264 -1614216 5694264 1615200 5695576 1613152 5686608 1614120 5694152 -1623296 5701624 1623408 5701720 1663880 5646248 1613152 5686608 -1612896 5686792 1612320 5689216 1612336 5689264 1613152 5686608 -1612896 5686792 1612320 5689216 1613152 5686608 1613016 5686640 -1612336 5689264 1614120 5694152 1613152 5686608 1612320 5689216 -1612336 5689264 1613488 5693384 1614120 5694152 1613152 5686608 -1612336 5689264 1613488 5693384 1613152 5686608 1612320 5689216 -1614120 5694152 1614216 5694264 1613152 5686608 1613488 5693384 -1612896 5686792 1612184 5687456 1612320 5689216 1613152 5686608 -1613088 5686584 1613008 5686504 1613016 5686640 1613152 5686608 -1613152 5686608 1613056 5686432 1613088 5686584 1613016 5686640 -1613056 5686432 1613088 5686584 1613152 5686608 1663880 5646248 -1613152 5686608 1623192 5701576 1623296 5701624 1663880 5646248 -1612336 5689264 1612312 5689384 1613488 5693384 1613152 5686608 -1613488 5693384 1613584 5693568 1614120 5694152 1613152 5686608 -1614216 5694264 1615056 5695464 1615200 5695576 1613152 5686608 -1615376 5695816 1615512 5696024 1623192 5701576 1613152 5686608 -1615376 5695816 1613168 5686648 1613152 5686608 1615200 5695576 -1613152 5686608 1614216 5694264 1615200 5695576 1613168 5686648 -1615200 5695576 1615376 5695816 1613168 5686648 1614216 5694264 -1613152 5686608 1613168 5686648 1623192 5701576 1623296 5701624 -1613152 5686608 1614120 5694152 1614216 5694264 1613168 5686648 -1613152 5686608 1613488 5693384 1614120 5694152 1613168 5686648 -1614216 5694264 1615200 5695576 1613168 5686648 1614120 5694152 -1614120 5694152 1614216 5694264 1613168 5686648 1613488 5693384 -1613152 5686608 1612336 5689264 1613488 5693384 1613168 5686648 -1613152 5686608 1612320 5689216 1612336 5689264 1613168 5686648 -1613488 5693384 1614120 5694152 1613168 5686648 1612336 5689264 -1613152 5686608 1612896 5686792 1612320 5689216 1613168 5686648 -1613152 5686608 1613016 5686640 1612896 5686792 1613168 5686648 -1613152 5686608 1613088 5686584 1613016 5686640 1613168 5686648 -1613016 5686640 1612896 5686792 1613168 5686648 1613088 5686584 -1612320 5689216 1612336 5689264 1613168 5686648 1612896 5686792 -1612896 5686792 1612320 5689216 1613168 5686648 1613016 5686640 -1612336 5689264 1613488 5693384 1613168 5686648 1612320 5689216 -1612896 5686792 1612184 5687456 1612320 5689216 1613168 5686648 -1613088 5686584 1613008 5686504 1613016 5686640 1613168 5686648 -1613168 5686648 1623296 5701624 1613152 5686608 1613088 5686584 -1613152 5686608 1613168 5686648 1623296 5701624 1663880 5646248 -1613152 5686608 1613168 5686648 1663880 5646248 1613056 5686432 -1613168 5686648 1623192 5701576 1623296 5701624 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1613168 5686648 -1613152 5686608 1613088 5686584 1613168 5686648 1663880 5646248 -1613168 5686648 1615376 5695816 1623192 5701576 1623296 5701624 -1615376 5695816 1623192 5701576 1613168 5686648 1615200 5695576 -1612336 5689264 1612312 5689384 1613488 5693384 1613168 5686648 -1613488 5693384 1613584 5693568 1614120 5694152 1613168 5686648 -1614216 5694264 1615056 5695464 1615200 5695576 1613168 5686648 -1623192 5701576 1613168 5686648 1615376 5695816 1615512 5696024 -1613168 5686648 1613272 5686816 1623192 5701576 1623296 5701624 -1613168 5686648 1613272 5686816 1623296 5701624 1663880 5646248 -1623296 5701624 1623408 5701720 1663880 5646248 1613272 5686816 -1623408 5701720 1623576 5701960 1663880 5646248 1613272 5686816 -1663880 5646248 1613168 5686648 1613272 5686816 1623408 5701720 -1613168 5686648 1613272 5686816 1663880 5646248 1613152 5686608 -1663880 5646248 1613056 5686432 1613152 5686608 1613272 5686816 -1663880 5646248 1663776 5646144 1613056 5686432 1613272 5686816 -1613272 5686816 1623408 5701720 1663880 5646248 1613056 5686432 -1613056 5686432 1613088 5686584 1613152 5686608 1613272 5686816 -1613152 5686608 1613168 5686648 1613272 5686816 1613056 5686432 -1613272 5686816 1623192 5701576 1623296 5701624 1623408 5701720 -1613168 5686648 1615376 5695816 1613272 5686816 1613152 5686608 -1615376 5695816 1613272 5686816 1613168 5686648 1615200 5695576 -1613168 5686648 1614216 5694264 1615200 5695576 1613272 5686816 -1613168 5686648 1614120 5694152 1614216 5694264 1613272 5686816 -1614216 5694264 1615200 5695576 1613272 5686816 1614120 5694152 -1613168 5686648 1613488 5693384 1614120 5694152 1613272 5686816 -1613168 5686648 1612336 5689264 1613488 5693384 1613272 5686816 -1614120 5694152 1614216 5694264 1613272 5686816 1613488 5693384 -1613488 5693384 1614120 5694152 1613272 5686816 1612336 5689264 -1613168 5686648 1612320 5689216 1612336 5689264 1613272 5686816 -1613168 5686648 1612896 5686792 1612320 5689216 1613272 5686816 -1612336 5689264 1613488 5693384 1613272 5686816 1612320 5689216 -1613168 5686648 1613016 5686640 1612896 5686792 1613272 5686816 -1612320 5689216 1612336 5689264 1613272 5686816 1612896 5686792 -1612896 5686792 1612184 5687456 1612320 5689216 1613272 5686816 -1612896 5686792 1612848 5686808 1612184 5687456 1613272 5686816 -1612848 5686808 1612184 5687376 1612184 5687456 1613272 5686816 -1612896 5686792 1612848 5686808 1613272 5686816 1613168 5686648 -1612320 5689216 1612336 5689264 1613272 5686816 1612184 5687456 -1612184 5687456 1612112 5687552 1612320 5689216 1613272 5686816 -1612184 5687456 1612320 5689216 1613272 5686816 1612848 5686808 -1613272 5686816 1613152 5686608 1613168 5686648 1612896 5686792 -1615200 5695576 1615376 5695816 1613272 5686816 1614216 5694264 -1613272 5686816 1615376 5695816 1623192 5701576 1623296 5701624 -1615376 5695816 1623192 5701576 1613272 5686816 1615200 5695576 -1612336 5689264 1612312 5689384 1613488 5693384 1613272 5686816 -1613488 5693384 1613584 5693568 1614120 5694152 1613272 5686816 -1614216 5694264 1615056 5695464 1615200 5695576 1613272 5686816 -1623192 5701576 1613272 5686816 1615376 5695816 1615512 5696024 -1663880 5646248 1613336 5686872 1623408 5701720 1623576 5701960 -1613272 5686816 1613336 5686872 1663880 5646248 1613056 5686432 -1663880 5646248 1663776 5646144 1613056 5686432 1613336 5686872 -1613272 5686816 1613336 5686872 1613056 5686432 1613152 5686608 -1663776 5646144 1657088 5639464 1613056 5686432 1613336 5686872 -1613056 5686432 1613152 5686608 1613336 5686872 1663776 5646144 -1623408 5701720 1613336 5686872 1613272 5686816 1623296 5701624 -1613272 5686816 1623296 5701624 1613336 5686872 1613152 5686608 -1623408 5701720 1663880 5646248 1613336 5686872 1623296 5701624 -1613336 5686872 1623408 5701720 1663880 5646248 1663776 5646144 -1613056 5686432 1613088 5686584 1613152 5686608 1613336 5686872 -1613272 5686816 1613336 5686872 1613152 5686608 1613168 5686648 -1613336 5686872 1613056 5686432 1613152 5686608 1613168 5686648 -1613272 5686816 1623296 5701624 1613336 5686872 1613168 5686648 -1613272 5686816 1623192 5701576 1623296 5701624 1613336 5686872 -1623296 5701624 1623408 5701720 1613336 5686872 1623192 5701576 -1613272 5686816 1623192 5701576 1613336 5686872 1613168 5686648 -1613272 5686816 1615376 5695816 1623192 5701576 1613336 5686872 -1613272 5686816 1615376 5695816 1613336 5686872 1613168 5686648 -1623192 5701576 1623296 5701624 1613336 5686872 1615376 5695816 -1613272 5686816 1615200 5695576 1615376 5695816 1613336 5686872 -1613272 5686816 1615200 5695576 1613336 5686872 1613168 5686648 -1613272 5686816 1614216 5694264 1615200 5695576 1613336 5686872 -1613272 5686816 1614120 5694152 1614216 5694264 1613336 5686872 -1613272 5686816 1613488 5693384 1614120 5694152 1613336 5686872 -1614120 5694152 1614216 5694264 1613336 5686872 1613488 5693384 -1613272 5686816 1612336 5689264 1613488 5693384 1613336 5686872 -1613272 5686816 1612320 5689216 1612336 5689264 1613336 5686872 -1613488 5693384 1614120 5694152 1613336 5686872 1612336 5689264 -1612336 5689264 1613488 5693384 1613336 5686872 1612320 5689216 -1613272 5686816 1612184 5687456 1612320 5689216 1613336 5686872 -1612320 5689216 1612336 5689264 1613336 5686872 1612184 5687456 -1612184 5687456 1612112 5687552 1612320 5689216 1613336 5686872 -1613272 5686816 1612184 5687456 1613336 5686872 1613168 5686648 -1613272 5686816 1612848 5686808 1612184 5687456 1613336 5686872 -1613272 5686816 1612896 5686792 1612848 5686808 1613336 5686872 -1612848 5686808 1612184 5687376 1612184 5687456 1613336 5686872 -1613272 5686816 1613168 5686648 1612896 5686792 1613336 5686872 -1612184 5687456 1612320 5689216 1613336 5686872 1612848 5686808 -1613272 5686816 1612896 5686792 1613336 5686872 1613168 5686648 -1612848 5686808 1612184 5687456 1613336 5686872 1612896 5686792 -1614216 5694264 1615200 5695576 1613336 5686872 1614120 5694152 -1615376 5695816 1623192 5701576 1613336 5686872 1615200 5695576 -1615200 5695576 1615376 5695816 1613336 5686872 1614216 5694264 -1612336 5689264 1612312 5689384 1613488 5693384 1613336 5686872 -1613488 5693384 1613584 5693568 1614120 5694152 1613336 5686872 -1614216 5694264 1615056 5695464 1615200 5695576 1613336 5686872 -1615376 5695816 1615512 5696024 1623192 5701576 1613336 5686872 -1623192 5701576 1623296 5701624 1613336 5686872 1615512 5696024 -1615376 5695816 1615512 5696024 1613336 5686872 1615200 5695576 -1615512 5696024 1623016 5701528 1623192 5701576 1613336 5686872 -1663880 5646248 1613472 5686904 1623408 5701720 1623576 5701960 -1623408 5701720 1613472 5686904 1613336 5686872 1623296 5701624 -1613336 5686872 1623192 5701576 1623296 5701624 1613472 5686904 -1623408 5701720 1663880 5646248 1613472 5686904 1623296 5701624 -1623296 5701624 1623408 5701720 1613472 5686904 1623192 5701576 -1613472 5686904 1663880 5646248 1613336 5686872 1623192 5701576 -1613336 5686872 1613472 5686904 1663880 5646248 1663776 5646144 -1613336 5686872 1613472 5686904 1663776 5646144 1613056 5686432 -1663776 5646144 1657088 5639464 1613056 5686432 1613472 5686904 -1613056 5686432 1613336 5686872 1613472 5686904 1657088 5639464 -1613336 5686872 1613472 5686904 1613056 5686432 1613152 5686608 -1613472 5686904 1657088 5639464 1613056 5686432 1613152 5686608 -1613336 5686872 1613472 5686904 1613152 5686608 1613168 5686648 -1613472 5686904 1613056 5686432 1613152 5686608 1613168 5686648 -1657088 5639464 1657056 5639384 1613056 5686432 1613472 5686904 -1613472 5686904 1623408 5701720 1663880 5646248 1663776 5646144 -1613336 5686872 1623192 5701576 1613472 5686904 1613168 5686648 -1663776 5646144 1663688 5645984 1657088 5639464 1613472 5686904 -1613472 5686904 1663880 5646248 1663776 5646144 1657088 5639464 -1613056 5686432 1613088 5686584 1613152 5686608 1613472 5686904 -1613336 5686872 1613472 5686904 1613168 5686648 1613272 5686816 -1613472 5686904 1613152 5686608 1613168 5686648 1613272 5686816 -1613336 5686872 1623192 5701576 1613472 5686904 1613272 5686816 -1613336 5686872 1615512 5696024 1623192 5701576 1613472 5686904 -1623192 5701576 1623296 5701624 1613472 5686904 1615512 5696024 -1613336 5686872 1615512 5696024 1613472 5686904 1613272 5686816 -1613336 5686872 1615376 5695816 1615512 5696024 1613472 5686904 -1613336 5686872 1615376 5695816 1613472 5686904 1613272 5686816 -1615512 5696024 1623192 5701576 1613472 5686904 1615376 5695816 -1613336 5686872 1615200 5695576 1615376 5695816 1613472 5686904 -1613336 5686872 1615200 5695576 1613472 5686904 1613272 5686816 -1613336 5686872 1614216 5694264 1615200 5695576 1613472 5686904 -1613336 5686872 1614216 5694264 1613472 5686904 1613272 5686816 -1613336 5686872 1614120 5694152 1614216 5694264 1613472 5686904 -1613336 5686872 1613488 5693384 1614120 5694152 1613472 5686904 -1613336 5686872 1612336 5689264 1613488 5693384 1613472 5686904 -1613488 5693384 1614120 5694152 1613472 5686904 1612336 5689264 -1613336 5686872 1612320 5689216 1612336 5689264 1613472 5686904 -1613336 5686872 1612184 5687456 1612320 5689216 1613472 5686904 -1612336 5689264 1613488 5693384 1613472 5686904 1612320 5689216 -1612320 5689216 1612336 5689264 1613472 5686904 1612184 5687456 -1613336 5686872 1612848 5686808 1612184 5687456 1613472 5686904 -1612184 5687456 1612112 5687552 1612320 5689216 1613472 5686904 -1613336 5686872 1612184 5687456 1613472 5686904 1613272 5686816 -1614120 5694152 1614216 5694264 1613472 5686904 1613488 5693384 -1615200 5695576 1615376 5695816 1613472 5686904 1614216 5694264 -1614216 5694264 1615200 5695576 1613472 5686904 1614120 5694152 -1612336 5689264 1612312 5689384 1613488 5693384 1613472 5686904 -1613488 5693384 1613584 5693568 1614120 5694152 1613472 5686904 -1614216 5694264 1615056 5695464 1615200 5695576 1613472 5686904 -1615376 5695816 1615512 5696024 1613472 5686904 1615200 5695576 -1615512 5696024 1623016 5701528 1623192 5701576 1613472 5686904 -1613472 5686904 1613488 5686880 1613056 5686432 1613152 5686608 -1657088 5639464 1613488 5686880 1613472 5686904 1663776 5646144 -1613472 5686904 1613488 5686880 1613152 5686608 1613168 5686648 -1613488 5686880 1613056 5686432 1613152 5686608 1613168 5686648 -1613472 5686904 1613488 5686880 1613168 5686648 1613272 5686816 -1613488 5686880 1613152 5686608 1613168 5686648 1613272 5686816 -1613056 5686432 1613488 5686880 1657088 5639464 1657056 5639384 -1613472 5686904 1663776 5646144 1613488 5686880 1613272 5686816 -1613488 5686880 1657088 5639464 1613056 5686432 1613152 5686608 -1657088 5639464 1613056 5686432 1613488 5686880 1663776 5646144 -1657088 5639464 1613488 5686880 1663776 5646144 1663688 5645984 -1613472 5686904 1663880 5646248 1663776 5646144 1613488 5686880 -1663776 5646144 1657088 5639464 1613488 5686880 1663880 5646248 -1613472 5686904 1663880 5646248 1613488 5686880 1613272 5686816 -1613472 5686904 1623408 5701720 1663880 5646248 1613488 5686880 -1623408 5701720 1623576 5701960 1663880 5646248 1613488 5686880 -1613472 5686904 1623408 5701720 1613488 5686880 1613272 5686816 -1613472 5686904 1623296 5701624 1623408 5701720 1613488 5686880 -1613472 5686904 1623296 5701624 1613488 5686880 1613272 5686816 -1623408 5701720 1663880 5646248 1613488 5686880 1623296 5701624 -1613472 5686904 1623192 5701576 1623296 5701624 1613488 5686880 -1613472 5686904 1615512 5696024 1623192 5701576 1613488 5686880 -1613472 5686904 1615512 5696024 1613488 5686880 1613272 5686816 -1623296 5701624 1623408 5701720 1613488 5686880 1623192 5701576 -1623192 5701576 1623296 5701624 1613488 5686880 1615512 5696024 -1663880 5646248 1663776 5646144 1613488 5686880 1623408 5701720 -1613056 5686432 1613088 5686584 1613152 5686608 1613488 5686880 -1613472 5686904 1613488 5686880 1613272 5686816 1613336 5686872 -1613488 5686880 1613168 5686648 1613272 5686816 1613336 5686872 -1613472 5686904 1615512 5696024 1613488 5686880 1613336 5686872 -1613472 5686904 1615376 5695816 1615512 5696024 1613488 5686880 -1615512 5696024 1623192 5701576 1613488 5686880 1615376 5695816 -1613472 5686904 1615376 5695816 1613488 5686880 1613336 5686872 -1613472 5686904 1615200 5695576 1615376 5695816 1613488 5686880 -1613472 5686904 1615200 5695576 1613488 5686880 1613336 5686872 -1615376 5695816 1615512 5696024 1613488 5686880 1615200 5695576 -1613472 5686904 1614216 5694264 1615200 5695576 1613488 5686880 -1613472 5686904 1614216 5694264 1613488 5686880 1613336 5686872 -1613472 5686904 1614120 5694152 1614216 5694264 1613488 5686880 -1613472 5686904 1614120 5694152 1613488 5686880 1613336 5686872 -1613472 5686904 1613488 5693384 1614120 5694152 1613488 5686880 -1614216 5694264 1615200 5695576 1613488 5686880 1614120 5694152 -1614216 5694264 1615056 5695464 1615200 5695576 1613488 5686880 -1615200 5695576 1615376 5695816 1613488 5686880 1614216 5694264 -1615512 5696024 1623016 5701528 1623192 5701576 1613488 5686880 -1663880 5646248 1613536 5686904 1623408 5701720 1623576 5701960 -1623408 5701720 1613536 5686904 1613488 5686880 1623296 5701624 -1613536 5686904 1663880 5646248 1613488 5686880 1623296 5701624 -1613488 5686880 1623192 5701576 1623296 5701624 1613536 5686904 -1613488 5686880 1623192 5701576 1613536 5686904 1663880 5646248 -1623296 5701624 1623408 5701720 1613536 5686904 1623192 5701576 -1613488 5686880 1615512 5696024 1623192 5701576 1613536 5686904 -1613488 5686880 1615512 5696024 1613536 5686904 1663880 5646248 -1613488 5686880 1615376 5695816 1615512 5696024 1613536 5686904 -1613488 5686880 1615376 5695816 1613536 5686904 1663880 5646248 -1623192 5701576 1623296 5701624 1613536 5686904 1615512 5696024 -1615512 5696024 1623192 5701576 1613536 5686904 1615376 5695816 -1613488 5686880 1613536 5686904 1663880 5646248 1663776 5646144 -1613488 5686880 1615376 5695816 1613536 5686904 1663776 5646144 -1613488 5686880 1613536 5686904 1663776 5646144 1657088 5639464 -1613488 5686880 1615376 5695816 1613536 5686904 1657088 5639464 -1613536 5686904 1623408 5701720 1663880 5646248 1663776 5646144 -1613488 5686880 1613536 5686904 1657088 5639464 1613056 5686432 -1613488 5686880 1615376 5695816 1613536 5686904 1613056 5686432 -1613536 5686904 1663776 5646144 1657088 5639464 1613056 5686432 -1657088 5639464 1657056 5639384 1613056 5686432 1613536 5686904 -1613488 5686880 1613536 5686904 1613056 5686432 1613152 5686608 -1663776 5646144 1663688 5645984 1657088 5639464 1613536 5686904 -1613536 5686904 1663880 5646248 1663776 5646144 1657088 5639464 -1623408 5701720 1663880 5646248 1613536 5686904 1623296 5701624 -1613488 5686880 1615200 5695576 1615376 5695816 1613536 5686904 -1613488 5686880 1615200 5695576 1613536 5686904 1613056 5686432 -1615376 5695816 1615512 5696024 1613536 5686904 1615200 5695576 -1613488 5686880 1614216 5694264 1615200 5695576 1613536 5686904 -1613488 5686880 1614216 5694264 1613536 5686904 1613056 5686432 -1615200 5695576 1615376 5695816 1613536 5686904 1614216 5694264 -1613488 5686880 1614120 5694152 1614216 5694264 1613536 5686904 -1613488 5686880 1614120 5694152 1613536 5686904 1613056 5686432 -1613488 5686880 1613472 5686904 1614120 5694152 1613536 5686904 -1613488 5686880 1613472 5686904 1613536 5686904 1613056 5686432 -1613472 5686904 1613488 5693384 1614120 5694152 1613536 5686904 -1613472 5686904 1612336 5689264 1613488 5693384 1613536 5686904 -1613472 5686904 1612320 5689216 1612336 5689264 1613536 5686904 -1612336 5689264 1613488 5693384 1613536 5686904 1612320 5689216 -1613472 5686904 1612184 5687456 1612320 5689216 1613536 5686904 -1613488 5693384 1614120 5694152 1613536 5686904 1612336 5689264 -1614120 5694152 1614216 5694264 1613536 5686904 1613488 5693384 -1613472 5686904 1612320 5689216 1613536 5686904 1613488 5686880 -1612336 5689264 1612312 5689384 1613488 5693384 1613536 5686904 -1613488 5693384 1613584 5693568 1614120 5694152 1613536 5686904 -1614216 5694264 1615056 5695464 1615200 5695576 1613536 5686904 -1614216 5694264 1615200 5695576 1613536 5686904 1614120 5694152 -1615512 5696024 1623016 5701528 1623192 5701576 1613536 5686904 -1623192 5701576 1623296 5701624 1613536 5686904 1623016 5701528 -1615512 5696024 1623016 5701528 1613536 5686904 1615376 5695816 -1615512 5696024 1615632 5696264 1623016 5701528 1613536 5686904 -1663880 5646248 1613592 5686944 1623408 5701720 1623576 5701960 -1613536 5686904 1613592 5686944 1663880 5646248 1663776 5646144 -1613592 5686944 1623408 5701720 1663880 5646248 1663776 5646144 -1613536 5686904 1623408 5701720 1613592 5686944 1663776 5646144 -1613536 5686904 1613592 5686944 1663776 5646144 1657088 5639464 -1613536 5686904 1613592 5686944 1657088 5639464 1613056 5686432 -1613592 5686944 1663880 5646248 1663776 5646144 1657088 5639464 -1657088 5639464 1657056 5639384 1613056 5686432 1613592 5686944 -1613536 5686904 1613592 5686944 1613056 5686432 1613488 5686880 -1613536 5686904 1623408 5701720 1613592 5686944 1613056 5686432 -1663776 5646144 1663688 5645984 1657088 5639464 1613592 5686944 -1613592 5686944 1663776 5646144 1657088 5639464 1613056 5686432 -1623408 5701720 1613592 5686944 1613536 5686904 1623296 5701624 -1613536 5686904 1623192 5701576 1623296 5701624 1613592 5686944 -1623296 5701624 1623408 5701720 1613592 5686944 1623192 5701576 -1613536 5686904 1623016 5701528 1623192 5701576 1613592 5686944 -1623192 5701576 1623296 5701624 1613592 5686944 1623016 5701528 -1613592 5686944 1613056 5686432 1613536 5686904 1623016 5701528 -1623408 5701720 1663880 5646248 1613592 5686944 1623296 5701624 -1613536 5686904 1615512 5696024 1623016 5701528 1613592 5686944 -1623016 5701528 1623192 5701576 1613592 5686944 1615512 5696024 -1613536 5686904 1615376 5695816 1615512 5696024 1613592 5686944 -1613536 5686904 1615200 5695576 1615376 5695816 1613592 5686944 -1615376 5695816 1615512 5696024 1613592 5686944 1615200 5695576 -1613536 5686904 1615200 5695576 1613592 5686944 1613056 5686432 -1613536 5686904 1614216 5694264 1615200 5695576 1613592 5686944 -1615200 5695576 1615376 5695816 1613592 5686944 1614216 5694264 -1613536 5686904 1614216 5694264 1613592 5686944 1613056 5686432 -1615512 5696024 1615632 5696264 1623016 5701528 1613592 5686944 -1614216 5694264 1615056 5695464 1615200 5695576 1613592 5686944 -1613536 5686904 1614120 5694152 1614216 5694264 1613592 5686944 -1613536 5686904 1614120 5694152 1613592 5686944 1613056 5686432 -1614216 5694264 1615200 5695576 1613592 5686944 1614120 5694152 -1613536 5686904 1613488 5693384 1614120 5694152 1613592 5686944 -1613536 5686904 1613488 5693384 1613592 5686944 1613056 5686432 -1613536 5686904 1612336 5689264 1613488 5693384 1613592 5686944 -1613536 5686904 1612320 5689216 1612336 5689264 1613592 5686944 -1613536 5686904 1613472 5686904 1612320 5689216 1613592 5686944 -1612320 5689216 1612336 5689264 1613592 5686944 1613472 5686904 -1613472 5686904 1612184 5687456 1612320 5689216 1613592 5686944 -1613472 5686904 1613336 5686872 1612184 5687456 1613592 5686944 -1612320 5689216 1612336 5689264 1613592 5686944 1612184 5687456 -1613472 5686904 1612184 5687456 1613592 5686944 1613536 5686904 -1612184 5687456 1612112 5687552 1612320 5689216 1613592 5686944 -1613536 5686904 1613472 5686904 1613592 5686944 1613056 5686432 -1612336 5689264 1613488 5693384 1613592 5686944 1612320 5689216 -1613488 5693384 1614120 5694152 1613592 5686944 1612336 5689264 -1613536 5686904 1613488 5686880 1613472 5686904 1613592 5686944 -1612336 5689264 1612312 5689384 1613488 5693384 1613592 5686944 -1613488 5693384 1613584 5693568 1614120 5694152 1613592 5686944 -1614120 5694152 1614216 5694264 1613592 5686944 1613488 5693384 -1615512 5696024 1623016 5701528 1613592 5686944 1615376 5695816 -1613592 5686944 1613600 5686968 1623016 5701528 1623192 5701576 -1613592 5686944 1613600 5686968 1623192 5701576 1623296 5701624 -1613592 5686944 1613600 5686968 1623296 5701624 1623408 5701720 -1613600 5686968 1623016 5701528 1623192 5701576 1623296 5701624 -1613600 5686968 1623192 5701576 1623296 5701624 1623408 5701720 -1613592 5686944 1615512 5696024 1613600 5686968 1623408 5701720 -1613592 5686944 1613600 5686968 1623408 5701720 1663880 5646248 -1623016 5701528 1613600 5686968 1615512 5696024 1615632 5696264 -1615512 5696024 1613600 5686968 1613592 5686944 1615376 5695816 -1615512 5696024 1623016 5701528 1613600 5686968 1615376 5695816 -1613592 5686944 1615200 5695576 1615376 5695816 1613600 5686968 -1613592 5686944 1614216 5694264 1615200 5695576 1613600 5686968 -1615200 5695576 1615376 5695816 1613600 5686968 1614216 5694264 -1613600 5686968 1623408 5701720 1613592 5686944 1614216 5694264 -1613592 5686944 1614120 5694152 1614216 5694264 1613600 5686968 -1614216 5694264 1615200 5695576 1613600 5686968 1614120 5694152 -1613592 5686944 1614120 5694152 1613600 5686968 1623408 5701720 -1614216 5694264 1615056 5695464 1615200 5695576 1613600 5686968 -1613592 5686944 1613488 5693384 1614120 5694152 1613600 5686968 -1613592 5686944 1613488 5693384 1613600 5686968 1623408 5701720 -1614120 5694152 1614216 5694264 1613600 5686968 1613488 5693384 -1613592 5686944 1612336 5689264 1613488 5693384 1613600 5686968 -1613592 5686944 1612336 5689264 1613600 5686968 1623408 5701720 -1613592 5686944 1612320 5689216 1612336 5689264 1613600 5686968 -1613592 5686944 1612184 5687456 1612320 5689216 1613600 5686968 -1613592 5686944 1613472 5686904 1612184 5687456 1613600 5686968 -1613472 5686904 1613336 5686872 1612184 5687456 1613600 5686968 -1612184 5687456 1612320 5689216 1613600 5686968 1613336 5686872 -1613592 5686944 1613536 5686904 1613472 5686904 1613600 5686968 -1613472 5686904 1613336 5686872 1613600 5686968 1613536 5686904 -1613336 5686872 1612848 5686808 1612184 5687456 1613600 5686968 -1612184 5687456 1612112 5687552 1612320 5689216 1613600 5686968 -1613592 5686944 1613536 5686904 1613600 5686968 1623408 5701720 -1612320 5689216 1612336 5689264 1613600 5686968 1612184 5687456 -1612336 5689264 1613488 5693384 1613600 5686968 1612320 5689216 -1613536 5686904 1613488 5686880 1613472 5686904 1613600 5686968 -1612336 5689264 1612312 5689384 1613488 5693384 1613600 5686968 -1612312 5689384 1613384 5693288 1613488 5693384 1613600 5686968 -1612336 5689264 1612312 5689384 1613600 5686968 1612320 5689216 -1613488 5693384 1613584 5693568 1614120 5694152 1613600 5686968 -1613488 5693384 1614120 5694152 1613600 5686968 1612312 5689384 -1615376 5695816 1615512 5696024 1613600 5686968 1615200 5695576 -1613600 5686968 1615512 5696024 1623016 5701528 1623192 5701576 -1663880 5646248 1613632 5687000 1623408 5701720 1623576 5701960 -1613592 5686944 1613632 5687000 1663880 5646248 1663776 5646144 -1613592 5686944 1613632 5687000 1663776 5646144 1657088 5639464 -1613592 5686944 1623408 5701720 1613632 5687000 1663776 5646144 -1613632 5687000 1623408 5701720 1663880 5646248 1663776 5646144 -1623408 5701720 1613632 5687000 1613592 5686944 1613600 5686968 -1613632 5687000 1663776 5646144 1613592 5686944 1613600 5686968 -1623408 5701720 1663880 5646248 1613632 5687000 1613600 5686968 -1623408 5701720 1613632 5687000 1613600 5686968 1623296 5701624 -1613600 5686968 1623192 5701576 1623296 5701624 1613632 5687000 -1613600 5686968 1623016 5701528 1623192 5701576 1613632 5687000 -1623192 5701576 1623296 5701624 1613632 5687000 1623016 5701528 -1623296 5701624 1623408 5701720 1613632 5687000 1623192 5701576 -1623408 5701720 1663880 5646248 1613632 5687000 1623296 5701624 -1613632 5687000 1613592 5686944 1613600 5686968 1623016 5701528 -1613600 5686968 1615512 5696024 1623016 5701528 1613632 5687000 -1613600 5686968 1615376 5695816 1615512 5696024 1613632 5687000 -1623016 5701528 1623192 5701576 1613632 5687000 1615512 5696024 -1613600 5686968 1615376 5695816 1613632 5687000 1613592 5686944 -1615512 5696024 1615632 5696264 1623016 5701528 1613632 5687000 -1613600 5686968 1615200 5695576 1615376 5695816 1613632 5687000 -1613600 5686968 1614216 5694264 1615200 5695576 1613632 5687000 -1613600 5686968 1614120 5694152 1614216 5694264 1613632 5687000 -1614216 5694264 1615200 5695576 1613632 5687000 1614120 5694152 -1613600 5686968 1614120 5694152 1613632 5687000 1613592 5686944 -1613600 5686968 1613488 5693384 1614120 5694152 1613632 5687000 -1614120 5694152 1614216 5694264 1613632 5687000 1613488 5693384 -1613600 5686968 1613488 5693384 1613632 5687000 1613592 5686944 -1613488 5693384 1613584 5693568 1614120 5694152 1613632 5687000 -1614216 5694264 1615056 5695464 1615200 5695576 1613632 5687000 -1613600 5686968 1612312 5689384 1613488 5693384 1613632 5687000 -1612312 5689384 1613384 5693288 1613488 5693384 1613632 5687000 -1613600 5686968 1612312 5689384 1613632 5687000 1613592 5686944 -1613488 5693384 1614120 5694152 1613632 5687000 1612312 5689384 -1613600 5686968 1612336 5689264 1612312 5689384 1613632 5687000 -1613600 5686968 1612336 5689264 1613632 5687000 1613592 5686944 -1613600 5686968 1612320 5689216 1612336 5689264 1613632 5687000 -1613600 5686968 1612320 5689216 1613632 5687000 1613592 5686944 -1613600 5686968 1612184 5687456 1612320 5689216 1613632 5687000 -1613600 5686968 1613336 5686872 1612184 5687456 1613632 5687000 -1613600 5686968 1613472 5686904 1613336 5686872 1613632 5687000 -1613336 5686872 1612184 5687456 1613632 5687000 1613472 5686904 -1613600 5686968 1613536 5686904 1613472 5686904 1613632 5687000 -1613336 5686872 1612848 5686808 1612184 5687456 1613632 5687000 -1612184 5687456 1612112 5687552 1612320 5689216 1613632 5687000 -1613600 5686968 1613472 5686904 1613632 5687000 1613592 5686944 -1612184 5687456 1612320 5689216 1613632 5687000 1613336 5686872 -1612320 5689216 1612336 5689264 1613632 5687000 1612184 5687456 -1612336 5689264 1612312 5689384 1613632 5687000 1612320 5689216 -1612312 5689384 1613488 5693384 1613632 5687000 1612336 5689264 -1615200 5695576 1615376 5695816 1613632 5687000 1614216 5694264 -1615512 5696024 1623016 5701528 1613632 5687000 1615376 5695816 -1615376 5695816 1615512 5696024 1613632 5687000 1615200 5695576 -1612320 5689216 1613616 5687016 1612184 5687456 1612112 5687552 -1612184 5687456 1613616 5687016 1613632 5687000 1613336 5686872 -1613632 5687000 1613472 5686904 1613336 5686872 1613616 5687016 -1613632 5687000 1613600 5686968 1613472 5686904 1613616 5687016 -1613472 5686904 1613336 5686872 1613616 5687016 1613600 5686968 -1613600 5686968 1613536 5686904 1613472 5686904 1613616 5687016 -1613616 5687016 1612320 5689216 1613632 5687000 1613600 5686968 -1612184 5687456 1612320 5689216 1613616 5687016 1613336 5686872 -1612184 5687456 1613616 5687016 1613336 5686872 1612848 5686808 -1613336 5686872 1612184 5687456 1613616 5687016 1613472 5686904 -1613632 5687000 1613616 5687016 1612320 5689216 1612336 5689264 -1613632 5687000 1613600 5686968 1613616 5687016 1612336 5689264 -1613616 5687016 1612184 5687456 1612320 5689216 1612336 5689264 -1613632 5687000 1613616 5687016 1612336 5689264 1612312 5689384 -1613632 5687000 1613600 5686968 1613616 5687016 1612312 5689384 -1613616 5687016 1612320 5689216 1612336 5689264 1612312 5689384 -1613632 5687000 1613616 5687016 1612312 5689384 1613488 5693384 -1613632 5687000 1613600 5686968 1613616 5687016 1613488 5693384 -1612312 5689384 1613384 5693288 1613488 5693384 1613616 5687016 -1613632 5687000 1613616 5687016 1613488 5693384 1614120 5694152 -1613616 5687016 1612336 5689264 1612312 5689384 1613488 5693384 -1613632 5687000 1613640 5687040 1615512 5696024 1623016 5701528 -1613640 5687040 1615376 5695816 1615512 5696024 1623016 5701528 -1613632 5687000 1615376 5695816 1613640 5687040 1623016 5701528 -1613632 5687000 1613640 5687040 1623016 5701528 1623192 5701576 -1613632 5687000 1615376 5695816 1613640 5687040 1623192 5701576 -1613632 5687000 1613640 5687040 1623192 5701576 1623296 5701624 -1613632 5687000 1615376 5695816 1613640 5687040 1623296 5701624 -1613640 5687040 1623016 5701528 1623192 5701576 1623296 5701624 -1613632 5687000 1613640 5687040 1623296 5701624 1623408 5701720 -1613640 5687040 1615512 5696024 1623016 5701528 1623192 5701576 -1615512 5696024 1615632 5696264 1623016 5701528 1613640 5687040 -1615376 5695816 1613640 5687040 1613632 5687000 1615200 5695576 -1613640 5687040 1623296 5701624 1613632 5687000 1615200 5695576 -1615376 5695816 1615512 5696024 1613640 5687040 1615200 5695576 -1613632 5687000 1614216 5694264 1615200 5695576 1613640 5687040 -1613632 5687000 1614216 5694264 1613640 5687040 1623296 5701624 -1613632 5687000 1614120 5694152 1614216 5694264 1613640 5687040 -1613632 5687000 1613488 5693384 1614120 5694152 1613640 5687040 -1613632 5687000 1613488 5693384 1613640 5687040 1623296 5701624 -1614120 5694152 1614216 5694264 1613640 5687040 1613488 5693384 -1613632 5687000 1613616 5687016 1613488 5693384 1613640 5687040 -1613488 5693384 1614120 5694152 1613640 5687040 1613616 5687016 -1613632 5687000 1613616 5687016 1613640 5687040 1623296 5701624 -1613488 5693384 1613584 5693568 1614120 5694152 1613640 5687040 -1614216 5694264 1615056 5695464 1615200 5695576 1613640 5687040 -1613616 5687016 1612312 5689384 1613488 5693384 1613640 5687040 -1613488 5693384 1614120 5694152 1613640 5687040 1612312 5689384 -1612312 5689384 1613384 5693288 1613488 5693384 1613640 5687040 -1613616 5687016 1612312 5689384 1613640 5687040 1613632 5687000 -1613616 5687016 1612336 5689264 1612312 5689384 1613640 5687040 -1613616 5687016 1612336 5689264 1613640 5687040 1613632 5687000 -1613616 5687016 1612320 5689216 1612336 5689264 1613640 5687040 -1613616 5687016 1612184 5687456 1612320 5689216 1613640 5687040 -1613616 5687016 1613336 5686872 1612184 5687456 1613640 5687040 -1613336 5686872 1612848 5686808 1612184 5687456 1613640 5687040 -1612184 5687456 1612112 5687552 1612320 5689216 1613640 5687040 -1612184 5687456 1612320 5689216 1613640 5687040 1613336 5686872 -1613616 5687016 1613336 5686872 1613640 5687040 1613632 5687000 -1613616 5687016 1613472 5686904 1613336 5686872 1613640 5687040 -1612320 5689216 1612336 5689264 1613640 5687040 1612184 5687456 -1612336 5689264 1612312 5689384 1613640 5687040 1612320 5689216 -1612312 5689384 1613488 5693384 1613640 5687040 1612336 5689264 -1614216 5694264 1615200 5695576 1613640 5687040 1614120 5694152 -1615200 5695576 1615376 5695816 1613640 5687040 1614216 5694264 -1612320 5689216 1613592 5687080 1612184 5687456 1612112 5687552 -1613592 5687080 1613640 5687040 1612184 5687456 1612112 5687552 -1612320 5689216 1613592 5687080 1612112 5687552 1612192 5689088 -1612320 5689216 1613640 5687040 1613592 5687080 1612112 5687552 -1612184 5687456 1613592 5687080 1613640 5687040 1613336 5686872 -1613592 5687080 1612320 5689216 1613640 5687040 1613336 5686872 -1612184 5687456 1612112 5687552 1613592 5687080 1613336 5686872 -1612184 5687456 1613592 5687080 1613336 5686872 1612848 5686808 -1612184 5687456 1613592 5687080 1612848 5686808 1612184 5687376 -1612184 5687456 1612112 5687552 1613592 5687080 1612848 5686808 -1613592 5687080 1613640 5687040 1613336 5686872 1612848 5686808 -1613640 5687040 1613616 5687016 1613336 5686872 1613592 5687080 -1613640 5687040 1613616 5687016 1613592 5687080 1612320 5689216 -1613336 5686872 1612848 5686808 1613592 5687080 1613616 5687016 -1613336 5686872 1612896 5686792 1612848 5686808 1613592 5687080 -1613616 5687016 1613472 5686904 1613336 5686872 1613592 5687080 -1613616 5687016 1613600 5686968 1613472 5686904 1613592 5687080 -1613616 5687016 1613632 5687000 1613600 5686968 1613592 5687080 -1613600 5686968 1613536 5686904 1613472 5686904 1613592 5687080 -1613336 5686872 1612848 5686808 1613592 5687080 1613472 5686904 -1613616 5687016 1613600 5686968 1613592 5687080 1613640 5687040 -1613472 5686904 1613336 5686872 1613592 5687080 1613600 5686968 -1613640 5687040 1613592 5687080 1612320 5689216 1612336 5689264 -1613640 5687040 1613616 5687016 1613592 5687080 1612336 5689264 -1613592 5687080 1612112 5687552 1612320 5689216 1612336 5689264 -1613640 5687040 1613592 5687080 1612336 5689264 1612312 5689384 -1612184 5687456 1613552 5687088 1612848 5686808 1612184 5687376 -1613592 5687080 1613552 5687088 1612184 5687456 1612112 5687552 -1613592 5687080 1612848 5686808 1613552 5687088 1612112 5687552 -1612848 5686808 1613552 5687088 1613592 5687080 1613336 5686872 -1613552 5687088 1612112 5687552 1613592 5687080 1613336 5686872 -1612848 5686808 1612184 5687456 1613552 5687088 1613336 5686872 -1613592 5687080 1613472 5686904 1613336 5686872 1613552 5687088 -1613592 5687080 1613472 5686904 1613552 5687088 1612112 5687552 -1613336 5686872 1612848 5686808 1613552 5687088 1613472 5686904 -1613592 5687080 1613552 5687088 1612112 5687552 1612320 5689216 -1613552 5687088 1612184 5687456 1612112 5687552 1612320 5689216 -1613592 5687080 1613472 5686904 1613552 5687088 1612320 5689216 -1612112 5687552 1612192 5689088 1612320 5689216 1613552 5687088 -1612112 5687552 1612192 5689088 1613552 5687088 1612184 5687456 -1612112 5687552 1612088 5689040 1612192 5689088 1613552 5687088 -1613592 5687080 1613552 5687088 1612320 5689216 1612336 5689264 -1612320 5689216 1613592 5687080 1613552 5687088 1612192 5689088 -1612848 5686808 1613552 5687088 1613336 5686872 1612896 5686792 -1613552 5687088 1612848 5686808 1612184 5687456 1612112 5687552 -1613592 5687080 1613600 5686968 1613472 5686904 1613552 5687088 -1613592 5687080 1613616 5687016 1613600 5686968 1613552 5687088 -1613616 5687016 1613632 5687000 1613600 5686968 1613552 5687088 -1613600 5686968 1613536 5686904 1613472 5686904 1613552 5687088 -1613600 5686968 1613592 5686944 1613536 5686904 1613552 5687088 -1613592 5687080 1613616 5687016 1613552 5687088 1612320 5689216 -1613472 5686904 1613336 5686872 1613552 5687088 1613536 5686904 -1613592 5687080 1613640 5687040 1613616 5687016 1613552 5687088 -1613600 5686968 1613536 5686904 1613552 5687088 1613616 5687016 -1613536 5686904 1613488 5686880 1613472 5686904 1613552 5687088 -1612184 5687456 1613440 5687080 1612848 5686808 1612184 5687376 -1612848 5686808 1613440 5687080 1613552 5687088 1613336 5686872 -1612848 5686808 1612184 5687456 1613440 5687080 1613336 5686872 -1613552 5687088 1613472 5686904 1613336 5686872 1613440 5687080 -1613336 5686872 1612848 5686808 1613440 5687080 1613472 5686904 -1613552 5687088 1613536 5686904 1613472 5686904 1613440 5687080 -1613440 5687080 1612184 5687456 1613552 5687088 1613472 5686904 -1612848 5686808 1613440 5687080 1613336 5686872 1612896 5686792 -1613336 5686872 1613272 5686816 1612896 5686792 1613440 5687080 -1612848 5686808 1612184 5687456 1613440 5687080 1612896 5686792 -1613440 5687080 1613472 5686904 1613336 5686872 1612896 5686792 -1613552 5687088 1613440 5687080 1612184 5687456 1612112 5687552 -1613440 5687080 1612848 5686808 1612184 5687456 1612112 5687552 -1613552 5687088 1613440 5687080 1612112 5687552 1612192 5689088 -1612112 5687552 1612088 5689040 1612192 5689088 1613440 5687080 -1613440 5687080 1612184 5687456 1612112 5687552 1612192 5689088 -1613552 5687088 1613440 5687080 1612192 5689088 1612320 5689216 -1613440 5687080 1612112 5687552 1612192 5689088 1612320 5689216 -1613552 5687088 1613440 5687080 1612320 5689216 1613592 5687080 -1613552 5687088 1613472 5686904 1613440 5687080 1612320 5689216 -1613440 5687080 1613352 5687104 1612184 5687456 1612112 5687552 -1612184 5687456 1613352 5687104 1612848 5686808 1612184 5687376 -1612848 5686808 1613352 5687104 1613440 5687080 1612896 5686792 -1612848 5686808 1612184 5687456 1613352 5687104 1612896 5686792 -1613352 5687104 1612848 5686808 1612184 5687456 1612112 5687552 -1613440 5687080 1612896 5686792 1613352 5687104 1612112 5687552 -1613440 5687080 1613352 5687104 1612112 5687552 1612192 5689088 -1612112 5687552 1612088 5689040 1612192 5689088 1613352 5687104 -1613440 5687080 1612896 5686792 1613352 5687104 1612192 5689088 -1613440 5687080 1613352 5687104 1612192 5689088 1612320 5689216 -1613440 5687080 1612896 5686792 1613352 5687104 1612320 5689216 -1613352 5687104 1612112 5687552 1612192 5689088 1612320 5689216 -1613440 5687080 1613352 5687104 1612320 5689216 1613552 5687088 -1613440 5687080 1612896 5686792 1613352 5687104 1613552 5687088 -1612320 5689216 1613592 5687080 1613552 5687088 1613352 5687104 -1613352 5687104 1612184 5687456 1612112 5687552 1612192 5689088 -1613352 5687104 1612192 5689088 1612320 5689216 1613552 5687088 -1613440 5687080 1613336 5686872 1612896 5686792 1613352 5687104 -1613336 5686872 1613272 5686816 1612896 5686792 1613352 5687104 -1613272 5686816 1613168 5686648 1612896 5686792 1613352 5687104 -1613440 5687080 1613336 5686872 1613352 5687104 1613552 5687088 -1613440 5687080 1613472 5686904 1613336 5686872 1613352 5687104 -1612896 5686792 1612848 5686808 1613352 5687104 1613272 5686816 -1613336 5686872 1613272 5686816 1613352 5687104 1613440 5687080 -1612192 5689088 1613336 5687136 1613352 5687104 1612112 5687552 -1612192 5689088 1613336 5687136 1612112 5687552 1612088 5689040 -1613352 5687104 1612184 5687456 1612112 5687552 1613336 5687136 -1613352 5687104 1612848 5686808 1612184 5687456 1613336 5687136 -1613352 5687104 1612896 5686792 1612848 5686808 1613336 5687136 -1612184 5687456 1612112 5687552 1613336 5687136 1612848 5686808 -1612848 5686808 1612184 5687376 1612184 5687456 1613336 5687136 -1612848 5686808 1612184 5687456 1613336 5687136 1612896 5686792 -1613336 5687136 1612320 5689216 1613352 5687104 1612896 5686792 -1612192 5689088 1612320 5689216 1613336 5687136 1612112 5687552 -1613352 5687104 1613336 5687136 1612320 5689216 1613552 5687088 -1613352 5687104 1613336 5687136 1613552 5687088 1613440 5687080 -1613336 5687136 1612320 5689216 1613552 5687088 1613440 5687080 -1613336 5687136 1612192 5689088 1612320 5689216 1613552 5687088 -1612320 5689216 1613592 5687080 1613552 5687088 1613336 5687136 -1613352 5687104 1612896 5686792 1613336 5687136 1613440 5687080 -1613352 5687104 1613272 5686816 1612896 5686792 1613336 5687136 -1613352 5687104 1613336 5686872 1613272 5686816 1613336 5687136 -1613272 5686816 1613168 5686648 1612896 5686792 1613336 5687136 -1612896 5686792 1612848 5686808 1613336 5687136 1613272 5686816 -1613352 5687104 1613272 5686816 1613336 5687136 1613440 5687080 -1612112 5687552 1612192 5689088 1613336 5687136 1612184 5687456 -1612192 5689088 1613296 5687152 1612112 5687552 1612088 5689040 -1613336 5687136 1613296 5687152 1612192 5689088 1612320 5689216 -1613296 5687152 1612112 5687552 1612192 5689088 1612320 5689216 -1613336 5687136 1612112 5687552 1613296 5687152 1612320 5689216 -1613336 5687136 1613296 5687152 1612320 5689216 1613552 5687088 -1613336 5687136 1612112 5687552 1613296 5687152 1613552 5687088 -1613336 5687136 1613296 5687152 1613552 5687088 1613440 5687080 -1612320 5689216 1613592 5687080 1613552 5687088 1613296 5687152 -1613296 5687152 1612192 5689088 1612320 5689216 1613552 5687088 -1612112 5687552 1613296 5687152 1613336 5687136 1612184 5687456 -1613336 5687136 1612848 5686808 1612184 5687456 1613296 5687152 -1612848 5686808 1612184 5687376 1612184 5687456 1613296 5687152 -1613296 5687152 1613552 5687088 1613336 5687136 1612848 5686808 -1612112 5687552 1612192 5689088 1613296 5687152 1612184 5687456 -1612184 5687456 1612112 5687552 1613296 5687152 1612184 5687376 -1612848 5686808 1612184 5687376 1613296 5687152 1613336 5687136 -1613336 5687136 1612896 5686792 1612848 5686808 1613296 5687152 -1613336 5687136 1612896 5686792 1613296 5687152 1613552 5687088 -1612848 5686808 1612184 5687376 1613296 5687152 1612896 5686792 -1613336 5687136 1613272 5686816 1612896 5686792 1613296 5687152 -1613272 5686816 1613168 5686648 1612896 5686792 1613296 5687152 -1613336 5687136 1613272 5686816 1613296 5687152 1613552 5687088 -1612896 5686792 1612848 5686808 1613296 5687152 1613272 5686816 -1613336 5687136 1613352 5687104 1613272 5686816 1613296 5687152 -1613352 5687104 1613336 5686872 1613272 5686816 1613296 5687152 -1613336 5687136 1613352 5687104 1613296 5687152 1613552 5687088 -1613352 5687104 1613336 5686872 1613296 5687152 1613336 5687136 -1613272 5686816 1612896 5686792 1613296 5687152 1613336 5686872 -1612848 5686808 1612704 5686768 1612184 5687376 1613296 5687152 -1613352 5687104 1613440 5687080 1613336 5686872 1613296 5687152 -1613296 5687152 1613264 5687192 1612192 5689088 1612320 5689216 -1613296 5687152 1612112 5687552 1613264 5687192 1612320 5689216 -1612192 5689088 1613264 5687192 1612112 5687552 1612088 5689040 -1612112 5687552 1613264 5687192 1613296 5687152 1612184 5687456 -1613264 5687192 1612320 5689216 1613296 5687152 1612184 5687456 -1612112 5687552 1612192 5689088 1613264 5687192 1612184 5687456 -1613296 5687152 1612184 5687376 1612184 5687456 1613264 5687192 -1613296 5687152 1612184 5687376 1613264 5687192 1612320 5689216 -1612184 5687456 1612112 5687552 1613264 5687192 1612184 5687376 -1613296 5687152 1612848 5686808 1612184 5687376 1613264 5687192 -1613296 5687152 1612848 5686808 1613264 5687192 1612320 5689216 -1613296 5687152 1612896 5686792 1612848 5686808 1613264 5687192 -1613296 5687152 1612896 5686792 1613264 5687192 1612320 5689216 -1612848 5686808 1612184 5687376 1613264 5687192 1612896 5686792 -1613296 5687152 1613272 5686816 1612896 5686792 1613264 5687192 -1612184 5687376 1612184 5687456 1613264 5687192 1612848 5686808 -1612848 5686808 1612704 5686768 1612184 5687376 1613264 5687192 -1613264 5687192 1612112 5687552 1612192 5689088 1612320 5689216 -1613296 5687152 1613264 5687192 1612320 5689216 1613552 5687088 -1613296 5687152 1612896 5686792 1613264 5687192 1613552 5687088 -1613264 5687192 1612192 5689088 1612320 5689216 1613552 5687088 -1612320 5689216 1613592 5687080 1613552 5687088 1613264 5687192 -1612320 5689216 1613592 5687080 1613264 5687192 1612192 5689088 -1613552 5687088 1613296 5687152 1613264 5687192 1613592 5687080 -1612320 5689216 1612336 5689264 1613592 5687080 1613264 5687192 -1612320 5689216 1612336 5689264 1613264 5687192 1612192 5689088 -1613592 5687080 1613552 5687088 1613264 5687192 1612336 5689264 -1612336 5689264 1613640 5687040 1613592 5687080 1613264 5687192 -1613296 5687152 1613264 5687192 1613552 5687088 1613336 5687136 -1613296 5687152 1612896 5686792 1613264 5687192 1613336 5687136 -1613552 5687088 1613440 5687080 1613336 5687136 1613264 5687192 -1613264 5687192 1613592 5687080 1613552 5687088 1613336 5687136 -1612336 5689264 1613232 5687320 1613264 5687192 1612320 5689216 -1613264 5687192 1612192 5689088 1612320 5689216 1613232 5687320 -1612320 5689216 1612336 5689264 1613232 5687320 1612192 5689088 -1613232 5687320 1613592 5687080 1613264 5687192 1612192 5689088 -1612336 5689264 1613592 5687080 1613232 5687320 1612320 5689216 -1613264 5687192 1613232 5687320 1613592 5687080 1613552 5687088 -1613264 5687192 1613232 5687320 1613552 5687088 1613336 5687136 -1613552 5687088 1613440 5687080 1613336 5687136 1613232 5687320 -1613264 5687192 1613232 5687320 1613336 5687136 1613296 5687152 -1613264 5687192 1612192 5689088 1613232 5687320 1613336 5687136 -1613232 5687320 1612336 5689264 1613592 5687080 1613552 5687088 -1613232 5687320 1613592 5687080 1613552 5687088 1613336 5687136 -1613592 5687080 1613232 5687320 1612336 5689264 1613640 5687040 -1613264 5687192 1612112 5687552 1612192 5689088 1613232 5687320 -1612192 5689088 1612320 5689216 1613232 5687320 1612112 5687552 -1613264 5687192 1612184 5687456 1612112 5687552 1613232 5687320 -1613264 5687192 1612184 5687376 1612184 5687456 1613232 5687320 -1612184 5687456 1612112 5687552 1613232 5687320 1612184 5687376 -1612112 5687552 1612088 5689040 1612192 5689088 1613232 5687320 -1613264 5687192 1612848 5686808 1612184 5687376 1613232 5687320 -1612184 5687376 1612184 5687456 1613232 5687320 1612848 5686808 -1613264 5687192 1612896 5686792 1612848 5686808 1613232 5687320 -1613264 5687192 1612848 5686808 1613232 5687320 1613336 5687136 -1612112 5687552 1612192 5689088 1613232 5687320 1612184 5687456 -1612848 5686808 1612704 5686768 1612184 5687376 1613232 5687320 -1613232 5687320 1613280 5687472 1613592 5687080 1613552 5687088 -1613232 5687320 1612336 5689264 1613280 5687472 1613552 5687088 -1613280 5687472 1612336 5689264 1613592 5687080 1613552 5687088 -1612336 5689264 1613280 5687472 1613232 5687320 1612320 5689216 -1613280 5687472 1613552 5687088 1613232 5687320 1612320 5689216 -1613232 5687320 1612192 5689088 1612320 5689216 1613280 5687472 -1613232 5687320 1612112 5687552 1612192 5689088 1613280 5687472 -1612112 5687552 1612088 5689040 1612192 5689088 1613280 5687472 -1613232 5687320 1612112 5687552 1613280 5687472 1613552 5687088 -1612192 5689088 1612320 5689216 1613280 5687472 1612112 5687552 -1613232 5687320 1612184 5687456 1612112 5687552 1613280 5687472 -1612112 5687552 1612192 5689088 1613280 5687472 1612184 5687456 -1613232 5687320 1612184 5687376 1612184 5687456 1613280 5687472 -1613232 5687320 1612184 5687456 1613280 5687472 1613552 5687088 -1612320 5689216 1612336 5689264 1613280 5687472 1612192 5689088 -1613232 5687320 1613280 5687472 1613552 5687088 1613336 5687136 -1613552 5687088 1613440 5687080 1613336 5687136 1613280 5687472 -1613232 5687320 1613280 5687472 1613336 5687136 1613264 5687192 -1613232 5687320 1612184 5687456 1613280 5687472 1613336 5687136 -1613280 5687472 1613592 5687080 1613552 5687088 1613336 5687136 -1612336 5689264 1613592 5687080 1613280 5687472 1612320 5689216 -1613592 5687080 1613280 5687472 1612336 5689264 1613640 5687040 -1613592 5687080 1613552 5687088 1613280 5687472 1613640 5687040 -1613280 5687472 1612320 5689216 1612336 5689264 1613640 5687040 -1612336 5689264 1612312 5689384 1613640 5687040 1613280 5687472 -1612336 5689264 1612312 5689384 1613280 5687472 1612320 5689216 -1613640 5687040 1613592 5687080 1613280 5687472 1612312 5689384 -1612312 5689384 1613488 5693384 1613640 5687040 1613280 5687472 -1613488 5693384 1614120 5694152 1613640 5687040 1613280 5687472 -1612312 5689384 1613384 5693288 1613488 5693384 1613280 5687472 -1613640 5687040 1613592 5687080 1613280 5687472 1613488 5693384 -1612312 5689384 1613488 5693384 1613280 5687472 1612336 5689264 -1613640 5687040 1613408 5687664 1613488 5693384 1614120 5694152 -1613408 5687664 1613280 5687472 1613488 5693384 1614120 5694152 -1613640 5687040 1613408 5687664 1614120 5694152 1614216 5694264 -1613408 5687664 1613488 5693384 1614120 5694152 1614216 5694264 -1613640 5687040 1613280 5687472 1613408 5687664 1614216 5694264 -1613280 5687472 1613408 5687664 1613640 5687040 1613592 5687080 -1613280 5687472 1613408 5687664 1613592 5687080 1613552 5687088 -1613280 5687472 1613488 5693384 1613408 5687664 1613552 5687088 -1613280 5687472 1613408 5687664 1613552 5687088 1613336 5687136 -1613408 5687664 1614216 5694264 1613640 5687040 1613592 5687080 -1613408 5687664 1613640 5687040 1613592 5687080 1613552 5687088 -1613488 5693384 1613584 5693568 1614120 5694152 1613408 5687664 -1613488 5693384 1613408 5687664 1613280 5687472 1612312 5689384 -1613488 5693384 1614120 5694152 1613408 5687664 1612312 5689384 -1613488 5693384 1613408 5687664 1612312 5689384 1613384 5693288 -1613488 5693384 1614120 5694152 1613408 5687664 1613384 5693288 -1613408 5687664 1613552 5687088 1613280 5687472 1612312 5689384 -1613280 5687472 1612336 5689264 1612312 5689384 1613408 5687664 -1613280 5687472 1612336 5689264 1613408 5687664 1613552 5687088 -1613280 5687472 1612320 5689216 1612336 5689264 1613408 5687664 -1613280 5687472 1612320 5689216 1613408 5687664 1613552 5687088 -1613280 5687472 1612192 5689088 1612320 5689216 1613408 5687664 -1613280 5687472 1612192 5689088 1613408 5687664 1613552 5687088 -1613280 5687472 1612112 5687552 1612192 5689088 1613408 5687664 -1613280 5687472 1612184 5687456 1612112 5687552 1613408 5687664 -1612112 5687552 1612088 5689040 1612192 5689088 1613408 5687664 -1613280 5687472 1612112 5687552 1613408 5687664 1613552 5687088 -1612192 5689088 1612320 5689216 1613408 5687664 1612112 5687552 -1612320 5689216 1612336 5689264 1613408 5687664 1612192 5689088 -1612336 5689264 1612312 5689384 1613408 5687664 1612320 5689216 -1612312 5689384 1613112 5693056 1613384 5693288 1613408 5687664 -1613408 5687664 1612336 5689264 1612312 5689384 1613384 5693288 -1613640 5687040 1613408 5687664 1614216 5694264 1615200 5695576 -1614216 5694264 1613424 5687768 1613408 5687664 1614120 5694152 -1613408 5687664 1613488 5693384 1614120 5694152 1613424 5687768 -1613408 5687664 1613384 5693288 1613488 5693384 1613424 5687768 -1613488 5693384 1614120 5694152 1613424 5687768 1613384 5693288 -1613408 5687664 1612312 5689384 1613384 5693288 1613424 5687768 -1613384 5693288 1613488 5693384 1613424 5687768 1612312 5689384 -1614216 5694264 1613640 5687040 1613424 5687768 1614120 5694152 -1614120 5694152 1614216 5694264 1613424 5687768 1613488 5693384 -1613408 5687664 1613424 5687768 1613640 5687040 1613592 5687080 -1613424 5687768 1613640 5687040 1613408 5687664 1612312 5689384 -1613488 5693384 1613584 5693568 1614120 5694152 1613424 5687768 -1612312 5689384 1613112 5693056 1613384 5693288 1613424 5687768 -1613408 5687664 1612336 5689264 1612312 5689384 1613424 5687768 -1612312 5689384 1613384 5693288 1613424 5687768 1612336 5689264 -1613408 5687664 1612336 5689264 1613424 5687768 1613640 5687040 -1613408 5687664 1612320 5689216 1612336 5689264 1613424 5687768 -1613408 5687664 1612192 5689088 1612320 5689216 1613424 5687768 -1613408 5687664 1612112 5687552 1612192 5689088 1613424 5687768 -1612112 5687552 1612088 5689040 1612192 5689088 1613424 5687768 -1613408 5687664 1613280 5687472 1612112 5687552 1613424 5687768 -1613280 5687472 1612184 5687456 1612112 5687552 1613424 5687768 -1613280 5687472 1612184 5687456 1613424 5687768 1613408 5687664 -1613280 5687472 1613232 5687320 1612184 5687456 1613424 5687768 -1612112 5687552 1612192 5689088 1613424 5687768 1612184 5687456 -1612192 5689088 1612320 5689216 1613424 5687768 1612112 5687552 -1613408 5687664 1613280 5687472 1613424 5687768 1613640 5687040 -1612320 5689216 1612336 5689264 1613424 5687768 1612192 5689088 -1612336 5689264 1612312 5689384 1613424 5687768 1612320 5689216 -1613640 5687040 1613424 5687768 1614216 5694264 1615200 5695576 -1613640 5687040 1613408 5687664 1613424 5687768 1615200 5695576 -1613424 5687768 1614120 5694152 1614216 5694264 1615200 5695576 -1614216 5694264 1615056 5695464 1615200 5695576 1613424 5687768 -1613640 5687040 1613424 5687768 1615200 5695576 1615376 5695816 -1612192 5689088 1613296 5687768 1612112 5687552 1612088 5689040 -1612112 5687552 1613296 5687768 1613424 5687768 1612184 5687456 -1613424 5687768 1613280 5687472 1612184 5687456 1613296 5687768 -1613296 5687768 1612192 5689088 1613424 5687768 1613280 5687472 -1613424 5687768 1613408 5687664 1613280 5687472 1613296 5687768 -1613280 5687472 1612184 5687456 1613296 5687768 1613408 5687664 -1613424 5687768 1613408 5687664 1613296 5687768 1612192 5689088 -1613280 5687472 1613232 5687320 1612184 5687456 1613296 5687768 -1612184 5687456 1612112 5687552 1613296 5687768 1613280 5687472 -1613424 5687768 1613296 5687768 1612192 5689088 1612320 5689216 -1613424 5687768 1613408 5687664 1613296 5687768 1612320 5689216 -1613296 5687768 1612112 5687552 1612192 5689088 1612320 5689216 -1613424 5687768 1613296 5687768 1612320 5689216 1612336 5689264 -1612112 5687552 1612192 5689088 1613296 5687768 1612184 5687456 -1612192 5689088 1613200 5687752 1612112 5687552 1612088 5689040 -1613296 5687768 1613200 5687752 1612192 5689088 1612320 5689216 -1613296 5687768 1612112 5687552 1613200 5687752 1612320 5689216 -1613296 5687768 1613200 5687752 1612320 5689216 1613424 5687768 -1612112 5687552 1613200 5687752 1613296 5687768 1612184 5687456 -1613200 5687752 1612320 5689216 1613296 5687768 1612184 5687456 -1613296 5687768 1613280 5687472 1612184 5687456 1613200 5687752 -1613296 5687768 1613408 5687664 1613280 5687472 1613200 5687752 -1613296 5687768 1613408 5687664 1613200 5687752 1612320 5689216 -1613296 5687768 1613424 5687768 1613408 5687664 1613200 5687752 -1613280 5687472 1613232 5687320 1612184 5687456 1613200 5687752 -1613232 5687320 1612184 5687376 1612184 5687456 1613200 5687752 -1613280 5687472 1613232 5687320 1613200 5687752 1613408 5687664 -1612112 5687552 1612192 5689088 1613200 5687752 1612184 5687456 -1612184 5687456 1612112 5687552 1613200 5687752 1613232 5687320 -1613200 5687752 1612112 5687552 1612192 5689088 1612320 5689216 -1612184 5687456 1613120 5687704 1613232 5687320 1612184 5687376 -1613232 5687320 1612848 5686808 1612184 5687376 1613120 5687704 -1613120 5687704 1613200 5687752 1613232 5687320 1612184 5687376 -1613232 5687320 1613120 5687704 1613200 5687752 1613280 5687472 -1613232 5687320 1612184 5687376 1613120 5687704 1613280 5687472 -1613200 5687752 1613408 5687664 1613280 5687472 1613120 5687704 -1612184 5687456 1613200 5687752 1613120 5687704 1612184 5687376 -1613200 5687752 1613120 5687704 1612184 5687456 1612112 5687552 -1613200 5687752 1613120 5687704 1612112 5687552 1612192 5689088 -1612112 5687552 1612088 5689040 1612192 5689088 1613120 5687704 -1613120 5687704 1612184 5687376 1612184 5687456 1612112 5687552 -1613120 5687704 1612184 5687456 1612112 5687552 1612192 5689088 -1613200 5687752 1613120 5687704 1612192 5689088 1612320 5689216 -1613120 5687704 1612192 5689088 1613200 5687752 1613280 5687472 -1612192 5689088 1613008 5687736 1612112 5687552 1612088 5689040 -1612192 5689088 1613120 5687704 1613008 5687736 1612088 5689040 -1613120 5687704 1613008 5687736 1612192 5689088 1613200 5687752 -1613008 5687736 1612088 5689040 1612192 5689088 1613200 5687752 -1613120 5687704 1612112 5687552 1613008 5687736 1613200 5687752 -1612112 5687552 1611968 5687600 1612088 5689040 1613008 5687736 -1613008 5687736 1613120 5687704 1612112 5687552 1612088 5689040 -1612112 5687552 1613008 5687736 1613120 5687704 1612184 5687456 -1613120 5687704 1612184 5687376 1612184 5687456 1613008 5687736 -1613120 5687704 1613232 5687320 1612184 5687376 1613008 5687736 -1613232 5687320 1612848 5686808 1612184 5687376 1613008 5687736 -1613232 5687320 1612848 5686808 1613008 5687736 1613120 5687704 -1613120 5687704 1613280 5687472 1613232 5687320 1613008 5687736 -1613232 5687320 1613264 5687192 1612848 5686808 1613008 5687736 -1612184 5687376 1612184 5687456 1613008 5687736 1612848 5686808 -1613008 5687736 1613200 5687752 1613120 5687704 1613232 5687320 -1612112 5687552 1612088 5689040 1613008 5687736 1612184 5687456 -1612848 5686808 1612704 5686768 1612184 5687376 1613008 5687736 -1612184 5687456 1612112 5687552 1613008 5687736 1612184 5687376 -1612192 5689088 1612320 5689216 1613200 5687752 1613008 5687736 -1612192 5689088 1612320 5689216 1613008 5687736 1612088 5689040 -1612320 5689216 1613296 5687768 1613200 5687752 1613008 5687736 -1613200 5687752 1613120 5687704 1613008 5687736 1612320 5689216 -1613008 5687736 1612896 5687808 1612088 5689040 1612192 5689088 -1613008 5687736 1612896 5687808 1612192 5689088 1612320 5689216 -1612896 5687808 1612088 5689040 1612192 5689088 1612320 5689216 -1613008 5687736 1612112 5687552 1612896 5687808 1612320 5689216 -1612088 5689040 1612896 5687808 1612112 5687552 1611968 5687600 -1612112 5687552 1612896 5687808 1613008 5687736 1612184 5687456 -1612112 5687552 1612088 5689040 1612896 5687808 1612184 5687456 -1612896 5687808 1612320 5689216 1613008 5687736 1612184 5687456 -1612896 5687808 1612112 5687552 1612088 5689040 1612192 5689088 -1613008 5687736 1612184 5687376 1612184 5687456 1612896 5687808 -1613008 5687736 1612184 5687376 1612896 5687808 1612320 5689216 -1613008 5687736 1612848 5686808 1612184 5687376 1612896 5687808 -1612184 5687456 1612112 5687552 1612896 5687808 1612184 5687376 -1613008 5687736 1612896 5687808 1612320 5689216 1613200 5687752 -1612896 5687808 1612192 5689088 1612320 5689216 1613200 5687752 -1613008 5687736 1612184 5687376 1612896 5687808 1613200 5687752 -1612320 5689216 1613296 5687768 1613200 5687752 1612896 5687808 -1612320 5689216 1613296 5687768 1612896 5687808 1612192 5689088 -1613008 5687736 1612896 5687808 1613200 5687752 1613120 5687704 -1612320 5689216 1613424 5687768 1613296 5687768 1612896 5687808 -1613200 5687752 1613008 5687736 1612896 5687808 1613296 5687768 -1612112 5687552 1612864 5687848 1612896 5687808 1612184 5687456 -1612112 5687552 1612088 5689040 1612864 5687848 1612184 5687456 -1612088 5689040 1612864 5687848 1612112 5687552 1611968 5687600 -1612864 5687848 1612184 5687456 1612112 5687552 1611968 5687600 -1612088 5689040 1612896 5687808 1612864 5687848 1611968 5687600 -1612088 5689040 1612864 5687848 1611968 5687600 1611488 5688024 -1612896 5687808 1612184 5687376 1612184 5687456 1612864 5687848 -1612896 5687808 1612864 5687848 1612088 5689040 1612192 5689088 -1612864 5687848 1611968 5687600 1612088 5689040 1612192 5689088 -1612896 5687808 1612864 5687848 1612192 5689088 1612320 5689216 -1612896 5687808 1612864 5687848 1612320 5689216 1613296 5687768 -1612864 5687848 1612192 5689088 1612320 5689216 1613296 5687768 -1612896 5687808 1612864 5687848 1613296 5687768 1613200 5687752 -1612864 5687848 1612320 5689216 1613296 5687768 1613200 5687752 -1612864 5687848 1612088 5689040 1612192 5689088 1612320 5689216 -1612864 5687848 1613200 5687752 1612896 5687808 1612184 5687456 -1612320 5689216 1613424 5687768 1613296 5687768 1612864 5687848 -1612896 5687808 1612864 5687848 1613200 5687752 1613008 5687736 -1612320 5689216 1612856 5687888 1612864 5687848 1612192 5689088 -1612320 5689216 1613296 5687768 1612856 5687888 1612192 5689088 -1612856 5687888 1613296 5687768 1612864 5687848 1612192 5689088 -1612864 5687848 1612856 5687888 1613296 5687768 1613200 5687752 -1612856 5687888 1612320 5689216 1613296 5687768 1613200 5687752 -1612864 5687848 1612192 5689088 1612856 5687888 1613200 5687752 -1612864 5687848 1612856 5687888 1613200 5687752 1612896 5687808 -1612864 5687848 1612192 5689088 1612856 5687888 1612896 5687808 -1612856 5687888 1613296 5687768 1613200 5687752 1612896 5687808 -1612864 5687848 1612088 5689040 1612192 5689088 1612856 5687888 -1612864 5687848 1611968 5687600 1612088 5689040 1612856 5687888 -1612864 5687848 1611968 5687600 1612856 5687888 1612896 5687808 -1611968 5687600 1611488 5688024 1612088 5689040 1612856 5687888 -1612192 5689088 1612320 5689216 1612856 5687888 1612088 5689040 -1612864 5687848 1612112 5687552 1611968 5687600 1612856 5687888 -1612864 5687848 1612184 5687456 1612112 5687552 1612856 5687888 -1611968 5687600 1612088 5689040 1612856 5687888 1612112 5687552 -1612864 5687848 1612112 5687552 1612856 5687888 1612896 5687808 -1612088 5689040 1612192 5689088 1612856 5687888 1611968 5687600 -1613296 5687768 1612856 5687888 1612320 5689216 1613424 5687768 -1613200 5687752 1613008 5687736 1612896 5687808 1612856 5687888 -1613200 5687752 1613008 5687736 1612856 5687888 1613296 5687768 -1612896 5687808 1612864 5687848 1612856 5687888 1613008 5687736 -1613200 5687752 1613120 5687704 1613008 5687736 1612856 5687888 -1612856 5687888 1612848 5687960 1613296 5687768 1613200 5687752 -1612856 5687888 1612320 5689216 1612848 5687960 1613200 5687752 -1612320 5689216 1612848 5687960 1612856 5687888 1612192 5689088 -1612848 5687960 1613200 5687752 1612856 5687888 1612192 5689088 -1612848 5687960 1612320 5689216 1613296 5687768 1613200 5687752 -1612856 5687888 1612088 5689040 1612192 5689088 1612848 5687960 -1612856 5687888 1612088 5689040 1612848 5687960 1613200 5687752 -1612192 5689088 1612320 5689216 1612848 5687960 1612088 5689040 -1612856 5687888 1612848 5687960 1613200 5687752 1613008 5687736 -1612848 5687960 1613296 5687768 1613200 5687752 1613008 5687736 -1612856 5687888 1612088 5689040 1612848 5687960 1613008 5687736 -1613200 5687752 1613120 5687704 1613008 5687736 1612848 5687960 -1612320 5689216 1613296 5687768 1612848 5687960 1612192 5689088 -1612856 5687888 1611968 5687600 1612088 5689040 1612848 5687960 -1612856 5687888 1611968 5687600 1612848 5687960 1613008 5687736 -1612856 5687888 1612112 5687552 1611968 5687600 1612848 5687960 -1612856 5687888 1612112 5687552 1612848 5687960 1613008 5687736 -1611968 5687600 1611488 5688024 1612088 5689040 1612848 5687960 -1612088 5689040 1612192 5689088 1612848 5687960 1611968 5687600 -1612856 5687888 1612864 5687848 1612112 5687552 1612848 5687960 -1611968 5687600 1612088 5689040 1612848 5687960 1612112 5687552 -1613296 5687768 1612848 5687960 1612320 5689216 1613424 5687768 -1613296 5687768 1613200 5687752 1612848 5687960 1613424 5687768 -1612848 5687960 1612192 5689088 1612320 5689216 1613424 5687768 -1612320 5689216 1612336 5689264 1613424 5687768 1612848 5687960 -1612320 5689216 1612336 5689264 1612848 5687960 1612192 5689088 -1613424 5687768 1613296 5687768 1612848 5687960 1612336 5689264 -1612336 5689264 1612312 5689384 1613424 5687768 1612848 5687960 -1612856 5687888 1612848 5687960 1613008 5687736 1612896 5687808 -1612848 5687960 1612808 5688104 1613424 5687768 1613296 5687768 -1612848 5687960 1612808 5688104 1613296 5687768 1613200 5687752 -1612848 5687960 1612336 5689264 1612808 5688104 1613296 5687768 -1612808 5688104 1612336 5689264 1613424 5687768 1613296 5687768 -1612336 5689264 1612808 5688104 1612848 5687960 1612320 5689216 -1612808 5688104 1613296 5687768 1612848 5687960 1612320 5689216 -1612848 5687960 1612192 5689088 1612320 5689216 1612808 5688104 -1612848 5687960 1612088 5689040 1612192 5689088 1612808 5688104 -1612848 5687960 1612088 5689040 1612808 5688104 1613296 5687768 -1612848 5687960 1611968 5687600 1612088 5689040 1612808 5688104 -1612088 5689040 1612192 5689088 1612808 5688104 1611968 5687600 -1612848 5687960 1611968 5687600 1612808 5688104 1613296 5687768 -1611968 5687600 1611488 5688024 1612088 5689040 1612808 5688104 -1612088 5689040 1612192 5689088 1612808 5688104 1611488 5688024 -1611968 5687600 1611488 5688024 1612808 5688104 1612848 5687960 -1611488 5688024 1611408 5688288 1612088 5689040 1612808 5688104 -1611968 5687600 1611736 5687600 1611488 5688024 1612808 5688104 -1612192 5689088 1612320 5689216 1612808 5688104 1612088 5689040 -1612848 5687960 1612112 5687552 1611968 5687600 1612808 5688104 -1612848 5687960 1612112 5687552 1612808 5688104 1613296 5687768 -1612848 5687960 1612856 5687888 1612112 5687552 1612808 5688104 -1611968 5687600 1611488 5688024 1612808 5688104 1612112 5687552 -1612320 5689216 1612336 5689264 1612808 5688104 1612192 5689088 -1613424 5687768 1612808 5688104 1612336 5689264 1612312 5689384 -1612336 5689264 1613424 5687768 1612808 5688104 1612320 5689216 -1612192 5689088 1612672 5688344 1612808 5688104 1612088 5689040 -1612808 5688104 1611488 5688024 1612088 5689040 1612672 5688344 -1612808 5688104 1611968 5687600 1611488 5688024 1612672 5688344 -1611488 5688024 1612088 5689040 1612672 5688344 1611968 5687600 -1612808 5688104 1612112 5687552 1611968 5687600 1612672 5688344 -1611968 5687600 1611488 5688024 1612672 5688344 1612112 5687552 -1611488 5688024 1611408 5688288 1612088 5689040 1612672 5688344 -1611488 5688024 1611408 5688288 1612672 5688344 1611968 5687600 -1611408 5688288 1611416 5688480 1612088 5689040 1612672 5688344 -1611408 5688288 1611416 5688480 1612672 5688344 1611488 5688024 -1611968 5687600 1611736 5687600 1611488 5688024 1612672 5688344 -1611416 5688480 1611920 5689032 1612088 5689040 1612672 5688344 -1612192 5689088 1612320 5689216 1612672 5688344 1612088 5689040 -1612088 5689040 1612192 5689088 1612672 5688344 1611416 5688480 -1612672 5688344 1612320 5689216 1612808 5688104 1612112 5687552 -1612808 5688104 1612848 5687960 1612112 5687552 1612672 5688344 -1612808 5688104 1612672 5688344 1612320 5689216 1612336 5689264 -1612808 5688104 1612112 5687552 1612672 5688344 1612336 5689264 -1612808 5688104 1612672 5688344 1612336 5689264 1613424 5687768 -1612808 5688104 1612672 5688344 1613424 5687768 1613296 5687768 -1612808 5688104 1612112 5687552 1612672 5688344 1613424 5687768 -1612672 5688344 1612320 5689216 1612336 5689264 1613424 5687768 -1612336 5689264 1612312 5689384 1613424 5687768 1612672 5688344 -1612672 5688344 1612192 5689088 1612320 5689216 1612336 5689264 -1612336 5689264 1612640 5688440 1612672 5688344 1612320 5689216 -1612336 5689264 1613424 5687768 1612640 5688440 1612320 5689216 -1613424 5687768 1612640 5688440 1612336 5689264 1612312 5689384 -1612672 5688344 1612640 5688440 1613424 5687768 1612808 5688104 -1612672 5688344 1612192 5689088 1612320 5689216 1612640 5688440 -1612672 5688344 1612088 5689040 1612192 5689088 1612640 5688440 -1612672 5688344 1611416 5688480 1612088 5689040 1612640 5688440 -1612672 5688344 1611408 5688288 1611416 5688480 1612640 5688440 -1612672 5688344 1611488 5688024 1611408 5688288 1612640 5688440 -1612672 5688344 1611968 5687600 1611488 5688024 1612640 5688440 -1612672 5688344 1612112 5687552 1611968 5687600 1612640 5688440 -1611488 5688024 1611408 5688288 1612640 5688440 1611968 5687600 -1611408 5688288 1611416 5688480 1612640 5688440 1611488 5688024 -1611968 5687600 1611736 5687600 1611488 5688024 1612640 5688440 -1611416 5688480 1611920 5689032 1612088 5689040 1612640 5688440 -1611416 5688480 1611520 5689000 1611920 5689032 1612640 5688440 -1612088 5689040 1612192 5689088 1612640 5688440 1611920 5689032 -1611416 5688480 1611920 5689032 1612640 5688440 1611408 5688288 -1612320 5689216 1612336 5689264 1612640 5688440 1612192 5689088 -1612192 5689088 1612320 5689216 1612640 5688440 1612088 5689040 -1612640 5688440 1613424 5687768 1612672 5688344 1611968 5687600 -1612336 5689264 1612648 5688560 1612640 5688440 1612320 5689216 -1612336 5689264 1613424 5687768 1612648 5688560 1612320 5689216 -1612640 5688440 1612648 5688560 1613424 5687768 1612672 5688344 -1612648 5688560 1612336 5689264 1613424 5687768 1612672 5688344 -1612648 5688560 1612672 5688344 1612640 5688440 1612320 5689216 -1612640 5688440 1612192 5689088 1612320 5689216 1612648 5688560 -1612320 5689216 1612336 5689264 1612648 5688560 1612192 5689088 -1612640 5688440 1612192 5689088 1612648 5688560 1612672 5688344 -1613424 5687768 1612648 5688560 1612336 5689264 1612312 5689384 -1612648 5688560 1612320 5689216 1612336 5689264 1612312 5689384 -1613424 5687768 1612648 5688560 1612312 5689384 1613384 5693288 -1613424 5687768 1612672 5688344 1612648 5688560 1612312 5689384 -1613424 5687768 1612808 5688104 1612672 5688344 1612648 5688560 -1613424 5687768 1612808 5688104 1612648 5688560 1612312 5689384 -1612672 5688344 1612640 5688440 1612648 5688560 1612808 5688104 -1613424 5687768 1613296 5687768 1612808 5688104 1612648 5688560 -1612640 5688440 1612088 5689040 1612192 5689088 1612648 5688560 -1612640 5688440 1611920 5689032 1612088 5689040 1612648 5688560 -1612640 5688440 1612088 5689040 1612648 5688560 1612672 5688344 -1612192 5689088 1612320 5689216 1612648 5688560 1612088 5689040 -1613424 5687768 1612712 5688680 1612312 5689384 1613384 5693288 -1613424 5687768 1612712 5688680 1613384 5693288 1613488 5693384 -1613424 5687768 1612712 5688680 1613488 5693384 1614120 5694152 -1613424 5687768 1612648 5688560 1612712 5688680 1613488 5693384 -1612712 5688680 1612312 5689384 1613384 5693288 1613488 5693384 -1612648 5688560 1612712 5688680 1613424 5687768 1612808 5688104 -1612712 5688680 1613488 5693384 1613424 5687768 1612808 5688104 -1612648 5688560 1612312 5689384 1612712 5688680 1612808 5688104 -1612712 5688680 1612648 5688560 1612312 5689384 1613384 5693288 -1613424 5687768 1613296 5687768 1612808 5688104 1612712 5688680 -1612312 5689384 1613112 5693056 1613384 5693288 1612712 5688680 -1613384 5693288 1613488 5693384 1612712 5688680 1613112 5693056 -1613112 5693056 1613216 5693184 1613384 5693288 1612712 5688680 -1612312 5689384 1613016 5692968 1613112 5693056 1612712 5688680 -1612312 5689384 1613112 5693056 1612712 5688680 1612648 5688560 -1612312 5689384 1612712 5688680 1612648 5688560 1612336 5689264 -1612648 5688560 1612320 5689216 1612336 5689264 1612712 5688680 -1612648 5688560 1612192 5689088 1612320 5689216 1612712 5688680 -1612320 5689216 1612336 5689264 1612712 5688680 1612192 5689088 -1612712 5688680 1612808 5688104 1612648 5688560 1612192 5689088 -1612312 5689384 1613112 5693056 1612712 5688680 1612336 5689264 -1612648 5688560 1612088 5689040 1612192 5689088 1612712 5688680 -1612336 5689264 1612312 5689384 1612712 5688680 1612320 5689216 -1612648 5688560 1612712 5688680 1612808 5688104 1612672 5688344 -1612712 5688680 1613424 5687768 1612808 5688104 1612672 5688344 -1612648 5688560 1612192 5689088 1612712 5688680 1612672 5688344 -1612648 5688560 1612712 5688680 1612672 5688344 1612640 5688440 -1613424 5687768 1612816 5688784 1613488 5693384 1614120 5694152 -1613488 5693384 1612816 5688784 1612712 5688680 1613384 5693288 -1612712 5688680 1612816 5688784 1613424 5687768 1612808 5688104 -1612816 5688784 1612808 5688104 1612712 5688680 1613384 5693288 -1612712 5688680 1613112 5693056 1613384 5693288 1612816 5688784 -1613384 5693288 1613488 5693384 1612816 5688784 1613112 5693056 -1612712 5688680 1613112 5693056 1612816 5688784 1612808 5688104 -1613112 5693056 1613216 5693184 1613384 5693288 1612816 5688784 -1612712 5688680 1612816 5688784 1612808 5688104 1612672 5688344 -1612816 5688784 1613424 5687768 1612808 5688104 1612672 5688344 -1612712 5688680 1613112 5693056 1612816 5688784 1612672 5688344 -1612816 5688784 1613488 5693384 1613424 5687768 1612808 5688104 -1613488 5693384 1613424 5687768 1612816 5688784 1613384 5693288 -1613424 5687768 1613296 5687768 1612808 5688104 1612816 5688784 -1612712 5688680 1612312 5689384 1613112 5693056 1612816 5688784 -1612712 5688680 1612312 5689384 1612816 5688784 1612672 5688344 -1613112 5693056 1613384 5693288 1612816 5688784 1612312 5689384 -1612312 5689384 1613016 5692968 1613112 5693056 1612816 5688784 -1612312 5689384 1612288 5689416 1613016 5692968 1612816 5688784 -1613112 5693056 1613384 5693288 1612816 5688784 1613016 5692968 -1612712 5688680 1612336 5689264 1612312 5689384 1612816 5688784 -1612712 5688680 1612336 5689264 1612816 5688784 1612672 5688344 -1612312 5689384 1613016 5692968 1612816 5688784 1612336 5689264 -1612712 5688680 1612320 5689216 1612336 5689264 1612816 5688784 -1612712 5688680 1612192 5689088 1612320 5689216 1612816 5688784 -1612712 5688680 1612320 5689216 1612816 5688784 1612672 5688344 -1612336 5689264 1612312 5689384 1612816 5688784 1612320 5689216 -1612712 5688680 1612816 5688784 1612672 5688344 1612648 5688560 -1613424 5687768 1612944 5688856 1613488 5693384 1614120 5694152 -1612944 5688856 1612816 5688784 1613488 5693384 1614120 5694152 -1612816 5688784 1612944 5688856 1613424 5687768 1612808 5688104 -1612816 5688784 1612944 5688856 1612808 5688104 1612672 5688344 -1612816 5688784 1612944 5688856 1612672 5688344 1612712 5688680 -1612944 5688856 1613424 5687768 1612808 5688104 1612672 5688344 -1612816 5688784 1613488 5693384 1612944 5688856 1612672 5688344 -1613488 5693384 1612944 5688856 1612816 5688784 1613384 5693288 -1612816 5688784 1613112 5693056 1613384 5693288 1612944 5688856 -1613488 5693384 1614120 5694152 1612944 5688856 1613384 5693288 -1612816 5688784 1613016 5692968 1613112 5693056 1612944 5688856 -1613112 5693056 1613384 5693288 1612944 5688856 1613016 5692968 -1613112 5693056 1613216 5693184 1613384 5693288 1612944 5688856 -1612816 5688784 1612312 5689384 1613016 5692968 1612944 5688856 -1612312 5689384 1612288 5689416 1613016 5692968 1612944 5688856 -1613016 5692968 1613112 5693056 1612944 5688856 1612288 5689416 -1612288 5689416 1612880 5692928 1613016 5692968 1612944 5688856 -1612312 5689384 1612288 5689416 1612944 5688856 1612816 5688784 -1612944 5688856 1612672 5688344 1612816 5688784 1612312 5689384 -1613384 5693288 1613488 5693384 1612944 5688856 1613112 5693056 -1613424 5687768 1612808 5688104 1612944 5688856 1614120 5694152 -1613424 5687768 1612944 5688856 1614120 5694152 1614216 5694264 -1613424 5687768 1613296 5687768 1612808 5688104 1612944 5688856 -1613488 5693384 1613584 5693568 1614120 5694152 1612944 5688856 -1612816 5688784 1612336 5689264 1612312 5689384 1612944 5688856 -1612312 5689384 1612288 5689416 1612944 5688856 1612336 5689264 -1612816 5688784 1612320 5689216 1612336 5689264 1612944 5688856 -1612816 5688784 1612336 5689264 1612944 5688856 1612672 5688344 -1614120 5694152 1613088 5688888 1612944 5688856 1613488 5693384 -1612944 5688856 1613384 5693288 1613488 5693384 1613088 5688888 -1613488 5693384 1614120 5694152 1613088 5688888 1613384 5693288 -1614120 5694152 1613424 5687768 1613088 5688888 1613488 5693384 -1612944 5688856 1613112 5693056 1613384 5693288 1613088 5688888 -1612944 5688856 1613016 5692968 1613112 5693056 1613088 5688888 -1613384 5693288 1613488 5693384 1613088 5688888 1613112 5693056 -1612944 5688856 1612288 5689416 1613016 5692968 1613088 5688888 -1612944 5688856 1612312 5689384 1612288 5689416 1613088 5688888 -1613016 5692968 1613112 5693056 1613088 5688888 1612288 5689416 -1612288 5689416 1613016 5692968 1613088 5688888 1612312 5689384 -1613112 5693056 1613216 5693184 1613384 5693288 1613088 5688888 -1612288 5689416 1612880 5692928 1613016 5692968 1613088 5688888 -1612944 5688856 1612336 5689264 1612312 5689384 1613088 5688888 -1612312 5689384 1612288 5689416 1613088 5688888 1612336 5689264 -1613112 5693056 1613384 5693288 1613088 5688888 1613016 5692968 -1612944 5688856 1613088 5688888 1613424 5687768 1612808 5688104 -1613088 5688888 1614120 5694152 1613424 5687768 1612808 5688104 -1612944 5688856 1613088 5688888 1612808 5688104 1612672 5688344 -1612944 5688856 1613088 5688888 1612672 5688344 1612816 5688784 -1613088 5688888 1613424 5687768 1612808 5688104 1612672 5688344 -1613088 5688888 1612672 5688344 1612944 5688856 1612336 5689264 -1613424 5687768 1613088 5688888 1614120 5694152 1614216 5694264 -1613424 5687768 1612808 5688104 1613088 5688888 1614216 5694264 -1613424 5687768 1613088 5688888 1614216 5694264 1615200 5695576 -1613088 5688888 1613488 5693384 1614120 5694152 1614216 5694264 -1613424 5687768 1613296 5687768 1612808 5688104 1613088 5688888 -1613424 5687768 1613296 5687768 1613088 5688888 1614216 5694264 -1612808 5688104 1612672 5688344 1613088 5688888 1613296 5687768 -1613296 5687768 1612848 5687960 1612808 5688104 1613088 5688888 -1614120 5694152 1613088 5688888 1613488 5693384 1613584 5693568 -1612944 5688856 1612816 5688784 1612336 5689264 1613088 5688888 -1613088 5688888 1613336 5688792 1613424 5687768 1613296 5687768 -1613088 5688888 1614216 5694264 1613336 5688792 1613296 5687768 -1613424 5687768 1613336 5688792 1614216 5694264 1615200 5695576 -1613336 5688792 1613088 5688888 1614216 5694264 1615200 5695576 -1613336 5688792 1615200 5695576 1613424 5687768 1613296 5687768 -1614216 5694264 1613336 5688792 1613088 5688888 1614120 5694152 -1613336 5688792 1613296 5687768 1613088 5688888 1614120 5694152 -1614216 5694264 1615200 5695576 1613336 5688792 1614120 5694152 -1613088 5688888 1613488 5693384 1614120 5694152 1613336 5688792 -1613088 5688888 1613384 5693288 1613488 5693384 1613336 5688792 -1613088 5688888 1613112 5693056 1613384 5693288 1613336 5688792 -1613384 5693288 1613488 5693384 1613336 5688792 1613112 5693056 -1613088 5688888 1613112 5693056 1613336 5688792 1613296 5687768 -1613112 5693056 1613216 5693184 1613384 5693288 1613336 5688792 -1613488 5693384 1614120 5694152 1613336 5688792 1613384 5693288 -1613088 5688888 1613016 5692968 1613112 5693056 1613336 5688792 -1613088 5688888 1612288 5689416 1613016 5692968 1613336 5688792 -1613112 5693056 1613384 5693288 1613336 5688792 1613016 5692968 -1613088 5688888 1613016 5692968 1613336 5688792 1613296 5687768 -1614120 5694152 1614216 5694264 1613336 5688792 1613488 5693384 -1613088 5688888 1613336 5688792 1613296 5687768 1612808 5688104 -1613336 5688792 1613424 5687768 1613296 5687768 1612808 5688104 -1613088 5688888 1613016 5692968 1613336 5688792 1612808 5688104 -1613088 5688888 1613336 5688792 1612808 5688104 1612672 5688344 -1613088 5688888 1613016 5692968 1613336 5688792 1612672 5688344 -1613088 5688888 1613336 5688792 1612672 5688344 1612944 5688856 -1612672 5688344 1612816 5688784 1612944 5688856 1613336 5688792 -1613088 5688888 1613016 5692968 1613336 5688792 1612944 5688856 -1612672 5688344 1612712 5688680 1612816 5688784 1613336 5688792 -1612944 5688856 1613088 5688888 1613336 5688792 1612816 5688784 -1613336 5688792 1612808 5688104 1612672 5688344 1612816 5688784 -1613336 5688792 1613296 5687768 1612808 5688104 1612672 5688344 -1613296 5687768 1612848 5687960 1612808 5688104 1613336 5688792 -1613488 5693384 1613584 5693568 1614120 5694152 1613336 5688792 -1614216 5694264 1615056 5695464 1615200 5695576 1613336 5688792 -1613424 5687768 1613336 5688792 1615200 5695576 1613640 5687040 -1613424 5687768 1613336 5688792 1613640 5687040 1613408 5687664 -1613336 5688792 1614216 5694264 1615200 5695576 1613640 5687040 -1613424 5687768 1613296 5687768 1613336 5688792 1613640 5687040 -1615200 5695576 1615376 5695816 1613640 5687040 1613336 5688792 -1615200 5695576 1613392 5688832 1613336 5688792 1614216 5694264 -1613336 5688792 1614120 5694152 1614216 5694264 1613392 5688832 -1614216 5694264 1615200 5695576 1613392 5688832 1614120 5694152 -1613392 5688832 1613640 5687040 1613336 5688792 1614120 5694152 -1613336 5688792 1613488 5693384 1614120 5694152 1613392 5688832 -1614120 5694152 1614216 5694264 1613392 5688832 1613488 5693384 -1613336 5688792 1613384 5693288 1613488 5693384 1613392 5688832 -1613336 5688792 1613112 5693056 1613384 5693288 1613392 5688832 -1613336 5688792 1613016 5692968 1613112 5693056 1613392 5688832 -1613112 5693056 1613384 5693288 1613392 5688832 1613016 5692968 -1613112 5693056 1613216 5693184 1613384 5693288 1613392 5688832 -1613384 5693288 1613488 5693384 1613392 5688832 1613112 5693056 -1613336 5688792 1613016 5692968 1613392 5688832 1613640 5687040 -1613336 5688792 1613088 5688888 1613016 5692968 1613392 5688832 -1613088 5688888 1612288 5689416 1613016 5692968 1613392 5688832 -1613016 5692968 1613112 5693056 1613392 5688832 1612288 5689416 -1613088 5688888 1612312 5689384 1612288 5689416 1613392 5688832 -1613336 5688792 1613088 5688888 1613392 5688832 1613640 5687040 -1612288 5689416 1612880 5692928 1613016 5692968 1613392 5688832 -1613088 5688888 1612288 5689416 1613392 5688832 1613336 5688792 -1613488 5693384 1614120 5694152 1613392 5688832 1613384 5693288 -1613488 5693384 1613584 5693568 1614120 5694152 1613392 5688832 -1615200 5695576 1613392 5688832 1614216 5694264 1615056 5695464 -1613336 5688792 1613392 5688832 1613640 5687040 1613424 5687768 -1613640 5687040 1613408 5687664 1613424 5687768 1613392 5688832 -1613392 5688832 1615200 5695576 1613640 5687040 1613424 5687768 -1613336 5688792 1613392 5688832 1613424 5687768 1613296 5687768 -1613336 5688792 1613088 5688888 1613392 5688832 1613424 5687768 -1613640 5687040 1613392 5688832 1615200 5695576 1615376 5695816 -1613640 5687040 1613424 5687768 1613392 5688832 1615376 5695816 -1613640 5687040 1613392 5688832 1615376 5695816 1615512 5696024 -1615200 5695576 1615376 5695816 1613392 5688832 1614216 5694264 -1613392 5688832 1613448 5688912 1613640 5687040 1613424 5687768 -1613640 5687040 1613408 5687664 1613424 5687768 1613448 5688912 -1615376 5695816 1613448 5688912 1613392 5688832 1615200 5695576 -1615376 5695816 1613640 5687040 1613448 5688912 1615200 5695576 -1613640 5687040 1613448 5688912 1615376 5695816 1615512 5696024 -1613392 5688832 1613448 5688912 1613424 5687768 1613336 5688792 -1613392 5688832 1614216 5694264 1615200 5695576 1613448 5688912 -1615200 5695576 1615376 5695816 1613448 5688912 1614216 5694264 -1613392 5688832 1614120 5694152 1614216 5694264 1613448 5688912 -1613392 5688832 1613488 5693384 1614120 5694152 1613448 5688912 -1614120 5694152 1614216 5694264 1613448 5688912 1613488 5693384 -1613392 5688832 1613384 5693288 1613488 5693384 1613448 5688912 -1613488 5693384 1614120 5694152 1613448 5688912 1613384 5693288 -1613392 5688832 1613112 5693056 1613384 5693288 1613448 5688912 -1613392 5688832 1613016 5692968 1613112 5693056 1613448 5688912 -1613392 5688832 1612288 5689416 1613016 5692968 1613448 5688912 -1613016 5692968 1613112 5693056 1613448 5688912 1612288 5689416 -1613392 5688832 1613088 5688888 1612288 5689416 1613448 5688912 -1612288 5689416 1613016 5692968 1613448 5688912 1613088 5688888 -1613088 5688888 1612312 5689384 1612288 5689416 1613448 5688912 -1613088 5688888 1612336 5689264 1612312 5689384 1613448 5688912 -1613088 5688888 1612312 5689384 1613448 5688912 1613392 5688832 -1612288 5689416 1613016 5692968 1613448 5688912 1612312 5689384 -1613112 5693056 1613216 5693184 1613384 5693288 1613448 5688912 -1613112 5693056 1613384 5693288 1613448 5688912 1613016 5692968 -1612288 5689416 1612880 5692928 1613016 5692968 1613448 5688912 -1613392 5688832 1613336 5688792 1613088 5688888 1613448 5688912 -1613384 5693288 1613488 5693384 1613448 5688912 1613112 5693056 -1613488 5693384 1613584 5693568 1614120 5694152 1613448 5688912 -1614216 5694264 1615056 5695464 1615200 5695576 1613448 5688912 -1614216 5694264 1615200 5695576 1613448 5688912 1614120 5694152 -1613392 5688832 1613088 5688888 1613448 5688912 1613424 5687768 -1613448 5688912 1615376 5695816 1613640 5687040 1613424 5687768 -1615376 5695816 1613504 5689056 1613448 5688912 1615200 5695576 -1613448 5688912 1614216 5694264 1615200 5695576 1613504 5689056 -1613504 5689056 1613640 5687040 1613448 5688912 1614216 5694264 -1615200 5695576 1615376 5695816 1613504 5689056 1614216 5694264 -1613640 5687040 1613504 5689056 1615376 5695816 1615512 5696024 -1613640 5687040 1613504 5689056 1615512 5696024 1623016 5701528 -1613640 5687040 1613448 5688912 1613504 5689056 1623016 5701528 -1613640 5687040 1613504 5689056 1623016 5701528 1623192 5701576 -1613640 5687040 1613504 5689056 1623192 5701576 1623296 5701624 -1613640 5687040 1613448 5688912 1613504 5689056 1623192 5701576 -1613504 5689056 1615376 5695816 1615512 5696024 1623016 5701528 -1615376 5695816 1615512 5696024 1613504 5689056 1615200 5695576 -1613504 5689056 1615512 5696024 1623016 5701528 1623192 5701576 -1615512 5696024 1615632 5696264 1623016 5701528 1613504 5689056 -1614216 5694264 1615056 5695464 1615200 5695576 1613504 5689056 -1613448 5688912 1614120 5694152 1614216 5694264 1613504 5689056 -1614216 5694264 1615200 5695576 1613504 5689056 1614120 5694152 -1613448 5688912 1613488 5693384 1614120 5694152 1613504 5689056 -1613448 5688912 1613384 5693288 1613488 5693384 1613504 5689056 -1613488 5693384 1614120 5694152 1613504 5689056 1613384 5693288 -1613448 5688912 1613384 5693288 1613504 5689056 1613640 5687040 -1613448 5688912 1613112 5693056 1613384 5693288 1613504 5689056 -1613112 5693056 1613216 5693184 1613384 5693288 1613504 5689056 -1613384 5693288 1613488 5693384 1613504 5689056 1613112 5693056 -1613448 5688912 1613016 5692968 1613112 5693056 1613504 5689056 -1613448 5688912 1612288 5689416 1613016 5692968 1613504 5689056 -1613448 5688912 1612312 5689384 1612288 5689416 1613504 5689056 -1612288 5689416 1613016 5692968 1613504 5689056 1612312 5689384 -1613448 5688912 1613088 5688888 1612312 5689384 1613504 5689056 -1613088 5688888 1612336 5689264 1612312 5689384 1613504 5689056 -1613448 5688912 1613392 5688832 1613088 5688888 1613504 5689056 -1612312 5689384 1612288 5689416 1613504 5689056 1613088 5688888 -1613016 5692968 1613112 5693056 1613504 5689056 1612288 5689416 -1612288 5689416 1612880 5692928 1613016 5692968 1613504 5689056 -1612288 5689416 1612880 5692928 1613504 5689056 1612312 5689384 -1613016 5692968 1613112 5693056 1613504 5689056 1612880 5692928 -1613448 5688912 1613088 5688888 1613504 5689056 1613640 5687040 -1613112 5693056 1613384 5693288 1613504 5689056 1613016 5692968 -1612288 5689416 1612232 5689456 1612880 5692928 1613504 5689056 -1613488 5693384 1613584 5693568 1614120 5694152 1613504 5689056 -1614120 5694152 1614216 5694264 1613504 5689056 1613488 5693384 -1613448 5688912 1613504 5689056 1613640 5687040 1613424 5687768 -1613640 5687040 1613408 5687664 1613424 5687768 1613504 5689056 -1613448 5688912 1613504 5689056 1613424 5687768 1613392 5688832 -1613448 5688912 1613088 5688888 1613504 5689056 1613424 5687768 -1613504 5689056 1623192 5701576 1613640 5687040 1613424 5687768 -1613016 5692968 1613480 5689256 1613504 5689056 1612880 5692928 -1613480 5689256 1613112 5693056 1613504 5689056 1612880 5692928 -1613016 5692968 1613112 5693056 1613480 5689256 1612880 5692928 -1613504 5689056 1612288 5689416 1612880 5692928 1613480 5689256 -1613504 5689056 1612288 5689416 1613480 5689256 1613112 5693056 -1613504 5689056 1612312 5689384 1612288 5689416 1613480 5689256 -1613504 5689056 1612312 5689384 1613480 5689256 1613112 5693056 -1613504 5689056 1613088 5688888 1612312 5689384 1613480 5689256 -1613504 5689056 1613088 5688888 1613480 5689256 1613112 5693056 -1613088 5688888 1612336 5689264 1612312 5689384 1613480 5689256 -1612312 5689384 1612288 5689416 1613480 5689256 1613088 5688888 -1613504 5689056 1613448 5688912 1613088 5688888 1613480 5689256 -1612880 5692928 1613016 5692968 1613480 5689256 1612288 5689416 -1612288 5689416 1612880 5692928 1613480 5689256 1612312 5689384 -1613504 5689056 1613480 5689256 1613112 5693056 1613384 5693288 -1613504 5689056 1613088 5688888 1613480 5689256 1613384 5693288 -1613480 5689256 1613016 5692968 1613112 5693056 1613384 5693288 -1613112 5693056 1613216 5693184 1613384 5693288 1613480 5689256 -1613504 5689056 1613480 5689256 1613384 5693288 1613488 5693384 -1613504 5689056 1613088 5688888 1613480 5689256 1613488 5693384 -1613504 5689056 1613480 5689256 1613488 5693384 1614120 5694152 -1613504 5689056 1613088 5688888 1613480 5689256 1614120 5694152 -1613480 5689256 1613384 5693288 1613488 5693384 1614120 5694152 -1613480 5689256 1613112 5693056 1613384 5693288 1613488 5693384 -1612288 5689416 1612232 5689456 1612880 5692928 1613480 5689256 -1612232 5689456 1612736 5692952 1612880 5692928 1613480 5689256 -1612880 5692928 1613016 5692968 1613480 5689256 1612232 5689456 -1612288 5689416 1612232 5689456 1613480 5689256 1612312 5689384 -1613488 5693384 1613584 5693568 1614120 5694152 1613480 5689256 -1613504 5689056 1613480 5689256 1614120 5694152 1614216 5694264 -1613504 5689056 1613088 5688888 1613480 5689256 1614216 5694264 -1613504 5689056 1613480 5689256 1614216 5694264 1615200 5695576 -1613504 5689056 1613088 5688888 1613480 5689256 1615200 5695576 -1613480 5689256 1613488 5693384 1614120 5694152 1614216 5694264 -1613504 5689056 1613480 5689256 1615200 5695576 1615376 5695816 -1614216 5694264 1615056 5695464 1615200 5695576 1613480 5689256 -1613480 5689256 1614120 5694152 1614216 5694264 1615200 5695576 -1612880 5692928 1613448 5689368 1612232 5689456 1612736 5692952 -1613480 5689256 1613448 5689368 1612880 5692928 1613016 5692968 -1613480 5689256 1612232 5689456 1613448 5689368 1613016 5692968 -1613480 5689256 1613448 5689368 1613016 5692968 1613112 5693056 -1613480 5689256 1613448 5689368 1613112 5693056 1613384 5693288 -1613480 5689256 1612232 5689456 1613448 5689368 1613384 5693288 -1613448 5689368 1613016 5692968 1613112 5693056 1613384 5693288 -1613448 5689368 1612232 5689456 1612880 5692928 1613016 5692968 -1613112 5693056 1613216 5693184 1613384 5693288 1613448 5689368 -1613448 5689368 1612880 5692928 1613016 5692968 1613112 5693056 -1613480 5689256 1613448 5689368 1613384 5693288 1613488 5693384 -1613448 5689368 1613112 5693056 1613384 5693288 1613488 5693384 -1613480 5689256 1612232 5689456 1613448 5689368 1613488 5693384 -1613480 5689256 1613448 5689368 1613488 5693384 1614120 5694152 -1613480 5689256 1612232 5689456 1613448 5689368 1614120 5694152 -1613480 5689256 1613448 5689368 1614120 5694152 1614216 5694264 -1613480 5689256 1612232 5689456 1613448 5689368 1614216 5694264 -1613448 5689368 1613488 5693384 1614120 5694152 1614216 5694264 -1613448 5689368 1613384 5693288 1613488 5693384 1614120 5694152 -1612232 5689456 1613448 5689368 1613480 5689256 1612288 5689416 -1613448 5689368 1614216 5694264 1613480 5689256 1612288 5689416 -1612232 5689456 1612880 5692928 1613448 5689368 1612288 5689416 -1613480 5689256 1612312 5689384 1612288 5689416 1613448 5689368 -1613480 5689256 1613088 5688888 1612312 5689384 1613448 5689368 -1613088 5688888 1612336 5689264 1612312 5689384 1613448 5689368 -1613088 5688888 1612336 5689264 1613448 5689368 1613480 5689256 -1613480 5689256 1613088 5688888 1613448 5689368 1614216 5694264 -1613480 5689256 1613504 5689056 1613088 5688888 1613448 5689368 -1612312 5689384 1612288 5689416 1613448 5689368 1612336 5689264 -1613088 5688888 1612944 5688856 1612336 5689264 1613448 5689368 -1612336 5689264 1612312 5689384 1613448 5689368 1612944 5688856 -1613088 5688888 1612944 5688856 1613448 5689368 1613480 5689256 -1612288 5689416 1612232 5689456 1613448 5689368 1612312 5689384 -1613488 5693384 1613584 5693568 1614120 5694152 1613448 5689368 -1612944 5688856 1612816 5688784 1612336 5689264 1613448 5689368 -1613480 5689256 1613448 5689368 1614216 5694264 1615200 5695576 -1613448 5689368 1613416 5689384 1612880 5692928 1613016 5692968 -1612880 5692928 1613416 5689384 1612232 5689456 1612736 5692952 -1613448 5689368 1612232 5689456 1613416 5689384 1613016 5692968 -1612232 5689456 1613416 5689384 1613448 5689368 1612288 5689416 -1613416 5689384 1613016 5692968 1613448 5689368 1612288 5689416 -1613416 5689384 1612232 5689456 1612880 5692928 1613016 5692968 -1613448 5689368 1613416 5689384 1613016 5692968 1613112 5693056 -1613448 5689368 1612312 5689384 1612288 5689416 1613416 5689384 -1613448 5689368 1612312 5689384 1613416 5689384 1613016 5692968 -1612288 5689416 1612232 5689456 1613416 5689384 1612312 5689384 -1613448 5689368 1612336 5689264 1612312 5689384 1613416 5689384 -1613448 5689368 1612944 5688856 1612336 5689264 1613416 5689384 -1613448 5689368 1612944 5688856 1613416 5689384 1613016 5692968 -1612336 5689264 1612312 5689384 1613416 5689384 1612944 5688856 -1613448 5689368 1613088 5688888 1612944 5688856 1613416 5689384 -1612944 5688856 1612336 5689264 1613416 5689384 1613088 5688888 -1613448 5689368 1613480 5689256 1613088 5688888 1613416 5689384 -1613480 5689256 1613504 5689056 1613088 5688888 1613416 5689384 -1613448 5689368 1613480 5689256 1613416 5689384 1613016 5692968 -1613088 5688888 1612944 5688856 1613416 5689384 1613480 5689256 -1612312 5689384 1612288 5689416 1613416 5689384 1612336 5689264 -1612232 5689456 1612880 5692928 1613416 5689384 1612288 5689416 -1612944 5688856 1612816 5688784 1612336 5689264 1613416 5689384 -1612880 5692928 1613376 5689456 1612232 5689456 1612736 5692952 -1613416 5689384 1613376 5689456 1612880 5692928 1613016 5692968 -1613416 5689384 1613376 5689456 1613016 5692968 1613448 5689368 -1613376 5689456 1612880 5692928 1613016 5692968 1613448 5689368 -1613016 5692968 1613112 5693056 1613448 5689368 1613376 5689456 -1613112 5693056 1613384 5693288 1613448 5689368 1613376 5689456 -1613384 5693288 1613488 5693384 1613448 5689368 1613376 5689456 -1613384 5693288 1613488 5693384 1613376 5689456 1613112 5693056 -1613448 5689368 1613416 5689384 1613376 5689456 1613488 5693384 -1613112 5693056 1613216 5693184 1613384 5693288 1613376 5689456 -1613016 5692968 1613112 5693056 1613376 5689456 1612880 5692928 -1613112 5693056 1613384 5693288 1613376 5689456 1613016 5692968 -1613488 5693384 1614120 5694152 1613448 5689368 1613376 5689456 -1613416 5689384 1612232 5689456 1613376 5689456 1613448 5689368 -1612232 5689456 1613376 5689456 1613416 5689384 1612288 5689416 -1613416 5689384 1612312 5689384 1612288 5689416 1613376 5689456 -1613416 5689384 1612336 5689264 1612312 5689384 1613376 5689456 -1612312 5689384 1612288 5689416 1613376 5689456 1612336 5689264 -1613416 5689384 1612944 5688856 1612336 5689264 1613376 5689456 -1613416 5689384 1613088 5688888 1612944 5688856 1613376 5689456 -1612944 5688856 1612336 5689264 1613376 5689456 1613088 5688888 -1613416 5689384 1613480 5689256 1613088 5688888 1613376 5689456 -1612336 5689264 1612312 5689384 1613376 5689456 1612944 5688856 -1613376 5689456 1613448 5689368 1613416 5689384 1613088 5688888 -1612288 5689416 1612232 5689456 1613376 5689456 1612312 5689384 -1613376 5689456 1612232 5689456 1612880 5692928 1613016 5692968 -1612232 5689456 1612880 5692928 1613376 5689456 1612288 5689416 -1612944 5688856 1612816 5688784 1612336 5689264 1613376 5689456 -1612880 5692928 1613344 5689512 1612232 5689456 1612736 5692952 -1613376 5689456 1613344 5689512 1612880 5692928 1613016 5692968 -1613376 5689456 1613344 5689512 1613016 5692968 1613112 5693056 -1613376 5689456 1613344 5689512 1613112 5693056 1613384 5693288 -1613376 5689456 1613344 5689512 1613384 5693288 1613488 5693384 -1613376 5689456 1613344 5689512 1613488 5693384 1613448 5689368 -1613344 5689512 1613384 5693288 1613488 5693384 1613448 5689368 -1613376 5689456 1613344 5689512 1613448 5689368 1613416 5689384 -1613112 5693056 1613216 5693184 1613384 5693288 1613344 5689512 -1613344 5689512 1613016 5692968 1613112 5693056 1613384 5693288 -1613344 5689512 1613112 5693056 1613384 5693288 1613488 5693384 -1613488 5693384 1614120 5694152 1613448 5689368 1613344 5689512 -1613344 5689512 1612880 5692928 1613016 5692968 1613112 5693056 -1613376 5689456 1612232 5689456 1613344 5689512 1613448 5689368 -1612232 5689456 1613344 5689512 1613376 5689456 1612288 5689416 -1612232 5689456 1612880 5692928 1613344 5689512 1612288 5689416 -1613376 5689456 1612312 5689384 1612288 5689416 1613344 5689512 -1613376 5689456 1612336 5689264 1612312 5689384 1613344 5689512 -1613376 5689456 1612944 5688856 1612336 5689264 1613344 5689512 -1612336 5689264 1612312 5689384 1613344 5689512 1612944 5688856 -1613376 5689456 1613088 5688888 1612944 5688856 1613344 5689512 -1613376 5689456 1613416 5689384 1613088 5688888 1613344 5689512 -1612944 5688856 1612336 5689264 1613344 5689512 1613088 5688888 -1612312 5689384 1612288 5689416 1613344 5689512 1612336 5689264 -1613344 5689512 1613448 5689368 1613376 5689456 1613088 5688888 -1612288 5689416 1612232 5689456 1613344 5689512 1612312 5689384 -1613344 5689512 1612232 5689456 1612880 5692928 1613016 5692968 -1612944 5688856 1612816 5688784 1612336 5689264 1613344 5689512 -1612880 5692928 1613280 5689560 1612232 5689456 1612736 5692952 -1612232 5689456 1613280 5689560 1613344 5689512 1612288 5689416 -1613280 5689560 1612880 5692928 1613344 5689512 1612288 5689416 -1613344 5689512 1612312 5689384 1612288 5689416 1613280 5689560 -1613344 5689512 1612312 5689384 1613280 5689560 1612880 5692928 -1612288 5689416 1612232 5689456 1613280 5689560 1612312 5689384 -1613344 5689512 1612336 5689264 1612312 5689384 1613280 5689560 -1613344 5689512 1612944 5688856 1612336 5689264 1613280 5689560 -1613344 5689512 1612944 5688856 1613280 5689560 1612880 5692928 -1613344 5689512 1613088 5688888 1612944 5688856 1613280 5689560 -1612944 5688856 1612336 5689264 1613280 5689560 1613088 5688888 -1613344 5689512 1613376 5689456 1613088 5688888 1613280 5689560 -1613376 5689456 1613416 5689384 1613088 5688888 1613280 5689560 -1613344 5689512 1613376 5689456 1613280 5689560 1612880 5692928 -1613088 5688888 1612944 5688856 1613280 5689560 1613376 5689456 -1612336 5689264 1612312 5689384 1613280 5689560 1612944 5688856 -1612312 5689384 1612288 5689416 1613280 5689560 1612336 5689264 -1613344 5689512 1613280 5689560 1612880 5692928 1613016 5692968 -1613344 5689512 1613376 5689456 1613280 5689560 1613016 5692968 -1613280 5689560 1612232 5689456 1612880 5692928 1613016 5692968 -1613344 5689512 1613280 5689560 1613016 5692968 1613112 5693056 -1613344 5689512 1613280 5689560 1613112 5693056 1613384 5693288 -1613344 5689512 1613376 5689456 1613280 5689560 1613112 5693056 -1613280 5689560 1612880 5692928 1613016 5692968 1613112 5693056 -1612944 5688856 1612816 5688784 1612336 5689264 1613280 5689560 -1612232 5689456 1612880 5692928 1613280 5689560 1612288 5689416 -1612880 5692928 1613216 5689568 1612232 5689456 1612736 5692952 -1613280 5689560 1613216 5689568 1612880 5692928 1613016 5692968 -1613280 5689560 1613216 5689568 1613016 5692968 1613112 5693056 -1613280 5689560 1612232 5689456 1613216 5689568 1613016 5692968 -1612232 5689456 1613216 5689568 1613280 5689560 1612288 5689416 -1612232 5689456 1612880 5692928 1613216 5689568 1612288 5689416 -1613280 5689560 1612312 5689384 1612288 5689416 1613216 5689568 -1613280 5689560 1612336 5689264 1612312 5689384 1613216 5689568 -1612312 5689384 1612288 5689416 1613216 5689568 1612336 5689264 -1613280 5689560 1612944 5688856 1612336 5689264 1613216 5689568 -1613280 5689560 1613088 5688888 1612944 5688856 1613216 5689568 -1613280 5689560 1613376 5689456 1613088 5688888 1613216 5689568 -1613376 5689456 1613416 5689384 1613088 5688888 1613216 5689568 -1613088 5688888 1612944 5688856 1613216 5689568 1613416 5689384 -1613280 5689560 1613344 5689512 1613376 5689456 1613216 5689568 -1613416 5689384 1613480 5689256 1613088 5688888 1613216 5689568 -1613376 5689456 1613416 5689384 1613216 5689568 1613344 5689512 -1612944 5688856 1612336 5689264 1613216 5689568 1613088 5688888 -1612336 5689264 1612312 5689384 1613216 5689568 1612944 5688856 -1612944 5688856 1612816 5688784 1612336 5689264 1613216 5689568 -1613216 5689568 1613016 5692968 1613280 5689560 1613344 5689512 -1612288 5689416 1612232 5689456 1613216 5689568 1612312 5689384 -1613216 5689568 1612232 5689456 1612880 5692928 1613016 5692968 -1612944 5688856 1613112 5689528 1613216 5689568 1613088 5688888 -1612944 5688856 1612336 5689264 1613112 5689528 1613088 5688888 -1613112 5689528 1612336 5689264 1613216 5689568 1613088 5688888 -1613216 5689568 1613416 5689384 1613088 5688888 1613112 5689528 -1613216 5689568 1613376 5689456 1613416 5689384 1613112 5689528 -1613216 5689568 1613376 5689456 1613112 5689528 1612336 5689264 -1613416 5689384 1613088 5688888 1613112 5689528 1613376 5689456 -1613416 5689384 1613480 5689256 1613088 5688888 1613112 5689528 -1613216 5689568 1613344 5689512 1613376 5689456 1613112 5689528 -1613088 5688888 1612944 5688856 1613112 5689528 1613416 5689384 -1613216 5689568 1613112 5689528 1612336 5689264 1612312 5689384 -1613216 5689568 1613376 5689456 1613112 5689528 1612312 5689384 -1613112 5689528 1612944 5688856 1612336 5689264 1612312 5689384 -1613216 5689568 1613112 5689528 1612312 5689384 1612288 5689416 -1613216 5689568 1613376 5689456 1613112 5689528 1612288 5689416 -1613112 5689528 1612336 5689264 1612312 5689384 1612288 5689416 -1612336 5689264 1613112 5689528 1612944 5688856 1612816 5688784 -1613216 5689568 1613112 5689528 1612288 5689416 1612232 5689456 -1613216 5689568 1613376 5689456 1613112 5689528 1612232 5689456 -1613216 5689568 1613112 5689528 1612232 5689456 1612880 5692928 -1613112 5689528 1612312 5689384 1612288 5689416 1612232 5689456 -1612944 5688856 1613080 5689496 1613112 5689528 1613088 5688888 -1613080 5689496 1612336 5689264 1613112 5689528 1613088 5688888 -1613112 5689528 1613080 5689496 1612336 5689264 1612312 5689384 -1613112 5689528 1613088 5688888 1613080 5689496 1612312 5689384 -1613080 5689496 1612944 5688856 1612336 5689264 1612312 5689384 -1613112 5689528 1613416 5689384 1613088 5688888 1613080 5689496 -1613112 5689528 1613416 5689384 1613080 5689496 1612312 5689384 -1613088 5688888 1612944 5688856 1613080 5689496 1613416 5689384 -1613112 5689528 1613376 5689456 1613416 5689384 1613080 5689496 -1613112 5689528 1613216 5689568 1613376 5689456 1613080 5689496 -1613112 5689528 1613376 5689456 1613080 5689496 1612312 5689384 -1613416 5689384 1613480 5689256 1613088 5688888 1613080 5689496 -1613416 5689384 1613088 5688888 1613080 5689496 1613376 5689456 -1612944 5688856 1612336 5689264 1613080 5689496 1613088 5688888 -1613112 5689528 1613080 5689496 1612312 5689384 1612288 5689416 -1613112 5689528 1613376 5689456 1613080 5689496 1612288 5689416 -1613080 5689496 1612336 5689264 1612312 5689384 1612288 5689416 -1613112 5689528 1613080 5689496 1612288 5689416 1612232 5689456 -1613112 5689528 1613376 5689456 1613080 5689496 1612232 5689456 -1613080 5689496 1612312 5689384 1612288 5689416 1612232 5689456 -1612336 5689264 1613080 5689496 1612944 5688856 1612816 5688784 -1613112 5689528 1613080 5689496 1612232 5689456 1613216 5689568 -1613080 5689496 1612904 5689264 1612336 5689264 1612312 5689384 -1613080 5689496 1612904 5689264 1612312 5689384 1612288 5689416 -1613080 5689496 1612944 5688856 1612904 5689264 1612312 5689384 -1612944 5688856 1612904 5689264 1613080 5689496 1613088 5688888 -1613080 5689496 1613416 5689384 1613088 5688888 1612904 5689264 -1613416 5689384 1613480 5689256 1613088 5688888 1612904 5689264 -1613416 5689384 1613448 5689368 1613480 5689256 1612904 5689264 -1613416 5689384 1613480 5689256 1612904 5689264 1613080 5689496 -1613480 5689256 1613504 5689056 1613088 5688888 1612904 5689264 -1612944 5688856 1612336 5689264 1612904 5689264 1613088 5688888 -1613080 5689496 1613376 5689456 1613416 5689384 1612904 5689264 -1612904 5689264 1612312 5689384 1613080 5689496 1613416 5689384 -1613088 5688888 1612944 5688856 1612904 5689264 1613480 5689256 -1612904 5689264 1612944 5688856 1612336 5689264 1612312 5689384 -1612336 5689264 1612904 5689264 1612944 5688856 1612816 5688784 -1612336 5689264 1612904 5689264 1612816 5688784 1612320 5689216 -1612904 5689264 1613088 5688888 1612944 5688856 1612816 5688784 -1612336 5689264 1612312 5689384 1612904 5689264 1612320 5689216 -1612904 5689264 1612944 5688856 1612816 5688784 1612320 5689216 -1612816 5688784 1612712 5688680 1612320 5689216 1612904 5689264 -1612904 5689264 1612808 5689208 1612320 5689216 1612336 5689264 -1612904 5689264 1612816 5688784 1612808 5689208 1612336 5689264 -1612808 5689208 1612816 5688784 1612320 5689216 1612336 5689264 -1612904 5689264 1612808 5689208 1612336 5689264 1612312 5689384 -1612904 5689264 1612808 5689208 1612312 5689384 1613080 5689496 -1612808 5689208 1612320 5689216 1612336 5689264 1612312 5689384 -1612904 5689264 1612816 5688784 1612808 5689208 1612312 5689384 -1612816 5688784 1612808 5689208 1612904 5689264 1612944 5688856 -1612808 5689208 1612312 5689384 1612904 5689264 1612944 5688856 -1612904 5689264 1613088 5688888 1612944 5688856 1612808 5689208 -1612816 5688784 1612320 5689216 1612808 5689208 1612944 5688856 -1612320 5689216 1612808 5689208 1612816 5688784 1612712 5688680 -1612808 5689208 1612704 5689216 1612336 5689264 1612312 5689384 -1612320 5689216 1612704 5689216 1612808 5689208 1612816 5688784 -1612808 5689208 1612704 5689216 1612312 5689384 1612904 5689264 -1612312 5689384 1613080 5689496 1612904 5689264 1612704 5689216 -1612312 5689384 1612288 5689416 1613080 5689496 1612704 5689216 -1612704 5689216 1612336 5689264 1612312 5689384 1613080 5689496 -1612904 5689264 1612808 5689208 1612704 5689216 1613080 5689496 -1612808 5689208 1612816 5688784 1612704 5689216 1612904 5689264 -1612808 5689208 1612944 5688856 1612816 5688784 1612704 5689216 -1612704 5689216 1612320 5689216 1612336 5689264 1612312 5689384 -1612320 5689216 1612336 5689264 1612704 5689216 1612816 5688784 -1612320 5689216 1612704 5689216 1612816 5688784 1612712 5688680 -1612320 5689216 1612704 5689216 1612712 5688680 1612192 5689088 -1612704 5689216 1612808 5689208 1612816 5688784 1612712 5688680 -1612320 5689216 1612336 5689264 1612704 5689216 1612712 5688680 -1612704 5689216 1612616 5689272 1613080 5689496 1612904 5689264 -1613080 5689496 1612616 5689272 1612312 5689384 1612288 5689416 -1612312 5689384 1612616 5689272 1612704 5689216 1612336 5689264 -1612616 5689272 1612336 5689264 1612312 5689384 1612288 5689416 -1612704 5689216 1612616 5689272 1612904 5689264 1612808 5689208 -1612704 5689216 1612320 5689216 1612336 5689264 1612616 5689272 -1612336 5689264 1612312 5689384 1612616 5689272 1612320 5689216 -1613080 5689496 1612616 5689272 1612288 5689416 1612232 5689456 -1612704 5689216 1612320 5689216 1612616 5689272 1612904 5689264 -1612704 5689216 1612712 5688680 1612320 5689216 1612616 5689272 -1612616 5689272 1612288 5689416 1613080 5689496 1612904 5689264 -1612288 5689416 1612528 5689400 1612616 5689272 1612312 5689384 -1612528 5689400 1613080 5689496 1612616 5689272 1612312 5689384 -1612616 5689272 1612336 5689264 1612312 5689384 1612528 5689400 -1612312 5689384 1612288 5689416 1612528 5689400 1612336 5689264 -1612616 5689272 1612320 5689216 1612336 5689264 1612528 5689400 -1612616 5689272 1612336 5689264 1612528 5689400 1613080 5689496 -1612288 5689416 1613080 5689496 1612528 5689400 1612312 5689384 -1613080 5689496 1612528 5689400 1612288 5689416 1612232 5689456 -1613080 5689496 1612528 5689400 1612232 5689456 1613112 5689528 -1613080 5689496 1612616 5689272 1612528 5689400 1613112 5689528 -1612528 5689400 1612312 5689384 1612288 5689416 1612232 5689456 -1612528 5689400 1612288 5689416 1612232 5689456 1613112 5689528 -1612616 5689272 1612528 5689400 1613080 5689496 1612904 5689264 -1612616 5689272 1612528 5689400 1612904 5689264 1612704 5689216 -1612616 5689272 1612336 5689264 1612528 5689400 1612904 5689264 -1612528 5689400 1613112 5689528 1613080 5689496 1612904 5689264 -1612232 5689456 1613216 5689568 1613112 5689528 1612528 5689400 -1612232 5689456 1612512 5689592 1613216 5689568 1613112 5689528 -1612232 5689456 1612880 5692928 1612512 5689592 1613112 5689528 -1612880 5692928 1612512 5689592 1612232 5689456 1612736 5692952 -1612512 5689592 1613112 5689528 1612232 5689456 1612736 5692952 -1612232 5689456 1612544 5693040 1612736 5692952 1612512 5689592 -1612232 5689456 1612544 5693040 1612512 5689592 1613112 5689528 -1612232 5689456 1612440 5693112 1612544 5693040 1612512 5689592 -1612736 5692952 1612880 5692928 1612512 5689592 1612544 5693040 -1612512 5689592 1612880 5692928 1613216 5689568 1613112 5689528 -1612880 5692928 1613216 5689568 1612512 5689592 1612736 5692952 -1612232 5689456 1612512 5689592 1613112 5689528 1612528 5689400 -1612232 5689456 1612544 5693040 1612512 5689592 1612528 5689400 -1612512 5689592 1613216 5689568 1613112 5689528 1612528 5689400 -1613112 5689528 1613080 5689496 1612528 5689400 1612512 5689592 -1613112 5689528 1613080 5689496 1612512 5689592 1613216 5689568 -1613080 5689496 1612904 5689264 1612528 5689400 1612512 5689592 -1613080 5689496 1612904 5689264 1612512 5689592 1613112 5689528 -1612232 5689456 1612512 5689592 1612528 5689400 1612288 5689416 -1612232 5689456 1612544 5693040 1612512 5689592 1612288 5689416 -1612528 5689400 1612312 5689384 1612288 5689416 1612512 5689592 -1612904 5689264 1612616 5689272 1612528 5689400 1612512 5689592 -1612528 5689400 1612288 5689416 1612512 5689592 1612904 5689264 -1613216 5689568 1612512 5689592 1612880 5692928 1613016 5692968 -1612512 5689592 1612544 5689712 1613216 5689568 1613112 5689528 -1612512 5689592 1612880 5692928 1612544 5689712 1613112 5689528 -1612544 5689712 1612880 5692928 1613216 5689568 1613112 5689528 -1612512 5689592 1612544 5689712 1613112 5689528 1613080 5689496 -1612512 5689592 1612880 5692928 1612544 5689712 1613080 5689496 -1612512 5689592 1612544 5689712 1613080 5689496 1612904 5689264 -1612544 5689712 1613216 5689568 1613112 5689528 1613080 5689496 -1612880 5692928 1612544 5689712 1612512 5689592 1612736 5692952 -1612544 5689712 1613080 5689496 1612512 5689592 1612736 5692952 -1612512 5689592 1612544 5693040 1612736 5692952 1612544 5689712 -1612512 5689592 1612544 5693040 1612544 5689712 1613080 5689496 -1612512 5689592 1612232 5689456 1612544 5693040 1612544 5689712 -1612512 5689592 1612232 5689456 1612544 5689712 1613080 5689496 -1612512 5689592 1612288 5689416 1612232 5689456 1612544 5689712 -1612232 5689456 1612440 5693112 1612544 5693040 1612544 5689712 -1612232 5689456 1611600 5689064 1612440 5693112 1612544 5689712 -1612232 5689456 1612440 5693112 1612544 5689712 1612512 5689592 -1612544 5693040 1612736 5692952 1612544 5689712 1612440 5693112 -1612880 5692928 1613216 5689568 1612544 5689712 1612736 5692952 -1612736 5692952 1612880 5692928 1612544 5689712 1612544 5693040 -1613216 5689568 1612544 5689712 1612880 5692928 1613016 5692968 -1612544 5689712 1612592 5689784 1613216 5689568 1613112 5689528 -1612544 5689712 1612880 5692928 1612592 5689784 1613112 5689528 -1612880 5692928 1612592 5689784 1612544 5689712 1612736 5692952 -1612592 5689784 1613112 5689528 1612544 5689712 1612736 5692952 -1612592 5689784 1612880 5692928 1613216 5689568 1613112 5689528 -1612880 5692928 1613216 5689568 1612592 5689784 1612736 5692952 -1612544 5689712 1612592 5689784 1613112 5689528 1613080 5689496 -1612592 5689784 1613216 5689568 1613112 5689528 1613080 5689496 -1612544 5689712 1612592 5689784 1613080 5689496 1612512 5689592 -1612544 5689712 1612736 5692952 1612592 5689784 1613080 5689496 -1612544 5689712 1612544 5693040 1612736 5692952 1612592 5689784 -1612544 5689712 1612440 5693112 1612544 5693040 1612592 5689784 -1612544 5689712 1612232 5689456 1612440 5693112 1612592 5689784 -1612232 5689456 1611600 5689064 1612440 5693112 1612592 5689784 -1612544 5689712 1612512 5689592 1612232 5689456 1612592 5689784 -1612440 5693112 1612544 5693040 1612592 5689784 1612232 5689456 -1612544 5689712 1612232 5689456 1612592 5689784 1613080 5689496 -1612736 5692952 1612880 5692928 1612592 5689784 1612544 5693040 -1612544 5693040 1612736 5692952 1612592 5689784 1612440 5693112 -1613216 5689568 1612592 5689784 1612880 5692928 1613016 5692968 -1613216 5689568 1613112 5689528 1612592 5689784 1613016 5692968 -1612592 5689784 1612736 5692952 1612880 5692928 1613016 5692968 -1613216 5689568 1612592 5689784 1613016 5692968 1613280 5689560 -1612592 5689784 1612744 5689952 1613216 5689568 1613112 5689528 -1612592 5689784 1612744 5689952 1613112 5689528 1613080 5689496 -1612744 5689952 1613216 5689568 1613112 5689528 1613080 5689496 -1612592 5689784 1613016 5692968 1612744 5689952 1613080 5689496 -1612744 5689952 1613016 5692968 1613216 5689568 1613112 5689528 -1613216 5689568 1612744 5689952 1613016 5692968 1613280 5689560 -1613216 5689568 1613112 5689528 1612744 5689952 1613280 5689560 -1612744 5689952 1612592 5689784 1613016 5692968 1613280 5689560 -1612592 5689784 1612744 5689952 1613080 5689496 1612544 5689712 -1613016 5692968 1613112 5693056 1613280 5689560 1612744 5689952 -1613016 5692968 1612744 5689952 1612592 5689784 1612880 5692928 -1612744 5689952 1613080 5689496 1612592 5689784 1612880 5692928 -1612592 5689784 1612736 5692952 1612880 5692928 1612744 5689952 -1612592 5689784 1612544 5693040 1612736 5692952 1612744 5689952 -1612592 5689784 1612544 5693040 1612744 5689952 1613080 5689496 -1612736 5692952 1612880 5692928 1612744 5689952 1612544 5693040 -1613016 5692968 1613280 5689560 1612744 5689952 1612880 5692928 -1612592 5689784 1612440 5693112 1612544 5693040 1612744 5689952 -1612592 5689784 1612232 5689456 1612440 5693112 1612744 5689952 -1612544 5693040 1612736 5692952 1612744 5689952 1612440 5693112 -1612592 5689784 1612440 5693112 1612744 5689952 1613080 5689496 -1612880 5692928 1613016 5692968 1612744 5689952 1612736 5692952 -1613016 5692968 1612776 5689992 1612744 5689952 1612880 5692928 -1612776 5689992 1613280 5689560 1612744 5689952 1612880 5692928 -1613016 5692968 1613280 5689560 1612776 5689992 1612880 5692928 -1612744 5689952 1612776 5689992 1613280 5689560 1613216 5689568 -1612744 5689952 1612776 5689992 1613216 5689568 1613112 5689528 -1612744 5689952 1612776 5689992 1613112 5689528 1613080 5689496 -1612744 5689952 1612880 5692928 1612776 5689992 1613112 5689528 -1612776 5689992 1613016 5692968 1613280 5689560 1613216 5689568 -1612776 5689992 1613280 5689560 1613216 5689568 1613112 5689528 -1613280 5689560 1612776 5689992 1613016 5692968 1613112 5693056 -1612744 5689952 1612736 5692952 1612880 5692928 1612776 5689992 -1612744 5689952 1612544 5693040 1612736 5692952 1612776 5689992 -1612744 5689952 1612440 5693112 1612544 5693040 1612776 5689992 -1612544 5693040 1612736 5692952 1612776 5689992 1612440 5693112 -1612744 5689952 1612440 5693112 1612776 5689992 1613112 5689528 -1612880 5692928 1613016 5692968 1612776 5689992 1612736 5692952 -1612744 5689952 1612592 5689784 1612440 5693112 1612776 5689992 -1612736 5692952 1612880 5692928 1612776 5689992 1612544 5693040 -1612440 5693112 1612768 5690096 1612776 5689992 1612744 5689952 -1612440 5693112 1612544 5693040 1612768 5690096 1612744 5689952 -1612776 5689992 1612768 5690096 1612544 5693040 1612736 5692952 -1612768 5690096 1612736 5692952 1612776 5689992 1612744 5689952 -1612768 5690096 1612440 5693112 1612544 5693040 1612736 5692952 -1612440 5693112 1612768 5690096 1612744 5689952 1612592 5689784 -1612440 5693112 1612544 5693040 1612768 5690096 1612592 5689784 -1612440 5693112 1612768 5690096 1612592 5689784 1612232 5689456 -1612440 5693112 1612544 5693040 1612768 5690096 1612232 5689456 -1612440 5693112 1612768 5690096 1612232 5689456 1611600 5689064 -1612440 5693112 1612544 5693040 1612768 5690096 1611600 5689064 -1612592 5689784 1612544 5689712 1612232 5689456 1612768 5690096 -1612768 5690096 1612592 5689784 1612232 5689456 1611600 5689064 -1612768 5690096 1612776 5689992 1612744 5689952 1612592 5689784 -1612768 5690096 1612744 5689952 1612592 5689784 1612232 5689456 -1612232 5689456 1611688 5689072 1611600 5689064 1612768 5690096 -1612440 5693112 1612768 5690096 1611600 5689064 1611536 5689032 -1612776 5689992 1612768 5690096 1612736 5692952 1612880 5692928 -1612768 5690096 1612544 5693040 1612736 5692952 1612880 5692928 -1612776 5689992 1612768 5690096 1612880 5692928 1613016 5692968 -1612776 5689992 1612744 5689952 1612768 5690096 1613016 5692968 -1612776 5689992 1612768 5690096 1613016 5692968 1613280 5689560 -1612768 5690096 1612880 5692928 1613016 5692968 1613280 5689560 -1612776 5689992 1612768 5690096 1613280 5689560 1613216 5689568 -1612776 5689992 1612744 5689952 1612768 5690096 1613216 5689568 -1612768 5690096 1613016 5692968 1613280 5689560 1613216 5689568 -1612776 5689992 1612768 5690096 1613216 5689568 1613112 5689528 -1613016 5692968 1613112 5693056 1613280 5689560 1612768 5690096 -1613016 5692968 1613112 5693056 1612768 5690096 1612880 5692928 -1613280 5689560 1613216 5689568 1612768 5690096 1613112 5693056 -1613112 5693056 1613344 5689512 1613280 5689560 1612768 5690096 -1612768 5690096 1612736 5692952 1612880 5692928 1613016 5692968 -1612768 5690096 1612744 5690128 1612440 5693112 1612544 5693040 -1612768 5690096 1611600 5689064 1612744 5690128 1612544 5693040 -1612744 5690128 1611600 5689064 1612440 5693112 1612544 5693040 -1611600 5689064 1612744 5690128 1612768 5690096 1612232 5689456 -1612744 5690128 1612544 5693040 1612768 5690096 1612232 5689456 -1611600 5689064 1612440 5693112 1612744 5690128 1612232 5689456 -1612768 5690096 1612592 5689784 1612232 5689456 1612744 5690128 -1612768 5690096 1612592 5689784 1612744 5690128 1612544 5693040 -1612232 5689456 1611600 5689064 1612744 5690128 1612592 5689784 -1612592 5689784 1612544 5689712 1612232 5689456 1612744 5690128 -1612768 5690096 1612744 5690128 1612544 5693040 1612736 5692952 -1612768 5690096 1612592 5689784 1612744 5690128 1612736 5692952 -1612744 5690128 1612440 5693112 1612544 5693040 1612736 5692952 -1612768 5690096 1612744 5690128 1612736 5692952 1612880 5692928 -1612768 5690096 1612592 5689784 1612744 5690128 1612880 5692928 -1612744 5690128 1612544 5693040 1612736 5692952 1612880 5692928 -1612768 5690096 1612744 5689952 1612592 5689784 1612744 5690128 -1612768 5690096 1612744 5689952 1612744 5690128 1612880 5692928 -1612592 5689784 1612232 5689456 1612744 5690128 1612744 5689952 -1612768 5690096 1612776 5689992 1612744 5689952 1612744 5690128 -1611600 5689064 1612744 5690128 1612232 5689456 1611688 5689072 -1612440 5693112 1612744 5690128 1611600 5689064 1611536 5689032 -1612768 5690096 1612744 5690128 1612880 5692928 1613016 5692968 -1612768 5690096 1612744 5689952 1612744 5690128 1613016 5692968 -1612744 5690128 1612736 5692952 1612880 5692928 1613016 5692968 -1612768 5690096 1612744 5690128 1613016 5692968 1613112 5693056 -1612744 5690128 1612720 5690120 1612440 5693112 1612544 5693040 -1612744 5690128 1612720 5690120 1612544 5693040 1612736 5692952 -1612720 5690120 1612440 5693112 1612544 5693040 1612736 5692952 -1612744 5690128 1611600 5689064 1612720 5690120 1612736 5692952 -1611600 5689064 1612720 5690120 1612744 5690128 1612232 5689456 -1612720 5690120 1612736 5692952 1612744 5690128 1612232 5689456 -1612720 5690120 1611600 5689064 1612440 5693112 1612544 5693040 -1611600 5689064 1612440 5693112 1612720 5690120 1612232 5689456 -1612744 5690128 1612592 5689784 1612232 5689456 1612720 5690120 -1612744 5690128 1612592 5689784 1612720 5690120 1612736 5692952 -1612232 5689456 1611600 5689064 1612720 5690120 1612592 5689784 -1612592 5689784 1612544 5689712 1612232 5689456 1612720 5690120 -1612744 5690128 1612744 5689952 1612592 5689784 1612720 5690120 -1612744 5690128 1612744 5689952 1612720 5690120 1612736 5692952 -1612592 5689784 1612232 5689456 1612720 5690120 1612744 5689952 -1612744 5690128 1612720 5690120 1612736 5692952 1612880 5692928 -1612744 5690128 1612768 5690096 1612744 5689952 1612720 5690120 -1612744 5690128 1612768 5690096 1612720 5690120 1612736 5692952 -1612744 5689952 1612592 5689784 1612720 5690120 1612768 5690096 -1612768 5690096 1612776 5689992 1612744 5689952 1612720 5690120 -1612744 5689952 1612592 5689784 1612720 5690120 1612776 5689992 -1612768 5690096 1612776 5689992 1612720 5690120 1612744 5690128 -1611600 5689064 1612720 5690120 1612232 5689456 1611688 5689072 -1612440 5693112 1612720 5690120 1611600 5689064 1611536 5689032 -1612720 5690120 1612664 5690184 1612440 5693112 1612544 5693040 -1612720 5690120 1612664 5690184 1612544 5693040 1612736 5692952 -1612720 5690120 1612664 5690184 1612736 5692952 1612744 5690128 -1612664 5690184 1612544 5693040 1612736 5692952 1612744 5690128 -1612664 5690184 1612440 5693112 1612544 5693040 1612736 5692952 -1612720 5690120 1611600 5689064 1612664 5690184 1612744 5690128 -1611600 5689064 1612664 5690184 1612720 5690120 1612232 5689456 -1612720 5690120 1612592 5689784 1612232 5689456 1612664 5690184 -1612664 5690184 1612744 5690128 1612720 5690120 1612592 5689784 -1612232 5689456 1611600 5689064 1612664 5690184 1612592 5689784 -1612664 5690184 1611600 5689064 1612440 5693112 1612544 5693040 -1611600 5689064 1612440 5693112 1612664 5690184 1612232 5689456 -1612720 5690120 1612744 5689952 1612592 5689784 1612664 5690184 -1612592 5689784 1612232 5689456 1612664 5690184 1612744 5689952 -1612720 5690120 1612744 5689952 1612664 5690184 1612744 5690128 -1612592 5689784 1612544 5689712 1612232 5689456 1612664 5690184 -1612592 5689784 1612544 5689712 1612664 5690184 1612744 5689952 -1612232 5689456 1611600 5689064 1612664 5690184 1612544 5689712 -1612544 5689712 1612512 5689592 1612232 5689456 1612664 5690184 -1612720 5690120 1612776 5689992 1612744 5689952 1612664 5690184 -1612736 5692952 1612880 5692928 1612744 5690128 1612664 5690184 -1612744 5690128 1612720 5690120 1612664 5690184 1612880 5692928 -1612736 5692952 1612880 5692928 1612664 5690184 1612544 5693040 -1612880 5692928 1613016 5692968 1612744 5690128 1612664 5690184 -1612744 5690128 1612720 5690120 1612664 5690184 1613016 5692968 -1612880 5692928 1613016 5692968 1612664 5690184 1612736 5692952 -1611600 5689064 1612664 5690184 1612232 5689456 1611688 5689072 -1612440 5693112 1612664 5690184 1611600 5689064 1611536 5689032 -1612440 5693112 1612544 5693040 1612664 5690184 1611536 5689032 -1612664 5690184 1612232 5689456 1611600 5689064 1611536 5689032 -1612440 5693112 1612664 5690184 1611536 5689032 1612408 5693168 -1613016 5692968 1612768 5690096 1612744 5690128 1612664 5690184 -1612664 5690184 1612520 5690272 1612440 5693112 1612544 5693040 -1612664 5690184 1612520 5690272 1612544 5693040 1612736 5692952 -1612664 5690184 1612520 5690272 1612736 5692952 1612880 5692928 -1612520 5690272 1612544 5693040 1612736 5692952 1612880 5692928 -1612520 5690272 1612440 5693112 1612544 5693040 1612736 5692952 -1612664 5690184 1611536 5689032 1612520 5690272 1612880 5692928 -1612520 5690272 1611536 5689032 1612440 5693112 1612544 5693040 -1612664 5690184 1612520 5690272 1612880 5692928 1613016 5692968 -1612520 5690272 1612736 5692952 1612880 5692928 1613016 5692968 -1612664 5690184 1611536 5689032 1612520 5690272 1613016 5692968 -1612664 5690184 1612520 5690272 1613016 5692968 1612744 5690128 -1612440 5693112 1612520 5690272 1611536 5689032 1612408 5693168 -1612440 5693112 1612544 5693040 1612520 5690272 1612408 5693168 -1612520 5690272 1612664 5690184 1611536 5689032 1612408 5693168 -1611536 5689032 1611480 5688984 1612408 5693168 1612520 5690272 -1611536 5689032 1612520 5690272 1612664 5690184 1611600 5689064 -1612520 5690272 1613016 5692968 1612664 5690184 1611600 5689064 -1612664 5690184 1612232 5689456 1611600 5689064 1612520 5690272 -1612664 5690184 1612544 5689712 1612232 5689456 1612520 5690272 -1612664 5690184 1612544 5689712 1612520 5690272 1613016 5692968 -1612232 5689456 1611600 5689064 1612520 5690272 1612544 5689712 -1611536 5689032 1612408 5693168 1612520 5690272 1611600 5689064 -1612544 5689712 1612512 5689592 1612232 5689456 1612520 5690272 -1612664 5690184 1612592 5689784 1612544 5689712 1612520 5690272 -1612664 5690184 1612744 5689952 1612592 5689784 1612520 5690272 -1612544 5689712 1612232 5689456 1612520 5690272 1612592 5689784 -1612664 5690184 1612592 5689784 1612520 5690272 1613016 5692968 -1612232 5689456 1611688 5689072 1611600 5689064 1612520 5690272 -1611600 5689064 1611536 5689032 1612520 5690272 1612232 5689456 -1611536 5689032 1612376 5690304 1612520 5690272 1611600 5689064 -1612376 5690304 1612408 5693168 1612520 5690272 1611600 5689064 -1611536 5689032 1612408 5693168 1612376 5690304 1611600 5689064 -1612520 5690272 1612376 5690304 1612408 5693168 1612440 5693112 -1612520 5690272 1612376 5690304 1612440 5693112 1612544 5693040 -1612520 5690272 1612376 5690304 1612544 5693040 1612736 5692952 -1612520 5690272 1612376 5690304 1612736 5692952 1612880 5692928 -1612520 5690272 1612376 5690304 1612880 5692928 1613016 5692968 -1612376 5690304 1612544 5693040 1612736 5692952 1612880 5692928 -1612376 5690304 1612440 5693112 1612544 5693040 1612736 5692952 -1612520 5690272 1611600 5689064 1612376 5690304 1612880 5692928 -1612376 5690304 1611536 5689032 1612408 5693168 1612440 5693112 -1612376 5690304 1612408 5693168 1612440 5693112 1612544 5693040 -1612408 5693168 1612376 5690304 1611536 5689032 1611480 5688984 -1612408 5693168 1612440 5693112 1612376 5690304 1611480 5688984 -1612376 5690304 1611600 5689064 1611536 5689032 1611480 5688984 -1612408 5693168 1612376 5690304 1611480 5688984 1611392 5688904 -1612408 5693168 1612440 5693112 1612376 5690304 1611392 5688904 -1611536 5689032 1611520 5689000 1611480 5688984 1612376 5690304 -1612408 5693168 1612376 5690304 1611392 5688904 1602160 5695928 -1612376 5690304 1611536 5689032 1611480 5688984 1611392 5688904 -1612520 5690272 1612232 5689456 1611600 5689064 1612376 5690304 -1612520 5690272 1612544 5689712 1612232 5689456 1612376 5690304 -1612520 5690272 1612592 5689784 1612544 5689712 1612376 5690304 -1612544 5689712 1612232 5689456 1612376 5690304 1612592 5689784 -1612520 5690272 1612592 5689784 1612376 5690304 1612880 5692928 -1611600 5689064 1611536 5689032 1612376 5690304 1612232 5689456 -1612544 5689712 1612512 5689592 1612232 5689456 1612376 5690304 -1612520 5690272 1612664 5690184 1612592 5689784 1612376 5690304 -1612232 5689456 1611688 5689072 1611600 5689064 1612376 5690304 -1612232 5689456 1611600 5689064 1612376 5690304 1612544 5689712 -1612376 5690304 1612208 5690280 1612408 5693168 1612440 5693112 -1612376 5690304 1611392 5688904 1612208 5690280 1612440 5693112 -1612208 5690280 1611392 5688904 1612408 5693168 1612440 5693112 -1611392 5688904 1612208 5690280 1612376 5690304 1611480 5688984 -1612208 5690280 1612440 5693112 1612376 5690304 1611480 5688984 -1611392 5688904 1612408 5693168 1612208 5690280 1611480 5688984 -1612408 5693168 1612208 5690280 1611392 5688904 1602160 5695928 -1612376 5690304 1612208 5690280 1612440 5693112 1612544 5693040 -1612376 5690304 1612208 5690280 1612544 5693040 1612736 5692952 -1612376 5690304 1612208 5690280 1612736 5692952 1612880 5692928 -1612208 5690280 1612408 5693168 1612440 5693112 1612544 5693040 -1612376 5690304 1611480 5688984 1612208 5690280 1612736 5692952 -1612208 5690280 1612440 5693112 1612544 5693040 1612736 5692952 -1612376 5690304 1611536 5689032 1611480 5688984 1612208 5690280 -1612376 5690304 1611536 5689032 1612208 5690280 1612736 5692952 -1612376 5690304 1611600 5689064 1611536 5689032 1612208 5690280 -1612376 5690304 1612232 5689456 1611600 5689064 1612208 5690280 -1612376 5690304 1612232 5689456 1612208 5690280 1612736 5692952 -1611600 5689064 1611536 5689032 1612208 5690280 1612232 5689456 -1611480 5688984 1611392 5688904 1612208 5690280 1611536 5689032 -1611536 5689032 1611520 5689000 1611480 5688984 1612208 5690280 -1611536 5689032 1611480 5688984 1612208 5690280 1611600 5689064 -1612232 5689456 1611688 5689072 1611600 5689064 1612208 5690280 -1612376 5690304 1612544 5689712 1612232 5689456 1612208 5690280 -1612376 5690304 1612592 5689784 1612544 5689712 1612208 5690280 -1612376 5690304 1612520 5690272 1612592 5689784 1612208 5690280 -1612232 5689456 1611600 5689064 1612208 5690280 1612544 5689712 -1612376 5690304 1612592 5689784 1612208 5690280 1612736 5692952 -1612544 5689712 1612512 5689592 1612232 5689456 1612208 5690280 -1612544 5689712 1612232 5689456 1612208 5690280 1612592 5689784 -1612208 5690280 1612048 5690184 1612408 5693168 1612440 5693112 -1612208 5690280 1612048 5690184 1612440 5693112 1612544 5693040 -1612208 5690280 1611392 5688904 1612048 5690184 1612440 5693112 -1611392 5688904 1612048 5690184 1612208 5690280 1611480 5688984 -1612048 5690184 1612440 5693112 1612208 5690280 1611480 5688984 -1612048 5690184 1611392 5688904 1612408 5693168 1612440 5693112 -1611392 5688904 1612408 5693168 1612048 5690184 1611480 5688984 -1612208 5690280 1611536 5689032 1611480 5688984 1612048 5690184 -1612208 5690280 1611536 5689032 1612048 5690184 1612440 5693112 -1611480 5688984 1611392 5688904 1612048 5690184 1611536 5689032 -1611536 5689032 1611520 5689000 1611480 5688984 1612048 5690184 -1612408 5693168 1612048 5690184 1611392 5688904 1602160 5695928 -1612408 5693168 1612440 5693112 1612048 5690184 1602160 5695928 -1612048 5690184 1611480 5688984 1611392 5688904 1602160 5695928 -1611392 5688904 1611360 5688848 1602160 5695928 1612048 5690184 -1612208 5690280 1611600 5689064 1611536 5689032 1612048 5690184 -1612208 5690280 1612232 5689456 1611600 5689064 1612048 5690184 -1612208 5690280 1612544 5689712 1612232 5689456 1612048 5690184 -1612232 5689456 1611600 5689064 1612048 5690184 1612544 5689712 -1612208 5690280 1612544 5689712 1612048 5690184 1612440 5693112 -1612544 5689712 1612512 5689592 1612232 5689456 1612048 5690184 -1611536 5689032 1611480 5688984 1612048 5690184 1611600 5689064 -1611600 5689064 1611536 5689032 1612048 5690184 1612232 5689456 -1612408 5693168 1612048 5690184 1602160 5695928 1612400 5693248 -1612232 5689456 1611688 5689072 1611600 5689064 1612048 5690184 -1612232 5689456 1611920 5689032 1611688 5689072 1612048 5690184 -1612232 5689456 1611688 5689072 1612048 5690184 1612544 5689712 -1611600 5689064 1611536 5689032 1612048 5690184 1611688 5689072 -1612208 5690280 1612592 5689784 1612544 5689712 1612048 5690184 -1612208 5690280 1612376 5690304 1612592 5689784 1612048 5690184 -1612544 5689712 1612232 5689456 1612048 5690184 1612592 5689784 -1612208 5690280 1612592 5689784 1612048 5690184 1612440 5693112 -1611392 5688904 1611896 5690040 1612048 5690184 1611480 5688984 -1612048 5690184 1611536 5689032 1611480 5688984 1611896 5690040 -1611896 5690040 1602160 5695928 1612048 5690184 1611536 5689032 -1611480 5688984 1611392 5688904 1611896 5690040 1611536 5689032 -1612048 5690184 1611600 5689064 1611536 5689032 1611896 5690040 -1611536 5689032 1611480 5688984 1611896 5690040 1611600 5689064 -1612048 5690184 1611600 5689064 1611896 5690040 1602160 5695928 -1611536 5689032 1611520 5689000 1611480 5688984 1611896 5690040 -1612048 5690184 1611896 5690040 1602160 5695928 1612408 5693168 -1612048 5690184 1611896 5690040 1612408 5693168 1612440 5693112 -1612048 5690184 1611600 5689064 1611896 5690040 1612408 5693168 -1611896 5690040 1611392 5688904 1602160 5695928 1612408 5693168 -1602160 5695928 1611896 5690040 1611392 5688904 1611360 5688848 -1611392 5688904 1602160 5695928 1611896 5690040 1611480 5688984 -1612048 5690184 1611688 5689072 1611600 5689064 1611896 5690040 -1612048 5690184 1611688 5689072 1611896 5690040 1612408 5693168 -1611600 5689064 1611536 5689032 1611896 5690040 1611688 5689072 -1602160 5695928 1612400 5693248 1612408 5693168 1611896 5690040 -1612048 5690184 1612232 5689456 1611688 5689072 1611896 5690040 -1612232 5689456 1611920 5689032 1611688 5689072 1611896 5690040 -1612048 5690184 1612544 5689712 1612232 5689456 1611896 5690040 -1612048 5690184 1612592 5689784 1612544 5689712 1611896 5690040 -1612048 5690184 1612544 5689712 1611896 5690040 1612408 5693168 -1612544 5689712 1612512 5689592 1612232 5689456 1611896 5690040 -1611688 5689072 1611600 5689064 1611896 5690040 1612232 5689456 -1612232 5689456 1611688 5689072 1611896 5690040 1612544 5689712 -1611896 5690040 1611840 5689928 1602160 5695928 1612408 5693168 -1611896 5690040 1611840 5689928 1612408 5693168 1612048 5690184 -1602160 5695928 1611840 5689928 1611392 5688904 1611360 5688848 -1602160 5695928 1611840 5689928 1611360 5688848 1602112 5695896 -1611896 5690040 1611392 5688904 1611840 5689928 1612408 5693168 -1611392 5688904 1611840 5689928 1611896 5690040 1611480 5688984 -1611896 5690040 1611536 5689032 1611480 5688984 1611840 5689928 -1611896 5690040 1611600 5689064 1611536 5689032 1611840 5689928 -1611536 5689032 1611480 5688984 1611840 5689928 1611600 5689064 -1611896 5690040 1611688 5689072 1611600 5689064 1611840 5689928 -1611600 5689064 1611536 5689032 1611840 5689928 1611688 5689072 -1611536 5689032 1611520 5689000 1611480 5688984 1611840 5689928 -1611840 5689928 1612408 5693168 1611896 5690040 1611688 5689072 -1611480 5688984 1611392 5688904 1611840 5689928 1611536 5689032 -1611840 5689928 1611360 5688848 1602160 5695928 1612408 5693168 -1611840 5689928 1611480 5688984 1611392 5688904 1611360 5688848 -1611896 5690040 1612232 5689456 1611688 5689072 1611840 5689928 -1612232 5689456 1611920 5689032 1611688 5689072 1611840 5689928 -1611688 5689072 1611600 5689064 1611840 5689928 1612232 5689456 -1611896 5690040 1612232 5689456 1611840 5689928 1612408 5693168 -1602160 5695928 1612400 5693248 1612408 5693168 1611840 5689928 -1611896 5690040 1612544 5689712 1612232 5689456 1611840 5689928 -1611688 5689072 1611840 5689808 1612232 5689456 1611920 5689032 -1611840 5689928 1611840 5689808 1611688 5689072 1611600 5689064 -1611840 5689928 1611840 5689808 1611600 5689064 1611536 5689032 -1611840 5689928 1611840 5689808 1611536 5689032 1611480 5688984 -1611840 5689808 1611600 5689064 1611536 5689032 1611480 5688984 -1611840 5689808 1611688 5689072 1611600 5689064 1611536 5689032 -1611536 5689032 1611520 5689000 1611480 5688984 1611840 5689808 -1611840 5689928 1611840 5689808 1611480 5688984 1611392 5688904 -1611840 5689808 1611536 5689032 1611480 5688984 1611392 5688904 -1611840 5689928 1612232 5689456 1611840 5689808 1611392 5688904 -1611840 5689928 1611840 5689808 1611392 5688904 1611360 5688848 -1611840 5689808 1612232 5689456 1611688 5689072 1611600 5689064 -1612232 5689456 1611840 5689808 1611840 5689928 1611896 5690040 -1611840 5689808 1611392 5688904 1611840 5689928 1611896 5690040 -1612232 5689456 1611688 5689072 1611840 5689808 1611896 5690040 -1612232 5689456 1611840 5689808 1611896 5690040 1612544 5689712 -1611896 5690040 1612048 5690184 1612544 5689712 1611840 5689808 -1612232 5689456 1611840 5689808 1612544 5689712 1612512 5689592 -1612232 5689456 1611688 5689072 1611840 5689808 1612544 5689712 -1611840 5689808 1611840 5689928 1611896 5690040 1612544 5689712 -1611688 5689072 1611920 5689672 1612232 5689456 1611920 5689032 -1611840 5689808 1611920 5689672 1611688 5689072 1611600 5689064 -1611840 5689808 1611920 5689672 1611600 5689064 1611536 5689032 -1611840 5689808 1612232 5689456 1611920 5689672 1611600 5689064 -1612232 5689456 1611920 5689672 1611840 5689808 1612544 5689712 -1612232 5689456 1611920 5689672 1612544 5689712 1612512 5689592 -1611920 5689672 1611600 5689064 1611840 5689808 1612544 5689712 -1611688 5689072 1611600 5689064 1611920 5689672 1611920 5689032 -1611920 5689672 1612544 5689712 1612232 5689456 1611920 5689032 -1611840 5689808 1611896 5690040 1612544 5689712 1611920 5689672 -1611896 5690040 1612048 5690184 1612544 5689712 1611920 5689672 -1612048 5690184 1612592 5689784 1612544 5689712 1611920 5689672 -1611840 5689808 1611896 5690040 1611920 5689672 1611600 5689064 -1612544 5689712 1612232 5689456 1611920 5689672 1612048 5690184 -1611840 5689808 1611840 5689928 1611896 5690040 1611920 5689672 -1611840 5689808 1611840 5689928 1611920 5689672 1611600 5689064 -1611896 5690040 1612048 5690184 1611920 5689672 1611840 5689928 -1612232 5689456 1612088 5689040 1611920 5689032 1611920 5689672 -1611920 5689672 1612016 5689576 1611920 5689032 1611688 5689072 -1611920 5689672 1612016 5689576 1611688 5689072 1611600 5689064 -1611920 5689672 1612232 5689456 1612016 5689576 1611688 5689072 -1612232 5689456 1612016 5689576 1611920 5689672 1612544 5689712 -1612232 5689456 1612016 5689576 1612544 5689712 1612512 5689592 -1611920 5689672 1612048 5690184 1612544 5689712 1612016 5689576 -1612048 5690184 1612592 5689784 1612544 5689712 1612016 5689576 -1611920 5689672 1611896 5690040 1612048 5690184 1612016 5689576 -1612016 5689576 1611688 5689072 1611920 5689672 1612048 5690184 -1612544 5689712 1612232 5689456 1612016 5689576 1612048 5690184 -1612016 5689576 1612232 5689456 1611920 5689032 1611688 5689072 -1612232 5689456 1611920 5689032 1612016 5689576 1612544 5689712 -1611920 5689032 1612016 5689576 1612232 5689456 1612088 5689040 -1612232 5689456 1612192 5689088 1612088 5689040 1612016 5689576 -1611920 5689032 1611688 5689072 1612016 5689576 1612088 5689040 -1612016 5689576 1612544 5689712 1612232 5689456 1612088 5689040 -1611360 5688848 1611264 5689408 1611840 5689928 1611392 5688904 -1602160 5695928 1611264 5689408 1611360 5688848 1602112 5695896 -1611360 5688848 1602016 5695848 1602112 5695896 1611264 5689408 -1611360 5688848 1611224 5687456 1602016 5695848 1611264 5689408 -1611360 5688848 1611360 5688736 1611224 5687456 1611264 5689408 -1611360 5688736 1611408 5688288 1611224 5687456 1611264 5689408 -1611224 5687456 1602016 5695848 1611264 5689408 1611360 5688736 -1602112 5695896 1602160 5695928 1611264 5689408 1602016 5695848 -1602016 5695848 1602112 5695896 1611264 5689408 1611224 5687456 -1611224 5687456 1601088 5681704 1602016 5695848 1611264 5689408 -1611224 5687456 1601088 5681704 1611264 5689408 1611360 5688736 -1602016 5695848 1602112 5695896 1611264 5689408 1601088 5681704 -1611224 5687456 1601128 5681664 1601088 5681704 1611264 5689408 -1611840 5689928 1611264 5689408 1602160 5695928 1612408 5693168 -1611840 5689928 1611264 5689408 1612408 5693168 1611896 5690040 -1612408 5693168 1612048 5690184 1611896 5690040 1611264 5689408 -1611264 5689408 1602160 5695928 1612408 5693168 1611896 5690040 -1611840 5689928 1611840 5689808 1611392 5688904 1611264 5689408 -1611392 5688904 1611360 5688848 1611264 5689408 1611840 5689808 -1611840 5689808 1611480 5688984 1611392 5688904 1611264 5689408 -1611840 5689808 1611536 5689032 1611480 5688984 1611264 5689408 -1611840 5689808 1611600 5689064 1611536 5689032 1611264 5689408 -1611536 5689032 1611480 5688984 1611264 5689408 1611600 5689064 -1611840 5689808 1611920 5689672 1611600 5689064 1611264 5689408 -1611600 5689064 1611536 5689032 1611264 5689408 1611920 5689672 -1611536 5689032 1611520 5689000 1611480 5688984 1611264 5689408 -1611392 5688904 1611360 5688848 1611264 5689408 1611480 5688984 -1611480 5688984 1611392 5688904 1611264 5689408 1611536 5689032 -1611840 5689808 1611920 5689672 1611264 5689408 1611840 5689928 -1611920 5689672 1611688 5689072 1611600 5689064 1611264 5689408 -1611600 5689064 1611536 5689032 1611264 5689408 1611688 5689072 -1611920 5689672 1611688 5689072 1611264 5689408 1611840 5689808 -1611920 5689672 1612016 5689576 1611688 5689072 1611264 5689408 -1611264 5689408 1611896 5690040 1611840 5689928 1611840 5689808 -1602160 5695928 1612408 5693168 1611264 5689408 1602112 5695896 -1602160 5695928 1612400 5693248 1612408 5693168 1611264 5689408 -1612408 5693168 1611896 5690040 1611264 5689408 1612400 5693248 -1602160 5695928 1612400 5693248 1611264 5689408 1602112 5695896 -1602160 5695928 1612136 5695120 1612400 5693248 1611264 5689408 -1611360 5688848 1611360 5688736 1611264 5689408 1611392 5688904 -1601088 5681704 1600992 5681736 1602016 5695848 1611264 5689408 -1611920 5689672 1611336 5689352 1611264 5689408 1611840 5689808 -1611264 5689408 1611840 5689928 1611840 5689808 1611336 5689352 -1611264 5689408 1611336 5689352 1611688 5689072 1611600 5689064 -1611264 5689408 1611336 5689352 1611600 5689064 1611536 5689032 -1611264 5689408 1611336 5689352 1611536 5689032 1611480 5688984 -1611336 5689352 1611600 5689064 1611536 5689032 1611480 5688984 -1611536 5689032 1611520 5689000 1611480 5688984 1611336 5689352 -1611264 5689408 1611336 5689352 1611480 5688984 1611392 5688904 -1611336 5689352 1611536 5689032 1611480 5688984 1611392 5688904 -1611264 5689408 1611336 5689352 1611392 5688904 1611360 5688848 -1611336 5689352 1611688 5689072 1611600 5689064 1611536 5689032 -1611688 5689072 1611336 5689352 1611920 5689672 1612016 5689576 -1611336 5689352 1611392 5688904 1611264 5689408 1611840 5689808 -1611336 5689352 1611920 5689672 1611688 5689072 1611600 5689064 -1611920 5689672 1611688 5689072 1611336 5689352 1611840 5689808 -1611688 5689072 1611368 5689344 1611920 5689672 1612016 5689576 -1611336 5689352 1611368 5689344 1611688 5689072 1611600 5689064 -1611336 5689352 1611920 5689672 1611368 5689344 1611600 5689064 -1611336 5689352 1611368 5689344 1611600 5689064 1611536 5689032 -1611336 5689352 1611368 5689344 1611536 5689032 1611480 5688984 -1611336 5689352 1611368 5689344 1611480 5688984 1611392 5688904 -1611336 5689352 1611920 5689672 1611368 5689344 1611480 5688984 -1611536 5689032 1611520 5689000 1611480 5688984 1611368 5689344 -1611368 5689344 1611600 5689064 1611536 5689032 1611480 5688984 -1611368 5689344 1611688 5689072 1611600 5689064 1611536 5689032 -1611920 5689672 1611368 5689344 1611336 5689352 1611840 5689808 -1611368 5689344 1611480 5688984 1611336 5689352 1611840 5689808 -1611336 5689352 1611264 5689408 1611840 5689808 1611368 5689344 -1611336 5689352 1611264 5689408 1611368 5689344 1611480 5688984 -1611264 5689408 1611840 5689928 1611840 5689808 1611368 5689344 -1611920 5689672 1611688 5689072 1611368 5689344 1611840 5689808 -1611840 5689808 1611920 5689672 1611368 5689344 1611264 5689408 -1611368 5689344 1611920 5689672 1611688 5689072 1611600 5689064 -1611688 5689072 1611456 5689352 1611920 5689672 1612016 5689576 -1611688 5689072 1611456 5689352 1612016 5689576 1611920 5689032 -1611456 5689352 1611368 5689344 1611920 5689672 1612016 5689576 -1611920 5689672 1611456 5689352 1611368 5689344 1611840 5689808 -1611920 5689672 1612016 5689576 1611456 5689352 1611840 5689808 -1611688 5689072 1611368 5689344 1611456 5689352 1612016 5689576 -1611368 5689344 1611264 5689408 1611840 5689808 1611456 5689352 -1611368 5689344 1611336 5689352 1611264 5689408 1611456 5689352 -1611264 5689408 1611840 5689928 1611840 5689808 1611456 5689352 -1611840 5689808 1611920 5689672 1611456 5689352 1611264 5689408 -1611368 5689344 1611456 5689352 1611688 5689072 1611600 5689064 -1611368 5689344 1611456 5689352 1611600 5689064 1611536 5689032 -1611368 5689344 1611456 5689352 1611536 5689032 1611480 5688984 -1611456 5689352 1612016 5689576 1611688 5689072 1611600 5689064 -1611456 5689352 1611688 5689072 1611600 5689064 1611536 5689032 -1611456 5689352 1611536 5689032 1611368 5689344 1611264 5689408 -1612016 5689576 1611920 5689032 1611688 5689072 1611496 5689368 -1611456 5689352 1611840 5689808 1611920 5689672 1611496 5689368 -1611456 5689352 1611840 5689808 1611496 5689368 1611688 5689072 -1611456 5689352 1611264 5689408 1611840 5689808 1611496 5689368 -1611264 5689408 1611840 5689928 1611840 5689808 1611496 5689368 -1611456 5689352 1611264 5689408 1611496 5689368 1611688 5689072 -1611840 5689808 1611920 5689672 1611496 5689368 1611264 5689408 -1611456 5689352 1611496 5689368 1611688 5689072 1611600 5689064 -1611456 5689352 1611264 5689408 1611496 5689368 1611600 5689064 -1611496 5689368 1612016 5689576 1611688 5689072 1611600 5689064 -1611920 5689672 1612016 5689576 1611496 5689368 1611840 5689808 -1611456 5689352 1611368 5689344 1611264 5689408 1611496 5689368 -1611456 5689352 1611496 5689368 1611600 5689064 1611536 5689032 -1611688 5689072 1611592 5689384 1612016 5689576 1611920 5689032 -1611688 5689072 1611496 5689368 1611592 5689384 1611920 5689032 -1612016 5689576 1612088 5689040 1611920 5689032 1611592 5689384 -1611496 5689368 1611592 5689384 1611688 5689072 1611600 5689064 -1611496 5689368 1612016 5689576 1611592 5689384 1611600 5689064 -1611592 5689384 1611920 5689032 1611688 5689072 1611600 5689064 -1612016 5689576 1611592 5689384 1611496 5689368 1611920 5689672 -1611592 5689384 1611600 5689064 1611496 5689368 1611920 5689672 -1611592 5689384 1611920 5689672 1612016 5689576 1611920 5689032 -1611496 5689368 1611592 5689384 1611600 5689064 1611456 5689352 -1611496 5689368 1611840 5689808 1611920 5689672 1611592 5689384 -1611496 5689368 1611840 5689808 1611592 5689384 1611600 5689064 -1611496 5689368 1611264 5689408 1611840 5689808 1611592 5689384 -1611920 5689672 1612016 5689576 1611592 5689384 1611840 5689808 -1611592 5689384 1611672 5689408 1611920 5689032 1611688 5689072 -1611592 5689384 1611672 5689408 1611688 5689072 1611600 5689064 -1611592 5689384 1612016 5689576 1611672 5689408 1611688 5689072 -1611920 5689032 1611672 5689408 1612016 5689576 1612088 5689040 -1612016 5689576 1611672 5689408 1611592 5689384 1611920 5689672 -1611672 5689408 1611688 5689072 1611592 5689384 1611920 5689672 -1611592 5689384 1611840 5689808 1611920 5689672 1611672 5689408 -1611592 5689384 1611840 5689808 1611672 5689408 1611688 5689072 -1611920 5689672 1612016 5689576 1611672 5689408 1611840 5689808 -1611672 5689408 1612016 5689576 1611920 5689032 1611688 5689072 -1612016 5689576 1611920 5689032 1611672 5689408 1611920 5689672 -1611592 5689384 1611496 5689368 1611840 5689808 1611672 5689408 -1611920 5689672 1611720 5689448 1611672 5689408 1611840 5689808 -1611672 5689408 1611592 5689384 1611840 5689808 1611720 5689448 -1611920 5689672 1612016 5689576 1611720 5689448 1611840 5689808 -1611840 5689808 1611920 5689672 1611720 5689448 1611592 5689384 -1611720 5689448 1612016 5689576 1611672 5689408 1611592 5689384 -1611672 5689408 1611720 5689448 1612016 5689576 1611920 5689032 -1612016 5689576 1612088 5689040 1611920 5689032 1611720 5689448 -1611672 5689408 1611720 5689448 1611920 5689032 1611688 5689072 -1611672 5689408 1611592 5689384 1611720 5689448 1611920 5689032 -1611720 5689448 1611920 5689672 1612016 5689576 1611920 5689032 -1611592 5689384 1611496 5689368 1611840 5689808 1611720 5689448 -1611592 5689384 1611712 5689544 1611720 5689448 1611672 5689408 -1611592 5689384 1611840 5689808 1611712 5689544 1611672 5689408 -1611720 5689448 1611712 5689544 1611840 5689808 1611920 5689672 -1611720 5689448 1611712 5689544 1611920 5689672 1612016 5689576 -1611712 5689544 1611592 5689384 1611840 5689808 1611920 5689672 -1611712 5689544 1611840 5689808 1611920 5689672 1612016 5689576 -1611720 5689448 1611712 5689544 1612016 5689576 1611920 5689032 -1611712 5689544 1612016 5689576 1611720 5689448 1611672 5689408 -1611840 5689808 1611712 5689544 1611592 5689384 1611496 5689368 -1611840 5689808 1611712 5689544 1611496 5689368 1611264 5689408 -1611840 5689808 1611712 5689544 1611264 5689408 1611840 5689928 -1611264 5689408 1611896 5690040 1611840 5689928 1611712 5689544 -1611712 5689544 1611496 5689368 1611264 5689408 1611840 5689928 -1611840 5689808 1611920 5689672 1611712 5689544 1611840 5689928 -1611712 5689544 1611672 5689408 1611592 5689384 1611496 5689368 -1611496 5689368 1611456 5689352 1611264 5689408 1611712 5689544 -1611712 5689544 1611592 5689384 1611496 5689368 1611264 5689408 -1611712 5689544 1611664 5689584 1611840 5689928 1611840 5689808 -1611840 5689928 1611664 5689584 1611264 5689408 1611896 5690040 -1611264 5689408 1611664 5689584 1611712 5689544 1611496 5689368 -1611264 5689408 1611840 5689928 1611664 5689584 1611496 5689368 -1611712 5689544 1611664 5689584 1611840 5689808 1611920 5689672 -1611664 5689584 1611840 5689928 1611840 5689808 1611920 5689672 -1611712 5689544 1611496 5689368 1611664 5689584 1611920 5689672 -1611664 5689584 1611264 5689408 1611840 5689928 1611840 5689808 -1611712 5689544 1611664 5689584 1611920 5689672 1612016 5689576 -1611264 5689408 1611664 5689584 1611496 5689368 1611456 5689352 -1611712 5689544 1611592 5689384 1611496 5689368 1611664 5689584 -1611496 5689368 1611264 5689408 1611664 5689584 1611592 5689384 -1611712 5689544 1611592 5689384 1611664 5689584 1611920 5689672 -1611712 5689544 1611672 5689408 1611592 5689384 1611664 5689584 -1611712 5689544 1611720 5689448 1611672 5689408 1611664 5689584 -1611712 5689544 1611672 5689408 1611664 5689584 1611920 5689672 -1611592 5689384 1611496 5689368 1611664 5689584 1611672 5689408 -1611264 5689408 1611640 5689608 1611664 5689584 1611496 5689368 -1611840 5689928 1611640 5689608 1611264 5689408 1611896 5690040 -1611664 5689584 1611592 5689384 1611496 5689368 1611640 5689608 -1611496 5689368 1611264 5689408 1611640 5689608 1611592 5689384 -1611664 5689584 1611640 5689608 1611840 5689928 1611840 5689808 -1611640 5689608 1611264 5689408 1611840 5689928 1611840 5689808 -1611664 5689584 1611640 5689608 1611840 5689808 1611920 5689672 -1611640 5689608 1611840 5689808 1611664 5689584 1611592 5689384 -1611264 5689408 1611840 5689928 1611640 5689608 1611496 5689368 -1611264 5689408 1611640 5689608 1611496 5689368 1611456 5689352 -1611664 5689584 1611672 5689408 1611592 5689384 1611640 5689608 -1611640 5689608 1611608 5689632 1611840 5689928 1611840 5689808 -1611640 5689608 1611264 5689408 1611608 5689632 1611840 5689808 -1611840 5689928 1611608 5689632 1611264 5689408 1611896 5690040 -1611640 5689608 1611608 5689632 1611840 5689808 1611664 5689584 -1611264 5689408 1611608 5689632 1611640 5689608 1611496 5689368 -1611640 5689608 1611592 5689384 1611496 5689368 1611608 5689632 -1611608 5689632 1611840 5689808 1611640 5689608 1611592 5689384 -1611264 5689408 1611840 5689928 1611608 5689632 1611496 5689368 -1611640 5689608 1611664 5689584 1611592 5689384 1611608 5689632 -1611496 5689368 1611264 5689408 1611608 5689632 1611592 5689384 -1611608 5689632 1611264 5689408 1611840 5689928 1611840 5689808 -1611264 5689408 1611608 5689632 1611496 5689368 1611456 5689352 -1611896 5690040 1611512 5689656 1612408 5693168 1612048 5690184 -1611264 5689408 1612400 5693248 1612408 5693168 1611512 5689656 -1611840 5689928 1611608 5689632 1611264 5689408 1611512 5689656 -1611608 5689632 1611496 5689368 1611264 5689408 1611512 5689656 -1611264 5689408 1612408 5693168 1611512 5689656 1611496 5689368 -1611608 5689632 1611496 5689368 1611512 5689656 1611840 5689928 -1611608 5689632 1611592 5689384 1611496 5689368 1611512 5689656 -1611608 5689632 1611640 5689608 1611592 5689384 1611512 5689656 -1611496 5689368 1611264 5689408 1611512 5689656 1611592 5689384 -1611608 5689632 1611592 5689384 1611512 5689656 1611840 5689928 -1611840 5689928 1611840 5689808 1611608 5689632 1611512 5689656 -1611840 5689808 1611640 5689608 1611608 5689632 1611512 5689656 -1611608 5689632 1611592 5689384 1611512 5689656 1611840 5689808 -1611840 5689928 1611840 5689808 1611512 5689656 1611896 5690040 -1611496 5689368 1611456 5689352 1611264 5689408 1611512 5689656 -1611496 5689368 1611456 5689352 1611512 5689656 1611592 5689384 -1611264 5689408 1612408 5693168 1611512 5689656 1611456 5689352 -1611456 5689352 1611368 5689344 1611264 5689408 1611512 5689656 -1612408 5693168 1611472 5689648 1611264 5689408 1612400 5693248 -1611512 5689656 1611472 5689648 1612408 5693168 1611896 5690040 -1611512 5689656 1611472 5689648 1611896 5690040 1611840 5689928 -1612408 5693168 1612048 5690184 1611896 5690040 1611472 5689648 -1611472 5689648 1612408 5693168 1611896 5690040 1611840 5689928 -1611264 5689408 1611472 5689648 1611512 5689656 1611456 5689352 -1611512 5689656 1611472 5689648 1611840 5689928 1611840 5689808 -1611512 5689656 1611456 5689352 1611472 5689648 1611840 5689928 -1611472 5689648 1611264 5689408 1612408 5693168 1611896 5690040 -1611264 5689408 1612408 5693168 1611472 5689648 1611456 5689352 -1611512 5689656 1611496 5689368 1611456 5689352 1611472 5689648 -1611512 5689656 1611592 5689384 1611496 5689368 1611472 5689648 -1611456 5689352 1611264 5689408 1611472 5689648 1611496 5689368 -1611512 5689656 1611496 5689368 1611472 5689648 1611840 5689928 -1611264 5689408 1611472 5689648 1611456 5689352 1611368 5689344 -1611264 5689408 1611472 5689648 1611368 5689344 1611336 5689352 -1611472 5689648 1611496 5689368 1611456 5689352 1611368 5689344 -1611264 5689408 1612408 5693168 1611472 5689648 1611368 5689344 -1612408 5693168 1611376 5689632 1611264 5689408 1612400 5693248 -1611264 5689408 1602160 5695928 1612400 5693248 1611376 5689632 -1612400 5693248 1612408 5693168 1611376 5689632 1602160 5695928 -1611264 5689408 1602112 5695896 1602160 5695928 1611376 5689632 -1602160 5695928 1612136 5695120 1612400 5693248 1611376 5689632 -1611472 5689648 1611376 5689632 1612408 5693168 1611896 5690040 -1612408 5693168 1612048 5690184 1611896 5690040 1611376 5689632 -1611472 5689648 1611376 5689632 1611896 5690040 1611840 5689928 -1611472 5689648 1611376 5689632 1611840 5689928 1611512 5689656 -1611376 5689632 1612408 5693168 1611896 5690040 1611840 5689928 -1611472 5689648 1611264 5689408 1611376 5689632 1611840 5689928 -1611264 5689408 1611376 5689632 1611472 5689648 1611368 5689344 -1611264 5689408 1611376 5689632 1611368 5689344 1611336 5689352 -1611376 5689632 1611840 5689928 1611472 5689648 1611368 5689344 -1611376 5689632 1611472 5689648 1611368 5689344 1611336 5689352 -1612408 5693168 1611896 5690040 1611376 5689632 1612400 5693248 -1611472 5689648 1611456 5689352 1611368 5689344 1611376 5689632 -1611472 5689648 1611496 5689368 1611456 5689352 1611376 5689632 -1611472 5689648 1611496 5689368 1611376 5689632 1611840 5689928 -1611368 5689344 1611336 5689352 1611376 5689632 1611456 5689352 -1611472 5689648 1611512 5689656 1611496 5689368 1611376 5689632 -1611456 5689352 1611368 5689344 1611376 5689632 1611496 5689368 -1611376 5689632 1611336 5689352 1611264 5689408 1602160 5695928 -1602160 5695928 1611360 5689624 1611264 5689408 1602112 5695896 -1611376 5689632 1611360 5689624 1602160 5695928 1612400 5693248 -1611376 5689632 1611360 5689624 1612400 5693248 1612408 5693168 -1602160 5695928 1612136 5695120 1612400 5693248 1611360 5689624 -1611360 5689624 1602160 5695928 1612400 5693248 1612408 5693168 -1611376 5689632 1611360 5689624 1612408 5693168 1611896 5690040 -1612408 5693168 1612048 5690184 1611896 5690040 1611360 5689624 -1611360 5689624 1612400 5693248 1612408 5693168 1611896 5690040 -1611376 5689632 1611360 5689624 1611896 5690040 1611840 5689928 -1611376 5689632 1611264 5689408 1611360 5689624 1611896 5690040 -1611264 5689408 1611360 5689624 1611376 5689632 1611336 5689352 -1611264 5689408 1602160 5695928 1611360 5689624 1611336 5689352 -1611376 5689632 1611368 5689344 1611336 5689352 1611360 5689624 -1611376 5689632 1611456 5689352 1611368 5689344 1611360 5689624 -1611368 5689344 1611336 5689352 1611360 5689624 1611456 5689352 -1611360 5689624 1611896 5690040 1611376 5689632 1611456 5689352 -1611376 5689632 1611496 5689368 1611456 5689352 1611360 5689624 -1611376 5689632 1611472 5689648 1611496 5689368 1611360 5689624 -1611456 5689352 1611368 5689344 1611360 5689624 1611496 5689368 -1611376 5689632 1611496 5689368 1611360 5689624 1611896 5690040 -1611336 5689352 1611264 5689408 1611360 5689624 1611368 5689344 -1611360 5689624 1611264 5689408 1602160 5695928 1612400 5693248 -1611264 5689408 1611328 5689576 1611360 5689624 1611336 5689352 -1611264 5689408 1602160 5695928 1611328 5689576 1611336 5689352 -1602160 5695928 1611328 5689576 1611264 5689408 1602112 5695896 -1611360 5689624 1611368 5689344 1611336 5689352 1611328 5689576 -1611336 5689352 1611264 5689408 1611328 5689576 1611368 5689344 -1611360 5689624 1611456 5689352 1611368 5689344 1611328 5689576 -1611360 5689624 1611496 5689368 1611456 5689352 1611328 5689576 -1611456 5689352 1611368 5689344 1611328 5689576 1611496 5689368 -1611360 5689624 1611376 5689632 1611496 5689368 1611328 5689576 -1611376 5689632 1611472 5689648 1611496 5689368 1611328 5689576 -1611496 5689368 1611456 5689352 1611328 5689576 1611472 5689648 -1611472 5689648 1611512 5689656 1611496 5689368 1611328 5689576 -1611376 5689632 1611472 5689648 1611328 5689576 1611360 5689624 -1611368 5689344 1611336 5689352 1611328 5689576 1611456 5689352 -1611360 5689624 1611328 5689576 1602160 5695928 1612400 5693248 -1611328 5689576 1602160 5695928 1611360 5689624 1611376 5689632 -1611328 5689576 1611264 5689480 1602160 5695928 1611360 5689624 -1611264 5689408 1611264 5689480 1611328 5689576 1611336 5689352 -1611264 5689408 1602160 5695928 1611264 5689480 1611336 5689352 -1611328 5689576 1611368 5689344 1611336 5689352 1611264 5689480 -1611264 5689480 1602160 5695928 1611328 5689576 1611368 5689344 -1611336 5689352 1611264 5689408 1611264 5689480 1611368 5689344 -1602160 5695928 1611264 5689480 1611264 5689408 1602112 5695896 -1611264 5689480 1611336 5689352 1611264 5689408 1602112 5695896 -1602160 5695928 1611328 5689576 1611264 5689480 1602112 5695896 -1611264 5689408 1602016 5695848 1602112 5695896 1611264 5689480 -1611264 5689408 1602016 5695848 1611264 5689480 1611336 5689352 -1611264 5689408 1601088 5681704 1602016 5695848 1611264 5689480 -1602112 5695896 1602160 5695928 1611264 5689480 1602016 5695848 -1611328 5689576 1611456 5689352 1611368 5689344 1611264 5689480 -1623192 5701576 1614768 5689000 1613504 5689056 1623016 5701528 -1623192 5701576 1613640 5687040 1614768 5689000 1623016 5701528 -1613640 5687040 1614768 5689000 1623192 5701576 1623296 5701624 -1614768 5689000 1623016 5701528 1623192 5701576 1623296 5701624 -1613640 5687040 1613504 5689056 1614768 5689000 1623296 5701624 -1613504 5689056 1614768 5689000 1613640 5687040 1613424 5687768 -1613640 5687040 1613408 5687664 1613424 5687768 1614768 5689000 -1614768 5689000 1623296 5701624 1613640 5687040 1613424 5687768 -1613640 5687040 1614768 5689000 1623296 5701624 1613632 5687000 -1613640 5687040 1614768 5689000 1613632 5687000 1613616 5687016 -1613640 5687040 1613424 5687768 1614768 5689000 1613632 5687000 -1614768 5689000 1623192 5701576 1623296 5701624 1613632 5687000 -1623296 5701624 1623408 5701720 1613632 5687000 1614768 5689000 -1623296 5701624 1623408 5701720 1614768 5689000 1623192 5701576 -1613632 5687000 1613640 5687040 1614768 5689000 1623408 5701720 -1623408 5701720 1663880 5646248 1613632 5687000 1614768 5689000 -1623408 5701720 1663880 5646248 1614768 5689000 1623296 5701624 -1623408 5701720 1623576 5701960 1663880 5646248 1614768 5689000 -1663880 5646248 1663776 5646144 1613632 5687000 1614768 5689000 -1613632 5687000 1613640 5687040 1614768 5689000 1663880 5646248 -1614768 5689000 1613424 5687768 1613504 5689056 1623016 5701528 -1613504 5689056 1615512 5696024 1623016 5701528 1614768 5689000 -1623016 5701528 1623192 5701576 1614768 5689000 1615512 5696024 -1613504 5689056 1615512 5696024 1614768 5689000 1613424 5687768 -1613504 5689056 1615376 5695816 1615512 5696024 1614768 5689000 -1613504 5689056 1615376 5695816 1614768 5689000 1613424 5687768 -1613504 5689056 1615200 5695576 1615376 5695816 1614768 5689000 -1613504 5689056 1613480 5689256 1615200 5695576 1614768 5689000 -1613480 5689256 1614216 5694264 1615200 5695576 1614768 5689000 -1613480 5689256 1614216 5694264 1614768 5689000 1613504 5689056 -1613504 5689056 1613480 5689256 1614768 5689000 1613424 5687768 -1615376 5695816 1615512 5696024 1614768 5689000 1615200 5695576 -1615200 5695576 1615376 5695816 1614768 5689000 1614216 5694264 -1615512 5696024 1623016 5701528 1614768 5689000 1615376 5695816 -1615512 5696024 1615632 5696264 1623016 5701528 1614768 5689000 -1614216 5694264 1615056 5695464 1615200 5695576 1614768 5689000 -1613480 5689256 1613448 5689368 1614216 5694264 1614768 5689000 -1614216 5694264 1615200 5695576 1614768 5689000 1613448 5689368 -1613448 5689368 1614120 5694152 1614216 5694264 1614768 5689000 -1613448 5689368 1613488 5693384 1614120 5694152 1614768 5689000 -1614216 5694264 1615200 5695576 1614768 5689000 1614120 5694152 -1614120 5694152 1614216 5694264 1614768 5689000 1613488 5693384 -1613480 5689256 1613448 5689368 1614768 5689000 1613504 5689056 -1613448 5689368 1613344 5689512 1613488 5693384 1614768 5689000 -1613448 5689368 1613376 5689456 1613344 5689512 1614768 5689000 -1613344 5689512 1613384 5693288 1613488 5693384 1614768 5689000 -1613488 5693384 1614120 5694152 1614768 5689000 1613384 5693288 -1613344 5689512 1613112 5693056 1613384 5693288 1614768 5689000 -1613344 5689512 1613384 5693288 1614768 5689000 1613448 5689368 -1613488 5693384 1613584 5693568 1614120 5694152 1614768 5689000 -1613448 5689368 1613344 5689512 1614768 5689000 1613480 5689256 -1613504 5689056 1614768 5689000 1613424 5687768 1613448 5688912 -1613424 5687768 1613392 5688832 1613448 5688912 1614768 5689000 -1614768 5689000 1613640 5687040 1613424 5687768 1613392 5688832 -1613504 5689056 1613480 5689256 1614768 5689000 1613448 5688912 -1613424 5687768 1613336 5688792 1613392 5688832 1614768 5689000 -1613448 5688912 1613504 5689056 1614768 5689000 1613392 5688832 -1623408 5701720 1614848 5688968 1614768 5689000 1623296 5701624 -1663880 5646248 1614848 5688968 1623408 5701720 1623576 5701960 -1614768 5689000 1623192 5701576 1623296 5701624 1614848 5688968 -1614768 5689000 1623016 5701528 1623192 5701576 1614848 5688968 -1623296 5701624 1623408 5701720 1614848 5688968 1623192 5701576 -1614768 5689000 1615512 5696024 1623016 5701528 1614848 5688968 -1623016 5701528 1623192 5701576 1614848 5688968 1615512 5696024 -1623192 5701576 1623296 5701624 1614848 5688968 1623016 5701528 -1614768 5689000 1614848 5688968 1663880 5646248 1613632 5687000 -1663880 5646248 1663776 5646144 1613632 5687000 1614848 5688968 -1614768 5689000 1614848 5688968 1613632 5687000 1613640 5687040 -1613632 5687000 1613616 5687016 1613640 5687040 1614848 5688968 -1614768 5689000 1614848 5688968 1613640 5687040 1613424 5687768 -1613640 5687040 1613408 5687664 1613424 5687768 1614848 5688968 -1614768 5689000 1614848 5688968 1613424 5687768 1613392 5688832 -1614848 5688968 1613632 5687000 1613640 5687040 1613424 5687768 -1614848 5688968 1663880 5646248 1613632 5687000 1613640 5687040 -1614848 5688968 1613424 5687768 1614768 5689000 1615512 5696024 -1614768 5689000 1615376 5695816 1615512 5696024 1614848 5688968 -1615512 5696024 1623016 5701528 1614848 5688968 1615376 5695816 -1614768 5689000 1615376 5695816 1614848 5688968 1613424 5687768 -1614768 5689000 1615200 5695576 1615376 5695816 1614848 5688968 -1614768 5689000 1615200 5695576 1614848 5688968 1613424 5687768 -1614768 5689000 1614216 5694264 1615200 5695576 1614848 5688968 -1614768 5689000 1614120 5694152 1614216 5694264 1614848 5688968 -1614768 5689000 1613488 5693384 1614120 5694152 1614848 5688968 -1614768 5689000 1613384 5693288 1613488 5693384 1614848 5688968 -1614120 5694152 1614216 5694264 1614848 5688968 1613488 5693384 -1614768 5689000 1613488 5693384 1614848 5688968 1613424 5687768 -1615200 5695576 1615376 5695816 1614848 5688968 1614216 5694264 -1614216 5694264 1615200 5695576 1614848 5688968 1614120 5694152 -1615376 5695816 1615512 5696024 1614848 5688968 1615200 5695576 -1613488 5693384 1613584 5693568 1614120 5694152 1614848 5688968 -1615512 5696024 1615632 5696264 1623016 5701528 1614848 5688968 -1614216 5694264 1615056 5695464 1615200 5695576 1614848 5688968 -1614848 5688968 1623408 5701720 1663880 5646248 1613632 5687000 -1623408 5701720 1663880 5646248 1614848 5688968 1623296 5701624 -1663880 5646248 1614856 5688976 1623408 5701720 1623576 5701960 -1614848 5688968 1614856 5688976 1663880 5646248 1613632 5687000 -1614856 5688976 1623408 5701720 1663880 5646248 1613632 5687000 -1663880 5646248 1663776 5646144 1613632 5687000 1614856 5688976 -1614848 5688968 1614856 5688976 1613632 5687000 1613640 5687040 -1614848 5688968 1623408 5701720 1614856 5688976 1613632 5687000 -1623408 5701720 1614856 5688976 1614848 5688968 1623296 5701624 -1614848 5688968 1623192 5701576 1623296 5701624 1614856 5688976 -1614848 5688968 1623016 5701528 1623192 5701576 1614856 5688976 -1614848 5688968 1615512 5696024 1623016 5701528 1614856 5688976 -1623192 5701576 1623296 5701624 1614856 5688976 1623016 5701528 -1614848 5688968 1615376 5695816 1615512 5696024 1614856 5688976 -1615512 5696024 1623016 5701528 1614856 5688976 1615376 5695816 -1623016 5701528 1623192 5701576 1614856 5688976 1615512 5696024 -1623408 5701720 1663880 5646248 1614856 5688976 1623296 5701624 -1614848 5688968 1615200 5695576 1615376 5695816 1614856 5688976 -1615376 5695816 1615512 5696024 1614856 5688976 1615200 5695576 -1614848 5688968 1614216 5694264 1615200 5695576 1614856 5688976 -1614848 5688968 1614120 5694152 1614216 5694264 1614856 5688976 -1614848 5688968 1613488 5693384 1614120 5694152 1614856 5688976 -1614848 5688968 1614768 5689000 1613488 5693384 1614856 5688976 -1614768 5689000 1613384 5693288 1613488 5693384 1614856 5688976 -1613488 5693384 1614120 5694152 1614856 5688976 1614768 5689000 -1614216 5694264 1615200 5695576 1614856 5688976 1614120 5694152 -1614120 5694152 1614216 5694264 1614856 5688976 1613488 5693384 -1615200 5695576 1615376 5695816 1614856 5688976 1614216 5694264 -1613488 5693384 1613584 5693568 1614120 5694152 1614856 5688976 -1615512 5696024 1615632 5696264 1623016 5701528 1614856 5688976 -1614216 5694264 1615056 5695464 1615200 5695576 1614856 5688976 -1614856 5688976 1613632 5687000 1614848 5688968 1614768 5689000 -1623296 5701624 1623408 5701720 1614856 5688976 1623192 5701576 -1663880 5646248 1614904 5688968 1623408 5701720 1623576 5701960 -1614856 5688976 1614904 5688968 1663880 5646248 1613632 5687000 -1614856 5688976 1623408 5701720 1614904 5688968 1613632 5687000 -1623408 5701720 1614904 5688968 1614856 5688976 1623296 5701624 -1614904 5688968 1613632 5687000 1614856 5688976 1623296 5701624 -1663880 5646248 1663776 5646144 1613632 5687000 1614904 5688968 -1614904 5688968 1623408 5701720 1663880 5646248 1613632 5687000 -1623408 5701720 1663880 5646248 1614904 5688968 1623296 5701624 -1614856 5688976 1614904 5688968 1613632 5687000 1614848 5688968 -1614904 5688968 1663880 5646248 1613632 5687000 1614848 5688968 -1614856 5688976 1623296 5701624 1614904 5688968 1614848 5688968 -1613632 5687000 1613640 5687040 1614848 5688968 1614904 5688968 -1613632 5687000 1613616 5687016 1613640 5687040 1614904 5688968 -1613632 5687000 1613640 5687040 1614904 5688968 1663880 5646248 -1613640 5687040 1613424 5687768 1614848 5688968 1614904 5688968 -1614848 5688968 1614856 5688976 1614904 5688968 1613640 5687040 -1614856 5688976 1623192 5701576 1623296 5701624 1614904 5688968 -1614856 5688976 1623016 5701528 1623192 5701576 1614904 5688968 -1614856 5688976 1615512 5696024 1623016 5701528 1614904 5688968 -1614856 5688976 1615376 5695816 1615512 5696024 1614904 5688968 -1623016 5701528 1623192 5701576 1614904 5688968 1615512 5696024 -1614856 5688976 1615200 5695576 1615376 5695816 1614904 5688968 -1615376 5695816 1615512 5696024 1614904 5688968 1615200 5695576 -1615512 5696024 1623016 5701528 1614904 5688968 1615376 5695816 -1614856 5688976 1615200 5695576 1614904 5688968 1614848 5688968 -1623296 5701624 1623408 5701720 1614904 5688968 1623192 5701576 -1614856 5688976 1614216 5694264 1615200 5695576 1614904 5688968 -1615200 5695576 1615376 5695816 1614904 5688968 1614216 5694264 -1614856 5688976 1614216 5694264 1614904 5688968 1614848 5688968 -1614856 5688976 1614120 5694152 1614216 5694264 1614904 5688968 -1614856 5688976 1614120 5694152 1614904 5688968 1614848 5688968 -1614856 5688976 1613488 5693384 1614120 5694152 1614904 5688968 -1614856 5688976 1614768 5689000 1613488 5693384 1614904 5688968 -1614768 5689000 1613384 5693288 1613488 5693384 1614904 5688968 -1614856 5688976 1614768 5689000 1614904 5688968 1614848 5688968 -1614856 5688976 1614848 5688968 1614768 5689000 1614904 5688968 -1614120 5694152 1614216 5694264 1614904 5688968 1613488 5693384 -1613488 5693384 1614120 5694152 1614904 5688968 1614768 5689000 -1614216 5694264 1615200 5695576 1614904 5688968 1614120 5694152 -1613488 5693384 1613584 5693568 1614120 5694152 1614904 5688968 -1615512 5696024 1615632 5696264 1623016 5701528 1614904 5688968 -1614216 5694264 1615056 5695464 1615200 5695576 1614904 5688968 -1623192 5701576 1623296 5701624 1614904 5688968 1623016 5701528 -1663880 5646248 1614992 5688968 1623408 5701720 1623576 5701960 -1614904 5688968 1614992 5688968 1663880 5646248 1613632 5687000 -1614904 5688968 1614992 5688968 1613632 5687000 1613640 5687040 -1613632 5687000 1613616 5687016 1613640 5687040 1614992 5688968 -1663880 5646248 1663776 5646144 1613632 5687000 1614992 5688968 -1614992 5688968 1663880 5646248 1613632 5687000 1613640 5687040 -1614904 5688968 1623408 5701720 1614992 5688968 1613640 5687040 -1623408 5701720 1614992 5688968 1614904 5688968 1623296 5701624 -1614904 5688968 1623192 5701576 1623296 5701624 1614992 5688968 -1614992 5688968 1613640 5687040 1614904 5688968 1623192 5701576 -1623296 5701624 1623408 5701720 1614992 5688968 1623192 5701576 -1614904 5688968 1614992 5688968 1613640 5687040 1614848 5688968 -1614904 5688968 1623016 5701528 1623192 5701576 1614992 5688968 -1614904 5688968 1615512 5696024 1623016 5701528 1614992 5688968 -1614904 5688968 1615376 5695816 1615512 5696024 1614992 5688968 -1614904 5688968 1615200 5695576 1615376 5695816 1614992 5688968 -1615512 5696024 1623016 5701528 1614992 5688968 1615376 5695816 -1614904 5688968 1614216 5694264 1615200 5695576 1614992 5688968 -1615200 5695576 1615376 5695816 1614992 5688968 1614216 5694264 -1615376 5695816 1615512 5696024 1614992 5688968 1615200 5695576 -1623192 5701576 1623296 5701624 1614992 5688968 1623016 5701528 -1614904 5688968 1614216 5694264 1614992 5688968 1613640 5687040 -1614904 5688968 1614120 5694152 1614216 5694264 1614992 5688968 -1614216 5694264 1615200 5695576 1614992 5688968 1614120 5694152 -1614904 5688968 1614120 5694152 1614992 5688968 1613640 5687040 -1614904 5688968 1613488 5693384 1614120 5694152 1614992 5688968 -1614904 5688968 1613488 5693384 1614992 5688968 1613640 5687040 -1614904 5688968 1614768 5689000 1613488 5693384 1614992 5688968 -1614768 5689000 1613384 5693288 1613488 5693384 1614992 5688968 -1614904 5688968 1614856 5688976 1614768 5689000 1614992 5688968 -1614856 5688976 1614848 5688968 1614768 5689000 1614992 5688968 -1614904 5688968 1614856 5688976 1614992 5688968 1613640 5687040 -1613488 5693384 1614120 5694152 1614992 5688968 1614768 5689000 -1614768 5689000 1613488 5693384 1614992 5688968 1614856 5688976 -1614120 5694152 1614216 5694264 1614992 5688968 1613488 5693384 -1613488 5693384 1613584 5693568 1614120 5694152 1614992 5688968 -1615512 5696024 1615632 5696264 1623016 5701528 1614992 5688968 -1615512 5696024 1615632 5696264 1614992 5688968 1615376 5695816 -1614216 5694264 1615056 5695464 1615200 5695576 1614992 5688968 -1615632 5696264 1621712 5701344 1623016 5701528 1614992 5688968 -1623016 5701528 1623192 5701576 1614992 5688968 1615632 5696264 -1614992 5688968 1623408 5701720 1663880 5646248 1613632 5687000 -1623408 5701720 1663880 5646248 1614992 5688968 1623296 5701624 -1663880 5646248 1615080 5688984 1623408 5701720 1623576 5701960 -1614992 5688968 1615080 5688984 1663880 5646248 1613632 5687000 -1615080 5688984 1623408 5701720 1663880 5646248 1613632 5687000 -1663880 5646248 1663776 5646144 1613632 5687000 1615080 5688984 -1663880 5646248 1663776 5646144 1615080 5688984 1623408 5701720 -1663776 5646144 1613592 5686944 1613632 5687000 1615080 5688984 -1614992 5688968 1615080 5688984 1613632 5687000 1613640 5687040 -1613632 5687000 1613616 5687016 1613640 5687040 1615080 5688984 -1614992 5688968 1615080 5688984 1613640 5687040 1614904 5688968 -1613632 5687000 1613640 5687040 1615080 5688984 1663776 5646144 -1614992 5688968 1623408 5701720 1615080 5688984 1613640 5687040 -1623408 5701720 1615080 5688984 1614992 5688968 1623296 5701624 -1623408 5701720 1663880 5646248 1615080 5688984 1623296 5701624 -1614992 5688968 1623192 5701576 1623296 5701624 1615080 5688984 -1614992 5688968 1623016 5701528 1623192 5701576 1615080 5688984 -1623192 5701576 1623296 5701624 1615080 5688984 1623016 5701528 -1614992 5688968 1615632 5696264 1623016 5701528 1615080 5688984 -1623016 5701528 1623192 5701576 1615080 5688984 1615632 5696264 -1614992 5688968 1615512 5696024 1615632 5696264 1615080 5688984 -1614992 5688968 1615376 5695816 1615512 5696024 1615080 5688984 -1614992 5688968 1615200 5695576 1615376 5695816 1615080 5688984 -1614992 5688968 1614216 5694264 1615200 5695576 1615080 5688984 -1615376 5695816 1615512 5696024 1615080 5688984 1615200 5695576 -1614992 5688968 1614120 5694152 1614216 5694264 1615080 5688984 -1614216 5694264 1615200 5695576 1615080 5688984 1614120 5694152 -1615200 5695576 1615376 5695816 1615080 5688984 1614216 5694264 -1614992 5688968 1613488 5693384 1614120 5694152 1615080 5688984 -1614120 5694152 1614216 5694264 1615080 5688984 1613488 5693384 -1614992 5688968 1614768 5689000 1613488 5693384 1615080 5688984 -1614768 5689000 1613384 5693288 1613488 5693384 1615080 5688984 -1614768 5689000 1613344 5689512 1613384 5693288 1615080 5688984 -1614768 5689000 1613384 5693288 1615080 5688984 1614992 5688968 -1614992 5688968 1614856 5688976 1614768 5689000 1615080 5688984 -1614992 5688968 1614904 5688968 1614856 5688976 1615080 5688984 -1614856 5688976 1614848 5688968 1614768 5689000 1615080 5688984 -1614768 5689000 1613384 5693288 1615080 5688984 1614856 5688976 -1613488 5693384 1614120 5694152 1615080 5688984 1613384 5693288 -1613488 5693384 1613584 5693568 1614120 5694152 1615080 5688984 -1615512 5696024 1615632 5696264 1615080 5688984 1615376 5695816 -1614216 5694264 1615056 5695464 1615200 5695576 1615080 5688984 -1615632 5696264 1621712 5701344 1623016 5701528 1615080 5688984 -1615632 5696264 1623016 5701528 1615080 5688984 1615512 5696024 -1615080 5688984 1613640 5687040 1614992 5688968 1614856 5688976 -1623296 5701624 1623408 5701720 1615080 5688984 1623192 5701576 -1663880 5646248 1615168 5689016 1623408 5701720 1623576 5701960 -1615080 5688984 1615168 5689016 1663880 5646248 1663776 5646144 -1615080 5688984 1623408 5701720 1615168 5689016 1663776 5646144 -1615168 5689016 1623408 5701720 1663880 5646248 1663776 5646144 -1615080 5688984 1615168 5689016 1663776 5646144 1613632 5687000 -1615080 5688984 1623408 5701720 1615168 5689016 1613632 5687000 -1615168 5689016 1663880 5646248 1663776 5646144 1613632 5687000 -1623408 5701720 1615168 5689016 1615080 5688984 1623296 5701624 -1615168 5689016 1613632 5687000 1615080 5688984 1623296 5701624 -1663776 5646144 1613592 5686944 1613632 5687000 1615168 5689016 -1623408 5701720 1663880 5646248 1615168 5689016 1623296 5701624 -1615080 5688984 1615168 5689016 1613632 5687000 1613640 5687040 -1615080 5688984 1623296 5701624 1615168 5689016 1613640 5687040 -1613632 5687000 1613616 5687016 1613640 5687040 1615168 5689016 -1615168 5689016 1663776 5646144 1613632 5687000 1613640 5687040 -1615080 5688984 1615168 5689016 1613640 5687040 1614992 5688968 -1615080 5688984 1623192 5701576 1623296 5701624 1615168 5689016 -1615080 5688984 1623192 5701576 1615168 5689016 1613640 5687040 -1623296 5701624 1623408 5701720 1615168 5689016 1623192 5701576 -1615080 5688984 1623016 5701528 1623192 5701576 1615168 5689016 -1615080 5688984 1623016 5701528 1615168 5689016 1613640 5687040 -1615080 5688984 1615632 5696264 1623016 5701528 1615168 5689016 -1615080 5688984 1615632 5696264 1615168 5689016 1613640 5687040 -1623016 5701528 1623192 5701576 1615168 5689016 1615632 5696264 -1615632 5696264 1621712 5701344 1623016 5701528 1615168 5689016 -1615080 5688984 1615512 5696024 1615632 5696264 1615168 5689016 -1615080 5688984 1615512 5696024 1615168 5689016 1613640 5687040 -1615632 5696264 1623016 5701528 1615168 5689016 1615512 5696024 -1615080 5688984 1615376 5695816 1615512 5696024 1615168 5689016 -1615080 5688984 1615200 5695576 1615376 5695816 1615168 5689016 -1615080 5688984 1615200 5695576 1615168 5689016 1613640 5687040 -1615080 5688984 1614216 5694264 1615200 5695576 1615168 5689016 -1615080 5688984 1614120 5694152 1614216 5694264 1615168 5689016 -1615200 5695576 1615376 5695816 1615168 5689016 1614216 5694264 -1615080 5688984 1613488 5693384 1614120 5694152 1615168 5689016 -1614120 5694152 1614216 5694264 1615168 5689016 1613488 5693384 -1615080 5688984 1613488 5693384 1615168 5689016 1613640 5687040 -1614216 5694264 1615200 5695576 1615168 5689016 1614120 5694152 -1615080 5688984 1613384 5693288 1613488 5693384 1615168 5689016 -1613488 5693384 1614120 5694152 1615168 5689016 1613384 5693288 -1615080 5688984 1613384 5693288 1615168 5689016 1613640 5687040 -1615080 5688984 1614768 5689000 1613384 5693288 1615168 5689016 -1615080 5688984 1614768 5689000 1615168 5689016 1613640 5687040 -1614768 5689000 1613344 5689512 1613384 5693288 1615168 5689016 -1615080 5688984 1614856 5688976 1614768 5689000 1615168 5689016 -1615080 5688984 1614856 5688976 1615168 5689016 1613640 5687040 -1614768 5689000 1613384 5693288 1615168 5689016 1614856 5688976 -1614856 5688976 1614848 5688968 1614768 5689000 1615168 5689016 -1615080 5688984 1614992 5688968 1614856 5688976 1615168 5689016 -1613384 5693288 1613488 5693384 1615168 5689016 1614768 5689000 -1613488 5693384 1613584 5693568 1614120 5694152 1615168 5689016 -1615376 5695816 1615512 5696024 1615168 5689016 1615200 5695576 -1614216 5694264 1615056 5695464 1615200 5695576 1615168 5689016 -1615512 5696024 1615632 5696264 1615168 5689016 1615376 5695816 -1623192 5701576 1623296 5701624 1615168 5689016 1623016 5701528 -1663880 5646248 1615264 5689048 1623408 5701720 1623576 5701960 -1615168 5689016 1615264 5689048 1663880 5646248 1663776 5646144 -1615168 5689016 1623408 5701720 1615264 5689048 1663776 5646144 -1615168 5689016 1615264 5689048 1663776 5646144 1613632 5687000 -1615264 5689048 1663880 5646248 1663776 5646144 1613632 5687000 -1615168 5689016 1623408 5701720 1615264 5689048 1613632 5687000 -1615168 5689016 1615264 5689048 1613632 5687000 1613640 5687040 -1615168 5689016 1623408 5701720 1615264 5689048 1613640 5687040 -1613632 5687000 1613616 5687016 1613640 5687040 1615264 5689048 -1615264 5689048 1663776 5646144 1613632 5687000 1613640 5687040 -1663776 5646144 1613592 5686944 1613632 5687000 1615264 5689048 -1663776 5646144 1657088 5639464 1613592 5686944 1615264 5689048 -1613592 5686944 1613600 5686968 1613632 5687000 1615264 5689048 -1663776 5646144 1613592 5686944 1615264 5689048 1663880 5646248 -1613632 5687000 1613640 5687040 1615264 5689048 1613592 5686944 -1623408 5701720 1615264 5689048 1615168 5689016 1623296 5701624 -1615264 5689048 1613640 5687040 1615168 5689016 1623296 5701624 -1615168 5689016 1623192 5701576 1623296 5701624 1615264 5689048 -1615168 5689016 1623192 5701576 1615264 5689048 1613640 5687040 -1623408 5701720 1663880 5646248 1615264 5689048 1623296 5701624 -1623296 5701624 1623408 5701720 1615264 5689048 1623192 5701576 -1615264 5689048 1623408 5701720 1663880 5646248 1663776 5646144 -1615168 5689016 1615264 5689048 1613640 5687040 1615080 5688984 -1615168 5689016 1623016 5701528 1623192 5701576 1615264 5689048 -1615168 5689016 1623016 5701528 1615264 5689048 1613640 5687040 -1623192 5701576 1623296 5701624 1615264 5689048 1623016 5701528 -1615168 5689016 1615632 5696264 1623016 5701528 1615264 5689048 -1615168 5689016 1615632 5696264 1615264 5689048 1613640 5687040 -1615168 5689016 1615512 5696024 1615632 5696264 1615264 5689048 -1615168 5689016 1615512 5696024 1615264 5689048 1613640 5687040 -1615632 5696264 1623016 5701528 1615264 5689048 1615512 5696024 -1615632 5696264 1621712 5701344 1623016 5701528 1615264 5689048 -1615168 5689016 1615376 5695816 1615512 5696024 1615264 5689048 -1615168 5689016 1615376 5695816 1615264 5689048 1613640 5687040 -1615512 5696024 1615632 5696264 1615264 5689048 1615376 5695816 -1615168 5689016 1615200 5695576 1615376 5695816 1615264 5689048 -1615168 5689016 1614216 5694264 1615200 5695576 1615264 5689048 -1615168 5689016 1614216 5694264 1615264 5689048 1613640 5687040 -1615168 5689016 1614120 5694152 1614216 5694264 1615264 5689048 -1615168 5689016 1613488 5693384 1614120 5694152 1615264 5689048 -1614216 5694264 1615200 5695576 1615264 5689048 1614120 5694152 -1615168 5689016 1613384 5693288 1613488 5693384 1615264 5689048 -1613488 5693384 1614120 5694152 1615264 5689048 1613384 5693288 -1615168 5689016 1613384 5693288 1615264 5689048 1613640 5687040 -1614120 5694152 1614216 5694264 1615264 5689048 1613488 5693384 -1615168 5689016 1614768 5689000 1613384 5693288 1615264 5689048 -1613384 5693288 1613488 5693384 1615264 5689048 1614768 5689000 -1615168 5689016 1614768 5689000 1615264 5689048 1613640 5687040 -1614768 5689000 1613344 5689512 1613384 5693288 1615264 5689048 -1613384 5693288 1613488 5693384 1615264 5689048 1613344 5689512 -1615168 5689016 1614856 5688976 1614768 5689000 1615264 5689048 -1613344 5689512 1613112 5693056 1613384 5693288 1615264 5689048 -1614768 5689000 1613448 5689368 1613344 5689512 1615264 5689048 -1614768 5689000 1613344 5689512 1615264 5689048 1615168 5689016 -1613488 5693384 1613584 5693568 1614120 5694152 1615264 5689048 -1615200 5695576 1615376 5695816 1615264 5689048 1614216 5694264 -1614216 5694264 1615056 5695464 1615200 5695576 1615264 5689048 -1615376 5695816 1615512 5696024 1615264 5689048 1615200 5695576 -1623016 5701528 1623192 5701576 1615264 5689048 1615632 5696264 -1663880 5646248 1615304 5689072 1623408 5701720 1623576 5701960 -1623408 5701720 1615304 5689072 1615264 5689048 1623296 5701624 -1615304 5689072 1663880 5646248 1615264 5689048 1623296 5701624 -1615264 5689048 1623192 5701576 1623296 5701624 1615304 5689072 -1615264 5689048 1623016 5701528 1623192 5701576 1615304 5689072 -1623296 5701624 1623408 5701720 1615304 5689072 1623192 5701576 -1615264 5689048 1623016 5701528 1615304 5689072 1663880 5646248 -1623192 5701576 1623296 5701624 1615304 5689072 1623016 5701528 -1615264 5689048 1615304 5689072 1663880 5646248 1663776 5646144 -1615264 5689048 1615304 5689072 1663776 5646144 1613592 5686944 -1663776 5646144 1657088 5639464 1613592 5686944 1615304 5689072 -1615264 5689048 1623016 5701528 1615304 5689072 1613592 5686944 -1615304 5689072 1623408 5701720 1663880 5646248 1663776 5646144 -1615304 5689072 1663880 5646248 1663776 5646144 1613592 5686944 -1615264 5689048 1615304 5689072 1613592 5686944 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1615304 5689072 -1615304 5689072 1663776 5646144 1613592 5686944 1613632 5687000 -1615264 5689048 1615304 5689072 1613632 5687000 1613640 5687040 -1615264 5689048 1623016 5701528 1615304 5689072 1613632 5687000 -1615264 5689048 1615632 5696264 1623016 5701528 1615304 5689072 -1623016 5701528 1623192 5701576 1615304 5689072 1615632 5696264 -1615264 5689048 1615632 5696264 1615304 5689072 1613632 5687000 -1615264 5689048 1615512 5696024 1615632 5696264 1615304 5689072 -1615264 5689048 1615376 5695816 1615512 5696024 1615304 5689072 -1615264 5689048 1615376 5695816 1615304 5689072 1613632 5687000 -1615512 5696024 1615632 5696264 1615304 5689072 1615376 5695816 -1615632 5696264 1621712 5701344 1623016 5701528 1615304 5689072 -1615264 5689048 1615200 5695576 1615376 5695816 1615304 5689072 -1615376 5695816 1615512 5696024 1615304 5689072 1615200 5695576 -1615264 5689048 1615200 5695576 1615304 5689072 1613632 5687000 -1615264 5689048 1614216 5694264 1615200 5695576 1615304 5689072 -1615264 5689048 1614120 5694152 1614216 5694264 1615304 5689072 -1615264 5689048 1613488 5693384 1614120 5694152 1615304 5689072 -1615264 5689048 1613384 5693288 1613488 5693384 1615304 5689072 -1614120 5694152 1614216 5694264 1615304 5689072 1613488 5693384 -1615264 5689048 1613344 5689512 1613384 5693288 1615304 5689072 -1613384 5693288 1613488 5693384 1615304 5689072 1613344 5689512 -1615264 5689048 1614768 5689000 1613344 5689512 1615304 5689072 -1613344 5689512 1613384 5693288 1615304 5689072 1614768 5689000 -1613488 5693384 1614120 5694152 1615304 5689072 1613384 5693288 -1613344 5689512 1613112 5693056 1613384 5693288 1615304 5689072 -1615264 5689048 1614768 5689000 1615304 5689072 1613632 5687000 -1614768 5689000 1613448 5689368 1613344 5689512 1615304 5689072 -1615264 5689048 1615168 5689016 1614768 5689000 1615304 5689072 -1614768 5689000 1613344 5689512 1615304 5689072 1615168 5689016 -1615168 5689016 1614856 5688976 1614768 5689000 1615304 5689072 -1615264 5689048 1615168 5689016 1615304 5689072 1613632 5687000 -1613488 5693384 1613584 5693568 1614120 5694152 1615304 5689072 -1614216 5694264 1615200 5695576 1615304 5689072 1614120 5694152 -1614216 5694264 1615056 5695464 1615200 5695576 1615304 5689072 -1615200 5695576 1615376 5695816 1615304 5689072 1614216 5694264 -1615632 5696264 1623016 5701528 1615304 5689072 1615512 5696024 -1623408 5701720 1663880 5646248 1615304 5689072 1623296 5701624 -1663880 5646248 1615352 5689088 1623408 5701720 1623576 5701960 -1615304 5689072 1615352 5689088 1663880 5646248 1663776 5646144 -1615304 5689072 1615352 5689088 1663776 5646144 1613592 5686944 -1663776 5646144 1657088 5639464 1613592 5686944 1615352 5689088 -1615304 5689072 1615352 5689088 1613592 5686944 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1615352 5689088 -1615352 5689088 1663880 5646248 1663776 5646144 1613592 5686944 -1615352 5689088 1663776 5646144 1613592 5686944 1613632 5687000 -1615304 5689072 1615352 5689088 1613632 5687000 1615264 5689048 -1615352 5689088 1613592 5686944 1613632 5687000 1615264 5689048 -1613632 5687000 1613640 5687040 1615264 5689048 1615352 5689088 -1615304 5689072 1623408 5701720 1615352 5689088 1615264 5689048 -1623408 5701720 1615352 5689088 1615304 5689072 1623296 5701624 -1623408 5701720 1663880 5646248 1615352 5689088 1623296 5701624 -1615304 5689072 1623192 5701576 1623296 5701624 1615352 5689088 -1615304 5689072 1623016 5701528 1623192 5701576 1615352 5689088 -1615304 5689072 1615632 5696264 1623016 5701528 1615352 5689088 -1623192 5701576 1623296 5701624 1615352 5689088 1623016 5701528 -1623016 5701528 1623192 5701576 1615352 5689088 1615632 5696264 -1615632 5696264 1621712 5701344 1623016 5701528 1615352 5689088 -1615304 5689072 1615512 5696024 1615632 5696264 1615352 5689088 -1615632 5696264 1623016 5701528 1615352 5689088 1615512 5696024 -1615304 5689072 1615376 5695816 1615512 5696024 1615352 5689088 -1615304 5689072 1615200 5695576 1615376 5695816 1615352 5689088 -1615376 5695816 1615512 5696024 1615352 5689088 1615200 5695576 -1615304 5689072 1614216 5694264 1615200 5695576 1615352 5689088 -1615200 5695576 1615376 5695816 1615352 5689088 1614216 5694264 -1615304 5689072 1614120 5694152 1614216 5694264 1615352 5689088 -1615304 5689072 1613488 5693384 1614120 5694152 1615352 5689088 -1615304 5689072 1613384 5693288 1613488 5693384 1615352 5689088 -1615304 5689072 1613344 5689512 1613384 5693288 1615352 5689088 -1613488 5693384 1614120 5694152 1615352 5689088 1613384 5693288 -1615304 5689072 1614768 5689000 1613344 5689512 1615352 5689088 -1613344 5689512 1613384 5693288 1615352 5689088 1614768 5689000 -1615304 5689072 1615168 5689016 1614768 5689000 1615352 5689088 -1613384 5693288 1613488 5693384 1615352 5689088 1613344 5689512 -1613344 5689512 1613112 5693056 1613384 5693288 1615352 5689088 -1614768 5689000 1613448 5689368 1613344 5689512 1615352 5689088 -1613488 5693384 1613584 5693568 1614120 5694152 1615352 5689088 -1614120 5694152 1614216 5694264 1615352 5689088 1613488 5693384 -1614216 5694264 1615056 5695464 1615200 5695576 1615352 5689088 -1614216 5694264 1615200 5695576 1615352 5689088 1614120 5694152 -1615512 5696024 1615632 5696264 1615352 5689088 1615376 5695816 -1615352 5689088 1615264 5689048 1615304 5689072 1614768 5689000 -1623296 5701624 1623408 5701720 1615352 5689088 1623192 5701576 -1615352 5689088 1623408 5701720 1663880 5646248 1663776 5646144 -1663880 5646248 1615392 5689120 1623408 5701720 1623576 5701960 -1623408 5701720 1615392 5689120 1615352 5689088 1623296 5701624 -1623408 5701720 1663880 5646248 1615392 5689120 1623296 5701624 -1615392 5689120 1663880 5646248 1615352 5689088 1623296 5701624 -1615352 5689088 1623192 5701576 1623296 5701624 1615392 5689120 -1615352 5689088 1623192 5701576 1615392 5689120 1663880 5646248 -1623296 5701624 1623408 5701720 1615392 5689120 1623192 5701576 -1615352 5689088 1623016 5701528 1623192 5701576 1615392 5689120 -1615352 5689088 1623016 5701528 1615392 5689120 1663880 5646248 -1615352 5689088 1615632 5696264 1623016 5701528 1615392 5689120 -1615352 5689088 1615632 5696264 1615392 5689120 1663880 5646248 -1615352 5689088 1615512 5696024 1615632 5696264 1615392 5689120 -1615352 5689088 1615512 5696024 1615392 5689120 1663880 5646248 -1623016 5701528 1623192 5701576 1615392 5689120 1615632 5696264 -1615632 5696264 1623016 5701528 1615392 5689120 1615512 5696024 -1615632 5696264 1621712 5701344 1623016 5701528 1615392 5689120 -1615352 5689088 1615376 5695816 1615512 5696024 1615392 5689120 -1615352 5689088 1615376 5695816 1615392 5689120 1663880 5646248 -1615512 5696024 1615632 5696264 1615392 5689120 1615376 5695816 -1615352 5689088 1615200 5695576 1615376 5695816 1615392 5689120 -1615352 5689088 1615200 5695576 1615392 5689120 1663880 5646248 -1615352 5689088 1614216 5694264 1615200 5695576 1615392 5689120 -1615352 5689088 1614216 5694264 1615392 5689120 1663880 5646248 -1615200 5695576 1615376 5695816 1615392 5689120 1614216 5694264 -1614216 5694264 1615056 5695464 1615200 5695576 1615392 5689120 -1615352 5689088 1614120 5694152 1614216 5694264 1615392 5689120 -1615352 5689088 1614120 5694152 1615392 5689120 1663880 5646248 -1614216 5694264 1615200 5695576 1615392 5689120 1614120 5694152 -1615352 5689088 1613488 5693384 1614120 5694152 1615392 5689120 -1615352 5689088 1613384 5693288 1613488 5693384 1615392 5689120 -1615352 5689088 1613384 5693288 1615392 5689120 1663880 5646248 -1615352 5689088 1613344 5689512 1613384 5693288 1615392 5689120 -1615352 5689088 1614768 5689000 1613344 5689512 1615392 5689120 -1613384 5693288 1613488 5693384 1615392 5689120 1613344 5689512 -1615352 5689088 1615304 5689072 1614768 5689000 1615392 5689120 -1614768 5689000 1613344 5689512 1615392 5689120 1615304 5689072 -1615304 5689072 1615168 5689016 1614768 5689000 1615392 5689120 -1615352 5689088 1615304 5689072 1615392 5689120 1663880 5646248 -1613344 5689512 1613384 5693288 1615392 5689120 1614768 5689000 -1613344 5689512 1613112 5693056 1613384 5693288 1615392 5689120 -1613384 5693288 1613488 5693384 1615392 5689120 1613112 5693056 -1613112 5693056 1613216 5693184 1613384 5693288 1615392 5689120 -1613344 5689512 1613280 5689560 1613112 5693056 1615392 5689120 -1613344 5689512 1613112 5693056 1615392 5689120 1614768 5689000 -1614768 5689000 1613448 5689368 1613344 5689512 1615392 5689120 -1613488 5693384 1613584 5693568 1614120 5694152 1615392 5689120 -1613488 5693384 1614120 5694152 1615392 5689120 1613384 5693288 -1614120 5694152 1614216 5694264 1615392 5689120 1613488 5693384 -1615376 5695816 1615512 5696024 1615392 5689120 1615200 5695576 -1623192 5701576 1623296 5701624 1615392 5689120 1623016 5701528 -1615352 5689088 1615392 5689120 1663880 5646248 1663776 5646144 -1615352 5689088 1615304 5689072 1615392 5689120 1663776 5646144 -1615392 5689120 1623408 5701720 1663880 5646248 1663776 5646144 -1615352 5689088 1615392 5689120 1663776 5646144 1613592 5686944 -1663776 5646144 1657088 5639464 1613592 5686944 1615392 5689120 -1615352 5689088 1615304 5689072 1615392 5689120 1613592 5686944 -1615352 5689088 1615392 5689120 1613592 5686944 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1615392 5689120 -1615352 5689088 1615392 5689120 1613632 5687000 1615264 5689048 -1615352 5689088 1615304 5689072 1615392 5689120 1613632 5687000 -1615392 5689120 1663776 5646144 1613592 5686944 1613632 5687000 -1615392 5689120 1663880 5646248 1663776 5646144 1613592 5686944 -1663880 5646248 1615440 5689168 1623408 5701720 1623576 5701960 -1623408 5701720 1615440 5689168 1615392 5689120 1623296 5701624 -1615440 5689168 1663880 5646248 1615392 5689120 1623296 5701624 -1615392 5689120 1623192 5701576 1623296 5701624 1615440 5689168 -1615392 5689120 1623192 5701576 1615440 5689168 1663880 5646248 -1623296 5701624 1623408 5701720 1615440 5689168 1623192 5701576 -1615392 5689120 1615440 5689168 1663880 5646248 1663776 5646144 -1615392 5689120 1623192 5701576 1615440 5689168 1663776 5646144 -1615440 5689168 1623408 5701720 1663880 5646248 1663776 5646144 -1623408 5701720 1663880 5646248 1615440 5689168 1623296 5701624 -1615392 5689120 1623016 5701528 1623192 5701576 1615440 5689168 -1615392 5689120 1623016 5701528 1615440 5689168 1663776 5646144 -1623192 5701576 1623296 5701624 1615440 5689168 1623016 5701528 -1615392 5689120 1615632 5696264 1623016 5701528 1615440 5689168 -1615392 5689120 1615632 5696264 1615440 5689168 1663776 5646144 -1615392 5689120 1615512 5696024 1615632 5696264 1615440 5689168 -1615392 5689120 1615512 5696024 1615440 5689168 1663776 5646144 -1615392 5689120 1615376 5695816 1615512 5696024 1615440 5689168 -1615392 5689120 1615376 5695816 1615440 5689168 1663776 5646144 -1615632 5696264 1623016 5701528 1615440 5689168 1615512 5696024 -1615512 5696024 1615632 5696264 1615440 5689168 1615376 5695816 -1615632 5696264 1621712 5701344 1623016 5701528 1615440 5689168 -1615392 5689120 1615200 5695576 1615376 5695816 1615440 5689168 -1615392 5689120 1615200 5695576 1615440 5689168 1663776 5646144 -1615376 5695816 1615512 5696024 1615440 5689168 1615200 5695576 -1615392 5689120 1614216 5694264 1615200 5695576 1615440 5689168 -1615392 5689120 1614216 5694264 1615440 5689168 1663776 5646144 -1615392 5689120 1614120 5694152 1614216 5694264 1615440 5689168 -1615392 5689120 1614120 5694152 1615440 5689168 1663776 5646144 -1614216 5694264 1615200 5695576 1615440 5689168 1614120 5694152 -1614216 5694264 1615056 5695464 1615200 5695576 1615440 5689168 -1615392 5689120 1613488 5693384 1614120 5694152 1615440 5689168 -1615392 5689120 1613488 5693384 1615440 5689168 1663776 5646144 -1614120 5694152 1614216 5694264 1615440 5689168 1613488 5693384 -1613488 5693384 1613584 5693568 1614120 5694152 1615440 5689168 -1615392 5689120 1613384 5693288 1613488 5693384 1615440 5689168 -1615392 5689120 1613112 5693056 1613384 5693288 1615440 5689168 -1615392 5689120 1613112 5693056 1615440 5689168 1663776 5646144 -1613112 5693056 1613216 5693184 1613384 5693288 1615440 5689168 -1615392 5689120 1613344 5689512 1613112 5693056 1615440 5689168 -1613112 5693056 1613384 5693288 1615440 5689168 1613344 5689512 -1615392 5689120 1613344 5689512 1615440 5689168 1663776 5646144 -1613344 5689512 1613280 5689560 1613112 5693056 1615440 5689168 -1615392 5689120 1614768 5689000 1613344 5689512 1615440 5689168 -1615392 5689120 1615304 5689072 1614768 5689000 1615440 5689168 -1615392 5689120 1615352 5689088 1615304 5689072 1615440 5689168 -1615304 5689072 1615168 5689016 1614768 5689000 1615440 5689168 -1615304 5689072 1615168 5689016 1615440 5689168 1615392 5689120 -1615392 5689120 1615304 5689072 1615440 5689168 1663776 5646144 -1615168 5689016 1614856 5688976 1614768 5689000 1615440 5689168 -1614768 5689000 1613344 5689512 1615440 5689168 1615168 5689016 -1613344 5689512 1613112 5693056 1615440 5689168 1614768 5689000 -1614768 5689000 1613448 5689368 1613344 5689512 1615440 5689168 -1615304 5689072 1615264 5689048 1615168 5689016 1615440 5689168 -1613384 5693288 1613488 5693384 1615440 5689168 1613112 5693056 -1613488 5693384 1614120 5694152 1615440 5689168 1613384 5693288 -1615200 5695576 1615376 5695816 1615440 5689168 1614216 5694264 -1623016 5701528 1623192 5701576 1615440 5689168 1615632 5696264 -1615392 5689120 1615440 5689168 1663776 5646144 1613592 5686944 -1663776 5646144 1657088 5639464 1613592 5686944 1615440 5689168 -1615392 5689120 1615304 5689072 1615440 5689168 1613592 5686944 -1615440 5689168 1663880 5646248 1663776 5646144 1613592 5686944 -1615392 5689120 1615440 5689168 1613592 5686944 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1615440 5689168 -1615392 5689120 1615304 5689072 1615440 5689168 1613632 5687000 -1615392 5689120 1615440 5689168 1613632 5687000 1615352 5689088 -1615440 5689168 1663776 5646144 1613592 5686944 1613632 5687000 -1615632 5696264 1615488 5689272 1615440 5689168 1615512 5696024 -1615488 5689272 1623016 5701528 1615440 5689168 1615512 5696024 -1615440 5689168 1615376 5695816 1615512 5696024 1615488 5689272 -1615440 5689168 1615200 5695576 1615376 5695816 1615488 5689272 -1615440 5689168 1615200 5695576 1615488 5689272 1623016 5701528 -1615512 5696024 1615632 5696264 1615488 5689272 1615376 5695816 -1615376 5695816 1615512 5696024 1615488 5689272 1615200 5695576 -1615632 5696264 1623016 5701528 1615488 5689272 1615512 5696024 -1623016 5701528 1615488 5689272 1615632 5696264 1621712 5701344 -1615440 5689168 1614216 5694264 1615200 5695576 1615488 5689272 -1615200 5695576 1615376 5695816 1615488 5689272 1614216 5694264 -1615440 5689168 1614216 5694264 1615488 5689272 1623016 5701528 -1615440 5689168 1614120 5694152 1614216 5694264 1615488 5689272 -1615440 5689168 1613488 5693384 1614120 5694152 1615488 5689272 -1615440 5689168 1613488 5693384 1615488 5689272 1623016 5701528 -1614120 5694152 1614216 5694264 1615488 5689272 1613488 5693384 -1613488 5693384 1613584 5693568 1614120 5694152 1615488 5689272 -1614216 5694264 1615056 5695464 1615200 5695576 1615488 5689272 -1615440 5689168 1613384 5693288 1613488 5693384 1615488 5689272 -1613488 5693384 1614120 5694152 1615488 5689272 1613384 5693288 -1615440 5689168 1613384 5693288 1615488 5689272 1623016 5701528 -1615440 5689168 1613112 5693056 1613384 5693288 1615488 5689272 -1615440 5689168 1613344 5689512 1613112 5693056 1615488 5689272 -1613112 5693056 1613216 5693184 1613384 5693288 1615488 5689272 -1613344 5689512 1613280 5689560 1613112 5693056 1615488 5689272 -1613344 5689512 1613280 5689560 1615488 5689272 1615440 5689168 -1615440 5689168 1613344 5689512 1615488 5689272 1623016 5701528 -1615440 5689168 1614768 5689000 1613344 5689512 1615488 5689272 -1613344 5689512 1613280 5689560 1615488 5689272 1614768 5689000 -1615440 5689168 1615168 5689016 1614768 5689000 1615488 5689272 -1615440 5689168 1615304 5689072 1615168 5689016 1615488 5689272 -1615440 5689168 1615392 5689120 1615304 5689072 1615488 5689272 -1615392 5689120 1615352 5689088 1615304 5689072 1615488 5689272 -1615304 5689072 1615168 5689016 1615488 5689272 1615392 5689120 -1615168 5689016 1614856 5688976 1614768 5689000 1615488 5689272 -1615168 5689016 1614768 5689000 1615488 5689272 1615304 5689072 -1615440 5689168 1615392 5689120 1615488 5689272 1623016 5701528 -1614768 5689000 1613344 5689512 1615488 5689272 1615168 5689016 -1614768 5689000 1613448 5689368 1613344 5689512 1615488 5689272 -1613280 5689560 1612768 5690096 1613112 5693056 1615488 5689272 -1613280 5689560 1612768 5690096 1615488 5689272 1613344 5689512 -1613280 5689560 1613216 5689568 1612768 5690096 1615488 5689272 -1615304 5689072 1615264 5689048 1615168 5689016 1615488 5689272 -1612768 5690096 1613016 5692968 1613112 5693056 1615488 5689272 -1613112 5693056 1613384 5693288 1615488 5689272 1612768 5690096 -1613384 5693288 1613488 5693384 1615488 5689272 1613112 5693056 -1614216 5694264 1615200 5695576 1615488 5689272 1614120 5694152 -1615440 5689168 1615488 5689272 1623016 5701528 1623192 5701576 -1615440 5689168 1615488 5689272 1623192 5701576 1623296 5701624 -1615440 5689168 1615488 5689272 1623296 5701624 1623408 5701720 -1615488 5689272 1623192 5701576 1623296 5701624 1623408 5701720 -1615440 5689168 1615392 5689120 1615488 5689272 1623408 5701720 -1615440 5689168 1615488 5689272 1623408 5701720 1663880 5646248 -1623408 5701720 1623576 5701960 1663880 5646248 1615488 5689272 -1615488 5689272 1623296 5701624 1623408 5701720 1663880 5646248 -1615440 5689168 1615488 5689272 1663880 5646248 1663776 5646144 -1615440 5689168 1615392 5689120 1615488 5689272 1663880 5646248 -1615488 5689272 1615632 5696264 1623016 5701528 1623192 5701576 -1615488 5689272 1623016 5701528 1623192 5701576 1623296 5701624 -1615488 5689272 1615488 5689328 1615512 5696024 1615632 5696264 -1615376 5695816 1615488 5689328 1615488 5689272 1615200 5695576 -1615488 5689272 1614216 5694264 1615200 5695576 1615488 5689328 -1615376 5695816 1615512 5696024 1615488 5689328 1615200 5695576 -1615200 5695576 1615376 5695816 1615488 5689328 1614216 5694264 -1615488 5689272 1614216 5694264 1615488 5689328 1615632 5696264 -1615488 5689272 1615488 5689328 1615632 5696264 1623016 5701528 -1615488 5689272 1615488 5689328 1623016 5701528 1623192 5701576 -1615488 5689328 1615512 5696024 1615632 5696264 1623016 5701528 -1615488 5689272 1614216 5694264 1615488 5689328 1623192 5701576 -1615488 5689328 1615632 5696264 1623016 5701528 1623192 5701576 -1615488 5689328 1615376 5695816 1615512 5696024 1615632 5696264 -1614216 5694264 1615056 5695464 1615200 5695576 1615488 5689328 -1615632 5696264 1621712 5701344 1623016 5701528 1615488 5689328 -1615488 5689272 1614120 5694152 1614216 5694264 1615488 5689328 -1614216 5694264 1615200 5695576 1615488 5689328 1614120 5694152 -1615488 5689272 1614120 5694152 1615488 5689328 1623192 5701576 -1615488 5689272 1613488 5693384 1614120 5694152 1615488 5689328 -1615488 5689272 1613384 5693288 1613488 5693384 1615488 5689328 -1615488 5689272 1613384 5693288 1615488 5689328 1623192 5701576 -1613488 5693384 1614120 5694152 1615488 5689328 1613384 5693288 -1613488 5693384 1613584 5693568 1614120 5694152 1615488 5689328 -1615488 5689272 1613112 5693056 1613384 5693288 1615488 5689328 -1613112 5693056 1613216 5693184 1613384 5693288 1615488 5689328 -1613384 5693288 1613488 5693384 1615488 5689328 1613112 5693056 -1615488 5689272 1613112 5693056 1615488 5689328 1623192 5701576 -1615488 5689272 1612768 5690096 1613112 5693056 1615488 5689328 -1615488 5689272 1613280 5689560 1612768 5690096 1615488 5689328 -1615488 5689272 1613344 5689512 1613280 5689560 1615488 5689328 -1615488 5689272 1614768 5689000 1613344 5689512 1615488 5689328 -1613344 5689512 1613280 5689560 1615488 5689328 1614768 5689000 -1615488 5689272 1615168 5689016 1614768 5689000 1615488 5689328 -1614768 5689000 1613344 5689512 1615488 5689328 1615168 5689016 -1615168 5689016 1614856 5688976 1614768 5689000 1615488 5689328 -1615488 5689272 1615304 5689072 1615168 5689016 1615488 5689328 -1615488 5689272 1615392 5689120 1615304 5689072 1615488 5689328 -1615488 5689272 1615440 5689168 1615392 5689120 1615488 5689328 -1615392 5689120 1615352 5689088 1615304 5689072 1615488 5689328 -1615392 5689120 1615304 5689072 1615488 5689328 1615440 5689168 -1615304 5689072 1615168 5689016 1615488 5689328 1615392 5689120 -1615168 5689016 1614768 5689000 1615488 5689328 1615304 5689072 -1613280 5689560 1613216 5689568 1612768 5690096 1615488 5689328 -1614768 5689000 1613448 5689368 1613344 5689512 1615488 5689328 -1613280 5689560 1612768 5690096 1615488 5689328 1613344 5689512 -1615488 5689272 1615440 5689168 1615488 5689328 1623192 5701576 -1615304 5689072 1615264 5689048 1615168 5689016 1615488 5689328 -1612768 5690096 1613016 5692968 1613112 5693056 1615488 5689328 -1612768 5690096 1613112 5693056 1615488 5689328 1613280 5689560 -1613112 5693056 1613384 5693288 1615488 5689328 1612768 5690096 -1614120 5694152 1614216 5694264 1615488 5689328 1613488 5693384 -1615488 5689272 1615488 5689328 1623192 5701576 1623296 5701624 -1615488 5689272 1615488 5689328 1623296 5701624 1623408 5701720 -1615488 5689328 1623016 5701528 1623192 5701576 1623296 5701624 -1615488 5689272 1615440 5689168 1615488 5689328 1623296 5701624 -1613112 5693056 1615416 5689384 1612768 5690096 1613016 5692968 -1615416 5689384 1615488 5689328 1612768 5690096 1613016 5692968 -1612768 5690096 1612744 5690128 1613016 5692968 1615416 5689384 -1613112 5693056 1615488 5689328 1615416 5689384 1613016 5692968 -1612768 5690096 1615416 5689384 1615488 5689328 1613280 5689560 -1612768 5690096 1613016 5692968 1615416 5689384 1613280 5689560 -1612768 5690096 1615416 5689384 1613280 5689560 1613216 5689568 -1615416 5689384 1613112 5693056 1615488 5689328 1613280 5689560 -1615488 5689328 1613344 5689512 1613280 5689560 1615416 5689384 -1615488 5689328 1614768 5689000 1613344 5689512 1615416 5689384 -1615488 5689328 1615168 5689016 1614768 5689000 1615416 5689384 -1615168 5689016 1614856 5688976 1614768 5689000 1615416 5689384 -1615168 5689016 1614856 5688976 1615416 5689384 1615488 5689328 -1614768 5689000 1613344 5689512 1615416 5689384 1614856 5688976 -1614856 5688976 1614848 5688968 1614768 5689000 1615416 5689384 -1615488 5689328 1615304 5689072 1615168 5689016 1615416 5689384 -1615168 5689016 1614856 5688976 1615416 5689384 1615304 5689072 -1615488 5689328 1615392 5689120 1615304 5689072 1615416 5689384 -1615392 5689120 1615352 5689088 1615304 5689072 1615416 5689384 -1615488 5689328 1615440 5689168 1615392 5689120 1615416 5689384 -1615488 5689328 1615488 5689272 1615440 5689168 1615416 5689384 -1615440 5689168 1615392 5689120 1615416 5689384 1615488 5689272 -1615392 5689120 1615304 5689072 1615416 5689384 1615440 5689168 -1615304 5689072 1615168 5689016 1615416 5689384 1615392 5689120 -1615488 5689328 1615488 5689272 1615416 5689384 1613112 5693056 -1614768 5689000 1613448 5689368 1613344 5689512 1615416 5689384 -1613344 5689512 1613280 5689560 1615416 5689384 1614768 5689000 -1615168 5689016 1615080 5688984 1614856 5688976 1615416 5689384 -1615168 5689016 1615080 5688984 1615416 5689384 1615304 5689072 -1614856 5688976 1614768 5689000 1615416 5689384 1615080 5688984 -1615080 5688984 1614992 5688968 1614856 5688976 1615416 5689384 -1614856 5688976 1614768 5689000 1615416 5689384 1614992 5688968 -1614992 5688968 1614904 5688968 1614856 5688976 1615416 5689384 -1615080 5688984 1614992 5688968 1615416 5689384 1615168 5689016 -1615304 5689072 1615264 5689048 1615168 5689016 1615416 5689384 -1615168 5689016 1615080 5688984 1615416 5689384 1615264 5689048 -1615304 5689072 1615264 5689048 1615416 5689384 1615392 5689120 -1613280 5689560 1612768 5690096 1615416 5689384 1613344 5689512 -1615488 5689328 1615416 5689384 1613112 5693056 1613384 5693288 -1613112 5693056 1613216 5693184 1613384 5693288 1615416 5689384 -1615488 5689328 1615416 5689384 1613384 5693288 1613488 5693384 -1615488 5689328 1615488 5689272 1615416 5689384 1613488 5693384 -1615416 5689384 1613016 5692968 1613112 5693056 1613384 5693288 -1615488 5689328 1615416 5689384 1613488 5693384 1614120 5694152 -1615416 5689384 1613384 5693288 1613488 5693384 1614120 5694152 -1615488 5689328 1615488 5689272 1615416 5689384 1614120 5694152 -1613488 5693384 1613584 5693568 1614120 5694152 1615416 5689384 -1615416 5689384 1613112 5693056 1613384 5693288 1613488 5693384 -1615488 5689328 1615416 5689384 1614120 5694152 1614216 5694264 -1615488 5689328 1615416 5689384 1614216 5694264 1615200 5695576 -1615488 5689328 1615488 5689272 1615416 5689384 1615200 5695576 -1615488 5689328 1615416 5689384 1615200 5695576 1615376 5695816 -1615416 5689384 1613488 5693384 1614120 5694152 1614216 5694264 -1614216 5694264 1615056 5695464 1615200 5695576 1615416 5689384 -1615416 5689384 1614120 5694152 1614216 5694264 1615200 5695576 -1614768 5689000 1615384 5689384 1615416 5689384 1614856 5688976 -1615416 5689384 1614992 5688968 1614856 5688976 1615384 5689384 -1614992 5688968 1614904 5688968 1614856 5688976 1615384 5689384 -1615384 5689384 1613344 5689512 1615416 5689384 1614992 5688968 -1614856 5688976 1614768 5689000 1615384 5689384 1614992 5688968 -1614768 5689000 1615384 5689384 1614856 5688976 1614848 5688968 -1614768 5689000 1613344 5689512 1615384 5689384 1614856 5688976 -1613344 5689512 1615384 5689384 1614768 5689000 1613448 5689368 -1615416 5689384 1615384 5689384 1613344 5689512 1613280 5689560 -1615416 5689384 1614992 5688968 1615384 5689384 1613280 5689560 -1615384 5689384 1614768 5689000 1613344 5689512 1613280 5689560 -1615416 5689384 1615080 5688984 1614992 5688968 1615384 5689384 -1614992 5688968 1614856 5688976 1615384 5689384 1615080 5688984 -1615416 5689384 1615080 5688984 1615384 5689384 1613280 5689560 -1615416 5689384 1615168 5689016 1615080 5688984 1615384 5689384 -1615416 5689384 1615264 5689048 1615168 5689016 1615384 5689384 -1615416 5689384 1615264 5689048 1615384 5689384 1613280 5689560 -1615168 5689016 1615080 5688984 1615384 5689384 1615264 5689048 -1615080 5688984 1614992 5688968 1615384 5689384 1615168 5689016 -1615416 5689384 1615304 5689072 1615264 5689048 1615384 5689384 -1615264 5689048 1615168 5689016 1615384 5689384 1615304 5689072 -1615416 5689384 1615304 5689072 1615384 5689384 1613280 5689560 -1615416 5689384 1615392 5689120 1615304 5689072 1615384 5689384 -1615392 5689120 1615352 5689088 1615304 5689072 1615384 5689384 -1615416 5689384 1615392 5689120 1615384 5689384 1613280 5689560 -1615416 5689384 1615440 5689168 1615392 5689120 1615384 5689384 -1615416 5689384 1615488 5689272 1615440 5689168 1615384 5689384 -1615416 5689384 1615488 5689328 1615488 5689272 1615384 5689384 -1615416 5689384 1615488 5689272 1615384 5689384 1613280 5689560 -1615440 5689168 1615392 5689120 1615384 5689384 1615488 5689272 -1615392 5689120 1615304 5689072 1615384 5689384 1615440 5689168 -1615304 5689072 1615264 5689048 1615384 5689384 1615392 5689120 -1615416 5689384 1615384 5689384 1613280 5689560 1612768 5690096 -1615416 5689384 1615488 5689272 1615384 5689384 1612768 5690096 -1615416 5689384 1615384 5689384 1612768 5690096 1613016 5692968 -1615416 5689384 1615488 5689272 1615384 5689384 1613016 5692968 -1612768 5690096 1612744 5690128 1613016 5692968 1615384 5689384 -1613280 5689560 1613216 5689568 1612768 5690096 1615384 5689384 -1615384 5689384 1613344 5689512 1613280 5689560 1612768 5690096 -1615416 5689384 1615384 5689384 1613016 5692968 1613112 5693056 -1615416 5689384 1615488 5689272 1615384 5689384 1613112 5693056 -1615384 5689384 1612768 5690096 1613016 5692968 1613112 5693056 -1615416 5689384 1615384 5689384 1613112 5693056 1613384 5693288 -1613112 5693056 1613216 5693184 1613384 5693288 1615384 5689384 -1615416 5689384 1615488 5689272 1615384 5689384 1613384 5693288 -1615384 5689384 1613016 5692968 1613112 5693056 1613384 5693288 -1615384 5689384 1613280 5689560 1612768 5690096 1613016 5692968 -1615416 5689384 1615384 5689384 1613384 5693288 1613488 5693384 -1615416 5689384 1615488 5689272 1615384 5689384 1613488 5693384 -1615416 5689384 1615384 5689384 1613488 5693384 1614120 5694152 -1615384 5689384 1613112 5693056 1613384 5693288 1613488 5693384 -1615384 5689384 1615312 5689360 1613344 5689512 1613280 5689560 -1615384 5689384 1614768 5689000 1615312 5689360 1613280 5689560 -1614768 5689000 1615312 5689360 1615384 5689384 1614856 5688976 -1614768 5689000 1613344 5689512 1615312 5689360 1614856 5688976 -1615384 5689384 1614992 5688968 1614856 5688976 1615312 5689360 -1615384 5689384 1615080 5688984 1614992 5688968 1615312 5689360 -1614992 5688968 1614904 5688968 1614856 5688976 1615312 5689360 -1614992 5688968 1614904 5688968 1615312 5689360 1615080 5688984 -1614768 5689000 1615312 5689360 1614856 5688976 1614848 5688968 -1615312 5689360 1613280 5689560 1615384 5689384 1615080 5688984 -1614856 5688976 1614768 5689000 1615312 5689360 1614904 5688968 -1615312 5689360 1614768 5689000 1613344 5689512 1613280 5689560 -1613344 5689512 1615312 5689360 1614768 5689000 1613448 5689368 -1615384 5689384 1615312 5689360 1613280 5689560 1612768 5690096 -1615312 5689360 1613344 5689512 1613280 5689560 1612768 5690096 -1615384 5689384 1615080 5688984 1615312 5689360 1612768 5690096 -1613280 5689560 1613216 5689568 1612768 5690096 1615312 5689360 -1615384 5689384 1615168 5689016 1615080 5688984 1615312 5689360 -1615080 5688984 1614992 5688968 1615312 5689360 1615168 5689016 -1615384 5689384 1615168 5689016 1615312 5689360 1612768 5690096 -1615384 5689384 1615264 5689048 1615168 5689016 1615312 5689360 -1615384 5689384 1615304 5689072 1615264 5689048 1615312 5689360 -1615384 5689384 1615304 5689072 1615312 5689360 1612768 5690096 -1615264 5689048 1615168 5689016 1615312 5689360 1615304 5689072 -1615168 5689016 1615080 5688984 1615312 5689360 1615264 5689048 -1615384 5689384 1615392 5689120 1615304 5689072 1615312 5689360 -1615304 5689072 1615264 5689048 1615312 5689360 1615392 5689120 -1615392 5689120 1615352 5689088 1615304 5689072 1615312 5689360 -1615384 5689384 1615440 5689168 1615392 5689120 1615312 5689360 -1615384 5689384 1615488 5689272 1615440 5689168 1615312 5689360 -1615384 5689384 1615416 5689384 1615488 5689272 1615312 5689360 -1615440 5689168 1615392 5689120 1615312 5689360 1615488 5689272 -1615384 5689384 1615488 5689272 1615312 5689360 1612768 5690096 -1615392 5689120 1615304 5689072 1615312 5689360 1615440 5689168 -1615384 5689384 1615312 5689360 1612768 5690096 1613016 5692968 -1615384 5689384 1615312 5689360 1613016 5692968 1613112 5693056 -1615384 5689384 1615488 5689272 1615312 5689360 1613112 5693056 -1612768 5690096 1612744 5690128 1613016 5692968 1615312 5689360 -1615312 5689360 1613280 5689560 1612768 5690096 1613016 5692968 -1615384 5689384 1615312 5689360 1613112 5693056 1613384 5693288 -1615312 5689360 1612768 5690096 1613016 5692968 1613112 5693056 -1614768 5689000 1615224 5689304 1615312 5689360 1614856 5688976 -1615224 5689304 1613344 5689512 1615312 5689360 1614856 5688976 -1614768 5689000 1615224 5689304 1614856 5688976 1614848 5688968 -1615312 5689360 1614904 5688968 1614856 5688976 1615224 5689304 -1615312 5689360 1614904 5688968 1615224 5689304 1613344 5689512 -1614856 5688976 1614768 5689000 1615224 5689304 1614904 5688968 -1615312 5689360 1614992 5688968 1614904 5688968 1615224 5689304 -1615312 5689360 1614992 5688968 1615224 5689304 1613344 5689512 -1615312 5689360 1615080 5688984 1614992 5688968 1615224 5689304 -1615312 5689360 1615080 5688984 1615224 5689304 1613344 5689512 -1615312 5689360 1615168 5689016 1615080 5688984 1615224 5689304 -1615312 5689360 1615168 5689016 1615224 5689304 1613344 5689512 -1614992 5688968 1614904 5688968 1615224 5689304 1615080 5688984 -1615080 5688984 1614992 5688968 1615224 5689304 1615168 5689016 -1614904 5688968 1614856 5688976 1615224 5689304 1614992 5688968 -1615312 5689360 1615224 5689304 1613344 5689512 1613280 5689560 -1614768 5689000 1613344 5689512 1615224 5689304 1614856 5688976 -1613344 5689512 1615224 5689304 1614768 5689000 1613448 5689368 -1613344 5689512 1615224 5689304 1613448 5689368 1613376 5689456 -1613344 5689512 1615312 5689360 1615224 5689304 1613448 5689368 -1615224 5689304 1614856 5688976 1614768 5689000 1613448 5689368 -1615312 5689360 1615264 5689048 1615168 5689016 1615224 5689304 -1615312 5689360 1615264 5689048 1615224 5689304 1613344 5689512 -1615168 5689016 1615080 5688984 1615224 5689304 1615264 5689048 -1615312 5689360 1615304 5689072 1615264 5689048 1615224 5689304 -1615312 5689360 1615392 5689120 1615304 5689072 1615224 5689304 -1615392 5689120 1615352 5689088 1615304 5689072 1615224 5689304 -1615392 5689120 1615352 5689088 1615224 5689304 1615312 5689360 -1615312 5689360 1615392 5689120 1615224 5689304 1613344 5689512 -1615304 5689072 1615264 5689048 1615224 5689304 1615352 5689088 -1615264 5689048 1615168 5689016 1615224 5689304 1615304 5689072 -1615312 5689360 1615440 5689168 1615392 5689120 1615224 5689304 -1615392 5689120 1615352 5689088 1615224 5689304 1615440 5689168 -1615312 5689360 1615440 5689168 1615224 5689304 1613344 5689512 -1615312 5689360 1615488 5689272 1615440 5689168 1615224 5689304 -1614768 5689000 1613480 5689256 1613448 5689368 1615224 5689304 -1614768 5689000 1615176 5689288 1615224 5689304 1614856 5688976 -1615224 5689304 1614904 5688968 1614856 5688976 1615176 5689288 -1614768 5689000 1615176 5689288 1614856 5688976 1614848 5688968 -1615224 5689304 1614992 5688968 1614904 5688968 1615176 5689288 -1614904 5688968 1614856 5688976 1615176 5689288 1614992 5688968 -1615224 5689304 1615080 5688984 1614992 5688968 1615176 5689288 -1615224 5689304 1615168 5689016 1615080 5688984 1615176 5689288 -1615224 5689304 1615264 5689048 1615168 5689016 1615176 5689288 -1615080 5688984 1614992 5688968 1615176 5689288 1615168 5689016 -1615168 5689016 1615080 5688984 1615176 5689288 1615264 5689048 -1614992 5688968 1614904 5688968 1615176 5689288 1615080 5688984 -1615176 5689288 1613448 5689368 1615224 5689304 1615264 5689048 -1614856 5688976 1614768 5689000 1615176 5689288 1614904 5688968 -1614768 5689000 1613448 5689368 1615176 5689288 1614856 5688976 -1615224 5689304 1615176 5689288 1613448 5689368 1613344 5689512 -1613448 5689368 1613376 5689456 1613344 5689512 1615176 5689288 -1615224 5689304 1615176 5689288 1613344 5689512 1615312 5689360 -1613344 5689512 1613280 5689560 1615312 5689360 1615176 5689288 -1615224 5689304 1615264 5689048 1615176 5689288 1615312 5689360 -1615176 5689288 1614768 5689000 1613448 5689368 1613344 5689512 -1615176 5689288 1613448 5689368 1613344 5689512 1615312 5689360 -1615224 5689304 1615304 5689072 1615264 5689048 1615176 5689288 -1615264 5689048 1615168 5689016 1615176 5689288 1615304 5689072 -1615224 5689304 1615304 5689072 1615176 5689288 1615312 5689360 -1615224 5689304 1615352 5689088 1615304 5689072 1615176 5689288 -1613448 5689368 1615176 5689288 1614768 5689000 1613480 5689256 -1615176 5689288 1615096 5689256 1613448 5689368 1613344 5689512 -1613448 5689368 1613376 5689456 1613344 5689512 1615096 5689256 -1615176 5689288 1614768 5689000 1615096 5689256 1613344 5689512 -1614768 5689000 1615096 5689256 1615176 5689288 1614856 5688976 -1614768 5689000 1613448 5689368 1615096 5689256 1614856 5688976 -1614768 5689000 1615096 5689256 1614856 5688976 1614848 5688968 -1615176 5689288 1614904 5688968 1614856 5688976 1615096 5689256 -1615176 5689288 1614992 5688968 1614904 5688968 1615096 5689256 -1615176 5689288 1615080 5688984 1614992 5688968 1615096 5689256 -1614992 5688968 1614904 5688968 1615096 5689256 1615080 5688984 -1615176 5689288 1615168 5689016 1615080 5688984 1615096 5689256 -1615176 5689288 1615264 5689048 1615168 5689016 1615096 5689256 -1615176 5689288 1615304 5689072 1615264 5689048 1615096 5689256 -1615168 5689016 1615080 5688984 1615096 5689256 1615264 5689048 -1615080 5688984 1614992 5688968 1615096 5689256 1615168 5689016 -1614904 5688968 1614856 5688976 1615096 5689256 1614992 5688968 -1615096 5689256 1613344 5689512 1615176 5689288 1615264 5689048 -1614856 5688976 1614768 5689000 1615096 5689256 1614904 5688968 -1615096 5689256 1614768 5689000 1613448 5689368 1613344 5689512 -1615176 5689288 1615096 5689256 1613344 5689512 1615312 5689360 -1615176 5689288 1615096 5689256 1615312 5689360 1615224 5689304 -1613344 5689512 1613280 5689560 1615312 5689360 1615096 5689256 -1615096 5689256 1613448 5689368 1613344 5689512 1615312 5689360 -1615176 5689288 1615264 5689048 1615096 5689256 1615312 5689360 -1613448 5689368 1615096 5689256 1614768 5689000 1613480 5689256 -1614768 5689000 1615000 5689240 1615096 5689256 1614856 5688976 -1615000 5689240 1613448 5689368 1615096 5689256 1614856 5688976 -1614768 5689000 1613448 5689368 1615000 5689240 1614856 5688976 -1614768 5689000 1615000 5689240 1614856 5688976 1614848 5688968 -1615096 5689256 1614904 5688968 1614856 5688976 1615000 5689240 -1615096 5689256 1614904 5688968 1615000 5689240 1613448 5689368 -1614856 5688976 1614768 5689000 1615000 5689240 1614904 5688968 -1615096 5689256 1614992 5688968 1614904 5688968 1615000 5689240 -1615096 5689256 1614992 5688968 1615000 5689240 1613448 5689368 -1615096 5689256 1615080 5688984 1614992 5688968 1615000 5689240 -1615096 5689256 1615080 5688984 1615000 5689240 1613448 5689368 -1615096 5689256 1615168 5689016 1615080 5688984 1615000 5689240 -1614992 5688968 1614904 5688968 1615000 5689240 1615080 5688984 -1614904 5688968 1614856 5688976 1615000 5689240 1614992 5688968 -1615096 5689256 1615000 5689240 1613448 5689368 1613344 5689512 -1615096 5689256 1615080 5688984 1615000 5689240 1613344 5689512 -1615000 5689240 1614768 5689000 1613448 5689368 1613344 5689512 -1613448 5689368 1613376 5689456 1613344 5689512 1615000 5689240 -1615096 5689256 1615000 5689240 1613344 5689512 1615312 5689360 -1615096 5689256 1615080 5688984 1615000 5689240 1615312 5689360 -1613344 5689512 1613280 5689560 1615312 5689360 1615000 5689240 -1613280 5689560 1612768 5690096 1615312 5689360 1615000 5689240 -1615312 5689360 1615096 5689256 1615000 5689240 1613280 5689560 -1615000 5689240 1613448 5689368 1613344 5689512 1613280 5689560 -1615096 5689256 1615000 5689240 1615312 5689360 1615176 5689288 -1615096 5689256 1615080 5688984 1615000 5689240 1615176 5689288 -1615312 5689360 1615224 5689304 1615176 5689288 1615000 5689240 -1615000 5689240 1613280 5689560 1615312 5689360 1615176 5689288 -1613448 5689368 1615000 5689240 1614768 5689000 1613480 5689256 -1615000 5689240 1614904 5689200 1613448 5689368 1613344 5689512 -1615000 5689240 1614768 5689000 1614904 5689200 1613344 5689512 -1614768 5689000 1614904 5689200 1615000 5689240 1614856 5688976 -1615000 5689240 1614904 5688968 1614856 5688976 1614904 5689200 -1614904 5689200 1613344 5689512 1615000 5689240 1614904 5688968 -1614856 5688976 1614768 5689000 1614904 5689200 1614904 5688968 -1614904 5689200 1614768 5689000 1613448 5689368 1613344 5689512 -1614768 5689000 1613448 5689368 1614904 5689200 1614856 5688976 -1613448 5689368 1613376 5689456 1613344 5689512 1614904 5689200 -1614768 5689000 1614904 5689200 1614856 5688976 1614848 5688968 -1615000 5689240 1614992 5688968 1614904 5688968 1614904 5689200 -1614904 5688968 1614856 5688976 1614904 5689200 1614992 5688968 -1615000 5689240 1614992 5688968 1614904 5689200 1613344 5689512 -1615000 5689240 1615080 5688984 1614992 5688968 1614904 5689200 -1615000 5689240 1614904 5689200 1613344 5689512 1613280 5689560 -1613448 5689368 1614904 5689200 1614768 5689000 1613480 5689256 -1614904 5689200 1614864 5689176 1613448 5689368 1613344 5689512 -1614904 5689200 1614864 5689176 1613344 5689512 1615000 5689240 -1614904 5689200 1614768 5689000 1614864 5689176 1613344 5689512 -1614768 5689000 1614864 5689176 1614904 5689200 1614856 5688976 -1614768 5689000 1613448 5689368 1614864 5689176 1614856 5688976 -1614904 5689200 1614904 5688968 1614856 5688976 1614864 5689176 -1614904 5689200 1614992 5688968 1614904 5688968 1614864 5689176 -1614864 5689176 1613344 5689512 1614904 5689200 1614904 5688968 -1614856 5688976 1614768 5689000 1614864 5689176 1614904 5688968 -1614864 5689176 1614768 5689000 1613448 5689368 1613344 5689512 -1613448 5689368 1613376 5689456 1613344 5689512 1614864 5689176 -1614768 5689000 1614864 5689176 1614856 5688976 1614848 5688968 -1613448 5689368 1614864 5689176 1614768 5689000 1613480 5689256 -1614864 5689176 1614856 5688976 1614768 5689000 1613480 5689256 -1613448 5689368 1613344 5689512 1614864 5689176 1613480 5689256 -1614768 5689000 1613504 5689056 1613480 5689256 1614864 5689176 -1614768 5689000 1614840 5689152 1614864 5689176 1614856 5688976 -1614840 5689152 1613480 5689256 1614864 5689176 1614856 5688976 -1614864 5689176 1614904 5688968 1614856 5688976 1614840 5689152 -1614864 5689176 1614904 5688968 1614840 5689152 1613480 5689256 -1614856 5688976 1614768 5689000 1614840 5689152 1614904 5688968 -1614864 5689176 1614904 5689200 1614904 5688968 1614840 5689152 -1614768 5689000 1613480 5689256 1614840 5689152 1614856 5688976 -1614768 5689000 1614840 5689152 1614856 5688976 1614848 5688968 -1613480 5689256 1614840 5689152 1614768 5689000 1613504 5689056 -1614864 5689176 1614840 5689152 1613480 5689256 1613448 5689368 -1614864 5689176 1614904 5688968 1614840 5689152 1613448 5689368 -1614840 5689152 1614768 5689000 1613480 5689256 1613448 5689368 -1614864 5689176 1614840 5689152 1613448 5689368 1613344 5689512 -1614840 5689152 1614768 5689040 1613480 5689256 1613448 5689368 -1614768 5689000 1614768 5689040 1614840 5689152 1614856 5688976 -1614840 5689152 1614904 5688968 1614856 5688976 1614768 5689040 -1614768 5689040 1613480 5689256 1614840 5689152 1614856 5688976 -1614768 5689000 1613480 5689256 1614768 5689040 1614856 5688976 -1614768 5689000 1614768 5689040 1614856 5688976 1614848 5688968 -1613480 5689256 1614768 5689040 1614768 5689000 1613504 5689056 -1613480 5689256 1614840 5689152 1614768 5689040 1613504 5689056 -1614768 5689040 1614856 5688976 1614768 5689000 1613504 5689056 -1614768 5689000 1613448 5688912 1613504 5689056 1614768 5689040 -1614768 5689000 1614072 5688456 1613392 5688832 1613448 5688912 -1614072 5688456 1613424 5687768 1613392 5688832 1613448 5688912 -1613424 5687768 1614072 5688456 1614768 5689000 1614848 5688968 -1613424 5687768 1614072 5688456 1614848 5688968 1613640 5687040 -1613424 5687768 1614072 5688456 1613640 5687040 1613408 5687664 -1613424 5687768 1613392 5688832 1614072 5688456 1613640 5687040 -1614072 5688456 1614768 5689000 1614848 5688968 1613640 5687040 -1614848 5688968 1614904 5688968 1613640 5687040 1614072 5688456 -1613640 5687040 1613424 5687768 1614072 5688456 1614904 5688968 -1614848 5688968 1614904 5688968 1614072 5688456 1614768 5689000 -1614768 5689000 1614848 5688968 1614072 5688456 1613448 5688912 -1614904 5688968 1614992 5688968 1613640 5687040 1614072 5688456 -1613640 5687040 1613424 5687768 1614072 5688456 1614992 5688968 -1614992 5688968 1615080 5688984 1613640 5687040 1614072 5688456 -1614904 5688968 1614992 5688968 1614072 5688456 1614848 5688968 -1613392 5688832 1614072 5688456 1613424 5687768 1613336 5688792 -1613392 5688832 1613448 5688912 1614072 5688456 1613336 5688792 -1614072 5688456 1613640 5687040 1613424 5687768 1613336 5688792 -1613424 5687768 1613296 5687768 1613336 5688792 1614072 5688456 -1614848 5688968 1614856 5688976 1614904 5688968 1614072 5688456 -1614768 5689000 1614072 5688456 1613448 5688912 1613504 5689056 -1614072 5688456 1613392 5688832 1613448 5688912 1613504 5689056 -1614768 5689000 1614848 5688968 1614072 5688456 1613504 5689056 -1614768 5689000 1614072 5688456 1613504 5689056 1614768 5689040 -1613504 5689056 1613480 5689256 1614768 5689040 1614072 5688456 -1614768 5689000 1614848 5688968 1614072 5688456 1614768 5689040 -1614072 5688456 1613448 5688912 1613504 5689056 1614768 5689040 -1614072 5688456 1614136 5688440 1613640 5687040 1613424 5687768 -1613640 5687040 1613408 5687664 1613424 5687768 1614136 5688440 -1613640 5687040 1614136 5688440 1614992 5688968 1615080 5688984 -1614072 5688456 1614136 5688440 1613424 5687768 1613336 5688792 -1614072 5688456 1614992 5688968 1614136 5688440 1613424 5687768 -1614136 5688440 1615080 5688984 1613640 5687040 1613424 5687768 -1613640 5687040 1614136 5688440 1615080 5688984 1615168 5689016 -1614136 5688440 1614072 5688456 1614992 5688968 1615080 5688984 -1614992 5688968 1614136 5688440 1614072 5688456 1614904 5688968 -1614072 5688456 1614848 5688968 1614904 5688968 1614136 5688440 -1614072 5688456 1614768 5689000 1614848 5688968 1614136 5688440 -1614848 5688968 1614904 5688968 1614136 5688440 1614768 5689000 -1614136 5688440 1613424 5687768 1614072 5688456 1614768 5689000 -1614072 5688456 1614768 5689040 1614768 5689000 1614136 5688440 -1614992 5688968 1615080 5688984 1614136 5688440 1614904 5688968 -1614904 5688968 1614992 5688968 1614136 5688440 1614848 5688968 -1614848 5688968 1614856 5688976 1614904 5688968 1614136 5688440 -1615080 5688984 1614216 5688432 1614136 5688440 1614992 5688968 -1614136 5688440 1614216 5688432 1613640 5687040 1613424 5687768 -1613640 5687040 1613408 5687664 1613424 5687768 1614216 5688432 -1614136 5688440 1614216 5688432 1613424 5687768 1614072 5688456 -1613640 5687040 1614216 5688432 1615080 5688984 1615168 5689016 -1614216 5688432 1613424 5687768 1614136 5688440 1614992 5688968 -1614136 5688440 1614904 5688968 1614992 5688968 1614216 5688432 -1614992 5688968 1615080 5688984 1614216 5688432 1614904 5688968 -1614136 5688440 1614904 5688968 1614216 5688432 1613424 5687768 -1614216 5688432 1615080 5688984 1613640 5687040 1613424 5687768 -1614136 5688440 1614848 5688968 1614904 5688968 1614216 5688432 -1614136 5688440 1614768 5689000 1614848 5688968 1614216 5688432 -1614136 5688440 1614072 5688456 1614768 5689000 1614216 5688432 -1614768 5689000 1614848 5688968 1614216 5688432 1614072 5688456 -1614072 5688456 1614768 5689040 1614768 5689000 1614216 5688432 -1614136 5688440 1614072 5688456 1614216 5688432 1613424 5687768 -1614904 5688968 1614992 5688968 1614216 5688432 1614848 5688968 -1614848 5688968 1614904 5688968 1614216 5688432 1614768 5689000 -1614848 5688968 1614856 5688976 1614904 5688968 1614216 5688432 -1615080 5688984 1613640 5687040 1614216 5688432 1614992 5688968 -1613640 5687040 1614312 5688440 1615080 5688984 1615168 5689016 -1614312 5688440 1614216 5688432 1615080 5688984 1615168 5689016 -1614216 5688432 1614312 5688440 1613640 5687040 1613424 5687768 -1613640 5687040 1614312 5688440 1615168 5689016 1615264 5689048 -1613640 5687040 1614312 5688440 1615264 5689048 1613632 5687000 -1614312 5688440 1615080 5688984 1615168 5689016 1615264 5689048 -1615080 5688984 1614312 5688440 1614216 5688432 1614992 5688968 -1614216 5688432 1614904 5688968 1614992 5688968 1614312 5688440 -1615080 5688984 1615168 5689016 1614312 5688440 1614992 5688968 -1614216 5688432 1614848 5688968 1614904 5688968 1614312 5688440 -1614904 5688968 1614992 5688968 1614312 5688440 1614848 5688968 -1614216 5688432 1614768 5689000 1614848 5688968 1614312 5688440 -1614216 5688432 1614072 5688456 1614768 5689000 1614312 5688440 -1614216 5688432 1614136 5688440 1614072 5688456 1614312 5688440 -1614072 5688456 1614768 5689000 1614312 5688440 1614136 5688440 -1614072 5688456 1614768 5689040 1614768 5689000 1614312 5688440 -1614848 5688968 1614904 5688968 1614312 5688440 1614768 5689000 -1614768 5689000 1614848 5688968 1614312 5688440 1614072 5688456 -1614848 5688968 1614856 5688976 1614904 5688968 1614312 5688440 -1614312 5688440 1613640 5687040 1614216 5688432 1614136 5688440 -1614992 5688968 1615080 5688984 1614312 5688440 1614904 5688968 -1613640 5687040 1614216 5688432 1614312 5688440 1615264 5689048 -1613640 5687040 1614392 5688480 1615264 5689048 1613632 5687000 -1615264 5689048 1614392 5688480 1614312 5688440 1615168 5689016 -1614392 5688480 1613640 5687040 1614312 5688440 1615168 5689016 -1614312 5688440 1615080 5688984 1615168 5689016 1614392 5688480 -1614312 5688440 1615080 5688984 1614392 5688480 1613640 5687040 -1614312 5688440 1614992 5688968 1615080 5688984 1614392 5688480 -1614312 5688440 1614992 5688968 1614392 5688480 1613640 5687040 -1615080 5688984 1615168 5689016 1614392 5688480 1614992 5688968 -1615264 5689048 1613640 5687040 1614392 5688480 1615168 5689016 -1615168 5689016 1615264 5689048 1614392 5688480 1615080 5688984 -1614312 5688440 1614904 5688968 1614992 5688968 1614392 5688480 -1614312 5688440 1614848 5688968 1614904 5688968 1614392 5688480 -1614312 5688440 1614848 5688968 1614392 5688480 1613640 5687040 -1614992 5688968 1615080 5688984 1614392 5688480 1614904 5688968 -1614312 5688440 1614768 5689000 1614848 5688968 1614392 5688480 -1614848 5688968 1614904 5688968 1614392 5688480 1614768 5689000 -1614312 5688440 1614768 5689000 1614392 5688480 1613640 5687040 -1614312 5688440 1614072 5688456 1614768 5689000 1614392 5688480 -1614312 5688440 1614072 5688456 1614392 5688480 1613640 5687040 -1614312 5688440 1614136 5688440 1614072 5688456 1614392 5688480 -1614312 5688440 1614136 5688440 1614392 5688480 1613640 5687040 -1614312 5688440 1614216 5688432 1614136 5688440 1614392 5688480 -1614312 5688440 1614216 5688432 1614392 5688480 1613640 5687040 -1614136 5688440 1614072 5688456 1614392 5688480 1614216 5688432 -1614072 5688456 1614768 5689040 1614768 5689000 1614392 5688480 -1614768 5689000 1614848 5688968 1614392 5688480 1614768 5689040 -1614072 5688456 1613504 5689056 1614768 5689040 1614392 5688480 -1614072 5688456 1614768 5689040 1614392 5688480 1614136 5688440 -1614848 5688968 1614856 5688976 1614904 5688968 1614392 5688480 -1614904 5688968 1614992 5688968 1614392 5688480 1614848 5688968 -1614312 5688440 1614392 5688480 1613640 5687040 1614216 5688432 -1613640 5687040 1614416 5688480 1615264 5689048 1613632 5687000 -1614392 5688480 1614416 5688480 1613640 5687040 1614312 5688440 -1614392 5688480 1615264 5689048 1614416 5688480 1614312 5688440 -1615264 5689048 1614416 5688480 1614392 5688480 1615168 5689016 -1614416 5688480 1614312 5688440 1614392 5688480 1615168 5689016 -1614416 5688480 1615264 5689048 1613640 5687040 1614312 5688440 -1615264 5689048 1613640 5687040 1614416 5688480 1615168 5689016 -1614392 5688480 1615080 5688984 1615168 5689016 1614416 5688480 -1614392 5688480 1614992 5688968 1615080 5688984 1614416 5688480 -1614392 5688480 1614904 5688968 1614992 5688968 1614416 5688480 -1614992 5688968 1615080 5688984 1614416 5688480 1614904 5688968 -1614392 5688480 1614904 5688968 1614416 5688480 1614312 5688440 -1615168 5689016 1615264 5689048 1614416 5688480 1615080 5688984 -1615080 5688984 1615168 5689016 1614416 5688480 1614992 5688968 -1614392 5688480 1614848 5688968 1614904 5688968 1614416 5688480 -1614392 5688480 1614768 5689000 1614848 5688968 1614416 5688480 -1614904 5688968 1614992 5688968 1614416 5688480 1614848 5688968 -1614392 5688480 1614768 5689040 1614768 5689000 1614416 5688480 -1614392 5688480 1614768 5689000 1614416 5688480 1614312 5688440 -1614848 5688968 1614856 5688976 1614904 5688968 1614416 5688480 -1614848 5688968 1614904 5688968 1614416 5688480 1614768 5689000 -1613640 5687040 1614216 5688432 1614312 5688440 1614416 5688480 -1614416 5688480 1614472 5688520 1615168 5689016 1615264 5689048 -1614416 5688480 1615080 5688984 1614472 5688520 1615264 5689048 -1614416 5688480 1614472 5688520 1615264 5689048 1613640 5687040 -1615264 5689048 1613632 5687000 1613640 5687040 1614472 5688520 -1613632 5687000 1613616 5687016 1613640 5687040 1614472 5688520 -1615264 5689048 1615352 5689088 1613632 5687000 1614472 5688520 -1614472 5688520 1615168 5689016 1615264 5689048 1613632 5687000 -1614416 5688480 1614472 5688520 1613640 5687040 1614312 5688440 -1614416 5688480 1615080 5688984 1614472 5688520 1613640 5687040 -1613640 5687040 1614416 5688480 1614472 5688520 1613632 5687000 -1614472 5688520 1615080 5688984 1615168 5689016 1615264 5689048 -1615080 5688984 1614472 5688520 1614416 5688480 1614992 5688968 -1615080 5688984 1615168 5689016 1614472 5688520 1614992 5688968 -1614416 5688480 1614904 5688968 1614992 5688968 1614472 5688520 -1614416 5688480 1614848 5688968 1614904 5688968 1614472 5688520 -1614904 5688968 1614992 5688968 1614472 5688520 1614848 5688968 -1614472 5688520 1613640 5687040 1614416 5688480 1614848 5688968 -1614848 5688968 1614856 5688976 1614904 5688968 1614472 5688520 -1614992 5688968 1615080 5688984 1614472 5688520 1614904 5688968 -1614416 5688480 1614768 5689000 1614848 5688968 1614472 5688520 -1614416 5688480 1614392 5688480 1614768 5689000 1614472 5688520 -1614848 5688968 1614904 5688968 1614472 5688520 1614768 5689000 -1614392 5688480 1614768 5689040 1614768 5689000 1614472 5688520 -1614392 5688480 1614768 5689040 1614472 5688520 1614416 5688480 -1614392 5688480 1614072 5688456 1614768 5689040 1614472 5688520 -1614392 5688480 1614072 5688456 1614472 5688520 1614416 5688480 -1614768 5689040 1614768 5689000 1614472 5688520 1614072 5688456 -1614072 5688456 1613504 5689056 1614768 5689040 1614472 5688520 -1614392 5688480 1614136 5688440 1614072 5688456 1614472 5688520 -1614416 5688480 1614392 5688480 1614472 5688520 1613640 5687040 -1614768 5689000 1614848 5688968 1614472 5688520 1614768 5689040 -1614072 5688456 1614472 5688576 1614472 5688520 1614392 5688480 -1614472 5688576 1614768 5689040 1614472 5688520 1614392 5688480 -1614472 5688520 1614416 5688480 1614392 5688480 1614472 5688576 -1614472 5688520 1614416 5688480 1614472 5688576 1614768 5689040 -1614072 5688456 1614768 5689040 1614472 5688576 1614392 5688480 -1614392 5688480 1614072 5688456 1614472 5688576 1614416 5688480 -1614472 5688520 1614472 5688576 1614768 5689040 1614768 5689000 -1614472 5688520 1614416 5688480 1614472 5688576 1614768 5689000 -1614472 5688576 1614072 5688456 1614768 5689040 1614768 5689000 -1614768 5689040 1614472 5688576 1614072 5688456 1613504 5689056 -1614768 5689040 1614768 5689000 1614472 5688576 1613504 5689056 -1614472 5688576 1614392 5688480 1614072 5688456 1613504 5689056 -1614768 5689040 1614472 5688576 1613504 5689056 1613480 5689256 -1614072 5688456 1614472 5688576 1614392 5688480 1614136 5688440 -1614072 5688456 1613504 5689056 1614472 5688576 1614136 5688440 -1614392 5688480 1614216 5688432 1614136 5688440 1614472 5688576 -1614392 5688480 1614312 5688440 1614216 5688432 1614472 5688576 -1614472 5688576 1614416 5688480 1614392 5688480 1614216 5688432 -1614136 5688440 1614072 5688456 1614472 5688576 1614216 5688432 -1614072 5688456 1613448 5688912 1613504 5689056 1614472 5688576 -1614472 5688520 1614472 5688576 1614768 5689000 1614848 5688968 -1614472 5688520 1614416 5688480 1614472 5688576 1614848 5688968 -1614472 5688520 1614472 5688576 1614848 5688968 1614904 5688968 -1614472 5688520 1614416 5688480 1614472 5688576 1614904 5688968 -1614472 5688520 1614472 5688576 1614904 5688968 1614992 5688968 -1614472 5688576 1614768 5689040 1614768 5689000 1614848 5688968 -1614848 5688968 1614856 5688976 1614904 5688968 1614472 5688576 -1614472 5688576 1614768 5689000 1614848 5688968 1614904 5688968 -1614472 5688576 1614408 5688648 1614768 5689040 1614768 5689000 -1614472 5688576 1613504 5689056 1614408 5688648 1614768 5689000 -1614408 5688648 1613504 5689056 1614768 5689040 1614768 5689000 -1614768 5689040 1614408 5688648 1613504 5689056 1613480 5689256 -1614408 5688648 1614472 5688576 1613504 5689056 1613480 5689256 -1614768 5689040 1614768 5689000 1614408 5688648 1613480 5689256 -1614768 5689040 1614408 5688648 1613480 5689256 1614840 5689152 -1614472 5688576 1614408 5688648 1614768 5689000 1614848 5688968 -1613504 5689056 1614408 5688648 1614472 5688576 1614072 5688456 -1613504 5689056 1613480 5689256 1614408 5688648 1614072 5688456 -1614408 5688648 1614768 5689000 1614472 5688576 1614072 5688456 -1614472 5688576 1614136 5688440 1614072 5688456 1614408 5688648 -1614472 5688576 1614136 5688440 1614408 5688648 1614768 5689000 -1614072 5688456 1613504 5689056 1614408 5688648 1614136 5688440 -1614472 5688576 1614216 5688432 1614136 5688440 1614408 5688648 -1614472 5688576 1614216 5688432 1614408 5688648 1614768 5689000 -1614136 5688440 1614072 5688456 1614408 5688648 1614216 5688432 -1614472 5688576 1614392 5688480 1614216 5688432 1614408 5688648 -1614472 5688576 1614392 5688480 1614408 5688648 1614768 5689000 -1614392 5688480 1614312 5688440 1614216 5688432 1614408 5688648 -1614392 5688480 1614312 5688440 1614408 5688648 1614472 5688576 -1614472 5688576 1614416 5688480 1614392 5688480 1614408 5688648 -1614216 5688432 1614136 5688440 1614408 5688648 1614312 5688440 -1613504 5689056 1614408 5688648 1614072 5688456 1613448 5688912 -1614408 5688648 1614360 5688680 1614768 5689040 1614768 5689000 -1614408 5688648 1613480 5689256 1614360 5688680 1614768 5689000 -1614360 5688680 1613480 5689256 1614768 5689040 1614768 5689000 -1614408 5688648 1614360 5688680 1614768 5689000 1614472 5688576 -1614768 5689040 1614360 5688680 1613480 5689256 1614840 5689152 -1613480 5689256 1614360 5688680 1614408 5688648 1613504 5689056 -1614360 5688680 1614768 5689000 1614408 5688648 1613504 5689056 -1614408 5688648 1614072 5688456 1613504 5689056 1614360 5688680 -1614408 5688648 1614072 5688456 1614360 5688680 1614768 5689000 -1613504 5689056 1613480 5689256 1614360 5688680 1614072 5688456 -1613480 5689256 1614768 5689040 1614360 5688680 1613504 5689056 -1614408 5688648 1614136 5688440 1614072 5688456 1614360 5688680 -1614408 5688648 1614136 5688440 1614360 5688680 1614768 5689000 -1614072 5688456 1613504 5689056 1614360 5688680 1614136 5688440 -1614408 5688648 1614216 5688432 1614136 5688440 1614360 5688680 -1614408 5688648 1614216 5688432 1614360 5688680 1614768 5689000 -1614136 5688440 1614072 5688456 1614360 5688680 1614216 5688432 -1614408 5688648 1614312 5688440 1614216 5688432 1614360 5688680 -1614408 5688648 1614312 5688440 1614360 5688680 1614768 5689000 -1614216 5688432 1614136 5688440 1614360 5688680 1614312 5688440 -1614408 5688648 1614392 5688480 1614312 5688440 1614360 5688680 -1614408 5688648 1614392 5688480 1614360 5688680 1614768 5689000 -1614408 5688648 1614472 5688576 1614392 5688480 1614360 5688680 -1614312 5688440 1614216 5688432 1614360 5688680 1614392 5688480 -1614072 5688456 1613448 5688912 1613504 5689056 1614360 5688680 -1614072 5688456 1614288 5688696 1614360 5688680 1614136 5688440 -1614072 5688456 1613504 5689056 1614288 5688696 1614136 5688440 -1614360 5688680 1614288 5688696 1613504 5689056 1613480 5689256 -1614288 5688696 1613480 5689256 1614360 5688680 1614136 5688440 -1614360 5688680 1614288 5688696 1613480 5689256 1614768 5689040 -1614360 5688680 1614288 5688696 1614768 5689040 1614768 5689000 -1613480 5689256 1614840 5689152 1614768 5689040 1614288 5688696 -1614288 5688696 1613504 5689056 1613480 5689256 1614768 5689040 -1614360 5688680 1614136 5688440 1614288 5688696 1614768 5689040 -1614288 5688696 1614072 5688456 1613504 5689056 1613480 5689256 -1614360 5688680 1614216 5688432 1614136 5688440 1614288 5688696 -1614136 5688440 1614072 5688456 1614288 5688696 1614216 5688432 -1614360 5688680 1614312 5688440 1614216 5688432 1614288 5688696 -1614360 5688680 1614312 5688440 1614288 5688696 1614768 5689040 -1614216 5688432 1614136 5688440 1614288 5688696 1614312 5688440 -1614360 5688680 1614392 5688480 1614312 5688440 1614288 5688696 -1613504 5689056 1614288 5688696 1614072 5688456 1613448 5688912 -1614072 5688456 1614200 5688680 1614288 5688696 1614136 5688440 -1614288 5688696 1614216 5688432 1614136 5688440 1614200 5688680 -1614200 5688680 1613504 5689056 1614288 5688696 1614216 5688432 -1614136 5688440 1614072 5688456 1614200 5688680 1614216 5688432 -1614288 5688696 1614200 5688680 1613504 5689056 1613480 5689256 -1614288 5688696 1614216 5688432 1614200 5688680 1613480 5689256 -1614200 5688680 1614072 5688456 1613504 5689056 1613480 5689256 -1614288 5688696 1614200 5688680 1613480 5689256 1614768 5689040 -1614288 5688696 1614312 5688440 1614216 5688432 1614200 5688680 -1614216 5688432 1614136 5688440 1614200 5688680 1614312 5688440 -1614288 5688696 1614312 5688440 1614200 5688680 1613480 5689256 -1614288 5688696 1614360 5688680 1614312 5688440 1614200 5688680 -1613504 5689056 1614200 5688680 1614072 5688456 1613448 5688912 -1613504 5689056 1613480 5689256 1614200 5688680 1613448 5688912 -1614072 5688456 1613392 5688832 1613448 5688912 1614200 5688680 -1614072 5688456 1613448 5688912 1614200 5688680 1614136 5688440 -1613448 5688912 1614160 5688664 1614072 5688456 1613392 5688832 -1614200 5688680 1614160 5688664 1613448 5688912 1613504 5689056 -1614200 5688680 1614160 5688664 1613504 5689056 1613480 5689256 -1614200 5688680 1614072 5688456 1614160 5688664 1613504 5689056 -1614072 5688456 1614160 5688664 1614200 5688680 1614136 5688440 -1614200 5688680 1614216 5688432 1614136 5688440 1614160 5688664 -1614200 5688680 1614312 5688440 1614216 5688432 1614160 5688664 -1614072 5688456 1613448 5688912 1614160 5688664 1614136 5688440 -1614160 5688664 1613504 5689056 1614200 5688680 1614216 5688432 -1614136 5688440 1614072 5688456 1614160 5688664 1614216 5688432 -1614160 5688664 1614072 5688456 1613448 5688912 1613504 5689056 -1613448 5688912 1614120 5688624 1614072 5688456 1613392 5688832 -1614120 5688624 1614160 5688664 1614072 5688456 1613392 5688832 -1614072 5688456 1613336 5688792 1613392 5688832 1614120 5688624 -1614072 5688456 1614120 5688624 1614160 5688664 1614136 5688440 -1614072 5688456 1613392 5688832 1614120 5688624 1614136 5688440 -1614120 5688624 1613448 5688912 1614160 5688664 1614136 5688440 -1613448 5688912 1614160 5688664 1614120 5688624 1613392 5688832 -1614160 5688664 1614216 5688432 1614136 5688440 1614120 5688624 -1614160 5688664 1614200 5688680 1614216 5688432 1614120 5688624 -1614200 5688680 1614312 5688440 1614216 5688432 1614120 5688624 -1614160 5688664 1614200 5688680 1614120 5688624 1613448 5688912 -1614136 5688440 1614072 5688456 1614120 5688624 1614216 5688432 -1614216 5688432 1614136 5688440 1614120 5688624 1614200 5688680 -1614160 5688664 1614120 5688624 1613448 5688912 1613504 5689056 -1614160 5688664 1614200 5688680 1614120 5688624 1613504 5689056 -1614120 5688624 1613392 5688832 1613448 5688912 1613504 5689056 -1614160 5688664 1614120 5688624 1613504 5689056 1614200 5688680 -1614120 5688624 1614072 5688544 1613392 5688832 1613448 5688912 -1614120 5688624 1614072 5688456 1614072 5688544 1613448 5688912 -1614072 5688456 1614072 5688544 1614120 5688624 1614136 5688440 -1614072 5688544 1613448 5688912 1614120 5688624 1614136 5688440 -1614072 5688544 1614072 5688456 1613392 5688832 1613448 5688912 -1613392 5688832 1614072 5688544 1614072 5688456 1613336 5688792 -1614072 5688456 1613392 5688832 1614072 5688544 1614136 5688440 -1614120 5688624 1614216 5688432 1614136 5688440 1614072 5688544 -1614120 5688624 1614072 5688544 1613448 5688912 1613504 5689056 -1613056 5686432 1612408 5685072 1601560 5681032 1601592 5681064 -1613056 5686432 1657056 5639384 1612408 5685072 1601592 5681064 -1613056 5686432 1612408 5685072 1601592 5681064 1612336 5686456 -1613056 5686432 1657056 5639384 1612408 5685072 1612336 5686456 -1613056 5686432 1612408 5685072 1612336 5686456 1612448 5686536 -1612408 5685072 1601560 5681032 1601592 5681064 1612336 5686456 -1657056 5639384 1612408 5685072 1613056 5686432 1657088 5639464 -1612408 5685072 1612336 5686456 1613056 5686432 1657088 5639464 -1613056 5686432 1613592 5686944 1657088 5639464 1612408 5685072 -1613056 5686432 1613592 5686944 1612408 5685072 1612336 5686456 -1613056 5686432 1613536 5686904 1613592 5686944 1612408 5685072 -1657088 5639464 1657056 5639384 1612408 5685072 1613592 5686944 -1612408 5685072 1657056 5639384 1601560 5681032 1601592 5681064 -1657056 5639384 1601560 5681032 1612408 5685072 1657088 5639464 -1601560 5681032 1612408 5685072 1657056 5639384 1601464 5680984 -1613592 5686944 1663776 5646144 1657088 5639464 1612408 5685072 -1657088 5639464 1657056 5639384 1612408 5685072 1663776 5646144 -1613592 5686944 1615440 5689168 1663776 5646144 1612408 5685072 -1613592 5686944 1615440 5689168 1612408 5685072 1613056 5686432 -1615440 5689168 1663880 5646248 1663776 5646144 1612408 5685072 -1663776 5646144 1663688 5645984 1657088 5639464 1612408 5685072 -1663776 5646144 1657088 5639464 1612408 5685072 1615440 5689168 -1601592 5681064 1612272 5686464 1612336 5686456 1612408 5685072 -1612336 5686456 1613056 5686432 1612408 5685072 1612272 5686464 -1601592 5681064 1612272 5686464 1612408 5685072 1601560 5681032 -1601592 5681064 1601624 5681136 1612272 5686464 1612408 5685072 -1601592 5681064 1601624 5681136 1612408 5685072 1601560 5681032 -1612272 5686464 1612336 5686456 1612408 5685072 1601624 5681136 -1601624 5681136 1612216 5686496 1612272 5686464 1612408 5685072 -1601624 5681136 1612216 5686496 1612408 5685072 1601592 5681064 -1612272 5686464 1612336 5686456 1612408 5685072 1612216 5686496 -1601624 5681136 1611224 5687456 1612216 5686496 1612408 5685072 -1601624 5681136 1601592 5681216 1611224 5687456 1612408 5685072 -1601624 5681136 1601592 5681216 1612408 5685072 1601592 5681064 -1611224 5687456 1611288 5687432 1612216 5686496 1612408 5685072 -1611224 5687456 1612216 5686496 1612408 5685072 1601592 5681216 -1612216 5686496 1612272 5686464 1612408 5685072 1611224 5687456 -1601592 5681216 1601128 5681664 1611224 5687456 1612408 5685072 -1613592 5686944 1613632 5687000 1615440 5689168 1612408 5685072 -1615440 5689168 1612496 5685080 1612408 5685072 1613592 5686944 -1612496 5685080 1663776 5646144 1612408 5685072 1613592 5686944 -1612408 5685072 1613056 5686432 1613592 5686944 1612496 5685080 -1612408 5685072 1613056 5686432 1612496 5685080 1663776 5646144 -1612408 5685072 1612336 5686456 1613056 5686432 1612496 5685080 -1612408 5685072 1612336 5686456 1612496 5685080 1663776 5646144 -1612336 5686456 1612448 5686536 1613056 5686432 1612496 5685080 -1612408 5685072 1612272 5686464 1612336 5686456 1612496 5685080 -1613056 5686432 1613536 5686904 1613592 5686944 1612496 5685080 -1613592 5686944 1615440 5689168 1612496 5685080 1613056 5686432 -1613056 5686432 1613592 5686944 1612496 5685080 1612336 5686456 -1663776 5646144 1612496 5685080 1615440 5689168 1663880 5646248 -1612408 5685072 1612496 5685080 1663776 5646144 1657088 5639464 -1612408 5685072 1612336 5686456 1612496 5685080 1657088 5639464 -1612496 5685080 1615440 5689168 1663776 5646144 1657088 5639464 -1612408 5685072 1612496 5685080 1657088 5639464 1657056 5639384 -1612408 5685072 1612336 5686456 1612496 5685080 1657056 5639384 -1612408 5685072 1612496 5685080 1657056 5639384 1601560 5681032 -1612408 5685072 1612336 5686456 1612496 5685080 1601560 5681032 -1612496 5685080 1657088 5639464 1657056 5639384 1601560 5681032 -1612408 5685072 1612496 5685080 1601560 5681032 1601592 5681064 -1657056 5639384 1601464 5680984 1601560 5681032 1612496 5685080 -1663776 5646144 1663688 5645984 1657088 5639464 1612496 5685080 -1612496 5685080 1663776 5646144 1657088 5639464 1657056 5639384 -1615440 5689168 1663776 5646144 1612496 5685080 1613592 5686944 -1615440 5689168 1612496 5685080 1613592 5686944 1613632 5687000 -1612496 5685080 1613056 5686432 1613592 5686944 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1612496 5685080 -1615440 5689168 1612496 5685080 1613632 5687000 1615392 5689120 -1615440 5689168 1663776 5646144 1612496 5685080 1613632 5687000 -1612496 5685080 1612576 5685128 1663776 5646144 1657088 5639464 -1663776 5646144 1612576 5685128 1615440 5689168 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1612576 5685128 -1612496 5685080 1612576 5685128 1657088 5639464 1657056 5639384 -1612496 5685080 1615440 5689168 1612576 5685128 1657088 5639464 -1615440 5689168 1612576 5685128 1612496 5685080 1613632 5687000 -1615440 5689168 1612576 5685128 1613632 5687000 1615392 5689120 -1613632 5687000 1615352 5689088 1615392 5689120 1612576 5685128 -1615440 5689168 1663776 5646144 1612576 5685128 1615392 5689120 -1612576 5685128 1657088 5639464 1612496 5685080 1613632 5687000 -1612576 5685128 1612496 5685080 1613632 5687000 1615392 5689120 -1612576 5685128 1615440 5689168 1663776 5646144 1657088 5639464 -1612496 5685080 1613592 5686944 1613632 5687000 1612576 5685128 -1612496 5685080 1613056 5686432 1613592 5686944 1612576 5685128 -1613056 5686432 1613536 5686904 1613592 5686944 1612576 5685128 -1613056 5686432 1613536 5686904 1612576 5685128 1612496 5685080 -1613592 5686944 1613600 5686968 1613632 5687000 1612576 5685128 -1612496 5685080 1612336 5686456 1613056 5686432 1612576 5685128 -1612496 5685080 1612408 5685072 1612336 5686456 1612576 5685128 -1612336 5686456 1612448 5686536 1613056 5686432 1612576 5685128 -1612408 5685072 1612272 5686464 1612336 5686456 1612576 5685128 -1613056 5686432 1613536 5686904 1612576 5685128 1612336 5686456 -1612336 5686456 1613056 5686432 1612576 5685128 1612408 5685072 -1613056 5686432 1613488 5686880 1613536 5686904 1612576 5685128 -1612496 5685080 1612408 5685072 1612576 5685128 1657088 5639464 -1613632 5687000 1615392 5689120 1612576 5685128 1613592 5686944 -1613592 5686944 1613632 5687000 1612576 5685128 1613536 5686904 -1663776 5646144 1612616 5685152 1615440 5689168 1663880 5646248 -1615440 5689168 1612616 5685152 1612576 5685128 1615392 5689120 -1615440 5689168 1663776 5646144 1612616 5685152 1615392 5689120 -1612576 5685128 1613632 5687000 1615392 5689120 1612616 5685152 -1613632 5687000 1615352 5689088 1615392 5689120 1612616 5685152 -1612616 5685152 1663776 5646144 1612576 5685128 1613632 5687000 -1615392 5689120 1615440 5689168 1612616 5685152 1613632 5687000 -1612576 5685128 1613592 5686944 1613632 5687000 1612616 5685152 -1613592 5686944 1613600 5686968 1613632 5687000 1612616 5685152 -1613632 5687000 1615392 5689120 1612616 5685152 1613592 5686944 -1612576 5685128 1613592 5686944 1612616 5685152 1663776 5646144 -1612576 5685128 1612616 5685152 1663776 5646144 1657088 5639464 -1612576 5685128 1612616 5685152 1657088 5639464 1612496 5685080 -1612576 5685128 1613592 5686944 1612616 5685152 1657088 5639464 -1612616 5685152 1615440 5689168 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1612616 5685152 -1612576 5685128 1613536 5686904 1613592 5686944 1612616 5685152 -1612576 5685128 1613056 5686432 1613536 5686904 1612616 5685152 -1612576 5685128 1612336 5686456 1613056 5686432 1612616 5685152 -1612336 5686456 1612448 5686536 1613056 5686432 1612616 5685152 -1613056 5686432 1613536 5686904 1612616 5685152 1612336 5686456 -1612576 5685128 1612408 5685072 1612336 5686456 1612616 5685152 -1612576 5685128 1612496 5685080 1612408 5685072 1612616 5685152 -1612408 5685072 1612272 5686464 1612336 5686456 1612616 5685152 -1612336 5686456 1613056 5686432 1612616 5685152 1612408 5685072 -1613056 5686432 1613488 5686880 1613536 5686904 1612616 5685152 -1612576 5685128 1612408 5685072 1612616 5685152 1657088 5639464 -1613592 5686944 1613632 5687000 1612616 5685152 1613536 5686904 -1613536 5686904 1613592 5686944 1612616 5685152 1613056 5686432 -1663776 5646144 1612640 5685184 1615440 5689168 1663880 5646248 -1615440 5689168 1612640 5685184 1612616 5685152 1615392 5689120 -1612640 5685184 1663776 5646144 1612616 5685152 1615392 5689120 -1615440 5689168 1663776 5646144 1612640 5685184 1615392 5689120 -1612616 5685152 1613632 5687000 1615392 5689120 1612640 5685184 -1612616 5685152 1613632 5687000 1612640 5685184 1663776 5646144 -1615392 5689120 1615440 5689168 1612640 5685184 1613632 5687000 -1612616 5685152 1613592 5686944 1613632 5687000 1612640 5685184 -1613592 5686944 1613600 5686968 1613632 5687000 1612640 5685184 -1612616 5685152 1613592 5686944 1612640 5685184 1663776 5646144 -1613632 5687000 1615352 5689088 1615392 5689120 1612640 5685184 -1613632 5687000 1615392 5689120 1612640 5685184 1613592 5686944 -1612616 5685152 1612640 5685184 1663776 5646144 1657088 5639464 -1612616 5685152 1613536 5686904 1613592 5686944 1612640 5685184 -1612616 5685152 1613536 5686904 1612640 5685184 1663776 5646144 -1613592 5686944 1613632 5687000 1612640 5685184 1613536 5686904 -1612616 5685152 1613056 5686432 1613536 5686904 1612640 5685184 -1612616 5685152 1612336 5686456 1613056 5686432 1612640 5685184 -1612336 5686456 1612448 5686536 1613056 5686432 1612640 5685184 -1612616 5685152 1612408 5685072 1612336 5686456 1612640 5685184 -1612408 5685072 1612272 5686464 1612336 5686456 1612640 5685184 -1612336 5686456 1613056 5686432 1612640 5685184 1612408 5685072 -1612616 5685152 1612576 5685128 1612408 5685072 1612640 5685184 -1612576 5685128 1612496 5685080 1612408 5685072 1612640 5685184 -1612408 5685072 1612336 5686456 1612640 5685184 1612576 5685128 -1612616 5685152 1612576 5685128 1612640 5685184 1663776 5646144 -1613056 5686432 1613488 5686880 1613536 5686904 1612640 5685184 -1613536 5686904 1613592 5686944 1612640 5685184 1613056 5686432 -1613056 5686432 1613536 5686904 1612640 5685184 1612336 5686456 -1612336 5686456 1612448 5686536 1613056 5686432 1612656 5685232 -1612640 5685184 1612408 5685072 1612336 5686456 1612656 5685232 -1612408 5685072 1612272 5686464 1612336 5686456 1612656 5685232 -1612408 5685072 1612272 5686464 1612656 5685232 1612640 5685184 -1612640 5685184 1612576 5685128 1612408 5685072 1612656 5685232 -1612576 5685128 1612496 5685080 1612408 5685072 1612656 5685232 -1612408 5685072 1612272 5686464 1612656 5685232 1612576 5685128 -1612640 5685184 1612616 5685152 1612576 5685128 1612656 5685232 -1613056 5686432 1613488 5686880 1613536 5686904 1612656 5685232 -1612336 5686456 1613056 5686432 1612656 5685232 1612272 5686464 -1612640 5685184 1612656 5685232 1613536 5686904 1613592 5686944 -1612640 5685184 1612656 5685232 1613592 5686944 1613632 5687000 -1612656 5685232 1613056 5686432 1613536 5686904 1613592 5686944 -1612408 5685072 1612216 5686496 1612272 5686464 1612656 5685232 -1612640 5685184 1612576 5685128 1612656 5685232 1613592 5686944 -1613056 5686432 1612664 5685288 1612336 5686456 1612448 5686536 -1612656 5685232 1612664 5685288 1613056 5686432 1613536 5686904 -1613056 5686432 1613488 5686880 1613536 5686904 1612664 5685288 -1612656 5685232 1612336 5686456 1612664 5685288 1613536 5686904 -1612664 5685288 1612336 5686456 1613056 5686432 1613536 5686904 -1612336 5686456 1612664 5685288 1612656 5685232 1612272 5686464 -1612656 5685232 1612408 5685072 1612272 5686464 1612664 5685288 -1612656 5685232 1612576 5685128 1612408 5685072 1612664 5685288 -1612576 5685128 1612496 5685080 1612408 5685072 1612664 5685288 -1612408 5685072 1612272 5686464 1612664 5685288 1612576 5685128 -1612656 5685232 1612640 5685184 1612576 5685128 1612664 5685288 -1612336 5686456 1613056 5686432 1612664 5685288 1612272 5686464 -1612664 5685288 1613536 5686904 1612656 5685232 1612576 5685128 -1612272 5686464 1612336 5686456 1612664 5685288 1612408 5685072 -1612656 5685232 1612664 5685288 1613536 5686904 1613592 5686944 -1612664 5685288 1613056 5686432 1613536 5686904 1613592 5686944 -1612656 5685232 1612576 5685128 1612664 5685288 1613592 5686944 -1612656 5685232 1612664 5685288 1613592 5686944 1612640 5685184 -1612408 5685072 1612216 5686496 1612272 5686464 1612664 5685288 -1613056 5686432 1612656 5685384 1612336 5686456 1612448 5686536 -1612336 5686456 1612656 5685384 1612664 5685288 1612272 5686464 -1612336 5686456 1613056 5686432 1612656 5685384 1612272 5686464 -1612656 5685384 1613056 5686432 1612664 5685288 1612272 5686464 -1612664 5685288 1612656 5685384 1613056 5686432 1613536 5686904 -1612664 5685288 1612408 5685072 1612272 5686464 1612656 5685384 -1612664 5685288 1612576 5685128 1612408 5685072 1612656 5685384 -1612576 5685128 1612496 5685080 1612408 5685072 1612656 5685384 -1612664 5685288 1612656 5685232 1612576 5685128 1612656 5685384 -1612664 5685288 1612576 5685128 1612656 5685384 1613056 5686432 -1612272 5686464 1612336 5686456 1612656 5685384 1612408 5685072 -1612408 5685072 1612272 5686464 1612656 5685384 1612576 5685128 -1612408 5685072 1612216 5686496 1612272 5686464 1612656 5685384 -1613056 5686432 1612664 5685488 1612336 5686456 1612448 5686536 -1612336 5686456 1612664 5685488 1612656 5685384 1612272 5686464 -1612664 5685488 1613056 5686432 1612656 5685384 1612272 5686464 -1612656 5685384 1612408 5685072 1612272 5686464 1612664 5685488 -1612656 5685384 1612408 5685072 1612664 5685488 1613056 5686432 -1612272 5686464 1612336 5686456 1612664 5685488 1612408 5685072 -1612656 5685384 1612664 5685488 1613056 5686432 1612664 5685288 -1612656 5685384 1612408 5685072 1612664 5685488 1612664 5685288 -1612664 5685488 1612336 5686456 1613056 5686432 1612664 5685288 -1613056 5686432 1613536 5686904 1612664 5685288 1612664 5685488 -1612336 5686456 1613056 5686432 1612664 5685488 1612272 5686464 -1612656 5685384 1612576 5685128 1612408 5685072 1612664 5685488 -1612408 5685072 1612216 5686496 1612272 5686464 1612664 5685488 -1613056 5686432 1612648 5685552 1612336 5686456 1612448 5686536 -1612664 5685488 1612648 5685552 1613056 5686432 1612664 5685288 -1612336 5686456 1612648 5685552 1612664 5685488 1612272 5686464 -1612664 5685488 1612408 5685072 1612272 5686464 1612648 5685552 -1612664 5685488 1612656 5685384 1612408 5685072 1612648 5685552 -1612408 5685072 1612272 5686464 1612648 5685552 1612656 5685384 -1612648 5685552 1613056 5686432 1612664 5685488 1612656 5685384 -1612272 5686464 1612336 5686456 1612648 5685552 1612408 5685072 -1612656 5685384 1612576 5685128 1612408 5685072 1612648 5685552 -1612336 5686456 1613056 5686432 1612648 5685552 1612272 5686464 -1612408 5685072 1612216 5686496 1612272 5686464 1612648 5685552 -1612408 5685072 1612216 5686496 1612648 5685552 1612656 5685384 -1612272 5686464 1612336 5686456 1612648 5685552 1612216 5686496 -1612408 5685072 1611224 5687456 1612216 5686496 1612648 5685552 -1612408 5685072 1612552 5685552 1612648 5685552 1612656 5685384 -1612408 5685072 1612216 5686496 1612552 5685552 1612656 5685384 -1612648 5685552 1612664 5685488 1612656 5685384 1612552 5685552 -1612656 5685384 1612408 5685072 1612552 5685552 1612664 5685488 -1612408 5685072 1612552 5685552 1612656 5685384 1612576 5685128 -1612552 5685552 1612216 5686496 1612648 5685552 1612664 5685488 -1612648 5685552 1612552 5685552 1612216 5686496 1612272 5686464 -1612648 5685552 1612552 5685552 1612272 5686464 1612336 5686456 -1612648 5685552 1612664 5685488 1612552 5685552 1612336 5686456 -1612648 5685552 1612552 5685552 1612336 5686456 1613056 5686432 -1612552 5685552 1612408 5685072 1612216 5686496 1612272 5686464 -1612552 5685552 1612216 5686496 1612272 5686464 1612336 5686456 -1612216 5686496 1612552 5685552 1612408 5685072 1611224 5687456 -1612408 5685072 1612480 5685480 1612552 5685552 1612656 5685384 -1612552 5685552 1612664 5685488 1612656 5685384 1612480 5685480 -1612480 5685480 1612216 5686496 1612552 5685552 1612664 5685488 -1612656 5685384 1612408 5685072 1612480 5685480 1612664 5685488 -1612408 5685072 1612216 5686496 1612480 5685480 1612656 5685384 -1612552 5685552 1612648 5685552 1612664 5685488 1612480 5685480 -1612408 5685072 1612480 5685480 1612656 5685384 1612576 5685128 -1612408 5685072 1612480 5685480 1612576 5685128 1612496 5685080 -1612656 5685384 1612664 5685288 1612576 5685128 1612480 5685480 -1612664 5685288 1612656 5685232 1612576 5685128 1612480 5685480 -1612480 5685480 1612664 5685488 1612656 5685384 1612664 5685288 -1612408 5685072 1612216 5686496 1612480 5685480 1612576 5685128 -1612576 5685128 1612408 5685072 1612480 5685480 1612664 5685288 -1612552 5685552 1612480 5685480 1612216 5686496 1612272 5686464 -1612552 5685552 1612664 5685488 1612480 5685480 1612272 5686464 -1612480 5685480 1612408 5685072 1612216 5686496 1612272 5686464 -1612552 5685552 1612480 5685480 1612272 5686464 1612336 5686456 -1612216 5686496 1612480 5685480 1612408 5685072 1611224 5687456 -1612480 5685480 1612464 5685456 1612216 5686496 1612272 5686464 -1612408 5685072 1612464 5685456 1612480 5685480 1612576 5685128 -1612408 5685072 1612464 5685456 1612576 5685128 1612496 5685080 -1612464 5685456 1612216 5686496 1612480 5685480 1612576 5685128 -1612464 5685456 1612480 5685480 1612576 5685128 1612496 5685080 -1612480 5685480 1612664 5685288 1612576 5685128 1612464 5685456 -1612480 5685480 1612656 5685384 1612664 5685288 1612464 5685456 -1612664 5685288 1612656 5685232 1612576 5685128 1612464 5685456 -1612656 5685232 1612640 5685184 1612576 5685128 1612464 5685456 -1612480 5685480 1612664 5685488 1612656 5685384 1612464 5685456 -1612480 5685480 1612656 5685384 1612464 5685456 1612216 5686496 -1612576 5685128 1612496 5685080 1612464 5685456 1612656 5685232 -1612664 5685288 1612656 5685232 1612464 5685456 1612656 5685384 -1612216 5686496 1612464 5685456 1612408 5685072 1611224 5687456 -1612408 5685072 1612216 5686496 1612464 5685456 1612496 5685080 -1612464 5685456 1612448 5685352 1612216 5686496 1612480 5685480 -1612216 5686496 1612448 5685352 1612408 5685072 1611224 5687456 -1612408 5685072 1612448 5685352 1612464 5685456 1612496 5685080 -1612464 5685456 1612576 5685128 1612496 5685080 1612448 5685352 -1612464 5685456 1612656 5685232 1612576 5685128 1612448 5685352 -1612576 5685128 1612496 5685080 1612448 5685352 1612656 5685232 -1612464 5685456 1612664 5685288 1612656 5685232 1612448 5685352 -1612656 5685232 1612640 5685184 1612576 5685128 1612448 5685352 -1612656 5685232 1612576 5685128 1612448 5685352 1612664 5685288 -1612464 5685456 1612656 5685384 1612664 5685288 1612448 5685352 -1612464 5685456 1612480 5685480 1612656 5685384 1612448 5685352 -1612664 5685288 1612656 5685232 1612448 5685352 1612656 5685384 -1612408 5685072 1612216 5686496 1612448 5685352 1612496 5685080 -1612448 5685352 1612216 5686496 1612464 5685456 1612656 5685384 -1612496 5685080 1612408 5685072 1612448 5685352 1612576 5685128 -1612448 5685352 1612448 5685304 1612408 5685072 1612216 5686496 -1612496 5685080 1612448 5685304 1612448 5685352 1612576 5685128 -1612448 5685352 1612656 5685232 1612576 5685128 1612448 5685304 -1612656 5685232 1612640 5685184 1612576 5685128 1612448 5685304 -1612656 5685232 1612640 5685184 1612448 5685304 1612448 5685352 -1612640 5685184 1612616 5685152 1612576 5685128 1612448 5685304 -1612448 5685352 1612664 5685288 1612656 5685232 1612448 5685304 -1612656 5685232 1612640 5685184 1612448 5685304 1612664 5685288 -1612448 5685352 1612656 5685384 1612664 5685288 1612448 5685304 -1612664 5685288 1612656 5685232 1612448 5685304 1612656 5685384 -1612448 5685352 1612464 5685456 1612656 5685384 1612448 5685304 -1612448 5685304 1612408 5685072 1612448 5685352 1612656 5685384 -1612496 5685080 1612408 5685072 1612448 5685304 1612576 5685128 -1612576 5685128 1612496 5685080 1612448 5685304 1612640 5685184 -1612216 5686496 1612432 5685256 1612408 5685072 1611224 5687456 -1612216 5686496 1612432 5685256 1611224 5687456 1611288 5687432 -1612408 5685072 1601592 5681216 1611224 5687456 1612432 5685256 -1612432 5685256 1612448 5685352 1612408 5685072 1611224 5687456 -1612408 5685072 1612432 5685256 1612448 5685352 1612448 5685304 -1612408 5685072 1611224 5687456 1612432 5685256 1612448 5685304 -1612408 5685072 1612432 5685256 1612448 5685304 1612496 5685080 -1612408 5685072 1611224 5687456 1612432 5685256 1612496 5685080 -1612432 5685256 1612448 5685352 1612448 5685304 1612496 5685080 -1612432 5685256 1612216 5686496 1612448 5685352 1612448 5685304 -1612448 5685304 1612576 5685128 1612496 5685080 1612432 5685256 -1612496 5685080 1612408 5685072 1612432 5685256 1612576 5685128 -1612448 5685304 1612576 5685128 1612432 5685256 1612448 5685352 -1612216 5686496 1612448 5685352 1612432 5685256 1611224 5687456 -1612448 5685304 1612640 5685184 1612576 5685128 1612432 5685256 -1612448 5685304 1612656 5685232 1612640 5685184 1612432 5685256 -1612448 5685304 1612664 5685288 1612656 5685232 1612432 5685256 -1612640 5685184 1612616 5685152 1612576 5685128 1612432 5685256 -1612448 5685304 1612656 5685232 1612432 5685256 1612448 5685352 -1612576 5685128 1612496 5685080 1612432 5685256 1612616 5685152 -1612640 5685184 1612616 5685152 1612432 5685256 1612656 5685232 -1612448 5685352 1612432 5685256 1612216 5686496 1612464 5685456 -1611224 5687456 1612392 5685168 1612408 5685072 1601592 5681216 -1612432 5685256 1612392 5685168 1611224 5687456 1612216 5686496 -1612392 5685168 1612408 5685072 1611224 5687456 1612216 5686496 -1611224 5687456 1611288 5687432 1612216 5686496 1612392 5685168 -1612408 5685072 1612392 5685168 1612432 5685256 1612496 5685080 -1612408 5685072 1611224 5687456 1612392 5685168 1612496 5685080 -1612432 5685256 1612576 5685128 1612496 5685080 1612392 5685168 -1612432 5685256 1612496 5685080 1612392 5685168 1612216 5686496 -1612432 5685256 1612392 5685168 1612216 5686496 1612448 5685352 -1612392 5685168 1611224 5687456 1612216 5686496 1612448 5685352 -1612432 5685256 1612496 5685080 1612392 5685168 1612448 5685352 -1612432 5685256 1612392 5685168 1612448 5685352 1612448 5685304 -1612216 5686496 1612464 5685456 1612448 5685352 1612392 5685168 -1612216 5686496 1612480 5685480 1612464 5685456 1612392 5685168 -1612448 5685352 1612432 5685256 1612392 5685168 1612464 5685456 -1612216 5686496 1612464 5685456 1612392 5685168 1611224 5687456 -1612392 5685168 1612384 5685136 1611224 5687456 1612216 5686496 -1612392 5685168 1612408 5685072 1612384 5685136 1612216 5686496 -1612384 5685136 1612408 5685072 1611224 5687456 1612216 5686496 -1612408 5685072 1612384 5685136 1612392 5685168 1612496 5685080 -1612384 5685136 1612216 5686496 1612392 5685168 1612496 5685080 -1612408 5685072 1611224 5687456 1612384 5685136 1612496 5685080 -1611224 5687456 1611288 5687432 1612216 5686496 1612384 5685136 -1611224 5687456 1612384 5685136 1612408 5685072 1601592 5681216 -1612408 5685072 1601624 5681136 1601592 5681216 1612384 5685136 -1611224 5687456 1612216 5686496 1612384 5685136 1601592 5681216 -1612384 5685136 1612496 5685080 1612408 5685072 1601624 5681136 -1612408 5685072 1601592 5681064 1601624 5681136 1612384 5685136 -1601592 5681216 1611224 5687456 1612384 5685136 1601624 5681136 -1612392 5685168 1612384 5685136 1612216 5686496 1612464 5685456 -1612392 5685168 1612432 5685256 1612496 5685080 1612384 5685136 -1611224 5687456 1612384 5685136 1601592 5681216 1601128 5681664 -1612384 5685136 1612376 5685128 1601624 5681136 1601592 5681216 -1612408 5685072 1612376 5685128 1612384 5685136 1612496 5685080 -1612384 5685136 1612408 5685072 1612376 5685128 1601592 5681216 -1612376 5685128 1612408 5685072 1601624 5681136 1601592 5681216 -1601624 5681136 1612376 5685128 1612408 5685072 1601592 5681064 -1612384 5685136 1612376 5685128 1601592 5681216 1611224 5687456 -1612376 5685128 1601624 5681136 1601592 5681216 1611224 5687456 -1612384 5685136 1612376 5685128 1611224 5687456 1612216 5686496 -1612384 5685136 1612408 5685072 1612376 5685128 1612216 5686496 -1612384 5685136 1612376 5685128 1612216 5686496 1612392 5685168 -1612384 5685136 1612408 5685072 1612376 5685128 1612392 5685168 -1612376 5685128 1611224 5687456 1612216 5686496 1612392 5685168 -1611224 5687456 1611288 5687432 1612216 5686496 1612376 5685128 -1612376 5685128 1601592 5681216 1611224 5687456 1612216 5686496 -1612216 5686496 1612464 5685456 1612392 5685168 1612376 5685128 -1612216 5686496 1612480 5685480 1612464 5685456 1612376 5685128 -1612464 5685456 1612448 5685352 1612392 5685168 1612376 5685128 -1612216 5686496 1612464 5685456 1612376 5685128 1611224 5687456 -1612392 5685168 1612384 5685136 1612376 5685128 1612464 5685456 -1601592 5681216 1601128 5681664 1611224 5687456 1612376 5685128 -1657056 5639384 1610432 5683584 1612496 5685080 1657088 5639464 -1657056 5639384 1601560 5681032 1610432 5683584 1657088 5639464 -1610432 5683584 1601560 5681032 1612496 5685080 1657088 5639464 -1612496 5685080 1610432 5683584 1601560 5681032 1612408 5685072 -1610432 5683584 1657056 5639384 1601560 5681032 1612408 5685072 -1612496 5685080 1657088 5639464 1610432 5683584 1612408 5685072 -1601560 5681032 1601592 5681064 1612408 5685072 1610432 5683584 -1601592 5681064 1601624 5681136 1612408 5685072 1610432 5683584 -1601560 5681032 1601592 5681064 1610432 5683584 1657056 5639384 -1601592 5681064 1601624 5681136 1610432 5683584 1601560 5681032 -1612408 5685072 1612496 5685080 1610432 5683584 1601624 5681136 -1601560 5681032 1610432 5683584 1657056 5639384 1601464 5680984 -1601560 5681032 1601592 5681064 1610432 5683584 1601464 5680984 -1610432 5683584 1657088 5639464 1657056 5639384 1601464 5680984 -1657056 5639384 1599875 5599875 1601464 5680984 1610432 5683584 -1612496 5685080 1612576 5685128 1657088 5639464 1610432 5683584 -1612576 5685128 1612616 5685152 1657088 5639464 1610432 5683584 -1657088 5639464 1657056 5639384 1610432 5683584 1612616 5685152 -1612496 5685080 1612576 5685128 1610432 5683584 1612408 5685072 -1612576 5685128 1612616 5685152 1610432 5683584 1612496 5685080 -1612616 5685152 1663776 5646144 1657088 5639464 1610432 5683584 -1601624 5681136 1612376 5685128 1612408 5685072 1610432 5683584 -1601624 5681136 1612376 5685128 1610432 5683584 1601592 5681064 -1612408 5685072 1612496 5685080 1610432 5683584 1612376 5685128 -1601624 5681136 1601592 5681216 1612376 5685128 1610432 5683584 -1601624 5681136 1601592 5681216 1610432 5683584 1601592 5681064 -1601592 5681216 1611224 5687456 1612376 5685128 1610432 5683584 -1601592 5681216 1611224 5687456 1610432 5683584 1601624 5681136 -1612376 5685128 1612408 5685072 1610432 5683584 1611224 5687456 -1611224 5687456 1612216 5686496 1612376 5685128 1610432 5683584 -1611224 5687456 1612216 5686496 1610432 5683584 1601592 5681216 -1612216 5686496 1612464 5685456 1612376 5685128 1610432 5683584 -1612376 5685128 1612408 5685072 1610432 5683584 1612216 5686496 -1611224 5687456 1611288 5687432 1612216 5686496 1610432 5683584 -1601592 5681216 1601128 5681664 1611224 5687456 1610432 5683584 -1601128 5681664 1601088 5681704 1611224 5687456 1610432 5683584 -1601088 5681704 1611264 5689408 1611224 5687456 1610432 5683584 -1611224 5687456 1612216 5686496 1610432 5683584 1601088 5681704 -1601592 5681216 1601160 5681616 1601128 5681664 1610432 5683584 -1601592 5681216 1601128 5681664 1610432 5683584 1601624 5681136 -1601128 5681664 1601088 5681704 1610432 5683584 1601592 5681216 -1612616 5685152 1610520 5683528 1610432 5683584 1612576 5685128 -1610432 5683584 1610520 5683528 1657088 5639464 1657056 5639384 -1610432 5683584 1610520 5683528 1657056 5639384 1601464 5680984 -1610520 5683528 1657088 5639464 1657056 5639384 1601464 5680984 -1657056 5639384 1599875 5599875 1601464 5680984 1610520 5683528 -1610520 5683528 1601464 5680984 1610432 5683584 1612576 5685128 -1610520 5683528 1612616 5685152 1657088 5639464 1657056 5639384 -1612616 5685152 1657088 5639464 1610520 5683528 1612576 5685128 -1610432 5683584 1610520 5683528 1601464 5680984 1601560 5681032 -1610432 5683584 1610520 5683528 1601560 5681032 1601592 5681064 -1610520 5683528 1657056 5639384 1601464 5680984 1601560 5681032 -1610432 5683584 1612576 5685128 1610520 5683528 1601592 5681064 -1610432 5683584 1610520 5683528 1601592 5681064 1601624 5681136 -1610520 5683528 1601464 5680984 1601560 5681032 1601592 5681064 -1610432 5683584 1612496 5685080 1612576 5685128 1610520 5683528 -1612576 5685128 1612616 5685152 1610520 5683528 1612496 5685080 -1610432 5683584 1612408 5685072 1612496 5685080 1610520 5683528 -1610432 5683584 1612408 5685072 1610520 5683528 1601592 5681064 -1610432 5683584 1612376 5685128 1612408 5685072 1610520 5683528 -1612408 5685072 1612496 5685080 1610520 5683528 1612376 5685128 -1610432 5683584 1612376 5685128 1610520 5683528 1601592 5681064 -1612496 5685080 1612576 5685128 1610520 5683528 1612408 5685072 -1657088 5639464 1610520 5683528 1612616 5685152 1663776 5646144 -1610432 5683584 1612216 5686496 1612376 5685128 1610520 5683528 -1610520 5683528 1610616 5683496 1657088 5639464 1657056 5639384 -1610520 5683528 1610616 5683496 1657056 5639384 1601464 5680984 -1610520 5683528 1610616 5683496 1601464 5680984 1601560 5681032 -1610616 5683496 1657056 5639384 1601464 5680984 1601560 5681032 -1610616 5683496 1657088 5639464 1657056 5639384 1601464 5680984 -1657056 5639384 1599875 5599875 1601464 5680984 1610616 5683496 -1610520 5683528 1612616 5685152 1610616 5683496 1601560 5681032 -1612616 5685152 1610616 5683496 1610520 5683528 1612576 5685128 -1610520 5683528 1612496 5685080 1612576 5685128 1610616 5683496 -1612616 5685152 1657088 5639464 1610616 5683496 1612576 5685128 -1610616 5683496 1601560 5681032 1610520 5683528 1612496 5685080 -1612576 5685128 1612616 5685152 1610616 5683496 1612496 5685080 -1610616 5683496 1612616 5685152 1657088 5639464 1657056 5639384 -1610520 5683528 1610616 5683496 1601560 5681032 1601592 5681064 -1610520 5683528 1610616 5683496 1601592 5681064 1610432 5683584 -1610616 5683496 1601464 5680984 1601560 5681032 1601592 5681064 -1610520 5683528 1612496 5685080 1610616 5683496 1601592 5681064 -1610520 5683528 1612408 5685072 1612496 5685080 1610616 5683496 -1612496 5685080 1612576 5685128 1610616 5683496 1612408 5685072 -1610520 5683528 1612376 5685128 1612408 5685072 1610616 5683496 -1610520 5683528 1610432 5683584 1612376 5685128 1610616 5683496 -1612376 5685128 1612408 5685072 1610616 5683496 1610432 5683584 -1610520 5683528 1610432 5683584 1610616 5683496 1601592 5681064 -1612408 5685072 1612496 5685080 1610616 5683496 1612376 5685128 -1657088 5639464 1610616 5683496 1612616 5685152 1663776 5646144 -1610432 5683584 1612216 5686496 1612376 5685128 1610616 5683496 -1612616 5685152 1610648 5683504 1610616 5683496 1612576 5685128 -1610648 5683504 1657088 5639464 1610616 5683496 1612576 5685128 -1610616 5683496 1612496 5685080 1612576 5685128 1610648 5683504 -1610616 5683496 1612408 5685072 1612496 5685080 1610648 5683504 -1612576 5685128 1612616 5685152 1610648 5683504 1612496 5685080 -1610616 5683496 1612408 5685072 1610648 5683504 1657088 5639464 -1612496 5685080 1612576 5685128 1610648 5683504 1612408 5685072 -1610616 5683496 1610648 5683504 1657088 5639464 1657056 5639384 -1610616 5683496 1610648 5683504 1657056 5639384 1601464 5680984 -1610616 5683496 1612408 5685072 1610648 5683504 1657056 5639384 -1610616 5683496 1612376 5685128 1612408 5685072 1610648 5683504 -1612408 5685072 1612496 5685080 1610648 5683504 1612376 5685128 -1610616 5683496 1612376 5685128 1610648 5683504 1657056 5639384 -1610616 5683496 1610432 5683584 1612376 5685128 1610648 5683504 -1610616 5683496 1610432 5683584 1610648 5683504 1657056 5639384 -1610616 5683496 1610520 5683528 1610432 5683584 1610648 5683504 -1610616 5683496 1610520 5683528 1610648 5683504 1657056 5639384 -1610432 5683584 1612376 5685128 1610648 5683504 1610520 5683528 -1612376 5685128 1612408 5685072 1610648 5683504 1610432 5683584 -1657088 5639464 1610648 5683504 1612616 5685152 1663776 5646144 -1610432 5683584 1612216 5686496 1612376 5685128 1610648 5683504 -1610648 5683504 1612616 5685152 1657088 5639464 1657056 5639384 -1612616 5685152 1657088 5639464 1610648 5683504 1612576 5685128 -1657088 5639464 1610736 5683552 1612616 5685152 1663776 5646144 -1610648 5683504 1610736 5683552 1657088 5639464 1657056 5639384 -1612616 5685152 1610736 5683552 1610648 5683504 1612576 5685128 -1610648 5683504 1612496 5685080 1612576 5685128 1610736 5683552 -1610648 5683504 1612408 5685072 1612496 5685080 1610736 5683552 -1610648 5683504 1612376 5685128 1612408 5685072 1610736 5683552 -1612496 5685080 1612576 5685128 1610736 5683552 1612408 5685072 -1612408 5685072 1612496 5685080 1610736 5683552 1612376 5685128 -1610648 5683504 1610432 5683584 1612376 5685128 1610736 5683552 -1612376 5685128 1612408 5685072 1610736 5683552 1610432 5683584 -1610648 5683504 1610520 5683528 1610432 5683584 1610736 5683552 -1610648 5683504 1610616 5683496 1610520 5683528 1610736 5683552 -1610432 5683584 1612376 5685128 1610736 5683552 1610520 5683528 -1610432 5683584 1612216 5686496 1612376 5685128 1610736 5683552 -1610736 5683552 1657088 5639464 1610648 5683504 1610520 5683528 -1612576 5685128 1612616 5685152 1610736 5683552 1612496 5685080 -1612616 5685152 1657088 5639464 1610736 5683552 1612576 5685128 -1657088 5639464 1610824 5683608 1612616 5685152 1663776 5646144 -1610736 5683552 1610824 5683608 1657088 5639464 1610648 5683504 -1612616 5685152 1610824 5683608 1610736 5683552 1612576 5685128 -1612616 5685152 1657088 5639464 1610824 5683608 1612576 5685128 -1610824 5683608 1657088 5639464 1610736 5683552 1612576 5685128 -1610736 5683552 1612496 5685080 1612576 5685128 1610824 5683608 -1612576 5685128 1612616 5685152 1610824 5683608 1612496 5685080 -1610736 5683552 1612408 5685072 1612496 5685080 1610824 5683608 -1610736 5683552 1612408 5685072 1610824 5683608 1657088 5639464 -1610736 5683552 1612376 5685128 1612408 5685072 1610824 5683608 -1610736 5683552 1610432 5683584 1612376 5685128 1610824 5683608 -1612408 5685072 1612496 5685080 1610824 5683608 1612376 5685128 -1610736 5683552 1610432 5683584 1610824 5683608 1657088 5639464 -1612376 5685128 1612408 5685072 1610824 5683608 1610432 5683584 -1610736 5683552 1610520 5683528 1610432 5683584 1610824 5683608 -1610432 5683584 1612216 5686496 1612376 5685128 1610824 5683608 -1612496 5685080 1612576 5685128 1610824 5683608 1612408 5685072 -1612616 5685152 1610912 5683672 1610824 5683608 1612576 5685128 -1610824 5683608 1612496 5685080 1612576 5685128 1610912 5683672 -1612576 5685128 1612616 5685152 1610912 5683672 1612496 5685080 -1610912 5683672 1657088 5639464 1610824 5683608 1612496 5685080 -1610824 5683608 1610912 5683672 1657088 5639464 1610736 5683552 -1612616 5685152 1657088 5639464 1610912 5683672 1612576 5685128 -1657088 5639464 1610912 5683672 1612616 5685152 1663776 5646144 -1610824 5683608 1612408 5685072 1612496 5685080 1610912 5683672 -1612496 5685080 1612576 5685128 1610912 5683672 1612408 5685072 -1610824 5683608 1612408 5685072 1610912 5683672 1657088 5639464 -1610824 5683608 1612376 5685128 1612408 5685072 1610912 5683672 -1610824 5683608 1612376 5685128 1610912 5683672 1657088 5639464 -1610824 5683608 1610432 5683584 1612376 5685128 1610912 5683672 -1610824 5683608 1610736 5683552 1610432 5683584 1610912 5683672 -1610824 5683608 1610432 5683584 1610912 5683672 1657088 5639464 -1612376 5685128 1612408 5685072 1610912 5683672 1610432 5683584 -1610432 5683584 1612216 5686496 1612376 5685128 1610912 5683672 -1612376 5685128 1612408 5685072 1610912 5683672 1612216 5686496 -1612216 5686496 1612464 5685456 1612376 5685128 1610912 5683672 -1610432 5683584 1612216 5686496 1610912 5683672 1610824 5683608 -1610432 5683584 1611224 5687456 1612216 5686496 1610912 5683672 -1610432 5683584 1601088 5681704 1611224 5687456 1610912 5683672 -1610432 5683584 1611224 5687456 1610912 5683672 1610824 5683608 -1612216 5686496 1612376 5685128 1610912 5683672 1611224 5687456 -1611224 5687456 1611288 5687432 1612216 5686496 1610912 5683672 -1612408 5685072 1612496 5685080 1610912 5683672 1612376 5685128 -1610912 5683672 1610944 5683704 1612376 5685128 1612408 5685072 -1610944 5683704 1612216 5686496 1612376 5685128 1612408 5685072 -1612376 5685128 1610944 5683704 1612216 5686496 1612464 5685456 -1610912 5683672 1612216 5686496 1610944 5683704 1612408 5685072 -1612216 5686496 1610944 5683704 1610912 5683672 1611224 5687456 -1612216 5686496 1612376 5685128 1610944 5683704 1611224 5687456 -1610944 5683704 1612408 5685072 1610912 5683672 1611224 5687456 -1612216 5686496 1610944 5683704 1611224 5687456 1611288 5687432 -1610912 5683672 1610432 5683584 1611224 5687456 1610944 5683704 -1610432 5683584 1601088 5681704 1611224 5687456 1610944 5683704 -1610912 5683672 1610824 5683608 1610432 5683584 1610944 5683704 -1610912 5683672 1610432 5683584 1610944 5683704 1612408 5685072 -1611224 5687456 1612216 5686496 1610944 5683704 1610432 5683584 -1610912 5683672 1610944 5683704 1612408 5685072 1612496 5685080 -1610912 5683672 1610944 5683704 1612496 5685080 1612576 5685128 -1610912 5683672 1610944 5683704 1612576 5685128 1612616 5685152 -1610944 5683704 1612496 5685080 1612576 5685128 1612616 5685152 -1610944 5683704 1612376 5685128 1612408 5685072 1612496 5685080 -1610912 5683672 1610432 5683584 1610944 5683704 1612616 5685152 -1610912 5683672 1610944 5683704 1612616 5685152 1657088 5639464 -1610944 5683704 1612408 5685072 1612496 5685080 1612576 5685128 -1612616 5685152 1610992 5683744 1610944 5683704 1612576 5685128 -1612616 5685152 1610912 5683672 1610992 5683744 1612576 5685128 -1610944 5683704 1612496 5685080 1612576 5685128 1610992 5683744 -1612576 5685128 1612616 5685152 1610992 5683744 1612496 5685080 -1610992 5683744 1610912 5683672 1610944 5683704 1612496 5685080 -1610912 5683672 1610992 5683744 1612616 5685152 1657088 5639464 -1610912 5683672 1610944 5683704 1610992 5683744 1657088 5639464 -1610992 5683744 1612576 5685128 1612616 5685152 1657088 5639464 -1610912 5683672 1610992 5683744 1657088 5639464 1610824 5683608 -1612616 5685152 1663776 5646144 1657088 5639464 1610992 5683744 -1610944 5683704 1612408 5685072 1612496 5685080 1610992 5683744 -1612496 5685080 1612576 5685128 1610992 5683744 1612408 5685072 -1610944 5683704 1612376 5685128 1612408 5685072 1610992 5683744 -1610944 5683704 1612216 5686496 1612376 5685128 1610992 5683744 -1612376 5685128 1612408 5685072 1610992 5683744 1612216 5686496 -1610944 5683704 1612216 5686496 1610992 5683744 1610912 5683672 -1610944 5683704 1611224 5687456 1612216 5686496 1610992 5683744 -1612216 5686496 1612376 5685128 1610992 5683744 1611224 5687456 -1610944 5683704 1611224 5687456 1610992 5683744 1610912 5683672 -1612216 5686496 1612464 5685456 1612376 5685128 1610992 5683744 -1610944 5683704 1610432 5683584 1611224 5687456 1610992 5683744 -1611224 5687456 1612216 5686496 1610992 5683744 1610432 5683584 -1610944 5683704 1610432 5683584 1610992 5683744 1610912 5683672 -1610432 5683584 1601088 5681704 1611224 5687456 1610992 5683744 -1611224 5687456 1611288 5687432 1612216 5686496 1610992 5683744 -1610944 5683704 1610912 5683672 1610432 5683584 1610992 5683744 -1612408 5685072 1612496 5685080 1610992 5683744 1612376 5685128 -1610992 5683744 1611032 5683792 1612376 5685128 1612408 5685072 -1610992 5683744 1612216 5686496 1611032 5683792 1612408 5685072 -1611032 5683792 1612216 5686496 1612376 5685128 1612408 5685072 -1612216 5686496 1611032 5683792 1610992 5683744 1611224 5687456 -1612216 5686496 1612376 5685128 1611032 5683792 1611224 5687456 -1610992 5683744 1610432 5683584 1611224 5687456 1611032 5683792 -1611032 5683792 1612408 5685072 1610992 5683744 1610432 5683584 -1611224 5687456 1612216 5686496 1611032 5683792 1610432 5683584 -1610432 5683584 1601088 5681704 1611224 5687456 1611032 5683792 -1612376 5685128 1611032 5683792 1612216 5686496 1612464 5685456 -1610992 5683744 1610944 5683704 1610432 5683584 1611032 5683792 -1610432 5683584 1611224 5687456 1611032 5683792 1610944 5683704 -1610992 5683744 1610944 5683704 1611032 5683792 1612408 5685072 -1612216 5686496 1611032 5683792 1611224 5687456 1611288 5687432 -1610944 5683704 1610912 5683672 1610432 5683584 1611032 5683792 -1610992 5683744 1611032 5683792 1612408 5685072 1612496 5685080 -1610992 5683744 1611032 5683792 1612496 5685080 1612576 5685128 -1610992 5683744 1611032 5683792 1612576 5685128 1612616 5685152 -1610992 5683744 1611032 5683792 1612616 5685152 1657088 5639464 -1611032 5683792 1612496 5685080 1612576 5685128 1612616 5685152 -1610992 5683744 1610944 5683704 1611032 5683792 1612616 5685152 -1611032 5683792 1612376 5685128 1612408 5685072 1612496 5685080 -1611032 5683792 1612408 5685072 1612496 5685080 1612576 5685128 -1610992 5683744 1611080 5683832 1612616 5685152 1657088 5639464 -1612616 5685152 1611080 5683832 1611032 5683792 1612576 5685128 -1611080 5683832 1610992 5683744 1611032 5683792 1612576 5685128 -1611032 5683792 1612496 5685080 1612576 5685128 1611080 5683832 -1611032 5683792 1612496 5685080 1611080 5683832 1610992 5683744 -1612576 5685128 1612616 5685152 1611080 5683832 1612496 5685080 -1612616 5685152 1610992 5683744 1611080 5683832 1612576 5685128 -1611032 5683792 1612408 5685072 1612496 5685080 1611080 5683832 -1611032 5683792 1612408 5685072 1611080 5683832 1610992 5683744 -1612496 5685080 1612576 5685128 1611080 5683832 1612408 5685072 -1611032 5683792 1612376 5685128 1612408 5685072 1611080 5683832 -1611032 5683792 1612376 5685128 1611080 5683832 1610992 5683744 -1611032 5683792 1612216 5686496 1612376 5685128 1611080 5683832 -1611032 5683792 1612216 5686496 1611080 5683832 1610992 5683744 -1611032 5683792 1611224 5687456 1612216 5686496 1611080 5683832 -1611032 5683792 1611224 5687456 1611080 5683832 1610992 5683744 -1612376 5685128 1612408 5685072 1611080 5683832 1612216 5686496 -1611032 5683792 1610432 5683584 1611224 5687456 1611080 5683832 -1611032 5683792 1610432 5683584 1611080 5683832 1610992 5683744 -1611224 5687456 1612216 5686496 1611080 5683832 1610432 5683584 -1611032 5683792 1610944 5683704 1610432 5683584 1611080 5683832 -1612216 5686496 1612376 5685128 1611080 5683832 1611224 5687456 -1610432 5683584 1601088 5681704 1611224 5687456 1611080 5683832 -1612216 5686496 1612464 5685456 1612376 5685128 1611080 5683832 -1611224 5687456 1611288 5687432 1612216 5686496 1611080 5683832 -1612408 5685072 1612496 5685080 1611080 5683832 1612376 5685128 -1611080 5683832 1611136 5683904 1612376 5685128 1612408 5685072 -1612216 5686496 1611136 5683904 1611080 5683832 1611224 5687456 -1611080 5683832 1610432 5683584 1611224 5687456 1611136 5683904 -1611080 5683832 1611032 5683792 1610432 5683584 1611136 5683904 -1610432 5683584 1611224 5687456 1611136 5683904 1611032 5683792 -1611032 5683792 1610944 5683704 1610432 5683584 1611136 5683904 -1611224 5687456 1612216 5686496 1611136 5683904 1610432 5683584 -1611080 5683832 1611032 5683792 1611136 5683904 1612408 5685072 -1610432 5683584 1601088 5681704 1611224 5687456 1611136 5683904 -1612376 5685128 1611136 5683904 1612216 5686496 1612464 5685456 -1612216 5686496 1611136 5683904 1611224 5687456 1611288 5687432 -1611136 5683904 1612216 5686496 1612376 5685128 1612408 5685072 -1612216 5686496 1612376 5685128 1611136 5683904 1611224 5687456 -1611080 5683832 1611136 5683904 1612408 5685072 1612496 5685080 -1611080 5683832 1611136 5683904 1612496 5685080 1612576 5685128 -1611136 5683904 1612376 5685128 1612408 5685072 1612496 5685080 -1611080 5683832 1611032 5683792 1611136 5683904 1612496 5685080 -1610432 5683584 1611136 5683952 1611136 5683904 1611032 5683792 -1610432 5683584 1611136 5683952 1611032 5683792 1610944 5683704 -1611136 5683904 1611080 5683832 1611032 5683792 1611136 5683952 -1611032 5683792 1610432 5683584 1611136 5683952 1611080 5683832 -1611136 5683904 1611136 5683952 1611224 5687456 1612216 5686496 -1611224 5687456 1611136 5683952 1610432 5683584 1601088 5681704 -1611224 5687456 1611288 5687432 1612216 5686496 1611136 5683952 -1611136 5683952 1612216 5686496 1611136 5683904 1611080 5683832 -1611136 5683904 1611136 5683952 1612216 5686496 1612376 5685128 -1611136 5683952 1611224 5687456 1612216 5686496 1612376 5685128 -1612216 5686496 1612464 5685456 1612376 5685128 1611136 5683952 -1611136 5683904 1611136 5683952 1612376 5685128 1612408 5685072 -1611136 5683904 1611136 5683952 1612408 5685072 1612496 5685080 -1611136 5683904 1611080 5683832 1611136 5683952 1612408 5685072 -1611136 5683952 1612216 5686496 1612376 5685128 1612408 5685072 -1611136 5683952 1610432 5683584 1611224 5687456 1612216 5686496 -1610432 5683584 1611224 5687456 1611136 5683952 1611032 5683792 -1611224 5687456 1611072 5684032 1610432 5683584 1601088 5681704 -1611136 5683952 1611072 5684032 1611224 5687456 1612216 5686496 -1611136 5683952 1611072 5684032 1612216 5686496 1612376 5685128 -1612216 5686496 1612464 5685456 1612376 5685128 1611072 5684032 -1611224 5687456 1611288 5687432 1612216 5686496 1611072 5684032 -1611136 5683952 1611072 5684032 1612376 5685128 1612408 5685072 -1611072 5684032 1612216 5686496 1612376 5685128 1612408 5685072 -1611136 5683952 1611072 5684032 1612408 5685072 1611136 5683904 -1611072 5684032 1611224 5687456 1612216 5686496 1612376 5685128 -1611136 5683952 1610432 5683584 1611072 5684032 1612408 5685072 -1610432 5683584 1611072 5684032 1611136 5683952 1611032 5683792 -1611136 5683952 1611080 5683832 1611032 5683792 1611072 5684032 -1610432 5683584 1611072 5684032 1611032 5683792 1610944 5683704 -1611136 5683952 1611136 5683904 1611080 5683832 1611072 5684032 -1611032 5683792 1610992 5683744 1610944 5683704 1611072 5684032 -1610944 5683704 1610432 5683584 1611072 5684032 1610992 5683744 -1610432 5683584 1611072 5684032 1610944 5683704 1610912 5683672 -1611072 5684032 1612408 5685072 1611136 5683952 1611080 5683832 -1611032 5683792 1610992 5683744 1611072 5684032 1611080 5683832 -1611072 5684032 1610432 5683584 1611224 5687456 1612216 5686496 -1610432 5683584 1611224 5687456 1611072 5684032 1610944 5683704 -1611224 5687456 1611016 5684048 1610432 5683584 1601088 5681704 -1611072 5684032 1611016 5684048 1611224 5687456 1612216 5686496 -1611224 5687456 1611288 5687432 1612216 5686496 1611016 5684048 -1611072 5684032 1611016 5684048 1612216 5686496 1612376 5685128 -1611072 5684032 1611016 5684048 1612376 5685128 1612408 5685072 -1612216 5686496 1612464 5685456 1612376 5685128 1611016 5684048 -1611016 5684048 1610432 5683584 1611224 5687456 1612216 5686496 -1611016 5684048 1611224 5687456 1612216 5686496 1612376 5685128 -1611072 5684032 1610432 5683584 1611016 5684048 1612376 5685128 -1610432 5683584 1611016 5684048 1611072 5684032 1610944 5683704 -1611072 5684032 1610992 5683744 1610944 5683704 1611016 5684048 -1611072 5684032 1611032 5683792 1610992 5683744 1611016 5684048 -1610992 5683744 1610944 5683704 1611016 5684048 1611032 5683792 -1610432 5683584 1611016 5684048 1610944 5683704 1610912 5683672 -1610432 5683584 1611016 5684048 1610912 5683672 1610824 5683608 -1610432 5683584 1611016 5684048 1610824 5683608 1610736 5683552 -1611016 5684048 1610944 5683704 1610912 5683672 1610824 5683608 -1611072 5684032 1611080 5683832 1611032 5683792 1611016 5684048 -1611072 5684032 1611136 5683952 1611080 5683832 1611016 5684048 -1611032 5683792 1610992 5683744 1611016 5684048 1611080 5683832 -1610432 5683584 1611224 5687456 1611016 5684048 1610824 5683608 -1611016 5684048 1612376 5685128 1611072 5684032 1611080 5683832 -1610944 5683704 1610912 5683672 1611016 5684048 1610992 5683744 -1611224 5687456 1610968 5684040 1610432 5683584 1601088 5681704 -1611016 5684048 1610968 5684040 1611224 5687456 1612216 5686496 -1610968 5684040 1610432 5683584 1611224 5687456 1612216 5686496 -1611224 5687456 1611288 5687432 1612216 5686496 1610968 5684040 -1611016 5684048 1610432 5683584 1610968 5684040 1612216 5686496 -1610432 5683584 1610968 5684040 1611016 5684048 1610824 5683608 -1610432 5683584 1610968 5684040 1610824 5683608 1610736 5683552 -1610432 5683584 1611224 5687456 1610968 5684040 1610824 5683608 -1611016 5684048 1610912 5683672 1610824 5683608 1610968 5684040 -1611016 5684048 1610944 5683704 1610912 5683672 1610968 5684040 -1610912 5683672 1610824 5683608 1610968 5684040 1610944 5683704 -1610968 5684040 1612216 5686496 1611016 5684048 1610944 5683704 -1610824 5683608 1610432 5683584 1610968 5684040 1610912 5683672 -1611016 5684048 1610968 5684040 1612216 5686496 1612376 5685128 -1611016 5684048 1610992 5683744 1610944 5683704 1610968 5684040 -1611016 5684048 1611032 5683792 1610992 5683744 1610968 5684040 -1611016 5684048 1611080 5683832 1611032 5683792 1610968 5684040 -1611032 5683792 1610992 5683744 1610968 5684040 1611080 5683832 -1610944 5683704 1610912 5683672 1610968 5684040 1610992 5683744 -1611016 5684048 1611072 5684032 1611080 5683832 1610968 5684040 -1611016 5684048 1611080 5683832 1610968 5684040 1612216 5686496 -1610992 5683744 1610944 5683704 1610968 5684040 1611032 5683792 -1610968 5684040 1610880 5684024 1611224 5687456 1612216 5686496 -1610968 5684040 1610432 5683584 1610880 5684024 1612216 5686496 -1610432 5683584 1610880 5684024 1610968 5684040 1610824 5683608 -1610432 5683584 1610880 5684024 1610824 5683608 1610736 5683552 -1610880 5684024 1612216 5686496 1610968 5684040 1610824 5683608 -1610880 5684024 1610432 5683584 1611224 5687456 1612216 5686496 -1610432 5683584 1611224 5687456 1610880 5684024 1610824 5683608 -1611224 5687456 1610880 5684024 1610432 5683584 1601088 5681704 -1611224 5687456 1611288 5687432 1612216 5686496 1610880 5684024 -1610968 5684040 1610880 5684024 1612216 5686496 1611016 5684048 -1610968 5684040 1610912 5683672 1610824 5683608 1610880 5684024 -1610968 5684040 1610912 5683672 1610880 5684024 1612216 5686496 -1610824 5683608 1610432 5683584 1610880 5684024 1610912 5683672 -1610968 5684040 1610944 5683704 1610912 5683672 1610880 5684024 -1610968 5684040 1610944 5683704 1610880 5684024 1612216 5686496 -1610968 5684040 1610992 5683744 1610944 5683704 1610880 5684024 -1610968 5684040 1610992 5683744 1610880 5684024 1612216 5686496 -1610944 5683704 1610912 5683672 1610880 5684024 1610992 5683744 -1610912 5683672 1610824 5683608 1610880 5684024 1610944 5683704 -1610968 5684040 1611032 5683792 1610992 5683744 1610880 5684024 -1610968 5684040 1611032 5683792 1610880 5684024 1612216 5686496 -1610968 5684040 1611080 5683832 1611032 5683792 1610880 5684024 -1610992 5683744 1610944 5683704 1610880 5684024 1611032 5683792 -1610880 5684024 1610832 5684024 1611224 5687456 1612216 5686496 -1610880 5684024 1610832 5684024 1612216 5686496 1610968 5684040 -1610832 5684024 1611224 5687456 1612216 5686496 1610968 5684040 -1610880 5684024 1610432 5683584 1610832 5684024 1610968 5684040 -1610432 5683584 1610832 5684024 1610880 5684024 1610824 5683608 -1610432 5683584 1610832 5684024 1610824 5683608 1610736 5683552 -1610880 5684024 1610912 5683672 1610824 5683608 1610832 5684024 -1610832 5684024 1610968 5684040 1610880 5684024 1610912 5683672 -1610832 5684024 1610912 5683672 1610824 5683608 1610736 5683552 -1610832 5684024 1610432 5683584 1611224 5687456 1612216 5686496 -1610432 5683584 1611224 5687456 1610832 5684024 1610736 5683552 -1611224 5687456 1610832 5684024 1610432 5683584 1601088 5681704 -1610432 5683584 1610832 5684024 1610736 5683552 1610520 5683528 -1611224 5687456 1611288 5687432 1612216 5686496 1610832 5684024 -1612216 5686496 1611016 5684048 1610968 5684040 1610832 5684024 -1610880 5684024 1610944 5683704 1610912 5683672 1610832 5684024 -1610912 5683672 1610824 5683608 1610832 5684024 1610944 5683704 -1610880 5684024 1610944 5683704 1610832 5684024 1610968 5684040 -1610880 5684024 1610992 5683744 1610944 5683704 1610832 5684024 -1610832 5684024 1610744 5684016 1611224 5687456 1612216 5686496 -1610832 5684024 1610744 5684016 1612216 5686496 1610968 5684040 -1610832 5684024 1610432 5683584 1610744 5684016 1612216 5686496 -1610432 5683584 1610744 5684016 1610832 5684024 1610736 5683552 -1610832 5684024 1610824 5683608 1610736 5683552 1610744 5684016 -1610832 5684024 1610912 5683672 1610824 5683608 1610744 5684016 -1610824 5683608 1610736 5683552 1610744 5684016 1610912 5683672 -1610832 5684024 1610944 5683704 1610912 5683672 1610744 5684016 -1610912 5683672 1610824 5683608 1610744 5684016 1610944 5683704 -1610744 5684016 1612216 5686496 1610832 5684024 1610944 5683704 -1610736 5683552 1610432 5683584 1610744 5684016 1610824 5683608 -1610744 5684016 1610432 5683584 1611224 5687456 1612216 5686496 -1611224 5687456 1610744 5684016 1610432 5683584 1601088 5681704 -1610432 5683584 1610744 5684016 1610736 5683552 1610520 5683528 -1610432 5683584 1611224 5687456 1610744 5684016 1610736 5683552 -1611224 5687456 1611288 5687432 1612216 5686496 1610744 5684016 -1610832 5684024 1610880 5684024 1610944 5683704 1610744 5684016 -1610744 5684016 1610672 5683992 1611224 5687456 1612216 5686496 -1611224 5687456 1610672 5683992 1610432 5683584 1601088 5681704 -1610432 5683584 1610672 5683992 1610744 5684016 1610736 5683552 -1610744 5684016 1610824 5683608 1610736 5683552 1610672 5683992 -1610744 5684016 1610912 5683672 1610824 5683608 1610672 5683992 -1610744 5684016 1610944 5683704 1610912 5683672 1610672 5683992 -1610824 5683608 1610736 5683552 1610672 5683992 1610912 5683672 -1610672 5683992 1611224 5687456 1610744 5684016 1610912 5683672 -1610432 5683584 1610672 5683992 1610736 5683552 1610520 5683528 -1610736 5683552 1610432 5683584 1610672 5683992 1610824 5683608 -1610432 5683584 1611224 5687456 1610672 5683992 1610736 5683552 -1611224 5687456 1610576 5683944 1610432 5683584 1601088 5681704 -1611224 5687456 1610672 5683992 1610576 5683944 1601088 5681704 -1611224 5687456 1610576 5683944 1601088 5681704 1611264 5689408 -1610432 5683584 1601128 5681664 1601088 5681704 1610576 5683944 -1610672 5683992 1610576 5683944 1611224 5687456 1610744 5684016 -1610432 5683584 1610576 5683944 1610672 5683992 1610736 5683552 -1610432 5683584 1610576 5683944 1610736 5683552 1610520 5683528 -1610736 5683552 1610648 5683504 1610520 5683528 1610576 5683944 -1610672 5683992 1610824 5683608 1610736 5683552 1610576 5683944 -1610672 5683992 1610912 5683672 1610824 5683608 1610576 5683944 -1610576 5683944 1611224 5687456 1610672 5683992 1610824 5683608 -1610576 5683944 1610824 5683608 1610736 5683552 1610520 5683528 -1610576 5683944 1610520 5683528 1610432 5683584 1601088 5681704 -1601088 5681704 1610528 5683880 1610432 5683584 1601128 5681664 -1610576 5683944 1610528 5683880 1601088 5681704 1611224 5687456 -1610576 5683944 1610528 5683880 1611224 5687456 1610672 5683992 -1601088 5681704 1611264 5689408 1611224 5687456 1610528 5683880 -1601088 5681704 1611224 5687456 1610528 5683880 1601128 5681664 -1610528 5683880 1610576 5683944 1610432 5683584 1601128 5681664 -1610576 5683944 1610432 5683584 1610528 5683880 1611224 5687456 -1610432 5683584 1610528 5683880 1610576 5683944 1610520 5683528 -1610576 5683944 1610736 5683552 1610520 5683528 1610528 5683880 -1610736 5683552 1610648 5683504 1610520 5683528 1610528 5683880 -1610576 5683944 1610824 5683608 1610736 5683552 1610528 5683880 -1610736 5683552 1610520 5683528 1610528 5683880 1610824 5683608 -1610576 5683944 1610672 5683992 1610824 5683608 1610528 5683880 -1610672 5683992 1610912 5683672 1610824 5683608 1610528 5683880 -1610824 5683608 1610736 5683552 1610528 5683880 1610672 5683992 -1610432 5683584 1601128 5681664 1610528 5683880 1610520 5683528 -1610528 5683880 1611224 5687456 1610576 5683944 1610672 5683992 -1610520 5683528 1610432 5683584 1610528 5683880 1610736 5683552 -1610432 5683584 1601592 5681216 1601128 5681664 1610528 5683880 -1610528 5683880 1610496 5683784 1601128 5681664 1601088 5681704 -1610432 5683584 1610496 5683784 1610528 5683880 1610520 5683528 -1610432 5683584 1601128 5681664 1610496 5683784 1610520 5683528 -1610496 5683784 1601128 5681664 1610528 5683880 1610520 5683528 -1610528 5683880 1610736 5683552 1610520 5683528 1610496 5683784 -1610736 5683552 1610648 5683504 1610520 5683528 1610496 5683784 -1610648 5683504 1610616 5683496 1610520 5683528 1610496 5683784 -1610528 5683880 1610824 5683608 1610736 5683552 1610496 5683784 -1610528 5683880 1610672 5683992 1610824 5683608 1610496 5683784 -1610528 5683880 1610824 5683608 1610496 5683784 1601128 5681664 -1610520 5683528 1610432 5683584 1610496 5683784 1610648 5683504 -1610736 5683552 1610648 5683504 1610496 5683784 1610824 5683608 -1601128 5681664 1610496 5683784 1610432 5683584 1601592 5681216 -1610496 5683784 1610520 5683528 1610432 5683584 1601592 5681216 -1601128 5681664 1610496 5683784 1601592 5681216 1601160 5681616 -1610432 5683584 1601624 5681136 1601592 5681216 1610496 5683784 -1601128 5681664 1610528 5683880 1610496 5683784 1601592 5681216 -1610432 5683584 1610432 5683632 1610496 5683784 1610520 5683528 -1610432 5683584 1601592 5681216 1610432 5683632 1610520 5683528 -1610432 5683632 1601592 5681216 1610496 5683784 1610520 5683528 -1601592 5681216 1610432 5683632 1610432 5683584 1601624 5681136 -1610496 5683784 1610648 5683504 1610520 5683528 1610432 5683632 -1610496 5683784 1610432 5683632 1601592 5681216 1601128 5681664 -1610432 5683632 1610432 5683584 1601592 5681216 1601128 5681664 -1610496 5683784 1610520 5683528 1610432 5683632 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1610432 5683632 -1610496 5683784 1610432 5683632 1601128 5681664 1610528 5683880 -1610496 5683784 1610520 5683528 1610432 5683632 1610528 5683880 -1601128 5681664 1601088 5681704 1610528 5683880 1610432 5683632 -1601088 5681704 1611224 5687456 1610528 5683880 1610432 5683632 -1610528 5683880 1610496 5683784 1610432 5683632 1601088 5681704 -1610432 5683632 1601592 5681216 1601128 5681664 1601088 5681704 -1611224 5687456 1610536 5684592 1601088 5681704 1611264 5689408 -1610528 5683880 1610536 5684592 1611224 5687456 1610576 5683944 -1610528 5683880 1601088 5681704 1610536 5684592 1610576 5683944 -1611224 5687456 1610672 5683992 1610576 5683944 1610536 5684592 -1610576 5683944 1610528 5683880 1610536 5684592 1610672 5683992 -1610536 5684592 1601088 5681704 1611224 5687456 1610672 5683992 -1611224 5687456 1610744 5684016 1610672 5683992 1610536 5684592 -1610672 5683992 1610576 5683944 1610536 5684592 1610744 5684016 -1611224 5687456 1612216 5686496 1610744 5684016 1610536 5684592 -1612216 5686496 1610832 5684024 1610744 5684016 1610536 5684592 -1612216 5686496 1610968 5684040 1610832 5684024 1610536 5684592 -1610968 5684040 1610880 5684024 1610832 5684024 1610536 5684592 -1610968 5684040 1610880 5684024 1610536 5684592 1612216 5686496 -1610832 5684024 1610744 5684016 1610536 5684592 1610880 5684024 -1612216 5686496 1610968 5684040 1610536 5684592 1611224 5687456 -1611224 5687456 1612216 5686496 1610536 5684592 1601088 5681704 -1610744 5684016 1610672 5683992 1610536 5684592 1610832 5684024 -1601088 5681704 1610536 5684592 1610528 5683880 1610432 5683632 -1610536 5684592 1610576 5683944 1610528 5683880 1610432 5683632 -1601088 5681704 1610536 5684592 1610432 5683632 1601128 5681664 -1601088 5681704 1611224 5687456 1610536 5684592 1601128 5681664 -1610536 5684592 1610528 5683880 1610432 5683632 1601128 5681664 -1610528 5683880 1610496 5683784 1610432 5683632 1610536 5684592 -1610528 5683880 1610496 5683784 1610536 5684592 1610576 5683944 -1610432 5683632 1601128 5681664 1610536 5684592 1610496 5683784 -1611224 5687456 1611288 5687432 1612216 5686496 1610536 5684592 -1612216 5686496 1610968 5684040 1610536 5684592 1611288 5687432 -1611224 5687456 1611288 5687432 1610536 5684592 1601088 5681704 -1611288 5687432 1612216 5686664 1612216 5686496 1610536 5684592 -1612216 5686496 1611016 5684048 1610968 5684040 1610536 5684592 -1610968 5684040 1610880 5684024 1610536 5684592 1611016 5684048 -1612216 5686496 1611016 5684048 1610536 5684592 1611288 5687432 -1612216 5686496 1612376 5685128 1611016 5684048 1610536 5684592 -1612216 5686496 1612376 5685128 1610536 5684592 1611288 5687432 -1612216 5686496 1612464 5685456 1612376 5685128 1610536 5684592 -1612216 5686496 1612464 5685456 1610536 5684592 1611288 5687432 -1612216 5686496 1612480 5685480 1612464 5685456 1610536 5684592 -1612464 5685456 1612392 5685168 1612376 5685128 1610536 5684592 -1612464 5685456 1612448 5685352 1612392 5685168 1610536 5684592 -1612464 5685456 1612392 5685168 1610536 5684592 1612216 5686496 -1612392 5685168 1612384 5685136 1612376 5685128 1610536 5684592 -1612376 5685128 1611072 5684032 1611016 5684048 1610536 5684592 -1612376 5685128 1612408 5685072 1611072 5684032 1610536 5684592 -1611016 5684048 1610968 5684040 1610536 5684592 1611072 5684032 -1612376 5685128 1611072 5684032 1610536 5684592 1612392 5685168 -1610432 5683632 1601592 5681216 1601128 5681664 1610536 5684592 -1610432 5683632 1610432 5683584 1601592 5681216 1610536 5684592 -1601128 5681664 1601088 5681704 1610536 5684592 1601592 5681216 -1601592 5681216 1601160 5681616 1601128 5681664 1610536 5684592 -1610432 5683632 1601592 5681216 1610536 5684592 1610496 5683784 -1610536 5684592 1610672 5684808 1612216 5686496 1612464 5685456 -1612216 5686496 1612480 5685480 1612464 5685456 1610672 5684808 -1610536 5684592 1610672 5684808 1612464 5685456 1612392 5685168 -1610672 5684808 1612216 5686496 1612464 5685456 1612392 5685168 -1612464 5685456 1612448 5685352 1612392 5685168 1610672 5684808 -1610672 5684808 1611288 5687432 1612216 5686496 1612464 5685456 -1610536 5684592 1611288 5687432 1610672 5684808 1612392 5685168 -1612216 5686496 1610672 5684808 1611288 5687432 1612216 5686664 -1611288 5687432 1610672 5684808 1610536 5684592 1611224 5687456 -1611288 5687432 1612216 5686496 1610672 5684808 1611224 5687456 -1610536 5684592 1601088 5681704 1611224 5687456 1610672 5684808 -1610672 5684808 1612392 5685168 1610536 5684592 1611224 5687456 -1610536 5684592 1610672 5684808 1612392 5685168 1612376 5685128 -1610672 5684808 1612464 5685456 1612392 5685168 1612376 5685128 -1610536 5684592 1611224 5687456 1610672 5684808 1612376 5685128 -1612392 5685168 1612384 5685136 1612376 5685128 1610672 5684808 -1610536 5684592 1610672 5684808 1612376 5685128 1611072 5684032 -1612376 5685128 1612408 5685072 1611072 5684032 1610672 5684808 -1610536 5684592 1611224 5687456 1610672 5684808 1611072 5684032 -1610672 5684808 1612392 5685168 1612376 5685128 1611072 5684032 -1610536 5684592 1610672 5684808 1611072 5684032 1611016 5684048 -1610536 5684592 1611224 5687456 1610672 5684808 1611016 5684048 -1610536 5684592 1610672 5684808 1611016 5684048 1610968 5684040 -1610672 5684808 1612376 5685128 1611072 5684032 1611016 5684048 -1610672 5684808 1610768 5684904 1612464 5685456 1612392 5685168 -1612464 5685456 1610768 5684904 1612216 5686496 1612480 5685480 -1612464 5685456 1612448 5685352 1612392 5685168 1610768 5684904 -1612392 5685168 1610672 5684808 1610768 5684904 1612448 5685352 -1610672 5684808 1610768 5684904 1612392 5685168 1612376 5685128 -1610768 5684904 1612448 5685352 1612392 5685168 1612376 5685128 -1612216 5686496 1610768 5684904 1610672 5684808 1611288 5687432 -1610672 5684808 1611288 5687432 1610768 5684904 1612376 5685128 -1610672 5684808 1611224 5687456 1611288 5687432 1610768 5684904 -1611288 5687432 1612216 5686496 1610768 5684904 1611224 5687456 -1610672 5684808 1611224 5687456 1610768 5684904 1612376 5685128 -1610768 5684904 1612216 5686496 1612464 5685456 1612448 5685352 -1612216 5686496 1612464 5685456 1610768 5684904 1611288 5687432 -1612392 5685168 1612384 5685136 1612376 5685128 1610768 5684904 -1612448 5685352 1612432 5685256 1612392 5685168 1610768 5684904 -1612216 5686496 1610768 5684904 1611288 5687432 1612216 5686664 -1610672 5684808 1610536 5684592 1611224 5687456 1610768 5684904 -1610672 5684808 1610768 5684904 1612376 5685128 1611072 5684032 -1612376 5685128 1612408 5685072 1611072 5684032 1610768 5684904 -1610768 5684904 1612392 5685168 1612376 5685128 1611072 5684032 -1610672 5684808 1611224 5687456 1610768 5684904 1611072 5684032 -1610672 5684808 1610768 5684904 1611072 5684032 1611016 5684048 -1610672 5684808 1611224 5687456 1610768 5684904 1611016 5684048 -1610768 5684904 1612376 5685128 1611072 5684032 1611016 5684048 -1610672 5684808 1610768 5684904 1611016 5684048 1610536 5684592 -1612464 5685456 1610840 5684936 1612216 5686496 1612480 5685480 -1610768 5684904 1610840 5684936 1612464 5685456 1612448 5685352 -1610768 5684904 1610840 5684936 1612448 5685352 1612392 5685168 -1610768 5684904 1610840 5684936 1612392 5685168 1612376 5685128 -1610840 5684936 1612448 5685352 1612392 5685168 1612376 5685128 -1610768 5684904 1610840 5684936 1612376 5685128 1611072 5684032 -1612376 5685128 1612408 5685072 1611072 5684032 1610840 5684936 -1610840 5684936 1612392 5685168 1612376 5685128 1612408 5685072 -1611072 5684032 1610768 5684904 1610840 5684936 1612408 5685072 -1610840 5684936 1612464 5685456 1612448 5685352 1612392 5685168 -1610768 5684904 1612216 5686496 1610840 5684936 1611072 5684032 -1612216 5686496 1610840 5684936 1610768 5684904 1611288 5687432 -1610768 5684904 1611224 5687456 1611288 5687432 1610840 5684936 -1610768 5684904 1610672 5684808 1611224 5687456 1610840 5684936 -1610840 5684936 1611072 5684032 1610768 5684904 1611224 5687456 -1611288 5687432 1612216 5686496 1610840 5684936 1611224 5687456 -1610840 5684936 1612216 5686496 1612464 5685456 1612448 5685352 -1612216 5686496 1612464 5685456 1610840 5684936 1611288 5687432 -1612392 5685168 1612384 5685136 1612376 5685128 1610840 5684936 -1612448 5685352 1612432 5685256 1612392 5685168 1610840 5684936 -1612216 5686496 1610840 5684936 1611288 5687432 1612216 5686664 -1610768 5684904 1610840 5684936 1611072 5684032 1611016 5684048 -1610840 5684936 1612408 5685072 1611072 5684032 1611016 5684048 -1610768 5684904 1611224 5687456 1610840 5684936 1611016 5684048 -1612408 5685072 1611136 5683952 1611072 5684032 1610840 5684936 -1610768 5684904 1610840 5684936 1611016 5684048 1610672 5684808 -1610768 5684904 1611224 5687456 1610840 5684936 1610672 5684808 -1610840 5684936 1611072 5684032 1611016 5684048 1610672 5684808 -1611016 5684048 1610536 5684592 1610672 5684808 1610840 5684936 -1612408 5685072 1610880 5684928 1610840 5684936 1612376 5685128 -1610840 5684936 1612392 5685168 1612376 5685128 1610880 5684928 -1612376 5685128 1612408 5685072 1610880 5684928 1612392 5685168 -1610840 5684936 1612448 5685352 1612392 5685168 1610880 5684928 -1612392 5685168 1612376 5685128 1610880 5684928 1612448 5685352 -1612408 5685072 1611072 5684032 1610880 5684928 1612376 5685128 -1610840 5684936 1610880 5684928 1611072 5684032 1611016 5684048 -1610880 5684928 1612408 5685072 1611072 5684032 1611016 5684048 -1610840 5684936 1612464 5685456 1612448 5685352 1610880 5684928 -1612448 5685352 1612392 5685168 1610880 5684928 1612464 5685456 -1610840 5684936 1612216 5686496 1612464 5685456 1610880 5684928 -1612216 5686496 1612480 5685480 1612464 5685456 1610880 5684928 -1612464 5685456 1612448 5685352 1610880 5684928 1612216 5686496 -1610880 5684928 1611016 5684048 1610840 5684936 1612216 5686496 -1610840 5684936 1611288 5687432 1612216 5686496 1610880 5684928 -1612392 5685168 1612384 5685136 1612376 5685128 1610880 5684928 -1612448 5685352 1612432 5685256 1612392 5685168 1610880 5684928 -1610840 5684936 1610880 5684928 1611016 5684048 1610672 5684808 -1610880 5684928 1611072 5684032 1611016 5684048 1610672 5684808 -1610840 5684936 1612216 5686496 1610880 5684928 1610672 5684808 -1611072 5684032 1610880 5684928 1612408 5685072 1611136 5683952 -1611016 5684048 1610536 5684592 1610672 5684808 1610880 5684928 -1610840 5684936 1610880 5684928 1610672 5684808 1610768 5684904 -1610840 5684936 1612216 5686496 1610880 5684928 1610768 5684904 -1610880 5684928 1611016 5684048 1610672 5684808 1610768 5684904 -1610880 5684928 1610944 5684896 1611072 5684032 1611016 5684048 -1610880 5684928 1612408 5685072 1610944 5684896 1611016 5684048 -1612408 5685072 1610944 5684896 1610880 5684928 1612376 5685128 -1610880 5684928 1612392 5685168 1612376 5685128 1610944 5684896 -1610880 5684928 1612448 5685352 1612392 5685168 1610944 5684896 -1612392 5685168 1612376 5685128 1610944 5684896 1612448 5685352 -1612408 5685072 1611072 5684032 1610944 5684896 1612376 5685128 -1610880 5684928 1612464 5685456 1612448 5685352 1610944 5684896 -1612448 5685352 1612392 5685168 1610944 5684896 1612464 5685456 -1610944 5684896 1611016 5684048 1610880 5684928 1612464 5685456 -1612376 5685128 1612408 5685072 1610944 5684896 1612392 5685168 -1610944 5684896 1612408 5685072 1611072 5684032 1611016 5684048 -1610880 5684928 1610944 5684896 1611016 5684048 1610672 5684808 -1610944 5684896 1611072 5684032 1611016 5684048 1610672 5684808 -1610880 5684928 1612464 5685456 1610944 5684896 1610672 5684808 -1610880 5684928 1612216 5686496 1612464 5685456 1610944 5684896 -1612216 5686496 1612480 5685480 1612464 5685456 1610944 5684896 -1612464 5685456 1612448 5685352 1610944 5684896 1612216 5686496 -1610880 5684928 1612216 5686496 1610944 5684896 1610672 5684808 -1610880 5684928 1610840 5684936 1612216 5686496 1610944 5684896 -1612392 5685168 1612384 5685136 1612376 5685128 1610944 5684896 -1612448 5685352 1612432 5685256 1612392 5685168 1610944 5684896 -1610880 5684928 1610944 5684896 1610672 5684808 1610768 5684904 -1610880 5684928 1612216 5686496 1610944 5684896 1610768 5684904 -1610944 5684896 1611016 5684048 1610672 5684808 1610768 5684904 -1611072 5684032 1610944 5684896 1612408 5685072 1611136 5683952 -1611016 5684048 1610536 5684592 1610672 5684808 1610944 5684896 -1611016 5684048 1610536 5684592 1610944 5684896 1611072 5684032 -1610672 5684808 1610768 5684904 1610944 5684896 1610536 5684592 -1611016 5684048 1610968 5684040 1610536 5684592 1610944 5684896 -1610880 5684928 1610944 5684896 1610768 5684904 1610840 5684936 -1612408 5685072 1611024 5684888 1610944 5684896 1612376 5685128 -1612408 5685072 1611072 5684032 1611024 5684888 1612376 5685128 -1610944 5684896 1612392 5685168 1612376 5685128 1611024 5684888 -1610944 5684896 1612448 5685352 1612392 5685168 1611024 5684888 -1610944 5684896 1612464 5685456 1612448 5685352 1611024 5684888 -1612448 5685352 1612392 5685168 1611024 5684888 1612464 5685456 -1612376 5685128 1612408 5685072 1611024 5684888 1612392 5685168 -1610944 5684896 1612216 5686496 1612464 5685456 1611024 5684888 -1612464 5685456 1612448 5685352 1611024 5684888 1612216 5686496 -1612216 5686496 1612480 5685480 1612464 5685456 1611024 5684888 -1612392 5685168 1612376 5685128 1611024 5684888 1612448 5685352 -1610944 5684896 1611024 5684888 1611072 5684032 1611016 5684048 -1611024 5684888 1612408 5685072 1611072 5684032 1611016 5684048 -1610944 5684896 1611024 5684888 1611016 5684048 1610536 5684592 -1611024 5684888 1611072 5684032 1611016 5684048 1610536 5684592 -1611024 5684888 1610536 5684592 1610944 5684896 1612216 5686496 -1610944 5684896 1610880 5684928 1612216 5686496 1611024 5684888 -1612216 5686496 1612464 5685456 1611024 5684888 1610880 5684928 -1610944 5684896 1610880 5684928 1611024 5684888 1610536 5684592 -1610880 5684928 1610840 5684936 1612216 5686496 1611024 5684888 -1612392 5685168 1612384 5685136 1612376 5685128 1611024 5684888 -1612448 5685352 1612432 5685256 1612392 5685168 1611024 5684888 -1611072 5684032 1611024 5684888 1612408 5685072 1611136 5683952 -1611072 5684032 1611016 5684048 1611024 5684888 1611136 5683952 -1611024 5684888 1612376 5685128 1612408 5685072 1611136 5683952 -1612408 5685072 1611136 5683904 1611136 5683952 1611024 5684888 -1610944 5684896 1611024 5684888 1610536 5684592 1610672 5684808 -1611016 5684048 1610968 5684040 1610536 5684592 1611024 5684888 -1611024 5684888 1611048 5684928 1612216 5686496 1612464 5685456 -1611024 5684888 1611048 5684928 1612464 5685456 1612448 5685352 -1611024 5684888 1611048 5684928 1612448 5685352 1612392 5685168 -1611048 5684928 1612464 5685456 1612448 5685352 1612392 5685168 -1611024 5684888 1610880 5684928 1611048 5684928 1612392 5685168 -1611048 5684928 1610880 5684928 1612216 5686496 1612464 5685456 -1612216 5686496 1612480 5685480 1612464 5685456 1611048 5684928 -1611048 5684928 1612216 5686496 1612464 5685456 1612448 5685352 -1611024 5684888 1611048 5684928 1612392 5685168 1612376 5685128 -1611048 5684928 1612448 5685352 1612392 5685168 1612376 5685128 -1611024 5684888 1611048 5684928 1612376 5685128 1612408 5685072 -1611024 5684888 1610880 5684928 1611048 5684928 1612408 5685072 -1611024 5684888 1611048 5684928 1612408 5685072 1611136 5683952 -1611048 5684928 1612376 5685128 1612408 5685072 1611136 5683952 -1611024 5684888 1610880 5684928 1611048 5684928 1611136 5683952 -1611048 5684928 1612392 5685168 1612376 5685128 1612408 5685072 -1610880 5684928 1611048 5684928 1611024 5684888 1610944 5684896 -1611048 5684928 1611136 5683952 1611024 5684888 1610944 5684896 -1612216 5686496 1611048 5684928 1610880 5684928 1610840 5684936 -1612216 5686496 1612464 5685456 1611048 5684928 1610840 5684936 -1612216 5686496 1611048 5684928 1610840 5684936 1611288 5687432 -1612392 5685168 1612384 5685136 1612376 5685128 1611048 5684928 -1612448 5685352 1612432 5685256 1612392 5685168 1611048 5684928 -1612408 5685072 1611136 5683904 1611136 5683952 1611048 5684928 -1611024 5684888 1611048 5684928 1611136 5683952 1611072 5684032 -1611024 5684888 1611048 5684928 1611072 5684032 1611016 5684048 -1611024 5684888 1610944 5684896 1611048 5684928 1611072 5684032 -1611048 5684928 1612408 5685072 1611136 5683952 1611072 5684032 -1610880 5684928 1610840 5684936 1611048 5684928 1610944 5684896 -1611048 5684928 1611064 5684960 1612216 5686496 1612464 5685456 -1612216 5686496 1612480 5685480 1612464 5685456 1611064 5684960 -1611048 5684928 1611064 5684960 1612464 5685456 1612448 5685352 -1611048 5684928 1611064 5684960 1612448 5685352 1612392 5685168 -1611048 5684928 1611064 5684960 1612392 5685168 1612376 5685128 -1611064 5684960 1612448 5685352 1612392 5685168 1612376 5685128 -1611064 5684960 1612216 5686496 1612464 5685456 1612448 5685352 -1611064 5684960 1612464 5685456 1612448 5685352 1612392 5685168 -1611048 5684928 1611064 5684960 1612376 5685128 1612408 5685072 -1611064 5684960 1612392 5685168 1612376 5685128 1612408 5685072 -1611048 5684928 1611064 5684960 1612408 5685072 1611136 5683952 -1610840 5684936 1611064 5684960 1611048 5684928 1610880 5684928 -1612216 5686496 1611064 5684960 1610840 5684936 1611288 5687432 -1610840 5684936 1611224 5687456 1611288 5687432 1611064 5684960 -1612392 5685168 1612384 5685136 1612376 5685128 1611064 5684960 -1612448 5685352 1612432 5685256 1612392 5685168 1611064 5684960 -1612216 5686496 1611064 5684960 1611288 5687432 1612216 5686664 -1611048 5684928 1610880 5684928 1611064 5684960 1612408 5685072 -1611048 5684928 1610944 5684896 1610880 5684928 1611064 5684960 -1611048 5684928 1611024 5684888 1610944 5684896 1611064 5684960 -1610880 5684928 1610840 5684936 1611064 5684960 1610944 5684896 -1611048 5684928 1610944 5684896 1611064 5684960 1612408 5685072 -1611064 5684960 1611288 5687432 1612216 5686496 1612464 5685456 -1610840 5684936 1611288 5687432 1611064 5684960 1610880 5684928 -1611288 5687432 1611088 5685000 1611064 5684960 1610840 5684936 -1611288 5687432 1612216 5686496 1611088 5685000 1610840 5684936 -1611288 5687432 1611088 5685000 1610840 5684936 1611224 5687456 -1611288 5687432 1612216 5686496 1611088 5685000 1611224 5687456 -1610840 5684936 1610768 5684904 1611224 5687456 1611088 5685000 -1611088 5685000 1611064 5684960 1610840 5684936 1611224 5687456 -1612216 5686496 1611088 5685000 1611288 5687432 1612216 5686664 -1611064 5684960 1611088 5685000 1612216 5686496 1612464 5685456 -1611088 5685000 1611288 5687432 1612216 5686496 1612464 5685456 -1611064 5684960 1611088 5685000 1612464 5685456 1612448 5685352 -1612216 5686496 1612480 5685480 1612464 5685456 1611088 5685000 -1611064 5684960 1611088 5685000 1612448 5685352 1612392 5685168 -1611064 5684960 1611088 5685000 1612392 5685168 1612376 5685128 -1611064 5684960 1611088 5685000 1612376 5685128 1612408 5685072 -1611088 5685000 1612392 5685168 1612376 5685128 1612408 5685072 -1611088 5685000 1612464 5685456 1612448 5685352 1612392 5685168 -1611088 5685000 1612448 5685352 1612392 5685168 1612376 5685128 -1611064 5684960 1611088 5685000 1612408 5685072 1611048 5684928 -1611088 5685000 1612376 5685128 1612408 5685072 1611048 5684928 -1612408 5685072 1611136 5683952 1611048 5684928 1611088 5685000 -1612392 5685168 1612384 5685136 1612376 5685128 1611088 5685000 -1612448 5685352 1612432 5685256 1612392 5685168 1611088 5685000 -1611088 5685000 1612216 5686496 1612464 5685456 1612448 5685352 -1611088 5685000 1611048 5684928 1611064 5684960 1610840 5684936 -1611064 5684960 1610880 5684928 1610840 5684936 1611088 5685000 -1611064 5684960 1610944 5684896 1610880 5684928 1611088 5685000 -1610840 5684936 1611224 5687456 1611088 5685000 1610880 5684928 -1611064 5684960 1610880 5684928 1611088 5685000 1611048 5684928 -1611088 5685000 1611184 5685272 1612216 5686496 1612464 5685456 -1611088 5685000 1611288 5687432 1611184 5685272 1612464 5685456 -1611288 5687432 1611184 5685272 1611088 5685000 1611224 5687456 -1611184 5685272 1612464 5685456 1611088 5685000 1611224 5687456 -1611184 5685272 1611288 5687432 1612216 5686496 1612464 5685456 -1612216 5686496 1612480 5685480 1612464 5685456 1611184 5685272 -1611288 5687432 1612216 5686496 1611184 5685272 1611224 5687456 -1611088 5685000 1610840 5684936 1611224 5687456 1611184 5685272 -1611088 5685000 1610840 5684936 1611184 5685272 1612464 5685456 -1611224 5687456 1611288 5687432 1611184 5685272 1610840 5684936 -1610840 5684936 1610768 5684904 1611224 5687456 1611184 5685272 -1611224 5687456 1611288 5687432 1611184 5685272 1610768 5684904 -1610768 5684904 1610672 5684808 1611224 5687456 1611184 5685272 -1610840 5684936 1610768 5684904 1611184 5685272 1611088 5685000 -1611088 5685000 1610880 5684928 1610840 5684936 1611184 5685272 -1612216 5686496 1611184 5685272 1611288 5687432 1612216 5686664 -1611088 5685000 1611184 5685272 1612464 5685456 1612448 5685352 -1611184 5685272 1612216 5686496 1612464 5685456 1612448 5685352 -1611088 5685000 1610840 5684936 1611184 5685272 1612448 5685352 -1611088 5685000 1611184 5685272 1612448 5685352 1612392 5685168 -1611088 5685000 1610840 5684936 1611184 5685272 1612392 5685168 -1611088 5685000 1611184 5685272 1612392 5685168 1612376 5685128 -1611088 5685000 1611184 5685272 1612376 5685128 1612408 5685072 -1611088 5685000 1610840 5684936 1611184 5685272 1612376 5685128 -1611184 5685272 1612448 5685352 1612392 5685168 1612376 5685128 -1612392 5685168 1612384 5685136 1612376 5685128 1611184 5685272 -1612448 5685352 1612432 5685256 1612392 5685168 1611184 5685272 -1611184 5685272 1612464 5685456 1612448 5685352 1612392 5685168 -1611184 5685272 1611264 5685432 1612216 5686496 1612464 5685456 -1611184 5685272 1611264 5685432 1612464 5685456 1612448 5685352 -1611264 5685432 1612216 5686496 1612464 5685456 1612448 5685352 -1611184 5685272 1611288 5687432 1611264 5685432 1612448 5685352 -1612216 5686496 1612480 5685480 1612464 5685456 1611264 5685432 -1611288 5687432 1611264 5685432 1611184 5685272 1611224 5687456 -1611184 5685272 1610768 5684904 1611224 5687456 1611264 5685432 -1611264 5685432 1612448 5685352 1611184 5685272 1610768 5684904 -1611224 5687456 1611288 5687432 1611264 5685432 1610768 5684904 -1611264 5685432 1611288 5687432 1612216 5686496 1612464 5685456 -1611288 5687432 1612216 5686496 1611264 5685432 1611224 5687456 -1611184 5685272 1610840 5684936 1610768 5684904 1611264 5685432 -1610768 5684904 1610672 5684808 1611224 5687456 1611264 5685432 -1612216 5686496 1611264 5685432 1611288 5687432 1612216 5686664 -1611184 5685272 1611264 5685432 1612448 5685352 1612392 5685168 -1611264 5685432 1612464 5685456 1612448 5685352 1612392 5685168 -1611184 5685272 1610768 5684904 1611264 5685432 1612392 5685168 -1611184 5685272 1611264 5685432 1612392 5685168 1612376 5685128 -1611184 5685272 1610768 5684904 1611264 5685432 1612376 5685128 -1611184 5685272 1611264 5685432 1612376 5685128 1611088 5685000 -1612392 5685168 1612384 5685136 1612376 5685128 1611264 5685432 -1612448 5685352 1612432 5685256 1612392 5685168 1611264 5685432 -1611264 5685432 1612448 5685352 1612392 5685168 1612376 5685128 -1611264 5685432 1611440 5685632 1612216 5686496 1612464 5685456 -1611264 5685432 1611440 5685632 1612464 5685456 1612448 5685352 -1611264 5685432 1611440 5685632 1612448 5685352 1612392 5685168 -1611440 5685632 1612464 5685456 1612448 5685352 1612392 5685168 -1612216 5686496 1612480 5685480 1612464 5685456 1611440 5685632 -1612216 5686496 1612272 5686464 1612480 5685480 1611440 5685632 -1611440 5685632 1612480 5685480 1612464 5685456 1612448 5685352 -1611264 5685432 1611288 5687432 1611440 5685632 1612392 5685168 -1611288 5687432 1611440 5685632 1611264 5685432 1611224 5687456 -1611264 5685432 1610768 5684904 1611224 5687456 1611440 5685632 -1611440 5685632 1612392 5685168 1611264 5685432 1611224 5687456 -1611440 5685632 1611288 5687432 1612216 5686496 1612272 5686464 -1612272 5686464 1612552 5685552 1612480 5685480 1611440 5685632 -1612480 5685480 1612464 5685456 1611440 5685632 1612272 5686464 -1611288 5687432 1612216 5686496 1611440 5685632 1611224 5687456 -1612448 5685352 1612432 5685256 1612392 5685168 1611440 5685632 -1612216 5686496 1611440 5685632 1611288 5687432 1612216 5686664 -1611264 5685432 1611440 5685632 1612392 5685168 1612376 5685128 -1611440 5685632 1612448 5685352 1612392 5685168 1612376 5685128 -1611264 5685432 1611440 5685632 1612376 5685128 1611184 5685272 -1611264 5685432 1611224 5687456 1611440 5685632 1612376 5685128 -1612392 5685168 1612384 5685136 1612376 5685128 1611440 5685632 -1612272 5686464 1611504 5685680 1611440 5685632 1612216 5686496 -1612272 5686464 1612480 5685480 1611504 5685680 1612216 5686496 -1611440 5685632 1611288 5687432 1612216 5686496 1611504 5685680 -1612216 5686496 1612272 5686464 1611504 5685680 1611288 5687432 -1612480 5685480 1611504 5685680 1612272 5686464 1612552 5685552 -1611440 5685632 1611504 5685680 1612480 5685480 1612464 5685456 -1611440 5685632 1611504 5685680 1612464 5685456 1612448 5685352 -1611440 5685632 1611504 5685680 1612448 5685352 1612392 5685168 -1611440 5685632 1611504 5685680 1612392 5685168 1612376 5685128 -1611504 5685680 1612448 5685352 1612392 5685168 1612376 5685128 -1611504 5685680 1612464 5685456 1612448 5685352 1612392 5685168 -1611504 5685680 1612480 5685480 1612464 5685456 1612448 5685352 -1611440 5685632 1611224 5687456 1611288 5687432 1611504 5685680 -1611440 5685632 1611264 5685432 1611224 5687456 1611504 5685680 -1611288 5687432 1612216 5686496 1611504 5685680 1611224 5687456 -1611504 5685680 1612376 5685128 1611440 5685632 1611224 5687456 -1611504 5685680 1612272 5686464 1612480 5685480 1612464 5685456 -1612392 5685168 1612384 5685136 1612376 5685128 1611504 5685680 -1612448 5685352 1612432 5685256 1612392 5685168 1611504 5685680 -1611288 5687432 1612216 5686664 1612216 5686496 1611504 5685680 -1611440 5685632 1611504 5685680 1612376 5685128 1611264 5685432 -1611504 5685680 1611648 5685832 1612272 5686464 1612480 5685480 -1611648 5685832 1612216 5686496 1612272 5686464 1612480 5685480 -1612216 5686496 1611648 5685832 1611504 5685680 1611288 5687432 -1612216 5686496 1612272 5686464 1611648 5685832 1611288 5687432 -1611504 5685680 1611224 5687456 1611288 5687432 1611648 5685832 -1611288 5687432 1612216 5686496 1611648 5685832 1611224 5687456 -1612272 5686464 1612552 5685552 1612480 5685480 1611648 5685832 -1612480 5685480 1611504 5685680 1611648 5685832 1612552 5685552 -1612272 5686464 1612552 5685552 1611648 5685832 1612216 5686496 -1611504 5685680 1611440 5685632 1611224 5687456 1611648 5685832 -1611440 5685632 1611264 5685432 1611224 5687456 1611648 5685832 -1611224 5687456 1611288 5687432 1611648 5685832 1611440 5685632 -1611504 5685680 1611648 5685832 1612480 5685480 1612464 5685456 -1611648 5685832 1612552 5685552 1612480 5685480 1612464 5685456 -1611504 5685680 1611648 5685832 1612464 5685456 1612448 5685352 -1611504 5685680 1611648 5685832 1612448 5685352 1612392 5685168 -1611648 5685832 1612480 5685480 1612464 5685456 1612448 5685352 -1611504 5685680 1611440 5685632 1611648 5685832 1612448 5685352 -1612216 5686496 1611648 5685832 1611288 5687432 1612216 5686664 -1612216 5686496 1612272 5686464 1611648 5685832 1612216 5686664 -1611648 5685832 1611224 5687456 1611288 5687432 1612216 5686664 -1611288 5687432 1612096 5687136 1612216 5686664 1611648 5685832 -1612272 5686464 1612336 5686456 1612552 5685552 1611648 5685832 -1612272 5686464 1611936 5686104 1611648 5685832 1612216 5686496 -1611936 5686104 1612552 5685552 1611648 5685832 1612216 5686496 -1611648 5685832 1612216 5686664 1612216 5686496 1611936 5686104 -1612216 5686496 1612272 5686464 1611936 5686104 1612216 5686664 -1611648 5685832 1612216 5686664 1611936 5686104 1612552 5685552 -1612272 5686464 1612552 5685552 1611936 5686104 1612216 5686496 -1611648 5685832 1611936 5686104 1612552 5685552 1612480 5685480 -1611648 5685832 1611936 5686104 1612480 5685480 1612464 5685456 -1611648 5685832 1612216 5686664 1611936 5686104 1612464 5685456 -1611936 5686104 1612272 5686464 1612552 5685552 1612480 5685480 -1611936 5686104 1612552 5685552 1612480 5685480 1612464 5685456 -1611648 5685832 1611936 5686104 1612464 5685456 1612448 5685352 -1611648 5685832 1611288 5687432 1612216 5686664 1611936 5686104 -1611648 5685832 1611288 5687432 1611936 5686104 1612464 5685456 -1612216 5686664 1612216 5686496 1611936 5686104 1611288 5687432 -1611648 5685832 1611224 5687456 1611288 5687432 1611936 5686104 -1611288 5687432 1612096 5687136 1612216 5686664 1611936 5686104 -1612552 5685552 1611936 5686104 1612272 5686464 1612336 5686456 -1612552 5685552 1612480 5685480 1611936 5686104 1612336 5686456 -1611936 5686104 1612216 5686496 1612272 5686464 1612336 5686456 -1612552 5685552 1611936 5686104 1612336 5686456 1612648 5685552 -1611936 5686104 1611992 5686232 1612216 5686664 1612216 5686496 -1611936 5686104 1611992 5686232 1612216 5686496 1612272 5686464 -1611992 5686232 1612216 5686664 1612216 5686496 1612272 5686464 -1611936 5686104 1611288 5687432 1611992 5686232 1612272 5686464 -1611936 5686104 1611992 5686232 1612272 5686464 1612336 5686456 -1611992 5686232 1612216 5686496 1612272 5686464 1612336 5686456 -1611936 5686104 1611288 5687432 1611992 5686232 1612336 5686456 -1611992 5686232 1611288 5687432 1612216 5686664 1612216 5686496 -1612216 5686664 1611992 5686232 1611288 5687432 1612096 5687136 -1611288 5687432 1611440 5687464 1612096 5687136 1611992 5686232 -1612216 5686664 1611992 5686232 1612096 5687136 1612128 5687096 -1612216 5686664 1612216 5686496 1611992 5686232 1612096 5687136 -1611288 5687432 1611992 5686232 1611936 5686104 1611648 5685832 -1611992 5686232 1612336 5686456 1611936 5686104 1611648 5685832 -1611288 5687432 1611992 5686232 1611648 5685832 1611224 5687456 -1611936 5686104 1611992 5686232 1612336 5686456 1612552 5685552 -1611936 5686104 1611992 5686232 1612552 5685552 1612480 5685480 -1611936 5686104 1611648 5685832 1611992 5686232 1612552 5685552 -1611992 5686232 1612272 5686464 1612336 5686456 1612552 5685552 -1612336 5686456 1612648 5685552 1612552 5685552 1611992 5686232 -1611992 5686232 1611648 5685832 1611288 5687432 1612096 5687136 -1612096 5687136 1611984 5686312 1611288 5687432 1611440 5687464 -1612096 5687136 1611984 5686312 1611440 5687464 1612088 5687168 -1612096 5687136 1611992 5686232 1611984 5686312 1611440 5687464 -1611992 5686232 1611984 5686312 1612096 5687136 1612216 5686664 -1612096 5687136 1612128 5687096 1612216 5686664 1611984 5686312 -1611992 5686232 1611984 5686312 1612216 5686664 1612216 5686496 -1611992 5686232 1611984 5686312 1612216 5686496 1612272 5686464 -1611992 5686232 1611984 5686312 1612272 5686464 1612336 5686456 -1611984 5686312 1612216 5686664 1612216 5686496 1612272 5686464 -1611984 5686312 1611440 5687464 1612096 5687136 1612216 5686664 -1611984 5686312 1612096 5687136 1612216 5686664 1612216 5686496 -1611992 5686232 1611288 5687432 1611984 5686312 1612272 5686464 -1611288 5687432 1611984 5686312 1611992 5686232 1611648 5685832 -1611288 5687432 1611984 5686312 1611648 5685832 1611224 5687456 -1611992 5686232 1611936 5686104 1611648 5685832 1611984 5686312 -1611984 5686312 1612272 5686464 1611992 5686232 1611936 5686104 -1611648 5685832 1611288 5687432 1611984 5686312 1611936 5686104 -1611984 5686312 1611648 5685832 1611288 5687432 1611440 5687464 -1611984 5686312 1611960 5686352 1611440 5687464 1612096 5687136 -1611440 5687464 1612088 5687168 1612096 5687136 1611960 5686352 -1611984 5686312 1611960 5686352 1612096 5687136 1612216 5686664 -1611960 5686352 1611440 5687464 1612096 5687136 1612216 5686664 -1612096 5687136 1612128 5687096 1612216 5686664 1611960 5686352 -1612096 5687136 1612128 5687096 1611960 5686352 1611440 5687464 -1612128 5687096 1612248 5686976 1612216 5686664 1611960 5686352 -1611984 5686312 1611960 5686352 1612216 5686664 1612216 5686496 -1611984 5686312 1611960 5686352 1612216 5686496 1612272 5686464 -1611960 5686352 1611288 5687432 1611440 5687464 1612096 5687136 -1611984 5686312 1611288 5687432 1611960 5686352 1612216 5686496 -1611288 5687432 1611960 5686352 1611984 5686312 1611648 5685832 -1611288 5687432 1611960 5686352 1611648 5685832 1611224 5687456 -1611288 5687432 1611440 5687464 1611960 5686352 1611648 5685832 -1611984 5686312 1611936 5686104 1611648 5685832 1611960 5686352 -1611984 5686312 1611992 5686232 1611936 5686104 1611960 5686352 -1611936 5686104 1611648 5685832 1611960 5686352 1611992 5686232 -1611960 5686352 1612216 5686496 1611984 5686312 1611992 5686232 -1611648 5685832 1611288 5687432 1611960 5686352 1611936 5686104 -1612216 5686664 1612216 5686496 1611960 5686352 1612128 5687096 -1611288 5687432 1611888 5686408 1611648 5685832 1611224 5687456 -1611648 5685832 1611440 5685632 1611224 5687456 1611888 5686408 -1611960 5686352 1611888 5686408 1611288 5687432 1611440 5687464 -1611888 5686408 1611960 5686352 1611648 5685832 1611224 5687456 -1611960 5686352 1611648 5685832 1611888 5686408 1611440 5687464 -1611288 5687432 1611440 5687464 1611888 5686408 1611224 5687456 -1611960 5686352 1611888 5686408 1611440 5687464 1612096 5687136 -1611440 5687464 1612088 5687168 1612096 5687136 1611888 5686408 -1611960 5686352 1611888 5686408 1612096 5687136 1612128 5687096 -1611960 5686352 1611888 5686408 1612128 5687096 1612216 5686664 -1611888 5686408 1612096 5687136 1612128 5687096 1612216 5686664 -1611888 5686408 1611288 5687432 1611440 5687464 1612096 5687136 -1611888 5686408 1611440 5687464 1612096 5687136 1612128 5687096 -1611960 5686352 1611648 5685832 1611888 5686408 1612216 5686664 -1612128 5687096 1612248 5686976 1612216 5686664 1611888 5686408 -1611648 5685832 1611888 5686408 1611960 5686352 1611936 5686104 -1611648 5685832 1611224 5687456 1611888 5686408 1611936 5686104 -1611888 5686408 1612216 5686664 1611960 5686352 1611936 5686104 -1611960 5686352 1611992 5686232 1611936 5686104 1611888 5686408 -1611960 5686352 1611992 5686232 1611888 5686408 1612216 5686664 -1611960 5686352 1611984 5686312 1611992 5686232 1611888 5686408 -1611936 5686104 1611648 5685832 1611888 5686408 1611992 5686232 -1611960 5686352 1611888 5686408 1612216 5686664 1612216 5686496 -1611888 5686408 1612128 5687096 1612216 5686664 1612216 5686496 -1611960 5686352 1611992 5686232 1611888 5686408 1612216 5686496 -1611960 5686352 1611888 5686408 1612216 5686496 1611984 5686312 -1611888 5686408 1611816 5686424 1611224 5687456 1611288 5687432 -1611224 5687456 1611816 5686424 1611648 5685832 1611440 5685632 -1611224 5687456 1611816 5686424 1611440 5685632 1611264 5685432 -1611648 5685832 1611816 5686424 1611888 5686408 1611936 5686104 -1611888 5686408 1611936 5686104 1611816 5686424 1611288 5687432 -1611816 5686424 1611440 5685632 1611224 5687456 1611288 5687432 -1611888 5686408 1611816 5686424 1611288 5687432 1611440 5687464 -1611816 5686424 1611224 5687456 1611288 5687432 1611440 5687464 -1611888 5686408 1611816 5686424 1611440 5687464 1612096 5687136 -1611440 5687464 1612088 5687168 1612096 5687136 1611816 5686424 -1611888 5686408 1611816 5686424 1612096 5687136 1612128 5687096 -1611888 5686408 1611816 5686424 1612128 5687096 1612216 5686664 -1611888 5686408 1611816 5686424 1612216 5686664 1612216 5686496 -1611816 5686424 1611440 5687464 1612096 5687136 1612128 5687096 -1611816 5686424 1612096 5687136 1612128 5687096 1612216 5686664 -1611888 5686408 1611936 5686104 1611816 5686424 1612216 5686664 -1611816 5686424 1611288 5687432 1611440 5687464 1612096 5687136 -1611648 5685832 1611504 5685680 1611440 5685632 1611816 5686424 -1612128 5687096 1612248 5686976 1612216 5686664 1611816 5686424 -1611816 5686424 1611936 5686104 1611648 5685832 1611440 5685632 -1611888 5686408 1611992 5686232 1611936 5686104 1611816 5686424 -1611936 5686104 1611648 5685832 1611816 5686424 1611992 5686232 -1611888 5686408 1611992 5686232 1611816 5686424 1612216 5686664 -1611888 5686408 1611960 5686352 1611992 5686232 1611816 5686424 -1611224 5687456 1611712 5686408 1611440 5685632 1611264 5685432 -1611440 5685632 1611712 5686408 1611816 5686424 1611648 5685832 -1611816 5686424 1611712 5686408 1611224 5687456 1611288 5687432 -1611816 5686424 1611712 5686408 1611288 5687432 1611440 5687464 -1611712 5686408 1611224 5687456 1611288 5687432 1611440 5687464 -1611816 5686424 1611712 5686408 1611440 5687464 1612096 5687136 -1611440 5687464 1612088 5687168 1612096 5687136 1611712 5686408 -1611712 5686408 1611288 5687432 1611440 5687464 1612096 5687136 -1611816 5686424 1611712 5686408 1612096 5687136 1612128 5687096 -1611440 5685632 1611712 5686408 1611648 5685832 1611504 5685680 -1611712 5686408 1611816 5686424 1611648 5685832 1611504 5685680 -1611712 5686408 1612096 5687136 1611816 5686424 1611648 5685832 -1611816 5686424 1611936 5686104 1611648 5685832 1611712 5686408 -1611648 5685832 1611504 5685680 1611712 5686408 1611936 5686104 -1611816 5686424 1611992 5686232 1611936 5686104 1611712 5686408 -1611816 5686424 1611936 5686104 1611712 5686408 1612096 5687136 -1611712 5686408 1611440 5685632 1611224 5687456 1611288 5687432 -1611440 5685632 1611224 5687456 1611712 5686408 1611504 5685680 -1611224 5687456 1611392 5686312 1611440 5685632 1611264 5685432 -1611224 5687456 1611392 5686312 1611264 5685432 1610768 5684904 -1611264 5685432 1611184 5685272 1610768 5684904 1611392 5686312 -1611392 5686312 1611440 5685632 1611264 5685432 1610768 5684904 -1611224 5687456 1611392 5686312 1610768 5684904 1610672 5684808 -1611392 5686312 1611264 5685432 1610768 5684904 1610672 5684808 -1611712 5686408 1611392 5686312 1611224 5687456 1611288 5687432 -1611712 5686408 1611392 5686312 1611288 5687432 1611440 5687464 -1611712 5686408 1611440 5685632 1611392 5686312 1611288 5687432 -1611440 5685632 1611392 5686312 1611712 5686408 1611504 5685680 -1611712 5686408 1611648 5685832 1611504 5685680 1611392 5686312 -1611712 5686408 1611936 5686104 1611648 5685832 1611392 5686312 -1611392 5686312 1611288 5687432 1611712 5686408 1611648 5685832 -1611504 5685680 1611440 5685632 1611392 5686312 1611648 5685832 -1611224 5687456 1611392 5686312 1610672 5684808 1610536 5684592 -1611224 5687456 1611288 5687432 1611392 5686312 1610672 5684808 -1611392 5686312 1611504 5685680 1611440 5685632 1611264 5685432 -1610672 5684808 1611224 5686216 1611392 5686312 1610768 5684904 -1611392 5686312 1611264 5685432 1610768 5684904 1611224 5686216 -1611264 5685432 1611184 5685272 1610768 5684904 1611224 5686216 -1611264 5685432 1611184 5685272 1611224 5686216 1611392 5686312 -1611392 5686312 1611440 5685632 1611264 5685432 1611224 5686216 -1611264 5685432 1611184 5685272 1611224 5686216 1611440 5685632 -1610672 5684808 1611224 5687456 1611224 5686216 1610768 5684904 -1611184 5685272 1610840 5684936 1610768 5684904 1611224 5686216 -1610768 5684904 1610672 5684808 1611224 5686216 1611184 5685272 -1611224 5687456 1611224 5686216 1610672 5684808 1610536 5684592 -1611392 5686312 1611224 5686216 1611224 5687456 1611288 5687432 -1611224 5686216 1611224 5687456 1611392 5686312 1611440 5685632 -1611392 5686312 1611504 5685680 1611440 5685632 1611224 5686216 -1611440 5685632 1611264 5685432 1611224 5686216 1611504 5685680 -1611392 5686312 1611648 5685832 1611504 5685680 1611224 5686216 -1611392 5686312 1611712 5686408 1611648 5685832 1611224 5686216 -1611392 5686312 1611648 5685832 1611224 5686216 1611224 5687456 -1611504 5685680 1611440 5685632 1611224 5686216 1611648 5685832 -1610672 5684808 1611136 5686104 1611224 5686216 1610768 5684904 -1610672 5684808 1611224 5687456 1611136 5686104 1610768 5684904 -1611224 5686216 1611184 5685272 1610768 5684904 1611136 5686104 -1611224 5686216 1611264 5685432 1611184 5685272 1611136 5686104 -1611224 5686216 1611440 5685632 1611264 5685432 1611136 5686104 -1611264 5685432 1611184 5685272 1611136 5686104 1611440 5685632 -1611224 5686216 1611504 5685680 1611440 5685632 1611136 5686104 -1611440 5685632 1611264 5685432 1611136 5686104 1611504 5685680 -1610768 5684904 1610672 5684808 1611136 5686104 1611184 5685272 -1611184 5685272 1610840 5684936 1610768 5684904 1611136 5686104 -1611184 5685272 1610768 5684904 1611136 5686104 1611264 5685432 -1611224 5687456 1611136 5686104 1610672 5684808 1610536 5684592 -1611224 5687456 1611224 5686216 1611136 5686104 1610536 5684592 -1611136 5686104 1610768 5684904 1610672 5684808 1610536 5684592 -1611224 5687456 1611136 5686104 1610536 5684592 1601088 5681704 -1611224 5686216 1611648 5685832 1611504 5685680 1611136 5686104 -1611504 5685680 1611440 5685632 1611136 5686104 1611648 5685832 -1611224 5686216 1611392 5686312 1611648 5685832 1611136 5686104 -1611224 5686216 1611136 5686104 1611224 5687456 1611392 5686312 -1611136 5686104 1611224 5687456 1611224 5686216 1611648 5685832 -1611136 5686104 1611016 5685968 1611224 5687456 1611224 5686216 -1611224 5687456 1611016 5685968 1610536 5684592 1601088 5681704 -1611224 5687456 1611016 5685968 1601088 5681704 1611264 5689408 -1611224 5687456 1611136 5686104 1611016 5685968 1601088 5681704 -1610536 5684592 1601128 5681664 1601088 5681704 1611016 5685968 -1611016 5685968 1611136 5686104 1610536 5684592 1601088 5681704 -1610536 5684592 1611016 5685968 1611136 5686104 1610672 5684808 -1611016 5685968 1611224 5687456 1611136 5686104 1610672 5684808 -1611136 5686104 1610768 5684904 1610672 5684808 1611016 5685968 -1611136 5686104 1611184 5685272 1610768 5684904 1611016 5685968 -1611136 5686104 1611184 5685272 1611016 5685968 1611224 5687456 -1610768 5684904 1610672 5684808 1611016 5685968 1611184 5685272 -1611184 5685272 1610840 5684936 1610768 5684904 1611016 5685968 -1611184 5685272 1610840 5684936 1611016 5685968 1611136 5686104 -1610768 5684904 1610672 5684808 1611016 5685968 1610840 5684936 -1611136 5686104 1611264 5685432 1611184 5685272 1611016 5685968 -1611136 5686104 1611440 5685632 1611264 5685432 1611016 5685968 -1611136 5686104 1611504 5685680 1611440 5685632 1611016 5685968 -1611184 5685272 1610840 5684936 1611016 5685968 1611264 5685432 -1611136 5686104 1611440 5685632 1611016 5685968 1611224 5687456 -1611264 5685432 1611184 5685272 1611016 5685968 1611440 5685632 -1611184 5685272 1611088 5685000 1610840 5684936 1611016 5685968 -1610536 5684592 1601088 5681704 1611016 5685968 1610672 5684808 -1610672 5684808 1610536 5684592 1611016 5685968 1610768 5684904 -1601088 5681704 1610960 5685920 1610536 5684592 1601128 5681664 -1611016 5685968 1610960 5685920 1601088 5681704 1611224 5687456 -1601088 5681704 1611264 5689408 1611224 5687456 1610960 5685920 -1611016 5685968 1610960 5685920 1611224 5687456 1611136 5686104 -1611224 5687456 1611224 5686216 1611136 5686104 1610960 5685920 -1610960 5685920 1601088 5681704 1611224 5687456 1611136 5686104 -1611016 5685968 1610536 5684592 1610960 5685920 1611136 5686104 -1610536 5684592 1610960 5685920 1611016 5685968 1610672 5684808 -1610960 5685920 1611136 5686104 1611016 5685968 1610672 5684808 -1610960 5685920 1610536 5684592 1601088 5681704 1611224 5687456 -1610536 5684592 1601088 5681704 1610960 5685920 1610672 5684808 -1611016 5685968 1610768 5684904 1610672 5684808 1610960 5685920 -1611016 5685968 1610840 5684936 1610768 5684904 1610960 5685920 -1611016 5685968 1611184 5685272 1610840 5684936 1610960 5685920 -1611016 5685968 1611264 5685432 1611184 5685272 1610960 5685920 -1610840 5684936 1610768 5684904 1610960 5685920 1611184 5685272 -1611184 5685272 1610840 5684936 1610960 5685920 1611264 5685432 -1611016 5685968 1611440 5685632 1611264 5685432 1610960 5685920 -1611016 5685968 1611136 5686104 1611440 5685632 1610960 5685920 -1611264 5685432 1611184 5685272 1610960 5685920 1611440 5685632 -1611184 5685272 1611088 5685000 1610840 5684936 1610960 5685920 -1611016 5685968 1611440 5685632 1610960 5685920 1611136 5686104 -1610672 5684808 1610536 5684592 1610960 5685920 1610768 5684904 -1610768 5684904 1610672 5684808 1610960 5685920 1610840 5684936 -1601088 5681704 1610656 5685736 1610536 5684592 1601128 5681664 -1610960 5685920 1610656 5685736 1601088 5681704 1611224 5687456 -1610656 5685736 1610536 5684592 1601088 5681704 1611224 5687456 -1601088 5681704 1611264 5689408 1611224 5687456 1610656 5685736 -1601088 5681704 1611264 5689408 1610656 5685736 1610536 5684592 -1611264 5689408 1611360 5688736 1611224 5687456 1610656 5685736 -1601088 5681704 1602016 5695848 1611264 5689408 1610656 5685736 -1601088 5681704 1602016 5695848 1610656 5685736 1610536 5684592 -1602016 5695848 1611264 5689480 1611264 5689408 1610656 5685736 -1611264 5689408 1611224 5687456 1610656 5685736 1602016 5695848 -1610960 5685920 1610656 5685736 1611224 5687456 1611136 5686104 -1611224 5687456 1611224 5686216 1611136 5686104 1610656 5685736 -1610960 5685920 1610656 5685736 1611136 5686104 1611016 5685968 -1611224 5687456 1611136 5686104 1610656 5685736 1611264 5689408 -1610960 5685920 1610536 5684592 1610656 5685736 1611136 5686104 -1610536 5684592 1610656 5685736 1610960 5685920 1610672 5684808 -1610536 5684592 1601088 5681704 1610656 5685736 1610672 5684808 -1610960 5685920 1610768 5684904 1610672 5684808 1610656 5685736 -1610656 5685736 1611136 5686104 1610960 5685920 1610768 5684904 -1610672 5684808 1610536 5684592 1610656 5685736 1610768 5684904 -1601088 5681704 1600992 5681736 1602016 5695848 1610656 5685736 -1610960 5685920 1610840 5684936 1610768 5684904 1610656 5685736 -1610960 5685920 1611184 5685272 1610840 5684936 1610656 5685736 -1610960 5685920 1611264 5685432 1611184 5685272 1610656 5685736 -1610960 5685920 1611440 5685632 1611264 5685432 1610656 5685736 -1611184 5685272 1610840 5684936 1610656 5685736 1611264 5685432 -1611184 5685272 1611088 5685000 1610840 5684936 1610656 5685736 -1610768 5684904 1610672 5684808 1610656 5685736 1610840 5684936 -1610960 5685920 1611264 5685432 1610656 5685736 1611136 5686104 -1610840 5684936 1610768 5684904 1610656 5685736 1611184 5685272 -1601088 5681704 1610448 5685656 1610656 5685736 1610536 5684592 -1610448 5685656 1602016 5695848 1610656 5685736 1610536 5684592 -1610656 5685736 1610672 5684808 1610536 5684592 1610448 5685656 -1610536 5684592 1601088 5681704 1610448 5685656 1610672 5684808 -1610656 5685736 1610672 5684808 1610448 5685656 1602016 5695848 -1610656 5685736 1610448 5685656 1602016 5695848 1611264 5689408 -1610656 5685736 1610672 5684808 1610448 5685656 1611264 5689408 -1610448 5685656 1601088 5681704 1602016 5695848 1611264 5689408 -1602016 5695848 1611264 5689480 1611264 5689408 1610448 5685656 -1610656 5685736 1610448 5685656 1611264 5689408 1611224 5687456 -1610656 5685736 1610672 5684808 1610448 5685656 1611224 5687456 -1611264 5689408 1611360 5688736 1611224 5687456 1610448 5685656 -1610448 5685656 1602016 5695848 1611264 5689408 1611224 5687456 -1601088 5681704 1610448 5685656 1610536 5684592 1601128 5681664 -1610448 5685656 1610672 5684808 1610536 5684592 1601128 5681664 -1610536 5684592 1601592 5681216 1601128 5681664 1610448 5685656 -1610536 5684592 1601592 5681216 1610448 5685656 1610672 5684808 -1601592 5681216 1601160 5681616 1601128 5681664 1610448 5685656 -1601128 5681664 1601088 5681704 1610448 5685656 1601592 5681216 -1610656 5685736 1610448 5685656 1611224 5687456 1611136 5686104 -1610656 5685736 1610768 5684904 1610672 5684808 1610448 5685656 -1610656 5685736 1610768 5684904 1610448 5685656 1611224 5687456 -1610672 5684808 1610536 5684592 1610448 5685656 1610768 5684904 -1610656 5685736 1610840 5684936 1610768 5684904 1610448 5685656 -1610656 5685736 1610840 5684936 1610448 5685656 1611224 5687456 -1610768 5684904 1610672 5684808 1610448 5685656 1610840 5684936 -1602016 5695848 1610448 5685656 1601088 5681704 1600992 5681736 -1610656 5685736 1611184 5685272 1610840 5684936 1610448 5685656 -1601088 5681704 1602016 5695848 1610448 5685656 1601128 5681664 -1610536 5684592 1610432 5683632 1601592 5681216 1610448 5685656 -1610448 5685656 1610312 5685648 1602016 5695848 1611264 5689408 -1610448 5685656 1601088 5681704 1610312 5685648 1611264 5689408 -1602016 5695848 1611264 5689480 1611264 5689408 1610312 5685648 -1610448 5685656 1610312 5685648 1611264 5689408 1611224 5687456 -1610312 5685648 1602016 5695848 1611264 5689408 1611224 5687456 -1610448 5685656 1601088 5681704 1610312 5685648 1611224 5687456 -1611264 5689408 1611360 5688736 1611224 5687456 1610312 5685648 -1610448 5685656 1610312 5685648 1611224 5687456 1610656 5685736 -1610448 5685656 1601088 5681704 1610312 5685648 1610656 5685736 -1610312 5685648 1611264 5689408 1611224 5687456 1610656 5685736 -1611224 5687456 1611136 5686104 1610656 5685736 1610312 5685648 -1611224 5687456 1611136 5686104 1610312 5685648 1611264 5689408 -1610656 5685736 1610448 5685656 1610312 5685648 1611136 5686104 -1611224 5687456 1611224 5686216 1611136 5686104 1610312 5685648 -1611136 5686104 1610960 5685920 1610656 5685736 1610312 5685648 -1602016 5695848 1610312 5685648 1601088 5681704 1600992 5681736 -1601088 5681704 1610312 5685648 1610448 5685656 1601128 5681664 -1610312 5685648 1610656 5685736 1610448 5685656 1601128 5681664 -1610448 5685656 1601592 5681216 1601128 5681664 1610312 5685648 -1610448 5685656 1601592 5681216 1610312 5685648 1610656 5685736 -1610448 5685656 1610536 5684592 1601592 5681216 1610312 5685648 -1610448 5685656 1610672 5684808 1610536 5684592 1610312 5685648 -1610448 5685656 1610768 5684904 1610672 5684808 1610312 5685648 -1610672 5684808 1610536 5684592 1610312 5685648 1610768 5684904 -1610448 5685656 1610768 5684904 1610312 5685648 1610656 5685736 -1610536 5684592 1601592 5681216 1610312 5685648 1610672 5684808 -1601592 5681216 1601160 5681616 1601128 5681664 1610312 5685648 -1601592 5681216 1601128 5681664 1610312 5685648 1610536 5684592 -1610448 5685656 1610840 5684936 1610768 5684904 1610312 5685648 -1601128 5681664 1601088 5681704 1610312 5685648 1601592 5681216 -1610312 5685648 1601088 5681704 1602016 5695848 1611264 5689408 -1601088 5681704 1602016 5695848 1610312 5685648 1601128 5681664 -1610536 5684592 1610432 5683632 1601592 5681216 1610312 5685648 -1610432 5683632 1610432 5683584 1601592 5681216 1610312 5685648 -1610536 5684592 1610432 5683632 1610312 5685648 1610672 5684808 -1601592 5681216 1601128 5681664 1610312 5685648 1610432 5683632 -1610536 5684592 1610496 5683784 1610432 5683632 1610312 5685648 -1602016 5695848 1610200 5685672 1601088 5681704 1600992 5681736 -1610312 5685648 1610200 5685672 1602016 5695848 1611264 5689408 -1610312 5685648 1610200 5685672 1611264 5689408 1611224 5687456 -1611264 5689408 1611360 5688736 1611224 5687456 1610200 5685672 -1602016 5695848 1611264 5689480 1611264 5689408 1610200 5685672 -1610312 5685648 1610200 5685672 1611224 5687456 1611136 5686104 -1610200 5685672 1611264 5689408 1611224 5687456 1611136 5686104 -1611224 5687456 1611224 5686216 1611136 5686104 1610200 5685672 -1610312 5685648 1610200 5685672 1611136 5686104 1610656 5685736 -1610200 5685672 1611224 5687456 1611136 5686104 1610656 5685736 -1610312 5685648 1610200 5685672 1610656 5685736 1610448 5685656 -1611136 5686104 1610960 5685920 1610656 5685736 1610200 5685672 -1611136 5686104 1610960 5685920 1610200 5685672 1611224 5687456 -1611136 5686104 1611016 5685968 1610960 5685920 1610200 5685672 -1610200 5685672 1610960 5685920 1610656 5685736 1610448 5685656 -1610200 5685672 1602016 5695848 1611264 5689408 1611224 5687456 -1610312 5685648 1601088 5681704 1610200 5685672 1610448 5685656 -1601088 5681704 1610200 5685672 1610312 5685648 1601128 5681664 -1601088 5681704 1602016 5695848 1610200 5685672 1601128 5681664 -1610312 5685648 1601592 5681216 1601128 5681664 1610200 5685672 -1601592 5681216 1601160 5681616 1601128 5681664 1610200 5685672 -1610312 5685648 1610432 5683632 1601592 5681216 1610200 5685672 -1610432 5683632 1610432 5683584 1601592 5681216 1610200 5685672 -1601592 5681216 1601128 5681664 1610200 5685672 1610432 5683632 -1610200 5685672 1610448 5685656 1610312 5685648 1610432 5683632 -1601128 5681664 1601088 5681704 1610200 5685672 1601592 5681216 -1610200 5685672 1601088 5681704 1602016 5695848 1611264 5689408 -1610312 5685648 1610536 5684592 1610432 5683632 1610200 5685672 -1610312 5685648 1610672 5684808 1610536 5684592 1610200 5685672 -1610312 5685648 1610768 5684904 1610672 5684808 1610200 5685672 -1610432 5683632 1601592 5681216 1610200 5685672 1610536 5684592 -1610536 5684592 1610496 5683784 1610432 5683632 1610200 5685672 -1610312 5685648 1610672 5684808 1610200 5685672 1610448 5685656 -1610536 5684592 1610432 5683632 1610200 5685672 1610672 5684808 -1602016 5695848 1610168 5685696 1601088 5681704 1600992 5681736 -1601088 5681704 1610168 5685696 1610200 5685672 1601128 5681664 -1610168 5685696 1602016 5695848 1610200 5685672 1601128 5681664 -1601088 5681704 1602016 5695848 1610168 5685696 1601128 5681664 -1610200 5685672 1601592 5681216 1601128 5681664 1610168 5685696 -1601592 5681216 1601160 5681616 1601128 5681664 1610168 5685696 -1610200 5685672 1601592 5681216 1610168 5685696 1602016 5695848 -1601128 5681664 1601088 5681704 1610168 5685696 1601592 5681216 -1610200 5685672 1610432 5683632 1601592 5681216 1610168 5685696 -1610432 5683632 1610432 5683584 1601592 5681216 1610168 5685696 -1610200 5685672 1610536 5684592 1610432 5683632 1610168 5685696 -1610536 5684592 1610496 5683784 1610432 5683632 1610168 5685696 -1610200 5685672 1610536 5684592 1610168 5685696 1602016 5695848 -1610432 5683632 1601592 5681216 1610168 5685696 1610536 5684592 -1601592 5681216 1601128 5681664 1610168 5685696 1610432 5683632 -1610200 5685672 1610168 5685696 1602016 5695848 1611264 5689408 -1602016 5695848 1611264 5689480 1611264 5689408 1610168 5685696 -1610200 5685672 1610536 5684592 1610168 5685696 1611264 5689408 -1610168 5685696 1601088 5681704 1602016 5695848 1611264 5689408 -1610200 5685672 1610168 5685696 1611264 5689408 1611224 5687456 -1610200 5685672 1610168 5685696 1611224 5687456 1611136 5686104 -1611264 5689408 1611360 5688736 1611224 5687456 1610168 5685696 -1611360 5688736 1611408 5688288 1611224 5687456 1610168 5685696 -1611264 5689408 1611360 5688848 1611360 5688736 1610168 5685696 -1610200 5685672 1610168 5685696 1611136 5686104 1610960 5685920 -1610168 5685696 1611224 5687456 1611136 5686104 1610960 5685920 -1611224 5687456 1611224 5686216 1611136 5686104 1610168 5685696 -1611136 5686104 1611016 5685968 1610960 5685920 1610168 5685696 -1610200 5685672 1610168 5685696 1610960 5685920 1610656 5685736 -1610168 5685696 1611136 5686104 1610960 5685920 1610656 5685736 -1610200 5685672 1610168 5685696 1610656 5685736 1610448 5685656 -1610200 5685672 1610168 5685696 1610448 5685656 1610312 5685648 -1610168 5685696 1610960 5685920 1610656 5685736 1610448 5685656 -1610168 5685696 1610656 5685736 1610448 5685656 1610312 5685648 -1610200 5685672 1610536 5684592 1610168 5685696 1610312 5685648 -1610168 5685696 1611360 5688736 1611224 5687456 1611136 5686104 -1610168 5685696 1602016 5695848 1611264 5689408 1611360 5688736 -1610200 5685672 1610672 5684808 1610536 5684592 1610168 5685696 -1602016 5695848 1610080 5685800 1601088 5681704 1600992 5681736 -1602016 5695848 1610168 5685696 1610080 5685800 1600992 5681736 -1610080 5685800 1610168 5685696 1601088 5681704 1600992 5681736 -1602016 5695848 1610080 5685800 1600992 5681736 1601824 5695840 -1610168 5685696 1610080 5685800 1602016 5695848 1611264 5689408 -1610080 5685800 1600992 5681736 1602016 5695848 1611264 5689408 -1602016 5695848 1611264 5689480 1611264 5689408 1610080 5685800 -1602016 5695848 1611264 5689480 1610080 5685800 1600992 5681736 -1602016 5695848 1602112 5695896 1611264 5689480 1610080 5685800 -1611264 5689408 1610168 5685696 1610080 5685800 1611264 5689480 -1610168 5685696 1601088 5681704 1610080 5685800 1611264 5689408 -1601088 5681704 1610080 5685800 1610168 5685696 1601128 5681664 -1601088 5681704 1600992 5681736 1610080 5685800 1601128 5681664 -1610168 5685696 1601592 5681216 1601128 5681664 1610080 5685800 -1601592 5681216 1601160 5681616 1601128 5681664 1610080 5685800 -1610080 5685800 1611264 5689408 1610168 5685696 1601592 5681216 -1601128 5681664 1601088 5681704 1610080 5685800 1601592 5681216 -1610168 5685696 1610432 5683632 1601592 5681216 1610080 5685800 -1610432 5683632 1610432 5683584 1601592 5681216 1610080 5685800 -1601592 5681216 1601128 5681664 1610080 5685800 1610432 5683632 -1610168 5685696 1610432 5683632 1610080 5685800 1611264 5689408 -1610168 5685696 1610536 5684592 1610432 5683632 1610080 5685800 -1610168 5685696 1610200 5685672 1610536 5684592 1610080 5685800 -1610536 5684592 1610496 5683784 1610432 5683632 1610080 5685800 -1610168 5685696 1610536 5684592 1610080 5685800 1611264 5689408 -1610432 5683632 1601592 5681216 1610080 5685800 1610536 5684592 -1610168 5685696 1610080 5685800 1611264 5689408 1611360 5688736 -1611264 5689408 1611360 5688848 1611360 5688736 1610080 5685800 -1610168 5685696 1610080 5685800 1611360 5688736 1611224 5687456 -1611360 5688736 1611408 5688288 1611224 5687456 1610080 5685800 -1610080 5685800 1611264 5689480 1611264 5689408 1611360 5688736 -1610168 5685696 1610536 5684592 1610080 5685800 1611224 5687456 -1610168 5685696 1610080 5685800 1611224 5687456 1611136 5686104 -1610168 5685696 1610080 5685800 1611136 5686104 1610960 5685920 -1610080 5685800 1611360 5688736 1611224 5687456 1611136 5686104 -1610168 5685696 1610080 5685800 1610960 5685920 1610656 5685736 -1610080 5685800 1611136 5686104 1610960 5685920 1610656 5685736 -1611224 5687456 1611224 5686216 1611136 5686104 1610080 5685800 -1611224 5687456 1611224 5686216 1610080 5685800 1611360 5688736 -1611136 5686104 1611016 5685968 1610960 5685920 1610080 5685800 -1610960 5685920 1610656 5685736 1610080 5685800 1611016 5685968 -1610168 5685696 1610080 5685800 1610656 5685736 1610448 5685656 -1610080 5685800 1610960 5685920 1610656 5685736 1610448 5685656 -1610168 5685696 1610080 5685800 1610448 5685656 1610312 5685648 -1610168 5685696 1610080 5685800 1610312 5685648 1610200 5685672 -1610080 5685800 1610656 5685736 1610448 5685656 1610312 5685648 -1610168 5685696 1610536 5684592 1610080 5685800 1610312 5685648 -1610080 5685800 1611224 5686216 1611136 5686104 1611016 5685968 -1610080 5685800 1611264 5689408 1611360 5688736 1611224 5687456 -1611224 5687456 1611392 5686312 1611224 5686216 1610080 5685800 -1602016 5695848 1610032 5685920 1610080 5685800 1600992 5681736 -1610032 5685920 1611264 5689480 1610080 5685800 1600992 5681736 -1611264 5689480 1610032 5685920 1602016 5695848 1602112 5695896 -1610080 5685800 1610032 5685920 1611264 5689480 1611264 5689408 -1610080 5685800 1600992 5681736 1610032 5685920 1611264 5689408 -1610032 5685920 1602016 5695848 1611264 5689480 1611264 5689408 -1602016 5695848 1611264 5689480 1610032 5685920 1600992 5681736 -1602016 5695848 1610032 5685920 1600992 5681736 1601824 5695840 -1610080 5685800 1601088 5681704 1600992 5681736 1610032 5685920 -1600992 5681736 1602016 5695848 1610032 5685920 1601088 5681704 -1610080 5685800 1601088 5681704 1610032 5685920 1611264 5689408 -1610080 5685800 1601128 5681664 1601088 5681704 1610032 5685920 -1610080 5685800 1601128 5681664 1610032 5685920 1611264 5689408 -1601088 5681704 1600992 5681736 1610032 5685920 1601128 5681664 -1610080 5685800 1610032 5685920 1611264 5689408 1611360 5688736 -1610080 5685800 1601128 5681664 1610032 5685920 1611360 5688736 -1611264 5689408 1611360 5688848 1611360 5688736 1610032 5685920 -1610032 5685920 1611264 5689480 1611264 5689408 1611360 5688736 -1610080 5685800 1601592 5681216 1601128 5681664 1610032 5685920 -1610080 5685800 1601592 5681216 1610032 5685920 1611360 5688736 -1601128 5681664 1601088 5681704 1610032 5685920 1601592 5681216 -1601592 5681216 1601160 5681616 1601128 5681664 1610032 5685920 -1610080 5685800 1610432 5683632 1601592 5681216 1610032 5685920 -1610080 5685800 1610032 5685920 1611360 5688736 1611224 5687456 -1610080 5685800 1601592 5681216 1610032 5685920 1611224 5687456 -1611360 5688736 1611408 5688288 1611224 5687456 1610032 5685920 -1610080 5685800 1610032 5685920 1611224 5687456 1611224 5686216 -1610080 5685800 1601592 5681216 1610032 5685920 1611224 5686216 -1610080 5685800 1610032 5685920 1611224 5686216 1611136 5686104 -1610080 5685800 1601592 5681216 1610032 5685920 1611136 5686104 -1610032 5685920 1611224 5687456 1611224 5686216 1611136 5686104 -1610032 5685920 1611264 5689408 1611360 5688736 1611224 5687456 -1610080 5685800 1610032 5685920 1611136 5686104 1611016 5685968 -1610080 5685800 1601592 5681216 1610032 5685920 1611016 5685968 -1610032 5685920 1611224 5686216 1611136 5686104 1611016 5685968 -1610080 5685800 1610032 5685920 1611016 5685968 1610960 5685920 -1610080 5685800 1610032 5685920 1610960 5685920 1610656 5685736 -1610080 5685800 1601592 5681216 1610032 5685920 1610656 5685736 -1610080 5685800 1610032 5685920 1610656 5685736 1610448 5685656 -1610032 5685920 1610960 5685920 1610656 5685736 1610448 5685656 -1610080 5685800 1601592 5681216 1610032 5685920 1610448 5685656 -1610032 5685920 1611016 5685968 1610960 5685920 1610656 5685736 -1610080 5685800 1610032 5685920 1610448 5685656 1610312 5685648 -1610032 5685920 1611136 5686104 1611016 5685968 1610960 5685920 -1610032 5685920 1611360 5688736 1611224 5687456 1611224 5686216 -1611224 5687456 1611392 5686312 1611224 5686216 1610032 5685920 -1610032 5685920 1610032 5685992 1611264 5689480 1611264 5689408 -1610032 5685920 1602016 5695848 1610032 5685992 1611264 5689408 -1611264 5689480 1610032 5685992 1602016 5695848 1602112 5695896 -1610032 5685920 1610032 5685992 1611264 5689408 1611360 5688736 -1610032 5685992 1611264 5689480 1611264 5689408 1611360 5688736 -1610032 5685920 1602016 5695848 1610032 5685992 1611360 5688736 -1611264 5689408 1611360 5688848 1611360 5688736 1610032 5685992 -1602016 5695848 1610032 5685992 1610032 5685920 1600992 5681736 -1610032 5685920 1601088 5681704 1600992 5681736 1610032 5685992 -1610032 5685992 1611360 5688736 1610032 5685920 1601088 5681704 -1600992 5681736 1602016 5695848 1610032 5685992 1601088 5681704 -1610032 5685992 1602016 5695848 1611264 5689480 1611264 5689408 -1602016 5695848 1610032 5685992 1600992 5681736 1601824 5695840 -1610032 5685920 1601128 5681664 1601088 5681704 1610032 5685992 -1610032 5685920 1610032 5685992 1611360 5688736 1611224 5687456 -1610032 5685920 1601088 5681704 1610032 5685992 1611224 5687456 -1611360 5688736 1611408 5688288 1611224 5687456 1610032 5685992 -1610032 5685992 1611264 5689408 1611360 5688736 1611224 5687456 -1610032 5685920 1610032 5685992 1611224 5687456 1611224 5686216 -1610032 5685920 1601088 5681704 1610032 5685992 1611224 5686216 -1610032 5685920 1610032 5685992 1611224 5686216 1611136 5686104 -1610032 5685920 1601088 5681704 1610032 5685992 1611136 5686104 -1610032 5685920 1610032 5685992 1611136 5686104 1611016 5685968 -1610032 5685920 1601088 5681704 1610032 5685992 1611016 5685968 -1610032 5685992 1611224 5686216 1611136 5686104 1611016 5685968 -1610032 5685992 1611360 5688736 1611224 5687456 1611224 5686216 -1610032 5685920 1610032 5685992 1611016 5685968 1610960 5685920 -1610032 5685920 1601088 5681704 1610032 5685992 1610960 5685920 -1610032 5685992 1611136 5686104 1611016 5685968 1610960 5685920 -1610032 5685920 1610032 5685992 1610960 5685920 1610656 5685736 -1610032 5685920 1610032 5685992 1610656 5685736 1610448 5685656 -1610032 5685920 1601088 5681704 1610032 5685992 1610448 5685656 -1610032 5685920 1610032 5685992 1610448 5685656 1610080 5685800 -1610032 5685992 1610656 5685736 1610448 5685656 1610080 5685800 -1610032 5685920 1601088 5681704 1610032 5685992 1610080 5685800 -1610032 5685992 1610960 5685920 1610656 5685736 1610448 5685656 -1610448 5685656 1610312 5685648 1610080 5685800 1610032 5685992 -1610448 5685656 1610312 5685648 1610032 5685992 1610656 5685736 -1610080 5685800 1610032 5685920 1610032 5685992 1610312 5685648 -1610312 5685648 1610168 5685696 1610080 5685800 1610032 5685992 -1610032 5685992 1611016 5685968 1610960 5685920 1610656 5685736 -1610032 5685992 1611224 5687456 1611224 5686216 1611136 5686104 -1602016 5695848 1611264 5689480 1610032 5685992 1600992 5681736 -1611224 5687456 1611392 5686312 1611224 5686216 1610032 5685992 -1611264 5689408 1610096 5686136 1610032 5685992 1611264 5689480 -1611360 5688736 1610096 5686136 1611264 5689408 1611360 5688848 -1610032 5685992 1610096 5686136 1611360 5688736 1611224 5687456 -1611360 5688736 1611408 5688288 1611224 5687456 1610096 5686136 -1610032 5685992 1602016 5695848 1611264 5689480 1610096 5686136 -1611264 5689480 1611264 5689408 1610096 5686136 1602016 5695848 -1602016 5695848 1602112 5695896 1611264 5689480 1610096 5686136 -1610096 5686136 1611224 5687456 1610032 5685992 1602016 5695848 -1610032 5685992 1610096 5686136 1611224 5687456 1611224 5686216 -1610096 5686136 1611360 5688736 1611224 5687456 1611224 5686216 -1610032 5685992 1602016 5695848 1610096 5686136 1611224 5686216 -1610032 5685992 1610096 5686136 1611224 5686216 1611136 5686104 -1610032 5685992 1610096 5686136 1611136 5686104 1611016 5685968 -1610032 5685992 1602016 5695848 1610096 5686136 1611016 5685968 -1610032 5685992 1610096 5686136 1611016 5685968 1610960 5685920 -1610096 5686136 1611136 5686104 1611016 5685968 1610960 5685920 -1610032 5685992 1602016 5695848 1610096 5686136 1610960 5685920 -1610096 5686136 1611224 5687456 1611224 5686216 1611136 5686104 -1610032 5685992 1610096 5686136 1610960 5685920 1610656 5685736 -1610032 5685992 1602016 5695848 1610096 5686136 1610656 5685736 -1610096 5686136 1611016 5685968 1610960 5685920 1610656 5685736 -1610032 5685992 1610096 5686136 1610656 5685736 1610448 5685656 -1610032 5685992 1610096 5686136 1610448 5685656 1610312 5685648 -1610032 5685992 1602016 5695848 1610096 5686136 1610312 5685648 -1610096 5686136 1610656 5685736 1610448 5685656 1610312 5685648 -1610032 5685992 1610096 5686136 1610312 5685648 1610080 5685800 -1610096 5686136 1610448 5685656 1610312 5685648 1610080 5685800 -1610032 5685992 1610096 5686136 1610080 5685800 1610032 5685920 -1610032 5685992 1602016 5695848 1610096 5686136 1610080 5685800 -1610312 5685648 1610168 5685696 1610080 5685800 1610096 5686136 -1610096 5686136 1610960 5685920 1610656 5685736 1610448 5685656 -1610096 5686136 1611224 5686216 1611136 5686104 1611016 5685968 -1610032 5685992 1600992 5681736 1602016 5695848 1610096 5686136 -1610096 5686136 1611264 5689408 1611360 5688736 1611224 5687456 -1611264 5689408 1611360 5688736 1610096 5686136 1611264 5689480 -1611224 5687456 1611392 5686312 1611224 5686216 1610096 5686136 -1611224 5687456 1610272 5686400 1611360 5688736 1611408 5688288 -1610096 5686136 1610272 5686400 1611224 5687456 1611224 5686216 -1610096 5686136 1610272 5686400 1611224 5686216 1611136 5686104 -1610272 5686400 1611224 5687456 1611224 5686216 1611136 5686104 -1610096 5686136 1610272 5686400 1611136 5686104 1611016 5685968 -1610096 5686136 1610272 5686400 1611016 5685968 1610960 5685920 -1610096 5686136 1610272 5686400 1610960 5685920 1610656 5685736 -1610272 5686400 1611016 5685968 1610960 5685920 1610656 5685736 -1610272 5686400 1611224 5686216 1611136 5686104 1611016 5685968 -1610096 5686136 1610272 5686400 1610656 5685736 1610448 5685656 -1610272 5686400 1611136 5686104 1611016 5685968 1610960 5685920 -1611360 5688736 1610272 5686400 1610096 5686136 1611264 5689408 -1611360 5688736 1610272 5686400 1611264 5689408 1611360 5688848 -1611360 5688736 1611224 5687456 1610272 5686400 1611264 5689408 -1610096 5686136 1611264 5689408 1610272 5686400 1610656 5685736 -1610096 5686136 1611264 5689480 1611264 5689408 1610272 5686400 -1610096 5686136 1602016 5695848 1611264 5689480 1610272 5686400 -1611264 5689408 1611360 5688736 1610272 5686400 1611264 5689480 -1610096 5686136 1611264 5689480 1610272 5686400 1610656 5685736 -1610272 5686400 1611360 5688736 1611224 5687456 1611224 5686216 -1611224 5687456 1611392 5686312 1611224 5686216 1610272 5686400 -1611224 5687456 1610560 5686784 1611360 5688736 1611408 5688288 -1611360 5688736 1611416 5688480 1611408 5688288 1610560 5686784 -1611360 5688736 1610560 5686784 1610272 5686400 1611264 5689408 -1611360 5688736 1610560 5686784 1611264 5689408 1611360 5688848 -1610560 5686784 1611224 5687456 1610272 5686400 1611264 5689408 -1611224 5687456 1610272 5686400 1610560 5686784 1611408 5688288 -1610560 5686784 1611264 5689408 1611360 5688736 1611408 5688288 -1611224 5687456 1610560 5686784 1611408 5688288 1611264 5687512 -1610272 5686400 1611264 5689480 1611264 5689408 1610560 5686784 -1610272 5686400 1610560 5686784 1611224 5687456 1611224 5686216 -1610272 5686400 1610560 5686784 1611224 5686216 1611136 5686104 -1610272 5686400 1611264 5689408 1610560 5686784 1611136 5686104 -1610560 5686784 1611408 5688288 1611224 5687456 1611224 5686216 -1610272 5686400 1610560 5686784 1611136 5686104 1611016 5685968 -1610560 5686784 1611224 5687456 1611224 5686216 1611136 5686104 -1611224 5687456 1611392 5686312 1611224 5686216 1610560 5686784 -1611224 5687456 1611392 5686312 1610560 5686784 1611408 5688288 -1611224 5686216 1611136 5686104 1610560 5686784 1611392 5686312 -1611224 5687456 1611288 5687432 1611392 5686312 1610560 5686784 -1611224 5687456 1611288 5687432 1610560 5686784 1611408 5688288 -1611288 5687432 1611712 5686408 1611392 5686312 1610560 5686784 -1611392 5686312 1611224 5686216 1610560 5686784 1611288 5687432 -1611408 5688288 1610672 5686912 1610560 5686784 1611360 5688736 -1611408 5688288 1610672 5686912 1611360 5688736 1611416 5688480 -1611408 5688288 1611224 5687456 1610672 5686912 1611360 5688736 -1610560 5686784 1610672 5686912 1611224 5687456 1611288 5687432 -1610672 5686912 1611408 5688288 1611224 5687456 1611288 5687432 -1610672 5686912 1611288 5687432 1610560 5686784 1611360 5688736 -1610560 5686784 1611264 5689408 1611360 5688736 1610672 5686912 -1611360 5688736 1611408 5688288 1610672 5686912 1611264 5689408 -1611264 5689408 1611360 5688848 1611360 5688736 1610672 5686912 -1610560 5686784 1610272 5686400 1611264 5689408 1610672 5686912 -1610560 5686784 1611264 5689408 1610672 5686912 1611288 5687432 -1611224 5687456 1610672 5686912 1611408 5688288 1611264 5687512 -1610560 5686784 1610672 5686912 1611288 5687432 1611392 5686312 -1610672 5686912 1611224 5687456 1611288 5687432 1611392 5686312 -1610560 5686784 1611264 5689408 1610672 5686912 1611392 5686312 -1611288 5687432 1611712 5686408 1611392 5686312 1610672 5686912 -1610560 5686784 1610672 5686912 1611392 5686312 1611224 5686216 -1610560 5686784 1611264 5689408 1610672 5686912 1611224 5686216 -1610560 5686784 1610672 5686912 1611224 5686216 1611136 5686104 -1610672 5686912 1611288 5687432 1611392 5686312 1611224 5686216 -1610672 5686912 1610760 5687016 1611224 5687456 1611288 5687432 -1610672 5686912 1611408 5688288 1610760 5687016 1611288 5687432 -1611408 5688288 1610760 5687016 1610672 5686912 1611360 5688736 -1610672 5686912 1611264 5689408 1611360 5688736 1610760 5687016 -1611264 5689408 1611360 5688848 1611360 5688736 1610760 5687016 -1611408 5688288 1610760 5687016 1611360 5688736 1611416 5688480 -1610760 5687016 1611288 5687432 1610672 5686912 1611264 5689408 -1611360 5688736 1611408 5688288 1610760 5687016 1611264 5689408 -1610760 5687016 1611408 5688288 1611224 5687456 1611288 5687432 -1610672 5686912 1610760 5687016 1611288 5687432 1611392 5686312 -1610760 5687016 1611224 5687456 1611288 5687432 1611392 5686312 -1610672 5686912 1611264 5689408 1610760 5687016 1611392 5686312 -1610672 5686912 1610560 5686784 1611264 5689408 1610760 5687016 -1611224 5687456 1610760 5687016 1611408 5688288 1611264 5687512 -1611288 5687432 1611712 5686408 1611392 5686312 1610760 5687016 -1611408 5688288 1611224 5687456 1610760 5687016 1611360 5688736 -1610672 5686912 1610760 5687016 1611392 5686312 1611224 5686216 -1610672 5686912 1611264 5689408 1610760 5687016 1611224 5686216 -1610760 5687016 1611288 5687432 1611392 5686312 1611224 5686216 -1610672 5686912 1610760 5687016 1611224 5686216 1610560 5686784 -1611408 5688288 1610816 5687168 1611360 5688736 1611416 5688480 -1611360 5688736 1610816 5687168 1610760 5687016 1611264 5689408 -1610760 5687016 1610672 5686912 1611264 5689408 1610816 5687168 -1611360 5688736 1610816 5687168 1611264 5689408 1611360 5688848 -1611264 5689408 1611360 5688736 1610816 5687168 1610672 5686912 -1610816 5687168 1611408 5688288 1610760 5687016 1610672 5686912 -1610672 5686912 1610560 5686784 1611264 5689408 1610816 5687168 -1610672 5686912 1610560 5686784 1610816 5687168 1610760 5687016 -1611264 5689408 1611360 5688736 1610816 5687168 1610560 5686784 -1610560 5686784 1610272 5686400 1611264 5689408 1610816 5687168 -1610760 5687016 1610816 5687168 1611408 5688288 1611224 5687456 -1610760 5687016 1610816 5687168 1611224 5687456 1611288 5687432 -1610760 5687016 1610816 5687168 1611288 5687432 1611392 5686312 -1610760 5687016 1610672 5686912 1610816 5687168 1611288 5687432 -1611408 5688288 1611264 5687512 1611224 5687456 1610816 5687168 -1611408 5688288 1611488 5688024 1611264 5687512 1610816 5687168 -1610816 5687168 1611264 5687512 1611224 5687456 1611288 5687432 -1610816 5687168 1611360 5688736 1611408 5688288 1611264 5687512 -1611360 5688736 1611408 5688288 1610816 5687168 1611264 5689408 -1610816 5687168 1610816 5687248 1611264 5689408 1611360 5688736 -1611264 5689408 1611360 5688848 1611360 5688736 1610816 5687248 -1611264 5689408 1610816 5687248 1610560 5686784 1610272 5686400 -1610560 5686784 1610816 5687248 1610816 5687168 1610672 5686912 -1610816 5687168 1610760 5687016 1610672 5686912 1610816 5687248 -1610672 5686912 1610560 5686784 1610816 5687248 1610760 5687016 -1610816 5687248 1610672 5686912 1610560 5686784 1610272 5686400 -1610816 5687168 1610760 5687016 1610816 5687248 1611360 5688736 -1610816 5687168 1610816 5687248 1611360 5688736 1611408 5688288 -1611360 5688736 1611416 5688480 1611408 5688288 1610816 5687248 -1610816 5687248 1611264 5689408 1611360 5688736 1611408 5688288 -1610816 5687168 1610816 5687248 1611408 5688288 1611264 5687512 -1611408 5688288 1611488 5688024 1611264 5687512 1610816 5687248 -1610816 5687168 1610816 5687248 1611264 5687512 1611224 5687456 -1610816 5687168 1610816 5687248 1611224 5687456 1611288 5687432 -1610816 5687248 1611408 5688288 1611264 5687512 1611224 5687456 -1610816 5687168 1610760 5687016 1610816 5687248 1611224 5687456 -1610816 5687248 1611360 5688736 1611408 5688288 1611264 5687512 -1610816 5687248 1610272 5686400 1611264 5689408 1611360 5688736 -1611264 5689408 1610816 5687248 1610272 5686400 1611264 5689480 -1610272 5686400 1610807 5687274 1610816 5687248 1610560 5686784 -1610807 5687274 1611264 5689408 1610816 5687248 1610560 5686784 -1610816 5687248 1610672 5686912 1610560 5686784 1610807 5687274 -1610560 5686784 1610272 5686400 1610807 5687274 1610672 5686912 -1610816 5687248 1610760 5687016 1610672 5686912 1610807 5687274 -1610816 5687248 1610816 5687168 1610760 5687016 1610807 5687274 -1610760 5687016 1610672 5686912 1610807 5687274 1610816 5687168 -1610816 5687248 1610816 5687168 1610807 5687274 1611264 5689408 -1610672 5686912 1610560 5686784 1610807 5687274 1610760 5687016 -1610272 5686400 1611264 5689408 1610807 5687274 1610560 5686784 -1610816 5687248 1610807 5687274 1611264 5689408 1611360 5688736 -1611264 5689408 1611360 5688848 1611360 5688736 1610807 5687274 -1610816 5687248 1610807 5687274 1611360 5688736 1611408 5688288 -1611360 5688736 1611416 5688480 1611408 5688288 1610807 5687274 -1610816 5687248 1610816 5687168 1610807 5687274 1611408 5688288 -1610807 5687274 1610272 5686400 1611264 5689408 1611360 5688736 -1610816 5687248 1610807 5687274 1611408 5688288 1611264 5687512 -1611408 5688288 1611488 5688024 1611264 5687512 1610807 5687274 -1610807 5687274 1611360 5688736 1611408 5688288 1611264 5687512 -1610816 5687248 1610816 5687168 1610807 5687274 1611264 5687512 -1610816 5687248 1610807 5687274 1611264 5687512 1611224 5687456 -1610816 5687248 1610807 5687274 1611224 5687456 1610816 5687168 -1610816 5687248 1610816 5687168 1610807 5687274 1611224 5687456 -1610807 5687274 1611408 5688288 1611264 5687512 1611224 5687456 -1610807 5687274 1611264 5689408 1611360 5688736 1611408 5688288 -1611264 5689408 1610807 5687274 1610272 5686400 1611264 5689480 -1610096 5686136 1610536 5688000 1611264 5689480 1610272 5686400 -1610096 5686136 1602016 5695848 1610536 5688000 1610272 5686400 -1611264 5689480 1610536 5688000 1602016 5695848 1602112 5695896 -1610536 5688000 1610096 5686136 1602016 5695848 1602112 5695896 -1602016 5695848 1610536 5688000 1610096 5686136 1610032 5685992 -1602016 5695848 1602112 5695896 1610536 5688000 1610032 5685992 -1610536 5688000 1610272 5686400 1610096 5686136 1610032 5685992 -1611264 5689480 1610536 5688000 1602112 5695896 1602160 5695928 -1611264 5689480 1610536 5688000 1602160 5695928 1611328 5689576 -1610536 5688000 1602016 5695848 1602112 5695896 1602160 5695928 -1610536 5688000 1602160 5695928 1611264 5689480 1610272 5686400 -1602016 5695848 1610536 5688000 1610032 5685992 1600992 5681736 -1611264 5689480 1611264 5689408 1610272 5686400 1610536 5688000 -1610272 5686400 1610096 5686136 1610536 5688000 1611264 5689408 -1611264 5689480 1611264 5689408 1610536 5688000 1602160 5695928 -1611264 5689408 1610807 5687274 1610272 5686400 1610536 5688000 -1610272 5686400 1610096 5686136 1610536 5688000 1610807 5687274 -1611264 5689408 1611360 5688736 1610807 5687274 1610536 5688000 -1611264 5689408 1611360 5688848 1611360 5688736 1610536 5688000 -1611360 5688736 1610807 5687274 1610536 5688000 1611360 5688848 -1610807 5687274 1610560 5686784 1610272 5686400 1610536 5688000 -1610272 5686400 1610096 5686136 1610536 5688000 1610560 5686784 -1610807 5687274 1610672 5686912 1610560 5686784 1610536 5688000 -1611264 5689408 1611392 5688904 1611360 5688848 1610536 5688000 -1611360 5688736 1611408 5688288 1610807 5687274 1610536 5688000 -1611360 5688736 1611416 5688480 1611408 5688288 1610536 5688000 -1611408 5688288 1611264 5687512 1610807 5687274 1610536 5688000 -1611408 5688288 1611488 5688024 1611264 5687512 1610536 5688000 -1611488 5688024 1611480 5687816 1611264 5687512 1610536 5688000 -1611480 5687816 1611456 5687704 1611264 5687512 1610536 5688000 -1611488 5688024 1611480 5687816 1610536 5688000 1611408 5688288 -1611264 5687512 1610807 5687274 1610536 5688000 1611480 5687816 -1611360 5688736 1611416 5688480 1610536 5688000 1611360 5688848 -1611264 5687512 1611224 5687456 1610807 5687274 1610536 5688000 -1611264 5687512 1611224 5687456 1610536 5688000 1611480 5687816 -1611224 5687456 1610816 5687248 1610807 5687274 1610536 5688000 -1611408 5688288 1611488 5688024 1610536 5688000 1611416 5688480 -1610807 5687274 1610560 5686784 1610536 5688000 1611224 5687456 -1611264 5689408 1611360 5688848 1610536 5688000 1611264 5689480 -1611264 5689480 1610368 5688304 1602160 5695928 1611328 5689576 -1602160 5695928 1610368 5688304 1610536 5688000 1602112 5695896 -1610368 5688304 1611264 5689480 1610536 5688000 1602112 5695896 -1602160 5695928 1611264 5689480 1610368 5688304 1602112 5695896 -1610536 5688000 1602016 5695848 1602112 5695896 1610368 5688304 -1610536 5688000 1610032 5685992 1602016 5695848 1610368 5688304 -1610536 5688000 1610032 5685992 1610368 5688304 1611264 5689480 -1602016 5695848 1602112 5695896 1610368 5688304 1610032 5685992 -1610536 5688000 1610096 5686136 1610032 5685992 1610368 5688304 -1610032 5685992 1602016 5695848 1610368 5688304 1610096 5686136 -1610536 5688000 1610096 5686136 1610368 5688304 1611264 5689480 -1610536 5688000 1610272 5686400 1610096 5686136 1610368 5688304 -1610536 5688000 1610272 5686400 1610368 5688304 1611264 5689480 -1610536 5688000 1610560 5686784 1610272 5686400 1610368 5688304 -1610096 5686136 1610032 5685992 1610368 5688304 1610272 5686400 -1602112 5695896 1602160 5695928 1610368 5688304 1602016 5695848 -1610536 5688000 1610368 5688304 1611264 5689480 1611264 5689408 -1610536 5688000 1610272 5686400 1610368 5688304 1611264 5689408 -1610368 5688304 1602160 5695928 1611264 5689480 1611264 5689408 -1610032 5685992 1600992 5681736 1602016 5695848 1610368 5688304 -1610032 5685992 1600992 5681736 1610368 5688304 1610096 5686136 -1602016 5695848 1602112 5695896 1610368 5688304 1600992 5681736 -1610032 5685992 1601088 5681704 1600992 5681736 1610368 5688304 -1610032 5685992 1601088 5681704 1610368 5688304 1610096 5686136 -1610032 5685992 1610032 5685920 1601088 5681704 1610368 5688304 -1600992 5681736 1601824 5695840 1602016 5695848 1610368 5688304 -1600992 5681736 1602016 5695848 1610368 5688304 1601088 5681704 -1610536 5688000 1610368 5688304 1611264 5689408 1611360 5688848 -1610536 5688000 1610272 5686400 1610368 5688304 1611360 5688848 -1610536 5688000 1610368 5688304 1611360 5688848 1611360 5688736 -1610536 5688000 1610272 5686400 1610368 5688304 1611360 5688736 -1610536 5688000 1610368 5688304 1611360 5688736 1611416 5688480 -1610536 5688000 1610272 5686400 1610368 5688304 1611416 5688480 -1610368 5688304 1611360 5688848 1611360 5688736 1611416 5688480 -1610536 5688000 1610368 5688304 1611416 5688480 1611408 5688288 -1610536 5688000 1610272 5686400 1610368 5688304 1611408 5688288 -1610368 5688304 1611360 5688736 1611416 5688480 1611408 5688288 -1610368 5688304 1611264 5689480 1611264 5689408 1611360 5688848 -1611264 5689408 1611392 5688904 1611360 5688848 1610368 5688304 -1610536 5688000 1610368 5688304 1611408 5688288 1611488 5688024 -1610368 5688304 1611264 5689408 1611360 5688848 1611360 5688736 -1610368 5688304 1610248 5688560 1611264 5689480 1611264 5689408 -1610368 5688304 1602160 5695928 1610248 5688560 1611264 5689408 -1602160 5695928 1610248 5688560 1610368 5688304 1602112 5695896 -1610248 5688560 1611264 5689408 1610368 5688304 1602112 5695896 -1610248 5688560 1602160 5695928 1611264 5689480 1611264 5689408 -1611264 5689480 1610248 5688560 1602160 5695928 1611328 5689576 -1602160 5695928 1611360 5689624 1611328 5689576 1610248 5688560 -1611264 5689480 1611264 5689408 1610248 5688560 1611328 5689576 -1611328 5689576 1611264 5689480 1610248 5688560 1611360 5689624 -1610368 5688304 1602016 5695848 1602112 5695896 1610248 5688560 -1610368 5688304 1602016 5695848 1610248 5688560 1611264 5689408 -1602112 5695896 1602160 5695928 1610248 5688560 1602016 5695848 -1610368 5688304 1600992 5681736 1602016 5695848 1610248 5688560 -1610368 5688304 1600992 5681736 1610248 5688560 1611264 5689408 -1602016 5695848 1602112 5695896 1610248 5688560 1600992 5681736 -1600992 5681736 1601824 5695840 1602016 5695848 1610248 5688560 -1610368 5688304 1610248 5688560 1611264 5689408 1611360 5688848 -1610248 5688560 1611264 5689480 1611264 5689408 1611360 5688848 -1610368 5688304 1600992 5681736 1610248 5688560 1611360 5688848 -1611264 5689408 1611392 5688904 1611360 5688848 1610248 5688560 -1602160 5695928 1611360 5689624 1610248 5688560 1602112 5695896 -1602160 5695928 1612400 5693248 1611360 5689624 1610248 5688560 -1611360 5689624 1611328 5689576 1610248 5688560 1612400 5693248 -1602160 5695928 1612136 5695120 1612400 5693248 1610248 5688560 -1612400 5693248 1612408 5693168 1611360 5689624 1610248 5688560 -1602160 5695928 1612400 5693248 1610248 5688560 1602112 5695896 -1610368 5688304 1601088 5681704 1600992 5681736 1610248 5688560 -1610368 5688304 1601088 5681704 1610248 5688560 1611360 5688848 -1600992 5681736 1602016 5695848 1610248 5688560 1601088 5681704 -1610368 5688304 1610032 5685992 1601088 5681704 1610248 5688560 -1610368 5688304 1610096 5686136 1610032 5685992 1610248 5688560 -1610368 5688304 1610096 5686136 1610248 5688560 1611360 5688848 -1610032 5685992 1610032 5685920 1601088 5681704 1610248 5688560 -1610032 5685992 1601088 5681704 1610248 5688560 1610096 5686136 -1610368 5688304 1610272 5686400 1610096 5686136 1610248 5688560 -1601088 5681704 1600992 5681736 1610248 5688560 1610032 5685992 -1610368 5688304 1610248 5688560 1611360 5688848 1611360 5688736 -1610368 5688304 1610096 5686136 1610248 5688560 1611360 5688736 -1610368 5688304 1610248 5688560 1611360 5688736 1611416 5688480 -1610248 5688560 1611264 5689408 1611360 5688848 1611360 5688736 -1612400 5693248 1610224 5688760 1602160 5695928 1612136 5695120 -1602160 5695928 1610224 5688760 1610248 5688560 1602112 5695896 -1610248 5688560 1602016 5695848 1602112 5695896 1610224 5688760 -1610248 5688560 1600992 5681736 1602016 5695848 1610224 5688760 -1602016 5695848 1602112 5695896 1610224 5688760 1600992 5681736 -1610248 5688560 1601088 5681704 1600992 5681736 1610224 5688760 -1600992 5681736 1602016 5695848 1610224 5688760 1601088 5681704 -1600992 5681736 1601824 5695840 1602016 5695848 1610224 5688760 -1610224 5688760 1612400 5693248 1610248 5688560 1601088 5681704 -1602112 5695896 1602160 5695928 1610224 5688760 1602016 5695848 -1602160 5695928 1612400 5693248 1610224 5688760 1602112 5695896 -1610248 5688560 1610224 5688760 1612400 5693248 1611360 5689624 -1610248 5688560 1610224 5688760 1611360 5689624 1611328 5689576 -1610248 5688560 1610224 5688760 1611328 5689576 1611264 5689480 -1610224 5688760 1611360 5689624 1611328 5689576 1611264 5689480 -1610248 5688560 1610224 5688760 1611264 5689480 1611264 5689408 -1610248 5688560 1610224 5688760 1611264 5689408 1611360 5688848 -1610224 5688760 1611264 5689480 1611264 5689408 1611360 5688848 -1610224 5688760 1611328 5689576 1611264 5689480 1611264 5689408 -1612400 5693248 1612408 5693168 1611360 5689624 1610224 5688760 -1612408 5693168 1611896 5690040 1611360 5689624 1610224 5688760 -1610248 5688560 1610224 5688760 1611360 5688848 1611360 5688736 -1610224 5688760 1611264 5689408 1611360 5688848 1611360 5688736 -1611264 5689408 1611392 5688904 1611360 5688848 1610224 5688760 -1610248 5688560 1601088 5681704 1610224 5688760 1611360 5688736 -1610224 5688760 1602160 5695928 1612400 5693248 1612408 5693168 -1610224 5688760 1612408 5693168 1611360 5689624 1611328 5689576 -1610248 5688560 1610032 5685992 1601088 5681704 1610224 5688760 -1610248 5688560 1610224 5688760 1611360 5688736 1610368 5688304 -1612400 5693248 1610232 5688872 1602160 5695928 1612136 5695120 -1610224 5688760 1610232 5688872 1612400 5693248 1612408 5693168 -1610232 5688872 1602160 5695928 1612400 5693248 1612408 5693168 -1610224 5688760 1610232 5688872 1612408 5693168 1611360 5689624 -1612408 5693168 1611896 5690040 1611360 5689624 1610232 5688872 -1610232 5688872 1612400 5693248 1612408 5693168 1611360 5689624 -1610224 5688760 1602160 5695928 1610232 5688872 1611360 5689624 -1602160 5695928 1610232 5688872 1610224 5688760 1602112 5695896 -1602160 5695928 1612400 5693248 1610232 5688872 1602112 5695896 -1610224 5688760 1602016 5695848 1602112 5695896 1610232 5688872 -1610224 5688760 1600992 5681736 1602016 5695848 1610232 5688872 -1610232 5688872 1611360 5689624 1610224 5688760 1602016 5695848 -1602112 5695896 1602160 5695928 1610232 5688872 1602016 5695848 -1610224 5688760 1610232 5688872 1611360 5689624 1611328 5689576 -1610224 5688760 1610232 5688872 1611328 5689576 1611264 5689480 -1610224 5688760 1610232 5688872 1611264 5689480 1611264 5689408 -1610232 5688872 1611328 5689576 1611264 5689480 1611264 5689408 -1610224 5688760 1610232 5688872 1611264 5689408 1611360 5688848 -1610224 5688760 1610232 5688872 1611360 5688848 1611360 5688736 -1610232 5688872 1611264 5689408 1611360 5688848 1611360 5688736 -1610232 5688872 1611264 5689480 1611264 5689408 1611360 5688848 -1610232 5688872 1612408 5693168 1611360 5689624 1611328 5689576 -1610224 5688760 1610232 5688872 1611360 5688736 1610248 5688560 -1611264 5689408 1611392 5688904 1611360 5688848 1610232 5688872 -1610224 5688760 1602016 5695848 1610232 5688872 1611360 5688736 -1610232 5688872 1611360 5689624 1611328 5689576 1611264 5689480 -1610232 5688872 1610296 5689016 1612400 5693248 1612408 5693168 -1610232 5688872 1602160 5695928 1610296 5689016 1612408 5693168 -1602160 5695928 1610296 5689016 1610232 5688872 1602112 5695896 -1602160 5695928 1612400 5693248 1610296 5689016 1602112 5695896 -1610296 5689016 1612408 5693168 1610232 5688872 1602112 5695896 -1610296 5689016 1602160 5695928 1612400 5693248 1612408 5693168 -1612400 5693248 1610296 5689016 1602160 5695928 1612136 5695120 -1610232 5688872 1610296 5689016 1612408 5693168 1611360 5689624 -1610296 5689016 1612400 5693248 1612408 5693168 1611360 5689624 -1610232 5688872 1602112 5695896 1610296 5689016 1611360 5689624 -1612408 5693168 1611896 5690040 1611360 5689624 1610296 5689016 -1610232 5688872 1610296 5689016 1611360 5689624 1611328 5689576 -1610232 5688872 1602112 5695896 1610296 5689016 1611328 5689576 -1610296 5689016 1612408 5693168 1611360 5689624 1611328 5689576 -1610232 5688872 1602016 5695848 1602112 5695896 1610296 5689016 -1610232 5688872 1610296 5689016 1611328 5689576 1611264 5689480 -1610232 5688872 1610296 5689016 1611264 5689480 1611264 5689408 -1610232 5688872 1610296 5689016 1611264 5689408 1611360 5688848 -1610296 5689016 1611264 5689480 1611264 5689408 1611360 5688848 -1610232 5688872 1610296 5689016 1611360 5688848 1611360 5688736 -1610232 5688872 1610296 5689016 1611360 5688736 1610224 5688760 -1610296 5689016 1611360 5688848 1611360 5688736 1610224 5688760 -1610296 5689016 1611264 5689408 1611360 5688848 1611360 5688736 -1610232 5688872 1602112 5695896 1610296 5689016 1610224 5688760 -1610296 5689016 1611360 5689624 1611328 5689576 1611264 5689480 -1611360 5688736 1610248 5688560 1610224 5688760 1610296 5689016 -1611264 5689408 1611392 5688904 1611360 5688848 1610296 5689016 -1610296 5689016 1611328 5689576 1611264 5689480 1611264 5689408 -1602160 5695928 1610336 5689160 1610296 5689016 1602112 5695896 -1602160 5695928 1612400 5693248 1610336 5689160 1602112 5695896 -1610296 5689016 1610232 5688872 1602112 5695896 1610336 5689160 -1602112 5695896 1602160 5695928 1610336 5689160 1610232 5688872 -1610296 5689016 1610336 5689160 1612400 5693248 1612408 5693168 -1610336 5689160 1602160 5695928 1612400 5693248 1612408 5693168 -1610296 5689016 1610336 5689160 1612408 5693168 1611360 5689624 -1610336 5689160 1612400 5693248 1612408 5693168 1611360 5689624 -1610336 5689160 1611360 5689624 1610296 5689016 1610232 5688872 -1612408 5693168 1611896 5690040 1611360 5689624 1610336 5689160 -1612400 5693248 1610336 5689160 1602160 5695928 1612136 5695120 -1610296 5689016 1610336 5689160 1611360 5689624 1611328 5689576 -1610336 5689160 1612408 5693168 1611360 5689624 1611328 5689576 -1610296 5689016 1610232 5688872 1610336 5689160 1611328 5689576 -1610296 5689016 1610336 5689160 1611328 5689576 1611264 5689480 -1610296 5689016 1610232 5688872 1610336 5689160 1611264 5689480 -1610336 5689160 1611360 5689624 1611328 5689576 1611264 5689480 -1610232 5688872 1602016 5695848 1602112 5695896 1610336 5689160 -1610296 5689016 1610336 5689160 1611264 5689480 1611264 5689408 -1610296 5689016 1610336 5689160 1611264 5689408 1611360 5688848 -1610296 5689016 1610336 5689160 1611360 5688848 1611360 5688736 -1610296 5689016 1610232 5688872 1610336 5689160 1611360 5688848 -1610336 5689160 1611328 5689576 1611264 5689480 1611264 5689408 -1611264 5689408 1611392 5688904 1611360 5688848 1610336 5689160 -1610336 5689160 1611264 5689480 1611264 5689408 1611360 5688848 -1610336 5689160 1610296 5689296 1612400 5693248 1612408 5693168 -1610336 5689160 1602160 5695928 1610296 5689296 1612408 5693168 -1602160 5695928 1610296 5689296 1610336 5689160 1602112 5695896 -1602160 5695928 1612400 5693248 1610296 5689296 1602112 5695896 -1610336 5689160 1610232 5688872 1602112 5695896 1610296 5689296 -1610296 5689296 1612408 5693168 1610336 5689160 1610232 5688872 -1602112 5695896 1602160 5695928 1610296 5689296 1610232 5688872 -1610296 5689296 1602160 5695928 1612400 5693248 1612408 5693168 -1610336 5689160 1610296 5689016 1610232 5688872 1610296 5689296 -1610232 5688872 1602112 5695896 1610296 5689296 1610296 5689016 -1610336 5689160 1610296 5689016 1610296 5689296 1612408 5693168 -1610336 5689160 1610296 5689296 1612408 5693168 1611360 5689624 -1610296 5689296 1612400 5693248 1612408 5693168 1611360 5689624 -1610336 5689160 1610296 5689016 1610296 5689296 1611360 5689624 -1610336 5689160 1610296 5689296 1611360 5689624 1611328 5689576 -1610336 5689160 1610296 5689016 1610296 5689296 1611328 5689576 -1610296 5689296 1612408 5693168 1611360 5689624 1611328 5689576 -1612408 5693168 1611896 5690040 1611360 5689624 1610296 5689296 -1612408 5693168 1611896 5690040 1610296 5689296 1612400 5693248 -1612408 5693168 1612048 5690184 1611896 5690040 1610296 5689296 -1611360 5689624 1611328 5689576 1610296 5689296 1611896 5690040 -1612400 5693248 1610296 5689296 1602160 5695928 1612136 5695120 -1610296 5689296 1602112 5695896 1602160 5695928 1612136 5695120 -1612400 5693248 1610296 5689296 1612136 5695120 1612440 5693432 -1612400 5693248 1612408 5693168 1610296 5689296 1612136 5695120 -1602160 5695928 1602200 5696008 1612136 5695120 1610296 5689296 -1611896 5690040 1611376 5689632 1611360 5689624 1610296 5689296 -1610336 5689160 1610296 5689296 1611328 5689576 1611264 5689480 -1610336 5689160 1610296 5689016 1610296 5689296 1611264 5689480 -1610296 5689296 1611360 5689624 1611328 5689576 1611264 5689480 -1610336 5689160 1610296 5689296 1611264 5689480 1611264 5689408 -1610336 5689160 1610296 5689016 1610296 5689296 1611264 5689408 -1610296 5689296 1611328 5689576 1611264 5689480 1611264 5689408 -1610232 5688872 1602016 5695848 1602112 5695896 1610296 5689296 -1610232 5688872 1602016 5695848 1610296 5689296 1610296 5689016 -1602112 5695896 1602160 5695928 1610296 5689296 1602016 5695848 -1610232 5688872 1610224 5688760 1602016 5695848 1610296 5689296 -1610336 5689160 1610296 5689296 1611264 5689408 1611360 5688848 -1610232 5688872 1610272 5689312 1610296 5689296 1610296 5689016 -1610272 5689312 1602016 5695848 1610296 5689296 1610296 5689016 -1610296 5689296 1610336 5689160 1610296 5689016 1610272 5689312 -1610296 5689296 1610336 5689160 1610272 5689312 1602016 5695848 -1610296 5689016 1610232 5688872 1610272 5689312 1610336 5689160 -1610232 5688872 1602016 5695848 1610272 5689312 1610296 5689016 -1602016 5695848 1610272 5689312 1610232 5688872 1610224 5688760 -1610296 5689296 1610272 5689312 1602016 5695848 1602112 5695896 -1610296 5689296 1610336 5689160 1610272 5689312 1602112 5695896 -1610296 5689296 1610272 5689312 1602112 5695896 1602160 5695928 -1610296 5689296 1610336 5689160 1610272 5689312 1602160 5695928 -1610296 5689296 1610272 5689312 1602160 5695928 1612136 5695120 -1610296 5689296 1610336 5689160 1610272 5689312 1612136 5695120 -1610272 5689312 1602112 5695896 1602160 5695928 1612136 5695120 -1602160 5695928 1602200 5696008 1612136 5695120 1610272 5689312 -1612136 5695120 1610296 5689296 1610272 5689312 1602200 5696008 -1602160 5695928 1602200 5696008 1610272 5689312 1602112 5695896 -1602200 5696008 1602224 5696056 1612136 5695120 1610272 5689312 -1610272 5689312 1610232 5688872 1602016 5695848 1602112 5695896 -1610296 5689296 1610272 5689312 1612136 5695120 1612400 5693248 -1610296 5689296 1610336 5689160 1610272 5689312 1612400 5693248 -1610272 5689312 1602200 5696008 1612136 5695120 1612400 5693248 -1612136 5695120 1612440 5693432 1612400 5693248 1610272 5689312 -1610296 5689296 1610272 5689312 1612400 5693248 1612408 5693168 -1610296 5689296 1610336 5689160 1610272 5689312 1612408 5693168 -1610296 5689296 1610272 5689312 1612408 5693168 1611896 5690040 -1610296 5689296 1610336 5689160 1610272 5689312 1611896 5690040 -1610272 5689312 1612400 5693248 1612408 5693168 1611896 5690040 -1612408 5693168 1612048 5690184 1611896 5690040 1610272 5689312 -1610296 5689296 1610272 5689312 1611896 5690040 1611360 5689624 -1610296 5689296 1610336 5689160 1610272 5689312 1611360 5689624 -1610272 5689312 1612408 5693168 1611896 5690040 1611360 5689624 -1610296 5689296 1610272 5689312 1611360 5689624 1611328 5689576 -1610296 5689296 1610336 5689160 1610272 5689312 1611328 5689576 -1610296 5689296 1610272 5689312 1611328 5689576 1611264 5689480 -1610296 5689296 1610336 5689160 1610272 5689312 1611264 5689480 -1610272 5689312 1611360 5689624 1611328 5689576 1611264 5689480 -1610272 5689312 1611896 5690040 1611360 5689624 1611328 5689576 -1610272 5689312 1612136 5695120 1612400 5693248 1612408 5693168 -1611896 5690040 1611376 5689632 1611360 5689624 1610272 5689312 -1610296 5689296 1610272 5689312 1611264 5689480 1611264 5689408 -1610272 5689312 1602016 5695848 1602112 5695896 1602160 5695928 -1610272 5689312 1610232 5689368 1612136 5695120 1612400 5693248 -1610232 5689368 1602200 5696008 1612136 5695120 1612400 5693248 -1612136 5695120 1612440 5693432 1612400 5693248 1610232 5689368 -1612136 5695120 1610232 5689368 1602200 5696008 1602224 5696056 -1602200 5696008 1610232 5689368 1610272 5689312 1602160 5695928 -1602200 5696008 1612136 5695120 1610232 5689368 1602160 5695928 -1610272 5689312 1602112 5695896 1602160 5695928 1610232 5689368 -1602160 5695928 1602200 5696008 1610232 5689368 1602112 5695896 -1610272 5689312 1602112 5695896 1610232 5689368 1612400 5693248 -1610272 5689312 1610232 5689368 1612400 5693248 1612408 5693168 -1610232 5689368 1612136 5695120 1612400 5693248 1612408 5693168 -1610272 5689312 1610232 5689368 1612408 5693168 1611896 5690040 -1610272 5689312 1610232 5689368 1611896 5690040 1611360 5689624 -1610232 5689368 1612408 5693168 1611896 5690040 1611360 5689624 -1612408 5693168 1612048 5690184 1611896 5690040 1610232 5689368 -1610272 5689312 1610232 5689368 1611360 5689624 1611328 5689576 -1610232 5689368 1611896 5690040 1611360 5689624 1611328 5689576 -1610272 5689312 1610232 5689368 1611328 5689576 1611264 5689480 -1610272 5689312 1610232 5689368 1611264 5689480 1610296 5689296 -1610232 5689368 1611328 5689576 1611264 5689480 1610296 5689296 -1610232 5689368 1611360 5689624 1611328 5689576 1611264 5689480 -1610272 5689312 1602112 5695896 1610232 5689368 1610296 5689296 -1610232 5689368 1612400 5693248 1612408 5693168 1611896 5690040 -1611896 5690040 1611376 5689632 1611360 5689624 1610232 5689368 -1611264 5689480 1611264 5689408 1610296 5689296 1610232 5689368 -1610272 5689312 1602016 5695848 1602112 5695896 1610232 5689368 -1602112 5695896 1602160 5695928 1610232 5689368 1602016 5695848 -1610272 5689312 1610232 5688872 1602016 5695848 1610232 5689368 -1610272 5689312 1610232 5688872 1610232 5689368 1610296 5689296 -1610272 5689312 1610296 5689016 1610232 5688872 1610232 5689368 -1610272 5689312 1610336 5689160 1610296 5689016 1610232 5689368 -1610232 5688872 1602016 5695848 1610232 5689368 1610296 5689016 -1610272 5689312 1610296 5689016 1610232 5689368 1610296 5689296 -1610232 5688872 1610224 5688760 1602016 5695848 1610232 5689368 -1610224 5688760 1600992 5681736 1602016 5695848 1610232 5689368 -1610232 5688872 1610224 5688760 1610232 5689368 1610296 5689016 -1602016 5695848 1602112 5695896 1610232 5689368 1610224 5688760 -1610232 5689368 1610184 5689408 1612136 5695120 1612400 5693248 -1610232 5689368 1610184 5689408 1612400 5693248 1612408 5693168 -1610184 5689408 1602200 5696008 1612136 5695120 1612400 5693248 -1610184 5689408 1612136 5695120 1612400 5693248 1612408 5693168 -1610232 5689368 1602200 5696008 1610184 5689408 1612408 5693168 -1602200 5696008 1610184 5689408 1610232 5689368 1602160 5695928 -1602200 5696008 1612136 5695120 1610184 5689408 1602160 5695928 -1610184 5689408 1612408 5693168 1610232 5689368 1602160 5695928 -1612136 5695120 1612440 5693432 1612400 5693248 1610184 5689408 -1612136 5695120 1610184 5689408 1602200 5696008 1602224 5696056 -1612136 5695120 1612400 5693248 1610184 5689408 1602224 5696056 -1610184 5689408 1602160 5695928 1602200 5696008 1602224 5696056 -1612136 5695120 1610184 5689408 1602224 5696056 1612120 5695192 -1610232 5689368 1602112 5695896 1602160 5695928 1610184 5689408 -1610232 5689368 1602112 5695896 1610184 5689408 1612408 5693168 -1602160 5695928 1602200 5696008 1610184 5689408 1602112 5695896 -1610232 5689368 1602016 5695848 1602112 5695896 1610184 5689408 -1610232 5689368 1602016 5695848 1610184 5689408 1612408 5693168 -1602112 5695896 1602160 5695928 1610184 5689408 1602016 5695848 -1610232 5689368 1610184 5689408 1612408 5693168 1611896 5690040 -1610184 5689408 1612400 5693248 1612408 5693168 1611896 5690040 -1610232 5689368 1602016 5695848 1610184 5689408 1611896 5690040 -1610232 5689368 1610184 5689408 1611896 5690040 1611360 5689624 -1610232 5689368 1602016 5695848 1610184 5689408 1611360 5689624 -1610232 5689368 1610184 5689408 1611360 5689624 1611328 5689576 -1610232 5689368 1602016 5695848 1610184 5689408 1611328 5689576 -1610184 5689408 1611896 5690040 1611360 5689624 1611328 5689576 -1612408 5693168 1612048 5690184 1611896 5690040 1610184 5689408 -1610232 5689368 1610184 5689408 1611328 5689576 1611264 5689480 -1610184 5689408 1612408 5693168 1611896 5690040 1611360 5689624 -1611896 5690040 1611376 5689632 1611360 5689624 1610184 5689408 -1610232 5689368 1610224 5688760 1602016 5695848 1610184 5689408 -1610224 5688760 1600992 5681736 1602016 5695848 1610184 5689408 -1610232 5689368 1610224 5688760 1610184 5689408 1611328 5689576 -1602016 5695848 1602112 5695896 1610184 5689408 1600992 5681736 -1610224 5688760 1601088 5681704 1600992 5681736 1610184 5689408 -1600992 5681736 1601824 5695840 1602016 5695848 1610184 5689408 -1610232 5689368 1610232 5688872 1610224 5688760 1610184 5689408 -1610232 5689368 1610232 5688872 1610184 5689408 1611328 5689576 -1610232 5689368 1610296 5689016 1610232 5688872 1610184 5689408 -1610232 5689368 1610296 5689016 1610184 5689408 1611328 5689576 -1610232 5689368 1610272 5689312 1610296 5689016 1610184 5689408 -1610232 5689368 1610272 5689312 1610184 5689408 1611328 5689576 -1610272 5689312 1610336 5689160 1610296 5689016 1610184 5689408 -1610296 5689016 1610232 5688872 1610184 5689408 1610272 5689312 -1610232 5688872 1610224 5688760 1610184 5689408 1610296 5689016 -1610224 5688760 1600992 5681736 1610184 5689408 1610232 5688872 -1600992 5681736 1610008 5689456 1610184 5689408 1610224 5688760 -1610008 5689456 1602016 5695848 1610184 5689408 1610224 5688760 -1610184 5689408 1610008 5689456 1602016 5695848 1602112 5695896 -1610184 5689408 1610224 5688760 1610008 5689456 1602112 5695896 -1600992 5681736 1610008 5689456 1610224 5688760 1601088 5681704 -1610008 5689456 1610184 5689408 1610224 5688760 1601088 5681704 -1610224 5688760 1610248 5688560 1601088 5681704 1610008 5689456 -1610224 5688760 1610248 5688560 1610008 5689456 1610184 5689408 -1601088 5681704 1600992 5681736 1610008 5689456 1610248 5688560 -1610184 5689408 1610008 5689456 1602112 5695896 1602160 5695928 -1610184 5689408 1610224 5688760 1610008 5689456 1602160 5695928 -1610184 5689408 1610008 5689456 1602160 5695928 1602200 5696008 -1610184 5689408 1610224 5688760 1610008 5689456 1602200 5696008 -1610184 5689408 1610008 5689456 1602200 5696008 1602224 5696056 -1610184 5689408 1610224 5688760 1610008 5689456 1602224 5696056 -1610008 5689456 1602160 5695928 1602200 5696008 1602224 5696056 -1610008 5689456 1602016 5695848 1602112 5695896 1602160 5695928 -1610184 5689408 1610008 5689456 1602224 5696056 1612136 5695120 -1610184 5689408 1610008 5689456 1612136 5695120 1612400 5693248 -1610184 5689408 1610224 5688760 1610008 5689456 1612400 5693248 -1610008 5689456 1602200 5696008 1602224 5696056 1612136 5695120 -1610184 5689408 1610008 5689456 1612400 5693248 1612408 5693168 -1610184 5689408 1610008 5689456 1612408 5693168 1611896 5690040 -1610008 5689456 1612136 5695120 1612400 5693248 1612408 5693168 -1610184 5689408 1610224 5688760 1610008 5689456 1611896 5690040 -1610008 5689456 1612400 5693248 1612408 5693168 1611896 5690040 -1612136 5695120 1612440 5693432 1612400 5693248 1610008 5689456 -1612408 5693168 1612048 5690184 1611896 5690040 1610008 5689456 -1612408 5693168 1612440 5693112 1612048 5690184 1610008 5689456 -1612440 5693112 1612208 5690280 1612048 5690184 1610008 5689456 -1611896 5690040 1610184 5689408 1610008 5689456 1612048 5690184 -1612408 5693168 1612440 5693112 1610008 5689456 1612400 5693248 -1612048 5690184 1611896 5690040 1610008 5689456 1612440 5693112 -1602224 5696056 1612120 5695192 1612136 5695120 1610008 5689456 -1610008 5689456 1602224 5696056 1612136 5695120 1612400 5693248 -1610008 5689456 1602112 5695896 1602160 5695928 1602200 5696008 -1602016 5695848 1610008 5689456 1600992 5681736 1601824 5695840 -1610184 5689408 1610008 5689456 1611896 5690040 1611360 5689624 -1610008 5689456 1612048 5690184 1611896 5690040 1611360 5689624 -1610184 5689408 1610224 5688760 1610008 5689456 1611360 5689624 -1610184 5689408 1610008 5689456 1611360 5689624 1611328 5689576 -1611896 5690040 1611376 5689632 1611360 5689624 1610008 5689456 -1610184 5689408 1610232 5688872 1610224 5688760 1610008 5689456 -1610184 5689408 1610232 5688872 1610008 5689456 1611360 5689624 -1610224 5688760 1610248 5688560 1610008 5689456 1610232 5688872 -1610184 5689408 1610296 5689016 1610232 5688872 1610008 5689456 -1610184 5689408 1610296 5689016 1610008 5689456 1611360 5689624 -1610184 5689408 1610272 5689312 1610296 5689016 1610008 5689456 -1610184 5689408 1610272 5689312 1610008 5689456 1611360 5689624 -1610272 5689312 1610336 5689160 1610296 5689016 1610008 5689456 -1610184 5689408 1610232 5689368 1610272 5689312 1610008 5689456 -1610296 5689016 1610232 5688872 1610008 5689456 1610272 5689312 -1610232 5688872 1610224 5688760 1610008 5689456 1610296 5689016 -1600992 5681736 1602016 5695848 1610008 5689456 1601088 5681704 -1610008 5689456 1600992 5681736 1602016 5695848 1602112 5695896 -1610248 5688560 1610032 5685992 1601088 5681704 1610008 5689456 -1610032 5685992 1610032 5685920 1601088 5681704 1610008 5689456 -1610248 5688560 1610032 5685992 1610008 5689456 1610224 5688760 -1610248 5688560 1610096 5686136 1610032 5685992 1610008 5689456 -1601088 5681704 1600992 5681736 1610008 5689456 1610032 5685992 -1602016 5695848 1609672 5689488 1600992 5681736 1601824 5695840 -1600992 5681736 1609672 5689488 1610008 5689456 1601088 5681704 -1610008 5689456 1610032 5685992 1601088 5681704 1609672 5689488 -1610032 5685992 1610032 5685920 1601088 5681704 1609672 5689488 -1609672 5689488 1602016 5695848 1610008 5689456 1610032 5685992 -1601088 5681704 1600992 5681736 1609672 5689488 1610032 5685992 -1600992 5681736 1602016 5695848 1609672 5689488 1601088 5681704 -1610008 5689456 1609672 5689488 1602016 5695848 1602112 5695896 -1610008 5689456 1609672 5689488 1602112 5695896 1602160 5695928 -1610008 5689456 1609672 5689488 1602160 5695928 1602200 5696008 -1610008 5689456 1609672 5689488 1602200 5696008 1602224 5696056 -1610008 5689456 1609672 5689488 1602224 5696056 1612136 5695120 -1609672 5689488 1602200 5696008 1602224 5696056 1612136 5695120 -1609672 5689488 1602112 5695896 1602160 5695928 1602200 5696008 -1602224 5696056 1612120 5695192 1612136 5695120 1609672 5689488 -1610008 5689456 1609672 5689488 1612136 5695120 1612400 5693248 -1610008 5689456 1609672 5689488 1612400 5693248 1612408 5693168 -1609672 5689488 1602224 5696056 1612136 5695120 1612400 5693248 -1610008 5689456 1609672 5689488 1612408 5693168 1612440 5693112 -1612136 5695120 1612440 5693432 1612400 5693248 1609672 5689488 -1609672 5689488 1612136 5695120 1612400 5693248 1612408 5693168 -1609672 5689488 1602160 5695928 1602200 5696008 1602224 5696056 -1610008 5689456 1610032 5685992 1609672 5689488 1612408 5693168 -1609672 5689488 1600992 5681736 1602016 5695848 1602112 5695896 -1609672 5689488 1602016 5695848 1602112 5695896 1602160 5695928 -1610008 5689456 1610248 5688560 1610032 5685992 1609672 5689488 -1610008 5689456 1610224 5688760 1610248 5688560 1609672 5689488 -1610008 5689456 1610232 5688872 1610224 5688760 1609672 5689488 -1610224 5688760 1610248 5688560 1609672 5689488 1610232 5688872 -1610248 5688560 1610096 5686136 1610032 5685992 1609672 5689488 -1610248 5688560 1610368 5688304 1610096 5686136 1609672 5689488 -1610032 5685992 1601088 5681704 1609672 5689488 1610096 5686136 -1610008 5689456 1610296 5689016 1610232 5688872 1609672 5689488 -1610008 5689456 1610232 5688872 1609672 5689488 1612408 5693168 -1610248 5688560 1610096 5686136 1609672 5689488 1610224 5688760 -1602016 5695848 1609400 5689560 1600992 5681736 1601824 5695840 -1609672 5689488 1609400 5689560 1602016 5695848 1602112 5695896 -1609672 5689488 1600992 5681736 1609400 5689560 1602112 5695896 -1609400 5689560 1600992 5681736 1602016 5695848 1602112 5695896 -1609672 5689488 1609400 5689560 1602112 5695896 1602160 5695928 -1609672 5689488 1609400 5689560 1602160 5695928 1602200 5696008 -1609672 5689488 1609400 5689560 1602200 5696008 1602224 5696056 -1609672 5689488 1609400 5689560 1602224 5696056 1612136 5695120 -1609672 5689488 1609400 5689560 1612136 5695120 1612400 5693248 -1609400 5689560 1602224 5696056 1612136 5695120 1612400 5693248 -1612136 5695120 1612440 5693432 1612400 5693248 1609400 5689560 -1609400 5689560 1602160 5695928 1602200 5696008 1602224 5696056 -1602224 5696056 1612120 5695192 1612136 5695120 1609400 5689560 -1612136 5695120 1612400 5693248 1609400 5689560 1612120 5695192 -1602224 5696056 1608544 5699312 1612120 5695192 1609400 5689560 -1609672 5689488 1609400 5689560 1612400 5693248 1612408 5693168 -1609672 5689488 1609400 5689560 1612408 5693168 1610008 5689456 -1609400 5689560 1612136 5695120 1612400 5693248 1612408 5693168 -1612408 5693168 1612440 5693112 1610008 5689456 1609400 5689560 -1609400 5689560 1612400 5693248 1612408 5693168 1610008 5689456 -1609400 5689560 1602200 5696008 1602224 5696056 1612120 5695192 -1609672 5689488 1600992 5681736 1609400 5689560 1610008 5689456 -1609400 5689560 1602016 5695848 1602112 5695896 1602160 5695928 -1609400 5689560 1602112 5695896 1602160 5695928 1602200 5696008 -1600992 5681736 1609400 5689560 1609672 5689488 1601088 5681704 -1609400 5689560 1610008 5689456 1609672 5689488 1601088 5681704 -1600992 5681736 1602016 5695848 1609400 5689560 1601088 5681704 -1609672 5689488 1610032 5685992 1601088 5681704 1609400 5689560 -1610032 5685992 1610032 5685920 1601088 5681704 1609400 5689560 -1609672 5689488 1610096 5686136 1610032 5685992 1609400 5689560 -1609672 5689488 1610248 5688560 1610096 5686136 1609400 5689560 -1610248 5688560 1610368 5688304 1610096 5686136 1609400 5689560 -1610096 5686136 1610032 5685992 1609400 5689560 1610248 5688560 -1609672 5689488 1610248 5688560 1609400 5689560 1610008 5689456 -1610032 5685992 1601088 5681704 1609400 5689560 1610096 5686136 -1601088 5681704 1600992 5681736 1609400 5689560 1610032 5685992 -1609672 5689488 1610224 5688760 1610248 5688560 1609400 5689560 -1609672 5689488 1610232 5688872 1610224 5688760 1609400 5689560 -1610248 5688560 1610096 5686136 1609400 5689560 1610224 5688760 -1609672 5689488 1610224 5688760 1609400 5689560 1610008 5689456 -1602016 5695848 1609280 5689560 1600992 5681736 1601824 5695840 -1609400 5689560 1609280 5689560 1602016 5695848 1602112 5695896 -1609400 5689560 1600992 5681736 1609280 5689560 1602112 5695896 -1600992 5681736 1609280 5689560 1609400 5689560 1601088 5681704 -1600992 5681736 1602016 5695848 1609280 5689560 1601088 5681704 -1609280 5689560 1602112 5695896 1609400 5689560 1601088 5681704 -1609280 5689560 1600992 5681736 1602016 5695848 1602112 5695896 -1609400 5689560 1609280 5689560 1602112 5695896 1602160 5695928 -1609280 5689560 1602016 5695848 1602112 5695896 1602160 5695928 -1609400 5689560 1601088 5681704 1609280 5689560 1602160 5695928 -1609400 5689560 1609280 5689560 1602160 5695928 1602200 5696008 -1609400 5689560 1609280 5689560 1602200 5696008 1602224 5696056 -1609400 5689560 1609280 5689560 1602224 5696056 1612120 5695192 -1609280 5689560 1602200 5696008 1602224 5696056 1612120 5695192 -1602224 5696056 1608544 5699312 1612120 5695192 1609280 5689560 -1609400 5689560 1609280 5689560 1612120 5695192 1612136 5695120 -1609400 5689560 1609280 5689560 1612136 5695120 1612400 5693248 -1609400 5689560 1609280 5689560 1612400 5693248 1612408 5693168 -1609280 5689560 1612136 5695120 1612400 5693248 1612408 5693168 -1612136 5695120 1612440 5693432 1612400 5693248 1609280 5689560 -1609280 5689560 1612120 5695192 1612136 5695120 1612400 5693248 -1609400 5689560 1609280 5689560 1612408 5693168 1610008 5689456 -1609280 5689560 1602224 5696056 1612120 5695192 1612136 5695120 -1609400 5689560 1601088 5681704 1609280 5689560 1612408 5693168 -1609280 5689560 1602112 5695896 1602160 5695928 1602200 5696008 -1609280 5689560 1602160 5695928 1602200 5696008 1602224 5696056 -1609400 5689560 1610032 5685992 1601088 5681704 1609280 5689560 -1610032 5685992 1610032 5685920 1601088 5681704 1609280 5689560 -1609400 5689560 1610032 5685992 1609280 5689560 1612408 5693168 -1601088 5681704 1600992 5681736 1609280 5689560 1610032 5685992 -1609400 5689560 1610096 5686136 1610032 5685992 1609280 5689560 -1609400 5689560 1610248 5688560 1610096 5686136 1609280 5689560 -1610248 5688560 1610368 5688304 1610096 5686136 1609280 5689560 -1609400 5689560 1610224 5688760 1610248 5688560 1609280 5689560 -1610248 5688560 1610096 5686136 1609280 5689560 1610224 5688760 -1609400 5689560 1610224 5688760 1609280 5689560 1612408 5693168 -1610096 5686136 1610032 5685992 1609280 5689560 1610248 5688560 -1610032 5685992 1601088 5681704 1609280 5689560 1610096 5686136 -1609400 5689560 1609672 5689488 1610224 5688760 1609280 5689560 -1609672 5689488 1610232 5688872 1610224 5688760 1609280 5689560 -1610224 5688760 1610248 5688560 1609280 5689560 1609672 5689488 -1609400 5689560 1609672 5689488 1609280 5689560 1612408 5693168 -1602016 5695848 1609232 5689536 1600992 5681736 1601824 5695840 -1600992 5681736 1600928 5681744 1601824 5695840 1609232 5689536 -1600992 5681736 1609232 5689536 1609280 5689560 1601088 5681704 -1609232 5689536 1602016 5695848 1609280 5689560 1601088 5681704 -1602016 5695848 1609280 5689560 1609232 5689536 1601824 5695840 -1609232 5689536 1601088 5681704 1600992 5681736 1601824 5695840 -1609280 5689560 1610032 5685992 1601088 5681704 1609232 5689536 -1610032 5685992 1610032 5685920 1601088 5681704 1609232 5689536 -1609280 5689560 1610032 5685992 1609232 5689536 1602016 5695848 -1601088 5681704 1600992 5681736 1609232 5689536 1610032 5685992 -1609280 5689560 1609232 5689536 1602016 5695848 1602112 5695896 -1609280 5689560 1610032 5685992 1609232 5689536 1602112 5695896 -1609232 5689536 1601824 5695840 1602016 5695848 1602112 5695896 -1609280 5689560 1609232 5689536 1602112 5695896 1602160 5695928 -1609280 5689560 1610032 5685992 1609232 5689536 1602160 5695928 -1609232 5689536 1602016 5695848 1602112 5695896 1602160 5695928 -1609280 5689560 1609232 5689536 1602160 5695928 1602200 5696008 -1609280 5689560 1610032 5685992 1609232 5689536 1602200 5696008 -1609232 5689536 1602112 5695896 1602160 5695928 1602200 5696008 -1609280 5689560 1609232 5689536 1602200 5696008 1602224 5696056 -1609280 5689560 1609232 5689536 1602224 5696056 1612120 5695192 -1609280 5689560 1610032 5685992 1609232 5689536 1602224 5696056 -1609232 5689536 1602160 5695928 1602200 5696008 1602224 5696056 -1609280 5689560 1610096 5686136 1610032 5685992 1609232 5689536 -1609280 5689560 1610096 5686136 1609232 5689536 1602224 5696056 -1610032 5685992 1601088 5681704 1609232 5689536 1610096 5686136 -1609280 5689560 1610248 5688560 1610096 5686136 1609232 5689536 -1610248 5688560 1610368 5688304 1610096 5686136 1609232 5689536 -1609280 5689560 1610224 5688760 1610248 5688560 1609232 5689536 -1609280 5689560 1609672 5689488 1610224 5688760 1609232 5689536 -1609672 5689488 1610232 5688872 1610224 5688760 1609232 5689536 -1610224 5688760 1610248 5688560 1609232 5689536 1609672 5689488 -1609280 5689560 1609672 5689488 1609232 5689536 1602224 5696056 -1610248 5688560 1610096 5686136 1609232 5689536 1610224 5688760 -1610096 5686136 1610032 5685992 1609232 5689536 1610248 5688560 -1609280 5689560 1609400 5689560 1609672 5689488 1609232 5689536 -1609672 5689488 1610224 5688760 1609232 5689536 1609400 5689560 -1609280 5689560 1609400 5689560 1609232 5689536 1602224 5696056 -1609232 5689536 1609240 5689504 1610032 5685992 1601088 5681704 -1609240 5689504 1610096 5686136 1610032 5685992 1601088 5681704 -1610032 5685992 1610032 5685920 1601088 5681704 1609240 5689504 -1609232 5689536 1609240 5689504 1601088 5681704 1600992 5681736 -1609232 5689536 1610096 5686136 1609240 5689504 1600992 5681736 -1609232 5689536 1609240 5689504 1600992 5681736 1601824 5695840 -1609240 5689504 1610032 5685992 1601088 5681704 1600992 5681736 -1610096 5686136 1609240 5689504 1609232 5689536 1610248 5688560 -1610096 5686136 1609240 5689504 1610248 5688560 1610368 5688304 -1610096 5686136 1610032 5685992 1609240 5689504 1610368 5688304 -1610096 5686136 1609240 5689504 1610368 5688304 1610272 5686400 -1609240 5689504 1600992 5681736 1609232 5689536 1610248 5688560 -1609232 5689536 1610224 5688760 1610248 5688560 1609240 5689504 -1609232 5689536 1609672 5689488 1610224 5688760 1609240 5689504 -1609672 5689488 1610232 5688872 1610224 5688760 1609240 5689504 -1609232 5689536 1609400 5689560 1609672 5689488 1609240 5689504 -1609672 5689488 1610224 5688760 1609240 5689504 1609400 5689560 -1609232 5689536 1609400 5689560 1609240 5689504 1600992 5681736 -1610224 5688760 1610248 5688560 1609240 5689504 1609672 5689488 -1609240 5689504 1610224 5688760 1610248 5688560 1610368 5688304 -1609232 5689536 1609280 5689560 1609400 5689560 1609240 5689504 -1609400 5689560 1609672 5689488 1609240 5689504 1609280 5689560 -1609232 5689536 1609280 5689560 1609240 5689504 1600992 5681736 -1610032 5685992 1609160 5689392 1609240 5689504 1610096 5686136 -1609160 5689392 1601088 5681704 1609240 5689504 1610096 5686136 -1609240 5689504 1610368 5688304 1610096 5686136 1609160 5689392 -1609240 5689504 1610248 5688560 1610368 5688304 1609160 5689392 -1609240 5689504 1610248 5688560 1609160 5689392 1601088 5681704 -1610368 5688304 1610096 5686136 1609160 5689392 1610248 5688560 -1610096 5686136 1610032 5685992 1609160 5689392 1610368 5688304 -1610032 5685992 1601088 5681704 1609160 5689392 1610096 5686136 -1601088 5681704 1609160 5689392 1610032 5685992 1610032 5685920 -1610368 5688304 1610272 5686400 1610096 5686136 1609160 5689392 -1610368 5688304 1610536 5688000 1610272 5686400 1609160 5689392 -1610368 5688304 1610272 5686400 1609160 5689392 1610248 5688560 -1610096 5686136 1610032 5685992 1609160 5689392 1610272 5686400 -1609240 5689504 1609160 5689392 1601088 5681704 1600992 5681736 -1609240 5689504 1610248 5688560 1609160 5689392 1600992 5681736 -1609160 5689392 1610032 5685992 1601088 5681704 1600992 5681736 -1609240 5689504 1609160 5689392 1600992 5681736 1609232 5689536 -1609240 5689504 1610248 5688560 1609160 5689392 1609232 5689536 -1600992 5681736 1601824 5695840 1609232 5689536 1609160 5689392 -1600992 5681736 1600928 5681744 1601824 5695840 1609160 5689392 -1601824 5695840 1602016 5695848 1609232 5689536 1609160 5689392 -1609232 5689536 1609240 5689504 1609160 5689392 1602016 5695848 -1602016 5695848 1602112 5695896 1609232 5689536 1609160 5689392 -1602016 5695848 1602112 5695896 1609160 5689392 1601824 5695840 -1609232 5689536 1609240 5689504 1609160 5689392 1602112 5695896 -1601824 5695840 1602016 5695848 1609160 5689392 1600992 5681736 -1609160 5689392 1601088 5681704 1600992 5681736 1601824 5695840 -1602112 5695896 1602160 5695928 1609232 5689536 1609160 5689392 -1609240 5689504 1610224 5688760 1610248 5688560 1609160 5689392 -1610248 5688560 1610368 5688304 1609160 5689392 1610224 5688760 -1609240 5689504 1610224 5688760 1609160 5689392 1609232 5689536 -1609240 5689504 1609672 5689488 1610224 5688760 1609160 5689392 -1609240 5689504 1609672 5689488 1609160 5689392 1609232 5689536 -1609672 5689488 1610232 5688872 1610224 5688760 1609160 5689392 -1609240 5689504 1609400 5689560 1609672 5689488 1609160 5689392 -1609240 5689504 1609400 5689560 1609160 5689392 1609232 5689536 -1609240 5689504 1609280 5689560 1609400 5689560 1609160 5689392 -1609672 5689488 1610224 5688760 1609160 5689392 1609400 5689560 -1610224 5688760 1610248 5688560 1609160 5689392 1609672 5689488 -1601824 5695840 1609120 5689368 1600992 5681736 1600928 5681744 -1609160 5689392 1609120 5689368 1601824 5695840 1602016 5695848 -1609160 5689392 1600992 5681736 1609120 5689368 1602016 5695848 -1609120 5689368 1600992 5681736 1601824 5695840 1602016 5695848 -1609160 5689392 1609120 5689368 1602016 5695848 1602112 5695896 -1609160 5689392 1600992 5681736 1609120 5689368 1602112 5695896 -1609160 5689392 1609120 5689368 1602112 5695896 1609232 5689536 -1609160 5689392 1600992 5681736 1609120 5689368 1609232 5689536 -1609120 5689368 1602016 5695848 1602112 5695896 1609232 5689536 -1609160 5689392 1609120 5689368 1609232 5689536 1609240 5689504 -1609120 5689368 1601824 5695840 1602016 5695848 1602112 5695896 -1600992 5681736 1609120 5689368 1609160 5689392 1601088 5681704 -1609120 5689368 1609232 5689536 1609160 5689392 1601088 5681704 -1600992 5681736 1601824 5695840 1609120 5689368 1601088 5681704 -1609160 5689392 1610032 5685992 1601088 5681704 1609120 5689368 -1609160 5689392 1610032 5685992 1609120 5689368 1609232 5689536 -1609160 5689392 1610096 5686136 1610032 5685992 1609120 5689368 -1609160 5689392 1610096 5686136 1609120 5689368 1609232 5689536 -1610032 5685992 1601088 5681704 1609120 5689368 1610096 5686136 -1609160 5689392 1610272 5686400 1610096 5686136 1609120 5689368 -1609160 5689392 1610272 5686400 1609120 5689368 1609232 5689536 -1610096 5686136 1610032 5685992 1609120 5689368 1610272 5686400 -1610032 5685992 1610032 5685920 1601088 5681704 1609120 5689368 -1609160 5689392 1610368 5688304 1610272 5686400 1609120 5689368 -1610368 5688304 1610536 5688000 1610272 5686400 1609120 5689368 -1609160 5689392 1610368 5688304 1609120 5689368 1609232 5689536 -1609160 5689392 1610248 5688560 1610368 5688304 1609120 5689368 -1609160 5689392 1610224 5688760 1610248 5688560 1609120 5689368 -1609160 5689392 1610224 5688760 1609120 5689368 1609232 5689536 -1610248 5688560 1610368 5688304 1609120 5689368 1610224 5688760 -1610272 5686400 1610096 5686136 1609120 5689368 1610368 5688304 -1610368 5688304 1610272 5686400 1609120 5689368 1610248 5688560 -1601088 5681704 1600992 5681736 1609120 5689368 1610032 5685992 -1602112 5695896 1602160 5695928 1609232 5689536 1609120 5689368 -1602112 5695896 1602160 5695928 1609120 5689368 1602016 5695848 -1609232 5689536 1609160 5689392 1609120 5689368 1602160 5695928 -1602160 5695928 1602200 5696008 1609232 5689536 1609120 5689368 -1609160 5689392 1609672 5689488 1610224 5688760 1609120 5689368 -1601824 5695840 1609040 5689376 1600992 5681736 1600928 5681744 -1609120 5689368 1609040 5689376 1601824 5695840 1602016 5695848 -1609120 5689368 1600992 5681736 1609040 5689376 1602016 5695848 -1600992 5681736 1609040 5689376 1609120 5689368 1601088 5681704 -1609040 5689376 1602016 5695848 1609120 5689368 1601088 5681704 -1609040 5689376 1600992 5681736 1601824 5695840 1602016 5695848 -1600992 5681736 1601824 5695840 1609040 5689376 1601088 5681704 -1609120 5689368 1609040 5689376 1602016 5695848 1602112 5695896 -1609040 5689376 1601824 5695840 1602016 5695848 1602112 5695896 -1609120 5689368 1601088 5681704 1609040 5689376 1602112 5695896 -1609120 5689368 1609040 5689376 1602112 5695896 1602160 5695928 -1609120 5689368 1601088 5681704 1609040 5689376 1602160 5695928 -1609040 5689376 1602016 5695848 1602112 5695896 1602160 5695928 -1609120 5689368 1610032 5685992 1601088 5681704 1609040 5689376 -1609120 5689368 1610032 5685992 1609040 5689376 1602160 5695928 -1601088 5681704 1600992 5681736 1609040 5689376 1610032 5685992 -1609120 5689368 1610096 5686136 1610032 5685992 1609040 5689376 -1609120 5689368 1610096 5686136 1609040 5689376 1602160 5695928 -1609120 5689368 1610272 5686400 1610096 5686136 1609040 5689376 -1609120 5689368 1610272 5686400 1609040 5689376 1602160 5695928 -1610096 5686136 1610032 5685992 1609040 5689376 1610272 5686400 -1609120 5689368 1610368 5688304 1610272 5686400 1609040 5689376 -1610368 5688304 1610536 5688000 1610272 5686400 1609040 5689376 -1609120 5689368 1610368 5688304 1609040 5689376 1602160 5695928 -1610272 5686400 1610096 5686136 1609040 5689376 1610368 5688304 -1610032 5685992 1610032 5685920 1601088 5681704 1609040 5689376 -1609120 5689368 1610248 5688560 1610368 5688304 1609040 5689376 -1609120 5689368 1610248 5688560 1609040 5689376 1602160 5695928 -1609120 5689368 1610224 5688760 1610248 5688560 1609040 5689376 -1610368 5688304 1610272 5686400 1609040 5689376 1610248 5688560 -1610032 5685992 1601088 5681704 1609040 5689376 1610096 5686136 -1609120 5689368 1609040 5689376 1602160 5695928 1609232 5689536 -1609120 5689368 1610248 5688560 1609040 5689376 1609232 5689536 -1609040 5689376 1602112 5695896 1602160 5695928 1609232 5689536 -1609120 5689368 1609040 5689376 1609232 5689536 1609160 5689392 -1609120 5689368 1610248 5688560 1609040 5689376 1609160 5689392 -1609232 5689536 1609240 5689504 1609160 5689392 1609040 5689376 -1602160 5695928 1602200 5696008 1609232 5689536 1609040 5689376 -1609040 5689376 1602160 5695928 1609232 5689536 1609160 5689392 -1601824 5695840 1608984 5689416 1600992 5681736 1600928 5681744 -1609040 5689376 1608984 5689416 1601824 5695840 1602016 5695848 -1609040 5689376 1608984 5689416 1602016 5695848 1602112 5695896 -1608984 5689416 1601824 5695840 1602016 5695848 1602112 5695896 -1609040 5689376 1600992 5681736 1608984 5689416 1602112 5695896 -1600992 5681736 1608984 5689416 1609040 5689376 1601088 5681704 -1609040 5689376 1610032 5685992 1601088 5681704 1608984 5689416 -1610032 5685992 1610032 5685920 1601088 5681704 1608984 5689416 -1608984 5689416 1602112 5695896 1609040 5689376 1610032 5685992 -1601088 5681704 1600992 5681736 1608984 5689416 1610032 5685992 -1608984 5689416 1600992 5681736 1601824 5695840 1602016 5695848 -1600992 5681736 1601824 5695840 1608984 5689416 1601088 5681704 -1609040 5689376 1608984 5689416 1602112 5695896 1602160 5695928 -1608984 5689416 1602016 5695848 1602112 5695896 1602160 5695928 -1609040 5689376 1610032 5685992 1608984 5689416 1602160 5695928 -1609040 5689376 1608984 5689416 1602160 5695928 1609232 5689536 -1609040 5689376 1610032 5685992 1608984 5689416 1609232 5689536 -1608984 5689416 1602112 5695896 1602160 5695928 1609232 5689536 -1602160 5695928 1602200 5696008 1609232 5689536 1608984 5689416 -1609232 5689536 1609040 5689376 1608984 5689416 1602200 5696008 -1602160 5695928 1602200 5696008 1608984 5689416 1602112 5695896 -1609040 5689376 1610096 5686136 1610032 5685992 1608984 5689416 -1609040 5689376 1608984 5689416 1609232 5689536 1609160 5689392 -1609040 5689376 1610032 5685992 1608984 5689416 1609160 5689392 -1608984 5689416 1602200 5696008 1609232 5689536 1609160 5689392 -1609232 5689536 1609240 5689504 1609160 5689392 1608984 5689416 -1609040 5689376 1608984 5689416 1609160 5689392 1609120 5689368 -1602200 5696008 1602224 5696056 1609232 5689536 1608984 5689416 -1609232 5689536 1609160 5689392 1608984 5689416 1602224 5696056 -1602200 5696008 1602224 5696056 1608984 5689416 1602160 5695928 -1602224 5696056 1609280 5689560 1609232 5689536 1608984 5689416 -1601824 5695840 1608896 5689464 1600992 5681736 1600928 5681744 -1608984 5689416 1608896 5689464 1601824 5695840 1602016 5695848 -1608984 5689416 1608896 5689464 1602016 5695848 1602112 5695896 -1608984 5689416 1608896 5689464 1602112 5695896 1602160 5695928 -1608896 5689464 1602016 5695848 1602112 5695896 1602160 5695928 -1608896 5689464 1600992 5681736 1601824 5695840 1602016 5695848 -1608896 5689464 1601824 5695840 1602016 5695848 1602112 5695896 -1608984 5689416 1600992 5681736 1608896 5689464 1602160 5695928 -1600992 5681736 1608896 5689464 1608984 5689416 1601088 5681704 -1600992 5681736 1601824 5695840 1608896 5689464 1601088 5681704 -1608984 5689416 1610032 5685992 1601088 5681704 1608896 5689464 -1608984 5689416 1609040 5689376 1610032 5685992 1608896 5689464 -1610032 5685992 1610032 5685920 1601088 5681704 1608896 5689464 -1610032 5685992 1601088 5681704 1608896 5689464 1609040 5689376 -1608896 5689464 1602160 5695928 1608984 5689416 1609040 5689376 -1601088 5681704 1600992 5681736 1608896 5689464 1610032 5685992 -1608984 5689416 1608896 5689464 1602160 5695928 1602200 5696008 -1608896 5689464 1602112 5695896 1602160 5695928 1602200 5696008 -1608984 5689416 1609040 5689376 1608896 5689464 1602200 5696008 -1608984 5689416 1608896 5689464 1602200 5696008 1602224 5696056 -1608984 5689416 1609040 5689376 1608896 5689464 1602224 5696056 -1608896 5689464 1602160 5695928 1602200 5696008 1602224 5696056 -1609040 5689376 1610096 5686136 1610032 5685992 1608896 5689464 -1608984 5689416 1608896 5689464 1602224 5696056 1609232 5689536 -1608984 5689416 1609040 5689376 1608896 5689464 1609232 5689536 -1608984 5689416 1608896 5689464 1609232 5689536 1609160 5689392 -1608896 5689464 1602200 5696008 1602224 5696056 1609232 5689536 -1602224 5696056 1609280 5689560 1609232 5689536 1608896 5689464 -1602224 5696056 1612120 5695192 1609280 5689560 1608896 5689464 -1602224 5696056 1608544 5699312 1612120 5695192 1608896 5689464 -1612120 5695192 1612136 5695120 1609280 5689560 1608896 5689464 -1612120 5695192 1612136 5695120 1608896 5689464 1602224 5696056 -1612136 5695120 1612400 5693248 1609280 5689560 1608896 5689464 -1602224 5696056 1612120 5695192 1608896 5689464 1602200 5696008 -1609232 5689536 1608984 5689416 1608896 5689464 1609280 5689560 -1609280 5689560 1609232 5689536 1608896 5689464 1612136 5695120 -1601824 5695840 1608840 5689480 1600992 5681736 1600928 5681744 -1608840 5689480 1608896 5689464 1600992 5681736 1600928 5681744 -1608896 5689464 1608840 5689480 1601824 5695840 1602016 5695848 -1608896 5689464 1600992 5681736 1608840 5689480 1602016 5695848 -1600992 5681736 1608840 5689480 1608896 5689464 1601088 5681704 -1600992 5681736 1600928 5681744 1608840 5689480 1601088 5681704 -1608840 5689480 1602016 5695848 1608896 5689464 1601088 5681704 -1601824 5695840 1602016 5695848 1608840 5689480 1600928 5681744 -1608896 5689464 1608840 5689480 1602016 5695848 1602112 5695896 -1608896 5689464 1608840 5689480 1602112 5695896 1602160 5695928 -1608896 5689464 1608840 5689480 1602160 5695928 1602200 5696008 -1608840 5689480 1602112 5695896 1602160 5695928 1602200 5696008 -1608840 5689480 1601824 5695840 1602016 5695848 1602112 5695896 -1608896 5689464 1601088 5681704 1608840 5689480 1602200 5696008 -1608840 5689480 1602016 5695848 1602112 5695896 1602160 5695928 -1608896 5689464 1610032 5685992 1601088 5681704 1608840 5689480 -1608896 5689464 1610032 5685992 1608840 5689480 1602200 5696008 -1601088 5681704 1600992 5681736 1608840 5689480 1610032 5685992 -1610032 5685992 1610032 5685920 1601088 5681704 1608840 5689480 -1608896 5689464 1609040 5689376 1610032 5685992 1608840 5689480 -1608896 5689464 1608984 5689416 1609040 5689376 1608840 5689480 -1608896 5689464 1608984 5689416 1608840 5689480 1602200 5696008 -1609040 5689376 1610032 5685992 1608840 5689480 1608984 5689416 -1610032 5685992 1601088 5681704 1608840 5689480 1609040 5689376 -1601824 5695840 1608840 5689480 1600928 5681744 1600832 5681736 -1608896 5689464 1608840 5689480 1602200 5696008 1602224 5696056 -1608840 5689480 1602160 5695928 1602200 5696008 1602224 5696056 -1608896 5689464 1608984 5689416 1608840 5689480 1602224 5696056 -1608896 5689464 1608840 5689480 1602224 5696056 1612120 5695192 -1608896 5689464 1608984 5689416 1608840 5689480 1612120 5695192 -1608896 5689464 1608840 5689480 1612120 5695192 1612136 5695120 -1608896 5689464 1608984 5689416 1608840 5689480 1612136 5695120 -1602224 5696056 1608544 5699312 1612120 5695192 1608840 5689480 -1608896 5689464 1608840 5689480 1612136 5695120 1609280 5689560 -1608896 5689464 1608984 5689416 1608840 5689480 1609280 5689560 -1608840 5689480 1612120 5695192 1612136 5695120 1609280 5689560 -1612136 5695120 1612400 5693248 1609280 5689560 1608840 5689480 -1612400 5693248 1612408 5693168 1609280 5689560 1608840 5689480 -1612136 5695120 1612440 5693432 1612400 5693248 1608840 5689480 -1612136 5695120 1612400 5693248 1608840 5689480 1612120 5695192 -1609280 5689560 1608896 5689464 1608840 5689480 1612400 5693248 -1608840 5689480 1602200 5696008 1602224 5696056 1612120 5695192 -1608840 5689480 1602224 5696056 1612120 5695192 1612136 5695120 -1609040 5689376 1610096 5686136 1610032 5685992 1608840 5689480 -1609040 5689376 1610272 5686400 1610096 5686136 1608840 5689480 -1609040 5689376 1610096 5686136 1608840 5689480 1608984 5689416 -1610032 5685992 1601088 5681704 1608840 5689480 1610096 5686136 -1608896 5689464 1608840 5689480 1609280 5689560 1609232 5689536 -1608896 5689464 1608984 5689416 1608840 5689480 1609232 5689536 -1608840 5689480 1612400 5693248 1609280 5689560 1609232 5689536 -1608896 5689464 1608840 5689480 1609232 5689536 1608984 5689416 -1600928 5681744 1608736 5689448 1608840 5689480 1600992 5681736 -1608840 5689480 1601088 5681704 1600992 5681736 1608736 5689448 -1600992 5681736 1600928 5681744 1608736 5689448 1601088 5681704 -1608840 5689480 1610032 5685992 1601088 5681704 1608736 5689448 -1601088 5681704 1600992 5681736 1608736 5689448 1610032 5685992 -1608840 5689480 1608736 5689448 1601824 5695840 1602016 5695848 -1608736 5689448 1600928 5681744 1601824 5695840 1602016 5695848 -1608840 5689480 1608736 5689448 1602016 5695848 1602112 5695896 -1608736 5689448 1601824 5695840 1602016 5695848 1602112 5695896 -1608736 5689448 1602112 5695896 1608840 5689480 1610032 5685992 -1610032 5685992 1610032 5685920 1601088 5681704 1608736 5689448 -1601088 5681704 1600992 5681736 1608736 5689448 1610032 5685920 -1610032 5685992 1610032 5685920 1608736 5689448 1608840 5689480 -1608840 5689480 1608736 5689448 1602112 5695896 1602160 5695928 -1608840 5689480 1608736 5689448 1602160 5695928 1602200 5696008 -1608840 5689480 1608736 5689448 1602200 5696008 1602224 5696056 -1608736 5689448 1602160 5695928 1602200 5696008 1602224 5696056 -1608736 5689448 1602016 5695848 1602112 5695896 1602160 5695928 -1608840 5689480 1610032 5685992 1608736 5689448 1602224 5696056 -1608736 5689448 1602112 5695896 1602160 5695928 1602200 5696008 -1608840 5689480 1610096 5686136 1610032 5685992 1608736 5689448 -1610032 5685992 1610032 5685920 1608736 5689448 1610096 5686136 -1608840 5689480 1610096 5686136 1608736 5689448 1602224 5696056 -1601824 5695840 1608736 5689448 1600928 5681744 1600832 5681736 -1600928 5681744 1601824 5695840 1608736 5689448 1600992 5681736 -1608840 5689480 1608736 5689448 1602224 5696056 1612120 5695192 -1608736 5689448 1602200 5696008 1602224 5696056 1612120 5695192 -1608840 5689480 1610096 5686136 1608736 5689448 1612120 5695192 -1602224 5696056 1608544 5699312 1612120 5695192 1608736 5689448 -1610032 5685920 1601128 5681664 1601088 5681704 1608736 5689448 -1608840 5689480 1608736 5689448 1612120 5695192 1612136 5695120 -1608840 5689480 1609040 5689376 1610096 5686136 1608736 5689448 -1608840 5689480 1609040 5689376 1608736 5689448 1612120 5695192 -1609040 5689376 1610272 5686400 1610096 5686136 1608736 5689448 -1608840 5689480 1608984 5689416 1609040 5689376 1608736 5689448 -1608840 5689480 1608896 5689464 1608984 5689416 1608736 5689448 -1608840 5689480 1608896 5689464 1608736 5689448 1612120 5695192 -1608984 5689416 1609040 5689376 1608736 5689448 1608896 5689464 -1610096 5686136 1610032 5685992 1608736 5689448 1609040 5689376 -1609040 5689376 1610096 5686136 1608736 5689448 1608984 5689416 -1608736 5689448 1608616 5689368 1601824 5695840 1602016 5695848 -1608736 5689448 1608616 5689368 1602016 5695848 1602112 5695896 -1608616 5689368 1601824 5695840 1602016 5695848 1602112 5695896 -1608736 5689448 1608616 5689368 1602112 5695896 1602160 5695928 -1608616 5689368 1602016 5695848 1602112 5695896 1602160 5695928 -1608736 5689448 1608616 5689368 1602160 5695928 1602200 5696008 -1601824 5695840 1608616 5689368 1600928 5681744 1600832 5681736 -1608736 5689448 1600928 5681744 1608616 5689368 1602160 5695928 -1600928 5681744 1608616 5689368 1608736 5689448 1600992 5681736 -1608736 5689448 1601088 5681704 1600992 5681736 1608616 5689368 -1608736 5689448 1610032 5685920 1601088 5681704 1608616 5689368 -1601088 5681704 1600992 5681736 1608616 5689368 1610032 5685920 -1608736 5689448 1610032 5685992 1610032 5685920 1608616 5689368 -1610032 5685920 1601088 5681704 1608616 5689368 1610032 5685992 -1608736 5689448 1610096 5686136 1610032 5685992 1608616 5689368 -1610032 5685992 1610032 5685920 1608616 5689368 1610096 5686136 -1608736 5689448 1609040 5689376 1610096 5686136 1608616 5689368 -1610096 5686136 1610032 5685992 1608616 5689368 1609040 5689376 -1609040 5689376 1610272 5686400 1610096 5686136 1608616 5689368 -1610096 5686136 1610032 5685992 1608616 5689368 1610272 5686400 -1609040 5689376 1610368 5688304 1610272 5686400 1608616 5689368 -1610368 5688304 1610536 5688000 1610272 5686400 1608616 5689368 -1610272 5686400 1610096 5686136 1608616 5689368 1610368 5688304 -1609040 5689376 1610248 5688560 1610368 5688304 1608616 5689368 -1610368 5688304 1610272 5686400 1608616 5689368 1610248 5688560 -1609040 5689376 1610248 5688560 1608616 5689368 1608736 5689448 -1609040 5689376 1609120 5689368 1610248 5688560 1608616 5689368 -1608616 5689368 1602160 5695928 1608736 5689448 1609040 5689376 -1600992 5681736 1600928 5681744 1608616 5689368 1601088 5681704 -1608616 5689368 1600928 5681744 1601824 5695840 1602016 5695848 -1600928 5681744 1601824 5695840 1608616 5689368 1600992 5681736 -1610032 5685920 1601128 5681664 1601088 5681704 1608616 5689368 -1608736 5689448 1608984 5689416 1609040 5689376 1608616 5689368 -1608736 5689448 1608896 5689464 1608984 5689416 1608616 5689368 -1609040 5689376 1610248 5688560 1608616 5689368 1608984 5689416 -1608736 5689448 1608984 5689416 1608616 5689368 1602160 5695928 -1601824 5695840 1608392 5689208 1600928 5681744 1600832 5681736 -1608616 5689368 1608392 5689208 1601824 5695840 1602016 5695848 -1608392 5689208 1600928 5681744 1601824 5695840 1602016 5695848 -1608616 5689368 1608392 5689208 1602016 5695848 1602112 5695896 -1608616 5689368 1608392 5689208 1602112 5695896 1602160 5695928 -1608392 5689208 1602016 5695848 1602112 5695896 1602160 5695928 -1608616 5689368 1608392 5689208 1602160 5695928 1608736 5689448 -1608392 5689208 1601824 5695840 1602016 5695848 1602112 5695896 -1608616 5689368 1600928 5681744 1608392 5689208 1602160 5695928 -1600928 5681744 1608392 5689208 1608616 5689368 1600992 5681736 -1600928 5681744 1601824 5695840 1608392 5689208 1600992 5681736 -1608616 5689368 1601088 5681704 1600992 5681736 1608392 5689208 -1608616 5689368 1610032 5685920 1601088 5681704 1608392 5689208 -1608616 5689368 1610032 5685992 1610032 5685920 1608392 5689208 -1610032 5685920 1601088 5681704 1608392 5689208 1610032 5685992 -1608616 5689368 1610096 5686136 1610032 5685992 1608392 5689208 -1610032 5685992 1610032 5685920 1608392 5689208 1610096 5686136 -1608616 5689368 1610272 5686400 1610096 5686136 1608392 5689208 -1608616 5689368 1610368 5688304 1610272 5686400 1608392 5689208 -1610368 5688304 1610536 5688000 1610272 5686400 1608392 5689208 -1610272 5686400 1610096 5686136 1608392 5689208 1610368 5688304 -1608616 5689368 1610248 5688560 1610368 5688304 1608392 5689208 -1610368 5688304 1610272 5686400 1608392 5689208 1610248 5688560 -1608616 5689368 1609040 5689376 1610248 5688560 1608392 5689208 -1610248 5688560 1610368 5688304 1608392 5689208 1609040 5689376 -1610096 5686136 1610032 5685992 1608392 5689208 1610272 5686400 -1608616 5689368 1608984 5689416 1609040 5689376 1608392 5689208 -1609040 5689376 1609120 5689368 1610248 5688560 1608392 5689208 -1609120 5689368 1610224 5688760 1610248 5688560 1608392 5689208 -1609040 5689376 1609120 5689368 1608392 5689208 1608616 5689368 -1610248 5688560 1610368 5688304 1608392 5689208 1609120 5689368 -1601088 5681704 1600992 5681736 1608392 5689208 1610032 5685920 -1608392 5689208 1602160 5695928 1608616 5689368 1609040 5689376 -1600992 5681736 1600928 5681744 1608392 5689208 1601088 5681704 -1610032 5685920 1601128 5681664 1601088 5681704 1608392 5689208 -1610032 5685920 1601128 5681664 1608392 5689208 1610032 5685992 -1610032 5685920 1601592 5681216 1601128 5681664 1608392 5689208 -1601088 5681704 1600992 5681736 1608392 5689208 1601128 5681664 -1610032 5685920 1608288 5689072 1608392 5689208 1610032 5685992 -1608288 5689072 1601128 5681664 1608392 5689208 1610032 5685992 -1610032 5685920 1601128 5681664 1608288 5689072 1610032 5685992 -1608392 5689208 1610096 5686136 1610032 5685992 1608288 5689072 -1608392 5689208 1610096 5686136 1608288 5689072 1601128 5681664 -1610032 5685992 1610032 5685920 1608288 5689072 1610096 5686136 -1608392 5689208 1610272 5686400 1610096 5686136 1608288 5689072 -1608392 5689208 1610272 5686400 1608288 5689072 1601128 5681664 -1610096 5686136 1610032 5685992 1608288 5689072 1610272 5686400 -1608392 5689208 1610368 5688304 1610272 5686400 1608288 5689072 -1608392 5689208 1610368 5688304 1608288 5689072 1601128 5681664 -1610368 5688304 1610536 5688000 1610272 5686400 1608288 5689072 -1608392 5689208 1610248 5688560 1610368 5688304 1608288 5689072 -1608392 5689208 1610248 5688560 1608288 5689072 1601128 5681664 -1610368 5688304 1610272 5686400 1608288 5689072 1610248 5688560 -1608392 5689208 1609120 5689368 1610248 5688560 1608288 5689072 -1608392 5689208 1609120 5689368 1608288 5689072 1601128 5681664 -1609120 5689368 1610224 5688760 1610248 5688560 1608288 5689072 -1610248 5688560 1610368 5688304 1608288 5689072 1609120 5689368 -1610272 5686400 1610096 5686136 1608288 5689072 1610368 5688304 -1601128 5681664 1608288 5689072 1610032 5685920 1601592 5681216 -1608392 5689208 1609040 5689376 1609120 5689368 1608288 5689072 -1608392 5689208 1609040 5689376 1608288 5689072 1601128 5681664 -1608392 5689208 1608616 5689368 1609040 5689376 1608288 5689072 -1609120 5689368 1610248 5688560 1608288 5689072 1609040 5689376 -1608392 5689208 1608288 5689072 1601128 5681664 1601088 5681704 -1608392 5689208 1609040 5689376 1608288 5689072 1601088 5681704 -1608288 5689072 1610032 5685920 1601128 5681664 1601088 5681704 -1608392 5689208 1608288 5689072 1601088 5681704 1600992 5681736 -1608392 5689208 1609040 5689376 1608288 5689072 1600992 5681736 -1608392 5689208 1608288 5689072 1600992 5681736 1600928 5681744 -1608392 5689208 1609040 5689376 1608288 5689072 1600928 5681744 -1608392 5689208 1608288 5689072 1600928 5681744 1601824 5695840 -1608392 5689208 1608288 5689072 1601824 5695840 1602016 5695848 -1608392 5689208 1609040 5689376 1608288 5689072 1602016 5695848 -1608288 5689072 1600928 5681744 1601824 5695840 1602016 5695848 -1600928 5681744 1600832 5681736 1601824 5695840 1608288 5689072 -1608288 5689072 1601088 5681704 1600992 5681736 1600928 5681744 -1608392 5689208 1608288 5689072 1602016 5695848 1602112 5695896 -1608288 5689072 1601824 5695840 1602016 5695848 1602112 5695896 -1608392 5689208 1609040 5689376 1608288 5689072 1602112 5695896 -1608392 5689208 1608288 5689072 1602112 5695896 1602160 5695928 -1608288 5689072 1600992 5681736 1600928 5681744 1601824 5695840 -1608288 5689072 1601128 5681664 1601088 5681704 1600992 5681736 -1608288 5689072 1608240 5688912 1601128 5681664 1601088 5681704 -1608288 5689072 1610032 5685920 1608240 5688912 1601088 5681704 -1610032 5685920 1608240 5688912 1608288 5689072 1610032 5685992 -1608240 5688912 1601088 5681704 1608288 5689072 1610032 5685992 -1608288 5689072 1610096 5686136 1610032 5685992 1608240 5688912 -1608288 5689072 1610096 5686136 1608240 5688912 1601088 5681704 -1610032 5685992 1610032 5685920 1608240 5688912 1610096 5686136 -1608240 5688912 1610032 5685920 1601128 5681664 1601088 5681704 -1610032 5685920 1601128 5681664 1608240 5688912 1610032 5685992 -1608288 5689072 1610272 5686400 1610096 5686136 1608240 5688912 -1608288 5689072 1610272 5686400 1608240 5688912 1601088 5681704 -1610096 5686136 1610032 5685992 1608240 5688912 1610272 5686400 -1608288 5689072 1610368 5688304 1610272 5686400 1608240 5688912 -1608288 5689072 1610368 5688304 1608240 5688912 1601088 5681704 -1610368 5688304 1610536 5688000 1610272 5686400 1608240 5688912 -1610272 5686400 1610096 5686136 1608240 5688912 1610368 5688304 -1608288 5689072 1610248 5688560 1610368 5688304 1608240 5688912 -1608288 5689072 1610248 5688560 1608240 5688912 1601088 5681704 -1608288 5689072 1609120 5689368 1610248 5688560 1608240 5688912 -1608288 5689072 1609120 5689368 1608240 5688912 1601088 5681704 -1610248 5688560 1610368 5688304 1608240 5688912 1609120 5689368 -1609120 5689368 1610224 5688760 1610248 5688560 1608240 5688912 -1608288 5689072 1609040 5689376 1609120 5689368 1608240 5688912 -1608288 5689072 1609040 5689376 1608240 5688912 1601088 5681704 -1609120 5689368 1610248 5688560 1608240 5688912 1609040 5689376 -1610368 5688304 1610272 5686400 1608240 5688912 1610248 5688560 -1601128 5681664 1608240 5688912 1610032 5685920 1601592 5681216 -1601128 5681664 1601088 5681704 1608240 5688912 1601592 5681216 -1608240 5688912 1610032 5685992 1610032 5685920 1601592 5681216 -1608288 5689072 1608392 5689208 1609040 5689376 1608240 5688912 -1608288 5689072 1608392 5689208 1608240 5688912 1601088 5681704 -1608392 5689208 1608616 5689368 1609040 5689376 1608240 5688912 -1609040 5689376 1609120 5689368 1608240 5688912 1608392 5689208 -1601128 5681664 1608240 5688912 1601592 5681216 1601160 5681616 -1608288 5689072 1608240 5688912 1601088 5681704 1600992 5681736 -1608240 5688912 1601128 5681664 1601088 5681704 1600992 5681736 -1608288 5689072 1608392 5689208 1608240 5688912 1600992 5681736 -1608288 5689072 1608240 5688912 1600992 5681736 1600928 5681744 -1608288 5689072 1608392 5689208 1608240 5688912 1600928 5681744 -1608288 5689072 1608240 5688912 1600928 5681744 1601824 5695840 -1608288 5689072 1608240 5688912 1601824 5695840 1602016 5695848 -1608288 5689072 1608240 5688912 1602016 5695848 1602112 5695896 -1608288 5689072 1608392 5689208 1608240 5688912 1602016 5695848 -1600928 5681744 1600832 5681736 1601824 5695840 1608240 5688912 -1608240 5688912 1600992 5681736 1600928 5681744 1601824 5695840 -1608240 5688912 1600928 5681744 1601824 5695840 1602016 5695848 -1608240 5688912 1601088 5681704 1600992 5681736 1600928 5681744 -1610032 5685920 1610080 5685800 1601592 5681216 1608240 5688912 -1610032 5685920 1608224 5688712 1608240 5688912 1610032 5685992 -1608240 5688912 1610096 5686136 1610032 5685992 1608224 5688712 -1608240 5688912 1610272 5686400 1610096 5686136 1608224 5688712 -1610096 5686136 1610032 5685992 1608224 5688712 1610272 5686400 -1608224 5688712 1601592 5681216 1608240 5688912 1610272 5686400 -1610032 5685992 1610032 5685920 1608224 5688712 1610096 5686136 -1608240 5688912 1610368 5688304 1610272 5686400 1608224 5688712 -1610272 5686400 1610096 5686136 1608224 5688712 1610368 5688304 -1610368 5688304 1610536 5688000 1610272 5686400 1608224 5688712 -1608240 5688912 1610368 5688304 1608224 5688712 1601592 5681216 -1608240 5688912 1610248 5688560 1610368 5688304 1608224 5688712 -1608240 5688912 1610248 5688560 1608224 5688712 1601592 5681216 -1610368 5688304 1610272 5686400 1608224 5688712 1610248 5688560 -1608240 5688912 1609120 5689368 1610248 5688560 1608224 5688712 -1608240 5688912 1609120 5689368 1608224 5688712 1601592 5681216 -1609120 5689368 1610224 5688760 1610248 5688560 1608224 5688712 -1608240 5688912 1609040 5689376 1609120 5689368 1608224 5688712 -1608240 5688912 1609040 5689376 1608224 5688712 1601592 5681216 -1609120 5689368 1610248 5688560 1608224 5688712 1609040 5689376 -1608240 5688912 1608392 5689208 1609040 5689376 1608224 5688712 -1610248 5688560 1610368 5688304 1608224 5688712 1609120 5689368 -1608240 5688912 1608224 5688712 1601592 5681216 1601128 5681664 -1608240 5688912 1608224 5688712 1601128 5681664 1601088 5681704 -1608240 5688912 1608224 5688712 1601088 5681704 1600992 5681736 -1608224 5688712 1601128 5681664 1601088 5681704 1600992 5681736 -1608240 5688912 1609040 5689376 1608224 5688712 1600992 5681736 -1608224 5688712 1610032 5685920 1601592 5681216 1601128 5681664 -1608224 5688712 1601592 5681216 1601128 5681664 1601088 5681704 -1610032 5685920 1601592 5681216 1608224 5688712 1610032 5685992 -1601592 5681216 1601160 5681616 1601128 5681664 1608224 5688712 -1608240 5688912 1608224 5688712 1600992 5681736 1600928 5681744 -1608224 5688712 1601088 5681704 1600992 5681736 1600928 5681744 -1608240 5688912 1609040 5689376 1608224 5688712 1600928 5681744 -1608240 5688912 1608224 5688712 1600928 5681744 1601824 5695840 -1608240 5688912 1609040 5689376 1608224 5688712 1601824 5695840 -1600928 5681744 1600832 5681736 1601824 5695840 1608224 5688712 -1608240 5688912 1608224 5688712 1601824 5695840 1602016 5695848 -1608224 5688712 1600992 5681736 1600928 5681744 1601824 5695840 -1601592 5681216 1608224 5688712 1610032 5685920 1610080 5685800 -1608224 5688712 1608200 5688584 1601592 5681216 1601128 5681664 -1608224 5688712 1608200 5688584 1601128 5681664 1601088 5681704 -1608224 5688712 1608200 5688584 1601088 5681704 1600992 5681736 -1608224 5688712 1608200 5688584 1600992 5681736 1600928 5681744 -1608200 5688584 1601088 5681704 1600992 5681736 1600928 5681744 -1608200 5688584 1601592 5681216 1601128 5681664 1601088 5681704 -1608200 5688584 1601128 5681664 1601088 5681704 1600992 5681736 -1608224 5688712 1610032 5685920 1608200 5688584 1600928 5681744 -1610032 5685920 1608200 5688584 1608224 5688712 1610032 5685992 -1608224 5688712 1610096 5686136 1610032 5685992 1608200 5688584 -1608224 5688712 1610272 5686400 1610096 5686136 1608200 5688584 -1608224 5688712 1610368 5688304 1610272 5686400 1608200 5688584 -1610368 5688304 1610536 5688000 1610272 5686400 1608200 5688584 -1610368 5688304 1610536 5688000 1608200 5688584 1608224 5688712 -1610272 5686400 1610096 5686136 1608200 5688584 1610536 5688000 -1610096 5686136 1610032 5685992 1608200 5688584 1610272 5686400 -1608224 5688712 1610248 5688560 1610368 5688304 1608200 5688584 -1610368 5688304 1610536 5688000 1608200 5688584 1610248 5688560 -1608224 5688712 1609120 5689368 1610248 5688560 1608200 5688584 -1610248 5688560 1610368 5688304 1608200 5688584 1609120 5689368 -1608224 5688712 1609040 5689376 1609120 5689368 1608200 5688584 -1609120 5689368 1610224 5688760 1610248 5688560 1608200 5688584 -1610536 5688000 1610560 5686784 1610272 5686400 1608200 5688584 -1608200 5688584 1600928 5681744 1608224 5688712 1609120 5689368 -1610032 5685992 1610032 5685920 1608200 5688584 1610096 5686136 -1608200 5688584 1610032 5685920 1601592 5681216 1601128 5681664 -1610032 5685920 1601592 5681216 1608200 5688584 1610032 5685992 -1601592 5681216 1601160 5681616 1601128 5681664 1608200 5688584 -1608224 5688712 1608200 5688584 1600928 5681744 1601824 5695840 -1608200 5688584 1600992 5681736 1600928 5681744 1601824 5695840 -1608224 5688712 1609120 5689368 1608200 5688584 1601824 5695840 -1600928 5681744 1600832 5681736 1601824 5695840 1608200 5688584 -1608224 5688712 1608200 5688584 1601824 5695840 1608240 5688912 -1608224 5688712 1609120 5689368 1608200 5688584 1608240 5688912 -1601824 5695840 1602016 5695848 1608240 5688912 1608200 5688584 -1608200 5688584 1600928 5681744 1601824 5695840 1608240 5688912 -1601592 5681216 1608200 5688584 1610032 5685920 1610080 5685800 -1608200 5688584 1608072 5688280 1601592 5681216 1601128 5681664 -1608200 5688584 1608072 5688280 1601128 5681664 1601088 5681704 -1608200 5688584 1608072 5688280 1601088 5681704 1600992 5681736 -1608200 5688584 1608072 5688280 1600992 5681736 1600928 5681744 -1608200 5688584 1608072 5688280 1600928 5681744 1601824 5695840 -1608072 5688280 1600992 5681736 1600928 5681744 1601824 5695840 -1608072 5688280 1601128 5681664 1601088 5681704 1600992 5681736 -1608072 5688280 1601088 5681704 1600992 5681736 1600928 5681744 -1608072 5688280 1601592 5681216 1601128 5681664 1601088 5681704 -1608200 5688584 1610032 5685920 1608072 5688280 1601824 5695840 -1610032 5685920 1608072 5688280 1608200 5688584 1610032 5685992 -1608200 5688584 1610096 5686136 1610032 5685992 1608072 5688280 -1608200 5688584 1610272 5686400 1610096 5686136 1608072 5688280 -1608200 5688584 1610536 5688000 1610272 5686400 1608072 5688280 -1608200 5688584 1610368 5688304 1610536 5688000 1608072 5688280 -1608200 5688584 1610248 5688560 1610368 5688304 1608072 5688280 -1610368 5688304 1610536 5688000 1608072 5688280 1610248 5688560 -1610536 5688000 1610272 5686400 1608072 5688280 1610368 5688304 -1610272 5686400 1610096 5686136 1608072 5688280 1610536 5688000 -1608200 5688584 1609120 5689368 1610248 5688560 1608072 5688280 -1610536 5688000 1610560 5686784 1610272 5686400 1608072 5688280 -1610096 5686136 1610032 5685992 1608072 5688280 1610272 5686400 -1608072 5688280 1601824 5695840 1608200 5688584 1610248 5688560 -1610032 5685992 1610032 5685920 1608072 5688280 1610096 5686136 -1601592 5681216 1601160 5681616 1601128 5681664 1608072 5688280 -1600928 5681744 1600832 5681736 1601824 5695840 1608072 5688280 -1608072 5688280 1610032 5685920 1601592 5681216 1601128 5681664 -1610032 5685920 1601592 5681216 1608072 5688280 1610032 5685992 -1608200 5688584 1608072 5688280 1601824 5695840 1608240 5688912 -1608072 5688280 1600928 5681744 1601824 5695840 1608240 5688912 -1608200 5688584 1610248 5688560 1608072 5688280 1608240 5688912 -1608200 5688584 1608072 5688280 1608240 5688912 1608224 5688712 -1608200 5688584 1610248 5688560 1608072 5688280 1608224 5688712 -1601824 5695840 1602016 5695848 1608240 5688912 1608072 5688280 -1602016 5695848 1608288 5689072 1608240 5688912 1608072 5688280 -1601824 5695840 1602016 5695848 1608072 5688280 1600928 5681744 -1608072 5688280 1602016 5695848 1608240 5688912 1608224 5688712 -1601592 5681216 1608072 5688280 1610032 5685920 1610080 5685800 -1608072 5688280 1608040 5688080 1601592 5681216 1601128 5681664 -1608072 5688280 1608040 5688080 1601128 5681664 1601088 5681704 -1608072 5688280 1608040 5688080 1601088 5681704 1600992 5681736 -1608072 5688280 1608040 5688080 1600992 5681736 1600928 5681744 -1608072 5688280 1608040 5688080 1600928 5681744 1601824 5695840 -1608072 5688280 1608040 5688080 1601824 5695840 1602016 5695848 -1608040 5688080 1601088 5681704 1600992 5681736 1600928 5681744 -1608040 5688080 1600992 5681736 1600928 5681744 1601824 5695840 -1608040 5688080 1601128 5681664 1601088 5681704 1600992 5681736 -1601592 5681216 1601160 5681616 1601128 5681664 1608040 5688080 -1600928 5681744 1600832 5681736 1601824 5695840 1608040 5688080 -1608040 5688080 1601592 5681216 1601128 5681664 1601088 5681704 -1608072 5688280 1610032 5685920 1608040 5688080 1601824 5695840 -1610032 5685920 1608040 5688080 1608072 5688280 1610032 5685992 -1608072 5688280 1610096 5686136 1610032 5685992 1608040 5688080 -1608072 5688280 1610272 5686400 1610096 5686136 1608040 5688080 -1608072 5688280 1610536 5688000 1610272 5686400 1608040 5688080 -1608072 5688280 1610368 5688304 1610536 5688000 1608040 5688080 -1608072 5688280 1610248 5688560 1610368 5688304 1608040 5688080 -1608072 5688280 1608200 5688584 1610248 5688560 1608040 5688080 -1610248 5688560 1610368 5688304 1608040 5688080 1608200 5688584 -1610368 5688304 1610536 5688000 1608040 5688080 1610248 5688560 -1610536 5688000 1610272 5686400 1608040 5688080 1610368 5688304 -1608200 5688584 1609120 5689368 1610248 5688560 1608040 5688080 -1610536 5688000 1610560 5686784 1610272 5686400 1608040 5688080 -1610272 5686400 1610096 5686136 1608040 5688080 1610536 5688000 -1610096 5686136 1610032 5685992 1608040 5688080 1610272 5686400 -1610032 5685920 1601592 5681216 1608040 5688080 1610032 5685992 -1608040 5688080 1601824 5695840 1608072 5688280 1608200 5688584 -1610032 5685992 1610032 5685920 1608040 5688080 1610096 5686136 -1608040 5688080 1610032 5685920 1601592 5681216 1601128 5681664 -1601592 5681216 1608040 5688080 1610032 5685920 1610080 5685800 -1608040 5688080 1610032 5685992 1610032 5685920 1610080 5685800 -1601592 5681216 1601128 5681664 1608040 5688080 1610080 5685800 -1601592 5681216 1608040 5688080 1610080 5685800 1610432 5683632 -1601592 5681216 1608040 5688080 1610432 5683632 1610432 5683584 -1601592 5681216 1601128 5681664 1608040 5688080 1610432 5683632 -1608040 5688080 1610032 5685920 1610080 5685800 1610432 5683632 -1610080 5685800 1610536 5684592 1610432 5683632 1608040 5688080 -1601592 5681216 1608048 5687808 1610432 5683632 1610432 5683584 -1608040 5688080 1608048 5687808 1601592 5681216 1601128 5681664 -1608048 5687808 1610432 5683632 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1608048 5687808 -1608040 5688080 1608048 5687808 1601128 5681664 1601088 5681704 -1608040 5688080 1608048 5687808 1601088 5681704 1600992 5681736 -1608040 5688080 1608048 5687808 1600992 5681736 1600928 5681744 -1608048 5687808 1601128 5681664 1601088 5681704 1600992 5681736 -1608048 5687808 1601592 5681216 1601128 5681664 1601088 5681704 -1608040 5688080 1610432 5683632 1608048 5687808 1600992 5681736 -1610432 5683632 1608048 5687808 1608040 5688080 1610080 5685800 -1610432 5683632 1601592 5681216 1608048 5687808 1610080 5685800 -1608048 5687808 1600992 5681736 1608040 5688080 1610080 5685800 -1608040 5688080 1610032 5685920 1610080 5685800 1608048 5687808 -1608040 5688080 1610032 5685992 1610032 5685920 1608048 5687808 -1608040 5688080 1610096 5686136 1610032 5685992 1608048 5687808 -1608040 5688080 1610272 5686400 1610096 5686136 1608048 5687808 -1608040 5688080 1610536 5688000 1610272 5686400 1608048 5687808 -1608040 5688080 1610368 5688304 1610536 5688000 1608048 5687808 -1608040 5688080 1610248 5688560 1610368 5688304 1608048 5687808 -1608040 5688080 1608200 5688584 1610248 5688560 1608048 5687808 -1610368 5688304 1610536 5688000 1608048 5687808 1610248 5688560 -1610536 5688000 1610560 5686784 1610272 5686400 1608048 5687808 -1610536 5688000 1610272 5686400 1608048 5687808 1610368 5688304 -1610272 5686400 1610096 5686136 1608048 5687808 1610536 5688000 -1610032 5685992 1610032 5685920 1608048 5687808 1610096 5686136 -1610096 5686136 1610032 5685992 1608048 5687808 1610272 5686400 -1608040 5688080 1610248 5688560 1608048 5687808 1600992 5681736 -1610080 5685800 1610432 5683632 1608048 5687808 1610032 5685920 -1610032 5685920 1610080 5685800 1608048 5687808 1610032 5685992 -1610432 5683632 1608048 5687808 1610080 5685800 1610536 5684592 -1608048 5687808 1608160 5687640 1610432 5683632 1601592 5681216 -1610432 5683632 1610432 5683584 1601592 5681216 1608160 5687640 -1608048 5687808 1608160 5687640 1601592 5681216 1601128 5681664 -1608048 5687808 1610080 5685800 1608160 5687640 1601128 5681664 -1601592 5681216 1601128 5681664 1608160 5687640 1610432 5683584 -1608160 5687640 1610080 5685800 1610432 5683632 1610432 5683584 -1601592 5681216 1601160 5681616 1601128 5681664 1608160 5687640 -1610432 5683584 1601624 5681136 1601592 5681216 1608160 5687640 -1608048 5687808 1608160 5687640 1601128 5681664 1601088 5681704 -1608160 5687640 1601592 5681216 1601128 5681664 1601088 5681704 -1608048 5687808 1610080 5685800 1608160 5687640 1601088 5681704 -1608048 5687808 1608160 5687640 1601088 5681704 1600992 5681736 -1610080 5685800 1608160 5687640 1608048 5687808 1610032 5685920 -1608160 5687640 1601088 5681704 1608048 5687808 1610032 5685920 -1610080 5685800 1610432 5683632 1608160 5687640 1610032 5685920 -1608048 5687808 1610032 5685992 1610032 5685920 1608160 5687640 -1608048 5687808 1610096 5686136 1610032 5685992 1608160 5687640 -1608048 5687808 1610096 5686136 1608160 5687640 1601088 5681704 -1608048 5687808 1610272 5686400 1610096 5686136 1608160 5687640 -1608048 5687808 1610536 5688000 1610272 5686400 1608160 5687640 -1610536 5688000 1610560 5686784 1610272 5686400 1608160 5687640 -1608048 5687808 1610368 5688304 1610536 5688000 1608160 5687640 -1608048 5687808 1610248 5688560 1610368 5688304 1608160 5687640 -1608048 5687808 1608040 5688080 1610248 5688560 1608160 5687640 -1608040 5688080 1608200 5688584 1610248 5688560 1608160 5687640 -1608040 5688080 1608072 5688280 1608200 5688584 1608160 5687640 -1608200 5688584 1610248 5688560 1608160 5687640 1608072 5688280 -1608040 5688080 1608072 5688280 1608160 5687640 1608048 5687808 -1610248 5688560 1610368 5688304 1608160 5687640 1608200 5688584 -1608200 5688584 1609120 5689368 1610248 5688560 1608160 5687640 -1610368 5688304 1610536 5688000 1608160 5687640 1610248 5688560 -1610536 5688000 1610560 5686784 1608160 5687640 1610368 5688304 -1610096 5686136 1610032 5685992 1608160 5687640 1610272 5686400 -1608048 5687808 1608040 5688080 1608160 5687640 1601088 5681704 -1610272 5686400 1610096 5686136 1608160 5687640 1610560 5686784 -1610536 5688000 1610807 5687274 1610560 5686784 1608160 5687640 -1610032 5685920 1610080 5685800 1608160 5687640 1610032 5685992 -1610032 5685992 1610032 5685920 1608160 5687640 1610096 5686136 -1610432 5683632 1608160 5687640 1610080 5685800 1610536 5684592 -1610096 5686136 1608216 5687592 1608160 5687640 1610272 5686400 -1608160 5687640 1610560 5686784 1610272 5686400 1608216 5687592 -1608160 5687640 1610536 5688000 1610560 5686784 1608216 5687592 -1608160 5687640 1610368 5688304 1610536 5688000 1608216 5687592 -1610536 5688000 1610560 5686784 1608216 5687592 1610368 5688304 -1608160 5687640 1610248 5688560 1610368 5688304 1608216 5687592 -1608160 5687640 1608200 5688584 1610248 5688560 1608216 5687592 -1608160 5687640 1608072 5688280 1608200 5688584 1608216 5687592 -1608160 5687640 1608040 5688080 1608072 5688280 1608216 5687592 -1608072 5688280 1608200 5688584 1608216 5687592 1608040 5688080 -1608160 5687640 1608048 5687808 1608040 5688080 1608216 5687592 -1608200 5688584 1610248 5688560 1608216 5687592 1608072 5688280 -1608200 5688584 1609120 5689368 1610248 5688560 1608216 5687592 -1610248 5688560 1610368 5688304 1608216 5687592 1608200 5688584 -1610368 5688304 1610536 5688000 1608216 5687592 1610248 5688560 -1610272 5686400 1610096 5686136 1608216 5687592 1610560 5686784 -1610560 5686784 1610272 5686400 1608216 5687592 1610536 5688000 -1610536 5688000 1610807 5687274 1610560 5686784 1608216 5687592 -1608216 5687592 1610032 5685992 1608160 5687640 1608040 5688080 -1610096 5686136 1610032 5685992 1608216 5687592 1610272 5686400 -1608160 5687640 1608216 5687592 1610032 5685992 1610032 5685920 -1608160 5687640 1608040 5688080 1608216 5687592 1610032 5685920 -1608216 5687592 1610096 5686136 1610032 5685992 1610032 5685920 -1608160 5687640 1608216 5687592 1610032 5685920 1610080 5685800 -1608160 5687640 1608040 5688080 1608216 5687592 1610080 5685800 -1608160 5687640 1608216 5687592 1610080 5685800 1610432 5683632 -1608160 5687640 1608216 5687592 1610432 5683632 1610432 5683584 -1608160 5687640 1608216 5687592 1610432 5683584 1601592 5681216 -1608160 5687640 1608216 5687592 1601592 5681216 1601128 5681664 -1608216 5687592 1610432 5683632 1610432 5683584 1601592 5681216 -1610432 5683584 1601624 5681136 1601592 5681216 1608216 5687592 -1608160 5687640 1608040 5688080 1608216 5687592 1601592 5681216 -1608216 5687592 1610080 5685800 1610432 5683632 1610432 5683584 -1608216 5687592 1610032 5685920 1610080 5685800 1610432 5683632 -1608216 5687592 1610032 5685992 1610032 5685920 1610080 5685800 -1610080 5685800 1610536 5684592 1610432 5683632 1608216 5687592 -1610536 5688000 1608496 5687544 1608216 5687592 1610368 5688304 -1610536 5688000 1610560 5686784 1608496 5687544 1610368 5688304 -1608216 5687592 1610248 5688560 1610368 5688304 1608496 5687544 -1610368 5688304 1610536 5688000 1608496 5687544 1610248 5688560 -1608216 5687592 1608200 5688584 1610248 5688560 1608496 5687544 -1608216 5687592 1608072 5688280 1608200 5688584 1608496 5687544 -1608216 5687592 1608040 5688080 1608072 5688280 1608496 5687544 -1608216 5687592 1608160 5687640 1608040 5688080 1608496 5687544 -1608040 5688080 1608072 5688280 1608496 5687544 1608160 5687640 -1608160 5687640 1608048 5687808 1608040 5688080 1608496 5687544 -1608160 5687640 1608048 5687808 1608496 5687544 1608216 5687592 -1608040 5688080 1608072 5688280 1608496 5687544 1608048 5687808 -1608072 5688280 1608200 5688584 1608496 5687544 1608040 5688080 -1608200 5688584 1609120 5689368 1610248 5688560 1608496 5687544 -1608200 5688584 1610248 5688560 1608496 5687544 1608072 5688280 -1610248 5688560 1610368 5688304 1608496 5687544 1608200 5688584 -1608216 5687592 1608496 5687544 1610560 5686784 1610272 5686400 -1608496 5687544 1610536 5688000 1610560 5686784 1610272 5686400 -1608216 5687592 1608496 5687544 1610272 5686400 1610096 5686136 -1608496 5687544 1610560 5686784 1610272 5686400 1610096 5686136 -1610560 5686784 1608496 5687544 1610536 5688000 1610807 5687274 -1608496 5687544 1610096 5686136 1608216 5687592 1608160 5687640 -1608216 5687592 1608496 5687544 1610096 5686136 1610032 5685992 -1608496 5687544 1610272 5686400 1610096 5686136 1610032 5685992 -1608216 5687592 1608496 5687544 1610032 5685992 1610032 5685920 -1608216 5687592 1608160 5687640 1608496 5687544 1610032 5685920 -1608496 5687544 1610096 5686136 1610032 5685992 1610032 5685920 -1608216 5687592 1608496 5687544 1610032 5685920 1610080 5685800 -1608496 5687544 1608592 5687544 1610560 5686784 1610272 5686400 -1608496 5687544 1610536 5688000 1608592 5687544 1610272 5686400 -1610536 5688000 1608592 5687544 1608496 5687544 1610368 5688304 -1608592 5687544 1610272 5686400 1608496 5687544 1610368 5688304 -1608592 5687544 1610536 5688000 1610560 5686784 1610272 5686400 -1608496 5687544 1610248 5688560 1610368 5688304 1608592 5687544 -1608496 5687544 1610248 5688560 1608592 5687544 1610272 5686400 -1610368 5688304 1610536 5688000 1608592 5687544 1610248 5688560 -1608496 5687544 1608200 5688584 1610248 5688560 1608592 5687544 -1608496 5687544 1608200 5688584 1608592 5687544 1610272 5686400 -1608200 5688584 1609120 5689368 1610248 5688560 1608592 5687544 -1609120 5689368 1610224 5688760 1610248 5688560 1608592 5687544 -1608200 5688584 1608224 5688712 1609120 5689368 1608592 5687544 -1610248 5688560 1610368 5688304 1608592 5687544 1609120 5689368 -1608496 5687544 1608072 5688280 1608200 5688584 1608592 5687544 -1608496 5687544 1608072 5688280 1608592 5687544 1610272 5686400 -1608496 5687544 1608040 5688080 1608072 5688280 1608592 5687544 -1608496 5687544 1608048 5687808 1608040 5688080 1608592 5687544 -1608496 5687544 1608040 5688080 1608592 5687544 1610272 5686400 -1608072 5688280 1608200 5688584 1608592 5687544 1608040 5688080 -1608200 5688584 1609120 5689368 1608592 5687544 1608072 5688280 -1608496 5687544 1608592 5687544 1610272 5686400 1610096 5686136 -1608592 5687544 1610560 5686784 1610272 5686400 1610096 5686136 -1608496 5687544 1608040 5688080 1608592 5687544 1610096 5686136 -1608496 5687544 1608592 5687544 1610096 5686136 1610032 5685992 -1608496 5687544 1608040 5688080 1608592 5687544 1610032 5685992 -1608592 5687544 1610272 5686400 1610096 5686136 1610032 5685992 -1610560 5686784 1608592 5687544 1610536 5688000 1610807 5687274 -1608496 5687544 1608592 5687544 1610032 5685992 1610032 5685920 -1610536 5688000 1610560 5686784 1608592 5687544 1610368 5688304 -1610368 5688304 1608856 5687656 1608592 5687544 1610248 5688560 -1608856 5687656 1610536 5688000 1608592 5687544 1610248 5688560 -1608592 5687544 1609120 5689368 1610248 5688560 1608856 5687656 -1610248 5688560 1610368 5688304 1608856 5687656 1609120 5689368 -1608592 5687544 1609120 5689368 1608856 5687656 1610536 5688000 -1608592 5687544 1608200 5688584 1609120 5689368 1608856 5687656 -1608592 5687544 1608200 5688584 1608856 5687656 1610536 5688000 -1609120 5689368 1610224 5688760 1610248 5688560 1608856 5687656 -1608200 5688584 1608224 5688712 1609120 5689368 1608856 5687656 -1608200 5688584 1608224 5688712 1608856 5687656 1608592 5687544 -1608224 5688712 1609040 5689376 1609120 5689368 1608856 5687656 -1609120 5689368 1610248 5688560 1608856 5687656 1608224 5688712 -1608592 5687544 1608072 5688280 1608200 5688584 1608856 5687656 -1608592 5687544 1608072 5688280 1608856 5687656 1610536 5688000 -1608200 5688584 1608224 5688712 1608856 5687656 1608072 5688280 -1608592 5687544 1608040 5688080 1608072 5688280 1608856 5687656 -1608592 5687544 1608040 5688080 1608856 5687656 1610536 5688000 -1608592 5687544 1608496 5687544 1608040 5688080 1608856 5687656 -1608496 5687544 1608048 5687808 1608040 5688080 1608856 5687656 -1608592 5687544 1608496 5687544 1608856 5687656 1610536 5688000 -1608040 5688080 1608072 5688280 1608856 5687656 1608496 5687544 -1608072 5688280 1608200 5688584 1608856 5687656 1608040 5688080 -1608592 5687544 1608856 5687656 1610536 5688000 1610560 5686784 -1608592 5687544 1608856 5687656 1610560 5686784 1610272 5686400 -1608592 5687544 1608856 5687656 1610272 5686400 1610096 5686136 -1608856 5687656 1610560 5686784 1610272 5686400 1610096 5686136 -1608592 5687544 1608496 5687544 1608856 5687656 1610096 5686136 -1608592 5687544 1608856 5687656 1610096 5686136 1610032 5685992 -1610536 5688000 1610807 5687274 1610560 5686784 1608856 5687656 -1608856 5687656 1610536 5688000 1610560 5686784 1610272 5686400 -1608856 5687656 1610368 5688304 1610536 5688000 1610560 5686784 -1610368 5688304 1610536 5688000 1608856 5687656 1610248 5688560 -1610560 5686784 1608960 5687656 1610536 5688000 1610807 5687274 -1608856 5687656 1608960 5687656 1610560 5686784 1610272 5686400 -1608856 5687656 1608960 5687656 1610272 5686400 1610096 5686136 -1608856 5687656 1608960 5687656 1610096 5686136 1608592 5687544 -1608960 5687656 1610272 5686400 1610096 5686136 1608592 5687544 -1610096 5686136 1610032 5685992 1608592 5687544 1608960 5687656 -1608960 5687656 1610560 5686784 1610272 5686400 1610096 5686136 -1610536 5688000 1608960 5687656 1608856 5687656 1610368 5688304 -1608856 5687656 1610368 5688304 1608960 5687656 1608592 5687544 -1608856 5687656 1610248 5688560 1610368 5688304 1608960 5687656 -1608856 5687656 1609120 5689368 1610248 5688560 1608960 5687656 -1609120 5689368 1610224 5688760 1610248 5688560 1608960 5687656 -1608856 5687656 1608224 5688712 1609120 5689368 1608960 5687656 -1609120 5689368 1610248 5688560 1608960 5687656 1608224 5688712 -1608224 5688712 1609040 5689376 1609120 5689368 1608960 5687656 -1608856 5687656 1608200 5688584 1608224 5688712 1608960 5687656 -1608856 5687656 1608072 5688280 1608200 5688584 1608960 5687656 -1608224 5688712 1609120 5689368 1608960 5687656 1608200 5688584 -1610368 5688304 1610536 5688000 1608960 5687656 1610248 5688560 -1608856 5687656 1608200 5688584 1608960 5687656 1608592 5687544 -1610248 5688560 1610368 5688304 1608960 5687656 1609120 5689368 -1608960 5687656 1610536 5688000 1610560 5686784 1610272 5686400 -1610536 5688000 1610560 5686784 1608960 5687656 1610368 5688304 -1609120 5689368 1608968 5687672 1608960 5687656 1608224 5688712 -1609120 5689368 1608968 5687672 1608224 5688712 1609040 5689376 -1610248 5688560 1608968 5687672 1609120 5689368 1610224 5688760 -1608960 5687656 1608200 5688584 1608224 5688712 1608968 5687672 -1608224 5688712 1609120 5689368 1608968 5687672 1608200 5688584 -1608960 5687656 1608856 5687656 1608200 5688584 1608968 5687672 -1608856 5687656 1608072 5688280 1608200 5688584 1608968 5687672 -1608200 5688584 1608224 5688712 1608968 5687672 1608856 5687656 -1608960 5687656 1608968 5687672 1610248 5688560 1610368 5688304 -1608960 5687656 1608968 5687672 1610368 5688304 1610536 5688000 -1608968 5687672 1610248 5688560 1610368 5688304 1610536 5688000 -1608968 5687672 1610536 5688000 1608960 5687656 1608856 5687656 -1608960 5687656 1608968 5687672 1610536 5688000 1610560 5686784 -1610536 5688000 1610807 5687274 1610560 5686784 1608968 5687672 -1608968 5687672 1610368 5688304 1610536 5688000 1610560 5686784 -1608960 5687656 1608968 5687672 1610560 5686784 1610272 5686400 -1608960 5687656 1608856 5687656 1608968 5687672 1610560 5686784 -1608968 5687672 1609120 5689368 1610248 5688560 1610368 5688304 -1609120 5689368 1610248 5688560 1608968 5687672 1608224 5688712 -1608960 5687656 1608992 5687624 1610096 5686136 1608592 5687544 -1608960 5687656 1608992 5687624 1608592 5687544 1608856 5687656 -1608992 5687624 1610096 5686136 1608592 5687544 1608856 5687656 -1608992 5687624 1610272 5686400 1610096 5686136 1608592 5687544 -1610096 5686136 1610032 5685992 1608592 5687544 1608992 5687624 -1608592 5687544 1608856 5687656 1608992 5687624 1610032 5685992 -1610096 5686136 1610032 5685992 1608992 5687624 1610272 5686400 -1610032 5685992 1608496 5687544 1608592 5687544 1608992 5687624 -1610272 5686400 1608992 5687624 1608960 5687656 1610560 5686784 -1610272 5686400 1610096 5686136 1608992 5687624 1610560 5686784 -1608960 5687656 1608968 5687672 1610560 5686784 1608992 5687624 -1610560 5686784 1610272 5686400 1608992 5687624 1608968 5687672 -1608968 5687672 1610536 5688000 1610560 5686784 1608992 5687624 -1610536 5688000 1610807 5687274 1610560 5686784 1608992 5687624 -1610560 5686784 1610272 5686400 1608992 5687624 1610536 5688000 -1608968 5687672 1610368 5688304 1610536 5688000 1608992 5687624 -1608968 5687672 1610248 5688560 1610368 5688304 1608992 5687624 -1608968 5687672 1610368 5688304 1608992 5687624 1608960 5687656 -1610536 5688000 1610560 5686784 1608992 5687624 1610368 5688304 -1608960 5687656 1608968 5687672 1608992 5687624 1608856 5687656 -1608992 5687624 1609048 5687576 1610272 5686400 1610096 5686136 -1608992 5687624 1609048 5687576 1610096 5686136 1610032 5685992 -1608992 5687624 1610560 5686784 1609048 5687576 1610032 5685992 -1609048 5687576 1610272 5686400 1610096 5686136 1610032 5685992 -1609048 5687576 1610560 5686784 1610272 5686400 1610096 5686136 -1608992 5687624 1609048 5687576 1610032 5685992 1608592 5687544 -1608992 5687624 1609048 5687576 1608592 5687544 1608856 5687656 -1608992 5687624 1609048 5687576 1608856 5687656 1608960 5687656 -1609048 5687576 1610096 5686136 1610032 5685992 1608592 5687544 -1608992 5687624 1610560 5686784 1609048 5687576 1608856 5687656 -1610032 5685992 1608496 5687544 1608592 5687544 1609048 5687576 -1609048 5687576 1610032 5685992 1608592 5687544 1608856 5687656 -1610560 5686784 1609048 5687576 1608992 5687624 1610536 5688000 -1609048 5687576 1608856 5687656 1608992 5687624 1610536 5688000 -1610560 5686784 1610272 5686400 1609048 5687576 1610536 5688000 -1610560 5686784 1609048 5687576 1610536 5688000 1610807 5687274 -1608992 5687624 1610368 5688304 1610536 5688000 1609048 5687576 -1608992 5687624 1610368 5688304 1609048 5687576 1608856 5687656 -1610536 5688000 1610560 5686784 1609048 5687576 1610368 5688304 -1608992 5687624 1608968 5687672 1610368 5688304 1609048 5687576 -1608992 5687624 1608968 5687672 1609048 5687576 1608856 5687656 -1608968 5687672 1610248 5688560 1610368 5688304 1609048 5687576 -1608968 5687672 1610248 5688560 1609048 5687576 1608992 5687624 -1610368 5688304 1610536 5688000 1609048 5687576 1610248 5688560 -1608968 5687672 1609120 5689368 1610248 5688560 1609048 5687576 -1610032 5685992 1609088 5687488 1609048 5687576 1610096 5686136 -1609048 5687576 1610272 5686400 1610096 5686136 1609088 5687488 -1610096 5686136 1610032 5685992 1609088 5687488 1610272 5686400 -1609048 5687576 1610560 5686784 1610272 5686400 1609088 5687488 -1610272 5686400 1610096 5686136 1609088 5687488 1610560 5686784 -1609088 5687488 1608592 5687544 1609048 5687576 1610560 5686784 -1608592 5687544 1609088 5687488 1610032 5685992 1608496 5687544 -1609048 5687576 1610536 5688000 1610560 5686784 1609088 5687488 -1610560 5686784 1610272 5686400 1609088 5687488 1610536 5688000 -1609048 5687576 1610536 5688000 1609088 5687488 1608592 5687544 -1610032 5685992 1608592 5687544 1609088 5687488 1610096 5686136 -1609048 5687576 1609088 5687488 1608592 5687544 1608856 5687656 -1609048 5687576 1609088 5687488 1608856 5687656 1608992 5687624 -1608856 5687656 1608960 5687656 1608992 5687624 1609088 5687488 -1609048 5687576 1610536 5688000 1609088 5687488 1608992 5687624 -1609088 5687488 1610032 5685992 1608592 5687544 1608856 5687656 -1609088 5687488 1608592 5687544 1608856 5687656 1608992 5687624 -1610536 5688000 1610807 5687274 1610560 5686784 1609088 5687488 -1609048 5687576 1610368 5688304 1610536 5688000 1609088 5687488 -1609048 5687576 1610368 5688304 1609088 5687488 1608992 5687624 -1610536 5688000 1610560 5686784 1609088 5687488 1610368 5688304 -1609048 5687576 1610248 5688560 1610368 5688304 1609088 5687488 -1608592 5687544 1609096 5687376 1610032 5685992 1608496 5687544 -1609096 5687376 1609088 5687488 1610032 5685992 1608496 5687544 -1609088 5687488 1609096 5687376 1608592 5687544 1608856 5687656 -1609088 5687488 1610032 5685992 1609096 5687376 1608856 5687656 -1610032 5685992 1609096 5687376 1609088 5687488 1610096 5686136 -1610032 5685992 1608496 5687544 1609096 5687376 1610096 5686136 -1609088 5687488 1610272 5686400 1610096 5686136 1609096 5687376 -1609088 5687488 1610560 5686784 1610272 5686400 1609096 5687376 -1610272 5686400 1610096 5686136 1609096 5687376 1610560 5686784 -1609088 5687488 1610536 5688000 1610560 5686784 1609096 5687376 -1610560 5686784 1610272 5686400 1609096 5687376 1610536 5688000 -1609088 5687488 1610368 5688304 1610536 5688000 1609096 5687376 -1609096 5687376 1608856 5687656 1609088 5687488 1610536 5688000 -1610096 5686136 1610032 5685992 1609096 5687376 1610272 5686400 -1608592 5687544 1608856 5687656 1609096 5687376 1608496 5687544 -1609088 5687488 1609096 5687376 1608856 5687656 1608992 5687624 -1610536 5688000 1610807 5687274 1610560 5686784 1609096 5687376 -1610032 5685992 1610032 5685920 1608496 5687544 1609096 5687376 -1610032 5685992 1610032 5685920 1609096 5687376 1610096 5686136 -1608496 5687544 1608592 5687544 1609096 5687376 1610032 5685920 -1610032 5685920 1608216 5687592 1608496 5687544 1609096 5687376 -1609096 5687376 1609072 5687288 1608496 5687544 1608592 5687544 -1609096 5687376 1610032 5685920 1609072 5687288 1608592 5687544 -1609072 5687288 1610032 5685920 1608496 5687544 1608592 5687544 -1609096 5687376 1609072 5687288 1608592 5687544 1608856 5687656 -1609096 5687376 1610032 5685920 1609072 5687288 1608856 5687656 -1609072 5687288 1608496 5687544 1608592 5687544 1608856 5687656 -1609096 5687376 1609072 5687288 1608856 5687656 1609088 5687488 -1608496 5687544 1609072 5687288 1610032 5685920 1608216 5687592 -1608496 5687544 1608592 5687544 1609072 5687288 1608216 5687592 -1609072 5687288 1609096 5687376 1610032 5685920 1608216 5687592 -1610032 5685920 1609072 5687288 1609096 5687376 1610032 5685992 -1609072 5687288 1608856 5687656 1609096 5687376 1610032 5685992 -1609096 5687376 1610096 5686136 1610032 5685992 1609072 5687288 -1609096 5687376 1610096 5686136 1609072 5687288 1608856 5687656 -1610032 5685920 1608216 5687592 1609072 5687288 1610032 5685992 -1609096 5687376 1610272 5686400 1610096 5686136 1609072 5687288 -1609096 5687376 1610272 5686400 1609072 5687288 1608856 5687656 -1610096 5686136 1610032 5685992 1609072 5687288 1610272 5686400 -1609096 5687376 1610560 5686784 1610272 5686400 1609072 5687288 -1609096 5687376 1610560 5686784 1609072 5687288 1608856 5687656 -1609096 5687376 1610536 5688000 1610560 5686784 1609072 5687288 -1610272 5686400 1610096 5686136 1609072 5687288 1610560 5686784 -1610032 5685992 1610032 5685920 1609072 5687288 1610096 5686136 -1610032 5685920 1610080 5685800 1608216 5687592 1609072 5687288 -1610032 5685920 1609016 5687224 1609072 5687288 1610032 5685992 -1609016 5687224 1608216 5687592 1609072 5687288 1610032 5685992 -1610032 5685920 1608216 5687592 1609016 5687224 1610032 5685992 -1609072 5687288 1609016 5687224 1608216 5687592 1608496 5687544 -1609072 5687288 1609016 5687224 1608496 5687544 1608592 5687544 -1609072 5687288 1610032 5685992 1609016 5687224 1608592 5687544 -1609072 5687288 1609016 5687224 1608592 5687544 1608856 5687656 -1609016 5687224 1608496 5687544 1608592 5687544 1608856 5687656 -1609072 5687288 1610032 5685992 1609016 5687224 1608856 5687656 -1609072 5687288 1609016 5687224 1608856 5687656 1609096 5687376 -1609072 5687288 1610032 5685992 1609016 5687224 1609096 5687376 -1609016 5687224 1608592 5687544 1608856 5687656 1609096 5687376 -1608856 5687656 1609088 5687488 1609096 5687376 1609016 5687224 -1609016 5687224 1610032 5685920 1608216 5687592 1608496 5687544 -1609016 5687224 1608216 5687592 1608496 5687544 1608592 5687544 -1609072 5687288 1610096 5686136 1610032 5685992 1609016 5687224 -1609072 5687288 1610272 5686400 1610096 5686136 1609016 5687224 -1609072 5687288 1610272 5686400 1609016 5687224 1609096 5687376 -1610032 5685992 1610032 5685920 1609016 5687224 1610096 5686136 -1609072 5687288 1610560 5686784 1610272 5686400 1609016 5687224 -1610096 5686136 1610032 5685992 1609016 5687224 1610272 5686400 -1608216 5687592 1609016 5687224 1610032 5685920 1610080 5685800 -1609016 5687224 1609000 5687192 1608216 5687592 1608496 5687544 -1609016 5687224 1610032 5685920 1609000 5687192 1608496 5687544 -1610032 5685920 1609000 5687192 1609016 5687224 1610032 5685992 -1609016 5687224 1610096 5686136 1610032 5685992 1609000 5687192 -1610032 5685920 1608216 5687592 1609000 5687192 1610032 5685992 -1609000 5687192 1608496 5687544 1609016 5687224 1610096 5686136 -1610032 5685992 1610032 5685920 1609000 5687192 1610096 5686136 -1609000 5687192 1610032 5685920 1608216 5687592 1608496 5687544 -1609016 5687224 1609000 5687192 1608496 5687544 1608592 5687544 -1609016 5687224 1609000 5687192 1608592 5687544 1608856 5687656 -1609000 5687192 1608216 5687592 1608496 5687544 1608592 5687544 -1609016 5687224 1610096 5686136 1609000 5687192 1608592 5687544 -1609016 5687224 1610272 5686400 1610096 5686136 1609000 5687192 -1609016 5687224 1609072 5687288 1610272 5686400 1609000 5687192 -1610096 5686136 1610032 5685992 1609000 5687192 1610272 5686400 -1609072 5687288 1610560 5686784 1610272 5686400 1609000 5687192 -1609016 5687224 1609072 5687288 1609000 5687192 1608592 5687544 -1610272 5686400 1610096 5686136 1609000 5687192 1609072 5687288 -1608216 5687592 1609000 5687192 1610032 5685920 1610080 5685800 -1609000 5687192 1610032 5685992 1610032 5685920 1610080 5685800 -1608216 5687592 1608496 5687544 1609000 5687192 1610080 5685800 -1608216 5687592 1609000 5687192 1610080 5685800 1610432 5683632 -1608216 5687592 1608704 5686888 1610432 5683632 1610432 5683584 -1608216 5687592 1608704 5686888 1610432 5683584 1601592 5681216 -1608216 5687592 1608704 5686888 1601592 5681216 1608160 5687640 -1601592 5681216 1601128 5681664 1608160 5687640 1608704 5686888 -1608704 5686888 1610432 5683584 1601592 5681216 1608160 5687640 -1608704 5686888 1610080 5685800 1610432 5683632 1610432 5683584 -1610432 5683584 1601624 5681136 1601592 5681216 1608704 5686888 -1608216 5687592 1610080 5685800 1608704 5686888 1608160 5687640 -1608704 5686888 1610432 5683632 1610432 5683584 1601592 5681216 -1610080 5685800 1608704 5686888 1608216 5687592 1609000 5687192 -1610080 5685800 1610432 5683632 1608704 5686888 1609000 5687192 -1608216 5687592 1608496 5687544 1609000 5687192 1608704 5686888 -1608496 5687544 1608592 5687544 1609000 5687192 1608704 5686888 -1608496 5687544 1608592 5687544 1608704 5686888 1608216 5687592 -1608704 5686888 1608160 5687640 1608216 5687592 1608496 5687544 -1608592 5687544 1609016 5687224 1609000 5687192 1608704 5686888 -1609000 5687192 1610080 5685800 1608704 5686888 1608592 5687544 -1610080 5685800 1608704 5686888 1609000 5687192 1610032 5685920 -1609000 5687192 1610032 5685992 1610032 5685920 1608704 5686888 -1610080 5685800 1610432 5683632 1608704 5686888 1610032 5685920 -1609000 5687192 1610096 5686136 1610032 5685992 1608704 5686888 -1609000 5687192 1610272 5686400 1610096 5686136 1608704 5686888 -1610032 5685992 1610032 5685920 1608704 5686888 1610096 5686136 -1608704 5686888 1608592 5687544 1609000 5687192 1610096 5686136 -1610032 5685920 1610080 5685800 1608704 5686888 1610032 5685992 -1610432 5683632 1608704 5686888 1610080 5685800 1610536 5684592 -1608704 5686888 1608448 5686648 1601592 5681216 1608160 5687640 -1608704 5686888 1608448 5686648 1608160 5687640 1608216 5687592 -1601592 5681216 1601128 5681664 1608160 5687640 1608448 5686648 -1601128 5681664 1601088 5681704 1608160 5687640 1608448 5686648 -1601128 5681664 1601088 5681704 1608448 5686648 1601592 5681216 -1608448 5686648 1601088 5681704 1608160 5687640 1608216 5687592 -1608704 5686888 1610432 5683584 1608448 5686648 1608216 5687592 -1608448 5686648 1610432 5683584 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1608448 5686648 -1601592 5681216 1608448 5686648 1610432 5683584 1601624 5681136 -1608448 5686648 1608704 5686888 1610432 5683584 1601624 5681136 -1610432 5683584 1601592 5681064 1601624 5681136 1608448 5686648 -1601592 5681216 1601128 5681664 1608448 5686648 1601624 5681136 -1601088 5681704 1608048 5687808 1608160 5687640 1608448 5686648 -1601088 5681704 1608048 5687808 1608448 5686648 1601128 5681664 -1608160 5687640 1608216 5687592 1608448 5686648 1608048 5687808 -1601088 5681704 1600992 5681736 1608048 5687808 1608448 5686648 -1608704 5686888 1608448 5686648 1608216 5687592 1608496 5687544 -1610432 5683584 1608448 5686648 1608704 5686888 1610432 5683632 -1610432 5683584 1601624 5681136 1608448 5686648 1610432 5683632 -1608704 5686888 1610080 5685800 1610432 5683632 1608448 5686648 -1608448 5686648 1608216 5687592 1608704 5686888 1610080 5685800 -1608704 5686888 1610032 5685920 1610080 5685800 1608448 5686648 -1610080 5685800 1610432 5683632 1608448 5686648 1610032 5685920 -1608704 5686888 1610032 5685920 1608448 5686648 1608216 5687592 -1610432 5683632 1610432 5683584 1608448 5686648 1610080 5685800 -1608704 5686888 1610032 5685992 1610032 5685920 1608448 5686648 -1608704 5686888 1610096 5686136 1610032 5685992 1608448 5686648 -1608704 5686888 1610032 5685992 1608448 5686648 1608216 5687592 -1610032 5685920 1610080 5685800 1608448 5686648 1610032 5685992 -1610080 5685800 1610536 5684592 1610432 5683632 1608448 5686648 -1610080 5685800 1610536 5684592 1608448 5686648 1610032 5685920 -1610536 5684592 1610496 5683784 1610432 5683632 1608448 5686648 -1610432 5683632 1610432 5683584 1608448 5686648 1610536 5684592 -1610080 5685800 1610168 5685696 1610536 5684592 1608448 5686648 -1610432 5683584 1608336 5686512 1608448 5686648 1610432 5683632 -1608336 5686512 1601624 5681136 1608448 5686648 1610432 5683632 -1610432 5683584 1601624 5681136 1608336 5686512 1610432 5683632 -1601624 5681136 1608336 5686512 1610432 5683584 1601592 5681064 -1608448 5686648 1608336 5686512 1601624 5681136 1601592 5681216 -1608448 5686648 1610432 5683632 1608336 5686512 1601592 5681216 -1608336 5686512 1610432 5683584 1601624 5681136 1601592 5681216 -1608448 5686648 1608336 5686512 1601592 5681216 1601128 5681664 -1608448 5686648 1610432 5683632 1608336 5686512 1601128 5681664 -1608448 5686648 1608336 5686512 1601128 5681664 1601088 5681704 -1608448 5686648 1610432 5683632 1608336 5686512 1601088 5681704 -1608448 5686648 1608336 5686512 1601088 5681704 1608048 5687808 -1608448 5686648 1610432 5683632 1608336 5686512 1608048 5687808 -1608336 5686512 1601128 5681664 1601088 5681704 1608048 5687808 -1608336 5686512 1601592 5681216 1601128 5681664 1601088 5681704 -1601592 5681216 1601160 5681616 1601128 5681664 1608336 5686512 -1608336 5686512 1601624 5681136 1601592 5681216 1601128 5681664 -1601088 5681704 1600992 5681736 1608048 5687808 1608336 5686512 -1608448 5686648 1608336 5686512 1608048 5687808 1608160 5687640 -1608448 5686648 1610432 5683632 1608336 5686512 1608160 5687640 -1608336 5686512 1601088 5681704 1608048 5687808 1608160 5687640 -1608448 5686648 1608336 5686512 1608160 5687640 1608216 5687592 -1608448 5686648 1610432 5683632 1608336 5686512 1608216 5687592 -1608448 5686648 1608336 5686512 1608216 5687592 1608704 5686888 -1608336 5686512 1608048 5687808 1608160 5687640 1608216 5687592 -1608448 5686648 1610536 5684592 1610432 5683632 1608336 5686512 -1608448 5686648 1610536 5684592 1608336 5686512 1608216 5687592 -1610432 5683632 1610432 5683584 1608336 5686512 1610536 5684592 -1610536 5684592 1610496 5683784 1610432 5683632 1608336 5686512 -1608448 5686648 1610080 5685800 1610536 5684592 1608336 5686512 -1608448 5686648 1610080 5685800 1608336 5686512 1608216 5687592 -1608448 5686648 1610032 5685920 1610080 5685800 1608336 5686512 -1608448 5686648 1610032 5685920 1608336 5686512 1608216 5687592 -1608448 5686648 1610032 5685992 1610032 5685920 1608336 5686512 -1608448 5686648 1610032 5685992 1608336 5686512 1608216 5687592 -1610032 5685920 1610080 5685800 1608336 5686512 1610032 5685992 -1610536 5684592 1610432 5683632 1608336 5686512 1610080 5685800 -1608448 5686648 1608704 5686888 1610032 5685992 1608336 5686512 -1610080 5685800 1610168 5685696 1610536 5684592 1608336 5686512 -1610080 5685800 1610536 5684592 1608336 5686512 1610032 5685920 -1608336 5686512 1608296 5686424 1601624 5681136 1601592 5681216 -1608336 5686512 1610432 5683584 1608296 5686424 1601592 5681216 -1610432 5683584 1608296 5686424 1608336 5686512 1610432 5683632 -1608336 5686512 1610536 5684592 1610432 5683632 1608296 5686424 -1608296 5686424 1601592 5681216 1608336 5686512 1610536 5684592 -1610432 5683632 1610432 5683584 1608296 5686424 1610536 5684592 -1601624 5681136 1608296 5686424 1610432 5683584 1601592 5681064 -1608336 5686512 1608296 5686424 1601592 5681216 1601128 5681664 -1608296 5686424 1601624 5681136 1601592 5681216 1601128 5681664 -1608336 5686512 1610536 5684592 1608296 5686424 1601128 5681664 -1608336 5686512 1608296 5686424 1601128 5681664 1601088 5681704 -1608336 5686512 1610536 5684592 1608296 5686424 1601088 5681704 -1608336 5686512 1608296 5686424 1601088 5681704 1608048 5687808 -1608336 5686512 1610536 5684592 1608296 5686424 1608048 5687808 -1608336 5686512 1608296 5686424 1608048 5687808 1608160 5687640 -1608336 5686512 1610536 5684592 1608296 5686424 1608160 5687640 -1608296 5686424 1601088 5681704 1608048 5687808 1608160 5687640 -1608296 5686424 1601128 5681664 1601088 5681704 1608048 5687808 -1601592 5681216 1601160 5681616 1601128 5681664 1608296 5686424 -1608296 5686424 1601592 5681216 1601128 5681664 1601088 5681704 -1601088 5681704 1600992 5681736 1608048 5687808 1608296 5686424 -1608336 5686512 1608296 5686424 1608160 5687640 1608216 5687592 -1608296 5686424 1610432 5683584 1601624 5681136 1601592 5681216 -1610432 5683584 1601624 5681136 1608296 5686424 1610432 5683632 -1610536 5684592 1610496 5683784 1610432 5683632 1608296 5686424 -1608336 5686512 1610080 5685800 1610536 5684592 1608296 5686424 -1610536 5684592 1610432 5683632 1608296 5686424 1610080 5685800 -1608336 5686512 1610080 5685800 1608296 5686424 1608160 5687640 -1610080 5685800 1610168 5685696 1610536 5684592 1608296 5686424 -1608336 5686512 1610032 5685920 1610080 5685800 1608296 5686424 -1608336 5686512 1610032 5685920 1608296 5686424 1608160 5687640 -1608336 5686512 1610032 5685992 1610032 5685920 1608296 5686424 -1608336 5686512 1610032 5685992 1608296 5686424 1608160 5687640 -1608336 5686512 1608448 5686648 1610032 5685992 1608296 5686424 -1608336 5686512 1608448 5686648 1608296 5686424 1608160 5687640 -1610032 5685992 1610032 5685920 1608296 5686424 1608448 5686648 -1610080 5685800 1610536 5684592 1608296 5686424 1610032 5685920 -1608448 5686648 1608704 5686888 1610032 5685992 1608296 5686424 -1610032 5685920 1610080 5685800 1608296 5686424 1610032 5685992 -1601624 5681136 1608280 5686200 1610432 5683584 1601592 5681064 -1608296 5686424 1608280 5686200 1601624 5681136 1601592 5681216 -1608296 5686424 1608280 5686200 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1608280 5686200 -1608296 5686424 1608280 5686200 1601128 5681664 1601088 5681704 -1608280 5686200 1601592 5681216 1601128 5681664 1601088 5681704 -1608296 5686424 1608280 5686200 1601088 5681704 1608048 5687808 -1608296 5686424 1608280 5686200 1608048 5687808 1608160 5687640 -1608280 5686200 1601128 5681664 1601088 5681704 1608048 5687808 -1601088 5681704 1600992 5681736 1608048 5687808 1608280 5686200 -1608280 5686200 1601624 5681136 1601592 5681216 1601128 5681664 -1608296 5686424 1610432 5683584 1608280 5686200 1608048 5687808 -1610432 5683584 1608280 5686200 1608296 5686424 1610432 5683632 -1608296 5686424 1610536 5684592 1610432 5683632 1608280 5686200 -1608296 5686424 1610080 5685800 1610536 5684592 1608280 5686200 -1610536 5684592 1610432 5683632 1608280 5686200 1610080 5685800 -1610432 5683584 1601624 5681136 1608280 5686200 1610432 5683632 -1608280 5686200 1608048 5687808 1608296 5686424 1610080 5685800 -1610432 5683632 1610432 5683584 1608280 5686200 1610536 5684592 -1608280 5686200 1610432 5683584 1601624 5681136 1601592 5681216 -1610536 5684592 1610496 5683784 1610432 5683632 1608280 5686200 -1608296 5686424 1610032 5685920 1610080 5685800 1608280 5686200 -1610080 5685800 1610536 5684592 1608280 5686200 1610032 5685920 -1608296 5686424 1610032 5685920 1608280 5686200 1608048 5687808 -1610080 5685800 1610168 5685696 1610536 5684592 1608280 5686200 -1610080 5685800 1610168 5685696 1608280 5686200 1610032 5685920 -1610536 5684592 1610432 5683632 1608280 5686200 1610168 5685696 -1610168 5685696 1610200 5685672 1610536 5684592 1608280 5686200 -1608296 5686424 1610032 5685992 1610032 5685920 1608280 5686200 -1608296 5686424 1608448 5686648 1610032 5685992 1608280 5686200 -1608296 5686424 1608336 5686512 1608448 5686648 1608280 5686200 -1608448 5686648 1610032 5685992 1608280 5686200 1608336 5686512 -1608296 5686424 1608336 5686512 1608280 5686200 1608048 5687808 -1610032 5685920 1610080 5685800 1608280 5686200 1610032 5685992 -1608448 5686648 1608704 5686888 1610032 5685992 1608280 5686200 -1610032 5685992 1610032 5685920 1608280 5686200 1608448 5686648 -1601624 5681136 1608304 5686080 1610432 5683584 1601592 5681064 -1610432 5683584 1608304 5686080 1608280 5686200 1610432 5683632 -1610432 5683584 1601624 5681136 1608304 5686080 1610432 5683632 -1608280 5686200 1610536 5684592 1610432 5683632 1608304 5686080 -1608280 5686200 1610168 5685696 1610536 5684592 1608304 5686080 -1610432 5683632 1610432 5683584 1608304 5686080 1610536 5684592 -1610168 5685696 1610200 5685672 1610536 5684592 1608304 5686080 -1610536 5684592 1610432 5683632 1608304 5686080 1610168 5685696 -1608280 5686200 1608304 5686080 1601624 5681136 1601592 5681216 -1608304 5686080 1610432 5683584 1601624 5681136 1601592 5681216 -1608280 5686200 1608304 5686080 1601592 5681216 1601128 5681664 -1608280 5686200 1608304 5686080 1601128 5681664 1601088 5681704 -1601592 5681216 1601160 5681616 1601128 5681664 1608304 5686080 -1608280 5686200 1608304 5686080 1601088 5681704 1608048 5687808 -1608304 5686080 1601592 5681216 1601128 5681664 1601088 5681704 -1608304 5686080 1601624 5681136 1601592 5681216 1601128 5681664 -1608304 5686080 1601088 5681704 1608280 5686200 1610168 5685696 -1610536 5684592 1610496 5683784 1610432 5683632 1608304 5686080 -1608280 5686200 1610080 5685800 1610168 5685696 1608304 5686080 -1608280 5686200 1610032 5685920 1610080 5685800 1608304 5686080 -1610168 5685696 1610536 5684592 1608304 5686080 1610080 5685800 -1608280 5686200 1610032 5685920 1608304 5686080 1601088 5681704 -1608280 5686200 1610032 5685992 1610032 5685920 1608304 5686080 -1610032 5685920 1610080 5685800 1608304 5686080 1610032 5685992 -1608280 5686200 1610032 5685992 1608304 5686080 1601088 5681704 -1610080 5685800 1610168 5685696 1608304 5686080 1610032 5685920 -1608280 5686200 1608448 5686648 1610032 5685992 1608304 5686080 -1608280 5686200 1608336 5686512 1608448 5686648 1608304 5686080 -1608280 5686200 1608448 5686648 1608304 5686080 1601088 5681704 -1610032 5685992 1610032 5685920 1608304 5686080 1608448 5686648 -1608448 5686648 1608704 5686888 1610032 5685992 1608304 5686080 -1608704 5686888 1610096 5686136 1610032 5685992 1608304 5686080 -1610032 5685992 1610032 5685920 1608304 5686080 1608704 5686888 -1608448 5686648 1608704 5686888 1608304 5686080 1608280 5686200 -1610168 5685696 1608344 5686056 1608304 5686080 1610080 5685800 -1608344 5686056 1610536 5684592 1608304 5686080 1610080 5685800 -1610536 5684592 1608344 5686056 1610168 5685696 1610200 5685672 -1608304 5686080 1608344 5686056 1610536 5684592 1610432 5683632 -1608304 5686080 1608344 5686056 1610432 5683632 1610432 5683584 -1608304 5686080 1610080 5685800 1608344 5686056 1610432 5683584 -1608304 5686080 1608344 5686056 1610432 5683584 1601624 5681136 -1610432 5683584 1601592 5681064 1601624 5681136 1608344 5686056 -1608344 5686056 1610432 5683632 1610432 5683584 1601624 5681136 -1608304 5686080 1608344 5686056 1601624 5681136 1601592 5681216 -1608304 5686080 1610080 5685800 1608344 5686056 1601624 5681136 -1608344 5686056 1610168 5685696 1610536 5684592 1610432 5683632 -1608344 5686056 1610536 5684592 1610432 5683632 1610432 5683584 -1610168 5685696 1610536 5684592 1608344 5686056 1610080 5685800 -1610536 5684592 1610496 5683784 1610432 5683632 1608344 5686056 -1608304 5686080 1610032 5685920 1610080 5685800 1608344 5686056 -1608304 5686080 1610032 5685992 1610032 5685920 1608344 5686056 -1610080 5685800 1610168 5685696 1608344 5686056 1610032 5685920 -1608304 5686080 1610032 5685992 1608344 5686056 1601624 5681136 -1608304 5686080 1608704 5686888 1610032 5685992 1608344 5686056 -1610032 5685992 1610032 5685920 1608344 5686056 1608704 5686888 -1608304 5686080 1608704 5686888 1608344 5686056 1601624 5681136 -1608704 5686888 1610096 5686136 1610032 5685992 1608344 5686056 -1608304 5686080 1608448 5686648 1608704 5686888 1608344 5686056 -1608304 5686080 1608448 5686648 1608344 5686056 1601624 5681136 -1608704 5686888 1610032 5685992 1608344 5686056 1608448 5686648 -1610032 5685920 1610080 5685800 1608344 5686056 1610032 5685992 -1608304 5686080 1608280 5686200 1608448 5686648 1608344 5686056 -1608304 5686080 1608280 5686200 1608344 5686056 1601624 5681136 -1608280 5686200 1608336 5686512 1608448 5686648 1608344 5686056 -1608280 5686200 1608296 5686424 1608336 5686512 1608344 5686056 -1608336 5686512 1608448 5686648 1608344 5686056 1608296 5686424 -1608448 5686648 1608704 5686888 1608344 5686056 1608336 5686512 -1608280 5686200 1608296 5686424 1608344 5686056 1608304 5686080 -1610536 5684592 1608392 5686016 1608344 5686056 1610168 5685696 -1610536 5684592 1608392 5686016 1610168 5685696 1610200 5685672 -1608344 5686056 1608392 5686016 1610432 5683632 1610432 5683584 -1608344 5686056 1608392 5686016 1610432 5683584 1601624 5681136 -1610432 5683584 1601592 5681064 1601624 5681136 1608392 5686016 -1608344 5686056 1608392 5686016 1601624 5681136 1608304 5686080 -1608392 5686016 1610432 5683584 1601624 5681136 1608304 5686080 -1601624 5681136 1601592 5681216 1608304 5686080 1608392 5686016 -1608392 5686016 1610432 5683632 1610432 5683584 1601624 5681136 -1608392 5686016 1608304 5686080 1608344 5686056 1610168 5685696 -1608344 5686056 1610080 5685800 1610168 5685696 1608392 5686016 -1608344 5686056 1610032 5685920 1610080 5685800 1608392 5686016 -1610168 5685696 1610536 5684592 1608392 5686016 1610080 5685800 -1608344 5686056 1610032 5685920 1608392 5686016 1608304 5686080 -1610080 5685800 1610168 5685696 1608392 5686016 1610032 5685920 -1608392 5686016 1610536 5684592 1610432 5683632 1610432 5683584 -1610536 5684592 1610432 5683632 1608392 5686016 1610168 5685696 -1610432 5683632 1608392 5686016 1610536 5684592 1610496 5683784 -1608344 5686056 1610032 5685992 1610032 5685920 1608392 5686016 -1608344 5686056 1608704 5686888 1610032 5685992 1608392 5686016 -1610032 5685920 1610080 5685800 1608392 5686016 1610032 5685992 -1608704 5686888 1610096 5686136 1610032 5685992 1608392 5686016 -1608344 5686056 1608704 5686888 1608392 5686016 1608304 5686080 -1608344 5686056 1608448 5686648 1608704 5686888 1608392 5686016 -1608704 5686888 1610032 5685992 1608392 5686016 1608448 5686648 -1608344 5686056 1608448 5686648 1608392 5686016 1608304 5686080 -1608344 5686056 1608336 5686512 1608448 5686648 1608392 5686016 -1608344 5686056 1608296 5686424 1608336 5686512 1608392 5686016 -1608344 5686056 1608280 5686200 1608296 5686424 1608392 5686016 -1608296 5686424 1608336 5686512 1608392 5686016 1608280 5686200 -1608344 5686056 1608280 5686200 1608392 5686016 1608304 5686080 -1608448 5686648 1608704 5686888 1608392 5686016 1608336 5686512 -1608336 5686512 1608448 5686648 1608392 5686016 1608296 5686424 -1610032 5685992 1610032 5685920 1608392 5686016 1608704 5686888 -1608344 5686056 1608304 5686080 1608280 5686200 1608392 5686016 -1610168 5685696 1608504 5685952 1608392 5686016 1610080 5685800 -1610168 5685696 1610536 5684592 1608504 5685952 1610080 5685800 -1610536 5684592 1608504 5685952 1610168 5685696 1610200 5685672 -1608392 5686016 1610032 5685920 1610080 5685800 1608504 5685952 -1608392 5686016 1610032 5685992 1610032 5685920 1608504 5685952 -1610080 5685800 1610168 5685696 1608504 5685952 1610032 5685920 -1610032 5685920 1610080 5685800 1608504 5685952 1610032 5685992 -1608504 5685952 1610536 5684592 1608392 5686016 1610032 5685992 -1608392 5686016 1608504 5685952 1610536 5684592 1610432 5683632 -1608504 5685952 1610168 5685696 1610536 5684592 1610432 5683632 -1608392 5686016 1608504 5685952 1610432 5683632 1610432 5683584 -1608392 5686016 1608504 5685952 1610432 5683584 1601624 5681136 -1608392 5686016 1610032 5685992 1608504 5685952 1610432 5683584 -1608504 5685952 1610536 5684592 1610432 5683632 1610432 5683584 -1610536 5684592 1610496 5683784 1610432 5683632 1608504 5685952 -1608392 5686016 1608704 5686888 1610032 5685992 1608504 5685952 -1608392 5686016 1608448 5686648 1608704 5686888 1608504 5685952 -1610032 5685992 1610032 5685920 1608504 5685952 1608704 5686888 -1608704 5686888 1610096 5686136 1610032 5685992 1608504 5685952 -1608392 5686016 1608448 5686648 1608504 5685952 1610432 5683584 -1608392 5686016 1608336 5686512 1608448 5686648 1608504 5685952 -1608448 5686648 1608704 5686888 1608504 5685952 1608336 5686512 -1608392 5686016 1608336 5686512 1608504 5685952 1610432 5683584 -1608392 5686016 1608296 5686424 1608336 5686512 1608504 5685952 -1608392 5686016 1608280 5686200 1608296 5686424 1608504 5685952 -1608392 5686016 1608344 5686056 1608280 5686200 1608504 5685952 -1608392 5686016 1608280 5686200 1608504 5685952 1610432 5683584 -1608336 5686512 1608448 5686648 1608504 5685952 1608296 5686424 -1608296 5686424 1608336 5686512 1608504 5685952 1608280 5686200 -1608704 5686888 1610032 5685992 1608504 5685952 1608448 5686648 -1608504 5685952 1608648 5685912 1610536 5684592 1610432 5683632 -1608504 5685952 1610168 5685696 1608648 5685912 1610432 5683632 -1610168 5685696 1608648 5685912 1608504 5685952 1610080 5685800 -1608504 5685952 1610032 5685920 1610080 5685800 1608648 5685912 -1610168 5685696 1610536 5684592 1608648 5685912 1610080 5685800 -1608648 5685912 1610432 5683632 1608504 5685952 1610032 5685920 -1610080 5685800 1610168 5685696 1608648 5685912 1610032 5685920 -1608648 5685912 1610168 5685696 1610536 5684592 1610432 5683632 -1610536 5684592 1608648 5685912 1610168 5685696 1610200 5685672 -1608504 5685952 1610032 5685992 1610032 5685920 1608648 5685912 -1608504 5685952 1608704 5686888 1610032 5685992 1608648 5685912 -1610032 5685920 1610080 5685800 1608648 5685912 1610032 5685992 -1608504 5685952 1608704 5686888 1608648 5685912 1610432 5683632 -1608704 5686888 1610096 5686136 1610032 5685992 1608648 5685912 -1610032 5685992 1610032 5685920 1608648 5685912 1608704 5686888 -1608504 5685952 1608648 5685912 1610432 5683632 1610432 5683584 -1608648 5685912 1610536 5684592 1610432 5683632 1610432 5683584 -1608504 5685952 1608704 5686888 1608648 5685912 1610432 5683584 -1608504 5685952 1608648 5685912 1610432 5683584 1608392 5686016 -1610536 5684592 1610496 5683784 1610432 5683632 1608648 5685912 -1608504 5685952 1608448 5686648 1608704 5686888 1608648 5685912 -1608504 5685952 1608336 5686512 1608448 5686648 1608648 5685912 -1608704 5686888 1610032 5685992 1608648 5685912 1608448 5686648 -1608504 5685952 1608336 5686512 1608648 5685912 1610432 5683584 -1608504 5685952 1608296 5686424 1608336 5686512 1608648 5685912 -1608448 5686648 1608704 5686888 1608648 5685912 1608336 5686512 -1610168 5685696 1608712 5685880 1608648 5685912 1610080 5685800 -1610168 5685696 1610536 5684592 1608712 5685880 1610080 5685800 -1608648 5685912 1610032 5685920 1610080 5685800 1608712 5685880 -1608648 5685912 1610032 5685992 1610032 5685920 1608712 5685880 -1610080 5685800 1610168 5685696 1608712 5685880 1610032 5685920 -1610032 5685920 1610080 5685800 1608712 5685880 1610032 5685992 -1608648 5685912 1608712 5685880 1610536 5684592 1610432 5683632 -1608712 5685880 1610168 5685696 1610536 5684592 1610432 5683632 -1608648 5685912 1608712 5685880 1610432 5683632 1610432 5683584 -1608712 5685880 1610536 5684592 1610432 5683632 1610432 5683584 -1608712 5685880 1610432 5683584 1608648 5685912 1610032 5685992 -1610536 5684592 1608712 5685880 1610168 5685696 1610200 5685672 -1608648 5685912 1608704 5686888 1610032 5685992 1608712 5685880 -1608648 5685912 1608448 5686648 1608704 5686888 1608712 5685880 -1610032 5685992 1610032 5685920 1608712 5685880 1608704 5686888 -1608648 5685912 1608448 5686648 1608712 5685880 1610432 5683584 -1608704 5686888 1610096 5686136 1610032 5685992 1608712 5685880 -1610032 5685992 1610032 5685920 1608712 5685880 1610096 5686136 -1608704 5686888 1610096 5686136 1608712 5685880 1608448 5686648 -1608648 5685912 1608712 5685880 1610432 5683584 1608504 5685952 -1608712 5685880 1610432 5683632 1610432 5683584 1608504 5685952 -1608648 5685912 1608448 5686648 1608712 5685880 1608504 5685952 -1610432 5683584 1608392 5686016 1608504 5685952 1608712 5685880 -1608704 5686888 1609000 5687192 1610096 5686136 1608712 5685880 -1610536 5684592 1610496 5683784 1610432 5683632 1608712 5685880 -1608648 5685912 1608336 5686512 1608448 5686648 1608712 5685880 -1610536 5684592 1608768 5685824 1608712 5685880 1610168 5685696 -1610536 5684592 1610432 5683632 1608768 5685824 1610168 5685696 -1608768 5685824 1610432 5683632 1608712 5685880 1610168 5685696 -1608712 5685880 1610080 5685800 1610168 5685696 1608768 5685824 -1608712 5685880 1610032 5685920 1610080 5685800 1608768 5685824 -1610168 5685696 1610536 5684592 1608768 5685824 1610080 5685800 -1608712 5685880 1610032 5685920 1608768 5685824 1610432 5683632 -1610080 5685800 1610168 5685696 1608768 5685824 1610032 5685920 -1608712 5685880 1610032 5685992 1610032 5685920 1608768 5685824 -1608712 5685880 1610096 5686136 1610032 5685992 1608768 5685824 -1610032 5685920 1610080 5685800 1608768 5685824 1610032 5685992 -1608712 5685880 1610096 5686136 1608768 5685824 1610432 5683632 -1610032 5685992 1610032 5685920 1608768 5685824 1610096 5686136 -1608712 5685880 1608768 5685824 1610432 5683632 1610432 5683584 -1608712 5685880 1610096 5686136 1608768 5685824 1610432 5683584 -1608768 5685824 1610536 5684592 1610432 5683632 1610432 5683584 -1608712 5685880 1608768 5685824 1610432 5683584 1608504 5685952 -1608712 5685880 1610096 5686136 1608768 5685824 1608504 5685952 -1608768 5685824 1610432 5683632 1610432 5683584 1608504 5685952 -1608712 5685880 1608704 5686888 1610096 5686136 1608768 5685824 -1610096 5686136 1610032 5685992 1608768 5685824 1608704 5686888 -1608712 5685880 1608704 5686888 1608768 5685824 1608504 5685952 -1610536 5684592 1608768 5685824 1610168 5685696 1610200 5685672 -1608712 5685880 1608448 5686648 1608704 5686888 1608768 5685824 -1610432 5683584 1608392 5686016 1608504 5685952 1608768 5685824 -1608712 5685880 1608768 5685824 1608504 5685952 1608648 5685912 -1608712 5685880 1608704 5686888 1608768 5685824 1608648 5685912 -1608768 5685824 1610432 5683584 1608504 5685952 1608648 5685912 -1608704 5686888 1609000 5687192 1610096 5686136 1608768 5685824 -1610432 5683632 1608768 5685824 1610536 5684592 1610496 5683784 -1608768 5685824 1608800 5685752 1608504 5685952 1608648 5685912 -1608768 5685824 1610432 5683584 1608800 5685752 1608648 5685912 -1608800 5685752 1610432 5683584 1608504 5685952 1608648 5685912 -1610432 5683584 1608800 5685752 1608768 5685824 1610432 5683632 -1608800 5685752 1608648 5685912 1608768 5685824 1610432 5683632 -1610432 5683584 1608504 5685952 1608800 5685752 1610432 5683632 -1608768 5685824 1610536 5684592 1610432 5683632 1608800 5685752 -1608768 5685824 1610536 5684592 1608800 5685752 1608648 5685912 -1608768 5685824 1610168 5685696 1610536 5684592 1608800 5685752 -1608768 5685824 1610168 5685696 1608800 5685752 1608648 5685912 -1608768 5685824 1610080 5685800 1610168 5685696 1608800 5685752 -1608768 5685824 1610080 5685800 1608800 5685752 1608648 5685912 -1610168 5685696 1610536 5684592 1608800 5685752 1610080 5685800 -1608768 5685824 1610032 5685920 1610080 5685800 1608800 5685752 -1608768 5685824 1610032 5685920 1608800 5685752 1608648 5685912 -1608768 5685824 1610032 5685992 1610032 5685920 1608800 5685752 -1608768 5685824 1610032 5685992 1608800 5685752 1608648 5685912 -1610080 5685800 1610168 5685696 1608800 5685752 1610032 5685920 -1610032 5685920 1610080 5685800 1608800 5685752 1610032 5685992 -1610536 5684592 1610432 5683632 1608800 5685752 1610168 5685696 -1608768 5685824 1610096 5686136 1610032 5685992 1608800 5685752 -1610432 5683632 1610432 5683584 1608800 5685752 1610536 5684592 -1610168 5685696 1610200 5685672 1610536 5684592 1608800 5685752 -1608504 5685952 1608800 5685752 1610432 5683584 1608392 5686016 -1608504 5685952 1608648 5685912 1608800 5685752 1608392 5686016 -1608800 5685752 1610432 5683632 1610432 5683584 1608392 5686016 -1610432 5683584 1601624 5681136 1608392 5686016 1608800 5685752 -1610432 5683584 1601624 5681136 1608800 5685752 1610432 5683632 -1610432 5683584 1601592 5681064 1601624 5681136 1608800 5685752 -1601624 5681136 1608304 5686080 1608392 5686016 1608800 5685752 -1608392 5686016 1608504 5685952 1608800 5685752 1601624 5681136 -1608768 5685824 1608800 5685752 1608648 5685912 1608712 5685880 -1608768 5685824 1610032 5685992 1608800 5685752 1608712 5685880 -1608800 5685752 1608504 5685952 1608648 5685912 1608712 5685880 -1610536 5684592 1610496 5683784 1610432 5683632 1608800 5685752 -1610432 5683584 1608816 5685680 1608800 5685752 1610432 5683632 -1608816 5685680 1601624 5681136 1608800 5685752 1610432 5683632 -1601624 5681136 1608816 5685680 1610432 5683584 1601592 5681064 -1608800 5685752 1610536 5684592 1610432 5683632 1608816 5685680 -1608800 5685752 1610536 5684592 1608816 5685680 1601624 5681136 -1610432 5683632 1610432 5683584 1608816 5685680 1610536 5684592 -1608800 5685752 1610168 5685696 1610536 5684592 1608816 5685680 -1608800 5685752 1610080 5685800 1610168 5685696 1608816 5685680 -1608800 5685752 1610080 5685800 1608816 5685680 1601624 5681136 -1608800 5685752 1610032 5685920 1610080 5685800 1608816 5685680 -1610080 5685800 1610168 5685696 1608816 5685680 1610032 5685920 -1608800 5685752 1610032 5685920 1608816 5685680 1601624 5681136 -1608800 5685752 1610032 5685992 1610032 5685920 1608816 5685680 -1610168 5685696 1610536 5684592 1608816 5685680 1610080 5685800 -1610536 5684592 1610432 5683632 1608816 5685680 1610168 5685696 -1610168 5685696 1610200 5685672 1610536 5684592 1608816 5685680 -1610432 5683584 1601624 5681136 1608816 5685680 1610432 5683632 -1608800 5685752 1608816 5685680 1601624 5681136 1608392 5686016 -1608800 5685752 1610032 5685920 1608816 5685680 1608392 5686016 -1601624 5681136 1608304 5686080 1608392 5686016 1608816 5685680 -1608816 5685680 1610432 5683584 1601624 5681136 1608392 5686016 -1608800 5685752 1608816 5685680 1608392 5686016 1608504 5685952 -1608800 5685752 1608816 5685680 1608504 5685952 1608648 5685912 -1608800 5685752 1610032 5685920 1608816 5685680 1608648 5685912 -1608800 5685752 1608816 5685680 1608648 5685912 1608712 5685880 -1608816 5685680 1601624 5681136 1608392 5686016 1608504 5685952 -1608816 5685680 1608392 5686016 1608504 5685952 1608648 5685912 -1610536 5684592 1610496 5683784 1610432 5683632 1608816 5685680 -1601624 5681136 1608792 5685560 1610432 5683584 1601592 5681064 -1608816 5685680 1608792 5685560 1601624 5681136 1608392 5686016 -1601624 5681136 1608304 5686080 1608392 5686016 1608792 5685560 -1601624 5681136 1601592 5681216 1608304 5686080 1608792 5685560 -1608304 5686080 1608392 5686016 1608792 5685560 1601592 5681216 -1608304 5686080 1608344 5686056 1608392 5686016 1608792 5685560 -1608392 5686016 1608816 5685680 1608792 5685560 1608304 5686080 -1608816 5685680 1610432 5683584 1608792 5685560 1608392 5686016 -1610432 5683584 1608792 5685560 1608816 5685680 1610432 5683632 -1608816 5685680 1610536 5684592 1610432 5683632 1608792 5685560 -1608816 5685680 1610168 5685696 1610536 5684592 1608792 5685560 -1610536 5684592 1610432 5683632 1608792 5685560 1610168 5685696 -1608816 5685680 1610080 5685800 1610168 5685696 1608792 5685560 -1608816 5685680 1610032 5685920 1610080 5685800 1608792 5685560 -1610168 5685696 1610536 5684592 1608792 5685560 1610080 5685800 -1610432 5683584 1601624 5681136 1608792 5685560 1610432 5683632 -1610168 5685696 1610200 5685672 1610536 5684592 1608792 5685560 -1608792 5685560 1608392 5686016 1608816 5685680 1610080 5685800 -1610432 5683632 1610432 5683584 1608792 5685560 1610536 5684592 -1608792 5685560 1610432 5683584 1601624 5681136 1601592 5681216 -1608816 5685680 1608792 5685560 1608392 5686016 1608504 5685952 -1608792 5685560 1608304 5686080 1608392 5686016 1608504 5685952 -1608816 5685680 1610080 5685800 1608792 5685560 1608504 5685952 -1601592 5681216 1601128 5681664 1608304 5686080 1608792 5685560 -1608816 5685680 1608792 5685560 1608504 5685952 1608648 5685912 -1608816 5685680 1608792 5685560 1608648 5685912 1608800 5685752 -1608648 5685912 1608712 5685880 1608800 5685752 1608792 5685560 -1608816 5685680 1610080 5685800 1608792 5685560 1608800 5685752 -1608792 5685560 1608392 5686016 1608504 5685952 1608648 5685912 -1608792 5685560 1608504 5685952 1608648 5685912 1608800 5685752 -1610536 5684592 1610496 5683784 1610432 5683632 1608792 5685560 -1610536 5684592 1610496 5683784 1608792 5685560 1610168 5685696 -1610432 5683632 1610432 5683584 1608792 5685560 1610496 5683784 -1610536 5684592 1610528 5683880 1610496 5683784 1608792 5685560 -1601624 5681136 1608696 5685384 1610432 5683584 1601592 5681064 -1610432 5683584 1608696 5685384 1608792 5685560 1610432 5683632 -1610432 5683584 1601624 5681136 1608696 5685384 1610432 5683632 -1608792 5685560 1610496 5683784 1610432 5683632 1608696 5685384 -1610432 5683632 1610432 5683584 1608696 5685384 1610496 5683784 -1608792 5685560 1608696 5685384 1601624 5681136 1601592 5681216 -1608792 5685560 1608696 5685384 1601592 5681216 1608304 5686080 -1608792 5685560 1608696 5685384 1608304 5686080 1608392 5686016 -1608696 5685384 1601592 5681216 1608304 5686080 1608392 5686016 -1608304 5686080 1608344 5686056 1608392 5686016 1608696 5685384 -1608696 5685384 1610432 5683584 1601624 5681136 1601592 5681216 -1608792 5685560 1608696 5685384 1608392 5686016 1608504 5685952 -1608696 5685384 1608304 5686080 1608392 5686016 1608504 5685952 -1608696 5685384 1601624 5681136 1601592 5681216 1608304 5686080 -1608696 5685384 1608504 5685952 1608792 5685560 1610496 5683784 -1608792 5685560 1608696 5685384 1608504 5685952 1608648 5685912 -1601592 5681216 1601128 5681664 1608304 5686080 1608696 5685384 -1608792 5685560 1610536 5684592 1610496 5683784 1608696 5685384 -1608792 5685560 1610168 5685696 1610536 5684592 1608696 5685384 -1608792 5685560 1610080 5685800 1610168 5685696 1608696 5685384 -1610168 5685696 1610200 5685672 1610536 5684592 1608696 5685384 -1610496 5683784 1610432 5683632 1608696 5685384 1610536 5684592 -1608792 5685560 1610168 5685696 1608696 5685384 1608504 5685952 -1610536 5684592 1610496 5683784 1608696 5685384 1610168 5685696 -1610536 5684592 1610528 5683880 1610496 5683784 1608696 5685384 -1610536 5684592 1610576 5683944 1610528 5683880 1608696 5685384 -1610496 5683784 1610432 5683632 1608696 5685384 1610528 5683880 -1610536 5684592 1610528 5683880 1608696 5685384 1610168 5685696 -1601624 5681136 1608664 5685224 1610432 5683584 1601592 5681064 -1608696 5685384 1608664 5685224 1601624 5681136 1601592 5681216 -1608696 5685384 1610432 5683584 1608664 5685224 1601592 5681216 -1610432 5683584 1608664 5685224 1608696 5685384 1610432 5683632 -1608696 5685384 1610496 5683784 1610432 5683632 1608664 5685224 -1608664 5685224 1601592 5681216 1608696 5685384 1610496 5683784 -1610432 5683632 1610432 5683584 1608664 5685224 1610496 5683784 -1608664 5685224 1610432 5683584 1601624 5681136 1601592 5681216 -1608696 5685384 1610528 5683880 1610496 5683784 1608664 5685224 -1610496 5683784 1610432 5683632 1608664 5685224 1610528 5683880 -1608696 5685384 1610528 5683880 1608664 5685224 1601592 5681216 -1608696 5685384 1608664 5685224 1601592 5681216 1608304 5686080 -1608696 5685384 1608664 5685224 1608304 5686080 1608392 5686016 -1608696 5685384 1608664 5685224 1608392 5686016 1608504 5685952 -1608304 5686080 1608344 5686056 1608392 5686016 1608664 5685224 -1608664 5685224 1601624 5681136 1601592 5681216 1608304 5686080 -1608696 5685384 1610528 5683880 1608664 5685224 1608392 5686016 -1608664 5685224 1601592 5681216 1608304 5686080 1608392 5686016 -1601592 5681216 1601128 5681664 1608304 5686080 1608664 5685224 -1608696 5685384 1610536 5684592 1610528 5683880 1608664 5685224 -1610536 5684592 1610576 5683944 1610528 5683880 1608664 5685224 -1608696 5685384 1610536 5684592 1608664 5685224 1608392 5686016 -1610528 5683880 1610496 5683784 1608664 5685224 1610536 5684592 -1608696 5685384 1610168 5685696 1610536 5684592 1608664 5685224 -1608696 5685384 1608792 5685560 1610168 5685696 1608664 5685224 -1608792 5685560 1610080 5685800 1610168 5685696 1608664 5685224 -1608696 5685384 1608792 5685560 1608664 5685224 1608392 5686016 -1610168 5685696 1610200 5685672 1610536 5684592 1608664 5685224 -1610168 5685696 1610200 5685672 1608664 5685224 1608792 5685560 -1610536 5684592 1610528 5683880 1608664 5685224 1610200 5685672 -1610432 5683584 1601624 5681136 1608664 5685224 1610432 5683632 -1610200 5685672 1610672 5684808 1610536 5684592 1608664 5685224 -1610496 5683784 1608712 5685184 1608664 5685224 1610528 5683880 -1608664 5685224 1608712 5685184 1610432 5683632 1610432 5683584 -1608664 5685224 1610536 5684592 1610528 5683880 1608712 5685184 -1610536 5684592 1610576 5683944 1610528 5683880 1608712 5685184 -1610528 5683880 1610496 5683784 1608712 5685184 1610536 5684592 -1608664 5685224 1610200 5685672 1610536 5684592 1608712 5685184 -1608664 5685224 1610168 5685696 1610200 5685672 1608712 5685184 -1610536 5684592 1610528 5683880 1608712 5685184 1610200 5685672 -1608664 5685224 1608792 5685560 1610168 5685696 1608712 5685184 -1608664 5685224 1608696 5685384 1608792 5685560 1608712 5685184 -1608792 5685560 1610080 5685800 1610168 5685696 1608712 5685184 -1610168 5685696 1610200 5685672 1608712 5685184 1608792 5685560 -1608792 5685560 1610168 5685696 1608712 5685184 1608696 5685384 -1610200 5685672 1610536 5684592 1608712 5685184 1610168 5685696 -1608712 5685184 1610432 5683584 1608664 5685224 1608696 5685384 -1608664 5685224 1608712 5685184 1610432 5683584 1601624 5681136 -1610432 5683584 1601592 5681064 1601624 5681136 1608712 5685184 -1608712 5685184 1610432 5683632 1610432 5683584 1601624 5681136 -1608664 5685224 1608712 5685184 1601624 5681136 1601592 5681216 -1608664 5685224 1608696 5685384 1608712 5685184 1601624 5681136 -1608712 5685184 1610496 5683784 1610432 5683632 1610432 5683584 -1610496 5683784 1610432 5683632 1608712 5685184 1610528 5683880 -1610200 5685672 1610672 5684808 1610536 5684592 1608712 5685184 -1601624 5681136 1608736 5685128 1610432 5683584 1601592 5681064 -1610432 5683584 1608736 5685128 1608712 5685184 1610432 5683632 -1610432 5683584 1601624 5681136 1608736 5685128 1610432 5683632 -1608712 5685184 1608736 5685128 1601624 5681136 1608664 5685224 -1608736 5685128 1610432 5683584 1601624 5681136 1608664 5685224 -1601624 5681136 1601592 5681216 1608664 5685224 1608736 5685128 -1601624 5681136 1601592 5681216 1608736 5685128 1610432 5683584 -1601592 5681216 1608304 5686080 1608664 5685224 1608736 5685128 -1608664 5685224 1608712 5685184 1608736 5685128 1601592 5681216 -1608712 5685184 1610496 5683784 1610432 5683632 1608736 5685128 -1610432 5683632 1610432 5683584 1608736 5685128 1610496 5683784 -1608736 5685128 1608664 5685224 1608712 5685184 1610496 5683784 -1608712 5685184 1610528 5683880 1610496 5683784 1608736 5685128 -1608712 5685184 1610536 5684592 1610528 5683880 1608736 5685128 -1610536 5684592 1610576 5683944 1610528 5683880 1608736 5685128 -1608712 5685184 1610200 5685672 1610536 5684592 1608736 5685128 -1610536 5684592 1610528 5683880 1608736 5685128 1610200 5685672 -1608712 5685184 1610168 5685696 1610200 5685672 1608736 5685128 -1608712 5685184 1608792 5685560 1610168 5685696 1608736 5685128 -1608792 5685560 1610080 5685800 1610168 5685696 1608736 5685128 -1608792 5685560 1608816 5685680 1610080 5685800 1608736 5685128 -1608792 5685560 1610080 5685800 1608736 5685128 1608712 5685184 -1610200 5685672 1610536 5684592 1608736 5685128 1610168 5685696 -1608712 5685184 1608696 5685384 1608792 5685560 1608736 5685128 -1610168 5685696 1610200 5685672 1608736 5685128 1610080 5685800 -1610496 5683784 1610432 5683632 1608736 5685128 1610528 5683880 -1608712 5685184 1608792 5685560 1608736 5685128 1608664 5685224 -1610528 5683880 1610496 5683784 1608736 5685128 1610536 5684592 -1610200 5685672 1610672 5684808 1610536 5684592 1608736 5685128 -1601624 5681136 1608768 5685096 1610432 5683584 1601592 5681064 -1608736 5685128 1608768 5685096 1601624 5681136 1601592 5681216 -1610432 5683584 1608768 5685096 1608736 5685128 1610432 5683632 -1610432 5683584 1601624 5681136 1608768 5685096 1610432 5683632 -1608768 5685096 1601624 5681136 1608736 5685128 1610432 5683632 -1608736 5685128 1610496 5683784 1610432 5683632 1608768 5685096 -1608736 5685128 1610496 5683784 1608768 5685096 1601624 5681136 -1610432 5683632 1610432 5683584 1608768 5685096 1610496 5683784 -1608736 5685128 1610528 5683880 1610496 5683784 1608768 5685096 -1608736 5685128 1610528 5683880 1608768 5685096 1601624 5681136 -1610496 5683784 1610432 5683632 1608768 5685096 1610528 5683880 -1608736 5685128 1610536 5684592 1610528 5683880 1608768 5685096 -1608736 5685128 1610536 5684592 1608768 5685096 1601624 5681136 -1610536 5684592 1610576 5683944 1610528 5683880 1608768 5685096 -1608736 5685128 1610200 5685672 1610536 5684592 1608768 5685096 -1608736 5685128 1610200 5685672 1608768 5685096 1601624 5681136 -1608736 5685128 1610168 5685696 1610200 5685672 1608768 5685096 -1608736 5685128 1610168 5685696 1608768 5685096 1601624 5681136 -1610200 5685672 1610536 5684592 1608768 5685096 1610168 5685696 -1608736 5685128 1610080 5685800 1610168 5685696 1608768 5685096 -1608736 5685128 1610080 5685800 1608768 5685096 1601624 5681136 -1608736 5685128 1608792 5685560 1610080 5685800 1608768 5685096 -1608736 5685128 1608792 5685560 1608768 5685096 1601624 5681136 -1608792 5685560 1608816 5685680 1610080 5685800 1608768 5685096 -1608736 5685128 1608712 5685184 1608792 5685560 1608768 5685096 -1608736 5685128 1608712 5685184 1608768 5685096 1601624 5681136 -1608792 5685560 1610080 5685800 1608768 5685096 1608712 5685184 -1610168 5685696 1610200 5685672 1608768 5685096 1610080 5685800 -1608712 5685184 1608696 5685384 1608792 5685560 1608768 5685096 -1608712 5685184 1608664 5685224 1608696 5685384 1608768 5685096 -1608792 5685560 1610080 5685800 1608768 5685096 1608696 5685384 -1608712 5685184 1608696 5685384 1608768 5685096 1608736 5685128 -1610080 5685800 1610168 5685696 1608768 5685096 1608792 5685560 -1610528 5683880 1610496 5683784 1608768 5685096 1610536 5684592 -1610536 5684592 1610528 5683880 1608768 5685096 1610200 5685672 -1610200 5685672 1610672 5684808 1610536 5684592 1608768 5685096 -1610528 5683880 1608872 5685040 1610536 5684592 1610576 5683944 -1608768 5685096 1608872 5685040 1610528 5683880 1610496 5683784 -1608872 5685040 1610536 5684592 1610528 5683880 1610496 5683784 -1608768 5685096 1610536 5684592 1608872 5685040 1610496 5683784 -1608768 5685096 1608872 5685040 1610496 5683784 1610432 5683632 -1608768 5685096 1608872 5685040 1610432 5683632 1610432 5683584 -1608768 5685096 1608872 5685040 1610432 5683584 1601624 5681136 -1608768 5685096 1610536 5684592 1608872 5685040 1610432 5683584 -1608872 5685040 1610496 5683784 1610432 5683632 1610432 5683584 -1608872 5685040 1610528 5683880 1610496 5683784 1610432 5683632 -1610536 5684592 1608872 5685040 1608768 5685096 1610200 5685672 -1610536 5684592 1610528 5683880 1608872 5685040 1610200 5685672 -1608872 5685040 1610432 5683584 1608768 5685096 1610200 5685672 -1608768 5685096 1610168 5685696 1610200 5685672 1608872 5685040 -1608768 5685096 1610168 5685696 1608872 5685040 1610432 5683584 -1608768 5685096 1610080 5685800 1610168 5685696 1608872 5685040 -1608768 5685096 1610080 5685800 1608872 5685040 1610432 5683584 -1610168 5685696 1610200 5685672 1608872 5685040 1610080 5685800 -1608768 5685096 1608792 5685560 1610080 5685800 1608872 5685040 -1608768 5685096 1608792 5685560 1608872 5685040 1610432 5683584 -1608792 5685560 1608816 5685680 1610080 5685800 1608872 5685040 -1608768 5685096 1608696 5685384 1608792 5685560 1608872 5685040 -1608768 5685096 1608696 5685384 1608872 5685040 1610432 5683584 -1610080 5685800 1610168 5685696 1608872 5685040 1608792 5685560 -1608768 5685096 1608712 5685184 1608696 5685384 1608872 5685040 -1608712 5685184 1608664 5685224 1608696 5685384 1608872 5685040 -1608768 5685096 1608712 5685184 1608872 5685040 1610432 5683584 -1608696 5685384 1608792 5685560 1608872 5685040 1608712 5685184 -1608768 5685096 1608736 5685128 1608712 5685184 1608872 5685040 -1608792 5685560 1610080 5685800 1608872 5685040 1608696 5685384 -1610200 5685672 1610536 5684592 1608872 5685040 1610168 5685696 -1610536 5684592 1608872 5685040 1610200 5685672 1610672 5684808 -1608872 5685040 1608912 5685032 1610536 5684592 1610528 5683880 -1608872 5685040 1608912 5685032 1610528 5683880 1610496 5683784 -1608872 5685040 1610200 5685672 1608912 5685032 1610496 5683784 -1608912 5685032 1610536 5684592 1610528 5683880 1610496 5683784 -1608912 5685032 1610200 5685672 1610536 5684592 1610528 5683880 -1610536 5684592 1610576 5683944 1610528 5683880 1608912 5685032 -1608872 5685040 1608912 5685032 1610496 5683784 1610432 5683632 -1608912 5685032 1610528 5683880 1610496 5683784 1610432 5683632 -1608872 5685040 1610200 5685672 1608912 5685032 1610432 5683632 -1608872 5685040 1608912 5685032 1610432 5683632 1610432 5683584 -1608872 5685040 1610200 5685672 1608912 5685032 1610432 5683584 -1608872 5685040 1608912 5685032 1610432 5683584 1608768 5685096 -1608912 5685032 1610496 5683784 1610432 5683632 1610432 5683584 -1610200 5685672 1608912 5685032 1608872 5685040 1610168 5685696 -1608912 5685032 1610432 5683584 1608872 5685040 1610168 5685696 -1610200 5685672 1610536 5684592 1608912 5685032 1610168 5685696 -1608872 5685040 1610080 5685800 1610168 5685696 1608912 5685032 -1608872 5685040 1610080 5685800 1608912 5685032 1610432 5683584 -1608872 5685040 1608792 5685560 1610080 5685800 1608912 5685032 -1608872 5685040 1608792 5685560 1608912 5685032 1610432 5683584 -1608792 5685560 1608816 5685680 1610080 5685800 1608912 5685032 -1610080 5685800 1610168 5685696 1608912 5685032 1608792 5685560 -1608872 5685040 1608696 5685384 1608792 5685560 1608912 5685032 -1608872 5685040 1608696 5685384 1608912 5685032 1610432 5683584 -1608872 5685040 1608712 5685184 1608696 5685384 1608912 5685032 -1608712 5685184 1608664 5685224 1608696 5685384 1608912 5685032 -1608872 5685040 1608712 5685184 1608912 5685032 1610432 5683584 -1608792 5685560 1610080 5685800 1608912 5685032 1608696 5685384 -1608872 5685040 1608768 5685096 1608712 5685184 1608912 5685032 -1608696 5685384 1608792 5685560 1608912 5685032 1608712 5685184 -1610168 5685696 1610200 5685672 1608912 5685032 1610080 5685800 -1610536 5684592 1608912 5685032 1610200 5685672 1610672 5684808 -1608912 5685032 1609040 5684992 1610528 5683880 1610496 5683784 -1608912 5685032 1609040 5684992 1610496 5683784 1610432 5683632 -1609040 5684992 1610528 5683880 1610496 5683784 1610432 5683632 -1610536 5684592 1609040 5684992 1608912 5685032 1610200 5685672 -1608912 5685032 1610200 5685672 1609040 5684992 1610432 5683632 -1608912 5685032 1610168 5685696 1610200 5685672 1609040 5684992 -1610200 5685672 1610536 5684592 1609040 5684992 1610168 5685696 -1608912 5685032 1610168 5685696 1609040 5684992 1610432 5683632 -1609040 5684992 1610536 5684592 1610528 5683880 1610496 5683784 -1610536 5684592 1610528 5683880 1609040 5684992 1610200 5685672 -1610528 5683880 1609040 5684992 1610536 5684592 1610576 5683944 -1608912 5685032 1609040 5684992 1610432 5683632 1610432 5683584 -1609040 5684992 1610496 5683784 1610432 5683632 1610432 5683584 -1608912 5685032 1610168 5685696 1609040 5684992 1610432 5683584 -1608912 5685032 1609040 5684992 1610432 5683584 1608872 5685040 -1608912 5685032 1610168 5685696 1609040 5684992 1608872 5685040 -1610432 5683584 1608768 5685096 1608872 5685040 1609040 5684992 -1609040 5684992 1610432 5683632 1610432 5683584 1608872 5685040 -1608912 5685032 1610080 5685800 1610168 5685696 1609040 5684992 -1608912 5685032 1610080 5685800 1609040 5684992 1608872 5685040 -1610168 5685696 1610200 5685672 1609040 5684992 1610080 5685800 -1608912 5685032 1608792 5685560 1610080 5685800 1609040 5684992 -1608912 5685032 1608792 5685560 1609040 5684992 1608872 5685040 -1608792 5685560 1608816 5685680 1610080 5685800 1609040 5684992 -1608816 5685680 1610032 5685920 1610080 5685800 1609040 5684992 -1608792 5685560 1608816 5685680 1609040 5684992 1608912 5685032 -1608912 5685032 1608696 5685384 1608792 5685560 1609040 5684992 -1610080 5685800 1610168 5685696 1609040 5684992 1608816 5685680 -1610536 5684592 1609040 5684992 1610200 5685672 1610672 5684808 -1608872 5685040 1609056 5684960 1610432 5683584 1608768 5685096 -1609040 5684992 1609056 5684960 1608872 5685040 1608912 5685032 -1609040 5684992 1610432 5683584 1609056 5684960 1608912 5685032 -1609056 5684960 1610432 5683584 1608872 5685040 1608912 5685032 -1610432 5683584 1609056 5684960 1609040 5684992 1610432 5683632 -1609040 5684992 1610496 5683784 1610432 5683632 1609056 5684960 -1609040 5684992 1610528 5683880 1610496 5683784 1609056 5684960 -1610496 5683784 1610432 5683632 1609056 5684960 1610528 5683880 -1609040 5684992 1610536 5684592 1610528 5683880 1609056 5684960 -1610528 5683880 1610496 5683784 1609056 5684960 1610536 5684592 -1609056 5684960 1608912 5685032 1609040 5684992 1610536 5684592 -1609040 5684992 1610200 5685672 1610536 5684592 1609056 5684960 -1609040 5684992 1610168 5685696 1610200 5685672 1609056 5684960 -1609040 5684992 1610080 5685800 1610168 5685696 1609056 5684960 -1610536 5684592 1610528 5683880 1609056 5684960 1610200 5685672 -1609040 5684992 1610168 5685696 1609056 5684960 1608912 5685032 -1610200 5685672 1610536 5684592 1609056 5684960 1610168 5685696 -1610536 5684592 1610576 5683944 1610528 5683880 1609056 5684960 -1610432 5683584 1608872 5685040 1609056 5684960 1610432 5683632 -1610432 5683632 1610432 5683584 1609056 5684960 1610496 5683784 -1610200 5685672 1610672 5684808 1610536 5684592 1609056 5684960 -1609056 5684960 1609088 5684944 1610528 5683880 1610496 5683784 -1609056 5684960 1609088 5684944 1610496 5683784 1610432 5683632 -1609088 5684944 1610528 5683880 1610496 5683784 1610432 5683632 -1610536 5684592 1609088 5684944 1609056 5684960 1610200 5685672 -1609056 5684960 1610168 5685696 1610200 5685672 1609088 5684944 -1609056 5684960 1609040 5684992 1610168 5685696 1609088 5684944 -1609040 5684992 1610080 5685800 1610168 5685696 1609088 5684944 -1609040 5684992 1610080 5685800 1609088 5684944 1609056 5684960 -1610200 5685672 1610536 5684592 1609088 5684944 1610168 5685696 -1610168 5685696 1610200 5685672 1609088 5684944 1610080 5685800 -1610528 5683880 1609088 5684944 1610536 5684592 1610576 5683944 -1609056 5684960 1609040 5684992 1609088 5684944 1610432 5683632 -1609088 5684944 1610536 5684592 1610528 5683880 1610496 5683784 -1609056 5684960 1609088 5684944 1610432 5683632 1610432 5683584 -1609088 5684944 1610496 5683784 1610432 5683632 1610432 5683584 -1609056 5684960 1609040 5684992 1609088 5684944 1610432 5683584 -1609056 5684960 1609088 5684944 1610432 5683584 1608872 5685040 -1610432 5683584 1608768 5685096 1608872 5685040 1609088 5684944 -1609056 5684960 1609088 5684944 1608872 5685040 1608912 5685032 -1609056 5684960 1609040 5684992 1609088 5684944 1608872 5685040 -1609088 5684944 1610432 5683632 1610432 5683584 1608872 5685040 -1609040 5684992 1608816 5685680 1610080 5685800 1609088 5684944 -1610536 5684592 1610528 5683880 1609088 5684944 1610200 5685672 -1610536 5684592 1609088 5684944 1610200 5685672 1610672 5684808 -1610432 5683632 1609144 5684888 1609088 5684944 1610496 5683784 -1609088 5684944 1610528 5683880 1610496 5683784 1609144 5684888 -1610496 5683784 1610432 5683632 1609144 5684888 1610528 5683880 -1609088 5684944 1610536 5684592 1610528 5683880 1609144 5684888 -1610528 5683880 1610496 5683784 1609144 5684888 1610536 5684592 -1610536 5684592 1610576 5683944 1610528 5683880 1609144 5684888 -1609144 5684888 1610432 5683584 1609088 5684944 1610536 5684592 -1609088 5684944 1609144 5684888 1610432 5683584 1608872 5685040 -1610432 5683584 1608768 5685096 1608872 5685040 1609144 5684888 -1609088 5684944 1609144 5684888 1608872 5685040 1609056 5684960 -1608872 5685040 1608912 5685032 1609056 5684960 1609144 5684888 -1609088 5684944 1610536 5684592 1609144 5684888 1609056 5684960 -1609144 5684888 1610432 5683584 1608872 5685040 1609056 5684960 -1609088 5684944 1610200 5685672 1610536 5684592 1609144 5684888 -1609088 5684944 1610168 5685696 1610200 5685672 1609144 5684888 -1609088 5684944 1610080 5685800 1610168 5685696 1609144 5684888 -1609088 5684944 1609040 5684992 1610080 5685800 1609144 5684888 -1610168 5685696 1610200 5685672 1609144 5684888 1610080 5685800 -1610536 5684592 1610528 5683880 1609144 5684888 1610200 5685672 -1609088 5684944 1610080 5685800 1609144 5684888 1609056 5684960 -1610200 5685672 1610536 5684592 1609144 5684888 1610168 5685696 -1609144 5684888 1610432 5683632 1610432 5683584 1608872 5685040 -1610432 5683632 1610432 5683584 1609144 5684888 1610496 5683784 -1610200 5685672 1610672 5684808 1610536 5684592 1609144 5684888 -1608768 5685096 1609168 5684752 1610432 5683584 1601624 5681136 -1610432 5683584 1601592 5681064 1601624 5681136 1609168 5684752 -1610432 5683584 1609168 5684752 1608872 5685040 1609144 5684888 -1608768 5685096 1609168 5684752 1601624 5681136 1608736 5685128 -1609168 5684752 1609144 5684888 1610432 5683584 1601624 5681136 -1608872 5685040 1609056 5684960 1609144 5684888 1609168 5684752 -1609144 5684888 1610432 5683584 1609168 5684752 1609056 5684960 -1608872 5685040 1608912 5685032 1609056 5684960 1609168 5684752 -1608912 5685032 1609040 5684992 1609056 5684960 1609168 5684752 -1609056 5684960 1609088 5684944 1609144 5684888 1609168 5684752 -1609056 5684960 1609144 5684888 1609168 5684752 1608912 5685032 -1610432 5683584 1609168 5684752 1609144 5684888 1610432 5683632 -1609168 5684752 1609056 5684960 1609144 5684888 1610432 5683632 -1610432 5683584 1601624 5681136 1609168 5684752 1610432 5683632 -1609168 5684752 1608768 5685096 1608872 5685040 1608912 5685032 -1609144 5684888 1610496 5683784 1610432 5683632 1609168 5684752 -1609144 5684888 1610528 5683880 1610496 5683784 1609168 5684752 -1609144 5684888 1610536 5684592 1610528 5683880 1609168 5684752 -1610528 5683880 1610496 5683784 1609168 5684752 1610536 5684592 -1609144 5684888 1610536 5684592 1609168 5684752 1609056 5684960 -1610536 5684592 1610576 5683944 1610528 5683880 1609168 5684752 -1609144 5684888 1610200 5685672 1610536 5684592 1609168 5684752 -1610432 5683632 1610432 5683584 1609168 5684752 1610496 5683784 -1610496 5683784 1610432 5683632 1609168 5684752 1610528 5683880 -1608768 5685096 1608872 5685040 1609168 5684752 1601624 5681136 -1601624 5681136 1609120 5684624 1610432 5683584 1601592 5681064 -1609168 5684752 1609120 5684624 1601624 5681136 1608768 5685096 -1601624 5681136 1608736 5685128 1608768 5685096 1609120 5684624 -1608768 5685096 1609168 5684752 1609120 5684624 1608736 5685128 -1601624 5681136 1601592 5681216 1608736 5685128 1609120 5684624 -1609168 5684752 1610432 5683584 1609120 5684624 1608768 5685096 -1610432 5683584 1609120 5684624 1609168 5684752 1610432 5683632 -1609120 5684624 1608768 5685096 1609168 5684752 1610432 5683632 -1609120 5684624 1610432 5683584 1601624 5681136 1608736 5685128 -1610432 5683584 1601624 5681136 1609120 5684624 1610432 5683632 -1609168 5684752 1610496 5683784 1610432 5683632 1609120 5684624 -1609168 5684752 1610496 5683784 1609120 5684624 1608768 5685096 -1610432 5683632 1610432 5683584 1609120 5684624 1610496 5683784 -1609168 5684752 1610528 5683880 1610496 5683784 1609120 5684624 -1609168 5684752 1610536 5684592 1610528 5683880 1609120 5684624 -1609168 5684752 1609144 5684888 1610536 5684592 1609120 5684624 -1610536 5684592 1610576 5683944 1610528 5683880 1609120 5684624 -1609168 5684752 1610536 5684592 1609120 5684624 1608768 5685096 -1610496 5683784 1610432 5683632 1609120 5684624 1610528 5683880 -1610528 5683880 1610496 5683784 1609120 5684624 1610536 5684592 -1609168 5684752 1609120 5684624 1608768 5685096 1608872 5685040 -1609120 5684624 1608736 5685128 1608768 5685096 1608872 5685040 -1609168 5684752 1610536 5684592 1609120 5684624 1608872 5685040 -1609168 5684752 1609120 5684624 1608872 5685040 1608912 5685032 -1609168 5684752 1609120 5684624 1608912 5685032 1609056 5684960 -1608912 5685032 1609040 5684992 1609056 5684960 1609120 5684624 -1609168 5684752 1610536 5684592 1609120 5684624 1609056 5684960 -1609168 5684752 1609120 5684624 1609056 5684960 1609144 5684888 -1609120 5684624 1608872 5685040 1608912 5685032 1609056 5684960 -1609120 5684624 1608768 5685096 1608872 5685040 1608912 5685032 -1601624 5681136 1609072 5684560 1610432 5683584 1601592 5681064 -1609120 5684624 1609072 5684560 1601624 5681136 1608736 5685128 -1609072 5684560 1610432 5683584 1601624 5681136 1608736 5685128 -1601624 5681136 1601592 5681216 1608736 5685128 1609072 5684560 -1601624 5681136 1601592 5681216 1609072 5684560 1610432 5683584 -1609120 5684624 1609072 5684560 1608736 5685128 1608768 5685096 -1609120 5684624 1609072 5684560 1608768 5685096 1608872 5685040 -1609072 5684560 1608736 5685128 1608768 5685096 1608872 5685040 -1601592 5681216 1608664 5685224 1608736 5685128 1609072 5684560 -1601592 5681216 1608664 5685224 1609072 5684560 1601624 5681136 -1601592 5681216 1608304 5686080 1608664 5685224 1609072 5684560 -1608736 5685128 1608768 5685096 1609072 5684560 1608664 5685224 -1609120 5684624 1610432 5683584 1609072 5684560 1608872 5685040 -1610432 5683584 1609072 5684560 1609120 5684624 1610432 5683632 -1610432 5683584 1601624 5681136 1609072 5684560 1610432 5683632 -1609120 5684624 1610496 5683784 1610432 5683632 1609072 5684560 -1609072 5684560 1608872 5685040 1609120 5684624 1610496 5683784 -1610432 5683632 1610432 5683584 1609072 5684560 1610496 5683784 -1608664 5685224 1608712 5685184 1608736 5685128 1609072 5684560 -1609120 5684624 1610528 5683880 1610496 5683784 1609072 5684560 -1610496 5683784 1610432 5683632 1609072 5684560 1610528 5683880 -1609120 5684624 1610528 5683880 1609072 5684560 1608872 5685040 -1609120 5684624 1610536 5684592 1610528 5683880 1609072 5684560 -1609120 5684624 1609072 5684560 1608872 5685040 1608912 5685032 -1609072 5684560 1608768 5685096 1608872 5685040 1608912 5685032 -1609120 5684624 1610528 5683880 1609072 5684560 1608912 5685032 -1609120 5684624 1609072 5684560 1608912 5685032 1609056 5684960 -1608912 5685032 1609040 5684992 1609056 5684960 1609072 5684560 -1609120 5684624 1609072 5684560 1609056 5684960 1609168 5684752 -1609120 5684624 1610528 5683880 1609072 5684560 1609056 5684960 -1609072 5684560 1608872 5685040 1608912 5685032 1609056 5684960 -1601624 5681136 1609032 5684488 1610432 5683584 1601592 5681064 -1609072 5684560 1609032 5684488 1601624 5681136 1601592 5681216 -1609072 5684560 1610432 5683584 1609032 5684488 1601592 5681216 -1610432 5683584 1609032 5684488 1609072 5684560 1610432 5683632 -1609032 5684488 1601592 5681216 1609072 5684560 1610432 5683632 -1609032 5684488 1610432 5683584 1601624 5681136 1601592 5681216 -1609072 5684560 1609032 5684488 1601592 5681216 1608664 5685224 -1609032 5684488 1601624 5681136 1601592 5681216 1608664 5685224 -1609072 5684560 1610432 5683632 1609032 5684488 1608664 5685224 -1601592 5681216 1608304 5686080 1608664 5685224 1609032 5684488 -1609072 5684560 1609032 5684488 1608664 5685224 1608736 5685128 -1609072 5684560 1610432 5683632 1609032 5684488 1608736 5685128 -1609032 5684488 1601592 5681216 1608664 5685224 1608736 5685128 -1610432 5683584 1601624 5681136 1609032 5684488 1610432 5683632 -1609072 5684560 1609032 5684488 1608736 5685128 1608768 5685096 -1609072 5684560 1610432 5683632 1609032 5684488 1608768 5685096 -1609072 5684560 1609032 5684488 1608768 5685096 1608872 5685040 -1609072 5684560 1609032 5684488 1608872 5685040 1608912 5685032 -1609072 5684560 1610432 5683632 1609032 5684488 1608872 5685040 -1609032 5684488 1608664 5685224 1608736 5685128 1608768 5685096 -1609032 5684488 1608736 5685128 1608768 5685096 1608872 5685040 -1609072 5684560 1610496 5683784 1610432 5683632 1609032 5684488 -1609072 5684560 1610496 5683784 1609032 5684488 1608872 5685040 -1610432 5683632 1610432 5683584 1609032 5684488 1610496 5683784 -1609072 5684560 1610528 5683880 1610496 5683784 1609032 5684488 -1609072 5684560 1610528 5683880 1609032 5684488 1608872 5685040 -1610496 5683784 1610432 5683632 1609032 5684488 1610528 5683880 -1608664 5685224 1608712 5685184 1608736 5685128 1609032 5684488 -1609072 5684560 1609120 5684624 1610528 5683880 1609032 5684488 -1609072 5684560 1609120 5684624 1609032 5684488 1608872 5685040 -1610528 5683880 1610496 5683784 1609032 5684488 1609120 5684624 -1609120 5684624 1610536 5684592 1610528 5683880 1609032 5684488 -1601624 5681136 1608968 5684424 1610432 5683584 1601592 5681064 -1609032 5684488 1608968 5684424 1601624 5681136 1601592 5681216 -1609032 5684488 1608968 5684424 1601592 5681216 1608664 5685224 -1608968 5684424 1601624 5681136 1601592 5681216 1608664 5685224 -1609032 5684488 1610432 5683584 1608968 5684424 1608664 5685224 -1609032 5684488 1608968 5684424 1608664 5685224 1608736 5685128 -1608968 5684424 1601592 5681216 1608664 5685224 1608736 5685128 -1609032 5684488 1610432 5683584 1608968 5684424 1608736 5685128 -1601592 5681216 1608304 5686080 1608664 5685224 1608968 5684424 -1609032 5684488 1608968 5684424 1608736 5685128 1608768 5685096 -1609032 5684488 1610432 5683584 1608968 5684424 1608768 5685096 -1608968 5684424 1608664 5685224 1608736 5685128 1608768 5685096 -1610432 5683584 1608968 5684424 1609032 5684488 1610432 5683632 -1609032 5684488 1610496 5683784 1610432 5683632 1608968 5684424 -1608968 5684424 1608768 5685096 1609032 5684488 1610432 5683632 -1608968 5684424 1610432 5683584 1601624 5681136 1601592 5681216 -1610432 5683584 1601624 5681136 1608968 5684424 1610432 5683632 -1609032 5684488 1608968 5684424 1608768 5685096 1608872 5685040 -1609032 5684488 1610432 5683632 1608968 5684424 1608872 5685040 -1609032 5684488 1608968 5684424 1608872 5685040 1609072 5684560 -1608872 5685040 1608912 5685032 1609072 5684560 1608968 5684424 -1609032 5684488 1610432 5683632 1608968 5684424 1609072 5684560 -1608968 5684424 1608736 5685128 1608768 5685096 1608872 5685040 -1608968 5684424 1608768 5685096 1608872 5685040 1609072 5684560 -1608664 5685224 1608712 5685184 1608736 5685128 1608968 5684424 -1601624 5681136 1608696 5684208 1610432 5683584 1601592 5681064 -1610432 5683584 1610520 5683528 1601592 5681064 1608696 5684208 -1601592 5681064 1601624 5681136 1608696 5684208 1610520 5683528 -1610520 5683528 1610616 5683496 1601592 5681064 1608696 5684208 -1608968 5684424 1608696 5684208 1601624 5681136 1601592 5681216 -1608968 5684424 1608696 5684208 1601592 5681216 1608664 5685224 -1608968 5684424 1608696 5684208 1608664 5685224 1608736 5685128 -1608696 5684208 1601592 5681216 1608664 5685224 1608736 5685128 -1608968 5684424 1608696 5684208 1608736 5685128 1608768 5685096 -1608696 5684208 1608664 5685224 1608736 5685128 1608768 5685096 -1601592 5681216 1608304 5686080 1608664 5685224 1608696 5684208 -1608664 5685224 1608736 5685128 1608696 5684208 1608304 5686080 -1608968 5684424 1608696 5684208 1608768 5685096 1608872 5685040 -1608304 5686080 1608392 5686016 1608664 5685224 1608696 5684208 -1601592 5681216 1601128 5681664 1608304 5686080 1608696 5684208 -1608696 5684208 1601624 5681136 1601592 5681216 1608304 5686080 -1608968 5684424 1610432 5683584 1608696 5684208 1608768 5685096 -1610432 5683584 1608696 5684208 1608968 5684424 1610432 5683632 -1601624 5681136 1601592 5681216 1608696 5684208 1601592 5681064 -1608664 5685224 1608712 5685184 1608736 5685128 1608696 5684208 -1608696 5684208 1608968 5684424 1610432 5683584 1610520 5683528 -1608696 5684208 1608368 5684000 1601592 5681064 1601624 5681136 -1601592 5681064 1608368 5684000 1610520 5683528 1610616 5683496 -1610520 5683528 1608368 5684000 1608696 5684208 1610432 5683584 -1608696 5684208 1608368 5684000 1601624 5681136 1601592 5681216 -1608368 5684000 1601592 5681064 1601624 5681136 1601592 5681216 -1608696 5684208 1608368 5684000 1601592 5681216 1608304 5686080 -1608696 5684208 1608368 5684000 1608304 5686080 1608664 5685224 -1608696 5684208 1608368 5684000 1608664 5685224 1608736 5685128 -1608696 5684208 1608368 5684000 1608736 5685128 1608768 5685096 -1608368 5684000 1608304 5686080 1608664 5685224 1608736 5685128 -1608304 5686080 1608392 5686016 1608664 5685224 1608368 5684000 -1601592 5681216 1601128 5681664 1608304 5686080 1608368 5684000 -1601592 5681216 1601160 5681616 1601128 5681664 1608368 5684000 -1601128 5681664 1601088 5681704 1608304 5686080 1608368 5684000 -1601088 5681704 1608280 5686200 1608304 5686080 1608368 5684000 -1601128 5681664 1601088 5681704 1608368 5684000 1601592 5681216 -1608368 5684000 1601088 5681704 1608304 5686080 1608664 5685224 -1608368 5684000 1601624 5681136 1601592 5681216 1601128 5681664 -1608664 5685224 1608712 5685184 1608736 5685128 1608368 5684000 -1608696 5684208 1610432 5683584 1608368 5684000 1608736 5685128 -1608696 5684208 1608968 5684424 1610432 5683584 1608368 5684000 -1608368 5684000 1610520 5683528 1601592 5681064 1601624 5681136 -1610520 5683528 1601592 5681064 1608368 5684000 1610432 5683584 -1601592 5681064 1608272 5683896 1610520 5683528 1610616 5683496 -1601592 5681064 1608272 5683896 1610616 5683496 1601560 5681032 -1601592 5681064 1608368 5684000 1608272 5683896 1610616 5683496 -1608272 5683896 1608368 5684000 1610520 5683528 1610616 5683496 -1608368 5684000 1608272 5683896 1601592 5681064 1601624 5681136 -1608368 5684000 1608272 5683896 1601624 5681136 1601592 5681216 -1608368 5684000 1608272 5683896 1601592 5681216 1601128 5681664 -1608272 5683896 1601624 5681136 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1608272 5683896 -1608368 5684000 1608272 5683896 1601128 5681664 1601088 5681704 -1608368 5684000 1608272 5683896 1601088 5681704 1608304 5686080 -1601088 5681704 1608280 5686200 1608304 5686080 1608272 5683896 -1608272 5683896 1601128 5681664 1601088 5681704 1608304 5686080 -1608368 5684000 1608272 5683896 1608304 5686080 1608664 5685224 -1608368 5684000 1608272 5683896 1608664 5685224 1608736 5685128 -1608304 5686080 1608392 5686016 1608664 5685224 1608272 5683896 -1608272 5683896 1601088 5681704 1608304 5686080 1608664 5685224 -1608272 5683896 1601592 5681216 1601128 5681664 1601088 5681704 -1608272 5683896 1610616 5683496 1601592 5681064 1601624 5681136 -1608272 5683896 1601592 5681064 1601624 5681136 1601592 5681216 -1608368 5684000 1610520 5683528 1608272 5683896 1608664 5685224 -1610520 5683528 1608272 5683896 1608368 5684000 1610432 5683584 -1608368 5684000 1608696 5684208 1610432 5683584 1608272 5683896 -1610520 5683528 1610616 5683496 1608272 5683896 1610432 5683584 -1608696 5684208 1608968 5684424 1610432 5683584 1608272 5683896 -1608272 5683896 1608664 5685224 1608368 5684000 1608696 5684208 -1610432 5683584 1610520 5683528 1608272 5683896 1608696 5684208 -1610616 5683496 1608232 5683800 1608272 5683896 1610520 5683528 -1601592 5681064 1608232 5683800 1610616 5683496 1601560 5681032 -1610616 5683496 1601464 5680984 1601560 5681032 1608232 5683800 -1610616 5683496 1601560 5681032 1608232 5683800 1610520 5683528 -1608272 5683896 1608232 5683800 1601592 5681064 1601624 5681136 -1608232 5683800 1601624 5681136 1608272 5683896 1610520 5683528 -1608272 5683896 1610432 5683584 1610520 5683528 1608232 5683800 -1610520 5683528 1610616 5683496 1608232 5683800 1610432 5683584 -1608272 5683896 1610432 5683584 1608232 5683800 1601624 5681136 -1601592 5681064 1601624 5681136 1608232 5683800 1601560 5681032 -1608272 5683896 1608232 5683800 1601624 5681136 1601592 5681216 -1608272 5683896 1608232 5683800 1601592 5681216 1601128 5681664 -1601592 5681216 1601160 5681616 1601128 5681664 1608232 5683800 -1608272 5683896 1608232 5683800 1601128 5681664 1601088 5681704 -1608232 5683800 1601592 5681216 1601128 5681664 1601088 5681704 -1608272 5683896 1608232 5683800 1601088 5681704 1608304 5686080 -1601088 5681704 1608280 5686200 1608304 5686080 1608232 5683800 -1608272 5683896 1608232 5683800 1608304 5686080 1608664 5685224 -1608232 5683800 1601128 5681664 1601088 5681704 1608304 5686080 -1608232 5683800 1601592 5681064 1601624 5681136 1601592 5681216 -1608272 5683896 1610432 5683584 1608232 5683800 1608304 5686080 -1608232 5683800 1601624 5681136 1601592 5681216 1601128 5681664 -1608272 5683896 1608696 5684208 1610432 5683584 1608232 5683800 -1608272 5683896 1608368 5684000 1608696 5684208 1608232 5683800 -1608272 5683896 1608368 5684000 1608232 5683800 1608304 5686080 -1610432 5683584 1610520 5683528 1608232 5683800 1608696 5684208 -1608696 5684208 1608968 5684424 1610432 5683584 1608232 5683800 -1608696 5684208 1610432 5683584 1608232 5683800 1608368 5684000 -1601560 5681032 1608144 5683608 1610616 5683496 1601464 5680984 -1608232 5683800 1608144 5683608 1601560 5681032 1601592 5681064 -1610616 5683496 1608144 5683608 1608232 5683800 1610520 5683528 -1608232 5683800 1610432 5683584 1610520 5683528 1608144 5683608 -1610520 5683528 1610616 5683496 1608144 5683608 1610432 5683584 -1608144 5683608 1610616 5683496 1601560 5681032 1601592 5681064 -1610616 5683496 1601560 5681032 1608144 5683608 1610520 5683528 -1608232 5683800 1608696 5684208 1610432 5683584 1608144 5683608 -1610432 5683584 1610520 5683528 1608144 5683608 1608696 5684208 -1608232 5683800 1608144 5683608 1601592 5681064 1601624 5681136 -1608144 5683608 1601560 5681032 1601592 5681064 1601624 5681136 -1608232 5683800 1608144 5683608 1601624 5681136 1601592 5681216 -1608144 5683608 1601592 5681064 1601624 5681136 1601592 5681216 -1608232 5683800 1608696 5684208 1608144 5683608 1601592 5681216 -1608696 5684208 1608968 5684424 1610432 5683584 1608144 5683608 -1608232 5683800 1608144 5683608 1601592 5681216 1601128 5681664 -1608232 5683800 1608144 5683608 1601128 5681664 1601088 5681704 -1601592 5681216 1601160 5681616 1601128 5681664 1608144 5683608 -1608232 5683800 1608144 5683608 1601088 5681704 1608304 5686080 -1601088 5681704 1608280 5686200 1608304 5686080 1608144 5683608 -1608144 5683608 1601128 5681664 1601088 5681704 1608304 5686080 -1608232 5683800 1608144 5683608 1608304 5686080 1608272 5683896 -1608144 5683608 1601624 5681136 1601592 5681216 1601128 5681664 -1608232 5683800 1608696 5684208 1608144 5683608 1608304 5686080 -1608144 5683608 1601592 5681216 1601128 5681664 1601088 5681704 -1608232 5683800 1608368 5684000 1608696 5684208 1608144 5683608 -1601560 5681032 1608136 5683496 1610616 5683496 1601464 5680984 -1608144 5683608 1608136 5683496 1601560 5681032 1601592 5681064 -1608144 5683608 1608136 5683496 1601592 5681064 1601624 5681136 -1608136 5683496 1601560 5681032 1601592 5681064 1601624 5681136 -1608144 5683608 1610616 5683496 1608136 5683496 1601624 5681136 -1610616 5683496 1608136 5683496 1608144 5683608 1610520 5683528 -1610616 5683496 1601560 5681032 1608136 5683496 1610520 5683528 -1608144 5683608 1610432 5683584 1610520 5683528 1608136 5683496 -1608144 5683608 1608696 5684208 1610432 5683584 1608136 5683496 -1610432 5683584 1610520 5683528 1608136 5683496 1608696 5684208 -1608136 5683496 1601624 5681136 1608144 5683608 1608696 5684208 -1610520 5683528 1610616 5683496 1608136 5683496 1610432 5683584 -1608136 5683496 1610616 5683496 1601560 5681032 1601592 5681064 -1608144 5683608 1608232 5683800 1608696 5684208 1608136 5683496 -1608696 5684208 1610432 5683584 1608136 5683496 1608232 5683800 -1608144 5683608 1608232 5683800 1608136 5683496 1601624 5681136 -1608144 5683608 1608136 5683496 1601624 5681136 1601592 5681216 -1608136 5683496 1601592 5681064 1601624 5681136 1601592 5681216 -1608144 5683608 1608232 5683800 1608136 5683496 1601592 5681216 -1608144 5683608 1608136 5683496 1601592 5681216 1601128 5681664 -1608696 5684208 1608968 5684424 1610432 5683584 1608136 5683496 -1608232 5683800 1608368 5684000 1608696 5684208 1608136 5683496 -1601560 5681032 1608168 5683464 1610616 5683496 1601464 5680984 -1610616 5683496 1608168 5683464 1608136 5683496 1610520 5683528 -1608168 5683464 1601560 5681032 1608136 5683496 1610520 5683528 -1610616 5683496 1601560 5681032 1608168 5683464 1610520 5683528 -1608136 5683496 1610432 5683584 1610520 5683528 1608168 5683464 -1608136 5683496 1610432 5683584 1608168 5683464 1601560 5681032 -1610520 5683528 1610616 5683496 1608168 5683464 1610432 5683584 -1608136 5683496 1608696 5684208 1610432 5683584 1608168 5683464 -1608136 5683496 1608232 5683800 1608696 5684208 1608168 5683464 -1608136 5683496 1608232 5683800 1608168 5683464 1601560 5681032 -1608696 5684208 1610432 5683584 1608168 5683464 1608232 5683800 -1610432 5683584 1610520 5683528 1608168 5683464 1608696 5684208 -1608136 5683496 1608168 5683464 1601560 5681032 1601592 5681064 -1608136 5683496 1608232 5683800 1608168 5683464 1601592 5681064 -1608168 5683464 1610616 5683496 1601560 5681032 1601592 5681064 -1608136 5683496 1608168 5683464 1601592 5681064 1601624 5681136 -1608136 5683496 1608232 5683800 1608168 5683464 1601624 5681136 -1608136 5683496 1608168 5683464 1601624 5681136 1601592 5681216 -1608168 5683464 1601560 5681032 1601592 5681064 1601624 5681136 -1608136 5683496 1608144 5683608 1608232 5683800 1608168 5683464 -1608232 5683800 1608696 5684208 1608168 5683464 1608144 5683608 -1608136 5683496 1608144 5683608 1608168 5683464 1601624 5681136 -1608696 5684208 1608968 5684424 1610432 5683584 1608168 5683464 -1608232 5683800 1608368 5684000 1608696 5684208 1608168 5683464 -1608232 5683800 1608368 5684000 1608168 5683464 1608144 5683608 -1608232 5683800 1608272 5683896 1608368 5684000 1608168 5683464 -1608696 5684208 1610432 5683584 1608168 5683464 1608368 5684000 -1608696 5684208 1608200 5683472 1608168 5683464 1608368 5684000 -1608200 5683472 1610432 5683584 1608168 5683464 1608368 5684000 -1608696 5684208 1610432 5683584 1608200 5683472 1608368 5684000 -1608168 5683464 1608200 5683472 1610432 5683584 1610520 5683528 -1608168 5683464 1608200 5683472 1610520 5683528 1610616 5683496 -1608168 5683464 1608368 5684000 1608200 5683472 1610616 5683496 -1608168 5683464 1608200 5683472 1610616 5683496 1601560 5681032 -1608200 5683472 1608696 5684208 1610432 5683584 1610520 5683528 -1608200 5683472 1610432 5683584 1610520 5683528 1610616 5683496 -1610432 5683584 1608200 5683472 1608696 5684208 1608968 5684424 -1608168 5683464 1608232 5683800 1608368 5684000 1608200 5683472 -1608168 5683464 1608144 5683608 1608232 5683800 1608200 5683472 -1608168 5683464 1608144 5683608 1608200 5683472 1610616 5683496 -1608232 5683800 1608272 5683896 1608368 5684000 1608200 5683472 -1608368 5684000 1608696 5684208 1608200 5683472 1608232 5683800 -1608168 5683464 1608136 5683496 1608144 5683608 1608200 5683472 -1608144 5683608 1608232 5683800 1608200 5683472 1608136 5683496 -1608168 5683464 1608136 5683496 1608200 5683472 1610616 5683496 -1608232 5683800 1608368 5684000 1608200 5683472 1608144 5683608 -1601560 5681032 1608240 5683448 1610616 5683496 1601464 5680984 -1608168 5683464 1608240 5683448 1601560 5681032 1601592 5681064 -1610616 5683496 1608240 5683448 1608168 5683464 1608200 5683472 -1610616 5683496 1608240 5683448 1608200 5683472 1610520 5683528 -1608240 5683448 1608168 5683464 1608200 5683472 1610520 5683528 -1608168 5683464 1608200 5683472 1608240 5683448 1601592 5681064 -1608240 5683448 1610616 5683496 1601560 5681032 1601592 5681064 -1608200 5683472 1610432 5683584 1610520 5683528 1608240 5683448 -1610520 5683528 1610616 5683496 1608240 5683448 1610432 5683584 -1608200 5683472 1610432 5683584 1608240 5683448 1608168 5683464 -1608200 5683472 1608696 5684208 1610432 5683584 1608240 5683448 -1608200 5683472 1608696 5684208 1608240 5683448 1608168 5683464 -1608200 5683472 1608368 5684000 1608696 5684208 1608240 5683448 -1608200 5683472 1608368 5684000 1608240 5683448 1608168 5683464 -1608696 5684208 1610432 5683584 1608240 5683448 1608368 5684000 -1608200 5683472 1608232 5683800 1608368 5684000 1608240 5683448 -1608200 5683472 1608232 5683800 1608240 5683448 1608168 5683464 -1608368 5684000 1608696 5684208 1608240 5683448 1608232 5683800 -1608232 5683800 1608272 5683896 1608368 5684000 1608240 5683448 -1610432 5683584 1610520 5683528 1608240 5683448 1608696 5684208 -1608168 5683464 1608240 5683448 1601592 5681064 1601624 5681136 -1610616 5683496 1601560 5681032 1608240 5683448 1610520 5683528 -1608696 5684208 1608968 5684424 1610432 5683584 1608240 5683448 -1608200 5683472 1608144 5683608 1608232 5683800 1608240 5683448 -1608200 5683472 1608136 5683496 1608144 5683608 1608240 5683448 -1608200 5683472 1608144 5683608 1608240 5683448 1608168 5683464 -1608232 5683800 1608368 5684000 1608240 5683448 1608144 5683608 -1601560 5681032 1608608 5683328 1610616 5683496 1601464 5680984 -1608240 5683448 1608608 5683328 1601560 5681032 1601592 5681064 -1608240 5683448 1608608 5683328 1601592 5681064 1608168 5683464 -1608240 5683448 1608608 5683328 1608168 5683464 1608200 5683472 -1608608 5683328 1601560 5681032 1601592 5681064 1608168 5683464 -1608240 5683448 1610616 5683496 1608608 5683328 1608168 5683464 -1601592 5681064 1601624 5681136 1608168 5683464 1608608 5683328 -1610616 5683496 1608608 5683328 1608240 5683448 1610520 5683528 -1608240 5683448 1610432 5683584 1610520 5683528 1608608 5683328 -1608608 5683328 1608168 5683464 1608240 5683448 1610432 5683584 -1608240 5683448 1608696 5684208 1610432 5683584 1608608 5683328 -1610432 5683584 1610520 5683528 1608608 5683328 1608696 5684208 -1608240 5683448 1608368 5684000 1608696 5684208 1608608 5683328 -1608240 5683448 1608232 5683800 1608368 5684000 1608608 5683328 -1608368 5684000 1608696 5684208 1608608 5683328 1608232 5683800 -1608240 5683448 1608232 5683800 1608608 5683328 1608168 5683464 -1608232 5683800 1608272 5683896 1608368 5684000 1608608 5683328 -1608240 5683448 1608144 5683608 1608232 5683800 1608608 5683328 -1608696 5684208 1610432 5683584 1608608 5683328 1608368 5684000 -1610520 5683528 1610616 5683496 1608608 5683328 1610432 5683584 -1608608 5683328 1610616 5683496 1601560 5681032 1601592 5681064 -1610616 5683496 1601560 5681032 1608608 5683328 1610520 5683528 -1608696 5684208 1608968 5684424 1610432 5683584 1608608 5683328 -1610432 5683584 1610520 5683528 1608608 5683328 1608968 5684424 -1608696 5684208 1608968 5684424 1608608 5683328 1608368 5684000 -1608968 5684424 1610432 5683632 1610432 5683584 1608608 5683328 -1610432 5683584 1610520 5683528 1608608 5683328 1610432 5683632 -1608968 5684424 1609032 5684488 1610432 5683632 1608608 5683328 -1608968 5684424 1610432 5683632 1608608 5683328 1608696 5684208 -1601560 5681032 1608768 5683304 1610616 5683496 1601464 5680984 -1608608 5683328 1608768 5683304 1601560 5681032 1601592 5681064 -1610616 5683496 1608768 5683304 1608608 5683328 1610520 5683528 -1610616 5683496 1601560 5681032 1608768 5683304 1610520 5683528 -1608608 5683328 1610432 5683584 1610520 5683528 1608768 5683304 -1608608 5683328 1610432 5683632 1610432 5683584 1608768 5683304 -1610432 5683584 1610520 5683528 1608768 5683304 1610432 5683632 -1608768 5683304 1601560 5681032 1608608 5683328 1610432 5683632 -1610520 5683528 1610616 5683496 1608768 5683304 1610432 5683584 -1608608 5683328 1608968 5684424 1610432 5683632 1608768 5683304 -1610432 5683632 1610432 5683584 1608768 5683304 1608968 5684424 -1608608 5683328 1608968 5684424 1608768 5683304 1601560 5681032 -1608968 5684424 1609032 5684488 1610432 5683632 1608768 5683304 -1608608 5683328 1608696 5684208 1608968 5684424 1608768 5683304 -1608608 5683328 1608368 5684000 1608696 5684208 1608768 5683304 -1608608 5683328 1608696 5684208 1608768 5683304 1601560 5681032 -1608968 5684424 1610432 5683632 1608768 5683304 1608696 5684208 -1601560 5681032 1608864 5683304 1610616 5683496 1601464 5680984 -1610616 5683496 1657056 5639384 1601464 5680984 1608864 5683304 -1610616 5683496 1608864 5683304 1608768 5683304 1610520 5683528 -1608864 5683304 1601560 5681032 1608768 5683304 1610520 5683528 -1601560 5681032 1608768 5683304 1608864 5683304 1601464 5680984 -1608864 5683304 1610520 5683528 1610616 5683496 1601464 5680984 -1608768 5683304 1610432 5683584 1610520 5683528 1608864 5683304 -1608768 5683304 1610432 5683584 1608864 5683304 1601560 5681032 -1610520 5683528 1610616 5683496 1608864 5683304 1610432 5683584 -1608768 5683304 1610432 5683632 1610432 5683584 1608864 5683304 -1608768 5683304 1608968 5684424 1610432 5683632 1608864 5683304 -1608768 5683304 1608968 5684424 1608864 5683304 1601560 5681032 -1610432 5683632 1610432 5683584 1608864 5683304 1608968 5684424 -1610432 5683584 1610520 5683528 1608864 5683304 1610432 5683632 -1608768 5683304 1608864 5683304 1601560 5681032 1608608 5683328 -1608968 5684424 1609032 5684488 1610432 5683632 1608864 5683304 -1608768 5683304 1608696 5684208 1608968 5684424 1608864 5683304 -1608968 5684424 1610432 5683632 1608864 5683304 1608696 5684208 -1608768 5683304 1608696 5684208 1608864 5683304 1601560 5681032 -1608768 5683304 1608608 5683328 1608696 5684208 1608864 5683304 -1608968 5684424 1609000 5683352 1608864 5683304 1608696 5684208 -1609000 5683352 1610432 5683632 1608864 5683304 1608696 5684208 -1608864 5683304 1609000 5683352 1610432 5683632 1610432 5683584 -1608864 5683304 1608696 5684208 1609000 5683352 1610432 5683584 -1608864 5683304 1609000 5683352 1610432 5683584 1610520 5683528 -1608864 5683304 1609000 5683352 1610520 5683528 1610616 5683496 -1608864 5683304 1608696 5684208 1609000 5683352 1610616 5683496 -1608864 5683304 1609000 5683352 1610616 5683496 1601464 5680984 -1609000 5683352 1610432 5683632 1610432 5683584 1610520 5683528 -1609000 5683352 1610432 5683584 1610520 5683528 1610616 5683496 -1609000 5683352 1608968 5684424 1610432 5683632 1610432 5683584 -1608968 5684424 1610432 5683632 1609000 5683352 1608696 5684208 -1610432 5683632 1609000 5683352 1608968 5684424 1609032 5684488 -1610432 5683632 1609000 5683352 1609032 5684488 1610496 5683784 -1610432 5683632 1610432 5683584 1609000 5683352 1609032 5684488 -1609000 5683352 1608696 5684208 1608968 5684424 1609032 5684488 -1608864 5683304 1608768 5683304 1608696 5684208 1609000 5683352 -1608696 5684208 1608968 5684424 1609000 5683352 1608768 5683304 -1608864 5683304 1608768 5683304 1609000 5683352 1610616 5683496 -1608768 5683304 1608608 5683328 1608696 5684208 1609000 5683352 -1610432 5683632 1609264 5683496 1609032 5684488 1610496 5683784 -1609264 5683496 1609000 5683352 1609032 5684488 1610496 5683784 -1609000 5683352 1609264 5683496 1610432 5683632 1610432 5683584 -1609000 5683352 1609264 5683496 1610432 5683584 1610520 5683528 -1609000 5683352 1609264 5683496 1610520 5683528 1610616 5683496 -1609264 5683496 1610432 5683632 1610432 5683584 1610520 5683528 -1609000 5683352 1609032 5684488 1609264 5683496 1610520 5683528 -1610432 5683632 1610432 5683584 1609264 5683496 1610496 5683784 -1609032 5684488 1609264 5683496 1609000 5683352 1608968 5684424 -1609032 5684488 1610496 5683784 1609264 5683496 1608968 5684424 -1609264 5683496 1610520 5683528 1609000 5683352 1608968 5684424 -1609000 5683352 1608696 5684208 1608968 5684424 1609264 5683496 -1609000 5683352 1608768 5683304 1608696 5684208 1609264 5683496 -1609000 5683352 1608696 5684208 1609264 5683496 1610520 5683528 -1608968 5684424 1609032 5684488 1609264 5683496 1608696 5684208 -1609032 5684488 1610528 5683880 1610496 5683784 1609264 5683496 -1610496 5683784 1610432 5683632 1609264 5683496 1610528 5683880 -1609032 5684488 1610528 5683880 1609264 5683496 1608968 5684424 -1609032 5684488 1609120 5684624 1610528 5683880 1609264 5683496 -1609032 5684488 1609120 5684624 1609264 5683496 1608968 5684424 -1610528 5683880 1610496 5683784 1609264 5683496 1609120 5684624 -1609032 5684488 1609072 5684560 1609120 5684624 1609264 5683496 -1609120 5684624 1610536 5684592 1610528 5683880 1609264 5683496 -1610496 5683784 1609360 5683512 1609264 5683496 1610528 5683880 -1610496 5683784 1610432 5683632 1609360 5683512 1610528 5683880 -1609264 5683496 1609360 5683512 1610432 5683632 1610432 5683584 -1609360 5683512 1610496 5683784 1610432 5683632 1610432 5683584 -1609264 5683496 1609360 5683512 1610432 5683584 1610520 5683528 -1609264 5683496 1609360 5683512 1610520 5683528 1609000 5683352 -1610520 5683528 1610616 5683496 1609000 5683352 1609360 5683512 -1610616 5683496 1608864 5683304 1609000 5683352 1609360 5683512 -1609000 5683352 1609264 5683496 1609360 5683512 1610616 5683496 -1609360 5683512 1610432 5683584 1610520 5683528 1610616 5683496 -1609360 5683512 1610432 5683632 1610432 5683584 1610520 5683528 -1609360 5683512 1609000 5683352 1609264 5683496 1610528 5683880 -1609264 5683496 1609120 5684624 1610528 5683880 1609360 5683512 -1610528 5683880 1610496 5683784 1609360 5683512 1609120 5684624 -1609264 5683496 1609120 5684624 1609360 5683512 1609000 5683352 -1609264 5683496 1609032 5684488 1609120 5684624 1609360 5683512 -1609264 5683496 1608968 5684424 1609032 5684488 1609360 5683512 -1609264 5683496 1608968 5684424 1609360 5683512 1609000 5683352 -1609264 5683496 1608696 5684208 1608968 5684424 1609360 5683512 -1609032 5684488 1609120 5684624 1609360 5683512 1608968 5684424 -1609120 5684624 1610528 5683880 1609360 5683512 1609032 5684488 -1609032 5684488 1609072 5684560 1609120 5684624 1609360 5683512 -1609120 5684624 1610536 5684592 1610528 5683880 1609360 5683512 -1609000 5683352 1609448 5683488 1610616 5683496 1608864 5683304 -1609360 5683512 1609448 5683488 1609000 5683352 1609264 5683496 -1609360 5683512 1610616 5683496 1609448 5683488 1609264 5683496 -1609448 5683488 1610616 5683496 1609000 5683352 1609264 5683496 -1610616 5683496 1609448 5683488 1609360 5683512 1610520 5683528 -1610616 5683496 1609000 5683352 1609448 5683488 1610520 5683528 -1609448 5683488 1609264 5683496 1609360 5683512 1610520 5683528 -1609360 5683512 1610432 5683584 1610520 5683528 1609448 5683488 -1609360 5683512 1610432 5683584 1609448 5683488 1609264 5683496 -1610520 5683528 1610616 5683496 1609448 5683488 1610432 5683584 -1609360 5683512 1610432 5683632 1610432 5683584 1609448 5683488 -1609360 5683512 1610496 5683784 1610432 5683632 1609448 5683488 -1609360 5683512 1610496 5683784 1609448 5683488 1609264 5683496 -1609360 5683512 1610528 5683880 1610496 5683784 1609448 5683488 -1609360 5683512 1609120 5684624 1610528 5683880 1609448 5683488 -1610496 5683784 1610432 5683632 1609448 5683488 1610528 5683880 -1609360 5683512 1609120 5684624 1609448 5683488 1609264 5683496 -1610528 5683880 1610496 5683784 1609448 5683488 1609120 5684624 -1610432 5683584 1610520 5683528 1609448 5683488 1610432 5683632 -1610432 5683632 1610432 5683584 1609448 5683488 1610496 5683784 -1609360 5683512 1609032 5684488 1609120 5684624 1609448 5683488 -1609120 5684624 1610528 5683880 1609448 5683488 1609032 5684488 -1609360 5683512 1609032 5684488 1609448 5683488 1609264 5683496 -1609360 5683512 1608968 5684424 1609032 5684488 1609448 5683488 -1609032 5684488 1609072 5684560 1609120 5684624 1609448 5683488 -1609120 5684624 1610536 5684592 1610528 5683880 1609448 5683488 -1609120 5684624 1609464 5683512 1609448 5683488 1609032 5684488 -1609464 5683512 1610528 5683880 1609448 5683488 1609032 5684488 -1609120 5684624 1610528 5683880 1609464 5683512 1609032 5684488 -1609448 5683488 1609464 5683512 1610528 5683880 1610496 5683784 -1609448 5683488 1609032 5684488 1609464 5683512 1610496 5683784 -1609464 5683512 1609120 5684624 1610528 5683880 1610496 5683784 -1609448 5683488 1609464 5683512 1610496 5683784 1610432 5683632 -1609448 5683488 1609032 5684488 1609464 5683512 1610432 5683632 -1609464 5683512 1610528 5683880 1610496 5683784 1610432 5683632 -1609448 5683488 1609464 5683512 1610432 5683632 1610432 5683584 -1609448 5683488 1609032 5684488 1609464 5683512 1610432 5683584 -1609464 5683512 1610496 5683784 1610432 5683632 1610432 5683584 -1609448 5683488 1609464 5683512 1610432 5683584 1610520 5683528 -1609448 5683488 1609360 5683512 1609032 5684488 1609464 5683512 -1609032 5684488 1609120 5684624 1609464 5683512 1609360 5683512 -1609448 5683488 1609360 5683512 1609464 5683512 1610432 5683584 -1609360 5683512 1608968 5684424 1609032 5684488 1609464 5683512 -1609120 5684624 1609464 5683512 1609032 5684488 1609072 5684560 -1610528 5683880 1609464 5683512 1609120 5684624 1610536 5684592 -1610616 5683496 1609480 5683480 1609448 5683488 1610520 5683528 -1609480 5683480 1609000 5683352 1609448 5683488 1610520 5683528 -1609000 5683352 1609480 5683480 1610616 5683496 1608864 5683304 -1609448 5683488 1609480 5683480 1609000 5683352 1609264 5683496 -1609448 5683488 1610432 5683584 1610520 5683528 1609480 5683480 -1610520 5683528 1610616 5683496 1609480 5683480 1610432 5683584 -1609448 5683488 1610432 5683584 1609480 5683480 1609000 5683352 -1609448 5683488 1609464 5683512 1610432 5683584 1609480 5683480 -1609448 5683488 1609464 5683512 1609480 5683480 1609000 5683352 -1610432 5683584 1610520 5683528 1609480 5683480 1609464 5683512 -1609464 5683512 1610432 5683632 1610432 5683584 1609480 5683480 -1609464 5683512 1610496 5683784 1610432 5683632 1609480 5683480 -1610432 5683584 1610520 5683528 1609480 5683480 1610432 5683632 -1609464 5683512 1610432 5683632 1609480 5683480 1609448 5683488 -1610616 5683496 1609000 5683352 1609480 5683480 1610520 5683528 -1609000 5683352 1609464 5683456 1610616 5683496 1608864 5683304 -1610616 5683496 1601464 5680984 1608864 5683304 1609464 5683456 -1609464 5683456 1609480 5683480 1610616 5683496 1608864 5683304 -1609480 5683480 1609464 5683456 1609000 5683352 1609448 5683488 -1609480 5683480 1609464 5683456 1609448 5683488 1609464 5683512 -1609000 5683352 1609264 5683496 1609448 5683488 1609464 5683456 -1609264 5683496 1609360 5683512 1609448 5683488 1609464 5683456 -1609264 5683496 1609360 5683512 1609464 5683456 1609000 5683352 -1609448 5683488 1609480 5683480 1609464 5683456 1609360 5683512 -1609480 5683480 1610616 5683496 1609464 5683456 1609448 5683488 -1610616 5683496 1609464 5683456 1609480 5683480 1610520 5683528 -1609480 5683480 1610432 5683584 1610520 5683528 1609464 5683456 -1609480 5683480 1610432 5683632 1610432 5683584 1609464 5683456 -1610616 5683496 1608864 5683304 1609464 5683456 1610520 5683528 -1609464 5683456 1609448 5683488 1609480 5683480 1610432 5683584 -1610520 5683528 1610616 5683496 1609464 5683456 1610432 5683584 -1609000 5683352 1609264 5683496 1609464 5683456 1608864 5683304 -1609464 5683456 1609504 5683440 1608864 5683304 1609000 5683352 -1608864 5683304 1609504 5683440 1610616 5683496 1601464 5680984 -1609464 5683456 1610616 5683496 1609504 5683440 1609000 5683352 -1610616 5683496 1609504 5683440 1609464 5683456 1610520 5683528 -1609504 5683440 1609000 5683352 1609464 5683456 1610520 5683528 -1609504 5683440 1610616 5683496 1608864 5683304 1609000 5683352 -1610616 5683496 1608864 5683304 1609504 5683440 1610520 5683528 -1609464 5683456 1610432 5683584 1610520 5683528 1609504 5683440 -1609464 5683456 1609480 5683480 1610432 5683584 1609504 5683440 -1609480 5683480 1610432 5683632 1610432 5683584 1609504 5683440 -1609480 5683480 1610432 5683632 1609504 5683440 1609464 5683456 -1609464 5683456 1609480 5683480 1609504 5683440 1609000 5683352 -1610520 5683528 1610616 5683496 1609504 5683440 1610432 5683584 -1609480 5683480 1609464 5683512 1610432 5683632 1609504 5683440 -1610432 5683584 1610520 5683528 1609504 5683440 1610432 5683632 -1609464 5683456 1609504 5683440 1609000 5683352 1609264 5683496 -1610616 5683496 1609600 5683216 1601464 5680984 1608864 5683304 -1601464 5680984 1601560 5681032 1608864 5683304 1609600 5683216 -1608864 5683304 1610616 5683496 1609600 5683216 1601560 5681032 -1657056 5639384 1609600 5683216 1610616 5683496 1610648 5683504 -1601464 5680984 1609600 5683216 1657056 5639384 1599875 5599875 -1601560 5681032 1608768 5683304 1608864 5683304 1609600 5683216 -1608864 5683304 1610616 5683496 1609600 5683216 1608768 5683304 -1601560 5681032 1608768 5683304 1609600 5683216 1601464 5680984 -1610616 5683496 1609600 5683216 1608864 5683304 1609504 5683440 -1609600 5683216 1608768 5683304 1608864 5683304 1609504 5683440 -1657056 5639384 1609600 5683216 1610648 5683504 1657088 5639464 -1601560 5681032 1608608 5683328 1608768 5683304 1609600 5683216 -1608864 5683304 1609000 5683352 1609504 5683440 1609600 5683216 -1608864 5683304 1609000 5683352 1609600 5683216 1608768 5683304 -1609000 5683352 1609464 5683456 1609504 5683440 1609600 5683216 -1609504 5683440 1610616 5683496 1609600 5683216 1609464 5683456 -1609000 5683352 1609464 5683456 1609600 5683216 1608864 5683304 -1609600 5683216 1657056 5639384 1601464 5680984 1601560 5681032 -1610616 5683496 1609600 5683216 1609504 5683440 1610520 5683528 -1609600 5683216 1609464 5683456 1609504 5683440 1610520 5683528 -1609504 5683440 1610432 5683584 1610520 5683528 1609600 5683216 -1609504 5683440 1610432 5683584 1609600 5683216 1609464 5683456 -1610520 5683528 1610616 5683496 1609600 5683216 1610432 5683584 -1609504 5683440 1610432 5683632 1610432 5683584 1609600 5683216 -1609000 5683352 1609264 5683496 1609464 5683456 1609600 5683216 -1609464 5683456 1609504 5683440 1609600 5683216 1609264 5683496 -1609264 5683496 1609360 5683512 1609464 5683456 1609600 5683216 -1609000 5683352 1609264 5683496 1609600 5683216 1608864 5683304 -1657056 5639384 1601464 5680984 1609600 5683216 1610648 5683504 -1610616 5683496 1610648 5683504 1609600 5683216 1610520 5683528 -1610648 5683504 1609632 5683200 1609600 5683216 1610616 5683496 -1657056 5639384 1609632 5683200 1610648 5683504 1657088 5639464 -1610648 5683504 1657056 5639384 1609632 5683200 1610616 5683496 -1609600 5683216 1609632 5683200 1657056 5639384 1601464 5680984 -1657056 5639384 1599875 5599875 1601464 5680984 1609632 5683200 -1609600 5683216 1609632 5683200 1601464 5680984 1601560 5681032 -1609600 5683216 1609632 5683200 1601560 5681032 1608768 5683304 -1609600 5683216 1609632 5683200 1608768 5683304 1608864 5683304 -1609600 5683216 1609632 5683200 1608864 5683304 1609000 5683352 -1609632 5683200 1601560 5681032 1608768 5683304 1608864 5683304 -1601560 5681032 1608608 5683328 1608768 5683304 1609632 5683200 -1609632 5683200 1601464 5680984 1601560 5681032 1608768 5683304 -1609632 5683200 1657056 5639384 1601464 5680984 1601560 5681032 -1609632 5683200 1608864 5683304 1609600 5683216 1610616 5683496 -1609600 5683216 1610520 5683528 1610616 5683496 1609632 5683200 -1610616 5683496 1610648 5683504 1609632 5683200 1610520 5683528 -1609600 5683216 1610432 5683584 1610520 5683528 1609632 5683200 -1609600 5683216 1609504 5683440 1610432 5683584 1609632 5683200 -1610432 5683584 1610520 5683528 1609632 5683200 1609504 5683440 -1609504 5683440 1610432 5683632 1610432 5683584 1609632 5683200 -1609600 5683216 1609504 5683440 1609632 5683200 1608864 5683304 -1610520 5683528 1610616 5683496 1609632 5683200 1610432 5683584 -1609632 5683200 1610648 5683504 1657056 5639384 1601464 5680984 -1601464 5680984 1609648 5683176 1657056 5639384 1599875 5599875 -1609632 5683200 1609648 5683176 1601464 5680984 1601560 5681032 -1609632 5683200 1609648 5683176 1601560 5681032 1608768 5683304 -1609632 5683200 1609648 5683176 1608768 5683304 1608864 5683304 -1609632 5683200 1609648 5683176 1608864 5683304 1609600 5683216 -1608864 5683304 1609000 5683352 1609600 5683216 1609648 5683176 -1609648 5683176 1608768 5683304 1608864 5683304 1609600 5683216 -1601560 5681032 1608608 5683328 1608768 5683304 1609648 5683176 -1609648 5683176 1601560 5681032 1608768 5683304 1608864 5683304 -1609648 5683176 1657056 5639384 1601464 5680984 1601560 5681032 -1609648 5683176 1601464 5680984 1601560 5681032 1608768 5683304 -1657056 5639384 1609648 5683176 1609632 5683200 1610648 5683504 -1657056 5639384 1601464 5680984 1609648 5683176 1610648 5683504 -1657056 5639384 1609648 5683176 1610648 5683504 1657088 5639464 -1609632 5683200 1610616 5683496 1610648 5683504 1609648 5683176 -1609632 5683200 1610520 5683528 1610616 5683496 1609648 5683176 -1610616 5683496 1610648 5683504 1609648 5683176 1610520 5683528 -1609632 5683200 1610432 5683584 1610520 5683528 1609648 5683176 -1610520 5683528 1610616 5683496 1609648 5683176 1610432 5683584 -1609632 5683200 1609504 5683440 1610432 5683584 1609648 5683176 -1610648 5683504 1657056 5639384 1609648 5683176 1610616 5683496 -1609632 5683200 1610432 5683584 1609648 5683176 1609600 5683216 -1609648 5683176 1609696 5683144 1657056 5639384 1601464 5680984 -1609696 5683144 1610648 5683504 1657056 5639384 1601464 5680984 -1657056 5639384 1599875 5599875 1601464 5680984 1609696 5683144 -1657056 5639384 1609696 5683144 1610648 5683504 1657088 5639464 -1609648 5683176 1609696 5683144 1601464 5680984 1601560 5681032 -1609696 5683144 1657056 5639384 1601464 5680984 1601560 5681032 -1609648 5683176 1610648 5683504 1609696 5683144 1601560 5681032 -1609648 5683176 1609696 5683144 1601560 5681032 1608768 5683304 -1601560 5681032 1608608 5683328 1608768 5683304 1609696 5683144 -1609648 5683176 1609696 5683144 1608768 5683304 1608864 5683304 -1609648 5683176 1609696 5683144 1608864 5683304 1609600 5683216 -1609696 5683144 1601464 5680984 1601560 5681032 1608768 5683304 -1609648 5683176 1610648 5683504 1609696 5683144 1608864 5683304 -1609696 5683144 1601560 5681032 1608768 5683304 1608864 5683304 -1610648 5683504 1609696 5683144 1609648 5683176 1610616 5683496 -1610648 5683504 1657056 5639384 1609696 5683144 1610616 5683496 -1609648 5683176 1610520 5683528 1610616 5683496 1609696 5683144 -1609648 5683176 1610432 5683584 1610520 5683528 1609696 5683144 -1610520 5683528 1610616 5683496 1609696 5683144 1610432 5683584 -1609696 5683144 1608864 5683304 1609648 5683176 1610432 5683584 -1609648 5683176 1609632 5683200 1610432 5683584 1609696 5683144 -1610432 5683584 1610520 5683528 1609696 5683144 1609632 5683200 -1609632 5683200 1609504 5683440 1610432 5683584 1609696 5683144 -1609648 5683176 1609632 5683200 1609696 5683144 1608864 5683304 -1610616 5683496 1610648 5683504 1609696 5683144 1610520 5683528 -1609696 5683144 1609800 5683160 1657056 5639384 1601464 5680984 -1610648 5683504 1609800 5683160 1609696 5683144 1610616 5683496 -1609800 5683160 1657056 5639384 1609696 5683144 1610616 5683496 -1657056 5639384 1609800 5683160 1610648 5683504 1657088 5639464 -1610648 5683504 1657056 5639384 1609800 5683160 1610616 5683496 -1609696 5683144 1610520 5683528 1610616 5683496 1609800 5683160 -1609696 5683144 1610520 5683528 1609800 5683160 1657056 5639384 -1610616 5683496 1610648 5683504 1609800 5683160 1610520 5683528 -1609696 5683144 1610432 5683584 1610520 5683528 1609800 5683160 -1609696 5683144 1609632 5683200 1610432 5683584 1609800 5683160 -1609696 5683144 1609632 5683200 1609800 5683160 1657056 5639384 -1609632 5683200 1609504 5683440 1610432 5683584 1609800 5683160 -1609632 5683200 1609504 5683440 1609800 5683160 1609696 5683144 -1609632 5683200 1609600 5683216 1609504 5683440 1609800 5683160 -1610432 5683584 1610520 5683528 1609800 5683160 1609504 5683440 -1609504 5683440 1610432 5683632 1610432 5683584 1609800 5683160 -1609504 5683440 1609480 5683480 1610432 5683632 1609800 5683160 -1609504 5683440 1610432 5683632 1609800 5683160 1609632 5683200 -1610432 5683584 1610520 5683528 1609800 5683160 1610432 5683632 -1609696 5683144 1609648 5683176 1609632 5683200 1609800 5683160 -1610520 5683528 1610616 5683496 1609800 5683160 1610432 5683584 -1610432 5683584 1609848 5683192 1609800 5683160 1610432 5683632 -1609848 5683192 1610520 5683528 1609800 5683160 1610432 5683632 -1610432 5683584 1610520 5683528 1609848 5683192 1610432 5683632 -1609800 5683160 1609504 5683440 1610432 5683632 1609848 5683192 -1609504 5683440 1609480 5683480 1610432 5683632 1609848 5683192 -1609800 5683160 1609504 5683440 1609848 5683192 1610520 5683528 -1609800 5683160 1609632 5683200 1609504 5683440 1609848 5683192 -1609800 5683160 1609696 5683144 1609632 5683200 1609848 5683192 -1609632 5683200 1609600 5683216 1609504 5683440 1609848 5683192 -1609800 5683160 1609632 5683200 1609848 5683192 1610520 5683528 -1610432 5683632 1610432 5683584 1609848 5683192 1609504 5683440 -1609504 5683440 1610432 5683632 1609848 5683192 1609632 5683200 -1609800 5683160 1609848 5683192 1610520 5683528 1610616 5683496 -1609800 5683160 1609848 5683192 1610616 5683496 1610648 5683504 -1609800 5683160 1609632 5683200 1609848 5683192 1610616 5683496 -1609848 5683192 1610432 5683584 1610520 5683528 1610616 5683496 -1610432 5683632 1609984 5683328 1609504 5683440 1609480 5683480 -1609504 5683440 1609464 5683456 1609480 5683480 1609984 5683328 -1609984 5683328 1609848 5683192 1609504 5683440 1609480 5683480 -1610432 5683632 1609848 5683192 1609984 5683328 1609480 5683480 -1610432 5683632 1609984 5683328 1609480 5683480 1609464 5683512 -1610432 5683632 1609848 5683192 1609984 5683328 1609464 5683512 -1610432 5683632 1609984 5683328 1609464 5683512 1610496 5683784 -1609984 5683328 1609504 5683440 1609480 5683480 1609464 5683512 -1609848 5683192 1609984 5683328 1610432 5683632 1610432 5683584 -1609984 5683328 1609464 5683512 1610432 5683632 1610432 5683584 -1609848 5683192 1609504 5683440 1609984 5683328 1610432 5683584 -1609848 5683192 1609984 5683328 1610432 5683584 1610520 5683528 -1609848 5683192 1609984 5683328 1610520 5683528 1610616 5683496 -1609848 5683192 1609504 5683440 1609984 5683328 1610616 5683496 -1609984 5683328 1610432 5683584 1610520 5683528 1610616 5683496 -1609984 5683328 1610432 5683632 1610432 5683584 1610520 5683528 -1609504 5683440 1609984 5683328 1609848 5683192 1609632 5683200 -1609848 5683192 1609984 5683328 1610616 5683496 1609800 5683160 -1609984 5683328 1610080 5683496 1610432 5683632 1610432 5683584 -1610080 5683496 1609464 5683512 1610432 5683632 1610432 5683584 -1609984 5683328 1609464 5683512 1610080 5683496 1610432 5683584 -1610432 5683632 1610080 5683496 1609464 5683512 1610496 5683784 -1610432 5683632 1610432 5683584 1610080 5683496 1610496 5683784 -1610080 5683496 1609984 5683328 1609464 5683512 1610496 5683784 -1609464 5683512 1610528 5683880 1610496 5683784 1610080 5683496 -1609464 5683512 1609120 5684624 1610528 5683880 1610080 5683496 -1609464 5683512 1609032 5684488 1609120 5684624 1610080 5683496 -1609464 5683512 1609120 5684624 1610080 5683496 1609984 5683328 -1610496 5683784 1610432 5683632 1610080 5683496 1610528 5683880 -1610528 5683880 1610496 5683784 1610080 5683496 1609120 5684624 -1609464 5683512 1610080 5683496 1609984 5683328 1609480 5683480 -1609464 5683512 1609120 5684624 1610080 5683496 1609480 5683480 -1610080 5683496 1610432 5683584 1609984 5683328 1609480 5683480 -1609984 5683328 1609504 5683440 1609480 5683480 1610080 5683496 -1609504 5683440 1609464 5683456 1609480 5683480 1610080 5683496 -1609984 5683328 1609848 5683192 1609504 5683440 1610080 5683496 -1609984 5683328 1609504 5683440 1610080 5683496 1610432 5683584 -1609480 5683480 1609464 5683512 1610080 5683496 1609504 5683440 -1609984 5683328 1610080 5683496 1610432 5683584 1610520 5683528 -1610080 5683496 1610432 5683632 1610432 5683584 1610520 5683528 -1609984 5683328 1609504 5683440 1610080 5683496 1610520 5683528 -1609984 5683328 1610080 5683496 1610520 5683528 1610616 5683496 -1609120 5684624 1610536 5684592 1610528 5683880 1610080 5683496 -1609120 5684624 1609168 5684752 1610536 5684592 1610080 5683496 -1609120 5684624 1610536 5684592 1610080 5683496 1609464 5683512 -1610536 5684592 1610576 5683944 1610528 5683880 1610080 5683496 -1610528 5683880 1610496 5683784 1610080 5683496 1610536 5684592 -1610536 5684592 1610128 5683648 1609120 5684624 1609168 5684752 -1609120 5684624 1610128 5683648 1610080 5683496 1609464 5683512 -1609120 5684624 1610536 5684592 1610128 5683648 1609464 5683512 -1609120 5684624 1610128 5683648 1609464 5683512 1609032 5684488 -1610128 5683648 1610536 5684592 1610080 5683496 1609464 5683512 -1610080 5683496 1609480 5683480 1609464 5683512 1610128 5683648 -1610080 5683496 1610128 5683648 1610536 5684592 1610528 5683880 -1610536 5684592 1610576 5683944 1610528 5683880 1610128 5683648 -1610080 5683496 1609464 5683512 1610128 5683648 1610528 5683880 -1610128 5683648 1609120 5684624 1610536 5684592 1610528 5683880 -1610080 5683496 1610128 5683648 1610528 5683880 1610496 5683784 -1610080 5683496 1609464 5683512 1610128 5683648 1610496 5683784 -1610080 5683496 1610128 5683648 1610496 5683784 1610432 5683632 -1610080 5683496 1610128 5683648 1610432 5683632 1610432 5683584 -1610080 5683496 1609464 5683512 1610128 5683648 1610432 5683584 -1610080 5683496 1610128 5683648 1610432 5683584 1610520 5683528 -1610128 5683648 1610496 5683784 1610432 5683632 1610432 5683584 -1610128 5683648 1610528 5683880 1610496 5683784 1610432 5683632 -1610128 5683648 1610536 5684592 1610528 5683880 1610496 5683784 -1609120 5684624 1610152 5683888 1610128 5683648 1609464 5683512 -1610152 5683888 1610536 5684592 1610128 5683648 1609464 5683512 -1609120 5684624 1610536 5684592 1610152 5683888 1609464 5683512 -1610536 5684592 1610152 5683888 1609120 5684624 1609168 5684752 -1610536 5684592 1610128 5683648 1610152 5683888 1609168 5684752 -1610152 5683888 1609464 5683512 1609120 5684624 1609168 5684752 -1610536 5684592 1610152 5683888 1609168 5684752 1609144 5684888 -1610128 5683648 1610080 5683496 1609464 5683512 1610152 5683888 -1609120 5684624 1610152 5683888 1609464 5683512 1609032 5684488 -1610152 5683888 1610128 5683648 1609464 5683512 1609032 5684488 -1609120 5684624 1609168 5684752 1610152 5683888 1609032 5684488 -1609464 5683512 1609360 5683512 1609032 5684488 1610152 5683888 -1610128 5683648 1610152 5683888 1610536 5684592 1610528 5683880 -1610128 5683648 1609464 5683512 1610152 5683888 1610528 5683880 -1610152 5683888 1609168 5684752 1610536 5684592 1610528 5683880 -1610536 5684592 1610576 5683944 1610528 5683880 1610152 5683888 -1610536 5684592 1610576 5683944 1610152 5683888 1609168 5684752 -1610528 5683880 1610128 5683648 1610152 5683888 1610576 5683944 -1610536 5684592 1610672 5683992 1610576 5683944 1610152 5683888 -1609120 5684624 1610152 5683888 1609032 5684488 1609072 5684560 -1610128 5683648 1610152 5683888 1610528 5683880 1610496 5683784 -1610128 5683648 1609464 5683512 1610152 5683888 1610496 5683784 -1610152 5683888 1610576 5683944 1610528 5683880 1610496 5683784 -1610128 5683648 1610152 5683888 1610496 5683784 1610432 5683632 -1610128 5683648 1609464 5683512 1610152 5683888 1610432 5683632 -1610128 5683648 1610152 5683888 1610432 5683632 1610432 5683584 -1610152 5683888 1610528 5683880 1610496 5683784 1610432 5683632 -1610152 5683888 1610128 5683904 1609120 5684624 1609168 5684752 -1610152 5683888 1609032 5684488 1610128 5683904 1609168 5684752 -1610152 5683888 1610128 5683904 1609168 5684752 1610536 5684592 -1610152 5683888 1610128 5683904 1610536 5684592 1610576 5683944 -1610152 5683888 1609032 5684488 1610128 5683904 1610576 5683944 -1610128 5683904 1609120 5684624 1609168 5684752 1610536 5684592 -1610128 5683904 1609168 5684752 1610536 5684592 1610576 5683944 -1609168 5684752 1609144 5684888 1610536 5684592 1610128 5683904 -1609032 5684488 1610128 5683904 1610152 5683888 1609464 5683512 -1610152 5683888 1610128 5683648 1609464 5683512 1610128 5683904 -1610128 5683904 1610576 5683944 1610152 5683888 1610128 5683648 -1609032 5684488 1610128 5683904 1609464 5683512 1609360 5683512 -1610128 5683648 1610080 5683496 1609464 5683512 1610128 5683904 -1609464 5683512 1609032 5684488 1610128 5683904 1610128 5683648 -1610152 5683888 1610128 5683904 1610576 5683944 1610528 5683880 -1610128 5683904 1609032 5684488 1609120 5684624 1609168 5684752 -1609032 5684488 1609120 5684624 1610128 5683904 1609464 5683512 -1610536 5684592 1610672 5683992 1610576 5683944 1610128 5683904 -1609120 5684624 1610128 5683904 1609032 5684488 1609072 5684560 -1609168 5684752 1610160 5684024 1610128 5683904 1609120 5684624 -1610128 5683904 1610160 5684024 1610536 5684592 1610576 5683944 -1610128 5683904 1610160 5684024 1610576 5683944 1610152 5683888 -1610160 5684024 1610536 5684592 1610576 5683944 1610152 5683888 -1610536 5684592 1610160 5684024 1609168 5684752 1609144 5684888 -1610576 5683944 1610528 5683880 1610152 5683888 1610160 5684024 -1610152 5683888 1610128 5683904 1610160 5684024 1610528 5683880 -1610576 5683944 1610528 5683880 1610160 5684024 1610536 5684592 -1610128 5683904 1609032 5684488 1609120 5684624 1610160 5684024 -1609120 5684624 1609168 5684752 1610160 5684024 1609032 5684488 -1610160 5684024 1610152 5683888 1610128 5683904 1609032 5684488 -1610128 5683904 1609464 5683512 1609032 5684488 1610160 5684024 -1609464 5683512 1609360 5683512 1609032 5684488 1610160 5684024 -1610128 5683904 1610128 5683648 1609464 5683512 1610160 5684024 -1609032 5684488 1609120 5684624 1610160 5684024 1609464 5683512 -1610128 5683904 1609464 5683512 1610160 5684024 1610152 5683888 -1610160 5684024 1609168 5684752 1610536 5684592 1610576 5683944 -1609168 5684752 1610536 5684592 1610160 5684024 1609120 5684624 -1610528 5683880 1610496 5683784 1610152 5683888 1610160 5684024 -1610536 5684592 1610672 5683992 1610576 5683944 1610160 5684024 -1609032 5684488 1609072 5684560 1609120 5684624 1610160 5684024 -1610536 5684592 1610288 5684272 1609168 5684752 1609144 5684888 -1610160 5684024 1610288 5684272 1610536 5684592 1610576 5683944 -1610160 5684024 1610288 5684272 1610576 5683944 1610528 5683880 -1610160 5684024 1609168 5684752 1610288 5684272 1610576 5683944 -1609168 5684752 1610288 5684272 1610160 5684024 1609120 5684624 -1610160 5684024 1609032 5684488 1609120 5684624 1610288 5684272 -1610288 5684272 1610576 5683944 1610160 5684024 1609120 5684624 -1610288 5684272 1609168 5684752 1610536 5684592 1610576 5683944 -1609168 5684752 1610536 5684592 1610288 5684272 1609120 5684624 -1610536 5684592 1610672 5683992 1610576 5683944 1610288 5684272 -1610536 5684592 1610744 5684016 1610672 5683992 1610288 5684272 -1610576 5683944 1610160 5684024 1610288 5684272 1610672 5683992 -1610536 5684592 1610672 5683992 1610288 5684272 1609168 5684752 -1610672 5683992 1610400 5684392 1610536 5684592 1610744 5684016 -1610400 5684392 1610288 5684272 1610536 5684592 1610744 5684016 -1610536 5684592 1610400 5684392 1610288 5684272 1609168 5684752 -1610536 5684592 1610744 5684016 1610400 5684392 1609168 5684752 -1610536 5684592 1610400 5684392 1609168 5684752 1609144 5684888 -1610400 5684392 1610672 5683992 1610288 5684272 1609168 5684752 -1610288 5684272 1609120 5684624 1609168 5684752 1610400 5684392 -1610672 5683992 1610288 5684272 1610400 5684392 1610744 5684016 -1610288 5684272 1610400 5684392 1610672 5683992 1610576 5683944 -1610288 5684272 1610400 5684392 1610576 5683944 1610160 5684024 -1610288 5684272 1609168 5684752 1610400 5684392 1610576 5683944 -1610400 5684392 1610744 5684016 1610672 5683992 1610576 5683944 -1610536 5684592 1610832 5684024 1610744 5684016 1610400 5684392 -1663880 5646248 1623272 5697000 1623408 5701720 1623576 5701960 -1663880 5646248 1615488 5689272 1623272 5697000 1623576 5701960 -1663880 5646248 1623272 5697000 1623576 5701960 1623840 5702400 -1663880 5646248 1615488 5689272 1623272 5697000 1623840 5702400 -1623272 5697000 1623408 5701720 1623576 5701960 1623840 5702400 -1663880 5646248 1623272 5697000 1623840 5702400 1663944 5646256 -1663880 5646248 1615488 5689272 1623272 5697000 1663944 5646256 -1623272 5697000 1623576 5701960 1623840 5702400 1663944 5646256 -1623840 5702400 1623944 5702640 1663944 5646256 1623272 5697000 -1623840 5702400 1623944 5702640 1623272 5697000 1623576 5701960 -1663944 5646256 1663880 5646248 1623272 5697000 1623944 5702640 -1623944 5702640 1627448 5719792 1663944 5646256 1623272 5697000 -1623408 5701720 1623272 5697000 1615488 5689272 1623296 5701624 -1615488 5689272 1615488 5689328 1623296 5701624 1623272 5697000 -1623296 5701624 1623408 5701720 1623272 5697000 1615488 5689328 -1623272 5697000 1663880 5646248 1615488 5689272 1615488 5689328 -1615488 5689272 1623272 5697000 1663880 5646248 1615440 5689168 -1623272 5697000 1663944 5646256 1663880 5646248 1615440 5689168 -1663880 5646248 1663776 5646144 1615440 5689168 1623272 5697000 -1615488 5689272 1615488 5689328 1623272 5697000 1615440 5689168 -1623272 5697000 1623296 5701624 1623408 5701720 1623576 5701960 -1615488 5689328 1623192 5701576 1623296 5701624 1623272 5697000 -1623296 5701624 1623408 5701720 1623272 5697000 1623192 5701576 -1615488 5689328 1623192 5701576 1623272 5697000 1615488 5689272 -1615488 5689328 1623016 5701528 1623192 5701576 1623272 5697000 -1615488 5689328 1623016 5701528 1623272 5697000 1615488 5689272 -1615488 5689328 1615632 5696264 1623016 5701528 1623272 5697000 -1615488 5689328 1615632 5696264 1623272 5697000 1615488 5689272 -1623016 5701528 1623192 5701576 1623272 5697000 1615632 5696264 -1615488 5689328 1615512 5696024 1615632 5696264 1623272 5697000 -1615488 5689328 1615512 5696024 1623272 5697000 1615488 5689272 -1615632 5696264 1623016 5701528 1623272 5697000 1615512 5696024 -1615488 5689328 1615376 5695816 1615512 5696024 1623272 5697000 -1615488 5689328 1615376 5695816 1623272 5697000 1615488 5689272 -1615512 5696024 1615632 5696264 1623272 5697000 1615376 5695816 -1615488 5689328 1615200 5695576 1615376 5695816 1623272 5697000 -1615632 5696264 1621712 5701344 1623016 5701528 1623272 5697000 -1623016 5701528 1623192 5701576 1623272 5697000 1621712 5701344 -1615632 5696264 1621712 5701344 1623272 5697000 1615512 5696024 -1621712 5701344 1622880 5701536 1623016 5701528 1623272 5697000 -1623016 5701528 1623192 5701576 1623272 5697000 1622880 5701536 -1621712 5701344 1622880 5701536 1623272 5697000 1615632 5696264 -1615632 5696264 1615680 5696424 1621712 5701344 1623272 5697000 -1615680 5696424 1616624 5698656 1621712 5701344 1623272 5697000 -1616624 5698656 1621576 5701360 1621712 5701344 1623272 5697000 -1616624 5698656 1621576 5701360 1623272 5697000 1615680 5696424 -1616624 5698656 1616624 5698800 1621576 5701360 1623272 5697000 -1615680 5696424 1615696 5696632 1616624 5698656 1623272 5697000 -1615632 5696264 1615680 5696424 1623272 5697000 1615512 5696024 -1621712 5701344 1622880 5701536 1623272 5697000 1621576 5701360 -1615680 5696424 1616624 5698656 1623272 5697000 1615632 5696264 -1621712 5701344 1621816 5701384 1622880 5701536 1623272 5697000 -1621816 5701384 1622664 5701568 1622880 5701536 1623272 5697000 -1622880 5701536 1623016 5701528 1623272 5697000 1621816 5701384 -1621712 5701344 1621816 5701384 1623272 5697000 1621576 5701360 -1623192 5701576 1623296 5701624 1623272 5697000 1623016 5701528 -1623272 5697000 1623304 5696976 1663944 5646256 1663880 5646248 -1623272 5697000 1623304 5696976 1663880 5646248 1615440 5689168 -1623304 5696976 1663944 5646256 1663880 5646248 1615440 5689168 -1623944 5702640 1623304 5696976 1623272 5697000 1623840 5702400 -1623272 5697000 1623576 5701960 1623840 5702400 1623304 5696976 -1623272 5697000 1623408 5701720 1623576 5701960 1623304 5696976 -1623576 5701960 1623840 5702400 1623304 5696976 1623408 5701720 -1623840 5702400 1623944 5702640 1623304 5696976 1623576 5701960 -1663944 5646256 1623304 5696976 1623944 5702640 1627448 5719792 -1663880 5646248 1663776 5646144 1615440 5689168 1623304 5696976 -1623304 5696976 1623944 5702640 1663944 5646256 1663880 5646248 -1623944 5702640 1663944 5646256 1623304 5696976 1623840 5702400 -1623272 5697000 1623304 5696976 1615440 5689168 1615488 5689272 -1623304 5696976 1663880 5646248 1615440 5689168 1615488 5689272 -1623272 5697000 1623304 5696976 1615488 5689272 1615488 5689328 -1623272 5697000 1623304 5696976 1615488 5689328 1615376 5695816 -1623304 5696976 1615440 5689168 1615488 5689272 1615488 5689328 -1623272 5697000 1623296 5701624 1623408 5701720 1623304 5696976 -1623408 5701720 1623576 5701960 1623304 5696976 1623296 5701624 -1623272 5697000 1623192 5701576 1623296 5701624 1623304 5696976 -1623272 5697000 1623296 5701624 1623304 5696976 1615488 5689328 -1663944 5646256 1623376 5696968 1623944 5702640 1627448 5719792 -1623304 5696976 1623376 5696968 1663944 5646256 1663880 5646248 -1623304 5696976 1623376 5696968 1663880 5646248 1615440 5689168 -1623304 5696976 1623376 5696968 1615440 5689168 1615488 5689272 -1623376 5696968 1663880 5646248 1615440 5689168 1615488 5689272 -1663880 5646248 1663776 5646144 1615440 5689168 1623376 5696968 -1623376 5696968 1663944 5646256 1663880 5646248 1615440 5689168 -1623944 5702640 1623376 5696968 1623304 5696976 1623840 5702400 -1623304 5696976 1623576 5701960 1623840 5702400 1623376 5696968 -1623304 5696976 1623408 5701720 1623576 5701960 1623376 5696968 -1623304 5696976 1623296 5701624 1623408 5701720 1623376 5696968 -1623408 5701720 1623576 5701960 1623376 5696968 1623296 5701624 -1623576 5701960 1623840 5702400 1623376 5696968 1623408 5701720 -1623304 5696976 1623376 5696968 1615488 5689272 1615488 5689328 -1623376 5696968 1615440 5689168 1615488 5689272 1615488 5689328 -1623304 5696976 1623376 5696968 1615488 5689328 1623272 5697000 -1623944 5702640 1663944 5646256 1623376 5696968 1623840 5702400 -1623376 5696968 1623944 5702640 1663944 5646256 1663880 5646248 -1623840 5702400 1623944 5702640 1623376 5696968 1623576 5701960 -1623304 5696976 1623296 5701624 1623376 5696968 1615488 5689328 -1623304 5696976 1623272 5697000 1623296 5701624 1623376 5696968 -1623296 5701624 1623408 5701720 1623376 5696968 1623272 5697000 -1623272 5697000 1623192 5701576 1623296 5701624 1623376 5696968 -1623296 5701624 1623408 5701720 1623376 5696968 1623192 5701576 -1623304 5696976 1623272 5697000 1623376 5696968 1615488 5689328 -1623272 5697000 1623192 5701576 1623376 5696968 1623304 5696976 -1623272 5697000 1623016 5701528 1623192 5701576 1623376 5696968 -1663944 5646256 1623464 5696976 1623944 5702640 1627448 5719792 -1623944 5702640 1623464 5696976 1623376 5696968 1623840 5702400 -1623464 5696976 1663944 5646256 1623376 5696968 1623840 5702400 -1623376 5696968 1623464 5696976 1663944 5646256 1663880 5646248 -1623376 5696968 1623464 5696976 1663880 5646248 1615440 5689168 -1623376 5696968 1623464 5696976 1615440 5689168 1615488 5689272 -1623376 5696968 1623464 5696976 1615488 5689272 1615488 5689328 -1663880 5646248 1663776 5646144 1615440 5689168 1623464 5696976 -1623464 5696976 1663880 5646248 1615440 5689168 1615488 5689272 -1623376 5696968 1623840 5702400 1623464 5696976 1615488 5689272 -1623464 5696976 1623944 5702640 1663944 5646256 1663880 5646248 -1623464 5696976 1663944 5646256 1663880 5646248 1615440 5689168 -1623376 5696968 1623576 5701960 1623840 5702400 1623464 5696976 -1623376 5696968 1623408 5701720 1623576 5701960 1623464 5696976 -1623376 5696968 1623296 5701624 1623408 5701720 1623464 5696976 -1623376 5696968 1623192 5701576 1623296 5701624 1623464 5696976 -1623296 5701624 1623408 5701720 1623464 5696976 1623192 5701576 -1623408 5701720 1623576 5701960 1623464 5696976 1623296 5701624 -1623376 5696968 1623272 5697000 1623192 5701576 1623464 5696976 -1623192 5701576 1623296 5701624 1623464 5696976 1623272 5697000 -1623840 5702400 1623944 5702640 1623464 5696976 1623576 5701960 -1623376 5696968 1623272 5697000 1623464 5696976 1615488 5689272 -1623576 5701960 1623840 5702400 1623464 5696976 1623408 5701720 -1623376 5696968 1623304 5696976 1623272 5697000 1623464 5696976 -1623944 5702640 1663944 5646256 1623464 5696976 1623840 5702400 -1623272 5697000 1623016 5701528 1623192 5701576 1623464 5696976 -1623192 5701576 1623296 5701624 1623464 5696976 1623016 5701528 -1623272 5697000 1623016 5701528 1623464 5696976 1623376 5696968 -1623272 5697000 1622880 5701536 1623016 5701528 1623464 5696976 -1663944 5646256 1623496 5696992 1623944 5702640 1627448 5719792 -1623464 5696976 1623496 5696992 1663944 5646256 1663880 5646248 -1623464 5696976 1623496 5696992 1663880 5646248 1615440 5689168 -1663880 5646248 1663776 5646144 1615440 5689168 1623496 5696992 -1623464 5696976 1623496 5696992 1615440 5689168 1615488 5689272 -1623496 5696992 1663944 5646256 1663880 5646248 1615440 5689168 -1623464 5696976 1623944 5702640 1623496 5696992 1615440 5689168 -1623944 5702640 1623496 5696992 1623464 5696976 1623840 5702400 -1623464 5696976 1623576 5701960 1623840 5702400 1623496 5696992 -1623464 5696976 1623408 5701720 1623576 5701960 1623496 5696992 -1623464 5696976 1623296 5701624 1623408 5701720 1623496 5696992 -1623464 5696976 1623192 5701576 1623296 5701624 1623496 5696992 -1623464 5696976 1623016 5701528 1623192 5701576 1623496 5696992 -1623192 5701576 1623296 5701624 1623496 5696992 1623016 5701528 -1623296 5701624 1623408 5701720 1623496 5696992 1623192 5701576 -1623576 5701960 1623840 5702400 1623496 5696992 1623408 5701720 -1623408 5701720 1623576 5701960 1623496 5696992 1623296 5701624 -1623944 5702640 1663944 5646256 1623496 5696992 1623840 5702400 -1623496 5696992 1615440 5689168 1623464 5696976 1623016 5701528 -1623840 5702400 1623944 5702640 1623496 5696992 1623576 5701960 -1623496 5696992 1623944 5702640 1663944 5646256 1663880 5646248 -1623464 5696976 1623272 5697000 1623016 5701528 1623496 5696992 -1623016 5701528 1623192 5701576 1623496 5696992 1623272 5697000 -1623464 5696976 1623376 5696968 1623272 5697000 1623496 5696992 -1623272 5697000 1622880 5701536 1623016 5701528 1623496 5696992 -1623376 5696968 1623304 5696976 1623272 5697000 1623496 5696992 -1623464 5696976 1623376 5696968 1623496 5696992 1615440 5689168 -1623272 5697000 1623016 5701528 1623496 5696992 1623376 5696968 -1663944 5646256 1623536 5697008 1623944 5702640 1627448 5719792 -1623944 5702640 1623536 5697008 1623496 5696992 1623840 5702400 -1623944 5702640 1663944 5646256 1623536 5697008 1623840 5702400 -1623536 5697008 1663944 5646256 1623496 5696992 1623840 5702400 -1623496 5696992 1623576 5701960 1623840 5702400 1623536 5697008 -1623496 5696992 1623408 5701720 1623576 5701960 1623536 5697008 -1623496 5696992 1623296 5701624 1623408 5701720 1623536 5697008 -1623496 5696992 1623192 5701576 1623296 5701624 1623536 5697008 -1623496 5696992 1623016 5701528 1623192 5701576 1623536 5697008 -1623496 5696992 1623272 5697000 1623016 5701528 1623536 5697008 -1623016 5701528 1623192 5701576 1623536 5697008 1623272 5697000 -1623192 5701576 1623296 5701624 1623536 5697008 1623016 5701528 -1623272 5697000 1622880 5701536 1623016 5701528 1623536 5697008 -1623408 5701720 1623576 5701960 1623536 5697008 1623296 5701624 -1623296 5701624 1623408 5701720 1623536 5697008 1623192 5701576 -1623840 5702400 1623944 5702640 1623536 5697008 1623576 5701960 -1623496 5696992 1623272 5697000 1623536 5697008 1663944 5646256 -1623576 5701960 1623840 5702400 1623536 5697008 1623408 5701720 -1623496 5696992 1623536 5697008 1663944 5646256 1663880 5646248 -1623496 5696992 1623536 5697008 1663880 5646248 1615440 5689168 -1663880 5646248 1663776 5646144 1615440 5689168 1623536 5697008 -1623496 5696992 1623536 5697008 1615440 5689168 1623464 5696976 -1615440 5689168 1615488 5689272 1623464 5696976 1623536 5697008 -1623536 5697008 1663880 5646248 1615440 5689168 1623464 5696976 -1623496 5696992 1623272 5697000 1623536 5697008 1623464 5696976 -1623536 5697008 1623944 5702640 1663944 5646256 1663880 5646248 -1623536 5697008 1663944 5646256 1663880 5646248 1615440 5689168 -1623496 5696992 1623376 5696968 1623272 5697000 1623536 5697008 -1663944 5646256 1623632 5697024 1623944 5702640 1627448 5719792 -1623944 5702640 1623632 5697024 1623536 5697008 1623840 5702400 -1623632 5697024 1663944 5646256 1623536 5697008 1623840 5702400 -1623944 5702640 1663944 5646256 1623632 5697024 1623840 5702400 -1623536 5697008 1623576 5701960 1623840 5702400 1623632 5697024 -1623840 5702400 1623944 5702640 1623632 5697024 1623576 5701960 -1623536 5697008 1623576 5701960 1623632 5697024 1663944 5646256 -1623536 5697008 1623632 5697024 1663944 5646256 1663880 5646248 -1623536 5697008 1623576 5701960 1623632 5697024 1663880 5646248 -1623632 5697024 1623944 5702640 1663944 5646256 1663880 5646248 -1623536 5697008 1623632 5697024 1663880 5646248 1615440 5689168 -1663880 5646248 1663776 5646144 1615440 5689168 1623632 5697024 -1623536 5697008 1623576 5701960 1623632 5697024 1615440 5689168 -1623536 5697008 1623632 5697024 1615440 5689168 1623464 5696976 -1615440 5689168 1615488 5689272 1623464 5696976 1623632 5697024 -1615488 5689272 1623376 5696968 1623464 5696976 1623632 5697024 -1623536 5697008 1623576 5701960 1623632 5697024 1623464 5696976 -1623536 5697008 1623632 5697024 1623464 5696976 1623496 5696992 -1623536 5697008 1623576 5701960 1623632 5697024 1623496 5696992 -1623464 5696976 1623496 5696992 1623632 5697024 1615488 5689272 -1623632 5697024 1663944 5646256 1663880 5646248 1615440 5689168 -1623632 5697024 1663880 5646248 1615440 5689168 1615488 5689272 -1623536 5697008 1623408 5701720 1623576 5701960 1623632 5697024 -1623536 5697008 1623296 5701624 1623408 5701720 1623632 5697024 -1623536 5697008 1623296 5701624 1623632 5697024 1623496 5696992 -1623536 5697008 1623192 5701576 1623296 5701624 1623632 5697024 -1623536 5697008 1623016 5701528 1623192 5701576 1623632 5697024 -1623536 5697008 1623272 5697000 1623016 5701528 1623632 5697024 -1623536 5697008 1623496 5696992 1623272 5697000 1623632 5697024 -1623016 5701528 1623192 5701576 1623632 5697024 1623272 5697000 -1623272 5697000 1622880 5701536 1623016 5701528 1623632 5697024 -1623296 5701624 1623408 5701720 1623632 5697024 1623192 5701576 -1623536 5697008 1623272 5697000 1623632 5697024 1623496 5696992 -1623192 5701576 1623296 5701624 1623632 5697024 1623016 5701528 -1623576 5701960 1623840 5702400 1623632 5697024 1623408 5701720 -1623408 5701720 1623576 5701960 1623632 5697024 1623296 5701624 -1663944 5646256 1623704 5697048 1623944 5702640 1627448 5719792 -1623632 5697024 1623704 5697048 1663944 5646256 1663880 5646248 -1623632 5697024 1623944 5702640 1623704 5697048 1663880 5646248 -1623944 5702640 1623704 5697048 1623632 5697024 1623840 5702400 -1623632 5697024 1623576 5701960 1623840 5702400 1623704 5697048 -1623704 5697048 1663880 5646248 1623632 5697024 1623576 5701960 -1623840 5702400 1623944 5702640 1623704 5697048 1623576 5701960 -1623632 5697024 1623408 5701720 1623576 5701960 1623704 5697048 -1623576 5701960 1623840 5702400 1623704 5697048 1623408 5701720 -1623632 5697024 1623408 5701720 1623704 5697048 1663880 5646248 -1623632 5697024 1623704 5697048 1663880 5646248 1615440 5689168 -1663880 5646248 1663776 5646144 1615440 5689168 1623704 5697048 -1623704 5697048 1663944 5646256 1663880 5646248 1615440 5689168 -1623632 5697024 1623408 5701720 1623704 5697048 1615440 5689168 -1623632 5697024 1623704 5697048 1615440 5689168 1615488 5689272 -1623632 5697024 1623704 5697048 1615488 5689272 1623464 5696976 -1623632 5697024 1623408 5701720 1623704 5697048 1615488 5689272 -1623704 5697048 1663880 5646248 1615440 5689168 1615488 5689272 -1623704 5697048 1623944 5702640 1663944 5646256 1663880 5646248 -1623944 5702640 1663944 5646256 1623704 5697048 1623840 5702400 -1623632 5697024 1623296 5701624 1623408 5701720 1623704 5697048 -1623632 5697024 1623192 5701576 1623296 5701624 1623704 5697048 -1623632 5697024 1623192 5701576 1623704 5697048 1615488 5689272 -1623632 5697024 1623016 5701528 1623192 5701576 1623704 5697048 -1623632 5697024 1623272 5697000 1623016 5701528 1623704 5697048 -1623632 5697024 1623536 5697008 1623272 5697000 1623704 5697048 -1623536 5697008 1623496 5696992 1623272 5697000 1623704 5697048 -1623272 5697000 1623016 5701528 1623704 5697048 1623536 5697008 -1623272 5697000 1622880 5701536 1623016 5701528 1623704 5697048 -1623192 5701576 1623296 5701624 1623704 5697048 1623016 5701528 -1623632 5697024 1623536 5697008 1623704 5697048 1615488 5689272 -1623016 5701528 1623192 5701576 1623704 5697048 1623272 5697000 -1623408 5701720 1623576 5701960 1623704 5697048 1623296 5701624 -1623296 5701624 1623408 5701720 1623704 5697048 1623192 5701576 -1663944 5646256 1623728 5697072 1623944 5702640 1627448 5719792 -1623704 5697048 1623728 5697072 1663944 5646256 1663880 5646248 -1623704 5697048 1623728 5697072 1663880 5646248 1615440 5689168 -1623704 5697048 1623944 5702640 1623728 5697072 1663880 5646248 -1623944 5702640 1623728 5697072 1623704 5697048 1623840 5702400 -1623944 5702640 1663944 5646256 1623728 5697072 1623840 5702400 -1623704 5697048 1623576 5701960 1623840 5702400 1623728 5697072 -1623704 5697048 1623408 5701720 1623576 5701960 1623728 5697072 -1623576 5701960 1623840 5702400 1623728 5697072 1623408 5701720 -1623704 5697048 1623296 5701624 1623408 5701720 1623728 5697072 -1623408 5701720 1623576 5701960 1623728 5697072 1623296 5701624 -1623728 5697072 1663880 5646248 1623704 5697048 1623296 5701624 -1623840 5702400 1623944 5702640 1623728 5697072 1623576 5701960 -1623728 5697072 1623944 5702640 1663944 5646256 1663880 5646248 -1623704 5697048 1623192 5701576 1623296 5701624 1623728 5697072 -1623704 5697048 1623016 5701528 1623192 5701576 1623728 5697072 -1623704 5697048 1623272 5697000 1623016 5701528 1623728 5697072 -1623704 5697048 1623536 5697008 1623272 5697000 1623728 5697072 -1623536 5697008 1623496 5696992 1623272 5697000 1623728 5697072 -1623704 5697048 1623632 5697024 1623536 5697008 1623728 5697072 -1623536 5697008 1623272 5697000 1623728 5697072 1623632 5697024 -1623272 5697000 1622880 5701536 1623016 5701528 1623728 5697072 -1623016 5701528 1623192 5701576 1623728 5697072 1623272 5697000 -1623272 5697000 1623016 5701528 1623728 5697072 1623536 5697008 -1623296 5701624 1623408 5701720 1623728 5697072 1623192 5701576 -1623704 5697048 1623632 5697024 1623728 5697072 1663880 5646248 -1623192 5701576 1623296 5701624 1623728 5697072 1623016 5701528 -1663944 5646256 1623760 5697136 1623944 5702640 1627448 5719792 -1623944 5702640 1623760 5697136 1623728 5697072 1623840 5702400 -1623944 5702640 1663944 5646256 1623760 5697136 1623840 5702400 -1623728 5697072 1623576 5701960 1623840 5702400 1623760 5697136 -1623840 5702400 1623944 5702640 1623760 5697136 1623576 5701960 -1623728 5697072 1623408 5701720 1623576 5701960 1623760 5697136 -1623728 5697072 1623296 5701624 1623408 5701720 1623760 5697136 -1623408 5701720 1623576 5701960 1623760 5697136 1623296 5701624 -1623728 5697072 1623192 5701576 1623296 5701624 1623760 5697136 -1623296 5701624 1623408 5701720 1623760 5697136 1623192 5701576 -1623576 5701960 1623840 5702400 1623760 5697136 1623408 5701720 -1623728 5697072 1623760 5697136 1663944 5646256 1663880 5646248 -1623760 5697136 1623944 5702640 1663944 5646256 1663880 5646248 -1623728 5697072 1623760 5697136 1663880 5646248 1623704 5697048 -1623760 5697136 1663880 5646248 1623728 5697072 1623192 5701576 -1623728 5697072 1623016 5701528 1623192 5701576 1623760 5697136 -1623728 5697072 1623272 5697000 1623016 5701528 1623760 5697136 -1623272 5697000 1622880 5701536 1623016 5701528 1623760 5697136 -1623728 5697072 1623536 5697008 1623272 5697000 1623760 5697136 -1623536 5697008 1623496 5696992 1623272 5697000 1623760 5697136 -1623728 5697072 1623632 5697024 1623536 5697008 1623760 5697136 -1623728 5697072 1623704 5697048 1623632 5697024 1623760 5697136 -1623272 5697000 1623016 5701528 1623760 5697136 1623536 5697008 -1623536 5697008 1623272 5697000 1623760 5697136 1623632 5697024 -1623192 5701576 1623296 5701624 1623760 5697136 1623016 5701528 -1623728 5697072 1623632 5697024 1623760 5697136 1663880 5646248 -1623016 5701528 1623192 5701576 1623760 5697136 1623272 5697000 -1623760 5697136 1623760 5697304 1623840 5702400 1623944 5702640 -1623760 5697136 1623576 5701960 1623760 5697304 1623944 5702640 -1623760 5697136 1623760 5697304 1623944 5702640 1663944 5646256 -1623944 5702640 1627448 5719792 1663944 5646256 1623760 5697304 -1623760 5697304 1623840 5702400 1623944 5702640 1663944 5646256 -1623760 5697136 1623760 5697304 1663944 5646256 1663880 5646248 -1623760 5697136 1623576 5701960 1623760 5697304 1663944 5646256 -1623760 5697304 1623576 5701960 1623840 5702400 1623944 5702640 -1623576 5701960 1623760 5697304 1623760 5697136 1623408 5701720 -1623760 5697304 1663944 5646256 1623760 5697136 1623408 5701720 -1623760 5697136 1623296 5701624 1623408 5701720 1623760 5697304 -1623760 5697136 1623296 5701624 1623760 5697304 1663944 5646256 -1623760 5697136 1623192 5701576 1623296 5701624 1623760 5697304 -1623760 5697136 1623192 5701576 1623760 5697304 1663944 5646256 -1623296 5701624 1623408 5701720 1623760 5697304 1623192 5701576 -1623576 5701960 1623840 5702400 1623760 5697304 1623408 5701720 -1623760 5697136 1623016 5701528 1623192 5701576 1623760 5697304 -1623760 5697136 1623016 5701528 1623760 5697304 1663944 5646256 -1623192 5701576 1623296 5701624 1623760 5697304 1623016 5701528 -1623408 5701720 1623576 5701960 1623760 5697304 1623296 5701624 -1623760 5697136 1623272 5697000 1623016 5701528 1623760 5697304 -1623272 5697000 1622880 5701536 1623016 5701528 1623760 5697304 -1623760 5697136 1623536 5697008 1623272 5697000 1623760 5697304 -1623536 5697008 1623496 5696992 1623272 5697000 1623760 5697304 -1623760 5697136 1623536 5697008 1623760 5697304 1663944 5646256 -1623760 5697136 1623632 5697024 1623536 5697008 1623760 5697304 -1623760 5697136 1623728 5697072 1623632 5697024 1623760 5697304 -1623536 5697008 1623272 5697000 1623760 5697304 1623632 5697024 -1623760 5697136 1623632 5697024 1623760 5697304 1663944 5646256 -1623272 5697000 1621816 5701384 1622880 5701536 1623760 5697304 -1621816 5701384 1622664 5701568 1622880 5701536 1623760 5697304 -1622880 5701536 1623016 5701528 1623760 5697304 1621816 5701384 -1623016 5701528 1623192 5701576 1623760 5697304 1622880 5701536 -1623272 5697000 1621816 5701384 1623760 5697304 1623536 5697008 -1623272 5697000 1621712 5701344 1621816 5701384 1623760 5697304 -1621816 5701384 1622880 5701536 1623760 5697304 1621712 5701344 -1623272 5697000 1621576 5701360 1621712 5701344 1623760 5697304 -1623272 5697000 1621712 5701344 1623760 5697304 1623536 5697008 -1622880 5701536 1623720 5697416 1621816 5701384 1622664 5701568 -1623760 5697304 1623720 5697416 1622880 5701536 1623016 5701528 -1623760 5697304 1621816 5701384 1623720 5697416 1623016 5701528 -1623720 5697416 1621816 5701384 1622880 5701536 1623016 5701528 -1621816 5701384 1623720 5697416 1623760 5697304 1621712 5701344 -1623720 5697416 1623016 5701528 1623760 5697304 1621712 5701344 -1621816 5701384 1622880 5701536 1623720 5697416 1621712 5701344 -1623760 5697304 1623720 5697416 1623016 5701528 1623192 5701576 -1623720 5697416 1622880 5701536 1623016 5701528 1623192 5701576 -1623760 5697304 1623720 5697416 1623192 5701576 1623296 5701624 -1623760 5697304 1623720 5697416 1623296 5701624 1623408 5701720 -1623720 5697416 1623192 5701576 1623296 5701624 1623408 5701720 -1623760 5697304 1621712 5701344 1623720 5697416 1623408 5701720 -1623720 5697416 1623016 5701528 1623192 5701576 1623296 5701624 -1623760 5697304 1623720 5697416 1623408 5701720 1623576 5701960 -1623720 5697416 1623296 5701624 1623408 5701720 1623576 5701960 -1623760 5697304 1621712 5701344 1623720 5697416 1623576 5701960 -1623760 5697304 1623720 5697416 1623576 5701960 1623840 5702400 -1623760 5697304 1623720 5697416 1623840 5702400 1623944 5702640 -1623760 5697304 1623720 5697416 1623944 5702640 1663944 5646256 -1623760 5697304 1621712 5701344 1623720 5697416 1623944 5702640 -1623720 5697416 1623576 5701960 1623840 5702400 1623944 5702640 -1623720 5697416 1623408 5701720 1623576 5701960 1623840 5702400 -1623760 5697304 1623272 5697000 1621712 5701344 1623720 5697416 -1623760 5697304 1623272 5697000 1623720 5697416 1623944 5702640 -1621712 5701344 1621816 5701384 1623720 5697416 1623272 5697000 -1623272 5697000 1621576 5701360 1621712 5701344 1623720 5697416 -1623760 5697304 1623536 5697008 1623272 5697000 1623720 5697416 -1623536 5697008 1623496 5696992 1623272 5697000 1623720 5697416 -1623760 5697304 1623632 5697024 1623536 5697008 1623720 5697416 -1623760 5697304 1623536 5697008 1623720 5697416 1623944 5702640 -1623272 5697000 1621712 5701344 1623720 5697416 1623536 5697008 -1622880 5701536 1623696 5697472 1621816 5701384 1622664 5701568 -1623720 5697416 1623696 5697472 1622880 5701536 1623016 5701528 -1623696 5697472 1621816 5701384 1622880 5701536 1623016 5701528 -1623720 5697416 1623696 5697472 1623016 5701528 1623192 5701576 -1623696 5697472 1622880 5701536 1623016 5701528 1623192 5701576 -1623720 5697416 1621816 5701384 1623696 5697472 1623192 5701576 -1621816 5701384 1623696 5697472 1623720 5697416 1621712 5701344 -1621816 5701384 1622880 5701536 1623696 5697472 1621712 5701344 -1623696 5697472 1623192 5701576 1623720 5697416 1621712 5701344 -1623720 5697416 1623272 5697000 1621712 5701344 1623696 5697472 -1623720 5697416 1623272 5697000 1623696 5697472 1623192 5701576 -1621712 5701344 1621816 5701384 1623696 5697472 1623272 5697000 -1623720 5697416 1623696 5697472 1623192 5701576 1623296 5701624 -1623696 5697472 1623016 5701528 1623192 5701576 1623296 5701624 -1623720 5697416 1623696 5697472 1623296 5701624 1623408 5701720 -1623720 5697416 1623696 5697472 1623408 5701720 1623576 5701960 -1623696 5697472 1623296 5701624 1623408 5701720 1623576 5701960 -1623720 5697416 1623272 5697000 1623696 5697472 1623576 5701960 -1623696 5697472 1623192 5701576 1623296 5701624 1623408 5701720 -1623720 5697416 1623696 5697472 1623576 5701960 1623840 5702400 -1623696 5697472 1623408 5701720 1623576 5701960 1623840 5702400 -1623720 5697416 1623696 5697472 1623840 5702400 1623944 5702640 -1623720 5697416 1623272 5697000 1623696 5697472 1623840 5702400 -1623272 5697000 1621576 5701360 1621712 5701344 1623696 5697472 -1623720 5697416 1623536 5697008 1623272 5697000 1623696 5697472 -1623536 5697008 1623496 5696992 1623272 5697000 1623696 5697472 -1623720 5697416 1623536 5697008 1623696 5697472 1623840 5702400 -1623272 5697000 1621712 5701344 1623696 5697472 1623536 5697008 -1623720 5697416 1623760 5697304 1623536 5697008 1623696 5697472 -1623696 5697472 1623672 5697496 1621712 5701344 1621816 5701384 -1623696 5697472 1623272 5697000 1623672 5697496 1621816 5701384 -1623696 5697472 1623672 5697496 1621816 5701384 1622880 5701536 -1621816 5701384 1622664 5701568 1622880 5701536 1623672 5697496 -1623696 5697472 1623672 5697496 1622880 5701536 1623016 5701528 -1623696 5697472 1623272 5697000 1623672 5697496 1623016 5701528 -1623672 5697496 1621816 5701384 1622880 5701536 1623016 5701528 -1623672 5697496 1623272 5697000 1621712 5701344 1621816 5701384 -1623696 5697472 1623672 5697496 1623016 5701528 1623192 5701576 -1623672 5697496 1622880 5701536 1623016 5701528 1623192 5701576 -1623696 5697472 1623272 5697000 1623672 5697496 1623192 5701576 -1623696 5697472 1623672 5697496 1623192 5701576 1623296 5701624 -1623696 5697472 1623272 5697000 1623672 5697496 1623296 5701624 -1623672 5697496 1623016 5701528 1623192 5701576 1623296 5701624 -1623672 5697496 1621712 5701344 1621816 5701384 1622880 5701536 -1623272 5697000 1623672 5697496 1623696 5697472 1623536 5697008 -1623272 5697000 1623672 5697496 1623536 5697008 1623496 5696992 -1623672 5697496 1623296 5701624 1623696 5697472 1623536 5697008 -1623272 5697000 1621712 5701344 1623672 5697496 1623536 5697008 -1623696 5697472 1623672 5697496 1623296 5701624 1623408 5701720 -1623696 5697472 1623536 5697008 1623672 5697496 1623408 5701720 -1623672 5697496 1623192 5701576 1623296 5701624 1623408 5701720 -1623696 5697472 1623672 5697496 1623408 5701720 1623576 5701960 -1621712 5701344 1623672 5697496 1623272 5697000 1621576 5701360 -1623696 5697472 1623720 5697416 1623536 5697008 1623672 5697496 -1623696 5697472 1623720 5697416 1623672 5697496 1623408 5701720 -1623536 5697008 1623272 5697000 1623672 5697496 1623720 5697416 -1623720 5697416 1623760 5697304 1623536 5697008 1623672 5697496 -1623672 5697496 1623648 5697496 1621712 5701344 1621816 5701384 -1623672 5697496 1623272 5697000 1623648 5697496 1621816 5701384 -1623272 5697000 1623648 5697496 1623672 5697496 1623536 5697008 -1623272 5697000 1623648 5697496 1623536 5697008 1623496 5696992 -1623648 5697496 1621816 5701384 1623672 5697496 1623536 5697008 -1623648 5697496 1623672 5697496 1623536 5697008 1623496 5696992 -1623648 5697496 1623272 5697000 1621712 5701344 1621816 5701384 -1623272 5697000 1621712 5701344 1623648 5697496 1623496 5696992 -1623672 5697496 1623648 5697496 1621816 5701384 1622880 5701536 -1621816 5701384 1622664 5701568 1622880 5701536 1623648 5697496 -1623672 5697496 1623648 5697496 1622880 5701536 1623016 5701528 -1623672 5697496 1623648 5697496 1623016 5701528 1623192 5701576 -1623648 5697496 1622880 5701536 1623016 5701528 1623192 5701576 -1623648 5697496 1621712 5701344 1621816 5701384 1622880 5701536 -1623672 5697496 1623536 5697008 1623648 5697496 1623192 5701576 -1623672 5697496 1623648 5697496 1623192 5701576 1623296 5701624 -1623648 5697496 1621816 5701384 1622880 5701536 1623016 5701528 -1623672 5697496 1623720 5697416 1623536 5697008 1623648 5697496 -1623672 5697496 1623720 5697416 1623648 5697496 1623192 5701576 -1623536 5697008 1623496 5696992 1623648 5697496 1623720 5697416 -1621712 5701344 1623648 5697496 1623272 5697000 1621576 5701360 -1623720 5697416 1623760 5697304 1623536 5697008 1623648 5697496 -1623672 5697496 1623696 5697472 1623720 5697416 1623648 5697496 -1623672 5697496 1623696 5697472 1623648 5697496 1623192 5701576 -1623720 5697416 1623536 5697008 1623648 5697496 1623696 5697472 -1623272 5697000 1623648 5697496 1623496 5696992 1623376 5696968 -1623648 5697496 1623568 5697456 1621712 5701344 1621816 5701384 -1623648 5697496 1623568 5697456 1621816 5701384 1622880 5701536 -1621816 5701384 1622664 5701568 1622880 5701536 1623568 5697456 -1623568 5697456 1621712 5701344 1621816 5701384 1622880 5701536 -1623648 5697496 1623272 5697000 1623568 5697456 1622880 5701536 -1623272 5697000 1623568 5697456 1623648 5697496 1623496 5696992 -1623648 5697496 1623536 5697008 1623496 5696992 1623568 5697456 -1623648 5697496 1623720 5697416 1623536 5697008 1623568 5697456 -1623536 5697008 1623496 5696992 1623568 5697456 1623720 5697416 -1623568 5697456 1622880 5701536 1623648 5697496 1623720 5697416 -1623496 5696992 1623272 5697000 1623568 5697456 1623536 5697008 -1623568 5697456 1623272 5697000 1621712 5701344 1621816 5701384 -1623648 5697496 1623568 5697456 1622880 5701536 1623016 5701528 -1623272 5697000 1621712 5701344 1623568 5697456 1623496 5696992 -1623648 5697496 1623696 5697472 1623720 5697416 1623568 5697456 -1623720 5697416 1623536 5697008 1623568 5697456 1623696 5697472 -1623648 5697496 1623696 5697472 1623568 5697456 1622880 5701536 -1621712 5701344 1623568 5697456 1623272 5697000 1621576 5701360 -1621712 5701344 1621816 5701384 1623568 5697456 1621576 5701360 -1623272 5697000 1616624 5698656 1621576 5701360 1623568 5697456 -1623568 5697456 1623496 5696992 1623272 5697000 1621576 5701360 -1623720 5697416 1623760 5697304 1623536 5697008 1623568 5697456 -1623536 5697008 1623496 5696992 1623568 5697456 1623760 5697304 -1623720 5697416 1623760 5697304 1623568 5697456 1623696 5697472 -1623760 5697304 1623632 5697024 1623536 5697008 1623568 5697456 -1623648 5697496 1623672 5697496 1623696 5697472 1623568 5697456 -1623272 5697000 1623568 5697456 1623496 5696992 1623376 5696968 -1621576 5701360 1623480 5697392 1623272 5697000 1616624 5698656 -1623272 5697000 1623480 5697392 1623568 5697456 1623496 5696992 -1623568 5697456 1623536 5697008 1623496 5696992 1623480 5697392 -1623568 5697456 1623760 5697304 1623536 5697008 1623480 5697392 -1623536 5697008 1623496 5696992 1623480 5697392 1623760 5697304 -1623760 5697304 1623632 5697024 1623536 5697008 1623480 5697392 -1623760 5697304 1623632 5697024 1623480 5697392 1623568 5697456 -1623536 5697008 1623496 5696992 1623480 5697392 1623632 5697024 -1623760 5697304 1623760 5697136 1623632 5697024 1623480 5697392 -1623760 5697304 1623760 5697136 1623480 5697392 1623568 5697456 -1623760 5697136 1623728 5697072 1623632 5697024 1623480 5697392 -1623632 5697024 1623536 5697008 1623480 5697392 1623760 5697136 -1623480 5697392 1621576 5701360 1623568 5697456 1623760 5697304 -1623496 5696992 1623272 5697000 1623480 5697392 1623536 5697008 -1623272 5697000 1621576 5701360 1623480 5697392 1623496 5696992 -1623568 5697456 1623480 5697392 1621576 5701360 1621712 5701344 -1623568 5697456 1623480 5697392 1621712 5701344 1621816 5701384 -1623568 5697456 1623760 5697304 1623480 5697392 1621712 5701344 -1623480 5697392 1623272 5697000 1621576 5701360 1621712 5701344 -1623568 5697456 1623720 5697416 1623760 5697304 1623480 5697392 -1623272 5697000 1623480 5697392 1623496 5696992 1623376 5696968 -1623496 5696992 1623464 5696976 1623376 5696968 1623480 5697392 -1623480 5697392 1623536 5697008 1623496 5696992 1623376 5696968 -1623272 5697000 1621576 5701360 1623480 5697392 1623376 5696968 -1623272 5697000 1623480 5697392 1623376 5696968 1623304 5696976 -1621576 5701360 1623432 5697336 1623272 5697000 1616624 5698656 -1623480 5697392 1623432 5697336 1621576 5701360 1621712 5701344 -1623432 5697336 1623272 5697000 1621576 5701360 1621712 5701344 -1623480 5697392 1623272 5697000 1623432 5697336 1621712 5701344 -1623272 5697000 1623432 5697336 1623480 5697392 1623376 5696968 -1623272 5697000 1621576 5701360 1623432 5697336 1623376 5696968 -1623432 5697336 1621712 5701344 1623480 5697392 1623376 5696968 -1623272 5697000 1623432 5697336 1623376 5696968 1623304 5696976 -1623480 5697392 1623432 5697336 1621712 5701344 1623568 5697456 -1623480 5697392 1623496 5696992 1623376 5696968 1623432 5697336 -1623496 5696992 1623464 5696976 1623376 5696968 1623432 5697336 -1623480 5697392 1623536 5697008 1623496 5696992 1623432 5697336 -1623480 5697392 1623632 5697024 1623536 5697008 1623432 5697336 -1623480 5697392 1623760 5697136 1623632 5697024 1623432 5697336 -1623760 5697136 1623728 5697072 1623632 5697024 1623432 5697336 -1623632 5697024 1623536 5697008 1623432 5697336 1623760 5697136 -1623480 5697392 1623760 5697304 1623760 5697136 1623432 5697336 -1623480 5697392 1623568 5697456 1623760 5697304 1623432 5697336 -1623760 5697136 1623632 5697024 1623432 5697336 1623760 5697304 -1623536 5697008 1623496 5696992 1623432 5697336 1623632 5697024 -1623480 5697392 1623760 5697304 1623432 5697336 1621712 5701344 -1623376 5696968 1623272 5697000 1623432 5697336 1623496 5696992 -1623496 5696992 1623376 5696968 1623432 5697336 1623536 5697008 -1623432 5697336 1623384 5697304 1621576 5701360 1621712 5701344 -1623432 5697336 1623272 5697000 1623384 5697304 1621712 5701344 -1623272 5697000 1623384 5697304 1623432 5697336 1623376 5696968 -1623384 5697304 1621712 5701344 1623432 5697336 1623376 5696968 -1623384 5697304 1623272 5697000 1621576 5701360 1621712 5701344 -1621576 5701360 1623384 5697304 1623272 5697000 1616624 5698656 -1623432 5697336 1623384 5697304 1621712 5701344 1623480 5697392 -1623384 5697304 1621576 5701360 1621712 5701344 1623480 5697392 -1623432 5697336 1623376 5696968 1623384 5697304 1623480 5697392 -1623432 5697336 1623496 5696992 1623376 5696968 1623384 5697304 -1623496 5696992 1623464 5696976 1623376 5696968 1623384 5697304 -1623432 5697336 1623496 5696992 1623384 5697304 1623480 5697392 -1623376 5696968 1623272 5697000 1623384 5697304 1623496 5696992 -1623272 5697000 1623384 5697304 1623376 5696968 1623304 5696976 -1621712 5701344 1623568 5697456 1623480 5697392 1623384 5697304 -1623432 5697336 1623536 5697008 1623496 5696992 1623384 5697304 -1623432 5697336 1623536 5697008 1623384 5697304 1623480 5697392 -1623432 5697336 1623632 5697024 1623536 5697008 1623384 5697304 -1623496 5696992 1623376 5696968 1623384 5697304 1623536 5697008 -1623272 5697000 1621576 5701360 1623384 5697304 1623376 5696968 -1623384 5697304 1623312 5697232 1621576 5701360 1621712 5701344 -1623384 5697304 1623312 5697232 1621712 5701344 1623480 5697392 -1623384 5697304 1623272 5697000 1623312 5697232 1621712 5701344 -1621576 5701360 1623312 5697232 1623272 5697000 1616624 5698656 -1623272 5697000 1615680 5696424 1616624 5698656 1623312 5697232 -1621576 5701360 1623312 5697232 1616624 5698656 1616624 5698800 -1623272 5697000 1623312 5697232 1623384 5697304 1623376 5696968 -1623384 5697304 1623496 5696992 1623376 5696968 1623312 5697232 -1623496 5696992 1623464 5696976 1623376 5696968 1623312 5697232 -1623496 5696992 1623464 5696976 1623312 5697232 1623384 5697304 -1623312 5697232 1621712 5701344 1623384 5697304 1623496 5696992 -1623384 5697304 1623536 5697008 1623496 5696992 1623312 5697232 -1623496 5696992 1623464 5696976 1623312 5697232 1623536 5697008 -1623384 5697304 1623536 5697008 1623312 5697232 1621712 5701344 -1623272 5697000 1623312 5697232 1623376 5696968 1623304 5696976 -1623384 5697304 1623432 5697336 1623536 5697008 1623312 5697232 -1623376 5696968 1623272 5697000 1623312 5697232 1623464 5696976 -1623312 5697232 1616624 5698656 1621576 5701360 1621712 5701344 -1623312 5697232 1623376 5696968 1623272 5697000 1616624 5698656 -1616624 5698656 1623264 5697136 1623272 5697000 1615680 5696424 -1623312 5697232 1623264 5697136 1616624 5698656 1621576 5701360 -1616624 5698656 1616624 5698800 1621576 5701360 1623264 5697136 -1623312 5697232 1623264 5697136 1621576 5701360 1621712 5701344 -1623312 5697232 1623272 5697000 1623264 5697136 1621576 5701360 -1623272 5697000 1623264 5697136 1623312 5697232 1623376 5696968 -1623272 5697000 1616624 5698656 1623264 5697136 1623376 5696968 -1623272 5697000 1623264 5697136 1623376 5696968 1623304 5696976 -1623312 5697232 1623464 5696976 1623376 5696968 1623264 5697136 -1623312 5697232 1623496 5696992 1623464 5696976 1623264 5697136 -1623312 5697232 1623536 5697008 1623496 5696992 1623264 5697136 -1623464 5696976 1623376 5696968 1623264 5697136 1623496 5696992 -1623264 5697136 1621576 5701360 1623312 5697232 1623496 5696992 -1623376 5696968 1623272 5697000 1623264 5697136 1623464 5696976 -1623264 5697136 1623272 5697000 1616624 5698656 1621576 5701360 -1663944 5646256 1625104 5698680 1623944 5702640 1627448 5719792 -1623944 5702640 1627384 5719672 1627448 5719792 1625104 5698680 -1623944 5702640 1623888 5702776 1627384 5719672 1625104 5698680 -1627448 5719792 1663944 5646256 1625104 5698680 1627384 5719672 -1625104 5698680 1623760 5697304 1623944 5702640 1627384 5719672 -1627384 5719672 1627400 5719704 1627448 5719792 1625104 5698680 -1663944 5646256 1625104 5698680 1627448 5719792 1629944 5726576 -1625104 5698680 1627384 5719672 1627448 5719792 1629944 5726576 -1627448 5719792 1629736 5726176 1629944 5726576 1625104 5698680 -1663944 5646256 1623760 5697304 1625104 5698680 1629944 5726576 -1623944 5702640 1625104 5698680 1623760 5697304 1623720 5697416 -1623944 5702640 1627384 5719672 1625104 5698680 1623720 5697416 -1625104 5698680 1663944 5646256 1623760 5697304 1623720 5697416 -1623760 5697304 1625104 5698680 1663944 5646256 1623760 5697136 -1623760 5697304 1623720 5697416 1625104 5698680 1623760 5697136 -1625104 5698680 1629944 5726576 1663944 5646256 1623760 5697136 -1663944 5646256 1663880 5646248 1623760 5697136 1625104 5698680 -1663944 5646256 1663880 5646248 1625104 5698680 1629944 5726576 -1623760 5697136 1623760 5697304 1625104 5698680 1663880 5646248 -1623944 5702640 1625104 5698680 1623720 5697416 1623840 5702400 -1623944 5702640 1627384 5719672 1625104 5698680 1623840 5702400 -1625104 5698680 1623760 5697304 1623720 5697416 1623840 5702400 -1623720 5697416 1623696 5697472 1623840 5702400 1625104 5698680 -1623720 5697416 1623696 5697472 1625104 5698680 1623760 5697304 -1623840 5702400 1623944 5702640 1625104 5698680 1623696 5697472 -1663944 5646256 1625104 5698680 1629944 5726576 1743800 5687320 -1623696 5697472 1623576 5701960 1623840 5702400 1625104 5698680 -1623840 5702400 1623944 5702640 1625104 5698680 1623576 5701960 -1623696 5697472 1623408 5701720 1623576 5701960 1625104 5698680 -1623696 5697472 1623672 5697496 1623408 5701720 1625104 5698680 -1623408 5701720 1623576 5701960 1625104 5698680 1623672 5697496 -1623696 5697472 1623672 5697496 1625104 5698680 1623720 5697416 -1623672 5697496 1623296 5701624 1623408 5701720 1625104 5698680 -1623672 5697496 1623192 5701576 1623296 5701624 1625104 5698680 -1623672 5697496 1623192 5701576 1625104 5698680 1623696 5697472 -1623408 5701720 1623576 5701960 1625104 5698680 1623296 5701624 -1623672 5697496 1623648 5697496 1623192 5701576 1625104 5698680 -1623648 5697496 1623016 5701528 1623192 5701576 1625104 5698680 -1623648 5697496 1622880 5701536 1623016 5701528 1625104 5698680 -1623192 5701576 1623296 5701624 1625104 5698680 1623016 5701528 -1623672 5697496 1623648 5697496 1625104 5698680 1623696 5697472 -1623648 5697496 1623016 5701528 1625104 5698680 1623672 5697496 -1623296 5701624 1623408 5701720 1625104 5698680 1623192 5701576 -1623576 5701960 1623840 5702400 1625104 5698680 1623408 5701720 -1663880 5646248 1623728 5697072 1623760 5697136 1625104 5698680 -1663880 5646248 1623728 5697072 1625104 5698680 1663944 5646256 -1623760 5697136 1623760 5697304 1625104 5698680 1623728 5697072 -1663880 5646248 1623704 5697048 1623728 5697072 1625104 5698680 -1623760 5697304 1625032 5698608 1625104 5698680 1623760 5697136 -1625032 5698608 1623720 5697416 1625104 5698680 1623760 5697136 -1623760 5697304 1623720 5697416 1625032 5698608 1623760 5697136 -1625104 5698680 1625032 5698608 1623720 5697416 1623696 5697472 -1625104 5698680 1623760 5697136 1625032 5698608 1623696 5697472 -1625104 5698680 1623728 5697072 1623760 5697136 1625032 5698608 -1625104 5698680 1623728 5697072 1625032 5698608 1623696 5697472 -1623760 5697136 1623760 5697304 1625032 5698608 1623728 5697072 -1625104 5698680 1625032 5698608 1623696 5697472 1623672 5697496 -1625104 5698680 1623728 5697072 1625032 5698608 1623672 5697496 -1625032 5698608 1623720 5697416 1623696 5697472 1623672 5697496 -1625104 5698680 1625032 5698608 1623672 5697496 1623648 5697496 -1625104 5698680 1623728 5697072 1625032 5698608 1623648 5697496 -1625032 5698608 1623696 5697472 1623672 5697496 1623648 5697496 -1625104 5698680 1625032 5698608 1623648 5697496 1623016 5701528 -1625104 5698680 1623728 5697072 1625032 5698608 1623016 5701528 -1625104 5698680 1625032 5698608 1623016 5701528 1623192 5701576 -1625104 5698680 1623728 5697072 1625032 5698608 1623192 5701576 -1623648 5697496 1622880 5701536 1623016 5701528 1625032 5698608 -1625104 5698680 1625032 5698608 1623192 5701576 1623296 5701624 -1625032 5698608 1623672 5697496 1623648 5697496 1623016 5701528 -1625032 5698608 1623648 5697496 1623016 5701528 1623192 5701576 -1625104 5698680 1663880 5646248 1623728 5697072 1625032 5698608 -1625032 5698608 1623760 5697304 1623720 5697416 1623696 5697472 -1663880 5646248 1625048 5698520 1625104 5698680 1663944 5646256 -1625104 5698680 1629944 5726576 1663944 5646256 1625048 5698520 -1623728 5697072 1625048 5698520 1663880 5646248 1623704 5697048 -1625104 5698680 1625048 5698520 1623728 5697072 1625032 5698608 -1625048 5698520 1663880 5646248 1623728 5697072 1625032 5698608 -1623728 5697072 1623760 5697136 1625032 5698608 1625048 5698520 -1623760 5697136 1623760 5697304 1625032 5698608 1625048 5698520 -1623728 5697072 1623760 5697136 1625048 5698520 1663880 5646248 -1623760 5697304 1623720 5697416 1625032 5698608 1625048 5698520 -1623760 5697304 1623720 5697416 1625048 5698520 1623760 5697136 -1623760 5697136 1623760 5697304 1625048 5698520 1623728 5697072 -1625032 5698608 1625104 5698680 1625048 5698520 1623720 5697416 -1663880 5646248 1623728 5697072 1625048 5698520 1663944 5646256 -1625048 5698520 1625032 5698608 1625104 5698680 1663944 5646256 -1623720 5697416 1623696 5697472 1625032 5698608 1625048 5698520 -1623720 5697416 1623696 5697472 1625048 5698520 1623760 5697304 -1623696 5697472 1623672 5697496 1625032 5698608 1625048 5698520 -1623672 5697496 1623648 5697496 1625032 5698608 1625048 5698520 -1625032 5698608 1625104 5698680 1625048 5698520 1623672 5697496 -1623696 5697472 1623672 5697496 1625048 5698520 1623720 5697416 -1663944 5646256 1625128 5698480 1625104 5698680 1629944 5726576 -1625104 5698680 1627448 5719792 1629944 5726576 1625128 5698480 -1625104 5698680 1627384 5719672 1627448 5719792 1625128 5698480 -1627448 5719792 1629736 5726176 1629944 5726576 1625128 5698480 -1629944 5726576 1663944 5646256 1625128 5698480 1627448 5719792 -1663944 5646256 1625048 5698520 1625128 5698480 1629944 5726576 -1625048 5698520 1625128 5698480 1663944 5646256 1663880 5646248 -1625048 5698520 1625104 5698680 1625128 5698480 1663880 5646248 -1625128 5698480 1629944 5726576 1663944 5646256 1663880 5646248 -1663944 5646256 1625128 5698480 1629944 5726576 1743800 5687320 -1625048 5698520 1625128 5698480 1663880 5646248 1623728 5697072 -1625048 5698520 1625128 5698480 1623728 5697072 1623760 5697136 -1625048 5698520 1625104 5698680 1625128 5698480 1623760 5697136 -1625128 5698480 1663944 5646256 1663880 5646248 1623728 5697072 -1625048 5698520 1625128 5698480 1623760 5697136 1623760 5697304 -1625048 5698520 1625128 5698480 1623760 5697304 1623720 5697416 -1625128 5698480 1623728 5697072 1623760 5697136 1623760 5697304 -1625048 5698520 1625104 5698680 1625128 5698480 1623760 5697304 -1663880 5646248 1623704 5697048 1623728 5697072 1625128 5698480 -1625128 5698480 1663880 5646248 1623728 5697072 1623760 5697136 -1625104 5698680 1625128 5698480 1625048 5698520 1625032 5698608 -1625128 5698480 1623760 5697304 1625048 5698520 1625032 5698608 -1625128 5698480 1625032 5698608 1625104 5698680 1627448 5719792 -1629944 5726576 1625240 5698480 1625128 5698480 1627448 5719792 -1625128 5698480 1625104 5698680 1627448 5719792 1625240 5698480 -1625104 5698680 1627384 5719672 1627448 5719792 1625240 5698480 -1625104 5698680 1623944 5702640 1627384 5719672 1625240 5698480 -1623944 5702640 1623888 5702776 1627384 5719672 1625240 5698480 -1627384 5719672 1627448 5719792 1625240 5698480 1623944 5702640 -1625104 5698680 1623840 5702400 1623944 5702640 1625240 5698480 -1627384 5719672 1627400 5719704 1627448 5719792 1625240 5698480 -1625104 5698680 1623944 5702640 1625240 5698480 1625128 5698480 -1629944 5726576 1625240 5698480 1627448 5719792 1629736 5726176 -1627448 5719792 1629944 5726576 1625240 5698480 1627384 5719672 -1625128 5698480 1625240 5698480 1663944 5646256 1663880 5646248 -1625128 5698480 1625240 5698480 1663880 5646248 1623728 5697072 -1625240 5698480 1663944 5646256 1663880 5646248 1623728 5697072 -1663944 5646256 1625240 5698480 1629944 5726576 1743800 5687320 -1663944 5646256 1625240 5698480 1743800 5687320 1664040 5646192 -1629944 5726576 1743888 5687504 1743800 5687320 1625240 5698480 -1663880 5646248 1623704 5697048 1623728 5697072 1625240 5698480 -1663880 5646248 1623704 5697048 1625240 5698480 1663944 5646256 -1623728 5697072 1625128 5698480 1625240 5698480 1623704 5697048 -1663880 5646248 1615440 5689168 1623704 5697048 1625240 5698480 -1625128 5698480 1625240 5698480 1623728 5697072 1623760 5697136 -1625128 5698480 1625240 5698480 1623760 5697136 1623760 5697304 -1625240 5698480 1623704 5697048 1623728 5697072 1623760 5697136 -1625128 5698480 1625032 5698608 1625104 5698680 1625240 5698480 -1625240 5698480 1623760 5697136 1625128 5698480 1625104 5698680 -1625240 5698480 1743800 5687320 1663944 5646256 1663880 5646248 -1629944 5726576 1743800 5687320 1625240 5698480 1627448 5719792 -1743800 5687320 1625560 5698512 1629944 5726576 1743888 5687504 -1625240 5698480 1625560 5698512 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1625560 5698512 -1625560 5698512 1629944 5726576 1743800 5687320 1663944 5646256 -1625240 5698480 1625560 5698512 1663944 5646256 1663880 5646248 -1625240 5698480 1625560 5698512 1663880 5646248 1623704 5697048 -1663880 5646248 1615440 5689168 1623704 5697048 1625560 5698512 -1625560 5698512 1743800 5687320 1663944 5646256 1663880 5646248 -1625240 5698480 1625560 5698512 1623704 5697048 1623728 5697072 -1625560 5698512 1663880 5646248 1623704 5697048 1623728 5697072 -1625240 5698480 1625560 5698512 1623728 5697072 1623760 5697136 -1625560 5698512 1623704 5697048 1623728 5697072 1623760 5697136 -1625240 5698480 1625560 5698512 1623760 5697136 1625128 5698480 -1625560 5698512 1663944 5646256 1663880 5646248 1623704 5697048 -1625240 5698480 1629944 5726576 1625560 5698512 1623760 5697136 -1629944 5726576 1625560 5698512 1625240 5698480 1627448 5719792 -1629944 5726576 1625560 5698512 1627448 5719792 1629736 5726176 -1625240 5698480 1627384 5719672 1627448 5719792 1625560 5698512 -1625240 5698480 1623944 5702640 1627384 5719672 1625560 5698512 -1623944 5702640 1623888 5702776 1627384 5719672 1625560 5698512 -1625240 5698480 1625104 5698680 1623944 5702640 1625560 5698512 -1623944 5702640 1627384 5719672 1625560 5698512 1625104 5698680 -1625104 5698680 1623840 5702400 1623944 5702640 1625560 5698512 -1623944 5702640 1627384 5719672 1625560 5698512 1623840 5702400 -1625104 5698680 1623840 5702400 1625560 5698512 1625240 5698480 -1627384 5719672 1627400 5719704 1627448 5719792 1625560 5698512 -1625240 5698480 1625128 5698480 1625104 5698680 1625560 5698512 -1627384 5719672 1627448 5719792 1625560 5698512 1623944 5702640 -1625104 5698680 1623576 5701960 1623840 5702400 1625560 5698512 -1629944 5726576 1743800 5687320 1625560 5698512 1627448 5719792 -1625560 5698512 1623760 5697136 1625240 5698480 1625104 5698680 -1627448 5719792 1629944 5726576 1625560 5698512 1627384 5719672 -1663944 5646256 1625656 5698464 1743800 5687320 1664040 5646192 -1625560 5698512 1625656 5698464 1663944 5646256 1663880 5646248 -1625656 5698464 1743800 5687320 1663944 5646256 1663880 5646248 -1743800 5687320 1625656 5698464 1625560 5698512 1629944 5726576 -1743800 5687320 1663944 5646256 1625656 5698464 1629944 5726576 -1743800 5687320 1625656 5698464 1629944 5726576 1743888 5687504 -1625560 5698512 1629944 5726576 1625656 5698464 1663880 5646248 -1625560 5698512 1627448 5719792 1629944 5726576 1625656 5698464 -1627448 5719792 1629736 5726176 1629944 5726576 1625656 5698464 -1629944 5726576 1743800 5687320 1625656 5698464 1627448 5719792 -1625560 5698512 1627448 5719792 1625656 5698464 1663880 5646248 -1625560 5698512 1625656 5698464 1663880 5646248 1623704 5697048 -1625560 5698512 1625656 5698464 1623704 5697048 1623728 5697072 -1663880 5646248 1615440 5689168 1623704 5697048 1625656 5698464 -1625656 5698464 1663944 5646256 1663880 5646248 1623704 5697048 -1625560 5698512 1625656 5698464 1623728 5697072 1623760 5697136 -1625656 5698464 1623704 5697048 1623728 5697072 1623760 5697136 -1625560 5698512 1625656 5698464 1623760 5697136 1625240 5698480 -1625656 5698464 1623728 5697072 1623760 5697136 1625240 5698480 -1625560 5698512 1627448 5719792 1625656 5698464 1625240 5698480 -1623760 5697136 1625128 5698480 1625240 5698480 1625656 5698464 -1625656 5698464 1663880 5646248 1623704 5697048 1623728 5697072 -1625560 5698512 1627384 5719672 1627448 5719792 1625656 5698464 -1627384 5719672 1627400 5719704 1627448 5719792 1625656 5698464 -1625560 5698512 1623944 5702640 1627384 5719672 1625656 5698464 -1623944 5702640 1623888 5702776 1627384 5719672 1625656 5698464 -1625560 5698512 1623840 5702400 1623944 5702640 1625656 5698464 -1625560 5698512 1623944 5702640 1625656 5698464 1625240 5698480 -1627448 5719792 1629944 5726576 1625656 5698464 1627384 5719672 -1627384 5719672 1627448 5719792 1625656 5698464 1623944 5702640 -1663944 5646256 1625712 5698432 1743800 5687320 1664040 5646192 -1625656 5698464 1625712 5698432 1663944 5646256 1663880 5646248 -1625656 5698464 1743800 5687320 1625712 5698432 1663880 5646248 -1743800 5687320 1625712 5698432 1625656 5698464 1629944 5726576 -1625712 5698432 1663880 5646248 1625656 5698464 1629944 5726576 -1625712 5698432 1743800 5687320 1663944 5646256 1663880 5646248 -1743800 5687320 1625712 5698432 1629944 5726576 1743888 5687504 -1625656 5698464 1625712 5698432 1663880 5646248 1623704 5697048 -1625712 5698432 1663944 5646256 1663880 5646248 1623704 5697048 -1625656 5698464 1629944 5726576 1625712 5698432 1623704 5697048 -1663880 5646248 1615440 5689168 1623704 5697048 1625712 5698432 -1625656 5698464 1627448 5719792 1629944 5726576 1625712 5698432 -1625656 5698464 1627448 5719792 1625712 5698432 1623704 5697048 -1629944 5726576 1743800 5687320 1625712 5698432 1627448 5719792 -1627448 5719792 1629736 5726176 1629944 5726576 1625712 5698432 -1625656 5698464 1627384 5719672 1627448 5719792 1625712 5698432 -1625656 5698464 1627384 5719672 1625712 5698432 1623704 5697048 -1627384 5719672 1627400 5719704 1627448 5719792 1625712 5698432 -1627448 5719792 1629944 5726576 1625712 5698432 1627384 5719672 -1625656 5698464 1625712 5698432 1623704 5697048 1623728 5697072 -1625656 5698464 1627384 5719672 1625712 5698432 1623728 5697072 -1625656 5698464 1625712 5698432 1623728 5697072 1623760 5697136 -1625656 5698464 1627384 5719672 1625712 5698432 1623760 5697136 -1625712 5698432 1663880 5646248 1623704 5697048 1623728 5697072 -1625656 5698464 1625712 5698432 1623760 5697136 1625240 5698480 -1625656 5698464 1627384 5719672 1625712 5698432 1625240 5698480 -1625712 5698432 1623728 5697072 1623760 5697136 1625240 5698480 -1625656 5698464 1625712 5698432 1625240 5698480 1625560 5698512 -1623760 5697136 1625128 5698480 1625240 5698480 1625712 5698432 -1625712 5698432 1623704 5697048 1623728 5697072 1623760 5697136 -1625656 5698464 1623944 5702640 1627384 5719672 1625712 5698432 -1623944 5702640 1623888 5702776 1627384 5719672 1625712 5698432 -1625656 5698464 1623944 5702640 1625712 5698432 1625240 5698480 -1625656 5698464 1625560 5698512 1623944 5702640 1625712 5698432 -1627384 5719672 1627448 5719792 1625712 5698432 1623944 5702640 -1743800 5687320 1663944 5646256 1625712 5698432 1629944 5726576 -1663944 5646256 1625776 5698376 1743800 5687320 1664040 5646192 -1625712 5698432 1625776 5698376 1663944 5646256 1663880 5646248 -1625712 5698432 1625776 5698376 1663880 5646248 1623704 5697048 -1625776 5698376 1663944 5646256 1663880 5646248 1623704 5697048 -1625712 5698432 1743800 5687320 1625776 5698376 1623704 5697048 -1663880 5646248 1615440 5689168 1623704 5697048 1625776 5698376 -1625712 5698432 1625776 5698376 1623704 5697048 1623728 5697072 -1625776 5698376 1663880 5646248 1623704 5697048 1623728 5697072 -1625712 5698432 1743800 5687320 1625776 5698376 1623728 5697072 -1625712 5698432 1625776 5698376 1623728 5697072 1623760 5697136 -1625712 5698432 1743800 5687320 1625776 5698376 1623760 5697136 -1625712 5698432 1625776 5698376 1623760 5697136 1625240 5698480 -1625712 5698432 1743800 5687320 1625776 5698376 1625240 5698480 -1625776 5698376 1623704 5697048 1623728 5697072 1623760 5697136 -1625712 5698432 1625776 5698376 1625240 5698480 1625656 5698464 -1625712 5698432 1743800 5687320 1625776 5698376 1625656 5698464 -1625776 5698376 1623760 5697136 1625240 5698480 1625656 5698464 -1625240 5698480 1625560 5698512 1625656 5698464 1625776 5698376 -1623760 5697136 1625128 5698480 1625240 5698480 1625776 5698376 -1625776 5698376 1623728 5697072 1623760 5697136 1625240 5698480 -1743800 5687320 1625776 5698376 1625712 5698432 1629944 5726576 -1625712 5698432 1627448 5719792 1629944 5726576 1625776 5698376 -1625776 5698376 1625656 5698464 1625712 5698432 1627448 5719792 -1627448 5719792 1629736 5726176 1629944 5726576 1625776 5698376 -1743800 5687320 1625776 5698376 1629944 5726576 1743888 5687504 -1625712 5698432 1627384 5719672 1627448 5719792 1625776 5698376 -1627448 5719792 1629944 5726576 1625776 5698376 1627384 5719672 -1625712 5698432 1627384 5719672 1625776 5698376 1625656 5698464 -1627384 5719672 1627400 5719704 1627448 5719792 1625776 5698376 -1625712 5698432 1623944 5702640 1627384 5719672 1625776 5698376 -1623944 5702640 1623888 5702776 1627384 5719672 1625776 5698376 -1625712 5698432 1623944 5702640 1625776 5698376 1625656 5698464 -1627384 5719672 1627448 5719792 1625776 5698376 1623944 5702640 -1625712 5698432 1625656 5698464 1623944 5702640 1625776 5698376 -1629944 5726576 1743800 5687320 1625776 5698376 1627448 5719792 -1625776 5698376 1743800 5687320 1663944 5646256 1663880 5646248 -1743800 5687320 1663944 5646256 1625776 5698376 1629944 5726576 -1743800 5687320 1625808 5698384 1629944 5726576 1743888 5687504 -1629944 5726576 1625808 5698384 1625776 5698376 1627448 5719792 -1625776 5698376 1627384 5719672 1627448 5719792 1625808 5698384 -1629944 5726576 1743800 5687320 1625808 5698384 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1625808 5698384 -1629944 5726576 1625808 5698384 1627448 5719792 1629736 5726176 -1625776 5698376 1623944 5702640 1627384 5719672 1625808 5698384 -1623944 5702640 1623888 5702776 1627384 5719672 1625808 5698384 -1627384 5719672 1627448 5719792 1625808 5698384 1623944 5702640 -1625776 5698376 1625712 5698432 1623944 5702640 1625808 5698384 -1623944 5702640 1627384 5719672 1625808 5698384 1625712 5698432 -1625712 5698432 1625656 5698464 1623944 5702640 1625808 5698384 -1625656 5698464 1625560 5698512 1623944 5702640 1625808 5698384 -1623944 5702640 1627384 5719672 1625808 5698384 1625656 5698464 -1625712 5698432 1625656 5698464 1625808 5698384 1625776 5698376 -1627448 5719792 1629944 5726576 1625808 5698384 1627384 5719672 -1625808 5698384 1743800 5687320 1625776 5698376 1625712 5698432 -1625776 5698376 1625808 5698384 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1625808 5698384 -1625776 5698376 1625808 5698384 1663944 5646256 1663880 5646248 -1625776 5698376 1625808 5698384 1663880 5646248 1623704 5697048 -1625776 5698376 1625808 5698384 1623704 5697048 1623728 5697072 -1625808 5698384 1663880 5646248 1623704 5697048 1623728 5697072 -1663880 5646248 1615440 5689168 1623704 5697048 1625808 5698384 -1625776 5698376 1625808 5698384 1623728 5697072 1623760 5697136 -1625808 5698384 1663944 5646256 1663880 5646248 1623704 5697048 -1625776 5698376 1625712 5698432 1625808 5698384 1623728 5697072 -1625808 5698384 1743800 5687320 1663944 5646256 1663880 5646248 -1625808 5698384 1629944 5726576 1743800 5687320 1663944 5646256 -1629944 5726576 1625936 5698488 1625808 5698384 1627448 5719792 -1625936 5698488 1743800 5687320 1625808 5698384 1627448 5719792 -1629944 5726576 1743800 5687320 1625936 5698488 1627448 5719792 -1629944 5726576 1625936 5698488 1627448 5719792 1629736 5726176 -1743800 5687320 1625936 5698488 1629944 5726576 1743888 5687504 -1625808 5698384 1627384 5719672 1627448 5719792 1625936 5698488 -1625808 5698384 1623944 5702640 1627384 5719672 1625936 5698488 -1623944 5702640 1623888 5702776 1627384 5719672 1625936 5698488 -1625808 5698384 1623944 5702640 1625936 5698488 1743800 5687320 -1627448 5719792 1629944 5726576 1625936 5698488 1627384 5719672 -1627384 5719672 1627400 5719704 1627448 5719792 1625936 5698488 -1625808 5698384 1625656 5698464 1623944 5702640 1625936 5698488 -1623944 5702640 1627384 5719672 1625936 5698488 1625656 5698464 -1625808 5698384 1625656 5698464 1625936 5698488 1743800 5687320 -1625656 5698464 1625560 5698512 1623944 5702640 1625936 5698488 -1625560 5698512 1623840 5702400 1623944 5702640 1625936 5698488 -1625560 5698512 1625104 5698680 1623840 5702400 1625936 5698488 -1623840 5702400 1623944 5702640 1625936 5698488 1625104 5698680 -1625560 5698512 1625240 5698480 1625104 5698680 1625936 5698488 -1623944 5702640 1627384 5719672 1625936 5698488 1623840 5702400 -1625560 5698512 1625104 5698680 1625936 5698488 1625656 5698464 -1625104 5698680 1623576 5701960 1623840 5702400 1625936 5698488 -1625656 5698464 1625560 5698512 1625936 5698488 1625808 5698384 -1625808 5698384 1625712 5698432 1625656 5698464 1625936 5698488 -1625808 5698384 1625712 5698432 1625936 5698488 1743800 5687320 -1625656 5698464 1625560 5698512 1625936 5698488 1625712 5698432 -1625808 5698384 1625776 5698376 1625712 5698432 1625936 5698488 -1627384 5719672 1627448 5719792 1625936 5698488 1623944 5702640 -1625808 5698384 1625936 5698488 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1625936 5698488 -1625808 5698384 1625712 5698432 1625936 5698488 1663944 5646256 -1625936 5698488 1629944 5726576 1743800 5687320 1663944 5646256 -1625808 5698384 1625936 5698488 1663944 5646256 1663880 5646248 -1625808 5698384 1625712 5698432 1625936 5698488 1663880 5646248 -1625808 5698384 1625936 5698488 1663880 5646248 1623704 5697048 -1625936 5698488 1743800 5687320 1663944 5646256 1663880 5646248 -1625936 5698488 1626032 5698672 1743800 5687320 1663944 5646256 -1626032 5698672 1629944 5726576 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1626032 5698672 -1625936 5698488 1629944 5726576 1626032 5698672 1663944 5646256 -1629944 5726576 1626032 5698672 1625936 5698488 1627448 5719792 -1629944 5726576 1743800 5687320 1626032 5698672 1627448 5719792 -1625936 5698488 1627384 5719672 1627448 5719792 1626032 5698672 -1626032 5698672 1663944 5646256 1625936 5698488 1627384 5719672 -1627448 5719792 1629944 5726576 1626032 5698672 1627384 5719672 -1627384 5719672 1627400 5719704 1627448 5719792 1626032 5698672 -1629944 5726576 1626032 5698672 1627448 5719792 1629736 5726176 -1743800 5687320 1626032 5698672 1629944 5726576 1743888 5687504 -1625936 5698488 1623944 5702640 1627384 5719672 1626032 5698672 -1623944 5702640 1623888 5702776 1627384 5719672 1626032 5698672 -1625936 5698488 1623840 5702400 1623944 5702640 1626032 5698672 -1625936 5698488 1625104 5698680 1623840 5702400 1626032 5698672 -1625936 5698488 1625560 5698512 1625104 5698680 1626032 5698672 -1625104 5698680 1623840 5702400 1626032 5698672 1625560 5698512 -1625560 5698512 1625240 5698480 1625104 5698680 1626032 5698672 -1623840 5702400 1623944 5702640 1626032 5698672 1625104 5698680 -1627384 5719672 1627448 5719792 1626032 5698672 1623944 5702640 -1625936 5698488 1625560 5698512 1626032 5698672 1663944 5646256 -1625936 5698488 1625656 5698464 1625560 5698512 1626032 5698672 -1625560 5698512 1625104 5698680 1626032 5698672 1625656 5698464 -1625936 5698488 1625656 5698464 1626032 5698672 1663944 5646256 -1625104 5698680 1623576 5701960 1623840 5702400 1626032 5698672 -1625104 5698680 1623576 5701960 1626032 5698672 1625560 5698512 -1623840 5702400 1623944 5702640 1626032 5698672 1623576 5701960 -1625104 5698680 1623408 5701720 1623576 5701960 1626032 5698672 -1625936 5698488 1625712 5698432 1625656 5698464 1626032 5698672 -1623944 5702640 1627384 5719672 1626032 5698672 1623840 5702400 -1625936 5698488 1626032 5698672 1663944 5646256 1663880 5646248 -1626032 5698672 1743800 5687320 1663944 5646256 1663880 5646248 -1625936 5698488 1625656 5698464 1626032 5698672 1663880 5646248 -1625936 5698488 1626032 5698672 1663880 5646248 1625808 5698384 -1626032 5698672 1626112 5698760 1743800 5687320 1663944 5646256 -1626032 5698672 1629944 5726576 1626112 5698760 1663944 5646256 -1629944 5726576 1626112 5698760 1626032 5698672 1627448 5719792 -1629944 5726576 1743800 5687320 1626112 5698760 1627448 5719792 -1626112 5698760 1663944 5646256 1626032 5698672 1627448 5719792 -1626112 5698760 1629944 5726576 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1626112 5698760 -1626032 5698672 1626112 5698760 1663944 5646256 1663880 5646248 -1626112 5698760 1743800 5687320 1663944 5646256 1663880 5646248 -1626032 5698672 1627448 5719792 1626112 5698760 1663880 5646248 -1626032 5698672 1627384 5719672 1627448 5719792 1626112 5698760 -1626032 5698672 1627384 5719672 1626112 5698760 1663880 5646248 -1627448 5719792 1629944 5726576 1626112 5698760 1627384 5719672 -1626032 5698672 1623944 5702640 1627384 5719672 1626112 5698760 -1623944 5702640 1623888 5702776 1627384 5719672 1626112 5698760 -1626032 5698672 1623944 5702640 1626112 5698760 1663880 5646248 -1627384 5719672 1627448 5719792 1626112 5698760 1623944 5702640 -1627384 5719672 1627400 5719704 1627448 5719792 1626112 5698760 -1629944 5726576 1626112 5698760 1627448 5719792 1629736 5726176 -1743800 5687320 1626112 5698760 1629944 5726576 1743888 5687504 -1626032 5698672 1623840 5702400 1623944 5702640 1626112 5698760 -1626032 5698672 1623840 5702400 1626112 5698760 1663880 5646248 -1626032 5698672 1623576 5701960 1623840 5702400 1626112 5698760 -1626032 5698672 1623576 5701960 1626112 5698760 1663880 5646248 -1623944 5702640 1627384 5719672 1626112 5698760 1623840 5702400 -1626032 5698672 1625104 5698680 1623576 5701960 1626112 5698760 -1626032 5698672 1625560 5698512 1625104 5698680 1626112 5698760 -1625560 5698512 1625240 5698480 1625104 5698680 1626112 5698760 -1626032 5698672 1625656 5698464 1625560 5698512 1626112 5698760 -1626032 5698672 1625560 5698512 1626112 5698760 1663880 5646248 -1623576 5701960 1623840 5702400 1626112 5698760 1625104 5698680 -1625104 5698680 1623576 5701960 1626112 5698760 1625560 5698512 -1625104 5698680 1623408 5701720 1623576 5701960 1626112 5698760 -1623840 5702400 1623944 5702640 1626112 5698760 1623576 5701960 -1626032 5698672 1626112 5698760 1663880 5646248 1625936 5698488 -1626032 5698672 1625560 5698512 1626112 5698760 1625936 5698488 -1626112 5698760 1663944 5646256 1663880 5646248 1625936 5698488 -1663880 5646248 1625808 5698384 1625936 5698488 1626112 5698760 -1629944 5726576 1626248 5698816 1626112 5698760 1627448 5719792 -1629944 5726576 1743800 5687320 1626248 5698816 1627448 5719792 -1626112 5698760 1627384 5719672 1627448 5719792 1626248 5698816 -1627448 5719792 1629944 5726576 1626248 5698816 1627384 5719672 -1626112 5698760 1626248 5698816 1743800 5687320 1663944 5646256 -1626248 5698816 1629944 5726576 1743800 5687320 1663944 5646256 -1626112 5698760 1626248 5698816 1663944 5646256 1663880 5646248 -1626248 5698816 1743800 5687320 1663944 5646256 1663880 5646248 -1626248 5698816 1663880 5646248 1626112 5698760 1627384 5719672 -1743800 5687320 1664040 5646192 1663944 5646256 1626248 5698816 -1626112 5698760 1626248 5698816 1663880 5646248 1625936 5698488 -1626248 5698816 1663944 5646256 1663880 5646248 1625936 5698488 -1626112 5698760 1627384 5719672 1626248 5698816 1625936 5698488 -1626112 5698760 1623944 5702640 1627384 5719672 1626248 5698816 -1623944 5702640 1623888 5702776 1627384 5719672 1626248 5698816 -1623888 5702776 1627336 5719640 1627384 5719672 1626248 5698816 -1627384 5719672 1627448 5719792 1626248 5698816 1623888 5702776 -1626112 5698760 1623944 5702640 1626248 5698816 1625936 5698488 -1626112 5698760 1623840 5702400 1623944 5702640 1626248 5698816 -1626112 5698760 1623840 5702400 1626248 5698816 1625936 5698488 -1623944 5702640 1623888 5702776 1626248 5698816 1623840 5702400 -1627384 5719672 1627400 5719704 1627448 5719792 1626248 5698816 -1629944 5726576 1626248 5698816 1627448 5719792 1629736 5726176 -1743800 5687320 1626248 5698816 1629944 5726576 1743888 5687504 -1626112 5698760 1623576 5701960 1623840 5702400 1626248 5698816 -1626112 5698760 1623576 5701960 1626248 5698816 1625936 5698488 -1626112 5698760 1625104 5698680 1623576 5701960 1626248 5698816 -1626112 5698760 1625104 5698680 1626248 5698816 1625936 5698488 -1623840 5702400 1623944 5702640 1626248 5698816 1623576 5701960 -1626112 5698760 1625560 5698512 1625104 5698680 1626248 5698816 -1625104 5698680 1623408 5701720 1623576 5701960 1626248 5698816 -1623576 5701960 1623840 5702400 1626248 5698816 1625104 5698680 -1663880 5646248 1625808 5698384 1625936 5698488 1626248 5698816 -1626112 5698760 1626248 5698816 1625936 5698488 1626032 5698672 -1626112 5698760 1625104 5698680 1626248 5698816 1626032 5698672 -1626248 5698816 1663880 5646248 1625936 5698488 1626032 5698672 -1626248 5698816 1626296 5698872 1743800 5687320 1663944 5646256 -1626248 5698816 1629944 5726576 1626296 5698872 1663944 5646256 -1629944 5726576 1626296 5698872 1626248 5698816 1627448 5719792 -1626248 5698816 1627384 5719672 1627448 5719792 1626296 5698872 -1626296 5698872 1663944 5646256 1626248 5698816 1627384 5719672 -1627448 5719792 1629944 5726576 1626296 5698872 1627384 5719672 -1626296 5698872 1629944 5726576 1743800 5687320 1663944 5646256 -1626248 5698816 1623888 5702776 1627384 5719672 1626296 5698872 -1623888 5702776 1627336 5719640 1627384 5719672 1626296 5698872 -1626248 5698816 1623944 5702640 1623888 5702776 1626296 5698872 -1627384 5719672 1627448 5719792 1626296 5698872 1623888 5702776 -1626248 5698816 1623944 5702640 1626296 5698872 1663944 5646256 -1623888 5702776 1627384 5719672 1626296 5698872 1623944 5702640 -1626248 5698816 1626296 5698872 1663944 5646256 1663880 5646248 -1626296 5698872 1743800 5687320 1663944 5646256 1663880 5646248 -1626248 5698816 1623944 5702640 1626296 5698872 1663880 5646248 -1626248 5698816 1626296 5698872 1663880 5646248 1625936 5698488 -1743800 5687320 1664040 5646192 1663944 5646256 1626296 5698872 -1629944 5726576 1743800 5687320 1626296 5698872 1627448 5719792 -1626248 5698816 1623840 5702400 1623944 5702640 1626296 5698872 -1623944 5702640 1623888 5702776 1626296 5698872 1623840 5702400 -1626248 5698816 1623840 5702400 1626296 5698872 1663880 5646248 -1626248 5698816 1623576 5701960 1623840 5702400 1626296 5698872 -1626248 5698816 1623576 5701960 1626296 5698872 1663880 5646248 -1623840 5702400 1623944 5702640 1626296 5698872 1623576 5701960 -1627384 5719672 1627400 5719704 1627448 5719792 1626296 5698872 -1629944 5726576 1626296 5698872 1627448 5719792 1629736 5726176 -1743800 5687320 1626296 5698872 1629944 5726576 1743888 5687504 -1626248 5698816 1625104 5698680 1623576 5701960 1626296 5698872 -1626248 5698816 1625104 5698680 1626296 5698872 1663880 5646248 -1626248 5698816 1626112 5698760 1625104 5698680 1626296 5698872 -1626248 5698816 1626112 5698760 1626296 5698872 1663880 5646248 -1623576 5701960 1623840 5702400 1626296 5698872 1625104 5698680 -1626112 5698760 1625560 5698512 1625104 5698680 1626296 5698872 -1625104 5698680 1623408 5701720 1623576 5701960 1626296 5698872 -1625104 5698680 1623576 5701960 1626296 5698872 1626112 5698760 -1626296 5698872 1626344 5698984 1743800 5687320 1663944 5646256 -1626296 5698872 1626344 5698984 1663944 5646256 1663880 5646248 -1743800 5687320 1664040 5646192 1663944 5646256 1626344 5698984 -1626296 5698872 1629944 5726576 1626344 5698984 1663944 5646256 -1629944 5726576 1626344 5698984 1626296 5698872 1627448 5719792 -1626296 5698872 1627384 5719672 1627448 5719792 1626344 5698984 -1626296 5698872 1623888 5702776 1627384 5719672 1626344 5698984 -1623888 5702776 1627336 5719640 1627384 5719672 1626344 5698984 -1627384 5719672 1627448 5719792 1626344 5698984 1623888 5702776 -1626296 5698872 1623944 5702640 1623888 5702776 1626344 5698984 -1626296 5698872 1623840 5702400 1623944 5702640 1626344 5698984 -1623888 5702776 1627384 5719672 1626344 5698984 1623944 5702640 -1623944 5702640 1623888 5702776 1626344 5698984 1623840 5702400 -1626344 5698984 1663944 5646256 1626296 5698872 1623840 5702400 -1627448 5719792 1629944 5726576 1626344 5698984 1627384 5719672 -1626296 5698872 1623576 5701960 1623840 5702400 1626344 5698984 -1623840 5702400 1623944 5702640 1626344 5698984 1623576 5701960 -1626296 5698872 1623576 5701960 1626344 5698984 1663944 5646256 -1626296 5698872 1625104 5698680 1623576 5701960 1626344 5698984 -1626296 5698872 1625104 5698680 1626344 5698984 1663944 5646256 -1623576 5701960 1623840 5702400 1626344 5698984 1625104 5698680 -1627384 5719672 1627400 5719704 1627448 5719792 1626344 5698984 -1629944 5726576 1626344 5698984 1627448 5719792 1629736 5726176 -1743800 5687320 1626344 5698984 1629944 5726576 1743888 5687504 -1626344 5698984 1629944 5726576 1743800 5687320 1663944 5646256 -1629944 5726576 1743800 5687320 1626344 5698984 1627448 5719792 -1625104 5698680 1623408 5701720 1623576 5701960 1626344 5698984 -1626296 5698872 1626112 5698760 1625104 5698680 1626344 5698984 -1626296 5698872 1626248 5698816 1626112 5698760 1626344 5698984 -1626296 5698872 1626112 5698760 1626344 5698984 1663944 5646256 -1625104 5698680 1623576 5701960 1626344 5698984 1626112 5698760 -1626112 5698760 1625560 5698512 1625104 5698680 1626344 5698984 -1627384 5719672 1626320 5699032 1623888 5702776 1627336 5719640 -1623888 5702776 1626320 5699032 1626344 5698984 1623944 5702640 -1626344 5698984 1626320 5699032 1627384 5719672 1627448 5719792 -1623888 5702776 1627384 5719672 1626320 5699032 1623944 5702640 -1626344 5698984 1623840 5702400 1623944 5702640 1626320 5699032 -1626344 5698984 1623576 5701960 1623840 5702400 1626320 5699032 -1623944 5702640 1623888 5702776 1626320 5699032 1623840 5702400 -1623840 5702400 1623944 5702640 1626320 5699032 1623576 5701960 -1626344 5698984 1625104 5698680 1623576 5701960 1626320 5699032 -1623576 5701960 1623840 5702400 1626320 5699032 1625104 5698680 -1626344 5698984 1626112 5698760 1625104 5698680 1626320 5699032 -1625104 5698680 1623576 5701960 1626320 5699032 1626112 5698760 -1626112 5698760 1625560 5698512 1625104 5698680 1626320 5699032 -1626320 5699032 1627384 5719672 1626344 5698984 1626112 5698760 -1625104 5698680 1623408 5701720 1623576 5701960 1626320 5699032 -1626344 5698984 1626296 5698872 1626112 5698760 1626320 5699032 -1626296 5698872 1626248 5698816 1626112 5698760 1626320 5699032 -1626112 5698760 1625104 5698680 1626320 5699032 1626248 5698816 -1626344 5698984 1626296 5698872 1626320 5699032 1627384 5719672 -1626296 5698872 1626248 5698816 1626320 5699032 1626344 5698984 -1626320 5699032 1626264 5699064 1623576 5701960 1623840 5702400 -1626264 5699064 1625104 5698680 1623576 5701960 1623840 5702400 -1626320 5699032 1626264 5699064 1623840 5702400 1623944 5702640 -1626264 5699064 1623576 5701960 1623840 5702400 1623944 5702640 -1626320 5699032 1626264 5699064 1623944 5702640 1623888 5702776 -1625104 5698680 1626264 5699064 1626320 5699032 1626112 5698760 -1625104 5698680 1623576 5701960 1626264 5699064 1626112 5698760 -1626320 5699032 1626248 5698816 1626112 5698760 1626264 5699064 -1626320 5699032 1626296 5698872 1626248 5698816 1626264 5699064 -1626248 5698816 1626112 5698760 1626264 5699064 1626296 5698872 -1626112 5698760 1625104 5698680 1626264 5699064 1626248 5698816 -1625104 5698680 1626264 5699064 1626112 5698760 1625560 5698512 -1626112 5698760 1626032 5698672 1625560 5698512 1626264 5699064 -1625104 5698680 1626264 5699064 1625560 5698512 1625240 5698480 -1625104 5698680 1623576 5701960 1626264 5699064 1625560 5698512 -1626264 5699064 1626248 5698816 1626112 5698760 1625560 5698512 -1626320 5699032 1626296 5698872 1626264 5699064 1623944 5702640 -1623576 5701960 1626264 5699064 1625104 5698680 1623408 5701720 -1623576 5701960 1623840 5702400 1626264 5699064 1623408 5701720 -1626264 5699064 1625560 5698512 1625104 5698680 1623408 5701720 -1625104 5698680 1623296 5701624 1623408 5701720 1626264 5699064 -1626320 5699032 1626344 5698984 1626296 5698872 1626264 5699064 -1626296 5698872 1626248 5698816 1626264 5699064 1626344 5698984 -1626320 5699032 1626344 5698984 1626264 5699064 1623944 5702640 -1625104 5698680 1626200 5699080 1626264 5699064 1625560 5698512 -1625104 5698680 1626200 5699080 1625560 5698512 1625240 5698480 -1626200 5699080 1623408 5701720 1626264 5699064 1625560 5698512 -1626264 5699064 1626112 5698760 1625560 5698512 1626200 5699080 -1626112 5698760 1626032 5698672 1625560 5698512 1626200 5699080 -1626032 5698672 1625656 5698464 1625560 5698512 1626200 5699080 -1626264 5699064 1626112 5698760 1626200 5699080 1623408 5701720 -1625560 5698512 1625104 5698680 1626200 5699080 1626032 5698672 -1626264 5699064 1626248 5698816 1626112 5698760 1626200 5699080 -1626264 5699064 1626248 5698816 1626200 5699080 1623408 5701720 -1626264 5699064 1626296 5698872 1626248 5698816 1626200 5699080 -1626264 5699064 1626296 5698872 1626200 5699080 1623408 5701720 -1626264 5699064 1626344 5698984 1626296 5698872 1626200 5699080 -1626248 5698816 1626112 5698760 1626200 5699080 1626296 5698872 -1626112 5698760 1626032 5698672 1626200 5699080 1626248 5698816 -1623408 5701720 1626200 5699080 1625104 5698680 1623296 5701624 -1625104 5698680 1623408 5701720 1626200 5699080 1625560 5698512 -1626264 5699064 1626200 5699080 1623408 5701720 1623576 5701960 -1626264 5699064 1626200 5699080 1623576 5701960 1623840 5702400 -1626264 5699064 1626200 5699080 1623840 5702400 1623944 5702640 -1626200 5699080 1623576 5701960 1623840 5702400 1623944 5702640 -1626264 5699064 1626296 5698872 1626200 5699080 1623944 5702640 -1626200 5699080 1625104 5698680 1623408 5701720 1623576 5701960 -1626264 5699064 1626200 5699080 1623944 5702640 1626320 5699032 -1626200 5699080 1623408 5701720 1623576 5701960 1623840 5702400 -1626200 5699080 1626016 5699032 1623408 5701720 1623576 5701960 -1623408 5701720 1626016 5699032 1625104 5698680 1623296 5701624 -1626200 5699080 1625104 5698680 1626016 5699032 1623576 5701960 -1625104 5698680 1626016 5699032 1626200 5699080 1625560 5698512 -1625104 5698680 1626016 5699032 1625560 5698512 1625240 5698480 -1626200 5699080 1626032 5698672 1625560 5698512 1626016 5699032 -1626200 5699080 1626112 5698760 1626032 5698672 1626016 5699032 -1626032 5698672 1625656 5698464 1625560 5698512 1626016 5699032 -1626032 5698672 1625560 5698512 1626016 5699032 1626112 5698760 -1626200 5699080 1626248 5698816 1626112 5698760 1626016 5699032 -1626112 5698760 1626032 5698672 1626016 5699032 1626248 5698816 -1626200 5699080 1626296 5698872 1626248 5698816 1626016 5699032 -1626016 5699032 1623576 5701960 1626200 5699080 1626248 5698816 -1625560 5698512 1625104 5698680 1626016 5699032 1626032 5698672 -1626016 5699032 1625104 5698680 1623408 5701720 1623576 5701960 -1625104 5698680 1623408 5701720 1626016 5699032 1625560 5698512 -1626200 5699080 1626016 5699032 1623576 5701960 1623840 5702400 -1626200 5699080 1626016 5699032 1623840 5702400 1623944 5702640 -1626016 5699032 1623408 5701720 1623576 5701960 1623840 5702400 -1626200 5699080 1626248 5698816 1626016 5699032 1623840 5702400 -1625104 5698680 1625640 5698856 1625560 5698512 1625240 5698480 -1625560 5698512 1625640 5698856 1626016 5699032 1626032 5698672 -1625560 5698512 1625640 5698856 1626032 5698672 1625656 5698464 -1626016 5699032 1626112 5698760 1626032 5698672 1625640 5698856 -1626032 5698672 1625936 5698488 1625656 5698464 1625640 5698856 -1625656 5698464 1625560 5698512 1625640 5698856 1625936 5698488 -1625560 5698512 1625104 5698680 1625640 5698856 1625656 5698464 -1625640 5698856 1626016 5699032 1626032 5698672 1625936 5698488 -1625640 5698856 1625104 5698680 1626016 5699032 1626032 5698672 -1626016 5699032 1625640 5698856 1625104 5698680 1623408 5701720 -1625104 5698680 1623296 5701624 1623408 5701720 1625640 5698856 -1625640 5698856 1625560 5698512 1625104 5698680 1623408 5701720 -1626016 5699032 1625640 5698856 1623408 5701720 1623576 5701960 -1626016 5699032 1626032 5698672 1625640 5698856 1623408 5701720 -1625936 5698488 1625712 5698432 1625656 5698464 1625640 5698856 -1623408 5701720 1625432 5698864 1625104 5698680 1623296 5701624 -1625104 5698680 1625432 5698864 1625640 5698856 1625560 5698512 -1625104 5698680 1625432 5698864 1625560 5698512 1625240 5698480 -1625104 5698680 1625432 5698864 1625240 5698480 1625128 5698480 -1625432 5698864 1625640 5698856 1625560 5698512 1625240 5698480 -1625432 5698864 1623408 5701720 1625640 5698856 1625560 5698512 -1625640 5698856 1625656 5698464 1625560 5698512 1625432 5698864 -1623408 5701720 1625640 5698856 1625432 5698864 1623296 5701624 -1625432 5698864 1625240 5698480 1625104 5698680 1623296 5701624 -1625640 5698856 1625432 5698864 1623408 5701720 1626016 5699032 -1625640 5698856 1625560 5698512 1625432 5698864 1626016 5699032 -1625432 5698864 1623296 5701624 1623408 5701720 1626016 5699032 -1623408 5701720 1623576 5701960 1626016 5699032 1625432 5698864 -1623576 5701960 1623840 5702400 1626016 5699032 1625432 5698864 -1623408 5701720 1623576 5701960 1625432 5698864 1623296 5701624 -1626016 5699032 1625640 5698856 1625432 5698864 1623576 5701960 -1625104 5698680 1623192 5701576 1623296 5701624 1625432 5698864 -1625432 5698864 1625328 5698848 1623296 5701624 1623408 5701720 -1625432 5698864 1625328 5698848 1623408 5701720 1623576 5701960 -1625328 5698848 1623296 5701624 1623408 5701720 1623576 5701960 -1625432 5698864 1625104 5698680 1625328 5698848 1623576 5701960 -1625104 5698680 1625328 5698848 1625432 5698864 1625240 5698480 -1625432 5698864 1625560 5698512 1625240 5698480 1625328 5698848 -1625104 5698680 1625328 5698848 1625240 5698480 1625128 5698480 -1625432 5698864 1625640 5698856 1625560 5698512 1625328 5698848 -1625328 5698848 1623576 5701960 1625432 5698864 1625560 5698512 -1625240 5698480 1625104 5698680 1625328 5698848 1625560 5698512 -1625328 5698848 1625104 5698680 1623296 5701624 1623408 5701720 -1625432 5698864 1625328 5698848 1623576 5701960 1626016 5699032 -1623296 5701624 1625328 5698848 1625104 5698680 1623192 5701576 -1625104 5698680 1623296 5701624 1625328 5698848 1625240 5698480 -1625328 5698848 1625176 5698752 1623296 5701624 1623408 5701720 -1623296 5701624 1625176 5698752 1625104 5698680 1623192 5701576 -1625104 5698680 1625032 5698608 1623192 5701576 1625176 5698752 -1625104 5698680 1625176 5698752 1625328 5698848 1625240 5698480 -1625104 5698680 1625176 5698752 1625240 5698480 1625128 5698480 -1625328 5698848 1625560 5698512 1625240 5698480 1625176 5698752 -1625176 5698752 1623296 5701624 1625328 5698848 1625240 5698480 -1623296 5701624 1625328 5698848 1625176 5698752 1623192 5701576 -1625176 5698752 1625240 5698480 1625104 5698680 1623192 5701576 -1627384 5719672 1625464 5700552 1623888 5702776 1627336 5719640 -1623888 5702776 1625464 5700552 1626320 5699032 1623944 5702640 -1626320 5699032 1626264 5699064 1623944 5702640 1625464 5700552 -1623944 5702640 1623888 5702776 1625464 5700552 1626264 5699064 -1626264 5699064 1626200 5699080 1623944 5702640 1625464 5700552 -1626200 5699080 1623840 5702400 1623944 5702640 1625464 5700552 -1626264 5699064 1626200 5699080 1625464 5700552 1626320 5699032 -1623944 5702640 1623888 5702776 1625464 5700552 1623840 5702400 -1626200 5699080 1626016 5699032 1623840 5702400 1625464 5700552 -1623840 5702400 1623944 5702640 1625464 5700552 1626016 5699032 -1626200 5699080 1626016 5699032 1625464 5700552 1626264 5699064 -1626320 5699032 1625464 5700552 1627384 5719672 1626344 5698984 -1626016 5699032 1623576 5701960 1623840 5702400 1625464 5700552 -1623840 5702400 1623944 5702640 1625464 5700552 1623576 5701960 -1626016 5699032 1623576 5701960 1625464 5700552 1626200 5699080 -1626016 5699032 1625432 5698864 1623576 5701960 1625464 5700552 -1626016 5699032 1625432 5698864 1625464 5700552 1626200 5699080 -1625432 5698864 1625328 5698848 1623576 5701960 1625464 5700552 -1625432 5698864 1625328 5698848 1625464 5700552 1626016 5699032 -1625328 5698848 1623408 5701720 1623576 5701960 1625464 5700552 -1625328 5698848 1623296 5701624 1623408 5701720 1625464 5700552 -1623408 5701720 1623576 5701960 1625464 5700552 1623296 5701624 -1625328 5698848 1625176 5698752 1623296 5701624 1625464 5700552 -1623296 5701624 1623408 5701720 1625464 5700552 1625176 5698752 -1625328 5698848 1625176 5698752 1625464 5700552 1625432 5698864 -1626016 5699032 1625640 5698856 1625432 5698864 1625464 5700552 -1623576 5701960 1623840 5702400 1625464 5700552 1623408 5701720 -1623888 5702776 1627384 5719672 1625464 5700552 1623944 5702640 -1625176 5698752 1623192 5701576 1623296 5701624 1625464 5700552 -1623296 5701624 1623408 5701720 1625464 5700552 1623192 5701576 -1625176 5698752 1623192 5701576 1625464 5700552 1625328 5698848 -1625176 5698752 1625104 5698680 1623192 5701576 1625464 5700552 -1625104 5698680 1625032 5698608 1623192 5701576 1625464 5700552 -1625032 5698608 1623016 5701528 1623192 5701576 1625464 5700552 -1625176 5698752 1625104 5698680 1625464 5700552 1625328 5698848 -1625104 5698680 1625032 5698608 1625464 5700552 1625176 5698752 -1623192 5701576 1623296 5701624 1625464 5700552 1625032 5698608 -1625464 5700552 1627384 5719672 1626320 5699032 1626264 5699064 -1626320 5699032 1625640 5700288 1627384 5719672 1626344 5698984 -1625464 5700552 1625640 5700288 1626320 5699032 1626264 5699064 -1625464 5700552 1625640 5700288 1626264 5699064 1626200 5699080 -1625464 5700552 1625640 5700288 1626200 5699080 1626016 5699032 -1625640 5700288 1626264 5699064 1626200 5699080 1626016 5699032 -1625464 5700552 1625640 5700288 1626016 5699032 1625432 5698864 -1625464 5700552 1625640 5700288 1625432 5698864 1625328 5698848 -1625640 5700288 1626016 5699032 1625432 5698864 1625328 5698848 -1625640 5700288 1626200 5699080 1626016 5699032 1625432 5698864 -1625464 5700552 1625640 5700288 1625328 5698848 1625176 5698752 -1625640 5700288 1625432 5698864 1625328 5698848 1625176 5698752 -1625464 5700552 1625640 5700288 1625176 5698752 1625104 5698680 -1626016 5699032 1625640 5698856 1625432 5698864 1625640 5700288 -1625640 5700288 1627384 5719672 1626320 5699032 1626264 5699064 -1625640 5700288 1626320 5699032 1626264 5699064 1626200 5699080 -1627384 5719672 1625640 5700288 1625464 5700552 1623888 5702776 -1625464 5700552 1627384 5719672 1625640 5700288 1625176 5698752 -1627384 5719672 1625704 5700272 1625640 5700288 1625464 5700552 -1625704 5700272 1626320 5699032 1625640 5700288 1625464 5700552 -1627384 5719672 1626320 5699032 1625704 5700272 1625464 5700552 -1626320 5699032 1625704 5700272 1627384 5719672 1626344 5698984 -1625640 5700288 1625704 5700272 1626320 5699032 1626264 5699064 -1625640 5700288 1625464 5700552 1625704 5700272 1626264 5699064 -1625704 5700272 1627384 5719672 1626320 5699032 1626264 5699064 -1625640 5700288 1625704 5700272 1626264 5699064 1626200 5699080 -1625640 5700288 1625704 5700272 1626200 5699080 1626016 5699032 -1625640 5700288 1625704 5700272 1626016 5699032 1625432 5698864 -1625704 5700272 1626200 5699080 1626016 5699032 1625432 5698864 -1625640 5700288 1625704 5700272 1625432 5698864 1625328 5698848 -1625640 5700288 1625464 5700552 1625704 5700272 1625432 5698864 -1626016 5699032 1625640 5698856 1625432 5698864 1625704 5700272 -1625704 5700272 1626320 5699032 1626264 5699064 1626200 5699080 -1625704 5700272 1626264 5699064 1626200 5699080 1626016 5699032 -1627384 5719672 1625704 5700272 1625464 5700552 1623888 5702776 -1625704 5700272 1625848 5700312 1626320 5699032 1626264 5699064 -1625848 5700312 1627384 5719672 1626320 5699032 1626264 5699064 -1625704 5700272 1627384 5719672 1625848 5700312 1626264 5699064 -1627384 5719672 1625848 5700312 1625704 5700272 1625464 5700552 -1627384 5719672 1626320 5699032 1625848 5700312 1625464 5700552 -1625704 5700272 1625640 5700288 1625464 5700552 1625848 5700312 -1625848 5700312 1626264 5699064 1625704 5700272 1625640 5700288 -1625464 5700552 1627384 5719672 1625848 5700312 1625640 5700288 -1626320 5699032 1625848 5700312 1627384 5719672 1626344 5698984 -1627384 5719672 1627448 5719792 1626344 5698984 1625848 5700312 -1626320 5699032 1626264 5699064 1625848 5700312 1626344 5698984 -1625848 5700312 1625464 5700552 1627384 5719672 1627448 5719792 -1627448 5719792 1629944 5726576 1626344 5698984 1625848 5700312 -1627384 5719672 1627400 5719704 1627448 5719792 1625848 5700312 -1626344 5698984 1626320 5699032 1625848 5700312 1627448 5719792 -1625704 5700272 1625848 5700312 1626264 5699064 1626200 5699080 -1625848 5700312 1626320 5699032 1626264 5699064 1626200 5699080 -1625704 5700272 1625640 5700288 1625848 5700312 1626200 5699080 -1625704 5700272 1625848 5700312 1626200 5699080 1626016 5699032 -1627384 5719672 1625848 5700312 1625464 5700552 1623888 5702776 -1627384 5719672 1625848 5700312 1623888 5702776 1627336 5719640 -1627384 5719672 1627448 5719792 1625848 5700312 1623888 5702776 -1625848 5700312 1625640 5700288 1625464 5700552 1623888 5702776 -1625464 5700552 1623944 5702640 1623888 5702776 1625848 5700312 -1625464 5700552 1623840 5702400 1623944 5702640 1625848 5700312 -1625464 5700552 1623944 5702640 1625848 5700312 1625640 5700288 -1623888 5702776 1627384 5719672 1625848 5700312 1623944 5702640 -1627448 5719792 1626104 5700496 1625848 5700312 1627384 5719672 -1626104 5700496 1626344 5698984 1625848 5700312 1627384 5719672 -1625848 5700312 1623888 5702776 1627384 5719672 1626104 5700496 -1623888 5702776 1627336 5719640 1627384 5719672 1626104 5700496 -1623888 5702776 1623816 5702824 1627336 5719640 1626104 5700496 -1627384 5719672 1627448 5719792 1626104 5700496 1627336 5719640 -1625848 5700312 1623888 5702776 1626104 5700496 1626344 5698984 -1623888 5702776 1627336 5719640 1626104 5700496 1625848 5700312 -1627448 5719792 1626344 5698984 1626104 5700496 1627384 5719672 -1626344 5698984 1626104 5700496 1627448 5719792 1629944 5726576 -1627448 5719792 1626104 5700496 1627384 5719672 1627400 5719704 -1625848 5700312 1626104 5700496 1626344 5698984 1626320 5699032 -1625848 5700312 1626104 5700496 1626320 5699032 1626264 5699064 -1625848 5700312 1623888 5702776 1626104 5700496 1626264 5699064 -1626104 5700496 1627448 5719792 1626344 5698984 1626320 5699032 -1625848 5700312 1626104 5700496 1626264 5699064 1626200 5699080 -1626104 5700496 1626320 5699032 1626264 5699064 1626200 5699080 -1625848 5700312 1623888 5702776 1626104 5700496 1626200 5699080 -1626104 5700496 1626344 5698984 1626320 5699032 1626264 5699064 -1625848 5700312 1626104 5700496 1626200 5699080 1625704 5700272 -1625848 5700312 1623944 5702640 1623888 5702776 1626104 5700496 -1625848 5700312 1623944 5702640 1626104 5700496 1626200 5699080 -1623888 5702776 1627336 5719640 1626104 5700496 1623944 5702640 -1625848 5700312 1625464 5700552 1623944 5702640 1626104 5700496 -1625464 5700552 1623840 5702400 1623944 5702640 1626104 5700496 -1625848 5700312 1625464 5700552 1626104 5700496 1626200 5699080 -1625848 5700312 1625640 5700288 1625464 5700552 1626104 5700496 -1623944 5702640 1623888 5702776 1626104 5700496 1625464 5700552 -1626104 5700496 1626200 5700576 1626344 5698984 1626320 5699032 -1626200 5700576 1627448 5719792 1626344 5698984 1626320 5699032 -1626104 5700496 1627448 5719792 1626200 5700576 1626320 5699032 -1627448 5719792 1626200 5700576 1626104 5700496 1627384 5719672 -1626104 5700496 1627336 5719640 1627384 5719672 1626200 5700576 -1626104 5700496 1623888 5702776 1627336 5719640 1626200 5700576 -1623888 5702776 1623816 5702824 1627336 5719640 1626200 5700576 -1627336 5719640 1627384 5719672 1626200 5700576 1623888 5702776 -1626104 5700496 1623944 5702640 1623888 5702776 1626200 5700576 -1623888 5702776 1627336 5719640 1626200 5700576 1623944 5702640 -1626200 5700576 1626320 5699032 1626104 5700496 1623944 5702640 -1627384 5719672 1627448 5719792 1626200 5700576 1627336 5719640 -1627448 5719792 1626344 5698984 1626200 5700576 1627384 5719672 -1626344 5698984 1626200 5700576 1627448 5719792 1629944 5726576 -1626344 5698984 1626320 5699032 1626200 5700576 1629944 5726576 -1626200 5700576 1627384 5719672 1627448 5719792 1629944 5726576 -1627448 5719792 1626200 5700576 1627384 5719672 1627400 5719704 -1627448 5719792 1629736 5726176 1629944 5726576 1626200 5700576 -1626344 5698984 1626200 5700576 1629944 5726576 1743800 5687320 -1626104 5700496 1626200 5700576 1626320 5699032 1626264 5699064 -1626104 5700496 1626200 5700576 1626264 5699064 1626200 5699080 -1626200 5700576 1626344 5698984 1626320 5699032 1626264 5699064 -1626104 5700496 1623944 5702640 1626200 5700576 1626264 5699064 -1626104 5700496 1625464 5700552 1623944 5702640 1626200 5700576 -1625464 5700552 1623840 5702400 1623944 5702640 1626200 5700576 -1623944 5702640 1623888 5702776 1626200 5700576 1625464 5700552 -1626104 5700496 1625464 5700552 1626200 5700576 1626264 5699064 -1626104 5700496 1625848 5700312 1625464 5700552 1626200 5700576 -1626200 5700576 1626264 5700656 1626344 5698984 1626320 5699032 -1626200 5700576 1626264 5700656 1626320 5699032 1626264 5699064 -1626200 5700576 1629944 5726576 1626264 5700656 1626320 5699032 -1626264 5700656 1629944 5726576 1626344 5698984 1626320 5699032 -1629944 5726576 1626264 5700656 1626200 5700576 1627448 5719792 -1629944 5726576 1626344 5698984 1626264 5700656 1627448 5719792 -1626264 5700656 1626320 5699032 1626200 5700576 1627448 5719792 -1626200 5700576 1627384 5719672 1627448 5719792 1626264 5700656 -1626200 5700576 1627336 5719640 1627384 5719672 1626264 5700656 -1626200 5700576 1623888 5702776 1627336 5719640 1626264 5700656 -1623888 5702776 1623816 5702824 1627336 5719640 1626264 5700656 -1626200 5700576 1623944 5702640 1623888 5702776 1626264 5700656 -1623888 5702776 1627336 5719640 1626264 5700656 1623944 5702640 -1626200 5700576 1625464 5700552 1623944 5702640 1626264 5700656 -1623944 5702640 1623888 5702776 1626264 5700656 1625464 5700552 -1625464 5700552 1623840 5702400 1623944 5702640 1626264 5700656 -1627336 5719640 1627384 5719672 1626264 5700656 1623888 5702776 -1626200 5700576 1625464 5700552 1626264 5700656 1626320 5699032 -1627384 5719672 1627448 5719792 1626264 5700656 1627336 5719640 -1627448 5719792 1629944 5726576 1626264 5700656 1627384 5719672 -1627384 5719672 1627400 5719704 1627448 5719792 1626264 5700656 -1629944 5726576 1626264 5700656 1627448 5719792 1629736 5726176 -1626344 5698984 1626264 5700656 1629944 5726576 1743800 5687320 -1626264 5700656 1627448 5719792 1629944 5726576 1743800 5687320 -1626344 5698984 1626320 5699032 1626264 5700656 1743800 5687320 -1629944 5726576 1743888 5687504 1743800 5687320 1626264 5700656 -1626344 5698984 1626264 5700656 1743800 5687320 1663944 5646256 -1626200 5700576 1626104 5700496 1625464 5700552 1626264 5700656 -1629944 5726576 1626280 5700680 1626264 5700656 1627448 5719792 -1626280 5700680 1743800 5687320 1626264 5700656 1627448 5719792 -1629944 5726576 1743800 5687320 1626280 5700680 1627448 5719792 -1626264 5700656 1627384 5719672 1627448 5719792 1626280 5700680 -1627448 5719792 1629944 5726576 1626280 5700680 1627384 5719672 -1626264 5700656 1627384 5719672 1626280 5700680 1743800 5687320 -1626264 5700656 1627336 5719640 1627384 5719672 1626280 5700680 -1626264 5700656 1627336 5719640 1626280 5700680 1743800 5687320 -1626264 5700656 1623888 5702776 1627336 5719640 1626280 5700680 -1623888 5702776 1623816 5702824 1627336 5719640 1626280 5700680 -1626264 5700656 1623888 5702776 1626280 5700680 1743800 5687320 -1626264 5700656 1623944 5702640 1623888 5702776 1626280 5700680 -1626264 5700656 1625464 5700552 1623944 5702640 1626280 5700680 -1626264 5700656 1625464 5700552 1626280 5700680 1743800 5687320 -1623944 5702640 1623888 5702776 1626280 5700680 1625464 5700552 -1625464 5700552 1623840 5702400 1623944 5702640 1626280 5700680 -1626264 5700656 1626200 5700576 1625464 5700552 1626280 5700680 -1623888 5702776 1627336 5719640 1626280 5700680 1623944 5702640 -1627336 5719640 1627384 5719672 1626280 5700680 1623888 5702776 -1627384 5719672 1627448 5719792 1626280 5700680 1627336 5719640 -1627384 5719672 1627400 5719704 1627448 5719792 1626280 5700680 -1629944 5726576 1626280 5700680 1627448 5719792 1629736 5726176 -1743800 5687320 1626280 5700680 1629944 5726576 1743888 5687504 -1626264 5700656 1626280 5700680 1743800 5687320 1626344 5698984 -1626264 5700656 1625464 5700552 1626280 5700680 1626344 5698984 -1626280 5700680 1629944 5726576 1743800 5687320 1626344 5698984 -1626264 5700656 1626280 5700680 1626344 5698984 1626320 5699032 -1626264 5700656 1625464 5700552 1626280 5700680 1626320 5699032 -1626264 5700656 1626280 5700680 1626320 5699032 1626200 5700576 -1743800 5687320 1663944 5646256 1626344 5698984 1626280 5700680 -1626280 5700680 1743800 5687320 1626344 5698984 1626320 5699032 -1627336 5719640 1626264 5700792 1623888 5702776 1623816 5702824 -1623888 5702776 1626264 5700792 1626280 5700680 1623944 5702640 -1626264 5700792 1627336 5719640 1626280 5700680 1623944 5702640 -1623888 5702776 1627336 5719640 1626264 5700792 1623944 5702640 -1626280 5700680 1625464 5700552 1623944 5702640 1626264 5700792 -1626280 5700680 1626264 5700656 1625464 5700552 1626264 5700792 -1626280 5700680 1626264 5700656 1626264 5700792 1627336 5719640 -1625464 5700552 1623944 5702640 1626264 5700792 1626264 5700656 -1625464 5700552 1623840 5702400 1623944 5702640 1626264 5700792 -1626264 5700656 1626200 5700576 1625464 5700552 1626264 5700792 -1626264 5700656 1626200 5700576 1626264 5700792 1626280 5700680 -1625464 5700552 1623944 5702640 1626264 5700792 1626200 5700576 -1623944 5702640 1623888 5702776 1626264 5700792 1625464 5700552 -1626280 5700680 1626264 5700792 1627336 5719640 1627384 5719672 -1626280 5700680 1626264 5700656 1626264 5700792 1627384 5719672 -1626264 5700792 1623888 5702776 1627336 5719640 1627384 5719672 -1626280 5700680 1626264 5700792 1627384 5719672 1627448 5719792 -1626280 5700680 1626264 5700792 1627448 5719792 1629944 5726576 -1626280 5700680 1626264 5700656 1626264 5700792 1629944 5726576 -1626280 5700680 1626264 5700792 1629944 5726576 1743800 5687320 -1626264 5700792 1627336 5719640 1627384 5719672 1627448 5719792 -1626264 5700792 1627384 5719672 1627448 5719792 1629944 5726576 -1627384 5719672 1627400 5719704 1627448 5719792 1626264 5700792 -1627448 5719792 1629736 5726176 1629944 5726576 1626264 5700792 -1626200 5700576 1626104 5700496 1625464 5700552 1626264 5700792 -1625464 5700552 1623944 5702640 1626264 5700792 1626104 5700496 -1626200 5700576 1626104 5700496 1626264 5700792 1626264 5700656 -1626104 5700496 1625848 5700312 1625464 5700552 1626264 5700792 -1625464 5700552 1626152 5700864 1626264 5700792 1626104 5700496 -1626152 5700864 1623944 5702640 1626264 5700792 1626104 5700496 -1623944 5702640 1626152 5700864 1625464 5700552 1623840 5702400 -1625464 5700552 1623944 5702640 1626152 5700864 1626104 5700496 -1626264 5700792 1626152 5700864 1623944 5702640 1623888 5702776 -1626264 5700792 1626104 5700496 1626152 5700864 1623888 5702776 -1626264 5700792 1626152 5700864 1623888 5702776 1627336 5719640 -1623888 5702776 1623816 5702824 1627336 5719640 1626152 5700864 -1626264 5700792 1626152 5700864 1627336 5719640 1627384 5719672 -1626264 5700792 1626104 5700496 1626152 5700864 1627336 5719640 -1626152 5700864 1625464 5700552 1623944 5702640 1623888 5702776 -1626152 5700864 1623944 5702640 1623888 5702776 1627336 5719640 -1625464 5700552 1626152 5700864 1626104 5700496 1625848 5700312 -1626264 5700792 1626200 5700576 1626104 5700496 1626152 5700864 -1626264 5700792 1626200 5700576 1626152 5700864 1627336 5719640 -1626104 5700496 1625464 5700552 1626152 5700864 1626200 5700576 -1626264 5700792 1626264 5700656 1626200 5700576 1626152 5700864 -1626264 5700792 1626280 5700680 1626264 5700656 1626152 5700864 -1626264 5700792 1626264 5700656 1626152 5700864 1627336 5719640 -1626200 5700576 1626104 5700496 1626152 5700864 1626264 5700656 -1626152 5700864 1625688 5700856 1623944 5702640 1623888 5702776 -1623944 5702640 1625688 5700856 1625464 5700552 1623840 5702400 -1625464 5700552 1623576 5701960 1623840 5702400 1625688 5700856 -1623840 5702400 1623944 5702640 1625688 5700856 1623576 5701960 -1625464 5700552 1625688 5700856 1626152 5700864 1626104 5700496 -1625688 5700856 1623944 5702640 1626152 5700864 1626104 5700496 -1626152 5700864 1626200 5700576 1626104 5700496 1625688 5700856 -1623944 5702640 1626152 5700864 1625688 5700856 1623840 5702400 -1625688 5700856 1626104 5700496 1625464 5700552 1623576 5701960 -1625464 5700552 1623408 5701720 1623576 5701960 1625688 5700856 -1625464 5700552 1625688 5700856 1626104 5700496 1625848 5700312 -1625688 5700856 1626152 5700864 1626104 5700496 1625848 5700312 -1625464 5700552 1623576 5701960 1625688 5700856 1625848 5700312 -1625464 5700552 1625688 5700856 1625848 5700312 1625640 5700288 -1625688 5700856 1625584 5700840 1623576 5701960 1623840 5702400 -1625688 5700856 1625584 5700840 1623840 5702400 1623944 5702640 -1625584 5700840 1623576 5701960 1623840 5702400 1623944 5702640 -1625688 5700856 1625584 5700840 1623944 5702640 1626152 5700864 -1625688 5700856 1625464 5700552 1625584 5700840 1623944 5702640 -1625464 5700552 1625584 5700840 1625688 5700856 1625848 5700312 -1625584 5700840 1625464 5700552 1623576 5701960 1623840 5702400 -1623576 5701960 1625584 5700840 1625464 5700552 1623408 5701720 -1625584 5700840 1625688 5700856 1625464 5700552 1623408 5701720 -1623576 5701960 1623840 5702400 1625584 5700840 1623408 5701720 -1625464 5700552 1623296 5701624 1623408 5701720 1625584 5700840 -1625464 5700552 1625472 5700768 1625584 5700840 1625688 5700856 -1623408 5701720 1625472 5700768 1625464 5700552 1623296 5701624 -1625584 5700840 1625472 5700768 1623408 5701720 1623576 5701960 -1625584 5700840 1625464 5700552 1625472 5700768 1623576 5701960 -1625584 5700840 1625472 5700768 1623576 5701960 1623840 5702400 -1625584 5700840 1625472 5700768 1623840 5702400 1623944 5702640 -1625584 5700840 1625464 5700552 1625472 5700768 1623840 5702400 -1625472 5700768 1625464 5700552 1623408 5701720 1623576 5701960 -1625472 5700768 1623408 5701720 1623576 5701960 1623840 5702400 -1625472 5700768 1625440 5700736 1623408 5701720 1623576 5701960 -1625472 5700768 1625464 5700552 1625440 5700736 1623576 5701960 -1623408 5701720 1625440 5700736 1625464 5700552 1623296 5701624 -1625464 5700552 1623192 5701576 1623296 5701624 1625440 5700736 -1625472 5700768 1625440 5700736 1623576 5701960 1623840 5702400 -1625464 5700552 1625440 5700736 1625472 5700768 1625584 5700840 -1625440 5700736 1623296 5701624 1623408 5701720 1623576 5701960 -1625440 5700736 1625472 5700768 1625464 5700552 1623296 5701624 -1623296 5701624 1625432 5700712 1625464 5700552 1623192 5701576 -1625440 5700736 1625432 5700712 1623296 5701624 1623408 5701720 -1625432 5700712 1625464 5700552 1623296 5701624 1623408 5701720 -1625440 5700736 1625432 5700712 1623408 5701720 1623576 5701960 -1625440 5700736 1625464 5700552 1625432 5700712 1623408 5701720 -1625464 5700552 1625432 5700712 1625440 5700736 1625472 5700768 -1625464 5700552 1623296 5701624 1625432 5700712 1625472 5700768 -1625464 5700552 1625432 5700712 1625472 5700768 1625584 5700840 -1625432 5700712 1623408 5701720 1625440 5700736 1625472 5700768 -1625432 5700712 1625448 5700568 1623296 5701624 1623408 5701720 -1625464 5700552 1625448 5700568 1625432 5700712 1625472 5700768 -1623296 5701624 1625448 5700568 1625464 5700552 1623192 5701576 -1623296 5701624 1625432 5700712 1625448 5700568 1623192 5701576 -1625448 5700568 1625432 5700712 1625464 5700552 1623192 5701576 -1625464 5700552 1625032 5698608 1623192 5701576 1625448 5700568 -1625032 5698608 1623016 5701528 1623192 5701576 1625448 5700568 -1625464 5700552 1625104 5698680 1625032 5698608 1625448 5700568 -1623192 5701576 1623296 5701624 1625448 5700568 1625032 5698608 -1625464 5700552 1625176 5698752 1625104 5698680 1625448 5700568 -1625104 5698680 1625032 5698608 1625448 5700568 1625176 5698752 -1625464 5700552 1625640 5700288 1625176 5698752 1625448 5700568 -1625640 5700288 1625328 5698848 1625176 5698752 1625448 5700568 -1625176 5698752 1625104 5698680 1625448 5700568 1625640 5700288 -1625464 5700552 1625640 5700288 1625448 5700568 1625432 5700712 -1625032 5698608 1623192 5701576 1625448 5700568 1625104 5698680 -1625472 5700768 1625216 5700952 1623840 5702400 1625584 5700840 -1623840 5702400 1623944 5702640 1625584 5700840 1625216 5700952 -1625472 5700768 1623576 5701960 1625216 5700952 1625584 5700840 -1623944 5702640 1625688 5700856 1625584 5700840 1625216 5700952 -1623944 5702640 1625688 5700856 1625216 5700952 1623840 5702400 -1623944 5702640 1626152 5700864 1625688 5700856 1625216 5700952 -1625584 5700840 1625472 5700768 1625216 5700952 1625688 5700856 -1623576 5701960 1625216 5700952 1625472 5700768 1625440 5700736 -1625216 5700952 1625584 5700840 1625472 5700768 1625440 5700736 -1623576 5701960 1623840 5702400 1625216 5700952 1625440 5700736 -1623576 5701960 1625216 5700952 1625440 5700736 1623408 5701720 -1623576 5701960 1623840 5702400 1625216 5700952 1623408 5701720 -1625216 5700952 1625472 5700768 1625440 5700736 1623408 5701720 -1625216 5700952 1623576 5701960 1623840 5702400 1623944 5702640 -1625440 5700736 1625432 5700712 1623408 5701720 1625216 5700952 -1623408 5701720 1623576 5701960 1625216 5700952 1625432 5700712 -1625432 5700712 1623296 5701624 1623408 5701720 1625216 5700952 -1625432 5700712 1625448 5700568 1623296 5701624 1625216 5700952 -1625448 5700568 1623192 5701576 1623296 5701624 1625216 5700952 -1625448 5700568 1623192 5701576 1625216 5700952 1625432 5700712 -1623408 5701720 1623576 5701960 1625216 5700952 1623296 5701624 -1625448 5700568 1625032 5698608 1623192 5701576 1625216 5700952 -1625448 5700568 1625032 5698608 1625216 5700952 1625432 5700712 -1623192 5701576 1623296 5701624 1625216 5700952 1625032 5698608 -1625032 5698608 1623016 5701528 1623192 5701576 1625216 5700952 -1623296 5701624 1623408 5701720 1625216 5700952 1623192 5701576 -1625440 5700736 1625432 5700712 1625216 5700952 1625472 5700768 -1625432 5700712 1625448 5700568 1625216 5700952 1625440 5700736 -1625448 5700568 1625104 5698680 1625032 5698608 1625216 5700952 -1625448 5700568 1625104 5698680 1625216 5700952 1625432 5700712 -1625448 5700568 1625176 5698752 1625104 5698680 1625216 5700952 -1625032 5698608 1623192 5701576 1625216 5700952 1625104 5698680 -1623944 5702640 1625320 5700968 1625216 5700952 1623840 5702400 -1625216 5700952 1625320 5700968 1625688 5700856 1625584 5700840 -1625320 5700968 1623944 5702640 1625688 5700856 1625584 5700840 -1625216 5700952 1623944 5702640 1625320 5700968 1625584 5700840 -1625688 5700856 1625320 5700968 1623944 5702640 1626152 5700864 -1623944 5702640 1623888 5702776 1626152 5700864 1625320 5700968 -1625688 5700856 1625584 5700840 1625320 5700968 1626152 5700864 -1625320 5700968 1625216 5700952 1623944 5702640 1626152 5700864 -1625216 5700952 1625320 5700968 1625584 5700840 1625472 5700768 -1625216 5700952 1625320 5700968 1625472 5700768 1625440 5700736 -1625216 5700952 1623944 5702640 1625320 5700968 1625440 5700736 -1625320 5700968 1625688 5700856 1625584 5700840 1625472 5700768 -1625320 5700968 1625584 5700840 1625472 5700768 1625440 5700736 -1625216 5700952 1625320 5700968 1625440 5700736 1625432 5700712 -1626152 5700864 1625448 5701040 1623944 5702640 1623888 5702776 -1623944 5702640 1625448 5701040 1625320 5700968 1625216 5700952 -1623944 5702640 1625448 5701040 1625216 5700952 1623840 5702400 -1625448 5701040 1626152 5700864 1625320 5700968 1625216 5700952 -1625448 5701040 1625320 5700968 1625216 5700952 1623840 5702400 -1625320 5700968 1625448 5701040 1626152 5700864 1625688 5700856 -1625320 5700968 1625448 5701040 1625688 5700856 1625584 5700840 -1625320 5700968 1625216 5700952 1625448 5701040 1625584 5700840 -1625320 5700968 1625448 5701040 1625584 5700840 1625472 5700768 -1625448 5701040 1625688 5700856 1625584 5700840 1625472 5700768 -1625320 5700968 1625216 5700952 1625448 5701040 1625472 5700768 -1625448 5701040 1626152 5700864 1625688 5700856 1625584 5700840 -1625320 5700968 1625448 5701040 1625472 5700768 1625440 5700736 -1623944 5702640 1626152 5700864 1625448 5701040 1623840 5702400 -1625216 5700952 1623576 5701960 1623840 5702400 1625448 5701040 -1625448 5701040 1623944 5702640 1626152 5700864 1625688 5700856 -1626152 5700864 1625568 5701176 1623944 5702640 1623888 5702776 -1626152 5700864 1625568 5701176 1623888 5702776 1627336 5719640 -1623944 5702640 1625568 5701176 1625448 5701040 1623840 5702400 -1625448 5701040 1625216 5700952 1623840 5702400 1625568 5701176 -1625448 5701040 1625320 5700968 1625216 5700952 1625568 5701176 -1623840 5702400 1623944 5702640 1625568 5701176 1625216 5700952 -1626152 5700864 1625448 5701040 1625568 5701176 1623888 5702776 -1625568 5701176 1623840 5702400 1623944 5702640 1623888 5702776 -1625216 5700952 1623576 5701960 1623840 5702400 1625568 5701176 -1625448 5701040 1625568 5701176 1626152 5700864 1625688 5700856 -1625448 5701040 1625568 5701176 1625688 5700856 1625584 5700840 -1625568 5701176 1623888 5702776 1626152 5700864 1625688 5700856 -1625568 5701176 1625688 5700856 1625448 5701040 1625216 5700952 -1623888 5702776 1625616 5701256 1625568 5701176 1623944 5702640 -1626152 5700864 1625616 5701256 1623888 5702776 1627336 5719640 -1623888 5702776 1623816 5702824 1627336 5719640 1625616 5701256 -1626152 5700864 1625616 5701256 1627336 5719640 1626264 5700792 -1627336 5719640 1627384 5719672 1626264 5700792 1625616 5701256 -1625616 5701256 1623888 5702776 1627336 5719640 1626264 5700792 -1625568 5701176 1625616 5701256 1626152 5700864 1625688 5700856 -1625616 5701256 1625688 5700856 1625568 5701176 1623944 5702640 -1625568 5701176 1623840 5702400 1623944 5702640 1625616 5701256 -1623944 5702640 1623888 5702776 1625616 5701256 1623840 5702400 -1625568 5701176 1625216 5700952 1623840 5702400 1625616 5701256 -1625568 5701176 1625448 5701040 1625216 5700952 1625616 5701256 -1625568 5701176 1625216 5700952 1625616 5701256 1625688 5700856 -1623840 5702400 1623944 5702640 1625616 5701256 1625216 5700952 -1626152 5700864 1625688 5700856 1625616 5701256 1626264 5700792 -1623888 5702776 1627336 5719640 1625616 5701256 1623944 5702640 -1625216 5700952 1623576 5701960 1623840 5702400 1625616 5701256 -1625568 5701176 1625616 5701256 1625688 5700856 1625448 5701040 -1627336 5719640 1625592 5701352 1623888 5702776 1623816 5702824 -1625616 5701256 1625592 5701352 1627336 5719640 1626264 5700792 -1627336 5719640 1627384 5719672 1626264 5700792 1625592 5701352 -1625616 5701256 1625592 5701352 1626264 5700792 1626152 5700864 -1625592 5701352 1627336 5719640 1626264 5700792 1626152 5700864 -1625616 5701256 1625592 5701352 1626152 5700864 1625688 5700856 -1625616 5701256 1623888 5702776 1625592 5701352 1626152 5700864 -1623888 5702776 1625592 5701352 1625616 5701256 1623944 5702640 -1625616 5701256 1623840 5702400 1623944 5702640 1625592 5701352 -1625616 5701256 1625216 5700952 1623840 5702400 1625592 5701352 -1623840 5702400 1623944 5702640 1625592 5701352 1625216 5700952 -1625616 5701256 1625568 5701176 1625216 5700952 1625592 5701352 -1625568 5701176 1625448 5701040 1625216 5700952 1625592 5701352 -1625448 5701040 1625320 5700968 1625216 5700952 1625592 5701352 -1625568 5701176 1625448 5701040 1625592 5701352 1625616 5701256 -1625216 5700952 1623840 5702400 1625592 5701352 1625448 5701040 -1625592 5701352 1626152 5700864 1625616 5701256 1625568 5701176 -1623944 5702640 1623888 5702776 1625592 5701352 1623840 5702400 -1625592 5701352 1623888 5702776 1627336 5719640 1626264 5700792 -1623888 5702776 1627336 5719640 1625592 5701352 1623944 5702640 -1625216 5700952 1623576 5701960 1623840 5702400 1625592 5701352 -1627336 5719640 1625520 5701424 1623888 5702776 1623816 5702824 -1625592 5701352 1625520 5701424 1627336 5719640 1626264 5700792 -1627336 5719640 1627384 5719672 1626264 5700792 1625520 5701424 -1625592 5701352 1625520 5701424 1626264 5700792 1626152 5700864 -1625592 5701352 1623888 5702776 1625520 5701424 1626264 5700792 -1623888 5702776 1625520 5701424 1625592 5701352 1623944 5702640 -1625592 5701352 1623840 5702400 1623944 5702640 1625520 5701424 -1625592 5701352 1625216 5700952 1623840 5702400 1625520 5701424 -1625592 5701352 1625448 5701040 1625216 5700952 1625520 5701424 -1625592 5701352 1625568 5701176 1625448 5701040 1625520 5701424 -1625216 5700952 1623840 5702400 1625520 5701424 1625448 5701040 -1625448 5701040 1625320 5700968 1625216 5700952 1625520 5701424 -1625216 5700952 1623840 5702400 1625520 5701424 1625320 5700968 -1625592 5701352 1625616 5701256 1625568 5701176 1625520 5701424 -1625448 5701040 1625320 5700968 1625520 5701424 1625568 5701176 -1623840 5702400 1623944 5702640 1625520 5701424 1625216 5700952 -1625520 5701424 1626264 5700792 1625592 5701352 1625568 5701176 -1623944 5702640 1623888 5702776 1625520 5701424 1623840 5702400 -1625520 5701424 1623888 5702776 1627336 5719640 1626264 5700792 -1623888 5702776 1627336 5719640 1625520 5701424 1623944 5702640 -1625216 5700952 1623576 5701960 1623840 5702400 1625520 5701424 -1623944 5702640 1624952 5701864 1625520 5701424 1623840 5702400 -1625520 5701424 1625216 5700952 1623840 5702400 1624952 5701864 -1625520 5701424 1625320 5700968 1625216 5700952 1624952 5701864 -1623840 5702400 1623944 5702640 1624952 5701864 1625216 5700952 -1624952 5701864 1623888 5702776 1625520 5701424 1625216 5700952 -1625520 5701424 1624952 5701864 1623888 5702776 1627336 5719640 -1623888 5702776 1623816 5702824 1627336 5719640 1624952 5701864 -1625520 5701424 1624952 5701864 1627336 5719640 1626264 5700792 -1625520 5701424 1625216 5700952 1624952 5701864 1627336 5719640 -1624952 5701864 1623944 5702640 1623888 5702776 1627336 5719640 -1623944 5702640 1623888 5702776 1624952 5701864 1623840 5702400 -1625216 5700952 1623576 5701960 1623840 5702400 1624952 5701864 -1625216 5700952 1623408 5701720 1623576 5701960 1624952 5701864 -1625216 5700952 1623296 5701624 1623408 5701720 1624952 5701864 -1625216 5700952 1623408 5701720 1624952 5701864 1625520 5701424 -1623840 5702400 1623944 5702640 1624952 5701864 1623576 5701960 -1623576 5701960 1623840 5702400 1624952 5701864 1623408 5701720 -1624952 5701864 1624720 5701944 1623840 5702400 1623944 5702640 -1624952 5701864 1623576 5701960 1624720 5701944 1623944 5702640 -1624952 5701864 1624720 5701944 1623944 5702640 1623888 5702776 -1624720 5701944 1623840 5702400 1623944 5702640 1623888 5702776 -1624952 5701864 1624720 5701944 1623888 5702776 1627336 5719640 -1624952 5701864 1623576 5701960 1624720 5701944 1623888 5702776 -1624720 5701944 1623576 5701960 1623840 5702400 1623944 5702640 -1623576 5701960 1624720 5701944 1624952 5701864 1623408 5701720 -1623576 5701960 1623840 5702400 1624720 5701944 1623408 5701720 -1624952 5701864 1625216 5700952 1623408 5701720 1624720 5701944 -1625216 5700952 1623296 5701624 1623408 5701720 1624720 5701944 -1624952 5701864 1625520 5701424 1625216 5700952 1624720 5701944 -1624720 5701944 1623888 5702776 1624952 5701864 1625216 5700952 -1623408 5701720 1623576 5701960 1624720 5701944 1625216 5700952 -1623576 5701960 1624408 5702000 1624720 5701944 1623408 5701720 -1624408 5702000 1623840 5702400 1624720 5701944 1623408 5701720 -1623576 5701960 1623840 5702400 1624408 5702000 1623408 5701720 -1624720 5701944 1624408 5702000 1623840 5702400 1623944 5702640 -1624720 5701944 1623408 5701720 1624408 5702000 1623944 5702640 -1624408 5702000 1623576 5701960 1623840 5702400 1623944 5702640 -1624720 5701944 1624408 5702000 1623944 5702640 1623888 5702776 -1624720 5701944 1625216 5700952 1623408 5701720 1624408 5702000 -1624720 5701944 1625216 5700952 1624408 5702000 1623944 5702640 -1623408 5701720 1623576 5701960 1624408 5702000 1625216 5700952 -1624720 5701944 1624952 5701864 1625216 5700952 1624408 5702000 -1625216 5700952 1623296 5701624 1623408 5701720 1624408 5702000 -1624408 5702000 1624360 5701968 1623408 5701720 1623576 5701960 -1623408 5701720 1624360 5701968 1625216 5700952 1623296 5701624 -1624408 5702000 1625216 5700952 1624360 5701968 1623576 5701960 -1624408 5702000 1624360 5701968 1623576 5701960 1623840 5702400 -1624360 5701968 1623408 5701720 1623576 5701960 1623840 5702400 -1624408 5702000 1624360 5701968 1623840 5702400 1623944 5702640 -1624408 5702000 1625216 5700952 1624360 5701968 1623840 5702400 -1624360 5701968 1625216 5700952 1623408 5701720 1623576 5701960 -1625216 5700952 1624360 5701968 1624408 5702000 1624720 5701944 -1625216 5700952 1624360 5701968 1624720 5701944 1624952 5701864 -1625216 5700952 1623408 5701720 1624360 5701968 1624720 5701944 -1624360 5701968 1623840 5702400 1624408 5702000 1624720 5701944 -1623408 5701720 1624328 5701880 1625216 5700952 1623296 5701624 -1625216 5700952 1624328 5701880 1624360 5701968 1624720 5701944 -1625216 5700952 1624328 5701880 1624720 5701944 1624952 5701864 -1624328 5701880 1624360 5701968 1624720 5701944 1624952 5701864 -1623408 5701720 1624360 5701968 1624328 5701880 1623296 5701624 -1624328 5701880 1624952 5701864 1625216 5700952 1623296 5701624 -1624360 5701968 1624328 5701880 1623408 5701720 1623576 5701960 -1624360 5701968 1624328 5701880 1623576 5701960 1623840 5702400 -1624328 5701880 1623296 5701624 1623408 5701720 1623576 5701960 -1624360 5701968 1624328 5701880 1623840 5702400 1624408 5702000 -1624328 5701880 1623408 5701720 1623576 5701960 1623840 5702400 -1624328 5701880 1623840 5702400 1624360 5701968 1624720 5701944 -1625216 5700952 1624328 5701880 1624952 5701864 1625520 5701424 -1625216 5700952 1623192 5701576 1623296 5701624 1624328 5701880 -1624360 5701968 1624408 5702000 1624720 5701944 1624328 5701880 -1624720 5701944 1624952 5701864 1624328 5701880 1624408 5702000 -1624360 5701968 1624408 5702000 1624328 5701880 1623840 5702400 -1624328 5701880 1624304 5701504 1623296 5701624 1623408 5701720 -1624328 5701880 1624304 5701504 1623408 5701720 1623576 5701960 -1624304 5701504 1623296 5701624 1623408 5701720 1623576 5701960 -1624328 5701880 1625216 5700952 1624304 5701504 1623576 5701960 -1625216 5700952 1624304 5701504 1624328 5701880 1624952 5701864 -1624328 5701880 1624720 5701944 1624952 5701864 1624304 5701504 -1624328 5701880 1624408 5702000 1624720 5701944 1624304 5701504 -1624304 5701504 1623576 5701960 1624328 5701880 1624720 5701944 -1624952 5701864 1625216 5700952 1624304 5701504 1624720 5701944 -1624328 5701880 1624304 5701504 1623576 5701960 1623840 5702400 -1624304 5701504 1625216 5700952 1623296 5701624 1623408 5701720 -1625216 5700952 1623296 5701624 1624304 5701504 1624952 5701864 -1625216 5700952 1624304 5701504 1624952 5701864 1625520 5701424 -1623296 5701624 1624304 5701504 1625216 5700952 1623192 5701576 -1625216 5700952 1625032 5698608 1623192 5701576 1624304 5701504 -1625032 5698608 1623016 5701528 1623192 5701576 1624304 5701504 -1623296 5701624 1623408 5701720 1624304 5701504 1623192 5701576 -1624304 5701504 1624952 5701864 1625216 5700952 1625032 5698608 -1625216 5700952 1625104 5698680 1625032 5698608 1624304 5701504 -1625032 5698608 1623192 5701576 1624304 5701504 1625104 5698680 -1625216 5700952 1625104 5698680 1624304 5701504 1624952 5701864 -1623192 5701576 1623296 5701624 1624304 5701504 1625032 5698608 -1625216 5700952 1625448 5700568 1625104 5698680 1624304 5701504 -1625216 5700952 1625432 5700712 1625448 5700568 1624304 5701504 -1625448 5700568 1625176 5698752 1625104 5698680 1624304 5701504 -1625216 5700952 1625448 5700568 1624304 5701504 1624952 5701864 -1625104 5698680 1625032 5698608 1624304 5701504 1625448 5700568 -1625032 5698608 1624224 5701288 1624304 5701504 1625104 5698680 -1623192 5701576 1624224 5701288 1625032 5698608 1623016 5701528 -1624224 5701288 1623192 5701576 1624304 5701504 1625104 5698680 -1623192 5701576 1624304 5701504 1624224 5701288 1623016 5701528 -1624304 5701504 1625448 5700568 1625104 5698680 1624224 5701288 -1625104 5698680 1625032 5698608 1624224 5701288 1625448 5700568 -1625448 5700568 1625176 5698752 1625104 5698680 1624224 5701288 -1625104 5698680 1625032 5698608 1624224 5701288 1625176 5698752 -1624304 5701504 1625448 5700568 1624224 5701288 1623192 5701576 -1625448 5700568 1625176 5698752 1624224 5701288 1624304 5701504 -1624304 5701504 1624224 5701288 1623192 5701576 1623296 5701624 -1624304 5701504 1624224 5701288 1623296 5701624 1623408 5701720 -1624304 5701504 1624224 5701288 1623408 5701720 1623576 5701960 -1624304 5701504 1625448 5700568 1624224 5701288 1623408 5701720 -1624224 5701288 1623016 5701528 1623192 5701576 1623296 5701624 -1624224 5701288 1623192 5701576 1623296 5701624 1623408 5701720 -1625032 5698608 1623648 5697496 1623016 5701528 1624224 5701288 -1625448 5700568 1625640 5700288 1625176 5698752 1624224 5701288 -1625032 5698608 1623016 5701528 1624224 5701288 1625104 5698680 -1624304 5701504 1625216 5700952 1625448 5700568 1624224 5701288 -1625216 5700952 1625432 5700712 1625448 5700568 1624224 5701288 -1624304 5701504 1625216 5700952 1624224 5701288 1623408 5701720 -1624304 5701504 1624952 5701864 1625216 5700952 1624224 5701288 -1625448 5700568 1625176 5698752 1624224 5701288 1625216 5700952 -1624224 5701288 1624224 5701208 1623016 5701528 1623192 5701576 -1624224 5701288 1624224 5701208 1623192 5701576 1623296 5701624 -1624224 5701208 1623016 5701528 1623192 5701576 1623296 5701624 -1624224 5701288 1625032 5698608 1624224 5701208 1623296 5701624 -1624224 5701288 1624224 5701208 1623296 5701624 1623408 5701720 -1623016 5701528 1624224 5701208 1625032 5698608 1623648 5697496 -1623016 5701528 1624224 5701208 1623648 5697496 1622880 5701536 -1625032 5698608 1623672 5697496 1623648 5697496 1624224 5701208 -1625032 5698608 1624224 5701208 1624224 5701288 1625104 5698680 -1624224 5701288 1625176 5698752 1625104 5698680 1624224 5701208 -1624224 5701288 1625448 5700568 1625176 5698752 1624224 5701208 -1625176 5698752 1625104 5698680 1624224 5701208 1625448 5700568 -1624224 5701208 1623296 5701624 1624224 5701288 1625448 5700568 -1624224 5701288 1625216 5700952 1625448 5700568 1624224 5701208 -1625216 5700952 1625432 5700712 1625448 5700568 1624224 5701208 -1625448 5700568 1625176 5698752 1624224 5701208 1625216 5700952 -1624224 5701288 1625216 5700952 1624224 5701208 1623296 5701624 -1625448 5700568 1625640 5700288 1625176 5698752 1624224 5701208 -1625104 5698680 1625032 5698608 1624224 5701208 1625176 5698752 -1624224 5701208 1623648 5697496 1623016 5701528 1623192 5701576 -1624224 5701208 1625104 5698680 1625032 5698608 1623648 5697496 -1624224 5701288 1624304 5701504 1625216 5700952 1624224 5701208 -1624304 5701504 1624952 5701864 1625216 5700952 1624224 5701208 -1624224 5701288 1624304 5701504 1624224 5701208 1623296 5701624 -1625216 5700952 1625448 5700568 1624224 5701208 1624304 5701504 -1624224 5701208 1624288 5701080 1625176 5698752 1625104 5698680 -1625448 5700568 1624288 5701080 1624224 5701208 1625216 5700952 -1625448 5700568 1624288 5701080 1625216 5700952 1625432 5700712 -1625448 5700568 1625176 5698752 1624288 5701080 1625216 5700952 -1624224 5701208 1624304 5701504 1625216 5700952 1624288 5701080 -1625216 5700952 1625448 5700568 1624288 5701080 1624304 5701504 -1624304 5701504 1624952 5701864 1625216 5700952 1624288 5701080 -1625176 5698752 1624288 5701080 1625448 5700568 1625640 5700288 -1624224 5701208 1624288 5701080 1625104 5698680 1625032 5698608 -1624288 5701080 1625176 5698752 1625104 5698680 1625032 5698608 -1624224 5701208 1624304 5701504 1624288 5701080 1625032 5698608 -1624224 5701208 1624288 5701080 1625032 5698608 1623648 5697496 -1625032 5698608 1623672 5697496 1623648 5697496 1624288 5701080 -1624224 5701208 1624288 5701080 1623648 5697496 1623016 5701528 -1623648 5697496 1622880 5701536 1623016 5701528 1624288 5701080 -1624288 5701080 1625104 5698680 1625032 5698608 1623648 5697496 -1624224 5701208 1624288 5701080 1623016 5701528 1623192 5701576 -1624224 5701208 1624288 5701080 1623192 5701576 1623296 5701624 -1624288 5701080 1623648 5697496 1623016 5701528 1623192 5701576 -1624224 5701208 1624304 5701504 1624288 5701080 1623192 5701576 -1624288 5701080 1625032 5698608 1623648 5697496 1623016 5701528 -1624288 5701080 1625448 5700568 1625176 5698752 1625104 5698680 -1624224 5701208 1624224 5701288 1624304 5701504 1624288 5701080 -1624304 5701504 1625216 5700952 1624288 5701080 1624224 5701288 -1624224 5701208 1624224 5701288 1624288 5701080 1623192 5701576 -1625448 5700568 1624344 5701024 1624288 5701080 1625216 5700952 -1625448 5700568 1624344 5701024 1625216 5700952 1625432 5700712 -1624344 5701024 1625176 5698752 1624288 5701080 1625216 5700952 -1625448 5700568 1625176 5698752 1624344 5701024 1625216 5700952 -1624288 5701080 1624304 5701504 1625216 5700952 1624344 5701024 -1624288 5701080 1624304 5701504 1624344 5701024 1625176 5698752 -1625216 5700952 1625448 5700568 1624344 5701024 1624304 5701504 -1624304 5701504 1624952 5701864 1625216 5700952 1624344 5701024 -1624288 5701080 1624224 5701288 1624304 5701504 1624344 5701024 -1624288 5701080 1624224 5701288 1624344 5701024 1625176 5698752 -1624304 5701504 1625216 5700952 1624344 5701024 1624224 5701288 -1625176 5698752 1624344 5701024 1625448 5700568 1625640 5700288 -1624288 5701080 1624344 5701024 1625176 5698752 1625104 5698680 -1624288 5701080 1624344 5701024 1625104 5698680 1625032 5698608 -1624288 5701080 1624224 5701288 1624344 5701024 1625032 5698608 -1624344 5701024 1625448 5700568 1625176 5698752 1625104 5698680 -1624288 5701080 1624344 5701024 1625032 5698608 1623648 5697496 -1624344 5701024 1625104 5698680 1625032 5698608 1623648 5697496 -1624288 5701080 1624224 5701288 1624344 5701024 1623648 5697496 -1625032 5698608 1623672 5697496 1623648 5697496 1624344 5701024 -1624288 5701080 1624344 5701024 1623648 5697496 1623016 5701528 -1623648 5697496 1622880 5701536 1623016 5701528 1624344 5701024 -1624288 5701080 1624224 5701288 1624344 5701024 1623016 5701528 -1624288 5701080 1624344 5701024 1623016 5701528 1623192 5701576 -1624344 5701024 1625032 5698608 1623648 5697496 1623016 5701528 -1624344 5701024 1625176 5698752 1625104 5698680 1625032 5698608 -1624288 5701080 1624224 5701208 1624224 5701288 1624344 5701024 -1624344 5701024 1624408 5700984 1625176 5698752 1625104 5698680 -1624408 5700984 1625448 5700568 1625176 5698752 1625104 5698680 -1624344 5701024 1625448 5700568 1624408 5700984 1625104 5698680 -1625448 5700568 1624408 5700984 1624344 5701024 1625216 5700952 -1625448 5700568 1625176 5698752 1624408 5700984 1625216 5700952 -1625448 5700568 1624408 5700984 1625216 5700952 1625432 5700712 -1624344 5701024 1624304 5701504 1625216 5700952 1624408 5700984 -1624408 5700984 1625104 5698680 1624344 5701024 1624304 5701504 -1625216 5700952 1625448 5700568 1624408 5700984 1624304 5701504 -1624344 5701024 1624224 5701288 1624304 5701504 1624408 5700984 -1624304 5701504 1625216 5700952 1624408 5700984 1624224 5701288 -1624344 5701024 1624224 5701288 1624408 5700984 1625104 5698680 -1624304 5701504 1624952 5701864 1625216 5700952 1624408 5700984 -1624304 5701504 1624952 5701864 1624408 5700984 1624224 5701288 -1625216 5700952 1625448 5700568 1624408 5700984 1624952 5701864 -1624304 5701504 1624720 5701944 1624952 5701864 1624408 5700984 -1624952 5701864 1625520 5701424 1625216 5700952 1624408 5700984 -1624344 5701024 1624288 5701080 1624224 5701288 1624408 5700984 -1625176 5698752 1624408 5700984 1625448 5700568 1625640 5700288 -1624344 5701024 1624408 5700984 1625104 5698680 1625032 5698608 -1624344 5701024 1624408 5700984 1625032 5698608 1623648 5697496 -1624408 5700984 1625176 5698752 1625104 5698680 1625032 5698608 -1624344 5701024 1624224 5701288 1624408 5700984 1625032 5698608 -1624408 5700984 1624496 5700960 1625448 5700568 1625176 5698752 -1624408 5700984 1624496 5700960 1625176 5698752 1625104 5698680 -1624408 5700984 1625216 5700952 1624496 5700960 1625104 5698680 -1624496 5700960 1625448 5700568 1625176 5698752 1625104 5698680 -1624496 5700960 1625216 5700952 1625448 5700568 1625176 5698752 -1625448 5700568 1624496 5700960 1625216 5700952 1625432 5700712 -1624408 5700984 1624496 5700960 1625104 5698680 1625032 5698608 -1625216 5700952 1624496 5700960 1624408 5700984 1624952 5701864 -1624496 5700960 1625104 5698680 1624408 5700984 1624952 5701864 -1625216 5700952 1625448 5700568 1624496 5700960 1624952 5701864 -1624408 5700984 1624304 5701504 1624952 5701864 1624496 5700960 -1624408 5700984 1624304 5701504 1624496 5700960 1625104 5698680 -1624408 5700984 1624224 5701288 1624304 5701504 1624496 5700960 -1624408 5700984 1624224 5701288 1624496 5700960 1625104 5698680 -1624952 5701864 1625216 5700952 1624496 5700960 1624304 5701504 -1624304 5701504 1624720 5701944 1624952 5701864 1624496 5700960 -1624408 5700984 1624344 5701024 1624224 5701288 1624496 5700960 -1624408 5700984 1624344 5701024 1624496 5700960 1625104 5698680 -1624224 5701288 1624304 5701504 1624496 5700960 1624344 5701024 -1624304 5701504 1624952 5701864 1624496 5700960 1624224 5701288 -1625216 5700952 1624496 5700960 1624952 5701864 1625520 5701424 -1624344 5701024 1624288 5701080 1624224 5701288 1624496 5700960 -1625448 5700568 1625640 5700288 1625176 5698752 1624496 5700960 -1624496 5700960 1624824 5700984 1625216 5700952 1625448 5700568 -1624496 5700960 1624824 5700984 1625448 5700568 1625176 5698752 -1624496 5700960 1624952 5701864 1624824 5700984 1625448 5700568 -1624824 5700984 1624952 5701864 1625216 5700952 1625448 5700568 -1625216 5700952 1625432 5700712 1625448 5700568 1624824 5700984 -1624952 5701864 1624824 5700984 1624496 5700960 1624304 5701504 -1624824 5700984 1625448 5700568 1624496 5700960 1624304 5701504 -1624952 5701864 1625216 5700952 1624824 5700984 1624304 5701504 -1624952 5701864 1624824 5700984 1624304 5701504 1624720 5701944 -1624496 5700960 1624224 5701288 1624304 5701504 1624824 5700984 -1625216 5700952 1624824 5700984 1624952 5701864 1625520 5701424 -1625216 5700952 1625448 5700568 1624824 5700984 1625520 5701424 -1624824 5700984 1624304 5701504 1624952 5701864 1625520 5701424 -1625216 5700952 1624824 5700984 1625520 5701424 1625320 5700968 -1624824 5700984 1625064 5700936 1625448 5700568 1624496 5700960 -1625216 5700952 1625064 5700936 1624824 5700984 1625520 5701424 -1625064 5700936 1625448 5700568 1624824 5700984 1625520 5701424 -1625216 5700952 1625064 5700936 1625520 5701424 1625320 5700968 -1625448 5700568 1625064 5700936 1625216 5700952 1625432 5700712 -1625448 5700568 1624824 5700984 1625064 5700936 1625432 5700712 -1624824 5700984 1624952 5701864 1625520 5701424 1625064 5700936 -1625520 5701424 1625216 5700952 1625064 5700936 1624952 5701864 -1624824 5700984 1624952 5701864 1625064 5700936 1625448 5700568 -1624824 5700984 1624304 5701504 1624952 5701864 1625064 5700936 -1625216 5700952 1625432 5700712 1625064 5700936 1625520 5701424 -1625216 5700952 1625440 5700736 1625432 5700712 1625064 5700936 -1626280 5700680 1627968 5701176 1743800 5687320 1626344 5698984 -1629944 5726576 1627968 5701176 1626280 5700680 1626264 5700792 -1629944 5726576 1627968 5701176 1626264 5700792 1627448 5719792 -1627968 5701176 1626280 5700680 1626264 5700792 1627448 5719792 -1626280 5700680 1626264 5700792 1627968 5701176 1626344 5698984 -1626264 5700792 1627384 5719672 1627448 5719792 1627968 5701176 -1627448 5719792 1629944 5726576 1627968 5701176 1627384 5719672 -1626264 5700792 1627384 5719672 1627968 5701176 1626280 5700680 -1626264 5700792 1627336 5719640 1627384 5719672 1627968 5701176 -1626264 5700792 1627336 5719640 1627968 5701176 1626280 5700680 -1626264 5700792 1625520 5701424 1627336 5719640 1627968 5701176 -1626264 5700792 1625520 5701424 1627968 5701176 1626280 5700680 -1627336 5719640 1627384 5719672 1627968 5701176 1625520 5701424 -1627384 5719672 1627448 5719792 1627968 5701176 1627336 5719640 -1627384 5719672 1627400 5719704 1627448 5719792 1627968 5701176 -1629944 5726576 1627968 5701176 1627448 5719792 1629736 5726176 -1743800 5687320 1627968 5701176 1629944 5726576 1743888 5687504 -1626264 5700792 1625592 5701352 1625520 5701424 1627968 5701176 -1626264 5700792 1625592 5701352 1627968 5701176 1626280 5700680 -1625520 5701424 1627336 5719640 1627968 5701176 1625592 5701352 -1626264 5700792 1626152 5700864 1625592 5701352 1627968 5701176 -1626264 5700792 1626152 5700864 1627968 5701176 1626280 5700680 -1626152 5700864 1625616 5701256 1625592 5701352 1627968 5701176 -1625592 5701352 1625520 5701424 1627968 5701176 1626152 5700864 -1625520 5701424 1624952 5701864 1627336 5719640 1627968 5701176 -1625520 5701424 1624952 5701864 1627968 5701176 1625592 5701352 -1627336 5719640 1627384 5719672 1627968 5701176 1624952 5701864 -1627968 5701176 1629944 5726576 1743800 5687320 1626344 5698984 -1624952 5701864 1623888 5702776 1627336 5719640 1627968 5701176 -1623888 5702776 1623816 5702824 1627336 5719640 1627968 5701176 -1627336 5719640 1627384 5719672 1627968 5701176 1623888 5702776 -1624952 5701864 1623888 5702776 1627968 5701176 1625520 5701424 -1624952 5701864 1624720 5701944 1623888 5702776 1627968 5701176 -1629944 5726576 1743800 5687320 1627968 5701176 1627448 5719792 -1743800 5687320 1663944 5646256 1626344 5698984 1627968 5701176 -1626344 5698984 1626280 5700680 1627968 5701176 1663944 5646256 -1663944 5646256 1626296 5698872 1626344 5698984 1627968 5701176 -1626344 5698984 1626280 5700680 1627968 5701176 1626296 5698872 -1663944 5646256 1663880 5646248 1626296 5698872 1627968 5701176 -1626296 5698872 1626344 5698984 1627968 5701176 1663880 5646248 -1663880 5646248 1626248 5698816 1626296 5698872 1627968 5701176 -1743800 5687320 1664040 5646192 1663944 5646256 1627968 5701176 -1743800 5687320 1663944 5646256 1627968 5701176 1629944 5726576 -1663944 5646256 1663880 5646248 1627968 5701176 1743800 5687320 -1626280 5700680 1627968 5701176 1626344 5698984 1626320 5699032 -1627968 5701176 1626296 5698872 1626344 5698984 1626320 5699032 -1626280 5700680 1626264 5700792 1627968 5701176 1626320 5699032 -1626280 5700680 1627968 5701176 1626320 5699032 1626264 5700656 -1626280 5700680 1626264 5700792 1627968 5701176 1626264 5700656 -1626320 5699032 1626200 5700576 1626264 5700656 1627968 5701176 -1627968 5701176 1626344 5698984 1626320 5699032 1626264 5700656 -1743800 5687320 1628128 5701160 1629944 5726576 1743888 5687504 -1627968 5701176 1628128 5701160 1743800 5687320 1663944 5646256 -1628128 5701160 1629944 5726576 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1628128 5701160 -1629944 5726576 1628128 5701160 1627968 5701176 1627448 5719792 -1627968 5701176 1627384 5719672 1627448 5719792 1628128 5701160 -1629944 5726576 1743800 5687320 1628128 5701160 1627448 5719792 -1627968 5701176 1627336 5719640 1627384 5719672 1628128 5701160 -1627384 5719672 1627448 5719792 1628128 5701160 1627336 5719640 -1627968 5701176 1623888 5702776 1627336 5719640 1628128 5701160 -1623888 5702776 1623816 5702824 1627336 5719640 1628128 5701160 -1627336 5719640 1627384 5719672 1628128 5701160 1623888 5702776 -1627384 5719672 1627400 5719704 1627448 5719792 1628128 5701160 -1629944 5726576 1628128 5701160 1627448 5719792 1629736 5726176 -1627968 5701176 1624952 5701864 1623888 5702776 1628128 5701160 -1627448 5719792 1629944 5726576 1628128 5701160 1627384 5719672 -1627968 5701176 1623888 5702776 1628128 5701160 1663944 5646256 -1627968 5701176 1628128 5701160 1663944 5646256 1663880 5646248 -1627968 5701176 1628128 5701160 1663880 5646248 1626296 5698872 -1627968 5701176 1628128 5701160 1626296 5698872 1626344 5698984 -1627968 5701176 1628128 5701160 1626344 5698984 1626320 5699032 -1628128 5701160 1663880 5646248 1626296 5698872 1626344 5698984 -1663880 5646248 1626248 5698816 1626296 5698872 1628128 5701160 -1628128 5701160 1743800 5687320 1663944 5646256 1663880 5646248 -1627968 5701176 1623888 5702776 1628128 5701160 1626344 5698984 -1628128 5701160 1663944 5646256 1663880 5646248 1626296 5698872 -1628128 5701160 1628288 5701200 1743800 5687320 1663944 5646256 -1628128 5701160 1629944 5726576 1628288 5701200 1663944 5646256 -1629944 5726576 1628288 5701200 1628128 5701160 1627448 5719792 -1628288 5701200 1663944 5646256 1628128 5701160 1627448 5719792 -1628288 5701200 1629944 5726576 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1628288 5701200 -1629944 5726576 1628288 5701200 1627448 5719792 1629736 5726176 -1743800 5687320 1628288 5701200 1629944 5726576 1743888 5687504 -1628128 5701160 1628288 5701200 1663944 5646256 1663880 5646248 -1628288 5701200 1743800 5687320 1663944 5646256 1663880 5646248 -1628128 5701160 1627448 5719792 1628288 5701200 1663880 5646248 -1628128 5701160 1627384 5719672 1627448 5719792 1628288 5701200 -1628128 5701160 1627336 5719640 1627384 5719672 1628288 5701200 -1628128 5701160 1627336 5719640 1628288 5701200 1663880 5646248 -1627448 5719792 1629944 5726576 1628288 5701200 1627384 5719672 -1628128 5701160 1623888 5702776 1627336 5719640 1628288 5701200 -1623888 5702776 1623816 5702824 1627336 5719640 1628288 5701200 -1627336 5719640 1627384 5719672 1628288 5701200 1623888 5702776 -1628128 5701160 1623888 5702776 1628288 5701200 1663880 5646248 -1628128 5701160 1627968 5701176 1623888 5702776 1628288 5701200 -1628128 5701160 1627968 5701176 1628288 5701200 1663880 5646248 -1623888 5702776 1627336 5719640 1628288 5701200 1627968 5701176 -1627384 5719672 1627400 5719704 1627448 5719792 1628288 5701200 -1627968 5701176 1624952 5701864 1623888 5702776 1628288 5701200 -1627384 5719672 1627448 5719792 1628288 5701200 1627336 5719640 -1628128 5701160 1628288 5701200 1663880 5646248 1626296 5698872 -1628128 5701160 1627968 5701176 1628288 5701200 1626296 5698872 -1628128 5701160 1628288 5701200 1626296 5698872 1626344 5698984 -1628128 5701160 1627968 5701176 1628288 5701200 1626344 5698984 -1628128 5701160 1628288 5701200 1626344 5698984 1627968 5701176 -1663880 5646248 1626248 5698816 1626296 5698872 1628288 5701200 -1628288 5701200 1663944 5646256 1663880 5646248 1626296 5698872 -1628288 5701200 1663880 5646248 1626296 5698872 1626344 5698984 -1629944 5726576 1743800 5687320 1628288 5701200 1627448 5719792 -1628288 5701200 1628632 5701384 1743800 5687320 1663944 5646256 -1628288 5701200 1628632 5701384 1663944 5646256 1663880 5646248 -1628632 5701384 1743800 5687320 1663944 5646256 1663880 5646248 -1743800 5687320 1664040 5646192 1663944 5646256 1628632 5701384 -1743800 5687320 1628632 5701384 1629944 5726576 1743888 5687504 -1628288 5701200 1628632 5701384 1663880 5646248 1626296 5698872 -1628632 5701384 1663944 5646256 1663880 5646248 1626296 5698872 -1663880 5646248 1626248 5698816 1626296 5698872 1628632 5701384 -1628288 5701200 1628632 5701384 1626296 5698872 1626344 5698984 -1628288 5701200 1628632 5701384 1626344 5698984 1628128 5701160 -1628632 5701384 1663880 5646248 1626296 5698872 1626344 5698984 -1628288 5701200 1629944 5726576 1628632 5701384 1626344 5698984 -1629944 5726576 1628632 5701384 1628288 5701200 1627448 5719792 -1628288 5701200 1627384 5719672 1627448 5719792 1628632 5701384 -1627384 5719672 1627400 5719704 1627448 5719792 1628632 5701384 -1629944 5726576 1628632 5701384 1627448 5719792 1629736 5726176 -1628288 5701200 1627336 5719640 1627384 5719672 1628632 5701384 -1628288 5701200 1623888 5702776 1627336 5719640 1628632 5701384 -1623888 5702776 1623816 5702824 1627336 5719640 1628632 5701384 -1623816 5702824 1620552 5714440 1627336 5719640 1628632 5701384 -1623816 5702824 1620552 5714440 1628632 5701384 1623888 5702776 -1623816 5702824 1620512 5714368 1620552 5714440 1628632 5701384 -1623888 5702776 1623816 5702824 1628632 5701384 1628288 5701200 -1623888 5702776 1623848 5702776 1623816 5702824 1628632 5701384 -1627384 5719672 1627448 5719792 1628632 5701384 1627336 5719640 -1620552 5714440 1627312 5719640 1627336 5719640 1628632 5701384 -1628288 5701200 1627968 5701176 1623888 5702776 1628632 5701384 -1623888 5702776 1623816 5702824 1628632 5701384 1627968 5701176 -1628288 5701200 1628128 5701160 1627968 5701176 1628632 5701384 -1627968 5701176 1624952 5701864 1623888 5702776 1628632 5701384 -1623888 5702776 1623816 5702824 1628632 5701384 1624952 5701864 -1627968 5701176 1624952 5701864 1628632 5701384 1628288 5701200 -1627968 5701176 1625520 5701424 1624952 5701864 1628632 5701384 -1624952 5701864 1624720 5701944 1623888 5702776 1628632 5701384 -1627336 5719640 1627384 5719672 1628632 5701384 1620552 5714440 -1628632 5701384 1626344 5698984 1628288 5701200 1627968 5701176 -1627448 5719792 1629944 5726576 1628632 5701384 1627384 5719672 -1628632 5701384 1629944 5726576 1743800 5687320 1663944 5646256 -1629944 5726576 1743800 5687320 1628632 5701384 1627448 5719792 -1743800 5687320 1628712 5701448 1629944 5726576 1743888 5687504 -1628632 5701384 1628712 5701448 1743800 5687320 1663944 5646256 -1628632 5701384 1628712 5701448 1663944 5646256 1663880 5646248 -1628632 5701384 1628712 5701448 1663880 5646248 1626296 5698872 -1628712 5701448 1663944 5646256 1663880 5646248 1626296 5698872 -1663880 5646248 1626248 5698816 1626296 5698872 1628712 5701448 -1743800 5687320 1664040 5646192 1663944 5646256 1628712 5701448 -1628712 5701448 1629944 5726576 1743800 5687320 1663944 5646256 -1628632 5701384 1628712 5701448 1626296 5698872 1626344 5698984 -1628712 5701448 1743800 5687320 1663944 5646256 1663880 5646248 -1628632 5701384 1629944 5726576 1628712 5701448 1626296 5698872 -1629944 5726576 1628712 5701448 1628632 5701384 1627448 5719792 -1629944 5726576 1628712 5701448 1627448 5719792 1629736 5726176 -1628632 5701384 1627384 5719672 1627448 5719792 1628712 5701448 -1628632 5701384 1627336 5719640 1627384 5719672 1628712 5701448 -1627384 5719672 1627400 5719704 1627448 5719792 1628712 5701448 -1628632 5701384 1620552 5714440 1627336 5719640 1628712 5701448 -1628632 5701384 1623816 5702824 1620552 5714440 1628712 5701448 -1628632 5701384 1623888 5702776 1623816 5702824 1628712 5701448 -1623816 5702824 1620552 5714440 1628712 5701448 1623888 5702776 -1623816 5702824 1620512 5714368 1620552 5714440 1628712 5701448 -1628632 5701384 1624952 5701864 1623888 5702776 1628712 5701448 -1623888 5702776 1623816 5702824 1628712 5701448 1624952 5701864 -1623888 5702776 1623848 5702776 1623816 5702824 1628712 5701448 -1627336 5719640 1627384 5719672 1628712 5701448 1620552 5714440 -1620552 5714440 1627312 5719640 1627336 5719640 1628712 5701448 -1628632 5701384 1627968 5701176 1624952 5701864 1628712 5701448 -1624952 5701864 1623888 5702776 1628712 5701448 1627968 5701176 -1628632 5701384 1628288 5701200 1627968 5701176 1628712 5701448 -1627968 5701176 1625520 5701424 1624952 5701864 1628712 5701448 -1624952 5701864 1624720 5701944 1623888 5702776 1628712 5701448 -1620552 5714440 1627336 5719640 1628712 5701448 1623816 5702824 -1627384 5719672 1627448 5719792 1628712 5701448 1627336 5719640 -1628712 5701448 1626296 5698872 1628632 5701384 1627968 5701176 -1627448 5719792 1629944 5726576 1628712 5701448 1627384 5719672 -1629944 5726576 1743800 5687320 1628712 5701448 1627448 5719792 -1629944 5726576 1628712 5701600 1627448 5719792 1629736 5726176 -1627448 5719792 1628712 5701600 1628712 5701448 1627384 5719672 -1627448 5719792 1628712 5701600 1627384 5719672 1627400 5719704 -1628712 5701448 1627336 5719640 1627384 5719672 1628712 5701600 -1628712 5701448 1620552 5714440 1627336 5719640 1628712 5701600 -1620552 5714440 1627312 5719640 1627336 5719640 1628712 5701600 -1628712 5701448 1623816 5702824 1620552 5714440 1628712 5701600 -1628712 5701448 1623888 5702776 1623816 5702824 1628712 5701600 -1628712 5701448 1624952 5701864 1623888 5702776 1628712 5701600 -1623888 5702776 1623816 5702824 1628712 5701600 1624952 5701864 -1623816 5702824 1620512 5714368 1620552 5714440 1628712 5701600 -1628712 5701448 1627968 5701176 1624952 5701864 1628712 5701600 -1624952 5701864 1623888 5702776 1628712 5701600 1627968 5701176 -1623888 5702776 1623848 5702776 1623816 5702824 1628712 5701600 -1620552 5714440 1627336 5719640 1628712 5701600 1623816 5702824 -1627968 5701176 1625520 5701424 1624952 5701864 1628712 5701600 -1624952 5701864 1623888 5702776 1628712 5701600 1625520 5701424 -1627968 5701176 1625520 5701424 1628712 5701600 1628712 5701448 -1627968 5701176 1625592 5701352 1625520 5701424 1628712 5701600 -1628712 5701448 1628632 5701384 1627968 5701176 1628712 5701600 -1627968 5701176 1625520 5701424 1628712 5701600 1628632 5701384 -1628632 5701384 1628288 5701200 1627968 5701176 1628712 5701600 -1627968 5701176 1625520 5701424 1628712 5701600 1628288 5701200 -1628288 5701200 1628128 5701160 1627968 5701176 1628712 5701600 -1628632 5701384 1628288 5701200 1628712 5701600 1628712 5701448 -1624952 5701864 1624720 5701944 1623888 5702776 1628712 5701600 -1623816 5702824 1620552 5714440 1628712 5701600 1623888 5702776 -1627336 5719640 1627384 5719672 1628712 5701600 1620552 5714440 -1627384 5719672 1627448 5719792 1628712 5701600 1627336 5719640 -1628712 5701448 1628712 5701600 1629944 5726576 1743800 5687320 -1628712 5701448 1628712 5701600 1743800 5687320 1663944 5646256 -1629944 5726576 1743888 5687504 1743800 5687320 1628712 5701600 -1628712 5701600 1743800 5687320 1628712 5701448 1628632 5701384 -1628712 5701600 1627448 5719792 1629944 5726576 1743800 5687320 -1627448 5719792 1629944 5726576 1628712 5701600 1627384 5719672 -1620552 5714440 1628664 5701664 1623816 5702824 1620512 5714368 -1628712 5701600 1628664 5701664 1620552 5714440 1627336 5719640 -1620552 5714440 1627312 5719640 1627336 5719640 1628664 5701664 -1628664 5701664 1623816 5702824 1620552 5714440 1627336 5719640 -1623816 5702824 1628664 5701664 1628712 5701600 1623888 5702776 -1628712 5701600 1624952 5701864 1623888 5702776 1628664 5701664 -1628712 5701600 1625520 5701424 1624952 5701864 1628664 5701664 -1624952 5701864 1623888 5702776 1628664 5701664 1625520 5701424 -1623816 5702824 1628664 5701664 1623888 5702776 1623848 5702776 -1623816 5702824 1620552 5714440 1628664 5701664 1623888 5702776 -1628712 5701600 1627968 5701176 1625520 5701424 1628664 5701664 -1625520 5701424 1624952 5701864 1628664 5701664 1627968 5701176 -1628712 5701600 1628288 5701200 1627968 5701176 1628664 5701664 -1627968 5701176 1625592 5701352 1625520 5701424 1628664 5701664 -1628288 5701200 1628128 5701160 1627968 5701176 1628664 5701664 -1628712 5701600 1628632 5701384 1628288 5701200 1628664 5701664 -1628288 5701200 1627968 5701176 1628664 5701664 1628632 5701384 -1627968 5701176 1625520 5701424 1628664 5701664 1628288 5701200 -1628712 5701600 1628712 5701448 1628632 5701384 1628664 5701664 -1624952 5701864 1624720 5701944 1623888 5702776 1628664 5701664 -1623888 5702776 1623816 5702824 1628664 5701664 1624952 5701864 -1628712 5701600 1628664 5701664 1627336 5719640 1627384 5719672 -1628664 5701664 1620552 5714440 1627336 5719640 1627384 5719672 -1628712 5701600 1628664 5701664 1627384 5719672 1627448 5719792 -1628712 5701600 1628632 5701384 1628664 5701664 1627384 5719672 -1620552 5714440 1628552 5701744 1623816 5702824 1620512 5714368 -1628664 5701664 1628552 5701744 1620552 5714440 1627336 5719640 -1628664 5701664 1628552 5701744 1627336 5719640 1627384 5719672 -1620552 5714440 1627312 5719640 1627336 5719640 1628552 5701744 -1628552 5701744 1620552 5714440 1627336 5719640 1627384 5719672 -1628664 5701664 1623816 5702824 1628552 5701744 1627384 5719672 -1623816 5702824 1628552 5701744 1628664 5701664 1623888 5702776 -1623816 5702824 1628552 5701744 1623888 5702776 1623848 5702776 -1623816 5702824 1620552 5714440 1628552 5701744 1623888 5702776 -1628552 5701744 1627384 5719672 1628664 5701664 1623888 5702776 -1628552 5701744 1623816 5702824 1620552 5714440 1627336 5719640 -1628664 5701664 1624952 5701864 1623888 5702776 1628552 5701744 -1628664 5701664 1625520 5701424 1624952 5701864 1628552 5701744 -1628664 5701664 1627968 5701176 1625520 5701424 1628552 5701744 -1625520 5701424 1624952 5701864 1628552 5701744 1627968 5701176 -1627968 5701176 1625592 5701352 1625520 5701424 1628552 5701744 -1628664 5701664 1627968 5701176 1628552 5701744 1627384 5719672 -1623888 5702776 1623816 5702824 1628552 5701744 1624952 5701864 -1628664 5701664 1628288 5701200 1627968 5701176 1628552 5701744 -1627968 5701176 1625520 5701424 1628552 5701744 1628288 5701200 -1628664 5701664 1628632 5701384 1628288 5701200 1628552 5701744 -1628288 5701200 1628128 5701160 1627968 5701176 1628552 5701744 -1627968 5701176 1625520 5701424 1628552 5701744 1628128 5701160 -1628664 5701664 1628712 5701600 1628632 5701384 1628552 5701744 -1628664 5701664 1628632 5701384 1628552 5701744 1627384 5719672 -1628288 5701200 1628128 5701160 1628552 5701744 1628632 5701384 -1624952 5701864 1624720 5701944 1623888 5702776 1628552 5701744 -1624952 5701864 1623888 5702776 1628552 5701744 1625520 5701424 -1628664 5701664 1628552 5701744 1627384 5719672 1628712 5701600 -1625520 5701424 1628488 5701744 1628552 5701744 1627968 5701176 -1628552 5701744 1628128 5701160 1627968 5701176 1628488 5701744 -1627968 5701176 1625520 5701424 1628488 5701744 1628128 5701160 -1625520 5701424 1628488 5701744 1627968 5701176 1625592 5701352 -1628488 5701744 1628128 5701160 1627968 5701176 1625592 5701352 -1625520 5701424 1624952 5701864 1628488 5701744 1625592 5701352 -1628552 5701744 1628288 5701200 1628128 5701160 1628488 5701744 -1628128 5701160 1627968 5701176 1628488 5701744 1628288 5701200 -1628488 5701744 1624952 5701864 1628552 5701744 1628288 5701200 -1627968 5701176 1626152 5700864 1625592 5701352 1628488 5701744 -1628552 5701744 1628632 5701384 1628288 5701200 1628488 5701744 -1628552 5701744 1628664 5701664 1628632 5701384 1628488 5701744 -1628288 5701200 1628128 5701160 1628488 5701744 1628632 5701384 -1628664 5701664 1628712 5701600 1628632 5701384 1628488 5701744 -1628552 5701744 1628664 5701664 1628488 5701744 1624952 5701864 -1628632 5701384 1628288 5701200 1628488 5701744 1628664 5701664 -1628552 5701744 1628488 5701744 1624952 5701864 1623888 5702776 -1628488 5701744 1625520 5701424 1624952 5701864 1623888 5702776 -1628552 5701744 1628488 5701744 1623888 5702776 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1628488 5701744 -1628552 5701744 1628488 5701744 1623816 5702824 1620552 5714440 -1623816 5702824 1620512 5714368 1620552 5714440 1628488 5701744 -1628488 5701744 1623888 5702776 1623816 5702824 1620552 5714440 -1628552 5701744 1628488 5701744 1620552 5714440 1627336 5719640 -1628552 5701744 1628664 5701664 1628488 5701744 1620552 5714440 -1624952 5701864 1624720 5701944 1623888 5702776 1628488 5701744 -1628488 5701744 1624952 5701864 1623888 5702776 1623816 5702824 -1627968 5701176 1628320 5701688 1628488 5701744 1628128 5701160 -1628488 5701744 1628288 5701200 1628128 5701160 1628320 5701688 -1628128 5701160 1627968 5701176 1628320 5701688 1628288 5701200 -1628488 5701744 1628320 5701688 1625592 5701352 1625520 5701424 -1628320 5701688 1625520 5701424 1628488 5701744 1628288 5701200 -1628488 5701744 1628320 5701688 1625520 5701424 1624952 5701864 -1628320 5701688 1625592 5701352 1625520 5701424 1624952 5701864 -1628488 5701744 1628320 5701688 1624952 5701864 1623888 5702776 -1628488 5701744 1628288 5701200 1628320 5701688 1623888 5702776 -1628320 5701688 1625520 5701424 1624952 5701864 1623888 5702776 -1628320 5701688 1627968 5701176 1625592 5701352 1625520 5701424 -1628488 5701744 1628632 5701384 1628288 5701200 1628320 5701688 -1628288 5701200 1628128 5701160 1628320 5701688 1628632 5701384 -1628488 5701744 1628632 5701384 1628320 5701688 1623888 5702776 -1627968 5701176 1625592 5701352 1628320 5701688 1628128 5701160 -1625592 5701352 1628320 5701688 1627968 5701176 1626152 5700864 -1628488 5701744 1628664 5701664 1628632 5701384 1628320 5701688 -1624952 5701864 1624720 5701944 1623888 5702776 1628320 5701688 -1628488 5701744 1628320 5701688 1623888 5702776 1623816 5702824 -1628320 5701688 1628144 5701568 1625592 5701352 1625520 5701424 -1628320 5701688 1628144 5701568 1625520 5701424 1624952 5701864 -1628320 5701688 1628144 5701568 1624952 5701864 1623888 5702776 -1628144 5701568 1625592 5701352 1625520 5701424 1624952 5701864 -1628320 5701688 1627968 5701176 1628144 5701568 1624952 5701864 -1627968 5701176 1628144 5701568 1628320 5701688 1628128 5701160 -1628320 5701688 1628288 5701200 1628128 5701160 1628144 5701568 -1628320 5701688 1628632 5701384 1628288 5701200 1628144 5701568 -1628144 5701568 1624952 5701864 1628320 5701688 1628288 5701200 -1628128 5701160 1627968 5701176 1628144 5701568 1628288 5701200 -1628144 5701568 1627968 5701176 1625592 5701352 1625520 5701424 -1627968 5701176 1625592 5701352 1628144 5701568 1628128 5701160 -1625592 5701352 1628144 5701568 1627968 5701176 1626152 5700864 -1625592 5701352 1628144 5701568 1626152 5700864 1625616 5701256 -1627968 5701176 1626264 5700792 1626152 5700864 1628144 5701568 -1627968 5701176 1626280 5700680 1626264 5700792 1628144 5701568 -1625592 5701352 1625520 5701424 1628144 5701568 1626152 5700864 -1628144 5701568 1628128 5701160 1627968 5701176 1626264 5700792 -1626152 5700864 1625592 5701352 1628144 5701568 1626264 5700792 -1626264 5700792 1627896 5701296 1627968 5701176 1626280 5700680 -1627968 5701176 1626264 5700656 1626280 5700680 1627896 5701296 -1628144 5701568 1627896 5701296 1626264 5700792 1626152 5700864 -1628144 5701568 1627968 5701176 1627896 5701296 1626152 5700864 -1627968 5701176 1627896 5701296 1628144 5701568 1628128 5701160 -1628144 5701568 1628288 5701200 1628128 5701160 1627896 5701296 -1627896 5701296 1626152 5700864 1628144 5701568 1628128 5701160 -1626264 5700792 1626152 5700864 1627896 5701296 1626280 5700680 -1627896 5701296 1628128 5701160 1627968 5701176 1626280 5700680 -1628144 5701568 1627896 5701296 1626152 5700864 1625592 5701352 -1626152 5700864 1625616 5701256 1625592 5701352 1627896 5701296 -1627896 5701296 1626264 5700792 1626152 5700864 1625592 5701352 -1628144 5701568 1627896 5701296 1625592 5701352 1625520 5701424 -1628144 5701568 1628128 5701160 1627896 5701296 1625592 5701352 -1627896 5701296 1627904 5701200 1626280 5700680 1626264 5700792 -1626280 5700680 1627904 5701200 1627968 5701176 1626264 5700656 -1627968 5701176 1626320 5699032 1626264 5700656 1627904 5701200 -1626264 5700656 1626280 5700680 1627904 5701200 1626320 5699032 -1626320 5699032 1626200 5700576 1626264 5700656 1627904 5701200 -1627896 5701296 1627904 5701200 1626264 5700792 1626152 5700864 -1627896 5701296 1627968 5701176 1627904 5701200 1626264 5700792 -1627968 5701176 1627904 5701200 1627896 5701296 1628128 5701160 -1627904 5701200 1626264 5700656 1626280 5700680 1626264 5700792 -1627904 5701200 1627896 5701296 1627968 5701176 1626320 5699032 -1627968 5701176 1626344 5698984 1626320 5699032 1627904 5701200 -1623264 5697136 1622632 5697992 1621576 5701360 1623312 5697232 -1623264 5697136 1616624 5698656 1622632 5697992 1623312 5697232 -1621576 5701360 1622632 5697992 1616624 5698656 1616624 5698800 -1621576 5701360 1622632 5697992 1616624 5698800 1621488 5701424 -1622632 5697992 1616624 5698656 1616624 5698800 1621488 5701424 -1622632 5697992 1621488 5701424 1621576 5701360 1623312 5697232 -1616624 5698656 1616616 5698720 1616624 5698800 1622632 5697992 -1616624 5698800 1616600 5698864 1621488 5701424 1622632 5697992 -1622632 5697992 1623264 5697136 1616624 5698656 1616624 5698800 -1621576 5701360 1621712 5701344 1623312 5697232 1622632 5697992 -1621712 5701344 1623384 5697304 1623312 5697232 1622632 5697992 -1621712 5701344 1623480 5697392 1623384 5697304 1622632 5697992 -1623384 5697304 1623312 5697232 1622632 5697992 1623480 5697392 -1623312 5697232 1623264 5697136 1622632 5697992 1623384 5697304 -1621576 5701360 1621712 5701344 1622632 5697992 1621488 5701424 -1623480 5697392 1623432 5697336 1623384 5697304 1622632 5697992 -1621712 5701344 1623568 5697456 1623480 5697392 1622632 5697992 -1621712 5701344 1621816 5701384 1623568 5697456 1622632 5697992 -1621816 5701384 1622880 5701536 1623568 5697456 1622632 5697992 -1621816 5701384 1622664 5701568 1622880 5701536 1622632 5697992 -1622880 5701536 1623648 5697496 1623568 5697456 1622632 5697992 -1622880 5701536 1623648 5697496 1622632 5697992 1621816 5701384 -1621816 5701384 1622880 5701536 1622632 5697992 1621712 5701344 -1623480 5697392 1623384 5697304 1622632 5697992 1623568 5697456 -1622880 5701536 1623016 5701528 1623648 5697496 1622632 5697992 -1623016 5701528 1624344 5701024 1623648 5697496 1622632 5697992 -1623648 5697496 1623568 5697456 1622632 5697992 1624344 5701024 -1622880 5701536 1623016 5701528 1622632 5697992 1621816 5701384 -1623016 5701528 1624344 5701024 1622632 5697992 1622880 5701536 -1624344 5701024 1625032 5698608 1623648 5697496 1622632 5697992 -1624344 5701024 1624408 5700984 1625032 5698608 1622632 5697992 -1624344 5701024 1624408 5700984 1622632 5697992 1623016 5701528 -1623648 5697496 1623568 5697456 1622632 5697992 1625032 5698608 -1625032 5698608 1623672 5697496 1623648 5697496 1622632 5697992 -1623648 5697496 1623568 5697456 1622632 5697992 1623672 5697496 -1625032 5698608 1625048 5698520 1623672 5697496 1622632 5697992 -1625032 5698608 1623672 5697496 1622632 5697992 1624408 5700984 -1623016 5701528 1624288 5701080 1624344 5701024 1622632 5697992 -1624408 5700984 1625104 5698680 1625032 5698608 1622632 5697992 -1623568 5697456 1623480 5697392 1622632 5697992 1623648 5697496 -1621712 5701344 1621816 5701384 1622632 5697992 1621576 5701360 -1616624 5698656 1622632 5697992 1623264 5697136 1623272 5697000 -1622632 5697992 1623312 5697232 1623264 5697136 1623272 5697000 -1616624 5698656 1622632 5697992 1623272 5697000 1615680 5696424 -1616624 5698656 1622632 5697992 1615680 5696424 1615696 5696632 -1616624 5698656 1616624 5698800 1622632 5697992 1615680 5696424 -1623272 5697000 1615632 5696264 1615680 5696424 1622632 5697992 -1622632 5697992 1623264 5697136 1623272 5697000 1615680 5696424 -1624408 5700984 1622680 5698032 1622632 5697992 1624344 5701024 -1624408 5700984 1625032 5698608 1622680 5698032 1624344 5701024 -1622632 5697992 1623016 5701528 1624344 5701024 1622680 5698032 -1624344 5701024 1624408 5700984 1622680 5698032 1623016 5701528 -1622680 5698032 1625032 5698608 1622632 5697992 1623016 5701528 -1622632 5697992 1622880 5701536 1623016 5701528 1622680 5698032 -1623016 5701528 1624344 5701024 1622680 5698032 1622880 5701536 -1622632 5697992 1621816 5701384 1622880 5701536 1622680 5698032 -1621816 5701384 1622664 5701568 1622880 5701536 1622680 5698032 -1622632 5697992 1621712 5701344 1621816 5701384 1622680 5698032 -1621816 5701384 1622880 5701536 1622680 5698032 1621712 5701344 -1622632 5697992 1621712 5701344 1622680 5698032 1625032 5698608 -1622880 5701536 1623016 5701528 1622680 5698032 1621816 5701384 -1622632 5697992 1622680 5698032 1625032 5698608 1623672 5697496 -1622680 5698032 1624408 5700984 1625032 5698608 1623672 5697496 -1622632 5697992 1621712 5701344 1622680 5698032 1623672 5697496 -1622632 5697992 1622680 5698032 1623672 5697496 1623648 5697496 -1622632 5697992 1622680 5698032 1623648 5697496 1623568 5697456 -1622632 5697992 1621712 5701344 1622680 5698032 1623568 5697456 -1622680 5698032 1623672 5697496 1623648 5697496 1623568 5697456 -1625032 5698608 1625048 5698520 1623672 5697496 1622680 5698032 -1622680 5698032 1625032 5698608 1623672 5697496 1623648 5697496 -1623016 5701528 1624288 5701080 1624344 5701024 1622680 5698032 -1625032 5698608 1622680 5698032 1624408 5700984 1625104 5698680 -1622632 5697992 1622680 5698032 1623568 5697456 1623480 5697392 -1622680 5698032 1623648 5697496 1623568 5697456 1623480 5697392 -1622632 5697992 1621712 5701344 1622680 5698032 1623480 5697392 -1622632 5697992 1622680 5698032 1623480 5697392 1623384 5697304 -1622632 5697992 1621712 5701344 1622680 5698032 1623384 5697304 -1622632 5697992 1622680 5698032 1623384 5697304 1623312 5697232 -1622632 5697992 1621712 5701344 1622680 5698032 1623312 5697232 -1622680 5698032 1623480 5697392 1623384 5697304 1623312 5697232 -1622632 5697992 1622680 5698032 1623312 5697232 1623264 5697136 -1623480 5697392 1623432 5697336 1623384 5697304 1622680 5698032 -1622680 5698032 1623568 5697456 1623480 5697392 1623384 5697304 -1622632 5697992 1621576 5701360 1621712 5701344 1622680 5698032 -1624408 5700984 1622704 5698072 1622680 5698032 1624344 5701024 -1624408 5700984 1625032 5698608 1622704 5698072 1624344 5701024 -1622680 5698032 1623016 5701528 1624344 5701024 1622704 5698072 -1624344 5701024 1624408 5700984 1622704 5698072 1623016 5701528 -1622680 5698032 1622704 5698072 1625032 5698608 1623672 5697496 -1622704 5698072 1624408 5700984 1625032 5698608 1623672 5697496 -1622704 5698072 1623672 5697496 1622680 5698032 1623016 5701528 -1622680 5698032 1622880 5701536 1623016 5701528 1622704 5698072 -1623016 5701528 1624344 5701024 1622704 5698072 1622880 5701536 -1622680 5698032 1622880 5701536 1622704 5698072 1623672 5697496 -1625032 5698608 1625048 5698520 1623672 5697496 1622704 5698072 -1622680 5698032 1621816 5701384 1622880 5701536 1622704 5698072 -1621816 5701384 1622664 5701568 1622880 5701536 1622704 5698072 -1622680 5698032 1621816 5701384 1622704 5698072 1623672 5697496 -1622880 5701536 1623016 5701528 1622704 5698072 1621816 5701384 -1622680 5698032 1621712 5701344 1621816 5701384 1622704 5698072 -1622680 5698032 1621712 5701344 1622704 5698072 1623672 5697496 -1622680 5698032 1622632 5697992 1621712 5701344 1622704 5698072 -1622680 5698032 1622632 5697992 1622704 5698072 1623672 5697496 -1621712 5701344 1621816 5701384 1622704 5698072 1622632 5697992 -1621816 5701384 1622880 5701536 1622704 5698072 1621712 5701344 -1622680 5698032 1622704 5698072 1623672 5697496 1623648 5697496 -1622704 5698072 1625032 5698608 1623672 5697496 1623648 5697496 -1622680 5698032 1622632 5697992 1622704 5698072 1623648 5697496 -1622680 5698032 1622704 5698072 1623648 5697496 1623568 5697456 -1622680 5698032 1622632 5697992 1622704 5698072 1623568 5697456 -1622680 5698032 1622704 5698072 1623568 5697456 1623480 5697392 -1622680 5698032 1622632 5697992 1622704 5698072 1623480 5697392 -1622704 5698072 1623648 5697496 1623568 5697456 1623480 5697392 -1622704 5698072 1623672 5697496 1623648 5697496 1623568 5697456 -1623016 5701528 1624288 5701080 1624344 5701024 1622704 5698072 -1625032 5698608 1622704 5698072 1624408 5700984 1625104 5698680 -1622680 5698032 1622704 5698072 1623480 5697392 1623384 5697304 -1622632 5697992 1621576 5701360 1621712 5701344 1622704 5698072 -1621712 5701344 1621816 5701384 1622704 5698072 1621576 5701360 -1622632 5697992 1621576 5701360 1622704 5698072 1622680 5698032 -1622632 5697992 1621488 5701424 1621576 5701360 1622704 5698072 -1623016 5701528 1622728 5698144 1622704 5698072 1622880 5701536 -1622728 5698144 1624344 5701024 1622704 5698072 1622880 5701536 -1623016 5701528 1624344 5701024 1622728 5698144 1622880 5701536 -1622704 5698072 1622728 5698144 1624344 5701024 1624408 5700984 -1622704 5698072 1622880 5701536 1622728 5698144 1624408 5700984 -1622704 5698072 1622728 5698144 1624408 5700984 1625032 5698608 -1622704 5698072 1622880 5701536 1622728 5698144 1625032 5698608 -1622728 5698144 1623016 5701528 1624344 5701024 1624408 5700984 -1622728 5698144 1624344 5701024 1624408 5700984 1625032 5698608 -1622704 5698072 1622728 5698144 1625032 5698608 1623672 5697496 -1622704 5698072 1622880 5701536 1622728 5698144 1623672 5697496 -1622728 5698144 1624408 5700984 1625032 5698608 1623672 5697496 -1622704 5698072 1622728 5698144 1623672 5697496 1623648 5697496 -1622704 5698072 1622880 5701536 1622728 5698144 1623648 5697496 -1622728 5698144 1625032 5698608 1623672 5697496 1623648 5697496 -1622704 5698072 1621816 5701384 1622880 5701536 1622728 5698144 -1622704 5698072 1621816 5701384 1622728 5698144 1623648 5697496 -1621816 5701384 1622664 5701568 1622880 5701536 1622728 5698144 -1622880 5701536 1623016 5701528 1622728 5698144 1621816 5701384 -1625032 5698608 1625048 5698520 1623672 5697496 1622728 5698144 -1622704 5698072 1621712 5701344 1621816 5701384 1622728 5698144 -1622704 5698072 1621712 5701344 1622728 5698144 1623648 5697496 -1621816 5701384 1622880 5701536 1622728 5698144 1621712 5701344 -1622704 5698072 1621576 5701360 1621712 5701344 1622728 5698144 -1622704 5698072 1621576 5701360 1622728 5698144 1623648 5697496 -1621712 5701344 1621816 5701384 1622728 5698144 1621576 5701360 -1622704 5698072 1622728 5698144 1623648 5697496 1623568 5697456 -1622704 5698072 1621576 5701360 1622728 5698144 1623568 5697456 -1622728 5698144 1623672 5697496 1623648 5697496 1623568 5697456 -1622704 5698072 1622728 5698144 1623568 5697456 1623480 5697392 -1624344 5701024 1622728 5698144 1623016 5701528 1624288 5701080 -1624408 5700984 1625104 5698680 1625032 5698608 1622728 5698144 -1622704 5698072 1622632 5697992 1621576 5701360 1622728 5698144 -1622704 5698072 1622632 5697992 1622728 5698144 1623568 5697456 -1621576 5701360 1621712 5701344 1622728 5698144 1622632 5697992 -1622704 5698072 1622680 5698032 1622632 5697992 1622728 5698144 -1622632 5697992 1621488 5701424 1621576 5701360 1622728 5698144 -1622880 5701536 1622712 5698216 1621816 5701384 1622664 5701568 -1622728 5698144 1622712 5698216 1622880 5701536 1623016 5701528 -1622728 5698144 1621816 5701384 1622712 5698216 1623016 5701528 -1622728 5698144 1622712 5698216 1623016 5701528 1624344 5701024 -1622728 5698144 1622712 5698216 1624344 5701024 1624408 5700984 -1622728 5698144 1621816 5701384 1622712 5698216 1624408 5700984 -1622712 5698216 1623016 5701528 1624344 5701024 1624408 5700984 -1622712 5698216 1622880 5701536 1623016 5701528 1624344 5701024 -1622728 5698144 1622712 5698216 1624408 5700984 1625032 5698608 -1622728 5698144 1622712 5698216 1625032 5698608 1623672 5697496 -1622712 5698216 1624344 5701024 1624408 5700984 1625032 5698608 -1622728 5698144 1621816 5701384 1622712 5698216 1623672 5697496 -1622712 5698216 1624408 5700984 1625032 5698608 1623672 5697496 -1622728 5698144 1622712 5698216 1623672 5697496 1623648 5697496 -1622712 5698216 1625032 5698608 1623672 5697496 1623648 5697496 -1622728 5698144 1621816 5701384 1622712 5698216 1623648 5697496 -1622728 5698144 1622712 5698216 1623648 5697496 1623568 5697456 -1621816 5701384 1622712 5698216 1622728 5698144 1621712 5701344 -1622712 5698216 1623648 5697496 1622728 5698144 1621712 5701344 -1625032 5698608 1625048 5698520 1623672 5697496 1622712 5698216 -1622728 5698144 1621576 5701360 1621712 5701344 1622712 5698216 -1622728 5698144 1621576 5701360 1622712 5698216 1623648 5697496 -1621712 5701344 1621816 5701384 1622712 5698216 1621576 5701360 -1622728 5698144 1622632 5697992 1621576 5701360 1622712 5698216 -1622728 5698144 1622632 5697992 1622712 5698216 1623648 5697496 -1622632 5697992 1621488 5701424 1621576 5701360 1622712 5698216 -1621576 5701360 1621712 5701344 1622712 5698216 1622632 5697992 -1622712 5698216 1621816 5701384 1622880 5701536 1623016 5701528 -1621816 5701384 1622880 5701536 1622712 5698216 1621712 5701344 -1623016 5701528 1624288 5701080 1624344 5701024 1622712 5698216 -1624408 5700984 1625104 5698680 1625032 5698608 1622712 5698216 -1622728 5698144 1622704 5698072 1622632 5697992 1622712 5698216 -1622728 5698144 1622704 5698072 1622712 5698216 1623648 5697496 -1622632 5697992 1621576 5701360 1622712 5698216 1622704 5698072 -1622704 5698072 1622680 5698032 1622632 5697992 1622712 5698216 -1622632 5697992 1622656 5698272 1622712 5698216 1622704 5698072 -1622632 5697992 1622656 5698272 1622704 5698072 1622680 5698032 -1621576 5701360 1622656 5698272 1622632 5697992 1621488 5701424 -1622632 5697992 1616624 5698800 1621488 5701424 1622656 5698272 -1622632 5697992 1616624 5698656 1616624 5698800 1622656 5698272 -1616624 5698800 1621488 5701424 1622656 5698272 1616624 5698656 -1621488 5701424 1621576 5701360 1622656 5698272 1616624 5698800 -1616624 5698656 1616616 5698720 1616624 5698800 1622656 5698272 -1616624 5698800 1616600 5698864 1621488 5701424 1622656 5698272 -1622632 5697992 1615680 5696424 1616624 5698656 1622656 5698272 -1622712 5698216 1622656 5698272 1621576 5701360 1621712 5701344 -1622712 5698216 1622656 5698272 1621712 5701344 1621816 5701384 -1622656 5698272 1621576 5701360 1621712 5701344 1621816 5701384 -1622656 5698272 1621816 5701384 1622712 5698216 1622704 5698072 -1622712 5698216 1622656 5698272 1621816 5701384 1622880 5701536 -1621816 5701384 1622664 5701568 1622880 5701536 1622656 5698272 -1622656 5698272 1621712 5701344 1621816 5701384 1622880 5701536 -1622712 5698216 1622656 5698272 1622880 5701536 1623016 5701528 -1622712 5698216 1622656 5698272 1623016 5701528 1624344 5701024 -1622712 5698216 1622656 5698272 1624344 5701024 1624408 5700984 -1622712 5698216 1622656 5698272 1624408 5700984 1625032 5698608 -1622656 5698272 1624344 5701024 1624408 5700984 1625032 5698608 -1622656 5698272 1623016 5701528 1624344 5701024 1624408 5700984 -1622712 5698216 1622656 5698272 1625032 5698608 1623672 5697496 -1622656 5698272 1622880 5701536 1623016 5701528 1624344 5701024 -1622712 5698216 1622704 5698072 1622656 5698272 1625032 5698608 -1622656 5698272 1621816 5701384 1622880 5701536 1623016 5701528 -1621576 5701360 1621712 5701344 1622656 5698272 1621488 5701424 -1623016 5701528 1624288 5701080 1624344 5701024 1622656 5698272 -1624408 5700984 1625104 5698680 1625032 5698608 1622656 5698272 -1622632 5697992 1616624 5698656 1622656 5698272 1622704 5698072 -1622712 5698216 1622728 5698144 1622704 5698072 1622656 5698272 -1622704 5698072 1622632 5697992 1622656 5698272 1622728 5698144 -1622712 5698216 1622728 5698144 1622656 5698272 1625032 5698608 -1616624 5698800 1622536 5698344 1622656 5698272 1616624 5698656 -1622656 5698272 1622632 5697992 1616624 5698656 1622536 5698344 -1616624 5698656 1616624 5698800 1622536 5698344 1622632 5697992 -1622656 5698272 1622536 5698344 1621488 5701424 1621576 5701360 -1616624 5698800 1622536 5698344 1616624 5698656 1616616 5698720 -1621488 5701424 1622536 5698344 1616624 5698800 1616600 5698864 -1622632 5697992 1615680 5696424 1616624 5698656 1622536 5698344 -1622656 5698272 1622536 5698344 1621576 5701360 1621712 5701344 -1622536 5698344 1621488 5701424 1621576 5701360 1621712 5701344 -1622656 5698272 1622536 5698344 1621712 5701344 1621816 5701384 -1622656 5698272 1622536 5698344 1621816 5701384 1622880 5701536 -1621816 5701384 1622664 5701568 1622880 5701536 1622536 5698344 -1622536 5698344 1621712 5701344 1621816 5701384 1622880 5701536 -1622656 5698272 1622536 5698344 1622880 5701536 1623016 5701528 -1622536 5698344 1621816 5701384 1622880 5701536 1623016 5701528 -1622656 5698272 1622536 5698344 1623016 5701528 1624344 5701024 -1622656 5698272 1622536 5698344 1624344 5701024 1624408 5700984 -1622536 5698344 1622880 5701536 1623016 5701528 1624344 5701024 -1622536 5698344 1621576 5701360 1621712 5701344 1621816 5701384 -1622536 5698344 1624344 5701024 1622656 5698272 1622632 5697992 -1623016 5701528 1624288 5701080 1624344 5701024 1622536 5698344 -1622656 5698272 1622704 5698072 1622632 5697992 1622536 5698344 -1622536 5698344 1616624 5698800 1621488 5701424 1621576 5701360 -1616624 5698800 1621488 5701424 1622536 5698344 1616624 5698656 -1621488 5701424 1622424 5698368 1616624 5698800 1616600 5698864 -1622536 5698344 1622424 5698368 1621488 5701424 1621576 5701360 -1622536 5698344 1622424 5698368 1621576 5701360 1621712 5701344 -1622536 5698344 1622424 5698368 1621712 5701344 1621816 5701384 -1622424 5698368 1621576 5701360 1621712 5701344 1621816 5701384 -1622536 5698344 1622424 5698368 1621816 5701384 1622880 5701536 -1621816 5701384 1622664 5701568 1622880 5701536 1622424 5698368 -1622536 5698344 1622424 5698368 1622880 5701536 1623016 5701528 -1622424 5698368 1621712 5701344 1621816 5701384 1622880 5701536 -1622424 5698368 1621488 5701424 1621576 5701360 1621712 5701344 -1622536 5698344 1616624 5698800 1622424 5698368 1622880 5701536 -1616624 5698800 1622424 5698368 1622536 5698344 1616624 5698656 -1622536 5698344 1622632 5697992 1616624 5698656 1622424 5698368 -1616624 5698800 1621488 5701424 1622424 5698368 1616624 5698656 -1622536 5698344 1622656 5698272 1622632 5697992 1622424 5698368 -1616624 5698800 1622424 5698368 1616624 5698656 1616616 5698720 -1622632 5697992 1615680 5696424 1616624 5698656 1622424 5698368 -1622424 5698368 1622880 5701536 1622536 5698344 1622632 5697992 -1616624 5698656 1616624 5698800 1622424 5698368 1622632 5697992 -1622424 5698368 1616624 5698800 1621488 5701424 1621576 5701360 -1622632 5697992 1622296 5698320 1622424 5698368 1622536 5698344 -1622296 5698320 1616624 5698656 1622424 5698368 1622536 5698344 -1622632 5697992 1616624 5698656 1622296 5698320 1622536 5698344 -1622632 5697992 1622296 5698320 1622536 5698344 1622656 5698272 -1616624 5698656 1622296 5698320 1622632 5697992 1615680 5696424 -1622632 5697992 1623272 5697000 1615680 5696424 1622296 5698320 -1616624 5698656 1622424 5698368 1622296 5698320 1615680 5696424 -1622296 5698320 1622536 5698344 1622632 5697992 1623272 5697000 -1616624 5698656 1622296 5698320 1615680 5696424 1615696 5696632 -1615680 5696424 1616624 5698656 1622296 5698320 1623272 5697000 -1623272 5697000 1615632 5696264 1615680 5696424 1622296 5698320 -1622424 5698368 1622296 5698320 1616624 5698656 1616624 5698800 -1622424 5698368 1622536 5698344 1622296 5698320 1616624 5698800 -1622424 5698368 1622296 5698320 1616624 5698800 1621488 5701424 -1622424 5698368 1622536 5698344 1622296 5698320 1621488 5701424 -1622296 5698320 1615680 5696424 1616624 5698656 1616624 5698800 -1616624 5698656 1616616 5698720 1616624 5698800 1622296 5698320 -1616624 5698800 1616600 5698864 1621488 5701424 1622296 5698320 -1622296 5698320 1616624 5698656 1616624 5698800 1621488 5701424 -1622424 5698368 1622296 5698320 1621488 5701424 1621576 5701360 -1622424 5698368 1622536 5698344 1622296 5698320 1621576 5701360 -1622296 5698320 1616624 5698800 1621488 5701424 1621576 5701360 -1622424 5698368 1622296 5698320 1621576 5701360 1621712 5701344 -1622424 5698368 1622536 5698344 1622296 5698320 1621712 5701344 -1622424 5698368 1622296 5698320 1621712 5701344 1621816 5701384 -1622296 5698320 1621488 5701424 1621576 5701360 1621712 5701344 -1622632 5697992 1623264 5697136 1623272 5697000 1622296 5698320 -1623272 5697000 1622064 5698152 1622296 5698320 1622632 5697992 -1623272 5697000 1615680 5696424 1622064 5698152 1622632 5697992 -1622064 5698152 1615680 5696424 1622296 5698320 1622632 5697992 -1622296 5698320 1622536 5698344 1622632 5697992 1622064 5698152 -1622296 5698320 1622064 5698152 1615680 5696424 1616624 5698656 -1622064 5698152 1623272 5697000 1615680 5696424 1616624 5698656 -1622296 5698320 1622064 5698152 1616624 5698656 1616624 5698800 -1622296 5698320 1622632 5697992 1622064 5698152 1616624 5698800 -1615680 5696424 1615696 5696632 1616624 5698656 1622064 5698152 -1615680 5696424 1615696 5696632 1622064 5698152 1623272 5697000 -1615696 5696632 1616592 5698624 1616624 5698656 1622064 5698152 -1616624 5698656 1616616 5698720 1616624 5698800 1622064 5698152 -1622064 5698152 1615696 5696632 1616624 5698656 1616624 5698800 -1615680 5696424 1622064 5698152 1623272 5697000 1615632 5696264 -1615680 5696424 1615696 5696632 1622064 5698152 1615632 5696264 -1622064 5698152 1622632 5697992 1623272 5697000 1615632 5696264 -1623272 5697000 1615512 5696024 1615632 5696264 1622064 5698152 -1622296 5698320 1622064 5698152 1616624 5698800 1621488 5701424 -1622296 5698320 1622064 5698152 1621488 5701424 1621576 5701360 -1622064 5698152 1616624 5698656 1616624 5698800 1621488 5701424 -1622296 5698320 1622632 5697992 1622064 5698152 1621576 5701360 -1616624 5698800 1616600 5698864 1621488 5701424 1622064 5698152 -1622064 5698152 1616624 5698800 1621488 5701424 1621576 5701360 -1622296 5698320 1622064 5698152 1621576 5701360 1621712 5701344 -1623272 5697000 1622064 5698152 1622632 5697992 1623264 5697136 -1623272 5697000 1621944 5698008 1622064 5698152 1622632 5697992 -1621944 5698008 1615632 5696264 1622064 5698152 1622632 5697992 -1622064 5698152 1622296 5698320 1622632 5697992 1621944 5698008 -1615632 5696264 1621944 5698008 1623272 5697000 1615512 5696024 -1615632 5696264 1622064 5698152 1621944 5698008 1615512 5696024 -1623272 5697000 1615376 5695816 1615512 5696024 1621944 5698008 -1623272 5697000 1615512 5696024 1621944 5698008 1622632 5697992 -1622064 5698152 1621944 5698008 1615632 5696264 1615680 5696424 -1622064 5698152 1621944 5698008 1615680 5696424 1615696 5696632 -1622064 5698152 1622632 5697992 1621944 5698008 1615696 5696632 -1621944 5698008 1615512 5696024 1615632 5696264 1615680 5696424 -1622064 5698152 1621944 5698008 1615696 5696632 1616624 5698656 -1621944 5698008 1615680 5696424 1615696 5696632 1616624 5698656 -1622064 5698152 1622632 5697992 1621944 5698008 1616624 5698656 -1615696 5696632 1616592 5698624 1616624 5698656 1621944 5698008 -1622064 5698152 1621944 5698008 1616624 5698656 1616624 5698800 -1622064 5698152 1622632 5697992 1621944 5698008 1616624 5698800 -1622064 5698152 1621944 5698008 1616624 5698800 1621488 5701424 -1622064 5698152 1622632 5697992 1621944 5698008 1621488 5701424 -1621944 5698008 1615696 5696632 1616624 5698656 1616624 5698800 -1616624 5698656 1616616 5698720 1616624 5698800 1621944 5698008 -1616624 5698800 1616600 5698864 1621488 5701424 1621944 5698008 -1621944 5698008 1616624 5698656 1616624 5698800 1621488 5701424 -1621944 5698008 1615632 5696264 1615680 5696424 1615696 5696632 -1622064 5698152 1621944 5698008 1621488 5701424 1621576 5701360 -1622064 5698152 1622632 5697992 1621944 5698008 1621576 5701360 -1622064 5698152 1621944 5698008 1621576 5701360 1622296 5698320 -1621944 5698008 1616624 5698800 1621488 5701424 1621576 5701360 -1623272 5697000 1621944 5698008 1622632 5697992 1623264 5697136 -1621944 5698008 1622064 5698152 1622632 5697992 1623264 5697136 -1622632 5697992 1623312 5697232 1623264 5697136 1621944 5698008 -1623272 5697000 1615512 5696024 1621944 5698008 1623264 5697136 -1615512 5696024 1621936 5697864 1623272 5697000 1615376 5695816 -1621944 5698008 1621936 5697864 1615512 5696024 1615632 5696264 -1621944 5698008 1621936 5697864 1615632 5696264 1615680 5696424 -1621944 5698008 1623272 5697000 1621936 5697864 1615680 5696424 -1621936 5697864 1615512 5696024 1615632 5696264 1615680 5696424 -1623272 5697000 1621936 5697864 1621944 5698008 1623264 5697136 -1621936 5697864 1615680 5696424 1621944 5698008 1623264 5697136 -1623272 5697000 1615512 5696024 1621936 5697864 1623264 5697136 -1621936 5697864 1623272 5697000 1615512 5696024 1615632 5696264 -1621944 5698008 1621936 5697864 1615680 5696424 1615696 5696632 -1621944 5698008 1621936 5697864 1615696 5696632 1616624 5698656 -1621936 5697864 1615632 5696264 1615680 5696424 1615696 5696632 -1621944 5698008 1623264 5697136 1621936 5697864 1616624 5698656 -1615696 5696632 1616592 5698624 1616624 5698656 1621936 5697864 -1621944 5698008 1621936 5697864 1616624 5698656 1616624 5698800 -1621936 5697864 1615680 5696424 1615696 5696632 1616624 5698656 -1621944 5698008 1622632 5697992 1623264 5697136 1621936 5697864 -1621944 5698008 1622064 5698152 1622632 5697992 1621936 5697864 -1621944 5698008 1622064 5698152 1621936 5697864 1616624 5698656 -1622632 5697992 1623312 5697232 1623264 5697136 1621936 5697864 -1622064 5698152 1622296 5698320 1622632 5697992 1621936 5697864 -1623264 5697136 1623272 5697000 1621936 5697864 1622632 5697992 -1622632 5697992 1623264 5697136 1621936 5697864 1622064 5698152 -1623264 5697136 1621968 5697856 1622632 5697992 1623312 5697232 -1621936 5697864 1621968 5697856 1623264 5697136 1623272 5697000 -1621936 5697864 1621968 5697856 1623272 5697000 1615512 5696024 -1621968 5697856 1622632 5697992 1623264 5697136 1623272 5697000 -1621936 5697864 1622632 5697992 1621968 5697856 1623272 5697000 -1622632 5697992 1621968 5697856 1621936 5697864 1622064 5698152 -1621936 5697864 1621944 5698008 1622064 5698152 1621968 5697856 -1622632 5697992 1623264 5697136 1621968 5697856 1622064 5698152 -1622632 5697992 1621968 5697856 1622064 5698152 1622296 5698320 -1621968 5697856 1623272 5697000 1621936 5697864 1621944 5698008 -1622064 5698152 1622632 5697992 1621968 5697856 1621944 5698008 -1621936 5697864 1622016 5697816 1623272 5697000 1615512 5696024 -1622016 5697816 1621968 5697856 1623272 5697000 1615512 5696024 -1621936 5697864 1621968 5697856 1622016 5697816 1615512 5696024 -1623272 5697000 1615376 5695816 1615512 5696024 1622016 5697816 -1623272 5697000 1622016 5697816 1621968 5697856 1623264 5697136 -1623272 5697000 1615512 5696024 1622016 5697816 1623264 5697136 -1621968 5697856 1622632 5697992 1623264 5697136 1622016 5697816 -1622016 5697816 1621936 5697864 1621968 5697856 1622632 5697992 -1621968 5697856 1622064 5698152 1622632 5697992 1622016 5697816 -1622632 5697992 1623264 5697136 1622016 5697816 1622064 5698152 -1621968 5697856 1622064 5698152 1622016 5697816 1621936 5697864 -1622632 5697992 1623312 5697232 1623264 5697136 1622016 5697816 -1622064 5698152 1622296 5698320 1622632 5697992 1622016 5697816 -1623264 5697136 1623272 5697000 1622016 5697816 1622632 5697992 -1621936 5697864 1622016 5697816 1615512 5696024 1615632 5696264 -1621968 5697856 1621944 5698008 1622064 5698152 1622016 5697816 -1621968 5697856 1621936 5697864 1621944 5698008 1622016 5697816 -1621968 5697856 1621944 5698008 1622016 5697816 1621936 5697864 -1622064 5698152 1622632 5697992 1622016 5697816 1621944 5698008 -1622632 5697992 1622080 5697800 1622016 5697816 1622064 5698152 -1622632 5697992 1623264 5697136 1622080 5697800 1622064 5698152 -1622080 5697800 1623264 5697136 1622016 5697816 1622064 5698152 -1622016 5697816 1621944 5698008 1622064 5698152 1622080 5697800 -1622016 5697816 1621944 5698008 1622080 5697800 1623264 5697136 -1622064 5698152 1622632 5697992 1622080 5697800 1621944 5698008 -1623264 5697136 1622080 5697800 1622632 5697992 1623312 5697232 -1622632 5697992 1622080 5697800 1622064 5698152 1622296 5698320 -1622016 5697816 1622080 5697800 1623264 5697136 1623272 5697000 -1622080 5697800 1622632 5697992 1623264 5697136 1623272 5697000 -1622016 5697816 1621944 5698008 1622080 5697800 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1615512 5696024 -1622016 5697816 1621968 5697856 1621944 5698008 1622080 5697800 -1621968 5697856 1621936 5697864 1621944 5698008 1622080 5697800 -1622016 5697816 1621968 5697856 1622080 5697800 1623272 5697000 -1621944 5698008 1622064 5698152 1622080 5697800 1621968 5697856 -1622080 5697800 1622272 5697816 1623264 5697136 1623272 5697000 -1622080 5697800 1622632 5697992 1622272 5697816 1623272 5697000 -1622632 5697992 1622272 5697816 1622080 5697800 1622064 5698152 -1622632 5697992 1623264 5697136 1622272 5697816 1622064 5698152 -1622272 5697816 1623272 5697000 1622080 5697800 1622064 5698152 -1622272 5697816 1622632 5697992 1623264 5697136 1623272 5697000 -1622080 5697800 1621944 5698008 1622064 5698152 1622272 5697816 -1623264 5697136 1622272 5697816 1622632 5697992 1623312 5697232 -1622632 5697992 1622272 5697816 1622064 5698152 1622296 5698320 -1622632 5697992 1623264 5697136 1622272 5697816 1622296 5698320 -1622272 5697816 1622080 5697800 1622064 5698152 1622296 5698320 -1622632 5697992 1622272 5697816 1622296 5698320 1622536 5698344 -1622080 5697800 1622272 5697816 1623272 5697000 1622016 5697816 -1622632 5697992 1622408 5697856 1622272 5697816 1622296 5698320 -1622272 5697816 1622408 5697856 1623264 5697136 1623272 5697000 -1622408 5697856 1623264 5697136 1622272 5697816 1622296 5698320 -1623264 5697136 1622408 5697856 1622632 5697992 1623312 5697232 -1623264 5697136 1622272 5697816 1622408 5697856 1623312 5697232 -1622272 5697816 1622064 5698152 1622296 5698320 1622408 5697856 -1622296 5698320 1622632 5697992 1622408 5697856 1622064 5698152 -1622272 5697816 1622080 5697800 1622064 5698152 1622408 5697856 -1622272 5697816 1622064 5698152 1622408 5697856 1623264 5697136 -1622632 5697992 1622408 5697856 1622296 5698320 1622536 5698344 -1622632 5697992 1622680 5698032 1623312 5697232 1622408 5697856 -1622632 5697992 1623312 5697232 1622408 5697856 1622296 5698320 -1627336 5719640 1627904 5703304 1620552 5714440 1627312 5719640 -1628552 5701744 1627904 5703304 1627336 5719640 1627384 5719672 -1628552 5701744 1627904 5703304 1627384 5719672 1628664 5701664 -1627904 5703304 1627336 5719640 1627384 5719672 1628664 5701664 -1620552 5714440 1627904 5703304 1628552 5701744 1628488 5701744 -1620552 5714440 1627336 5719640 1627904 5703304 1628488 5701744 -1620552 5714440 1627904 5703304 1628488 5701744 1623816 5702824 -1620552 5714440 1627904 5703304 1623816 5702824 1620512 5714368 -1623816 5702824 1623720 5702872 1620512 5714368 1627904 5703304 -1620512 5714368 1620552 5714440 1627904 5703304 1623720 5702872 -1623720 5702872 1620160 5713848 1620512 5714368 1627904 5703304 -1623720 5702872 1621944 5703896 1620160 5713848 1627904 5703304 -1621944 5703896 1620104 5713768 1620160 5713848 1627904 5703304 -1621944 5703896 1620104 5713768 1627904 5703304 1623720 5702872 -1621944 5703896 1620040 5713712 1620104 5713768 1627904 5703304 -1620512 5714368 1620552 5714440 1627904 5703304 1620160 5713848 -1623720 5702872 1623616 5702904 1621944 5703896 1627904 5703304 -1623720 5702872 1621944 5703896 1627904 5703304 1623816 5702824 -1620160 5713848 1620512 5714368 1627904 5703304 1620104 5713768 -1620552 5714440 1627336 5719640 1627904 5703304 1620512 5714368 -1627904 5703304 1628488 5701744 1623816 5702824 1623720 5702872 -1628488 5701744 1623888 5702776 1623816 5702824 1627904 5703304 -1623888 5702776 1623848 5702776 1623816 5702824 1627904 5703304 -1623816 5702824 1623720 5702872 1627904 5703304 1623888 5702776 -1627904 5703304 1628552 5701744 1628488 5701744 1623888 5702776 -1620160 5713848 1620272 5714120 1620512 5714368 1627904 5703304 -1627904 5703304 1620552 5714440 1627336 5719640 1627384 5719672 -1628488 5701744 1628320 5701688 1623888 5702776 1627904 5703304 -1628320 5701688 1624952 5701864 1623888 5702776 1627904 5703304 -1628320 5701688 1628144 5701568 1624952 5701864 1627904 5703304 -1628144 5701568 1625520 5701424 1624952 5701864 1627904 5703304 -1624952 5701864 1623888 5702776 1627904 5703304 1625520 5701424 -1628144 5701568 1625520 5701424 1627904 5703304 1628320 5701688 -1628144 5701568 1625592 5701352 1625520 5701424 1627904 5703304 -1625520 5701424 1624952 5701864 1627904 5703304 1625592 5701352 -1628144 5701568 1625592 5701352 1627904 5703304 1628320 5701688 -1628144 5701568 1627896 5701296 1625592 5701352 1627904 5703304 -1628144 5701568 1627896 5701296 1627904 5703304 1628320 5701688 -1625592 5701352 1625520 5701424 1627904 5703304 1627896 5701296 -1623888 5702776 1623816 5702824 1627904 5703304 1624952 5701864 -1628488 5701744 1628320 5701688 1627904 5703304 1628552 5701744 -1627896 5701296 1626152 5700864 1625592 5701352 1627904 5703304 -1624952 5701864 1624720 5701944 1623888 5702776 1627904 5703304 -1628320 5701688 1628144 5701568 1627904 5703304 1628488 5701744 -1627384 5719672 1628712 5701600 1628664 5701664 1627904 5703304 -1628664 5701664 1628552 5701744 1627904 5703304 1628712 5701600 -1627384 5719672 1628712 5701600 1627904 5703304 1627336 5719640 -1627384 5719672 1627448 5719792 1628712 5701600 1627904 5703304 -1627384 5719672 1627400 5719704 1627448 5719792 1627904 5703304 -1627384 5719672 1627448 5719792 1627904 5703304 1627336 5719640 -1628712 5701600 1628664 5701664 1627904 5703304 1627448 5719792 -1627448 5719792 1629944 5726576 1628712 5701600 1627904 5703304 -1628552 5701744 1628488 5701744 1627904 5703304 1628664 5701664 -1627904 5703304 1628360 5703512 1628712 5701600 1628664 5701664 -1627904 5703304 1628360 5703512 1628664 5701664 1628552 5701744 -1628360 5703512 1627448 5719792 1628712 5701600 1628664 5701664 -1627904 5703304 1627448 5719792 1628360 5703512 1628552 5701744 -1628360 5703512 1628712 5701600 1628664 5701664 1628552 5701744 -1627448 5719792 1628360 5703512 1627904 5703304 1627384 5719672 -1627448 5719792 1628360 5703512 1627384 5719672 1627400 5719704 -1627448 5719792 1628712 5701600 1628360 5703512 1627384 5719672 -1627904 5703304 1627336 5719640 1627384 5719672 1628360 5703512 -1627904 5703304 1620552 5714440 1627336 5719640 1628360 5703512 -1627904 5703304 1620512 5714368 1620552 5714440 1628360 5703512 -1627904 5703304 1620160 5713848 1620512 5714368 1628360 5703512 -1627904 5703304 1620104 5713768 1620160 5713848 1628360 5703512 -1627904 5703304 1621944 5703896 1620104 5713768 1628360 5703512 -1627904 5703304 1623720 5702872 1621944 5703896 1628360 5703512 -1621944 5703896 1620040 5713712 1620104 5713768 1628360 5703512 -1620160 5713848 1620512 5714368 1628360 5703512 1620104 5713768 -1620104 5713768 1620160 5713848 1628360 5703512 1621944 5703896 -1620512 5714368 1620552 5714440 1628360 5703512 1620160 5713848 -1620552 5714440 1627312 5719640 1627336 5719640 1628360 5703512 -1627336 5719640 1627384 5719672 1628360 5703512 1620552 5714440 -1620160 5713848 1620272 5714120 1620512 5714368 1628360 5703512 -1620552 5714440 1627336 5719640 1628360 5703512 1620512 5714368 -1628360 5703512 1628552 5701744 1627904 5703304 1621944 5703896 -1627384 5719672 1627448 5719792 1628360 5703512 1627336 5719640 -1628712 5701600 1628360 5703512 1627448 5719792 1629944 5726576 -1627448 5719792 1629736 5726176 1629944 5726576 1628360 5703512 -1628712 5701600 1628664 5701664 1628360 5703512 1629944 5726576 -1628360 5703512 1627384 5719672 1627448 5719792 1629944 5726576 -1628712 5701600 1628360 5703512 1629944 5726576 1743800 5687320 -1627904 5703304 1628360 5703512 1628552 5701744 1628488 5701744 -1628360 5703512 1628664 5701664 1628552 5701744 1628488 5701744 -1627904 5703304 1628360 5703512 1628488 5701744 1628320 5701688 -1627904 5703304 1621944 5703896 1628360 5703512 1628488 5701744 -1628360 5703512 1628448 5703536 1628712 5701600 1628664 5701664 -1628360 5703512 1629944 5726576 1628448 5703536 1628664 5701664 -1628360 5703512 1628448 5703536 1628664 5701664 1628552 5701744 -1628360 5703512 1628448 5703536 1628552 5701744 1628488 5701744 -1628448 5703536 1628712 5701600 1628664 5701664 1628552 5701744 -1628360 5703512 1629944 5726576 1628448 5703536 1628552 5701744 -1628712 5701600 1628448 5703536 1629944 5726576 1743800 5687320 -1629944 5726576 1743888 5687504 1743800 5687320 1628448 5703536 -1628712 5701600 1628448 5703536 1743800 5687320 1628712 5701448 -1629944 5726576 1628448 5703536 1628360 5703512 1627448 5719792 -1629944 5726576 1628448 5703536 1627448 5719792 1629736 5726176 -1628448 5703536 1628552 5701744 1628360 5703512 1627448 5719792 -1628360 5703512 1627384 5719672 1627448 5719792 1628448 5703536 -1627384 5719672 1627400 5719704 1627448 5719792 1628448 5703536 -1628360 5703512 1627384 5719672 1628448 5703536 1628552 5701744 -1628360 5703512 1627336 5719640 1627384 5719672 1628448 5703536 -1628360 5703512 1627336 5719640 1628448 5703536 1628552 5701744 -1627384 5719672 1627448 5719792 1628448 5703536 1627336 5719640 -1628360 5703512 1620552 5714440 1627336 5719640 1628448 5703536 -1620552 5714440 1627312 5719640 1627336 5719640 1628448 5703536 -1628360 5703512 1620552 5714440 1628448 5703536 1628552 5701744 -1628360 5703512 1620512 5714368 1620552 5714440 1628448 5703536 -1628360 5703512 1620160 5713848 1620512 5714368 1628448 5703536 -1628360 5703512 1620512 5714368 1628448 5703536 1628552 5701744 -1620552 5714440 1627336 5719640 1628448 5703536 1620512 5714368 -1627336 5719640 1627384 5719672 1628448 5703536 1620552 5714440 -1627448 5719792 1629944 5726576 1628448 5703536 1627384 5719672 -1628448 5703536 1743800 5687320 1628712 5701600 1628664 5701664 -1628448 5703536 1627448 5719792 1629944 5726576 1743800 5687320 -1743800 5687320 1628472 5703560 1629944 5726576 1743888 5687504 -1628448 5703536 1628472 5703560 1743800 5687320 1628712 5701600 -1628472 5703560 1629944 5726576 1743800 5687320 1628712 5701600 -1743800 5687320 1628712 5701448 1628712 5701600 1628472 5703560 -1628448 5703536 1628472 5703560 1628712 5701600 1628664 5701664 -1628448 5703536 1628472 5703560 1628664 5701664 1628552 5701744 -1628472 5703560 1743800 5687320 1628712 5701600 1628664 5701664 -1628448 5703536 1629944 5726576 1628472 5703560 1628664 5701664 -1629944 5726576 1628472 5703560 1628448 5703536 1627448 5719792 -1629944 5726576 1743800 5687320 1628472 5703560 1627448 5719792 -1629944 5726576 1628472 5703560 1627448 5719792 1629736 5726176 -1628448 5703536 1627384 5719672 1627448 5719792 1628472 5703560 -1627384 5719672 1627400 5719704 1627448 5719792 1628472 5703560 -1628448 5703536 1627336 5719640 1627384 5719672 1628472 5703560 -1628448 5703536 1620552 5714440 1627336 5719640 1628472 5703560 -1620552 5714440 1627312 5719640 1627336 5719640 1628472 5703560 -1627336 5719640 1627384 5719672 1628472 5703560 1620552 5714440 -1628448 5703536 1620512 5714368 1620552 5714440 1628472 5703560 -1628448 5703536 1628360 5703512 1620512 5714368 1628472 5703560 -1628360 5703512 1620160 5713848 1620512 5714368 1628472 5703560 -1628360 5703512 1620104 5713768 1620160 5713848 1628472 5703560 -1628360 5703512 1621944 5703896 1620104 5713768 1628472 5703560 -1620160 5713848 1620512 5714368 1628472 5703560 1620104 5713768 -1620512 5714368 1620552 5714440 1628472 5703560 1620160 5713848 -1620160 5713848 1620272 5714120 1620512 5714368 1628472 5703560 -1628360 5703512 1620104 5713768 1628472 5703560 1628448 5703536 -1620552 5714440 1627336 5719640 1628472 5703560 1620512 5714368 -1627384 5719672 1627448 5719792 1628472 5703560 1627336 5719640 -1628472 5703560 1628664 5701664 1628448 5703536 1628360 5703512 -1627448 5719792 1629944 5726576 1628472 5703560 1627384 5719672 -1628472 5703560 1628968 5703704 1743800 5687320 1628712 5701600 -1628472 5703560 1629944 5726576 1628968 5703704 1628712 5701600 -1629944 5726576 1628968 5703704 1628472 5703560 1627448 5719792 -1628968 5703704 1628712 5701600 1628472 5703560 1627448 5719792 -1628968 5703704 1629944 5726576 1743800 5687320 1628712 5701600 -1629944 5726576 1628968 5703704 1627448 5719792 1629736 5726176 -1628968 5703704 1628472 5703560 1627448 5719792 1629736 5726176 -1629944 5726576 1628968 5703704 1629736 5726176 1629904 5726504 -1627448 5719792 1629624 5725984 1629736 5726176 1628968 5703704 -1743800 5687320 1628968 5703704 1629944 5726576 1743888 5687504 -1629944 5726576 1743800 5687320 1628968 5703704 1629736 5726176 -1743800 5687320 1628712 5701448 1628712 5701600 1628968 5703704 -1628712 5701600 1628472 5703560 1628968 5703704 1628712 5701448 -1743800 5687320 1628712 5701448 1628968 5703704 1629944 5726576 -1743800 5687320 1663944 5646256 1628712 5701448 1628968 5703704 -1743800 5687320 1663944 5646256 1628968 5703704 1629944 5726576 -1743800 5687320 1664040 5646192 1663944 5646256 1628968 5703704 -1663944 5646256 1663880 5646248 1628712 5701448 1628968 5703704 -1628712 5701448 1628712 5701600 1628968 5703704 1663944 5646256 -1628472 5703560 1628968 5703704 1628712 5701600 1628664 5701664 -1628968 5703704 1628712 5701448 1628712 5701600 1628664 5701664 -1628472 5703560 1627448 5719792 1628968 5703704 1628664 5701664 -1628472 5703560 1628968 5703704 1628664 5701664 1628448 5703536 -1628472 5703560 1627448 5719792 1628968 5703704 1628448 5703536 -1628664 5701664 1628552 5701744 1628448 5703536 1628968 5703704 -1628552 5701744 1628360 5703512 1628448 5703536 1628968 5703704 -1628968 5703704 1628712 5701600 1628664 5701664 1628552 5701744 -1628448 5703536 1628472 5703560 1628968 5703704 1628552 5701744 -1628472 5703560 1627384 5719672 1627448 5719792 1628968 5703704 -1628472 5703560 1627384 5719672 1628968 5703704 1628448 5703536 -1627448 5719792 1629736 5726176 1628968 5703704 1627384 5719672 -1627384 5719672 1627400 5719704 1627448 5719792 1628968 5703704 -1628472 5703560 1627336 5719640 1627384 5719672 1628968 5703704 -1628472 5703560 1627336 5719640 1628968 5703704 1628448 5703536 -1628472 5703560 1620552 5714440 1627336 5719640 1628968 5703704 -1628472 5703560 1620552 5714440 1628968 5703704 1628448 5703536 -1620552 5714440 1627312 5719640 1627336 5719640 1628968 5703704 -1628472 5703560 1620512 5714368 1620552 5714440 1628968 5703704 -1628472 5703560 1620512 5714368 1628968 5703704 1628448 5703536 -1620552 5714440 1627336 5719640 1628968 5703704 1620512 5714368 -1628472 5703560 1620160 5713848 1620512 5714368 1628968 5703704 -1627336 5719640 1627384 5719672 1628968 5703704 1620552 5714440 -1627384 5719672 1627448 5719792 1628968 5703704 1627336 5719640 -1628968 5703704 1629472 5703936 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1629472 5703936 -1743800 5687320 1629472 5703936 1629944 5726576 1743888 5687504 -1629944 5726576 1632696 5739008 1743888 5687504 1629472 5703936 -1628968 5703704 1629472 5703936 1663944 5646256 1628712 5701448 -1629472 5703936 1743800 5687320 1663944 5646256 1628712 5701448 -1629944 5726576 1629472 5703936 1628968 5703704 1629736 5726176 -1629944 5726576 1629472 5703936 1629736 5726176 1629904 5726504 -1628968 5703704 1627448 5719792 1629736 5726176 1629472 5703936 -1628968 5703704 1627384 5719672 1627448 5719792 1629472 5703936 -1627384 5719672 1627400 5719704 1627448 5719792 1629472 5703936 -1627448 5719792 1629624 5725984 1629736 5726176 1629472 5703936 -1627448 5719792 1629736 5726176 1629472 5703936 1627384 5719672 -1629736 5726176 1629944 5726576 1629472 5703936 1627448 5719792 -1628968 5703704 1627384 5719672 1629472 5703936 1628712 5701448 -1629472 5703936 1743888 5687504 1743800 5687320 1663944 5646256 -1663944 5646256 1663880 5646248 1628712 5701448 1629472 5703936 -1628968 5703704 1629472 5703936 1628712 5701448 1628712 5701600 -1628968 5703704 1629472 5703936 1628712 5701600 1628664 5701664 -1629472 5703936 1663944 5646256 1628712 5701448 1628712 5701600 -1628968 5703704 1627384 5719672 1629472 5703936 1628664 5701664 -1629472 5703936 1628712 5701448 1628712 5701600 1628664 5701664 -1628968 5703704 1629472 5703936 1628664 5701664 1628552 5701744 -1629472 5703936 1629736 5726176 1629944 5726576 1743888 5687504 -1628968 5703704 1627336 5719640 1627384 5719672 1629472 5703936 -1627384 5719672 1627448 5719792 1629472 5703936 1627336 5719640 -1628968 5703704 1627336 5719640 1629472 5703936 1628664 5701664 -1628968 5703704 1620552 5714440 1627336 5719640 1629472 5703936 -1620552 5714440 1627312 5719640 1627336 5719640 1629472 5703936 -1628968 5703704 1620512 5714368 1620552 5714440 1629472 5703936 -1628968 5703704 1620512 5714368 1629472 5703936 1628664 5701664 -1628968 5703704 1628472 5703560 1620512 5714368 1629472 5703936 -1620512 5714368 1620552 5714440 1629472 5703936 1628472 5703560 -1628472 5703560 1620160 5713848 1620512 5714368 1629472 5703936 -1628968 5703704 1628472 5703560 1629472 5703936 1628664 5701664 -1620552 5714440 1627336 5719640 1629472 5703936 1620512 5714368 -1627336 5719640 1627384 5719672 1629472 5703936 1620552 5714440 -1743888 5687504 1629752 5704128 1629944 5726576 1632696 5739008 -1629472 5703936 1629752 5704128 1743888 5687504 1743800 5687320 -1629472 5703936 1629752 5704128 1743800 5687320 1663944 5646256 -1629472 5703936 1629752 5704128 1663944 5646256 1628712 5701448 -1743800 5687320 1664040 5646192 1663944 5646256 1629752 5704128 -1629752 5704128 1743888 5687504 1743800 5687320 1663944 5646256 -1629472 5703936 1629752 5704128 1628712 5701448 1628712 5701600 -1629752 5704128 1663944 5646256 1628712 5701448 1628712 5701600 -1629752 5704128 1743800 5687320 1663944 5646256 1628712 5701448 -1629472 5703936 1629944 5726576 1629752 5704128 1628712 5701600 -1663944 5646256 1663880 5646248 1628712 5701448 1629752 5704128 -1629472 5703936 1629752 5704128 1628712 5701600 1628664 5701664 -1629944 5726576 1629752 5704128 1629472 5703936 1629736 5726176 -1629944 5726576 1629752 5704128 1629736 5726176 1629904 5726504 -1629472 5703936 1627448 5719792 1629736 5726176 1629752 5704128 -1627448 5719792 1629624 5725984 1629736 5726176 1629752 5704128 -1629472 5703936 1627384 5719672 1627448 5719792 1629752 5704128 -1629472 5703936 1627336 5719640 1627384 5719672 1629752 5704128 -1627384 5719672 1627400 5719704 1627448 5719792 1629752 5704128 -1627384 5719672 1627448 5719792 1629752 5704128 1627336 5719640 -1627448 5719792 1629736 5726176 1629752 5704128 1627384 5719672 -1629752 5704128 1628712 5701600 1629472 5703936 1627336 5719640 -1629736 5726176 1629944 5726576 1629752 5704128 1627448 5719792 -1629752 5704128 1629944 5726576 1743888 5687504 1743800 5687320 -1629944 5726576 1743888 5687504 1629752 5704128 1629736 5726176 -1629472 5703936 1620552 5714440 1627336 5719640 1629752 5704128 -1627336 5719640 1627384 5719672 1629752 5704128 1620552 5714440 -1620552 5714440 1627312 5719640 1627336 5719640 1629752 5704128 -1629472 5703936 1620552 5714440 1629752 5704128 1628712 5701600 -1629472 5703936 1620512 5714368 1620552 5714440 1629752 5704128 -1629472 5703936 1628472 5703560 1620512 5714368 1629752 5704128 -1628472 5703560 1620160 5713848 1620512 5714368 1629752 5704128 -1629472 5703936 1628472 5703560 1629752 5704128 1628712 5701600 -1629472 5703936 1628968 5703704 1628472 5703560 1629752 5704128 -1628472 5703560 1620512 5714368 1629752 5704128 1628968 5703704 -1629472 5703936 1628968 5703704 1629752 5704128 1628712 5701600 -1620512 5714368 1620552 5714440 1629752 5704128 1628472 5703560 -1620552 5714440 1627336 5719640 1629752 5704128 1620512 5714368 -1743888 5687504 1629944 5704312 1629944 5726576 1632696 5739008 -1629752 5704128 1629944 5704312 1743888 5687504 1743800 5687320 -1629752 5704128 1629944 5704312 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1629944 5704312 -1629752 5704128 1629944 5704312 1663944 5646256 1628712 5701448 -1629752 5704128 1629944 5704312 1628712 5701448 1628712 5701600 -1629944 5704312 1743800 5687320 1663944 5646256 1628712 5701448 -1629752 5704128 1629944 5704312 1628712 5701600 1629472 5703936 -1629944 5704312 1663944 5646256 1628712 5701448 1628712 5701600 -1663944 5646256 1663880 5646248 1628712 5701448 1629944 5704312 -1629944 5704312 1743888 5687504 1743800 5687320 1663944 5646256 -1629752 5704128 1629944 5726576 1629944 5704312 1628712 5701600 -1629944 5726576 1629944 5704312 1629752 5704128 1629736 5726176 -1629944 5726576 1743888 5687504 1629944 5704312 1629736 5726176 -1629944 5726576 1629944 5704312 1629736 5726176 1629904 5726504 -1629752 5704128 1627448 5719792 1629736 5726176 1629944 5704312 -1627448 5719792 1629624 5725984 1629736 5726176 1629944 5704312 -1629752 5704128 1627384 5719672 1627448 5719792 1629944 5704312 -1627384 5719672 1627400 5719704 1627448 5719792 1629944 5704312 -1629752 5704128 1627336 5719640 1627384 5719672 1629944 5704312 -1629752 5704128 1620552 5714440 1627336 5719640 1629944 5704312 -1620552 5714440 1627312 5719640 1627336 5719640 1629944 5704312 -1627336 5719640 1627384 5719672 1629944 5704312 1620552 5714440 -1627384 5719672 1627448 5719792 1629944 5704312 1627336 5719640 -1627448 5719792 1629736 5726176 1629944 5704312 1627384 5719672 -1629944 5704312 1628712 5701600 1629752 5704128 1620552 5714440 -1629736 5726176 1629944 5726576 1629944 5704312 1627448 5719792 -1629944 5704312 1629944 5726576 1743888 5687504 1743800 5687320 -1629752 5704128 1620512 5714368 1620552 5714440 1629944 5704312 -1620552 5714440 1627336 5719640 1629944 5704312 1620512 5714368 -1629752 5704128 1628472 5703560 1620512 5714368 1629944 5704312 -1629752 5704128 1628968 5703704 1628472 5703560 1629944 5704312 -1628472 5703560 1620160 5713848 1620512 5714368 1629944 5704312 -1628472 5703560 1620104 5713768 1620160 5713848 1629944 5704312 -1620160 5713848 1620272 5714120 1620512 5714368 1629944 5704312 -1629752 5704128 1629472 5703936 1628968 5703704 1629944 5704312 -1628968 5703704 1628472 5703560 1629944 5704312 1629472 5703936 -1628472 5703560 1620160 5713848 1629944 5704312 1628968 5703704 -1629752 5704128 1629472 5703936 1629944 5704312 1628712 5701600 -1620512 5714368 1620552 5714440 1629944 5704312 1620160 5713848 -1743888 5687504 1630064 5704496 1629944 5726576 1632696 5739008 -1629944 5726576 1630064 5704496 1629944 5704312 1629736 5726176 -1630064 5704496 1743888 5687504 1629944 5704312 1629736 5726176 -1629944 5726576 1743888 5687504 1630064 5704496 1629736 5726176 -1629944 5726576 1630064 5704496 1629736 5726176 1629904 5726504 -1629944 5704312 1627448 5719792 1629736 5726176 1630064 5704496 -1629944 5704312 1627448 5719792 1630064 5704496 1743888 5687504 -1629736 5726176 1629944 5726576 1630064 5704496 1627448 5719792 -1627448 5719792 1629624 5725984 1629736 5726176 1630064 5704496 -1629944 5704312 1627384 5719672 1627448 5719792 1630064 5704496 -1629944 5704312 1627384 5719672 1630064 5704496 1743888 5687504 -1627384 5719672 1627400 5719704 1627448 5719792 1630064 5704496 -1629944 5704312 1627336 5719640 1627384 5719672 1630064 5704496 -1629944 5704312 1627336 5719640 1630064 5704496 1743888 5687504 -1629944 5704312 1620552 5714440 1627336 5719640 1630064 5704496 -1629944 5704312 1620512 5714368 1620552 5714440 1630064 5704496 -1629944 5704312 1620512 5714368 1630064 5704496 1743888 5687504 -1620552 5714440 1627312 5719640 1627336 5719640 1630064 5704496 -1620552 5714440 1627336 5719640 1630064 5704496 1620512 5714368 -1627336 5719640 1627384 5719672 1630064 5704496 1620552 5714440 -1627384 5719672 1627448 5719792 1630064 5704496 1627336 5719640 -1627448 5719792 1629736 5726176 1630064 5704496 1627384 5719672 -1629944 5704312 1630064 5704496 1743888 5687504 1743800 5687320 -1629944 5704312 1620512 5714368 1630064 5704496 1743800 5687320 -1630064 5704496 1629944 5726576 1743888 5687504 1743800 5687320 -1629944 5704312 1630064 5704496 1743800 5687320 1663944 5646256 -1629944 5704312 1620512 5714368 1630064 5704496 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630064 5704496 -1629944 5704312 1630064 5704496 1663944 5646256 1628712 5701448 -1629944 5704312 1620512 5714368 1630064 5704496 1628712 5701448 -1629944 5704312 1630064 5704496 1628712 5701448 1628712 5701600 -1663944 5646256 1663880 5646248 1628712 5701448 1630064 5704496 -1630064 5704496 1743800 5687320 1663944 5646256 1628712 5701448 -1630064 5704496 1743888 5687504 1743800 5687320 1663944 5646256 -1629944 5704312 1620160 5713848 1620512 5714368 1630064 5704496 -1620512 5714368 1620552 5714440 1630064 5704496 1620160 5713848 -1629944 5704312 1620160 5713848 1630064 5704496 1628712 5701448 -1629944 5704312 1628472 5703560 1620160 5713848 1630064 5704496 -1628472 5703560 1620104 5713768 1620160 5713848 1630064 5704496 -1629944 5704312 1628472 5703560 1630064 5704496 1628712 5701448 -1620160 5713848 1620272 5714120 1620512 5714368 1630064 5704496 -1629944 5704312 1628968 5703704 1628472 5703560 1630064 5704496 -1629944 5704312 1628968 5703704 1630064 5704496 1628712 5701448 -1629944 5704312 1629472 5703936 1628968 5703704 1630064 5704496 -1629944 5704312 1629472 5703936 1630064 5704496 1628712 5701448 -1628472 5703560 1620160 5713848 1630064 5704496 1628968 5703704 -1629944 5704312 1629752 5704128 1629472 5703936 1630064 5704496 -1629944 5704312 1629752 5704128 1630064 5704496 1628712 5701448 -1629472 5703936 1628968 5703704 1630064 5704496 1629752 5704128 -1628968 5703704 1628472 5703560 1630064 5704496 1629472 5703936 -1620160 5713848 1620512 5714368 1630064 5704496 1628472 5703560 -1743888 5687504 1630112 5704600 1629944 5726576 1632696 5739008 -1630064 5704496 1630112 5704600 1743888 5687504 1743800 5687320 -1630064 5704496 1629944 5726576 1630112 5704600 1743800 5687320 -1629944 5726576 1630112 5704600 1630064 5704496 1629736 5726176 -1630064 5704496 1627448 5719792 1629736 5726176 1630112 5704600 -1630112 5704600 1743800 5687320 1630064 5704496 1627448 5719792 -1629736 5726176 1629944 5726576 1630112 5704600 1627448 5719792 -1629944 5726576 1630112 5704600 1629736 5726176 1629904 5726504 -1627448 5719792 1629624 5725984 1629736 5726176 1630112 5704600 -1630112 5704600 1629944 5726576 1743888 5687504 1743800 5687320 -1629944 5726576 1743888 5687504 1630112 5704600 1629736 5726176 -1630064 5704496 1627384 5719672 1627448 5719792 1630112 5704600 -1627448 5719792 1629736 5726176 1630112 5704600 1627384 5719672 -1630064 5704496 1627384 5719672 1630112 5704600 1743800 5687320 -1627384 5719672 1627400 5719704 1627448 5719792 1630112 5704600 -1630064 5704496 1627336 5719640 1627384 5719672 1630112 5704600 -1630064 5704496 1627336 5719640 1630112 5704600 1743800 5687320 -1630064 5704496 1620552 5714440 1627336 5719640 1630112 5704600 -1630064 5704496 1620552 5714440 1630112 5704600 1743800 5687320 -1620552 5714440 1627312 5719640 1627336 5719640 1630112 5704600 -1630064 5704496 1620512 5714368 1620552 5714440 1630112 5704600 -1630064 5704496 1620160 5713848 1620512 5714368 1630112 5704600 -1630064 5704496 1620160 5713848 1630112 5704600 1743800 5687320 -1620512 5714368 1620552 5714440 1630112 5704600 1620160 5713848 -1620552 5714440 1627336 5719640 1630112 5704600 1620512 5714368 -1620160 5713848 1620272 5714120 1620512 5714368 1630112 5704600 -1627336 5719640 1627384 5719672 1630112 5704600 1620552 5714440 -1627384 5719672 1627448 5719792 1630112 5704600 1627336 5719640 -1630064 5704496 1630112 5704600 1743800 5687320 1663944 5646256 -1630112 5704600 1743888 5687504 1743800 5687320 1663944 5646256 -1630064 5704496 1620160 5713848 1630112 5704600 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630112 5704600 -1630064 5704496 1630112 5704600 1663944 5646256 1628712 5701448 -1630064 5704496 1628472 5703560 1620160 5713848 1630112 5704600 -1628472 5703560 1620104 5713768 1620160 5713848 1630112 5704600 -1628472 5703560 1628360 5703512 1620104 5713768 1630112 5704600 -1628360 5703512 1621944 5703896 1620104 5713768 1630112 5704600 -1620104 5713768 1620160 5713848 1630112 5704600 1628360 5703512 -1620160 5713848 1620512 5714368 1630112 5704600 1620104 5713768 -1630064 5704496 1628472 5703560 1630112 5704600 1663944 5646256 -1630064 5704496 1628968 5703704 1628472 5703560 1630112 5704600 -1630064 5704496 1628968 5703704 1630112 5704600 1663944 5646256 -1628472 5703560 1628448 5703536 1628360 5703512 1630112 5704600 -1630064 5704496 1629472 5703936 1628968 5703704 1630112 5704600 -1630064 5704496 1629472 5703936 1630112 5704600 1663944 5646256 -1630064 5704496 1629752 5704128 1629472 5703936 1630112 5704600 -1630064 5704496 1629752 5704128 1630112 5704600 1663944 5646256 -1628968 5703704 1628472 5703560 1630112 5704600 1629472 5703936 -1630064 5704496 1629944 5704312 1629752 5704128 1630112 5704600 -1629472 5703936 1628968 5703704 1630112 5704600 1629752 5704128 -1628472 5703560 1628360 5703512 1630112 5704600 1628968 5703704 -1743888 5687504 1630136 5704624 1629944 5726576 1632696 5739008 -1630112 5704600 1630136 5704624 1743888 5687504 1743800 5687320 -1630112 5704600 1630136 5704624 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630136 5704624 -1630136 5704624 1743888 5687504 1743800 5687320 1663944 5646256 -1630112 5704600 1629944 5726576 1630136 5704624 1663944 5646256 -1629944 5726576 1630136 5704624 1630112 5704600 1629736 5726176 -1630112 5704600 1627448 5719792 1629736 5726176 1630136 5704624 -1630112 5704600 1627384 5719672 1627448 5719792 1630136 5704624 -1627448 5719792 1629736 5726176 1630136 5704624 1627384 5719672 -1629944 5726576 1630136 5704624 1629736 5726176 1629904 5726504 -1627384 5719672 1627400 5719704 1627448 5719792 1630136 5704624 -1627448 5719792 1629624 5725984 1629736 5726176 1630136 5704624 -1630136 5704624 1663944 5646256 1630112 5704600 1627384 5719672 -1629736 5726176 1629944 5726576 1630136 5704624 1627448 5719792 -1630136 5704624 1629944 5726576 1743888 5687504 1743800 5687320 -1629944 5726576 1743888 5687504 1630136 5704624 1629736 5726176 -1630112 5704600 1627336 5719640 1627384 5719672 1630136 5704624 -1627384 5719672 1627448 5719792 1630136 5704624 1627336 5719640 -1630112 5704600 1627336 5719640 1630136 5704624 1663944 5646256 -1630112 5704600 1620552 5714440 1627336 5719640 1630136 5704624 -1620552 5714440 1627312 5719640 1627336 5719640 1630136 5704624 -1630112 5704600 1620512 5714368 1620552 5714440 1630136 5704624 -1630112 5704600 1620160 5713848 1620512 5714368 1630136 5704624 -1630112 5704600 1620104 5713768 1620160 5713848 1630136 5704624 -1630112 5704600 1628360 5703512 1620104 5713768 1630136 5704624 -1630112 5704600 1628472 5703560 1628360 5703512 1630136 5704624 -1628360 5703512 1621944 5703896 1620104 5713768 1630136 5704624 -1628360 5703512 1620104 5713768 1630136 5704624 1628472 5703560 -1620104 5713768 1620160 5713848 1630136 5704624 1628360 5703512 -1620160 5713848 1620512 5714368 1630136 5704624 1620104 5713768 -1620512 5714368 1620552 5714440 1630136 5704624 1620160 5713848 -1630112 5704600 1628472 5703560 1630136 5704624 1663944 5646256 -1620160 5713848 1620272 5714120 1620512 5714368 1630136 5704624 -1628472 5703560 1628448 5703536 1628360 5703512 1630136 5704624 -1620552 5714440 1627336 5719640 1630136 5704624 1620512 5714368 -1627336 5719640 1627384 5719672 1630136 5704624 1620552 5714440 -1630112 5704600 1630136 5704624 1663944 5646256 1630064 5704496 -1630136 5704624 1743800 5687320 1663944 5646256 1630064 5704496 -1630112 5704600 1628472 5703560 1630136 5704624 1630064 5704496 -1663944 5646256 1628712 5701448 1630064 5704496 1630136 5704624 -1663944 5646256 1628712 5701448 1630136 5704624 1743800 5687320 -1628712 5701448 1629944 5704312 1630064 5704496 1630136 5704624 -1663944 5646256 1663880 5646248 1628712 5701448 1630136 5704624 -1630064 5704496 1630112 5704600 1630136 5704624 1628712 5701448 -1630112 5704600 1628968 5703704 1628472 5703560 1630136 5704624 -1627336 5719640 1630128 5704656 1620552 5714440 1627312 5719640 -1620552 5714440 1630128 5704656 1630136 5704624 1620512 5714368 -1630136 5704624 1620160 5713848 1620512 5714368 1630128 5704656 -1630136 5704624 1620104 5713768 1620160 5713848 1630128 5704656 -1630136 5704624 1628360 5703512 1620104 5713768 1630128 5704656 -1628360 5703512 1621944 5703896 1620104 5713768 1630128 5704656 -1630136 5704624 1628472 5703560 1628360 5703512 1630128 5704656 -1630136 5704624 1630112 5704600 1628472 5703560 1630128 5704656 -1628472 5703560 1628360 5703512 1630128 5704656 1630112 5704600 -1628360 5703512 1620104 5713768 1630128 5704656 1628472 5703560 -1620104 5713768 1620160 5713848 1630128 5704656 1628360 5703512 -1620160 5713848 1620512 5714368 1630128 5704656 1620104 5713768 -1630128 5704656 1627336 5719640 1630136 5704624 1630112 5704600 -1620160 5713848 1620272 5714120 1620512 5714368 1630128 5704656 -1628472 5703560 1628448 5703536 1628360 5703512 1630128 5704656 -1620552 5714440 1627336 5719640 1630128 5704656 1620512 5714368 -1620512 5714368 1620552 5714440 1630128 5704656 1620160 5713848 -1630136 5704624 1630128 5704656 1627336 5719640 1627384 5719672 -1630136 5704624 1630128 5704656 1627384 5719672 1627448 5719792 -1630136 5704624 1630128 5704656 1627448 5719792 1629736 5726176 -1630128 5704656 1627384 5719672 1627448 5719792 1629736 5726176 -1627384 5719672 1627400 5719704 1627448 5719792 1630128 5704656 -1627448 5719792 1629624 5725984 1629736 5726176 1630128 5704656 -1630136 5704624 1630128 5704656 1629736 5726176 1629944 5726576 -1630128 5704656 1627448 5719792 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1630128 5704656 -1630136 5704624 1630112 5704600 1630128 5704656 1629944 5726576 -1630136 5704624 1630128 5704656 1629944 5726576 1743888 5687504 -1630128 5704656 1620552 5714440 1627336 5719640 1627384 5719672 -1630128 5704656 1627336 5719640 1627384 5719672 1627448 5719792 -1630112 5704600 1628968 5703704 1628472 5703560 1630128 5704656 -1630112 5704600 1628968 5703704 1630128 5704656 1630136 5704624 -1628472 5703560 1628360 5703512 1630128 5704656 1628968 5703704 -1630112 5704600 1629472 5703936 1628968 5703704 1630128 5704656 -1630112 5704600 1629472 5703936 1630128 5704656 1630136 5704624 -1630112 5704600 1629752 5704128 1629472 5703936 1630128 5704656 -1630112 5704600 1629752 5704128 1630128 5704656 1630136 5704624 -1630112 5704600 1630064 5704496 1629752 5704128 1630128 5704656 -1630112 5704600 1630064 5704496 1630128 5704656 1630136 5704624 -1629472 5703936 1628968 5703704 1630128 5704656 1629752 5704128 -1630064 5704496 1629944 5704312 1629752 5704128 1630128 5704656 -1630064 5704496 1629944 5704312 1630128 5704656 1630112 5704600 -1629752 5704128 1629472 5703936 1630128 5704656 1629944 5704312 -1628968 5703704 1628472 5703560 1630128 5704656 1629472 5703936 -1743888 5687504 1630152 5704824 1629944 5726576 1632696 5739008 -1630136 5704624 1630152 5704824 1743888 5687504 1743800 5687320 -1630136 5704624 1630152 5704824 1743800 5687320 1663944 5646256 -1629944 5726576 1630152 5704824 1630136 5704624 1630128 5704656 -1629944 5726576 1630152 5704824 1630128 5704656 1629736 5726176 -1630128 5704656 1627448 5719792 1629736 5726176 1630152 5704824 -1630128 5704656 1627384 5719672 1627448 5719792 1630152 5704824 -1627448 5719792 1629736 5726176 1630152 5704824 1627384 5719672 -1629944 5726576 1630152 5704824 1629736 5726176 1629904 5726504 -1627384 5719672 1627400 5719704 1627448 5719792 1630152 5704824 -1627448 5719792 1629624 5725984 1629736 5726176 1630152 5704824 -1629736 5726176 1629944 5726576 1630152 5704824 1627448 5719792 -1630152 5704824 1630136 5704624 1630128 5704656 1627384 5719672 -1630136 5704624 1630128 5704656 1630152 5704824 1743800 5687320 -1630152 5704824 1629944 5726576 1743888 5687504 1743800 5687320 -1630128 5704656 1627336 5719640 1627384 5719672 1630152 5704824 -1627384 5719672 1627448 5719792 1630152 5704824 1627336 5719640 -1630128 5704656 1627336 5719640 1630152 5704824 1630136 5704624 -1630128 5704656 1620552 5714440 1627336 5719640 1630152 5704824 -1620552 5714440 1627312 5719640 1627336 5719640 1630152 5704824 -1630128 5704656 1620552 5714440 1630152 5704824 1630136 5704624 -1630128 5704656 1620512 5714368 1620552 5714440 1630152 5704824 -1630128 5704656 1620512 5714368 1630152 5704824 1630136 5704624 -1620552 5714440 1627336 5719640 1630152 5704824 1620512 5714368 -1630128 5704656 1620160 5713848 1620512 5714368 1630152 5704824 -1630128 5704656 1620104 5713768 1620160 5713848 1630152 5704824 -1630128 5704656 1628360 5703512 1620104 5713768 1630152 5704824 -1628360 5703512 1621944 5703896 1620104 5713768 1630152 5704824 -1628360 5703512 1627904 5703304 1621944 5703896 1630152 5704824 -1621944 5703896 1620040 5713712 1620104 5713768 1630152 5704824 -1630128 5704656 1628472 5703560 1628360 5703512 1630152 5704824 -1630128 5704656 1628968 5703704 1628472 5703560 1630152 5704824 -1628472 5703560 1628360 5703512 1630152 5704824 1628968 5703704 -1628360 5703512 1621944 5703896 1630152 5704824 1628472 5703560 -1620104 5713768 1620160 5713848 1630152 5704824 1621944 5703896 -1620160 5713848 1620272 5714120 1620512 5714368 1630152 5704824 -1628472 5703560 1628448 5703536 1628360 5703512 1630152 5704824 -1630128 5704656 1628968 5703704 1630152 5704824 1630136 5704624 -1620512 5714368 1620552 5714440 1630152 5704824 1620160 5713848 -1620160 5713848 1620512 5714368 1630152 5704824 1620104 5713768 -1627336 5719640 1627384 5719672 1630152 5704824 1620552 5714440 -1630128 5704656 1629472 5703936 1628968 5703704 1630152 5704824 -1628968 5703704 1628472 5703560 1630152 5704824 1629472 5703936 -1630128 5704656 1629752 5704128 1629472 5703936 1630152 5704824 -1630128 5704656 1629752 5704128 1630152 5704824 1630136 5704624 -1630128 5704656 1629944 5704312 1629752 5704128 1630152 5704824 -1629752 5704128 1629472 5703936 1630152 5704824 1629944 5704312 -1630128 5704656 1630064 5704496 1629944 5704312 1630152 5704824 -1630128 5704656 1630112 5704600 1630064 5704496 1630152 5704824 -1630128 5704656 1630064 5704496 1630152 5704824 1630136 5704624 -1629944 5704312 1629752 5704128 1630152 5704824 1630064 5704496 -1629472 5703936 1628968 5703704 1630152 5704824 1629752 5704128 -1629944 5726576 1743888 5687504 1630152 5704824 1629736 5726176 -1627448 5719792 1630080 5705344 1630152 5704824 1627384 5719672 -1630152 5704824 1627336 5719640 1627384 5719672 1630080 5705344 -1627384 5719672 1627448 5719792 1630080 5705344 1627336 5719640 -1627448 5719792 1630080 5705344 1627384 5719672 1627400 5719704 -1629736 5726176 1630080 5705344 1627448 5719792 1629624 5725984 -1630152 5704824 1630080 5705344 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1630080 5705344 -1630152 5704824 1620552 5714440 1627336 5719640 1630080 5705344 -1627336 5719640 1627384 5719672 1630080 5705344 1620552 5714440 -1620552 5714440 1627312 5719640 1627336 5719640 1630080 5705344 -1630152 5704824 1620512 5714368 1620552 5714440 1630080 5705344 -1630152 5704824 1620160 5713848 1620512 5714368 1630080 5705344 -1620160 5713848 1620272 5714120 1620512 5714368 1630080 5705344 -1620512 5714368 1620552 5714440 1630080 5705344 1620160 5713848 -1630152 5704824 1620104 5713768 1620160 5713848 1630080 5705344 -1630152 5704824 1621944 5703896 1620104 5713768 1630080 5705344 -1621944 5703896 1620040 5713712 1620104 5713768 1630080 5705344 -1630152 5704824 1628360 5703512 1621944 5703896 1630080 5705344 -1628360 5703512 1627904 5703304 1621944 5703896 1630080 5705344 -1627904 5703304 1623720 5702872 1621944 5703896 1630080 5705344 -1628360 5703512 1627904 5703304 1630080 5705344 1630152 5704824 -1630152 5704824 1628472 5703560 1628360 5703512 1630080 5705344 -1628360 5703512 1627904 5703304 1630080 5705344 1628472 5703560 -1630152 5704824 1628968 5703704 1628472 5703560 1630080 5705344 -1630152 5704824 1629472 5703936 1628968 5703704 1630080 5705344 -1628968 5703704 1628472 5703560 1630080 5705344 1629472 5703936 -1628472 5703560 1628360 5703512 1630080 5705344 1628968 5703704 -1621944 5703896 1620104 5713768 1630080 5705344 1627904 5703304 -1628472 5703560 1628448 5703536 1628360 5703512 1630080 5705344 -1620160 5713848 1620512 5714368 1630080 5705344 1620104 5713768 -1620104 5713768 1620160 5713848 1630080 5705344 1621944 5703896 -1620552 5714440 1627336 5719640 1630080 5705344 1620512 5714368 -1630152 5704824 1629752 5704128 1629472 5703936 1630080 5705344 -1629472 5703936 1628968 5703704 1630080 5705344 1629752 5704128 -1630152 5704824 1629944 5704312 1629752 5704128 1630080 5705344 -1630080 5705344 1629944 5726576 1630152 5704824 1629752 5704128 -1630152 5704824 1630080 5705344 1629944 5726576 1743888 5687504 -1629944 5726576 1632696 5739008 1743888 5687504 1630080 5705344 -1630080 5705344 1629736 5726176 1629944 5726576 1743888 5687504 -1630152 5704824 1630080 5705344 1743888 5687504 1743800 5687320 -1630152 5704824 1630080 5705344 1743800 5687320 1630136 5704624 -1630152 5704824 1629752 5704128 1630080 5705344 1743800 5687320 -1630080 5705344 1629944 5726576 1743888 5687504 1743800 5687320 -1630080 5705344 1627448 5719792 1629736 5726176 1629944 5726576 -1627448 5719792 1629736 5726176 1630080 5705344 1627384 5719672 -1743888 5687504 1630096 5705696 1629944 5726576 1632696 5739008 -1629944 5726576 1630096 5705696 1630080 5705344 1629736 5726176 -1629944 5726576 1630096 5705696 1629736 5726176 1629904 5726504 -1630080 5705344 1630096 5705696 1743888 5687504 1743800 5687320 -1630080 5705344 1630096 5705696 1743800 5687320 1630152 5704824 -1743800 5687320 1630136 5704624 1630152 5704824 1630096 5705696 -1630096 5705696 1743888 5687504 1743800 5687320 1630152 5704824 -1630080 5705344 1627448 5719792 1629736 5726176 1630096 5705696 -1627448 5719792 1629624 5725984 1629736 5726176 1630096 5705696 -1629736 5726176 1629944 5726576 1630096 5705696 1627448 5719792 -1630096 5705696 1630152 5704824 1630080 5705344 1627448 5719792 -1630080 5705344 1627384 5719672 1627448 5719792 1630096 5705696 -1630080 5705344 1627336 5719640 1627384 5719672 1630096 5705696 -1630080 5705344 1620552 5714440 1627336 5719640 1630096 5705696 -1627336 5719640 1627384 5719672 1630096 5705696 1620552 5714440 -1620552 5714440 1627312 5719640 1627336 5719640 1630096 5705696 -1627384 5719672 1627400 5719704 1627448 5719792 1630096 5705696 -1630080 5705344 1620512 5714368 1620552 5714440 1630096 5705696 -1620552 5714440 1627336 5719640 1630096 5705696 1620512 5714368 -1630080 5705344 1620160 5713848 1620512 5714368 1630096 5705696 -1620160 5713848 1620272 5714120 1620512 5714368 1630096 5705696 -1630080 5705344 1620104 5713768 1620160 5713848 1630096 5705696 -1620160 5713848 1620512 5714368 1630096 5705696 1620104 5713768 -1630080 5705344 1621944 5703896 1620104 5713768 1630096 5705696 -1621944 5703896 1620040 5713712 1620104 5713768 1630096 5705696 -1630080 5705344 1627904 5703304 1621944 5703896 1630096 5705696 -1630080 5705344 1628360 5703512 1627904 5703304 1630096 5705696 -1627904 5703304 1623720 5702872 1621944 5703896 1630096 5705696 -1630080 5705344 1628472 5703560 1628360 5703512 1630096 5705696 -1628360 5703512 1627904 5703304 1630096 5705696 1628472 5703560 -1630080 5705344 1628968 5703704 1628472 5703560 1630096 5705696 -1627904 5703304 1621944 5703896 1630096 5705696 1628360 5703512 -1628472 5703560 1628448 5703536 1628360 5703512 1630096 5705696 -1620104 5713768 1620160 5713848 1630096 5705696 1621944 5703896 -1621944 5703896 1620104 5713768 1630096 5705696 1627904 5703304 -1620512 5714368 1620552 5714440 1630096 5705696 1620160 5713848 -1627448 5719792 1629736 5726176 1630096 5705696 1627384 5719672 -1630080 5705344 1628472 5703560 1630096 5705696 1630152 5704824 -1627384 5719672 1627448 5719792 1630096 5705696 1627336 5719640 -1630096 5705696 1629944 5726576 1743888 5687504 1743800 5687320 -1629944 5726576 1743888 5687504 1630096 5705696 1629736 5726176 -1620552 5714440 1630064 5705848 1630096 5705696 1620512 5714368 -1630096 5705696 1630064 5705848 1627336 5719640 1627384 5719672 -1627336 5719640 1630064 5705848 1620552 5714440 1627312 5719640 -1620552 5714440 1627336 5719640 1630064 5705848 1620512 5714368 -1630096 5705696 1620160 5713848 1620512 5714368 1630064 5705848 -1620512 5714368 1620552 5714440 1630064 5705848 1620160 5713848 -1620160 5713848 1620272 5714120 1620512 5714368 1630064 5705848 -1630096 5705696 1620104 5713768 1620160 5713848 1630064 5705848 -1630096 5705696 1621944 5703896 1620104 5713768 1630064 5705848 -1621944 5703896 1620040 5713712 1620104 5713768 1630064 5705848 -1620104 5713768 1620160 5713848 1630064 5705848 1621944 5703896 -1630096 5705696 1627904 5703304 1621944 5703896 1630064 5705848 -1627904 5703304 1623720 5702872 1621944 5703896 1630064 5705848 -1623720 5702872 1623616 5702904 1621944 5703896 1630064 5705848 -1627904 5703304 1623816 5702824 1623720 5702872 1630064 5705848 -1630096 5705696 1628360 5703512 1627904 5703304 1630064 5705848 -1630096 5705696 1628472 5703560 1628360 5703512 1630064 5705848 -1630096 5705696 1630080 5705344 1628472 5703560 1630064 5705848 -1628472 5703560 1628360 5703512 1630064 5705848 1630080 5705344 -1630080 5705344 1628968 5703704 1628472 5703560 1630064 5705848 -1628360 5703512 1627904 5703304 1630064 5705848 1628472 5703560 -1628472 5703560 1628448 5703536 1628360 5703512 1630064 5705848 -1621944 5703896 1620104 5713768 1630064 5705848 1623720 5702872 -1627904 5703304 1623720 5702872 1630064 5705848 1628360 5703512 -1620160 5713848 1620512 5714368 1630064 5705848 1620104 5713768 -1630096 5705696 1630064 5705848 1627384 5719672 1627448 5719792 -1630064 5705848 1627336 5719640 1627384 5719672 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1630064 5705848 -1630096 5705696 1630064 5705848 1627448 5719792 1629736 5726176 -1627448 5719792 1629624 5725984 1629736 5726176 1630064 5705848 -1630096 5705696 1630064 5705848 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1630064 5705848 -1630064 5705848 1627448 5719792 1629736 5726176 1629944 5726576 -1630064 5705848 1627384 5719672 1627448 5719792 1629736 5726176 -1630064 5705848 1629944 5726576 1630096 5705696 1630080 5705344 -1630096 5705696 1630064 5705848 1629944 5726576 1743888 5687504 -1630064 5705848 1620552 5714440 1627336 5719640 1627384 5719672 -1627336 5719640 1629984 5706008 1620552 5714440 1627312 5719640 -1620552 5714440 1629984 5706008 1630064 5705848 1620512 5714368 -1630064 5705848 1620160 5713848 1620512 5714368 1629984 5706008 -1620160 5713848 1620272 5714120 1620512 5714368 1629984 5706008 -1620512 5714368 1620552 5714440 1629984 5706008 1620160 5713848 -1620552 5714440 1627336 5719640 1629984 5706008 1620512 5714368 -1630064 5705848 1620104 5713768 1620160 5713848 1629984 5706008 -1620160 5713848 1620512 5714368 1629984 5706008 1620104 5713768 -1630064 5705848 1621944 5703896 1620104 5713768 1629984 5706008 -1621944 5703896 1620040 5713712 1620104 5713768 1629984 5706008 -1630064 5705848 1623720 5702872 1621944 5703896 1629984 5706008 -1630064 5705848 1627904 5703304 1623720 5702872 1629984 5706008 -1623720 5702872 1623616 5702904 1621944 5703896 1629984 5706008 -1627904 5703304 1623816 5702824 1623720 5702872 1629984 5706008 -1621944 5703896 1620104 5713768 1629984 5706008 1623720 5702872 -1623720 5702872 1621944 5703896 1629984 5706008 1627904 5703304 -1630064 5705848 1628360 5703512 1627904 5703304 1629984 5706008 -1627904 5703304 1623720 5702872 1629984 5706008 1628360 5703512 -1630064 5705848 1628472 5703560 1628360 5703512 1629984 5706008 -1630064 5705848 1630080 5705344 1628472 5703560 1629984 5706008 -1630064 5705848 1630096 5705696 1630080 5705344 1629984 5706008 -1630080 5705344 1628472 5703560 1629984 5706008 1630096 5705696 -1630080 5705344 1628968 5703704 1628472 5703560 1629984 5706008 -1630080 5705344 1628968 5703704 1629984 5706008 1630096 5705696 -1630080 5705344 1629472 5703936 1628968 5703704 1629984 5706008 -1628472 5703560 1628360 5703512 1629984 5706008 1628968 5703704 -1628472 5703560 1628448 5703536 1628360 5703512 1629984 5706008 -1628360 5703512 1627904 5703304 1629984 5706008 1628472 5703560 -1620104 5713768 1620160 5713848 1629984 5706008 1621944 5703896 -1630064 5705848 1629984 5706008 1627336 5719640 1627384 5719672 -1630064 5705848 1629984 5706008 1627384 5719672 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1629984 5706008 -1629984 5706008 1620552 5714440 1627336 5719640 1627384 5719672 -1630064 5705848 1629984 5706008 1627448 5719792 1629736 5726176 -1629984 5706008 1627384 5719672 1627448 5719792 1629736 5726176 -1627448 5719792 1629624 5725984 1629736 5726176 1629984 5706008 -1630064 5705848 1629984 5706008 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1629984 5706008 -1630064 5705848 1629984 5706008 1629944 5726576 1630096 5705696 -1629984 5706008 1627448 5719792 1629736 5726176 1629944 5726576 -1629984 5706008 1627336 5719640 1627384 5719672 1627448 5719792 -1629984 5706008 1629944 5726576 1630064 5705848 1630096 5705696 -1627336 5719640 1629904 5706120 1620552 5714440 1627312 5719640 -1629904 5706120 1629984 5706008 1620552 5714440 1627312 5719640 -1620552 5714440 1620560 5714512 1627312 5719640 1629904 5706120 -1629984 5706008 1629904 5706120 1627336 5719640 1627384 5719672 -1629984 5706008 1620552 5714440 1629904 5706120 1627384 5719672 -1620552 5714440 1629904 5706120 1629984 5706008 1620512 5714368 -1620552 5714440 1627312 5719640 1629904 5706120 1620512 5714368 -1629984 5706008 1620160 5713848 1620512 5714368 1629904 5706120 -1629984 5706008 1620104 5713768 1620160 5713848 1629904 5706120 -1620160 5713848 1620272 5714120 1620512 5714368 1629904 5706120 -1620160 5713848 1620512 5714368 1629904 5706120 1620104 5713768 -1629904 5706120 1627384 5719672 1629984 5706008 1620104 5713768 -1620512 5714368 1620552 5714440 1629904 5706120 1620160 5713848 -1627336 5719640 1627384 5719672 1629904 5706120 1627312 5719640 -1629984 5706008 1621944 5703896 1620104 5713768 1629904 5706120 -1621944 5703896 1620040 5713712 1620104 5713768 1629904 5706120 -1620104 5713768 1620160 5713848 1629904 5706120 1621944 5703896 -1629984 5706008 1621944 5703896 1629904 5706120 1627384 5719672 -1629984 5706008 1623720 5702872 1621944 5703896 1629904 5706120 -1623720 5702872 1623616 5702904 1621944 5703896 1629904 5706120 -1629984 5706008 1623720 5702872 1629904 5706120 1627384 5719672 -1629984 5706008 1627904 5703304 1623720 5702872 1629904 5706120 -1629984 5706008 1628360 5703512 1627904 5703304 1629904 5706120 -1627904 5703304 1623816 5702824 1623720 5702872 1629904 5706120 -1629984 5706008 1628360 5703512 1629904 5706120 1627384 5719672 -1623720 5702872 1621944 5703896 1629904 5706120 1627904 5703304 -1627904 5703304 1623720 5702872 1629904 5706120 1628360 5703512 -1629984 5706008 1628472 5703560 1628360 5703512 1629904 5706120 -1628360 5703512 1627904 5703304 1629904 5706120 1628472 5703560 -1629984 5706008 1628968 5703704 1628472 5703560 1629904 5706120 -1629984 5706008 1630080 5705344 1628968 5703704 1629904 5706120 -1629984 5706008 1630096 5705696 1630080 5705344 1629904 5706120 -1629984 5706008 1630064 5705848 1630096 5705696 1629904 5706120 -1630080 5705344 1629472 5703936 1628968 5703704 1629904 5706120 -1630080 5705344 1628968 5703704 1629904 5706120 1630096 5705696 -1628968 5703704 1628472 5703560 1629904 5706120 1630080 5705344 -1628472 5703560 1628448 5703536 1628360 5703512 1629904 5706120 -1629984 5706008 1630096 5705696 1629904 5706120 1627384 5719672 -1628472 5703560 1628360 5703512 1629904 5706120 1628968 5703704 -1621944 5703896 1620104 5713768 1629904 5706120 1623720 5702872 -1629984 5706008 1629904 5706120 1627384 5719672 1627448 5719792 -1629984 5706008 1629904 5706120 1627448 5719792 1629736 5726176 -1627384 5719672 1627400 5719704 1627448 5719792 1629904 5706120 -1629904 5706120 1627336 5719640 1627384 5719672 1627448 5719792 -1629984 5706008 1630096 5705696 1629904 5706120 1627448 5719792 -1620512 5714368 1629848 5706168 1620160 5713848 1620272 5714120 -1620160 5713848 1629848 5706168 1629904 5706120 1620104 5713768 -1629848 5706168 1620512 5714368 1629904 5706120 1620104 5713768 -1629904 5706120 1621944 5703896 1620104 5713768 1629848 5706168 -1621944 5703896 1620040 5713712 1620104 5713768 1629848 5706168 -1629904 5706120 1621944 5703896 1629848 5706168 1620512 5714368 -1620160 5713848 1620512 5714368 1629848 5706168 1620104 5713768 -1620104 5713768 1620160 5713848 1629848 5706168 1621944 5703896 -1629904 5706120 1629848 5706168 1620512 5714368 1620552 5714440 -1629904 5706120 1621944 5703896 1629848 5706168 1620552 5714440 -1629904 5706120 1629848 5706168 1620552 5714440 1627312 5719640 -1629904 5706120 1621944 5703896 1629848 5706168 1627312 5719640 -1629904 5706120 1629848 5706168 1627312 5719640 1627336 5719640 -1629904 5706120 1621944 5703896 1629848 5706168 1627336 5719640 -1629848 5706168 1620552 5714440 1627312 5719640 1627336 5719640 -1620552 5714440 1620560 5714512 1627312 5719640 1629848 5706168 -1629848 5706168 1620160 5713848 1620512 5714368 1620552 5714440 -1629848 5706168 1620512 5714368 1620552 5714440 1627312 5719640 -1629904 5706120 1629848 5706168 1627336 5719640 1627384 5719672 -1629904 5706120 1621944 5703896 1629848 5706168 1627384 5719672 -1629848 5706168 1627312 5719640 1627336 5719640 1627384 5719672 -1629904 5706120 1629848 5706168 1627384 5719672 1627448 5719792 -1629904 5706120 1623720 5702872 1621944 5703896 1629848 5706168 -1629904 5706120 1623720 5702872 1629848 5706168 1627384 5719672 -1623720 5702872 1623616 5702904 1621944 5703896 1629848 5706168 -1621944 5703896 1620104 5713768 1629848 5706168 1623720 5702872 -1629904 5706120 1627904 5703304 1623720 5702872 1629848 5706168 -1629904 5706120 1627904 5703304 1629848 5706168 1627384 5719672 -1627904 5703304 1623816 5702824 1623720 5702872 1629848 5706168 -1629904 5706120 1628360 5703512 1627904 5703304 1629848 5706168 -1629904 5706120 1628472 5703560 1628360 5703512 1629848 5706168 -1629904 5706120 1628472 5703560 1629848 5706168 1627384 5719672 -1628472 5703560 1628448 5703536 1628360 5703512 1629848 5706168 -1627904 5703304 1623720 5702872 1629848 5706168 1628360 5703512 -1628360 5703512 1627904 5703304 1629848 5706168 1628472 5703560 -1629904 5706120 1628968 5703704 1628472 5703560 1629848 5706168 -1628472 5703560 1628360 5703512 1629848 5706168 1628968 5703704 -1629904 5706120 1628968 5703704 1629848 5706168 1627384 5719672 -1629904 5706120 1630080 5705344 1628968 5703704 1629848 5706168 -1629904 5706120 1630080 5705344 1629848 5706168 1627384 5719672 -1630080 5705344 1629472 5703936 1628968 5703704 1629848 5706168 -1629904 5706120 1630096 5705696 1630080 5705344 1629848 5706168 -1629904 5706120 1629984 5706008 1630096 5705696 1629848 5706168 -1629904 5706120 1629984 5706008 1629848 5706168 1627384 5719672 -1629984 5706008 1630064 5705848 1630096 5705696 1629848 5706168 -1630096 5705696 1630080 5705344 1629848 5706168 1629984 5706008 -1630080 5705344 1628968 5703704 1629848 5706168 1630096 5705696 -1628968 5703704 1628472 5703560 1629848 5706168 1630080 5705344 -1623720 5702872 1621944 5703896 1629848 5706168 1627904 5703304 -1629848 5706168 1629824 5706192 1627312 5719640 1627336 5719640 -1629848 5706168 1629824 5706192 1627336 5719640 1627384 5719672 -1629824 5706192 1627312 5719640 1627336 5719640 1627384 5719672 -1627312 5719640 1629824 5706192 1620552 5714440 1620560 5714512 -1629848 5706168 1620552 5714440 1629824 5706192 1627384 5719672 -1629824 5706192 1620552 5714440 1627312 5719640 1627336 5719640 -1620552 5714440 1629824 5706192 1629848 5706168 1620512 5714368 -1629848 5706168 1620160 5713848 1620512 5714368 1629824 5706192 -1629824 5706192 1627384 5719672 1629848 5706168 1620160 5713848 -1629848 5706168 1620104 5713768 1620160 5713848 1629824 5706192 -1620160 5713848 1620512 5714368 1629824 5706192 1620104 5713768 -1629848 5706168 1620104 5713768 1629824 5706192 1627384 5719672 -1620552 5714440 1627312 5719640 1629824 5706192 1620512 5714368 -1620160 5713848 1620272 5714120 1620512 5714368 1629824 5706192 -1629848 5706168 1621944 5703896 1620104 5713768 1629824 5706192 -1621944 5703896 1620040 5713712 1620104 5713768 1629824 5706192 -1629848 5706168 1623720 5702872 1621944 5703896 1629824 5706192 -1623720 5702872 1623616 5702904 1621944 5703896 1629824 5706192 -1629848 5706168 1623720 5702872 1629824 5706192 1627384 5719672 -1620104 5713768 1620160 5713848 1629824 5706192 1621944 5703896 -1621944 5703896 1620104 5713768 1629824 5706192 1623720 5702872 -1620512 5714368 1620552 5714440 1629824 5706192 1620160 5713848 -1629848 5706168 1629824 5706192 1627384 5719672 1629904 5706120 -1629824 5706192 1627336 5719640 1627384 5719672 1629904 5706120 -1629848 5706168 1623720 5702872 1629824 5706192 1629904 5706120 -1627384 5719672 1627448 5719792 1629904 5706120 1629824 5706192 -1627384 5719672 1627448 5719792 1629824 5706192 1627336 5719640 -1627384 5719672 1627400 5719704 1627448 5719792 1629824 5706192 -1629904 5706120 1629848 5706168 1629824 5706192 1627448 5719792 -1629848 5706168 1627904 5703304 1623720 5702872 1629824 5706192 -1627904 5703304 1623816 5702824 1623720 5702872 1629824 5706192 -1623720 5702872 1621944 5703896 1629824 5706192 1627904 5703304 -1629848 5706168 1627904 5703304 1629824 5706192 1629904 5706120 -1629848 5706168 1628360 5703512 1627904 5703304 1629824 5706192 -1629848 5706168 1628360 5703512 1629824 5706192 1629904 5706120 -1629848 5706168 1628472 5703560 1628360 5703512 1629824 5706192 -1629848 5706168 1628968 5703704 1628472 5703560 1629824 5706192 -1629848 5706168 1628968 5703704 1629824 5706192 1629904 5706120 -1628472 5703560 1628448 5703536 1628360 5703512 1629824 5706192 -1628360 5703512 1627904 5703304 1629824 5706192 1628472 5703560 -1628472 5703560 1628360 5703512 1629824 5706192 1628968 5703704 -1629848 5706168 1630080 5705344 1628968 5703704 1629824 5706192 -1628968 5703704 1628472 5703560 1629824 5706192 1630080 5705344 -1630080 5705344 1629472 5703936 1628968 5703704 1629824 5706192 -1629848 5706168 1630080 5705344 1629824 5706192 1629904 5706120 -1629848 5706168 1630096 5705696 1630080 5705344 1629824 5706192 -1627904 5703304 1623720 5702872 1629824 5706192 1628360 5703512 -1627448 5719792 1629984 5706008 1629904 5706120 1629824 5706192 -1627312 5719640 1629808 5706208 1620552 5714440 1620560 5714512 -1629824 5706192 1629808 5706208 1627312 5719640 1627336 5719640 -1629824 5706192 1629808 5706208 1627336 5719640 1627384 5719672 -1629824 5706192 1629808 5706208 1627384 5719672 1627448 5719792 -1629808 5706208 1627336 5719640 1627384 5719672 1627448 5719792 -1629808 5706208 1627312 5719640 1627336 5719640 1627384 5719672 -1629824 5706192 1620552 5714440 1629808 5706208 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1629808 5706208 -1620552 5714440 1629808 5706208 1629824 5706192 1620512 5714368 -1629808 5706208 1627448 5719792 1629824 5706192 1620512 5714368 -1629808 5706208 1620552 5714440 1627312 5719640 1627336 5719640 -1620552 5714440 1627312 5719640 1629808 5706208 1620512 5714368 -1629824 5706192 1629808 5706208 1627448 5719792 1629904 5706120 -1629808 5706208 1627384 5719672 1627448 5719792 1629904 5706120 -1629824 5706192 1620512 5714368 1629808 5706208 1629904 5706120 -1629824 5706192 1620160 5713848 1620512 5714368 1629808 5706208 -1629824 5706192 1620104 5713768 1620160 5713848 1629808 5706208 -1629824 5706192 1621944 5703896 1620104 5713768 1629808 5706208 -1621944 5703896 1620040 5713712 1620104 5713768 1629808 5706208 -1620104 5713768 1620160 5713848 1629808 5706208 1621944 5703896 -1629824 5706192 1621944 5703896 1629808 5706208 1629904 5706120 -1620512 5714368 1620552 5714440 1629808 5706208 1620160 5713848 -1620160 5713848 1620272 5714120 1620512 5714368 1629808 5706208 -1629824 5706192 1623720 5702872 1621944 5703896 1629808 5706208 -1623720 5702872 1623616 5702904 1621944 5703896 1629808 5706208 -1629824 5706192 1627904 5703304 1623720 5702872 1629808 5706208 -1627904 5703304 1623816 5702824 1623720 5702872 1629808 5706208 -1621944 5703896 1620104 5713768 1629808 5706208 1623720 5702872 -1629824 5706192 1627904 5703304 1629808 5706208 1629904 5706120 -1623720 5702872 1621944 5703896 1629808 5706208 1627904 5703304 -1620160 5713848 1620512 5714368 1629808 5706208 1620104 5713768 -1629824 5706192 1629808 5706208 1629904 5706120 1629848 5706168 -1629824 5706192 1628360 5703512 1627904 5703304 1629808 5706208 -1627904 5703304 1623720 5702872 1629808 5706208 1628360 5703512 -1629824 5706192 1628360 5703512 1629808 5706208 1629904 5706120 -1629824 5706192 1628472 5703560 1628360 5703512 1629808 5706208 -1629824 5706192 1628472 5703560 1629808 5706208 1629904 5706120 -1628472 5703560 1628448 5703536 1628360 5703512 1629808 5706208 -1629824 5706192 1628968 5703704 1628472 5703560 1629808 5706208 -1629824 5706192 1630080 5705344 1628968 5703704 1629808 5706208 -1630080 5705344 1629472 5703936 1628968 5703704 1629808 5706208 -1629824 5706192 1630080 5705344 1629808 5706208 1629904 5706120 -1628472 5703560 1628360 5703512 1629808 5706208 1628968 5703704 -1628968 5703704 1628472 5703560 1629808 5706208 1630080 5705344 -1629824 5706192 1629848 5706168 1630080 5705344 1629808 5706208 -1628360 5703512 1627904 5703304 1629808 5706208 1628472 5703560 -1627448 5719792 1629984 5706008 1629904 5706120 1629808 5706208 -1620104 5713768 1629752 5706192 1621944 5703896 1620040 5713712 -1629808 5706208 1629752 5706192 1620104 5713768 1620160 5713848 -1621944 5703896 1629752 5706192 1629808 5706208 1623720 5702872 -1621944 5703896 1629752 5706192 1623720 5702872 1623616 5702904 -1629808 5706208 1623720 5702872 1629752 5706192 1620160 5713848 -1629752 5706192 1621944 5703896 1620104 5713768 1620160 5713848 -1629808 5706208 1627904 5703304 1623720 5702872 1629752 5706192 -1627904 5703304 1623816 5702824 1623720 5702872 1629752 5706192 -1629808 5706208 1628360 5703512 1627904 5703304 1629752 5706192 -1623720 5702872 1621944 5703896 1629752 5706192 1627904 5703304 -1629808 5706208 1628360 5703512 1629752 5706192 1620160 5713848 -1627904 5703304 1623720 5702872 1629752 5706192 1628360 5703512 -1629808 5706208 1629752 5706192 1620160 5713848 1620512 5714368 -1629752 5706192 1620104 5713768 1620160 5713848 1620512 5714368 -1629808 5706208 1629752 5706192 1620512 5714368 1620552 5714440 -1629808 5706208 1628360 5703512 1629752 5706192 1620552 5714440 -1629808 5706208 1629752 5706192 1620552 5714440 1627312 5719640 -1620552 5714440 1620560 5714512 1627312 5719640 1629752 5706192 -1629752 5706192 1620512 5714368 1620552 5714440 1627312 5719640 -1629808 5706208 1629752 5706192 1627312 5719640 1627336 5719640 -1629808 5706208 1629752 5706192 1627336 5719640 1627384 5719672 -1629808 5706208 1628360 5703512 1629752 5706192 1627336 5719640 -1629752 5706192 1620552 5714440 1627312 5719640 1627336 5719640 -1620160 5713848 1620272 5714120 1620512 5714368 1629752 5706192 -1629752 5706192 1620160 5713848 1620512 5714368 1620552 5714440 -1629808 5706208 1628472 5703560 1628360 5703512 1629752 5706192 -1628360 5703512 1627904 5703304 1629752 5706192 1628472 5703560 -1629808 5706208 1628472 5703560 1629752 5706192 1627336 5719640 -1628472 5703560 1628448 5703536 1628360 5703512 1629752 5706192 -1629808 5706208 1628968 5703704 1628472 5703560 1629752 5706192 -1629808 5706208 1628968 5703704 1629752 5706192 1627336 5719640 -1629808 5706208 1630080 5705344 1628968 5703704 1629752 5706192 -1629808 5706208 1629824 5706192 1630080 5705344 1629752 5706192 -1630080 5705344 1629472 5703936 1628968 5703704 1629752 5706192 -1629808 5706208 1629824 5706192 1629752 5706192 1627336 5719640 -1628968 5703704 1628472 5703560 1629752 5706192 1630080 5705344 -1630080 5705344 1628968 5703704 1629752 5706192 1629824 5706192 -1629824 5706192 1629848 5706168 1630080 5705344 1629752 5706192 -1629824 5706192 1629848 5706168 1629752 5706192 1629808 5706208 -1629848 5706168 1630096 5705696 1630080 5705344 1629752 5706192 -1629848 5706168 1629984 5706008 1630096 5705696 1629752 5706192 -1629848 5706168 1629904 5706120 1629984 5706008 1629752 5706192 -1629984 5706008 1630064 5705848 1630096 5705696 1629752 5706192 -1629984 5706008 1630064 5705848 1629752 5706192 1629904 5706120 -1630096 5705696 1630080 5705344 1629752 5706192 1630064 5705848 -1630080 5705344 1628968 5703704 1629752 5706192 1630096 5705696 -1629848 5706168 1629904 5706120 1629752 5706192 1629824 5706192 -1628472 5703560 1628360 5703512 1629752 5706192 1628968 5703704 -1621944 5703896 1620104 5713768 1629752 5706192 1623720 5702872 -1628968 5703704 1629736 5706152 1629752 5706192 1630080 5705344 -1628968 5703704 1629736 5706152 1630080 5705344 1629472 5703936 -1629752 5706192 1630096 5705696 1630080 5705344 1629736 5706152 -1629752 5706192 1630064 5705848 1630096 5705696 1629736 5706152 -1629752 5706192 1629984 5706008 1630064 5705848 1629736 5706152 -1629752 5706192 1629904 5706120 1629984 5706008 1629736 5706152 -1629752 5706192 1629848 5706168 1629904 5706120 1629736 5706152 -1629984 5706008 1630064 5705848 1629736 5706152 1629904 5706120 -1629904 5706120 1629984 5706008 1629736 5706152 1629848 5706168 -1630064 5705848 1630096 5705696 1629736 5706152 1629984 5706008 -1630080 5705344 1628968 5703704 1629736 5706152 1630096 5705696 -1630096 5705696 1630080 5705344 1629736 5706152 1630064 5705848 -1629752 5706192 1629824 5706192 1629848 5706168 1629736 5706152 -1629848 5706168 1629904 5706120 1629736 5706152 1629824 5706192 -1629752 5706192 1629808 5706208 1629824 5706192 1629736 5706152 -1629752 5706192 1629736 5706152 1628472 5703560 1628360 5703512 -1629752 5706192 1629736 5706152 1628360 5703512 1627904 5703304 -1628472 5703560 1628448 5703536 1628360 5703512 1629736 5706152 -1629752 5706192 1629736 5706152 1627904 5703304 1623720 5702872 -1627904 5703304 1623816 5702824 1623720 5702872 1629736 5706152 -1629736 5706152 1628360 5703512 1627904 5703304 1623720 5702872 -1629752 5706192 1629736 5706152 1623720 5702872 1621944 5703896 -1623720 5702872 1623616 5702904 1621944 5703896 1629736 5706152 -1629736 5706152 1627904 5703304 1623720 5702872 1621944 5703896 -1629736 5706152 1628472 5703560 1628360 5703512 1627904 5703304 -1629736 5706152 1621944 5703896 1629752 5706192 1629824 5706192 -1629752 5706192 1629736 5706152 1621944 5703896 1620104 5713768 -1629736 5706152 1628968 5703704 1628472 5703560 1628360 5703512 -1628968 5703704 1628472 5703560 1629736 5706152 1630080 5705344 -1629736 5706152 1629656 5706024 1627904 5703304 1623720 5702872 -1627904 5703304 1623816 5702824 1623720 5702872 1629656 5706024 -1629656 5706024 1628360 5703512 1627904 5703304 1623720 5702872 -1629736 5706152 1629656 5706024 1623720 5702872 1621944 5703896 -1623720 5702872 1623616 5702904 1621944 5703896 1629656 5706024 -1629656 5706024 1627904 5703304 1623720 5702872 1621944 5703896 -1629736 5706152 1629656 5706024 1621944 5703896 1629752 5706192 -1629656 5706024 1623720 5702872 1621944 5703896 1629752 5706192 -1628360 5703512 1629656 5706024 1629736 5706152 1628472 5703560 -1628360 5703512 1627904 5703304 1629656 5706024 1628472 5703560 -1628360 5703512 1629656 5706024 1628472 5703560 1628448 5703536 -1621944 5703896 1620104 5713768 1629752 5706192 1629656 5706024 -1629736 5706152 1628968 5703704 1628472 5703560 1629656 5706024 -1628472 5703560 1628360 5703512 1629656 5706024 1628968 5703704 -1629736 5706152 1628968 5703704 1629656 5706024 1629752 5706192 -1629736 5706152 1630080 5705344 1628968 5703704 1629656 5706024 -1630080 5705344 1629472 5703936 1628968 5703704 1629656 5706024 -1630080 5705344 1629752 5704128 1629472 5703936 1629656 5706024 -1629736 5706152 1630096 5705696 1630080 5705344 1629656 5706024 -1629736 5706152 1630064 5705848 1630096 5705696 1629656 5706024 -1629736 5706152 1629984 5706008 1630064 5705848 1629656 5706024 -1629736 5706152 1629904 5706120 1629984 5706008 1629656 5706024 -1629736 5706152 1629848 5706168 1629904 5706120 1629656 5706024 -1629984 5706008 1630064 5705848 1629656 5706024 1629904 5706120 -1630096 5705696 1630080 5705344 1629656 5706024 1630064 5705848 -1630064 5705848 1630096 5705696 1629656 5706024 1629984 5706008 -1628968 5703704 1628472 5703560 1629656 5706024 1629472 5703936 -1629736 5706152 1629904 5706120 1629656 5706024 1629752 5706192 -1630080 5705344 1629472 5703936 1629656 5706024 1630096 5705696 -1629472 5703936 1629616 5705808 1629656 5706024 1630080 5705344 -1629472 5703936 1629616 5705808 1630080 5705344 1629752 5704128 -1629616 5705808 1629656 5706024 1630080 5705344 1629752 5704128 -1629616 5705808 1628968 5703704 1629656 5706024 1630080 5705344 -1629472 5703936 1628968 5703704 1629616 5705808 1629752 5704128 -1629656 5706024 1629616 5705808 1628968 5703704 1628472 5703560 -1629656 5706024 1630080 5705344 1629616 5705808 1628472 5703560 -1629616 5705808 1629472 5703936 1628968 5703704 1628472 5703560 -1629656 5706024 1629616 5705808 1628472 5703560 1628360 5703512 -1629656 5706024 1630080 5705344 1629616 5705808 1628360 5703512 -1629656 5706024 1629616 5705808 1628360 5703512 1627904 5703304 -1629656 5706024 1629616 5705808 1627904 5703304 1623720 5702872 -1629656 5706024 1630080 5705344 1629616 5705808 1627904 5703304 -1628472 5703560 1628448 5703536 1628360 5703512 1629616 5705808 -1629616 5705808 1628472 5703560 1628360 5703512 1627904 5703304 -1629616 5705808 1628968 5703704 1628472 5703560 1628360 5703512 -1629656 5706024 1630096 5705696 1630080 5705344 1629616 5705808 -1630080 5705344 1629752 5704128 1629616 5705808 1630096 5705696 -1629656 5706024 1630096 5705696 1629616 5705808 1627904 5703304 -1629656 5706024 1630064 5705848 1630096 5705696 1629616 5705808 -1629656 5706024 1630064 5705848 1629616 5705808 1627904 5703304 -1629656 5706024 1629984 5706008 1630064 5705848 1629616 5705808 -1629656 5706024 1629984 5706008 1629616 5705808 1627904 5703304 -1629656 5706024 1629904 5706120 1629984 5706008 1629616 5705808 -1630064 5705848 1630096 5705696 1629616 5705808 1629984 5706008 -1630096 5705696 1630080 5705344 1629616 5705808 1630064 5705848 -1630080 5705344 1630152 5704824 1629752 5704128 1629616 5705808 -1629752 5704128 1629472 5703936 1629616 5705808 1630152 5704824 -1630080 5705344 1630152 5704824 1629616 5705808 1630096 5705696 -1630152 5704824 1629944 5704312 1629752 5704128 1629616 5705808 -1629616 5705808 1629696 5705552 1629752 5704128 1629472 5703936 -1629616 5705808 1630152 5704824 1629696 5705552 1629472 5703936 -1629616 5705808 1629696 5705552 1629472 5703936 1628968 5703704 -1629696 5705552 1629752 5704128 1629472 5703936 1628968 5703704 -1629616 5705808 1629696 5705552 1628968 5703704 1628472 5703560 -1629616 5705808 1630152 5704824 1629696 5705552 1628472 5703560 -1629696 5705552 1629472 5703936 1628968 5703704 1628472 5703560 -1629696 5705552 1630152 5704824 1629752 5704128 1629472 5703936 -1629752 5704128 1629696 5705552 1630152 5704824 1629944 5704312 -1629752 5704128 1629472 5703936 1629696 5705552 1629944 5704312 -1629696 5705552 1629616 5705808 1630152 5704824 1629944 5704312 -1630152 5704824 1630064 5704496 1629944 5704312 1629696 5705552 -1630152 5704824 1630064 5704496 1629696 5705552 1629616 5705808 -1629944 5704312 1629752 5704128 1629696 5705552 1630064 5704496 -1630152 5704824 1630128 5704656 1630064 5704496 1629696 5705552 -1629616 5705808 1629696 5705552 1628472 5703560 1628360 5703512 -1630152 5704824 1629696 5705552 1629616 5705808 1630080 5705344 -1629616 5705808 1630096 5705696 1630080 5705344 1629696 5705552 -1629696 5705552 1628472 5703560 1629616 5705808 1630096 5705696 -1630152 5704824 1630064 5704496 1629696 5705552 1630080 5705344 -1629616 5705808 1630064 5705848 1630096 5705696 1629696 5705552 -1630096 5705696 1630080 5705344 1629696 5705552 1630064 5705848 -1629616 5705808 1630064 5705848 1629696 5705552 1628472 5703560 -1629616 5705808 1629984 5706008 1630064 5705848 1629696 5705552 -1630080 5705344 1630152 5704824 1629696 5705552 1630096 5705696 -1629696 5705552 1629696 5705512 1629472 5703936 1628968 5703704 -1629696 5705552 1629696 5705512 1628968 5703704 1628472 5703560 -1629696 5705512 1629472 5703936 1628968 5703704 1628472 5703560 -1629696 5705552 1629696 5705512 1628472 5703560 1629616 5705808 -1629696 5705512 1628968 5703704 1628472 5703560 1629616 5705808 -1629752 5704128 1629696 5705512 1629696 5705552 1629944 5704312 -1629696 5705552 1629944 5704312 1629696 5705512 1629616 5705808 -1629696 5705512 1629752 5704128 1629472 5703936 1628968 5703704 -1629696 5705552 1630064 5704496 1629944 5704312 1629696 5705512 -1629944 5704312 1629752 5704128 1629696 5705512 1630064 5704496 -1629696 5705552 1630064 5704496 1629696 5705512 1629616 5705808 -1629752 5704128 1629472 5703936 1629696 5705512 1629944 5704312 -1629696 5705552 1630152 5704824 1630064 5704496 1629696 5705512 -1629696 5705552 1630152 5704824 1629696 5705512 1629616 5705808 -1629696 5705552 1630080 5705344 1630152 5704824 1629696 5705512 -1629696 5705552 1630080 5705344 1629696 5705512 1629616 5705808 -1630064 5704496 1629944 5704312 1629696 5705512 1630152 5704824 -1630152 5704824 1630128 5704656 1630064 5704496 1629696 5705512 -1630152 5704824 1630064 5704496 1629696 5705512 1630080 5705344 -1628472 5703560 1628360 5703512 1629616 5705808 1629696 5705512 -1629696 5705552 1630096 5705696 1630080 5705344 1629696 5705512 -1629696 5705552 1630064 5705848 1630096 5705696 1629696 5705512 -1629696 5705552 1630096 5705696 1629696 5705512 1629616 5705808 -1630080 5705344 1630152 5704824 1629696 5705512 1630096 5705696 -1628968 5703704 1629672 5705472 1629696 5705512 1629472 5703936 -1629696 5705512 1629672 5705472 1628472 5703560 1629616 5705808 -1629696 5705512 1629672 5705472 1629616 5705808 1629696 5705552 -1629672 5705472 1628472 5703560 1629616 5705808 1629696 5705552 -1629696 5705512 1629752 5704128 1629472 5703936 1629672 5705472 -1629472 5703936 1628968 5703704 1629672 5705472 1629752 5704128 -1629672 5705472 1629696 5705552 1629696 5705512 1629752 5704128 -1629696 5705512 1629944 5704312 1629752 5704128 1629672 5705472 -1629696 5705512 1630064 5704496 1629944 5704312 1629672 5705472 -1629752 5704128 1629472 5703936 1629672 5705472 1629944 5704312 -1629696 5705512 1630152 5704824 1630064 5704496 1629672 5705472 -1630064 5704496 1629944 5704312 1629672 5705472 1630152 5704824 -1629696 5705512 1630152 5704824 1629672 5705472 1629696 5705552 -1629944 5704312 1629752 5704128 1629672 5705472 1630064 5704496 -1629672 5705472 1628968 5703704 1628472 5703560 1629616 5705808 -1628968 5703704 1628472 5703560 1629672 5705472 1629472 5703936 -1630152 5704824 1630128 5704656 1630064 5704496 1629672 5705472 -1630128 5704656 1630112 5704600 1630064 5704496 1629672 5705472 -1630064 5704496 1629944 5704312 1629672 5705472 1630128 5704656 -1630152 5704824 1630128 5704656 1629672 5705472 1629696 5705512 -1629696 5705512 1630080 5705344 1630152 5704824 1629672 5705472 -1629696 5705512 1630096 5705696 1630080 5705344 1629672 5705472 -1630152 5704824 1630128 5704656 1629672 5705472 1630080 5705344 -1629696 5705512 1630080 5705344 1629672 5705472 1629696 5705552 -1628472 5703560 1628360 5703512 1629616 5705808 1629672 5705472 -1629672 5705472 1629568 5705376 1629616 5705808 1629696 5705552 -1629672 5705472 1629568 5705376 1629696 5705552 1629696 5705512 -1628472 5703560 1629568 5705376 1629672 5705472 1628968 5703704 -1629672 5705472 1628968 5703704 1629568 5705376 1629696 5705552 -1629672 5705472 1629472 5703936 1628968 5703704 1629568 5705376 -1629672 5705472 1629752 5704128 1629472 5703936 1629568 5705376 -1629672 5705472 1629944 5704312 1629752 5704128 1629568 5705376 -1629752 5704128 1629472 5703936 1629568 5705376 1629944 5704312 -1629672 5705472 1630064 5704496 1629944 5704312 1629568 5705376 -1629672 5705472 1630128 5704656 1630064 5704496 1629568 5705376 -1630128 5704656 1630112 5704600 1630064 5704496 1629568 5705376 -1629944 5704312 1629752 5704128 1629568 5705376 1630064 5704496 -1630064 5704496 1629944 5704312 1629568 5705376 1630128 5704656 -1628968 5703704 1628472 5703560 1629568 5705376 1629472 5703936 -1629672 5705472 1630128 5704656 1629568 5705376 1629696 5705552 -1629472 5703936 1628968 5703704 1629568 5705376 1629752 5704128 -1629672 5705472 1630152 5704824 1630128 5704656 1629568 5705376 -1630128 5704656 1630064 5704496 1629568 5705376 1630152 5704824 -1629672 5705472 1630080 5705344 1630152 5704824 1629568 5705376 -1629672 5705472 1630080 5705344 1629568 5705376 1629696 5705552 -1630152 5704824 1630128 5704656 1629568 5705376 1630080 5705344 -1629568 5705376 1628472 5703560 1629616 5705808 1629696 5705552 -1628472 5703560 1629616 5705808 1629568 5705376 1628968 5703704 -1629672 5705472 1629696 5705512 1630080 5705344 1629568 5705376 -1629616 5705808 1629568 5705376 1628472 5703560 1628360 5703512 -1628472 5703560 1628448 5703536 1628360 5703512 1629568 5705376 -1629616 5705808 1629696 5705552 1629568 5705376 1628360 5703512 -1629568 5705376 1628968 5703704 1628472 5703560 1628360 5703512 -1629616 5705808 1629568 5705376 1628360 5703512 1627904 5703304 -1629616 5705808 1629568 5705376 1627904 5703304 1629656 5706024 -1629616 5705808 1629696 5705552 1629568 5705376 1627904 5703304 -1629568 5705376 1628472 5703560 1628360 5703512 1627904 5703304 -1629616 5705808 1629376 5705272 1627904 5703304 1629656 5706024 -1627904 5703304 1623720 5702872 1629656 5706024 1629376 5705272 -1627904 5703304 1623816 5702824 1623720 5702872 1629376 5705272 -1623720 5702872 1621944 5703896 1629656 5706024 1629376 5705272 -1629656 5706024 1629616 5705808 1629376 5705272 1623720 5702872 -1629376 5705272 1629568 5705376 1627904 5703304 1623720 5702872 -1629568 5705376 1629376 5705272 1629616 5705808 1629696 5705552 -1629616 5705808 1629568 5705376 1629376 5705272 1629656 5706024 -1627904 5703304 1629376 5705272 1629568 5705376 1628360 5703512 -1627904 5703304 1623720 5702872 1629376 5705272 1628360 5703512 -1629376 5705272 1629616 5705808 1629568 5705376 1628360 5703512 -1629568 5705376 1628472 5703560 1628360 5703512 1629376 5705272 -1628472 5703560 1628448 5703536 1628360 5703512 1629376 5705272 -1629568 5705376 1628472 5703560 1629376 5705272 1629616 5705808 -1629568 5705376 1628968 5703704 1628472 5703560 1629376 5705272 -1629568 5705376 1629472 5703936 1628968 5703704 1629376 5705272 -1629568 5705376 1629752 5704128 1629472 5703936 1629376 5705272 -1629568 5705376 1629944 5704312 1629752 5704128 1629376 5705272 -1629568 5705376 1630064 5704496 1629944 5704312 1629376 5705272 -1629944 5704312 1629752 5704128 1629376 5705272 1630064 5704496 -1629568 5705376 1630128 5704656 1630064 5704496 1629376 5705272 -1630128 5704656 1630112 5704600 1630064 5704496 1629376 5705272 -1630128 5704656 1630136 5704624 1630112 5704600 1629376 5705272 -1629568 5705376 1630152 5704824 1630128 5704656 1629376 5705272 -1630064 5704496 1629944 5704312 1629376 5705272 1630112 5704600 -1630128 5704656 1630112 5704600 1629376 5705272 1630152 5704824 -1629472 5703936 1628968 5703704 1629376 5705272 1629752 5704128 -1629752 5704128 1629472 5703936 1629376 5705272 1629944 5704312 -1629568 5705376 1630080 5705344 1630152 5704824 1629376 5705272 -1629568 5705376 1630152 5704824 1629376 5705272 1629616 5705808 -1628968 5703704 1628472 5703560 1629376 5705272 1629472 5703936 -1628360 5703512 1627904 5703304 1629376 5705272 1628472 5703560 -1628472 5703560 1628360 5703512 1629376 5705272 1628968 5703704 -1629656 5706024 1629312 5705264 1623720 5702872 1621944 5703896 -1623720 5702872 1623616 5702904 1621944 5703896 1629312 5705264 -1623720 5702872 1629312 5705264 1629376 5705272 1627904 5703304 -1623720 5702872 1629312 5705264 1627904 5703304 1623816 5702824 -1629376 5705272 1629312 5705264 1629656 5706024 1629616 5705808 -1629656 5706024 1629312 5705264 1621944 5703896 1629752 5706192 -1629376 5705272 1628360 5703512 1627904 5703304 1629312 5705264 -1627904 5703304 1623720 5702872 1629312 5705264 1628360 5703512 -1629656 5706024 1629616 5705808 1629312 5705264 1621944 5703896 -1629312 5705264 1627904 5703304 1623720 5702872 1621944 5703896 -1629376 5705272 1629312 5705264 1629616 5705808 1629568 5705376 -1629312 5705264 1629616 5705808 1629376 5705272 1628360 5703512 -1629376 5705272 1628472 5703560 1628360 5703512 1629312 5705264 -1628472 5703560 1628448 5703536 1628360 5703512 1629312 5705264 -1628360 5703512 1627904 5703304 1629312 5705264 1628472 5703560 -1629376 5705272 1628472 5703560 1629312 5705264 1629616 5705808 -1629376 5705272 1628968 5703704 1628472 5703560 1629312 5705264 -1629376 5705272 1629472 5703936 1628968 5703704 1629312 5705264 -1629376 5705272 1629752 5704128 1629472 5703936 1629312 5705264 -1629376 5705272 1629944 5704312 1629752 5704128 1629312 5705264 -1629472 5703936 1628968 5703704 1629312 5705264 1629752 5704128 -1629376 5705272 1629752 5704128 1629312 5705264 1629616 5705808 -1628472 5703560 1628360 5703512 1629312 5705264 1628968 5703704 -1628968 5703704 1628472 5703560 1629312 5705264 1629472 5703936 -1621944 5703896 1629208 5705288 1629312 5705264 1623720 5702872 -1621944 5703896 1629208 5705288 1623720 5702872 1623616 5702904 -1621944 5703896 1629656 5706024 1629208 5705288 1623720 5702872 -1629656 5706024 1629208 5705288 1621944 5703896 1629752 5706192 -1629312 5705264 1629208 5705288 1629656 5706024 1629616 5705808 -1629312 5705264 1629208 5705288 1629616 5705808 1629376 5705272 -1629208 5705288 1629656 5706024 1629616 5705808 1629376 5705272 -1629208 5705288 1629376 5705272 1629312 5705264 1623720 5702872 -1629312 5705264 1627904 5703304 1623720 5702872 1629208 5705288 -1627904 5703304 1623816 5702824 1623720 5702872 1629208 5705288 -1623720 5702872 1621944 5703896 1629208 5705288 1627904 5703304 -1629312 5705264 1628360 5703512 1627904 5703304 1629208 5705288 -1629312 5705264 1628472 5703560 1628360 5703512 1629208 5705288 -1628360 5703512 1627904 5703304 1629208 5705288 1628472 5703560 -1628472 5703560 1628448 5703536 1628360 5703512 1629208 5705288 -1629312 5705264 1628472 5703560 1629208 5705288 1629376 5705272 -1627904 5703304 1623720 5702872 1629208 5705288 1628360 5703512 -1629208 5705288 1621944 5703896 1629656 5706024 1629616 5705808 -1629616 5705808 1629568 5705376 1629376 5705272 1629208 5705288 -1629376 5705272 1629312 5705264 1629208 5705288 1629568 5705376 -1629616 5705808 1629568 5705376 1629208 5705288 1629656 5706024 -1629616 5705808 1629696 5705552 1629568 5705376 1629208 5705288 -1629312 5705264 1628968 5703704 1628472 5703560 1629208 5705288 -1628472 5703560 1628360 5703512 1629208 5705288 1628968 5703704 -1629312 5705264 1628968 5703704 1629208 5705288 1629376 5705272 -1629312 5705264 1629472 5703936 1628968 5703704 1629208 5705288 -1629312 5705264 1629472 5703936 1629208 5705288 1629376 5705272 -1629312 5705264 1629752 5704128 1629472 5703936 1629208 5705288 -1628968 5703704 1628472 5703560 1629208 5705288 1629472 5703936 -1621944 5703896 1629064 5705344 1629208 5705288 1623720 5702872 -1621944 5703896 1629064 5705344 1623720 5702872 1623616 5702904 -1629208 5705288 1627904 5703304 1623720 5702872 1629064 5705344 -1627904 5703304 1623816 5702824 1623720 5702872 1629064 5705344 -1627904 5703304 1623816 5702824 1629064 5705344 1629208 5705288 -1627904 5703304 1623888 5702776 1623816 5702824 1629064 5705344 -1629064 5705344 1629656 5706024 1629208 5705288 1627904 5703304 -1623720 5702872 1621944 5703896 1629064 5705344 1623816 5702824 -1621944 5703896 1629656 5706024 1629064 5705344 1623720 5702872 -1629656 5706024 1629064 5705344 1621944 5703896 1629752 5706192 -1629656 5706024 1629064 5705344 1629752 5706192 1629736 5706152 -1629656 5706024 1629208 5705288 1629064 5705344 1629752 5706192 -1629064 5705344 1623720 5702872 1621944 5703896 1629752 5706192 -1629208 5705288 1628360 5703512 1627904 5703304 1629064 5705344 -1627904 5703304 1623816 5702824 1629064 5705344 1628360 5703512 -1629208 5705288 1628472 5703560 1628360 5703512 1629064 5705344 -1629208 5705288 1628472 5703560 1629064 5705344 1629656 5706024 -1628472 5703560 1628448 5703536 1628360 5703512 1629064 5705344 -1629208 5705288 1628968 5703704 1628472 5703560 1629064 5705344 -1628472 5703560 1628360 5703512 1629064 5705344 1628968 5703704 -1629208 5705288 1628968 5703704 1629064 5705344 1629656 5706024 -1628360 5703512 1627904 5703304 1629064 5705344 1628472 5703560 -1629208 5705288 1629064 5705344 1629656 5706024 1629616 5705808 -1629208 5705288 1628968 5703704 1629064 5705344 1629616 5705808 -1629064 5705344 1629752 5706192 1629656 5706024 1629616 5705808 -1629208 5705288 1629064 5705344 1629616 5705808 1629568 5705376 -1629208 5705288 1629472 5703936 1628968 5703704 1629064 5705344 -1621944 5703896 1620104 5713768 1629752 5706192 1629064 5705344 -1621944 5703896 1620040 5713712 1620104 5713768 1629064 5705344 -1621944 5703896 1620104 5713768 1629064 5705344 1623720 5702872 -1620104 5713768 1620160 5713848 1629752 5706192 1629064 5705344 -1629752 5706192 1629656 5706024 1629064 5705344 1620104 5713768 -1620104 5713768 1628648 5705608 1621944 5703896 1620040 5713712 -1621944 5703896 1628648 5705608 1629064 5705344 1623720 5702872 -1621944 5703896 1628648 5705608 1623720 5702872 1623616 5702904 -1621944 5703896 1628648 5705608 1623616 5702904 1621968 5703872 -1621944 5703896 1620104 5713768 1628648 5705608 1623616 5702904 -1629064 5705344 1623816 5702824 1623720 5702872 1628648 5705608 -1629064 5705344 1627904 5703304 1623816 5702824 1628648 5705608 -1629064 5705344 1628360 5703512 1627904 5703304 1628648 5705608 -1627904 5703304 1623816 5702824 1628648 5705608 1628360 5703512 -1627904 5703304 1623888 5702776 1623816 5702824 1628648 5705608 -1623888 5702776 1623848 5702776 1623816 5702824 1628648 5705608 -1627904 5703304 1623888 5702776 1628648 5705608 1628360 5703512 -1623816 5702824 1623720 5702872 1628648 5705608 1623888 5702776 -1628648 5705608 1620104 5713768 1629064 5705344 1628360 5703512 -1628648 5705608 1623816 5702824 1623720 5702872 1623616 5702904 -1627904 5703304 1624952 5701864 1623888 5702776 1628648 5705608 -1629064 5705344 1628472 5703560 1628360 5703512 1628648 5705608 -1628360 5703512 1627904 5703304 1628648 5705608 1628472 5703560 -1629064 5705344 1628968 5703704 1628472 5703560 1628648 5705608 -1629064 5705344 1628472 5703560 1628648 5705608 1620104 5713768 -1628472 5703560 1628448 5703536 1628360 5703512 1628648 5705608 -1629064 5705344 1628648 5705608 1620104 5713768 1629752 5706192 -1628648 5705608 1621944 5703896 1620104 5713768 1629752 5706192 -1629064 5705344 1628472 5703560 1628648 5705608 1629752 5706192 -1620104 5713768 1620160 5713848 1629752 5706192 1628648 5705608 -1620160 5713848 1620512 5714368 1629752 5706192 1628648 5705608 -1620104 5713768 1620160 5713848 1628648 5705608 1621944 5703896 -1620160 5713848 1620512 5714368 1628648 5705608 1620104 5713768 -1620160 5713848 1620272 5714120 1620512 5714368 1628648 5705608 -1629064 5705344 1628648 5705608 1629752 5706192 1629656 5706024 -1629752 5706192 1629736 5706152 1629656 5706024 1628648 5705608 -1629064 5705344 1628648 5705608 1629656 5706024 1629616 5705808 -1629064 5705344 1628472 5703560 1628648 5705608 1629616 5705808 -1628648 5705608 1629752 5706192 1629656 5706024 1629616 5705808 -1620512 5714368 1620552 5714440 1629752 5706192 1628648 5705608 -1620512 5714368 1620552 5714440 1628648 5705608 1620160 5713848 -1620552 5714440 1627312 5719640 1629752 5706192 1628648 5705608 -1629064 5705344 1628648 5705608 1629616 5705808 1629208 5705288 -1629752 5706192 1629656 5706024 1628648 5705608 1620552 5714440 -1620104 5713768 1628432 5705728 1621944 5703896 1620040 5713712 -1628648 5705608 1628432 5705728 1620104 5713768 1620160 5713848 -1628648 5705608 1621944 5703896 1628432 5705728 1620160 5713848 -1621944 5703896 1628432 5705728 1628648 5705608 1623616 5702904 -1621944 5703896 1628432 5705728 1623616 5702904 1621968 5703872 -1623616 5702904 1622032 5703808 1621968 5703872 1628432 5705728 -1628648 5705608 1623720 5702872 1623616 5702904 1628432 5705728 -1628432 5705728 1620160 5713848 1628648 5705608 1623720 5702872 -1628432 5705728 1623720 5702872 1623616 5702904 1621968 5703872 -1621944 5703896 1620104 5713768 1628432 5705728 1621968 5703872 -1628648 5705608 1623816 5702824 1623720 5702872 1628432 5705728 -1623720 5702872 1623616 5702904 1628432 5705728 1623816 5702824 -1628648 5705608 1623816 5702824 1628432 5705728 1620160 5713848 -1628648 5705608 1623888 5702776 1623816 5702824 1628432 5705728 -1623888 5702776 1623848 5702776 1623816 5702824 1628432 5705728 -1628648 5705608 1627904 5703304 1623888 5702776 1628432 5705728 -1628648 5705608 1628360 5703512 1627904 5703304 1628432 5705728 -1628648 5705608 1628472 5703560 1628360 5703512 1628432 5705728 -1628360 5703512 1627904 5703304 1628432 5705728 1628472 5703560 -1627904 5703304 1623888 5702776 1628432 5705728 1628360 5703512 -1628648 5705608 1628472 5703560 1628432 5705728 1620160 5713848 -1623888 5702776 1623816 5702824 1628432 5705728 1627904 5703304 -1623816 5702824 1623720 5702872 1628432 5705728 1623888 5702776 -1627904 5703304 1624952 5701864 1623888 5702776 1628432 5705728 -1628648 5705608 1628432 5705728 1620160 5713848 1620512 5714368 -1628648 5705608 1628432 5705728 1620512 5714368 1620552 5714440 -1628432 5705728 1620104 5713768 1620160 5713848 1620512 5714368 -1628648 5705608 1628472 5703560 1628432 5705728 1620552 5714440 -1628432 5705728 1620160 5713848 1620512 5714368 1620552 5714440 -1620160 5713848 1620272 5714120 1620512 5714368 1628432 5705728 -1628472 5703560 1628448 5703536 1628360 5703512 1628432 5705728 -1628648 5705608 1628432 5705728 1620552 5714440 1629752 5706192 -1628432 5705728 1620512 5714368 1620552 5714440 1629752 5706192 -1628648 5705608 1628472 5703560 1628432 5705728 1629752 5706192 -1620552 5714440 1627312 5719640 1629752 5706192 1628432 5705728 -1628648 5705608 1629064 5705344 1628472 5703560 1628432 5705728 -1628432 5705728 1621944 5703896 1620104 5713768 1620160 5713848 -1628648 5705608 1628432 5705728 1629752 5706192 1629656 5706024 -1629752 5706192 1629736 5706152 1629656 5706024 1628432 5705728 -1628648 5705608 1628472 5703560 1628432 5705728 1629656 5706024 -1628648 5705608 1628432 5705728 1629656 5706024 1629616 5705808 -1628432 5705728 1620552 5714440 1629752 5706192 1629656 5706024 -1620104 5713768 1628312 5705744 1621944 5703896 1620040 5713712 -1621944 5703896 1618184 5707576 1620040 5713712 1628312 5705744 -1620104 5713768 1628432 5705728 1628312 5705744 1620040 5713712 -1628312 5705744 1628432 5705728 1621944 5703896 1620040 5713712 -1620104 5713768 1628312 5705744 1620040 5713712 1620072 5713752 -1621944 5703896 1628312 5705744 1628432 5705728 1621968 5703872 -1628432 5705728 1623616 5702904 1621968 5703872 1628312 5705744 -1623616 5702904 1622032 5703808 1621968 5703872 1628312 5705744 -1621944 5703896 1620040 5713712 1628312 5705744 1621968 5703872 -1628432 5705728 1623720 5702872 1623616 5702904 1628312 5705744 -1623616 5702904 1621968 5703872 1628312 5705744 1623720 5702872 -1628432 5705728 1623816 5702824 1623720 5702872 1628312 5705744 -1623720 5702872 1623616 5702904 1628312 5705744 1623816 5702824 -1628312 5705744 1620104 5713768 1628432 5705728 1623816 5702824 -1621968 5703872 1621944 5703896 1628312 5705744 1623616 5702904 -1628432 5705728 1623888 5702776 1623816 5702824 1628312 5705744 -1623816 5702824 1623720 5702872 1628312 5705744 1623888 5702776 -1623888 5702776 1623848 5702776 1623816 5702824 1628312 5705744 -1628432 5705728 1623888 5702776 1628312 5705744 1620104 5713768 -1628432 5705728 1627904 5703304 1623888 5702776 1628312 5705744 -1628432 5705728 1628360 5703512 1627904 5703304 1628312 5705744 -1628432 5705728 1628472 5703560 1628360 5703512 1628312 5705744 -1628432 5705728 1628648 5705608 1628472 5703560 1628312 5705744 -1628472 5703560 1628360 5703512 1628312 5705744 1628648 5705608 -1628360 5703512 1627904 5703304 1628312 5705744 1628472 5703560 -1628432 5705728 1628648 5705608 1628312 5705744 1620104 5713768 -1627904 5703304 1623888 5702776 1628312 5705744 1628360 5703512 -1623888 5702776 1623816 5702824 1628312 5705744 1627904 5703304 -1627904 5703304 1624952 5701864 1623888 5702776 1628312 5705744 -1628472 5703560 1628448 5703536 1628360 5703512 1628312 5705744 -1628648 5705608 1629064 5705344 1628472 5703560 1628312 5705744 -1628432 5705728 1628312 5705744 1620104 5713768 1620160 5713848 -1628312 5705744 1620040 5713712 1620104 5713768 1620160 5713848 -1628432 5705728 1628312 5705744 1620160 5713848 1620512 5714368 -1628312 5705744 1620104 5713768 1620160 5713848 1620512 5714368 -1628432 5705728 1628648 5705608 1628312 5705744 1620512 5714368 -1628432 5705728 1628312 5705744 1620512 5714368 1620552 5714440 -1628432 5705728 1628312 5705744 1620552 5714440 1629752 5706192 -1628312 5705744 1620160 5713848 1620512 5714368 1620552 5714440 -1628432 5705728 1628648 5705608 1628312 5705744 1629752 5706192 -1620552 5714440 1627312 5719640 1629752 5706192 1628312 5705744 -1628312 5705744 1620512 5714368 1620552 5714440 1629752 5706192 -1620160 5713848 1620272 5714120 1620512 5714368 1628312 5705744 -1628432 5705728 1628312 5705744 1629752 5706192 1629656 5706024 -1623616 5702904 1627776 5705560 1628312 5705744 1623720 5702872 -1621968 5703872 1627776 5705560 1623616 5702904 1622032 5703808 -1623616 5702904 1623448 5702888 1622032 5703808 1627776 5705560 -1621968 5703872 1628312 5705744 1627776 5705560 1622032 5703808 -1628312 5705744 1623816 5702824 1623720 5702872 1627776 5705560 -1623720 5702872 1623616 5702904 1627776 5705560 1623816 5702824 -1628312 5705744 1623888 5702776 1623816 5702824 1627776 5705560 -1623888 5702776 1623848 5702776 1623816 5702824 1627776 5705560 -1623816 5702824 1623720 5702872 1627776 5705560 1623888 5702776 -1628312 5705744 1627776 5705560 1621968 5703872 1621944 5703896 -1628312 5705744 1627776 5705560 1621944 5703896 1620040 5713712 -1628312 5705744 1627776 5705560 1620040 5713712 1620104 5713768 -1621944 5703896 1618184 5707576 1620040 5713712 1627776 5705560 -1628312 5705744 1627776 5705560 1620104 5713768 1620160 5713848 -1627776 5705560 1620040 5713712 1620104 5713768 1620160 5713848 -1628312 5705744 1627776 5705560 1620160 5713848 1620512 5714368 -1627776 5705560 1620104 5713768 1620160 5713848 1620512 5714368 -1627776 5705560 1621944 5703896 1620040 5713712 1620104 5713768 -1627776 5705560 1622032 5703808 1621968 5703872 1621944 5703896 -1620040 5713712 1620072 5713752 1620104 5713768 1627776 5705560 -1628312 5705744 1627776 5705560 1620512 5714368 1620552 5714440 -1627776 5705560 1620160 5713848 1620512 5714368 1620552 5714440 -1627776 5705560 1621968 5703872 1621944 5703896 1620040 5713712 -1628312 5705744 1627904 5703304 1623888 5702776 1627776 5705560 -1623888 5702776 1623816 5702824 1627776 5705560 1627904 5703304 -1628312 5705744 1628360 5703512 1627904 5703304 1627776 5705560 -1628312 5705744 1628472 5703560 1628360 5703512 1627776 5705560 -1628312 5705744 1628648 5705608 1628472 5703560 1627776 5705560 -1628312 5705744 1628432 5705728 1628648 5705608 1627776 5705560 -1628472 5703560 1628360 5703512 1627776 5705560 1628648 5705608 -1628360 5703512 1627904 5703304 1627776 5705560 1628472 5703560 -1627904 5703304 1623888 5702776 1627776 5705560 1628360 5703512 -1627904 5703304 1624952 5701864 1623888 5702776 1627776 5705560 -1628312 5705744 1627776 5705560 1620552 5714440 1629752 5706192 -1620160 5713848 1620272 5714120 1620512 5714368 1627776 5705560 -1627776 5705560 1620552 5714440 1628312 5705744 1628648 5705608 -1628472 5703560 1628448 5703536 1628360 5703512 1627776 5705560 -1628648 5705608 1629064 5705344 1628472 5703560 1627776 5705560 -1623616 5702904 1622032 5703808 1627776 5705560 1623720 5702872 -1620040 5713712 1627640 5705584 1621944 5703896 1618184 5707576 -1627776 5705560 1627640 5705584 1620040 5713712 1620104 5713768 -1627776 5705560 1627640 5705584 1620104 5713768 1620160 5713848 -1627776 5705560 1627640 5705584 1620160 5713848 1620512 5714368 -1627640 5705584 1620104 5713768 1620160 5713848 1620512 5714368 -1627776 5705560 1627640 5705584 1620512 5714368 1620552 5714440 -1627640 5705584 1620160 5713848 1620512 5714368 1620552 5714440 -1627640 5705584 1620040 5713712 1620104 5713768 1620160 5713848 -1627776 5705560 1621944 5703896 1627640 5705584 1620552 5714440 -1621944 5703896 1621912 5703896 1618184 5707576 1627640 5705584 -1620040 5713712 1627640 5705584 1618184 5707576 1618264 5711808 -1620040 5713712 1620104 5713768 1627640 5705584 1618184 5707576 -1620040 5713712 1620072 5713752 1620104 5713768 1627640 5705584 -1627776 5705560 1627640 5705584 1620552 5714440 1628312 5705744 -1627640 5705584 1620512 5714368 1620552 5714440 1628312 5705744 -1627776 5705560 1621944 5703896 1627640 5705584 1628312 5705744 -1621944 5703896 1627640 5705584 1627776 5705560 1621968 5703872 -1627776 5705560 1622032 5703808 1621968 5703872 1627640 5705584 -1627776 5705560 1623616 5702904 1622032 5703808 1627640 5705584 -1623616 5702904 1623448 5702888 1622032 5703808 1627640 5705584 -1622032 5703808 1621968 5703872 1627640 5705584 1623616 5702904 -1627640 5705584 1628312 5705744 1627776 5705560 1623616 5702904 -1621968 5703872 1621944 5703896 1627640 5705584 1622032 5703808 -1620552 5714440 1629752 5706192 1628312 5705744 1627640 5705584 -1620160 5713848 1620272 5714120 1620512 5714368 1627640 5705584 -1627776 5705560 1623720 5702872 1623616 5702904 1627640 5705584 -1627776 5705560 1623816 5702824 1623720 5702872 1627640 5705584 -1623616 5702904 1622032 5703808 1627640 5705584 1623720 5702872 -1627776 5705560 1623816 5702824 1627640 5705584 1628312 5705744 -1627776 5705560 1623888 5702776 1623816 5702824 1627640 5705584 -1623816 5702824 1623720 5702872 1627640 5705584 1623888 5702776 -1627776 5705560 1627904 5703304 1623888 5702776 1627640 5705584 -1623888 5702776 1623848 5702776 1623816 5702824 1627640 5705584 -1627776 5705560 1627904 5703304 1627640 5705584 1628312 5705744 -1623888 5702776 1623816 5702824 1627640 5705584 1627904 5703304 -1627776 5705560 1628360 5703512 1627904 5703304 1627640 5705584 -1627904 5703304 1624952 5701864 1623888 5702776 1627640 5705584 -1623720 5702872 1623616 5702904 1627640 5705584 1623816 5702824 -1627640 5705584 1621968 5703872 1621944 5703896 1618184 5707576 -1627640 5705584 1627576 5705568 1618184 5707576 1620040 5713712 -1618184 5707576 1627576 5705568 1621944 5703896 1621912 5703896 -1618184 5707576 1618264 5711808 1620040 5713712 1627576 5705568 -1627640 5705584 1627576 5705568 1620040 5713712 1620104 5713768 -1627576 5705568 1618184 5707576 1620040 5713712 1620104 5713768 -1627640 5705584 1627576 5705568 1620104 5713768 1620160 5713848 -1627640 5705584 1627576 5705568 1620160 5713848 1620512 5714368 -1627640 5705584 1627576 5705568 1620512 5714368 1620552 5714440 -1627576 5705568 1620160 5713848 1620512 5714368 1620552 5714440 -1627640 5705584 1627576 5705568 1620552 5714440 1628312 5705744 -1627576 5705568 1620104 5713768 1620160 5713848 1620512 5714368 -1627576 5705568 1620040 5713712 1620104 5713768 1620160 5713848 -1627640 5705584 1621944 5703896 1627576 5705568 1620552 5714440 -1620040 5713712 1620072 5713752 1620104 5713768 1627576 5705568 -1620160 5713848 1620272 5714120 1620512 5714368 1627576 5705568 -1621944 5703896 1627576 5705568 1627640 5705584 1621968 5703872 -1627576 5705568 1620552 5714440 1627640 5705584 1621968 5703872 -1627640 5705584 1622032 5703808 1621968 5703872 1627576 5705568 -1627640 5705584 1623616 5702904 1622032 5703808 1627576 5705568 -1627640 5705584 1623720 5702872 1623616 5702904 1627576 5705568 -1623616 5702904 1623448 5702888 1622032 5703808 1627576 5705568 -1623616 5702904 1622032 5703808 1627576 5705568 1623720 5702872 -1627640 5705584 1623720 5702872 1627576 5705568 1620552 5714440 -1622032 5703808 1621968 5703872 1627576 5705568 1623616 5702904 -1627640 5705584 1623816 5702824 1623720 5702872 1627576 5705568 -1627640 5705584 1623888 5702776 1623816 5702824 1627576 5705568 -1623720 5702872 1623616 5702904 1627576 5705568 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1627576 5705568 -1627640 5705584 1623888 5702776 1627576 5705568 1620552 5714440 -1627640 5705584 1627904 5703304 1623888 5702776 1627576 5705568 -1623888 5702776 1623816 5702824 1627576 5705568 1627904 5703304 -1627640 5705584 1627776 5705560 1627904 5703304 1627576 5705568 -1627640 5705584 1627776 5705560 1627576 5705568 1620552 5714440 -1627904 5703304 1623888 5702776 1627576 5705568 1627776 5705560 -1627776 5705560 1628360 5703512 1627904 5703304 1627576 5705568 -1627904 5703304 1624952 5701864 1623888 5702776 1627576 5705568 -1623816 5702824 1623720 5702872 1627576 5705568 1623888 5702776 -1621968 5703872 1621944 5703896 1627576 5705568 1622032 5703808 -1627576 5705568 1621944 5703896 1618184 5707576 1620040 5713712 -1621944 5703896 1618184 5707576 1627576 5705568 1621968 5703872 -1627576 5705568 1627536 5705536 1623888 5702776 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1627536 5705536 -1627904 5703304 1627536 5705536 1627576 5705568 1627776 5705560 -1627576 5705568 1627640 5705584 1627776 5705560 1627536 5705536 -1627776 5705560 1627904 5703304 1627536 5705536 1627640 5705584 -1627904 5703304 1627536 5705536 1627776 5705560 1628360 5703512 -1627536 5705536 1627640 5705584 1627776 5705560 1628360 5703512 -1627776 5705560 1628472 5703560 1628360 5703512 1627536 5705536 -1623888 5702776 1627536 5705536 1627904 5703304 1624952 5701864 -1627576 5705568 1627536 5705536 1623816 5702824 1623720 5702872 -1627536 5705536 1623888 5702776 1623816 5702824 1623720 5702872 -1627576 5705568 1627536 5705536 1623720 5702872 1623616 5702904 -1627576 5705568 1627536 5705536 1623616 5702904 1622032 5703808 -1627536 5705536 1623720 5702872 1623616 5702904 1622032 5703808 -1623616 5702904 1623448 5702888 1622032 5703808 1627536 5705536 -1627576 5705568 1627536 5705536 1622032 5703808 1621968 5703872 -1627536 5705536 1623616 5702904 1622032 5703808 1621968 5703872 -1627536 5705536 1623816 5702824 1623720 5702872 1623616 5702904 -1627576 5705568 1627536 5705536 1621968 5703872 1621944 5703896 -1627536 5705536 1622032 5703808 1621968 5703872 1621944 5703896 -1627536 5705536 1627904 5703304 1623888 5702776 1623816 5702824 -1627904 5703304 1623888 5702776 1627536 5705536 1628360 5703512 -1627576 5705568 1627640 5705584 1627536 5705536 1621944 5703896 -1627576 5705568 1627536 5705536 1621944 5703896 1618184 5707576 -1621944 5703896 1621912 5703896 1618184 5707576 1627536 5705536 -1627536 5705536 1621968 5703872 1621944 5703896 1618184 5707576 -1627576 5705568 1627536 5705536 1618184 5707576 1620040 5713712 -1627576 5705568 1627536 5705536 1620040 5713712 1620104 5713768 -1618184 5707576 1618264 5711808 1620040 5713712 1627536 5705536 -1627576 5705568 1627536 5705536 1620104 5713768 1620160 5713848 -1620040 5713712 1620072 5713752 1620104 5713768 1627536 5705536 -1627536 5705536 1618184 5707576 1620040 5713712 1620104 5713768 -1627576 5705568 1627640 5705584 1627536 5705536 1620104 5713768 -1627536 5705536 1621944 5703896 1618184 5707576 1620040 5713712 -1623888 5702776 1627456 5705408 1627904 5703304 1624952 5701864 -1627536 5705536 1627456 5705408 1623888 5702776 1623816 5702824 -1627536 5705536 1627456 5705408 1623816 5702824 1623720 5702872 -1623888 5702776 1623848 5702776 1623816 5702824 1627456 5705408 -1627456 5705408 1627904 5703304 1623888 5702776 1623816 5702824 -1627536 5705536 1627456 5705408 1623720 5702872 1623616 5702904 -1627456 5705408 1623816 5702824 1623720 5702872 1623616 5702904 -1627536 5705536 1627456 5705408 1623616 5702904 1622032 5703808 -1623616 5702904 1623448 5702888 1622032 5703808 1627456 5705408 -1627536 5705536 1627456 5705408 1622032 5703808 1621968 5703872 -1627456 5705408 1623616 5702904 1622032 5703808 1621968 5703872 -1627536 5705536 1627456 5705408 1621968 5703872 1621944 5703896 -1627456 5705408 1622032 5703808 1621968 5703872 1621944 5703896 -1627456 5705408 1623720 5702872 1623616 5702904 1622032 5703808 -1627536 5705536 1627456 5705408 1621944 5703896 1618184 5707576 -1627456 5705408 1623888 5702776 1623816 5702824 1623720 5702872 -1627536 5705536 1627904 5703304 1627456 5705408 1621944 5703896 -1627904 5703304 1627456 5705408 1627536 5705536 1628360 5703512 -1627904 5703304 1623888 5702776 1627456 5705408 1628360 5703512 -1627536 5705536 1627776 5705560 1628360 5703512 1627456 5705408 -1627536 5705536 1627640 5705584 1627776 5705560 1627456 5705408 -1627776 5705560 1628472 5703560 1628360 5703512 1627456 5705408 -1627776 5705560 1628648 5705608 1628472 5703560 1627456 5705408 -1627776 5705560 1628472 5703560 1627456 5705408 1627536 5705536 -1628472 5703560 1628448 5703536 1628360 5703512 1627456 5705408 -1627456 5705408 1621944 5703896 1627536 5705536 1627776 5705560 -1628360 5703512 1627904 5703304 1627456 5705408 1628472 5703560 -1627456 5705408 1627416 5705352 1623888 5702776 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1627416 5705352 -1627456 5705408 1627904 5703304 1627416 5705352 1623816 5702824 -1627904 5703304 1627416 5705352 1627456 5705408 1628360 5703512 -1627904 5703304 1623888 5702776 1627416 5705352 1628360 5703512 -1627416 5705352 1623816 5702824 1627456 5705408 1628360 5703512 -1627416 5705352 1627904 5703304 1623888 5702776 1623816 5702824 -1623888 5702776 1627416 5705352 1627904 5703304 1624952 5701864 -1627416 5705352 1628360 5703512 1627904 5703304 1624952 5701864 -1627904 5703304 1625520 5701424 1624952 5701864 1627416 5705352 -1623888 5702776 1623816 5702824 1627416 5705352 1624952 5701864 -1623888 5702776 1627416 5705352 1624952 5701864 1624720 5701944 -1627456 5705408 1627416 5705352 1623816 5702824 1623720 5702872 -1627456 5705408 1627416 5705352 1623720 5702872 1623616 5702904 -1627416 5705352 1623888 5702776 1623816 5702824 1623720 5702872 -1627456 5705408 1628360 5703512 1627416 5705352 1623616 5702904 -1627456 5705408 1627416 5705352 1623616 5702904 1622032 5703808 -1627416 5705352 1623720 5702872 1623616 5702904 1622032 5703808 -1627456 5705408 1627416 5705352 1622032 5703808 1621968 5703872 -1623616 5702904 1623448 5702888 1622032 5703808 1627416 5705352 -1627456 5705408 1627416 5705352 1621968 5703872 1621944 5703896 -1627416 5705352 1622032 5703808 1621968 5703872 1621944 5703896 -1627456 5705408 1628360 5703512 1627416 5705352 1621944 5703896 -1627456 5705408 1627416 5705352 1621944 5703896 1627536 5705536 -1627416 5705352 1621968 5703872 1621944 5703896 1627536 5705536 -1627456 5705408 1628360 5703512 1627416 5705352 1627536 5705536 -1627416 5705352 1623616 5702904 1622032 5703808 1621968 5703872 -1621944 5703896 1618184 5707576 1627536 5705536 1627416 5705352 -1627416 5705352 1623816 5702824 1623720 5702872 1623616 5702904 -1627456 5705408 1628472 5703560 1628360 5703512 1627416 5705352 -1627456 5705408 1628472 5703560 1627416 5705352 1627536 5705536 -1628360 5703512 1627904 5703304 1627416 5705352 1628472 5703560 -1627456 5705408 1627776 5705560 1628472 5703560 1627416 5705352 -1627776 5705560 1628648 5705608 1628472 5703560 1627416 5705352 -1627456 5705408 1627776 5705560 1627416 5705352 1627536 5705536 -1627456 5705408 1627536 5705536 1627776 5705560 1627416 5705352 -1628472 5703560 1628448 5703536 1628360 5703512 1627416 5705352 -1628472 5703560 1628360 5703512 1627416 5705352 1627776 5705560 -1627416 5705352 1627256 5705232 1623888 5702776 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1627256 5705232 -1627256 5705232 1624952 5701864 1623888 5702776 1623816 5702824 -1627416 5705352 1627256 5705232 1623816 5702824 1623720 5702872 -1627256 5705232 1623888 5702776 1623816 5702824 1623720 5702872 -1627416 5705352 1624952 5701864 1627256 5705232 1623720 5702872 -1624952 5701864 1627256 5705232 1627416 5705352 1627904 5703304 -1627416 5705352 1628360 5703512 1627904 5703304 1627256 5705232 -1624952 5701864 1623888 5702776 1627256 5705232 1627904 5703304 -1624952 5701864 1627256 5705232 1627904 5703304 1625520 5701424 -1627416 5705352 1628472 5703560 1628360 5703512 1627256 5705232 -1627256 5705232 1623720 5702872 1627416 5705352 1628360 5703512 -1627904 5703304 1624952 5701864 1627256 5705232 1628360 5703512 -1623888 5702776 1627256 5705232 1624952 5701864 1624720 5701944 -1627416 5705352 1627256 5705232 1623720 5702872 1623616 5702904 -1627416 5705352 1627256 5705232 1623616 5702904 1622032 5703808 -1623616 5702904 1623448 5702888 1622032 5703808 1627256 5705232 -1627256 5705232 1623816 5702824 1623720 5702872 1623616 5702904 -1627416 5705352 1628360 5703512 1627256 5705232 1622032 5703808 -1627416 5705352 1627256 5705232 1622032 5703808 1621968 5703872 -1627256 5705232 1623616 5702904 1622032 5703808 1621968 5703872 -1627416 5705352 1627256 5705232 1621968 5703872 1621944 5703896 -1627416 5705352 1627256 5705232 1621944 5703896 1627536 5705536 -1627256 5705232 1621968 5703872 1621944 5703896 1627536 5705536 -1627416 5705352 1628360 5703512 1627256 5705232 1627536 5705536 -1627416 5705352 1627256 5705232 1627536 5705536 1627456 5705408 -1627256 5705232 1621944 5703896 1627536 5705536 1627456 5705408 -1627416 5705352 1628360 5703512 1627256 5705232 1627456 5705408 -1627256 5705232 1622032 5703808 1621968 5703872 1621944 5703896 -1621944 5703896 1618184 5707576 1627536 5705536 1627256 5705232 -1627256 5705232 1623720 5702872 1623616 5702904 1622032 5703808 -1627256 5705232 1627208 5705152 1624952 5701864 1623888 5702776 -1627256 5705232 1627208 5705152 1623888 5702776 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1627208 5705152 -1627256 5705232 1627904 5703304 1627208 5705152 1623816 5702824 -1627208 5705152 1624952 5701864 1623888 5702776 1623816 5702824 -1627208 5705152 1627904 5703304 1624952 5701864 1623888 5702776 -1624952 5701864 1627208 5705152 1627904 5703304 1625520 5701424 -1627256 5705232 1627208 5705152 1623816 5702824 1623720 5702872 -1627208 5705152 1623888 5702776 1623816 5702824 1623720 5702872 -1627256 5705232 1627904 5703304 1627208 5705152 1623720 5702872 -1627256 5705232 1627208 5705152 1623720 5702872 1623616 5702904 -1627256 5705232 1627904 5703304 1627208 5705152 1623616 5702904 -1627208 5705152 1623816 5702824 1623720 5702872 1623616 5702904 -1627904 5703304 1627208 5705152 1627256 5705232 1628360 5703512 -1627904 5703304 1624952 5701864 1627208 5705152 1628360 5703512 -1627256 5705232 1627416 5705352 1628360 5703512 1627208 5705152 -1627208 5705152 1623616 5702904 1627256 5705232 1627416 5705352 -1627416 5705352 1628472 5703560 1628360 5703512 1627208 5705152 -1627416 5705352 1628472 5703560 1627208 5705152 1627256 5705232 -1628360 5703512 1627904 5703304 1627208 5705152 1628472 5703560 -1628472 5703560 1628448 5703536 1628360 5703512 1627208 5705152 -1624952 5701864 1624720 5701944 1623888 5702776 1627208 5705152 -1627256 5705232 1627208 5705152 1623616 5702904 1622032 5703808 -1627256 5705232 1627208 5705152 1622032 5703808 1621968 5703872 -1623616 5702904 1623448 5702888 1622032 5703808 1627208 5705152 -1627256 5705232 1627416 5705352 1627208 5705152 1621968 5703872 -1627208 5705152 1623720 5702872 1623616 5702904 1622032 5703808 -1627256 5705232 1627208 5705152 1621968 5703872 1621944 5703896 -1627208 5705152 1622032 5703808 1621968 5703872 1621944 5703896 -1627256 5705232 1627208 5705152 1621944 5703896 1627536 5705536 -1627256 5705232 1627416 5705352 1627208 5705152 1621944 5703896 -1627208 5705152 1623616 5702904 1622032 5703808 1621968 5703872 -1627416 5705352 1627776 5705560 1628472 5703560 1627208 5705152 -1627904 5703304 1627216 5705096 1627208 5705152 1628360 5703512 -1627216 5705096 1624952 5701864 1627208 5705152 1628360 5703512 -1627904 5703304 1624952 5701864 1627216 5705096 1628360 5703512 -1627208 5705152 1627216 5705096 1624952 5701864 1623888 5702776 -1627208 5705152 1628360 5703512 1627216 5705096 1623888 5702776 -1627216 5705096 1627904 5703304 1624952 5701864 1623888 5702776 -1627208 5705152 1627216 5705096 1623888 5702776 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1627216 5705096 -1627208 5705152 1628360 5703512 1627216 5705096 1623816 5702824 -1627208 5705152 1627216 5705096 1623816 5702824 1623720 5702872 -1627216 5705096 1624952 5701864 1623888 5702776 1623816 5702824 -1624952 5701864 1627216 5705096 1627904 5703304 1625520 5701424 -1627208 5705152 1628472 5703560 1628360 5703512 1627216 5705096 -1627208 5705152 1628472 5703560 1627216 5705096 1623816 5702824 -1628360 5703512 1627904 5703304 1627216 5705096 1628472 5703560 -1627208 5705152 1627416 5705352 1628472 5703560 1627216 5705096 -1627208 5705152 1627416 5705352 1627216 5705096 1623816 5702824 -1627208 5705152 1627256 5705232 1627416 5705352 1627216 5705096 -1627208 5705152 1627256 5705232 1627216 5705096 1623816 5702824 -1627416 5705352 1628472 5703560 1627216 5705096 1627256 5705232 -1628472 5703560 1628360 5703512 1627216 5705096 1627416 5705352 -1628472 5703560 1628448 5703536 1628360 5703512 1627216 5705096 -1624952 5701864 1624720 5701944 1623888 5702776 1627216 5705096 -1627416 5705352 1627776 5705560 1628472 5703560 1627216 5705096 -1627776 5705560 1628648 5705608 1628472 5703560 1627216 5705096 -1627416 5705352 1627776 5705560 1627216 5705096 1627256 5705232 -1627416 5705352 1627456 5705408 1627776 5705560 1627216 5705096 -1628472 5703560 1628360 5703512 1627216 5705096 1627776 5705560 -1628472 5703560 1627416 5705032 1627776 5705560 1628648 5705608 -1627776 5705560 1628312 5705744 1628648 5705608 1627416 5705032 -1628472 5703560 1627216 5705096 1627416 5705032 1628648 5705608 -1627416 5705032 1627216 5705096 1627776 5705560 1628648 5705608 -1627216 5705096 1627416 5705032 1628472 5703560 1628360 5703512 -1627216 5705096 1627416 5705032 1628360 5703512 1627904 5703304 -1627216 5705096 1627776 5705560 1627416 5705032 1627904 5703304 -1627216 5705096 1627416 5705032 1627904 5703304 1624952 5701864 -1627416 5705032 1628648 5705608 1628472 5703560 1628360 5703512 -1627416 5705032 1628472 5703560 1628360 5703512 1627904 5703304 -1628472 5703560 1628448 5703536 1628360 5703512 1627416 5705032 -1628472 5703560 1627416 5705032 1628648 5705608 1629064 5705344 -1627416 5705032 1627776 5705560 1628648 5705608 1629064 5705344 -1628472 5703560 1628360 5703512 1627416 5705032 1629064 5705344 -1628472 5703560 1627416 5705032 1629064 5705344 1628968 5703704 -1627776 5705560 1627416 5705032 1627216 5705096 1627416 5705352 -1627416 5705032 1627904 5703304 1627216 5705096 1627416 5705352 -1627216 5705096 1627256 5705232 1627416 5705352 1627416 5705032 -1627216 5705096 1627256 5705232 1627416 5705032 1627904 5703304 -1627216 5705096 1627208 5705152 1627256 5705232 1627416 5705032 -1627776 5705560 1628648 5705608 1627416 5705032 1627416 5705352 -1627776 5705560 1627416 5705032 1627416 5705352 1627456 5705408 -1627776 5705560 1628648 5705608 1627416 5705032 1627456 5705408 -1627776 5705560 1627416 5705032 1627456 5705408 1627536 5705536 -1627416 5705352 1627456 5705408 1627416 5705032 1627256 5705232 -1627416 5705032 1627512 5705016 1628472 5703560 1628360 5703512 -1627416 5705032 1629064 5705344 1627512 5705016 1628360 5703512 -1627512 5705016 1629064 5705344 1628472 5703560 1628360 5703512 -1628472 5703560 1627512 5705016 1629064 5705344 1628968 5703704 -1627416 5705032 1627512 5705016 1628360 5703512 1627904 5703304 -1627416 5705032 1627512 5705016 1627904 5703304 1627216 5705096 -1627512 5705016 1628472 5703560 1628360 5703512 1627904 5703304 -1627416 5705032 1629064 5705344 1627512 5705016 1627904 5703304 -1628472 5703560 1628448 5703536 1628360 5703512 1627512 5705016 -1629064 5705344 1627512 5705016 1627416 5705032 1628648 5705608 -1627416 5705032 1627776 5705560 1628648 5705608 1627512 5705016 -1627776 5705560 1628312 5705744 1628648 5705608 1627512 5705016 -1627512 5705016 1627904 5703304 1627416 5705032 1627776 5705560 -1627416 5705032 1627456 5705408 1627776 5705560 1627512 5705016 -1627776 5705560 1628648 5705608 1627512 5705016 1627456 5705408 -1627416 5705032 1627456 5705408 1627512 5705016 1627904 5703304 -1629064 5705344 1628472 5703560 1627512 5705016 1628648 5705608 -1627416 5705032 1627416 5705352 1627456 5705408 1627512 5705016 -1627416 5705032 1627416 5705352 1627512 5705016 1627904 5703304 -1627456 5705408 1627776 5705560 1627512 5705016 1627416 5705352 -1627456 5705408 1627536 5705536 1627776 5705560 1627512 5705016 -1628648 5705608 1629064 5705344 1627512 5705016 1627776 5705560 -1627416 5705032 1627256 5705232 1627416 5705352 1627512 5705016 -1627512 5705016 1627528 5705000 1628472 5703560 1628360 5703512 -1627528 5705000 1629064 5705344 1628472 5703560 1628360 5703512 -1627512 5705016 1627528 5705000 1628360 5703512 1627904 5703304 -1627528 5705000 1628472 5703560 1628360 5703512 1627904 5703304 -1627512 5705016 1629064 5705344 1627528 5705000 1627904 5703304 -1629064 5705344 1627528 5705000 1627512 5705016 1628648 5705608 -1629064 5705344 1628472 5703560 1627528 5705000 1628648 5705608 -1627528 5705000 1627904 5703304 1627512 5705016 1628648 5705608 -1628472 5703560 1627528 5705000 1629064 5705344 1628968 5703704 -1627512 5705016 1627528 5705000 1627904 5703304 1627416 5705032 -1627904 5703304 1627216 5705096 1627416 5705032 1627528 5705000 -1627528 5705000 1628360 5703512 1627904 5703304 1627416 5705032 -1627512 5705016 1628648 5705608 1627528 5705000 1627416 5705032 -1628472 5703560 1628448 5703536 1628360 5703512 1627528 5705000 -1627512 5705016 1627776 5705560 1628648 5705608 1627528 5705000 -1627776 5705560 1628312 5705744 1628648 5705608 1627528 5705000 -1627512 5705016 1627456 5705408 1627776 5705560 1627528 5705000 -1627512 5705016 1627776 5705560 1627528 5705000 1627416 5705032 -1628648 5705608 1629064 5705344 1627528 5705000 1627776 5705560 -1627528 5705000 1627568 5704840 1627904 5703304 1627416 5705032 -1627904 5703304 1627216 5705096 1627416 5705032 1627568 5704840 -1627904 5703304 1624952 5701864 1627216 5705096 1627568 5704840 -1627528 5705000 1628360 5703512 1627568 5704840 1627416 5705032 -1627568 5704840 1628360 5703512 1627904 5703304 1627216 5705096 -1627416 5705032 1627528 5705000 1627568 5704840 1627216 5705096 -1628360 5703512 1627568 5704840 1627528 5705000 1628472 5703560 -1627528 5705000 1629064 5705344 1628472 5703560 1627568 5704840 -1627568 5704840 1627416 5705032 1627528 5705000 1629064 5705344 -1627528 5705000 1628648 5705608 1629064 5705344 1627568 5704840 -1629064 5705344 1628472 5703560 1627568 5704840 1628648 5705608 -1627528 5705000 1628648 5705608 1627568 5704840 1627416 5705032 -1628360 5703512 1627904 5703304 1627568 5704840 1628472 5703560 -1628472 5703560 1628360 5703512 1627568 5704840 1629064 5705344 -1627528 5705000 1627776 5705560 1628648 5705608 1627568 5704840 -1627776 5705560 1628312 5705744 1628648 5705608 1627568 5704840 -1627528 5705000 1627776 5705560 1627568 5704840 1627416 5705032 -1628648 5705608 1629064 5705344 1627568 5704840 1627776 5705560 -1629064 5705344 1628968 5703704 1628472 5703560 1627568 5704840 -1629064 5705344 1628968 5703704 1627568 5704840 1628648 5705608 -1628472 5703560 1628360 5703512 1627568 5704840 1628968 5703704 -1627528 5705000 1627568 5704840 1627416 5705032 1627512 5705016 -1628360 5703512 1627568 5704840 1628472 5703560 1628448 5703536 -1629064 5705344 1629208 5705288 1628968 5703704 1627568 5704840 -1627528 5705000 1627512 5705016 1627776 5705560 1627568 5704840 -1627568 5704840 1627552 5704744 1627216 5705096 1627416 5705032 -1627216 5705096 1627552 5704744 1627904 5703304 1624952 5701864 -1627904 5703304 1627552 5704744 1627568 5704840 1628360 5703512 -1627568 5704840 1628360 5703512 1627552 5704744 1627416 5705032 -1627568 5704840 1628472 5703560 1628360 5703512 1627552 5704744 -1628360 5703512 1627904 5703304 1627552 5704744 1628472 5703560 -1627568 5704840 1628472 5703560 1627552 5704744 1627416 5705032 -1627552 5704744 1627904 5703304 1627216 5705096 1627416 5705032 -1627904 5703304 1627216 5705096 1627552 5704744 1628360 5703512 -1627568 5704840 1627552 5704744 1627416 5705032 1627528 5705000 -1627568 5704840 1628968 5703704 1628472 5703560 1627552 5704744 -1627568 5704840 1628968 5703704 1627552 5704744 1627416 5705032 -1628472 5703560 1628360 5703512 1627552 5704744 1628968 5703704 -1627568 5704840 1629064 5705344 1628968 5703704 1627552 5704744 -1627568 5704840 1628648 5705608 1629064 5705344 1627552 5704744 -1627568 5704840 1629064 5705344 1627552 5704744 1627416 5705032 -1628968 5703704 1628472 5703560 1627552 5704744 1629064 5705344 -1628472 5703560 1628448 5703536 1628360 5703512 1627552 5704744 -1629064 5705344 1629208 5705288 1628968 5703704 1627552 5704744 -1627216 5705096 1627416 5704464 1624952 5701864 1623888 5702776 -1627904 5703304 1627416 5704464 1627216 5705096 1627552 5704744 -1627216 5705096 1627416 5704464 1623888 5702776 1623816 5702824 -1624952 5701864 1627416 5704464 1627904 5703304 1625520 5701424 -1627216 5705096 1627416 5705032 1627552 5704744 1627416 5704464 -1627216 5705096 1627552 5704744 1627416 5704464 1623888 5702776 -1627904 5703304 1627416 5704464 1627552 5704744 1628360 5703512 -1627416 5704464 1627216 5705096 1627552 5704744 1628360 5703512 -1627552 5704744 1628472 5703560 1628360 5703512 1627416 5704464 -1627552 5704744 1628472 5703560 1627416 5704464 1627216 5705096 -1627552 5704744 1628968 5703704 1628472 5703560 1627416 5704464 -1628360 5703512 1627904 5703304 1627416 5704464 1628472 5703560 -1627416 5704464 1627904 5703304 1624952 5701864 1623888 5702776 -1627904 5703304 1624952 5701864 1627416 5704464 1628360 5703512 -1628472 5703560 1628448 5703536 1628360 5703512 1627416 5704464 -1624952 5701864 1624720 5701944 1623888 5702776 1627416 5704464 -1624952 5701864 1627080 5703984 1627904 5703304 1625520 5701424 -1627904 5703304 1625592 5701352 1625520 5701424 1627080 5703984 -1624952 5701864 1627416 5704464 1627080 5703984 1625520 5701424 -1627080 5703984 1627416 5704464 1627904 5703304 1625520 5701424 -1627416 5704464 1627080 5703984 1624952 5701864 1623888 5702776 -1627416 5704464 1627080 5703984 1623888 5702776 1627216 5705096 -1623888 5702776 1623816 5702824 1627216 5705096 1627080 5703984 -1623888 5702776 1623848 5702776 1623816 5702824 1627080 5703984 -1627216 5705096 1627416 5704464 1627080 5703984 1623816 5702824 -1623816 5702824 1627208 5705152 1627216 5705096 1627080 5703984 -1627216 5705096 1627416 5704464 1627080 5703984 1627208 5705152 -1623816 5702824 1623720 5702872 1627208 5705152 1627080 5703984 -1623816 5702824 1627208 5705152 1627080 5703984 1623888 5702776 -1627416 5704464 1627080 5703984 1627216 5705096 1627552 5704744 -1627080 5703984 1625520 5701424 1624952 5701864 1623888 5702776 -1627080 5703984 1624952 5701864 1623888 5702776 1623816 5702824 -1627416 5704464 1627904 5703304 1627080 5703984 1627216 5705096 -1627904 5703304 1627080 5703984 1627416 5704464 1628360 5703512 -1624952 5701864 1624720 5701944 1623888 5702776 1627080 5703984 -1625520 5701424 1627024 5703888 1627904 5703304 1625592 5701352 -1625520 5701424 1627080 5703984 1627024 5703888 1625592 5701352 -1627024 5703888 1627080 5703984 1627904 5703304 1625592 5701352 -1627080 5703984 1627024 5703888 1625520 5701424 1624952 5701864 -1627024 5703888 1625592 5701352 1625520 5701424 1624952 5701864 -1627904 5703304 1627896 5701296 1625592 5701352 1627024 5703888 -1627080 5703984 1627024 5703888 1624952 5701864 1623888 5702776 -1627024 5703888 1625520 5701424 1624952 5701864 1623888 5702776 -1627080 5703984 1627904 5703304 1627024 5703888 1623888 5702776 -1627904 5703304 1627024 5703888 1627080 5703984 1627416 5704464 -1627080 5703984 1627024 5703888 1623888 5702776 1623816 5702824 -1623888 5702776 1623848 5702776 1623816 5702824 1627024 5703888 -1627080 5703984 1627024 5703888 1623816 5702824 1627208 5705152 -1623816 5702824 1623720 5702872 1627208 5705152 1627024 5703888 -1627080 5703984 1627024 5703888 1627208 5705152 1627216 5705096 -1627080 5703984 1627024 5703888 1627216 5705096 1627416 5704464 -1627024 5703888 1623816 5702824 1627208 5705152 1627216 5705096 -1627024 5703888 1624952 5701864 1623888 5702776 1623816 5702824 -1627080 5703984 1627904 5703304 1627024 5703888 1627216 5705096 -1627024 5703888 1623888 5702776 1623816 5702824 1627208 5705152 -1624952 5701864 1624720 5701944 1623888 5702776 1627024 5703888 -1627904 5703304 1627024 5703808 1627024 5703888 1627080 5703984 -1627024 5703808 1625592 5701352 1627024 5703888 1627080 5703984 -1627904 5703304 1625592 5701352 1627024 5703808 1627080 5703984 -1627024 5703888 1627024 5703808 1625592 5701352 1625520 5701424 -1627024 5703888 1627024 5703808 1625520 5701424 1624952 5701864 -1627024 5703888 1627080 5703984 1627024 5703808 1624952 5701864 -1627024 5703808 1627904 5703304 1625592 5701352 1625520 5701424 -1627024 5703808 1625592 5701352 1625520 5701424 1624952 5701864 -1627024 5703888 1627024 5703808 1624952 5701864 1623888 5702776 -1627024 5703808 1625520 5701424 1624952 5701864 1623888 5702776 -1627024 5703888 1627080 5703984 1627024 5703808 1623888 5702776 -1625592 5701352 1627024 5703808 1627904 5703304 1627896 5701296 -1627024 5703888 1627024 5703808 1623888 5702776 1623816 5702824 -1627904 5703304 1627024 5703808 1627080 5703984 1627416 5704464 -1624952 5701864 1624720 5701944 1623888 5702776 1627024 5703808 -1627024 5703808 1627056 5703704 1625592 5701352 1625520 5701424 -1627024 5703808 1627904 5703304 1627056 5703704 1625520 5701424 -1627904 5703304 1627056 5703704 1627024 5703808 1627080 5703984 -1627024 5703808 1627024 5703888 1627080 5703984 1627056 5703704 -1627056 5703704 1625520 5701424 1627024 5703808 1627080 5703984 -1627024 5703808 1627056 5703704 1625520 5701424 1624952 5701864 -1627024 5703808 1627056 5703704 1624952 5701864 1623888 5702776 -1627056 5703704 1625592 5701352 1625520 5701424 1624952 5701864 -1627024 5703808 1627080 5703984 1627056 5703704 1624952 5701864 -1625592 5701352 1627056 5703704 1627904 5703304 1627896 5701296 -1627904 5703304 1627056 5703704 1627080 5703984 1627416 5704464 -1627904 5703304 1628144 5701568 1627896 5701296 1627056 5703704 -1627056 5703704 1627896 5701296 1625592 5701352 1625520 5701424 -1627904 5703304 1627896 5701296 1627056 5703704 1627080 5703984 -1625592 5701352 1627056 5703704 1627896 5701296 1626152 5700864 -1627056 5703704 1627136 5703592 1627896 5701296 1625592 5701352 -1627896 5701296 1627136 5703592 1627904 5703304 1628144 5701568 -1627904 5703304 1628320 5701688 1628144 5701568 1627136 5703592 -1627136 5703592 1627056 5703704 1627904 5703304 1628144 5701568 -1627056 5703704 1627136 5703592 1625592 5701352 1625520 5701424 -1627056 5703704 1627136 5703592 1625520 5701424 1624952 5701864 -1627056 5703704 1627136 5703592 1624952 5701864 1627024 5703808 -1627136 5703592 1627896 5701296 1625592 5701352 1625520 5701424 -1627136 5703592 1625592 5701352 1625520 5701424 1624952 5701864 -1627904 5703304 1627136 5703592 1627056 5703704 1627080 5703984 -1627904 5703304 1627136 5703592 1627080 5703984 1627416 5704464 -1627904 5703304 1628144 5701568 1627136 5703592 1627080 5703984 -1627056 5703704 1627024 5703808 1627080 5703984 1627136 5703592 -1627056 5703704 1627080 5703984 1627136 5703592 1624952 5701864 -1627136 5703592 1628144 5701568 1627896 5701296 1625592 5701352 -1627896 5701296 1626152 5700864 1625592 5701352 1627136 5703592 -1628144 5701568 1627200 5703448 1627136 5703592 1627904 5703304 -1628144 5701568 1627200 5703448 1627904 5703304 1628320 5701688 -1627136 5703592 1627080 5703984 1627904 5703304 1627200 5703448 -1627200 5703448 1627896 5701296 1627136 5703592 1627904 5703304 -1627136 5703592 1627200 5703448 1627896 5701296 1625592 5701352 -1627136 5703592 1627200 5703448 1625592 5701352 1625520 5701424 -1627136 5703592 1627904 5703304 1627200 5703448 1625520 5701424 -1627136 5703592 1627200 5703448 1625520 5701424 1624952 5701864 -1627136 5703592 1627200 5703448 1624952 5701864 1627056 5703704 -1624952 5701864 1627024 5703808 1627056 5703704 1627200 5703448 -1627200 5703448 1625592 5701352 1625520 5701424 1624952 5701864 -1627136 5703592 1627904 5703304 1627200 5703448 1627056 5703704 -1627200 5703448 1625520 5701424 1624952 5701864 1627056 5703704 -1627200 5703448 1627896 5701296 1625592 5701352 1625520 5701424 -1627896 5701296 1626152 5700864 1625592 5701352 1627200 5703448 -1626152 5700864 1625616 5701256 1625592 5701352 1627200 5703448 -1627896 5701296 1626264 5700792 1626152 5700864 1627200 5703448 -1625592 5701352 1625520 5701424 1627200 5703448 1626152 5700864 -1627200 5703448 1628144 5701568 1627896 5701296 1626152 5700864 -1628144 5701568 1627896 5701296 1627200 5703448 1627904 5703304 -1628144 5701568 1627384 5703352 1627904 5703304 1628320 5701688 -1627904 5703304 1627384 5703352 1627200 5703448 1627136 5703592 -1627904 5703304 1627384 5703352 1627136 5703592 1627080 5703984 -1627904 5703304 1627384 5703352 1627080 5703984 1627416 5704464 -1627384 5703352 1627200 5703448 1627136 5703592 1627080 5703984 -1627384 5703352 1628144 5701568 1627200 5703448 1627136 5703592 -1627136 5703592 1627056 5703704 1627080 5703984 1627384 5703352 -1627200 5703448 1627384 5703352 1628144 5701568 1627896 5701296 -1627200 5703448 1627136 5703592 1627384 5703352 1627896 5701296 -1627200 5703448 1627384 5703352 1627896 5701296 1626152 5700864 -1627896 5701296 1626264 5700792 1626152 5700864 1627384 5703352 -1627200 5703448 1627136 5703592 1627384 5703352 1626152 5700864 -1627200 5703448 1627384 5703352 1626152 5700864 1625592 5701352 -1626152 5700864 1625616 5701256 1625592 5701352 1627384 5703352 -1627200 5703448 1627136 5703592 1627384 5703352 1625592 5701352 -1627200 5703448 1627384 5703352 1625592 5701352 1625520 5701424 -1627384 5703352 1627896 5701296 1626152 5700864 1625592 5701352 -1627384 5703352 1628144 5701568 1627896 5701296 1626152 5700864 -1627384 5703352 1627904 5703304 1628144 5701568 1627896 5701296 -1627904 5703304 1628144 5701568 1627384 5703352 1627080 5703984 -1628144 5701568 1627736 5703288 1627904 5703304 1628320 5701688 -1628144 5701568 1627384 5703352 1627736 5703288 1628320 5701688 -1627904 5703304 1628488 5701744 1628320 5701688 1627736 5703288 -1627384 5703352 1627736 5703288 1628144 5701568 1627896 5701296 -1627904 5703304 1627736 5703288 1627384 5703352 1627080 5703984 -1627904 5703304 1627736 5703288 1627080 5703984 1627416 5704464 -1627904 5703304 1627736 5703288 1627416 5704464 1628360 5703512 -1627384 5703352 1627136 5703592 1627080 5703984 1627736 5703288 -1627736 5703288 1628144 5701568 1627384 5703352 1627080 5703984 -1627736 5703288 1627384 5703352 1627080 5703984 1627416 5704464 -1627736 5703288 1627416 5704464 1627904 5703304 1628320 5701688 -1627552 5704744 1627992 5704624 1628968 5703704 1628472 5703560 -1627552 5704744 1627992 5704624 1628472 5703560 1627416 5704464 -1628472 5703560 1628360 5703512 1627416 5704464 1627992 5704624 -1627416 5704464 1627552 5704744 1627992 5704624 1628360 5703512 -1628360 5703512 1627904 5703304 1627416 5704464 1627992 5704624 -1628360 5703512 1627904 5703304 1627992 5704624 1628472 5703560 -1627416 5704464 1627552 5704744 1627992 5704624 1627904 5703304 -1627904 5703304 1627736 5703288 1627416 5704464 1627992 5704624 -1627992 5704624 1628968 5703704 1628472 5703560 1628360 5703512 -1629064 5705344 1627992 5704624 1627552 5704744 1627568 5704840 -1629064 5705344 1627992 5704624 1627568 5704840 1628648 5705608 -1627568 5704840 1627776 5705560 1628648 5705608 1627992 5704624 -1627776 5705560 1628312 5705744 1628648 5705608 1627992 5704624 -1628648 5705608 1629064 5705344 1627992 5704624 1628312 5705744 -1627776 5705560 1628312 5705744 1627992 5704624 1627568 5704840 -1628312 5705744 1628432 5705728 1628648 5705608 1627992 5704624 -1627568 5704840 1627528 5705000 1627776 5705560 1627992 5704624 -1627776 5705560 1628312 5705744 1627992 5704624 1627528 5705000 -1627992 5704624 1627552 5704744 1627568 5704840 1627528 5705000 -1628472 5703560 1628448 5703536 1628360 5703512 1627992 5704624 -1628968 5703704 1627992 5704624 1629064 5705344 1629208 5705288 -1627528 5705000 1627512 5705016 1627776 5705560 1627992 5704624 -1627992 5704624 1629064 5705344 1628968 5703704 1628472 5703560 -1629064 5705344 1628968 5703704 1627992 5704624 1628648 5705608 -1627552 5704744 1627568 5704840 1627992 5704624 1627416 5704464 -1627992 5704624 1627752 5704352 1627416 5704464 1627552 5704744 -1627904 5703304 1627752 5704352 1627992 5704624 1628360 5703512 -1627992 5704624 1628472 5703560 1628360 5703512 1627752 5704352 -1628360 5703512 1627904 5703304 1627752 5704352 1628472 5703560 -1627416 5704464 1627752 5704352 1627904 5703304 1627736 5703288 -1627416 5704464 1627752 5704352 1627736 5703288 1627080 5703984 -1627752 5704352 1627904 5703304 1627736 5703288 1627080 5703984 -1627992 5704624 1628968 5703704 1628472 5703560 1627752 5704352 -1628472 5703560 1628448 5703536 1628360 5703512 1627752 5704352 -1627736 5703288 1627384 5703352 1627080 5703984 1627752 5704352 -1627080 5703984 1627416 5704464 1627752 5704352 1627384 5703352 -1627736 5703288 1627384 5703352 1627752 5704352 1627904 5703304 -1627384 5703352 1627136 5703592 1627080 5703984 1627752 5704352 -1627080 5703984 1627416 5704464 1627752 5704352 1627136 5703592 -1627384 5703352 1627200 5703448 1627136 5703592 1627752 5704352 -1627136 5703592 1627056 5703704 1627080 5703984 1627752 5704352 -1627384 5703352 1627136 5703592 1627752 5704352 1627736 5703288 -1627992 5704624 1628472 5703560 1627752 5704352 1627552 5704744 -1627992 5704624 1627752 5704352 1627552 5704744 1627568 5704840 -1627752 5704352 1627080 5703984 1627416 5704464 1627552 5704744 -1627904 5703304 1627736 5703288 1627752 5704352 1628360 5703512 -1627136 5703592 1627624 5704144 1627384 5703352 1627200 5703448 -1627752 5704352 1627624 5704144 1627136 5703592 1627080 5703984 -1627752 5704352 1627624 5704144 1627080 5703984 1627416 5704464 -1627624 5704144 1627136 5703592 1627080 5703984 1627416 5704464 -1627624 5704144 1627384 5703352 1627136 5703592 1627080 5703984 -1627136 5703592 1627056 5703704 1627080 5703984 1627624 5704144 -1627384 5703352 1627624 5704144 1627752 5704352 1627736 5703288 -1627752 5704352 1627904 5703304 1627736 5703288 1627624 5704144 -1627736 5703288 1627384 5703352 1627624 5704144 1627904 5703304 -1627752 5704352 1627624 5704144 1627416 5704464 1627552 5704744 -1627752 5704352 1627904 5703304 1627624 5704144 1627416 5704464 -1627752 5704352 1628360 5703512 1627904 5703304 1627624 5704144 -1627752 5704352 1628472 5703560 1628360 5703512 1627624 5704144 -1627904 5703304 1627736 5703288 1627624 5704144 1628360 5703512 -1627752 5704352 1628360 5703512 1627624 5704144 1627416 5704464 -1627384 5703352 1627136 5703592 1627624 5704144 1627736 5703288 -1627136 5703592 1627592 5704048 1627384 5703352 1627200 5703448 -1627624 5704144 1627592 5704048 1627136 5703592 1627080 5703984 -1627624 5704144 1627592 5704048 1627080 5703984 1627416 5704464 -1627624 5704144 1627592 5704048 1627416 5704464 1627752 5704352 -1627592 5704048 1627136 5703592 1627080 5703984 1627416 5704464 -1627136 5703592 1627056 5703704 1627080 5703984 1627592 5704048 -1627592 5704048 1627384 5703352 1627136 5703592 1627080 5703984 -1627624 5704144 1627384 5703352 1627592 5704048 1627416 5704464 -1627384 5703352 1627592 5704048 1627624 5704144 1627736 5703288 -1627624 5704144 1627904 5703304 1627736 5703288 1627592 5704048 -1627624 5704144 1628360 5703512 1627904 5703304 1627592 5704048 -1627904 5703304 1627736 5703288 1627592 5704048 1628360 5703512 -1627624 5704144 1627752 5704352 1628360 5703512 1627592 5704048 -1627592 5704048 1627416 5704464 1627624 5704144 1628360 5703512 -1627736 5703288 1627384 5703352 1627592 5704048 1627904 5703304 -1627384 5703352 1627136 5703592 1627592 5704048 1627736 5703288 -1627736 5703288 1627592 5704000 1627592 5704048 1627904 5703304 -1627592 5704048 1628360 5703512 1627904 5703304 1627592 5704000 -1627592 5704048 1627624 5704144 1628360 5703512 1627592 5704000 -1628360 5703512 1627904 5703304 1627592 5704000 1627624 5704144 -1627624 5704144 1627752 5704352 1628360 5703512 1627592 5704000 -1627904 5703304 1627736 5703288 1627592 5704000 1628360 5703512 -1627592 5704000 1627384 5703352 1627592 5704048 1627624 5704144 -1627592 5704048 1627592 5704000 1627384 5703352 1627136 5703592 -1627384 5703352 1627200 5703448 1627136 5703592 1627592 5704000 -1627592 5704048 1627592 5704000 1627136 5703592 1627080 5703984 -1627592 5704048 1627592 5704000 1627080 5703984 1627416 5704464 -1627136 5703592 1627056 5703704 1627080 5703984 1627592 5704000 -1627592 5704048 1627624 5704144 1627592 5704000 1627080 5703984 -1627592 5704000 1627384 5703352 1627136 5703592 1627080 5703984 -1627592 5704000 1627736 5703288 1627384 5703352 1627136 5703592 -1627736 5703288 1627384 5703352 1627592 5704000 1627904 5703304 -1628360 5703512 1627664 5703936 1627592 5704000 1627624 5704144 -1627592 5704000 1627592 5704048 1627624 5704144 1627664 5703936 -1628360 5703512 1627904 5703304 1627664 5703936 1627624 5704144 -1627624 5704144 1628360 5703512 1627664 5703936 1627592 5704048 -1628360 5703512 1627664 5703936 1627624 5704144 1627752 5704352 -1628360 5703512 1627664 5703936 1627752 5704352 1628472 5703560 -1627752 5704352 1627992 5704624 1628472 5703560 1627664 5703936 -1628360 5703512 1627904 5703304 1627664 5703936 1628472 5703560 -1628360 5703512 1627664 5703936 1628472 5703560 1628448 5703536 -1627664 5703936 1627592 5704048 1627624 5704144 1627752 5704352 -1627664 5703936 1627624 5704144 1627752 5704352 1628472 5703560 -1627592 5704000 1627664 5703936 1627904 5703304 1627736 5703288 -1627664 5703936 1628360 5703512 1627904 5703304 1627736 5703288 -1627664 5703936 1627736 5703288 1627592 5704000 1627592 5704048 -1627592 5704000 1627664 5703936 1627736 5703288 1627384 5703352 -1627664 5703936 1627904 5703304 1627736 5703288 1627384 5703352 -1627592 5704000 1627664 5703936 1627384 5703352 1627136 5703592 -1627384 5703352 1627200 5703448 1627136 5703592 1627664 5703936 -1627592 5704000 1627664 5703936 1627136 5703592 1627080 5703984 -1627592 5704000 1627592 5704048 1627664 5703936 1627136 5703592 -1627664 5703936 1627736 5703288 1627384 5703352 1627136 5703592 -1627664 5703936 1627728 5703896 1627904 5703304 1627736 5703288 -1627664 5703936 1628360 5703512 1627728 5703896 1627736 5703288 -1628360 5703512 1627728 5703896 1627664 5703936 1628472 5703560 -1627664 5703936 1627752 5704352 1628472 5703560 1627728 5703896 -1627752 5704352 1627992 5704624 1628472 5703560 1627728 5703896 -1627728 5703896 1627736 5703288 1627664 5703936 1627752 5704352 -1628472 5703560 1628360 5703512 1627728 5703896 1627752 5704352 -1627728 5703896 1628360 5703512 1627904 5703304 1627736 5703288 -1628360 5703512 1627904 5703304 1627728 5703896 1628472 5703560 -1628360 5703512 1627728 5703896 1628472 5703560 1628448 5703536 -1627664 5703936 1627624 5704144 1627752 5704352 1627728 5703896 -1627752 5704352 1628472 5703560 1627728 5703896 1627624 5704144 -1627664 5703936 1627624 5704144 1627728 5703896 1627736 5703288 -1627664 5703936 1627592 5704048 1627624 5704144 1627728 5703896 -1627664 5703936 1627728 5703896 1627736 5703288 1627384 5703352 -1627728 5703896 1627904 5703304 1627736 5703288 1627384 5703352 -1627664 5703936 1627624 5704144 1627728 5703896 1627384 5703352 -1627664 5703936 1627728 5703896 1627384 5703352 1627136 5703592 -1628472 5703560 1627792 5703880 1627752 5704352 1627992 5704624 -1627752 5704352 1627792 5703880 1627728 5703896 1627624 5704144 -1628472 5703560 1627792 5703880 1627992 5704624 1628968 5703704 -1628472 5703560 1627728 5703896 1627792 5703880 1627992 5704624 -1627792 5703880 1627624 5704144 1627752 5704352 1627992 5704624 -1627728 5703896 1627792 5703880 1628472 5703560 1628360 5703512 -1627792 5703880 1627992 5704624 1628472 5703560 1628360 5703512 -1627792 5703880 1628360 5703512 1627728 5703896 1627624 5704144 -1627728 5703896 1627792 5703880 1628360 5703512 1627904 5703304 -1627792 5703880 1628472 5703560 1628360 5703512 1627904 5703304 -1627728 5703896 1627792 5703880 1627904 5703304 1627736 5703288 -1627728 5703896 1627792 5703880 1627736 5703288 1627384 5703352 -1627728 5703896 1627624 5704144 1627792 5703880 1627736 5703288 -1627792 5703880 1628360 5703512 1627904 5703304 1627736 5703288 -1628472 5703560 1628448 5703536 1628360 5703512 1627792 5703880 -1627728 5703896 1627664 5703936 1627624 5704144 1627792 5703880 -1627992 5704624 1627832 5703888 1627792 5703880 1627752 5704352 -1627992 5704624 1628472 5703560 1627832 5703888 1627752 5704352 -1628472 5703560 1627832 5703888 1627992 5704624 1628968 5703704 -1627792 5703880 1627832 5703888 1628472 5703560 1628360 5703512 -1627832 5703888 1627992 5704624 1628472 5703560 1628360 5703512 -1627832 5703888 1628360 5703512 1627792 5703880 1627752 5704352 -1627792 5703880 1627624 5704144 1627752 5704352 1627832 5703888 -1627752 5704352 1627992 5704624 1627832 5703888 1627624 5704144 -1627792 5703880 1627728 5703896 1627624 5704144 1627832 5703888 -1627792 5703880 1627728 5703896 1627832 5703888 1628360 5703512 -1627624 5704144 1627752 5704352 1627832 5703888 1627728 5703896 -1627792 5703880 1627832 5703888 1628360 5703512 1627904 5703304 -1627832 5703888 1628472 5703560 1628360 5703512 1627904 5703304 -1627792 5703880 1627728 5703896 1627832 5703888 1627904 5703304 -1627792 5703880 1627832 5703888 1627904 5703304 1627736 5703288 -1628472 5703560 1628448 5703536 1628360 5703512 1627832 5703888 -1627728 5703896 1627664 5703936 1627624 5704144 1627832 5703888 -1627832 5703888 1628064 5703824 1628472 5703560 1628360 5703512 -1628064 5703824 1627992 5704624 1628472 5703560 1628360 5703512 -1627832 5703888 1627992 5704624 1628064 5703824 1628360 5703512 -1627992 5704624 1628064 5703824 1627832 5703888 1627752 5704352 -1627832 5703888 1627624 5704144 1627752 5704352 1628064 5703824 -1627992 5704624 1628472 5703560 1628064 5703824 1627752 5704352 -1628064 5703824 1628360 5703512 1627832 5703888 1627752 5704352 -1628472 5703560 1628064 5703824 1627992 5704624 1628968 5703704 -1628472 5703560 1628360 5703512 1628064 5703824 1628968 5703704 -1628064 5703824 1627752 5704352 1627992 5704624 1628968 5703704 -1627832 5703888 1628064 5703824 1628360 5703512 1627904 5703304 -1628064 5703824 1628472 5703560 1628360 5703512 1627904 5703304 -1627832 5703888 1627752 5704352 1628064 5703824 1627904 5703304 -1627832 5703888 1628064 5703824 1627904 5703304 1627792 5703880 -1628472 5703560 1628448 5703536 1628360 5703512 1628064 5703824 -1627992 5704624 1629064 5705344 1628968 5703704 1628064 5703824 -1627992 5704624 1628168 5703832 1628064 5703824 1627752 5704352 -1627992 5704624 1628968 5703704 1628168 5703832 1627752 5704352 -1628168 5703832 1628968 5703704 1628064 5703824 1627752 5704352 -1628064 5703824 1627832 5703888 1627752 5704352 1628168 5703832 -1628064 5703824 1628168 5703832 1628968 5703704 1628472 5703560 -1628168 5703832 1627992 5704624 1628968 5703704 1628472 5703560 -1628064 5703824 1628168 5703832 1628472 5703560 1628360 5703512 -1628064 5703824 1627752 5704352 1628168 5703832 1628360 5703512 -1628064 5703824 1628168 5703832 1628360 5703512 1627904 5703304 -1628168 5703832 1628968 5703704 1628472 5703560 1628360 5703512 -1628472 5703560 1628448 5703536 1628360 5703512 1628168 5703832 -1628968 5703704 1628168 5703832 1627992 5704624 1629064 5705344 -1628168 5703832 1628360 5703944 1628968 5703704 1628472 5703560 -1628168 5703832 1627992 5704624 1628360 5703944 1628472 5703560 -1627992 5704624 1628360 5703944 1628168 5703832 1627752 5704352 -1628360 5703944 1628472 5703560 1628168 5703832 1627752 5704352 -1628360 5703944 1627992 5704624 1628968 5703704 1628472 5703560 -1628168 5703832 1628064 5703824 1627752 5704352 1628360 5703944 -1628168 5703832 1628064 5703824 1628360 5703944 1628472 5703560 -1627752 5704352 1627992 5704624 1628360 5703944 1628064 5703824 -1628064 5703824 1627832 5703888 1627752 5704352 1628360 5703944 -1627992 5704624 1628968 5703704 1628360 5703944 1627752 5704352 -1628168 5703832 1628360 5703944 1628472 5703560 1628360 5703512 -1628968 5703704 1628360 5703944 1627992 5704624 1629064 5705344 -1628968 5703704 1628472 5703560 1628360 5703944 1629064 5705344 -1628360 5703944 1627752 5704352 1627992 5704624 1629064 5705344 -1628968 5703704 1628360 5703944 1629064 5705344 1629208 5705288 -1628968 5703704 1628472 5703560 1628360 5703944 1629208 5705288 -1628360 5703944 1627992 5704624 1629064 5705344 1629208 5705288 -1627992 5704624 1628648 5705608 1629064 5705344 1628360 5703944 -1628968 5703704 1628360 5703944 1629208 5705288 1629472 5703936 -1628968 5703704 1628472 5703560 1628360 5703944 1629472 5703936 -1628360 5703944 1629064 5705344 1629208 5705288 1629472 5703936 -1629208 5705288 1629312 5705264 1629472 5703936 1628360 5703944 -1629208 5705288 1628392 5703960 1628360 5703944 1629064 5705344 -1628392 5703960 1629472 5703936 1628360 5703944 1629064 5705344 -1629208 5705288 1629472 5703936 1628392 5703960 1629064 5705344 -1628360 5703944 1627992 5704624 1629064 5705344 1628392 5703960 -1628360 5703944 1627992 5704624 1628392 5703960 1629472 5703936 -1628360 5703944 1627752 5704352 1627992 5704624 1628392 5703960 -1629064 5705344 1629208 5705288 1628392 5703960 1627992 5704624 -1627992 5704624 1628648 5705608 1629064 5705344 1628392 5703960 -1628360 5703944 1628392 5703960 1629472 5703936 1628968 5703704 -1628360 5703944 1628392 5703960 1628968 5703704 1628472 5703560 -1628360 5703944 1628392 5703960 1628472 5703560 1628168 5703832 -1628360 5703944 1627992 5704624 1628392 5703960 1628472 5703560 -1628392 5703960 1629208 5705288 1629472 5703936 1628968 5703704 -1628392 5703960 1629472 5703936 1628968 5703704 1628472 5703560 -1629472 5703936 1628392 5703960 1629208 5705288 1629312 5705264 -1629472 5703936 1628592 5703896 1628392 5703960 1629208 5705288 -1628392 5703960 1629064 5705344 1629208 5705288 1628592 5703896 -1629208 5705288 1629472 5703936 1628592 5703896 1629064 5705344 -1628592 5703896 1628968 5703704 1628392 5703960 1629064 5705344 -1629472 5703936 1628968 5703704 1628592 5703896 1629208 5705288 -1628392 5703960 1627992 5704624 1629064 5705344 1628592 5703896 -1629064 5705344 1629208 5705288 1628592 5703896 1627992 5704624 -1628392 5703960 1627992 5704624 1628592 5703896 1628968 5703704 -1628392 5703960 1628360 5703944 1627992 5704624 1628592 5703896 -1627992 5704624 1628648 5705608 1629064 5705344 1628592 5703896 -1628392 5703960 1628592 5703896 1628968 5703704 1628472 5703560 -1628392 5703960 1628592 5703896 1628472 5703560 1628360 5703944 -1628472 5703560 1628168 5703832 1628360 5703944 1628592 5703896 -1628392 5703960 1627992 5704624 1628592 5703896 1628360 5703944 -1628592 5703896 1629472 5703936 1628968 5703704 1628472 5703560 -1628592 5703896 1628968 5703704 1628472 5703560 1628360 5703944 -1629472 5703936 1628592 5703896 1629208 5705288 1629312 5705264 -1628592 5703896 1628760 5703880 1628968 5703704 1628472 5703560 -1628592 5703896 1629472 5703936 1628760 5703880 1628472 5703560 -1629472 5703936 1628760 5703880 1628592 5703896 1629208 5705288 -1628592 5703896 1629064 5705344 1629208 5705288 1628760 5703880 -1628592 5703896 1627992 5704624 1629064 5705344 1628760 5703880 -1629064 5705344 1629208 5705288 1628760 5703880 1627992 5704624 -1628760 5703880 1628472 5703560 1628592 5703896 1627992 5704624 -1629208 5705288 1629472 5703936 1628760 5703880 1629064 5705344 -1628760 5703880 1629472 5703936 1628968 5703704 1628472 5703560 -1629472 5703936 1628968 5703704 1628760 5703880 1629208 5705288 -1628592 5703896 1628392 5703960 1627992 5704624 1628760 5703880 -1627992 5704624 1628648 5705608 1629064 5705344 1628760 5703880 -1628592 5703896 1628760 5703880 1628472 5703560 1628360 5703944 -1629472 5703936 1628760 5703880 1629208 5705288 1629312 5705264 -1629208 5705288 1629008 5703912 1628760 5703880 1629064 5705344 -1628760 5703880 1627992 5704624 1629064 5705344 1629008 5703912 -1629008 5703912 1629472 5703936 1628760 5703880 1629064 5705344 -1628760 5703880 1629008 5703912 1629472 5703936 1628968 5703704 -1629008 5703912 1629208 5705288 1629472 5703936 1628968 5703704 -1628760 5703880 1629008 5703912 1628968 5703704 1628472 5703560 -1628760 5703880 1629064 5705344 1629008 5703912 1628968 5703704 -1629208 5705288 1629472 5703936 1629008 5703912 1629064 5705344 -1629472 5703936 1629008 5703912 1629208 5705288 1629312 5705264 -1629472 5703936 1628968 5703704 1629008 5703912 1629312 5705264 -1629008 5703912 1629064 5705344 1629208 5705288 1629312 5705264 -1629472 5703936 1629008 5703912 1629312 5705264 1629752 5704128 -1629008 5703912 1629288 5704040 1629472 5703936 1628968 5703704 -1629008 5703912 1629288 5704040 1628968 5703704 1628760 5703880 -1629008 5703912 1629312 5705264 1629288 5704040 1628968 5703704 -1629288 5704040 1629312 5705264 1629472 5703936 1628968 5703704 -1629472 5703936 1629288 5704040 1629312 5705264 1629752 5704128 -1629472 5703936 1628968 5703704 1629288 5704040 1629752 5704128 -1629288 5704040 1629008 5703912 1629312 5705264 1629752 5704128 -1629312 5705264 1629376 5705272 1629752 5704128 1629288 5704040 -1629312 5705264 1629288 5704040 1629008 5703912 1629208 5705288 -1629288 5704040 1628968 5703704 1629008 5703912 1629208 5705288 -1629008 5703912 1629064 5705344 1629208 5705288 1629288 5704040 -1629008 5703912 1628760 5703880 1629064 5705344 1629288 5704040 -1629008 5703912 1629064 5705344 1629288 5704040 1628968 5703704 -1629312 5705264 1629752 5704128 1629288 5704040 1629208 5705288 -1629208 5705288 1629312 5705264 1629288 5704040 1629064 5705344 -1629312 5705264 1629392 5704120 1629288 5704040 1629208 5705288 -1629312 5705264 1629752 5704128 1629392 5704120 1629208 5705288 -1629392 5704120 1629752 5704128 1629288 5704040 1629208 5705288 -1629752 5704128 1629392 5704120 1629312 5705264 1629376 5705272 -1629752 5704128 1629288 5704040 1629392 5704120 1629376 5705272 -1629392 5704120 1629208 5705288 1629312 5705264 1629376 5705272 -1629752 5704128 1629392 5704120 1629376 5705272 1629944 5704312 -1629376 5705272 1630064 5704496 1629944 5704312 1629392 5704120 -1629752 5704128 1629288 5704040 1629392 5704120 1629944 5704312 -1629392 5704120 1629312 5705264 1629376 5705272 1629944 5704312 -1629288 5704040 1629392 5704120 1629752 5704128 1629472 5703936 -1629392 5704120 1629944 5704312 1629752 5704128 1629472 5703936 -1629288 5704040 1629392 5704120 1629472 5703936 1628968 5703704 -1629288 5704040 1629208 5705288 1629392 5704120 1629472 5703936 -1629288 5704040 1629064 5705344 1629208 5705288 1629392 5704120 -1629944 5704312 1629432 5704184 1629376 5705272 1630064 5704496 -1629944 5704312 1629392 5704120 1629432 5704184 1630064 5704496 -1629376 5705272 1630112 5704600 1630064 5704496 1629432 5704184 -1629432 5704184 1629392 5704120 1629376 5705272 1630064 5704496 -1629376 5705272 1629432 5704184 1629392 5704120 1629312 5705264 -1629432 5704184 1629944 5704312 1629392 5704120 1629312 5705264 -1629392 5704120 1629208 5705288 1629312 5705264 1629432 5704184 -1629392 5704120 1629208 5705288 1629432 5704184 1629944 5704312 -1629376 5705272 1630064 5704496 1629432 5704184 1629312 5705264 -1629392 5704120 1629288 5704040 1629208 5705288 1629432 5704184 -1629392 5704120 1629288 5704040 1629432 5704184 1629944 5704312 -1629208 5705288 1629312 5705264 1629432 5704184 1629288 5704040 -1629312 5705264 1629376 5705272 1629432 5704184 1629208 5705288 -1629392 5704120 1629432 5704184 1629944 5704312 1629752 5704128 -1629392 5704120 1629432 5704184 1629752 5704128 1629472 5703936 -1629392 5704120 1629288 5704040 1629432 5704184 1629472 5703936 -1629432 5704184 1630064 5704496 1629944 5704312 1629752 5704128 -1629432 5704184 1629944 5704312 1629752 5704128 1629472 5703936 -1629392 5704120 1629432 5704184 1629472 5703936 1629288 5704040 -1629288 5704040 1629064 5705344 1629208 5705288 1629432 5704184 -1629208 5705288 1629312 5705264 1629432 5704184 1629064 5705344 -1629288 5704040 1629008 5703912 1629064 5705344 1629432 5704184 -1629008 5703912 1628760 5703880 1629064 5705344 1629432 5704184 -1629288 5704040 1629008 5703912 1629432 5704184 1629392 5704120 -1629064 5705344 1629208 5705288 1629432 5704184 1629008 5703912 -1629432 5704184 1629456 5704296 1630064 5704496 1629944 5704312 -1629456 5704296 1629376 5705272 1630064 5704496 1629944 5704312 -1629432 5704184 1629456 5704296 1629944 5704312 1629752 5704128 -1629456 5704296 1630064 5704496 1629944 5704312 1629752 5704128 -1629432 5704184 1629376 5705272 1629456 5704296 1629752 5704128 -1630064 5704496 1629456 5704296 1629376 5705272 1630112 5704600 -1630064 5704496 1629944 5704312 1629456 5704296 1630112 5704600 -1629456 5704296 1629432 5704184 1629376 5705272 1630112 5704600 -1629376 5705272 1630128 5704656 1630112 5704600 1629456 5704296 -1629376 5705272 1630128 5704656 1629456 5704296 1629432 5704184 -1630128 5704656 1630136 5704624 1630112 5704600 1629456 5704296 -1630112 5704600 1630064 5704496 1629456 5704296 1630128 5704656 -1629376 5705272 1629456 5704296 1629432 5704184 1629312 5705264 -1629376 5705272 1630128 5704656 1629456 5704296 1629312 5705264 -1629456 5704296 1629752 5704128 1629432 5704184 1629312 5705264 -1629376 5705272 1630152 5704824 1630128 5704656 1629456 5704296 -1629432 5704184 1629208 5705288 1629312 5705264 1629456 5704296 -1629432 5704184 1629064 5705344 1629208 5705288 1629456 5704296 -1629432 5704184 1629064 5705344 1629456 5704296 1629752 5704128 -1629312 5705264 1629376 5705272 1629456 5704296 1629208 5705288 -1629208 5705288 1629312 5705264 1629456 5704296 1629064 5705344 -1629432 5704184 1629456 5704296 1629752 5704128 1629472 5703936 -1629432 5704184 1629008 5703912 1629064 5705344 1629456 5704296 -1629064 5705344 1629208 5705288 1629456 5704296 1629008 5703912 -1629432 5704184 1629008 5703912 1629456 5704296 1629752 5704128 -1629008 5703912 1628760 5703880 1629064 5705344 1629456 5704296 -1629064 5705344 1629208 5705288 1629456 5704296 1628760 5703880 -1628760 5703880 1627992 5704624 1629064 5705344 1629456 5704296 -1629432 5704184 1629288 5704040 1629008 5703912 1629456 5704296 -1629432 5704184 1629288 5704040 1629456 5704296 1629752 5704128 -1629432 5704184 1629392 5704120 1629288 5704040 1629456 5704296 -1629432 5704184 1629392 5704120 1629456 5704296 1629752 5704128 -1629288 5704040 1629008 5703912 1629456 5704296 1629392 5704120 -1629008 5703912 1628760 5703880 1629456 5704296 1629288 5704040 -1629456 5704296 1628760 5703880 1629064 5705344 1629376 5704616 -1629064 5705344 1629208 5705288 1629376 5704616 1628760 5703880 -1628760 5703880 1627992 5704624 1629064 5705344 1629376 5704616 -1629064 5705344 1629208 5705288 1629376 5704616 1627992 5704624 -1628760 5703880 1627992 5704624 1629376 5704616 1629456 5704296 -1628760 5703880 1628592 5703896 1627992 5704624 1629376 5704616 -1628760 5703880 1628592 5703896 1629376 5704616 1629456 5704296 -1627992 5704624 1629064 5705344 1629376 5704616 1628592 5703896 -1629456 5704296 1629376 5704616 1629312 5705264 1629376 5705272 -1629456 5704296 1629376 5704616 1629376 5705272 1630128 5704656 -1629376 5704616 1629208 5705288 1629312 5705264 1629376 5705272 -1629456 5704296 1629376 5704616 1630128 5704656 1630112 5704600 -1629376 5704616 1629376 5705272 1630128 5704656 1630112 5704600 -1630128 5704656 1630136 5704624 1630112 5704600 1629376 5704616 -1629456 5704296 1629376 5704616 1630112 5704600 1630064 5704496 -1629456 5704296 1629376 5704616 1630064 5704496 1629944 5704312 -1629456 5704296 1629376 5704616 1629944 5704312 1629752 5704128 -1629376 5704616 1630128 5704656 1630112 5704600 1630064 5704496 -1629376 5704616 1630112 5704600 1630064 5704496 1629944 5704312 -1629376 5704616 1629312 5705264 1629376 5705272 1630128 5704656 -1629456 5704296 1629008 5703912 1628760 5703880 1629376 5704616 -1628760 5703880 1628592 5703896 1629376 5704616 1629008 5703912 -1628592 5703896 1628392 5703960 1627992 5704624 1629376 5704616 -1627992 5704624 1629064 5705344 1629376 5704616 1628392 5703960 -1628592 5703896 1628392 5703960 1629376 5704616 1628760 5703880 -1628392 5703960 1628360 5703944 1627992 5704624 1629376 5704616 -1629376 5705272 1630152 5704824 1630128 5704656 1629376 5704616 -1630128 5704656 1630112 5704600 1629376 5704616 1630152 5704824 -1629376 5705272 1629568 5705376 1630152 5704824 1629376 5704616 -1629376 5705272 1629568 5705376 1629376 5704616 1629312 5705264 -1630152 5704824 1630128 5704656 1629376 5704616 1629568 5705376 -1629456 5704296 1629008 5703912 1629376 5704616 1629944 5704312 -1627992 5704624 1628648 5705608 1629064 5705344 1629376 5704616 -1629568 5705376 1630080 5705344 1630152 5704824 1629376 5704616 -1629456 5704296 1629288 5704040 1629008 5703912 1629376 5704616 -1629008 5703912 1628760 5703880 1629376 5704616 1629288 5704040 -1629456 5704296 1629392 5704120 1629288 5704040 1629376 5704616 -1629456 5704296 1629288 5704040 1629376 5704616 1629944 5704312 -1629376 5704616 1629312 5704752 1629064 5705344 1629208 5705288 -1629376 5704616 1629312 5704752 1629208 5705288 1629312 5705264 -1629312 5704752 1629064 5705344 1629208 5705288 1629312 5705264 -1629376 5704616 1629312 5704752 1629312 5705264 1629376 5705272 -1629312 5704752 1629208 5705288 1629312 5705264 1629376 5705272 -1629376 5704616 1627992 5704624 1629312 5704752 1629376 5705272 -1627992 5704624 1629312 5704752 1629376 5704616 1628392 5703960 -1629312 5704752 1629376 5705272 1629376 5704616 1628392 5703960 -1629376 5704616 1629312 5704752 1629376 5705272 1629568 5705376 -1629312 5704752 1629312 5705264 1629376 5705272 1629568 5705376 -1629376 5704616 1628392 5703960 1629312 5704752 1629568 5705376 -1629376 5704616 1629312 5704752 1629568 5705376 1630152 5704824 -1629376 5704616 1628392 5703960 1629312 5704752 1630152 5704824 -1629312 5704752 1629376 5705272 1629568 5705376 1630152 5704824 -1629312 5704752 1627992 5704624 1629064 5705344 1629208 5705288 -1627992 5704624 1629064 5705344 1629312 5704752 1628392 5703960 -1629376 5704616 1628592 5703896 1628392 5703960 1629312 5704752 -1629376 5704616 1628592 5703896 1629312 5704752 1630152 5704824 -1628392 5703960 1627992 5704624 1629312 5704752 1628592 5703896 -1629376 5704616 1628760 5703880 1628592 5703896 1629312 5704752 -1629376 5704616 1628760 5703880 1629312 5704752 1630152 5704824 -1629376 5704616 1629008 5703912 1628760 5703880 1629312 5704752 -1629376 5704616 1629008 5703912 1629312 5704752 1630152 5704824 -1628760 5703880 1628592 5703896 1629312 5704752 1629008 5703912 -1629376 5704616 1629288 5704040 1629008 5703912 1629312 5704752 -1628592 5703896 1628392 5703960 1629312 5704752 1628760 5703880 -1627992 5704624 1629312 5704752 1628392 5703960 1628360 5703944 -1629376 5704616 1629312 5704752 1630152 5704824 1630128 5704656 -1629064 5705344 1629312 5704752 1627992 5704624 1628648 5705608 -1629568 5705376 1630080 5705344 1630152 5704824 1629312 5704752 -1629312 5704752 1629240 5704840 1629064 5705344 1629208 5705288 -1629312 5704752 1629240 5704840 1629208 5705288 1629312 5705264 -1629312 5704752 1629240 5704840 1629312 5705264 1629376 5705272 -1629240 5704840 1629208 5705288 1629312 5705264 1629376 5705272 -1629312 5704752 1629240 5704840 1629376 5705272 1629568 5705376 -1629240 5704840 1629064 5705344 1629208 5705288 1629312 5705264 -1629312 5704752 1627992 5704624 1629240 5704840 1629376 5705272 -1627992 5704624 1629240 5704840 1629312 5704752 1628392 5703960 -1629312 5704752 1628592 5703896 1628392 5703960 1629240 5704840 -1627992 5704624 1629064 5705344 1629240 5704840 1628392 5703960 -1629240 5704840 1629376 5705272 1629312 5704752 1628592 5703896 -1628392 5703960 1627992 5704624 1629240 5704840 1628592 5703896 -1629240 5704840 1627992 5704624 1629064 5705344 1629208 5705288 -1629312 5704752 1628760 5703880 1628592 5703896 1629240 5704840 -1628592 5703896 1628392 5703960 1629240 5704840 1628760 5703880 -1629312 5704752 1629008 5703912 1628760 5703880 1629240 5704840 -1629312 5704752 1629376 5704616 1629008 5703912 1629240 5704840 -1629008 5703912 1628760 5703880 1629240 5704840 1629376 5704616 -1629312 5704752 1629376 5704616 1629240 5704840 1629376 5705272 -1629376 5704616 1629288 5704040 1629008 5703912 1629240 5704840 -1628760 5703880 1628592 5703896 1629240 5704840 1629008 5703912 -1627992 5704624 1629240 5704840 1628392 5703960 1628360 5703944 -1629064 5705344 1629240 5704840 1627992 5704624 1628648 5705608 -1627992 5704624 1629120 5704920 1629240 5704840 1628392 5703960 -1629120 5704920 1629064 5705344 1629240 5704840 1628392 5703960 -1629240 5704840 1628592 5703896 1628392 5703960 1629120 5704920 -1629240 5704840 1628760 5703880 1628592 5703896 1629120 5704920 -1629240 5704840 1628760 5703880 1629120 5704920 1629064 5705344 -1628392 5703960 1627992 5704624 1629120 5704920 1628592 5703896 -1628592 5703896 1628392 5703960 1629120 5704920 1628760 5703880 -1629240 5704840 1629120 5704920 1629064 5705344 1629208 5705288 -1629240 5704840 1628760 5703880 1629120 5704920 1629208 5705288 -1629120 5704920 1627992 5704624 1629064 5705344 1629208 5705288 -1629240 5704840 1629120 5704920 1629208 5705288 1629312 5705264 -1629240 5704840 1629120 5704920 1629312 5705264 1629376 5705272 -1629240 5704840 1628760 5703880 1629120 5704920 1629312 5705264 -1629120 5704920 1629064 5705344 1629208 5705288 1629312 5705264 -1627992 5704624 1629064 5705344 1629120 5704920 1628392 5703960 -1629240 5704840 1629008 5703912 1628760 5703880 1629120 5704920 -1628760 5703880 1628592 5703896 1629120 5704920 1629008 5703912 -1629240 5704840 1629376 5704616 1629008 5703912 1629120 5704920 -1629240 5704840 1629312 5704752 1629376 5704616 1629120 5704920 -1629376 5704616 1629008 5703912 1629120 5704920 1629312 5704752 -1629240 5704840 1629312 5704752 1629120 5704920 1629312 5705264 -1629376 5704616 1629288 5704040 1629008 5703912 1629120 5704920 -1629008 5703912 1628760 5703880 1629120 5704920 1629376 5704616 -1627992 5704624 1629120 5704920 1628392 5703960 1628360 5703944 -1629064 5705344 1629120 5704920 1627992 5704624 1628648 5705608 -1627992 5704624 1628312 5705744 1628648 5705608 1629120 5704920 -1629064 5705344 1629208 5705288 1629120 5704920 1628648 5705608 -1629120 5704920 1628392 5703960 1627992 5704624 1628648 5705608 -1628648 5705608 1628936 5704944 1627992 5704624 1628312 5705744 -1627992 5704624 1628936 5704944 1629120 5704920 1628392 5703960 -1627992 5704624 1628648 5705608 1628936 5704944 1628392 5703960 -1629120 5704920 1628592 5703896 1628392 5703960 1628936 5704944 -1629120 5704920 1628760 5703880 1628592 5703896 1628936 5704944 -1629120 5704920 1629008 5703912 1628760 5703880 1628936 5704944 -1628592 5703896 1628392 5703960 1628936 5704944 1628760 5703880 -1628760 5703880 1628592 5703896 1628936 5704944 1629008 5703912 -1628936 5704944 1628648 5705608 1629120 5704920 1629008 5703912 -1628392 5703960 1627992 5704624 1628936 5704944 1628592 5703896 -1629120 5704920 1629376 5704616 1629008 5703912 1628936 5704944 -1629008 5703912 1628760 5703880 1628936 5704944 1629376 5704616 -1629120 5704920 1629312 5704752 1629376 5704616 1628936 5704944 -1629120 5704920 1629240 5704840 1629312 5704752 1628936 5704944 -1629312 5704752 1629376 5704616 1628936 5704944 1629240 5704840 -1629376 5704616 1629288 5704040 1629008 5703912 1628936 5704944 -1629120 5704920 1629240 5704840 1628936 5704944 1628648 5705608 -1629376 5704616 1629008 5703912 1628936 5704944 1629312 5704752 -1627992 5704624 1628936 5704944 1628392 5703960 1628360 5703944 -1629120 5704920 1628936 5704944 1628648 5705608 1629064 5705344 -1629120 5704920 1628936 5704944 1629064 5705344 1629208 5705288 -1629120 5704920 1629240 5704840 1628936 5704944 1629064 5705344 -1628936 5704944 1627992 5704624 1628648 5705608 1629064 5705344 -1628648 5705608 1628736 5704920 1627992 5704624 1628312 5705744 -1628736 5704920 1628936 5704944 1627992 5704624 1628312 5705744 -1627992 5704624 1627776 5705560 1628312 5705744 1628736 5704920 -1627992 5704624 1627776 5705560 1628736 5704920 1628936 5704944 -1628312 5705744 1628648 5705608 1628736 5704920 1627776 5705560 -1627992 5704624 1627528 5705000 1627776 5705560 1628736 5704920 -1628648 5705608 1628736 5704920 1628312 5705744 1628432 5705728 -1627992 5704624 1628736 5704920 1628936 5704944 1628392 5703960 -1627992 5704624 1627776 5705560 1628736 5704920 1628392 5703960 -1628736 5704920 1628648 5705608 1628936 5704944 1628392 5703960 -1628648 5705608 1628936 5704944 1628736 5704920 1628312 5705744 -1628936 5704944 1628592 5703896 1628392 5703960 1628736 5704920 -1628936 5704944 1628592 5703896 1628736 5704920 1628648 5705608 -1628392 5703960 1627992 5704624 1628736 5704920 1628592 5703896 -1628936 5704944 1628760 5703880 1628592 5703896 1628736 5704920 -1628936 5704944 1628760 5703880 1628736 5704920 1628648 5705608 -1628936 5704944 1629008 5703912 1628760 5703880 1628736 5704920 -1628936 5704944 1629008 5703912 1628736 5704920 1628648 5705608 -1628936 5704944 1629376 5704616 1629008 5703912 1628736 5704920 -1628936 5704944 1629376 5704616 1628736 5704920 1628648 5705608 -1628760 5703880 1628592 5703896 1628736 5704920 1629008 5703912 -1629008 5703912 1628760 5703880 1628736 5704920 1629376 5704616 -1629376 5704616 1629288 5704040 1629008 5703912 1628736 5704920 -1628592 5703896 1628392 5703960 1628736 5704920 1628760 5703880 -1628936 5704944 1628736 5704920 1628648 5705608 1629064 5705344 -1628936 5704944 1629376 5704616 1628736 5704920 1629064 5705344 -1628736 5704920 1628312 5705744 1628648 5705608 1629064 5705344 -1628936 5704944 1629312 5704752 1629376 5704616 1628736 5704920 -1627992 5704624 1628736 5704920 1628392 5703960 1628360 5703944 -1628936 5704944 1628736 5704920 1629064 5705344 1629120 5704920 -1628736 5704920 1628544 5704832 1627992 5704624 1627776 5705560 -1628736 5704920 1628392 5703960 1628544 5704832 1627776 5705560 -1628544 5704832 1628392 5703960 1627992 5704624 1627776 5705560 -1628736 5704920 1628544 5704832 1627776 5705560 1628312 5705744 -1628736 5704920 1628392 5703960 1628544 5704832 1628312 5705744 -1628544 5704832 1627992 5704624 1627776 5705560 1628312 5705744 -1628736 5704920 1628544 5704832 1628312 5705744 1628648 5705608 -1628736 5704920 1628392 5703960 1628544 5704832 1628648 5705608 -1628544 5704832 1627776 5705560 1628312 5705744 1628648 5705608 -1627992 5704624 1627528 5705000 1627776 5705560 1628544 5704832 -1628312 5705744 1628432 5705728 1628648 5705608 1628544 5704832 -1628312 5705744 1628432 5705728 1628544 5704832 1627776 5705560 -1628648 5705608 1628736 5704920 1628544 5704832 1628432 5705728 -1628392 5703960 1628544 5704832 1628736 5704920 1628592 5703896 -1628544 5704832 1628648 5705608 1628736 5704920 1628592 5703896 -1628736 5704920 1628544 5704832 1628648 5705608 1629064 5705344 -1628392 5703960 1627992 5704624 1628544 5704832 1628592 5703896 -1628736 5704920 1628760 5703880 1628592 5703896 1628544 5704832 -1628736 5704920 1628760 5703880 1628544 5704832 1628648 5705608 -1628592 5703896 1628392 5703960 1628544 5704832 1628760 5703880 -1628736 5704920 1629008 5703912 1628760 5703880 1628544 5704832 -1628736 5704920 1629008 5703912 1628544 5704832 1628648 5705608 -1628736 5704920 1629376 5704616 1629008 5703912 1628544 5704832 -1628760 5703880 1628592 5703896 1628544 5704832 1629008 5703912 -1627992 5704624 1628544 5704832 1628392 5703960 1628360 5703944 -1628544 5704832 1628120 5704736 1627776 5705560 1628312 5705744 -1627992 5704624 1628120 5704736 1628544 5704832 1628392 5703960 -1628544 5704832 1628120 5704736 1628312 5705744 1628432 5705728 -1627776 5705560 1628120 5704736 1627992 5704624 1627528 5705000 -1627992 5704624 1627568 5704840 1627528 5705000 1628120 5704736 -1627528 5705000 1627776 5705560 1628120 5704736 1627568 5704840 -1627992 5704624 1627552 5704744 1627568 5704840 1628120 5704736 -1628544 5704832 1628392 5703960 1628120 5704736 1628312 5705744 -1628544 5704832 1628592 5703896 1628392 5703960 1628120 5704736 -1628120 5704736 1627528 5705000 1627776 5705560 1628312 5705744 -1627992 5704624 1627568 5704840 1628120 5704736 1628392 5703960 -1627776 5705560 1628120 5704736 1627528 5705000 1627512 5705016 -1627992 5704624 1628120 5704736 1628392 5703960 1628360 5703944 -1628120 5704736 1628024 5704664 1627568 5704840 1627528 5705000 -1627568 5704840 1628024 5704664 1627992 5704624 1627552 5704744 -1627992 5704624 1628024 5704664 1628120 5704736 1628392 5703960 -1629008 5703912 1628688 5704264 1628544 5704832 1628736 5704920 -1629008 5703912 1628760 5703880 1628688 5704264 1628736 5704920 -1628688 5704264 1628760 5703880 1628544 5704832 1628736 5704920 -1629008 5703912 1628688 5704264 1628736 5704920 1629376 5704616 -1629008 5703912 1628760 5703880 1628688 5704264 1629376 5704616 -1628736 5704920 1628936 5704944 1629376 5704616 1628688 5704264 -1628688 5704264 1628544 5704832 1628736 5704920 1628936 5704944 -1629376 5704616 1629008 5703912 1628688 5704264 1628936 5704944 -1629008 5703912 1628688 5704264 1629376 5704616 1629288 5704040 -1629008 5703912 1628760 5703880 1628688 5704264 1629288 5704040 -1628688 5704264 1628936 5704944 1629376 5704616 1629288 5704040 -1628544 5704832 1628688 5704264 1628760 5703880 1628592 5703896 -1628688 5704264 1629008 5703912 1628760 5703880 1628592 5703896 -1628544 5704832 1628736 5704920 1628688 5704264 1628592 5703896 -1628544 5704832 1628688 5704264 1628592 5703896 1628392 5703960 -1628544 5704832 1628736 5704920 1628688 5704264 1628392 5703960 -1628544 5704832 1628688 5704264 1628392 5703960 1628120 5704736 -1628392 5703960 1627992 5704624 1628120 5704736 1628688 5704264 -1628544 5704832 1628736 5704920 1628688 5704264 1628120 5704736 -1628688 5704264 1628592 5703896 1628392 5703960 1627992 5704624 -1628120 5704736 1628544 5704832 1628688 5704264 1627992 5704624 -1627992 5704624 1628024 5704664 1628120 5704736 1628688 5704264 -1628688 5704264 1628760 5703880 1628592 5703896 1628392 5703960 -1628936 5704944 1629312 5704752 1629376 5704616 1628688 5704264 -1628936 5704944 1629312 5704752 1628688 5704264 1628736 5704920 -1628936 5704944 1629240 5704840 1629312 5704752 1628688 5704264 -1628936 5704944 1629120 5704920 1629240 5704840 1628688 5704264 -1628936 5704944 1629240 5704840 1628688 5704264 1628736 5704920 -1629376 5704616 1629288 5704040 1628688 5704264 1629312 5704752 -1629312 5704752 1629376 5704616 1628688 5704264 1629240 5704840 -1628392 5703960 1628360 5703944 1627992 5704624 1628688 5704264 -1629376 5704616 1629456 5704296 1629288 5704040 1628688 5704264 -1629376 5704616 1629456 5704296 1628688 5704264 1629312 5704752 -1629288 5704040 1629008 5703912 1628688 5704264 1629456 5704296 -1629456 5704296 1629392 5704120 1629288 5704040 1628688 5704264 -1628688 5704264 1628896 5704264 1629288 5704040 1629008 5703912 -1628688 5704264 1628896 5704264 1629008 5703912 1628760 5703880 -1628688 5704264 1628896 5704264 1628760 5703880 1628592 5703896 -1628688 5704264 1629456 5704296 1628896 5704264 1628760 5703880 -1628896 5704264 1629456 5704296 1629288 5704040 1629008 5703912 -1628896 5704264 1629288 5704040 1629008 5703912 1628760 5703880 -1629288 5704040 1628896 5704264 1629456 5704296 1629392 5704120 -1629288 5704040 1629008 5703912 1628896 5704264 1629392 5704120 -1628896 5704264 1628688 5704264 1629456 5704296 1629392 5704120 -1629456 5704296 1629432 5704184 1629392 5704120 1628896 5704264 -1629456 5704296 1628896 5704264 1628688 5704264 1629376 5704616 -1628896 5704264 1628760 5703880 1628688 5704264 1629376 5704616 -1629456 5704296 1629392 5704120 1628896 5704264 1629376 5704616 -1628688 5704264 1629312 5704752 1629376 5704616 1628896 5704264 -1628688 5704264 1629312 5704752 1628896 5704264 1628760 5703880 -1628688 5704264 1629240 5704840 1629312 5704752 1628896 5704264 -1628688 5704264 1629240 5704840 1628896 5704264 1628760 5703880 -1628688 5704264 1628936 5704944 1629240 5704840 1628896 5704264 -1628688 5704264 1628936 5704944 1628896 5704264 1628760 5703880 -1628936 5704944 1629120 5704920 1629240 5704840 1628896 5704264 -1628688 5704264 1628736 5704920 1628936 5704944 1628896 5704264 -1628688 5704264 1628736 5704920 1628896 5704264 1628760 5703880 -1628936 5704944 1629120 5704920 1628896 5704264 1628736 5704920 -1628688 5704264 1628544 5704832 1628736 5704920 1628896 5704264 -1629312 5704752 1629376 5704616 1628896 5704264 1629240 5704840 -1629240 5704840 1629312 5704752 1628896 5704264 1629120 5704920 -1629376 5704616 1629456 5704296 1628896 5704264 1629312 5704752 -1628896 5704264 1629016 5704288 1629456 5704296 1629392 5704120 -1629016 5704288 1629376 5704616 1629456 5704296 1629392 5704120 -1628896 5704264 1629376 5704616 1629016 5704288 1629392 5704120 -1628896 5704264 1629016 5704288 1629392 5704120 1629288 5704040 -1628896 5704264 1629016 5704288 1629288 5704040 1629008 5703912 -1628896 5704264 1629376 5704616 1629016 5704288 1629008 5703912 -1629016 5704288 1629456 5704296 1629392 5704120 1629288 5704040 -1628896 5704264 1629016 5704288 1629008 5703912 1628760 5703880 -1629016 5704288 1629392 5704120 1629288 5704040 1629008 5703912 -1629456 5704296 1629432 5704184 1629392 5704120 1629016 5704288 -1629456 5704296 1629432 5704184 1629016 5704288 1629376 5704616 -1629392 5704120 1629288 5704040 1629016 5704288 1629432 5704184 -1629376 5704616 1629016 5704288 1628896 5704264 1629312 5704752 -1629376 5704616 1629456 5704296 1629016 5704288 1629312 5704752 -1629016 5704288 1629008 5703912 1628896 5704264 1629312 5704752 -1628896 5704264 1629240 5704840 1629312 5704752 1629016 5704288 -1628896 5704264 1629240 5704840 1629016 5704288 1629008 5703912 -1628896 5704264 1629120 5704920 1629240 5704840 1629016 5704288 -1628896 5704264 1628936 5704944 1629120 5704920 1629016 5704288 -1628896 5704264 1628736 5704920 1628936 5704944 1629016 5704288 -1628896 5704264 1628936 5704944 1629016 5704288 1629008 5703912 -1629240 5704840 1629312 5704752 1629016 5704288 1629120 5704920 -1629120 5704920 1629240 5704840 1629016 5704288 1628936 5704944 -1629312 5704752 1629376 5704616 1629016 5704288 1629240 5704840 -1629016 5704288 1629120 5704328 1629456 5704296 1629432 5704184 -1629016 5704288 1629376 5704616 1629120 5704328 1629432 5704184 -1629376 5704616 1629120 5704328 1629016 5704288 1629312 5704752 -1629120 5704328 1629432 5704184 1629016 5704288 1629312 5704752 -1629120 5704328 1629376 5704616 1629456 5704296 1629432 5704184 -1629376 5704616 1629456 5704296 1629120 5704328 1629312 5704752 -1629016 5704288 1629120 5704328 1629432 5704184 1629392 5704120 -1629120 5704328 1629456 5704296 1629432 5704184 1629392 5704120 -1629016 5704288 1629312 5704752 1629120 5704328 1629392 5704120 -1629016 5704288 1629120 5704328 1629392 5704120 1629288 5704040 -1629016 5704288 1629312 5704752 1629120 5704328 1629288 5704040 -1629016 5704288 1629120 5704328 1629288 5704040 1629008 5703912 -1629120 5704328 1629432 5704184 1629392 5704120 1629288 5704040 -1629016 5704288 1629240 5704840 1629312 5704752 1629120 5704328 -1629016 5704288 1629240 5704840 1629120 5704328 1629288 5704040 -1629312 5704752 1629376 5704616 1629120 5704328 1629240 5704840 -1629016 5704288 1629120 5704920 1629240 5704840 1629120 5704328 -1629016 5704288 1629120 5704920 1629120 5704328 1629288 5704040 -1629016 5704288 1628936 5704944 1629120 5704920 1629120 5704328 -1629016 5704288 1628936 5704944 1629120 5704328 1629288 5704040 -1629016 5704288 1628896 5704264 1628936 5704944 1629120 5704328 -1629120 5704920 1629240 5704840 1629120 5704328 1628936 5704944 -1629240 5704840 1629312 5704752 1629120 5704328 1629120 5704920 -1629120 5704328 1629136 5704344 1629456 5704296 1629432 5704184 -1629136 5704344 1629376 5704616 1629456 5704296 1629432 5704184 -1629120 5704328 1629136 5704344 1629432 5704184 1629392 5704120 -1629136 5704344 1629456 5704296 1629432 5704184 1629392 5704120 -1629120 5704328 1629376 5704616 1629136 5704344 1629392 5704120 -1629376 5704616 1629136 5704344 1629120 5704328 1629312 5704752 -1629376 5704616 1629456 5704296 1629136 5704344 1629312 5704752 -1629120 5704328 1629240 5704840 1629312 5704752 1629136 5704344 -1629136 5704344 1629392 5704120 1629120 5704328 1629240 5704840 -1629312 5704752 1629376 5704616 1629136 5704344 1629240 5704840 -1629120 5704328 1629136 5704344 1629392 5704120 1629288 5704040 -1629120 5704328 1629120 5704920 1629240 5704840 1629136 5704344 -1629240 5704840 1629312 5704752 1629136 5704344 1629120 5704920 -1629120 5704328 1629120 5704920 1629136 5704344 1629392 5704120 -1629120 5704328 1628936 5704944 1629120 5704920 1629136 5704344 -1629120 5704328 1628936 5704944 1629136 5704344 1629392 5704120 -1629120 5704328 1629016 5704288 1628936 5704944 1629136 5704344 -1629120 5704328 1629016 5704288 1629136 5704344 1629392 5704120 -1629016 5704288 1628896 5704264 1628936 5704944 1629136 5704344 -1628936 5704944 1629120 5704920 1629136 5704344 1629016 5704288 -1629120 5704920 1629240 5704840 1629136 5704344 1628936 5704944 -1628936 5704944 1629128 5704416 1629136 5704344 1629016 5704288 -1629128 5704416 1629120 5704920 1629136 5704344 1629016 5704288 -1628936 5704944 1629120 5704920 1629128 5704416 1629016 5704288 -1628936 5704944 1629128 5704416 1629016 5704288 1628896 5704264 -1628936 5704944 1629120 5704920 1629128 5704416 1628896 5704264 -1628936 5704944 1629128 5704416 1628896 5704264 1628736 5704920 -1628936 5704944 1629120 5704920 1629128 5704416 1628736 5704920 -1629128 5704416 1629016 5704288 1628896 5704264 1628736 5704920 -1628896 5704264 1628688 5704264 1628736 5704920 1629128 5704416 -1629128 5704416 1629136 5704344 1629016 5704288 1628896 5704264 -1629136 5704344 1629120 5704328 1629016 5704288 1629128 5704416 -1629136 5704344 1629120 5704328 1629128 5704416 1629120 5704920 -1629016 5704288 1628896 5704264 1629128 5704416 1629120 5704328 -1629136 5704344 1629128 5704416 1629120 5704920 1629240 5704840 -1629136 5704344 1629120 5704328 1629128 5704416 1629240 5704840 -1629136 5704344 1629128 5704416 1629240 5704840 1629312 5704752 -1629136 5704344 1629120 5704328 1629128 5704416 1629312 5704752 -1629136 5704344 1629128 5704416 1629312 5704752 1629376 5704616 -1629136 5704344 1629120 5704328 1629128 5704416 1629376 5704616 -1629136 5704344 1629128 5704416 1629376 5704616 1629456 5704296 -1629136 5704344 1629128 5704416 1629456 5704296 1629432 5704184 -1629136 5704344 1629120 5704328 1629128 5704416 1629456 5704296 -1629128 5704416 1629240 5704840 1629312 5704752 1629376 5704616 -1629128 5704416 1629312 5704752 1629376 5704616 1629456 5704296 -1629128 5704416 1628936 5704944 1629120 5704920 1629240 5704840 -1629128 5704416 1629120 5704920 1629240 5704840 1629312 5704752 -1629128 5704416 1629056 5704520 1628936 5704944 1629120 5704920 -1629128 5704416 1629056 5704520 1629120 5704920 1629240 5704840 -1629128 5704416 1628736 5704920 1629056 5704520 1629240 5704840 -1629056 5704520 1628936 5704944 1629120 5704920 1629240 5704840 -1628736 5704920 1629056 5704520 1629128 5704416 1628896 5704264 -1629056 5704520 1629240 5704840 1629128 5704416 1628896 5704264 -1629128 5704416 1629016 5704288 1628896 5704264 1629056 5704520 -1629128 5704416 1629016 5704288 1629056 5704520 1629240 5704840 -1628736 5704920 1629056 5704520 1628896 5704264 1628688 5704264 -1628896 5704264 1628688 5704264 1629056 5704520 1629016 5704288 -1628736 5704920 1629056 5704520 1628688 5704264 1628544 5704832 -1628688 5704264 1628120 5704736 1628544 5704832 1629056 5704520 -1629056 5704520 1628896 5704264 1628688 5704264 1628544 5704832 -1629128 5704416 1629120 5704328 1629016 5704288 1629056 5704520 -1629056 5704520 1628736 5704920 1628936 5704944 1629120 5704920 -1628736 5704920 1628936 5704944 1629056 5704520 1628544 5704832 -1629128 5704416 1629056 5704520 1629240 5704840 1629312 5704752 -1629128 5704416 1629056 5704520 1629312 5704752 1629376 5704616 -1629128 5704416 1629056 5704520 1629376 5704616 1629456 5704296 -1629056 5704520 1629120 5704920 1629240 5704840 1629312 5704752 -1629128 5704416 1629016 5704288 1629056 5704520 1629376 5704616 -1629056 5704520 1629240 5704840 1629312 5704752 1629376 5704616 -1628544 5704832 1628976 5704584 1629056 5704520 1628688 5704264 -1628544 5704832 1628976 5704584 1628688 5704264 1628120 5704736 -1629056 5704520 1628896 5704264 1628688 5704264 1628976 5704584 -1629056 5704520 1629016 5704288 1628896 5704264 1628976 5704584 -1628688 5704264 1628544 5704832 1628976 5704584 1628896 5704264 -1628544 5704832 1628736 5704920 1628976 5704584 1628688 5704264 -1628976 5704584 1628736 5704920 1629056 5704520 1628896 5704264 -1629056 5704520 1628976 5704584 1628736 5704920 1628936 5704944 -1628976 5704584 1628544 5704832 1628736 5704920 1628936 5704944 -1629056 5704520 1628976 5704584 1628936 5704944 1629120 5704920 -1629056 5704520 1628976 5704584 1629120 5704920 1629240 5704840 -1629056 5704520 1628976 5704584 1629240 5704840 1629312 5704752 -1628976 5704584 1628936 5704944 1629120 5704920 1629240 5704840 -1629056 5704520 1628896 5704264 1628976 5704584 1629240 5704840 -1628976 5704584 1628736 5704920 1628936 5704944 1629120 5704920 -1628544 5704832 1628800 5704648 1628688 5704264 1628120 5704736 -1628688 5704264 1628800 5704648 1628976 5704584 1628896 5704264 -1628688 5704264 1628544 5704832 1628800 5704648 1628896 5704264 -1628976 5704584 1629056 5704520 1628896 5704264 1628800 5704648 -1628800 5704648 1628544 5704832 1628976 5704584 1628896 5704264 -1628976 5704584 1628800 5704648 1628544 5704832 1628736 5704920 -1628800 5704648 1628688 5704264 1628544 5704832 1628736 5704920 -1628976 5704584 1628800 5704648 1628736 5704920 1628936 5704944 -1628976 5704584 1628896 5704264 1628800 5704648 1628936 5704944 -1628800 5704648 1628544 5704832 1628736 5704920 1628936 5704944 -1628976 5704584 1628800 5704648 1628936 5704944 1629120 5704920 -1628800 5704648 1628672 5704648 1628544 5704832 1628736 5704920 -1628800 5704648 1628688 5704264 1628672 5704648 1628736 5704920 -1628688 5704264 1628672 5704648 1628800 5704648 1628896 5704264 -1628544 5704832 1628672 5704648 1628688 5704264 1628120 5704736 -1628688 5704264 1627992 5704624 1628120 5704736 1628672 5704648 -1628672 5704648 1628120 5704736 1628544 5704832 1628736 5704920 -1628672 5704648 1628800 5704648 1628688 5704264 1628120 5704736 -1628800 5704648 1628672 5704648 1628736 5704920 1628936 5704944 -1628672 5704648 1628552 5704608 1628120 5704736 1628544 5704832 -1628552 5704608 1628688 5704264 1628120 5704736 1628544 5704832 -1628120 5704736 1628552 5704608 1628688 5704264 1627992 5704624 -1628688 5704264 1628392 5703960 1627992 5704624 1628552 5704608 -1628120 5704736 1628544 5704832 1628552 5704608 1627992 5704624 -1628552 5704608 1628672 5704648 1628688 5704264 1628392 5703960 -1628688 5704264 1628592 5703896 1628392 5703960 1628552 5704608 -1627992 5704624 1628120 5704736 1628552 5704608 1628392 5703960 -1628672 5704648 1628552 5704608 1628544 5704832 1628736 5704920 -1628672 5704648 1628688 5704264 1628552 5704608 1628544 5704832 -1628688 5704264 1628552 5704608 1628672 5704648 1628800 5704648 -1628120 5704736 1628552 5704608 1627992 5704624 1628024 5704664 -1628120 5704736 1628544 5704832 1628552 5704608 1628024 5704664 -1628552 5704608 1628392 5703960 1627992 5704624 1628024 5704664 -1628392 5703960 1628360 5703944 1627992 5704624 1628552 5704608 -1628392 5703960 1628328 5704512 1628552 5704608 1628688 5704264 -1628328 5704512 1627992 5704624 1628552 5704608 1628688 5704264 -1628552 5704608 1628672 5704648 1628688 5704264 1628328 5704512 -1628392 5703960 1628328 5704512 1628688 5704264 1628592 5703896 -1628552 5704608 1628328 5704512 1627992 5704624 1628024 5704664 -1628552 5704608 1628688 5704264 1628328 5704512 1628024 5704664 -1628552 5704608 1628328 5704512 1628024 5704664 1628120 5704736 -1628552 5704608 1628328 5704512 1628120 5704736 1628544 5704832 -1628552 5704608 1628688 5704264 1628328 5704512 1628544 5704832 -1628552 5704608 1628328 5704512 1628544 5704832 1628672 5704648 -1628328 5704512 1627992 5704624 1628024 5704664 1628120 5704736 -1628328 5704512 1628024 5704664 1628120 5704736 1628544 5704832 -1627992 5704624 1628328 5704512 1628392 5703960 1628360 5703944 -1627992 5704624 1628328 5704512 1628360 5703944 1627752 5704352 -1628360 5703944 1628064 5703824 1627752 5704352 1628328 5704512 -1628328 5704512 1628392 5703960 1628360 5703944 1627752 5704352 -1628328 5704512 1627752 5704352 1627992 5704624 1628024 5704664 -1628392 5703960 1628360 5703944 1628328 5704512 1628688 5704264 -1627752 5704352 1628240 5704440 1628360 5703944 1628064 5703824 -1628360 5703944 1628168 5703832 1628064 5703824 1628240 5704440 -1628064 5703824 1627752 5704352 1628240 5704440 1628168 5703832 -1627752 5704352 1628240 5704440 1628064 5703824 1627832 5703888 -1628328 5704512 1628240 5704440 1627752 5704352 1627992 5704624 -1628360 5703944 1628240 5704440 1628328 5704512 1628392 5703960 -1628328 5704512 1628240 5704440 1627992 5704624 1628024 5704664 -1628240 5704440 1627752 5704352 1627992 5704624 1628024 5704664 -1628328 5704512 1628240 5704440 1628024 5704664 1628120 5704736 -1628328 5704512 1628240 5704440 1628120 5704736 1628544 5704832 -1628240 5704440 1627992 5704624 1628024 5704664 1628120 5704736 -1628328 5704512 1628392 5703960 1628240 5704440 1628120 5704736 -1628328 5704512 1628688 5704264 1628392 5703960 1628240 5704440 -1628328 5704512 1628552 5704608 1628688 5704264 1628240 5704440 -1628688 5704264 1628592 5703896 1628392 5703960 1628240 5704440 -1628392 5703960 1628360 5703944 1628240 5704440 1628688 5704264 -1628328 5704512 1628688 5704264 1628240 5704440 1628120 5704736 -1627752 5704352 1627992 5704624 1628240 5704440 1628064 5703824 -1628240 5704440 1628392 5703960 1628360 5703944 1628168 5703832 -1628064 5703824 1628224 5704400 1628240 5704440 1628168 5703832 -1628240 5704440 1628360 5703944 1628168 5703832 1628224 5704400 -1628168 5703832 1628064 5703824 1628224 5704400 1628360 5703944 -1627752 5704352 1628224 5704400 1628064 5703824 1627832 5703888 -1627752 5704352 1628224 5704400 1627832 5703888 1627624 5704144 -1627752 5704352 1628240 5704440 1628224 5704400 1627832 5703888 -1628064 5703824 1627832 5703888 1628224 5704400 1628168 5703832 -1628240 5704440 1628224 5704400 1627752 5704352 1627992 5704624 -1628240 5704440 1628224 5704400 1627992 5704624 1628024 5704664 -1628224 5704400 1627832 5703888 1627752 5704352 1627992 5704624 -1628224 5704400 1627992 5704624 1628240 5704440 1628360 5703944 -1628240 5704440 1628392 5703960 1628360 5703944 1628224 5704400 -1628360 5703944 1628168 5703832 1628224 5704400 1628392 5703960 -1628240 5704440 1628688 5704264 1628392 5703960 1628224 5704400 -1628688 5704264 1628592 5703896 1628392 5703960 1628224 5704400 -1628240 5704440 1628328 5704512 1628688 5704264 1628224 5704400 -1628328 5704512 1628552 5704608 1628688 5704264 1628224 5704400 -1628688 5704264 1628392 5703960 1628224 5704400 1628328 5704512 -1628240 5704440 1628328 5704512 1628224 5704400 1627992 5704624 -1628392 5703960 1628360 5703944 1628224 5704400 1628688 5704264 -1628168 5703832 1628208 5704296 1628224 5704400 1628360 5703944 -1628224 5704400 1628392 5703960 1628360 5703944 1628208 5704296 -1628360 5703944 1628168 5703832 1628208 5704296 1628392 5703960 -1628208 5704296 1628064 5703824 1628224 5704400 1628392 5703960 -1628224 5704400 1628208 5704296 1628064 5703824 1627832 5703888 -1628224 5704400 1628208 5704296 1627832 5703888 1627752 5704352 -1627832 5703888 1627624 5704144 1627752 5704352 1628208 5704296 -1628224 5704400 1628208 5704296 1627752 5704352 1627992 5704624 -1628224 5704400 1628392 5703960 1628208 5704296 1627752 5704352 -1628208 5704296 1628064 5703824 1627832 5703888 1627752 5704352 -1628208 5704296 1628168 5703832 1628064 5703824 1627832 5703888 -1628168 5703832 1628064 5703824 1628208 5704296 1628360 5703944 -1628224 5704400 1628688 5704264 1628392 5703960 1628208 5704296 -1628392 5703960 1628360 5703944 1628208 5704296 1628688 5704264 -1628688 5704264 1628592 5703896 1628392 5703960 1628208 5704296 -1628224 5704400 1628328 5704512 1628688 5704264 1628208 5704296 -1628328 5704512 1628552 5704608 1628688 5704264 1628208 5704296 -1628224 5704400 1628328 5704512 1628208 5704296 1627752 5704352 -1628224 5704400 1628240 5704440 1628328 5704512 1628208 5704296 -1628688 5704264 1628392 5703960 1628208 5704296 1628328 5704512 -1628208 5704296 1628288 5704216 1628392 5703960 1628360 5703944 -1628208 5704296 1628288 5704216 1628360 5703944 1628168 5703832 -1628288 5704216 1628392 5703960 1628360 5703944 1628168 5703832 -1628392 5703960 1628288 5704216 1628688 5704264 1628592 5703896 -1628208 5704296 1628688 5704264 1628288 5704216 1628168 5703832 -1628208 5704296 1628288 5704216 1628168 5703832 1628064 5703824 -1628288 5704216 1628360 5703944 1628168 5703832 1628064 5703824 -1628208 5704296 1628288 5704216 1628064 5703824 1627832 5703888 -1628208 5704296 1628688 5704264 1628288 5704216 1628064 5703824 -1628288 5704216 1628688 5704264 1628392 5703960 1628360 5703944 -1628688 5704264 1628288 5704216 1628208 5704296 1628328 5704512 -1628688 5704264 1628288 5704216 1628328 5704512 1628552 5704608 -1628208 5704296 1628224 5704400 1628328 5704512 1628288 5704216 -1628688 5704264 1628392 5703960 1628288 5704216 1628328 5704512 -1628288 5704216 1628064 5703824 1628208 5704296 1628224 5704400 -1628224 5704400 1628240 5704440 1628328 5704512 1628288 5704216 -1628328 5704512 1628688 5704264 1628288 5704216 1628224 5704400 -1628392 5703960 1628344 5704208 1628688 5704264 1628592 5703896 -1628688 5704264 1628344 5704208 1628288 5704216 1628328 5704512 -1628688 5704264 1628344 5704208 1628328 5704512 1628552 5704608 -1628688 5704264 1628392 5703960 1628344 5704208 1628328 5704512 -1628344 5704208 1628392 5703960 1628288 5704216 1628328 5704512 -1628288 5704216 1628344 5704208 1628392 5703960 1628360 5703944 -1628288 5704216 1628344 5704208 1628360 5703944 1628168 5703832 -1628288 5704216 1628328 5704512 1628344 5704208 1628360 5703944 -1628344 5704208 1628688 5704264 1628392 5703960 1628360 5703944 -1628288 5704216 1628224 5704400 1628328 5704512 1628344 5704208 -1628288 5704216 1628208 5704296 1628224 5704400 1628344 5704208 -1628288 5704216 1628224 5704400 1628344 5704208 1628360 5703944 -1628328 5704512 1628688 5704264 1628344 5704208 1628224 5704400 -1628224 5704400 1628240 5704440 1628328 5704512 1628344 5704208 -1628328 5704512 1628688 5704264 1628344 5704208 1628240 5704440 -1628224 5704400 1628240 5704440 1628344 5704208 1628288 5704216 -1620552 5714440 1627208 5706816 1627640 5705584 1627576 5705568 -1620552 5714440 1627208 5706816 1627576 5705568 1620512 5714368 -1627576 5705568 1620160 5713848 1620512 5714368 1627208 5706816 -1620512 5714368 1620552 5714440 1627208 5706816 1620160 5713848 -1627208 5706816 1627640 5705584 1627576 5705568 1620160 5713848 -1627576 5705568 1620104 5713768 1620160 5713848 1627208 5706816 -1620160 5713848 1620512 5714368 1627208 5706816 1620104 5713768 -1627576 5705568 1620104 5713768 1627208 5706816 1627640 5705584 -1620552 5714440 1628312 5705744 1627208 5706816 1620512 5714368 -1627576 5705568 1627536 5705536 1620104 5713768 1627208 5706816 -1627536 5705536 1620040 5713712 1620104 5713768 1627208 5706816 -1627576 5705568 1627536 5705536 1627208 5706816 1627640 5705584 -1620104 5713768 1620160 5713848 1627208 5706816 1620040 5713712 -1627536 5705536 1620040 5713712 1627208 5706816 1627576 5705568 -1620040 5713712 1620072 5713752 1620104 5713768 1627208 5706816 -1627640 5705584 1627208 5706816 1628312 5705744 1627776 5705560 -1627208 5706816 1628312 5705744 1627640 5705584 1627576 5705568 -1628312 5705744 1627208 5706816 1620552 5714440 1629752 5706192 -1627208 5706816 1620512 5714368 1620552 5714440 1629752 5706192 -1628312 5705744 1627208 5706816 1629752 5706192 1628432 5705728 -1620552 5714440 1627312 5719640 1629752 5706192 1627208 5706816 -1620552 5714440 1627312 5719640 1627208 5706816 1620512 5714368 -1620552 5714440 1620560 5714512 1627312 5719640 1627208 5706816 -1627312 5719640 1627336 5719640 1629752 5706192 1627208 5706816 -1627312 5719640 1627336 5719640 1627208 5706816 1620552 5714440 -1627336 5719640 1629808 5706208 1629752 5706192 1627208 5706816 -1627336 5719640 1627384 5719672 1629808 5706208 1627208 5706816 -1627336 5719640 1629808 5706208 1627208 5706816 1627312 5719640 -1627208 5706816 1629808 5706208 1629752 5706192 1628432 5705728 -1620160 5713848 1620272 5714120 1620512 5714368 1627208 5706816 -1629752 5706192 1629656 5706024 1628432 5705728 1627208 5706816 -1628312 5705744 1627640 5705584 1627208 5706816 1628432 5705728 -1627536 5705536 1618184 5707576 1620040 5713712 1627208 5706816 -1620040 5713712 1620104 5713768 1627208 5706816 1618184 5707576 -1618184 5707576 1618264 5711808 1620040 5713712 1627208 5706816 -1627536 5705536 1618184 5707576 1627208 5706816 1627576 5705568 -1627536 5705536 1621944 5703896 1618184 5707576 1627208 5706816 -1621944 5703896 1621912 5703896 1618184 5707576 1627208 5706816 -1627536 5705536 1621944 5703896 1627208 5706816 1627576 5705568 -1627536 5705536 1627256 5705232 1621944 5703896 1627208 5706816 -1627256 5705232 1627208 5705152 1621944 5703896 1627208 5706816 -1627536 5705536 1627456 5705408 1627256 5705232 1627208 5706816 -1627536 5705536 1627256 5705232 1627208 5706816 1627576 5705568 -1627208 5705152 1621968 5703872 1621944 5703896 1627208 5706816 -1627208 5705152 1622032 5703808 1621968 5703872 1627208 5706816 -1627208 5705152 1622032 5703808 1627208 5706816 1627256 5705232 -1621968 5703872 1621944 5703896 1627208 5706816 1622032 5703808 -1627256 5705232 1627208 5705152 1627208 5706816 1627536 5705536 -1627208 5705152 1623616 5702904 1622032 5703808 1627208 5706816 -1618184 5707576 1620040 5713712 1627208 5706816 1621944 5703896 -1621944 5703896 1618184 5707576 1627208 5706816 1621968 5703872 -1627640 5705584 1627248 5706768 1628312 5705744 1627776 5705560 -1627208 5706816 1627248 5706768 1627640 5705584 1627576 5705568 -1627208 5706816 1627248 5706768 1627576 5705568 1627536 5705536 -1627208 5706816 1627248 5706768 1627536 5705536 1627256 5705232 -1627248 5706768 1627576 5705568 1627536 5705536 1627256 5705232 -1627536 5705536 1627456 5705408 1627256 5705232 1627248 5706768 -1627248 5706768 1627640 5705584 1627576 5705568 1627536 5705536 -1627208 5706816 1628312 5705744 1627248 5706768 1627256 5705232 -1627248 5706768 1628312 5705744 1627640 5705584 1627576 5705568 -1628312 5705744 1627248 5706768 1627208 5706816 1628432 5705728 -1627208 5706816 1629752 5706192 1628432 5705728 1627248 5706768 -1627248 5706768 1627256 5705232 1627208 5706816 1629752 5706192 -1628432 5705728 1628312 5705744 1627248 5706768 1629752 5706192 -1628312 5705744 1627640 5705584 1627248 5706768 1628432 5705728 -1627208 5706816 1629808 5706208 1629752 5706192 1627248 5706768 -1629752 5706192 1629656 5706024 1628432 5705728 1627248 5706768 -1627208 5706816 1627248 5706768 1627256 5705232 1627208 5705152 -1627640 5705584 1627280 5706736 1628312 5705744 1627776 5705560 -1627248 5706768 1627280 5706736 1627640 5705584 1627576 5705568 -1627248 5706768 1627280 5706736 1627576 5705568 1627536 5705536 -1627248 5706768 1627280 5706736 1627536 5705536 1627256 5705232 -1627536 5705536 1627456 5705408 1627256 5705232 1627280 5706736 -1627248 5706768 1627280 5706736 1627256 5705232 1627208 5706816 -1627280 5706736 1627576 5705568 1627536 5705536 1627256 5705232 -1627280 5706736 1627640 5705584 1627576 5705568 1627536 5705536 -1628312 5705744 1627280 5706736 1627248 5706768 1628432 5705728 -1627248 5706768 1629752 5706192 1628432 5705728 1627280 5706736 -1627248 5706768 1627208 5706816 1629752 5706192 1627280 5706736 -1629752 5706192 1628432 5705728 1627280 5706736 1627208 5706816 -1628432 5705728 1628312 5705744 1627280 5706736 1629752 5706192 -1628312 5705744 1627640 5705584 1627280 5706736 1628432 5705728 -1627248 5706768 1627208 5706816 1627280 5706736 1627256 5705232 -1627280 5706736 1628312 5705744 1627640 5705584 1627576 5705568 -1627208 5706816 1629808 5706208 1629752 5706192 1627280 5706736 -1629752 5706192 1629656 5706024 1628432 5705728 1627280 5706736 -1629752 5706192 1627312 5706720 1627280 5706736 1627208 5706816 -1627280 5706736 1627248 5706768 1627208 5706816 1627312 5706720 -1627208 5706816 1629752 5706192 1627312 5706720 1627248 5706768 -1627280 5706736 1627312 5706720 1628432 5705728 1628312 5705744 -1627312 5706720 1628312 5705744 1627280 5706736 1627248 5706768 -1627280 5706736 1627312 5706720 1628312 5705744 1627640 5705584 -1628312 5705744 1627776 5705560 1627640 5705584 1627312 5706720 -1627312 5706720 1628432 5705728 1628312 5705744 1627776 5705560 -1627280 5706736 1627248 5706768 1627312 5706720 1627640 5705584 -1627640 5705584 1627280 5706736 1627312 5706720 1627776 5705560 -1627312 5706720 1629752 5706192 1628432 5705728 1628312 5705744 -1627280 5706736 1627312 5706720 1627640 5705584 1627576 5705568 -1627280 5706736 1627312 5706720 1627576 5705568 1627536 5705536 -1627280 5706736 1627312 5706720 1627536 5705536 1627256 5705232 -1627280 5706736 1627248 5706768 1627312 5706720 1627536 5705536 -1627312 5706720 1627776 5705560 1627640 5705584 1627576 5705568 -1627312 5706720 1627640 5705584 1627576 5705568 1627536 5705536 -1629752 5706192 1627312 5706720 1627208 5706816 1629808 5706208 -1628432 5705728 1627312 5706720 1629752 5706192 1629656 5706024 -1629752 5706192 1628432 5705728 1627312 5706720 1627208 5706816 -1627208 5706816 1627336 5706720 1627312 5706720 1627248 5706768 -1627312 5706720 1627280 5706736 1627248 5706768 1627336 5706720 -1627248 5706768 1627208 5706816 1627336 5706720 1627280 5706736 -1629752 5706192 1627336 5706720 1627208 5706816 1629808 5706208 -1627208 5706816 1627336 5719640 1629808 5706208 1627336 5706720 -1627208 5706816 1629808 5706208 1627336 5706720 1627248 5706768 -1627336 5706720 1629752 5706192 1627312 5706720 1627280 5706736 -1627312 5706720 1627336 5706720 1629752 5706192 1628432 5705728 -1627312 5706720 1627336 5706720 1628432 5705728 1628312 5705744 -1627312 5706720 1627336 5706720 1628312 5705744 1627776 5705560 -1627312 5706720 1627336 5706720 1627776 5705560 1627640 5705584 -1627336 5706720 1628312 5705744 1627776 5705560 1627640 5705584 -1627312 5706720 1627336 5706720 1627640 5705584 1627576 5705568 -1627336 5706720 1627776 5705560 1627640 5705584 1627576 5705568 -1627336 5706720 1628432 5705728 1628312 5705744 1627776 5705560 -1627312 5706720 1627336 5706720 1627576 5705568 1627536 5705536 -1629752 5706192 1629656 5706024 1628432 5705728 1627336 5706720 -1627312 5706720 1627280 5706736 1627336 5706720 1627576 5705568 -1627336 5706720 1629752 5706192 1628432 5705728 1628312 5705744 -1629752 5706192 1628432 5705728 1627336 5706720 1629808 5706208 -1629808 5706208 1627424 5706728 1627208 5706816 1627336 5719640 -1629808 5706208 1627424 5706728 1627336 5719640 1627384 5719672 -1627208 5706816 1627312 5719640 1627336 5719640 1627424 5706728 -1627336 5706720 1627424 5706728 1629808 5706208 1629752 5706192 -1627208 5706816 1627424 5706728 1627336 5706720 1627248 5706768 -1627336 5706720 1627280 5706736 1627248 5706768 1627424 5706728 -1627336 5706720 1627248 5706768 1627424 5706728 1629752 5706192 -1629808 5706208 1629752 5706192 1627424 5706728 1627336 5719640 -1627424 5706728 1627248 5706768 1627208 5706816 1627336 5719640 -1627336 5706720 1627424 5706728 1629752 5706192 1628432 5705728 -1627424 5706728 1629808 5706208 1629752 5706192 1628432 5705728 -1627336 5706720 1627248 5706768 1627424 5706728 1628432 5705728 -1629752 5706192 1629656 5706024 1628432 5705728 1627424 5706728 -1627336 5706720 1627424 5706728 1628432 5705728 1628312 5705744 -1627336 5706720 1627424 5706728 1628312 5705744 1627776 5705560 -1627336 5706720 1627424 5706728 1627776 5705560 1627640 5705584 -1627336 5706720 1627424 5706728 1627640 5705584 1627576 5705568 -1627424 5706728 1627776 5705560 1627640 5705584 1627576 5705568 -1627336 5706720 1627424 5706728 1627576 5705568 1627312 5706720 -1627424 5706728 1628312 5705744 1627776 5705560 1627640 5705584 -1627336 5706720 1627248 5706768 1627424 5706728 1627576 5705568 -1627424 5706728 1628432 5705728 1628312 5705744 1627776 5705560 -1627424 5706728 1629752 5706192 1628432 5705728 1628312 5705744 -1629808 5706208 1627456 5706736 1627336 5719640 1627384 5719672 -1627336 5719640 1627456 5706736 1627424 5706728 1627208 5706816 -1627336 5719640 1627456 5706736 1627208 5706816 1627312 5719640 -1627424 5706728 1627456 5706736 1629808 5706208 1629752 5706192 -1627424 5706728 1627456 5706736 1629752 5706192 1628432 5705728 -1627456 5706736 1629808 5706208 1629752 5706192 1628432 5705728 -1629752 5706192 1629656 5706024 1628432 5705728 1627456 5706736 -1627336 5719640 1629808 5706208 1627456 5706736 1627208 5706816 -1627424 5706728 1627248 5706768 1627208 5706816 1627456 5706736 -1627456 5706736 1628432 5705728 1627424 5706728 1627208 5706816 -1627456 5706736 1627336 5719640 1629808 5706208 1629752 5706192 -1627424 5706728 1627456 5706736 1628432 5705728 1628312 5705744 -1627456 5706736 1629752 5706192 1628432 5705728 1628312 5705744 -1627424 5706728 1627208 5706816 1627456 5706736 1628312 5705744 -1627424 5706728 1627456 5706736 1628312 5705744 1627776 5705560 -1627424 5706728 1627456 5706736 1627776 5705560 1627640 5705584 -1627424 5706728 1627456 5706736 1627640 5705584 1627576 5705568 -1627424 5706728 1627208 5706816 1627456 5706736 1627640 5705584 -1627456 5706736 1628312 5705744 1627776 5705560 1627640 5705584 -1627456 5706736 1628432 5705728 1628312 5705744 1627776 5705560 -1629808 5706208 1627456 5706792 1627336 5719640 1627384 5719672 -1627336 5719640 1627456 5706792 1627456 5706736 1627208 5706816 -1627456 5706736 1627424 5706728 1627208 5706816 1627456 5706792 -1627336 5719640 1627456 5706792 1627208 5706816 1627312 5719640 -1627208 5706816 1627336 5719640 1627456 5706792 1627424 5706728 -1627456 5706792 1629808 5706208 1627456 5706736 1627424 5706728 -1627424 5706728 1627248 5706768 1627208 5706816 1627456 5706792 -1627424 5706728 1627248 5706768 1627456 5706792 1627456 5706736 -1627424 5706728 1627336 5706720 1627248 5706768 1627456 5706792 -1627336 5706720 1627280 5706736 1627248 5706768 1627456 5706792 -1627424 5706728 1627336 5706720 1627456 5706792 1627456 5706736 -1627208 5706816 1627336 5719640 1627456 5706792 1627248 5706768 -1627248 5706768 1627208 5706816 1627456 5706792 1627336 5706720 -1627456 5706736 1627456 5706792 1629808 5706208 1629752 5706192 -1627456 5706736 1627456 5706792 1629752 5706192 1628432 5705728 -1627456 5706736 1627456 5706792 1628432 5705728 1628312 5705744 -1627456 5706792 1629752 5706192 1628432 5705728 1628312 5705744 -1629752 5706192 1629656 5706024 1628432 5705728 1627456 5706792 -1627456 5706736 1627424 5706728 1627456 5706792 1628312 5705744 -1627456 5706792 1627336 5719640 1629808 5706208 1629752 5706192 -1627456 5706792 1629808 5706208 1629752 5706192 1628432 5705728 -1627336 5719640 1629808 5706208 1627456 5706792 1627208 5706816 -1627456 5706736 1627456 5706792 1628312 5705744 1627776 5705560 -1627336 5719640 1627424 5706864 1627208 5706816 1627312 5719640 -1627208 5706816 1620552 5714440 1627312 5719640 1627424 5706864 -1627208 5706816 1620512 5714368 1620552 5714440 1627424 5706864 -1620552 5714440 1620560 5714512 1627312 5719640 1627424 5706864 -1627312 5719640 1627336 5719640 1627424 5706864 1620552 5714440 -1627208 5706816 1627424 5706864 1627456 5706792 1627248 5706768 -1627456 5706792 1627336 5706720 1627248 5706768 1627424 5706864 -1627336 5706720 1627280 5706736 1627248 5706768 1627424 5706864 -1627336 5706720 1627312 5706720 1627280 5706736 1627424 5706864 -1627456 5706792 1627424 5706728 1627336 5706720 1627424 5706864 -1627248 5706768 1627208 5706816 1627424 5706864 1627280 5706736 -1627336 5706720 1627280 5706736 1627424 5706864 1627456 5706792 -1627456 5706792 1627424 5706864 1627336 5719640 1629808 5706208 -1627336 5719640 1627384 5719672 1629808 5706208 1627424 5706864 -1627456 5706792 1627424 5706864 1629808 5706208 1629752 5706192 -1627456 5706792 1627424 5706864 1629752 5706192 1628432 5705728 -1627424 5706864 1627336 5719640 1629808 5706208 1629752 5706192 -1627424 5706864 1629752 5706192 1627456 5706792 1627336 5706720 -1627336 5719640 1629808 5706208 1627424 5706864 1627312 5719640 -1627424 5706864 1627248 5706768 1627208 5706816 1620552 5714440 -1627312 5719640 1627368 5706952 1620552 5714440 1620560 5714512 -1620552 5714440 1627368 5706952 1627424 5706864 1627208 5706816 -1620552 5714440 1627368 5706952 1627208 5706816 1620512 5714368 -1627208 5706816 1620160 5713848 1620512 5714368 1627368 5706952 -1627208 5706816 1620104 5713768 1620160 5713848 1627368 5706952 -1620160 5713848 1620512 5714368 1627368 5706952 1620104 5713768 -1627208 5706816 1620040 5713712 1620104 5713768 1627368 5706952 -1620512 5714368 1620552 5714440 1627368 5706952 1620160 5713848 -1620552 5714440 1627312 5719640 1627368 5706952 1620512 5714368 -1627368 5706952 1627424 5706864 1627208 5706816 1620104 5713768 -1627424 5706864 1627368 5706952 1627312 5719640 1627336 5719640 -1627368 5706952 1620552 5714440 1627312 5719640 1627336 5719640 -1620160 5713848 1620272 5714120 1620512 5714368 1627368 5706952 -1627424 5706864 1627368 5706952 1627336 5719640 1629808 5706208 -1627336 5719640 1627384 5719672 1629808 5706208 1627368 5706952 -1627368 5706952 1627312 5719640 1627336 5719640 1629808 5706208 -1627424 5706864 1627368 5706952 1629808 5706208 1629752 5706192 -1627424 5706864 1627368 5706952 1629752 5706192 1627456 5706792 -1627368 5706952 1627336 5719640 1629808 5706208 1629752 5706192 -1627368 5706952 1629752 5706192 1627424 5706864 1627208 5706816 -1627424 5706864 1627248 5706768 1627208 5706816 1627368 5706952 -1627208 5706816 1620104 5713768 1627368 5706952 1627248 5706768 -1627424 5706864 1627280 5706736 1627248 5706768 1627368 5706952 -1627424 5706864 1627248 5706768 1627368 5706952 1629752 5706192 -1627368 5706952 1627328 5706984 1620104 5713768 1620160 5713848 -1627368 5706952 1627328 5706984 1620160 5713848 1620512 5714368 -1627328 5706984 1620104 5713768 1620160 5713848 1620512 5714368 -1620104 5713768 1627328 5706984 1627208 5706816 1620040 5713712 -1627208 5706816 1618184 5707576 1620040 5713712 1627328 5706984 -1627368 5706952 1627328 5706984 1620512 5714368 1620552 5714440 -1627328 5706984 1620160 5713848 1620512 5714368 1620552 5714440 -1620104 5713768 1627328 5706984 1620040 5713712 1620072 5713752 -1627368 5706952 1627208 5706816 1627328 5706984 1620552 5714440 -1627368 5706952 1627328 5706984 1620552 5714440 1627312 5719640 -1627328 5706984 1620512 5714368 1620552 5714440 1627312 5719640 -1620552 5714440 1620560 5714512 1627312 5719640 1627328 5706984 -1627368 5706952 1627328 5706984 1627312 5719640 1627336 5719640 -1627368 5706952 1627208 5706816 1627328 5706984 1627336 5719640 -1627328 5706984 1620552 5714440 1627312 5719640 1627336 5719640 -1627328 5706984 1620040 5713712 1620104 5713768 1620160 5713848 -1627208 5706816 1627328 5706984 1627368 5706952 1627248 5706768 -1627368 5706952 1627328 5706984 1627336 5719640 1629808 5706208 -1627336 5719640 1627384 5719672 1629808 5706208 1627328 5706984 -1627328 5706984 1627312 5719640 1627336 5719640 1629808 5706208 -1627368 5706952 1627208 5706816 1627328 5706984 1629808 5706208 -1620160 5713848 1620272 5714120 1620512 5714368 1627328 5706984 -1627328 5706984 1627368 5706952 1627208 5706816 1620040 5713712 -1627368 5706952 1627328 5706984 1629808 5706208 1629752 5706192 -1620040 5713712 1627296 5706984 1627208 5706816 1618184 5707576 -1627328 5706984 1627296 5706984 1620040 5713712 1620104 5713768 -1620040 5713712 1627296 5706984 1618184 5707576 1618264 5711808 -1620040 5713712 1620072 5713752 1620104 5713768 1627296 5706984 -1627328 5706984 1627296 5706984 1620104 5713768 1620160 5713848 -1627328 5706984 1627296 5706984 1620160 5713848 1620512 5714368 -1627328 5706984 1627296 5706984 1620512 5714368 1620552 5714440 -1627296 5706984 1620160 5713848 1620512 5714368 1620552 5714440 -1627296 5706984 1620040 5713712 1620104 5713768 1620160 5713848 -1627328 5706984 1627296 5706984 1620552 5714440 1627312 5719640 -1627296 5706984 1620512 5714368 1620552 5714440 1627312 5719640 -1620552 5714440 1620560 5714512 1627312 5719640 1627296 5706984 -1627328 5706984 1627296 5706984 1627312 5719640 1627336 5719640 -1627296 5706984 1620104 5713768 1620160 5713848 1620512 5714368 -1627328 5706984 1627208 5706816 1627296 5706984 1627312 5719640 -1620160 5713848 1620272 5714120 1620512 5714368 1627296 5706984 -1627208 5706816 1627296 5706984 1627328 5706984 1627368 5706952 -1627296 5706984 1627312 5719640 1627328 5706984 1627368 5706952 -1627208 5706816 1627296 5706984 1627368 5706952 1627248 5706768 -1620040 5713712 1620104 5713768 1627296 5706984 1618184 5707576 -1627296 5706984 1627368 5706952 1627208 5706816 1618184 5707576 -1627208 5706816 1621944 5703896 1618184 5707576 1627296 5706984 -1627296 5706984 1627272 5706968 1618184 5707576 1620040 5713712 -1618184 5707576 1618264 5711808 1620040 5713712 1627272 5706968 -1627296 5706984 1627272 5706968 1620040 5713712 1620104 5713768 -1627272 5706968 1618184 5707576 1620040 5713712 1620104 5713768 -1627296 5706984 1627272 5706968 1620104 5713768 1620160 5713848 -1620040 5713712 1620072 5713752 1620104 5713768 1627272 5706968 -1627296 5706984 1627272 5706968 1620160 5713848 1620512 5714368 -1627272 5706968 1620040 5713712 1620104 5713768 1620160 5713848 -1627296 5706984 1627208 5706816 1627272 5706968 1620160 5713848 -1627208 5706816 1627272 5706968 1627296 5706984 1627368 5706952 -1627208 5706816 1618184 5707576 1627272 5706968 1627368 5706952 -1627208 5706816 1627272 5706968 1627368 5706952 1627248 5706768 -1627296 5706984 1627328 5706984 1627368 5706952 1627272 5706968 -1627272 5706968 1620160 5713848 1627296 5706984 1627328 5706984 -1627368 5706952 1627208 5706816 1627272 5706968 1627328 5706984 -1627272 5706968 1627208 5706816 1618184 5707576 1620040 5713712 -1618184 5707576 1627272 5706968 1627208 5706816 1621944 5703896 -1627208 5706816 1627248 5706936 1627272 5706968 1627368 5706952 -1627248 5706936 1618184 5707576 1627272 5706968 1627368 5706952 -1627208 5706816 1618184 5707576 1627248 5706936 1627368 5706952 -1627208 5706816 1627248 5706936 1627368 5706952 1627248 5706768 -1627248 5706936 1627272 5706968 1627368 5706952 1627248 5706768 -1627208 5706816 1618184 5707576 1627248 5706936 1627248 5706768 -1627272 5706968 1627328 5706984 1627368 5706952 1627248 5706936 -1627272 5706968 1627248 5706936 1618184 5707576 1620040 5713712 -1627272 5706968 1627248 5706936 1620040 5713712 1620104 5713768 -1618184 5707576 1618264 5711808 1620040 5713712 1627248 5706936 -1627272 5706968 1627368 5706952 1627248 5706936 1620040 5713712 -1627248 5706936 1627208 5706816 1618184 5707576 1620040 5713712 -1627368 5706952 1627424 5706864 1627248 5706768 1627248 5706936 -1627368 5706952 1627424 5706864 1627248 5706936 1627272 5706968 -1627248 5706768 1627208 5706816 1627248 5706936 1627424 5706864 -1627424 5706864 1627280 5706736 1627248 5706768 1627248 5706936 -1618184 5707576 1627248 5706936 1627208 5706816 1621944 5703896 -1618184 5707576 1627248 5706936 1621944 5703896 1621912 5703896 -1618184 5707576 1620040 5713712 1627248 5706936 1621944 5703896 -1627248 5706936 1627248 5706768 1627208 5706816 1621944 5703896 -1627208 5706816 1621968 5703872 1621944 5703896 1627248 5706936 -1627208 5706816 1627208 5706856 1627248 5706936 1627248 5706768 -1627208 5706816 1621944 5703896 1627208 5706856 1627248 5706768 -1627208 5706856 1621944 5703896 1627248 5706936 1627248 5706768 -1627248 5706936 1627424 5706864 1627248 5706768 1627208 5706856 -1627248 5706936 1627208 5706856 1621944 5703896 1618184 5707576 -1621944 5703896 1621912 5703896 1618184 5707576 1627208 5706856 -1627248 5706936 1627208 5706856 1618184 5707576 1620040 5713712 -1627248 5706936 1627248 5706768 1627208 5706856 1618184 5707576 -1627208 5706856 1627208 5706816 1621944 5703896 1618184 5707576 -1621944 5703896 1627208 5706856 1627208 5706816 1621968 5703872 -1626864 5719976 1620280 5716936 1619392 5717504 1620992 5722672 -1626864 5719976 1620520 5714728 1620280 5716936 1620992 5722672 -1620280 5716936 1620520 5714728 1619392 5717504 1620992 5722672 -1619392 5717504 1620280 5716936 1620520 5714728 1619392 5717424 -1619392 5717504 1620992 5722672 1620280 5716936 1619392 5717424 -1626864 5719976 1620280 5716936 1620992 5722672 1621040 5722712 -1619392 5717504 1620872 5722632 1620992 5722672 1620280 5716936 -1619392 5717504 1620872 5722632 1620280 5716936 1619392 5717424 -1620992 5722672 1626864 5719976 1620280 5716936 1620872 5722632 -1619392 5717504 1620792 5722624 1620872 5722632 1620280 5716936 -1620520 5714728 1620280 5716936 1626864 5719976 1626912 5719928 -1620280 5716936 1620992 5722672 1626864 5719976 1626912 5719928 -1620520 5714728 1620280 5716936 1626912 5719928 1627280 5719664 -1620520 5714728 1620456 5714784 1619392 5717424 1620280 5716936 -1619392 5717424 1619392 5717504 1620280 5716936 1620456 5714784 -1620456 5714784 1619360 5717312 1619392 5717424 1620280 5716936 -1619392 5717424 1619392 5717504 1620280 5716936 1619360 5717312 -1620456 5714784 1619328 5717256 1619360 5717312 1620280 5716936 -1620456 5714784 1620424 5714784 1619328 5717256 1620280 5716936 -1620424 5714784 1619296 5717232 1619328 5717256 1620280 5716936 -1620424 5714784 1619296 5717232 1620280 5716936 1620456 5714784 -1619328 5717256 1619360 5717312 1620280 5716936 1619296 5717232 -1619360 5717312 1619392 5717424 1620280 5716936 1619328 5717256 -1620456 5714784 1620424 5714784 1620280 5716936 1620520 5714728 -1620424 5714784 1620384 5714776 1619296 5717232 1620280 5716936 -1620424 5714784 1620384 5714776 1620280 5716936 1620456 5714784 -1619296 5717232 1619328 5717256 1620280 5716936 1620384 5714776 -1620384 5714776 1620352 5714744 1619296 5717232 1620280 5716936 -1620280 5716936 1626912 5719928 1620520 5714728 1620456 5714784 -1620520 5714728 1620320 5716856 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620320 5716856 -1620520 5714728 1620280 5716936 1620320 5716856 1627280 5719664 -1620320 5716856 1620280 5716936 1626912 5719928 1627280 5719664 -1620520 5714728 1620320 5716856 1627280 5719664 1627312 5719640 -1626912 5719928 1620320 5716856 1620280 5716936 1626864 5719976 -1620280 5716936 1620992 5722672 1626864 5719976 1620320 5716856 -1626912 5719928 1627280 5719664 1620320 5716856 1626864 5719976 -1620320 5716856 1620520 5714728 1620280 5716936 1626864 5719976 -1620280 5716936 1620320 5716856 1620520 5714728 1620456 5714784 -1620320 5716856 1627280 5719664 1620520 5714728 1620456 5714784 -1620280 5716936 1620320 5716856 1620456 5714784 1620424 5714784 -1620280 5716936 1620320 5716856 1620424 5714784 1620384 5714776 -1620320 5716856 1620456 5714784 1620424 5714784 1620384 5714776 -1620280 5716936 1620320 5716856 1620384 5714776 1619296 5717232 -1620320 5716856 1620424 5714784 1620384 5714776 1619296 5717232 -1620280 5716936 1620320 5716856 1619296 5717232 1619328 5717256 -1620384 5714776 1620352 5714744 1619296 5717232 1620320 5716856 -1620280 5716936 1626864 5719976 1620320 5716856 1619296 5717232 -1620320 5716856 1620520 5714728 1620456 5714784 1620424 5714784 -1620320 5716856 1620368 5716792 1620520 5714728 1620456 5714784 -1620320 5716856 1627280 5719664 1620368 5716792 1620456 5714784 -1620368 5716792 1627280 5719664 1620520 5714728 1620456 5714784 -1620520 5714728 1620368 5716792 1627280 5719664 1627312 5719640 -1620368 5716792 1620320 5716856 1627280 5719664 1627312 5719640 -1620520 5714728 1620368 5716792 1627312 5719640 1620560 5714512 -1620520 5714728 1620456 5714784 1620368 5716792 1627312 5719640 -1627280 5719664 1620368 5716792 1620320 5716856 1626912 5719928 -1627280 5719664 1620368 5716792 1626912 5719928 1627232 5719704 -1627280 5719664 1627312 5719640 1620368 5716792 1626912 5719928 -1620320 5716856 1626864 5719976 1626912 5719928 1620368 5716792 -1620368 5716792 1620456 5714784 1620320 5716856 1626864 5719976 -1626912 5719928 1627280 5719664 1620368 5716792 1626864 5719976 -1620320 5716856 1620280 5716936 1626864 5719976 1620368 5716792 -1620280 5716936 1620992 5722672 1626864 5719976 1620368 5716792 -1626864 5719976 1626912 5719928 1620368 5716792 1620280 5716936 -1620320 5716856 1620280 5716936 1620368 5716792 1620456 5714784 -1620320 5716856 1620368 5716792 1620456 5714784 1620424 5714784 -1620368 5716792 1620520 5714728 1620456 5714784 1620424 5714784 -1620320 5716856 1620280 5716936 1620368 5716792 1620424 5714784 -1620320 5716856 1620368 5716792 1620424 5714784 1620384 5714776 -1620320 5716856 1620368 5716792 1620384 5714776 1619296 5717232 -1620320 5716856 1620280 5716936 1620368 5716792 1619296 5717232 -1620368 5716792 1620424 5714784 1620384 5714776 1619296 5717232 -1620320 5716856 1620368 5716792 1619296 5717232 1620280 5716936 -1620384 5714776 1620352 5714744 1619296 5717232 1620368 5716792 -1619296 5717232 1620320 5716856 1620368 5716792 1620352 5714744 -1620384 5714776 1620352 5714744 1620368 5716792 1620424 5714784 -1620352 5714744 1619280 5717232 1619296 5717232 1620368 5716792 -1620368 5716792 1620456 5714784 1620424 5714784 1620384 5714776 -1620520 5714728 1620448 5716728 1627312 5719640 1620560 5714512 -1620368 5716792 1620448 5716728 1620520 5714728 1620456 5714784 -1620368 5716792 1627312 5719640 1620448 5716728 1620456 5714784 -1620448 5716728 1627312 5719640 1620520 5714728 1620456 5714784 -1620368 5716792 1620448 5716728 1620456 5714784 1620424 5714784 -1620368 5716792 1627312 5719640 1620448 5716728 1620424 5714784 -1620448 5716728 1620520 5714728 1620456 5714784 1620424 5714784 -1627312 5719640 1620448 5716728 1620368 5716792 1627280 5719664 -1620448 5716728 1620424 5714784 1620368 5716792 1627280 5719664 -1620368 5716792 1626912 5719928 1627280 5719664 1620448 5716728 -1626912 5719928 1627232 5719704 1627280 5719664 1620448 5716728 -1620368 5716792 1626912 5719928 1620448 5716728 1620424 5714784 -1627312 5719640 1620520 5714728 1620448 5716728 1627280 5719664 -1627280 5719664 1627312 5719640 1620448 5716728 1626912 5719928 -1620368 5716792 1626864 5719976 1626912 5719928 1620448 5716728 -1620368 5716792 1626864 5719976 1620448 5716728 1620424 5714784 -1626912 5719928 1627280 5719664 1620448 5716728 1626864 5719976 -1620368 5716792 1620280 5716936 1626864 5719976 1620448 5716728 -1620368 5716792 1620280 5716936 1620448 5716728 1620424 5714784 -1620280 5716936 1620992 5722672 1626864 5719976 1620448 5716728 -1626864 5719976 1626912 5719928 1620448 5716728 1620280 5716936 -1620368 5716792 1620320 5716856 1620280 5716936 1620448 5716728 -1620368 5716792 1620320 5716856 1620448 5716728 1620424 5714784 -1620280 5716936 1626864 5719976 1620448 5716728 1620320 5716856 -1620368 5716792 1620448 5716728 1620424 5714784 1620384 5714776 -1620368 5716792 1620320 5716856 1620448 5716728 1620384 5714776 -1620448 5716728 1620456 5714784 1620424 5714784 1620384 5714776 -1620368 5716792 1620448 5716728 1620384 5714776 1620352 5714744 -1620448 5716728 1620544 5716680 1620520 5714728 1620456 5714784 -1620520 5714728 1620544 5716680 1627312 5719640 1620560 5714512 -1620448 5716728 1620544 5716680 1620456 5714784 1620424 5714784 -1620448 5716728 1620544 5716680 1620424 5714784 1620384 5714776 -1620544 5716680 1620456 5714784 1620424 5714784 1620384 5714776 -1620448 5716728 1627312 5719640 1620544 5716680 1620384 5714776 -1627312 5719640 1620544 5716680 1620448 5716728 1627280 5719664 -1620544 5716680 1620384 5714776 1620448 5716728 1627280 5719664 -1620544 5716680 1627312 5719640 1620520 5714728 1620456 5714784 -1620448 5716728 1626912 5719928 1627280 5719664 1620544 5716680 -1626912 5719928 1627232 5719704 1627280 5719664 1620544 5716680 -1620448 5716728 1626864 5719976 1626912 5719928 1620544 5716680 -1620448 5716728 1626864 5719976 1620544 5716680 1620384 5714776 -1627280 5719664 1627312 5719640 1620544 5716680 1626912 5719928 -1626912 5719928 1627280 5719664 1620544 5716680 1626864 5719976 -1620448 5716728 1620280 5716936 1626864 5719976 1620544 5716680 -1626864 5719976 1626912 5719928 1620544 5716680 1620280 5716936 -1620280 5716936 1620992 5722672 1626864 5719976 1620544 5716680 -1626864 5719976 1626912 5719928 1620544 5716680 1620992 5722672 -1620280 5716936 1620872 5722632 1620992 5722672 1620544 5716680 -1620992 5722672 1621040 5722712 1626864 5719976 1620544 5716680 -1620448 5716728 1620320 5716856 1620280 5716936 1620544 5716680 -1620448 5716728 1620280 5716936 1620544 5716680 1620384 5714776 -1620280 5716936 1620992 5722672 1620544 5716680 1620448 5716728 -1620544 5716680 1620520 5714728 1620456 5714784 1620424 5714784 -1627312 5719640 1620520 5714728 1620544 5716680 1627280 5719664 -1620448 5716728 1620544 5716680 1620384 5714776 1620368 5716792 -1620520 5714728 1620584 5716664 1627312 5719640 1620560 5714512 -1620544 5716680 1620584 5716664 1620520 5714728 1620456 5714784 -1620584 5716664 1627312 5719640 1620520 5714728 1620456 5714784 -1620544 5716680 1620584 5716664 1620456 5714784 1620424 5714784 -1620544 5716680 1620584 5716664 1620424 5714784 1620384 5714776 -1620544 5716680 1620584 5716664 1620384 5714776 1620448 5716728 -1620584 5716664 1620520 5714728 1620456 5714784 1620424 5714784 -1620584 5716664 1620456 5714784 1620424 5714784 1620384 5714776 -1627312 5719640 1620584 5716664 1620544 5716680 1627280 5719664 -1627312 5719640 1620520 5714728 1620584 5716664 1627280 5719664 -1620544 5716680 1626912 5719928 1627280 5719664 1620584 5716664 -1626912 5719928 1627232 5719704 1627280 5719664 1620584 5716664 -1620544 5716680 1626864 5719976 1626912 5719928 1620584 5716664 -1620544 5716680 1620992 5722672 1626864 5719976 1620584 5716664 -1620544 5716680 1620280 5716936 1620992 5722672 1620584 5716664 -1620992 5722672 1626864 5719976 1620584 5716664 1620280 5716936 -1620280 5716936 1620872 5722632 1620992 5722672 1620584 5716664 -1620992 5722672 1621040 5722712 1626864 5719976 1620584 5716664 -1626912 5719928 1627280 5719664 1620584 5716664 1626864 5719976 -1626864 5719976 1626912 5719928 1620584 5716664 1620992 5722672 -1620544 5716680 1620448 5716728 1620280 5716936 1620584 5716664 -1627280 5719664 1627312 5719640 1620584 5716664 1626912 5719928 -1620544 5716680 1620280 5716936 1620584 5716664 1620384 5714776 -1620520 5714728 1620680 5716664 1627312 5719640 1620560 5714512 -1620584 5716664 1620680 5716664 1620520 5714728 1620456 5714784 -1620584 5716664 1627312 5719640 1620680 5716664 1620456 5714784 -1627312 5719640 1620680 5716664 1620584 5716664 1627280 5719664 -1620680 5716664 1620456 5714784 1620584 5716664 1627280 5719664 -1620584 5716664 1620680 5716664 1620456 5714784 1620424 5714784 -1627312 5719640 1620552 5714440 1620560 5714512 1620680 5716664 -1620584 5716664 1626912 5719928 1627280 5719664 1620680 5716664 -1626912 5719928 1627232 5719704 1627280 5719664 1620680 5716664 -1620584 5716664 1626912 5719928 1620680 5716664 1620456 5714784 -1627280 5719664 1627312 5719640 1620680 5716664 1626912 5719928 -1620584 5716664 1626864 5719976 1626912 5719928 1620680 5716664 -1620584 5716664 1626864 5719976 1620680 5716664 1620456 5714784 -1620584 5716664 1620992 5722672 1626864 5719976 1620680 5716664 -1620584 5716664 1620280 5716936 1620992 5722672 1620680 5716664 -1620584 5716664 1620544 5716680 1620280 5716936 1620680 5716664 -1620280 5716936 1620992 5722672 1620680 5716664 1620544 5716680 -1620280 5716936 1620872 5722632 1620992 5722672 1620680 5716664 -1620992 5722672 1621040 5722712 1626864 5719976 1620680 5716664 -1620584 5716664 1620544 5716680 1620680 5716664 1620456 5714784 -1626864 5719976 1626912 5719928 1620680 5716664 1620992 5722672 -1620992 5722672 1626864 5719976 1620680 5716664 1620280 5716936 -1620544 5716680 1620448 5716728 1620280 5716936 1620680 5716664 -1620280 5716936 1620992 5722672 1620680 5716664 1620448 5716728 -1620544 5716680 1620448 5716728 1620680 5716664 1620584 5716664 -1620448 5716728 1620320 5716856 1620280 5716936 1620680 5716664 -1620280 5716936 1620992 5722672 1620680 5716664 1620320 5716856 -1620448 5716728 1620320 5716856 1620680 5716664 1620544 5716680 -1620448 5716728 1620368 5716792 1620320 5716856 1620680 5716664 -1626912 5719928 1627280 5719664 1620680 5716664 1626864 5719976 -1620520 5714728 1620456 5714784 1620680 5716664 1620560 5714512 -1620680 5716664 1627280 5719664 1627312 5719640 1620560 5714512 -1620680 5716664 1620720 5716672 1620560 5714512 1620520 5714728 -1620720 5716672 1627312 5719640 1620560 5714512 1620520 5714728 -1620560 5714512 1620720 5716672 1627312 5719640 1620552 5714440 -1620680 5716664 1620720 5716672 1620520 5714728 1620456 5714784 -1620720 5716672 1620560 5714512 1620520 5714728 1620456 5714784 -1620680 5716664 1620720 5716672 1620456 5714784 1620584 5716664 -1620680 5716664 1627312 5719640 1620720 5716672 1620456 5714784 -1627312 5719640 1620720 5716672 1620680 5716664 1627280 5719664 -1627312 5719640 1620560 5714512 1620720 5716672 1627280 5719664 -1620680 5716664 1626912 5719928 1627280 5719664 1620720 5716672 -1626912 5719928 1627232 5719704 1627280 5719664 1620720 5716672 -1620680 5716664 1626864 5719976 1626912 5719928 1620720 5716672 -1626912 5719928 1627280 5719664 1620720 5716672 1626864 5719976 -1620680 5716664 1620992 5722672 1626864 5719976 1620720 5716672 -1620992 5722672 1621040 5722712 1626864 5719976 1620720 5716672 -1620680 5716664 1620280 5716936 1620992 5722672 1620720 5716672 -1620680 5716664 1620320 5716856 1620280 5716936 1620720 5716672 -1620280 5716936 1620872 5722632 1620992 5722672 1620720 5716672 -1620680 5716664 1620448 5716728 1620320 5716856 1620720 5716672 -1620320 5716856 1620280 5716936 1620720 5716672 1620448 5716728 -1620992 5722672 1626864 5719976 1620720 5716672 1620280 5716936 -1620280 5716936 1620992 5722672 1620720 5716672 1620320 5716856 -1620680 5716664 1620544 5716680 1620448 5716728 1620720 5716672 -1620680 5716664 1620584 5716664 1620544 5716680 1620720 5716672 -1620448 5716728 1620320 5716856 1620720 5716672 1620544 5716680 -1620448 5716728 1620368 5716792 1620320 5716856 1620720 5716672 -1626864 5719976 1626912 5719928 1620720 5716672 1620992 5722672 -1620720 5716672 1620456 5714784 1620680 5716664 1620544 5716680 -1627280 5719664 1627312 5719640 1620720 5716672 1626912 5719928 -1626864 5719976 1620768 5716712 1620992 5722672 1621040 5722712 -1620992 5722672 1620768 5716712 1620720 5716672 1620280 5716936 -1620768 5716712 1626864 5719976 1620720 5716672 1620280 5716936 -1620992 5722672 1626864 5719976 1620768 5716712 1620280 5716936 -1620992 5722672 1620768 5716712 1620280 5716936 1620872 5722632 -1620992 5722672 1626864 5719976 1620768 5716712 1620872 5722632 -1620280 5716936 1619392 5717504 1620872 5722632 1620768 5716712 -1620768 5716712 1620720 5716672 1620280 5716936 1620872 5722632 -1620720 5716672 1620320 5716856 1620280 5716936 1620768 5716712 -1620720 5716672 1620448 5716728 1620320 5716856 1620768 5716712 -1620720 5716672 1620448 5716728 1620768 5716712 1626864 5719976 -1620720 5716672 1620544 5716680 1620448 5716728 1620768 5716712 -1620448 5716728 1620320 5716856 1620768 5716712 1620544 5716680 -1620720 5716672 1620544 5716680 1620768 5716712 1626864 5719976 -1620280 5716936 1620872 5722632 1620768 5716712 1620320 5716856 -1620320 5716856 1620280 5716936 1620768 5716712 1620448 5716728 -1620720 5716672 1620680 5716664 1620544 5716680 1620768 5716712 -1620680 5716664 1620584 5716664 1620544 5716680 1620768 5716712 -1620720 5716672 1620680 5716664 1620768 5716712 1626864 5719976 -1620544 5716680 1620448 5716728 1620768 5716712 1620680 5716664 -1620448 5716728 1620368 5716792 1620320 5716856 1620768 5716712 -1620448 5716728 1620368 5716792 1620768 5716712 1620544 5716680 -1620320 5716856 1620280 5716936 1620768 5716712 1620368 5716792 -1620720 5716672 1620768 5716712 1626864 5719976 1626912 5719928 -1620720 5716672 1620680 5716664 1620768 5716712 1626912 5719928 -1620768 5716712 1620992 5722672 1626864 5719976 1626912 5719928 -1620720 5716672 1620768 5716712 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620768 5716712 -1620720 5716672 1620680 5716664 1620768 5716712 1627280 5719664 -1620768 5716712 1626864 5719976 1626912 5719928 1627280 5719664 -1620720 5716672 1620768 5716712 1627280 5719664 1627312 5719640 -1620720 5716672 1620680 5716664 1620768 5716712 1627312 5719640 -1620720 5716672 1620768 5716712 1627312 5719640 1620560 5714512 -1620720 5716672 1620680 5716664 1620768 5716712 1620560 5714512 -1620720 5716672 1620768 5716712 1620560 5714512 1620520 5714728 -1620720 5716672 1620680 5716664 1620768 5716712 1620520 5714728 -1620768 5716712 1627312 5719640 1620560 5714512 1620520 5714728 -1620720 5716672 1620768 5716712 1620520 5714728 1620456 5714784 -1620768 5716712 1626912 5719928 1627280 5719664 1627312 5719640 -1627312 5719640 1620552 5714440 1620560 5714512 1620768 5716712 -1620768 5716712 1627280 5719664 1627312 5719640 1620560 5714512 -1620768 5716712 1620808 5716760 1626864 5719976 1626912 5719928 -1620768 5716712 1620992 5722672 1620808 5716760 1626912 5719928 -1620808 5716760 1620992 5722672 1626864 5719976 1626912 5719928 -1620992 5722672 1620808 5716760 1620768 5716712 1620872 5722632 -1620808 5716760 1626912 5719928 1620768 5716712 1620872 5722632 -1620992 5722672 1626864 5719976 1620808 5716760 1620872 5722632 -1620768 5716712 1620280 5716936 1620872 5722632 1620808 5716760 -1620768 5716712 1620280 5716936 1620808 5716760 1626912 5719928 -1620872 5722632 1620992 5722672 1620808 5716760 1620280 5716936 -1626864 5719976 1620808 5716760 1620992 5722672 1621040 5722712 -1620280 5716936 1619392 5717504 1620872 5722632 1620808 5716760 -1620768 5716712 1620320 5716856 1620280 5716936 1620808 5716760 -1620768 5716712 1620320 5716856 1620808 5716760 1626912 5719928 -1620280 5716936 1620872 5722632 1620808 5716760 1620320 5716856 -1620768 5716712 1620368 5716792 1620320 5716856 1620808 5716760 -1620768 5716712 1620368 5716792 1620808 5716760 1626912 5719928 -1620320 5716856 1620280 5716936 1620808 5716760 1620368 5716792 -1620768 5716712 1620448 5716728 1620368 5716792 1620808 5716760 -1620768 5716712 1620544 5716680 1620448 5716728 1620808 5716760 -1620768 5716712 1620544 5716680 1620808 5716760 1626912 5719928 -1620768 5716712 1620680 5716664 1620544 5716680 1620808 5716760 -1620368 5716792 1620320 5716856 1620808 5716760 1620448 5716728 -1620448 5716728 1620368 5716792 1620808 5716760 1620544 5716680 -1620768 5716712 1620808 5716760 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620808 5716760 -1620768 5716712 1620544 5716680 1620808 5716760 1627280 5719664 -1620808 5716760 1626864 5719976 1626912 5719928 1627280 5719664 -1620768 5716712 1620808 5716760 1627280 5719664 1627312 5719640 -1620768 5716712 1620544 5716680 1620808 5716760 1627312 5719640 -1620808 5716760 1626912 5719928 1627280 5719664 1627312 5719640 -1620768 5716712 1620808 5716760 1627312 5719640 1620560 5714512 -1620768 5716712 1620544 5716680 1620808 5716760 1620560 5714512 -1620768 5716712 1620808 5716760 1620560 5714512 1620520 5714728 -1620768 5716712 1620544 5716680 1620808 5716760 1620520 5714728 -1620768 5716712 1620808 5716760 1620520 5714728 1620720 5716672 -1620808 5716760 1627280 5719664 1627312 5719640 1620560 5714512 -1627312 5719640 1620552 5714440 1620560 5714512 1620808 5716760 -1620808 5716760 1627312 5719640 1620560 5714512 1620520 5714728 -1620808 5716760 1620856 5716800 1626864 5719976 1626912 5719928 -1620808 5716760 1620856 5716800 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620856 5716800 -1620856 5716800 1626864 5719976 1626912 5719928 1627280 5719664 -1620992 5722672 1620856 5716800 1620808 5716760 1620872 5722632 -1620808 5716760 1620280 5716936 1620872 5722632 1620856 5716800 -1620872 5722632 1620992 5722672 1620856 5716800 1620280 5716936 -1620808 5716760 1620280 5716936 1620856 5716800 1627280 5719664 -1620856 5716800 1620992 5722672 1626864 5719976 1626912 5719928 -1620808 5716760 1620320 5716856 1620280 5716936 1620856 5716800 -1620280 5716936 1620872 5722632 1620856 5716800 1620320 5716856 -1620808 5716760 1620320 5716856 1620856 5716800 1627280 5719664 -1626864 5719976 1620856 5716800 1620992 5722672 1621040 5722712 -1620280 5716936 1619392 5717504 1620872 5722632 1620856 5716800 -1620280 5716936 1619392 5717424 1619392 5717504 1620856 5716800 -1620280 5716936 1619392 5717504 1620856 5716800 1620320 5716856 -1620872 5722632 1620992 5722672 1620856 5716800 1619392 5717504 -1619392 5717504 1620792 5722624 1620872 5722632 1620856 5716800 -1620992 5722672 1626864 5719976 1620856 5716800 1620872 5722632 -1620808 5716760 1620368 5716792 1620320 5716856 1620856 5716800 -1620808 5716760 1620856 5716800 1627280 5719664 1627312 5719640 -1620856 5716800 1626912 5719928 1627280 5719664 1627312 5719640 -1620808 5716760 1620320 5716856 1620856 5716800 1627312 5719640 -1620808 5716760 1620856 5716800 1627312 5719640 1620560 5714512 -1620808 5716760 1620320 5716856 1620856 5716800 1620560 5714512 -1627312 5719640 1620552 5714440 1620560 5714512 1620856 5716800 -1620856 5716800 1627280 5719664 1627312 5719640 1620560 5714512 -1620808 5716760 1620856 5716800 1620560 5714512 1620520 5714728 -1620808 5716760 1620856 5716800 1620520 5714728 1620768 5716712 -1620520 5714728 1620720 5716672 1620768 5716712 1620856 5716800 -1620808 5716760 1620320 5716856 1620856 5716800 1620768 5716712 -1620856 5716800 1627312 5719640 1620560 5714512 1620520 5714728 -1620856 5716800 1620560 5714512 1620520 5714728 1620768 5716712 -1620856 5716800 1620872 5716832 1626864 5719976 1626912 5719928 -1620856 5716800 1620872 5716832 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620872 5716832 -1620856 5716800 1620872 5716832 1627280 5719664 1627312 5719640 -1620872 5716832 1626912 5719928 1627280 5719664 1627312 5719640 -1620872 5716832 1626864 5719976 1626912 5719928 1627280 5719664 -1626864 5719976 1620872 5716832 1620992 5722672 1621040 5722712 -1620856 5716800 1620992 5722672 1620872 5716832 1627312 5719640 -1620992 5722672 1620872 5716832 1620856 5716800 1620872 5722632 -1620856 5716800 1619392 5717504 1620872 5722632 1620872 5716832 -1619392 5717504 1620792 5722624 1620872 5722632 1620872 5716832 -1620856 5716800 1620280 5716936 1619392 5717504 1620872 5716832 -1620280 5716936 1619392 5717424 1619392 5717504 1620872 5716832 -1620856 5716800 1620320 5716856 1620280 5716936 1620872 5716832 -1619392 5717504 1620872 5722632 1620872 5716832 1620280 5716936 -1620856 5716800 1620808 5716760 1620320 5716856 1620872 5716832 -1620320 5716856 1620280 5716936 1620872 5716832 1620808 5716760 -1620280 5716936 1619392 5717504 1620872 5716832 1620320 5716856 -1620872 5716832 1627312 5719640 1620856 5716800 1620808 5716760 -1620872 5722632 1620992 5722672 1620872 5716832 1619392 5717504 -1620872 5716832 1620992 5722672 1626864 5719976 1626912 5719928 -1620992 5722672 1626864 5719976 1620872 5716832 1620872 5722632 -1620808 5716760 1620368 5716792 1620320 5716856 1620872 5716832 -1620320 5716856 1620280 5716936 1620872 5716832 1620368 5716792 -1620808 5716760 1620368 5716792 1620872 5716832 1620856 5716800 -1620808 5716760 1620448 5716728 1620368 5716792 1620872 5716832 -1620808 5716760 1620448 5716728 1620872 5716832 1620856 5716800 -1620368 5716792 1620320 5716856 1620872 5716832 1620448 5716728 -1620808 5716760 1620544 5716680 1620448 5716728 1620872 5716832 -1620856 5716800 1620872 5716832 1627312 5719640 1620560 5714512 -1620872 5716832 1627280 5719664 1627312 5719640 1620560 5714512 -1620856 5716800 1620872 5716832 1620560 5714512 1620520 5714728 -1620856 5716800 1620808 5716760 1620872 5716832 1620560 5714512 -1627312 5719640 1620552 5714440 1620560 5714512 1620872 5716832 -1626864 5719976 1620896 5716896 1620992 5722672 1621040 5722712 -1620872 5716832 1620896 5716896 1626864 5719976 1626912 5719928 -1620872 5716832 1620896 5716896 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620896 5716896 -1620872 5716832 1620896 5716896 1627280 5719664 1627312 5719640 -1620872 5716832 1620896 5716896 1627312 5719640 1620560 5714512 -1620896 5716896 1626912 5719928 1627280 5719664 1627312 5719640 -1620896 5716896 1626864 5719976 1626912 5719928 1627280 5719664 -1620872 5716832 1620992 5722672 1620896 5716896 1627312 5719640 -1620992 5722672 1620896 5716896 1620872 5716832 1620872 5722632 -1620872 5716832 1619392 5717504 1620872 5722632 1620896 5716896 -1620872 5716832 1620280 5716936 1619392 5717504 1620896 5716896 -1620280 5716936 1619392 5717424 1619392 5717504 1620896 5716896 -1619392 5717504 1620792 5722624 1620872 5722632 1620896 5716896 -1620872 5716832 1620320 5716856 1620280 5716936 1620896 5716896 -1620872 5716832 1620368 5716792 1620320 5716856 1620896 5716896 -1620280 5716936 1619392 5717504 1620896 5716896 1620320 5716856 -1620320 5716856 1620280 5716936 1620896 5716896 1620368 5716792 -1619392 5717504 1620872 5722632 1620896 5716896 1620280 5716936 -1620896 5716896 1627312 5719640 1620872 5716832 1620368 5716792 -1620872 5722632 1620992 5722672 1620896 5716896 1619392 5717504 -1620896 5716896 1620992 5722672 1626864 5719976 1626912 5719928 -1620992 5722672 1626864 5719976 1620896 5716896 1620872 5722632 -1620872 5716832 1620448 5716728 1620368 5716792 1620896 5716896 -1620368 5716792 1620320 5716856 1620896 5716896 1620448 5716728 -1620872 5716832 1620448 5716728 1620896 5716896 1627312 5719640 -1620872 5716832 1620808 5716760 1620448 5716728 1620896 5716896 -1620872 5716832 1620856 5716800 1620808 5716760 1620896 5716896 -1620872 5716832 1620808 5716760 1620896 5716896 1627312 5719640 -1620448 5716728 1620368 5716792 1620896 5716896 1620808 5716760 -1620808 5716760 1620544 5716680 1620448 5716728 1620896 5716896 -1626864 5719976 1620928 5717008 1620992 5722672 1621040 5722712 -1620896 5716896 1620928 5717008 1626864 5719976 1626912 5719928 -1620896 5716896 1620928 5717008 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1620928 5717008 -1620896 5716896 1620928 5717008 1627280 5719664 1627312 5719640 -1620896 5716896 1620928 5717008 1627312 5719640 1620872 5716832 -1620928 5717008 1626912 5719928 1627280 5719664 1627312 5719640 -1620928 5717008 1626864 5719976 1626912 5719928 1627280 5719664 -1620896 5716896 1620992 5722672 1620928 5717008 1627312 5719640 -1620992 5722672 1620928 5717008 1620896 5716896 1620872 5722632 -1620992 5722672 1626864 5719976 1620928 5717008 1620872 5722632 -1620896 5716896 1619392 5717504 1620872 5722632 1620928 5717008 -1619392 5717504 1620792 5722624 1620872 5722632 1620928 5717008 -1620896 5716896 1620280 5716936 1619392 5717504 1620928 5717008 -1620280 5716936 1619392 5717424 1619392 5717504 1620928 5717008 -1620896 5716896 1620320 5716856 1620280 5716936 1620928 5717008 -1620896 5716896 1620368 5716792 1620320 5716856 1620928 5717008 -1620280 5716936 1619392 5717504 1620928 5717008 1620320 5716856 -1619392 5717504 1620792 5722624 1620928 5717008 1620280 5716936 -1620928 5717008 1627312 5719640 1620896 5716896 1620320 5716856 -1620872 5722632 1620992 5722672 1620928 5717008 1620792 5722624 -1620928 5717008 1620992 5722672 1626864 5719976 1626912 5719928 -1619392 5717504 1620656 5722632 1620792 5722624 1620928 5717008 -1620928 5717008 1620920 5717216 1620792 5722624 1620872 5722632 -1620928 5717008 1619392 5717504 1620920 5717216 1620872 5722632 -1620920 5717216 1619392 5717504 1620792 5722624 1620872 5722632 -1619392 5717504 1620920 5717216 1620928 5717008 1620280 5716936 -1619392 5717504 1620920 5717216 1620280 5716936 1619392 5717424 -1619392 5717504 1620792 5722624 1620920 5717216 1620280 5716936 -1620920 5717216 1620872 5722632 1620928 5717008 1620280 5716936 -1620928 5717008 1620320 5716856 1620280 5716936 1620920 5717216 -1620928 5717008 1620920 5717216 1620872 5722632 1620992 5722672 -1620928 5717008 1620280 5716936 1620920 5717216 1620992 5722672 -1620928 5717008 1620920 5717216 1620992 5722672 1626864 5719976 -1620928 5717008 1620280 5716936 1620920 5717216 1626864 5719976 -1620920 5717216 1620792 5722624 1620872 5722632 1620992 5722672 -1620992 5722672 1621040 5722712 1626864 5719976 1620920 5717216 -1620920 5717216 1620872 5722632 1620992 5722672 1626864 5719976 -1620928 5717008 1620920 5717216 1626864 5719976 1626912 5719928 -1620928 5717008 1620280 5716936 1620920 5717216 1626912 5719928 -1620920 5717216 1620992 5722672 1626864 5719976 1626912 5719928 -1620928 5717008 1620920 5717216 1626912 5719928 1627280 5719664 -1620792 5722624 1620920 5717216 1619392 5717504 1620656 5722632 -1619392 5717504 1620864 5717320 1620920 5717216 1620280 5716936 -1619392 5717504 1620864 5717320 1620280 5716936 1619392 5717424 -1619392 5717504 1620792 5722624 1620864 5717320 1620280 5716936 -1620864 5717320 1620792 5722624 1620920 5717216 1620280 5716936 -1620920 5717216 1620864 5717320 1620792 5722624 1620872 5722632 -1620864 5717320 1619392 5717504 1620792 5722624 1620872 5722632 -1620920 5717216 1620280 5716936 1620864 5717320 1620872 5722632 -1620920 5717216 1620864 5717320 1620872 5722632 1620992 5722672 -1620920 5717216 1620280 5716936 1620864 5717320 1620992 5722672 -1620864 5717320 1620792 5722624 1620872 5722632 1620992 5722672 -1620920 5717216 1620928 5717008 1620280 5716936 1620864 5717320 -1620920 5717216 1620864 5717320 1620992 5722672 1626864 5719976 -1620920 5717216 1620280 5716936 1620864 5717320 1626864 5719976 -1620920 5717216 1620864 5717320 1626864 5719976 1626912 5719928 -1620864 5717320 1620872 5722632 1620992 5722672 1626864 5719976 -1620992 5722672 1621040 5722712 1626864 5719976 1620864 5717320 -1620792 5722624 1620864 5717320 1619392 5717504 1620656 5722632 -1620792 5722624 1620872 5722632 1620864 5717320 1620656 5722632 -1620864 5717320 1620280 5716936 1619392 5717504 1620656 5722632 -1619392 5717504 1619336 5717528 1620656 5722632 1620864 5717320 -1619392 5717504 1620832 5717344 1620864 5717320 1620280 5716936 -1619392 5717504 1620832 5717344 1620280 5716936 1619392 5717424 -1620864 5717320 1620920 5717216 1620280 5716936 1620832 5717344 -1620832 5717344 1620656 5722632 1620864 5717320 1620920 5717216 -1620280 5716936 1619392 5717504 1620832 5717344 1620920 5717216 -1620920 5717216 1620928 5717008 1620280 5716936 1620832 5717344 -1620920 5717216 1620928 5717008 1620832 5717344 1620864 5717320 -1620280 5716936 1619392 5717504 1620832 5717344 1620928 5717008 -1620928 5717008 1620320 5716856 1620280 5716936 1620832 5717344 -1620864 5717320 1620832 5717344 1620656 5722632 1620792 5722624 -1620864 5717320 1620832 5717344 1620792 5722624 1620872 5722632 -1620864 5717320 1620920 5717216 1620832 5717344 1620872 5722632 -1620832 5717344 1619392 5717504 1620656 5722632 1620792 5722624 -1620864 5717320 1620832 5717344 1620872 5722632 1620992 5722672 -1620832 5717344 1620792 5722624 1620872 5722632 1620992 5722672 -1620864 5717320 1620920 5717216 1620832 5717344 1620992 5722672 -1620864 5717320 1620832 5717344 1620992 5722672 1626864 5719976 -1620832 5717344 1620656 5722632 1620792 5722624 1620872 5722632 -1620656 5722632 1620832 5717344 1619392 5717504 1619336 5717528 -1620656 5722632 1620792 5722624 1620832 5717344 1619336 5717528 -1620656 5722632 1620832 5717344 1619336 5717528 1619064 5717632 -1619392 5717504 1619352 5717512 1619336 5717528 1620832 5717344 -1619392 5717504 1619336 5717528 1620832 5717344 1620280 5716936 -1619392 5717504 1620808 5717344 1620280 5716936 1619392 5717424 -1620280 5716936 1620808 5717344 1620832 5717344 1620928 5717008 -1620808 5717344 1619392 5717504 1620832 5717344 1620928 5717008 -1620280 5716936 1620808 5717344 1620928 5717008 1620320 5716856 -1620832 5717344 1620920 5717216 1620928 5717008 1620808 5717344 -1620832 5717344 1620864 5717320 1620920 5717216 1620808 5717344 -1620928 5717008 1620280 5716936 1620808 5717344 1620920 5717216 -1620832 5717344 1620864 5717320 1620808 5717344 1619392 5717504 -1620920 5717216 1620928 5717008 1620808 5717344 1620864 5717320 -1620280 5716936 1619392 5717504 1620808 5717344 1620928 5717008 -1620832 5717344 1620808 5717344 1619392 5717504 1619336 5717528 -1620832 5717344 1620864 5717320 1620808 5717344 1619336 5717528 -1619392 5717504 1619352 5717512 1619336 5717528 1620808 5717344 -1620832 5717344 1620808 5717344 1619336 5717528 1620656 5722632 -1620832 5717344 1620808 5717344 1620656 5722632 1620792 5722624 -1620832 5717344 1620864 5717320 1620808 5717344 1620792 5722624 -1619336 5717528 1619064 5717632 1620656 5722632 1620808 5717344 -1620832 5717344 1620808 5717344 1620792 5722624 1620872 5722632 -1620808 5717344 1619336 5717528 1620656 5722632 1620792 5722624 -1620808 5717344 1620280 5716936 1619392 5717504 1619336 5717528 -1620808 5717344 1619392 5717504 1619336 5717528 1620656 5722632 -1619392 5717504 1620784 5717328 1620280 5716936 1619392 5717424 -1620808 5717344 1620784 5717328 1619392 5717504 1619336 5717528 -1620280 5716936 1620784 5717328 1620808 5717344 1620928 5717008 -1620808 5717344 1620920 5717216 1620928 5717008 1620784 5717328 -1620280 5716936 1620784 5717328 1620928 5717008 1620320 5716856 -1620808 5717344 1620864 5717320 1620920 5717216 1620784 5717328 -1620808 5717344 1620832 5717344 1620864 5717320 1620784 5717328 -1620920 5717216 1620928 5717008 1620784 5717328 1620864 5717320 -1620864 5717320 1620920 5717216 1620784 5717328 1620832 5717344 -1620784 5717328 1619392 5717504 1620808 5717344 1620832 5717344 -1620928 5717008 1620280 5716936 1620784 5717328 1620920 5717216 -1620280 5716936 1619392 5717504 1620784 5717328 1620928 5717008 -1620280 5716936 1620760 5717296 1620928 5717008 1620320 5716856 -1620928 5717008 1620896 5716896 1620320 5716856 1620760 5717296 -1620896 5716896 1620368 5716792 1620320 5716856 1620760 5717296 -1620320 5716856 1620280 5716936 1620760 5717296 1620896 5716896 -1620928 5717008 1620760 5717296 1620784 5717328 1620920 5717216 -1620784 5717328 1620864 5717320 1620920 5717216 1620760 5717296 -1620784 5717328 1620832 5717344 1620864 5717320 1620760 5717296 -1620920 5717216 1620928 5717008 1620760 5717296 1620864 5717320 -1620760 5717296 1620280 5716936 1620784 5717328 1620864 5717320 -1620784 5717328 1620760 5717296 1620280 5716936 1619392 5717504 -1620280 5716936 1619392 5717424 1619392 5717504 1620760 5717296 -1620784 5717328 1620760 5717296 1619392 5717504 1620808 5717344 -1620784 5717328 1620864 5717320 1620760 5717296 1619392 5717504 -1620280 5716936 1619392 5717504 1620760 5717296 1620320 5716856 -1620760 5717296 1620920 5717216 1620928 5717008 1620896 5716896 -1620896 5716896 1620720 5717224 1620760 5717296 1620928 5717008 -1620320 5716856 1620720 5717224 1620896 5716896 1620368 5716792 -1620896 5716896 1620448 5716728 1620368 5716792 1620720 5717224 -1620368 5716792 1620320 5716856 1620720 5717224 1620448 5716728 -1620760 5717296 1620720 5717224 1620320 5716856 1620280 5716936 -1620896 5716896 1620808 5716760 1620448 5716728 1620720 5717224 -1620448 5716728 1620368 5716792 1620720 5717224 1620808 5716760 -1620896 5716896 1620872 5716832 1620808 5716760 1620720 5717224 -1620808 5716760 1620544 5716680 1620448 5716728 1620720 5717224 -1620760 5717296 1620720 5717224 1620280 5716936 1619392 5717504 -1620720 5717224 1620280 5716936 1620760 5717296 1620928 5717008 -1620760 5717296 1620920 5717216 1620928 5717008 1620720 5717224 -1620928 5717008 1620896 5716896 1620720 5717224 1620920 5717216 -1620760 5717296 1620864 5717320 1620920 5717216 1620720 5717224 -1620760 5717296 1620920 5717216 1620720 5717224 1620280 5716936 -1620320 5716856 1620280 5716936 1620720 5717224 1620368 5716792 -1620896 5716896 1620808 5716760 1620720 5717224 1620928 5717008 -1620368 5716792 1620696 5717200 1620720 5717224 1620448 5716728 -1620720 5717224 1620808 5716760 1620448 5716728 1620696 5717200 -1620448 5716728 1620368 5716792 1620696 5717200 1620808 5716760 -1620720 5717224 1620896 5716896 1620808 5716760 1620696 5717200 -1620808 5716760 1620448 5716728 1620696 5717200 1620896 5716896 -1620896 5716896 1620872 5716832 1620808 5716760 1620696 5717200 -1620808 5716760 1620544 5716680 1620448 5716728 1620696 5717200 -1620720 5717224 1620696 5717200 1620320 5716856 1620280 5716936 -1620720 5717224 1620696 5717200 1620280 5716936 1620760 5717296 -1620280 5716936 1619392 5717504 1620760 5717296 1620696 5717200 -1620280 5716936 1619392 5717424 1619392 5717504 1620696 5717200 -1620760 5717296 1620720 5717224 1620696 5717200 1619392 5717504 -1619392 5717504 1620784 5717328 1620760 5717296 1620696 5717200 -1620696 5717200 1620320 5716856 1620280 5716936 1619392 5717504 -1620696 5717200 1620760 5717296 1620720 5717224 1620896 5716896 -1620720 5717224 1620928 5717008 1620896 5716896 1620696 5717200 -1620720 5717224 1620920 5717216 1620928 5717008 1620696 5717200 -1620896 5716896 1620808 5716760 1620696 5717200 1620928 5717008 -1620720 5717224 1620928 5717008 1620696 5717200 1620760 5717296 -1620696 5717200 1620368 5716792 1620320 5716856 1620280 5716936 -1620368 5716792 1620320 5716856 1620696 5717200 1620448 5716728 -1619392 5717504 1620656 5717184 1620280 5716936 1619392 5717424 -1620696 5717200 1620656 5717184 1619392 5717504 1620760 5717296 -1620696 5717200 1620656 5717184 1620760 5717296 1620720 5717224 -1619392 5717504 1620784 5717328 1620760 5717296 1620656 5717184 -1620656 5717184 1619392 5717504 1620760 5717296 1620720 5717224 -1620280 5716936 1620656 5717184 1620696 5717200 1620320 5716856 -1620696 5717200 1620368 5716792 1620320 5716856 1620656 5717184 -1620320 5716856 1620280 5716936 1620656 5717184 1620368 5716792 -1620696 5717200 1620368 5716792 1620656 5717184 1620720 5717224 -1620696 5717200 1620448 5716728 1620368 5716792 1620656 5717184 -1620696 5717200 1620808 5716760 1620448 5716728 1620656 5717184 -1620696 5717200 1620896 5716896 1620808 5716760 1620656 5717184 -1620808 5716760 1620448 5716728 1620656 5717184 1620896 5716896 -1620696 5717200 1620928 5717008 1620896 5716896 1620656 5717184 -1620896 5716896 1620808 5716760 1620656 5717184 1620928 5717008 -1620896 5716896 1620872 5716832 1620808 5716760 1620656 5717184 -1620808 5716760 1620544 5716680 1620448 5716728 1620656 5717184 -1620808 5716760 1620768 5716712 1620544 5716680 1620656 5717184 -1620808 5716760 1620544 5716680 1620656 5717184 1620896 5716896 -1620696 5717200 1620720 5717224 1620928 5717008 1620656 5717184 -1620368 5716792 1620320 5716856 1620656 5717184 1620448 5716728 -1620696 5717200 1620928 5717008 1620656 5717184 1620720 5717224 -1620448 5716728 1620368 5716792 1620656 5717184 1620544 5716680 -1620656 5717184 1620280 5716936 1619392 5717504 1620760 5717296 -1620280 5716936 1619392 5717504 1620656 5717184 1620320 5716856 -1619392 5717504 1620608 5717184 1620280 5716936 1619392 5717424 -1620656 5717184 1620608 5717184 1619392 5717504 1620760 5717296 -1619392 5717504 1620784 5717328 1620760 5717296 1620608 5717184 -1619392 5717504 1620808 5717344 1620784 5717328 1620608 5717184 -1620656 5717184 1620608 5717184 1620760 5717296 1620720 5717224 -1620656 5717184 1620608 5717184 1620720 5717224 1620696 5717200 -1620760 5717296 1620720 5717224 1620608 5717184 1620784 5717328 -1620656 5717184 1620280 5716936 1620608 5717184 1620720 5717224 -1620280 5716936 1620608 5717184 1620656 5717184 1620320 5716856 -1620280 5716936 1619392 5717504 1620608 5717184 1620320 5716856 -1620656 5717184 1620368 5716792 1620320 5716856 1620608 5717184 -1620656 5717184 1620448 5716728 1620368 5716792 1620608 5717184 -1620368 5716792 1620320 5716856 1620608 5717184 1620448 5716728 -1620656 5717184 1620544 5716680 1620448 5716728 1620608 5717184 -1620656 5717184 1620808 5716760 1620544 5716680 1620608 5717184 -1620808 5716760 1620768 5716712 1620544 5716680 1620608 5717184 -1620656 5717184 1620896 5716896 1620808 5716760 1620608 5717184 -1620448 5716728 1620368 5716792 1620608 5717184 1620544 5716680 -1620544 5716680 1620448 5716728 1620608 5717184 1620808 5716760 -1620608 5717184 1620720 5717224 1620656 5717184 1620808 5716760 -1620320 5716856 1620280 5716936 1620608 5717184 1620368 5716792 -1620608 5717184 1620280 5716936 1619392 5717504 1620784 5717328 -1619392 5717504 1620520 5717184 1620280 5716936 1619392 5717424 -1620280 5716936 1619360 5717312 1619392 5717424 1620520 5717184 -1620280 5716936 1620520 5717184 1620608 5717184 1620320 5716856 -1620520 5717184 1619392 5717504 1620608 5717184 1620320 5716856 -1619392 5717504 1620608 5717184 1620520 5717184 1619392 5717424 -1620520 5717184 1620320 5716856 1620280 5716936 1619392 5717424 -1620608 5717184 1620368 5716792 1620320 5716856 1620520 5717184 -1620608 5717184 1620368 5716792 1620520 5717184 1619392 5717504 -1620320 5716856 1620280 5716936 1620520 5717184 1620368 5716792 -1620608 5717184 1620448 5716728 1620368 5716792 1620520 5717184 -1620608 5717184 1620448 5716728 1620520 5717184 1619392 5717504 -1620608 5717184 1620544 5716680 1620448 5716728 1620520 5717184 -1620368 5716792 1620320 5716856 1620520 5717184 1620448 5716728 -1620608 5717184 1620520 5717184 1619392 5717504 1620784 5717328 -1620608 5717184 1620448 5716728 1620520 5717184 1620784 5717328 -1620520 5717184 1619392 5717424 1619392 5717504 1620784 5717328 -1619392 5717504 1620808 5717344 1620784 5717328 1620520 5717184 -1620608 5717184 1620520 5717184 1620784 5717328 1620760 5717296 -1620608 5717184 1620448 5716728 1620520 5717184 1620760 5717296 -1620608 5717184 1620520 5717184 1620760 5717296 1620720 5717224 -1620520 5717184 1619392 5717504 1620784 5717328 1620760 5717296 -1620520 5717184 1620472 5717192 1619392 5717424 1619392 5717504 -1619392 5717424 1620472 5717192 1620280 5716936 1619360 5717312 -1620520 5717184 1620472 5717192 1619392 5717504 1620784 5717328 -1620472 5717192 1619392 5717424 1619392 5717504 1620784 5717328 -1620520 5717184 1620280 5716936 1620472 5717192 1620784 5717328 -1620280 5716936 1620472 5717192 1620520 5717184 1620320 5716856 -1619392 5717504 1620808 5717344 1620784 5717328 1620472 5717192 -1619392 5717504 1620808 5717344 1620472 5717192 1619392 5717424 -1620784 5717328 1620520 5717184 1620472 5717192 1620808 5717344 -1619392 5717504 1619336 5717528 1620808 5717344 1620472 5717192 -1620472 5717192 1620280 5716936 1619392 5717424 1619392 5717504 -1620520 5717184 1620472 5717192 1620784 5717328 1620760 5717296 -1620472 5717192 1620808 5717344 1620784 5717328 1620760 5717296 -1620520 5717184 1620280 5716936 1620472 5717192 1620760 5717296 -1620520 5717184 1620472 5717192 1620760 5717296 1620608 5717184 -1619392 5717424 1620440 5717184 1620280 5716936 1619360 5717312 -1620472 5717192 1620440 5717184 1619392 5717424 1619392 5717504 -1620472 5717192 1620440 5717184 1619392 5717504 1620808 5717344 -1620472 5717192 1620280 5716936 1620440 5717184 1619392 5717504 -1620280 5716936 1620440 5717184 1620472 5717192 1620520 5717184 -1620280 5716936 1620440 5717184 1620520 5717184 1620320 5716856 -1620520 5717184 1620368 5716792 1620320 5716856 1620440 5717184 -1620440 5717184 1619392 5717504 1620472 5717192 1620520 5717184 -1620440 5717184 1620472 5717192 1620520 5717184 1620320 5716856 -1620440 5717184 1620280 5716936 1619392 5717424 1619392 5717504 -1620280 5716936 1619392 5717424 1620440 5717184 1620320 5716856 -1619392 5717424 1620408 5717168 1620280 5716936 1619360 5717312 -1620440 5717184 1620408 5717168 1619392 5717424 1619392 5717504 -1620440 5717184 1620408 5717168 1619392 5717504 1620472 5717192 -1620280 5716936 1620408 5717168 1620440 5717184 1620320 5716856 -1620440 5717184 1620520 5717184 1620320 5716856 1620408 5717168 -1620520 5717184 1620368 5716792 1620320 5716856 1620408 5717168 -1620440 5717184 1620472 5717192 1620520 5717184 1620408 5717168 -1620320 5716856 1620280 5716936 1620408 5717168 1620520 5717184 -1620440 5717184 1620520 5717184 1620408 5717168 1619392 5717504 -1620408 5717168 1620280 5716936 1619392 5717424 1619392 5717504 -1620280 5716936 1619392 5717424 1620408 5717168 1620320 5716856 -1619392 5717424 1620376 5717136 1620280 5716936 1619360 5717312 -1620408 5717168 1620376 5717136 1619392 5717424 1619392 5717504 -1620408 5717168 1620376 5717136 1619392 5717504 1620440 5717184 -1620408 5717168 1620280 5716936 1620376 5717136 1619392 5717504 -1620280 5716936 1620376 5717136 1620408 5717168 1620320 5716856 -1620408 5717168 1620520 5717184 1620320 5716856 1620376 5717136 -1620520 5717184 1620368 5716792 1620320 5716856 1620376 5717136 -1620408 5717168 1620440 5717184 1620520 5717184 1620376 5717136 -1620376 5717136 1619392 5717504 1620408 5717168 1620520 5717184 -1620376 5717136 1620280 5716936 1619392 5717424 1619392 5717504 -1620320 5716856 1620280 5716936 1620376 5717136 1620520 5717184 -1620280 5716936 1619392 5717424 1620376 5717136 1620320 5716856 -1619392 5717424 1620328 5717080 1620280 5716936 1619360 5717312 -1620280 5716936 1619328 5717256 1619360 5717312 1620328 5717080 -1620376 5717136 1620328 5717080 1619392 5717424 1619392 5717504 -1620280 5716936 1620328 5717080 1620376 5717136 1620320 5716856 -1620376 5717136 1620520 5717184 1620320 5716856 1620328 5717080 -1620520 5717184 1620368 5716792 1620320 5716856 1620328 5717080 -1620376 5717136 1620408 5717168 1620520 5717184 1620328 5717080 -1620320 5716856 1620280 5716936 1620328 5717080 1620520 5717184 -1620328 5717080 1619392 5717424 1620376 5717136 1620520 5717184 -1619392 5717424 1620376 5717136 1620328 5717080 1619360 5717312 -1620328 5717080 1620320 5716856 1620280 5716936 1619360 5717312 -1620328 5717080 1620280 5716992 1619360 5717312 1619392 5717424 -1619360 5717312 1620280 5716992 1620280 5716936 1619328 5717256 -1620280 5716936 1619296 5717232 1619328 5717256 1620280 5716992 -1620280 5716992 1620328 5717080 1620280 5716936 1619328 5717256 -1620328 5717080 1620280 5716992 1619392 5717424 1620376 5717136 -1620328 5717080 1620280 5716936 1620280 5716992 1619392 5717424 -1620280 5716936 1620280 5716992 1620328 5717080 1620320 5716856 -1620280 5716992 1619328 5717256 1619360 5717312 1619392 5717424 -1617184 5711760 1617944 5715264 1618824 5717440 1617312 5711816 -1617184 5711760 1611528 5715552 1617944 5715264 1617312 5711816 -1611528 5715552 1617944 5715264 1617184 5711760 1616808 5711600 -1617944 5715264 1617312 5711816 1617184 5711760 1616808 5711600 -1618824 5717440 1617944 5715264 1611528 5715552 1618816 5717464 -1611528 5715552 1611520 5715576 1618816 5717464 1617944 5715264 -1618816 5717464 1618824 5717440 1617944 5715264 1611520 5715576 -1618824 5717440 1618856 5717400 1617312 5711816 1617944 5715264 -1617312 5711816 1617184 5711760 1617944 5715264 1618856 5717400 -1618856 5717400 1617888 5712008 1617312 5711816 1617944 5715264 -1617312 5711816 1617184 5711760 1617944 5715264 1617888 5712008 -1618856 5717400 1617888 5712008 1617944 5715264 1618824 5717440 -1618856 5717400 1619656 5713744 1617888 5712008 1617944 5715264 -1617888 5712008 1617312 5711816 1617944 5715264 1619656 5713744 -1618856 5717400 1618888 5717376 1619656 5713744 1617944 5715264 -1618888 5717376 1619792 5714008 1619656 5713744 1617944 5715264 -1618888 5717376 1619792 5714008 1617944 5715264 1618856 5717400 -1618888 5717376 1619864 5714184 1619792 5714008 1617944 5715264 -1618888 5717376 1619864 5714184 1617944 5715264 1618856 5717400 -1619792 5714008 1619656 5713744 1617944 5715264 1619864 5714184 -1618856 5717400 1618888 5717376 1617944 5715264 1618824 5717440 -1619656 5713744 1617888 5712008 1617944 5715264 1619792 5714008 -1617888 5712008 1617736 5711920 1617312 5711816 1617944 5715264 -1611520 5715576 1611456 5715680 1618816 5717464 1617944 5715264 -1611456 5715680 1618832 5717504 1618816 5717464 1617944 5715264 -1611520 5715576 1611456 5715680 1617944 5715264 1611528 5715552 -1618816 5717464 1618824 5717440 1617944 5715264 1611456 5715680 -1617944 5715264 1618816 5717464 1618824 5717440 1618856 5717400 -1611528 5715552 1611520 5715576 1617944 5715264 1616808 5711600 -1611520 5715576 1611464 5715656 1611456 5715680 1617944 5715264 -1619656 5713744 1618048 5712072 1617888 5712008 1617944 5715264 -1617888 5712008 1617312 5711816 1617944 5715264 1618048 5712072 -1619656 5713744 1618160 5712112 1618048 5712072 1617944 5715264 -1619656 5713744 1619688 5713672 1618160 5712112 1617944 5715264 -1619656 5713744 1618160 5712112 1617944 5715264 1619792 5714008 -1618048 5712072 1617888 5712008 1617944 5715264 1618160 5712112 -1617184 5711760 1617000 5711648 1616808 5711600 1617944 5715264 -1611528 5715552 1617944 5715264 1616808 5711600 1616712 5711552 -1611528 5715552 1617944 5715264 1616712 5711552 1611512 5715528 -1617944 5715264 1617184 5711760 1616808 5711600 1616712 5711552 -1611528 5715552 1611520 5715576 1617944 5715264 1616712 5711552 -1616808 5711600 1616736 5711544 1616712 5711552 1617944 5715264 -1618888 5717376 1619920 5714264 1619864 5714184 1617944 5715264 -1618888 5717376 1619920 5714264 1617944 5715264 1618856 5717400 -1619864 5714184 1619792 5714008 1617944 5715264 1619920 5714264 -1618888 5717376 1619280 5717232 1619920 5714264 1617944 5715264 -1618888 5717376 1619280 5717232 1617944 5715264 1618856 5717400 -1619280 5717232 1620352 5714744 1619920 5714264 1617944 5715264 -1619280 5717232 1619296 5717232 1620352 5714744 1617944 5715264 -1619296 5717232 1620368 5716792 1620352 5714744 1617944 5715264 -1620352 5714744 1620256 5714592 1619920 5714264 1617944 5715264 -1620256 5714592 1620144 5714440 1619920 5714264 1617944 5715264 -1620352 5714744 1620256 5714592 1617944 5715264 1619296 5717232 -1619280 5717232 1619296 5717232 1617944 5715264 1618888 5717376 -1618888 5717376 1619248 5717248 1619280 5717232 1617944 5715264 -1618888 5717376 1619248 5717248 1617944 5715264 1618856 5717400 -1619280 5717232 1619296 5717232 1617944 5715264 1619248 5717248 -1618888 5717376 1618952 5717376 1619248 5717248 1617944 5715264 -1619920 5714264 1619864 5714184 1617944 5715264 1620256 5714592 -1618160 5712112 1617976 5715224 1619656 5713744 1619688 5713672 -1617944 5715264 1617976 5715224 1618160 5712112 1618048 5712072 -1617976 5715224 1619656 5713744 1618160 5712112 1618048 5712072 -1619656 5713744 1617976 5715224 1617944 5715264 1619792 5714008 -1617944 5715264 1619864 5714184 1619792 5714008 1617976 5715224 -1617944 5715264 1619920 5714264 1619864 5714184 1617976 5715224 -1619864 5714184 1619792 5714008 1617976 5715224 1619920 5714264 -1619656 5713744 1618160 5712112 1617976 5715224 1619792 5714008 -1619792 5714008 1619656 5713744 1617976 5715224 1619864 5714184 -1617944 5715264 1619920 5714264 1617976 5715224 1618048 5712072 -1617944 5715264 1617976 5715224 1618048 5712072 1617888 5712008 -1617944 5715264 1617976 5715224 1617888 5712008 1617312 5711816 -1617944 5715264 1617976 5715224 1617312 5711816 1617184 5711760 -1617944 5715264 1617976 5715224 1617184 5711760 1616808 5711600 -1617976 5715224 1617888 5712008 1617312 5711816 1617184 5711760 -1617976 5715224 1618160 5712112 1618048 5712072 1617888 5712008 -1617888 5712008 1617736 5711920 1617312 5711816 1617976 5715224 -1617944 5715264 1619920 5714264 1617976 5715224 1617184 5711760 -1617976 5715224 1618048 5712072 1617888 5712008 1617312 5711816 -1617944 5715264 1620256 5714592 1619920 5714264 1617976 5715224 -1619920 5714264 1619864 5714184 1617976 5715224 1620256 5714592 -1617944 5715264 1620352 5714744 1620256 5714592 1617976 5715224 -1620256 5714592 1620144 5714440 1619920 5714264 1617976 5715224 -1617944 5715264 1619296 5717232 1620352 5714744 1617976 5715224 -1619296 5717232 1620368 5716792 1620352 5714744 1617976 5715224 -1617944 5715264 1619280 5717232 1619296 5717232 1617976 5715224 -1620352 5714744 1620256 5714592 1617976 5715224 1619296 5717232 -1619296 5717232 1620352 5714744 1617976 5715224 1619280 5717232 -1617944 5715264 1619248 5717248 1619280 5717232 1617976 5715224 -1617944 5715264 1619280 5717232 1617976 5715224 1617184 5711760 -1620256 5714592 1619920 5714264 1617976 5715224 1620352 5714744 -1617976 5715224 1618080 5715184 1619920 5714264 1619864 5714184 -1618080 5715184 1620256 5714592 1619920 5714264 1619864 5714184 -1617976 5715224 1620256 5714592 1618080 5715184 1619864 5714184 -1617976 5715224 1618080 5715184 1619864 5714184 1619792 5714008 -1617976 5715224 1620256 5714592 1618080 5715184 1619792 5714008 -1618080 5715184 1619920 5714264 1619864 5714184 1619792 5714008 -1619920 5714264 1618080 5715184 1620256 5714592 1620144 5714440 -1617976 5715224 1618080 5715184 1619792 5714008 1619656 5713744 -1617976 5715224 1620256 5714592 1618080 5715184 1619656 5713744 -1618080 5715184 1619864 5714184 1619792 5714008 1619656 5713744 -1617976 5715224 1618080 5715184 1619656 5713744 1618160 5712112 -1617976 5715224 1618080 5715184 1618160 5712112 1618048 5712072 -1617976 5715224 1620256 5714592 1618080 5715184 1618048 5712072 -1619656 5713744 1619688 5713672 1618160 5712112 1618080 5715184 -1617976 5715224 1618080 5715184 1618048 5712072 1617888 5712008 -1618080 5715184 1619792 5714008 1619656 5713744 1618160 5712112 -1620256 5714592 1618080 5715184 1617976 5715224 1620352 5714744 -1618080 5715184 1618048 5712072 1617976 5715224 1620352 5714744 -1617976 5715224 1619296 5717232 1620352 5714744 1618080 5715184 -1617976 5715224 1619296 5717232 1618080 5715184 1618048 5712072 -1619296 5717232 1620368 5716792 1620352 5714744 1618080 5715184 -1619296 5717232 1620320 5716856 1620368 5716792 1618080 5715184 -1620368 5716792 1620384 5714776 1620352 5714744 1618080 5715184 -1620368 5716792 1620448 5716728 1620384 5714776 1618080 5715184 -1620368 5716792 1620384 5714776 1618080 5715184 1619296 5717232 -1619296 5717232 1620368 5716792 1618080 5715184 1617976 5715224 -1617976 5715224 1619280 5717232 1619296 5717232 1618080 5715184 -1617976 5715224 1619280 5717232 1618080 5715184 1618048 5712072 -1617976 5715224 1617944 5715264 1619280 5717232 1618080 5715184 -1617976 5715224 1617944 5715264 1618080 5715184 1618048 5712072 -1619296 5717232 1620368 5716792 1618080 5715184 1619280 5717232 -1619280 5717232 1619296 5717232 1618080 5715184 1617944 5715264 -1617944 5715264 1619248 5717248 1619280 5717232 1618080 5715184 -1617944 5715264 1619248 5717248 1618080 5715184 1617976 5715224 -1619280 5717232 1619296 5717232 1618080 5715184 1619248 5717248 -1617944 5715264 1618888 5717376 1619248 5717248 1618080 5715184 -1617944 5715264 1618856 5717400 1618888 5717376 1618080 5715184 -1617944 5715264 1618888 5717376 1618080 5715184 1617976 5715224 -1619248 5717248 1619280 5717232 1618080 5715184 1618888 5717376 -1618888 5717376 1618952 5717376 1619248 5717248 1618080 5715184 -1620352 5714744 1620256 5714592 1618080 5715184 1620384 5714776 -1618080 5715184 1619656 5713744 1618160 5712112 1618048 5712072 -1620256 5714592 1619920 5714264 1618080 5715184 1620352 5714744 -1620384 5714776 1618152 5715200 1620368 5716792 1620448 5716728 -1618080 5715184 1618152 5715200 1620384 5714776 1620352 5714744 -1620368 5716792 1618152 5715200 1618080 5715184 1619296 5717232 -1620368 5716792 1618152 5715200 1619296 5717232 1620320 5716856 -1618080 5715184 1619280 5717232 1619296 5717232 1618152 5715200 -1619296 5717232 1620368 5716792 1618152 5715200 1619280 5717232 -1618080 5715184 1619248 5717248 1619280 5717232 1618152 5715200 -1619280 5717232 1619296 5717232 1618152 5715200 1619248 5717248 -1618080 5715184 1618888 5717376 1619248 5717248 1618152 5715200 -1619248 5717248 1619280 5717232 1618152 5715200 1618888 5717376 -1618080 5715184 1617944 5715264 1618888 5717376 1618152 5715200 -1617944 5715264 1618856 5717400 1618888 5717376 1618152 5715200 -1618080 5715184 1617976 5715224 1617944 5715264 1618152 5715200 -1618888 5717376 1619248 5717248 1618152 5715200 1617944 5715264 -1618152 5715200 1620368 5716792 1620384 5714776 1620352 5714744 -1620368 5716792 1620384 5714776 1618152 5715200 1619296 5717232 -1618888 5717376 1618952 5717376 1619248 5717248 1618152 5715200 -1618080 5715184 1618152 5715200 1620352 5714744 1620256 5714592 -1618152 5715200 1620384 5714776 1620352 5714744 1620256 5714592 -1618080 5715184 1618152 5715200 1620256 5714592 1619920 5714264 -1618080 5715184 1618152 5715200 1619920 5714264 1619864 5714184 -1618080 5715184 1618152 5715200 1619864 5714184 1619792 5714008 -1618080 5715184 1618152 5715200 1619792 5714008 1619656 5713744 -1618152 5715200 1619864 5714184 1619792 5714008 1619656 5713744 -1620256 5714592 1620144 5714440 1619920 5714264 1618152 5715200 -1618080 5715184 1618152 5715200 1619656 5713744 1618160 5712112 -1618152 5715200 1619920 5714264 1619864 5714184 1619792 5714008 -1618152 5715200 1620352 5714744 1620256 5714592 1619920 5714264 -1618152 5715200 1620256 5714592 1619920 5714264 1619864 5714184 -1618080 5715184 1617944 5715264 1618152 5715200 1619656 5713744 -1620368 5716792 1618176 5715224 1619296 5717232 1620320 5716856 -1619296 5717232 1618176 5715224 1618152 5715200 1619280 5717232 -1618152 5715200 1619248 5717248 1619280 5717232 1618176 5715224 -1619280 5717232 1619296 5717232 1618176 5715224 1619248 5717248 -1618152 5715200 1618888 5717376 1619248 5717248 1618176 5715224 -1619248 5717248 1619280 5717232 1618176 5715224 1618888 5717376 -1618152 5715200 1617944 5715264 1618888 5717376 1618176 5715224 -1617944 5715264 1618856 5717400 1618888 5717376 1618176 5715224 -1618888 5717376 1619248 5717248 1618176 5715224 1617944 5715264 -1619296 5717232 1620368 5716792 1618176 5715224 1619280 5717232 -1618152 5715200 1618080 5715184 1617944 5715264 1618176 5715224 -1618080 5715184 1617976 5715224 1617944 5715264 1618176 5715224 -1617944 5715264 1618888 5717376 1618176 5715224 1617976 5715224 -1618080 5715184 1617976 5715224 1618176 5715224 1618152 5715200 -1618152 5715200 1618176 5715224 1620368 5716792 1620384 5714776 -1620368 5716792 1620448 5716728 1620384 5714776 1618176 5715224 -1618152 5715200 1618176 5715224 1620384 5714776 1620352 5714744 -1618152 5715200 1618176 5715224 1620352 5714744 1620256 5714592 -1618176 5715224 1620384 5714776 1620352 5714744 1620256 5714592 -1618176 5715224 1620368 5716792 1620384 5714776 1620352 5714744 -1618176 5715224 1620256 5714592 1618152 5715200 1618080 5715184 -1618176 5715224 1619296 5717232 1620368 5716792 1620384 5714776 -1618888 5717376 1618952 5717376 1619248 5717248 1618176 5715224 -1618152 5715200 1618176 5715224 1620256 5714592 1619920 5714264 -1618176 5715224 1620352 5714744 1620256 5714592 1619920 5714264 -1620256 5714592 1620144 5714440 1619920 5714264 1618176 5715224 -1618152 5715200 1618080 5715184 1618176 5715224 1619920 5714264 -1618152 5715200 1618176 5715224 1619920 5714264 1619864 5714184 -1618152 5715200 1618176 5715224 1619864 5714184 1619792 5714008 -1618152 5715200 1618080 5715184 1618176 5715224 1619864 5714184 -1618176 5715224 1620256 5714592 1619920 5714264 1619864 5714184 -1620368 5716792 1618240 5715296 1619296 5717232 1620320 5716856 -1619296 5717232 1618240 5715296 1618176 5715224 1619280 5717232 -1619296 5717232 1620368 5716792 1618240 5715296 1619280 5717232 -1618176 5715224 1619248 5717248 1619280 5717232 1618240 5715296 -1619280 5717232 1619296 5717232 1618240 5715296 1619248 5717248 -1618176 5715224 1618888 5717376 1619248 5717248 1618240 5715296 -1619248 5717248 1619280 5717232 1618240 5715296 1618888 5717376 -1618176 5715224 1617944 5715264 1618888 5717376 1618240 5715296 -1617944 5715264 1618856 5717400 1618888 5717376 1618240 5715296 -1618888 5717376 1619248 5717248 1618240 5715296 1618856 5717400 -1617944 5715264 1618856 5717400 1618240 5715296 1618176 5715224 -1618176 5715224 1617976 5715224 1617944 5715264 1618240 5715296 -1618240 5715296 1620368 5716792 1618176 5715224 1617944 5715264 -1617944 5715264 1618824 5717440 1618856 5717400 1618240 5715296 -1618176 5715224 1618240 5715296 1620368 5716792 1620384 5714776 -1618240 5715296 1619296 5717232 1620368 5716792 1620384 5714776 -1620368 5716792 1620448 5716728 1620384 5714776 1618240 5715296 -1618176 5715224 1617944 5715264 1618240 5715296 1620384 5714776 -1618176 5715224 1618240 5715296 1620384 5714776 1620352 5714744 -1618176 5715224 1617944 5715264 1618240 5715296 1620352 5714744 -1618176 5715224 1618240 5715296 1620352 5714744 1620256 5714592 -1618176 5715224 1618240 5715296 1620256 5714592 1619920 5714264 -1620256 5714592 1620144 5714440 1619920 5714264 1618240 5715296 -1618176 5715224 1617944 5715264 1618240 5715296 1619920 5714264 -1618240 5715296 1620352 5714744 1620256 5714592 1619920 5714264 -1618240 5715296 1620384 5714776 1620352 5714744 1620256 5714592 -1618240 5715296 1620368 5716792 1620384 5714776 1620352 5714744 -1618888 5717376 1618952 5717376 1619248 5717248 1618240 5715296 -1618176 5715224 1618240 5715296 1619920 5714264 1619864 5714184 -1618240 5715296 1620256 5714592 1619920 5714264 1619864 5714184 -1618176 5715224 1617944 5715264 1618240 5715296 1619864 5714184 -1618176 5715224 1618240 5715296 1619864 5714184 1618152 5715200 -1618240 5715296 1618232 5715400 1618856 5717400 1618888 5717376 -1618240 5715296 1618232 5715400 1618888 5717376 1619248 5717248 -1618232 5715400 1618856 5717400 1618888 5717376 1619248 5717248 -1618240 5715296 1618232 5715400 1619248 5717248 1619280 5717232 -1618240 5715296 1618232 5715400 1619280 5717232 1619296 5717232 -1618240 5715296 1618232 5715400 1619296 5717232 1620368 5716792 -1619296 5717232 1620320 5716856 1620368 5716792 1618232 5715400 -1618240 5715296 1618232 5715400 1620368 5716792 1620384 5714776 -1618232 5715400 1619280 5717232 1619296 5717232 1620368 5716792 -1618232 5715400 1619296 5717232 1620368 5716792 1620384 5714776 -1620368 5716792 1620448 5716728 1620384 5714776 1618232 5715400 -1618232 5715400 1619248 5717248 1619280 5717232 1619296 5717232 -1618232 5715400 1618888 5717376 1619248 5717248 1619280 5717232 -1617944 5715264 1618232 5715400 1618240 5715296 1618176 5715224 -1617944 5715264 1618856 5717400 1618232 5715400 1618176 5715224 -1617944 5715264 1618232 5715400 1618176 5715224 1617976 5715224 -1618856 5717400 1618232 5715400 1617944 5715264 1618824 5717440 -1618232 5715400 1618176 5715224 1617944 5715264 1618824 5717440 -1617944 5715264 1618816 5717464 1618824 5717440 1618232 5715400 -1618240 5715296 1618232 5715400 1620384 5714776 1620352 5714744 -1618232 5715400 1620368 5716792 1620384 5714776 1620352 5714744 -1618240 5715296 1618232 5715400 1620352 5714744 1620256 5714592 -1618240 5715296 1618176 5715224 1618232 5715400 1620352 5714744 -1618232 5715400 1618824 5717440 1618856 5717400 1618888 5717376 -1618888 5717376 1618952 5717376 1619248 5717248 1618232 5715400 -1617944 5715264 1618208 5715448 1618232 5715400 1618176 5715224 -1618232 5715400 1618208 5715448 1618824 5717440 1618856 5717400 -1618208 5715448 1617944 5715264 1618824 5717440 1618856 5717400 -1618824 5717440 1618208 5715448 1617944 5715264 1618816 5717464 -1618208 5715448 1618232 5715400 1617944 5715264 1618816 5717464 -1618824 5717440 1618856 5717400 1618208 5715448 1618816 5717464 -1617944 5715264 1611456 5715680 1618816 5717464 1618208 5715448 -1618232 5715400 1618208 5715448 1618856 5717400 1618888 5717376 -1618232 5715400 1618208 5715448 1618888 5717376 1619248 5717248 -1618232 5715400 1618208 5715448 1619248 5717248 1619280 5717232 -1618208 5715448 1618888 5717376 1619248 5717248 1619280 5717232 -1618232 5715400 1618208 5715448 1619280 5717232 1619296 5717232 -1618232 5715400 1618208 5715448 1619296 5717232 1620368 5716792 -1618208 5715448 1619248 5717248 1619280 5717232 1619296 5717232 -1618208 5715448 1618824 5717440 1618856 5717400 1618888 5717376 -1618208 5715448 1618856 5717400 1618888 5717376 1619248 5717248 -1618232 5715400 1617944 5715264 1618208 5715448 1619296 5717232 -1618888 5717376 1618952 5717376 1619248 5717248 1618208 5715448 -1617944 5715264 1618184 5715464 1618208 5715448 1618232 5715400 -1617944 5715264 1618816 5717464 1618184 5715464 1618232 5715400 -1617944 5715264 1618184 5715464 1618232 5715400 1618176 5715224 -1618184 5715464 1618208 5715448 1618232 5715400 1618176 5715224 -1617944 5715264 1618816 5717464 1618184 5715464 1618176 5715224 -1618184 5715464 1618816 5717464 1618208 5715448 1618232 5715400 -1618232 5715400 1618240 5715296 1618176 5715224 1618184 5715464 -1617944 5715264 1618184 5715464 1618176 5715224 1617976 5715224 -1618816 5717464 1618184 5715464 1617944 5715264 1611456 5715680 -1618208 5715448 1618184 5715464 1618816 5717464 1618824 5717440 -1618184 5715464 1617944 5715264 1618816 5717464 1618824 5717440 -1618208 5715448 1618184 5715464 1618824 5717440 1618856 5717400 -1618208 5715448 1618232 5715400 1618184 5715464 1618856 5717400 -1618208 5715448 1618184 5715464 1618856 5717400 1618888 5717376 -1618184 5715464 1618824 5717440 1618856 5717400 1618888 5717376 -1618208 5715448 1618232 5715400 1618184 5715464 1618888 5717376 -1618184 5715464 1618816 5717464 1618824 5717440 1618856 5717400 -1618208 5715448 1618184 5715464 1618888 5717376 1619248 5717248 -1618208 5715448 1618232 5715400 1618184 5715464 1619248 5717248 -1618208 5715448 1618184 5715464 1619248 5717248 1619280 5717232 -1618184 5715464 1618856 5717400 1618888 5717376 1619248 5717248 -1618888 5717376 1618952 5717376 1619248 5717248 1618184 5715464 -1618184 5715464 1618104 5715440 1618816 5717464 1618824 5717440 -1618184 5715464 1617944 5715264 1618104 5715440 1618824 5717440 -1617944 5715264 1618104 5715440 1618184 5715464 1618176 5715224 -1618104 5715440 1618824 5717440 1618184 5715464 1618176 5715224 -1618104 5715440 1617944 5715264 1618816 5717464 1618824 5717440 -1618184 5715464 1618232 5715400 1618176 5715224 1618104 5715440 -1618184 5715464 1618208 5715448 1618232 5715400 1618104 5715440 -1618184 5715464 1618208 5715448 1618104 5715440 1618824 5717440 -1618176 5715224 1617944 5715264 1618104 5715440 1618232 5715400 -1618232 5715400 1618176 5715224 1618104 5715440 1618208 5715448 -1617944 5715264 1618816 5717464 1618104 5715440 1618176 5715224 -1618232 5715400 1618240 5715296 1618176 5715224 1618104 5715440 -1618176 5715224 1617944 5715264 1618104 5715440 1618240 5715296 -1618232 5715400 1618240 5715296 1618104 5715440 1618208 5715448 -1617944 5715264 1618104 5715440 1618176 5715224 1617976 5715224 -1618104 5715440 1618240 5715296 1618176 5715224 1617976 5715224 -1617944 5715264 1618816 5717464 1618104 5715440 1617976 5715224 -1618176 5715224 1618080 5715184 1617976 5715224 1618104 5715440 -1618176 5715224 1618080 5715184 1618104 5715440 1618240 5715296 -1617976 5715224 1617944 5715264 1618104 5715440 1618080 5715184 -1618816 5717464 1618104 5715440 1617944 5715264 1611456 5715680 -1618176 5715224 1618152 5715200 1618080 5715184 1618104 5715440 -1618184 5715464 1618104 5715440 1618824 5717440 1618856 5717400 -1618104 5715440 1618040 5715424 1618816 5717464 1618824 5717440 -1618104 5715440 1618040 5715424 1618824 5717440 1618184 5715464 -1618104 5715440 1617944 5715264 1618040 5715424 1618824 5717440 -1617944 5715264 1618040 5715424 1618104 5715440 1617976 5715224 -1618040 5715424 1618824 5717440 1618104 5715440 1617976 5715224 -1618040 5715424 1617944 5715264 1618816 5717464 1618824 5717440 -1617944 5715264 1618816 5717464 1618040 5715424 1617976 5715224 -1618104 5715440 1618080 5715184 1617976 5715224 1618040 5715424 -1618104 5715440 1618080 5715184 1618040 5715424 1618824 5717440 -1617976 5715224 1617944 5715264 1618040 5715424 1618080 5715184 -1618104 5715440 1618176 5715224 1618080 5715184 1618040 5715424 -1618104 5715440 1618240 5715296 1618176 5715224 1618040 5715424 -1618104 5715440 1618176 5715224 1618040 5715424 1618824 5717440 -1618080 5715184 1617976 5715224 1618040 5715424 1618176 5715224 -1618816 5717464 1618040 5715424 1617944 5715264 1611456 5715680 -1618816 5717464 1618824 5717440 1618040 5715424 1611456 5715680 -1618040 5715424 1617976 5715224 1617944 5715264 1611456 5715680 -1618816 5717464 1618040 5715424 1611456 5715680 1618832 5717504 -1618176 5715224 1618152 5715200 1618080 5715184 1618040 5715424 -1617944 5715264 1611520 5715576 1611456 5715680 1618040 5715424 -1617944 5715264 1611520 5715576 1618040 5715424 1617976 5715224 -1617944 5715264 1611528 5715552 1611520 5715576 1618040 5715424 -1611456 5715680 1618816 5717464 1618040 5715424 1611520 5715576 -1611520 5715576 1611464 5715656 1611456 5715680 1618040 5715424 -1617944 5715264 1617992 5715384 1618040 5715424 1617976 5715224 -1618040 5715424 1618080 5715184 1617976 5715224 1617992 5715384 -1617992 5715384 1611520 5715576 1618040 5715424 1618080 5715184 -1617976 5715224 1617944 5715264 1617992 5715384 1618080 5715184 -1617944 5715264 1611520 5715576 1617992 5715384 1617976 5715224 -1618040 5715424 1618176 5715224 1618080 5715184 1617992 5715384 -1618080 5715184 1617976 5715224 1617992 5715384 1618176 5715224 -1618040 5715424 1618176 5715224 1617992 5715384 1611520 5715576 -1618040 5715424 1618104 5715440 1618176 5715224 1617992 5715384 -1611520 5715576 1617992 5715384 1617944 5715264 1611528 5715552 -1611520 5715576 1618040 5715424 1617992 5715384 1611528 5715552 -1617992 5715384 1617976 5715224 1617944 5715264 1611528 5715552 -1618176 5715224 1618152 5715200 1618080 5715184 1617992 5715384 -1618040 5715424 1617992 5715384 1611520 5715576 1611456 5715680 -1618040 5715424 1618176 5715224 1617992 5715384 1611456 5715680 -1617992 5715384 1611528 5715552 1611520 5715576 1611456 5715680 -1618040 5715424 1617992 5715384 1611456 5715680 1618816 5717464 -1618040 5715424 1617992 5715384 1618816 5717464 1618824 5717440 -1618040 5715424 1618176 5715224 1617992 5715384 1618816 5717464 -1611456 5715680 1618832 5717504 1618816 5717464 1617992 5715384 -1617992 5715384 1611520 5715576 1611456 5715680 1618816 5717464 -1617944 5715264 1616712 5711552 1611528 5715552 1617992 5715384 -1611520 5715576 1611464 5715656 1611456 5715680 1617992 5715384 -1617944 5715264 1617936 5715312 1617992 5715384 1617976 5715224 -1617992 5715384 1617936 5715312 1611528 5715552 1611520 5715576 -1617992 5715384 1617936 5715312 1611520 5715576 1611456 5715680 -1617992 5715384 1617944 5715264 1617936 5715312 1611456 5715680 -1617936 5715312 1617944 5715264 1611528 5715552 1611520 5715576 -1617936 5715312 1611528 5715552 1611520 5715576 1611456 5715680 -1617992 5715384 1617936 5715312 1611456 5715680 1618816 5717464 -1611528 5715552 1617936 5715312 1617944 5715264 1616712 5711552 -1611520 5715576 1611464 5715656 1611456 5715680 1617936 5715312 -1623576 5701960 1623224 5702088 1622880 5702712 1623064 5702776 -1623576 5701960 1623224 5702088 1623064 5702776 1623840 5702400 -1623064 5702776 1623448 5702888 1623840 5702400 1623224 5702088 -1623840 5702400 1623576 5701960 1623224 5702088 1623448 5702888 -1623448 5702888 1623616 5702904 1623840 5702400 1623224 5702088 -1623224 5702088 1623408 5701720 1622880 5702712 1623064 5702776 -1623224 5702088 1622880 5702712 1623064 5702776 1623448 5702888 -1622880 5702712 1623224 5702088 1623408 5701720 1622632 5702592 -1622880 5702712 1623064 5702776 1623224 5702088 1622632 5702592 -1623408 5701720 1623192 5701576 1622632 5702592 1623224 5702088 -1623408 5701720 1623296 5701624 1623192 5701576 1623224 5702088 -1623192 5701576 1622632 5702592 1623224 5702088 1623296 5701624 -1622632 5702592 1622880 5702712 1623224 5702088 1623192 5701576 -1623224 5702088 1623576 5701960 1623408 5701720 1623296 5701624 -1623576 5701960 1623408 5701720 1623224 5702088 1623840 5702400 -1623192 5701576 1622880 5701536 1622632 5702592 1623224 5702088 -1623192 5701576 1623016 5701528 1622880 5701536 1623224 5702088 -1623192 5701576 1623016 5701528 1623224 5702088 1623296 5701624 -1622632 5702592 1622880 5702712 1623224 5702088 1622880 5701536 -1622880 5701536 1622664 5701568 1622632 5702592 1623224 5702088 -1622632 5702592 1622880 5702712 1623224 5702088 1622664 5701568 -1622664 5701568 1622256 5702336 1622632 5702592 1623224 5702088 -1622880 5701536 1622664 5701568 1623224 5702088 1623016 5701528 -1623448 5702888 1623400 5702376 1623224 5702088 1623064 5702776 -1623224 5702088 1623400 5702376 1623840 5702400 1623576 5701960 -1623840 5702400 1623400 5702376 1623448 5702888 1623616 5702904 -1623840 5702400 1623400 5702376 1623616 5702904 1623720 5702872 -1623400 5702376 1623448 5702888 1623616 5702904 1623720 5702872 -1623400 5702376 1623720 5702872 1623840 5702400 1623576 5701960 -1623448 5702888 1623616 5702904 1623400 5702376 1623064 5702776 -1623224 5702088 1622880 5702712 1623064 5702776 1623400 5702376 -1623064 5702776 1623448 5702888 1623400 5702376 1622880 5702712 -1623224 5702088 1622632 5702592 1622880 5702712 1623400 5702376 -1623840 5702400 1623400 5702376 1623720 5702872 1623848 5702776 -1623224 5702088 1623400 5702376 1623576 5701960 1623408 5701720 -1623400 5702376 1623576 5701960 1623224 5702088 1622880 5702712 -1623400 5702376 1623424 5702448 1623616 5702904 1623720 5702872 -1623400 5702376 1623424 5702448 1623720 5702872 1623840 5702400 -1623424 5702448 1623616 5702904 1623720 5702872 1623840 5702400 -1623400 5702376 1623424 5702448 1623840 5702400 1623576 5701960 -1623400 5702376 1623448 5702888 1623424 5702448 1623840 5702400 -1623448 5702888 1623424 5702448 1623400 5702376 1623064 5702776 -1623400 5702376 1622880 5702712 1623064 5702776 1623424 5702448 -1623424 5702448 1623840 5702400 1623400 5702376 1623064 5702776 -1623448 5702888 1623616 5702904 1623424 5702448 1623064 5702776 -1623424 5702448 1623448 5702888 1623616 5702904 1623720 5702872 -1623720 5702872 1623848 5702776 1623840 5702400 1623424 5702448 -1623720 5702872 1623848 5702776 1623424 5702448 1623616 5702904 -1623840 5702400 1623400 5702376 1623424 5702448 1623848 5702776 -1623720 5702872 1623816 5702824 1623848 5702776 1623424 5702448 -1623848 5702776 1623944 5702640 1623840 5702400 1623424 5702448 -1623424 5702448 1623408 5702512 1623448 5702888 1623616 5702904 -1623424 5702448 1623064 5702776 1623408 5702512 1623616 5702904 -1623408 5702512 1623064 5702776 1623448 5702888 1623616 5702904 -1623064 5702776 1623408 5702512 1623424 5702448 1623400 5702376 -1623064 5702776 1623408 5702512 1623400 5702376 1622880 5702712 -1623408 5702512 1623616 5702904 1623424 5702448 1623400 5702376 -1623424 5702448 1623408 5702512 1623616 5702904 1623720 5702872 -1623424 5702448 1623408 5702512 1623720 5702872 1623848 5702776 -1623720 5702872 1623816 5702824 1623848 5702776 1623408 5702512 -1623424 5702448 1623400 5702376 1623408 5702512 1623848 5702776 -1623408 5702512 1623448 5702888 1623616 5702904 1623720 5702872 -1623424 5702448 1623408 5702512 1623848 5702776 1623840 5702400 -1623408 5702512 1623720 5702872 1623848 5702776 1623840 5702400 -1623424 5702448 1623408 5702512 1623840 5702400 1623400 5702376 -1623424 5702448 1623400 5702376 1623408 5702512 1623840 5702400 -1623848 5702776 1623944 5702640 1623840 5702400 1623408 5702512 -1623408 5702512 1623616 5702904 1623720 5702872 1623848 5702776 -1623064 5702776 1623448 5702888 1623408 5702512 1623400 5702376 -1623064 5702776 1623352 5702544 1623400 5702376 1622880 5702712 -1623400 5702376 1623352 5702544 1623408 5702512 1623424 5702448 -1623400 5702376 1623224 5702088 1622880 5702712 1623352 5702544 -1622880 5702712 1623064 5702776 1623352 5702544 1623224 5702088 -1623224 5702088 1622632 5702592 1622880 5702712 1623352 5702544 -1623408 5702512 1623352 5702544 1623064 5702776 1623448 5702888 -1623408 5702512 1623352 5702544 1623448 5702888 1623616 5702904 -1623064 5702776 1623448 5702888 1623352 5702544 1622880 5702712 -1623352 5702544 1623424 5702448 1623400 5702376 1623224 5702088 -1623352 5702544 1623448 5702888 1623408 5702512 1623424 5702448 -1623352 5702544 1623256 5702568 1622880 5702712 1623064 5702776 -1622880 5702712 1623256 5702568 1623224 5702088 1622632 5702592 -1623224 5702088 1623256 5702568 1623352 5702544 1623400 5702376 -1623224 5702088 1622880 5702712 1623256 5702568 1623400 5702376 -1623352 5702544 1623256 5702568 1623064 5702776 1623448 5702888 -1623256 5702568 1622880 5702712 1623064 5702776 1623448 5702888 -1623352 5702544 1623256 5702568 1623448 5702888 1623408 5702512 -1623352 5702544 1623400 5702376 1623256 5702568 1623448 5702888 -1623352 5702544 1623424 5702448 1623400 5702376 1623256 5702568 -1623256 5702568 1623224 5702088 1622880 5702712 1623064 5702776 -1622880 5702712 1623104 5702536 1623224 5702088 1622632 5702592 -1623224 5702088 1623104 5702536 1623256 5702568 1623400 5702376 -1623256 5702568 1623352 5702544 1623400 5702376 1623104 5702536 -1623104 5702536 1622880 5702712 1623256 5702568 1623400 5702376 -1622880 5702712 1623256 5702568 1623104 5702536 1622632 5702592 -1623104 5702536 1623400 5702376 1623224 5702088 1622632 5702592 -1623224 5702088 1622664 5701568 1622632 5702592 1623104 5702536 -1623256 5702568 1623104 5702536 1622880 5702712 1623064 5702776 -1623256 5702568 1623104 5702536 1623064 5702776 1623448 5702888 -1623256 5702568 1623400 5702376 1623104 5702536 1623064 5702776 -1623104 5702536 1622632 5702592 1622880 5702712 1623064 5702776 -1623104 5702536 1623000 5702536 1622632 5702592 1622880 5702712 -1623104 5702536 1623000 5702536 1622880 5702712 1623064 5702776 -1623000 5702536 1622632 5702592 1622880 5702712 1623064 5702776 -1623104 5702536 1623224 5702088 1623000 5702536 1623064 5702776 -1623224 5702088 1623000 5702536 1623104 5702536 1623400 5702376 -1623000 5702536 1623224 5702088 1622632 5702592 1622880 5702712 -1622632 5702592 1623000 5702536 1623224 5702088 1622664 5701568 -1623104 5702536 1623000 5702536 1623064 5702776 1623256 5702568 -1623000 5702536 1622856 5702512 1622632 5702592 1622880 5702712 -1623000 5702536 1622856 5702512 1622880 5702712 1623064 5702776 -1623000 5702536 1623224 5702088 1622856 5702512 1622880 5702712 -1623224 5702088 1622856 5702512 1623000 5702536 1623104 5702536 -1622856 5702512 1623224 5702088 1622632 5702592 1622880 5702712 -1622632 5702592 1622856 5702512 1623224 5702088 1622664 5701568 -1622632 5702592 1622880 5702712 1622856 5702512 1622664 5701568 -1622856 5702512 1623000 5702536 1623224 5702088 1622664 5701568 -1623224 5702088 1622880 5701536 1622664 5701568 1622856 5702512 -1622632 5702592 1622856 5702512 1622664 5701568 1622256 5702336 -1622632 5702592 1622880 5702712 1622856 5702512 1622256 5702336 -1622856 5702512 1623224 5702088 1622664 5701568 1622256 5702336 -1622664 5701568 1622440 5701576 1622256 5702336 1622856 5702512 -1622664 5701568 1622728 5702456 1622856 5702512 1623224 5702088 -1622728 5702456 1622256 5702336 1622856 5702512 1623224 5702088 -1622856 5702512 1623000 5702536 1623224 5702088 1622728 5702456 -1622664 5701568 1622728 5702456 1623224 5702088 1622880 5701536 -1622856 5702512 1622728 5702456 1622256 5702336 1622632 5702592 -1622856 5702512 1622728 5702456 1622632 5702592 1622880 5702712 -1622856 5702512 1623224 5702088 1622728 5702456 1622632 5702592 -1622728 5702456 1622664 5701568 1622256 5702336 1622632 5702592 -1622256 5702336 1622728 5702456 1622664 5701568 1622440 5701576 -1622664 5701568 1622256 5702336 1622728 5702456 1623224 5702088 -1622728 5702456 1622464 5702200 1622256 5702336 1622632 5702592 -1622728 5702456 1622664 5701568 1622464 5702200 1622632 5702592 -1622728 5702456 1622464 5702200 1622632 5702592 1622856 5702512 -1622256 5702336 1622464 5702200 1622664 5701568 1622440 5701576 -1622256 5702336 1622464 5702200 1622440 5701576 1622216 5701544 -1622256 5702336 1622464 5702200 1622216 5701544 1621936 5702248 -1622464 5702200 1622664 5701568 1622440 5701576 1622216 5701544 -1622256 5702336 1622464 5702200 1621936 5702248 1621952 5702272 -1622464 5702200 1622440 5701576 1622216 5701544 1621936 5702248 -1622216 5701544 1621848 5702168 1621936 5702248 1622464 5702200 -1622664 5701568 1622464 5702200 1622728 5702456 1623224 5702088 -1622464 5702200 1622632 5702592 1622728 5702456 1623224 5702088 -1622728 5702456 1622856 5702512 1623224 5702088 1622464 5702200 -1622664 5701568 1622464 5702200 1623224 5702088 1622880 5701536 -1622464 5702200 1621936 5702248 1622256 5702336 1622632 5702592 -1622464 5702200 1623224 5702088 1622664 5701568 1622440 5701576 -1622464 5702200 1622240 5702048 1621936 5702248 1622256 5702336 -1621936 5702248 1621952 5702272 1622256 5702336 1622240 5702048 -1622256 5702336 1622464 5702200 1622240 5702048 1621952 5702272 -1622216 5701544 1622240 5702048 1622464 5702200 1622440 5701576 -1622464 5702200 1622664 5701568 1622440 5701576 1622240 5702048 -1621936 5702248 1622240 5702048 1622216 5701544 1621848 5702168 -1621936 5702248 1622240 5702048 1621848 5702168 1621880 5702208 -1622240 5702048 1622216 5701544 1621848 5702168 1621880 5702208 -1622216 5701544 1621752 5702000 1621848 5702168 1622240 5702048 -1622216 5701544 1621816 5701384 1621752 5702000 1622240 5702048 -1621848 5702168 1621880 5702208 1622240 5702048 1621752 5702000 -1622464 5702200 1622240 5702048 1622256 5702336 1622632 5702592 -1622464 5702200 1622440 5701576 1622240 5702048 1622256 5702336 -1622240 5702048 1621880 5702208 1621936 5702248 1621952 5702272 -1622216 5701544 1621752 5702000 1622240 5702048 1622440 5701576 -1621752 5702000 1622120 5701944 1622216 5701544 1621816 5701384 -1621752 5702000 1622120 5701944 1621816 5701384 1621448 5701528 -1622240 5702048 1622120 5701944 1621752 5702000 1621848 5702168 -1622240 5702048 1622120 5701944 1621848 5702168 1621880 5702208 -1622240 5702048 1622120 5701944 1621880 5702208 1621936 5702248 -1622120 5701944 1621848 5702168 1621880 5702208 1621936 5702248 -1622120 5701944 1621752 5702000 1621848 5702168 1621880 5702208 -1622240 5702048 1622120 5701944 1621936 5702248 1621952 5702272 -1622240 5702048 1622216 5701544 1622120 5701944 1621936 5702248 -1622216 5701544 1622120 5701944 1622240 5702048 1622440 5701576 -1622240 5702048 1622464 5702200 1622440 5701576 1622120 5701944 -1622120 5701944 1621936 5702248 1622240 5702048 1622440 5701576 -1621752 5702000 1621848 5702168 1622120 5701944 1621816 5701384 -1622120 5701944 1622440 5701576 1622216 5701544 1621816 5701384 -1622120 5701944 1622096 5701880 1621816 5701384 1621752 5702000 -1621816 5701384 1621448 5701528 1621752 5702000 1622096 5701880 -1622096 5701880 1622216 5701544 1621816 5701384 1621752 5702000 -1622120 5701944 1622096 5701880 1621752 5702000 1621848 5702168 -1622120 5701944 1622216 5701544 1622096 5701880 1621752 5702000 -1622216 5701544 1622096 5701880 1622120 5701944 1622440 5701576 -1622216 5701544 1621816 5701384 1622096 5701880 1622440 5701576 -1622120 5701944 1622240 5702048 1622440 5701576 1622096 5701880 -1622240 5702048 1622464 5702200 1622440 5701576 1622096 5701880 -1622096 5701880 1621752 5702000 1622120 5701944 1622240 5702048 -1622440 5701576 1622216 5701544 1622096 5701880 1622240 5702048 -1622096 5701880 1622112 5701736 1621816 5701384 1621752 5702000 -1621816 5701384 1621448 5701528 1621752 5702000 1622112 5701736 -1622096 5701880 1622112 5701736 1621752 5702000 1622120 5701944 -1622112 5701736 1622216 5701544 1621816 5701384 1621752 5702000 -1622096 5701880 1622216 5701544 1622112 5701736 1621752 5702000 -1622216 5701544 1622112 5701736 1622096 5701880 1622440 5701576 -1622216 5701544 1621816 5701384 1622112 5701736 1622440 5701576 -1622112 5701736 1621752 5702000 1622096 5701880 1622440 5701576 -1622096 5701880 1622240 5702048 1622440 5701576 1622112 5701736 -1622240 5702048 1622464 5702200 1622440 5701576 1622112 5701736 -1622096 5701880 1622240 5702048 1622112 5701736 1621752 5702000 -1622440 5701576 1622216 5701544 1622112 5701736 1622240 5702048 -1622096 5701880 1622120 5701944 1622240 5702048 1622112 5701736 -1622096 5701880 1622120 5701944 1622112 5701736 1621752 5702000 -1622240 5702048 1622440 5701576 1622112 5701736 1622120 5701944 -1622112 5701736 1622208 5701672 1622216 5701544 1621816 5701384 -1622440 5701576 1622208 5701672 1622112 5701736 1622240 5702048 -1622208 5701672 1622216 5701544 1622112 5701736 1622240 5702048 -1622440 5701576 1622216 5701544 1622208 5701672 1622240 5702048 -1622440 5701576 1622208 5701672 1622240 5702048 1622464 5702200 -1622112 5701736 1622120 5701944 1622240 5702048 1622208 5701672 -1622112 5701736 1622120 5701944 1622208 5701672 1622216 5701544 -1622240 5702048 1622440 5701576 1622208 5701672 1622120 5701944 -1622112 5701736 1622096 5701880 1622120 5701944 1622208 5701672 -1622112 5701736 1622096 5701880 1622208 5701672 1622216 5701544 -1622120 5701944 1622240 5702048 1622208 5701672 1622096 5701880 -1622208 5701672 1622320 5701688 1622440 5701576 1622216 5701544 -1622208 5701672 1622320 5701688 1622216 5701544 1622112 5701736 -1622208 5701672 1622240 5702048 1622320 5701688 1622216 5701544 -1622320 5701688 1622240 5702048 1622440 5701576 1622216 5701544 -1622440 5701576 1622320 5701688 1622240 5702048 1622464 5702200 -1622440 5701576 1622216 5701544 1622320 5701688 1622464 5702200 -1622320 5701688 1622208 5701672 1622240 5702048 1622464 5702200 -1622440 5701576 1622320 5701688 1622464 5702200 1622664 5701568 -1622440 5701576 1622216 5701544 1622320 5701688 1622664 5701568 -1622320 5701688 1622240 5702048 1622464 5702200 1622664 5701568 -1622240 5702048 1622320 5701688 1622208 5701672 1622120 5701944 -1622320 5701688 1622216 5701544 1622208 5701672 1622120 5701944 -1622240 5702048 1622464 5702200 1622320 5701688 1622120 5701944 -1622464 5702200 1623224 5702088 1622664 5701568 1622320 5701688 -1622208 5701672 1622096 5701880 1622120 5701944 1622320 5701688 -1622208 5701672 1622096 5701880 1622320 5701688 1622216 5701544 -1622120 5701944 1622240 5702048 1622320 5701688 1622096 5701880 -1622208 5701672 1622112 5701736 1622096 5701880 1622320 5701688 -1622320 5701688 1622488 5701744 1622664 5701568 1622440 5701576 -1622320 5701688 1622488 5701744 1622440 5701576 1622216 5701544 -1622320 5701688 1622464 5702200 1622488 5701744 1622440 5701576 -1622488 5701744 1622464 5702200 1622664 5701568 1622440 5701576 -1622464 5702200 1622488 5701744 1622320 5701688 1622240 5702048 -1622488 5701744 1622440 5701576 1622320 5701688 1622240 5702048 -1622320 5701688 1622120 5701944 1622240 5702048 1622488 5701744 -1622464 5702200 1622664 5701568 1622488 5701744 1622240 5702048 -1622664 5701568 1622488 5701744 1622464 5702200 1623224 5702088 -1622664 5701568 1622440 5701576 1622488 5701744 1623224 5702088 -1622488 5701744 1622240 5702048 1622464 5702200 1623224 5702088 -1622664 5701568 1622488 5701744 1623224 5702088 1622880 5701536 -1622664 5701568 1622440 5701576 1622488 5701744 1622880 5701536 -1622464 5702200 1622728 5702456 1623224 5702088 1622488 5701744 -1622488 5701744 1622464 5702200 1623224 5702088 1622880 5701536 -1623224 5702088 1623016 5701528 1622880 5701536 1622488 5701744 -1622488 5701744 1622624 5701752 1622880 5701536 1622664 5701568 -1622488 5701744 1622624 5701752 1622664 5701568 1622440 5701576 -1622488 5701744 1623224 5702088 1622624 5701752 1622664 5701568 -1622624 5701752 1623224 5702088 1622880 5701536 1622664 5701568 -1623224 5702088 1622624 5701752 1622488 5701744 1622464 5702200 -1622624 5701752 1622664 5701568 1622488 5701744 1622464 5702200 -1622488 5701744 1622240 5702048 1622464 5702200 1622624 5701752 -1623224 5702088 1622624 5701752 1622464 5702200 1622728 5702456 -1622880 5701536 1622624 5701752 1623224 5702088 1623016 5701528 -1623224 5702088 1622880 5701536 1622624 5701752 1622464 5702200 -1622624 5701752 1622648 5701760 1622880 5701536 1622664 5701568 -1622624 5701752 1622648 5701760 1622664 5701568 1622488 5701744 -1622880 5701536 1622648 5701760 1623224 5702088 1623016 5701528 -1623224 5702088 1623192 5701576 1623016 5701528 1622648 5701760 -1622624 5701752 1623224 5702088 1622648 5701760 1622664 5701568 -1623224 5702088 1622648 5701760 1622624 5701752 1622464 5702200 -1623224 5702088 1622648 5701760 1622464 5702200 1622728 5702456 -1623224 5702088 1622648 5701760 1622728 5702456 1622856 5702512 -1622624 5701752 1622488 5701744 1622464 5702200 1622648 5701760 -1622648 5701760 1622664 5701568 1622624 5701752 1622464 5702200 -1622648 5701760 1622624 5701752 1622464 5702200 1622728 5702456 -1622648 5701760 1623016 5701528 1622880 5701536 1622664 5701568 -1622648 5701760 1622728 5702456 1623224 5702088 1623016 5701528 -1623016 5701528 1622848 5701744 1623224 5702088 1623192 5701576 -1623224 5702088 1623296 5701624 1623192 5701576 1622848 5701744 -1622848 5701744 1622648 5701760 1623224 5702088 1623192 5701576 -1622648 5701760 1622848 5701744 1623016 5701528 1622880 5701536 -1622648 5701760 1622848 5701744 1622880 5701536 1622664 5701568 -1622848 5701744 1623016 5701528 1622880 5701536 1622664 5701568 -1622648 5701760 1622848 5701744 1622664 5701568 1622624 5701752 -1623224 5702088 1622848 5701744 1622648 5701760 1622728 5702456 -1623224 5702088 1622848 5701744 1622728 5702456 1622856 5702512 -1623224 5702088 1623192 5701576 1622848 5701744 1622728 5702456 -1622648 5701760 1622464 5702200 1622728 5702456 1622848 5701744 -1622648 5701760 1622624 5701752 1622464 5702200 1622848 5701744 -1622728 5702456 1623224 5702088 1622848 5701744 1622464 5702200 -1622648 5701760 1622464 5702200 1622848 5701744 1622664 5701568 -1623016 5701528 1622880 5701536 1622848 5701744 1623192 5701576 -1622848 5701744 1622944 5701760 1623192 5701576 1623016 5701528 -1623192 5701576 1622944 5701760 1623224 5702088 1623296 5701624 -1623224 5702088 1623408 5701720 1623296 5701624 1622944 5701760 -1623224 5702088 1622944 5701760 1622848 5701744 1622728 5702456 -1623224 5702088 1622944 5701760 1622728 5702456 1622856 5702512 -1622944 5701760 1623296 5701624 1623192 5701576 1623016 5701528 -1622944 5701760 1622728 5702456 1623224 5702088 1623296 5701624 -1622848 5701744 1622464 5702200 1622728 5702456 1622944 5701760 -1622848 5701744 1622944 5701760 1623016 5701528 1622880 5701536 -1622944 5701760 1623192 5701576 1623016 5701528 1622880 5701536 -1622848 5701744 1622944 5701760 1622880 5701536 1622664 5701568 -1622848 5701744 1622728 5702456 1622944 5701760 1622880 5701536 -1623296 5701624 1623024 5701816 1623224 5702088 1623408 5701720 -1622944 5701760 1623024 5701816 1623296 5701624 1623192 5701576 -1623224 5702088 1623576 5701960 1623408 5701720 1623024 5701816 -1622944 5701760 1623024 5701816 1623192 5701576 1623016 5701528 -1622944 5701760 1623024 5701816 1623016 5701528 1622880 5701536 -1623024 5701816 1623296 5701624 1623192 5701576 1623016 5701528 -1622944 5701760 1623224 5702088 1623024 5701816 1623016 5701528 -1623224 5702088 1623024 5701816 1622944 5701760 1622728 5702456 -1623224 5702088 1623024 5701816 1622728 5702456 1622856 5702512 -1622944 5701760 1622848 5701744 1622728 5702456 1623024 5701816 -1623024 5701816 1623016 5701528 1622944 5701760 1622848 5701744 -1622728 5702456 1623224 5702088 1623024 5701816 1622848 5701744 -1623296 5701624 1623192 5701576 1623024 5701816 1623408 5701720 -1623024 5701816 1622728 5702456 1623224 5702088 1623408 5701720 -1622848 5701744 1622464 5702200 1622728 5702456 1623024 5701816 -1622848 5701744 1622464 5702200 1623024 5701816 1622944 5701760 -1622728 5702456 1623224 5702088 1623024 5701816 1622464 5702200 -1622848 5701744 1622648 5701760 1622464 5702200 1623024 5701816 -1623024 5701816 1623096 5701888 1623408 5701720 1623296 5701624 -1623408 5701720 1623096 5701888 1623224 5702088 1623576 5701960 -1623024 5701816 1623096 5701888 1623296 5701624 1623192 5701576 -1623096 5701888 1623408 5701720 1623296 5701624 1623192 5701576 -1623024 5701816 1623096 5701888 1623192 5701576 1623016 5701528 -1623024 5701816 1623224 5702088 1623096 5701888 1623192 5701576 -1623224 5702088 1623096 5701888 1623024 5701816 1622728 5702456 -1623224 5702088 1623408 5701720 1623096 5701888 1622728 5702456 -1623224 5702088 1623096 5701888 1622728 5702456 1622856 5702512 -1623024 5701816 1622464 5702200 1622728 5702456 1623096 5701888 -1623096 5701888 1623192 5701576 1623024 5701816 1622464 5702200 -1622728 5702456 1623224 5702088 1623096 5701888 1622464 5702200 -1623096 5701888 1623224 5702088 1623408 5701720 1623296 5701624 -1623024 5701816 1622848 5701744 1622464 5702200 1623096 5701888 -1622848 5701744 1622632 5702000 1622464 5702200 1623024 5701816 -1622848 5701744 1622648 5701760 1622632 5702000 1623024 5701816 -1622848 5701744 1622632 5702000 1623024 5701816 1622944 5701760 -1622632 5702000 1622648 5701760 1622464 5702200 1623024 5701816 -1622464 5702200 1622632 5702000 1622648 5701760 1622624 5701752 -1622632 5702000 1622848 5701744 1622648 5701760 1622624 5701752 -1622464 5702200 1623024 5701816 1622632 5702000 1622624 5701752 -1622464 5702200 1622632 5702000 1622624 5701752 1622488 5701744 -1622464 5702200 1623024 5701816 1622632 5702000 1622488 5701744 -1622464 5702200 1622632 5702000 1622488 5701744 1622240 5702048 -1622464 5702200 1623024 5701816 1622632 5702000 1622240 5702048 -1622488 5701744 1622320 5701688 1622240 5702048 1622632 5702000 -1622632 5702000 1622624 5701752 1622488 5701744 1622240 5702048 -1622632 5702000 1622648 5701760 1622624 5701752 1622488 5701744 -1622464 5702200 1623096 5701888 1623024 5701816 1622632 5702000 -1622464 5702200 1622728 5702456 1623096 5701888 1622632 5702000 -1622728 5702456 1623224 5702088 1623096 5701888 1622632 5702000 -1622728 5702456 1622856 5702512 1623224 5702088 1622632 5702000 -1622728 5702456 1623224 5702088 1622632 5702000 1622464 5702200 -1622464 5702200 1622728 5702456 1622632 5702000 1622240 5702048 -1623024 5701816 1622848 5701744 1622632 5702000 1623096 5701888 -1623096 5701888 1623024 5701816 1622632 5702000 1623224 5702088 -1622632 5702000 1622656 5701976 1622848 5701744 1622648 5701760 -1622632 5702000 1622656 5701976 1622648 5701760 1622624 5701752 -1622632 5702000 1623024 5701816 1622656 5701976 1622624 5701752 -1622656 5701976 1622848 5701744 1622648 5701760 1622624 5701752 -1622656 5701976 1623024 5701816 1622848 5701744 1622648 5701760 -1622848 5701744 1622656 5701976 1623024 5701816 1622944 5701760 -1622656 5701976 1622632 5702000 1623024 5701816 1622944 5701760 -1622848 5701744 1622648 5701760 1622656 5701976 1622944 5701760 -1623024 5701816 1622656 5701976 1622632 5702000 1623096 5701888 -1622656 5701976 1622624 5701752 1622632 5702000 1623096 5701888 -1623024 5701816 1622944 5701760 1622656 5701976 1623096 5701888 -1622632 5702000 1622656 5701976 1622624 5701752 1622488 5701744 -1622656 5701976 1622648 5701760 1622624 5701752 1622488 5701744 -1622632 5702000 1623096 5701888 1622656 5701976 1622488 5701744 -1622632 5702000 1622656 5701976 1622488 5701744 1622240 5702048 -1622632 5702000 1623224 5702088 1623096 5701888 1622656 5701976 -1622632 5702000 1623224 5702088 1622656 5701976 1622488 5701744 -1622632 5702000 1622728 5702456 1623224 5702088 1622656 5701976 -1622632 5702000 1622728 5702456 1622656 5701976 1622488 5701744 -1622728 5702456 1622856 5702512 1623224 5702088 1622656 5701976 -1622632 5702000 1622464 5702200 1622728 5702456 1622656 5701976 -1623096 5701888 1623024 5701816 1622656 5701976 1623224 5702088 -1623224 5702088 1623096 5701888 1622656 5701976 1622728 5702456 -1623024 5701816 1622704 5701944 1622656 5701976 1623096 5701888 -1622704 5701944 1622944 5701760 1622656 5701976 1623096 5701888 -1623024 5701816 1622944 5701760 1622704 5701944 1623096 5701888 -1622656 5701976 1622704 5701944 1622944 5701760 1622848 5701744 -1622656 5701976 1623096 5701888 1622704 5701944 1622848 5701744 -1622704 5701944 1623024 5701816 1622944 5701760 1622848 5701744 -1622656 5701976 1622704 5701944 1622848 5701744 1622648 5701760 -1622656 5701976 1622704 5701944 1622648 5701760 1622624 5701752 -1622656 5701976 1623096 5701888 1622704 5701944 1622648 5701760 -1622704 5701944 1622944 5701760 1622848 5701744 1622648 5701760 -1622656 5701976 1623224 5702088 1623096 5701888 1622704 5701944 -1622656 5701976 1623224 5702088 1622704 5701944 1622648 5701760 -1623096 5701888 1623024 5701816 1622704 5701944 1623224 5702088 -1622656 5701976 1622728 5702456 1623224 5702088 1622704 5701944 -1622656 5701976 1622728 5702456 1622704 5701944 1622648 5701760 -1622728 5702456 1622856 5702512 1623224 5702088 1622704 5701944 -1622656 5701976 1622632 5702000 1622728 5702456 1622704 5701944 -1622656 5701976 1622632 5702000 1622704 5701944 1622648 5701760 -1622632 5702000 1622464 5702200 1622728 5702456 1622704 5701944 -1623224 5702088 1623096 5701888 1622704 5701944 1622728 5702456 -1622728 5702456 1623224 5702088 1622704 5701944 1622632 5702000 -1623096 5701888 1622784 5701928 1622704 5701944 1623224 5702088 -1622784 5701928 1623024 5701816 1622704 5701944 1623224 5702088 -1622704 5701944 1622784 5701928 1623024 5701816 1622944 5701760 -1622704 5701944 1622784 5701928 1622944 5701760 1622848 5701744 -1622704 5701944 1623224 5702088 1622784 5701928 1622848 5701744 -1622784 5701928 1623024 5701816 1622944 5701760 1622848 5701744 -1622784 5701928 1623096 5701888 1623024 5701816 1622944 5701760 -1623096 5701888 1623024 5701816 1622784 5701928 1623224 5702088 -1622704 5701944 1622784 5701928 1622848 5701744 1622648 5701760 -1622784 5701928 1622944 5701760 1622848 5701744 1622648 5701760 -1622704 5701944 1622784 5701928 1622648 5701760 1622656 5701976 -1622704 5701944 1623224 5702088 1622784 5701928 1622648 5701760 -1622704 5701944 1622728 5702456 1623224 5702088 1622784 5701928 -1623224 5702088 1623096 5701888 1622784 5701928 1622728 5702456 -1622728 5702456 1622856 5702512 1623224 5702088 1622784 5701928 -1622856 5702512 1623000 5702536 1623224 5702088 1622784 5701928 -1623224 5702088 1623096 5701888 1622784 5701928 1622856 5702512 -1622704 5701944 1622728 5702456 1622784 5701928 1622648 5701760 -1622728 5702456 1622856 5702512 1622784 5701928 1622704 5701944 -1622704 5701944 1622632 5702000 1622728 5702456 1622784 5701928 -1622704 5701944 1622632 5702000 1622784 5701928 1622648 5701760 -1622632 5702000 1622464 5702200 1622728 5702456 1622784 5701928 -1622704 5701944 1622656 5701976 1622632 5702000 1622784 5701928 -1622704 5701944 1622656 5701976 1622784 5701928 1622648 5701760 -1622728 5702456 1622856 5702512 1622784 5701928 1622632 5702000 -1622632 5702000 1622728 5702456 1622784 5701928 1622656 5701976 -1623224 5702088 1622824 5701928 1622784 5701928 1622856 5702512 -1623224 5702088 1622824 5701928 1622856 5702512 1623000 5702536 -1622784 5701928 1622728 5702456 1622856 5702512 1622824 5701928 -1622856 5702512 1623224 5702088 1622824 5701928 1622728 5702456 -1622824 5701928 1623096 5701888 1622784 5701928 1622728 5702456 -1622784 5701928 1622824 5701928 1623096 5701888 1623024 5701816 -1622784 5701928 1622824 5701928 1623024 5701816 1622944 5701760 -1622784 5701928 1622824 5701928 1622944 5701760 1622848 5701744 -1622784 5701928 1622824 5701928 1622848 5701744 1622648 5701760 -1622824 5701928 1623024 5701816 1622944 5701760 1622848 5701744 -1622784 5701928 1622728 5702456 1622824 5701928 1622848 5701744 -1622824 5701928 1623096 5701888 1623024 5701816 1622944 5701760 -1622824 5701928 1623224 5702088 1623096 5701888 1623024 5701816 -1623224 5702088 1623096 5701888 1622824 5701928 1622856 5702512 -1622784 5701928 1622632 5702000 1622728 5702456 1622824 5701928 -1622728 5702456 1622856 5702512 1622824 5701928 1622632 5702000 -1622784 5701928 1622632 5702000 1622824 5701928 1622848 5701744 -1622632 5702000 1622464 5702200 1622728 5702456 1622824 5701928 -1622784 5701928 1622656 5701976 1622632 5702000 1622824 5701928 -1623224 5702088 1622872 5701952 1622856 5702512 1623000 5702536 -1622856 5702512 1622872 5701952 1622824 5701928 1622728 5702456 -1622824 5701928 1622632 5702000 1622728 5702456 1622872 5701952 -1622728 5702456 1622856 5702512 1622872 5701952 1622632 5702000 -1622872 5701952 1623224 5702088 1622824 5701928 1622632 5702000 -1622824 5701928 1622872 5701952 1623224 5702088 1623096 5701888 -1622824 5701928 1622872 5701952 1623096 5701888 1623024 5701816 -1622824 5701928 1622872 5701952 1623024 5701816 1622944 5701760 -1622824 5701928 1622872 5701952 1622944 5701760 1622848 5701744 -1622872 5701952 1623096 5701888 1623024 5701816 1622944 5701760 -1622824 5701928 1622632 5702000 1622872 5701952 1622944 5701760 -1622872 5701952 1623224 5702088 1623096 5701888 1623024 5701816 -1622872 5701952 1622856 5702512 1623224 5702088 1623096 5701888 -1622856 5702512 1623224 5702088 1622872 5701952 1622728 5702456 -1622632 5702000 1622464 5702200 1622728 5702456 1622872 5701952 -1622824 5701928 1622784 5701928 1622632 5702000 1622872 5701952 -1622632 5702000 1622728 5702456 1622872 5701952 1622784 5701928 -1622824 5701928 1622784 5701928 1622872 5701952 1622944 5701760 -1622784 5701928 1622656 5701976 1622632 5702000 1622872 5701952 -1622632 5702000 1622728 5702456 1622872 5701952 1622656 5701976 -1622784 5701928 1622704 5701944 1622656 5701976 1622872 5701952 -1622784 5701928 1622656 5701976 1622872 5701952 1622824 5701928 -1623224 5702088 1622912 5701984 1622856 5702512 1623000 5702536 -1623224 5702088 1622872 5701952 1622912 5701984 1623000 5702536 -1622912 5701984 1622872 5701952 1622856 5702512 1623000 5702536 -1623224 5702088 1622912 5701984 1623000 5702536 1623104 5702536 -1622872 5701952 1622912 5701984 1623224 5702088 1623096 5701888 -1622912 5701984 1623000 5702536 1623224 5702088 1623096 5701888 -1622872 5701952 1622912 5701984 1623096 5701888 1623024 5701816 -1622872 5701952 1622912 5701984 1623024 5701816 1622944 5701760 -1622912 5701984 1623224 5702088 1623096 5701888 1623024 5701816 -1622872 5701952 1622856 5702512 1622912 5701984 1623024 5701816 -1622856 5702512 1622912 5701984 1622872 5701952 1622728 5702456 -1622856 5702512 1623000 5702536 1622912 5701984 1622728 5702456 -1622872 5701952 1622632 5702000 1622728 5702456 1622912 5701984 -1622872 5701952 1622656 5701976 1622632 5702000 1622912 5701984 -1622632 5702000 1622728 5702456 1622912 5701984 1622656 5701976 -1622912 5701984 1623024 5701816 1622872 5701952 1622656 5701976 -1622728 5702456 1622856 5702512 1622912 5701984 1622632 5702000 -1622632 5702000 1622464 5702200 1622728 5702456 1622912 5701984 -1622872 5701952 1622784 5701928 1622656 5701976 1622912 5701984 -1622656 5701976 1622632 5702000 1622912 5701984 1622784 5701928 -1622872 5701952 1622784 5701928 1622912 5701984 1623024 5701816 -1622784 5701928 1622704 5701944 1622656 5701976 1622912 5701984 -1622872 5701952 1622824 5701928 1622784 5701928 1622912 5701984 -1622912 5701984 1622928 5702000 1623224 5702088 1623096 5701888 -1622928 5702000 1623000 5702536 1623224 5702088 1623096 5701888 -1622912 5701984 1623000 5702536 1622928 5702000 1623096 5701888 -1623224 5702088 1622928 5702000 1623000 5702536 1623104 5702536 -1623000 5702536 1622928 5702000 1622912 5701984 1622856 5702512 -1623000 5702536 1623224 5702088 1622928 5702000 1622856 5702512 -1622928 5702000 1623096 5701888 1622912 5701984 1622856 5702512 -1622912 5701984 1622728 5702456 1622856 5702512 1622928 5702000 -1622912 5701984 1622728 5702456 1622928 5702000 1623096 5701888 -1622856 5702512 1623000 5702536 1622928 5702000 1622728 5702456 -1622912 5701984 1622928 5702000 1623096 5701888 1623024 5701816 -1622912 5701984 1622632 5702000 1622728 5702456 1622928 5702000 -1622912 5701984 1622632 5702000 1622928 5702000 1623096 5701888 -1622728 5702456 1622856 5702512 1622928 5702000 1622632 5702000 -1622912 5701984 1622656 5701976 1622632 5702000 1622928 5702000 -1622632 5702000 1622464 5702200 1622728 5702456 1622928 5702000 -1622928 5702000 1622968 5702104 1623224 5702088 1623096 5701888 -1622928 5702000 1623000 5702536 1622968 5702104 1623096 5701888 -1623000 5702536 1622968 5702104 1622928 5702000 1622856 5702512 -1622968 5702104 1623096 5701888 1622928 5702000 1622856 5702512 -1622928 5702000 1622968 5702104 1623096 5701888 1622912 5701984 -1623224 5702088 1622968 5702104 1623000 5702536 1623104 5702536 -1623224 5702088 1622968 5702104 1623104 5702536 1623400 5702376 -1622928 5702000 1622728 5702456 1622856 5702512 1622968 5702104 -1622928 5702000 1622728 5702456 1622968 5702104 1623096 5701888 -1622856 5702512 1623000 5702536 1622968 5702104 1622728 5702456 -1622928 5702000 1622632 5702000 1622728 5702456 1622968 5702104 -1622928 5702000 1622632 5702000 1622968 5702104 1623096 5701888 -1622728 5702456 1622856 5702512 1622968 5702104 1622632 5702000 -1622968 5702104 1623104 5702536 1623224 5702088 1623096 5701888 -1623000 5702536 1623104 5702536 1622968 5702104 1622856 5702512 -1622928 5702000 1622912 5701984 1622632 5702000 1622968 5702104 -1622928 5702000 1622912 5701984 1622968 5702104 1623096 5701888 -1622632 5702000 1622728 5702456 1622968 5702104 1622912 5701984 -1622912 5701984 1622656 5701976 1622632 5702000 1622968 5702104 -1622632 5702000 1622728 5702456 1622968 5702104 1622656 5701976 -1622912 5701984 1622784 5701928 1622656 5701976 1622968 5702104 -1622912 5701984 1622656 5701976 1622968 5702104 1622928 5702000 -1622632 5702000 1622464 5702200 1622728 5702456 1622968 5702104 -1622968 5702104 1622992 5702184 1623104 5702536 1623224 5702088 -1623104 5702536 1623400 5702376 1623224 5702088 1622992 5702184 -1623104 5702536 1623256 5702568 1623400 5702376 1622992 5702184 -1623224 5702088 1622968 5702104 1622992 5702184 1623400 5702376 -1622968 5702104 1622992 5702184 1623224 5702088 1623096 5701888 -1622968 5702104 1623000 5702536 1622992 5702184 1623224 5702088 -1623000 5702536 1622992 5702184 1622968 5702104 1622856 5702512 -1622968 5702104 1622728 5702456 1622856 5702512 1622992 5702184 -1622968 5702104 1622632 5702000 1622728 5702456 1622992 5702184 -1622728 5702456 1622856 5702512 1622992 5702184 1622632 5702000 -1622968 5702104 1622656 5701976 1622632 5702000 1622992 5702184 -1622992 5702184 1623224 5702088 1622968 5702104 1622632 5702000 -1622856 5702512 1623000 5702536 1622992 5702184 1622728 5702456 -1623000 5702536 1623104 5702536 1622992 5702184 1622856 5702512 -1622992 5702184 1623000 5702536 1623104 5702536 1623400 5702376 -1622632 5702000 1622464 5702200 1622728 5702456 1622992 5702184 -1622856 5702512 1622992 5702224 1622992 5702184 1622728 5702456 -1622992 5702184 1622632 5702000 1622728 5702456 1622992 5702224 -1622992 5702184 1622968 5702104 1622632 5702000 1622992 5702224 -1622632 5702000 1622728 5702456 1622992 5702224 1622968 5702104 -1622968 5702104 1622656 5701976 1622632 5702000 1622992 5702224 -1622728 5702456 1622856 5702512 1622992 5702224 1622632 5702000 -1622992 5702184 1622992 5702224 1623000 5702536 1623104 5702536 -1622992 5702224 1622856 5702512 1623000 5702536 1623104 5702536 -1622992 5702184 1622992 5702224 1623104 5702536 1623400 5702376 -1623104 5702536 1623256 5702568 1623400 5702376 1622992 5702224 -1622992 5702184 1622992 5702224 1623400 5702376 1623224 5702088 -1622992 5702184 1622992 5702224 1623224 5702088 1622968 5702104 -1622992 5702224 1623000 5702536 1623104 5702536 1623400 5702376 -1622992 5702224 1623104 5702536 1623400 5702376 1623224 5702088 -1622992 5702224 1623224 5702088 1622992 5702184 1622968 5702104 -1622632 5702000 1622464 5702200 1622728 5702456 1622992 5702224 -1622856 5702512 1623000 5702536 1622992 5702224 1622728 5702456 -1622728 5702456 1622936 5702304 1622992 5702224 1622632 5702000 -1622992 5702224 1622968 5702104 1622632 5702000 1622936 5702304 -1622968 5702104 1622656 5701976 1622632 5702000 1622936 5702304 -1622992 5702224 1622992 5702184 1622968 5702104 1622936 5702304 -1622968 5702104 1622632 5702000 1622936 5702304 1622992 5702184 -1622632 5702000 1622728 5702456 1622936 5702304 1622968 5702104 -1622936 5702304 1622856 5702512 1622992 5702224 1622992 5702184 -1622728 5702456 1622936 5702304 1622632 5702000 1622464 5702200 -1622992 5702224 1622936 5702304 1622856 5702512 1623000 5702536 -1622992 5702224 1622936 5702304 1623000 5702536 1623104 5702536 -1622992 5702224 1622936 5702304 1623104 5702536 1623400 5702376 -1622992 5702224 1622992 5702184 1622936 5702304 1623104 5702536 -1622936 5702304 1622856 5702512 1623000 5702536 1623104 5702536 -1622936 5702304 1622728 5702456 1622856 5702512 1623000 5702536 -1622728 5702456 1622856 5702512 1622936 5702304 1622632 5702000 -1622632 5702000 1622896 5702328 1622936 5702304 1622968 5702104 -1622936 5702304 1622992 5702184 1622968 5702104 1622896 5702328 -1622632 5702000 1622896 5702328 1622968 5702104 1622656 5701976 -1622728 5702456 1622896 5702328 1622632 5702000 1622464 5702200 -1622632 5702000 1622240 5702048 1622464 5702200 1622896 5702328 -1622896 5702328 1622728 5702456 1622936 5702304 1622968 5702104 -1622936 5702304 1622896 5702328 1622728 5702456 1622856 5702512 -1622936 5702304 1622896 5702328 1622856 5702512 1623000 5702536 -1622936 5702304 1622896 5702328 1623000 5702536 1623104 5702536 -1622936 5702304 1622968 5702104 1622896 5702328 1623000 5702536 -1622896 5702328 1622728 5702456 1622856 5702512 1623000 5702536 -1622632 5702000 1622464 5702200 1622896 5702328 1622968 5702104 -1622728 5702456 1622856 5702512 1622896 5702328 1622464 5702200 -1622464 5702200 1622864 5702336 1622896 5702328 1622632 5702000 -1622464 5702200 1622728 5702456 1622864 5702336 1622632 5702000 -1622464 5702200 1622864 5702336 1622632 5702000 1622240 5702048 -1622864 5702336 1622728 5702456 1622896 5702328 1622632 5702000 -1622896 5702328 1622968 5702104 1622632 5702000 1622864 5702336 -1622968 5702104 1622656 5701976 1622632 5702000 1622864 5702336 -1622896 5702328 1622936 5702304 1622968 5702104 1622864 5702336 -1622936 5702304 1622992 5702184 1622968 5702104 1622864 5702336 -1622936 5702304 1622992 5702224 1622992 5702184 1622864 5702336 -1622936 5702304 1622992 5702184 1622864 5702336 1622896 5702328 -1622632 5702000 1622464 5702200 1622864 5702336 1622968 5702104 -1622896 5702328 1622936 5702304 1622864 5702336 1622728 5702456 -1622968 5702104 1622632 5702000 1622864 5702336 1622992 5702184 -1622896 5702328 1622864 5702336 1622728 5702456 1622856 5702512 -1622864 5702336 1622464 5702200 1622728 5702456 1622856 5702512 -1622896 5702328 1622864 5702336 1622856 5702512 1623000 5702536 -1622896 5702328 1622936 5702304 1622864 5702336 1622856 5702512 -1622864 5702336 1622784 5702312 1622728 5702456 1622856 5702512 -1622464 5702200 1622784 5702312 1622864 5702336 1622632 5702000 -1622464 5702200 1622728 5702456 1622784 5702312 1622632 5702000 -1622784 5702312 1622728 5702456 1622864 5702336 1622632 5702000 -1622864 5702336 1622968 5702104 1622632 5702000 1622784 5702312 -1622968 5702104 1622656 5701976 1622632 5702000 1622784 5702312 -1622968 5702104 1622912 5701984 1622656 5701976 1622784 5702312 -1622632 5702000 1622464 5702200 1622784 5702312 1622656 5701976 -1622864 5702336 1622968 5702104 1622784 5702312 1622728 5702456 -1622968 5702104 1622656 5701976 1622784 5702312 1622864 5702336 -1622464 5702200 1622784 5702312 1622632 5702000 1622240 5702048 -1622864 5702336 1622992 5702184 1622968 5702104 1622784 5702312 -1622864 5702336 1622936 5702304 1622992 5702184 1622784 5702312 -1622936 5702304 1622992 5702224 1622992 5702184 1622784 5702312 -1622864 5702336 1622936 5702304 1622784 5702312 1622728 5702456 -1622864 5702336 1622896 5702328 1622936 5702304 1622784 5702312 -1622936 5702304 1622992 5702184 1622784 5702312 1622896 5702328 -1622864 5702336 1622896 5702328 1622784 5702312 1622728 5702456 -1622968 5702104 1622656 5701976 1622784 5702312 1622992 5702184 -1622992 5702184 1622968 5702104 1622784 5702312 1622936 5702304 -1622632 5702000 1622720 5702232 1622784 5702312 1622656 5701976 -1622784 5702312 1622968 5702104 1622656 5701976 1622720 5702232 -1622968 5702104 1622912 5701984 1622656 5701976 1622720 5702232 -1622968 5702104 1622912 5701984 1622720 5702232 1622784 5702312 -1622912 5701984 1622784 5701928 1622656 5701976 1622720 5702232 -1622912 5701984 1622784 5701928 1622720 5702232 1622968 5702104 -1622656 5701976 1622632 5702000 1622720 5702232 1622784 5701928 -1622720 5702232 1622464 5702200 1622784 5702312 1622968 5702104 -1622784 5702312 1622720 5702232 1622464 5702200 1622728 5702456 -1622784 5702312 1622720 5702232 1622728 5702456 1622864 5702336 -1622784 5702312 1622968 5702104 1622720 5702232 1622728 5702456 -1622720 5702232 1622632 5702000 1622464 5702200 1622728 5702456 -1622632 5702000 1622464 5702200 1622720 5702232 1622656 5701976 -1622968 5702104 1622928 5702000 1622912 5701984 1622720 5702232 -1622968 5702104 1622928 5702000 1622720 5702232 1622784 5702312 -1622912 5701984 1622784 5701928 1622720 5702232 1622928 5702000 -1622784 5702312 1622992 5702184 1622968 5702104 1622720 5702232 -1622968 5702104 1622928 5702000 1622720 5702232 1622992 5702184 -1622784 5702312 1622992 5702184 1622720 5702232 1622728 5702456 -1622784 5701928 1622704 5701944 1622656 5701976 1622720 5702232 -1622784 5701928 1622704 5701944 1622720 5702232 1622912 5701984 -1622656 5701976 1622632 5702000 1622720 5702232 1622704 5701944 -1622464 5702200 1622720 5702232 1622632 5702000 1622240 5702048 -1622784 5702312 1622936 5702304 1622992 5702184 1622720 5702232 -1622912 5701984 1622872 5701952 1622784 5701928 1622720 5702232 -1622912 5701984 1622872 5701952 1622720 5702232 1622928 5702000 -1622784 5701928 1622704 5701944 1622720 5702232 1622872 5701952 -1622872 5701952 1622824 5701928 1622784 5701928 1622720 5702232 -1622720 5702232 1622672 5702152 1622464 5702200 1622728 5702456 -1622632 5702000 1622672 5702152 1622720 5702232 1622656 5701976 -1622720 5702232 1622704 5701944 1622656 5701976 1622672 5702152 -1622672 5702152 1622464 5702200 1622720 5702232 1622704 5701944 -1622656 5701976 1622632 5702000 1622672 5702152 1622704 5701944 -1622632 5702000 1622464 5702200 1622672 5702152 1622656 5701976 -1622720 5702232 1622784 5701928 1622704 5701944 1622672 5702152 -1622720 5702232 1622872 5701952 1622784 5701928 1622672 5702152 -1622704 5701944 1622656 5701976 1622672 5702152 1622784 5701928 -1622720 5702232 1622872 5701952 1622672 5702152 1622464 5702200 -1622784 5701928 1622704 5701944 1622672 5702152 1622872 5701952 -1622464 5702200 1622672 5702152 1622632 5702000 1622240 5702048 -1622872 5701952 1622824 5701928 1622784 5701928 1622672 5702152 -1622720 5702232 1622912 5701984 1622872 5701952 1622672 5702152 -1622720 5702232 1622928 5702000 1622912 5701984 1622672 5702152 -1622872 5701952 1622784 5701928 1622672 5702152 1622912 5701984 -1622720 5702232 1622928 5702000 1622672 5702152 1622464 5702200 -1622720 5702232 1622968 5702104 1622928 5702000 1622672 5702152 -1622720 5702232 1622992 5702184 1622968 5702104 1622672 5702152 -1622928 5702000 1622912 5701984 1622672 5702152 1622968 5702104 -1622720 5702232 1622968 5702104 1622672 5702152 1622464 5702200 -1622912 5701984 1622872 5701952 1622672 5702152 1622928 5702000 -1622672 5702152 1622656 5702096 1622464 5702200 1622720 5702232 -1622632 5702000 1622656 5702096 1622672 5702152 1622656 5701976 -1622672 5702152 1622704 5701944 1622656 5701976 1622656 5702096 -1622672 5702152 1622784 5701928 1622704 5701944 1622656 5702096 -1622704 5701944 1622656 5701976 1622656 5702096 1622784 5701928 -1622656 5702096 1622464 5702200 1622672 5702152 1622784 5701928 -1622656 5701976 1622632 5702000 1622656 5702096 1622704 5701944 -1622632 5702000 1622464 5702200 1622656 5702096 1622656 5701976 -1622672 5702152 1622872 5701952 1622784 5701928 1622656 5702096 -1622672 5702152 1622912 5701984 1622872 5701952 1622656 5702096 -1622784 5701928 1622704 5701944 1622656 5702096 1622872 5701952 -1622672 5702152 1622912 5701984 1622656 5702096 1622464 5702200 -1622872 5701952 1622784 5701928 1622656 5702096 1622912 5701984 -1622464 5702200 1622656 5702096 1622632 5702000 1622240 5702048 -1622872 5701952 1622824 5701928 1622784 5701928 1622656 5702096 -1622672 5702152 1622928 5702000 1622912 5701984 1622656 5702096 -1622656 5702096 1622632 5702032 1622464 5702200 1622672 5702152 -1622632 5702000 1622632 5702032 1622656 5702096 1622656 5701976 -1622632 5702000 1622464 5702200 1622632 5702032 1622656 5701976 -1622656 5702096 1622704 5701944 1622656 5701976 1622632 5702032 -1622632 5702032 1622464 5702200 1622656 5702096 1622656 5701976 -1622464 5702200 1622632 5702032 1622632 5702000 1622240 5702048 -1621664 5703552 1617496 5700904 1617824 5707096 1621664 5703600 -1621664 5703552 1615968 5699848 1617496 5700904 1621664 5703600 -1617496 5700904 1615968 5699848 1617824 5707096 1621664 5703600 -1617824 5707096 1617496 5700904 1615968 5699848 1615776 5699960 -1617824 5707096 1621664 5703600 1617496 5700904 1615776 5699960 -1615968 5699848 1617496 5700904 1621664 5703552 1621448 5701528 -1621664 5703552 1621752 5702000 1621448 5701528 1617496 5700904 -1617496 5700904 1621664 5703600 1621664 5703552 1621448 5701528 -1615968 5699848 1617496 5700904 1621448 5701528 1616112 5699736 -1621448 5701528 1616256 5699536 1616112 5699736 1617496 5700904 -1621448 5701528 1621464 5701464 1616256 5699536 1617496 5700904 -1621464 5701464 1616600 5698864 1616256 5699536 1617496 5700904 -1621464 5701464 1621488 5701424 1616600 5698864 1617496 5700904 -1621488 5701424 1616624 5698800 1616600 5698864 1617496 5700904 -1621488 5701424 1616624 5698800 1617496 5700904 1621464 5701464 -1621488 5701424 1621944 5698008 1616624 5698800 1617496 5700904 -1621488 5701424 1621944 5698008 1617496 5700904 1621464 5701464 -1621488 5701424 1621576 5701360 1621944 5698008 1617496 5700904 -1621944 5698008 1616624 5698656 1616624 5698800 1617496 5700904 -1616624 5698800 1616600 5698864 1617496 5700904 1621944 5698008 -1616600 5698864 1616256 5699472 1616256 5699536 1617496 5700904 -1621464 5701464 1621488 5701424 1617496 5700904 1621448 5701528 -1616600 5698864 1616256 5699536 1617496 5700904 1616624 5698800 -1616256 5699536 1616112 5699736 1617496 5700904 1616600 5698864 -1617496 5700904 1621664 5703552 1621448 5701528 1621464 5701464 -1616112 5699736 1615968 5699848 1617496 5700904 1616256 5699536 -1617824 5707096 1617856 5707112 1621664 5703600 1617496 5700904 -1617824 5707096 1617496 5700904 1615776 5699960 1613592 5703136 -1617824 5707096 1617496 5700904 1613592 5703136 1613584 5703232 -1617824 5707096 1621664 5703600 1617496 5700904 1613584 5703232 -1617496 5700904 1615968 5699848 1615776 5699960 1613592 5703136 -1617824 5707096 1617496 5700904 1613584 5703232 1617792 5707104 -1617496 5700904 1613592 5703136 1613584 5703232 1617792 5707104 -1617824 5707096 1621664 5703600 1617496 5700904 1617792 5707104 -1613584 5703232 1614576 5707608 1617792 5707104 1617496 5700904 -1617496 5700904 1615776 5699960 1613592 5703136 1613584 5703232 -1617496 5700904 1616112 5699736 1615968 5699848 1615776 5699960 -1615776 5699960 1615600 5700000 1613592 5703136 1617496 5700904 -1615776 5699960 1615600 5700000 1617496 5700904 1615968 5699848 -1613592 5703136 1613584 5703232 1617496 5700904 1615600 5700000 -1615600 5700000 1615168 5700080 1613592 5703136 1617496 5700904 -1615168 5700080 1615072 5700064 1613592 5703136 1617496 5700904 -1615600 5700000 1615392 5700008 1615168 5700080 1617496 5700904 -1613592 5703136 1613584 5703232 1617496 5700904 1615168 5700080 -1615600 5700000 1615168 5700080 1617496 5700904 1615776 5699960 -1613584 5703232 1617392 5700976 1617496 5700904 1613592 5703136 -1617392 5700976 1617792 5707104 1617496 5700904 1613592 5703136 -1617792 5707104 1617392 5700976 1613584 5703232 1614576 5707608 -1617496 5700904 1617392 5700976 1617792 5707104 1617824 5707096 -1617392 5700976 1613584 5703232 1617792 5707104 1617824 5707096 -1617496 5700904 1617392 5700976 1617824 5707096 1621664 5703600 -1617496 5700904 1613592 5703136 1617392 5700976 1621664 5703600 -1617496 5700904 1617392 5700976 1621664 5703600 1621664 5703552 -1617496 5700904 1617392 5700976 1621664 5703552 1621448 5701528 -1617392 5700976 1617824 5707096 1621664 5703600 1621664 5703552 -1617496 5700904 1613592 5703136 1617392 5700976 1621664 5703552 -1617824 5707096 1617856 5707112 1621664 5703600 1617392 5700976 -1617392 5700976 1617792 5707104 1617824 5707096 1621664 5703600 -1617496 5700904 1615168 5700080 1613592 5703136 1617392 5700976 -1613592 5703136 1613584 5703232 1617392 5700976 1615168 5700080 -1615168 5700080 1615072 5700064 1613592 5703136 1617392 5700976 -1617496 5700904 1615168 5700080 1617392 5700976 1621664 5703552 -1613584 5703232 1617792 5707104 1617392 5700976 1613592 5703136 -1617496 5700904 1615600 5700000 1615168 5700080 1617392 5700976 -1617496 5700904 1615600 5700000 1617392 5700976 1621664 5703552 -1615600 5700000 1615392 5700008 1615168 5700080 1617392 5700976 -1615168 5700080 1613592 5703136 1617392 5700976 1615600 5700000 -1617496 5700904 1615776 5699960 1615600 5700000 1617392 5700976 -1617496 5700904 1615776 5699960 1617392 5700976 1621664 5703552 -1617496 5700904 1615968 5699848 1615776 5699960 1617392 5700976 -1617496 5700904 1615968 5699848 1617392 5700976 1621664 5703552 -1617496 5700904 1616112 5699736 1615968 5699848 1617392 5700976 -1617496 5700904 1616112 5699736 1617392 5700976 1621664 5703552 -1615968 5699848 1615776 5699960 1617392 5700976 1616112 5699736 -1617496 5700904 1616256 5699536 1616112 5699736 1617392 5700976 -1615776 5699960 1615600 5700000 1617392 5700976 1615968 5699848 -1615600 5700000 1615168 5700080 1617392 5700976 1615776 5699960 -1617392 5700976 1617224 5701032 1613592 5703136 1613584 5703232 -1613592 5703136 1617224 5701032 1615168 5700080 1615072 5700064 -1617224 5701032 1615168 5700080 1613592 5703136 1613584 5703232 -1615168 5700080 1617224 5701032 1617392 5700976 1615600 5700000 -1615168 5700080 1617224 5701032 1615600 5700000 1615392 5700008 -1615168 5700080 1613592 5703136 1617224 5701032 1615600 5700000 -1617392 5700976 1615600 5700000 1617224 5701032 1613584 5703232 -1617392 5700976 1617224 5701032 1613584 5703232 1617792 5707104 -1617392 5700976 1617224 5701032 1617792 5707104 1617824 5707096 -1617224 5701032 1613592 5703136 1613584 5703232 1617792 5707104 -1613584 5703232 1614576 5707608 1617792 5707104 1617224 5701032 -1617392 5700976 1617224 5701032 1617824 5707096 1621664 5703600 -1617392 5700976 1615600 5700000 1617224 5701032 1617824 5707096 -1617224 5701032 1613584 5703232 1617792 5707104 1617824 5707096 -1617392 5700976 1615776 5699960 1615600 5700000 1617224 5701032 -1615600 5700000 1615168 5700080 1617224 5701032 1615776 5699960 -1617392 5700976 1615776 5699960 1617224 5701032 1617824 5707096 -1617392 5700976 1615968 5699848 1615776 5699960 1617224 5701032 -1617392 5700976 1616112 5699736 1615968 5699848 1617224 5701032 -1617392 5700976 1617496 5700904 1616112 5699736 1617224 5701032 -1616112 5699736 1615968 5699848 1617224 5701032 1617496 5700904 -1617496 5700904 1616256 5699536 1616112 5699736 1617224 5701032 -1616112 5699736 1615968 5699848 1617224 5701032 1616256 5699536 -1617496 5700904 1616600 5698864 1616256 5699536 1617224 5701032 -1617496 5700904 1616256 5699536 1617224 5701032 1617392 5700976 -1617392 5700976 1617496 5700904 1617224 5701032 1617824 5707096 -1615968 5699848 1615776 5699960 1617224 5701032 1616112 5699736 -1615776 5699960 1615600 5700000 1617224 5701032 1615968 5699848 -1613592 5703136 1617088 5701032 1615168 5700080 1615072 5700064 -1617224 5701032 1617088 5701032 1613592 5703136 1613584 5703232 -1617224 5701032 1617088 5701032 1613584 5703232 1617792 5707104 -1617088 5701032 1613592 5703136 1613584 5703232 1617792 5707104 -1617224 5701032 1615168 5700080 1617088 5701032 1617792 5707104 -1613584 5703232 1614576 5707608 1617792 5707104 1617088 5701032 -1615168 5700080 1617088 5701032 1617224 5701032 1615600 5700000 -1615168 5700080 1613592 5703136 1617088 5701032 1615600 5700000 -1617088 5701032 1617792 5707104 1617224 5701032 1615600 5700000 -1615168 5700080 1617088 5701032 1615600 5700000 1615392 5700008 -1617224 5701032 1615776 5699960 1615600 5700000 1617088 5701032 -1617224 5701032 1615776 5699960 1617088 5701032 1617792 5707104 -1615600 5700000 1615168 5700080 1617088 5701032 1615776 5699960 -1617088 5701032 1615168 5700080 1613592 5703136 1613584 5703232 -1617224 5701032 1617088 5701032 1617792 5707104 1617824 5707096 -1617224 5701032 1617088 5701032 1617824 5707096 1617392 5700976 -1617088 5701032 1613584 5703232 1617792 5707104 1617824 5707096 -1617224 5701032 1615776 5699960 1617088 5701032 1617824 5707096 -1617224 5701032 1615968 5699848 1615776 5699960 1617088 5701032 -1617224 5701032 1615968 5699848 1617088 5701032 1617824 5707096 -1615776 5699960 1615600 5700000 1617088 5701032 1615968 5699848 -1617224 5701032 1616112 5699736 1615968 5699848 1617088 5701032 -1617224 5701032 1616112 5699736 1617088 5701032 1617824 5707096 -1617224 5701032 1616256 5699536 1616112 5699736 1617088 5701032 -1617224 5701032 1616256 5699536 1617088 5701032 1617824 5707096 -1617224 5701032 1617496 5700904 1616256 5699536 1617088 5701032 -1617224 5701032 1617496 5700904 1617088 5701032 1617824 5707096 -1616256 5699536 1616112 5699736 1617088 5701032 1617496 5700904 -1617496 5700904 1616600 5698864 1616256 5699536 1617088 5701032 -1617224 5701032 1617392 5700976 1617496 5700904 1617088 5701032 -1617224 5701032 1617392 5700976 1617088 5701032 1617824 5707096 -1617496 5700904 1616256 5699536 1617088 5701032 1617392 5700976 -1616112 5699736 1615968 5699848 1617088 5701032 1616256 5699536 -1615968 5699848 1615776 5699960 1617088 5701032 1616112 5699736 -1613592 5703136 1616928 5700984 1615168 5700080 1615072 5700064 -1615168 5700080 1616928 5700984 1617088 5701032 1615600 5700000 -1615168 5700080 1613592 5703136 1616928 5700984 1615600 5700000 -1616928 5700984 1613592 5703136 1617088 5701032 1615600 5700000 -1615168 5700080 1616928 5700984 1615600 5700000 1615392 5700008 -1617088 5701032 1615776 5699960 1615600 5700000 1616928 5700984 -1615600 5700000 1615168 5700080 1616928 5700984 1615776 5699960 -1617088 5701032 1615776 5699960 1616928 5700984 1613592 5703136 -1617088 5701032 1615968 5699848 1615776 5699960 1616928 5700984 -1617088 5701032 1615968 5699848 1616928 5700984 1613592 5703136 -1615776 5699960 1615600 5700000 1616928 5700984 1615968 5699848 -1617088 5701032 1616928 5700984 1613592 5703136 1613584 5703232 -1617088 5701032 1615968 5699848 1616928 5700984 1613584 5703232 -1616928 5700984 1615168 5700080 1613592 5703136 1613584 5703232 -1617088 5701032 1616928 5700984 1613584 5703232 1617792 5707104 -1617088 5701032 1616112 5699736 1615968 5699848 1616928 5700984 -1617088 5701032 1616112 5699736 1616928 5700984 1613584 5703232 -1615968 5699848 1615776 5699960 1616928 5700984 1616112 5699736 -1617088 5701032 1616256 5699536 1616112 5699736 1616928 5700984 -1617088 5701032 1616256 5699536 1616928 5700984 1613584 5703232 -1617088 5701032 1617496 5700904 1616256 5699536 1616928 5700984 -1617088 5701032 1617496 5700904 1616928 5700984 1613584 5703232 -1617496 5700904 1616600 5698864 1616256 5699536 1616928 5700984 -1617088 5701032 1617392 5700976 1617496 5700904 1616928 5700984 -1617088 5701032 1617392 5700976 1616928 5700984 1613584 5703232 -1617496 5700904 1616256 5699536 1616928 5700984 1617392 5700976 -1617088 5701032 1617224 5701032 1617392 5700976 1616928 5700984 -1616256 5699536 1616112 5699736 1616928 5700984 1617496 5700904 -1616112 5699736 1615968 5699848 1616928 5700984 1616256 5699536 -1615168 5700080 1616736 5700904 1616928 5700984 1615600 5700000 -1616736 5700904 1613592 5703136 1616928 5700984 1615600 5700000 -1615168 5700080 1613592 5703136 1616736 5700904 1615600 5700000 -1613592 5703136 1616736 5700904 1615168 5700080 1615072 5700064 -1616928 5700984 1615776 5699960 1615600 5700000 1616736 5700904 -1616928 5700984 1615776 5699960 1616736 5700904 1613592 5703136 -1615600 5700000 1615168 5700080 1616736 5700904 1615776 5699960 -1616928 5700984 1616736 5700904 1613592 5703136 1613584 5703232 -1615168 5700080 1616736 5700904 1615600 5700000 1615392 5700008 -1616928 5700984 1615968 5699848 1615776 5699960 1616736 5700904 -1616928 5700984 1615968 5699848 1616736 5700904 1613592 5703136 -1615776 5699960 1615600 5700000 1616736 5700904 1615968 5699848 -1616928 5700984 1616112 5699736 1615968 5699848 1616736 5700904 -1616928 5700984 1616112 5699736 1616736 5700904 1613592 5703136 -1615968 5699848 1615776 5699960 1616736 5700904 1616112 5699736 -1616928 5700984 1616256 5699536 1616112 5699736 1616736 5700904 -1616928 5700984 1616256 5699536 1616736 5700904 1613592 5703136 -1616112 5699736 1615968 5699848 1616736 5700904 1616256 5699536 -1616928 5700984 1617496 5700904 1616256 5699536 1616736 5700904 -1616928 5700984 1617496 5700904 1616736 5700904 1613592 5703136 -1616928 5700984 1617392 5700976 1617496 5700904 1616736 5700904 -1617496 5700904 1616600 5698864 1616256 5699536 1616736 5700904 -1616256 5699536 1616112 5699736 1616736 5700904 1617496 5700904 -1616736 5700904 1616672 5700904 1613592 5703136 1616928 5700984 -1616736 5700904 1615168 5700080 1616672 5700904 1616928 5700984 -1615168 5700080 1616672 5700904 1616736 5700904 1615600 5700000 -1616736 5700904 1615776 5699960 1615600 5700000 1616672 5700904 -1616672 5700904 1616928 5700984 1616736 5700904 1615776 5699960 -1615600 5700000 1615168 5700080 1616672 5700904 1615776 5699960 -1616672 5700904 1615168 5700080 1613592 5703136 1616928 5700984 -1615168 5700080 1613592 5703136 1616672 5700904 1615600 5700000 -1613592 5703136 1616672 5700904 1615168 5700080 1615072 5700064 -1616736 5700904 1615968 5699848 1615776 5699960 1616672 5700904 -1615776 5699960 1615600 5700000 1616672 5700904 1615968 5699848 -1616736 5700904 1615968 5699848 1616672 5700904 1616928 5700984 -1613592 5703136 1613584 5703232 1616928 5700984 1616672 5700904 -1615168 5700080 1616672 5700904 1615600 5700000 1615392 5700008 -1616736 5700904 1616112 5699736 1615968 5699848 1616672 5700904 -1616736 5700904 1616112 5699736 1616672 5700904 1616928 5700984 -1615968 5699848 1615776 5699960 1616672 5700904 1616112 5699736 -1616736 5700904 1616256 5699536 1616112 5699736 1616672 5700904 -1616672 5700904 1616632 5700928 1613592 5703136 1616928 5700984 -1616672 5700904 1616632 5700928 1616928 5700984 1616736 5700904 -1616632 5700928 1613592 5703136 1616928 5700984 1616736 5700904 -1616672 5700904 1615168 5700080 1616632 5700928 1616736 5700904 -1615168 5700080 1616632 5700928 1616672 5700904 1615600 5700000 -1616672 5700904 1615776 5699960 1615600 5700000 1616632 5700928 -1616672 5700904 1615968 5699848 1615776 5699960 1616632 5700928 -1615776 5699960 1615600 5700000 1616632 5700928 1615968 5699848 -1616632 5700928 1616736 5700904 1616672 5700904 1615968 5699848 -1615600 5700000 1615168 5700080 1616632 5700928 1615776 5699960 -1616632 5700928 1615168 5700080 1613592 5703136 1616928 5700984 -1615168 5700080 1613592 5703136 1616632 5700928 1615600 5700000 -1613592 5703136 1616632 5700928 1615168 5700080 1615072 5700064 -1616672 5700904 1616112 5699736 1615968 5699848 1616632 5700928 -1613592 5703136 1613584 5703232 1616928 5700984 1616632 5700928 -1616928 5700984 1616736 5700904 1616632 5700928 1613584 5703232 -1613592 5703136 1613584 5703232 1616632 5700928 1615168 5700080 -1615168 5700080 1616632 5700928 1615600 5700000 1615392 5700008 -1613584 5703232 1617088 5701032 1616928 5700984 1616632 5700928 -1616928 5700984 1616736 5700904 1616632 5700928 1617088 5701032 -1613584 5703232 1617088 5701032 1616632 5700928 1613592 5703136 -1613584 5703232 1617792 5707104 1617088 5701032 1616632 5700928 -1613584 5703232 1616576 5701000 1616632 5700928 1613592 5703136 -1616632 5700928 1615168 5700080 1613592 5703136 1616576 5701000 -1616576 5701000 1617088 5701032 1616632 5700928 1615168 5700080 -1616632 5700928 1615600 5700000 1615168 5700080 1616576 5701000 -1616632 5700928 1615776 5699960 1615600 5700000 1616576 5701000 -1616632 5700928 1615968 5699848 1615776 5699960 1616576 5701000 -1615168 5700080 1613592 5703136 1616576 5701000 1615600 5700000 -1616632 5700928 1615776 5699960 1616576 5701000 1617088 5701032 -1615600 5700000 1615168 5700080 1616576 5701000 1615776 5699960 -1613584 5703232 1617088 5701032 1616576 5701000 1613592 5703136 -1615168 5700080 1615072 5700064 1613592 5703136 1616576 5701000 -1613592 5703136 1613584 5703232 1616576 5701000 1615168 5700080 -1617088 5701032 1616576 5701000 1613584 5703232 1617792 5707104 -1617088 5701032 1616632 5700928 1616576 5701000 1617792 5707104 -1616576 5701000 1613592 5703136 1613584 5703232 1617792 5707104 -1617088 5701032 1616576 5701000 1617792 5707104 1617824 5707096 -1613584 5703232 1614576 5707608 1617792 5707104 1616576 5701000 -1615600 5700000 1615392 5700008 1615168 5700080 1616576 5701000 -1616632 5700928 1616576 5701000 1617088 5701032 1616928 5700984 -1616632 5700928 1616576 5701000 1616928 5700984 1616736 5700904 -1616632 5700928 1616576 5701000 1616736 5700904 1616672 5700904 -1616632 5700928 1615776 5699960 1616576 5701000 1616736 5700904 -1616576 5701000 1617792 5707104 1617088 5701032 1616928 5700984 -1616576 5701000 1617088 5701032 1616928 5700984 1616736 5700904 -1613584 5703232 1616496 5701136 1616576 5701000 1613592 5703136 -1616496 5701136 1617792 5707104 1616576 5701000 1613592 5703136 -1613584 5703232 1617792 5707104 1616496 5701136 1613592 5703136 -1616576 5701000 1615168 5700080 1613592 5703136 1616496 5701136 -1616576 5701000 1615600 5700000 1615168 5700080 1616496 5701136 -1616576 5701000 1615776 5699960 1615600 5700000 1616496 5701136 -1616576 5701000 1616632 5700928 1615776 5699960 1616496 5701136 -1615600 5700000 1615168 5700080 1616496 5701136 1615776 5699960 -1616576 5701000 1615776 5699960 1616496 5701136 1617792 5707104 -1613592 5703136 1613584 5703232 1616496 5701136 1615168 5700080 -1615168 5700080 1615072 5700064 1613592 5703136 1616496 5701136 -1615168 5700080 1613592 5703136 1616496 5701136 1615600 5700000 -1616576 5701000 1616496 5701136 1617792 5707104 1617088 5701032 -1616576 5701000 1616496 5701136 1617088 5701032 1616928 5700984 -1616576 5701000 1615776 5699960 1616496 5701136 1616928 5700984 -1616496 5701136 1613584 5703232 1617792 5707104 1617088 5701032 -1617792 5707104 1617824 5707096 1617088 5701032 1616496 5701136 -1617792 5707104 1617824 5707096 1616496 5701136 1613584 5703232 -1616496 5701136 1617824 5707096 1617088 5701032 1616928 5700984 -1617792 5707104 1616496 5701136 1613584 5703232 1614576 5707608 -1615600 5700000 1615392 5700008 1615168 5700080 1616496 5701136 -1616576 5701000 1616496 5701136 1616928 5700984 1616736 5700904 -1617824 5707096 1617224 5701032 1617088 5701032 1616496 5701136 -1617824 5707096 1617392 5700976 1617224 5701032 1616496 5701136 -1617824 5707096 1617224 5701032 1616496 5701136 1617792 5707104 -1617088 5701032 1616928 5700984 1616496 5701136 1617224 5701032 -1616496 5701136 1616424 5701192 1617792 5707104 1617824 5707096 -1616496 5701136 1613584 5703232 1616424 5701192 1617824 5707096 -1616496 5701136 1616424 5701192 1617824 5707096 1617224 5701032 -1616424 5701192 1617792 5707104 1617824 5707096 1617224 5701032 -1616496 5701136 1613584 5703232 1616424 5701192 1617224 5701032 -1617824 5707096 1617392 5700976 1617224 5701032 1616424 5701192 -1613584 5703232 1616424 5701192 1616496 5701136 1613592 5703136 -1616496 5701136 1615168 5700080 1613592 5703136 1616424 5701192 -1616424 5701192 1617224 5701032 1616496 5701136 1615168 5700080 -1615168 5700080 1615072 5700064 1613592 5703136 1616424 5701192 -1615168 5700080 1615072 5700064 1616424 5701192 1616496 5701136 -1615072 5700064 1613464 5703016 1613592 5703136 1616424 5701192 -1613592 5703136 1613584 5703232 1616424 5701192 1615072 5700064 -1616424 5701192 1613584 5703232 1617792 5707104 1617824 5707096 -1613584 5703232 1617792 5707104 1616424 5701192 1613592 5703136 -1616496 5701136 1615600 5700000 1615168 5700080 1616424 5701192 -1616496 5701136 1615776 5699960 1615600 5700000 1616424 5701192 -1616496 5701136 1616576 5701000 1615776 5699960 1616424 5701192 -1616576 5701000 1616632 5700928 1615776 5699960 1616424 5701192 -1615776 5699960 1615600 5700000 1616424 5701192 1616576 5701000 -1615168 5700080 1615072 5700064 1616424 5701192 1615600 5700000 -1616496 5701136 1616576 5701000 1616424 5701192 1617224 5701032 -1615600 5700000 1615168 5700080 1616424 5701192 1615776 5699960 -1617792 5707104 1616424 5701192 1613584 5703232 1614576 5707608 -1615600 5700000 1615392 5700008 1615168 5700080 1616424 5701192 -1616496 5701136 1616424 5701192 1617224 5701032 1617088 5701032 -1616496 5701136 1616576 5701000 1616424 5701192 1617088 5701032 -1616424 5701192 1617824 5707096 1617224 5701032 1617088 5701032 -1616496 5701136 1616424 5701192 1617088 5701032 1616928 5700984 -1615072 5700064 1616368 5701208 1616424 5701192 1615168 5700080 -1616424 5701192 1615600 5700000 1615168 5700080 1616368 5701208 -1615168 5700080 1615072 5700064 1616368 5701208 1615600 5700000 -1613592 5703136 1616368 5701208 1615072 5700064 1613464 5703016 -1616424 5701192 1616368 5701208 1613592 5703136 1613584 5703232 -1616368 5701208 1613584 5703232 1616424 5701192 1615600 5700000 -1616424 5701192 1616368 5701208 1613584 5703232 1617792 5707104 -1616368 5701208 1613592 5703136 1613584 5703232 1617792 5707104 -1616424 5701192 1616368 5701208 1617792 5707104 1617824 5707096 -1616424 5701192 1616368 5701208 1617824 5707096 1617224 5701032 -1616424 5701192 1615600 5700000 1616368 5701208 1617824 5707096 -1616368 5701208 1613584 5703232 1617792 5707104 1617824 5707096 -1613592 5703136 1613584 5703232 1616368 5701208 1613464 5703016 -1616424 5701192 1615776 5699960 1615600 5700000 1616368 5701208 -1616424 5701192 1616576 5701000 1615776 5699960 1616368 5701208 -1616576 5701000 1616632 5700928 1615776 5699960 1616368 5701208 -1616424 5701192 1616496 5701136 1616576 5701000 1616368 5701208 -1616576 5701000 1615776 5699960 1616368 5701208 1616496 5701136 -1615600 5700000 1615168 5700080 1616368 5701208 1615776 5699960 -1616424 5701192 1616496 5701136 1616368 5701208 1617824 5707096 -1615776 5699960 1615600 5700000 1616368 5701208 1616576 5701000 -1613584 5703232 1614576 5707608 1617792 5707104 1616368 5701208 -1615072 5700064 1613304 5702872 1613464 5703016 1616368 5701208 -1613592 5703136 1616368 5701208 1613464 5703016 1613512 5703064 -1615600 5700000 1615392 5700008 1615168 5700080 1616368 5701208 -1615072 5700064 1613464 5703016 1616368 5701208 1615168 5700080 -1616368 5701208 1616304 5701200 1613464 5703016 1613592 5703136 -1616368 5701208 1616304 5701200 1613592 5703136 1613584 5703232 -1616304 5701200 1613464 5703016 1613592 5703136 1613584 5703232 -1616368 5701208 1616304 5701200 1613584 5703232 1617792 5707104 -1616368 5701208 1615072 5700064 1616304 5701200 1613584 5703232 -1613464 5703016 1616304 5701200 1615072 5700064 1613304 5702872 -1613464 5703016 1613512 5703064 1613592 5703136 1616304 5701200 -1615072 5700064 1616304 5701200 1616368 5701208 1615168 5700080 -1616368 5701208 1615600 5700000 1615168 5700080 1616304 5701200 -1616368 5701208 1615776 5699960 1615600 5700000 1616304 5701200 -1615600 5700000 1615168 5700080 1616304 5701200 1615776 5699960 -1616304 5701200 1613584 5703232 1616368 5701208 1615776 5699960 -1616368 5701208 1616576 5701000 1615776 5699960 1616304 5701200 -1616576 5701000 1616632 5700928 1615776 5699960 1616304 5701200 -1616368 5701208 1616496 5701136 1616576 5701000 1616304 5701200 -1616368 5701208 1616424 5701192 1616496 5701136 1616304 5701200 -1616496 5701136 1616576 5701000 1616304 5701200 1616424 5701192 -1615776 5699960 1615600 5700000 1616304 5701200 1616576 5701000 -1616368 5701208 1616424 5701192 1616304 5701200 1613584 5703232 -1616576 5701000 1615776 5699960 1616304 5701200 1616496 5701136 -1615600 5700000 1615392 5700008 1615168 5700080 1616304 5701200 -1615072 5700064 1613464 5703016 1616304 5701200 1615168 5700080 -1615168 5700080 1615072 5700064 1616304 5701200 1615600 5700000 -1616304 5701200 1615072 5700064 1613464 5703016 1613592 5703136 -1613464 5703016 1616120 5701120 1615072 5700064 1613304 5702872 -1616120 5701120 1616304 5701200 1615072 5700064 1613304 5702872 -1615072 5700064 1614280 5699976 1613304 5702872 1616120 5701120 -1615072 5700064 1616120 5701120 1616304 5701200 1615168 5700080 -1615072 5700064 1613304 5702872 1616120 5701120 1615168 5700080 -1613464 5703016 1616304 5701200 1616120 5701120 1613304 5702872 -1613464 5703016 1616120 5701120 1613304 5702872 1613344 5702912 -1616304 5701200 1615600 5700000 1615168 5700080 1616120 5701120 -1616304 5701200 1615776 5699960 1615600 5700000 1616120 5701120 -1616304 5701200 1616576 5701000 1615776 5699960 1616120 5701120 -1616576 5701000 1616632 5700928 1615776 5699960 1616120 5701120 -1616632 5700928 1615968 5699848 1615776 5699960 1616120 5701120 -1616576 5701000 1616632 5700928 1616120 5701120 1616304 5701200 -1615776 5699960 1615600 5700000 1616120 5701120 1616632 5700928 -1616304 5701200 1616496 5701136 1616576 5701000 1616120 5701120 -1615600 5700000 1615392 5700008 1615168 5700080 1616120 5701120 -1615168 5700080 1615072 5700064 1616120 5701120 1615392 5700008 -1615600 5700000 1615392 5700008 1616120 5701120 1615776 5699960 -1616304 5701200 1616120 5701120 1613464 5703016 1613592 5703136 -1616304 5701200 1616120 5701120 1613592 5703136 1613584 5703232 -1613464 5703016 1613512 5703064 1613592 5703136 1616120 5701120 -1613512 5703064 1613560 5703120 1613592 5703136 1616120 5701120 -1616120 5701120 1613304 5702872 1613464 5703016 1613512 5703064 -1613592 5703136 1616304 5701200 1616120 5701120 1613512 5703064 -1616120 5701120 1613592 5703136 1616304 5701200 1616576 5701000 -1615072 5700064 1616096 5701128 1616120 5701120 1615168 5700080 -1615072 5700064 1613304 5702872 1616096 5701128 1615168 5700080 -1613304 5702872 1616096 5701128 1615072 5700064 1614280 5699976 -1613304 5702872 1616120 5701120 1616096 5701128 1614280 5699976 -1616096 5701128 1615168 5700080 1615072 5700064 1614280 5699976 -1615072 5700064 1614600 5699912 1614280 5699976 1616096 5701128 -1616120 5701120 1616096 5701128 1613304 5702872 1613464 5703016 -1616096 5701128 1614280 5699976 1613304 5702872 1613464 5703016 -1616120 5701120 1615392 5700008 1615168 5700080 1616096 5701128 -1615168 5700080 1615072 5700064 1616096 5701128 1615392 5700008 -1616120 5701120 1615600 5700000 1615392 5700008 1616096 5701128 -1615392 5700008 1615168 5700080 1616096 5701128 1615600 5700000 -1616120 5701120 1616096 5701128 1613464 5703016 1613512 5703064 -1616096 5701128 1613304 5702872 1613464 5703016 1613512 5703064 -1616120 5701120 1616096 5701128 1613512 5703064 1613592 5703136 -1613512 5703064 1613560 5703120 1613592 5703136 1616096 5701128 -1616096 5701128 1613464 5703016 1613512 5703064 1613592 5703136 -1616096 5701128 1613592 5703136 1616120 5701120 1615600 5700000 -1613304 5702872 1613344 5702912 1613464 5703016 1616096 5701128 -1616120 5701120 1615776 5699960 1615600 5700000 1616096 5701128 -1616120 5701120 1616632 5700928 1615776 5699960 1616096 5701128 -1615600 5700000 1615392 5700008 1616096 5701128 1615776 5699960 -1616120 5701120 1615776 5699960 1616096 5701128 1613592 5703136 -1616120 5701120 1616096 5701128 1613592 5703136 1616304 5701200 -1613592 5703136 1613584 5703232 1616304 5701200 1616096 5701128 -1616096 5701128 1613512 5703064 1613592 5703136 1616304 5701200 -1616120 5701120 1615776 5699960 1616096 5701128 1616304 5701200 -1613304 5702872 1616096 5701128 1614280 5699976 1614160 5699968 -1616096 5701128 1615936 5701216 1613304 5702872 1613464 5703016 -1616096 5701128 1614280 5699976 1615936 5701216 1613464 5703016 -1615936 5701216 1614280 5699976 1613304 5702872 1613464 5703016 -1614280 5699976 1615936 5701216 1616096 5701128 1615072 5700064 -1615936 5701216 1613464 5703016 1616096 5701128 1615072 5700064 -1616096 5701128 1615168 5700080 1615072 5700064 1615936 5701216 -1616096 5701128 1615392 5700008 1615168 5700080 1615936 5701216 -1616096 5701128 1615392 5700008 1615936 5701216 1613464 5703016 -1615168 5700080 1615072 5700064 1615936 5701216 1615392 5700008 -1614280 5699976 1613304 5702872 1615936 5701216 1615072 5700064 -1615072 5700064 1614280 5699976 1615936 5701216 1615168 5700080 -1614280 5699976 1615936 5701216 1615072 5700064 1614600 5699912 -1616096 5701128 1615936 5701216 1613464 5703016 1613512 5703064 -1615936 5701216 1613304 5702872 1613464 5703016 1613512 5703064 -1616096 5701128 1615392 5700008 1615936 5701216 1613512 5703064 -1616096 5701128 1615600 5700000 1615392 5700008 1615936 5701216 -1615392 5700008 1615168 5700080 1615936 5701216 1615600 5700000 -1616096 5701128 1615600 5700000 1615936 5701216 1613512 5703064 -1616096 5701128 1615776 5699960 1615600 5700000 1615936 5701216 -1616096 5701128 1615936 5701216 1613512 5703064 1613592 5703136 -1616096 5701128 1615600 5700000 1615936 5701216 1613592 5703136 -1615936 5701216 1613464 5703016 1613512 5703064 1613592 5703136 -1616096 5701128 1615936 5701216 1613592 5703136 1616304 5701200 -1613592 5703136 1613584 5703232 1616304 5701200 1615936 5701216 -1613584 5703232 1616368 5701208 1616304 5701200 1615936 5701216 -1613584 5703232 1616368 5701208 1615936 5701216 1613592 5703136 -1613584 5703232 1617792 5707104 1616368 5701208 1615936 5701216 -1616096 5701128 1615600 5700000 1615936 5701216 1616304 5701200 -1616304 5701200 1616096 5701128 1615936 5701216 1616368 5701208 -1613512 5703064 1613560 5703120 1613592 5703136 1615936 5701216 -1615936 5701216 1613512 5703064 1613592 5703136 1613584 5703232 -1613304 5702872 1613344 5702912 1613464 5703016 1615936 5701216 -1616096 5701128 1615936 5701216 1616304 5701200 1616120 5701120 -1613304 5702872 1615936 5701216 1614280 5699976 1614160 5699968 -1615936 5701216 1615768 5701248 1613304 5702872 1613464 5703016 -1615936 5701216 1615768 5701248 1613464 5703016 1613512 5703064 -1615936 5701216 1614280 5699976 1615768 5701248 1613512 5703064 -1614280 5699976 1615768 5701248 1615936 5701216 1615072 5700064 -1615768 5701248 1613512 5703064 1615936 5701216 1615072 5700064 -1615768 5701248 1614280 5699976 1613304 5702872 1613464 5703016 -1615768 5701248 1613304 5702872 1613464 5703016 1613512 5703064 -1614280 5699976 1613304 5702872 1615768 5701248 1615072 5700064 -1615936 5701216 1615168 5700080 1615072 5700064 1615768 5701248 -1615936 5701216 1615392 5700008 1615168 5700080 1615768 5701248 -1615936 5701216 1615600 5700000 1615392 5700008 1615768 5701248 -1615392 5700008 1615168 5700080 1615768 5701248 1615600 5700000 -1615936 5701216 1615600 5700000 1615768 5701248 1613512 5703064 -1615072 5700064 1614280 5699976 1615768 5701248 1615168 5700080 -1615168 5700080 1615072 5700064 1615768 5701248 1615392 5700008 -1614280 5699976 1615768 5701248 1615072 5700064 1614600 5699912 -1615936 5701216 1615768 5701248 1613512 5703064 1613592 5703136 -1615768 5701248 1613464 5703016 1613512 5703064 1613592 5703136 -1615936 5701216 1615600 5700000 1615768 5701248 1613592 5703136 -1613512 5703064 1613560 5703120 1613592 5703136 1615768 5701248 -1615936 5701216 1616096 5701128 1615600 5700000 1615768 5701248 -1615600 5700000 1615392 5700008 1615768 5701248 1616096 5701128 -1615936 5701216 1616096 5701128 1615768 5701248 1613592 5703136 -1616096 5701128 1615776 5699960 1615600 5700000 1615768 5701248 -1615936 5701216 1615768 5701248 1613592 5703136 1613584 5703232 -1615936 5701216 1615768 5701248 1613584 5703232 1616368 5701208 -1613584 5703232 1617792 5707104 1616368 5701208 1615768 5701248 -1615936 5701216 1615768 5701248 1616368 5701208 1616304 5701200 -1615936 5701216 1616096 5701128 1615768 5701248 1616368 5701208 -1615768 5701248 1613512 5703064 1613592 5703136 1613584 5703232 -1615768 5701248 1613592 5703136 1613584 5703232 1616368 5701208 -1613304 5702872 1613344 5702912 1613464 5703016 1615768 5701248 -1613304 5702872 1613344 5702912 1615768 5701248 1614280 5699976 -1613464 5703016 1613512 5703064 1615768 5701248 1613344 5702912 -1613344 5702912 1613392 5702960 1613464 5703016 1615768 5701248 -1613304 5702872 1615768 5701248 1614280 5699976 1614160 5699968 -1615768 5701248 1615696 5701248 1613304 5702872 1613344 5702912 -1615696 5701248 1614280 5699976 1613304 5702872 1613344 5702912 -1614280 5699976 1615696 5701248 1615768 5701248 1615072 5700064 -1614280 5699976 1613304 5702872 1615696 5701248 1615072 5700064 -1615768 5701248 1615168 5700080 1615072 5700064 1615696 5701248 -1615072 5700064 1614280 5699976 1615696 5701248 1615168 5700080 -1615768 5701248 1615168 5700080 1615696 5701248 1613344 5702912 -1615768 5701248 1615392 5700008 1615168 5700080 1615696 5701248 -1615768 5701248 1615600 5700000 1615392 5700008 1615696 5701248 -1615768 5701248 1616096 5701128 1615600 5700000 1615696 5701248 -1615600 5700000 1615392 5700008 1615696 5701248 1616096 5701128 -1615168 5700080 1615072 5700064 1615696 5701248 1615392 5700008 -1615768 5701248 1616096 5701128 1615696 5701248 1613344 5702912 -1615392 5700008 1615168 5700080 1615696 5701248 1615600 5700000 -1614280 5699976 1615696 5701248 1615072 5700064 1614600 5699912 -1616096 5701128 1615776 5699960 1615600 5700000 1615696 5701248 -1615768 5701248 1615936 5701216 1616096 5701128 1615696 5701248 -1615768 5701248 1615696 5701248 1613344 5702912 1613464 5703016 -1615696 5701248 1613304 5702872 1613344 5702912 1613464 5703016 -1615768 5701248 1615696 5701248 1613464 5703016 1613512 5703064 -1615768 5701248 1615696 5701248 1613512 5703064 1613592 5703136 -1615696 5701248 1613464 5703016 1613512 5703064 1613592 5703136 -1615768 5701248 1616096 5701128 1615696 5701248 1613592 5703136 -1615768 5701248 1615696 5701248 1613592 5703136 1613584 5703232 -1615696 5701248 1613512 5703064 1613592 5703136 1613584 5703232 -1615768 5701248 1616096 5701128 1615696 5701248 1613584 5703232 -1613512 5703064 1613560 5703120 1613592 5703136 1615696 5701248 -1613344 5702912 1613392 5702960 1613464 5703016 1615696 5701248 -1615768 5701248 1615696 5701248 1613584 5703232 1616368 5701208 -1615696 5701248 1613344 5702912 1613464 5703016 1613512 5703064 -1613304 5702872 1615696 5701248 1614280 5699976 1614160 5699968 -1615696 5701248 1615512 5701184 1613304 5702872 1613344 5702912 -1615696 5701248 1614280 5699976 1615512 5701184 1613344 5702912 -1614280 5699976 1615512 5701184 1615696 5701248 1615072 5700064 -1615512 5701184 1613344 5702912 1615696 5701248 1615072 5700064 -1615512 5701184 1614280 5699976 1613304 5702872 1613344 5702912 -1614280 5699976 1613304 5702872 1615512 5701184 1615072 5700064 -1615696 5701248 1615512 5701184 1613344 5702912 1613464 5703016 -1615512 5701184 1613304 5702872 1613344 5702912 1613464 5703016 -1615696 5701248 1615072 5700064 1615512 5701184 1613464 5703016 -1615696 5701248 1615168 5700080 1615072 5700064 1615512 5701184 -1615696 5701248 1615168 5700080 1615512 5701184 1613464 5703016 -1615072 5700064 1614280 5699976 1615512 5701184 1615168 5700080 -1615696 5701248 1615392 5700008 1615168 5700080 1615512 5701184 -1615696 5701248 1615392 5700008 1615512 5701184 1613464 5703016 -1615168 5700080 1615072 5700064 1615512 5701184 1615392 5700008 -1615696 5701248 1615600 5700000 1615392 5700008 1615512 5701184 -1615696 5701248 1615600 5700000 1615512 5701184 1613464 5703016 -1615696 5701248 1616096 5701128 1615600 5700000 1615512 5701184 -1615696 5701248 1616096 5701128 1615512 5701184 1613464 5703016 -1615696 5701248 1615768 5701248 1616096 5701128 1615512 5701184 -1615696 5701248 1615768 5701248 1615512 5701184 1613464 5703016 -1616096 5701128 1615600 5700000 1615512 5701184 1615768 5701248 -1615392 5700008 1615168 5700080 1615512 5701184 1615600 5700000 -1615600 5700000 1615392 5700008 1615512 5701184 1616096 5701128 -1614280 5699976 1615512 5701184 1615072 5700064 1614600 5699912 -1616096 5701128 1615776 5699960 1615600 5700000 1615512 5701184 -1613344 5702912 1613392 5702960 1613464 5703016 1615512 5701184 -1615768 5701248 1615936 5701216 1616096 5701128 1615512 5701184 -1615768 5701248 1615936 5701216 1615512 5701184 1615696 5701248 -1616096 5701128 1615600 5700000 1615512 5701184 1615936 5701216 -1615696 5701248 1615512 5701184 1613464 5703016 1613512 5703064 -1615696 5701248 1615768 5701248 1615512 5701184 1613512 5703064 -1615512 5701184 1613344 5702912 1613464 5703016 1613512 5703064 -1615696 5701248 1615512 5701184 1613512 5703064 1613592 5703136 -1615696 5701248 1615512 5701184 1613592 5703136 1613584 5703232 -1615696 5701248 1615768 5701248 1615512 5701184 1613592 5703136 -1613512 5703064 1613560 5703120 1613592 5703136 1615512 5701184 -1615512 5701184 1613464 5703016 1613512 5703064 1613592 5703136 -1613304 5702872 1615512 5701184 1614280 5699976 1614160 5699968 -1613304 5702872 1613344 5702912 1615512 5701184 1614160 5699968 -1615512 5701184 1615072 5700064 1614280 5699976 1614160 5699968 -1613304 5702872 1615512 5701184 1614160 5699968 1613256 5702848 -1615512 5701184 1615352 5701048 1613304 5702872 1613344 5702912 -1615512 5701184 1615352 5701048 1613344 5702912 1613464 5703016 -1615352 5701048 1613304 5702872 1613344 5702912 1613464 5703016 -1615512 5701184 1614160 5699968 1615352 5701048 1613464 5703016 -1615352 5701048 1614160 5699968 1613304 5702872 1613344 5702912 -1615512 5701184 1615352 5701048 1613464 5703016 1613512 5703064 -1615352 5701048 1613344 5702912 1613464 5703016 1613512 5703064 -1615512 5701184 1614160 5699968 1615352 5701048 1613512 5703064 -1613344 5702912 1613392 5702960 1613464 5703016 1615352 5701048 -1615512 5701184 1615352 5701048 1613512 5703064 1613592 5703136 -1615512 5701184 1614160 5699968 1615352 5701048 1613592 5703136 -1615352 5701048 1613464 5703016 1613512 5703064 1613592 5703136 -1615512 5701184 1615352 5701048 1613592 5703136 1615696 5701248 -1613512 5703064 1613560 5703120 1613592 5703136 1615352 5701048 -1614160 5699968 1615352 5701048 1615512 5701184 1614280 5699976 -1615352 5701048 1613592 5703136 1615512 5701184 1614280 5699976 -1615512 5701184 1615072 5700064 1614280 5699976 1615352 5701048 -1615512 5701184 1615168 5700080 1615072 5700064 1615352 5701048 -1615512 5701184 1615168 5700080 1615352 5701048 1613592 5703136 -1615072 5700064 1614280 5699976 1615352 5701048 1615168 5700080 -1614160 5699968 1613304 5702872 1615352 5701048 1614280 5699976 -1615512 5701184 1615392 5700008 1615168 5700080 1615352 5701048 -1615168 5700080 1615072 5700064 1615352 5701048 1615392 5700008 -1615512 5701184 1615392 5700008 1615352 5701048 1613592 5703136 -1615512 5701184 1615600 5700000 1615392 5700008 1615352 5701048 -1615512 5701184 1615600 5700000 1615352 5701048 1613592 5703136 -1615392 5700008 1615168 5700080 1615352 5701048 1615600 5700000 -1615512 5701184 1616096 5701128 1615600 5700000 1615352 5701048 -1615512 5701184 1616096 5701128 1615352 5701048 1613592 5703136 -1615512 5701184 1615936 5701216 1616096 5701128 1615352 5701048 -1615512 5701184 1615936 5701216 1615352 5701048 1613592 5703136 -1615600 5700000 1615392 5700008 1615352 5701048 1616096 5701128 -1616096 5701128 1615600 5700000 1615352 5701048 1615936 5701216 -1615072 5700064 1614600 5699912 1614280 5699976 1615352 5701048 -1616096 5701128 1615776 5699960 1615600 5700000 1615352 5701048 -1615512 5701184 1615768 5701248 1615936 5701216 1615352 5701048 -1614280 5699976 1614160 5699968 1615352 5701048 1615072 5700064 -1613304 5702872 1615352 5701048 1614160 5699968 1613256 5702848 -1615352 5701048 1614280 5699976 1614160 5699968 1613256 5702848 -1613304 5702872 1613344 5702912 1615352 5701048 1613256 5702848 -1614160 5699968 1612232 5702104 1613256 5702848 1615352 5701048 -1615352 5701048 1615192 5700896 1614160 5699968 1613256 5702848 -1615352 5701048 1614280 5699976 1615192 5700896 1613256 5702848 -1615192 5700896 1614280 5699976 1614160 5699968 1613256 5702848 -1614160 5699968 1612232 5702104 1613256 5702848 1615192 5700896 -1614280 5699976 1615192 5700896 1615352 5701048 1615072 5700064 -1614280 5699976 1614160 5699968 1615192 5700896 1615072 5700064 -1615352 5701048 1615168 5700080 1615072 5700064 1615192 5700896 -1615352 5701048 1615392 5700008 1615168 5700080 1615192 5700896 -1615168 5700080 1615072 5700064 1615192 5700896 1615392 5700008 -1615192 5700896 1613256 5702848 1615352 5701048 1615392 5700008 -1615352 5701048 1615600 5700000 1615392 5700008 1615192 5700896 -1615392 5700008 1615168 5700080 1615192 5700896 1615600 5700000 -1615352 5701048 1615600 5700000 1615192 5700896 1613256 5702848 -1615352 5701048 1616096 5701128 1615600 5700000 1615192 5700896 -1614280 5699976 1615192 5700896 1615072 5700064 1614600 5699912 -1614280 5699976 1614160 5699968 1615192 5700896 1614600 5699912 -1615072 5700064 1614856 5699920 1614600 5699912 1615192 5700896 -1615072 5700064 1614600 5699912 1615192 5700896 1615168 5700080 -1615352 5701048 1615192 5700896 1613256 5702848 1613304 5702872 -1615352 5701048 1615600 5700000 1615192 5700896 1613304 5702872 -1615192 5700896 1614160 5699968 1613256 5702848 1613304 5702872 -1615352 5701048 1615192 5700896 1613304 5702872 1613344 5702912 -1615352 5701048 1615192 5700896 1613344 5702912 1613464 5703016 -1615352 5701048 1615192 5700896 1613464 5703016 1613512 5703064 -1615352 5701048 1615600 5700000 1615192 5700896 1613464 5703016 -1615192 5700896 1613304 5702872 1613344 5702912 1613464 5703016 -1613344 5702912 1613392 5702960 1613464 5703016 1615192 5700896 -1615192 5700896 1613256 5702848 1613304 5702872 1613344 5702912 -1615192 5700896 1615048 5700768 1613256 5702848 1613304 5702872 -1615192 5700896 1614160 5699968 1615048 5700768 1613304 5702872 -1615048 5700768 1614160 5699968 1613256 5702848 1613304 5702872 -1614160 5699968 1615048 5700768 1615192 5700896 1614280 5699976 -1615048 5700768 1613304 5702872 1615192 5700896 1614280 5699976 -1615192 5700896 1614600 5699912 1614280 5699976 1615048 5700768 -1615192 5700896 1614600 5699912 1615048 5700768 1613304 5702872 -1614160 5699968 1613256 5702848 1615048 5700768 1614280 5699976 -1614280 5699976 1614160 5699968 1615048 5700768 1614600 5699912 -1613256 5702848 1615048 5700768 1614160 5699968 1612232 5702104 -1615192 5700896 1615072 5700064 1614600 5699912 1615048 5700768 -1615192 5700896 1615072 5700064 1615048 5700768 1613304 5702872 -1614600 5699912 1614280 5699976 1615048 5700768 1615072 5700064 -1615072 5700064 1614856 5699920 1614600 5699912 1615048 5700768 -1615192 5700896 1615168 5700080 1615072 5700064 1615048 5700768 -1615192 5700896 1615168 5700080 1615048 5700768 1613304 5702872 -1615192 5700896 1615392 5700008 1615168 5700080 1615048 5700768 -1615192 5700896 1615392 5700008 1615048 5700768 1613304 5702872 -1615192 5700896 1615600 5700000 1615392 5700008 1615048 5700768 -1615072 5700064 1614600 5699912 1615048 5700768 1615168 5700080 -1615168 5700080 1615072 5700064 1615048 5700768 1615392 5700008 -1615192 5700896 1615048 5700768 1613304 5702872 1613344 5702912 -1615048 5700768 1614912 5700728 1613256 5702848 1613304 5702872 -1615048 5700768 1614160 5699968 1614912 5700728 1613304 5702872 -1614160 5699968 1614912 5700728 1615048 5700768 1614280 5699976 -1614912 5700728 1613304 5702872 1615048 5700768 1614280 5699976 -1614912 5700728 1614160 5699968 1613256 5702848 1613304 5702872 -1614160 5699968 1613256 5702848 1614912 5700728 1614280 5699976 -1615048 5700768 1614912 5700728 1613304 5702872 1615192 5700896 -1614912 5700728 1613256 5702848 1613304 5702872 1615192 5700896 -1615048 5700768 1614280 5699976 1614912 5700728 1615192 5700896 -1615048 5700768 1614600 5699912 1614280 5699976 1614912 5700728 -1615048 5700768 1615072 5700064 1614600 5699912 1614912 5700728 -1615048 5700768 1615072 5700064 1614912 5700728 1615192 5700896 -1614280 5699976 1614160 5699968 1614912 5700728 1614600 5699912 -1614600 5699912 1614280 5699976 1614912 5700728 1615072 5700064 -1613256 5702848 1614912 5700728 1614160 5699968 1612232 5702104 -1613256 5702848 1613304 5702872 1614912 5700728 1612232 5702104 -1614912 5700728 1614280 5699976 1614160 5699968 1612232 5702104 -1613256 5702848 1614912 5700728 1612232 5702104 1612256 5702160 -1615048 5700768 1615168 5700080 1615072 5700064 1614912 5700728 -1615072 5700064 1614600 5699912 1614912 5700728 1615168 5700080 -1615048 5700768 1615168 5700080 1614912 5700728 1615192 5700896 -1615072 5700064 1614856 5699920 1614600 5699912 1614912 5700728 -1615072 5700064 1614856 5699920 1614912 5700728 1615168 5700080 -1614600 5699912 1614280 5699976 1614912 5700728 1614856 5699920 -1614856 5699920 1614728 5699896 1614600 5699912 1614912 5700728 -1615048 5700768 1615392 5700008 1615168 5700080 1614912 5700728 -1613304 5702872 1613344 5702912 1615192 5700896 1614912 5700728 -1613304 5702872 1613344 5702912 1614912 5700728 1613256 5702848 -1615192 5700896 1615048 5700768 1614912 5700728 1613344 5702912 -1613344 5702912 1613464 5703016 1615192 5700896 1614912 5700728 -1613464 5703016 1615352 5701048 1615192 5700896 1614912 5700728 -1613464 5703016 1613512 5703064 1615352 5701048 1614912 5700728 -1615192 5700896 1615048 5700768 1614912 5700728 1615352 5701048 -1613464 5703016 1615352 5701048 1614912 5700728 1613344 5702912 -1613344 5702912 1613392 5702960 1613464 5703016 1614912 5700728 -1613344 5702912 1613464 5703016 1614912 5700728 1613304 5702872 -1614160 5699968 1614056 5699912 1612232 5702104 1614912 5700728 -1614160 5699968 1614792 5700712 1614912 5700728 1614280 5699976 -1614912 5700728 1614600 5699912 1614280 5699976 1614792 5700712 -1614792 5700712 1612232 5702104 1614912 5700728 1614600 5699912 -1614280 5699976 1614160 5699968 1614792 5700712 1614600 5699912 -1614912 5700728 1614856 5699920 1614600 5699912 1614792 5700712 -1614600 5699912 1614280 5699976 1614792 5700712 1614856 5699920 -1614912 5700728 1614856 5699920 1614792 5700712 1612232 5702104 -1614160 5699968 1612232 5702104 1614792 5700712 1614280 5699976 -1614912 5700728 1614792 5700712 1612232 5702104 1613256 5702848 -1614912 5700728 1614792 5700712 1613256 5702848 1613304 5702872 -1614912 5700728 1614792 5700712 1613304 5702872 1613344 5702912 -1614792 5700712 1613256 5702848 1613304 5702872 1613344 5702912 -1614912 5700728 1614856 5699920 1614792 5700712 1613344 5702912 -1614792 5700712 1614160 5699968 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614792 5700712 -1614792 5700712 1612232 5702104 1613256 5702848 1613304 5702872 -1614856 5699920 1614728 5699896 1614600 5699912 1614792 5700712 -1614600 5699912 1614280 5699976 1614792 5700712 1614728 5699896 -1614856 5699920 1614728 5699896 1614792 5700712 1614912 5700728 -1614912 5700728 1615072 5700064 1614856 5699920 1614792 5700712 -1614912 5700728 1615168 5700080 1615072 5700064 1614792 5700712 -1614912 5700728 1615072 5700064 1614792 5700712 1613344 5702912 -1614856 5699920 1614728 5699896 1614792 5700712 1615072 5700064 -1614912 5700728 1614792 5700712 1613344 5702912 1613464 5703016 -1614792 5700712 1613304 5702872 1613344 5702912 1613464 5703016 -1614912 5700728 1615072 5700064 1614792 5700712 1613464 5703016 -1614912 5700728 1614792 5700712 1613464 5703016 1615352 5701048 -1614912 5700728 1615072 5700064 1614792 5700712 1615352 5701048 -1613464 5703016 1613512 5703064 1615352 5701048 1614792 5700712 -1614912 5700728 1614792 5700712 1615352 5701048 1615192 5700896 -1614912 5700728 1615072 5700064 1614792 5700712 1615192 5700896 -1614912 5700728 1614792 5700712 1615192 5700896 1615048 5700768 -1614792 5700712 1613464 5703016 1615352 5701048 1615192 5700896 -1613344 5702912 1613392 5702960 1613464 5703016 1614792 5700712 -1614792 5700712 1613344 5702912 1613464 5703016 1615352 5701048 -1612232 5702104 1614792 5700712 1614160 5699968 1614056 5699912 -1614792 5700712 1614752 5700720 1612232 5702104 1613256 5702848 -1614792 5700712 1614160 5699968 1614752 5700720 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614752 5700720 -1614160 5699968 1614752 5700720 1614792 5700712 1614280 5699976 -1614792 5700712 1614600 5699912 1614280 5699976 1614752 5700720 -1614792 5700712 1614728 5699896 1614600 5699912 1614752 5700720 -1614752 5700720 1613256 5702848 1614792 5700712 1614600 5699912 -1614280 5699976 1614160 5699968 1614752 5700720 1614600 5699912 -1614752 5700720 1614160 5699968 1612232 5702104 1613256 5702848 -1614160 5699968 1612232 5702104 1614752 5700720 1614280 5699976 -1614792 5700712 1614752 5700720 1613256 5702848 1613304 5702872 -1614792 5700712 1614752 5700720 1613304 5702872 1613344 5702912 -1614792 5700712 1614752 5700720 1613344 5702912 1613464 5703016 -1614752 5700720 1613304 5702872 1613344 5702912 1613464 5703016 -1614752 5700720 1612232 5702104 1613256 5702848 1613304 5702872 -1614792 5700712 1614600 5699912 1614752 5700720 1613464 5703016 -1614752 5700720 1613256 5702848 1613304 5702872 1613344 5702912 -1613344 5702912 1613392 5702960 1613464 5703016 1614752 5700720 -1614792 5700712 1614752 5700720 1613464 5703016 1615352 5701048 -1614752 5700720 1613344 5702912 1613464 5703016 1615352 5701048 -1614792 5700712 1614600 5699912 1614752 5700720 1615352 5701048 -1613464 5703016 1613512 5703064 1615352 5701048 1614752 5700720 -1614792 5700712 1614752 5700720 1615352 5701048 1615192 5700896 -1614792 5700712 1614600 5699912 1614752 5700720 1615192 5700896 -1614792 5700712 1614752 5700720 1615192 5700896 1614912 5700728 -1614792 5700712 1614600 5699912 1614752 5700720 1614912 5700728 -1615192 5700896 1615048 5700768 1614912 5700728 1614752 5700720 -1614752 5700720 1615352 5701048 1615192 5700896 1614912 5700728 -1614752 5700720 1613464 5703016 1615352 5701048 1615192 5700896 -1612232 5702104 1614752 5700720 1614160 5699968 1614056 5699912 -1612232 5702104 1613256 5702848 1614752 5700720 1614056 5699912 -1614752 5700720 1614280 5699976 1614160 5699968 1614056 5699912 -1612232 5702104 1614752 5700720 1614056 5699912 1612208 5702072 -1612232 5702104 1613256 5702848 1614752 5700720 1612208 5702072 -1614752 5700720 1614160 5699968 1614056 5699912 1612208 5702072 -1614056 5699912 1612184 5702056 1612208 5702072 1614752 5700720 -1614056 5699912 1614440 5700688 1614752 5700720 1614160 5699968 -1614440 5700688 1612208 5702072 1614752 5700720 1614160 5699968 -1614752 5700720 1614280 5699976 1614160 5699968 1614440 5700688 -1614752 5700720 1614600 5699912 1614280 5699976 1614440 5700688 -1614752 5700720 1614792 5700712 1614600 5699912 1614440 5700688 -1614752 5700720 1614600 5699912 1614440 5700688 1612208 5702072 -1614280 5699976 1614160 5699968 1614440 5700688 1614600 5699912 -1614056 5699912 1612208 5702072 1614440 5700688 1614160 5699968 -1614160 5699968 1614056 5699912 1614440 5700688 1614280 5699976 -1614752 5700720 1614440 5700688 1612208 5702072 1612232 5702104 -1614752 5700720 1614440 5700688 1612232 5702104 1613256 5702848 -1614752 5700720 1614440 5700688 1613256 5702848 1613304 5702872 -1612232 5702104 1612256 5702160 1613256 5702848 1614440 5700688 -1614440 5700688 1612232 5702104 1613256 5702848 1613304 5702872 -1614752 5700720 1614600 5699912 1614440 5700688 1613304 5702872 -1614440 5700688 1614056 5699912 1612208 5702072 1612232 5702104 -1614752 5700720 1614440 5700688 1613304 5702872 1613344 5702912 -1614752 5700720 1614440 5700688 1613344 5702912 1613464 5703016 -1614752 5700720 1614440 5700688 1613464 5703016 1615352 5701048 -1614440 5700688 1613344 5702912 1613464 5703016 1615352 5701048 -1614440 5700688 1613256 5702848 1613304 5702872 1613344 5702912 -1613464 5703016 1613512 5703064 1615352 5701048 1614440 5700688 -1614752 5700720 1614600 5699912 1614440 5700688 1615352 5701048 -1614440 5700688 1613304 5702872 1613344 5702912 1613464 5703016 -1613344 5702912 1613392 5702960 1613464 5703016 1614440 5700688 -1614752 5700720 1614440 5700688 1615352 5701048 1615192 5700896 -1614440 5700688 1612208 5702072 1612232 5702104 1613256 5702848 -1612208 5702072 1614440 5700688 1614056 5699912 1612184 5702056 -1614440 5700688 1614120 5700592 1612208 5702072 1612232 5702104 -1614440 5700688 1614056 5699912 1614120 5700592 1612232 5702104 -1614056 5699912 1614120 5700592 1614440 5700688 1614160 5699968 -1614120 5700592 1612232 5702104 1614440 5700688 1614160 5699968 -1614120 5700592 1614056 5699912 1612208 5702072 1612232 5702104 -1614056 5699912 1612208 5702072 1614120 5700592 1614160 5699968 -1614440 5700688 1614280 5699976 1614160 5699968 1614120 5700592 -1614440 5700688 1614600 5699912 1614280 5699976 1614120 5700592 -1614440 5700688 1614280 5699976 1614120 5700592 1612232 5702104 -1614160 5699968 1614056 5699912 1614120 5700592 1614280 5699976 -1614440 5700688 1614120 5700592 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1614120 5700592 -1614440 5700688 1614120 5700592 1613256 5702848 1613304 5702872 -1614440 5700688 1614120 5700592 1613304 5702872 1613344 5702912 -1614120 5700592 1612208 5702072 1612232 5702104 1613256 5702848 -1614440 5700688 1614280 5699976 1614120 5700592 1613304 5702872 -1614120 5700592 1612232 5702104 1613256 5702848 1613304 5702872 -1612208 5702072 1614120 5700592 1614056 5699912 1612184 5702056 -1612208 5702072 1612232 5702104 1614120 5700592 1612184 5702056 -1614120 5700592 1614160 5699968 1614056 5699912 1612184 5702056 -1614056 5699912 1613984 5699832 1612184 5702056 1614120 5700592 -1614056 5699912 1613984 5699832 1614120 5700592 1614160 5699968 -1613984 5699832 1611440 5699632 1612184 5702056 1614120 5700592 -1611440 5699632 1611408 5699664 1612184 5702056 1614120 5700592 -1613984 5699832 1613896 5699672 1611440 5699632 1614120 5700592 -1612184 5702056 1612208 5702072 1614120 5700592 1611440 5699632 -1613984 5699832 1611440 5699632 1614120 5700592 1614056 5699912 -1614120 5700592 1613944 5700504 1611440 5699632 1612184 5702056 -1614120 5700592 1613984 5699832 1613944 5700504 1612184 5702056 -1613944 5700504 1613984 5699832 1611440 5699632 1612184 5702056 -1611440 5699632 1611408 5699664 1612184 5702056 1613944 5700504 -1611440 5699632 1613944 5700504 1613984 5699832 1613896 5699672 -1611440 5699632 1612184 5702056 1613944 5700504 1613896 5699672 -1613944 5700504 1614120 5700592 1613984 5699832 1613896 5699672 -1611440 5699632 1613944 5700504 1613896 5699672 1611480 5699576 -1611440 5699632 1612184 5702056 1613944 5700504 1611480 5699576 -1613896 5699672 1611528 5699488 1611480 5699576 1613944 5700504 -1613896 5699672 1613488 5698888 1611528 5699488 1613944 5700504 -1611480 5699576 1611440 5699632 1613944 5700504 1611528 5699488 -1613944 5700504 1613984 5699832 1613896 5699672 1611528 5699488 -1614120 5700592 1613944 5700504 1612184 5702056 1612208 5702072 -1614120 5700592 1613944 5700504 1612208 5702072 1612232 5702104 -1614120 5700592 1613944 5700504 1612232 5702104 1613256 5702848 -1612232 5702104 1612256 5702160 1613256 5702848 1613944 5700504 -1613944 5700504 1612208 5702072 1612232 5702104 1613256 5702848 -1614120 5700592 1613984 5699832 1613944 5700504 1613256 5702848 -1613944 5700504 1611440 5699632 1612184 5702056 1612208 5702072 -1614120 5700592 1613944 5700504 1613256 5702848 1613304 5702872 -1613944 5700504 1612184 5702056 1612208 5702072 1612232 5702104 -1613984 5699832 1613944 5700504 1614120 5700592 1614056 5699912 -1613944 5700504 1613256 5702848 1614120 5700592 1614056 5699912 -1614120 5700592 1614160 5699968 1614056 5699912 1613944 5700504 -1614120 5700592 1614280 5699976 1614160 5699968 1613944 5700504 -1614120 5700592 1614160 5699968 1613944 5700504 1613256 5702848 -1613984 5699832 1613896 5699672 1613944 5700504 1614056 5699912 -1614056 5699912 1613984 5699832 1613944 5700504 1614160 5699968 -1611528 5699488 1613504 5700176 1613896 5699672 1613488 5698888 -1611528 5699488 1613944 5700504 1613504 5700176 1613488 5698888 -1613504 5700176 1613944 5700504 1613896 5699672 1613488 5698888 -1613896 5699672 1613856 5699232 1613488 5698888 1613504 5700176 -1613944 5700504 1613504 5700176 1611528 5699488 1611480 5699576 -1613944 5700504 1613896 5699672 1613504 5700176 1611480 5699576 -1613504 5700176 1613488 5698888 1611528 5699488 1611480 5699576 -1611528 5699488 1613504 5700176 1613488 5698888 1613440 5698848 -1611528 5699488 1613504 5700176 1613440 5698848 1611552 5699400 -1611528 5699488 1611480 5699576 1613504 5700176 1611552 5699400 -1613504 5700176 1613896 5699672 1613488 5698888 1613440 5698848 -1613440 5698848 1611560 5699312 1611552 5699400 1613504 5700176 -1613504 5700176 1613488 5698888 1613440 5698848 1611552 5699400 -1613944 5700504 1613504 5700176 1611480 5699576 1611440 5699632 -1613944 5700504 1613504 5700176 1611440 5699632 1612184 5702056 -1611440 5699632 1611408 5699664 1612184 5702056 1613504 5700176 -1612184 5702056 1613944 5700504 1613504 5700176 1611408 5699664 -1611408 5699664 1612160 5702056 1612184 5702056 1613504 5700176 -1613944 5700504 1613504 5700176 1612184 5702056 1612208 5702072 -1613504 5700176 1611408 5699664 1612184 5702056 1612208 5702072 -1613944 5700504 1613896 5699672 1613504 5700176 1612208 5702072 -1613504 5700176 1611528 5699488 1611480 5699576 1611440 5699632 -1613504 5700176 1611480 5699576 1611440 5699632 1611408 5699664 -1613896 5699672 1613504 5700176 1613944 5700504 1613984 5699832 -1613504 5700176 1612208 5702072 1613944 5700504 1613984 5699832 -1613944 5700504 1614056 5699912 1613984 5699832 1613504 5700176 -1613944 5700504 1614056 5699912 1613504 5700176 1612208 5702072 -1613896 5699672 1613488 5698888 1613504 5700176 1613984 5699832 -1613984 5699832 1613896 5699672 1613504 5700176 1614056 5699912 -1613944 5700504 1613504 5700176 1612208 5702072 1612232 5702104 -1613944 5700504 1614160 5699968 1614056 5699912 1613504 5700176 -1613504 5700176 1613448 5700144 1611552 5699400 1611528 5699488 -1613504 5700176 1613448 5700144 1611528 5699488 1611480 5699576 -1613448 5700144 1611552 5699400 1611528 5699488 1611480 5699576 -1613504 5700176 1613440 5698848 1613448 5700144 1611480 5699576 -1613448 5700144 1613440 5698848 1611552 5699400 1611528 5699488 -1611552 5699400 1613448 5700144 1613440 5698848 1611560 5699312 -1613504 5700176 1613448 5700144 1611480 5699576 1611440 5699632 -1613448 5700144 1611528 5699488 1611480 5699576 1611440 5699632 -1613504 5700176 1613440 5698848 1613448 5700144 1611440 5699632 -1613440 5698848 1613448 5700144 1613504 5700176 1613488 5698888 -1613440 5698848 1611552 5699400 1613448 5700144 1613488 5698888 -1613504 5700176 1613896 5699672 1613488 5698888 1613448 5700144 -1613448 5700144 1611440 5699632 1613504 5700176 1613896 5699672 -1613504 5700176 1613984 5699832 1613896 5699672 1613448 5700144 -1613896 5699672 1613856 5699232 1613488 5698888 1613448 5700144 -1613488 5698888 1613440 5698848 1613448 5700144 1613896 5699672 -1613504 5700176 1613448 5700144 1611440 5699632 1611408 5699664 -1613504 5700176 1613448 5700144 1611408 5699664 1612184 5702056 -1613504 5700176 1613448 5700144 1612184 5702056 1612208 5702072 -1611408 5699664 1612160 5702056 1612184 5702056 1613448 5700144 -1613448 5700144 1611408 5699664 1612184 5702056 1612208 5702072 -1613504 5700176 1613448 5700144 1612208 5702072 1613944 5700504 -1613504 5700176 1613896 5699672 1613448 5700144 1612208 5702072 -1613448 5700144 1611480 5699576 1611440 5699632 1611408 5699664 -1613448 5700144 1611440 5699632 1611408 5699664 1612184 5702056 -1612184 5702056 1613240 5700112 1611408 5699664 1612160 5702056 -1611408 5699664 1611384 5699672 1612160 5702056 1613240 5700112 -1613448 5700144 1613240 5700112 1612184 5702056 1612208 5702072 -1613448 5700144 1613240 5700112 1612208 5702072 1613504 5700176 -1613240 5700112 1612184 5702056 1612208 5702072 1613504 5700176 -1612184 5702056 1612208 5702072 1613240 5700112 1612160 5702056 -1613240 5700112 1613448 5700144 1611408 5699664 1612160 5702056 -1612208 5702072 1613944 5700504 1613504 5700176 1613240 5700112 -1613504 5700176 1613448 5700144 1613240 5700112 1613944 5700504 -1612208 5702072 1613944 5700504 1613240 5700112 1612184 5702056 -1613448 5700144 1611408 5699664 1613240 5700112 1613504 5700176 -1611408 5699664 1613240 5700112 1613448 5700144 1611440 5699632 -1611408 5699664 1612160 5702056 1613240 5700112 1611440 5699632 -1613240 5700112 1613504 5700176 1613448 5700144 1611440 5699632 -1613448 5700144 1611480 5699576 1611440 5699632 1613240 5700112 -1613448 5700144 1611528 5699488 1611480 5699576 1613240 5700112 -1613448 5700144 1611552 5699400 1611528 5699488 1613240 5700112 -1611528 5699488 1611480 5699576 1613240 5700112 1611552 5699400 -1613448 5700144 1611552 5699400 1613240 5700112 1613504 5700176 -1613448 5700144 1613440 5698848 1611552 5699400 1613240 5700112 -1611552 5699400 1611528 5699488 1613240 5700112 1613440 5698848 -1613448 5700144 1613488 5698888 1613440 5698848 1613240 5700112 -1613448 5700144 1613488 5698888 1613240 5700112 1613504 5700176 -1613440 5698848 1611552 5699400 1613240 5700112 1613488 5698888 -1613440 5698848 1611560 5699312 1611552 5699400 1613240 5700112 -1611552 5699400 1611528 5699488 1613240 5700112 1611560 5699312 -1613440 5698848 1611560 5699312 1613240 5700112 1613488 5698888 -1613440 5698848 1613424 5698816 1611560 5699312 1613240 5700112 -1611480 5699576 1611440 5699632 1613240 5700112 1611528 5699488 -1613448 5700144 1613896 5699672 1613488 5698888 1613240 5700112 -1613488 5698888 1613440 5698848 1613240 5700112 1613896 5699672 -1613448 5700144 1613896 5699672 1613240 5700112 1613504 5700176 -1613448 5700144 1613504 5700176 1613896 5699672 1613240 5700112 -1613896 5699672 1613856 5699232 1613488 5698888 1613240 5700112 -1613488 5698888 1613440 5698848 1613240 5700112 1613856 5699232 -1613896 5699672 1613856 5699232 1613240 5700112 1613448 5700144 -1611440 5699632 1611408 5699664 1613240 5700112 1611480 5699576 -1612208 5702072 1612232 5702104 1613944 5700504 1613240 5700112 -1613856 5699232 1613632 5698952 1613488 5698888 1613240 5700112 -1613440 5698848 1613176 5700072 1613240 5700112 1613488 5698888 -1613240 5700112 1613856 5699232 1613488 5698888 1613176 5700072 -1613176 5700072 1611560 5699312 1613240 5700112 1613856 5699232 -1613488 5698888 1613440 5698848 1613176 5700072 1613856 5699232 -1613440 5698848 1611560 5699312 1613176 5700072 1613488 5698888 -1613240 5700112 1613896 5699672 1613856 5699232 1613176 5700072 -1613856 5699232 1613488 5698888 1613176 5700072 1613896 5699672 -1613240 5700112 1613896 5699672 1613176 5700072 1611560 5699312 -1613240 5700112 1613176 5700072 1611560 5699312 1611552 5699400 -1613240 5700112 1613176 5700072 1611552 5699400 1611528 5699488 -1613240 5700112 1613896 5699672 1613176 5700072 1611528 5699488 -1613240 5700112 1613176 5700072 1611528 5699488 1611480 5699576 -1613176 5700072 1611552 5699400 1611528 5699488 1611480 5699576 -1613240 5700112 1613896 5699672 1613176 5700072 1611480 5699576 -1613176 5700072 1613440 5698848 1611560 5699312 1611552 5699400 -1613176 5700072 1611560 5699312 1611552 5699400 1611528 5699488 -1611560 5699312 1613176 5700072 1613440 5698848 1613424 5698816 -1613240 5700112 1613176 5700072 1611480 5699576 1611440 5699632 -1613240 5700112 1613896 5699672 1613176 5700072 1611440 5699632 -1613176 5700072 1611528 5699488 1611480 5699576 1611440 5699632 -1613240 5700112 1613448 5700144 1613896 5699672 1613176 5700072 -1613240 5700112 1613448 5700144 1613176 5700072 1611440 5699632 -1613448 5700144 1613504 5700176 1613896 5699672 1613176 5700072 -1613896 5699672 1613856 5699232 1613176 5700072 1613448 5700144 -1613240 5700112 1613176 5700072 1611440 5699632 1611408 5699664 -1613240 5700112 1613448 5700144 1613176 5700072 1611408 5699664 -1613240 5700112 1613176 5700072 1611408 5699664 1612160 5702056 -1611408 5699664 1611384 5699672 1612160 5702056 1613176 5700072 -1613240 5700112 1613176 5700072 1612160 5702056 1612184 5702056 -1613240 5700112 1613176 5700072 1612184 5702056 1612208 5702072 -1613240 5700112 1613448 5700144 1613176 5700072 1612184 5702056 -1613176 5700072 1611408 5699664 1612160 5702056 1612184 5702056 -1613176 5700072 1611480 5699576 1611440 5699632 1611408 5699664 -1613176 5700072 1611440 5699632 1611408 5699664 1612160 5702056 -1613856 5699232 1613632 5698952 1613488 5698888 1613176 5700072 -1613176 5700072 1613128 5700032 1611560 5699312 1611552 5699400 -1613128 5700032 1613440 5698848 1611560 5699312 1611552 5699400 -1613176 5700072 1613440 5698848 1613128 5700032 1611552 5699400 -1613440 5698848 1613128 5700032 1613176 5700072 1613488 5698888 -1613440 5698848 1611560 5699312 1613128 5700032 1613488 5698888 -1613176 5700072 1613856 5699232 1613488 5698888 1613128 5700032 -1613176 5700072 1613896 5699672 1613856 5699232 1613128 5700032 -1613856 5699232 1613488 5698888 1613128 5700032 1613896 5699672 -1613128 5700032 1611552 5699400 1613176 5700072 1613896 5699672 -1613488 5698888 1613440 5698848 1613128 5700032 1613856 5699232 -1613176 5700072 1613448 5700144 1613896 5699672 1613128 5700032 -1613896 5699672 1613856 5699232 1613128 5700032 1613448 5700144 -1613448 5700144 1613504 5700176 1613896 5699672 1613128 5700032 -1613176 5700072 1613448 5700144 1613128 5700032 1611552 5699400 -1613176 5700072 1613128 5700032 1611552 5699400 1611528 5699488 -1613176 5700072 1613128 5700032 1611528 5699488 1611480 5699576 -1613176 5700072 1613128 5700032 1611480 5699576 1611440 5699632 -1613128 5700032 1611528 5699488 1611480 5699576 1611440 5699632 -1613128 5700032 1611560 5699312 1611552 5699400 1611528 5699488 -1613176 5700072 1613448 5700144 1613128 5700032 1611440 5699632 -1613128 5700032 1611552 5699400 1611528 5699488 1611480 5699576 -1611560 5699312 1613128 5700032 1613440 5698848 1613424 5698816 -1611560 5699312 1611552 5699400 1613128 5700032 1613424 5698816 -1613128 5700032 1613488 5698888 1613440 5698848 1613424 5698816 -1611560 5699312 1613128 5700032 1613424 5698816 1613400 5698720 -1613176 5700072 1613128 5700032 1611440 5699632 1611408 5699664 -1613128 5700032 1611480 5699576 1611440 5699632 1611408 5699664 -1613176 5700072 1613448 5700144 1613128 5700032 1611408 5699664 -1613176 5700072 1613240 5700112 1613448 5700144 1613128 5700032 -1613176 5700072 1613128 5700032 1611408 5699664 1612160 5702056 -1611408 5699664 1611384 5699672 1612160 5702056 1613128 5700032 -1613176 5700072 1613128 5700032 1612160 5702056 1612184 5702056 -1613176 5700072 1613128 5700032 1612184 5702056 1613240 5700112 -1613176 5700072 1613448 5700144 1613128 5700032 1612184 5702056 -1613128 5700032 1611440 5699632 1611408 5699664 1612160 5702056 -1613128 5700032 1611408 5699664 1612160 5702056 1612184 5702056 -1613856 5699232 1613632 5698952 1613488 5698888 1613128 5700032 -1613128 5700032 1613112 5700016 1611560 5699312 1611552 5699400 -1613128 5700032 1613424 5698816 1613112 5700016 1611552 5699400 -1613112 5700016 1613424 5698816 1611560 5699312 1611552 5699400 -1613128 5700032 1613112 5700016 1611552 5699400 1611528 5699488 -1613112 5700016 1611560 5699312 1611552 5699400 1611528 5699488 -1613128 5700032 1613424 5698816 1613112 5700016 1611528 5699488 -1613128 5700032 1613112 5700016 1611528 5699488 1611480 5699576 -1613128 5700032 1613112 5700016 1611480 5699576 1611440 5699632 -1613128 5700032 1613424 5698816 1613112 5700016 1611440 5699632 -1613128 5700032 1613112 5700016 1611440 5699632 1611408 5699664 -1613112 5700016 1611480 5699576 1611440 5699632 1611408 5699664 -1613128 5700032 1613424 5698816 1613112 5700016 1611408 5699664 -1613112 5700016 1611552 5699400 1611528 5699488 1611480 5699576 -1613112 5700016 1611528 5699488 1611480 5699576 1611440 5699632 -1613424 5698816 1613112 5700016 1613128 5700032 1613440 5698848 -1613112 5700016 1611408 5699664 1613128 5700032 1613440 5698848 -1613128 5700032 1613488 5698888 1613440 5698848 1613112 5700016 -1613128 5700032 1613488 5698888 1613112 5700016 1611408 5699664 -1613424 5698816 1611560 5699312 1613112 5700016 1613440 5698848 -1613128 5700032 1613856 5699232 1613488 5698888 1613112 5700016 -1613128 5700032 1613856 5699232 1613112 5700016 1611408 5699664 -1613488 5698888 1613440 5698848 1613112 5700016 1613856 5699232 -1613128 5700032 1613896 5699672 1613856 5699232 1613112 5700016 -1613128 5700032 1613448 5700144 1613896 5699672 1613112 5700016 -1613128 5700032 1613448 5700144 1613112 5700016 1611408 5699664 -1613448 5700144 1613504 5700176 1613896 5699672 1613112 5700016 -1613896 5699672 1613856 5699232 1613112 5700016 1613448 5700144 -1613856 5699232 1613488 5698888 1613112 5700016 1613896 5699672 -1613128 5700032 1613176 5700072 1613448 5700144 1613112 5700016 -1613440 5698848 1613424 5698816 1613112 5700016 1613488 5698888 -1611560 5699312 1613112 5700016 1613424 5698816 1613400 5698720 -1613128 5700032 1613112 5700016 1611408 5699664 1612160 5702056 -1611408 5699664 1611384 5699672 1612160 5702056 1613112 5700016 -1613128 5700032 1613448 5700144 1613112 5700016 1612160 5702056 -1613112 5700016 1611440 5699632 1611408 5699664 1612160 5702056 -1613128 5700032 1613112 5700016 1612160 5702056 1612184 5702056 -1613128 5700032 1613112 5700016 1612184 5702056 1613176 5700072 -1613128 5700032 1613448 5700144 1613112 5700016 1612184 5702056 -1613112 5700016 1611408 5699664 1612160 5702056 1612184 5702056 -1613856 5699232 1613632 5698952 1613488 5698888 1613112 5700016 -1613112 5700016 1613096 5699944 1611560 5699312 1611552 5699400 -1613112 5700016 1613096 5699944 1611552 5699400 1611528 5699488 -1613096 5699944 1611560 5699312 1611552 5699400 1611528 5699488 -1613112 5700016 1613424 5698816 1613096 5699944 1611528 5699488 -1613424 5698816 1613096 5699944 1613112 5700016 1613440 5698848 -1613096 5699944 1611528 5699488 1613112 5700016 1613440 5698848 -1613096 5699944 1613424 5698816 1611560 5699312 1611552 5699400 -1613424 5698816 1611560 5699312 1613096 5699944 1613440 5698848 -1613112 5700016 1613096 5699944 1611528 5699488 1611480 5699576 -1613096 5699944 1611552 5699400 1611528 5699488 1611480 5699576 -1613112 5700016 1613440 5698848 1613096 5699944 1611480 5699576 -1613112 5700016 1613096 5699944 1611480 5699576 1611440 5699632 -1613112 5700016 1613096 5699944 1611440 5699632 1611408 5699664 -1613112 5700016 1613440 5698848 1613096 5699944 1611440 5699632 -1613096 5699944 1611528 5699488 1611480 5699576 1611440 5699632 -1613112 5700016 1613488 5698888 1613440 5698848 1613096 5699944 -1613112 5700016 1613856 5699232 1613488 5698888 1613096 5699944 -1613112 5700016 1613856 5699232 1613096 5699944 1611440 5699632 -1613440 5698848 1613424 5698816 1613096 5699944 1613488 5698888 -1613112 5700016 1613896 5699672 1613856 5699232 1613096 5699944 -1613856 5699232 1613488 5698888 1613096 5699944 1613896 5699672 -1613112 5700016 1613896 5699672 1613096 5699944 1611440 5699632 -1613112 5700016 1613448 5700144 1613896 5699672 1613096 5699944 -1613112 5700016 1613128 5700032 1613448 5700144 1613096 5699944 -1613112 5700016 1613128 5700032 1613096 5699944 1611440 5699632 -1613448 5700144 1613504 5700176 1613896 5699672 1613096 5699944 -1613448 5700144 1613896 5699672 1613096 5699944 1613128 5700032 -1613896 5699672 1613856 5699232 1613096 5699944 1613448 5700144 -1613128 5700032 1613176 5700072 1613448 5700144 1613096 5699944 -1613128 5700032 1613176 5700072 1613096 5699944 1613112 5700016 -1613448 5700144 1613896 5699672 1613096 5699944 1613176 5700072 -1613488 5698888 1613440 5698848 1613096 5699944 1613856 5699232 -1611560 5699312 1613096 5699944 1613424 5698816 1613400 5698720 -1613176 5700072 1613240 5700112 1613448 5700144 1613096 5699944 -1613448 5700144 1613896 5699672 1613096 5699944 1613240 5700112 -1613176 5700072 1613240 5700112 1613096 5699944 1613128 5700032 -1613856 5699232 1613632 5698952 1613488 5698888 1613096 5699944 -1613096 5699944 1613112 5699888 1611560 5699312 1611552 5699400 -1613112 5699888 1613424 5698816 1611560 5699312 1611552 5699400 -1613096 5699944 1613112 5699888 1611552 5699400 1611528 5699488 -1613096 5699944 1613112 5699888 1611528 5699488 1611480 5699576 -1613112 5699888 1611560 5699312 1611552 5699400 1611528 5699488 -1613096 5699944 1613424 5698816 1613112 5699888 1611528 5699488 -1613424 5698816 1613112 5699888 1613096 5699944 1613440 5698848 -1613424 5698816 1611560 5699312 1613112 5699888 1613440 5698848 -1613096 5699944 1613488 5698888 1613440 5698848 1613112 5699888 -1613112 5699888 1611528 5699488 1613096 5699944 1613488 5698888 -1613440 5698848 1613424 5698816 1613112 5699888 1613488 5698888 -1613096 5699944 1613856 5699232 1613488 5698888 1613112 5699888 -1613096 5699944 1613896 5699672 1613856 5699232 1613112 5699888 -1613488 5698888 1613440 5698848 1613112 5699888 1613856 5699232 -1613096 5699944 1613896 5699672 1613112 5699888 1611528 5699488 -1613096 5699944 1613448 5700144 1613896 5699672 1613112 5699888 -1613896 5699672 1613856 5699232 1613112 5699888 1613448 5700144 -1613096 5699944 1613448 5700144 1613112 5699888 1611528 5699488 -1613448 5700144 1613504 5700176 1613896 5699672 1613112 5699888 -1613096 5699944 1613240 5700112 1613448 5700144 1613112 5699888 -1613096 5699944 1613240 5700112 1613112 5699888 1611528 5699488 -1613448 5700144 1613896 5699672 1613112 5699888 1613240 5700112 -1613856 5699232 1613488 5698888 1613112 5699888 1613896 5699672 -1611560 5699312 1613112 5699888 1613424 5698816 1613400 5698720 -1613096 5699944 1613176 5700072 1613240 5700112 1613112 5699888 -1613096 5699944 1613176 5700072 1613112 5699888 1611528 5699488 -1613240 5700112 1613448 5700144 1613112 5699888 1613176 5700072 -1613096 5699944 1613128 5700032 1613176 5700072 1613112 5699888 -1613096 5699944 1613112 5700016 1613128 5700032 1613112 5699888 -1613096 5699944 1613128 5700032 1613112 5699888 1611528 5699488 -1613176 5700072 1613240 5700112 1613112 5699888 1613128 5700032 -1613856 5699232 1613632 5698952 1613488 5698888 1613112 5699888 -1613488 5698888 1613440 5698848 1613112 5699888 1613632 5698952 -1613856 5699232 1613632 5698952 1613112 5699888 1613896 5699672 -1613856 5699232 1613656 5698968 1613632 5698952 1613112 5699888 -1613856 5699232 1613656 5698968 1613112 5699888 1613896 5699672 -1613856 5699232 1613808 5699080 1613656 5698968 1613112 5699888 -1613632 5698952 1613488 5698888 1613112 5699888 1613656 5698968 -1613112 5699888 1613152 5699640 1611560 5699312 1611552 5699400 -1613112 5699888 1613424 5698816 1613152 5699640 1611552 5699400 -1613424 5698816 1613152 5699640 1613112 5699888 1613440 5698848 -1613152 5699640 1611552 5699400 1613112 5699888 1613440 5698848 -1613152 5699640 1613424 5698816 1611560 5699312 1611552 5699400 -1613424 5698816 1611560 5699312 1613152 5699640 1613440 5698848 -1613112 5699888 1613152 5699640 1611552 5699400 1611528 5699488 -1613112 5699888 1613488 5698888 1613440 5698848 1613152 5699640 -1613112 5699888 1613488 5698888 1613152 5699640 1611552 5699400 -1613440 5698848 1613424 5698816 1613152 5699640 1613488 5698888 -1613112 5699888 1613632 5698952 1613488 5698888 1613152 5699640 -1613112 5699888 1613632 5698952 1613152 5699640 1611552 5699400 -1613488 5698888 1613440 5698848 1613152 5699640 1613632 5698952 -1611560 5699312 1613152 5699640 1613424 5698816 1613400 5698720 -1611560 5699312 1611552 5699400 1613152 5699640 1613400 5698720 -1613152 5699640 1613440 5698848 1613424 5698816 1613400 5698720 -1611560 5699312 1613152 5699640 1613400 5698720 1611528 5699256 -1613112 5699888 1613656 5698968 1613632 5698952 1613152 5699640 -1613112 5699888 1613656 5698968 1613152 5699640 1611552 5699400 -1613632 5698952 1613488 5698888 1613152 5699640 1613656 5698968 -1613112 5699888 1613856 5699232 1613656 5698968 1613152 5699640 -1613112 5699888 1613856 5699232 1613152 5699640 1611552 5699400 -1613112 5699888 1613896 5699672 1613856 5699232 1613152 5699640 -1613112 5699888 1613896 5699672 1613152 5699640 1611552 5699400 -1613112 5699888 1613448 5700144 1613896 5699672 1613152 5699640 -1613112 5699888 1613448 5700144 1613152 5699640 1611552 5699400 -1613448 5700144 1613504 5700176 1613896 5699672 1613152 5699640 -1613112 5699888 1613240 5700112 1613448 5700144 1613152 5699640 -1613896 5699672 1613856 5699232 1613152 5699640 1613448 5700144 -1613856 5699232 1613808 5699080 1613656 5698968 1613152 5699640 -1613856 5699232 1613656 5698968 1613152 5699640 1613896 5699672 -1613656 5698968 1613632 5698952 1613152 5699640 1613856 5699232 -1613152 5699640 1613144 5699584 1611560 5699312 1611552 5699400 -1613152 5699640 1613144 5699584 1611552 5699400 1613112 5699888 -1613144 5699584 1611560 5699312 1611552 5699400 1613112 5699888 -1613152 5699640 1613400 5698720 1613144 5699584 1613112 5699888 -1613144 5699584 1613400 5698720 1611560 5699312 1611552 5699400 -1611552 5699400 1611528 5699488 1613112 5699888 1613144 5699584 -1613400 5698720 1613144 5699584 1613152 5699640 1613424 5698816 -1613144 5699584 1613112 5699888 1613152 5699640 1613424 5698816 -1613152 5699640 1613440 5698848 1613424 5698816 1613144 5699584 -1613152 5699640 1613488 5698888 1613440 5698848 1613144 5699584 -1613152 5699640 1613488 5698888 1613144 5699584 1613112 5699888 -1613440 5698848 1613424 5698816 1613144 5699584 1613488 5698888 -1613400 5698720 1611560 5699312 1613144 5699584 1613424 5698816 -1613152 5699640 1613632 5698952 1613488 5698888 1613144 5699584 -1613488 5698888 1613440 5698848 1613144 5699584 1613632 5698952 -1613152 5699640 1613632 5698952 1613144 5699584 1613112 5699888 -1613152 5699640 1613656 5698968 1613632 5698952 1613144 5699584 -1613152 5699640 1613656 5698968 1613144 5699584 1613112 5699888 -1613632 5698952 1613488 5698888 1613144 5699584 1613656 5698968 -1613424 5698816 1613400 5698720 1613144 5699584 1613440 5698848 -1611560 5699312 1613144 5699584 1613400 5698720 1611528 5699256 -1613152 5699640 1613856 5699232 1613656 5698968 1613144 5699584 -1613152 5699640 1613856 5699232 1613144 5699584 1613112 5699888 -1613656 5698968 1613632 5698952 1613144 5699584 1613856 5699232 -1613856 5699232 1613808 5699080 1613656 5698968 1613144 5699584 -1613152 5699640 1613896 5699672 1613856 5699232 1613144 5699584 -1613152 5699640 1613896 5699672 1613144 5699584 1613112 5699888 -1613152 5699640 1613448 5700144 1613896 5699672 1613144 5699584 -1613856 5699232 1613656 5698968 1613144 5699584 1613896 5699672 -1613144 5699584 1613128 5699544 1611560 5699312 1611552 5699400 -1613144 5699584 1613128 5699544 1611552 5699400 1613112 5699888 -1613144 5699584 1613128 5699544 1613112 5699888 1613152 5699640 -1613128 5699544 1611552 5699400 1613112 5699888 1613152 5699640 -1613128 5699544 1611560 5699312 1611552 5699400 1613112 5699888 -1613144 5699584 1613400 5698720 1613128 5699544 1613152 5699640 -1613400 5698720 1613128 5699544 1613144 5699584 1613424 5698816 -1613128 5699544 1613152 5699640 1613144 5699584 1613424 5698816 -1613128 5699544 1613400 5698720 1611560 5699312 1611552 5699400 -1613400 5698720 1611560 5699312 1613128 5699544 1613424 5698816 -1611552 5699400 1611528 5699488 1613112 5699888 1613128 5699544 -1613112 5699888 1613152 5699640 1613128 5699544 1611528 5699488 -1611552 5699400 1611528 5699488 1613128 5699544 1611560 5699312 -1611528 5699488 1613096 5699944 1613112 5699888 1613128 5699544 -1613144 5699584 1613440 5698848 1613424 5698816 1613128 5699544 -1613144 5699584 1613488 5698888 1613440 5698848 1613128 5699544 -1613144 5699584 1613632 5698952 1613488 5698888 1613128 5699544 -1613488 5698888 1613440 5698848 1613128 5699544 1613632 5698952 -1613144 5699584 1613632 5698952 1613128 5699544 1613152 5699640 -1613424 5698816 1613400 5698720 1613128 5699544 1613440 5698848 -1613144 5699584 1613656 5698968 1613632 5698952 1613128 5699544 -1613632 5698952 1613488 5698888 1613128 5699544 1613656 5698968 -1613144 5699584 1613656 5698968 1613128 5699544 1613152 5699640 -1613144 5699584 1613856 5699232 1613656 5698968 1613128 5699544 -1613144 5699584 1613856 5699232 1613128 5699544 1613152 5699640 -1613656 5698968 1613632 5698952 1613128 5699544 1613856 5699232 -1613440 5698848 1613424 5698816 1613128 5699544 1613488 5698888 -1611560 5699312 1613128 5699544 1613400 5698720 1611528 5699256 -1613856 5699232 1613808 5699080 1613656 5698968 1613128 5699544 -1613144 5699584 1613896 5699672 1613856 5699232 1613128 5699544 -1613128 5699544 1613088 5699488 1611560 5699312 1611552 5699400 -1613128 5699544 1613088 5699488 1611552 5699400 1611528 5699488 -1613088 5699488 1611560 5699312 1611552 5699400 1611528 5699488 -1613128 5699544 1613400 5698720 1613088 5699488 1611528 5699488 -1613400 5698720 1613088 5699488 1613128 5699544 1613424 5698816 -1613128 5699544 1613440 5698848 1613424 5698816 1613088 5699488 -1613088 5699488 1611528 5699488 1613128 5699544 1613440 5698848 -1613424 5698816 1613400 5698720 1613088 5699488 1613440 5698848 -1613088 5699488 1613400 5698720 1611560 5699312 1611552 5699400 -1613400 5698720 1611560 5699312 1613088 5699488 1613424 5698816 -1613128 5699544 1613088 5699488 1611528 5699488 1613112 5699888 -1613128 5699544 1613088 5699488 1613112 5699888 1613152 5699640 -1613128 5699544 1613088 5699488 1613152 5699640 1613144 5699584 -1613088 5699488 1611552 5699400 1611528 5699488 1613112 5699888 -1613128 5699544 1613440 5698848 1613088 5699488 1613152 5699640 -1611528 5699488 1613096 5699944 1613112 5699888 1613088 5699488 -1611528 5699488 1613096 5699944 1613088 5699488 1611552 5699400 -1611528 5699488 1611480 5699576 1613096 5699944 1613088 5699488 -1613088 5699488 1613096 5699944 1613112 5699888 1613152 5699640 -1613128 5699544 1613488 5698888 1613440 5698848 1613088 5699488 -1613128 5699544 1613632 5698952 1613488 5698888 1613088 5699488 -1613128 5699544 1613656 5698968 1613632 5698952 1613088 5699488 -1613632 5698952 1613488 5698888 1613088 5699488 1613656 5698968 -1613440 5698848 1613424 5698816 1613088 5699488 1613488 5698888 -1613128 5699544 1613656 5698968 1613088 5699488 1613152 5699640 -1613128 5699544 1613856 5699232 1613656 5698968 1613088 5699488 -1613488 5698888 1613440 5698848 1613088 5699488 1613632 5698952 -1611560 5699312 1613088 5699488 1613400 5698720 1611528 5699256 -1611560 5699312 1611552 5699400 1613088 5699488 1611528 5699256 -1613088 5699488 1613424 5698816 1613400 5698720 1611528 5699256 -1613400 5698720 1611448 5699192 1611528 5699256 1613088 5699488 -1613400 5698720 1612928 5699440 1613088 5699488 1613424 5698816 -1613088 5699488 1613440 5698848 1613424 5698816 1612928 5699440 -1613088 5699488 1613488 5698888 1613440 5698848 1612928 5699440 -1612928 5699440 1611528 5699256 1613088 5699488 1613440 5698848 -1613424 5698816 1613400 5698720 1612928 5699440 1613440 5698848 -1613400 5698720 1611528 5699256 1612928 5699440 1613424 5698816 -1613088 5699488 1612928 5699440 1611528 5699256 1611560 5699312 -1613088 5699488 1612928 5699440 1611560 5699312 1611552 5699400 -1613088 5699488 1612928 5699440 1611552 5699400 1611528 5699488 -1613088 5699488 1612928 5699440 1611528 5699488 1613096 5699944 -1612928 5699440 1611552 5699400 1611528 5699488 1613096 5699944 -1612928 5699440 1611560 5699312 1611552 5699400 1611528 5699488 -1613088 5699488 1613440 5698848 1612928 5699440 1613096 5699944 -1612928 5699440 1613400 5698720 1611528 5699256 1611560 5699312 -1611528 5699488 1611480 5699576 1613096 5699944 1612928 5699440 -1613096 5699944 1613088 5699488 1612928 5699440 1611480 5699576 -1611528 5699488 1611480 5699576 1612928 5699440 1611552 5699400 -1613088 5699488 1612928 5699440 1613096 5699944 1613112 5699888 -1612928 5699440 1611480 5699576 1613096 5699944 1613112 5699888 -1613088 5699488 1613440 5698848 1612928 5699440 1613112 5699888 -1613088 5699488 1612928 5699440 1613112 5699888 1613152 5699640 -1613088 5699488 1612928 5699440 1613152 5699640 1613128 5699544 -1613152 5699640 1613144 5699584 1613128 5699544 1612928 5699440 -1613128 5699544 1613088 5699488 1612928 5699440 1613144 5699584 -1613088 5699488 1613440 5698848 1612928 5699440 1613128 5699544 -1612928 5699440 1613096 5699944 1613112 5699888 1613152 5699640 -1612928 5699440 1613112 5699888 1613152 5699640 1613144 5699584 -1611480 5699576 1611440 5699632 1613096 5699944 1612928 5699440 -1612928 5699440 1611528 5699256 1611560 5699312 1611552 5699400 -1611528 5699256 1612928 5699440 1613400 5698720 1611448 5699192 -1612928 5699440 1612888 5699392 1611528 5699256 1611560 5699312 -1612928 5699440 1613400 5698720 1612888 5699392 1611560 5699312 -1613400 5698720 1612888 5699392 1612928 5699440 1613424 5698816 -1612928 5699440 1613440 5698848 1613424 5698816 1612888 5699392 -1612928 5699440 1613088 5699488 1613440 5698848 1612888 5699392 -1613088 5699488 1613488 5698888 1613440 5698848 1612888 5699392 -1613440 5698848 1613424 5698816 1612888 5699392 1613088 5699488 -1612888 5699392 1611560 5699312 1612928 5699440 1613088 5699488 -1613424 5698816 1613400 5698720 1612888 5699392 1613440 5698848 -1612888 5699392 1613400 5698720 1611528 5699256 1611560 5699312 -1613400 5698720 1611528 5699256 1612888 5699392 1613424 5698816 -1612928 5699440 1612888 5699392 1611560 5699312 1611552 5699400 -1612928 5699440 1612888 5699392 1611552 5699400 1611528 5699488 -1612928 5699440 1612888 5699392 1611528 5699488 1611480 5699576 -1612888 5699392 1611552 5699400 1611528 5699488 1611480 5699576 -1612888 5699392 1611528 5699256 1611560 5699312 1611552 5699400 -1612928 5699440 1613088 5699488 1612888 5699392 1611480 5699576 -1612928 5699440 1612888 5699392 1611480 5699576 1613096 5699944 -1612928 5699440 1612888 5699392 1613096 5699944 1613112 5699888 -1612888 5699392 1611528 5699488 1611480 5699576 1613096 5699944 -1612928 5699440 1613088 5699488 1612888 5699392 1613096 5699944 -1611480 5699576 1611440 5699632 1613096 5699944 1612888 5699392 -1612888 5699392 1611560 5699312 1611552 5699400 1611528 5699488 -1611528 5699256 1612888 5699392 1613400 5698720 1611448 5699192 -1612888 5699392 1612872 5699312 1611528 5699256 1611560 5699312 -1612888 5699392 1612872 5699312 1611560 5699312 1611552 5699400 -1612872 5699312 1611528 5699256 1611560 5699312 1611552 5699400 -1612888 5699392 1613400 5698720 1612872 5699312 1611552 5699400 -1613400 5698720 1612872 5699312 1612888 5699392 1613424 5698816 -1612888 5699392 1613440 5698848 1613424 5698816 1612872 5699312 -1612888 5699392 1613088 5699488 1613440 5698848 1612872 5699312 -1613088 5699488 1613488 5698888 1613440 5698848 1612872 5699312 -1612888 5699392 1612928 5699440 1613088 5699488 1612872 5699312 -1613088 5699488 1613440 5698848 1612872 5699312 1612928 5699440 -1613440 5698848 1613424 5698816 1612872 5699312 1613088 5699488 -1612872 5699312 1611552 5699400 1612888 5699392 1612928 5699440 -1613424 5698816 1613400 5698720 1612872 5699312 1613440 5698848 -1612872 5699312 1613400 5698720 1611528 5699256 1611560 5699312 -1613400 5698720 1611528 5699256 1612872 5699312 1613424 5698816 -1612888 5699392 1612872 5699312 1611552 5699400 1611528 5699488 -1611528 5699256 1612872 5699312 1613400 5698720 1611448 5699192 -1611528 5699256 1611560 5699312 1612872 5699312 1611448 5699192 -1612872 5699312 1613424 5698816 1613400 5698720 1611448 5699192 -1613400 5698720 1613456 5698608 1611448 5699192 1612872 5699312 -1613400 5698720 1612912 5699144 1612872 5699312 1613424 5698816 -1612872 5699312 1613440 5698848 1613424 5698816 1612912 5699144 -1612872 5699312 1613088 5699488 1613440 5698848 1612912 5699144 -1613088 5699488 1613488 5698888 1613440 5698848 1612912 5699144 -1612872 5699312 1612928 5699440 1613088 5699488 1612912 5699144 -1613088 5699488 1613488 5698888 1612912 5699144 1612872 5699312 -1613440 5698848 1613424 5698816 1612912 5699144 1613488 5698888 -1612912 5699144 1611448 5699192 1612872 5699312 1613088 5699488 -1613424 5698816 1613400 5698720 1612912 5699144 1613440 5698848 -1613400 5698720 1611448 5699192 1612912 5699144 1613424 5698816 -1613088 5699488 1613632 5698952 1613488 5698888 1612912 5699144 -1612872 5699312 1612912 5699144 1611448 5699192 1611528 5699256 -1612872 5699312 1612912 5699144 1611528 5699256 1611560 5699312 -1612872 5699312 1612912 5699144 1611560 5699312 1611552 5699400 -1612872 5699312 1613088 5699488 1612912 5699144 1611560 5699312 -1612912 5699144 1613400 5698720 1611448 5699192 1611528 5699256 -1612912 5699144 1611448 5699192 1611528 5699256 1611560 5699312 -1611448 5699192 1612912 5699144 1613400 5698720 1613456 5698608 -1611448 5699192 1611528 5699256 1612912 5699144 1613456 5698608 -1612912 5699144 1613424 5698816 1613400 5698720 1613456 5698608 -1611448 5699192 1612912 5699144 1613456 5698608 1613072 5696952 -1611448 5699192 1611528 5699256 1612912 5699144 1613072 5696952 -1611448 5699192 1612912 5699144 1613072 5696952 1613008 5696896 -1613456 5698608 1613312 5697192 1613072 5696952 1612912 5699144 -1613456 5698608 1613736 5698080 1613312 5697192 1612912 5699144 -1612912 5699144 1613400 5698720 1613456 5698608 1613312 5697192 -1613072 5696952 1611448 5699192 1612912 5699144 1613312 5697192 -1613312 5697192 1612976 5698976 1613456 5698608 1613736 5698080 -1612912 5699144 1612976 5698976 1613312 5697192 1613072 5696952 -1612912 5699144 1613456 5698608 1612976 5698976 1613072 5696952 -1612976 5698976 1613456 5698608 1613312 5697192 1613072 5696952 -1613456 5698608 1612976 5698976 1612912 5699144 1613400 5698720 -1612976 5698976 1613072 5696952 1612912 5699144 1613400 5698720 -1612912 5699144 1613424 5698816 1613400 5698720 1612976 5698976 -1612912 5699144 1613440 5698848 1613424 5698816 1612976 5698976 -1612912 5699144 1613488 5698888 1613440 5698848 1612976 5698976 -1612912 5699144 1613088 5699488 1613488 5698888 1612976 5698976 -1612912 5699144 1612872 5699312 1613088 5699488 1612976 5698976 -1613488 5698888 1613440 5698848 1612976 5698976 1613088 5699488 -1613440 5698848 1613424 5698816 1612976 5698976 1613488 5698888 -1612912 5699144 1613088 5699488 1612976 5698976 1613072 5696952 -1613424 5698816 1613400 5698720 1612976 5698976 1613440 5698848 -1613456 5698608 1613312 5697192 1612976 5698976 1613400 5698720 -1613088 5699488 1613632 5698952 1613488 5698888 1612976 5698976 -1613400 5698720 1613456 5698608 1612976 5698976 1613424 5698816 -1612912 5699144 1612976 5698976 1613072 5696952 1611448 5699192 -1612912 5699144 1612976 5698976 1611448 5699192 1611528 5699256 -1612912 5699144 1613088 5699488 1612976 5698976 1611528 5699256 -1613072 5696952 1613008 5696896 1611448 5699192 1612976 5698976 -1612976 5698976 1613312 5697192 1613072 5696952 1613008 5696896 -1613008 5696896 1610904 5698784 1611448 5699192 1612976 5698976 -1612912 5699144 1612976 5698976 1611528 5699256 1611560 5699312 -1612976 5698976 1613008 5696896 1611448 5699192 1611528 5699256 -1613008 5696896 1612968 5698896 1612976 5698976 1613072 5696952 -1613008 5696896 1611448 5699192 1612968 5698896 1613072 5696952 -1612968 5698896 1611448 5699192 1612976 5698976 1613072 5696952 -1612976 5698976 1613312 5697192 1613072 5696952 1612968 5698896 -1612976 5698976 1613456 5698608 1613312 5697192 1612968 5698896 -1612976 5698976 1613456 5698608 1612968 5698896 1611448 5699192 -1612976 5698976 1613400 5698720 1613456 5698608 1612968 5698896 -1613456 5698608 1613312 5697192 1612968 5698896 1613400 5698720 -1612976 5698976 1613400 5698720 1612968 5698896 1611448 5699192 -1613072 5696952 1613008 5696896 1612968 5698896 1613312 5697192 -1613456 5698608 1613736 5698080 1613312 5697192 1612968 5698896 -1613312 5697192 1613072 5696952 1612968 5698896 1613456 5698608 -1611448 5699192 1612968 5698896 1613008 5696896 1610904 5698784 -1611448 5699192 1612976 5698976 1612968 5698896 1610904 5698784 -1612968 5698896 1613072 5696952 1613008 5696896 1610904 5698784 -1611448 5699192 1612968 5698896 1610904 5698784 1610928 5698816 -1613008 5696896 1612840 5696712 1610904 5698784 1612968 5698896 -1612976 5698976 1613424 5698816 1613400 5698720 1612968 5698896 -1612976 5698976 1613440 5698848 1613424 5698816 1612968 5698896 -1612976 5698976 1613424 5698816 1612968 5698896 1611448 5699192 -1613400 5698720 1613456 5698608 1612968 5698896 1613424 5698816 -1612976 5698976 1612968 5698896 1611448 5699192 1611528 5699256 -1612976 5698976 1612968 5698896 1611528 5699256 1612912 5699144 -1612968 5698896 1610904 5698784 1611448 5699192 1611528 5699256 -1612976 5698976 1613424 5698816 1612968 5698896 1612912 5699144 -1611528 5699256 1611560 5699312 1612912 5699144 1612968 5698896 -1612968 5698896 1611448 5699192 1611528 5699256 1612912 5699144 -1613008 5696896 1612936 5698848 1612968 5698896 1613072 5696952 -1612936 5698848 1610904 5698784 1612968 5698896 1613072 5696952 -1613008 5696896 1610904 5698784 1612936 5698848 1613072 5696952 -1612968 5698896 1613312 5697192 1613072 5696952 1612936 5698848 -1612968 5698896 1613312 5697192 1612936 5698848 1610904 5698784 -1613072 5696952 1613008 5696896 1612936 5698848 1613312 5697192 -1612968 5698896 1613456 5698608 1613312 5697192 1612936 5698848 -1612968 5698896 1613456 5698608 1612936 5698848 1610904 5698784 -1612968 5698896 1613400 5698720 1613456 5698608 1612936 5698848 -1612968 5698896 1613400 5698720 1612936 5698848 1610904 5698784 -1612968 5698896 1613424 5698816 1613400 5698720 1612936 5698848 -1613312 5697192 1613072 5696952 1612936 5698848 1613456 5698608 -1613456 5698608 1613736 5698080 1613312 5697192 1612936 5698848 -1613456 5698608 1613312 5697192 1612936 5698848 1613400 5698720 -1612968 5698896 1612936 5698848 1610904 5698784 1611448 5699192 -1612968 5698896 1612936 5698848 1611448 5699192 1611528 5699256 -1612968 5698896 1613400 5698720 1612936 5698848 1611528 5699256 -1612936 5698848 1613008 5696896 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1612936 5698848 -1612936 5698848 1610904 5698784 1611448 5699192 1611528 5699256 -1610904 5698784 1612936 5698848 1613008 5696896 1612840 5696712 -1612968 5698896 1612936 5698848 1611528 5699256 1612912 5699144 -1612968 5698896 1612936 5698848 1612912 5699144 1612976 5698976 -1612936 5698848 1611448 5699192 1611528 5699256 1612912 5699144 -1612968 5698896 1613400 5698720 1612936 5698848 1612976 5698976 -1611528 5699256 1611560 5699312 1612912 5699144 1612936 5698848 -1611560 5699312 1612872 5699312 1612912 5699144 1612936 5698848 -1611528 5699256 1611560 5699312 1612936 5698848 1611448 5699192 -1612936 5698848 1611560 5699312 1612912 5699144 1612976 5698976 -1612936 5698848 1612896 5698800 1610904 5698784 1611448 5699192 -1612936 5698848 1613008 5696896 1612896 5698800 1611448 5699192 -1613008 5696896 1612896 5698800 1612936 5698848 1613072 5696952 -1612936 5698848 1613312 5697192 1613072 5696952 1612896 5698800 -1612896 5698800 1611448 5699192 1612936 5698848 1613312 5697192 -1613072 5696952 1613008 5696896 1612896 5698800 1613312 5697192 -1612896 5698800 1613008 5696896 1610904 5698784 1611448 5699192 -1613008 5696896 1610904 5698784 1612896 5698800 1613072 5696952 -1610904 5698784 1610928 5698816 1611448 5699192 1612896 5698800 -1612936 5698848 1613456 5698608 1613312 5697192 1612896 5698800 -1613312 5697192 1613072 5696952 1612896 5698800 1613456 5698608 -1612936 5698848 1613456 5698608 1612896 5698800 1611448 5699192 -1613456 5698608 1613736 5698080 1613312 5697192 1612896 5698800 -1613312 5697192 1613072 5696952 1612896 5698800 1613736 5698080 -1613456 5698608 1613736 5698080 1612896 5698800 1612936 5698848 -1613736 5698080 1613728 5697776 1613312 5697192 1612896 5698800 -1613312 5697192 1613072 5696952 1612896 5698800 1613728 5697776 -1613736 5698080 1613728 5697776 1612896 5698800 1613456 5698608 -1613728 5697776 1613528 5697360 1613312 5697192 1612896 5698800 -1612936 5698848 1613400 5698720 1613456 5698608 1612896 5698800 -1612936 5698848 1613400 5698720 1612896 5698800 1611448 5699192 -1612936 5698848 1612968 5698896 1613400 5698720 1612896 5698800 -1613456 5698608 1613736 5698080 1612896 5698800 1613400 5698720 -1612936 5698848 1612896 5698800 1611448 5699192 1611528 5699256 -1612936 5698848 1612896 5698800 1611528 5699256 1611560 5699312 -1612896 5698800 1610904 5698784 1611448 5699192 1611528 5699256 -1612936 5698848 1613400 5698720 1612896 5698800 1611560 5699312 -1612896 5698800 1611448 5699192 1611528 5699256 1611560 5699312 -1610904 5698784 1612896 5698800 1613008 5696896 1612840 5696712 -1612936 5698848 1612896 5698800 1611560 5699312 1612912 5699144 -1611560 5699312 1612872 5699312 1612912 5699144 1612896 5698800 -1612896 5698800 1611528 5699256 1611560 5699312 1612912 5699144 -1612936 5698848 1613400 5698720 1612896 5698800 1612912 5699144 -1612936 5698848 1612896 5698800 1612912 5699144 1612976 5698976 -1613456 5698608 1613656 5698376 1613736 5698080 1612896 5698800 -1612896 5698800 1612856 5698792 1610904 5698784 1611448 5699192 -1612896 5698800 1612856 5698792 1611448 5699192 1611528 5699256 -1612856 5698792 1610904 5698784 1611448 5699192 1611528 5699256 -1612896 5698800 1613008 5696896 1612856 5698792 1611528 5699256 -1613008 5696896 1612856 5698792 1612896 5698800 1613072 5696952 -1612896 5698800 1613312 5697192 1613072 5696952 1612856 5698792 -1612896 5698800 1613728 5697776 1613312 5697192 1612856 5698792 -1613312 5697192 1613072 5696952 1612856 5698792 1613728 5697776 -1612856 5698792 1611528 5699256 1612896 5698800 1613728 5697776 -1613072 5696952 1613008 5696896 1612856 5698792 1613312 5697192 -1612856 5698792 1613008 5696896 1610904 5698784 1611448 5699192 -1610904 5698784 1610928 5698816 1611448 5699192 1612856 5698792 -1613008 5696896 1610904 5698784 1612856 5698792 1613072 5696952 -1612896 5698800 1613736 5698080 1613728 5697776 1612856 5698792 -1613728 5697776 1613312 5697192 1612856 5698792 1613736 5698080 -1612896 5698800 1613736 5698080 1612856 5698792 1611528 5699256 -1612896 5698800 1613456 5698608 1613736 5698080 1612856 5698792 -1612896 5698800 1613456 5698608 1612856 5698792 1611528 5699256 -1612896 5698800 1613400 5698720 1613456 5698608 1612856 5698792 -1613736 5698080 1613728 5697776 1612856 5698792 1613456 5698608 -1613728 5697776 1613528 5697360 1613312 5697192 1612856 5698792 -1612896 5698800 1612856 5698792 1611528 5699256 1611560 5699312 -1612896 5698800 1612856 5698792 1611560 5699312 1612912 5699144 -1611560 5699312 1612872 5699312 1612912 5699144 1612856 5698792 -1611560 5699312 1611552 5699400 1612872 5699312 1612856 5698792 -1612912 5699144 1612896 5698800 1612856 5698792 1612872 5699312 -1612856 5698792 1611448 5699192 1611528 5699256 1611560 5699312 -1612896 5698800 1613456 5698608 1612856 5698792 1612912 5699144 -1612856 5698792 1611528 5699256 1611560 5699312 1612872 5699312 -1610904 5698784 1612856 5698792 1613008 5696896 1612840 5696712 -1612896 5698800 1612856 5698792 1612912 5699144 1612936 5698848 -1612856 5698792 1612872 5699312 1612912 5699144 1612936 5698848 -1612896 5698800 1613456 5698608 1612856 5698792 1612936 5698848 -1612912 5699144 1612976 5698976 1612936 5698848 1612856 5698792 -1612976 5698976 1612968 5698896 1612936 5698848 1612856 5698792 -1612912 5699144 1612976 5698976 1612856 5698792 1612872 5699312 -1612936 5698848 1612896 5698800 1612856 5698792 1612976 5698976 -1613456 5698608 1613656 5698376 1613736 5698080 1612856 5698792 -1612856 5698792 1612712 5698808 1611448 5699192 1611528 5699256 -1612856 5698792 1612712 5698808 1611528 5699256 1611560 5699312 -1612712 5698808 1611448 5699192 1611528 5699256 1611560 5699312 -1610904 5698784 1612712 5698808 1612856 5698792 1613008 5696896 -1611448 5699192 1612712 5698808 1610904 5698784 1610928 5698816 -1611448 5699192 1612712 5698808 1610928 5698816 1611424 5699184 -1612856 5698792 1613072 5696952 1613008 5696896 1612712 5698808 -1612856 5698792 1613312 5697192 1613072 5696952 1612712 5698808 -1612856 5698792 1613728 5697776 1613312 5697192 1612712 5698808 -1613008 5696896 1610904 5698784 1612712 5698808 1613072 5696952 -1613072 5696952 1613008 5696896 1612712 5698808 1613312 5697192 -1612856 5698792 1613312 5697192 1612712 5698808 1611560 5699312 -1612712 5698808 1610928 5698816 1611448 5699192 1611528 5699256 -1610904 5698784 1610928 5698816 1612712 5698808 1613008 5696896 -1612856 5698792 1612712 5698808 1611560 5699312 1612872 5699312 -1611560 5699312 1611552 5699400 1612872 5699312 1612712 5698808 -1612856 5698792 1612712 5698808 1612872 5699312 1612912 5699144 -1612856 5698792 1612712 5698808 1612912 5699144 1612976 5698976 -1612712 5698808 1612872 5699312 1612912 5699144 1612976 5698976 -1612712 5698808 1611528 5699256 1611560 5699312 1612872 5699312 -1612856 5698792 1613312 5697192 1612712 5698808 1612976 5698976 -1612712 5698808 1611560 5699312 1612872 5699312 1612912 5699144 -1610904 5698784 1612712 5698808 1613008 5696896 1612840 5696712 -1612712 5698808 1613072 5696952 1613008 5696896 1612840 5696712 -1610904 5698784 1610928 5698816 1612712 5698808 1612840 5696712 -1610904 5698784 1612712 5698808 1612840 5696712 1612736 5696520 -1612856 5698792 1612712 5698808 1612976 5698976 1612936 5698848 -1612976 5698976 1612968 5698896 1612936 5698848 1612712 5698808 -1612712 5698808 1612912 5699144 1612976 5698976 1612936 5698848 -1612856 5698792 1613312 5697192 1612712 5698808 1612936 5698848 -1612856 5698792 1612712 5698808 1612936 5698848 1612896 5698800 -1612712 5698808 1612648 5698784 1610904 5698784 1610928 5698816 -1612712 5698808 1612648 5698784 1610928 5698816 1611448 5699192 -1610928 5698816 1611424 5699184 1611448 5699192 1612648 5698784 -1612712 5698808 1612648 5698784 1611448 5699192 1611528 5699256 -1612712 5698808 1612648 5698784 1611528 5699256 1611560 5699312 -1612712 5698808 1612648 5698784 1611560 5699312 1612872 5699312 -1611560 5699312 1611552 5699400 1612872 5699312 1612648 5698784 -1612648 5698784 1611528 5699256 1611560 5699312 1612872 5699312 -1612648 5698784 1610928 5698816 1611448 5699192 1611528 5699256 -1612648 5698784 1611448 5699192 1611528 5699256 1611560 5699312 -1612712 5698808 1612840 5696712 1612648 5698784 1612872 5699312 -1612648 5698784 1610904 5698784 1610928 5698816 1611448 5699192 -1612648 5698784 1612840 5696712 1610904 5698784 1610928 5698816 -1612712 5698808 1612648 5698784 1612872 5699312 1612912 5699144 -1612712 5698808 1612648 5698784 1612912 5699144 1612976 5698976 -1612648 5698784 1611560 5699312 1612872 5699312 1612912 5699144 -1612712 5698808 1612840 5696712 1612648 5698784 1612912 5699144 -1612840 5696712 1612648 5698784 1612712 5698808 1613008 5696896 -1612712 5698808 1613072 5696952 1613008 5696896 1612648 5698784 -1612840 5696712 1610904 5698784 1612648 5698784 1613008 5696896 -1612712 5698808 1613312 5697192 1613072 5696952 1612648 5698784 -1612712 5698808 1612856 5698792 1613312 5697192 1612648 5698784 -1612856 5698792 1613728 5697776 1613312 5697192 1612648 5698784 -1613072 5696952 1613008 5696896 1612648 5698784 1613312 5697192 -1613312 5697192 1613072 5696952 1612648 5698784 1612856 5698792 -1612648 5698784 1612912 5699144 1612712 5698808 1612856 5698792 -1613008 5696896 1612840 5696712 1612648 5698784 1613072 5696952 -1610904 5698784 1612648 5698784 1612840 5696712 1612736 5696520 -1612840 5696712 1612616 5698752 1612648 5698784 1613008 5696896 -1612616 5698752 1610904 5698784 1612648 5698784 1613008 5696896 -1612648 5698784 1612616 5698752 1610904 5698784 1610928 5698816 -1612648 5698784 1613008 5696896 1612616 5698752 1610928 5698816 -1612616 5698752 1612840 5696712 1610904 5698784 1610928 5698816 -1612648 5698784 1612616 5698752 1610928 5698816 1611448 5699192 -1610928 5698816 1611424 5699184 1611448 5699192 1612616 5698752 -1612648 5698784 1612616 5698752 1611448 5699192 1611528 5699256 -1612648 5698784 1613008 5696896 1612616 5698752 1611528 5699256 -1610928 5698816 1611400 5699192 1611424 5699184 1612616 5698752 -1612648 5698784 1612616 5698752 1611528 5699256 1611560 5699312 -1612648 5698784 1612616 5698752 1611560 5699312 1612872 5699312 -1612616 5698752 1611448 5699192 1611528 5699256 1611560 5699312 -1612648 5698784 1613008 5696896 1612616 5698752 1611560 5699312 -1611448 5699192 1611528 5699256 1612616 5698752 1611424 5699184 -1612616 5698752 1610904 5698784 1610928 5698816 1611424 5699184 -1612840 5696712 1610904 5698784 1612616 5698752 1613008 5696896 -1612648 5698784 1613072 5696952 1613008 5696896 1612616 5698752 -1612648 5698784 1613312 5697192 1613072 5696952 1612616 5698752 -1612648 5698784 1613312 5697192 1612616 5698752 1611560 5699312 -1613008 5696896 1612840 5696712 1612616 5698752 1613072 5696952 -1612648 5698784 1612856 5698792 1613312 5697192 1612616 5698752 -1612856 5698792 1613728 5697776 1613312 5697192 1612616 5698752 -1612648 5698784 1612712 5698808 1612856 5698792 1612616 5698752 -1613312 5697192 1613072 5696952 1612616 5698752 1612856 5698792 -1612648 5698784 1612712 5698808 1612616 5698752 1611560 5699312 -1612856 5698792 1613312 5697192 1612616 5698752 1612712 5698808 -1613072 5696952 1613008 5696896 1612616 5698752 1613312 5697192 -1610904 5698784 1612616 5698752 1612840 5696712 1612736 5696520 -1612616 5698752 1612576 5698656 1610904 5698784 1610928 5698816 -1612616 5698752 1612576 5698656 1610928 5698816 1611424 5699184 -1612616 5698752 1612576 5698656 1611424 5699184 1611448 5699192 -1612576 5698656 1610904 5698784 1610928 5698816 1611424 5699184 -1610928 5698816 1611400 5699192 1611424 5699184 1612576 5698656 -1612616 5698752 1612576 5698656 1611448 5699192 1611528 5699256 -1612576 5698656 1611424 5699184 1611448 5699192 1611528 5699256 -1612616 5698752 1612576 5698656 1611528 5699256 1611560 5699312 -1612576 5698656 1610928 5698816 1611424 5699184 1611448 5699192 -1612840 5696712 1612576 5698656 1612616 5698752 1613008 5696896 -1612616 5698752 1613072 5696952 1613008 5696896 1612576 5698656 -1613008 5696896 1612840 5696712 1612576 5698656 1613072 5696952 -1612616 5698752 1613072 5696952 1612576 5698656 1611528 5699256 -1612576 5698656 1612840 5696712 1610904 5698784 1610928 5698816 -1612840 5696712 1610904 5698784 1612576 5698656 1613008 5696896 -1612616 5698752 1613312 5697192 1613072 5696952 1612576 5698656 -1612616 5698752 1612856 5698792 1613312 5697192 1612576 5698656 -1612856 5698792 1613728 5697776 1613312 5697192 1612576 5698656 -1612856 5698792 1613736 5698080 1613728 5697776 1612576 5698656 -1613728 5697776 1613312 5697192 1612576 5698656 1613736 5698080 -1612856 5698792 1613736 5698080 1612576 5698656 1612616 5698752 -1613072 5696952 1613008 5696896 1612576 5698656 1613312 5697192 -1612616 5698752 1612712 5698808 1612856 5698792 1612576 5698656 -1612616 5698752 1612648 5698784 1612712 5698808 1612576 5698656 -1612856 5698792 1613736 5698080 1612576 5698656 1612712 5698808 -1612616 5698752 1612712 5698808 1612576 5698656 1611528 5699256 -1612856 5698792 1613456 5698608 1613736 5698080 1612576 5698656 -1613736 5698080 1613728 5697776 1612576 5698656 1613456 5698608 -1612856 5698792 1613456 5698608 1612576 5698656 1612712 5698808 -1612856 5698792 1612896 5698800 1613456 5698608 1612576 5698656 -1613728 5697776 1613528 5697360 1613312 5697192 1612576 5698656 -1613312 5697192 1613072 5696952 1612576 5698656 1613728 5697776 -1610904 5698784 1612576 5698656 1612840 5696712 1612736 5696520 -1613456 5698608 1613656 5698376 1613736 5698080 1612576 5698656 -1613072 5696952 1612608 5698536 1612576 5698656 1613312 5697192 -1612576 5698656 1612608 5698536 1613008 5696896 1612840 5696712 -1612608 5698536 1612840 5696712 1612576 5698656 1613312 5697192 -1612576 5698656 1612608 5698536 1612840 5696712 1610904 5698784 -1612608 5698536 1613008 5696896 1612840 5696712 1610904 5698784 -1612576 5698656 1612608 5698536 1610904 5698784 1610928 5698816 -1612576 5698656 1612608 5698536 1610928 5698816 1611424 5699184 -1610928 5698816 1611400 5699192 1611424 5699184 1612608 5698536 -1612576 5698656 1612608 5698536 1611424 5699184 1611448 5699192 -1612576 5698656 1612608 5698536 1611448 5699192 1611528 5699256 -1612608 5698536 1610928 5698816 1611424 5699184 1611448 5699192 -1612608 5698536 1610904 5698784 1610928 5698816 1611424 5699184 -1612576 5698656 1613312 5697192 1612608 5698536 1611448 5699192 -1612608 5698536 1612840 5696712 1610904 5698784 1610928 5698816 -1612608 5698536 1613072 5696952 1613008 5696896 1612840 5696712 -1613072 5696952 1613008 5696896 1612608 5698536 1613312 5697192 -1612576 5698656 1613728 5697776 1613312 5697192 1612608 5698536 -1612576 5698656 1613736 5698080 1613728 5697776 1612608 5698536 -1612576 5698656 1613456 5698608 1613736 5698080 1612608 5698536 -1613736 5698080 1613728 5697776 1612608 5698536 1613456 5698608 -1613312 5697192 1613072 5696952 1612608 5698536 1613728 5697776 -1612576 5698656 1613456 5698608 1612608 5698536 1611448 5699192 -1612576 5698656 1612856 5698792 1613456 5698608 1612608 5698536 -1613456 5698608 1613736 5698080 1612608 5698536 1612856 5698792 -1612576 5698656 1612712 5698808 1612856 5698792 1612608 5698536 -1612856 5698792 1612896 5698800 1613456 5698608 1612608 5698536 -1613456 5698608 1613736 5698080 1612608 5698536 1612896 5698800 -1612896 5698800 1613400 5698720 1613456 5698608 1612608 5698536 -1612576 5698656 1612616 5698752 1612712 5698808 1612608 5698536 -1612576 5698656 1612712 5698808 1612608 5698536 1611448 5699192 -1612856 5698792 1612896 5698800 1612608 5698536 1612712 5698808 -1613728 5697776 1613528 5697360 1613312 5697192 1612608 5698536 -1613312 5697192 1613072 5696952 1612608 5698536 1613528 5697360 -1613728 5697776 1613528 5697360 1612608 5698536 1613736 5698080 -1612840 5696712 1612736 5696520 1610904 5698784 1612608 5698536 -1613728 5697776 1613696 5697608 1613528 5697360 1612608 5698536 -1613456 5698608 1613656 5698376 1613736 5698080 1612608 5698536 -1613456 5698608 1613656 5698376 1612608 5698536 1612896 5698800 -1613736 5698080 1613728 5697776 1612608 5698536 1613656 5698376 -1613456 5698608 1613648 5698408 1613656 5698376 1612608 5698536 -1613656 5698376 1613704 5698312 1613736 5698080 1612608 5698536 -1613312 5697192 1612696 5698328 1612608 5698536 1613528 5697360 -1612696 5698328 1613072 5696952 1612608 5698536 1613528 5697360 -1612608 5698536 1612696 5698328 1613072 5696952 1613008 5696896 -1612608 5698536 1612696 5698328 1613008 5696896 1612840 5696712 -1612608 5698536 1612696 5698328 1612840 5696712 1610904 5698784 -1612608 5698536 1612696 5698328 1610904 5698784 1610928 5698816 -1612696 5698328 1613008 5696896 1612840 5696712 1610904 5698784 -1612608 5698536 1613528 5697360 1612696 5698328 1610904 5698784 -1612696 5698328 1613072 5696952 1613008 5696896 1612840 5696712 -1612696 5698328 1613312 5697192 1613072 5696952 1613008 5696896 -1612608 5698536 1613728 5697776 1613528 5697360 1612696 5698328 -1613528 5697360 1613312 5697192 1612696 5698328 1613728 5697776 -1612608 5698536 1613728 5697776 1612696 5698328 1610904 5698784 -1612608 5698536 1613736 5698080 1613728 5697776 1612696 5698328 -1612608 5698536 1613656 5698376 1613736 5698080 1612696 5698328 -1612608 5698536 1613656 5698376 1612696 5698328 1610904 5698784 -1613728 5697776 1613528 5697360 1612696 5698328 1613736 5698080 -1613736 5698080 1613728 5697776 1612696 5698328 1613656 5698376 -1612840 5696712 1612736 5696520 1610904 5698784 1612696 5698328 -1613312 5697192 1613072 5696952 1612696 5698328 1613528 5697360 -1613728 5697776 1613696 5697608 1613528 5697360 1612696 5698328 -1612608 5698536 1613456 5698608 1613656 5698376 1612696 5698328 -1612608 5698536 1612896 5698800 1613456 5698608 1612696 5698328 -1613656 5698376 1613736 5698080 1612696 5698328 1613456 5698608 -1612896 5698800 1613400 5698720 1613456 5698608 1612696 5698328 -1612608 5698536 1612856 5698792 1612896 5698800 1612696 5698328 -1612896 5698800 1613456 5698608 1612696 5698328 1612856 5698792 -1612608 5698536 1612856 5698792 1612696 5698328 1610904 5698784 -1612608 5698536 1612712 5698808 1612856 5698792 1612696 5698328 -1613456 5698608 1613648 5698408 1613656 5698376 1612696 5698328 -1613456 5698608 1613656 5698376 1612696 5698328 1612896 5698800 -1613656 5698376 1613704 5698312 1613736 5698080 1612696 5698328 -1612696 5698328 1612656 5698064 1610904 5698784 1612608 5698536 -1610904 5698784 1610928 5698816 1612608 5698536 1612656 5698064 -1612840 5696712 1612656 5698064 1612696 5698328 1613008 5696896 -1612696 5698328 1613072 5696952 1613008 5696896 1612656 5698064 -1613008 5696896 1612840 5696712 1612656 5698064 1613072 5696952 -1612696 5698328 1613312 5697192 1613072 5696952 1612656 5698064 -1613072 5696952 1613008 5696896 1612656 5698064 1613312 5697192 -1612840 5696712 1610904 5698784 1612656 5698064 1613008 5696896 -1610904 5698784 1612656 5698064 1612840 5696712 1612736 5696520 -1612656 5698064 1613008 5696896 1612840 5696712 1612736 5696520 -1610904 5698784 1612656 5698064 1612736 5696520 1610848 5698768 -1612736 5696520 1612560 5696144 1610848 5698768 1612656 5698064 -1612656 5698064 1612840 5696712 1612736 5696520 1610848 5698768 -1612696 5698328 1613312 5697192 1612656 5698064 1612608 5698536 -1612696 5698328 1613528 5697360 1613312 5697192 1612656 5698064 -1612696 5698328 1613728 5697776 1613528 5697360 1612656 5698064 -1613312 5697192 1613072 5696952 1612656 5698064 1613528 5697360 -1612696 5698328 1613736 5698080 1613728 5697776 1612656 5698064 -1613728 5697776 1613528 5697360 1612656 5698064 1613736 5698080 -1612696 5698328 1613656 5698376 1613736 5698080 1612656 5698064 -1612696 5698328 1613456 5698608 1613656 5698376 1612656 5698064 -1613736 5698080 1613728 5697776 1612656 5698064 1613656 5698376 -1612696 5698328 1613656 5698376 1612656 5698064 1612608 5698536 -1613528 5697360 1613312 5697192 1612656 5698064 1613728 5697776 -1612656 5698064 1610848 5698768 1610904 5698784 1612608 5698536 -1613728 5697776 1613696 5697608 1613528 5697360 1612656 5698064 -1613728 5697776 1613696 5697608 1612656 5698064 1613736 5698080 -1613696 5697608 1613640 5697488 1613528 5697360 1612656 5698064 -1613528 5697360 1613312 5697192 1612656 5698064 1613696 5697608 -1613656 5698376 1613704 5698312 1613736 5698080 1612656 5698064 -1612840 5696712 1612672 5697912 1612656 5698064 1613008 5696896 -1612840 5696712 1612736 5696520 1612672 5697912 1613008 5696896 -1612656 5698064 1613072 5696952 1613008 5696896 1612672 5697912 -1612656 5698064 1613312 5697192 1613072 5696952 1612672 5697912 -1613072 5696952 1613008 5696896 1612672 5697912 1613312 5697192 -1612656 5698064 1613528 5697360 1613312 5697192 1612672 5697912 -1613312 5697192 1613072 5696952 1612672 5697912 1613528 5697360 -1612672 5697912 1612736 5696520 1612656 5698064 1613528 5697360 -1613008 5696896 1612840 5696712 1612672 5697912 1613072 5696952 -1612656 5698064 1612672 5697912 1612736 5696520 1610848 5698768 -1612672 5697912 1612840 5696712 1612736 5696520 1610848 5698768 -1612736 5696520 1612560 5696144 1610848 5698768 1612672 5697912 -1612656 5698064 1613528 5697360 1612672 5697912 1610848 5698768 -1612656 5698064 1612672 5697912 1610848 5698768 1610904 5698784 -1612656 5698064 1613528 5697360 1612672 5697912 1610904 5698784 -1612672 5697912 1612736 5696520 1610848 5698768 1610904 5698784 -1612656 5698064 1613696 5697608 1613528 5697360 1612672 5697912 -1613528 5697360 1613312 5697192 1612672 5697912 1613696 5697608 -1612656 5698064 1613696 5697608 1612672 5697912 1610904 5698784 -1613696 5697608 1613640 5697488 1613528 5697360 1612672 5697912 -1613528 5697360 1613312 5697192 1612672 5697912 1613640 5697488 -1613696 5697608 1613640 5697488 1612672 5697912 1612656 5698064 -1612656 5698064 1612672 5697912 1610904 5698784 1612608 5698536 -1612656 5698064 1613728 5697776 1613696 5697608 1612672 5697912 -1612656 5698064 1613736 5698080 1613728 5697776 1612672 5697912 -1612656 5698064 1613736 5698080 1612672 5697912 1610904 5698784 -1612656 5698064 1613656 5698376 1613736 5698080 1612672 5697912 -1613696 5697608 1613640 5697488 1612672 5697912 1613728 5697776 -1613728 5697776 1613696 5697608 1612672 5697912 1613736 5698080 -1612672 5697912 1612712 5697840 1613072 5696952 1613008 5696896 -1612672 5697912 1613312 5697192 1612712 5697840 1613008 5696896 -1613312 5697192 1612712 5697840 1612672 5697912 1613528 5697360 -1612712 5697840 1613008 5696896 1612672 5697912 1613528 5697360 -1612672 5697912 1613640 5697488 1613528 5697360 1612712 5697840 -1612672 5697912 1613640 5697488 1612712 5697840 1613008 5696896 -1613528 5697360 1613312 5697192 1612712 5697840 1613640 5697488 -1612672 5697912 1612712 5697840 1613008 5696896 1612840 5696712 -1612672 5697912 1613640 5697488 1612712 5697840 1612840 5696712 -1612672 5697912 1612712 5697840 1612840 5696712 1612736 5696520 -1612672 5697912 1612712 5697840 1612736 5696520 1610848 5698768 -1612672 5697912 1613640 5697488 1612712 5697840 1612736 5696520 -1612712 5697840 1613072 5696952 1613008 5696896 1612840 5696712 -1612712 5697840 1613008 5696896 1612840 5696712 1612736 5696520 -1612712 5697840 1613312 5697192 1613072 5696952 1613008 5696896 -1613312 5697192 1613072 5696952 1612712 5697840 1613528 5697360 -1612672 5697912 1613696 5697608 1613640 5697488 1612712 5697840 -1612672 5697912 1613696 5697608 1612712 5697840 1612736 5696520 -1613640 5697488 1613528 5697360 1612712 5697840 1613696 5697608 -1612672 5697912 1613728 5697776 1613696 5697608 1612712 5697840 -1612672 5697912 1613728 5697776 1612712 5697840 1612736 5696520 -1613696 5697608 1613640 5697488 1612712 5697840 1613728 5697776 -1612672 5697912 1613736 5698080 1613728 5697776 1612712 5697840 -1612672 5697912 1613736 5698080 1612712 5697840 1612736 5696520 -1612672 5697912 1612656 5698064 1613736 5698080 1612712 5697840 -1612672 5697912 1612656 5698064 1612712 5697840 1612736 5696520 -1612656 5698064 1613656 5698376 1613736 5698080 1612712 5697840 -1613728 5697776 1613696 5697608 1612712 5697840 1613736 5698080 -1613736 5698080 1613728 5697776 1612712 5697840 1612656 5698064 -1613528 5697360 1612760 5697792 1612712 5697840 1613640 5697488 -1612712 5697840 1613696 5697608 1613640 5697488 1612760 5697792 -1613640 5697488 1613528 5697360 1612760 5697792 1613696 5697608 -1612760 5697792 1613312 5697192 1612712 5697840 1613696 5697608 -1612712 5697840 1612760 5697792 1613312 5697192 1613072 5696952 -1612712 5697840 1612760 5697792 1613072 5696952 1613008 5696896 -1612712 5697840 1612760 5697792 1613008 5696896 1612840 5696712 -1612712 5697840 1612760 5697792 1612840 5696712 1612736 5696520 -1612760 5697792 1613072 5696952 1613008 5696896 1612840 5696712 -1612712 5697840 1613696 5697608 1612760 5697792 1612840 5696712 -1612760 5697792 1613312 5697192 1613072 5696952 1613008 5696896 -1612760 5697792 1613528 5697360 1613312 5697192 1613072 5696952 -1613528 5697360 1613312 5697192 1612760 5697792 1613640 5697488 -1612712 5697840 1613728 5697776 1613696 5697608 1612760 5697792 -1613696 5697608 1613640 5697488 1612760 5697792 1613728 5697776 -1612712 5697840 1613728 5697776 1612760 5697792 1612840 5696712 -1612712 5697840 1613736 5698080 1613728 5697776 1612760 5697792 -1612712 5697840 1613736 5698080 1612760 5697792 1612840 5696712 -1613728 5697776 1613696 5697608 1612760 5697792 1613736 5698080 -1612712 5697840 1612656 5698064 1613736 5698080 1612760 5697792 -1612712 5697840 1612672 5697912 1612656 5698064 1612760 5697792 -1612712 5697840 1612672 5697912 1612760 5697792 1612840 5696712 -1612656 5698064 1613656 5698376 1613736 5698080 1612760 5697792 -1612656 5698064 1612696 5698328 1613656 5698376 1612760 5697792 -1613736 5698080 1613728 5697776 1612760 5697792 1613656 5698376 -1612656 5698064 1613656 5698376 1612760 5697792 1612672 5697912 -1613656 5698376 1613704 5698312 1613736 5698080 1612760 5697792 -1612760 5697792 1612880 5697688 1613312 5697192 1613072 5696952 -1612760 5697792 1612880 5697688 1613072 5696952 1613008 5696896 -1612760 5697792 1612880 5697688 1613008 5696896 1612840 5696712 -1612760 5697792 1612880 5697688 1612840 5696712 1612712 5697840 -1612880 5697688 1613072 5696952 1613008 5696896 1612840 5696712 -1612880 5697688 1613312 5697192 1613072 5696952 1613008 5696896 -1612760 5697792 1613528 5697360 1612880 5697688 1612840 5696712 -1613528 5697360 1612880 5697688 1612760 5697792 1613640 5697488 -1612760 5697792 1613696 5697608 1613640 5697488 1612880 5697688 -1612760 5697792 1613728 5697776 1613696 5697608 1612880 5697688 -1613696 5697608 1613640 5697488 1612880 5697688 1613728 5697776 -1612880 5697688 1612840 5696712 1612760 5697792 1613728 5697776 -1613640 5697488 1613528 5697360 1612880 5697688 1613696 5697608 -1612880 5697688 1613528 5697360 1613312 5697192 1613072 5696952 -1613528 5697360 1613312 5697192 1612880 5697688 1613640 5697488 -1612760 5697792 1613736 5698080 1613728 5697776 1612880 5697688 -1613728 5697776 1613696 5697608 1612880 5697688 1613736 5698080 -1612760 5697792 1613736 5698080 1612880 5697688 1612840 5696712 -1612760 5697792 1613656 5698376 1613736 5698080 1612880 5697688 -1612760 5697792 1613656 5698376 1612880 5697688 1612840 5696712 -1613736 5698080 1613728 5697776 1612880 5697688 1613656 5698376 -1612760 5697792 1612656 5698064 1613656 5698376 1612880 5697688 -1612760 5697792 1612656 5698064 1612880 5697688 1612840 5696712 -1612656 5698064 1612696 5698328 1613656 5698376 1612880 5697688 -1612696 5698328 1613456 5698608 1613656 5698376 1612880 5697688 -1612656 5698064 1612696 5698328 1612880 5697688 1612760 5697792 -1613656 5698376 1613736 5698080 1612880 5697688 1612696 5698328 -1612760 5697792 1612672 5697912 1612656 5698064 1612880 5697688 -1613656 5698376 1613704 5698312 1613736 5698080 1612880 5697688 -1612880 5697688 1612936 5697608 1613072 5696952 1613008 5696896 -1612880 5697688 1612936 5697608 1613008 5696896 1612840 5696712 -1612880 5697688 1612936 5697608 1612840 5696712 1612760 5697792 -1612840 5696712 1612712 5697840 1612760 5697792 1612936 5697608 -1612936 5697608 1613008 5696896 1612840 5696712 1612760 5697792 -1612936 5697608 1613072 5696952 1613008 5696896 1612840 5696712 -1613312 5697192 1612936 5697608 1612880 5697688 1613528 5697360 -1612880 5697688 1613528 5697360 1612936 5697608 1612760 5697792 -1612880 5697688 1613640 5697488 1613528 5697360 1612936 5697608 -1612880 5697688 1613696 5697608 1613640 5697488 1612936 5697608 -1612880 5697688 1613728 5697776 1613696 5697608 1612936 5697608 -1612880 5697688 1613736 5698080 1613728 5697776 1612936 5697608 -1613696 5697608 1613640 5697488 1612936 5697608 1613728 5697776 -1613528 5697360 1613312 5697192 1612936 5697608 1613640 5697488 -1612880 5697688 1613728 5697776 1612936 5697608 1612760 5697792 -1613640 5697488 1613528 5697360 1612936 5697608 1613696 5697608 -1612936 5697608 1613312 5697192 1613072 5696952 1613008 5696896 -1613312 5697192 1613072 5696952 1612936 5697608 1613528 5697360 -1612936 5697608 1612928 5697512 1612840 5696712 1612760 5697792 -1612840 5696712 1612712 5697840 1612760 5697792 1612928 5697512 -1612840 5696712 1612736 5696520 1612712 5697840 1612928 5697512 -1612936 5697608 1612928 5697512 1612760 5697792 1612880 5697688 -1612760 5697792 1612880 5697688 1612928 5697512 1612712 5697840 -1613008 5696896 1612928 5697512 1612936 5697608 1613072 5696952 -1612936 5697608 1613312 5697192 1613072 5696952 1612928 5697512 -1613072 5696952 1613008 5696896 1612928 5697512 1613312 5697192 -1612936 5697608 1613312 5697192 1612928 5697512 1612880 5697688 -1612936 5697608 1613528 5697360 1613312 5697192 1612928 5697512 -1612936 5697608 1613640 5697488 1613528 5697360 1612928 5697512 -1613312 5697192 1613072 5696952 1612928 5697512 1613528 5697360 -1612936 5697608 1613528 5697360 1612928 5697512 1612880 5697688 -1612928 5697512 1613008 5696896 1612840 5696712 1612712 5697840 -1613008 5696896 1612840 5696712 1612928 5697512 1613072 5696952 -1612928 5697512 1612872 5697288 1612712 5697840 1612760 5697792 -1612712 5697840 1612872 5697288 1612840 5696712 1612736 5696520 -1612712 5697840 1612872 5697288 1612736 5696520 1612672 5697912 -1612736 5696520 1610848 5698768 1612672 5697912 1612872 5697288 -1612872 5697288 1612840 5696712 1612736 5696520 1612672 5697912 -1612928 5697512 1612872 5697288 1612760 5697792 1612880 5697688 -1612840 5696712 1612872 5697288 1612928 5697512 1613008 5696896 -1612928 5697512 1613008 5696896 1612872 5697288 1612760 5697792 -1612928 5697512 1613072 5696952 1613008 5696896 1612872 5697288 -1612928 5697512 1613312 5697192 1613072 5696952 1612872 5697288 -1612928 5697512 1613528 5697360 1613312 5697192 1612872 5697288 -1612928 5697512 1613312 5697192 1612872 5697288 1612760 5697792 -1613072 5696952 1613008 5696896 1612872 5697288 1613312 5697192 -1612872 5697288 1612672 5697912 1612712 5697840 1612760 5697792 -1613008 5696896 1612840 5696712 1612872 5697288 1613072 5696952 -1612872 5697288 1613008 5696896 1612840 5696712 1612736 5696520 -1612672 5697912 1612792 5697112 1612736 5696520 1610848 5698768 -1612872 5697288 1612792 5697112 1612672 5697912 1612712 5697840 -1612736 5696520 1612560 5696144 1610848 5698768 1612792 5697112 -1610848 5698768 1612672 5697912 1612792 5697112 1612560 5696144 -1612736 5696520 1612792 5697112 1612872 5697288 1612840 5696712 -1612672 5697912 1612792 5697112 1610848 5698768 1610904 5698784 -1612560 5696144 1612248 5695760 1610848 5698768 1612792 5697112 -1612248 5695760 1612224 5695736 1610848 5698768 1612792 5697112 -1610848 5698768 1612672 5697912 1612792 5697112 1612248 5695760 -1612560 5696144 1612248 5695760 1612792 5697112 1612736 5696520 -1612560 5696144 1612480 5696016 1612248 5695760 1612792 5697112 -1612872 5697288 1612792 5697112 1612712 5697840 1612760 5697792 -1612872 5697288 1613008 5696896 1612840 5696712 1612792 5697112 -1612840 5696712 1612736 5696520 1612792 5697112 1613008 5696896 -1612872 5697288 1613072 5696952 1613008 5696896 1612792 5697112 -1612872 5697288 1613312 5697192 1613072 5696952 1612792 5697112 -1613008 5696896 1612840 5696712 1612792 5697112 1613072 5696952 -1612872 5697288 1613072 5696952 1612792 5697112 1612712 5697840 -1612672 5697912 1612712 5697840 1612792 5697112 1610848 5698768 -1612792 5697112 1612840 5696712 1612736 5696520 1612560 5696144 -1610848 5698768 1612720 5697008 1612248 5695760 1612224 5695736 -1610848 5698768 1612720 5697008 1612224 5695736 1612192 5695688 -1612792 5697112 1612720 5697008 1610848 5698768 1612672 5697912 -1610848 5698768 1610904 5698784 1612672 5697912 1612720 5697008 -1612672 5697912 1612792 5697112 1612720 5697008 1610904 5698784 -1612248 5695760 1612720 5697008 1612792 5697112 1612560 5696144 -1612792 5697112 1612736 5696520 1612560 5696144 1612720 5697008 -1612248 5695760 1612720 5697008 1612560 5696144 1612480 5696016 -1612560 5696144 1612480 5696016 1612720 5697008 1612736 5696520 -1610904 5698784 1612656 5698064 1612672 5697912 1612720 5697008 -1612792 5697112 1612720 5697008 1612672 5697912 1612712 5697840 -1612720 5697008 1610904 5698784 1612672 5697912 1612712 5697840 -1612792 5697112 1612720 5697008 1612712 5697840 1612872 5697288 -1612792 5697112 1612736 5696520 1612720 5697008 1612712 5697840 -1612792 5697112 1612840 5696712 1612736 5696520 1612720 5697008 -1612736 5696520 1612560 5696144 1612720 5697008 1612840 5696712 -1612792 5697112 1613008 5696896 1612840 5696712 1612720 5697008 -1612792 5697112 1613072 5696952 1613008 5696896 1612720 5697008 -1612792 5697112 1613008 5696896 1612720 5697008 1612712 5697840 -1612840 5696712 1612736 5696520 1612720 5697008 1613008 5696896 -1610848 5698768 1610904 5698784 1612720 5697008 1612224 5695736 -1612720 5697008 1612480 5696016 1612248 5695760 1612224 5695736 -1610848 5698768 1612544 5696864 1612224 5695736 1612192 5695688 -1612224 5695736 1612544 5696864 1612720 5697008 1612248 5695760 -1612720 5697008 1612544 5696864 1610848 5698768 1610904 5698784 -1612720 5697008 1612544 5696864 1610904 5698784 1612672 5697912 -1612720 5697008 1612544 5696864 1612672 5697912 1612712 5697840 -1612544 5696864 1610904 5698784 1612672 5697912 1612712 5697840 -1610904 5698784 1612656 5698064 1612672 5697912 1612544 5696864 -1612720 5697008 1612544 5696864 1612712 5697840 1612792 5697112 -1612544 5696864 1610848 5698768 1610904 5698784 1612672 5697912 -1612544 5696864 1612712 5697840 1612720 5697008 1612248 5695760 -1612720 5697008 1612480 5696016 1612248 5695760 1612544 5696864 -1612248 5695760 1612224 5695736 1612544 5696864 1612480 5696016 -1612720 5697008 1612560 5696144 1612480 5696016 1612544 5696864 -1612720 5697008 1612736 5696520 1612560 5696144 1612544 5696864 -1612720 5697008 1612840 5696712 1612736 5696520 1612544 5696864 -1612560 5696144 1612480 5696016 1612544 5696864 1612736 5696520 -1612736 5696520 1612560 5696144 1612544 5696864 1612840 5696712 -1612720 5697008 1613008 5696896 1612840 5696712 1612544 5696864 -1612720 5697008 1612840 5696712 1612544 5696864 1612712 5697840 -1612480 5696016 1612248 5695760 1612544 5696864 1612560 5696144 -1612544 5696864 1612224 5695736 1610848 5698768 1610904 5698784 -1612224 5695736 1610848 5698768 1612544 5696864 1612248 5695760 -1610848 5698768 1612496 5696752 1612224 5695736 1612192 5695688 -1610848 5698768 1612496 5696752 1612192 5695688 1610784 5698784 -1612544 5696864 1612496 5696752 1610848 5698768 1610904 5698784 -1612224 5695736 1612496 5696752 1612544 5696864 1612248 5695760 -1612544 5696864 1612480 5696016 1612248 5695760 1612496 5696752 -1612544 5696864 1612560 5696144 1612480 5696016 1612496 5696752 -1612480 5696016 1612248 5695760 1612496 5696752 1612560 5696144 -1612544 5696864 1612736 5696520 1612560 5696144 1612496 5696752 -1612544 5696864 1612840 5696712 1612736 5696520 1612496 5696752 -1612544 5696864 1612720 5697008 1612840 5696712 1612496 5696752 -1612736 5696520 1612560 5696144 1612496 5696752 1612840 5696712 -1612560 5696144 1612480 5696016 1612496 5696752 1612736 5696520 -1612496 5696752 1610848 5698768 1612544 5696864 1612840 5696712 -1612248 5695760 1612224 5695736 1612496 5696752 1612480 5696016 -1610848 5698768 1612544 5696864 1612496 5696752 1612192 5695688 -1612496 5696752 1612248 5695760 1612224 5695736 1612192 5695688 -1612496 5696752 1612560 5696144 1612480 5696016 1612488 5696720 -1612496 5696752 1612736 5696520 1612560 5696144 1612488 5696720 -1612560 5696144 1612480 5696016 1612488 5696720 1612736 5696520 -1612496 5696752 1612840 5696712 1612736 5696520 1612488 5696720 -1612496 5696752 1612544 5696864 1612840 5696712 1612488 5696720 -1612736 5696520 1612560 5696144 1612488 5696720 1612840 5696712 -1612496 5696752 1612840 5696712 1612488 5696720 1612224 5695736 -1612480 5696016 1612248 5695760 1612488 5696720 1612560 5696144 -1612496 5696752 1612488 5696720 1612224 5695736 1612192 5695688 -1612496 5696752 1612488 5696720 1612192 5695688 1610848 5698768 -1612192 5695688 1610784 5698784 1610848 5698768 1612488 5696720 -1612496 5696752 1612840 5696712 1612488 5696720 1610848 5698768 -1612496 5696752 1612488 5696720 1610848 5698768 1612544 5696864 -1612488 5696720 1612224 5695736 1612192 5695688 1610848 5698768 -1612488 5696720 1612248 5695760 1612224 5695736 1612192 5695688 -1612488 5696720 1612360 5696440 1610848 5698768 1612496 5696752 -1610848 5698768 1612360 5696440 1612192 5695688 1610784 5698784 -1612192 5695688 1612176 5695584 1610784 5698784 1612360 5696440 -1610848 5698768 1612544 5696864 1612496 5696752 1612360 5696440 -1612192 5695688 1612360 5696440 1612488 5696720 1612224 5695736 -1612488 5696720 1612248 5695760 1612224 5695736 1612360 5696440 -1612224 5695736 1612192 5695688 1612360 5696440 1612248 5695760 -1612488 5696720 1612480 5696016 1612248 5695760 1612360 5696440 -1612488 5696720 1612560 5696144 1612480 5696016 1612360 5696440 -1612488 5696720 1612736 5696520 1612560 5696144 1612360 5696440 -1612488 5696720 1612840 5696712 1612736 5696520 1612360 5696440 -1612560 5696144 1612480 5696016 1612360 5696440 1612736 5696520 -1612248 5695760 1612224 5695736 1612360 5696440 1612480 5696016 -1612480 5696016 1612248 5695760 1612360 5696440 1612560 5696144 -1612488 5696720 1612736 5696520 1612360 5696440 1612496 5696752 -1612360 5696440 1610784 5698784 1610848 5698768 1612496 5696752 -1612360 5696440 1612224 5695736 1612192 5695688 1610784 5698784 -1610784 5698784 1612272 5696312 1612192 5695688 1612176 5695584 -1612360 5696440 1612272 5696312 1610784 5698784 1610848 5698768 -1612360 5696440 1612272 5696312 1610848 5698768 1612496 5696752 -1612360 5696440 1612272 5696312 1612496 5696752 1612488 5696720 -1612272 5696312 1610784 5698784 1610848 5698768 1612496 5696752 -1610848 5698768 1612544 5696864 1612496 5696752 1612272 5696312 -1612360 5696440 1612192 5695688 1612272 5696312 1612496 5696752 -1612192 5695688 1612272 5696312 1612360 5696440 1612224 5695736 -1612360 5696440 1612248 5695760 1612224 5695736 1612272 5696312 -1612360 5696440 1612480 5696016 1612248 5695760 1612272 5696312 -1612248 5695760 1612224 5695736 1612272 5696312 1612480 5696016 -1612360 5696440 1612560 5696144 1612480 5696016 1612272 5696312 -1612360 5696440 1612736 5696520 1612560 5696144 1612272 5696312 -1612480 5696016 1612248 5695760 1612272 5696312 1612560 5696144 -1612272 5696312 1612496 5696752 1612360 5696440 1612560 5696144 -1612224 5695736 1612192 5695688 1612272 5696312 1612248 5695760 -1612272 5696312 1612192 5695688 1610784 5698784 1610848 5698768 -1612192 5695688 1610784 5698784 1612272 5696312 1612224 5695736 -1610784 5698784 1612144 5696176 1612192 5695688 1612176 5695584 -1610784 5698784 1612144 5696176 1612176 5695584 1608624 5699288 -1612144 5696176 1612192 5695688 1612176 5695584 1608624 5699288 -1612176 5695584 1612128 5695248 1608624 5699288 1612144 5696176 -1608624 5699288 1610784 5698784 1612144 5696176 1612128 5695248 -1612176 5695584 1612128 5695248 1612144 5696176 1612192 5695688 -1612176 5695584 1612216 5695400 1612128 5695248 1612144 5696176 -1612128 5695248 1612120 5695192 1608624 5699288 1612144 5696176 -1610784 5698784 1612144 5696176 1608624 5699288 1610736 5698824 -1612272 5696312 1612144 5696176 1610784 5698784 1610848 5698768 -1612272 5696312 1612144 5696176 1610848 5698768 1612496 5696752 -1610848 5698768 1612544 5696864 1612496 5696752 1612144 5696176 -1612272 5696312 1612144 5696176 1612496 5696752 1612360 5696440 -1612496 5696752 1612488 5696720 1612360 5696440 1612144 5696176 -1612144 5696176 1610848 5698768 1612496 5696752 1612360 5696440 -1612144 5696176 1610784 5698784 1610848 5698768 1612496 5696752 -1612272 5696312 1612192 5695688 1612144 5696176 1612360 5696440 -1612192 5695688 1612144 5696176 1612272 5696312 1612224 5695736 -1612272 5696312 1612248 5695760 1612224 5695736 1612144 5696176 -1612272 5696312 1612480 5696016 1612248 5695760 1612144 5696176 -1612272 5696312 1612560 5696144 1612480 5696016 1612144 5696176 -1612248 5695760 1612224 5695736 1612144 5696176 1612480 5696016 -1612144 5696176 1612360 5696440 1612272 5696312 1612480 5696016 -1612224 5695736 1612192 5695688 1612144 5696176 1612248 5695760 -1610784 5698784 1610848 5698768 1612144 5696176 1608624 5699288 -1612144 5696176 1612224 5695736 1612192 5695688 1612176 5695584 -1612144 5696176 1611704 5695976 1608624 5699288 1610784 5698784 -1612128 5695248 1611704 5695976 1612144 5696176 1612176 5695584 -1612144 5696176 1612192 5695688 1612176 5695584 1611704 5695976 -1612128 5695248 1611704 5695976 1612176 5695584 1612216 5695400 -1612176 5695584 1612128 5695248 1611704 5695976 1612192 5695688 -1608624 5699288 1611704 5695976 1612128 5695248 1612120 5695192 -1608624 5699288 1611704 5695976 1612120 5695192 1608544 5699312 -1611704 5695976 1612128 5695248 1612120 5695192 1608544 5699312 -1612120 5695192 1602224 5696056 1608544 5699312 1611704 5695976 -1608544 5699312 1608624 5699288 1611704 5695976 1602224 5696056 -1612120 5695192 1608736 5689448 1602224 5696056 1611704 5695976 -1608736 5689448 1602200 5696008 1602224 5696056 1611704 5695976 -1612120 5695192 1608736 5689448 1611704 5695976 1612128 5695248 -1602224 5696056 1608544 5699312 1611704 5695976 1608736 5689448 -1608624 5699288 1610736 5698824 1610784 5698784 1611704 5695976 -1612120 5695192 1608840 5689480 1608736 5689448 1611704 5695976 -1608736 5689448 1602224 5696056 1611704 5695976 1608840 5689480 -1612120 5695192 1608840 5689480 1611704 5695976 1612128 5695248 -1612120 5695192 1612136 5695120 1608840 5689480 1611704 5695976 -1612136 5695120 1612400 5693248 1608840 5689480 1611704 5695976 -1612120 5695192 1612136 5695120 1611704 5695976 1612128 5695248 -1608840 5689480 1608736 5689448 1611704 5695976 1612136 5695120 -1602224 5696056 1602504 5696992 1608544 5699312 1611704 5695976 -1612144 5696176 1611704 5695976 1610784 5698784 1610848 5698768 -1611704 5695976 1608624 5699288 1610784 5698784 1610848 5698768 -1612144 5696176 1611704 5695976 1610848 5698768 1612496 5696752 -1612144 5696176 1611704 5695976 1612496 5696752 1612360 5696440 -1612496 5696752 1612488 5696720 1612360 5696440 1611704 5695976 -1610848 5698768 1612544 5696864 1612496 5696752 1611704 5695976 -1612144 5696176 1611704 5695976 1612360 5696440 1612272 5696312 -1611704 5695976 1612496 5696752 1612360 5696440 1612272 5696312 -1611704 5695976 1610848 5698768 1612496 5696752 1612360 5696440 -1611704 5695976 1610784 5698784 1610848 5698768 1612496 5696752 -1612144 5696176 1612192 5695688 1611704 5695976 1612272 5696312 -1612144 5696176 1612224 5695736 1612192 5695688 1611704 5695976 -1612192 5695688 1612176 5695584 1611704 5695976 1612224 5695736 -1612144 5696176 1612248 5695760 1612224 5695736 1611704 5695976 -1612144 5696176 1612224 5695736 1611704 5695976 1612272 5696312 -1611704 5695976 1608544 5699312 1608624 5699288 1610784 5698784 -1612128 5695248 1612120 5695192 1611704 5695976 1612176 5695584 -1602224 5696056 1611680 5695944 1608736 5689448 1602200 5696008 -1608736 5689448 1611680 5695944 1611704 5695976 1608840 5689480 -1611704 5695976 1611680 5695944 1602224 5696056 1608544 5699312 -1611704 5695976 1611680 5695944 1608544 5699312 1608624 5699288 -1611680 5695944 1602224 5696056 1608544 5699312 1608624 5699288 -1611704 5695976 1612136 5695120 1608840 5689480 1611680 5695944 -1612136 5695120 1612400 5693248 1608840 5689480 1611680 5695944 -1612136 5695120 1612440 5693432 1612400 5693248 1611680 5695944 -1608840 5689480 1608736 5689448 1611680 5695944 1612400 5693248 -1612400 5693248 1609280 5689560 1608840 5689480 1611680 5695944 -1612136 5695120 1612400 5693248 1611680 5695944 1611704 5695976 -1611704 5695976 1612120 5695192 1612136 5695120 1611680 5695944 -1611704 5695976 1612128 5695248 1612120 5695192 1611680 5695944 -1612136 5695120 1612400 5693248 1611680 5695944 1612120 5695192 -1612120 5695192 1612136 5695120 1611680 5695944 1612128 5695248 -1602224 5696056 1602504 5696992 1608544 5699312 1611680 5695944 -1611704 5695976 1611680 5695944 1608624 5699288 1610784 5698784 -1611704 5695976 1611680 5695944 1610784 5698784 1610848 5698768 -1611680 5695944 1608544 5699312 1608624 5699288 1610784 5698784 -1608624 5699288 1610736 5698824 1610784 5698784 1611680 5695944 -1611680 5695944 1610784 5698784 1611704 5695976 1612128 5695248 -1611704 5695976 1612176 5695584 1612128 5695248 1611680 5695944 -1612176 5695584 1612216 5695400 1612128 5695248 1611680 5695944 -1611704 5695976 1612192 5695688 1612176 5695584 1611680 5695944 -1611704 5695976 1612224 5695736 1612192 5695688 1611680 5695944 -1612128 5695248 1612120 5695192 1611680 5695944 1612176 5695584 -1611704 5695976 1612192 5695688 1611680 5695944 1610784 5698784 -1612176 5695584 1612128 5695248 1611680 5695944 1612192 5695688 -1608736 5689448 1602224 5696056 1611680 5695944 1608840 5689480 -1611680 5695944 1608736 5689448 1602224 5696056 1608544 5699312 -1602224 5696056 1611592 5695912 1608736 5689448 1602200 5696008 -1608736 5689448 1611592 5695912 1611680 5695944 1608840 5689480 -1608736 5689448 1602224 5696056 1611592 5695912 1608840 5689480 -1611680 5695944 1612400 5693248 1608840 5689480 1611592 5695912 -1611680 5695944 1612136 5695120 1612400 5693248 1611592 5695912 -1612136 5695120 1612440 5693432 1612400 5693248 1611592 5695912 -1612400 5693248 1608840 5689480 1611592 5695912 1612136 5695120 -1612400 5693248 1609280 5689560 1608840 5689480 1611592 5695912 -1612400 5693248 1612408 5693168 1609280 5689560 1611592 5695912 -1612400 5693248 1609280 5689560 1611592 5695912 1612136 5695120 -1609280 5689560 1609232 5689536 1608840 5689480 1611592 5695912 -1611680 5695944 1612120 5695192 1612136 5695120 1611592 5695912 -1612136 5695120 1612400 5693248 1611592 5695912 1612120 5695192 -1611680 5695944 1612128 5695248 1612120 5695192 1611592 5695912 -1611680 5695944 1612176 5695584 1612128 5695248 1611592 5695912 -1612176 5695584 1612216 5695400 1612128 5695248 1611592 5695912 -1612120 5695192 1612136 5695120 1611592 5695912 1612128 5695248 -1612128 5695248 1612120 5695192 1611592 5695912 1612176 5695584 -1611680 5695944 1612192 5695688 1612176 5695584 1611592 5695912 -1611592 5695912 1602224 5696056 1611680 5695944 1612176 5695584 -1608840 5689480 1608736 5689448 1611592 5695912 1609280 5689560 -1611680 5695944 1611592 5695912 1602224 5696056 1608544 5699312 -1611680 5695944 1611592 5695912 1608544 5699312 1608624 5699288 -1611680 5695944 1611592 5695912 1608624 5699288 1610784 5698784 -1611592 5695912 1608544 5699312 1608624 5699288 1610784 5698784 -1608624 5699288 1610736 5698824 1610784 5698784 1611592 5695912 -1602224 5696056 1602504 5696992 1608544 5699312 1611592 5695912 -1611680 5695944 1611592 5695912 1610784 5698784 1611704 5695976 -1610784 5698784 1610848 5698768 1611704 5695976 1611592 5695912 -1611592 5695912 1608624 5699288 1610784 5698784 1610848 5698768 -1610848 5698768 1612496 5696752 1611704 5695976 1611592 5695912 -1611704 5695976 1611680 5695944 1611592 5695912 1610848 5698768 -1611680 5695944 1612176 5695584 1611592 5695912 1611704 5695976 -1611592 5695912 1608736 5689448 1602224 5696056 1608544 5699312 -1611592 5695912 1602224 5696056 1608544 5699312 1608624 5699288 -1608736 5689448 1611560 5695880 1611592 5695912 1608840 5689480 -1611560 5695880 1602224 5696056 1611592 5695912 1608840 5689480 -1608736 5689448 1602224 5696056 1611560 5695880 1608840 5689480 -1602224 5696056 1611560 5695880 1608736 5689448 1602200 5696008 -1611592 5695912 1609280 5689560 1608840 5689480 1611560 5695880 -1611592 5695912 1609280 5689560 1611560 5695880 1602224 5696056 -1608840 5689480 1608736 5689448 1611560 5695880 1609280 5689560 -1611592 5695912 1612400 5693248 1609280 5689560 1611560 5695880 -1611592 5695912 1612400 5693248 1611560 5695880 1602224 5696056 -1612400 5693248 1612408 5693168 1609280 5689560 1611560 5695880 -1611592 5695912 1612136 5695120 1612400 5693248 1611560 5695880 -1611592 5695912 1612136 5695120 1611560 5695880 1602224 5696056 -1612136 5695120 1612440 5693432 1612400 5693248 1611560 5695880 -1611592 5695912 1612120 5695192 1612136 5695120 1611560 5695880 -1611592 5695912 1612120 5695192 1611560 5695880 1602224 5696056 -1612136 5695120 1612400 5693248 1611560 5695880 1612120 5695192 -1612400 5693248 1609280 5689560 1611560 5695880 1612136 5695120 -1609280 5689560 1609232 5689536 1608840 5689480 1611560 5695880 -1611592 5695912 1612128 5695248 1612120 5695192 1611560 5695880 -1611592 5695912 1612128 5695248 1611560 5695880 1602224 5696056 -1612120 5695192 1612136 5695120 1611560 5695880 1612128 5695248 -1611592 5695912 1612176 5695584 1612128 5695248 1611560 5695880 -1611592 5695912 1612176 5695584 1611560 5695880 1602224 5696056 -1612176 5695584 1612216 5695400 1612128 5695248 1611560 5695880 -1611592 5695912 1611680 5695944 1612176 5695584 1611560 5695880 -1611592 5695912 1611680 5695944 1611560 5695880 1602224 5696056 -1612128 5695248 1612120 5695192 1611560 5695880 1612176 5695584 -1612176 5695584 1612128 5695248 1611560 5695880 1611680 5695944 -1611680 5695944 1612192 5695688 1612176 5695584 1611560 5695880 -1609280 5689560 1608840 5689480 1611560 5695880 1612400 5693248 -1611592 5695912 1611560 5695880 1602224 5696056 1608544 5699312 -1611592 5695912 1611680 5695944 1611560 5695880 1608544 5699312 -1611560 5695880 1608736 5689448 1602224 5696056 1608544 5699312 -1602224 5696056 1602504 5696992 1608544 5699312 1611560 5695880 -1611592 5695912 1611560 5695880 1608544 5699312 1608624 5699288 -1611592 5695912 1611680 5695944 1611560 5695880 1608624 5699288 -1611592 5695912 1611560 5695880 1608624 5699288 1610784 5698784 -1611592 5695912 1611680 5695944 1611560 5695880 1610784 5698784 -1611592 5695912 1611560 5695880 1610784 5698784 1610848 5698768 -1608624 5699288 1610736 5698824 1610784 5698784 1611560 5695880 -1611560 5695880 1602224 5696056 1608544 5699312 1608624 5699288 -1611560 5695880 1608544 5699312 1608624 5699288 1610784 5698784 -1611560 5695880 1611464 5695816 1602224 5696056 1608544 5699312 -1611560 5695880 1608736 5689448 1611464 5695816 1608544 5699312 -1608736 5689448 1611464 5695816 1611560 5695880 1608840 5689480 -1611560 5695880 1609280 5689560 1608840 5689480 1611464 5695816 -1611464 5695816 1608544 5699312 1611560 5695880 1609280 5689560 -1608840 5689480 1608736 5689448 1611464 5695816 1609280 5689560 -1611464 5695816 1608736 5689448 1602224 5696056 1608544 5699312 -1608736 5689448 1602224 5696056 1611464 5695816 1608840 5689480 -1602224 5696056 1611464 5695816 1608736 5689448 1602200 5696008 -1609280 5689560 1609232 5689536 1608840 5689480 1611464 5695816 -1602224 5696056 1602504 5696992 1608544 5699312 1611464 5695816 -1611560 5695880 1612400 5693248 1609280 5689560 1611464 5695816 -1609280 5689560 1608840 5689480 1611464 5695816 1612400 5693248 -1611560 5695880 1612400 5693248 1611464 5695816 1608544 5699312 -1612400 5693248 1612408 5693168 1609280 5689560 1611464 5695816 -1611560 5695880 1612136 5695120 1612400 5693248 1611464 5695816 -1611560 5695880 1612136 5695120 1611464 5695816 1608544 5699312 -1612136 5695120 1612440 5693432 1612400 5693248 1611464 5695816 -1612136 5695120 1612160 5695080 1612440 5693432 1611464 5695816 -1612440 5693432 1612400 5693248 1611464 5695816 1612160 5695080 -1611560 5695880 1612120 5695192 1612136 5695120 1611464 5695816 -1611560 5695880 1612120 5695192 1611464 5695816 1608544 5699312 -1611560 5695880 1612128 5695248 1612120 5695192 1611464 5695816 -1611560 5695880 1612128 5695248 1611464 5695816 1608544 5699312 -1612120 5695192 1612136 5695120 1611464 5695816 1612128 5695248 -1612136 5695120 1612160 5695080 1611464 5695816 1612120 5695192 -1612160 5695080 1612504 5693584 1612440 5693432 1611464 5695816 -1611560 5695880 1612176 5695584 1612128 5695248 1611464 5695816 -1611560 5695880 1612176 5695584 1611464 5695816 1608544 5699312 -1612128 5695248 1612120 5695192 1611464 5695816 1612176 5695584 -1612176 5695584 1612216 5695400 1612128 5695248 1611464 5695816 -1611560 5695880 1611680 5695944 1612176 5695584 1611464 5695816 -1612400 5693248 1609280 5689560 1611464 5695816 1612440 5693432 -1611560 5695880 1611464 5695816 1608544 5699312 1608624 5699288 -1611464 5695816 1602224 5696056 1608544 5699312 1608624 5699288 -1611560 5695880 1612176 5695584 1611464 5695816 1608624 5699288 -1611560 5695880 1611464 5695816 1608624 5699288 1610784 5698784 -1611560 5695880 1612176 5695584 1611464 5695816 1610784 5698784 -1611560 5695880 1611464 5695816 1610784 5698784 1611592 5695912 -1611560 5695880 1612176 5695584 1611464 5695816 1611592 5695912 -1610784 5698784 1610848 5698768 1611592 5695912 1611464 5695816 -1610848 5698768 1611704 5695976 1611592 5695912 1611464 5695816 -1611592 5695912 1611560 5695880 1611464 5695816 1610848 5698768 -1608624 5699288 1610736 5698824 1610784 5698784 1611464 5695816 -1611464 5695816 1608544 5699312 1608624 5699288 1610784 5698784 -1611464 5695816 1608624 5699288 1610784 5698784 1610848 5698768 -1611464 5695816 1611336 5695680 1602224 5696056 1608544 5699312 -1611464 5695816 1611336 5695680 1608544 5699312 1608624 5699288 -1611336 5695680 1602224 5696056 1608544 5699312 1608624 5699288 -1611464 5695816 1608736 5689448 1611336 5695680 1608624 5699288 -1608736 5689448 1611336 5695680 1611464 5695816 1608840 5689480 -1611464 5695816 1609280 5689560 1608840 5689480 1611336 5695680 -1611464 5695816 1612400 5693248 1609280 5689560 1611336 5695680 -1609280 5689560 1608840 5689480 1611336 5695680 1612400 5693248 -1611336 5695680 1608624 5699288 1611464 5695816 1612400 5693248 -1608840 5689480 1608736 5689448 1611336 5695680 1609280 5689560 -1611336 5695680 1608736 5689448 1602224 5696056 1608544 5699312 -1608736 5689448 1602224 5696056 1611336 5695680 1608840 5689480 -1602224 5696056 1611336 5695680 1608736 5689448 1602200 5696008 -1612400 5693248 1612408 5693168 1609280 5689560 1611336 5695680 -1609280 5689560 1609232 5689536 1608840 5689480 1611336 5695680 -1602224 5696056 1602504 5696992 1608544 5699312 1611336 5695680 -1611464 5695816 1612440 5693432 1612400 5693248 1611336 5695680 -1612400 5693248 1609280 5689560 1611336 5695680 1612440 5693432 -1611464 5695816 1612440 5693432 1611336 5695680 1608624 5699288 -1611464 5695816 1612160 5695080 1612440 5693432 1611336 5695680 -1611464 5695816 1612160 5695080 1611336 5695680 1608624 5699288 -1611464 5695816 1612136 5695120 1612160 5695080 1611336 5695680 -1611464 5695816 1612136 5695120 1611336 5695680 1608624 5699288 -1612160 5695080 1612440 5693432 1611336 5695680 1612136 5695120 -1611464 5695816 1612120 5695192 1612136 5695120 1611336 5695680 -1611464 5695816 1612120 5695192 1611336 5695680 1608624 5699288 -1612136 5695120 1612160 5695080 1611336 5695680 1612120 5695192 -1611464 5695816 1612128 5695248 1612120 5695192 1611336 5695680 -1611464 5695816 1612128 5695248 1611336 5695680 1608624 5699288 -1611464 5695816 1612176 5695584 1612128 5695248 1611336 5695680 -1612120 5695192 1612136 5695120 1611336 5695680 1612128 5695248 -1612160 5695080 1612504 5693584 1612440 5693432 1611336 5695680 -1612440 5693432 1612400 5693248 1611336 5695680 1612160 5695080 -1611464 5695816 1611336 5695680 1608624 5699288 1610784 5698784 -1611336 5695680 1608544 5699312 1608624 5699288 1610784 5698784 -1611464 5695816 1612128 5695248 1611336 5695680 1610784 5698784 -1608624 5699288 1610736 5698824 1610784 5698784 1611336 5695680 -1611464 5695816 1611336 5695680 1610784 5698784 1610848 5698768 -1611336 5695680 1611136 5695304 1602224 5696056 1608544 5699312 -1611336 5695680 1611136 5695304 1608544 5699312 1608624 5699288 -1611336 5695680 1611136 5695304 1608624 5699288 1610784 5698784 -1611136 5695304 1602224 5696056 1608544 5699312 1608624 5699288 -1611336 5695680 1608736 5689448 1611136 5695304 1608624 5699288 -1608736 5689448 1611136 5695304 1611336 5695680 1608840 5689480 -1611336 5695680 1609280 5689560 1608840 5689480 1611136 5695304 -1611336 5695680 1612400 5693248 1609280 5689560 1611136 5695304 -1611336 5695680 1612440 5693432 1612400 5693248 1611136 5695304 -1612400 5693248 1609280 5689560 1611136 5695304 1612440 5693432 -1609280 5689560 1608840 5689480 1611136 5695304 1612400 5693248 -1611136 5695304 1608624 5699288 1611336 5695680 1612440 5693432 -1608840 5689480 1608736 5689448 1611136 5695304 1609280 5689560 -1611136 5695304 1608736 5689448 1602224 5696056 1608544 5699312 -1608736 5689448 1602224 5696056 1611136 5695304 1608840 5689480 -1602224 5696056 1611136 5695304 1608736 5689448 1602200 5696008 -1602224 5696056 1608544 5699312 1611136 5695304 1602200 5696008 -1611136 5695304 1608840 5689480 1608736 5689448 1602200 5696008 -1608736 5689448 1602160 5695928 1602200 5696008 1611136 5695304 -1608736 5689448 1602160 5695928 1611136 5695304 1608840 5689480 -1602200 5696008 1602224 5696056 1611136 5695304 1602160 5695928 -1612400 5693248 1612408 5693168 1609280 5689560 1611136 5695304 -1612400 5693248 1612408 5693168 1611136 5695304 1612440 5693432 -1609280 5689560 1608840 5689480 1611136 5695304 1612408 5693168 -1612408 5693168 1609400 5689560 1609280 5689560 1611136 5695304 -1608736 5689448 1608616 5689368 1602160 5695928 1611136 5695304 -1609280 5689560 1609232 5689536 1608840 5689480 1611136 5695304 -1602224 5696056 1602504 5696992 1608544 5699312 1611136 5695304 -1611336 5695680 1612160 5695080 1612440 5693432 1611136 5695304 -1612440 5693432 1612400 5693248 1611136 5695304 1612160 5695080 -1611336 5695680 1612160 5695080 1611136 5695304 1608624 5699288 -1611336 5695680 1612136 5695120 1612160 5695080 1611136 5695304 -1611336 5695680 1612136 5695120 1611136 5695304 1608624 5699288 -1611336 5695680 1612120 5695192 1612136 5695120 1611136 5695304 -1611336 5695680 1612120 5695192 1611136 5695304 1608624 5699288 -1612136 5695120 1612160 5695080 1611136 5695304 1612120 5695192 -1611336 5695680 1612128 5695248 1612120 5695192 1611136 5695304 -1612160 5695080 1612504 5693584 1612440 5693432 1611136 5695304 -1612440 5693432 1612400 5693248 1611136 5695304 1612504 5693584 -1612160 5695080 1612504 5693584 1611136 5695304 1612136 5695120 -1612160 5695080 1612584 5694512 1612504 5693584 1611136 5695304 -1611136 5695304 1611120 5695240 1609280 5689560 1608840 5689480 -1611136 5695304 1611120 5695240 1608840 5689480 1608736 5689448 -1611120 5695240 1609280 5689560 1608840 5689480 1608736 5689448 -1611136 5695304 1612408 5693168 1611120 5695240 1608736 5689448 -1611136 5695304 1611120 5695240 1608736 5689448 1602160 5695928 -1611120 5695240 1608840 5689480 1608736 5689448 1602160 5695928 -1611136 5695304 1612408 5693168 1611120 5695240 1602160 5695928 -1611120 5695240 1612408 5693168 1609280 5689560 1608840 5689480 -1611136 5695304 1611120 5695240 1602160 5695928 1602200 5696008 -1611136 5695304 1612408 5693168 1611120 5695240 1602200 5696008 -1611120 5695240 1608736 5689448 1602160 5695928 1602200 5696008 -1611136 5695304 1611120 5695240 1602200 5696008 1602224 5696056 -1611136 5695304 1611120 5695240 1602224 5696056 1608544 5699312 -1611136 5695304 1611120 5695240 1608544 5699312 1608624 5699288 -1611136 5695304 1611120 5695240 1608624 5699288 1611336 5695680 -1611120 5695240 1602224 5696056 1608544 5699312 1608624 5699288 -1611136 5695304 1612408 5693168 1611120 5695240 1608624 5699288 -1611120 5695240 1602200 5696008 1602224 5696056 1608544 5699312 -1611120 5695240 1602160 5695928 1602200 5696008 1602224 5696056 -1609280 5689560 1611120 5695240 1612408 5693168 1609400 5689560 -1612408 5693168 1611120 5695240 1611136 5695304 1612400 5693248 -1611136 5695304 1612440 5693432 1612400 5693248 1611120 5695240 -1611136 5695304 1612504 5693584 1612440 5693432 1611120 5695240 -1612440 5693432 1612400 5693248 1611120 5695240 1612504 5693584 -1611120 5695240 1608624 5699288 1611136 5695304 1612504 5693584 -1612408 5693168 1609280 5689560 1611120 5695240 1612400 5693248 -1612400 5693248 1612408 5693168 1611120 5695240 1612440 5693432 -1608736 5689448 1608616 5689368 1602160 5695928 1611120 5695240 -1609280 5689560 1609232 5689536 1608840 5689480 1611120 5695240 -1611136 5695304 1612160 5695080 1612504 5693584 1611120 5695240 -1612504 5693584 1612440 5693432 1611120 5695240 1612160 5695080 -1611136 5695304 1612160 5695080 1611120 5695240 1608624 5699288 -1602224 5696056 1602504 5696992 1608544 5699312 1611120 5695240 -1608544 5699312 1608624 5699288 1611120 5695240 1602504 5696992 -1602224 5696056 1602504 5696992 1611120 5695240 1602200 5696008 -1602504 5696992 1608256 5699504 1608544 5699312 1611120 5695240 -1602224 5696056 1602224 5696096 1602504 5696992 1611120 5695240 -1611136 5695304 1612136 5695120 1612160 5695080 1611120 5695240 -1611136 5695304 1612136 5695120 1611120 5695240 1608624 5699288 -1611136 5695304 1612120 5695192 1612136 5695120 1611120 5695240 -1611136 5695304 1612120 5695192 1611120 5695240 1608624 5699288 -1611136 5695304 1611336 5695680 1612120 5695192 1611120 5695240 -1612160 5695080 1612504 5693584 1611120 5695240 1612136 5695120 -1612136 5695120 1612160 5695080 1611120 5695240 1612120 5695192 -1612160 5695080 1612584 5694512 1612504 5693584 1611120 5695240 -1611120 5695240 1611152 5695144 1609280 5689560 1608840 5689480 -1611120 5695240 1611152 5695144 1608840 5689480 1608736 5689448 -1611120 5695240 1611152 5695144 1608736 5689448 1602160 5695928 -1611152 5695144 1609280 5689560 1608840 5689480 1608736 5689448 -1611120 5695240 1612408 5693168 1611152 5695144 1608736 5689448 -1612408 5693168 1611152 5695144 1611120 5695240 1612400 5693248 -1611152 5695144 1608736 5689448 1611120 5695240 1612400 5693248 -1611152 5695144 1612408 5693168 1609280 5689560 1608840 5689480 -1612408 5693168 1609280 5689560 1611152 5695144 1612400 5693248 -1609280 5689560 1611152 5695144 1612408 5693168 1609400 5689560 -1609280 5689560 1608840 5689480 1611152 5695144 1609400 5689560 -1611152 5695144 1612400 5693248 1612408 5693168 1609400 5689560 -1611120 5695240 1612440 5693432 1612400 5693248 1611152 5695144 -1611120 5695240 1612504 5693584 1612440 5693432 1611152 5695144 -1611120 5695240 1612160 5695080 1612504 5693584 1611152 5695144 -1612504 5693584 1612440 5693432 1611152 5695144 1612160 5695080 -1611120 5695240 1612160 5695080 1611152 5695144 1608736 5689448 -1612400 5693248 1612408 5693168 1611152 5695144 1612440 5693432 -1612440 5693432 1612400 5693248 1611152 5695144 1612504 5693584 -1612408 5693168 1610008 5689456 1609400 5689560 1611152 5695144 -1609280 5689560 1609232 5689536 1608840 5689480 1611152 5695144 -1611120 5695240 1612136 5695120 1612160 5695080 1611152 5695144 -1612160 5695080 1612504 5693584 1611152 5695144 1612136 5695120 -1611120 5695240 1612136 5695120 1611152 5695144 1608736 5689448 -1611120 5695240 1612120 5695192 1612136 5695120 1611152 5695144 -1611120 5695240 1612120 5695192 1611152 5695144 1608736 5689448 -1611120 5695240 1611136 5695304 1612120 5695192 1611152 5695144 -1611120 5695240 1611136 5695304 1611152 5695144 1608736 5689448 -1611136 5695304 1611336 5695680 1612120 5695192 1611152 5695144 -1612136 5695120 1612160 5695080 1611152 5695144 1612120 5695192 -1612120 5695192 1612136 5695120 1611152 5695144 1611136 5695304 -1612160 5695080 1612584 5694512 1612504 5693584 1611152 5695144 -1612160 5695080 1612584 5694512 1611152 5695144 1612136 5695120 -1612504 5693584 1612440 5693432 1611152 5695144 1612584 5694512 -1612584 5694512 1612680 5693808 1612504 5693584 1611152 5695144 -1612160 5695080 1612592 5694608 1612584 5694512 1611152 5695144 -1611152 5695144 1611184 5695112 1612504 5693584 1612440 5693432 -1611152 5695144 1612584 5694512 1611184 5695112 1612440 5693432 -1611184 5695112 1612584 5694512 1612504 5693584 1612440 5693432 -1611152 5695144 1611184 5695112 1612440 5693432 1612400 5693248 -1611184 5695112 1612504 5693584 1612440 5693432 1612400 5693248 -1611152 5695144 1611184 5695112 1612400 5693248 1612408 5693168 -1611152 5695144 1612584 5694512 1611184 5695112 1612408 5693168 -1611152 5695144 1611184 5695112 1612408 5693168 1609400 5689560 -1611184 5695112 1612400 5693248 1612408 5693168 1609400 5689560 -1611152 5695144 1612584 5694512 1611184 5695112 1609400 5689560 -1611152 5695144 1611184 5695112 1609400 5689560 1609280 5689560 -1611152 5695144 1611184 5695112 1609280 5689560 1608840 5689480 -1611152 5695144 1612584 5694512 1611184 5695112 1609280 5689560 -1611184 5695112 1612408 5693168 1609400 5689560 1609280 5689560 -1611184 5695112 1612440 5693432 1612400 5693248 1612408 5693168 -1612504 5693584 1611184 5695112 1612584 5694512 1612680 5693808 -1612408 5693168 1610008 5689456 1609400 5689560 1611184 5695112 -1612584 5694512 1611184 5695112 1611152 5695144 1612160 5695080 -1611152 5695144 1612136 5695120 1612160 5695080 1611184 5695112 -1611184 5695112 1609280 5689560 1611152 5695144 1612136 5695120 -1612584 5694512 1612504 5693584 1611184 5695112 1612160 5695080 -1611152 5695144 1612120 5695192 1612136 5695120 1611184 5695112 -1612136 5695120 1612160 5695080 1611184 5695112 1612120 5695192 -1611152 5695144 1612120 5695192 1611184 5695112 1609280 5689560 -1611152 5695144 1611136 5695304 1612120 5695192 1611184 5695112 -1611152 5695144 1611136 5695304 1611184 5695112 1609280 5689560 -1611136 5695304 1611336 5695680 1612120 5695192 1611184 5695112 -1611152 5695144 1611120 5695240 1611136 5695304 1611184 5695112 -1611336 5695680 1612128 5695248 1612120 5695192 1611184 5695112 -1611336 5695680 1612128 5695248 1611184 5695112 1611136 5695304 -1611336 5695680 1611464 5695816 1612128 5695248 1611184 5695112 -1612120 5695192 1612136 5695120 1611184 5695112 1612128 5695248 -1611136 5695304 1611336 5695680 1611184 5695112 1611152 5695144 -1612160 5695080 1612584 5694512 1611184 5695112 1612136 5695120 -1612584 5694512 1611184 5695112 1612160 5695080 1612592 5694608 -1611184 5695112 1611408 5694992 1612504 5693584 1612440 5693432 -1611184 5695112 1611408 5694992 1612440 5693432 1612400 5693248 -1611408 5694992 1612504 5693584 1612440 5693432 1612400 5693248 -1611184 5695112 1612584 5694512 1611408 5694992 1612400 5693248 -1612584 5694512 1611408 5694992 1611184 5695112 1612160 5695080 -1611408 5694992 1612400 5693248 1611184 5695112 1612160 5695080 -1611408 5694992 1612584 5694512 1612504 5693584 1612440 5693432 -1612584 5694512 1612504 5693584 1611408 5694992 1612160 5695080 -1611184 5695112 1611408 5694992 1612400 5693248 1612408 5693168 -1612504 5693584 1611408 5694992 1612584 5694512 1612680 5693808 -1611184 5695112 1612136 5695120 1612160 5695080 1611408 5694992 -1611184 5695112 1612120 5695192 1612136 5695120 1611408 5694992 -1611184 5695112 1612120 5695192 1611408 5694992 1612400 5693248 -1612160 5695080 1612584 5694512 1611408 5694992 1612136 5695120 -1611184 5695112 1612128 5695248 1612120 5695192 1611408 5694992 -1612120 5695192 1612136 5695120 1611408 5694992 1612128 5695248 -1611184 5695112 1612128 5695248 1611408 5694992 1612400 5693248 -1611184 5695112 1611336 5695680 1612128 5695248 1611408 5694992 -1611184 5695112 1611336 5695680 1611408 5694992 1612400 5693248 -1611184 5695112 1611136 5695304 1611336 5695680 1611408 5694992 -1611184 5695112 1611136 5695304 1611408 5694992 1612400 5693248 -1611336 5695680 1611464 5695816 1612128 5695248 1611408 5694992 -1611336 5695680 1612128 5695248 1611408 5694992 1611136 5695304 -1612128 5695248 1612120 5695192 1611408 5694992 1611336 5695680 -1611184 5695112 1611152 5695144 1611136 5695304 1611408 5694992 -1612136 5695120 1612160 5695080 1611408 5694992 1612120 5695192 -1612584 5694512 1611408 5694992 1612160 5695080 1612592 5694608 -1611408 5694992 1611472 5694920 1612504 5693584 1612440 5693432 -1611408 5694992 1611472 5694920 1612440 5693432 1612400 5693248 -1611408 5694992 1611472 5694920 1612400 5693248 1611184 5695112 -1611472 5694920 1612440 5693432 1612400 5693248 1611184 5695112 -1611472 5694920 1612504 5693584 1612440 5693432 1612400 5693248 -1611408 5694992 1612584 5694512 1611472 5694920 1611184 5695112 -1612584 5694512 1611472 5694920 1611408 5694992 1612160 5695080 -1611408 5694992 1612136 5695120 1612160 5695080 1611472 5694920 -1611472 5694920 1611184 5695112 1611408 5694992 1612136 5695120 -1612160 5695080 1612584 5694512 1611472 5694920 1612136 5695120 -1611472 5694920 1612584 5694512 1612504 5693584 1612440 5693432 -1612584 5694512 1612504 5693584 1611472 5694920 1612160 5695080 -1612400 5693248 1612408 5693168 1611184 5695112 1611472 5694920 -1612504 5693584 1611472 5694920 1612584 5694512 1612680 5693808 -1611408 5694992 1612120 5695192 1612136 5695120 1611472 5694920 -1611408 5694992 1612128 5695248 1612120 5695192 1611472 5694920 -1612136 5695120 1612160 5695080 1611472 5694920 1612120 5695192 -1611408 5694992 1612120 5695192 1611472 5694920 1611184 5695112 -1612584 5694512 1611472 5694920 1612160 5695080 1612592 5694608 -1611472 5694920 1611512 5694768 1611184 5695112 1611408 5694992 -1612400 5693248 1611512 5694768 1611472 5694920 1612440 5693432 -1611472 5694920 1612504 5693584 1612440 5693432 1611512 5694768 -1612440 5693432 1612400 5693248 1611512 5694768 1612504 5693584 -1611472 5694920 1612584 5694512 1612504 5693584 1611512 5694768 -1612504 5693584 1612440 5693432 1611512 5694768 1612584 5694512 -1611472 5694920 1612584 5694512 1611512 5694768 1611408 5694992 -1611472 5694920 1612160 5695080 1612584 5694512 1611512 5694768 -1611472 5694920 1612136 5695120 1612160 5695080 1611512 5694768 -1611472 5694920 1612120 5695192 1612136 5695120 1611512 5694768 -1612584 5694512 1612504 5693584 1611512 5694768 1612160 5695080 -1611472 5694920 1612136 5695120 1611512 5694768 1611408 5694992 -1612160 5695080 1612584 5694512 1611512 5694768 1612136 5695120 -1611512 5694768 1612400 5693248 1611184 5695112 1611408 5694992 -1612400 5693248 1611184 5695112 1611512 5694768 1612440 5693432 -1611184 5695112 1611512 5694768 1612400 5693248 1612408 5693168 -1611184 5695112 1611512 5694768 1612408 5693168 1609400 5689560 -1611184 5695112 1611512 5694768 1609400 5689560 1609280 5689560 -1611512 5694768 1612408 5693168 1609400 5689560 1609280 5689560 -1611184 5695112 1611408 5694992 1611512 5694768 1609280 5689560 -1611512 5694768 1612440 5693432 1612400 5693248 1612408 5693168 -1611184 5695112 1611512 5694768 1609280 5689560 1611152 5695144 -1611512 5694768 1612400 5693248 1612408 5693168 1609400 5689560 -1612584 5694512 1612680 5693808 1612504 5693584 1611512 5694768 -1612408 5693168 1610008 5689456 1609400 5689560 1611512 5694768 -1612160 5695080 1612592 5694608 1612584 5694512 1611512 5694768 -1611512 5694768 1611568 5694712 1612504 5693584 1612440 5693432 -1611512 5694768 1611568 5694712 1612440 5693432 1612400 5693248 -1611568 5694712 1612504 5693584 1612440 5693432 1612400 5693248 -1612584 5694512 1611568 5694712 1611512 5694768 1612160 5695080 -1611512 5694768 1612136 5695120 1612160 5695080 1611568 5694712 -1611512 5694768 1611472 5694920 1612136 5695120 1611568 5694712 -1611472 5694920 1612120 5695192 1612136 5695120 1611568 5694712 -1612160 5695080 1612584 5694512 1611568 5694712 1612136 5695120 -1612136 5695120 1612160 5695080 1611568 5694712 1611472 5694920 -1611512 5694768 1611472 5694920 1611568 5694712 1612400 5693248 -1611512 5694768 1611568 5694712 1612400 5693248 1612408 5693168 -1611568 5694712 1612440 5693432 1612400 5693248 1612408 5693168 -1611512 5694768 1611472 5694920 1611568 5694712 1612408 5693168 -1611568 5694712 1612584 5694512 1612504 5693584 1612440 5693432 -1612584 5694512 1612504 5693584 1611568 5694712 1612160 5695080 -1611512 5694768 1611568 5694712 1612408 5693168 1609400 5689560 -1611512 5694768 1611568 5694712 1609400 5689560 1609280 5689560 -1611512 5694768 1611472 5694920 1611568 5694712 1609400 5689560 -1611568 5694712 1612400 5693248 1612408 5693168 1609400 5689560 -1612504 5693584 1611568 5694712 1612584 5694512 1612680 5693808 -1612408 5693168 1610008 5689456 1609400 5689560 1611568 5694712 -1612584 5694512 1611568 5694712 1612160 5695080 1612592 5694608 -1611568 5694712 1611712 5694648 1612504 5693584 1612440 5693432 -1611568 5694712 1611712 5694648 1612440 5693432 1612400 5693248 -1611568 5694712 1611712 5694648 1612400 5693248 1612408 5693168 -1611712 5694648 1612504 5693584 1612440 5693432 1612400 5693248 -1611568 5694712 1612584 5694512 1611712 5694648 1612400 5693248 -1612584 5694512 1611712 5694648 1611568 5694712 1612160 5695080 -1611568 5694712 1612136 5695120 1612160 5695080 1611712 5694648 -1611568 5694712 1611472 5694920 1612136 5695120 1611712 5694648 -1611472 5694920 1612120 5695192 1612136 5695120 1611712 5694648 -1611568 5694712 1611512 5694768 1611472 5694920 1611712 5694648 -1612136 5695120 1612160 5695080 1611712 5694648 1611472 5694920 -1611712 5694648 1612400 5693248 1611568 5694712 1611472 5694920 -1612160 5695080 1612584 5694512 1611712 5694648 1612136 5695120 -1611712 5694648 1612584 5694512 1612504 5693584 1612440 5693432 -1612584 5694512 1612504 5693584 1611712 5694648 1612160 5695080 -1612504 5693584 1611712 5694648 1612584 5694512 1612680 5693808 -1612584 5694512 1611712 5694648 1612160 5695080 1612592 5694608 -1611712 5694648 1612136 5695120 1612160 5695080 1612592 5694608 -1612584 5694512 1612504 5693584 1611712 5694648 1612592 5694608 -1612160 5695080 1612240 5695096 1612592 5694608 1611712 5694648 -1611712 5694648 1611752 5694600 1612504 5693584 1612440 5693432 -1611712 5694648 1611752 5694600 1612440 5693432 1612400 5693248 -1611712 5694648 1611752 5694600 1612400 5693248 1611568 5694712 -1612400 5693248 1612408 5693168 1611568 5694712 1611752 5694600 -1611752 5694600 1612440 5693432 1612400 5693248 1611568 5694712 -1611752 5694600 1612504 5693584 1612440 5693432 1612400 5693248 -1611712 5694648 1612584 5694512 1611752 5694600 1611568 5694712 -1612584 5694512 1611752 5694600 1611712 5694648 1612592 5694608 -1611752 5694600 1611568 5694712 1611712 5694648 1612592 5694608 -1612504 5693584 1611752 5694600 1612584 5694512 1612680 5693808 -1611752 5694600 1612680 5693808 1612504 5693584 1612440 5693432 -1612584 5694512 1612680 5693808 1611752 5694600 1612592 5694608 -1611712 5694648 1612160 5695080 1612592 5694608 1611752 5694600 -1611712 5694648 1612136 5695120 1612160 5695080 1611752 5694600 -1611712 5694648 1612160 5695080 1611752 5694600 1611568 5694712 -1612592 5694608 1612584 5694512 1611752 5694600 1612160 5695080 -1612160 5695080 1612240 5695096 1612592 5694608 1611752 5694600 -1612584 5694512 1612680 5694440 1612680 5693808 1611752 5694600 -1611568 5694712 1611768 5694560 1612400 5693248 1612408 5693168 -1611752 5694600 1611768 5694560 1611568 5694712 1611712 5694648 -1612400 5693248 1611768 5694560 1611752 5694600 1612440 5693432 -1611752 5694600 1612504 5693584 1612440 5693432 1611768 5694560 -1612440 5693432 1612400 5693248 1611768 5694560 1612504 5693584 -1611752 5694600 1612680 5693808 1612504 5693584 1611768 5694560 -1612504 5693584 1612440 5693432 1611768 5694560 1612680 5693808 -1611752 5694600 1612584 5694512 1612680 5693808 1611768 5694560 -1612680 5693808 1612504 5693584 1611768 5694560 1612584 5694512 -1611752 5694600 1612584 5694512 1611768 5694560 1611712 5694648 -1611752 5694600 1612592 5694608 1612584 5694512 1611768 5694560 -1611752 5694600 1612160 5695080 1612592 5694608 1611768 5694560 -1612584 5694512 1612680 5693808 1611768 5694560 1612592 5694608 -1611752 5694600 1612160 5695080 1611768 5694560 1611712 5694648 -1612592 5694608 1612584 5694512 1611768 5694560 1612160 5695080 -1611768 5694560 1612400 5693248 1611568 5694712 1611712 5694648 -1612400 5693248 1611568 5694712 1611768 5694560 1612440 5693432 -1611752 5694600 1611712 5694648 1612160 5695080 1611768 5694560 -1612160 5695080 1612240 5695096 1612592 5694608 1611768 5694560 -1612584 5694512 1612680 5694440 1612680 5693808 1611768 5694560 -1611568 5694712 1611776 5694448 1612400 5693248 1612408 5693168 -1611568 5694712 1611776 5694448 1612408 5693168 1609400 5689560 -1611776 5694448 1612400 5693248 1612408 5693168 1609400 5689560 -1611568 5694712 1611776 5694448 1609400 5689560 1611512 5694768 -1609400 5689560 1609280 5689560 1611512 5694768 1611776 5694448 -1609280 5689560 1611184 5695112 1611512 5694768 1611776 5694448 -1611776 5694448 1612408 5693168 1609400 5689560 1609280 5689560 -1611512 5694768 1611568 5694712 1611776 5694448 1609280 5689560 -1611768 5694560 1611776 5694448 1611568 5694712 1611712 5694648 -1611768 5694560 1611776 5694448 1611712 5694648 1611752 5694600 -1611768 5694560 1612400 5693248 1611776 5694448 1611712 5694648 -1612400 5693248 1611776 5694448 1611768 5694560 1612440 5693432 -1611768 5694560 1612504 5693584 1612440 5693432 1611776 5694448 -1611768 5694560 1612680 5693808 1612504 5693584 1611776 5694448 -1612504 5693584 1612440 5693432 1611776 5694448 1612680 5693808 -1611768 5694560 1612584 5694512 1612680 5693808 1611776 5694448 -1612680 5693808 1612504 5693584 1611776 5694448 1612584 5694512 -1611768 5694560 1612592 5694608 1612584 5694512 1611776 5694448 -1611776 5694448 1611712 5694648 1611768 5694560 1612584 5694512 -1612440 5693432 1612400 5693248 1611776 5694448 1612504 5693584 -1611568 5694712 1611712 5694648 1611776 5694448 1611512 5694768 -1611776 5694448 1612440 5693432 1612400 5693248 1612408 5693168 -1612408 5693168 1610008 5689456 1609400 5689560 1611776 5694448 -1612584 5694512 1612680 5694440 1612680 5693808 1611776 5694448 -1612408 5693168 1611768 5694392 1611776 5694448 1612400 5693248 -1611776 5694448 1611768 5694392 1609400 5689560 1609280 5689560 -1611776 5694448 1611768 5694392 1609280 5689560 1611512 5694768 -1609280 5689560 1611184 5695112 1611512 5694768 1611768 5694392 -1611512 5694768 1611776 5694448 1611768 5694392 1611184 5695112 -1611184 5695112 1611408 5694992 1611512 5694768 1611768 5694392 -1611768 5694392 1609400 5689560 1609280 5689560 1611184 5695112 -1609280 5689560 1611152 5695144 1611184 5695112 1611768 5694392 -1611776 5694448 1611768 5694392 1611512 5694768 1611568 5694712 -1611768 5694392 1611184 5695112 1611512 5694768 1611568 5694712 -1611776 5694448 1611768 5694392 1611568 5694712 1611712 5694648 -1611768 5694392 1611568 5694712 1611776 5694448 1612400 5693248 -1611776 5694448 1612440 5693432 1612400 5693248 1611768 5694392 -1612400 5693248 1612408 5693168 1611768 5694392 1612440 5693432 -1611776 5694448 1612504 5693584 1612440 5693432 1611768 5694392 -1611776 5694448 1612680 5693808 1612504 5693584 1611768 5694392 -1611776 5694448 1612584 5694512 1612680 5693808 1611768 5694392 -1612680 5693808 1612504 5693584 1611768 5694392 1612584 5694512 -1611776 5694448 1611768 5694560 1612584 5694512 1611768 5694392 -1612504 5693584 1612440 5693432 1611768 5694392 1612680 5693808 -1611776 5694448 1612584 5694512 1611768 5694392 1611568 5694712 -1612440 5693432 1612400 5693248 1611768 5694392 1612504 5693584 -1611768 5694392 1612408 5693168 1609400 5689560 1609280 5689560 -1612408 5693168 1609400 5689560 1611768 5694392 1612400 5693248 -1609400 5689560 1611768 5694392 1612408 5693168 1610008 5689456 -1612584 5694512 1612680 5694440 1612680 5693808 1611768 5694392 -1611768 5694392 1611712 5694312 1611184 5695112 1611512 5694768 -1611768 5694392 1611712 5694312 1611512 5694768 1611568 5694712 -1611712 5694312 1611184 5695112 1611512 5694768 1611568 5694712 -1611184 5695112 1611408 5694992 1611512 5694768 1611712 5694312 -1609280 5689560 1611712 5694312 1611768 5694392 1609400 5689560 -1611184 5695112 1611712 5694312 1609280 5689560 1611152 5695144 -1609280 5689560 1608840 5689480 1611152 5695144 1611712 5694312 -1611768 5694392 1611712 5694312 1611568 5694712 1611776 5694448 -1611712 5694312 1611512 5694768 1611568 5694712 1611776 5694448 -1611568 5694712 1611712 5694648 1611776 5694448 1611712 5694312 -1611768 5694392 1612408 5693168 1609400 5689560 1611712 5694312 -1609400 5689560 1609280 5689560 1611712 5694312 1612408 5693168 -1611768 5694392 1612408 5693168 1611712 5694312 1611776 5694448 -1611768 5694392 1612400 5693248 1612408 5693168 1611712 5694312 -1611768 5694392 1612440 5693432 1612400 5693248 1611712 5694312 -1611768 5694392 1612504 5693584 1612440 5693432 1611712 5694312 -1612440 5693432 1612400 5693248 1611712 5694312 1612504 5693584 -1611768 5694392 1612680 5693808 1612504 5693584 1611712 5694312 -1611768 5694392 1612584 5694512 1612680 5693808 1611712 5694312 -1612504 5693584 1612440 5693432 1611712 5694312 1612680 5693808 -1612408 5693168 1609400 5689560 1611712 5694312 1612400 5693248 -1611768 5694392 1612680 5693808 1611712 5694312 1611776 5694448 -1612400 5693248 1612408 5693168 1611712 5694312 1612440 5693432 -1611712 5694312 1611152 5695144 1611184 5695112 1611512 5694768 -1609280 5689560 1611152 5695144 1611712 5694312 1609400 5689560 -1612408 5693168 1610008 5689456 1609400 5689560 1611712 5694312 -1611152 5695144 1611608 5694232 1609280 5689560 1608840 5689480 -1611152 5695144 1611608 5694232 1608840 5689480 1608736 5689448 -1611712 5694312 1611608 5694232 1611152 5695144 1611184 5695112 -1611712 5694312 1611608 5694232 1611184 5695112 1611512 5694768 -1611712 5694312 1611608 5694232 1611512 5694768 1611568 5694712 -1611712 5694312 1611608 5694232 1611568 5694712 1611776 5694448 -1611184 5695112 1611408 5694992 1611512 5694768 1611608 5694232 -1611608 5694232 1611152 5695144 1611184 5695112 1611512 5694768 -1611608 5694232 1611184 5695112 1611512 5694768 1611568 5694712 -1611712 5694312 1609280 5689560 1611608 5694232 1611568 5694712 -1609280 5689560 1611608 5694232 1611712 5694312 1609400 5689560 -1611712 5694312 1612408 5693168 1609400 5689560 1611608 5694232 -1611712 5694312 1612400 5693248 1612408 5693168 1611608 5694232 -1612408 5693168 1609400 5689560 1611608 5694232 1612400 5693248 -1611712 5694312 1612440 5693432 1612400 5693248 1611608 5694232 -1611712 5694312 1612504 5693584 1612440 5693432 1611608 5694232 -1611712 5694312 1612680 5693808 1612504 5693584 1611608 5694232 -1612400 5693248 1612408 5693168 1611608 5694232 1612440 5693432 -1612440 5693432 1612400 5693248 1611608 5694232 1612504 5693584 -1611608 5694232 1611568 5694712 1611712 5694312 1612504 5693584 -1609400 5689560 1609280 5689560 1611608 5694232 1612408 5693168 -1611152 5695144 1611184 5695112 1611608 5694232 1608840 5689480 -1611608 5694232 1609400 5689560 1609280 5689560 1608840 5689480 -1612408 5693168 1610008 5689456 1609400 5689560 1611608 5694232 -1609280 5689560 1609232 5689536 1608840 5689480 1611608 5694232 -1611152 5695144 1611544 5694216 1608840 5689480 1608736 5689448 -1608840 5689480 1611544 5694216 1611608 5694232 1609280 5689560 -1611608 5694232 1611544 5694216 1611152 5695144 1611184 5695112 -1611608 5694232 1611544 5694216 1611184 5695112 1611512 5694768 -1611184 5695112 1611408 5694992 1611512 5694768 1611544 5694216 -1611608 5694232 1611544 5694216 1611512 5694768 1611568 5694712 -1611608 5694232 1611544 5694216 1611568 5694712 1611712 5694312 -1611568 5694712 1611776 5694448 1611712 5694312 1611544 5694216 -1611544 5694216 1611184 5695112 1611512 5694768 1611568 5694712 -1611544 5694216 1611512 5694768 1611568 5694712 1611712 5694312 -1611544 5694216 1611152 5695144 1611184 5695112 1611512 5694768 -1611544 5694216 1611712 5694312 1611608 5694232 1609280 5689560 -1611608 5694232 1609400 5689560 1609280 5689560 1611544 5694216 -1609280 5689560 1608840 5689480 1611544 5694216 1609400 5689560 -1611608 5694232 1612408 5693168 1609400 5689560 1611544 5694216 -1611608 5694232 1612400 5693248 1612408 5693168 1611544 5694216 -1611608 5694232 1612440 5693432 1612400 5693248 1611544 5694216 -1612400 5693248 1612408 5693168 1611544 5694216 1612440 5693432 -1611608 5694232 1612504 5693584 1612440 5693432 1611544 5694216 -1612408 5693168 1609400 5689560 1611544 5694216 1612400 5693248 -1611608 5694232 1612440 5693432 1611544 5694216 1611712 5694312 -1609400 5689560 1609280 5689560 1611544 5694216 1612408 5693168 -1611544 5694216 1608840 5689480 1611152 5695144 1611184 5695112 -1608840 5689480 1611152 5695144 1611544 5694216 1609280 5689560 -1612408 5693168 1610008 5689456 1609400 5689560 1611544 5694216 -1608840 5689480 1611544 5694216 1609280 5689560 1609232 5689536 -1611152 5695144 1611496 5694168 1608840 5689480 1608736 5689448 -1611152 5695144 1611496 5694168 1608736 5689448 1611120 5695240 -1611544 5694216 1611496 5694168 1611152 5695144 1611184 5695112 -1611544 5694216 1611496 5694168 1611184 5695112 1611512 5694768 -1611184 5695112 1611408 5694992 1611512 5694768 1611496 5694168 -1611544 5694216 1611496 5694168 1611512 5694768 1611568 5694712 -1611496 5694168 1611152 5695144 1611184 5695112 1611512 5694768 -1611544 5694216 1608840 5689480 1611496 5694168 1611512 5694768 -1608840 5689480 1611496 5694168 1611544 5694216 1609280 5689560 -1611544 5694216 1609400 5689560 1609280 5689560 1611496 5694168 -1611544 5694216 1612408 5693168 1609400 5689560 1611496 5694168 -1609400 5689560 1609280 5689560 1611496 5694168 1612408 5693168 -1611544 5694216 1612400 5693248 1612408 5693168 1611496 5694168 -1611544 5694216 1612440 5693432 1612400 5693248 1611496 5694168 -1611544 5694216 1611608 5694232 1612440 5693432 1611496 5694168 -1612440 5693432 1612400 5693248 1611496 5694168 1611608 5694232 -1611608 5694232 1612504 5693584 1612440 5693432 1611496 5694168 -1612400 5693248 1612408 5693168 1611496 5694168 1612440 5693432 -1612408 5693168 1609400 5689560 1611496 5694168 1612400 5693248 -1611496 5694168 1611512 5694768 1611544 5694216 1611608 5694232 -1609280 5689560 1608840 5689480 1611496 5694168 1609400 5689560 -1611152 5695144 1611184 5695112 1611496 5694168 1608736 5689448 -1611496 5694168 1609280 5689560 1608840 5689480 1608736 5689448 -1612408 5693168 1610008 5689456 1609400 5689560 1611496 5694168 -1609400 5689560 1609280 5689560 1611496 5694168 1610008 5689456 -1610008 5689456 1609672 5689488 1609400 5689560 1611496 5694168 -1612408 5693168 1612440 5693112 1610008 5689456 1611496 5694168 -1612408 5693168 1610008 5689456 1611496 5694168 1612400 5693248 -1608840 5689480 1611496 5694168 1609280 5689560 1609232 5689536 -1611152 5695144 1611464 5694160 1608736 5689448 1611120 5695240 -1608736 5689448 1611464 5694160 1611496 5694168 1608840 5689480 -1611496 5694168 1611464 5694160 1611152 5695144 1611184 5695112 -1611496 5694168 1611464 5694160 1611184 5695112 1611512 5694768 -1611184 5695112 1611408 5694992 1611512 5694768 1611464 5694160 -1611496 5694168 1611464 5694160 1611512 5694768 1611544 5694216 -1611512 5694768 1611568 5694712 1611544 5694216 1611464 5694160 -1611568 5694712 1611712 5694312 1611544 5694216 1611464 5694160 -1611544 5694216 1611496 5694168 1611464 5694160 1611568 5694712 -1611464 5694160 1611184 5695112 1611512 5694768 1611568 5694712 -1611464 5694160 1611152 5695144 1611184 5695112 1611512 5694768 -1611464 5694160 1611544 5694216 1611496 5694168 1608840 5689480 -1611496 5694168 1609280 5689560 1608840 5689480 1611464 5694160 -1608840 5689480 1608736 5689448 1611464 5694160 1609280 5689560 -1611496 5694168 1609400 5689560 1609280 5689560 1611464 5694160 -1611496 5694168 1610008 5689456 1609400 5689560 1611464 5694160 -1610008 5689456 1609672 5689488 1609400 5689560 1611464 5694160 -1609400 5689560 1609280 5689560 1611464 5694160 1610008 5689456 -1611496 5694168 1610008 5689456 1611464 5694160 1611544 5694216 -1609280 5689560 1608840 5689480 1611464 5694160 1609400 5689560 -1611464 5694160 1608736 5689448 1611152 5695144 1611184 5695112 -1608736 5689448 1611152 5695144 1611464 5694160 1608840 5689480 -1611496 5694168 1612408 5693168 1610008 5689456 1611464 5694160 -1610008 5689456 1609400 5689560 1611464 5694160 1612408 5693168 -1612408 5693168 1612440 5693112 1610008 5689456 1611464 5694160 -1611496 5694168 1612400 5693248 1612408 5693168 1611464 5694160 -1611496 5694168 1612440 5693432 1612400 5693248 1611464 5694160 -1611496 5694168 1612400 5693248 1611464 5694160 1611544 5694216 -1612408 5693168 1610008 5689456 1611464 5694160 1612400 5693248 -1609280 5689560 1609232 5689536 1608840 5689480 1611464 5694160 -1611152 5695144 1611360 5694104 1608736 5689448 1611120 5695240 -1608736 5689448 1602160 5695928 1611120 5695240 1611360 5694104 -1611464 5694160 1611360 5694104 1611152 5695144 1611184 5695112 -1611464 5694160 1611360 5694104 1611184 5695112 1611512 5694768 -1611184 5695112 1611408 5694992 1611512 5694768 1611360 5694104 -1611464 5694160 1611360 5694104 1611512 5694768 1611568 5694712 -1611360 5694104 1611152 5695144 1611184 5695112 1611512 5694768 -1611464 5694160 1608736 5689448 1611360 5694104 1611512 5694768 -1608736 5689448 1611360 5694104 1611464 5694160 1608840 5689480 -1611464 5694160 1609280 5689560 1608840 5689480 1611360 5694104 -1611464 5694160 1609400 5689560 1609280 5689560 1611360 5694104 -1609280 5689560 1608840 5689480 1611360 5694104 1609400 5689560 -1611464 5694160 1610008 5689456 1609400 5689560 1611360 5694104 -1611464 5694160 1612408 5693168 1610008 5689456 1611360 5694104 -1610008 5689456 1609672 5689488 1609400 5689560 1611360 5694104 -1612408 5693168 1612440 5693112 1610008 5689456 1611360 5694104 -1612408 5693168 1612440 5693112 1611360 5694104 1611464 5694160 -1612440 5693112 1612048 5690184 1610008 5689456 1611360 5694104 -1612440 5693112 1612208 5690280 1612048 5690184 1611360 5694104 -1612440 5693112 1612048 5690184 1611360 5694104 1612408 5693168 -1612048 5690184 1611896 5690040 1610008 5689456 1611360 5694104 -1610008 5689456 1609400 5689560 1611360 5694104 1612048 5690184 -1609400 5689560 1609280 5689560 1611360 5694104 1610008 5689456 -1611360 5694104 1611512 5694768 1611464 5694160 1612408 5693168 -1608840 5689480 1608736 5689448 1611360 5694104 1609280 5689560 -1611152 5695144 1611184 5695112 1611360 5694104 1611120 5695240 -1611360 5694104 1608840 5689480 1608736 5689448 1611120 5695240 -1611464 5694160 1612400 5693248 1612408 5693168 1611360 5694104 -1612408 5693168 1612440 5693112 1611360 5694104 1612400 5693248 -1611464 5694160 1611496 5694168 1612400 5693248 1611360 5694104 -1611496 5694168 1612440 5693432 1612400 5693248 1611360 5694104 -1611496 5694168 1611608 5694232 1612440 5693432 1611360 5694104 -1611496 5694168 1612440 5693432 1611360 5694104 1611464 5694160 -1611464 5694160 1611496 5694168 1611360 5694104 1611512 5694768 -1612400 5693248 1612408 5693168 1611360 5694104 1612440 5693432 -1609280 5689560 1609232 5689536 1608840 5689480 1611360 5694104 -1611360 5694104 1611344 5694080 1611120 5695240 1611152 5695144 -1611120 5695240 1611344 5694080 1608736 5689448 1602160 5695928 -1611360 5694104 1611344 5694080 1611152 5695144 1611184 5695112 -1611344 5694080 1611120 5695240 1611152 5695144 1611184 5695112 -1611360 5694104 1611344 5694080 1611184 5695112 1611512 5694768 -1611360 5694104 1608736 5689448 1611344 5694080 1611184 5695112 -1608736 5689448 1611344 5694080 1611360 5694104 1608840 5689480 -1611360 5694104 1609280 5689560 1608840 5689480 1611344 5694080 -1611360 5694104 1609400 5689560 1609280 5689560 1611344 5694080 -1611360 5694104 1610008 5689456 1609400 5689560 1611344 5694080 -1609400 5689560 1609280 5689560 1611344 5694080 1610008 5689456 -1610008 5689456 1609672 5689488 1609400 5689560 1611344 5694080 -1611360 5694104 1612048 5690184 1610008 5689456 1611344 5694080 -1611360 5694104 1612440 5693112 1612048 5690184 1611344 5694080 -1612440 5693112 1612208 5690280 1612048 5690184 1611344 5694080 -1611360 5694104 1612408 5693168 1612440 5693112 1611344 5694080 -1611360 5694104 1612400 5693248 1612408 5693168 1611344 5694080 -1612440 5693112 1612048 5690184 1611344 5694080 1612408 5693168 -1612408 5693168 1612440 5693112 1611344 5694080 1612400 5693248 -1612048 5690184 1611896 5690040 1610008 5689456 1611344 5694080 -1611896 5690040 1611360 5689624 1610008 5689456 1611344 5694080 -1612048 5690184 1611896 5690040 1611344 5694080 1612440 5693112 -1610008 5689456 1609400 5689560 1611344 5694080 1611896 5690040 -1609280 5689560 1608840 5689480 1611344 5694080 1609400 5689560 -1611344 5694080 1611184 5695112 1611360 5694104 1612400 5693248 -1608840 5689480 1608736 5689448 1611344 5694080 1609280 5689560 -1611344 5694080 1608736 5689448 1611120 5695240 1611152 5695144 -1608736 5689448 1611120 5695240 1611344 5694080 1608840 5689480 -1611360 5694104 1612440 5693432 1612400 5693248 1611344 5694080 -1612400 5693248 1612408 5693168 1611344 5694080 1612440 5693432 -1611360 5694104 1611496 5694168 1612440 5693432 1611344 5694080 -1611496 5694168 1611608 5694232 1612440 5693432 1611344 5694080 -1611360 5694104 1611464 5694160 1611496 5694168 1611344 5694080 -1611496 5694168 1612440 5693432 1611344 5694080 1611464 5694160 -1611360 5694104 1611464 5694160 1611344 5694080 1611184 5695112 -1612440 5693432 1612400 5693248 1611344 5694080 1611496 5694168 -1609280 5689560 1609232 5689536 1608840 5689480 1611344 5694080 -1611344 5694080 1611312 5693984 1609400 5689560 1609280 5689560 -1609400 5689560 1611312 5693984 1610008 5689456 1609672 5689488 -1610008 5689456 1611312 5693984 1611344 5694080 1611896 5690040 -1610008 5689456 1611312 5693984 1611896 5690040 1611360 5689624 -1611344 5694080 1612048 5690184 1611896 5690040 1611312 5693984 -1611344 5694080 1612440 5693112 1612048 5690184 1611312 5693984 -1612440 5693112 1612208 5690280 1612048 5690184 1611312 5693984 -1611344 5694080 1612408 5693168 1612440 5693112 1611312 5693984 -1611344 5694080 1612400 5693248 1612408 5693168 1611312 5693984 -1611344 5694080 1612440 5693432 1612400 5693248 1611312 5693984 -1612408 5693168 1612440 5693112 1611312 5693984 1612400 5693248 -1612400 5693248 1612408 5693168 1611312 5693984 1612440 5693432 -1612048 5690184 1611896 5690040 1611312 5693984 1612440 5693112 -1612440 5693112 1612048 5690184 1611312 5693984 1612408 5693168 -1611896 5690040 1610008 5689456 1611312 5693984 1612048 5690184 -1611344 5694080 1611312 5693984 1609280 5689560 1608840 5689480 -1611312 5693984 1609400 5689560 1609280 5689560 1608840 5689480 -1611344 5694080 1611312 5693984 1608840 5689480 1608736 5689448 -1611312 5693984 1609280 5689560 1608840 5689480 1608736 5689448 -1611344 5694080 1612440 5693432 1611312 5693984 1608736 5689448 -1611344 5694080 1611312 5693984 1608736 5689448 1611120 5695240 -1608736 5689448 1602160 5695928 1611120 5695240 1611312 5693984 -1602160 5695928 1602200 5696008 1611120 5695240 1611312 5693984 -1602160 5695928 1602200 5696008 1611312 5693984 1608736 5689448 -1602200 5696008 1602224 5696056 1611120 5695240 1611312 5693984 -1602200 5696008 1602224 5696056 1611312 5693984 1602160 5695928 -1602224 5696056 1602504 5696992 1611120 5695240 1611312 5693984 -1608736 5689448 1608616 5689368 1602160 5695928 1611312 5693984 -1611312 5693984 1608840 5689480 1608736 5689448 1602160 5695928 -1611344 5694080 1611312 5693984 1611120 5695240 1611152 5695144 -1611344 5694080 1611312 5693984 1611152 5695144 1611184 5695112 -1611344 5694080 1612440 5693432 1611312 5693984 1611152 5695144 -1611120 5695240 1611152 5695144 1611312 5693984 1602224 5696056 -1611312 5693984 1610008 5689456 1609400 5689560 1609280 5689560 -1610008 5689456 1609400 5689560 1611312 5693984 1611896 5690040 -1611344 5694080 1611496 5694168 1612440 5693432 1611312 5693984 -1612440 5693432 1612400 5693248 1611312 5693984 1611496 5694168 -1611496 5694168 1611608 5694232 1612440 5693432 1611312 5693984 -1611344 5694080 1611464 5694160 1611496 5694168 1611312 5693984 -1611344 5694080 1611360 5694104 1611464 5694160 1611312 5693984 -1611344 5694080 1611464 5694160 1611312 5693984 1611152 5695144 -1611496 5694168 1612440 5693432 1611312 5693984 1611464 5694160 -1609280 5689560 1609232 5689536 1608840 5689480 1611312 5693984 -1612440 5693432 1611368 5693952 1611312 5693984 1611496 5694168 -1612440 5693432 1611368 5693952 1611496 5694168 1611608 5694232 -1611368 5693952 1611312 5693984 1611496 5694168 1611608 5694232 -1611312 5693984 1611368 5693952 1612400 5693248 1612408 5693168 -1611312 5693984 1611368 5693952 1612408 5693168 1612440 5693112 -1611368 5693952 1612400 5693248 1612408 5693168 1612440 5693112 -1611496 5694168 1611544 5694216 1611608 5694232 1611368 5693952 -1612440 5693432 1611368 5693952 1611608 5694232 1612504 5693584 -1611312 5693984 1611368 5693952 1612440 5693112 1612048 5690184 -1612440 5693112 1612208 5690280 1612048 5690184 1611368 5693952 -1611368 5693952 1612408 5693168 1612440 5693112 1612048 5690184 -1611312 5693984 1611368 5693952 1612048 5690184 1611896 5690040 -1611368 5693952 1612440 5693112 1612048 5690184 1611896 5690040 -1611312 5693984 1611368 5693952 1611896 5690040 1610008 5689456 -1611896 5690040 1611360 5689624 1610008 5689456 1611368 5693952 -1611368 5693952 1612048 5690184 1611896 5690040 1610008 5689456 -1611368 5693952 1610008 5689456 1611312 5693984 1611496 5694168 -1611312 5693984 1611368 5693952 1610008 5689456 1609400 5689560 -1611368 5693952 1612440 5693432 1612400 5693248 1612408 5693168 -1612440 5693432 1612400 5693248 1611368 5693952 1611608 5694232 -1611312 5693984 1611464 5694160 1611496 5694168 1611368 5693952 -1611496 5694168 1611608 5694232 1611368 5693952 1611464 5694160 -1611312 5693984 1611344 5694080 1611464 5694160 1611368 5693952 -1611344 5694080 1611360 5694104 1611464 5694160 1611368 5693952 -1611344 5694080 1611360 5694104 1611368 5693952 1611312 5693984 -1611312 5693984 1611344 5694080 1611368 5693952 1610008 5689456 -1611464 5694160 1611496 5694168 1611368 5693952 1611360 5694104 -1611608 5694232 1611616 5693976 1611368 5693952 1611496 5694168 -1611368 5693952 1611464 5694160 1611496 5694168 1611616 5693976 -1611496 5694168 1611608 5694232 1611616 5693976 1611464 5694160 -1611608 5694232 1611616 5693976 1611496 5694168 1611544 5694216 -1612440 5693432 1611616 5693976 1611608 5694232 1612504 5693584 -1611608 5694232 1611712 5694312 1612504 5693584 1611616 5693976 -1611712 5694312 1612680 5693808 1612504 5693584 1611616 5693976 -1612504 5693584 1612440 5693432 1611616 5693976 1611712 5694312 -1611616 5693976 1612440 5693432 1611368 5693952 1611464 5694160 -1611368 5693952 1611616 5693976 1612440 5693432 1612400 5693248 -1611368 5693952 1611616 5693976 1612400 5693248 1612408 5693168 -1611368 5693952 1611464 5694160 1611616 5693976 1612400 5693248 -1612440 5693432 1612400 5693248 1611616 5693976 1612504 5693584 -1611608 5694232 1611712 5694312 1611616 5693976 1611496 5694168 -1611368 5693952 1611360 5694104 1611464 5694160 1611616 5693976 -1611712 5694312 1611688 5693968 1611616 5693976 1611608 5694232 -1612504 5693584 1611688 5693968 1611712 5694312 1612680 5693808 -1611712 5694312 1611768 5694392 1612680 5693808 1611688 5693968 -1611768 5694392 1612584 5694512 1612680 5693808 1611688 5693968 -1612680 5693808 1612504 5693584 1611688 5693968 1611768 5694392 -1611616 5693976 1611688 5693968 1612504 5693584 1612440 5693432 -1611616 5693976 1611688 5693968 1612440 5693432 1612400 5693248 -1611688 5693968 1612504 5693584 1612440 5693432 1612400 5693248 -1611616 5693976 1611688 5693968 1612400 5693248 1611368 5693952 -1612400 5693248 1612408 5693168 1611368 5693952 1611688 5693968 -1611688 5693968 1612440 5693432 1612400 5693248 1611368 5693952 -1611688 5693968 1611368 5693952 1611616 5693976 1611608 5694232 -1611616 5693976 1611496 5694168 1611608 5694232 1611688 5693968 -1612504 5693584 1612440 5693432 1611688 5693968 1612680 5693808 -1611712 5694312 1611768 5694392 1611688 5693968 1611608 5694232 -1611368 5693952 1611672 5693936 1612400 5693248 1612408 5693168 -1611368 5693952 1611672 5693936 1612408 5693168 1612440 5693112 -1611688 5693968 1611672 5693936 1611368 5693952 1611616 5693976 -1612400 5693248 1611672 5693936 1611688 5693968 1612440 5693432 -1611688 5693968 1612504 5693584 1612440 5693432 1611672 5693936 -1612440 5693432 1612400 5693248 1611672 5693936 1612504 5693584 -1611688 5693968 1612680 5693808 1612504 5693584 1611672 5693936 -1611688 5693968 1612504 5693584 1611672 5693936 1611616 5693976 -1611368 5693952 1611616 5693976 1611672 5693936 1612408 5693168 -1611672 5693936 1612440 5693432 1612400 5693248 1612408 5693168 -1611368 5693952 1611688 5693896 1612408 5693168 1612440 5693112 -1612408 5693168 1611688 5693896 1611672 5693936 1612400 5693248 -1611672 5693936 1611688 5693896 1611368 5693952 1611616 5693976 -1611672 5693936 1611688 5693896 1611616 5693976 1611688 5693968 -1611688 5693896 1611616 5693976 1611672 5693936 1612400 5693248 -1611672 5693936 1612440 5693432 1612400 5693248 1611688 5693896 -1612400 5693248 1612408 5693168 1611688 5693896 1612440 5693432 -1611672 5693936 1612504 5693584 1612440 5693432 1611688 5693896 -1611672 5693936 1611688 5693968 1612504 5693584 1611688 5693896 -1612504 5693584 1612440 5693432 1611688 5693896 1611688 5693968 -1611688 5693968 1612680 5693808 1612504 5693584 1611688 5693896 -1611672 5693936 1611688 5693968 1611688 5693896 1611616 5693976 -1612440 5693432 1612400 5693248 1611688 5693896 1612504 5693584 -1611688 5693896 1612408 5693168 1611368 5693952 1611616 5693976 -1612408 5693168 1611368 5693952 1611688 5693896 1612400 5693248 -1611368 5693952 1611672 5693840 1612408 5693168 1612440 5693112 -1611368 5693952 1611672 5693840 1612440 5693112 1612048 5690184 -1611688 5693896 1611672 5693840 1611368 5693952 1611616 5693976 -1611688 5693896 1611672 5693840 1611616 5693976 1611672 5693936 -1611616 5693976 1611688 5693968 1611672 5693936 1611672 5693840 -1611672 5693840 1611368 5693952 1611616 5693976 1611672 5693936 -1611688 5693896 1612408 5693168 1611672 5693840 1611672 5693936 -1612408 5693168 1611672 5693840 1611688 5693896 1612400 5693248 -1611688 5693896 1612440 5693432 1612400 5693248 1611672 5693840 -1611688 5693896 1612504 5693584 1612440 5693432 1611672 5693840 -1612440 5693432 1612400 5693248 1611672 5693840 1612504 5693584 -1611688 5693896 1611688 5693968 1612504 5693584 1611672 5693840 -1611672 5693840 1611672 5693936 1611688 5693896 1612504 5693584 -1612400 5693248 1612408 5693168 1611672 5693840 1612440 5693432 -1611368 5693952 1611616 5693976 1611672 5693840 1612440 5693112 -1611672 5693840 1612400 5693248 1612408 5693168 1612440 5693112 -1611368 5693952 1611624 5693816 1612440 5693112 1612048 5690184 -1612440 5693112 1612208 5690280 1612048 5690184 1611624 5693816 -1612440 5693112 1611624 5693816 1611672 5693840 1612408 5693168 -1611368 5693952 1611624 5693816 1612048 5690184 1611896 5690040 -1611672 5693840 1611624 5693816 1611368 5693952 1611616 5693976 -1611672 5693840 1611624 5693816 1611616 5693976 1611672 5693936 -1611616 5693976 1611688 5693968 1611672 5693936 1611624 5693816 -1611672 5693840 1611624 5693816 1611672 5693936 1611688 5693896 -1611624 5693816 1611616 5693976 1611672 5693936 1611688 5693896 -1611624 5693816 1611368 5693952 1611616 5693976 1611672 5693936 -1611624 5693816 1611688 5693896 1611672 5693840 1612408 5693168 -1611672 5693840 1612400 5693248 1612408 5693168 1611624 5693816 -1612408 5693168 1612440 5693112 1611624 5693816 1612400 5693248 -1611672 5693840 1612440 5693432 1612400 5693248 1611624 5693816 -1611672 5693840 1612400 5693248 1611624 5693816 1611688 5693896 -1611368 5693952 1611616 5693976 1611624 5693816 1612048 5690184 -1611624 5693816 1612408 5693168 1612440 5693112 1612048 5690184 -1612048 5690184 1611592 5693792 1611624 5693816 1612440 5693112 -1612048 5690184 1611592 5693792 1612440 5693112 1612208 5690280 -1611368 5693952 1611592 5693792 1612048 5690184 1611896 5690040 -1611368 5693952 1611592 5693792 1611896 5690040 1610008 5689456 -1611896 5690040 1611360 5689624 1610008 5689456 1611592 5693792 -1611592 5693792 1612048 5690184 1611896 5690040 1610008 5689456 -1611368 5693952 1611592 5693792 1610008 5689456 1611312 5693984 -1611592 5693792 1611896 5690040 1610008 5689456 1611312 5693984 -1610008 5689456 1609400 5689560 1611312 5693984 1611592 5693792 -1610008 5689456 1609672 5689488 1609400 5689560 1611592 5693792 -1610008 5689456 1609400 5689560 1611592 5693792 1611896 5690040 -1611312 5693984 1611368 5693952 1611592 5693792 1609400 5689560 -1609400 5689560 1609280 5689560 1611312 5693984 1611592 5693792 -1611624 5693816 1611592 5693792 1611368 5693952 1611616 5693976 -1611624 5693816 1611592 5693792 1611616 5693976 1611672 5693936 -1611592 5693792 1611616 5693976 1611624 5693816 1612440 5693112 -1611624 5693816 1612408 5693168 1612440 5693112 1611592 5693792 -1612440 5693112 1612048 5690184 1611592 5693792 1612408 5693168 -1611624 5693816 1612400 5693248 1612408 5693168 1611592 5693792 -1611624 5693816 1611672 5693840 1612400 5693248 1611592 5693792 -1612400 5693248 1612408 5693168 1611592 5693792 1611672 5693840 -1611672 5693840 1612440 5693432 1612400 5693248 1611592 5693792 -1611624 5693816 1611672 5693840 1611592 5693792 1611616 5693976 -1612408 5693168 1612440 5693112 1611592 5693792 1612400 5693248 -1611368 5693952 1611616 5693976 1611592 5693792 1611312 5693984 -1612048 5690184 1611896 5690040 1611592 5693792 1612440 5693112 -1611592 5693792 1611480 5693752 1611312 5693984 1611368 5693952 -1611312 5693984 1611480 5693752 1609400 5689560 1609280 5689560 -1611312 5693984 1611480 5693752 1609280 5689560 1608840 5689480 -1609400 5689560 1611480 5693752 1611592 5693792 1610008 5689456 -1609400 5689560 1611480 5693752 1610008 5689456 1609672 5689488 -1611592 5693792 1611896 5690040 1610008 5689456 1611480 5693752 -1611896 5690040 1611360 5689624 1610008 5689456 1611480 5693752 -1611592 5693792 1612048 5690184 1611896 5690040 1611480 5693752 -1611896 5690040 1610008 5689456 1611480 5693752 1612048 5690184 -1610008 5689456 1609400 5689560 1611480 5693752 1611896 5690040 -1611592 5693792 1611480 5693752 1611368 5693952 1611616 5693976 -1611592 5693792 1612048 5690184 1611480 5693752 1611368 5693952 -1611592 5693792 1612440 5693112 1612048 5690184 1611480 5693752 -1612440 5693112 1612208 5690280 1612048 5690184 1611480 5693752 -1611592 5693792 1612408 5693168 1612440 5693112 1611480 5693752 -1612048 5690184 1611896 5690040 1611480 5693752 1612440 5693112 -1611592 5693792 1612400 5693248 1612408 5693168 1611480 5693752 -1612408 5693168 1612440 5693112 1611480 5693752 1612400 5693248 -1611592 5693792 1611672 5693840 1612400 5693248 1611480 5693752 -1611592 5693792 1612400 5693248 1611480 5693752 1611368 5693952 -1612440 5693112 1612048 5690184 1611480 5693752 1612408 5693168 -1611480 5693752 1609280 5689560 1611312 5693984 1611368 5693952 -1611480 5693752 1610008 5689456 1609400 5689560 1609280 5689560 -1611312 5693984 1611408 5693680 1609280 5689560 1608840 5689480 -1611312 5693984 1611408 5693680 1608840 5689480 1608736 5689448 -1609280 5689560 1611408 5693680 1611480 5693752 1609400 5689560 -1609280 5689560 1609232 5689536 1608840 5689480 1611408 5693680 -1611480 5693752 1611408 5693680 1611312 5693984 1611368 5693952 -1611480 5693752 1611408 5693680 1611368 5693952 1611592 5693792 -1611408 5693680 1611368 5693952 1611480 5693752 1609400 5689560 -1611480 5693752 1610008 5689456 1609400 5689560 1611408 5693680 -1610008 5689456 1609672 5689488 1609400 5689560 1611408 5693680 -1609400 5689560 1609280 5689560 1611408 5693680 1610008 5689456 -1611480 5693752 1611896 5690040 1610008 5689456 1611408 5693680 -1611896 5690040 1611360 5689624 1610008 5689456 1611408 5693680 -1611480 5693752 1612048 5690184 1611896 5690040 1611408 5693680 -1611480 5693752 1612440 5693112 1612048 5690184 1611408 5693680 -1612440 5693112 1612208 5690280 1612048 5690184 1611408 5693680 -1612048 5690184 1611896 5690040 1611408 5693680 1612440 5693112 -1611896 5690040 1610008 5689456 1611408 5693680 1612048 5690184 -1611480 5693752 1612408 5693168 1612440 5693112 1611408 5693680 -1611480 5693752 1612400 5693248 1612408 5693168 1611408 5693680 -1612440 5693112 1612048 5690184 1611408 5693680 1612408 5693168 -1611480 5693752 1611592 5693792 1612400 5693248 1611408 5693680 -1612400 5693248 1612408 5693168 1611408 5693680 1611592 5693792 -1611592 5693792 1611672 5693840 1612400 5693248 1611408 5693680 -1612408 5693168 1612440 5693112 1611408 5693680 1612400 5693248 -1611480 5693752 1611592 5693792 1611408 5693680 1611368 5693952 -1610008 5689456 1609400 5689560 1611408 5693680 1611896 5690040 -1611312 5693984 1611368 5693952 1611408 5693680 1608840 5689480 -1611408 5693680 1609400 5689560 1609280 5689560 1608840 5689480 -1609400 5689560 1611192 5693224 1610008 5689456 1609672 5689488 -1611408 5693680 1611192 5693224 1609400 5689560 1609280 5689560 -1610008 5689456 1611192 5693224 1611408 5693680 1611896 5690040 -1610008 5689456 1611192 5693224 1611896 5690040 1611360 5689624 -1611408 5693680 1612048 5690184 1611896 5690040 1611192 5693224 -1611408 5693680 1612440 5693112 1612048 5690184 1611192 5693224 -1612440 5693112 1612208 5690280 1612048 5690184 1611192 5693224 -1612440 5693112 1612544 5693040 1612208 5690280 1611192 5693224 -1612208 5690280 1612048 5690184 1611192 5693224 1612544 5693040 -1612440 5693112 1612544 5693040 1611192 5693224 1611408 5693680 -1611408 5693680 1612408 5693168 1612440 5693112 1611192 5693224 -1612440 5693112 1612544 5693040 1611192 5693224 1612408 5693168 -1612048 5690184 1611896 5690040 1611192 5693224 1612208 5690280 -1612544 5693040 1612736 5692952 1612208 5690280 1611192 5693224 -1611408 5693680 1612400 5693248 1612408 5693168 1611192 5693224 -1611408 5693680 1611592 5693792 1612400 5693248 1611192 5693224 -1612408 5693168 1612440 5693112 1611192 5693224 1612400 5693248 -1611896 5690040 1610008 5689456 1611192 5693224 1612048 5690184 -1611408 5693680 1612400 5693248 1611192 5693224 1609280 5689560 -1611408 5693680 1611192 5693224 1609280 5689560 1608840 5689480 -1611408 5693680 1611192 5693224 1608840 5689480 1611312 5693984 -1608840 5689480 1608736 5689448 1611312 5693984 1611192 5693224 -1611312 5693984 1611408 5693680 1611192 5693224 1608736 5689448 -1608736 5689448 1602160 5695928 1611312 5693984 1611192 5693224 -1602160 5695928 1602200 5696008 1611312 5693984 1611192 5693224 -1602200 5696008 1602224 5696056 1611312 5693984 1611192 5693224 -1602200 5696008 1602224 5696056 1611192 5693224 1602160 5695928 -1611312 5693984 1611408 5693680 1611192 5693224 1602224 5696056 -1602224 5696056 1611120 5695240 1611312 5693984 1611192 5693224 -1602224 5696056 1611120 5695240 1611192 5693224 1602200 5696008 -1611312 5693984 1611408 5693680 1611192 5693224 1611120 5695240 -1602224 5696056 1602504 5696992 1611120 5695240 1611192 5693224 -1608736 5689448 1608616 5689368 1602160 5695928 1611192 5693224 -1608736 5689448 1602160 5695928 1611192 5693224 1608840 5689480 -1602160 5695928 1602200 5696008 1611192 5693224 1608736 5689448 -1611120 5695240 1611152 5695144 1611312 5693984 1611192 5693224 -1611312 5693984 1611408 5693680 1611192 5693224 1611152 5695144 -1611120 5695240 1611152 5695144 1611192 5693224 1602224 5696056 -1611152 5695144 1611344 5694080 1611312 5693984 1611192 5693224 -1611192 5693224 1609400 5689560 1609280 5689560 1608840 5689480 -1609280 5689560 1609232 5689536 1608840 5689480 1611192 5693224 -1611408 5693680 1611192 5693224 1611312 5693984 1611368 5693952 -1611408 5693680 1612400 5693248 1611192 5693224 1611312 5693984 -1611192 5693224 1609280 5689560 1608840 5689480 1608736 5689448 -1611192 5693224 1610008 5689456 1609400 5689560 1609280 5689560 -1610008 5689456 1609400 5689560 1611192 5693224 1611896 5690040 -1609280 5689560 1611064 5692984 1611192 5693224 1609400 5689560 -1608840 5689480 1611064 5692984 1609280 5689560 1609232 5689536 -1611192 5693224 1611064 5692984 1608840 5689480 1608736 5689448 -1611192 5693224 1611064 5692984 1608736 5689448 1602160 5695928 -1608736 5689448 1608616 5689368 1602160 5695928 1611064 5692984 -1611192 5693224 1611064 5692984 1602160 5695928 1602200 5696008 -1611192 5693224 1611064 5692984 1602200 5696008 1602224 5696056 -1611192 5693224 1611064 5692984 1602224 5696056 1611120 5695240 -1611064 5692984 1602200 5696008 1602224 5696056 1611120 5695240 -1602224 5696056 1602504 5696992 1611120 5695240 1611064 5692984 -1611192 5693224 1611064 5692984 1611120 5695240 1611152 5695144 -1611064 5692984 1602224 5696056 1611120 5695240 1611152 5695144 -1611064 5692984 1608736 5689448 1602160 5695928 1602200 5696008 -1611064 5692984 1602160 5695928 1602200 5696008 1602224 5696056 -1611192 5693224 1611064 5692984 1611152 5695144 1611312 5693984 -1611192 5693224 1611064 5692984 1611312 5693984 1611408 5693680 -1611064 5692984 1611120 5695240 1611152 5695144 1611312 5693984 -1611152 5695144 1611344 5694080 1611312 5693984 1611064 5692984 -1611064 5692984 1608840 5689480 1608736 5689448 1602160 5695928 -1611192 5693224 1610008 5689456 1609400 5689560 1611064 5692984 -1610008 5689456 1609672 5689488 1609400 5689560 1611064 5692984 -1609400 5689560 1609280 5689560 1611064 5692984 1610008 5689456 -1611064 5692984 1611312 5693984 1611192 5693224 1610008 5689456 -1611192 5693224 1611896 5690040 1610008 5689456 1611064 5692984 -1611896 5690040 1611360 5689624 1610008 5689456 1611064 5692984 -1611360 5689624 1610184 5689408 1610008 5689456 1611064 5692984 -1611896 5690040 1611376 5689632 1611360 5689624 1611064 5692984 -1611192 5693224 1612048 5690184 1611896 5690040 1611064 5692984 -1611192 5693224 1612208 5690280 1612048 5690184 1611064 5692984 -1611192 5693224 1612544 5693040 1612208 5690280 1611064 5692984 -1611192 5693224 1612440 5693112 1612544 5693040 1611064 5692984 -1612544 5693040 1612208 5690280 1611064 5692984 1612440 5693112 -1611192 5693224 1612408 5693168 1612440 5693112 1611064 5692984 -1612208 5690280 1612048 5690184 1611064 5692984 1612544 5693040 -1612544 5693040 1612736 5692952 1612208 5690280 1611064 5692984 -1612048 5690184 1611896 5690040 1611064 5692984 1612208 5690280 -1610008 5689456 1609400 5689560 1611064 5692984 1611360 5689624 -1611192 5693224 1612440 5693112 1611064 5692984 1611312 5693984 -1611896 5690040 1611360 5689624 1611064 5692984 1612048 5690184 -1611064 5692984 1609280 5689560 1608840 5689480 1608736 5689448 -1609280 5689560 1608840 5689480 1611064 5692984 1609400 5689560 -1609400 5689560 1611000 5692800 1610008 5689456 1609672 5689488 -1611064 5692984 1611000 5692800 1609400 5689560 1609280 5689560 -1610008 5689456 1611000 5692800 1611064 5692984 1611360 5689624 -1611064 5692984 1611896 5690040 1611360 5689624 1611000 5692800 -1610008 5689456 1611000 5692800 1611360 5689624 1610184 5689408 -1611896 5690040 1611376 5689632 1611360 5689624 1611000 5692800 -1611360 5689624 1610008 5689456 1611000 5692800 1611896 5690040 -1611064 5692984 1612048 5690184 1611896 5690040 1611000 5692800 -1611896 5690040 1611360 5689624 1611000 5692800 1612048 5690184 -1611064 5692984 1612208 5690280 1612048 5690184 1611000 5692800 -1611064 5692984 1612544 5693040 1612208 5690280 1611000 5692800 -1611064 5692984 1612440 5693112 1612544 5693040 1611000 5692800 -1611064 5692984 1611192 5693224 1612440 5693112 1611000 5692800 -1612544 5693040 1612208 5690280 1611000 5692800 1612440 5693112 -1612544 5693040 1612736 5692952 1612208 5690280 1611000 5692800 -1612208 5690280 1612048 5690184 1611000 5692800 1612544 5693040 -1612048 5690184 1611896 5690040 1611000 5692800 1612208 5690280 -1611064 5692984 1612440 5693112 1611000 5692800 1609280 5689560 -1611064 5692984 1611000 5692800 1609280 5689560 1608840 5689480 -1611000 5692800 1609400 5689560 1609280 5689560 1608840 5689480 -1609280 5689560 1609232 5689536 1608840 5689480 1611000 5692800 -1611064 5692984 1611000 5692800 1608840 5689480 1608736 5689448 -1611064 5692984 1611000 5692800 1608736 5689448 1602160 5695928 -1608736 5689448 1608616 5689368 1602160 5695928 1611000 5692800 -1611064 5692984 1611000 5692800 1602160 5695928 1602200 5696008 -1611064 5692984 1611000 5692800 1602200 5696008 1602224 5696056 -1611064 5692984 1611000 5692800 1602224 5696056 1611120 5695240 -1611064 5692984 1611000 5692800 1611120 5695240 1611152 5695144 -1602224 5696056 1602504 5696992 1611120 5695240 1611000 5692800 -1611000 5692800 1602160 5695928 1602200 5696008 1602224 5696056 -1611000 5692800 1602200 5696008 1602224 5696056 1611120 5695240 -1611000 5692800 1608736 5689448 1602160 5695928 1602200 5696008 -1611000 5692800 1608840 5689480 1608736 5689448 1602160 5695928 -1611064 5692984 1612440 5693112 1611000 5692800 1611120 5695240 -1611000 5692800 1609280 5689560 1608840 5689480 1608736 5689448 -1609400 5689560 1609280 5689560 1611000 5692800 1609672 5689488 -1611000 5692800 1611360 5689624 1610008 5689456 1609672 5689488 -1610008 5689456 1610992 5692696 1611360 5689624 1610184 5689408 -1611360 5689624 1610992 5692696 1611000 5692800 1611896 5690040 -1611000 5692800 1612048 5690184 1611896 5690040 1610992 5692696 -1611360 5689624 1610992 5692696 1611896 5690040 1611376 5689632 -1611896 5690040 1611840 5689928 1611376 5689632 1610992 5692696 -1611896 5690040 1611376 5689632 1610992 5692696 1612048 5690184 -1611000 5692800 1612208 5690280 1612048 5690184 1610992 5692696 -1612048 5690184 1611896 5690040 1610992 5692696 1612208 5690280 -1611000 5692800 1612544 5693040 1612208 5690280 1610992 5692696 -1611000 5692800 1612440 5693112 1612544 5693040 1610992 5692696 -1611000 5692800 1611064 5692984 1612440 5693112 1610992 5692696 -1611064 5692984 1611192 5693224 1612440 5693112 1610992 5692696 -1612440 5693112 1612544 5693040 1610992 5692696 1611064 5692984 -1612544 5693040 1612736 5692952 1612208 5690280 1610992 5692696 -1612544 5693040 1612208 5690280 1610992 5692696 1612440 5693112 -1612208 5690280 1612048 5690184 1610992 5692696 1612544 5693040 -1610992 5692696 1610008 5689456 1611000 5692800 1611064 5692984 -1611000 5692800 1610992 5692696 1610008 5689456 1609672 5689488 -1611000 5692800 1610992 5692696 1609672 5689488 1609400 5689560 -1611000 5692800 1610992 5692696 1609400 5689560 1609280 5689560 -1610992 5692696 1609672 5689488 1609400 5689560 1609280 5689560 -1611000 5692800 1610992 5692696 1609280 5689560 1608840 5689480 -1609280 5689560 1609232 5689536 1608840 5689480 1610992 5692696 -1611000 5692800 1610992 5692696 1608840 5689480 1608736 5689448 -1610992 5692696 1609280 5689560 1608840 5689480 1608736 5689448 -1611000 5692800 1610992 5692696 1608736 5689448 1602160 5695928 -1610992 5692696 1609400 5689560 1609280 5689560 1608840 5689480 -1611000 5692800 1611064 5692984 1610992 5692696 1608736 5689448 -1610992 5692696 1610008 5689456 1609672 5689488 1609400 5689560 -1610992 5692696 1611360 5689624 1610008 5689456 1609672 5689488 -1611360 5689624 1610008 5689456 1610992 5692696 1611376 5689632 -1611376 5689632 1611024 5692552 1611896 5690040 1611840 5689928 -1610992 5692696 1611024 5692552 1611376 5689632 1611360 5689624 -1611896 5690040 1611024 5692552 1610992 5692696 1612048 5690184 -1610992 5692696 1612208 5690280 1612048 5690184 1611024 5692552 -1612048 5690184 1611896 5690040 1611024 5692552 1612208 5690280 -1610992 5692696 1612544 5693040 1612208 5690280 1611024 5692552 -1612208 5690280 1612048 5690184 1611024 5692552 1612544 5693040 -1612544 5693040 1612736 5692952 1612208 5690280 1611024 5692552 -1612736 5692952 1612376 5690304 1612208 5690280 1611024 5692552 -1612736 5692952 1612880 5692928 1612376 5690304 1611024 5692552 -1612208 5690280 1612048 5690184 1611024 5692552 1612376 5690304 -1612736 5692952 1612376 5690304 1611024 5692552 1612544 5693040 -1610992 5692696 1612440 5693112 1612544 5693040 1611024 5692552 -1610992 5692696 1611064 5692984 1612440 5693112 1611024 5692552 -1611064 5692984 1611192 5693224 1612440 5693112 1611024 5692552 -1610992 5692696 1611000 5692800 1611064 5692984 1611024 5692552 -1611064 5692984 1612440 5693112 1611024 5692552 1611000 5692800 -1612440 5693112 1612544 5693040 1611024 5692552 1611064 5692984 -1612544 5693040 1612736 5692952 1611024 5692552 1612440 5693112 -1610992 5692696 1611000 5692800 1611024 5692552 1611360 5689624 -1610992 5692696 1611024 5692552 1611360 5689624 1610008 5689456 -1611360 5689624 1610184 5689408 1610008 5689456 1611024 5692552 -1611024 5692552 1611376 5689632 1611360 5689624 1610008 5689456 -1610992 5692696 1611024 5692552 1610008 5689456 1609672 5689488 -1610992 5692696 1611024 5692552 1609672 5689488 1609400 5689560 -1610992 5692696 1611024 5692552 1609400 5689560 1609280 5689560 -1610992 5692696 1611024 5692552 1609280 5689560 1608840 5689480 -1611024 5692552 1609400 5689560 1609280 5689560 1608840 5689480 -1610992 5692696 1611024 5692552 1608840 5689480 1608736 5689448 -1609280 5689560 1609232 5689536 1608840 5689480 1611024 5692552 -1611024 5692552 1609672 5689488 1609400 5689560 1609280 5689560 -1611024 5692552 1610008 5689456 1609672 5689488 1609400 5689560 -1610992 5692696 1611000 5692800 1611024 5692552 1608840 5689480 -1611024 5692552 1611360 5689624 1610008 5689456 1609672 5689488 -1611024 5692552 1611896 5690040 1611376 5689632 1611360 5689624 -1611896 5690040 1611376 5689632 1611024 5692552 1612048 5690184 -1612376 5690304 1611112 5692400 1611024 5692552 1612736 5692952 -1612376 5690304 1611112 5692400 1612736 5692952 1612880 5692928 -1611024 5692552 1611112 5692400 1612208 5690280 1612048 5690184 -1611024 5692552 1612544 5693040 1612736 5692952 1611112 5692400 -1612736 5692952 1612376 5690304 1611112 5692400 1612544 5693040 -1611024 5692552 1611112 5692400 1612048 5690184 1611896 5690040 -1611112 5692400 1612208 5690280 1612048 5690184 1611896 5690040 -1611024 5692552 1612440 5693112 1612544 5693040 1611112 5692400 -1612544 5693040 1612736 5692952 1611112 5692400 1612440 5693112 -1611024 5692552 1611064 5692984 1612440 5693112 1611112 5692400 -1611064 5692984 1611192 5693224 1612440 5693112 1611112 5692400 -1611024 5692552 1611000 5692800 1611064 5692984 1611112 5692400 -1611024 5692552 1610992 5692696 1611000 5692800 1611112 5692400 -1611064 5692984 1612440 5693112 1611112 5692400 1611000 5692800 -1612440 5693112 1612544 5693040 1611112 5692400 1611064 5692984 -1611112 5692400 1611896 5690040 1611024 5692552 1611000 5692800 -1611024 5692552 1611112 5692400 1611896 5690040 1611376 5689632 -1611896 5690040 1611840 5689928 1611376 5689632 1611112 5692400 -1611112 5692400 1612048 5690184 1611896 5690040 1611376 5689632 -1611024 5692552 1611112 5692400 1611376 5689632 1611360 5689624 -1611024 5692552 1611112 5692400 1611360 5689624 1610008 5689456 -1611360 5689624 1610184 5689408 1610008 5689456 1611112 5692400 -1611024 5692552 1611112 5692400 1610008 5689456 1609672 5689488 -1611112 5692400 1611360 5689624 1610008 5689456 1609672 5689488 -1611024 5692552 1611112 5692400 1609672 5689488 1609400 5689560 -1611024 5692552 1611112 5692400 1609400 5689560 1609280 5689560 -1611112 5692400 1610008 5689456 1609672 5689488 1609400 5689560 -1611112 5692400 1611376 5689632 1611360 5689624 1610008 5689456 -1611024 5692552 1611000 5692800 1611112 5692400 1609400 5689560 -1611112 5692400 1611896 5690040 1611376 5689632 1611360 5689624 -1611112 5692400 1612376 5690304 1612208 5690280 1612048 5690184 -1612376 5690304 1612208 5690280 1611112 5692400 1612736 5692952 -1612376 5690304 1611168 5692328 1612736 5692952 1612880 5692928 -1612736 5692952 1611168 5692328 1611112 5692400 1612544 5693040 -1611112 5692400 1612440 5693112 1612544 5693040 1611168 5692328 -1612544 5693040 1612736 5692952 1611168 5692328 1612440 5693112 -1611112 5692400 1611064 5692984 1612440 5693112 1611168 5692328 -1611064 5692984 1611192 5693224 1612440 5693112 1611168 5692328 -1611192 5693224 1612408 5693168 1612440 5693112 1611168 5692328 -1612440 5693112 1612544 5693040 1611168 5692328 1611192 5693224 -1611112 5692400 1611000 5692800 1611064 5692984 1611168 5692328 -1611064 5692984 1611192 5693224 1611168 5692328 1611112 5692400 -1612736 5692952 1612376 5690304 1611168 5692328 1612544 5693040 -1611168 5692328 1612376 5690304 1611112 5692400 1611064 5692984 -1611112 5692400 1611168 5692328 1612376 5690304 1612208 5690280 -1611112 5692400 1611168 5692328 1612208 5690280 1612048 5690184 -1611112 5692400 1611168 5692328 1612048 5690184 1611896 5690040 -1611112 5692400 1611168 5692328 1611896 5690040 1611376 5689632 -1611168 5692328 1612048 5690184 1611896 5690040 1611376 5689632 -1611896 5690040 1611840 5689928 1611376 5689632 1611168 5692328 -1611112 5692400 1611168 5692328 1611376 5689632 1611360 5689624 -1611168 5692328 1611896 5690040 1611376 5689632 1611360 5689624 -1611112 5692400 1611168 5692328 1611360 5689624 1610008 5689456 -1611360 5689624 1610184 5689408 1610008 5689456 1611168 5692328 -1611360 5689624 1611328 5689576 1610184 5689408 1611168 5692328 -1611112 5692400 1611168 5692328 1610008 5689456 1609672 5689488 -1611112 5692400 1611168 5692328 1609672 5689488 1609400 5689560 -1611168 5692328 1610008 5689456 1609672 5689488 1609400 5689560 -1611112 5692400 1611168 5692328 1609400 5689560 1611024 5692552 -1610008 5689456 1609672 5689488 1611168 5692328 1610184 5689408 -1611168 5692328 1611376 5689632 1611360 5689624 1610184 5689408 -1611168 5692328 1612208 5690280 1612048 5690184 1611896 5690040 -1611168 5692328 1612736 5692952 1612376 5690304 1612208 5690280 -1611112 5692400 1611064 5692984 1611168 5692328 1609400 5689560 -1611168 5692328 1612376 5690304 1612208 5690280 1612048 5690184 -1612376 5690304 1611224 5692296 1612736 5692952 1612880 5692928 -1611168 5692328 1611224 5692296 1612376 5690304 1612208 5690280 -1611224 5692296 1612736 5692952 1612376 5690304 1612208 5690280 -1611168 5692328 1612736 5692952 1611224 5692296 1612208 5690280 -1612736 5692952 1611224 5692296 1611168 5692328 1612544 5693040 -1611168 5692328 1612440 5693112 1612544 5693040 1611224 5692296 -1612736 5692952 1612376 5690304 1611224 5692296 1612544 5693040 -1611168 5692328 1611192 5693224 1612440 5693112 1611224 5692296 -1612440 5693112 1612544 5693040 1611224 5692296 1611192 5693224 -1611168 5692328 1611064 5692984 1611192 5693224 1611224 5692296 -1611192 5693224 1612408 5693168 1612440 5693112 1611224 5692296 -1612440 5693112 1612544 5693040 1611224 5692296 1612408 5693168 -1611192 5693224 1612400 5693248 1612408 5693168 1611224 5692296 -1611192 5693224 1612408 5693168 1611224 5692296 1611064 5692984 -1611168 5692328 1611112 5692400 1611064 5692984 1611224 5692296 -1611064 5692984 1611192 5693224 1611224 5692296 1611112 5692400 -1611112 5692400 1611000 5692800 1611064 5692984 1611224 5692296 -1611224 5692296 1612208 5690280 1611168 5692328 1611112 5692400 -1612544 5693040 1612736 5692952 1611224 5692296 1612440 5693112 -1611168 5692328 1611224 5692296 1612208 5690280 1612048 5690184 -1611168 5692328 1611224 5692296 1612048 5690184 1611896 5690040 -1611168 5692328 1611224 5692296 1611896 5690040 1611376 5689632 -1611896 5690040 1611840 5689928 1611376 5689632 1611224 5692296 -1611168 5692328 1611224 5692296 1611376 5689632 1611360 5689624 -1611224 5692296 1611896 5690040 1611376 5689632 1611360 5689624 -1611168 5692328 1611224 5692296 1611360 5689624 1610184 5689408 -1611360 5689624 1611328 5689576 1610184 5689408 1611224 5692296 -1611168 5692328 1611224 5692296 1610184 5689408 1610008 5689456 -1611224 5692296 1611376 5689632 1611360 5689624 1610184 5689408 -1611168 5692328 1611224 5692296 1610008 5689456 1609672 5689488 -1611224 5692296 1611360 5689624 1610184 5689408 1610008 5689456 -1611224 5692296 1612048 5690184 1611896 5690040 1611376 5689632 -1611224 5692296 1612376 5690304 1612208 5690280 1612048 5690184 -1611168 5692328 1611112 5692400 1611224 5692296 1610008 5689456 -1611224 5692296 1612208 5690280 1612048 5690184 1611896 5690040 -1612376 5690304 1611320 5692312 1612736 5692952 1612880 5692928 -1611224 5692296 1611320 5692312 1612376 5690304 1612208 5690280 -1611224 5692296 1612736 5692952 1611320 5692312 1612208 5690280 -1612736 5692952 1611320 5692312 1611224 5692296 1612544 5693040 -1611320 5692312 1612208 5690280 1611224 5692296 1612544 5693040 -1611320 5692312 1612736 5692952 1612376 5690304 1612208 5690280 -1612736 5692952 1612376 5690304 1611320 5692312 1612544 5693040 -1611224 5692296 1611320 5692312 1612208 5690280 1612048 5690184 -1611320 5692312 1612376 5690304 1612208 5690280 1612048 5690184 -1611224 5692296 1612544 5693040 1611320 5692312 1612048 5690184 -1611224 5692296 1612440 5693112 1612544 5693040 1611320 5692312 -1611224 5692296 1612408 5693168 1612440 5693112 1611320 5692312 -1611224 5692296 1611192 5693224 1612408 5693168 1611320 5692312 -1612408 5693168 1612440 5693112 1611320 5692312 1611192 5693224 -1611224 5692296 1611192 5693224 1611320 5692312 1612048 5690184 -1612544 5693040 1612736 5692952 1611320 5692312 1612440 5693112 -1611192 5693224 1612400 5693248 1612408 5693168 1611320 5692312 -1611224 5692296 1611064 5692984 1611192 5693224 1611320 5692312 -1611224 5692296 1611112 5692400 1611064 5692984 1611320 5692312 -1611192 5693224 1612408 5693168 1611320 5692312 1611064 5692984 -1611224 5692296 1611112 5692400 1611320 5692312 1612048 5690184 -1611064 5692984 1611192 5693224 1611320 5692312 1611112 5692400 -1611112 5692400 1611000 5692800 1611064 5692984 1611320 5692312 -1611112 5692400 1611000 5692800 1611320 5692312 1611224 5692296 -1611112 5692400 1611024 5692552 1611000 5692800 1611320 5692312 -1611112 5692400 1611024 5692552 1611320 5692312 1611224 5692296 -1611024 5692552 1610992 5692696 1611000 5692800 1611320 5692312 -1611024 5692552 1610992 5692696 1611320 5692312 1611112 5692400 -1611064 5692984 1611192 5693224 1611320 5692312 1611000 5692800 -1611000 5692800 1611064 5692984 1611320 5692312 1610992 5692696 -1611224 5692296 1611168 5692328 1611112 5692400 1611320 5692312 -1611112 5692400 1611024 5692552 1611320 5692312 1611168 5692328 -1611224 5692296 1611168 5692328 1611320 5692312 1612048 5690184 -1612440 5693112 1612544 5693040 1611320 5692312 1612408 5693168 -1611224 5692296 1611320 5692312 1612048 5690184 1611896 5690040 -1612544 5693040 1611416 5692360 1611320 5692312 1612440 5693112 -1611416 5692360 1612736 5692952 1611320 5692312 1612440 5693112 -1611320 5692312 1611416 5692360 1612736 5692952 1612376 5690304 -1612736 5692952 1612880 5692928 1612376 5690304 1611416 5692360 -1611320 5692312 1611416 5692360 1612376 5690304 1612208 5690280 -1611320 5692312 1611416 5692360 1612208 5690280 1612048 5690184 -1611320 5692312 1612440 5693112 1611416 5692360 1612208 5690280 -1611416 5692360 1612736 5692952 1612376 5690304 1612208 5690280 -1611416 5692360 1612544 5693040 1612736 5692952 1612376 5690304 -1612544 5693040 1612736 5692952 1611416 5692360 1612440 5693112 -1611320 5692312 1612408 5693168 1612440 5693112 1611416 5692360 -1611320 5692312 1611192 5693224 1612408 5693168 1611416 5692360 -1611320 5692312 1611064 5692984 1611192 5693224 1611416 5692360 -1611192 5693224 1612408 5693168 1611416 5692360 1611064 5692984 -1612440 5693112 1612544 5693040 1611416 5692360 1612408 5693168 -1611320 5692312 1611064 5692984 1611416 5692360 1612208 5690280 -1611192 5693224 1612400 5693248 1612408 5693168 1611416 5692360 -1611320 5692312 1611000 5692800 1611064 5692984 1611416 5692360 -1611064 5692984 1611192 5693224 1611416 5692360 1611000 5692800 -1611320 5692312 1611000 5692800 1611416 5692360 1612208 5690280 -1611320 5692312 1610992 5692696 1611000 5692800 1611416 5692360 -1611320 5692312 1611024 5692552 1610992 5692696 1611416 5692360 -1611320 5692312 1611024 5692552 1611416 5692360 1612208 5690280 -1611320 5692312 1611112 5692400 1611024 5692552 1611416 5692360 -1611320 5692312 1611168 5692328 1611112 5692400 1611416 5692360 -1611024 5692552 1610992 5692696 1611416 5692360 1611112 5692400 -1611320 5692312 1611112 5692400 1611416 5692360 1612208 5690280 -1611000 5692800 1611064 5692984 1611416 5692360 1610992 5692696 -1610992 5692696 1611000 5692800 1611416 5692360 1611024 5692552 -1612408 5693168 1612440 5693112 1611416 5692360 1611192 5693224 -1612376 5690304 1611456 5692368 1612736 5692952 1612880 5692928 -1611416 5692360 1611456 5692368 1612376 5690304 1612208 5690280 -1611416 5692360 1611456 5692368 1612208 5690280 1611320 5692312 -1612208 5690280 1612048 5690184 1611320 5692312 1611456 5692368 -1611456 5692368 1612376 5690304 1612208 5690280 1611320 5692312 -1612736 5692952 1611456 5692368 1611416 5692360 1612544 5693040 -1611416 5692360 1612544 5693040 1611456 5692368 1611320 5692312 -1611416 5692360 1612440 5693112 1612544 5693040 1611456 5692368 -1611416 5692360 1612408 5693168 1612440 5693112 1611456 5692368 -1612544 5693040 1612736 5692952 1611456 5692368 1612440 5693112 -1611416 5692360 1612408 5693168 1611456 5692368 1611320 5692312 -1612440 5693112 1612544 5693040 1611456 5692368 1612408 5693168 -1611456 5692368 1612736 5692952 1612376 5690304 1612208 5690280 -1612736 5692952 1612376 5690304 1611456 5692368 1612544 5693040 -1611416 5692360 1611192 5693224 1612408 5693168 1611456 5692368 -1611416 5692360 1611064 5692984 1611192 5693224 1611456 5692368 -1611416 5692360 1611000 5692800 1611064 5692984 1611456 5692368 -1611064 5692984 1611192 5693224 1611456 5692368 1611000 5692800 -1612408 5693168 1612440 5693112 1611456 5692368 1611192 5693224 -1611416 5692360 1611000 5692800 1611456 5692368 1611320 5692312 -1611192 5693224 1612400 5693248 1612408 5693168 1611456 5692368 -1611416 5692360 1610992 5692696 1611000 5692800 1611456 5692368 -1611192 5693224 1612408 5693168 1611456 5692368 1611064 5692984 -1612376 5690304 1611544 5692408 1612736 5692952 1612880 5692928 -1612376 5690304 1611544 5692408 1612880 5692928 1612520 5690272 -1611456 5692368 1611544 5692408 1612376 5690304 1612208 5690280 -1611456 5692368 1611544 5692408 1612208 5690280 1611320 5692312 -1611456 5692368 1612736 5692952 1611544 5692408 1612208 5690280 -1612736 5692952 1611544 5692408 1611456 5692368 1612544 5693040 -1611456 5692368 1612440 5693112 1612544 5693040 1611544 5692408 -1611456 5692368 1612408 5693168 1612440 5693112 1611544 5692408 -1611456 5692368 1611192 5693224 1612408 5693168 1611544 5692408 -1612440 5693112 1612544 5693040 1611544 5692408 1612408 5693168 -1612408 5693168 1612440 5693112 1611544 5692408 1611192 5693224 -1611544 5692408 1612208 5690280 1611456 5692368 1611192 5693224 -1612544 5693040 1612736 5692952 1611544 5692408 1612440 5693112 -1612376 5690304 1612208 5690280 1611544 5692408 1612880 5692928 -1611544 5692408 1612544 5693040 1612736 5692952 1612880 5692928 -1611192 5693224 1612400 5693248 1612408 5693168 1611544 5692408 -1611456 5692368 1611064 5692984 1611192 5693224 1611544 5692408 -1611456 5692368 1611000 5692800 1611064 5692984 1611544 5692408 -1611456 5692368 1611416 5692360 1611000 5692800 1611544 5692408 -1611000 5692800 1611064 5692984 1611544 5692408 1611416 5692360 -1611192 5693224 1612408 5693168 1611544 5692408 1611064 5692984 -1611456 5692368 1611416 5692360 1611544 5692408 1612208 5690280 -1611416 5692360 1610992 5692696 1611000 5692800 1611544 5692408 -1611000 5692800 1611064 5692984 1611544 5692408 1610992 5692696 -1611416 5692360 1610992 5692696 1611544 5692408 1611456 5692368 -1611416 5692360 1611024 5692552 1610992 5692696 1611544 5692408 -1611064 5692984 1611192 5693224 1611544 5692408 1611000 5692800 -1612376 5690304 1611664 5692416 1612880 5692928 1612520 5690272 -1612880 5692928 1611664 5692416 1611544 5692408 1612736 5692952 -1611544 5692408 1611664 5692416 1612376 5690304 1612208 5690280 -1611544 5692408 1611664 5692416 1612208 5690280 1611456 5692368 -1612208 5690280 1611320 5692312 1611456 5692368 1611664 5692416 -1612208 5690280 1612048 5690184 1611320 5692312 1611664 5692416 -1611320 5692312 1611416 5692360 1611456 5692368 1611664 5692416 -1611456 5692368 1611544 5692408 1611664 5692416 1611320 5692312 -1611664 5692416 1612376 5690304 1612208 5690280 1611320 5692312 -1611664 5692416 1611456 5692368 1611544 5692408 1612736 5692952 -1611544 5692408 1612544 5693040 1612736 5692952 1611664 5692416 -1612736 5692952 1612880 5692928 1611664 5692416 1612544 5693040 -1611544 5692408 1612440 5693112 1612544 5693040 1611664 5692416 -1611544 5692408 1612408 5693168 1612440 5693112 1611664 5692416 -1611544 5692408 1611192 5693224 1612408 5693168 1611664 5692416 -1611544 5692408 1611064 5692984 1611192 5693224 1611664 5692416 -1612408 5693168 1612440 5693112 1611664 5692416 1611192 5693224 -1612440 5693112 1612544 5693040 1611664 5692416 1612408 5693168 -1611544 5692408 1611192 5693224 1611664 5692416 1611456 5692368 -1612544 5693040 1612736 5692952 1611664 5692416 1612440 5693112 -1611664 5692416 1612880 5692928 1612376 5690304 1612208 5690280 -1612880 5692928 1612376 5690304 1611664 5692416 1612736 5692952 -1611192 5693224 1612400 5693248 1612408 5693168 1611664 5692416 -1612376 5690304 1611784 5692392 1612880 5692928 1612520 5690272 -1612880 5692928 1613016 5692968 1612520 5690272 1611784 5692392 -1611664 5692416 1611784 5692392 1612376 5690304 1612208 5690280 -1611664 5692416 1611784 5692392 1612208 5690280 1611320 5692312 -1612208 5690280 1612048 5690184 1611320 5692312 1611784 5692392 -1611664 5692416 1611784 5692392 1611320 5692312 1611456 5692368 -1611320 5692312 1611416 5692360 1611456 5692368 1611784 5692392 -1611664 5692416 1611784 5692392 1611456 5692368 1611544 5692408 -1611784 5692392 1612208 5690280 1611320 5692312 1611456 5692368 -1611784 5692392 1612376 5690304 1612208 5690280 1611320 5692312 -1611664 5692416 1612880 5692928 1611784 5692392 1611456 5692368 -1612880 5692928 1611784 5692392 1611664 5692416 1612736 5692952 -1611664 5692416 1612544 5693040 1612736 5692952 1611784 5692392 -1611664 5692416 1612440 5693112 1612544 5693040 1611784 5692392 -1612544 5693040 1612736 5692952 1611784 5692392 1612440 5693112 -1611664 5692416 1612408 5693168 1612440 5693112 1611784 5692392 -1611664 5692416 1611192 5693224 1612408 5693168 1611784 5692392 -1612440 5693112 1612544 5693040 1611784 5692392 1612408 5693168 -1611784 5692392 1611456 5692368 1611664 5692416 1612408 5693168 -1612736 5692952 1612880 5692928 1611784 5692392 1612544 5693040 -1612376 5690304 1612208 5690280 1611784 5692392 1612520 5690272 -1611784 5692392 1612736 5692952 1612880 5692928 1612520 5690272 -1612520 5690272 1612176 5692464 1612880 5692928 1613016 5692968 -1611784 5692392 1612176 5692464 1612520 5690272 1612376 5690304 -1611784 5692392 1612176 5692464 1612376 5690304 1612208 5690280 -1611784 5692392 1612880 5692928 1612176 5692464 1612376 5690304 -1612880 5692928 1612176 5692464 1611784 5692392 1612736 5692952 -1611784 5692392 1612544 5693040 1612736 5692952 1612176 5692464 -1611784 5692392 1612440 5693112 1612544 5693040 1612176 5692464 -1611784 5692392 1612408 5693168 1612440 5693112 1612176 5692464 -1612440 5693112 1612544 5693040 1612176 5692464 1612408 5693168 -1611784 5692392 1611664 5692416 1612408 5693168 1612176 5692464 -1612544 5693040 1612736 5692952 1612176 5692464 1612440 5693112 -1612176 5692464 1612376 5690304 1611784 5692392 1612408 5693168 -1612736 5692952 1612880 5692928 1612176 5692464 1612544 5693040 -1612176 5692464 1612880 5692928 1612520 5690272 1612376 5690304 -1612880 5692928 1612520 5690272 1612176 5692464 1612736 5692952 -1612520 5690272 1612328 5692496 1612880 5692928 1613016 5692968 -1612176 5692464 1612328 5692496 1612520 5690272 1612376 5690304 -1612176 5692464 1612328 5692496 1612376 5690304 1611784 5692392 -1612176 5692464 1612880 5692928 1612328 5692496 1612376 5690304 -1612880 5692928 1612328 5692496 1612176 5692464 1612736 5692952 -1612176 5692464 1612544 5693040 1612736 5692952 1612328 5692496 -1612176 5692464 1612440 5693112 1612544 5693040 1612328 5692496 -1612176 5692464 1612408 5693168 1612440 5693112 1612328 5692496 -1612544 5693040 1612736 5692952 1612328 5692496 1612440 5693112 -1612328 5692496 1612376 5690304 1612176 5692464 1612440 5693112 -1612736 5692952 1612880 5692928 1612328 5692496 1612544 5693040 -1612520 5690272 1612376 5690304 1612328 5692496 1613016 5692968 -1612328 5692496 1612736 5692952 1612880 5692928 1613016 5692968 -1612520 5690272 1612328 5692496 1613016 5692968 1612664 5690184 -1612328 5692496 1612880 5692928 1613016 5692968 1612664 5690184 -1612520 5690272 1612376 5690304 1612328 5692496 1612664 5690184 -1613016 5692968 1612744 5690128 1612664 5690184 1612328 5692496 -1613016 5692968 1612360 5692488 1612328 5692496 1612880 5692928 -1612360 5692488 1612664 5690184 1612328 5692496 1612880 5692928 -1612328 5692496 1612736 5692952 1612880 5692928 1612360 5692488 -1612880 5692928 1613016 5692968 1612360 5692488 1612736 5692952 -1612328 5692496 1612544 5693040 1612736 5692952 1612360 5692488 -1612328 5692496 1612440 5693112 1612544 5693040 1612360 5692488 -1612328 5692496 1612544 5693040 1612360 5692488 1612664 5690184 -1612736 5692952 1612880 5692928 1612360 5692488 1612544 5693040 -1613016 5692968 1612664 5690184 1612360 5692488 1612880 5692928 -1612664 5690184 1612360 5692488 1613016 5692968 1612744 5690128 -1612328 5692496 1612360 5692488 1612664 5690184 1612520 5690272 -1612328 5692496 1612360 5692488 1612520 5690272 1612376 5690304 -1612328 5692496 1612360 5692488 1612376 5690304 1612176 5692464 -1612376 5690304 1611784 5692392 1612176 5692464 1612360 5692488 -1612360 5692488 1612520 5690272 1612376 5690304 1612176 5692464 -1612328 5692496 1612544 5693040 1612360 5692488 1612176 5692464 -1612360 5692488 1613016 5692968 1612664 5690184 1612520 5690272 -1612360 5692488 1612664 5690184 1612520 5690272 1612376 5690304 -1612360 5692488 1612552 5692512 1612664 5690184 1612520 5690272 -1612360 5692488 1613016 5692968 1612552 5692512 1612520 5690272 -1613016 5692968 1612552 5692512 1612360 5692488 1612880 5692928 -1612360 5692488 1612736 5692952 1612880 5692928 1612552 5692512 -1612360 5692488 1612544 5693040 1612736 5692952 1612552 5692512 -1612736 5692952 1612880 5692928 1612552 5692512 1612544 5693040 -1612360 5692488 1612328 5692496 1612544 5693040 1612552 5692512 -1612552 5692512 1612520 5690272 1612360 5692488 1612544 5693040 -1612880 5692928 1613016 5692968 1612552 5692512 1612736 5692952 -1612552 5692512 1613016 5692968 1612664 5690184 1612520 5690272 -1613016 5692968 1612664 5690184 1612552 5692512 1612880 5692928 -1612664 5690184 1612552 5692512 1613016 5692968 1612744 5690128 -1612664 5690184 1612552 5692512 1612744 5690128 1612720 5690120 -1612664 5690184 1612520 5690272 1612552 5692512 1612744 5690128 -1612552 5692512 1612880 5692928 1613016 5692968 1612744 5690128 -1612360 5692488 1612552 5692512 1612520 5690272 1612376 5690304 -1612360 5692488 1612552 5692512 1612376 5690304 1612176 5692464 -1612552 5692512 1612664 5690184 1612520 5690272 1612376 5690304 -1612360 5692488 1612544 5693040 1612552 5692512 1612376 5690304 -1613016 5692968 1612768 5690096 1612744 5690128 1612552 5692512 -1613016 5692968 1612744 5692600 1612552 5692512 1612880 5692928 -1612552 5692512 1612736 5692952 1612880 5692928 1612744 5692600 -1612552 5692512 1612544 5693040 1612736 5692952 1612744 5692600 -1612744 5692600 1612744 5690128 1612552 5692512 1612736 5692952 -1612880 5692928 1613016 5692968 1612744 5692600 1612736 5692952 -1613016 5692968 1612744 5690128 1612744 5692600 1612880 5692928 -1612552 5692512 1612744 5692600 1612744 5690128 1612664 5690184 -1612744 5690128 1612720 5690120 1612664 5690184 1612744 5692600 -1612552 5692512 1612744 5692600 1612664 5690184 1612520 5690272 -1612552 5692512 1612744 5692600 1612520 5690272 1612376 5690304 -1612552 5692512 1612736 5692952 1612744 5692600 1612520 5690272 -1612744 5692600 1613016 5692968 1612744 5690128 1612664 5690184 -1612744 5692600 1612744 5690128 1612664 5690184 1612520 5690272 -1612744 5690128 1612744 5692600 1613016 5692968 1612768 5690096 -1612744 5690128 1612664 5690184 1612744 5692600 1612768 5690096 -1612744 5692600 1612880 5692928 1613016 5692968 1612768 5690096 -1613016 5692968 1615312 5689360 1612768 5690096 1612744 5692600 -1613016 5692968 1615312 5689360 1612744 5692600 1612880 5692928 -1615312 5689360 1613280 5689560 1612768 5690096 1612744 5692600 -1613016 5692968 1613112 5693056 1615312 5689360 1612744 5692600 -1613112 5693056 1615384 5689384 1615312 5689360 1612744 5692600 -1613016 5692968 1613112 5693056 1612744 5692600 1612880 5692928 -1615312 5689360 1612768 5690096 1612744 5692600 1613112 5693056 -1612768 5690096 1612744 5690128 1612744 5692600 1615312 5689360 -1615312 5689360 1612936 5692720 1613112 5693056 1615384 5689384 -1615312 5689360 1612744 5692600 1612936 5692720 1615384 5689384 -1612936 5692720 1612744 5692600 1613112 5693056 1615384 5689384 -1612744 5692600 1612936 5692720 1615312 5689360 1612768 5690096 -1612744 5692600 1613112 5693056 1612936 5692720 1612768 5690096 -1612936 5692720 1615384 5689384 1615312 5689360 1612768 5690096 -1615312 5689360 1613280 5689560 1612768 5690096 1612936 5692720 -1613112 5693056 1613384 5693288 1615384 5689384 1612936 5692720 -1613112 5693056 1613216 5693184 1613384 5693288 1612936 5692720 -1615384 5689384 1615312 5689360 1612936 5692720 1613384 5693288 -1613112 5693056 1613384 5693288 1612936 5692720 1612744 5692600 -1613384 5693288 1613488 5693384 1615384 5689384 1612936 5692720 -1613112 5693056 1612936 5692720 1612744 5692600 1613016 5692968 -1612936 5692720 1612768 5690096 1612744 5692600 1613016 5692968 -1612744 5692600 1612880 5692928 1613016 5692968 1612936 5692720 -1612744 5692600 1612736 5692952 1612880 5692928 1612936 5692720 -1612744 5692600 1612552 5692512 1612736 5692952 1612936 5692720 -1612744 5692600 1612736 5692952 1612936 5692720 1612768 5690096 -1612880 5692928 1613016 5692968 1612936 5692720 1612736 5692952 -1613112 5693056 1613384 5693288 1612936 5692720 1613016 5692968 -1613016 5692968 1613112 5693056 1612936 5692720 1612880 5692928 -1612744 5692600 1612936 5692720 1612768 5690096 1612744 5690128 -1612744 5692600 1612936 5692720 1612744 5690128 1612664 5690184 -1612744 5692600 1612736 5692952 1612936 5692720 1612744 5690128 -1612936 5692720 1615312 5689360 1612768 5690096 1612744 5690128 -1612936 5692720 1612984 5692752 1615384 5689384 1615312 5689360 -1612936 5692720 1612984 5692752 1615312 5689360 1612768 5690096 -1612984 5692752 1615384 5689384 1615312 5689360 1612768 5690096 -1612936 5692720 1613384 5693288 1612984 5692752 1612768 5690096 -1612984 5692752 1613384 5693288 1615384 5689384 1615312 5689360 -1612936 5692720 1612984 5692752 1612768 5690096 1612744 5690128 -1612984 5692752 1615312 5689360 1612768 5690096 1612744 5690128 -1612936 5692720 1613384 5693288 1612984 5692752 1612744 5690128 -1615384 5689384 1612984 5692752 1613384 5693288 1613488 5693384 -1615384 5689384 1615312 5689360 1612984 5692752 1613488 5693384 -1612984 5692752 1612936 5692720 1613384 5693288 1613488 5693384 -1615312 5689360 1613280 5689560 1612768 5690096 1612984 5692752 -1613384 5693288 1612984 5692752 1612936 5692720 1613112 5693056 -1613384 5693288 1612984 5692752 1613112 5693056 1613216 5693184 -1612984 5692752 1612744 5690128 1612936 5692720 1613112 5693056 -1612936 5692720 1613016 5692968 1613112 5693056 1612984 5692752 -1612936 5692720 1613016 5692968 1612984 5692752 1612744 5690128 -1613384 5693288 1613488 5693384 1612984 5692752 1613112 5693056 -1613112 5693056 1613384 5693288 1612984 5692752 1613016 5692968 -1612936 5692720 1612880 5692928 1613016 5692968 1612984 5692752 -1612936 5692720 1612736 5692952 1612880 5692928 1612984 5692752 -1612936 5692720 1612880 5692928 1612984 5692752 1612744 5690128 -1613016 5692968 1613112 5693056 1612984 5692752 1612880 5692928 -1612936 5692720 1612984 5692752 1612744 5690128 1612744 5692600 -1615384 5689384 1612984 5692752 1613488 5693384 1615416 5689384 -1612984 5692752 1613080 5692792 1615384 5689384 1615312 5689360 -1612984 5692752 1613080 5692792 1615312 5689360 1612768 5690096 -1612984 5692752 1613080 5692792 1612768 5690096 1612744 5690128 -1613080 5692792 1615312 5689360 1612768 5690096 1612744 5690128 -1613080 5692792 1615384 5689384 1615312 5689360 1612768 5690096 -1612984 5692752 1613488 5693384 1613080 5692792 1612744 5690128 -1613080 5692792 1613488 5693384 1615384 5689384 1615312 5689360 -1612984 5692752 1613080 5692792 1612744 5690128 1612936 5692720 -1613080 5692792 1612768 5690096 1612744 5690128 1612936 5692720 -1612984 5692752 1613488 5693384 1613080 5692792 1612936 5692720 -1613488 5693384 1613080 5692792 1612984 5692752 1613384 5693288 -1613080 5692792 1612936 5692720 1612984 5692752 1613384 5693288 -1612984 5692752 1613112 5693056 1613384 5693288 1613080 5692792 -1613112 5693056 1613216 5693184 1613384 5693288 1613080 5692792 -1612984 5692752 1613112 5693056 1613080 5692792 1612936 5692720 -1613112 5693056 1613216 5693184 1613080 5692792 1612984 5692752 -1613488 5693384 1615384 5689384 1613080 5692792 1613384 5693288 -1613384 5693288 1613488 5693384 1613080 5692792 1613216 5693184 -1615312 5689360 1613280 5689560 1612768 5690096 1613080 5692792 -1612984 5692752 1613016 5692968 1613112 5693056 1613080 5692792 -1612984 5692752 1612880 5692928 1613016 5692968 1613080 5692792 -1612984 5692752 1613016 5692968 1613080 5692792 1612936 5692720 -1613112 5693056 1613216 5693184 1613080 5692792 1613016 5692968 -1612744 5690128 1612744 5692600 1612936 5692720 1613080 5692792 -1615384 5689384 1613080 5692792 1613488 5693384 1615416 5689384 -1613080 5692792 1613192 5692856 1615384 5689384 1615312 5689360 -1613080 5692792 1613192 5692856 1615312 5689360 1612768 5690096 -1613080 5692792 1613192 5692856 1612768 5690096 1612744 5690128 -1613080 5692792 1613192 5692856 1612744 5690128 1612936 5692720 -1613192 5692856 1615312 5689360 1612768 5690096 1612744 5690128 -1613192 5692856 1615384 5689384 1615312 5689360 1612768 5690096 -1613080 5692792 1613488 5693384 1613192 5692856 1612744 5690128 -1613488 5693384 1613192 5692856 1613080 5692792 1613384 5693288 -1613192 5692856 1612744 5690128 1613080 5692792 1613384 5693288 -1613192 5692856 1613488 5693384 1615384 5689384 1615312 5689360 -1613488 5693384 1615384 5689384 1613192 5692856 1613384 5693288 -1613080 5692792 1613216 5693184 1613384 5693288 1613192 5692856 -1613080 5692792 1613112 5693056 1613216 5693184 1613192 5692856 -1613080 5692792 1613016 5692968 1613112 5693056 1613192 5692856 -1613112 5693056 1613216 5693184 1613192 5692856 1613016 5692968 -1613080 5692792 1613016 5692968 1613192 5692856 1612744 5690128 -1613384 5693288 1613488 5693384 1613192 5692856 1613216 5693184 -1613216 5693184 1613384 5693288 1613192 5692856 1613112 5693056 -1615312 5689360 1613280 5689560 1612768 5690096 1613192 5692856 -1613080 5692792 1612984 5692752 1613016 5692968 1613192 5692856 -1615384 5689384 1613192 5692856 1613488 5693384 1615416 5689384 -1615384 5689384 1615312 5689360 1613192 5692856 1615416 5689384 -1613192 5692856 1613384 5693288 1613488 5693384 1615416 5689384 -1613488 5693384 1614120 5694152 1615416 5689384 1613192 5692856 -1613488 5693384 1613480 5692992 1613192 5692856 1613384 5693288 -1613192 5692856 1613216 5693184 1613384 5693288 1613480 5692992 -1613488 5693384 1615416 5689384 1613480 5692992 1613384 5693288 -1613480 5692992 1615416 5689384 1613192 5692856 1613216 5693184 -1613384 5693288 1613488 5693384 1613480 5692992 1613216 5693184 -1615416 5689384 1613480 5692992 1613488 5693384 1614120 5694152 -1615416 5689384 1613192 5692856 1613480 5692992 1614120 5694152 -1613480 5692992 1613384 5693288 1613488 5693384 1614120 5694152 -1613192 5692856 1613112 5693056 1613216 5693184 1613480 5692992 -1613192 5692856 1613016 5692968 1613112 5693056 1613480 5692992 -1613216 5693184 1613384 5693288 1613480 5692992 1613112 5693056 -1613192 5692856 1613112 5693056 1613480 5692992 1615416 5689384 -1615416 5689384 1613480 5692992 1614120 5694152 1614216 5694264 -1613488 5693384 1613584 5693568 1614120 5694152 1613480 5692992 -1613488 5693384 1613584 5693568 1613480 5692992 1613384 5693288 -1614120 5694152 1615416 5689384 1613480 5692992 1613584 5693568 -1613584 5693568 1614056 5694128 1614120 5694152 1613480 5692992 -1613192 5692856 1613480 5692992 1615416 5689384 1615384 5689384 -1613192 5692856 1613480 5692992 1615384 5689384 1615312 5689360 -1613192 5692856 1613480 5692992 1615312 5689360 1612768 5690096 -1613192 5692856 1613480 5692992 1612768 5690096 1612744 5690128 -1613192 5692856 1613480 5692992 1612744 5690128 1613080 5692792 -1613480 5692992 1615312 5689360 1612768 5690096 1612744 5690128 -1613480 5692992 1615384 5689384 1615312 5689360 1612768 5690096 -1613480 5692992 1614120 5694152 1615416 5689384 1615384 5689384 -1613192 5692856 1613112 5693056 1613480 5692992 1612744 5690128 -1615312 5689360 1613280 5689560 1612768 5690096 1613480 5692992 -1613480 5692992 1615416 5689384 1615384 5689384 1615312 5689360 -1613480 5692992 1613552 5693016 1615416 5689384 1615384 5689384 -1613480 5692992 1614120 5694152 1613552 5693016 1615384 5689384 -1614120 5694152 1613552 5693016 1613480 5692992 1613584 5693568 -1613552 5693016 1615384 5689384 1613480 5692992 1613584 5693568 -1613552 5693016 1614120 5694152 1615416 5689384 1615384 5689384 -1614120 5694152 1615416 5689384 1613552 5693016 1613584 5693568 -1614120 5694152 1613552 5693016 1613584 5693568 1614056 5694128 -1615416 5689384 1613552 5693016 1614120 5694152 1614216 5694264 -1615416 5689384 1615384 5689384 1613552 5693016 1614216 5694264 -1613552 5693016 1613584 5693568 1614120 5694152 1614216 5694264 -1613480 5692992 1613488 5693384 1613584 5693568 1613552 5693016 -1613480 5692992 1613488 5693384 1613552 5693016 1615384 5689384 -1613480 5692992 1613384 5693288 1613488 5693384 1613552 5693016 -1613480 5692992 1613384 5693288 1613552 5693016 1615384 5689384 -1613480 5692992 1613216 5693184 1613384 5693288 1613552 5693016 -1613584 5693568 1614120 5694152 1613552 5693016 1613488 5693384 -1613488 5693384 1613584 5693568 1613552 5693016 1613384 5693288 -1613480 5692992 1613552 5693016 1615384 5689384 1615312 5689360 -1613480 5692992 1613552 5693016 1615312 5689360 1612768 5690096 -1613480 5692992 1613552 5693016 1612768 5690096 1612744 5690128 -1613480 5692992 1613552 5693016 1612744 5690128 1613192 5692856 -1612744 5690128 1613080 5692792 1613192 5692856 1613552 5693016 -1613552 5693016 1612768 5690096 1612744 5690128 1613192 5692856 -1613552 5693016 1615312 5689360 1612768 5690096 1612744 5690128 -1613552 5693016 1615416 5689384 1615384 5689384 1615312 5689360 -1613480 5692992 1613384 5693288 1613552 5693016 1613192 5692856 -1615312 5689360 1613280 5689560 1612768 5690096 1613552 5693016 -1615312 5689360 1615000 5689240 1613280 5689560 1613552 5693016 -1612768 5690096 1612744 5690128 1613552 5693016 1613280 5689560 -1613280 5689560 1613216 5689568 1612768 5690096 1613552 5693016 -1613552 5693016 1615384 5689384 1615312 5689360 1613280 5689560 -1615416 5689384 1613552 5693016 1614216 5694264 1615200 5695576 -1613552 5693016 1613704 5693120 1615416 5689384 1615384 5689384 -1613552 5693016 1613704 5693120 1615384 5689384 1615312 5689360 -1613552 5693016 1614216 5694264 1613704 5693120 1615384 5689384 -1613704 5693120 1614216 5694264 1615416 5689384 1615384 5689384 -1614216 5694264 1613704 5693120 1613552 5693016 1614120 5694152 -1613704 5693120 1615384 5689384 1613552 5693016 1614120 5694152 -1613552 5693016 1613584 5693568 1614120 5694152 1613704 5693120 -1613552 5693016 1613488 5693384 1613584 5693568 1613704 5693120 -1613552 5693016 1613488 5693384 1613704 5693120 1615384 5689384 -1613584 5693568 1614120 5694152 1613704 5693120 1613488 5693384 -1614216 5694264 1615416 5689384 1613704 5693120 1614120 5694152 -1613584 5693568 1614056 5694128 1614120 5694152 1613704 5693120 -1613584 5693568 1613656 5693824 1614056 5694128 1613704 5693120 -1613584 5693568 1614056 5694128 1613704 5693120 1613488 5693384 -1614120 5694152 1614216 5694264 1613704 5693120 1614056 5694128 -1613552 5693016 1613384 5693288 1613488 5693384 1613704 5693120 -1613552 5693016 1613480 5692992 1613384 5693288 1613704 5693120 -1613488 5693384 1613584 5693568 1613704 5693120 1613384 5693288 -1613552 5693016 1613384 5693288 1613704 5693120 1615384 5689384 -1615416 5689384 1613704 5693120 1614216 5694264 1615200 5695576 -1613704 5693120 1613840 5693248 1615416 5689384 1615384 5689384 -1613704 5693120 1613840 5693248 1615384 5689384 1613552 5693016 -1613704 5693120 1614216 5694264 1613840 5693248 1615384 5689384 -1614216 5694264 1613840 5693248 1613704 5693120 1614120 5694152 -1613840 5693248 1615384 5689384 1613704 5693120 1614120 5694152 -1613840 5693248 1614216 5694264 1615416 5689384 1615384 5689384 -1614216 5694264 1615416 5689384 1613840 5693248 1614120 5694152 -1613704 5693120 1614056 5694128 1614120 5694152 1613840 5693248 -1613704 5693120 1614056 5694128 1613840 5693248 1615384 5689384 -1614120 5694152 1614216 5694264 1613840 5693248 1614056 5694128 -1613704 5693120 1613584 5693568 1614056 5694128 1613840 5693248 -1613584 5693568 1613656 5693824 1614056 5694128 1613840 5693248 -1613704 5693120 1613488 5693384 1613584 5693568 1613840 5693248 -1613704 5693120 1613384 5693288 1613488 5693384 1613840 5693248 -1613704 5693120 1613488 5693384 1613840 5693248 1615384 5689384 -1613656 5693824 1613984 5694128 1614056 5694128 1613840 5693248 -1613584 5693568 1613656 5693824 1613840 5693248 1613488 5693384 -1614056 5694128 1614120 5694152 1613840 5693248 1613656 5693824 -1615416 5689384 1613840 5693248 1614216 5694264 1615200 5695576 -1613840 5693248 1613992 5693352 1615416 5689384 1615384 5689384 -1613840 5693248 1613992 5693352 1615384 5689384 1613704 5693120 -1615384 5689384 1613552 5693016 1613704 5693120 1613992 5693352 -1613992 5693352 1615416 5689384 1615384 5689384 1613704 5693120 -1613840 5693248 1614216 5694264 1613992 5693352 1613704 5693120 -1614216 5694264 1613992 5693352 1613840 5693248 1614120 5694152 -1613840 5693248 1614056 5694128 1614120 5694152 1613992 5693352 -1613992 5693352 1613704 5693120 1613840 5693248 1614056 5694128 -1614120 5694152 1614216 5694264 1613992 5693352 1614056 5694128 -1613992 5693352 1614216 5694264 1615416 5689384 1615384 5689384 -1614216 5694264 1615416 5689384 1613992 5693352 1614120 5694152 -1613840 5693248 1613656 5693824 1614056 5694128 1613992 5693352 -1613840 5693248 1613584 5693568 1613656 5693824 1613992 5693352 -1614056 5694128 1614120 5694152 1613992 5693352 1613656 5693824 -1613840 5693248 1613584 5693568 1613992 5693352 1613704 5693120 -1613656 5693824 1613984 5694128 1614056 5694128 1613992 5693352 -1613840 5693248 1613488 5693384 1613584 5693568 1613992 5693352 -1613656 5693824 1614056 5694128 1613992 5693352 1613584 5693568 -1615416 5689384 1613992 5693352 1614216 5694264 1615200 5695576 -1615416 5689384 1613992 5693352 1615200 5695576 1615488 5689328 -1615416 5689384 1615384 5689384 1613992 5693352 1615488 5689328 -1613992 5693352 1614120 5694152 1614216 5694264 1615200 5695576 -1615200 5695576 1615376 5695816 1615488 5689328 1613992 5693352 -1614216 5694264 1615056 5695464 1615200 5695576 1613992 5693352 -1613992 5693352 1614216 5694264 1615200 5695576 1615488 5689328 -1613992 5693352 1614112 5693480 1615488 5689328 1615416 5689384 -1613992 5693352 1614112 5693480 1615416 5689384 1615384 5689384 -1613992 5693352 1615200 5695576 1614112 5693480 1615416 5689384 -1614112 5693480 1615200 5695576 1615488 5689328 1615416 5689384 -1615488 5689328 1614112 5693480 1615200 5695576 1615376 5695816 -1615200 5695576 1614112 5693480 1613992 5693352 1614216 5694264 -1614112 5693480 1615416 5689384 1613992 5693352 1614216 5694264 -1613992 5693352 1614120 5694152 1614216 5694264 1614112 5693480 -1613992 5693352 1614056 5694128 1614120 5694152 1614112 5693480 -1613992 5693352 1613656 5693824 1614056 5694128 1614112 5693480 -1614056 5694128 1614120 5694152 1614112 5693480 1613656 5693824 -1613992 5693352 1613656 5693824 1614112 5693480 1615416 5689384 -1614120 5694152 1614216 5694264 1614112 5693480 1614056 5694128 -1615200 5695576 1615488 5689328 1614112 5693480 1614216 5694264 -1613656 5693824 1613984 5694128 1614056 5694128 1614112 5693480 -1613656 5693824 1613984 5694128 1614112 5693480 1613992 5693352 -1614056 5694128 1614120 5694152 1614112 5693480 1613984 5694128 -1613656 5693824 1613800 5694064 1613984 5694128 1614112 5693480 -1613656 5693824 1613752 5694024 1613800 5694064 1614112 5693480 -1613656 5693824 1613752 5694024 1614112 5693480 1613992 5693352 -1613800 5694064 1613904 5694160 1613984 5694128 1614112 5693480 -1613800 5694064 1613984 5694128 1614112 5693480 1613752 5694024 -1613984 5694128 1614056 5694128 1614112 5693480 1613800 5694064 -1613992 5693352 1613584 5693568 1613656 5693824 1614112 5693480 -1613992 5693352 1613840 5693248 1613584 5693568 1614112 5693480 -1613656 5693824 1613752 5694024 1614112 5693480 1613584 5693568 -1613992 5693352 1613584 5693568 1614112 5693480 1615416 5689384 -1615200 5695576 1614112 5693480 1614216 5694264 1615056 5695464 -1615200 5695576 1615488 5689328 1614112 5693480 1615056 5695464 -1614216 5694264 1614256 5694448 1615056 5695464 1614112 5693480 -1614216 5694264 1615056 5695464 1614112 5693480 1614120 5694152 -1614112 5693480 1614424 5693888 1615488 5689328 1615416 5689384 -1614112 5693480 1614424 5693888 1615416 5689384 1613992 5693352 -1614112 5693480 1615200 5695576 1614424 5693888 1615416 5689384 -1615200 5695576 1614424 5693888 1614112 5693480 1615056 5695464 -1614424 5693888 1615416 5689384 1614112 5693480 1615056 5695464 -1614424 5693888 1615200 5695576 1615488 5689328 1615416 5689384 -1615200 5695576 1615488 5689328 1614424 5693888 1615056 5695464 -1615488 5689328 1614424 5693888 1615200 5695576 1615376 5695816 -1614112 5693480 1614216 5694264 1615056 5695464 1614424 5693888 -1614112 5693480 1614216 5694264 1614424 5693888 1615416 5689384 -1615056 5695464 1615200 5695576 1614424 5693888 1614216 5694264 -1614216 5694264 1614256 5694448 1615056 5695464 1614424 5693888 -1615056 5695464 1615200 5695576 1614424 5693888 1614256 5694448 -1614256 5694448 1614856 5695400 1615056 5695464 1614424 5693888 -1614216 5694264 1614256 5694448 1614424 5693888 1614112 5693480 -1614112 5693480 1614120 5694152 1614216 5694264 1614424 5693888 -1614112 5693480 1614056 5694128 1614120 5694152 1614424 5693888 -1614112 5693480 1613984 5694128 1614056 5694128 1614424 5693888 -1614112 5693480 1614056 5694128 1614424 5693888 1615416 5689384 -1614216 5694264 1614256 5694448 1614424 5693888 1614120 5694152 -1614120 5694152 1614216 5694264 1614424 5693888 1614056 5694128 -1614424 5693888 1614520 5693968 1615488 5689328 1615416 5689384 -1614424 5693888 1614520 5693968 1615416 5689384 1614112 5693480 -1615416 5689384 1613992 5693352 1614112 5693480 1614520 5693968 -1614520 5693968 1615488 5689328 1615416 5689384 1614112 5693480 -1614424 5693888 1615200 5695576 1614520 5693968 1614112 5693480 -1615200 5695576 1614520 5693968 1614424 5693888 1615056 5695464 -1614424 5693888 1614256 5694448 1615056 5695464 1614520 5693968 -1614520 5693968 1614112 5693480 1614424 5693888 1614256 5694448 -1615056 5695464 1615200 5695576 1614520 5693968 1614256 5694448 -1614520 5693968 1615200 5695576 1615488 5689328 1615416 5689384 -1615200 5695576 1615488 5689328 1614520 5693968 1615056 5695464 -1615488 5689328 1614520 5693968 1615200 5695576 1615376 5695816 -1615488 5689328 1615416 5689384 1614520 5693968 1615376 5695816 -1614520 5693968 1615056 5695464 1615200 5695576 1615376 5695816 -1615488 5689328 1614520 5693968 1615376 5695816 1623272 5697000 -1614256 5694448 1614856 5695400 1615056 5695464 1614520 5693968 -1614256 5694448 1614856 5695400 1614520 5693968 1614424 5693888 -1615056 5695464 1615200 5695576 1614520 5693968 1614856 5695400 -1614256 5694448 1614280 5694808 1614856 5695400 1614520 5693968 -1614256 5694448 1614280 5694808 1614520 5693968 1614424 5693888 -1614280 5694808 1614440 5695208 1614856 5695400 1614520 5693968 -1614856 5695400 1615056 5695464 1614520 5693968 1614280 5694808 -1614424 5693888 1614216 5694264 1614256 5694448 1614520 5693968 -1614256 5694448 1614280 5694808 1614520 5693968 1614216 5694264 -1614424 5693888 1614216 5694264 1614520 5693968 1614112 5693480 -1614424 5693888 1614120 5694152 1614216 5694264 1614520 5693968 -1614520 5693968 1614656 5694032 1615488 5689328 1615416 5689384 -1614520 5693968 1614656 5694032 1615416 5689384 1614112 5693480 -1615416 5689384 1613992 5693352 1614112 5693480 1614656 5694032 -1614520 5693968 1614656 5694032 1614112 5693480 1614424 5693888 -1614656 5694032 1615416 5689384 1614112 5693480 1614424 5693888 -1614656 5694032 1615488 5689328 1615416 5689384 1614112 5693480 -1614520 5693968 1615376 5695816 1614656 5694032 1614424 5693888 -1614656 5694032 1615376 5695816 1615488 5689328 1615416 5689384 -1615488 5689328 1614656 5694032 1615376 5695816 1623272 5697000 -1615488 5689328 1614656 5694032 1623272 5697000 1623304 5696976 -1615488 5689328 1614656 5694032 1623304 5696976 1623376 5696968 -1615488 5689328 1615416 5689384 1614656 5694032 1623304 5696976 -1614656 5694032 1614520 5693968 1615376 5695816 1623272 5697000 -1614656 5694032 1615376 5695816 1623272 5697000 1623304 5696976 -1615376 5695816 1614656 5694032 1614520 5693968 1615200 5695576 -1614656 5694032 1614424 5693888 1614520 5693968 1615200 5695576 -1614520 5693968 1615056 5695464 1615200 5695576 1614656 5694032 -1614520 5693968 1614856 5695400 1615056 5695464 1614656 5694032 -1614520 5693968 1614856 5695400 1614656 5694032 1614424 5693888 -1615056 5695464 1615200 5695576 1614656 5694032 1614856 5695400 -1615376 5695816 1623272 5697000 1614656 5694032 1615200 5695576 -1615200 5695576 1615376 5695816 1614656 5694032 1615056 5695464 -1615376 5695816 1615512 5696024 1623272 5697000 1614656 5694032 -1614520 5693968 1614280 5694808 1614856 5695400 1614656 5694032 -1614856 5695400 1615056 5695464 1614656 5694032 1614280 5694808 -1614520 5693968 1614280 5694808 1614656 5694032 1614424 5693888 -1614280 5694808 1614440 5695208 1614856 5695400 1614656 5694032 -1614520 5693968 1614256 5694448 1614280 5694808 1614656 5694032 -1614520 5693968 1614216 5694264 1614256 5694448 1614656 5694032 -1614520 5693968 1614216 5694264 1614656 5694032 1614424 5693888 -1614256 5694448 1614280 5694808 1614656 5694032 1614216 5694264 -1614280 5694808 1614856 5695400 1614656 5694032 1614256 5694448 -1614520 5693968 1614424 5693888 1614216 5694264 1614656 5694032 -1615376 5695816 1614688 5694072 1614656 5694032 1615200 5695576 -1614688 5694072 1623272 5697000 1614656 5694032 1615200 5695576 -1615376 5695816 1623272 5697000 1614688 5694072 1615200 5695576 -1614656 5694032 1614688 5694072 1623272 5697000 1623304 5696976 -1614656 5694032 1614688 5694072 1623304 5696976 1615488 5689328 -1623304 5696976 1623376 5696968 1615488 5689328 1614688 5694072 -1614656 5694032 1614688 5694072 1615488 5689328 1615416 5689384 -1614688 5694072 1623304 5696976 1615488 5689328 1615416 5689384 -1614656 5694032 1614688 5694072 1615416 5689384 1614112 5693480 -1614656 5694032 1615200 5695576 1614688 5694072 1615416 5689384 -1614688 5694072 1615376 5695816 1623272 5697000 1623304 5696976 -1614688 5694072 1623272 5697000 1623304 5696976 1615488 5689328 -1614656 5694032 1615056 5695464 1615200 5695576 1614688 5694072 -1614656 5694032 1614856 5695400 1615056 5695464 1614688 5694072 -1614656 5694032 1614280 5694808 1614856 5695400 1614688 5694072 -1614856 5695400 1615056 5695464 1614688 5694072 1614280 5694808 -1614656 5694032 1614280 5694808 1614688 5694072 1615416 5689384 -1615200 5695576 1615376 5695816 1614688 5694072 1615056 5695464 -1615056 5695464 1615200 5695576 1614688 5694072 1614856 5695400 -1623272 5697000 1614688 5694072 1615376 5695816 1615512 5696024 -1614280 5694808 1614440 5695208 1614856 5695400 1614688 5694072 -1614656 5694032 1614256 5694448 1614280 5694808 1614688 5694072 -1614280 5694808 1614856 5695400 1614688 5694072 1614256 5694448 -1614656 5694032 1614256 5694448 1614688 5694072 1615416 5689384 -1614656 5694032 1614216 5694264 1614256 5694448 1614688 5694072 -1614656 5694032 1614520 5693968 1614216 5694264 1614688 5694072 -1614656 5694032 1614520 5693968 1614688 5694072 1615416 5689384 -1614216 5694264 1614256 5694448 1614688 5694072 1614520 5693968 -1614256 5694448 1614280 5694808 1614688 5694072 1614216 5694264 -1614520 5693968 1614424 5693888 1614216 5694264 1614688 5694072 -1614688 5694072 1614752 5694200 1623272 5697000 1623304 5696976 -1614688 5694072 1615376 5695816 1614752 5694200 1623304 5696976 -1615376 5695816 1614752 5694200 1614688 5694072 1615200 5695576 -1614688 5694072 1615056 5695464 1615200 5695576 1614752 5694200 -1614752 5694200 1623304 5696976 1614688 5694072 1615056 5695464 -1615200 5695576 1615376 5695816 1614752 5694200 1615056 5695464 -1614752 5694200 1615376 5695816 1623272 5697000 1623304 5696976 -1615376 5695816 1623272 5697000 1614752 5694200 1615200 5695576 -1614688 5694072 1614752 5694200 1623304 5696976 1615488 5689328 -1614688 5694072 1614752 5694200 1615488 5689328 1615416 5689384 -1623304 5696976 1623376 5696968 1615488 5689328 1614752 5694200 -1614752 5694200 1623272 5697000 1623304 5696976 1615488 5689328 -1614688 5694072 1615056 5695464 1614752 5694200 1615488 5689328 -1614688 5694072 1614856 5695400 1615056 5695464 1614752 5694200 -1614688 5694072 1614280 5694808 1614856 5695400 1614752 5694200 -1614688 5694072 1614256 5694448 1614280 5694808 1614752 5694200 -1614280 5694808 1614856 5695400 1614752 5694200 1614256 5694448 -1615056 5695464 1615200 5695576 1614752 5694200 1614856 5695400 -1614688 5694072 1614256 5694448 1614752 5694200 1615488 5689328 -1614856 5695400 1615056 5695464 1614752 5694200 1614280 5694808 -1623272 5697000 1614752 5694200 1615376 5695816 1615512 5696024 -1623272 5697000 1623304 5696976 1614752 5694200 1615512 5696024 -1614752 5694200 1615200 5695576 1615376 5695816 1615512 5696024 -1623272 5697000 1614752 5694200 1615512 5696024 1622016 5697816 -1623272 5697000 1614752 5694200 1622016 5697816 1622080 5697800 -1615512 5696024 1621936 5697864 1622016 5697816 1614752 5694200 -1623272 5697000 1623304 5696976 1614752 5694200 1622016 5697816 -1614752 5694200 1615376 5695816 1615512 5696024 1622016 5697816 -1614280 5694808 1614440 5695208 1614856 5695400 1614752 5694200 -1614688 5694072 1614216 5694264 1614256 5694448 1614752 5694200 -1614256 5694448 1614280 5694808 1614752 5694200 1614216 5694264 -1614688 5694072 1614216 5694264 1614752 5694200 1615488 5689328 -1614688 5694072 1614520 5693968 1614216 5694264 1614752 5694200 -1622016 5697816 1614840 5694304 1615512 5696024 1621936 5697864 -1614752 5694200 1614840 5694304 1622016 5697816 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1614840 5694304 -1614752 5694200 1614840 5694304 1623272 5697000 1623304 5696976 -1614752 5694200 1614840 5694304 1623304 5696976 1615488 5689328 -1623304 5696976 1623376 5696968 1615488 5689328 1614840 5694304 -1614840 5694304 1623272 5697000 1623304 5696976 1615488 5689328 -1614752 5694200 1615512 5696024 1614840 5694304 1615488 5689328 -1614840 5694304 1615512 5696024 1622016 5697816 1623272 5697000 -1614840 5694304 1622016 5697816 1623272 5697000 1623304 5696976 -1614752 5694200 1614840 5694304 1615488 5689328 1614688 5694072 -1615488 5689328 1615416 5689384 1614688 5694072 1614840 5694304 -1614840 5694304 1623304 5696976 1615488 5689328 1614688 5694072 -1614752 5694200 1615512 5696024 1614840 5694304 1614688 5694072 -1615512 5696024 1614840 5694304 1614752 5694200 1615376 5695816 -1614840 5694304 1614688 5694072 1614752 5694200 1615376 5695816 -1614752 5694200 1615200 5695576 1615376 5695816 1614840 5694304 -1614752 5694200 1615056 5695464 1615200 5695576 1614840 5694304 -1614752 5694200 1614856 5695400 1615056 5695464 1614840 5694304 -1615056 5695464 1615200 5695576 1614840 5694304 1614856 5695400 -1614752 5694200 1614856 5695400 1614840 5694304 1614688 5694072 -1615200 5695576 1615376 5695816 1614840 5694304 1615056 5695464 -1615512 5696024 1622016 5697816 1614840 5694304 1615376 5695816 -1614752 5694200 1614280 5694808 1614856 5695400 1614840 5694304 -1614752 5694200 1614256 5694448 1614280 5694808 1614840 5694304 -1614752 5694200 1614216 5694264 1614256 5694448 1614840 5694304 -1614856 5695400 1615056 5695464 1614840 5694304 1614280 5694808 -1614752 5694200 1614256 5694448 1614840 5694304 1614688 5694072 -1614280 5694808 1614856 5695400 1614840 5694304 1614256 5694448 -1615376 5695816 1615512 5696024 1614840 5694304 1615200 5695576 -1614280 5694808 1614440 5695208 1614856 5695400 1614840 5694304 -1614856 5695400 1615056 5695464 1614840 5694304 1614440 5695208 -1614280 5694808 1614440 5695208 1614840 5694304 1614256 5694448 -1614280 5694808 1614344 5695072 1614440 5695208 1614840 5694304 -1614280 5694808 1614344 5695072 1614840 5694304 1614256 5694448 -1614440 5695208 1614856 5695400 1614840 5694304 1614344 5695072 -1614440 5695208 1614696 5695376 1614856 5695400 1614840 5694304 -1622016 5697816 1614952 5694368 1615512 5696024 1621936 5697864 -1614840 5694304 1614952 5694368 1622016 5697816 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1614952 5694368 -1614840 5694304 1615512 5696024 1614952 5694368 1623272 5697000 -1615512 5696024 1614952 5694368 1614840 5694304 1615376 5695816 -1614952 5694368 1623272 5697000 1614840 5694304 1615376 5695816 -1614952 5694368 1615512 5696024 1622016 5697816 1623272 5697000 -1615512 5696024 1622016 5697816 1614952 5694368 1615376 5695816 -1614840 5694304 1614952 5694368 1623272 5697000 1623304 5696976 -1614840 5694304 1614952 5694368 1623304 5696976 1615488 5689328 -1623304 5696976 1623376 5696968 1615488 5689328 1614952 5694368 -1614840 5694304 1614952 5694368 1615488 5689328 1614688 5694072 -1615488 5689328 1615416 5689384 1614688 5694072 1614952 5694368 -1615416 5689384 1614656 5694032 1614688 5694072 1614952 5694368 -1614688 5694072 1614840 5694304 1614952 5694368 1615416 5689384 -1614952 5694368 1623304 5696976 1615488 5689328 1615416 5689384 -1614952 5694368 1622016 5697816 1623272 5697000 1623304 5696976 -1614840 5694304 1615376 5695816 1614952 5694368 1614688 5694072 -1614952 5694368 1623272 5697000 1623304 5696976 1615488 5689328 -1614840 5694304 1614952 5694368 1614688 5694072 1614752 5694200 -1614952 5694368 1615416 5689384 1614688 5694072 1614752 5694200 -1614840 5694304 1615376 5695816 1614952 5694368 1614752 5694200 -1614840 5694304 1615200 5695576 1615376 5695816 1614952 5694368 -1614840 5694304 1615056 5695464 1615200 5695576 1614952 5694368 -1614840 5694304 1614856 5695400 1615056 5695464 1614952 5694368 -1614840 5694304 1614440 5695208 1614856 5695400 1614952 5694368 -1614856 5695400 1615056 5695464 1614952 5694368 1614440 5695208 -1615056 5695464 1615200 5695576 1614952 5694368 1614856 5695400 -1614840 5694304 1614440 5695208 1614952 5694368 1614752 5694200 -1615376 5695816 1615512 5696024 1614952 5694368 1615200 5695576 -1615200 5695576 1615376 5695816 1614952 5694368 1615056 5695464 -1614840 5694304 1614344 5695072 1614440 5695208 1614952 5694368 -1614440 5695208 1614856 5695400 1614952 5694368 1614344 5695072 -1614840 5694304 1614344 5695072 1614952 5694368 1614752 5694200 -1614840 5694304 1614280 5694808 1614344 5695072 1614952 5694368 -1614840 5694304 1614280 5694808 1614952 5694368 1614752 5694200 -1614840 5694304 1614256 5694448 1614280 5694808 1614952 5694368 -1614344 5695072 1614440 5695208 1614952 5694368 1614280 5694808 -1614440 5695208 1614696 5695376 1614856 5695400 1614952 5694368 -1614440 5695208 1614696 5695376 1614952 5694368 1614344 5695072 -1614856 5695400 1615056 5695464 1614952 5694368 1614696 5695376 -1614440 5695208 1614568 5695320 1614696 5695376 1614952 5694368 -1615488 5689328 1615176 5694424 1623304 5696976 1623376 5696968 -1614952 5694368 1615176 5694424 1615488 5689328 1615416 5689384 -1615176 5694424 1623304 5696976 1615488 5689328 1615416 5689384 -1614952 5694368 1615176 5694424 1615416 5689384 1614688 5694072 -1615416 5689384 1614656 5694032 1614688 5694072 1615176 5694424 -1614688 5694072 1614952 5694368 1615176 5694424 1614656 5694032 -1615416 5689384 1614112 5693480 1614656 5694032 1615176 5694424 -1614952 5694368 1615176 5694424 1614688 5694072 1614752 5694200 -1615176 5694424 1615488 5689328 1615416 5689384 1614656 5694032 -1614952 5694368 1623304 5696976 1615176 5694424 1614688 5694072 -1623304 5696976 1615176 5694424 1614952 5694368 1623272 5697000 -1623304 5696976 1615488 5689328 1615176 5694424 1623272 5697000 -1614952 5694368 1622016 5697816 1623272 5697000 1615176 5694424 -1622016 5697816 1622080 5697800 1623272 5697000 1615176 5694424 -1614952 5694368 1615512 5696024 1622016 5697816 1615176 5694424 -1615512 5696024 1621936 5697864 1622016 5697816 1615176 5694424 -1621936 5697864 1621968 5697856 1622016 5697816 1615176 5694424 -1622016 5697816 1623272 5697000 1615176 5694424 1621936 5697864 -1615512 5696024 1621936 5697864 1615176 5694424 1614952 5694368 -1615176 5694424 1614688 5694072 1614952 5694368 1615512 5696024 -1614952 5694368 1615376 5695816 1615512 5696024 1615176 5694424 -1614952 5694368 1615200 5695576 1615376 5695816 1615176 5694424 -1615512 5696024 1621936 5697864 1615176 5694424 1615376 5695816 -1614952 5694368 1615200 5695576 1615176 5694424 1614688 5694072 -1615376 5695816 1615512 5696024 1615176 5694424 1615200 5695576 -1623272 5697000 1623304 5696976 1615176 5694424 1622016 5697816 -1614952 5694368 1615056 5695464 1615200 5695576 1615176 5694424 -1614952 5694368 1614856 5695400 1615056 5695464 1615176 5694424 -1614952 5694368 1614696 5695376 1614856 5695400 1615176 5694424 -1615200 5695576 1615376 5695816 1615176 5694424 1615056 5695464 -1614952 5694368 1614856 5695400 1615176 5694424 1614688 5694072 -1615056 5695464 1615200 5695576 1615176 5694424 1614856 5695400 -1615512 5696024 1615632 5696264 1621936 5697864 1615176 5694424 -1621936 5697864 1622016 5697816 1615176 5694424 1615632 5696264 -1615512 5696024 1615632 5696264 1615176 5694424 1615376 5695816 -1615632 5696264 1615680 5696424 1621936 5697864 1615176 5694424 -1615176 5694424 1615352 5694448 1615488 5689328 1615416 5689384 -1615176 5694424 1623304 5696976 1615352 5694448 1615416 5689384 -1623304 5696976 1615352 5694448 1615176 5694424 1623272 5697000 -1615352 5694448 1615416 5689384 1615176 5694424 1623272 5697000 -1615352 5694448 1623304 5696976 1615488 5689328 1615416 5689384 -1623304 5696976 1615488 5689328 1615352 5694448 1623272 5697000 -1615488 5689328 1615352 5694448 1623304 5696976 1623376 5696968 -1615176 5694424 1615352 5694448 1615416 5689384 1614656 5694032 -1615352 5694448 1615488 5689328 1615416 5689384 1614656 5694032 -1615176 5694424 1623272 5697000 1615352 5694448 1614656 5694032 -1615416 5689384 1614112 5693480 1614656 5694032 1615352 5694448 -1615176 5694424 1615352 5694448 1614656 5694032 1614688 5694072 -1615176 5694424 1623272 5697000 1615352 5694448 1614688 5694072 -1615176 5694424 1615352 5694448 1614688 5694072 1614952 5694368 -1615352 5694448 1615416 5689384 1614656 5694032 1614688 5694072 -1615176 5694424 1622016 5697816 1623272 5697000 1615352 5694448 -1615176 5694424 1622016 5697816 1615352 5694448 1614688 5694072 -1623272 5697000 1623304 5696976 1615352 5694448 1622016 5697816 -1622016 5697816 1622080 5697800 1623272 5697000 1615352 5694448 -1615176 5694424 1621936 5697864 1622016 5697816 1615352 5694448 -1615176 5694424 1621936 5697864 1615352 5694448 1614688 5694072 -1615176 5694424 1615632 5696264 1621936 5697864 1615352 5694448 -1615176 5694424 1615632 5696264 1615352 5694448 1614688 5694072 -1621936 5697864 1621968 5697856 1622016 5697816 1615352 5694448 -1621936 5697864 1622016 5697816 1615352 5694448 1615632 5696264 -1622016 5697816 1623272 5697000 1615352 5694448 1621936 5697864 -1615632 5696264 1615680 5696424 1621936 5697864 1615352 5694448 -1615176 5694424 1615512 5696024 1615632 5696264 1615352 5694448 -1615176 5694424 1615512 5696024 1615352 5694448 1614688 5694072 -1615632 5696264 1621936 5697864 1615352 5694448 1615512 5696024 -1615176 5694424 1615376 5695816 1615512 5696024 1615352 5694448 -1615176 5694424 1615376 5695816 1615352 5694448 1614688 5694072 -1615176 5694424 1615200 5695576 1615376 5695816 1615352 5694448 -1615176 5694424 1615200 5695576 1615352 5694448 1614688 5694072 -1615176 5694424 1615056 5695464 1615200 5695576 1615352 5694448 -1615176 5694424 1615056 5695464 1615352 5694448 1614688 5694072 -1615376 5695816 1615512 5696024 1615352 5694448 1615200 5695576 -1615200 5695576 1615376 5695816 1615352 5694448 1615056 5695464 -1615176 5694424 1614856 5695400 1615056 5695464 1615352 5694448 -1615512 5696024 1615632 5696264 1615352 5694448 1615376 5695816 -1615352 5694448 1615440 5694472 1615488 5689328 1615416 5689384 -1615352 5694448 1615440 5694472 1615416 5689384 1614656 5694032 -1615440 5694472 1615488 5689328 1615416 5689384 1614656 5694032 -1615352 5694448 1623304 5696976 1615440 5694472 1614656 5694032 -1623304 5696976 1615440 5694472 1615352 5694448 1623272 5697000 -1615352 5694448 1622016 5697816 1623272 5697000 1615440 5694472 -1615440 5694472 1614656 5694032 1615352 5694448 1622016 5697816 -1623272 5697000 1623304 5696976 1615440 5694472 1622016 5697816 -1615440 5694472 1623304 5696976 1615488 5689328 1615416 5689384 -1623304 5696976 1615488 5689328 1615440 5694472 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1615440 5694472 -1615488 5689328 1615440 5694472 1623304 5696976 1623376 5696968 -1615416 5689384 1614112 5693480 1614656 5694032 1615440 5694472 -1615352 5694448 1615440 5694472 1614656 5694032 1614688 5694072 -1615352 5694448 1621936 5697864 1622016 5697816 1615440 5694472 -1622016 5697816 1623272 5697000 1615440 5694472 1621936 5697864 -1615352 5694448 1621936 5697864 1615440 5694472 1614656 5694032 -1621936 5697864 1621968 5697856 1622016 5697816 1615440 5694472 -1615352 5694448 1615632 5696264 1621936 5697864 1615440 5694472 -1615352 5694448 1615632 5696264 1615440 5694472 1614656 5694032 -1615352 5694448 1615512 5696024 1615632 5696264 1615440 5694472 -1615352 5694448 1615512 5696024 1615440 5694472 1614656 5694032 -1615632 5696264 1621936 5697864 1615440 5694472 1615512 5696024 -1621936 5697864 1622016 5697816 1615440 5694472 1615632 5696264 -1615632 5696264 1615680 5696424 1621936 5697864 1615440 5694472 -1615352 5694448 1615376 5695816 1615512 5696024 1615440 5694472 -1615352 5694448 1615376 5695816 1615440 5694472 1614656 5694032 -1615512 5696024 1615632 5696264 1615440 5694472 1615376 5695816 -1615352 5694448 1615200 5695576 1615376 5695816 1615440 5694472 -1615352 5694448 1615200 5695576 1615440 5694472 1614656 5694032 -1615352 5694448 1615056 5695464 1615200 5695576 1615440 5694472 -1615352 5694448 1615056 5695464 1615440 5694472 1614656 5694032 -1615352 5694448 1615176 5694424 1615056 5695464 1615440 5694472 -1615200 5695576 1615376 5695816 1615440 5694472 1615056 5695464 -1615376 5695816 1615512 5696024 1615440 5694472 1615200 5695576 -1615440 5694472 1615584 5694488 1615488 5689328 1615416 5689384 -1615440 5694472 1615584 5694488 1615416 5689384 1614656 5694032 -1615440 5694472 1615584 5694488 1614656 5694032 1615352 5694448 -1615584 5694488 1615416 5689384 1614656 5694032 1615352 5694448 -1615584 5694488 1615488 5689328 1615416 5689384 1614656 5694032 -1615440 5694472 1623304 5696976 1615584 5694488 1615352 5694448 -1623304 5696976 1615584 5694488 1615440 5694472 1623272 5697000 -1615440 5694472 1622016 5697816 1623272 5697000 1615584 5694488 -1615440 5694472 1621936 5697864 1622016 5697816 1615584 5694488 -1622016 5697816 1623272 5697000 1615584 5694488 1621936 5697864 -1615584 5694488 1615352 5694448 1615440 5694472 1621936 5697864 -1623272 5697000 1623304 5696976 1615584 5694488 1622016 5697816 -1615584 5694488 1623304 5696976 1615488 5689328 1615416 5689384 -1623304 5696976 1615488 5689328 1615584 5694488 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1615584 5694488 -1621936 5697864 1621968 5697856 1622016 5697816 1615584 5694488 -1615488 5689328 1615584 5694488 1623304 5696976 1623376 5696968 -1615416 5689384 1614112 5693480 1614656 5694032 1615584 5694488 -1614656 5694032 1614688 5694072 1615352 5694448 1615584 5694488 -1615440 5694472 1615632 5696264 1621936 5697864 1615584 5694488 -1621936 5697864 1622016 5697816 1615584 5694488 1615632 5696264 -1615440 5694472 1615632 5696264 1615584 5694488 1615352 5694448 -1615440 5694472 1615512 5696024 1615632 5696264 1615584 5694488 -1615440 5694472 1615512 5696024 1615584 5694488 1615352 5694448 -1615440 5694472 1615376 5695816 1615512 5696024 1615584 5694488 -1615440 5694472 1615376 5695816 1615584 5694488 1615352 5694448 -1615512 5696024 1615632 5696264 1615584 5694488 1615376 5695816 -1615632 5696264 1621936 5697864 1615584 5694488 1615512 5696024 -1615632 5696264 1615680 5696424 1621936 5697864 1615584 5694488 -1615680 5696424 1615696 5696632 1621936 5697864 1615584 5694488 -1621936 5697864 1622016 5697816 1615584 5694488 1615680 5696424 -1615632 5696264 1615680 5696424 1615584 5694488 1615512 5696024 -1615440 5694472 1615200 5695576 1615376 5695816 1615584 5694488 -1615440 5694472 1615200 5695576 1615584 5694488 1615352 5694448 -1615376 5695816 1615512 5696024 1615584 5694488 1615200 5695576 -1615440 5694472 1615056 5695464 1615200 5695576 1615584 5694488 -1615440 5694472 1615056 5695464 1615584 5694488 1615352 5694448 -1615440 5694472 1615352 5694448 1615056 5695464 1615584 5694488 -1615200 5695576 1615376 5695816 1615584 5694488 1615056 5695464 -1615584 5694488 1615928 5694560 1615488 5689328 1615416 5689384 -1615584 5694488 1615928 5694560 1615416 5689384 1614656 5694032 -1615584 5694488 1623304 5696976 1615928 5694560 1615416 5689384 -1623304 5696976 1615928 5694560 1615584 5694488 1623272 5697000 -1615584 5694488 1622016 5697816 1623272 5697000 1615928 5694560 -1615584 5694488 1621936 5697864 1622016 5697816 1615928 5694560 -1615584 5694488 1615680 5696424 1621936 5697864 1615928 5694560 -1615680 5696424 1615696 5696632 1621936 5697864 1615928 5694560 -1621936 5697864 1622016 5697816 1615928 5694560 1615680 5696424 -1622016 5697816 1623272 5697000 1615928 5694560 1621936 5697864 -1615928 5694560 1615416 5689384 1615584 5694488 1615680 5696424 -1623272 5697000 1623304 5696976 1615928 5694560 1622016 5697816 -1615928 5694560 1623304 5696976 1615488 5689328 1615416 5689384 -1623304 5696976 1615488 5689328 1615928 5694560 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1615928 5694560 -1621936 5697864 1621968 5697856 1622016 5697816 1615928 5694560 -1615488 5689328 1615928 5694560 1623304 5696976 1623376 5696968 -1615584 5694488 1615632 5696264 1615680 5696424 1615928 5694560 -1615680 5696424 1621936 5697864 1615928 5694560 1615632 5696264 -1615584 5694488 1615632 5696264 1615928 5694560 1615416 5689384 -1615584 5694488 1615512 5696024 1615632 5696264 1615928 5694560 -1615584 5694488 1615512 5696024 1615928 5694560 1615416 5689384 -1615584 5694488 1615376 5695816 1615512 5696024 1615928 5694560 -1615584 5694488 1615376 5695816 1615928 5694560 1615416 5689384 -1615584 5694488 1615200 5695576 1615376 5695816 1615928 5694560 -1615584 5694488 1615200 5695576 1615928 5694560 1615416 5689384 -1615376 5695816 1615512 5696024 1615928 5694560 1615200 5695576 -1615512 5696024 1615632 5696264 1615928 5694560 1615376 5695816 -1615632 5696264 1615680 5696424 1615928 5694560 1615512 5696024 -1615584 5694488 1615056 5695464 1615200 5695576 1615928 5694560 -1615928 5694560 1615968 5694560 1615488 5689328 1615416 5689384 -1615928 5694560 1615968 5694560 1615416 5689384 1615584 5694488 -1615416 5689384 1614656 5694032 1615584 5694488 1615968 5694560 -1614656 5694032 1615352 5694448 1615584 5694488 1615968 5694560 -1615584 5694488 1615928 5694560 1615968 5694560 1614656 5694032 -1615968 5694560 1615488 5689328 1615416 5689384 1614656 5694032 -1615928 5694560 1623304 5696976 1615968 5694560 1615584 5694488 -1623304 5696976 1615968 5694560 1615928 5694560 1623272 5697000 -1615928 5694560 1622016 5697816 1623272 5697000 1615968 5694560 -1615928 5694560 1621936 5697864 1622016 5697816 1615968 5694560 -1615928 5694560 1615680 5696424 1621936 5697864 1615968 5694560 -1615680 5696424 1615696 5696632 1621936 5697864 1615968 5694560 -1615928 5694560 1615632 5696264 1615680 5696424 1615968 5694560 -1615680 5696424 1621936 5697864 1615968 5694560 1615632 5696264 -1621936 5697864 1622016 5697816 1615968 5694560 1615680 5696424 -1622016 5697816 1623272 5697000 1615968 5694560 1621936 5697864 -1615968 5694560 1615584 5694488 1615928 5694560 1615632 5696264 -1623272 5697000 1623304 5696976 1615968 5694560 1622016 5697816 -1615968 5694560 1623304 5696976 1615488 5689328 1615416 5689384 -1623304 5696976 1615488 5689328 1615968 5694560 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1615968 5694560 -1621936 5697864 1621968 5697856 1622016 5697816 1615968 5694560 -1615488 5689328 1615968 5694560 1623304 5696976 1623376 5696968 -1615416 5689384 1614112 5693480 1614656 5694032 1615968 5694560 -1615928 5694560 1615512 5696024 1615632 5696264 1615968 5694560 -1615632 5696264 1615680 5696424 1615968 5694560 1615512 5696024 -1615928 5694560 1615512 5696024 1615968 5694560 1615584 5694488 -1615928 5694560 1615376 5695816 1615512 5696024 1615968 5694560 -1615928 5694560 1615376 5695816 1615968 5694560 1615584 5694488 -1615928 5694560 1615200 5695576 1615376 5695816 1615968 5694560 -1615512 5696024 1615632 5696264 1615968 5694560 1615376 5695816 -1621936 5697864 1616248 5694736 1615680 5696424 1615696 5696632 -1615680 5696424 1616248 5694736 1615968 5694560 1615632 5696264 -1615968 5694560 1615512 5696024 1615632 5696264 1616248 5694736 -1615632 5696264 1615680 5696424 1616248 5694736 1615512 5696024 -1615968 5694560 1616248 5694736 1621936 5697864 1622016 5697816 -1615968 5694560 1616248 5694736 1622016 5697816 1623272 5697000 -1616248 5694736 1621936 5697864 1622016 5697816 1623272 5697000 -1615968 5694560 1616248 5694736 1623272 5697000 1623304 5696976 -1616248 5694736 1622016 5697816 1623272 5697000 1623304 5696976 -1616248 5694736 1623304 5696976 1615968 5694560 1615512 5696024 -1615968 5694560 1616248 5694736 1623304 5696976 1615488 5689328 -1616248 5694736 1623272 5697000 1623304 5696976 1615488 5689328 -1615968 5694560 1616248 5694736 1615488 5689328 1615416 5689384 -1615968 5694560 1615512 5696024 1616248 5694736 1615488 5689328 -1621936 5697864 1622016 5697816 1616248 5694736 1615696 5696632 -1616248 5694736 1615632 5696264 1615680 5696424 1615696 5696632 -1622016 5697816 1622080 5697800 1623272 5697000 1616248 5694736 -1621936 5697864 1621968 5697856 1622016 5697816 1616248 5694736 -1623304 5696976 1623376 5696968 1615488 5689328 1616248 5694736 -1615968 5694560 1615376 5695816 1615512 5696024 1616248 5694736 -1615512 5696024 1615632 5696264 1616248 5694736 1615376 5695816 -1615968 5694560 1615376 5695816 1616248 5694736 1615488 5689328 -1615968 5694560 1615928 5694560 1615376 5695816 1616248 5694736 -1615968 5694560 1615928 5694560 1616248 5694736 1615488 5689328 -1615928 5694560 1615200 5695576 1615376 5695816 1616248 5694736 -1615928 5694560 1615584 5694488 1615200 5695576 1616248 5694736 -1615928 5694560 1615200 5695576 1616248 5694736 1615968 5694560 -1615376 5695816 1615512 5696024 1616248 5694736 1615200 5695576 -1621936 5697864 1616248 5694736 1615696 5696632 1616624 5698656 -1621936 5697864 1616248 5694736 1616624 5698656 1621944 5698008 -1616248 5694736 1615680 5696424 1615696 5696632 1616624 5698656 -1621936 5697864 1622016 5697816 1616248 5694736 1616624 5698656 -1615696 5696632 1616592 5698624 1616624 5698656 1616248 5694736 -1615696 5696632 1616592 5698624 1616248 5694736 1615680 5696424 -1615696 5696632 1616528 5698576 1616592 5698624 1616248 5694736 -1616624 5698656 1621936 5697864 1616248 5694736 1616592 5698624 -1621936 5697864 1616264 5694760 1616624 5698656 1621944 5698008 -1616248 5694736 1616264 5694760 1621936 5697864 1622016 5697816 -1616248 5694736 1616264 5694760 1622016 5697816 1623272 5697000 -1616248 5694736 1616264 5694760 1623272 5697000 1623304 5696976 -1616264 5694760 1622016 5697816 1623272 5697000 1623304 5696976 -1616248 5694736 1616264 5694760 1623304 5696976 1615488 5689328 -1616264 5694760 1621936 5697864 1622016 5697816 1623272 5697000 -1616248 5694736 1616624 5698656 1616264 5694760 1623304 5696976 -1616264 5694760 1616624 5698656 1621936 5697864 1622016 5697816 -1622016 5697816 1622080 5697800 1623272 5697000 1616264 5694760 -1621936 5697864 1621968 5697856 1622016 5697816 1616264 5694760 -1616624 5698656 1616264 5694760 1616248 5694736 1616592 5698624 -1616264 5694760 1623304 5696976 1616248 5694736 1616592 5698624 -1616624 5698656 1621936 5697864 1616264 5694760 1616592 5698624 -1616248 5694736 1615696 5696632 1616592 5698624 1616264 5694760 -1616248 5694736 1615680 5696424 1615696 5696632 1616264 5694760 -1616248 5694736 1615680 5696424 1616264 5694760 1623304 5696976 -1616248 5694736 1615632 5696264 1615680 5696424 1616264 5694760 -1615680 5696424 1615696 5696632 1616264 5694760 1615632 5696264 -1616248 5694736 1615512 5696024 1615632 5696264 1616264 5694760 -1616248 5694736 1615376 5695816 1615512 5696024 1616264 5694760 -1615512 5696024 1615632 5696264 1616264 5694760 1615376 5695816 -1616248 5694736 1615376 5695816 1616264 5694760 1623304 5696976 -1615632 5696264 1615680 5696424 1616264 5694760 1615512 5696024 -1615696 5696632 1616528 5698576 1616592 5698624 1616264 5694760 -1615696 5696632 1616592 5698624 1616264 5694760 1615680 5696424 -1616248 5694736 1615200 5695576 1615376 5695816 1616264 5694760 -1615376 5695816 1615512 5696024 1616264 5694760 1615200 5695576 -1616248 5694736 1615200 5695576 1616264 5694760 1623304 5696976 -1616248 5694736 1615928 5694560 1615200 5695576 1616264 5694760 -1616248 5694736 1615928 5694560 1616264 5694760 1623304 5696976 -1615928 5694560 1615584 5694488 1615200 5695576 1616264 5694760 -1616248 5694736 1615968 5694560 1615928 5694560 1616264 5694760 -1615200 5695576 1615376 5695816 1616264 5694760 1615928 5694560 -1616592 5698624 1616624 5698656 1616264 5694760 1615696 5696632 -1621936 5697864 1616368 5694832 1616624 5698656 1621944 5698008 -1616264 5694760 1616368 5694832 1621936 5697864 1622016 5697816 -1616264 5694760 1616368 5694832 1622016 5697816 1623272 5697000 -1616264 5694760 1616368 5694832 1623272 5697000 1623304 5696976 -1616264 5694760 1616368 5694832 1623304 5696976 1616248 5694736 -1616368 5694832 1623272 5697000 1623304 5696976 1616248 5694736 -1623304 5696976 1615488 5689328 1616248 5694736 1616368 5694832 -1623304 5696976 1615488 5689328 1616368 5694832 1623272 5697000 -1616248 5694736 1616264 5694760 1616368 5694832 1615488 5689328 -1615488 5689328 1615968 5694560 1616248 5694736 1616368 5694832 -1616368 5694832 1622016 5697816 1623272 5697000 1623304 5696976 -1616368 5694832 1621936 5697864 1622016 5697816 1623272 5697000 -1616264 5694760 1616624 5698656 1616368 5694832 1616248 5694736 -1616624 5698656 1616368 5694832 1616264 5694760 1616592 5698624 -1616368 5694832 1616248 5694736 1616264 5694760 1616592 5698624 -1616368 5694832 1616624 5698656 1621936 5697864 1622016 5697816 -1616624 5698656 1621936 5697864 1616368 5694832 1616592 5698624 -1622016 5697816 1622080 5697800 1623272 5697000 1616368 5694832 -1621936 5697864 1621968 5697856 1622016 5697816 1616368 5694832 -1623304 5696976 1623376 5696968 1615488 5689328 1616368 5694832 -1616264 5694760 1615696 5696632 1616592 5698624 1616368 5694832 -1616264 5694760 1615696 5696632 1616368 5694832 1616248 5694736 -1616592 5698624 1616624 5698656 1616368 5694832 1615696 5696632 -1615696 5696632 1616528 5698576 1616592 5698624 1616368 5694832 -1616264 5694760 1615680 5696424 1615696 5696632 1616368 5694832 -1616264 5694760 1615632 5696264 1615680 5696424 1616368 5694832 -1616264 5694760 1615512 5696024 1615632 5696264 1616368 5694832 -1615632 5696264 1615680 5696424 1616368 5694832 1615512 5696024 -1616264 5694760 1615376 5695816 1615512 5696024 1616368 5694832 -1616264 5694760 1615200 5695576 1615376 5695816 1616368 5694832 -1615512 5696024 1615632 5696264 1616368 5694832 1615376 5695816 -1616264 5694760 1615376 5695816 1616368 5694832 1616248 5694736 -1615680 5696424 1615696 5696632 1616368 5694832 1615632 5696264 -1615696 5696632 1616592 5698624 1616368 5694832 1615680 5696424 -1616368 5694832 1616496 5694888 1623272 5697000 1623304 5696976 -1616368 5694832 1616496 5694888 1623304 5696976 1615488 5689328 -1616368 5694832 1616496 5694888 1615488 5689328 1616248 5694736 -1616496 5694888 1623304 5696976 1615488 5689328 1616248 5694736 -1616368 5694832 1616496 5694888 1616248 5694736 1616264 5694760 -1615488 5689328 1615968 5694560 1616248 5694736 1616496 5694888 -1616496 5694888 1623272 5697000 1623304 5696976 1615488 5689328 -1622016 5697816 1616496 5694888 1616368 5694832 1621936 5697864 -1616368 5694832 1616624 5698656 1621936 5697864 1616496 5694888 -1616624 5698656 1621944 5698008 1621936 5697864 1616496 5694888 -1621936 5697864 1622016 5697816 1616496 5694888 1616624 5698656 -1616368 5694832 1616624 5698656 1616496 5694888 1616248 5694736 -1616368 5694832 1616592 5698624 1616624 5698656 1616496 5694888 -1616368 5694832 1615696 5696632 1616592 5698624 1616496 5694888 -1616624 5698656 1621936 5697864 1616496 5694888 1616592 5698624 -1616368 5694832 1615696 5696632 1616496 5694888 1616248 5694736 -1616592 5698624 1616624 5698656 1616496 5694888 1615696 5696632 -1616496 5694888 1622016 5697816 1623272 5697000 1623304 5696976 -1622016 5697816 1623272 5697000 1616496 5694888 1621936 5697864 -1623272 5697000 1616496 5694888 1622016 5697816 1622080 5697800 -1622016 5697816 1616496 5694888 1621936 5697864 1621968 5697856 -1623304 5696976 1623376 5696968 1615488 5689328 1616496 5694888 -1615696 5696632 1616528 5698576 1616592 5698624 1616496 5694888 -1616368 5694832 1615680 5696424 1615696 5696632 1616496 5694888 -1615696 5696632 1616592 5698624 1616496 5694888 1615680 5696424 -1616368 5694832 1615680 5696424 1616496 5694888 1616248 5694736 -1616368 5694832 1615632 5696264 1615680 5696424 1616496 5694888 -1616368 5694832 1615512 5696024 1615632 5696264 1616496 5694888 -1616368 5694832 1615376 5695816 1615512 5696024 1616496 5694888 -1616368 5694832 1615512 5696024 1616496 5694888 1616248 5694736 -1615632 5696264 1615680 5696424 1616496 5694888 1615512 5696024 -1615680 5696424 1615696 5696632 1616496 5694888 1615632 5696264 -1616496 5694888 1616584 5694912 1615488 5689328 1616248 5694736 -1616496 5694888 1616584 5694912 1616248 5694736 1616368 5694832 -1615488 5689328 1615968 5694560 1616248 5694736 1616584 5694912 -1623304 5696976 1616584 5694912 1616496 5694888 1623272 5697000 -1616496 5694888 1622016 5697816 1623272 5697000 1616584 5694912 -1623272 5697000 1623304 5696976 1616584 5694912 1622016 5697816 -1616496 5694888 1622016 5697816 1616584 5694912 1616248 5694736 -1616496 5694888 1621936 5697864 1622016 5697816 1616584 5694912 -1616496 5694888 1616624 5698656 1621936 5697864 1616584 5694912 -1616624 5698656 1621944 5698008 1621936 5697864 1616584 5694912 -1616496 5694888 1616592 5698624 1616624 5698656 1616584 5694912 -1616624 5698656 1621936 5697864 1616584 5694912 1616592 5698624 -1616496 5694888 1615696 5696632 1616592 5698624 1616584 5694912 -1616496 5694888 1615680 5696424 1615696 5696632 1616584 5694912 -1616592 5698624 1616624 5698656 1616584 5694912 1615696 5696632 -1615696 5696632 1616592 5698624 1616584 5694912 1615680 5696424 -1622016 5697816 1623272 5697000 1616584 5694912 1621936 5697864 -1616496 5694888 1615680 5696424 1616584 5694912 1616248 5694736 -1621936 5697864 1622016 5697816 1616584 5694912 1616624 5698656 -1616584 5694912 1623304 5696976 1615488 5689328 1616248 5694736 -1623304 5696976 1615488 5689328 1616584 5694912 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1616584 5694912 -1621936 5697864 1621968 5697856 1622016 5697816 1616584 5694912 -1615488 5689328 1616584 5694912 1623304 5696976 1623376 5696968 -1615696 5696632 1616528 5698576 1616592 5698624 1616584 5694912 -1616496 5694888 1615632 5696264 1615680 5696424 1616584 5694912 -1615680 5696424 1615696 5696632 1616584 5694912 1615632 5696264 -1616496 5694888 1615632 5696264 1616584 5694912 1616248 5694736 -1616496 5694888 1615512 5696024 1615632 5696264 1616584 5694912 -1616496 5694888 1616368 5694832 1615512 5696024 1616584 5694912 -1616496 5694888 1615512 5696024 1616584 5694912 1616248 5694736 -1615632 5696264 1615680 5696424 1616584 5694912 1615512 5696024 -1616584 5694912 1616664 5694952 1623272 5697000 1623304 5696976 -1622016 5697816 1616664 5694952 1616584 5694912 1621936 5697864 -1616584 5694912 1616624 5698656 1621936 5697864 1616664 5694952 -1616624 5698656 1621944 5698008 1621936 5697864 1616664 5694952 -1616584 5694912 1616592 5698624 1616624 5698656 1616664 5694952 -1616584 5694912 1615696 5696632 1616592 5698624 1616664 5694952 -1616592 5698624 1616624 5698656 1616664 5694952 1615696 5696632 -1616584 5694912 1615680 5696424 1615696 5696632 1616664 5694952 -1616584 5694912 1615632 5696264 1615680 5696424 1616664 5694952 -1615696 5696632 1616592 5698624 1616664 5694952 1615680 5696424 -1615680 5696424 1615696 5696632 1616664 5694952 1615632 5696264 -1621936 5697864 1622016 5697816 1616664 5694952 1616624 5698656 -1616624 5698656 1621936 5697864 1616664 5694952 1616592 5698624 -1616584 5694912 1615632 5696264 1616664 5694952 1623304 5696976 -1616584 5694912 1616664 5694952 1623304 5696976 1615488 5689328 -1616664 5694952 1623272 5697000 1623304 5696976 1615488 5689328 -1616584 5694912 1616664 5694952 1615488 5689328 1616248 5694736 -1616584 5694912 1615632 5696264 1616664 5694952 1615488 5689328 -1616664 5694952 1622016 5697816 1623272 5697000 1623304 5696976 -1622016 5697816 1623272 5697000 1616664 5694952 1621936 5697864 -1623272 5697000 1616664 5694952 1622016 5697816 1622080 5697800 -1622016 5697816 1616664 5694952 1621936 5697864 1621968 5697856 -1623304 5696976 1623376 5696968 1615488 5689328 1616664 5694952 -1615696 5696632 1616528 5698576 1616592 5698624 1616664 5694952 -1616584 5694912 1615512 5696024 1615632 5696264 1616664 5694952 -1615632 5696264 1615680 5696424 1616664 5694952 1615512 5696024 -1616584 5694912 1615512 5696024 1616664 5694952 1615488 5689328 -1616584 5694912 1616496 5694888 1615512 5696024 1616664 5694952 -1616496 5694888 1616368 5694832 1615512 5696024 1616664 5694952 -1616584 5694912 1616496 5694888 1616664 5694952 1615488 5689328 -1615512 5696024 1615632 5696264 1616664 5694952 1616496 5694888 -1621936 5697864 1616824 5695056 1616624 5698656 1621944 5698008 -1616664 5694952 1616824 5695056 1621936 5697864 1622016 5697816 -1616624 5698656 1616824 5695056 1616664 5694952 1616592 5698624 -1616664 5694952 1615696 5696632 1616592 5698624 1616824 5695056 -1616664 5694952 1615680 5696424 1615696 5696632 1616824 5695056 -1615696 5696632 1616592 5698624 1616824 5695056 1615680 5696424 -1616664 5694952 1615632 5696264 1615680 5696424 1616824 5695056 -1616664 5694952 1615512 5696024 1615632 5696264 1616824 5695056 -1615680 5696424 1615696 5696632 1616824 5695056 1615632 5696264 -1615632 5696264 1615680 5696424 1616824 5695056 1615512 5696024 -1616592 5698624 1616624 5698656 1616824 5695056 1615696 5696632 -1616664 5694952 1615512 5696024 1616824 5695056 1622016 5697816 -1616664 5694952 1616824 5695056 1622016 5697816 1623272 5697000 -1616824 5695056 1621936 5697864 1622016 5697816 1623272 5697000 -1616664 5694952 1616824 5695056 1623272 5697000 1623304 5696976 -1616664 5694952 1616824 5695056 1623304 5696976 1615488 5689328 -1616664 5694952 1616824 5695056 1615488 5689328 1616584 5694912 -1616824 5695056 1623272 5697000 1623304 5696976 1615488 5689328 -1616664 5694952 1615512 5696024 1616824 5695056 1615488 5689328 -1616824 5695056 1622016 5697816 1623272 5697000 1623304 5696976 -1616824 5695056 1616624 5698656 1621936 5697864 1622016 5697816 -1616624 5698656 1621936 5697864 1616824 5695056 1616592 5698624 -1622016 5697816 1622080 5697800 1623272 5697000 1616824 5695056 -1621936 5697864 1621968 5697856 1622016 5697816 1616824 5695056 -1623304 5696976 1623376 5696968 1615488 5689328 1616824 5695056 -1615696 5696632 1616528 5698576 1616592 5698624 1616824 5695056 -1615696 5696632 1616528 5698576 1616824 5695056 1615680 5696424 -1616592 5698624 1616624 5698656 1616824 5695056 1616528 5698576 -1616528 5698576 1616560 5698616 1616592 5698624 1616824 5695056 -1615696 5696632 1615648 5697056 1616528 5698576 1616824 5695056 -1616664 5694952 1616496 5694888 1615512 5696024 1616824 5695056 -1621936 5697864 1617016 5695184 1616624 5698656 1621944 5698008 -1616824 5695056 1617016 5695184 1621936 5697864 1622016 5697816 -1616824 5695056 1617016 5695184 1622016 5697816 1623272 5697000 -1616824 5695056 1617016 5695184 1623272 5697000 1623304 5696976 -1617016 5695184 1622016 5697816 1623272 5697000 1623304 5696976 -1616824 5695056 1617016 5695184 1623304 5696976 1615488 5689328 -1616824 5695056 1617016 5695184 1615488 5689328 1616664 5694952 -1617016 5695184 1623272 5697000 1623304 5696976 1615488 5689328 -1617016 5695184 1621936 5697864 1622016 5697816 1623272 5697000 -1616824 5695056 1616624 5698656 1617016 5695184 1615488 5689328 -1616624 5698656 1617016 5695184 1616824 5695056 1616592 5698624 -1616824 5695056 1616528 5698576 1616592 5698624 1617016 5695184 -1617016 5695184 1615488 5689328 1616824 5695056 1616528 5698576 -1616592 5698624 1616624 5698656 1617016 5695184 1616528 5698576 -1617016 5695184 1616624 5698656 1621936 5697864 1622016 5697816 -1616624 5698656 1621936 5697864 1617016 5695184 1616592 5698624 -1622016 5697816 1622080 5697800 1623272 5697000 1617016 5695184 -1621936 5697864 1621968 5697856 1622016 5697816 1617016 5695184 -1623304 5696976 1623376 5696968 1615488 5689328 1617016 5695184 -1616528 5698576 1616560 5698616 1616592 5698624 1617016 5695184 -1616824 5695056 1615696 5696632 1616528 5698576 1617016 5695184 -1616824 5695056 1615680 5696424 1615696 5696632 1617016 5695184 -1616824 5695056 1615632 5696264 1615680 5696424 1617016 5695184 -1615680 5696424 1615696 5696632 1617016 5695184 1615632 5696264 -1616824 5695056 1615512 5696024 1615632 5696264 1617016 5695184 -1616528 5698576 1616592 5698624 1617016 5695184 1615696 5696632 -1616824 5695056 1615632 5696264 1617016 5695184 1615488 5689328 -1615696 5696632 1615648 5697056 1616528 5698576 1617016 5695184 -1615696 5696632 1616528 5698576 1617016 5695184 1615680 5696424 -1621936 5697864 1617104 5695232 1616624 5698656 1621944 5698008 -1617016 5695184 1617104 5695232 1621936 5697864 1622016 5697816 -1617016 5695184 1617104 5695232 1622016 5697816 1623272 5697000 -1617016 5695184 1617104 5695232 1623272 5697000 1623304 5696976 -1617016 5695184 1617104 5695232 1623304 5696976 1615488 5689328 -1617104 5695232 1623272 5697000 1623304 5696976 1615488 5689328 -1617016 5695184 1617104 5695232 1615488 5689328 1616824 5695056 -1615488 5689328 1616664 5694952 1616824 5695056 1617104 5695232 -1617104 5695232 1623304 5696976 1615488 5689328 1616824 5695056 -1617104 5695232 1622016 5697816 1623272 5697000 1623304 5696976 -1617104 5695232 1621936 5697864 1622016 5697816 1623272 5697000 -1617016 5695184 1616624 5698656 1617104 5695232 1616824 5695056 -1616624 5698656 1617104 5695232 1617016 5695184 1616592 5698624 -1617016 5695184 1616528 5698576 1616592 5698624 1617104 5695232 -1617016 5695184 1615696 5696632 1616528 5698576 1617104 5695232 -1616528 5698576 1616592 5698624 1617104 5695232 1615696 5696632 -1617104 5695232 1616824 5695056 1617016 5695184 1615696 5696632 -1616592 5698624 1616624 5698656 1617104 5695232 1616528 5698576 -1617104 5695232 1616624 5698656 1621936 5697864 1622016 5697816 -1616624 5698656 1621936 5697864 1617104 5695232 1616592 5698624 -1622016 5697816 1622080 5697800 1623272 5697000 1617104 5695232 -1621936 5697864 1621968 5697856 1622016 5697816 1617104 5695232 -1623304 5696976 1623376 5696968 1615488 5689328 1617104 5695232 -1616528 5698576 1616560 5698616 1616592 5698624 1617104 5695232 -1615696 5696632 1615648 5697056 1616528 5698576 1617104 5695232 -1617016 5695184 1615680 5696424 1615696 5696632 1617104 5695232 -1617016 5695184 1615632 5696264 1615680 5696424 1617104 5695232 -1615696 5696632 1616528 5698576 1617104 5695232 1615680 5696424 -1617016 5695184 1615680 5696424 1617104 5695232 1616824 5695056 -1621936 5697864 1617304 5695352 1616624 5698656 1621944 5698008 -1617104 5695232 1617304 5695352 1621936 5697864 1622016 5697816 -1617104 5695232 1617304 5695352 1622016 5697816 1623272 5697000 -1617104 5695232 1617304 5695352 1623272 5697000 1623304 5696976 -1617104 5695232 1617304 5695352 1623304 5696976 1615488 5689328 -1617104 5695232 1617304 5695352 1615488 5689328 1616824 5695056 -1617304 5695352 1623272 5697000 1623304 5696976 1615488 5689328 -1617304 5695352 1622016 5697816 1623272 5697000 1623304 5696976 -1617304 5695352 1621936 5697864 1622016 5697816 1623272 5697000 -1617104 5695232 1616624 5698656 1617304 5695352 1615488 5689328 -1616624 5698656 1617304 5695352 1617104 5695232 1616592 5698624 -1617104 5695232 1616528 5698576 1616592 5698624 1617304 5695352 -1617104 5695232 1615696 5696632 1616528 5698576 1617304 5695352 -1617104 5695232 1615680 5696424 1615696 5696632 1617304 5695352 -1615696 5696632 1616528 5698576 1617304 5695352 1615680 5696424 -1616528 5698576 1616592 5698624 1617304 5695352 1615696 5696632 -1617304 5695352 1615488 5689328 1617104 5695232 1615680 5696424 -1616592 5698624 1616624 5698656 1617304 5695352 1616528 5698576 -1616624 5698656 1621936 5697864 1617304 5695352 1616592 5698624 -1617304 5695352 1616624 5698656 1621936 5697864 1622016 5697816 -1622016 5697816 1622080 5697800 1623272 5697000 1617304 5695352 -1621936 5697864 1621968 5697856 1622016 5697816 1617304 5695352 -1623304 5696976 1623376 5696968 1615488 5689328 1617304 5695352 -1616528 5698576 1616560 5698616 1616592 5698624 1617304 5695352 -1615696 5696632 1615648 5697056 1616528 5698576 1617304 5695352 -1615696 5696632 1615648 5697056 1617304 5695352 1615680 5696424 -1616528 5698576 1616592 5698624 1617304 5695352 1615648 5697056 -1615648 5697056 1616456 5698536 1616528 5698576 1617304 5695352 -1617104 5695232 1617016 5695184 1615680 5696424 1617304 5695352 -1621936 5697864 1617336 5695448 1616624 5698656 1621944 5698008 -1616624 5698656 1617336 5695448 1617304 5695352 1616592 5698624 -1617304 5695352 1616528 5698576 1616592 5698624 1617336 5695448 -1617304 5695352 1615648 5697056 1616528 5698576 1617336 5695448 -1616528 5698576 1616592 5698624 1617336 5695448 1615648 5697056 -1617336 5695448 1621936 5697864 1617304 5695352 1615648 5697056 -1616592 5698624 1616624 5698656 1617336 5695448 1616528 5698576 -1616624 5698656 1621936 5697864 1617336 5695448 1616592 5698624 -1617304 5695352 1617336 5695448 1621936 5697864 1622016 5697816 -1617304 5695352 1617336 5695448 1622016 5697816 1623272 5697000 -1617304 5695352 1617336 5695448 1623272 5697000 1623304 5696976 -1617304 5695352 1615648 5697056 1617336 5695448 1623272 5697000 -1617336 5695448 1616624 5698656 1621936 5697864 1622016 5697816 -1617336 5695448 1621936 5697864 1622016 5697816 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1617336 5695448 -1621936 5697864 1621968 5697856 1622016 5697816 1617336 5695448 -1615648 5697056 1616456 5698536 1616528 5698576 1617336 5695448 -1616528 5698576 1616560 5698616 1616592 5698624 1617336 5695448 -1617304 5695352 1615696 5696632 1615648 5697056 1617336 5695448 -1617304 5695352 1615680 5696424 1615696 5696632 1617336 5695448 -1617304 5695352 1617104 5695232 1615680 5696424 1617336 5695448 -1615680 5696424 1615696 5696632 1617336 5695448 1617104 5695232 -1615648 5697056 1616528 5698576 1617336 5695448 1615696 5696632 -1617304 5695352 1617104 5695232 1617336 5695448 1623272 5697000 -1615696 5696632 1615648 5697056 1617336 5695448 1615680 5696424 -1617104 5695232 1617016 5695184 1615680 5696424 1617336 5695448 -1617016 5695184 1615632 5696264 1615680 5696424 1617336 5695448 -1617016 5695184 1616824 5695056 1615632 5696264 1617336 5695448 -1617104 5695232 1617016 5695184 1617336 5695448 1617304 5695352 -1615680 5696424 1615696 5696632 1617336 5695448 1615632 5696264 -1617016 5695184 1615632 5696264 1617336 5695448 1617104 5695232 -1621936 5697864 1617336 5695488 1616624 5698656 1621944 5698008 -1617336 5695448 1617336 5695488 1621936 5697864 1622016 5697816 -1616624 5698656 1617336 5695488 1617336 5695448 1616592 5698624 -1617336 5695488 1621936 5697864 1617336 5695448 1616592 5698624 -1616624 5698656 1621936 5697864 1617336 5695488 1616592 5698624 -1617336 5695448 1616528 5698576 1616592 5698624 1617336 5695488 -1617336 5695448 1616528 5698576 1617336 5695488 1621936 5697864 -1617336 5695448 1615648 5697056 1616528 5698576 1617336 5695488 -1617336 5695448 1615648 5697056 1617336 5695488 1621936 5697864 -1617336 5695448 1615696 5696632 1615648 5697056 1617336 5695488 -1617336 5695448 1615696 5696632 1617336 5695488 1621936 5697864 -1615648 5697056 1616528 5698576 1617336 5695488 1615696 5696632 -1616528 5698576 1616592 5698624 1617336 5695488 1615648 5697056 -1616592 5698624 1616624 5698656 1617336 5695488 1616528 5698576 -1615648 5697056 1616456 5698536 1616528 5698576 1617336 5695488 -1615648 5697056 1616456 5698536 1617336 5695488 1615696 5696632 -1616528 5698576 1616592 5698624 1617336 5695488 1616456 5698536 -1615648 5697056 1616392 5698520 1616456 5698536 1617336 5695488 -1616528 5698576 1616560 5698616 1616592 5698624 1617336 5695488 -1617336 5695448 1615680 5696424 1615696 5696632 1617336 5695488 -1617336 5695448 1615680 5696424 1617336 5695488 1621936 5697864 -1617336 5695448 1615632 5696264 1615680 5696424 1617336 5695488 -1617336 5695448 1615632 5696264 1617336 5695488 1621936 5697864 -1617336 5695448 1617016 5695184 1615632 5696264 1617336 5695488 -1617336 5695448 1617016 5695184 1617336 5695488 1621936 5697864 -1617016 5695184 1616824 5695056 1615632 5696264 1617336 5695488 -1615632 5696264 1615680 5696424 1617336 5695488 1617016 5695184 -1615696 5696632 1615648 5697056 1617336 5695488 1615680 5696424 -1615680 5696424 1615696 5696632 1617336 5695488 1615632 5696264 -1617336 5695448 1617104 5695232 1617016 5695184 1617336 5695488 -1617336 5695448 1617104 5695232 1617336 5695488 1621936 5697864 -1617016 5695184 1615632 5696264 1617336 5695488 1617104 5695232 -1617336 5695448 1617304 5695352 1617104 5695232 1617336 5695488 -1617336 5695448 1617304 5695352 1617336 5695488 1621936 5697864 -1617104 5695232 1617016 5695184 1617336 5695488 1617304 5695352 -1615648 5697056 1617288 5695576 1617336 5695488 1615696 5696632 -1617288 5695576 1616456 5698536 1617336 5695488 1615696 5696632 -1615648 5697056 1616456 5698536 1617288 5695576 1615696 5696632 -1617336 5695488 1615680 5696424 1615696 5696632 1617288 5695576 -1617336 5695488 1615680 5696424 1617288 5695576 1616456 5698536 -1615696 5696632 1615648 5697056 1617288 5695576 1615680 5696424 -1616456 5698536 1617288 5695576 1615648 5697056 1616392 5698520 -1617336 5695488 1617288 5695576 1616456 5698536 1616528 5698576 -1617336 5695488 1615680 5696424 1617288 5695576 1616528 5698576 -1617288 5695576 1615648 5697056 1616456 5698536 1616528 5698576 -1617336 5695488 1617288 5695576 1616528 5698576 1616592 5698624 -1617336 5695488 1615680 5696424 1617288 5695576 1616592 5698624 -1617336 5695488 1617288 5695576 1616592 5698624 1616624 5698656 -1617336 5695488 1615680 5696424 1617288 5695576 1616624 5698656 -1617336 5695488 1617288 5695576 1616624 5698656 1621936 5697864 -1616624 5698656 1621944 5698008 1621936 5697864 1617288 5695576 -1617336 5695488 1617288 5695576 1621936 5697864 1617336 5695448 -1617336 5695488 1615680 5696424 1617288 5695576 1621936 5697864 -1617288 5695576 1616528 5698576 1616592 5698624 1616624 5698656 -1617288 5695576 1616592 5698624 1616624 5698656 1621936 5697864 -1617288 5695576 1616456 5698536 1616528 5698576 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1617288 5695576 -1617336 5695488 1615632 5696264 1615680 5696424 1617288 5695576 -1617336 5695488 1615632 5696264 1617288 5695576 1621936 5697864 -1617336 5695488 1617016 5695184 1615632 5696264 1617288 5695576 -1617336 5695488 1617016 5695184 1617288 5695576 1621936 5697864 -1617336 5695488 1617104 5695232 1617016 5695184 1617288 5695576 -1617336 5695488 1617104 5695232 1617288 5695576 1621936 5697864 -1617016 5695184 1616824 5695056 1615632 5696264 1617288 5695576 -1617016 5695184 1615632 5696264 1617288 5695576 1617104 5695232 -1615680 5696424 1615696 5696632 1617288 5695576 1615632 5696264 -1615632 5696264 1615680 5696424 1617288 5695576 1617016 5695184 -1617336 5695488 1617304 5695352 1617104 5695232 1617288 5695576 -1617336 5695488 1617304 5695352 1617288 5695576 1621936 5697864 -1617104 5695232 1617016 5695184 1617288 5695576 1617304 5695352 -1617336 5695488 1617336 5695448 1617304 5695352 1617288 5695576 -1617336 5695488 1617336 5695448 1617288 5695576 1621936 5697864 -1617304 5695352 1617104 5695232 1617288 5695576 1617336 5695448 -1617288 5695576 1617264 5695600 1616456 5698536 1616528 5698576 -1617288 5695576 1615648 5697056 1617264 5695600 1616528 5698576 -1615648 5697056 1617264 5695600 1617288 5695576 1615696 5696632 -1617264 5695600 1616528 5698576 1617288 5695576 1615696 5696632 -1617264 5695600 1615648 5697056 1616456 5698536 1616528 5698576 -1615648 5697056 1616456 5698536 1617264 5695600 1615696 5696632 -1617288 5695576 1615680 5696424 1615696 5696632 1617264 5695600 -1617288 5695576 1615680 5696424 1617264 5695600 1616528 5698576 -1615696 5696632 1615648 5697056 1617264 5695600 1615680 5696424 -1617288 5695576 1615632 5696264 1615680 5696424 1617264 5695600 -1617288 5695576 1615632 5696264 1617264 5695600 1616528 5698576 -1615680 5696424 1615696 5696632 1617264 5695600 1615632 5696264 -1616456 5698536 1617264 5695600 1615648 5697056 1616392 5698520 -1617288 5695576 1617264 5695600 1616528 5698576 1616592 5698624 -1617264 5695600 1616456 5698536 1616528 5698576 1616592 5698624 -1617288 5695576 1615632 5696264 1617264 5695600 1616592 5698624 -1617288 5695576 1617264 5695600 1616592 5698624 1616624 5698656 -1617288 5695576 1615632 5696264 1617264 5695600 1616624 5698656 -1617288 5695576 1617264 5695600 1616624 5698656 1621936 5697864 -1616624 5698656 1621944 5698008 1621936 5697864 1617264 5695600 -1617288 5695576 1617264 5695600 1621936 5697864 1617336 5695488 -1617288 5695576 1615632 5696264 1617264 5695600 1621936 5697864 -1617264 5695600 1616592 5698624 1616624 5698656 1621936 5697864 -1617264 5695600 1616528 5698576 1616592 5698624 1616624 5698656 -1616528 5698576 1616560 5698616 1616592 5698624 1617264 5695600 -1617288 5695576 1617016 5695184 1615632 5696264 1617264 5695600 -1617288 5695576 1617016 5695184 1617264 5695600 1621936 5697864 -1617016 5695184 1616824 5695056 1615632 5696264 1617264 5695600 -1616824 5695056 1615512 5696024 1615632 5696264 1617264 5695600 -1617288 5695576 1617104 5695232 1617016 5695184 1617264 5695600 -1617288 5695576 1617104 5695232 1617264 5695600 1621936 5697864 -1617288 5695576 1617304 5695352 1617104 5695232 1617264 5695600 -1617288 5695576 1617304 5695352 1617264 5695600 1621936 5697864 -1617104 5695232 1617016 5695184 1617264 5695600 1617304 5695352 -1615632 5696264 1615680 5696424 1617264 5695600 1616824 5695056 -1617016 5695184 1616824 5695056 1617264 5695600 1617104 5695232 -1617288 5695576 1617336 5695448 1617304 5695352 1617264 5695600 -1616824 5695056 1617184 5695608 1617264 5695600 1617016 5695184 -1617184 5695608 1615632 5696264 1617264 5695600 1617016 5695184 -1616824 5695056 1615632 5696264 1617184 5695608 1617016 5695184 -1615632 5696264 1617184 5695608 1616824 5695056 1615512 5696024 -1617264 5695600 1617184 5695608 1615632 5696264 1615680 5696424 -1617264 5695600 1617016 5695184 1617184 5695608 1615680 5696424 -1617184 5695608 1616824 5695056 1615632 5696264 1615680 5696424 -1617264 5695600 1617184 5695608 1615680 5696424 1615696 5696632 -1617264 5695600 1617184 5695608 1615696 5696632 1615648 5697056 -1617264 5695600 1617016 5695184 1617184 5695608 1615648 5697056 -1617264 5695600 1617184 5695608 1615648 5697056 1616456 5698536 -1617184 5695608 1615696 5696632 1615648 5697056 1616456 5698536 -1617264 5695600 1617184 5695608 1616456 5698536 1616528 5698576 -1617264 5695600 1617184 5695608 1616528 5698576 1616592 5698624 -1617264 5695600 1617016 5695184 1617184 5695608 1616528 5698576 -1617184 5695608 1615648 5697056 1616456 5698536 1616528 5698576 -1617184 5695608 1615632 5696264 1615680 5696424 1615696 5696632 -1617184 5695608 1615680 5696424 1615696 5696632 1615648 5697056 -1615648 5697056 1616392 5698520 1616456 5698536 1617184 5695608 -1617264 5695600 1617104 5695232 1617016 5695184 1617184 5695608 -1617264 5695600 1617104 5695232 1617184 5695608 1616528 5698576 -1617016 5695184 1616824 5695056 1617184 5695608 1617104 5695232 -1617264 5695600 1617304 5695352 1617104 5695232 1617184 5695608 -1617264 5695600 1617304 5695352 1617184 5695608 1616528 5698576 -1617264 5695600 1617288 5695576 1617304 5695352 1617184 5695608 -1617264 5695600 1617288 5695576 1617184 5695608 1616528 5698576 -1617304 5695352 1617104 5695232 1617184 5695608 1617288 5695576 -1617104 5695232 1617016 5695184 1617184 5695608 1617304 5695352 -1617288 5695576 1617336 5695448 1617304 5695352 1617184 5695608 -1617288 5695576 1617336 5695448 1617184 5695608 1617264 5695600 -1617288 5695576 1617336 5695488 1617336 5695448 1617184 5695608 -1617288 5695576 1617336 5695488 1617184 5695608 1617264 5695600 -1617304 5695352 1617104 5695232 1617184 5695608 1617336 5695448 -1617336 5695448 1617304 5695352 1617184 5695608 1617336 5695488 -1615648 5697056 1617152 5695680 1617184 5695608 1615696 5696632 -1617184 5695608 1617152 5695680 1616456 5698536 1616528 5698576 -1617184 5695608 1617152 5695680 1616528 5698576 1617264 5695600 -1616528 5698576 1616592 5698624 1617264 5695600 1617152 5695680 -1617264 5695600 1617184 5695608 1617152 5695680 1616592 5698624 -1617152 5695680 1616456 5698536 1616528 5698576 1616592 5698624 -1617152 5695680 1617264 5695600 1617184 5695608 1615696 5696632 -1617152 5695680 1615648 5697056 1616456 5698536 1616528 5698576 -1615648 5697056 1616456 5698536 1617152 5695680 1615696 5696632 -1617184 5695608 1615680 5696424 1615696 5696632 1617152 5695680 -1615696 5696632 1615648 5697056 1617152 5695680 1615680 5696424 -1617184 5695608 1615680 5696424 1617152 5695680 1617264 5695600 -1617184 5695608 1615632 5696264 1615680 5696424 1617152 5695680 -1617184 5695608 1616824 5695056 1615632 5696264 1617152 5695680 -1617184 5695608 1616824 5695056 1617152 5695680 1617264 5695600 -1617184 5695608 1617016 5695184 1616824 5695056 1617152 5695680 -1616824 5695056 1615632 5696264 1617152 5695680 1617016 5695184 -1617184 5695608 1617016 5695184 1617152 5695680 1617264 5695600 -1617184 5695608 1617104 5695232 1617016 5695184 1617152 5695680 -1616824 5695056 1615512 5696024 1615632 5696264 1617152 5695680 -1616824 5695056 1615512 5696024 1617152 5695680 1617016 5695184 -1616824 5695056 1616664 5694952 1615512 5696024 1617152 5695680 -1615632 5696264 1615680 5696424 1617152 5695680 1615512 5696024 -1615680 5696424 1615696 5696632 1617152 5695680 1615632 5696264 -1616456 5698536 1617152 5695680 1615648 5697056 1616392 5698520 -1616592 5698624 1616624 5698656 1617264 5695600 1617152 5695680 -1616592 5698624 1616624 5698656 1617152 5695680 1616528 5698576 -1617264 5695600 1617184 5695608 1617152 5695680 1616624 5698656 -1616624 5698656 1621936 5697864 1617264 5695600 1617152 5695680 -1616528 5698576 1616560 5698616 1616592 5698624 1617152 5695680 -1617152 5695680 1617152 5695776 1617264 5695600 1617184 5695608 -1617264 5695600 1617152 5695776 1616624 5698656 1621936 5697864 -1616624 5698656 1621944 5698008 1621936 5697864 1617152 5695776 -1617264 5695600 1617152 5695680 1617152 5695776 1621936 5697864 -1617152 5695776 1617152 5695680 1616624 5698656 1621936 5697864 -1617264 5695600 1617152 5695776 1621936 5697864 1617288 5695576 -1621936 5697864 1617336 5695488 1617288 5695576 1617152 5695776 -1617264 5695600 1617152 5695680 1617152 5695776 1617288 5695576 -1617152 5695776 1616624 5698656 1621936 5697864 1617288 5695576 -1616624 5698656 1617152 5695776 1617152 5695680 1616592 5698624 -1617152 5695680 1616528 5698576 1616592 5698624 1617152 5695776 -1617152 5695680 1616456 5698536 1616528 5698576 1617152 5695776 -1616528 5698576 1616592 5698624 1617152 5695776 1616456 5698536 -1617152 5695680 1615648 5697056 1616456 5698536 1617152 5695776 -1616456 5698536 1616528 5698576 1617152 5695776 1615648 5697056 -1617152 5695776 1617264 5695600 1617152 5695680 1615648 5697056 -1617152 5695680 1615696 5696632 1615648 5697056 1617152 5695776 -1617152 5695680 1615680 5696424 1615696 5696632 1617152 5695776 -1615648 5697056 1616456 5698536 1617152 5695776 1615696 5696632 -1617152 5695680 1615680 5696424 1617152 5695776 1617264 5695600 -1615696 5696632 1615648 5697056 1617152 5695776 1615680 5696424 -1616624 5698656 1621936 5697864 1617152 5695776 1616592 5698624 -1617152 5695680 1615632 5696264 1615680 5696424 1617152 5695776 -1615680 5696424 1615696 5696632 1617152 5695776 1615632 5696264 -1617152 5695680 1615632 5696264 1617152 5695776 1617264 5695600 -1617152 5695680 1615512 5696024 1615632 5696264 1617152 5695776 -1617152 5695680 1615512 5696024 1617152 5695776 1617264 5695600 -1617152 5695680 1616824 5695056 1615512 5696024 1617152 5695776 -1615632 5696264 1615680 5696424 1617152 5695776 1615512 5696024 -1615648 5697056 1616392 5698520 1616456 5698536 1617152 5695776 -1616592 5698624 1616624 5698656 1617152 5695776 1616528 5698576 -1616528 5698576 1616560 5698616 1616592 5698624 1617152 5695776 -1621936 5697864 1617192 5695864 1616624 5698656 1621944 5698008 -1616624 5698656 1617192 5695864 1617152 5695776 1616592 5698624 -1617192 5695864 1621936 5697864 1617152 5695776 1616592 5698624 -1616624 5698656 1621936 5697864 1617192 5695864 1616592 5698624 -1617152 5695776 1617192 5695864 1621936 5697864 1617288 5695576 -1621936 5697864 1617336 5695488 1617288 5695576 1617192 5695864 -1621936 5697864 1617336 5695448 1617336 5695488 1617192 5695864 -1617152 5695776 1616592 5698624 1617192 5695864 1617288 5695576 -1617192 5695864 1616624 5698656 1621936 5697864 1617336 5695488 -1617288 5695576 1617152 5695776 1617192 5695864 1617336 5695488 -1617152 5695776 1617192 5695864 1617288 5695576 1617264 5695600 -1617152 5695776 1617192 5695864 1617264 5695600 1617152 5695680 -1617152 5695776 1616592 5698624 1617192 5695864 1617264 5695600 -1617192 5695864 1617336 5695488 1617288 5695576 1617264 5695600 -1617152 5695776 1616528 5698576 1616592 5698624 1617192 5695864 -1617152 5695776 1616456 5698536 1616528 5698576 1617192 5695864 -1617152 5695776 1615648 5697056 1616456 5698536 1617192 5695864 -1616456 5698536 1616528 5698576 1617192 5695864 1615648 5697056 -1617152 5695776 1615696 5696632 1615648 5697056 1617192 5695864 -1615648 5697056 1616456 5698536 1617192 5695864 1615696 5696632 -1617152 5695776 1615680 5696424 1615696 5696632 1617192 5695864 -1617152 5695776 1615632 5696264 1615680 5696424 1617192 5695864 -1615696 5696632 1615648 5697056 1617192 5695864 1615680 5696424 -1617152 5695776 1615680 5696424 1617192 5695864 1617264 5695600 -1616592 5698624 1616624 5698656 1617192 5695864 1616528 5698576 -1615648 5697056 1616392 5698520 1616456 5698536 1617192 5695864 -1616528 5698576 1616592 5698624 1617192 5695864 1616456 5698536 -1616528 5698576 1616560 5698616 1616592 5698624 1617192 5695864 -1621936 5697864 1617328 5696064 1616624 5698656 1621944 5698008 -1617192 5695864 1617328 5696064 1621936 5697864 1617336 5695488 -1621936 5697864 1617336 5695448 1617336 5695488 1617328 5696064 -1617192 5695864 1617328 5696064 1617336 5695488 1617288 5695576 -1617328 5696064 1621936 5697864 1617336 5695488 1617288 5695576 -1617192 5695864 1616624 5698656 1617328 5696064 1617288 5695576 -1616624 5698656 1617328 5696064 1617192 5695864 1616592 5698624 -1617192 5695864 1616528 5698576 1616592 5698624 1617328 5696064 -1617328 5696064 1617288 5695576 1617192 5695864 1616528 5698576 -1616592 5698624 1616624 5698656 1617328 5696064 1616528 5698576 -1617328 5696064 1616624 5698656 1621936 5697864 1617336 5695488 -1616624 5698656 1621936 5697864 1617328 5696064 1616592 5698624 -1617192 5695864 1617328 5696064 1617288 5695576 1617264 5695600 -1617192 5695864 1616456 5698536 1616528 5698576 1617328 5696064 -1617192 5695864 1615648 5697056 1616456 5698536 1617328 5696064 -1617192 5695864 1615696 5696632 1615648 5697056 1617328 5696064 -1615648 5697056 1616456 5698536 1617328 5696064 1615696 5696632 -1617192 5695864 1615680 5696424 1615696 5696632 1617328 5696064 -1615696 5696632 1615648 5697056 1617328 5696064 1615680 5696424 -1617192 5695864 1617152 5695776 1615680 5696424 1617328 5696064 -1616528 5698576 1616592 5698624 1617328 5696064 1616456 5698536 -1617192 5695864 1615680 5696424 1617328 5696064 1617288 5695576 -1615648 5697056 1616392 5698520 1616456 5698536 1617328 5696064 -1616456 5698536 1616528 5698576 1617328 5696064 1615648 5697056 -1616528 5698576 1616560 5698616 1616592 5698624 1617328 5696064 -1621936 5697864 1617424 5696248 1616624 5698656 1621944 5698008 -1617328 5696064 1617424 5696248 1621936 5697864 1617336 5695488 -1621936 5697864 1617336 5695448 1617336 5695488 1617424 5696248 -1617328 5696064 1617424 5696248 1617336 5695488 1617288 5695576 -1617328 5696064 1616624 5698656 1617424 5696248 1617336 5695488 -1616624 5698656 1617424 5696248 1617328 5696064 1616592 5698624 -1617328 5696064 1616528 5698576 1616592 5698624 1617424 5696248 -1617328 5696064 1616456 5698536 1616528 5698576 1617424 5696248 -1616528 5698576 1616592 5698624 1617424 5696248 1616456 5698536 -1617424 5696248 1617336 5695488 1617328 5696064 1616456 5698536 -1616592 5698624 1616624 5698656 1617424 5696248 1616528 5698576 -1621936 5697864 1617336 5695488 1617424 5696248 1621944 5698008 -1617424 5696248 1616592 5698624 1616624 5698656 1621944 5698008 -1617328 5696064 1615648 5697056 1616456 5698536 1617424 5696248 -1617328 5696064 1615696 5696632 1615648 5697056 1617424 5696248 -1617328 5696064 1615680 5696424 1615696 5696632 1617424 5696248 -1616456 5698536 1616528 5698576 1617424 5696248 1615648 5697056 -1617328 5696064 1615696 5696632 1617424 5696248 1617336 5695488 -1615648 5697056 1616392 5698520 1616456 5698536 1617424 5696248 -1615648 5697056 1616456 5698536 1617424 5696248 1615696 5696632 -1616528 5698576 1616560 5698616 1616592 5698624 1617424 5696248 -1616624 5698656 1616624 5698800 1621944 5698008 1617424 5696248 -1617424 5696248 1617520 5696640 1621944 5698008 1621936 5697864 -1617424 5696248 1617520 5696640 1621936 5697864 1617336 5695488 -1617424 5696248 1616624 5698656 1617520 5696640 1621936 5697864 -1616624 5698656 1617520 5696640 1617424 5696248 1616592 5698624 -1617424 5696248 1616528 5698576 1616592 5698624 1617520 5696640 -1617424 5696248 1616456 5698536 1616528 5698576 1617520 5696640 -1617424 5696248 1615648 5697056 1616456 5698536 1617520 5696640 -1616456 5698536 1616528 5698576 1617520 5696640 1615648 5697056 -1616528 5698576 1616592 5698624 1617520 5696640 1616456 5698536 -1617520 5696640 1621936 5697864 1617424 5696248 1615648 5697056 -1616592 5698624 1616624 5698656 1617520 5696640 1616528 5698576 -1617520 5696640 1616624 5698656 1621944 5698008 1621936 5697864 -1616624 5698656 1621944 5698008 1617520 5696640 1616592 5698624 -1615648 5697056 1616392 5698520 1616456 5698536 1617520 5696640 -1617424 5696248 1615696 5696632 1615648 5697056 1617520 5696640 -1617424 5696248 1617328 5696064 1615696 5696632 1617520 5696640 -1615648 5697056 1616456 5698536 1617520 5696640 1615696 5696632 -1617424 5696248 1615696 5696632 1617520 5696640 1621936 5697864 -1616528 5698576 1616560 5698616 1616592 5698624 1617520 5696640 -1621944 5698008 1617520 5696640 1616624 5698656 1616624 5698800 -1617520 5696640 1617584 5696752 1621944 5698008 1621936 5697864 -1617520 5696640 1617584 5696752 1621936 5697864 1617424 5696248 -1621936 5697864 1617336 5695488 1617424 5696248 1617584 5696752 -1617584 5696752 1621944 5698008 1621936 5697864 1617424 5696248 -1617520 5696640 1616624 5698656 1617584 5696752 1617424 5696248 -1616624 5698656 1617584 5696752 1617520 5696640 1616592 5698624 -1617520 5696640 1616528 5698576 1616592 5698624 1617584 5696752 -1617520 5696640 1616456 5698536 1616528 5698576 1617584 5696752 -1617520 5696640 1615648 5697056 1616456 5698536 1617584 5696752 -1617520 5696640 1615696 5696632 1615648 5697056 1617584 5696752 -1616456 5698536 1616528 5698576 1617584 5696752 1615648 5697056 -1616528 5698576 1616592 5698624 1617584 5696752 1616456 5698536 -1617584 5696752 1617424 5696248 1617520 5696640 1615648 5697056 -1616592 5698624 1616624 5698656 1617584 5696752 1616528 5698576 -1617584 5696752 1616624 5698656 1621944 5698008 1621936 5697864 -1616624 5698656 1621944 5698008 1617584 5696752 1616592 5698624 -1615648 5697056 1616392 5698520 1616456 5698536 1617584 5696752 -1616528 5698576 1616560 5698616 1616592 5698624 1617584 5696752 -1621944 5698008 1617584 5696752 1616624 5698656 1616624 5698800 -1621944 5698008 1621936 5697864 1617584 5696752 1616624 5698800 -1617584 5696752 1616592 5698624 1616624 5698656 1616624 5698800 -1616624 5698656 1616616 5698720 1616624 5698800 1617584 5696752 -1621944 5698008 1617584 5696752 1616624 5698800 1617496 5700904 -1617584 5696752 1617648 5696792 1621944 5698008 1621936 5697864 -1617584 5696752 1617648 5696792 1621936 5697864 1617424 5696248 -1617584 5696752 1617648 5696792 1617424 5696248 1617520 5696640 -1621936 5697864 1617336 5695488 1617424 5696248 1617648 5696792 -1621936 5697864 1617336 5695448 1617336 5695488 1617648 5696792 -1617336 5695488 1617328 5696064 1617424 5696248 1617648 5696792 -1617648 5696792 1617336 5695488 1617424 5696248 1617520 5696640 -1617648 5696792 1621944 5698008 1621936 5697864 1617336 5695488 -1617584 5696752 1616624 5698800 1617648 5696792 1617520 5696640 -1617648 5696792 1616624 5698800 1621944 5698008 1621936 5697864 -1616624 5698800 1617648 5696792 1617584 5696752 1616624 5698656 -1617648 5696792 1617520 5696640 1617584 5696752 1616624 5698656 -1617584 5696752 1616592 5698624 1616624 5698656 1617648 5696792 -1617584 5696752 1616528 5698576 1616592 5698624 1617648 5696792 -1617584 5696752 1616456 5698536 1616528 5698576 1617648 5696792 -1617584 5696752 1616528 5698576 1617648 5696792 1617520 5696640 -1616592 5698624 1616624 5698656 1617648 5696792 1616528 5698576 -1616624 5698800 1621944 5698008 1617648 5696792 1616624 5698656 -1616528 5698576 1616560 5698616 1616592 5698624 1617648 5696792 -1616624 5698656 1616624 5698800 1617648 5696792 1616592 5698624 -1616624 5698800 1617648 5696792 1616624 5698656 1616616 5698720 -1621944 5698008 1617648 5696792 1616624 5698800 1617496 5700904 -1621944 5698008 1621936 5697864 1617648 5696792 1617496 5700904 -1617648 5696792 1616624 5698656 1616624 5698800 1617496 5700904 -1621944 5698008 1617648 5696792 1617496 5700904 1621488 5701424 -1616624 5698800 1616600 5698864 1617496 5700904 1617648 5696792 -1617336 5695488 1617776 5696792 1621936 5697864 1617336 5695448 -1617648 5696792 1617776 5696792 1617336 5695488 1617424 5696248 -1617336 5695488 1617328 5696064 1617424 5696248 1617776 5696792 -1617648 5696792 1617776 5696792 1617424 5696248 1617520 5696640 -1617648 5696792 1617776 5696792 1617520 5696640 1617584 5696752 -1617776 5696792 1617336 5695488 1617424 5696248 1617520 5696640 -1617776 5696792 1617424 5696248 1617520 5696640 1617584 5696752 -1621936 5697864 1617776 5696792 1617648 5696792 1621944 5698008 -1617648 5696792 1617496 5700904 1621944 5698008 1617776 5696792 -1621944 5698008 1621936 5697864 1617776 5696792 1617496 5700904 -1617648 5696792 1617496 5700904 1617776 5696792 1617584 5696752 -1617336 5695488 1617424 5696248 1617776 5696792 1617336 5695448 -1617776 5696792 1621944 5698008 1621936 5697864 1617336 5695448 -1621936 5697864 1622016 5697816 1617336 5695448 1617776 5696792 -1617336 5695448 1617336 5695488 1617776 5696792 1622016 5697816 -1621936 5697864 1622016 5697816 1617776 5696792 1621944 5698008 -1622016 5697816 1623272 5697000 1617336 5695448 1617776 5696792 -1621936 5697864 1621968 5697856 1622016 5697816 1617776 5696792 -1617496 5700904 1621488 5701424 1621944 5698008 1617776 5696792 -1617648 5696792 1616624 5698800 1617496 5700904 1617776 5696792 -1617496 5700904 1621944 5698008 1617776 5696792 1616624 5698800 -1617648 5696792 1616624 5698800 1617776 5696792 1617584 5696752 -1617648 5696792 1616624 5698656 1616624 5698800 1617776 5696792 -1617648 5696792 1616624 5698656 1617776 5696792 1617584 5696752 -1617648 5696792 1616592 5698624 1616624 5698656 1617776 5696792 -1616624 5698656 1616616 5698720 1616624 5698800 1617776 5696792 -1616624 5698800 1617496 5700904 1617776 5696792 1616624 5698656 -1616624 5698800 1616600 5698864 1617496 5700904 1617776 5696792 -1617776 5696792 1617912 5696744 1617336 5695448 1617336 5695488 -1617776 5696792 1617912 5696744 1617336 5695488 1617424 5696248 -1617912 5696744 1617336 5695448 1617336 5695488 1617424 5696248 -1617336 5695488 1617328 5696064 1617424 5696248 1617912 5696744 -1617776 5696792 1617912 5696744 1617424 5696248 1617520 5696640 -1617776 5696792 1617912 5696744 1617520 5696640 1617584 5696752 -1617912 5696744 1617336 5695488 1617424 5696248 1617520 5696640 -1617776 5696792 1622016 5697816 1617912 5696744 1617520 5696640 -1617912 5696744 1622016 5697816 1617336 5695448 1617336 5695488 -1622016 5697816 1617912 5696744 1617776 5696792 1621936 5697864 -1617912 5696744 1617520 5696640 1617776 5696792 1621936 5697864 -1617776 5696792 1621944 5698008 1621936 5697864 1617912 5696744 -1617776 5696792 1617496 5700904 1621944 5698008 1617912 5696744 -1617776 5696792 1616624 5698800 1617496 5700904 1617912 5696744 -1617496 5700904 1621944 5698008 1617912 5696744 1616624 5698800 -1617776 5696792 1616624 5698800 1617912 5696744 1617520 5696640 -1621944 5698008 1621936 5697864 1617912 5696744 1617496 5700904 -1622016 5697816 1617336 5695448 1617912 5696744 1621936 5697864 -1621936 5697864 1622016 5697816 1617912 5696744 1621944 5698008 -1617336 5695448 1617912 5696744 1622016 5697816 1623272 5697000 -1622016 5697816 1617912 5696744 1621936 5697864 1621968 5697856 -1617496 5700904 1621488 5701424 1621944 5698008 1617912 5696744 -1617776 5696792 1616624 5698656 1616624 5698800 1617912 5696744 -1616624 5698800 1617496 5700904 1617912 5696744 1616624 5698656 -1617776 5696792 1617648 5696792 1616624 5698656 1617912 5696744 -1617776 5696792 1616624 5698656 1617912 5696744 1617520 5696640 -1616624 5698656 1616616 5698720 1616624 5698800 1617912 5696744 -1616624 5698800 1616600 5698864 1617496 5700904 1617912 5696744 -1617912 5696744 1618000 5696680 1617336 5695448 1617336 5695488 -1617912 5696744 1618000 5696680 1617336 5695488 1617424 5696248 -1617336 5695488 1617328 5696064 1617424 5696248 1618000 5696680 -1617912 5696744 1618000 5696680 1617424 5696248 1617520 5696640 -1618000 5696680 1617336 5695488 1617424 5696248 1617520 5696640 -1617912 5696744 1618000 5696680 1617520 5696640 1617776 5696792 -1618000 5696680 1617336 5695448 1617336 5695488 1617424 5696248 -1617912 5696744 1622016 5697816 1618000 5696680 1617520 5696640 -1622016 5697816 1618000 5696680 1617912 5696744 1621936 5697864 -1618000 5696680 1617520 5696640 1617912 5696744 1621936 5697864 -1618000 5696680 1622016 5697816 1617336 5695448 1617336 5695488 -1622016 5697816 1617336 5695448 1618000 5696680 1621936 5697864 -1617912 5696744 1621944 5698008 1621936 5697864 1618000 5696680 -1617912 5696744 1617496 5700904 1621944 5698008 1618000 5696680 -1617912 5696744 1621944 5698008 1618000 5696680 1617520 5696640 -1621936 5697864 1622016 5697816 1618000 5696680 1621944 5698008 -1617336 5695448 1618000 5696680 1622016 5697816 1623272 5697000 -1617336 5695448 1617336 5695488 1618000 5696680 1623272 5697000 -1618000 5696680 1621936 5697864 1622016 5697816 1623272 5697000 -1617336 5695448 1618000 5696680 1623272 5697000 1617304 5695352 -1622016 5697816 1622080 5697800 1623272 5697000 1618000 5696680 -1622016 5697816 1618000 5696680 1621936 5697864 1621968 5697856 -1618000 5696680 1618072 5696608 1617336 5695448 1617336 5695488 -1618000 5696680 1618072 5696608 1617336 5695488 1617424 5696248 -1618000 5696680 1618072 5696608 1617424 5696248 1617520 5696640 -1617336 5695488 1617328 5696064 1617424 5696248 1618072 5696608 -1618000 5696680 1618072 5696608 1617520 5696640 1617912 5696744 -1618072 5696608 1617336 5695488 1617424 5696248 1617520 5696640 -1618072 5696608 1617336 5695448 1617336 5695488 1617424 5696248 -1618000 5696680 1623272 5697000 1618072 5696608 1617520 5696640 -1618072 5696608 1623272 5697000 1617336 5695448 1617336 5695488 -1617336 5695448 1618072 5696608 1623272 5697000 1617304 5695352 -1617336 5695448 1617336 5695488 1618072 5696608 1617304 5695352 -1618072 5696608 1618000 5696680 1623272 5697000 1617304 5695352 -1623272 5697000 1623304 5696976 1617304 5695352 1618072 5696608 -1623272 5697000 1618072 5696608 1618000 5696680 1622016 5697816 -1618072 5696608 1617520 5696640 1618000 5696680 1622016 5697816 -1618000 5696680 1621936 5697864 1622016 5697816 1618072 5696608 -1618000 5696680 1621944 5698008 1621936 5697864 1618072 5696608 -1618000 5696680 1621944 5698008 1618072 5696608 1617520 5696640 -1621936 5697864 1622016 5697816 1618072 5696608 1621944 5698008 -1623272 5697000 1617304 5695352 1618072 5696608 1622016 5697816 -1618000 5696680 1617912 5696744 1621944 5698008 1618072 5696608 -1622016 5697816 1623272 5697000 1618072 5696608 1621936 5697864 -1623272 5697000 1618072 5696608 1622016 5697816 1622080 5697800 -1621936 5697864 1621968 5697856 1622016 5697816 1618072 5696608 -1623272 5697000 1618184 5696544 1618072 5696608 1622016 5697816 -1618184 5696544 1617304 5695352 1618072 5696608 1622016 5697816 -1623272 5697000 1617304 5695352 1618184 5696544 1622016 5697816 -1617304 5695352 1618184 5696544 1623272 5697000 1623304 5696976 -1617304 5695352 1618072 5696608 1618184 5696544 1623304 5696976 -1618184 5696544 1622016 5697816 1623272 5697000 1623304 5696976 -1617304 5695352 1618184 5696544 1623304 5696976 1615488 5689328 -1618072 5696608 1618184 5696544 1617304 5695352 1617336 5695448 -1618072 5696608 1618184 5696544 1617336 5695448 1617336 5695488 -1618072 5696608 1618184 5696544 1617336 5695488 1617424 5696248 -1617336 5695488 1617328 5696064 1617424 5696248 1618184 5696544 -1617336 5695488 1617288 5695576 1617328 5696064 1618184 5696544 -1618072 5696608 1618184 5696544 1617424 5696248 1617520 5696640 -1617424 5696248 1618072 5696608 1618184 5696544 1617328 5696064 -1618184 5696544 1617336 5695448 1617336 5695488 1617328 5696064 -1618072 5696608 1622016 5697816 1618184 5696544 1617424 5696248 -1618184 5696544 1623304 5696976 1617304 5695352 1617336 5695448 -1618184 5696544 1617304 5695352 1617336 5695448 1617336 5695488 -1618072 5696608 1621936 5697864 1622016 5697816 1618184 5696544 -1618072 5696608 1621944 5698008 1621936 5697864 1618184 5696544 -1618072 5696608 1618000 5696680 1621944 5698008 1618184 5696544 -1621944 5698008 1621936 5697864 1618184 5696544 1618000 5696680 -1618072 5696608 1618000 5696680 1618184 5696544 1617424 5696248 -1622016 5697816 1623272 5697000 1618184 5696544 1621936 5697864 -1618000 5696680 1617912 5696744 1621944 5698008 1618184 5696544 -1621936 5697864 1622016 5697816 1618184 5696544 1621944 5698008 -1623272 5697000 1618184 5696544 1622016 5697816 1622080 5697800 -1621936 5697864 1621968 5697856 1622016 5697816 1618184 5696544 -1618184 5696544 1618312 5696512 1617304 5695352 1617336 5695448 -1618184 5696544 1623304 5696976 1618312 5696512 1617336 5695448 -1618312 5696512 1623304 5696976 1617304 5695352 1617336 5695448 -1617304 5695352 1618312 5696512 1623304 5696976 1615488 5689328 -1623304 5696976 1618312 5696512 1618184 5696544 1623272 5697000 -1618312 5696512 1617336 5695448 1618184 5696544 1623272 5697000 -1618184 5696544 1622016 5697816 1623272 5697000 1618312 5696512 -1618184 5696544 1621936 5697864 1622016 5697816 1618312 5696512 -1618184 5696544 1621936 5697864 1618312 5696512 1617336 5695448 -1622016 5697816 1623272 5697000 1618312 5696512 1621936 5697864 -1623304 5696976 1617304 5695352 1618312 5696512 1623272 5697000 -1623272 5697000 1623304 5696976 1618312 5696512 1622016 5697816 -1618184 5696544 1618312 5696512 1617336 5695448 1617336 5695488 -1618184 5696544 1618312 5696512 1617336 5695488 1617328 5696064 -1618312 5696512 1617304 5695352 1617336 5695448 1617336 5695488 -1618184 5696544 1621936 5697864 1618312 5696512 1617336 5695488 -1618184 5696544 1621944 5698008 1621936 5697864 1618312 5696512 -1618184 5696544 1618000 5696680 1621944 5698008 1618312 5696512 -1618184 5696544 1618072 5696608 1618000 5696680 1618312 5696512 -1621936 5697864 1622016 5697816 1618312 5696512 1621944 5698008 -1618184 5696544 1618000 5696680 1618312 5696512 1617336 5695488 -1618000 5696680 1617912 5696744 1621944 5698008 1618312 5696512 -1617912 5696744 1617496 5700904 1621944 5698008 1618312 5696512 -1618000 5696680 1617912 5696744 1618312 5696512 1618184 5696544 -1621944 5698008 1621936 5697864 1618312 5696512 1617912 5696744 -1622016 5697816 1622080 5697800 1623272 5697000 1618312 5696512 -1621936 5697864 1621968 5697856 1622016 5697816 1618312 5696512 -1621944 5698008 1618448 5696576 1617912 5696744 1617496 5700904 -1617912 5696744 1616624 5698800 1617496 5700904 1618448 5696576 -1617912 5696744 1616624 5698656 1616624 5698800 1618448 5696576 -1617496 5700904 1621944 5698008 1618448 5696576 1616624 5698800 -1621944 5698008 1618312 5696512 1618448 5696576 1617496 5700904 -1617912 5696744 1618448 5696576 1618312 5696512 1618000 5696680 -1618312 5696512 1618184 5696544 1618000 5696680 1618448 5696576 -1618184 5696544 1618072 5696608 1618000 5696680 1618448 5696576 -1618184 5696544 1618072 5696608 1618448 5696576 1618312 5696512 -1618448 5696576 1621944 5698008 1618312 5696512 1618184 5696544 -1618000 5696680 1617912 5696744 1618448 5696576 1618072 5696608 -1618312 5696512 1618448 5696576 1621944 5698008 1621936 5697864 -1618312 5696512 1618448 5696576 1621936 5697864 1622016 5697816 -1618312 5696512 1618448 5696576 1622016 5697816 1623272 5697000 -1618448 5696576 1621936 5697864 1622016 5697816 1623272 5697000 -1618312 5696512 1618184 5696544 1618448 5696576 1623272 5697000 -1618448 5696576 1617496 5700904 1621944 5698008 1621936 5697864 -1618312 5696512 1618448 5696576 1623272 5697000 1623304 5696976 -1618448 5696576 1622016 5697816 1623272 5697000 1623304 5696976 -1618312 5696512 1618184 5696544 1618448 5696576 1623304 5696976 -1618312 5696512 1618448 5696576 1623304 5696976 1617304 5695352 -1618312 5696512 1618448 5696576 1617304 5695352 1617336 5695448 -1618312 5696512 1618184 5696544 1618448 5696576 1617304 5695352 -1623304 5696976 1615488 5689328 1617304 5695352 1618448 5696576 -1618448 5696576 1623272 5697000 1623304 5696976 1617304 5695352 -1618448 5696576 1621944 5698008 1621936 5697864 1622016 5697816 -1622016 5697816 1622080 5697800 1623272 5697000 1618448 5696576 -1621936 5697864 1621968 5697856 1622016 5697816 1618448 5696576 -1621944 5698008 1618448 5696576 1617496 5700904 1621488 5701424 -1616624 5698800 1616600 5698864 1617496 5700904 1618448 5696576 -1618448 5696576 1618000 5696680 1617912 5696744 1616624 5698800 -1617496 5700904 1618512 5696632 1618448 5696576 1616624 5698800 -1618448 5696576 1617912 5696744 1616624 5698800 1618512 5696632 -1617912 5696744 1616624 5698656 1616624 5698800 1618512 5696632 -1617912 5696744 1616624 5698656 1618512 5696632 1618448 5696576 -1616624 5698800 1617496 5700904 1618512 5696632 1616624 5698656 -1618448 5696576 1618512 5696632 1621944 5698008 1621936 5697864 -1618448 5696576 1618512 5696632 1621936 5697864 1622016 5697816 -1618448 5696576 1618512 5696632 1622016 5697816 1623272 5697000 -1618448 5696576 1618512 5696632 1623272 5697000 1623304 5696976 -1618512 5696632 1622016 5697816 1623272 5697000 1623304 5696976 -1618448 5696576 1618512 5696632 1623304 5696976 1617304 5695352 -1618512 5696632 1621936 5697864 1622016 5697816 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1618512 5696632 -1621936 5697864 1621968 5697856 1622016 5697816 1618512 5696632 -1616624 5698656 1616616 5698720 1616624 5698800 1618512 5696632 -1621944 5698008 1618512 5696632 1617496 5700904 1621488 5701424 -1617912 5696744 1617776 5696792 1616624 5698656 1618512 5696632 -1617496 5700904 1618512 5696632 1616624 5698800 1616600 5698864 -1618512 5696632 1623304 5696976 1618448 5696576 1617912 5696744 -1618448 5696576 1618000 5696680 1617912 5696744 1618512 5696632 -1617912 5696744 1616624 5698656 1618512 5696632 1618000 5696680 -1618448 5696576 1618072 5696608 1618000 5696680 1618512 5696632 -1618448 5696576 1618184 5696544 1618072 5696608 1618512 5696632 -1618448 5696576 1618312 5696512 1618184 5696544 1618512 5696632 -1618072 5696608 1618000 5696680 1618512 5696632 1618184 5696544 -1618448 5696576 1618184 5696544 1618512 5696632 1623304 5696976 -1618000 5696680 1617912 5696744 1618512 5696632 1618072 5696608 -1618512 5696632 1617496 5700904 1621944 5698008 1621936 5697864 -1618512 5696632 1621944 5698008 1621936 5697864 1622016 5697816 -1617496 5700904 1621944 5698008 1618512 5696632 1616624 5698800 -1621944 5698008 1618528 5696672 1617496 5700904 1621488 5701424 -1618512 5696632 1618528 5696672 1621944 5698008 1621936 5697864 -1618512 5696632 1618528 5696672 1621936 5697864 1622016 5697816 -1618512 5696632 1618528 5696672 1622016 5697816 1623272 5697000 -1621936 5697864 1621968 5697856 1622016 5697816 1618528 5696672 -1618528 5696672 1621944 5698008 1621936 5697864 1622016 5697816 -1617496 5700904 1618528 5696672 1618512 5696632 1616624 5698800 -1618512 5696632 1616624 5698656 1616624 5698800 1618528 5696672 -1618512 5696632 1617912 5696744 1616624 5698656 1618528 5696672 -1618512 5696632 1618000 5696680 1617912 5696744 1618528 5696672 -1617912 5696744 1616624 5698656 1618528 5696672 1618000 5696680 -1616624 5698656 1616624 5698800 1618528 5696672 1617912 5696744 -1616624 5698656 1616616 5698720 1616624 5698800 1618528 5696672 -1617912 5696744 1617776 5696792 1616624 5698656 1618528 5696672 -1617912 5696744 1617776 5696792 1618528 5696672 1618000 5696680 -1617776 5696792 1617648 5696792 1616624 5698656 1618528 5696672 -1616624 5698656 1616624 5698800 1618528 5696672 1617776 5696792 -1617496 5700904 1618528 5696672 1616624 5698800 1616600 5698864 -1618512 5696632 1618072 5696608 1618000 5696680 1618528 5696672 -1618000 5696680 1617912 5696744 1618528 5696672 1618072 5696608 -1618512 5696632 1618184 5696544 1618072 5696608 1618528 5696672 -1618512 5696632 1618448 5696576 1618184 5696544 1618528 5696672 -1618448 5696576 1618312 5696512 1618184 5696544 1618528 5696672 -1618184 5696544 1618072 5696608 1618528 5696672 1618448 5696576 -1618072 5696608 1618000 5696680 1618528 5696672 1618184 5696544 -1616624 5698800 1617496 5700904 1618528 5696672 1616624 5698656 -1618512 5696632 1618448 5696576 1618528 5696672 1622016 5697816 -1618528 5696672 1617496 5700904 1621944 5698008 1621936 5697864 -1617496 5700904 1621944 5698008 1618528 5696672 1616624 5698800 -1621944 5698008 1618552 5696712 1617496 5700904 1621488 5701424 -1618528 5696672 1618552 5696712 1621944 5698008 1621936 5697864 -1618528 5696672 1618552 5696712 1621936 5697864 1622016 5697816 -1621936 5697864 1621968 5697856 1622016 5697816 1618552 5696712 -1618528 5696672 1618552 5696712 1622016 5697816 1618512 5696632 -1622016 5697816 1623272 5697000 1618512 5696632 1618552 5696712 -1618552 5696712 1621936 5697864 1622016 5697816 1618512 5696632 -1618552 5696712 1621944 5698008 1621936 5697864 1622016 5697816 -1618528 5696672 1617496 5700904 1618552 5696712 1618512 5696632 -1617496 5700904 1618552 5696712 1618528 5696672 1616624 5698800 -1617496 5700904 1618552 5696712 1616624 5698800 1616600 5698864 -1618528 5696672 1616624 5698656 1616624 5698800 1618552 5696712 -1618528 5696672 1617776 5696792 1616624 5698656 1618552 5696712 -1617776 5696792 1617648 5696792 1616624 5698656 1618552 5696712 -1616624 5698656 1616616 5698720 1616624 5698800 1618552 5696712 -1618528 5696672 1617912 5696744 1617776 5696792 1618552 5696712 -1618528 5696672 1618000 5696680 1617912 5696744 1618552 5696712 -1618528 5696672 1618072 5696608 1618000 5696680 1618552 5696712 -1618000 5696680 1617912 5696744 1618552 5696712 1618072 5696608 -1617776 5696792 1616624 5698656 1618552 5696712 1617912 5696744 -1617912 5696744 1617776 5696792 1618552 5696712 1618000 5696680 -1618528 5696672 1618184 5696544 1618072 5696608 1618552 5696712 -1616624 5698656 1616624 5698800 1618552 5696712 1617776 5696792 -1618552 5696712 1618512 5696632 1618528 5696672 1618072 5696608 -1616624 5698800 1617496 5700904 1618552 5696712 1616624 5698656 -1618552 5696712 1617496 5700904 1621944 5698008 1621936 5697864 -1617496 5700904 1621944 5698008 1618552 5696712 1616624 5698800 -1621944 5698008 1618576 5696872 1617496 5700904 1621488 5701424 -1618552 5696712 1618576 5696872 1621944 5698008 1621936 5697864 -1618552 5696712 1618576 5696872 1621936 5697864 1622016 5697816 -1618552 5696712 1617496 5700904 1618576 5696872 1621936 5697864 -1617496 5700904 1618576 5696872 1618552 5696712 1616624 5698800 -1617496 5700904 1618576 5696872 1616624 5698800 1616600 5698864 -1618552 5696712 1616624 5698656 1616624 5698800 1618576 5696872 -1616624 5698656 1616616 5698720 1616624 5698800 1618576 5696872 -1618552 5696712 1617776 5696792 1616624 5698656 1618576 5696872 -1617776 5696792 1617648 5696792 1616624 5698656 1618576 5696872 -1618552 5696712 1617912 5696744 1617776 5696792 1618576 5696872 -1618552 5696712 1618000 5696680 1617912 5696744 1618576 5696872 -1618552 5696712 1618072 5696608 1618000 5696680 1618576 5696872 -1618552 5696712 1618528 5696672 1618072 5696608 1618576 5696872 -1618072 5696608 1618000 5696680 1618576 5696872 1618528 5696672 -1617912 5696744 1617776 5696792 1618576 5696872 1618000 5696680 -1618000 5696680 1617912 5696744 1618576 5696872 1618072 5696608 -1618528 5696672 1618184 5696544 1618072 5696608 1618576 5696872 -1617776 5696792 1616624 5698656 1618576 5696872 1617912 5696744 -1616624 5698656 1616624 5698800 1618576 5696872 1617776 5696792 -1618576 5696872 1621936 5697864 1618552 5696712 1618528 5696672 -1616624 5698800 1617496 5700904 1618576 5696872 1616624 5698656 -1618576 5696872 1617496 5700904 1621944 5698008 1621936 5697864 -1617496 5700904 1621944 5698008 1618576 5696872 1616624 5698800 -1621944 5698008 1618560 5697104 1617496 5700904 1621488 5701424 -1617496 5700904 1621464 5701464 1621488 5701424 1618560 5697104 -1621944 5698008 1618560 5697104 1621488 5701424 1621576 5701360 -1618576 5696872 1618560 5697104 1621944 5698008 1621936 5697864 -1618576 5696872 1618560 5697104 1621936 5697864 1618552 5696712 -1618576 5696872 1617496 5700904 1618560 5697104 1621936 5697864 -1617496 5700904 1618560 5697104 1618576 5696872 1616624 5698800 -1617496 5700904 1618560 5697104 1616624 5698800 1616600 5698864 -1618576 5696872 1616624 5698656 1616624 5698800 1618560 5697104 -1616624 5698656 1616616 5698720 1616624 5698800 1618560 5697104 -1618576 5696872 1617776 5696792 1616624 5698656 1618560 5697104 -1617776 5696792 1617648 5696792 1616624 5698656 1618560 5697104 -1618576 5696872 1617912 5696744 1617776 5696792 1618560 5697104 -1618576 5696872 1618000 5696680 1617912 5696744 1618560 5697104 -1618576 5696872 1618072 5696608 1618000 5696680 1618560 5697104 -1617912 5696744 1617776 5696792 1618560 5697104 1618000 5696680 -1617776 5696792 1616624 5698656 1618560 5697104 1617912 5696744 -1616624 5698656 1616624 5698800 1618560 5697104 1617776 5696792 -1618560 5697104 1621936 5697864 1618576 5696872 1618000 5696680 -1616624 5698800 1617496 5700904 1618560 5697104 1616624 5698656 -1621944 5698008 1621936 5697864 1618560 5697104 1621488 5701424 -1618560 5697104 1616624 5698800 1617496 5700904 1621488 5701424 -1617496 5700904 1618520 5697240 1616624 5698800 1616600 5698864 -1616624 5698800 1618520 5697240 1618560 5697104 1616624 5698656 -1616624 5698800 1618520 5697240 1616624 5698656 1616616 5698720 -1618560 5697104 1617776 5696792 1616624 5698656 1618520 5697240 -1617776 5696792 1617648 5696792 1616624 5698656 1618520 5697240 -1617648 5696792 1616592 5698624 1616624 5698656 1618520 5697240 -1618560 5697104 1617912 5696744 1617776 5696792 1618520 5697240 -1618560 5697104 1618000 5696680 1617912 5696744 1618520 5697240 -1617776 5696792 1617648 5696792 1618520 5697240 1617912 5696744 -1616624 5698656 1616624 5698800 1618520 5697240 1617648 5696792 -1618520 5697240 1617496 5700904 1618560 5697104 1617912 5696744 -1618560 5697104 1618520 5697240 1617496 5700904 1621488 5701424 -1617496 5700904 1621464 5701464 1621488 5701424 1618520 5697240 -1618560 5697104 1618520 5697240 1621488 5701424 1621944 5698008 -1621488 5701424 1621576 5701360 1621944 5698008 1618520 5697240 -1618560 5697104 1618520 5697240 1621944 5698008 1621936 5697864 -1618520 5697240 1621488 5701424 1621944 5698008 1621936 5697864 -1618560 5697104 1618520 5697240 1621936 5697864 1618576 5696872 -1618560 5697104 1617912 5696744 1618520 5697240 1621936 5697864 -1618520 5697240 1617496 5700904 1621488 5701424 1621944 5698008 -1618520 5697240 1616624 5698800 1617496 5700904 1621488 5701424 -1616624 5698800 1617496 5700904 1618520 5697240 1616624 5698656 -1617496 5700904 1618424 5697416 1616624 5698800 1616600 5698864 -1618520 5697240 1618424 5697416 1617496 5700904 1621488 5701424 -1617496 5700904 1621464 5701464 1621488 5701424 1618424 5697416 -1618520 5697240 1618424 5697416 1621488 5701424 1621944 5698008 -1621488 5701424 1621576 5701360 1621944 5698008 1618424 5697416 -1618520 5697240 1618424 5697416 1621944 5698008 1621936 5697864 -1618424 5697416 1617496 5700904 1621488 5701424 1621944 5698008 -1618520 5697240 1616624 5698800 1618424 5697416 1621944 5698008 -1616624 5698800 1618424 5697416 1618520 5697240 1616624 5698656 -1616624 5698800 1618424 5697416 1616624 5698656 1616616 5698720 -1618520 5697240 1617648 5696792 1616624 5698656 1618424 5697416 -1618520 5697240 1617776 5696792 1617648 5696792 1618424 5697416 -1617648 5696792 1616592 5698624 1616624 5698656 1618424 5697416 -1618520 5697240 1617912 5696744 1617776 5696792 1618424 5697416 -1617776 5696792 1617648 5696792 1618424 5697416 1617912 5696744 -1618520 5697240 1618560 5697104 1617912 5696744 1618424 5697416 -1617648 5696792 1616624 5698656 1618424 5697416 1617776 5696792 -1618424 5697416 1621944 5698008 1618520 5697240 1617912 5696744 -1616624 5698656 1616624 5698800 1618424 5697416 1617648 5696792 -1618424 5697416 1616624 5698800 1617496 5700904 1621488 5701424 -1616624 5698800 1617496 5700904 1618424 5697416 1616624 5698656 -1621488 5701424 1618432 5697448 1617496 5700904 1621464 5701464 -1618424 5697416 1618432 5697448 1621488 5701424 1621944 5698008 -1621488 5701424 1621576 5701360 1621944 5698008 1618432 5697448 -1618424 5697416 1618432 5697448 1621944 5698008 1618520 5697240 -1621944 5698008 1621936 5697864 1618520 5697240 1618432 5697448 -1618432 5697448 1621488 5701424 1621944 5698008 1618520 5697240 -1617496 5700904 1618432 5697448 1618424 5697416 1616624 5698800 -1617496 5700904 1618432 5697448 1616624 5698800 1616600 5698864 -1618424 5697416 1616624 5698800 1618432 5697448 1618520 5697240 -1618424 5697416 1616624 5698656 1616624 5698800 1618432 5697448 -1616624 5698656 1616616 5698720 1616624 5698800 1618432 5697448 -1618424 5697416 1617648 5696792 1616624 5698656 1618432 5697448 -1617648 5696792 1616592 5698624 1616624 5698656 1618432 5697448 -1618424 5697416 1617776 5696792 1617648 5696792 1618432 5697448 -1616624 5698800 1617496 5700904 1618432 5697448 1616624 5698656 -1618424 5697416 1617648 5696792 1618432 5697448 1618520 5697240 -1616624 5698656 1616624 5698800 1618432 5697448 1617648 5696792 -1618432 5697448 1617496 5700904 1621488 5701424 1621944 5698008 -1617496 5700904 1621488 5701424 1618432 5697448 1616624 5698800 -1621944 5698008 1618608 5697568 1621488 5701424 1621576 5701360 -1618432 5697448 1618608 5697568 1621944 5698008 1618520 5697240 -1621944 5698008 1621936 5697864 1618520 5697240 1618608 5697568 -1621936 5697864 1618560 5697104 1618520 5697240 1618608 5697568 -1621936 5697864 1618560 5697104 1618608 5697568 1621944 5698008 -1621936 5697864 1618576 5696872 1618560 5697104 1618608 5697568 -1618432 5697448 1618608 5697568 1618520 5697240 1618424 5697416 -1618520 5697240 1618432 5697448 1618608 5697568 1618560 5697104 -1621488 5701424 1618608 5697568 1618432 5697448 1617496 5700904 -1621488 5701424 1618608 5697568 1617496 5700904 1621464 5701464 -1618432 5697448 1617496 5700904 1618608 5697568 1618520 5697240 -1618432 5697448 1616624 5698800 1617496 5700904 1618608 5697568 -1616624 5698800 1616600 5698864 1617496 5700904 1618608 5697568 -1618432 5697448 1616624 5698656 1616624 5698800 1618608 5697568 -1616624 5698656 1616616 5698720 1616624 5698800 1618608 5697568 -1618432 5697448 1617648 5696792 1616624 5698656 1618608 5697568 -1617496 5700904 1621488 5701424 1618608 5697568 1616624 5698800 -1618432 5697448 1616624 5698656 1618608 5697568 1618520 5697240 -1616624 5698800 1617496 5700904 1618608 5697568 1616624 5698656 -1618608 5697568 1621488 5701424 1621944 5698008 1621936 5697864 -1621488 5701424 1621944 5698008 1618608 5697568 1617496 5700904 -1621488 5701424 1618672 5697656 1617496 5700904 1621464 5701464 -1617496 5700904 1618672 5697656 1618608 5697568 1616624 5698800 -1617496 5700904 1618672 5697656 1616624 5698800 1616600 5698864 -1618608 5697568 1616624 5698656 1616624 5698800 1618672 5697656 -1616624 5698656 1616616 5698720 1616624 5698800 1618672 5697656 -1618608 5697568 1618432 5697448 1616624 5698656 1618672 5697656 -1618432 5697448 1617648 5696792 1616624 5698656 1618672 5697656 -1616624 5698800 1617496 5700904 1618672 5697656 1616624 5698656 -1616624 5698656 1616624 5698800 1618672 5697656 1618432 5697448 -1618672 5697656 1621488 5701424 1618608 5697568 1618432 5697448 -1618608 5697568 1618672 5697656 1621488 5701424 1621944 5698008 -1621488 5701424 1621576 5701360 1621944 5698008 1618672 5697656 -1618608 5697568 1618672 5697656 1621944 5698008 1621936 5697864 -1618608 5697568 1618672 5697656 1621936 5697864 1618560 5697104 -1621936 5697864 1618576 5696872 1618560 5697104 1618672 5697656 -1618560 5697104 1618608 5697568 1618672 5697656 1618576 5696872 -1621936 5697864 1618552 5696712 1618576 5696872 1618672 5697656 -1618608 5697568 1618672 5697656 1618560 5697104 1618520 5697240 -1618672 5697656 1621944 5698008 1621936 5697864 1618576 5696872 -1618608 5697568 1618432 5697448 1618672 5697656 1618560 5697104 -1618672 5697656 1621488 5701424 1621944 5698008 1621936 5697864 -1618672 5697656 1617496 5700904 1621488 5701424 1621944 5698008 -1617496 5700904 1621488 5701424 1618672 5697656 1616624 5698800 -1621488 5701424 1618768 5697872 1617496 5700904 1621464 5701464 -1618672 5697656 1618768 5697872 1621488 5701424 1621944 5698008 -1621488 5701424 1621576 5701360 1621944 5698008 1618768 5697872 -1618672 5697656 1618768 5697872 1621944 5698008 1621936 5697864 -1618672 5697656 1618768 5697872 1621936 5697864 1618576 5696872 -1621936 5697864 1618552 5696712 1618576 5696872 1618768 5697872 -1618672 5697656 1618768 5697872 1618576 5696872 1618560 5697104 -1618768 5697872 1621944 5698008 1621936 5697864 1618576 5696872 -1621944 5698008 1621936 5697864 1618768 5697872 1621576 5701360 -1618672 5697656 1617496 5700904 1618768 5697872 1618576 5696872 -1617496 5700904 1618768 5697872 1618672 5697656 1616624 5698800 -1617496 5700904 1618768 5697872 1616624 5698800 1616600 5698864 -1618672 5697656 1616624 5698656 1616624 5698800 1618768 5697872 -1616624 5698656 1616616 5698720 1616624 5698800 1618768 5697872 -1618672 5697656 1618432 5697448 1616624 5698656 1618768 5697872 -1618672 5697656 1618608 5697568 1618432 5697448 1618768 5697872 -1618432 5697448 1617648 5696792 1616624 5698656 1618768 5697872 -1616624 5698656 1616624 5698800 1618768 5697872 1618432 5697448 -1618768 5697872 1618576 5696872 1618672 5697656 1618432 5697448 -1616624 5698800 1617496 5700904 1618768 5697872 1616624 5698656 -1618768 5697872 1617496 5700904 1621488 5701424 1621576 5701360 -1617496 5700904 1621488 5701424 1618768 5697872 1616624 5698800 -1621576 5701360 1622064 5698152 1621944 5698008 1618768 5697872 -1621576 5701360 1622296 5698320 1622064 5698152 1618768 5697872 -1621576 5701360 1622064 5698152 1618768 5697872 1621488 5701424 -1621944 5698008 1621936 5697864 1618768 5697872 1622064 5698152 -1621488 5701424 1618872 5698008 1617496 5700904 1621464 5701464 -1618768 5697872 1618872 5698008 1621488 5701424 1621576 5701360 -1618768 5697872 1618872 5698008 1621576 5701360 1622064 5698152 -1621576 5701360 1622296 5698320 1622064 5698152 1618872 5698008 -1618872 5698008 1621488 5701424 1621576 5701360 1622064 5698152 -1618768 5697872 1617496 5700904 1618872 5698008 1622064 5698152 -1617496 5700904 1618872 5698008 1618768 5697872 1616624 5698800 -1617496 5700904 1618872 5698008 1616624 5698800 1616600 5698864 -1617496 5700904 1618872 5698008 1616600 5698864 1616256 5699536 -1618768 5697872 1616624 5698656 1616624 5698800 1618872 5698008 -1616624 5698656 1616616 5698720 1616624 5698800 1618872 5698008 -1618768 5697872 1618432 5697448 1616624 5698656 1618872 5698008 -1618872 5698008 1622064 5698152 1618768 5697872 1616624 5698656 -1618872 5698008 1616624 5698656 1616624 5698800 1616600 5698864 -1618872 5698008 1617496 5700904 1621488 5701424 1621576 5701360 -1617496 5700904 1621488 5701424 1618872 5698008 1616600 5698864 -1618768 5697872 1618872 5698008 1622064 5698152 1621944 5698008 -1618872 5698008 1621576 5701360 1622064 5698152 1621944 5698008 -1618768 5697872 1618872 5698008 1621944 5698008 1621936 5697864 -1618768 5697872 1618872 5698008 1621936 5697864 1618576 5696872 -1621936 5697864 1618552 5696712 1618576 5696872 1618872 5698008 -1618768 5697872 1618872 5698008 1618576 5696872 1618672 5697656 -1618576 5696872 1618560 5697104 1618672 5697656 1618872 5698008 -1618872 5698008 1621936 5697864 1618576 5696872 1618672 5697656 -1618872 5698008 1621944 5698008 1621936 5697864 1618576 5696872 -1618768 5697872 1616624 5698656 1618872 5698008 1618672 5697656 -1618872 5698008 1622064 5698152 1621944 5698008 1621936 5697864 -1622064 5698152 1619024 5698144 1621576 5701360 1622296 5698320 -1618872 5698008 1619024 5698144 1622064 5698152 1621944 5698008 -1621576 5701360 1619024 5698144 1618872 5698008 1621488 5701424 -1618872 5698008 1617496 5700904 1621488 5701424 1619024 5698144 -1617496 5700904 1621464 5701464 1621488 5701424 1619024 5698144 -1621488 5701424 1621576 5701360 1619024 5698144 1617496 5700904 -1618872 5698008 1617496 5700904 1619024 5698144 1621944 5698008 -1618872 5698008 1616600 5698864 1617496 5700904 1619024 5698144 -1618872 5698008 1616624 5698800 1616600 5698864 1619024 5698144 -1616600 5698864 1616256 5699536 1617496 5700904 1619024 5698144 -1618872 5698008 1616624 5698656 1616624 5698800 1619024 5698144 -1617496 5700904 1621488 5701424 1619024 5698144 1616600 5698864 -1618872 5698008 1616624 5698800 1619024 5698144 1621944 5698008 -1616600 5698864 1617496 5700904 1619024 5698144 1616624 5698800 -1619024 5698144 1621576 5701360 1622064 5698152 1621944 5698008 -1621576 5701360 1622064 5698152 1619024 5698144 1621488 5701424 -1618872 5698008 1619024 5698144 1621944 5698008 1621936 5697864 -1619024 5698144 1622064 5698152 1621944 5698008 1621936 5697864 -1618872 5698008 1619024 5698144 1621936 5697864 1618576 5696872 -1621936 5697864 1618552 5696712 1618576 5696872 1619024 5698144 -1618872 5698008 1619024 5698144 1618576 5696872 1618672 5697656 -1618576 5696872 1618560 5697104 1618672 5697656 1619024 5698144 -1618560 5697104 1618608 5697568 1618672 5697656 1619024 5698144 -1618872 5698008 1619024 5698144 1618672 5697656 1618768 5697872 -1618672 5697656 1618872 5698008 1619024 5698144 1618560 5697104 -1619024 5698144 1621936 5697864 1618576 5696872 1618560 5697104 -1618872 5698008 1616624 5698800 1619024 5698144 1618672 5697656 -1619024 5698144 1621944 5698008 1621936 5697864 1618576 5696872 -1621488 5701424 1619064 5698200 1617496 5700904 1621464 5701464 -1619024 5698144 1619064 5698200 1621488 5701424 1621576 5701360 -1617496 5700904 1619064 5698200 1619024 5698144 1616600 5698864 -1617496 5700904 1619064 5698200 1616600 5698864 1616256 5699536 -1619024 5698144 1616624 5698800 1616600 5698864 1619064 5698200 -1619024 5698144 1618872 5698008 1616624 5698800 1619064 5698200 -1618872 5698008 1616624 5698656 1616624 5698800 1619064 5698200 -1616600 5698864 1617496 5700904 1619064 5698200 1616624 5698800 -1616624 5698800 1616600 5698864 1619064 5698200 1618872 5698008 -1619024 5698144 1618872 5698008 1619064 5698200 1621576 5701360 -1619024 5698144 1619064 5698200 1621576 5701360 1622064 5698152 -1621576 5701360 1622296 5698320 1622064 5698152 1619064 5698200 -1619064 5698200 1621488 5701424 1621576 5701360 1622064 5698152 -1619024 5698144 1619064 5698200 1622064 5698152 1621944 5698008 -1619024 5698144 1619064 5698200 1621944 5698008 1621936 5697864 -1619064 5698200 1622064 5698152 1621944 5698008 1621936 5697864 -1619024 5698144 1618872 5698008 1619064 5698200 1621936 5697864 -1619064 5698200 1621576 5701360 1622064 5698152 1621944 5698008 -1619064 5698200 1617496 5700904 1621488 5701424 1621576 5701360 -1617496 5700904 1621488 5701424 1619064 5698200 1616600 5698864 -1619024 5698144 1619064 5698200 1621936 5697864 1618576 5696872 -1621488 5701424 1619064 5698240 1617496 5700904 1621464 5701464 -1617496 5700904 1621448 5701528 1621464 5701464 1619064 5698240 -1619064 5698200 1619064 5698240 1621488 5701424 1621576 5701360 -1619064 5698200 1619064 5698240 1621576 5701360 1622064 5698152 -1621576 5701360 1622296 5698320 1622064 5698152 1619064 5698240 -1619064 5698200 1619064 5698240 1622064 5698152 1621944 5698008 -1619064 5698240 1621576 5701360 1622064 5698152 1621944 5698008 -1619064 5698200 1619064 5698240 1621944 5698008 1621936 5697864 -1619064 5698240 1621488 5701424 1621576 5701360 1622064 5698152 -1619064 5698200 1617496 5700904 1619064 5698240 1621944 5698008 -1617496 5700904 1619064 5698240 1619064 5698200 1616600 5698864 -1617496 5700904 1619064 5698240 1616600 5698864 1616256 5699536 -1619064 5698200 1616624 5698800 1616600 5698864 1619064 5698240 -1619064 5698200 1618872 5698008 1616624 5698800 1619064 5698240 -1619064 5698200 1619024 5698144 1618872 5698008 1619064 5698240 -1618872 5698008 1616624 5698656 1616624 5698800 1619064 5698240 -1616624 5698800 1616600 5698864 1619064 5698240 1618872 5698008 -1618872 5698008 1616624 5698800 1619064 5698240 1619024 5698144 -1619064 5698240 1621944 5698008 1619064 5698200 1619024 5698144 -1616600 5698864 1617496 5700904 1619064 5698240 1616624 5698800 -1621488 5701424 1621576 5701360 1619064 5698240 1621464 5701464 -1619064 5698240 1616600 5698864 1617496 5700904 1621464 5701464 -1617496 5700904 1619040 5698280 1616600 5698864 1616256 5699536 -1616600 5698864 1619040 5698280 1619064 5698240 1616624 5698800 -1619064 5698240 1618872 5698008 1616624 5698800 1619040 5698280 -1618872 5698008 1616624 5698656 1616624 5698800 1619040 5698280 -1619064 5698240 1619024 5698144 1618872 5698008 1619040 5698280 -1619064 5698240 1619064 5698200 1619024 5698144 1619040 5698280 -1618872 5698008 1616624 5698800 1619040 5698280 1619024 5698144 -1619024 5698144 1618872 5698008 1619040 5698280 1619064 5698200 -1616624 5698800 1616600 5698864 1619040 5698280 1618872 5698008 -1619040 5698280 1617496 5700904 1619064 5698240 1619064 5698200 -1619064 5698240 1619040 5698280 1617496 5700904 1621464 5701464 -1619064 5698240 1619040 5698280 1621464 5701464 1621488 5701424 -1617496 5700904 1621448 5701528 1621464 5701464 1619040 5698280 -1619064 5698240 1619040 5698280 1621488 5701424 1621576 5701360 -1619040 5698280 1621464 5701464 1621488 5701424 1621576 5701360 -1619064 5698240 1619040 5698280 1621576 5701360 1622064 5698152 -1621576 5701360 1622296 5698320 1622064 5698152 1619040 5698280 -1619064 5698240 1619040 5698280 1622064 5698152 1621944 5698008 -1619064 5698240 1619040 5698280 1621944 5698008 1619064 5698200 -1619040 5698280 1621576 5701360 1622064 5698152 1621944 5698008 -1619040 5698280 1621488 5701424 1621576 5701360 1622064 5698152 -1619064 5698240 1619064 5698200 1619040 5698280 1621944 5698008 -1619040 5698280 1617496 5700904 1621464 5701464 1621488 5701424 -1619040 5698280 1616600 5698864 1617496 5700904 1621464 5701464 -1616600 5698864 1617496 5700904 1619040 5698280 1616624 5698800 -1616624 5698800 1618936 5698304 1619040 5698280 1618872 5698008 -1616624 5698800 1618936 5698304 1618872 5698008 1616624 5698656 -1616624 5698800 1618936 5698304 1616624 5698656 1616616 5698720 -1618872 5698008 1618768 5697872 1616624 5698656 1618936 5698304 -1618768 5697872 1618432 5697448 1616624 5698656 1618936 5698304 -1616624 5698656 1616624 5698800 1618936 5698304 1618768 5697872 -1619040 5698280 1619024 5698144 1618872 5698008 1618936 5698304 -1619040 5698280 1619064 5698200 1619024 5698144 1618936 5698304 -1618936 5698304 1619024 5698144 1618872 5698008 1618768 5697872 -1616624 5698800 1616600 5698864 1618936 5698304 1616624 5698656 -1618936 5698304 1616600 5698864 1619040 5698280 1619024 5698144 -1619040 5698280 1618936 5698304 1616600 5698864 1617496 5700904 -1616600 5698864 1616256 5699536 1617496 5700904 1618936 5698304 -1618936 5698304 1616624 5698800 1616600 5698864 1617496 5700904 -1619040 5698280 1618936 5698304 1617496 5700904 1621464 5701464 -1619040 5698280 1619024 5698144 1618936 5698304 1617496 5700904 -1616624 5698656 1618864 5698296 1618768 5697872 1618432 5697448 -1616624 5698656 1618936 5698304 1618864 5698296 1618432 5697448 -1618864 5698296 1618936 5698304 1618768 5697872 1618432 5697448 -1616624 5698656 1618864 5698296 1618432 5697448 1617648 5696792 -1618768 5697872 1618672 5697656 1618432 5697448 1618864 5698296 -1618768 5697872 1618864 5698296 1618936 5698304 1618872 5698008 -1618768 5697872 1618432 5697448 1618864 5698296 1618872 5698008 -1618936 5698304 1618864 5698296 1616624 5698656 1616624 5698800 -1618864 5698296 1618432 5697448 1616624 5698656 1616624 5698800 -1616624 5698656 1616616 5698720 1616624 5698800 1618864 5698296 -1618936 5698304 1619024 5698144 1618872 5698008 1618864 5698296 -1618872 5698008 1618768 5697872 1618864 5698296 1619024 5698144 -1618936 5698304 1619040 5698280 1619024 5698144 1618864 5698296 -1618864 5698296 1616624 5698800 1618936 5698304 1619024 5698144 -1618936 5698304 1618864 5698296 1616624 5698800 1616600 5698864 -1618864 5698296 1616624 5698656 1616624 5698800 1616600 5698864 -1618936 5698304 1618864 5698296 1616600 5698864 1617496 5700904 -1616600 5698864 1616256 5699536 1617496 5700904 1618864 5698296 -1618936 5698304 1619024 5698144 1618864 5698296 1617496 5700904 -1618864 5698296 1616624 5698800 1616600 5698864 1617496 5700904 -1618936 5698304 1618864 5698296 1617496 5700904 1619040 5698280 -1618864 5698296 1618736 5698224 1616624 5698656 1616624 5698800 -1618864 5698296 1618432 5697448 1618736 5698224 1616624 5698800 -1618736 5698224 1618432 5697448 1616624 5698656 1616624 5698800 -1616624 5698656 1616616 5698720 1616624 5698800 1618736 5698224 -1616624 5698656 1618736 5698224 1618432 5697448 1617648 5696792 -1618432 5697448 1618736 5698224 1618864 5698296 1618768 5697872 -1618736 5698224 1616624 5698800 1618864 5698296 1618768 5697872 -1618864 5698296 1618872 5698008 1618768 5697872 1618736 5698224 -1618864 5698296 1618872 5698008 1618736 5698224 1616624 5698800 -1618432 5697448 1616624 5698656 1618736 5698224 1618768 5697872 -1618768 5697872 1618432 5697448 1618736 5698224 1618872 5698008 -1618432 5697448 1618736 5698224 1618768 5697872 1618672 5697656 -1618432 5697448 1616624 5698656 1618736 5698224 1618672 5697656 -1618432 5697448 1618736 5698224 1618672 5697656 1618608 5697568 -1618736 5698224 1618872 5698008 1618768 5697872 1618672 5697656 -1618864 5698296 1619024 5698144 1618872 5698008 1618736 5698224 -1618864 5698296 1618736 5698224 1616624 5698800 1616600 5698864 -1618736 5698224 1616624 5698656 1616624 5698800 1616600 5698864 -1618864 5698296 1618872 5698008 1618736 5698224 1616600 5698864 -1618864 5698296 1618736 5698224 1616600 5698864 1617496 5700904 -1618864 5698296 1618872 5698008 1618736 5698224 1617496 5700904 -1616600 5698864 1616256 5699536 1617496 5700904 1618736 5698224 -1618736 5698224 1616624 5698800 1616600 5698864 1617496 5700904 -1618864 5698296 1618736 5698224 1617496 5700904 1618936 5698304 -1618736 5698224 1618664 5698144 1616624 5698656 1616624 5698800 -1618736 5698224 1618664 5698144 1616624 5698800 1616600 5698864 -1618736 5698224 1618432 5697448 1618664 5698144 1616624 5698800 -1618432 5697448 1618664 5698144 1618736 5698224 1618672 5697656 -1618664 5698144 1616624 5698800 1618736 5698224 1618672 5697656 -1618664 5698144 1618432 5697448 1616624 5698656 1616624 5698800 -1618432 5697448 1616624 5698656 1618664 5698144 1618672 5697656 -1616624 5698656 1616616 5698720 1616624 5698800 1618664 5698144 -1618432 5697448 1618664 5698144 1618672 5697656 1618608 5697568 -1616624 5698656 1618664 5698144 1618432 5697448 1617648 5696792 -1618736 5698224 1618768 5697872 1618672 5697656 1618664 5698144 -1618736 5698224 1618768 5697872 1618664 5698144 1616624 5698800 -1618672 5697656 1618432 5697448 1618664 5698144 1618768 5697872 -1618736 5698224 1618872 5698008 1618768 5697872 1618664 5698144 -1618736 5698224 1618864 5698296 1618872 5698008 1618664 5698144 -1618736 5698224 1618872 5698008 1618664 5698144 1616624 5698800 -1618768 5697872 1618672 5697656 1618664 5698144 1618872 5698008 -1618664 5698144 1618568 5698056 1616624 5698656 1616624 5698800 -1618664 5698144 1618568 5698056 1616624 5698800 1618736 5698224 -1618664 5698144 1618432 5697448 1618568 5698056 1616624 5698800 -1618432 5697448 1618568 5698056 1618664 5698144 1618672 5697656 -1618664 5698144 1618768 5697872 1618672 5697656 1618568 5698056 -1618568 5698056 1616624 5698800 1618664 5698144 1618768 5697872 -1618672 5697656 1618432 5697448 1618568 5698056 1618768 5697872 -1618568 5698056 1618432 5697448 1616624 5698656 1616624 5698800 -1618432 5697448 1616624 5698656 1618568 5698056 1618672 5697656 -1616624 5698656 1616616 5698720 1616624 5698800 1618568 5698056 -1618432 5697448 1618568 5698056 1618672 5697656 1618608 5697568 -1618568 5698056 1618768 5697872 1618672 5697656 1618608 5697568 -1618432 5697448 1616624 5698656 1618568 5698056 1618608 5697568 -1616624 5698656 1618568 5698056 1618432 5697448 1617648 5696792 -1618664 5698144 1618872 5698008 1618768 5697872 1618568 5698056 -1618568 5698056 1618440 5697904 1616624 5698656 1616624 5698800 -1618432 5697448 1618440 5697904 1618568 5698056 1618608 5697568 -1618440 5697904 1616624 5698656 1618568 5698056 1618608 5697568 -1618432 5697448 1616624 5698656 1618440 5697904 1618608 5697568 -1618568 5698056 1618672 5697656 1618608 5697568 1618440 5697904 -1618568 5698056 1618768 5697872 1618672 5697656 1618440 5697904 -1618568 5698056 1618664 5698144 1618768 5697872 1618440 5697904 -1618568 5698056 1618768 5697872 1618440 5697904 1616624 5698656 -1618608 5697568 1618432 5697448 1618440 5697904 1618672 5697656 -1618672 5697656 1618608 5697568 1618440 5697904 1618768 5697872 -1616624 5698656 1618440 5697904 1618432 5697448 1617648 5696792 -1616624 5698656 1618568 5698056 1618440 5697904 1617648 5696792 -1618440 5697904 1618608 5697568 1618432 5697448 1617648 5696792 -1616624 5698656 1618440 5697904 1617648 5696792 1616592 5698624 -1617648 5696792 1616528 5698576 1616592 5698624 1618440 5697904 -1616624 5698656 1618568 5698056 1618440 5697904 1616592 5698624 -1618432 5697448 1618424 5697416 1617648 5696792 1618440 5697904 -1618440 5697904 1618432 5697448 1617648 5696792 1616592 5698624 -1618432 5697448 1618344 5697768 1618440 5697904 1618608 5697568 -1618440 5697904 1618672 5697656 1618608 5697568 1618344 5697768 -1618344 5697768 1617648 5696792 1618440 5697904 1618672 5697656 -1618608 5697568 1618432 5697448 1618344 5697768 1618672 5697656 -1618432 5697448 1617648 5696792 1618344 5697768 1618608 5697568 -1617648 5696792 1618344 5697768 1618432 5697448 1618424 5697416 -1617648 5696792 1618440 5697904 1618344 5697768 1618424 5697416 -1618344 5697768 1618608 5697568 1618432 5697448 1618424 5697416 -1617648 5696792 1618344 5697768 1618424 5697416 1617776 5696792 -1618424 5697416 1617912 5696744 1617776 5696792 1618344 5697768 -1617648 5696792 1618440 5697904 1618344 5697768 1617776 5696792 -1618344 5697768 1618432 5697448 1618424 5697416 1617776 5696792 -1618440 5697904 1618768 5697872 1618672 5697656 1618344 5697768 -1618440 5697904 1618344 5697768 1617648 5696792 1616592 5698624 -1617648 5696792 1616528 5698576 1616592 5698624 1618344 5697768 -1618440 5697904 1618672 5697656 1618344 5697768 1616592 5698624 -1618344 5697768 1617776 5696792 1617648 5696792 1616592 5698624 -1618440 5697904 1618344 5697768 1616592 5698624 1616624 5698656 -1618440 5697904 1618344 5697768 1616624 5698656 1618568 5698056 -1618440 5697904 1618672 5697656 1618344 5697768 1616624 5698656 -1618344 5697768 1617648 5696792 1616592 5698624 1616624 5698656 -1616592 5698624 1618280 5697752 1617648 5696792 1616528 5698576 -1617648 5696792 1618280 5697752 1618344 5697768 1617776 5696792 -1618280 5697752 1616592 5698624 1618344 5697768 1617776 5696792 -1617648 5696792 1616592 5698624 1618280 5697752 1617776 5696792 -1618344 5697768 1618424 5697416 1617776 5696792 1618280 5697752 -1618424 5697416 1617912 5696744 1617776 5696792 1618280 5697752 -1617776 5696792 1617648 5696792 1618280 5697752 1618424 5697416 -1618344 5697768 1618424 5697416 1618280 5697752 1616592 5698624 -1618344 5697768 1618432 5697448 1618424 5697416 1618280 5697752 -1618344 5697768 1618432 5697448 1618280 5697752 1616592 5698624 -1618344 5697768 1618608 5697568 1618432 5697448 1618280 5697752 -1618424 5697416 1617776 5696792 1618280 5697752 1618432 5697448 -1618344 5697768 1618280 5697752 1616592 5698624 1616624 5698656 -1618344 5697768 1618432 5697448 1618280 5697752 1616624 5698656 -1618280 5697752 1617648 5696792 1616592 5698624 1616624 5698656 -1618344 5697768 1618280 5697752 1616624 5698656 1618440 5697904 -1616624 5698656 1618568 5698056 1618440 5697904 1618280 5697752 -1618344 5697768 1618432 5697448 1618280 5697752 1618440 5697904 -1618280 5697752 1616592 5698624 1616624 5698656 1618440 5697904 -1618440 5697904 1618240 5697816 1616624 5698656 1618568 5698056 -1616624 5698656 1616624 5698800 1618568 5698056 1618240 5697816 -1616624 5698800 1618664 5698144 1618568 5698056 1618240 5697816 -1618568 5698056 1618440 5697904 1618240 5697816 1616624 5698800 -1618440 5697904 1618280 5697752 1618240 5697816 1618568 5698056 -1618240 5697816 1618280 5697752 1616624 5698656 1616624 5698800 -1618280 5697752 1618240 5697816 1618440 5697904 1618344 5697768 -1618280 5697752 1616624 5698656 1618240 5697816 1618344 5697768 -1618240 5697816 1618568 5698056 1618440 5697904 1618344 5697768 -1616624 5698656 1616616 5698720 1616624 5698800 1618240 5697816 -1616624 5698656 1618240 5697816 1618280 5697752 1616592 5698624 -1618280 5697752 1617648 5696792 1616592 5698624 1618240 5697816 -1617648 5696792 1616528 5698576 1616592 5698624 1618240 5697816 -1617648 5696792 1617584 5696752 1616528 5698576 1618240 5697816 -1617648 5696792 1616528 5698576 1618240 5697816 1618280 5697752 -1618240 5697816 1618344 5697768 1618280 5697752 1617648 5696792 -1618280 5697752 1617776 5696792 1617648 5696792 1618240 5697816 -1616624 5698656 1616624 5698800 1618240 5697816 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1618240 5697816 -1616592 5698624 1616624 5698656 1618240 5697816 1616528 5698576 -1618568 5698056 1618216 5697928 1616624 5698800 1618664 5698144 -1616624 5698800 1618736 5698224 1618664 5698144 1618216 5697928 -1616624 5698800 1616600 5698864 1618736 5698224 1618216 5697928 -1618664 5698144 1618568 5698056 1618216 5697928 1618736 5698224 -1616624 5698800 1618216 5697928 1618240 5697816 1616624 5698656 -1618240 5697816 1618216 5697928 1618568 5698056 1618440 5697904 -1618240 5697816 1618216 5697928 1618440 5697904 1618344 5697768 -1618216 5697928 1618440 5697904 1618240 5697816 1616624 5698656 -1618240 5697816 1616592 5698624 1616624 5698656 1618216 5697928 -1616624 5698656 1616624 5698800 1618216 5697928 1616592 5698624 -1618240 5697816 1616592 5698624 1618216 5697928 1618440 5697904 -1618568 5698056 1618440 5697904 1618216 5697928 1618664 5698144 -1618216 5697928 1616624 5698656 1616624 5698800 1618736 5698224 -1616624 5698800 1618216 5697928 1616624 5698656 1616616 5698720 -1618240 5697816 1616528 5698576 1616592 5698624 1618216 5697928 -1618240 5697816 1617648 5696792 1616528 5698576 1618216 5697928 -1617648 5696792 1617584 5696752 1616528 5698576 1618216 5697928 -1618240 5697816 1618280 5697752 1617648 5696792 1618216 5697928 -1618240 5697816 1617648 5696792 1618216 5697928 1618440 5697904 -1616592 5698624 1616624 5698656 1618216 5697928 1616528 5698576 -1616528 5698576 1616560 5698616 1616592 5698624 1618216 5697928 -1616528 5698576 1616592 5698624 1618216 5697928 1617648 5696792 -1618736 5698224 1618216 5697968 1616624 5698800 1616600 5698864 -1618216 5697928 1618216 5697968 1618736 5698224 1618664 5698144 -1618216 5697928 1618216 5697968 1618664 5698144 1618568 5698056 -1618216 5697968 1618736 5698224 1618664 5698144 1618568 5698056 -1618216 5697928 1618216 5697968 1618568 5698056 1618440 5697904 -1618216 5697968 1618664 5698144 1618568 5698056 1618440 5697904 -1618216 5697928 1618216 5697968 1618440 5697904 1618240 5697816 -1618216 5697928 1616624 5698800 1618216 5697968 1618440 5697904 -1616624 5698800 1618216 5697968 1618216 5697928 1616624 5698656 -1618216 5697928 1616592 5698624 1616624 5698656 1618216 5697968 -1618216 5697928 1616528 5698576 1616592 5698624 1618216 5697968 -1618216 5697968 1618440 5697904 1618216 5697928 1616592 5698624 -1616624 5698656 1616624 5698800 1618216 5697968 1616592 5698624 -1618216 5697968 1616624 5698800 1618736 5698224 1618664 5698144 -1616624 5698800 1618736 5698224 1618216 5697968 1616624 5698656 -1616624 5698800 1618216 5697968 1616624 5698656 1616616 5698720 -1618736 5698224 1618192 5698016 1616624 5698800 1616600 5698864 -1618216 5697968 1618192 5698016 1618736 5698224 1618664 5698144 -1618216 5697968 1618192 5698016 1618664 5698144 1618568 5698056 -1618216 5697968 1618192 5698016 1618568 5698056 1618440 5697904 -1618192 5698016 1618664 5698144 1618568 5698056 1618440 5697904 -1618216 5697968 1618192 5698016 1618440 5697904 1618216 5697928 -1618192 5698016 1618736 5698224 1618664 5698144 1618568 5698056 -1618216 5697968 1616624 5698800 1618192 5698016 1618440 5697904 -1616624 5698800 1618192 5698016 1618216 5697968 1616624 5698656 -1618216 5697968 1616592 5698624 1616624 5698656 1618192 5698016 -1618216 5697968 1618216 5697928 1616592 5698624 1618192 5698016 -1618216 5697928 1616528 5698576 1616592 5698624 1618192 5698016 -1618216 5697928 1616528 5698576 1618192 5698016 1618216 5697968 -1616592 5698624 1616624 5698656 1618192 5698016 1616528 5698576 -1618192 5698016 1618440 5697904 1618216 5697968 1618216 5697928 -1616624 5698656 1616624 5698800 1618192 5698016 1616592 5698624 -1618736 5698224 1618664 5698144 1618192 5698016 1616600 5698864 -1618192 5698016 1616624 5698656 1616624 5698800 1616600 5698864 -1616528 5698576 1616560 5698616 1616592 5698624 1618192 5698016 -1616624 5698800 1618192 5698016 1616624 5698656 1616616 5698720 -1618216 5697928 1617648 5696792 1616528 5698576 1618192 5698016 -1617648 5696792 1617584 5696752 1616528 5698576 1618192 5698016 -1618216 5697928 1618240 5697816 1617648 5696792 1618192 5698016 -1618216 5697928 1617648 5696792 1618192 5698016 1618216 5697968 -1616528 5698576 1616592 5698624 1618192 5698016 1617648 5696792 -1618736 5698224 1618192 5698016 1616600 5698864 1617496 5700904 -1616600 5698864 1618056 5698136 1618192 5698016 1616624 5698800 -1618192 5698016 1618056 5698136 1618736 5698224 1618664 5698144 -1618192 5698016 1618056 5698136 1618664 5698144 1618568 5698056 -1618192 5698016 1618056 5698136 1618568 5698056 1618440 5697904 -1618056 5698136 1618736 5698224 1618664 5698144 1618568 5698056 -1618056 5698136 1618568 5698056 1618192 5698016 1616624 5698800 -1618192 5698016 1616624 5698656 1616624 5698800 1618056 5698136 -1616624 5698800 1616600 5698864 1618056 5698136 1616624 5698656 -1618192 5698016 1616592 5698624 1616624 5698656 1618056 5698136 -1618192 5698016 1616528 5698576 1616592 5698624 1618056 5698136 -1618192 5698016 1617648 5696792 1616528 5698576 1618056 5698136 -1617648 5696792 1617584 5696752 1616528 5698576 1618056 5698136 -1616528 5698576 1616592 5698624 1618056 5698136 1617648 5696792 -1616592 5698624 1616624 5698656 1618056 5698136 1616528 5698576 -1618192 5698016 1617648 5696792 1618056 5698136 1618568 5698056 -1616624 5698656 1616624 5698800 1618056 5698136 1616592 5698624 -1618056 5698136 1616600 5698864 1618736 5698224 1618664 5698144 -1616600 5698864 1618736 5698224 1618056 5698136 1616624 5698800 -1616528 5698576 1616560 5698616 1616592 5698624 1618056 5698136 -1616624 5698656 1616616 5698720 1616624 5698800 1618056 5698136 -1618192 5698016 1618216 5697928 1617648 5696792 1618056 5698136 -1618216 5697928 1618240 5697816 1617648 5696792 1618056 5698136 -1618192 5698016 1618216 5697968 1618216 5697928 1618056 5698136 -1618240 5697816 1618280 5697752 1617648 5696792 1618056 5698136 -1617648 5696792 1616528 5698576 1618056 5698136 1618240 5697816 -1618192 5698016 1618216 5697928 1618056 5698136 1618568 5698056 -1618216 5697928 1618240 5697816 1618056 5698136 1618192 5698016 -1618736 5698224 1618056 5698136 1616600 5698864 1617496 5700904 -1618736 5698224 1618664 5698144 1618056 5698136 1617496 5700904 -1618056 5698136 1616624 5698800 1616600 5698864 1617496 5700904 -1616600 5698864 1616256 5699536 1617496 5700904 1618056 5698136 -1618736 5698224 1618056 5698136 1617496 5700904 1618864 5698296 -1618736 5698224 1618664 5698144 1618056 5698136 1618864 5698296 -1618056 5698136 1616600 5698864 1617496 5700904 1618864 5698296 -1617496 5700904 1618936 5698304 1618864 5698296 1618056 5698136 -1616600 5698864 1618040 5698176 1618056 5698136 1616624 5698800 -1618056 5698136 1616624 5698656 1616624 5698800 1618040 5698176 -1618056 5698136 1616592 5698624 1616624 5698656 1618040 5698176 -1616624 5698656 1616624 5698800 1618040 5698176 1616592 5698624 -1618056 5698136 1616528 5698576 1616592 5698624 1618040 5698176 -1618056 5698136 1617648 5696792 1616528 5698576 1618040 5698176 -1616592 5698624 1616624 5698656 1618040 5698176 1616528 5698576 -1618040 5698176 1617496 5700904 1618056 5698136 1616528 5698576 -1616624 5698800 1616600 5698864 1618040 5698176 1616624 5698656 -1616600 5698864 1617496 5700904 1618040 5698176 1616624 5698800 -1616528 5698576 1616560 5698616 1616592 5698624 1618040 5698176 -1616624 5698656 1616616 5698720 1616624 5698800 1618040 5698176 -1617496 5700904 1618040 5698176 1616600 5698864 1616256 5699536 -1618056 5698136 1618040 5698176 1617496 5700904 1618864 5698296 -1618056 5698136 1616528 5698576 1618040 5698176 1618864 5698296 -1618040 5698176 1616600 5698864 1617496 5700904 1618864 5698296 -1617496 5700904 1618936 5698304 1618864 5698296 1618040 5698176 -1618056 5698136 1618040 5698176 1618864 5698296 1618736 5698224 -1618056 5698136 1618040 5698176 1618736 5698224 1618664 5698144 -1618056 5698136 1618040 5698176 1618664 5698144 1618568 5698056 -1618056 5698136 1618040 5698176 1618568 5698056 1618192 5698016 -1618568 5698056 1618440 5697904 1618192 5698016 1618040 5698176 -1618040 5698176 1618664 5698144 1618568 5698056 1618192 5698016 -1618040 5698176 1618736 5698224 1618664 5698144 1618568 5698056 -1618056 5698136 1616528 5698576 1618040 5698176 1618192 5698016 -1618040 5698176 1617496 5700904 1618864 5698296 1618736 5698224 -1618040 5698176 1618864 5698296 1618736 5698224 1618664 5698144 -1617496 5700904 1618040 5698232 1618040 5698176 1616600 5698864 -1618040 5698232 1618864 5698296 1618040 5698176 1616600 5698864 -1618040 5698176 1616624 5698800 1616600 5698864 1618040 5698232 -1618040 5698176 1616624 5698656 1616624 5698800 1618040 5698232 -1618040 5698176 1616592 5698624 1616624 5698656 1618040 5698232 -1616600 5698864 1617496 5700904 1618040 5698232 1616624 5698800 -1618040 5698176 1616624 5698656 1618040 5698232 1618864 5698296 -1616624 5698800 1616600 5698864 1618040 5698232 1616624 5698656 -1617496 5700904 1618864 5698296 1618040 5698232 1616600 5698864 -1616624 5698656 1616616 5698720 1616624 5698800 1618040 5698232 -1617496 5700904 1618040 5698232 1616600 5698864 1616256 5699536 -1618040 5698176 1618040 5698232 1618864 5698296 1618736 5698224 -1618040 5698176 1616624 5698656 1618040 5698232 1618736 5698224 -1618040 5698232 1617496 5700904 1618864 5698296 1618736 5698224 -1618864 5698296 1618040 5698232 1617496 5700904 1618936 5698304 -1618040 5698176 1618040 5698232 1618736 5698224 1618664 5698144 -1618040 5698176 1618040 5698232 1618664 5698144 1618568 5698056 -1618040 5698176 1618040 5698232 1618568 5698056 1618192 5698016 -1618568 5698056 1618440 5697904 1618192 5698016 1618040 5698232 -1618040 5698176 1618040 5698232 1618192 5698016 1618056 5698136 -1618040 5698232 1618568 5698056 1618192 5698016 1618056 5698136 -1618040 5698232 1618664 5698144 1618568 5698056 1618192 5698016 -1618040 5698176 1616624 5698656 1618040 5698232 1618056 5698136 -1618040 5698232 1618864 5698296 1618736 5698224 1618664 5698144 -1618040 5698232 1618736 5698224 1618664 5698144 1618568 5698056 -1618040 5698232 1618184 5698312 1618864 5698296 1618736 5698224 -1618040 5698232 1617496 5700904 1618184 5698312 1618736 5698224 -1617496 5700904 1618184 5698312 1618040 5698232 1616600 5698864 -1618040 5698232 1616624 5698800 1616600 5698864 1618184 5698312 -1618040 5698232 1616624 5698656 1616624 5698800 1618184 5698312 -1618184 5698312 1618736 5698224 1618040 5698232 1616624 5698800 -1616600 5698864 1617496 5700904 1618184 5698312 1616624 5698800 -1618184 5698312 1617496 5700904 1618864 5698296 1618736 5698224 -1617496 5700904 1618864 5698296 1618184 5698312 1616600 5698864 -1617496 5700904 1618184 5698312 1616600 5698864 1616256 5699536 -1618040 5698232 1618184 5698312 1618736 5698224 1618664 5698144 -1618184 5698312 1618864 5698296 1618736 5698224 1618664 5698144 -1618040 5698232 1616624 5698800 1618184 5698312 1618664 5698144 -1618864 5698296 1618184 5698312 1617496 5700904 1618936 5698304 -1618040 5698232 1618184 5698312 1618664 5698144 1618568 5698056 -1618040 5698232 1618184 5698312 1618568 5698056 1618192 5698016 -1618568 5698056 1618440 5697904 1618192 5698016 1618184 5698312 -1618040 5698232 1618184 5698312 1618192 5698016 1618056 5698136 -1618040 5698232 1618184 5698312 1618056 5698136 1618040 5698176 -1618184 5698312 1618192 5698016 1618056 5698136 1618040 5698176 -1618184 5698312 1618568 5698056 1618192 5698016 1618056 5698136 -1618040 5698232 1616624 5698800 1618184 5698312 1618040 5698176 -1618184 5698312 1618736 5698224 1618664 5698144 1618568 5698056 -1618184 5698312 1618664 5698144 1618568 5698056 1618192 5698016 -1618184 5698312 1618392 5698368 1618864 5698296 1618736 5698224 -1618184 5698312 1618392 5698368 1618736 5698224 1618664 5698144 -1618392 5698368 1618864 5698296 1618736 5698224 1618664 5698144 -1618184 5698312 1617496 5700904 1618392 5698368 1618664 5698144 -1617496 5700904 1618392 5698368 1618184 5698312 1616600 5698864 -1618392 5698368 1617496 5700904 1618864 5698296 1618736 5698224 -1618184 5698312 1618392 5698368 1618664 5698144 1618568 5698056 -1618392 5698368 1618736 5698224 1618664 5698144 1618568 5698056 -1618184 5698312 1617496 5700904 1618392 5698368 1618568 5698056 -1618864 5698296 1618392 5698368 1617496 5700904 1618936 5698304 -1618864 5698296 1618736 5698224 1618392 5698368 1618936 5698304 -1618392 5698368 1618184 5698312 1617496 5700904 1618936 5698304 -1618184 5698312 1618392 5698368 1618568 5698056 1618192 5698016 -1618568 5698056 1618440 5697904 1618192 5698016 1618392 5698368 -1618184 5698312 1618392 5698368 1618192 5698016 1618056 5698136 -1618184 5698312 1617496 5700904 1618392 5698368 1618192 5698016 -1618392 5698368 1618664 5698144 1618568 5698056 1618192 5698016 -1617496 5700904 1619040 5698280 1618936 5698304 1618392 5698368 -1617496 5700904 1618440 5698392 1618392 5698368 1618184 5698312 -1617496 5700904 1618440 5698392 1618184 5698312 1616600 5698864 -1618440 5698392 1618936 5698304 1618392 5698368 1618184 5698312 -1617496 5700904 1618936 5698304 1618440 5698392 1618184 5698312 -1618392 5698368 1618440 5698392 1618936 5698304 1618864 5698296 -1618392 5698368 1618440 5698392 1618864 5698296 1618736 5698224 -1618392 5698368 1618440 5698392 1618736 5698224 1618664 5698144 -1618392 5698368 1618440 5698392 1618664 5698144 1618568 5698056 -1618440 5698392 1618736 5698224 1618664 5698144 1618568 5698056 -1618440 5698392 1618864 5698296 1618736 5698224 1618664 5698144 -1618392 5698368 1618184 5698312 1618440 5698392 1618568 5698056 -1618440 5698392 1617496 5700904 1618936 5698304 1618864 5698296 -1618392 5698368 1618440 5698392 1618568 5698056 1618192 5698016 -1618440 5698392 1618936 5698304 1618864 5698296 1618736 5698224 -1618936 5698304 1618440 5698392 1617496 5700904 1619040 5698280 -1618440 5698392 1618480 5698400 1618936 5698304 1618864 5698296 -1618440 5698392 1617496 5700904 1618480 5698400 1618864 5698296 -1617496 5700904 1618480 5698400 1618440 5698392 1618184 5698312 -1618480 5698400 1617496 5700904 1618936 5698304 1618864 5698296 -1618440 5698392 1618480 5698400 1618864 5698296 1618736 5698224 -1618440 5698392 1618480 5698400 1618736 5698224 1618664 5698144 -1618440 5698392 1618480 5698400 1618664 5698144 1618568 5698056 -1618440 5698392 1618480 5698400 1618568 5698056 1618392 5698368 -1618480 5698400 1618664 5698144 1618568 5698056 1618392 5698368 -1618480 5698400 1618736 5698224 1618664 5698144 1618568 5698056 -1618480 5698400 1618936 5698304 1618864 5698296 1618736 5698224 -1618440 5698392 1617496 5700904 1618480 5698400 1618392 5698368 -1618568 5698056 1618192 5698016 1618392 5698368 1618480 5698400 -1618480 5698400 1618864 5698296 1618736 5698224 1618664 5698144 -1618936 5698304 1618480 5698400 1617496 5700904 1619040 5698280 -1618480 5698400 1618528 5698432 1618936 5698304 1618864 5698296 -1618480 5698400 1618528 5698432 1618864 5698296 1618736 5698224 -1618528 5698432 1618936 5698304 1618864 5698296 1618736 5698224 -1618480 5698400 1617496 5700904 1618528 5698432 1618736 5698224 -1617496 5700904 1618528 5698432 1618480 5698400 1618440 5698392 -1617496 5700904 1618528 5698432 1618440 5698392 1618184 5698312 -1618528 5698432 1618736 5698224 1618480 5698400 1618440 5698392 -1618528 5698432 1617496 5700904 1618936 5698304 1618864 5698296 -1617496 5700904 1618936 5698304 1618528 5698432 1618440 5698392 -1618480 5698400 1618528 5698432 1618736 5698224 1618664 5698144 -1618936 5698304 1618528 5698432 1617496 5700904 1619040 5698280 -1618528 5698432 1618536 5698512 1618936 5698304 1618864 5698296 -1618528 5698432 1618536 5698512 1618864 5698296 1618736 5698224 -1618528 5698432 1617496 5700904 1618536 5698512 1618864 5698296 -1617496 5700904 1618536 5698512 1618528 5698432 1618440 5698392 -1617496 5700904 1618536 5698512 1618440 5698392 1618184 5698312 -1617496 5700904 1618536 5698512 1618184 5698312 1616600 5698864 -1618184 5698312 1616624 5698800 1616600 5698864 1618536 5698512 -1618440 5698392 1618392 5698368 1618184 5698312 1618536 5698512 -1618536 5698512 1618392 5698368 1618184 5698312 1616600 5698864 -1618528 5698432 1618480 5698400 1618440 5698392 1618536 5698512 -1618536 5698512 1618864 5698296 1618528 5698432 1618480 5698400 -1618536 5698512 1618480 5698400 1618440 5698392 1618392 5698368 -1618536 5698512 1617496 5700904 1618936 5698304 1618864 5698296 -1617496 5700904 1618536 5698512 1616600 5698864 1616256 5699536 -1617496 5700904 1618936 5698304 1618536 5698512 1616600 5698864 -1618936 5698304 1618536 5698512 1617496 5700904 1619040 5698280 -1618936 5698304 1618864 5698296 1618536 5698512 1619040 5698280 -1618536 5698512 1616600 5698864 1617496 5700904 1619040 5698280 -1617496 5700904 1621464 5701464 1619040 5698280 1618536 5698512 -1617496 5700904 1621448 5701528 1621464 5701464 1618536 5698512 -1617496 5700904 1621464 5701464 1618536 5698512 1616600 5698864 -1621464 5701464 1621488 5701424 1619040 5698280 1618536 5698512 -1621488 5701424 1621576 5701360 1619040 5698280 1618536 5698512 -1621464 5701464 1621488 5701424 1618536 5698512 1617496 5700904 -1619040 5698280 1618936 5698304 1618536 5698512 1621488 5701424 -1616600 5698864 1618504 5698568 1618536 5698512 1618184 5698312 -1616600 5698864 1618504 5698568 1618184 5698312 1616624 5698800 -1618536 5698512 1618392 5698368 1618184 5698312 1618504 5698568 -1618184 5698312 1616600 5698864 1618504 5698568 1618392 5698368 -1618536 5698512 1618440 5698392 1618392 5698368 1618504 5698568 -1618392 5698368 1618184 5698312 1618504 5698568 1618440 5698392 -1618536 5698512 1618480 5698400 1618440 5698392 1618504 5698568 -1617496 5700904 1618504 5698568 1616600 5698864 1616256 5699536 -1618536 5698512 1618504 5698568 1617496 5700904 1621464 5701464 -1617496 5700904 1621448 5701528 1621464 5701464 1618504 5698568 -1618504 5698568 1621464 5701464 1618536 5698512 1618440 5698392 -1618504 5698568 1616600 5698864 1617496 5700904 1621464 5701464 -1616600 5698864 1617496 5700904 1618504 5698568 1618184 5698312 -1618536 5698512 1618504 5698568 1621464 5701464 1621488 5701424 -1618504 5698568 1617496 5700904 1621464 5701464 1621488 5701424 -1618536 5698512 1618440 5698392 1618504 5698568 1621488 5701424 -1618536 5698512 1618504 5698568 1621488 5701424 1619040 5698280 -1621488 5701424 1621576 5701360 1619040 5698280 1618504 5698568 -1618536 5698512 1618440 5698392 1618504 5698568 1619040 5698280 -1618504 5698568 1621464 5701464 1621488 5701424 1619040 5698280 -1618536 5698512 1618504 5698568 1619040 5698280 1618936 5698304 -1618536 5698512 1618504 5698568 1618936 5698304 1618864 5698296 -1618536 5698512 1618440 5698392 1618504 5698568 1618936 5698304 -1618504 5698568 1621488 5701424 1619040 5698280 1618936 5698304 -1617496 5700904 1618424 5698632 1616600 5698864 1616256 5699536 -1618504 5698568 1618424 5698632 1617496 5700904 1621464 5701464 -1617496 5700904 1621448 5701528 1621464 5701464 1618424 5698632 -1618504 5698568 1618424 5698632 1621464 5701464 1621488 5701424 -1618424 5698632 1617496 5700904 1621464 5701464 1621488 5701424 -1618504 5698568 1616600 5698864 1618424 5698632 1621488 5701424 -1616600 5698864 1618424 5698632 1618504 5698568 1618184 5698312 -1616600 5698864 1618424 5698632 1618184 5698312 1616624 5698800 -1618184 5698312 1618040 5698232 1616624 5698800 1618424 5698632 -1618040 5698232 1616624 5698656 1616624 5698800 1618424 5698632 -1616624 5698800 1616600 5698864 1618424 5698632 1618040 5698232 -1618504 5698568 1618392 5698368 1618184 5698312 1618424 5698632 -1618504 5698568 1618440 5698392 1618392 5698368 1618424 5698632 -1618392 5698368 1618184 5698312 1618424 5698632 1618440 5698392 -1618504 5698568 1618536 5698512 1618440 5698392 1618424 5698632 -1618424 5698632 1621488 5701424 1618504 5698568 1618440 5698392 -1618424 5698632 1618392 5698368 1618184 5698312 1618040 5698232 -1618424 5698632 1616600 5698864 1617496 5700904 1621464 5701464 -1616600 5698864 1617496 5700904 1618424 5698632 1616624 5698800 -1618504 5698568 1618424 5698632 1621488 5701424 1619040 5698280 -1621488 5701424 1621576 5701360 1619040 5698280 1618424 5698632 -1618424 5698632 1621464 5701464 1621488 5701424 1619040 5698280 -1618504 5698568 1618440 5698392 1618424 5698632 1619040 5698280 -1618504 5698568 1618424 5698632 1619040 5698280 1618936 5698304 -1618040 5698232 1618336 5698616 1618424 5698632 1618184 5698312 -1616624 5698800 1618336 5698616 1618040 5698232 1616624 5698656 -1618424 5698632 1618336 5698616 1616624 5698800 1616600 5698864 -1618424 5698632 1618392 5698368 1618184 5698312 1618336 5698616 -1618184 5698312 1618040 5698232 1618336 5698616 1618392 5698368 -1618424 5698632 1618440 5698392 1618392 5698368 1618336 5698616 -1618424 5698632 1618504 5698568 1618440 5698392 1618336 5698616 -1618440 5698392 1618392 5698368 1618336 5698616 1618504 5698568 -1618504 5698568 1618536 5698512 1618440 5698392 1618336 5698616 -1618392 5698368 1618184 5698312 1618336 5698616 1618440 5698392 -1618336 5698616 1616600 5698864 1618424 5698632 1618504 5698568 -1618424 5698632 1618336 5698616 1616600 5698864 1617496 5700904 -1618336 5698616 1616624 5698800 1616600 5698864 1617496 5700904 -1616600 5698864 1616256 5699536 1617496 5700904 1618336 5698616 -1618424 5698632 1618336 5698616 1617496 5700904 1621464 5701464 -1618424 5698632 1618504 5698568 1618336 5698616 1617496 5700904 -1618336 5698616 1618040 5698232 1616624 5698800 1616600 5698864 -1618040 5698232 1616624 5698800 1618336 5698616 1618184 5698312 -1616624 5698800 1618144 5698512 1618040 5698232 1616624 5698656 -1618040 5698232 1618040 5698176 1616624 5698656 1618144 5698512 -1616624 5698800 1618144 5698512 1616624 5698656 1616616 5698720 -1618336 5698616 1618144 5698512 1616624 5698800 1616600 5698864 -1618336 5698616 1618144 5698512 1616600 5698864 1617496 5700904 -1616600 5698864 1616256 5699536 1617496 5700904 1618144 5698512 -1618336 5698616 1618144 5698512 1617496 5700904 1618424 5698632 -1618144 5698512 1616624 5698800 1616600 5698864 1617496 5700904 -1618336 5698616 1618040 5698232 1618144 5698512 1617496 5700904 -1618040 5698232 1618144 5698512 1618336 5698616 1618184 5698312 -1618336 5698616 1618392 5698368 1618184 5698312 1618144 5698512 -1618336 5698616 1618440 5698392 1618392 5698368 1618144 5698512 -1618144 5698512 1617496 5700904 1618336 5698616 1618392 5698368 -1618184 5698312 1618040 5698232 1618144 5698512 1618392 5698368 -1616624 5698800 1616600 5698864 1618144 5698512 1616624 5698656 -1618144 5698512 1618184 5698312 1618040 5698232 1616624 5698656 -1616624 5698656 1617824 5698416 1618040 5698232 1618040 5698176 -1616624 5698656 1617824 5698416 1618040 5698176 1616592 5698624 -1618040 5698176 1616528 5698576 1616592 5698624 1617824 5698416 -1616592 5698624 1616624 5698656 1617824 5698416 1616528 5698576 -1618040 5698176 1618056 5698136 1616528 5698576 1617824 5698416 -1618056 5698136 1617648 5696792 1616528 5698576 1617824 5698416 -1617648 5696792 1617584 5696752 1616528 5698576 1617824 5698416 -1618056 5698136 1618240 5697816 1617648 5696792 1617824 5698416 -1618056 5698136 1617648 5696792 1617824 5698416 1618040 5698176 -1616528 5698576 1616592 5698624 1617824 5698416 1617648 5696792 -1617824 5698416 1618040 5698232 1618040 5698176 1618056 5698136 -1618144 5698512 1617824 5698416 1616624 5698656 1616624 5698800 -1616528 5698576 1616560 5698616 1616592 5698624 1617824 5698416 -1616624 5698656 1616616 5698720 1616624 5698800 1617824 5698416 -1618144 5698512 1617824 5698416 1616624 5698800 1616600 5698864 -1617824 5698416 1616624 5698656 1616624 5698800 1616600 5698864 -1618144 5698512 1617824 5698416 1616600 5698864 1617496 5700904 -1618144 5698512 1617824 5698416 1617496 5700904 1618336 5698616 -1616600 5698864 1616256 5699536 1617496 5700904 1617824 5698416 -1617824 5698416 1616624 5698800 1616600 5698864 1617496 5700904 -1618144 5698512 1618040 5698232 1617824 5698416 1617496 5700904 -1618040 5698232 1617824 5698416 1618144 5698512 1618184 5698312 -1616624 5698656 1616624 5698800 1617824 5698416 1616592 5698624 -1617824 5698416 1618144 5698512 1618040 5698232 1618040 5698176 -1616528 5698576 1617776 5698392 1617648 5696792 1617584 5696752 -1616528 5698576 1617776 5698392 1617584 5696752 1616456 5698536 -1617648 5696792 1617776 5698392 1617824 5698416 1618056 5698136 -1617648 5696792 1617776 5698392 1618056 5698136 1618240 5697816 -1617824 5698416 1618040 5698176 1618056 5698136 1617776 5698392 -1618056 5698136 1617648 5696792 1617776 5698392 1618040 5698176 -1617824 5698416 1617776 5698392 1616528 5698576 1616592 5698624 -1617824 5698416 1617776 5698392 1616592 5698624 1616624 5698656 -1617776 5698392 1616528 5698576 1616592 5698624 1616624 5698656 -1617824 5698416 1618040 5698232 1618040 5698176 1617776 5698392 -1618040 5698176 1618056 5698136 1617776 5698392 1618040 5698232 -1616528 5698576 1616560 5698616 1616592 5698624 1617776 5698392 -1617824 5698416 1617776 5698392 1616624 5698656 1616624 5698800 -1617776 5698392 1616592 5698624 1616624 5698656 1616624 5698800 -1617824 5698416 1617776 5698392 1616624 5698800 1616600 5698864 -1616624 5698656 1616616 5698720 1616624 5698800 1617776 5698392 -1617824 5698416 1617776 5698392 1616600 5698864 1617496 5700904 -1617776 5698392 1616624 5698656 1616624 5698800 1616600 5698864 -1617776 5698392 1616600 5698864 1617824 5698416 1618040 5698232 -1617824 5698416 1618144 5698512 1618040 5698232 1617776 5698392 -1616528 5698576 1616592 5698624 1617776 5698392 1617584 5696752 -1617776 5698392 1618056 5698136 1617648 5696792 1617584 5696752 -1616528 5698576 1617680 5698304 1617584 5696752 1616456 5698536 -1617584 5696752 1615648 5697056 1616456 5698536 1617680 5698304 -1617584 5696752 1617680 5698304 1617776 5698392 1617648 5696792 -1617776 5698392 1617680 5698304 1616528 5698576 1616592 5698624 -1617776 5698392 1617680 5698304 1616592 5698624 1616624 5698656 -1617776 5698392 1617680 5698304 1616624 5698656 1616624 5698800 -1617680 5698304 1616592 5698624 1616624 5698656 1616624 5698800 -1616528 5698576 1616560 5698616 1616592 5698624 1617680 5698304 -1616624 5698656 1616616 5698720 1616624 5698800 1617680 5698304 -1617776 5698392 1617680 5698304 1616624 5698800 1616600 5698864 -1617680 5698304 1616528 5698576 1616592 5698624 1616624 5698656 -1617680 5698304 1616624 5698800 1617776 5698392 1617648 5696792 -1617776 5698392 1618056 5698136 1617648 5696792 1617680 5698304 -1617648 5696792 1617584 5696752 1617680 5698304 1618056 5698136 -1618056 5698136 1618240 5697816 1617648 5696792 1617680 5698304 -1617648 5696792 1617584 5696752 1617680 5698304 1618240 5697816 -1618056 5698136 1618216 5697928 1618240 5697816 1617680 5698304 -1618240 5697816 1618280 5697752 1617648 5696792 1617680 5698304 -1617776 5698392 1618040 5698176 1618056 5698136 1617680 5698304 -1617776 5698392 1618040 5698232 1618040 5698176 1617680 5698304 -1618040 5698176 1618056 5698136 1617680 5698304 1618040 5698232 -1617776 5698392 1617824 5698416 1618040 5698232 1617680 5698304 -1617776 5698392 1618040 5698232 1617680 5698304 1616624 5698800 -1618056 5698136 1618240 5697816 1617680 5698304 1618040 5698176 -1616528 5698576 1616592 5698624 1617680 5698304 1616456 5698536 -1617680 5698304 1617648 5696792 1617584 5696752 1616456 5698536 -1616456 5698536 1617584 5698152 1617584 5696752 1615648 5697056 -1617680 5698304 1617584 5698152 1616456 5698536 1616528 5698576 -1617680 5698304 1617584 5698152 1616528 5698576 1616592 5698624 -1617584 5698152 1616456 5698536 1616528 5698576 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1617584 5698152 -1617680 5698304 1617584 5698152 1616592 5698624 1616624 5698656 -1617680 5698304 1617584 5698152 1616624 5698656 1616624 5698800 -1617584 5698152 1616528 5698576 1616592 5698624 1616624 5698656 -1617680 5698304 1617584 5696752 1617584 5698152 1616624 5698656 -1617584 5696752 1617584 5698152 1617680 5698304 1617648 5696792 -1617680 5698304 1618240 5697816 1617648 5696792 1617584 5698152 -1618240 5697816 1618280 5697752 1617648 5696792 1617584 5698152 -1617680 5698304 1618056 5698136 1618240 5697816 1617584 5698152 -1618240 5697816 1617648 5696792 1617584 5698152 1618056 5698136 -1618056 5698136 1618216 5697928 1618240 5697816 1617584 5698152 -1617680 5698304 1618040 5698176 1618056 5698136 1617584 5698152 -1618056 5698136 1618240 5697816 1617584 5698152 1618040 5698176 -1617680 5698304 1618040 5698232 1618040 5698176 1617584 5698152 -1617584 5698152 1616624 5698656 1617680 5698304 1618040 5698176 -1617648 5696792 1617584 5696752 1617584 5698152 1618240 5697816 -1617584 5698152 1617584 5696752 1616456 5698536 1616528 5698576 -1617584 5696752 1616456 5698536 1617584 5698152 1617648 5696792 -1616456 5698536 1617552 5698032 1617584 5696752 1615648 5697056 -1617584 5696752 1617520 5696640 1615648 5697056 1617552 5698032 -1616456 5698536 1617552 5698032 1615648 5697056 1616392 5698520 -1617552 5698032 1617584 5696752 1615648 5697056 1616392 5698520 -1615648 5697056 1615528 5697784 1616392 5698520 1617552 5698032 -1617584 5698152 1617552 5698032 1616456 5698536 1616528 5698576 -1617584 5698152 1617552 5698032 1616528 5698576 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1617552 5698032 -1617584 5698152 1617552 5698032 1616592 5698624 1616624 5698656 -1617552 5698032 1616528 5698576 1616592 5698624 1616624 5698656 -1617584 5698152 1617552 5698032 1616624 5698656 1617680 5698304 -1617552 5698032 1616456 5698536 1616528 5698576 1616592 5698624 -1617584 5698152 1617584 5696752 1617552 5698032 1616624 5698656 -1617584 5696752 1617552 5698032 1617584 5698152 1617648 5696792 -1617584 5698152 1618240 5697816 1617648 5696792 1617552 5698032 -1617584 5698152 1618056 5698136 1618240 5697816 1617552 5698032 -1618056 5698136 1618216 5697928 1618240 5697816 1617552 5698032 -1618056 5698136 1618216 5697928 1617552 5698032 1617584 5698152 -1618240 5697816 1618280 5697752 1617648 5696792 1617552 5698032 -1618280 5697752 1617776 5696792 1617648 5696792 1617552 5698032 -1618280 5697752 1618424 5697416 1617776 5696792 1617552 5698032 -1618280 5697752 1617776 5696792 1617552 5698032 1618240 5697816 -1617584 5698152 1618040 5698176 1618056 5698136 1617552 5698032 -1618240 5697816 1618280 5697752 1617552 5698032 1618216 5697928 -1617552 5698032 1616624 5698656 1617584 5698152 1618056 5698136 -1617648 5696792 1617584 5696752 1617552 5698032 1617776 5696792 -1616456 5698536 1616528 5698576 1617552 5698032 1616392 5698520 -1617552 5698032 1617648 5696792 1617584 5696752 1615648 5697056 -1618056 5698136 1618192 5698016 1618216 5697928 1617552 5698032 -1617776 5696792 1617600 5697776 1618280 5697752 1618424 5697416 -1617776 5696792 1617600 5697776 1618424 5697416 1617912 5696744 -1618280 5697752 1617600 5697776 1617552 5698032 1618240 5697816 -1617552 5698032 1617600 5697776 1617776 5696792 1617648 5696792 -1617552 5698032 1618216 5697928 1618240 5697816 1617600 5697776 -1617552 5698032 1618056 5698136 1618216 5697928 1617600 5697776 -1617552 5698032 1617584 5698152 1618056 5698136 1617600 5697776 -1618240 5697816 1618280 5697752 1617600 5697776 1618216 5697928 -1618216 5697928 1618240 5697816 1617600 5697776 1618056 5698136 -1617552 5698032 1617600 5697776 1617648 5696792 1617584 5696752 -1617600 5697776 1617776 5696792 1617648 5696792 1617584 5696752 -1617600 5697776 1617584 5696752 1617552 5698032 1618056 5698136 -1617552 5698032 1617600 5697776 1617584 5696752 1615648 5697056 -1617584 5696752 1617520 5696640 1615648 5697056 1617600 5697776 -1617552 5698032 1617600 5697776 1615648 5697056 1616392 5698520 -1617552 5698032 1617600 5697776 1616392 5698520 1616456 5698536 -1617600 5697776 1615648 5697056 1616392 5698520 1616456 5698536 -1615648 5697056 1615528 5697784 1616392 5698520 1617600 5697776 -1617600 5697776 1617648 5696792 1617584 5696752 1615648 5697056 -1617552 5698032 1617600 5697776 1616456 5698536 1616528 5698576 -1617552 5698032 1618056 5698136 1617600 5697776 1616456 5698536 -1617600 5697776 1617584 5696752 1615648 5697056 1616392 5698520 -1617776 5696792 1617648 5696792 1617600 5697776 1618424 5697416 -1617600 5697776 1618240 5697816 1618280 5697752 1618424 5697416 -1618280 5697752 1618432 5697448 1618424 5697416 1617600 5697776 -1618056 5698136 1618192 5698016 1618216 5697928 1617600 5697776 -1617600 5697776 1617616 5697656 1617648 5696792 1617584 5696752 -1617600 5697776 1617616 5697656 1617584 5696752 1615648 5697056 -1617584 5696752 1617520 5696640 1615648 5697056 1617616 5697656 -1617616 5697656 1617648 5696792 1617584 5696752 1615648 5697056 -1617600 5697776 1617616 5697656 1615648 5697056 1616392 5698520 -1617600 5697776 1617616 5697656 1616392 5698520 1616456 5698536 -1615648 5697056 1615528 5697784 1616392 5698520 1617616 5697656 -1617616 5697656 1617584 5696752 1615648 5697056 1616392 5698520 -1617776 5696792 1617616 5697656 1617600 5697776 1618424 5697416 -1617776 5696792 1617616 5697656 1618424 5697416 1617912 5696744 -1617600 5697776 1618280 5697752 1618424 5697416 1617616 5697656 -1618424 5697416 1617776 5696792 1617616 5697656 1618280 5697752 -1617600 5697776 1618280 5697752 1617616 5697656 1616392 5698520 -1617600 5697776 1618240 5697816 1618280 5697752 1617616 5697656 -1618280 5697752 1618424 5697416 1617616 5697656 1618240 5697816 -1617600 5697776 1618216 5697928 1618240 5697816 1617616 5697656 -1617600 5697776 1618240 5697816 1617616 5697656 1616392 5698520 -1617616 5697656 1617776 5696792 1617648 5696792 1617584 5696752 -1617776 5696792 1617648 5696792 1617616 5697656 1618424 5697416 -1618280 5697752 1618432 5697448 1618424 5697416 1617616 5697656 -1615648 5697056 1617528 5697432 1617584 5696752 1617520 5696640 -1615648 5697056 1617528 5697432 1617520 5696640 1615696 5696632 -1617584 5696752 1617528 5697432 1617616 5697656 1617648 5696792 -1617616 5697656 1617528 5697432 1615648 5697056 1616392 5698520 -1615648 5697056 1615528 5697784 1616392 5698520 1617528 5697432 -1617616 5697656 1617528 5697432 1616392 5698520 1617600 5697776 -1616392 5698520 1616456 5698536 1617600 5697776 1617528 5697432 -1616456 5698536 1617552 5698032 1617600 5697776 1617528 5697432 -1616456 5698536 1617552 5698032 1617528 5697432 1616392 5698520 -1617528 5697432 1615648 5697056 1616392 5698520 1616456 5698536 -1616456 5698536 1616528 5698576 1617552 5698032 1617528 5697432 -1617600 5697776 1617616 5697656 1617528 5697432 1617552 5698032 -1617616 5697656 1617776 5696792 1617648 5696792 1617528 5697432 -1617648 5696792 1617584 5696752 1617528 5697432 1617776 5696792 -1617528 5697432 1617600 5697776 1617616 5697656 1617776 5696792 -1617616 5697656 1618424 5697416 1617776 5696792 1617528 5697432 -1618424 5697416 1617912 5696744 1617776 5696792 1617528 5697432 -1617616 5697656 1618280 5697752 1618424 5697416 1617528 5697432 -1617776 5696792 1617648 5696792 1617528 5697432 1618424 5697416 -1617616 5697656 1618424 5697416 1617528 5697432 1617600 5697776 -1615648 5697056 1616392 5698520 1617528 5697432 1617520 5696640 -1617528 5697432 1617648 5696792 1617584 5696752 1617520 5696640 -1615648 5697056 1617496 5697392 1617520 5696640 1615696 5696632 -1617520 5696640 1617496 5697392 1617528 5697432 1617584 5696752 -1617528 5697432 1617496 5697392 1615648 5697056 1616392 5698520 -1615648 5697056 1615528 5697784 1616392 5698520 1617496 5697392 -1617528 5697432 1617496 5697392 1616392 5698520 1616456 5698536 -1617528 5697432 1617496 5697392 1616456 5698536 1617552 5698032 -1617528 5697432 1617496 5697392 1617552 5698032 1617600 5697776 -1617496 5697392 1616456 5698536 1617552 5698032 1617600 5697776 -1617496 5697392 1616392 5698520 1616456 5698536 1617552 5698032 -1616456 5698536 1616528 5698576 1617552 5698032 1617496 5697392 -1617528 5697432 1617496 5697392 1617600 5697776 1617616 5697656 -1617496 5697392 1615648 5697056 1616392 5698520 1616456 5698536 -1617496 5697392 1617600 5697776 1617528 5697432 1617584 5696752 -1617528 5697432 1617648 5696792 1617584 5696752 1617496 5697392 -1617584 5696752 1617520 5696640 1617496 5697392 1617648 5696792 -1617528 5697432 1617776 5696792 1617648 5696792 1617496 5697392 -1617528 5697432 1618424 5697416 1617776 5696792 1617496 5697392 -1617528 5697432 1617776 5696792 1617496 5697392 1617600 5697776 -1617648 5696792 1617584 5696752 1617496 5697392 1617776 5696792 -1617496 5697392 1617520 5696640 1615648 5697056 1616392 5698520 -1617520 5696640 1615648 5697056 1617496 5697392 1617584 5696752 -1615648 5697056 1617416 5697368 1617520 5696640 1615696 5696632 -1617520 5696640 1617424 5696248 1615696 5696632 1617416 5697368 -1617496 5697392 1617416 5697368 1615648 5697056 1616392 5698520 -1615648 5697056 1615528 5697784 1616392 5698520 1617416 5697368 -1617496 5697392 1617416 5697368 1616392 5698520 1616456 5698536 -1617496 5697392 1617416 5697368 1616456 5698536 1617552 5698032 -1617496 5697392 1617416 5697368 1617552 5698032 1617600 5697776 -1617496 5697392 1617416 5697368 1617600 5697776 1617528 5697432 -1617416 5697368 1617552 5698032 1617600 5697776 1617528 5697432 -1617416 5697368 1616456 5698536 1617552 5698032 1617600 5697776 -1616456 5698536 1616528 5698576 1617552 5698032 1617416 5697368 -1617600 5697776 1617616 5697656 1617528 5697432 1617416 5697368 -1617600 5697776 1617616 5697656 1617416 5697368 1617552 5698032 -1617528 5697432 1617496 5697392 1617416 5697368 1617616 5697656 -1617416 5697368 1616392 5698520 1616456 5698536 1617552 5698032 -1617416 5697368 1615648 5697056 1616392 5698520 1616456 5698536 -1617496 5697392 1617520 5696640 1617416 5697368 1617528 5697432 -1617520 5696640 1617416 5697368 1617496 5697392 1617584 5696752 -1617496 5697392 1617648 5696792 1617584 5696752 1617416 5697368 -1617496 5697392 1617776 5696792 1617648 5696792 1617416 5697368 -1617416 5697368 1617528 5697432 1617496 5697392 1617648 5696792 -1617584 5696752 1617520 5696640 1617416 5697368 1617648 5696792 -1615648 5697056 1616392 5698520 1617416 5697368 1615696 5696632 -1617416 5697368 1617584 5696752 1617520 5696640 1615696 5696632 -1616392 5698520 1617352 5697392 1615648 5697056 1615528 5697784 -1616392 5698520 1617352 5697392 1615528 5697784 1615720 5698296 -1617416 5697368 1617352 5697392 1616392 5698520 1616456 5698536 -1617416 5697368 1617352 5697392 1616456 5698536 1617552 5698032 -1617416 5697368 1617352 5697392 1617552 5698032 1617600 5697776 -1617416 5697368 1617352 5697392 1617600 5697776 1617616 5697656 -1617352 5697392 1617552 5698032 1617600 5697776 1617616 5697656 -1616456 5698536 1616528 5698576 1617552 5698032 1617352 5697392 -1617416 5697368 1617352 5697392 1617616 5697656 1617528 5697432 -1617352 5697392 1617600 5697776 1617616 5697656 1617528 5697432 -1617416 5697368 1617352 5697392 1617528 5697432 1617496 5697392 -1617352 5697392 1616456 5698536 1617552 5698032 1617600 5697776 -1617352 5697392 1616392 5698520 1616456 5698536 1617552 5698032 -1615648 5697056 1617352 5697392 1617416 5697368 1615696 5696632 -1617416 5697368 1617520 5696640 1615696 5696632 1617352 5697392 -1617520 5696640 1617424 5696248 1615696 5696632 1617352 5697392 -1615696 5696632 1615648 5697056 1617352 5697392 1617520 5696640 -1617416 5697368 1617520 5696640 1617352 5697392 1617528 5697432 -1617416 5697368 1617584 5696752 1617520 5696640 1617352 5697392 -1617520 5696640 1615696 5696632 1617352 5697392 1617584 5696752 -1617416 5697368 1617648 5696792 1617584 5696752 1617352 5697392 -1617416 5697368 1617584 5696752 1617352 5697392 1617528 5697432 -1616392 5698520 1616456 5698536 1617352 5697392 1615528 5697784 -1617352 5697392 1615696 5696632 1615648 5697056 1615528 5697784 -1616392 5698520 1617304 5697448 1615528 5697784 1615720 5698296 -1615528 5697784 1617304 5697448 1617352 5697392 1615648 5697056 -1617352 5697392 1617304 5697448 1616392 5698520 1616456 5698536 -1617352 5697392 1617304 5697448 1616456 5698536 1617552 5698032 -1616456 5698536 1616528 5698576 1617552 5698032 1617304 5697448 -1616528 5698576 1616592 5698624 1617552 5698032 1617304 5697448 -1617352 5697392 1617304 5697448 1617552 5698032 1617600 5697776 -1617352 5697392 1617304 5697448 1617600 5697776 1617616 5697656 -1617352 5697392 1617304 5697448 1617616 5697656 1617528 5697432 -1617304 5697448 1617600 5697776 1617616 5697656 1617528 5697432 -1617352 5697392 1617304 5697448 1617528 5697432 1617416 5697368 -1617304 5697448 1617552 5698032 1617600 5697776 1617616 5697656 -1617552 5698032 1617600 5697776 1617304 5697448 1616528 5698576 -1617304 5697448 1616392 5698520 1616456 5698536 1616528 5698576 -1617304 5697448 1617528 5697432 1617352 5697392 1615648 5697056 -1617352 5697392 1615696 5696632 1615648 5697056 1617304 5697448 -1615648 5697056 1615528 5697784 1617304 5697448 1615696 5696632 -1617352 5697392 1617520 5696640 1615696 5696632 1617304 5697448 -1617352 5697392 1617584 5696752 1617520 5696640 1617304 5697448 -1617520 5696640 1617424 5696248 1615696 5696632 1617304 5697448 -1617352 5697392 1617520 5696640 1617304 5697448 1617528 5697432 -1615696 5696632 1615648 5697056 1617304 5697448 1617520 5696640 -1617304 5697448 1615528 5697784 1616392 5698520 1616456 5698536 -1615528 5697784 1616392 5698520 1617304 5697448 1615648 5697056 -1617552 5698032 1617248 5697568 1616528 5698576 1616592 5698624 -1617552 5698032 1617248 5697568 1616592 5698624 1616624 5698656 -1616528 5698576 1616560 5698616 1616592 5698624 1617248 5697568 -1616528 5698576 1617248 5697568 1617304 5697448 1616456 5698536 -1617304 5697448 1617248 5697568 1617552 5698032 1617600 5697776 -1617304 5697448 1617248 5697568 1617600 5697776 1617616 5697656 -1617304 5697448 1617248 5697568 1617616 5697656 1617528 5697432 -1617304 5697448 1617248 5697568 1617528 5697432 1617352 5697392 -1617248 5697568 1617600 5697776 1617616 5697656 1617528 5697432 -1617248 5697568 1617552 5698032 1617600 5697776 1617616 5697656 -1617304 5697448 1616392 5698520 1616456 5698536 1617248 5697568 -1616456 5698536 1616528 5698576 1617248 5697568 1616392 5698520 -1617304 5697448 1615528 5697784 1616392 5698520 1617248 5697568 -1615528 5697784 1615720 5698296 1616392 5698520 1617248 5697568 -1616392 5698520 1616456 5698536 1617248 5697568 1615528 5697784 -1617248 5697568 1617528 5697432 1617304 5697448 1615528 5697784 -1617304 5697448 1615648 5697056 1615528 5697784 1617248 5697568 -1617304 5697448 1615696 5696632 1615648 5697056 1617248 5697568 -1615528 5697784 1616392 5698520 1617248 5697568 1615648 5697056 -1617304 5697448 1615648 5697056 1617248 5697568 1617528 5697432 -1617248 5697568 1616456 5698536 1616528 5698576 1616592 5698624 -1617552 5698032 1617600 5697776 1617248 5697568 1616592 5698624 -1617552 5698032 1617232 5697704 1616592 5698624 1616624 5698656 -1617232 5697704 1617248 5697568 1616592 5698624 1616624 5698656 -1617552 5698032 1617232 5697704 1616624 5698656 1617584 5698152 -1616592 5698624 1617232 5697704 1617248 5697568 1616528 5698576 -1616592 5698624 1616624 5698656 1617232 5697704 1616528 5698576 -1616592 5698624 1617232 5697704 1616528 5698576 1616560 5698616 -1617232 5697704 1617552 5698032 1617248 5697568 1616528 5698576 -1617248 5697568 1616456 5698536 1616528 5698576 1617232 5697704 -1616528 5698576 1616592 5698624 1617232 5697704 1616456 5698536 -1617248 5697568 1616392 5698520 1616456 5698536 1617232 5697704 -1617248 5697568 1615528 5697784 1616392 5698520 1617232 5697704 -1615528 5697784 1615720 5698296 1616392 5698520 1617232 5697704 -1616392 5698520 1616456 5698536 1617232 5697704 1615528 5697784 -1617248 5697568 1615648 5697056 1615528 5697784 1617232 5697704 -1615528 5697784 1616392 5698520 1617232 5697704 1615648 5697056 -1617248 5697568 1617304 5697448 1615648 5697056 1617232 5697704 -1617248 5697568 1615648 5697056 1617232 5697704 1617552 5698032 -1616456 5698536 1616528 5698576 1617232 5697704 1616392 5698520 -1617552 5698032 1617248 5697568 1617232 5697704 1616624 5698656 -1617248 5697568 1617232 5697704 1617552 5698032 1617600 5697776 -1617248 5697568 1617232 5697704 1617600 5697776 1617616 5697656 -1617248 5697568 1617232 5697704 1617616 5697656 1617528 5697432 -1617248 5697568 1615648 5697056 1617232 5697704 1617616 5697656 -1617232 5697704 1616624 5698656 1617552 5698032 1617600 5697776 -1617232 5697704 1617552 5698032 1617600 5697776 1617616 5697656 -1616624 5698656 1617240 5697752 1617232 5697704 1616592 5698624 -1617240 5697752 1617552 5698032 1617232 5697704 1616592 5698624 -1617232 5697704 1616528 5698576 1616592 5698624 1617240 5697752 -1616592 5698624 1616624 5698656 1617240 5697752 1616528 5698576 -1617232 5697704 1616528 5698576 1617240 5697752 1617552 5698032 -1616624 5698656 1617552 5698032 1617240 5697752 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1617240 5697752 -1617552 5698032 1617240 5697752 1616624 5698656 1617584 5698152 -1617552 5698032 1617232 5697704 1617240 5697752 1617584 5698152 -1617240 5697752 1616592 5698624 1616624 5698656 1617584 5698152 -1616624 5698656 1617680 5698304 1617584 5698152 1617240 5697752 -1617232 5697704 1616456 5698536 1616528 5698576 1617240 5697752 -1617232 5697704 1616456 5698536 1617240 5697752 1617552 5698032 -1616528 5698576 1616592 5698624 1617240 5697752 1616456 5698536 -1617232 5697704 1616392 5698520 1616456 5698536 1617240 5697752 -1617232 5697704 1616392 5698520 1617240 5697752 1617552 5698032 -1616456 5698536 1616528 5698576 1617240 5697752 1616392 5698520 -1617232 5697704 1615528 5697784 1616392 5698520 1617240 5697752 -1617232 5697704 1617240 5697752 1617552 5698032 1617600 5697776 -1617232 5697704 1616392 5698520 1617240 5697752 1617600 5697776 -1617240 5697752 1617584 5698152 1617552 5698032 1617600 5697776 -1617232 5697704 1617240 5697752 1617600 5697776 1617616 5697656 -1616624 5698656 1617224 5697920 1617240 5697752 1616592 5698624 -1617240 5697752 1616528 5698576 1616592 5698624 1617224 5697920 -1617240 5697752 1616456 5698536 1616528 5698576 1617224 5697920 -1616528 5698576 1616592 5698624 1617224 5697920 1616456 5698536 -1617224 5697920 1617584 5698152 1617240 5697752 1616456 5698536 -1616592 5698624 1616624 5698656 1617224 5697920 1616528 5698576 -1616624 5698656 1617584 5698152 1617224 5697920 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1617224 5697920 -1617584 5698152 1617224 5697920 1616624 5698656 1617680 5698304 -1617240 5697752 1617224 5697920 1617584 5698152 1617552 5698032 -1617240 5697752 1617224 5697920 1617552 5698032 1617600 5697776 -1617240 5697752 1616456 5698536 1617224 5697920 1617600 5697776 -1617224 5697920 1616624 5698656 1617584 5698152 1617552 5698032 -1617224 5697920 1617584 5698152 1617552 5698032 1617600 5697776 -1617240 5697752 1616392 5698520 1616456 5698536 1617224 5697920 -1616456 5698536 1616528 5698576 1617224 5697920 1616392 5698520 -1617240 5697752 1616392 5698520 1617224 5697920 1617600 5697776 -1617240 5697752 1617232 5697704 1616392 5698520 1617224 5697920 -1617240 5697752 1617232 5697704 1617224 5697920 1617600 5697776 -1616392 5698520 1616456 5698536 1617224 5697920 1617232 5697704 -1617232 5697704 1615528 5697784 1616392 5698520 1617224 5697920 -1617240 5697752 1617224 5697920 1617600 5697776 1617232 5697704 -1617224 5697920 1617248 5698112 1617584 5698152 1617552 5698032 -1617224 5697920 1616624 5698656 1617248 5698112 1617552 5698032 -1616624 5698656 1617248 5698112 1617224 5697920 1616592 5698624 -1617224 5697920 1616528 5698576 1616592 5698624 1617248 5698112 -1617224 5697920 1616456 5698536 1616528 5698576 1617248 5698112 -1617224 5697920 1616392 5698520 1616456 5698536 1617248 5698112 -1616528 5698576 1616592 5698624 1617248 5698112 1616456 5698536 -1617248 5698112 1617552 5698032 1617224 5697920 1616456 5698536 -1616592 5698624 1616624 5698656 1617248 5698112 1616528 5698576 -1617248 5698112 1616624 5698656 1617584 5698152 1617552 5698032 -1616624 5698656 1617584 5698152 1617248 5698112 1616592 5698624 -1616528 5698576 1616560 5698616 1616592 5698624 1617248 5698112 -1617584 5698152 1617248 5698112 1616624 5698656 1617680 5698304 -1617584 5698152 1617552 5698032 1617248 5698112 1617680 5698304 -1617248 5698112 1616592 5698624 1616624 5698656 1617680 5698304 -1616624 5698656 1616624 5698800 1617680 5698304 1617248 5698112 -1617224 5697920 1617248 5698112 1617552 5698032 1617600 5697776 -1616624 5698656 1617288 5698200 1617248 5698112 1616592 5698624 -1617248 5698112 1616528 5698576 1616592 5698624 1617288 5698200 -1617288 5698200 1617680 5698304 1617248 5698112 1616592 5698624 -1616624 5698656 1617680 5698304 1617288 5698200 1616592 5698624 -1617680 5698304 1617288 5698200 1616624 5698656 1616624 5698800 -1617680 5698304 1617248 5698112 1617288 5698200 1616624 5698800 -1617288 5698200 1616592 5698624 1616624 5698656 1616624 5698800 -1617680 5698304 1617288 5698200 1616624 5698800 1617776 5698392 -1617680 5698304 1617248 5698112 1617288 5698200 1617776 5698392 -1617288 5698200 1616624 5698656 1616624 5698800 1617776 5698392 -1616624 5698656 1616616 5698720 1616624 5698800 1617288 5698200 -1616624 5698800 1616600 5698864 1617776 5698392 1617288 5698200 -1617248 5698112 1617288 5698200 1617680 5698304 1617584 5698152 -1617248 5698112 1617288 5698200 1617584 5698152 1617552 5698032 -1617248 5698112 1617288 5698200 1617552 5698032 1617224 5697920 -1617248 5698112 1616592 5698624 1617288 5698200 1617552 5698032 -1617288 5698200 1617776 5698392 1617680 5698304 1617584 5698152 -1617288 5698200 1617680 5698304 1617584 5698152 1617552 5698032 -1617288 5698200 1617440 5698424 1617776 5698392 1617680 5698304 -1617288 5698200 1617440 5698424 1617680 5698304 1617584 5698152 -1617288 5698200 1616624 5698800 1617440 5698424 1617584 5698152 -1617440 5698424 1616624 5698800 1617776 5698392 1617680 5698304 -1617440 5698424 1617776 5698392 1617680 5698304 1617584 5698152 -1616624 5698800 1617440 5698424 1617288 5698200 1616624 5698656 -1617440 5698424 1617584 5698152 1617288 5698200 1616624 5698656 -1617288 5698200 1616592 5698624 1616624 5698656 1617440 5698424 -1616624 5698800 1617776 5698392 1617440 5698424 1616624 5698656 -1616624 5698800 1617440 5698424 1616624 5698656 1616616 5698720 -1617776 5698392 1617440 5698424 1616624 5698800 1616600 5698864 -1617776 5698392 1617680 5698304 1617440 5698424 1616600 5698864 -1617440 5698424 1616624 5698656 1616624 5698800 1616600 5698864 -1617776 5698392 1617440 5698424 1616600 5698864 1617824 5698416 -1617776 5698392 1617680 5698304 1617440 5698424 1617824 5698416 -1616600 5698864 1617496 5700904 1617824 5698416 1617440 5698424 -1617824 5698416 1617776 5698392 1617440 5698424 1617496 5700904 -1616600 5698864 1616256 5699536 1617496 5700904 1617440 5698424 -1617496 5700904 1618144 5698512 1617824 5698416 1617440 5698424 -1617824 5698416 1617776 5698392 1617440 5698424 1618144 5698512 -1617496 5700904 1618336 5698616 1618144 5698512 1617440 5698424 -1617496 5700904 1618144 5698512 1617440 5698424 1616600 5698864 -1617440 5698424 1616624 5698800 1616600 5698864 1617496 5700904 -1617288 5698200 1617440 5698424 1617584 5698152 1617552 5698032 -1618144 5698512 1617600 5698560 1617496 5700904 1618336 5698616 -1618144 5698512 1617440 5698424 1617600 5698560 1618336 5698616 -1617600 5698560 1617440 5698424 1617496 5700904 1618336 5698616 -1617496 5700904 1618424 5698632 1618336 5698616 1617600 5698560 -1617440 5698424 1617600 5698560 1618144 5698512 1617824 5698416 -1617440 5698424 1617496 5700904 1617600 5698560 1617824 5698416 -1617600 5698560 1618336 5698616 1618144 5698512 1617824 5698416 -1617440 5698424 1617600 5698560 1617824 5698416 1617776 5698392 -1617440 5698424 1617600 5698560 1617776 5698392 1617680 5698304 -1617440 5698424 1617496 5700904 1617600 5698560 1617680 5698304 -1617440 5698424 1617600 5698560 1617680 5698304 1617584 5698152 -1617600 5698560 1617824 5698416 1617776 5698392 1617680 5698304 -1617600 5698560 1618144 5698512 1617824 5698416 1617776 5698392 -1617496 5700904 1617600 5698560 1617440 5698424 1616600 5698864 -1617600 5698560 1617680 5698304 1617440 5698424 1616600 5698864 -1617496 5700904 1618336 5698616 1617600 5698560 1616600 5698864 -1617496 5700904 1617600 5698560 1616600 5698864 1616256 5699536 -1617496 5700904 1618336 5698616 1617600 5698560 1616256 5699536 -1616600 5698864 1616256 5699472 1616256 5699536 1617600 5698560 -1617496 5700904 1617600 5698560 1616256 5699536 1616736 5700904 -1617600 5698560 1617440 5698424 1616600 5698864 1616256 5699536 -1617440 5698424 1616624 5698800 1616600 5698864 1617600 5698560 -1617440 5698424 1616624 5698800 1617600 5698560 1617680 5698304 -1617440 5698424 1616624 5698656 1616624 5698800 1617600 5698560 -1616600 5698864 1616256 5699536 1617600 5698560 1616624 5698800 -1617496 5700904 1617824 5698720 1617600 5698560 1616256 5699536 -1617824 5698720 1618336 5698616 1617600 5698560 1616256 5699536 -1617496 5700904 1618336 5698616 1617824 5698720 1616256 5699536 -1617600 5698560 1617824 5698720 1618336 5698616 1618144 5698512 -1617600 5698560 1617824 5698720 1618144 5698512 1617824 5698416 -1617600 5698560 1616256 5699536 1617824 5698720 1617824 5698416 -1617824 5698720 1617496 5700904 1618336 5698616 1618144 5698512 -1617824 5698720 1618336 5698616 1618144 5698512 1617824 5698416 -1617600 5698560 1616600 5698864 1616256 5699536 1617824 5698720 -1617600 5698560 1616600 5698864 1617824 5698720 1617824 5698416 -1616256 5699536 1617496 5700904 1617824 5698720 1616600 5698864 -1616600 5698864 1616256 5699472 1616256 5699536 1617824 5698720 -1617496 5700904 1617824 5698720 1616256 5699536 1616736 5700904 -1618336 5698616 1617824 5698720 1617496 5700904 1618424 5698632 -1618336 5698616 1618144 5698512 1617824 5698720 1618424 5698632 -1617824 5698720 1616256 5699536 1617496 5700904 1618424 5698632 -1617496 5700904 1621464 5701464 1618424 5698632 1617824 5698720 -1617600 5698560 1617824 5698720 1617824 5698416 1617776 5698392 -1617600 5698560 1616624 5698800 1616600 5698864 1617824 5698720 -1617496 5700904 1617984 5698888 1617824 5698720 1616256 5699536 -1617824 5698720 1616600 5698864 1616256 5699536 1617984 5698888 -1617984 5698888 1618424 5698632 1617824 5698720 1616600 5698864 -1616256 5699536 1617496 5700904 1617984 5698888 1616600 5698864 -1617496 5700904 1618424 5698632 1617984 5698888 1616256 5699536 -1616600 5698864 1616256 5699472 1616256 5699536 1617984 5698888 -1617824 5698720 1617600 5698560 1616600 5698864 1617984 5698888 -1617496 5700904 1617984 5698888 1616256 5699536 1616736 5700904 -1618424 5698632 1617984 5698888 1617496 5700904 1621464 5701464 -1617824 5698720 1617984 5698888 1618424 5698632 1618336 5698616 -1617824 5698720 1617984 5698888 1618336 5698616 1618144 5698512 -1617824 5698720 1616600 5698864 1617984 5698888 1618144 5698512 -1617984 5698888 1617496 5700904 1618424 5698632 1618336 5698616 -1617824 5698720 1617984 5698888 1618144 5698512 1617824 5698416 -1617984 5698888 1618424 5698632 1618336 5698616 1618144 5698512 -1617984 5698888 1618032 5698960 1618424 5698632 1618336 5698616 -1617984 5698888 1617496 5700904 1618032 5698960 1618336 5698616 -1617496 5700904 1618032 5698960 1617984 5698888 1616256 5699536 -1617984 5698888 1616600 5698864 1616256 5699536 1618032 5698960 -1617984 5698888 1617824 5698720 1616600 5698864 1618032 5698960 -1618032 5698960 1618336 5698616 1617984 5698888 1616600 5698864 -1616256 5699536 1617496 5700904 1618032 5698960 1616600 5698864 -1618032 5698960 1617496 5700904 1618424 5698632 1618336 5698616 -1617496 5700904 1618424 5698632 1618032 5698960 1616256 5699536 -1616600 5698864 1616256 5699472 1616256 5699536 1618032 5698960 -1617496 5700904 1618032 5698960 1616256 5699536 1616736 5700904 -1618424 5698632 1618032 5698960 1617496 5700904 1621464 5701464 -1618424 5698632 1618336 5698616 1618032 5698960 1621464 5701464 -1618032 5698960 1616256 5699536 1617496 5700904 1621464 5701464 -1617496 5700904 1621448 5701528 1621464 5701464 1618032 5698960 -1618424 5698632 1618032 5698960 1621464 5701464 1621488 5701424 -1617984 5698888 1618032 5698960 1618336 5698616 1618144 5698512 -1617496 5700904 1618072 5699008 1618032 5698960 1616256 5699536 -1618032 5698960 1616600 5698864 1616256 5699536 1618072 5699008 -1618072 5699008 1621464 5701464 1618032 5698960 1616256 5699536 -1617496 5700904 1621464 5701464 1618072 5699008 1616256 5699536 -1621464 5701464 1618072 5699008 1617496 5700904 1621448 5701528 -1617496 5700904 1618072 5699008 1616256 5699536 1616736 5700904 -1618032 5698960 1618072 5699008 1621464 5701464 1618424 5698632 -1618032 5698960 1618072 5699008 1618424 5698632 1618336 5698616 -1618032 5698960 1618072 5699008 1618336 5698616 1617984 5698888 -1618032 5698960 1616256 5699536 1618072 5699008 1618336 5698616 -1618072 5699008 1617496 5700904 1621464 5701464 1618424 5698632 -1621464 5701464 1621488 5701424 1618424 5698632 1618072 5699008 -1621464 5701464 1621488 5701424 1618072 5699008 1617496 5700904 -1621488 5701424 1619040 5698280 1618424 5698632 1618072 5699008 -1621488 5701424 1621576 5701360 1619040 5698280 1618072 5699008 -1621488 5701424 1619040 5698280 1618072 5699008 1621464 5701464 -1618072 5699008 1619040 5698280 1618424 5698632 1618336 5698616 -1619040 5698280 1618504 5698568 1618424 5698632 1618072 5699008 -1618072 5699008 1618248 5699336 1621464 5701464 1621488 5701424 -1618072 5699008 1617496 5700904 1618248 5699336 1621488 5701424 -1617496 5700904 1618248 5699336 1618072 5699008 1616256 5699536 -1618072 5699008 1618032 5698960 1616256 5699536 1618248 5699336 -1618248 5699336 1621488 5701424 1618072 5699008 1616256 5699536 -1618248 5699336 1617496 5700904 1621464 5701464 1621488 5701424 -1617496 5700904 1621464 5701464 1618248 5699336 1616256 5699536 -1621464 5701464 1618248 5699336 1617496 5700904 1621448 5701528 -1617496 5700904 1618248 5699336 1616256 5699536 1616736 5700904 -1618072 5699008 1618248 5699336 1621488 5701424 1619040 5698280 -1621488 5701424 1621576 5701360 1619040 5698280 1618248 5699336 -1618248 5699336 1621464 5701464 1621488 5701424 1619040 5698280 -1618072 5699008 1616256 5699536 1618248 5699336 1619040 5698280 -1618072 5699008 1618248 5699336 1619040 5698280 1618424 5698632 -1618072 5699008 1616256 5699536 1618248 5699336 1618424 5698632 -1618248 5699336 1621488 5701424 1619040 5698280 1618424 5698632 -1618072 5699008 1618248 5699336 1618424 5698632 1618336 5698616 -1619040 5698280 1618504 5698568 1618424 5698632 1618248 5699336 -1618424 5698632 1618072 5699008 1618248 5699336 1618504 5698568 -1619040 5698280 1618504 5698568 1618248 5699336 1621488 5701424 -1619040 5698280 1618936 5698304 1618504 5698568 1618248 5699336 -1618248 5699336 1618384 5699440 1621464 5701464 1621488 5701424 -1618248 5699336 1618384 5699440 1621488 5701424 1619040 5698280 -1621488 5701424 1621576 5701360 1619040 5698280 1618384 5699440 -1618384 5699440 1621464 5701464 1621488 5701424 1619040 5698280 -1618248 5699336 1617496 5700904 1618384 5699440 1619040 5698280 -1617496 5700904 1618384 5699440 1618248 5699336 1616256 5699536 -1618384 5699440 1617496 5700904 1621464 5701464 1621488 5701424 -1621464 5701464 1618384 5699440 1617496 5700904 1621448 5701528 -1621464 5701464 1621488 5701424 1618384 5699440 1621448 5701528 -1618384 5699440 1618248 5699336 1617496 5700904 1621448 5701528 -1617496 5700904 1621664 5703552 1621448 5701528 1618384 5699440 -1618248 5699336 1618384 5699440 1619040 5698280 1618504 5698568 -1618384 5699440 1621488 5701424 1619040 5698280 1618504 5698568 -1618248 5699336 1617496 5700904 1618384 5699440 1618504 5698568 -1619040 5698280 1618936 5698304 1618504 5698568 1618384 5699440 -1619040 5698280 1618936 5698304 1618384 5699440 1621488 5701424 -1618504 5698568 1618248 5699336 1618384 5699440 1618936 5698304 -1618248 5699336 1618384 5699440 1618504 5698568 1618424 5698632 -1618248 5699336 1617496 5700904 1618384 5699440 1618424 5698632 -1618248 5699336 1618384 5699440 1618424 5698632 1618072 5699008 -1618384 5699440 1618936 5698304 1618504 5698568 1618424 5698632 -1618936 5698304 1618536 5698512 1618504 5698568 1618384 5699440 -1617496 5700904 1618392 5699496 1618384 5699440 1618248 5699336 -1617496 5700904 1618392 5699496 1618248 5699336 1616256 5699536 -1618392 5699496 1621448 5701528 1618384 5699440 1618248 5699336 -1617496 5700904 1621448 5701528 1618392 5699496 1618248 5699336 -1618384 5699440 1618392 5699496 1621448 5701528 1621464 5701464 -1618384 5699440 1618392 5699496 1621464 5701464 1621488 5701424 -1618384 5699440 1618392 5699496 1621488 5701424 1619040 5698280 -1621488 5701424 1621576 5701360 1619040 5698280 1618392 5699496 -1618384 5699440 1618392 5699496 1619040 5698280 1618936 5698304 -1619040 5698280 1618384 5699440 1618392 5699496 1621576 5701360 -1618392 5699496 1621464 5701464 1621488 5701424 1621576 5701360 -1618384 5699440 1618248 5699336 1618392 5699496 1619040 5698280 -1618392 5699496 1617496 5700904 1621448 5701528 1621464 5701464 -1618392 5699496 1621448 5701528 1621464 5701464 1621488 5701424 -1621448 5701528 1618392 5699496 1617496 5700904 1621664 5703552 -1621576 5701360 1622064 5698152 1619040 5698280 1618392 5699496 -1618392 5699496 1618368 5699568 1621448 5701528 1621464 5701464 -1618392 5699496 1617496 5700904 1618368 5699568 1621464 5701464 -1617496 5700904 1618368 5699568 1618392 5699496 1618248 5699336 -1617496 5700904 1618368 5699568 1618248 5699336 1616256 5699536 -1618392 5699496 1618384 5699440 1618248 5699336 1618368 5699568 -1618368 5699568 1621464 5701464 1618392 5699496 1618384 5699440 -1618248 5699336 1617496 5700904 1618368 5699568 1618384 5699440 -1618368 5699568 1617496 5700904 1621448 5701528 1621464 5701464 -1617496 5700904 1621448 5701528 1618368 5699568 1618248 5699336 -1618392 5699496 1618368 5699568 1621464 5701464 1621488 5701424 -1618392 5699496 1618368 5699568 1621488 5701424 1621576 5701360 -1618368 5699568 1621448 5701528 1621464 5701464 1621488 5701424 -1618392 5699496 1618384 5699440 1618368 5699568 1621488 5701424 -1621448 5701528 1618368 5699568 1617496 5700904 1621664 5703552 -1617496 5700904 1618280 5699648 1618248 5699336 1616256 5699536 -1618248 5699336 1618072 5699008 1616256 5699536 1618280 5699648 -1618072 5699008 1618032 5698960 1616256 5699536 1618280 5699648 -1618032 5698960 1616600 5698864 1616256 5699536 1618280 5699648 -1618032 5698960 1617984 5698888 1616600 5698864 1618280 5699648 -1618032 5698960 1616600 5698864 1618280 5699648 1618072 5699008 -1618072 5699008 1618032 5698960 1618280 5699648 1618248 5699336 -1616256 5699536 1617496 5700904 1618280 5699648 1616600 5698864 -1618248 5699336 1618280 5699648 1618368 5699568 1618384 5699440 -1618368 5699568 1618280 5699648 1617496 5700904 1621448 5701528 -1618368 5699568 1618280 5699648 1621448 5701528 1621464 5701464 -1618368 5699568 1618280 5699648 1621464 5701464 1621488 5701424 -1618368 5699568 1618248 5699336 1618280 5699648 1621464 5701464 -1618280 5699648 1617496 5700904 1621448 5701528 1621464 5701464 -1617496 5700904 1621448 5701528 1618280 5699648 1616256 5699536 -1618280 5699648 1618368 5699568 1618248 5699336 1618072 5699008 -1616600 5698864 1616256 5699472 1616256 5699536 1618280 5699648 -1617496 5700904 1618280 5699648 1616256 5699536 1616736 5700904 -1617496 5700904 1621664 5703552 1621448 5701528 1618280 5699648 -1616256 5699536 1618184 5699664 1618280 5699648 1616600 5698864 -1618280 5699648 1618032 5698960 1616600 5698864 1618184 5699664 -1618032 5698960 1617984 5698888 1616600 5698864 1618184 5699664 -1618280 5699648 1618072 5699008 1618032 5698960 1618184 5699664 -1618032 5698960 1616600 5698864 1618184 5699664 1618072 5699008 -1618280 5699648 1618248 5699336 1618072 5699008 1618184 5699664 -1618072 5699008 1618032 5698960 1618184 5699664 1618248 5699336 -1616600 5698864 1616256 5699536 1618184 5699664 1618032 5698960 -1618280 5699648 1618184 5699664 1617496 5700904 1621448 5701528 -1618184 5699664 1617496 5700904 1618280 5699648 1618248 5699336 -1618280 5699648 1618368 5699568 1618248 5699336 1618184 5699664 -1616256 5699536 1617496 5700904 1618184 5699664 1616600 5698864 -1616256 5699536 1618184 5699664 1616600 5698864 1616256 5699472 -1617496 5700904 1618184 5699664 1616256 5699536 1616736 5700904 -1616600 5698864 1617992 5699632 1618184 5699664 1618032 5698960 -1616600 5698864 1617992 5699632 1618032 5698960 1617984 5698888 -1616600 5698864 1617992 5699632 1617984 5698888 1617824 5698720 -1617992 5699632 1618032 5698960 1617984 5698888 1617824 5698720 -1618184 5699664 1618072 5699008 1618032 5698960 1617992 5699632 -1618184 5699664 1618248 5699336 1618072 5699008 1617992 5699632 -1618072 5699008 1618032 5698960 1617992 5699632 1618248 5699336 -1618184 5699664 1618280 5699648 1618248 5699336 1617992 5699632 -1617992 5699632 1618072 5699008 1618032 5698960 1617984 5698888 -1617992 5699632 1616256 5699536 1618184 5699664 1618248 5699336 -1618184 5699664 1617992 5699632 1616256 5699536 1617496 5700904 -1618184 5699664 1617992 5699632 1617496 5700904 1618280 5699648 -1618184 5699664 1618248 5699336 1617992 5699632 1617496 5700904 -1617992 5699632 1616600 5698864 1616256 5699536 1617496 5700904 -1616600 5698864 1616256 5699536 1617992 5699632 1617824 5698720 -1616256 5699536 1617992 5699632 1616600 5698864 1616256 5699472 -1616600 5698864 1617992 5699632 1617824 5698720 1617600 5698560 -1616256 5699536 1616736 5700904 1617496 5700904 1617992 5699632 -1617496 5700904 1618184 5699664 1617992 5699632 1616736 5700904 -1616256 5699536 1616736 5700904 1617992 5699632 1616600 5698864 -1616736 5700904 1616928 5700984 1617496 5700904 1617992 5699632 -1616256 5699536 1616112 5699736 1616736 5700904 1617992 5699632 -1616256 5699536 1617960 5699640 1617992 5699632 1616600 5698864 -1617960 5699640 1616736 5700904 1617992 5699632 1616600 5698864 -1617992 5699632 1617824 5698720 1616600 5698864 1617960 5699640 -1617992 5699632 1617984 5698888 1617824 5698720 1617960 5699640 -1617992 5699632 1618032 5698960 1617984 5698888 1617960 5699640 -1617984 5698888 1617824 5698720 1617960 5699640 1618032 5698960 -1617992 5699632 1618072 5699008 1618032 5698960 1617960 5699640 -1618032 5698960 1617984 5698888 1617960 5699640 1618072 5699008 -1617992 5699632 1618248 5699336 1618072 5699008 1617960 5699640 -1616600 5698864 1616256 5699536 1617960 5699640 1617824 5698720 -1617992 5699632 1618072 5699008 1617960 5699640 1616736 5700904 -1617824 5698720 1616600 5698864 1617960 5699640 1617984 5698888 -1616256 5699536 1616736 5700904 1617960 5699640 1616600 5698864 -1616256 5699536 1617960 5699640 1616600 5698864 1616256 5699472 -1617824 5698720 1617600 5698560 1616600 5698864 1617960 5699640 -1617992 5699632 1617960 5699640 1616736 5700904 1617496 5700904 -1617992 5699632 1617960 5699640 1617496 5700904 1618184 5699664 -1617496 5700904 1618280 5699648 1618184 5699664 1617960 5699640 -1617992 5699632 1618072 5699008 1617960 5699640 1618184 5699664 -1617960 5699640 1616256 5699536 1616736 5700904 1617496 5700904 -1617960 5699640 1616736 5700904 1617496 5700904 1618184 5699664 -1616736 5700904 1616928 5700984 1617496 5700904 1617960 5699640 -1616736 5700904 1617960 5699640 1616256 5699536 1616112 5699736 -1617960 5699640 1617920 5699672 1616736 5700904 1617496 5700904 -1617960 5699640 1616256 5699536 1617920 5699672 1617496 5700904 -1616256 5699536 1617920 5699672 1617960 5699640 1616600 5698864 -1617960 5699640 1617824 5698720 1616600 5698864 1617920 5699672 -1617960 5699640 1617984 5698888 1617824 5698720 1617920 5699672 -1617960 5699640 1618032 5698960 1617984 5698888 1617920 5699672 -1617960 5699640 1618072 5699008 1618032 5698960 1617920 5699672 -1617824 5698720 1616600 5698864 1617920 5699672 1617984 5698888 -1617984 5698888 1617824 5698720 1617920 5699672 1618032 5698960 -1617920 5699672 1617496 5700904 1617960 5699640 1618032 5698960 -1616600 5698864 1616256 5699536 1617920 5699672 1617824 5698720 -1617920 5699672 1616256 5699536 1616736 5700904 1617496 5700904 -1616256 5699536 1616736 5700904 1617920 5699672 1616600 5698864 -1616256 5699536 1617920 5699672 1616600 5698864 1616256 5699472 -1617824 5698720 1617600 5698560 1616600 5698864 1617920 5699672 -1617824 5698720 1617600 5698560 1617920 5699672 1617984 5698888 -1616600 5698864 1616256 5699536 1617920 5699672 1617600 5698560 -1617960 5699640 1617920 5699672 1617496 5700904 1618184 5699664 -1617496 5700904 1618280 5699648 1618184 5699664 1617920 5699672 -1617960 5699640 1617920 5699672 1618184 5699664 1617992 5699632 -1617920 5699672 1616736 5700904 1617496 5700904 1618184 5699664 -1617960 5699640 1618032 5698960 1617920 5699672 1617992 5699632 -1617920 5699672 1617496 5700904 1618184 5699664 1617992 5699632 -1617600 5698560 1616624 5698800 1616600 5698864 1617920 5699672 -1616736 5700904 1616928 5700984 1617496 5700904 1617920 5699672 -1616736 5700904 1617920 5699672 1616256 5699536 1616112 5699736 -1617920 5699672 1617832 5699808 1617496 5700904 1618184 5699664 -1617496 5700904 1618280 5699648 1618184 5699664 1617832 5699808 -1616736 5700904 1617832 5699808 1617920 5699672 1616256 5699536 -1617920 5699672 1616256 5699536 1617832 5699808 1618184 5699664 -1617920 5699672 1616600 5698864 1616256 5699536 1617832 5699808 -1617920 5699672 1617600 5698560 1616600 5698864 1617832 5699808 -1616256 5699536 1616736 5700904 1617832 5699808 1616600 5698864 -1617920 5699672 1616600 5698864 1617832 5699808 1618184 5699664 -1617832 5699808 1616736 5700904 1617496 5700904 1618184 5699664 -1616736 5700904 1617496 5700904 1617832 5699808 1616256 5699536 -1616600 5698864 1616256 5699472 1616256 5699536 1617832 5699808 -1617920 5699672 1617832 5699808 1618184 5699664 1617992 5699632 -1617496 5700904 1617832 5699808 1616736 5700904 1616928 5700984 -1616736 5700904 1617832 5699808 1616256 5699536 1616112 5699736 -1618184 5699664 1617768 5700120 1617496 5700904 1618280 5699648 -1617496 5700904 1621448 5701528 1618280 5699648 1617768 5700120 -1617832 5699808 1617768 5700120 1618184 5699664 1617920 5699672 -1617496 5700904 1617768 5700120 1617832 5699808 1616736 5700904 -1617768 5700120 1618184 5699664 1617832 5699808 1616736 5700904 -1617832 5699808 1616256 5699536 1616736 5700904 1617768 5700120 -1617832 5699808 1616600 5698864 1616256 5699536 1617768 5700120 -1616736 5700904 1617496 5700904 1617768 5700120 1616256 5699536 -1617832 5699808 1616256 5699536 1617768 5700120 1618184 5699664 -1618184 5699664 1617832 5699808 1617768 5700120 1618280 5699648 -1617496 5700904 1617768 5700120 1616736 5700904 1616928 5700984 -1617768 5700120 1616256 5699536 1616736 5700904 1616928 5700984 -1617496 5700904 1617768 5700120 1616928 5700984 1617392 5700976 -1616256 5699536 1616112 5699736 1616736 5700904 1617768 5700120 -1617768 5700120 1616928 5700984 1617496 5700904 1618280 5699648 -1618280 5699648 1617776 5700272 1617496 5700904 1621448 5701528 -1618280 5699648 1617776 5700272 1621448 5701528 1621464 5701464 -1617768 5700120 1617776 5700272 1618280 5699648 1618184 5699664 -1617768 5700120 1617776 5700272 1618184 5699664 1617832 5699808 -1617496 5700904 1621664 5703552 1621448 5701528 1617776 5700272 -1617768 5700120 1617496 5700904 1617776 5700272 1618184 5699664 -1617496 5700904 1617776 5700272 1617768 5700120 1616928 5700984 -1617496 5700904 1617776 5700272 1616928 5700984 1617392 5700976 -1617768 5700120 1616736 5700904 1616928 5700984 1617776 5700272 -1617768 5700120 1616256 5699536 1616736 5700904 1617776 5700272 -1617776 5700272 1618184 5699664 1617768 5700120 1616736 5700904 -1616928 5700984 1617496 5700904 1617776 5700272 1616736 5700904 -1618280 5699648 1618184 5699664 1617776 5700272 1621448 5701528 -1617776 5700272 1616928 5700984 1617496 5700904 1621448 5701528 -1617776 5700272 1617792 5700456 1621448 5701528 1618280 5699648 -1621448 5701528 1621464 5701464 1618280 5699648 1617792 5700456 -1621464 5701464 1618368 5699568 1618280 5699648 1617792 5700456 -1621464 5701464 1621488 5701424 1618368 5699568 1617792 5700456 -1621464 5701464 1618368 5699568 1617792 5700456 1621448 5701528 -1618280 5699648 1617776 5700272 1617792 5700456 1618368 5699568 -1621448 5701528 1617792 5700456 1617496 5700904 1621664 5703552 -1617776 5700272 1617792 5700456 1618280 5699648 1618184 5699664 -1617776 5700272 1617496 5700904 1617792 5700456 1618280 5699648 -1617496 5700904 1617792 5700456 1617776 5700272 1616928 5700984 -1617792 5700456 1617496 5700904 1621448 5701528 1621464 5701464 -1621448 5701528 1617760 5700568 1617496 5700904 1621664 5703552 -1617792 5700456 1617760 5700568 1621448 5701528 1621464 5701464 -1617496 5700904 1617760 5700568 1617792 5700456 1617776 5700272 -1617496 5700904 1617760 5700568 1617776 5700272 1616928 5700984 -1617760 5700568 1621448 5701528 1617792 5700456 1617776 5700272 -1617496 5700904 1621448 5701528 1617760 5700568 1617776 5700272 -1621448 5701528 1617608 5700800 1617496 5700904 1621664 5703552 -1617760 5700568 1617608 5700800 1621448 5701528 1617792 5700456 -1617496 5700904 1617608 5700800 1617760 5700568 1617776 5700272 -1617496 5700904 1617608 5700800 1617776 5700272 1616928 5700984 -1617496 5700904 1617608 5700800 1616928 5700984 1617392 5700976 -1617776 5700272 1616736 5700904 1616928 5700984 1617608 5700800 -1617760 5700568 1617792 5700456 1617776 5700272 1617608 5700800 -1617608 5700800 1621448 5701528 1617760 5700568 1617776 5700272 -1617608 5700800 1617760 5700568 1617776 5700272 1616928 5700984 -1617496 5700904 1621448 5701528 1617608 5700800 1616928 5700984 -1611000 5692800 1609808 5694968 1611120 5695240 1611064 5692984 -1611120 5695240 1611152 5695144 1611064 5692984 1609808 5694968 -1611064 5692984 1611000 5692800 1609808 5694968 1611152 5695144 -1611120 5695240 1609808 5694968 1602224 5696056 1602504 5696992 -1611152 5695144 1611312 5693984 1611064 5692984 1609808 5694968 -1611064 5692984 1611000 5692800 1609808 5694968 1611312 5693984 -1611152 5695144 1611312 5693984 1609808 5694968 1611120 5695240 -1602224 5696056 1609808 5694968 1611000 5692800 1602200 5696008 -1611000 5692800 1602160 5695928 1602200 5696008 1609808 5694968 -1602200 5696008 1602224 5696056 1609808 5694968 1602160 5695928 -1611152 5695144 1611344 5694080 1611312 5693984 1609808 5694968 -1611152 5695144 1611184 5695112 1611344 5694080 1609808 5694968 -1611152 5695144 1611184 5695112 1609808 5694968 1611120 5695240 -1611312 5693984 1611064 5692984 1609808 5694968 1611344 5694080 -1611184 5695112 1611360 5694104 1611344 5694080 1609808 5694968 -1611344 5694080 1611312 5693984 1609808 5694968 1611184 5695112 -1611312 5693984 1611192 5693224 1611064 5692984 1609808 5694968 -1611064 5692984 1611000 5692800 1609808 5694968 1611192 5693224 -1611312 5693984 1611408 5693680 1611192 5693224 1609808 5694968 -1611312 5693984 1611192 5693224 1609808 5694968 1611344 5694080 -1602224 5696056 1602224 5696096 1602504 5696992 1609808 5694968 -1611000 5692800 1608736 5689448 1602160 5695928 1609808 5694968 -1608736 5689448 1608616 5689368 1602160 5695928 1609808 5694968 -1608616 5689368 1608392 5689208 1602160 5695928 1609808 5694968 -1608392 5689208 1602112 5695896 1602160 5695928 1609808 5694968 -1608616 5689368 1608392 5689208 1609808 5694968 1608736 5689448 -1602160 5695928 1602200 5696008 1609808 5694968 1608392 5689208 -1608736 5689448 1608616 5689368 1609808 5694968 1611000 5692800 -1611000 5692800 1610992 5692696 1608736 5689448 1609808 5694968 -1608736 5689448 1608616 5689368 1609808 5694968 1610992 5692696 -1610992 5692696 1608840 5689480 1608736 5689448 1609808 5694968 -1611120 5695240 1609808 5694968 1602504 5696992 1608544 5699312 -1611120 5695240 1609808 5694968 1608544 5699312 1608624 5699288 -1611120 5695240 1609808 5694968 1608624 5699288 1611136 5695304 -1608624 5699288 1611336 5695680 1611136 5695304 1609808 5694968 -1608624 5699288 1610784 5698784 1611336 5695680 1609808 5694968 -1611336 5695680 1611136 5695304 1609808 5694968 1610784 5698784 -1611136 5695304 1611120 5695240 1609808 5694968 1611336 5695680 -1609808 5694968 1608544 5699312 1608624 5699288 1610784 5698784 -1609808 5694968 1602224 5696056 1602504 5696992 1608544 5699312 -1602504 5696992 1608256 5699504 1608544 5699312 1609808 5694968 -1602504 5696992 1602504 5697056 1608256 5699504 1609808 5694968 -1608256 5699504 1608400 5699424 1608544 5699312 1609808 5694968 -1602504 5696992 1608256 5699504 1609808 5694968 1602224 5696056 -1608624 5699288 1610736 5698824 1610784 5698784 1609808 5694968 -1610784 5698784 1611336 5695680 1609808 5694968 1610736 5698824 -1608624 5699288 1610736 5698824 1609808 5694968 1608544 5699312 -1608624 5699288 1608712 5699312 1610736 5698824 1609808 5694968 -1608624 5699288 1608712 5699312 1609808 5694968 1608544 5699312 -1608712 5699312 1608920 5699432 1610736 5698824 1609808 5694968 -1610736 5698824 1610784 5698784 1609808 5694968 1608712 5699312 -1609808 5694968 1608256 5699504 1608544 5699312 1608624 5699288 -1610784 5698784 1611464 5695816 1611336 5695680 1609808 5694968 -1609808 5694968 1602200 5696008 1602224 5696056 1602504 5696992 -1611000 5692800 1610992 5692696 1609808 5694968 1611064 5692984 -1609808 5694968 1611136 5695304 1611120 5695240 1611152 5695144 -1610784 5698784 1609960 5695056 1609808 5694968 1610736 5698824 -1609808 5694968 1609960 5695056 1611336 5695680 1611136 5695304 -1609808 5694968 1609960 5695056 1611136 5695304 1611120 5695240 -1609960 5695056 1611336 5695680 1611136 5695304 1611120 5695240 -1609808 5694968 1608712 5699312 1610736 5698824 1609960 5695056 -1610736 5698824 1610784 5698784 1609960 5695056 1608712 5699312 -1609808 5694968 1608624 5699288 1608712 5699312 1609960 5695056 -1609808 5694968 1608544 5699312 1608624 5699288 1609960 5695056 -1608712 5699312 1608920 5699432 1610736 5698824 1609960 5695056 -1608712 5699312 1610736 5698824 1609960 5695056 1608624 5699288 -1611336 5695680 1609960 5695056 1610784 5698784 1611464 5695816 -1609960 5695056 1611120 5695240 1609808 5694968 1608624 5699288 -1609808 5694968 1609960 5695056 1611120 5695240 1611152 5695144 -1609960 5695056 1611136 5695304 1611120 5695240 1611152 5695144 -1609808 5694968 1609960 5695056 1611152 5695144 1611184 5695112 -1609808 5694968 1609960 5695056 1611184 5695112 1611344 5694080 -1609960 5695056 1611152 5695144 1611184 5695112 1611344 5694080 -1611184 5695112 1611360 5694104 1611344 5694080 1609960 5695056 -1609808 5694968 1609960 5695056 1611344 5694080 1611312 5693984 -1609960 5695056 1611184 5695112 1611344 5694080 1611312 5693984 -1609808 5694968 1609960 5695056 1611312 5693984 1611192 5693224 -1609808 5694968 1608624 5699288 1609960 5695056 1611312 5693984 -1609960 5695056 1611120 5695240 1611152 5695144 1611184 5695112 -1609960 5695056 1610784 5698784 1611336 5695680 1611136 5695304 -1610784 5698784 1611336 5695680 1609960 5695056 1610736 5698824 -1611336 5695680 1610056 5695120 1610784 5698784 1611464 5695816 -1609960 5695056 1610056 5695120 1611336 5695680 1611136 5695304 -1609960 5695056 1610056 5695120 1611136 5695304 1611120 5695240 -1609960 5695056 1610056 5695120 1611120 5695240 1611152 5695144 -1610056 5695120 1611136 5695304 1611120 5695240 1611152 5695144 -1609960 5695056 1610056 5695120 1611152 5695144 1611184 5695112 -1610056 5695120 1611120 5695240 1611152 5695144 1611184 5695112 -1609960 5695056 1610056 5695120 1611184 5695112 1611344 5694080 -1609960 5695056 1610056 5695120 1611344 5694080 1611312 5693984 -1611184 5695112 1611360 5694104 1611344 5694080 1610056 5695120 -1610056 5695120 1611152 5695144 1611184 5695112 1611344 5694080 -1610056 5695120 1611336 5695680 1611136 5695304 1611120 5695240 -1609960 5695056 1610784 5698784 1610056 5695120 1611344 5694080 -1610784 5698784 1610056 5695120 1609960 5695056 1610736 5698824 -1609960 5695056 1608712 5699312 1610736 5698824 1610056 5695120 -1608712 5699312 1608920 5699432 1610736 5698824 1610056 5695120 -1609960 5695056 1608624 5699288 1608712 5699312 1610056 5695120 -1608712 5699312 1610736 5698824 1610056 5695120 1608624 5699288 -1609960 5695056 1609808 5694968 1608624 5699288 1610056 5695120 -1610056 5695120 1611344 5694080 1609960 5695056 1608624 5699288 -1610736 5698824 1610784 5698784 1610056 5695120 1608712 5699312 -1610056 5695120 1610784 5698784 1611336 5695680 1611136 5695304 -1610784 5698784 1611336 5695680 1610056 5695120 1610736 5698824 -1611336 5695680 1610120 5695200 1610784 5698784 1611464 5695816 -1610784 5698784 1610848 5698768 1611464 5695816 1610120 5695200 -1610056 5695120 1610120 5695200 1611336 5695680 1611136 5695304 -1610056 5695120 1610120 5695200 1611136 5695304 1611120 5695240 -1610056 5695120 1610120 5695200 1611120 5695240 1611152 5695144 -1610056 5695120 1610120 5695200 1611152 5695144 1611184 5695112 -1610120 5695200 1611136 5695304 1611120 5695240 1611152 5695144 -1610120 5695200 1611336 5695680 1611136 5695304 1611120 5695240 -1610056 5695120 1610784 5698784 1610120 5695200 1611152 5695144 -1610784 5698784 1610120 5695200 1610056 5695120 1610736 5698824 -1610056 5695120 1608712 5699312 1610736 5698824 1610120 5695200 -1610056 5695120 1608624 5699288 1608712 5699312 1610120 5695200 -1608712 5699312 1608920 5699432 1610736 5698824 1610120 5695200 -1610056 5695120 1609960 5695056 1608624 5699288 1610120 5695200 -1608624 5699288 1608712 5699312 1610120 5695200 1609960 5695056 -1609960 5695056 1609808 5694968 1608624 5699288 1610120 5695200 -1608624 5699288 1608712 5699312 1610120 5695200 1609808 5694968 -1609808 5694968 1608544 5699312 1608624 5699288 1610120 5695200 -1609960 5695056 1609808 5694968 1610120 5695200 1610056 5695120 -1608712 5699312 1610736 5698824 1610120 5695200 1608624 5699288 -1610120 5695200 1611152 5695144 1610056 5695120 1609960 5695056 -1610736 5698824 1610784 5698784 1610120 5695200 1608712 5699312 -1611336 5695680 1611136 5695304 1610120 5695200 1611464 5695816 -1610120 5695200 1610736 5698824 1610784 5698784 1611464 5695816 -1610120 5695200 1610248 5695424 1611464 5695816 1611336 5695680 -1611464 5695816 1610248 5695424 1610784 5698784 1610848 5698768 -1610120 5695200 1610248 5695424 1611336 5695680 1611136 5695304 -1610248 5695424 1611464 5695816 1611336 5695680 1611136 5695304 -1610120 5695200 1610248 5695424 1611136 5695304 1611120 5695240 -1610120 5695200 1610248 5695424 1611120 5695240 1611152 5695144 -1610248 5695424 1611336 5695680 1611136 5695304 1611120 5695240 -1610120 5695200 1610784 5698784 1610248 5695424 1611120 5695240 -1610784 5698784 1610248 5695424 1610120 5695200 1610736 5698824 -1610120 5695200 1608712 5699312 1610736 5698824 1610248 5695424 -1608712 5699312 1608920 5699432 1610736 5698824 1610248 5695424 -1610120 5695200 1608624 5699288 1608712 5699312 1610248 5695424 -1610120 5695200 1609808 5694968 1608624 5699288 1610248 5695424 -1609808 5694968 1608544 5699312 1608624 5699288 1610248 5695424 -1610120 5695200 1609960 5695056 1609808 5694968 1610248 5695424 -1609808 5694968 1608624 5699288 1610248 5695424 1609960 5695056 -1610120 5695200 1610056 5695120 1609960 5695056 1610248 5695424 -1608624 5699288 1608712 5699312 1610248 5695424 1609808 5694968 -1608712 5699312 1610736 5698824 1610248 5695424 1608624 5699288 -1610248 5695424 1611120 5695240 1610120 5695200 1609960 5695056 -1610736 5698824 1610784 5698784 1610248 5695424 1608712 5699312 -1610248 5695424 1610784 5698784 1611464 5695816 1611336 5695680 -1610784 5698784 1611464 5695816 1610248 5695424 1610736 5698824 -1611464 5695816 1610280 5695512 1610784 5698784 1610848 5698768 -1611464 5695816 1610280 5695512 1610848 5698768 1611592 5695912 -1610248 5695424 1610280 5695512 1611464 5695816 1611336 5695680 -1610248 5695424 1610280 5695512 1611336 5695680 1611136 5695304 -1610248 5695424 1610280 5695512 1611136 5695304 1611120 5695240 -1610280 5695512 1611336 5695680 1611136 5695304 1611120 5695240 -1610248 5695424 1610280 5695512 1611120 5695240 1610120 5695200 -1610280 5695512 1611464 5695816 1611336 5695680 1611136 5695304 -1610248 5695424 1610784 5698784 1610280 5695512 1611120 5695240 -1610784 5698784 1610280 5695512 1610248 5695424 1610736 5698824 -1610248 5695424 1608712 5699312 1610736 5698824 1610280 5695512 -1608712 5699312 1608920 5699432 1610736 5698824 1610280 5695512 -1610248 5695424 1608624 5699288 1608712 5699312 1610280 5695512 -1610248 5695424 1609808 5694968 1608624 5699288 1610280 5695512 -1610248 5695424 1609960 5695056 1609808 5694968 1610280 5695512 -1609808 5694968 1608544 5699312 1608624 5699288 1610280 5695512 -1608624 5699288 1608712 5699312 1610280 5695512 1609808 5694968 -1608712 5699312 1610736 5698824 1610280 5695512 1608624 5699288 -1610280 5695512 1611120 5695240 1610248 5695424 1609808 5694968 -1610736 5698824 1610784 5698784 1610280 5695512 1608712 5699312 -1611464 5695816 1611336 5695680 1610280 5695512 1610848 5698768 -1610280 5695512 1610736 5698824 1610784 5698784 1610848 5698768 -1611464 5695816 1610296 5695600 1610848 5698768 1611592 5695912 -1610848 5698768 1611704 5695976 1611592 5695912 1610296 5695600 -1611464 5695816 1610296 5695600 1611592 5695912 1611560 5695880 -1610848 5698768 1610296 5695600 1610280 5695512 1610784 5698784 -1610280 5695512 1610296 5695600 1611464 5695816 1611336 5695680 -1610280 5695512 1610296 5695600 1611336 5695680 1611136 5695304 -1610280 5695512 1610296 5695600 1611136 5695304 1611120 5695240 -1610296 5695600 1611464 5695816 1611336 5695680 1611136 5695304 -1610296 5695600 1611136 5695304 1610280 5695512 1610784 5698784 -1610280 5695512 1610736 5698824 1610784 5698784 1610296 5695600 -1610784 5698784 1610848 5698768 1610296 5695600 1610736 5698824 -1610280 5695512 1608712 5699312 1610736 5698824 1610296 5695600 -1608712 5699312 1608920 5699432 1610736 5698824 1610296 5695600 -1610280 5695512 1608624 5699288 1608712 5699312 1610296 5695600 -1610280 5695512 1609808 5694968 1608624 5699288 1610296 5695600 -1609808 5694968 1608544 5699312 1608624 5699288 1610296 5695600 -1610280 5695512 1610248 5695424 1609808 5694968 1610296 5695600 -1610248 5695424 1609960 5695056 1609808 5694968 1610296 5695600 -1610248 5695424 1610120 5695200 1609960 5695056 1610296 5695600 -1610248 5695424 1609960 5695056 1610296 5695600 1610280 5695512 -1609808 5694968 1608624 5699288 1610296 5695600 1609960 5695056 -1608624 5699288 1608712 5699312 1610296 5695600 1609808 5694968 -1608712 5699312 1610736 5698824 1610296 5695600 1608624 5699288 -1610280 5695512 1610248 5695424 1610296 5695600 1611136 5695304 -1610736 5698824 1610784 5698784 1610296 5695600 1608712 5699312 -1611464 5695816 1611336 5695680 1610296 5695600 1611592 5695912 -1610296 5695600 1610784 5698784 1610848 5698768 1611592 5695912 -1610736 5698824 1610288 5695712 1608712 5699312 1608920 5699432 -1608712 5699312 1610288 5695712 1610296 5695600 1608624 5699288 -1610296 5695600 1609808 5694968 1608624 5699288 1610288 5695712 -1609808 5694968 1608544 5699312 1608624 5699288 1610288 5695712 -1610296 5695600 1609960 5695056 1609808 5694968 1610288 5695712 -1610296 5695600 1610248 5695424 1609960 5695056 1610288 5695712 -1610248 5695424 1610120 5695200 1609960 5695056 1610288 5695712 -1610248 5695424 1610120 5695200 1610288 5695712 1610296 5695600 -1610120 5695200 1610056 5695120 1609960 5695056 1610288 5695712 -1610296 5695600 1610280 5695512 1610248 5695424 1610288 5695712 -1610248 5695424 1610120 5695200 1610288 5695712 1610280 5695512 -1609960 5695056 1609808 5694968 1610288 5695712 1610120 5695200 -1609808 5694968 1608624 5699288 1610288 5695712 1609960 5695056 -1608624 5699288 1608712 5699312 1610288 5695712 1609808 5694968 -1610296 5695600 1610288 5695712 1610736 5698824 1610784 5698784 -1610296 5695600 1610288 5695712 1610784 5698784 1610848 5698768 -1610288 5695712 1610736 5698824 1610784 5698784 1610848 5698768 -1610288 5695712 1610848 5698768 1610296 5695600 1610280 5695512 -1610296 5695600 1610288 5695712 1610848 5698768 1611592 5695912 -1610848 5698768 1611704 5695976 1611592 5695912 1610288 5695712 -1610296 5695600 1610288 5695712 1611592 5695912 1611464 5695816 -1611592 5695912 1611560 5695880 1611464 5695816 1610288 5695712 -1610288 5695712 1610784 5698784 1610848 5698768 1611592 5695912 -1610296 5695600 1610288 5695712 1611464 5695816 1611336 5695680 -1610288 5695712 1611592 5695912 1611464 5695816 1611336 5695680 -1610296 5695600 1610288 5695712 1611336 5695680 1611136 5695304 -1610296 5695600 1610288 5695712 1611136 5695304 1610280 5695512 -1610288 5695712 1611464 5695816 1611336 5695680 1611136 5695304 -1610296 5695600 1610280 5695512 1610288 5695712 1611136 5695304 -1610288 5695712 1610848 5698768 1611592 5695912 1611464 5695816 -1610288 5695712 1608712 5699312 1610736 5698824 1610784 5698784 -1608712 5699312 1610736 5698824 1610288 5695712 1608624 5699288 -1610736 5698824 1610232 5695864 1608712 5699312 1608920 5699432 -1610288 5695712 1610232 5695864 1610736 5698824 1610784 5698784 -1610288 5695712 1610232 5695864 1610784 5698784 1610848 5698768 -1610288 5695712 1610232 5695864 1610848 5698768 1611592 5695912 -1610848 5698768 1611704 5695976 1611592 5695912 1610232 5695864 -1610232 5695864 1610784 5698784 1610848 5698768 1611592 5695912 -1610288 5695712 1610232 5695864 1611592 5695912 1611464 5695816 -1610288 5695712 1610232 5695864 1611464 5695816 1611336 5695680 -1611592 5695912 1611560 5695880 1611464 5695816 1610232 5695864 -1610232 5695864 1610848 5698768 1611592 5695912 1611464 5695816 -1610288 5695712 1610232 5695864 1611336 5695680 1611136 5695304 -1610232 5695864 1611592 5695912 1611464 5695816 1611336 5695680 -1610232 5695864 1610736 5698824 1610784 5698784 1610848 5698768 -1610288 5695712 1608712 5699312 1610232 5695864 1611336 5695680 -1608712 5699312 1610232 5695864 1610288 5695712 1608624 5699288 -1610288 5695712 1609808 5694968 1608624 5699288 1610232 5695864 -1609808 5694968 1608544 5699312 1608624 5699288 1610232 5695864 -1609808 5694968 1608256 5699504 1608544 5699312 1610232 5695864 -1610288 5695712 1609960 5695056 1609808 5694968 1610232 5695864 -1610288 5695712 1610120 5695200 1609960 5695056 1610232 5695864 -1610288 5695712 1610248 5695424 1610120 5695200 1610232 5695864 -1610288 5695712 1610280 5695512 1610248 5695424 1610232 5695864 -1610248 5695424 1610120 5695200 1610232 5695864 1610280 5695512 -1610120 5695200 1610056 5695120 1609960 5695056 1610232 5695864 -1610288 5695712 1610296 5695600 1610280 5695512 1610232 5695864 -1610120 5695200 1609960 5695056 1610232 5695864 1610248 5695424 -1609960 5695056 1609808 5694968 1610232 5695864 1610120 5695200 -1609808 5694968 1608544 5699312 1610232 5695864 1609960 5695056 -1610232 5695864 1611336 5695680 1610288 5695712 1610280 5695512 -1608624 5699288 1608712 5699312 1610232 5695864 1608544 5699312 -1610232 5695864 1608712 5699312 1610736 5698824 1610784 5698784 -1608712 5699312 1610736 5698824 1610232 5695864 1608624 5699288 -1610736 5698824 1610232 5695920 1608712 5699312 1608920 5699432 -1610232 5695864 1610232 5695920 1610736 5698824 1610784 5698784 -1610232 5695864 1610232 5695920 1610784 5698784 1610848 5698768 -1610232 5695864 1610232 5695920 1610848 5698768 1611592 5695912 -1610848 5698768 1611704 5695976 1611592 5695912 1610232 5695920 -1610848 5698768 1612496 5696752 1611704 5695976 1610232 5695920 -1611704 5695976 1611680 5695944 1611592 5695912 1610232 5695920 -1610232 5695864 1610232 5695920 1611592 5695912 1611464 5695816 -1611592 5695912 1611560 5695880 1611464 5695816 1610232 5695920 -1611592 5695912 1611464 5695816 1610232 5695920 1611704 5695976 -1610232 5695864 1610232 5695920 1611464 5695816 1611336 5695680 -1610232 5695864 1610232 5695920 1611336 5695680 1610288 5695712 -1610232 5695920 1611592 5695912 1611464 5695816 1611336 5695680 -1611336 5695680 1611136 5695304 1610288 5695712 1610232 5695920 -1610232 5695920 1611464 5695816 1611336 5695680 1610288 5695712 -1610232 5695920 1610784 5698784 1610848 5698768 1611704 5695976 -1610232 5695920 1610736 5698824 1610784 5698784 1610848 5698768 -1610232 5695864 1608712 5699312 1610232 5695920 1610288 5695712 -1608712 5699312 1610232 5695920 1610232 5695864 1608624 5699288 -1610232 5695864 1608544 5699312 1608624 5699288 1610232 5695920 -1610232 5695864 1609808 5694968 1608544 5699312 1610232 5695920 -1609808 5694968 1608256 5699504 1608544 5699312 1610232 5695920 -1610232 5695864 1609960 5695056 1609808 5694968 1610232 5695920 -1608544 5699312 1608624 5699288 1610232 5695920 1609808 5694968 -1610232 5695920 1610288 5695712 1610232 5695864 1609808 5694968 -1608624 5699288 1608712 5699312 1610232 5695920 1608544 5699312 -1610232 5695920 1608712 5699312 1610736 5698824 1610784 5698784 -1608712 5699312 1610736 5698824 1610232 5695920 1608624 5699288 -1609808 5694968 1610208 5695968 1610232 5695920 1610232 5695864 -1608544 5699312 1610208 5695968 1609808 5694968 1608256 5699504 -1609808 5694968 1610208 5695968 1610232 5695864 1609960 5695056 -1610232 5695920 1610208 5695968 1608544 5699312 1608624 5699288 -1610232 5695920 1610208 5695968 1608624 5699288 1608712 5699312 -1610208 5695968 1608544 5699312 1608624 5699288 1608712 5699312 -1610208 5695968 1608712 5699312 1610232 5695920 1610232 5695864 -1610232 5695920 1610208 5695968 1608712 5699312 1610736 5698824 -1608712 5699312 1608920 5699432 1610736 5698824 1610208 5695968 -1610208 5695968 1608624 5699288 1608712 5699312 1610736 5698824 -1610232 5695920 1610208 5695968 1610736 5698824 1610784 5698784 -1610232 5695920 1610208 5695968 1610784 5698784 1610848 5698768 -1610232 5695920 1610208 5695968 1610848 5698768 1611704 5695976 -1610232 5695920 1610208 5695968 1611704 5695976 1611592 5695912 -1610848 5698768 1612496 5696752 1611704 5695976 1610208 5695968 -1611704 5695976 1611680 5695944 1611592 5695912 1610208 5695968 -1610232 5695920 1610208 5695968 1611592 5695912 1611464 5695816 -1610208 5695968 1611704 5695976 1611592 5695912 1611464 5695816 -1611592 5695912 1611560 5695880 1611464 5695816 1610208 5695968 -1610232 5695920 1610208 5695968 1611464 5695816 1611336 5695680 -1610208 5695968 1610848 5698768 1611704 5695976 1611592 5695912 -1610208 5695968 1610784 5698784 1610848 5698768 1611704 5695976 -1610208 5695968 1610736 5698824 1610784 5698784 1610848 5698768 -1610232 5695920 1610232 5695864 1610208 5695968 1611464 5695816 -1610208 5695968 1608712 5699312 1610736 5698824 1610784 5698784 -1610208 5695968 1609808 5694968 1608544 5699312 1608624 5699288 -1609808 5694968 1608544 5699312 1610208 5695968 1610232 5695864 -1608544 5699312 1610064 5696016 1609808 5694968 1608256 5699504 -1610208 5695968 1610064 5696016 1608544 5699312 1608624 5699288 -1610208 5695968 1610064 5696016 1608624 5699288 1608712 5699312 -1610208 5695968 1610064 5696016 1608712 5699312 1610736 5698824 -1608712 5699312 1608920 5699432 1610736 5698824 1610064 5696016 -1610064 5696016 1608624 5699288 1608712 5699312 1610736 5698824 -1610208 5695968 1610064 5696016 1610736 5698824 1610784 5698784 -1610064 5696016 1608712 5699312 1610736 5698824 1610784 5698784 -1610208 5695968 1610064 5696016 1610784 5698784 1610848 5698768 -1610208 5695968 1610064 5696016 1610848 5698768 1611704 5695976 -1610064 5696016 1610736 5698824 1610784 5698784 1610848 5698768 -1610064 5696016 1608544 5699312 1608624 5699288 1608712 5699312 -1610208 5695968 1609808 5694968 1610064 5696016 1610848 5698768 -1609808 5694968 1610064 5696016 1610208 5695968 1610232 5695864 -1610208 5695968 1610232 5695920 1610232 5695864 1610064 5696016 -1609808 5694968 1610064 5696016 1610232 5695864 1609960 5695056 -1610232 5695864 1610120 5695200 1609960 5695056 1610064 5696016 -1610120 5695200 1610056 5695120 1609960 5695056 1610064 5696016 -1610232 5695864 1610248 5695424 1610120 5695200 1610064 5696016 -1610232 5695864 1610280 5695512 1610248 5695424 1610064 5696016 -1610232 5695864 1610288 5695712 1610280 5695512 1610064 5696016 -1610280 5695512 1610248 5695424 1610064 5696016 1610288 5695712 -1610288 5695712 1610296 5695600 1610280 5695512 1610064 5696016 -1610248 5695424 1610120 5695200 1610064 5696016 1610280 5695512 -1610120 5695200 1609960 5695056 1610064 5696016 1610248 5695424 -1609960 5695056 1609808 5694968 1610064 5696016 1610120 5695200 -1610064 5696016 1610848 5698768 1610208 5695968 1610232 5695864 -1610064 5696016 1610208 5695968 1610232 5695864 1610288 5695712 -1610064 5696016 1609808 5694968 1608544 5699312 1608624 5699288 -1609808 5694968 1608544 5699312 1610064 5696016 1609960 5695056 -1608544 5699312 1609880 5696032 1609808 5694968 1608256 5699504 -1608544 5699312 1609880 5696032 1608256 5699504 1608400 5699424 -1609808 5694968 1602504 5696992 1608256 5699504 1609880 5696032 -1602504 5696992 1602504 5697056 1608256 5699504 1609880 5696032 -1609808 5694968 1602224 5696056 1602504 5696992 1609880 5696032 -1608256 5699504 1608544 5699312 1609880 5696032 1602504 5696992 -1610064 5696016 1609880 5696032 1608544 5699312 1608624 5699288 -1610064 5696016 1609880 5696032 1608624 5699288 1608712 5699312 -1610064 5696016 1609880 5696032 1608712 5699312 1610736 5698824 -1608712 5699312 1608920 5699432 1610736 5698824 1609880 5696032 -1610064 5696016 1609880 5696032 1610736 5698824 1610784 5698784 -1609880 5696032 1608712 5699312 1610736 5698824 1610784 5698784 -1610064 5696016 1609880 5696032 1610784 5698784 1610848 5698768 -1609880 5696032 1608624 5699288 1608712 5699312 1610736 5698824 -1609880 5696032 1608544 5699312 1608624 5699288 1608712 5699312 -1610064 5696016 1609808 5694968 1609880 5696032 1610784 5698784 -1609808 5694968 1609880 5696032 1610064 5696016 1609960 5695056 -1610064 5696016 1610120 5695200 1609960 5695056 1609880 5696032 -1610120 5695200 1610056 5695120 1609960 5695056 1609880 5696032 -1610064 5696016 1610248 5695424 1610120 5695200 1609880 5696032 -1610064 5696016 1610280 5695512 1610248 5695424 1609880 5696032 -1610064 5696016 1610288 5695712 1610280 5695512 1609880 5696032 -1610064 5696016 1610232 5695864 1610288 5695712 1609880 5696032 -1610288 5695712 1610280 5695512 1609880 5696032 1610232 5695864 -1610288 5695712 1610296 5695600 1610280 5695512 1609880 5696032 -1610280 5695512 1610248 5695424 1609880 5696032 1610288 5695712 -1610248 5695424 1610120 5695200 1609880 5696032 1610280 5695512 -1610120 5695200 1609960 5695056 1609880 5696032 1610248 5695424 -1610064 5696016 1610208 5695968 1610232 5695864 1609880 5696032 -1609880 5696032 1610784 5698784 1610064 5696016 1610232 5695864 -1609960 5695056 1609808 5694968 1609880 5696032 1610120 5695200 -1608544 5699312 1608624 5699288 1609880 5696032 1608256 5699504 -1609880 5696032 1609960 5695056 1609808 5694968 1602504 5696992 -1602504 5696992 1609688 5695968 1609808 5694968 1602224 5696056 -1609880 5696032 1609688 5695968 1602504 5696992 1608256 5699504 -1602504 5696992 1602504 5697056 1608256 5699504 1609688 5695968 -1602504 5696992 1609688 5695968 1602224 5696056 1602224 5696096 -1609880 5696032 1609688 5695968 1608256 5699504 1608544 5699312 -1608256 5699504 1608400 5699424 1608544 5699312 1609688 5695968 -1609688 5695968 1602504 5696992 1608256 5699504 1608544 5699312 -1609808 5694968 1602200 5696008 1602224 5696056 1609688 5695968 -1609880 5696032 1609688 5695968 1608544 5699312 1608624 5699288 -1609688 5695968 1608256 5699504 1608544 5699312 1608624 5699288 -1609880 5696032 1609688 5695968 1608624 5699288 1608712 5699312 -1609880 5696032 1609688 5695968 1608712 5699312 1610736 5698824 -1609688 5695968 1608544 5699312 1608624 5699288 1608712 5699312 -1609880 5696032 1609808 5694968 1609688 5695968 1608712 5699312 -1609808 5694968 1609688 5695968 1609880 5696032 1609960 5695056 -1609880 5696032 1610120 5695200 1609960 5695056 1609688 5695968 -1610120 5695200 1610056 5695120 1609960 5695056 1609688 5695968 -1609880 5696032 1610248 5695424 1610120 5695200 1609688 5695968 -1609880 5696032 1610280 5695512 1610248 5695424 1609688 5695968 -1609880 5696032 1610288 5695712 1610280 5695512 1609688 5695968 -1609880 5696032 1610232 5695864 1610288 5695712 1609688 5695968 -1610288 5695712 1610296 5695600 1610280 5695512 1609688 5695968 -1610288 5695712 1610296 5695600 1609688 5695968 1609880 5696032 -1610280 5695512 1610248 5695424 1609688 5695968 1610296 5695600 -1610248 5695424 1610120 5695200 1609688 5695968 1610280 5695512 -1610120 5695200 1609960 5695056 1609688 5695968 1610248 5695424 -1609688 5695968 1608712 5699312 1609880 5696032 1610288 5695712 -1609960 5695056 1609808 5694968 1609688 5695968 1610120 5695200 -1602504 5696992 1608256 5699504 1609688 5695968 1602224 5696056 -1609688 5695968 1609960 5695056 1609808 5694968 1602224 5696056 -1609688 5695968 1609448 5695808 1602224 5696056 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1609448 5695808 -1602224 5696056 1609448 5695808 1609808 5694968 1602200 5696008 -1609808 5694968 1602160 5695928 1602200 5696008 1609448 5695808 -1609808 5694968 1608392 5689208 1602160 5695928 1609448 5695808 -1609448 5695808 1609688 5695968 1609808 5694968 1602160 5695928 -1602200 5696008 1602224 5696056 1609448 5695808 1602160 5695928 -1609688 5695968 1609448 5695808 1602504 5696992 1608256 5699504 -1602504 5696992 1602504 5697056 1608256 5699504 1609448 5695808 -1609448 5695808 1602224 5696056 1602504 5696992 1608256 5699504 -1609688 5695968 1609448 5695808 1608256 5699504 1608544 5699312 -1608256 5699504 1608400 5699424 1608544 5699312 1609448 5695808 -1609688 5695968 1609448 5695808 1608544 5699312 1608624 5699288 -1609448 5695808 1608256 5699504 1608544 5699312 1608624 5699288 -1609688 5695968 1609448 5695808 1608624 5699288 1608712 5699312 -1609448 5695808 1602504 5696992 1608256 5699504 1608544 5699312 -1609688 5695968 1609808 5694968 1609448 5695808 1608624 5699288 -1609808 5694968 1609448 5695808 1609688 5695968 1609960 5695056 -1609808 5694968 1602160 5695928 1609448 5695808 1609960 5695056 -1609688 5695968 1610120 5695200 1609960 5695056 1609448 5695808 -1610120 5695200 1610056 5695120 1609960 5695056 1609448 5695808 -1609688 5695968 1610248 5695424 1610120 5695200 1609448 5695808 -1609688 5695968 1610280 5695512 1610248 5695424 1609448 5695808 -1610120 5695200 1609960 5695056 1609448 5695808 1610248 5695424 -1609448 5695808 1608624 5699288 1609688 5695968 1610248 5695424 -1609960 5695056 1609808 5694968 1609448 5695808 1610120 5695200 -1609448 5695808 1602200 5696008 1602224 5696056 1602504 5696992 -1602160 5695928 1609320 5695680 1609808 5694968 1608392 5689208 -1609808 5694968 1608616 5689368 1608392 5689208 1609320 5695680 -1602160 5695928 1609320 5695680 1608392 5689208 1602112 5695896 -1609808 5694968 1608736 5689448 1608616 5689368 1609320 5695680 -1608392 5689208 1602160 5695928 1609320 5695680 1608616 5689368 -1609448 5695808 1609320 5695680 1602160 5695928 1602200 5696008 -1609808 5694968 1609320 5695680 1609448 5695808 1609960 5695056 -1609448 5695808 1609960 5695056 1609320 5695680 1602200 5696008 -1602160 5695928 1602200 5696008 1609320 5695680 1608392 5689208 -1609320 5695680 1609960 5695056 1609808 5694968 1608616 5689368 -1609448 5695808 1609320 5695680 1602200 5696008 1602224 5696056 -1609320 5695680 1602160 5695928 1602200 5696008 1602224 5696056 -1609448 5695808 1609960 5695056 1609320 5695680 1602224 5696056 -1609448 5695808 1610120 5695200 1609960 5695056 1609320 5695680 -1609448 5695808 1609320 5695680 1602224 5696056 1602504 5696992 -1609448 5695808 1609320 5695680 1602504 5696992 1608256 5699504 -1602504 5696992 1602504 5697056 1608256 5699504 1609320 5695680 -1609448 5695808 1609960 5695056 1609320 5695680 1608256 5699504 -1602224 5696056 1602224 5696096 1602504 5696992 1609320 5695680 -1609320 5695680 1602200 5696008 1602224 5696056 1602504 5696992 -1609448 5695808 1609320 5695680 1608256 5699504 1608544 5699312 -1608256 5699504 1608400 5699424 1608544 5699312 1609320 5695680 -1609320 5695680 1602504 5696992 1608256 5699504 1608544 5699312 -1609448 5695808 1609960 5695056 1609320 5695680 1608544 5699312 -1609448 5695808 1609320 5695680 1608544 5699312 1608624 5699288 -1609320 5695680 1602224 5696056 1602504 5696992 1608256 5699504 -1602160 5695928 1609264 5695568 1608392 5689208 1602112 5695896 -1608392 5689208 1609264 5695568 1609320 5695680 1608616 5689368 -1609320 5695680 1609808 5694968 1608616 5689368 1609264 5695568 -1609808 5694968 1608736 5689448 1608616 5689368 1609264 5695568 -1609808 5694968 1608736 5689448 1609264 5695568 1609320 5695680 -1608616 5689368 1608392 5689208 1609264 5695568 1608736 5689448 -1609320 5695680 1609264 5695568 1602160 5695928 1602200 5696008 -1609320 5695680 1609264 5695568 1602200 5696008 1602224 5696056 -1609264 5695568 1602160 5695928 1602200 5696008 1602224 5696056 -1609264 5695568 1602224 5696056 1609320 5695680 1609808 5694968 -1609320 5695680 1609960 5695056 1609808 5694968 1609264 5695568 -1609808 5694968 1608736 5689448 1609264 5695568 1609960 5695056 -1609320 5695680 1609448 5695808 1609960 5695056 1609264 5695568 -1609320 5695680 1609960 5695056 1609264 5695568 1602224 5696056 -1609264 5695568 1608392 5689208 1602160 5695928 1602200 5696008 -1608392 5689208 1602160 5695928 1609264 5695568 1608616 5689368 -1609808 5694968 1610992 5692696 1608736 5689448 1609264 5695568 -1609320 5695680 1609264 5695568 1602224 5696056 1602504 5696992 -1609264 5695568 1602200 5696008 1602224 5696056 1602504 5696992 -1609320 5695680 1609960 5695056 1609264 5695568 1602504 5696992 -1602224 5696056 1602224 5696096 1602504 5696992 1609264 5695568 -1609320 5695680 1609264 5695568 1602504 5696992 1608256 5699504 -1602504 5696992 1602504 5697056 1608256 5699504 1609264 5695568 -1609320 5695680 1609264 5695568 1608256 5699504 1608544 5699312 -1609320 5695680 1609960 5695056 1609264 5695568 1608256 5699504 -1609264 5695568 1602224 5696056 1602504 5696992 1608256 5699504 -1602160 5695928 1609248 5695456 1608392 5689208 1602112 5695896 -1609264 5695568 1609248 5695456 1602160 5695928 1602200 5696008 -1609264 5695568 1609248 5695456 1602200 5696008 1602224 5696056 -1609264 5695568 1609248 5695456 1602224 5696056 1602504 5696992 -1609248 5695456 1602200 5696008 1602224 5696056 1602504 5696992 -1609248 5695456 1602160 5695928 1602200 5696008 1602224 5696056 -1609264 5695568 1608392 5689208 1609248 5695456 1602504 5696992 -1608392 5689208 1609248 5695456 1609264 5695568 1608616 5689368 -1609264 5695568 1608736 5689448 1608616 5689368 1609248 5695456 -1609264 5695568 1609808 5694968 1608736 5689448 1609248 5695456 -1609264 5695568 1609960 5695056 1609808 5694968 1609248 5695456 -1609808 5694968 1608736 5689448 1609248 5695456 1609960 5695056 -1608736 5689448 1608616 5689368 1609248 5695456 1609808 5694968 -1609264 5695568 1609320 5695680 1609960 5695056 1609248 5695456 -1609960 5695056 1609808 5694968 1609248 5695456 1609320 5695680 -1609320 5695680 1609448 5695808 1609960 5695056 1609248 5695456 -1609960 5695056 1609808 5694968 1609248 5695456 1609448 5695808 -1609320 5695680 1609448 5695808 1609248 5695456 1609264 5695568 -1609248 5695456 1602504 5696992 1609264 5695568 1609320 5695680 -1608616 5689368 1608392 5689208 1609248 5695456 1608736 5689448 -1609248 5695456 1608392 5689208 1602160 5695928 1602200 5696008 -1608392 5689208 1602160 5695928 1609248 5695456 1608616 5689368 -1602224 5696056 1602224 5696096 1602504 5696992 1609248 5695456 -1609808 5694968 1610992 5692696 1608736 5689448 1609248 5695456 -1609264 5695568 1609248 5695456 1602504 5696992 1608256 5699504 -1609448 5695808 1610120 5695200 1609960 5695056 1609248 5695456 -1609808 5694968 1609264 5695000 1609248 5695456 1609960 5695056 -1609248 5695456 1609264 5695000 1608736 5689448 1608616 5689368 -1609248 5695456 1609264 5695000 1608616 5689368 1608392 5689208 -1609264 5695000 1608736 5689448 1608616 5689368 1608392 5689208 -1609248 5695456 1609808 5694968 1609264 5695000 1608392 5689208 -1609248 5695456 1609264 5695000 1608392 5689208 1602160 5695928 -1608392 5689208 1602112 5695896 1602160 5695928 1609264 5695000 -1609264 5695000 1608616 5689368 1608392 5689208 1602160 5695928 -1609248 5695456 1609264 5695000 1602160 5695928 1602200 5696008 -1609248 5695456 1609264 5695000 1602200 5696008 1602224 5696056 -1609248 5695456 1609264 5695000 1602224 5696056 1602504 5696992 -1609264 5695000 1602160 5695928 1602200 5696008 1602224 5696056 -1609248 5695456 1609808 5694968 1609264 5695000 1602224 5696056 -1609264 5695000 1608392 5689208 1602160 5695928 1602200 5696008 -1609264 5695000 1609808 5694968 1608736 5689448 1608616 5689368 -1608736 5689448 1609264 5695000 1609808 5694968 1610992 5692696 -1608736 5689448 1608616 5689368 1609264 5695000 1610992 5692696 -1609264 5695000 1609248 5695456 1609808 5694968 1610992 5692696 -1609808 5694968 1611000 5692800 1610992 5692696 1609264 5695000 -1609808 5694968 1611000 5692800 1609264 5695000 1609248 5695456 -1610992 5692696 1608736 5689448 1609264 5695000 1611000 5692800 -1608736 5689448 1609264 5695000 1610992 5692696 1608840 5689480 -1610992 5692696 1611024 5692552 1608840 5689480 1609264 5695000 -1608736 5689448 1608616 5689368 1609264 5695000 1608840 5689480 -1609264 5695000 1611000 5692800 1610992 5692696 1608840 5689480 -1609808 5694968 1611064 5692984 1611000 5692800 1609264 5695000 -1609808 5694968 1609392 5694896 1609264 5695000 1609248 5695456 -1609264 5695000 1609392 5694896 1611000 5692800 1610992 5692696 -1609264 5695000 1609808 5694968 1609392 5694896 1610992 5692696 -1609392 5694896 1609808 5694968 1611000 5692800 1610992 5692696 -1609264 5695000 1609392 5694896 1610992 5692696 1608840 5689480 -1610992 5692696 1611024 5692552 1608840 5689480 1609392 5694896 -1609264 5695000 1609808 5694968 1609392 5694896 1608840 5689480 -1609392 5694896 1611000 5692800 1610992 5692696 1608840 5689480 -1609264 5695000 1609392 5694896 1608840 5689480 1608736 5689448 -1609264 5695000 1609392 5694896 1608736 5689448 1608616 5689368 -1609264 5695000 1609808 5694968 1609392 5694896 1608736 5689448 -1609392 5694896 1610992 5692696 1608840 5689480 1608736 5689448 -1611000 5692800 1609392 5694896 1609808 5694968 1611064 5692984 -1609808 5694968 1611192 5693224 1611064 5692984 1609392 5694896 -1611000 5692800 1610992 5692696 1609392 5694896 1611064 5692984 -1609392 5694896 1609264 5695000 1609808 5694968 1611064 5692984 -1611064 5692984 1609472 5694880 1609808 5694968 1611192 5693224 -1609808 5694968 1609472 5694880 1609392 5694896 1609264 5695000 -1609808 5694968 1609472 5694880 1609264 5695000 1609248 5695456 -1609808 5694968 1609472 5694880 1609248 5695456 1609960 5695056 -1609472 5694880 1611064 5692984 1609392 5694896 1609264 5695000 -1609472 5694880 1609392 5694896 1609264 5695000 1609248 5695456 -1609808 5694968 1611064 5692984 1609472 5694880 1609248 5695456 -1609392 5694896 1609472 5694880 1611064 5692984 1611000 5692800 -1609392 5694896 1609472 5694880 1611000 5692800 1610992 5692696 -1609392 5694896 1609264 5695000 1609472 5694880 1611000 5692800 -1609472 5694880 1609808 5694968 1611064 5692984 1611000 5692800 -1611064 5692984 1609600 5694896 1609808 5694968 1611192 5693224 -1609808 5694968 1611312 5693984 1611192 5693224 1609600 5694896 -1609472 5694880 1609600 5694896 1611064 5692984 1611000 5692800 -1609808 5694968 1609600 5694896 1609472 5694880 1609248 5695456 -1609808 5694968 1609600 5694896 1609248 5695456 1609960 5695056 -1609472 5694880 1609264 5695000 1609248 5695456 1609600 5694896 -1609472 5694880 1609392 5694896 1609264 5695000 1609600 5694896 -1609600 5694896 1611064 5692984 1609472 5694880 1609264 5695000 -1609248 5695456 1609808 5694968 1609600 5694896 1609264 5695000 -1611064 5692984 1609472 5694880 1609600 5694896 1611192 5693224 -1609600 5694896 1609248 5695456 1609808 5694968 1611192 5693224 -1609808 5694968 1609656 5694928 1609248 5695456 1609960 5695056 -1609248 5695456 1609656 5694928 1609600 5694896 1609264 5695000 -1609600 5694896 1609472 5694880 1609264 5695000 1609656 5694928 -1609472 5694880 1609392 5694896 1609264 5695000 1609656 5694928 -1609264 5695000 1609248 5695456 1609656 5694928 1609472 5694880 -1609656 5694928 1609808 5694968 1609600 5694896 1609472 5694880 -1609600 5694896 1609656 5694928 1609808 5694968 1611192 5693224 -1609248 5695456 1609808 5694968 1609656 5694928 1609264 5695000 -1609600 5694896 1609712 5694936 1609808 5694968 1611192 5693224 -1609600 5694896 1609712 5694936 1611192 5693224 1611064 5692984 -1609808 5694968 1611312 5693984 1611192 5693224 1609712 5694936 -1611312 5693984 1611408 5693680 1611192 5693224 1609712 5694936 -1609808 5694968 1609960 5695056 1611312 5693984 1609712 5694936 -1611192 5693224 1609600 5694896 1609712 5694936 1611312 5693984 -1609808 5694968 1609712 5694936 1609656 5694928 1609248 5695456 -1609808 5694968 1609712 5694936 1609248 5695456 1609960 5695056 -1609712 5694936 1609600 5694896 1609656 5694928 1609248 5695456 -1609656 5694928 1609264 5695000 1609248 5695456 1609712 5694936 -1609600 5694896 1609656 5694928 1609712 5694936 1611192 5693224 -1609712 5694936 1609248 5695456 1609808 5694968 1611312 5693984 -1609248 5695456 1609808 5695208 1609960 5695056 1609808 5694968 -1609248 5695456 1609808 5695208 1609808 5694968 1609712 5694936 -1609808 5695208 1609960 5695056 1609808 5694968 1609712 5694936 -1609448 5695808 1609808 5695208 1609248 5695456 1609320 5695680 -1609248 5695456 1609264 5695568 1609320 5695680 1609808 5695208 -1609320 5695680 1609448 5695808 1609808 5695208 1609264 5695568 -1609248 5695456 1609808 5695208 1609712 5694936 1609656 5694928 -1609808 5695208 1609808 5694968 1609712 5694936 1609656 5694928 -1609248 5695456 1609808 5695208 1609656 5694928 1609264 5695000 -1609656 5694928 1609472 5694880 1609264 5695000 1609808 5695208 -1609808 5695208 1609712 5694936 1609656 5694928 1609264 5695000 -1609808 5695208 1609448 5695808 1609960 5695056 1609808 5694968 -1609448 5695808 1609960 5695056 1609808 5695208 1609320 5695680 -1609248 5695456 1609264 5695568 1609808 5695208 1609264 5695000 -1609960 5695056 1609808 5695208 1609448 5695808 1610120 5695200 -1609960 5695056 1609808 5694968 1609808 5695208 1610120 5695200 -1609808 5695208 1609320 5695680 1609448 5695808 1610120 5695200 -1609960 5695056 1609808 5695208 1610120 5695200 1610056 5695120 -1609960 5695056 1609808 5694968 1609808 5695208 1610056 5695120 -1609448 5695808 1610248 5695424 1610120 5695200 1609808 5695208 -1609448 5695808 1610248 5695424 1609808 5695208 1609320 5695680 -1609448 5695808 1609688 5695968 1610248 5695424 1609808 5695208 -1609448 5695808 1609688 5695968 1609808 5695208 1609320 5695680 -1609688 5695968 1610280 5695512 1610248 5695424 1609808 5695208 -1609688 5695968 1610296 5695600 1610280 5695512 1609808 5695208 -1609688 5695968 1610280 5695512 1609808 5695208 1609448 5695808 -1610248 5695424 1610120 5695200 1609808 5695208 1610280 5695512 -1609808 5695208 1610248 5695424 1610120 5695200 1610056 5695120 -1610280 5695512 1609912 5695344 1609688 5695968 1610296 5695600 -1610280 5695512 1609808 5695208 1609912 5695344 1610296 5695600 -1609912 5695344 1609808 5695208 1609688 5695968 1610296 5695600 -1609688 5695968 1610288 5695712 1610296 5695600 1609912 5695344 -1609688 5695968 1610288 5695712 1609912 5695344 1609808 5695208 -1609688 5695968 1609880 5696032 1610288 5695712 1609912 5695344 -1609880 5696032 1610232 5695864 1610288 5695712 1609912 5695344 -1609880 5696032 1610064 5696016 1610232 5695864 1609912 5695344 -1609688 5695968 1609880 5696032 1609912 5695344 1609808 5695208 -1610288 5695712 1610296 5695600 1609912 5695344 1610232 5695864 -1609880 5696032 1610232 5695864 1609912 5695344 1609688 5695968 -1610296 5695600 1610280 5695512 1609912 5695344 1610288 5695712 -1609808 5695208 1609912 5695344 1610280 5695512 1610248 5695424 -1609808 5695208 1609688 5695968 1609912 5695344 1610248 5695424 -1609912 5695344 1610296 5695600 1610280 5695512 1610248 5695424 -1609688 5695968 1609912 5695344 1609808 5695208 1609448 5695808 -1609808 5695208 1609320 5695680 1609448 5695808 1609912 5695344 -1609808 5695208 1609264 5695568 1609320 5695680 1609912 5695344 -1609912 5695344 1610248 5695424 1609808 5695208 1609320 5695680 -1609688 5695968 1609880 5696032 1609912 5695344 1609448 5695808 -1609448 5695808 1609688 5695968 1609912 5695344 1609320 5695680 -1609808 5695208 1609912 5695344 1610248 5695424 1610120 5695200 -1609808 5695208 1609320 5695680 1609912 5695344 1610120 5695200 -1609912 5695344 1610280 5695512 1610248 5695424 1610120 5695200 -1609808 5695208 1609912 5695344 1610120 5695200 1610056 5695120 -1609808 5695208 1609320 5695680 1609912 5695344 1610056 5695120 -1609808 5695208 1609912 5695344 1610056 5695120 1609960 5695056 -1609912 5695344 1610248 5695424 1610120 5695200 1610056 5695120 -1610232 5695864 1609960 5695408 1609912 5695344 1609880 5696032 -1610232 5695864 1609960 5695408 1609880 5696032 1610064 5696016 -1609960 5695408 1609912 5695344 1609880 5696032 1610064 5696016 -1609960 5695408 1610288 5695712 1609912 5695344 1609880 5696032 -1610232 5695864 1610288 5695712 1609960 5695408 1610064 5696016 -1609912 5695344 1609960 5695408 1610288 5695712 1610296 5695600 -1609912 5695344 1609880 5696032 1609960 5695408 1610296 5695600 -1609960 5695408 1610232 5695864 1610288 5695712 1610296 5695600 -1609912 5695344 1609688 5695968 1609880 5696032 1609960 5695408 -1609880 5696032 1610064 5696016 1609960 5695408 1609688 5695968 -1609912 5695344 1609688 5695968 1609960 5695408 1610296 5695600 -1609912 5695344 1609448 5695808 1609688 5695968 1609960 5695408 -1609912 5695344 1609448 5695808 1609960 5695408 1610296 5695600 -1609688 5695968 1609880 5696032 1609960 5695408 1609448 5695808 -1609912 5695344 1609960 5695408 1610296 5695600 1610280 5695512 -1609912 5695344 1609960 5695408 1610280 5695512 1610248 5695424 -1609912 5695344 1609448 5695808 1609960 5695408 1610248 5695424 -1609960 5695408 1610288 5695712 1610296 5695600 1610280 5695512 -1609960 5695408 1610296 5695600 1610280 5695512 1610248 5695424 -1609912 5695344 1609960 5695408 1610248 5695424 1610120 5695200 -1609960 5695408 1610280 5695512 1610248 5695424 1610120 5695200 -1609912 5695344 1609448 5695808 1609960 5695408 1610120 5695200 -1610232 5695864 1609960 5695408 1610064 5696016 1610208 5695968 -1609912 5695344 1609320 5695680 1609448 5695808 1609960 5695408 -1609912 5695344 1609960 5695408 1610120 5695200 1610056 5695120 -1610064 5696016 1610008 5695584 1609960 5695408 1609880 5696032 -1609960 5695408 1609688 5695968 1609880 5696032 1610008 5695584 -1609880 5696032 1610064 5696016 1610008 5695584 1609688 5695968 -1610008 5695584 1610232 5695864 1609960 5695408 1609688 5695968 -1609960 5695408 1610008 5695584 1610232 5695864 1610288 5695712 -1609960 5695408 1610008 5695584 1610288 5695712 1610296 5695600 -1609960 5695408 1609688 5695968 1610008 5695584 1610296 5695600 -1610008 5695584 1610232 5695864 1610288 5695712 1610296 5695600 -1610008 5695584 1610064 5696016 1610232 5695864 1610288 5695712 -1610064 5696016 1610232 5695864 1610008 5695584 1609880 5696032 -1609960 5695408 1610008 5695584 1610296 5695600 1610280 5695512 -1610008 5695584 1610288 5695712 1610296 5695600 1610280 5695512 -1609960 5695408 1609688 5695968 1610008 5695584 1610280 5695512 -1609960 5695408 1609448 5695808 1609688 5695968 1610008 5695584 -1609688 5695968 1609880 5696032 1610008 5695584 1609448 5695808 -1609960 5695408 1609912 5695344 1609448 5695808 1610008 5695584 -1609960 5695408 1609448 5695808 1610008 5695584 1610280 5695512 -1609960 5695408 1610008 5695584 1610280 5695512 1610248 5695424 -1609960 5695408 1610008 5695584 1610248 5695424 1610120 5695200 -1609960 5695408 1609448 5695808 1610008 5695584 1610248 5695424 -1610008 5695584 1610296 5695600 1610280 5695512 1610248 5695424 -1610232 5695864 1610008 5695584 1610064 5696016 1610208 5695968 -1609880 5696032 1609992 5695696 1610008 5695584 1609688 5695968 -1610008 5695584 1609448 5695808 1609688 5695968 1609992 5695696 -1609688 5695968 1609880 5696032 1609992 5695696 1609448 5695808 -1609992 5695696 1610064 5696016 1610008 5695584 1609448 5695808 -1610008 5695584 1609992 5695696 1610064 5696016 1610232 5695864 -1610008 5695584 1609992 5695696 1610232 5695864 1610288 5695712 -1610008 5695584 1609992 5695696 1610288 5695712 1610296 5695600 -1610008 5695584 1609448 5695808 1609992 5695696 1610288 5695712 -1609992 5695696 1610064 5696016 1610232 5695864 1610288 5695712 -1609992 5695696 1609880 5696032 1610064 5696016 1610232 5695864 -1609880 5696032 1610064 5696016 1609992 5695696 1609688 5695968 -1610008 5695584 1609960 5695408 1609448 5695808 1609992 5695696 -1610064 5696016 1610208 5695968 1610232 5695864 1609992 5695696 -1609688 5695968 1609968 5695728 1609992 5695696 1609448 5695808 -1609992 5695696 1610008 5695584 1609448 5695808 1609968 5695728 -1609448 5695808 1609688 5695968 1609968 5695728 1610008 5695584 -1609968 5695728 1609880 5696032 1609992 5695696 1610008 5695584 -1609992 5695696 1609968 5695728 1609880 5696032 1610064 5696016 -1609992 5695696 1609968 5695728 1610064 5696016 1610232 5695864 -1609992 5695696 1609968 5695728 1610232 5695864 1610288 5695712 -1609992 5695696 1610008 5695584 1609968 5695728 1610232 5695864 -1609968 5695728 1609880 5696032 1610064 5696016 1610232 5695864 -1609968 5695728 1609688 5695968 1609880 5696032 1610064 5696016 -1609688 5695968 1609880 5696032 1609968 5695728 1609448 5695808 -1610008 5695584 1609960 5695408 1609448 5695808 1609968 5695728 -1609448 5695808 1609688 5695968 1609968 5695728 1609960 5695408 -1610008 5695584 1609960 5695408 1609968 5695728 1609992 5695696 -1609960 5695408 1609912 5695344 1609448 5695808 1609968 5695728 -1610064 5696016 1610208 5695968 1610232 5695864 1609968 5695728 -1609968 5695728 1609920 5695792 1609880 5696032 1610064 5696016 -1609968 5695728 1609920 5695792 1610064 5696016 1610232 5695864 -1609968 5695728 1609688 5695968 1609920 5695792 1610064 5696016 -1609688 5695968 1609920 5695792 1609968 5695728 1609448 5695808 -1609968 5695728 1609960 5695408 1609448 5695808 1609920 5695792 -1609960 5695408 1609912 5695344 1609448 5695808 1609920 5695792 -1609920 5695792 1610064 5696016 1609968 5695728 1609960 5695408 -1609448 5695808 1609688 5695968 1609920 5695792 1609960 5695408 -1609920 5695792 1609688 5695968 1609880 5696032 1610064 5696016 -1609688 5695968 1609880 5696032 1609920 5695792 1609448 5695808 -1609968 5695728 1610008 5695584 1609960 5695408 1609920 5695792 -1609960 5695408 1609448 5695808 1609920 5695792 1610008 5695584 -1609968 5695728 1609992 5695696 1610008 5695584 1609920 5695792 -1609968 5695728 1610008 5695584 1609920 5695792 1610064 5696016 -1609448 5695808 1609784 5695824 1609920 5695792 1609960 5695408 -1609920 5695792 1610008 5695584 1609960 5695408 1609784 5695824 -1609448 5695808 1609784 5695824 1609960 5695408 1609912 5695344 -1609960 5695408 1609912 5695344 1609784 5695824 1610008 5695584 -1609784 5695824 1609688 5695968 1609920 5695792 1610008 5695584 -1609920 5695792 1609784 5695824 1609688 5695968 1609880 5696032 -1609920 5695792 1609784 5695824 1609880 5696032 1610064 5696016 -1609920 5695792 1610008 5695584 1609784 5695824 1609880 5696032 -1609784 5695824 1609448 5695808 1609688 5695968 1609880 5696032 -1609448 5695808 1609688 5695968 1609784 5695824 1609912 5695344 -1609920 5695792 1609968 5695728 1610008 5695584 1609784 5695824 -1610008 5695584 1609960 5695408 1609784 5695824 1609968 5695728 -1609968 5695728 1609992 5695696 1610008 5695584 1609784 5695824 -1609920 5695792 1609968 5695728 1609784 5695824 1609880 5696032 -1609448 5695808 1609784 5695824 1609912 5695344 1609320 5695680 -1609912 5695344 1609720 5695792 1609784 5695824 1609960 5695408 -1609784 5695824 1610008 5695584 1609960 5695408 1609720 5695792 -1609784 5695824 1609968 5695728 1610008 5695584 1609720 5695792 -1609968 5695728 1609992 5695696 1610008 5695584 1609720 5695792 -1609960 5695408 1609912 5695344 1609720 5695792 1610008 5695584 -1610008 5695584 1609960 5695408 1609720 5695792 1609968 5695728 -1609720 5695792 1609448 5695808 1609784 5695824 1609968 5695728 -1609784 5695824 1609720 5695792 1609448 5695808 1609688 5695968 -1609784 5695824 1609720 5695792 1609688 5695968 1609880 5696032 -1609784 5695824 1609968 5695728 1609720 5695792 1609688 5695968 -1609720 5695792 1609912 5695344 1609448 5695808 1609688 5695968 -1609912 5695344 1609448 5695808 1609720 5695792 1609960 5695408 -1609784 5695824 1609920 5695792 1609968 5695728 1609720 5695792 -1609968 5695728 1610008 5695584 1609720 5695792 1609920 5695792 -1609784 5695824 1609920 5695792 1609720 5695792 1609688 5695968 -1609448 5695808 1609720 5695792 1609912 5695344 1609320 5695680 -1609912 5695344 1609808 5695208 1609320 5695680 1609720 5695792 -1609808 5695208 1609264 5695568 1609320 5695680 1609720 5695792 -1609448 5695808 1609688 5695968 1609720 5695792 1609320 5695680 -1609720 5695792 1609960 5695408 1609912 5695344 1609808 5695208 -1609320 5695680 1609448 5695808 1609720 5695792 1609808 5695208 -1609320 5695680 1609464 5695600 1609808 5695208 1609264 5695568 -1609808 5695208 1609248 5695456 1609264 5695568 1609464 5695600 -1609264 5695568 1609320 5695680 1609464 5695600 1609248 5695456 -1609808 5695208 1609464 5695600 1609720 5695792 1609912 5695344 -1609808 5695208 1609264 5695000 1609248 5695456 1609464 5695600 -1609464 5695600 1609320 5695680 1609720 5695792 1609912 5695344 -1609720 5695792 1609960 5695408 1609912 5695344 1609464 5695600 -1609320 5695680 1609720 5695792 1609464 5695600 1609264 5695568 -1609464 5695600 1609912 5695344 1609808 5695208 1609248 5695456 -1609720 5695792 1609464 5695600 1609320 5695680 1609448 5695808 -1609720 5695792 1609464 5695600 1609448 5695808 1609688 5695968 -1609720 5695792 1609912 5695344 1609464 5695600 1609448 5695808 -1609464 5695600 1609264 5695568 1609320 5695680 1609448 5695808 -1609464 5695600 1609408 5695536 1609248 5695456 1609264 5695568 -1609464 5695600 1609408 5695536 1609264 5695568 1609320 5695680 -1609408 5695536 1609248 5695456 1609264 5695568 1609320 5695680 -1609248 5695456 1609408 5695536 1609808 5695208 1609264 5695000 -1609808 5695208 1609656 5694928 1609264 5695000 1609408 5695536 -1609464 5695600 1609408 5695536 1609320 5695680 1609448 5695808 -1609464 5695600 1609808 5695208 1609408 5695536 1609320 5695680 -1609808 5695208 1609408 5695536 1609464 5695600 1609912 5695344 -1609408 5695536 1609264 5695000 1609248 5695456 1609264 5695568 -1609408 5695536 1609464 5695600 1609808 5695208 1609264 5695000 -1609264 5695000 1609416 5695400 1609808 5695208 1609656 5694928 -1609264 5695000 1609416 5695400 1609656 5694928 1609472 5694880 -1609656 5694928 1609600 5694896 1609472 5694880 1609416 5695400 -1609264 5695000 1609416 5695400 1609472 5694880 1609392 5694896 -1609808 5695208 1609712 5694936 1609656 5694928 1609416 5695400 -1609416 5695400 1609808 5695208 1609656 5694928 1609472 5694880 -1609408 5695536 1609416 5695400 1609264 5695000 1609248 5695456 -1609408 5695536 1609416 5695400 1609248 5695456 1609264 5695568 -1609408 5695536 1609808 5695208 1609416 5695400 1609248 5695456 -1609808 5695208 1609416 5695400 1609408 5695536 1609464 5695600 -1609808 5695208 1609416 5695400 1609464 5695600 1609912 5695344 -1609464 5695600 1609720 5695792 1609912 5695344 1609416 5695400 -1609416 5695400 1609248 5695456 1609408 5695536 1609464 5695600 -1609416 5695400 1609408 5695536 1609464 5695600 1609912 5695344 -1609264 5695000 1609248 5695456 1609416 5695400 1609472 5694880 -1609416 5695400 1609912 5695344 1609808 5695208 1609656 5694928 -1609656 5694928 1609432 5695384 1609808 5695208 1609712 5694936 -1609416 5695400 1609432 5695384 1609656 5694928 1609472 5694880 -1609656 5694928 1609600 5694896 1609472 5694880 1609432 5695384 -1609416 5695400 1609432 5695384 1609472 5694880 1609264 5695000 -1609472 5694880 1609392 5694896 1609264 5695000 1609432 5695384 -1609264 5695000 1609416 5695400 1609432 5695384 1609392 5694896 -1609432 5695384 1609656 5694928 1609472 5694880 1609392 5694896 -1609416 5695400 1609432 5695384 1609264 5695000 1609248 5695456 -1609432 5695384 1609392 5694896 1609264 5695000 1609248 5695456 -1609416 5695400 1609432 5695384 1609248 5695456 1609408 5695536 -1609416 5695400 1609808 5695208 1609432 5695384 1609248 5695456 -1609808 5695208 1609432 5695384 1609416 5695400 1609912 5695344 -1609416 5695400 1609464 5695600 1609912 5695344 1609432 5695384 -1609464 5695600 1609720 5695792 1609912 5695344 1609432 5695384 -1609416 5695400 1609408 5695536 1609464 5695600 1609432 5695384 -1609464 5695600 1609912 5695344 1609432 5695384 1609408 5695536 -1609432 5695384 1609248 5695456 1609416 5695400 1609408 5695536 -1609912 5695344 1609808 5695208 1609432 5695384 1609464 5695600 -1609432 5695384 1609808 5695208 1609656 5694928 1609472 5694880 -1609808 5695208 1609656 5694928 1609432 5695384 1609912 5695344 -1609472 5694880 1609504 5695168 1609656 5694928 1609600 5694896 -1609432 5695384 1609504 5695168 1609472 5694880 1609392 5694896 -1609432 5695384 1609504 5695168 1609392 5694896 1609264 5695000 -1609432 5695384 1609504 5695168 1609264 5695000 1609248 5695456 -1609504 5695168 1609472 5694880 1609392 5694896 1609264 5695000 -1609656 5694928 1609504 5695168 1609432 5695384 1609808 5695208 -1609656 5694928 1609504 5695168 1609808 5695208 1609712 5694936 -1609808 5695208 1609808 5694968 1609712 5694936 1609504 5695168 -1609504 5695168 1609432 5695384 1609808 5695208 1609712 5694936 -1609432 5695384 1609912 5695344 1609808 5695208 1609504 5695168 -1609432 5695384 1609808 5695208 1609504 5695168 1609264 5695000 -1609472 5694880 1609392 5694896 1609504 5695168 1609600 5694896 -1609504 5695168 1609712 5694936 1609656 5694928 1609600 5694896 -1609712 5694936 1609576 5695112 1609808 5695208 1609808 5694968 -1609808 5695208 1609960 5695056 1609808 5694968 1609576 5695112 -1609504 5695168 1609576 5695112 1609712 5694936 1609656 5694928 -1609808 5695208 1609576 5695112 1609504 5695168 1609432 5695384 -1609504 5695168 1609808 5695208 1609576 5695112 1609656 5694928 -1609504 5695168 1609576 5695112 1609656 5694928 1609600 5694896 -1609504 5695168 1609576 5695112 1609600 5694896 1609472 5694880 -1609576 5695112 1609712 5694936 1609656 5694928 1609600 5694896 -1609504 5695168 1609576 5695112 1609472 5694880 1609392 5694896 -1609576 5695112 1609600 5694896 1609472 5694880 1609392 5694896 -1609504 5695168 1609576 5695112 1609392 5694896 1609264 5695000 -1609504 5695168 1609808 5695208 1609576 5695112 1609392 5694896 -1609576 5695112 1609656 5694928 1609600 5694896 1609472 5694880 -1609712 5694936 1609656 5694928 1609576 5695112 1609808 5694968 -1609576 5695112 1609504 5695168 1609808 5695208 1609808 5694968 -1609808 5694968 1609696 5695136 1609808 5695208 1609960 5695056 -1609576 5695112 1609696 5695136 1609808 5694968 1609712 5694936 -1609576 5695112 1609696 5695136 1609712 5694936 1609656 5694928 -1609696 5695136 1609808 5694968 1609712 5694936 1609656 5694928 -1609576 5695112 1609696 5695136 1609656 5694928 1609600 5694896 -1609576 5695112 1609808 5695208 1609696 5695136 1609656 5694928 -1609808 5695208 1609696 5695136 1609576 5695112 1609504 5695168 -1609808 5695208 1609696 5695136 1609504 5695168 1609432 5695384 -1609808 5695208 1609696 5695136 1609432 5695384 1609912 5695344 -1609696 5695136 1609656 5694928 1609576 5695112 1609504 5695168 -1609696 5695136 1609576 5695112 1609504 5695168 1609432 5695384 -1609696 5695136 1609808 5695208 1609808 5694968 1609712 5694936 -1609808 5695208 1609808 5694968 1609696 5695136 1609432 5695384 -1602160 5695928 1608480 5692440 1608392 5689208 1602112 5695896 -1608392 5689208 1608288 5689072 1602112 5695896 1608480 5692440 -1602112 5695896 1602160 5695928 1608480 5692440 1608288 5689072 -1608392 5689208 1608480 5692440 1609264 5695000 1608616 5689368 -1609264 5695000 1608736 5689448 1608616 5689368 1608480 5692440 -1608616 5689368 1608392 5689208 1608480 5692440 1608736 5689448 -1609264 5695000 1608480 5692440 1602160 5695928 1602200 5696008 -1609264 5695000 1608480 5692440 1602200 5696008 1602224 5696056 -1609264 5695000 1608480 5692440 1602224 5696056 1609248 5695456 -1608480 5692440 1602160 5695928 1602200 5696008 1602224 5696056 -1609264 5695000 1609392 5694896 1608736 5689448 1608480 5692440 -1608736 5689448 1608616 5689368 1608480 5692440 1609392 5694896 -1608288 5689072 1602016 5695848 1602112 5695896 1608480 5692440 -1608288 5689072 1608240 5688912 1602016 5695848 1608480 5692440 -1608288 5689072 1602016 5695848 1608480 5692440 1608392 5689208 -1602112 5695896 1602160 5695928 1608480 5692440 1602016 5695848 -1608480 5692440 1602224 5696056 1609264 5695000 1609392 5694896 -1602160 5695928 1602200 5696008 1608480 5692440 1602112 5695896 -1608480 5692440 1608616 5689368 1608392 5689208 1608288 5689072 -1609392 5694896 1608840 5689480 1608736 5689448 1608480 5692440 -1608736 5689448 1608616 5689368 1608480 5692440 1608840 5689480 -1609392 5694896 1608840 5689480 1608480 5692440 1609264 5695000 -1609392 5694896 1610992 5692696 1608840 5689480 1608480 5692440 -1610992 5692696 1611024 5692552 1608840 5689480 1608480 5692440 -1609392 5694896 1610992 5692696 1608480 5692440 1609264 5695000 -1610992 5692696 1611024 5692552 1608480 5692440 1609392 5694896 -1609392 5694896 1611000 5692800 1610992 5692696 1608480 5692440 -1609392 5694896 1611000 5692800 1608480 5692440 1609264 5695000 -1609392 5694896 1609472 5694880 1611000 5692800 1608480 5692440 -1609392 5694896 1609472 5694880 1608480 5692440 1609264 5695000 -1610992 5692696 1611024 5692552 1608480 5692440 1611000 5692800 -1611000 5692800 1610992 5692696 1608480 5692440 1609472 5694880 -1608840 5689480 1608736 5689448 1608480 5692440 1611024 5692552 -1611024 5692552 1609280 5689560 1608840 5689480 1608480 5692440 -1611024 5692552 1609400 5689560 1609280 5689560 1608480 5692440 -1611024 5692552 1609400 5689560 1608480 5692440 1610992 5692696 -1609280 5689560 1609232 5689536 1608840 5689480 1608480 5692440 -1608840 5689480 1608736 5689448 1608480 5692440 1609280 5689560 -1609280 5689560 1608840 5689480 1608480 5692440 1609400 5689560 -1611024 5692552 1611112 5692400 1609400 5689560 1608480 5692440 -1609400 5689560 1609280 5689560 1608480 5692440 1611112 5692400 -1611024 5692552 1611112 5692400 1608480 5692440 1610992 5692696 -1611112 5692400 1611168 5692328 1609400 5689560 1608480 5692440 -1609400 5689560 1609280 5689560 1608480 5692440 1611168 5692328 -1611112 5692400 1611168 5692328 1608480 5692440 1611024 5692552 -1611168 5692328 1609672 5689488 1609400 5689560 1608480 5692440 -1609472 5694880 1611064 5692984 1611000 5692800 1608480 5692440 -1609472 5694880 1611064 5692984 1608480 5692440 1609392 5694896 -1609472 5694880 1609600 5694896 1611064 5692984 1608480 5692440 -1611000 5692800 1610992 5692696 1608480 5692440 1611064 5692984 -1602016 5695848 1608432 5692384 1608288 5689072 1608240 5688912 -1608288 5689072 1608432 5692384 1608480 5692440 1608392 5689208 -1608288 5689072 1602016 5695848 1608432 5692384 1608392 5689208 -1608480 5692440 1608432 5692384 1602016 5695848 1602112 5695896 -1608480 5692440 1608432 5692384 1602112 5695896 1602160 5695928 -1608432 5692384 1608288 5689072 1602016 5695848 1602112 5695896 -1608432 5692384 1602016 5695848 1602112 5695896 1602160 5695928 -1608480 5692440 1608432 5692384 1602160 5695928 1602200 5696008 -1608432 5692384 1602112 5695896 1602160 5695928 1602200 5696008 -1608480 5692440 1608432 5692384 1602200 5696008 1602224 5696056 -1608480 5692440 1608432 5692384 1602224 5696056 1609264 5695000 -1602224 5696056 1609248 5695456 1609264 5695000 1608432 5692384 -1608432 5692384 1602200 5696008 1602224 5696056 1609264 5695000 -1608480 5692440 1608432 5692384 1609264 5695000 1609392 5694896 -1608432 5692384 1602160 5695928 1602200 5696008 1602224 5696056 -1608432 5692384 1609264 5695000 1608480 5692440 1608392 5689208 -1608480 5692440 1608616 5689368 1608392 5689208 1608432 5692384 -1608392 5689208 1608288 5689072 1608432 5692384 1608616 5689368 -1608480 5692440 1608736 5689448 1608616 5689368 1608432 5692384 -1608480 5692440 1608840 5689480 1608736 5689448 1608432 5692384 -1608736 5689448 1608616 5689368 1608432 5692384 1608840 5689480 -1608480 5692440 1608840 5689480 1608432 5692384 1609264 5695000 -1608616 5689368 1608392 5689208 1608432 5692384 1608736 5689448 -1608480 5692440 1609280 5689560 1608840 5689480 1608432 5692384 -1608840 5689480 1608736 5689448 1608432 5692384 1609280 5689560 -1609280 5689560 1609232 5689536 1608840 5689480 1608432 5692384 -1608480 5692440 1609280 5689560 1608432 5692384 1609264 5695000 -1608480 5692440 1609400 5689560 1609280 5689560 1608432 5692384 -1608480 5692440 1611168 5692328 1609400 5689560 1608432 5692384 -1608480 5692440 1611168 5692328 1608432 5692384 1609264 5695000 -1609280 5689560 1608840 5689480 1608432 5692384 1609400 5689560 -1609400 5689560 1609280 5689560 1608432 5692384 1611168 5692328 -1608480 5692440 1611112 5692400 1611168 5692328 1608432 5692384 -1611168 5692328 1609672 5689488 1609400 5689560 1608432 5692384 -1602016 5695848 1608392 5692304 1608288 5689072 1608240 5688912 -1608432 5692384 1608392 5692304 1602016 5695848 1602112 5695896 -1608432 5692384 1608288 5689072 1608392 5692304 1602112 5695896 -1608288 5689072 1608392 5692304 1608432 5692384 1608392 5689208 -1608432 5692384 1608616 5689368 1608392 5689208 1608392 5692304 -1608392 5692304 1602112 5695896 1608432 5692384 1608616 5689368 -1608392 5689208 1608288 5689072 1608392 5692304 1608616 5689368 -1608432 5692384 1608392 5692304 1602112 5695896 1602160 5695928 -1608432 5692384 1608392 5692304 1602160 5695928 1602200 5696008 -1608392 5692304 1602016 5695848 1602112 5695896 1602160 5695928 -1608432 5692384 1608616 5689368 1608392 5692304 1602160 5695928 -1608432 5692384 1608736 5689448 1608616 5689368 1608392 5692304 -1608616 5689368 1608392 5689208 1608392 5692304 1608736 5689448 -1608432 5692384 1608840 5689480 1608736 5689448 1608392 5692304 -1608432 5692384 1609280 5689560 1608840 5689480 1608392 5692304 -1609280 5689560 1609232 5689536 1608840 5689480 1608392 5692304 -1608840 5689480 1608736 5689448 1608392 5692304 1609280 5689560 -1608432 5692384 1609280 5689560 1608392 5692304 1602160 5695928 -1608736 5689448 1608616 5689368 1608392 5692304 1608840 5689480 -1608392 5692304 1608288 5689072 1602016 5695848 1602112 5695896 -1608288 5689072 1602016 5695848 1608392 5692304 1608392 5689208 -1608432 5692384 1609400 5689560 1609280 5689560 1608392 5692304 -1609280 5689560 1608840 5689480 1608392 5692304 1609400 5689560 -1608432 5692384 1609400 5689560 1608392 5692304 1602160 5695928 -1608432 5692384 1611168 5692328 1609400 5689560 1608392 5692304 -1608432 5692384 1608480 5692440 1611168 5692328 1608392 5692304 -1608432 5692384 1608480 5692440 1608392 5692304 1602160 5695928 -1609400 5689560 1609280 5689560 1608392 5692304 1611168 5692328 -1611168 5692328 1609400 5689560 1608392 5692304 1608480 5692440 -1608480 5692440 1611112 5692400 1611168 5692328 1608392 5692304 -1608480 5692440 1611112 5692400 1608392 5692304 1608432 5692384 -1611168 5692328 1609400 5689560 1608392 5692304 1611112 5692400 -1608480 5692440 1611024 5692552 1611112 5692400 1608392 5692304 -1611168 5692328 1609672 5689488 1609400 5689560 1608392 5692304 -1602016 5695848 1608376 5692296 1608288 5689072 1608240 5688912 -1608392 5692304 1608376 5692296 1602016 5695848 1602112 5695896 -1608392 5692304 1608376 5692296 1602112 5695896 1602160 5695928 -1608392 5692304 1608376 5692296 1602160 5695928 1608432 5692384 -1602160 5695928 1602200 5696008 1608432 5692384 1608376 5692296 -1608376 5692296 1602112 5695896 1602160 5695928 1608432 5692384 -1608376 5692296 1602016 5695848 1602112 5695896 1602160 5695928 -1608392 5692304 1608288 5689072 1608376 5692296 1608432 5692384 -1608288 5689072 1608376 5692296 1608392 5692304 1608392 5689208 -1608392 5692304 1608616 5689368 1608392 5689208 1608376 5692296 -1608392 5692304 1608736 5689448 1608616 5689368 1608376 5692296 -1608616 5689368 1608392 5689208 1608376 5692296 1608736 5689448 -1608392 5692304 1608840 5689480 1608736 5689448 1608376 5692296 -1608736 5689448 1608616 5689368 1608376 5692296 1608840 5689480 -1608392 5692304 1609280 5689560 1608840 5689480 1608376 5692296 -1608392 5692304 1609400 5689560 1609280 5689560 1608376 5692296 -1609280 5689560 1609232 5689536 1608840 5689480 1608376 5692296 -1608840 5689480 1608736 5689448 1608376 5692296 1609280 5689560 -1608376 5692296 1608432 5692384 1608392 5692304 1609280 5689560 -1608392 5689208 1608288 5689072 1608376 5692296 1608616 5689368 -1608376 5692296 1608288 5689072 1602016 5695848 1602112 5695896 -1608288 5689072 1602016 5695848 1608376 5692296 1608392 5689208 -1608392 5692304 1608416 5692240 1609400 5689560 1609280 5689560 -1608392 5692304 1608416 5692240 1609280 5689560 1608376 5692296 -1609280 5689560 1608840 5689480 1608376 5692296 1608416 5692240 -1608376 5692296 1608392 5692304 1608416 5692240 1608840 5689480 -1609280 5689560 1609232 5689536 1608840 5689480 1608416 5692240 -1608840 5689480 1608736 5689448 1608376 5692296 1608416 5692240 -1608736 5689448 1608616 5689368 1608376 5692296 1608416 5692240 -1608376 5692296 1608392 5692304 1608416 5692240 1608616 5689368 -1608840 5689480 1608736 5689448 1608416 5692240 1609280 5689560 -1608616 5689368 1608392 5689208 1608376 5692296 1608416 5692240 -1608616 5689368 1608392 5689208 1608416 5692240 1608736 5689448 -1608376 5692296 1608392 5692304 1608416 5692240 1608392 5689208 -1608736 5689448 1608616 5689368 1608416 5692240 1608840 5689480 -1608392 5689208 1608288 5689072 1608376 5692296 1608416 5692240 -1608416 5692240 1611168 5692328 1609400 5689560 1609280 5689560 -1608392 5692304 1611168 5692328 1608416 5692240 1608376 5692296 -1608416 5692240 1609400 5689560 1609280 5689560 1608840 5689480 -1611168 5692328 1608416 5692240 1608392 5692304 1611112 5692400 -1611168 5692328 1609400 5689560 1608416 5692240 1611112 5692400 -1608416 5692240 1608376 5692296 1608392 5692304 1611112 5692400 -1608392 5692304 1608480 5692440 1611112 5692400 1608416 5692240 -1608392 5692304 1608432 5692384 1608480 5692440 1608416 5692240 -1608392 5692304 1608432 5692384 1608416 5692240 1608376 5692296 -1611112 5692400 1611168 5692328 1608416 5692240 1608480 5692440 -1608480 5692440 1611024 5692552 1611112 5692400 1608416 5692240 -1608480 5692440 1610992 5692696 1611024 5692552 1608416 5692240 -1611112 5692400 1611168 5692328 1608416 5692240 1611024 5692552 -1608480 5692440 1611024 5692552 1608416 5692240 1608432 5692384 -1609400 5689560 1608416 5692240 1611168 5692328 1609672 5689488 -1608416 5692240 1608480 5692200 1609400 5689560 1609280 5689560 -1611168 5692328 1608480 5692200 1608416 5692240 1611112 5692400 -1608416 5692240 1611112 5692400 1608480 5692200 1609280 5689560 -1608480 5692200 1611168 5692328 1609400 5689560 1609280 5689560 -1611168 5692328 1609400 5689560 1608480 5692200 1611112 5692400 -1608416 5692240 1608480 5692200 1609280 5689560 1608840 5689480 -1609280 5689560 1609232 5689536 1608840 5689480 1608480 5692200 -1608416 5692240 1608480 5692200 1608840 5689480 1608736 5689448 -1608416 5692240 1608480 5692200 1608736 5689448 1608616 5689368 -1608416 5692240 1608480 5692200 1608616 5689368 1608392 5689208 -1608480 5692200 1608840 5689480 1608736 5689448 1608616 5689368 -1608480 5692200 1609400 5689560 1609280 5689560 1608840 5689480 -1608416 5692240 1611112 5692400 1608480 5692200 1608616 5689368 -1608480 5692200 1609280 5689560 1608840 5689480 1608736 5689448 -1608416 5692240 1611024 5692552 1611112 5692400 1608480 5692200 -1611112 5692400 1611168 5692328 1608480 5692200 1611024 5692552 -1608416 5692240 1611024 5692552 1608480 5692200 1608616 5689368 -1608416 5692240 1608480 5692440 1611024 5692552 1608480 5692200 -1608480 5692440 1610992 5692696 1611024 5692552 1608480 5692200 -1608416 5692240 1608480 5692440 1608480 5692200 1608616 5689368 -1611024 5692552 1611112 5692400 1608480 5692200 1608480 5692440 -1608416 5692240 1608432 5692384 1608480 5692440 1608480 5692200 -1608416 5692240 1608392 5692304 1608432 5692384 1608480 5692200 -1608416 5692240 1608432 5692384 1608480 5692200 1608616 5689368 -1608480 5692440 1611024 5692552 1608480 5692200 1608432 5692384 -1609400 5689560 1608480 5692200 1611168 5692328 1609672 5689488 -1611024 5692552 1608616 5692312 1608480 5692440 1610992 5692696 -1611024 5692552 1608480 5692200 1608616 5692312 1610992 5692696 -1608616 5692312 1608480 5692200 1608480 5692440 1610992 5692696 -1608480 5692440 1611000 5692800 1610992 5692696 1608616 5692312 -1610992 5692696 1611024 5692552 1608616 5692312 1611000 5692800 -1608480 5692440 1611000 5692800 1608616 5692312 1608480 5692200 -1608480 5692440 1611064 5692984 1611000 5692800 1608616 5692312 -1608480 5692440 1611064 5692984 1608616 5692312 1608480 5692200 -1611000 5692800 1610992 5692696 1608616 5692312 1611064 5692984 -1608480 5692200 1608616 5692312 1611024 5692552 1611112 5692400 -1608480 5692200 1608616 5692312 1611112 5692400 1611168 5692328 -1608480 5692200 1608480 5692440 1608616 5692312 1611168 5692328 -1608480 5692200 1608616 5692312 1611168 5692328 1609400 5689560 -1608616 5692312 1611112 5692400 1611168 5692328 1609400 5689560 -1608480 5692200 1608616 5692312 1609400 5689560 1609280 5689560 -1608480 5692200 1608480 5692440 1608616 5692312 1609400 5689560 -1608616 5692312 1610992 5692696 1611024 5692552 1611112 5692400 -1608616 5692312 1611024 5692552 1611112 5692400 1611168 5692328 -1608480 5692440 1608616 5692312 1608480 5692200 1608432 5692384 -1608616 5692312 1609400 5689560 1608480 5692200 1608432 5692384 -1608480 5692440 1611064 5692984 1608616 5692312 1608432 5692384 -1608480 5692200 1608416 5692240 1608432 5692384 1608616 5692312 -1611168 5692328 1609672 5689488 1609400 5689560 1608616 5692312 -1608480 5692440 1609472 5694880 1611064 5692984 1608616 5692312 -1608480 5692440 1609392 5694896 1609472 5694880 1608616 5692312 -1609472 5694880 1609600 5694896 1611064 5692984 1608616 5692312 -1608480 5692440 1609472 5694880 1608616 5692312 1608432 5692384 -1611064 5692984 1611000 5692800 1608616 5692312 1609472 5694880 -1611064 5692984 1608680 5692416 1609472 5694880 1609600 5694896 -1608616 5692312 1608680 5692416 1611064 5692984 1611000 5692800 -1608616 5692312 1609472 5694880 1608680 5692416 1611000 5692800 -1608680 5692416 1609472 5694880 1611064 5692984 1611000 5692800 -1608616 5692312 1608680 5692416 1611000 5692800 1610992 5692696 -1608616 5692312 1608680 5692416 1610992 5692696 1611024 5692552 -1608616 5692312 1608680 5692416 1611024 5692552 1611112 5692400 -1608680 5692416 1610992 5692696 1611024 5692552 1611112 5692400 -1608616 5692312 1609472 5694880 1608680 5692416 1611112 5692400 -1608680 5692416 1611000 5692800 1610992 5692696 1611024 5692552 -1608680 5692416 1611064 5692984 1611000 5692800 1610992 5692696 -1608616 5692312 1608680 5692416 1611112 5692400 1611168 5692328 -1609472 5694880 1608680 5692416 1608616 5692312 1608480 5692440 -1609472 5694880 1608680 5692416 1608480 5692440 1609392 5694896 -1608480 5692440 1609264 5695000 1609392 5694896 1608680 5692416 -1608680 5692416 1611112 5692400 1608616 5692312 1608480 5692440 -1608616 5692312 1608432 5692384 1608480 5692440 1608680 5692416 -1609472 5694880 1611064 5692984 1608680 5692416 1609392 5694896 -1608680 5692416 1608616 5692312 1608480 5692440 1609392 5694896 -1609392 5694896 1608680 5692480 1608480 5692440 1609264 5695000 -1608680 5692416 1608680 5692480 1609392 5694896 1609472 5694880 -1608480 5692440 1608432 5692384 1609264 5695000 1608680 5692480 -1608680 5692416 1608480 5692440 1608680 5692480 1609472 5694880 -1608680 5692416 1608680 5692480 1609472 5694880 1611064 5692984 -1608680 5692480 1609392 5694896 1609472 5694880 1611064 5692984 -1609472 5694880 1609600 5694896 1611064 5692984 1608680 5692480 -1609472 5694880 1609600 5694896 1608680 5692480 1609392 5694896 -1609600 5694896 1611192 5693224 1611064 5692984 1608680 5692480 -1608680 5692416 1608680 5692480 1611064 5692984 1611000 5692800 -1608680 5692416 1608480 5692440 1608680 5692480 1611000 5692800 -1611064 5692984 1611000 5692800 1608680 5692480 1609600 5694896 -1609392 5694896 1609472 5694880 1608680 5692480 1609264 5695000 -1608680 5692480 1608680 5692416 1608480 5692440 1609264 5695000 -1608680 5692416 1608680 5692480 1611000 5692800 1610992 5692696 -1608680 5692480 1611064 5692984 1611000 5692800 1610992 5692696 -1608680 5692416 1608480 5692440 1608680 5692480 1610992 5692696 -1608680 5692416 1608680 5692480 1610992 5692696 1611024 5692552 -1608480 5692440 1608680 5692480 1608680 5692416 1608616 5692312 -1609472 5694880 1608728 5692608 1608680 5692480 1609392 5694896 -1608680 5692480 1608728 5692608 1609600 5694896 1611064 5692984 -1609600 5694896 1611192 5693224 1611064 5692984 1608728 5692608 -1608680 5692480 1608728 5692608 1611064 5692984 1611000 5692800 -1608728 5692608 1609600 5694896 1611064 5692984 1611000 5692800 -1608680 5692480 1608728 5692608 1611000 5692800 1610992 5692696 -1608728 5692608 1611064 5692984 1611000 5692800 1610992 5692696 -1608680 5692480 1609264 5695000 1609392 5694896 1608728 5692608 -1608680 5692480 1608480 5692440 1609264 5695000 1608728 5692608 -1609392 5694896 1609472 5694880 1608728 5692608 1609264 5695000 -1608480 5692440 1608432 5692384 1609264 5695000 1608728 5692608 -1609264 5695000 1609392 5694896 1608728 5692608 1608480 5692440 -1608728 5692608 1610992 5692696 1608680 5692480 1608480 5692440 -1608680 5692480 1608680 5692416 1608480 5692440 1608728 5692608 -1608728 5692608 1609472 5694880 1609600 5694896 1611064 5692984 -1609472 5694880 1609600 5694896 1608728 5692608 1609392 5694896 -1608680 5692480 1608728 5692608 1610992 5692696 1608680 5692416 -1608728 5692608 1611000 5692800 1610992 5692696 1608680 5692416 -1608680 5692480 1608480 5692440 1608728 5692608 1608680 5692416 -1610992 5692696 1611024 5692552 1608680 5692416 1608728 5692608 -1611024 5692552 1611112 5692400 1608680 5692416 1608728 5692608 -1610992 5692696 1611024 5692552 1608728 5692608 1611000 5692800 -1608680 5692416 1608680 5692480 1608728 5692608 1611024 5692552 -1608728 5692608 1608824 5692736 1611064 5692984 1611000 5692800 -1611064 5692984 1608824 5692736 1609600 5694896 1611192 5693224 -1608728 5692608 1608824 5692736 1611000 5692800 1610992 5692696 -1608824 5692736 1611064 5692984 1611000 5692800 1610992 5692696 -1608728 5692608 1608824 5692736 1610992 5692696 1611024 5692552 -1608824 5692736 1611000 5692800 1610992 5692696 1611024 5692552 -1609600 5694896 1608824 5692736 1608728 5692608 1609472 5694880 -1608728 5692608 1609472 5694880 1608824 5692736 1611024 5692552 -1608728 5692608 1609392 5694896 1609472 5694880 1608824 5692736 -1608728 5692608 1609264 5695000 1609392 5694896 1608824 5692736 -1608728 5692608 1608480 5692440 1609264 5695000 1608824 5692736 -1608728 5692608 1608680 5692480 1608480 5692440 1608824 5692736 -1609264 5695000 1609392 5694896 1608824 5692736 1608480 5692440 -1608480 5692440 1608432 5692384 1609264 5695000 1608824 5692736 -1609472 5694880 1609600 5694896 1608824 5692736 1609392 5694896 -1608728 5692608 1608480 5692440 1608824 5692736 1611024 5692552 -1609392 5694896 1609472 5694880 1608824 5692736 1609264 5695000 -1608824 5692736 1609600 5694896 1611064 5692984 1611000 5692800 -1609600 5694896 1611064 5692984 1608824 5692736 1609472 5694880 -1608728 5692608 1608824 5692736 1611024 5692552 1608680 5692416 -1611024 5692552 1611112 5692400 1608680 5692416 1608824 5692736 -1608824 5692736 1610992 5692696 1611024 5692552 1608680 5692416 -1608728 5692608 1608480 5692440 1608824 5692736 1608680 5692416 -1608728 5692608 1608824 5692736 1608680 5692416 1608680 5692480 -1608824 5692736 1608832 5692872 1609264 5695000 1609392 5694896 -1609264 5695000 1608832 5692872 1608480 5692440 1608432 5692384 -1608480 5692440 1608832 5692872 1608824 5692736 1608728 5692608 -1608480 5692440 1608832 5692872 1608728 5692608 1608680 5692480 -1608824 5692736 1608832 5692872 1609392 5694896 1609472 5694880 -1608832 5692872 1609264 5695000 1609392 5694896 1609472 5694880 -1608824 5692736 1608832 5692872 1609472 5694880 1609600 5694896 -1608832 5692872 1609392 5694896 1609472 5694880 1609600 5694896 -1608824 5692736 1608728 5692608 1608832 5692872 1609600 5694896 -1608824 5692736 1608832 5692872 1609600 5694896 1611064 5692984 -1609600 5694896 1611192 5693224 1611064 5692984 1608832 5692872 -1608832 5692872 1609472 5694880 1609600 5694896 1611064 5692984 -1608824 5692736 1608832 5692872 1611064 5692984 1611000 5692800 -1608824 5692736 1608832 5692872 1611000 5692800 1610992 5692696 -1608824 5692736 1608832 5692872 1610992 5692696 1611024 5692552 -1608832 5692872 1611064 5692984 1611000 5692800 1610992 5692696 -1608824 5692736 1608728 5692608 1608832 5692872 1610992 5692696 -1608832 5692872 1609600 5694896 1611064 5692984 1611000 5692800 -1608832 5692872 1608480 5692440 1609264 5695000 1609392 5694896 -1608480 5692440 1609264 5695000 1608832 5692872 1608728 5692608 -1609264 5695000 1608768 5692928 1608480 5692440 1608432 5692384 -1609264 5695000 1608768 5692928 1608432 5692384 1602224 5696056 -1609264 5695000 1608768 5692928 1602224 5696056 1609248 5695456 -1608432 5692384 1602200 5696008 1602224 5696056 1608768 5692928 -1608768 5692928 1608480 5692440 1608432 5692384 1602224 5696056 -1608832 5692872 1608768 5692928 1609264 5695000 1609392 5694896 -1608832 5692872 1608768 5692928 1609392 5694896 1609472 5694880 -1608832 5692872 1608768 5692928 1609472 5694880 1609600 5694896 -1608768 5692928 1609264 5695000 1609392 5694896 1609472 5694880 -1608832 5692872 1608480 5692440 1608768 5692928 1609472 5694880 -1608480 5692440 1608768 5692928 1608832 5692872 1608728 5692608 -1608480 5692440 1608768 5692928 1608728 5692608 1608680 5692480 -1608832 5692872 1608824 5692736 1608728 5692608 1608768 5692928 -1608768 5692928 1609472 5694880 1608832 5692872 1608824 5692736 -1608728 5692608 1608480 5692440 1608768 5692928 1608824 5692736 -1609264 5695000 1609392 5694896 1608768 5692928 1602224 5696056 -1608768 5692928 1608728 5692608 1608480 5692440 1608432 5692384 -1608768 5692928 1608696 5692960 1602224 5696056 1609264 5695000 -1602224 5696056 1609248 5695456 1609264 5695000 1608696 5692960 -1602224 5696056 1608696 5692960 1608432 5692384 1602200 5696008 -1608432 5692384 1608696 5692960 1608768 5692928 1608480 5692440 -1608432 5692384 1602160 5695928 1602200 5696008 1608696 5692960 -1608432 5692384 1608376 5692296 1602160 5695928 1608696 5692960 -1602200 5696008 1602224 5696056 1608696 5692960 1602160 5695928 -1608376 5692296 1602112 5695896 1602160 5695928 1608696 5692960 -1608432 5692384 1608392 5692304 1608376 5692296 1608696 5692960 -1602160 5695928 1602200 5696008 1608696 5692960 1608376 5692296 -1608768 5692928 1608696 5692960 1609264 5695000 1609392 5694896 -1608696 5692960 1602224 5696056 1609264 5695000 1609392 5694896 -1608768 5692928 1608696 5692960 1609392 5694896 1609472 5694880 -1608768 5692928 1608480 5692440 1608696 5692960 1609392 5694896 -1608768 5692928 1608728 5692608 1608480 5692440 1608696 5692960 -1608728 5692608 1608680 5692480 1608480 5692440 1608696 5692960 -1608480 5692440 1608432 5692384 1608696 5692960 1608728 5692608 -1608768 5692928 1608824 5692736 1608728 5692608 1608696 5692960 -1608768 5692928 1608832 5692872 1608824 5692736 1608696 5692960 -1608768 5692928 1608824 5692736 1608696 5692960 1609392 5694896 -1608728 5692608 1608480 5692440 1608696 5692960 1608824 5692736 -1608696 5692960 1602200 5696008 1602224 5696056 1609264 5695000 -1608696 5692960 1608480 5692440 1608432 5692384 1608376 5692296 -1608376 5692296 1608624 5692960 1608696 5692960 1608432 5692384 -1602160 5695928 1608624 5692960 1608376 5692296 1602112 5695896 -1608376 5692296 1608624 5692960 1608432 5692384 1608392 5692304 -1608696 5692960 1608624 5692960 1602160 5695928 1602200 5696008 -1608696 5692960 1608624 5692960 1602200 5696008 1602224 5696056 -1608624 5692960 1602160 5695928 1602200 5696008 1602224 5696056 -1608696 5692960 1608624 5692960 1602224 5696056 1609264 5695000 -1602224 5696056 1609248 5695456 1609264 5695000 1608624 5692960 -1608696 5692960 1608624 5692960 1609264 5695000 1609392 5694896 -1608624 5692960 1602200 5696008 1602224 5696056 1609264 5695000 -1608696 5692960 1608624 5692960 1609392 5694896 1608768 5692928 -1608624 5692960 1602224 5696056 1609264 5695000 1609392 5694896 -1608624 5692960 1609392 5694896 1608696 5692960 1608432 5692384 -1608696 5692960 1608480 5692440 1608432 5692384 1608624 5692960 -1608432 5692384 1608376 5692296 1608624 5692960 1608480 5692440 -1608696 5692960 1608728 5692608 1608480 5692440 1608624 5692960 -1608728 5692608 1608680 5692480 1608480 5692440 1608624 5692960 -1608696 5692960 1608824 5692736 1608728 5692608 1608624 5692960 -1608728 5692608 1608480 5692440 1608624 5692960 1608824 5692736 -1608696 5692960 1608768 5692928 1608824 5692736 1608624 5692960 -1608696 5692960 1608824 5692736 1608624 5692960 1609392 5694896 -1608480 5692440 1608432 5692384 1608624 5692960 1608728 5692608 -1608624 5692960 1608376 5692296 1602160 5695928 1602200 5696008 -1608376 5692296 1602160 5695928 1608624 5692960 1608432 5692384 -1602160 5695928 1608568 5692904 1608376 5692296 1602112 5695896 -1608624 5692960 1608568 5692904 1602160 5695928 1602200 5696008 -1608624 5692960 1608568 5692904 1602200 5696008 1602224 5696056 -1608624 5692960 1608568 5692904 1602224 5696056 1609264 5695000 -1602224 5696056 1609248 5695456 1609264 5695000 1608568 5692904 -1608568 5692904 1602200 5696008 1602224 5696056 1609264 5695000 -1608624 5692960 1608568 5692904 1609264 5695000 1609392 5694896 -1608568 5692904 1602160 5695928 1602200 5696008 1602224 5696056 -1608624 5692960 1608376 5692296 1608568 5692904 1609264 5695000 -1608376 5692296 1608568 5692904 1608624 5692960 1608432 5692384 -1608624 5692960 1608480 5692440 1608432 5692384 1608568 5692904 -1608376 5692296 1608568 5692904 1608432 5692384 1608392 5692304 -1608624 5692960 1608728 5692608 1608480 5692440 1608568 5692904 -1608480 5692440 1608432 5692384 1608568 5692904 1608728 5692608 -1608728 5692608 1608680 5692480 1608480 5692440 1608568 5692904 -1608624 5692960 1608824 5692736 1608728 5692608 1608568 5692904 -1608624 5692960 1608696 5692960 1608824 5692736 1608568 5692904 -1608824 5692736 1608728 5692608 1608568 5692904 1608696 5692960 -1608696 5692960 1608768 5692928 1608824 5692736 1608568 5692904 -1608824 5692736 1608728 5692608 1608568 5692904 1608768 5692928 -1608768 5692928 1608832 5692872 1608824 5692736 1608568 5692904 -1608696 5692960 1608768 5692928 1608568 5692904 1608624 5692960 -1608728 5692608 1608480 5692440 1608568 5692904 1608824 5692736 -1608568 5692904 1609264 5695000 1608624 5692960 1608696 5692960 -1608432 5692384 1608376 5692296 1608568 5692904 1608480 5692440 -1608568 5692904 1608376 5692296 1602160 5695928 1602200 5696008 -1608376 5692296 1602160 5695928 1608568 5692904 1608432 5692384 -1608568 5692904 1608568 5692864 1608480 5692440 1608432 5692384 -1608480 5692440 1608568 5692864 1608728 5692608 1608680 5692480 -1608728 5692608 1608568 5692864 1608568 5692904 1608824 5692736 -1608728 5692608 1608480 5692440 1608568 5692864 1608824 5692736 -1608568 5692904 1608768 5692928 1608824 5692736 1608568 5692864 -1608768 5692928 1608832 5692872 1608824 5692736 1608568 5692864 -1608568 5692904 1608696 5692960 1608768 5692928 1608568 5692864 -1608768 5692928 1608824 5692736 1608568 5692864 1608696 5692960 -1608568 5692904 1608624 5692960 1608696 5692960 1608568 5692864 -1608696 5692960 1608768 5692928 1608568 5692864 1608624 5692960 -1608824 5692736 1608728 5692608 1608568 5692864 1608768 5692928 -1608568 5692904 1608568 5692864 1608432 5692384 1608376 5692296 -1608568 5692904 1608624 5692960 1608568 5692864 1608432 5692384 -1608568 5692864 1608728 5692608 1608480 5692440 1608432 5692384 -1608568 5692864 1608640 5692752 1608728 5692608 1608480 5692440 -1608728 5692608 1608680 5692480 1608480 5692440 1608640 5692752 -1608568 5692864 1608824 5692736 1608640 5692752 1608480 5692440 -1608480 5692440 1608568 5692864 1608640 5692752 1608680 5692480 -1608640 5692752 1608824 5692736 1608728 5692608 1608680 5692480 -1608680 5692480 1608680 5692416 1608480 5692440 1608640 5692752 -1608824 5692736 1608640 5692752 1608568 5692864 1608768 5692928 -1608640 5692752 1608480 5692440 1608568 5692864 1608768 5692928 -1608824 5692736 1608728 5692608 1608640 5692752 1608768 5692928 -1608568 5692864 1608696 5692960 1608768 5692928 1608640 5692752 -1608568 5692864 1608696 5692960 1608640 5692752 1608480 5692440 -1608824 5692736 1608640 5692752 1608768 5692928 1608832 5692872 -1608824 5692736 1608728 5692608 1608640 5692752 1608832 5692872 -1608568 5692864 1608624 5692960 1608696 5692960 1608640 5692752 -1608768 5692928 1608832 5692872 1608640 5692752 1608696 5692960 -1608568 5692864 1608640 5692752 1608480 5692440 1608432 5692384 -1608680 5692480 1608624 5692656 1608640 5692752 1608728 5692608 -1608640 5692752 1608624 5692656 1608480 5692440 1608568 5692864 -1608640 5692752 1608824 5692736 1608728 5692608 1608624 5692656 -1608624 5692656 1608568 5692864 1608640 5692752 1608728 5692608 -1608624 5692656 1608680 5692480 1608480 5692440 1608568 5692864 -1608680 5692480 1608480 5692440 1608624 5692656 1608728 5692608 -1608480 5692440 1608624 5692656 1608680 5692480 1608680 5692416 -1608480 5692440 1608432 5692384 1608568 5692864 1608624 5692656 -1608624 5692656 1608576 5692560 1608480 5692440 1608568 5692864 -1608624 5692656 1608576 5692560 1608568 5692864 1608640 5692752 -1608624 5692656 1608680 5692480 1608576 5692560 1608568 5692864 -1608680 5692480 1608576 5692560 1608624 5692656 1608728 5692608 -1608624 5692656 1608640 5692752 1608728 5692608 1608576 5692560 -1608576 5692560 1608568 5692864 1608624 5692656 1608728 5692608 -1608576 5692560 1608680 5692480 1608480 5692440 1608568 5692864 -1608680 5692480 1608480 5692440 1608576 5692560 1608728 5692608 -1608480 5692440 1608576 5692560 1608680 5692480 1608680 5692416 -1608480 5692440 1608432 5692384 1608568 5692864 1608576 5692560 -1613448 5695424 1612880 5696080 1612736 5696520 1612840 5696712 -1612880 5696080 1612560 5696144 1612736 5696520 1612840 5696712 -1613448 5695424 1612560 5696144 1612880 5696080 1612840 5696712 -1613448 5695424 1612880 5696080 1612840 5696712 1613008 5696896 -1613448 5695424 1612560 5696144 1612880 5696080 1613008 5696896 -1612880 5696080 1612736 5696520 1612840 5696712 1613008 5696896 -1612560 5696144 1612880 5696080 1613448 5695424 1613232 5695376 -1612560 5696144 1612736 5696520 1612880 5696080 1613232 5695376 -1612880 5696080 1613008 5696896 1613448 5695424 1613232 5695376 -1612560 5696144 1612880 5696080 1613232 5695376 1612480 5696016 -1612560 5696144 1612736 5696520 1612880 5696080 1612480 5696016 -1613232 5695376 1612896 5695232 1612480 5696016 1612880 5696080 -1612480 5696016 1612560 5696144 1612880 5696080 1612896 5695232 -1612880 5696080 1613448 5695424 1613232 5695376 1612896 5695232 -1613448 5695424 1612880 5696080 1613008 5696896 1613072 5696952 -1613448 5695424 1613232 5695376 1612880 5696080 1613072 5696952 -1612880 5696080 1612840 5696712 1613008 5696896 1613072 5696952 -1613448 5695424 1612880 5696080 1613072 5696952 1613656 5695408 -1613448 5695424 1613232 5695376 1612880 5696080 1613656 5695408 -1613072 5696952 1613312 5697192 1613656 5695408 1612880 5696080 -1612880 5696080 1613008 5696896 1613072 5696952 1613656 5695408 -1612896 5695232 1612248 5695760 1612480 5696016 1612880 5696080 -1613656 5695408 1612920 5696056 1613072 5696952 1613312 5697192 -1612880 5696080 1612920 5696056 1613656 5695408 1613448 5695424 -1612880 5696080 1613072 5696952 1612920 5696056 1613448 5695424 -1612880 5696080 1612920 5696056 1613448 5695424 1613232 5695376 -1612880 5696080 1613072 5696952 1612920 5696056 1613232 5695376 -1612920 5696056 1613072 5696952 1613656 5695408 1613448 5695424 -1612880 5696080 1612920 5696056 1613232 5695376 1612896 5695232 -1612880 5696080 1613072 5696952 1612920 5696056 1612896 5695232 -1612920 5696056 1613448 5695424 1613232 5695376 1612896 5695232 -1612880 5696080 1612920 5696056 1612896 5695232 1612480 5696016 -1612880 5696080 1613072 5696952 1612920 5696056 1612480 5696016 -1612880 5696080 1612920 5696056 1612480 5696016 1612560 5696144 -1612920 5696056 1613232 5695376 1612896 5695232 1612480 5696016 -1612920 5696056 1613656 5695408 1613448 5695424 1613232 5695376 -1613072 5696952 1612920 5696056 1612880 5696080 1613008 5696896 -1612920 5696056 1612480 5696016 1612880 5696080 1613008 5696896 -1613072 5696952 1613656 5695408 1612920 5696056 1613008 5696896 -1612880 5696080 1612840 5696712 1613008 5696896 1612920 5696056 -1612880 5696080 1612840 5696712 1612920 5696056 1612480 5696016 -1612880 5696080 1612736 5696520 1612840 5696712 1612920 5696056 -1612880 5696080 1612560 5696144 1612736 5696520 1612920 5696056 -1612880 5696080 1612736 5696520 1612920 5696056 1612480 5696016 -1612840 5696712 1613008 5696896 1612920 5696056 1612736 5696520 -1613008 5696896 1613072 5696952 1612920 5696056 1612840 5696712 -1612896 5695232 1612248 5695760 1612480 5696016 1612920 5696056 -1612920 5696056 1613016 5696040 1613656 5695408 1613448 5695424 -1612920 5696056 1613072 5696952 1613016 5696040 1613448 5695424 -1613072 5696952 1613016 5696040 1612920 5696056 1613008 5696896 -1613016 5696040 1613448 5695424 1612920 5696056 1613008 5696896 -1613016 5696040 1613072 5696952 1613656 5695408 1613448 5695424 -1613072 5696952 1613656 5695408 1613016 5696040 1613008 5696896 -1613656 5695408 1613016 5696040 1613072 5696952 1613312 5697192 -1613656 5695408 1613448 5695424 1613016 5696040 1613312 5697192 -1613016 5696040 1613008 5696896 1613072 5696952 1613312 5697192 -1612920 5696056 1613016 5696040 1613448 5695424 1613232 5695376 -1612920 5696056 1613016 5696040 1613232 5695376 1612896 5695232 -1613016 5696040 1613656 5695408 1613448 5695424 1613232 5695376 -1612920 5696056 1613008 5696896 1613016 5696040 1612896 5695232 -1612920 5696056 1613016 5696040 1612896 5695232 1612480 5696016 -1613016 5696040 1613448 5695424 1613232 5695376 1612896 5695232 -1613656 5695408 1613016 5696040 1613312 5697192 1613744 5695376 -1612920 5696056 1612840 5696712 1613008 5696896 1613016 5696040 -1612920 5696056 1612840 5696712 1613016 5696040 1612896 5695232 -1613008 5696896 1613072 5696952 1613016 5696040 1612840 5696712 -1612920 5696056 1612736 5696520 1612840 5696712 1613016 5696040 -1612920 5696056 1612736 5696520 1613016 5696040 1612896 5695232 -1612920 5696056 1612880 5696080 1612736 5696520 1613016 5696040 -1612880 5696080 1612560 5696144 1612736 5696520 1613016 5696040 -1612920 5696056 1612880 5696080 1613016 5696040 1612896 5695232 -1612736 5696520 1612840 5696712 1613016 5696040 1612880 5696080 -1612840 5696712 1613008 5696896 1613016 5696040 1612736 5696520 -1613016 5696040 1613040 5696040 1613656 5695408 1613448 5695424 -1613016 5696040 1613040 5696040 1613448 5695424 1613232 5695376 -1613040 5696040 1613656 5695408 1613448 5695424 1613232 5695376 -1613016 5696040 1613312 5697192 1613040 5696040 1613232 5695376 -1613040 5696040 1613312 5697192 1613656 5695408 1613448 5695424 -1613312 5697192 1613040 5696040 1613016 5696040 1613072 5696952 -1613040 5696040 1613232 5695376 1613016 5696040 1613072 5696952 -1613016 5696040 1613008 5696896 1613072 5696952 1613040 5696040 -1613016 5696040 1612840 5696712 1613008 5696896 1613040 5696040 -1613016 5696040 1612840 5696712 1613040 5696040 1613232 5695376 -1613008 5696896 1613072 5696952 1613040 5696040 1612840 5696712 -1613312 5697192 1613656 5695408 1613040 5696040 1613072 5696952 -1613072 5696952 1613312 5697192 1613040 5696040 1613008 5696896 -1613016 5696040 1613040 5696040 1613232 5695376 1612896 5695232 -1613656 5695408 1613040 5696040 1613312 5697192 1613744 5695376 -1613016 5696040 1612736 5696520 1612840 5696712 1613040 5696040 -1612840 5696712 1613008 5696896 1613040 5696040 1612736 5696520 -1613016 5696040 1612736 5696520 1613040 5696040 1613232 5695376 -1613016 5696040 1612880 5696080 1612736 5696520 1613040 5696040 -1612880 5696080 1612560 5696144 1612736 5696520 1613040 5696040 -1613016 5696040 1612880 5696080 1613040 5696040 1613232 5695376 -1613016 5696040 1612920 5696056 1612880 5696080 1613040 5696040 -1612736 5696520 1612840 5696712 1613040 5696040 1612880 5696080 -1613040 5696040 1613088 5696064 1613656 5695408 1613448 5695424 -1613040 5696040 1613088 5696064 1613448 5695424 1613232 5695376 -1613040 5696040 1613088 5696064 1613232 5695376 1613016 5696040 -1613088 5696064 1613656 5695408 1613448 5695424 1613232 5695376 -1613040 5696040 1613312 5697192 1613088 5696064 1613232 5695376 -1613312 5697192 1613088 5696064 1613040 5696040 1613072 5696952 -1613088 5696064 1613232 5695376 1613040 5696040 1613072 5696952 -1613088 5696064 1613312 5697192 1613656 5695408 1613448 5695424 -1613312 5697192 1613656 5695408 1613088 5696064 1613072 5696952 -1613040 5696040 1613008 5696896 1613072 5696952 1613088 5696064 -1613040 5696040 1612840 5696712 1613008 5696896 1613088 5696064 -1613040 5696040 1612736 5696520 1612840 5696712 1613088 5696064 -1612840 5696712 1613008 5696896 1613088 5696064 1612736 5696520 -1613040 5696040 1612736 5696520 1613088 5696064 1613232 5695376 -1613072 5696952 1613312 5697192 1613088 5696064 1613008 5696896 -1613008 5696896 1613072 5696952 1613088 5696064 1612840 5696712 -1613656 5695408 1613088 5696064 1613312 5697192 1613744 5695376 -1613656 5695408 1613448 5695424 1613088 5696064 1613744 5695376 -1613088 5696064 1613072 5696952 1613312 5697192 1613744 5695376 -1613312 5697192 1613528 5697360 1613744 5695376 1613088 5696064 -1613312 5697192 1613528 5697360 1613088 5696064 1613072 5696952 -1613744 5695376 1613656 5695408 1613088 5696064 1613528 5697360 -1613040 5696040 1612880 5696080 1612736 5696520 1613088 5696064 -1612880 5696080 1612560 5696144 1612736 5696520 1613088 5696064 -1612736 5696520 1612840 5696712 1613088 5696064 1612880 5696080 -1613040 5696040 1612880 5696080 1613088 5696064 1613232 5695376 -1613040 5696040 1613016 5696040 1612880 5696080 1613088 5696064 -1613040 5696040 1613016 5696040 1613088 5696064 1613232 5695376 -1613016 5696040 1612920 5696056 1612880 5696080 1613088 5696064 -1613016 5696040 1612920 5696056 1613088 5696064 1613040 5696040 -1612880 5696080 1612736 5696520 1613088 5696064 1612920 5696056 -1613528 5697360 1614696 5695376 1613744 5695376 1613088 5696064 -1613528 5697360 1613168 5696072 1613088 5696064 1613312 5697192 -1613168 5696072 1613744 5695376 1613088 5696064 1613312 5697192 -1613088 5696064 1613072 5696952 1613312 5697192 1613168 5696072 -1613088 5696064 1613008 5696896 1613072 5696952 1613168 5696072 -1613088 5696064 1613008 5696896 1613168 5696072 1613744 5695376 -1613072 5696952 1613312 5697192 1613168 5696072 1613008 5696896 -1613528 5697360 1613744 5695376 1613168 5696072 1613312 5697192 -1613312 5697192 1613528 5697360 1613168 5696072 1613072 5696952 -1613088 5696064 1612840 5696712 1613008 5696896 1613168 5696072 -1613088 5696064 1612736 5696520 1612840 5696712 1613168 5696072 -1613088 5696064 1612880 5696080 1612736 5696520 1613168 5696072 -1613008 5696896 1613072 5696952 1613168 5696072 1612840 5696712 -1613088 5696064 1612736 5696520 1613168 5696072 1613744 5695376 -1612840 5696712 1613008 5696896 1613168 5696072 1612736 5696520 -1613088 5696064 1613168 5696072 1613744 5695376 1613656 5695408 -1613088 5696064 1613168 5696072 1613656 5695408 1613448 5695424 -1613088 5696064 1613168 5696072 1613448 5695424 1613232 5695376 -1613088 5696064 1613168 5696072 1613232 5695376 1613040 5696040 -1613232 5695376 1613016 5696040 1613040 5696040 1613168 5696072 -1613168 5696072 1613448 5695424 1613232 5695376 1613040 5696040 -1613168 5696072 1613656 5695408 1613448 5695424 1613232 5695376 -1613088 5696064 1612736 5696520 1613168 5696072 1613040 5696040 -1613168 5696072 1613528 5697360 1613744 5695376 1613656 5695408 -1613168 5696072 1613744 5695376 1613656 5695408 1613448 5695424 -1613744 5695376 1613168 5696072 1613528 5697360 1614696 5695376 -1613744 5695376 1613656 5695408 1613168 5696072 1614696 5695376 -1613168 5696072 1613312 5697192 1613528 5697360 1614696 5695376 -1613528 5697360 1615376 5695816 1614696 5695376 1613168 5696072 -1613744 5695376 1613168 5696072 1614696 5695376 1614568 5695320 -1613528 5697360 1613208 5696096 1613168 5696072 1613312 5697192 -1613528 5697360 1614696 5695376 1613208 5696096 1613312 5697192 -1613208 5696096 1614696 5695376 1613168 5696072 1613312 5697192 -1613168 5696072 1613072 5696952 1613312 5697192 1613208 5696096 -1613168 5696072 1613008 5696896 1613072 5696952 1613208 5696096 -1613168 5696072 1612840 5696712 1613008 5696896 1613208 5696096 -1613008 5696896 1613072 5696952 1613208 5696096 1612840 5696712 -1613168 5696072 1612840 5696712 1613208 5696096 1614696 5695376 -1613312 5697192 1613528 5697360 1613208 5696096 1613072 5696952 -1613072 5696952 1613312 5697192 1613208 5696096 1613008 5696896 -1614696 5695376 1613208 5696096 1613528 5697360 1615376 5695816 -1613168 5696072 1612736 5696520 1612840 5696712 1613208 5696096 -1613168 5696072 1613088 5696064 1612736 5696520 1613208 5696096 -1613088 5696064 1612880 5696080 1612736 5696520 1613208 5696096 -1612840 5696712 1613008 5696896 1613208 5696096 1612736 5696520 -1613168 5696072 1613088 5696064 1613208 5696096 1614696 5695376 -1612736 5696520 1612840 5696712 1613208 5696096 1613088 5696064 -1613168 5696072 1613208 5696096 1614696 5695376 1613744 5695376 -1613208 5696096 1613528 5697360 1614696 5695376 1613744 5695376 -1613168 5696072 1613208 5696096 1613744 5695376 1613656 5695408 -1613168 5696072 1613088 5696064 1613208 5696096 1613656 5695408 -1614696 5695376 1614568 5695320 1613744 5695376 1613208 5696096 -1613168 5696072 1613208 5696096 1613656 5695408 1613448 5695424 -1613168 5696072 1613208 5696096 1613448 5695424 1613232 5695376 -1613208 5696096 1613744 5695376 1613656 5695408 1613448 5695424 -1613168 5696072 1613088 5696064 1613208 5696096 1613448 5695424 -1613208 5696096 1614696 5695376 1613744 5695376 1613656 5695408 -1613208 5696096 1613240 5696104 1614696 5695376 1613744 5695376 -1613208 5696096 1613528 5697360 1613240 5696104 1613744 5695376 -1613528 5697360 1613240 5696104 1613208 5696096 1613312 5697192 -1613240 5696104 1613744 5695376 1613208 5696096 1613312 5697192 -1613208 5696096 1613072 5696952 1613312 5697192 1613240 5696104 -1613208 5696096 1613072 5696952 1613240 5696104 1613744 5695376 -1613312 5697192 1613528 5697360 1613240 5696104 1613072 5696952 -1613240 5696104 1613528 5697360 1614696 5695376 1613744 5695376 -1613528 5697360 1614696 5695376 1613240 5696104 1613312 5697192 -1613208 5696096 1613008 5696896 1613072 5696952 1613240 5696104 -1613208 5696096 1613008 5696896 1613240 5696104 1613744 5695376 -1613208 5696096 1612840 5696712 1613008 5696896 1613240 5696104 -1613208 5696096 1612840 5696712 1613240 5696104 1613744 5695376 -1613208 5696096 1612736 5696520 1612840 5696712 1613240 5696104 -1613072 5696952 1613312 5697192 1613240 5696104 1613008 5696896 -1613008 5696896 1613072 5696952 1613240 5696104 1612840 5696712 -1614696 5695376 1613240 5696104 1613528 5697360 1615376 5695816 -1614696 5695376 1614568 5695320 1613744 5695376 1613240 5696104 -1614568 5695320 1613832 5695328 1613744 5695376 1613240 5696104 -1613744 5695376 1613208 5696096 1613240 5696104 1614568 5695320 -1614696 5695376 1614568 5695320 1613240 5696104 1613528 5697360 -1613208 5696096 1613240 5696104 1613744 5695376 1613656 5695408 -1613240 5696104 1614568 5695320 1613744 5695376 1613656 5695408 -1613208 5696096 1612840 5696712 1613240 5696104 1613656 5695408 -1613208 5696096 1613240 5696104 1613656 5695408 1613448 5695424 -1613208 5696096 1612840 5696712 1613240 5696104 1613448 5695424 -1613208 5696096 1613240 5696104 1613448 5695424 1613168 5696072 -1613208 5696096 1612840 5696712 1613240 5696104 1613168 5696072 -1613448 5695424 1613232 5695376 1613168 5696072 1613240 5696104 -1613240 5696104 1613656 5695408 1613448 5695424 1613168 5696072 -1613240 5696104 1613744 5695376 1613656 5695408 1613448 5695424 -1613240 5696104 1613248 5696112 1614696 5695376 1614568 5695320 -1613240 5696104 1613528 5697360 1613248 5696112 1614568 5695320 -1613528 5697360 1613248 5696112 1613240 5696104 1613312 5697192 -1613240 5696104 1613072 5696952 1613312 5697192 1613248 5696112 -1613240 5696104 1613008 5696896 1613072 5696952 1613248 5696112 -1613072 5696952 1613312 5697192 1613248 5696112 1613008 5696896 -1613248 5696112 1614568 5695320 1613240 5696104 1613008 5696896 -1613312 5697192 1613528 5697360 1613248 5696112 1613072 5696952 -1613248 5696112 1613528 5697360 1614696 5695376 1614568 5695320 -1613528 5697360 1614696 5695376 1613248 5696112 1613312 5697192 -1613240 5696104 1612840 5696712 1613008 5696896 1613248 5696112 -1613240 5696104 1613208 5696096 1612840 5696712 1613248 5696112 -1613208 5696096 1612736 5696520 1612840 5696712 1613248 5696112 -1613208 5696096 1612736 5696520 1613248 5696112 1613240 5696104 -1613008 5696896 1613072 5696952 1613248 5696112 1612840 5696712 -1613240 5696104 1613208 5696096 1613248 5696112 1614568 5695320 -1612840 5696712 1613008 5696896 1613248 5696112 1612736 5696520 -1614696 5695376 1613248 5696112 1613528 5697360 1615376 5695816 -1613240 5696104 1613248 5696112 1614568 5695320 1613744 5695376 -1614568 5695320 1613832 5695328 1613744 5695376 1613248 5696112 -1613240 5696104 1613248 5696112 1613744 5695376 1613656 5695408 -1613248 5696112 1614696 5695376 1614568 5695320 1613744 5695376 -1613240 5696104 1613208 5696096 1613248 5696112 1613656 5695408 -1613248 5696112 1614568 5695320 1613744 5695376 1613656 5695408 -1613208 5696096 1613088 5696064 1612736 5696520 1613248 5696112 -1613240 5696104 1613248 5696112 1613656 5695408 1613448 5695424 -1613248 5696112 1613744 5695376 1613656 5695408 1613448 5695424 -1613240 5696104 1613248 5696112 1613448 5695424 1613168 5696072 -1613240 5696104 1613208 5696096 1613248 5696112 1613448 5695424 -1613248 5696112 1613288 5696168 1614696 5695376 1614568 5695320 -1613288 5696168 1613528 5697360 1614696 5695376 1614568 5695320 -1613248 5696112 1613288 5696168 1614568 5695320 1613744 5695376 -1614568 5695320 1613832 5695328 1613744 5695376 1613288 5696168 -1613288 5696168 1614696 5695376 1614568 5695320 1613744 5695376 -1613248 5696112 1613528 5697360 1613288 5696168 1613744 5695376 -1613528 5697360 1613288 5696168 1613248 5696112 1613312 5697192 -1613528 5697360 1614696 5695376 1613288 5696168 1613312 5697192 -1613248 5696112 1613072 5696952 1613312 5697192 1613288 5696168 -1613248 5696112 1613008 5696896 1613072 5696952 1613288 5696168 -1613248 5696112 1612840 5696712 1613008 5696896 1613288 5696168 -1613008 5696896 1613072 5696952 1613288 5696168 1612840 5696712 -1613072 5696952 1613312 5697192 1613288 5696168 1613008 5696896 -1613288 5696168 1613744 5695376 1613248 5696112 1612840 5696712 -1613312 5697192 1613528 5697360 1613288 5696168 1613072 5696952 -1613248 5696112 1612736 5696520 1612840 5696712 1613288 5696168 -1613248 5696112 1613208 5696096 1612736 5696520 1613288 5696168 -1613248 5696112 1613240 5696104 1613208 5696096 1613288 5696168 -1612840 5696712 1613008 5696896 1613288 5696168 1612736 5696520 -1613248 5696112 1613208 5696096 1613288 5696168 1613744 5695376 -1612736 5696520 1612840 5696712 1613288 5696168 1613208 5696096 -1614696 5695376 1613288 5696168 1613528 5697360 1615376 5695816 -1614696 5695376 1614568 5695320 1613288 5696168 1615376 5695816 -1613288 5696168 1613312 5697192 1613528 5697360 1615376 5695816 -1613248 5696112 1613288 5696168 1613744 5695376 1613656 5695408 -1613248 5696112 1613288 5696168 1613656 5695408 1613448 5695424 -1613288 5696168 1614568 5695320 1613744 5695376 1613656 5695408 -1613248 5696112 1613208 5696096 1613288 5696168 1613656 5695408 -1614696 5695376 1613288 5696168 1615376 5695816 1614856 5695400 -1613528 5697360 1615512 5696024 1615376 5695816 1613288 5696168 -1613208 5696096 1613088 5696064 1612736 5696520 1613288 5696168 -1613088 5696064 1612880 5696080 1612736 5696520 1613288 5696168 -1613208 5696096 1613168 5696072 1613088 5696064 1613288 5696168 -1613208 5696096 1613088 5696064 1613288 5696168 1613248 5696112 -1612736 5696520 1612840 5696712 1613288 5696168 1613088 5696064 -1613072 5696952 1613280 5696240 1613288 5696168 1613008 5696896 -1613288 5696168 1612840 5696712 1613008 5696896 1613280 5696240 -1613280 5696240 1613312 5697192 1613288 5696168 1612840 5696712 -1613288 5696168 1612736 5696520 1612840 5696712 1613280 5696240 -1612840 5696712 1613008 5696896 1613280 5696240 1612736 5696520 -1613288 5696168 1612736 5696520 1613280 5696240 1613312 5697192 -1613008 5696896 1613072 5696952 1613280 5696240 1612840 5696712 -1613288 5696168 1613280 5696240 1613312 5697192 1613528 5697360 -1613288 5696168 1612736 5696520 1613280 5696240 1613528 5697360 -1613288 5696168 1613280 5696240 1613528 5697360 1615376 5695816 -1613288 5696168 1612736 5696520 1613280 5696240 1615376 5695816 -1613280 5696240 1613312 5697192 1613528 5697360 1615376 5695816 -1613280 5696240 1613072 5696952 1613312 5697192 1613528 5697360 -1613072 5696952 1613312 5697192 1613280 5696240 1613008 5696896 -1613288 5696168 1613088 5696064 1612736 5696520 1613280 5696240 -1613288 5696168 1613088 5696064 1613280 5696240 1615376 5695816 -1613088 5696064 1612880 5696080 1612736 5696520 1613280 5696240 -1612880 5696080 1612560 5696144 1612736 5696520 1613280 5696240 -1612736 5696520 1612840 5696712 1613280 5696240 1612880 5696080 -1613088 5696064 1612880 5696080 1613280 5696240 1613288 5696168 -1613288 5696168 1613280 5696240 1615376 5695816 1614696 5695376 -1613288 5696168 1613280 5696240 1614696 5695376 1614568 5695320 -1613288 5696168 1613088 5696064 1613280 5696240 1614696 5695376 -1613280 5696240 1613528 5697360 1615376 5695816 1614696 5695376 -1615376 5695816 1614856 5695400 1614696 5695376 1613280 5696240 -1613528 5697360 1615512 5696024 1615376 5695816 1613280 5696240 -1613288 5696168 1613208 5696096 1613088 5696064 1613280 5696240 -1613288 5696168 1613208 5696096 1613280 5696240 1614696 5695376 -1613208 5696096 1613168 5696072 1613088 5696064 1613280 5696240 -1613288 5696168 1613248 5696112 1613208 5696096 1613280 5696240 -1613288 5696168 1613248 5696112 1613280 5696240 1614696 5695376 -1613248 5696112 1613240 5696104 1613208 5696096 1613280 5696240 -1613088 5696064 1612880 5696080 1613280 5696240 1613208 5696096 -1613208 5696096 1613088 5696064 1613280 5696240 1613248 5696112 -1613088 5696064 1612920 5696056 1612880 5696080 1613280 5696240 -1613280 5696240 1613256 5696264 1612840 5696712 1613008 5696896 -1612736 5696520 1613256 5696264 1613280 5696240 1612880 5696080 -1612736 5696520 1613256 5696264 1612880 5696080 1612560 5696144 -1613280 5696240 1613088 5696064 1612880 5696080 1613256 5696264 -1612880 5696080 1612736 5696520 1613256 5696264 1613088 5696064 -1613280 5696240 1613256 5696264 1613008 5696896 1613072 5696952 -1613256 5696264 1612840 5696712 1613008 5696896 1613072 5696952 -1613280 5696240 1613088 5696064 1613256 5696264 1613072 5696952 -1613280 5696240 1613256 5696264 1613072 5696952 1613312 5697192 -1613256 5696264 1613008 5696896 1613072 5696952 1613312 5697192 -1613280 5696240 1613256 5696264 1613312 5697192 1613528 5697360 -1613280 5696240 1613088 5696064 1613256 5696264 1613312 5697192 -1613256 5696264 1612736 5696520 1612840 5696712 1613008 5696896 -1612736 5696520 1612840 5696712 1613256 5696264 1612880 5696080 -1613280 5696240 1613208 5696096 1613088 5696064 1613256 5696264 -1613088 5696064 1612880 5696080 1613256 5696264 1613208 5696096 -1613208 5696096 1613168 5696072 1613088 5696064 1613256 5696264 -1613280 5696240 1613208 5696096 1613256 5696264 1613312 5697192 -1613280 5696240 1613248 5696112 1613208 5696096 1613256 5696264 -1613280 5696240 1613288 5696168 1613248 5696112 1613256 5696264 -1613248 5696112 1613240 5696104 1613208 5696096 1613256 5696264 -1613280 5696240 1613288 5696168 1613256 5696264 1613312 5697192 -1613208 5696096 1613088 5696064 1613256 5696264 1613248 5696112 -1613248 5696112 1613208 5696096 1613256 5696264 1613288 5696168 -1613088 5696064 1612920 5696056 1612880 5696080 1613256 5696264 -1613256 5696264 1613216 5696288 1612840 5696712 1613008 5696896 -1613256 5696264 1613216 5696288 1613008 5696896 1613072 5696952 -1613256 5696264 1613216 5696288 1613072 5696952 1613312 5697192 -1613216 5696288 1612840 5696712 1613008 5696896 1613072 5696952 -1613256 5696264 1612736 5696520 1613216 5696288 1613072 5696952 -1612736 5696520 1613216 5696288 1613256 5696264 1612880 5696080 -1612736 5696520 1613216 5696288 1612880 5696080 1612560 5696144 -1613256 5696264 1613088 5696064 1612880 5696080 1613216 5696288 -1613256 5696264 1613208 5696096 1613088 5696064 1613216 5696288 -1613208 5696096 1613168 5696072 1613088 5696064 1613216 5696288 -1613208 5696096 1613168 5696072 1613216 5696288 1613256 5696264 -1613088 5696064 1612880 5696080 1613216 5696288 1613168 5696072 -1613216 5696288 1613072 5696952 1613256 5696264 1613208 5696096 -1612880 5696080 1612736 5696520 1613216 5696288 1613088 5696064 -1613216 5696288 1612736 5696520 1612840 5696712 1613008 5696896 -1612736 5696520 1612840 5696712 1613216 5696288 1612880 5696080 -1613256 5696264 1613248 5696112 1613208 5696096 1613216 5696288 -1613088 5696064 1612920 5696056 1612880 5696080 1613216 5696288 -1612736 5696520 1613120 5696296 1612880 5696080 1612560 5696144 -1612880 5696080 1613120 5696296 1613216 5696288 1613088 5696064 -1613216 5696288 1613168 5696072 1613088 5696064 1613120 5696296 -1613216 5696288 1613208 5696096 1613168 5696072 1613120 5696296 -1613216 5696288 1613256 5696264 1613208 5696096 1613120 5696296 -1613168 5696072 1613088 5696064 1613120 5696296 1613208 5696096 -1613088 5696064 1612880 5696080 1613120 5696296 1613168 5696072 -1612880 5696080 1612736 5696520 1613120 5696296 1613088 5696064 -1613120 5696296 1612736 5696520 1613216 5696288 1613208 5696096 -1613216 5696288 1613120 5696296 1612736 5696520 1612840 5696712 -1613120 5696296 1612880 5696080 1612736 5696520 1612840 5696712 -1613216 5696288 1613120 5696296 1612840 5696712 1613008 5696896 -1613216 5696288 1613120 5696296 1613008 5696896 1613072 5696952 -1613216 5696288 1613208 5696096 1613120 5696296 1613008 5696896 -1613120 5696296 1612736 5696520 1612840 5696712 1613008 5696896 -1612880 5696080 1613120 5696296 1613088 5696064 1612920 5696056 -1613120 5696296 1613168 5696072 1613088 5696064 1612920 5696056 -1612880 5696080 1612736 5696520 1613120 5696296 1612920 5696056 -1613088 5696064 1613016 5696040 1612920 5696056 1613120 5696296 -1613088 5696064 1613016 5696040 1613120 5696296 1613168 5696072 -1613088 5696064 1613040 5696040 1613016 5696040 1613120 5696296 -1612920 5696056 1612880 5696080 1613120 5696296 1613016 5696040 -1612736 5696520 1613080 5696288 1612880 5696080 1612560 5696144 -1613120 5696296 1613080 5696288 1612736 5696520 1612840 5696712 -1613120 5696296 1612880 5696080 1613080 5696288 1612840 5696712 -1612880 5696080 1613080 5696288 1613120 5696296 1612920 5696056 -1613080 5696288 1612840 5696712 1613120 5696296 1612920 5696056 -1613120 5696296 1613080 5696288 1612840 5696712 1613008 5696896 -1613080 5696288 1612880 5696080 1612736 5696520 1612840 5696712 -1612880 5696080 1612736 5696520 1613080 5696288 1612920 5696056 -1613120 5696296 1613016 5696040 1612920 5696056 1613080 5696288 -1613120 5696296 1613016 5696040 1613080 5696288 1612840 5696712 -1612920 5696056 1612880 5696080 1613080 5696288 1613016 5696040 -1613120 5696296 1613088 5696064 1613016 5696040 1613080 5696288 -1613120 5696296 1613168 5696072 1613088 5696064 1613080 5696288 -1613120 5696296 1613208 5696096 1613168 5696072 1613080 5696288 -1613120 5696296 1613168 5696072 1613080 5696288 1612840 5696712 -1613088 5696064 1613040 5696040 1613016 5696040 1613080 5696288 -1613088 5696064 1613016 5696040 1613080 5696288 1613168 5696072 -1613016 5696040 1612920 5696056 1613080 5696288 1613088 5696064 -1612736 5696520 1613032 5696256 1612880 5696080 1612560 5696144 -1613080 5696288 1613032 5696256 1612736 5696520 1612840 5696712 -1612880 5696080 1613032 5696256 1613080 5696288 1612920 5696056 -1613080 5696288 1613016 5696040 1612920 5696056 1613032 5696256 -1613032 5696256 1612736 5696520 1613080 5696288 1613016 5696040 -1612920 5696056 1612880 5696080 1613032 5696256 1613016 5696040 -1612880 5696080 1612736 5696520 1613032 5696256 1612920 5696056 -1613080 5696288 1613088 5696064 1613016 5696040 1613032 5696256 -1613016 5696040 1612920 5696056 1613032 5696256 1613088 5696064 -1613080 5696288 1613088 5696064 1613032 5696256 1612736 5696520 -1613088 5696064 1613040 5696040 1613016 5696040 1613032 5696256 -1613080 5696288 1613168 5696072 1613088 5696064 1613032 5696256 -1613080 5696288 1613120 5696296 1613168 5696072 1613032 5696256 -1613080 5696288 1613168 5696072 1613032 5696256 1612736 5696520 -1613088 5696064 1613016 5696040 1613032 5696256 1613168 5696072 -1612736 5696520 1613016 5696248 1612880 5696080 1612560 5696144 -1613032 5696256 1613016 5696248 1612736 5696520 1613080 5696288 -1612880 5696080 1613016 5696248 1613032 5696256 1612920 5696056 -1613032 5696256 1613016 5696040 1612920 5696056 1613016 5696248 -1613032 5696256 1613088 5696064 1613016 5696040 1613016 5696248 -1613016 5696040 1612920 5696056 1613016 5696248 1613088 5696064 -1613016 5696248 1612736 5696520 1613032 5696256 1613088 5696064 -1612920 5696056 1612880 5696080 1613016 5696248 1613016 5696040 -1612880 5696080 1612736 5696520 1613016 5696248 1612920 5696056 -1613088 5696064 1613040 5696040 1613016 5696040 1613016 5696248 -1613032 5696256 1613168 5696072 1613088 5696064 1613016 5696248 -1612736 5696520 1612944 5696224 1612880 5696080 1612560 5696144 -1612880 5696080 1612480 5696016 1612560 5696144 1612944 5696224 -1613016 5696248 1612944 5696224 1612736 5696520 1613032 5696256 -1612880 5696080 1612944 5696224 1613016 5696248 1612920 5696056 -1613016 5696248 1613016 5696040 1612920 5696056 1612944 5696224 -1613016 5696248 1613088 5696064 1613016 5696040 1612944 5696224 -1612944 5696224 1612736 5696520 1613016 5696248 1613016 5696040 -1612920 5696056 1612880 5696080 1612944 5696224 1613016 5696040 -1612736 5696520 1613016 5696248 1612944 5696224 1612560 5696144 -1612944 5696224 1612920 5696056 1612880 5696080 1612560 5696144 -1612944 5696224 1612912 5696176 1612560 5696144 1612736 5696520 -1612560 5696144 1612912 5696176 1612880 5696080 1612480 5696016 -1612944 5696224 1612912 5696176 1612736 5696520 1613016 5696248 -1612944 5696224 1612880 5696080 1612912 5696176 1612736 5696520 -1612880 5696080 1612912 5696176 1612944 5696224 1612920 5696056 -1612944 5696224 1613016 5696040 1612920 5696056 1612912 5696176 -1612944 5696224 1613016 5696248 1613016 5696040 1612912 5696176 -1613016 5696248 1613088 5696064 1613016 5696040 1612912 5696176 -1613016 5696040 1612920 5696056 1612912 5696176 1613016 5696248 -1612912 5696176 1612736 5696520 1612944 5696224 1613016 5696248 -1612920 5696056 1612880 5696080 1612912 5696176 1613016 5696040 -1612912 5696176 1612880 5696080 1612560 5696144 1612736 5696520 -1612880 5696080 1612560 5696144 1612912 5696176 1612920 5696056 -1612560 5696144 1612880 5696136 1612880 5696080 1612480 5696016 -1612912 5696176 1612880 5696136 1612560 5696144 1612736 5696520 -1612880 5696080 1612880 5696136 1612912 5696176 1612920 5696056 -1612912 5696176 1613016 5696040 1612920 5696056 1612880 5696136 -1612880 5696136 1612560 5696144 1612912 5696176 1612920 5696056 -1612880 5696080 1612560 5696144 1612880 5696136 1612920 5696056 -1618368 5699568 1618792 5700016 1621464 5701464 1621488 5701424 -1617792 5700456 1618792 5700016 1618368 5699568 1618280 5699648 -1621464 5701464 1618792 5700016 1617792 5700456 1621448 5701528 -1617792 5700456 1618792 5700016 1618280 5699648 1617776 5700272 -1618792 5700016 1618368 5699568 1618280 5699648 1617776 5700272 -1618368 5699568 1618792 5700016 1621488 5701424 1618392 5699496 -1621488 5701424 1621576 5701360 1618392 5699496 1618792 5700016 -1621576 5701360 1619040 5698280 1618392 5699496 1618792 5700016 -1619040 5698280 1618384 5699440 1618392 5699496 1618792 5700016 -1619040 5698280 1618384 5699440 1618792 5700016 1621576 5701360 -1619040 5698280 1618936 5698304 1618384 5699440 1618792 5700016 -1621576 5701360 1619040 5698280 1618792 5700016 1621488 5701424 -1618792 5700016 1621464 5701464 1621488 5701424 1621576 5701360 -1618392 5699496 1618368 5699568 1618792 5700016 1618384 5699440 -1618792 5700016 1621448 5701528 1621464 5701464 1621488 5701424 -1617792 5700456 1621448 5701528 1618792 5700016 1617776 5700272 -1618368 5699568 1618280 5699648 1618792 5700016 1618392 5699496 -1621576 5701360 1622064 5698152 1619040 5698280 1618792 5700016 -1619040 5698280 1618384 5699440 1618792 5700016 1622064 5698152 -1621576 5701360 1622064 5698152 1618792 5700016 1621488 5701424 -1621576 5701360 1622296 5698320 1622064 5698152 1618792 5700016 -1622064 5698152 1621944 5698008 1619040 5698280 1618792 5700016 -1618280 5699648 1618184 5699664 1617776 5700272 1618792 5700016 -1618280 5699648 1618184 5699664 1618792 5700016 1618368 5699568 -1617776 5700272 1617792 5700456 1618792 5700016 1618184 5699664 -1618184 5699664 1617768 5700120 1617776 5700272 1618792 5700016 -1617792 5700456 1617760 5700568 1621448 5701528 1618792 5700016 -1621448 5701528 1621464 5701464 1618792 5700016 1617760 5700568 -1617792 5700456 1617760 5700568 1618792 5700016 1617776 5700272 -1617760 5700568 1617608 5700800 1621448 5701528 1618792 5700016 -1621448 5701528 1621464 5701464 1618792 5700016 1617608 5700800 -1617760 5700568 1617608 5700800 1618792 5700016 1617792 5700456 -1617608 5700800 1617496 5700904 1621448 5701528 1618792 5700016 -1618792 5700016 1618904 5699944 1619040 5698280 1618384 5699440 -1619040 5698280 1618936 5698304 1618384 5699440 1618904 5699944 -1618792 5700016 1618904 5699944 1618384 5699440 1618392 5699496 -1618904 5699944 1619040 5698280 1618384 5699440 1618392 5699496 -1618792 5700016 1618904 5699944 1618392 5699496 1618368 5699568 -1618904 5699944 1618384 5699440 1618392 5699496 1618368 5699568 -1618792 5700016 1622064 5698152 1618904 5699944 1618368 5699568 -1618792 5700016 1618904 5699944 1618368 5699568 1618280 5699648 -1618904 5699944 1622064 5698152 1619040 5698280 1618384 5699440 -1619040 5698280 1618904 5699944 1622064 5698152 1621944 5698008 -1619040 5698280 1618384 5699440 1618904 5699944 1621944 5698008 -1618904 5699944 1618792 5700016 1622064 5698152 1621944 5698008 -1619040 5698280 1618904 5699944 1621944 5698008 1619064 5698240 -1622064 5698152 1618904 5699944 1618792 5700016 1621576 5701360 -1618792 5700016 1621488 5701424 1621576 5701360 1618904 5699944 -1618792 5700016 1621464 5701464 1621488 5701424 1618904 5699944 -1621488 5701424 1621576 5701360 1618904 5699944 1621464 5701464 -1622064 5698152 1618904 5699944 1621576 5701360 1622296 5698320 -1618792 5700016 1621448 5701528 1621464 5701464 1618904 5699944 -1621464 5701464 1621488 5701424 1618904 5699944 1621448 5701528 -1618792 5700016 1617608 5700800 1621448 5701528 1618904 5699944 -1618904 5699944 1618368 5699568 1618792 5700016 1621448 5701528 -1622064 5698152 1621944 5698008 1618904 5699944 1621576 5701360 -1621576 5701360 1622064 5698152 1618904 5699944 1621488 5701424 -1618904 5699944 1619056 5699728 1619040 5698280 1618384 5699440 -1618904 5699944 1619056 5699728 1618384 5699440 1618392 5699496 -1619040 5698280 1618936 5698304 1618384 5699440 1619056 5699728 -1618904 5699944 1619056 5699728 1618392 5699496 1618368 5699568 -1619056 5699728 1618384 5699440 1618392 5699496 1618368 5699568 -1618904 5699944 1619056 5699728 1618368 5699568 1618792 5700016 -1619056 5699728 1618936 5698304 1618384 5699440 1618392 5699496 -1618904 5699944 1621944 5698008 1619056 5699728 1618368 5699568 -1619056 5699728 1621944 5698008 1619040 5698280 1618936 5698304 -1619040 5698280 1619056 5699728 1621944 5698008 1619064 5698240 -1619040 5698280 1618936 5698304 1619056 5699728 1619064 5698240 -1619056 5699728 1618904 5699944 1621944 5698008 1619064 5698240 -1621944 5698008 1619064 5698200 1619064 5698240 1619056 5699728 -1621944 5698008 1619056 5699728 1618904 5699944 1622064 5698152 -1619056 5699728 1618368 5699568 1618904 5699944 1622064 5698152 -1618904 5699944 1621576 5701360 1622064 5698152 1619056 5699728 -1621576 5701360 1622296 5698320 1622064 5698152 1619056 5699728 -1618904 5699944 1621576 5701360 1619056 5699728 1618368 5699568 -1621944 5698008 1619064 5698240 1619056 5699728 1622064 5698152 -1622064 5698152 1621944 5698008 1619056 5699728 1621576 5701360 -1618904 5699944 1621488 5701424 1621576 5701360 1619056 5699728 -1618904 5699944 1621464 5701464 1621488 5701424 1619056 5699728 -1618904 5699944 1621448 5701528 1621464 5701464 1619056 5699728 -1618904 5699944 1621464 5701464 1619056 5699728 1618368 5699568 -1621576 5701360 1622064 5698152 1619056 5699728 1621488 5701424 -1621488 5701424 1621576 5701360 1619056 5699728 1621464 5701464 -1618936 5698304 1618504 5698568 1618384 5699440 1619056 5699728 -1618936 5698304 1618504 5698568 1619056 5699728 1619040 5698280 -1618384 5699440 1618392 5699496 1619056 5699728 1618504 5698568 -1618504 5698568 1618424 5698632 1618384 5699440 1619056 5699728 -1618936 5698304 1618536 5698512 1618504 5698568 1619056 5699728 -1622064 5698152 1619136 5699704 1621576 5701360 1622296 5698320 -1621576 5701360 1619136 5699704 1619056 5699728 1621488 5701424 -1619136 5699704 1622064 5698152 1619056 5699728 1621488 5701424 -1621576 5701360 1622064 5698152 1619136 5699704 1621488 5701424 -1619056 5699728 1619136 5699704 1622064 5698152 1621944 5698008 -1619056 5699728 1621488 5701424 1619136 5699704 1621944 5698008 -1619056 5699728 1619136 5699704 1621944 5698008 1619064 5698240 -1619056 5699728 1621488 5701424 1619136 5699704 1619064 5698240 -1619136 5699704 1621576 5701360 1622064 5698152 1621944 5698008 -1619056 5699728 1619136 5699704 1619064 5698240 1619040 5698280 -1619056 5699728 1619136 5699704 1619040 5698280 1618936 5698304 -1619056 5699728 1619136 5699704 1618936 5698304 1618504 5698568 -1619136 5699704 1619040 5698280 1618936 5698304 1618504 5698568 -1619056 5699728 1621488 5701424 1619136 5699704 1618504 5698568 -1619136 5699704 1621944 5698008 1619064 5698240 1619040 5698280 -1619136 5699704 1619064 5698240 1619040 5698280 1618936 5698304 -1621944 5698008 1619064 5698200 1619064 5698240 1619136 5699704 -1619136 5699704 1622064 5698152 1621944 5698008 1619064 5698240 -1619056 5699728 1621464 5701464 1621488 5701424 1619136 5699704 -1619056 5699728 1618904 5699944 1621464 5701464 1619136 5699704 -1618904 5699944 1621448 5701528 1621464 5701464 1619136 5699704 -1621488 5701424 1621576 5701360 1619136 5699704 1621464 5701464 -1619056 5699728 1618904 5699944 1619136 5699704 1618504 5698568 -1621464 5701464 1621488 5701424 1619136 5699704 1618904 5699944 -1619056 5699728 1619136 5699704 1618504 5698568 1618384 5699440 -1619136 5699704 1618936 5698304 1618504 5698568 1618384 5699440 -1619056 5699728 1619136 5699704 1618384 5699440 1618392 5699496 -1619056 5699728 1618904 5699944 1619136 5699704 1618384 5699440 -1618504 5698568 1618424 5698632 1618384 5699440 1619136 5699704 -1618936 5698304 1618536 5698512 1618504 5698568 1619136 5699704 -1618904 5699944 1619152 5699792 1619136 5699704 1619056 5699728 -1621464 5701464 1619152 5699792 1618904 5699944 1621448 5701528 -1618904 5699944 1618792 5700016 1621448 5701528 1619152 5699792 -1619152 5699792 1621464 5701464 1619136 5699704 1619056 5699728 -1621464 5701464 1619136 5699704 1619152 5699792 1621448 5701528 -1618904 5699944 1621448 5701528 1619152 5699792 1619056 5699728 -1619136 5699704 1619152 5699792 1621464 5701464 1621488 5701424 -1619136 5699704 1619152 5699792 1621488 5701424 1621576 5701360 -1619136 5699704 1619056 5699728 1619152 5699792 1621576 5701360 -1619136 5699704 1619152 5699792 1621576 5701360 1622064 5698152 -1621576 5701360 1622296 5698320 1622064 5698152 1619152 5699792 -1619152 5699792 1621488 5701424 1621576 5701360 1622064 5698152 -1619136 5699704 1619152 5699792 1622064 5698152 1621944 5698008 -1619136 5699704 1619056 5699728 1619152 5699792 1622064 5698152 -1619152 5699792 1621448 5701528 1621464 5701464 1621488 5701424 -1619152 5699792 1621464 5701464 1621488 5701424 1621576 5701360 -1619152 5699792 1619152 5699888 1621448 5701528 1621464 5701464 -1621448 5701528 1619152 5699888 1618904 5699944 1618792 5700016 -1621448 5701528 1619152 5699888 1618792 5700016 1617608 5700800 -1619152 5699792 1619152 5699888 1621464 5701464 1621488 5701424 -1619152 5699888 1621448 5701528 1621464 5701464 1621488 5701424 -1619152 5699792 1618904 5699944 1619152 5699888 1621488 5701424 -1618904 5699944 1619152 5699888 1619152 5699792 1619056 5699728 -1619152 5699792 1619136 5699704 1619056 5699728 1619152 5699888 -1619152 5699888 1621488 5701424 1619152 5699792 1619056 5699728 -1619152 5699888 1618792 5700016 1621448 5701528 1621464 5701464 -1619152 5699888 1619056 5699728 1618904 5699944 1618792 5700016 -1619152 5699792 1619152 5699888 1621488 5701424 1621576 5701360 -1619152 5699792 1619152 5699888 1621576 5701360 1622064 5698152 -1619152 5699888 1621464 5701464 1621488 5701424 1621576 5701360 -1619152 5699792 1619056 5699728 1619152 5699888 1621576 5701360 -1621448 5701528 1619104 5700088 1618792 5700016 1617608 5700800 -1618792 5700016 1619104 5700088 1619152 5699888 1618904 5699944 -1619152 5699888 1619104 5700088 1621448 5701528 1621464 5701464 -1619152 5699888 1619104 5700088 1621464 5701464 1621488 5701424 -1619152 5699888 1619104 5700088 1621488 5701424 1621576 5701360 -1619104 5700088 1621448 5701528 1621464 5701464 1621488 5701424 -1619104 5700088 1621488 5701424 1619152 5699888 1618904 5699944 -1619152 5699888 1619056 5699728 1618904 5699944 1619104 5700088 -1621448 5701528 1621464 5701464 1619104 5700088 1617608 5700800 -1619104 5700088 1618904 5699944 1618792 5700016 1617608 5700800 -1618792 5700016 1617760 5700568 1617608 5700800 1619104 5700088 -1617608 5700800 1621448 5701528 1619104 5700088 1617760 5700568 -1618792 5700016 1617760 5700568 1619104 5700088 1618904 5699944 -1618792 5700016 1617792 5700456 1617760 5700568 1619104 5700088 -1621448 5701528 1619104 5700088 1617608 5700800 1617496 5700904 -1617608 5700800 1619104 5700160 1619104 5700088 1617760 5700568 -1619104 5700088 1619104 5700160 1621448 5701528 1621464 5701464 -1619104 5700088 1619104 5700160 1621464 5701464 1621488 5701424 -1619104 5700088 1619104 5700160 1621488 5701424 1619152 5699888 -1621488 5701424 1621576 5701360 1619152 5699888 1619104 5700160 -1619104 5700160 1621464 5701464 1621488 5701424 1619152 5699888 -1619104 5700160 1621448 5701528 1621464 5701464 1621488 5701424 -1619104 5700160 1619152 5699888 1619104 5700088 1617760 5700568 -1619104 5700160 1617608 5700800 1621448 5701528 1621464 5701464 -1617608 5700800 1621448 5701528 1619104 5700160 1617760 5700568 -1619104 5700088 1618792 5700016 1617760 5700568 1619104 5700160 -1617760 5700568 1617608 5700800 1619104 5700160 1618792 5700016 -1619104 5700088 1618792 5700016 1619104 5700160 1619152 5699888 -1619104 5700088 1618904 5699944 1618792 5700016 1619104 5700160 -1618792 5700016 1617792 5700456 1617760 5700568 1619104 5700160 -1621448 5701528 1619104 5700160 1617608 5700800 1617496 5700904 -1619104 5700160 1619144 5700272 1621448 5701528 1621464 5701464 -1619104 5700160 1619144 5700272 1621464 5701464 1621488 5701424 -1619104 5700160 1619144 5700272 1621488 5701424 1619152 5699888 -1619104 5700160 1619144 5700272 1619152 5699888 1619104 5700088 -1621488 5701424 1621576 5701360 1619152 5699888 1619144 5700272 -1619144 5700272 1621576 5701360 1619152 5699888 1619104 5700088 -1619144 5700272 1621464 5701464 1621488 5701424 1621576 5701360 -1619144 5700272 1621448 5701528 1621464 5701464 1621488 5701424 -1619104 5700160 1617608 5700800 1619144 5700272 1619104 5700088 -1617608 5700800 1619144 5700272 1619104 5700160 1617760 5700568 -1619104 5700160 1618792 5700016 1617760 5700568 1619144 5700272 -1619144 5700272 1619104 5700088 1619104 5700160 1618792 5700016 -1617760 5700568 1617608 5700800 1619144 5700272 1618792 5700016 -1619144 5700272 1617608 5700800 1621448 5701528 1621464 5701464 -1617608 5700800 1621448 5701528 1619144 5700272 1617760 5700568 -1621576 5701360 1619152 5699792 1619152 5699888 1619144 5700272 -1618792 5700016 1617792 5700456 1617760 5700568 1619144 5700272 -1619104 5700160 1619104 5700088 1618792 5700016 1619144 5700272 -1621448 5701528 1619144 5700272 1617608 5700800 1617496 5700904 -1621448 5701528 1619144 5700272 1617496 5700904 1621664 5703552 -1621448 5701528 1619144 5700272 1621664 5703552 1621752 5702000 -1617496 5700904 1617392 5700976 1621664 5703552 1619144 5700272 -1621448 5701528 1621464 5701464 1619144 5700272 1621664 5703552 -1619144 5700272 1617760 5700568 1617608 5700800 1617496 5700904 -1619144 5700272 1617608 5700800 1617496 5700904 1621664 5703552 -1621664 5703552 1619152 5700320 1617496 5700904 1617392 5700976 -1619144 5700272 1619152 5700320 1621664 5703552 1621448 5701528 -1621664 5703552 1621752 5702000 1621448 5701528 1619152 5700320 -1619144 5700272 1619152 5700320 1621448 5701528 1621464 5701464 -1619152 5700320 1621664 5703552 1621448 5701528 1621464 5701464 -1619144 5700272 1619152 5700320 1621464 5701464 1621488 5701424 -1619144 5700272 1619152 5700320 1621488 5701424 1621576 5701360 -1619144 5700272 1619152 5700320 1621576 5701360 1619152 5699888 -1619144 5700272 1619152 5700320 1619152 5699888 1619104 5700088 -1619152 5700320 1621488 5701424 1621576 5701360 1619152 5699888 -1619152 5700320 1621464 5701464 1621488 5701424 1621576 5701360 -1619152 5700320 1621448 5701528 1621464 5701464 1621488 5701424 -1619144 5700272 1617496 5700904 1619152 5700320 1619152 5699888 -1619152 5700320 1617496 5700904 1621664 5703552 1621448 5701528 -1621576 5701360 1619152 5699792 1619152 5699888 1619152 5700320 -1617496 5700904 1619152 5700320 1619144 5700272 1617608 5700800 -1619152 5700320 1619152 5699888 1619144 5700272 1617608 5700800 -1619144 5700272 1617760 5700568 1617608 5700800 1619152 5700320 -1619144 5700272 1618792 5700016 1617760 5700568 1619152 5700320 -1619144 5700272 1619104 5700160 1618792 5700016 1619152 5700320 -1619144 5700272 1618792 5700016 1619152 5700320 1619152 5699888 -1617760 5700568 1617608 5700800 1619152 5700320 1618792 5700016 -1617496 5700904 1621664 5703552 1619152 5700320 1617608 5700800 -1618792 5700016 1617792 5700456 1617760 5700568 1619152 5700320 -1617608 5700800 1617496 5700904 1619152 5700320 1617760 5700568 -1621664 5703552 1619104 5700408 1617496 5700904 1617392 5700976 -1619152 5700320 1619104 5700408 1621664 5703552 1621448 5701528 -1621664 5703552 1621752 5702000 1621448 5701528 1619104 5700408 -1619152 5700320 1619104 5700408 1621448 5701528 1621464 5701464 -1619152 5700320 1619104 5700408 1621464 5701464 1621488 5701424 -1619104 5700408 1621664 5703552 1621448 5701528 1621464 5701464 -1619152 5700320 1617496 5700904 1619104 5700408 1621464 5701464 -1617496 5700904 1619104 5700408 1619152 5700320 1617608 5700800 -1619104 5700408 1621464 5701464 1619152 5700320 1617608 5700800 -1619104 5700408 1617496 5700904 1621664 5703552 1621448 5701528 -1617496 5700904 1621664 5703552 1619104 5700408 1617608 5700800 -1619152 5700320 1617760 5700568 1617608 5700800 1619104 5700408 -1619152 5700320 1618792 5700016 1617760 5700568 1619104 5700408 -1619152 5700320 1619144 5700272 1618792 5700016 1619104 5700408 -1619144 5700272 1619104 5700160 1618792 5700016 1619104 5700408 -1619144 5700272 1619104 5700160 1619104 5700408 1619152 5700320 -1618792 5700016 1617760 5700568 1619104 5700408 1619104 5700160 -1619152 5700320 1619144 5700272 1619104 5700408 1621464 5701464 -1617608 5700800 1617496 5700904 1619104 5700408 1617760 5700568 -1618792 5700016 1617792 5700456 1617760 5700568 1619104 5700408 -1618792 5700016 1617776 5700272 1617792 5700456 1619104 5700408 -1618792 5700016 1617792 5700456 1619104 5700408 1619104 5700160 -1619104 5700160 1619104 5700088 1618792 5700016 1619104 5700408 -1617760 5700568 1617608 5700800 1619104 5700408 1617792 5700456 -1621664 5703552 1619000 5700480 1617496 5700904 1617392 5700976 -1621664 5703552 1619000 5700480 1617392 5700976 1621664 5703600 -1619104 5700408 1619000 5700480 1621664 5703552 1621448 5701528 -1621664 5703552 1621752 5702000 1621448 5701528 1619000 5700480 -1619104 5700408 1619000 5700480 1621448 5701528 1621464 5701464 -1619104 5700408 1617496 5700904 1619000 5700480 1621448 5701528 -1617496 5700904 1619000 5700480 1619104 5700408 1617608 5700800 -1619104 5700408 1617760 5700568 1617608 5700800 1619000 5700480 -1619000 5700480 1621448 5701528 1619104 5700408 1617760 5700568 -1617608 5700800 1617496 5700904 1619000 5700480 1617760 5700568 -1621664 5703552 1621448 5701528 1619000 5700480 1617392 5700976 -1619000 5700480 1617608 5700800 1617496 5700904 1617392 5700976 -1619104 5700408 1617792 5700456 1617760 5700568 1619000 5700480 -1617760 5700568 1617608 5700800 1619000 5700480 1617792 5700456 -1619104 5700408 1617792 5700456 1619000 5700480 1621448 5701528 -1619104 5700408 1618792 5700016 1617792 5700456 1619000 5700480 -1618792 5700016 1617776 5700272 1617792 5700456 1619000 5700480 -1619104 5700408 1619104 5700160 1618792 5700016 1619000 5700480 -1619104 5700408 1619144 5700272 1619104 5700160 1619000 5700480 -1619104 5700408 1619152 5700320 1619144 5700272 1619000 5700480 -1619104 5700160 1618792 5700016 1619000 5700480 1619144 5700272 -1619104 5700408 1619144 5700272 1619000 5700480 1621448 5701528 -1618792 5700016 1617792 5700456 1619000 5700480 1619104 5700160 -1619104 5700160 1619104 5700088 1618792 5700016 1619000 5700480 -1617792 5700456 1617760 5700568 1619000 5700480 1618792 5700016 -1619000 5700480 1618824 5700480 1617760 5700568 1617608 5700800 -1619000 5700480 1618824 5700480 1617608 5700800 1617496 5700904 -1618824 5700480 1617760 5700568 1617608 5700800 1617496 5700904 -1619000 5700480 1617792 5700456 1618824 5700480 1617496 5700904 -1619000 5700480 1618824 5700480 1617496 5700904 1617392 5700976 -1618824 5700480 1617792 5700456 1617760 5700568 1617608 5700800 -1617792 5700456 1618824 5700480 1619000 5700480 1618792 5700016 -1617792 5700456 1618824 5700480 1618792 5700016 1617776 5700272 -1618792 5700016 1618184 5699664 1617776 5700272 1618824 5700480 -1618824 5700480 1617496 5700904 1619000 5700480 1618792 5700016 -1617792 5700456 1617760 5700568 1618824 5700480 1617776 5700272 -1619000 5700480 1619104 5700160 1618792 5700016 1618824 5700480 -1619000 5700480 1619144 5700272 1619104 5700160 1618824 5700480 -1619000 5700480 1619104 5700160 1618824 5700480 1617496 5700904 -1619104 5700160 1619104 5700088 1618792 5700016 1618824 5700480 -1618824 5700480 1619104 5700160 1618792 5700016 1617776 5700272 -1617776 5700272 1618728 5700448 1618792 5700016 1618184 5699664 -1617776 5700272 1618728 5700448 1618184 5699664 1617768 5700120 -1618824 5700480 1618728 5700448 1617776 5700272 1617792 5700456 -1618824 5700480 1618792 5700016 1618728 5700448 1617792 5700456 -1618824 5700480 1618728 5700448 1617792 5700456 1617760 5700568 -1618728 5700448 1617776 5700272 1617792 5700456 1617760 5700568 -1618824 5700480 1618728 5700448 1617760 5700568 1617608 5700800 -1618824 5700480 1618728 5700448 1617608 5700800 1617496 5700904 -1618824 5700480 1618792 5700016 1618728 5700448 1617608 5700800 -1618728 5700448 1617792 5700456 1617760 5700568 1617608 5700800 -1617776 5700272 1617792 5700456 1618728 5700448 1618184 5699664 -1618728 5700448 1618824 5700480 1618792 5700016 1618184 5699664 -1618792 5700016 1618280 5699648 1618184 5699664 1618728 5700448 -1618792 5700016 1618728 5700448 1618824 5700480 1619104 5700160 -1618728 5700448 1618648 5700440 1617792 5700456 1617760 5700568 -1618728 5700448 1618648 5700440 1617760 5700568 1617608 5700800 -1618648 5700440 1617792 5700456 1617760 5700568 1617608 5700800 -1618728 5700448 1618648 5700440 1617608 5700800 1618824 5700480 -1617608 5700800 1617496 5700904 1618824 5700480 1618648 5700440 -1618648 5700440 1617760 5700568 1617608 5700800 1618824 5700480 -1617776 5700272 1618648 5700440 1618728 5700448 1618184 5699664 -1618728 5700448 1618792 5700016 1618184 5699664 1618648 5700440 -1617776 5700272 1618648 5700440 1618184 5699664 1617768 5700120 -1618184 5699664 1617832 5699808 1617768 5700120 1618648 5700440 -1618184 5699664 1617768 5700120 1618648 5700440 1618792 5700016 -1618728 5700448 1618792 5700016 1618648 5700440 1618824 5700480 -1618728 5700448 1618824 5700480 1618792 5700016 1618648 5700440 -1618648 5700440 1617776 5700272 1617792 5700456 1617760 5700568 -1617776 5700272 1617792 5700456 1618648 5700440 1617768 5700120 -1618792 5700016 1618280 5699648 1618184 5699664 1618648 5700440 -1618792 5700016 1618368 5699568 1618280 5699648 1618648 5700440 -1618792 5700016 1618280 5699648 1618648 5700440 1618728 5700448 -1618184 5699664 1617768 5700120 1618648 5700440 1618280 5699648 -1618648 5700440 1618472 5700368 1617768 5700120 1617776 5700272 -1617768 5700120 1618472 5700368 1618184 5699664 1617832 5699808 -1618184 5699664 1618472 5700368 1618648 5700440 1618280 5699648 -1618648 5700440 1618280 5699648 1618472 5700368 1617776 5700272 -1618648 5700440 1618472 5700368 1617776 5700272 1617792 5700456 -1618472 5700368 1617768 5700120 1617776 5700272 1617792 5700456 -1618648 5700440 1618472 5700368 1617792 5700456 1617760 5700568 -1618648 5700440 1618472 5700368 1617760 5700568 1617608 5700800 -1618648 5700440 1618280 5699648 1618472 5700368 1617760 5700568 -1618472 5700368 1617776 5700272 1617792 5700456 1617760 5700568 -1618472 5700368 1618184 5699664 1617768 5700120 1617776 5700272 -1618184 5699664 1617768 5700120 1618472 5700368 1618280 5699648 -1618648 5700440 1618792 5700016 1618280 5699648 1618472 5700368 -1618792 5700016 1618368 5699568 1618280 5699648 1618472 5700368 -1618648 5700440 1618728 5700448 1618792 5700016 1618472 5700368 -1618280 5699648 1618184 5699664 1618472 5700368 1618792 5700016 -1618648 5700440 1618792 5700016 1618472 5700368 1617760 5700568 -1617768 5700120 1618424 5700328 1618184 5699664 1617832 5699808 -1618472 5700368 1618424 5700328 1617768 5700120 1617776 5700272 -1618472 5700368 1618424 5700328 1617776 5700272 1617792 5700456 -1618472 5700368 1618424 5700328 1617792 5700456 1617760 5700568 -1618424 5700328 1617776 5700272 1617792 5700456 1617760 5700568 -1618472 5700368 1618424 5700328 1617760 5700568 1618648 5700440 -1618424 5700328 1617768 5700120 1617776 5700272 1617792 5700456 -1618472 5700368 1618184 5699664 1618424 5700328 1617760 5700568 -1618184 5699664 1618424 5700328 1618472 5700368 1618280 5699648 -1618472 5700368 1618792 5700016 1618280 5699648 1618424 5700328 -1618792 5700016 1618368 5699568 1618280 5699648 1618424 5700328 -1618424 5700328 1617760 5700568 1618472 5700368 1618792 5700016 -1618280 5699648 1618184 5699664 1618424 5700328 1618792 5700016 -1618424 5700328 1618184 5699664 1617768 5700120 1617776 5700272 -1618184 5699664 1617768 5700120 1618424 5700328 1618280 5699648 -1618472 5700368 1618648 5700440 1618792 5700016 1618424 5700328 -1618280 5699648 1618424 5700216 1618792 5700016 1618368 5699568 -1618792 5700016 1618424 5700216 1618424 5700328 1618472 5700368 -1618424 5700328 1618424 5700216 1618280 5699648 1618184 5699664 -1618424 5700216 1618184 5699664 1618424 5700328 1618472 5700368 -1618424 5700328 1618424 5700216 1618184 5699664 1617768 5700120 -1618184 5699664 1617832 5699808 1617768 5700120 1618424 5700216 -1618184 5699664 1617920 5699672 1617832 5699808 1618424 5700216 -1618424 5700216 1618280 5699648 1618184 5699664 1617832 5699808 -1618424 5700328 1618424 5700216 1617768 5700120 1617776 5700272 -1618424 5700328 1618424 5700216 1617776 5700272 1617792 5700456 -1618424 5700328 1618472 5700368 1618424 5700216 1617776 5700272 -1617768 5700120 1617776 5700272 1618424 5700216 1617832 5699808 -1618424 5700216 1618792 5700016 1618280 5699648 1618184 5699664 -1618792 5700016 1618280 5699648 1618424 5700216 1618472 5700368 -1618792 5700016 1618424 5700216 1618472 5700368 1618648 5700440 -1618792 5700016 1618424 5700216 1618648 5700440 1618728 5700448 -1618424 5700216 1618424 5700328 1618472 5700368 1618648 5700440 -1618792 5700016 1618280 5699648 1618424 5700216 1618648 5700440 -1618280 5699648 1618464 5700144 1618792 5700016 1618368 5699568 -1618792 5700016 1618904 5699944 1618368 5699568 1618464 5700144 -1618424 5700216 1618464 5700144 1618280 5699648 1618184 5699664 -1618424 5700216 1618464 5700144 1618184 5699664 1617832 5699808 -1618792 5700016 1618464 5700144 1618424 5700216 1618648 5700440 -1618792 5700016 1618464 5700144 1618648 5700440 1618728 5700448 -1618424 5700216 1618648 5700440 1618464 5700144 1618184 5699664 -1618280 5699648 1618184 5699664 1618464 5700144 1618368 5699568 -1618464 5700144 1618648 5700440 1618792 5700016 1618368 5699568 -1618424 5700216 1618472 5700368 1618648 5700440 1618464 5700144 -1618424 5700216 1618424 5700328 1618472 5700368 1618464 5700144 -1618648 5700440 1618792 5700016 1618464 5700144 1618472 5700368 -1618424 5700216 1618472 5700368 1618464 5700144 1618184 5699664 -1618464 5700144 1618528 5700080 1618368 5699568 1618280 5699648 -1618368 5699568 1618528 5700080 1618792 5700016 1618904 5699944 -1618464 5700144 1618528 5700080 1618280 5699648 1618184 5699664 -1618464 5700144 1618792 5700016 1618528 5700080 1618280 5699648 -1618792 5700016 1618528 5700080 1618464 5700144 1618648 5700440 -1618792 5700016 1618368 5699568 1618528 5700080 1618648 5700440 -1618792 5700016 1618528 5700080 1618648 5700440 1618728 5700448 -1618464 5700144 1618472 5700368 1618648 5700440 1618528 5700080 -1618528 5700080 1618280 5699648 1618464 5700144 1618648 5700440 -1618528 5700080 1618792 5700016 1618368 5699568 1618280 5699648 -1618792 5700016 1618568 5700056 1618528 5700080 1618648 5700440 -1618568 5700056 1618368 5699568 1618528 5700080 1618648 5700440 -1618792 5700016 1618568 5700056 1618648 5700440 1618728 5700448 -1618568 5700056 1618528 5700080 1618648 5700440 1618728 5700448 -1618368 5699568 1618568 5700056 1618792 5700016 1618904 5699944 -1618792 5700016 1618568 5700056 1618728 5700448 1618824 5700480 -1618528 5700080 1618464 5700144 1618648 5700440 1618568 5700056 -1618528 5700080 1618568 5700056 1618368 5699568 1618280 5699648 -1618528 5700080 1618568 5700056 1618280 5699648 1618464 5700144 -1618528 5700080 1618648 5700440 1618568 5700056 1618280 5699648 -1618568 5700056 1618792 5700016 1618368 5699568 1618280 5699648 -1618792 5700016 1618368 5699568 1618568 5700056 1618728 5700448 -1618728 5700448 1618736 5700032 1618568 5700056 1618648 5700440 -1618568 5700056 1618528 5700080 1618648 5700440 1618736 5700032 -1618792 5700016 1618736 5700032 1618728 5700448 1618824 5700480 -1618736 5700032 1618792 5700016 1618568 5700056 1618648 5700440 -1618568 5700056 1618736 5700032 1618792 5700016 1618368 5699568 -1618568 5700056 1618736 5700032 1618368 5699568 1618280 5699648 -1618792 5700016 1618904 5699944 1618368 5699568 1618736 5700032 -1618904 5699944 1619056 5699728 1618368 5699568 1618736 5700032 -1618568 5700056 1618648 5700440 1618736 5700032 1618368 5699568 -1618368 5699568 1618568 5700056 1618736 5700032 1618904 5699944 -1618736 5700032 1618728 5700448 1618792 5700016 1618904 5699944 -1618728 5700448 1618792 5700016 1618736 5700032 1618648 5700440 -1619136 5699704 1618920 5698448 1618504 5698568 1618384 5699440 -1618936 5698304 1618920 5698448 1619136 5699704 1619040 5698280 -1618504 5698568 1618424 5698632 1618384 5699440 1618920 5698448 -1618920 5698448 1618936 5698304 1618504 5698568 1618384 5699440 -1618936 5698304 1618504 5698568 1618920 5698448 1619040 5698280 -1619136 5699704 1619040 5698280 1618920 5698448 1618384 5699440 -1619136 5699704 1619064 5698240 1619040 5698280 1618920 5698448 -1619136 5699704 1618920 5698448 1618384 5699440 1619056 5699728 -1618504 5698568 1618920 5698448 1618936 5698304 1618536 5698512 -1618936 5698304 1618864 5698296 1618536 5698512 1618920 5698448 -1618864 5698296 1618528 5698432 1618536 5698512 1618920 5698448 -1618864 5698296 1618736 5698224 1618528 5698432 1618920 5698448 -1618864 5698296 1618528 5698432 1618920 5698448 1618936 5698304 -1618504 5698568 1618384 5699440 1618920 5698448 1618536 5698512 -1618920 5698448 1619040 5698280 1618936 5698304 1618864 5698296 -1618536 5698512 1618504 5698568 1618920 5698448 1618528 5698432 -1618920 5698448 1619008 5698448 1619040 5698280 1618936 5698304 -1618920 5698448 1619008 5698448 1618936 5698304 1618864 5698296 -1618920 5698448 1619136 5699704 1619008 5698448 1618936 5698304 -1619136 5699704 1619008 5698448 1618920 5698448 1618384 5699440 -1619008 5698448 1619136 5699704 1619040 5698280 1618936 5698304 -1619040 5698280 1619008 5698448 1619136 5699704 1619064 5698240 -1619136 5699704 1621944 5698008 1619064 5698240 1619008 5698448 -1619040 5698280 1618936 5698304 1619008 5698448 1619064 5698240 -1619008 5698448 1618920 5698448 1619136 5699704 1621944 5698008 -1619064 5698240 1619040 5698280 1619008 5698448 1621944 5698008 -1621944 5698008 1619064 5698200 1619064 5698240 1619008 5698448 -1619136 5699704 1622064 5698152 1621944 5698008 1619008 5698448 -1619008 5698448 1619088 5698488 1621944 5698008 1619064 5698240 -1619008 5698448 1619136 5699704 1619088 5698488 1619064 5698240 -1619136 5699704 1619088 5698488 1619008 5698448 1618920 5698448 -1619136 5699704 1619088 5698488 1618920 5698448 1618384 5699440 -1618920 5698448 1618504 5698568 1618384 5699440 1619088 5698488 -1618504 5698568 1618424 5698632 1618384 5699440 1619088 5698488 -1618920 5698448 1618536 5698512 1618504 5698568 1619088 5698488 -1618384 5699440 1619136 5699704 1619088 5698488 1618504 5698568 -1619088 5698488 1619064 5698240 1619008 5698448 1618920 5698448 -1619088 5698488 1619008 5698448 1618920 5698448 1618504 5698568 -1619088 5698488 1619136 5699704 1621944 5698008 1619064 5698240 -1619136 5699704 1621944 5698008 1619088 5698488 1618384 5699440 -1619008 5698448 1619088 5698488 1619064 5698240 1619040 5698280 -1619088 5698488 1621944 5698008 1619064 5698240 1619040 5698280 -1619008 5698448 1619088 5698488 1619040 5698280 1618936 5698304 -1619008 5698448 1618920 5698448 1619088 5698488 1619040 5698280 -1621944 5698008 1619064 5698200 1619064 5698240 1619088 5698488 -1621944 5698008 1619088 5698488 1619136 5699704 1622064 5698152 -1619136 5699704 1619088 5698488 1618384 5699440 1619056 5699728 -1619088 5698488 1619104 5698544 1621944 5698008 1619064 5698240 -1619088 5698488 1619104 5698544 1619064 5698240 1619040 5698280 -1619088 5698488 1619136 5699704 1619104 5698544 1619064 5698240 -1619136 5699704 1619104 5698544 1619088 5698488 1618384 5699440 -1619088 5698488 1618504 5698568 1618384 5699440 1619104 5698544 -1619088 5698488 1618920 5698448 1618504 5698568 1619104 5698544 -1618504 5698568 1618424 5698632 1618384 5699440 1619104 5698544 -1618920 5698448 1618536 5698512 1618504 5698568 1619104 5698544 -1618504 5698568 1618424 5698632 1619104 5698544 1618920 5698448 -1619088 5698488 1619008 5698448 1618920 5698448 1619104 5698544 -1618920 5698448 1618504 5698568 1619104 5698544 1619008 5698448 -1619104 5698544 1619064 5698240 1619088 5698488 1619008 5698448 -1618384 5699440 1619136 5699704 1619104 5698544 1618424 5698632 -1619104 5698544 1619136 5699704 1621944 5698008 1619064 5698240 -1619136 5699704 1621944 5698008 1619104 5698544 1618384 5699440 -1621944 5698008 1619064 5698200 1619064 5698240 1619104 5698544 -1619064 5698240 1619088 5698488 1619104 5698544 1619064 5698200 -1621944 5698008 1619064 5698200 1619104 5698544 1619136 5699704 -1621944 5698008 1621936 5697864 1619064 5698200 1619104 5698544 -1621944 5698008 1619104 5698544 1619136 5699704 1622064 5698152 -1619136 5699704 1619104 5698544 1618384 5699440 1619056 5699728 -1618384 5699440 1618392 5699496 1619056 5699728 1619104 5698544 -1619104 5698544 1618424 5698632 1618384 5699440 1619056 5699728 -1619136 5699704 1621944 5698008 1619104 5698544 1619056 5699728 -1618424 5698632 1618248 5699336 1618384 5699440 1619104 5698544 -1619056 5699728 1619096 5698576 1618384 5699440 1618392 5699496 -1618384 5699440 1619096 5698576 1619104 5698544 1618424 5698632 -1619104 5698544 1618504 5698568 1618424 5698632 1619096 5698576 -1619104 5698544 1618920 5698448 1618504 5698568 1619096 5698576 -1619104 5698544 1619008 5698448 1618920 5698448 1619096 5698576 -1618504 5698568 1618424 5698632 1619096 5698576 1618920 5698448 -1618920 5698448 1618536 5698512 1618504 5698568 1619096 5698576 -1618920 5698448 1618504 5698568 1619096 5698576 1619008 5698448 -1619104 5698544 1619088 5698488 1619008 5698448 1619096 5698576 -1619008 5698448 1618920 5698448 1619096 5698576 1619088 5698488 -1618424 5698632 1618384 5699440 1619096 5698576 1618504 5698568 -1619096 5698576 1619056 5699728 1619104 5698544 1619088 5698488 -1618384 5699440 1619056 5699728 1619096 5698576 1618424 5698632 -1619104 5698544 1619096 5698576 1619056 5699728 1619136 5699704 -1619104 5698544 1619088 5698488 1619096 5698576 1619136 5699704 -1619104 5698544 1619096 5698576 1619136 5699704 1621944 5698008 -1619104 5698544 1619096 5698576 1621944 5698008 1619064 5698200 -1619104 5698544 1619088 5698488 1619096 5698576 1621944 5698008 -1619096 5698576 1618384 5699440 1619056 5699728 1619136 5699704 -1619136 5699704 1622064 5698152 1621944 5698008 1619096 5698576 -1619096 5698576 1619056 5699728 1619136 5699704 1621944 5698008 -1618384 5699440 1619096 5698576 1618424 5698632 1618248 5699336 -1619056 5699728 1619080 5698608 1618384 5699440 1618392 5699496 -1619096 5698576 1619080 5698608 1619056 5699728 1619136 5699704 -1619096 5698576 1618384 5699440 1619080 5698608 1619136 5699704 -1618384 5699440 1619080 5698608 1619096 5698576 1618424 5698632 -1619096 5698576 1618504 5698568 1618424 5698632 1619080 5698608 -1619096 5698576 1618920 5698448 1618504 5698568 1619080 5698608 -1618920 5698448 1618536 5698512 1618504 5698568 1619080 5698608 -1619096 5698576 1619008 5698448 1618920 5698448 1619080 5698608 -1619096 5698576 1619088 5698488 1619008 5698448 1619080 5698608 -1618920 5698448 1618504 5698568 1619080 5698608 1619008 5698448 -1618504 5698568 1618424 5698632 1619080 5698608 1618920 5698448 -1619080 5698608 1619136 5699704 1619096 5698576 1619008 5698448 -1618424 5698632 1618384 5699440 1619080 5698608 1618504 5698568 -1619080 5698608 1618384 5699440 1619056 5699728 1619136 5699704 -1618384 5699440 1619056 5699728 1619080 5698608 1618424 5698632 -1619096 5698576 1619080 5698608 1619136 5699704 1621944 5698008 -1618384 5699440 1619080 5698608 1618424 5698632 1618248 5699336 -1618424 5698632 1619040 5698640 1619080 5698608 1618504 5698568 -1619080 5698608 1618920 5698448 1618504 5698568 1619040 5698640 -1619080 5698608 1619008 5698448 1618920 5698448 1619040 5698640 -1618920 5698448 1618536 5698512 1618504 5698568 1619040 5698640 -1619080 5698608 1619096 5698576 1619008 5698448 1619040 5698640 -1618920 5698448 1618504 5698568 1619040 5698640 1619008 5698448 -1618504 5698568 1618424 5698632 1619040 5698640 1618920 5698448 -1619040 5698640 1618384 5699440 1619080 5698608 1619008 5698448 -1619080 5698608 1619040 5698640 1618384 5699440 1619056 5699728 -1618384 5699440 1618392 5699496 1619056 5699728 1619040 5698640 -1619080 5698608 1619040 5698640 1619056 5699728 1619136 5699704 -1619080 5698608 1619040 5698640 1619136 5699704 1619096 5698576 -1619080 5698608 1619008 5698448 1619040 5698640 1619136 5699704 -1619040 5698640 1618384 5699440 1619056 5699728 1619136 5699704 -1619040 5698640 1618424 5698632 1618384 5699440 1619056 5699728 -1618424 5698632 1618384 5699440 1619040 5698640 1618504 5698568 -1618384 5699440 1619040 5698640 1618424 5698632 1618248 5699336 -1619040 5698640 1618976 5698680 1618384 5699440 1619056 5699728 -1618384 5699440 1618392 5699496 1619056 5699728 1618976 5698680 -1619040 5698640 1618976 5698680 1619056 5699728 1619136 5699704 -1619040 5698640 1618976 5698680 1619136 5699704 1619080 5698608 -1618976 5698680 1618384 5699440 1619056 5699728 1619136 5699704 -1619040 5698640 1618424 5698632 1618976 5698680 1619136 5699704 -1618424 5698632 1618976 5698680 1619040 5698640 1618504 5698568 -1619040 5698640 1618920 5698448 1618504 5698568 1618976 5698680 -1618920 5698448 1618536 5698512 1618504 5698568 1618976 5698680 -1619040 5698640 1619008 5698448 1618920 5698448 1618976 5698680 -1618920 5698448 1618536 5698512 1618976 5698680 1619040 5698640 -1618976 5698680 1619136 5699704 1619040 5698640 1618920 5698448 -1618504 5698568 1618424 5698632 1618976 5698680 1618536 5698512 -1618976 5698680 1618424 5698632 1618384 5699440 1619056 5699728 -1618424 5698632 1618384 5699440 1618976 5698680 1618504 5698568 -1618384 5699440 1618976 5698680 1618424 5698632 1618248 5699336 -1618920 5698448 1618528 5698432 1618536 5698512 1618976 5698680 -1618976 5698680 1618952 5698704 1618384 5699440 1619056 5699728 -1618384 5699440 1618392 5699496 1619056 5699728 1618952 5698704 -1618976 5698680 1618952 5698704 1619056 5699728 1619136 5699704 -1618976 5698680 1618952 5698704 1619136 5699704 1619040 5698640 -1619136 5699704 1619080 5698608 1619040 5698640 1618952 5698704 -1618952 5698704 1619056 5699728 1619136 5699704 1619040 5698640 -1618952 5698704 1618384 5699440 1619056 5699728 1619136 5699704 -1618976 5698680 1618424 5698632 1618952 5698704 1619040 5698640 -1618424 5698632 1618952 5698704 1618976 5698680 1618504 5698568 -1618976 5698680 1618536 5698512 1618504 5698568 1618952 5698704 -1618976 5698680 1618920 5698448 1618536 5698512 1618952 5698704 -1618976 5698680 1619040 5698640 1618920 5698448 1618952 5698704 -1618536 5698512 1618504 5698568 1618952 5698704 1618920 5698448 -1618952 5698704 1619040 5698640 1618976 5698680 1618920 5698448 -1618504 5698568 1618424 5698632 1618952 5698704 1618536 5698512 -1618952 5698704 1618424 5698632 1618384 5699440 1619056 5699728 -1618424 5698632 1618384 5699440 1618952 5698704 1618504 5698568 -1618384 5699440 1618952 5698704 1618424 5698632 1618248 5699336 -1618920 5698448 1618528 5698432 1618536 5698512 1618952 5698704 -1619056 5699728 1618936 5698736 1618384 5699440 1618392 5699496 -1618952 5698704 1618936 5698736 1619056 5699728 1619136 5699704 -1618952 5698704 1618936 5698736 1619136 5699704 1619040 5698640 -1619136 5699704 1619080 5698608 1619040 5698640 1618936 5698736 -1618952 5698704 1618936 5698736 1619040 5698640 1618976 5698680 -1618936 5698736 1619136 5699704 1619040 5698640 1618976 5698680 -1618936 5698736 1619056 5699728 1619136 5699704 1619040 5698640 -1618384 5699440 1618936 5698736 1618952 5698704 1618424 5698632 -1618952 5698704 1618424 5698632 1618936 5698736 1618976 5698680 -1618952 5698704 1618504 5698568 1618424 5698632 1618936 5698736 -1618952 5698704 1618536 5698512 1618504 5698568 1618936 5698736 -1618952 5698704 1618920 5698448 1618536 5698512 1618936 5698736 -1618424 5698632 1618384 5699440 1618936 5698736 1618504 5698568 -1618952 5698704 1618536 5698512 1618936 5698736 1618976 5698680 -1618504 5698568 1618424 5698632 1618936 5698736 1618536 5698512 -1618936 5698736 1618384 5699440 1619056 5699728 1619136 5699704 -1618384 5699440 1619056 5699728 1618936 5698736 1618424 5698632 -1618384 5699440 1618936 5698736 1618424 5698632 1618248 5699336 -1619056 5699728 1618936 5698840 1618384 5699440 1618392 5699496 -1618936 5698736 1618936 5698840 1619056 5699728 1619136 5699704 -1618936 5698736 1618936 5698840 1619136 5699704 1619040 5698640 -1619136 5699704 1619080 5698608 1619040 5698640 1618936 5698840 -1619136 5699704 1619096 5698576 1619080 5698608 1618936 5698840 -1618936 5698736 1618936 5698840 1619040 5698640 1618976 5698680 -1618936 5698736 1618936 5698840 1618976 5698680 1618952 5698704 -1619040 5698640 1618976 5698680 1618936 5698840 1619080 5698608 -1618936 5698840 1619056 5699728 1619136 5699704 1619080 5698608 -1618936 5698736 1618384 5699440 1618936 5698840 1618976 5698680 -1618384 5699440 1618936 5698840 1618936 5698736 1618424 5698632 -1618936 5698736 1618504 5698568 1618424 5698632 1618936 5698840 -1618936 5698736 1618536 5698512 1618504 5698568 1618936 5698840 -1618936 5698840 1618976 5698680 1618936 5698736 1618504 5698568 -1618424 5698632 1618384 5699440 1618936 5698840 1618504 5698568 -1618936 5698840 1618384 5699440 1619056 5699728 1619136 5699704 -1618384 5699440 1619056 5699728 1618936 5698840 1618424 5698632 -1618384 5699440 1618936 5698840 1618424 5698632 1618248 5699336 -1618424 5698632 1618072 5699008 1618248 5699336 1618936 5698840 -1618936 5698840 1618504 5698568 1618424 5698632 1618248 5699336 -1618384 5699440 1619056 5699728 1618936 5698840 1618248 5699336 -1619056 5699728 1618928 5698864 1618384 5699440 1618392 5699496 -1618936 5698840 1618928 5698864 1619056 5699728 1619136 5699704 -1618936 5698840 1618928 5698864 1619136 5699704 1619080 5698608 -1619136 5699704 1619096 5698576 1619080 5698608 1618928 5698864 -1618936 5698840 1618928 5698864 1619080 5698608 1619040 5698640 -1618928 5698864 1619056 5699728 1619136 5699704 1619080 5698608 -1618936 5698840 1618384 5699440 1618928 5698864 1619080 5698608 -1618384 5699440 1618928 5698864 1618936 5698840 1618248 5699336 -1618928 5698864 1619080 5698608 1618936 5698840 1618248 5699336 -1618928 5698864 1618384 5699440 1619056 5699728 1619136 5699704 -1618384 5699440 1619056 5699728 1618928 5698864 1618248 5699336 -1618936 5698840 1618424 5698632 1618248 5699336 1618928 5698864 -1618424 5698632 1618072 5699008 1618248 5699336 1618928 5698864 -1618936 5698840 1618504 5698568 1618424 5698632 1618928 5698864 -1618936 5698840 1618936 5698736 1618504 5698568 1618928 5698864 -1618936 5698736 1618536 5698512 1618504 5698568 1618928 5698864 -1618504 5698568 1618424 5698632 1618928 5698864 1618936 5698736 -1618936 5698840 1618936 5698736 1618928 5698864 1619080 5698608 -1618248 5699336 1618384 5699440 1618928 5698864 1618424 5698632 -1618424 5698632 1618248 5699336 1618928 5698864 1618504 5698568 -1619056 5699728 1618896 5698904 1618384 5699440 1618392 5699496 -1618928 5698864 1618896 5698904 1619056 5699728 1619136 5699704 -1618928 5698864 1618896 5698904 1619136 5699704 1619080 5698608 -1618928 5698864 1618384 5699440 1618896 5698904 1619136 5699704 -1618384 5699440 1618896 5698904 1618928 5698864 1618248 5699336 -1618928 5698864 1618424 5698632 1618248 5699336 1618896 5698904 -1618424 5698632 1618072 5699008 1618248 5699336 1618896 5698904 -1618896 5698904 1619136 5699704 1618928 5698864 1618424 5698632 -1618248 5699336 1618384 5699440 1618896 5698904 1618424 5698632 -1618896 5698904 1618384 5699440 1619056 5699728 1619136 5699704 -1618384 5699440 1619056 5699728 1618896 5698904 1618248 5699336 -1618928 5698864 1618504 5698568 1618424 5698632 1618896 5698904 -1618928 5698864 1618936 5698736 1618504 5698568 1618896 5698904 -1618928 5698864 1618936 5698840 1618936 5698736 1618896 5698904 -1618936 5698736 1618536 5698512 1618504 5698568 1618896 5698904 -1618936 5698736 1618504 5698568 1618896 5698904 1618936 5698840 -1618424 5698632 1618248 5699336 1618896 5698904 1618504 5698568 -1618928 5698864 1618936 5698840 1618896 5698904 1619136 5699704 -1618504 5698568 1618424 5698632 1618896 5698904 1618936 5698736 -1618248 5699336 1618856 5698904 1618424 5698632 1618072 5699008 -1618424 5698632 1618856 5698904 1618896 5698904 1618504 5698568 -1618896 5698904 1618856 5698904 1618248 5699336 1618384 5699440 -1618856 5698904 1618384 5699440 1618896 5698904 1618504 5698568 -1618896 5698904 1618856 5698904 1618384 5699440 1619056 5699728 -1618384 5699440 1618392 5699496 1619056 5699728 1618856 5698904 -1618856 5698904 1618248 5699336 1618384 5699440 1619056 5699728 -1618896 5698904 1618856 5698904 1619056 5699728 1619136 5699704 -1618896 5698904 1618504 5698568 1618856 5698904 1619056 5699728 -1618856 5698904 1618424 5698632 1618248 5699336 1618384 5699440 -1618424 5698632 1618248 5699336 1618856 5698904 1618504 5698568 -1618896 5698904 1618936 5698736 1618504 5698568 1618856 5698904 -1618936 5698736 1618536 5698512 1618504 5698568 1618856 5698904 -1618896 5698904 1618936 5698840 1618936 5698736 1618856 5698904 -1618896 5698904 1618928 5698864 1618936 5698840 1618856 5698904 -1618936 5698840 1618936 5698736 1618856 5698904 1618928 5698864 -1618504 5698568 1618424 5698632 1618856 5698904 1618936 5698736 -1618896 5698904 1618928 5698864 1618856 5698904 1619056 5699728 -1618936 5698736 1618504 5698568 1618856 5698904 1618936 5698840 -1618504 5698568 1618816 5698864 1618936 5698736 1618536 5698512 -1618936 5698736 1618952 5698704 1618536 5698512 1618816 5698864 -1618856 5698904 1618816 5698864 1618504 5698568 1618424 5698632 -1618856 5698904 1618936 5698736 1618816 5698864 1618424 5698632 -1618856 5698904 1618816 5698864 1618424 5698632 1618248 5699336 -1618424 5698632 1618072 5699008 1618248 5699336 1618816 5698864 -1618816 5698864 1618504 5698568 1618424 5698632 1618248 5699336 -1618856 5698904 1618816 5698864 1618248 5699336 1618384 5699440 -1618856 5698904 1618816 5698864 1618384 5699440 1619056 5699728 -1618856 5698904 1618936 5698736 1618816 5698864 1618384 5699440 -1618816 5698864 1618424 5698632 1618248 5699336 1618384 5699440 -1618504 5698568 1618424 5698632 1618816 5698864 1618536 5698512 -1618816 5698864 1618856 5698904 1618936 5698736 1618536 5698512 -1618936 5698736 1618816 5698864 1618856 5698904 1618936 5698840 -1618856 5698904 1618928 5698864 1618936 5698840 1618816 5698864 -1618856 5698904 1618896 5698904 1618928 5698864 1618816 5698864 -1618816 5698864 1618384 5699440 1618856 5698904 1618928 5698864 -1618936 5698736 1618536 5698512 1618816 5698864 1618936 5698840 -1618936 5698840 1618936 5698736 1618816 5698864 1618928 5698864 -1618536 5698512 1618768 5698816 1618816 5698864 1618936 5698736 -1618536 5698512 1618768 5698816 1618936 5698736 1618952 5698704 -1618536 5698512 1618768 5698816 1618952 5698704 1618920 5698448 -1618952 5698704 1618976 5698680 1618920 5698448 1618768 5698816 -1618768 5698816 1618936 5698736 1618952 5698704 1618920 5698448 -1618768 5698816 1618816 5698864 1618936 5698736 1618952 5698704 -1618816 5698864 1618768 5698816 1618504 5698568 1618424 5698632 -1618816 5698864 1618768 5698816 1618424 5698632 1618248 5699336 -1618424 5698632 1618072 5699008 1618248 5699336 1618768 5698816 -1618424 5698632 1618336 5698616 1618072 5699008 1618768 5698816 -1618248 5699336 1618816 5698864 1618768 5698816 1618072 5699008 -1618816 5698864 1618768 5698816 1618248 5699336 1618384 5699440 -1618768 5698816 1618504 5698568 1618424 5698632 1618072 5699008 -1618768 5698816 1618248 5699336 1618816 5698864 1618936 5698736 -1618816 5698864 1618936 5698840 1618936 5698736 1618768 5698816 -1618768 5698816 1618536 5698512 1618504 5698568 1618424 5698632 -1618536 5698512 1618504 5698568 1618768 5698816 1618920 5698448 -1618536 5698512 1618768 5698816 1618920 5698448 1618528 5698432 -1618768 5698816 1618672 5698752 1618424 5698632 1618072 5699008 -1618768 5698816 1618672 5698752 1618072 5699008 1618248 5699336 -1618424 5698632 1618336 5698616 1618072 5699008 1618672 5698752 -1618768 5698816 1618672 5698752 1618248 5699336 1618816 5698864 -1618672 5698752 1618424 5698632 1618072 5699008 1618248 5699336 -1618504 5698568 1618672 5698752 1618768 5698816 1618536 5698512 -1618768 5698816 1618536 5698512 1618672 5698752 1618248 5699336 -1618768 5698816 1618920 5698448 1618536 5698512 1618672 5698752 -1618768 5698816 1618952 5698704 1618920 5698448 1618672 5698752 -1618952 5698704 1618976 5698680 1618920 5698448 1618672 5698752 -1618768 5698816 1618936 5698736 1618952 5698704 1618672 5698752 -1618952 5698704 1618920 5698448 1618672 5698752 1618936 5698736 -1618768 5698816 1618816 5698864 1618936 5698736 1618672 5698752 -1618536 5698512 1618504 5698568 1618672 5698752 1618920 5698448 -1618768 5698816 1618936 5698736 1618672 5698752 1618248 5699336 -1618920 5698448 1618536 5698512 1618672 5698752 1618952 5698704 -1618672 5698752 1618504 5698568 1618424 5698632 1618072 5699008 -1618504 5698568 1618424 5698632 1618672 5698752 1618536 5698512 -1618920 5698448 1618528 5698432 1618536 5698512 1618672 5698752 -1618672 5698752 1618656 5698720 1618536 5698512 1618504 5698568 -1618920 5698448 1618656 5698720 1618672 5698752 1618952 5698704 -1618920 5698448 1618656 5698720 1618952 5698704 1618976 5698680 -1618672 5698752 1618936 5698736 1618952 5698704 1618656 5698720 -1618672 5698752 1618768 5698816 1618936 5698736 1618656 5698720 -1618936 5698736 1618952 5698704 1618656 5698720 1618768 5698816 -1618768 5698816 1618816 5698864 1618936 5698736 1618656 5698720 -1618952 5698704 1618920 5698448 1618656 5698720 1618936 5698736 -1618672 5698752 1618768 5698816 1618656 5698720 1618504 5698568 -1618672 5698752 1618656 5698720 1618504 5698568 1618424 5698632 -1618656 5698720 1618536 5698512 1618504 5698568 1618424 5698632 -1618672 5698752 1618656 5698720 1618424 5698632 1618072 5699008 -1618672 5698752 1618768 5698816 1618656 5698720 1618424 5698632 -1618656 5698720 1618920 5698448 1618536 5698512 1618504 5698568 -1618920 5698448 1618536 5698512 1618656 5698720 1618952 5698704 -1618536 5698512 1618656 5698720 1618920 5698448 1618528 5698432 -1618656 5698720 1618648 5698696 1618536 5698512 1618504 5698568 -1618656 5698720 1618648 5698696 1618504 5698568 1618424 5698632 -1618656 5698720 1618648 5698696 1618424 5698632 1618672 5698752 -1618648 5698696 1618536 5698512 1618504 5698568 1618424 5698632 -1618656 5698720 1618920 5698448 1618648 5698696 1618424 5698632 -1618920 5698448 1618648 5698696 1618656 5698720 1618952 5698704 -1618920 5698448 1618648 5698696 1618952 5698704 1618976 5698680 -1618656 5698720 1618936 5698736 1618952 5698704 1618648 5698696 -1618656 5698720 1618768 5698816 1618936 5698736 1618648 5698696 -1618648 5698696 1618424 5698632 1618656 5698720 1618936 5698736 -1618952 5698704 1618920 5698448 1618648 5698696 1618936 5698736 -1618648 5698696 1618920 5698448 1618536 5698512 1618504 5698568 -1618920 5698448 1618536 5698512 1618648 5698696 1618952 5698704 -1618536 5698512 1618648 5698696 1618920 5698448 1618528 5698432 -1618648 5698696 1618656 5698656 1618536 5698512 1618504 5698568 -1618648 5698696 1618656 5698656 1618504 5698568 1618424 5698632 -1618648 5698696 1618920 5698448 1618656 5698656 1618504 5698568 -1618920 5698448 1618656 5698656 1618648 5698696 1618952 5698704 -1618920 5698448 1618656 5698656 1618952 5698704 1618976 5698680 -1618648 5698696 1618936 5698736 1618952 5698704 1618656 5698656 -1618648 5698696 1618656 5698720 1618936 5698736 1618656 5698656 -1618656 5698720 1618768 5698816 1618936 5698736 1618656 5698656 -1618656 5698720 1618672 5698752 1618768 5698816 1618656 5698656 -1618768 5698816 1618936 5698736 1618656 5698656 1618672 5698752 -1618768 5698816 1618816 5698864 1618936 5698736 1618656 5698656 -1618656 5698720 1618672 5698752 1618656 5698656 1618648 5698696 -1618936 5698736 1618952 5698704 1618656 5698656 1618768 5698816 -1618656 5698656 1618504 5698568 1618648 5698696 1618656 5698720 -1618952 5698704 1618920 5698448 1618656 5698656 1618936 5698736 -1618656 5698656 1618920 5698448 1618536 5698512 1618504 5698568 -1618920 5698448 1618536 5698512 1618656 5698656 1618952 5698704 -1618536 5698512 1618656 5698656 1618920 5698448 1618528 5698432 -1618656 5698656 1618680 5698608 1618536 5698512 1618504 5698568 -1618656 5698656 1618680 5698608 1618504 5698568 1618648 5698696 -1618656 5698656 1618920 5698448 1618680 5698608 1618504 5698568 -1618920 5698448 1618680 5698608 1618656 5698656 1618952 5698704 -1618920 5698448 1618680 5698608 1618952 5698704 1618976 5698680 -1618656 5698656 1618936 5698736 1618952 5698704 1618680 5698608 -1618656 5698656 1618768 5698816 1618936 5698736 1618680 5698608 -1618656 5698656 1618672 5698752 1618768 5698816 1618680 5698608 -1618656 5698656 1618656 5698720 1618672 5698752 1618680 5698608 -1618768 5698816 1618816 5698864 1618936 5698736 1618680 5698608 -1618768 5698816 1618936 5698736 1618680 5698608 1618672 5698752 -1618936 5698736 1618952 5698704 1618680 5698608 1618768 5698816 -1618680 5698608 1618504 5698568 1618656 5698656 1618672 5698752 -1618952 5698704 1618920 5698448 1618680 5698608 1618936 5698736 -1618680 5698608 1618920 5698448 1618536 5698512 1618504 5698568 -1618920 5698448 1618536 5698512 1618680 5698608 1618952 5698704 -1618536 5698512 1618680 5698608 1618920 5698448 1618528 5698432 -1618920 5698448 1618864 5698296 1618528 5698432 1618680 5698608 -1618864 5698296 1618736 5698224 1618528 5698432 1618680 5698608 -1618920 5698448 1618936 5698304 1618864 5698296 1618680 5698608 -1618536 5698512 1618504 5698568 1618680 5698608 1618528 5698432 -1618680 5698608 1618952 5698704 1618920 5698448 1618864 5698296 -1618528 5698432 1618536 5698512 1618680 5698608 1618864 5698296 -1618680 5698608 1618704 5698568 1618864 5698296 1618528 5698432 -1618864 5698296 1618736 5698224 1618528 5698432 1618704 5698568 -1618736 5698224 1618480 5698400 1618528 5698432 1618704 5698568 -1618528 5698432 1618680 5698608 1618704 5698568 1618736 5698224 -1618864 5698296 1618704 5698568 1618920 5698448 1618936 5698304 -1618680 5698608 1618920 5698448 1618704 5698568 1618528 5698432 -1618920 5698448 1618704 5698568 1618680 5698608 1618952 5698704 -1618920 5698448 1618704 5698568 1618952 5698704 1618976 5698680 -1618680 5698608 1618936 5698736 1618952 5698704 1618704 5698568 -1618680 5698608 1618768 5698816 1618936 5698736 1618704 5698568 -1618704 5698568 1618528 5698432 1618680 5698608 1618936 5698736 -1618952 5698704 1618920 5698448 1618704 5698568 1618936 5698736 -1618704 5698568 1618920 5698448 1618864 5698296 1618736 5698224 -1618920 5698448 1618864 5698296 1618704 5698568 1618952 5698704 -1618680 5698608 1618704 5698568 1618528 5698432 1618536 5698512 -1618704 5698568 1618736 5698224 1618528 5698432 1618536 5698512 -1618680 5698608 1618704 5698568 1618536 5698512 1618504 5698568 -1618680 5698608 1618936 5698736 1618704 5698568 1618536 5698512 -1618864 5698296 1618736 5698544 1618920 5698448 1618936 5698304 -1618704 5698568 1618736 5698544 1618864 5698296 1618736 5698224 -1618704 5698568 1618736 5698544 1618736 5698224 1618528 5698432 -1618736 5698224 1618480 5698400 1618528 5698432 1618736 5698544 -1618704 5698568 1618736 5698544 1618528 5698432 1618536 5698512 -1618736 5698544 1618864 5698296 1618736 5698224 1618528 5698432 -1618704 5698568 1618920 5698448 1618736 5698544 1618528 5698432 -1618920 5698448 1618736 5698544 1618704 5698568 1618952 5698704 -1618920 5698448 1618736 5698544 1618952 5698704 1618976 5698680 -1618920 5698448 1618736 5698544 1618976 5698680 1619040 5698640 -1618704 5698568 1618936 5698736 1618952 5698704 1618736 5698544 -1618704 5698568 1618680 5698608 1618936 5698736 1618736 5698544 -1618680 5698608 1618768 5698816 1618936 5698736 1618736 5698544 -1618936 5698736 1618952 5698704 1618736 5698544 1618680 5698608 -1618736 5698544 1618528 5698432 1618704 5698568 1618680 5698608 -1618736 5698544 1618936 5698736 1618952 5698704 1618976 5698680 -1618736 5698544 1618920 5698448 1618864 5698296 1618736 5698224 -1618920 5698448 1618864 5698296 1618736 5698544 1618976 5698680 -1618864 5698296 1618824 5698480 1618920 5698448 1618936 5698304 -1618736 5698544 1618824 5698480 1618864 5698296 1618736 5698224 -1618736 5698544 1618824 5698480 1618736 5698224 1618528 5698432 -1618736 5698224 1618480 5698400 1618528 5698432 1618824 5698480 -1618736 5698544 1618824 5698480 1618528 5698432 1618704 5698568 -1618824 5698480 1618864 5698296 1618736 5698224 1618528 5698432 -1618736 5698544 1618920 5698448 1618824 5698480 1618528 5698432 -1618920 5698448 1618824 5698480 1618736 5698544 1618976 5698680 -1618736 5698544 1618952 5698704 1618976 5698680 1618824 5698480 -1618920 5698448 1618824 5698480 1618976 5698680 1619040 5698640 -1618736 5698544 1618936 5698736 1618952 5698704 1618824 5698480 -1618824 5698480 1618528 5698432 1618736 5698544 1618952 5698704 -1618976 5698680 1618920 5698448 1618824 5698480 1618952 5698704 -1618824 5698480 1618920 5698448 1618864 5698296 1618736 5698224 -1618920 5698448 1618864 5698296 1618824 5698480 1618976 5698680 -1619096 5698576 1619448 5698520 1621944 5698008 1619104 5698544 -1621944 5698008 1619064 5698200 1619104 5698544 1619448 5698520 -1619104 5698544 1619096 5698576 1619448 5698520 1619064 5698200 -1619448 5698520 1619136 5699704 1621944 5698008 1619064 5698200 -1619096 5698576 1619136 5699704 1619448 5698520 1619104 5698544 -1621944 5698008 1621936 5697864 1619064 5698200 1619448 5698520 -1621936 5697864 1619024 5698144 1619064 5698200 1619448 5698520 -1619064 5698200 1619104 5698544 1619448 5698520 1619024 5698144 -1621944 5698008 1621936 5697864 1619448 5698520 1619136 5699704 -1621936 5697864 1619024 5698144 1619448 5698520 1621944 5698008 -1619064 5698200 1619064 5698240 1619104 5698544 1619448 5698520 -1619064 5698240 1619088 5698488 1619104 5698544 1619448 5698520 -1619064 5698240 1619040 5698280 1619088 5698488 1619448 5698520 -1619064 5698200 1619064 5698240 1619448 5698520 1619024 5698144 -1619104 5698544 1619096 5698576 1619448 5698520 1619088 5698488 -1619064 5698240 1619088 5698488 1619448 5698520 1619064 5698200 -1621944 5698008 1619448 5698520 1619136 5699704 1622064 5698152 -1619136 5699704 1619152 5699792 1622064 5698152 1619448 5698520 -1619152 5699792 1621576 5701360 1622064 5698152 1619448 5698520 -1621944 5698008 1621936 5697864 1619448 5698520 1622064 5698152 -1619448 5698520 1619096 5698576 1619136 5699704 1619152 5699792 -1622064 5698152 1621944 5698008 1619448 5698520 1619152 5699792 -1619136 5699704 1619448 5698520 1619096 5698576 1619080 5698608 -1619136 5699704 1619448 5698520 1619080 5698608 1618928 5698864 -1619080 5698608 1618936 5698840 1618928 5698864 1619448 5698520 -1618928 5698864 1619136 5699704 1619448 5698520 1618936 5698840 -1619080 5698608 1619040 5698640 1618936 5698840 1619448 5698520 -1619136 5699704 1619448 5698520 1618928 5698864 1618896 5698904 -1619136 5699704 1619152 5699792 1619448 5698520 1618928 5698864 -1619448 5698520 1619104 5698544 1619096 5698576 1619080 5698608 -1619448 5698520 1619096 5698576 1619080 5698608 1618936 5698840 -1621936 5697864 1618576 5696872 1619024 5698144 1619448 5698520 -1619448 5698520 1619480 5698472 1619024 5698144 1619064 5698200 -1619448 5698520 1619480 5698472 1619064 5698200 1619064 5698240 -1619480 5698472 1619024 5698144 1619064 5698200 1619064 5698240 -1619448 5698520 1621936 5697864 1619480 5698472 1619064 5698240 -1619480 5698472 1621936 5697864 1619024 5698144 1619064 5698200 -1621936 5697864 1619480 5698472 1619448 5698520 1621944 5698008 -1619448 5698520 1622064 5698152 1621944 5698008 1619480 5698472 -1619480 5698472 1619064 5698240 1619448 5698520 1622064 5698152 -1621936 5697864 1619024 5698144 1619480 5698472 1621944 5698008 -1621944 5698008 1621936 5697864 1619480 5698472 1622064 5698152 -1619448 5698520 1619480 5698472 1619064 5698240 1619088 5698488 -1619064 5698240 1619040 5698280 1619088 5698488 1619480 5698472 -1619448 5698520 1619480 5698472 1619088 5698488 1619104 5698544 -1619480 5698472 1619064 5698200 1619064 5698240 1619088 5698488 -1619448 5698520 1622064 5698152 1619480 5698472 1619088 5698488 -1619448 5698520 1619152 5699792 1622064 5698152 1619480 5698472 -1619024 5698144 1619480 5698472 1621936 5697864 1618576 5696872 -1619024 5698144 1619064 5698200 1619480 5698472 1618576 5696872 -1619480 5698472 1621944 5698008 1621936 5697864 1618576 5696872 -1621936 5697864 1618552 5696712 1618576 5696872 1619480 5698472 -1619024 5698144 1619480 5698472 1618576 5696872 1618560 5697104 -1621936 5697864 1619568 5698416 1619480 5698472 1621944 5698008 -1619568 5698416 1618576 5696872 1619480 5698472 1621944 5698008 -1621936 5697864 1618576 5696872 1619568 5698416 1621944 5698008 -1618576 5696872 1619568 5698416 1621936 5697864 1618552 5696712 -1619480 5698472 1622064 5698152 1621944 5698008 1619568 5698416 -1619480 5698472 1619448 5698520 1622064 5698152 1619568 5698416 -1619480 5698472 1619448 5698520 1619568 5698416 1618576 5696872 -1621944 5698008 1621936 5697864 1619568 5698416 1622064 5698152 -1622064 5698152 1621944 5698008 1619568 5698416 1619448 5698520 -1619448 5698520 1619152 5699792 1622064 5698152 1619568 5698416 -1619448 5698520 1619136 5699704 1619152 5699792 1619568 5698416 -1619152 5699792 1621576 5701360 1622064 5698152 1619568 5698416 -1619448 5698520 1619136 5699704 1619568 5698416 1619480 5698472 -1619448 5698520 1618928 5698864 1619136 5699704 1619568 5698416 -1622064 5698152 1621944 5698008 1619568 5698416 1619152 5699792 -1619152 5699792 1622064 5698152 1619568 5698416 1619136 5699704 -1619480 5698472 1619568 5698416 1618576 5696872 1619024 5698144 -1619480 5698472 1619568 5698416 1619024 5698144 1619064 5698200 -1619480 5698472 1619568 5698416 1619064 5698200 1619064 5698240 -1619480 5698472 1619448 5698520 1619568 5698416 1619064 5698200 -1619568 5698416 1621936 5697864 1618576 5696872 1619024 5698144 -1618576 5696872 1618560 5697104 1619024 5698144 1619568 5698416 -1618576 5696872 1618560 5697104 1619568 5698416 1621936 5697864 -1618560 5697104 1618672 5697656 1619024 5698144 1619568 5698416 -1618560 5697104 1618608 5697568 1618672 5697656 1619568 5698416 -1618672 5697656 1618872 5698008 1619024 5698144 1619568 5698416 -1618560 5697104 1618672 5697656 1619568 5698416 1618576 5696872 -1619568 5698416 1618672 5697656 1619024 5698144 1619064 5698200 -1619568 5698416 1619664 5698400 1621944 5698008 1621936 5697864 -1619568 5698416 1622064 5698152 1619664 5698400 1621936 5697864 -1619568 5698416 1619664 5698400 1621936 5697864 1618576 5696872 -1619664 5698400 1621944 5698008 1621936 5697864 1618576 5696872 -1619568 5698416 1619664 5698400 1618576 5696872 1618560 5697104 -1619568 5698416 1622064 5698152 1619664 5698400 1618560 5697104 -1619664 5698400 1621936 5697864 1618576 5696872 1618560 5697104 -1619664 5698400 1622064 5698152 1621944 5698008 1621936 5697864 -1621936 5697864 1618552 5696712 1618576 5696872 1619664 5698400 -1619568 5698416 1619664 5698400 1618560 5697104 1618672 5697656 -1618560 5697104 1618608 5697568 1618672 5697656 1619664 5698400 -1619664 5698400 1618576 5696872 1618560 5697104 1618672 5697656 -1619568 5698416 1622064 5698152 1619664 5698400 1618672 5697656 -1619568 5698416 1619664 5698400 1618672 5697656 1619024 5698144 -1619568 5698416 1622064 5698152 1619664 5698400 1619024 5698144 -1618672 5697656 1618872 5698008 1619024 5698144 1619664 5698400 -1619664 5698400 1618560 5697104 1618672 5697656 1619024 5698144 -1622064 5698152 1619664 5698400 1619568 5698416 1619152 5699792 -1622064 5698152 1619664 5698400 1619152 5699792 1621576 5701360 -1622064 5698152 1619664 5698400 1621576 5701360 1622296 5698320 -1619152 5699792 1619152 5699888 1621576 5701360 1619664 5698400 -1619664 5698400 1619024 5698144 1619568 5698416 1619152 5699792 -1622064 5698152 1621944 5698008 1619664 5698400 1621576 5701360 -1619664 5698400 1619568 5698416 1619152 5699792 1621576 5701360 -1619568 5698416 1619136 5699704 1619152 5699792 1619664 5698400 -1619568 5698416 1619448 5698520 1619136 5699704 1619664 5698400 -1619568 5698416 1619480 5698472 1619448 5698520 1619664 5698400 -1619448 5698520 1618928 5698864 1619136 5699704 1619664 5698400 -1619568 5698416 1619448 5698520 1619664 5698400 1619024 5698144 -1619152 5699792 1621576 5701360 1619664 5698400 1619136 5699704 -1619136 5699704 1619152 5699792 1619664 5698400 1619448 5698520 -1619568 5698416 1619664 5698400 1619024 5698144 1619064 5698200 -1619664 5698400 1619752 5698384 1621936 5697864 1618576 5696872 -1619664 5698400 1619752 5698384 1618576 5696872 1618560 5697104 -1619752 5698384 1621936 5697864 1618576 5696872 1618560 5697104 -1619664 5698400 1619752 5698384 1618560 5697104 1618672 5697656 -1618560 5697104 1618608 5697568 1618672 5697656 1619752 5698384 -1619752 5698384 1618576 5696872 1618560 5697104 1618672 5697656 -1621944 5698008 1619752 5698384 1619664 5698400 1622064 5698152 -1619664 5698400 1622064 5698152 1619752 5698384 1618672 5697656 -1619664 5698400 1621576 5701360 1622064 5698152 1619752 5698384 -1621576 5701360 1622296 5698320 1622064 5698152 1619752 5698384 -1619664 5698400 1619152 5699792 1621576 5701360 1619752 5698384 -1619152 5699792 1619152 5699888 1621576 5701360 1619752 5698384 -1622064 5698152 1621944 5698008 1619752 5698384 1621576 5701360 -1619664 5698400 1619152 5699792 1619752 5698384 1618672 5697656 -1621576 5701360 1622064 5698152 1619752 5698384 1619152 5699792 -1619752 5698384 1621944 5698008 1621936 5697864 1618576 5696872 -1621944 5698008 1621936 5697864 1619752 5698384 1622064 5698152 -1621936 5697864 1618552 5696712 1618576 5696872 1619752 5698384 -1619664 5698400 1619752 5698384 1618672 5697656 1619024 5698144 -1619752 5698384 1618560 5697104 1618672 5697656 1619024 5698144 -1619664 5698400 1619152 5699792 1619752 5698384 1619024 5698144 -1619664 5698400 1619752 5698384 1619024 5698144 1619568 5698416 -1618672 5697656 1618872 5698008 1619024 5698144 1619752 5698384 -1619664 5698400 1619136 5699704 1619152 5699792 1619752 5698384 -1619152 5699792 1621576 5701360 1619752 5698384 1619136 5699704 -1619664 5698400 1619136 5699704 1619752 5698384 1619024 5698144 -1619664 5698400 1619448 5698520 1619136 5699704 1619752 5698384 -1619664 5698400 1619568 5698416 1619448 5698520 1619752 5698384 -1619448 5698520 1618928 5698864 1619136 5699704 1619752 5698384 -1619664 5698400 1619448 5698520 1619752 5698384 1619024 5698144 -1619136 5699704 1619152 5699792 1619752 5698384 1619448 5698520 -1619752 5698384 1619848 5698352 1618576 5696872 1618560 5697104 -1619752 5698384 1619848 5698352 1618560 5697104 1618672 5697656 -1618560 5697104 1618608 5697568 1618672 5697656 1619848 5698352 -1619848 5698352 1618576 5696872 1618560 5697104 1618672 5697656 -1619752 5698384 1619848 5698352 1618672 5697656 1619024 5698144 -1619848 5698352 1618560 5697104 1618672 5697656 1619024 5698144 -1621936 5697864 1619848 5698352 1619752 5698384 1621944 5698008 -1619752 5698384 1621944 5698008 1619848 5698352 1619024 5698144 -1619752 5698384 1622064 5698152 1621944 5698008 1619848 5698352 -1619752 5698384 1621576 5701360 1622064 5698152 1619848 5698352 -1621576 5701360 1622296 5698320 1622064 5698152 1619848 5698352 -1619752 5698384 1619152 5699792 1621576 5701360 1619848 5698352 -1619152 5699792 1619152 5699888 1621576 5701360 1619848 5698352 -1619752 5698384 1619136 5699704 1619152 5699792 1619848 5698352 -1621576 5701360 1622064 5698152 1619848 5698352 1619152 5699792 -1619152 5699792 1621576 5701360 1619848 5698352 1619136 5699704 -1621944 5698008 1621936 5697864 1619848 5698352 1622064 5698152 -1619752 5698384 1619136 5699704 1619848 5698352 1619024 5698144 -1622064 5698152 1621944 5698008 1619848 5698352 1621576 5701360 -1619848 5698352 1621936 5697864 1618576 5696872 1618560 5697104 -1621936 5697864 1618576 5696872 1619848 5698352 1621944 5698008 -1618576 5696872 1619848 5698352 1621936 5697864 1618552 5696712 -1618576 5696872 1618560 5697104 1619848 5698352 1618552 5696712 -1619848 5698352 1621944 5698008 1621936 5697864 1618552 5696712 -1621936 5697864 1622016 5697816 1618552 5696712 1619848 5698352 -1618672 5697656 1618872 5698008 1619024 5698144 1619848 5698352 -1619752 5698384 1619848 5698352 1619024 5698144 1619664 5698400 -1619848 5698352 1618672 5697656 1619024 5698144 1619664 5698400 -1619752 5698384 1619136 5699704 1619848 5698352 1619664 5698400 -1619024 5698144 1619568 5698416 1619664 5698400 1619848 5698352 -1619752 5698384 1619448 5698520 1619136 5699704 1619848 5698352 -1621944 5698008 1619888 5698344 1619848 5698352 1622064 5698152 -1619848 5698352 1621576 5701360 1622064 5698152 1619888 5698344 -1621576 5701360 1622296 5698320 1622064 5698152 1619888 5698344 -1619848 5698352 1619152 5699792 1621576 5701360 1619888 5698344 -1619152 5699792 1619152 5699888 1621576 5701360 1619888 5698344 -1619848 5698352 1619136 5699704 1619152 5699792 1619888 5698344 -1619848 5698352 1619752 5698384 1619136 5699704 1619888 5698344 -1619152 5699792 1621576 5701360 1619888 5698344 1619136 5699704 -1619136 5699704 1619152 5699792 1619888 5698344 1619752 5698384 -1622064 5698152 1621944 5698008 1619888 5698344 1621576 5701360 -1621576 5701360 1622064 5698152 1619888 5698344 1619152 5699792 -1619888 5698344 1621936 5697864 1619848 5698352 1619752 5698384 -1619848 5698352 1619888 5698344 1621936 5697864 1618552 5696712 -1619848 5698352 1619752 5698384 1619888 5698344 1618552 5696712 -1619888 5698344 1621944 5698008 1621936 5697864 1618552 5696712 -1621944 5698008 1621936 5697864 1619888 5698344 1622064 5698152 -1621936 5697864 1622016 5697816 1618552 5696712 1619888 5698344 -1619848 5698352 1619888 5698344 1618552 5696712 1618576 5696872 -1619848 5698352 1619888 5698344 1618576 5696872 1618560 5697104 -1619848 5698352 1619888 5698344 1618560 5697104 1618672 5697656 -1618560 5697104 1618608 5697568 1618672 5697656 1619888 5698344 -1619848 5698352 1619888 5698344 1618672 5697656 1619024 5698144 -1619888 5698344 1618560 5697104 1618672 5697656 1619024 5698144 -1619848 5698352 1619888 5698344 1619024 5698144 1619664 5698400 -1619888 5698344 1618576 5696872 1618560 5697104 1618672 5697656 -1619848 5698352 1619752 5698384 1619888 5698344 1619024 5698144 -1619888 5698344 1621936 5697864 1618552 5696712 1618576 5696872 -1619888 5698344 1618552 5696712 1618576 5696872 1618560 5697104 -1618672 5697656 1618872 5698008 1619024 5698144 1619888 5698344 -1619752 5698384 1619448 5698520 1619136 5699704 1619888 5698344 -1619888 5698344 1619968 5698304 1618552 5696712 1618576 5696872 -1621936 5697864 1619968 5698304 1619888 5698344 1621944 5698008 -1619888 5698344 1621944 5698008 1619968 5698304 1618576 5696872 -1619888 5698344 1622064 5698152 1621944 5698008 1619968 5698304 -1619888 5698344 1621576 5701360 1622064 5698152 1619968 5698304 -1621576 5701360 1622296 5698320 1622064 5698152 1619968 5698304 -1619888 5698344 1619152 5699792 1621576 5701360 1619968 5698304 -1619152 5699792 1619152 5699888 1621576 5701360 1619968 5698304 -1619888 5698344 1619136 5699704 1619152 5699792 1619968 5698304 -1621576 5701360 1622064 5698152 1619968 5698304 1619152 5699792 -1621944 5698008 1621936 5697864 1619968 5698304 1622064 5698152 -1619888 5698344 1619152 5699792 1619968 5698304 1618576 5696872 -1622064 5698152 1621944 5698008 1619968 5698304 1621576 5701360 -1619968 5698304 1621936 5697864 1618552 5696712 1618576 5696872 -1621936 5697864 1618552 5696712 1619968 5698304 1621944 5698008 -1618552 5696712 1619968 5698304 1621936 5697864 1622016 5697816 -1619888 5698344 1619968 5698304 1618576 5696872 1618560 5697104 -1619888 5698344 1619968 5698304 1618560 5697104 1618672 5697656 -1618560 5697104 1618608 5697568 1618672 5697656 1619968 5698304 -1619888 5698344 1619968 5698304 1618672 5697656 1619024 5698144 -1619888 5698344 1619968 5698304 1619024 5698144 1619848 5698352 -1619968 5698304 1618672 5697656 1619024 5698144 1619848 5698352 -1619024 5698144 1619664 5698400 1619848 5698352 1619968 5698304 -1619968 5698304 1618560 5697104 1618672 5697656 1619024 5698144 -1619968 5698304 1618552 5696712 1618576 5696872 1618560 5697104 -1619888 5698344 1619152 5699792 1619968 5698304 1619848 5698352 -1619968 5698304 1618576 5696872 1618560 5697104 1618672 5697656 -1618672 5697656 1618872 5698008 1619024 5698144 1619968 5698304 -1619968 5698304 1620064 5698256 1618552 5696712 1618576 5696872 -1619968 5698304 1620064 5698256 1618576 5696872 1618560 5697104 -1620064 5698256 1618552 5696712 1618576 5696872 1618560 5697104 -1619968 5698304 1621936 5697864 1620064 5698256 1618560 5697104 -1621936 5697864 1620064 5698256 1619968 5698304 1621944 5698008 -1619968 5698304 1622064 5698152 1621944 5698008 1620064 5698256 -1619968 5698304 1621576 5701360 1622064 5698152 1620064 5698256 -1621576 5701360 1622296 5698320 1622064 5698152 1620064 5698256 -1619968 5698304 1619152 5699792 1621576 5701360 1620064 5698256 -1619152 5699792 1619152 5699888 1621576 5701360 1620064 5698256 -1619968 5698304 1619888 5698344 1619152 5699792 1620064 5698256 -1622064 5698152 1621944 5698008 1620064 5698256 1621576 5701360 -1621576 5701360 1622064 5698152 1620064 5698256 1619152 5699792 -1620064 5698256 1618560 5697104 1619968 5698304 1619152 5699792 -1621944 5698008 1621936 5697864 1620064 5698256 1622064 5698152 -1620064 5698256 1621936 5697864 1618552 5696712 1618576 5696872 -1621936 5697864 1618552 5696712 1620064 5698256 1621944 5698008 -1618552 5696712 1620064 5698256 1621936 5697864 1622016 5697816 -1619968 5698304 1620064 5698256 1618560 5697104 1618672 5697656 -1618560 5697104 1618608 5697568 1618672 5697656 1620064 5698256 -1619968 5698304 1620064 5698256 1618672 5697656 1619024 5698144 -1619968 5698304 1620064 5698256 1619024 5698144 1619848 5698352 -1620064 5698256 1618576 5696872 1618560 5697104 1618672 5697656 -1619968 5698304 1619152 5699792 1620064 5698256 1619024 5698144 -1620064 5698256 1618560 5697104 1618672 5697656 1619024 5698144 -1618672 5697656 1618872 5698008 1619024 5698144 1620064 5698256 -1621944 5698008 1620104 5698248 1620064 5698256 1622064 5698152 -1620064 5698256 1621576 5701360 1622064 5698152 1620104 5698248 -1621576 5701360 1622296 5698320 1622064 5698152 1620104 5698248 -1621576 5701360 1622296 5698320 1620104 5698248 1620064 5698256 -1620064 5698256 1619152 5699792 1621576 5701360 1620104 5698248 -1619152 5699792 1619152 5699888 1621576 5701360 1620104 5698248 -1620064 5698256 1619968 5698304 1619152 5699792 1620104 5698248 -1619968 5698304 1619888 5698344 1619152 5699792 1620104 5698248 -1621576 5701360 1622296 5698320 1620104 5698248 1619152 5699792 -1619152 5699792 1621576 5701360 1620104 5698248 1619968 5698304 -1622064 5698152 1621944 5698008 1620104 5698248 1622296 5698320 -1620104 5698248 1621936 5697864 1620064 5698256 1619968 5698304 -1620064 5698256 1620104 5698248 1621936 5697864 1618552 5696712 -1620064 5698256 1620104 5698248 1618552 5696712 1618576 5696872 -1620064 5698256 1620104 5698248 1618576 5696872 1618560 5697104 -1620064 5698256 1619968 5698304 1620104 5698248 1618576 5696872 -1620104 5698248 1621936 5697864 1618552 5696712 1618576 5696872 -1620104 5698248 1621944 5698008 1621936 5697864 1618552 5696712 -1621944 5698008 1621936 5697864 1620104 5698248 1622064 5698152 -1621936 5697864 1622016 5697816 1618552 5696712 1620104 5698248 -1621576 5701360 1621712 5701344 1622296 5698320 1620104 5698248 -1622296 5698320 1620136 5698248 1620104 5698248 1621576 5701360 -1620104 5698248 1619152 5699792 1621576 5701360 1620136 5698248 -1621576 5701360 1622296 5698320 1620136 5698248 1619152 5699792 -1619152 5699792 1619152 5699888 1621576 5701360 1620136 5698248 -1620104 5698248 1619968 5698304 1619152 5699792 1620136 5698248 -1620104 5698248 1620064 5698256 1619968 5698304 1620136 5698248 -1619968 5698304 1619888 5698344 1619152 5699792 1620136 5698248 -1619888 5698344 1619136 5699704 1619152 5699792 1620136 5698248 -1619152 5699792 1621576 5701360 1620136 5698248 1619888 5698344 -1619968 5698304 1619888 5698344 1620136 5698248 1620064 5698256 -1620104 5698248 1620136 5698248 1622064 5698152 1621944 5698008 -1620136 5698248 1621944 5698008 1620104 5698248 1620064 5698256 -1620104 5698248 1620136 5698248 1621944 5698008 1621936 5697864 -1620136 5698248 1622064 5698152 1621944 5698008 1621936 5697864 -1620104 5698248 1620136 5698248 1621936 5697864 1618552 5696712 -1620104 5698248 1620136 5698248 1618552 5696712 1618576 5696872 -1620104 5698248 1620136 5698248 1618576 5696872 1620064 5698256 -1620136 5698248 1621936 5697864 1618552 5696712 1618576 5696872 -1620104 5698248 1620064 5698256 1620136 5698248 1618576 5696872 -1620136 5698248 1621944 5698008 1621936 5697864 1618552 5696712 -1620136 5698248 1622296 5698320 1622064 5698152 1621944 5698008 -1622296 5698320 1622064 5698152 1620136 5698248 1621576 5701360 -1621936 5697864 1622016 5697816 1618552 5696712 1620136 5698248 -1622296 5698320 1620136 5698248 1621576 5701360 1621712 5701344 -1621576 5701360 1620184 5698288 1620136 5698248 1619152 5699792 -1621576 5701360 1620184 5698288 1619152 5699792 1619152 5699888 -1620184 5698288 1620136 5698248 1619152 5699792 1619152 5699888 -1620136 5698248 1619888 5698344 1619152 5699792 1620184 5698288 -1619152 5699792 1619152 5699888 1620184 5698288 1619888 5698344 -1619888 5698344 1619136 5699704 1619152 5699792 1620184 5698288 -1619152 5699792 1619152 5699888 1620184 5698288 1619136 5699704 -1619888 5698344 1619752 5698384 1619136 5699704 1620184 5698288 -1620136 5698248 1619968 5698304 1619888 5698344 1620184 5698288 -1619888 5698344 1619136 5699704 1620184 5698288 1619968 5698304 -1620136 5698248 1620064 5698256 1619968 5698304 1620184 5698288 -1620136 5698248 1620104 5698248 1620064 5698256 1620184 5698288 -1619968 5698304 1619888 5698344 1620184 5698288 1620064 5698256 -1620064 5698256 1619968 5698304 1620184 5698288 1620104 5698248 -1620184 5698288 1622296 5698320 1620136 5698248 1620104 5698248 -1620136 5698248 1620184 5698288 1622296 5698320 1622064 5698152 -1620136 5698248 1620184 5698288 1622064 5698152 1621944 5698008 -1620136 5698248 1620184 5698288 1621944 5698008 1621936 5697864 -1620136 5698248 1620184 5698288 1621936 5697864 1618552 5696712 -1620184 5698288 1622064 5698152 1621944 5698008 1621936 5697864 -1620136 5698248 1620104 5698248 1620184 5698288 1621936 5697864 -1620184 5698288 1622296 5698320 1622064 5698152 1621944 5698008 -1620184 5698288 1621576 5701360 1622296 5698320 1622064 5698152 -1621576 5701360 1622296 5698320 1620184 5698288 1619152 5699888 -1621576 5701360 1620184 5698288 1619152 5699888 1619152 5700320 -1622296 5698320 1620184 5698288 1621576 5701360 1621712 5701344 -1620184 5698288 1620224 5698360 1622296 5698320 1622064 5698152 -1620184 5698288 1620224 5698360 1622064 5698152 1621944 5698008 -1620184 5698288 1620224 5698360 1621944 5698008 1621936 5697864 -1620184 5698288 1620224 5698360 1621936 5697864 1620136 5698248 -1620224 5698360 1622064 5698152 1621944 5698008 1621936 5697864 -1620224 5698360 1622296 5698320 1622064 5698152 1621944 5698008 -1620184 5698288 1621576 5701360 1620224 5698360 1621936 5697864 -1621576 5701360 1620224 5698360 1620184 5698288 1619152 5699888 -1620184 5698288 1619152 5699792 1619152 5699888 1620224 5698360 -1620184 5698288 1619136 5699704 1619152 5699792 1620224 5698360 -1619152 5699792 1619152 5699888 1620224 5698360 1619136 5699704 -1620184 5698288 1619888 5698344 1619136 5699704 1620224 5698360 -1619136 5699704 1619152 5699792 1620224 5698360 1619888 5698344 -1619888 5698344 1619752 5698384 1619136 5699704 1620224 5698360 -1619136 5699704 1619152 5699792 1620224 5698360 1619752 5698384 -1619888 5698344 1619848 5698352 1619752 5698384 1620224 5698360 -1619888 5698344 1619752 5698384 1620224 5698360 1620184 5698288 -1620184 5698288 1619968 5698304 1619888 5698344 1620224 5698360 -1619888 5698344 1619752 5698384 1620224 5698360 1619968 5698304 -1620184 5698288 1620064 5698256 1619968 5698304 1620224 5698360 -1619968 5698304 1619888 5698344 1620224 5698360 1620064 5698256 -1620184 5698288 1620104 5698248 1620064 5698256 1620224 5698360 -1620224 5698360 1621936 5697864 1620184 5698288 1620064 5698256 -1619152 5699888 1621576 5701360 1620224 5698360 1619152 5699792 -1620224 5698360 1621576 5701360 1622296 5698320 1622064 5698152 -1621576 5701360 1622296 5698320 1620224 5698360 1619152 5699888 -1619752 5698384 1619448 5698520 1619136 5699704 1620224 5698360 -1621576 5701360 1620224 5698360 1619152 5699888 1619152 5700320 -1622296 5698320 1620224 5698360 1621576 5701360 1621712 5701344 -1620224 5698360 1620248 5698392 1622296 5698320 1622064 5698152 -1620224 5698360 1620248 5698392 1622064 5698152 1621944 5698008 -1620224 5698360 1620248 5698392 1621944 5698008 1621936 5697864 -1620224 5698360 1620248 5698392 1621936 5697864 1620184 5698288 -1621936 5697864 1620136 5698248 1620184 5698288 1620248 5698392 -1620248 5698392 1621944 5698008 1621936 5697864 1620184 5698288 -1620248 5698392 1622064 5698152 1621944 5698008 1621936 5697864 -1620248 5698392 1622296 5698320 1622064 5698152 1621944 5698008 -1620224 5698360 1621576 5701360 1620248 5698392 1620184 5698288 -1621576 5701360 1620248 5698392 1620224 5698360 1619152 5699888 -1620224 5698360 1619152 5699792 1619152 5699888 1620248 5698392 -1620224 5698360 1619136 5699704 1619152 5699792 1620248 5698392 -1620224 5698360 1619752 5698384 1619136 5699704 1620248 5698392 -1619136 5699704 1619152 5699792 1620248 5698392 1619752 5698384 -1620224 5698360 1619888 5698344 1619752 5698384 1620248 5698392 -1619752 5698384 1619136 5699704 1620248 5698392 1619888 5698344 -1619888 5698344 1619848 5698352 1619752 5698384 1620248 5698392 -1620224 5698360 1619968 5698304 1619888 5698344 1620248 5698392 -1619888 5698344 1619752 5698384 1620248 5698392 1619968 5698304 -1620224 5698360 1620064 5698256 1619968 5698304 1620248 5698392 -1619152 5699792 1619152 5699888 1620248 5698392 1619136 5699704 -1620248 5698392 1620184 5698288 1620224 5698360 1619968 5698304 -1619152 5699888 1621576 5701360 1620248 5698392 1619152 5699792 -1620248 5698392 1621576 5701360 1622296 5698320 1622064 5698152 -1621576 5701360 1622296 5698320 1620248 5698392 1619152 5699888 -1619752 5698384 1619448 5698520 1619136 5699704 1620248 5698392 -1621576 5701360 1620248 5698392 1619152 5699888 1619152 5700320 -1622296 5698320 1620248 5698392 1621576 5701360 1621712 5701344 -1619152 5699888 1620248 5698424 1620248 5698392 1619152 5699792 -1620248 5698392 1619136 5699704 1619152 5699792 1620248 5698424 -1620248 5698392 1619752 5698384 1619136 5699704 1620248 5698424 -1620248 5698392 1619888 5698344 1619752 5698384 1620248 5698424 -1619752 5698384 1619136 5699704 1620248 5698424 1619888 5698344 -1619888 5698344 1619848 5698352 1619752 5698384 1620248 5698424 -1619888 5698344 1619848 5698352 1620248 5698424 1620248 5698392 -1619752 5698384 1619136 5699704 1620248 5698424 1619848 5698352 -1620248 5698392 1619968 5698304 1619888 5698344 1620248 5698424 -1619888 5698344 1619848 5698352 1620248 5698424 1619968 5698304 -1620248 5698392 1620224 5698360 1619968 5698304 1620248 5698424 -1619968 5698304 1619888 5698344 1620248 5698424 1620224 5698360 -1620224 5698360 1620064 5698256 1619968 5698304 1620248 5698424 -1619136 5699704 1619152 5699792 1620248 5698424 1619752 5698384 -1619152 5699792 1619152 5699888 1620248 5698424 1619136 5699704 -1620248 5698424 1621576 5701360 1620248 5698392 1620224 5698360 -1620248 5698392 1620248 5698424 1621576 5701360 1622296 5698320 -1620248 5698392 1620248 5698424 1622296 5698320 1622064 5698152 -1620248 5698392 1620248 5698424 1622064 5698152 1621944 5698008 -1620248 5698392 1620248 5698424 1621944 5698008 1621936 5697864 -1620248 5698424 1622296 5698320 1622064 5698152 1621944 5698008 -1620248 5698392 1620224 5698360 1620248 5698424 1621944 5698008 -1620248 5698424 1621576 5701360 1622296 5698320 1622064 5698152 -1620248 5698424 1619152 5699888 1621576 5701360 1622296 5698320 -1619152 5699888 1621576 5701360 1620248 5698424 1619152 5699792 -1619752 5698384 1619448 5698520 1619136 5699704 1620248 5698424 -1619752 5698384 1619448 5698520 1620248 5698424 1619848 5698352 -1619448 5698520 1618928 5698864 1619136 5699704 1620248 5698424 -1619136 5699704 1619152 5699792 1620248 5698424 1619448 5698520 -1619752 5698384 1619664 5698400 1619448 5698520 1620248 5698424 -1621576 5701360 1620248 5698424 1619152 5699888 1619152 5700320 -1621576 5701360 1621712 5701344 1622296 5698320 1620248 5698424 -1620248 5698424 1620224 5698488 1621576 5701360 1622296 5698320 -1620248 5698424 1620224 5698488 1622296 5698320 1622064 5698152 -1620248 5698424 1620224 5698488 1622064 5698152 1621944 5698008 -1620224 5698488 1621576 5701360 1622296 5698320 1622064 5698152 -1620248 5698424 1619152 5699888 1620224 5698488 1622064 5698152 -1619152 5699888 1620224 5698488 1620248 5698424 1619152 5699792 -1620248 5698424 1619136 5699704 1619152 5699792 1620224 5698488 -1620248 5698424 1619448 5698520 1619136 5699704 1620224 5698488 -1619448 5698520 1618928 5698864 1619136 5699704 1620224 5698488 -1619136 5699704 1619152 5699792 1620224 5698488 1619448 5698520 -1620224 5698488 1622064 5698152 1620248 5698424 1619448 5698520 -1619152 5699792 1619152 5699888 1620224 5698488 1619136 5699704 -1620224 5698488 1619152 5699888 1621576 5701360 1622296 5698320 -1619152 5699888 1621576 5701360 1620224 5698488 1619152 5699792 -1620248 5698424 1619752 5698384 1619448 5698520 1620224 5698488 -1620248 5698424 1619848 5698352 1619752 5698384 1620224 5698488 -1620248 5698424 1619888 5698344 1619848 5698352 1620224 5698488 -1620248 5698424 1619968 5698304 1619888 5698344 1620224 5698488 -1619848 5698352 1619752 5698384 1620224 5698488 1619888 5698344 -1619888 5698344 1619848 5698352 1620224 5698488 1619968 5698304 -1620248 5698424 1620224 5698360 1619968 5698304 1620224 5698488 -1619968 5698304 1619888 5698344 1620224 5698488 1620224 5698360 -1620248 5698424 1620248 5698392 1620224 5698360 1620224 5698488 -1620224 5698360 1620064 5698256 1619968 5698304 1620224 5698488 -1619448 5698520 1619136 5699704 1620224 5698488 1619752 5698384 -1620248 5698424 1620224 5698360 1620224 5698488 1622064 5698152 -1619752 5698384 1619448 5698520 1620224 5698488 1619848 5698352 -1619752 5698384 1619664 5698400 1619448 5698520 1620224 5698488 -1621576 5701360 1620224 5698488 1619152 5699888 1619152 5700320 -1621576 5701360 1621712 5701344 1622296 5698320 1620224 5698488 -1619136 5699704 1620184 5698536 1620224 5698488 1619448 5698520 -1619136 5699704 1620184 5698536 1619448 5698520 1618928 5698864 -1620224 5698488 1619752 5698384 1619448 5698520 1620184 5698536 -1619448 5698520 1619136 5699704 1620184 5698536 1619752 5698384 -1620224 5698488 1620184 5698536 1619152 5699792 1619152 5699888 -1620184 5698536 1619152 5699888 1620224 5698488 1619752 5698384 -1620224 5698488 1620184 5698536 1619152 5699888 1621576 5701360 -1620184 5698536 1619152 5699792 1619152 5699888 1621576 5701360 -1620224 5698488 1620184 5698536 1621576 5701360 1622296 5698320 -1620224 5698488 1620184 5698536 1622296 5698320 1622064 5698152 -1620224 5698488 1619752 5698384 1620184 5698536 1622296 5698320 -1620184 5698536 1619152 5699888 1621576 5701360 1622296 5698320 -1620184 5698536 1619136 5699704 1619152 5699792 1619152 5699888 -1619136 5699704 1619152 5699792 1620184 5698536 1619448 5698520 -1620224 5698488 1619848 5698352 1619752 5698384 1620184 5698536 -1620224 5698488 1619888 5698344 1619848 5698352 1620184 5698536 -1620224 5698488 1619968 5698304 1619888 5698344 1620184 5698536 -1620224 5698488 1620224 5698360 1619968 5698304 1620184 5698536 -1619888 5698344 1619848 5698352 1620184 5698536 1619968 5698304 -1619968 5698304 1619888 5698344 1620184 5698536 1620224 5698360 -1620224 5698488 1620248 5698424 1620224 5698360 1620184 5698536 -1620224 5698360 1620064 5698256 1619968 5698304 1620184 5698536 -1619752 5698384 1619448 5698520 1620184 5698536 1619848 5698352 -1620224 5698488 1620224 5698360 1620184 5698536 1622296 5698320 -1619848 5698352 1619752 5698384 1620184 5698536 1619888 5698344 -1619752 5698384 1619664 5698400 1619448 5698520 1620184 5698536 -1619152 5699888 1619152 5700320 1621576 5701360 1620184 5698536 -1621576 5701360 1621712 5701344 1622296 5698320 1620184 5698536 -1619136 5699704 1620144 5698568 1619448 5698520 1618928 5698864 -1619448 5698520 1620144 5698568 1620184 5698536 1619752 5698384 -1620184 5698536 1619848 5698352 1619752 5698384 1620144 5698568 -1619752 5698384 1619448 5698520 1620144 5698568 1619848 5698352 -1620144 5698568 1619136 5699704 1620184 5698536 1619848 5698352 -1620184 5698536 1620144 5698568 1619136 5699704 1619152 5699792 -1620184 5698536 1620144 5698568 1619152 5699792 1619152 5699888 -1620184 5698536 1620144 5698568 1619152 5699888 1621576 5701360 -1620184 5698536 1620144 5698568 1621576 5701360 1622296 5698320 -1620144 5698568 1619152 5699792 1619152 5699888 1621576 5701360 -1620184 5698536 1619848 5698352 1620144 5698568 1621576 5701360 -1620144 5698568 1619136 5699704 1619152 5699792 1619152 5699888 -1620144 5698568 1619448 5698520 1619136 5699704 1619152 5699792 -1619448 5698520 1619136 5699704 1620144 5698568 1619752 5698384 -1620184 5698536 1619888 5698344 1619848 5698352 1620144 5698568 -1620184 5698536 1619968 5698304 1619888 5698344 1620144 5698568 -1620184 5698536 1620224 5698360 1619968 5698304 1620144 5698568 -1619848 5698352 1619752 5698384 1620144 5698568 1619888 5698344 -1620184 5698536 1619968 5698304 1620144 5698568 1621576 5701360 -1619888 5698344 1619848 5698352 1620144 5698568 1619968 5698304 -1619448 5698520 1620144 5698568 1619752 5698384 1619664 5698400 -1619448 5698520 1620144 5698568 1619664 5698400 1619568 5698416 -1620144 5698568 1619848 5698352 1619752 5698384 1619664 5698400 -1619448 5698520 1619136 5699704 1620144 5698568 1619664 5698400 -1619152 5699888 1619152 5700320 1621576 5701360 1620144 5698568 -1619136 5699704 1620104 5698584 1619448 5698520 1618928 5698864 -1620144 5698568 1620104 5698584 1619136 5699704 1619152 5699792 -1620144 5698568 1620104 5698584 1619152 5699792 1619152 5699888 -1620144 5698568 1620104 5698584 1619152 5699888 1621576 5701360 -1620104 5698584 1619136 5699704 1619152 5699792 1619152 5699888 -1620144 5698568 1619448 5698520 1620104 5698584 1619152 5699888 -1619448 5698520 1620104 5698584 1620144 5698568 1619664 5698400 -1619448 5698520 1619136 5699704 1620104 5698584 1619664 5698400 -1619448 5698520 1620104 5698584 1619664 5698400 1619568 5698416 -1620104 5698584 1619152 5699888 1620144 5698568 1619664 5698400 -1620104 5698584 1619448 5698520 1619136 5699704 1619152 5699792 -1620144 5698568 1619752 5698384 1619664 5698400 1620104 5698584 -1620144 5698568 1619848 5698352 1619752 5698384 1620104 5698584 -1620144 5698568 1619888 5698344 1619848 5698352 1620104 5698584 -1619848 5698352 1619752 5698384 1620104 5698584 1619888 5698344 -1620144 5698568 1619888 5698344 1620104 5698584 1619152 5699888 -1619664 5698400 1619448 5698520 1620104 5698584 1619752 5698384 -1620144 5698568 1619968 5698304 1619888 5698344 1620104 5698584 -1620144 5698568 1620184 5698536 1619968 5698304 1620104 5698584 -1619888 5698344 1619848 5698352 1620104 5698584 1619968 5698304 -1620144 5698568 1619968 5698304 1620104 5698584 1619152 5699888 -1619752 5698384 1619664 5698400 1620104 5698584 1619848 5698352 -1619448 5698520 1620064 5698616 1620104 5698584 1619664 5698400 -1620064 5698616 1619136 5699704 1620104 5698584 1619664 5698400 -1619448 5698520 1619136 5699704 1620064 5698616 1619664 5698400 -1619448 5698520 1620064 5698616 1619664 5698400 1619568 5698416 -1619136 5699704 1620064 5698616 1619448 5698520 1618928 5698864 -1620104 5698584 1619752 5698384 1619664 5698400 1620064 5698616 -1620104 5698584 1619752 5698384 1620064 5698616 1619136 5699704 -1619664 5698400 1619448 5698520 1620064 5698616 1619752 5698384 -1620104 5698584 1620064 5698616 1619136 5699704 1619152 5699792 -1620104 5698584 1619752 5698384 1620064 5698616 1619152 5699792 -1620064 5698616 1619448 5698520 1619136 5699704 1619152 5699792 -1620104 5698584 1620064 5698616 1619152 5699792 1619152 5699888 -1620104 5698584 1619752 5698384 1620064 5698616 1619152 5699888 -1620104 5698584 1620064 5698616 1619152 5699888 1620144 5698568 -1620104 5698584 1619752 5698384 1620064 5698616 1620144 5698568 -1619152 5699888 1621576 5701360 1620144 5698568 1620064 5698616 -1621576 5701360 1620184 5698536 1620144 5698568 1620064 5698616 -1620144 5698568 1620104 5698584 1620064 5698616 1621576 5701360 -1620064 5698616 1619152 5699792 1619152 5699888 1621576 5701360 -1620064 5698616 1619136 5699704 1619152 5699792 1619152 5699888 -1620104 5698584 1619848 5698352 1619752 5698384 1620064 5698616 -1620104 5698584 1619848 5698352 1620064 5698616 1620144 5698568 -1620104 5698584 1619888 5698344 1619848 5698352 1620064 5698616 -1620104 5698584 1619888 5698344 1620064 5698616 1620144 5698568 -1620104 5698584 1619968 5698304 1619888 5698344 1620064 5698616 -1619752 5698384 1619664 5698400 1620064 5698616 1619848 5698352 -1619848 5698352 1619752 5698384 1620064 5698616 1619888 5698344 -1619152 5699888 1619152 5700320 1621576 5701360 1620064 5698616 -1620064 5698616 1619976 5698672 1619136 5699704 1619152 5699792 -1620064 5698616 1619448 5698520 1619976 5698672 1619152 5699792 -1619448 5698520 1619976 5698672 1620064 5698616 1619664 5698400 -1620064 5698616 1619752 5698384 1619664 5698400 1619976 5698672 -1619976 5698672 1619152 5699792 1620064 5698616 1619752 5698384 -1619664 5698400 1619448 5698520 1619976 5698672 1619752 5698384 -1619976 5698672 1619448 5698520 1619136 5699704 1619152 5699792 -1619448 5698520 1619136 5699704 1619976 5698672 1619664 5698400 -1619448 5698520 1619976 5698672 1619664 5698400 1619568 5698416 -1619136 5699704 1619976 5698672 1619448 5698520 1618928 5698864 -1620064 5698616 1619848 5698352 1619752 5698384 1619976 5698672 -1619752 5698384 1619664 5698400 1619976 5698672 1619848 5698352 -1620064 5698616 1619848 5698352 1619976 5698672 1619152 5699792 -1620064 5698616 1619976 5698672 1619152 5699792 1619152 5699888 -1619976 5698672 1619136 5699704 1619152 5699792 1619152 5699888 -1620064 5698616 1619848 5698352 1619976 5698672 1619152 5699888 -1620064 5698616 1619976 5698672 1619152 5699888 1621576 5701360 -1620064 5698616 1619848 5698352 1619976 5698672 1621576 5701360 -1620064 5698616 1619976 5698672 1621576 5701360 1620144 5698568 -1619976 5698672 1619152 5699792 1619152 5699888 1621576 5701360 -1620064 5698616 1619888 5698344 1619848 5698352 1619976 5698672 -1620064 5698616 1619888 5698344 1619976 5698672 1621576 5701360 -1620064 5698616 1620104 5698584 1619888 5698344 1619976 5698672 -1619848 5698352 1619752 5698384 1619976 5698672 1619888 5698344 -1619152 5699888 1619152 5700320 1621576 5701360 1619976 5698672 -1619976 5698672 1619928 5698680 1619136 5699704 1619152 5699792 -1619976 5698672 1619928 5698680 1619152 5699792 1619152 5699888 -1619976 5698672 1619448 5698520 1619928 5698680 1619152 5699792 -1619448 5698520 1619928 5698680 1619976 5698672 1619664 5698400 -1619976 5698672 1619752 5698384 1619664 5698400 1619928 5698680 -1619976 5698672 1619848 5698352 1619752 5698384 1619928 5698680 -1619752 5698384 1619664 5698400 1619928 5698680 1619848 5698352 -1619928 5698680 1619152 5699792 1619976 5698672 1619848 5698352 -1619664 5698400 1619448 5698520 1619928 5698680 1619752 5698384 -1619928 5698680 1619448 5698520 1619136 5699704 1619152 5699792 -1619448 5698520 1619136 5699704 1619928 5698680 1619664 5698400 -1619448 5698520 1619928 5698680 1619664 5698400 1619568 5698416 -1619136 5699704 1619928 5698680 1619448 5698520 1618928 5698864 -1619136 5699704 1619152 5699792 1619928 5698680 1618928 5698864 -1619928 5698680 1619664 5698400 1619448 5698520 1618928 5698864 -1619448 5698520 1618936 5698840 1618928 5698864 1619928 5698680 -1619136 5699704 1619928 5698680 1618928 5698864 1618896 5698904 -1619976 5698672 1619888 5698344 1619848 5698352 1619928 5698680 -1619848 5698352 1619752 5698384 1619928 5698680 1619888 5698344 -1619976 5698672 1619888 5698344 1619928 5698680 1619152 5699792 -1619976 5698672 1620064 5698616 1619888 5698344 1619928 5698680 -1619448 5698520 1619888 5698672 1619928 5698680 1619664 5698400 -1619928 5698680 1619752 5698384 1619664 5698400 1619888 5698672 -1619928 5698680 1619848 5698352 1619752 5698384 1619888 5698672 -1619928 5698680 1619888 5698344 1619848 5698352 1619888 5698672 -1619848 5698352 1619752 5698384 1619888 5698672 1619888 5698344 -1619752 5698384 1619664 5698400 1619888 5698672 1619848 5698352 -1619888 5698672 1618928 5698864 1619928 5698680 1619888 5698344 -1619664 5698400 1619448 5698520 1619888 5698672 1619752 5698384 -1619448 5698520 1618928 5698864 1619888 5698672 1619664 5698400 -1619448 5698520 1619888 5698672 1619664 5698400 1619568 5698416 -1619888 5698672 1619752 5698384 1619664 5698400 1619568 5698416 -1619448 5698520 1618928 5698864 1619888 5698672 1619568 5698416 -1618928 5698864 1619888 5698672 1619448 5698520 1618936 5698840 -1619448 5698520 1619888 5698672 1619568 5698416 1619480 5698472 -1619928 5698680 1619888 5698672 1618928 5698864 1619136 5699704 -1619928 5698680 1619888 5698672 1619136 5699704 1619152 5699792 -1619928 5698680 1619888 5698344 1619888 5698672 1619136 5699704 -1619888 5698672 1619448 5698520 1618928 5698864 1619136 5699704 -1618928 5698864 1618896 5698904 1619136 5699704 1619888 5698672 -1619928 5698680 1619976 5698672 1619888 5698344 1619888 5698672 -1619888 5698344 1619848 5698352 1619888 5698672 1619976 5698672 -1619928 5698680 1619976 5698672 1619888 5698672 1619136 5699704 -1619976 5698672 1620064 5698616 1619888 5698344 1619888 5698672 -1619888 5698672 1619848 5698648 1619448 5698520 1618928 5698864 -1619888 5698672 1619848 5698648 1618928 5698864 1619136 5699704 -1619888 5698672 1619568 5698416 1619848 5698648 1619136 5699704 -1619848 5698648 1619448 5698520 1618928 5698864 1619136 5699704 -1619848 5698648 1619568 5698416 1619448 5698520 1618928 5698864 -1619568 5698416 1619848 5698648 1619888 5698672 1619664 5698400 -1619888 5698672 1619752 5698384 1619664 5698400 1619848 5698648 -1619888 5698672 1619848 5698352 1619752 5698384 1619848 5698648 -1619888 5698672 1619888 5698344 1619848 5698352 1619848 5698648 -1619888 5698672 1619976 5698672 1619888 5698344 1619848 5698648 -1619888 5698344 1619848 5698352 1619848 5698648 1619976 5698672 -1619848 5698352 1619752 5698384 1619848 5698648 1619888 5698344 -1619752 5698384 1619664 5698400 1619848 5698648 1619848 5698352 -1619848 5698648 1619136 5699704 1619888 5698672 1619976 5698672 -1619568 5698416 1619448 5698520 1619848 5698648 1619664 5698400 -1619664 5698400 1619568 5698416 1619848 5698648 1619752 5698384 -1619448 5698520 1618936 5698840 1618928 5698864 1619848 5698648 -1618928 5698864 1618896 5698904 1619136 5699704 1619848 5698648 -1619448 5698520 1619848 5698648 1619568 5698416 1619480 5698472 -1619888 5698672 1619848 5698648 1619136 5699704 1619928 5698680 -1619888 5698672 1619928 5698680 1619976 5698672 1619848 5698648 -1619976 5698672 1620064 5698616 1619888 5698344 1619848 5698648 -1619976 5698672 1620064 5698616 1619848 5698648 1619888 5698672 -1619888 5698344 1619848 5698352 1619848 5698648 1620064 5698616 -1620064 5698616 1620104 5698584 1619888 5698344 1619848 5698648 -1619848 5698648 1619800 5698632 1619448 5698520 1618928 5698864 -1619848 5698648 1619800 5698632 1618928 5698864 1619136 5699704 -1619848 5698648 1619800 5698632 1619136 5699704 1619888 5698672 -1619800 5698632 1618928 5698864 1619136 5699704 1619888 5698672 -1619800 5698632 1619448 5698520 1618928 5698864 1619136 5699704 -1619848 5698648 1619568 5698416 1619800 5698632 1619888 5698672 -1619568 5698416 1619800 5698632 1619848 5698648 1619664 5698400 -1619800 5698632 1619888 5698672 1619848 5698648 1619664 5698400 -1619800 5698632 1619568 5698416 1619448 5698520 1618928 5698864 -1619568 5698416 1619448 5698520 1619800 5698632 1619664 5698400 -1619848 5698648 1619752 5698384 1619664 5698400 1619800 5698632 -1619848 5698648 1619848 5698352 1619752 5698384 1619800 5698632 -1619848 5698648 1619888 5698344 1619848 5698352 1619800 5698632 -1619848 5698648 1619848 5698352 1619800 5698632 1619888 5698672 -1619664 5698400 1619568 5698416 1619800 5698632 1619752 5698384 -1619752 5698384 1619664 5698400 1619800 5698632 1619848 5698352 -1619448 5698520 1618936 5698840 1618928 5698864 1619800 5698632 -1618928 5698864 1618896 5698904 1619136 5699704 1619800 5698632 -1619448 5698520 1619800 5698632 1619568 5698416 1619480 5698472 -1619448 5698520 1618928 5698864 1619800 5698632 1619480 5698472 -1619800 5698632 1619664 5698400 1619568 5698416 1619480 5698472 -1619136 5699704 1619928 5698680 1619888 5698672 1619800 5698632 -1619568 5698416 1619760 5698608 1619800 5698632 1619664 5698400 -1619800 5698632 1619752 5698384 1619664 5698400 1619760 5698608 -1619760 5698608 1619480 5698472 1619800 5698632 1619752 5698384 -1619664 5698400 1619568 5698416 1619760 5698608 1619752 5698384 -1619568 5698416 1619480 5698472 1619760 5698608 1619664 5698400 -1619800 5698632 1619848 5698352 1619752 5698384 1619760 5698608 -1619800 5698632 1619848 5698648 1619848 5698352 1619760 5698608 -1619752 5698384 1619664 5698400 1619760 5698608 1619848 5698352 -1619800 5698632 1619848 5698352 1619760 5698608 1619480 5698472 -1619800 5698632 1619760 5698608 1619480 5698472 1619448 5698520 -1619800 5698632 1619760 5698608 1619448 5698520 1618928 5698864 -1619800 5698632 1619760 5698608 1618928 5698864 1619136 5699704 -1619800 5698632 1619848 5698352 1619760 5698608 1618928 5698864 -1619760 5698608 1619568 5698416 1619480 5698472 1619448 5698520 -1619448 5698520 1618936 5698840 1618928 5698864 1619760 5698608 -1619760 5698608 1619480 5698472 1619448 5698520 1618928 5698864 -1619760 5698608 1619712 5698600 1618928 5698864 1619800 5698632 -1618928 5698864 1619136 5699704 1619800 5698632 1619712 5698600 -1619136 5699704 1619888 5698672 1619800 5698632 1619712 5698600 -1619800 5698632 1619760 5698608 1619712 5698600 1619136 5699704 -1619760 5698608 1619448 5698520 1619712 5698600 1619800 5698632 -1619712 5698600 1619448 5698520 1618928 5698864 1619136 5699704 -1618928 5698864 1619712 5698600 1619448 5698520 1618936 5698840 -1618928 5698864 1618896 5698904 1619136 5699704 1619712 5698600 -1619448 5698520 1619712 5698600 1619760 5698608 1619480 5698472 -1619760 5698608 1619568 5698416 1619480 5698472 1619712 5698600 -1619712 5698600 1619800 5698632 1619760 5698608 1619568 5698416 -1619760 5698608 1619664 5698400 1619568 5698416 1619712 5698600 -1619760 5698608 1619752 5698384 1619664 5698400 1619712 5698600 -1619760 5698608 1619848 5698352 1619752 5698384 1619712 5698600 -1619568 5698416 1619480 5698472 1619712 5698600 1619664 5698400 -1619760 5698608 1619752 5698384 1619712 5698600 1619800 5698632 -1619664 5698400 1619568 5698416 1619712 5698600 1619752 5698384 -1619448 5698520 1618928 5698864 1619712 5698600 1619480 5698472 -1619480 5698472 1619448 5698520 1619712 5698600 1619568 5698416 -1619712 5698600 1619672 5698600 1618928 5698864 1619136 5699704 -1619712 5698600 1619672 5698600 1619136 5699704 1619800 5698632 -1619136 5699704 1619888 5698672 1619800 5698632 1619672 5698600 -1619888 5698672 1619848 5698648 1619800 5698632 1619672 5698600 -1619800 5698632 1619712 5698600 1619672 5698600 1619888 5698672 -1619712 5698600 1619672 5698600 1619800 5698632 1619760 5698608 -1619672 5698600 1618928 5698864 1619136 5699704 1619888 5698672 -1619712 5698600 1619448 5698520 1619672 5698600 1619800 5698632 -1619448 5698520 1619672 5698600 1619712 5698600 1619480 5698472 -1619672 5698600 1619800 5698632 1619712 5698600 1619480 5698472 -1619672 5698600 1619448 5698520 1618928 5698864 1619136 5699704 -1619448 5698520 1618928 5698864 1619672 5698600 1619480 5698472 -1618928 5698864 1619672 5698600 1619448 5698520 1618936 5698840 -1618928 5698864 1618896 5698904 1619136 5699704 1619672 5698600 -1619712 5698600 1619568 5698416 1619480 5698472 1619672 5698600 -1619712 5698600 1619664 5698400 1619568 5698416 1619672 5698600 -1619712 5698600 1619752 5698384 1619664 5698400 1619672 5698600 -1619712 5698600 1619664 5698400 1619672 5698600 1619800 5698632 -1619480 5698472 1619448 5698520 1619672 5698600 1619568 5698416 -1619568 5698416 1619480 5698472 1619672 5698600 1619664 5698400 -1619136 5699704 1619928 5698680 1619888 5698672 1619672 5698600 -1619672 5698600 1619584 5698656 1619136 5699704 1619888 5698672 -1619672 5698600 1619584 5698656 1619888 5698672 1619800 5698632 -1619888 5698672 1619848 5698648 1619800 5698632 1619584 5698656 -1619672 5698600 1619584 5698656 1619800 5698632 1619712 5698600 -1619584 5698656 1619888 5698672 1619800 5698632 1619712 5698600 -1619800 5698632 1619760 5698608 1619712 5698600 1619584 5698656 -1619584 5698656 1619136 5699704 1619888 5698672 1619800 5698632 -1618928 5698864 1619584 5698656 1619672 5698600 1619448 5698520 -1619672 5698600 1619448 5698520 1619584 5698656 1619712 5698600 -1619672 5698600 1619480 5698472 1619448 5698520 1619584 5698656 -1619672 5698600 1619568 5698416 1619480 5698472 1619584 5698656 -1619448 5698520 1618928 5698864 1619584 5698656 1619480 5698472 -1619672 5698600 1619480 5698472 1619584 5698656 1619712 5698600 -1619584 5698656 1618928 5698864 1619136 5699704 1619888 5698672 -1618928 5698864 1619136 5699704 1619584 5698656 1619448 5698520 -1618928 5698864 1619584 5698656 1619448 5698520 1618936 5698840 -1619584 5698656 1619480 5698472 1619448 5698520 1618936 5698840 -1618928 5698864 1619136 5699704 1619584 5698656 1618936 5698840 -1619448 5698520 1619080 5698608 1618936 5698840 1619584 5698656 -1619448 5698520 1619080 5698608 1619584 5698656 1619480 5698472 -1618936 5698840 1618928 5698864 1619584 5698656 1619080 5698608 -1619080 5698608 1619040 5698640 1618936 5698840 1619584 5698656 -1619136 5699704 1619584 5698656 1618928 5698864 1618896 5698904 -1619136 5699704 1619928 5698680 1619888 5698672 1619584 5698656 -1619448 5698520 1619096 5698576 1619080 5698608 1619584 5698656 -1619584 5698656 1619544 5698664 1618936 5698840 1618928 5698864 -1619584 5698656 1619080 5698608 1619544 5698664 1618928 5698864 -1619584 5698656 1619544 5698664 1618928 5698864 1619136 5699704 -1619584 5698656 1619544 5698664 1619136 5699704 1619888 5698672 -1619584 5698656 1619080 5698608 1619544 5698664 1619136 5699704 -1619544 5698664 1619080 5698608 1618936 5698840 1618928 5698864 -1619544 5698664 1618936 5698840 1618928 5698864 1619136 5699704 -1618936 5698840 1619544 5698664 1619080 5698608 1619040 5698640 -1619080 5698608 1619544 5698664 1619584 5698656 1619448 5698520 -1619584 5698656 1619480 5698472 1619448 5698520 1619544 5698664 -1619544 5698664 1619136 5699704 1619584 5698656 1619448 5698520 -1619080 5698608 1618936 5698840 1619544 5698664 1619448 5698520 -1618928 5698864 1618896 5698904 1619136 5699704 1619544 5698664 -1619080 5698608 1619544 5698664 1619448 5698520 1619096 5698576 -1619544 5698664 1619496 5698640 1619080 5698608 1618936 5698840 -1619544 5698664 1619496 5698640 1618936 5698840 1618928 5698864 -1619544 5698664 1619448 5698520 1619496 5698640 1618928 5698864 -1619496 5698640 1619080 5698608 1618936 5698840 1618928 5698864 -1619496 5698640 1619448 5698520 1619080 5698608 1618936 5698840 -1619544 5698664 1619496 5698640 1618928 5698864 1619136 5699704 -1619080 5698608 1619040 5698640 1618936 5698840 1619496 5698640 -1618936 5698840 1618928 5698864 1619496 5698640 1619040 5698640 -1619080 5698608 1619040 5698640 1619496 5698640 1619448 5698520 -1619040 5698640 1618976 5698680 1618936 5698840 1619496 5698640 -1619448 5698520 1619496 5698640 1619544 5698664 1619584 5698656 -1619448 5698520 1619496 5698640 1619584 5698656 1619480 5698472 -1619584 5698656 1619672 5698600 1619480 5698472 1619496 5698640 -1619496 5698640 1618928 5698864 1619544 5698664 1619584 5698656 -1619448 5698520 1619080 5698608 1619496 5698640 1619480 5698472 -1619496 5698640 1619544 5698664 1619584 5698656 1619480 5698472 -1619080 5698608 1619496 5698640 1619448 5698520 1619096 5698576 -1619080 5698608 1619040 5698640 1619496 5698640 1619096 5698576 -1619496 5698640 1619480 5698472 1619448 5698520 1619096 5698576 -1619448 5698520 1619104 5698544 1619096 5698576 1619496 5698640 -1619448 5698520 1619448 5698592 1619496 5698640 1619480 5698472 -1619096 5698576 1619448 5698592 1619448 5698520 1619104 5698544 -1619096 5698576 1619496 5698640 1619448 5698592 1619104 5698544 -1619448 5698592 1619496 5698640 1619448 5698520 1619104 5698544 -1619448 5698520 1619088 5698488 1619104 5698544 1619448 5698592 -1619496 5698640 1619448 5698592 1619096 5698576 1619080 5698608 -1619496 5698640 1619448 5698592 1619080 5698608 1619040 5698640 -1619496 5698640 1619448 5698520 1619448 5698592 1619080 5698608 -1619448 5698592 1619104 5698544 1619096 5698576 1619080 5698608 -1622880 5701536 1622400 5699472 1621816 5701384 1622664 5701568 -1621816 5701384 1622216 5701544 1622664 5701568 1622400 5699472 -1622664 5701568 1622880 5701536 1622400 5699472 1622216 5701544 -1622216 5701544 1622440 5701576 1622664 5701568 1622400 5699472 -1622216 5701544 1622440 5701576 1622400 5699472 1621816 5701384 -1622664 5701568 1622880 5701536 1622400 5699472 1622440 5701576 -1622880 5701536 1622424 5698368 1622400 5699472 1622664 5701568 -1622400 5699472 1622424 5698368 1621816 5701384 1622216 5701544 -1622424 5698368 1622400 5699472 1622880 5701536 1622536 5698344 -1622880 5701536 1623016 5701528 1622536 5698344 1622400 5699472 -1622400 5699472 1622664 5701568 1622880 5701536 1623016 5701528 -1622424 5698368 1621816 5701384 1622400 5699472 1622536 5698344 -1622536 5698344 1622424 5698368 1622400 5699472 1623016 5701528 -1623016 5701528 1624344 5701024 1622536 5698344 1622400 5699472 -1623016 5701528 1624344 5701024 1622400 5699472 1622880 5701536 -1622536 5698344 1622424 5698368 1622400 5699472 1624344 5701024 -1624344 5701024 1622656 5698272 1622536 5698344 1622400 5699472 -1624344 5701024 1624408 5700984 1622656 5698272 1622400 5699472 -1624408 5700984 1625032 5698608 1622656 5698272 1622400 5699472 -1625032 5698608 1622712 5698216 1622656 5698272 1622400 5699472 -1625032 5698608 1622712 5698216 1622400 5699472 1624408 5700984 -1624408 5700984 1625032 5698608 1622400 5699472 1624344 5701024 -1625032 5698608 1623672 5697496 1622712 5698216 1622400 5699472 -1622536 5698344 1622424 5698368 1622400 5699472 1622656 5698272 -1622656 5698272 1622536 5698344 1622400 5699472 1622712 5698216 -1624344 5701024 1624408 5700984 1622400 5699472 1623016 5701528 -1621816 5701384 1622400 5699472 1622424 5698368 1621712 5701344 -1621816 5701384 1622216 5701544 1622400 5699472 1621712 5701344 -1622400 5699472 1622536 5698344 1622424 5698368 1621712 5701344 -1622424 5698368 1622296 5698320 1621712 5701344 1622400 5699472 -1622424 5698368 1622296 5698320 1622400 5699472 1622536 5698344 -1621712 5701344 1621816 5701384 1622400 5699472 1622296 5698320 -1623016 5701528 1624288 5701080 1624344 5701024 1622400 5699472 -1623016 5701528 1624288 5701080 1622400 5699472 1622880 5701536 -1623016 5701528 1623192 5701576 1624288 5701080 1622400 5699472 -1624344 5701024 1624408 5700984 1622400 5699472 1624288 5701080 -1624408 5700984 1625104 5698680 1625032 5698608 1622400 5699472 -1622296 5698320 1621576 5701360 1621712 5701344 1622400 5699472 -1622296 5698320 1621576 5701360 1622400 5699472 1622424 5698368 -1621712 5701344 1621816 5701384 1622400 5699472 1621576 5701360 -1622296 5698320 1620184 5698536 1621576 5701360 1622400 5699472 -1622296 5698320 1620184 5698536 1622400 5699472 1622424 5698368 -1622296 5698320 1620224 5698488 1620184 5698536 1622400 5699472 -1622296 5698320 1620224 5698488 1622400 5699472 1622424 5698368 -1622296 5698320 1622064 5698152 1620224 5698488 1622400 5699472 -1622296 5698320 1622064 5698152 1622400 5699472 1622424 5698368 -1622064 5698152 1620248 5698424 1620224 5698488 1622400 5699472 -1620224 5698488 1620184 5698536 1622400 5699472 1622064 5698152 -1620184 5698536 1620144 5698568 1621576 5701360 1622400 5699472 -1620144 5698568 1620064 5698616 1621576 5701360 1622400 5699472 -1620144 5698568 1620064 5698616 1622400 5699472 1620184 5698536 -1620064 5698616 1619976 5698672 1621576 5701360 1622400 5699472 -1620144 5698568 1620104 5698584 1620064 5698616 1622400 5699472 -1621576 5701360 1621712 5701344 1622400 5699472 1620064 5698616 -1620184 5698536 1620144 5698568 1622400 5699472 1620224 5698488 -1622400 5699472 1622424 5699440 1622712 5698216 1622656 5698272 -1625032 5698608 1622424 5699440 1622400 5699472 1624408 5700984 -1622400 5699472 1624344 5701024 1624408 5700984 1622424 5699440 -1624408 5700984 1625032 5698608 1622424 5699440 1624344 5701024 -1622712 5698216 1622424 5699440 1625032 5698608 1623672 5697496 -1622400 5699472 1624344 5701024 1622424 5699440 1622656 5698272 -1622424 5699440 1625032 5698608 1622712 5698216 1622656 5698272 -1625032 5698608 1622712 5698216 1622424 5699440 1624408 5700984 -1622400 5699472 1622424 5699440 1622656 5698272 1622536 5698344 -1622424 5699440 1622712 5698216 1622656 5698272 1622536 5698344 -1622400 5699472 1624344 5701024 1622424 5699440 1622536 5698344 -1622400 5699472 1622424 5699440 1622536 5698344 1622424 5698368 -1622400 5699472 1624344 5701024 1622424 5699440 1622424 5698368 -1622400 5699472 1622424 5699440 1622424 5698368 1622296 5698320 -1622400 5699472 1624344 5701024 1622424 5699440 1622296 5698320 -1622400 5699472 1622424 5699440 1622296 5698320 1622064 5698152 -1622424 5699440 1622536 5698344 1622424 5698368 1622296 5698320 -1622424 5699440 1622656 5698272 1622536 5698344 1622424 5698368 -1622400 5699472 1624288 5701080 1624344 5701024 1622424 5699440 -1624344 5701024 1624408 5700984 1622424 5699440 1624288 5701080 -1622400 5699472 1624288 5701080 1622424 5699440 1622296 5698320 -1622400 5699472 1623016 5701528 1624288 5701080 1622424 5699440 -1625032 5698608 1622424 5699440 1624408 5700984 1625104 5698680 -1622712 5698216 1622448 5699424 1625032 5698608 1623672 5697496 -1622424 5699440 1622448 5699424 1622712 5698216 1622656 5698272 -1622424 5699440 1622448 5699424 1622656 5698272 1622536 5698344 -1622448 5699424 1625032 5698608 1622712 5698216 1622656 5698272 -1622448 5699424 1622712 5698216 1622656 5698272 1622536 5698344 -1622424 5699440 1625032 5698608 1622448 5699424 1622536 5698344 -1625032 5698608 1622448 5699424 1622424 5699440 1624408 5700984 -1622424 5699440 1624344 5701024 1624408 5700984 1622448 5699424 -1622424 5699440 1624288 5701080 1624344 5701024 1622448 5699424 -1624344 5701024 1624408 5700984 1622448 5699424 1624288 5701080 -1625032 5698608 1622712 5698216 1622448 5699424 1624408 5700984 -1622448 5699424 1622536 5698344 1622424 5699440 1624288 5701080 -1624408 5700984 1625032 5698608 1622448 5699424 1624344 5701024 -1622424 5699440 1622448 5699424 1622536 5698344 1622424 5698368 -1622448 5699424 1622656 5698272 1622536 5698344 1622424 5698368 -1622424 5699440 1624288 5701080 1622448 5699424 1622424 5698368 -1622424 5699440 1622448 5699424 1622424 5698368 1622296 5698320 -1622424 5699440 1622448 5699424 1622296 5698320 1622400 5699472 -1622424 5699440 1624288 5701080 1622448 5699424 1622296 5698320 -1622448 5699424 1622536 5698344 1622424 5698368 1622296 5698320 -1622424 5699440 1622400 5699472 1624288 5701080 1622448 5699424 -1624288 5701080 1624344 5701024 1622448 5699424 1622400 5699472 -1622424 5699440 1622400 5699472 1622448 5699424 1622296 5698320 -1622400 5699472 1623016 5701528 1624288 5701080 1622448 5699424 -1624288 5701080 1624344 5701024 1622448 5699424 1623016 5701528 -1622400 5699472 1622880 5701536 1623016 5701528 1622448 5699424 -1623016 5701528 1623192 5701576 1624288 5701080 1622448 5699424 -1622400 5699472 1623016 5701528 1622448 5699424 1622424 5699440 -1625032 5698608 1622448 5699424 1624408 5700984 1625104 5698680 -1622448 5699424 1622496 5699416 1625032 5698608 1622712 5698216 -1625032 5698608 1623672 5697496 1622712 5698216 1622496 5699416 -1622448 5699424 1622496 5699416 1622712 5698216 1622656 5698272 -1622448 5699424 1624408 5700984 1622496 5699416 1622656 5698272 -1622496 5699416 1625032 5698608 1622712 5698216 1622656 5698272 -1622496 5699416 1624408 5700984 1625032 5698608 1622712 5698216 -1622448 5699424 1622496 5699416 1622656 5698272 1622536 5698344 -1622448 5699424 1622496 5699416 1622536 5698344 1622424 5698368 -1622496 5699416 1622712 5698216 1622656 5698272 1622536 5698344 -1622448 5699424 1624408 5700984 1622496 5699416 1622424 5698368 -1622496 5699416 1622656 5698272 1622536 5698344 1622424 5698368 -1624408 5700984 1622496 5699416 1622448 5699424 1624344 5701024 -1622448 5699424 1624288 5701080 1624344 5701024 1622496 5699416 -1622448 5699424 1623016 5701528 1624288 5701080 1622496 5699416 -1624288 5701080 1624344 5701024 1622496 5699416 1623016 5701528 -1622496 5699416 1622424 5698368 1622448 5699424 1623016 5701528 -1624408 5700984 1625032 5698608 1622496 5699416 1624344 5701024 -1624344 5701024 1624408 5700984 1622496 5699416 1624288 5701080 -1623016 5701528 1623192 5701576 1624288 5701080 1622496 5699416 -1622448 5699424 1622496 5699416 1622424 5698368 1622296 5698320 -1622448 5699424 1622400 5699472 1623016 5701528 1622496 5699416 -1623016 5701528 1624288 5701080 1622496 5699416 1622400 5699472 -1622400 5699472 1622880 5701536 1623016 5701528 1622496 5699416 -1622448 5699424 1622400 5699472 1622496 5699416 1622424 5698368 -1622448 5699424 1622424 5699440 1622400 5699472 1622496 5699416 -1622448 5699424 1622424 5699440 1622496 5699416 1622424 5698368 -1622400 5699472 1623016 5701528 1622496 5699416 1622424 5699440 -1625032 5698608 1622496 5699416 1624408 5700984 1625104 5698680 -1622496 5699416 1622584 5699424 1625032 5698608 1622712 5698216 -1625032 5698608 1623672 5697496 1622712 5698216 1622584 5699424 -1622496 5699416 1622584 5699424 1622712 5698216 1622656 5698272 -1622496 5699416 1622584 5699424 1622656 5698272 1622536 5698344 -1622584 5699424 1622712 5698216 1622656 5698272 1622536 5698344 -1622584 5699424 1625032 5698608 1622712 5698216 1622656 5698272 -1622496 5699416 1624408 5700984 1622584 5699424 1622536 5698344 -1624408 5700984 1622584 5699424 1622496 5699416 1624344 5701024 -1622584 5699424 1622536 5698344 1622496 5699416 1624344 5701024 -1622584 5699424 1624408 5700984 1625032 5698608 1622712 5698216 -1624408 5700984 1625032 5698608 1622584 5699424 1624344 5701024 -1622496 5699416 1622584 5699424 1622536 5698344 1622424 5698368 -1622496 5699416 1622584 5699424 1622424 5698368 1622448 5699424 -1622584 5699424 1622656 5698272 1622536 5698344 1622424 5698368 -1622496 5699416 1624344 5701024 1622584 5699424 1622424 5698368 -1622496 5699416 1624288 5701080 1624344 5701024 1622584 5699424 -1622496 5699416 1623016 5701528 1624288 5701080 1622584 5699424 -1622496 5699416 1622400 5699472 1623016 5701528 1622584 5699424 -1623016 5701528 1624288 5701080 1622584 5699424 1622400 5699472 -1622400 5699472 1622880 5701536 1623016 5701528 1622584 5699424 -1623016 5701528 1624288 5701080 1622584 5699424 1622880 5701536 -1622400 5699472 1622880 5701536 1622584 5699424 1622496 5699416 -1622400 5699472 1622664 5701568 1622880 5701536 1622584 5699424 -1622496 5699416 1622400 5699472 1622584 5699424 1622424 5698368 -1624344 5701024 1624408 5700984 1622584 5699424 1624288 5701080 -1624288 5701080 1624344 5701024 1622584 5699424 1623016 5701528 -1623016 5701528 1623192 5701576 1624288 5701080 1622584 5699424 -1622496 5699416 1622424 5699440 1622400 5699472 1622584 5699424 -1625032 5698608 1622584 5699424 1624408 5700984 1625104 5698680 -1622584 5699424 1622648 5699416 1625032 5698608 1622712 5698216 -1625032 5698608 1623672 5697496 1622712 5698216 1622648 5699416 -1622584 5699424 1622648 5699416 1622712 5698216 1622656 5698272 -1622584 5699424 1622648 5699416 1622656 5698272 1622536 5698344 -1622584 5699424 1622648 5699416 1622536 5698344 1622424 5698368 -1622648 5699416 1622656 5698272 1622536 5698344 1622424 5698368 -1622648 5699416 1622712 5698216 1622656 5698272 1622536 5698344 -1622648 5699416 1625032 5698608 1622712 5698216 1622656 5698272 -1622584 5699424 1624408 5700984 1622648 5699416 1622424 5698368 -1624408 5700984 1622648 5699416 1622584 5699424 1624344 5701024 -1622584 5699424 1624288 5701080 1624344 5701024 1622648 5699416 -1622648 5699416 1622424 5698368 1622584 5699424 1624288 5701080 -1624344 5701024 1624408 5700984 1622648 5699416 1624288 5701080 -1622648 5699416 1624408 5700984 1625032 5698608 1622712 5698216 -1624408 5700984 1625032 5698608 1622648 5699416 1624344 5701024 -1622584 5699424 1622648 5699416 1622424 5698368 1622496 5699416 -1622424 5698368 1622448 5699424 1622496 5699416 1622648 5699416 -1622648 5699416 1622536 5698344 1622424 5698368 1622496 5699416 -1622584 5699424 1624288 5701080 1622648 5699416 1622496 5699416 -1622584 5699424 1623016 5701528 1624288 5701080 1622648 5699416 -1622584 5699424 1622880 5701536 1623016 5701528 1622648 5699416 -1622584 5699424 1622400 5699472 1622880 5701536 1622648 5699416 -1622880 5701536 1623016 5701528 1622648 5699416 1622400 5699472 -1622584 5699424 1622496 5699416 1622400 5699472 1622648 5699416 -1622400 5699472 1622664 5701568 1622880 5701536 1622648 5699416 -1624288 5701080 1624344 5701024 1622648 5699416 1623016 5701528 -1622584 5699424 1622400 5699472 1622648 5699416 1622496 5699416 -1623016 5701528 1624288 5701080 1622648 5699416 1622880 5701536 -1623016 5701528 1623192 5701576 1624288 5701080 1622648 5699416 -1625032 5698608 1622648 5699416 1624408 5700984 1625104 5698680 -1622648 5699416 1622736 5699440 1625032 5698608 1622712 5698216 -1625032 5698608 1623672 5697496 1622712 5698216 1622736 5699440 -1622648 5699416 1622736 5699440 1622712 5698216 1622656 5698272 -1622648 5699416 1622736 5699440 1622656 5698272 1622536 5698344 -1622648 5699416 1622736 5699440 1622536 5698344 1622424 5698368 -1622736 5699440 1622712 5698216 1622656 5698272 1622536 5698344 -1622736 5699440 1625032 5698608 1622712 5698216 1622656 5698272 -1622648 5699416 1624408 5700984 1622736 5699440 1622536 5698344 -1624408 5700984 1622736 5699440 1622648 5699416 1624344 5701024 -1622648 5699416 1624288 5701080 1624344 5701024 1622736 5699440 -1622648 5699416 1623016 5701528 1624288 5701080 1622736 5699440 -1624288 5701080 1624344 5701024 1622736 5699440 1623016 5701528 -1622736 5699440 1622536 5698344 1622648 5699416 1623016 5701528 -1624344 5701024 1624408 5700984 1622736 5699440 1624288 5701080 -1622736 5699440 1624408 5700984 1625032 5698608 1622712 5698216 -1624408 5700984 1625032 5698608 1622736 5699440 1624344 5701024 -1622648 5699416 1622880 5701536 1623016 5701528 1622736 5699440 -1622648 5699416 1622400 5699472 1622880 5701536 1622736 5699440 -1622648 5699416 1622584 5699424 1622400 5699472 1622736 5699440 -1622400 5699472 1622880 5701536 1622736 5699440 1622584 5699424 -1622584 5699424 1622496 5699416 1622400 5699472 1622736 5699440 -1622400 5699472 1622664 5701568 1622880 5701536 1622736 5699440 -1623016 5701528 1624288 5701080 1622736 5699440 1622880 5701536 -1622648 5699416 1622584 5699424 1622736 5699440 1622536 5698344 -1622880 5701536 1623016 5701528 1622736 5699440 1622400 5699472 -1623016 5701528 1623192 5701576 1624288 5701080 1622736 5699440 -1625032 5698608 1622736 5699440 1624408 5700984 1625104 5698680 -1624408 5700984 1624496 5700960 1625104 5698680 1622736 5699440 -1624496 5700960 1625176 5698752 1625104 5698680 1622736 5699440 -1625032 5698608 1622712 5698216 1622736 5699440 1625104 5698680 -1622736 5699440 1624344 5701024 1624408 5700984 1624496 5700960 -1625104 5698680 1625032 5698608 1622736 5699440 1624496 5700960 -1625104 5698680 1622832 5699440 1624496 5700960 1625176 5698752 -1624496 5700960 1622832 5699440 1622736 5699440 1624408 5700984 -1622832 5699440 1625104 5698680 1622736 5699440 1624408 5700984 -1622736 5699440 1624344 5701024 1624408 5700984 1622832 5699440 -1624408 5700984 1624496 5700960 1622832 5699440 1624344 5701024 -1622736 5699440 1624288 5701080 1624344 5701024 1622832 5699440 -1622736 5699440 1623016 5701528 1624288 5701080 1622832 5699440 -1622736 5699440 1622880 5701536 1623016 5701528 1622832 5699440 -1623016 5701528 1624288 5701080 1622832 5699440 1622880 5701536 -1624288 5701080 1624344 5701024 1622832 5699440 1623016 5701528 -1622736 5699440 1622880 5701536 1622832 5699440 1625104 5698680 -1624344 5701024 1624408 5700984 1622832 5699440 1624288 5701080 -1624496 5700960 1625104 5698680 1622832 5699440 1624408 5700984 -1622736 5699440 1622400 5699472 1622880 5701536 1622832 5699440 -1623016 5701528 1623192 5701576 1624288 5701080 1622832 5699440 -1622736 5699440 1622832 5699440 1625104 5698680 1625032 5698608 -1622736 5699440 1622832 5699440 1625032 5698608 1622712 5698216 -1625032 5698608 1623672 5697496 1622712 5698216 1622832 5699440 -1622736 5699440 1622832 5699440 1622712 5698216 1622656 5698272 -1622736 5699440 1622832 5699440 1622656 5698272 1622536 5698344 -1622736 5699440 1622832 5699440 1622536 5698344 1622648 5699416 -1622536 5698344 1622424 5698368 1622648 5699416 1622832 5699440 -1622832 5699440 1622656 5698272 1622536 5698344 1622648 5699416 -1622832 5699440 1622712 5698216 1622656 5698272 1622536 5698344 -1622832 5699440 1625032 5698608 1622712 5698216 1622656 5698272 -1622736 5699440 1622880 5701536 1622832 5699440 1622648 5699416 -1622832 5699440 1624496 5700960 1625104 5698680 1625032 5698608 -1622832 5699440 1625104 5698680 1625032 5698608 1622712 5698216 -1625104 5698680 1622872 5699464 1624496 5700960 1625176 5698752 -1622832 5699440 1622872 5699464 1625104 5698680 1625032 5698608 -1622832 5699440 1624496 5700960 1622872 5699464 1625032 5698608 -1624496 5700960 1622872 5699464 1622832 5699440 1624408 5700984 -1622832 5699440 1624344 5701024 1624408 5700984 1622872 5699464 -1622832 5699440 1624288 5701080 1624344 5701024 1622872 5699464 -1624344 5701024 1624408 5700984 1622872 5699464 1624288 5701080 -1622832 5699440 1623016 5701528 1624288 5701080 1622872 5699464 -1622832 5699440 1622880 5701536 1623016 5701528 1622872 5699464 -1622832 5699440 1622736 5699440 1622880 5701536 1622872 5699464 -1622880 5701536 1623016 5701528 1622872 5699464 1622736 5699440 -1623016 5701528 1624288 5701080 1622872 5699464 1622880 5701536 -1624288 5701080 1624344 5701024 1622872 5699464 1623016 5701528 -1622872 5699464 1625032 5698608 1622832 5699440 1622736 5699440 -1624408 5700984 1624496 5700960 1622872 5699464 1624344 5701024 -1622736 5699440 1622400 5699472 1622880 5701536 1622872 5699464 -1622736 5699440 1622584 5699424 1622400 5699472 1622872 5699464 -1622400 5699472 1622664 5701568 1622880 5701536 1622872 5699464 -1622736 5699440 1622400 5699472 1622872 5699464 1622832 5699440 -1622880 5701536 1623016 5701528 1622872 5699464 1622400 5699472 -1623016 5701528 1623192 5701576 1624288 5701080 1622872 5699464 -1622872 5699464 1624496 5700960 1625104 5698680 1625032 5698608 -1624496 5700960 1625104 5698680 1622872 5699464 1624408 5700984 -1622832 5699440 1622872 5699464 1625032 5698608 1622712 5698216 -1625032 5698608 1623672 5697496 1622712 5698216 1622872 5699464 -1622832 5699440 1622872 5699464 1622712 5698216 1622656 5698272 -1622872 5699464 1625104 5698680 1625032 5698608 1622712 5698216 -1622832 5699440 1622736 5699440 1622872 5699464 1622712 5698216 -1625104 5698680 1622896 5699464 1624496 5700960 1625176 5698752 -1624496 5700960 1625448 5700568 1625176 5698752 1622896 5699464 -1622872 5699464 1622896 5699464 1625104 5698680 1625032 5698608 -1622872 5699464 1622896 5699464 1625032 5698608 1622712 5698216 -1625032 5698608 1623672 5697496 1622712 5698216 1622896 5699464 -1623672 5697496 1623648 5697496 1622712 5698216 1622896 5699464 -1622712 5698216 1622872 5699464 1622896 5699464 1623672 5697496 -1625032 5698608 1625048 5698520 1623672 5697496 1622896 5699464 -1622896 5699464 1625104 5698680 1625032 5698608 1623672 5697496 -1622872 5699464 1624496 5700960 1622896 5699464 1622712 5698216 -1624496 5700960 1622896 5699464 1622872 5699464 1624408 5700984 -1622872 5699464 1624344 5701024 1624408 5700984 1622896 5699464 -1622872 5699464 1624288 5701080 1624344 5701024 1622896 5699464 -1622872 5699464 1623016 5701528 1624288 5701080 1622896 5699464 -1624288 5701080 1624344 5701024 1622896 5699464 1623016 5701528 -1622872 5699464 1622880 5701536 1623016 5701528 1622896 5699464 -1622872 5699464 1622400 5699472 1622880 5701536 1622896 5699464 -1623016 5701528 1624288 5701080 1622896 5699464 1622880 5701536 -1624344 5701024 1624408 5700984 1622896 5699464 1624288 5701080 -1623016 5701528 1623192 5701576 1624288 5701080 1622896 5699464 -1622896 5699464 1622712 5698216 1622872 5699464 1622880 5701536 -1624408 5700984 1624496 5700960 1622896 5699464 1624344 5701024 -1625104 5698680 1625032 5698608 1622896 5699464 1625176 5698752 -1622896 5699464 1624408 5700984 1624496 5700960 1625176 5698752 -1622872 5699464 1622896 5699464 1622712 5698216 1622832 5699440 -1622712 5698216 1622656 5698272 1622832 5699440 1622896 5699464 -1622656 5698272 1622536 5698344 1622832 5699440 1622896 5699464 -1622896 5699464 1623672 5697496 1622712 5698216 1622656 5698272 -1622872 5699464 1622880 5701536 1622896 5699464 1622832 5699440 -1622832 5699440 1622872 5699464 1622896 5699464 1622656 5698272 -1622896 5699464 1622928 5699472 1625176 5698752 1625104 5698680 -1625176 5698752 1622928 5699472 1624496 5700960 1625448 5700568 -1622896 5699464 1622928 5699472 1625104 5698680 1625032 5698608 -1622928 5699472 1625176 5698752 1625104 5698680 1625032 5698608 -1622896 5699464 1622928 5699472 1625032 5698608 1623672 5697496 -1622896 5699464 1622928 5699472 1623672 5697496 1622712 5698216 -1623672 5697496 1623648 5697496 1622712 5698216 1622928 5699472 -1622896 5699464 1622928 5699472 1622712 5698216 1622656 5698272 -1622928 5699472 1623672 5697496 1622712 5698216 1622656 5698272 -1622896 5699464 1622928 5699472 1622656 5698272 1622832 5699440 -1622656 5698272 1622536 5698344 1622832 5699440 1622928 5699472 -1622928 5699472 1622712 5698216 1622656 5698272 1622832 5699440 -1625032 5698608 1625048 5698520 1623672 5697496 1622928 5699472 -1622928 5699472 1625032 5698608 1623672 5697496 1622712 5698216 -1622928 5699472 1625104 5698680 1625032 5698608 1623672 5697496 -1622896 5699464 1624496 5700960 1622928 5699472 1622832 5699440 -1624496 5700960 1622928 5699472 1622896 5699464 1624408 5700984 -1622896 5699464 1624344 5701024 1624408 5700984 1622928 5699472 -1622896 5699464 1624288 5701080 1624344 5701024 1622928 5699472 -1622896 5699464 1623016 5701528 1624288 5701080 1622928 5699472 -1622896 5699464 1622880 5701536 1623016 5701528 1622928 5699472 -1623016 5701528 1624288 5701080 1622928 5699472 1622880 5701536 -1622896 5699464 1622872 5699464 1622880 5701536 1622928 5699472 -1622872 5699464 1622400 5699472 1622880 5701536 1622928 5699472 -1622880 5701536 1623016 5701528 1622928 5699472 1622872 5699464 -1624288 5701080 1624344 5701024 1622928 5699472 1623016 5701528 -1623016 5701528 1623192 5701576 1624288 5701080 1622928 5699472 -1624344 5701024 1624408 5700984 1622928 5699472 1624288 5701080 -1622928 5699472 1622832 5699440 1622896 5699464 1622872 5699464 -1624408 5700984 1624496 5700960 1622928 5699472 1624344 5701024 -1622928 5699472 1624496 5700960 1625176 5698752 1625104 5698680 -1624496 5700960 1625176 5698752 1622928 5699472 1624408 5700984 -1622896 5699464 1622928 5699472 1622832 5699440 1622872 5699464 -1625176 5698752 1622984 5699520 1624496 5700960 1625448 5700568 -1622928 5699472 1622984 5699520 1625176 5698752 1625104 5698680 -1622928 5699472 1622984 5699520 1625104 5698680 1625032 5698608 -1622928 5699472 1622984 5699520 1625032 5698608 1623672 5697496 -1622984 5699520 1625104 5698680 1625032 5698608 1623672 5697496 -1625032 5698608 1625048 5698520 1623672 5697496 1622984 5699520 -1622928 5699472 1622984 5699520 1623672 5697496 1622712 5698216 -1623672 5697496 1623648 5697496 1622712 5698216 1622984 5699520 -1622928 5699472 1622984 5699520 1622712 5698216 1622656 5698272 -1622984 5699520 1625032 5698608 1623672 5697496 1622712 5698216 -1622984 5699520 1625176 5698752 1625104 5698680 1625032 5698608 -1622928 5699472 1624496 5700960 1622984 5699520 1622712 5698216 -1624496 5700960 1622984 5699520 1622928 5699472 1624408 5700984 -1622928 5699472 1624344 5701024 1624408 5700984 1622984 5699520 -1622928 5699472 1624288 5701080 1624344 5701024 1622984 5699520 -1622928 5699472 1623016 5701528 1624288 5701080 1622984 5699520 -1622928 5699472 1622880 5701536 1623016 5701528 1622984 5699520 -1622928 5699472 1622872 5699464 1622880 5701536 1622984 5699520 -1622880 5701536 1623016 5701528 1622984 5699520 1622872 5699464 -1622872 5699464 1622400 5699472 1622880 5701536 1622984 5699520 -1622880 5701536 1623016 5701528 1622984 5699520 1622400 5699472 -1622400 5699472 1622664 5701568 1622880 5701536 1622984 5699520 -1622400 5699472 1622440 5701576 1622664 5701568 1622984 5699520 -1622880 5701536 1623016 5701528 1622984 5699520 1622664 5701568 -1622400 5699472 1622664 5701568 1622984 5699520 1622872 5699464 -1622928 5699472 1622896 5699464 1622872 5699464 1622984 5699520 -1622872 5699464 1622400 5699472 1622984 5699520 1622928 5699472 -1623016 5701528 1624288 5701080 1622984 5699520 1622880 5701536 -1622872 5699464 1622736 5699440 1622400 5699472 1622984 5699520 -1622736 5699440 1622584 5699424 1622400 5699472 1622984 5699520 -1622872 5699464 1622832 5699440 1622736 5699440 1622984 5699520 -1622400 5699472 1622664 5701568 1622984 5699520 1622736 5699440 -1622872 5699464 1622736 5699440 1622984 5699520 1622928 5699472 -1623016 5701528 1623192 5701576 1624288 5701080 1622984 5699520 -1624288 5701080 1624344 5701024 1622984 5699520 1623016 5701528 -1624344 5701024 1624408 5700984 1622984 5699520 1624288 5701080 -1622984 5699520 1622712 5698216 1622928 5699472 1622872 5699464 -1624408 5700984 1624496 5700960 1622984 5699520 1624344 5701024 -1622984 5699520 1624496 5700960 1625176 5698752 1625104 5698680 -1624496 5700960 1625176 5698752 1622984 5699520 1624408 5700984 -1622880 5701536 1622984 5699584 1622984 5699520 1622664 5701568 -1622984 5699520 1622400 5699472 1622664 5701568 1622984 5699584 -1622400 5699472 1622440 5701576 1622664 5701568 1622984 5699584 -1622400 5699472 1622216 5701544 1622440 5701576 1622984 5699584 -1622664 5701568 1622880 5701536 1622984 5699584 1622440 5701576 -1622400 5699472 1622440 5701576 1622984 5699584 1622984 5699520 -1622984 5699520 1622736 5699440 1622400 5699472 1622984 5699584 -1622736 5699440 1622584 5699424 1622400 5699472 1622984 5699584 -1622400 5699472 1622440 5701576 1622984 5699584 1622736 5699440 -1622984 5699520 1622984 5699584 1623016 5701528 1624288 5701080 -1622984 5699520 1622872 5699464 1622736 5699440 1622984 5699584 -1622872 5699464 1622832 5699440 1622736 5699440 1622984 5699584 -1622736 5699440 1622400 5699472 1622984 5699584 1622872 5699464 -1622984 5699520 1622928 5699472 1622872 5699464 1622984 5699584 -1622928 5699472 1622896 5699464 1622872 5699464 1622984 5699584 -1622928 5699472 1622896 5699464 1622984 5699584 1622984 5699520 -1622872 5699464 1622736 5699440 1622984 5699584 1622896 5699464 -1623016 5701528 1623192 5701576 1624288 5701080 1622984 5699584 -1624288 5701080 1622984 5699520 1622984 5699584 1623192 5701576 -1622984 5699520 1622984 5699584 1624288 5701080 1624344 5701024 -1622984 5699584 1623192 5701576 1624288 5701080 1624344 5701024 -1622984 5699520 1622984 5699584 1624344 5701024 1624408 5700984 -1622984 5699584 1624288 5701080 1624344 5701024 1624408 5700984 -1622984 5699520 1622984 5699584 1624408 5700984 1624496 5700960 -1622984 5699584 1624344 5701024 1624408 5700984 1624496 5700960 -1622984 5699584 1624496 5700960 1622984 5699520 1622928 5699472 -1622984 5699520 1622984 5699584 1624496 5700960 1625176 5698752 -1624496 5700960 1625448 5700568 1625176 5698752 1622984 5699584 -1622984 5699584 1624408 5700984 1624496 5700960 1625176 5698752 -1622984 5699520 1622984 5699584 1625176 5698752 1625104 5698680 -1622984 5699520 1622984 5699584 1625104 5698680 1625032 5698608 -1622984 5699520 1622928 5699472 1622984 5699584 1625104 5698680 -1622984 5699584 1624496 5700960 1625176 5698752 1625104 5698680 -1622984 5699584 1622880 5701536 1623016 5701528 1623192 5701576 -1622880 5701536 1623016 5701528 1622984 5699584 1622664 5701568 -1623192 5701576 1624224 5701208 1624288 5701080 1622984 5699584 -1622984 5699584 1622928 5699640 1622440 5701576 1622664 5701568 -1622440 5701576 1622928 5699640 1622400 5699472 1622216 5701544 -1622400 5699472 1621816 5701384 1622216 5701544 1622928 5699640 -1622216 5701544 1622440 5701576 1622928 5699640 1621816 5701384 -1622984 5699584 1622928 5699640 1622664 5701568 1622880 5701536 -1622928 5699640 1622440 5701576 1622664 5701568 1622880 5701536 -1622400 5699472 1622928 5699640 1622984 5699584 1622736 5699440 -1622400 5699472 1622928 5699640 1622736 5699440 1622584 5699424 -1622400 5699472 1622928 5699640 1622584 5699424 1622496 5699416 -1622736 5699440 1622648 5699416 1622584 5699424 1622928 5699640 -1622928 5699640 1622984 5699584 1622736 5699440 1622584 5699424 -1622400 5699472 1621712 5701344 1621816 5701384 1622928 5699640 -1622984 5699584 1622872 5699464 1622736 5699440 1622928 5699640 -1622736 5699440 1622584 5699424 1622928 5699640 1622872 5699464 -1622872 5699464 1622832 5699440 1622736 5699440 1622928 5699640 -1622984 5699584 1622896 5699464 1622872 5699464 1622928 5699640 -1622872 5699464 1622736 5699440 1622928 5699640 1622896 5699464 -1622984 5699584 1622928 5699472 1622896 5699464 1622928 5699640 -1622984 5699584 1622984 5699520 1622928 5699472 1622928 5699640 -1622896 5699464 1622872 5699464 1622928 5699640 1622928 5699472 -1622984 5699584 1622928 5699472 1622928 5699640 1622880 5701536 -1622984 5699584 1622928 5699640 1622880 5701536 1623016 5701528 -1622928 5699640 1622664 5701568 1622880 5701536 1623016 5701528 -1622984 5699584 1622928 5699640 1623016 5701528 1623192 5701576 -1622984 5699584 1622928 5699640 1623192 5701576 1624288 5701080 -1622984 5699584 1622928 5699640 1624288 5701080 1624344 5701024 -1622928 5699640 1623192 5701576 1624288 5701080 1624344 5701024 -1622984 5699584 1622928 5699640 1624344 5701024 1624408 5700984 -1622928 5699640 1623016 5701528 1623192 5701576 1624288 5701080 -1622984 5699584 1622928 5699472 1622928 5699640 1624344 5701024 -1622928 5699640 1622880 5701536 1623016 5701528 1623192 5701576 -1622928 5699640 1622216 5701544 1622440 5701576 1622664 5701568 -1622928 5699640 1622584 5699424 1622400 5699472 1621816 5701384 -1623192 5701576 1624224 5701208 1624288 5701080 1622928 5699640 -1622928 5699640 1622880 5699664 1621816 5701384 1622216 5701544 -1622928 5699640 1622880 5699664 1622216 5701544 1622440 5701576 -1622880 5699664 1621816 5701384 1622216 5701544 1622440 5701576 -1621816 5701384 1622880 5699664 1622400 5699472 1621712 5701344 -1622928 5699640 1622880 5699664 1622440 5701576 1622664 5701568 -1622928 5699640 1622880 5699664 1622664 5701568 1622880 5701536 -1622880 5699664 1622216 5701544 1622440 5701576 1622664 5701568 -1622928 5699640 1622880 5699664 1622880 5701536 1623016 5701528 -1622880 5699664 1622664 5701568 1622880 5701536 1623016 5701528 -1622928 5699640 1622880 5699664 1623016 5701528 1623192 5701576 -1622880 5699664 1622440 5701576 1622664 5701568 1622880 5701536 -1622928 5699640 1622400 5699472 1622880 5699664 1623016 5701528 -1622400 5699472 1622880 5699664 1622928 5699640 1622584 5699424 -1622928 5699640 1622736 5699440 1622584 5699424 1622880 5699664 -1622400 5699472 1622880 5699664 1622584 5699424 1622496 5699416 -1622736 5699440 1622648 5699416 1622584 5699424 1622880 5699664 -1622928 5699640 1622872 5699464 1622736 5699440 1622880 5699664 -1622736 5699440 1622584 5699424 1622880 5699664 1622872 5699464 -1622872 5699464 1622832 5699440 1622736 5699440 1622880 5699664 -1622928 5699640 1622896 5699464 1622872 5699464 1622880 5699664 -1622880 5699664 1623016 5701528 1622928 5699640 1622872 5699464 -1622584 5699424 1622400 5699472 1622880 5699664 1622736 5699440 -1622880 5699664 1622400 5699472 1621816 5701384 1622216 5701544 -1622400 5699472 1621816 5701384 1622880 5699664 1622584 5699424 -1621816 5701384 1622808 5699680 1622400 5699472 1621712 5701344 -1622880 5699664 1622808 5699680 1621816 5701384 1622216 5701544 -1622880 5699664 1622808 5699680 1622216 5701544 1622440 5701576 -1622880 5699664 1622808 5699680 1622440 5701576 1622664 5701568 -1622808 5699680 1622216 5701544 1622440 5701576 1622664 5701568 -1622880 5699664 1622808 5699680 1622664 5701568 1622880 5701536 -1622880 5699664 1622808 5699680 1622880 5701536 1623016 5701528 -1622808 5699680 1622440 5701576 1622664 5701568 1622880 5701536 -1622880 5699664 1622808 5699680 1623016 5701528 1622928 5699640 -1622808 5699680 1622664 5701568 1622880 5701536 1623016 5701528 -1622808 5699680 1621816 5701384 1622216 5701544 1622440 5701576 -1622880 5699664 1622400 5699472 1622808 5699680 1623016 5701528 -1622400 5699472 1622808 5699680 1622880 5699664 1622584 5699424 -1622400 5699472 1622808 5699680 1622584 5699424 1622496 5699416 -1622880 5699664 1622736 5699440 1622584 5699424 1622808 5699680 -1622880 5699664 1622872 5699464 1622736 5699440 1622808 5699680 -1622736 5699440 1622648 5699416 1622584 5699424 1622808 5699680 -1622880 5699664 1622928 5699640 1622872 5699464 1622808 5699680 -1622872 5699464 1622832 5699440 1622736 5699440 1622808 5699680 -1622872 5699464 1622832 5699440 1622808 5699680 1622880 5699664 -1622736 5699440 1622648 5699416 1622808 5699680 1622832 5699440 -1622808 5699680 1623016 5701528 1622880 5699664 1622872 5699464 -1622584 5699424 1622400 5699472 1622808 5699680 1622648 5699416 -1622808 5699680 1622400 5699472 1621816 5701384 1622216 5701544 -1622400 5699472 1621816 5701384 1622808 5699680 1622584 5699424 -1621816 5701384 1622720 5699680 1622400 5699472 1621712 5701344 -1622400 5699472 1621576 5701360 1621712 5701344 1622720 5699680 -1622808 5699680 1622720 5699680 1621816 5701384 1622216 5701544 -1622808 5699680 1622720 5699680 1622216 5701544 1622440 5701576 -1622808 5699680 1622720 5699680 1622440 5701576 1622664 5701568 -1622808 5699680 1622720 5699680 1622664 5701568 1622880 5701536 -1622720 5699680 1622440 5701576 1622664 5701568 1622880 5701536 -1622808 5699680 1622720 5699680 1622880 5701536 1623016 5701528 -1622720 5699680 1622216 5701544 1622440 5701576 1622664 5701568 -1622720 5699680 1621816 5701384 1622216 5701544 1622440 5701576 -1622808 5699680 1622400 5699472 1622720 5699680 1622880 5701536 -1622400 5699472 1622720 5699680 1622808 5699680 1622584 5699424 -1622400 5699472 1622720 5699680 1622584 5699424 1622496 5699416 -1622808 5699680 1622648 5699416 1622584 5699424 1622720 5699680 -1622808 5699680 1622736 5699440 1622648 5699416 1622720 5699680 -1622808 5699680 1622832 5699440 1622736 5699440 1622720 5699680 -1622648 5699416 1622584 5699424 1622720 5699680 1622736 5699440 -1622720 5699680 1622880 5701536 1622808 5699680 1622736 5699440 -1622584 5699424 1622400 5699472 1622720 5699680 1622648 5699416 -1621816 5701384 1622216 5701544 1622720 5699680 1621712 5701344 -1622720 5699680 1622584 5699424 1622400 5699472 1621712 5701344 -1622720 5699680 1622640 5699656 1621712 5701344 1621816 5701384 -1621712 5701344 1622640 5699656 1622400 5699472 1621576 5701360 -1622720 5699680 1622640 5699656 1621816 5701384 1622216 5701544 -1622640 5699656 1621712 5701344 1621816 5701384 1622216 5701544 -1622720 5699680 1622640 5699656 1622216 5701544 1622440 5701576 -1622720 5699680 1622400 5699472 1622640 5699656 1622216 5701544 -1622400 5699472 1622640 5699656 1622720 5699680 1622584 5699424 -1622400 5699472 1622640 5699656 1622584 5699424 1622496 5699416 -1622720 5699680 1622648 5699416 1622584 5699424 1622640 5699656 -1622720 5699680 1622736 5699440 1622648 5699416 1622640 5699656 -1622720 5699680 1622808 5699680 1622736 5699440 1622640 5699656 -1622648 5699416 1622584 5699424 1622640 5699656 1622736 5699440 -1622640 5699656 1622216 5701544 1622720 5699680 1622736 5699440 -1622640 5699656 1622648 5699416 1622584 5699424 1622496 5699416 -1622640 5699656 1622400 5699472 1621712 5701344 1621816 5701384 -1622400 5699472 1621712 5701344 1622640 5699656 1622496 5699416 -1622400 5699472 1622640 5699656 1622496 5699416 1622424 5699440 -1621712 5701344 1622544 5699656 1622400 5699472 1621576 5701360 -1622640 5699656 1622544 5699656 1621712 5701344 1621816 5701384 -1622640 5699656 1622544 5699656 1621816 5701384 1622216 5701544 -1622640 5699656 1622544 5699656 1622216 5701544 1622720 5699680 -1622544 5699656 1621816 5701384 1622216 5701544 1622720 5699680 -1622216 5701544 1622440 5701576 1622720 5699680 1622544 5699656 -1622216 5701544 1622440 5701576 1622544 5699656 1621816 5701384 -1622440 5701576 1622664 5701568 1622720 5699680 1622544 5699656 -1622720 5699680 1622640 5699656 1622544 5699656 1622440 5701576 -1622544 5699656 1621712 5701344 1621816 5701384 1622216 5701544 -1622640 5699656 1622400 5699472 1622544 5699656 1622720 5699680 -1622400 5699472 1622544 5699656 1622640 5699656 1622496 5699416 -1622640 5699656 1622584 5699424 1622496 5699416 1622544 5699656 -1622640 5699656 1622648 5699416 1622584 5699424 1622544 5699656 -1622544 5699656 1622720 5699680 1622640 5699656 1622584 5699424 -1622496 5699416 1622400 5699472 1622544 5699656 1622584 5699424 -1622544 5699656 1622400 5699472 1621712 5701344 1621816 5701384 -1622400 5699472 1621712 5701344 1622544 5699656 1622496 5699416 -1622400 5699472 1622544 5699656 1622496 5699416 1622424 5699440 -1621712 5701344 1622456 5699632 1622400 5699472 1621576 5701360 -1622544 5699656 1622456 5699632 1621712 5701344 1621816 5701384 -1622544 5699656 1622456 5699632 1621816 5701384 1622216 5701544 -1622544 5699656 1622400 5699472 1622456 5699632 1621816 5701384 -1622400 5699472 1622456 5699632 1622544 5699656 1622496 5699416 -1622544 5699656 1622584 5699424 1622496 5699416 1622456 5699632 -1622544 5699656 1622640 5699656 1622584 5699424 1622456 5699632 -1622456 5699632 1621816 5701384 1622544 5699656 1622584 5699424 -1622496 5699416 1622400 5699472 1622456 5699632 1622584 5699424 -1621712 5701344 1621816 5701384 1622456 5699632 1621576 5701360 -1622456 5699632 1622496 5699416 1622400 5699472 1621576 5701360 -1622400 5699472 1622456 5699632 1622496 5699416 1622424 5699440 -1622400 5699472 1620064 5698616 1621576 5701360 1622456 5699632 -1622456 5699632 1622424 5699592 1621576 5701360 1621712 5701344 -1622456 5699632 1622424 5699592 1621712 5701344 1621816 5701384 -1622456 5699632 1622400 5699472 1622424 5699592 1621712 5701344 -1622400 5699472 1622424 5699592 1622456 5699632 1622496 5699416 -1622456 5699632 1622584 5699424 1622496 5699416 1622424 5699592 -1622456 5699632 1622544 5699656 1622584 5699424 1622424 5699592 -1622544 5699656 1622640 5699656 1622584 5699424 1622424 5699592 -1622584 5699424 1622496 5699416 1622424 5699592 1622544 5699656 -1622424 5699592 1621712 5701344 1622456 5699632 1622544 5699656 -1622496 5699416 1622400 5699472 1622424 5699592 1622584 5699424 -1622424 5699592 1622400 5699472 1621576 5701360 1621712 5701344 -1622400 5699472 1621576 5701360 1622424 5699592 1622496 5699416 -1622400 5699472 1622424 5699592 1622496 5699416 1622424 5699440 -1621576 5701360 1622424 5699592 1622400 5699472 1620064 5698616 -1621576 5701360 1621712 5701344 1622424 5699592 1620064 5698616 -1622424 5699592 1622496 5699416 1622400 5699472 1620064 5698616 -1622400 5699472 1620144 5698568 1620064 5698616 1622424 5699592 -1622400 5699472 1620144 5698568 1622424 5699592 1622496 5699416 -1622400 5699472 1620184 5698536 1620144 5698568 1622424 5699592 -1621576 5701360 1622424 5699592 1620064 5698616 1619976 5698672 -1620144 5698568 1620104 5698584 1620064 5698616 1622424 5699592 -1620064 5698616 1621576 5701360 1622424 5699592 1620144 5698568 -1622400 5699472 1622392 5699552 1622424 5699592 1622496 5699416 -1622424 5699592 1622392 5699552 1620144 5698568 1620064 5698616 -1622424 5699592 1622400 5699472 1622392 5699552 1620064 5698616 -1622392 5699552 1622400 5699472 1620144 5698568 1620064 5698616 -1620144 5698568 1622392 5699552 1622400 5699472 1620184 5698536 -1620144 5698568 1620064 5698616 1622392 5699552 1620184 5698536 -1622392 5699552 1622424 5699592 1622400 5699472 1620184 5698536 -1620144 5698568 1620104 5698584 1620064 5698616 1622392 5699552 -1622424 5699592 1622392 5699552 1620064 5698616 1621576 5701360 -1622424 5699592 1622392 5699552 1621576 5701360 1621712 5701344 -1622424 5699592 1622392 5699552 1621712 5701344 1622456 5699632 -1622424 5699592 1622400 5699472 1622392 5699552 1621712 5701344 -1622392 5699552 1620144 5698568 1620064 5698616 1621576 5701360 -1620064 5698616 1619976 5698672 1621576 5701360 1622392 5699552 -1622392 5699552 1620064 5698616 1621576 5701360 1621712 5701344 -1622400 5699472 1620224 5698488 1620184 5698536 1622392 5699552 -1617304 5695352 1618112 5694984 1615488 5689328 1617104 5695232 -1615488 5689328 1616824 5695056 1617104 5695232 1618112 5694984 -1615488 5689328 1616664 5694952 1616824 5695056 1618112 5694984 -1617104 5695232 1617304 5695352 1618112 5694984 1616824 5695056 -1615488 5689328 1616584 5694912 1616664 5694952 1618112 5694984 -1616664 5694952 1616824 5695056 1618112 5694984 1616584 5694912 -1615488 5689328 1616248 5694736 1616584 5694912 1618112 5694984 -1616248 5694736 1616496 5694888 1616584 5694912 1618112 5694984 -1615488 5689328 1615968 5694560 1616248 5694736 1618112 5694984 -1615488 5689328 1615416 5689384 1615968 5694560 1618112 5694984 -1616248 5694736 1616584 5694912 1618112 5694984 1615968 5694560 -1616584 5694912 1616664 5694952 1618112 5694984 1616248 5694736 -1616824 5695056 1617016 5695184 1617104 5695232 1618112 5694984 -1617104 5695232 1617304 5695352 1618112 5694984 1617016 5695184 -1616824 5695056 1617016 5695184 1618112 5694984 1616664 5694952 -1623304 5696976 1618112 5694984 1617304 5695352 1618448 5696576 -1617304 5695352 1618312 5696512 1618448 5696576 1618112 5694984 -1617304 5695352 1617336 5695448 1618312 5696512 1618112 5694984 -1617336 5695448 1617336 5695488 1618312 5696512 1618112 5694984 -1617336 5695448 1617336 5695488 1618112 5694984 1617304 5695352 -1618312 5696512 1618448 5696576 1618112 5694984 1617336 5695488 -1618448 5696576 1623304 5696976 1618112 5694984 1618312 5696512 -1623304 5696976 1618112 5694984 1618448 5696576 1618512 5696632 -1623304 5696976 1618112 5694984 1618512 5696632 1623272 5697000 -1618512 5696632 1622016 5697816 1623272 5697000 1618112 5694984 -1623272 5697000 1623304 5696976 1618112 5694984 1622016 5697816 -1618112 5694984 1618312 5696512 1618448 5696576 1618512 5696632 -1618112 5694984 1618448 5696576 1618512 5696632 1622016 5697816 -1617336 5695488 1618184 5696544 1618312 5696512 1618112 5694984 -1618512 5696632 1618552 5696712 1622016 5697816 1618112 5694984 -1622016 5697816 1622080 5697800 1623272 5697000 1618112 5694984 -1615488 5689328 1618112 5694984 1623304 5696976 1623376 5696968 -1615488 5689328 1618112 5694984 1623376 5696968 1615488 5689272 -1623376 5696968 1623464 5696976 1615488 5689272 1618112 5694984 -1618112 5694984 1623304 5696976 1623376 5696968 1615488 5689272 -1617304 5695352 1617336 5695448 1618112 5694984 1617104 5695232 -1618112 5694984 1615488 5689272 1615488 5689328 1615968 5694560 -1623304 5696976 1623376 5696968 1618112 5694984 1623272 5697000 -1615488 5689272 1618144 5694952 1623376 5696968 1623464 5696976 -1623376 5696968 1618144 5694952 1618112 5694984 1623304 5696976 -1618112 5694984 1618144 5694952 1615488 5689272 1615488 5689328 -1618112 5694984 1618144 5694952 1615488 5689328 1615968 5694560 -1615488 5689328 1615416 5689384 1615968 5694560 1618144 5694952 -1618112 5694984 1618144 5694952 1615968 5694560 1616248 5694736 -1618112 5694984 1618144 5694952 1616248 5694736 1616584 5694912 -1616248 5694736 1616496 5694888 1616584 5694912 1618144 5694952 -1618144 5694952 1615968 5694560 1616248 5694736 1616584 5694912 -1618112 5694984 1618144 5694952 1616584 5694912 1616664 5694952 -1618112 5694984 1618144 5694952 1616664 5694952 1616824 5695056 -1618144 5694952 1616248 5694736 1616584 5694912 1616664 5694952 -1618144 5694952 1616584 5694912 1616664 5694952 1616824 5695056 -1618112 5694984 1618144 5694952 1616824 5695056 1617016 5695184 -1618144 5694952 1615488 5689272 1615488 5689328 1615968 5694560 -1618144 5694952 1615488 5689328 1615968 5694560 1616248 5694736 -1618144 5694952 1616824 5695056 1618112 5694984 1623304 5696976 -1618112 5694984 1623272 5697000 1623304 5696976 1618144 5694952 -1618112 5694984 1622016 5697816 1623272 5697000 1618144 5694952 -1618112 5694984 1618512 5696632 1622016 5697816 1618144 5694952 -1622016 5697816 1623272 5697000 1618144 5694952 1618512 5696632 -1618112 5694984 1618448 5696576 1618512 5696632 1618144 5694952 -1618512 5696632 1622016 5697816 1618144 5694952 1618448 5696576 -1618112 5694984 1618312 5696512 1618448 5696576 1618144 5694952 -1618512 5696632 1618552 5696712 1622016 5697816 1618144 5694952 -1622016 5697816 1622080 5697800 1623272 5697000 1618144 5694952 -1623304 5696976 1623376 5696968 1618144 5694952 1623272 5697000 -1618112 5694984 1618448 5696576 1618144 5694952 1616824 5695056 -1623272 5697000 1623304 5696976 1618144 5694952 1622016 5697816 -1618144 5694952 1623376 5696968 1615488 5689272 1615488 5689328 -1623376 5696968 1615488 5689272 1618144 5694952 1623304 5696976 -1615488 5689272 1618208 5694912 1623376 5696968 1623464 5696976 -1618144 5694952 1618208 5694912 1615488 5689272 1615488 5689328 -1618144 5694952 1618208 5694912 1615488 5689328 1615968 5694560 -1615488 5689328 1615416 5689384 1615968 5694560 1618208 5694912 -1618144 5694952 1618208 5694912 1615968 5694560 1616248 5694736 -1618144 5694952 1618208 5694912 1616248 5694736 1616584 5694912 -1616248 5694736 1616496 5694888 1616584 5694912 1618208 5694912 -1618144 5694952 1618208 5694912 1616584 5694912 1616664 5694952 -1618208 5694912 1616248 5694736 1616584 5694912 1616664 5694952 -1618144 5694952 1618208 5694912 1616664 5694952 1616824 5695056 -1618208 5694912 1615488 5689328 1615968 5694560 1616248 5694736 -1618208 5694912 1615968 5694560 1616248 5694736 1616584 5694912 -1618208 5694912 1615488 5689272 1615488 5689328 1615968 5694560 -1618144 5694952 1623376 5696968 1618208 5694912 1616664 5694952 -1623376 5696968 1618208 5694912 1618144 5694952 1623304 5696976 -1618144 5694952 1623272 5697000 1623304 5696976 1618208 5694912 -1618144 5694952 1622016 5697816 1623272 5697000 1618208 5694912 -1618144 5694952 1618512 5696632 1622016 5697816 1618208 5694912 -1618144 5694952 1618448 5696576 1618512 5696632 1618208 5694912 -1618512 5696632 1622016 5697816 1618208 5694912 1618448 5696576 -1618144 5694952 1618112 5694984 1618448 5696576 1618208 5694912 -1618448 5696576 1618512 5696632 1618208 5694912 1618112 5694984 -1618112 5694984 1618312 5696512 1618448 5696576 1618208 5694912 -1618448 5696576 1618512 5696632 1618208 5694912 1618312 5696512 -1618112 5694984 1617336 5695488 1618312 5696512 1618208 5694912 -1618112 5694984 1618312 5696512 1618208 5694912 1618144 5694952 -1618512 5696632 1618552 5696712 1622016 5697816 1618208 5694912 -1622016 5697816 1622080 5697800 1623272 5697000 1618208 5694912 -1623272 5697000 1623304 5696976 1618208 5694912 1622016 5697816 -1622016 5697816 1623272 5697000 1618208 5694912 1618512 5696632 -1618208 5694912 1616664 5694952 1618144 5694952 1618112 5694984 -1623304 5696976 1623376 5696968 1618208 5694912 1623272 5697000 -1618208 5694912 1623376 5696968 1615488 5689272 1615488 5689328 -1623376 5696968 1615488 5689272 1618208 5694912 1623304 5696976 -1615488 5689272 1618256 5694904 1623376 5696968 1623464 5696976 -1618208 5694912 1618256 5694904 1615488 5689272 1615488 5689328 -1618208 5694912 1618256 5694904 1615488 5689328 1615968 5694560 -1618208 5694912 1623376 5696968 1618256 5694904 1615488 5689328 -1623376 5696968 1618256 5694904 1618208 5694912 1623304 5696976 -1618208 5694912 1623272 5697000 1623304 5696976 1618256 5694904 -1618208 5694912 1622016 5697816 1623272 5697000 1618256 5694904 -1622016 5697816 1622080 5697800 1623272 5697000 1618256 5694904 -1618208 5694912 1618512 5696632 1622016 5697816 1618256 5694904 -1618208 5694912 1618448 5696576 1618512 5696632 1618256 5694904 -1618208 5694912 1618312 5696512 1618448 5696576 1618256 5694904 -1618448 5696576 1618512 5696632 1618256 5694904 1618312 5696512 -1618208 5694912 1618112 5694984 1618312 5696512 1618256 5694904 -1618312 5696512 1618448 5696576 1618256 5694904 1618112 5694984 -1618112 5694984 1617336 5695488 1618312 5696512 1618256 5694904 -1618208 5694912 1618144 5694952 1618112 5694984 1618256 5694904 -1618112 5694984 1618312 5696512 1618256 5694904 1618144 5694952 -1618512 5696632 1618552 5696712 1622016 5697816 1618256 5694904 -1622016 5697816 1623272 5697000 1618256 5694904 1618512 5696632 -1618512 5696632 1622016 5697816 1618256 5694904 1618448 5696576 -1623272 5697000 1623304 5696976 1618256 5694904 1622016 5697816 -1618256 5694904 1615488 5689328 1618208 5694912 1618144 5694952 -1623304 5696976 1623376 5696968 1618256 5694904 1623272 5697000 -1618256 5694904 1623376 5696968 1615488 5689272 1615488 5689328 -1623376 5696968 1615488 5689272 1618256 5694904 1623304 5696976 -1615488 5689272 1618304 5694912 1623376 5696968 1623464 5696976 -1618256 5694904 1618304 5694912 1615488 5689272 1615488 5689328 -1618256 5694904 1618304 5694912 1615488 5689328 1618208 5694912 -1618256 5694904 1623376 5696968 1618304 5694912 1615488 5689328 -1623376 5696968 1618304 5694912 1618256 5694904 1623304 5696976 -1618256 5694904 1623272 5697000 1623304 5696976 1618304 5694912 -1618256 5694904 1622016 5697816 1623272 5697000 1618304 5694912 -1622016 5697816 1622080 5697800 1623272 5697000 1618304 5694912 -1618256 5694904 1618512 5696632 1622016 5697816 1618304 5694912 -1618512 5696632 1618552 5696712 1622016 5697816 1618304 5694912 -1618256 5694904 1618448 5696576 1618512 5696632 1618304 5694912 -1618256 5694904 1618312 5696512 1618448 5696576 1618304 5694912 -1618256 5694904 1618112 5694984 1618312 5696512 1618304 5694912 -1618312 5696512 1618448 5696576 1618304 5694912 1618112 5694984 -1618112 5694984 1617336 5695488 1618312 5696512 1618304 5694912 -1618256 5694904 1618144 5694952 1618112 5694984 1618304 5694912 -1618112 5694984 1618312 5696512 1618304 5694912 1618144 5694952 -1618256 5694904 1618208 5694912 1618144 5694952 1618304 5694912 -1618144 5694952 1618112 5694984 1618304 5694912 1618208 5694912 -1618512 5696632 1622016 5697816 1618304 5694912 1618448 5696576 -1618448 5696576 1618512 5696632 1618304 5694912 1618312 5696512 -1622016 5697816 1623272 5697000 1618304 5694912 1618512 5696632 -1623272 5697000 1623304 5696976 1618304 5694912 1622016 5697816 -1618304 5694912 1615488 5689328 1618256 5694904 1618208 5694912 -1623304 5696976 1623376 5696968 1618304 5694912 1623272 5697000 -1618304 5694912 1623376 5696968 1615488 5689272 1615488 5689328 -1623376 5696968 1615488 5689272 1618304 5694912 1623304 5696976 -1623272 5697000 1618392 5694976 1622016 5697816 1622080 5697800 -1622016 5697816 1618392 5694976 1618304 5694912 1618512 5696632 -1622016 5697816 1618392 5694976 1618512 5696632 1618552 5696712 -1618304 5694912 1618448 5696576 1618512 5696632 1618392 5694976 -1622016 5697816 1623272 5697000 1618392 5694976 1618552 5696712 -1618304 5694912 1618312 5696512 1618448 5696576 1618392 5694976 -1618304 5694912 1618112 5694984 1618312 5696512 1618392 5694976 -1618304 5694912 1618144 5694952 1618112 5694984 1618392 5694976 -1618112 5694984 1618312 5696512 1618392 5694976 1618144 5694952 -1618112 5694984 1617336 5695488 1618312 5696512 1618392 5694976 -1618304 5694912 1618208 5694912 1618144 5694952 1618392 5694976 -1618448 5696576 1618512 5696632 1618392 5694976 1618312 5696512 -1618312 5696512 1618448 5696576 1618392 5694976 1618112 5694984 -1618392 5694976 1618448 5696576 1618512 5696632 1618552 5696712 -1618304 5694912 1618392 5694976 1623272 5697000 1623304 5696976 -1618304 5694912 1618392 5694976 1623304 5696976 1623376 5696968 -1618392 5694976 1623272 5697000 1623304 5696976 1623376 5696968 -1618392 5694976 1623376 5696968 1618304 5694912 1618144 5694952 -1618304 5694912 1618392 5694976 1623376 5696968 1615488 5689272 -1623376 5696968 1623464 5696976 1615488 5689272 1618392 5694976 -1618392 5694976 1623304 5696976 1623376 5696968 1615488 5689272 -1618304 5694912 1618392 5694976 1615488 5689272 1615488 5689328 -1618304 5694912 1618392 5694976 1615488 5689328 1618256 5694904 -1618304 5694912 1618144 5694952 1618392 5694976 1615488 5689328 -1618392 5694976 1623376 5696968 1615488 5689272 1615488 5689328 -1618392 5694976 1622016 5697816 1623272 5697000 1623304 5696976 -1622016 5697816 1618392 5694976 1618552 5696712 1621936 5697864 -1618512 5696632 1618528 5696672 1618552 5696712 1618392 5694976 -1618552 5696712 1618456 5695040 1618392 5694976 1618512 5696632 -1618392 5694976 1618456 5695040 1622016 5697816 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1618456 5695040 -1618456 5695040 1623272 5697000 1618392 5694976 1618512 5696632 -1618456 5695040 1618552 5696712 1622016 5697816 1623272 5697000 -1618552 5696712 1622016 5697816 1618456 5695040 1618512 5696632 -1618392 5694976 1618448 5696576 1618512 5696632 1618456 5695040 -1618512 5696632 1618552 5696712 1618456 5695040 1618448 5696576 -1618392 5694976 1618312 5696512 1618448 5696576 1618456 5695040 -1618392 5694976 1618312 5696512 1618456 5695040 1623272 5697000 -1618392 5694976 1618112 5694984 1618312 5696512 1618456 5695040 -1618392 5694976 1618144 5694952 1618112 5694984 1618456 5695040 -1618112 5694984 1617336 5695488 1618312 5696512 1618456 5695040 -1618312 5696512 1618448 5696576 1618456 5695040 1618112 5694984 -1618392 5694976 1618112 5694984 1618456 5695040 1623272 5697000 -1618448 5696576 1618512 5696632 1618456 5695040 1618312 5696512 -1618392 5694976 1618456 5695040 1623272 5697000 1623304 5696976 -1618456 5695040 1622016 5697816 1623272 5697000 1623304 5696976 -1618392 5694976 1618112 5694984 1618456 5695040 1623304 5696976 -1618392 5694976 1618456 5695040 1623304 5696976 1623376 5696968 -1618392 5694976 1618112 5694984 1618456 5695040 1623376 5696968 -1618392 5694976 1618456 5695040 1623376 5696968 1615488 5689272 -1618456 5695040 1623272 5697000 1623304 5696976 1623376 5696968 -1622016 5697816 1618456 5695040 1618552 5696712 1621936 5697864 -1618552 5696712 1618456 5695040 1618512 5696632 1618528 5696672 -1618456 5695040 1618456 5695136 1618512 5696632 1618552 5696712 -1618456 5695040 1618448 5696576 1618456 5695136 1618552 5696712 -1618456 5695040 1618456 5695136 1618552 5696712 1622016 5697816 -1618456 5695136 1618512 5696632 1618552 5696712 1622016 5697816 -1618456 5695040 1618456 5695136 1622016 5697816 1623272 5697000 -1622016 5697816 1622080 5697800 1623272 5697000 1618456 5695136 -1618456 5695040 1618456 5695136 1623272 5697000 1623304 5696976 -1618456 5695040 1618448 5696576 1618456 5695136 1623272 5697000 -1618456 5695136 1618552 5696712 1622016 5697816 1623272 5697000 -1618456 5695136 1618448 5696576 1618512 5696632 1618552 5696712 -1618448 5696576 1618456 5695136 1618456 5695040 1618312 5696512 -1618456 5695040 1618112 5694984 1618312 5696512 1618456 5695136 -1618112 5694984 1617336 5695488 1618312 5696512 1618456 5695136 -1618112 5694984 1617336 5695448 1617336 5695488 1618456 5695136 -1617336 5695488 1618184 5696544 1618312 5696512 1618456 5695136 -1617336 5695488 1617328 5696064 1618184 5696544 1618456 5695136 -1617336 5695488 1617288 5695576 1617328 5696064 1618456 5695136 -1617328 5696064 1617424 5696248 1618184 5696544 1618456 5695136 -1617336 5695488 1617328 5696064 1618456 5695136 1618112 5694984 -1618184 5696544 1618312 5696512 1618456 5695136 1617328 5696064 -1618112 5694984 1617336 5695488 1618456 5695136 1618456 5695040 -1618456 5695136 1623272 5697000 1618456 5695040 1618112 5694984 -1618448 5696576 1618512 5696632 1618456 5695136 1618312 5696512 -1618456 5695040 1618392 5694976 1618112 5694984 1618456 5695136 -1618392 5694976 1618144 5694952 1618112 5694984 1618456 5695136 -1618112 5694984 1617336 5695488 1618456 5695136 1618392 5694976 -1618456 5695040 1618392 5694976 1618456 5695136 1623272 5697000 -1618312 5696512 1618448 5696576 1618456 5695136 1618184 5696544 -1618552 5696712 1621936 5697864 1622016 5697816 1618456 5695136 -1618512 5696632 1618528 5696672 1618552 5696712 1618456 5695136 -1618184 5696544 1618400 5695224 1617328 5696064 1617424 5696248 -1618184 5696544 1618400 5695224 1617424 5696248 1618072 5696608 -1617328 5696064 1618400 5695224 1618456 5695136 1617336 5695488 -1617328 5696064 1618400 5695224 1617336 5695488 1617288 5695576 -1618456 5695136 1618112 5694984 1617336 5695488 1618400 5695224 -1617336 5695488 1617328 5696064 1618400 5695224 1618112 5694984 -1618112 5694984 1617336 5695448 1617336 5695488 1618400 5695224 -1618456 5695136 1618400 5695224 1618184 5696544 1618312 5696512 -1618456 5695136 1618392 5694976 1618112 5694984 1618400 5695224 -1618392 5694976 1618144 5694952 1618112 5694984 1618400 5695224 -1618112 5694984 1617336 5695488 1618400 5695224 1618392 5694976 -1618400 5695224 1618312 5696512 1618456 5695136 1618392 5694976 -1618184 5696544 1618312 5696512 1618400 5695224 1617424 5696248 -1618400 5695224 1617336 5695488 1617328 5696064 1617424 5696248 -1618456 5695136 1618456 5695040 1618392 5694976 1618400 5695224 -1618456 5695136 1618400 5695224 1618312 5696512 1618448 5696576 -1618400 5695224 1618184 5696544 1618312 5696512 1618448 5696576 -1618456 5695136 1618392 5694976 1618400 5695224 1618448 5696576 -1618456 5695136 1618400 5695224 1618448 5696576 1618512 5696632 -1618456 5695136 1618400 5695224 1618512 5696632 1618552 5696712 -1618456 5695136 1618392 5694976 1618400 5695224 1618512 5696632 -1618400 5695224 1618312 5696512 1618448 5696576 1618512 5696632 -1617328 5696064 1618352 5695256 1617336 5695488 1617288 5695576 -1617336 5695488 1618352 5695256 1618400 5695224 1618112 5694984 -1617336 5695488 1618352 5695256 1618112 5694984 1617336 5695448 -1618352 5695256 1618400 5695224 1618112 5694984 1617336 5695448 -1618112 5694984 1617304 5695352 1617336 5695448 1618352 5695256 -1618400 5695224 1618392 5694976 1618112 5694984 1618352 5695256 -1618112 5694984 1617336 5695448 1618352 5695256 1618392 5694976 -1618392 5694976 1618144 5694952 1618112 5694984 1618352 5695256 -1618400 5695224 1618456 5695136 1618392 5694976 1618352 5695256 -1618352 5695256 1617328 5696064 1618400 5695224 1618392 5694976 -1618400 5695224 1618352 5695256 1617328 5696064 1617424 5696248 -1618400 5695224 1618352 5695256 1617424 5696248 1618184 5696544 -1617424 5696248 1618072 5696608 1618184 5696544 1618352 5695256 -1618400 5695224 1618352 5695256 1618184 5696544 1618312 5696512 -1618352 5695256 1617424 5696248 1618184 5696544 1618312 5696512 -1618400 5695224 1618352 5695256 1618312 5696512 1618448 5696576 -1618352 5695256 1618184 5696544 1618312 5696512 1618448 5696576 -1618400 5695224 1618392 5694976 1618352 5695256 1618448 5696576 -1618352 5695256 1617328 5696064 1617424 5696248 1618184 5696544 -1618352 5695256 1617336 5695488 1617328 5696064 1617424 5696248 -1617336 5695488 1617328 5696064 1618352 5695256 1617336 5695448 -1618400 5695224 1618352 5695256 1618448 5696576 1618512 5696632 -1617336 5695448 1618312 5695264 1618352 5695256 1618112 5694984 -1618352 5695256 1618392 5694976 1618112 5694984 1618312 5695264 -1618112 5694984 1617336 5695448 1618312 5695264 1618392 5694976 -1618392 5694976 1618144 5694952 1618112 5694984 1618312 5695264 -1618392 5694976 1618144 5694952 1618312 5695264 1618352 5695256 -1618392 5694976 1618304 5694912 1618144 5694952 1618312 5695264 -1618112 5694984 1617336 5695448 1618312 5695264 1618144 5694952 -1617336 5695448 1618312 5695264 1618112 5694984 1617304 5695352 -1618352 5695256 1618400 5695224 1618392 5694976 1618312 5695264 -1618392 5694976 1618144 5694952 1618312 5695264 1618400 5695224 -1618400 5695224 1618456 5695136 1618392 5694976 1618312 5695264 -1618312 5695264 1617336 5695488 1618352 5695256 1618400 5695224 -1618352 5695256 1618312 5695264 1617336 5695488 1617328 5696064 -1617336 5695488 1617288 5695576 1617328 5696064 1618312 5695264 -1618352 5695256 1618312 5695264 1617328 5696064 1617424 5696248 -1618352 5695256 1618312 5695264 1617424 5696248 1618184 5696544 -1618352 5695256 1618312 5695264 1618184 5696544 1618312 5696512 -1617424 5696248 1618072 5696608 1618184 5696544 1618312 5695264 -1618352 5695256 1618312 5695264 1618312 5696512 1618448 5696576 -1618312 5695264 1617424 5696248 1618184 5696544 1618312 5696512 -1618312 5695264 1617328 5696064 1617424 5696248 1618184 5696544 -1618352 5695256 1618400 5695224 1618312 5695264 1618312 5696512 -1618312 5695264 1617336 5695488 1617328 5696064 1617424 5696248 -1618312 5695264 1617336 5695448 1617336 5695488 1617328 5696064 -1617336 5695448 1617336 5695488 1618312 5695264 1618112 5694984 -1618112 5694984 1618272 5695256 1618312 5695264 1618144 5694952 -1618312 5695264 1618392 5694976 1618144 5694952 1618272 5695256 -1618312 5695264 1618400 5695224 1618392 5694976 1618272 5695256 -1618392 5694976 1618304 5694912 1618144 5694952 1618272 5695256 -1618144 5694952 1618112 5694984 1618272 5695256 1618392 5694976 -1618392 5694976 1618144 5694952 1618272 5695256 1618400 5695224 -1617336 5695448 1618272 5695256 1618112 5694984 1617304 5695352 -1618312 5695264 1618352 5695256 1618400 5695224 1618272 5695256 -1618400 5695224 1618392 5694976 1618272 5695256 1618352 5695256 -1618400 5695224 1618456 5695136 1618392 5694976 1618272 5695256 -1618272 5695256 1617336 5695448 1618312 5695264 1618352 5695256 -1618312 5695264 1618272 5695256 1617336 5695448 1617336 5695488 -1618312 5695264 1618272 5695256 1617336 5695488 1617328 5696064 -1617336 5695488 1617288 5695576 1617328 5696064 1618272 5695256 -1618312 5695264 1618272 5695256 1617328 5696064 1617424 5696248 -1618312 5695264 1618272 5695256 1617424 5696248 1618184 5696544 -1617424 5696248 1618072 5696608 1618184 5696544 1618272 5695256 -1618312 5695264 1618272 5695256 1618184 5696544 1618312 5696512 -1618312 5695264 1618272 5695256 1618312 5696512 1618352 5695256 -1618272 5695256 1617424 5696248 1618184 5696544 1618312 5696512 -1618272 5695256 1617328 5696064 1617424 5696248 1618184 5696544 -1618272 5695256 1617336 5695488 1617328 5696064 1617424 5696248 -1618312 5695264 1618352 5695256 1618272 5695256 1618312 5696512 -1618272 5695256 1617336 5695448 1617336 5695488 1617328 5696064 -1618272 5695256 1618112 5694984 1617336 5695448 1617336 5695488 -1618112 5694984 1617336 5695448 1618272 5695256 1618144 5694952 -1617336 5695448 1618224 5695240 1618112 5694984 1617304 5695352 -1618272 5695256 1618224 5695240 1617336 5695448 1617336 5695488 -1618272 5695256 1618224 5695240 1617336 5695488 1617328 5696064 -1617336 5695488 1617288 5695576 1617328 5696064 1618224 5695240 -1618272 5695256 1618224 5695240 1617328 5696064 1617424 5696248 -1618272 5695256 1618224 5695240 1617424 5696248 1618184 5696544 -1617424 5696248 1618072 5696608 1618184 5696544 1618224 5695240 -1618272 5695256 1618224 5695240 1618184 5696544 1618312 5696512 -1618224 5695240 1617328 5696064 1617424 5696248 1618184 5696544 -1618224 5695240 1617336 5695488 1617328 5696064 1617424 5696248 -1618224 5695240 1617336 5695448 1617336 5695488 1617328 5696064 -1618272 5695256 1618112 5694984 1618224 5695240 1618184 5696544 -1618112 5694984 1618224 5695240 1618272 5695256 1618144 5694952 -1618272 5695256 1618392 5694976 1618144 5694952 1618224 5695240 -1618392 5694976 1618304 5694912 1618144 5694952 1618224 5695240 -1618272 5695256 1618400 5695224 1618392 5694976 1618224 5695240 -1618224 5695240 1618184 5696544 1618272 5695256 1618392 5694976 -1618144 5694952 1618112 5694984 1618224 5695240 1618392 5694976 -1618224 5695240 1618112 5694984 1617336 5695448 1617336 5695488 -1618112 5694984 1617336 5695448 1618224 5695240 1618144 5694952 -1617336 5695448 1618160 5695200 1618112 5694984 1617304 5695352 -1618224 5695240 1618160 5695200 1617336 5695448 1617336 5695488 -1618224 5695240 1618160 5695200 1617336 5695488 1617328 5696064 -1618224 5695240 1618112 5694984 1618160 5695200 1617336 5695488 -1618112 5694984 1618160 5695200 1618224 5695240 1618144 5694952 -1618224 5695240 1618392 5694976 1618144 5694952 1618160 5695200 -1618392 5694976 1618304 5694912 1618144 5694952 1618160 5695200 -1618224 5695240 1618272 5695256 1618392 5694976 1618160 5695200 -1618160 5695200 1617336 5695488 1618224 5695240 1618392 5694976 -1618144 5694952 1618112 5694984 1618160 5695200 1618392 5694976 -1617336 5695448 1617336 5695488 1618160 5695200 1617304 5695352 -1618160 5695200 1618144 5694952 1618112 5694984 1617304 5695352 -1618112 5694984 1617104 5695232 1617304 5695352 1618160 5695200 -1618160 5695200 1618136 5695168 1617304 5695352 1617336 5695448 -1618160 5695200 1618136 5695168 1617336 5695448 1617336 5695488 -1618160 5695200 1618112 5694984 1618136 5695168 1617336 5695448 -1618112 5694984 1618136 5695168 1618160 5695200 1618144 5694952 -1618160 5695200 1618392 5694976 1618144 5694952 1618136 5695168 -1618392 5694976 1618304 5694912 1618144 5694952 1618136 5695168 -1618304 5694912 1618208 5694912 1618144 5694952 1618136 5695168 -1618160 5695200 1618224 5695240 1618392 5694976 1618136 5695168 -1618224 5695240 1618272 5695256 1618392 5694976 1618136 5695168 -1618392 5694976 1618304 5694912 1618136 5695168 1618224 5695240 -1618136 5695168 1617336 5695448 1618160 5695200 1618224 5695240 -1618144 5694952 1618112 5694984 1618136 5695168 1618304 5694912 -1618136 5695168 1618112 5694984 1617304 5695352 1617336 5695448 -1618112 5694984 1617304 5695352 1618136 5695168 1618144 5694952 -1617304 5695352 1618136 5695168 1618112 5694984 1617104 5695232 -1618136 5695168 1618104 5695096 1617304 5695352 1617336 5695448 -1618136 5695168 1618104 5695096 1617336 5695448 1618160 5695200 -1618136 5695168 1618112 5694984 1618104 5695096 1617336 5695448 -1618112 5694984 1618104 5695096 1618136 5695168 1618144 5694952 -1618136 5695168 1618304 5694912 1618144 5694952 1618104 5695096 -1618136 5695168 1618392 5694976 1618304 5694912 1618104 5695096 -1618304 5694912 1618208 5694912 1618144 5694952 1618104 5695096 -1618136 5695168 1618224 5695240 1618392 5694976 1618104 5695096 -1618304 5694912 1618144 5694952 1618104 5695096 1618392 5694976 -1618104 5695096 1617336 5695448 1618136 5695168 1618392 5694976 -1618144 5694952 1618112 5694984 1618104 5695096 1618304 5694912 -1618104 5695096 1618112 5694984 1617304 5695352 1617336 5695448 -1618112 5694984 1617304 5695352 1618104 5695096 1618144 5694952 -1617304 5695352 1618104 5695096 1618112 5694984 1617104 5695232 -1610536 5684592 1609944 5684640 1609168 5684752 1609144 5684888 -1609168 5684752 1609944 5684640 1610400 5684392 1610288 5684272 -1609168 5684752 1609944 5684640 1610288 5684272 1609120 5684624 -1610288 5684272 1610160 5684024 1609120 5684624 1609944 5684640 -1610160 5684024 1609032 5684488 1609120 5684624 1609944 5684640 -1610160 5684024 1609464 5683512 1609032 5684488 1609944 5684640 -1610160 5684024 1609032 5684488 1609944 5684640 1610288 5684272 -1609944 5684640 1610400 5684392 1610288 5684272 1610160 5684024 -1609120 5684624 1609168 5684752 1609944 5684640 1609032 5684488 -1609944 5684640 1609120 5684624 1609168 5684752 1609144 5684888 -1609944 5684640 1610536 5684592 1610400 5684392 1610288 5684272 -1610536 5684592 1610400 5684392 1609944 5684640 1609144 5684888 -1610536 5684592 1609944 5684640 1609144 5684888 1610200 5685672 -1609944 5684640 1609168 5684752 1609144 5684888 1610200 5685672 -1610536 5684592 1610400 5684392 1609944 5684640 1610200 5685672 -1609144 5684888 1610168 5685696 1610200 5685672 1609944 5684640 -1609144 5684888 1610168 5685696 1609944 5684640 1609168 5684752 -1609144 5684888 1610080 5685800 1610168 5685696 1609944 5684640 -1610200 5685672 1610536 5684592 1609944 5684640 1610168 5685696 -1609032 5684488 1609072 5684560 1609120 5684624 1609944 5684640 -1609032 5684488 1609072 5684560 1609944 5684640 1610160 5684024 -1609120 5684624 1609168 5684752 1609944 5684640 1609072 5684560 -1610536 5684592 1609944 5684640 1610200 5685672 1610672 5684808 -1610200 5685672 1610312 5685648 1610672 5684808 1609944 5684640 -1610312 5685648 1610768 5684904 1610672 5684808 1609944 5684640 -1610536 5684592 1610400 5684392 1609944 5684640 1610672 5684808 -1609944 5684640 1610168 5685696 1610200 5685672 1610312 5685648 -1610672 5684808 1610536 5684592 1609944 5684640 1610312 5685648 -1610672 5684808 1610088 5684808 1610312 5685648 1610768 5684904 -1610312 5685648 1610088 5684808 1609944 5684640 1610200 5685672 -1610088 5684808 1610672 5684808 1609944 5684640 1610200 5685672 -1610312 5685648 1610672 5684808 1610088 5684808 1610200 5685672 -1609944 5684640 1610168 5685696 1610200 5685672 1610088 5684808 -1610200 5685672 1610312 5685648 1610088 5684808 1610168 5685696 -1609944 5684640 1610168 5685696 1610088 5684808 1610672 5684808 -1609944 5684640 1609144 5684888 1610168 5685696 1610088 5684808 -1609944 5684640 1609168 5684752 1609144 5684888 1610088 5684808 -1609144 5684888 1610080 5685800 1610168 5685696 1610088 5684808 -1609944 5684640 1609144 5684888 1610088 5684808 1610672 5684808 -1610168 5685696 1610200 5685672 1610088 5684808 1609144 5684888 -1609944 5684640 1610088 5684808 1610672 5684808 1610536 5684592 -1609944 5684640 1609144 5684888 1610088 5684808 1610536 5684592 -1609944 5684640 1610088 5684808 1610536 5684592 1610400 5684392 -1609944 5684640 1610088 5684808 1610400 5684392 1610288 5684272 -1609944 5684640 1609144 5684888 1610088 5684808 1610400 5684392 -1610088 5684808 1610312 5685648 1610672 5684808 1610536 5684592 -1610088 5684808 1610672 5684808 1610536 5684592 1610400 5684392 -1610672 5684808 1610144 5684872 1610312 5685648 1610768 5684904 -1610312 5685648 1610448 5685656 1610768 5684904 1610144 5684872 -1610768 5684904 1610672 5684808 1610144 5684872 1610448 5685656 -1610088 5684808 1610144 5684872 1610672 5684808 1610536 5684592 -1610088 5684808 1610312 5685648 1610144 5684872 1610536 5684592 -1610312 5685648 1610144 5684872 1610088 5684808 1610200 5685672 -1610088 5684808 1610168 5685696 1610200 5685672 1610144 5684872 -1610144 5684872 1610536 5684592 1610088 5684808 1610168 5685696 -1610200 5685672 1610312 5685648 1610144 5684872 1610168 5685696 -1610672 5684808 1610536 5684592 1610144 5684872 1610768 5684904 -1610144 5684872 1610200 5685672 1610312 5685648 1610448 5685656 -1610448 5685656 1610840 5684936 1610768 5684904 1610144 5684872 -1610088 5684808 1609144 5684888 1610168 5685696 1610144 5684872 -1609144 5684888 1610080 5685800 1610168 5685696 1610144 5684872 -1610168 5685696 1610200 5685672 1610144 5684872 1609144 5684888 -1610088 5684808 1609144 5684888 1610144 5684872 1610536 5684592 -1610088 5684808 1609944 5684640 1609144 5684888 1610144 5684872 -1610088 5684808 1610144 5684872 1610536 5684592 1610400 5684392 -1610144 5684872 1610184 5684944 1610768 5684904 1610672 5684808 -1610448 5685656 1610184 5684944 1610144 5684872 1610312 5685648 -1610144 5684872 1610184 5684944 1610672 5684808 1610536 5684592 -1610184 5684944 1610768 5684904 1610672 5684808 1610536 5684592 -1610144 5684872 1610184 5684944 1610536 5684592 1610088 5684808 -1610144 5684872 1610312 5685648 1610184 5684944 1610536 5684592 -1610144 5684872 1610200 5685672 1610312 5685648 1610184 5684944 -1610312 5685648 1610448 5685656 1610184 5684944 1610200 5685672 -1610144 5684872 1610168 5685696 1610200 5685672 1610184 5684944 -1610144 5684872 1609144 5684888 1610168 5685696 1610184 5684944 -1609144 5684888 1610080 5685800 1610168 5685696 1610184 5684944 -1610168 5685696 1610200 5685672 1610184 5684944 1609144 5684888 -1610144 5684872 1609144 5684888 1610184 5684944 1610536 5684592 -1610200 5685672 1610312 5685648 1610184 5684944 1610168 5685696 -1610184 5684944 1610448 5685656 1610768 5684904 1610672 5684808 -1610448 5685656 1610768 5684904 1610184 5684944 1610312 5685648 -1610768 5684904 1610184 5684944 1610448 5685656 1610840 5684936 -1610144 5684872 1610088 5684808 1609144 5684888 1610184 5684944 -1609144 5684888 1610168 5685696 1610184 5684944 1610088 5684808 -1610144 5684872 1610088 5684808 1610184 5684944 1610536 5684592 -1610088 5684808 1609944 5684640 1609144 5684888 1610184 5684944 -1610168 5685696 1610184 5685000 1610184 5684944 1609144 5684888 -1610168 5685696 1610184 5685000 1609144 5684888 1610080 5685800 -1609144 5684888 1609088 5684944 1610080 5685800 1610184 5685000 -1610184 5684944 1610088 5684808 1609144 5684888 1610184 5685000 -1610184 5685000 1610088 5684808 1609144 5684888 1610080 5685800 -1610184 5684944 1610184 5685000 1610200 5685672 1610312 5685648 -1610184 5684944 1610184 5685000 1610312 5685648 1610448 5685656 -1610184 5685000 1610200 5685672 1610312 5685648 1610448 5685656 -1610184 5685000 1610448 5685656 1610184 5684944 1610088 5684808 -1610184 5684944 1610184 5685000 1610448 5685656 1610768 5684904 -1610184 5685000 1610312 5685648 1610448 5685656 1610768 5684904 -1610184 5684944 1610184 5685000 1610768 5684904 1610672 5684808 -1610184 5684944 1610184 5685000 1610672 5684808 1610536 5684592 -1610184 5684944 1610088 5684808 1610184 5685000 1610672 5684808 -1610184 5685000 1610448 5685656 1610768 5684904 1610672 5684808 -1610184 5685000 1610168 5685696 1610200 5685672 1610312 5685648 -1610168 5685696 1610200 5685672 1610184 5685000 1610080 5685800 -1610448 5685656 1610840 5684936 1610768 5684904 1610184 5685000 -1610184 5684944 1610144 5684872 1610088 5684808 1610184 5685000 -1610088 5684808 1609144 5684888 1610184 5685000 1610144 5684872 -1610184 5684944 1610144 5684872 1610184 5685000 1610672 5684808 -1610088 5684808 1609944 5684640 1609144 5684888 1610184 5685000 -1610184 5685000 1610088 5685024 1610080 5685800 1610168 5685696 -1610080 5685800 1610088 5685024 1609144 5684888 1609088 5684944 -1610080 5685800 1610088 5685024 1609088 5684944 1609040 5684992 -1609144 5684888 1610088 5685024 1610184 5685000 1610088 5684808 -1610184 5685000 1610144 5684872 1610088 5684808 1610088 5685024 -1610088 5684808 1609144 5684888 1610088 5685024 1610144 5684872 -1610184 5685000 1610144 5684872 1610088 5685024 1610168 5685696 -1610184 5685000 1610088 5685024 1610168 5685696 1610200 5685672 -1610088 5685024 1610080 5685800 1610168 5685696 1610200 5685672 -1610184 5685000 1610088 5685024 1610200 5685672 1610312 5685648 -1610184 5685000 1610088 5685024 1610312 5685648 1610448 5685656 -1610184 5685000 1610144 5684872 1610088 5685024 1610312 5685648 -1610088 5685024 1610168 5685696 1610200 5685672 1610312 5685648 -1610088 5685024 1609088 5684944 1610080 5685800 1610168 5685696 -1610088 5685024 1610088 5684808 1609144 5684888 1609088 5684944 -1610184 5685000 1610184 5684944 1610144 5684872 1610088 5685024 -1610144 5684872 1610088 5684808 1610088 5685024 1610184 5684944 -1610184 5685000 1610184 5684944 1610088 5685024 1610312 5685648 -1609144 5684888 1610088 5685024 1610088 5684808 1609944 5684640 -1609144 5684888 1610088 5685024 1609944 5684640 1609168 5684752 -1610088 5685024 1610144 5684872 1610088 5684808 1609944 5684640 -1609144 5684888 1609088 5684944 1610088 5685024 1609944 5684640 -1610080 5685800 1610056 5685024 1609088 5684944 1609040 5684992 -1609088 5684944 1610056 5685024 1610088 5685024 1609144 5684888 -1610088 5685024 1610056 5685024 1610080 5685800 1610168 5685696 -1610088 5685024 1610056 5685024 1610168 5685696 1610200 5685672 -1610088 5685024 1610056 5685024 1610200 5685672 1610312 5685648 -1610056 5685024 1610080 5685800 1610168 5685696 1610200 5685672 -1610056 5685024 1610200 5685672 1610088 5685024 1609144 5684888 -1610088 5685024 1609944 5684640 1609144 5684888 1610056 5685024 -1609944 5684640 1609168 5684752 1609144 5684888 1610056 5685024 -1609144 5684888 1609088 5684944 1610056 5685024 1609944 5684640 -1610088 5685024 1609944 5684640 1610056 5685024 1610200 5685672 -1610056 5685024 1609088 5684944 1610080 5685800 1610168 5685696 -1609088 5684944 1610080 5685800 1610056 5685024 1609144 5684888 -1610088 5685024 1610088 5684808 1609944 5684640 1610056 5685024 -1610088 5685024 1610144 5684872 1610088 5684808 1610056 5685024 -1610088 5685024 1610184 5684944 1610144 5684872 1610056 5685024 -1610088 5685024 1610144 5684872 1610056 5685024 1610200 5685672 -1609944 5684640 1609144 5684888 1610056 5685024 1610088 5684808 -1610088 5684808 1609944 5684640 1610056 5685024 1610144 5684872 -1609144 5684888 1609928 5684976 1609944 5684640 1609168 5684752 -1610056 5685024 1609928 5684976 1609144 5684888 1609088 5684944 -1609944 5684640 1609120 5684624 1609168 5684752 1609928 5684976 -1609944 5684640 1609928 5684976 1610056 5685024 1610088 5684808 -1610056 5685024 1610088 5684808 1609928 5684976 1609088 5684944 -1610056 5685024 1609928 5684976 1609088 5684944 1610080 5685800 -1609088 5684944 1609040 5684992 1610080 5685800 1609928 5684976 -1609088 5684944 1609056 5684960 1609040 5684992 1609928 5684976 -1609928 5684976 1609144 5684888 1609088 5684944 1609040 5684992 -1610056 5685024 1609928 5684976 1610080 5685800 1610168 5685696 -1610056 5685024 1609928 5684976 1610168 5685696 1610200 5685672 -1610056 5685024 1610088 5684808 1609928 5684976 1610168 5685696 -1610080 5685800 1610168 5685696 1609928 5684976 1609040 5684992 -1609144 5684888 1609088 5684944 1609928 5684976 1609168 5684752 -1609928 5684976 1610088 5684808 1609944 5684640 1609168 5684752 -1609040 5684992 1608816 5685680 1610080 5685800 1609928 5684976 -1610056 5685024 1610144 5684872 1610088 5684808 1609928 5684976 -1609928 5684976 1609752 5684832 1609168 5684752 1609144 5684888 -1609168 5684752 1609752 5684832 1609944 5684640 1609120 5684624 -1609944 5684640 1609072 5684560 1609120 5684624 1609752 5684832 -1609928 5684976 1609752 5684832 1609144 5684888 1609088 5684944 -1609752 5684832 1609168 5684752 1609144 5684888 1609088 5684944 -1609928 5684976 1609752 5684832 1609088 5684944 1609040 5684992 -1609928 5684976 1609944 5684640 1609752 5684832 1609088 5684944 -1609944 5684640 1609752 5684832 1609928 5684976 1610088 5684808 -1609928 5684976 1610056 5685024 1610088 5684808 1609752 5684832 -1609752 5684832 1609088 5684944 1609928 5684976 1610088 5684808 -1609752 5684832 1609120 5684624 1609168 5684752 1609144 5684888 -1609752 5684832 1610088 5684808 1609944 5684640 1609120 5684624 -1609120 5684624 1609544 5684696 1609944 5684640 1609072 5684560 -1609752 5684832 1609544 5684696 1609120 5684624 1609168 5684752 -1609752 5684832 1609544 5684696 1609168 5684752 1609144 5684888 -1609752 5684832 1609544 5684696 1609144 5684888 1609088 5684944 -1609544 5684696 1609120 5684624 1609168 5684752 1609144 5684888 -1609752 5684832 1609944 5684640 1609544 5684696 1609144 5684888 -1609944 5684640 1609544 5684696 1609752 5684832 1610088 5684808 -1609120 5684624 1609168 5684752 1609544 5684696 1609072 5684560 -1609544 5684696 1609752 5684832 1609944 5684640 1609072 5684560 -1609944 5684640 1609032 5684488 1609072 5684560 1609544 5684696 -1609944 5684640 1610160 5684024 1609032 5684488 1609544 5684696 -1610160 5684024 1609464 5683512 1609032 5684488 1609544 5684696 -1610160 5684024 1609464 5683512 1609544 5684696 1609944 5684640 -1609464 5683512 1609360 5683512 1609032 5684488 1609544 5684696 -1610160 5684024 1610128 5683904 1609464 5683512 1609544 5684696 -1610160 5684024 1610128 5683904 1609544 5684696 1609944 5684640 -1610128 5683904 1610128 5683648 1609464 5683512 1609544 5684696 -1609464 5683512 1609032 5684488 1609544 5684696 1610128 5683904 -1609944 5684640 1610288 5684272 1610160 5684024 1609544 5684696 -1609072 5684560 1609120 5684624 1609544 5684696 1609032 5684488 -1609944 5684640 1610160 5684024 1609544 5684696 1609752 5684832 -1609032 5684488 1609072 5684560 1609544 5684696 1609464 5683512 -1609032 5684488 1609512 5684656 1609464 5683512 1609360 5683512 -1609464 5683512 1609512 5684656 1609544 5684696 1610128 5683904 -1609464 5683512 1609512 5684656 1610128 5683904 1610128 5683648 -1609544 5684696 1610160 5684024 1610128 5683904 1609512 5684656 -1609544 5684696 1609944 5684640 1610160 5684024 1609512 5684656 -1610128 5683904 1609464 5683512 1609512 5684656 1610160 5684024 -1610160 5684024 1610128 5683904 1609512 5684656 1609944 5684640 -1609944 5684640 1610288 5684272 1610160 5684024 1609512 5684656 -1609512 5684656 1609032 5684488 1609544 5684696 1609944 5684640 -1609544 5684696 1609752 5684832 1609944 5684640 1609512 5684656 -1609464 5683512 1609032 5684488 1609512 5684656 1610128 5683904 -1609544 5684696 1609512 5684656 1609032 5684488 1609072 5684560 -1609544 5684696 1609512 5684656 1609072 5684560 1609120 5684624 -1609544 5684696 1609512 5684656 1609120 5684624 1609168 5684752 -1609512 5684656 1609072 5684560 1609120 5684624 1609168 5684752 -1609544 5684696 1609512 5684656 1609168 5684752 1609144 5684888 -1609544 5684696 1609944 5684640 1609512 5684656 1609168 5684752 -1609512 5684656 1609464 5683512 1609032 5684488 1609072 5684560 -1609512 5684656 1609032 5684488 1609072 5684560 1609120 5684624 -1609032 5684488 1609504 5684584 1609464 5683512 1609360 5683512 -1609512 5684656 1609504 5684584 1609032 5684488 1609072 5684560 -1609512 5684656 1609464 5683512 1609504 5684584 1609072 5684560 -1609464 5683512 1609504 5684584 1609512 5684656 1610128 5683904 -1609464 5683512 1609504 5684584 1610128 5683904 1610128 5683648 -1609512 5684656 1610160 5684024 1610128 5683904 1609504 5684584 -1609512 5684656 1609944 5684640 1610160 5684024 1609504 5684584 -1609512 5684656 1609544 5684696 1609944 5684640 1609504 5684584 -1610160 5684024 1610128 5683904 1609504 5684584 1609944 5684640 -1609944 5684640 1610160 5684024 1609504 5684584 1609544 5684696 -1609944 5684640 1610288 5684272 1610160 5684024 1609504 5684584 -1609544 5684696 1609752 5684832 1609944 5684640 1609504 5684584 -1609504 5684584 1609072 5684560 1609512 5684656 1609544 5684696 -1610128 5683904 1609464 5683512 1609504 5684584 1610160 5684024 -1609032 5684488 1609072 5684560 1609504 5684584 1609360 5683512 -1609504 5684584 1610128 5683904 1609464 5683512 1609360 5683512 -1609032 5684488 1609504 5684584 1609360 5683512 1608968 5684424 -1609504 5684584 1609464 5683512 1609360 5683512 1608968 5684424 -1609360 5683512 1609264 5683496 1608968 5684424 1609504 5684584 -1609032 5684488 1609072 5684560 1609504 5684584 1608968 5684424 -1609464 5683512 1609448 5683488 1609360 5683512 1609504 5684584 -1609512 5684656 1609504 5684584 1609072 5684560 1609120 5684624 -1609512 5684656 1609504 5684584 1609120 5684624 1609168 5684752 -1609512 5684656 1609504 5684584 1609168 5684752 1609544 5684696 -1609504 5684584 1609032 5684488 1609072 5684560 1609120 5684624 -1609512 5684656 1609544 5684696 1609504 5684584 1609168 5684752 -1609504 5684584 1609072 5684560 1609120 5684624 1609168 5684752 -1609464 5683512 1609520 5684536 1610128 5683904 1610128 5683648 -1610128 5683904 1609520 5684536 1609504 5684584 1610160 5684024 -1609504 5684584 1609944 5684640 1610160 5684024 1609520 5684536 -1609504 5684584 1609544 5684696 1609944 5684640 1609520 5684536 -1609504 5684584 1609512 5684656 1609544 5684696 1609520 5684536 -1609944 5684640 1610160 5684024 1609520 5684536 1609544 5684696 -1609944 5684640 1610288 5684272 1610160 5684024 1609520 5684536 -1609544 5684696 1609752 5684832 1609944 5684640 1609520 5684536 -1610160 5684024 1610128 5683904 1609520 5684536 1609944 5684640 -1609520 5684536 1609464 5683512 1609504 5684584 1609544 5684696 -1609504 5684584 1609520 5684536 1609464 5683512 1609360 5683512 -1609504 5684584 1609520 5684536 1609360 5683512 1608968 5684424 -1609360 5683512 1609264 5683496 1608968 5684424 1609520 5684536 -1609504 5684584 1609544 5684696 1609520 5684536 1608968 5684424 -1609520 5684536 1609464 5683512 1609360 5683512 1608968 5684424 -1609520 5684536 1610128 5683904 1609464 5683512 1609360 5683512 -1610128 5683904 1609464 5683512 1609520 5684536 1610160 5684024 -1609504 5684584 1609520 5684536 1608968 5684424 1609032 5684488 -1609520 5684536 1609360 5683512 1608968 5684424 1609032 5684488 -1609504 5684584 1609520 5684536 1609032 5684488 1609072 5684560 -1609504 5684584 1609520 5684536 1609072 5684560 1609120 5684624 -1609520 5684536 1609032 5684488 1609072 5684560 1609120 5684624 -1609504 5684584 1609544 5684696 1609520 5684536 1609120 5684624 -1609520 5684536 1608968 5684424 1609032 5684488 1609072 5684560 -1609464 5683512 1609448 5683488 1609360 5683512 1609520 5684536 -1609504 5684584 1609520 5684536 1609120 5684624 1609168 5684752 -1609464 5683512 1609576 5684456 1610128 5683904 1610128 5683648 -1609520 5684536 1609576 5684456 1609464 5683512 1609360 5683512 -1609520 5684536 1609576 5684456 1609360 5683512 1608968 5684424 -1609520 5684536 1609576 5684456 1608968 5684424 1609032 5684488 -1609360 5683512 1609264 5683496 1608968 5684424 1609576 5684456 -1609576 5684456 1609360 5683512 1608968 5684424 1609032 5684488 -1609576 5684456 1609464 5683512 1609360 5683512 1608968 5684424 -1609520 5684536 1610128 5683904 1609576 5684456 1609032 5684488 -1610128 5683904 1609576 5684456 1609520 5684536 1610160 5684024 -1610128 5683904 1609464 5683512 1609576 5684456 1610160 5684024 -1609520 5684536 1609944 5684640 1610160 5684024 1609576 5684456 -1609520 5684536 1609544 5684696 1609944 5684640 1609576 5684456 -1609520 5684536 1609504 5684584 1609544 5684696 1609576 5684456 -1609944 5684640 1610288 5684272 1610160 5684024 1609576 5684456 -1609544 5684696 1609752 5684832 1609944 5684640 1609576 5684456 -1609944 5684640 1610160 5684024 1609576 5684456 1609544 5684696 -1609576 5684456 1609032 5684488 1609520 5684536 1609544 5684696 -1610160 5684024 1610128 5683904 1609576 5684456 1609944 5684640 -1609576 5684456 1610128 5683904 1609464 5683512 1609360 5683512 -1609520 5684536 1609576 5684456 1609032 5684488 1609072 5684560 -1609464 5683512 1609448 5683488 1609360 5683512 1609576 5684456 -1610160 5684024 1609624 5684432 1609944 5684640 1610288 5684272 -1609944 5684640 1609624 5684432 1609576 5684456 1609544 5684696 -1609944 5684640 1610160 5684024 1609624 5684432 1609544 5684696 -1609576 5684456 1609520 5684536 1609544 5684696 1609624 5684432 -1609520 5684536 1609504 5684584 1609544 5684696 1609624 5684432 -1609944 5684640 1609624 5684432 1609544 5684696 1609752 5684832 -1609544 5684696 1609944 5684640 1609624 5684432 1609520 5684536 -1609576 5684456 1609624 5684432 1610160 5684024 1610128 5683904 -1609576 5684456 1609624 5684432 1610128 5683904 1609464 5683512 -1609624 5684432 1609944 5684640 1610160 5684024 1610128 5683904 -1610128 5683904 1610128 5683648 1609464 5683512 1609624 5684432 -1609624 5684432 1610160 5684024 1610128 5683904 1609464 5683512 -1609576 5684456 1609624 5684432 1609464 5683512 1609360 5683512 -1609624 5684432 1610128 5683904 1609464 5683512 1609360 5683512 -1609576 5684456 1609624 5684432 1609360 5683512 1608968 5684424 -1609624 5684432 1609360 5683512 1609576 5684456 1609520 5684536 -1609464 5683512 1609448 5683488 1609360 5683512 1609624 5684432 -1609624 5684432 1609744 5684472 1610160 5684024 1610128 5683904 -1609944 5684640 1609744 5684472 1609624 5684432 1609544 5684696 -1609744 5684472 1610160 5684024 1609624 5684432 1609544 5684696 -1609944 5684640 1610160 5684024 1609744 5684472 1609544 5684696 -1610160 5684024 1609744 5684472 1609944 5684640 1610288 5684272 -1610160 5684024 1609624 5684432 1609744 5684472 1610288 5684272 -1609744 5684472 1609544 5684696 1609944 5684640 1610288 5684272 -1609944 5684640 1610400 5684392 1610288 5684272 1609744 5684472 -1609944 5684640 1609744 5684472 1609544 5684696 1609752 5684832 -1609744 5684472 1609624 5684432 1609544 5684696 1609752 5684832 -1609944 5684640 1610288 5684272 1609744 5684472 1609752 5684832 -1609944 5684640 1609744 5684472 1609752 5684832 1610088 5684808 -1609624 5684432 1609520 5684536 1609544 5684696 1609744 5684472 -1609624 5684432 1609520 5684536 1609744 5684472 1610160 5684024 -1609544 5684696 1609752 5684832 1609744 5684472 1609520 5684536 -1609624 5684432 1609576 5684456 1609520 5684536 1609744 5684472 -1609624 5684432 1609576 5684456 1609744 5684472 1610160 5684024 -1609520 5684536 1609504 5684584 1609544 5684696 1609744 5684472 -1609520 5684536 1609544 5684696 1609744 5684472 1609576 5684456 -1609944 5684640 1609888 5684592 1609744 5684472 1609752 5684832 -1609888 5684592 1610288 5684272 1609744 5684472 1609752 5684832 -1609944 5684640 1610288 5684272 1609888 5684592 1609752 5684832 -1609744 5684472 1609888 5684592 1610288 5684272 1610160 5684024 -1610288 5684272 1609888 5684592 1609944 5684640 1610400 5684392 -1609944 5684640 1609888 5684592 1609752 5684832 1610088 5684808 -1609744 5684472 1609544 5684696 1609752 5684832 1609888 5684592 -1609744 5684472 1609520 5684536 1609544 5684696 1609888 5684592 -1609744 5684472 1609544 5684696 1609888 5684592 1610288 5684272 -1609752 5684832 1609944 5684640 1609888 5684592 1609544 5684696 -1608696 5684208 1608840 5683856 1609000 5683352 1608768 5683304 -1608696 5684208 1609264 5683496 1608840 5683856 1608768 5683304 -1608840 5683856 1609264 5683496 1609000 5683352 1608768 5683304 -1609264 5683496 1608840 5683856 1608696 5684208 1608968 5684424 -1608840 5683856 1608768 5683304 1608696 5684208 1608968 5684424 -1609264 5683496 1609000 5683352 1608840 5683856 1608968 5684424 -1609264 5683496 1608840 5683856 1608968 5684424 1609360 5683512 -1609264 5683496 1609000 5683352 1608840 5683856 1609360 5683512 -1608968 5684424 1609576 5684456 1609360 5683512 1608840 5683856 -1608968 5684424 1609032 5684488 1609576 5684456 1608840 5683856 -1609576 5684456 1609624 5684432 1609360 5683512 1608840 5683856 -1608840 5683856 1608696 5684208 1608968 5684424 1609576 5684456 -1609360 5683512 1609264 5683496 1608840 5683856 1609576 5684456 -1609000 5683352 1608864 5683304 1608768 5683304 1608840 5683856 -1609000 5683352 1608864 5683304 1608840 5683856 1609264 5683496 -1608768 5683304 1608696 5684208 1608840 5683856 1608864 5683304 -1608696 5684208 1608840 5683856 1608768 5683304 1608608 5683328 -1608696 5684208 1608968 5684424 1608840 5683856 1608608 5683328 -1608840 5683856 1608864 5683304 1608768 5683304 1608608 5683328 -1608696 5684208 1608840 5683856 1608608 5683328 1608368 5684000 -1608696 5684208 1608968 5684424 1608840 5683856 1608368 5684000 -1608608 5683328 1608232 5683800 1608368 5684000 1608840 5683856 -1608608 5683328 1608240 5683448 1608232 5683800 1608840 5683856 -1608232 5683800 1608272 5683896 1608368 5684000 1608840 5683856 -1608232 5683800 1608272 5683896 1608840 5683856 1608608 5683328 -1608368 5684000 1608696 5684208 1608840 5683856 1608272 5683896 -1608840 5683856 1608768 5683304 1608608 5683328 1608232 5683800 -1609576 5684456 1608856 5683856 1608840 5683856 1608968 5684424 -1608856 5683856 1609360 5683512 1608840 5683856 1608968 5684424 -1609576 5684456 1609360 5683512 1608856 5683856 1608968 5684424 -1609576 5684456 1608856 5683856 1608968 5684424 1609032 5684488 -1609360 5683512 1608856 5683856 1609576 5684456 1609624 5684432 -1608840 5683856 1608696 5684208 1608968 5684424 1608856 5683856 -1608840 5683856 1608368 5684000 1608696 5684208 1608856 5683856 -1608840 5683856 1608696 5684208 1608856 5683856 1609360 5683512 -1608968 5684424 1609576 5684456 1608856 5683856 1608696 5684208 -1608840 5683856 1608856 5683856 1609360 5683512 1609264 5683496 -1608840 5683856 1608696 5684208 1608856 5683856 1609264 5683496 -1608840 5683856 1608856 5683856 1609264 5683496 1609000 5683352 -1608840 5683856 1608856 5683856 1609000 5683352 1608864 5683304 -1608840 5683856 1608696 5684208 1608856 5683856 1609000 5683352 -1608856 5683856 1609576 5684456 1609360 5683512 1609264 5683496 -1608856 5683856 1609360 5683512 1609264 5683496 1609000 5683352 -1608856 5683856 1608880 5683872 1609360 5683512 1609264 5683496 -1608856 5683856 1609576 5684456 1608880 5683872 1609264 5683496 -1609576 5684456 1608880 5683872 1608856 5683856 1608968 5684424 -1608880 5683872 1609264 5683496 1608856 5683856 1608968 5684424 -1608880 5683872 1609576 5684456 1609360 5683512 1609264 5683496 -1609576 5684456 1609360 5683512 1608880 5683872 1608968 5684424 -1608856 5683856 1608696 5684208 1608968 5684424 1608880 5683872 -1608856 5683856 1608696 5684208 1608880 5683872 1609264 5683496 -1608968 5684424 1609576 5684456 1608880 5683872 1608696 5684208 -1609576 5684456 1608880 5683872 1608968 5684424 1609032 5684488 -1609360 5683512 1608880 5683872 1609576 5684456 1609624 5684432 -1608856 5683856 1608840 5683856 1608696 5684208 1608880 5683872 -1608840 5683856 1608368 5684000 1608696 5684208 1608880 5683872 -1608856 5683856 1608840 5683856 1608880 5683872 1609264 5683496 -1608696 5684208 1608968 5684424 1608880 5683872 1608840 5683856 -1608856 5683856 1608880 5683872 1609264 5683496 1609000 5683352 -1608880 5683872 1608944 5683904 1609360 5683512 1609264 5683496 -1608880 5683872 1608944 5683904 1609264 5683496 1608856 5683856 -1608880 5683872 1609576 5684456 1608944 5683904 1609264 5683496 -1609576 5684456 1608944 5683904 1608880 5683872 1608968 5684424 -1608880 5683872 1608696 5684208 1608968 5684424 1608944 5683904 -1608944 5683904 1609264 5683496 1608880 5683872 1608696 5684208 -1608968 5684424 1609576 5684456 1608944 5683904 1608696 5684208 -1608944 5683904 1609576 5684456 1609360 5683512 1609264 5683496 -1609576 5684456 1609360 5683512 1608944 5683904 1608968 5684424 -1608880 5683872 1608840 5683856 1608696 5684208 1608944 5683904 -1609576 5684456 1608944 5683904 1608968 5684424 1609032 5684488 -1609360 5683512 1608944 5683904 1609576 5684456 1609624 5684432 -1609360 5683512 1609264 5683496 1608944 5683904 1609624 5684432 -1608944 5683904 1608968 5684424 1609576 5684456 1609624 5684432 -1609360 5683512 1608944 5683904 1609624 5684432 1609464 5683512 -1609624 5684432 1610128 5683904 1609464 5683512 1608944 5683904 -1609360 5683512 1609264 5683496 1608944 5683904 1609464 5683512 -1608944 5683904 1609576 5684456 1609624 5684432 1609464 5683512 -1609360 5683512 1608944 5683904 1609464 5683512 1609448 5683488 -1609464 5683512 1608984 5683920 1609624 5684432 1610128 5683904 -1609624 5684432 1608984 5683920 1608944 5683904 1609576 5684456 -1608984 5683920 1609464 5683512 1608944 5683904 1609576 5684456 -1608944 5683904 1608968 5684424 1609576 5684456 1608984 5683920 -1608944 5683904 1608696 5684208 1608968 5684424 1608984 5683920 -1608944 5683904 1608880 5683872 1608696 5684208 1608984 5683920 -1608944 5683904 1608696 5684208 1608984 5683920 1609464 5683512 -1608968 5684424 1609576 5684456 1608984 5683920 1608696 5684208 -1609624 5684432 1609464 5683512 1608984 5683920 1609576 5684456 -1608968 5684424 1609032 5684488 1609576 5684456 1608984 5683920 -1608968 5684424 1609032 5684488 1608984 5683920 1608696 5684208 -1609032 5684488 1609520 5684536 1609576 5684456 1608984 5683920 -1609576 5684456 1609624 5684432 1608984 5683920 1609032 5684488 -1608944 5683904 1608984 5683920 1609464 5683512 1609360 5683512 -1608944 5683904 1608984 5683920 1609360 5683512 1609264 5683496 -1608944 5683904 1608984 5683920 1609264 5683496 1608880 5683872 -1608944 5683904 1608696 5684208 1608984 5683920 1609264 5683496 -1608984 5683920 1609624 5684432 1609464 5683512 1609360 5683512 -1608984 5683920 1609464 5683512 1609360 5683512 1609264 5683496 -1609464 5683512 1609448 5683488 1609360 5683512 1608984 5683920 -1608984 5683920 1609088 5684008 1609624 5684432 1609464 5683512 -1609624 5684432 1610128 5683904 1609464 5683512 1609088 5684008 -1608984 5683920 1609088 5684008 1609464 5683512 1609360 5683512 -1608984 5683920 1609576 5684456 1609088 5684008 1609360 5683512 -1609088 5684008 1609624 5684432 1609464 5683512 1609360 5683512 -1609088 5684008 1609576 5684456 1609624 5684432 1609464 5683512 -1609576 5684456 1609088 5684008 1608984 5683920 1609032 5684488 -1609088 5684008 1609360 5683512 1608984 5683920 1609032 5684488 -1609576 5684456 1609624 5684432 1609088 5684008 1609032 5684488 -1609576 5684456 1609088 5684008 1609032 5684488 1609520 5684536 -1608984 5683920 1608968 5684424 1609032 5684488 1609088 5684008 -1608984 5683920 1608696 5684208 1608968 5684424 1609088 5684008 -1608984 5683920 1608944 5683904 1608696 5684208 1609088 5684008 -1608984 5683920 1608696 5684208 1609088 5684008 1609360 5683512 -1608968 5684424 1609032 5684488 1609088 5684008 1608696 5684208 -1609032 5684488 1609576 5684456 1609088 5684008 1608968 5684424 -1608984 5683920 1609088 5684008 1609360 5683512 1609264 5683496 -1608984 5683920 1609088 5684008 1609264 5683496 1608944 5683904 -1609088 5684008 1609464 5683512 1609360 5683512 1609264 5683496 -1608984 5683920 1608696 5684208 1609088 5684008 1609264 5683496 -1609464 5683512 1609448 5683488 1609360 5683512 1609088 5684008 -1609088 5684008 1609112 5684048 1609576 5684456 1609624 5684432 -1609088 5684008 1609112 5684048 1609624 5684432 1609464 5683512 -1609624 5684432 1610128 5683904 1609464 5683512 1609112 5684048 -1609088 5684008 1609112 5684048 1609464 5683512 1609360 5683512 -1609088 5684008 1609112 5684048 1609360 5683512 1609264 5683496 -1609112 5684048 1609624 5684432 1609464 5683512 1609360 5683512 -1609088 5684008 1609032 5684488 1609112 5684048 1609360 5683512 -1609112 5684048 1609576 5684456 1609624 5684432 1609464 5683512 -1609112 5684048 1609032 5684488 1609576 5684456 1609624 5684432 -1609576 5684456 1609112 5684048 1609032 5684488 1609520 5684536 -1609032 5684488 1609112 5684048 1609088 5684008 1608968 5684424 -1609112 5684048 1609360 5683512 1609088 5684008 1608968 5684424 -1609032 5684488 1609576 5684456 1609112 5684048 1608968 5684424 -1609088 5684008 1608696 5684208 1608968 5684424 1609112 5684048 -1609088 5684008 1608984 5683920 1608696 5684208 1609112 5684048 -1609088 5684008 1608696 5684208 1609112 5684048 1609360 5683512 -1608968 5684424 1609032 5684488 1609112 5684048 1608696 5684208 -1609464 5683512 1609448 5683488 1609360 5683512 1609112 5684048 -1609112 5684048 1609136 5684096 1609576 5684456 1609624 5684432 -1609112 5684048 1609136 5684096 1609624 5684432 1609464 5683512 -1609624 5684432 1610128 5683904 1609464 5683512 1609136 5684096 -1609112 5684048 1609136 5684096 1609464 5683512 1609360 5683512 -1609136 5684096 1609576 5684456 1609624 5684432 1609464 5683512 -1609112 5684048 1609032 5684488 1609136 5684096 1609464 5683512 -1609032 5684488 1609136 5684096 1609112 5684048 1608968 5684424 -1609136 5684096 1609464 5683512 1609112 5684048 1608968 5684424 -1609136 5684096 1609032 5684488 1609576 5684456 1609624 5684432 -1609032 5684488 1609576 5684456 1609136 5684096 1608968 5684424 -1609576 5684456 1609136 5684096 1609032 5684488 1609520 5684536 -1609576 5684456 1609624 5684432 1609136 5684096 1609520 5684536 -1609136 5684096 1608968 5684424 1609032 5684488 1609520 5684536 -1609112 5684048 1608696 5684208 1608968 5684424 1609136 5684096 -1609112 5684048 1608696 5684208 1609136 5684096 1609464 5683512 -1608968 5684424 1609032 5684488 1609136 5684096 1608696 5684208 -1609112 5684048 1609088 5684008 1608696 5684208 1609136 5684096 -1609032 5684488 1609072 5684560 1609520 5684536 1609136 5684096 -1609032 5684488 1609144 5684144 1609136 5684096 1608968 5684424 -1609136 5684096 1608696 5684208 1608968 5684424 1609144 5684144 -1609144 5684144 1609520 5684536 1609136 5684096 1608696 5684208 -1608968 5684424 1609032 5684488 1609144 5684144 1608696 5684208 -1609032 5684488 1609520 5684536 1609144 5684144 1608968 5684424 -1609136 5684096 1609144 5684144 1609520 5684536 1609576 5684456 -1609136 5684096 1609144 5684144 1609576 5684456 1609624 5684432 -1609136 5684096 1609144 5684144 1609624 5684432 1609464 5683512 -1609136 5684096 1608696 5684208 1609144 5684144 1609624 5684432 -1609144 5684144 1609032 5684488 1609520 5684536 1609576 5684456 -1609144 5684144 1609520 5684536 1609576 5684456 1609624 5684432 -1609136 5684096 1609112 5684048 1608696 5684208 1609144 5684144 -1608696 5684208 1608968 5684424 1609144 5684144 1609112 5684048 -1609136 5684096 1609112 5684048 1609144 5684144 1609624 5684432 -1609112 5684048 1609088 5684008 1608696 5684208 1609144 5684144 -1609520 5684536 1609144 5684144 1609032 5684488 1609072 5684560 -1609144 5684144 1609144 5684200 1609520 5684536 1609576 5684456 -1609144 5684144 1609032 5684488 1609144 5684200 1609576 5684456 -1609032 5684488 1609144 5684200 1609144 5684144 1608968 5684424 -1609144 5684144 1608696 5684208 1608968 5684424 1609144 5684200 -1609144 5684144 1609112 5684048 1608696 5684208 1609144 5684200 -1609144 5684200 1609576 5684456 1609144 5684144 1608696 5684208 -1608968 5684424 1609032 5684488 1609144 5684200 1608696 5684208 -1609144 5684200 1609032 5684488 1609520 5684536 1609576 5684456 -1609032 5684488 1609520 5684536 1609144 5684200 1608968 5684424 -1609144 5684144 1609144 5684200 1609576 5684456 1609624 5684432 -1609520 5684536 1609144 5684200 1609032 5684488 1609072 5684560 -1609520 5684536 1609576 5684456 1609144 5684200 1609072 5684560 -1609144 5684200 1608968 5684424 1609032 5684488 1609072 5684560 -1609520 5684536 1609144 5684200 1609072 5684560 1609120 5684624 -1609032 5684488 1609128 5684248 1609144 5684200 1608968 5684424 -1609144 5684200 1608696 5684208 1608968 5684424 1609128 5684248 -1609144 5684200 1609144 5684144 1608696 5684208 1609128 5684248 -1609144 5684144 1609112 5684048 1608696 5684208 1609128 5684248 -1609144 5684144 1609112 5684048 1609128 5684248 1609144 5684200 -1608696 5684208 1608968 5684424 1609128 5684248 1609112 5684048 -1609128 5684248 1609072 5684560 1609144 5684200 1609144 5684144 -1608968 5684424 1609032 5684488 1609128 5684248 1608696 5684208 -1609032 5684488 1609072 5684560 1609128 5684248 1608968 5684424 -1609112 5684048 1609088 5684008 1608696 5684208 1609128 5684248 -1609144 5684144 1609136 5684096 1609112 5684048 1609128 5684248 -1609144 5684200 1609128 5684248 1609072 5684560 1609520 5684536 -1609144 5684200 1609128 5684248 1609520 5684536 1609576 5684456 -1609144 5684200 1609128 5684248 1609576 5684456 1609144 5684144 -1609144 5684200 1609144 5684144 1609128 5684248 1609576 5684456 -1609128 5684248 1609032 5684488 1609072 5684560 1609520 5684536 -1609072 5684560 1609120 5684624 1609520 5684536 1609128 5684248 -1609128 5684248 1609072 5684560 1609520 5684536 1609576 5684456 -1608968 5684424 1609096 5684288 1609128 5684248 1608696 5684208 -1609128 5684248 1609112 5684048 1608696 5684208 1609096 5684288 -1609128 5684248 1609144 5684144 1609112 5684048 1609096 5684288 -1609128 5684248 1609144 5684200 1609144 5684144 1609096 5684288 -1609144 5684144 1609112 5684048 1609096 5684288 1609144 5684200 -1609112 5684048 1608696 5684208 1609096 5684288 1609144 5684144 -1608696 5684208 1608968 5684424 1609096 5684288 1609112 5684048 -1609096 5684288 1609032 5684488 1609128 5684248 1609144 5684200 -1609128 5684248 1609096 5684288 1609032 5684488 1609072 5684560 -1609128 5684248 1609096 5684288 1609072 5684560 1609520 5684536 -1609128 5684248 1609144 5684200 1609096 5684288 1609520 5684536 -1609096 5684288 1609032 5684488 1609072 5684560 1609520 5684536 -1609096 5684288 1608968 5684424 1609032 5684488 1609072 5684560 -1608968 5684424 1609032 5684488 1609096 5684288 1608696 5684208 -1609072 5684560 1609120 5684624 1609520 5684536 1609096 5684288 -1609112 5684048 1609088 5684008 1608696 5684208 1609096 5684288 -1609144 5684144 1609136 5684096 1609112 5684048 1609096 5684288 -1609128 5684248 1609096 5684288 1609520 5684536 1609576 5684456 -1608696 5684208 1609064 5684312 1609096 5684288 1609112 5684048 -1609096 5684288 1609144 5684144 1609112 5684048 1609064 5684312 -1609096 5684288 1609144 5684200 1609144 5684144 1609064 5684312 -1609112 5684048 1608696 5684208 1609064 5684312 1609144 5684144 -1609064 5684312 1608968 5684424 1609096 5684288 1609144 5684144 -1609096 5684288 1609064 5684312 1608968 5684424 1609032 5684488 -1609096 5684288 1609064 5684312 1609032 5684488 1609072 5684560 -1609096 5684288 1609144 5684144 1609064 5684312 1609032 5684488 -1609064 5684312 1608696 5684208 1608968 5684424 1609032 5684488 -1608696 5684208 1608968 5684424 1609064 5684312 1609112 5684048 -1608696 5684208 1609064 5684312 1609112 5684048 1609088 5684008 -1609144 5684144 1609136 5684096 1609112 5684048 1609064 5684312 -1609064 5684312 1609032 5684312 1608968 5684424 1609032 5684488 -1608696 5684208 1609032 5684312 1609064 5684312 1609112 5684048 -1609064 5684312 1609144 5684144 1609112 5684048 1609032 5684312 -1609064 5684312 1609096 5684288 1609144 5684144 1609032 5684312 -1609096 5684288 1609144 5684200 1609144 5684144 1609032 5684312 -1609096 5684288 1609128 5684248 1609144 5684200 1609032 5684312 -1609144 5684200 1609144 5684144 1609032 5684312 1609128 5684248 -1609096 5684288 1609128 5684248 1609032 5684312 1609064 5684312 -1609144 5684144 1609112 5684048 1609032 5684312 1609144 5684200 -1609032 5684312 1608968 5684424 1609064 5684312 1609096 5684288 -1609112 5684048 1608696 5684208 1609032 5684312 1609144 5684144 -1608696 5684208 1608968 5684424 1609032 5684312 1609112 5684048 -1608696 5684208 1609032 5684312 1609112 5684048 1609088 5684008 -1608696 5684208 1609032 5684312 1609088 5684008 1608984 5683920 -1609032 5684312 1609144 5684144 1609112 5684048 1609088 5684008 -1608696 5684208 1608968 5684424 1609032 5684312 1609088 5684008 -1609144 5684144 1609136 5684096 1609112 5684048 1609032 5684312 -1608696 5684208 1608960 5684256 1609088 5684008 1608984 5683920 -1608696 5684208 1608960 5684256 1608984 5683920 1608944 5683904 -1608696 5684208 1608960 5684256 1608944 5683904 1608880 5683872 -1608960 5684256 1609088 5684008 1608984 5683920 1608944 5683904 -1609032 5684312 1608960 5684256 1608696 5684208 1608968 5684424 -1609032 5684312 1608960 5684256 1608968 5684424 1609064 5684312 -1609032 5684312 1609088 5684008 1608960 5684256 1608968 5684424 -1608696 5684208 1608968 5684424 1608960 5684256 1608944 5683904 -1608960 5684256 1609032 5684312 1609088 5684008 1608984 5683920 -1609088 5684008 1608960 5684256 1609032 5684312 1609112 5684048 -1609032 5684312 1609144 5684144 1609112 5684048 1608960 5684256 -1609032 5684312 1609144 5684200 1609144 5684144 1608960 5684256 -1609032 5684312 1609128 5684248 1609144 5684200 1608960 5684256 -1609032 5684312 1609096 5684288 1609128 5684248 1608960 5684256 -1609128 5684248 1609144 5684200 1608960 5684256 1609096 5684288 -1609032 5684312 1609064 5684312 1609096 5684288 1608960 5684256 -1609144 5684200 1609144 5684144 1608960 5684256 1609128 5684248 -1609144 5684144 1609112 5684048 1608960 5684256 1609144 5684200 -1608960 5684256 1608968 5684424 1609032 5684312 1609096 5684288 -1609088 5684008 1608984 5683920 1608960 5684256 1609112 5684048 -1609112 5684048 1609088 5684008 1608960 5684256 1609144 5684144 -1609144 5684144 1609136 5684096 1609112 5684048 1608960 5684256 -1609144 5684144 1609136 5684096 1608960 5684256 1609144 5684200 -1609112 5684048 1609088 5684008 1608960 5684256 1609136 5684096 -1608696 5684208 1608896 5684208 1608944 5683904 1608880 5683872 -1608944 5683904 1608896 5684208 1608960 5684256 1608984 5683920 -1608960 5684256 1609088 5684008 1608984 5683920 1608896 5684208 -1608984 5683920 1608944 5683904 1608896 5684208 1609088 5684008 -1608960 5684256 1608896 5684208 1608696 5684208 1608968 5684424 -1608960 5684256 1608896 5684208 1608968 5684424 1609032 5684312 -1608896 5684208 1608968 5684424 1608960 5684256 1609088 5684008 -1608960 5684256 1609112 5684048 1609088 5684008 1608896 5684208 -1609088 5684008 1608984 5683920 1608896 5684208 1609112 5684048 -1608960 5684256 1609112 5684048 1608896 5684208 1608968 5684424 -1608696 5684208 1608968 5684424 1608896 5684208 1608880 5683872 -1608896 5684208 1608984 5683920 1608944 5683904 1608880 5683872 -1608696 5684208 1608896 5684208 1608880 5683872 1608840 5683856 -1608960 5684256 1609136 5684096 1609112 5684048 1608896 5684208 -1608880 5683872 1608832 5684152 1608896 5684208 1608944 5683904 -1608896 5684208 1608832 5684152 1608696 5684208 1608968 5684424 -1608832 5684152 1608696 5684208 1608896 5684208 1608944 5683904 -1608896 5684208 1608984 5683920 1608944 5683904 1608832 5684152 -1608944 5683904 1608880 5683872 1608832 5684152 1608984 5683920 -1608896 5684208 1609088 5684008 1608984 5683920 1608832 5684152 -1608896 5684208 1609112 5684048 1609088 5684008 1608832 5684152 -1608896 5684208 1609088 5684008 1608832 5684152 1608696 5684208 -1608984 5683920 1608944 5683904 1608832 5684152 1609088 5684008 -1608880 5683872 1608696 5684208 1608832 5684152 1608944 5683904 -1608696 5684208 1608832 5684152 1608880 5683872 1608840 5683856 -1608696 5684208 1608832 5684152 1608840 5683856 1608368 5684000 -1608696 5684208 1608896 5684208 1608832 5684152 1608840 5683856 -1608832 5684152 1608944 5683904 1608880 5683872 1608840 5683856 -1608880 5683872 1608856 5683856 1608840 5683856 1608832 5684152 -1608696 5684208 1608784 5684104 1608840 5683856 1608368 5684000 -1608832 5684152 1608784 5684104 1608696 5684208 1608896 5684208 -1608696 5684208 1608832 5684152 1608784 5684104 1608368 5684000 -1608784 5684104 1608832 5684152 1608840 5683856 1608368 5684000 -1608840 5683856 1608784 5684104 1608832 5684152 1608880 5683872 -1608784 5684104 1608696 5684208 1608832 5684152 1608880 5683872 -1608832 5684152 1608944 5683904 1608880 5683872 1608784 5684104 -1608832 5684152 1608984 5683920 1608944 5683904 1608784 5684104 -1608832 5684152 1608944 5683904 1608784 5684104 1608696 5684208 -1608840 5683856 1608368 5684000 1608784 5684104 1608880 5683872 -1608880 5683872 1608840 5683856 1608784 5684104 1608944 5683904 -1608840 5683856 1608272 5683896 1608368 5684000 1608784 5684104 -1608840 5683856 1608784 5684104 1608880 5683872 1608856 5683856 -1608784 5684104 1608768 5684064 1608368 5684000 1608696 5684208 -1608784 5684104 1608768 5684064 1608696 5684208 1608832 5684152 -1608784 5684104 1608840 5683856 1608768 5684064 1608696 5684208 -1608840 5683856 1608768 5684064 1608784 5684104 1608880 5683872 -1608768 5684064 1608696 5684208 1608784 5684104 1608880 5683872 -1608768 5684064 1608840 5683856 1608368 5684000 1608696 5684208 -1608840 5683856 1608368 5684000 1608768 5684064 1608880 5683872 -1608784 5684104 1608944 5683904 1608880 5683872 1608768 5684064 -1608784 5684104 1608832 5684152 1608944 5683904 1608768 5684064 -1608784 5684104 1608944 5683904 1608768 5684064 1608696 5684208 -1608880 5683872 1608840 5683856 1608768 5684064 1608944 5683904 -1608368 5684000 1608768 5684064 1608840 5683856 1608272 5683896 -1608840 5683856 1608768 5684064 1608880 5683872 1608856 5683856 -1608768 5684064 1608752 5684008 1608368 5684000 1608696 5684208 -1608768 5684064 1608752 5684008 1608696 5684208 1608784 5684104 -1608768 5684064 1608840 5683856 1608752 5684008 1608696 5684208 -1608840 5683856 1608752 5684008 1608768 5684064 1608880 5683872 -1608768 5684064 1608944 5683904 1608880 5683872 1608752 5684008 -1608752 5684008 1608696 5684208 1608768 5684064 1608944 5683904 -1608880 5683872 1608840 5683856 1608752 5684008 1608944 5683904 -1608752 5684008 1608840 5683856 1608368 5684000 1608696 5684208 -1608768 5684064 1608784 5684104 1608944 5683904 1608752 5684008 -1608368 5684000 1608752 5684008 1608840 5683856 1608272 5683896 -1608840 5683856 1608752 5684008 1608880 5683872 1608856 5683856 -1608840 5683856 1608368 5684000 1608752 5684008 1608880 5683872 -1608752 5684008 1608744 5683960 1608368 5684000 1608696 5684208 -1608368 5684000 1608744 5683960 1608840 5683856 1608272 5683896 -1608840 5683856 1608232 5683800 1608272 5683896 1608744 5683960 -1608840 5683856 1608608 5683328 1608232 5683800 1608744 5683960 -1608272 5683896 1608368 5684000 1608744 5683960 1608232 5683800 -1608840 5683856 1608744 5683960 1608752 5684008 1608880 5683872 -1608752 5684008 1608944 5683904 1608880 5683872 1608744 5683960 -1608840 5683856 1608744 5683960 1608880 5683872 1608856 5683856 -1608744 5683960 1608368 5684000 1608752 5684008 1608880 5683872 -1608368 5684000 1608752 5684008 1608744 5683960 1608272 5683896 -1608744 5683960 1608880 5683872 1608840 5683856 1608232 5683800 -1608232 5683800 1608744 5683928 1608840 5683856 1608608 5683328 -1608232 5683800 1608744 5683928 1608608 5683328 1608240 5683448 -1608744 5683960 1608744 5683928 1608232 5683800 1608272 5683896 -1608744 5683960 1608744 5683928 1608272 5683896 1608368 5684000 -1608744 5683928 1608232 5683800 1608272 5683896 1608368 5684000 -1608840 5683856 1608768 5683304 1608608 5683328 1608744 5683928 -1608744 5683960 1608744 5683928 1608368 5684000 1608752 5684008 -1608744 5683960 1608840 5683856 1608744 5683928 1608368 5684000 -1608840 5683856 1608744 5683928 1608744 5683960 1608880 5683872 -1608840 5683856 1608744 5683928 1608880 5683872 1608856 5683856 -1608744 5683960 1608752 5684008 1608880 5683872 1608744 5683928 -1608744 5683928 1608368 5684000 1608744 5683960 1608880 5683872 -1608232 5683800 1608272 5683896 1608744 5683928 1608608 5683328 -1608744 5683928 1608880 5683872 1608840 5683856 1608608 5683328 -1608744 5683928 1608760 5683888 1608608 5683328 1608232 5683800 -1608608 5683328 1608240 5683448 1608232 5683800 1608760 5683888 -1608608 5683328 1608760 5683888 1608840 5683856 1608768 5683304 -1608744 5683928 1608760 5683888 1608232 5683800 1608272 5683896 -1608760 5683888 1608608 5683328 1608232 5683800 1608272 5683896 -1608744 5683928 1608760 5683888 1608272 5683896 1608368 5684000 -1608744 5683928 1608760 5683888 1608368 5684000 1608744 5683960 -1608760 5683888 1608232 5683800 1608272 5683896 1608368 5684000 -1608744 5683928 1608840 5683856 1608760 5683888 1608368 5684000 -1608840 5683856 1608760 5683888 1608744 5683928 1608880 5683872 -1608760 5683888 1608840 5683856 1608608 5683328 1608232 5683800 -1608760 5683888 1608752 5683872 1608232 5683800 1608272 5683896 -1608232 5683800 1608752 5683872 1608608 5683328 1608240 5683448 -1608760 5683888 1608752 5683872 1608272 5683896 1608368 5684000 -1608752 5683872 1608232 5683800 1608272 5683896 1608368 5684000 -1608760 5683888 1608752 5683872 1608368 5684000 1608744 5683928 -1608368 5684000 1608744 5683960 1608744 5683928 1608752 5683872 -1608752 5683872 1608272 5683896 1608368 5684000 1608744 5683928 -1608608 5683328 1608752 5683872 1608760 5683888 1608840 5683856 -1608608 5683328 1608752 5683872 1608840 5683856 1608768 5683304 -1608840 5683856 1608864 5683304 1608768 5683304 1608752 5683872 -1608752 5683872 1608760 5683888 1608840 5683856 1608768 5683304 -1608760 5683888 1608840 5683856 1608752 5683872 1608744 5683928 -1608760 5683888 1608744 5683928 1608840 5683856 1608752 5683872 -1608752 5683872 1608608 5683328 1608232 5683800 1608272 5683896 -1608608 5683328 1608232 5683800 1608752 5683872 1608768 5683304 -1620552 5714440 1625960 5713048 1627296 5706984 1620512 5714368 -1627296 5706984 1620160 5713848 1620512 5714368 1625960 5713048 -1620512 5714368 1620552 5714440 1625960 5713048 1620160 5713848 -1627296 5706984 1625960 5713048 1627312 5719640 1627328 5706984 -1627312 5719640 1625960 5713048 1620552 5714440 1620560 5714512 -1627312 5719640 1627336 5719640 1627328 5706984 1625960 5713048 -1627328 5706984 1627296 5706984 1625960 5713048 1627336 5719640 -1627336 5719640 1629808 5706208 1627328 5706984 1625960 5713048 -1627328 5706984 1627296 5706984 1625960 5713048 1629808 5706208 -1627336 5719640 1627384 5719672 1629808 5706208 1625960 5713048 -1627384 5719672 1627448 5719792 1629808 5706208 1625960 5713048 -1629808 5706208 1627328 5706984 1625960 5713048 1627384 5719672 -1627336 5719640 1627384 5719672 1625960 5713048 1627312 5719640 -1627296 5706984 1627272 5706968 1620160 5713848 1625960 5713048 -1620160 5713848 1620512 5714368 1625960 5713048 1627272 5706968 -1627272 5706968 1620104 5713768 1620160 5713848 1625960 5713048 -1620160 5713848 1620512 5714368 1625960 5713048 1620104 5713768 -1627272 5706968 1620104 5713768 1625960 5713048 1627296 5706984 -1627312 5719640 1625960 5713048 1620560 5714512 1620872 5716832 -1627312 5719640 1625960 5713048 1620872 5716832 1620896 5716896 -1627312 5719640 1625960 5713048 1620896 5716896 1620928 5717008 -1625960 5713048 1620872 5716832 1620896 5716896 1620928 5717008 -1627312 5719640 1625960 5713048 1620928 5717008 1627280 5719664 -1625960 5713048 1620896 5716896 1620928 5717008 1627280 5719664 -1625960 5713048 1620552 5714440 1620560 5714512 1620872 5716832 -1620928 5717008 1626912 5719928 1627280 5719664 1625960 5713048 -1626912 5719928 1627232 5719704 1627280 5719664 1625960 5713048 -1620928 5717008 1626912 5719928 1625960 5713048 1620896 5716896 -1627280 5719664 1627312 5719640 1625960 5713048 1626912 5719928 -1620928 5717008 1620920 5717216 1626912 5719928 1625960 5713048 -1625960 5713048 1620560 5714512 1620872 5716832 1620896 5716896 -1629808 5706208 1627368 5706952 1627328 5706984 1625960 5713048 -1620560 5714512 1620856 5716800 1620872 5716832 1625960 5713048 -1620560 5714512 1620856 5716800 1625960 5713048 1620552 5714440 -1620560 5714512 1620520 5714728 1620856 5716800 1625960 5713048 -1620560 5714512 1620520 5714728 1625960 5713048 1620552 5714440 -1620872 5716832 1620896 5716896 1625960 5713048 1620856 5716800 -1620856 5716800 1620872 5716832 1625960 5713048 1620520 5714728 -1620160 5713848 1620272 5714120 1620512 5714368 1625960 5713048 -1627272 5706968 1620040 5713712 1620104 5713768 1625960 5713048 -1627272 5706968 1627248 5706936 1620040 5713712 1625960 5713048 -1620104 5713768 1620160 5713848 1625960 5713048 1620040 5713712 -1620040 5713712 1620072 5713752 1620104 5713768 1625960 5713048 -1627272 5706968 1627248 5706936 1625960 5713048 1627296 5706984 -1620040 5713712 1620104 5713768 1625960 5713048 1627248 5706936 -1627248 5706936 1618184 5707576 1620040 5713712 1625960 5713048 -1627248 5706936 1618184 5707576 1625960 5713048 1627272 5706968 -1618184 5707576 1618264 5711808 1620040 5713712 1625960 5713048 -1627248 5706936 1627208 5706856 1618184 5707576 1625960 5713048 -1620040 5713712 1620104 5713768 1625960 5713048 1618184 5707576 -1620520 5714728 1620768 5716712 1620856 5716800 1625960 5713048 -1625960 5713048 1627280 5719664 1627312 5719640 1627336 5719640 -1620552 5714440 1620560 5714512 1625960 5713048 1620512 5714368 -1625960 5713048 1627328 5706984 1627296 5706984 1627272 5706968 -1629808 5706208 1626080 5713112 1627384 5719672 1627448 5719792 -1627384 5719672 1626080 5713112 1625960 5713048 1627336 5719640 -1625960 5713048 1626080 5713112 1629808 5706208 1627328 5706984 -1625960 5713048 1626080 5713112 1627328 5706984 1627296 5706984 -1625960 5713048 1627312 5719640 1627336 5719640 1626080 5713112 -1627336 5719640 1627384 5719672 1626080 5713112 1627312 5719640 -1629808 5706208 1627368 5706952 1627328 5706984 1626080 5713112 -1625960 5713048 1627280 5719664 1627312 5719640 1626080 5713112 -1625960 5713048 1626912 5719928 1627280 5719664 1626080 5713112 -1626912 5719928 1627232 5719704 1627280 5719664 1626080 5713112 -1627312 5719640 1627336 5719640 1626080 5713112 1627280 5719664 -1625960 5713048 1620928 5717008 1626912 5719928 1626080 5713112 -1625960 5713048 1620896 5716896 1620928 5717008 1626080 5713112 -1626912 5719928 1627280 5719664 1626080 5713112 1620928 5717008 -1620928 5717008 1620920 5717216 1626912 5719928 1626080 5713112 -1627280 5719664 1627312 5719640 1626080 5713112 1626912 5719928 -1626080 5713112 1627328 5706984 1625960 5713048 1620928 5717008 -1626080 5713112 1627384 5719672 1629808 5706208 1627328 5706984 -1627384 5719672 1629808 5706208 1626080 5713112 1627336 5719640 -1629808 5706208 1626280 5713256 1627384 5719672 1627448 5719792 -1629808 5706208 1626280 5713256 1627448 5719792 1629904 5706120 -1626280 5713256 1627384 5719672 1627448 5719792 1629904 5706120 -1627384 5719672 1627400 5719704 1627448 5719792 1626280 5713256 -1629808 5706208 1626280 5713256 1629904 5706120 1629824 5706192 -1626080 5713112 1626280 5713256 1629808 5706208 1627328 5706984 -1626080 5713112 1626280 5713256 1627328 5706984 1625960 5713048 -1629808 5706208 1627368 5706952 1627328 5706984 1626280 5713256 -1626080 5713112 1627384 5719672 1626280 5713256 1627328 5706984 -1627384 5719672 1626280 5713256 1626080 5713112 1627336 5719640 -1626080 5713112 1627312 5719640 1627336 5719640 1626280 5713256 -1626080 5713112 1627280 5719664 1627312 5719640 1626280 5713256 -1627312 5719640 1627336 5719640 1626280 5713256 1627280 5719664 -1626080 5713112 1626912 5719928 1627280 5719664 1626280 5713256 -1626912 5719928 1627232 5719704 1627280 5719664 1626280 5713256 -1626080 5713112 1620928 5717008 1626912 5719928 1626280 5713256 -1627280 5719664 1627312 5719640 1626280 5713256 1626912 5719928 -1626080 5713112 1625960 5713048 1620928 5717008 1626280 5713256 -1625960 5713048 1620896 5716896 1620928 5717008 1626280 5713256 -1620928 5717008 1626912 5719928 1626280 5713256 1625960 5713048 -1620928 5717008 1620920 5717216 1626912 5719928 1626280 5713256 -1626912 5719928 1627280 5719664 1626280 5713256 1620928 5717008 -1626280 5713256 1627328 5706984 1626080 5713112 1625960 5713048 -1627336 5719640 1627384 5719672 1626280 5713256 1627312 5719640 -1629808 5706208 1627328 5706984 1626280 5713256 1629904 5706120 -1626280 5713256 1627336 5719640 1627384 5719672 1627448 5719792 -1627448 5719792 1629984 5706008 1629904 5706120 1626280 5713256 -1627448 5719792 1626344 5713272 1626280 5713256 1627384 5719672 -1626280 5713256 1626344 5713272 1629904 5706120 1629808 5706208 -1627448 5719792 1626344 5713272 1627384 5719672 1627400 5719704 -1629904 5706120 1629824 5706192 1629808 5706208 1626344 5713272 -1626280 5713256 1626344 5713272 1629808 5706208 1627328 5706984 -1626344 5713272 1629904 5706120 1629808 5706208 1627328 5706984 -1629808 5706208 1627368 5706952 1627328 5706984 1626344 5713272 -1626280 5713256 1626344 5713272 1627328 5706984 1626080 5713112 -1627328 5706984 1625960 5713048 1626080 5713112 1626344 5713272 -1626344 5713272 1629808 5706208 1627328 5706984 1626080 5713112 -1626344 5713272 1626080 5713112 1626280 5713256 1627384 5719672 -1626280 5713256 1627336 5719640 1627384 5719672 1626344 5713272 -1627384 5719672 1627448 5719792 1626344 5713272 1627336 5719640 -1626280 5713256 1627312 5719640 1627336 5719640 1626344 5713272 -1626280 5713256 1627280 5719664 1627312 5719640 1626344 5713272 -1626280 5713256 1627312 5719640 1626344 5713272 1626080 5713112 -1627336 5719640 1627384 5719672 1626344 5713272 1627312 5719640 -1626344 5713272 1627448 5719792 1629904 5706120 1629808 5706208 -1627448 5719792 1629904 5706120 1626344 5713272 1627384 5719672 -1629904 5706120 1626344 5713272 1627448 5719792 1629984 5706008 -1626344 5713272 1626440 5713328 1629904 5706120 1629808 5706208 -1626344 5713272 1626440 5713328 1629808 5706208 1627328 5706984 -1629808 5706208 1627368 5706952 1627328 5706984 1626440 5713328 -1629904 5706120 1629824 5706192 1629808 5706208 1626440 5713328 -1626344 5713272 1626440 5713328 1627328 5706984 1626080 5713112 -1626440 5713328 1629904 5706120 1629808 5706208 1627328 5706984 -1626344 5713272 1627448 5719792 1626440 5713328 1627328 5706984 -1627448 5719792 1626440 5713328 1626344 5713272 1627384 5719672 -1626344 5713272 1627336 5719640 1627384 5719672 1626440 5713328 -1627448 5719792 1626440 5713328 1627384 5719672 1627400 5719704 -1626344 5713272 1627312 5719640 1627336 5719640 1626440 5713328 -1627336 5719640 1627384 5719672 1626440 5713328 1627312 5719640 -1626344 5713272 1626280 5713256 1627312 5719640 1626440 5713328 -1626280 5713256 1627280 5719664 1627312 5719640 1626440 5713328 -1626280 5713256 1626912 5719928 1627280 5719664 1626440 5713328 -1626912 5719928 1627232 5719704 1627280 5719664 1626440 5713328 -1627280 5719664 1627312 5719640 1626440 5713328 1626912 5719928 -1626280 5713256 1620928 5717008 1626912 5719928 1626440 5713328 -1626280 5713256 1626912 5719928 1626440 5713328 1626344 5713272 -1627312 5719640 1627336 5719640 1626440 5713328 1627280 5719664 -1626440 5713328 1627328 5706984 1626344 5713272 1626280 5713256 -1627384 5719672 1627448 5719792 1626440 5713328 1627336 5719640 -1626440 5713328 1627448 5719792 1629904 5706120 1629808 5706208 -1627448 5719792 1629904 5706120 1626440 5713328 1627384 5719672 -1629904 5706120 1626440 5713328 1627448 5719792 1629984 5706008 -1626440 5713328 1626480 5713384 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1626480 5713384 -1626440 5713328 1626480 5713384 1629808 5706208 1627328 5706984 -1626440 5713328 1627448 5719792 1626480 5713384 1629808 5706208 -1627448 5719792 1626480 5713384 1626440 5713328 1627384 5719672 -1627448 5719792 1626480 5713384 1627384 5719672 1627400 5719704 -1626440 5713328 1627336 5719640 1627384 5719672 1626480 5713384 -1626440 5713328 1627312 5719640 1627336 5719640 1626480 5713384 -1626440 5713328 1627280 5719664 1627312 5719640 1626480 5713384 -1627312 5719640 1627336 5719640 1626480 5713384 1627280 5719664 -1626440 5713328 1626912 5719928 1627280 5719664 1626480 5713384 -1626912 5719928 1627232 5719704 1627280 5719664 1626480 5713384 -1626440 5713328 1626280 5713256 1626912 5719928 1626480 5713384 -1626912 5719928 1627280 5719664 1626480 5713384 1626280 5713256 -1626280 5713256 1620928 5717008 1626912 5719928 1626480 5713384 -1626280 5713256 1625960 5713048 1620928 5717008 1626480 5713384 -1626912 5719928 1627280 5719664 1626480 5713384 1620928 5717008 -1626280 5713256 1620928 5717008 1626480 5713384 1626440 5713328 -1620928 5717008 1620920 5717216 1626912 5719928 1626480 5713384 -1626440 5713328 1626344 5713272 1626280 5713256 1626480 5713384 -1626280 5713256 1620928 5717008 1626480 5713384 1626344 5713272 -1627280 5719664 1627312 5719640 1626480 5713384 1626912 5719928 -1627336 5719640 1627384 5719672 1626480 5713384 1627312 5719640 -1626480 5713384 1629808 5706208 1626440 5713328 1626344 5713272 -1627384 5719672 1627448 5719792 1626480 5713384 1627336 5719640 -1626480 5713384 1627448 5719792 1629904 5706120 1629808 5706208 -1627448 5719792 1629904 5706120 1626480 5713384 1627384 5719672 -1629904 5706120 1626480 5713384 1627448 5719792 1629984 5706008 -1626480 5713384 1626496 5713456 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1626496 5713456 -1626480 5713384 1626496 5713456 1629808 5706208 1626440 5713328 -1626480 5713384 1627448 5719792 1626496 5713456 1629808 5706208 -1627448 5719792 1626496 5713456 1626480 5713384 1627384 5719672 -1627448 5719792 1626496 5713456 1627384 5719672 1627400 5719704 -1626480 5713384 1627336 5719640 1627384 5719672 1626496 5713456 -1626480 5713384 1627312 5719640 1627336 5719640 1626496 5713456 -1626480 5713384 1627280 5719664 1627312 5719640 1626496 5713456 -1626480 5713384 1626912 5719928 1627280 5719664 1626496 5713456 -1626912 5719928 1627232 5719704 1627280 5719664 1626496 5713456 -1627280 5719664 1627312 5719640 1626496 5713456 1626912 5719928 -1626480 5713384 1620928 5717008 1626912 5719928 1626496 5713456 -1620928 5717008 1620920 5717216 1626912 5719928 1626496 5713456 -1626480 5713384 1626280 5713256 1620928 5717008 1626496 5713456 -1626280 5713256 1625960 5713048 1620928 5717008 1626496 5713456 -1625960 5713048 1620896 5716896 1620928 5717008 1626496 5713456 -1625960 5713048 1620872 5716832 1620896 5716896 1626496 5713456 -1625960 5713048 1620896 5716896 1626496 5713456 1626280 5713256 -1620928 5717008 1626912 5719928 1626496 5713456 1620896 5716896 -1626480 5713384 1626344 5713272 1626280 5713256 1626496 5713456 -1626280 5713256 1626080 5713112 1625960 5713048 1626496 5713456 -1626280 5713256 1625960 5713048 1626496 5713456 1626344 5713272 -1626480 5713384 1626440 5713328 1626344 5713272 1626496 5713456 -1626344 5713272 1626280 5713256 1626496 5713456 1626440 5713328 -1626912 5719928 1627280 5719664 1626496 5713456 1620928 5717008 -1627312 5719640 1627336 5719640 1626496 5713456 1627280 5719664 -1627336 5719640 1627384 5719672 1626496 5713456 1627312 5719640 -1626496 5713456 1629808 5706208 1626480 5713384 1626440 5713328 -1627384 5719672 1627448 5719792 1626496 5713456 1627336 5719640 -1626496 5713456 1627448 5719792 1629904 5706120 1629808 5706208 -1627448 5719792 1629904 5706120 1626496 5713456 1627384 5719672 -1629904 5706120 1626496 5713456 1627448 5719792 1629984 5706008 -1620928 5717008 1626472 5713592 1626496 5713456 1620896 5716896 -1626496 5713456 1625960 5713048 1620896 5716896 1626472 5713592 -1625960 5713048 1620872 5716832 1620896 5716896 1626472 5713592 -1625960 5713048 1620872 5716832 1626472 5713592 1626496 5713456 -1626496 5713456 1626280 5713256 1625960 5713048 1626472 5713592 -1625960 5713048 1620872 5716832 1626472 5713592 1626280 5713256 -1620896 5716896 1620928 5717008 1626472 5713592 1620872 5716832 -1626280 5713256 1626080 5713112 1625960 5713048 1626472 5713592 -1625960 5713048 1620872 5716832 1626472 5713592 1626080 5713112 -1626280 5713256 1626080 5713112 1626472 5713592 1626496 5713456 -1626912 5719928 1626472 5713592 1620928 5717008 1620920 5717216 -1625960 5713048 1620856 5716800 1620872 5716832 1626472 5713592 -1626496 5713456 1626344 5713272 1626280 5713256 1626472 5713592 -1626280 5713256 1626080 5713112 1626472 5713592 1626344 5713272 -1626496 5713456 1626440 5713328 1626344 5713272 1626472 5713592 -1626496 5713456 1626472 5713592 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1626472 5713592 -1626496 5713456 1626472 5713592 1627280 5719664 1627312 5719640 -1626472 5713592 1626912 5719928 1627280 5719664 1627312 5719640 -1626496 5713456 1626472 5713592 1627312 5719640 1627336 5719640 -1626472 5713592 1627280 5719664 1627312 5719640 1627336 5719640 -1626496 5713456 1626472 5713592 1627336 5719640 1627384 5719672 -1626472 5713592 1627312 5719640 1627336 5719640 1627384 5719672 -1626496 5713456 1626472 5713592 1627384 5719672 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1626472 5713592 -1626472 5713592 1627336 5719640 1627384 5719672 1627448 5719792 -1626472 5713592 1627448 5719792 1626496 5713456 1626344 5713272 -1626496 5713456 1626472 5713592 1627448 5719792 1629904 5706120 -1626472 5713592 1620928 5717008 1626912 5719928 1627280 5719664 -1620928 5717008 1626912 5719928 1626472 5713592 1620896 5716896 -1626912 5719928 1626456 5713624 1620928 5717008 1620920 5717216 -1626472 5713592 1626456 5713624 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1626456 5713624 -1626472 5713592 1626456 5713624 1627280 5719664 1627312 5719640 -1626472 5713592 1626456 5713624 1627312 5719640 1627336 5719640 -1626456 5713624 1627280 5719664 1627312 5719640 1627336 5719640 -1626472 5713592 1626456 5713624 1627336 5719640 1627384 5719672 -1626456 5713624 1627312 5719640 1627336 5719640 1627384 5719672 -1626472 5713592 1626456 5713624 1627384 5719672 1627448 5719792 -1626456 5713624 1626912 5719928 1627280 5719664 1627312 5719640 -1626472 5713592 1620928 5717008 1626456 5713624 1627384 5719672 -1620928 5717008 1626456 5713624 1626472 5713592 1620896 5716896 -1626472 5713592 1620872 5716832 1620896 5716896 1626456 5713624 -1626472 5713592 1625960 5713048 1620872 5716832 1626456 5713624 -1626472 5713592 1626080 5713112 1625960 5713048 1626456 5713624 -1625960 5713048 1620872 5716832 1626456 5713624 1626080 5713112 -1620872 5716832 1620896 5716896 1626456 5713624 1625960 5713048 -1626472 5713592 1626280 5713256 1626080 5713112 1626456 5713624 -1626080 5713112 1625960 5713048 1626456 5713624 1626280 5713256 -1626472 5713592 1626344 5713272 1626280 5713256 1626456 5713624 -1625960 5713048 1620856 5716800 1620872 5716832 1626456 5713624 -1626456 5713624 1627384 5719672 1626472 5713592 1626280 5713256 -1620896 5716896 1620928 5717008 1626456 5713624 1620872 5716832 -1626456 5713624 1620928 5717008 1626912 5719928 1627280 5719664 -1620928 5717008 1626912 5719928 1626456 5713624 1620896 5716896 -1626912 5719928 1626360 5713736 1620928 5717008 1620920 5717216 -1626456 5713624 1626360 5713736 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1626360 5713736 -1626456 5713624 1626360 5713736 1627280 5719664 1627312 5719640 -1626456 5713624 1626360 5713736 1627312 5719640 1627336 5719640 -1626456 5713624 1626360 5713736 1627336 5719640 1627384 5719672 -1626360 5713736 1627280 5719664 1627312 5719640 1627336 5719640 -1626360 5713736 1626912 5719928 1627280 5719664 1627312 5719640 -1626456 5713624 1620928 5717008 1626360 5713736 1627336 5719640 -1620928 5717008 1626360 5713736 1626456 5713624 1620896 5716896 -1626456 5713624 1620872 5716832 1620896 5716896 1626360 5713736 -1626456 5713624 1625960 5713048 1620872 5716832 1626360 5713736 -1626456 5713624 1626080 5713112 1625960 5713048 1626360 5713736 -1626456 5713624 1626280 5713256 1626080 5713112 1626360 5713736 -1626080 5713112 1625960 5713048 1626360 5713736 1626280 5713256 -1625960 5713048 1620872 5716832 1626360 5713736 1626080 5713112 -1626456 5713624 1626472 5713592 1626280 5713256 1626360 5713736 -1625960 5713048 1620856 5716800 1620872 5716832 1626360 5713736 -1625960 5713048 1620856 5716800 1626360 5713736 1626080 5713112 -1625960 5713048 1620520 5714728 1620856 5716800 1626360 5713736 -1625960 5713048 1620520 5714728 1626360 5713736 1626080 5713112 -1625960 5713048 1620560 5714512 1620520 5714728 1626360 5713736 -1625960 5713048 1620552 5714440 1620560 5714512 1626360 5713736 -1625960 5713048 1620560 5714512 1626360 5713736 1626080 5713112 -1620856 5716800 1620872 5716832 1626360 5713736 1620520 5714728 -1620520 5714728 1620856 5716800 1626360 5713736 1620560 5714512 -1620520 5714728 1620768 5716712 1620856 5716800 1626360 5713736 -1620872 5716832 1620896 5716896 1626360 5713736 1620856 5716800 -1626360 5713736 1627336 5719640 1626456 5713624 1626280 5713256 -1620896 5716896 1620928 5717008 1626360 5713736 1620872 5716832 -1626360 5713736 1620928 5717008 1626912 5719928 1627280 5719664 -1620928 5717008 1626912 5719928 1626360 5713736 1620896 5716896 -1626912 5719928 1626320 5713816 1620928 5717008 1620920 5717216 -1626360 5713736 1626320 5713816 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1626320 5713816 -1626360 5713736 1626320 5713816 1627280 5719664 1627312 5719640 -1626360 5713736 1626320 5713816 1627312 5719640 1627336 5719640 -1626360 5713736 1626320 5713816 1627336 5719640 1626456 5713624 -1627336 5719640 1627384 5719672 1626456 5713624 1626320 5713816 -1626456 5713624 1626360 5713736 1626320 5713816 1627384 5719672 -1627384 5719672 1626472 5713592 1626456 5713624 1626320 5713816 -1626320 5713816 1627312 5719640 1627336 5719640 1627384 5719672 -1626320 5713816 1627280 5719664 1627312 5719640 1627336 5719640 -1626320 5713816 1626912 5719928 1627280 5719664 1627312 5719640 -1626360 5713736 1620928 5717008 1626320 5713816 1626456 5713624 -1620928 5717008 1626320 5713816 1626360 5713736 1620896 5716896 -1626360 5713736 1620872 5716832 1620896 5716896 1626320 5713816 -1626360 5713736 1620856 5716800 1620872 5716832 1626320 5713816 -1626360 5713736 1620520 5714728 1620856 5716800 1626320 5713816 -1626360 5713736 1620560 5714512 1620520 5714728 1626320 5713816 -1626360 5713736 1625960 5713048 1620560 5714512 1626320 5713816 -1625960 5713048 1620552 5714440 1620560 5714512 1626320 5713816 -1626360 5713736 1626080 5713112 1625960 5713048 1626320 5713816 -1626360 5713736 1626280 5713256 1626080 5713112 1626320 5713816 -1626360 5713736 1626456 5713624 1626280 5713256 1626320 5713816 -1626080 5713112 1625960 5713048 1626320 5713816 1626280 5713256 -1625960 5713048 1620560 5714512 1626320 5713816 1626080 5713112 -1620520 5714728 1620856 5716800 1626320 5713816 1620560 5714512 -1620560 5714512 1620520 5714728 1626320 5713816 1625960 5713048 -1620520 5714728 1620768 5716712 1620856 5716800 1626320 5713816 -1620856 5716800 1620872 5716832 1626320 5713816 1620520 5714728 -1620872 5716832 1620896 5716896 1626320 5713816 1620856 5716800 -1626320 5713816 1626456 5713624 1626360 5713736 1626280 5713256 -1620896 5716896 1620928 5717008 1626320 5713816 1620872 5716832 -1626320 5713816 1620928 5717008 1626912 5719928 1627280 5719664 -1620928 5717008 1626912 5719928 1626320 5713816 1620896 5716896 -1626912 5719928 1626336 5714040 1620928 5717008 1620920 5717216 -1626320 5713816 1626336 5714040 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1626336 5714040 -1626320 5713816 1626336 5714040 1627280 5719664 1627312 5719640 -1626320 5713816 1626336 5714040 1627312 5719640 1627336 5719640 -1626320 5713816 1626336 5714040 1627336 5719640 1627384 5719672 -1626320 5713816 1626336 5714040 1627384 5719672 1626456 5713624 -1626320 5713816 1626336 5714040 1626456 5713624 1626360 5713736 -1626336 5714040 1627384 5719672 1626456 5713624 1626360 5713736 -1627384 5719672 1626472 5713592 1626456 5713624 1626336 5714040 -1626456 5713624 1626360 5713736 1626336 5714040 1626472 5713592 -1627384 5719672 1627448 5719792 1626472 5713592 1626336 5714040 -1626336 5714040 1627336 5719640 1627384 5719672 1626472 5713592 -1626336 5714040 1627312 5719640 1627336 5719640 1627384 5719672 -1626336 5714040 1627280 5719664 1627312 5719640 1627336 5719640 -1626336 5714040 1626912 5719928 1627280 5719664 1627312 5719640 -1626320 5713816 1620928 5717008 1626336 5714040 1626360 5713736 -1620928 5717008 1626336 5714040 1626320 5713816 1620896 5716896 -1626320 5713816 1620872 5716832 1620896 5716896 1626336 5714040 -1626320 5713816 1620856 5716800 1620872 5716832 1626336 5714040 -1626320 5713816 1620520 5714728 1620856 5716800 1626336 5714040 -1626320 5713816 1620560 5714512 1620520 5714728 1626336 5714040 -1626320 5713816 1625960 5713048 1620560 5714512 1626336 5714040 -1625960 5713048 1620552 5714440 1620560 5714512 1626336 5714040 -1626320 5713816 1626080 5713112 1625960 5713048 1626336 5714040 -1620560 5714512 1620520 5714728 1626336 5714040 1625960 5713048 -1620520 5714728 1620768 5716712 1620856 5716800 1626336 5714040 -1620520 5714728 1620856 5716800 1626336 5714040 1620560 5714512 -1620856 5716800 1620872 5716832 1626336 5714040 1620520 5714728 -1620872 5716832 1620896 5716896 1626336 5714040 1620856 5716800 -1626336 5714040 1626360 5713736 1626320 5713816 1625960 5713048 -1620896 5716896 1620928 5717008 1626336 5714040 1620872 5716832 -1626336 5714040 1620928 5717008 1626912 5719928 1627280 5719664 -1620928 5717008 1626912 5719928 1626336 5714040 1620896 5716896 -1620560 5714512 1626264 5714032 1625960 5713048 1620552 5714440 -1626336 5714040 1626264 5714032 1620560 5714512 1620520 5714728 -1625960 5713048 1626264 5714032 1626336 5714040 1626320 5713816 -1625960 5713048 1626264 5714032 1626320 5713816 1626080 5713112 -1626336 5714040 1626264 5714032 1620520 5714728 1620856 5716800 -1626264 5714032 1620560 5714512 1620520 5714728 1620856 5716800 -1620520 5714728 1620768 5716712 1620856 5716800 1626264 5714032 -1626336 5714040 1626264 5714032 1620856 5716800 1620872 5716832 -1626264 5714032 1620520 5714728 1620856 5716800 1620872 5716832 -1626336 5714040 1626264 5714032 1620872 5716832 1620896 5716896 -1626264 5714032 1620856 5716800 1620872 5716832 1620896 5716896 -1626336 5714040 1626264 5714032 1620896 5716896 1620928 5717008 -1626264 5714032 1620872 5716832 1620896 5716896 1620928 5717008 -1626336 5714040 1626320 5713816 1626264 5714032 1620928 5717008 -1626336 5714040 1626264 5714032 1620928 5717008 1626912 5719928 -1620928 5717008 1620920 5717216 1626912 5719928 1626264 5714032 -1626264 5714032 1620896 5716896 1620928 5717008 1626912 5719928 -1626336 5714040 1626264 5714032 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1626264 5714032 -1626336 5714040 1626264 5714032 1627280 5719664 1627312 5719640 -1626336 5714040 1626264 5714032 1627312 5719640 1627336 5719640 -1626264 5714032 1626912 5719928 1627280 5719664 1627312 5719640 -1626336 5714040 1626320 5713816 1626264 5714032 1627312 5719640 -1626264 5714032 1620928 5717008 1626912 5719928 1627280 5719664 -1626264 5714032 1625960 5713048 1620560 5714512 1620520 5714728 -1625960 5713048 1620560 5714512 1626264 5714032 1626320 5713816 -1620560 5714512 1625960 5713848 1625960 5713048 1620552 5714440 -1625960 5713048 1620512 5714368 1620552 5714440 1625960 5713848 -1625960 5713848 1626264 5714032 1625960 5713048 1620552 5714440 -1626264 5714032 1625960 5713848 1620560 5714512 1620520 5714728 -1626264 5714032 1625960 5713848 1620520 5714728 1620856 5716800 -1620520 5714728 1620768 5716712 1620856 5716800 1625960 5713848 -1626264 5714032 1625960 5713848 1620856 5716800 1620872 5716832 -1625960 5713848 1620520 5714728 1620856 5716800 1620872 5716832 -1626264 5714032 1625960 5713848 1620872 5716832 1620896 5716896 -1625960 5713848 1620856 5716800 1620872 5716832 1620896 5716896 -1626264 5714032 1625960 5713848 1620896 5716896 1620928 5717008 -1625960 5713848 1620872 5716832 1620896 5716896 1620928 5717008 -1626264 5714032 1625960 5713848 1620928 5717008 1626912 5719928 -1625960 5713848 1620560 5714512 1620520 5714728 1620856 5716800 -1626264 5714032 1625960 5713048 1625960 5713848 1620928 5717008 -1625960 5713048 1625960 5713848 1626264 5714032 1626320 5713816 -1625960 5713048 1625960 5713848 1626320 5713816 1626080 5713112 -1626320 5713816 1626280 5713256 1626080 5713112 1625960 5713848 -1626320 5713816 1626360 5713736 1626280 5713256 1625960 5713848 -1626360 5713736 1626456 5713624 1626280 5713256 1625960 5713848 -1626280 5713256 1626080 5713112 1625960 5713848 1626360 5713736 -1626080 5713112 1625960 5713048 1625960 5713848 1626280 5713256 -1626264 5714032 1626336 5714040 1626320 5713816 1625960 5713848 -1625960 5713048 1620552 5714440 1625960 5713848 1626080 5713112 -1625960 5713848 1620928 5717008 1626264 5714032 1626320 5713816 -1625960 5713848 1626264 5714032 1626320 5713816 1626360 5713736 -1620560 5714512 1620520 5714728 1625960 5713848 1620552 5714440 -1625960 5713848 1625816 5713840 1620552 5714440 1620560 5714512 -1620552 5714440 1625816 5713840 1625960 5713048 1620512 5714368 -1625960 5713048 1620160 5713848 1620512 5714368 1625816 5713840 -1625960 5713048 1625816 5713840 1625960 5713848 1626080 5713112 -1625960 5713848 1626280 5713256 1626080 5713112 1625816 5713840 -1625816 5713840 1620512 5714368 1620552 5714440 1620560 5714512 -1625816 5713840 1626080 5713112 1625960 5713048 1620512 5714368 -1625960 5713848 1625816 5713840 1620560 5714512 1620520 5714728 -1625816 5713840 1620552 5714440 1620560 5714512 1620520 5714728 -1625960 5713848 1625816 5713840 1620520 5714728 1620856 5716800 -1625960 5713848 1625816 5713840 1620856 5716800 1620872 5716832 -1620520 5714728 1620768 5716712 1620856 5716800 1625816 5713840 -1625960 5713848 1625816 5713840 1620872 5716832 1620896 5716896 -1625816 5713840 1620856 5716800 1620872 5716832 1620896 5716896 -1625960 5713848 1625816 5713840 1620896 5716896 1620928 5717008 -1625816 5713840 1620872 5716832 1620896 5716896 1620928 5717008 -1625960 5713848 1625816 5713840 1620928 5717008 1626264 5714032 -1625816 5713840 1620896 5716896 1620928 5717008 1626264 5714032 -1620928 5717008 1626912 5719928 1626264 5714032 1625816 5713840 -1620928 5717008 1620920 5717216 1626912 5719928 1625816 5713840 -1620928 5717008 1626912 5719928 1625816 5713840 1620896 5716896 -1626264 5714032 1625960 5713848 1625816 5713840 1626912 5719928 -1626912 5719928 1627280 5719664 1626264 5714032 1625816 5713840 -1625816 5713840 1620520 5714728 1620856 5716800 1620872 5716832 -1625816 5713840 1620560 5714512 1620520 5714728 1620856 5716800 -1625960 5713848 1626080 5713112 1625816 5713840 1626264 5714032 -1620512 5714368 1625768 5713824 1625960 5713048 1620160 5713848 -1625816 5713840 1625768 5713824 1620512 5714368 1620552 5714440 -1625816 5713840 1625768 5713824 1620552 5714440 1620560 5714512 -1625816 5713840 1625768 5713824 1620560 5714512 1620520 5714728 -1625768 5713824 1620512 5714368 1620552 5714440 1620560 5714512 -1625768 5713824 1620552 5714440 1620560 5714512 1620520 5714728 -1625816 5713840 1625960 5713048 1625768 5713824 1620520 5714728 -1625960 5713048 1625768 5713824 1625816 5713840 1626080 5713112 -1625816 5713840 1625960 5713848 1626080 5713112 1625768 5713824 -1625960 5713848 1626280 5713256 1626080 5713112 1625768 5713824 -1625768 5713824 1620520 5714728 1625816 5713840 1625960 5713848 -1626080 5713112 1625960 5713048 1625768 5713824 1625960 5713848 -1625768 5713824 1625960 5713048 1620512 5714368 1620552 5714440 -1625960 5713048 1620512 5714368 1625768 5713824 1626080 5713112 -1625816 5713840 1625768 5713824 1620520 5714728 1620856 5716800 -1625768 5713824 1620560 5714512 1620520 5714728 1620856 5716800 -1620520 5714728 1620768 5716712 1620856 5716800 1625768 5713824 -1625816 5713840 1625960 5713848 1625768 5713824 1620856 5716800 -1625816 5713840 1625768 5713824 1620856 5716800 1620872 5716832 -1625816 5713840 1625768 5713824 1620872 5716832 1620896 5716896 -1625816 5713840 1625768 5713824 1620896 5716896 1620928 5717008 -1625768 5713824 1620872 5716832 1620896 5716896 1620928 5717008 -1625816 5713840 1625768 5713824 1620928 5717008 1626912 5719928 -1620928 5717008 1620920 5717216 1626912 5719928 1625768 5713824 -1625768 5713824 1620896 5716896 1620928 5717008 1626912 5719928 -1625816 5713840 1625768 5713824 1626912 5719928 1626264 5714032 -1625768 5713824 1620928 5717008 1626912 5719928 1626264 5714032 -1625816 5713840 1625768 5713824 1626264 5714032 1625960 5713848 -1626912 5719928 1627280 5719664 1626264 5714032 1625768 5713824 -1625816 5713840 1625960 5713848 1625768 5713824 1626264 5714032 -1625768 5713824 1620856 5716800 1620872 5716832 1620896 5716896 -1625768 5713824 1620520 5714728 1620856 5716800 1620872 5716832 -1620552 5714440 1625568 5713848 1625768 5713824 1620512 5714368 -1625768 5713824 1625568 5713848 1620560 5714512 1620520 5714728 -1625768 5713824 1625568 5713848 1620520 5714728 1620856 5716800 -1620520 5714728 1620768 5716712 1620856 5716800 1625568 5713848 -1625568 5713848 1620560 5714512 1620520 5714728 1620856 5716800 -1625768 5713824 1625960 5713048 1620512 5714368 1625568 5713848 -1625960 5713048 1620160 5713848 1620512 5714368 1625568 5713848 -1625960 5713048 1620104 5713768 1620160 5713848 1625568 5713848 -1620160 5713848 1620272 5714120 1620512 5714368 1625568 5713848 -1620512 5714368 1620552 5714440 1625568 5713848 1620160 5713848 -1625960 5713048 1620160 5713848 1625568 5713848 1625768 5713824 -1625568 5713848 1620856 5716800 1625768 5713824 1625960 5713048 -1625768 5713824 1626080 5713112 1625960 5713048 1625568 5713848 -1625768 5713824 1625568 5713848 1620856 5716800 1620872 5716832 -1625568 5713848 1620520 5714728 1620856 5716800 1620872 5716832 -1625768 5713824 1625960 5713048 1625568 5713848 1620872 5716832 -1625768 5713824 1625568 5713848 1620872 5716832 1620896 5716896 -1625768 5713824 1625568 5713848 1620896 5716896 1620928 5717008 -1625768 5713824 1625568 5713848 1620928 5717008 1626912 5719928 -1620928 5717008 1620920 5717216 1626912 5719928 1625568 5713848 -1620920 5717216 1626864 5719976 1626912 5719928 1625568 5713848 -1625568 5713848 1620896 5716896 1620928 5717008 1620920 5717216 -1626912 5719928 1625768 5713824 1625568 5713848 1620920 5717216 -1625768 5713824 1625568 5713848 1626912 5719928 1626264 5714032 -1625568 5713848 1620920 5717216 1626912 5719928 1626264 5714032 -1625768 5713824 1625568 5713848 1626264 5714032 1625816 5713840 -1625568 5713848 1626912 5719928 1626264 5714032 1625816 5713840 -1626264 5714032 1625960 5713848 1625816 5713840 1625568 5713848 -1626912 5719928 1627280 5719664 1626264 5714032 1625568 5713848 -1625768 5713824 1625960 5713048 1625568 5713848 1625816 5713840 -1625568 5713848 1620872 5716832 1620896 5716896 1620928 5717008 -1625568 5713848 1620856 5716800 1620872 5716832 1620896 5716896 -1625568 5713848 1620552 5714440 1620560 5714512 1620520 5714728 -1620552 5714440 1620560 5714512 1625568 5713848 1620512 5714368 -1620160 5713848 1625520 5713800 1625960 5713048 1620104 5713768 -1625568 5713848 1625520 5713800 1620160 5713848 1620512 5714368 -1625960 5713048 1620040 5713712 1620104 5713768 1625520 5713800 -1620160 5713848 1620272 5714120 1620512 5714368 1625520 5713800 -1625568 5713848 1625520 5713800 1620512 5714368 1620552 5714440 -1625520 5713800 1620160 5713848 1620512 5714368 1620552 5714440 -1625960 5713048 1625520 5713800 1625568 5713848 1625768 5713824 -1625960 5713048 1625520 5713800 1625768 5713824 1626080 5713112 -1625568 5713848 1625768 5713824 1625520 5713800 1620552 5714440 -1625568 5713848 1625520 5713800 1620552 5714440 1620560 5714512 -1625520 5713800 1620512 5714368 1620552 5714440 1620560 5714512 -1625568 5713848 1625520 5713800 1620560 5714512 1620520 5714728 -1625568 5713848 1625520 5713800 1620520 5714728 1620856 5716800 -1625568 5713848 1625520 5713800 1620856 5716800 1620872 5716832 -1620520 5714728 1620768 5716712 1620856 5716800 1625520 5713800 -1625520 5713800 1620520 5714728 1620856 5716800 1620872 5716832 -1625568 5713848 1625520 5713800 1620872 5716832 1620896 5716896 -1625520 5713800 1620560 5714512 1620520 5714728 1620856 5716800 -1625568 5713848 1625768 5713824 1625520 5713800 1620872 5716832 -1625520 5713800 1620552 5714440 1620560 5714512 1620520 5714728 -1620160 5713848 1620512 5714368 1625520 5713800 1620104 5713768 -1625520 5713800 1625768 5713824 1625960 5713048 1620104 5713768 -1625520 5713800 1625440 5713680 1620104 5713768 1620160 5713848 -1620104 5713768 1625440 5713680 1625960 5713048 1620040 5713712 -1625520 5713800 1625440 5713680 1620160 5713848 1620512 5714368 -1625440 5713680 1620104 5713768 1620160 5713848 1620512 5714368 -1625520 5713800 1625440 5713680 1620512 5714368 1620552 5714440 -1620160 5713848 1620272 5714120 1620512 5714368 1625440 5713680 -1625520 5713800 1625440 5713680 1620552 5714440 1620560 5714512 -1625440 5713680 1620512 5714368 1620552 5714440 1620560 5714512 -1625520 5713800 1625440 5713680 1620560 5714512 1620520 5714728 -1625440 5713680 1620552 5714440 1620560 5714512 1620520 5714728 -1625520 5713800 1625440 5713680 1620520 5714728 1620856 5716800 -1625440 5713680 1620160 5713848 1620512 5714368 1620552 5714440 -1625520 5713800 1625960 5713048 1625440 5713680 1620520 5714728 -1625960 5713048 1625440 5713680 1625520 5713800 1625768 5713824 -1625520 5713800 1625568 5713848 1625768 5713824 1625440 5713680 -1625960 5713048 1625440 5713680 1625768 5713824 1626080 5713112 -1625440 5713680 1620520 5714728 1625520 5713800 1625768 5713824 -1625440 5713680 1625960 5713048 1620104 5713768 1620160 5713848 -1625960 5713048 1620104 5713768 1625440 5713680 1625768 5713824 -1620104 5713768 1625344 5713632 1625960 5713048 1620040 5713712 -1620104 5713768 1625344 5713632 1620040 5713712 1620072 5713752 -1625344 5713632 1625440 5713680 1625960 5713048 1620040 5713712 -1625960 5713048 1618184 5707576 1620040 5713712 1625344 5713632 -1625440 5713680 1625344 5713632 1620104 5713768 1620160 5713848 -1625440 5713680 1625344 5713632 1620160 5713848 1620512 5714368 -1620160 5713848 1620272 5714120 1620512 5714368 1625344 5713632 -1625440 5713680 1625344 5713632 1620512 5714368 1620552 5714440 -1625344 5713632 1620160 5713848 1620512 5714368 1620552 5714440 -1625440 5713680 1625344 5713632 1620552 5714440 1620560 5714512 -1625440 5713680 1625344 5713632 1620560 5714512 1620520 5714728 -1625344 5713632 1620552 5714440 1620560 5714512 1620520 5714728 -1625440 5713680 1625344 5713632 1620520 5714728 1625520 5713800 -1625344 5713632 1620560 5714512 1620520 5714728 1625520 5713800 -1620520 5714728 1620856 5716800 1625520 5713800 1625344 5713632 -1620520 5714728 1620768 5716712 1620856 5716800 1625344 5713632 -1620520 5714728 1620856 5716800 1625344 5713632 1620560 5714512 -1620856 5716800 1620872 5716832 1625520 5713800 1625344 5713632 -1620872 5716832 1625568 5713848 1625520 5713800 1625344 5713632 -1620856 5716800 1620872 5716832 1625344 5713632 1620520 5714728 -1625520 5713800 1625440 5713680 1625344 5713632 1620872 5716832 -1625344 5713632 1620512 5714368 1620552 5714440 1620560 5714512 -1625344 5713632 1620104 5713768 1620160 5713848 1620512 5714368 -1625440 5713680 1625960 5713048 1625344 5713632 1625520 5713800 -1625960 5713048 1625344 5713632 1625440 5713680 1625768 5713824 -1620104 5713768 1620160 5713848 1625344 5713632 1620040 5713712 -1625344 5713632 1625072 5713648 1620512 5714368 1620552 5714440 -1625344 5713632 1620160 5713848 1625072 5713648 1620552 5714440 -1625072 5713648 1620160 5713848 1620512 5714368 1620552 5714440 -1620512 5714368 1625072 5713648 1620160 5713848 1620272 5714120 -1625344 5713632 1625072 5713648 1620552 5714440 1620560 5714512 -1625072 5713648 1620512 5714368 1620552 5714440 1620560 5714512 -1625344 5713632 1625072 5713648 1620560 5714512 1620520 5714728 -1625344 5713632 1620160 5713848 1625072 5713648 1620520 5714728 -1625344 5713632 1625072 5713648 1620520 5714728 1620856 5716800 -1625072 5713648 1620560 5714512 1620520 5714728 1620856 5716800 -1625344 5713632 1620160 5713848 1625072 5713648 1620856 5716800 -1620520 5714728 1620768 5716712 1620856 5716800 1625072 5713648 -1625344 5713632 1625072 5713648 1620856 5716800 1620872 5716832 -1625344 5713632 1620160 5713848 1625072 5713648 1620872 5716832 -1625072 5713648 1620520 5714728 1620856 5716800 1620872 5716832 -1625344 5713632 1625072 5713648 1620872 5716832 1625520 5713800 -1620872 5716832 1625568 5713848 1625520 5713800 1625072 5713648 -1625344 5713632 1620160 5713848 1625072 5713648 1625520 5713800 -1625520 5713800 1625344 5713632 1625072 5713648 1625568 5713848 -1620872 5716832 1620896 5716896 1625568 5713848 1625072 5713648 -1625568 5713848 1625520 5713800 1625072 5713648 1620896 5716896 -1620896 5716896 1620928 5717008 1625568 5713848 1625072 5713648 -1625568 5713848 1625520 5713800 1625072 5713648 1620928 5717008 -1620928 5717008 1620920 5717216 1625568 5713848 1625072 5713648 -1620896 5716896 1620928 5717008 1625072 5713648 1620872 5716832 -1625072 5713648 1620856 5716800 1620872 5716832 1620896 5716896 -1625344 5713632 1625072 5713648 1625520 5713800 1625440 5713680 -1625072 5713648 1620552 5714440 1620560 5714512 1620520 5714728 -1620160 5713848 1625072 5713648 1625344 5713632 1620104 5713768 -1625072 5713648 1625520 5713800 1625344 5713632 1620104 5713768 -1620160 5713848 1620512 5714368 1625072 5713648 1620104 5713768 -1625344 5713632 1620040 5713712 1620104 5713768 1625072 5713648 -1625344 5713632 1625960 5713048 1620040 5713712 1625072 5713648 -1620040 5713712 1620072 5713752 1620104 5713768 1625072 5713648 -1625344 5713632 1625440 5713680 1625960 5713048 1625072 5713648 -1625344 5713632 1625960 5713048 1625072 5713648 1625520 5713800 -1625960 5713048 1618184 5707576 1620040 5713712 1625072 5713648 -1625960 5713048 1618184 5707576 1625072 5713648 1625344 5713632 -1618184 5707576 1618264 5711808 1620040 5713712 1625072 5713648 -1618184 5707576 1618184 5711672 1618264 5711808 1625072 5713648 -1618184 5707576 1618264 5711808 1625072 5713648 1625960 5713048 -1625960 5713048 1627248 5706936 1618184 5707576 1625072 5713648 -1618264 5711808 1619952 5713672 1620040 5713712 1625072 5713648 -1620104 5713768 1620160 5713848 1625072 5713648 1620040 5713712 -1620040 5713712 1620104 5713768 1625072 5713648 1618264 5711808 -1620520 5714728 1624976 5713680 1625072 5713648 1620560 5714512 -1624976 5713680 1620856 5716800 1625072 5713648 1620560 5714512 -1620856 5716800 1624976 5713680 1620520 5714728 1620768 5716712 -1620520 5714728 1620856 5716800 1624976 5713680 1620560 5714512 -1625072 5713648 1624976 5713680 1620856 5716800 1620872 5716832 -1625072 5713648 1620560 5714512 1624976 5713680 1620872 5716832 -1624976 5713680 1620520 5714728 1620856 5716800 1620872 5716832 -1625072 5713648 1624976 5713680 1620872 5716832 1620896 5716896 -1625072 5713648 1620560 5714512 1624976 5713680 1620896 5716896 -1624976 5713680 1620856 5716800 1620872 5716832 1620896 5716896 -1625072 5713648 1624976 5713680 1620896 5716896 1620928 5717008 -1625072 5713648 1620560 5714512 1624976 5713680 1620928 5717008 -1625072 5713648 1624976 5713680 1620928 5717008 1625568 5713848 -1625072 5713648 1624976 5713680 1625568 5713848 1625520 5713800 -1625072 5713648 1620560 5714512 1624976 5713680 1625520 5713800 -1620928 5717008 1620920 5717216 1625568 5713848 1624976 5713680 -1625072 5713648 1624976 5713680 1625520 5713800 1625344 5713632 -1624976 5713680 1620928 5717008 1625568 5713848 1625520 5713800 -1624976 5713680 1620896 5716896 1620928 5717008 1625568 5713848 -1624976 5713680 1620872 5716832 1620896 5716896 1620928 5717008 -1625072 5713648 1620552 5714440 1620560 5714512 1624976 5713680 -1625072 5713648 1620512 5714368 1620552 5714440 1624976 5713680 -1620560 5714512 1620520 5714728 1624976 5713680 1620552 5714440 -1625072 5713648 1620160 5713848 1620512 5714368 1624976 5713680 -1620512 5714368 1620552 5714440 1624976 5713680 1620160 5713848 -1625072 5713648 1620160 5713848 1624976 5713680 1625520 5713800 -1625072 5713648 1620104 5713768 1620160 5713848 1624976 5713680 -1620160 5713848 1620512 5714368 1624976 5713680 1620104 5713768 -1625072 5713648 1620104 5713768 1624976 5713680 1625520 5713800 -1620160 5713848 1620272 5714120 1620512 5714368 1624976 5713680 -1620552 5714440 1620560 5714512 1624976 5713680 1620512 5714368 -1625072 5713648 1620040 5713712 1620104 5713768 1624976 5713680 -1620040 5713712 1620072 5713752 1620104 5713768 1624976 5713680 -1625072 5713648 1620040 5713712 1624976 5713680 1625520 5713800 -1620104 5713768 1620160 5713848 1624976 5713680 1620040 5713712 -1625072 5713648 1618264 5711808 1620040 5713712 1624976 5713680 -1625072 5713648 1618184 5707576 1618264 5711808 1624976 5713680 -1618184 5707576 1618184 5711672 1618264 5711808 1624976 5713680 -1625072 5713648 1618184 5707576 1624976 5713680 1625520 5713800 -1625072 5713648 1625960 5713048 1618184 5707576 1624976 5713680 -1625072 5713648 1625344 5713632 1625960 5713048 1624976 5713680 -1618184 5707576 1618264 5711808 1624976 5713680 1625960 5713048 -1625072 5713648 1625960 5713048 1624976 5713680 1625520 5713800 -1625960 5713048 1627248 5706936 1618184 5707576 1624976 5713680 -1618264 5711808 1619952 5713672 1620040 5713712 1624976 5713680 -1620040 5713712 1620104 5713768 1624976 5713680 1618264 5711808 -1618264 5711808 1620040 5713712 1624976 5713680 1618184 5707576 -1620040 5713712 1624848 5713680 1618264 5711808 1619952 5713672 -1624976 5713680 1624848 5713680 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624848 5713680 -1624976 5713680 1624848 5713680 1620104 5713768 1620160 5713848 -1624976 5713680 1624848 5713680 1620160 5713848 1620512 5714368 -1624976 5713680 1624848 5713680 1620512 5714368 1620552 5714440 -1624848 5713680 1620160 5713848 1620512 5714368 1620552 5714440 -1624848 5713680 1620104 5713768 1620160 5713848 1620512 5714368 -1620160 5713848 1620272 5714120 1620512 5714368 1624848 5713680 -1624976 5713680 1618264 5711808 1624848 5713680 1620552 5714440 -1624848 5713680 1618264 5711808 1620040 5713712 1620104 5713768 -1624976 5713680 1624848 5713680 1620552 5714440 1620560 5714512 -1624848 5713680 1620512 5714368 1620552 5714440 1620560 5714512 -1624976 5713680 1624848 5713680 1620560 5714512 1620520 5714728 -1624976 5713680 1618264 5711808 1624848 5713680 1620520 5714728 -1624976 5713680 1624848 5713680 1620520 5714728 1620856 5716800 -1624848 5713680 1620560 5714512 1620520 5714728 1620856 5716800 -1624976 5713680 1624848 5713680 1620856 5716800 1620872 5716832 -1620520 5714728 1620768 5716712 1620856 5716800 1624848 5713680 -1624976 5713680 1618264 5711808 1624848 5713680 1620872 5716832 -1624848 5713680 1620520 5714728 1620856 5716800 1620872 5716832 -1624976 5713680 1624848 5713680 1620872 5716832 1620896 5716896 -1624848 5713680 1620856 5716800 1620872 5716832 1620896 5716896 -1624976 5713680 1618264 5711808 1624848 5713680 1620896 5716896 -1624976 5713680 1624848 5713680 1620896 5716896 1620928 5717008 -1624976 5713680 1618264 5711808 1624848 5713680 1620928 5717008 -1624848 5713680 1620872 5716832 1620896 5716896 1620928 5717008 -1624976 5713680 1624848 5713680 1620928 5717008 1625568 5713848 -1620928 5717008 1620920 5717216 1625568 5713848 1624848 5713680 -1624976 5713680 1618264 5711808 1624848 5713680 1625568 5713848 -1624976 5713680 1624848 5713680 1625568 5713848 1625520 5713800 -1624848 5713680 1620896 5716896 1620928 5717008 1625568 5713848 -1624848 5713680 1620552 5714440 1620560 5714512 1620520 5714728 -1624848 5713680 1620040 5713712 1620104 5713768 1620160 5713848 -1618264 5711808 1624848 5713680 1624976 5713680 1618184 5707576 -1624976 5713680 1625960 5713048 1618184 5707576 1624848 5713680 -1618264 5711808 1624848 5713680 1618184 5707576 1618184 5711672 -1618264 5711808 1620040 5713712 1624848 5713680 1618184 5707576 -1624976 5713680 1625072 5713648 1625960 5713048 1624848 5713680 -1625072 5713648 1625344 5713632 1625960 5713048 1624848 5713680 -1625960 5713048 1618184 5707576 1624848 5713680 1625072 5713648 -1625960 5713048 1627248 5706936 1618184 5707576 1624848 5713680 -1625960 5713048 1627272 5706968 1627248 5706936 1624848 5713680 -1625960 5713048 1627248 5706936 1624848 5713680 1625072 5713648 -1627248 5706936 1627208 5706856 1618184 5707576 1624848 5713680 -1624848 5713680 1625568 5713848 1624976 5713680 1625072 5713648 -1618184 5707576 1618264 5711808 1624848 5713680 1627248 5706936 -1618184 5707576 1624608 5713400 1627248 5706936 1627208 5706856 -1618184 5707576 1624848 5713680 1624608 5713400 1627208 5706856 -1624608 5713400 1624848 5713680 1627248 5706936 1627208 5706856 -1627248 5706936 1624608 5713400 1624848 5713680 1625960 5713048 -1627248 5706936 1624608 5713400 1625960 5713048 1627272 5706968 -1624848 5713680 1625072 5713648 1625960 5713048 1624608 5713400 -1625072 5713648 1625344 5713632 1625960 5713048 1624608 5713400 -1625072 5713648 1625344 5713632 1624608 5713400 1624848 5713680 -1625344 5713632 1625440 5713680 1625960 5713048 1624608 5713400 -1624608 5713400 1618184 5707576 1624848 5713680 1625072 5713648 -1627248 5706936 1627208 5706856 1624608 5713400 1627272 5706968 -1625960 5713048 1627296 5706984 1627272 5706968 1624608 5713400 -1624848 5713680 1624976 5713680 1625072 5713648 1624608 5713400 -1625072 5713648 1625344 5713632 1624608 5713400 1624976 5713680 -1624848 5713680 1624976 5713680 1624608 5713400 1618184 5707576 -1624608 5713400 1625344 5713632 1625960 5713048 1627272 5706968 -1618184 5707576 1624608 5713400 1627208 5706856 1621944 5703896 -1624848 5713680 1624608 5713400 1618184 5707576 1618264 5711808 -1618184 5707576 1618184 5711672 1618264 5711808 1624608 5713400 -1624848 5713680 1624976 5713680 1624608 5713400 1618264 5711808 -1624848 5713680 1624608 5713400 1618264 5711808 1620040 5713712 -1624848 5713680 1624976 5713680 1624608 5713400 1620040 5713712 -1624608 5713400 1627208 5706856 1618184 5707576 1618264 5711808 -1618264 5711808 1619952 5713672 1620040 5713712 1624608 5713400 -1624848 5713680 1624608 5713400 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624608 5713400 -1624848 5713680 1624976 5713680 1624608 5713400 1620104 5713768 -1624608 5713400 1618264 5711808 1620040 5713712 1620104 5713768 -1624848 5713680 1624608 5713400 1620104 5713768 1620160 5713848 -1624848 5713680 1624608 5713400 1620160 5713848 1620512 5714368 -1624848 5713680 1624608 5713400 1620512 5714368 1620552 5714440 -1624848 5713680 1624608 5713400 1620552 5714440 1620560 5714512 -1624608 5713400 1620512 5714368 1620552 5714440 1620560 5714512 -1624608 5713400 1620160 5713848 1620512 5714368 1620552 5714440 -1624848 5713680 1624976 5713680 1624608 5713400 1620560 5714512 -1620160 5713848 1620272 5714120 1620512 5714368 1624608 5713400 -1624608 5713400 1620040 5713712 1620104 5713768 1620160 5713848 -1624848 5713680 1624608 5713400 1620560 5714512 1620520 5714728 -1624608 5713400 1620552 5714440 1620560 5714512 1620520 5714728 -1624848 5713680 1624608 5713400 1620520 5714728 1620856 5716800 -1624848 5713680 1624976 5713680 1624608 5713400 1620520 5714728 -1624608 5713400 1620104 5713768 1620160 5713848 1620512 5714368 -1624608 5713400 1618184 5707576 1618264 5711808 1620040 5713712 -1624608 5713400 1624584 5713368 1618184 5707576 1618264 5711808 -1618184 5707576 1618184 5711672 1618264 5711808 1624584 5713368 -1624608 5713400 1627208 5706856 1624584 5713368 1618264 5711808 -1624584 5713368 1627208 5706856 1618184 5707576 1618264 5711808 -1627208 5706856 1624584 5713368 1624608 5713400 1627248 5706936 -1624584 5713368 1618264 5711808 1624608 5713400 1627248 5706936 -1624608 5713400 1627272 5706968 1627248 5706936 1624584 5713368 -1624608 5713400 1625960 5713048 1627272 5706968 1624584 5713368 -1624608 5713400 1625960 5713048 1624584 5713368 1618264 5711808 -1627272 5706968 1627248 5706936 1624584 5713368 1625960 5713048 -1627208 5706856 1618184 5707576 1624584 5713368 1627248 5706936 -1625960 5713048 1627296 5706984 1627272 5706968 1624584 5713368 -1627248 5706936 1627208 5706856 1624584 5713368 1627272 5706968 -1624608 5713400 1625344 5713632 1625960 5713048 1624584 5713368 -1625960 5713048 1627272 5706968 1624584 5713368 1625344 5713632 -1624608 5713400 1625072 5713648 1625344 5713632 1624584 5713368 -1624608 5713400 1624976 5713680 1625072 5713648 1624584 5713368 -1625344 5713632 1625440 5713680 1625960 5713048 1624584 5713368 -1624608 5713400 1625072 5713648 1624584 5713368 1618264 5711808 -1625344 5713632 1625960 5713048 1624584 5713368 1625072 5713648 -1618184 5707576 1624584 5713368 1627208 5706856 1621944 5703896 -1624608 5713400 1624584 5713368 1618264 5711808 1620040 5713712 -1624608 5713400 1624584 5713368 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624584 5713368 -1624584 5713368 1618184 5707576 1618264 5711808 1620040 5713712 -1624608 5713400 1625072 5713648 1624584 5713368 1620104 5713768 -1618264 5711808 1619952 5713672 1620040 5713712 1624584 5713368 -1624608 5713400 1624584 5713368 1620104 5713768 1620160 5713848 -1624584 5713368 1620040 5713712 1620104 5713768 1620160 5713848 -1624608 5713400 1625072 5713648 1624584 5713368 1620160 5713848 -1624608 5713400 1624584 5713368 1620160 5713848 1620512 5714368 -1624608 5713400 1624584 5713368 1620512 5714368 1620552 5714440 -1624608 5713400 1624584 5713368 1620552 5714440 1620560 5714512 -1624608 5713400 1624584 5713368 1620560 5714512 1620520 5714728 -1624584 5713368 1620512 5714368 1620552 5714440 1620560 5714512 -1624608 5713400 1625072 5713648 1624584 5713368 1620560 5714512 -1620160 5713848 1620272 5714120 1620512 5714368 1624584 5713368 -1624584 5713368 1620104 5713768 1620160 5713848 1620512 5714368 -1624584 5713368 1620160 5713848 1620512 5714368 1620552 5714440 -1624584 5713368 1618264 5711808 1620040 5713712 1620104 5713768 -1624584 5713368 1624568 5713248 1618184 5707576 1618264 5711808 -1618184 5707576 1618184 5711672 1618264 5711808 1624568 5713248 -1624568 5713248 1627208 5706856 1618184 5707576 1618264 5711808 -1624584 5713368 1624568 5713248 1618264 5711808 1620040 5713712 -1624568 5713248 1618184 5707576 1618264 5711808 1620040 5713712 -1624584 5713368 1627208 5706856 1624568 5713248 1620040 5713712 -1627208 5706856 1624568 5713248 1624584 5713368 1627248 5706936 -1624568 5713248 1620040 5713712 1624584 5713368 1627248 5706936 -1627208 5706856 1618184 5707576 1624568 5713248 1627248 5706936 -1624584 5713368 1627272 5706968 1627248 5706936 1624568 5713248 -1624584 5713368 1625960 5713048 1627272 5706968 1624568 5713248 -1624584 5713368 1625344 5713632 1625960 5713048 1624568 5713248 -1625344 5713632 1625440 5713680 1625960 5713048 1624568 5713248 -1625960 5713048 1627272 5706968 1624568 5713248 1625344 5713632 -1624584 5713368 1625344 5713632 1624568 5713248 1620040 5713712 -1627248 5706936 1627208 5706856 1624568 5713248 1627272 5706968 -1625960 5713048 1627296 5706984 1627272 5706968 1624568 5713248 -1627272 5706968 1627248 5706936 1624568 5713248 1625960 5713048 -1624584 5713368 1625072 5713648 1625344 5713632 1624568 5713248 -1625344 5713632 1625960 5713048 1624568 5713248 1625072 5713648 -1624584 5713368 1624608 5713400 1625072 5713648 1624568 5713248 -1624608 5713400 1624976 5713680 1625072 5713648 1624568 5713248 -1624584 5713368 1624608 5713400 1624568 5713248 1620040 5713712 -1625072 5713648 1625344 5713632 1624568 5713248 1624608 5713400 -1618264 5711808 1619952 5713672 1620040 5713712 1624568 5713248 -1618184 5707576 1624568 5713248 1627208 5706856 1621944 5703896 -1624584 5713368 1624568 5713248 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624568 5713248 -1624584 5713368 1624568 5713248 1620104 5713768 1620160 5713848 -1624568 5713248 1618264 5711808 1620040 5713712 1620104 5713768 -1624584 5713368 1624608 5713400 1624568 5713248 1620160 5713848 -1624584 5713368 1624568 5713248 1620160 5713848 1620512 5714368 -1624568 5713248 1620104 5713768 1620160 5713848 1620512 5714368 -1624584 5713368 1624608 5713400 1624568 5713248 1620512 5714368 -1620160 5713848 1620272 5714120 1620512 5714368 1624568 5713248 -1624584 5713368 1624568 5713248 1620512 5714368 1620552 5714440 -1624584 5713368 1624568 5713248 1620552 5714440 1620560 5714512 -1624584 5713368 1624608 5713400 1624568 5713248 1620552 5714440 -1624568 5713248 1620160 5713848 1620512 5714368 1620552 5714440 -1624568 5713248 1620040 5713712 1620104 5713768 1620160 5713848 -1624568 5713248 1624568 5712968 1618184 5707576 1618264 5711808 -1618184 5707576 1618184 5711672 1618264 5711808 1624568 5712968 -1624568 5713248 1624568 5712968 1618264 5711808 1620040 5713712 -1624568 5712968 1618184 5707576 1618264 5711808 1620040 5713712 -1624568 5713248 1624568 5712968 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624568 5712968 -1624568 5712968 1618264 5711808 1620040 5713712 1620104 5713768 -1624568 5713248 1627208 5706856 1624568 5712968 1620104 5713768 -1627208 5706856 1624568 5712968 1624568 5713248 1627248 5706936 -1624568 5713248 1627272 5706968 1627248 5706936 1624568 5712968 -1624568 5712968 1620104 5713768 1624568 5713248 1627272 5706968 -1627248 5706936 1627208 5706856 1624568 5712968 1627272 5706968 -1624568 5712968 1627208 5706856 1618184 5707576 1618264 5711808 -1627208 5706856 1618184 5707576 1624568 5712968 1627248 5706936 -1624568 5713248 1625960 5713048 1627272 5706968 1624568 5712968 -1624568 5713248 1625344 5713632 1625960 5713048 1624568 5712968 -1624568 5713248 1625072 5713648 1625344 5713632 1624568 5712968 -1625344 5713632 1625440 5713680 1625960 5713048 1624568 5712968 -1625344 5713632 1625960 5713048 1624568 5712968 1625072 5713648 -1627272 5706968 1627248 5706936 1624568 5712968 1625960 5713048 -1624568 5713248 1625072 5713648 1624568 5712968 1620104 5713768 -1625960 5713048 1627296 5706984 1627272 5706968 1624568 5712968 -1627272 5706968 1627248 5706936 1624568 5712968 1627296 5706984 -1625960 5713048 1627296 5706984 1624568 5712968 1625344 5713632 -1624568 5713248 1624608 5713400 1625072 5713648 1624568 5712968 -1618264 5711808 1619952 5713672 1620040 5713712 1624568 5712968 -1618184 5707576 1624568 5712968 1627208 5706856 1621944 5703896 -1625960 5713048 1627328 5706984 1627296 5706984 1624568 5712968 -1624568 5713248 1624568 5712968 1620104 5713768 1620160 5713848 -1624568 5713248 1624568 5712968 1620160 5713848 1620512 5714368 -1624568 5712968 1620040 5713712 1620104 5713768 1620160 5713848 -1624568 5713248 1625072 5713648 1624568 5712968 1620512 5714368 -1620160 5713848 1620272 5714120 1620512 5714368 1624568 5712968 -1624568 5713248 1624568 5712968 1620512 5714368 1620552 5714440 -1624568 5712968 1620104 5713768 1620160 5713848 1620512 5714368 -1624568 5712968 1624544 5712768 1618184 5707576 1618264 5711808 -1618184 5707576 1618184 5711672 1618264 5711808 1624544 5712768 -1618184 5707576 1618088 5711560 1618184 5711672 1624544 5712768 -1624568 5712968 1624544 5712768 1618264 5711808 1620040 5713712 -1624568 5712968 1624544 5712768 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624544 5712768 -1624544 5712768 1618264 5711808 1620040 5713712 1620104 5713768 -1624568 5712968 1624544 5712768 1620104 5713768 1620160 5713848 -1624544 5712768 1620040 5713712 1620104 5713768 1620160 5713848 -1618264 5711808 1620040 5713712 1624544 5712768 1618184 5711672 -1624568 5712968 1627208 5706856 1624544 5712768 1620160 5713848 -1627208 5706856 1624544 5712768 1624568 5712968 1627248 5706936 -1624568 5712968 1627272 5706968 1627248 5706936 1624544 5712768 -1624568 5712968 1627296 5706984 1627272 5706968 1624544 5712768 -1627272 5706968 1627248 5706936 1624544 5712768 1627296 5706984 -1624544 5712768 1620160 5713848 1624568 5712968 1627296 5706984 -1627248 5706936 1627208 5706856 1624544 5712768 1627272 5706968 -1624544 5712768 1627208 5706856 1618184 5707576 1618184 5711672 -1627208 5706856 1618184 5707576 1624544 5712768 1627248 5706936 -1624568 5712968 1625960 5713048 1627296 5706984 1624544 5712768 -1627296 5706984 1627272 5706968 1624544 5712768 1625960 5713048 -1624568 5712968 1625960 5713048 1624544 5712768 1620160 5713848 -1624568 5712968 1625344 5713632 1625960 5713048 1624544 5712768 -1618264 5711808 1619952 5713672 1620040 5713712 1624544 5712768 -1618184 5707576 1624544 5712768 1627208 5706856 1621944 5703896 -1618184 5707576 1624544 5712768 1621944 5703896 1621912 5703896 -1618184 5707576 1618184 5711672 1624544 5712768 1621944 5703896 -1624544 5712768 1627248 5706936 1627208 5706856 1621944 5703896 -1627208 5706856 1627208 5706816 1621944 5703896 1624544 5712768 -1625960 5713048 1627328 5706984 1627296 5706984 1624544 5712768 -1624568 5712968 1624544 5712768 1620160 5713848 1620512 5714368 -1624568 5712968 1624544 5712768 1620512 5714368 1624568 5713248 -1624544 5712768 1620104 5713768 1620160 5713848 1620512 5714368 -1624568 5712968 1625960 5713048 1624544 5712768 1624568 5713248 -1620160 5713848 1620272 5714120 1620512 5714368 1624544 5712768 -1620512 5714368 1620552 5714440 1624568 5713248 1624544 5712768 -1624544 5712768 1620160 5713848 1620512 5714368 1624568 5713248 -1627208 5706856 1624536 5712600 1624544 5712768 1627248 5706936 -1624544 5712768 1627272 5706968 1627248 5706936 1624536 5712600 -1624544 5712768 1627296 5706984 1627272 5706968 1624536 5712600 -1624544 5712768 1625960 5713048 1627296 5706984 1624536 5712600 -1627296 5706984 1627272 5706968 1624536 5712600 1625960 5713048 -1627272 5706968 1627248 5706936 1624536 5712600 1627296 5706984 -1624536 5712600 1621944 5703896 1624544 5712768 1625960 5713048 -1627248 5706936 1627208 5706856 1624536 5712600 1627272 5706968 -1627208 5706856 1621944 5703896 1624536 5712600 1627248 5706936 -1624544 5712768 1624568 5712968 1625960 5713048 1624536 5712600 -1621944 5703896 1624536 5712600 1627208 5706856 1627208 5706816 -1624544 5712768 1624536 5712600 1621944 5703896 1618184 5707576 -1621944 5703896 1621912 5703896 1618184 5707576 1624536 5712600 -1624544 5712768 1624536 5712600 1618184 5707576 1618184 5711672 -1624544 5712768 1624536 5712600 1618184 5711672 1618264 5711808 -1618184 5707576 1618088 5711560 1618184 5711672 1624536 5712600 -1624544 5712768 1624536 5712600 1618264 5711808 1620040 5713712 -1624536 5712600 1618184 5711672 1618264 5711808 1620040 5713712 -1624544 5712768 1624536 5712600 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624536 5712600 -1624544 5712768 1624536 5712600 1620104 5713768 1620160 5713848 -1624536 5712600 1620040 5713712 1620104 5713768 1620160 5713848 -1624544 5712768 1624536 5712600 1620160 5713848 1620512 5714368 -1624536 5712600 1618264 5711808 1620040 5713712 1620104 5713768 -1624536 5712600 1618184 5707576 1618184 5711672 1618264 5711808 -1624544 5712768 1625960 5713048 1624536 5712600 1620160 5713848 -1624536 5712600 1627208 5706856 1621944 5703896 1618184 5707576 -1618264 5711808 1619952 5713672 1620040 5713712 1624536 5712600 -1624536 5712600 1621944 5703896 1618184 5707576 1618184 5711672 -1625960 5713048 1627328 5706984 1627296 5706984 1624536 5712600 -1624536 5712600 1624568 5712488 1621944 5703896 1618184 5707576 -1621944 5703896 1621912 5703896 1618184 5707576 1624568 5712488 -1624536 5712600 1627208 5706856 1624568 5712488 1618184 5707576 -1627208 5706856 1624568 5712488 1624536 5712600 1627248 5706936 -1624536 5712600 1627272 5706968 1627248 5706936 1624568 5712488 -1624536 5712600 1627296 5706984 1627272 5706968 1624568 5712488 -1624536 5712600 1625960 5713048 1627296 5706984 1624568 5712488 -1624536 5712600 1624544 5712768 1625960 5713048 1624568 5712488 -1625960 5713048 1627296 5706984 1624568 5712488 1624544 5712768 -1627296 5706984 1627272 5706968 1624568 5712488 1625960 5713048 -1627272 5706968 1627248 5706936 1624568 5712488 1627296 5706984 -1624568 5712488 1618184 5707576 1624536 5712600 1624544 5712768 -1627248 5706936 1627208 5706856 1624568 5712488 1627272 5706968 -1624568 5712488 1627208 5706856 1621944 5703896 1618184 5707576 -1627208 5706856 1621944 5703896 1624568 5712488 1627248 5706936 -1624544 5712768 1624568 5712968 1625960 5713048 1624568 5712488 -1621944 5703896 1624568 5712488 1627208 5706856 1627208 5706816 -1624536 5712600 1624568 5712488 1618184 5707576 1618184 5711672 -1618184 5707576 1618088 5711560 1618184 5711672 1624568 5712488 -1624536 5712600 1624568 5712488 1618184 5711672 1618264 5711808 -1624536 5712600 1624568 5712488 1618264 5711808 1620040 5713712 -1624536 5712600 1624568 5712488 1620040 5713712 1620104 5713768 -1624568 5712488 1618264 5711808 1620040 5713712 1620104 5713768 -1620040 5713712 1620072 5713752 1620104 5713768 1624568 5712488 -1624536 5712600 1624568 5712488 1620104 5713768 1620160 5713848 -1624568 5712488 1618184 5711672 1618264 5711808 1620040 5713712 -1624568 5712488 1621944 5703896 1618184 5707576 1618184 5711672 -1624536 5712600 1624544 5712768 1624568 5712488 1620104 5713768 -1618264 5711808 1619952 5713672 1620040 5713712 1624568 5712488 -1624568 5712488 1618184 5707576 1618184 5711672 1618264 5711808 -1625960 5713048 1627328 5706984 1627296 5706984 1624568 5712488 -1625960 5713048 1624616 5712432 1624568 5712488 1624544 5712768 -1624568 5712488 1624536 5712600 1624544 5712768 1624616 5712432 -1624544 5712768 1625960 5713048 1624616 5712432 1624536 5712600 -1624568 5712488 1624616 5712432 1627296 5706984 1627272 5706968 -1624568 5712488 1624616 5712432 1627272 5706968 1627248 5706936 -1624616 5712432 1627296 5706984 1627272 5706968 1627248 5706936 -1624568 5712488 1624616 5712432 1627248 5706936 1627208 5706856 -1624616 5712432 1627272 5706968 1627248 5706936 1627208 5706856 -1624616 5712432 1627208 5706856 1624568 5712488 1624536 5712600 -1624568 5712488 1624616 5712432 1627208 5706856 1621944 5703896 -1624616 5712432 1627248 5706936 1627208 5706856 1621944 5703896 -1624568 5712488 1624616 5712432 1621944 5703896 1618184 5707576 -1621944 5703896 1621912 5703896 1618184 5707576 1624616 5712432 -1624568 5712488 1624616 5712432 1618184 5707576 1618184 5711672 -1618184 5707576 1618088 5711560 1618184 5711672 1624616 5712432 -1624616 5712432 1621944 5703896 1618184 5707576 1618184 5711672 -1624568 5712488 1624536 5712600 1624616 5712432 1618184 5711672 -1624616 5712432 1627208 5706856 1621944 5703896 1618184 5707576 -1624616 5712432 1625960 5713048 1627296 5706984 1627272 5706968 -1625960 5713048 1627296 5706984 1624616 5712432 1624544 5712768 -1625960 5713048 1624616 5712432 1624544 5712768 1624568 5712968 -1627208 5706856 1627208 5706816 1621944 5703896 1624616 5712432 -1624568 5712488 1624616 5712432 1618184 5711672 1618264 5711808 -1624568 5712488 1624616 5712432 1618264 5711808 1620040 5713712 -1624616 5712432 1618184 5707576 1618184 5711672 1618264 5711808 -1624568 5712488 1624536 5712600 1624616 5712432 1618264 5711808 -1627296 5706984 1624616 5712432 1625960 5713048 1627328 5706984 -1624616 5712432 1624664 5712432 1627296 5706984 1627272 5706968 -1624616 5712432 1624664 5712432 1627272 5706968 1627248 5706936 -1624616 5712432 1625960 5713048 1624664 5712432 1627272 5706968 -1625960 5713048 1624664 5712432 1624616 5712432 1624544 5712768 -1624616 5712432 1624536 5712600 1624544 5712768 1624664 5712432 -1624616 5712432 1624568 5712488 1624536 5712600 1624664 5712432 -1624536 5712600 1624544 5712768 1624664 5712432 1624568 5712488 -1624664 5712432 1627272 5706968 1624616 5712432 1624568 5712488 -1624544 5712768 1625960 5713048 1624664 5712432 1624536 5712600 -1624664 5712432 1625960 5713048 1627296 5706984 1627272 5706968 -1625960 5713048 1627296 5706984 1624664 5712432 1624544 5712768 -1625960 5713048 1624664 5712432 1624544 5712768 1624568 5712968 -1624664 5712432 1624536 5712600 1624544 5712768 1624568 5712968 -1625960 5713048 1627296 5706984 1624664 5712432 1624568 5712968 -1625960 5713048 1624664 5712432 1624568 5712968 1625344 5713632 -1627296 5706984 1624664 5712432 1625960 5713048 1627328 5706984 -1624664 5712432 1624904 5712552 1625960 5713048 1627296 5706984 -1624664 5712432 1624904 5712552 1627296 5706984 1627272 5706968 -1624664 5712432 1624568 5712968 1624904 5712552 1627296 5706984 -1624904 5712552 1624568 5712968 1625960 5713048 1627296 5706984 -1624568 5712968 1624904 5712552 1624664 5712432 1624544 5712768 -1624664 5712432 1624536 5712600 1624544 5712768 1624904 5712552 -1624664 5712432 1624568 5712488 1624536 5712600 1624904 5712552 -1624904 5712552 1627296 5706984 1624664 5712432 1624536 5712600 -1624568 5712968 1625960 5713048 1624904 5712552 1624544 5712768 -1624544 5712768 1624568 5712968 1624904 5712552 1624536 5712600 -1625960 5713048 1624904 5712552 1624568 5712968 1625344 5713632 -1625960 5713048 1624904 5712552 1625344 5713632 1625440 5713680 -1624568 5712968 1625072 5713648 1625344 5713632 1624904 5712552 -1624568 5712968 1624568 5713248 1625072 5713648 1624904 5712552 -1625960 5713048 1627296 5706984 1624904 5712552 1625344 5713632 -1624904 5712552 1624544 5712768 1624568 5712968 1625072 5713648 -1625344 5713632 1625960 5713048 1624904 5712552 1625072 5713648 -1625960 5713048 1627328 5706984 1627296 5706984 1624904 5712552 -1624904 5712552 1625232 5712632 1627296 5706984 1624664 5712432 -1627296 5706984 1627272 5706968 1624664 5712432 1625232 5712632 -1625960 5713048 1625232 5712632 1624904 5712552 1625344 5713632 -1625960 5713048 1625232 5712632 1625344 5713632 1625440 5713680 -1624904 5712552 1625344 5713632 1625232 5712632 1624664 5712432 -1625232 5712632 1625960 5713048 1627296 5706984 1624664 5712432 -1625960 5713048 1627296 5706984 1625232 5712632 1625344 5713632 -1624904 5712552 1625072 5713648 1625344 5713632 1625232 5712632 -1624904 5712552 1624568 5712968 1625072 5713648 1625232 5712632 -1624568 5712968 1624568 5713248 1625072 5713648 1625232 5712632 -1624568 5712968 1624568 5713248 1625232 5712632 1624904 5712552 -1625344 5713632 1625960 5713048 1625232 5712632 1625072 5713648 -1624904 5712552 1624568 5712968 1625232 5712632 1624664 5712432 -1624904 5712552 1624544 5712768 1624568 5712968 1625232 5712632 -1625072 5713648 1625344 5713632 1625232 5712632 1624568 5713248 -1624568 5713248 1624608 5713400 1625072 5713648 1625232 5712632 -1627296 5706984 1625232 5712632 1625960 5713048 1627328 5706984 -1625960 5713048 1625552 5712856 1625344 5713632 1625440 5713680 -1625344 5713632 1625552 5712856 1625232 5712632 1625072 5713648 -1625552 5712856 1625960 5713048 1625232 5712632 1625072 5713648 -1625232 5712632 1625552 5712856 1625960 5713048 1627296 5706984 -1625960 5713048 1625232 5712632 1625552 5712856 1625440 5713680 -1625552 5712856 1625072 5713648 1625344 5713632 1625440 5713680 -1625232 5712632 1624568 5713248 1625072 5713648 1625552 5712856 -1625960 5713048 1625552 5712856 1625440 5713680 1625768 5713824 -1625440 5713680 1625696 5712944 1625552 5712856 1625344 5713632 -1625552 5712856 1625696 5712944 1625960 5713048 1625232 5712632 -1625696 5712944 1625960 5713048 1625552 5712856 1625344 5713632 -1625552 5712856 1625072 5713648 1625344 5713632 1625696 5712944 -1625440 5713680 1625960 5713048 1625696 5712944 1625344 5713632 -1625960 5713048 1625696 5712944 1625440 5713680 1625768 5713824 -1626496 5713456 1627024 5713000 1629904 5706120 1629808 5706208 -1627024 5713000 1627448 5719792 1629904 5706120 1629808 5706208 -1626496 5713456 1627448 5719792 1627024 5713000 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1627024 5713000 -1626496 5713456 1627024 5713000 1629808 5706208 1626480 5713384 -1626496 5713456 1627448 5719792 1627024 5713000 1626480 5713384 -1629808 5706208 1626440 5713328 1626480 5713384 1627024 5713000 -1629808 5706208 1627328 5706984 1626440 5713328 1627024 5713000 -1627328 5706984 1626344 5713272 1626440 5713328 1627024 5713000 -1629808 5706208 1627368 5706952 1627328 5706984 1627024 5713000 -1627328 5706984 1626080 5713112 1626344 5713272 1627024 5713000 -1626344 5713272 1626440 5713328 1627024 5713000 1626080 5713112 -1627328 5706984 1625960 5713048 1626080 5713112 1627024 5713000 -1627328 5706984 1627296 5706984 1625960 5713048 1627024 5713000 -1625960 5713048 1626080 5713112 1627024 5713000 1627296 5706984 -1627296 5706984 1625232 5712632 1625960 5713048 1627024 5713000 -1627296 5706984 1625232 5712632 1627024 5713000 1627328 5706984 -1627296 5706984 1624664 5712432 1625232 5712632 1627024 5713000 -1625232 5712632 1625552 5712856 1625960 5713048 1627024 5713000 -1625552 5712856 1625696 5712944 1625960 5713048 1627024 5713000 -1625960 5713048 1626080 5713112 1627024 5713000 1625552 5712856 -1625232 5712632 1625552 5712856 1627024 5713000 1627296 5706984 -1626080 5713112 1626280 5713256 1626344 5713272 1627024 5713000 -1626080 5713112 1626344 5713272 1627024 5713000 1625960 5713048 -1627328 5706984 1627296 5706984 1627024 5713000 1629808 5706208 -1626440 5713328 1626480 5713384 1627024 5713000 1626344 5713272 -1626480 5713384 1626496 5713456 1627024 5713000 1626440 5713328 -1627024 5713000 1629904 5706120 1629808 5706208 1627328 5706984 -1627448 5719792 1627024 5713000 1626496 5713456 1626472 5713592 -1627448 5719792 1629904 5706120 1627024 5713000 1626472 5713592 -1627024 5713000 1626480 5713384 1626496 5713456 1626472 5713592 -1627448 5719792 1627024 5713000 1626472 5713592 1627384 5719672 -1627448 5719792 1627024 5713000 1627384 5719672 1627400 5719704 -1627448 5719792 1629904 5706120 1627024 5713000 1627384 5719672 -1626472 5713592 1626336 5714040 1627384 5719672 1627024 5713000 -1626472 5713592 1626456 5713624 1626336 5714040 1627024 5713000 -1627384 5719672 1627448 5719792 1627024 5713000 1626336 5714040 -1627024 5713000 1626496 5713456 1626472 5713592 1626336 5714040 -1626336 5714040 1627336 5719640 1627384 5719672 1627024 5713000 -1629904 5706120 1627024 5713000 1627448 5719792 1629984 5706008 -1627024 5713000 1627064 5713000 1629904 5706120 1629808 5706208 -1627448 5719792 1627064 5713000 1627024 5713000 1627384 5719672 -1627448 5719792 1627064 5713000 1627384 5719672 1627400 5719704 -1627024 5713000 1627384 5719672 1627064 5713000 1629808 5706208 -1627064 5713000 1627448 5719792 1629904 5706120 1629808 5706208 -1627448 5719792 1629904 5706120 1627064 5713000 1627384 5719672 -1629904 5706120 1629824 5706192 1629808 5706208 1627064 5713000 -1627024 5713000 1626336 5714040 1627384 5719672 1627064 5713000 -1627384 5719672 1627448 5719792 1627064 5713000 1626336 5714040 -1627024 5713000 1626336 5714040 1627064 5713000 1629808 5706208 -1627024 5713000 1626472 5713592 1626336 5714040 1627064 5713000 -1627024 5713000 1626472 5713592 1627064 5713000 1629808 5706208 -1626472 5713592 1626456 5713624 1626336 5714040 1627064 5713000 -1626336 5714040 1627384 5719672 1627064 5713000 1626472 5713592 -1627024 5713000 1627064 5713000 1629808 5706208 1627328 5706984 -1627064 5713000 1629904 5706120 1629808 5706208 1627328 5706984 -1627024 5713000 1626472 5713592 1627064 5713000 1627328 5706984 -1629808 5706208 1627368 5706952 1627328 5706984 1627064 5713000 -1627024 5713000 1627064 5713000 1627328 5706984 1627296 5706984 -1627024 5713000 1627064 5713000 1627296 5706984 1625232 5712632 -1627024 5713000 1626472 5713592 1627064 5713000 1627296 5706984 -1627064 5713000 1629808 5706208 1627328 5706984 1627296 5706984 -1627024 5713000 1626496 5713456 1626472 5713592 1627064 5713000 -1627024 5713000 1626496 5713456 1627064 5713000 1627296 5706984 -1627024 5713000 1626480 5713384 1626496 5713456 1627064 5713000 -1626472 5713592 1626336 5714040 1627064 5713000 1626496 5713456 -1626336 5714040 1627336 5719640 1627384 5719672 1627064 5713000 -1629904 5706120 1627064 5713000 1627448 5719792 1629984 5706008 -1627064 5713000 1627136 5713048 1629904 5706120 1629808 5706208 -1627064 5713000 1627136 5713048 1629808 5706208 1627328 5706984 -1627136 5713048 1629904 5706120 1629808 5706208 1627328 5706984 -1627064 5713000 1627448 5719792 1627136 5713048 1627328 5706984 -1627448 5719792 1627136 5713048 1627064 5713000 1627384 5719672 -1627448 5719792 1627136 5713048 1627384 5719672 1627400 5719704 -1627064 5713000 1626336 5714040 1627384 5719672 1627136 5713048 -1627136 5713048 1627328 5706984 1627064 5713000 1626336 5714040 -1627384 5719672 1627448 5719792 1627136 5713048 1626336 5714040 -1627136 5713048 1627448 5719792 1629904 5706120 1629808 5706208 -1627448 5719792 1629904 5706120 1627136 5713048 1627384 5719672 -1629808 5706208 1627368 5706952 1627328 5706984 1627136 5713048 -1629904 5706120 1629824 5706192 1629808 5706208 1627136 5713048 -1627064 5713000 1626472 5713592 1626336 5714040 1627136 5713048 -1626336 5714040 1627384 5719672 1627136 5713048 1626472 5713592 -1627064 5713000 1626472 5713592 1627136 5713048 1627328 5706984 -1626472 5713592 1626456 5713624 1626336 5714040 1627136 5713048 -1626456 5713624 1626360 5713736 1626336 5714040 1627136 5713048 -1626336 5714040 1627384 5719672 1627136 5713048 1626456 5713624 -1627064 5713000 1626496 5713456 1626472 5713592 1627136 5713048 -1627064 5713000 1626496 5713456 1627136 5713048 1627328 5706984 -1626472 5713592 1626456 5713624 1627136 5713048 1626496 5713456 -1627064 5713000 1627136 5713048 1627328 5706984 1627296 5706984 -1627064 5713000 1627024 5713000 1626496 5713456 1627136 5713048 -1627024 5713000 1626480 5713384 1626496 5713456 1627136 5713048 -1627064 5713000 1627024 5713000 1627136 5713048 1627328 5706984 -1626496 5713456 1626472 5713592 1627136 5713048 1627024 5713000 -1626336 5714040 1627336 5719640 1627384 5719672 1627136 5713048 -1629904 5706120 1627136 5713048 1627448 5719792 1629984 5706008 -1627448 5719792 1629736 5726176 1629984 5706008 1627136 5713048 -1629904 5706120 1629808 5706208 1627136 5713048 1629984 5706008 -1627136 5713048 1627384 5719672 1627448 5719792 1629984 5706008 -1629984 5706008 1627184 5713128 1627448 5719792 1629736 5726176 -1627448 5719792 1627184 5713128 1627136 5713048 1627384 5719672 -1627448 5719792 1627184 5713128 1627384 5719672 1627400 5719704 -1627136 5713048 1626336 5714040 1627384 5719672 1627184 5713128 -1627136 5713048 1626456 5713624 1626336 5714040 1627184 5713128 -1626456 5713624 1626360 5713736 1626336 5714040 1627184 5713128 -1626336 5714040 1627384 5719672 1627184 5713128 1626456 5713624 -1627184 5713128 1629984 5706008 1627136 5713048 1626456 5713624 -1627384 5719672 1627448 5719792 1627184 5713128 1626336 5714040 -1627448 5719792 1629984 5706008 1627184 5713128 1627384 5719672 -1627136 5713048 1626472 5713592 1626456 5713624 1627184 5713128 -1626456 5713624 1626336 5714040 1627184 5713128 1626472 5713592 -1627136 5713048 1626472 5713592 1627184 5713128 1629984 5706008 -1627136 5713048 1626496 5713456 1626472 5713592 1627184 5713128 -1627136 5713048 1626496 5713456 1627184 5713128 1629984 5706008 -1626472 5713592 1626456 5713624 1627184 5713128 1626496 5713456 -1627136 5713048 1627024 5713000 1626496 5713456 1627184 5713128 -1627024 5713000 1626480 5713384 1626496 5713456 1627184 5713128 -1627136 5713048 1627024 5713000 1627184 5713128 1629984 5706008 -1626496 5713456 1626472 5713592 1627184 5713128 1627024 5713000 -1627136 5713048 1627064 5713000 1627024 5713000 1627184 5713128 -1626336 5714040 1627336 5719640 1627384 5719672 1627184 5713128 -1627136 5713048 1627184 5713128 1629984 5706008 1629904 5706120 -1627136 5713048 1627184 5713128 1629904 5706120 1629808 5706208 -1627136 5713048 1627184 5713128 1629808 5706208 1627328 5706984 -1627136 5713048 1627024 5713000 1627184 5713128 1629808 5706208 -1627184 5713128 1627448 5719792 1629984 5706008 1629904 5706120 -1629904 5706120 1629824 5706192 1629808 5706208 1627184 5713128 -1627184 5713128 1629984 5706008 1629904 5706120 1629808 5706208 -1629984 5706008 1627192 5713168 1627448 5719792 1629736 5726176 -1627184 5713128 1627192 5713168 1629984 5706008 1629904 5706120 -1627184 5713128 1627448 5719792 1627192 5713168 1629904 5706120 -1627448 5719792 1627192 5713168 1627184 5713128 1627384 5719672 -1627448 5719792 1627192 5713168 1627384 5719672 1627400 5719704 -1627184 5713128 1626336 5714040 1627384 5719672 1627192 5713168 -1627184 5713128 1626456 5713624 1626336 5714040 1627192 5713168 -1626456 5713624 1626360 5713736 1626336 5714040 1627192 5713168 -1627184 5713128 1626472 5713592 1626456 5713624 1627192 5713168 -1626456 5713624 1626336 5714040 1627192 5713168 1626472 5713592 -1626336 5714040 1627384 5719672 1627192 5713168 1626456 5713624 -1627192 5713168 1629904 5706120 1627184 5713128 1626472 5713592 -1627384 5719672 1627448 5719792 1627192 5713168 1626336 5714040 -1627192 5713168 1627448 5719792 1629984 5706008 1629904 5706120 -1627448 5719792 1629984 5706008 1627192 5713168 1627384 5719672 -1627184 5713128 1626496 5713456 1626472 5713592 1627192 5713168 -1626472 5713592 1626456 5713624 1627192 5713168 1626496 5713456 -1627184 5713128 1626496 5713456 1627192 5713168 1629904 5706120 -1627184 5713128 1627024 5713000 1626496 5713456 1627192 5713168 -1627024 5713000 1626480 5713384 1626496 5713456 1627192 5713168 -1627184 5713128 1627024 5713000 1627192 5713168 1629904 5706120 -1626496 5713456 1626472 5713592 1627192 5713168 1626480 5713384 -1627184 5713128 1627136 5713048 1627024 5713000 1627192 5713168 -1627024 5713000 1626440 5713328 1626480 5713384 1627192 5713168 -1627024 5713000 1626480 5713384 1627192 5713168 1627184 5713128 -1626336 5714040 1627336 5719640 1627384 5719672 1627192 5713168 -1627184 5713128 1627192 5713168 1629904 5706120 1629808 5706208 -1627184 5713128 1627192 5713168 1629808 5706208 1627136 5713048 -1627192 5713168 1629984 5706008 1629904 5706120 1629808 5706208 -1627184 5713128 1627024 5713000 1627192 5713168 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1627192 5713168 -1626336 5714040 1627176 5713224 1627192 5713168 1626456 5713624 -1626336 5714040 1627176 5713224 1626456 5713624 1626360 5713736 -1627192 5713168 1626472 5713592 1626456 5713624 1627176 5713224 -1627192 5713168 1626496 5713456 1626472 5713592 1627176 5713224 -1626472 5713592 1626456 5713624 1627176 5713224 1626496 5713456 -1626456 5713624 1626336 5714040 1627176 5713224 1626472 5713592 -1627192 5713168 1627176 5713224 1627384 5719672 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1627176 5713224 -1627176 5713224 1627448 5719792 1627192 5713168 1626496 5713456 -1627192 5713168 1627176 5713224 1627448 5719792 1629984 5706008 -1627176 5713224 1626336 5714040 1627384 5719672 1627448 5719792 -1626336 5714040 1627384 5719672 1627176 5713224 1626456 5713624 -1627192 5713168 1626480 5713384 1626496 5713456 1627176 5713224 -1626496 5713456 1626472 5713592 1627176 5713224 1626480 5713384 -1627192 5713168 1627024 5713000 1626480 5713384 1627176 5713224 -1627192 5713168 1627024 5713000 1627176 5713224 1627448 5719792 -1626480 5713384 1626496 5713456 1627176 5713224 1627024 5713000 -1627024 5713000 1626440 5713328 1626480 5713384 1627176 5713224 -1627192 5713168 1627184 5713128 1627024 5713000 1627176 5713224 -1627024 5713000 1626480 5713384 1627176 5713224 1627184 5713128 -1627192 5713168 1627184 5713128 1627176 5713224 1627448 5719792 -1627184 5713128 1627136 5713048 1627024 5713000 1627176 5713224 -1627024 5713000 1626480 5713384 1627176 5713224 1627136 5713048 -1627184 5713128 1627136 5713048 1627176 5713224 1627192 5713168 -1627136 5713048 1627064 5713000 1627024 5713000 1627176 5713224 -1627384 5719672 1627176 5713224 1626336 5714040 1627336 5719640 -1627384 5719672 1627448 5719792 1627176 5713224 1627336 5719640 -1627176 5713224 1626456 5713624 1626336 5714040 1627336 5719640 -1626336 5714040 1627312 5719640 1627336 5719640 1627176 5713224 -1627448 5719792 1627184 5713280 1627176 5713224 1627384 5719672 -1627448 5719792 1627184 5713280 1627384 5719672 1627400 5719704 -1627192 5713168 1627184 5713280 1627448 5719792 1629984 5706008 -1627448 5719792 1629736 5726176 1629984 5706008 1627184 5713280 -1627192 5713168 1627184 5713280 1629984 5706008 1629904 5706120 -1627192 5713168 1627184 5713280 1629904 5706120 1629808 5706208 -1627184 5713280 1627448 5719792 1629984 5706008 1629904 5706120 -1627176 5713224 1627336 5719640 1627384 5719672 1627184 5713280 -1627384 5719672 1627448 5719792 1627184 5713280 1627336 5719640 -1627184 5713280 1627192 5713168 1627176 5713224 1627336 5719640 -1627192 5713168 1627176 5713224 1627184 5713280 1629904 5706120 -1627448 5719792 1629984 5706008 1627184 5713280 1627384 5719672 -1627176 5713224 1626336 5714040 1627336 5719640 1627184 5713280 -1627336 5719640 1627384 5719672 1627184 5713280 1626336 5714040 -1627176 5713224 1626336 5714040 1627184 5713280 1627192 5713168 -1627176 5713224 1626456 5713624 1626336 5714040 1627184 5713280 -1626456 5713624 1626360 5713736 1626336 5714040 1627184 5713280 -1627176 5713224 1626472 5713592 1626456 5713624 1627184 5713280 -1627176 5713224 1626496 5713456 1626472 5713592 1627184 5713280 -1627176 5713224 1626480 5713384 1626496 5713456 1627184 5713280 -1626496 5713456 1626472 5713592 1627184 5713280 1626480 5713384 -1626472 5713592 1626456 5713624 1627184 5713280 1626496 5713456 -1627176 5713224 1626480 5713384 1627184 5713280 1627192 5713168 -1626456 5713624 1626336 5714040 1627184 5713280 1626472 5713592 -1627176 5713224 1627024 5713000 1626480 5713384 1627184 5713280 -1626336 5714040 1627336 5719640 1627184 5713280 1626456 5713624 -1626336 5714040 1627312 5719640 1627336 5719640 1627184 5713280 -1629984 5706008 1627216 5713328 1627448 5719792 1629736 5726176 -1627184 5713280 1627216 5713328 1629984 5706008 1629904 5706120 -1627184 5713280 1627216 5713328 1629904 5706120 1627192 5713168 -1629904 5706120 1629808 5706208 1627192 5713168 1627216 5713328 -1627192 5713168 1627184 5713280 1627216 5713328 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1627216 5713328 -1627216 5713328 1629984 5706008 1629904 5706120 1629808 5706208 -1627184 5713280 1627216 5713328 1627192 5713168 1627176 5713224 -1627216 5713328 1629808 5706208 1627192 5713168 1627176 5713224 -1627184 5713280 1627448 5719792 1627216 5713328 1627176 5713224 -1627448 5719792 1627216 5713328 1627184 5713280 1627384 5719672 -1627448 5719792 1627216 5713328 1627384 5719672 1627400 5719704 -1627184 5713280 1627336 5719640 1627384 5719672 1627216 5713328 -1627184 5713280 1626336 5714040 1627336 5719640 1627216 5713328 -1627336 5719640 1627384 5719672 1627216 5713328 1626336 5714040 -1627216 5713328 1627176 5713224 1627184 5713280 1626336 5714040 -1627384 5719672 1627448 5719792 1627216 5713328 1627336 5719640 -1627216 5713328 1627448 5719792 1629984 5706008 1629904 5706120 -1627448 5719792 1629984 5706008 1627216 5713328 1627384 5719672 -1627184 5713280 1626456 5713624 1626336 5714040 1627216 5713328 -1626456 5713624 1626360 5713736 1626336 5714040 1627216 5713328 -1626336 5714040 1627336 5719640 1627216 5713328 1626456 5713624 -1627184 5713280 1626472 5713592 1626456 5713624 1627216 5713328 -1627184 5713280 1626496 5713456 1626472 5713592 1627216 5713328 -1627184 5713280 1626480 5713384 1626496 5713456 1627216 5713328 -1626472 5713592 1626456 5713624 1627216 5713328 1626496 5713456 -1627184 5713280 1626496 5713456 1627216 5713328 1627176 5713224 -1626456 5713624 1626336 5714040 1627216 5713328 1626472 5713592 -1626336 5714040 1627312 5719640 1627336 5719640 1627216 5713328 -1629808 5706208 1627184 5713128 1627192 5713168 1627216 5713328 -1629984 5706008 1627224 5713384 1627448 5719792 1629736 5726176 -1627216 5713328 1627224 5713384 1629984 5706008 1629904 5706120 -1627216 5713328 1627224 5713384 1629904 5706120 1629808 5706208 -1627216 5713328 1627224 5713384 1629808 5706208 1627192 5713168 -1629904 5706120 1629824 5706192 1629808 5706208 1627224 5713384 -1627224 5713384 1629984 5706008 1629904 5706120 1629808 5706208 -1627216 5713328 1627448 5719792 1627224 5713384 1629808 5706208 -1627448 5719792 1627224 5713384 1627216 5713328 1627384 5719672 -1627448 5719792 1627224 5713384 1627384 5719672 1627400 5719704 -1627216 5713328 1627336 5719640 1627384 5719672 1627224 5713384 -1627216 5713328 1626336 5714040 1627336 5719640 1627224 5713384 -1627216 5713328 1626456 5713624 1626336 5714040 1627224 5713384 -1626456 5713624 1626360 5713736 1626336 5714040 1627224 5713384 -1626336 5714040 1627336 5719640 1627224 5713384 1626456 5713624 -1627336 5719640 1627384 5719672 1627224 5713384 1626336 5714040 -1627224 5713384 1629808 5706208 1627216 5713328 1626456 5713624 -1627384 5719672 1627448 5719792 1627224 5713384 1627336 5719640 -1627224 5713384 1627448 5719792 1629984 5706008 1629904 5706120 -1627448 5719792 1629984 5706008 1627224 5713384 1627384 5719672 -1627216 5713328 1626472 5713592 1626456 5713624 1627224 5713384 -1626456 5713624 1626336 5714040 1627224 5713384 1626472 5713592 -1627216 5713328 1626496 5713456 1626472 5713592 1627224 5713384 -1627216 5713328 1627184 5713280 1626496 5713456 1627224 5713384 -1627184 5713280 1626480 5713384 1626496 5713456 1627224 5713384 -1626496 5713456 1626472 5713592 1627224 5713384 1627184 5713280 -1627216 5713328 1627184 5713280 1627224 5713384 1629808 5706208 -1626472 5713592 1626456 5713624 1627224 5713384 1626496 5713456 -1626336 5714040 1627312 5719640 1627336 5719640 1627224 5713384 -1626336 5714040 1627224 5713424 1627224 5713384 1626456 5713624 -1626336 5714040 1627224 5713424 1626456 5713624 1626360 5713736 -1627224 5713384 1626472 5713592 1626456 5713624 1627224 5713424 -1626456 5713624 1626336 5714040 1627224 5713424 1626472 5713592 -1627224 5713384 1627224 5713424 1627336 5719640 1627384 5719672 -1627224 5713384 1627224 5713424 1627384 5719672 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1627224 5713424 -1627224 5713424 1627336 5719640 1627384 5719672 1627448 5719792 -1627224 5713424 1627448 5719792 1627224 5713384 1626472 5713592 -1627224 5713384 1627224 5713424 1627448 5719792 1629984 5706008 -1627448 5719792 1629736 5726176 1629984 5706008 1627224 5713424 -1627224 5713424 1627384 5719672 1627448 5719792 1629984 5706008 -1627224 5713384 1627224 5713424 1629984 5706008 1629904 5706120 -1627224 5713384 1627224 5713424 1629904 5706120 1629808 5706208 -1627224 5713384 1626472 5713592 1627224 5713424 1629904 5706120 -1627224 5713424 1627448 5719792 1629984 5706008 1629904 5706120 -1627224 5713424 1626336 5714040 1627336 5719640 1627384 5719672 -1626336 5714040 1627336 5719640 1627224 5713424 1626456 5713624 -1627224 5713384 1626496 5713456 1626472 5713592 1627224 5713424 -1626472 5713592 1626456 5713624 1627224 5713424 1626496 5713456 -1627224 5713384 1627184 5713280 1626496 5713456 1627224 5713424 -1627184 5713280 1626480 5713384 1626496 5713456 1627224 5713424 -1627224 5713384 1627216 5713328 1627184 5713280 1627224 5713424 -1627224 5713384 1627184 5713280 1627224 5713424 1629904 5706120 -1626496 5713456 1626472 5713592 1627224 5713424 1627184 5713280 -1627336 5719640 1627224 5713424 1626336 5714040 1627312 5719640 -1627224 5713424 1627192 5713448 1627336 5719640 1627384 5719672 -1627224 5713424 1627192 5713448 1627384 5719672 1627448 5719792 -1627224 5713424 1626336 5714040 1627192 5713448 1627384 5719672 -1626336 5714040 1627192 5713448 1627224 5713424 1626456 5713624 -1626336 5714040 1627192 5713448 1626456 5713624 1626360 5713736 -1627224 5713424 1626472 5713592 1626456 5713624 1627192 5713448 -1627224 5713424 1626496 5713456 1626472 5713592 1627192 5713448 -1626472 5713592 1626456 5713624 1627192 5713448 1626496 5713456 -1627192 5713448 1627384 5719672 1627224 5713424 1626496 5713456 -1626456 5713624 1626336 5714040 1627192 5713448 1626472 5713592 -1627192 5713448 1626336 5714040 1627336 5719640 1627384 5719672 -1626336 5714040 1627336 5719640 1627192 5713448 1626456 5713624 -1627224 5713424 1627184 5713280 1626496 5713456 1627192 5713448 -1627184 5713280 1626480 5713384 1626496 5713456 1627192 5713448 -1626496 5713456 1626472 5713592 1627192 5713448 1627184 5713280 -1627224 5713424 1627224 5713384 1627184 5713280 1627192 5713448 -1627224 5713384 1627216 5713328 1627184 5713280 1627192 5713448 -1627224 5713384 1627216 5713328 1627192 5713448 1627224 5713424 -1627224 5713424 1627224 5713384 1627192 5713448 1627384 5719672 -1627184 5713280 1626496 5713456 1627192 5713448 1627216 5713328 -1627336 5719640 1627192 5713448 1626336 5714040 1627312 5719640 -1626496 5713456 1627040 5713448 1627184 5713280 1626480 5713384 -1627184 5713280 1627176 5713224 1626480 5713384 1627040 5713448 -1626480 5713384 1626496 5713456 1627040 5713448 1627176 5713224 -1627192 5713448 1627040 5713448 1626496 5713456 1626472 5713592 -1627192 5713448 1627040 5713448 1626472 5713592 1626456 5713624 -1627040 5713448 1626496 5713456 1626472 5713592 1626456 5713624 -1627192 5713448 1627040 5713448 1626456 5713624 1626336 5714040 -1626456 5713624 1626360 5713736 1626336 5714040 1627040 5713448 -1627040 5713448 1626472 5713592 1626456 5713624 1626336 5714040 -1627192 5713448 1627184 5713280 1627040 5713448 1626336 5714040 -1627192 5713448 1627040 5713448 1626336 5714040 1627336 5719640 -1626496 5713456 1626472 5713592 1627040 5713448 1626480 5713384 -1627040 5713448 1627192 5713448 1627184 5713280 1627176 5713224 -1627176 5713224 1627024 5713000 1626480 5713384 1627040 5713448 -1627176 5713224 1627024 5713000 1627040 5713448 1627184 5713280 -1627176 5713224 1627136 5713048 1627024 5713000 1627040 5713448 -1626480 5713384 1626496 5713456 1627040 5713448 1627024 5713000 -1627024 5713000 1626440 5713328 1626480 5713384 1627040 5713448 -1627184 5713280 1627040 5713448 1627192 5713448 1627216 5713328 -1627192 5713448 1627224 5713384 1627216 5713328 1627040 5713448 -1627040 5713448 1626336 5714040 1627192 5713448 1627216 5713328 -1627184 5713280 1627176 5713224 1627040 5713448 1627216 5713328 -1627040 5713448 1626952 5713376 1626480 5713384 1626496 5713456 -1627040 5713448 1626952 5713376 1626496 5713456 1626472 5713592 -1626952 5713376 1626480 5713384 1626496 5713456 1626472 5713592 -1627040 5713448 1626952 5713376 1626472 5713592 1626456 5713624 -1627040 5713448 1627024 5713000 1626952 5713376 1626472 5713592 -1626952 5713376 1627024 5713000 1626480 5713384 1626496 5713456 -1627024 5713000 1626952 5713376 1627040 5713448 1627176 5713224 -1627040 5713448 1627184 5713280 1627176 5713224 1626952 5713376 -1627024 5713000 1626952 5713376 1627176 5713224 1627136 5713048 -1626952 5713376 1626472 5713592 1627040 5713448 1627184 5713280 -1627040 5713448 1627216 5713328 1627184 5713280 1626952 5713376 -1627024 5713000 1626480 5713384 1626952 5713376 1627176 5713224 -1627176 5713224 1627024 5713000 1626952 5713376 1627184 5713280 -1626480 5713384 1626952 5713376 1627024 5713000 1626440 5713328 -1626480 5713384 1626496 5713456 1626952 5713376 1626440 5713328 -1626952 5713376 1627176 5713224 1627024 5713000 1626440 5713328 -1627024 5713000 1626344 5713272 1626440 5713328 1626952 5713376 -1627024 5713000 1626880 5713288 1626952 5713376 1627176 5713224 -1627024 5713000 1626880 5713288 1627176 5713224 1627136 5713048 -1626880 5713288 1626440 5713328 1626952 5713376 1627176 5713224 -1627024 5713000 1626440 5713328 1626880 5713288 1627176 5713224 -1626952 5713376 1627184 5713280 1627176 5713224 1626880 5713288 -1626440 5713328 1626880 5713288 1627024 5713000 1626344 5713272 -1626952 5713376 1626880 5713288 1626440 5713328 1626480 5713384 -1626952 5713376 1626880 5713288 1626480 5713384 1626496 5713456 -1626952 5713376 1626880 5713288 1626496 5713456 1626472 5713592 -1626952 5713376 1627176 5713224 1626880 5713288 1626496 5713456 -1626880 5713288 1627024 5713000 1626440 5713328 1626480 5713384 -1626880 5713288 1626440 5713328 1626480 5713384 1626496 5713456 -1626880 5713288 1626864 5713232 1626440 5713328 1626480 5713384 -1626880 5713288 1627024 5713000 1626864 5713232 1626480 5713384 -1627024 5713000 1626864 5713232 1626880 5713288 1627176 5713224 -1627024 5713000 1626864 5713232 1627176 5713224 1627136 5713048 -1626880 5713288 1626952 5713376 1627176 5713224 1626864 5713232 -1626864 5713232 1626480 5713384 1626880 5713288 1627176 5713224 -1626864 5713232 1627024 5713000 1626440 5713328 1626480 5713384 -1627024 5713000 1626440 5713328 1626864 5713232 1627176 5713224 -1626440 5713328 1626864 5713232 1627024 5713000 1626344 5713272 -1627024 5713000 1626080 5713112 1626344 5713272 1626864 5713232 -1626440 5713328 1626480 5713384 1626864 5713232 1626344 5713272 -1626864 5713232 1627176 5713224 1627024 5713000 1626344 5713272 -1626880 5713288 1626864 5713232 1626480 5713384 1626496 5713456 -1626344 5713272 1626856 5713184 1627024 5713000 1626080 5713112 -1627024 5713000 1626856 5713184 1626864 5713232 1627176 5713224 -1627024 5713000 1626856 5713184 1627176 5713224 1627136 5713048 -1626864 5713232 1626880 5713288 1627176 5713224 1626856 5713184 -1626856 5713184 1626344 5713272 1626864 5713232 1627176 5713224 -1626856 5713184 1626864 5713232 1627176 5713224 1627136 5713048 -1626344 5713272 1626864 5713232 1626856 5713184 1626080 5713112 -1626856 5713184 1627136 5713048 1627024 5713000 1626080 5713112 -1626344 5713272 1626856 5713184 1626080 5713112 1626280 5713256 -1627024 5713000 1625960 5713048 1626080 5713112 1626856 5713184 -1626864 5713232 1626856 5713184 1626344 5713272 1626440 5713328 -1626864 5713232 1626856 5713184 1626440 5713328 1626480 5713384 -1626864 5713232 1626856 5713184 1626480 5713384 1626880 5713288 -1626864 5713232 1627176 5713224 1626856 5713184 1626480 5713384 -1626856 5713184 1626080 5713112 1626344 5713272 1626440 5713328 -1626856 5713184 1626344 5713272 1626440 5713328 1626480 5713384 -1627176 5713224 1627184 5713128 1627136 5713048 1626856 5713184 -1627024 5713000 1626856 5713184 1627136 5713048 1627064 5713000 -1626856 5713184 1626864 5713144 1626080 5713112 1626344 5713272 -1626856 5713184 1626864 5713144 1626344 5713272 1626440 5713328 -1626864 5713144 1626080 5713112 1626344 5713272 1626440 5713328 -1626856 5713184 1627024 5713000 1626864 5713144 1626440 5713328 -1627024 5713000 1626864 5713144 1626856 5713184 1627136 5713048 -1626856 5713184 1627176 5713224 1627136 5713048 1626864 5713144 -1626856 5713184 1626864 5713232 1627176 5713224 1626864 5713144 -1627176 5713224 1627136 5713048 1626864 5713144 1626864 5713232 -1626864 5713232 1626880 5713288 1627176 5713224 1626864 5713144 -1626864 5713144 1626440 5713328 1626856 5713184 1626864 5713232 -1627136 5713048 1627024 5713000 1626864 5713144 1627176 5713224 -1626864 5713144 1627024 5713000 1626080 5713112 1626344 5713272 -1627024 5713000 1626080 5713112 1626864 5713144 1627136 5713048 -1626080 5713112 1626280 5713256 1626344 5713272 1626864 5713144 -1626080 5713112 1626864 5713144 1627024 5713000 1625960 5713048 -1626856 5713184 1626864 5713144 1626440 5713328 1626480 5713384 -1627176 5713224 1627184 5713128 1627136 5713048 1626864 5713144 -1627024 5713000 1626864 5713144 1627136 5713048 1627064 5713000 -1626864 5713144 1626880 5713104 1626080 5713112 1626344 5713272 -1626864 5713144 1626880 5713104 1626344 5713272 1626440 5713328 -1626864 5713144 1627024 5713000 1626880 5713104 1626344 5713272 -1627024 5713000 1626880 5713104 1626864 5713144 1627136 5713048 -1626864 5713144 1627176 5713224 1627136 5713048 1626880 5713104 -1626864 5713144 1626864 5713232 1627176 5713224 1626880 5713104 -1626880 5713104 1626344 5713272 1626864 5713144 1627176 5713224 -1627136 5713048 1627024 5713000 1626880 5713104 1627176 5713224 -1626880 5713104 1627024 5713000 1626080 5713112 1626344 5713272 -1627024 5713000 1626080 5713112 1626880 5713104 1627136 5713048 -1626080 5713112 1626280 5713256 1626344 5713272 1626880 5713104 -1626080 5713112 1626880 5713104 1627024 5713000 1625960 5713048 -1627176 5713224 1627184 5713128 1627136 5713048 1626880 5713104 -1627024 5713000 1626880 5713104 1627136 5713048 1627064 5713000 -1626880 5713104 1626968 5713032 1626080 5713112 1626344 5713272 -1627024 5713000 1626968 5713032 1626880 5713104 1627136 5713048 -1626880 5713104 1627176 5713224 1627136 5713048 1626968 5713032 -1626880 5713104 1626864 5713144 1627176 5713224 1626968 5713032 -1626864 5713144 1626864 5713232 1627176 5713224 1626968 5713032 -1627176 5713224 1627136 5713048 1626968 5713032 1626864 5713144 -1626968 5713032 1626080 5713112 1626880 5713104 1626864 5713144 -1627136 5713048 1627024 5713000 1626968 5713032 1627176 5713224 -1627024 5713000 1626080 5713112 1626968 5713032 1627136 5713048 -1626080 5713112 1626968 5713032 1627024 5713000 1625960 5713048 -1627024 5713000 1625552 5712856 1625960 5713048 1626968 5713032 -1626080 5713112 1626880 5713104 1626968 5713032 1625960 5713048 -1626968 5713032 1627136 5713048 1627024 5713000 1625960 5713048 -1627176 5713224 1627184 5713128 1627136 5713048 1626968 5713032 -1627176 5713224 1627184 5713128 1626968 5713032 1626864 5713144 -1627136 5713048 1627024 5713000 1626968 5713032 1627184 5713128 -1627176 5713224 1627192 5713168 1627184 5713128 1626968 5713032 -1627024 5713000 1626968 5713032 1627136 5713048 1627064 5713000 -1626968 5713032 1627184 5713128 1627136 5713048 1627064 5713000 -1627024 5713000 1625960 5713048 1626968 5713032 1627064 5713000 -1629984 5706008 1627384 5714024 1627448 5719792 1629736 5726176 -1627448 5719792 1629624 5725984 1629736 5726176 1627384 5714024 -1627448 5719792 1627384 5714024 1627224 5713424 1627384 5719672 -1627448 5719792 1627384 5714024 1627384 5719672 1627400 5719704 -1627224 5713424 1627192 5713448 1627384 5719672 1627384 5714024 -1627384 5719672 1627448 5719792 1627384 5714024 1627192 5713448 -1627224 5713424 1627384 5714024 1629984 5706008 1629904 5706120 -1627224 5713424 1627384 5714024 1629904 5706120 1627224 5713384 -1629904 5706120 1629808 5706208 1627224 5713384 1627384 5714024 -1629904 5706120 1629824 5706192 1629808 5706208 1627384 5714024 -1629808 5706208 1627216 5713328 1627224 5713384 1627384 5714024 -1629808 5706208 1627192 5713168 1627216 5713328 1627384 5714024 -1627192 5713168 1627176 5713224 1627216 5713328 1627384 5714024 -1627216 5713328 1627224 5713384 1627384 5714024 1627192 5713168 -1629808 5706208 1627192 5713168 1627384 5714024 1629904 5706120 -1627224 5713384 1627224 5713424 1627384 5714024 1627216 5713328 -1627384 5714024 1629984 5706008 1629904 5706120 1629808 5706208 -1627192 5713448 1627336 5719640 1627384 5719672 1627384 5714024 -1627192 5713448 1627336 5719640 1627384 5714024 1627224 5713424 -1627384 5719672 1627448 5719792 1627384 5714024 1627336 5719640 -1627192 5713448 1626336 5714040 1627336 5719640 1627384 5714024 -1627192 5713448 1626336 5714040 1627384 5714024 1627224 5713424 -1627336 5719640 1627384 5719672 1627384 5714024 1626336 5714040 -1627192 5713448 1627040 5713448 1626336 5714040 1627384 5714024 -1627192 5713448 1627040 5713448 1627384 5714024 1627224 5713424 -1627040 5713448 1626456 5713624 1626336 5714040 1627384 5714024 -1626456 5713624 1626360 5713736 1626336 5714040 1627384 5714024 -1627040 5713448 1626472 5713592 1626456 5713624 1627384 5714024 -1626336 5714040 1627336 5719640 1627384 5714024 1626456 5713624 -1627040 5713448 1626456 5713624 1627384 5714024 1627192 5713448 -1629984 5706008 1629904 5706120 1627384 5714024 1629736 5726176 -1627384 5714024 1627384 5719672 1627448 5719792 1629736 5726176 -1627384 5714024 1627224 5713384 1627224 5713424 1627192 5713448 -1626336 5714040 1627312 5719640 1627336 5719640 1627384 5714024 -1627336 5719640 1627384 5719672 1627384 5714024 1627312 5719640 -1626336 5714040 1627312 5719640 1627384 5714024 1626456 5713624 -1626336 5714040 1626264 5714032 1627312 5719640 1627384 5714024 -1629984 5706008 1627384 5714024 1629736 5726176 1629944 5726576 -1629808 5706208 1627184 5713128 1627192 5713168 1627384 5714024 -1629736 5726176 1627432 5714024 1627384 5714024 1627448 5719792 -1629736 5726176 1627432 5714024 1627448 5719792 1629624 5725984 -1627384 5714024 1627432 5714024 1629984 5706008 1629904 5706120 -1627384 5714024 1627432 5714024 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1627432 5714024 -1627384 5714024 1627432 5714024 1629808 5706208 1627192 5713168 -1627384 5714024 1627432 5714024 1627192 5713168 1627216 5713328 -1627192 5713168 1627176 5713224 1627216 5713328 1627432 5714024 -1627384 5714024 1627432 5714024 1627216 5713328 1627224 5713384 -1627432 5714024 1627192 5713168 1627216 5713328 1627224 5713384 -1627432 5714024 1629808 5706208 1627192 5713168 1627216 5713328 -1627384 5714024 1627432 5714024 1627224 5713384 1627224 5713424 -1627432 5714024 1627216 5713328 1627224 5713384 1627224 5713424 -1627432 5714024 1629904 5706120 1629808 5706208 1627192 5713168 -1627432 5714024 1629984 5706008 1629904 5706120 1629808 5706208 -1627384 5714024 1627384 5719672 1627448 5719792 1627432 5714024 -1627448 5719792 1629736 5726176 1627432 5714024 1627384 5719672 -1627384 5719672 1627400 5719704 1627448 5719792 1627432 5714024 -1627384 5714024 1627336 5719640 1627384 5719672 1627432 5714024 -1627384 5714024 1627312 5719640 1627336 5719640 1627432 5714024 -1627384 5719672 1627448 5719792 1627432 5714024 1627336 5719640 -1627432 5714024 1627224 5713424 1627384 5714024 1627336 5719640 -1627384 5714024 1627432 5714024 1627224 5713424 1627192 5713448 -1627432 5714024 1629736 5726176 1629984 5706008 1629904 5706120 -1629736 5726176 1629984 5706008 1627432 5714024 1627448 5719792 -1629984 5706008 1627432 5714024 1629736 5726176 1629944 5726576 -1629808 5706208 1627184 5713128 1627192 5713168 1627432 5714024 -1629808 5706208 1627136 5713048 1627184 5713128 1627432 5714024 -1627192 5713168 1627216 5713328 1627432 5714024 1627184 5713128 -1629808 5706208 1627184 5713128 1627432 5714024 1629904 5706120 -1627432 5714024 1627488 5714064 1629984 5706008 1629904 5706120 -1627432 5714024 1627488 5714064 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1627488 5714064 -1627432 5714024 1627488 5714064 1629808 5706208 1627184 5713128 -1629808 5706208 1627136 5713048 1627184 5713128 1627488 5714064 -1627488 5714064 1629904 5706120 1629808 5706208 1627184 5713128 -1627488 5714064 1629984 5706008 1629904 5706120 1629808 5706208 -1627432 5714024 1629736 5726176 1627488 5714064 1627184 5713128 -1629736 5726176 1627488 5714064 1627432 5714024 1627448 5719792 -1627432 5714024 1627384 5719672 1627448 5719792 1627488 5714064 -1627384 5719672 1627400 5719704 1627448 5719792 1627488 5714064 -1629736 5726176 1627488 5714064 1627448 5719792 1629624 5725984 -1627448 5719792 1629600 5725952 1629624 5725984 1627488 5714064 -1627432 5714024 1627336 5719640 1627384 5719672 1627488 5714064 -1627384 5719672 1627448 5719792 1627488 5714064 1627336 5719640 -1627432 5714024 1627384 5714024 1627336 5719640 1627488 5714064 -1627384 5714024 1627312 5719640 1627336 5719640 1627488 5714064 -1627384 5714024 1627312 5719640 1627488 5714064 1627432 5714024 -1627336 5719640 1627384 5719672 1627488 5714064 1627312 5719640 -1627488 5714064 1627184 5713128 1627432 5714024 1627384 5714024 -1627448 5719792 1629624 5725984 1627488 5714064 1627384 5719672 -1627488 5714064 1629736 5726176 1629984 5706008 1629904 5706120 -1629736 5726176 1629984 5706008 1627488 5714064 1629624 5725984 -1627384 5714024 1626336 5714040 1627312 5719640 1627488 5714064 -1627384 5714024 1626336 5714040 1627488 5714064 1627432 5714024 -1627312 5719640 1627336 5719640 1627488 5714064 1626336 5714040 -1627384 5714024 1626456 5713624 1626336 5714040 1627488 5714064 -1626336 5714040 1626264 5714032 1627312 5719640 1627488 5714064 -1629984 5706008 1627488 5714064 1629736 5726176 1629944 5726576 -1627432 5714024 1627488 5714064 1627184 5713128 1627192 5713168 -1627432 5714024 1627488 5714064 1627192 5713168 1627216 5713328 -1627432 5714024 1627488 5714064 1627216 5713328 1627224 5713384 -1627192 5713168 1627176 5713224 1627216 5713328 1627488 5714064 -1627432 5714024 1627488 5714064 1627224 5713384 1627224 5713424 -1627488 5714064 1627216 5713328 1627224 5713384 1627224 5713424 -1627488 5714064 1627192 5713168 1627216 5713328 1627224 5713384 -1627432 5714024 1627488 5714064 1627224 5713424 1627384 5714024 -1627488 5714064 1629808 5706208 1627184 5713128 1627192 5713168 -1627432 5714024 1627384 5714024 1627488 5714064 1627224 5713424 -1627488 5714064 1627184 5713128 1627192 5713168 1627216 5713328 -1627488 5714064 1627560 5714152 1629984 5706008 1629904 5706120 -1627488 5714064 1627560 5714152 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1627560 5714152 -1627488 5714064 1627560 5714152 1629808 5706208 1627184 5713128 -1629808 5706208 1627136 5713048 1627184 5713128 1627560 5714152 -1627488 5714064 1627560 5714152 1627184 5713128 1627192 5713168 -1627560 5714152 1629808 5706208 1627184 5713128 1627192 5713168 -1627560 5714152 1629904 5706120 1629808 5706208 1627184 5713128 -1627560 5714152 1629984 5706008 1629904 5706120 1629808 5706208 -1627488 5714064 1629736 5726176 1627560 5714152 1627192 5713168 -1629736 5726176 1627560 5714152 1627488 5714064 1629624 5725984 -1627488 5714064 1627448 5719792 1629624 5725984 1627560 5714152 -1627448 5719792 1629600 5725952 1629624 5725984 1627560 5714152 -1627488 5714064 1627384 5719672 1627448 5719792 1627560 5714152 -1627488 5714064 1627336 5719640 1627384 5719672 1627560 5714152 -1627384 5719672 1627400 5719704 1627448 5719792 1627560 5714152 -1627448 5719792 1629624 5725984 1627560 5714152 1627384 5719672 -1627488 5714064 1627312 5719640 1627336 5719640 1627560 5714152 -1627336 5719640 1627384 5719672 1627560 5714152 1627312 5719640 -1627488 5714064 1626336 5714040 1627312 5719640 1627560 5714152 -1627312 5719640 1627336 5719640 1627560 5714152 1626336 5714040 -1627384 5719672 1627448 5719792 1627560 5714152 1627336 5719640 -1627560 5714152 1627192 5713168 1627488 5714064 1626336 5714040 -1629624 5725984 1629736 5726176 1627560 5714152 1627448 5719792 -1627560 5714152 1629736 5726176 1629984 5706008 1629904 5706120 -1629736 5726176 1629984 5706008 1627560 5714152 1629624 5725984 -1627488 5714064 1627384 5714024 1626336 5714040 1627560 5714152 -1627488 5714064 1627432 5714024 1627384 5714024 1627560 5714152 -1626336 5714040 1627312 5719640 1627560 5714152 1627384 5714024 -1627384 5714024 1626456 5713624 1626336 5714040 1627560 5714152 -1627488 5714064 1627384 5714024 1627560 5714152 1627192 5713168 -1626336 5714040 1626264 5714032 1627312 5719640 1627560 5714152 -1629984 5706008 1627560 5714152 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1627560 5714152 -1629984 5706008 1629904 5706120 1627560 5714152 1629944 5726576 -1627560 5714152 1629624 5725984 1629736 5726176 1629944 5726576 -1629984 5706008 1627560 5714152 1629944 5726576 1630064 5705848 -1627488 5714064 1627560 5714152 1627192 5713168 1627216 5713328 -1627192 5713168 1627176 5713224 1627216 5713328 1627560 5714152 -1627488 5714064 1627560 5714152 1627216 5713328 1627224 5713384 -1627488 5714064 1627560 5714152 1627224 5713384 1627224 5713424 -1627560 5714152 1627184 5713128 1627192 5713168 1627216 5713328 -1627488 5714064 1627384 5714024 1627560 5714152 1627224 5713384 -1627560 5714152 1627192 5713168 1627216 5713328 1627224 5713384 -1627560 5714152 1627608 5714272 1629984 5706008 1629904 5706120 -1627560 5714152 1627608 5714272 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1627608 5714272 -1627560 5714152 1627608 5714272 1629808 5706208 1627184 5713128 -1627608 5714272 1629984 5706008 1629904 5706120 1629808 5706208 -1627560 5714152 1629944 5726576 1627608 5714272 1629808 5706208 -1627608 5714272 1629944 5726576 1629984 5706008 1629904 5706120 -1629984 5706008 1627608 5714272 1629944 5726576 1630064 5705848 -1629944 5726576 1627608 5714272 1627560 5714152 1629736 5726176 -1629944 5726576 1627608 5714272 1629736 5726176 1629904 5726504 -1627608 5714272 1629808 5706208 1627560 5714152 1629736 5726176 -1627560 5714152 1629624 5725984 1629736 5726176 1627608 5714272 -1627560 5714152 1627448 5719792 1629624 5725984 1627608 5714272 -1627448 5719792 1629600 5725952 1629624 5725984 1627608 5714272 -1627560 5714152 1627384 5719672 1627448 5719792 1627608 5714272 -1627384 5719672 1627400 5719704 1627448 5719792 1627608 5714272 -1627560 5714152 1627336 5719640 1627384 5719672 1627608 5714272 -1627560 5714152 1627312 5719640 1627336 5719640 1627608 5714272 -1627384 5719672 1627448 5719792 1627608 5714272 1627336 5719640 -1627560 5714152 1626336 5714040 1627312 5719640 1627608 5714272 -1627312 5719640 1627336 5719640 1627608 5714272 1626336 5714040 -1627560 5714152 1627384 5714024 1626336 5714040 1627608 5714272 -1627384 5714024 1626456 5713624 1626336 5714040 1627608 5714272 -1626336 5714040 1627312 5719640 1627608 5714272 1627384 5714024 -1627336 5719640 1627384 5719672 1627608 5714272 1627312 5719640 -1627448 5719792 1629624 5725984 1627608 5714272 1627384 5719672 -1627560 5714152 1627384 5714024 1627608 5714272 1629808 5706208 -1629624 5725984 1629736 5726176 1627608 5714272 1627448 5719792 -1629944 5726576 1629984 5706008 1627608 5714272 1629736 5726176 -1627560 5714152 1627488 5714064 1627384 5714024 1627608 5714272 -1626336 5714040 1626264 5714032 1627312 5719640 1627608 5714272 -1629736 5726176 1629944 5726576 1627608 5714272 1629624 5725984 -1629624 5725984 1627616 5714504 1627448 5719792 1629600 5725952 -1627448 5719792 1627616 5714504 1627608 5714272 1627384 5719672 -1627448 5719792 1627616 5714504 1627384 5719672 1627400 5719704 -1627608 5714272 1627336 5719640 1627384 5719672 1627616 5714504 -1627608 5714272 1627312 5719640 1627336 5719640 1627616 5714504 -1627608 5714272 1626336 5714040 1627312 5719640 1627616 5714504 -1627336 5719640 1627384 5719672 1627616 5714504 1627312 5719640 -1627608 5714272 1627384 5714024 1626336 5714040 1627616 5714504 -1626336 5714040 1627312 5719640 1627616 5714504 1627384 5714024 -1627608 5714272 1627560 5714152 1627384 5714024 1627616 5714504 -1627384 5714024 1626456 5713624 1626336 5714040 1627616 5714504 -1627312 5719640 1627336 5719640 1627616 5714504 1626336 5714040 -1627384 5719672 1627448 5719792 1627616 5714504 1627336 5719640 -1627608 5714272 1627616 5714504 1629624 5725984 1629736 5726176 -1627616 5714504 1629736 5726176 1627608 5714272 1627384 5714024 -1627616 5714504 1627448 5719792 1629624 5725984 1629736 5726176 -1627448 5719792 1629624 5725984 1627616 5714504 1627384 5719672 -1626336 5714040 1626264 5714032 1627312 5719640 1627616 5714504 -1627608 5714272 1627616 5714504 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1627616 5714504 -1627616 5714504 1629624 5725984 1629736 5726176 1629944 5726576 -1627608 5714272 1627384 5714024 1627616 5714504 1629944 5726576 -1627608 5714272 1627616 5714504 1629944 5726576 1629984 5706008 -1627608 5714272 1627616 5714504 1629984 5706008 1629904 5706120 -1627608 5714272 1627384 5714024 1627616 5714504 1629984 5706008 -1629944 5726576 1630064 5705848 1629984 5706008 1627616 5714504 -1627616 5714504 1629736 5726176 1629944 5726576 1629984 5706008 -1629624 5725984 1627640 5714808 1627448 5719792 1629600 5725952 -1627616 5714504 1627640 5714808 1629624 5725984 1629736 5726176 -1627616 5714504 1627640 5714808 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1627640 5714808 -1627640 5714808 1627448 5719792 1629624 5725984 1629736 5726176 -1627640 5714808 1629624 5725984 1629736 5726176 1629944 5726576 -1627616 5714504 1627448 5719792 1627640 5714808 1629944 5726576 -1627448 5719792 1627640 5714808 1627616 5714504 1627384 5719672 -1627448 5719792 1627640 5714808 1627384 5719672 1627400 5719704 -1627616 5714504 1627336 5719640 1627384 5719672 1627640 5714808 -1627616 5714504 1627312 5719640 1627336 5719640 1627640 5714808 -1627616 5714504 1626336 5714040 1627312 5719640 1627640 5714808 -1627616 5714504 1627384 5714024 1626336 5714040 1627640 5714808 -1627312 5719640 1627336 5719640 1627640 5714808 1626336 5714040 -1627336 5719640 1627384 5719672 1627640 5714808 1627312 5719640 -1627384 5719672 1627448 5719792 1627640 5714808 1627336 5719640 -1627448 5719792 1629624 5725984 1627640 5714808 1627384 5719672 -1627640 5714808 1629944 5726576 1627616 5714504 1626336 5714040 -1626336 5714040 1626264 5714032 1627312 5719640 1627640 5714808 -1627312 5719640 1627336 5719640 1627640 5714808 1626264 5714032 -1626336 5714040 1626264 5714032 1627640 5714808 1627616 5714504 -1626264 5714032 1627280 5719664 1627312 5719640 1627640 5714808 -1627616 5714504 1627640 5714808 1629944 5726576 1629984 5706008 -1627640 5714808 1629736 5726176 1629944 5726576 1629984 5706008 -1627616 5714504 1627640 5714808 1629984 5706008 1627608 5714272 -1629984 5706008 1629904 5706120 1627608 5714272 1627640 5714808 -1627616 5714504 1626336 5714040 1627640 5714808 1627608 5714272 -1629944 5726576 1630064 5705848 1629984 5706008 1627640 5714808 -1629944 5726576 1630096 5705696 1630064 5705848 1627640 5714808 -1629944 5726576 1630064 5705848 1627640 5714808 1629736 5726176 -1627640 5714808 1630064 5705848 1629984 5706008 1627608 5714272 -1630064 5705848 1627704 5715064 1629944 5726576 1630096 5705696 -1629944 5726576 1627704 5715064 1627640 5714808 1629736 5726176 -1629944 5726576 1627704 5715064 1629736 5726176 1629904 5726504 -1629944 5726576 1630064 5705848 1627704 5715064 1629736 5726176 -1627704 5715064 1630064 5705848 1627640 5714808 1629736 5726176 -1627640 5714808 1629624 5725984 1629736 5726176 1627704 5715064 -1629736 5726176 1629944 5726576 1627704 5715064 1629624 5725984 -1627640 5714808 1627448 5719792 1629624 5725984 1627704 5715064 -1627448 5719792 1629600 5725952 1629624 5725984 1627704 5715064 -1627640 5714808 1627384 5719672 1627448 5719792 1627704 5715064 -1627384 5719672 1627400 5719704 1627448 5719792 1627704 5715064 -1627448 5719792 1629624 5725984 1627704 5715064 1627384 5719672 -1627640 5714808 1627336 5719640 1627384 5719672 1627704 5715064 -1627640 5714808 1627312 5719640 1627336 5719640 1627704 5715064 -1627640 5714808 1626264 5714032 1627312 5719640 1627704 5715064 -1627312 5719640 1627336 5719640 1627704 5715064 1626264 5714032 -1627336 5719640 1627384 5719672 1627704 5715064 1627312 5719640 -1627384 5719672 1627448 5719792 1627704 5715064 1627336 5719640 -1627640 5714808 1626264 5714032 1627704 5715064 1630064 5705848 -1629624 5725984 1629736 5726176 1627704 5715064 1627448 5719792 -1627640 5714808 1626336 5714040 1626264 5714032 1627704 5715064 -1626264 5714032 1627312 5719640 1627704 5715064 1626336 5714040 -1627640 5714808 1627616 5714504 1626336 5714040 1627704 5715064 -1627640 5714808 1626336 5714040 1627704 5715064 1630064 5705848 -1626264 5714032 1627280 5719664 1627312 5719640 1627704 5715064 -1626264 5714032 1627280 5719664 1627704 5715064 1626336 5714040 -1627312 5719640 1627336 5719640 1627704 5715064 1627280 5719664 -1626264 5714032 1626912 5719928 1627280 5719664 1627704 5715064 -1626912 5719928 1627232 5719704 1627280 5719664 1627704 5715064 -1626264 5714032 1626912 5719928 1627704 5715064 1626336 5714040 -1627280 5719664 1627312 5719640 1627704 5715064 1626912 5719928 -1626264 5714032 1625568 5713848 1626912 5719928 1627704 5715064 -1627640 5714808 1627704 5715064 1630064 5705848 1629984 5706008 -1627704 5715064 1629944 5726576 1630064 5705848 1629984 5706008 -1627640 5714808 1626336 5714040 1627704 5715064 1629984 5706008 -1627640 5714808 1627704 5715064 1629984 5706008 1627608 5714272 -1629984 5706008 1629904 5706120 1627608 5714272 1627704 5715064 -1629904 5706120 1629808 5706208 1627608 5714272 1627704 5715064 -1627640 5714808 1627704 5715064 1627608 5714272 1627616 5714504 -1627640 5714808 1626336 5714040 1627704 5715064 1627616 5714504 -1627704 5715064 1630064 5705848 1629984 5706008 1629904 5706120 -1627608 5714272 1627616 5714504 1627704 5715064 1629904 5706120 -1629624 5725984 1627712 5715168 1627448 5719792 1629600 5725952 -1627448 5719792 1627712 5715168 1627704 5715064 1627384 5719672 -1627712 5715168 1629624 5725984 1627704 5715064 1627384 5719672 -1627448 5719792 1629624 5725984 1627712 5715168 1627384 5719672 -1627448 5719792 1627712 5715168 1627384 5719672 1627400 5719704 -1627704 5715064 1627336 5719640 1627384 5719672 1627712 5715168 -1627704 5715064 1627336 5719640 1627712 5715168 1629624 5725984 -1627384 5719672 1627448 5719792 1627712 5715168 1627336 5719640 -1627704 5715064 1627312 5719640 1627336 5719640 1627712 5715168 -1627704 5715064 1627312 5719640 1627712 5715168 1629624 5725984 -1627704 5715064 1627280 5719664 1627312 5719640 1627712 5715168 -1627704 5715064 1627280 5719664 1627712 5715168 1629624 5725984 -1627312 5719640 1627336 5719640 1627712 5715168 1627280 5719664 -1627336 5719640 1627384 5719672 1627712 5715168 1627312 5719640 -1627704 5715064 1627712 5715168 1629624 5725984 1629736 5726176 -1627704 5715064 1627280 5719664 1627712 5715168 1629736 5726176 -1627712 5715168 1627448 5719792 1629624 5725984 1629736 5726176 -1627704 5715064 1627712 5715168 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1627712 5715168 -1627704 5715064 1627280 5719664 1627712 5715168 1629944 5726576 -1627704 5715064 1627712 5715168 1629944 5726576 1630064 5705848 -1627704 5715064 1627712 5715168 1630064 5705848 1629984 5706008 -1627704 5715064 1627280 5719664 1627712 5715168 1629984 5706008 -1627712 5715168 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630096 5705696 1630064 5705848 1627712 5715168 -1627712 5715168 1629736 5726176 1629944 5726576 1630064 5705848 -1627712 5715168 1629624 5725984 1629736 5726176 1629944 5726576 -1627704 5715064 1626912 5719928 1627280 5719664 1627712 5715168 -1626912 5719928 1627232 5719704 1627280 5719664 1627712 5715168 -1627704 5715064 1626912 5719928 1627712 5715168 1629984 5706008 -1627280 5719664 1627312 5719640 1627712 5715168 1626912 5719928 -1627704 5715064 1626264 5714032 1626912 5719928 1627712 5715168 -1627704 5715064 1626264 5714032 1627712 5715168 1629984 5706008 -1627704 5715064 1626336 5714040 1626264 5714032 1627712 5715168 -1627704 5715064 1626336 5714040 1627712 5715168 1629984 5706008 -1627704 5715064 1627640 5714808 1626336 5714040 1627712 5715168 -1627704 5715064 1627640 5714808 1627712 5715168 1629984 5706008 -1626336 5714040 1626264 5714032 1627712 5715168 1627640 5714808 -1627640 5714808 1627616 5714504 1626336 5714040 1627712 5715168 -1626912 5719928 1627280 5719664 1627712 5715168 1626264 5714032 -1626264 5714032 1626912 5719928 1627712 5715168 1626336 5714040 -1626264 5714032 1625568 5713848 1626912 5719928 1627712 5715168 -1625568 5713848 1620920 5717216 1626912 5719928 1627712 5715168 -1626264 5714032 1625816 5713840 1625568 5713848 1627712 5715168 -1626912 5719928 1627280 5719664 1627712 5715168 1625568 5713848 -1626264 5714032 1625568 5713848 1627712 5715168 1626336 5714040 -1627704 5715064 1627712 5715168 1629984 5706008 1629904 5706120 -1626912 5719928 1627680 5715232 1625568 5713848 1620920 5717216 -1627712 5715168 1627680 5715232 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1627680 5715232 -1627712 5715168 1625568 5713848 1627680 5715232 1627280 5719664 -1627680 5715232 1625568 5713848 1626912 5719928 1627280 5719664 -1627712 5715168 1627680 5715232 1627280 5719664 1627312 5719640 -1627712 5715168 1625568 5713848 1627680 5715232 1627312 5719640 -1627712 5715168 1627680 5715232 1627312 5719640 1627336 5719640 -1627712 5715168 1625568 5713848 1627680 5715232 1627336 5719640 -1627680 5715232 1627280 5719664 1627312 5719640 1627336 5719640 -1627712 5715168 1627680 5715232 1627336 5719640 1627384 5719672 -1627712 5715168 1625568 5713848 1627680 5715232 1627384 5719672 -1627712 5715168 1627680 5715232 1627384 5719672 1627448 5719792 -1627712 5715168 1625568 5713848 1627680 5715232 1627448 5719792 -1627712 5715168 1627680 5715232 1627448 5719792 1629624 5725984 -1627384 5719672 1627400 5719704 1627448 5719792 1627680 5715232 -1627680 5715232 1627312 5719640 1627336 5719640 1627384 5719672 -1627680 5715232 1627336 5719640 1627384 5719672 1627448 5719792 -1627680 5715232 1626912 5719928 1627280 5719664 1627312 5719640 -1625568 5713848 1627680 5715232 1627712 5715168 1626264 5714032 -1627680 5715232 1627448 5719792 1627712 5715168 1626264 5714032 -1625568 5713848 1626912 5719928 1627680 5715232 1626264 5714032 -1625568 5713848 1627680 5715232 1626264 5714032 1625816 5713840 -1627712 5715168 1626336 5714040 1626264 5714032 1627680 5715232 -1627712 5715168 1626336 5714040 1627680 5715232 1627448 5719792 -1627712 5715168 1627640 5714808 1626336 5714040 1627680 5715232 -1627712 5715168 1627640 5714808 1627680 5715232 1627448 5719792 -1627640 5714808 1627616 5714504 1626336 5714040 1627680 5715232 -1627712 5715168 1627704 5715064 1627640 5714808 1627680 5715232 -1627712 5715168 1627704 5715064 1627680 5715232 1627448 5719792 -1627640 5714808 1626336 5714040 1627680 5715232 1627704 5715064 -1626336 5714040 1626264 5714032 1627680 5715232 1627640 5714808 -1626264 5714032 1625568 5713848 1627680 5715232 1626336 5714040 -1627680 5715232 1627560 5715304 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1627560 5715304 -1627680 5715232 1625568 5713848 1627560 5715304 1627280 5719664 -1625568 5713848 1627560 5715304 1627680 5715232 1626264 5714032 -1627560 5715304 1627280 5719664 1627680 5715232 1626264 5714032 -1627560 5715304 1625568 5713848 1626912 5719928 1627280 5719664 -1625568 5713848 1626912 5719928 1627560 5715304 1626264 5714032 -1626912 5719928 1627560 5715304 1625568 5713848 1620920 5717216 -1625568 5713848 1627560 5715304 1626264 5714032 1625816 5713840 -1627680 5715232 1627560 5715304 1627280 5719664 1627312 5719640 -1627560 5715304 1626912 5719928 1627280 5719664 1627312 5719640 -1627680 5715232 1626264 5714032 1627560 5715304 1627312 5719640 -1627680 5715232 1627560 5715304 1627312 5719640 1627336 5719640 -1627680 5715232 1626264 5714032 1627560 5715304 1627336 5719640 -1627680 5715232 1627560 5715304 1627336 5719640 1627384 5719672 -1627680 5715232 1626264 5714032 1627560 5715304 1627384 5719672 -1627560 5715304 1627312 5719640 1627336 5719640 1627384 5719672 -1627680 5715232 1627560 5715304 1627384 5719672 1627448 5719792 -1627560 5715304 1627280 5719664 1627312 5719640 1627336 5719640 -1627680 5715232 1626336 5714040 1626264 5714032 1627560 5715304 -1627680 5715232 1626336 5714040 1627560 5715304 1627384 5719672 -1626264 5714032 1625568 5713848 1627560 5715304 1626336 5714040 -1627680 5715232 1627640 5714808 1626336 5714040 1627560 5715304 -1627680 5715232 1627640 5714808 1627560 5715304 1627384 5719672 -1627680 5715232 1627704 5715064 1627640 5714808 1627560 5715304 -1627680 5715232 1627704 5715064 1627560 5715304 1627384 5719672 -1627640 5714808 1627616 5714504 1626336 5714040 1627560 5715304 -1627680 5715232 1627712 5715168 1627704 5715064 1627560 5715304 -1627640 5714808 1626336 5714040 1627560 5715304 1627704 5715064 -1626336 5714040 1626264 5714032 1627560 5715304 1627640 5714808 -1627560 5715304 1627400 5715336 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1627400 5715336 -1627560 5715304 1627400 5715336 1627280 5719664 1627312 5719640 -1627400 5715336 1626912 5719928 1627280 5719664 1627312 5719640 -1627560 5715304 1625568 5713848 1627400 5715336 1627312 5719640 -1625568 5713848 1627400 5715336 1627560 5715304 1626264 5714032 -1627560 5715304 1626336 5714040 1626264 5714032 1627400 5715336 -1627400 5715336 1627312 5719640 1627560 5715304 1626336 5714040 -1626264 5714032 1625568 5713848 1627400 5715336 1626336 5714040 -1627400 5715336 1625568 5713848 1626912 5719928 1627280 5719664 -1625568 5713848 1626912 5719928 1627400 5715336 1626264 5714032 -1626912 5719928 1627400 5715336 1625568 5713848 1620920 5717216 -1626912 5719928 1627280 5719664 1627400 5715336 1620920 5717216 -1627400 5715336 1626264 5714032 1625568 5713848 1620920 5717216 -1625568 5713848 1620928 5717008 1620920 5717216 1627400 5715336 -1625568 5713848 1620928 5717008 1627400 5715336 1626264 5714032 -1626912 5719928 1627400 5715336 1620920 5717216 1626864 5719976 -1625568 5713848 1624848 5713680 1620928 5717008 1627400 5715336 -1625568 5713848 1624848 5713680 1627400 5715336 1626264 5714032 -1620928 5717008 1620920 5717216 1627400 5715336 1624848 5713680 -1620920 5717216 1626912 5719928 1627400 5715336 1620928 5717008 -1625568 5713848 1627400 5715336 1626264 5714032 1625816 5713840 -1627560 5715304 1627400 5715336 1627312 5719640 1627336 5719640 -1627400 5715336 1627280 5719664 1627312 5719640 1627336 5719640 -1627560 5715304 1626336 5714040 1627400 5715336 1627336 5719640 -1627560 5715304 1627400 5715336 1627336 5719640 1627384 5719672 -1627560 5715304 1627640 5714808 1626336 5714040 1627400 5715336 -1626336 5714040 1626264 5714032 1627400 5715336 1627640 5714808 -1627560 5715304 1627640 5714808 1627400 5715336 1627336 5719640 -1627640 5714808 1627616 5714504 1626336 5714040 1627400 5715336 -1627560 5715304 1627704 5715064 1627640 5714808 1627400 5715336 -1627560 5715304 1627704 5715064 1627400 5715336 1627336 5719640 -1627560 5715304 1627680 5715232 1627704 5715064 1627400 5715336 -1627640 5714808 1626336 5714040 1627400 5715336 1627704 5715064 -1625568 5713848 1624976 5713680 1624848 5713680 1627400 5715336 -1624848 5713680 1620896 5716896 1620928 5717008 1627400 5715336 -1627400 5715336 1627312 5715320 1620928 5717008 1620920 5717216 -1627400 5715336 1624848 5713680 1627312 5715320 1620920 5717216 -1627312 5715320 1624848 5713680 1620928 5717008 1620920 5717216 -1624848 5713680 1627312 5715320 1627400 5715336 1625568 5713848 -1627312 5715320 1620920 5717216 1627400 5715336 1625568 5713848 -1627400 5715336 1626264 5714032 1625568 5713848 1627312 5715320 -1627400 5715336 1626336 5714040 1626264 5714032 1627312 5715320 -1627400 5715336 1627640 5714808 1626336 5714040 1627312 5715320 -1626336 5714040 1626264 5714032 1627312 5715320 1627640 5714808 -1627400 5715336 1627640 5714808 1627312 5715320 1620920 5717216 -1626264 5714032 1625568 5713848 1627312 5715320 1626336 5714040 -1624848 5713680 1620928 5717008 1627312 5715320 1625568 5713848 -1625568 5713848 1624848 5713680 1627312 5715320 1626264 5714032 -1627640 5714808 1627616 5714504 1626336 5714040 1627312 5715320 -1627616 5714504 1627384 5714024 1626336 5714040 1627312 5715320 -1627640 5714808 1627616 5714504 1627312 5715320 1627400 5715336 -1626336 5714040 1626264 5714032 1627312 5715320 1627616 5714504 -1627400 5715336 1627312 5715320 1620920 5717216 1626912 5719928 -1627400 5715336 1627312 5715320 1626912 5719928 1627280 5719664 -1626912 5719928 1627232 5719704 1627280 5719664 1627312 5715320 -1627400 5715336 1627312 5715320 1627280 5719664 1627312 5719640 -1627400 5715336 1627312 5715320 1627312 5719640 1627336 5719640 -1627312 5715320 1626912 5719928 1627280 5719664 1627312 5719640 -1627400 5715336 1627640 5714808 1627312 5715320 1627312 5719640 -1627312 5715320 1620928 5717008 1620920 5717216 1626912 5719928 -1620920 5717216 1626864 5719976 1626912 5719928 1627312 5715320 -1627312 5715320 1620920 5717216 1626912 5719928 1627280 5719664 -1626264 5714032 1625816 5713840 1625568 5713848 1627312 5715320 -1627400 5715336 1627704 5715064 1627640 5714808 1627312 5715320 -1627640 5714808 1627616 5714504 1627312 5715320 1627704 5715064 -1627400 5715336 1627704 5715064 1627312 5715320 1627312 5719640 -1627400 5715336 1627560 5715304 1627704 5715064 1627312 5715320 -1624848 5713680 1627312 5715320 1625568 5713848 1624976 5713680 -1620928 5717008 1627312 5715320 1624848 5713680 1620896 5716896 -1626264 5714032 1627072 5715088 1627312 5715320 1626336 5714040 -1627312 5715320 1627616 5714504 1626336 5714040 1627072 5715088 -1627616 5714504 1627384 5714024 1626336 5714040 1627072 5715088 -1627616 5714504 1627384 5714024 1627072 5715088 1627312 5715320 -1626336 5714040 1626264 5714032 1627072 5715088 1627384 5714024 -1627072 5715088 1625568 5713848 1627312 5715320 1627616 5714504 -1626264 5714032 1625568 5713848 1627072 5715088 1626336 5714040 -1627312 5715320 1627072 5715088 1625568 5713848 1624848 5713680 -1627312 5715320 1627616 5714504 1627072 5715088 1624848 5713680 -1627312 5715320 1627072 5715088 1624848 5713680 1620928 5717008 -1627312 5715320 1627072 5715088 1620928 5717008 1620920 5717216 -1627312 5715320 1627616 5714504 1627072 5715088 1620920 5717216 -1627072 5715088 1624848 5713680 1620928 5717008 1620920 5717216 -1627072 5715088 1626264 5714032 1625568 5713848 1624848 5713680 -1627312 5715320 1627072 5715088 1620920 5717216 1626912 5719928 -1627072 5715088 1620928 5717008 1620920 5717216 1626912 5719928 -1627312 5715320 1627616 5714504 1627072 5715088 1626912 5719928 -1620920 5717216 1626864 5719976 1626912 5719928 1627072 5715088 -1627072 5715088 1625568 5713848 1624848 5713680 1620928 5717008 -1627384 5714024 1626456 5713624 1626336 5714040 1627072 5715088 -1627616 5714504 1627608 5714272 1627384 5714024 1627072 5715088 -1627312 5715320 1627640 5714808 1627616 5714504 1627072 5715088 -1627312 5715320 1627704 5715064 1627640 5714808 1627072 5715088 -1627616 5714504 1627384 5714024 1627072 5715088 1627640 5714808 -1627312 5715320 1627640 5714808 1627072 5715088 1626912 5719928 -1627312 5715320 1627072 5715088 1626912 5719928 1627280 5719664 -1625568 5713848 1627072 5715088 1626264 5714032 1625816 5713840 -1625568 5713848 1624976 5713680 1624848 5713680 1627072 5715088 -1624848 5713680 1620896 5716896 1620928 5717008 1627072 5715088 -1627384 5714024 1627064 5715072 1627072 5715088 1627616 5714504 -1627072 5715088 1627640 5714808 1627616 5714504 1627064 5715072 -1627616 5714504 1627384 5714024 1627064 5715072 1627640 5714808 -1627072 5715088 1627064 5715072 1626336 5714040 1626264 5714032 -1627064 5715072 1626264 5714032 1627072 5715088 1627640 5714808 -1627072 5715088 1627064 5715072 1626264 5714032 1625568 5713848 -1627064 5715072 1626336 5714040 1626264 5714032 1625568 5713848 -1627072 5715088 1627064 5715072 1625568 5713848 1624848 5713680 -1627072 5715088 1627640 5714808 1627064 5715072 1625568 5713848 -1627064 5715072 1627384 5714024 1626336 5714040 1626264 5714032 -1627384 5714024 1626336 5714040 1627064 5715072 1627616 5714504 -1626336 5714040 1627064 5715072 1627384 5714024 1626456 5713624 -1627384 5714024 1627064 5715072 1627616 5714504 1627608 5714272 -1627072 5715088 1627312 5715320 1627640 5714808 1627064 5715072 -1626264 5714032 1625816 5713840 1625568 5713848 1627064 5715072 -1626264 5714032 1626744 5714808 1627064 5715072 1626336 5714040 -1627064 5715072 1626744 5714808 1625568 5713848 1627072 5715088 -1625568 5713848 1624848 5713680 1627072 5715088 1626744 5714808 -1627072 5715088 1627064 5715072 1626744 5714808 1624848 5713680 -1627064 5715072 1627384 5714024 1626336 5714040 1626744 5714808 -1626336 5714040 1626264 5714032 1626744 5714808 1627384 5714024 -1626744 5714808 1627072 5715088 1627064 5715072 1627384 5714024 -1627064 5715072 1627616 5714504 1627384 5714024 1626744 5714808 -1627064 5715072 1627640 5714808 1627616 5714504 1626744 5714808 -1627384 5714024 1626336 5714040 1626744 5714808 1627616 5714504 -1627064 5715072 1627616 5714504 1626744 5714808 1627072 5715088 -1626744 5714808 1626264 5714032 1625568 5713848 1624848 5713680 -1626264 5714032 1625568 5713848 1626744 5714808 1626336 5714040 -1624848 5713680 1620928 5717008 1627072 5715088 1626744 5714808 -1620928 5717008 1620920 5717216 1627072 5715088 1626744 5714808 -1620920 5717216 1626912 5719928 1627072 5715088 1626744 5714808 -1620920 5717216 1626912 5719928 1626744 5714808 1620928 5717008 -1624848 5713680 1620928 5717008 1626744 5714808 1625568 5713848 -1627072 5715088 1627064 5715072 1626744 5714808 1626912 5719928 -1626912 5719928 1627312 5715320 1627072 5715088 1626744 5714808 -1620920 5717216 1626864 5719976 1626912 5719928 1626744 5714808 -1620928 5717008 1620920 5717216 1626744 5714808 1624848 5713680 -1627384 5714024 1626456 5713624 1626336 5714040 1626744 5714808 -1627616 5714504 1627608 5714272 1627384 5714024 1626744 5714808 -1625568 5713848 1626744 5714808 1626264 5714032 1625816 5713840 -1625568 5713848 1624976 5713680 1624848 5713680 1626744 5714808 -1624848 5713680 1620896 5716896 1620928 5717008 1626744 5714808 -1626744 5714808 1626600 5714640 1625568 5713848 1624848 5713680 -1626744 5714808 1626600 5714640 1624848 5713680 1620928 5717008 -1626744 5714808 1626264 5714032 1626600 5714640 1624848 5713680 -1626264 5714032 1626600 5714640 1626744 5714808 1626336 5714040 -1626744 5714808 1627384 5714024 1626336 5714040 1626600 5714640 -1626744 5714808 1627616 5714504 1627384 5714024 1626600 5714640 -1626600 5714640 1624848 5713680 1626744 5714808 1627384 5714024 -1626336 5714040 1626264 5714032 1626600 5714640 1627384 5714024 -1626600 5714640 1626264 5714032 1625568 5713848 1624848 5713680 -1626264 5714032 1625568 5713848 1626600 5714640 1626336 5714040 -1627384 5714024 1626456 5713624 1626336 5714040 1626600 5714640 -1625568 5713848 1626600 5714640 1626264 5714032 1625816 5713840 -1625568 5713848 1624976 5713680 1624848 5713680 1626600 5714640 -1627384 5714024 1626552 5714520 1626600 5714640 1626744 5714808 -1626600 5714640 1626552 5714520 1626336 5714040 1626264 5714032 -1626600 5714640 1627384 5714024 1626552 5714520 1626264 5714032 -1626600 5714640 1626552 5714520 1626264 5714032 1625568 5713848 -1626552 5714520 1626336 5714040 1626264 5714032 1625568 5713848 -1626600 5714640 1626552 5714520 1625568 5713848 1624848 5713680 -1626600 5714640 1627384 5714024 1626552 5714520 1625568 5713848 -1626552 5714520 1627384 5714024 1626336 5714040 1626264 5714032 -1626336 5714040 1626552 5714520 1627384 5714024 1626456 5713624 -1626264 5714032 1625816 5713840 1625568 5713848 1626552 5714520 -1626264 5714032 1625816 5713840 1626552 5714520 1626336 5714040 -1625568 5713848 1626600 5714640 1626552 5714520 1625816 5713840 -1626264 5714032 1625960 5713848 1625816 5713840 1626552 5714520 -1625816 5713840 1625768 5713824 1625568 5713848 1626552 5714520 -1626552 5714520 1626544 5714368 1626336 5714040 1626264 5714032 -1626552 5714520 1626544 5714368 1626264 5714032 1625816 5713840 -1626552 5714520 1627384 5714024 1626544 5714368 1626264 5714032 -1627384 5714024 1626544 5714368 1626552 5714520 1626600 5714640 -1627384 5714024 1626544 5714368 1626600 5714640 1626744 5714808 -1627384 5714024 1626544 5714368 1626744 5714808 1627616 5714504 -1626544 5714368 1626264 5714032 1626552 5714520 1626600 5714640 -1626544 5714368 1626552 5714520 1626600 5714640 1626744 5714808 -1626544 5714368 1627384 5714024 1626336 5714040 1626264 5714032 -1627384 5714024 1626336 5714040 1626544 5714368 1626744 5714808 -1626336 5714040 1626544 5714368 1627384 5714024 1626456 5713624 -1626336 5714040 1626544 5714368 1626456 5713624 1626360 5713736 -1626336 5714040 1626264 5714032 1626544 5714368 1626456 5713624 -1626544 5714368 1626744 5714808 1627384 5714024 1626456 5713624 -1627384 5714024 1627040 5713448 1626456 5713624 1626544 5714368 -1627384 5714024 1626552 5714288 1626544 5714368 1626744 5714808 -1626456 5713624 1626552 5714288 1627384 5714024 1627040 5713448 -1626456 5713624 1626544 5714368 1626552 5714288 1627040 5713448 -1626552 5714288 1626544 5714368 1627384 5714024 1627040 5713448 -1626456 5713624 1626552 5714288 1627040 5713448 1626472 5713592 -1626544 5714368 1626552 5714288 1626456 5713624 1626336 5714040 -1626456 5713624 1626360 5713736 1626336 5714040 1626552 5714288 -1626544 5714368 1626552 5714288 1626336 5714040 1626264 5714032 -1626544 5714368 1627384 5714024 1626552 5714288 1626336 5714040 -1626552 5714288 1627040 5713448 1626456 5713624 1626336 5714040 -1627384 5714024 1627192 5713448 1627040 5713448 1626552 5714288 -1627384 5714024 1626704 5714168 1626552 5714288 1626544 5714368 -1627384 5714024 1626704 5714168 1626544 5714368 1626744 5714808 -1626544 5714368 1626600 5714640 1626744 5714808 1626704 5714168 -1627384 5714024 1626704 5714168 1626744 5714808 1627616 5714504 -1626744 5714808 1627064 5715072 1627616 5714504 1626704 5714168 -1626544 5714368 1626552 5714520 1626600 5714640 1626704 5714168 -1626600 5714640 1626744 5714808 1626704 5714168 1626552 5714520 -1626744 5714808 1627616 5714504 1626704 5714168 1626600 5714640 -1626704 5714168 1627040 5713448 1626552 5714288 1626544 5714368 -1626704 5714168 1626552 5714288 1626544 5714368 1626552 5714520 -1627384 5714024 1627040 5713448 1626704 5714168 1627616 5714504 -1626552 5714288 1626704 5714168 1627040 5713448 1626456 5713624 -1626552 5714288 1626704 5714168 1626456 5713624 1626336 5714040 -1626456 5713624 1626360 5713736 1626336 5714040 1626704 5714168 -1626336 5714040 1626552 5714288 1626704 5714168 1626360 5713736 -1626552 5714288 1626544 5714368 1626704 5714168 1626336 5714040 -1626704 5714168 1627384 5714024 1627040 5713448 1626456 5713624 -1627040 5713448 1626472 5713592 1626456 5713624 1626704 5714168 -1627040 5713448 1626472 5713592 1626704 5714168 1627384 5714024 -1627040 5713448 1626952 5713376 1626472 5713592 1626704 5714168 -1626704 5714168 1626472 5713592 1626456 5713624 1626360 5713736 -1626552 5714288 1626704 5714168 1626336 5714040 1626544 5714368 -1627040 5713448 1626704 5714168 1627384 5714024 1627192 5713448 -1627384 5714024 1626704 5714168 1627616 5714504 1627608 5714272 -1626360 5713736 1626320 5713816 1626336 5714040 1626704 5714168 -1626360 5713736 1626320 5713816 1626704 5714168 1626456 5713624 -1626336 5714040 1626552 5714288 1626704 5714168 1626320 5713816 -1626704 5714168 1626776 5714064 1627040 5713448 1626472 5713592 -1626704 5714168 1627384 5714024 1626776 5714064 1626472 5713592 -1627384 5714024 1626776 5714064 1626704 5714168 1627616 5714504 -1626776 5714064 1627384 5714024 1627040 5713448 1626472 5713592 -1626704 5714168 1626776 5714064 1626472 5713592 1626456 5713624 -1626776 5714064 1627040 5713448 1626472 5713592 1626456 5713624 -1626704 5714168 1627384 5714024 1626776 5714064 1626456 5713624 -1627040 5713448 1626952 5713376 1626472 5713592 1626776 5714064 -1626704 5714168 1626776 5714064 1626456 5713624 1626360 5713736 -1626704 5714168 1626776 5714064 1626360 5713736 1626320 5713816 -1626704 5714168 1627384 5714024 1626776 5714064 1626320 5713816 -1626776 5714064 1626472 5713592 1626456 5713624 1626360 5713736 -1626776 5714064 1626456 5713624 1626360 5713736 1626320 5713816 -1627040 5713448 1626776 5714064 1627384 5714024 1627192 5713448 -1626704 5714168 1626776 5714064 1626320 5713816 1626336 5714040 -1626776 5714064 1626360 5713736 1626320 5713816 1626336 5714040 -1626704 5714168 1626776 5714064 1626336 5714040 1626552 5714288 -1626704 5714168 1627384 5714024 1626776 5714064 1626336 5714040 -1626776 5714064 1626792 5714016 1626472 5713592 1626456 5713624 -1627040 5713448 1626792 5714016 1626776 5714064 1627384 5714024 -1626776 5714064 1627384 5714024 1626792 5714016 1626456 5713624 -1626776 5714064 1626704 5714168 1627384 5714024 1626792 5714016 -1626792 5714016 1627040 5713448 1626472 5713592 1626456 5713624 -1627040 5713448 1626472 5713592 1626792 5714016 1627384 5714024 -1626776 5714064 1626792 5714016 1626456 5713624 1626360 5713736 -1626792 5714016 1626472 5713592 1626456 5713624 1626360 5713736 -1626776 5714064 1627384 5714024 1626792 5714016 1626360 5713736 -1626472 5713592 1626792 5714016 1627040 5713448 1626952 5713376 -1626776 5714064 1626792 5714016 1626360 5713736 1626320 5713816 -1626776 5714064 1626792 5714016 1626320 5713816 1626336 5714040 -1626776 5714064 1627384 5714024 1626792 5714016 1626336 5714040 -1626792 5714016 1626456 5713624 1626360 5713736 1626320 5713816 -1626792 5714016 1626360 5713736 1626320 5713816 1626336 5714040 -1627040 5713448 1626792 5714016 1627384 5714024 1627192 5713448 -1626776 5714064 1626792 5714016 1626336 5714040 1626704 5714168 -1626792 5714016 1626800 5713848 1626472 5713592 1626456 5713624 -1626792 5714016 1626800 5713848 1626456 5713624 1626360 5713736 -1626800 5713848 1626472 5713592 1626456 5713624 1626360 5713736 -1626792 5714016 1627040 5713448 1626800 5713848 1626360 5713736 -1627040 5713448 1626800 5713848 1626792 5714016 1627384 5714024 -1626792 5714016 1626776 5714064 1627384 5714024 1626800 5713848 -1626800 5713848 1626360 5713736 1626792 5714016 1627384 5714024 -1626800 5713848 1627040 5713448 1626472 5713592 1626456 5713624 -1627040 5713448 1626472 5713592 1626800 5713848 1627384 5714024 -1626792 5714016 1626800 5713848 1626360 5713736 1626320 5713816 -1626800 5713848 1626456 5713624 1626360 5713736 1626320 5713816 -1626792 5714016 1627384 5714024 1626800 5713848 1626320 5713816 -1626472 5713592 1626800 5713848 1627040 5713448 1626952 5713376 -1626472 5713592 1626456 5713624 1626800 5713848 1626952 5713376 -1626800 5713848 1627384 5714024 1627040 5713448 1626952 5713376 -1626792 5714016 1626800 5713848 1626320 5713816 1626336 5714040 -1626792 5714016 1626800 5713848 1626336 5714040 1626776 5714064 -1626792 5714016 1627384 5714024 1626800 5713848 1626336 5714040 -1626800 5713848 1626360 5713736 1626320 5713816 1626336 5714040 -1627040 5713448 1626800 5713848 1627384 5714024 1627192 5713448 -1626800 5713848 1626792 5714016 1627384 5714024 1627192 5713448 -1627040 5713448 1626952 5713376 1626800 5713848 1627192 5713448 -1627384 5714024 1627224 5713424 1627192 5713448 1626800 5713848 -1626472 5713592 1626800 5713848 1626952 5713376 1626496 5713456 -1627384 5714024 1626848 5713816 1626800 5713848 1626792 5714016 -1627384 5714024 1626848 5713816 1626792 5714016 1626776 5714064 -1626848 5713816 1627192 5713448 1626800 5713848 1626792 5714016 -1627384 5714024 1627192 5713448 1626848 5713816 1626792 5714016 -1627192 5713448 1626848 5713816 1627384 5714024 1627224 5713424 -1626800 5713848 1626848 5713816 1627192 5713448 1627040 5713448 -1626800 5713848 1626792 5714016 1626848 5713816 1627040 5713448 -1626800 5713848 1626848 5713816 1627040 5713448 1626952 5713376 -1626800 5713848 1626792 5714016 1626848 5713816 1626952 5713376 -1626848 5713816 1627384 5714024 1627192 5713448 1627040 5713448 -1626800 5713848 1626848 5713816 1626952 5713376 1626472 5713592 -1626800 5713848 1626848 5713816 1626472 5713592 1626456 5713624 -1626800 5713848 1626792 5714016 1626848 5713816 1626472 5713592 -1626848 5713816 1627040 5713448 1626952 5713376 1626472 5713592 -1626848 5713816 1627192 5713448 1627040 5713448 1626952 5713376 -1626952 5713376 1626496 5713456 1626472 5713592 1626848 5713816 -1626952 5713376 1626496 5713456 1626848 5713816 1627040 5713448 -1626952 5713376 1626880 5713288 1626496 5713456 1626848 5713816 -1626472 5713592 1626800 5713848 1626848 5713816 1626496 5713456 -1626848 5713816 1626880 5713808 1627192 5713448 1627040 5713448 -1626848 5713816 1627384 5714024 1626880 5713808 1627040 5713448 -1627384 5714024 1626880 5713808 1626848 5713816 1626792 5714016 -1627384 5714024 1626880 5713808 1626792 5714016 1626776 5714064 -1626848 5713816 1626800 5713848 1626792 5714016 1626880 5713808 -1626880 5713808 1627040 5713448 1626848 5713816 1626792 5714016 -1626880 5713808 1627384 5714024 1627192 5713448 1627040 5713448 -1627384 5714024 1627192 5713448 1626880 5713808 1626792 5714016 -1627192 5713448 1626880 5713808 1627384 5714024 1627224 5713424 -1626848 5713816 1626880 5713808 1627040 5713448 1626952 5713376 -1626848 5713816 1626880 5713808 1626952 5713376 1626496 5713456 -1626880 5713808 1627192 5713448 1627040 5713448 1626952 5713376 -1626848 5713816 1626792 5714016 1626880 5713808 1626952 5713376 -1626880 5713808 1626912 5713816 1627192 5713448 1627040 5713448 -1626880 5713808 1626912 5713816 1627040 5713448 1626952 5713376 -1626880 5713808 1627384 5714024 1626912 5713816 1627040 5713448 -1627384 5714024 1626912 5713816 1626880 5713808 1626792 5714016 -1627384 5714024 1626912 5713816 1626792 5714016 1626776 5714064 -1626880 5713808 1626848 5713816 1626792 5714016 1626912 5713816 -1626848 5713816 1626800 5713848 1626792 5714016 1626912 5713816 -1626848 5713816 1626800 5713848 1626912 5713816 1626880 5713808 -1626912 5713816 1627040 5713448 1626880 5713808 1626848 5713816 -1626792 5714016 1627384 5714024 1626912 5713816 1626800 5713848 -1626912 5713816 1627384 5714024 1627192 5713448 1627040 5713448 -1627384 5714024 1627192 5713448 1626912 5713816 1626792 5714016 -1627192 5713448 1626912 5713816 1627384 5714024 1627224 5713424 -1627384 5714024 1626992 5713872 1626792 5714016 1626776 5714064 -1627384 5714024 1626992 5713872 1626776 5714064 1626704 5714168 -1626792 5714016 1626992 5713872 1626912 5713816 1626800 5713848 -1626912 5713816 1626992 5713872 1627384 5714024 1627192 5713448 -1626912 5713816 1626992 5713872 1627192 5713448 1627040 5713448 -1626912 5713816 1626992 5713872 1627040 5713448 1626880 5713808 -1626912 5713816 1626792 5714016 1626992 5713872 1627040 5713448 -1626992 5713872 1627384 5714024 1627192 5713448 1627040 5713448 -1627384 5714024 1627192 5713448 1626992 5713872 1626776 5714064 -1626992 5713872 1626912 5713816 1626792 5714016 1626776 5714064 -1627384 5714024 1627224 5713424 1627192 5713448 1626992 5713872 -1626776 5714064 1627080 5713952 1626992 5713872 1626792 5714016 -1627384 5714024 1627080 5713952 1626776 5714064 1626704 5714168 -1627384 5714024 1627080 5713952 1626704 5714168 1627616 5714504 -1626704 5714168 1626744 5714808 1627616 5714504 1627080 5713952 -1627080 5713952 1626776 5714064 1626704 5714168 1627616 5714504 -1626992 5713872 1627080 5713952 1627384 5714024 1627192 5713448 -1626992 5713872 1627080 5713952 1627192 5713448 1627040 5713448 -1627080 5713952 1627192 5713448 1626992 5713872 1626792 5714016 -1626992 5713872 1626912 5713816 1626792 5714016 1627080 5713952 -1627384 5714024 1627192 5713448 1627080 5713952 1627616 5714504 -1626776 5714064 1626704 5714168 1627080 5713952 1626792 5714016 -1627384 5714024 1627224 5713424 1627192 5713448 1627080 5713952 -1627384 5714024 1627080 5713952 1627616 5714504 1627608 5714272 -1627616 5714504 1627168 5714008 1627080 5713952 1626704 5714168 -1627616 5714504 1627168 5714008 1626704 5714168 1626744 5714808 -1627616 5714504 1627168 5714008 1626744 5714808 1627064 5715072 -1626704 5714168 1626600 5714640 1626744 5714808 1627168 5714008 -1627168 5714008 1627080 5713952 1626704 5714168 1626744 5714808 -1627080 5713952 1626776 5714064 1626704 5714168 1627168 5714008 -1626704 5714168 1626744 5714808 1627168 5714008 1626776 5714064 -1627080 5713952 1627168 5714008 1627384 5714024 1627192 5713448 -1627080 5713952 1627168 5714008 1627192 5713448 1626992 5713872 -1627080 5713952 1626792 5714016 1626776 5714064 1627168 5714008 -1627168 5714008 1627192 5713448 1627080 5713952 1626776 5714064 -1627168 5714008 1627616 5714504 1627384 5714024 1627192 5713448 -1627616 5714504 1627384 5714024 1627168 5714008 1626744 5714808 -1627384 5714024 1627224 5713424 1627192 5713448 1627168 5714008 -1627384 5714024 1627168 5714008 1627616 5714504 1627608 5714272 -1627384 5714024 1627192 5713448 1627168 5714008 1627608 5714272 -1627168 5714008 1626744 5714808 1627616 5714504 1627608 5714272 -1627384 5714024 1627168 5714008 1627608 5714272 1627560 5714152 -1627608 5714272 1628296 5711888 1629904 5706120 1629808 5706208 -1628296 5711888 1627704 5715064 1629904 5706120 1629808 5706208 -1627608 5714272 1627704 5715064 1628296 5711888 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1628296 5711888 -1627608 5714272 1628296 5711888 1629808 5706208 1627560 5714152 -1627608 5714272 1627704 5715064 1628296 5711888 1627560 5714152 -1629808 5706208 1627184 5713128 1627560 5714152 1628296 5711888 -1629808 5706208 1627136 5713048 1627184 5713128 1628296 5711888 -1629808 5706208 1627328 5706984 1627136 5713048 1628296 5711888 -1627328 5706984 1627064 5713000 1627136 5713048 1628296 5711888 -1627328 5706984 1627064 5713000 1628296 5711888 1629808 5706208 -1627136 5713048 1627184 5713128 1628296 5711888 1627064 5713000 -1629808 5706208 1627368 5706952 1627328 5706984 1628296 5711888 -1627328 5706984 1627064 5713000 1628296 5711888 1627368 5706952 -1627184 5713128 1627192 5713168 1627560 5714152 1628296 5711888 -1627192 5713168 1627216 5713328 1627560 5714152 1628296 5711888 -1627192 5713168 1627176 5713224 1627216 5713328 1628296 5711888 -1627192 5713168 1627216 5713328 1628296 5711888 1627184 5713128 -1627184 5713128 1627192 5713168 1628296 5711888 1627136 5713048 -1627560 5714152 1627608 5714272 1628296 5711888 1627216 5713328 -1628296 5711888 1629904 5706120 1629808 5706208 1627368 5706952 -1629904 5706120 1628296 5711888 1627704 5715064 1629984 5706008 -1629904 5706120 1629808 5706208 1628296 5711888 1629984 5706008 -1628296 5711888 1627608 5714272 1627704 5715064 1629984 5706008 -1629808 5706208 1629752 5706192 1627368 5706952 1628296 5711888 -1627328 5706984 1627296 5706984 1627064 5713000 1628296 5711888 -1627064 5713000 1627136 5713048 1628296 5711888 1627296 5706984 -1627328 5706984 1627296 5706984 1628296 5711888 1627368 5706952 -1627296 5706984 1627024 5713000 1627064 5713000 1628296 5711888 -1627296 5706984 1625232 5712632 1627024 5713000 1628296 5711888 -1627296 5706984 1624664 5712432 1625232 5712632 1628296 5711888 -1627064 5713000 1627136 5713048 1628296 5711888 1627024 5713000 -1625232 5712632 1625552 5712856 1627024 5713000 1628296 5711888 -1627024 5713000 1627064 5713000 1628296 5711888 1625232 5712632 -1627296 5706984 1625232 5712632 1628296 5711888 1627328 5706984 -1627704 5715064 1627712 5715168 1629984 5706008 1628296 5711888 -1627712 5715168 1630064 5705848 1629984 5706008 1628296 5711888 -1627712 5715168 1629944 5726576 1630064 5705848 1628296 5711888 -1630064 5705848 1629984 5706008 1628296 5711888 1629944 5726576 -1627704 5715064 1627712 5715168 1628296 5711888 1627608 5714272 -1629944 5726576 1630096 5705696 1630064 5705848 1628296 5711888 -1627712 5715168 1629736 5726176 1629944 5726576 1628296 5711888 -1629984 5706008 1629904 5706120 1628296 5711888 1630064 5705848 -1627712 5715168 1629944 5726576 1628296 5711888 1627704 5715064 -1627704 5715064 1628296 5711888 1627608 5714272 1627616 5714504 -1627216 5713328 1627224 5713384 1627560 5714152 1628296 5711888 -1627224 5713384 1627488 5714064 1627560 5714152 1628296 5711888 -1627216 5713328 1627224 5713384 1628296 5711888 1627192 5713168 -1627560 5714152 1627608 5714272 1628296 5711888 1627224 5713384 -1628296 5711888 1628328 5711848 1630064 5705848 1629984 5706008 -1629944 5726576 1628328 5711848 1628296 5711888 1627712 5715168 -1628296 5711888 1627712 5715168 1628328 5711848 1629984 5706008 -1628328 5711848 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628328 5711848 1627712 5715168 -1630064 5705848 1628328 5711848 1629944 5726576 1630096 5705696 -1629944 5726576 1628328 5711848 1627712 5715168 1629736 5726176 -1628296 5711888 1628328 5711848 1629984 5706008 1629904 5706120 -1628328 5711848 1630064 5705848 1629984 5706008 1629904 5706120 -1628296 5711888 1628328 5711848 1629904 5706120 1629808 5706208 -1628296 5711888 1627712 5715168 1628328 5711848 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1628328 5711848 -1628296 5711888 1628328 5711848 1629808 5706208 1627368 5706952 -1628328 5711848 1629904 5706120 1629808 5706208 1627368 5706952 -1628296 5711888 1627712 5715168 1628328 5711848 1627368 5706952 -1628296 5711888 1628328 5711848 1627368 5706952 1627328 5706984 -1628296 5711888 1627712 5715168 1628328 5711848 1627328 5706984 -1628296 5711888 1628328 5711848 1627328 5706984 1627296 5706984 -1628296 5711888 1627712 5715168 1628328 5711848 1627296 5706984 -1628328 5711848 1627368 5706952 1627328 5706984 1627296 5706984 -1628328 5711848 1629808 5706208 1627368 5706952 1627328 5706984 -1628328 5711848 1629984 5706008 1629904 5706120 1629808 5706208 -1629808 5706208 1629752 5706192 1627368 5706952 1628328 5711848 -1628296 5711888 1628328 5711848 1627296 5706984 1625232 5712632 -1628296 5711888 1628328 5711848 1625232 5712632 1627024 5713000 -1628296 5711888 1627712 5715168 1628328 5711848 1625232 5712632 -1627296 5706984 1624664 5712432 1625232 5712632 1628328 5711848 -1628328 5711848 1627328 5706984 1627296 5706984 1625232 5712632 -1628296 5711888 1627704 5715064 1627712 5715168 1628328 5711848 -1627712 5715168 1629944 5726576 1628328 5711848 1627704 5715064 -1628296 5711888 1627608 5714272 1627704 5715064 1628328 5711848 -1628296 5711888 1627608 5714272 1628328 5711848 1625232 5712632 -1628296 5711888 1627560 5714152 1627608 5714272 1628328 5711848 -1627704 5715064 1627712 5715168 1628328 5711848 1627608 5714272 -1627608 5714272 1627616 5714504 1627704 5715064 1628328 5711848 -1628328 5711848 1628376 5711784 1630064 5705848 1629984 5706008 -1628328 5711848 1628376 5711784 1629984 5706008 1629904 5706120 -1628376 5711784 1630064 5705848 1629984 5706008 1629904 5706120 -1628328 5711848 1629944 5726576 1628376 5711784 1629904 5706120 -1629944 5726576 1628376 5711784 1628328 5711848 1627712 5715168 -1628328 5711848 1627704 5715064 1627712 5715168 1628376 5711784 -1628376 5711784 1629904 5706120 1628328 5711848 1627704 5715064 -1627712 5715168 1629944 5726576 1628376 5711784 1627704 5715064 -1628376 5711784 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628376 5711784 1627712 5715168 -1630064 5705848 1628376 5711784 1629944 5726576 1630096 5705696 -1629944 5726576 1628376 5711784 1627712 5715168 1629736 5726176 -1629944 5726576 1628376 5711784 1629736 5726176 1629904 5726504 -1628376 5711784 1627704 5715064 1627712 5715168 1629736 5726176 -1629944 5726576 1630064 5705848 1628376 5711784 1629736 5726176 -1628328 5711848 1628376 5711784 1629904 5706120 1629808 5706208 -1628376 5711784 1629984 5706008 1629904 5706120 1629808 5706208 -1628328 5711848 1628376 5711784 1629808 5706208 1627368 5706952 -1628328 5711848 1627704 5715064 1628376 5711784 1627368 5706952 -1629904 5706120 1629824 5706192 1629808 5706208 1628376 5711784 -1628328 5711848 1628376 5711784 1627368 5706952 1627328 5706984 -1628376 5711784 1629808 5706208 1627368 5706952 1627328 5706984 -1628328 5711848 1627704 5715064 1628376 5711784 1627328 5706984 -1628328 5711848 1628376 5711784 1627328 5706984 1627296 5706984 -1628328 5711848 1627704 5715064 1628376 5711784 1627296 5706984 -1628328 5711848 1628376 5711784 1627296 5706984 1625232 5712632 -1628328 5711848 1627704 5715064 1628376 5711784 1625232 5712632 -1627296 5706984 1624664 5712432 1625232 5712632 1628376 5711784 -1628376 5711784 1627328 5706984 1627296 5706984 1625232 5712632 -1628376 5711784 1627368 5706952 1627328 5706984 1627296 5706984 -1628376 5711784 1629904 5706120 1629808 5706208 1627368 5706952 -1627712 5715168 1629624 5725984 1629736 5726176 1628376 5711784 -1629808 5706208 1629752 5706192 1627368 5706952 1628376 5711784 -1628328 5711848 1628376 5711784 1625232 5712632 1628296 5711888 -1625232 5712632 1627024 5713000 1628296 5711888 1628376 5711784 -1628328 5711848 1627704 5715064 1628376 5711784 1628296 5711888 -1628376 5711784 1627296 5706984 1625232 5712632 1628296 5711888 -1628328 5711848 1627608 5714272 1627704 5715064 1628376 5711784 -1627704 5715064 1627712 5715168 1628376 5711784 1627608 5714272 -1628328 5711848 1628296 5711888 1627608 5714272 1628376 5711784 -1628328 5711848 1627608 5714272 1628376 5711784 1628296 5711888 -1627608 5714272 1627616 5714504 1627704 5715064 1628376 5711784 -1628376 5711784 1628424 5711744 1630064 5705848 1629984 5706008 -1628376 5711784 1628424 5711744 1629984 5706008 1629904 5706120 -1628376 5711784 1628424 5711744 1629904 5706120 1629808 5706208 -1628424 5711744 1629984 5706008 1629904 5706120 1629808 5706208 -1628424 5711744 1630064 5705848 1629984 5706008 1629904 5706120 -1628376 5711784 1629944 5726576 1628424 5711744 1629808 5706208 -1629944 5726576 1628424 5711744 1628376 5711784 1629736 5726176 -1629944 5726576 1628424 5711744 1629736 5726176 1629904 5726504 -1628424 5711744 1629808 5706208 1628376 5711784 1629736 5726176 -1628424 5711744 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628424 5711744 1629736 5726176 -1630064 5705848 1628424 5711744 1629944 5726576 1630096 5705696 -1629904 5706120 1629824 5706192 1629808 5706208 1628424 5711744 -1628376 5711784 1627712 5715168 1629736 5726176 1628424 5711744 -1628376 5711784 1627704 5715064 1627712 5715168 1628424 5711744 -1628376 5711784 1627608 5714272 1627704 5715064 1628424 5711744 -1627704 5715064 1627712 5715168 1628424 5711744 1627608 5714272 -1628376 5711784 1627608 5714272 1628424 5711744 1629808 5706208 -1629736 5726176 1629944 5726576 1628424 5711744 1627712 5715168 -1627712 5715168 1629736 5726176 1628424 5711744 1627704 5715064 -1628376 5711784 1628424 5711744 1629808 5706208 1627368 5706952 -1628424 5711744 1629904 5706120 1629808 5706208 1627368 5706952 -1628376 5711784 1628424 5711744 1627368 5706952 1627328 5706984 -1628376 5711784 1627608 5714272 1628424 5711744 1627328 5706984 -1628376 5711784 1628424 5711744 1627328 5706984 1627296 5706984 -1628424 5711744 1627368 5706952 1627328 5706984 1627296 5706984 -1628376 5711784 1627608 5714272 1628424 5711744 1627296 5706984 -1628376 5711784 1628424 5711744 1627296 5706984 1625232 5712632 -1628424 5711744 1629808 5706208 1627368 5706952 1627328 5706984 -1627712 5715168 1629624 5725984 1629736 5726176 1628424 5711744 -1629808 5706208 1629752 5706192 1627368 5706952 1628424 5711744 -1628376 5711784 1628328 5711848 1627608 5714272 1628424 5711744 -1627608 5714272 1627704 5715064 1628424 5711744 1628328 5711848 -1628328 5711848 1628296 5711888 1627608 5714272 1628424 5711744 -1627608 5714272 1627704 5715064 1628424 5711744 1628296 5711888 -1628296 5711888 1627560 5714152 1627608 5714272 1628424 5711744 -1628376 5711784 1628328 5711848 1628424 5711744 1627296 5706984 -1628328 5711848 1628296 5711888 1628424 5711744 1628376 5711784 -1627608 5714272 1627616 5714504 1627704 5715064 1628424 5711744 -1628424 5711744 1628440 5711728 1630064 5705848 1629984 5706008 -1628424 5711744 1628440 5711728 1629984 5706008 1629904 5706120 -1628424 5711744 1628440 5711728 1629904 5706120 1629808 5706208 -1628424 5711744 1628440 5711728 1629808 5706208 1627368 5706952 -1628440 5711728 1629904 5706120 1629808 5706208 1627368 5706952 -1628440 5711728 1629984 5706008 1629904 5706120 1629808 5706208 -1628440 5711728 1630064 5705848 1629984 5706008 1629904 5706120 -1628424 5711744 1629944 5726576 1628440 5711728 1627368 5706952 -1629944 5726576 1628440 5711728 1628424 5711744 1629736 5726176 -1629944 5726576 1628440 5711728 1629736 5726176 1629904 5726504 -1628424 5711744 1627712 5715168 1629736 5726176 1628440 5711728 -1628440 5711728 1627368 5706952 1628424 5711744 1627712 5715168 -1629736 5726176 1629944 5726576 1628440 5711728 1627712 5715168 -1628440 5711728 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628440 5711728 1629736 5726176 -1630064 5705848 1628440 5711728 1629944 5726576 1630096 5705696 -1629904 5706120 1629824 5706192 1629808 5706208 1628440 5711728 -1628424 5711744 1627704 5715064 1627712 5715168 1628440 5711728 -1628424 5711744 1627608 5714272 1627704 5715064 1628440 5711728 -1628424 5711744 1628296 5711888 1627608 5714272 1628440 5711728 -1628424 5711744 1628328 5711848 1628296 5711888 1628440 5711728 -1628296 5711888 1627560 5714152 1627608 5714272 1628440 5711728 -1627608 5714272 1627704 5715064 1628440 5711728 1628296 5711888 -1627712 5715168 1629736 5726176 1628440 5711728 1627704 5715064 -1628424 5711744 1628296 5711888 1628440 5711728 1627368 5706952 -1627704 5715064 1627712 5715168 1628440 5711728 1627608 5714272 -1628424 5711744 1628440 5711728 1627368 5706952 1627328 5706984 -1628440 5711728 1629808 5706208 1627368 5706952 1627328 5706984 -1628424 5711744 1628440 5711728 1627328 5706984 1627296 5706984 -1628424 5711744 1628296 5711888 1628440 5711728 1627296 5706984 -1628424 5711744 1628440 5711728 1627296 5706984 1628376 5711784 -1628440 5711728 1627328 5706984 1627296 5706984 1628376 5711784 -1628424 5711744 1628296 5711888 1628440 5711728 1628376 5711784 -1627296 5706984 1625232 5712632 1628376 5711784 1628440 5711728 -1628440 5711728 1627368 5706952 1627328 5706984 1627296 5706984 -1627712 5715168 1629624 5725984 1629736 5726176 1628440 5711728 -1629808 5706208 1629752 5706192 1627368 5706952 1628440 5711728 -1627608 5714272 1627616 5714504 1627704 5715064 1628440 5711728 -1628440 5711728 1628464 5711736 1630064 5705848 1629984 5706008 -1628440 5711728 1628464 5711736 1629984 5706008 1629904 5706120 -1628440 5711728 1628464 5711736 1629904 5706120 1629808 5706208 -1628440 5711728 1628464 5711736 1629808 5706208 1627368 5706952 -1628464 5711736 1629984 5706008 1629904 5706120 1629808 5706208 -1628464 5711736 1630064 5705848 1629984 5706008 1629904 5706120 -1628440 5711728 1629944 5726576 1628464 5711736 1629808 5706208 -1629944 5726576 1628464 5711736 1628440 5711728 1629736 5726176 -1629944 5726576 1628464 5711736 1629736 5726176 1629904 5726504 -1628440 5711728 1627712 5715168 1629736 5726176 1628464 5711736 -1628440 5711728 1627704 5715064 1627712 5715168 1628464 5711736 -1627712 5715168 1629736 5726176 1628464 5711736 1627704 5715064 -1628464 5711736 1629808 5706208 1628440 5711728 1627704 5715064 -1629736 5726176 1629944 5726576 1628464 5711736 1627712 5715168 -1628464 5711736 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628464 5711736 1629736 5726176 -1630064 5705848 1628464 5711736 1629944 5726576 1630096 5705696 -1629904 5706120 1629824 5706192 1629808 5706208 1628464 5711736 -1628440 5711728 1627608 5714272 1627704 5715064 1628464 5711736 -1628440 5711728 1628296 5711888 1627608 5714272 1628464 5711736 -1628440 5711728 1628424 5711744 1628296 5711888 1628464 5711736 -1628424 5711744 1628328 5711848 1628296 5711888 1628464 5711736 -1628424 5711744 1628328 5711848 1628464 5711736 1628440 5711728 -1628296 5711888 1627560 5714152 1627608 5714272 1628464 5711736 -1628296 5711888 1627608 5714272 1628464 5711736 1628328 5711848 -1627704 5715064 1627712 5715168 1628464 5711736 1627608 5714272 -1628440 5711728 1628424 5711744 1628464 5711736 1629808 5706208 -1627608 5714272 1627704 5715064 1628464 5711736 1628296 5711888 -1627712 5715168 1629624 5725984 1629736 5726176 1628464 5711736 -1628424 5711744 1628376 5711784 1628328 5711848 1628464 5711736 -1628424 5711744 1628376 5711784 1628464 5711736 1628440 5711728 -1628328 5711848 1628296 5711888 1628464 5711736 1628376 5711784 -1627608 5714272 1627616 5714504 1627704 5715064 1628464 5711736 -1628464 5711736 1628488 5711752 1630064 5705848 1629984 5706008 -1628464 5711736 1628488 5711752 1629984 5706008 1629904 5706120 -1628464 5711736 1628488 5711752 1629904 5706120 1629808 5706208 -1628464 5711736 1628488 5711752 1629808 5706208 1628440 5711728 -1628488 5711752 1629984 5706008 1629904 5706120 1629808 5706208 -1628488 5711752 1630064 5705848 1629984 5706008 1629904 5706120 -1628464 5711736 1629944 5726576 1628488 5711752 1629808 5706208 -1629944 5726576 1628488 5711752 1628464 5711736 1629736 5726176 -1629944 5726576 1628488 5711752 1629736 5726176 1629904 5726504 -1628464 5711736 1627712 5715168 1629736 5726176 1628488 5711752 -1628464 5711736 1627704 5715064 1627712 5715168 1628488 5711752 -1628464 5711736 1627608 5714272 1627704 5715064 1628488 5711752 -1627704 5715064 1627712 5715168 1628488 5711752 1627608 5714272 -1627712 5715168 1629736 5726176 1628488 5711752 1627704 5715064 -1628488 5711752 1629808 5706208 1628464 5711736 1627608 5714272 -1629736 5726176 1629944 5726576 1628488 5711752 1627712 5715168 -1628488 5711752 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628488 5711752 1629736 5726176 -1630064 5705848 1628488 5711752 1629944 5726576 1630096 5705696 -1629904 5706120 1629824 5706192 1629808 5706208 1628488 5711752 -1628464 5711736 1628296 5711888 1627608 5714272 1628488 5711752 -1628296 5711888 1627560 5714152 1627608 5714272 1628488 5711752 -1628464 5711736 1628328 5711848 1628296 5711888 1628488 5711752 -1628464 5711736 1628376 5711784 1628328 5711848 1628488 5711752 -1628328 5711848 1628296 5711888 1628488 5711752 1628376 5711784 -1627608 5714272 1627704 5715064 1628488 5711752 1628296 5711888 -1628464 5711736 1628376 5711784 1628488 5711752 1629808 5706208 -1628296 5711888 1627608 5714272 1628488 5711752 1628328 5711848 -1627712 5715168 1629624 5725984 1629736 5726176 1628488 5711752 -1628464 5711736 1628424 5711744 1628376 5711784 1628488 5711752 -1628464 5711736 1628440 5711728 1628424 5711744 1628488 5711752 -1628376 5711784 1628328 5711848 1628488 5711752 1628424 5711744 -1628464 5711736 1628424 5711744 1628488 5711752 1629808 5706208 -1627608 5714272 1627616 5714504 1627704 5715064 1628488 5711752 -1628488 5711752 1628520 5711808 1630064 5705848 1629984 5706008 -1628488 5711752 1628520 5711808 1629984 5706008 1629904 5706120 -1628488 5711752 1628520 5711808 1629904 5706120 1629808 5706208 -1628488 5711752 1628520 5711808 1629808 5706208 1628464 5711736 -1628520 5711808 1629984 5706008 1629904 5706120 1629808 5706208 -1628520 5711808 1630064 5705848 1629984 5706008 1629904 5706120 -1628488 5711752 1629944 5726576 1628520 5711808 1629808 5706208 -1629944 5726576 1628520 5711808 1628488 5711752 1629736 5726176 -1629944 5726576 1628520 5711808 1629736 5726176 1629904 5726504 -1628488 5711752 1627712 5715168 1629736 5726176 1628520 5711808 -1628488 5711752 1627704 5715064 1627712 5715168 1628520 5711808 -1628488 5711752 1627608 5714272 1627704 5715064 1628520 5711808 -1628488 5711752 1628296 5711888 1627608 5714272 1628520 5711808 -1628296 5711888 1627560 5714152 1627608 5714272 1628520 5711808 -1628296 5711888 1627560 5714152 1628520 5711808 1628488 5711752 -1627608 5714272 1627704 5715064 1628520 5711808 1627560 5714152 -1627704 5715064 1627712 5715168 1628520 5711808 1627608 5714272 -1627712 5715168 1629736 5726176 1628520 5711808 1627704 5715064 -1628520 5711808 1629808 5706208 1628488 5711752 1628296 5711888 -1629736 5726176 1629944 5726576 1628520 5711808 1627712 5715168 -1628520 5711808 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628520 5711808 1629736 5726176 -1630064 5705848 1628520 5711808 1629944 5726576 1630096 5705696 -1629904 5706120 1629824 5706192 1629808 5706208 1628520 5711808 -1628296 5711888 1627224 5713384 1627560 5714152 1628520 5711808 -1628488 5711752 1628328 5711848 1628296 5711888 1628520 5711808 -1628488 5711752 1628376 5711784 1628328 5711848 1628520 5711808 -1628488 5711752 1628424 5711744 1628376 5711784 1628520 5711808 -1628376 5711784 1628328 5711848 1628520 5711808 1628424 5711744 -1628296 5711888 1627560 5714152 1628520 5711808 1628328 5711848 -1628488 5711752 1628424 5711744 1628520 5711808 1629808 5706208 -1628328 5711848 1628296 5711888 1628520 5711808 1628376 5711784 -1627712 5715168 1629624 5725984 1629736 5726176 1628520 5711808 -1628488 5711752 1628464 5711736 1628424 5711744 1628520 5711808 -1627608 5714272 1627616 5714504 1627704 5715064 1628520 5711808 -1628520 5711808 1628560 5711888 1630064 5705848 1629984 5706008 -1628520 5711808 1628560 5711888 1629984 5706008 1629904 5706120 -1628520 5711808 1628560 5711888 1629904 5706120 1629808 5706208 -1628520 5711808 1628560 5711888 1629808 5706208 1628488 5711752 -1628560 5711888 1629984 5706008 1629904 5706120 1629808 5706208 -1628560 5711888 1630064 5705848 1629984 5706008 1629904 5706120 -1628520 5711808 1629944 5726576 1628560 5711888 1629808 5706208 -1629944 5726576 1628560 5711888 1628520 5711808 1629736 5726176 -1629944 5726576 1628560 5711888 1629736 5726176 1629904 5726504 -1628520 5711808 1627712 5715168 1629736 5726176 1628560 5711888 -1628520 5711808 1627704 5715064 1627712 5715168 1628560 5711888 -1628520 5711808 1627608 5714272 1627704 5715064 1628560 5711888 -1628520 5711808 1627560 5714152 1627608 5714272 1628560 5711888 -1628520 5711808 1628296 5711888 1627560 5714152 1628560 5711888 -1628520 5711808 1628328 5711848 1628296 5711888 1628560 5711888 -1628296 5711888 1627560 5714152 1628560 5711888 1628328 5711848 -1627560 5714152 1627608 5714272 1628560 5711888 1628296 5711888 -1627608 5714272 1627704 5715064 1628560 5711888 1627560 5714152 -1627704 5715064 1627712 5715168 1628560 5711888 1627608 5714272 -1627712 5715168 1629736 5726176 1628560 5711888 1627704 5715064 -1628560 5711888 1629808 5706208 1628520 5711808 1628328 5711848 -1629736 5726176 1629944 5726576 1628560 5711888 1627712 5715168 -1628560 5711888 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628560 5711888 1629736 5726176 -1630064 5705848 1628560 5711888 1629944 5726576 1630096 5705696 -1629904 5706120 1629824 5706192 1629808 5706208 1628560 5711888 -1628296 5711888 1627224 5713384 1627560 5714152 1628560 5711888 -1628296 5711888 1627224 5713384 1628560 5711888 1628328 5711848 -1627560 5714152 1627608 5714272 1628560 5711888 1627224 5713384 -1627224 5713384 1627488 5714064 1627560 5714152 1628560 5711888 -1628520 5711808 1628376 5711784 1628328 5711848 1628560 5711888 -1627712 5715168 1629624 5725984 1629736 5726176 1628560 5711888 -1627608 5714272 1627616 5714504 1627704 5715064 1628560 5711888 -1628296 5711888 1627216 5713328 1627224 5713384 1628560 5711888 -1628296 5711888 1627216 5713328 1628560 5711888 1628328 5711848 -1628296 5711888 1627192 5713168 1627216 5713328 1628560 5711888 -1627224 5713384 1627560 5714152 1628560 5711888 1627216 5713328 -1628560 5711888 1628608 5711984 1630064 5705848 1629984 5706008 -1628560 5711888 1628608 5711984 1629984 5706008 1629904 5706120 -1628560 5711888 1628608 5711984 1629904 5706120 1629808 5706208 -1628560 5711888 1628608 5711984 1629808 5706208 1628520 5711808 -1628608 5711984 1629984 5706008 1629904 5706120 1629808 5706208 -1628608 5711984 1630064 5705848 1629984 5706008 1629904 5706120 -1628560 5711888 1629944 5726576 1628608 5711984 1629808 5706208 -1629944 5726576 1628608 5711984 1628560 5711888 1629736 5726176 -1629944 5726576 1628608 5711984 1629736 5726176 1629904 5726504 -1628560 5711888 1627712 5715168 1629736 5726176 1628608 5711984 -1628560 5711888 1627704 5715064 1627712 5715168 1628608 5711984 -1628560 5711888 1627608 5714272 1627704 5715064 1628608 5711984 -1628560 5711888 1627560 5714152 1627608 5714272 1628608 5711984 -1628560 5711888 1627224 5713384 1627560 5714152 1628608 5711984 -1627560 5714152 1627608 5714272 1628608 5711984 1627224 5713384 -1627608 5714272 1627704 5715064 1628608 5711984 1627560 5714152 -1627704 5715064 1627712 5715168 1628608 5711984 1627608 5714272 -1627712 5715168 1629736 5726176 1628608 5711984 1627704 5715064 -1628608 5711984 1629808 5706208 1628560 5711888 1627224 5713384 -1629736 5726176 1629944 5726576 1628608 5711984 1627712 5715168 -1628608 5711984 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628608 5711984 1629736 5726176 -1630064 5705848 1628608 5711984 1629944 5726576 1630096 5705696 -1629904 5706120 1629824 5706192 1629808 5706208 1628608 5711984 -1627224 5713384 1627488 5714064 1627560 5714152 1628608 5711984 -1627224 5713384 1627488 5714064 1628608 5711984 1628560 5711888 -1627560 5714152 1627608 5714272 1628608 5711984 1627488 5714064 -1627224 5713384 1627224 5713424 1627488 5714064 1628608 5711984 -1628560 5711888 1627216 5713328 1627224 5713384 1628608 5711984 -1627224 5713384 1627488 5714064 1628608 5711984 1627216 5713328 -1628560 5711888 1627216 5713328 1628608 5711984 1629808 5706208 -1627712 5715168 1629624 5725984 1629736 5726176 1628608 5711984 -1627712 5715168 1627448 5719792 1629624 5725984 1628608 5711984 -1627712 5715168 1629624 5725984 1628608 5711984 1627704 5715064 -1629736 5726176 1629944 5726576 1628608 5711984 1629624 5725984 -1627608 5714272 1627616 5714504 1627704 5715064 1628608 5711984 -1627608 5714272 1627616 5714504 1628608 5711984 1627560 5714152 -1627704 5715064 1627712 5715168 1628608 5711984 1627616 5714504 -1627616 5714504 1627640 5714808 1627704 5715064 1628608 5711984 -1628560 5711888 1628296 5711888 1627216 5713328 1628608 5711984 -1628560 5711888 1628328 5711848 1628296 5711888 1628608 5711984 -1628560 5711888 1628296 5711888 1628608 5711984 1629808 5706208 -1628296 5711888 1627192 5713168 1627216 5713328 1628608 5711984 -1627192 5713168 1627176 5713224 1627216 5713328 1628608 5711984 -1628296 5711888 1627184 5713128 1627192 5713168 1628608 5711984 -1627192 5713168 1627216 5713328 1628608 5711984 1627184 5713128 -1628296 5711888 1627136 5713048 1627184 5713128 1628608 5711984 -1627216 5713328 1627224 5713384 1628608 5711984 1627192 5713168 -1628296 5711888 1627184 5713128 1628608 5711984 1628560 5711888 -1628608 5711984 1628640 5712072 1630064 5705848 1629984 5706008 -1628608 5711984 1628640 5712072 1629984 5706008 1629904 5706120 -1628608 5711984 1628640 5712072 1629904 5706120 1629808 5706208 -1628640 5712072 1630064 5705848 1629984 5706008 1629904 5706120 -1628608 5711984 1629944 5726576 1628640 5712072 1629904 5706120 -1629944 5726576 1628640 5712072 1628608 5711984 1629736 5726176 -1629944 5726576 1628640 5712072 1629736 5726176 1629904 5726504 -1628608 5711984 1629624 5725984 1629736 5726176 1628640 5712072 -1628640 5712072 1629904 5706120 1628608 5711984 1629624 5725984 -1629736 5726176 1629944 5726576 1628640 5712072 1629624 5725984 -1628640 5712072 1629944 5726576 1630064 5705848 1629984 5706008 -1629944 5726576 1630064 5705848 1628640 5712072 1629736 5726176 -1630064 5705848 1628640 5712072 1629944 5726576 1630096 5705696 -1628608 5711984 1627712 5715168 1629624 5725984 1628640 5712072 -1627712 5715168 1627448 5719792 1629624 5725984 1628640 5712072 -1628608 5711984 1627704 5715064 1627712 5715168 1628640 5712072 -1628608 5711984 1627616 5714504 1627704 5715064 1628640 5712072 -1627704 5715064 1627712 5715168 1628640 5712072 1627616 5714504 -1629624 5725984 1629736 5726176 1628640 5712072 1627712 5715168 -1628608 5711984 1627616 5714504 1628640 5712072 1629904 5706120 -1627616 5714504 1627640 5714808 1627704 5715064 1628640 5712072 -1627712 5715168 1629624 5725984 1628640 5712072 1627704 5715064 -1628608 5711984 1627608 5714272 1627616 5714504 1628640 5712072 -1628608 5711984 1627560 5714152 1627608 5714272 1628640 5712072 -1628608 5711984 1627488 5714064 1627560 5714152 1628640 5712072 -1627560 5714152 1627608 5714272 1628640 5712072 1627488 5714064 -1627616 5714504 1627704 5715064 1628640 5712072 1627608 5714272 -1628608 5711984 1627488 5714064 1628640 5712072 1629904 5706120 -1628608 5711984 1627224 5713384 1627488 5714064 1628640 5712072 -1628608 5711984 1627216 5713328 1627224 5713384 1628640 5712072 -1627488 5714064 1627560 5714152 1628640 5712072 1627224 5713384 -1628608 5711984 1627216 5713328 1628640 5712072 1629904 5706120 -1627224 5713384 1627224 5713424 1627488 5714064 1628640 5712072 -1627224 5713384 1627488 5714064 1628640 5712072 1627216 5713328 -1628608 5711984 1627192 5713168 1627216 5713328 1628640 5712072 -1627216 5713328 1627224 5713384 1628640 5712072 1627192 5713168 -1628608 5711984 1627192 5713168 1628640 5712072 1629904 5706120 -1627192 5713168 1627176 5713224 1627216 5713328 1628640 5712072 -1628608 5711984 1627184 5713128 1627192 5713168 1628640 5712072 -1628608 5711984 1627184 5713128 1628640 5712072 1629904 5706120 -1628608 5711984 1628296 5711888 1627184 5713128 1628640 5712072 -1628608 5711984 1628296 5711888 1628640 5712072 1629904 5706120 -1627184 5713128 1627192 5713168 1628640 5712072 1628296 5711888 -1628296 5711888 1627136 5713048 1627184 5713128 1628640 5712072 -1627192 5713168 1627216 5713328 1628640 5712072 1627184 5713128 -1627608 5714272 1627616 5714504 1628640 5712072 1627560 5714152 -1628608 5711984 1628560 5711888 1628296 5711888 1628640 5712072 -1629624 5725984 1628632 5712112 1627712 5715168 1627448 5719792 -1628640 5712072 1628632 5712112 1629624 5725984 1629736 5726176 -1628640 5712072 1628632 5712112 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1628632 5712112 -1628632 5712112 1629624 5725984 1629736 5726176 1629944 5726576 -1628640 5712072 1627712 5715168 1628632 5712112 1629944 5726576 -1628640 5712072 1628632 5712112 1629944 5726576 1630064 5705848 -1628632 5712112 1627712 5715168 1629624 5725984 1629736 5726176 -1627712 5715168 1628632 5712112 1628640 5712072 1627704 5715064 -1628640 5712072 1627616 5714504 1627704 5715064 1628632 5712112 -1628640 5712072 1627608 5714272 1627616 5714504 1628632 5712112 -1627616 5714504 1627704 5715064 1628632 5712112 1627608 5714272 -1628632 5712112 1629944 5726576 1628640 5712072 1627608 5714272 -1627712 5715168 1629624 5725984 1628632 5712112 1627704 5715064 -1627616 5714504 1627640 5714808 1627704 5715064 1628632 5712112 -1627704 5715064 1627712 5715168 1628632 5712112 1627616 5714504 -1628640 5712072 1627560 5714152 1627608 5714272 1628632 5712112 -1628640 5712072 1627488 5714064 1627560 5714152 1628632 5712112 -1628640 5712072 1627224 5713384 1627488 5714064 1628632 5712112 -1627488 5714064 1627560 5714152 1628632 5712112 1627224 5713384 -1627608 5714272 1627616 5714504 1628632 5712112 1627560 5714152 -1628640 5712072 1627224 5713384 1628632 5712112 1629944 5726576 -1627224 5713384 1627224 5713424 1627488 5714064 1628632 5712112 -1628640 5712072 1627216 5713328 1627224 5713384 1628632 5712112 -1628640 5712072 1627192 5713168 1627216 5713328 1628632 5712112 -1627224 5713384 1627488 5714064 1628632 5712112 1627216 5713328 -1628640 5712072 1627192 5713168 1628632 5712112 1629944 5726576 -1627192 5713168 1627176 5713224 1627216 5713328 1628632 5712112 -1627216 5713328 1627224 5713384 1628632 5712112 1627192 5713168 -1628640 5712072 1627184 5713128 1627192 5713168 1628632 5712112 -1627192 5713168 1627216 5713328 1628632 5712112 1627184 5713128 -1628640 5712072 1627184 5713128 1628632 5712112 1629944 5726576 -1628640 5712072 1628296 5711888 1627184 5713128 1628632 5712112 -1628640 5712072 1628296 5711888 1628632 5712112 1629944 5726576 -1628640 5712072 1628608 5711984 1628296 5711888 1628632 5712112 -1628640 5712072 1628608 5711984 1628632 5712112 1629944 5726576 -1628296 5711888 1627184 5713128 1628632 5712112 1628608 5711984 -1628296 5711888 1627136 5713048 1627184 5713128 1628632 5712112 -1627184 5713128 1627192 5713168 1628632 5712112 1628296 5711888 -1627560 5714152 1627608 5714272 1628632 5712112 1627488 5714064 -1628608 5711984 1628560 5711888 1628296 5711888 1628632 5712112 -1627488 5714064 1628600 5712168 1628632 5712112 1627224 5713384 -1628632 5712112 1627216 5713328 1627224 5713384 1628600 5712168 -1627224 5713384 1627488 5714064 1628600 5712168 1627216 5713328 -1628600 5712168 1627560 5714152 1628632 5712112 1627216 5713328 -1627488 5714064 1627560 5714152 1628600 5712168 1627224 5713384 -1627488 5714064 1628600 5712168 1627224 5713384 1627224 5713424 -1628632 5712112 1627192 5713168 1627216 5713328 1628600 5712168 -1628632 5712112 1627184 5713128 1627192 5713168 1628600 5712168 -1627216 5713328 1627224 5713384 1628600 5712168 1627192 5713168 -1628632 5712112 1627184 5713128 1628600 5712168 1627560 5714152 -1627192 5713168 1627176 5713224 1627216 5713328 1628600 5712168 -1627192 5713168 1627216 5713328 1628600 5712168 1627184 5713128 -1628632 5712112 1628296 5711888 1627184 5713128 1628600 5712168 -1627184 5713128 1627192 5713168 1628600 5712168 1628296 5711888 -1628632 5712112 1628296 5711888 1628600 5712168 1627560 5714152 -1628632 5712112 1628608 5711984 1628296 5711888 1628600 5712168 -1628632 5712112 1628608 5711984 1628600 5712168 1627560 5714152 -1628632 5712112 1628640 5712072 1628608 5711984 1628600 5712168 -1628296 5711888 1627136 5713048 1627184 5713128 1628600 5712168 -1627184 5713128 1627192 5713168 1628600 5712168 1627136 5713048 -1628296 5711888 1627064 5713000 1627136 5713048 1628600 5712168 -1628296 5711888 1627136 5713048 1628600 5712168 1628608 5711984 -1628632 5712112 1628600 5712168 1627560 5714152 1627608 5714272 -1628632 5712112 1628600 5712168 1627608 5714272 1627616 5714504 -1628632 5712112 1628600 5712168 1627616 5714504 1627704 5715064 -1628600 5712168 1627608 5714272 1627616 5714504 1627704 5715064 -1628632 5712112 1628608 5711984 1628600 5712168 1627704 5715064 -1628600 5712168 1627488 5714064 1627560 5714152 1627608 5714272 -1627616 5714504 1627640 5714808 1627704 5715064 1628600 5712168 -1628632 5712112 1628600 5712168 1627704 5715064 1627712 5715168 -1628600 5712168 1627616 5714504 1627704 5715064 1627712 5715168 -1628632 5712112 1628608 5711984 1628600 5712168 1627712 5715168 -1628632 5712112 1628600 5712168 1627712 5715168 1629624 5725984 -1628600 5712168 1627560 5714152 1627608 5714272 1627616 5714504 -1628608 5711984 1628560 5711888 1628296 5711888 1628600 5712168 -1628600 5712168 1628552 5712200 1627184 5713128 1627192 5713168 -1628552 5712200 1627136 5713048 1627184 5713128 1627192 5713168 -1628600 5712168 1627136 5713048 1628552 5712200 1627192 5713168 -1628600 5712168 1628552 5712200 1627192 5713168 1627216 5713328 -1628552 5712200 1627184 5713128 1627192 5713168 1627216 5713328 -1628600 5712168 1628552 5712200 1627216 5713328 1627224 5713384 -1628600 5712168 1628552 5712200 1627224 5713384 1627488 5714064 -1628552 5712200 1627216 5713328 1627224 5713384 1627488 5714064 -1628600 5712168 1627136 5713048 1628552 5712200 1627488 5714064 -1628600 5712168 1628552 5712200 1627488 5714064 1627560 5714152 -1628552 5712200 1627224 5713384 1627488 5714064 1627560 5714152 -1628600 5712168 1628552 5712200 1627560 5714152 1627608 5714272 -1628600 5712168 1627136 5713048 1628552 5712200 1627608 5714272 -1628552 5712200 1627488 5714064 1627560 5714152 1627608 5714272 -1627224 5713384 1627224 5713424 1627488 5714064 1628552 5712200 -1627192 5713168 1627176 5713224 1627216 5713328 1628552 5712200 -1628552 5712200 1627192 5713168 1627216 5713328 1627224 5713384 -1627136 5713048 1628552 5712200 1628600 5712168 1628296 5711888 -1628552 5712200 1627608 5714272 1628600 5712168 1628296 5711888 -1627136 5713048 1627184 5713128 1628552 5712200 1628296 5711888 -1627136 5713048 1628552 5712200 1628296 5711888 1627064 5713000 -1628600 5712168 1628608 5711984 1628296 5711888 1628552 5712200 -1628600 5712168 1628608 5711984 1628552 5712200 1627608 5714272 -1628600 5712168 1628632 5712112 1628608 5711984 1628552 5712200 -1628600 5712168 1628632 5712112 1628552 5712200 1627608 5714272 -1628632 5712112 1628640 5712072 1628608 5711984 1628552 5712200 -1628296 5711888 1627136 5713048 1628552 5712200 1628608 5711984 -1628608 5711984 1628296 5711888 1628552 5712200 1628632 5712112 -1628600 5712168 1628552 5712200 1627608 5714272 1627616 5714504 -1628608 5711984 1628560 5711888 1628296 5711888 1628552 5712200 -1628552 5712200 1628512 5712216 1627136 5713048 1627184 5713128 -1628552 5712200 1628512 5712216 1627184 5713128 1627192 5713168 -1628552 5712200 1628512 5712216 1627192 5713168 1627216 5713328 -1628512 5712216 1627184 5713128 1627192 5713168 1627216 5713328 -1628552 5712200 1628296 5711888 1628512 5712216 1627216 5713328 -1628512 5712216 1627136 5713048 1627184 5713128 1627192 5713168 -1628512 5712216 1628296 5711888 1627136 5713048 1627184 5713128 -1627136 5713048 1628512 5712216 1628296 5711888 1627064 5713000 -1627192 5713168 1627176 5713224 1627216 5713328 1628512 5712216 -1628552 5712200 1628512 5712216 1627216 5713328 1627224 5713384 -1628512 5712216 1627192 5713168 1627216 5713328 1627224 5713384 -1628552 5712200 1628512 5712216 1627224 5713384 1627488 5714064 -1628552 5712200 1628512 5712216 1627488 5714064 1627560 5714152 -1628512 5712216 1627224 5713384 1627488 5714064 1627560 5714152 -1628552 5712200 1628296 5711888 1628512 5712216 1627560 5714152 -1628552 5712200 1628512 5712216 1627560 5714152 1627608 5714272 -1628512 5712216 1627488 5714064 1627560 5714152 1627608 5714272 -1628552 5712200 1628296 5711888 1628512 5712216 1627608 5714272 -1628552 5712200 1628512 5712216 1627608 5714272 1628600 5712168 -1627224 5713384 1627224 5713424 1627488 5714064 1628512 5712216 -1628512 5712216 1627216 5713328 1627224 5713384 1627488 5714064 -1628296 5711888 1628512 5712216 1628552 5712200 1628608 5711984 -1628512 5712216 1627608 5714272 1628552 5712200 1628608 5711984 -1628296 5711888 1627136 5713048 1628512 5712216 1628608 5711984 -1628552 5712200 1628632 5712112 1628608 5711984 1628512 5712216 -1628296 5711888 1628512 5712216 1628608 5711984 1628560 5711888 -1628512 5712216 1628464 5712216 1627136 5713048 1627184 5713128 -1628512 5712216 1628464 5712216 1627184 5713128 1627192 5713168 -1628512 5712216 1628464 5712216 1627192 5713168 1627216 5713328 -1628512 5712216 1628464 5712216 1627216 5713328 1627224 5713384 -1628464 5712216 1627192 5713168 1627216 5713328 1627224 5713384 -1628464 5712216 1627184 5713128 1627192 5713168 1627216 5713328 -1628464 5712216 1627136 5713048 1627184 5713128 1627192 5713168 -1628512 5712216 1628296 5711888 1628464 5712216 1627224 5713384 -1628296 5711888 1628464 5712216 1628512 5712216 1628608 5711984 -1628464 5712216 1627224 5713384 1628512 5712216 1628608 5711984 -1628464 5712216 1628296 5711888 1627136 5713048 1627184 5713128 -1628296 5711888 1627136 5713048 1628464 5712216 1628608 5711984 -1627136 5713048 1628464 5712216 1628296 5711888 1627064 5713000 -1627192 5713168 1627176 5713224 1627216 5713328 1628464 5712216 -1628512 5712216 1628464 5712216 1627224 5713384 1627488 5714064 -1628464 5712216 1627216 5713328 1627224 5713384 1627488 5714064 -1628512 5712216 1628464 5712216 1627488 5714064 1627560 5714152 -1628512 5712216 1628464 5712216 1627560 5714152 1627608 5714272 -1628512 5712216 1628608 5711984 1628464 5712216 1627560 5714152 -1627224 5713384 1627224 5713424 1627488 5714064 1628464 5712216 -1628464 5712216 1627224 5713384 1627488 5714064 1627560 5714152 -1628512 5712216 1628552 5712200 1628608 5711984 1628464 5712216 -1628512 5712216 1628552 5712200 1628464 5712216 1627560 5714152 -1628608 5711984 1628296 5711888 1628464 5712216 1628552 5712200 -1628552 5712200 1628632 5712112 1628608 5711984 1628464 5712216 -1628296 5711888 1628464 5712216 1628608 5711984 1628560 5711888 -1628464 5712216 1628432 5712208 1627136 5713048 1627184 5713128 -1628464 5712216 1628432 5712208 1627184 5713128 1627192 5713168 -1628464 5712216 1628432 5712208 1627192 5713168 1627216 5713328 -1628464 5712216 1628432 5712208 1627216 5713328 1627224 5713384 -1628432 5712208 1627184 5713128 1627192 5713168 1627216 5713328 -1628432 5712208 1627136 5713048 1627184 5713128 1627192 5713168 -1628464 5712216 1628296 5711888 1628432 5712208 1627216 5713328 -1628296 5711888 1628432 5712208 1628464 5712216 1628608 5711984 -1628464 5712216 1628552 5712200 1628608 5711984 1628432 5712208 -1628432 5712208 1627216 5713328 1628464 5712216 1628552 5712200 -1628608 5711984 1628296 5711888 1628432 5712208 1628552 5712200 -1628432 5712208 1628296 5711888 1627136 5713048 1627184 5713128 -1628296 5711888 1627136 5713048 1628432 5712208 1628608 5711984 -1627136 5713048 1628432 5712208 1628296 5711888 1627064 5713000 -1627192 5713168 1627176 5713224 1627216 5713328 1628432 5712208 -1628464 5712216 1628512 5712216 1628552 5712200 1628432 5712208 -1628552 5712200 1628632 5712112 1628608 5711984 1628432 5712208 -1628296 5711888 1628432 5712208 1628608 5711984 1628560 5711888 -1628432 5712208 1628400 5712176 1627136 5713048 1627184 5713128 -1628432 5712208 1628400 5712176 1627184 5713128 1627192 5713168 -1628432 5712208 1628296 5711888 1628400 5712176 1627184 5713128 -1628296 5711888 1628400 5712176 1628432 5712208 1628608 5711984 -1628432 5712208 1628552 5712200 1628608 5711984 1628400 5712176 -1628432 5712208 1628464 5712216 1628552 5712200 1628400 5712176 -1628552 5712200 1628608 5711984 1628400 5712176 1628464 5712216 -1628400 5712176 1627184 5713128 1628432 5712208 1628464 5712216 -1628608 5711984 1628296 5711888 1628400 5712176 1628552 5712200 -1628400 5712176 1628296 5711888 1627136 5713048 1627184 5713128 -1628296 5711888 1627136 5713048 1628400 5712176 1628608 5711984 -1627136 5713048 1628400 5712176 1628296 5711888 1627064 5713000 -1627136 5713048 1627184 5713128 1628400 5712176 1627064 5713000 -1628400 5712176 1628608 5711984 1628296 5711888 1627064 5713000 -1628296 5711888 1627024 5713000 1627064 5713000 1628400 5712176 -1628464 5712216 1628512 5712216 1628552 5712200 1628400 5712176 -1628464 5712216 1628512 5712216 1628400 5712176 1628432 5712208 -1628552 5712200 1628608 5711984 1628400 5712176 1628512 5712216 -1628552 5712200 1628632 5712112 1628608 5711984 1628400 5712176 -1628296 5711888 1628400 5712176 1628608 5711984 1628560 5711888 -1628296 5711888 1628400 5712176 1628560 5711888 1628328 5711848 -1628400 5712176 1628552 5712200 1628608 5711984 1628560 5711888 -1628296 5711888 1627064 5713000 1628400 5712176 1628560 5711888 -1628296 5711888 1628336 5712080 1628400 5712176 1628560 5711888 -1628296 5711888 1628336 5712080 1628560 5711888 1628328 5711848 -1628560 5711888 1628520 5711808 1628328 5711848 1628336 5712080 -1628336 5712080 1627064 5713000 1628400 5712176 1628560 5711888 -1628336 5712080 1628400 5712176 1628560 5711888 1628328 5711848 -1628296 5711888 1627064 5713000 1628336 5712080 1628328 5711848 -1627064 5713000 1628336 5712080 1628296 5711888 1627024 5713000 -1628400 5712176 1628336 5712080 1627064 5713000 1627136 5713048 -1628400 5712176 1628336 5712080 1627136 5713048 1627184 5713128 -1628400 5712176 1628560 5711888 1628336 5712080 1627136 5713048 -1628336 5712080 1628296 5711888 1627064 5713000 1627136 5713048 -1628400 5712176 1628608 5711984 1628560 5711888 1628336 5712080 -1628400 5712176 1628552 5712200 1628608 5711984 1628336 5712080 -1628400 5712176 1628608 5711984 1628336 5712080 1627136 5713048 -1628560 5711888 1628328 5711848 1628336 5712080 1628608 5711984 -1628336 5712080 1628296 5711992 1627064 5713000 1627136 5713048 -1628336 5712080 1628296 5711888 1628296 5711992 1627136 5713048 -1628296 5711888 1628296 5711992 1628336 5712080 1628328 5711848 -1628336 5712080 1628560 5711888 1628328 5711848 1628296 5711992 -1628560 5711888 1628520 5711808 1628328 5711848 1628296 5711992 -1628336 5712080 1628608 5711984 1628560 5711888 1628296 5711992 -1628296 5711992 1627136 5713048 1628336 5712080 1628560 5711888 -1628328 5711848 1628296 5711888 1628296 5711992 1628560 5711888 -1628296 5711992 1628296 5711888 1627064 5713000 1627136 5713048 -1627064 5713000 1628296 5711992 1628296 5711888 1627024 5713000 -1628336 5712080 1628296 5711992 1627136 5713048 1628400 5712176 -1628296 5711888 1627064 5713000 1628296 5711992 1628328 5711848 -1743888 5687504 1631424 5714280 1629944 5726576 1632696 5739008 -1629944 5726576 1631224 5733936 1632696 5739008 1631424 5714280 -1632696 5739008 1743888 5687504 1631424 5714280 1631224 5733936 -1629944 5726576 1629944 5726624 1631224 5733936 1631424 5714280 -1631224 5733936 1631240 5734008 1632696 5739008 1631424 5714280 -1743888 5687504 1631424 5714280 1632696 5739008 1751256 5699792 -1743888 5687504 1630096 5705696 1631424 5714280 1632696 5739008 -1631424 5714280 1630096 5705696 1629944 5726576 1631224 5733936 -1630096 5705696 1631424 5714280 1743888 5687504 1743800 5687320 -1630096 5705696 1629944 5726576 1631424 5714280 1743800 5687320 -1631424 5714280 1632696 5739008 1743888 5687504 1743800 5687320 -1630096 5705696 1631424 5714280 1743800 5687320 1630152 5704824 -1743800 5687320 1630136 5704624 1630152 5704824 1631424 5714280 -1630096 5705696 1631424 5714280 1630152 5704824 1630080 5705344 -1630096 5705696 1629944 5726576 1631424 5714280 1630152 5704824 -1631424 5714280 1743888 5687504 1743800 5687320 1630152 5704824 -1629944 5726576 1631424 5714280 1630096 5705696 1630064 5705848 -1629944 5726576 1631424 5714280 1630064 5705848 1628640 5712072 -1630064 5705848 1629984 5706008 1628640 5712072 1631424 5714280 -1629984 5706008 1629904 5706120 1628640 5712072 1631424 5714280 -1629904 5706120 1628608 5711984 1628640 5712072 1631424 5714280 -1629904 5706120 1629808 5706208 1628608 5711984 1631424 5714280 -1629808 5706208 1628560 5711888 1628608 5711984 1631424 5714280 -1629808 5706208 1628520 5711808 1628560 5711888 1631424 5714280 -1629808 5706208 1628560 5711888 1631424 5714280 1629904 5706120 -1628608 5711984 1628640 5712072 1631424 5714280 1628560 5711888 -1629904 5706120 1629808 5706208 1631424 5714280 1629984 5706008 -1629984 5706008 1629904 5706120 1631424 5714280 1630064 5705848 -1629944 5726576 1631424 5714280 1628640 5712072 1628632 5712112 -1629944 5726576 1631424 5714280 1628632 5712112 1629736 5726176 -1629944 5726576 1631424 5714280 1629736 5726176 1629904 5726504 -1628632 5712112 1629624 5725984 1629736 5726176 1631424 5714280 -1629736 5726176 1629944 5726576 1631424 5714280 1629624 5725984 -1631424 5714280 1628640 5712072 1628632 5712112 1629624 5725984 -1628632 5712112 1627712 5715168 1629624 5725984 1631424 5714280 -1627712 5715168 1627448 5719792 1629624 5725984 1631424 5714280 -1627712 5715168 1627680 5715232 1627448 5719792 1631424 5714280 -1627448 5719792 1629624 5725984 1631424 5714280 1627680 5715232 -1629624 5725984 1629736 5726176 1631424 5714280 1627448 5719792 -1628632 5712112 1627712 5715168 1631424 5714280 1628640 5712072 -1627712 5715168 1627680 5715232 1631424 5714280 1628632 5712112 -1628632 5712112 1628600 5712168 1627712 5715168 1631424 5714280 -1628632 5712112 1628600 5712168 1631424 5714280 1628640 5712072 -1627712 5715168 1627680 5715232 1631424 5714280 1628600 5712168 -1627448 5719792 1629600 5725952 1629624 5725984 1631424 5714280 -1627448 5719792 1629600 5725952 1631424 5714280 1627680 5715232 -1627448 5719792 1627448 5719840 1629600 5725952 1631424 5714280 -1627448 5719792 1627448 5719840 1631424 5714280 1627680 5715232 -1627448 5719840 1629568 5725912 1629600 5725952 1631424 5714280 -1627448 5719840 1629568 5725912 1631424 5714280 1627448 5719792 -1629624 5725984 1629736 5726176 1631424 5714280 1629600 5725952 -1629600 5725952 1629624 5725984 1631424 5714280 1629568 5725912 -1627448 5719840 1627400 5719960 1629568 5725912 1631424 5714280 -1628640 5712072 1628632 5712112 1631424 5714280 1628608 5711984 -1629904 5706120 1629824 5706192 1629808 5706208 1631424 5714280 -1627680 5715232 1627384 5719672 1627448 5719792 1631424 5714280 -1627448 5719792 1627448 5719840 1631424 5714280 1627384 5719672 -1627680 5715232 1627384 5719672 1631424 5714280 1627712 5715168 -1627384 5719672 1627400 5719704 1627448 5719792 1631424 5714280 -1627680 5715232 1627560 5715304 1627384 5719672 1631424 5714280 -1628600 5712168 1627704 5715064 1627712 5715168 1631424 5714280 -1628600 5712168 1627616 5714504 1627704 5715064 1631424 5714280 -1628600 5712168 1627608 5714272 1627616 5714504 1631424 5714280 -1627616 5714504 1627704 5715064 1631424 5714280 1627608 5714272 -1627712 5715168 1627680 5715232 1631424 5714280 1627704 5715064 -1628600 5712168 1627608 5714272 1631424 5714280 1628632 5712112 -1627616 5714504 1627640 5714808 1627704 5715064 1631424 5714280 -1627704 5715064 1627712 5715168 1631424 5714280 1627616 5714504 -1631424 5714280 1630152 5704824 1630096 5705696 1630064 5705848 -1629944 5726576 1631224 5733936 1631424 5714280 1629736 5726176 -1628600 5712168 1628552 5712200 1627608 5714272 1631424 5714280 -1627608 5714272 1627616 5714504 1631424 5714280 1628552 5712200 -1628600 5712168 1628552 5712200 1631424 5714280 1628632 5712112 -1628552 5712200 1628512 5712216 1627608 5714272 1631424 5714280 -1631424 5714280 1630096 5705696 1630064 5705848 1629984 5706008 -1627680 5715232 1631184 5714344 1631424 5714280 1627712 5715168 -1631424 5714280 1627704 5715064 1627712 5715168 1631184 5714344 -1627712 5715168 1627680 5715232 1631184 5714344 1627704 5715064 -1631424 5714280 1631184 5714344 1627384 5719672 1627448 5719792 -1631424 5714280 1631184 5714344 1627448 5719792 1627448 5719840 -1627384 5719672 1627400 5719704 1627448 5719792 1631184 5714344 -1627384 5719672 1631184 5714344 1627680 5715232 1627560 5715304 -1631424 5714280 1627616 5714504 1627704 5715064 1631184 5714344 -1631424 5714280 1627608 5714272 1627616 5714504 1631184 5714344 -1631424 5714280 1628552 5712200 1627608 5714272 1631184 5714344 -1627608 5714272 1627616 5714504 1631184 5714344 1628552 5712200 -1627704 5715064 1627712 5715168 1631184 5714344 1627616 5714504 -1628552 5712200 1628512 5712216 1627608 5714272 1631184 5714344 -1627616 5714504 1627640 5714808 1627704 5715064 1631184 5714344 -1627616 5714504 1627704 5715064 1631184 5714344 1627608 5714272 -1631184 5714344 1627448 5719792 1631424 5714280 1628552 5712200 -1631184 5714344 1627680 5715232 1627384 5719672 1627448 5719792 -1627680 5715232 1627384 5719672 1631184 5714344 1627712 5715168 -1631424 5714280 1628600 5712168 1628552 5712200 1631184 5714344 -1628552 5712200 1627608 5714272 1631184 5714344 1628600 5712168 -1631424 5714280 1628632 5712112 1628600 5712168 1631184 5714344 -1631424 5714280 1628640 5712072 1628632 5712112 1631184 5714344 -1628632 5712112 1628600 5712168 1631184 5714344 1628640 5712072 -1631424 5714280 1628608 5711984 1628640 5712072 1631184 5714344 -1631424 5714280 1628640 5712072 1631184 5714344 1627448 5719792 -1628600 5712168 1628552 5712200 1631184 5714344 1628632 5712112 -1631184 5714344 1630984 5714360 1627704 5715064 1627712 5715168 -1631184 5714344 1630984 5714360 1627712 5715168 1627680 5715232 -1630984 5714360 1627704 5715064 1627712 5715168 1627680 5715232 -1627704 5715064 1630984 5714360 1627616 5714504 1627640 5714808 -1627616 5714504 1630984 5714360 1631184 5714344 1627608 5714272 -1631184 5714344 1628552 5712200 1627608 5714272 1630984 5714360 -1631184 5714344 1628600 5712168 1628552 5712200 1630984 5714360 -1628552 5712200 1627608 5714272 1630984 5714360 1628600 5712168 -1628552 5712200 1628512 5712216 1627608 5714272 1630984 5714360 -1627608 5714272 1627616 5714504 1630984 5714360 1628552 5712200 -1631184 5714344 1628600 5712168 1630984 5714360 1627680 5715232 -1631184 5714344 1630984 5714360 1627680 5715232 1627384 5719672 -1630984 5714360 1627712 5715168 1627680 5715232 1627384 5719672 -1627680 5715232 1627560 5715304 1627384 5719672 1630984 5714360 -1631184 5714344 1630984 5714360 1627384 5719672 1627448 5719792 -1627384 5719672 1627400 5719704 1627448 5719792 1630984 5714360 -1631184 5714344 1630984 5714360 1627448 5719792 1631424 5714280 -1631184 5714344 1628600 5712168 1630984 5714360 1627448 5719792 -1630984 5714360 1627680 5715232 1627384 5719672 1627448 5719792 -1630984 5714360 1627640 5714808 1627704 5715064 1627712 5715168 -1630984 5714360 1627608 5714272 1627616 5714504 1627640 5714808 -1631184 5714344 1628632 5712112 1628600 5712168 1630984 5714360 -1628600 5712168 1628552 5712200 1630984 5714360 1628632 5712112 -1631184 5714344 1628640 5712072 1628632 5712112 1630984 5714360 -1631184 5714344 1631424 5714280 1628640 5712072 1630984 5714360 -1628640 5712072 1628632 5712112 1630984 5714360 1631424 5714280 -1631424 5714280 1628608 5711984 1628640 5712072 1630984 5714360 -1631184 5714344 1631424 5714280 1630984 5714360 1627448 5719792 -1628632 5712112 1628600 5712168 1630984 5714360 1628640 5712072 -1628552 5712200 1630920 5714352 1630984 5714360 1628600 5712168 -1630984 5714360 1628632 5712112 1628600 5712168 1630920 5714352 -1628600 5712168 1628552 5712200 1630920 5714352 1628632 5712112 -1627608 5714272 1630920 5714352 1628552 5712200 1628512 5712216 -1630984 5714360 1630920 5714352 1627608 5714272 1627616 5714504 -1630920 5714352 1627616 5714504 1630984 5714360 1628632 5712112 -1630984 5714360 1630920 5714352 1627616 5714504 1627640 5714808 -1630984 5714360 1630920 5714352 1627640 5714808 1627704 5715064 -1630920 5714352 1627608 5714272 1627616 5714504 1627640 5714808 -1630984 5714360 1630920 5714352 1627704 5715064 1627712 5715168 -1630984 5714360 1630920 5714352 1627712 5715168 1627680 5715232 -1630984 5714360 1630920 5714352 1627680 5715232 1627384 5719672 -1630920 5714352 1627712 5715168 1627680 5715232 1627384 5719672 -1630920 5714352 1627640 5714808 1627704 5715064 1627712 5715168 -1627680 5715232 1627560 5715304 1627384 5719672 1630920 5714352 -1630984 5714360 1630920 5714352 1627384 5719672 1627448 5719792 -1630920 5714352 1627704 5715064 1627712 5715168 1627680 5715232 -1630984 5714360 1628632 5712112 1630920 5714352 1627384 5719672 -1630920 5714352 1627616 5714504 1627640 5714808 1627704 5715064 -1630920 5714352 1628552 5712200 1627608 5714272 1627616 5714504 -1628552 5712200 1627608 5714272 1630920 5714352 1628600 5712168 -1630984 5714360 1628640 5712072 1628632 5712112 1630920 5714352 -1628632 5712112 1628600 5712168 1630920 5714352 1628640 5712072 -1630984 5714360 1631424 5714280 1628640 5712072 1630920 5714352 -1630984 5714360 1631184 5714344 1631424 5714280 1630920 5714352 -1631424 5714280 1628640 5712072 1630920 5714352 1631184 5714344 -1631424 5714280 1628608 5711984 1628640 5712072 1630920 5714352 -1630984 5714360 1631184 5714344 1630920 5714352 1627384 5719672 -1628640 5712072 1628632 5712112 1630920 5714352 1631424 5714280 -1631424 5714280 1630872 5714296 1630920 5714352 1631184 5714344 -1630920 5714352 1630984 5714360 1631184 5714344 1630872 5714296 -1631184 5714344 1631424 5714280 1630872 5714296 1630984 5714360 -1628640 5712072 1630872 5714296 1631424 5714280 1628608 5711984 -1630872 5714296 1628640 5712072 1630920 5714352 1630984 5714360 -1631424 5714280 1628640 5712072 1630872 5714296 1631184 5714344 -1630920 5714352 1630872 5714296 1628640 5712072 1628632 5712112 -1630920 5714352 1630872 5714296 1628632 5712112 1628600 5712168 -1630920 5714352 1630872 5714296 1628600 5712168 1628552 5712200 -1630872 5714296 1628632 5712112 1628600 5712168 1628552 5712200 -1630920 5714352 1630984 5714360 1630872 5714296 1628552 5712200 -1630920 5714352 1630872 5714296 1628552 5712200 1627608 5714272 -1630872 5714296 1628600 5712168 1628552 5712200 1627608 5714272 -1628552 5712200 1628512 5712216 1627608 5714272 1630872 5714296 -1630920 5714352 1630872 5714296 1627608 5714272 1627616 5714504 -1630920 5714352 1630872 5714296 1627616 5714504 1627640 5714808 -1630920 5714352 1630872 5714296 1627640 5714808 1627704 5715064 -1630920 5714352 1630872 5714296 1627704 5715064 1627712 5715168 -1630872 5714296 1627616 5714504 1627640 5714808 1627704 5715064 -1630920 5714352 1630872 5714296 1627712 5715168 1627680 5715232 -1630872 5714296 1627640 5714808 1627704 5715064 1627712 5715168 -1630872 5714296 1627608 5714272 1627616 5714504 1627640 5714808 -1630920 5714352 1630984 5714360 1630872 5714296 1627712 5715168 -1630872 5714296 1628552 5712200 1627608 5714272 1627616 5714504 -1630872 5714296 1631424 5714280 1628640 5712072 1628632 5712112 -1630872 5714296 1628640 5712072 1628632 5712112 1628600 5712168 -1628640 5712072 1630856 5714248 1631424 5714280 1628608 5711984 -1630872 5714296 1630856 5714248 1628640 5712072 1628632 5712112 -1630872 5714296 1631424 5714280 1630856 5714248 1628632 5712112 -1631424 5714280 1630856 5714248 1630872 5714296 1631184 5714344 -1630872 5714296 1630984 5714360 1631184 5714344 1630856 5714248 -1630872 5714296 1630920 5714352 1630984 5714360 1630856 5714248 -1630856 5714248 1628632 5712112 1630872 5714296 1630984 5714360 -1631184 5714344 1631424 5714280 1630856 5714248 1630984 5714360 -1630856 5714248 1631424 5714280 1628640 5712072 1628632 5712112 -1631424 5714280 1628640 5712072 1630856 5714248 1631184 5714344 -1630872 5714296 1630856 5714248 1628632 5712112 1628600 5712168 -1630872 5714296 1630856 5714248 1628600 5712168 1628552 5712200 -1630872 5714296 1630856 5714248 1628552 5712200 1627608 5714272 -1630856 5714248 1628600 5712168 1628552 5712200 1627608 5714272 -1628552 5712200 1628512 5712216 1627608 5714272 1630856 5714248 -1630872 5714296 1630856 5714248 1627608 5714272 1627616 5714504 -1630856 5714248 1628552 5712200 1627608 5714272 1627616 5714504 -1630872 5714296 1630856 5714248 1627616 5714504 1627640 5714808 -1630872 5714296 1630856 5714248 1627640 5714808 1627704 5715064 -1630872 5714296 1630856 5714248 1627704 5715064 1627712 5715168 -1630856 5714248 1627616 5714504 1627640 5714808 1627704 5715064 -1630856 5714248 1627608 5714272 1627616 5714504 1627640 5714808 -1630856 5714248 1628640 5712072 1628632 5712112 1628600 5712168 -1630872 5714296 1630984 5714360 1630856 5714248 1627704 5715064 -1630856 5714248 1628632 5712112 1628600 5712168 1628552 5712200 -1628640 5712072 1630872 5714136 1631424 5714280 1628608 5711984 -1631424 5714280 1628560 5711888 1628608 5711984 1630872 5714136 -1630856 5714248 1630872 5714136 1628640 5712072 1628632 5712112 -1630856 5714248 1630872 5714136 1628632 5712112 1628600 5712168 -1630872 5714136 1628640 5712072 1628632 5712112 1628600 5712168 -1630856 5714248 1631424 5714280 1630872 5714136 1628600 5712168 -1631424 5714280 1630872 5714136 1630856 5714248 1631184 5714344 -1630856 5714248 1630984 5714360 1631184 5714344 1630872 5714136 -1630856 5714248 1630872 5714296 1630984 5714360 1630872 5714136 -1630872 5714136 1628600 5712168 1630856 5714248 1630984 5714360 -1631184 5714344 1631424 5714280 1630872 5714136 1630984 5714360 -1628640 5712072 1628632 5712112 1630872 5714136 1628608 5711984 -1630872 5714136 1631184 5714344 1631424 5714280 1628608 5711984 -1630856 5714248 1630872 5714136 1628600 5712168 1628552 5712200 -1630856 5714248 1630872 5714136 1628552 5712200 1627608 5714272 -1630856 5714248 1630872 5714136 1627608 5714272 1627616 5714504 -1628552 5712200 1628512 5712216 1627608 5714272 1630872 5714136 -1630872 5714136 1628632 5712112 1628600 5712168 1628552 5712200 -1630856 5714248 1630984 5714360 1630872 5714136 1627608 5714272 -1630872 5714136 1628600 5712168 1628552 5712200 1627608 5714272 -1628608 5711984 1631024 5714112 1631424 5714280 1628560 5711888 -1631424 5714280 1629808 5706208 1628560 5711888 1631024 5714112 -1629808 5706208 1628520 5711808 1628560 5711888 1631024 5714112 -1631424 5714280 1629904 5706120 1629808 5706208 1631024 5714112 -1628560 5711888 1628608 5711984 1631024 5714112 1629808 5706208 -1630872 5714136 1631024 5714112 1628608 5711984 1628640 5712072 -1630872 5714136 1631024 5714112 1628640 5712072 1628632 5712112 -1630872 5714136 1631424 5714280 1631024 5714112 1628640 5712072 -1631424 5714280 1631024 5714112 1630872 5714136 1631184 5714344 -1630872 5714136 1630984 5714360 1631184 5714344 1631024 5714112 -1630872 5714136 1630856 5714248 1630984 5714360 1631024 5714112 -1630856 5714248 1630872 5714296 1630984 5714360 1631024 5714112 -1630872 5714296 1630920 5714352 1630984 5714360 1631024 5714112 -1630856 5714248 1630872 5714296 1631024 5714112 1630872 5714136 -1630984 5714360 1631184 5714344 1631024 5714112 1630872 5714296 -1631024 5714112 1628640 5712072 1630872 5714136 1630856 5714248 -1631184 5714344 1631424 5714280 1631024 5714112 1630984 5714360 -1628608 5711984 1628640 5712072 1631024 5714112 1628560 5711888 -1631024 5714112 1631184 5714344 1631424 5714280 1629808 5706208 -1631024 5714112 1631200 5714128 1629808 5706208 1628560 5711888 -1629808 5706208 1628520 5711808 1628560 5711888 1631200 5714128 -1629808 5706208 1628488 5711752 1628520 5711808 1631200 5714128 -1628560 5711888 1631024 5714112 1631200 5714128 1628520 5711808 -1629808 5706208 1631200 5714128 1631424 5714280 1629904 5706120 -1631024 5714112 1631200 5714128 1628560 5711888 1628608 5711984 -1631200 5714128 1628520 5711808 1628560 5711888 1628608 5711984 -1631424 5714280 1629984 5706008 1629904 5706120 1631200 5714128 -1629808 5706208 1631200 5714128 1629904 5706120 1629824 5706192 -1631024 5714112 1631200 5714128 1628608 5711984 1628640 5712072 -1631200 5714128 1628560 5711888 1628608 5711984 1628640 5712072 -1631024 5714112 1631200 5714128 1628640 5712072 1630872 5714136 -1631024 5714112 1631424 5714280 1631200 5714128 1628640 5712072 -1631424 5714280 1631200 5714128 1631024 5714112 1631184 5714344 -1631024 5714112 1630984 5714360 1631184 5714344 1631200 5714128 -1631200 5714128 1628640 5712072 1631024 5714112 1631184 5714344 -1631200 5714128 1629904 5706120 1629808 5706208 1628520 5711808 -1631200 5714128 1631184 5714344 1631424 5714280 1629904 5706120 -1631200 5714128 1631336 5714072 1629904 5706120 1629808 5706208 -1629904 5706120 1631336 5714072 1631424 5714280 1629984 5706008 -1631424 5714280 1630064 5705848 1629984 5706008 1631336 5714072 -1629984 5706008 1629904 5706120 1631336 5714072 1630064 5705848 -1629904 5706120 1629824 5706192 1629808 5706208 1631336 5714072 -1631200 5714128 1631336 5714072 1629808 5706208 1628520 5711808 -1629808 5706208 1628488 5711752 1628520 5711808 1631336 5714072 -1631200 5714128 1631336 5714072 1628520 5711808 1628560 5711888 -1631200 5714128 1631336 5714072 1628560 5711888 1628608 5711984 -1631336 5714072 1628520 5711808 1628560 5711888 1628608 5711984 -1631336 5714072 1629904 5706120 1629808 5706208 1628520 5711808 -1631200 5714128 1631336 5714072 1628608 5711984 1628640 5712072 -1631336 5714072 1628560 5711888 1628608 5711984 1628640 5712072 -1631200 5714128 1631336 5714072 1628640 5712072 1631024 5714112 -1631336 5714072 1628608 5711984 1628640 5712072 1631024 5714112 -1628640 5712072 1630872 5714136 1631024 5714112 1631336 5714072 -1631336 5714072 1629808 5706208 1628520 5711808 1628560 5711888 -1631200 5714128 1631424 5714280 1631336 5714072 1631024 5714112 -1631424 5714280 1631336 5714072 1631200 5714128 1631184 5714344 -1631336 5714072 1629984 5706008 1629904 5706120 1629808 5706208 -1631336 5714072 1631200 5714128 1631424 5714280 1630064 5705848 -1631424 5714280 1630096 5705696 1630064 5705848 1631336 5714072 -1630064 5705848 1629984 5706008 1631336 5714072 1630096 5705696 -1631424 5714280 1630152 5704824 1630096 5705696 1631336 5714072 -1631424 5714280 1630096 5705696 1631336 5714072 1631200 5714128 -1630096 5705696 1631352 5714048 1631424 5714280 1630152 5704824 -1630096 5705696 1631352 5714048 1630152 5704824 1630080 5705344 -1631424 5714280 1631352 5714048 1631336 5714072 1631200 5714128 -1630096 5705696 1631336 5714072 1631352 5714048 1630152 5704824 -1631352 5714048 1631336 5714072 1631424 5714280 1630152 5704824 -1631424 5714280 1743800 5687320 1630152 5704824 1631352 5714048 -1631336 5714072 1631352 5714048 1630096 5705696 1630064 5705848 -1631336 5714072 1631352 5714048 1630064 5705848 1629984 5706008 -1631336 5714072 1631352 5714048 1629984 5706008 1629904 5706120 -1631352 5714048 1630064 5705848 1629984 5706008 1629904 5706120 -1631336 5714072 1631352 5714048 1629904 5706120 1629808 5706208 -1631336 5714072 1631352 5714048 1629808 5706208 1628520 5711808 -1629808 5706208 1628488 5711752 1628520 5711808 1631352 5714048 -1631352 5714048 1629984 5706008 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1631352 5714048 -1631336 5714072 1631352 5714048 1628520 5711808 1628560 5711888 -1631336 5714072 1631352 5714048 1628560 5711888 1628608 5711984 -1631336 5714072 1631352 5714048 1628608 5711984 1628640 5712072 -1631352 5714048 1628560 5711888 1628608 5711984 1628640 5712072 -1631352 5714048 1629808 5706208 1628520 5711808 1628560 5711888 -1631336 5714072 1631352 5714048 1628640 5712072 1631024 5714112 -1631352 5714048 1628608 5711984 1628640 5712072 1631024 5714112 -1628640 5712072 1630872 5714136 1631024 5714112 1631352 5714048 -1631336 5714072 1631352 5714048 1631024 5714112 1631200 5714128 -1631352 5714048 1628640 5712072 1631024 5714112 1631200 5714128 -1631352 5714048 1628520 5711808 1628560 5711888 1628608 5711984 -1631352 5714048 1629904 5706120 1629808 5706208 1628520 5711808 -1631336 5714072 1631424 5714280 1631352 5714048 1631200 5714128 -1631352 5714048 1630152 5704824 1630096 5705696 1630064 5705848 -1631352 5714048 1630096 5705696 1630064 5705848 1629984 5706008 -1630096 5705696 1631344 5713992 1630152 5704824 1630080 5705344 -1630152 5704824 1631344 5713992 1631352 5714048 1631424 5714280 -1631352 5714048 1631344 5713992 1630096 5705696 1630064 5705848 -1631344 5713992 1630064 5705848 1631352 5714048 1631424 5714280 -1631352 5714048 1631336 5714072 1631424 5714280 1631344 5713992 -1631344 5713992 1630152 5704824 1630096 5705696 1630064 5705848 -1630152 5704824 1630096 5705696 1631344 5713992 1631424 5714280 -1630152 5704824 1631344 5713992 1631424 5714280 1743800 5687320 -1631352 5714048 1631344 5713992 1630064 5705848 1629984 5706008 -1631352 5714048 1631344 5713992 1629984 5706008 1629904 5706120 -1631352 5714048 1631344 5713992 1629904 5706120 1629808 5706208 -1631344 5713992 1629984 5706008 1629904 5706120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1631344 5713992 -1631352 5714048 1631344 5713992 1629808 5706208 1628520 5711808 -1629808 5706208 1628488 5711752 1628520 5711808 1631344 5713992 -1631352 5714048 1631344 5713992 1628520 5711808 1628560 5711888 -1631344 5713992 1629904 5706120 1629808 5706208 1628520 5711808 -1631352 5714048 1631344 5713992 1628560 5711888 1628608 5711984 -1631352 5714048 1631344 5713992 1628608 5711984 1628640 5712072 -1631352 5714048 1631344 5713992 1628640 5712072 1631024 5714112 -1631344 5713992 1628608 5711984 1628640 5712072 1631024 5714112 -1631344 5713992 1628520 5711808 1628560 5711888 1628608 5711984 -1631352 5714048 1631344 5713992 1631024 5714112 1631200 5714128 -1631344 5713992 1628640 5712072 1631024 5714112 1631200 5714128 -1628640 5712072 1630872 5714136 1631024 5714112 1631344 5713992 -1628640 5712072 1630872 5714136 1631344 5713992 1628608 5711984 -1631024 5714112 1631200 5714128 1631344 5713992 1630872 5714136 -1628640 5712072 1628632 5712112 1630872 5714136 1631344 5713992 -1631352 5714048 1631344 5713992 1631200 5714128 1631336 5714072 -1631344 5713992 1631024 5714112 1631200 5714128 1631336 5714072 -1631344 5713992 1628560 5711888 1628608 5711984 1628640 5712072 -1631344 5713992 1629808 5706208 1628520 5711808 1628560 5711888 -1631344 5713992 1630096 5705696 1630064 5705848 1629984 5706008 -1631352 5714048 1631424 5714280 1631344 5713992 1631336 5714072 -1631344 5713992 1630064 5705848 1629984 5706008 1629904 5706120 -1628520 5711808 1631312 5713952 1629808 5706208 1628488 5711752 -1629808 5706208 1631312 5713952 1631344 5713992 1629904 5706120 -1631344 5713992 1629984 5706008 1629904 5706120 1631312 5713952 -1629904 5706120 1629808 5706208 1631312 5713952 1629984 5706008 -1629808 5706208 1631312 5713952 1629904 5706120 1629824 5706192 -1631344 5713992 1631312 5713952 1628520 5711808 1628560 5711888 -1631344 5713992 1631312 5713952 1628560 5711888 1628608 5711984 -1631344 5713992 1631312 5713952 1628608 5711984 1628640 5712072 -1631344 5713992 1631312 5713952 1628640 5712072 1630872 5714136 -1631312 5713952 1628560 5711888 1628608 5711984 1628640 5712072 -1631344 5713992 1631312 5713952 1630872 5714136 1631024 5714112 -1631312 5713952 1628640 5712072 1630872 5714136 1631024 5714112 -1631344 5713992 1631312 5713952 1631024 5714112 1631200 5714128 -1631344 5713992 1631312 5713952 1631200 5714128 1631336 5714072 -1631312 5713952 1631024 5714112 1631200 5714128 1631336 5714072 -1631312 5713952 1630872 5714136 1631024 5714112 1631200 5714128 -1628640 5712072 1628632 5712112 1630872 5714136 1631312 5713952 -1631344 5713992 1631312 5713952 1631336 5714072 1631352 5714048 -1631312 5713952 1628608 5711984 1628640 5712072 1630872 5714136 -1631312 5713952 1628520 5711808 1628560 5711888 1628608 5711984 -1631312 5713952 1631336 5714072 1631344 5713992 1629984 5706008 -1631312 5713952 1629808 5706208 1628520 5711808 1628560 5711888 -1629808 5706208 1628520 5711808 1631312 5713952 1629904 5706120 -1631344 5713992 1630064 5705848 1629984 5706008 1631312 5713952 -1629984 5706008 1629904 5706120 1631312 5713952 1630064 5705848 -1631344 5713992 1630096 5705696 1630064 5705848 1631312 5713952 -1631344 5713992 1630064 5705848 1631312 5713952 1631336 5714072 -1631312 5713952 1631216 5713912 1630872 5714136 1631024 5714112 -1631312 5713952 1631216 5713912 1631024 5714112 1631200 5714128 -1631216 5713912 1630872 5714136 1631024 5714112 1631200 5714128 -1631312 5713952 1631216 5713912 1631200 5714128 1631336 5714072 -1630872 5714136 1631216 5713912 1628640 5712072 1628632 5712112 -1630872 5714136 1631216 5713912 1628632 5712112 1628600 5712168 -1628640 5712072 1631216 5713912 1631312 5713952 1628608 5711984 -1631312 5713952 1628560 5711888 1628608 5711984 1631216 5713912 -1628608 5711984 1628640 5712072 1631216 5713912 1628560 5711888 -1631312 5713952 1628520 5711808 1628560 5711888 1631216 5713912 -1628560 5711888 1628608 5711984 1631216 5713912 1628520 5711808 -1631312 5713952 1629808 5706208 1628520 5711808 1631216 5713912 -1629808 5706208 1628488 5711752 1628520 5711808 1631216 5713912 -1628520 5711808 1628560 5711888 1631216 5713912 1629808 5706208 -1631312 5713952 1629808 5706208 1631216 5713912 1631200 5714128 -1631312 5713952 1629904 5706120 1629808 5706208 1631216 5713912 -1631312 5713952 1629984 5706008 1629904 5706120 1631216 5713912 -1629904 5706120 1629824 5706192 1629808 5706208 1631216 5713912 -1629808 5706208 1628520 5711808 1631216 5713912 1629904 5706120 -1631312 5713952 1629904 5706120 1631216 5713912 1631200 5714128 -1631216 5713912 1628632 5712112 1630872 5714136 1631024 5714112 -1631216 5713912 1628608 5711984 1628640 5712072 1628632 5712112 -1630872 5714136 1631144 5713936 1628632 5712112 1628600 5712168 -1628632 5712112 1631144 5713936 1631216 5713912 1628640 5712072 -1631216 5713912 1631144 5713936 1630872 5714136 1631024 5714112 -1631216 5713912 1631144 5713936 1631024 5714112 1631200 5714128 -1631216 5713912 1631144 5713936 1631200 5714128 1631312 5713952 -1631144 5713936 1630872 5714136 1631024 5714112 1631200 5714128 -1631144 5713936 1631200 5714128 1631216 5713912 1628640 5712072 -1631216 5713912 1628608 5711984 1628640 5712072 1631144 5713936 -1631144 5713936 1628632 5712112 1630872 5714136 1631024 5714112 -1628632 5712112 1630872 5714136 1631144 5713936 1628640 5712072 -1630872 5714136 1630808 5713880 1628632 5712112 1628600 5712168 -1630872 5714136 1630808 5713880 1628600 5712168 1628552 5712200 -1630808 5713880 1628632 5712112 1628600 5712168 1628552 5712200 -1631144 5713936 1630808 5713880 1630872 5714136 1631024 5714112 -1631144 5713936 1630808 5713880 1631024 5714112 1631200 5714128 -1631144 5713936 1628632 5712112 1630808 5713880 1631024 5714112 -1628632 5712112 1630808 5713880 1631144 5713936 1628640 5712072 -1631144 5713936 1631216 5713912 1628640 5712072 1630808 5713880 -1631216 5713912 1628608 5711984 1628640 5712072 1630808 5713880 -1630808 5713880 1631024 5714112 1631144 5713936 1631216 5713912 -1628640 5712072 1628632 5712112 1630808 5713880 1631216 5713912 -1630872 5714136 1631024 5714112 1630808 5713880 1628552 5712200 -1630808 5713880 1628640 5712072 1628632 5712112 1628600 5712168 -1630872 5714136 1630808 5713880 1628552 5712200 1627608 5714272 -1630872 5714136 1630808 5713880 1627608 5714272 1630856 5714248 -1627608 5714272 1627616 5714504 1630856 5714248 1630808 5713880 -1628552 5712200 1628512 5712216 1627608 5714272 1630808 5713880 -1630808 5713880 1628600 5712168 1628552 5712200 1627608 5714272 -1630872 5714136 1631024 5714112 1630808 5713880 1630856 5714248 -1630808 5713880 1628552 5712200 1627608 5714272 1630856 5714248 -1627608 5714272 1630760 5713848 1628552 5712200 1628512 5712216 -1628552 5712200 1630760 5713848 1630808 5713880 1628600 5712168 -1630808 5713880 1628632 5712112 1628600 5712168 1630760 5713848 -1628600 5712168 1628552 5712200 1630760 5713848 1628632 5712112 -1630760 5713848 1627608 5714272 1630808 5713880 1628632 5712112 -1630808 5713880 1628640 5712072 1628632 5712112 1630760 5713848 -1628632 5712112 1628600 5712168 1630760 5713848 1628640 5712072 -1630808 5713880 1631216 5713912 1628640 5712072 1630760 5713848 -1630808 5713880 1631144 5713936 1631216 5713912 1630760 5713848 -1631216 5713912 1628608 5711984 1628640 5712072 1630760 5713848 -1631216 5713912 1628560 5711888 1628608 5711984 1630760 5713848 -1631216 5713912 1628608 5711984 1630760 5713848 1630808 5713880 -1630808 5713880 1631216 5713912 1630760 5713848 1627608 5714272 -1628640 5712072 1628632 5712112 1630760 5713848 1628608 5711984 -1628552 5712200 1627608 5714272 1630760 5713848 1628600 5712168 -1630808 5713880 1630760 5713848 1627608 5714272 1630856 5714248 -1630808 5713880 1630760 5713848 1630856 5714248 1630872 5714136 -1627608 5714272 1627616 5714504 1630856 5714248 1630760 5713848 -1627616 5714504 1627640 5714808 1630856 5714248 1630760 5713848 -1630808 5713880 1630760 5713848 1630872 5714136 1631024 5714112 -1630808 5713880 1631216 5713912 1630760 5713848 1630872 5714136 -1630760 5713848 1628552 5712200 1627608 5714272 1627616 5714504 -1630760 5713848 1627616 5714504 1630856 5714248 1630872 5714136 -1628608 5711984 1630768 5713776 1631216 5713912 1628560 5711888 -1631216 5713912 1628520 5711808 1628560 5711888 1630768 5713776 -1628560 5711888 1628608 5711984 1630768 5713776 1628520 5711808 -1631216 5713912 1629808 5706208 1628520 5711808 1630768 5713776 -1630760 5713848 1630768 5713776 1628608 5711984 1628640 5712072 -1631216 5713912 1630768 5713776 1630760 5713848 1630808 5713880 -1631216 5713912 1630768 5713776 1630808 5713880 1631144 5713936 -1630768 5713776 1630760 5713848 1630808 5713880 1631144 5713936 -1630760 5713848 1630768 5713776 1628640 5712072 1628632 5712112 -1630760 5713848 1630768 5713776 1628632 5712112 1628600 5712168 -1630760 5713848 1630768 5713776 1628600 5712168 1628552 5712200 -1630768 5713776 1628632 5712112 1628600 5712168 1628552 5712200 -1630768 5713776 1628608 5711984 1628640 5712072 1628632 5712112 -1630768 5713776 1628640 5712072 1628632 5712112 1628600 5712168 -1630760 5713848 1630808 5713880 1630768 5713776 1628552 5712200 -1630760 5713848 1630768 5713776 1628552 5712200 1627608 5714272 -1628608 5711984 1628640 5712072 1630768 5713776 1628560 5711888 -1630768 5713776 1631144 5713936 1631216 5713912 1628520 5711808 -1628520 5711808 1630920 5713672 1629808 5706208 1628488 5711752 -1629808 5706208 1628464 5711736 1628488 5711752 1630920 5713672 -1631216 5713912 1630920 5713672 1628520 5711808 1630768 5713776 -1628520 5711808 1628560 5711888 1630768 5713776 1630920 5713672 -1628560 5711888 1628608 5711984 1630768 5713776 1630920 5713672 -1628560 5711888 1628608 5711984 1630920 5713672 1628520 5711808 -1630768 5713776 1631216 5713912 1630920 5713672 1628608 5711984 -1629808 5706208 1630920 5713672 1631216 5713912 1629904 5706120 -1629808 5706208 1630920 5713672 1629904 5706120 1629824 5706192 -1631216 5713912 1631312 5713952 1629904 5706120 1630920 5713672 -1631312 5713952 1629984 5706008 1629904 5706120 1630920 5713672 -1629904 5706120 1629808 5706208 1630920 5713672 1631312 5713952 -1628608 5711984 1628640 5712072 1630768 5713776 1630920 5713672 -1628608 5711984 1628640 5712072 1630920 5713672 1628560 5711888 -1630768 5713776 1631216 5713912 1630920 5713672 1628640 5712072 -1628640 5712072 1628632 5712112 1630768 5713776 1630920 5713672 -1630768 5713776 1631216 5713912 1630920 5713672 1628632 5712112 -1628632 5712112 1628600 5712168 1630768 5713776 1630920 5713672 -1628640 5712072 1628632 5712112 1630920 5713672 1628608 5711984 -1628520 5711808 1628560 5711888 1630920 5713672 1628488 5711752 -1631216 5713912 1630920 5713672 1630768 5713776 1631144 5713936 -1630768 5713776 1630808 5713880 1631144 5713936 1630920 5713672 -1630920 5713672 1628632 5712112 1630768 5713776 1630808 5713880 -1630768 5713776 1630760 5713848 1630808 5713880 1630920 5713672 -1631144 5713936 1631216 5713912 1630920 5713672 1630808 5713880 -1630920 5713672 1629904 5706120 1629808 5706208 1628488 5711752 -1631216 5713912 1631312 5713952 1630920 5713672 1631144 5713936 -1629904 5706120 1630936 5713680 1631312 5713952 1629984 5706008 -1630920 5713672 1630936 5713680 1629904 5706120 1629808 5706208 -1631312 5713952 1630936 5713680 1630920 5713672 1631216 5713912 -1631312 5713952 1629904 5706120 1630936 5713680 1631216 5713912 -1630936 5713680 1629904 5706120 1630920 5713672 1631216 5713912 -1630920 5713672 1631144 5713936 1631216 5713912 1630936 5713680 -1631216 5713912 1631312 5713952 1630936 5713680 1631144 5713936 -1630920 5713672 1630808 5713880 1631144 5713936 1630936 5713680 -1630920 5713672 1630768 5713776 1630808 5713880 1630936 5713680 -1630768 5713776 1630760 5713848 1630808 5713880 1630936 5713680 -1630808 5713880 1631144 5713936 1630936 5713680 1630768 5713776 -1630920 5713672 1630768 5713776 1630936 5713680 1629904 5706120 -1631144 5713936 1631216 5713912 1630936 5713680 1630808 5713880 -1631424 5714280 1631312 5713656 1631344 5713992 1631352 5714048 -1631344 5713992 1631312 5713656 1630152 5704824 1630096 5705696 -1631344 5713992 1631424 5714280 1631312 5713656 1630096 5705696 -1630152 5704824 1630080 5705344 1630096 5705696 1631312 5713656 -1631344 5713992 1631312 5713656 1630096 5705696 1630064 5705848 -1631344 5713992 1631424 5714280 1631312 5713656 1630064 5705848 -1631344 5713992 1631312 5713656 1630064 5705848 1631312 5713952 -1631344 5713992 1631424 5714280 1631312 5713656 1631312 5713952 -1631312 5713656 1630096 5705696 1630064 5705848 1631312 5713952 -1631312 5713656 1630152 5704824 1630096 5705696 1630064 5705848 -1631312 5713656 1631424 5714280 1630152 5704824 1630096 5705696 -1630152 5704824 1631312 5713656 1631424 5714280 1743800 5687320 -1631312 5713656 1631344 5713992 1631424 5714280 1743800 5687320 -1630152 5704824 1631312 5713656 1743800 5687320 1630136 5704624 -1630152 5704824 1630096 5705696 1631312 5713656 1743800 5687320 -1631424 5714280 1743888 5687504 1743800 5687320 1631312 5713656 -1630064 5705848 1629984 5706008 1631312 5713952 1631312 5713656 -1629984 5706008 1629904 5706120 1631312 5713952 1631312 5713656 -1629904 5706120 1630936 5713680 1631312 5713952 1631312 5713656 -1630936 5713680 1631216 5713912 1631312 5713952 1631312 5713656 -1630936 5713680 1631216 5713912 1631312 5713656 1629904 5706120 -1629904 5706120 1630936 5713680 1631312 5713656 1629984 5706008 -1631312 5713952 1631344 5713992 1631312 5713656 1631216 5713912 -1630064 5705848 1629984 5706008 1631312 5713656 1630096 5705696 -1630936 5713680 1631144 5713936 1631216 5713912 1631312 5713656 -1629904 5706120 1630920 5713672 1630936 5713680 1631312 5713656 -1630936 5713680 1631216 5713912 1631312 5713656 1630920 5713672 -1629904 5706120 1630920 5713672 1631312 5713656 1629984 5706008 -1629904 5706120 1629808 5706208 1630920 5713672 1631312 5713656 -1629904 5706120 1629808 5706208 1631312 5713656 1629984 5706008 -1629904 5706120 1629824 5706192 1629808 5706208 1631312 5713656 -1629808 5706208 1628488 5711752 1630920 5713672 1631312 5713656 -1629808 5706208 1628464 5711736 1628488 5711752 1631312 5713656 -1628488 5711752 1628520 5711808 1630920 5713672 1631312 5713656 -1629808 5706208 1628488 5711752 1631312 5713656 1629904 5706120 -1628520 5711808 1628560 5711888 1630920 5713672 1631312 5713656 -1628520 5711808 1628560 5711888 1631312 5713656 1628488 5711752 -1628560 5711888 1628608 5711984 1630920 5713672 1631312 5713656 -1628608 5711984 1628640 5712072 1630920 5713672 1631312 5713656 -1628560 5711888 1628608 5711984 1631312 5713656 1628520 5711808 -1628488 5711752 1628520 5711808 1631312 5713656 1629808 5706208 -1630920 5713672 1630936 5713680 1631312 5713656 1628608 5711984 -1629984 5706008 1629904 5706120 1631312 5713656 1630064 5705848 -1631424 5714280 1631440 5713680 1631312 5713656 1631344 5713992 -1631440 5713680 1743800 5687320 1631312 5713656 1631344 5713992 -1631312 5713656 1631312 5713952 1631344 5713992 1631440 5713680 -1631344 5713992 1631424 5714280 1631440 5713680 1631312 5713952 -1631312 5713656 1631312 5713952 1631440 5713680 1743800 5687320 -1631424 5714280 1743800 5687320 1631440 5713680 1631344 5713992 -1631424 5714280 1631440 5713680 1631344 5713992 1631352 5714048 -1631440 5713680 1631312 5713952 1631344 5713992 1631352 5714048 -1631424 5714280 1743800 5687320 1631440 5713680 1631352 5714048 -1631312 5713656 1631216 5713912 1631312 5713952 1631440 5713680 -1631424 5714280 1631440 5713680 1631352 5714048 1631336 5714072 -1631312 5713656 1631440 5713680 1743800 5687320 1630152 5704824 -1631312 5713656 1631312 5713952 1631440 5713680 1630152 5704824 -1631440 5713680 1631424 5714280 1743800 5687320 1630152 5704824 -1743800 5687320 1630136 5704624 1630152 5704824 1631440 5713680 -1631312 5713656 1631440 5713680 1630152 5704824 1630096 5705696 -1631312 5713656 1631312 5713952 1631440 5713680 1630096 5705696 -1630152 5704824 1630080 5705344 1630096 5705696 1631440 5713680 -1631312 5713656 1631440 5713680 1630096 5705696 1630064 5705848 -1631312 5713656 1631312 5713952 1631440 5713680 1630064 5705848 -1631312 5713656 1631440 5713680 1630064 5705848 1629984 5706008 -1631312 5713656 1631312 5713952 1631440 5713680 1629984 5706008 -1631440 5713680 1630096 5705696 1630064 5705848 1629984 5706008 -1631440 5713680 1630152 5704824 1630096 5705696 1630064 5705848 -1631440 5713680 1743800 5687320 1630152 5704824 1630096 5705696 -1743800 5687320 1631440 5713680 1631424 5714280 1743888 5687504 -1743800 5687320 1630152 5704824 1631440 5713680 1743888 5687504 -1631440 5713680 1631352 5714048 1631424 5714280 1743888 5687504 -1631424 5714280 1632696 5739008 1743888 5687504 1631440 5713680 -1631312 5713656 1631440 5713680 1629984 5706008 1629904 5706120 -1631312 5713656 1631312 5713952 1631440 5713680 1629904 5706120 -1631312 5713656 1631440 5713680 1629904 5706120 1629808 5706208 -1631312 5713656 1631312 5713952 1631440 5713680 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1631440 5713680 -1631440 5713680 1630064 5705848 1629984 5706008 1629904 5706120 -1631312 5713656 1631440 5713680 1629808 5706208 1628488 5711752 -1631440 5713680 1629984 5706008 1629904 5706120 1629808 5706208 -1631424 5714280 1631536 5713760 1631440 5713680 1631352 5714048 -1631536 5713760 1743888 5687504 1631440 5713680 1631352 5714048 -1631424 5714280 1743888 5687504 1631536 5713760 1631352 5714048 -1631440 5713680 1631344 5713992 1631352 5714048 1631536 5713760 -1631440 5713680 1631312 5713952 1631344 5713992 1631536 5713760 -1631440 5713680 1631312 5713656 1631312 5713952 1631536 5713760 -1631440 5713680 1631312 5713952 1631536 5713760 1743888 5687504 -1631352 5714048 1631424 5714280 1631536 5713760 1631344 5713992 -1631344 5713992 1631352 5714048 1631536 5713760 1631312 5713952 -1743888 5687504 1631536 5713760 1631424 5714280 1632696 5739008 -1631424 5714280 1631224 5733936 1632696 5739008 1631536 5713760 -1743888 5687504 1631440 5713680 1631536 5713760 1632696 5739008 -1631536 5713760 1631352 5714048 1631424 5714280 1632696 5739008 -1743888 5687504 1631536 5713760 1632696 5739008 1751256 5699792 -1631424 5714280 1631536 5713760 1631352 5714048 1631336 5714072 -1631440 5713680 1631536 5713760 1743888 5687504 1743800 5687320 -1631440 5713680 1631536 5713760 1743800 5687320 1630152 5704824 -1631440 5713680 1631312 5713952 1631536 5713760 1630152 5704824 -1631536 5713760 1632696 5739008 1743888 5687504 1743800 5687320 -1743800 5687320 1630136 5704624 1630152 5704824 1631536 5713760 -1631440 5713680 1631536 5713760 1630152 5704824 1630096 5705696 -1631536 5713760 1743800 5687320 1630152 5704824 1630096 5705696 -1631440 5713680 1631312 5713952 1631536 5713760 1630096 5705696 -1630152 5704824 1630080 5705344 1630096 5705696 1631536 5713760 -1631440 5713680 1631536 5713760 1630096 5705696 1630064 5705848 -1631440 5713680 1631312 5713952 1631536 5713760 1630064 5705848 -1631440 5713680 1631536 5713760 1630064 5705848 1629984 5706008 -1631440 5713680 1631312 5713952 1631536 5713760 1629984 5706008 -1631440 5713680 1631536 5713760 1629984 5706008 1629904 5706120 -1631536 5713760 1630096 5705696 1630064 5705848 1629984 5706008 -1631536 5713760 1630152 5704824 1630096 5705696 1630064 5705848 -1631536 5713760 1743888 5687504 1743800 5687320 1630152 5704824 -1631536 5713760 1631608 5713856 1743888 5687504 1743800 5687320 -1631536 5713760 1632696 5739008 1631608 5713856 1743800 5687320 -1631608 5713856 1632696 5739008 1743888 5687504 1743800 5687320 -1743888 5687504 1631608 5713856 1632696 5739008 1751256 5699792 -1632696 5739008 1631608 5713856 1631536 5713760 1631424 5714280 -1632696 5739008 1631608 5713856 1631424 5714280 1631224 5733936 -1631424 5714280 1629944 5726576 1631224 5733936 1631608 5713856 -1631224 5733936 1632696 5739008 1631608 5713856 1629944 5726576 -1629944 5726576 1629944 5726624 1631224 5733936 1631608 5713856 -1632696 5739008 1631608 5713856 1631224 5733936 1631240 5734008 -1631608 5713856 1743800 5687320 1631536 5713760 1631424 5714280 -1631536 5713760 1631352 5714048 1631424 5714280 1631608 5713856 -1631536 5713760 1631344 5713992 1631352 5714048 1631608 5713856 -1631536 5713760 1631344 5713992 1631608 5713856 1743800 5687320 -1631352 5714048 1631424 5714280 1631608 5713856 1631344 5713992 -1632696 5739008 1743888 5687504 1631608 5713856 1631224 5733936 -1631536 5713760 1631312 5713952 1631344 5713992 1631608 5713856 -1631608 5713856 1631352 5714048 1631424 5714280 1629944 5726576 -1631424 5714280 1629736 5726176 1629944 5726576 1631608 5713856 -1631352 5714048 1631336 5714072 1631424 5714280 1631608 5713856 -1631536 5713760 1631608 5713856 1743800 5687320 1630152 5704824 -1631536 5713760 1631608 5713856 1630152 5704824 1630096 5705696 -1631608 5713856 1743888 5687504 1743800 5687320 1630152 5704824 -1631536 5713760 1631344 5713992 1631608 5713856 1630096 5705696 -1743800 5687320 1630136 5704624 1630152 5704824 1631608 5713856 -1630152 5704824 1630080 5705344 1630096 5705696 1631608 5713856 -1631536 5713760 1631608 5713856 1630096 5705696 1630064 5705848 -1631608 5713856 1630152 5704824 1630096 5705696 1630064 5705848 -1631536 5713760 1631344 5713992 1631608 5713856 1630064 5705848 -1631536 5713760 1631608 5713856 1630064 5705848 1629984 5706008 -1631608 5713856 1743800 5687320 1630152 5704824 1630096 5705696 -1631608 5713856 1631688 5714048 1743888 5687504 1743800 5687320 -1631608 5713856 1631688 5714048 1743800 5687320 1630152 5704824 -1631688 5714048 1743888 5687504 1743800 5687320 1630152 5704824 -1631608 5713856 1632696 5739008 1631688 5714048 1630152 5704824 -1632696 5739008 1631688 5714048 1631608 5713856 1631224 5733936 -1631608 5713856 1629944 5726576 1631224 5733936 1631688 5714048 -1629944 5726576 1629944 5726624 1631224 5733936 1631688 5714048 -1631608 5713856 1631424 5714280 1629944 5726576 1631688 5714048 -1629944 5726576 1631224 5733936 1631688 5714048 1631424 5714280 -1632696 5739008 1631688 5714048 1631224 5733936 1631240 5734008 -1631688 5714048 1630152 5704824 1631608 5713856 1631424 5714280 -1631224 5733936 1632696 5739008 1631688 5714048 1629944 5726576 -1631688 5714048 1632696 5739008 1743888 5687504 1743800 5687320 -1632696 5739008 1743888 5687504 1631688 5714048 1631224 5733936 -1743888 5687504 1631688 5714048 1632696 5739008 1751256 5699792 -1743800 5687320 1630136 5704624 1630152 5704824 1631688 5714048 -1630152 5704824 1631608 5713856 1631688 5714048 1630136 5704624 -1743800 5687320 1630136 5704624 1631688 5714048 1743888 5687504 -1743800 5687320 1663944 5646256 1630136 5704624 1631688 5714048 -1630136 5704624 1630128 5704656 1630152 5704824 1631688 5714048 -1631608 5713856 1631352 5714048 1631424 5714280 1631688 5714048 -1631424 5714280 1629944 5726576 1631688 5714048 1631352 5714048 -1631608 5713856 1631344 5713992 1631352 5714048 1631688 5714048 -1631608 5713856 1631352 5714048 1631688 5714048 1630152 5704824 -1631424 5714280 1629736 5726176 1629944 5726576 1631688 5714048 -1629944 5726576 1631224 5733936 1631688 5714048 1629736 5726176 -1629736 5726176 1629904 5726504 1629944 5726576 1631688 5714048 -1631424 5714280 1629736 5726176 1631688 5714048 1631352 5714048 -1631424 5714280 1629624 5725984 1629736 5726176 1631688 5714048 -1631424 5714280 1629624 5725984 1631688 5714048 1631352 5714048 -1631424 5714280 1629600 5725952 1629624 5725984 1631688 5714048 -1629736 5726176 1629944 5726576 1631688 5714048 1629624 5725984 -1631352 5714048 1631336 5714072 1631424 5714280 1631688 5714048 -1631608 5713856 1631688 5714048 1630152 5704824 1630096 5705696 -1631688 5714048 1631680 5714104 1629944 5726576 1631224 5733936 -1629944 5726576 1631680 5714104 1629736 5726176 1629904 5726504 -1629944 5726576 1629944 5726624 1631224 5733936 1631680 5714104 -1631688 5714048 1631680 5714104 1631224 5733936 1632696 5739008 -1631680 5714104 1629944 5726576 1631224 5733936 1632696 5739008 -1631224 5733936 1631240 5734008 1632696 5739008 1631680 5714104 -1631688 5714048 1629736 5726176 1631680 5714104 1632696 5739008 -1631688 5714048 1631680 5714104 1632696 5739008 1743888 5687504 -1631680 5714104 1631224 5733936 1632696 5739008 1743888 5687504 -1631688 5714048 1631680 5714104 1743888 5687504 1743800 5687320 -1631688 5714048 1629736 5726176 1631680 5714104 1743888 5687504 -1631680 5714104 1629736 5726176 1629944 5726576 1631224 5733936 -1632696 5739008 1751256 5699792 1743888 5687504 1631680 5714104 -1629736 5726176 1631680 5714104 1631688 5714048 1629624 5725984 -1631680 5714104 1743888 5687504 1631688 5714048 1629624 5725984 -1629736 5726176 1629944 5726576 1631680 5714104 1629624 5725984 -1631688 5714048 1631424 5714280 1629624 5725984 1631680 5714104 -1631688 5714048 1631352 5714048 1631424 5714280 1631680 5714104 -1631688 5714048 1631352 5714048 1631680 5714104 1743888 5687504 -1631424 5714280 1629600 5725952 1629624 5725984 1631680 5714104 -1631424 5714280 1629624 5725984 1631680 5714104 1631352 5714048 -1631688 5714048 1631608 5713856 1631352 5714048 1631680 5714104 -1629624 5725984 1629736 5726176 1631680 5714104 1631424 5714280 -1631352 5714048 1631336 5714072 1631424 5714280 1631680 5714104 -1629624 5725984 1631632 5714160 1631424 5714280 1629600 5725952 -1629624 5725984 1631680 5714104 1631632 5714160 1629600 5725952 -1631632 5714160 1631680 5714104 1631424 5714280 1629600 5725952 -1631424 5714280 1631632 5714160 1631680 5714104 1631352 5714048 -1631680 5714104 1631688 5714048 1631352 5714048 1631632 5714160 -1631632 5714160 1629624 5725984 1631680 5714104 1631688 5714048 -1631424 5714280 1629600 5725952 1631632 5714160 1631352 5714048 -1631352 5714048 1631424 5714280 1631632 5714160 1631688 5714048 -1631424 5714280 1629568 5725912 1629600 5725952 1631632 5714160 -1631424 5714280 1627448 5719840 1629568 5725912 1631632 5714160 -1631424 5714280 1629568 5725912 1631632 5714160 1631352 5714048 -1629600 5725952 1629624 5725984 1631632 5714160 1629568 5725912 -1631688 5714048 1631608 5713856 1631352 5714048 1631632 5714160 -1631680 5714104 1631632 5714160 1629624 5725984 1629736 5726176 -1631680 5714104 1631688 5714048 1631632 5714160 1629736 5726176 -1631680 5714104 1631632 5714160 1629736 5726176 1629944 5726576 -1629736 5726176 1629904 5726504 1629944 5726576 1631632 5714160 -1631680 5714104 1631632 5714160 1629944 5726576 1631224 5733936 -1631680 5714104 1631688 5714048 1631632 5714160 1629944 5726576 -1631632 5714160 1629600 5725952 1629624 5725984 1629736 5726176 -1631632 5714160 1629624 5725984 1629736 5726176 1629944 5726576 -1631424 5714280 1631632 5714160 1631352 5714048 1631336 5714072 -1631608 5713856 1631480 5713088 1630096 5705696 1630064 5705848 -1631480 5713088 1630152 5704824 1630096 5705696 1630064 5705848 -1631608 5713856 1630152 5704824 1631480 5713088 1630064 5705848 -1630096 5705696 1631480 5713088 1630152 5704824 1630080 5705344 -1631608 5713856 1631480 5713088 1630064 5705848 1631536 5713760 -1631480 5713088 1630096 5705696 1630064 5705848 1631536 5713760 -1631608 5713856 1630152 5704824 1631480 5713088 1631536 5713760 -1630064 5705848 1629984 5706008 1631536 5713760 1631480 5713088 -1630064 5705848 1629984 5706008 1631480 5713088 1630096 5705696 -1629984 5706008 1631440 5713680 1631536 5713760 1631480 5713088 -1629984 5706008 1629904 5706120 1631440 5713680 1631480 5713088 -1631440 5713680 1631536 5713760 1631480 5713088 1629904 5706120 -1629984 5706008 1629904 5706120 1631480 5713088 1630064 5705848 -1631536 5713760 1631608 5713856 1631480 5713088 1631440 5713680 -1630152 5704824 1631480 5713088 1631608 5713856 1631688 5714048 -1630152 5704824 1631480 5713088 1631688 5714048 1630136 5704624 -1630152 5704824 1630096 5705696 1631480 5713088 1630136 5704624 -1631480 5713088 1631536 5713760 1631608 5713856 1631688 5714048 -1631688 5714048 1743800 5687320 1630136 5704624 1631480 5713088 -1630136 5704624 1630152 5704824 1631480 5713088 1743800 5687320 -1631688 5714048 1743888 5687504 1743800 5687320 1631480 5713088 -1743800 5687320 1663944 5646256 1630136 5704624 1631480 5713088 -1630152 5704824 1631480 5713088 1630136 5704624 1630128 5704656 -1631480 5713088 1631608 5713856 1631688 5714048 1743800 5687320 -1629904 5706120 1629808 5706208 1631440 5713680 1631480 5713088 -1629808 5706208 1631312 5713656 1631440 5713680 1631480 5713088 -1629904 5706120 1629824 5706192 1629808 5706208 1631480 5713088 -1629904 5706120 1629808 5706208 1631480 5713088 1629984 5706008 -1631440 5713680 1631536 5713760 1631480 5713088 1631312 5713656 -1629808 5706208 1628488 5711752 1631312 5713656 1631480 5713088 -1629808 5706208 1628464 5711736 1628488 5711752 1631480 5713088 -1631312 5713656 1631440 5713680 1631480 5713088 1628488 5711752 -1628488 5711752 1628520 5711808 1631312 5713656 1631480 5713088 -1628520 5711808 1628560 5711888 1631312 5713656 1631480 5713088 -1631312 5713656 1631440 5713680 1631480 5713088 1628560 5711888 -1628488 5711752 1628520 5711808 1631480 5713088 1629808 5706208 -1628560 5711888 1628608 5711984 1631312 5713656 1631480 5713088 -1628560 5711888 1628608 5711984 1631480 5713088 1628520 5711808 -1628608 5711984 1630920 5713672 1631312 5713656 1631480 5713088 -1631312 5713656 1631440 5713680 1631480 5713088 1630920 5713672 -1628608 5711984 1628640 5712072 1630920 5713672 1631480 5713088 -1630920 5713672 1631312 5713656 1631480 5713088 1628640 5712072 -1628640 5712072 1628632 5712112 1630920 5713672 1631480 5713088 -1628608 5711984 1628640 5712072 1631480 5713088 1628560 5711888 -1628520 5711808 1628560 5711888 1631480 5713088 1628488 5711752 -1630920 5713672 1630936 5713680 1631312 5713656 1631480 5713088 -1629808 5706208 1628488 5711752 1631480 5713088 1629904 5706120 -1743800 5687320 1631608 5713120 1631688 5714048 1743888 5687504 -1631480 5713088 1631608 5713120 1743800 5687320 1630136 5704624 -1631480 5713088 1631608 5713120 1630136 5704624 1630152 5704824 -1631480 5713088 1631608 5713120 1630152 5704824 1630096 5705696 -1631608 5713120 1630136 5704624 1630152 5704824 1630096 5705696 -1631480 5713088 1631608 5713120 1630096 5705696 1630064 5705848 -1631480 5713088 1631608 5713120 1630064 5705848 1629984 5706008 -1631608 5713120 1630096 5705696 1630064 5705848 1629984 5706008 -1631608 5713120 1630152 5704824 1630096 5705696 1630064 5705848 -1631480 5713088 1631688 5714048 1631608 5713120 1629984 5706008 -1631608 5713120 1631688 5714048 1743800 5687320 1630136 5704624 -1743800 5687320 1663944 5646256 1630136 5704624 1631608 5713120 -1631608 5713120 1743800 5687320 1630136 5704624 1630152 5704824 -1630136 5704624 1630128 5704656 1630152 5704824 1631608 5713120 -1630152 5704824 1630080 5705344 1630096 5705696 1631608 5713120 -1631480 5713088 1631608 5713120 1629984 5706008 1629904 5706120 -1631608 5713120 1630064 5705848 1629984 5706008 1629904 5706120 -1631480 5713088 1631688 5714048 1631608 5713120 1629904 5706120 -1631480 5713088 1631608 5713120 1629904 5706120 1629808 5706208 -1631480 5713088 1631688 5714048 1631608 5713120 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1631608 5713120 -1631608 5713120 1629984 5706008 1629904 5706120 1629808 5706208 -1631688 5714048 1631608 5713120 1631480 5713088 1631608 5713856 -1631608 5713120 1629808 5706208 1631480 5713088 1631608 5713856 -1631480 5713088 1631536 5713760 1631608 5713856 1631608 5713120 -1631480 5713088 1631536 5713760 1631608 5713120 1629808 5706208 -1631688 5714048 1743800 5687320 1631608 5713120 1631608 5713856 -1631480 5713088 1631440 5713680 1631536 5713760 1631608 5713120 -1631480 5713088 1631440 5713680 1631608 5713120 1629808 5706208 -1631536 5713760 1631608 5713856 1631608 5713120 1631440 5713680 -1631480 5713088 1631312 5713656 1631440 5713680 1631608 5713120 -1631608 5713856 1631688 5714048 1631608 5713120 1631536 5713760 -1631480 5713088 1631608 5713120 1629808 5706208 1628488 5711752 -1743800 5687320 1631632 5713112 1631608 5713120 1631688 5714048 -1743800 5687320 1631632 5713112 1631688 5714048 1743888 5687504 -1631632 5713112 1630136 5704624 1631608 5713120 1631688 5714048 -1631608 5713120 1631608 5713856 1631688 5714048 1631632 5713112 -1631688 5714048 1743800 5687320 1631632 5713112 1631608 5713856 -1631608 5713120 1631608 5713856 1631632 5713112 1630136 5704624 -1743800 5687320 1630136 5704624 1631632 5713112 1631688 5714048 -1630136 5704624 1631632 5713112 1743800 5687320 1663944 5646256 -1631608 5713120 1631632 5713112 1630136 5704624 1630152 5704824 -1631608 5713120 1631632 5713112 1630152 5704824 1630096 5705696 -1631608 5713120 1631632 5713112 1630096 5705696 1630064 5705848 -1631632 5713112 1630152 5704824 1630096 5705696 1630064 5705848 -1631608 5713120 1631632 5713112 1630064 5705848 1629984 5706008 -1631608 5713120 1631632 5713112 1629984 5706008 1629904 5706120 -1631632 5713112 1630064 5705848 1629984 5706008 1629904 5706120 -1631632 5713112 1630096 5705696 1630064 5705848 1629984 5706008 -1631608 5713120 1631608 5713856 1631632 5713112 1629904 5706120 -1631632 5713112 1743800 5687320 1630136 5704624 1630152 5704824 -1631632 5713112 1630136 5704624 1630152 5704824 1630096 5705696 -1630136 5704624 1630128 5704656 1630152 5704824 1631632 5713112 -1630152 5704824 1630080 5705344 1630096 5705696 1631632 5713112 -1631608 5713120 1631632 5713112 1629904 5706120 1629808 5706208 -1631632 5713112 1629984 5706008 1629904 5706120 1629808 5706208 -1631608 5713120 1631608 5713856 1631632 5713112 1629808 5706208 -1629904 5706120 1629824 5706192 1629808 5706208 1631632 5713112 -1631608 5713120 1631632 5713112 1629808 5706208 1631480 5713088 -1631608 5713120 1631608 5713856 1631632 5713112 1631480 5713088 -1631632 5713112 1629904 5706120 1629808 5706208 1631480 5713088 -1631608 5713120 1631536 5713760 1631608 5713856 1631632 5713112 -1631608 5713120 1631440 5713680 1631536 5713760 1631632 5713112 -1631608 5713120 1631536 5713760 1631632 5713112 1631480 5713088 -1631608 5713856 1631688 5714048 1631632 5713112 1631536 5713760 -1629808 5706208 1628488 5711752 1631480 5713088 1631632 5713112 -1743800 5687320 1631744 5713152 1631688 5714048 1743888 5687504 -1631688 5714048 1631680 5714104 1743888 5687504 1631744 5713152 -1631688 5714048 1631744 5713152 1631632 5713112 1631608 5713856 -1631632 5713112 1631536 5713760 1631608 5713856 1631744 5713152 -1631608 5713856 1631688 5714048 1631744 5713152 1631536 5713760 -1631744 5713152 1743800 5687320 1631632 5713112 1631536 5713760 -1631632 5713112 1631744 5713152 1743800 5687320 1630136 5704624 -1631632 5713112 1631744 5713152 1630136 5704624 1630152 5704824 -1631632 5713112 1631536 5713760 1631744 5713152 1630152 5704824 -1631744 5713152 1743800 5687320 1630136 5704624 1630152 5704824 -1743800 5687320 1630136 5704624 1631744 5713152 1743888 5687504 -1631744 5713152 1631608 5713856 1631688 5714048 1743888 5687504 -1743800 5687320 1663944 5646256 1630136 5704624 1631744 5713152 -1663944 5646256 1628712 5701448 1630136 5704624 1631744 5713152 -1743800 5687320 1664040 5646192 1663944 5646256 1631744 5713152 -1630136 5704624 1630152 5704824 1631744 5713152 1663944 5646256 -1743800 5687320 1663944 5646256 1631744 5713152 1743888 5687504 -1631632 5713112 1631744 5713152 1630152 5704824 1630096 5705696 -1631632 5713112 1631744 5713152 1630096 5705696 1630064 5705848 -1631632 5713112 1631744 5713152 1630064 5705848 1629984 5706008 -1631744 5713152 1630096 5705696 1630064 5705848 1629984 5706008 -1631632 5713112 1631744 5713152 1629984 5706008 1629904 5706120 -1631632 5713112 1631744 5713152 1629904 5706120 1629808 5706208 -1631744 5713152 1630064 5705848 1629984 5706008 1629904 5706120 -1631744 5713152 1630136 5704624 1630152 5704824 1630096 5705696 -1631632 5713112 1631536 5713760 1631744 5713152 1629904 5706120 -1631744 5713152 1630152 5704824 1630096 5705696 1630064 5705848 -1630136 5704624 1630128 5704656 1630152 5704824 1631744 5713152 -1630152 5704824 1630080 5705344 1630096 5705696 1631744 5713152 -1631632 5713112 1631608 5713120 1631536 5713760 1631744 5713152 -1631608 5713120 1631440 5713680 1631536 5713760 1631744 5713152 -1631536 5713760 1631608 5713856 1631744 5713152 1631440 5713680 -1631632 5713112 1631608 5713120 1631744 5713152 1629904 5706120 -1631608 5713120 1631480 5713088 1631440 5713680 1631744 5713152 -1631608 5713120 1631440 5713680 1631744 5713152 1631632 5713112 -1631744 5713152 1631808 5713216 1743888 5687504 1743800 5687320 -1743888 5687504 1631808 5713216 1631688 5714048 1631680 5714104 -1631744 5713152 1631808 5713216 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1631808 5713216 -1631808 5713216 1743888 5687504 1743800 5687320 1663944 5646256 -1631744 5713152 1631688 5714048 1631808 5713216 1663944 5646256 -1631688 5714048 1631808 5713216 1631744 5713152 1631608 5713856 -1631744 5713152 1631536 5713760 1631608 5713856 1631808 5713216 -1631744 5713152 1631440 5713680 1631536 5713760 1631808 5713216 -1631744 5713152 1631608 5713120 1631440 5713680 1631808 5713216 -1631536 5713760 1631608 5713856 1631808 5713216 1631440 5713680 -1631440 5713680 1631536 5713760 1631808 5713216 1631608 5713120 -1631808 5713216 1663944 5646256 1631744 5713152 1631608 5713120 -1631608 5713856 1631688 5714048 1631808 5713216 1631536 5713760 -1631808 5713216 1631688 5714048 1743888 5687504 1743800 5687320 -1631688 5714048 1743888 5687504 1631808 5713216 1631608 5713856 -1631744 5713152 1631808 5713216 1663944 5646256 1630136 5704624 -1663944 5646256 1628712 5701448 1630136 5704624 1631808 5713216 -1631744 5713152 1631808 5713216 1630136 5704624 1630152 5704824 -1631744 5713152 1631808 5713216 1630152 5704824 1630096 5705696 -1631808 5713216 1630136 5704624 1630152 5704824 1630096 5705696 -1631808 5713216 1743800 5687320 1663944 5646256 1630136 5704624 -1631744 5713152 1631608 5713120 1631808 5713216 1630096 5705696 -1631808 5713216 1663944 5646256 1630136 5704624 1630152 5704824 -1631744 5713152 1631808 5713216 1630096 5705696 1630064 5705848 -1631744 5713152 1631808 5713216 1630064 5705848 1629984 5706008 -1631808 5713216 1630152 5704824 1630096 5705696 1630064 5705848 -1631744 5713152 1631608 5713120 1631808 5713216 1630064 5705848 -1630136 5704624 1630128 5704656 1630152 5704824 1631808 5713216 -1630152 5704824 1630080 5705344 1630096 5705696 1631808 5713216 -1631608 5713120 1631480 5713088 1631440 5713680 1631808 5713216 -1631744 5713152 1631632 5713112 1631608 5713120 1631808 5713216 -1743888 5687504 1631888 5713320 1631688 5714048 1631680 5714104 -1743888 5687504 1631888 5713320 1631680 5714104 1632696 5739008 -1631680 5714104 1631224 5733936 1632696 5739008 1631888 5713320 -1631888 5713320 1631688 5714048 1631680 5714104 1632696 5739008 -1631808 5713216 1631888 5713320 1743888 5687504 1743800 5687320 -1631808 5713216 1631888 5713320 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1631888 5713320 -1631808 5713216 1631888 5713320 1663944 5646256 1630136 5704624 -1663944 5646256 1628712 5701448 1630136 5704624 1631888 5713320 -1631888 5713320 1743800 5687320 1663944 5646256 1630136 5704624 -1631888 5713320 1743888 5687504 1743800 5687320 1663944 5646256 -1631808 5713216 1631688 5714048 1631888 5713320 1630136 5704624 -1631688 5714048 1631888 5713320 1631808 5713216 1631608 5713856 -1631808 5713216 1631536 5713760 1631608 5713856 1631888 5713320 -1631808 5713216 1631440 5713680 1631536 5713760 1631888 5713320 -1631808 5713216 1631608 5713120 1631440 5713680 1631888 5713320 -1631536 5713760 1631608 5713856 1631888 5713320 1631440 5713680 -1631888 5713320 1630136 5704624 1631808 5713216 1631440 5713680 -1631608 5713856 1631688 5714048 1631888 5713320 1631536 5713760 -1743888 5687504 1743800 5687320 1631888 5713320 1632696 5739008 -1631888 5713320 1631608 5713856 1631688 5714048 1631680 5714104 -1743888 5687504 1631888 5713320 1632696 5739008 1751256 5699792 -1631808 5713216 1631888 5713320 1630136 5704624 1630152 5704824 -1631808 5713216 1631888 5713320 1630152 5704824 1630096 5705696 -1631808 5713216 1631888 5713320 1630096 5705696 1630064 5705848 -1631888 5713320 1663944 5646256 1630136 5704624 1630152 5704824 -1631808 5713216 1631440 5713680 1631888 5713320 1630096 5705696 -1631888 5713320 1630136 5704624 1630152 5704824 1630096 5705696 -1630136 5704624 1630128 5704656 1630152 5704824 1631888 5713320 -1630152 5704824 1630080 5705344 1630096 5705696 1631888 5713320 -1632696 5739008 1631912 5713400 1631888 5713320 1631680 5714104 -1632696 5739008 1631912 5713400 1631680 5714104 1631224 5733936 -1631680 5714104 1629944 5726576 1631224 5733936 1631912 5713400 -1632696 5739008 1631912 5713400 1631224 5733936 1631240 5734008 -1631888 5713320 1631688 5714048 1631680 5714104 1631912 5713400 -1631912 5713400 1631688 5714048 1631680 5714104 1631224 5733936 -1631888 5713320 1631912 5713400 1743888 5687504 1743800 5687320 -1631888 5713320 1631912 5713400 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1631912 5713400 -1631888 5713320 1631912 5713400 1663944 5646256 1630136 5704624 -1663944 5646256 1628712 5701448 1630136 5704624 1631912 5713400 -1631888 5713320 1631912 5713400 1630136 5704624 1630152 5704824 -1631912 5713400 1743800 5687320 1663944 5646256 1630136 5704624 -1631912 5713400 1743888 5687504 1743800 5687320 1663944 5646256 -1631912 5713400 1630136 5704624 1631888 5713320 1631688 5714048 -1631888 5713320 1631608 5713856 1631688 5714048 1631912 5713400 -1631688 5714048 1631680 5714104 1631912 5713400 1631608 5713856 -1631888 5713320 1631536 5713760 1631608 5713856 1631912 5713400 -1631888 5713320 1631440 5713680 1631536 5713760 1631912 5713400 -1631888 5713320 1631808 5713216 1631440 5713680 1631912 5713400 -1631536 5713760 1631608 5713856 1631912 5713400 1631440 5713680 -1631888 5713320 1631440 5713680 1631912 5713400 1630136 5704624 -1631608 5713856 1631688 5714048 1631912 5713400 1631536 5713760 -1631912 5713400 1632696 5739008 1743888 5687504 1743800 5687320 -1632696 5739008 1743888 5687504 1631912 5713400 1631224 5733936 -1743888 5687504 1631912 5713400 1632696 5739008 1751256 5699792 -1631224 5733936 1631904 5713440 1631680 5714104 1629944 5726576 -1631912 5713400 1631904 5713440 1631224 5733936 1632696 5739008 -1631224 5733936 1631240 5734008 1632696 5739008 1631904 5713440 -1631680 5714104 1631904 5713440 1631912 5713400 1631688 5714048 -1631912 5713400 1631608 5713856 1631688 5714048 1631904 5713440 -1631688 5714048 1631680 5714104 1631904 5713440 1631608 5713856 -1631912 5713400 1631536 5713760 1631608 5713856 1631904 5713440 -1631608 5713856 1631688 5714048 1631904 5713440 1631536 5713760 -1631912 5713400 1631440 5713680 1631536 5713760 1631904 5713440 -1631912 5713400 1631888 5713320 1631440 5713680 1631904 5713440 -1631888 5713320 1631808 5713216 1631440 5713680 1631904 5713440 -1631808 5713216 1631608 5713120 1631440 5713680 1631904 5713440 -1631888 5713320 1631808 5713216 1631904 5713440 1631912 5713400 -1631440 5713680 1631536 5713760 1631904 5713440 1631808 5713216 -1631536 5713760 1631608 5713856 1631904 5713440 1631440 5713680 -1631912 5713400 1631888 5713320 1631904 5713440 1632696 5739008 -1631912 5713400 1631904 5713440 1632696 5739008 1743888 5687504 -1631904 5713440 1631680 5714104 1631224 5733936 1632696 5739008 -1631680 5714104 1631224 5733936 1631904 5713440 1631688 5714048 -1631440 5713680 1631880 5713456 1631904 5713440 1631808 5713216 -1631904 5713440 1631888 5713320 1631808 5713216 1631880 5713456 -1631440 5713680 1631880 5713456 1631808 5713216 1631608 5713120 -1631808 5713216 1631744 5713152 1631608 5713120 1631880 5713456 -1631904 5713440 1631912 5713400 1631888 5713320 1631880 5713456 -1631888 5713320 1631808 5713216 1631880 5713456 1631912 5713400 -1631808 5713216 1631608 5713120 1631880 5713456 1631888 5713320 -1631904 5713440 1631880 5713456 1631536 5713760 1631608 5713856 -1631904 5713440 1631880 5713456 1631608 5713856 1631688 5714048 -1631904 5713440 1631880 5713456 1631688 5714048 1631680 5714104 -1631880 5713456 1631536 5713760 1631608 5713856 1631688 5714048 -1631880 5713456 1631688 5714048 1631904 5713440 1631912 5713400 -1631880 5713456 1631440 5713680 1631536 5713760 1631608 5713856 -1631440 5713680 1631536 5713760 1631880 5713456 1631608 5713120 -1631440 5713680 1631880 5713456 1631608 5713120 1631480 5713088 -1631880 5713456 1631864 5713480 1631688 5714048 1631904 5713440 -1631688 5714048 1631680 5714104 1631904 5713440 1631864 5713480 -1631608 5713856 1631864 5713480 1631880 5713456 1631536 5713760 -1631880 5713456 1631440 5713680 1631536 5713760 1631864 5713480 -1631536 5713760 1631608 5713856 1631864 5713480 1631440 5713680 -1631880 5713456 1631440 5713680 1631864 5713480 1631904 5713440 -1631880 5713456 1631608 5713120 1631440 5713680 1631864 5713480 -1631880 5713456 1631808 5713216 1631608 5713120 1631864 5713480 -1631808 5713216 1631744 5713152 1631608 5713120 1631864 5713480 -1631880 5713456 1631888 5713320 1631808 5713216 1631864 5713480 -1631880 5713456 1631912 5713400 1631888 5713320 1631864 5713480 -1631808 5713216 1631608 5713120 1631864 5713480 1631888 5713320 -1631440 5713680 1631536 5713760 1631864 5713480 1631608 5713120 -1631880 5713456 1631888 5713320 1631864 5713480 1631904 5713440 -1631608 5713120 1631440 5713680 1631864 5713480 1631808 5713216 -1631864 5713480 1631608 5713856 1631688 5714048 1631904 5713440 -1631608 5713856 1631688 5714048 1631864 5713480 1631536 5713760 -1631608 5713120 1631480 5713088 1631440 5713680 1631864 5713480 -1631864 5713480 1631808 5713504 1631440 5713680 1631536 5713760 -1631864 5713480 1631808 5713504 1631536 5713760 1631608 5713856 -1631808 5713504 1631440 5713680 1631536 5713760 1631608 5713856 -1631608 5713120 1631808 5713504 1631864 5713480 1631808 5713216 -1631608 5713120 1631808 5713504 1631808 5713216 1631744 5713152 -1631864 5713480 1631888 5713320 1631808 5713216 1631808 5713504 -1631864 5713480 1631880 5713456 1631888 5713320 1631808 5713504 -1631880 5713456 1631912 5713400 1631888 5713320 1631808 5713504 -1631888 5713320 1631808 5713216 1631808 5713504 1631880 5713456 -1631808 5713216 1631608 5713120 1631808 5713504 1631888 5713320 -1631864 5713480 1631880 5713456 1631808 5713504 1631608 5713856 -1631864 5713480 1631808 5713504 1631608 5713856 1631688 5714048 -1631808 5713504 1631536 5713760 1631608 5713856 1631688 5714048 -1631864 5713480 1631808 5713504 1631688 5714048 1631904 5713440 -1631864 5713480 1631880 5713456 1631808 5713504 1631688 5714048 -1631808 5713504 1631608 5713120 1631440 5713680 1631536 5713760 -1631608 5713120 1631440 5713680 1631808 5713504 1631808 5713216 -1631440 5713680 1631808 5713504 1631608 5713120 1631480 5713088 -1631808 5713504 1631776 5713528 1631536 5713760 1631608 5713856 -1631808 5713504 1631776 5713528 1631608 5713856 1631688 5714048 -1631776 5713528 1631536 5713760 1631608 5713856 1631688 5714048 -1631808 5713504 1631776 5713528 1631688 5714048 1631864 5713480 -1631776 5713528 1631608 5713856 1631688 5714048 1631864 5713480 -1631688 5714048 1631904 5713440 1631864 5713480 1631776 5713528 -1631440 5713680 1631776 5713528 1631808 5713504 1631608 5713120 -1631808 5713504 1631608 5713120 1631776 5713528 1631864 5713480 -1631808 5713504 1631808 5713216 1631608 5713120 1631776 5713528 -1631808 5713216 1631744 5713152 1631608 5713120 1631776 5713528 -1631808 5713504 1631888 5713320 1631808 5713216 1631776 5713528 -1631608 5713120 1631440 5713680 1631776 5713528 1631808 5713216 -1631808 5713504 1631808 5713216 1631776 5713528 1631864 5713480 -1631776 5713528 1631440 5713680 1631536 5713760 1631608 5713856 -1631440 5713680 1631536 5713760 1631776 5713528 1631608 5713120 -1631440 5713680 1631776 5713528 1631608 5713120 1631480 5713088 -1631608 5713120 1631744 5713512 1631776 5713528 1631808 5713216 -1631608 5713120 1631744 5713512 1631808 5713216 1631744 5713152 -1631776 5713528 1631808 5713504 1631808 5713216 1631744 5713512 -1631808 5713504 1631888 5713320 1631808 5713216 1631744 5713512 -1631808 5713504 1631880 5713456 1631888 5713320 1631744 5713512 -1631808 5713216 1631608 5713120 1631744 5713512 1631888 5713320 -1631808 5713504 1631888 5713320 1631744 5713512 1631776 5713528 -1631744 5713512 1631440 5713680 1631776 5713528 1631808 5713504 -1631776 5713528 1631744 5713512 1631440 5713680 1631536 5713760 -1631776 5713528 1631744 5713512 1631536 5713760 1631608 5713856 -1631776 5713528 1631808 5713504 1631744 5713512 1631536 5713760 -1631744 5713512 1631608 5713120 1631440 5713680 1631536 5713760 -1631608 5713120 1631440 5713680 1631744 5713512 1631808 5713216 -1631440 5713680 1631744 5713512 1631608 5713120 1631480 5713088 -1631744 5713512 1631552 5713472 1631440 5713680 1631536 5713760 -1631744 5713512 1631552 5713472 1631536 5713760 1631776 5713528 -1631744 5713512 1631608 5713120 1631552 5713472 1631536 5713760 -1631608 5713120 1631552 5713472 1631744 5713512 1631808 5713216 -1631608 5713120 1631552 5713472 1631808 5713216 1631744 5713152 -1631744 5713512 1631888 5713320 1631808 5713216 1631552 5713472 -1631552 5713472 1631536 5713760 1631744 5713512 1631808 5713216 -1631552 5713472 1631744 5713512 1631808 5713216 1631744 5713152 -1631552 5713472 1631608 5713120 1631440 5713680 1631536 5713760 -1631608 5713120 1631440 5713680 1631552 5713472 1631744 5713152 -1631440 5713680 1631552 5713472 1631608 5713120 1631480 5713088 -1631440 5713680 1631536 5713760 1631552 5713472 1631480 5713088 -1631440 5713680 1631552 5713472 1631480 5713088 1631312 5713656 -1631440 5713680 1631536 5713760 1631552 5713472 1631312 5713656 -1631480 5713088 1630920 5713672 1631312 5713656 1631552 5713472 -1631552 5713472 1631744 5713152 1631608 5713120 1631480 5713088 -1631552 5713472 1631608 5713120 1631480 5713088 1631312 5713656 -1631608 5713120 1631552 5713472 1631744 5713152 1631632 5713112 -1631312 5713656 1631448 5713440 1631480 5713088 1630920 5713672 -1631480 5713088 1628640 5712072 1630920 5713672 1631448 5713440 -1631552 5713472 1631448 5713440 1631312 5713656 1631440 5713680 -1631552 5713472 1631448 5713440 1631440 5713680 1631536 5713760 -1631552 5713472 1631480 5713088 1631448 5713440 1631440 5713680 -1631312 5713656 1631448 5713440 1630920 5713672 1630936 5713680 -1631448 5713440 1631480 5713088 1630920 5713672 1630936 5713680 -1631312 5713656 1631440 5713680 1631448 5713440 1630936 5713680 -1631448 5713440 1631552 5713472 1631480 5713088 1630920 5713672 -1631480 5713088 1631448 5713440 1631552 5713472 1631608 5713120 -1631448 5713440 1631440 5713680 1631552 5713472 1631608 5713120 -1631552 5713472 1631744 5713152 1631608 5713120 1631448 5713440 -1631480 5713088 1630920 5713672 1631448 5713440 1631608 5713120 -1630920 5713672 1631304 5713328 1631480 5713088 1628640 5712072 -1631448 5713440 1631304 5713328 1630920 5713672 1630936 5713680 -1631480 5713088 1628608 5711984 1628640 5712072 1631304 5713328 -1630920 5713672 1631304 5713328 1628640 5712072 1628632 5712112 -1631304 5713328 1631480 5713088 1628640 5712072 1628632 5712112 -1630920 5713672 1631304 5713328 1628632 5712112 1630768 5713776 -1631448 5713440 1631304 5713328 1630936 5713680 1631312 5713656 -1631304 5713328 1630920 5713672 1630936 5713680 1631312 5713656 -1631448 5713440 1631304 5713328 1631312 5713656 1631440 5713680 -1631448 5713440 1631480 5713088 1631304 5713328 1631312 5713656 -1631480 5713088 1631304 5713328 1631448 5713440 1631608 5713120 -1630920 5713672 1630936 5713680 1631304 5713328 1628632 5712112 -1631304 5713328 1631448 5713440 1631480 5713088 1628640 5712072 -1630920 5713672 1631216 5713296 1628632 5712112 1630768 5713776 -1628632 5712112 1628600 5712168 1630768 5713776 1631216 5713296 -1628632 5712112 1631216 5713296 1631304 5713328 1628640 5712072 -1631304 5713328 1631480 5713088 1628640 5712072 1631216 5713296 -1631480 5713088 1628608 5711984 1628640 5712072 1631216 5713296 -1628640 5712072 1628632 5712112 1631216 5713296 1631480 5713088 -1631304 5713328 1631216 5713296 1630920 5713672 1630936 5713680 -1631304 5713328 1631216 5713296 1630936 5713680 1631312 5713656 -1631304 5713328 1631216 5713296 1631312 5713656 1631448 5713440 -1631216 5713296 1630920 5713672 1630936 5713680 1631312 5713656 -1631216 5713296 1631312 5713656 1631304 5713328 1631480 5713088 -1631304 5713328 1631448 5713440 1631480 5713088 1631216 5713296 -1630920 5713672 1630936 5713680 1631216 5713296 1630768 5713776 -1631216 5713296 1628640 5712072 1628632 5712112 1630768 5713776 -1631216 5713296 1631120 5713320 1630768 5713776 1630920 5713672 -1630768 5713776 1631120 5713320 1628632 5712112 1628600 5712168 -1631216 5713296 1631120 5713320 1630920 5713672 1630936 5713680 -1631120 5713320 1630768 5713776 1630920 5713672 1630936 5713680 -1631216 5713296 1631120 5713320 1630936 5713680 1631312 5713656 -1631216 5713296 1631120 5713320 1631312 5713656 1631304 5713328 -1631312 5713656 1631448 5713440 1631304 5713328 1631120 5713320 -1631120 5713320 1630936 5713680 1631312 5713656 1631304 5713328 -1631120 5713320 1630920 5713672 1630936 5713680 1631312 5713656 -1631216 5713296 1628632 5712112 1631120 5713320 1631304 5713328 -1628632 5712112 1631120 5713320 1631216 5713296 1628640 5712072 -1631216 5713296 1631480 5713088 1628640 5712072 1631120 5713320 -1631216 5713296 1631304 5713328 1631480 5713088 1631120 5713320 -1631480 5713088 1628608 5711984 1628640 5712072 1631120 5713320 -1631120 5713320 1631304 5713328 1631216 5713296 1631480 5713088 -1628640 5712072 1628632 5712112 1631120 5713320 1631480 5713088 -1631120 5713320 1628632 5712112 1630768 5713776 1630920 5713672 -1628632 5712112 1630768 5713776 1631120 5713320 1628640 5712072 -1631120 5713320 1631120 5713408 1631312 5713656 1631304 5713328 -1631120 5713320 1631120 5713408 1631304 5713328 1631216 5713296 -1631312 5713656 1631448 5713440 1631304 5713328 1631120 5713408 -1631120 5713408 1631312 5713656 1631304 5713328 1631216 5713296 -1630936 5713680 1631120 5713408 1631120 5713320 1630920 5713672 -1631120 5713320 1630768 5713776 1630920 5713672 1631120 5713408 -1631120 5713320 1630920 5713672 1631120 5713408 1631216 5713296 -1631120 5713408 1630936 5713680 1631312 5713656 1631304 5713328 -1630936 5713680 1631312 5713656 1631120 5713408 1630920 5713672 -1631120 5713408 1631144 5713488 1631312 5713656 1631304 5713328 -1631312 5713656 1631448 5713440 1631304 5713328 1631144 5713488 -1631312 5713656 1631440 5713680 1631448 5713440 1631144 5713488 -1631120 5713408 1631144 5713488 1631304 5713328 1631216 5713296 -1631304 5713328 1631120 5713408 1631144 5713488 1631448 5713440 -1631120 5713408 1630936 5713680 1631144 5713488 1631304 5713328 -1630936 5713680 1631144 5713488 1631120 5713408 1630920 5713672 -1631120 5713408 1631120 5713320 1630920 5713672 1631144 5713488 -1631144 5713488 1631304 5713328 1631120 5713408 1630920 5713672 -1631144 5713488 1630936 5713680 1631312 5713656 1631448 5713440 -1630936 5713680 1631312 5713656 1631144 5713488 1630920 5713672 -1631144 5713488 1631120 5713536 1631312 5713656 1631448 5713440 -1630936 5713680 1631120 5713536 1631144 5713488 1630920 5713672 -1631144 5713488 1631120 5713408 1630920 5713672 1631120 5713536 -1631120 5713408 1631120 5713320 1630920 5713672 1631120 5713536 -1631120 5713536 1631312 5713656 1631144 5713488 1631120 5713408 -1630920 5713672 1630936 5713680 1631120 5713536 1631120 5713408 -1630936 5713680 1631312 5713656 1631120 5713536 1630920 5713672 -1630920 5713672 1631064 5713552 1631120 5713408 1631120 5713320 -1630920 5713672 1631064 5713552 1631120 5713320 1630768 5713776 -1631120 5713408 1631064 5713552 1631120 5713536 1631144 5713488 -1631120 5713536 1631064 5713552 1630920 5713672 1630936 5713680 -1631064 5713552 1630936 5713680 1631120 5713536 1631144 5713488 -1631120 5713536 1631064 5713552 1630936 5713680 1631312 5713656 -1631064 5713552 1630920 5713672 1630936 5713680 1631312 5713656 -1631120 5713536 1631064 5713552 1631312 5713656 1631144 5713488 -1631120 5713536 1631144 5713488 1631064 5713552 1631312 5713656 -1630920 5713672 1630936 5713680 1631064 5713552 1631120 5713320 -1631064 5713552 1631144 5713488 1631120 5713408 1631120 5713320 -1631120 5713320 1630960 5713552 1630920 5713672 1631064 5713552 -1631120 5713320 1630960 5713552 1631064 5713552 1631120 5713408 -1630960 5713552 1630920 5713672 1631064 5713552 1631120 5713408 -1630768 5713776 1630960 5713552 1631120 5713320 1628632 5712112 -1630768 5713776 1630960 5713552 1628632 5712112 1628600 5712168 -1631120 5713320 1628640 5712072 1628632 5712112 1630960 5713552 -1630920 5713672 1630936 5713680 1631064 5713552 1630960 5713552 -1631064 5713552 1631120 5713408 1630960 5713552 1630936 5713680 -1630936 5713680 1631312 5713656 1631064 5713552 1630960 5713552 -1630960 5713552 1630768 5713776 1630920 5713672 1630936 5713680 -1631064 5713552 1631144 5713488 1631120 5713408 1630960 5713552 -1630768 5713776 1630920 5713672 1630960 5713552 1628632 5712112 -1631120 5713320 1628632 5712112 1630960 5713552 1631120 5713408 -1630768 5713776 1630824 5713472 1628632 5712112 1628600 5712168 -1630768 5713776 1630824 5713472 1628600 5712168 1628552 5712200 -1628632 5712112 1630824 5713472 1630960 5713552 1631120 5713320 -1628632 5712112 1630824 5713472 1631120 5713320 1628640 5712072 -1631120 5713320 1631480 5713088 1628640 5712072 1630824 5713472 -1630824 5713472 1630960 5713552 1631120 5713320 1628640 5712072 -1630960 5713552 1630824 5713472 1630768 5713776 1630920 5713672 -1630960 5713552 1630824 5713472 1630920 5713672 1630936 5713680 -1630824 5713472 1630920 5713672 1630960 5713552 1631120 5713320 -1630960 5713552 1631120 5713408 1631120 5713320 1630824 5713472 -1630960 5713552 1631064 5713552 1631120 5713408 1630824 5713472 -1631120 5713320 1628640 5712072 1630824 5713472 1631120 5713408 -1630960 5713552 1631120 5713408 1630824 5713472 1630920 5713672 -1630768 5713776 1630920 5713672 1630824 5713472 1628600 5712168 -1630824 5713472 1628640 5712072 1628632 5712112 1628600 5712168 -1628640 5712072 1630752 5713384 1631120 5713320 1631480 5713088 -1628640 5712072 1630752 5713384 1631480 5713088 1628608 5711984 -1631120 5713320 1631216 5713296 1631480 5713088 1630752 5713384 -1631120 5713320 1630752 5713384 1630824 5713472 1631120 5713408 -1630824 5713472 1630752 5713384 1628640 5712072 1628632 5712112 -1630824 5713472 1631120 5713320 1630752 5713384 1628632 5712112 -1630824 5713472 1630752 5713384 1628632 5712112 1628600 5712168 -1630824 5713472 1630752 5713384 1628600 5712168 1630768 5713776 -1628600 5712168 1628552 5712200 1630768 5713776 1630752 5713384 -1628552 5712200 1630760 5713848 1630768 5713776 1630752 5713384 -1628552 5712200 1630760 5713848 1630752 5713384 1628600 5712168 -1630768 5713776 1630824 5713472 1630752 5713384 1630760 5713848 -1628552 5712200 1627608 5714272 1630760 5713848 1630752 5713384 -1630752 5713384 1628640 5712072 1628632 5712112 1628600 5712168 -1630824 5713472 1630752 5713384 1630768 5713776 1630920 5713672 -1630824 5713472 1631120 5713320 1630752 5713384 1630768 5713776 -1630752 5713384 1628632 5712112 1628600 5712168 1628552 5712200 -1628640 5712072 1628632 5712112 1630752 5713384 1631480 5713088 -1630752 5713384 1630824 5713472 1631120 5713320 1631480 5713088 -1628640 5712072 1630712 5713264 1631480 5713088 1628608 5711984 -1631480 5713088 1628560 5711888 1628608 5711984 1630712 5713264 -1631480 5713088 1630712 5713264 1630752 5713384 1631120 5713320 -1631480 5713088 1630712 5713264 1631120 5713320 1631216 5713296 -1630752 5713384 1630712 5713264 1628640 5712072 1628632 5712112 -1630752 5713384 1630712 5713264 1628632 5712112 1628600 5712168 -1630752 5713384 1630712 5713264 1628600 5712168 1628552 5712200 -1630752 5713384 1630712 5713264 1628552 5712200 1630760 5713848 -1630752 5713384 1630712 5713264 1630760 5713848 1630768 5713776 -1630712 5713264 1628552 5712200 1630760 5713848 1630768 5713776 -1630752 5713384 1630712 5713264 1630768 5713776 1630824 5713472 -1628552 5712200 1627608 5714272 1630760 5713848 1630712 5713264 -1630712 5713264 1628632 5712112 1628600 5712168 1628552 5712200 -1630712 5713264 1628600 5712168 1628552 5712200 1630760 5713848 -1630712 5713264 1628640 5712072 1628632 5712112 1628600 5712168 -1630712 5713264 1630768 5713776 1630752 5713384 1631120 5713320 -1630752 5713384 1630824 5713472 1631120 5713320 1630712 5713264 -1628640 5712072 1628632 5712112 1630712 5713264 1628608 5711984 -1630712 5713264 1631120 5713320 1631480 5713088 1628608 5711984 -1630712 5713264 1630728 5713184 1628608 5711984 1628640 5712072 -1628608 5711984 1630728 5713184 1631480 5713088 1628560 5711888 -1631480 5713088 1628520 5711808 1628560 5711888 1630728 5713184 -1628560 5711888 1628608 5711984 1630728 5713184 1628520 5711808 -1631480 5713088 1628488 5711752 1628520 5711808 1630728 5713184 -1630712 5713264 1630728 5713184 1628640 5712072 1628632 5712112 -1630728 5713184 1628608 5711984 1628640 5712072 1628632 5712112 -1630712 5713264 1630728 5713184 1628632 5712112 1628600 5712168 -1630712 5713264 1630728 5713184 1628600 5712168 1628552 5712200 -1630728 5713184 1628640 5712072 1628632 5712112 1628600 5712168 -1630712 5713264 1631480 5713088 1630728 5713184 1628600 5712168 -1631480 5713088 1630728 5713184 1630712 5713264 1631120 5713320 -1631480 5713088 1630728 5713184 1631120 5713320 1631216 5713296 -1631480 5713088 1630728 5713184 1631216 5713296 1631304 5713328 -1630712 5713264 1630752 5713384 1631120 5713320 1630728 5713184 -1630752 5713384 1630824 5713472 1631120 5713320 1630728 5713184 -1630728 5713184 1628600 5712168 1630712 5713264 1630752 5713384 -1630728 5713184 1630752 5713384 1631120 5713320 1631216 5713296 -1630728 5713184 1628560 5711888 1628608 5711984 1628640 5712072 -1630728 5713184 1631216 5713296 1631480 5713088 1628520 5711808 -1630728 5713184 1630752 5713152 1628520 5711808 1628560 5711888 -1630728 5713184 1630752 5713152 1628560 5711888 1628608 5711984 -1630752 5713152 1628520 5711808 1628560 5711888 1628608 5711984 -1628520 5711808 1630752 5713152 1631480 5713088 1628488 5711752 -1631480 5713088 1629808 5706208 1628488 5711752 1630752 5713152 -1630728 5713184 1630752 5713152 1628608 5711984 1628640 5712072 -1630728 5713184 1630752 5713152 1628640 5712072 1628632 5712112 -1630752 5713152 1628560 5711888 1628608 5711984 1628640 5712072 -1630728 5713184 1630752 5713152 1628632 5712112 1628600 5712168 -1630752 5713152 1628608 5711984 1628640 5712072 1628632 5712112 -1630728 5713184 1631480 5713088 1630752 5713152 1628632 5712112 -1631480 5713088 1630752 5713152 1630728 5713184 1631216 5713296 -1631480 5713088 1630752 5713152 1631216 5713296 1631304 5713328 -1630728 5713184 1631120 5713320 1631216 5713296 1630752 5713152 -1630728 5713184 1630752 5713384 1631120 5713320 1630752 5713152 -1631120 5713320 1631216 5713296 1630752 5713152 1630752 5713384 -1630728 5713184 1630712 5713264 1630752 5713384 1630752 5713152 -1630752 5713384 1630824 5713472 1631120 5713320 1630752 5713152 -1630752 5713384 1631120 5713320 1630752 5713152 1630712 5713264 -1630752 5713152 1628632 5712112 1630728 5713184 1630712 5713264 -1631216 5713296 1631480 5713088 1630752 5713152 1631120 5713320 -1630752 5713152 1628488 5711752 1628520 5711808 1628560 5711888 -1630752 5713152 1631216 5713296 1631480 5713088 1628488 5711752 -1628488 5711752 1630800 5713112 1631480 5713088 1629808 5706208 -1630752 5713152 1630800 5713112 1628488 5711752 1628520 5711808 -1630752 5713152 1630800 5713112 1628520 5711808 1628560 5711888 -1630752 5713152 1630800 5713112 1628560 5711888 1628608 5711984 -1630752 5713152 1630800 5713112 1628608 5711984 1628640 5712072 -1630800 5713112 1628560 5711888 1628608 5711984 1628640 5712072 -1630800 5713112 1628488 5711752 1628520 5711808 1628560 5711888 -1630752 5713152 1630800 5713112 1628640 5712072 1628632 5712112 -1630800 5713112 1628520 5711808 1628560 5711888 1628608 5711984 -1630752 5713152 1631480 5713088 1630800 5713112 1628640 5712072 -1631480 5713088 1630800 5713112 1630752 5713152 1631216 5713296 -1631480 5713088 1630800 5713112 1631216 5713296 1631304 5713328 -1630752 5713152 1631120 5713320 1631216 5713296 1630800 5713112 -1630752 5713152 1630752 5713384 1631120 5713320 1630800 5713112 -1630752 5713384 1630824 5713472 1631120 5713320 1630800 5713112 -1630752 5713152 1630712 5713264 1630752 5713384 1630800 5713112 -1630752 5713384 1631120 5713320 1630800 5713112 1630712 5713264 -1630752 5713152 1630728 5713184 1630712 5713264 1630800 5713112 -1631120 5713320 1631216 5713296 1630800 5713112 1630752 5713384 -1630800 5713112 1628640 5712072 1630752 5713152 1630712 5713264 -1631216 5713296 1631480 5713088 1630800 5713112 1631120 5713320 -1630800 5713112 1631480 5713088 1628488 5711752 1628520 5711808 -1631480 5713088 1628488 5711752 1630800 5713112 1631216 5713296 -1628488 5711752 1630864 5713080 1631480 5713088 1629808 5706208 -1630800 5713112 1630864 5713080 1628488 5711752 1628520 5711808 -1630800 5713112 1630864 5713080 1628520 5711808 1628560 5711888 -1630800 5713112 1630864 5713080 1628560 5711888 1628608 5711984 -1630800 5713112 1630864 5713080 1628608 5711984 1628640 5712072 -1630800 5713112 1630864 5713080 1628640 5712072 1630752 5713152 -1630864 5713080 1628520 5711808 1628560 5711888 1628608 5711984 -1630864 5713080 1628560 5711888 1628608 5711984 1628640 5712072 -1630864 5713080 1628488 5711752 1628520 5711808 1628560 5711888 -1630800 5713112 1631480 5713088 1630864 5713080 1628640 5712072 -1631480 5713088 1630864 5713080 1630800 5713112 1631216 5713296 -1631480 5713088 1630864 5713080 1631216 5713296 1631304 5713328 -1630800 5713112 1631120 5713320 1631216 5713296 1630864 5713080 -1630800 5713112 1630752 5713384 1631120 5713320 1630864 5713080 -1630800 5713112 1630712 5713264 1630752 5713384 1630864 5713080 -1630752 5713384 1630824 5713472 1631120 5713320 1630864 5713080 -1631120 5713320 1631216 5713296 1630864 5713080 1630752 5713384 -1630864 5713080 1628640 5712072 1630800 5713112 1630752 5713384 -1631216 5713296 1631480 5713088 1630864 5713080 1631120 5713320 -1630864 5713080 1631480 5713088 1628488 5711752 1628520 5711808 -1631480 5713088 1628488 5711752 1630864 5713080 1631216 5713296 -1628488 5711752 1631000 5713048 1631480 5713088 1629808 5706208 -1628488 5711752 1631000 5713048 1629808 5706208 1628464 5711736 -1630864 5713080 1631000 5713048 1628488 5711752 1628520 5711808 -1630864 5713080 1631000 5713048 1628520 5711808 1628560 5711888 -1630864 5713080 1631000 5713048 1628560 5711888 1628608 5711984 -1630864 5713080 1631000 5713048 1628608 5711984 1628640 5712072 -1631000 5713048 1628520 5711808 1628560 5711888 1628608 5711984 -1631000 5713048 1628488 5711752 1628520 5711808 1628560 5711888 -1630864 5713080 1631480 5713088 1631000 5713048 1628608 5711984 -1631480 5713088 1631000 5713048 1630864 5713080 1631216 5713296 -1631480 5713088 1631000 5713048 1631216 5713296 1631304 5713328 -1630864 5713080 1631120 5713320 1631216 5713296 1631000 5713048 -1630864 5713080 1630752 5713384 1631120 5713320 1631000 5713048 -1631000 5713048 1628608 5711984 1630864 5713080 1631120 5713320 -1631216 5713296 1631480 5713088 1631000 5713048 1631120 5713320 -1628488 5711752 1628520 5711808 1631000 5713048 1629808 5706208 -1631000 5713048 1631216 5713296 1631480 5713088 1629808 5706208 -1631480 5713088 1631632 5713112 1629808 5706208 1631000 5713048 -1631000 5713048 1631264 5713048 1629808 5706208 1628488 5711752 -1629808 5706208 1628464 5711736 1628488 5711752 1631264 5713048 -1631000 5713048 1631264 5713048 1628488 5711752 1628520 5711808 -1631000 5713048 1631480 5713088 1631264 5713048 1628488 5711752 -1631480 5713088 1631264 5713048 1631000 5713048 1631216 5713296 -1631480 5713088 1631264 5713048 1631216 5713296 1631304 5713328 -1631480 5713088 1631264 5713048 1631304 5713328 1631448 5713440 -1631000 5713048 1631120 5713320 1631216 5713296 1631264 5713048 -1631264 5713048 1628488 5711752 1631000 5713048 1631216 5713296 -1631264 5713048 1631000 5713048 1631216 5713296 1631304 5713328 -1631264 5713048 1631480 5713088 1629808 5706208 1628488 5711752 -1631480 5713088 1629808 5706208 1631264 5713048 1631304 5713328 -1629808 5706208 1631264 5713048 1631480 5713088 1631632 5713112 -1628712 5701448 1627744 5696960 1626296 5698872 1628632 5701384 -1663880 5646248 1627744 5696960 1628712 5701448 1663944 5646256 -1626296 5698872 1627744 5696960 1663880 5646248 1626248 5698816 -1663880 5646248 1625936 5698488 1626248 5698816 1627744 5696960 -1626248 5698816 1626296 5698872 1627744 5696960 1625936 5698488 -1625936 5698488 1626032 5698672 1626248 5698816 1627744 5696960 -1626296 5698872 1626344 5698984 1628632 5701384 1627744 5696960 -1628632 5701384 1628712 5701448 1627744 5696960 1626344 5698984 -1626344 5698984 1628288 5701200 1628632 5701384 1627744 5696960 -1628632 5701384 1628712 5701448 1627744 5696960 1628288 5701200 -1626344 5698984 1628128 5701160 1628288 5701200 1627744 5696960 -1626344 5698984 1627968 5701176 1628128 5701160 1627744 5696960 -1626344 5698984 1628128 5701160 1627744 5696960 1626296 5698872 -1628288 5701200 1628632 5701384 1627744 5696960 1628128 5701160 -1628712 5701448 1630136 5704624 1663944 5646256 1627744 5696960 -1663944 5646256 1663880 5646248 1627744 5696960 1630136 5704624 -1630136 5704624 1631912 5713400 1663944 5646256 1627744 5696960 -1663880 5646248 1625936 5698488 1627744 5696960 1663944 5646256 -1628712 5701448 1630136 5704624 1627744 5696960 1628632 5701384 -1627744 5696960 1626248 5698816 1626296 5698872 1626344 5698984 -1628712 5701448 1630064 5704496 1630136 5704624 1627744 5696960 -1663880 5646248 1625808 5698384 1625936 5698488 1627744 5696960 -1625936 5698488 1626248 5698816 1627744 5696960 1625808 5698384 -1663880 5646248 1625808 5698384 1627744 5696960 1663944 5646256 -1663880 5646248 1623704 5697048 1625808 5698384 1627744 5696960 -1623704 5697048 1623728 5697072 1625808 5698384 1627744 5696960 -1623728 5697072 1625776 5698376 1625808 5698384 1627744 5696960 -1623728 5697072 1625776 5698376 1627744 5696960 1623704 5697048 -1663880 5646248 1615440 5689168 1623704 5697048 1627744 5696960 -1663880 5646248 1663776 5646144 1615440 5689168 1627744 5696960 -1663776 5646144 1612640 5685184 1615440 5689168 1627744 5696960 -1663776 5646144 1612640 5685184 1627744 5696960 1663880 5646248 -1663776 5646144 1612616 5685152 1612640 5685184 1627744 5696960 -1615440 5689168 1623704 5697048 1627744 5696960 1612640 5685184 -1612640 5685184 1615392 5689120 1615440 5689168 1627744 5696960 -1623728 5697072 1623760 5697136 1625776 5698376 1627744 5696960 -1625776 5698376 1625808 5698384 1627744 5696960 1623760 5697136 -1623728 5697072 1623760 5697136 1627744 5696960 1623704 5697048 -1615440 5689168 1615488 5689272 1623704 5697048 1627744 5696960 -1615440 5689168 1615488 5689272 1627744 5696960 1612640 5685184 -1615488 5689272 1623632 5697024 1623704 5697048 1627744 5696960 -1615488 5689272 1623464 5696976 1623632 5697024 1627744 5696960 -1615488 5689272 1623376 5696968 1623464 5696976 1627744 5696960 -1623464 5696976 1623496 5696992 1623632 5697024 1627744 5696960 -1615488 5689272 1623464 5696976 1627744 5696960 1615440 5689168 -1623632 5697024 1623704 5697048 1627744 5696960 1623464 5696976 -1663880 5646248 1663776 5646144 1627744 5696960 1663944 5646256 -1623760 5697136 1625240 5698480 1625776 5698376 1627744 5696960 -1623704 5697048 1623728 5697072 1627744 5696960 1623632 5697024 -1625808 5698384 1625936 5698488 1627744 5696960 1625776 5698376 -1627744 5696960 1627784 5696912 1663944 5646256 1663880 5646248 -1663944 5646256 1627784 5696912 1630136 5704624 1631912 5713400 -1630136 5704624 1627784 5696912 1627744 5696960 1628712 5701448 -1627744 5696960 1627784 5696912 1663880 5646248 1663776 5646144 -1627784 5696912 1663944 5646256 1663880 5646248 1663776 5646144 -1627744 5696960 1627784 5696912 1663776 5646144 1612640 5685184 -1627744 5696960 1627784 5696912 1612640 5685184 1615440 5689168 -1627784 5696912 1663776 5646144 1612640 5685184 1615440 5689168 -1663776 5646144 1612616 5685152 1612640 5685184 1627784 5696912 -1627744 5696960 1627784 5696912 1615440 5689168 1615488 5689272 -1627784 5696912 1612640 5685184 1615440 5689168 1615488 5689272 -1612640 5685184 1615392 5689120 1615440 5689168 1627784 5696912 -1627744 5696960 1627784 5696912 1615488 5689272 1623464 5696976 -1615488 5689272 1623376 5696968 1623464 5696976 1627784 5696912 -1627744 5696960 1627784 5696912 1623464 5696976 1623632 5697024 -1627784 5696912 1615440 5689168 1615488 5689272 1623464 5696976 -1623464 5696976 1623496 5696992 1623632 5697024 1627784 5696912 -1627784 5696912 1615488 5689272 1623464 5696976 1623632 5697024 -1627744 5696960 1627784 5696912 1623632 5697024 1623704 5697048 -1627784 5696912 1623464 5696976 1623632 5697024 1623704 5697048 -1627784 5696912 1663880 5646248 1663776 5646144 1612640 5685184 -1627744 5696960 1628632 5701384 1628712 5701448 1627784 5696912 -1627744 5696960 1628288 5701200 1628632 5701384 1627784 5696912 -1628712 5701448 1630136 5704624 1627784 5696912 1628632 5701384 -1627744 5696960 1628632 5701384 1627784 5696912 1623704 5697048 -1627784 5696912 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1627784 5696912 1628712 5701448 -1630136 5704624 1627784 5696912 1628712 5701448 1630064 5704496 -1627744 5696960 1627784 5696912 1623704 5697048 1623728 5697072 -1627744 5696960 1627784 5696912 1623728 5697072 1623760 5697136 -1627784 5696912 1623632 5697024 1623704 5697048 1623728 5697072 -1627744 5696960 1628632 5701384 1627784 5696912 1623728 5697072 -1663944 5646256 1627880 5696848 1630136 5704624 1631912 5713400 -1627784 5696912 1627880 5696848 1663944 5646256 1663880 5646248 -1627784 5696912 1627880 5696848 1663880 5646248 1663776 5646144 -1627784 5696912 1627880 5696848 1663776 5646144 1612640 5685184 -1627880 5696848 1663880 5646248 1663776 5646144 1612640 5685184 -1627784 5696912 1627880 5696848 1612640 5685184 1615440 5689168 -1627784 5696912 1627880 5696848 1615440 5689168 1615488 5689272 -1627880 5696848 1612640 5685184 1615440 5689168 1615488 5689272 -1663776 5646144 1612616 5685152 1612640 5685184 1627880 5696848 -1627784 5696912 1627880 5696848 1615488 5689272 1623464 5696976 -1615488 5689272 1623376 5696968 1623464 5696976 1627880 5696848 -1627880 5696848 1615440 5689168 1615488 5689272 1623464 5696976 -1612640 5685184 1615392 5689120 1615440 5689168 1627880 5696848 -1627784 5696912 1627880 5696848 1623464 5696976 1623632 5697024 -1627784 5696912 1627880 5696848 1623632 5697024 1623704 5697048 -1627880 5696848 1615488 5689272 1623464 5696976 1623632 5697024 -1623464 5696976 1623496 5696992 1623632 5697024 1627880 5696848 -1627880 5696848 1623464 5696976 1623632 5697024 1623704 5697048 -1627784 5696912 1627880 5696848 1623704 5697048 1623728 5697072 -1627880 5696848 1663776 5646144 1612640 5685184 1615440 5689168 -1627880 5696848 1663944 5646256 1663880 5646248 1663776 5646144 -1627784 5696912 1630136 5704624 1627880 5696848 1623704 5697048 -1630136 5704624 1627880 5696848 1627784 5696912 1628712 5701448 -1627784 5696912 1628632 5701384 1628712 5701448 1627880 5696848 -1627784 5696912 1627744 5696960 1628632 5701384 1627880 5696848 -1627744 5696960 1628288 5701200 1628632 5701384 1627880 5696848 -1627744 5696960 1628128 5701160 1628288 5701200 1627880 5696848 -1628632 5701384 1628712 5701448 1627880 5696848 1628288 5701200 -1627744 5696960 1628288 5701200 1627880 5696848 1627784 5696912 -1627880 5696848 1623704 5697048 1627784 5696912 1627744 5696960 -1628712 5701448 1630136 5704624 1627880 5696848 1628632 5701384 -1627880 5696848 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1627880 5696848 1628712 5701448 -1630136 5704624 1627880 5696848 1628712 5701448 1630064 5704496 -1628712 5701448 1629944 5704312 1630064 5704496 1627880 5696848 -1627880 5696848 1628632 5701384 1628712 5701448 1630064 5704496 -1630136 5704624 1663944 5646256 1627880 5696848 1630064 5704496 -1630136 5704624 1627880 5696848 1630064 5704496 1630112 5704600 -1663944 5646256 1627928 5696800 1630136 5704624 1631912 5713400 -1627880 5696848 1627928 5696800 1663944 5646256 1663880 5646248 -1627880 5696848 1627928 5696800 1663880 5646248 1663776 5646144 -1627880 5696848 1627928 5696800 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1627928 5696800 -1627880 5696848 1627928 5696800 1612640 5685184 1615440 5689168 -1627928 5696800 1663776 5646144 1612640 5685184 1615440 5689168 -1627880 5696848 1627928 5696800 1615440 5689168 1615488 5689272 -1627880 5696848 1627928 5696800 1615488 5689272 1623464 5696976 -1615488 5689272 1623376 5696968 1623464 5696976 1627928 5696800 -1627928 5696800 1615440 5689168 1615488 5689272 1623464 5696976 -1627880 5696848 1627928 5696800 1623464 5696976 1623632 5697024 -1627928 5696800 1615488 5689272 1623464 5696976 1623632 5697024 -1612640 5685184 1615392 5689120 1615440 5689168 1627928 5696800 -1623464 5696976 1623496 5696992 1623632 5697024 1627928 5696800 -1627880 5696848 1627928 5696800 1623632 5697024 1623704 5697048 -1627880 5696848 1627928 5696800 1623704 5697048 1627784 5696912 -1627928 5696800 1623464 5696976 1623632 5697024 1623704 5697048 -1627928 5696800 1623632 5697024 1623704 5697048 1627784 5696912 -1623704 5697048 1623728 5697072 1627784 5696912 1627928 5696800 -1627928 5696800 1612640 5685184 1615440 5689168 1615488 5689272 -1627928 5696800 1663880 5646248 1663776 5646144 1612640 5685184 -1627928 5696800 1663944 5646256 1663880 5646248 1663776 5646144 -1627880 5696848 1630136 5704624 1627928 5696800 1627784 5696912 -1630136 5704624 1627928 5696800 1627880 5696848 1630064 5704496 -1627928 5696800 1627784 5696912 1627880 5696848 1630064 5704496 -1627928 5696800 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1627928 5696800 1630064 5704496 -1627880 5696848 1628712 5701448 1630064 5704496 1627928 5696800 -1628712 5701448 1629944 5704312 1630064 5704496 1627928 5696800 -1627880 5696848 1628632 5701384 1628712 5701448 1627928 5696800 -1627880 5696848 1628288 5701200 1628632 5701384 1627928 5696800 -1627880 5696848 1628632 5701384 1627928 5696800 1627784 5696912 -1630064 5704496 1630136 5704624 1627928 5696800 1628712 5701448 -1628712 5701448 1630064 5704496 1627928 5696800 1628632 5701384 -1630136 5704624 1627928 5696800 1630064 5704496 1630112 5704600 -1663944 5646256 1627968 5696752 1630136 5704624 1631912 5713400 -1627928 5696800 1627968 5696752 1663944 5646256 1663880 5646248 -1627928 5696800 1627968 5696752 1663880 5646248 1663776 5646144 -1627928 5696800 1627968 5696752 1663776 5646144 1612640 5685184 -1627928 5696800 1627968 5696752 1612640 5685184 1615440 5689168 -1663776 5646144 1612616 5685152 1612640 5685184 1627968 5696752 -1612640 5685184 1615392 5689120 1615440 5689168 1627968 5696752 -1627928 5696800 1627968 5696752 1615440 5689168 1615488 5689272 -1627968 5696752 1612640 5685184 1615440 5689168 1615488 5689272 -1627928 5696800 1627968 5696752 1615488 5689272 1623464 5696976 -1615488 5689272 1623376 5696968 1623464 5696976 1627968 5696752 -1627928 5696800 1627968 5696752 1623464 5696976 1623632 5697024 -1627968 5696752 1615488 5689272 1623464 5696976 1623632 5697024 -1627928 5696800 1627968 5696752 1623632 5697024 1623704 5697048 -1627968 5696752 1623464 5696976 1623632 5697024 1623704 5697048 -1623464 5696976 1623496 5696992 1623632 5697024 1627968 5696752 -1627928 5696800 1627968 5696752 1623704 5697048 1627784 5696912 -1627928 5696800 1627968 5696752 1627784 5696912 1627880 5696848 -1627968 5696752 1623632 5697024 1623704 5697048 1627784 5696912 -1623704 5697048 1623728 5697072 1627784 5696912 1627968 5696752 -1627968 5696752 1615440 5689168 1615488 5689272 1623464 5696976 -1627968 5696752 1663776 5646144 1612640 5685184 1615440 5689168 -1627968 5696752 1663880 5646248 1663776 5646144 1612640 5685184 -1627968 5696752 1663944 5646256 1663880 5646248 1663776 5646144 -1627928 5696800 1630136 5704624 1627968 5696752 1627784 5696912 -1630136 5704624 1627968 5696752 1627928 5696800 1630064 5704496 -1627928 5696800 1628712 5701448 1630064 5704496 1627968 5696752 -1628712 5701448 1629944 5704312 1630064 5704496 1627968 5696752 -1627968 5696752 1627784 5696912 1627928 5696800 1628712 5701448 -1630064 5704496 1630136 5704624 1627968 5696752 1628712 5701448 -1627968 5696752 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1627968 5696752 1630064 5704496 -1627928 5696800 1628632 5701384 1628712 5701448 1627968 5696752 -1627928 5696800 1627880 5696848 1628632 5701384 1627968 5696752 -1628712 5701448 1630064 5704496 1627968 5696752 1628632 5701384 -1627928 5696800 1628632 5701384 1627968 5696752 1627784 5696912 -1630136 5704624 1627968 5696752 1630064 5704496 1630112 5704600 -1663944 5646256 1628016 5696712 1630136 5704624 1631912 5713400 -1627968 5696752 1628016 5696712 1663944 5646256 1663880 5646248 -1627968 5696752 1628016 5696712 1663880 5646248 1663776 5646144 -1627968 5696752 1628016 5696712 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1628016 5696712 -1627968 5696752 1628016 5696712 1612640 5685184 1615440 5689168 -1627968 5696752 1628016 5696712 1615440 5689168 1615488 5689272 -1612640 5685184 1615392 5689120 1615440 5689168 1628016 5696712 -1627968 5696752 1628016 5696712 1615488 5689272 1623464 5696976 -1615488 5689272 1623376 5696968 1623464 5696976 1628016 5696712 -1628016 5696712 1615440 5689168 1615488 5689272 1623464 5696976 -1627968 5696752 1628016 5696712 1623464 5696976 1623632 5697024 -1627968 5696752 1628016 5696712 1623632 5697024 1623704 5697048 -1628016 5696712 1623464 5696976 1623632 5697024 1623704 5697048 -1627968 5696752 1628016 5696712 1623704 5697048 1627784 5696912 -1623464 5696976 1623496 5696992 1623632 5697024 1628016 5696712 -1628016 5696712 1615488 5689272 1623464 5696976 1623632 5697024 -1628016 5696712 1612640 5685184 1615440 5689168 1615488 5689272 -1628016 5696712 1663776 5646144 1612640 5685184 1615440 5689168 -1628016 5696712 1663880 5646248 1663776 5646144 1612640 5685184 -1628016 5696712 1663944 5646256 1663880 5646248 1663776 5646144 -1627968 5696752 1630136 5704624 1628016 5696712 1623704 5697048 -1630136 5704624 1628016 5696712 1627968 5696752 1630064 5704496 -1627968 5696752 1628712 5701448 1630064 5704496 1628016 5696712 -1628712 5701448 1629944 5704312 1630064 5704496 1628016 5696712 -1627968 5696752 1628632 5701384 1628712 5701448 1628016 5696712 -1628712 5701448 1630064 5704496 1628016 5696712 1628632 5701384 -1630136 5704624 1663944 5646256 1628016 5696712 1630064 5704496 -1628016 5696712 1623704 5697048 1627968 5696752 1628632 5701384 -1630064 5704496 1630136 5704624 1628016 5696712 1628712 5701448 -1628016 5696712 1630136 5704624 1663944 5646256 1663880 5646248 -1627968 5696752 1627928 5696800 1628632 5701384 1628016 5696712 -1627928 5696800 1627880 5696848 1628632 5701384 1628016 5696712 -1628632 5701384 1628712 5701448 1628016 5696712 1627928 5696800 -1627968 5696752 1627928 5696800 1628016 5696712 1623704 5697048 -1630136 5704624 1628016 5696712 1630064 5704496 1630112 5704600 -1663944 5646256 1628048 5696704 1630136 5704624 1631912 5713400 -1630136 5704624 1628048 5696704 1628016 5696712 1630064 5704496 -1630136 5704624 1663944 5646256 1628048 5696704 1630064 5704496 -1628016 5696712 1628712 5701448 1630064 5704496 1628048 5696704 -1628712 5701448 1629944 5704312 1630064 5704496 1628048 5696704 -1628016 5696712 1628632 5701384 1628712 5701448 1628048 5696704 -1628016 5696712 1627928 5696800 1628632 5701384 1628048 5696704 -1627928 5696800 1627880 5696848 1628632 5701384 1628048 5696704 -1627880 5696848 1628288 5701200 1628632 5701384 1628048 5696704 -1627880 5696848 1627744 5696960 1628288 5701200 1628048 5696704 -1627880 5696848 1628288 5701200 1628048 5696704 1627928 5696800 -1627928 5696800 1627880 5696848 1628048 5696704 1628016 5696712 -1628632 5701384 1628712 5701448 1628048 5696704 1628288 5701200 -1630064 5704496 1630136 5704624 1628048 5696704 1628712 5701448 -1628712 5701448 1630064 5704496 1628048 5696704 1628632 5701384 -1628016 5696712 1628048 5696704 1663944 5646256 1663880 5646248 -1628048 5696704 1630136 5704624 1663944 5646256 1663880 5646248 -1628016 5696712 1628048 5696704 1663880 5646248 1663776 5646144 -1628016 5696712 1628048 5696704 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1628048 5696704 -1628016 5696712 1628048 5696704 1612640 5685184 1615440 5689168 -1612640 5685184 1615392 5689120 1615440 5689168 1628048 5696704 -1628016 5696712 1628048 5696704 1615440 5689168 1615488 5689272 -1628016 5696712 1628048 5696704 1615488 5689272 1623464 5696976 -1628048 5696704 1612640 5685184 1615440 5689168 1615488 5689272 -1628048 5696704 1663776 5646144 1612640 5685184 1615440 5689168 -1628048 5696704 1663880 5646248 1663776 5646144 1612640 5685184 -1628048 5696704 1663944 5646256 1663880 5646248 1663776 5646144 -1628048 5696704 1615488 5689272 1628016 5696712 1627928 5696800 -1628016 5696712 1627968 5696752 1627928 5696800 1628048 5696704 -1627928 5696800 1627880 5696848 1628048 5696704 1627968 5696752 -1628016 5696712 1627968 5696752 1628048 5696704 1615488 5689272 -1630136 5704624 1628048 5696704 1630064 5704496 1630112 5704600 -1663944 5646256 1628088 5696712 1630136 5704624 1631912 5713400 -1628048 5696704 1628088 5696712 1663944 5646256 1663880 5646248 -1628048 5696704 1630136 5704624 1628088 5696712 1663880 5646248 -1630136 5704624 1628088 5696712 1628048 5696704 1630064 5704496 -1628048 5696704 1628712 5701448 1630064 5704496 1628088 5696712 -1628712 5701448 1629944 5704312 1630064 5704496 1628088 5696712 -1628088 5696712 1663880 5646248 1628048 5696704 1628712 5701448 -1630064 5704496 1630136 5704624 1628088 5696712 1628712 5701448 -1628088 5696712 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1628088 5696712 1630064 5704496 -1628048 5696704 1628632 5701384 1628712 5701448 1628088 5696712 -1628048 5696704 1628288 5701200 1628632 5701384 1628088 5696712 -1628048 5696704 1627880 5696848 1628288 5701200 1628088 5696712 -1627880 5696848 1627744 5696960 1628288 5701200 1628088 5696712 -1627744 5696960 1628128 5701160 1628288 5701200 1628088 5696712 -1627880 5696848 1627744 5696960 1628088 5696712 1628048 5696704 -1627880 5696848 1627784 5696912 1627744 5696960 1628088 5696712 -1628048 5696704 1627928 5696800 1627880 5696848 1628088 5696712 -1627880 5696848 1627744 5696960 1628088 5696712 1627928 5696800 -1628048 5696704 1627968 5696752 1627928 5696800 1628088 5696712 -1627928 5696800 1627880 5696848 1628088 5696712 1627968 5696752 -1628288 5701200 1628632 5701384 1628088 5696712 1627744 5696960 -1628712 5701448 1630064 5704496 1628088 5696712 1628632 5701384 -1628048 5696704 1627968 5696752 1628088 5696712 1663880 5646248 -1628632 5701384 1628712 5701448 1628088 5696712 1628288 5701200 -1628048 5696704 1628088 5696712 1663880 5646248 1663776 5646144 -1628088 5696712 1663944 5646256 1663880 5646248 1663776 5646144 -1628048 5696704 1627968 5696752 1628088 5696712 1663776 5646144 -1628048 5696704 1628088 5696712 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1628088 5696712 -1628048 5696704 1628088 5696712 1612640 5685184 1615440 5689168 -1612640 5685184 1615392 5689120 1615440 5689168 1628088 5696712 -1628048 5696704 1628088 5696712 1615440 5689168 1615488 5689272 -1628048 5696704 1627968 5696752 1628088 5696712 1615440 5689168 -1628088 5696712 1663776 5646144 1612640 5685184 1615440 5689168 -1628088 5696712 1663880 5646248 1663776 5646144 1612640 5685184 -1628048 5696704 1628016 5696712 1627968 5696752 1628088 5696712 -1627968 5696752 1627928 5696800 1628088 5696712 1628016 5696712 -1628048 5696704 1628016 5696712 1628088 5696712 1615440 5689168 -1630136 5704624 1628088 5696712 1630064 5704496 1630112 5704600 -1663944 5646256 1628120 5696720 1630136 5704624 1631912 5713400 -1628088 5696712 1628120 5696720 1663944 5646256 1663880 5646248 -1628120 5696720 1630136 5704624 1663944 5646256 1663880 5646248 -1628088 5696712 1628120 5696720 1663880 5646248 1663776 5646144 -1628120 5696720 1663944 5646256 1663880 5646248 1663776 5646144 -1628088 5696712 1630136 5704624 1628120 5696720 1663776 5646144 -1630136 5704624 1628120 5696720 1628088 5696712 1630064 5704496 -1630136 5704624 1663944 5646256 1628120 5696720 1630064 5704496 -1628088 5696712 1628712 5701448 1630064 5704496 1628120 5696720 -1628712 5701448 1629944 5704312 1630064 5704496 1628120 5696720 -1628088 5696712 1628632 5701384 1628712 5701448 1628120 5696720 -1628712 5701448 1630064 5704496 1628120 5696720 1628632 5701384 -1628120 5696720 1663776 5646144 1628088 5696712 1628632 5701384 -1630064 5704496 1630136 5704624 1628120 5696720 1628712 5701448 -1628088 5696712 1628288 5701200 1628632 5701384 1628120 5696720 -1628088 5696712 1627744 5696960 1628288 5701200 1628120 5696720 -1628088 5696712 1627880 5696848 1627744 5696960 1628120 5696720 -1627744 5696960 1628128 5701160 1628288 5701200 1628120 5696720 -1628088 5696712 1627928 5696800 1627880 5696848 1628120 5696720 -1627880 5696848 1627744 5696960 1628120 5696720 1627928 5696800 -1627880 5696848 1627784 5696912 1627744 5696960 1628120 5696720 -1628088 5696712 1627968 5696752 1627928 5696800 1628120 5696720 -1627928 5696800 1627880 5696848 1628120 5696720 1627968 5696752 -1628088 5696712 1628016 5696712 1627968 5696752 1628120 5696720 -1627744 5696960 1628288 5701200 1628120 5696720 1627880 5696848 -1628632 5701384 1628712 5701448 1628120 5696720 1628288 5701200 -1628088 5696712 1627968 5696752 1628120 5696720 1663776 5646144 -1628288 5701200 1628632 5701384 1628120 5696720 1627744 5696960 -1628088 5696712 1628120 5696720 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1628120 5696720 -1628120 5696720 1663880 5646248 1663776 5646144 1612640 5685184 -1628088 5696712 1627968 5696752 1628120 5696720 1612640 5685184 -1628088 5696712 1628120 5696720 1612640 5685184 1615440 5689168 -1630136 5704624 1628120 5696720 1630064 5704496 1630112 5704600 -1663944 5646256 1628152 5696760 1630136 5704624 1631912 5713400 -1628120 5696720 1628152 5696760 1663944 5646256 1663880 5646248 -1628120 5696720 1630136 5704624 1628152 5696760 1663880 5646248 -1630136 5704624 1628152 5696760 1628120 5696720 1630064 5704496 -1628152 5696760 1663880 5646248 1628120 5696720 1630064 5704496 -1628152 5696760 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1628152 5696760 1630064 5704496 -1628120 5696720 1628152 5696760 1663880 5646248 1663776 5646144 -1628120 5696720 1628712 5701448 1630064 5704496 1628152 5696760 -1628712 5701448 1629944 5704312 1630064 5704496 1628152 5696760 -1628120 5696720 1628712 5701448 1628152 5696760 1663880 5646248 -1630064 5704496 1630136 5704624 1628152 5696760 1628712 5701448 -1628120 5696720 1628632 5701384 1628712 5701448 1628152 5696760 -1628120 5696720 1628632 5701384 1628152 5696760 1663880 5646248 -1628120 5696720 1628288 5701200 1628632 5701384 1628152 5696760 -1628120 5696720 1628288 5701200 1628152 5696760 1663880 5646248 -1628632 5701384 1628712 5701448 1628152 5696760 1628288 5701200 -1628712 5701448 1630064 5704496 1628152 5696760 1628632 5701384 -1628120 5696720 1627744 5696960 1628288 5701200 1628152 5696760 -1628120 5696720 1627744 5696960 1628152 5696760 1663880 5646248 -1627744 5696960 1628128 5701160 1628288 5701200 1628152 5696760 -1628120 5696720 1627880 5696848 1627744 5696960 1628152 5696760 -1628120 5696720 1627928 5696800 1627880 5696848 1628152 5696760 -1628120 5696720 1627928 5696800 1628152 5696760 1663880 5646248 -1628120 5696720 1627968 5696752 1627928 5696800 1628152 5696760 -1627928 5696800 1627880 5696848 1628152 5696760 1627968 5696752 -1628120 5696720 1627968 5696752 1628152 5696760 1663880 5646248 -1627880 5696848 1627784 5696912 1627744 5696960 1628152 5696760 -1628120 5696720 1628088 5696712 1627968 5696752 1628152 5696760 -1628120 5696720 1628088 5696712 1628152 5696760 1663880 5646248 -1627968 5696752 1627928 5696800 1628152 5696760 1628088 5696712 -1628088 5696712 1628016 5696712 1627968 5696752 1628152 5696760 -1627880 5696848 1627744 5696960 1628152 5696760 1627928 5696800 -1628288 5701200 1628632 5701384 1628152 5696760 1627744 5696960 -1627744 5696960 1628288 5701200 1628152 5696760 1627880 5696848 -1630136 5704624 1628152 5696760 1630064 5704496 1630112 5704600 -1663944 5646256 1628184 5696808 1630136 5704624 1631912 5713400 -1628152 5696760 1628184 5696808 1663944 5646256 1663880 5646248 -1628152 5696760 1628184 5696808 1663880 5646248 1628120 5696720 -1628152 5696760 1630136 5704624 1628184 5696808 1663880 5646248 -1630136 5704624 1628184 5696808 1628152 5696760 1630064 5704496 -1628152 5696760 1628712 5701448 1630064 5704496 1628184 5696808 -1628712 5701448 1629944 5704312 1630064 5704496 1628184 5696808 -1628184 5696808 1663880 5646248 1628152 5696760 1628712 5701448 -1630064 5704496 1630136 5704624 1628184 5696808 1628712 5701448 -1628184 5696808 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1628184 5696808 1630064 5704496 -1628152 5696760 1628632 5701384 1628712 5701448 1628184 5696808 -1628712 5701448 1630064 5704496 1628184 5696808 1628632 5701384 -1628152 5696760 1628632 5701384 1628184 5696808 1663880 5646248 -1628152 5696760 1628288 5701200 1628632 5701384 1628184 5696808 -1628152 5696760 1628288 5701200 1628184 5696808 1663880 5646248 -1628152 5696760 1627744 5696960 1628288 5701200 1628184 5696808 -1628152 5696760 1627744 5696960 1628184 5696808 1663880 5646248 -1627744 5696960 1628128 5701160 1628288 5701200 1628184 5696808 -1627744 5696960 1626344 5698984 1628128 5701160 1628184 5696808 -1627744 5696960 1628128 5701160 1628184 5696808 1628152 5696760 -1628288 5701200 1628632 5701384 1628184 5696808 1628128 5701160 -1628632 5701384 1628712 5701448 1628184 5696808 1628288 5701200 -1628152 5696760 1627880 5696848 1627744 5696960 1628184 5696808 -1628152 5696760 1627880 5696848 1628184 5696808 1663880 5646248 -1627880 5696848 1627784 5696912 1627744 5696960 1628184 5696808 -1628152 5696760 1627928 5696800 1627880 5696848 1628184 5696808 -1628152 5696760 1627968 5696752 1627928 5696800 1628184 5696808 -1628152 5696760 1627968 5696752 1628184 5696808 1663880 5646248 -1628152 5696760 1628088 5696712 1627968 5696752 1628184 5696808 -1627928 5696800 1627880 5696848 1628184 5696808 1627968 5696752 -1627744 5696960 1628128 5701160 1628184 5696808 1627880 5696848 -1627880 5696848 1627744 5696960 1628184 5696808 1627928 5696800 -1630136 5704624 1628184 5696808 1630064 5704496 1630112 5704600 -1663944 5646256 1628224 5696896 1630136 5704624 1631912 5713400 -1628184 5696808 1628224 5696896 1663944 5646256 1663880 5646248 -1630136 5704624 1628224 5696896 1628184 5696808 1630064 5704496 -1628184 5696808 1628712 5701448 1630064 5704496 1628224 5696896 -1628712 5701448 1629944 5704312 1630064 5704496 1628224 5696896 -1628184 5696808 1628632 5701384 1628712 5701448 1628224 5696896 -1628712 5701448 1630064 5704496 1628224 5696896 1628632 5701384 -1628224 5696896 1663944 5646256 1628184 5696808 1628632 5701384 -1630064 5704496 1630136 5704624 1628224 5696896 1628712 5701448 -1630136 5704624 1663944 5646256 1628224 5696896 1630064 5704496 -1628184 5696808 1628288 5701200 1628632 5701384 1628224 5696896 -1628632 5701384 1628712 5701448 1628224 5696896 1628288 5701200 -1628184 5696808 1628288 5701200 1628224 5696896 1663944 5646256 -1628184 5696808 1628128 5701160 1628288 5701200 1628224 5696896 -1628184 5696808 1628128 5701160 1628224 5696896 1663944 5646256 -1628184 5696808 1627744 5696960 1628128 5701160 1628224 5696896 -1627744 5696960 1626344 5698984 1628128 5701160 1628224 5696896 -1626344 5698984 1627968 5701176 1628128 5701160 1628224 5696896 -1627744 5696960 1626296 5698872 1626344 5698984 1628224 5696896 -1628184 5696808 1627744 5696960 1628224 5696896 1663944 5646256 -1627744 5696960 1626344 5698984 1628224 5696896 1628184 5696808 -1628184 5696808 1627880 5696848 1627744 5696960 1628224 5696896 -1628184 5696808 1627880 5696848 1628224 5696896 1663944 5646256 -1627744 5696960 1626344 5698984 1628224 5696896 1627880 5696848 -1627880 5696848 1627784 5696912 1627744 5696960 1628224 5696896 -1628128 5701160 1628288 5701200 1628224 5696896 1626344 5698984 -1628288 5701200 1628632 5701384 1628224 5696896 1628128 5701160 -1628184 5696808 1627928 5696800 1627880 5696848 1628224 5696896 -1628184 5696808 1627928 5696800 1628224 5696896 1663944 5646256 -1628184 5696808 1627968 5696752 1627928 5696800 1628224 5696896 -1627880 5696848 1627744 5696960 1628224 5696896 1627928 5696800 -1630136 5704624 1628224 5696896 1630064 5704496 1630112 5704600 -1663944 5646256 1628272 5697000 1630136 5704624 1631912 5713400 -1628224 5696896 1628272 5697000 1663944 5646256 1628184 5696808 -1663944 5646256 1663880 5646248 1628184 5696808 1628272 5697000 -1628224 5696896 1630136 5704624 1628272 5697000 1628184 5696808 -1630136 5704624 1628272 5697000 1628224 5696896 1630064 5704496 -1628224 5696896 1628712 5701448 1630064 5704496 1628272 5697000 -1628712 5701448 1629944 5704312 1630064 5704496 1628272 5697000 -1628224 5696896 1628632 5701384 1628712 5701448 1628272 5697000 -1628224 5696896 1628288 5701200 1628632 5701384 1628272 5697000 -1628632 5701384 1628712 5701448 1628272 5697000 1628288 5701200 -1628712 5701448 1630064 5704496 1628272 5697000 1628632 5701384 -1628272 5697000 1628184 5696808 1628224 5696896 1628288 5701200 -1630064 5704496 1630136 5704624 1628272 5697000 1628712 5701448 -1628272 5697000 1630136 5704624 1663944 5646256 1628184 5696808 -1630136 5704624 1663944 5646256 1628272 5697000 1630064 5704496 -1628224 5696896 1628128 5701160 1628288 5701200 1628272 5697000 -1628288 5701200 1628632 5701384 1628272 5697000 1628128 5701160 -1628224 5696896 1628128 5701160 1628272 5697000 1628184 5696808 -1628224 5696896 1626344 5698984 1628128 5701160 1628272 5697000 -1628224 5696896 1627744 5696960 1626344 5698984 1628272 5697000 -1626344 5698984 1627968 5701176 1628128 5701160 1628272 5697000 -1627744 5696960 1626296 5698872 1626344 5698984 1628272 5697000 -1628224 5696896 1627744 5696960 1628272 5697000 1628184 5696808 -1628224 5696896 1627880 5696848 1627744 5696960 1628272 5697000 -1627744 5696960 1626344 5698984 1628272 5697000 1627880 5696848 -1628224 5696896 1627880 5696848 1628272 5697000 1628184 5696808 -1627880 5696848 1627784 5696912 1627744 5696960 1628272 5697000 -1627744 5696960 1626344 5698984 1628272 5697000 1627784 5696912 -1627880 5696848 1627784 5696912 1628272 5697000 1628224 5696896 -1628224 5696896 1627928 5696800 1627880 5696848 1628272 5697000 -1626344 5698984 1628128 5701160 1628272 5697000 1627744 5696960 -1628128 5701160 1628288 5701200 1628272 5697000 1626344 5698984 -1630136 5704624 1628272 5697000 1630064 5704496 1630112 5704600 -1663944 5646256 1628304 5697064 1630136 5704624 1631912 5713400 -1628272 5697000 1628304 5697064 1663944 5646256 1628184 5696808 -1663944 5646256 1663880 5646248 1628184 5696808 1628304 5697064 -1628272 5697000 1628304 5697064 1628184 5696808 1628224 5696896 -1628304 5697064 1663944 5646256 1628184 5696808 1628224 5696896 -1628272 5697000 1630136 5704624 1628304 5697064 1628224 5696896 -1630136 5704624 1628304 5697064 1628272 5697000 1630064 5704496 -1628272 5697000 1628712 5701448 1630064 5704496 1628304 5697064 -1628712 5701448 1629944 5704312 1630064 5704496 1628304 5697064 -1628272 5697000 1628632 5701384 1628712 5701448 1628304 5697064 -1628272 5697000 1628288 5701200 1628632 5701384 1628304 5697064 -1628272 5697000 1628128 5701160 1628288 5701200 1628304 5697064 -1628288 5701200 1628632 5701384 1628304 5697064 1628128 5701160 -1628632 5701384 1628712 5701448 1628304 5697064 1628288 5701200 -1628712 5701448 1630064 5704496 1628304 5697064 1628632 5701384 -1628304 5697064 1628224 5696896 1628272 5697000 1628128 5701160 -1630064 5704496 1630136 5704624 1628304 5697064 1628712 5701448 -1628304 5697064 1630136 5704624 1663944 5646256 1628184 5696808 -1630136 5704624 1663944 5646256 1628304 5697064 1630064 5704496 -1628272 5697000 1626344 5698984 1628128 5701160 1628304 5697064 -1626344 5698984 1627968 5701176 1628128 5701160 1628304 5697064 -1628128 5701160 1628288 5701200 1628304 5697064 1626344 5698984 -1628272 5697000 1626344 5698984 1628304 5697064 1628224 5696896 -1628272 5697000 1627744 5696960 1626344 5698984 1628304 5697064 -1628272 5697000 1627784 5696912 1627744 5696960 1628304 5697064 -1627744 5696960 1626296 5698872 1626344 5698984 1628304 5697064 -1628272 5697000 1627744 5696960 1628304 5697064 1628224 5696896 -1626344 5698984 1628128 5701160 1628304 5697064 1627744 5696960 -1630136 5704624 1628304 5697064 1630064 5704496 1630112 5704600 -1663944 5646256 1628328 5697136 1630136 5704624 1631912 5713400 -1628304 5697064 1628328 5697136 1663944 5646256 1628184 5696808 -1630136 5704624 1628328 5697136 1628304 5697064 1630064 5704496 -1628304 5697064 1628712 5701448 1630064 5704496 1628328 5697136 -1628712 5701448 1629944 5704312 1630064 5704496 1628328 5697136 -1628304 5697064 1628632 5701384 1628712 5701448 1628328 5697136 -1628304 5697064 1628288 5701200 1628632 5701384 1628328 5697136 -1628304 5697064 1628128 5701160 1628288 5701200 1628328 5697136 -1628304 5697064 1626344 5698984 1628128 5701160 1628328 5697136 -1626344 5698984 1627968 5701176 1628128 5701160 1628328 5697136 -1628128 5701160 1628288 5701200 1628328 5697136 1626344 5698984 -1628288 5701200 1628632 5701384 1628328 5697136 1628128 5701160 -1628632 5701384 1628712 5701448 1628328 5697136 1628288 5701200 -1628712 5701448 1630064 5704496 1628328 5697136 1628632 5701384 -1628328 5697136 1663944 5646256 1628304 5697064 1626344 5698984 -1630064 5704496 1630136 5704624 1628328 5697136 1628712 5701448 -1630136 5704624 1663944 5646256 1628328 5697136 1630064 5704496 -1628304 5697064 1627744 5696960 1626344 5698984 1628328 5697136 -1627744 5696960 1626296 5698872 1626344 5698984 1628328 5697136 -1626344 5698984 1628128 5701160 1628328 5697136 1627744 5696960 -1628304 5697064 1627744 5696960 1628328 5697136 1663944 5646256 -1628304 5697064 1628272 5697000 1627744 5696960 1628328 5697136 -1630136 5704624 1628328 5697136 1630064 5704496 1630112 5704600 -1663944 5646256 1628376 5697224 1630136 5704624 1631912 5713400 -1628328 5697136 1628376 5697224 1663944 5646256 1628304 5697064 -1663944 5646256 1628184 5696808 1628304 5697064 1628376 5697224 -1628328 5697136 1630136 5704624 1628376 5697224 1628304 5697064 -1630136 5704624 1628376 5697224 1628328 5697136 1630064 5704496 -1628328 5697136 1628712 5701448 1630064 5704496 1628376 5697224 -1628712 5701448 1629944 5704312 1630064 5704496 1628376 5697224 -1628328 5697136 1628632 5701384 1628712 5701448 1628376 5697224 -1628328 5697136 1628288 5701200 1628632 5701384 1628376 5697224 -1628328 5697136 1628128 5701160 1628288 5701200 1628376 5697224 -1628328 5697136 1626344 5698984 1628128 5701160 1628376 5697224 -1626344 5698984 1627968 5701176 1628128 5701160 1628376 5697224 -1628328 5697136 1627744 5696960 1626344 5698984 1628376 5697224 -1627744 5696960 1626296 5698872 1626344 5698984 1628376 5697224 -1627744 5696960 1626296 5698872 1628376 5697224 1628328 5697136 -1626344 5698984 1628128 5701160 1628376 5697224 1626296 5698872 -1628128 5701160 1628288 5701200 1628376 5697224 1626344 5698984 -1628288 5701200 1628632 5701384 1628376 5697224 1628128 5701160 -1628632 5701384 1628712 5701448 1628376 5697224 1628288 5701200 -1628712 5701448 1630064 5704496 1628376 5697224 1628632 5701384 -1628376 5697224 1628304 5697064 1628328 5697136 1627744 5696960 -1630064 5704496 1630136 5704624 1628376 5697224 1628712 5701448 -1628376 5697224 1630136 5704624 1663944 5646256 1628304 5697064 -1630136 5704624 1663944 5646256 1628376 5697224 1630064 5704496 -1627744 5696960 1626248 5698816 1626296 5698872 1628376 5697224 -1628328 5697136 1628304 5697064 1627744 5696960 1628376 5697224 -1630136 5704624 1628376 5697224 1630064 5704496 1630112 5704600 -1663944 5646256 1628416 5697304 1630136 5704624 1631912 5713400 -1628376 5697224 1628416 5697304 1663944 5646256 1628304 5697064 -1663944 5646256 1628184 5696808 1628304 5697064 1628416 5697304 -1628376 5697224 1628416 5697304 1628304 5697064 1628328 5697136 -1628376 5697224 1630136 5704624 1628416 5697304 1628304 5697064 -1630136 5704624 1628416 5697304 1628376 5697224 1630064 5704496 -1628376 5697224 1628712 5701448 1630064 5704496 1628416 5697304 -1628712 5701448 1629944 5704312 1630064 5704496 1628416 5697304 -1628376 5697224 1628632 5701384 1628712 5701448 1628416 5697304 -1628376 5697224 1628288 5701200 1628632 5701384 1628416 5697304 -1628376 5697224 1628128 5701160 1628288 5701200 1628416 5697304 -1628376 5697224 1626344 5698984 1628128 5701160 1628416 5697304 -1626344 5698984 1627968 5701176 1628128 5701160 1628416 5697304 -1628376 5697224 1626296 5698872 1626344 5698984 1628416 5697304 -1628376 5697224 1627744 5696960 1626296 5698872 1628416 5697304 -1628376 5697224 1628328 5697136 1627744 5696960 1628416 5697304 -1626296 5698872 1626344 5698984 1628416 5697304 1627744 5696960 -1626344 5698984 1628128 5701160 1628416 5697304 1626296 5698872 -1628128 5701160 1628288 5701200 1628416 5697304 1626344 5698984 -1628288 5701200 1628632 5701384 1628416 5697304 1628128 5701160 -1628632 5701384 1628712 5701448 1628416 5697304 1628288 5701200 -1628712 5701448 1630064 5704496 1628416 5697304 1628632 5701384 -1628416 5697304 1628304 5697064 1628376 5697224 1627744 5696960 -1630064 5704496 1630136 5704624 1628416 5697304 1628712 5701448 -1628416 5697304 1630136 5704624 1663944 5646256 1628304 5697064 -1630136 5704624 1663944 5646256 1628416 5697304 1630064 5704496 -1627744 5696960 1626248 5698816 1626296 5698872 1628416 5697304 -1630136 5704624 1628416 5697304 1630064 5704496 1630112 5704600 -1663944 5646256 1628464 5697392 1630136 5704624 1631912 5713400 -1628416 5697304 1628464 5697392 1663944 5646256 1628304 5697064 -1663944 5646256 1628184 5696808 1628304 5697064 1628464 5697392 -1663944 5646256 1663880 5646248 1628184 5696808 1628464 5697392 -1628184 5696808 1628224 5696896 1628304 5697064 1628464 5697392 -1628416 5697304 1628464 5697392 1628304 5697064 1628376 5697224 -1628304 5697064 1628328 5697136 1628376 5697224 1628464 5697392 -1628304 5697064 1628376 5697224 1628464 5697392 1628184 5696808 -1628416 5697304 1630136 5704624 1628464 5697392 1628376 5697224 -1630136 5704624 1628464 5697392 1628416 5697304 1630064 5704496 -1628416 5697304 1628712 5701448 1630064 5704496 1628464 5697392 -1628712 5701448 1629944 5704312 1630064 5704496 1628464 5697392 -1628416 5697304 1628632 5701384 1628712 5701448 1628464 5697392 -1628416 5697304 1628288 5701200 1628632 5701384 1628464 5697392 -1628416 5697304 1628128 5701160 1628288 5701200 1628464 5697392 -1628416 5697304 1626344 5698984 1628128 5701160 1628464 5697392 -1626344 5698984 1627968 5701176 1628128 5701160 1628464 5697392 -1628416 5697304 1626296 5698872 1626344 5698984 1628464 5697392 -1628416 5697304 1627744 5696960 1626296 5698872 1628464 5697392 -1628416 5697304 1628376 5697224 1627744 5696960 1628464 5697392 -1626296 5698872 1626344 5698984 1628464 5697392 1627744 5696960 -1626344 5698984 1628128 5701160 1628464 5697392 1626296 5698872 -1628128 5701160 1628288 5701200 1628464 5697392 1626344 5698984 -1628288 5701200 1628632 5701384 1628464 5697392 1628128 5701160 -1628632 5701384 1628712 5701448 1628464 5697392 1628288 5701200 -1628712 5701448 1630064 5704496 1628464 5697392 1628632 5701384 -1628464 5697392 1628376 5697224 1628416 5697304 1627744 5696960 -1630064 5704496 1630136 5704624 1628464 5697392 1628712 5701448 -1628464 5697392 1630136 5704624 1663944 5646256 1628184 5696808 -1630136 5704624 1663944 5646256 1628464 5697392 1630064 5704496 -1627744 5696960 1626248 5698816 1626296 5698872 1628464 5697392 -1630136 5704624 1628464 5697392 1630064 5704496 1630112 5704600 -1663944 5646256 1628488 5697448 1630136 5704624 1631912 5713400 -1628464 5697392 1628488 5697448 1663944 5646256 1628184 5696808 -1630136 5704624 1628488 5697448 1628464 5697392 1630064 5704496 -1628464 5697392 1628712 5701448 1630064 5704496 1628488 5697448 -1628712 5701448 1629944 5704312 1630064 5704496 1628488 5697448 -1628464 5697392 1628632 5701384 1628712 5701448 1628488 5697448 -1628464 5697392 1628288 5701200 1628632 5701384 1628488 5697448 -1628464 5697392 1628128 5701160 1628288 5701200 1628488 5697448 -1628464 5697392 1626344 5698984 1628128 5701160 1628488 5697448 -1626344 5698984 1627968 5701176 1628128 5701160 1628488 5697448 -1628464 5697392 1626296 5698872 1626344 5698984 1628488 5697448 -1628464 5697392 1627744 5696960 1626296 5698872 1628488 5697448 -1628464 5697392 1628416 5697304 1627744 5696960 1628488 5697448 -1626296 5698872 1626344 5698984 1628488 5697448 1627744 5696960 -1626344 5698984 1628128 5701160 1628488 5697448 1626296 5698872 -1628128 5701160 1628288 5701200 1628488 5697448 1626344 5698984 -1628288 5701200 1628632 5701384 1628488 5697448 1628128 5701160 -1628632 5701384 1628712 5701448 1628488 5697448 1628288 5701200 -1628712 5701448 1630064 5704496 1628488 5697448 1628632 5701384 -1628488 5697448 1663944 5646256 1628464 5697392 1627744 5696960 -1630064 5704496 1630136 5704624 1628488 5697448 1628712 5701448 -1630136 5704624 1663944 5646256 1628488 5697448 1630064 5704496 -1627744 5696960 1626248 5698816 1626296 5698872 1628488 5697448 -1630136 5704624 1628488 5697448 1630064 5704496 1630112 5704600 -1628288 5701200 1628488 5697528 1628488 5697448 1628128 5701160 -1628488 5697448 1626344 5698984 1628128 5701160 1628488 5697528 -1626344 5698984 1627968 5701176 1628128 5701160 1628488 5697528 -1628488 5697448 1626296 5698872 1626344 5698984 1628488 5697528 -1628488 5697448 1627744 5696960 1626296 5698872 1628488 5697528 -1628488 5697448 1628464 5697392 1627744 5696960 1628488 5697528 -1628464 5697392 1628416 5697304 1627744 5696960 1628488 5697528 -1628416 5697304 1628376 5697224 1627744 5696960 1628488 5697528 -1628464 5697392 1628416 5697304 1628488 5697528 1628488 5697448 -1627744 5696960 1626296 5698872 1628488 5697528 1628416 5697304 -1626296 5698872 1626344 5698984 1628488 5697528 1627744 5696960 -1626344 5698984 1628128 5701160 1628488 5697528 1626296 5698872 -1628128 5701160 1628288 5701200 1628488 5697528 1626344 5698984 -1628488 5697448 1628488 5697528 1628632 5701384 1628712 5701448 -1628488 5697448 1628488 5697528 1628712 5701448 1630064 5704496 -1628712 5701448 1629944 5704312 1630064 5704496 1628488 5697528 -1628488 5697528 1628632 5701384 1628712 5701448 1630064 5704496 -1628488 5697448 1628488 5697528 1630064 5704496 1630136 5704624 -1628488 5697528 1628712 5701448 1630064 5704496 1630136 5704624 -1628488 5697528 1630136 5704624 1628488 5697448 1628464 5697392 -1628488 5697448 1628488 5697528 1630136 5704624 1663944 5646256 -1628488 5697528 1628288 5701200 1628632 5701384 1628712 5701448 -1628288 5701200 1628632 5701384 1628488 5697528 1628128 5701160 -1627744 5696960 1626248 5698816 1626296 5698872 1628488 5697528 -1630064 5704496 1630112 5704600 1630136 5704624 1628488 5697528 -1627744 5696960 1628456 5697544 1628488 5697528 1628416 5697304 -1627744 5696960 1628456 5697544 1628416 5697304 1628376 5697224 -1627744 5696960 1628456 5697544 1628376 5697224 1628328 5697136 -1628488 5697528 1628464 5697392 1628416 5697304 1628456 5697544 -1628488 5697528 1628488 5697448 1628464 5697392 1628456 5697544 -1628464 5697392 1628416 5697304 1628456 5697544 1628488 5697448 -1628456 5697544 1628464 5697392 1628416 5697304 1628376 5697224 -1628488 5697528 1628456 5697544 1626296 5698872 1626344 5698984 -1628488 5697528 1628456 5697544 1626344 5698984 1628128 5701160 -1626344 5698984 1627968 5701176 1628128 5701160 1628456 5697544 -1628456 5697544 1626296 5698872 1626344 5698984 1628128 5701160 -1628488 5697528 1628456 5697544 1628128 5701160 1628288 5701200 -1628456 5697544 1626344 5698984 1628128 5701160 1628288 5701200 -1628456 5697544 1628288 5701200 1628488 5697528 1628488 5697448 -1628488 5697528 1628456 5697544 1628288 5701200 1628632 5701384 -1628456 5697544 1627744 5696960 1626296 5698872 1626344 5698984 -1627744 5696960 1626296 5698872 1628456 5697544 1628376 5697224 -1626296 5698872 1628456 5697544 1627744 5696960 1626248 5698816 -1628456 5697544 1628424 5697544 1626296 5698872 1626344 5698984 -1628456 5697544 1628424 5697544 1626344 5698984 1628128 5701160 -1626344 5698984 1627968 5701176 1628128 5701160 1628424 5697544 -1628456 5697544 1628424 5697544 1628128 5701160 1628288 5701200 -1628424 5697544 1626296 5698872 1626344 5698984 1628128 5701160 -1628456 5697544 1627744 5696960 1628424 5697544 1628128 5701160 -1627744 5696960 1628424 5697544 1628456 5697544 1628376 5697224 -1628456 5697544 1628416 5697304 1628376 5697224 1628424 5697544 -1627744 5696960 1628424 5697544 1628376 5697224 1628328 5697136 -1628456 5697544 1628464 5697392 1628416 5697304 1628424 5697544 -1628416 5697304 1628376 5697224 1628424 5697544 1628464 5697392 -1628456 5697544 1628488 5697448 1628464 5697392 1628424 5697544 -1628456 5697544 1628488 5697528 1628488 5697448 1628424 5697544 -1628464 5697392 1628416 5697304 1628424 5697544 1628488 5697448 -1628424 5697544 1628128 5701160 1628456 5697544 1628488 5697448 -1628376 5697224 1627744 5696960 1628424 5697544 1628416 5697304 -1628424 5697544 1627744 5696960 1626296 5698872 1626344 5698984 -1627744 5696960 1626296 5698872 1628424 5697544 1628376 5697224 -1626296 5698872 1628424 5697544 1627744 5696960 1626248 5698816 -1628424 5697544 1628376 5697520 1626296 5698872 1626344 5698984 -1628424 5697544 1628376 5697520 1626344 5698984 1628128 5701160 -1628424 5697544 1627744 5696960 1628376 5697520 1626344 5698984 -1627744 5696960 1628376 5697520 1628424 5697544 1628376 5697224 -1627744 5696960 1628376 5697520 1628376 5697224 1628328 5697136 -1628424 5697544 1628416 5697304 1628376 5697224 1628376 5697520 -1628424 5697544 1628464 5697392 1628416 5697304 1628376 5697520 -1628424 5697544 1628488 5697448 1628464 5697392 1628376 5697520 -1628464 5697392 1628416 5697304 1628376 5697520 1628488 5697448 -1628424 5697544 1628456 5697544 1628488 5697448 1628376 5697520 -1628416 5697304 1628376 5697224 1628376 5697520 1628464 5697392 -1628376 5697520 1626344 5698984 1628424 5697544 1628488 5697448 -1628376 5697520 1628416 5697304 1628376 5697224 1628328 5697136 -1628376 5697520 1627744 5696960 1626296 5698872 1626344 5698984 -1627744 5696960 1626296 5698872 1628376 5697520 1628328 5697136 -1626296 5698872 1628376 5697520 1627744 5696960 1626248 5698816 -1627744 5696960 1628376 5697520 1628328 5697136 1628304 5697064 -1628376 5697520 1628288 5697472 1626296 5698872 1626344 5698984 -1628376 5697520 1628288 5697472 1626344 5698984 1628424 5697544 -1628376 5697520 1627744 5696960 1628288 5697472 1626344 5698984 -1627744 5696960 1628288 5697472 1628376 5697520 1628328 5697136 -1628376 5697520 1628376 5697224 1628328 5697136 1628288 5697472 -1628376 5697520 1628416 5697304 1628376 5697224 1628288 5697472 -1628376 5697224 1628328 5697136 1628288 5697472 1628416 5697304 -1628376 5697520 1628464 5697392 1628416 5697304 1628288 5697472 -1628376 5697520 1628488 5697448 1628464 5697392 1628288 5697472 -1628416 5697304 1628376 5697224 1628288 5697472 1628464 5697392 -1628288 5697472 1626344 5698984 1628376 5697520 1628464 5697392 -1628328 5697136 1627744 5696960 1628288 5697472 1628376 5697224 -1628288 5697472 1627744 5696960 1626296 5698872 1626344 5698984 -1627744 5696960 1626296 5698872 1628288 5697472 1628328 5697136 -1626296 5698872 1628288 5697472 1627744 5696960 1626248 5698816 -1627744 5696960 1628288 5697472 1628328 5697136 1628304 5697064 -1628288 5697472 1628208 5697424 1626296 5698872 1626344 5698984 -1628288 5697472 1628208 5697424 1626344 5698984 1628376 5697520 -1628288 5697472 1627744 5696960 1628208 5697424 1626344 5698984 -1627744 5696960 1628208 5697424 1628288 5697472 1628328 5697136 -1628288 5697472 1628376 5697224 1628328 5697136 1628208 5697424 -1628288 5697472 1628416 5697304 1628376 5697224 1628208 5697424 -1628288 5697472 1628464 5697392 1628416 5697304 1628208 5697424 -1628376 5697224 1628328 5697136 1628208 5697424 1628416 5697304 -1628208 5697424 1626344 5698984 1628288 5697472 1628416 5697304 -1628328 5697136 1627744 5696960 1628208 5697424 1628376 5697224 -1628208 5697424 1627744 5696960 1626296 5698872 1626344 5698984 -1627744 5696960 1626296 5698872 1628208 5697424 1628328 5697136 -1626296 5698872 1628208 5697424 1627744 5696960 1626248 5698816 -1627744 5696960 1625936 5698488 1626248 5698816 1628208 5697424 -1626296 5698872 1626344 5698984 1628208 5697424 1626248 5698816 -1628208 5697424 1628328 5697136 1627744 5696960 1626248 5698816 -1627744 5696960 1628208 5697424 1628328 5697136 1628304 5697064 -1628208 5697424 1628376 5697224 1628328 5697136 1628304 5697064 -1627744 5696960 1626248 5698816 1628208 5697424 1628304 5697064 -1627744 5696960 1628208 5697424 1628304 5697064 1628272 5697000 -1627744 5696960 1628208 5697424 1628272 5697000 1627784 5696912 -1627744 5696960 1626248 5698816 1628208 5697424 1628272 5697000 -1628208 5697424 1628328 5697136 1628304 5697064 1628272 5697000 -1626248 5698816 1628112 5697352 1627744 5696960 1625936 5698488 -1627744 5696960 1628112 5697352 1628208 5697424 1628272 5697000 -1627744 5696960 1628112 5697352 1628272 5697000 1627784 5696912 -1628112 5697352 1626248 5698816 1628208 5697424 1628272 5697000 -1628112 5697352 1628208 5697424 1628272 5697000 1627784 5696912 -1627744 5696960 1626248 5698816 1628112 5697352 1627784 5696912 -1628272 5697000 1627880 5696848 1627784 5696912 1628112 5697352 -1627784 5696912 1627744 5696960 1628112 5697352 1627880 5696848 -1628272 5697000 1627880 5696848 1628112 5697352 1628208 5697424 -1628272 5697000 1628224 5696896 1627880 5696848 1628112 5697352 -1628208 5697424 1628112 5697352 1626248 5698816 1626296 5698872 -1628208 5697424 1628112 5697352 1626296 5698872 1626344 5698984 -1628208 5697424 1628272 5697000 1628112 5697352 1626296 5698872 -1628112 5697352 1627744 5696960 1626248 5698816 1626296 5698872 -1628208 5697424 1628304 5697064 1628272 5697000 1628112 5697352 -1628208 5697424 1628304 5697064 1628112 5697352 1626296 5698872 -1628272 5697000 1627880 5696848 1628112 5697352 1628304 5697064 -1628208 5697424 1628328 5697136 1628304 5697064 1628112 5697352 -1628208 5697424 1628376 5697224 1628328 5697136 1628112 5697352 -1628208 5697424 1628416 5697304 1628376 5697224 1628112 5697352 -1628208 5697424 1628376 5697224 1628112 5697352 1626296 5698872 -1628304 5697064 1628272 5697000 1628112 5697352 1628328 5697136 -1628328 5697136 1628304 5697064 1628112 5697352 1628376 5697224 -1626248 5698816 1628024 5697288 1627744 5696960 1625936 5698488 -1628112 5697352 1628024 5697288 1626248 5698816 1626296 5698872 -1628112 5697352 1627744 5696960 1628024 5697288 1626296 5698872 -1627744 5696960 1628024 5697288 1628112 5697352 1627784 5696912 -1628112 5697352 1627880 5696848 1627784 5696912 1628024 5697288 -1628024 5697288 1626296 5698872 1628112 5697352 1627880 5696848 -1627784 5696912 1627744 5696960 1628024 5697288 1627880 5696848 -1628024 5697288 1627744 5696960 1626248 5698816 1626296 5698872 -1627744 5696960 1626248 5698816 1628024 5697288 1627784 5696912 -1628112 5697352 1628272 5697000 1627880 5696848 1628024 5697288 -1627880 5696848 1627784 5696912 1628024 5697288 1628272 5697000 -1628112 5697352 1628304 5697064 1628272 5697000 1628024 5697288 -1628112 5697352 1628304 5697064 1628024 5697288 1626296 5698872 -1628272 5697000 1628224 5696896 1627880 5696848 1628024 5697288 -1627880 5696848 1627784 5696912 1628024 5697288 1628224 5696896 -1628272 5697000 1628224 5696896 1628024 5697288 1628304 5697064 -1628112 5697352 1628024 5697288 1626296 5698872 1628208 5697424 -1628224 5696896 1627928 5696800 1627880 5696848 1628024 5697288 -1628112 5697352 1628328 5697136 1628304 5697064 1628024 5697288 -1628304 5697064 1628272 5697000 1628024 5697288 1628328 5697136 -1628112 5697352 1628328 5697136 1628024 5697288 1626296 5698872 -1628112 5697352 1628376 5697224 1628328 5697136 1628024 5697288 -1626248 5698816 1627944 5697240 1627744 5696960 1625936 5698488 -1627744 5696960 1625808 5698384 1625936 5698488 1627944 5697240 -1626248 5698816 1627944 5697240 1625936 5698488 1626032 5698672 -1628024 5697288 1627944 5697240 1626248 5698816 1626296 5698872 -1628024 5697288 1627944 5697240 1626296 5698872 1628112 5697352 -1627944 5697240 1626248 5698816 1626296 5698872 1628112 5697352 -1628024 5697288 1627744 5696960 1627944 5697240 1628112 5697352 -1627744 5696960 1627944 5697240 1628024 5697288 1627784 5696912 -1628024 5697288 1627880 5696848 1627784 5696912 1627944 5697240 -1628024 5697288 1628224 5696896 1627880 5696848 1627944 5697240 -1627880 5696848 1627784 5696912 1627944 5697240 1628224 5696896 -1627944 5697240 1628112 5697352 1628024 5697288 1628224 5696896 -1627784 5696912 1627744 5696960 1627944 5697240 1627880 5696848 -1626248 5698816 1626296 5698872 1627944 5697240 1625936 5698488 -1627944 5697240 1627784 5696912 1627744 5696960 1625936 5698488 -1628024 5697288 1628272 5697000 1628224 5696896 1627944 5697240 -1628224 5696896 1627880 5696848 1627944 5697240 1628272 5697000 -1628024 5697288 1628272 5697000 1627944 5697240 1628112 5697352 -1628024 5697288 1628304 5697064 1628272 5697000 1627944 5697240 -1626296 5698872 1628208 5697424 1628112 5697352 1627944 5697240 -1628224 5696896 1627928 5696800 1627880 5696848 1627944 5697240 -1625936 5698488 1627864 5697160 1627744 5696960 1625808 5698384 -1627944 5697240 1627864 5697160 1625936 5698488 1626248 5698816 -1625936 5698488 1626032 5698672 1626248 5698816 1627864 5697160 -1627944 5697240 1627864 5697160 1626248 5698816 1626296 5698872 -1627944 5697240 1627744 5696960 1627864 5697160 1626248 5698816 -1627744 5696960 1627864 5697160 1627944 5697240 1627784 5696912 -1627944 5697240 1627880 5696848 1627784 5696912 1627864 5697160 -1627944 5697240 1628224 5696896 1627880 5696848 1627864 5697160 -1627944 5697240 1628272 5697000 1628224 5696896 1627864 5697160 -1628224 5696896 1627880 5696848 1627864 5697160 1628272 5697000 -1627880 5696848 1627784 5696912 1627864 5697160 1628224 5696896 -1627864 5697160 1626248 5698816 1627944 5697240 1628272 5697000 -1627744 5696960 1625936 5698488 1627864 5697160 1627784 5696912 -1627784 5696912 1627744 5696960 1627864 5697160 1627880 5696848 -1627864 5697160 1627744 5696960 1625936 5698488 1626248 5698816 -1627944 5697240 1628024 5697288 1628272 5697000 1627864 5697160 -1628224 5696896 1627928 5696800 1627880 5696848 1627864 5697160 -1625936 5698488 1627824 5697120 1627744 5696960 1625808 5698384 -1627744 5696960 1627824 5697120 1627864 5697160 1627784 5696912 -1627744 5696960 1625936 5698488 1627824 5697120 1627784 5696912 -1627824 5697120 1625936 5698488 1627864 5697160 1627784 5696912 -1627864 5697160 1627880 5696848 1627784 5696912 1627824 5697120 -1627864 5697160 1628224 5696896 1627880 5696848 1627824 5697120 -1627864 5697160 1627880 5696848 1627824 5697120 1625936 5698488 -1627784 5696912 1627744 5696960 1627824 5697120 1627880 5696848 -1627864 5697160 1627824 5697120 1625936 5698488 1626248 5698816 -1627864 5697160 1627824 5697120 1626248 5698816 1627944 5697240 -1625936 5698488 1626032 5698672 1626248 5698816 1627824 5697120 -1627864 5697160 1627880 5696848 1627824 5697120 1626248 5698816 -1627824 5697120 1627744 5696960 1625936 5698488 1626248 5698816 -1625936 5698488 1627784 5697056 1627744 5696960 1625808 5698384 -1627744 5696960 1627784 5697056 1627824 5697120 1627784 5696912 -1627784 5697056 1625936 5698488 1627824 5697120 1627784 5696912 -1625936 5698488 1627824 5697120 1627784 5697056 1625808 5698384 -1627784 5697056 1627784 5696912 1627744 5696960 1625808 5698384 -1627824 5697120 1627880 5696848 1627784 5696912 1627784 5697056 -1627824 5697120 1627880 5696848 1627784 5697056 1625936 5698488 -1627784 5696912 1627744 5696960 1627784 5697056 1627880 5696848 -1627824 5697120 1627784 5697056 1625936 5698488 1626248 5698816 -1627824 5697120 1627864 5697160 1627880 5696848 1627784 5697056 -1627744 5696960 1625776 5698376 1625808 5698384 1627784 5697056 -1627784 5697056 1627744 5697000 1625808 5698384 1625936 5698488 -1627784 5697056 1627744 5697000 1625936 5698488 1627824 5697120 -1627744 5697000 1625808 5698384 1625936 5698488 1627824 5697120 -1627784 5697056 1627744 5696960 1627744 5697000 1627824 5697120 -1627744 5696960 1627744 5697000 1627784 5697056 1627784 5696912 -1627784 5697056 1627880 5696848 1627784 5696912 1627744 5697000 -1627744 5697000 1627824 5697120 1627784 5697056 1627784 5696912 -1627744 5697000 1627744 5696960 1625808 5698384 1625936 5698488 -1627744 5696960 1625808 5698384 1627744 5697000 1627784 5696912 -1625936 5698488 1626248 5698816 1627824 5697120 1627744 5697000 -1625808 5698384 1627744 5697000 1627744 5696960 1625776 5698376 -1623464 5696976 1626488 5696072 1615488 5689272 1623376 5696968 -1615488 5689272 1618392 5694976 1623376 5696968 1626488 5696072 -1623376 5696968 1623464 5696976 1626488 5696072 1618392 5694976 -1615488 5689272 1626488 5696072 1628016 5696712 1628048 5696704 -1623464 5696976 1628016 5696712 1626488 5696072 1623376 5696968 -1626488 5696072 1628048 5696704 1615488 5689272 1618392 5694976 -1626488 5696072 1623464 5696976 1628016 5696712 1628048 5696704 -1628016 5696712 1626488 5696072 1623464 5696976 1623632 5697024 -1628016 5696712 1626488 5696072 1623632 5697024 1623704 5697048 -1628016 5696712 1626488 5696072 1623704 5697048 1627968 5696752 -1626488 5696072 1623632 5697024 1623704 5697048 1627968 5696752 -1626488 5696072 1623376 5696968 1623464 5696976 1623632 5697024 -1628016 5696712 1628048 5696704 1626488 5696072 1627968 5696752 -1623704 5697048 1627784 5696912 1627968 5696752 1626488 5696072 -1623704 5697048 1627784 5696912 1626488 5696072 1623632 5697024 -1627968 5696752 1628016 5696712 1626488 5696072 1627784 5696912 -1623464 5696976 1623496 5696992 1623632 5697024 1626488 5696072 -1627784 5696912 1627928 5696800 1627968 5696752 1626488 5696072 -1623704 5697048 1623728 5697072 1627784 5696912 1626488 5696072 -1623704 5697048 1623728 5697072 1626488 5696072 1623632 5697024 -1627784 5696912 1627968 5696752 1626488 5696072 1623728 5697072 -1626488 5696072 1623464 5696976 1623632 5697024 1623704 5697048 -1615488 5689272 1626488 5696072 1628048 5696704 1615440 5689168 -1626488 5696072 1628016 5696712 1628048 5696704 1615440 5689168 -1615488 5689272 1618392 5694976 1626488 5696072 1615440 5689168 -1628048 5696704 1628088 5696712 1615440 5689168 1626488 5696072 -1628048 5696704 1628088 5696712 1626488 5696072 1628016 5696712 -1615440 5689168 1615488 5689272 1626488 5696072 1628088 5696712 -1628088 5696712 1612640 5685184 1615440 5689168 1626488 5696072 -1612640 5685184 1615392 5689120 1615440 5689168 1626488 5696072 -1615440 5689168 1615488 5689272 1626488 5696072 1612640 5685184 -1628088 5696712 1612640 5685184 1626488 5696072 1628048 5696704 -1628088 5696712 1628120 5696720 1612640 5685184 1626488 5696072 -1628088 5696712 1628120 5696720 1626488 5696072 1628048 5696704 -1612640 5685184 1615440 5689168 1626488 5696072 1628120 5696720 -1628120 5696720 1663776 5646144 1612640 5685184 1626488 5696072 -1663776 5646144 1612616 5685152 1612640 5685184 1626488 5696072 -1612640 5685184 1615440 5689168 1626488 5696072 1663776 5646144 -1628120 5696720 1663880 5646248 1663776 5646144 1626488 5696072 -1628120 5696720 1663776 5646144 1626488 5696072 1628088 5696712 -1618392 5694976 1618456 5695040 1623376 5696968 1626488 5696072 -1618392 5694976 1618456 5695040 1626488 5696072 1615488 5689272 -1623376 5696968 1623464 5696976 1626488 5696072 1618456 5695040 -1618456 5695040 1623304 5696976 1623376 5696968 1626488 5696072 -1615488 5689272 1615488 5689328 1618392 5694976 1626488 5696072 -1623728 5697072 1627744 5696960 1627784 5696912 1626488 5696072 -1623728 5697072 1623760 5697136 1627744 5696960 1626488 5696072 -1627784 5696912 1627968 5696752 1626488 5696072 1627744 5696960 -1623760 5697136 1625776 5698376 1627744 5696960 1626488 5696072 -1625776 5698376 1625808 5698384 1627744 5696960 1626488 5696072 -1623760 5697136 1625776 5698376 1626488 5696072 1623728 5697072 -1625776 5698376 1625808 5698384 1626488 5696072 1623760 5697136 -1623728 5697072 1623760 5697136 1626488 5696072 1623704 5697048 -1623760 5697136 1625240 5698480 1625776 5698376 1626488 5696072 -1627744 5696960 1627784 5696912 1626488 5696072 1625808 5698384 -1625808 5698384 1627744 5697000 1627744 5696960 1626488 5696072 -1625808 5698384 1625936 5698488 1627744 5697000 1626488 5696072 -1625808 5698384 1627744 5697000 1626488 5696072 1625776 5698376 -1627744 5696960 1627784 5696912 1626488 5696072 1627744 5697000 -1663776 5646144 1626520 5696056 1628120 5696720 1663880 5646248 -1628120 5696720 1626520 5696056 1626488 5696072 1628088 5696712 -1626520 5696056 1663776 5646144 1626488 5696072 1628088 5696712 -1628120 5696720 1663776 5646144 1626520 5696056 1628088 5696712 -1626488 5696072 1628048 5696704 1628088 5696712 1626520 5696056 -1626488 5696072 1628016 5696712 1628048 5696704 1626520 5696056 -1626488 5696072 1628016 5696712 1626520 5696056 1663776 5646144 -1626488 5696072 1627968 5696752 1628016 5696712 1626520 5696056 -1628016 5696712 1628048 5696704 1626520 5696056 1627968 5696752 -1626488 5696072 1627784 5696912 1627968 5696752 1626520 5696056 -1626488 5696072 1627784 5696912 1626520 5696056 1663776 5646144 -1627968 5696752 1628016 5696712 1626520 5696056 1627784 5696912 -1626488 5696072 1627744 5696960 1627784 5696912 1626520 5696056 -1627784 5696912 1627968 5696752 1626520 5696056 1627744 5696960 -1626488 5696072 1627744 5696960 1626520 5696056 1663776 5646144 -1627784 5696912 1627928 5696800 1627968 5696752 1626520 5696056 -1628048 5696704 1628088 5696712 1626520 5696056 1628016 5696712 -1628088 5696712 1628120 5696720 1626520 5696056 1628048 5696704 -1626488 5696072 1626520 5696056 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1626520 5696056 -1626488 5696072 1627744 5696960 1626520 5696056 1612640 5685184 -1626520 5696056 1628120 5696720 1663776 5646144 1612640 5685184 -1626488 5696072 1626520 5696056 1612640 5685184 1615440 5689168 -1626488 5696072 1627744 5696960 1626520 5696056 1615440 5689168 -1612640 5685184 1615392 5689120 1615440 5689168 1626520 5696056 -1626488 5696072 1626520 5696056 1615440 5689168 1615488 5689272 -1626488 5696072 1626520 5696056 1615488 5689272 1618392 5694976 -1626488 5696072 1626520 5696056 1618392 5694976 1618456 5695040 -1626488 5696072 1627744 5696960 1626520 5696056 1618392 5694976 -1626520 5696056 1615440 5689168 1615488 5689272 1618392 5694976 -1626520 5696056 1612640 5685184 1615440 5689168 1615488 5689272 -1626520 5696056 1663776 5646144 1612640 5685184 1615440 5689168 -1615488 5689272 1615488 5689328 1618392 5694976 1626520 5696056 -1626488 5696072 1627744 5697000 1627744 5696960 1626520 5696056 -1626520 5696056 1626552 5696056 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1626552 5696056 -1626520 5696056 1628120 5696720 1626552 5696056 1612640 5685184 -1628120 5696720 1626552 5696056 1626520 5696056 1628088 5696712 -1626552 5696056 1612640 5685184 1626520 5696056 1628088 5696712 -1626552 5696056 1628120 5696720 1663776 5646144 1612640 5685184 -1628120 5696720 1663776 5646144 1626552 5696056 1628088 5696712 -1663776 5646144 1626552 5696056 1628120 5696720 1663880 5646248 -1626520 5696056 1628048 5696704 1628088 5696712 1626552 5696056 -1626520 5696056 1628048 5696704 1626552 5696056 1612640 5685184 -1628088 5696712 1628120 5696720 1626552 5696056 1628048 5696704 -1626520 5696056 1628016 5696712 1628048 5696704 1626552 5696056 -1626520 5696056 1627968 5696752 1628016 5696712 1626552 5696056 -1626520 5696056 1627784 5696912 1627968 5696752 1626552 5696056 -1627968 5696752 1628016 5696712 1626552 5696056 1627784 5696912 -1626520 5696056 1627744 5696960 1627784 5696912 1626552 5696056 -1627784 5696912 1627968 5696752 1626552 5696056 1627744 5696960 -1626520 5696056 1627744 5696960 1626552 5696056 1612640 5685184 -1626520 5696056 1626488 5696072 1627744 5696960 1626552 5696056 -1627744 5696960 1627784 5696912 1626552 5696056 1626488 5696072 -1626520 5696056 1626488 5696072 1626552 5696056 1612640 5685184 -1627784 5696912 1627928 5696800 1627968 5696752 1626552 5696056 -1628016 5696712 1628048 5696704 1626552 5696056 1627968 5696752 -1628048 5696704 1628088 5696712 1626552 5696056 1628016 5696712 -1626520 5696056 1626552 5696056 1612640 5685184 1615440 5689168 -1626552 5696056 1663776 5646144 1612640 5685184 1615440 5689168 -1626520 5696056 1626488 5696072 1626552 5696056 1615440 5689168 -1612640 5685184 1615392 5689120 1615440 5689168 1626552 5696056 -1626520 5696056 1626552 5696056 1615440 5689168 1615488 5689272 -1626488 5696072 1627744 5697000 1627744 5696960 1626552 5696056 -1627744 5696960 1627784 5696912 1626552 5696056 1627744 5697000 -1626488 5696072 1627744 5697000 1626552 5696056 1626520 5696056 -1626488 5696072 1625808 5698384 1627744 5697000 1626552 5696056 -1626552 5696056 1626600 5696072 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1626600 5696072 -1626552 5696056 1626600 5696072 1612640 5685184 1615440 5689168 -1626552 5696056 1628120 5696720 1626600 5696072 1612640 5685184 -1628120 5696720 1626600 5696072 1626552 5696056 1628088 5696712 -1626552 5696056 1628048 5696704 1628088 5696712 1626600 5696072 -1626600 5696072 1612640 5685184 1626552 5696056 1628048 5696704 -1628088 5696712 1628120 5696720 1626600 5696072 1628048 5696704 -1626600 5696072 1628120 5696720 1663776 5646144 1612640 5685184 -1628120 5696720 1663776 5646144 1626600 5696072 1628088 5696712 -1663776 5646144 1626600 5696072 1628120 5696720 1663880 5646248 -1626552 5696056 1628016 5696712 1628048 5696704 1626600 5696072 -1628048 5696704 1628088 5696712 1626600 5696072 1628016 5696712 -1626552 5696056 1628016 5696712 1626600 5696072 1612640 5685184 -1626552 5696056 1627968 5696752 1628016 5696712 1626600 5696072 -1626552 5696056 1627784 5696912 1627968 5696752 1626600 5696072 -1626552 5696056 1627744 5696960 1627784 5696912 1626600 5696072 -1627784 5696912 1627968 5696752 1626600 5696072 1627744 5696960 -1626552 5696056 1627744 5697000 1627744 5696960 1626600 5696072 -1627744 5696960 1627784 5696912 1626600 5696072 1627744 5697000 -1626552 5696056 1627744 5697000 1626600 5696072 1612640 5685184 -1627784 5696912 1627928 5696800 1627968 5696752 1626600 5696072 -1627968 5696752 1628016 5696712 1626600 5696072 1627784 5696912 -1628016 5696712 1628048 5696704 1626600 5696072 1627968 5696752 -1626552 5696056 1626488 5696072 1627744 5697000 1626600 5696072 -1627744 5697000 1627744 5696960 1626600 5696072 1626488 5696072 -1626552 5696056 1626488 5696072 1626600 5696072 1612640 5685184 -1626552 5696056 1626520 5696056 1626488 5696072 1626600 5696072 -1626488 5696072 1625808 5698384 1627744 5697000 1626600 5696072 -1626600 5696072 1626688 5696104 1663776 5646144 1612640 5685184 -1663776 5646144 1612616 5685152 1612640 5685184 1626688 5696104 -1626600 5696072 1626688 5696104 1612640 5685184 1626552 5696056 -1626600 5696072 1628120 5696720 1626688 5696104 1612640 5685184 -1628120 5696720 1626688 5696104 1626600 5696072 1628088 5696712 -1626600 5696072 1628048 5696704 1628088 5696712 1626688 5696104 -1626600 5696072 1628016 5696712 1628048 5696704 1626688 5696104 -1628048 5696704 1628088 5696712 1626688 5696104 1628016 5696712 -1626688 5696104 1612640 5685184 1626600 5696072 1628016 5696712 -1628088 5696712 1628120 5696720 1626688 5696104 1628048 5696704 -1626688 5696104 1628120 5696720 1663776 5646144 1612640 5685184 -1628120 5696720 1663776 5646144 1626688 5696104 1628088 5696712 -1663776 5646144 1626688 5696104 1628120 5696720 1663880 5646248 -1626600 5696072 1627968 5696752 1628016 5696712 1626688 5696104 -1628016 5696712 1628048 5696704 1626688 5696104 1627968 5696752 -1626600 5696072 1627968 5696752 1626688 5696104 1612640 5685184 -1626600 5696072 1627784 5696912 1627968 5696752 1626688 5696104 -1626600 5696072 1627744 5696960 1627784 5696912 1626688 5696104 -1626600 5696072 1627744 5697000 1627744 5696960 1626688 5696104 -1627744 5696960 1627784 5696912 1626688 5696104 1627744 5697000 -1626600 5696072 1626488 5696072 1627744 5697000 1626688 5696104 -1627744 5697000 1627744 5696960 1626688 5696104 1626488 5696072 -1626600 5696072 1626488 5696072 1626688 5696104 1612640 5685184 -1627784 5696912 1627928 5696800 1627968 5696752 1626688 5696104 -1627784 5696912 1627968 5696752 1626688 5696104 1627744 5696960 -1627968 5696752 1628016 5696712 1626688 5696104 1627784 5696912 -1626600 5696072 1626552 5696056 1626488 5696072 1626688 5696104 -1626488 5696072 1625808 5698384 1627744 5697000 1626688 5696104 -1626488 5696072 1625808 5698384 1626688 5696104 1626600 5696072 -1625808 5698384 1625936 5698488 1627744 5697000 1626688 5696104 -1627744 5697000 1627744 5696960 1626688 5696104 1625808 5698384 -1626488 5696072 1625776 5698376 1625808 5698384 1626688 5696104 -1627968 5696752 1626776 5696152 1627784 5696912 1627928 5696800 -1627784 5696912 1626776 5696152 1626688 5696104 1627744 5696960 -1626688 5696104 1627744 5697000 1627744 5696960 1626776 5696152 -1627784 5696912 1627968 5696752 1626776 5696152 1627744 5696960 -1626688 5696104 1625808 5698384 1627744 5697000 1626776 5696152 -1627744 5697000 1627744 5696960 1626776 5696152 1625808 5698384 -1625808 5698384 1625936 5698488 1627744 5697000 1626776 5696152 -1626776 5696152 1627968 5696752 1626688 5696104 1625808 5698384 -1627744 5696960 1627784 5696912 1626776 5696152 1627744 5697000 -1626688 5696104 1626776 5696152 1627968 5696752 1628016 5696712 -1626688 5696104 1626776 5696152 1628016 5696712 1628048 5696704 -1626688 5696104 1626776 5696152 1628048 5696704 1628088 5696712 -1626776 5696152 1628016 5696712 1628048 5696704 1628088 5696712 -1626688 5696104 1626776 5696152 1628088 5696712 1628120 5696720 -1626776 5696152 1628048 5696704 1628088 5696712 1628120 5696720 -1626688 5696104 1625808 5698384 1626776 5696152 1628120 5696720 -1626688 5696104 1626776 5696152 1628120 5696720 1663776 5646144 -1626776 5696152 1627784 5696912 1627968 5696752 1628016 5696712 -1626776 5696152 1627968 5696752 1628016 5696712 1628048 5696704 -1626688 5696104 1626488 5696072 1625808 5698384 1626776 5696152 -1626688 5696104 1626600 5696072 1626488 5696072 1626776 5696152 -1625808 5698384 1627744 5697000 1626776 5696152 1626488 5696072 -1626688 5696104 1626488 5696072 1626776 5696152 1628120 5696720 -1626488 5696072 1625776 5698376 1625808 5698384 1626776 5696152 -1627968 5696752 1626864 5696192 1626776 5696152 1627784 5696912 -1626776 5696152 1627744 5696960 1627784 5696912 1626864 5696192 -1627784 5696912 1627968 5696752 1626864 5696192 1627744 5696960 -1626864 5696192 1628016 5696712 1626776 5696152 1627744 5696960 -1627968 5696752 1628016 5696712 1626864 5696192 1627784 5696912 -1627968 5696752 1626864 5696192 1627784 5696912 1627928 5696800 -1626776 5696152 1627744 5697000 1627744 5696960 1626864 5696192 -1626776 5696152 1625808 5698384 1627744 5697000 1626864 5696192 -1625808 5698384 1625936 5698488 1627744 5697000 1626864 5696192 -1627744 5696960 1627784 5696912 1626864 5696192 1627744 5697000 -1626776 5696152 1626488 5696072 1625808 5698384 1626864 5696192 -1626776 5696152 1625808 5698384 1626864 5696192 1628016 5696712 -1627744 5697000 1627744 5696960 1626864 5696192 1625808 5698384 -1626776 5696152 1626864 5696192 1628016 5696712 1628048 5696704 -1626864 5696192 1627968 5696752 1628016 5696712 1628048 5696704 -1626776 5696152 1626864 5696192 1628048 5696704 1628088 5696712 -1626776 5696152 1626864 5696192 1628088 5696712 1628120 5696720 -1626864 5696192 1628048 5696704 1628088 5696712 1628120 5696720 -1626776 5696152 1626864 5696192 1628120 5696720 1626688 5696104 -1626864 5696192 1628088 5696712 1628120 5696720 1626688 5696104 -1628120 5696720 1663776 5646144 1626688 5696104 1626864 5696192 -1626776 5696152 1625808 5698384 1626864 5696192 1626688 5696104 -1626864 5696192 1628016 5696712 1628048 5696704 1628088 5696712 -1627784 5696912 1626896 5696216 1626864 5696192 1627744 5696960 -1626864 5696192 1627744 5697000 1627744 5696960 1626896 5696216 -1626896 5696216 1627968 5696752 1626864 5696192 1627744 5697000 -1627744 5696960 1627784 5696912 1626896 5696216 1627744 5697000 -1626864 5696192 1626896 5696216 1627968 5696752 1628016 5696712 -1626864 5696192 1626896 5696216 1628016 5696712 1628048 5696704 -1626864 5696192 1627744 5697000 1626896 5696216 1628048 5696704 -1626896 5696216 1627968 5696752 1628016 5696712 1628048 5696704 -1626896 5696216 1627784 5696912 1627968 5696752 1628016 5696712 -1627784 5696912 1627968 5696752 1626896 5696216 1627744 5696960 -1627968 5696752 1626896 5696216 1627784 5696912 1627928 5696800 -1626864 5696192 1625808 5698384 1627744 5697000 1626896 5696216 -1626864 5696192 1626776 5696152 1625808 5698384 1626896 5696216 -1625808 5698384 1625936 5698488 1627744 5697000 1626896 5696216 -1627744 5697000 1627744 5696960 1626896 5696216 1625808 5698384 -1626864 5696192 1626776 5696152 1626896 5696216 1628048 5696704 -1626776 5696152 1626488 5696072 1625808 5698384 1626896 5696216 -1626776 5696152 1626488 5696072 1626896 5696216 1626864 5696192 -1626488 5696072 1625776 5698376 1625808 5698384 1626896 5696216 -1625808 5698384 1627744 5697000 1626896 5696216 1626488 5696072 -1626864 5696192 1626896 5696216 1628048 5696704 1628088 5696712 -1626776 5696152 1626688 5696104 1626488 5696072 1626896 5696216 -1627744 5696960 1626984 5696288 1626896 5696216 1627744 5697000 -1626896 5696216 1625808 5698384 1627744 5697000 1626984 5696288 -1625808 5698384 1625936 5698488 1627744 5697000 1626984 5696288 -1627744 5697000 1627744 5696960 1626984 5696288 1625808 5698384 -1626984 5696288 1627784 5696912 1626896 5696216 1625808 5698384 -1626896 5696216 1626984 5696288 1627784 5696912 1627968 5696752 -1626896 5696216 1626984 5696288 1627968 5696752 1628016 5696712 -1626896 5696216 1626984 5696288 1628016 5696712 1628048 5696704 -1626896 5696216 1626984 5696288 1628048 5696704 1626864 5696192 -1626984 5696288 1627968 5696752 1628016 5696712 1628048 5696704 -1626896 5696216 1625808 5698384 1626984 5696288 1628048 5696704 -1626984 5696288 1627784 5696912 1627968 5696752 1628016 5696712 -1626984 5696288 1627744 5696960 1627784 5696912 1627968 5696752 -1627744 5696960 1627784 5696912 1626984 5696288 1627744 5697000 -1627784 5696912 1627928 5696800 1627968 5696752 1626984 5696288 -1627784 5696912 1627880 5696848 1627928 5696800 1626984 5696288 -1627968 5696752 1628016 5696712 1626984 5696288 1627928 5696800 -1627784 5696912 1627928 5696800 1626984 5696288 1627744 5696960 -1626896 5696216 1626488 5696072 1625808 5698384 1626984 5696288 -1625808 5698384 1627744 5697000 1626984 5696288 1626488 5696072 -1626896 5696216 1626776 5696152 1626488 5696072 1626984 5696288 -1626896 5696216 1626864 5696192 1626776 5696152 1626984 5696288 -1626896 5696216 1626776 5696152 1626984 5696288 1628048 5696704 -1626488 5696072 1625776 5698376 1625808 5698384 1626984 5696288 -1626488 5696072 1625808 5698384 1626984 5696288 1626776 5696152 -1626776 5696152 1626688 5696104 1626488 5696072 1626984 5696288 -1626984 5696288 1627032 5696328 1627784 5696912 1627928 5696800 -1627784 5696912 1627880 5696848 1627928 5696800 1627032 5696328 -1626984 5696288 1627744 5696960 1627032 5696328 1627928 5696800 -1627744 5696960 1627032 5696328 1626984 5696288 1627744 5697000 -1626984 5696288 1625808 5698384 1627744 5697000 1627032 5696328 -1625808 5698384 1625936 5698488 1627744 5697000 1627032 5696328 -1626984 5696288 1626488 5696072 1625808 5698384 1627032 5696328 -1625808 5698384 1627744 5697000 1627032 5696328 1626488 5696072 -1627032 5696328 1627928 5696800 1626984 5696288 1626488 5696072 -1627744 5697000 1627744 5696960 1627032 5696328 1625808 5698384 -1627032 5696328 1627744 5696960 1627784 5696912 1627928 5696800 -1627744 5696960 1627784 5696912 1627032 5696328 1627744 5697000 -1626488 5696072 1625776 5698376 1625808 5698384 1627032 5696328 -1626984 5696288 1627032 5696328 1627928 5696800 1627968 5696752 -1626984 5696288 1627032 5696328 1627968 5696752 1628016 5696712 -1626984 5696288 1627032 5696328 1628016 5696712 1628048 5696704 -1626984 5696288 1627032 5696328 1628048 5696704 1626896 5696216 -1627032 5696328 1627968 5696752 1628016 5696712 1628048 5696704 -1627032 5696328 1627784 5696912 1627928 5696800 1627968 5696752 -1626984 5696288 1626488 5696072 1627032 5696328 1628048 5696704 -1627032 5696328 1627928 5696800 1627968 5696752 1628016 5696712 -1626984 5696288 1626776 5696152 1626488 5696072 1627032 5696328 -1627744 5697000 1627088 5696408 1625808 5698384 1625936 5698488 -1627744 5697000 1627088 5696408 1625936 5698488 1627824 5697120 -1625808 5698384 1627088 5696408 1627032 5696328 1626488 5696072 -1627032 5696328 1626984 5696288 1626488 5696072 1627088 5696408 -1626488 5696072 1625808 5698384 1627088 5696408 1626984 5696288 -1627032 5696328 1627088 5696408 1627744 5697000 1627744 5696960 -1627088 5696408 1627744 5696960 1627032 5696328 1626984 5696288 -1627032 5696328 1627088 5696408 1627744 5696960 1627784 5696912 -1627088 5696408 1627744 5697000 1627744 5696960 1627784 5696912 -1627032 5696328 1627088 5696408 1627784 5696912 1627928 5696800 -1627784 5696912 1627880 5696848 1627928 5696800 1627088 5696408 -1627032 5696328 1627088 5696408 1627928 5696800 1627968 5696752 -1627088 5696408 1627784 5696912 1627928 5696800 1627968 5696752 -1627032 5696328 1626984 5696288 1627088 5696408 1627968 5696752 -1627088 5696408 1627744 5696960 1627784 5696912 1627928 5696800 -1627744 5697000 1627744 5696960 1627088 5696408 1625936 5698488 -1627088 5696408 1626488 5696072 1625808 5698384 1625936 5698488 -1625808 5698384 1627088 5696408 1626488 5696072 1625776 5698376 -1627032 5696328 1627088 5696408 1627968 5696752 1628016 5696712 -1627032 5696328 1627088 5696408 1628016 5696712 1628048 5696704 -1627088 5696408 1627928 5696800 1627968 5696752 1628016 5696712 -1627032 5696328 1626984 5696288 1627088 5696408 1628016 5696712 -1626984 5696288 1626776 5696152 1626488 5696072 1627088 5696408 -1626984 5696288 1626776 5696152 1627088 5696408 1627032 5696328 -1626984 5696288 1626896 5696216 1626776 5696152 1627088 5696408 -1626488 5696072 1625808 5698384 1627088 5696408 1626776 5696152 -1626776 5696152 1626688 5696104 1626488 5696072 1627088 5696408 -1627744 5697000 1627088 5696512 1625936 5698488 1627824 5697120 -1625936 5698488 1627088 5696512 1627088 5696408 1625808 5698384 -1627088 5696408 1627088 5696512 1627744 5697000 1627744 5696960 -1627088 5696408 1627088 5696512 1627744 5696960 1627784 5696912 -1627088 5696408 1627088 5696512 1627784 5696912 1627928 5696800 -1627784 5696912 1627880 5696848 1627928 5696800 1627088 5696512 -1627088 5696512 1627744 5696960 1627784 5696912 1627928 5696800 -1627088 5696408 1627088 5696512 1627928 5696800 1627968 5696752 -1627088 5696408 1627088 5696512 1627968 5696752 1628016 5696712 -1627088 5696512 1627784 5696912 1627928 5696800 1627968 5696752 -1627088 5696512 1627744 5697000 1627744 5696960 1627784 5696912 -1627088 5696512 1627968 5696752 1627088 5696408 1625808 5698384 -1627088 5696408 1626488 5696072 1625808 5698384 1627088 5696512 -1625808 5698384 1625936 5698488 1627088 5696512 1626488 5696072 -1627088 5696408 1626776 5696152 1626488 5696072 1627088 5696512 -1627088 5696408 1626776 5696152 1627088 5696512 1627968 5696752 -1626488 5696072 1625808 5698384 1627088 5696512 1626776 5696152 -1627088 5696512 1625936 5698488 1627744 5697000 1627744 5696960 -1625936 5698488 1627744 5697000 1627088 5696512 1625808 5698384 -1626488 5696072 1625776 5698376 1625808 5698384 1627088 5696512 -1627088 5696408 1626984 5696288 1626776 5696152 1627088 5696512 -1627088 5696408 1627032 5696328 1626984 5696288 1627088 5696512 -1626984 5696288 1626896 5696216 1626776 5696152 1627088 5696512 -1626896 5696216 1626864 5696192 1626776 5696152 1627088 5696512 -1626776 5696152 1626488 5696072 1627088 5696512 1626896 5696216 -1627088 5696408 1627032 5696328 1627088 5696512 1627968 5696752 -1626984 5696288 1626896 5696216 1627088 5696512 1627032 5696328 -1626776 5696152 1626688 5696104 1626488 5696072 1627088 5696512 -1627744 5697000 1627056 5696568 1625936 5698488 1627824 5697120 -1627744 5697000 1627056 5696568 1627824 5697120 1627784 5697056 -1627056 5696568 1625936 5698488 1627824 5697120 1627784 5697056 -1627088 5696512 1627056 5696568 1627744 5697000 1627744 5696960 -1627088 5696512 1627056 5696568 1627744 5696960 1627784 5696912 -1627088 5696512 1625936 5698488 1627056 5696568 1627744 5696960 -1625936 5698488 1627056 5696568 1627088 5696512 1625808 5698384 -1627088 5696512 1626488 5696072 1625808 5698384 1627056 5696568 -1627088 5696512 1626776 5696152 1626488 5696072 1627056 5696568 -1626488 5696072 1625808 5698384 1627056 5696568 1626776 5696152 -1627088 5696512 1626896 5696216 1626776 5696152 1627056 5696568 -1626896 5696216 1626864 5696192 1626776 5696152 1627056 5696568 -1627088 5696512 1626984 5696288 1626896 5696216 1627056 5696568 -1626896 5696216 1626776 5696152 1627056 5696568 1626984 5696288 -1626776 5696152 1626488 5696072 1627056 5696568 1626896 5696216 -1627056 5696568 1627744 5696960 1627088 5696512 1626984 5696288 -1625808 5698384 1625936 5698488 1627056 5696568 1626488 5696072 -1627744 5697000 1627744 5696960 1627056 5696568 1627784 5697056 -1627056 5696568 1625808 5698384 1625936 5698488 1627824 5697120 -1626488 5696072 1625776 5698376 1625808 5698384 1627056 5696568 -1626488 5696072 1625776 5698376 1627056 5696568 1626776 5696152 -1625808 5698384 1625936 5698488 1627056 5696568 1625776 5698376 -1626488 5696072 1623760 5697136 1625776 5698376 1627056 5696568 -1625936 5698488 1626248 5698816 1627824 5697120 1627056 5696568 -1627088 5696512 1627032 5696328 1626984 5696288 1627056 5696568 -1627088 5696512 1627088 5696408 1627032 5696328 1627056 5696568 -1626984 5696288 1626896 5696216 1627056 5696568 1627032 5696328 -1627088 5696512 1627088 5696408 1627056 5696568 1627744 5696960 -1627032 5696328 1626984 5696288 1627056 5696568 1627088 5696408 -1626776 5696152 1626688 5696104 1626488 5696072 1627056 5696568 -1627056 5696568 1627024 5696624 1627824 5697120 1627784 5697056 -1627056 5696568 1627024 5696624 1627784 5697056 1627744 5697000 -1627024 5696624 1627824 5697120 1627784 5697056 1627744 5697000 -1627056 5696568 1627024 5696624 1627744 5697000 1627744 5696960 -1627024 5696624 1627784 5697056 1627744 5697000 1627744 5696960 -1627056 5696568 1627024 5696624 1627744 5696960 1627088 5696512 -1627056 5696568 1625936 5698488 1627024 5696624 1627744 5696960 -1625936 5698488 1627024 5696624 1627056 5696568 1625808 5698384 -1627056 5696568 1625776 5698376 1625808 5698384 1627024 5696624 -1627024 5696624 1627744 5696960 1627056 5696568 1625776 5698376 -1625808 5698384 1625936 5698488 1627024 5696624 1625776 5698376 -1627024 5696624 1625936 5698488 1627824 5697120 1627784 5697056 -1625936 5698488 1627824 5697120 1627024 5696624 1625808 5698384 -1627056 5696568 1626488 5696072 1625776 5698376 1627024 5696624 -1627056 5696568 1626776 5696152 1626488 5696072 1627024 5696624 -1627056 5696568 1626896 5696216 1626776 5696152 1627024 5696624 -1626896 5696216 1626864 5696192 1626776 5696152 1627024 5696624 -1626776 5696152 1626488 5696072 1627024 5696624 1626896 5696216 -1627056 5696568 1626984 5696288 1626896 5696216 1627024 5696624 -1627056 5696568 1627032 5696328 1626984 5696288 1627024 5696624 -1626896 5696216 1626776 5696152 1627024 5696624 1626984 5696288 -1625776 5698376 1625808 5698384 1627024 5696624 1626488 5696072 -1627056 5696568 1626984 5696288 1627024 5696624 1627744 5696960 -1626488 5696072 1625776 5698376 1627024 5696624 1626776 5696152 -1626488 5696072 1623760 5697136 1625776 5698376 1627024 5696624 -1627824 5697120 1627024 5696624 1625936 5698488 1626248 5698816 -1626776 5696152 1626688 5696104 1626488 5696072 1627024 5696624 -1627024 5696624 1626976 5696680 1625776 5698376 1625808 5698384 -1627024 5696624 1626976 5696680 1625808 5698384 1625936 5698488 -1626976 5696680 1625776 5698376 1625808 5698384 1625936 5698488 -1627024 5696624 1626488 5696072 1626976 5696680 1625936 5698488 -1627024 5696624 1626976 5696680 1625936 5698488 1627824 5697120 -1626976 5696680 1625808 5698384 1625936 5698488 1627824 5697120 -1627024 5696624 1626976 5696680 1627824 5697120 1627784 5697056 -1627024 5696624 1626976 5696680 1627784 5697056 1627744 5697000 -1627024 5696624 1626976 5696680 1627744 5697000 1627744 5696960 -1626976 5696680 1627784 5697056 1627744 5697000 1627744 5696960 -1627024 5696624 1626976 5696680 1627744 5696960 1627056 5696568 -1626976 5696680 1627824 5697120 1627784 5697056 1627744 5697000 -1627024 5696624 1626488 5696072 1626976 5696680 1627744 5696960 -1626976 5696680 1625936 5698488 1627824 5697120 1627784 5697056 -1626976 5696680 1626488 5696072 1625776 5698376 1625808 5698384 -1626488 5696072 1626976 5696680 1627024 5696624 1626776 5696152 -1627024 5696624 1626896 5696216 1626776 5696152 1626976 5696680 -1626896 5696216 1626864 5696192 1626776 5696152 1626976 5696680 -1627024 5696624 1626984 5696288 1626896 5696216 1626976 5696680 -1626896 5696216 1626776 5696152 1626976 5696680 1626984 5696288 -1627024 5696624 1627056 5696568 1626984 5696288 1626976 5696680 -1626976 5696680 1627744 5696960 1627024 5696624 1626984 5696288 -1626488 5696072 1625776 5698376 1626976 5696680 1626776 5696152 -1626776 5696152 1626488 5696072 1626976 5696680 1626896 5696216 -1625776 5698376 1626976 5696680 1626488 5696072 1623760 5697136 -1625936 5698488 1626248 5698816 1627824 5697120 1626976 5696680 -1626488 5696072 1626976 5696680 1626776 5696152 1626688 5696104 -1626976 5696680 1626928 5696720 1625776 5698376 1625808 5698384 -1626976 5696680 1626928 5696720 1625808 5698384 1625936 5698488 -1626976 5696680 1626928 5696720 1625936 5698488 1627824 5697120 -1626928 5696720 1625808 5698384 1625936 5698488 1627824 5697120 -1626976 5696680 1626928 5696720 1627824 5697120 1627784 5697056 -1626928 5696720 1625936 5698488 1627824 5697120 1627784 5697056 -1626976 5696680 1626928 5696720 1627784 5697056 1627744 5697000 -1626976 5696680 1626928 5696720 1627744 5697000 1627744 5696960 -1626928 5696720 1627824 5697120 1627784 5697056 1627744 5697000 -1626928 5696720 1625776 5698376 1625808 5698384 1625936 5698488 -1626976 5696680 1626488 5696072 1626928 5696720 1627744 5697000 -1626488 5696072 1626928 5696720 1626976 5696680 1626776 5696152 -1626928 5696720 1627744 5697000 1626976 5696680 1626776 5696152 -1626928 5696720 1626488 5696072 1625776 5698376 1625808 5698384 -1626488 5696072 1625776 5698376 1626928 5696720 1626776 5696152 -1626976 5696680 1626896 5696216 1626776 5696152 1626928 5696720 -1626896 5696216 1626864 5696192 1626776 5696152 1626928 5696720 -1626976 5696680 1626984 5696288 1626896 5696216 1626928 5696720 -1626976 5696680 1627024 5696624 1626984 5696288 1626928 5696720 -1626976 5696680 1626984 5696288 1626928 5696720 1627744 5697000 -1626776 5696152 1626488 5696072 1626928 5696720 1626896 5696216 -1626896 5696216 1626776 5696152 1626928 5696720 1626984 5696288 -1625776 5698376 1626928 5696720 1626488 5696072 1623760 5697136 -1625936 5698488 1626248 5698816 1627824 5697120 1626928 5696720 -1625936 5698488 1626248 5698816 1626928 5696720 1625808 5698384 -1627824 5697120 1627784 5697056 1626928 5696720 1626248 5698816 -1625936 5698488 1626032 5698672 1626248 5698816 1626928 5696720 -1626248 5698816 1627864 5697160 1627824 5697120 1626928 5696720 -1626488 5696072 1626928 5696720 1626776 5696152 1626688 5696104 -1626928 5696720 1626880 5696736 1625776 5698376 1625808 5698384 -1626928 5696720 1626880 5696736 1625808 5698384 1625936 5698488 -1626928 5696720 1626880 5696736 1625936 5698488 1626248 5698816 -1626880 5696736 1625808 5698384 1625936 5698488 1626248 5698816 -1626880 5696736 1625776 5698376 1625808 5698384 1625936 5698488 -1626928 5696720 1626488 5696072 1626880 5696736 1626248 5698816 -1626488 5696072 1626880 5696736 1626928 5696720 1626776 5696152 -1626928 5696720 1626896 5696216 1626776 5696152 1626880 5696736 -1626896 5696216 1626864 5696192 1626776 5696152 1626880 5696736 -1626880 5696736 1626248 5698816 1626928 5696720 1626896 5696216 -1626776 5696152 1626488 5696072 1626880 5696736 1626896 5696216 -1626880 5696736 1626488 5696072 1625776 5698376 1625808 5698384 -1626488 5696072 1625776 5698376 1626880 5696736 1626776 5696152 -1626928 5696720 1626984 5696288 1626896 5696216 1626880 5696736 -1626928 5696720 1626976 5696680 1626984 5696288 1626880 5696736 -1626976 5696680 1627024 5696624 1626984 5696288 1626880 5696736 -1626896 5696216 1626776 5696152 1626880 5696736 1626984 5696288 -1626928 5696720 1626976 5696680 1626880 5696736 1626248 5698816 -1626984 5696288 1626896 5696216 1626880 5696736 1626976 5696680 -1625936 5698488 1626032 5698672 1626248 5698816 1626880 5696736 -1625776 5698376 1626880 5696736 1626488 5696072 1623760 5697136 -1626928 5696720 1626880 5696736 1626248 5698816 1627824 5697120 -1626880 5696736 1625936 5698488 1626248 5698816 1627824 5697120 -1626928 5696720 1626880 5696736 1627824 5697120 1627784 5697056 -1626928 5696720 1626880 5696736 1627784 5697056 1627744 5697000 -1626880 5696736 1627824 5697120 1627784 5697056 1627744 5697000 -1626928 5696720 1626880 5696736 1627744 5697000 1626976 5696680 -1626928 5696720 1626976 5696680 1626880 5696736 1627744 5697000 -1626880 5696736 1626248 5698816 1627824 5697120 1627784 5697056 -1626248 5698816 1627864 5697160 1627824 5697120 1626880 5696736 -1626488 5696072 1626880 5696736 1626776 5696152 1626688 5696104 -1626488 5696072 1626880 5696736 1626688 5696104 1626600 5696072 -1626880 5696736 1626896 5696216 1626776 5696152 1626688 5696104 -1626488 5696072 1625776 5698376 1626880 5696736 1626688 5696104 -1626880 5696736 1626792 5696736 1625776 5698376 1625808 5698384 -1626880 5696736 1626792 5696736 1625808 5698384 1625936 5698488 -1626880 5696736 1626792 5696736 1625936 5698488 1626248 5698816 -1626792 5696736 1625776 5698376 1625808 5698384 1625936 5698488 -1626880 5696736 1626488 5696072 1626792 5696736 1625936 5698488 -1626488 5696072 1626792 5696736 1626880 5696736 1626688 5696104 -1626488 5696072 1626792 5696736 1626688 5696104 1626600 5696072 -1626792 5696736 1625936 5698488 1626880 5696736 1626688 5696104 -1626792 5696736 1626488 5696072 1625776 5698376 1625808 5698384 -1626488 5696072 1625776 5698376 1626792 5696736 1626688 5696104 -1625776 5698376 1626792 5696736 1626488 5696072 1623760 5697136 -1626880 5696736 1626776 5696152 1626688 5696104 1626792 5696736 -1626880 5696736 1626896 5696216 1626776 5696152 1626792 5696736 -1626896 5696216 1626864 5696192 1626776 5696152 1626792 5696736 -1626880 5696736 1626984 5696288 1626896 5696216 1626792 5696736 -1626896 5696216 1626864 5696192 1626792 5696736 1626984 5696288 -1626880 5696736 1626984 5696288 1626792 5696736 1625936 5698488 -1626688 5696104 1626488 5696072 1626792 5696736 1626776 5696152 -1626880 5696736 1626976 5696680 1626984 5696288 1626792 5696736 -1626880 5696736 1626928 5696720 1626976 5696680 1626792 5696736 -1626976 5696680 1627024 5696624 1626984 5696288 1626792 5696736 -1627024 5696624 1627056 5696568 1626984 5696288 1626792 5696736 -1626984 5696288 1626896 5696216 1626792 5696736 1627024 5696624 -1626880 5696736 1626976 5696680 1626792 5696736 1625936 5698488 -1626976 5696680 1627024 5696624 1626792 5696736 1626880 5696736 -1626776 5696152 1626688 5696104 1626792 5696736 1626864 5696192 -1626792 5696736 1626752 5696728 1625776 5698376 1625808 5698384 -1626792 5696736 1626752 5696728 1625808 5698384 1625936 5698488 -1626792 5696736 1626752 5696728 1625936 5698488 1626880 5696736 -1626752 5696728 1625776 5698376 1625808 5698384 1625936 5698488 -1626792 5696736 1626488 5696072 1626752 5696728 1625936 5698488 -1626488 5696072 1626752 5696728 1626792 5696736 1626688 5696104 -1626488 5696072 1626752 5696728 1626688 5696104 1626600 5696072 -1626792 5696736 1626776 5696152 1626688 5696104 1626752 5696728 -1626752 5696728 1625936 5698488 1626792 5696736 1626776 5696152 -1626688 5696104 1626488 5696072 1626752 5696728 1626776 5696152 -1626752 5696728 1626488 5696072 1625776 5698376 1625808 5698384 -1626488 5696072 1625776 5698376 1626752 5696728 1626688 5696104 -1625776 5698376 1626752 5696728 1626488 5696072 1623760 5697136 -1625776 5698376 1625808 5698384 1626752 5696728 1623760 5697136 -1626752 5696728 1626688 5696104 1626488 5696072 1623760 5697136 -1626488 5696072 1623728 5697072 1623760 5697136 1626752 5696728 -1625776 5698376 1626752 5696728 1623760 5697136 1625240 5698480 -1626792 5696736 1626864 5696192 1626776 5696152 1626752 5696728 -1626792 5696736 1626896 5696216 1626864 5696192 1626752 5696728 -1626792 5696736 1626984 5696288 1626896 5696216 1626752 5696728 -1626896 5696216 1626864 5696192 1626752 5696728 1626984 5696288 -1626792 5696736 1627024 5696624 1626984 5696288 1626752 5696728 -1627024 5696624 1627056 5696568 1626984 5696288 1626752 5696728 -1626792 5696736 1626976 5696680 1627024 5696624 1626752 5696728 -1626984 5696288 1626896 5696216 1626752 5696728 1627024 5696624 -1626776 5696152 1626688 5696104 1626752 5696728 1626864 5696192 -1626792 5696736 1627024 5696624 1626752 5696728 1625936 5698488 -1626864 5696192 1626776 5696152 1626752 5696728 1626896 5696216 -1626488 5696072 1626728 5696712 1626752 5696728 1626688 5696104 -1626488 5696072 1626728 5696712 1626688 5696104 1626600 5696072 -1626752 5696728 1626776 5696152 1626688 5696104 1626728 5696712 -1626752 5696728 1626864 5696192 1626776 5696152 1626728 5696712 -1626776 5696152 1626688 5696104 1626728 5696712 1626864 5696192 -1626728 5696712 1623760 5697136 1626752 5696728 1626864 5696192 -1626688 5696104 1626488 5696072 1626728 5696712 1626776 5696152 -1626488 5696072 1623760 5697136 1626728 5696712 1626688 5696104 -1623760 5697136 1626728 5696712 1626488 5696072 1623728 5697072 -1626752 5696728 1626728 5696712 1623760 5697136 1625776 5698376 -1626752 5696728 1626728 5696712 1625776 5698376 1625808 5698384 -1626752 5696728 1626728 5696712 1625808 5698384 1625936 5698488 -1626752 5696728 1626864 5696192 1626728 5696712 1625808 5698384 -1626728 5696712 1626488 5696072 1623760 5697136 1625776 5698376 -1626728 5696712 1623760 5697136 1625776 5698376 1625808 5698384 -1623760 5697136 1625240 5698480 1625776 5698376 1626728 5696712 -1626752 5696728 1626896 5696216 1626864 5696192 1626728 5696712 -1626752 5696728 1626984 5696288 1626896 5696216 1626728 5696712 -1626752 5696728 1627024 5696624 1626984 5696288 1626728 5696712 -1626984 5696288 1626896 5696216 1626728 5696712 1627024 5696624 -1627024 5696624 1627056 5696568 1626984 5696288 1626728 5696712 -1626752 5696728 1626792 5696736 1627024 5696624 1626728 5696712 -1626792 5696736 1626976 5696680 1627024 5696624 1626728 5696712 -1626792 5696736 1626976 5696680 1626728 5696712 1626752 5696728 -1627024 5696624 1626984 5696288 1626728 5696712 1626976 5696680 -1626864 5696192 1626776 5696152 1626728 5696712 1626896 5696216 -1626752 5696728 1626792 5696736 1626728 5696712 1625808 5698384 -1626792 5696736 1626880 5696736 1626976 5696680 1626728 5696712 -1626896 5696216 1626864 5696192 1626728 5696712 1626984 5696288 -1626728 5696712 1626696 5696656 1623760 5697136 1625776 5698376 -1626728 5696712 1626488 5696072 1626696 5696656 1625776 5698376 -1626488 5696072 1626696 5696656 1626728 5696712 1626688 5696104 -1626488 5696072 1626696 5696656 1626688 5696104 1626600 5696072 -1626728 5696712 1626776 5696152 1626688 5696104 1626696 5696656 -1626728 5696712 1626864 5696192 1626776 5696152 1626696 5696656 -1626728 5696712 1626896 5696216 1626864 5696192 1626696 5696656 -1626864 5696192 1626776 5696152 1626696 5696656 1626896 5696216 -1626776 5696152 1626688 5696104 1626696 5696656 1626864 5696192 -1626696 5696656 1625776 5698376 1626728 5696712 1626896 5696216 -1626688 5696104 1626488 5696072 1626696 5696656 1626776 5696152 -1626696 5696656 1626488 5696072 1623760 5697136 1625776 5698376 -1626488 5696072 1623760 5697136 1626696 5696656 1626688 5696104 -1623760 5697136 1626696 5696656 1626488 5696072 1623728 5697072 -1626728 5696712 1626696 5696656 1625776 5698376 1625808 5698384 -1623760 5697136 1625240 5698480 1625776 5698376 1626696 5696656 -1626728 5696712 1626984 5696288 1626896 5696216 1626696 5696656 -1626728 5696712 1627024 5696624 1626984 5696288 1626696 5696656 -1627024 5696624 1627056 5696568 1626984 5696288 1626696 5696656 -1627024 5696624 1627056 5696568 1626696 5696656 1626728 5696712 -1627056 5696568 1627032 5696328 1626984 5696288 1626696 5696656 -1626728 5696712 1626976 5696680 1627024 5696624 1626696 5696656 -1627024 5696624 1627056 5696568 1626696 5696656 1626976 5696680 -1626728 5696712 1626792 5696736 1626976 5696680 1626696 5696656 -1626728 5696712 1626752 5696728 1626792 5696736 1626696 5696656 -1626976 5696680 1627024 5696624 1626696 5696656 1626792 5696736 -1626896 5696216 1626864 5696192 1626696 5696656 1626984 5696288 -1626728 5696712 1626792 5696736 1626696 5696656 1625776 5698376 -1626792 5696736 1626880 5696736 1626976 5696680 1626696 5696656 -1626880 5696736 1626928 5696720 1626976 5696680 1626696 5696656 -1626792 5696736 1626880 5696736 1626696 5696656 1626728 5696712 -1626976 5696680 1627024 5696624 1626696 5696656 1626880 5696736 -1626984 5696288 1626896 5696216 1626696 5696656 1627056 5696568 -1626696 5696656 1626648 5696568 1623760 5697136 1625776 5698376 -1626696 5696656 1626648 5696568 1625776 5698376 1626728 5696712 -1626696 5696656 1626488 5696072 1626648 5696568 1625776 5698376 -1626488 5696072 1626648 5696568 1626696 5696656 1626688 5696104 -1626488 5696072 1626648 5696568 1626688 5696104 1626600 5696072 -1626696 5696656 1626776 5696152 1626688 5696104 1626648 5696568 -1626696 5696656 1626864 5696192 1626776 5696152 1626648 5696568 -1626696 5696656 1626896 5696216 1626864 5696192 1626648 5696568 -1626696 5696656 1626984 5696288 1626896 5696216 1626648 5696568 -1626896 5696216 1626864 5696192 1626648 5696568 1626984 5696288 -1626864 5696192 1626776 5696152 1626648 5696568 1626896 5696216 -1626776 5696152 1626688 5696104 1626648 5696568 1626864 5696192 -1626648 5696568 1625776 5698376 1626696 5696656 1626984 5696288 -1626648 5696568 1626776 5696152 1626688 5696104 1626600 5696072 -1623760 5697136 1626648 5696568 1626488 5696072 1623728 5697072 -1623760 5697136 1625240 5698480 1625776 5698376 1626648 5696568 -1626648 5696568 1626488 5696072 1623760 5697136 1625776 5698376 -1626488 5696072 1623760 5697136 1626648 5696568 1626600 5696072 -1626488 5696072 1626648 5696568 1626600 5696072 1626552 5696056 -1626696 5696656 1627056 5696568 1626984 5696288 1626648 5696568 -1627056 5696568 1627032 5696328 1626984 5696288 1626648 5696568 -1626696 5696656 1627024 5696624 1627056 5696568 1626648 5696568 -1626696 5696656 1626976 5696680 1627024 5696624 1626648 5696568 -1626984 5696288 1626896 5696216 1626648 5696568 1627056 5696568 -1626696 5696656 1627024 5696624 1626648 5696568 1625776 5698376 -1627056 5696568 1626984 5696288 1626648 5696568 1627024 5696624 -1623760 5697136 1626624 5696496 1626488 5696072 1623728 5697072 -1626648 5696568 1626624 5696496 1623760 5697136 1625776 5698376 -1626488 5696072 1626624 5696496 1626648 5696568 1626600 5696072 -1626648 5696568 1626688 5696104 1626600 5696072 1626624 5696496 -1626648 5696568 1626776 5696152 1626688 5696104 1626624 5696496 -1626688 5696104 1626600 5696072 1626624 5696496 1626776 5696152 -1626648 5696568 1626864 5696192 1626776 5696152 1626624 5696496 -1626648 5696568 1626896 5696216 1626864 5696192 1626624 5696496 -1626648 5696568 1626984 5696288 1626896 5696216 1626624 5696496 -1626648 5696568 1627056 5696568 1626984 5696288 1626624 5696496 -1626896 5696216 1626864 5696192 1626624 5696496 1626984 5696288 -1626864 5696192 1626776 5696152 1626624 5696496 1626896 5696216 -1626776 5696152 1626688 5696104 1626624 5696496 1626864 5696192 -1626624 5696496 1623760 5697136 1626648 5696568 1626984 5696288 -1626600 5696072 1626488 5696072 1626624 5696496 1626688 5696104 -1626488 5696072 1623760 5697136 1626624 5696496 1626600 5696072 -1626488 5696072 1626624 5696496 1626600 5696072 1626552 5696056 -1623760 5697136 1626592 5696408 1626488 5696072 1623728 5697072 -1626624 5696496 1626592 5696408 1623760 5697136 1626648 5696568 -1626488 5696072 1626592 5696408 1626624 5696496 1626600 5696072 -1626624 5696496 1626688 5696104 1626600 5696072 1626592 5696408 -1626624 5696496 1626776 5696152 1626688 5696104 1626592 5696408 -1626624 5696496 1626864 5696192 1626776 5696152 1626592 5696408 -1626776 5696152 1626688 5696104 1626592 5696408 1626864 5696192 -1626624 5696496 1626896 5696216 1626864 5696192 1626592 5696408 -1626624 5696496 1626984 5696288 1626896 5696216 1626592 5696408 -1626864 5696192 1626776 5696152 1626592 5696408 1626896 5696216 -1626688 5696104 1626600 5696072 1626592 5696408 1626776 5696152 -1626592 5696408 1623760 5697136 1626624 5696496 1626896 5696216 -1626600 5696072 1626488 5696072 1626592 5696408 1626688 5696104 -1626488 5696072 1623760 5697136 1626592 5696408 1626600 5696072 -1626488 5696072 1626592 5696408 1626600 5696072 1626552 5696056 -1623760 5697136 1626568 5696352 1626488 5696072 1623728 5697072 -1626592 5696408 1626568 5696352 1623760 5697136 1626624 5696496 -1623760 5697136 1626648 5696568 1626624 5696496 1626568 5696352 -1626592 5696408 1626488 5696072 1626568 5696352 1626624 5696496 -1626488 5696072 1626568 5696352 1626592 5696408 1626600 5696072 -1626592 5696408 1626688 5696104 1626600 5696072 1626568 5696352 -1626592 5696408 1626776 5696152 1626688 5696104 1626568 5696352 -1626592 5696408 1626864 5696192 1626776 5696152 1626568 5696352 -1626688 5696104 1626600 5696072 1626568 5696352 1626776 5696152 -1626568 5696352 1626624 5696496 1626592 5696408 1626776 5696152 -1626600 5696072 1626488 5696072 1626568 5696352 1626688 5696104 -1626568 5696352 1626488 5696072 1623760 5697136 1626624 5696496 -1626488 5696072 1623760 5697136 1626568 5696352 1626600 5696072 -1626488 5696072 1626568 5696352 1626600 5696072 1626552 5696056 -1623760 5697136 1626536 5696264 1626488 5696072 1623728 5697072 -1626568 5696352 1626536 5696264 1623760 5697136 1626624 5696496 -1626488 5696072 1626536 5696264 1626568 5696352 1626600 5696072 -1626568 5696352 1626688 5696104 1626600 5696072 1626536 5696264 -1626568 5696352 1626776 5696152 1626688 5696104 1626536 5696264 -1626568 5696352 1626592 5696408 1626776 5696152 1626536 5696264 -1626688 5696104 1626600 5696072 1626536 5696264 1626776 5696152 -1626536 5696264 1623760 5697136 1626568 5696352 1626776 5696152 -1626600 5696072 1626488 5696072 1626536 5696264 1626688 5696104 -1626488 5696072 1623760 5697136 1626536 5696264 1626600 5696072 -1626488 5696072 1626536 5696264 1626600 5696072 1626552 5696056 -1623760 5697136 1626512 5696208 1626488 5696072 1623728 5697072 -1626488 5696072 1623704 5697048 1623728 5697072 1626512 5696208 -1626536 5696264 1626512 5696208 1623760 5697136 1626568 5696352 -1623760 5697136 1626624 5696496 1626568 5696352 1626512 5696208 -1626536 5696264 1626488 5696072 1626512 5696208 1626568 5696352 -1626488 5696072 1626512 5696208 1626536 5696264 1626600 5696072 -1626536 5696264 1626688 5696104 1626600 5696072 1626512 5696208 -1626536 5696264 1626776 5696152 1626688 5696104 1626512 5696208 -1626512 5696208 1626568 5696352 1626536 5696264 1626688 5696104 -1626600 5696072 1626488 5696072 1626512 5696208 1626688 5696104 -1623760 5697136 1626568 5696352 1626512 5696208 1623728 5697072 -1626512 5696208 1626600 5696072 1626488 5696072 1623728 5697072 -1626488 5696072 1626512 5696208 1626600 5696072 1626552 5696056 -1626488 5696072 1626512 5696208 1626552 5696056 1626520 5696056 -1626512 5696208 1626688 5696104 1626600 5696072 1626552 5696056 -1626488 5696072 1623728 5697072 1626512 5696208 1626552 5696056 -1626512 5696208 1626480 5696112 1623728 5697072 1623760 5697136 -1623728 5697072 1626480 5696112 1626488 5696072 1623704 5697048 -1626488 5696072 1623632 5697024 1623704 5697048 1626480 5696112 -1626512 5696208 1626480 5696112 1623760 5697136 1626568 5696352 -1626512 5696208 1626488 5696072 1626480 5696112 1623760 5697136 -1626488 5696072 1626480 5696112 1626512 5696208 1626552 5696056 -1626488 5696072 1626480 5696112 1626552 5696056 1626520 5696056 -1626480 5696112 1623760 5697136 1626512 5696208 1626552 5696056 -1626480 5696112 1626512 5696208 1626552 5696056 1626520 5696056 -1626480 5696112 1623704 5697048 1623728 5697072 1623760 5697136 -1626480 5696112 1626520 5696056 1626488 5696072 1623704 5697048 -1626512 5696208 1626600 5696072 1626552 5696056 1626480 5696112 -1626512 5696208 1626688 5696104 1626600 5696072 1626480 5696112 -1626512 5696208 1626600 5696072 1626480 5696112 1623760 5697136 -1626552 5696056 1626520 5696056 1626480 5696112 1626600 5696072 -1663944 5646256 1629520 5698608 1630136 5704624 1631912 5713400 -1628488 5697448 1629520 5698608 1663944 5646256 1628464 5697392 -1663944 5646256 1628184 5696808 1628464 5697392 1629520 5698608 -1663944 5646256 1663880 5646248 1628184 5696808 1629520 5698608 -1663880 5646248 1628152 5696760 1628184 5696808 1629520 5698608 -1663880 5646248 1628120 5696720 1628152 5696760 1629520 5698608 -1663880 5646248 1628152 5696760 1629520 5698608 1663944 5646256 -1628184 5696808 1628304 5697064 1628464 5697392 1629520 5698608 -1628184 5696808 1628224 5696896 1628304 5697064 1629520 5698608 -1628224 5696896 1628272 5697000 1628304 5697064 1629520 5698608 -1628304 5697064 1628464 5697392 1629520 5698608 1628224 5696896 -1628304 5697064 1628376 5697224 1628464 5697392 1629520 5698608 -1628184 5696808 1628224 5696896 1629520 5698608 1628152 5696760 -1628464 5697392 1628488 5697448 1629520 5698608 1628304 5697064 -1630136 5704624 1629520 5698608 1628488 5697448 1628488 5697528 -1630136 5704624 1629520 5698608 1628488 5697528 1630064 5704496 -1628488 5697528 1628712 5701448 1630064 5704496 1629520 5698608 -1628712 5701448 1629944 5704312 1630064 5704496 1629520 5698608 -1628712 5701448 1628712 5701600 1629944 5704312 1629520 5698608 -1628488 5697528 1628632 5701384 1628712 5701448 1629520 5698608 -1628712 5701448 1629944 5704312 1629520 5698608 1628632 5701384 -1630064 5704496 1630136 5704624 1629520 5698608 1629944 5704312 -1629520 5698608 1628488 5697448 1628488 5697528 1628632 5701384 -1628488 5697528 1628288 5701200 1628632 5701384 1629520 5698608 -1628632 5701384 1628712 5701448 1629520 5698608 1628288 5701200 -1628488 5697528 1628288 5701200 1629520 5698608 1628488 5697448 -1628488 5697528 1628456 5697544 1628288 5701200 1629520 5698608 -1628456 5697544 1628128 5701160 1628288 5701200 1629520 5698608 -1628456 5697544 1628424 5697544 1628128 5701160 1629520 5698608 -1628424 5697544 1626344 5698984 1628128 5701160 1629520 5698608 -1626344 5698984 1627968 5701176 1628128 5701160 1629520 5698608 -1628424 5697544 1626344 5698984 1629520 5698608 1628456 5697544 -1628128 5701160 1628288 5701200 1629520 5698608 1626344 5698984 -1628488 5697528 1628456 5697544 1629520 5698608 1628488 5697448 -1628288 5701200 1628632 5701384 1629520 5698608 1628128 5701160 -1628456 5697544 1628424 5697544 1629520 5698608 1628488 5697528 -1628424 5697544 1628376 5697520 1626344 5698984 1629520 5698608 -1630136 5704624 1629520 5698608 1630064 5704496 1630112 5704600 -1629520 5698608 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1629520 5698608 1630064 5704496 -1628488 5697448 1628488 5697528 1629520 5698608 1628464 5697392 -1663944 5646256 1629592 5698584 1630136 5704624 1631912 5713400 -1629520 5698608 1629592 5698584 1663944 5646256 1663880 5646248 -1629520 5698608 1629592 5698584 1663880 5646248 1628152 5696760 -1663880 5646248 1628120 5696720 1628152 5696760 1629592 5698584 -1629520 5698608 1629592 5698584 1628152 5696760 1628184 5696808 -1629592 5698584 1663880 5646248 1628152 5696760 1628184 5696808 -1629520 5698608 1629592 5698584 1628184 5696808 1628224 5696896 -1629592 5698584 1628152 5696760 1628184 5696808 1628224 5696896 -1629520 5698608 1629592 5698584 1628224 5696896 1628304 5697064 -1628224 5696896 1628272 5697000 1628304 5697064 1629592 5698584 -1629520 5698608 1629592 5698584 1628304 5697064 1628464 5697392 -1629592 5698584 1628224 5696896 1628304 5697064 1628464 5697392 -1628304 5697064 1628376 5697224 1628464 5697392 1629592 5698584 -1629592 5698584 1628184 5696808 1628224 5696896 1628304 5697064 -1629520 5698608 1629592 5698584 1628464 5697392 1628488 5697448 -1629592 5698584 1628304 5697064 1628464 5697392 1628488 5697448 -1629592 5698584 1663944 5646256 1663880 5646248 1628152 5696760 -1630136 5704624 1629592 5698584 1629520 5698608 1630064 5704496 -1629520 5698608 1629944 5704312 1630064 5704496 1629592 5698584 -1629520 5698608 1628712 5701448 1629944 5704312 1629592 5698584 -1628712 5701448 1628712 5701600 1629944 5704312 1629592 5698584 -1629520 5698608 1628632 5701384 1628712 5701448 1629592 5698584 -1629944 5704312 1630064 5704496 1629592 5698584 1628712 5701448 -1630136 5704624 1629592 5698584 1630064 5704496 1630112 5704600 -1630064 5704496 1630136 5704624 1629592 5698584 1629944 5704312 -1629520 5698608 1628712 5701448 1629592 5698584 1628488 5697448 -1629520 5698608 1629592 5698584 1628488 5697448 1628488 5697528 -1629592 5698584 1628464 5697392 1628488 5697448 1628488 5697528 -1629520 5698608 1629592 5698584 1628488 5697528 1628456 5697544 -1629520 5698608 1628712 5701448 1629592 5698584 1628488 5697528 -1629592 5698584 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1629592 5698584 1630064 5704496 -1663944 5646256 1629664 5698592 1630136 5704624 1631912 5713400 -1629592 5698584 1629664 5698592 1663944 5646256 1663880 5646248 -1629592 5698584 1629664 5698592 1663880 5646248 1628152 5696760 -1663880 5646248 1628120 5696720 1628152 5696760 1629664 5698592 -1629592 5698584 1629664 5698592 1628152 5696760 1628184 5696808 -1629592 5698584 1629664 5698592 1628184 5696808 1628224 5696896 -1629664 5698592 1628152 5696760 1628184 5696808 1628224 5696896 -1629592 5698584 1629664 5698592 1628224 5696896 1628304 5697064 -1629664 5698592 1628184 5696808 1628224 5696896 1628304 5697064 -1628224 5696896 1628272 5697000 1628304 5697064 1629664 5698592 -1629592 5698584 1629664 5698592 1628304 5697064 1628464 5697392 -1629592 5698584 1629664 5698592 1628464 5697392 1628488 5697448 -1629664 5698592 1628304 5697064 1628464 5697392 1628488 5697448 -1628304 5697064 1628376 5697224 1628464 5697392 1629664 5698592 -1629664 5698592 1628224 5696896 1628304 5697064 1628464 5697392 -1629592 5698584 1629664 5698592 1628488 5697448 1628488 5697528 -1629664 5698592 1663880 5646248 1628152 5696760 1628184 5696808 -1629664 5698592 1663944 5646256 1663880 5646248 1628152 5696760 -1629592 5698584 1630136 5704624 1629664 5698592 1628488 5697448 -1630136 5704624 1629664 5698592 1629592 5698584 1630064 5704496 -1630136 5704624 1629664 5698592 1630064 5704496 1630112 5704600 -1629592 5698584 1629944 5704312 1630064 5704496 1629664 5698592 -1629592 5698584 1628712 5701448 1629944 5704312 1629664 5698592 -1629592 5698584 1629520 5698608 1628712 5701448 1629664 5698592 -1628712 5701448 1628712 5701600 1629944 5704312 1629664 5698592 -1629520 5698608 1628632 5701384 1628712 5701448 1629664 5698592 -1628712 5701448 1629944 5704312 1629664 5698592 1629520 5698608 -1629944 5704312 1630064 5704496 1629664 5698592 1628712 5701448 -1629664 5698592 1628488 5697448 1629592 5698584 1629520 5698608 -1630064 5704496 1630136 5704624 1629664 5698592 1629944 5704312 -1629664 5698592 1630136 5704624 1663944 5646256 1663880 5646248 -1630136 5704624 1663944 5646256 1629664 5698592 1630064 5704496 -1663944 5646256 1629760 5698616 1630136 5704624 1631912 5713400 -1630136 5704624 1631888 5713320 1631912 5713400 1629760 5698616 -1663944 5646256 1629760 5698616 1631912 5713400 1743800 5687320 -1629664 5698592 1629760 5698616 1663944 5646256 1663880 5646248 -1629664 5698592 1629760 5698616 1663880 5646248 1628152 5696760 -1663880 5646248 1628120 5696720 1628152 5696760 1629760 5698616 -1663880 5646248 1663776 5646144 1628120 5696720 1629760 5698616 -1629664 5698592 1629760 5698616 1628152 5696760 1628184 5696808 -1629664 5698592 1629760 5698616 1628184 5696808 1628224 5696896 -1629664 5698592 1629760 5698616 1628224 5696896 1628304 5697064 -1629760 5698616 1628184 5696808 1628224 5696896 1628304 5697064 -1628224 5696896 1628272 5697000 1628304 5697064 1629760 5698616 -1629664 5698592 1629760 5698616 1628304 5697064 1628464 5697392 -1629760 5698616 1628224 5696896 1628304 5697064 1628464 5697392 -1629664 5698592 1629760 5698616 1628464 5697392 1628488 5697448 -1629664 5698592 1629760 5698616 1628488 5697448 1629592 5698584 -1628304 5697064 1628376 5697224 1628464 5697392 1629760 5698616 -1628304 5697064 1628376 5697224 1629760 5698616 1628224 5696896 -1628304 5697064 1628328 5697136 1628376 5697224 1629760 5698616 -1628376 5697224 1628416 5697304 1628464 5697392 1629760 5698616 -1629760 5698616 1628376 5697224 1628464 5697392 1628488 5697448 -1629760 5698616 1628152 5696760 1628184 5696808 1628224 5696896 -1628152 5696760 1628184 5696808 1629760 5698616 1628120 5696720 -1629760 5698616 1663944 5646256 1663880 5646248 1628120 5696720 -1629664 5698592 1630136 5704624 1629760 5698616 1628488 5697448 -1630136 5704624 1629760 5698616 1629664 5698592 1630064 5704496 -1630136 5704624 1629760 5698616 1630064 5704496 1630112 5704600 -1629664 5698592 1629944 5704312 1630064 5704496 1629760 5698616 -1629664 5698592 1628712 5701448 1629944 5704312 1629760 5698616 -1628712 5701448 1628712 5701600 1629944 5704312 1629760 5698616 -1629664 5698592 1629520 5698608 1628712 5701448 1629760 5698616 -1629664 5698592 1629592 5698584 1629520 5698608 1629760 5698616 -1629520 5698608 1628632 5701384 1628712 5701448 1629760 5698616 -1629520 5698608 1628288 5701200 1628632 5701384 1629760 5698616 -1629520 5698608 1628632 5701384 1629760 5698616 1629664 5698592 -1628712 5701448 1629944 5704312 1629760 5698616 1628632 5701384 -1629944 5704312 1630064 5704496 1629760 5698616 1628712 5701448 -1629760 5698616 1628488 5697448 1629664 5698592 1629520 5698608 -1630064 5704496 1630136 5704624 1629760 5698616 1629944 5704312 -1663944 5646256 1663880 5646248 1629760 5698616 1631912 5713400 -1629760 5698616 1630064 5704496 1630136 5704624 1631912 5713400 -1631912 5713400 1629856 5698632 1629760 5698616 1630136 5704624 -1631912 5713400 1629856 5698632 1630136 5704624 1631888 5713320 -1663944 5646256 1629856 5698632 1631912 5713400 1743800 5687320 -1629760 5698616 1629856 5698632 1663944 5646256 1663880 5646248 -1629760 5698616 1629856 5698632 1663880 5646248 1628120 5696720 -1629760 5698616 1629856 5698632 1628120 5696720 1628152 5696760 -1663880 5646248 1663776 5646144 1628120 5696720 1629856 5698632 -1629760 5698616 1629856 5698632 1628152 5696760 1628184 5696808 -1629856 5698632 1628120 5696720 1628152 5696760 1628184 5696808 -1629760 5698616 1629856 5698632 1628184 5696808 1628224 5696896 -1629760 5698616 1629856 5698632 1628224 5696896 1628304 5697064 -1629760 5698616 1629856 5698632 1628304 5697064 1628376 5697224 -1629856 5698632 1628224 5696896 1628304 5697064 1628376 5697224 -1628224 5696896 1628272 5697000 1628304 5697064 1629856 5698632 -1628304 5697064 1628328 5697136 1628376 5697224 1629856 5698632 -1629760 5698616 1629856 5698632 1628376 5697224 1628464 5697392 -1629856 5698632 1628304 5697064 1628376 5697224 1628464 5697392 -1628376 5697224 1628416 5697304 1628464 5697392 1629856 5698632 -1629760 5698616 1629856 5698632 1628464 5697392 1628488 5697448 -1629760 5698616 1629856 5698632 1628488 5697448 1629664 5698592 -1628488 5697448 1629592 5698584 1629664 5698592 1629856 5698632 -1629856 5698632 1628376 5697224 1628464 5697392 1628488 5697448 -1629856 5698632 1628464 5697392 1628488 5697448 1629664 5698592 -1629856 5698632 1628184 5696808 1628224 5696896 1628304 5697064 -1629856 5698632 1628152 5696760 1628184 5696808 1628224 5696896 -1629856 5698632 1663880 5646248 1628120 5696720 1628152 5696760 -1629856 5698632 1663944 5646256 1663880 5646248 1628120 5696720 -1629856 5698632 1629664 5698592 1629760 5698616 1630136 5704624 -1629760 5698616 1630064 5704496 1630136 5704624 1629856 5698632 -1630136 5704624 1631912 5713400 1629856 5698632 1630064 5704496 -1630064 5704496 1630112 5704600 1630136 5704624 1629856 5698632 -1629760 5698616 1629944 5704312 1630064 5704496 1629856 5698632 -1629760 5698616 1628712 5701448 1629944 5704312 1629856 5698632 -1628712 5701448 1628712 5701600 1629944 5704312 1629856 5698632 -1629760 5698616 1628632 5701384 1628712 5701448 1629856 5698632 -1629760 5698616 1629520 5698608 1628632 5701384 1629856 5698632 -1629520 5698608 1628288 5701200 1628632 5701384 1629856 5698632 -1629760 5698616 1629664 5698592 1629520 5698608 1629856 5698632 -1628632 5701384 1628712 5701448 1629856 5698632 1629520 5698608 -1628712 5701448 1629944 5704312 1629856 5698632 1628632 5701384 -1629944 5704312 1630064 5704496 1629856 5698632 1628712 5701448 -1629760 5698616 1629520 5698608 1629856 5698632 1629664 5698592 -1630064 5704496 1630136 5704624 1629856 5698632 1629944 5704312 -1629856 5698632 1631912 5713400 1663944 5646256 1663880 5646248 -1631912 5713400 1663944 5646256 1629856 5698632 1630136 5704624 -1663944 5646256 1629888 5698656 1631912 5713400 1743800 5687320 -1629856 5698632 1629888 5698656 1663944 5646256 1663880 5646248 -1629856 5698632 1629888 5698656 1663880 5646248 1628120 5696720 -1663880 5646248 1663776 5646144 1628120 5696720 1629888 5698656 -1629856 5698632 1629888 5698656 1628120 5696720 1628152 5696760 -1629856 5698632 1629888 5698656 1628152 5696760 1628184 5696808 -1629856 5698632 1629888 5698656 1628184 5696808 1628224 5696896 -1629888 5698656 1628120 5696720 1628152 5696760 1628184 5696808 -1629888 5698656 1663880 5646248 1628120 5696720 1628152 5696760 -1629888 5698656 1663944 5646256 1663880 5646248 1628120 5696720 -1629856 5698632 1631912 5713400 1629888 5698656 1628184 5696808 -1631912 5713400 1629888 5698656 1629856 5698632 1630136 5704624 -1629856 5698632 1630064 5704496 1630136 5704624 1629888 5698656 -1631912 5713400 1629888 5698656 1630136 5704624 1631888 5713320 -1630136 5704624 1630152 5704824 1631888 5713320 1629888 5698656 -1630064 5704496 1630112 5704600 1630136 5704624 1629888 5698656 -1629856 5698632 1629944 5704312 1630064 5704496 1629888 5698656 -1630064 5704496 1630136 5704624 1629888 5698656 1629944 5704312 -1629856 5698632 1628712 5701448 1629944 5704312 1629888 5698656 -1628712 5701448 1628712 5701600 1629944 5704312 1629888 5698656 -1629856 5698632 1628632 5701384 1628712 5701448 1629888 5698656 -1629856 5698632 1629520 5698608 1628632 5701384 1629888 5698656 -1629520 5698608 1628288 5701200 1628632 5701384 1629888 5698656 -1629856 5698632 1629760 5698616 1629520 5698608 1629888 5698656 -1629760 5698616 1629664 5698592 1629520 5698608 1629888 5698656 -1629520 5698608 1628632 5701384 1629888 5698656 1629760 5698616 -1628632 5701384 1628712 5701448 1629888 5698656 1629520 5698608 -1628712 5701448 1629944 5704312 1629888 5698656 1628632 5701384 -1629944 5704312 1630064 5704496 1629888 5698656 1628712 5701448 -1629888 5698656 1628184 5696808 1629856 5698632 1629760 5698616 -1630136 5704624 1631888 5713320 1629888 5698656 1630064 5704496 -1629888 5698656 1631912 5713400 1663944 5646256 1663880 5646248 -1631912 5713400 1663944 5646256 1629888 5698656 1631888 5713320 -1663944 5646256 1629928 5698672 1631912 5713400 1743800 5687320 -1629888 5698656 1629928 5698672 1663944 5646256 1663880 5646248 -1629888 5698656 1629928 5698672 1663880 5646248 1628120 5696720 -1663880 5646248 1663776 5646144 1628120 5696720 1629928 5698672 -1629888 5698656 1629928 5698672 1628120 5696720 1628152 5696760 -1629888 5698656 1629928 5698672 1628152 5696760 1628184 5696808 -1629888 5698656 1629928 5698672 1628184 5696808 1629856 5698632 -1628184 5696808 1628224 5696896 1629856 5698632 1629928 5698672 -1629928 5698672 1628152 5696760 1628184 5696808 1629856 5698632 -1629928 5698672 1628120 5696720 1628152 5696760 1628184 5696808 -1629928 5698672 1663880 5646248 1628120 5696720 1628152 5696760 -1629928 5698672 1663944 5646256 1663880 5646248 1628120 5696720 -1629888 5698656 1631912 5713400 1629928 5698672 1629856 5698632 -1631912 5713400 1629928 5698672 1629888 5698656 1631888 5713320 -1629888 5698656 1630136 5704624 1631888 5713320 1629928 5698672 -1630136 5704624 1630152 5704824 1631888 5713320 1629928 5698672 -1629888 5698656 1630064 5704496 1630136 5704624 1629928 5698672 -1629888 5698656 1629944 5704312 1630064 5704496 1629928 5698672 -1630136 5704624 1631888 5713320 1629928 5698672 1630064 5704496 -1630064 5704496 1630112 5704600 1630136 5704624 1629928 5698672 -1629888 5698656 1628712 5701448 1629944 5704312 1629928 5698672 -1629944 5704312 1630064 5704496 1629928 5698672 1628712 5701448 -1628712 5701448 1628712 5701600 1629944 5704312 1629928 5698672 -1629888 5698656 1628632 5701384 1628712 5701448 1629928 5698672 -1629888 5698656 1629520 5698608 1628632 5701384 1629928 5698672 -1629520 5698608 1628288 5701200 1628632 5701384 1629928 5698672 -1629888 5698656 1629760 5698616 1629520 5698608 1629928 5698672 -1628632 5701384 1628712 5701448 1629928 5698672 1629520 5698608 -1628712 5701448 1629944 5704312 1629928 5698672 1628632 5701384 -1630064 5704496 1630136 5704624 1629928 5698672 1629944 5704312 -1631912 5713400 1663944 5646256 1629928 5698672 1631888 5713320 -1629928 5698672 1629856 5698632 1629888 5698656 1629520 5698608 -1631888 5713320 1631912 5713400 1629928 5698672 1630136 5704624 -1629928 5698672 1631912 5713400 1663944 5646256 1663880 5646248 -1663944 5646256 1629976 5698712 1631912 5713400 1743800 5687320 -1631912 5713400 1629976 5698712 1629928 5698672 1631888 5713320 -1631912 5713400 1663944 5646256 1629976 5698712 1631888 5713320 -1629928 5698672 1630136 5704624 1631888 5713320 1629976 5698712 -1629928 5698672 1630064 5704496 1630136 5704624 1629976 5698712 -1630136 5704624 1630152 5704824 1631888 5713320 1629976 5698712 -1630064 5704496 1630112 5704600 1630136 5704624 1629976 5698712 -1629928 5698672 1629944 5704312 1630064 5704496 1629976 5698712 -1629928 5698672 1628712 5701448 1629944 5704312 1629976 5698712 -1630064 5704496 1630136 5704624 1629976 5698712 1629944 5704312 -1628712 5701448 1628712 5701600 1629944 5704312 1629976 5698712 -1628712 5701600 1629752 5704128 1629944 5704312 1629976 5698712 -1628712 5701448 1628712 5701600 1629976 5698712 1629928 5698672 -1629928 5698672 1628632 5701384 1628712 5701448 1629976 5698712 -1628712 5701448 1628712 5701600 1629976 5698712 1628632 5701384 -1629928 5698672 1629520 5698608 1628632 5701384 1629976 5698712 -1629520 5698608 1628288 5701200 1628632 5701384 1629976 5698712 -1629928 5698672 1629888 5698656 1629520 5698608 1629976 5698712 -1629888 5698656 1629760 5698616 1629520 5698608 1629976 5698712 -1629888 5698656 1629856 5698632 1629760 5698616 1629976 5698712 -1629760 5698616 1629664 5698592 1629520 5698608 1629976 5698712 -1629888 5698656 1629760 5698616 1629976 5698712 1629928 5698672 -1629520 5698608 1628632 5701384 1629976 5698712 1629760 5698616 -1628632 5701384 1628712 5701448 1629976 5698712 1629520 5698608 -1629944 5704312 1630064 5704496 1629976 5698712 1628712 5701600 -1631888 5713320 1631912 5713400 1629976 5698712 1630136 5704624 -1630136 5704624 1631888 5713320 1629976 5698712 1630064 5704496 -1629928 5698672 1629976 5698712 1663944 5646256 1663880 5646248 -1629976 5698712 1631912 5713400 1663944 5646256 1663880 5646248 -1629928 5698672 1629976 5698712 1663880 5646248 1628120 5696720 -1663880 5646248 1663776 5646144 1628120 5696720 1629976 5698712 -1629928 5698672 1629976 5698712 1628120 5696720 1628152 5696760 -1629928 5698672 1629976 5698712 1628152 5696760 1628184 5696808 -1629976 5698712 1663880 5646248 1628120 5696720 1628152 5696760 -1629976 5698712 1663944 5646256 1663880 5646248 1628120 5696720 -1629976 5698712 1628152 5696760 1629928 5698672 1629888 5698656 -1663944 5646256 1630016 5698752 1631912 5713400 1743800 5687320 -1663944 5646256 1630016 5698752 1743800 5687320 1664040 5646192 -1631912 5713400 1743888 5687504 1743800 5687320 1630016 5698752 -1629976 5698712 1630016 5698752 1663944 5646256 1663880 5646248 -1629976 5698712 1631912 5713400 1630016 5698752 1663880 5646248 -1631912 5713400 1630016 5698752 1629976 5698712 1631888 5713320 -1629976 5698712 1630136 5704624 1631888 5713320 1630016 5698752 -1630136 5704624 1630152 5704824 1631888 5713320 1630016 5698752 -1630016 5698752 1663880 5646248 1629976 5698712 1630136 5704624 -1631888 5713320 1631912 5713400 1630016 5698752 1630136 5704624 -1663944 5646256 1663880 5646248 1630016 5698752 1743800 5687320 -1630016 5698752 1631888 5713320 1631912 5713400 1743800 5687320 -1629976 5698712 1630064 5704496 1630136 5704624 1630016 5698752 -1629976 5698712 1629944 5704312 1630064 5704496 1630016 5698752 -1630064 5704496 1630112 5704600 1630136 5704624 1630016 5698752 -1629976 5698712 1628712 5701600 1629944 5704312 1630016 5698752 -1628712 5701600 1629752 5704128 1629944 5704312 1630016 5698752 -1629944 5704312 1630064 5704496 1630016 5698752 1629752 5704128 -1628712 5701600 1629472 5703936 1629752 5704128 1630016 5698752 -1629976 5698712 1628712 5701448 1628712 5701600 1630016 5698752 -1629976 5698712 1628632 5701384 1628712 5701448 1630016 5698752 -1628712 5701448 1628712 5701600 1630016 5698752 1628632 5701384 -1629976 5698712 1629520 5698608 1628632 5701384 1630016 5698752 -1628632 5701384 1628712 5701448 1630016 5698752 1629520 5698608 -1629520 5698608 1628288 5701200 1628632 5701384 1630016 5698752 -1629976 5698712 1629760 5698616 1629520 5698608 1630016 5698752 -1629760 5698616 1629664 5698592 1629520 5698608 1630016 5698752 -1629976 5698712 1629888 5698656 1629760 5698616 1630016 5698752 -1629888 5698656 1629856 5698632 1629760 5698616 1630016 5698752 -1629976 5698712 1629928 5698672 1629888 5698656 1630016 5698752 -1629760 5698616 1629520 5698608 1630016 5698752 1629888 5698656 -1629520 5698608 1628632 5701384 1630016 5698752 1629760 5698616 -1628712 5701600 1629752 5704128 1630016 5698752 1628712 5701448 -1630136 5704624 1631888 5713320 1630016 5698752 1630064 5704496 -1629976 5698712 1629888 5698656 1630016 5698752 1663880 5646248 -1630064 5704496 1630136 5704624 1630016 5698752 1629944 5704312 -1629976 5698712 1630016 5698752 1663880 5646248 1628120 5696720 -1630016 5698752 1630064 5698800 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630064 5698800 -1743800 5687320 1630064 5698800 1631912 5713400 1743888 5687504 -1630016 5698752 1630064 5698800 1663944 5646256 1663880 5646248 -1630064 5698800 1743800 5687320 1663944 5646256 1663880 5646248 -1630016 5698752 1630064 5698800 1663880 5646248 1629976 5698712 -1630016 5698752 1631912 5713400 1630064 5698800 1663880 5646248 -1631912 5713400 1630064 5698800 1630016 5698752 1631888 5713320 -1630016 5698752 1630136 5704624 1631888 5713320 1630064 5698800 -1630136 5704624 1630152 5704824 1631888 5713320 1630064 5698800 -1630016 5698752 1630064 5704496 1630136 5704624 1630064 5698800 -1630064 5704496 1630112 5704600 1630136 5704624 1630064 5698800 -1630136 5704624 1631888 5713320 1630064 5698800 1630064 5704496 -1630064 5698800 1663880 5646248 1630016 5698752 1630064 5704496 -1631888 5713320 1631912 5713400 1630064 5698800 1630136 5704624 -1630016 5698752 1629944 5704312 1630064 5704496 1630064 5698800 -1630016 5698752 1629752 5704128 1629944 5704312 1630064 5698800 -1630016 5698752 1628712 5701600 1629752 5704128 1630064 5698800 -1629752 5704128 1629944 5704312 1630064 5698800 1628712 5701600 -1628712 5701600 1629472 5703936 1629752 5704128 1630064 5698800 -1630016 5698752 1628712 5701448 1628712 5701600 1630064 5698800 -1628712 5701600 1629752 5704128 1630064 5698800 1628712 5701448 -1630016 5698752 1628632 5701384 1628712 5701448 1630064 5698800 -1630016 5698752 1629520 5698608 1628632 5701384 1630064 5698800 -1628632 5701384 1628712 5701448 1630064 5698800 1629520 5698608 -1629520 5698608 1628288 5701200 1628632 5701384 1630064 5698800 -1630016 5698752 1629760 5698616 1629520 5698608 1630064 5698800 -1628712 5701448 1628712 5701600 1630064 5698800 1628632 5701384 -1630064 5704496 1630136 5704624 1630064 5698800 1629944 5704312 -1630016 5698752 1629520 5698608 1630064 5698800 1663880 5646248 -1629944 5704312 1630064 5704496 1630064 5698800 1629752 5704128 -1630064 5698800 1631912 5713400 1743800 5687320 1663944 5646256 -1631912 5713400 1743800 5687320 1630064 5698800 1631888 5713320 -1743800 5687320 1630104 5698856 1631912 5713400 1743888 5687504 -1630064 5698800 1630104 5698856 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630104 5698856 -1630064 5698800 1630104 5698856 1663944 5646256 1663880 5646248 -1630064 5698800 1630104 5698856 1663880 5646248 1630016 5698752 -1630104 5698856 1743800 5687320 1663944 5646256 1663880 5646248 -1630064 5698800 1631912 5713400 1630104 5698856 1663880 5646248 -1631912 5713400 1630104 5698856 1630064 5698800 1631888 5713320 -1630064 5698800 1630136 5704624 1631888 5713320 1630104 5698856 -1630136 5704624 1630152 5704824 1631888 5713320 1630104 5698856 -1630064 5698800 1630064 5704496 1630136 5704624 1630104 5698856 -1630064 5704496 1630112 5704600 1630136 5704624 1630104 5698856 -1630064 5698800 1629944 5704312 1630064 5704496 1630104 5698856 -1630064 5704496 1630136 5704624 1630104 5698856 1629944 5704312 -1630136 5704624 1631888 5713320 1630104 5698856 1630064 5704496 -1630064 5698800 1629752 5704128 1629944 5704312 1630104 5698856 -1630064 5698800 1628712 5701600 1629752 5704128 1630104 5698856 -1630064 5698800 1628712 5701448 1628712 5701600 1630104 5698856 -1628712 5701600 1629752 5704128 1630104 5698856 1628712 5701448 -1628712 5701600 1629472 5703936 1629752 5704128 1630104 5698856 -1630064 5698800 1628632 5701384 1628712 5701448 1630104 5698856 -1628712 5701448 1628712 5701600 1630104 5698856 1628632 5701384 -1630064 5698800 1629520 5698608 1628632 5701384 1630104 5698856 -1630064 5698800 1630016 5698752 1629520 5698608 1630104 5698856 -1629520 5698608 1628632 5701384 1630104 5698856 1630016 5698752 -1629520 5698608 1628288 5701200 1628632 5701384 1630104 5698856 -1630016 5698752 1629760 5698616 1629520 5698608 1630104 5698856 -1630016 5698752 1629760 5698616 1630104 5698856 1630064 5698800 -1629520 5698608 1628632 5701384 1630104 5698856 1629760 5698616 -1629760 5698616 1629664 5698592 1629520 5698608 1630104 5698856 -1630016 5698752 1629888 5698656 1629760 5698616 1630104 5698856 -1628632 5701384 1628712 5701448 1630104 5698856 1629520 5698608 -1629944 5704312 1630064 5704496 1630104 5698856 1629752 5704128 -1629752 5704128 1629944 5704312 1630104 5698856 1628712 5701600 -1630104 5698856 1663880 5646248 1630064 5698800 1630016 5698752 -1631888 5713320 1631912 5713400 1630104 5698856 1630136 5704624 -1630104 5698856 1631912 5713400 1743800 5687320 1663944 5646256 -1631912 5713400 1743800 5687320 1630104 5698856 1631888 5713320 -1743800 5687320 1630136 5698912 1631912 5713400 1743888 5687504 -1630104 5698856 1630136 5698912 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630136 5698912 -1630104 5698856 1630136 5698912 1663944 5646256 1663880 5646248 -1630104 5698856 1631912 5713400 1630136 5698912 1663944 5646256 -1631912 5713400 1630136 5698912 1630104 5698856 1631888 5713320 -1630104 5698856 1630136 5704624 1631888 5713320 1630136 5698912 -1630136 5704624 1630152 5704824 1631888 5713320 1630136 5698912 -1630104 5698856 1630064 5704496 1630136 5704624 1630136 5698912 -1630064 5704496 1630112 5704600 1630136 5704624 1630136 5698912 -1630104 5698856 1629944 5704312 1630064 5704496 1630136 5698912 -1630104 5698856 1629752 5704128 1629944 5704312 1630136 5698912 -1629944 5704312 1630064 5704496 1630136 5698912 1629752 5704128 -1630064 5704496 1630136 5704624 1630136 5698912 1629944 5704312 -1630104 5698856 1628712 5701600 1629752 5704128 1630136 5698912 -1630104 5698856 1628712 5701448 1628712 5701600 1630136 5698912 -1630104 5698856 1628632 5701384 1628712 5701448 1630136 5698912 -1628712 5701448 1628712 5701600 1630136 5698912 1628632 5701384 -1628712 5701600 1629472 5703936 1629752 5704128 1630136 5698912 -1630104 5698856 1629520 5698608 1628632 5701384 1630136 5698912 -1628632 5701384 1628712 5701448 1630136 5698912 1629520 5698608 -1630104 5698856 1629760 5698616 1629520 5698608 1630136 5698912 -1629520 5698608 1628288 5701200 1628632 5701384 1630136 5698912 -1629760 5698616 1629664 5698592 1629520 5698608 1630136 5698912 -1630104 5698856 1630016 5698752 1629760 5698616 1630136 5698912 -1630104 5698856 1630064 5698800 1630016 5698752 1630136 5698912 -1629760 5698616 1629520 5698608 1630136 5698912 1630016 5698752 -1630016 5698752 1629888 5698656 1629760 5698616 1630136 5698912 -1629520 5698608 1628632 5701384 1630136 5698912 1629760 5698616 -1629752 5704128 1629944 5704312 1630136 5698912 1628712 5701600 -1628712 5701600 1629752 5704128 1630136 5698912 1628712 5701448 -1630136 5704624 1631888 5713320 1630136 5698912 1630064 5704496 -1630136 5698912 1663944 5646256 1630104 5698856 1630016 5698752 -1631888 5713320 1631912 5713400 1630136 5698912 1630136 5704624 -1630136 5698912 1631912 5713400 1743800 5687320 1663944 5646256 -1631912 5713400 1743800 5687320 1630136 5698912 1631888 5713320 -1630136 5704624 1630152 5704824 1631888 5713320 1630136 5698968 -1630064 5704496 1630112 5704600 1630136 5704624 1630136 5698968 -1630136 5698912 1629944 5704312 1630064 5704496 1630136 5698968 -1630136 5698912 1629752 5704128 1629944 5704312 1630136 5698968 -1630136 5698912 1628712 5701600 1629752 5704128 1630136 5698968 -1628712 5701600 1629472 5703936 1629752 5704128 1630136 5698968 -1629752 5704128 1629944 5704312 1630136 5698968 1628712 5701600 -1629944 5704312 1630064 5704496 1630136 5698968 1629752 5704128 -1630136 5698912 1628712 5701448 1628712 5701600 1630136 5698968 -1630136 5698912 1628632 5701384 1628712 5701448 1630136 5698968 -1630136 5698912 1629520 5698608 1628632 5701384 1630136 5698968 -1628632 5701384 1628712 5701448 1630136 5698968 1629520 5698608 -1629520 5698608 1628288 5701200 1628632 5701384 1630136 5698968 -1629520 5698608 1628288 5701200 1630136 5698968 1630136 5698912 -1628632 5701384 1628712 5701448 1630136 5698968 1628288 5701200 -1629520 5698608 1628128 5701160 1628288 5701200 1630136 5698968 -1630136 5698912 1629760 5698616 1629520 5698608 1630136 5698968 -1629520 5698608 1628288 5701200 1630136 5698968 1629760 5698616 -1630136 5698912 1630016 5698752 1629760 5698616 1630136 5698968 -1629760 5698616 1629664 5698592 1629520 5698608 1630136 5698968 -1630016 5698752 1629888 5698656 1629760 5698616 1630136 5698968 -1630136 5698912 1630104 5698856 1630016 5698752 1630136 5698968 -1630104 5698856 1630064 5698800 1630016 5698752 1630136 5698968 -1630016 5698752 1629760 5698616 1630136 5698968 1630064 5698800 -1630104 5698856 1630064 5698800 1630136 5698968 1630136 5698912 -1629760 5698616 1629520 5698608 1630136 5698968 1630016 5698752 -1628712 5701600 1629752 5704128 1630136 5698968 1628712 5701448 -1628712 5701448 1628712 5701600 1630136 5698968 1628632 5701384 -1630136 5698912 1630104 5698856 1630136 5698968 1631888 5713320 -1630136 5698912 1630136 5698968 1631888 5713320 1631912 5713400 -1630136 5698912 1630104 5698856 1630136 5698968 1631912 5713400 -1630064 5704496 1630136 5704624 1630136 5698968 1629944 5704312 -1630136 5698912 1630136 5698968 1631912 5713400 1743800 5687320 -1631912 5713400 1743888 5687504 1743800 5687320 1630136 5698968 -1630136 5698912 1630104 5698856 1630136 5698968 1743800 5687320 -1630136 5698968 1631888 5713320 1631912 5713400 1743800 5687320 -1630136 5698912 1630136 5698968 1743800 5687320 1663944 5646256 -1630136 5698968 1630136 5704624 1631888 5713320 1631912 5713400 -1629520 5698608 1630080 5698992 1630136 5698968 1629760 5698616 -1630136 5698968 1630080 5698992 1628288 5701200 1628632 5701384 -1630136 5698968 1630080 5698992 1628632 5701384 1628712 5701448 -1630080 5698992 1628288 5701200 1628632 5701384 1628712 5701448 -1629520 5698608 1630080 5698992 1629760 5698616 1629664 5698592 -1628288 5701200 1630080 5698992 1629520 5698608 1628128 5701160 -1630136 5698968 1630016 5698752 1629760 5698616 1630080 5698992 -1629760 5698616 1629520 5698608 1630080 5698992 1630016 5698752 -1630136 5698968 1630064 5698800 1630016 5698752 1630080 5698992 -1630136 5698968 1630104 5698856 1630064 5698800 1630080 5698992 -1630064 5698800 1630016 5698752 1630080 5698992 1630104 5698856 -1630016 5698752 1629888 5698656 1629760 5698616 1630080 5698992 -1629760 5698616 1629520 5698608 1630080 5698992 1629888 5698656 -1629888 5698656 1629856 5698632 1629760 5698616 1630080 5698992 -1630016 5698752 1629976 5698712 1629888 5698656 1630080 5698992 -1629976 5698712 1629928 5698672 1629888 5698656 1630080 5698992 -1629888 5698656 1629760 5698616 1630080 5698992 1629976 5698712 -1630136 5698968 1630136 5698912 1630104 5698856 1630080 5698992 -1630104 5698856 1630064 5698800 1630080 5698992 1630136 5698912 -1630016 5698752 1629976 5698712 1630080 5698992 1630064 5698800 -1630136 5698968 1630080 5698992 1628712 5701448 1628712 5701600 -1630080 5698992 1628712 5701448 1630136 5698968 1630136 5698912 -1630080 5698992 1629520 5698608 1628288 5701200 1628632 5701384 -1629520 5698608 1628288 5701200 1630080 5698992 1629760 5698616 -1628288 5701200 1630032 5698984 1629520 5698608 1628128 5701160 -1630080 5698992 1630032 5698984 1628288 5701200 1628632 5701384 -1630080 5698992 1630032 5698984 1628632 5701384 1628712 5701448 -1630080 5698992 1630032 5698984 1628712 5701448 1630136 5698968 -1630032 5698984 1628288 5701200 1628632 5701384 1628712 5701448 -1630080 5698992 1629520 5698608 1630032 5698984 1628712 5701448 -1629520 5698608 1630032 5698984 1630080 5698992 1629760 5698616 -1630080 5698992 1629888 5698656 1629760 5698616 1630032 5698984 -1629888 5698656 1629856 5698632 1629760 5698616 1630032 5698984 -1629520 5698608 1630032 5698984 1629760 5698616 1629664 5698592 -1630080 5698992 1629976 5698712 1629888 5698656 1630032 5698984 -1629888 5698656 1629760 5698616 1630032 5698984 1629976 5698712 -1630080 5698992 1630016 5698752 1629976 5698712 1630032 5698984 -1629976 5698712 1629928 5698672 1629888 5698656 1630032 5698984 -1629976 5698712 1629888 5698656 1630032 5698984 1630016 5698752 -1630080 5698992 1630064 5698800 1630016 5698752 1630032 5698984 -1630080 5698992 1630104 5698856 1630064 5698800 1630032 5698984 -1630080 5698992 1630136 5698912 1630104 5698856 1630032 5698984 -1630104 5698856 1630064 5698800 1630032 5698984 1630136 5698912 -1630016 5698752 1629976 5698712 1630032 5698984 1630064 5698800 -1630080 5698992 1630136 5698968 1630136 5698912 1630032 5698984 -1630064 5698800 1630016 5698752 1630032 5698984 1630104 5698856 -1630032 5698984 1628712 5701448 1630080 5698992 1630136 5698912 -1629760 5698616 1629520 5698608 1630032 5698984 1629888 5698656 -1630032 5698984 1629520 5698608 1628288 5701200 1628632 5701384 -1629520 5698608 1628288 5701200 1630032 5698984 1629760 5698616 -1628288 5701200 1629944 5698960 1629520 5698608 1628128 5701160 -1630032 5698984 1629944 5698960 1628288 5701200 1628632 5701384 -1629944 5698960 1629520 5698608 1628288 5701200 1628632 5701384 -1630032 5698984 1629944 5698960 1628632 5701384 1628712 5701448 -1630032 5698984 1629944 5698960 1628712 5701448 1630080 5698992 -1629944 5698960 1628288 5701200 1628632 5701384 1628712 5701448 -1630032 5698984 1629520 5698608 1629944 5698960 1628712 5701448 -1629520 5698608 1629944 5698960 1630032 5698984 1629760 5698616 -1629520 5698608 1628288 5701200 1629944 5698960 1629760 5698616 -1629520 5698608 1629944 5698960 1629760 5698616 1629664 5698592 -1629944 5698960 1630032 5698984 1629760 5698616 1629664 5698592 -1629520 5698608 1628288 5701200 1629944 5698960 1629664 5698592 -1629520 5698608 1629944 5698960 1629664 5698592 1629592 5698584 -1630032 5698984 1629888 5698656 1629760 5698616 1629944 5698960 -1630032 5698984 1629976 5698712 1629888 5698656 1629944 5698960 -1629760 5698616 1629664 5698592 1629944 5698960 1629888 5698656 -1629888 5698656 1629856 5698632 1629760 5698616 1629944 5698960 -1629976 5698712 1629928 5698672 1629888 5698656 1629944 5698960 -1630032 5698984 1630016 5698752 1629976 5698712 1629944 5698960 -1629976 5698712 1629888 5698656 1629944 5698960 1630016 5698752 -1630032 5698984 1630064 5698800 1630016 5698752 1629944 5698960 -1630016 5698752 1629976 5698712 1629944 5698960 1630064 5698800 -1630032 5698984 1630104 5698856 1630064 5698800 1629944 5698960 -1630032 5698984 1630136 5698912 1630104 5698856 1629944 5698960 -1630064 5698800 1630016 5698752 1629944 5698960 1630104 5698856 -1629888 5698656 1629760 5698616 1629944 5698960 1629976 5698712 -1629944 5698960 1628712 5701448 1630032 5698984 1630104 5698856 -1629944 5698960 1629856 5698944 1628288 5701200 1628632 5701384 -1629520 5698608 1629856 5698944 1629944 5698960 1629664 5698592 -1629944 5698960 1629664 5698592 1629856 5698944 1628632 5701384 -1629856 5698944 1629520 5698608 1628288 5701200 1628632 5701384 -1629520 5698608 1628288 5701200 1629856 5698944 1629664 5698592 -1629520 5698608 1629856 5698944 1629664 5698592 1629592 5698584 -1629944 5698960 1629760 5698616 1629664 5698592 1629856 5698944 -1629944 5698960 1629888 5698656 1629760 5698616 1629856 5698944 -1629664 5698592 1629520 5698608 1629856 5698944 1629760 5698616 -1629944 5698960 1629888 5698656 1629856 5698944 1628632 5701384 -1629888 5698656 1629856 5698632 1629760 5698616 1629856 5698944 -1629760 5698616 1629664 5698592 1629856 5698944 1629888 5698656 -1628288 5701200 1629856 5698944 1629520 5698608 1628128 5701160 -1629944 5698960 1629976 5698712 1629888 5698656 1629856 5698944 -1629944 5698960 1630016 5698752 1629976 5698712 1629856 5698944 -1629888 5698656 1629760 5698616 1629856 5698944 1629976 5698712 -1629944 5698960 1630016 5698752 1629856 5698944 1628632 5701384 -1629976 5698712 1629928 5698672 1629888 5698656 1629856 5698944 -1629888 5698656 1629760 5698616 1629856 5698944 1629928 5698672 -1629944 5698960 1630064 5698800 1630016 5698752 1629856 5698944 -1629976 5698712 1629928 5698672 1629856 5698944 1630016 5698752 -1629944 5698960 1629856 5698944 1628632 5701384 1628712 5701448 -1629856 5698944 1628288 5701200 1628632 5701384 1628712 5701448 -1629944 5698960 1630016 5698752 1629856 5698944 1628712 5701448 -1629944 5698960 1629856 5698944 1628712 5701448 1630032 5698984 -1629944 5698960 1630016 5698752 1629856 5698944 1630032 5698984 -1628712 5701448 1630080 5698992 1630032 5698984 1629856 5698944 -1629856 5698944 1628632 5701384 1628712 5701448 1630032 5698984 -1629856 5698944 1629776 5698928 1628288 5701200 1628632 5701384 -1629856 5698944 1629776 5698928 1628632 5701384 1628712 5701448 -1629856 5698944 1629520 5698608 1629776 5698928 1628632 5701384 -1629520 5698608 1629776 5698928 1629856 5698944 1629664 5698592 -1629856 5698944 1629760 5698616 1629664 5698592 1629776 5698928 -1629776 5698928 1628632 5701384 1629856 5698944 1629760 5698616 -1629664 5698592 1629520 5698608 1629776 5698928 1629760 5698616 -1629776 5698928 1629520 5698608 1628288 5701200 1628632 5701384 -1629520 5698608 1628288 5701200 1629776 5698928 1629664 5698592 -1629520 5698608 1629776 5698928 1629664 5698592 1629592 5698584 -1629856 5698944 1629888 5698656 1629760 5698616 1629776 5698928 -1629856 5698944 1629928 5698672 1629888 5698656 1629776 5698928 -1629760 5698616 1629664 5698592 1629776 5698928 1629888 5698656 -1629856 5698944 1629888 5698656 1629776 5698928 1628632 5701384 -1629888 5698656 1629856 5698632 1629760 5698616 1629776 5698928 -1628288 5701200 1629776 5698928 1629520 5698608 1628128 5701160 -1628288 5701200 1628632 5701384 1629776 5698928 1628128 5701160 -1629776 5698928 1629664 5698592 1629520 5698608 1628128 5701160 -1629520 5698608 1626344 5698984 1628128 5701160 1629776 5698928 -1629520 5698608 1629680 5698904 1629776 5698928 1629664 5698592 -1629776 5698928 1629760 5698616 1629664 5698592 1629680 5698904 -1629776 5698928 1629888 5698656 1629760 5698616 1629680 5698904 -1629680 5698904 1628128 5701160 1629776 5698928 1629760 5698616 -1629664 5698592 1629520 5698608 1629680 5698904 1629760 5698616 -1629520 5698608 1628128 5701160 1629680 5698904 1629664 5698592 -1629520 5698608 1629680 5698904 1629664 5698592 1629592 5698584 -1629680 5698904 1629760 5698616 1629664 5698592 1629592 5698584 -1629520 5698608 1628128 5701160 1629680 5698904 1629592 5698584 -1628128 5701160 1629680 5698904 1629520 5698608 1626344 5698984 -1629776 5698928 1629680 5698904 1628128 5701160 1628288 5701200 -1629776 5698928 1629680 5698904 1628288 5701200 1628632 5701384 -1629776 5698928 1629680 5698904 1628632 5701384 1629856 5698944 -1629776 5698928 1629760 5698616 1629680 5698904 1628632 5701384 -1629680 5698904 1629520 5698608 1628128 5701160 1628288 5701200 -1629680 5698904 1628128 5701160 1628288 5701200 1628632 5701384 -1629680 5698904 1629600 5698864 1628128 5701160 1628288 5701200 -1629680 5698904 1629520 5698608 1629600 5698864 1628288 5701200 -1629520 5698608 1629600 5698864 1629680 5698904 1629592 5698584 -1629600 5698864 1628288 5701200 1629680 5698904 1629592 5698584 -1629600 5698864 1629520 5698608 1628128 5701160 1628288 5701200 -1629520 5698608 1628128 5701160 1629600 5698864 1629592 5698584 -1629680 5698904 1629664 5698592 1629592 5698584 1629600 5698864 -1629680 5698904 1629760 5698616 1629664 5698592 1629600 5698864 -1629680 5698904 1629776 5698928 1629760 5698616 1629600 5698864 -1629680 5698904 1629760 5698616 1629600 5698864 1628288 5701200 -1629592 5698584 1629520 5698608 1629600 5698864 1629664 5698592 -1629664 5698592 1629592 5698584 1629600 5698864 1629760 5698616 -1628128 5701160 1629600 5698864 1629520 5698608 1626344 5698984 -1628128 5701160 1629600 5698864 1626344 5698984 1627968 5701176 -1628128 5701160 1628288 5701200 1629600 5698864 1626344 5698984 -1629600 5698864 1629592 5698584 1629520 5698608 1626344 5698984 -1629520 5698608 1628424 5697544 1626344 5698984 1629600 5698864 -1629680 5698904 1629600 5698864 1628288 5701200 1628632 5701384 -1629520 5698608 1629568 5698848 1629600 5698864 1629592 5698584 -1629600 5698864 1629664 5698592 1629592 5698584 1629568 5698848 -1629568 5698848 1626344 5698984 1629600 5698864 1629664 5698592 -1629592 5698584 1629520 5698608 1629568 5698848 1629664 5698592 -1629520 5698608 1626344 5698984 1629568 5698848 1629592 5698584 -1629600 5698864 1629760 5698616 1629664 5698592 1629568 5698848 -1626344 5698984 1629568 5698848 1629520 5698608 1628424 5697544 -1626344 5698984 1629600 5698864 1629568 5698848 1628424 5697544 -1629568 5698848 1629592 5698584 1629520 5698608 1628424 5697544 -1629520 5698608 1628456 5697544 1628424 5697544 1629568 5698848 -1629600 5698864 1629568 5698848 1626344 5698984 1628128 5701160 -1626344 5698984 1627968 5701176 1628128 5701160 1629568 5698848 -1629600 5698864 1629568 5698848 1628128 5701160 1628288 5701200 -1629600 5698864 1629568 5698848 1628288 5701200 1629680 5698904 -1629600 5698864 1629664 5698592 1629568 5698848 1628288 5701200 -1629568 5698848 1628424 5697544 1626344 5698984 1628128 5701160 -1629568 5698848 1626344 5698984 1628128 5701160 1628288 5701200 -1626344 5698984 1629568 5698848 1628424 5697544 1628376 5697520 -1629520 5698608 1629544 5698768 1629568 5698848 1629592 5698584 -1629568 5698848 1629664 5698592 1629592 5698584 1629544 5698768 -1629568 5698848 1629600 5698864 1629664 5698592 1629544 5698768 -1629664 5698592 1629592 5698584 1629544 5698768 1629600 5698864 -1629544 5698768 1628424 5697544 1629568 5698848 1629600 5698864 -1629592 5698584 1629520 5698608 1629544 5698768 1629664 5698592 -1629520 5698608 1628424 5697544 1629544 5698768 1629592 5698584 -1629600 5698864 1629760 5698616 1629664 5698592 1629544 5698768 -1629600 5698864 1629680 5698904 1629760 5698616 1629544 5698768 -1629600 5698864 1629760 5698616 1629544 5698768 1629568 5698848 -1629664 5698592 1629592 5698584 1629544 5698768 1629760 5698616 -1629568 5698848 1629544 5698768 1628424 5697544 1626344 5698984 -1629568 5698848 1629544 5698768 1626344 5698984 1628128 5701160 -1629568 5698848 1629600 5698864 1629544 5698768 1626344 5698984 -1629544 5698768 1629520 5698608 1628424 5697544 1626344 5698984 -1628424 5697544 1629544 5698768 1629520 5698608 1628456 5697544 -1628424 5697544 1628376 5697520 1626344 5698984 1629544 5698768 -1629544 5698768 1629512 5698656 1628424 5697544 1626344 5698984 -1629544 5698768 1629520 5698608 1629512 5698656 1626344 5698984 -1629520 5698608 1629512 5698656 1629544 5698768 1629592 5698584 -1629544 5698768 1629664 5698592 1629592 5698584 1629512 5698656 -1629512 5698656 1626344 5698984 1629544 5698768 1629592 5698584 -1629512 5698656 1629520 5698608 1628424 5697544 1626344 5698984 -1629520 5698608 1628424 5697544 1629512 5698656 1629592 5698584 -1629544 5698768 1629512 5698656 1626344 5698984 1629568 5698848 -1628424 5697544 1629512 5698656 1629520 5698608 1628456 5697544 -1628424 5697544 1626344 5698984 1629512 5698656 1628456 5697544 -1629512 5698656 1629592 5698584 1629520 5698608 1628456 5697544 -1629520 5698608 1628488 5697528 1628456 5697544 1629512 5698656 -1628424 5697544 1628376 5697520 1626344 5698984 1629512 5698656 -1743800 5687320 1630392 5699112 1631912 5713400 1743888 5687504 -1631912 5713400 1630392 5699112 1630136 5698968 1631888 5713320 -1631912 5713400 1743800 5687320 1630392 5699112 1631888 5713320 -1630392 5699112 1743800 5687320 1630136 5698968 1631888 5713320 -1630136 5698968 1630392 5699112 1743800 5687320 1630136 5698912 -1630392 5699112 1631912 5713400 1743800 5687320 1630136 5698912 -1630136 5698968 1631888 5713320 1630392 5699112 1630136 5698912 -1743800 5687320 1663944 5646256 1630136 5698912 1630392 5699112 -1743800 5687320 1664040 5646192 1663944 5646256 1630392 5699112 -1743800 5687320 1663944 5646256 1630392 5699112 1631912 5713400 -1663944 5646256 1630104 5698856 1630136 5698912 1630392 5699112 -1663944 5646256 1663880 5646248 1630104 5698856 1630392 5699112 -1663880 5646248 1630064 5698800 1630104 5698856 1630392 5699112 -1663880 5646248 1630016 5698752 1630064 5698800 1630392 5699112 -1630064 5698800 1630104 5698856 1630392 5699112 1630016 5698752 -1663880 5646248 1629976 5698712 1630016 5698752 1630392 5699112 -1630016 5698752 1630064 5698800 1630392 5699112 1629976 5698712 -1663880 5646248 1628120 5696720 1629976 5698712 1630392 5699112 -1663880 5646248 1663776 5646144 1628120 5696720 1630392 5699112 -1629976 5698712 1630016 5698752 1630392 5699112 1628120 5696720 -1628120 5696720 1628152 5696760 1629976 5698712 1630392 5699112 -1663880 5646248 1628120 5696720 1630392 5699112 1663944 5646256 -1630104 5698856 1630136 5698912 1630392 5699112 1630064 5698800 -1663944 5646256 1663880 5646248 1630392 5699112 1743800 5687320 -1630136 5698912 1630136 5698968 1630392 5699112 1630104 5698856 -1630136 5698968 1630136 5704624 1631888 5713320 1630392 5699112 -1630136 5704624 1630152 5704824 1631888 5713320 1630392 5699112 -1630136 5698968 1630136 5704624 1630392 5699112 1630136 5698912 -1630152 5704824 1630096 5705696 1631888 5713320 1630392 5699112 -1630136 5704624 1630128 5704656 1630152 5704824 1630392 5699112 -1631888 5713320 1631912 5713400 1630392 5699112 1630152 5704824 -1630136 5704624 1630152 5704824 1630392 5699112 1630136 5698968 -1630136 5698968 1630064 5704496 1630136 5704624 1630392 5699112 -1630136 5698968 1630064 5704496 1630392 5699112 1630136 5698912 -1630064 5704496 1630112 5704600 1630136 5704624 1630392 5699112 -1630136 5698968 1629944 5704312 1630064 5704496 1630392 5699112 -1630136 5698968 1629944 5704312 1630392 5699112 1630136 5698912 -1630136 5698968 1629752 5704128 1629944 5704312 1630392 5699112 -1630136 5698968 1629752 5704128 1630392 5699112 1630136 5698912 -1630136 5698968 1628712 5701600 1629752 5704128 1630392 5699112 -1630136 5698968 1628712 5701600 1630392 5699112 1630136 5698912 -1628712 5701600 1629472 5703936 1629752 5704128 1630392 5699112 -1630136 5698968 1628712 5701448 1628712 5701600 1630392 5699112 -1630136 5698968 1628712 5701448 1630392 5699112 1630136 5698912 -1628712 5701600 1629752 5704128 1630392 5699112 1628712 5701448 -1629752 5704128 1629944 5704312 1630392 5699112 1628712 5701600 -1630136 5698968 1630080 5698992 1628712 5701448 1630392 5699112 -1630080 5698992 1630032 5698984 1628712 5701448 1630392 5699112 -1630136 5698968 1630080 5698992 1630392 5699112 1630136 5698912 -1630032 5698984 1629856 5698944 1628712 5701448 1630392 5699112 -1628712 5701448 1628712 5701600 1630392 5699112 1630032 5698984 -1630080 5698992 1630032 5698984 1630392 5699112 1630136 5698968 -1629944 5704312 1630064 5704496 1630392 5699112 1629752 5704128 -1630136 5704624 1630152 5704824 1630392 5699112 1630064 5704496 -1630064 5704496 1630136 5704624 1630392 5699112 1629944 5704312 -1743800 5687320 1630432 5699112 1631912 5713400 1743888 5687504 -1630392 5699112 1630432 5699112 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630432 5699112 -1631912 5713400 1630432 5699112 1630392 5699112 1631888 5713320 -1630392 5699112 1631888 5713320 1630432 5699112 1663944 5646256 -1630432 5699112 1631912 5713400 1743800 5687320 1663944 5646256 -1631912 5713400 1743800 5687320 1630432 5699112 1631888 5713320 -1630392 5699112 1630152 5704824 1631888 5713320 1630432 5699112 -1630392 5699112 1630136 5704624 1630152 5704824 1630432 5699112 -1631888 5713320 1631912 5713400 1630432 5699112 1630152 5704824 -1630392 5699112 1630136 5704624 1630432 5699112 1663944 5646256 -1630152 5704824 1630096 5705696 1631888 5713320 1630432 5699112 -1630136 5704624 1630128 5704656 1630152 5704824 1630432 5699112 -1630152 5704824 1631888 5713320 1630432 5699112 1630136 5704624 -1630392 5699112 1630432 5699112 1663944 5646256 1663880 5646248 -1630432 5699112 1743800 5687320 1663944 5646256 1663880 5646248 -1630392 5699112 1630136 5704624 1630432 5699112 1663880 5646248 -1630392 5699112 1630432 5699112 1663880 5646248 1628120 5696720 -1630392 5699112 1630136 5704624 1630432 5699112 1628120 5696720 -1663880 5646248 1663776 5646144 1628120 5696720 1630432 5699112 -1630392 5699112 1630432 5699112 1628120 5696720 1629976 5698712 -1630392 5699112 1630136 5704624 1630432 5699112 1629976 5698712 -1630392 5699112 1630432 5699112 1629976 5698712 1630016 5698752 -1630392 5699112 1630136 5704624 1630432 5699112 1630016 5698752 -1630392 5699112 1630432 5699112 1630016 5698752 1630064 5698800 -1630392 5699112 1630432 5699112 1630064 5698800 1630104 5698856 -1630392 5699112 1630136 5704624 1630432 5699112 1630104 5698856 -1630432 5699112 1629976 5698712 1630016 5698752 1630064 5698800 -1630432 5699112 1630016 5698752 1630064 5698800 1630104 5698856 -1628120 5696720 1628152 5696760 1629976 5698712 1630432 5699112 -1628152 5696760 1629928 5698672 1629976 5698712 1630432 5699112 -1630432 5699112 1628152 5696760 1629976 5698712 1630016 5698752 -1630432 5699112 1663880 5646248 1628120 5696720 1628152 5696760 -1630392 5699112 1630432 5699112 1630104 5698856 1630136 5698912 -1630432 5699112 1630064 5698800 1630104 5698856 1630136 5698912 -1630392 5699112 1630136 5704624 1630432 5699112 1630136 5698912 -1630432 5699112 1663944 5646256 1663880 5646248 1628120 5696720 -1630392 5699112 1630432 5699112 1630136 5698912 1630136 5698968 -1630392 5699112 1630064 5704496 1630136 5704624 1630432 5699112 -1630136 5704624 1630152 5704824 1630432 5699112 1630064 5704496 -1630392 5699112 1630064 5704496 1630432 5699112 1630136 5698912 -1630064 5704496 1630112 5704600 1630136 5704624 1630432 5699112 -1630392 5699112 1629944 5704312 1630064 5704496 1630432 5699112 -1630392 5699112 1629944 5704312 1630432 5699112 1630136 5698912 -1630392 5699112 1629752 5704128 1629944 5704312 1630432 5699112 -1630392 5699112 1629752 5704128 1630432 5699112 1630136 5698912 -1630392 5699112 1628712 5701600 1629752 5704128 1630432 5699112 -1630392 5699112 1628712 5701600 1630432 5699112 1630136 5698912 -1628712 5701600 1629472 5703936 1629752 5704128 1630432 5699112 -1630392 5699112 1628712 5701448 1628712 5701600 1630432 5699112 -1630392 5699112 1628712 5701448 1630432 5699112 1630136 5698912 -1630392 5699112 1630032 5698984 1628712 5701448 1630432 5699112 -1628712 5701600 1629752 5704128 1630432 5699112 1628712 5701448 -1629752 5704128 1629944 5704312 1630432 5699112 1628712 5701600 -1630064 5704496 1630136 5704624 1630432 5699112 1629944 5704312 -1629944 5704312 1630064 5704496 1630432 5699112 1629752 5704128 -1743800 5687320 1630512 5699152 1631912 5713400 1743888 5687504 -1630432 5699112 1630512 5699152 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630512 5699152 -1630432 5699112 1630512 5699152 1663944 5646256 1663880 5646248 -1630512 5699152 1743800 5687320 1663944 5646256 1663880 5646248 -1630432 5699112 1631912 5713400 1630512 5699152 1663880 5646248 -1631912 5713400 1630512 5699152 1630432 5699112 1631888 5713320 -1630432 5699112 1630152 5704824 1631888 5713320 1630512 5699152 -1630512 5699152 1663880 5646248 1630432 5699112 1630152 5704824 -1631888 5713320 1631912 5713400 1630512 5699152 1630152 5704824 -1630512 5699152 1631912 5713400 1743800 5687320 1663944 5646256 -1631912 5713400 1743800 5687320 1630512 5699152 1631888 5713320 -1630152 5704824 1630096 5705696 1631888 5713320 1630512 5699152 -1630432 5699112 1630136 5704624 1630152 5704824 1630512 5699152 -1630432 5699112 1630064 5704496 1630136 5704624 1630512 5699152 -1630152 5704824 1631888 5713320 1630512 5699152 1630136 5704624 -1630432 5699112 1630064 5704496 1630512 5699152 1663880 5646248 -1630136 5704624 1630128 5704656 1630152 5704824 1630512 5699152 -1630064 5704496 1630112 5704600 1630136 5704624 1630512 5699152 -1630136 5704624 1630152 5704824 1630512 5699152 1630064 5704496 -1630432 5699112 1630512 5699152 1663880 5646248 1628120 5696720 -1630512 5699152 1663944 5646256 1663880 5646248 1628120 5696720 -1630432 5699112 1630064 5704496 1630512 5699152 1628120 5696720 -1663880 5646248 1663776 5646144 1628120 5696720 1630512 5699152 -1630432 5699112 1630512 5699152 1628120 5696720 1628152 5696760 -1630432 5699112 1630064 5704496 1630512 5699152 1628152 5696760 -1630432 5699112 1630512 5699152 1628152 5696760 1629976 5698712 -1630432 5699112 1630064 5704496 1630512 5699152 1629976 5698712 -1628152 5696760 1629928 5698672 1629976 5698712 1630512 5699152 -1630432 5699112 1630512 5699152 1629976 5698712 1630016 5698752 -1630432 5699112 1630064 5704496 1630512 5699152 1630016 5698752 -1630432 5699112 1630512 5699152 1630016 5698752 1630064 5698800 -1630432 5699112 1630064 5704496 1630512 5699152 1630064 5698800 -1630432 5699112 1630512 5699152 1630064 5698800 1630104 5698856 -1630512 5699152 1628152 5696760 1629976 5698712 1630016 5698752 -1630512 5699152 1629976 5698712 1630016 5698752 1630064 5698800 -1630512 5699152 1628120 5696720 1628152 5696760 1629976 5698712 -1630512 5699152 1663880 5646248 1628120 5696720 1628152 5696760 -1630432 5699112 1629944 5704312 1630064 5704496 1630512 5699152 -1630064 5704496 1630136 5704624 1630512 5699152 1629944 5704312 -1630432 5699112 1629944 5704312 1630512 5699152 1630064 5698800 -1630432 5699112 1629752 5704128 1629944 5704312 1630512 5699152 -1630432 5699112 1629752 5704128 1630512 5699152 1630064 5698800 -1630432 5699112 1628712 5701600 1629752 5704128 1630512 5699152 -1630432 5699112 1628712 5701600 1630512 5699152 1630064 5698800 -1628712 5701600 1629472 5703936 1629752 5704128 1630512 5699152 -1630432 5699112 1628712 5701448 1628712 5701600 1630512 5699152 -1630432 5699112 1628712 5701448 1630512 5699152 1630064 5698800 -1630432 5699112 1630392 5699112 1628712 5701448 1630512 5699152 -1630432 5699112 1630392 5699112 1630512 5699152 1630064 5698800 -1630392 5699112 1630032 5698984 1628712 5701448 1630512 5699152 -1628712 5701448 1628712 5701600 1630512 5699152 1630392 5699112 -1628712 5701600 1629752 5704128 1630512 5699152 1628712 5701448 -1629944 5704312 1630064 5704496 1630512 5699152 1629752 5704128 -1629752 5704128 1629944 5704312 1630512 5699152 1628712 5701600 -1743800 5687320 1630528 5699184 1631912 5713400 1743888 5687504 -1630512 5699152 1630528 5699184 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630528 5699184 -1630512 5699152 1630528 5699184 1663944 5646256 1663880 5646248 -1630512 5699152 1631912 5713400 1630528 5699184 1663944 5646256 -1631912 5713400 1630528 5699184 1630512 5699152 1631888 5713320 -1630512 5699152 1630152 5704824 1631888 5713320 1630528 5699184 -1630512 5699152 1630136 5704624 1630152 5704824 1630528 5699184 -1630152 5704824 1631888 5713320 1630528 5699184 1630136 5704624 -1630528 5699184 1663944 5646256 1630512 5699152 1630136 5704624 -1631888 5713320 1631912 5713400 1630528 5699184 1630152 5704824 -1630528 5699184 1631912 5713400 1743800 5687320 1663944 5646256 -1631912 5713400 1743800 5687320 1630528 5699184 1631888 5713320 -1630152 5704824 1630096 5705696 1631888 5713320 1630528 5699184 -1630136 5704624 1630128 5704656 1630152 5704824 1630528 5699184 -1630512 5699152 1630064 5704496 1630136 5704624 1630528 5699184 -1630512 5699152 1629944 5704312 1630064 5704496 1630528 5699184 -1630136 5704624 1630152 5704824 1630528 5699184 1630064 5704496 -1630512 5699152 1629944 5704312 1630528 5699184 1663944 5646256 -1630064 5704496 1630112 5704600 1630136 5704624 1630528 5699184 -1630064 5704496 1630136 5704624 1630528 5699184 1629944 5704312 -1630512 5699152 1629752 5704128 1629944 5704312 1630528 5699184 -1629944 5704312 1630064 5704496 1630528 5699184 1629752 5704128 -1630512 5699152 1629752 5704128 1630528 5699184 1663944 5646256 -1630512 5699152 1628712 5701600 1629752 5704128 1630528 5699184 -1630512 5699152 1628712 5701600 1630528 5699184 1663944 5646256 -1628712 5701600 1629472 5703936 1629752 5704128 1630528 5699184 -1630512 5699152 1628712 5701448 1628712 5701600 1630528 5699184 -1630512 5699152 1628712 5701448 1630528 5699184 1663944 5646256 -1630512 5699152 1630392 5699112 1628712 5701448 1630528 5699184 -1630512 5699152 1630392 5699112 1630528 5699184 1663944 5646256 -1630392 5699112 1630032 5698984 1628712 5701448 1630528 5699184 -1630512 5699152 1630432 5699112 1630392 5699112 1630528 5699184 -1630512 5699152 1630432 5699112 1630528 5699184 1663944 5646256 -1630392 5699112 1628712 5701448 1630528 5699184 1630432 5699112 -1628712 5701448 1628712 5701600 1630528 5699184 1630392 5699112 -1629752 5704128 1629944 5704312 1630528 5699184 1628712 5701600 -1628712 5701600 1629752 5704128 1630528 5699184 1628712 5701448 -1630152 5704824 1630536 5699272 1630528 5699184 1630136 5704624 -1630528 5699184 1630064 5704496 1630136 5704624 1630536 5699272 -1630136 5704624 1630152 5704824 1630536 5699272 1630064 5704496 -1630528 5699184 1630536 5699272 1631888 5713320 1631912 5713400 -1630536 5699272 1631912 5713400 1630528 5699184 1630064 5704496 -1630528 5699184 1630536 5699272 1631912 5713400 1743800 5687320 -1631912 5713400 1743888 5687504 1743800 5687320 1630536 5699272 -1630536 5699272 1631888 5713320 1631912 5713400 1743800 5687320 -1630528 5699184 1630536 5699272 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630536 5699272 -1630528 5699184 1630536 5699272 1663944 5646256 1630512 5699152 -1630528 5699184 1630064 5704496 1630536 5699272 1663944 5646256 -1630536 5699272 1631912 5713400 1743800 5687320 1663944 5646256 -1630536 5699272 1630152 5704824 1631888 5713320 1631912 5713400 -1630152 5704824 1631888 5713320 1630536 5699272 1630136 5704624 -1631888 5713320 1630536 5699272 1630152 5704824 1630096 5705696 -1630152 5704824 1630536 5699272 1630136 5704624 1630128 5704656 -1630064 5704496 1630112 5704600 1630136 5704624 1630536 5699272 -1630528 5699184 1629944 5704312 1630064 5704496 1630536 5699272 -1630528 5699184 1629752 5704128 1629944 5704312 1630536 5699272 -1630064 5704496 1630136 5704624 1630536 5699272 1629944 5704312 -1630528 5699184 1629752 5704128 1630536 5699272 1663944 5646256 -1629944 5704312 1630064 5704496 1630536 5699272 1629752 5704128 -1630528 5699184 1628712 5701600 1629752 5704128 1630536 5699272 -1629752 5704128 1629944 5704312 1630536 5699272 1628712 5701600 -1630528 5699184 1628712 5701600 1630536 5699272 1663944 5646256 -1628712 5701600 1629472 5703936 1629752 5704128 1630536 5699272 -1630528 5699184 1628712 5701448 1628712 5701600 1630536 5699272 -1630528 5699184 1628712 5701448 1630536 5699272 1663944 5646256 -1630528 5699184 1630392 5699112 1628712 5701448 1630536 5699272 -1630528 5699184 1630392 5699112 1630536 5699272 1663944 5646256 -1630392 5699112 1630032 5698984 1628712 5701448 1630536 5699272 -1630392 5699112 1630080 5698992 1630032 5698984 1630536 5699272 -1630032 5698984 1629856 5698944 1628712 5701448 1630536 5699272 -1630032 5698984 1629856 5698944 1630536 5699272 1630080 5698992 -1630528 5699184 1630432 5699112 1630392 5699112 1630536 5699272 -1630392 5699112 1630136 5698968 1630080 5698992 1630536 5699272 -1630392 5699112 1630080 5698992 1630536 5699272 1630528 5699184 -1628712 5701600 1629752 5704128 1630536 5699272 1628712 5701448 -1628712 5701448 1628712 5701600 1630536 5699272 1629856 5698944 -1630032 5698984 1629944 5698960 1629856 5698944 1630536 5699272 -1629856 5698944 1628632 5701384 1628712 5701448 1630536 5699272 -1630536 5699272 1630520 5699304 1629752 5704128 1629944 5704312 -1630536 5699272 1628712 5701600 1630520 5699304 1629944 5704312 -1630520 5699304 1628712 5701600 1629752 5704128 1629944 5704312 -1629752 5704128 1630520 5699304 1628712 5701600 1629472 5703936 -1630536 5699272 1630520 5699304 1629944 5704312 1630064 5704496 -1630520 5699304 1629752 5704128 1629944 5704312 1630064 5704496 -1630536 5699272 1630520 5699304 1630064 5704496 1630136 5704624 -1630536 5699272 1630520 5699304 1630136 5704624 1630152 5704824 -1630536 5699272 1628712 5701600 1630520 5699304 1630136 5704624 -1630064 5704496 1630112 5704600 1630136 5704624 1630520 5699304 -1630520 5699304 1629944 5704312 1630064 5704496 1630136 5704624 -1628712 5701600 1630520 5699304 1630536 5699272 1628712 5701448 -1630520 5699304 1630136 5704624 1630536 5699272 1628712 5701448 -1628712 5701600 1629752 5704128 1630520 5699304 1628712 5701448 -1630536 5699272 1629856 5698944 1628712 5701448 1630520 5699304 -1630536 5699272 1629856 5698944 1630520 5699304 1630136 5704624 -1630536 5699272 1630032 5698984 1629856 5698944 1630520 5699304 -1630536 5699272 1630032 5698984 1630520 5699304 1630136 5704624 -1630536 5699272 1630080 5698992 1630032 5698984 1630520 5699304 -1630536 5699272 1630392 5699112 1630080 5698992 1630520 5699304 -1630536 5699272 1630392 5699112 1630520 5699304 1630136 5704624 -1630032 5698984 1629856 5698944 1630520 5699304 1630080 5698992 -1630080 5698992 1630032 5698984 1630520 5699304 1630392 5699112 -1630392 5699112 1630136 5698968 1630080 5698992 1630520 5699304 -1630536 5699272 1630528 5699184 1630392 5699112 1630520 5699304 -1630392 5699112 1630080 5698992 1630520 5699304 1630528 5699184 -1630536 5699272 1630528 5699184 1630520 5699304 1630136 5704624 -1630528 5699184 1630432 5699112 1630392 5699112 1630520 5699304 -1630392 5699112 1630080 5698992 1630520 5699304 1630432 5699112 -1630528 5699184 1630512 5699152 1630432 5699112 1630520 5699304 -1630528 5699184 1630432 5699112 1630520 5699304 1630536 5699272 -1628712 5701448 1628712 5701600 1630520 5699304 1629856 5698944 -1629856 5698944 1628712 5701448 1630520 5699304 1630032 5698984 -1630032 5698984 1629944 5698960 1629856 5698944 1630520 5699304 -1629856 5698944 1628632 5701384 1628712 5701448 1630520 5699304 -1629856 5698944 1629776 5698928 1628632 5701384 1630520 5699304 -1628712 5701448 1628712 5701600 1630520 5699304 1628632 5701384 -1629856 5698944 1628632 5701384 1630520 5699304 1630032 5698984 -1630520 5699304 1630472 5699368 1629752 5704128 1629944 5704312 -1630520 5699304 1630472 5699368 1629944 5704312 1630064 5704496 -1630472 5699368 1629752 5704128 1629944 5704312 1630064 5704496 -1630520 5699304 1628712 5701600 1630472 5699368 1630064 5704496 -1628712 5701600 1630472 5699368 1630520 5699304 1628712 5701448 -1630472 5699368 1630064 5704496 1630520 5699304 1628712 5701448 -1630472 5699368 1628712 5701600 1629752 5704128 1629944 5704312 -1628712 5701600 1629752 5704128 1630472 5699368 1628712 5701448 -1629752 5704128 1630472 5699368 1628712 5701600 1629472 5703936 -1630520 5699304 1630472 5699368 1630064 5704496 1630136 5704624 -1630472 5699368 1629944 5704312 1630064 5704496 1630136 5704624 -1630520 5699304 1630472 5699368 1630136 5704624 1630536 5699272 -1630520 5699304 1628712 5701448 1630472 5699368 1630136 5704624 -1630064 5704496 1630112 5704600 1630136 5704624 1630472 5699368 -1630520 5699304 1628632 5701384 1628712 5701448 1630472 5699368 -1630520 5699304 1628632 5701384 1630472 5699368 1630136 5704624 -1628712 5701448 1628712 5701600 1630472 5699368 1628632 5701384 -1630520 5699304 1629856 5698944 1628632 5701384 1630472 5699368 -1629856 5698944 1629776 5698928 1628632 5701384 1630472 5699368 -1629776 5698928 1629680 5698904 1628632 5701384 1630472 5699368 -1630520 5699304 1629856 5698944 1630472 5699368 1630136 5704624 -1628632 5701384 1628712 5701448 1630472 5699368 1629776 5698928 -1630520 5699304 1630032 5698984 1629856 5698944 1630472 5699368 -1630520 5699304 1630032 5698984 1630472 5699368 1630136 5704624 -1630520 5699304 1630080 5698992 1630032 5698984 1630472 5699368 -1630520 5699304 1630080 5698992 1630472 5699368 1630136 5704624 -1630520 5699304 1630392 5699112 1630080 5698992 1630472 5699368 -1630520 5699304 1630432 5699112 1630392 5699112 1630472 5699368 -1630520 5699304 1630392 5699112 1630472 5699368 1630136 5704624 -1630080 5698992 1630032 5698984 1630472 5699368 1630392 5699112 -1630392 5699112 1630136 5698968 1630080 5698992 1630472 5699368 -1630032 5698984 1629856 5698944 1630472 5699368 1630080 5698992 -1630032 5698984 1629944 5698960 1629856 5698944 1630472 5699368 -1630032 5698984 1629944 5698960 1630472 5699368 1630080 5698992 -1629856 5698944 1629776 5698928 1630472 5699368 1629944 5698960 -1629776 5698928 1630440 5699400 1630472 5699368 1629856 5698944 -1628632 5701384 1630440 5699400 1629776 5698928 1629680 5698904 -1628632 5701384 1630440 5699400 1629680 5698904 1628288 5701200 -1630440 5699400 1628632 5701384 1630472 5699368 1629856 5698944 -1628632 5701384 1630472 5699368 1630440 5699400 1629680 5698904 -1629776 5698928 1629680 5698904 1630440 5699400 1629856 5698944 -1630472 5699368 1630440 5699400 1628632 5701384 1628712 5701448 -1630472 5699368 1630440 5699400 1628712 5701448 1628712 5701600 -1630472 5699368 1629856 5698944 1630440 5699400 1628712 5701600 -1630472 5699368 1630440 5699400 1628712 5701600 1629752 5704128 -1630440 5699400 1628712 5701448 1628712 5701600 1629752 5704128 -1630472 5699368 1630440 5699400 1629752 5704128 1629944 5704312 -1630472 5699368 1630440 5699400 1629944 5704312 1630064 5704496 -1630472 5699368 1629856 5698944 1630440 5699400 1629944 5704312 -1630440 5699400 1628712 5701600 1629752 5704128 1629944 5704312 -1630440 5699400 1629680 5698904 1628632 5701384 1628712 5701448 -1628712 5701600 1629472 5703936 1629752 5704128 1630440 5699400 -1630440 5699400 1628632 5701384 1628712 5701448 1628712 5701600 -1630472 5699368 1629944 5698960 1629856 5698944 1630440 5699400 -1629856 5698944 1629776 5698928 1630440 5699400 1629944 5698960 -1630472 5699368 1629944 5698960 1630440 5699400 1629944 5704312 -1630472 5699368 1630032 5698984 1629944 5698960 1630440 5699400 -1630472 5699368 1630032 5698984 1630440 5699400 1629944 5704312 -1630472 5699368 1630080 5698992 1630032 5698984 1630440 5699400 -1630472 5699368 1630080 5698992 1630440 5699400 1629944 5704312 -1630472 5699368 1630392 5699112 1630080 5698992 1630440 5699400 -1630472 5699368 1630392 5699112 1630440 5699400 1629944 5704312 -1630472 5699368 1630520 5699304 1630392 5699112 1630440 5699400 -1630392 5699112 1630136 5698968 1630080 5698992 1630440 5699400 -1630080 5698992 1630032 5698984 1630440 5699400 1630392 5699112 -1630032 5698984 1629944 5698960 1630440 5699400 1630080 5698992 -1629944 5698960 1629856 5698944 1630440 5699400 1630032 5698984 -1629680 5698904 1630392 5699392 1630440 5699400 1629776 5698928 -1628632 5701384 1630392 5699392 1629680 5698904 1628288 5701200 -1630440 5699400 1630392 5699392 1628632 5701384 1628712 5701448 -1630392 5699392 1628712 5701448 1630440 5699400 1629776 5698928 -1630440 5699400 1629856 5698944 1629776 5698928 1630392 5699392 -1630440 5699400 1629944 5698960 1629856 5698944 1630392 5699392 -1629776 5698928 1629680 5698904 1630392 5699392 1629856 5698944 -1630440 5699400 1629944 5698960 1630392 5699392 1628712 5701448 -1629856 5698944 1629776 5698928 1630392 5699392 1629944 5698960 -1630392 5699392 1629680 5698904 1628632 5701384 1628712 5701448 -1629680 5698904 1628632 5701384 1630392 5699392 1629776 5698928 -1630440 5699400 1630392 5699392 1628712 5701448 1628712 5701600 -1630440 5699400 1630032 5698984 1629944 5698960 1630392 5699392 -1629944 5698960 1629856 5698944 1630392 5699392 1630032 5698984 -1630440 5699400 1630032 5698984 1630392 5699392 1628712 5701448 -1630440 5699400 1630080 5698992 1630032 5698984 1630392 5699392 -1630440 5699400 1630080 5698992 1630392 5699392 1628712 5701448 -1630440 5699400 1630392 5699112 1630080 5698992 1630392 5699392 -1630440 5699400 1630392 5699112 1630392 5699392 1628712 5701448 -1630440 5699400 1630472 5699368 1630392 5699112 1630392 5699392 -1630440 5699400 1630472 5699368 1630392 5699392 1628712 5701448 -1630472 5699368 1630520 5699304 1630392 5699112 1630392 5699392 -1630520 5699304 1630432 5699112 1630392 5699112 1630392 5699392 -1630472 5699368 1630520 5699304 1630392 5699392 1630440 5699400 -1630392 5699112 1630136 5698968 1630080 5698992 1630392 5699392 -1630392 5699112 1630080 5698992 1630392 5699392 1630520 5699304 -1630080 5698992 1630032 5698984 1630392 5699392 1630392 5699112 -1630032 5698984 1629944 5698960 1630392 5699392 1630080 5698992 -1628632 5701384 1630336 5699368 1629680 5698904 1628288 5701200 -1630392 5699392 1630336 5699368 1628632 5701384 1628712 5701448 -1630392 5699392 1630336 5699368 1628712 5701448 1630440 5699400 -1630392 5699392 1629680 5698904 1630336 5699368 1628712 5701448 -1629680 5698904 1630336 5699368 1630392 5699392 1629776 5698928 -1630392 5699392 1629856 5698944 1629776 5698928 1630336 5699368 -1630392 5699392 1629944 5698960 1629856 5698944 1630336 5699368 -1630392 5699392 1630032 5698984 1629944 5698960 1630336 5699368 -1629856 5698944 1629776 5698928 1630336 5699368 1629944 5698960 -1629944 5698960 1629856 5698944 1630336 5699368 1630032 5698984 -1630336 5699368 1628712 5701448 1630392 5699392 1630032 5698984 -1629776 5698928 1629680 5698904 1630336 5699368 1629856 5698944 -1630336 5699368 1629680 5698904 1628632 5701384 1628712 5701448 -1629680 5698904 1628632 5701384 1630336 5699368 1629776 5698928 -1630392 5699392 1630080 5698992 1630032 5698984 1630336 5699368 -1630032 5698984 1629944 5698960 1630336 5699368 1630080 5698992 -1630392 5699392 1630080 5698992 1630336 5699368 1628712 5701448 -1630392 5699392 1630392 5699112 1630080 5698992 1630336 5699368 -1630392 5699392 1630392 5699112 1630336 5699368 1628712 5701448 -1630392 5699112 1630136 5698968 1630080 5698992 1630336 5699368 -1630392 5699392 1630520 5699304 1630392 5699112 1630336 5699368 -1630520 5699304 1630432 5699112 1630392 5699112 1630336 5699368 -1630392 5699392 1630520 5699304 1630336 5699368 1628712 5701448 -1630392 5699392 1630472 5699368 1630520 5699304 1630336 5699368 -1630392 5699392 1630472 5699368 1630336 5699368 1628712 5701448 -1630392 5699392 1630440 5699400 1630472 5699368 1630336 5699368 -1630520 5699304 1630392 5699112 1630336 5699368 1630472 5699368 -1630392 5699112 1630080 5698992 1630336 5699368 1630520 5699304 -1630080 5698992 1630032 5698984 1630336 5699368 1630392 5699112 -1628632 5701384 1630256 5699320 1629680 5698904 1628288 5701200 -1630336 5699368 1630256 5699320 1628632 5701384 1628712 5701448 -1630336 5699368 1630256 5699320 1628712 5701448 1630392 5699392 -1630336 5699368 1629680 5698904 1630256 5699320 1628712 5701448 -1629680 5698904 1630256 5699320 1630336 5699368 1629776 5698928 -1630336 5699368 1629856 5698944 1629776 5698928 1630256 5699320 -1630336 5699368 1629944 5698960 1629856 5698944 1630256 5699320 -1630336 5699368 1630032 5698984 1629944 5698960 1630256 5699320 -1630336 5699368 1630080 5698992 1630032 5698984 1630256 5699320 -1629944 5698960 1629856 5698944 1630256 5699320 1630032 5698984 -1630032 5698984 1629944 5698960 1630256 5699320 1630080 5698992 -1629856 5698944 1629776 5698928 1630256 5699320 1629944 5698960 -1630256 5699320 1628712 5701448 1630336 5699368 1630080 5698992 -1629776 5698928 1629680 5698904 1630256 5699320 1629856 5698944 -1629680 5698904 1628632 5701384 1630256 5699320 1629776 5698928 -1630256 5699320 1629680 5698904 1628632 5701384 1628712 5701448 -1630336 5699368 1630392 5699112 1630080 5698992 1630256 5699320 -1630080 5698992 1630032 5698984 1630256 5699320 1630392 5699112 -1630336 5699368 1630392 5699112 1630256 5699320 1628712 5701448 -1630392 5699112 1630136 5698968 1630080 5698992 1630256 5699320 -1630080 5698992 1630032 5698984 1630256 5699320 1630136 5698968 -1630392 5699112 1630136 5698912 1630136 5698968 1630256 5699320 -1630336 5699368 1630520 5699304 1630392 5699112 1630256 5699320 -1630392 5699112 1630136 5698968 1630256 5699320 1630336 5699368 -1629776 5698928 1630184 5699264 1630256 5699320 1629856 5698944 -1629776 5698928 1629680 5698904 1630184 5699264 1629856 5698944 -1630256 5699320 1629944 5698960 1629856 5698944 1630184 5699264 -1630256 5699320 1630032 5698984 1629944 5698960 1630184 5699264 -1630256 5699320 1630080 5698992 1630032 5698984 1630184 5699264 -1630256 5699320 1630136 5698968 1630080 5698992 1630184 5699264 -1630032 5698984 1629944 5698960 1630184 5699264 1630080 5698992 -1630080 5698992 1630032 5698984 1630184 5699264 1630136 5698968 -1629944 5698960 1629856 5698944 1630184 5699264 1630032 5698984 -1629856 5698944 1629776 5698928 1630184 5699264 1629944 5698960 -1630184 5699264 1629680 5698904 1630256 5699320 1630136 5698968 -1630256 5699320 1630184 5699264 1629680 5698904 1628632 5701384 -1629680 5698904 1628288 5701200 1628632 5701384 1630184 5699264 -1630256 5699320 1630136 5698968 1630184 5699264 1628632 5701384 -1630184 5699264 1629776 5698928 1629680 5698904 1628632 5701384 -1630256 5699320 1630184 5699264 1628632 5701384 1628712 5701448 -1630256 5699320 1630392 5699112 1630136 5698968 1630184 5699264 -1630136 5698968 1630080 5698992 1630184 5699264 1630392 5699112 -1630392 5699112 1630136 5698912 1630136 5698968 1630184 5699264 -1630256 5699320 1630392 5699112 1630184 5699264 1628632 5701384 -1630256 5699320 1630336 5699368 1630392 5699112 1630184 5699264 -1630184 5699264 1630176 5699248 1630032 5698984 1629944 5698960 -1630184 5699264 1630080 5698992 1630176 5699248 1629944 5698960 -1630176 5699248 1630080 5698992 1630032 5698984 1629944 5698960 -1630080 5698992 1630176 5699248 1630184 5699264 1630136 5698968 -1630176 5699248 1629944 5698960 1630184 5699264 1630136 5698968 -1630080 5698992 1630032 5698984 1630176 5699248 1630136 5698968 -1630184 5699264 1630392 5699112 1630136 5698968 1630176 5699248 -1630184 5699264 1630392 5699112 1630176 5699248 1629944 5698960 -1630392 5699112 1630136 5698912 1630136 5698968 1630176 5699248 -1630136 5698968 1630080 5698992 1630176 5699248 1630392 5699112 -1630184 5699264 1630176 5699248 1629944 5698960 1629856 5698944 -1630184 5699264 1630392 5699112 1630176 5699248 1629856 5698944 -1630176 5699248 1630032 5698984 1629944 5698960 1629856 5698944 -1630184 5699264 1630176 5699248 1629856 5698944 1629776 5698928 -1630184 5699264 1630392 5699112 1630176 5699248 1629776 5698928 -1630184 5699264 1630176 5699248 1629776 5698928 1629680 5698904 -1630176 5699248 1629944 5698960 1629856 5698944 1629776 5698928 -1630184 5699264 1630256 5699320 1630392 5699112 1630176 5699248 -1630184 5699264 1630256 5699320 1630176 5699248 1629776 5698928 -1630392 5699112 1630136 5698968 1630176 5699248 1630256 5699320 -1630256 5699320 1630336 5699368 1630392 5699112 1630176 5699248 -1630392 5699112 1630184 5699224 1630176 5699248 1630256 5699320 -1630184 5699224 1630136 5698968 1630176 5699248 1630256 5699320 -1630392 5699112 1630136 5698968 1630184 5699224 1630256 5699320 -1630136 5698968 1630184 5699224 1630392 5699112 1630136 5698912 -1630176 5699248 1630184 5699224 1630136 5698968 1630080 5698992 -1630176 5699248 1630256 5699320 1630184 5699224 1630080 5698992 -1630176 5699248 1630184 5699224 1630080 5698992 1630032 5698984 -1630176 5699248 1630184 5699224 1630032 5698984 1629944 5698960 -1630176 5699248 1630256 5699320 1630184 5699224 1630032 5698984 -1630184 5699224 1630392 5699112 1630136 5698968 1630080 5698992 -1630184 5699224 1630136 5698968 1630080 5698992 1630032 5698984 -1630176 5699248 1630184 5699264 1630256 5699320 1630184 5699224 -1630176 5699248 1630184 5699264 1630184 5699224 1630032 5698984 -1630256 5699320 1630392 5699112 1630184 5699224 1630184 5699264 -1630392 5699112 1630184 5699224 1630256 5699320 1630336 5699368 -1630184 5699224 1630216 5699184 1630136 5698968 1630080 5698992 -1630184 5699224 1630392 5699112 1630216 5699184 1630080 5698992 -1630392 5699112 1630216 5699184 1630184 5699224 1630256 5699320 -1630216 5699184 1630080 5698992 1630184 5699224 1630256 5699320 -1630216 5699184 1630392 5699112 1630136 5698968 1630080 5698992 -1630392 5699112 1630136 5698968 1630216 5699184 1630256 5699320 -1630184 5699224 1630184 5699264 1630256 5699320 1630216 5699184 -1630184 5699224 1630184 5699264 1630216 5699184 1630080 5698992 -1630256 5699320 1630392 5699112 1630216 5699184 1630184 5699264 -1630136 5698968 1630216 5699184 1630392 5699112 1630136 5698912 -1630184 5699224 1630216 5699184 1630080 5698992 1630032 5698984 -1630184 5699224 1630176 5699248 1630184 5699264 1630216 5699184 -1630392 5699112 1630216 5699184 1630256 5699320 1630336 5699368 -1630216 5699184 1630304 5699136 1630136 5698968 1630080 5698992 -1630392 5699112 1630304 5699136 1630216 5699184 1630256 5699320 -1630216 5699184 1630184 5699264 1630256 5699320 1630304 5699136 -1630304 5699136 1630136 5698968 1630216 5699184 1630256 5699320 -1630392 5699112 1630136 5698968 1630304 5699136 1630256 5699320 -1630136 5698968 1630304 5699136 1630392 5699112 1630136 5698912 -1630392 5699112 1630304 5699136 1630256 5699320 1630336 5699368 -1630304 5699136 1630216 5699184 1630256 5699320 1630336 5699368 -1630392 5699112 1630136 5698968 1630304 5699136 1630336 5699368 -1630392 5699112 1630304 5699136 1630336 5699368 1630520 5699304 -1612640 5685184 1623752 5693000 1663776 5646144 1612616 5685152 -1612640 5685184 1626688 5696104 1623752 5693000 1612616 5685152 -1623752 5693000 1626688 5696104 1663776 5646144 1612616 5685152 -1626688 5696104 1623752 5693000 1612640 5685184 1626600 5696072 -1623752 5693000 1612616 5685152 1612640 5685184 1626600 5696072 -1626688 5696104 1663776 5646144 1623752 5693000 1626600 5696072 -1612640 5685184 1626552 5696056 1626600 5696072 1623752 5693000 -1612640 5685184 1626552 5696056 1623752 5693000 1612616 5685152 -1612640 5685184 1615440 5689168 1626552 5696056 1623752 5693000 -1612640 5685184 1615440 5689168 1623752 5693000 1612616 5685152 -1626552 5696056 1626600 5696072 1623752 5693000 1615440 5689168 -1626600 5696072 1626688 5696104 1623752 5693000 1626552 5696056 -1663776 5646144 1623752 5693000 1626688 5696104 1628120 5696720 -1663776 5646144 1612616 5685152 1623752 5693000 1628120 5696720 -1623752 5693000 1626600 5696072 1626688 5696104 1628120 5696720 -1626688 5696104 1626864 5696192 1628120 5696720 1623752 5693000 -1626688 5696104 1626864 5696192 1623752 5693000 1626600 5696072 -1626864 5696192 1628088 5696712 1628120 5696720 1623752 5693000 -1626688 5696104 1626776 5696152 1626864 5696192 1623752 5693000 -1628120 5696720 1663776 5646144 1623752 5693000 1626864 5696192 -1612640 5685184 1615392 5689120 1615440 5689168 1623752 5693000 -1612640 5685184 1615392 5689120 1623752 5693000 1612616 5685152 -1612640 5685184 1613632 5687000 1615392 5689120 1623752 5693000 -1615440 5689168 1626552 5696056 1623752 5693000 1615392 5689120 -1663776 5646144 1657088 5639464 1612616 5685152 1623752 5693000 -1663776 5646144 1657088 5639464 1623752 5693000 1628120 5696720 -1612616 5685152 1612640 5685184 1623752 5693000 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1623752 5693000 -1657088 5639464 1610992 5683744 1612616 5685152 1623752 5693000 -1663776 5646144 1623752 5693000 1628120 5696720 1663880 5646248 -1663776 5646144 1657088 5639464 1623752 5693000 1663880 5646248 -1623752 5693000 1626864 5696192 1628120 5696720 1663880 5646248 -1628120 5696720 1630512 5699152 1663880 5646248 1623752 5693000 -1615440 5689168 1626520 5696056 1626552 5696056 1623752 5693000 -1615440 5689168 1626520 5696056 1623752 5693000 1615392 5689120 -1626552 5696056 1626600 5696072 1623752 5693000 1626520 5696056 -1615440 5689168 1615488 5689272 1626520 5696056 1623752 5693000 -1615440 5689168 1615488 5689272 1623752 5693000 1615392 5689120 -1615488 5689272 1618392 5694976 1626520 5696056 1623752 5693000 -1618392 5694976 1626488 5696072 1626520 5696056 1623752 5693000 -1618392 5694976 1618456 5695040 1626488 5696072 1623752 5693000 -1626488 5696072 1626520 5696056 1623752 5693000 1618456 5695040 -1618392 5694976 1618456 5695040 1623752 5693000 1615488 5689272 -1615488 5689272 1618392 5694976 1623752 5693000 1615440 5689168 -1626520 5696056 1626552 5696056 1623752 5693000 1626488 5696072 -1618456 5695040 1623376 5696968 1626488 5696072 1623752 5693000 -1618456 5695040 1623376 5696968 1623752 5693000 1618392 5694976 -1623376 5696968 1623464 5696976 1626488 5696072 1623752 5693000 -1623464 5696976 1623632 5697024 1626488 5696072 1623752 5693000 -1623464 5696976 1623632 5697024 1623752 5693000 1623376 5696968 -1626488 5696072 1626520 5696056 1623752 5693000 1623632 5697024 -1623464 5696976 1623496 5696992 1623632 5697024 1623752 5693000 -1623632 5697024 1623704 5697048 1626488 5696072 1623752 5693000 -1623704 5697048 1626480 5696112 1626488 5696072 1623752 5693000 -1623632 5697024 1623704 5697048 1623752 5693000 1623464 5696976 -1626488 5696072 1626520 5696056 1623752 5693000 1623704 5697048 -1618456 5695040 1623304 5696976 1623376 5696968 1623752 5693000 -1618456 5695040 1623304 5696976 1623752 5693000 1618392 5694976 -1623376 5696968 1623464 5696976 1623752 5693000 1623304 5696976 -1615488 5689272 1615488 5689328 1618392 5694976 1623752 5693000 -1618392 5694976 1618456 5695040 1623752 5693000 1615488 5689328 -1615488 5689272 1615488 5689328 1623752 5693000 1615440 5689168 -1615488 5689328 1618304 5694912 1618392 5694976 1623752 5693000 -1618392 5694976 1618456 5695040 1623752 5693000 1618304 5694912 -1615488 5689328 1618256 5694904 1618304 5694912 1623752 5693000 -1615488 5689328 1618304 5694912 1623752 5693000 1615488 5689272 -1618456 5695040 1623272 5697000 1623304 5696976 1623752 5693000 -1618456 5695040 1623272 5697000 1623752 5693000 1618392 5694976 -1618456 5695040 1618456 5695136 1623272 5697000 1623752 5693000 -1623304 5696976 1623376 5696968 1623752 5693000 1623272 5697000 -1623752 5693000 1623584 5692848 1612616 5685152 1612640 5685184 -1623752 5693000 1623584 5692848 1612640 5685184 1615392 5689120 -1623752 5693000 1657088 5639464 1623584 5692848 1615392 5689120 -1623584 5692848 1657088 5639464 1612616 5685152 1612640 5685184 -1612640 5685184 1613632 5687000 1615392 5689120 1623584 5692848 -1623584 5692848 1612616 5685152 1612640 5685184 1615392 5689120 -1623752 5693000 1623584 5692848 1615392 5689120 1615440 5689168 -1623584 5692848 1612640 5685184 1615392 5689120 1615440 5689168 -1623752 5693000 1657088 5639464 1623584 5692848 1615440 5689168 -1623752 5693000 1623584 5692848 1615440 5689168 1615488 5689272 -1623752 5693000 1657088 5639464 1623584 5692848 1615488 5689272 -1623584 5692848 1615392 5689120 1615440 5689168 1615488 5689272 -1657088 5639464 1623584 5692848 1623752 5693000 1663776 5646144 -1623752 5693000 1663880 5646248 1663776 5646144 1623584 5692848 -1623584 5692848 1615488 5689272 1623752 5693000 1663880 5646248 -1657088 5639464 1612616 5685152 1623584 5692848 1663776 5646144 -1663776 5646144 1657088 5639464 1623584 5692848 1663880 5646248 -1657088 5639464 1623584 5692848 1663776 5646144 1663688 5645984 -1612616 5685152 1623584 5692848 1657088 5639464 1610992 5683744 -1623752 5693000 1623584 5692848 1615488 5689272 1615488 5689328 -1623752 5693000 1663880 5646248 1623584 5692848 1615488 5689328 -1623584 5692848 1615440 5689168 1615488 5689272 1615488 5689328 -1623752 5693000 1628120 5696720 1663880 5646248 1623584 5692848 -1623752 5693000 1623584 5692848 1615488 5689328 1618304 5694912 -1623752 5693000 1663880 5646248 1623584 5692848 1618304 5694912 -1623584 5692848 1615488 5689272 1615488 5689328 1618304 5694912 -1615488 5689328 1618256 5694904 1618304 5694912 1623584 5692848 -1623752 5693000 1623584 5692848 1618304 5694912 1618392 5694976 -1623752 5693000 1663880 5646248 1623584 5692848 1618392 5694976 -1623752 5693000 1623584 5692848 1618392 5694976 1618456 5695040 -1623752 5693000 1623584 5692848 1618456 5695040 1623272 5697000 -1623752 5693000 1663880 5646248 1623584 5692848 1623272 5697000 -1618456 5695040 1618456 5695136 1623272 5697000 1623584 5692848 -1623584 5692848 1618392 5694976 1618456 5695040 1623272 5697000 -1623584 5692848 1618304 5694912 1618392 5694976 1618456 5695040 -1623584 5692848 1615488 5689328 1618304 5694912 1618392 5694976 -1623752 5693000 1623584 5692848 1623272 5697000 1623304 5696976 -1623584 5692848 1618456 5695040 1623272 5697000 1623304 5696976 -1623752 5693000 1663880 5646248 1623584 5692848 1623304 5696976 -1623752 5693000 1623584 5692848 1623304 5696976 1623376 5696968 -1623584 5692848 1623464 5692768 1615392 5689120 1615440 5689168 -1623584 5692848 1612640 5685184 1623464 5692768 1615440 5689168 -1623464 5692768 1612640 5685184 1615392 5689120 1615440 5689168 -1615392 5689120 1623464 5692768 1612640 5685184 1613632 5687000 -1612640 5685184 1623464 5692768 1623584 5692848 1612616 5685152 -1623584 5692848 1657088 5639464 1612616 5685152 1623464 5692768 -1623464 5692768 1615440 5689168 1623584 5692848 1657088 5639464 -1623584 5692848 1663776 5646144 1657088 5639464 1623464 5692768 -1657088 5639464 1612616 5685152 1623464 5692768 1663776 5646144 -1623584 5692848 1663776 5646144 1623464 5692768 1615440 5689168 -1612640 5685184 1615392 5689120 1623464 5692768 1612616 5685152 -1612616 5685152 1612640 5685184 1623464 5692768 1657088 5639464 -1623584 5692848 1623464 5692768 1615440 5689168 1615488 5689272 -1623464 5692768 1615392 5689120 1615440 5689168 1615488 5689272 -1623584 5692848 1663776 5646144 1623464 5692768 1615488 5689272 -1623584 5692848 1623464 5692768 1615488 5689272 1615488 5689328 -1623584 5692848 1663776 5646144 1623464 5692768 1615488 5689328 -1623464 5692768 1615440 5689168 1615488 5689272 1615488 5689328 -1623584 5692848 1663880 5646248 1663776 5646144 1623464 5692768 -1663776 5646144 1663688 5645984 1657088 5639464 1623464 5692768 -1657088 5639464 1610992 5683744 1612616 5685152 1623464 5692768 -1623584 5692848 1623464 5692768 1615488 5689328 1618304 5694912 -1623584 5692848 1663776 5646144 1623464 5692768 1618304 5694912 -1623464 5692768 1615488 5689272 1615488 5689328 1618304 5694912 -1615488 5689328 1618256 5694904 1618304 5694912 1623464 5692768 -1623584 5692848 1623464 5692768 1618304 5694912 1618392 5694976 -1623584 5692848 1663776 5646144 1623464 5692768 1618392 5694976 -1623464 5692768 1615488 5689328 1618304 5694912 1618392 5694976 -1623584 5692848 1623464 5692768 1618392 5694976 1618456 5695040 -1623584 5692848 1663776 5646144 1623464 5692768 1618456 5695040 -1623584 5692848 1623464 5692768 1618456 5695040 1623272 5697000 -1623584 5692848 1623464 5692768 1623272 5697000 1623304 5696976 -1623584 5692848 1663776 5646144 1623464 5692768 1623304 5696976 -1618456 5695040 1618456 5695136 1623272 5697000 1623464 5692768 -1623464 5692768 1618456 5695040 1623272 5697000 1623304 5696976 -1623464 5692768 1618392 5694976 1618456 5695040 1623272 5697000 -1623464 5692768 1618304 5694912 1618392 5694976 1618456 5695040 -1623584 5692848 1623464 5692768 1623304 5696976 1623752 5693000 -1623464 5692768 1623272 5697000 1623304 5696976 1623752 5693000 -1623584 5692848 1663776 5646144 1623464 5692768 1623752 5693000 -1623304 5696976 1623376 5696968 1623752 5693000 1623464 5692768 -1615440 5689168 1623088 5692600 1623464 5692768 1615392 5689120 -1623464 5692768 1612640 5685184 1615392 5689120 1623088 5692600 -1615392 5689120 1615440 5689168 1623088 5692600 1612640 5685184 -1623088 5692600 1615488 5689272 1623464 5692768 1612640 5685184 -1623464 5692768 1612616 5685152 1612640 5685184 1623088 5692600 -1612640 5685184 1615392 5689120 1623088 5692600 1612616 5685152 -1623464 5692768 1612616 5685152 1623088 5692600 1615488 5689272 -1615440 5689168 1615488 5689272 1623088 5692600 1615392 5689120 -1612640 5685184 1613632 5687000 1615392 5689120 1623088 5692600 -1623464 5692768 1657088 5639464 1612616 5685152 1623088 5692600 -1623464 5692768 1663776 5646144 1657088 5639464 1623088 5692600 -1623464 5692768 1657088 5639464 1623088 5692600 1615488 5689272 -1612616 5685152 1612640 5685184 1623088 5692600 1657088 5639464 -1623464 5692768 1623088 5692600 1615488 5689272 1615488 5689328 -1623464 5692768 1657088 5639464 1623088 5692600 1615488 5689328 -1623088 5692600 1615440 5689168 1615488 5689272 1615488 5689328 -1623464 5692768 1623088 5692600 1615488 5689328 1618304 5694912 -1623464 5692768 1657088 5639464 1623088 5692600 1618304 5694912 -1623088 5692600 1615488 5689272 1615488 5689328 1618304 5694912 -1657088 5639464 1610992 5683744 1612616 5685152 1623088 5692600 -1623464 5692768 1623088 5692600 1618304 5694912 1618392 5694976 -1623464 5692768 1657088 5639464 1623088 5692600 1618392 5694976 -1623088 5692600 1615488 5689328 1618304 5694912 1618392 5694976 -1615488 5689328 1618256 5694904 1618304 5694912 1623088 5692600 -1623464 5692768 1623088 5692600 1618392 5694976 1618456 5695040 -1623464 5692768 1657088 5639464 1623088 5692600 1618456 5695040 -1623088 5692600 1618304 5694912 1618392 5694976 1618456 5695040 -1623464 5692768 1623088 5692600 1618456 5695040 1623272 5697000 -1623464 5692768 1657088 5639464 1623088 5692600 1623272 5697000 -1618456 5695040 1618456 5695136 1623272 5697000 1623088 5692600 -1623464 5692768 1623088 5692600 1623272 5697000 1623304 5696976 -1623464 5692768 1623088 5692600 1623304 5696976 1623752 5693000 -1623464 5692768 1657088 5639464 1623088 5692600 1623752 5693000 -1623088 5692600 1623272 5697000 1623304 5696976 1623752 5693000 -1623304 5696976 1623376 5696968 1623752 5693000 1623088 5692600 -1623088 5692600 1618456 5695040 1623272 5697000 1623304 5696976 -1623088 5692600 1618392 5694976 1618456 5695040 1623272 5697000 -1623464 5692768 1623088 5692600 1623752 5693000 1623584 5692848 -1623088 5692600 1622936 5692496 1615392 5689120 1615440 5689168 -1612640 5685184 1622936 5692496 1623088 5692600 1612616 5685152 -1623088 5692600 1657088 5639464 1612616 5685152 1622936 5692496 -1612616 5685152 1612640 5685184 1622936 5692496 1657088 5639464 -1623088 5692600 1657088 5639464 1622936 5692496 1615440 5689168 -1623088 5692600 1622936 5692496 1615440 5689168 1615488 5689272 -1622936 5692496 1615392 5689120 1615440 5689168 1615488 5689272 -1623088 5692600 1622936 5692496 1615488 5689272 1615488 5689328 -1623088 5692600 1657088 5639464 1622936 5692496 1615488 5689328 -1622936 5692496 1615440 5689168 1615488 5689272 1615488 5689328 -1622936 5692496 1612640 5685184 1615392 5689120 1615440 5689168 -1612640 5685184 1615392 5689120 1622936 5692496 1612616 5685152 -1615392 5689120 1622936 5692496 1612640 5685184 1613632 5687000 -1615392 5689120 1615440 5689168 1622936 5692496 1613632 5687000 -1622936 5692496 1612616 5685152 1612640 5685184 1613632 5687000 -1623088 5692600 1623464 5692768 1657088 5639464 1622936 5692496 -1623464 5692768 1663776 5646144 1657088 5639464 1622936 5692496 -1657088 5639464 1612616 5685152 1622936 5692496 1623464 5692768 -1623088 5692600 1623464 5692768 1622936 5692496 1615488 5689328 -1615392 5689120 1622936 5692496 1613632 5687000 1615352 5689088 -1623088 5692600 1622936 5692496 1615488 5689328 1618304 5694912 -1622936 5692496 1615488 5689272 1615488 5689328 1618304 5694912 -1623088 5692600 1623464 5692768 1622936 5692496 1618304 5694912 -1623088 5692600 1622936 5692496 1618304 5694912 1618392 5694976 -1623088 5692600 1623464 5692768 1622936 5692496 1618392 5694976 -1622936 5692496 1615488 5689328 1618304 5694912 1618392 5694976 -1612640 5685184 1613592 5686944 1613632 5687000 1622936 5692496 -1657088 5639464 1610992 5683744 1612616 5685152 1622936 5692496 -1623088 5692600 1622936 5692496 1618392 5694976 1618456 5695040 -1623088 5692600 1623464 5692768 1622936 5692496 1618456 5695040 -1622936 5692496 1618304 5694912 1618392 5694976 1618456 5695040 -1615488 5689328 1618256 5694904 1618304 5694912 1622936 5692496 -1623088 5692600 1622936 5692496 1618456 5695040 1623272 5697000 -1623088 5692600 1623464 5692768 1622936 5692496 1623272 5697000 -1618456 5695040 1618456 5695136 1623272 5697000 1622936 5692496 -1622936 5692496 1618392 5694976 1618456 5695040 1623272 5697000 -1623088 5692600 1622936 5692496 1623272 5697000 1623304 5696976 -1622936 5692496 1622928 5692400 1612616 5685152 1612640 5685184 -1657088 5639464 1622928 5692400 1622936 5692496 1623464 5692768 -1657088 5639464 1622928 5692400 1623464 5692768 1663776 5646144 -1623464 5692768 1623584 5692848 1663776 5646144 1622928 5692400 -1663776 5646144 1657088 5639464 1622928 5692400 1623584 5692848 -1622928 5692400 1622936 5692496 1623464 5692768 1623584 5692848 -1622936 5692496 1623464 5692768 1622928 5692400 1612640 5685184 -1622936 5692496 1622928 5692400 1612640 5685184 1613632 5687000 -1622928 5692400 1612616 5685152 1612640 5685184 1613632 5687000 -1622936 5692496 1623464 5692768 1622928 5692400 1613632 5687000 -1622928 5692400 1657088 5639464 1612616 5685152 1612640 5685184 -1657088 5639464 1612616 5685152 1622928 5692400 1663776 5646144 -1622936 5692496 1622928 5692400 1613632 5687000 1615392 5689120 -1622936 5692496 1622928 5692400 1615392 5689120 1615440 5689168 -1622936 5692496 1622928 5692400 1615440 5689168 1615488 5689272 -1622936 5692496 1622928 5692400 1615488 5689272 1615488 5689328 -1622928 5692400 1615440 5689168 1615488 5689272 1615488 5689328 -1622936 5692496 1622928 5692400 1615488 5689328 1618304 5694912 -1622928 5692400 1615488 5689272 1615488 5689328 1618304 5694912 -1622928 5692400 1615392 5689120 1615440 5689168 1615488 5689272 -1622936 5692496 1623464 5692768 1622928 5692400 1618304 5694912 -1622928 5692400 1612640 5685184 1613632 5687000 1615392 5689120 -1622928 5692400 1613632 5687000 1615392 5689120 1615440 5689168 -1622936 5692496 1623088 5692600 1623464 5692768 1622928 5692400 -1623464 5692768 1623584 5692848 1622928 5692400 1623088 5692600 -1622936 5692496 1623088 5692600 1622928 5692400 1618304 5694912 -1613632 5687000 1615352 5689088 1615392 5689120 1622928 5692400 -1622936 5692496 1622928 5692400 1618304 5694912 1618392 5694976 -1622928 5692400 1615488 5689328 1618304 5694912 1618392 5694976 -1622936 5692496 1623088 5692600 1622928 5692400 1618392 5694976 -1622936 5692496 1622928 5692400 1618392 5694976 1618456 5695040 -1612640 5685184 1613592 5686944 1613632 5687000 1622928 5692400 -1623584 5692848 1663880 5646248 1663776 5646144 1622928 5692400 -1657088 5639464 1622928 5692400 1663776 5646144 1663688 5645984 -1612616 5685152 1622928 5692400 1657088 5639464 1610992 5683744 -1615488 5689328 1618256 5694904 1618304 5694912 1622928 5692400 -1622928 5692400 1622936 5692376 1612616 5685152 1612640 5685184 -1622928 5692400 1622936 5692376 1612640 5685184 1613632 5687000 -1622928 5692400 1622936 5692376 1613632 5687000 1615392 5689120 -1622936 5692376 1612640 5685184 1613632 5687000 1615392 5689120 -1622936 5692376 1612616 5685152 1612640 5685184 1613632 5687000 -1622928 5692400 1657088 5639464 1622936 5692376 1615392 5689120 -1657088 5639464 1622936 5692376 1622928 5692400 1663776 5646144 -1622928 5692400 1623584 5692848 1663776 5646144 1622936 5692376 -1622928 5692400 1623464 5692768 1623584 5692848 1622936 5692376 -1623584 5692848 1663776 5646144 1622936 5692376 1623464 5692768 -1622928 5692400 1623088 5692600 1623464 5692768 1622936 5692376 -1623464 5692768 1623584 5692848 1622936 5692376 1623088 5692600 -1622936 5692376 1615392 5689120 1622928 5692400 1623088 5692600 -1663776 5646144 1657088 5639464 1622936 5692376 1623584 5692848 -1622936 5692376 1657088 5639464 1612616 5685152 1612640 5685184 -1657088 5639464 1612616 5685152 1622936 5692376 1663776 5646144 -1622928 5692400 1622936 5692376 1615392 5689120 1615440 5689168 -1622928 5692400 1622936 5692376 1615440 5689168 1615488 5689272 -1622928 5692400 1622936 5692376 1615488 5689272 1615488 5689328 -1622928 5692400 1622936 5692376 1615488 5689328 1618304 5694912 -1622936 5692376 1615488 5689272 1615488 5689328 1618304 5694912 -1622928 5692400 1622936 5692376 1618304 5694912 1618392 5694976 -1622936 5692376 1615440 5689168 1615488 5689272 1615488 5689328 -1622936 5692376 1613632 5687000 1615392 5689120 1615440 5689168 -1622928 5692400 1623088 5692600 1622936 5692376 1618304 5694912 -1622936 5692376 1615392 5689120 1615440 5689168 1615488 5689272 -1622928 5692400 1622936 5692496 1623088 5692600 1622936 5692376 -1623088 5692600 1623464 5692768 1622936 5692376 1622936 5692496 -1622928 5692400 1622936 5692496 1622936 5692376 1618304 5694912 -1613632 5687000 1615352 5689088 1615392 5689120 1622936 5692376 -1612640 5685184 1613592 5686944 1613632 5687000 1622936 5692376 -1623584 5692848 1663880 5646248 1663776 5646144 1622936 5692376 -1657088 5639464 1622936 5692376 1663776 5646144 1663688 5645984 -1612616 5685152 1622936 5692376 1657088 5639464 1610992 5683744 -1615488 5689328 1618256 5694904 1618304 5694912 1622936 5692376 -1623584 5692848 1623000 5692344 1622936 5692376 1623464 5692768 -1622936 5692376 1623088 5692600 1623464 5692768 1623000 5692344 -1623464 5692768 1623584 5692848 1623000 5692344 1623088 5692600 -1622936 5692376 1622936 5692496 1623088 5692600 1623000 5692344 -1623088 5692600 1623464 5692768 1623000 5692344 1622936 5692496 -1622936 5692376 1623000 5692344 1663776 5646144 1657088 5639464 -1623000 5692344 1657088 5639464 1622936 5692376 1622936 5692496 -1622936 5692376 1623000 5692344 1657088 5639464 1612616 5685152 -1623000 5692344 1663776 5646144 1657088 5639464 1612616 5685152 -1622936 5692376 1623000 5692344 1612616 5685152 1612640 5685184 -1622936 5692376 1623000 5692344 1612640 5685184 1613632 5687000 -1622936 5692376 1623000 5692344 1613632 5687000 1615392 5689120 -1622936 5692376 1623000 5692344 1615392 5689120 1615440 5689168 -1623000 5692344 1613632 5687000 1615392 5689120 1615440 5689168 -1623000 5692344 1612640 5685184 1613632 5687000 1615392 5689120 -1623000 5692344 1612616 5685152 1612640 5685184 1613632 5687000 -1622936 5692376 1622936 5692496 1623000 5692344 1615440 5689168 -1623000 5692344 1657088 5639464 1612616 5685152 1612640 5685184 -1623000 5692344 1623584 5692848 1663776 5646144 1657088 5639464 -1623584 5692848 1663776 5646144 1623000 5692344 1623464 5692768 -1622936 5692376 1623000 5692344 1615440 5689168 1615488 5689272 -1622936 5692376 1623000 5692344 1615488 5689272 1615488 5689328 -1623000 5692344 1615392 5689120 1615440 5689168 1615488 5689272 -1622936 5692376 1622936 5692496 1623000 5692344 1615488 5689272 -1622936 5692376 1622928 5692400 1622936 5692496 1623000 5692344 -1622936 5692496 1623088 5692600 1623000 5692344 1622928 5692400 -1622936 5692376 1622928 5692400 1623000 5692344 1615488 5689272 -1613632 5687000 1615352 5689088 1615392 5689120 1623000 5692344 -1612640 5685184 1613592 5686944 1613632 5687000 1623000 5692344 -1663776 5646144 1623000 5692344 1623584 5692848 1663880 5646248 -1623584 5692848 1623752 5693000 1663880 5646248 1623000 5692344 -1663776 5646144 1657088 5639464 1623000 5692344 1663880 5646248 -1623000 5692344 1623464 5692768 1623584 5692848 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1623000 5692344 -1657088 5639464 1610992 5683744 1612616 5685152 1623000 5692344 -1663880 5646248 1623032 5692344 1623584 5692848 1623752 5693000 -1623584 5692848 1623032 5692344 1623000 5692344 1623464 5692768 -1623000 5692344 1623088 5692600 1623464 5692768 1623032 5692344 -1623000 5692344 1622936 5692496 1623088 5692600 1623032 5692344 -1623088 5692600 1623464 5692768 1623032 5692344 1622936 5692496 -1623000 5692344 1622928 5692400 1622936 5692496 1623032 5692344 -1622936 5692496 1623088 5692600 1623032 5692344 1622928 5692400 -1623584 5692848 1663880 5646248 1623032 5692344 1623464 5692768 -1623032 5692344 1663880 5646248 1623000 5692344 1622928 5692400 -1623464 5692768 1623584 5692848 1623032 5692344 1623088 5692600 -1623000 5692344 1622936 5692376 1622928 5692400 1623032 5692344 -1623000 5692344 1623032 5692344 1663880 5646248 1663776 5646144 -1623000 5692344 1623032 5692344 1663776 5646144 1657088 5639464 -1623000 5692344 1623032 5692344 1657088 5639464 1612616 5685152 -1623000 5692344 1623032 5692344 1612616 5685152 1612640 5685184 -1623032 5692344 1657088 5639464 1612616 5685152 1612640 5685184 -1623000 5692344 1623032 5692344 1612640 5685184 1613632 5687000 -1623000 5692344 1623032 5692344 1613632 5687000 1615392 5689120 -1623000 5692344 1623032 5692344 1615392 5689120 1615440 5689168 -1623000 5692344 1623032 5692344 1615440 5689168 1615488 5689272 -1623032 5692344 1613632 5687000 1615392 5689120 1615440 5689168 -1623032 5692344 1612640 5685184 1613632 5687000 1615392 5689120 -1623032 5692344 1612616 5685152 1612640 5685184 1613632 5687000 -1623032 5692344 1663776 5646144 1657088 5639464 1612616 5685152 -1623000 5692344 1622928 5692400 1623032 5692344 1615440 5689168 -1623032 5692344 1623584 5692848 1663880 5646248 1663776 5646144 -1613632 5687000 1615352 5689088 1615392 5689120 1623032 5692344 -1612640 5685184 1613592 5686944 1613632 5687000 1623032 5692344 -1623032 5692344 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1623032 5692344 -1657088 5639464 1610992 5683744 1612616 5685152 1623032 5692344 -1663880 5646248 1623136 5692368 1623584 5692848 1623752 5693000 -1623584 5692848 1623136 5692368 1623032 5692344 1623464 5692768 -1623136 5692368 1663880 5646248 1623032 5692344 1623464 5692768 -1663880 5646248 1623032 5692344 1623136 5692368 1623752 5693000 -1623136 5692368 1623464 5692768 1623584 5692848 1623752 5693000 -1623032 5692344 1623088 5692600 1623464 5692768 1623136 5692368 -1623032 5692344 1622936 5692496 1623088 5692600 1623136 5692368 -1623032 5692344 1622928 5692400 1622936 5692496 1623136 5692368 -1623032 5692344 1622936 5692496 1623136 5692368 1663880 5646248 -1623464 5692768 1623584 5692848 1623136 5692368 1623088 5692600 -1623088 5692600 1623464 5692768 1623136 5692368 1622936 5692496 -1623032 5692344 1623136 5692368 1663880 5646248 1663776 5646144 -1623032 5692344 1622936 5692496 1623136 5692368 1663776 5646144 -1623136 5692368 1623752 5693000 1663880 5646248 1663776 5646144 -1623032 5692344 1623136 5692368 1663776 5646144 1657088 5639464 -1623032 5692344 1622936 5692496 1623136 5692368 1657088 5639464 -1623136 5692368 1663880 5646248 1663776 5646144 1657088 5639464 -1623032 5692344 1623136 5692368 1657088 5639464 1612616 5685152 -1623032 5692344 1623136 5692368 1612616 5685152 1612640 5685184 -1623032 5692344 1622936 5692496 1623136 5692368 1612640 5685184 -1623032 5692344 1623136 5692368 1612640 5685184 1613632 5687000 -1623136 5692368 1657088 5639464 1612616 5685152 1612640 5685184 -1623136 5692368 1663776 5646144 1657088 5639464 1612616 5685152 -1663776 5646144 1663688 5645984 1657088 5639464 1623136 5692368 -1657088 5639464 1610992 5683744 1612616 5685152 1623136 5692368 -1663880 5646248 1623136 5692368 1623752 5693000 1628120 5696720 -1623752 5693000 1623448 5692552 1623136 5692368 1623584 5692848 -1623136 5692368 1623448 5692552 1663880 5646248 1663776 5646144 -1623136 5692368 1623448 5692552 1663776 5646144 1657088 5639464 -1623136 5692368 1623464 5692768 1623584 5692848 1623448 5692552 -1623584 5692848 1623752 5693000 1623448 5692552 1623464 5692768 -1623136 5692368 1623088 5692600 1623464 5692768 1623448 5692552 -1623464 5692768 1623584 5692848 1623448 5692552 1623088 5692600 -1623448 5692552 1663776 5646144 1623136 5692368 1623088 5692600 -1623448 5692552 1623752 5693000 1663880 5646248 1663776 5646144 -1623752 5693000 1663880 5646248 1623448 5692552 1623584 5692848 -1623136 5692368 1622936 5692496 1623088 5692600 1623448 5692552 -1663880 5646248 1623448 5692552 1623752 5693000 1628120 5696720 -1663880 5646248 1663776 5646144 1623448 5692552 1628120 5696720 -1623448 5692552 1623584 5692848 1623752 5693000 1628120 5696720 -1623752 5693000 1626864 5696192 1628120 5696720 1623448 5692552 -1663880 5646248 1623448 5692552 1628120 5696720 1630512 5699152 -1623448 5692552 1623640 5692616 1663880 5646248 1663776 5646144 -1623448 5692552 1623640 5692616 1663776 5646144 1623136 5692368 -1663776 5646144 1657088 5639464 1623136 5692368 1623640 5692616 -1623136 5692368 1623448 5692552 1623640 5692616 1657088 5639464 -1623640 5692616 1663880 5646248 1663776 5646144 1657088 5639464 -1623448 5692552 1628120 5696720 1623640 5692616 1623136 5692368 -1623640 5692616 1628120 5696720 1663880 5646248 1663776 5646144 -1657088 5639464 1612616 5685152 1623136 5692368 1623640 5692616 -1663776 5646144 1663688 5645984 1657088 5639464 1623640 5692616 -1628120 5696720 1623640 5692616 1623448 5692552 1623752 5693000 -1623640 5692616 1623136 5692368 1623448 5692552 1623752 5693000 -1623448 5692552 1623584 5692848 1623752 5693000 1623640 5692616 -1623448 5692552 1623464 5692768 1623584 5692848 1623640 5692616 -1623448 5692552 1623088 5692600 1623464 5692768 1623640 5692616 -1623448 5692552 1623464 5692768 1623640 5692616 1623136 5692368 -1623584 5692848 1623752 5693000 1623640 5692616 1623464 5692768 -1628120 5696720 1663880 5646248 1623640 5692616 1623752 5693000 -1628120 5696720 1623640 5692616 1623752 5693000 1626864 5696192 -1628120 5696720 1663880 5646248 1623640 5692616 1626864 5696192 -1628120 5696720 1623640 5692616 1626864 5696192 1628088 5696712 -1623752 5693000 1626688 5696104 1626864 5696192 1623640 5692616 -1623752 5693000 1626600 5696072 1626688 5696104 1623640 5692616 -1626688 5696104 1626776 5696152 1626864 5696192 1623640 5692616 -1626864 5696192 1628120 5696720 1623640 5692616 1626688 5696104 -1623752 5693000 1626688 5696104 1623640 5692616 1623584 5692848 -1663880 5646248 1623640 5692616 1628120 5696720 1630512 5699152 -1623640 5692616 1623720 5692600 1663880 5646248 1663776 5646144 -1623640 5692616 1623720 5692600 1663776 5646144 1657088 5639464 -1623640 5692616 1623720 5692600 1657088 5639464 1623136 5692368 -1623640 5692616 1623720 5692600 1623136 5692368 1623448 5692552 -1623720 5692600 1657088 5639464 1623136 5692368 1623448 5692552 -1623720 5692600 1663776 5646144 1657088 5639464 1623136 5692368 -1623720 5692600 1663880 5646248 1663776 5646144 1657088 5639464 -1623640 5692616 1628120 5696720 1623720 5692600 1623448 5692552 -1628120 5696720 1623720 5692600 1623640 5692616 1626864 5696192 -1623720 5692600 1623448 5692552 1623640 5692616 1626864 5696192 -1623720 5692600 1628120 5696720 1663880 5646248 1663776 5646144 -1628120 5696720 1663880 5646248 1623720 5692600 1626864 5696192 -1628120 5696720 1623720 5692600 1626864 5696192 1628088 5696712 -1623640 5692616 1626688 5696104 1626864 5696192 1623720 5692600 -1623640 5692616 1626688 5696104 1623720 5692600 1623448 5692552 -1626864 5696192 1628120 5696720 1623720 5692600 1626688 5696104 -1626688 5696104 1626776 5696152 1626864 5696192 1623720 5692600 -1623640 5692616 1623752 5693000 1626688 5696104 1623720 5692600 -1623752 5693000 1626600 5696072 1626688 5696104 1623720 5692600 -1623640 5692616 1623752 5693000 1623720 5692600 1623448 5692552 -1623752 5693000 1626552 5696056 1626600 5696072 1623720 5692600 -1626600 5696072 1626688 5696104 1623720 5692600 1626552 5696056 -1623752 5693000 1626520 5696056 1626552 5696056 1623720 5692600 -1626688 5696104 1626864 5696192 1623720 5692600 1626600 5696072 -1623752 5693000 1626552 5696056 1623720 5692600 1623640 5692616 -1657088 5639464 1612616 5685152 1623136 5692368 1623720 5692600 -1623136 5692368 1623448 5692552 1623720 5692600 1612616 5685152 -1657088 5639464 1612616 5685152 1623720 5692600 1663776 5646144 -1612616 5685152 1612640 5685184 1623136 5692368 1623720 5692600 -1663776 5646144 1663688 5645984 1657088 5639464 1623720 5692600 -1657088 5639464 1610992 5683744 1612616 5685152 1623720 5692600 -1623640 5692616 1623584 5692848 1623752 5693000 1623720 5692600 -1623640 5692616 1623464 5692768 1623584 5692848 1623720 5692600 -1623640 5692616 1623584 5692848 1623720 5692600 1623448 5692552 -1623752 5693000 1626552 5696056 1623720 5692600 1623584 5692848 -1663880 5646248 1623720 5692600 1628120 5696720 1630512 5699152 -1623720 5692600 1623848 5692552 1663880 5646248 1663776 5646144 -1623720 5692600 1623848 5692552 1663776 5646144 1657088 5639464 -1623720 5692600 1623848 5692552 1657088 5639464 1612616 5685152 -1623848 5692552 1663776 5646144 1657088 5639464 1612616 5685152 -1623848 5692552 1663880 5646248 1663776 5646144 1657088 5639464 -1623720 5692600 1628120 5696720 1623848 5692552 1612616 5685152 -1628120 5696720 1623848 5692552 1623720 5692600 1626864 5696192 -1623720 5692600 1626688 5696104 1626864 5696192 1623848 5692552 -1623848 5692552 1612616 5685152 1623720 5692600 1626688 5696104 -1626864 5696192 1628120 5696720 1623848 5692552 1626688 5696104 -1623848 5692552 1628120 5696720 1663880 5646248 1663776 5646144 -1628120 5696720 1663880 5646248 1623848 5692552 1626864 5696192 -1628120 5696720 1623848 5692552 1626864 5696192 1628088 5696712 -1626688 5696104 1626776 5696152 1626864 5696192 1623848 5692552 -1623720 5692600 1626600 5696072 1626688 5696104 1623848 5692552 -1623720 5692600 1626552 5696056 1626600 5696072 1623848 5692552 -1626688 5696104 1626864 5696192 1623848 5692552 1626600 5696072 -1623720 5692600 1626552 5696056 1623848 5692552 1612616 5685152 -1623720 5692600 1623752 5693000 1626552 5696056 1623848 5692552 -1626552 5696056 1626600 5696072 1623848 5692552 1623752 5693000 -1623720 5692600 1623752 5693000 1623848 5692552 1612616 5685152 -1623752 5693000 1626520 5696056 1626552 5696056 1623848 5692552 -1626552 5696056 1626600 5696072 1623848 5692552 1626520 5696056 -1623752 5693000 1626520 5696056 1623848 5692552 1623720 5692600 -1626600 5696072 1626688 5696104 1623848 5692552 1626552 5696056 -1623720 5692600 1623584 5692848 1623752 5693000 1623848 5692552 -1623720 5692600 1623848 5692552 1612616 5685152 1623136 5692368 -1623720 5692600 1623848 5692552 1623136 5692368 1623448 5692552 -1623720 5692600 1623848 5692552 1623448 5692552 1623640 5692616 -1623848 5692552 1657088 5639464 1612616 5685152 1623136 5692368 -1623720 5692600 1623752 5693000 1623848 5692552 1623448 5692552 -1612616 5685152 1612640 5685184 1623136 5692368 1623848 5692552 -1612640 5685184 1623032 5692344 1623136 5692368 1623848 5692552 -1612616 5685152 1612640 5685184 1623848 5692552 1657088 5639464 -1623848 5692552 1612640 5685184 1623136 5692368 1623448 5692552 -1663776 5646144 1663688 5645984 1657088 5639464 1623848 5692552 -1657088 5639464 1610992 5683744 1612616 5685152 1623848 5692552 -1663880 5646248 1623848 5692552 1628120 5696720 1630512 5699152 -1623752 5693000 1626488 5696072 1626520 5696056 1623848 5692552 -1623848 5692552 1624032 5692416 1663880 5646248 1663776 5646144 -1623848 5692552 1624032 5692416 1663776 5646144 1657088 5639464 -1623848 5692552 1624032 5692416 1657088 5639464 1612616 5685152 -1623848 5692552 1624032 5692416 1612616 5685152 1612640 5685184 -1624032 5692416 1657088 5639464 1612616 5685152 1612640 5685184 -1624032 5692416 1663776 5646144 1657088 5639464 1612616 5685152 -1624032 5692416 1663880 5646248 1663776 5646144 1657088 5639464 -1623848 5692552 1628120 5696720 1624032 5692416 1612640 5685184 -1628120 5696720 1624032 5692416 1623848 5692552 1626864 5696192 -1623848 5692552 1626688 5696104 1626864 5696192 1624032 5692416 -1623848 5692552 1626600 5696072 1626688 5696104 1624032 5692416 -1626688 5696104 1626864 5696192 1624032 5692416 1626600 5696072 -1624032 5692416 1612640 5685184 1623848 5692552 1626600 5696072 -1626864 5696192 1628120 5696720 1624032 5692416 1626688 5696104 -1624032 5692416 1628120 5696720 1663880 5646248 1663776 5646144 -1628120 5696720 1663880 5646248 1624032 5692416 1626864 5696192 -1623848 5692552 1624032 5692416 1612640 5685184 1623136 5692368 -1612640 5685184 1623032 5692344 1623136 5692368 1624032 5692416 -1624032 5692416 1612616 5685152 1612640 5685184 1623032 5692344 -1623848 5692552 1626600 5696072 1624032 5692416 1623136 5692368 -1612640 5685184 1613632 5687000 1623032 5692344 1624032 5692416 -1623136 5692368 1623848 5692552 1624032 5692416 1623032 5692344 -1628120 5696720 1624032 5692416 1626864 5696192 1628088 5696712 -1626688 5696104 1626776 5696152 1626864 5696192 1624032 5692416 -1623848 5692552 1626552 5696056 1626600 5696072 1624032 5692416 -1623848 5692552 1626520 5696056 1626552 5696056 1624032 5692416 -1626600 5696072 1626688 5696104 1624032 5692416 1626552 5696056 -1623848 5692552 1626520 5696056 1624032 5692416 1623136 5692368 -1623848 5692552 1623752 5693000 1626520 5696056 1624032 5692416 -1626520 5696056 1626552 5696056 1624032 5692416 1623752 5693000 -1623848 5692552 1623752 5693000 1624032 5692416 1623136 5692368 -1623848 5692552 1623720 5692600 1623752 5693000 1624032 5692416 -1626552 5696056 1626600 5696072 1624032 5692416 1626520 5696056 -1623848 5692552 1624032 5692416 1623136 5692368 1623448 5692552 -1623848 5692552 1624032 5692416 1623448 5692552 1623720 5692600 -1623848 5692552 1623752 5693000 1624032 5692416 1623448 5692552 -1624032 5692416 1623032 5692344 1623136 5692368 1623448 5692552 -1663776 5646144 1663688 5645984 1657088 5639464 1624032 5692416 -1657088 5639464 1610992 5683744 1612616 5685152 1624032 5692416 -1663880 5646248 1624032 5692416 1628120 5696720 1630512 5699152 -1623752 5693000 1626488 5696072 1626520 5696056 1624032 5692416 -1624032 5692416 1624104 5692408 1663880 5646248 1663776 5646144 -1624032 5692416 1624104 5692408 1663776 5646144 1657088 5639464 -1624032 5692416 1624104 5692408 1657088 5639464 1612616 5685152 -1624032 5692416 1624104 5692408 1612616 5685152 1612640 5685184 -1624032 5692416 1624104 5692408 1612640 5685184 1623032 5692344 -1624032 5692416 1624104 5692408 1623032 5692344 1623136 5692368 -1624104 5692408 1612616 5685152 1612640 5685184 1623032 5692344 -1624104 5692408 1657088 5639464 1612616 5685152 1612640 5685184 -1624104 5692408 1663776 5646144 1657088 5639464 1612616 5685152 -1624104 5692408 1663880 5646248 1663776 5646144 1657088 5639464 -1624032 5692416 1628120 5696720 1624104 5692408 1623032 5692344 -1628120 5696720 1624104 5692408 1624032 5692416 1626864 5696192 -1624032 5692416 1626688 5696104 1626864 5696192 1624104 5692408 -1624032 5692416 1626600 5696072 1626688 5696104 1624104 5692408 -1624032 5692416 1626552 5696056 1626600 5696072 1624104 5692408 -1626600 5696072 1626688 5696104 1624104 5692408 1626552 5696056 -1626688 5696104 1626864 5696192 1624104 5692408 1626600 5696072 -1624104 5692408 1623032 5692344 1624032 5692416 1626552 5696056 -1626864 5696192 1628120 5696720 1624104 5692408 1626688 5696104 -1624104 5692408 1628120 5696720 1663880 5646248 1663776 5646144 -1628120 5696720 1663880 5646248 1624104 5692408 1626864 5696192 -1612640 5685184 1613632 5687000 1623032 5692344 1624104 5692408 -1628120 5696720 1624104 5692408 1626864 5696192 1628088 5696712 -1626688 5696104 1626776 5696152 1626864 5696192 1624104 5692408 -1624032 5692416 1626520 5696056 1626552 5696056 1624104 5692408 -1624032 5692416 1623752 5693000 1626520 5696056 1624104 5692408 -1626552 5696056 1626600 5696072 1624104 5692408 1626520 5696056 -1624032 5692416 1623752 5693000 1624104 5692408 1623032 5692344 -1624032 5692416 1623848 5692552 1623752 5693000 1624104 5692408 -1623752 5693000 1626520 5696056 1624104 5692408 1623848 5692552 -1624032 5692416 1623848 5692552 1624104 5692408 1623032 5692344 -1623848 5692552 1623720 5692600 1623752 5693000 1624104 5692408 -1626520 5696056 1626552 5696056 1624104 5692408 1623752 5693000 -1663776 5646144 1663688 5645984 1657088 5639464 1624104 5692408 -1657088 5639464 1610992 5683744 1612616 5685152 1624104 5692408 -1663880 5646248 1624104 5692408 1628120 5696720 1630512 5699152 -1623752 5693000 1626488 5696072 1626520 5696056 1624104 5692408 -1623752 5693000 1624120 5692440 1624104 5692408 1623848 5692552 -1624120 5692440 1626520 5696056 1624104 5692408 1623848 5692552 -1623752 5693000 1626520 5696056 1624120 5692440 1623848 5692552 -1624104 5692408 1624032 5692416 1623848 5692552 1624120 5692440 -1623848 5692552 1623752 5693000 1624120 5692440 1624032 5692416 -1624104 5692408 1624032 5692416 1624120 5692440 1626520 5696056 -1623752 5693000 1624120 5692440 1623848 5692552 1623720 5692600 -1624104 5692408 1624120 5692440 1626520 5696056 1626552 5696056 -1624104 5692408 1624120 5692440 1626552 5696056 1626600 5696072 -1624104 5692408 1624120 5692440 1626600 5696072 1626688 5696104 -1624120 5692440 1626552 5696056 1626600 5696072 1626688 5696104 -1624104 5692408 1624120 5692440 1626688 5696104 1626864 5696192 -1624120 5692440 1626600 5696072 1626688 5696104 1626864 5696192 -1624104 5692408 1624120 5692440 1626864 5696192 1628120 5696720 -1624120 5692440 1626688 5696104 1626864 5696192 1628120 5696720 -1624104 5692408 1624032 5692416 1624120 5692440 1628120 5696720 -1624104 5692408 1624120 5692440 1628120 5696720 1663880 5646248 -1624120 5692440 1623752 5693000 1626520 5696056 1626552 5696056 -1626864 5696192 1628088 5696712 1628120 5696720 1624120 5692440 -1626688 5696104 1626776 5696152 1626864 5696192 1624120 5692440 -1624120 5692440 1626520 5696056 1626552 5696056 1626600 5696072 -1626520 5696056 1624120 5692440 1623752 5693000 1626488 5696072 -1624120 5692440 1624120 5692536 1626520 5696056 1626552 5696056 -1624120 5692440 1623752 5693000 1624120 5692536 1626552 5696056 -1623752 5693000 1624120 5692536 1624120 5692440 1623848 5692552 -1624120 5692440 1624032 5692416 1623848 5692552 1624120 5692536 -1624120 5692536 1626552 5696056 1624120 5692440 1624032 5692416 -1623848 5692552 1623752 5693000 1624120 5692536 1624032 5692416 -1624120 5692536 1623752 5693000 1626520 5696056 1626552 5696056 -1623752 5693000 1626520 5696056 1624120 5692536 1623848 5692552 -1624120 5692440 1624104 5692408 1624032 5692416 1624120 5692536 -1623752 5693000 1624120 5692536 1623848 5692552 1623720 5692600 -1624120 5692440 1624120 5692536 1626552 5696056 1626600 5696072 -1624120 5692440 1624120 5692536 1626600 5696072 1626688 5696104 -1624120 5692536 1626520 5696056 1626552 5696056 1626600 5696072 -1624120 5692440 1624032 5692416 1624120 5692536 1626600 5696072 -1626520 5696056 1624120 5692536 1623752 5693000 1626488 5696072 -1624120 5692536 1624072 5692800 1626520 5696056 1626552 5696056 -1624120 5692536 1624072 5692800 1626552 5696056 1626600 5696072 -1624120 5692536 1623752 5693000 1624072 5692800 1626552 5696056 -1623752 5693000 1624072 5692800 1624120 5692536 1623848 5692552 -1624120 5692536 1624032 5692416 1623848 5692552 1624072 5692800 -1624072 5692800 1626552 5696056 1624120 5692536 1623848 5692552 -1624072 5692800 1623752 5693000 1626520 5696056 1626552 5696056 -1623752 5693000 1626520 5696056 1624072 5692800 1623848 5692552 -1623752 5693000 1624072 5692800 1623848 5692552 1623720 5692600 -1624072 5692800 1624120 5692536 1623848 5692552 1623720 5692600 -1623752 5693000 1626520 5696056 1624072 5692800 1623720 5692600 -1623752 5693000 1624072 5692800 1623720 5692600 1623584 5692848 -1626520 5696056 1624072 5692800 1623752 5693000 1626488 5696072 -1626520 5696056 1626552 5696056 1624072 5692800 1626488 5696072 -1624072 5692800 1623720 5692600 1623752 5693000 1626488 5696072 -1623752 5693000 1623704 5697048 1626488 5696072 1624072 5692800 -1623752 5693000 1624080 5692912 1624072 5692800 1623720 5692600 -1626488 5696072 1624080 5692912 1623752 5693000 1623704 5697048 -1626488 5696072 1624072 5692800 1624080 5692912 1623704 5697048 -1624080 5692912 1624072 5692800 1623752 5693000 1623704 5697048 -1626488 5696072 1624080 5692912 1623704 5697048 1626480 5696112 -1623752 5693000 1623632 5697024 1623704 5697048 1624080 5692912 -1624072 5692800 1624080 5692912 1626488 5696072 1626520 5696056 -1624072 5692800 1624080 5692912 1626520 5696056 1626552 5696056 -1624072 5692800 1624080 5692912 1626552 5696056 1624120 5692536 -1626552 5696056 1626600 5696072 1624120 5692536 1624080 5692912 -1624080 5692912 1626520 5696056 1626552 5696056 1624120 5692536 -1624072 5692800 1623752 5693000 1624080 5692912 1624120 5692536 -1624080 5692912 1623704 5697048 1626488 5696072 1626520 5696056 -1624080 5692912 1626488 5696072 1626520 5696056 1626552 5696056 -1624080 5692912 1624128 5693032 1626488 5696072 1626520 5696056 -1624128 5693032 1623704 5697048 1626488 5696072 1626520 5696056 -1624080 5692912 1623704 5697048 1624128 5693032 1626520 5696056 -1626488 5696072 1624128 5693032 1623704 5697048 1626480 5696112 -1623704 5697048 1624128 5693032 1624080 5692912 1623752 5693000 -1623704 5697048 1626488 5696072 1624128 5693032 1623752 5693000 -1624128 5693032 1626520 5696056 1624080 5692912 1623752 5693000 -1624080 5692912 1624072 5692800 1623752 5693000 1624128 5693032 -1623704 5697048 1624128 5693032 1623752 5693000 1623632 5697024 -1623704 5697048 1626488 5696072 1624128 5693032 1623632 5697024 -1623752 5693000 1623464 5696976 1623632 5697024 1624128 5693032 -1623752 5693000 1623376 5696968 1623464 5696976 1624128 5693032 -1624128 5693032 1624080 5692912 1623752 5693000 1623464 5696976 -1623464 5696976 1623496 5696992 1623632 5697024 1624128 5693032 -1623632 5697024 1623704 5697048 1624128 5693032 1623464 5696976 -1624080 5692912 1624128 5693032 1626520 5696056 1626552 5696056 -1624080 5692912 1624128 5693032 1626552 5696056 1624120 5692536 -1626552 5696056 1626600 5696072 1624120 5692536 1624128 5693032 -1624080 5692912 1624128 5693032 1624120 5692536 1624072 5692800 -1624128 5693032 1626552 5696056 1624120 5692536 1624072 5692800 -1624128 5693032 1626488 5696072 1626520 5696056 1626552 5696056 -1624080 5692912 1623752 5693000 1624128 5693032 1624072 5692800 -1624128 5693032 1626520 5696056 1626552 5696056 1624120 5692536 -1624120 5692536 1624232 5693160 1626552 5696056 1626600 5696072 -1624120 5692536 1624128 5693032 1624232 5693160 1626600 5696072 -1624232 5693160 1624128 5693032 1626552 5696056 1626600 5696072 -1624128 5693032 1624232 5693160 1624120 5692536 1624072 5692800 -1624128 5693032 1626552 5696056 1624232 5693160 1624072 5692800 -1624232 5693160 1626600 5696072 1624120 5692536 1624072 5692800 -1624128 5693032 1624232 5693160 1624072 5692800 1624080 5692912 -1624120 5692536 1624232 5693160 1626600 5696072 1624120 5692440 -1624120 5692536 1624072 5692800 1624232 5693160 1624120 5692440 -1626600 5696072 1626688 5696104 1624120 5692440 1624232 5693160 -1626688 5696104 1626864 5696192 1624120 5692440 1624232 5693160 -1624232 5693160 1626552 5696056 1626600 5696072 1626688 5696104 -1624120 5692440 1624120 5692536 1624232 5693160 1626688 5696104 -1626552 5696056 1624232 5693160 1624128 5693032 1626520 5696056 -1624232 5693160 1624072 5692800 1624128 5693032 1626520 5696056 -1626552 5696056 1626600 5696072 1624232 5693160 1626520 5696056 -1624128 5693032 1626488 5696072 1626520 5696056 1624232 5693160 -1624128 5693032 1623704 5697048 1626488 5696072 1624232 5693160 -1624128 5693032 1623704 5697048 1624232 5693160 1624072 5692800 -1624128 5693032 1623632 5697024 1623704 5697048 1624232 5693160 -1623704 5697048 1626488 5696072 1624232 5693160 1623632 5697024 -1624128 5693032 1623632 5697024 1624232 5693160 1624072 5692800 -1626488 5696072 1626520 5696056 1624232 5693160 1623704 5697048 -1623704 5697048 1626480 5696112 1626488 5696072 1624232 5693160 -1624128 5693032 1623464 5696976 1623632 5697024 1624232 5693160 -1624128 5693032 1623464 5696976 1624232 5693160 1624072 5692800 -1623632 5697024 1623704 5697048 1624232 5693160 1623464 5696976 -1624128 5693032 1623752 5693000 1623464 5696976 1624232 5693160 -1624128 5693032 1623752 5693000 1624232 5693160 1624072 5692800 -1623752 5693000 1623376 5696968 1623464 5696976 1624232 5693160 -1623752 5693000 1623376 5696968 1624232 5693160 1624128 5693032 -1624128 5693032 1624080 5692912 1623752 5693000 1624232 5693160 -1623464 5696976 1623496 5696992 1623632 5697024 1624232 5693160 -1623464 5696976 1623632 5697024 1624232 5693160 1623376 5696968 -1626520 5696056 1626552 5696056 1624232 5693160 1626488 5696072 -1623752 5693000 1623304 5696976 1623376 5696968 1624232 5693160 -1623704 5697048 1624280 5693272 1624232 5693160 1623632 5697024 -1624232 5693160 1623464 5696976 1623632 5697024 1624280 5693272 -1623632 5697024 1623704 5697048 1624280 5693272 1623464 5696976 -1624280 5693272 1626488 5696072 1624232 5693160 1623464 5696976 -1623704 5697048 1626488 5696072 1624280 5693272 1623632 5697024 -1624232 5693160 1624280 5693272 1626488 5696072 1626520 5696056 -1624232 5693160 1623464 5696976 1624280 5693272 1626520 5696056 -1624280 5693272 1623704 5697048 1626488 5696072 1626520 5696056 -1626488 5696072 1624280 5693272 1623704 5697048 1626480 5696112 -1623464 5696976 1623496 5696992 1623632 5697024 1624280 5693272 -1624232 5693160 1623376 5696968 1623464 5696976 1624280 5693272 -1623464 5696976 1623632 5697024 1624280 5693272 1623376 5696968 -1624232 5693160 1623376 5696968 1624280 5693272 1626520 5696056 -1624232 5693160 1623752 5693000 1623376 5696968 1624280 5693272 -1624232 5693160 1623752 5693000 1624280 5693272 1626520 5696056 -1624232 5693160 1624128 5693032 1623752 5693000 1624280 5693272 -1623376 5696968 1623464 5696976 1624280 5693272 1623752 5693000 -1624232 5693160 1624280 5693272 1626520 5696056 1626552 5696056 -1624232 5693160 1623752 5693000 1624280 5693272 1626552 5696056 -1624232 5693160 1624280 5693272 1626552 5696056 1626600 5696072 -1624232 5693160 1623752 5693000 1624280 5693272 1626600 5696072 -1624232 5693160 1624280 5693272 1626600 5696072 1626688 5696104 -1624232 5693160 1623752 5693000 1624280 5693272 1626688 5696104 -1624280 5693272 1626552 5696056 1626600 5696072 1626688 5696104 -1624232 5693160 1624280 5693272 1626688 5696104 1624120 5692440 -1624232 5693160 1623752 5693000 1624280 5693272 1624120 5692440 -1626688 5696104 1626864 5696192 1624120 5692440 1624280 5693272 -1624280 5693272 1626600 5696072 1626688 5696104 1624120 5692440 -1624280 5693272 1626488 5696072 1626520 5696056 1626552 5696056 -1624232 5693160 1624280 5693272 1624120 5692440 1624120 5692536 -1624232 5693160 1624280 5693272 1624120 5692536 1624072 5692800 -1624232 5693160 1623752 5693000 1624280 5693272 1624120 5692536 -1624280 5693272 1626688 5696104 1624120 5692440 1624120 5692536 -1624280 5693272 1626520 5696056 1626552 5696056 1626600 5696072 -1623752 5693000 1623304 5696976 1623376 5696968 1624280 5693272 -1623752 5693000 1623304 5696976 1624280 5693272 1624232 5693160 -1623376 5696968 1623464 5696976 1624280 5693272 1623304 5696976 -1623752 5693000 1623088 5692600 1623304 5696976 1624280 5693272 -1623752 5693000 1624232 5693320 1624280 5693272 1624232 5693160 -1624232 5693320 1623304 5696976 1624280 5693272 1624232 5693160 -1623752 5693000 1623304 5696976 1624232 5693320 1624232 5693160 -1623752 5693000 1624232 5693320 1624232 5693160 1624128 5693032 -1623752 5693000 1623304 5696976 1624232 5693320 1624128 5693032 -1624232 5693320 1624280 5693272 1624232 5693160 1624128 5693032 -1623752 5693000 1624232 5693320 1624128 5693032 1624080 5692912 -1623304 5696976 1624232 5693320 1623752 5693000 1623088 5692600 -1624280 5693272 1624232 5693320 1623304 5696976 1623376 5696968 -1624280 5693272 1624232 5693160 1624232 5693320 1623376 5696968 -1624232 5693320 1623752 5693000 1623304 5696976 1623376 5696968 -1624280 5693272 1624232 5693320 1623376 5696968 1623464 5696976 -1624280 5693272 1624232 5693320 1623464 5696976 1623632 5697024 -1624280 5693272 1624232 5693320 1623632 5697024 1623704 5697048 -1624232 5693320 1623464 5696976 1623632 5697024 1623704 5697048 -1624280 5693272 1624232 5693160 1624232 5693320 1623704 5697048 -1624280 5693272 1624232 5693320 1623704 5697048 1626488 5696072 -1624232 5693320 1623632 5697024 1623704 5697048 1626488 5696072 -1624280 5693272 1624232 5693320 1626488 5696072 1626520 5696056 -1624280 5693272 1624232 5693160 1624232 5693320 1626488 5696072 -1623704 5697048 1626480 5696112 1626488 5696072 1624232 5693320 -1623464 5696976 1623496 5696992 1623632 5697024 1624232 5693320 -1624232 5693320 1623376 5696968 1623464 5696976 1623632 5697024 -1624232 5693320 1623304 5696976 1623376 5696968 1623464 5696976 -1624232 5693320 1624160 5693336 1623304 5696976 1623376 5696968 -1624232 5693320 1623752 5693000 1624160 5693336 1623376 5696968 -1623752 5693000 1624160 5693336 1624232 5693320 1624128 5693032 -1624160 5693336 1623376 5696968 1624232 5693320 1624128 5693032 -1624160 5693336 1623752 5693000 1623304 5696976 1623376 5696968 -1623752 5693000 1623304 5696976 1624160 5693336 1624128 5693032 -1624232 5693320 1624232 5693160 1624128 5693032 1624160 5693336 -1624232 5693320 1624232 5693160 1624160 5693336 1623376 5696968 -1624128 5693032 1623752 5693000 1624160 5693336 1624232 5693160 -1624232 5693320 1624280 5693272 1624232 5693160 1624160 5693336 -1623752 5693000 1624160 5693336 1624128 5693032 1624080 5692912 -1623304 5696976 1624160 5693336 1623752 5693000 1623088 5692600 -1624232 5693320 1624160 5693336 1623376 5696968 1623464 5696976 -1624160 5693336 1623304 5696976 1623376 5696968 1623464 5696976 -1624232 5693320 1624232 5693160 1624160 5693336 1623464 5696976 -1624232 5693320 1624160 5693336 1623464 5696976 1623632 5697024 -1624232 5693320 1624160 5693336 1623632 5697024 1623704 5697048 -1624232 5693320 1624160 5693336 1623704 5697048 1626488 5696072 -1624232 5693320 1624232 5693160 1624160 5693336 1623704 5697048 -1623464 5696976 1623496 5696992 1623632 5697024 1624160 5693336 -1624160 5693336 1623464 5696976 1623632 5697024 1623704 5697048 -1624160 5693336 1623376 5696968 1623464 5696976 1623632 5697024 -1624160 5693336 1624048 5693248 1623304 5696976 1623376 5696968 -1623752 5693000 1624048 5693248 1624160 5693336 1624128 5693032 -1624160 5693336 1624232 5693160 1624128 5693032 1624048 5693248 -1624048 5693248 1623304 5696976 1624160 5693336 1624232 5693160 -1624128 5693032 1623752 5693000 1624048 5693248 1624232 5693160 -1623752 5693000 1623304 5696976 1624048 5693248 1624128 5693032 -1624160 5693336 1624232 5693320 1624232 5693160 1624048 5693248 -1623752 5693000 1624048 5693248 1624128 5693032 1624080 5692912 -1623304 5696976 1624048 5693248 1623752 5693000 1623088 5692600 -1610992 5683744 1614832 5682448 1657088 5639464 1610912 5683672 -1610992 5683744 1614832 5682448 1610912 5683672 1610944 5683704 -1612616 5685152 1614832 5682448 1610992 5683744 1611080 5683832 -1612616 5685152 1657088 5639464 1614832 5682448 1611080 5683832 -1610992 5683744 1611080 5683832 1614832 5682448 1610912 5683672 -1614832 5682448 1612616 5685152 1657088 5639464 1610912 5683672 -1610992 5683744 1611032 5683792 1611080 5683832 1614832 5682448 -1612616 5685152 1614832 5682448 1611080 5683832 1612576 5685128 -1612616 5685152 1657088 5639464 1614832 5682448 1612576 5685128 -1614832 5682448 1610992 5683744 1611080 5683832 1612576 5685128 -1611080 5683832 1612496 5685080 1612576 5685128 1614832 5682448 -1611080 5683832 1612496 5685080 1614832 5682448 1610992 5683744 -1611080 5683832 1611136 5683904 1612496 5685080 1614832 5682448 -1611080 5683832 1611136 5683904 1614832 5682448 1610992 5683744 -1612496 5685080 1612576 5685128 1614832 5682448 1611136 5683904 -1612576 5685128 1612616 5685152 1614832 5682448 1612496 5685080 -1657088 5639464 1610824 5683608 1610912 5683672 1614832 5682448 -1610912 5683672 1610992 5683744 1614832 5682448 1610824 5683608 -1657088 5639464 1610824 5683608 1614832 5682448 1612616 5685152 -1657088 5639464 1610736 5683552 1610824 5683608 1614832 5682448 -1657088 5639464 1610736 5683552 1614832 5682448 1612616 5685152 -1610824 5683608 1610912 5683672 1614832 5682448 1610736 5683552 -1657088 5639464 1614832 5682448 1612616 5685152 1624104 5692408 -1614832 5682448 1612576 5685128 1612616 5685152 1624104 5692408 -1657088 5639464 1610736 5683552 1614832 5682448 1624104 5692408 -1612616 5685152 1612640 5685184 1624104 5692408 1614832 5682448 -1612616 5685152 1612640 5685184 1614832 5682448 1612576 5685128 -1612640 5685184 1623032 5692344 1624104 5692408 1614832 5682448 -1623032 5692344 1624032 5692416 1624104 5692408 1614832 5682448 -1612640 5685184 1623032 5692344 1614832 5682448 1612616 5685152 -1657088 5639464 1614832 5682448 1624104 5692408 1663776 5646144 -1657088 5639464 1610736 5683552 1614832 5682448 1663776 5646144 -1624104 5692408 1663880 5646248 1663776 5646144 1614832 5682448 -1612640 5685184 1613632 5687000 1623032 5692344 1614832 5682448 -1613632 5687000 1615392 5689120 1623032 5692344 1614832 5682448 -1615392 5689120 1615440 5689168 1623032 5692344 1614832 5682448 -1615440 5689168 1623000 5692344 1623032 5692344 1614832 5682448 -1615440 5689168 1615488 5689272 1623000 5692344 1614832 5682448 -1615440 5689168 1623000 5692344 1614832 5682448 1615392 5689120 -1615392 5689120 1615440 5689168 1614832 5682448 1613632 5687000 -1623032 5692344 1624104 5692408 1614832 5682448 1623000 5692344 -1612640 5685184 1613632 5687000 1614832 5682448 1612616 5685152 -1613632 5687000 1615392 5689120 1614832 5682448 1612640 5685184 -1613632 5687000 1615352 5689088 1615392 5689120 1614832 5682448 -1615392 5689120 1615440 5689168 1614832 5682448 1615352 5689088 -1613632 5687000 1615352 5689088 1614832 5682448 1612640 5685184 -1613632 5687000 1615264 5689048 1615352 5689088 1614832 5682448 -1612640 5685184 1613592 5686944 1613632 5687000 1614832 5682448 -1612640 5685184 1613592 5686944 1614832 5682448 1612616 5685152 -1613592 5686944 1613600 5686968 1613632 5687000 1614832 5682448 -1613632 5687000 1615352 5689088 1614832 5682448 1613592 5686944 -1612640 5685184 1612656 5685232 1613592 5686944 1614832 5682448 -1612640 5685184 1612656 5685232 1614832 5682448 1612616 5685152 -1613592 5686944 1613632 5687000 1614832 5682448 1612656 5685232 -1657088 5639464 1614832 5682448 1663776 5646144 1663688 5645984 -1612656 5685232 1612664 5685288 1613592 5686944 1614832 5682448 -1612656 5685232 1612664 5685288 1614832 5682448 1612640 5685184 -1612664 5685288 1613536 5686904 1613592 5686944 1614832 5682448 -1613592 5686944 1613632 5687000 1614832 5682448 1612664 5685288 -1624104 5692408 1663776 5646144 1614832 5682448 1623032 5692344 -1657088 5639464 1610648 5683504 1610736 5683552 1614832 5682448 -1657088 5639464 1610648 5683504 1614832 5682448 1663776 5646144 -1610736 5683552 1610824 5683608 1614832 5682448 1610648 5683504 -1657088 5639464 1657056 5639384 1610648 5683504 1614832 5682448 -1657088 5639464 1657056 5639384 1614832 5682448 1663776 5646144 -1657056 5639384 1609800 5683160 1610648 5683504 1614832 5682448 -1657056 5639384 1609696 5683144 1609800 5683160 1614832 5682448 -1657056 5639384 1601464 5680984 1609696 5683144 1614832 5682448 -1601464 5680984 1601560 5681032 1609696 5683144 1614832 5682448 -1601464 5680984 1601560 5681032 1614832 5682448 1657056 5639384 -1609696 5683144 1609800 5683160 1614832 5682448 1601560 5681032 -1657056 5639384 1599875 5599875 1601464 5680984 1614832 5682448 -1599875 5599875 1601256 5680984 1601464 5680984 1614832 5682448 -1601464 5680984 1601560 5681032 1614832 5682448 1599875 5599875 -1609800 5683160 1610648 5683504 1614832 5682448 1609696 5683144 -1609800 5683160 1610616 5683496 1610648 5683504 1614832 5682448 -1601560 5681032 1608768 5683304 1609696 5683144 1614832 5682448 -1657056 5639384 1599875 5599875 1614832 5682448 1657088 5639464 -1657056 5639384 1657088 5639296 1599875 5599875 1614832 5682448 -1610648 5683504 1610736 5683552 1614832 5682448 1609800 5683160 -1611136 5683904 1612408 5685072 1612496 5685080 1614832 5682448 -1614832 5682448 1614880 5682424 1663776 5646144 1657088 5639464 -1614832 5682448 1614880 5682424 1657088 5639464 1657056 5639384 -1614880 5682424 1663776 5646144 1657088 5639464 1657056 5639384 -1663776 5646144 1614880 5682424 1624104 5692408 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1614880 5682424 -1624104 5692408 1614880 5682424 1614832 5682448 1623032 5692344 -1624104 5692408 1614880 5682424 1623032 5692344 1624032 5692416 -1614832 5682448 1623000 5692344 1623032 5692344 1614880 5682424 -1614832 5682448 1615440 5689168 1623000 5692344 1614880 5682424 -1615440 5689168 1615488 5689272 1623000 5692344 1614880 5682424 -1614832 5682448 1615392 5689120 1615440 5689168 1614880 5682424 -1615440 5689168 1623000 5692344 1614880 5682424 1615392 5689120 -1614832 5682448 1615352 5689088 1615392 5689120 1614880 5682424 -1615392 5689120 1615440 5689168 1614880 5682424 1615352 5689088 -1623000 5692344 1623032 5692344 1614880 5682424 1615440 5689168 -1614832 5682448 1613632 5687000 1615352 5689088 1614880 5682424 -1615352 5689088 1615392 5689120 1614880 5682424 1613632 5687000 -1614832 5682448 1613592 5686944 1613632 5687000 1614880 5682424 -1613632 5687000 1615264 5689048 1615352 5689088 1614880 5682424 -1623032 5692344 1624104 5692408 1614880 5682424 1623000 5692344 -1614832 5682448 1614880 5682424 1657056 5639384 1599875 5599875 -1614880 5682424 1657088 5639464 1657056 5639384 1599875 5599875 -1614832 5682448 1614880 5682424 1599875 5599875 1601464 5680984 -1599875 5599875 1601256 5680984 1601464 5680984 1614880 5682424 -1614832 5682448 1614880 5682424 1601464 5680984 1601560 5681032 -1614832 5682448 1614880 5682424 1601560 5681032 1609696 5683144 -1614880 5682424 1601464 5680984 1601560 5681032 1609696 5683144 -1614832 5682448 1614880 5682424 1609696 5683144 1609800 5683160 -1614880 5682424 1601560 5681032 1609696 5683144 1609800 5683160 -1614880 5682424 1599875 5599875 1601464 5680984 1601560 5681032 -1614832 5682448 1614880 5682424 1609800 5683160 1610648 5683504 -1601560 5681032 1608768 5683304 1609696 5683144 1614880 5682424 -1614880 5682424 1657056 5639384 1599875 5599875 1601464 5680984 -1657056 5639384 1657088 5639296 1599875 5599875 1614880 5682424 -1614832 5682448 1613632 5687000 1614880 5682424 1609800 5683160 -1614880 5682424 1624104 5692408 1663776 5646144 1657088 5639464 -1624104 5692408 1663776 5646144 1614880 5682424 1623032 5692344 -1663776 5646144 1614960 5682392 1624104 5692408 1663880 5646248 -1614880 5682424 1614960 5682392 1663776 5646144 1657088 5639464 -1614960 5682392 1624104 5692408 1663776 5646144 1657088 5639464 -1614880 5682424 1614960 5682392 1657088 5639464 1657056 5639384 -1614880 5682424 1614960 5682392 1657056 5639384 1599875 5599875 -1614960 5682392 1657088 5639464 1657056 5639384 1599875 5599875 -1663776 5646144 1663688 5645984 1657088 5639464 1614960 5682392 -1614880 5682424 1614960 5682392 1599875 5599875 1601464 5680984 -1614960 5682392 1657056 5639384 1599875 5599875 1601464 5680984 -1599875 5599875 1601256 5680984 1601464 5680984 1614960 5682392 -1614880 5682424 1614960 5682392 1601464 5680984 1601560 5681032 -1614880 5682424 1614960 5682392 1601560 5681032 1609696 5683144 -1614880 5682424 1614960 5682392 1609696 5683144 1609800 5683160 -1614960 5682392 1601464 5680984 1601560 5681032 1609696 5683144 -1601560 5681032 1608768 5683304 1609696 5683144 1614960 5682392 -1614960 5682392 1599875 5599875 1601464 5680984 1601560 5681032 -1657056 5639384 1657088 5639296 1599875 5599875 1614960 5682392 -1614960 5682392 1663776 5646144 1657088 5639464 1657056 5639384 -1614880 5682424 1624104 5692408 1614960 5682392 1609696 5683144 -1624104 5692408 1614960 5682392 1614880 5682424 1623032 5692344 -1624104 5692408 1663776 5646144 1614960 5682392 1623032 5692344 -1624104 5692408 1614960 5682392 1623032 5692344 1624032 5692416 -1614880 5682424 1623000 5692344 1623032 5692344 1614960 5682392 -1614880 5682424 1615440 5689168 1623000 5692344 1614960 5682392 -1614880 5682424 1615392 5689120 1615440 5689168 1614960 5682392 -1615440 5689168 1615488 5689272 1623000 5692344 1614960 5682392 -1614880 5682424 1615352 5689088 1615392 5689120 1614960 5682392 -1615392 5689120 1615440 5689168 1614960 5682392 1615352 5689088 -1614880 5682424 1613632 5687000 1615352 5689088 1614960 5682392 -1615352 5689088 1615392 5689120 1614960 5682392 1613632 5687000 -1615440 5689168 1623000 5692344 1614960 5682392 1615392 5689120 -1613632 5687000 1615264 5689048 1615352 5689088 1614960 5682392 -1614880 5682424 1614832 5682448 1613632 5687000 1614960 5682392 -1613632 5687000 1615352 5689088 1614960 5682392 1614832 5682448 -1614832 5682448 1613592 5686944 1613632 5687000 1614960 5682392 -1623000 5692344 1623032 5692344 1614960 5682392 1615440 5689168 -1614960 5682392 1609696 5683144 1614880 5682424 1614832 5682448 -1623032 5692344 1624104 5692408 1614960 5682392 1623000 5692344 -1614960 5682392 1615040 5682368 1663776 5646144 1657088 5639464 -1614960 5682392 1624104 5692408 1615040 5682368 1657088 5639464 -1624104 5692408 1615040 5682368 1614960 5682392 1623032 5692344 -1615040 5682368 1657088 5639464 1614960 5682392 1623032 5692344 -1615040 5682368 1624104 5692408 1663776 5646144 1657088 5639464 -1624104 5692408 1663776 5646144 1615040 5682368 1623032 5692344 -1624104 5692408 1615040 5682368 1623032 5692344 1624032 5692416 -1663776 5646144 1615040 5682368 1624104 5692408 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1615040 5682368 -1614960 5682392 1615040 5682368 1657088 5639464 1657056 5639384 -1615040 5682368 1663776 5646144 1657088 5639464 1657056 5639384 -1614960 5682392 1623032 5692344 1615040 5682368 1657056 5639384 -1614960 5682392 1615040 5682368 1657056 5639384 1599875 5599875 -1614960 5682392 1615040 5682368 1599875 5599875 1601464 5680984 -1614960 5682392 1623032 5692344 1615040 5682368 1601464 5680984 -1615040 5682368 1657056 5639384 1599875 5599875 1601464 5680984 -1599875 5599875 1601256 5680984 1601464 5680984 1615040 5682368 -1614960 5682392 1615040 5682368 1601464 5680984 1601560 5681032 -1615040 5682368 1599875 5599875 1601464 5680984 1601560 5681032 -1614960 5682392 1623032 5692344 1615040 5682368 1601560 5681032 -1614960 5682392 1615040 5682368 1601560 5681032 1609696 5683144 -1657056 5639384 1657088 5639296 1599875 5599875 1615040 5682368 -1615040 5682368 1657088 5639464 1657056 5639384 1599875 5599875 -1614960 5682392 1623000 5692344 1623032 5692344 1615040 5682368 -1614960 5682392 1623000 5692344 1615040 5682368 1601560 5681032 -1623032 5692344 1624104 5692408 1615040 5682368 1623000 5692344 -1614960 5682392 1615440 5689168 1623000 5692344 1615040 5682368 -1614960 5682392 1615440 5689168 1615040 5682368 1601560 5681032 -1615440 5689168 1615488 5689272 1623000 5692344 1615040 5682368 -1614960 5682392 1615392 5689120 1615440 5689168 1615040 5682368 -1614960 5682392 1615392 5689120 1615040 5682368 1601560 5681032 -1614960 5682392 1615352 5689088 1615392 5689120 1615040 5682368 -1614960 5682392 1615352 5689088 1615040 5682368 1601560 5681032 -1614960 5682392 1613632 5687000 1615352 5689088 1615040 5682368 -1614960 5682392 1613632 5687000 1615040 5682368 1601560 5681032 -1615352 5689088 1615392 5689120 1615040 5682368 1613632 5687000 -1614960 5682392 1614832 5682448 1613632 5687000 1615040 5682368 -1614960 5682392 1614832 5682448 1615040 5682368 1601560 5681032 -1613632 5687000 1615352 5689088 1615040 5682368 1614832 5682448 -1615392 5689120 1615440 5689168 1615040 5682368 1615352 5689088 -1614832 5682448 1613592 5686944 1613632 5687000 1615040 5682368 -1613632 5687000 1615352 5689088 1615040 5682368 1613592 5686944 -1614832 5682448 1613592 5686944 1615040 5682368 1614960 5682392 -1613592 5686944 1613600 5686968 1613632 5687000 1615040 5682368 -1613632 5687000 1615264 5689048 1615352 5689088 1615040 5682368 -1614960 5682392 1614880 5682424 1614832 5682448 1615040 5682368 -1614832 5682448 1612664 5685288 1613592 5686944 1615040 5682368 -1615440 5689168 1623000 5692344 1615040 5682368 1615392 5689120 -1623000 5692344 1623032 5692344 1615040 5682368 1615440 5689168 -1615040 5682368 1615128 5682360 1663776 5646144 1657088 5639464 -1615040 5682368 1615128 5682360 1657088 5639464 1657056 5639384 -1615128 5682360 1663776 5646144 1657088 5639464 1657056 5639384 -1615040 5682368 1624104 5692408 1615128 5682360 1657056 5639384 -1624104 5692408 1615128 5682360 1615040 5682368 1623032 5692344 -1615040 5682368 1623000 5692344 1623032 5692344 1615128 5682360 -1615128 5682360 1657056 5639384 1615040 5682368 1623000 5692344 -1623032 5692344 1624104 5692408 1615128 5682360 1623000 5692344 -1615128 5682360 1624104 5692408 1663776 5646144 1657088 5639464 -1624104 5692408 1663776 5646144 1615128 5682360 1623032 5692344 -1624104 5692408 1615128 5682360 1623032 5692344 1624032 5692416 -1663776 5646144 1615128 5682360 1624104 5692408 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1615128 5682360 -1615040 5682368 1615128 5682360 1657056 5639384 1599875 5599875 -1615128 5682360 1657088 5639464 1657056 5639384 1599875 5599875 -1615040 5682368 1623000 5692344 1615128 5682360 1599875 5599875 -1615040 5682368 1615128 5682360 1599875 5599875 1601464 5680984 -1615040 5682368 1615128 5682360 1601464 5680984 1601560 5681032 -1615040 5682368 1623000 5692344 1615128 5682360 1601464 5680984 -1599875 5599875 1601256 5680984 1601464 5680984 1615128 5682360 -1657056 5639384 1657088 5639296 1599875 5599875 1615128 5682360 -1615128 5682360 1657056 5639384 1599875 5599875 1601464 5680984 -1615040 5682368 1615440 5689168 1623000 5692344 1615128 5682360 -1623000 5692344 1623032 5692344 1615128 5682360 1615440 5689168 -1615040 5682368 1615440 5689168 1615128 5682360 1601464 5680984 -1615440 5689168 1615488 5689272 1623000 5692344 1615128 5682360 -1615040 5682368 1615392 5689120 1615440 5689168 1615128 5682360 -1615040 5682368 1615392 5689120 1615128 5682360 1601464 5680984 -1615040 5682368 1615352 5689088 1615392 5689120 1615128 5682360 -1615040 5682368 1615352 5689088 1615128 5682360 1601464 5680984 -1615040 5682368 1613632 5687000 1615352 5689088 1615128 5682360 -1615040 5682368 1613632 5687000 1615128 5682360 1601464 5680984 -1615040 5682368 1613592 5686944 1613632 5687000 1615128 5682360 -1615040 5682368 1613592 5686944 1615128 5682360 1601464 5680984 -1613632 5687000 1615352 5689088 1615128 5682360 1613592 5686944 -1615352 5689088 1615392 5689120 1615128 5682360 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1615128 5682360 -1615040 5682368 1614832 5682448 1613592 5686944 1615128 5682360 -1615040 5682368 1614832 5682448 1615128 5682360 1601464 5680984 -1613592 5686944 1613632 5687000 1615128 5682360 1614832 5682448 -1615040 5682368 1614960 5682392 1614832 5682448 1615128 5682360 -1615040 5682368 1614960 5682392 1615128 5682360 1601464 5680984 -1614832 5682448 1613592 5686944 1615128 5682360 1614960 5682392 -1613632 5687000 1615264 5689048 1615352 5689088 1615128 5682360 -1614960 5682392 1614880 5682424 1614832 5682448 1615128 5682360 -1614960 5682392 1614880 5682424 1615128 5682360 1615040 5682368 -1614832 5682448 1613592 5686944 1615128 5682360 1614880 5682424 -1614832 5682448 1612664 5685288 1613592 5686944 1615128 5682360 -1615392 5689120 1615440 5689168 1615128 5682360 1615352 5689088 -1615440 5689168 1623000 5692344 1615128 5682360 1615392 5689120 -1615128 5682360 1615160 5682368 1663776 5646144 1657088 5639464 -1615128 5682360 1615160 5682368 1657088 5639464 1657056 5639384 -1615128 5682360 1615160 5682368 1657056 5639384 1599875 5599875 -1615160 5682368 1663776 5646144 1657088 5639464 1657056 5639384 -1615128 5682360 1624104 5692408 1615160 5682368 1657056 5639384 -1624104 5692408 1615160 5682368 1615128 5682360 1623032 5692344 -1615128 5682360 1623000 5692344 1623032 5692344 1615160 5682368 -1615128 5682360 1615440 5689168 1623000 5692344 1615160 5682368 -1623000 5692344 1623032 5692344 1615160 5682368 1615440 5689168 -1615160 5682368 1657056 5639384 1615128 5682360 1615440 5689168 -1623032 5692344 1624104 5692408 1615160 5682368 1623000 5692344 -1615160 5682368 1624104 5692408 1663776 5646144 1657088 5639464 -1624104 5692408 1663776 5646144 1615160 5682368 1623032 5692344 -1615440 5689168 1615488 5689272 1623000 5692344 1615160 5682368 -1624104 5692408 1615160 5682368 1623032 5692344 1624032 5692416 -1663776 5646144 1615160 5682368 1624104 5692408 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1615160 5682368 -1615128 5682360 1615392 5689120 1615440 5689168 1615160 5682368 -1615440 5689168 1623000 5692344 1615160 5682368 1615392 5689120 -1615128 5682360 1615392 5689120 1615160 5682368 1657056 5639384 -1615128 5682360 1615352 5689088 1615392 5689120 1615160 5682368 -1615128 5682360 1615352 5689088 1615160 5682368 1657056 5639384 -1615128 5682360 1613632 5687000 1615352 5689088 1615160 5682368 -1615128 5682360 1613632 5687000 1615160 5682368 1657056 5639384 -1615128 5682360 1613592 5686944 1613632 5687000 1615160 5682368 -1615128 5682360 1613592 5686944 1615160 5682368 1657056 5639384 -1615128 5682360 1614832 5682448 1613592 5686944 1615160 5682368 -1615128 5682360 1614832 5682448 1615160 5682368 1657056 5639384 -1613592 5686944 1613632 5687000 1615160 5682368 1614832 5682448 -1613632 5687000 1615352 5689088 1615160 5682368 1613592 5686944 -1613592 5686944 1613600 5686968 1613632 5687000 1615160 5682368 -1615128 5682360 1614880 5682424 1614832 5682448 1615160 5682368 -1615128 5682360 1614880 5682424 1615160 5682368 1657056 5639384 -1614832 5682448 1613592 5686944 1615160 5682368 1614880 5682424 -1613632 5687000 1615264 5689048 1615352 5689088 1615160 5682368 -1615128 5682360 1614960 5682392 1614880 5682424 1615160 5682368 -1615128 5682360 1614960 5682392 1615160 5682368 1657056 5639384 -1615128 5682360 1615040 5682368 1614960 5682392 1615160 5682368 -1615128 5682360 1615040 5682368 1615160 5682368 1657056 5639384 -1614880 5682424 1614832 5682448 1615160 5682368 1614960 5682392 -1614960 5682392 1614880 5682424 1615160 5682368 1615040 5682368 -1614832 5682448 1612664 5685288 1613592 5686944 1615160 5682368 -1615352 5689088 1615392 5689120 1615160 5682368 1613632 5687000 -1615392 5689120 1615440 5689168 1615160 5682368 1615352 5689088 -1615160 5682368 1615256 5682392 1663776 5646144 1657088 5639464 -1615160 5682368 1615256 5682392 1657088 5639464 1657056 5639384 -1615160 5682368 1615256 5682392 1657056 5639384 1615128 5682360 -1615256 5682392 1663776 5646144 1657088 5639464 1657056 5639384 -1615160 5682368 1624104 5692408 1615256 5682392 1657056 5639384 -1624104 5692408 1615256 5682392 1615160 5682368 1623032 5692344 -1615160 5682368 1623000 5692344 1623032 5692344 1615256 5682392 -1615160 5682368 1615440 5689168 1623000 5692344 1615256 5682392 -1615160 5682368 1615392 5689120 1615440 5689168 1615256 5682392 -1615440 5689168 1623000 5692344 1615256 5682392 1615392 5689120 -1623000 5692344 1623032 5692344 1615256 5682392 1615440 5689168 -1615256 5682392 1657056 5639384 1615160 5682368 1615392 5689120 -1623032 5692344 1624104 5692408 1615256 5682392 1623000 5692344 -1615256 5682392 1624104 5692408 1663776 5646144 1657088 5639464 -1624104 5692408 1663776 5646144 1615256 5682392 1623032 5692344 -1615440 5689168 1615488 5689272 1623000 5692344 1615256 5682392 -1624104 5692408 1615256 5682392 1623032 5692344 1624032 5692416 -1663776 5646144 1615256 5682392 1624104 5692408 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1615256 5682392 -1615160 5682368 1615352 5689088 1615392 5689120 1615256 5682392 -1615392 5689120 1615440 5689168 1615256 5682392 1615352 5689088 -1615160 5682368 1615352 5689088 1615256 5682392 1657056 5639384 -1615160 5682368 1613632 5687000 1615352 5689088 1615256 5682392 -1615160 5682368 1613632 5687000 1615256 5682392 1657056 5639384 -1615160 5682368 1613592 5686944 1613632 5687000 1615256 5682392 -1615160 5682368 1613592 5686944 1615256 5682392 1657056 5639384 -1615160 5682368 1614832 5682448 1613592 5686944 1615256 5682392 -1615160 5682368 1614832 5682448 1615256 5682392 1657056 5639384 -1615160 5682368 1614880 5682424 1614832 5682448 1615256 5682392 -1615160 5682368 1614880 5682424 1615256 5682392 1657056 5639384 -1614832 5682448 1613592 5686944 1615256 5682392 1614880 5682424 -1613592 5686944 1613632 5687000 1615256 5682392 1614832 5682448 -1613592 5686944 1613600 5686968 1613632 5687000 1615256 5682392 -1615160 5682368 1614960 5682392 1614880 5682424 1615256 5682392 -1615160 5682368 1614960 5682392 1615256 5682392 1657056 5639384 -1614880 5682424 1614832 5682448 1615256 5682392 1614960 5682392 -1613632 5687000 1615264 5689048 1615352 5689088 1615256 5682392 -1615160 5682368 1615040 5682368 1614960 5682392 1615256 5682392 -1614832 5682448 1612664 5685288 1613592 5686944 1615256 5682392 -1613632 5687000 1615352 5689088 1615256 5682392 1613592 5686944 -1615352 5689088 1615392 5689120 1615256 5682392 1613632 5687000 -1615256 5682392 1615296 5682424 1663776 5646144 1657088 5639464 -1615256 5682392 1615296 5682424 1657088 5639464 1657056 5639384 -1615256 5682392 1624104 5692408 1615296 5682424 1657088 5639464 -1624104 5692408 1615296 5682424 1615256 5682392 1623032 5692344 -1615256 5682392 1623000 5692344 1623032 5692344 1615296 5682424 -1615256 5682392 1615440 5689168 1623000 5692344 1615296 5682424 -1615256 5682392 1615392 5689120 1615440 5689168 1615296 5682424 -1615256 5682392 1615352 5689088 1615392 5689120 1615296 5682424 -1615392 5689120 1615440 5689168 1615296 5682424 1615352 5689088 -1615440 5689168 1623000 5692344 1615296 5682424 1615392 5689120 -1623000 5692344 1623032 5692344 1615296 5682424 1615440 5689168 -1615296 5682424 1657088 5639464 1615256 5682392 1615352 5689088 -1623032 5692344 1624104 5692408 1615296 5682424 1623000 5692344 -1615296 5682424 1624104 5692408 1663776 5646144 1657088 5639464 -1624104 5692408 1663776 5646144 1615296 5682424 1623032 5692344 -1615440 5689168 1615488 5689272 1623000 5692344 1615296 5682424 -1624104 5692408 1615296 5682424 1623032 5692344 1624032 5692416 -1663776 5646144 1615296 5682424 1624104 5692408 1663880 5646248 -1663776 5646144 1663688 5645984 1657088 5639464 1615296 5682424 -1615256 5682392 1613632 5687000 1615352 5689088 1615296 5682424 -1615352 5689088 1615392 5689120 1615296 5682424 1613632 5687000 -1615256 5682392 1613632 5687000 1615296 5682424 1657088 5639464 -1613632 5687000 1615264 5689048 1615352 5689088 1615296 5682424 -1615256 5682392 1613592 5686944 1613632 5687000 1615296 5682424 -1615256 5682392 1613592 5686944 1615296 5682424 1657088 5639464 -1615256 5682392 1614832 5682448 1613592 5686944 1615296 5682424 -1615256 5682392 1614832 5682448 1615296 5682424 1657088 5639464 -1615256 5682392 1614880 5682424 1614832 5682448 1615296 5682424 -1615256 5682392 1614880 5682424 1615296 5682424 1657088 5639464 -1615256 5682392 1614960 5682392 1614880 5682424 1615296 5682424 -1615256 5682392 1614960 5682392 1615296 5682424 1657088 5639464 -1614880 5682424 1614832 5682448 1615296 5682424 1614960 5682392 -1614832 5682448 1613592 5686944 1615296 5682424 1614880 5682424 -1613592 5686944 1613600 5686968 1613632 5687000 1615296 5682424 -1615256 5682392 1615160 5682368 1614960 5682392 1615296 5682424 -1615256 5682392 1615160 5682368 1615296 5682424 1657088 5639464 -1614960 5682392 1614880 5682424 1615296 5682424 1615160 5682368 -1615160 5682368 1615040 5682368 1614960 5682392 1615296 5682424 -1614960 5682392 1614880 5682424 1615296 5682424 1615040 5682368 -1615160 5682368 1615128 5682360 1615040 5682368 1615296 5682424 -1615160 5682368 1615040 5682368 1615296 5682424 1615256 5682392 -1614832 5682448 1612664 5685288 1613592 5686944 1615296 5682424 -1613592 5686944 1613632 5687000 1615296 5682424 1614832 5682448 -1613632 5687000 1615352 5689088 1615296 5682424 1613592 5686944 -1615296 5682424 1615296 5682480 1615352 5689088 1615392 5689120 -1615296 5682424 1615296 5682480 1615392 5689120 1615440 5689168 -1615296 5682480 1615352 5689088 1615392 5689120 1615440 5689168 -1615296 5682424 1615296 5682480 1615440 5689168 1623000 5692344 -1615296 5682480 1615392 5689120 1615440 5689168 1623000 5692344 -1615296 5682424 1615296 5682480 1623000 5692344 1623032 5692344 -1615296 5682480 1615440 5689168 1623000 5692344 1623032 5692344 -1615296 5682424 1615296 5682480 1623032 5692344 1624104 5692408 -1615296 5682480 1623000 5692344 1623032 5692344 1624104 5692408 -1615296 5682424 1613632 5687000 1615296 5682480 1624104 5692408 -1615296 5682424 1615296 5682480 1624104 5692408 1663776 5646144 -1615296 5682480 1613632 5687000 1615352 5689088 1615392 5689120 -1615440 5689168 1615488 5689272 1623000 5692344 1615296 5682480 -1623032 5692344 1624032 5692416 1624104 5692408 1615296 5682480 -1615352 5689088 1615296 5682480 1613632 5687000 1615264 5689048 -1613632 5687000 1615296 5682480 1615296 5682424 1613592 5686944 -1615296 5682480 1624104 5692408 1615296 5682424 1613592 5686944 -1613632 5687000 1615352 5689088 1615296 5682480 1613592 5686944 -1613632 5687000 1615296 5682480 1613592 5686944 1613600 5686968 -1615296 5682424 1614832 5682448 1613592 5686944 1615296 5682480 -1615296 5682424 1614832 5682448 1615296 5682480 1624104 5692408 -1615296 5682424 1614880 5682424 1614832 5682448 1615296 5682480 -1615296 5682424 1614880 5682424 1615296 5682480 1624104 5692408 -1615296 5682424 1614960 5682392 1614880 5682424 1615296 5682480 -1615296 5682424 1614960 5682392 1615296 5682480 1624104 5692408 -1615296 5682424 1615040 5682368 1614960 5682392 1615296 5682480 -1615296 5682424 1615040 5682368 1615296 5682480 1624104 5692408 -1614960 5682392 1614880 5682424 1615296 5682480 1615040 5682368 -1614880 5682424 1614832 5682448 1615296 5682480 1614960 5682392 -1615296 5682424 1615160 5682368 1615040 5682368 1615296 5682480 -1615296 5682424 1615160 5682368 1615296 5682480 1624104 5692408 -1615040 5682368 1614960 5682392 1615296 5682480 1615160 5682368 -1615160 5682368 1615128 5682360 1615040 5682368 1615296 5682480 -1615296 5682424 1615256 5682392 1615160 5682368 1615296 5682480 -1615296 5682424 1615256 5682392 1615296 5682480 1624104 5692408 -1615160 5682368 1615040 5682368 1615296 5682480 1615256 5682392 -1614832 5682448 1612664 5685288 1613592 5686944 1615296 5682480 -1612664 5685288 1613536 5686904 1613592 5686944 1615296 5682480 -1614832 5682448 1612656 5685232 1612664 5685288 1615296 5682480 -1614832 5682448 1612640 5685184 1612656 5685232 1615296 5682480 -1612664 5685288 1613592 5686944 1615296 5682480 1612656 5685232 -1614832 5682448 1612656 5685232 1615296 5682480 1614880 5682424 -1613592 5686944 1613632 5687000 1615296 5682480 1612664 5685288 -1612656 5685232 1615248 5682520 1614832 5682448 1612640 5685184 -1615296 5682480 1615248 5682520 1612656 5685232 1612664 5685288 -1615296 5682480 1614832 5682448 1615248 5682520 1612664 5685288 -1615248 5682520 1614832 5682448 1612656 5685232 1612664 5685288 -1615296 5682480 1615248 5682520 1612664 5685288 1613592 5686944 -1615296 5682480 1614832 5682448 1615248 5682520 1613592 5686944 -1612664 5685288 1613536 5686904 1613592 5686944 1615248 5682520 -1615248 5682520 1612656 5685232 1612664 5685288 1613592 5686944 -1614832 5682448 1615248 5682520 1615296 5682480 1614880 5682424 -1615248 5682520 1613592 5686944 1615296 5682480 1614880 5682424 -1614832 5682448 1612656 5685232 1615248 5682520 1614880 5682424 -1615296 5682480 1614960 5682392 1614880 5682424 1615248 5682520 -1615296 5682480 1614960 5682392 1615248 5682520 1613592 5686944 -1615296 5682480 1615040 5682368 1614960 5682392 1615248 5682520 -1615296 5682480 1615040 5682368 1615248 5682520 1613592 5686944 -1615296 5682480 1615160 5682368 1615040 5682368 1615248 5682520 -1615296 5682480 1615160 5682368 1615248 5682520 1613592 5686944 -1615040 5682368 1614960 5682392 1615248 5682520 1615160 5682368 -1615160 5682368 1615128 5682360 1615040 5682368 1615248 5682520 -1615040 5682368 1614960 5682392 1615248 5682520 1615128 5682360 -1615160 5682368 1615128 5682360 1615248 5682520 1615296 5682480 -1614960 5682392 1614880 5682424 1615248 5682520 1615040 5682368 -1615296 5682480 1615256 5682392 1615160 5682368 1615248 5682520 -1615296 5682480 1615256 5682392 1615248 5682520 1613592 5686944 -1615160 5682368 1615128 5682360 1615248 5682520 1615256 5682392 -1615296 5682480 1615296 5682424 1615256 5682392 1615248 5682520 -1614880 5682424 1614832 5682448 1615248 5682520 1614960 5682392 -1615296 5682480 1615248 5682520 1613592 5686944 1613632 5687000 -1615296 5682480 1615256 5682392 1615248 5682520 1613632 5687000 -1615296 5682480 1615248 5682520 1613632 5687000 1615352 5689088 -1615296 5682480 1615248 5682520 1615352 5689088 1615392 5689120 -1615296 5682480 1615256 5682392 1615248 5682520 1615352 5689088 -1613592 5686944 1613600 5686968 1613632 5687000 1615248 5682520 -1613632 5687000 1615264 5689048 1615352 5689088 1615248 5682520 -1615248 5682520 1612664 5685288 1613592 5686944 1613632 5687000 -1615248 5682520 1613592 5686944 1613632 5687000 1615352 5689088 -1615248 5682520 1615216 5682544 1612656 5685232 1612664 5685288 -1615248 5682520 1614832 5682448 1615216 5682544 1612664 5685288 -1614832 5682448 1615216 5682544 1615248 5682520 1614880 5682424 -1615216 5682544 1612664 5685288 1615248 5682520 1614880 5682424 -1615216 5682544 1614832 5682448 1612656 5685232 1612664 5685288 -1614832 5682448 1612656 5685232 1615216 5682544 1614880 5682424 -1612656 5685232 1615216 5682544 1614832 5682448 1612640 5685184 -1612656 5685232 1612664 5685288 1615216 5682544 1612640 5685184 -1615216 5682544 1614880 5682424 1614832 5682448 1612640 5685184 -1614832 5682448 1612616 5685152 1612640 5685184 1615216 5682544 -1615248 5682520 1615216 5682544 1612664 5685288 1613592 5686944 -1615216 5682544 1612656 5685232 1612664 5685288 1613592 5686944 -1615248 5682520 1614880 5682424 1615216 5682544 1613592 5686944 -1612664 5685288 1613536 5686904 1613592 5686944 1615216 5682544 -1615248 5682520 1615216 5682544 1613592 5686944 1613632 5687000 -1615248 5682520 1614880 5682424 1615216 5682544 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1615216 5682544 -1615216 5682544 1612664 5685288 1613592 5686944 1613632 5687000 -1615248 5682520 1614960 5682392 1614880 5682424 1615216 5682544 -1615248 5682520 1614960 5682392 1615216 5682544 1613632 5687000 -1614880 5682424 1614832 5682448 1615216 5682544 1614960 5682392 -1615248 5682520 1615040 5682368 1614960 5682392 1615216 5682544 -1615248 5682520 1615040 5682368 1615216 5682544 1613632 5687000 -1615248 5682520 1615128 5682360 1615040 5682368 1615216 5682544 -1615248 5682520 1615128 5682360 1615216 5682544 1613632 5687000 -1615248 5682520 1615160 5682368 1615128 5682360 1615216 5682544 -1615248 5682520 1615160 5682368 1615216 5682544 1613632 5687000 -1615128 5682360 1615040 5682368 1615216 5682544 1615160 5682368 -1615248 5682520 1615256 5682392 1615160 5682368 1615216 5682544 -1615040 5682368 1614960 5682392 1615216 5682544 1615128 5682360 -1614960 5682392 1614880 5682424 1615216 5682544 1615040 5682368 -1615248 5682520 1615216 5682544 1613632 5687000 1615352 5689088 -1615248 5682520 1615216 5682544 1615352 5689088 1615296 5682480 -1615248 5682520 1615160 5682368 1615216 5682544 1615352 5689088 -1613632 5687000 1615264 5689048 1615352 5689088 1615216 5682544 -1615216 5682544 1613592 5686944 1613632 5687000 1615352 5689088 -1614832 5682448 1615168 5682552 1615216 5682544 1614880 5682424 -1615216 5682544 1614960 5682392 1614880 5682424 1615168 5682552 -1615168 5682552 1612640 5685184 1615216 5682544 1614960 5682392 -1614880 5682424 1614832 5682448 1615168 5682552 1614960 5682392 -1614832 5682448 1612640 5685184 1615168 5682552 1614880 5682424 -1612640 5685184 1615168 5682552 1614832 5682448 1612616 5685152 -1615216 5682544 1615168 5682552 1612640 5685184 1612656 5685232 -1615216 5682544 1615168 5682552 1612656 5685232 1612664 5685288 -1615216 5682544 1615168 5682552 1612664 5685288 1613592 5686944 -1615168 5682552 1612656 5685232 1612664 5685288 1613592 5686944 -1615216 5682544 1614960 5682392 1615168 5682552 1613592 5686944 -1615168 5682552 1614832 5682448 1612640 5685184 1612656 5685232 -1615168 5682552 1612640 5685184 1612656 5685232 1612664 5685288 -1612664 5685288 1613536 5686904 1613592 5686944 1615168 5682552 -1615216 5682544 1615168 5682552 1613592 5686944 1613632 5687000 -1615216 5682544 1615040 5682368 1614960 5682392 1615168 5682552 -1614960 5682392 1614880 5682424 1615168 5682552 1615040 5682368 -1615216 5682544 1615040 5682368 1615168 5682552 1613592 5686944 -1615216 5682544 1615128 5682360 1615040 5682368 1615168 5682552 -1615216 5682544 1615128 5682360 1615168 5682552 1613592 5686944 -1615216 5682544 1615160 5682368 1615128 5682360 1615168 5682552 -1615216 5682544 1615160 5682368 1615168 5682552 1613592 5686944 -1615216 5682544 1615248 5682520 1615160 5682368 1615168 5682552 -1615128 5682360 1615040 5682368 1615168 5682552 1615160 5682368 -1615040 5682368 1614960 5682392 1615168 5682552 1615128 5682360 -1615168 5682552 1615080 5682560 1612640 5685184 1612656 5685232 -1615168 5682552 1614832 5682448 1615080 5682560 1612656 5685232 -1614832 5682448 1615080 5682560 1615168 5682552 1614880 5682424 -1615168 5682552 1614960 5682392 1614880 5682424 1615080 5682560 -1615168 5682552 1615040 5682368 1614960 5682392 1615080 5682560 -1614960 5682392 1614880 5682424 1615080 5682560 1615040 5682368 -1615080 5682560 1612656 5685232 1615168 5682552 1615040 5682368 -1614880 5682424 1614832 5682448 1615080 5682560 1614960 5682392 -1615080 5682560 1614832 5682448 1612640 5685184 1612656 5685232 -1614832 5682448 1612640 5685184 1615080 5682560 1614880 5682424 -1612640 5685184 1615080 5682560 1614832 5682448 1612616 5685152 -1615168 5682552 1615080 5682560 1612656 5685232 1612664 5685288 -1615168 5682552 1615080 5682560 1612664 5685288 1613592 5686944 -1615168 5682552 1615080 5682560 1613592 5686944 1615216 5682544 -1615080 5682560 1612640 5685184 1612656 5685232 1612664 5685288 -1615168 5682552 1615040 5682368 1615080 5682560 1613592 5686944 -1615080 5682560 1612656 5685232 1612664 5685288 1613592 5686944 -1612664 5685288 1613536 5686904 1613592 5686944 1615080 5682560 -1615168 5682552 1615128 5682360 1615040 5682368 1615080 5682560 -1615040 5682368 1614960 5682392 1615080 5682560 1615128 5682360 -1615168 5682552 1615128 5682360 1615080 5682560 1613592 5686944 -1615168 5682552 1615160 5682368 1615128 5682360 1615080 5682560 -1615080 5682560 1614992 5682552 1612640 5685184 1612656 5685232 -1615080 5682560 1614992 5682552 1612656 5685232 1612664 5685288 -1615080 5682560 1614832 5682448 1614992 5682552 1612656 5685232 -1614832 5682448 1614992 5682552 1615080 5682560 1614880 5682424 -1615080 5682560 1614960 5682392 1614880 5682424 1614992 5682552 -1615080 5682560 1615040 5682368 1614960 5682392 1614992 5682552 -1615080 5682560 1615128 5682360 1615040 5682368 1614992 5682552 -1614960 5682392 1614880 5682424 1614992 5682552 1615040 5682368 -1614992 5682552 1612656 5685232 1615080 5682560 1615040 5682368 -1614880 5682424 1614832 5682448 1614992 5682552 1614960 5682392 -1614992 5682552 1614832 5682448 1612640 5685184 1612656 5685232 -1614832 5682448 1612640 5685184 1614992 5682552 1614880 5682424 -1612640 5685184 1614992 5682552 1614832 5682448 1612616 5685152 -1614832 5682448 1612576 5685128 1612616 5685152 1614992 5682552 -1612640 5685184 1612656 5685232 1614992 5682552 1612616 5685152 -1614992 5682552 1614880 5682424 1614832 5682448 1612616 5685152 -1612616 5685152 1614944 5682560 1614832 5682448 1612576 5685128 -1614832 5682448 1614944 5682560 1614992 5682552 1614880 5682424 -1614992 5682552 1614960 5682392 1614880 5682424 1614944 5682560 -1614992 5682552 1615040 5682368 1614960 5682392 1614944 5682560 -1614944 5682560 1612616 5685152 1614992 5682552 1614960 5682392 -1614880 5682424 1614832 5682448 1614944 5682560 1614960 5682392 -1614832 5682448 1612616 5685152 1614944 5682560 1614880 5682424 -1614992 5682552 1614944 5682560 1612616 5685152 1612640 5685184 -1614992 5682552 1614944 5682560 1612640 5685184 1612656 5685232 -1614992 5682552 1614944 5682560 1612656 5685232 1615080 5682560 -1612656 5685232 1612664 5685288 1615080 5682560 1614944 5682560 -1615080 5682560 1614992 5682552 1614944 5682560 1612664 5685288 -1614944 5682560 1612640 5685184 1612656 5685232 1612664 5685288 -1614992 5682552 1614960 5682392 1614944 5682560 1615080 5682560 -1614944 5682560 1614832 5682448 1612616 5685152 1612640 5685184 -1614944 5682560 1612616 5685152 1612640 5685184 1612656 5685232 -1612664 5685288 1613592 5686944 1615080 5682560 1614944 5682560 -1612616 5685152 1614872 5682536 1614832 5682448 1612576 5685128 -1614944 5682560 1614872 5682536 1612616 5685152 1612640 5685184 -1614944 5682560 1614832 5682448 1614872 5682536 1612640 5685184 -1614832 5682448 1614872 5682536 1614944 5682560 1614880 5682424 -1614944 5682560 1614960 5682392 1614880 5682424 1614872 5682536 -1614872 5682536 1612640 5685184 1614944 5682560 1614880 5682424 -1612616 5685152 1612640 5685184 1614872 5682536 1612576 5685128 -1614872 5682536 1614880 5682424 1614832 5682448 1612576 5685128 -1614944 5682560 1614872 5682536 1612640 5685184 1612656 5685232 -1614832 5682448 1612496 5685080 1612576 5685128 1614872 5682536 -1612576 5685128 1612616 5685152 1614872 5682536 1612496 5685080 -1614832 5682448 1612496 5685080 1614872 5682536 1614880 5682424 -1614832 5682448 1611136 5683904 1612496 5685080 1614872 5682536 -1614832 5682448 1614824 5682496 1614872 5682536 1614880 5682424 -1612496 5685080 1614824 5682496 1614832 5682448 1611136 5683904 -1612496 5685080 1614872 5682536 1614824 5682496 1611136 5683904 -1614824 5682496 1614872 5682536 1614832 5682448 1611136 5683904 -1614832 5682448 1611080 5683832 1611136 5683904 1614824 5682496 -1614832 5682448 1610992 5683744 1611080 5683832 1614824 5682496 -1614832 5682448 1610912 5683672 1610992 5683744 1614824 5682496 -1614832 5682448 1610992 5683744 1614824 5682496 1614872 5682536 -1610992 5683744 1611032 5683792 1611080 5683832 1614824 5682496 -1611136 5683904 1612496 5685080 1614824 5682496 1611080 5683832 -1611080 5683832 1611136 5683904 1614824 5682496 1610992 5683744 -1614872 5682536 1614824 5682496 1612496 5685080 1612576 5685128 -1614872 5682536 1614824 5682496 1612576 5685128 1612616 5685152 -1614872 5682536 1614824 5682496 1612616 5685152 1612640 5685184 -1614872 5682536 1614832 5682448 1614824 5682496 1612616 5685152 -1614824 5682496 1611136 5683904 1612496 5685080 1612576 5685128 -1614824 5682496 1612496 5685080 1612576 5685128 1612616 5685152 -1612496 5685080 1614824 5682496 1611136 5683904 1612408 5685072 -1624104 5692408 1629904 5693000 1663880 5646248 1663776 5646144 -1629904 5693000 1628120 5696720 1663880 5646248 1663776 5646144 -1624104 5692408 1628120 5696720 1629904 5693000 1663776 5646144 -1624104 5692408 1629904 5693000 1663776 5646144 1615296 5682424 -1663776 5646144 1657088 5639464 1615296 5682424 1629904 5693000 -1624104 5692408 1629904 5693000 1615296 5682424 1615296 5682480 -1624104 5692408 1628120 5696720 1629904 5693000 1615296 5682424 -1629904 5693000 1663880 5646248 1663776 5646144 1615296 5682424 -1628120 5696720 1629904 5693000 1624104 5692408 1624120 5692440 -1628120 5696720 1663880 5646248 1629904 5693000 1624120 5692440 -1629904 5693000 1615296 5682424 1624104 5692408 1624120 5692440 -1628120 5696720 1629904 5693000 1624120 5692440 1626864 5696192 -1628120 5696720 1663880 5646248 1629904 5693000 1626864 5696192 -1624120 5692440 1626688 5696104 1626864 5696192 1629904 5693000 -1624120 5692440 1624280 5693272 1626688 5696104 1629904 5693000 -1624120 5692440 1624120 5692536 1624280 5693272 1629904 5693000 -1626688 5696104 1626864 5696192 1629904 5693000 1624280 5693272 -1626864 5696192 1628120 5696720 1629904 5693000 1626688 5696104 -1629904 5693000 1624104 5692408 1624120 5692440 1624280 5693272 -1624280 5693272 1626600 5696072 1626688 5696104 1629904 5693000 -1624280 5693272 1626552 5696056 1626600 5696072 1629904 5693000 -1624280 5693272 1626552 5696056 1629904 5693000 1624120 5692440 -1626688 5696104 1626864 5696192 1629904 5693000 1626600 5696072 -1626600 5696072 1626688 5696104 1629904 5693000 1626552 5696056 -1628120 5696720 1629904 5693000 1626864 5696192 1628088 5696712 -1628120 5696720 1663880 5646248 1629904 5693000 1628088 5696712 -1629904 5693000 1626688 5696104 1626864 5696192 1628088 5696712 -1626864 5696192 1628048 5696704 1628088 5696712 1629904 5693000 -1626864 5696192 1628048 5696704 1629904 5693000 1626688 5696104 -1628088 5696712 1628120 5696720 1629904 5693000 1628048 5696704 -1626688 5696104 1626776 5696152 1626864 5696192 1629904 5693000 -1663880 5646248 1629904 5693000 1628120 5696720 1630512 5699152 -1663880 5646248 1663776 5646144 1629904 5693000 1630512 5699152 -1629904 5693000 1628088 5696712 1628120 5696720 1630512 5699152 -1663880 5646248 1629904 5693000 1630512 5699152 1663944 5646256 -1663880 5646248 1663776 5646144 1629904 5693000 1663944 5646256 -1630512 5699152 1630528 5699184 1663944 5646256 1629904 5693000 -1663944 5646256 1663880 5646248 1629904 5693000 1630528 5699184 -1630528 5699184 1630536 5699272 1663944 5646256 1629904 5693000 -1629904 5693000 1628120 5696720 1630512 5699152 1630528 5699184 -1626864 5696192 1626896 5696216 1628048 5696704 1629904 5693000 -1626864 5696192 1626896 5696216 1629904 5693000 1626688 5696104 -1626896 5696216 1626984 5696288 1628048 5696704 1629904 5693000 -1628048 5696704 1628088 5696712 1629904 5693000 1626896 5696216 -1624280 5693272 1626520 5696056 1626552 5696056 1629904 5693000 -1628120 5696720 1628152 5696760 1630512 5699152 1629904 5693000 -1628120 5696720 1628152 5696760 1629904 5693000 1628088 5696712 -1630512 5699152 1630528 5699184 1629904 5693000 1628152 5696760 -1628152 5696760 1629976 5698712 1630512 5699152 1629904 5693000 -1630512 5699152 1630528 5699184 1629904 5693000 1629976 5698712 -1628152 5696760 1629928 5698672 1629976 5698712 1629904 5693000 -1628152 5696760 1628184 5696808 1629928 5698672 1629904 5693000 -1628184 5696808 1629856 5698632 1629928 5698672 1629904 5693000 -1629856 5698632 1629888 5698656 1629928 5698672 1629904 5693000 -1628184 5696808 1628224 5696896 1629856 5698632 1629904 5693000 -1628224 5696896 1628304 5697064 1629856 5698632 1629904 5693000 -1628304 5697064 1628376 5697224 1629856 5698632 1629904 5693000 -1628224 5696896 1628272 5697000 1628304 5697064 1629904 5693000 -1628304 5697064 1629856 5698632 1629904 5693000 1628272 5697000 -1628224 5696896 1628272 5697000 1629904 5693000 1628184 5696808 -1629856 5698632 1629928 5698672 1629904 5693000 1628304 5697064 -1628184 5696808 1628224 5696896 1629904 5693000 1628152 5696760 -1629928 5698672 1629976 5698712 1629904 5693000 1629856 5698632 -1629976 5698712 1630016 5698752 1630512 5699152 1629904 5693000 -1629976 5698712 1630512 5699152 1629904 5693000 1629928 5698672 -1628152 5696760 1628184 5696808 1629904 5693000 1628120 5696720 -1615296 5682424 1629856 5692928 1663776 5646144 1657088 5639464 -1629904 5693000 1629856 5692928 1615296 5682424 1624104 5692408 -1615296 5682424 1615296 5682480 1624104 5692408 1629856 5692928 -1629904 5693000 1663776 5646144 1629856 5692928 1624104 5692408 -1629904 5693000 1629856 5692928 1624104 5692408 1624120 5692440 -1629904 5693000 1663776 5646144 1629856 5692928 1624120 5692440 -1629856 5692928 1663776 5646144 1615296 5682424 1624104 5692408 -1629856 5692928 1615296 5682424 1624104 5692408 1624120 5692440 -1663776 5646144 1629856 5692928 1629904 5693000 1663880 5646248 -1629904 5693000 1663944 5646256 1663880 5646248 1629856 5692928 -1629856 5692928 1624120 5692440 1629904 5693000 1663880 5646248 -1663776 5646144 1615296 5682424 1629856 5692928 1663880 5646248 -1629904 5693000 1629856 5692928 1624120 5692440 1624280 5693272 -1629904 5693000 1663880 5646248 1629856 5692928 1624280 5693272 -1629856 5692928 1624104 5692408 1624120 5692440 1624280 5693272 -1624120 5692440 1624120 5692536 1624280 5693272 1629856 5692928 -1629904 5693000 1629856 5692928 1624280 5693272 1626552 5696056 -1629904 5693000 1629856 5692928 1626552 5696056 1626600 5696072 -1629904 5693000 1663880 5646248 1629856 5692928 1626600 5696072 -1629856 5692928 1624280 5693272 1626552 5696056 1626600 5696072 -1629856 5692928 1624120 5692440 1624280 5693272 1626552 5696056 -1629904 5693000 1629856 5692928 1626600 5696072 1626688 5696104 -1629856 5692928 1626552 5696056 1626600 5696072 1626688 5696104 -1629904 5693000 1663880 5646248 1629856 5692928 1626688 5696104 -1629904 5693000 1629856 5692928 1626688 5696104 1626864 5696192 -1629904 5693000 1663880 5646248 1629856 5692928 1626864 5696192 -1629904 5693000 1629856 5692928 1626864 5696192 1626896 5696216 -1629856 5692928 1626600 5696072 1626688 5696104 1626864 5696192 -1626688 5696104 1626776 5696152 1626864 5696192 1629856 5692928 -1624280 5693272 1626520 5696056 1626552 5696056 1629856 5692928 -1615296 5682424 1629816 5692792 1663776 5646144 1657088 5639464 -1629856 5692928 1629816 5692792 1615296 5682424 1624104 5692408 -1615296 5682424 1615296 5682480 1624104 5692408 1629816 5692792 -1629856 5692928 1663776 5646144 1629816 5692792 1624104 5692408 -1663776 5646144 1629816 5692792 1629856 5692928 1663880 5646248 -1629816 5692792 1624104 5692408 1629856 5692928 1663880 5646248 -1629816 5692792 1663776 5646144 1615296 5682424 1624104 5692408 -1663776 5646144 1615296 5682424 1629816 5692792 1663880 5646248 -1629856 5692928 1629816 5692792 1624104 5692408 1624120 5692440 -1629856 5692928 1629816 5692792 1624120 5692440 1624280 5693272 -1629816 5692792 1615296 5682424 1624104 5692408 1624120 5692440 -1629856 5692928 1663880 5646248 1629816 5692792 1624280 5693272 -1624120 5692440 1624120 5692536 1624280 5693272 1629816 5692792 -1629816 5692792 1624104 5692408 1624120 5692440 1624280 5693272 -1629856 5692928 1629904 5693000 1663880 5646248 1629816 5692792 -1629904 5693000 1663944 5646256 1663880 5646248 1629816 5692792 -1629856 5692928 1629904 5693000 1629816 5692792 1624280 5693272 -1663880 5646248 1663776 5646144 1629816 5692792 1663944 5646256 -1629904 5693000 1663944 5646256 1629816 5692792 1629856 5692928 -1629856 5692928 1629816 5692792 1624280 5693272 1626552 5696056 -1629816 5692792 1624120 5692440 1624280 5693272 1626552 5696056 -1629856 5692928 1629904 5693000 1629816 5692792 1626552 5696056 -1629856 5692928 1629816 5692792 1626552 5696056 1626600 5696072 -1629904 5693000 1630528 5699184 1663944 5646256 1629816 5692792 -1624280 5693272 1626520 5696056 1626552 5696056 1629816 5692792 -1615296 5682424 1629840 5692680 1663776 5646144 1657088 5639464 -1615296 5682424 1629840 5692680 1657088 5639464 1615256 5682392 -1629816 5692792 1629840 5692680 1615296 5682424 1624104 5692408 -1615296 5682424 1615296 5682480 1624104 5692408 1629840 5692680 -1629816 5692792 1629840 5692680 1624104 5692408 1624120 5692440 -1629840 5692680 1615296 5682424 1624104 5692408 1624120 5692440 -1629816 5692792 1663776 5646144 1629840 5692680 1624120 5692440 -1663776 5646144 1629840 5692680 1629816 5692792 1663880 5646248 -1629816 5692792 1663944 5646256 1663880 5646248 1629840 5692680 -1629816 5692792 1629904 5693000 1663944 5646256 1629840 5692680 -1663944 5646256 1663880 5646248 1629840 5692680 1629904 5693000 -1629840 5692680 1624120 5692440 1629816 5692792 1629904 5693000 -1663880 5646248 1663776 5646144 1629840 5692680 1663944 5646256 -1615296 5682424 1624104 5692408 1629840 5692680 1657088 5639464 -1629840 5692680 1663880 5646248 1663776 5646144 1657088 5639464 -1629816 5692792 1629840 5692680 1624120 5692440 1624280 5693272 -1629816 5692792 1629856 5692928 1629904 5693000 1629840 5692680 -1629904 5693000 1663944 5646256 1629840 5692680 1629856 5692928 -1629816 5692792 1629856 5692928 1629840 5692680 1624120 5692440 -1629904 5693000 1630528 5699184 1663944 5646256 1629840 5692680 -1663776 5646144 1663688 5645984 1657088 5639464 1629840 5692680 -1629840 5692680 1629944 5692528 1657088 5639464 1615296 5682424 -1657088 5639464 1615256 5682392 1615296 5682424 1629944 5692528 -1629840 5692680 1629944 5692528 1615296 5682424 1624104 5692408 -1629944 5692528 1657088 5639464 1615296 5682424 1624104 5692408 -1615296 5682424 1615296 5682480 1624104 5692408 1629944 5692528 -1629840 5692680 1629944 5692528 1624104 5692408 1624120 5692440 -1629840 5692680 1663776 5646144 1629944 5692528 1624104 5692408 -1663776 5646144 1629944 5692528 1629840 5692680 1663880 5646248 -1629840 5692680 1663944 5646256 1663880 5646248 1629944 5692528 -1629840 5692680 1629904 5693000 1663944 5646256 1629944 5692528 -1629840 5692680 1629856 5692928 1629904 5693000 1629944 5692528 -1663944 5646256 1663880 5646248 1629944 5692528 1629904 5693000 -1629944 5692528 1624104 5692408 1629840 5692680 1629904 5693000 -1663880 5646248 1663776 5646144 1629944 5692528 1663944 5646256 -1629944 5692528 1663776 5646144 1657088 5639464 1615296 5682424 -1663776 5646144 1657088 5639464 1629944 5692528 1663880 5646248 -1629904 5693000 1630528 5699184 1663944 5646256 1629944 5692528 -1629904 5693000 1630528 5699184 1629944 5692528 1629840 5692680 -1663944 5646256 1663880 5646248 1629944 5692528 1630528 5699184 -1629904 5693000 1630512 5699152 1630528 5699184 1629944 5692528 -1630528 5699184 1630536 5699272 1663944 5646256 1629944 5692528 -1657088 5639464 1629944 5692528 1663776 5646144 1663688 5645984 -1629944 5692528 1630136 5692352 1663944 5646256 1663880 5646248 -1629944 5692528 1630136 5692352 1663880 5646248 1663776 5646144 -1630136 5692352 1663944 5646256 1663880 5646248 1663776 5646144 -1629944 5692528 1630528 5699184 1630136 5692352 1663776 5646144 -1629944 5692528 1630136 5692352 1663776 5646144 1657088 5639464 -1630136 5692352 1663880 5646248 1663776 5646144 1657088 5639464 -1629944 5692528 1630136 5692352 1657088 5639464 1615296 5682424 -1657088 5639464 1615256 5682392 1615296 5682424 1630136 5692352 -1629944 5692528 1630136 5692352 1615296 5682424 1624104 5692408 -1615296 5682424 1615296 5682480 1624104 5692408 1630136 5692352 -1629944 5692528 1630136 5692352 1624104 5692408 1629840 5692680 -1630136 5692352 1657088 5639464 1615296 5682424 1624104 5692408 -1629944 5692528 1630528 5699184 1630136 5692352 1624104 5692408 -1630136 5692352 1663776 5646144 1657088 5639464 1615296 5682424 -1630136 5692352 1630528 5699184 1663944 5646256 1663880 5646248 -1630528 5699184 1630136 5692352 1629944 5692528 1629904 5693000 -1629944 5692528 1629840 5692680 1629904 5693000 1630136 5692352 -1630136 5692352 1624104 5692408 1629944 5692528 1629904 5693000 -1630528 5699184 1663944 5646256 1630136 5692352 1629904 5693000 -1630528 5699184 1630136 5692352 1629904 5693000 1630512 5699152 -1630528 5699184 1663944 5646256 1630136 5692352 1630512 5699152 -1630136 5692352 1629944 5692528 1629904 5693000 1630512 5699152 -1663944 5646256 1630136 5692352 1630528 5699184 1630536 5699272 -1663776 5646144 1663688 5645984 1657088 5639464 1630136 5692352 -1629904 5693000 1629976 5698712 1630512 5699152 1630136 5692352 -1630136 5692352 1630232 5692312 1663944 5646256 1663880 5646248 -1630136 5692352 1630232 5692312 1663880 5646248 1663776 5646144 -1630136 5692352 1630232 5692312 1663776 5646144 1657088 5639464 -1630232 5692312 1663880 5646248 1663776 5646144 1657088 5639464 -1630136 5692352 1630232 5692312 1657088 5639464 1615296 5682424 -1657088 5639464 1615256 5682392 1615296 5682424 1630232 5692312 -1630232 5692312 1663776 5646144 1657088 5639464 1615296 5682424 -1630136 5692352 1630232 5692312 1615296 5682424 1624104 5692408 -1630136 5692352 1630232 5692312 1624104 5692408 1629944 5692528 -1615296 5682424 1615296 5682480 1624104 5692408 1630232 5692312 -1630232 5692312 1657088 5639464 1615296 5682424 1624104 5692408 -1630232 5692312 1663944 5646256 1663880 5646248 1663776 5646144 -1630136 5692352 1630528 5699184 1630232 5692312 1624104 5692408 -1630528 5699184 1630232 5692312 1630136 5692352 1630512 5699152 -1630232 5692312 1624104 5692408 1630136 5692352 1630512 5699152 -1630232 5692312 1630528 5699184 1663944 5646256 1663880 5646248 -1630528 5699184 1663944 5646256 1630232 5692312 1630512 5699152 -1630136 5692352 1629904 5693000 1630512 5699152 1630232 5692312 -1630136 5692352 1629904 5693000 1630232 5692312 1624104 5692408 -1630512 5699152 1630528 5699184 1630232 5692312 1629904 5693000 -1630136 5692352 1629944 5692528 1629904 5693000 1630232 5692312 -1663944 5646256 1630232 5692312 1630528 5699184 1630536 5699272 -1663776 5646144 1663688 5645984 1657088 5639464 1630232 5692312 -1629904 5693000 1629976 5698712 1630512 5699152 1630232 5692312 -1630232 5692312 1630448 5692312 1663944 5646256 1663880 5646248 -1630232 5692312 1630448 5692312 1663880 5646248 1663776 5646144 -1630232 5692312 1630448 5692312 1663776 5646144 1657088 5639464 -1630232 5692312 1630448 5692312 1657088 5639464 1615296 5682424 -1657088 5639464 1615256 5682392 1615296 5682424 1630448 5692312 -1630448 5692312 1663776 5646144 1657088 5639464 1615296 5682424 -1630232 5692312 1630448 5692312 1615296 5682424 1624104 5692408 -1630448 5692312 1663880 5646248 1663776 5646144 1657088 5639464 -1630448 5692312 1663944 5646256 1663880 5646248 1663776 5646144 -1630232 5692312 1630528 5699184 1630448 5692312 1615296 5682424 -1630528 5699184 1630448 5692312 1630232 5692312 1630512 5699152 -1630232 5692312 1629904 5693000 1630512 5699152 1630448 5692312 -1630448 5692312 1615296 5682424 1630232 5692312 1629904 5693000 -1630512 5699152 1630528 5699184 1630448 5692312 1629904 5693000 -1630448 5692312 1630528 5699184 1663944 5646256 1663880 5646248 -1630528 5699184 1663944 5646256 1630448 5692312 1630512 5699152 -1630232 5692312 1630136 5692352 1629904 5693000 1630448 5692312 -1629904 5693000 1630512 5699152 1630448 5692312 1630136 5692352 -1630232 5692312 1630136 5692352 1630448 5692312 1615296 5682424 -1630136 5692352 1629944 5692528 1629904 5693000 1630448 5692312 -1629944 5692528 1629840 5692680 1629904 5693000 1630448 5692312 -1629904 5693000 1630512 5699152 1630448 5692312 1629944 5692528 -1630136 5692352 1629944 5692528 1630448 5692312 1630232 5692312 -1663944 5646256 1630448 5692312 1630528 5699184 1630536 5699272 -1663944 5646256 1663880 5646248 1630448 5692312 1630536 5699272 -1630448 5692312 1630512 5699152 1630528 5699184 1630536 5699272 -1663944 5646256 1630448 5692312 1630536 5699272 1743800 5687320 -1663776 5646144 1663688 5645984 1657088 5639464 1630448 5692312 -1629904 5693000 1629976 5698712 1630512 5699152 1630448 5692312 -1630448 5692312 1630608 5692360 1663944 5646256 1663880 5646248 -1630448 5692312 1630608 5692360 1663880 5646248 1663776 5646144 -1630448 5692312 1630608 5692360 1663776 5646144 1657088 5639464 -1630448 5692312 1630608 5692360 1657088 5639464 1615296 5682424 -1630608 5692360 1663880 5646248 1663776 5646144 1657088 5639464 -1630608 5692360 1663944 5646256 1663880 5646248 1663776 5646144 -1630448 5692312 1630536 5699272 1630608 5692360 1657088 5639464 -1630608 5692360 1630536 5699272 1663944 5646256 1663880 5646248 -1630536 5699272 1630608 5692360 1630448 5692312 1630528 5699184 -1630608 5692360 1657088 5639464 1630448 5692312 1630528 5699184 -1630448 5692312 1630512 5699152 1630528 5699184 1630608 5692360 -1630448 5692312 1629904 5693000 1630512 5699152 1630608 5692360 -1630448 5692312 1629944 5692528 1629904 5693000 1630608 5692360 -1630448 5692312 1629904 5693000 1630608 5692360 1657088 5639464 -1630512 5699152 1630528 5699184 1630608 5692360 1629904 5693000 -1630536 5699272 1663944 5646256 1630608 5692360 1630528 5699184 -1630528 5699184 1630536 5699272 1630608 5692360 1630512 5699152 -1663944 5646256 1630608 5692360 1630536 5699272 1743800 5687320 -1663776 5646144 1663688 5645984 1657088 5639464 1630608 5692360 -1629904 5693000 1629976 5698712 1630512 5699152 1630608 5692360 -1630608 5692360 1630704 5692448 1663944 5646256 1663880 5646248 -1630608 5692360 1630704 5692448 1663880 5646248 1663776 5646144 -1630608 5692360 1630536 5699272 1630704 5692448 1663880 5646248 -1630536 5699272 1630704 5692448 1630608 5692360 1630528 5699184 -1630704 5692448 1663880 5646248 1630608 5692360 1630528 5699184 -1630704 5692448 1630536 5699272 1663944 5646256 1663880 5646248 -1630536 5699272 1663944 5646256 1630704 5692448 1630528 5699184 -1630608 5692360 1630512 5699152 1630528 5699184 1630704 5692448 -1630608 5692360 1629904 5693000 1630512 5699152 1630704 5692448 -1630608 5692360 1630448 5692312 1629904 5693000 1630704 5692448 -1630448 5692312 1629944 5692528 1629904 5693000 1630704 5692448 -1629944 5692528 1629840 5692680 1629904 5693000 1630704 5692448 -1630448 5692312 1629944 5692528 1630704 5692448 1630608 5692360 -1629904 5693000 1630512 5699152 1630704 5692448 1629944 5692528 -1630608 5692360 1630448 5692312 1630704 5692448 1663880 5646248 -1630528 5699184 1630536 5699272 1630704 5692448 1630512 5699152 -1630448 5692312 1630136 5692352 1629944 5692528 1630704 5692448 -1630512 5699152 1630528 5699184 1630704 5692448 1629904 5693000 -1663944 5646256 1630704 5692448 1630536 5699272 1743800 5687320 -1629904 5693000 1629976 5698712 1630512 5699152 1630704 5692448 -1629904 5693000 1629976 5698712 1630704 5692448 1629944 5692528 -1630512 5699152 1630528 5699184 1630704 5692448 1629976 5698712 -1629976 5698712 1630016 5698752 1630512 5699152 1630704 5692448 -1629904 5693000 1629928 5698672 1629976 5698712 1630704 5692448 -1630704 5692448 1630800 5692640 1663944 5646256 1663880 5646248 -1630704 5692448 1630800 5692640 1663880 5646248 1630608 5692360 -1630704 5692448 1630536 5699272 1630800 5692640 1663880 5646248 -1630536 5699272 1630800 5692640 1630704 5692448 1630528 5699184 -1630704 5692448 1630512 5699152 1630528 5699184 1630800 5692640 -1630800 5692640 1663880 5646248 1630704 5692448 1630512 5699152 -1630528 5699184 1630536 5699272 1630800 5692640 1630512 5699152 -1630800 5692640 1630536 5699272 1663944 5646256 1663880 5646248 -1630536 5699272 1663944 5646256 1630800 5692640 1630528 5699184 -1630704 5692448 1629976 5698712 1630512 5699152 1630800 5692640 -1630512 5699152 1630528 5699184 1630800 5692640 1629976 5698712 -1630704 5692448 1629976 5698712 1630800 5692640 1663880 5646248 -1663944 5646256 1630800 5692640 1630536 5699272 1743800 5687320 -1630704 5692448 1629904 5693000 1629976 5698712 1630800 5692640 -1630704 5692448 1629944 5692528 1629904 5693000 1630800 5692640 -1629944 5692528 1629840 5692680 1629904 5693000 1630800 5692640 -1630704 5692448 1630448 5692312 1629944 5692528 1630800 5692640 -1630704 5692448 1630608 5692360 1630448 5692312 1630800 5692640 -1629944 5692528 1629904 5693000 1630800 5692640 1630448 5692312 -1630704 5692448 1630448 5692312 1630800 5692640 1663880 5646248 -1630448 5692312 1630136 5692352 1629944 5692528 1630800 5692640 -1630448 5692312 1630136 5692352 1630800 5692640 1630704 5692448 -1629944 5692528 1629904 5693000 1630800 5692640 1630136 5692352 -1630448 5692312 1630232 5692312 1630136 5692352 1630800 5692640 -1629976 5698712 1630512 5699152 1630800 5692640 1629904 5693000 -1629904 5693000 1629976 5698712 1630800 5692640 1629944 5692528 -1629976 5698712 1630016 5698752 1630512 5699152 1630800 5692640 -1629904 5693000 1629928 5698672 1629976 5698712 1630800 5692640 -1629976 5698712 1630512 5699152 1630800 5692640 1629928 5698672 -1629904 5693000 1629928 5698672 1630800 5692640 1629944 5692528 -1629904 5693000 1629856 5698632 1629928 5698672 1630800 5692640 -1630800 5692640 1630864 5692824 1663944 5646256 1663880 5646248 -1630536 5699272 1630864 5692824 1630800 5692640 1630528 5699184 -1630800 5692640 1630512 5699152 1630528 5699184 1630864 5692824 -1630800 5692640 1629976 5698712 1630512 5699152 1630864 5692824 -1630512 5699152 1630528 5699184 1630864 5692824 1629976 5698712 -1630864 5692824 1663944 5646256 1630800 5692640 1629976 5698712 -1630528 5699184 1630536 5699272 1630864 5692824 1630512 5699152 -1630536 5699272 1663944 5646256 1630864 5692824 1630528 5699184 -1630800 5692640 1629928 5698672 1629976 5698712 1630864 5692824 -1629976 5698712 1630512 5699152 1630864 5692824 1629928 5698672 -1630800 5692640 1629928 5698672 1630864 5692824 1663944 5646256 -1663944 5646256 1630864 5692824 1630536 5699272 1743800 5687320 -1663944 5646256 1630800 5692640 1630864 5692824 1743800 5687320 -1630864 5692824 1630528 5699184 1630536 5699272 1743800 5687320 -1663944 5646256 1630864 5692824 1743800 5687320 1664040 5646192 -1630536 5699272 1631912 5713400 1743800 5687320 1630864 5692824 -1629976 5698712 1630016 5698752 1630512 5699152 1630864 5692824 -1630800 5692640 1629904 5693000 1629928 5698672 1630864 5692824 -1630800 5692640 1629904 5693000 1630864 5692824 1663944 5646256 -1629928 5698672 1629976 5698712 1630864 5692824 1629904 5693000 -1630800 5692640 1629944 5692528 1629904 5693000 1630864 5692824 -1629904 5693000 1629856 5698632 1629928 5698672 1630864 5692824 -1629928 5698672 1629976 5698712 1630864 5692824 1629856 5698632 -1629856 5698632 1629888 5698656 1629928 5698672 1630864 5692824 -1629904 5693000 1628304 5697064 1629856 5698632 1630864 5692824 -1628304 5697064 1628376 5697224 1629856 5698632 1630864 5692824 -1629904 5693000 1628272 5697000 1628304 5697064 1630864 5692824 -1629856 5698632 1629928 5698672 1630864 5692824 1628304 5697064 -1629904 5693000 1628304 5697064 1630864 5692824 1630800 5692640 -1630536 5699272 1630864 5692928 1630864 5692824 1630528 5699184 -1630864 5692824 1630512 5699152 1630528 5699184 1630864 5692928 -1630864 5692824 1629976 5698712 1630512 5699152 1630864 5692928 -1630864 5692824 1629928 5698672 1629976 5698712 1630864 5692928 -1629976 5698712 1630512 5699152 1630864 5692928 1629928 5698672 -1630512 5699152 1630528 5699184 1630864 5692928 1629976 5698712 -1630864 5692928 1743800 5687320 1630864 5692824 1629928 5698672 -1630528 5699184 1630536 5699272 1630864 5692928 1630512 5699152 -1630536 5699272 1743800 5687320 1630864 5692928 1630528 5699184 -1630864 5692824 1629856 5698632 1629928 5698672 1630864 5692928 -1629928 5698672 1629976 5698712 1630864 5692928 1629856 5698632 -1630864 5692824 1629856 5698632 1630864 5692928 1743800 5687320 -1630864 5692824 1630864 5692928 1743800 5687320 1663944 5646256 -1630864 5692824 1630864 5692928 1663944 5646256 1630800 5692640 -1630864 5692824 1629856 5698632 1630864 5692928 1663944 5646256 -1630864 5692928 1630536 5699272 1743800 5687320 1663944 5646256 -1743800 5687320 1664040 5646192 1663944 5646256 1630864 5692928 -1743800 5687320 1630864 5692928 1630536 5699272 1631912 5713400 -1629856 5698632 1629888 5698656 1629928 5698672 1630864 5692928 -1630864 5692824 1628304 5697064 1629856 5698632 1630864 5692928 -1630864 5692824 1628304 5697064 1630864 5692928 1663944 5646256 -1629856 5698632 1629928 5698672 1630864 5692928 1628304 5697064 -1628304 5697064 1628376 5697224 1629856 5698632 1630864 5692928 -1630864 5692824 1629904 5693000 1628304 5697064 1630864 5692928 -1630864 5692824 1629904 5693000 1630864 5692928 1663944 5646256 -1629904 5693000 1628272 5697000 1628304 5697064 1630864 5692928 -1629904 5693000 1628224 5696896 1628272 5697000 1630864 5692928 -1628272 5697000 1628304 5697064 1630864 5692928 1628224 5696896 -1629904 5693000 1628184 5696808 1628224 5696896 1630864 5692928 -1628224 5696896 1628272 5697000 1630864 5692928 1628184 5696808 -1629904 5693000 1628184 5696808 1630864 5692928 1630864 5692824 -1629904 5693000 1628152 5696760 1628184 5696808 1630864 5692928 -1628304 5697064 1629856 5698632 1630864 5692928 1628272 5697000 -1629976 5698712 1630016 5698752 1630512 5699152 1630864 5692928 -1630864 5692824 1630800 5692640 1629904 5693000 1630864 5692928 -1630864 5692824 1630800 5692640 1630864 5692928 1663944 5646256 -1630800 5692640 1629944 5692528 1629904 5693000 1630864 5692928 -1629904 5693000 1628184 5696808 1630864 5692928 1630800 5692640 -1630864 5692928 1630848 5692976 1629856 5698632 1629928 5698672 -1630864 5692928 1630848 5692976 1629928 5698672 1629976 5698712 -1630864 5692928 1630848 5692976 1629976 5698712 1630512 5699152 -1630848 5692976 1629928 5698672 1629976 5698712 1630512 5699152 -1630864 5692928 1630848 5692976 1630512 5699152 1630528 5699184 -1630848 5692976 1629976 5698712 1630512 5699152 1630528 5699184 -1630864 5692928 1630848 5692976 1630528 5699184 1630536 5699272 -1630864 5692928 1628304 5697064 1630848 5692976 1630528 5699184 -1630848 5692976 1628304 5697064 1629856 5698632 1629928 5698672 -1630848 5692976 1629856 5698632 1629928 5698672 1629976 5698712 -1629856 5698632 1629888 5698656 1629928 5698672 1630848 5692976 -1629856 5698632 1630848 5692976 1628304 5697064 1628376 5697224 -1628304 5697064 1630848 5692976 1630864 5692928 1628272 5697000 -1630848 5692976 1630528 5699184 1630864 5692928 1628272 5697000 -1628304 5697064 1629856 5698632 1630848 5692976 1628272 5697000 -1630864 5692928 1628224 5696896 1628272 5697000 1630848 5692976 -1630864 5692928 1628224 5696896 1630848 5692976 1630528 5699184 -1630864 5692928 1628184 5696808 1628224 5696896 1630848 5692976 -1630864 5692928 1628184 5696808 1630848 5692976 1630528 5699184 -1628224 5696896 1628272 5697000 1630848 5692976 1628184 5696808 -1630864 5692928 1629904 5693000 1628184 5696808 1630848 5692976 -1630864 5692928 1629904 5693000 1630848 5692976 1630528 5699184 -1628184 5696808 1628224 5696896 1630848 5692976 1629904 5693000 -1630864 5692928 1630800 5692640 1629904 5693000 1630848 5692976 -1630864 5692928 1630800 5692640 1630848 5692976 1630528 5699184 -1630800 5692640 1629944 5692528 1629904 5693000 1630848 5692976 -1629904 5693000 1628184 5696808 1630848 5692976 1630800 5692640 -1629904 5693000 1628152 5696760 1628184 5696808 1630848 5692976 -1628272 5697000 1628304 5697064 1630848 5692976 1628224 5696896 -1629976 5698712 1630016 5698752 1630512 5699152 1630848 5692976 -1630864 5692928 1630864 5692824 1630800 5692640 1630848 5692976 -1630864 5692928 1630864 5692824 1630848 5692976 1630528 5699184 -1630800 5692640 1629904 5693000 1630848 5692976 1630864 5692824 -1630848 5692976 1630776 5693064 1628184 5696808 1628224 5696896 -1630848 5692976 1629904 5693000 1630776 5693064 1628224 5696896 -1630776 5693064 1629904 5693000 1628184 5696808 1628224 5696896 -1630848 5692976 1630776 5693064 1628224 5696896 1628272 5697000 -1630848 5692976 1629904 5693000 1630776 5693064 1628272 5697000 -1630776 5693064 1628184 5696808 1628224 5696896 1628272 5697000 -1629904 5693000 1630776 5693064 1630848 5692976 1630800 5692640 -1630776 5693064 1628272 5697000 1630848 5692976 1630800 5692640 -1629904 5693000 1628184 5696808 1630776 5693064 1630800 5692640 -1629904 5693000 1630776 5693064 1630800 5692640 1629944 5692528 -1630848 5692976 1630864 5692824 1630800 5692640 1630776 5693064 -1630848 5692976 1630864 5692824 1630776 5693064 1628272 5697000 -1630800 5692640 1629904 5693000 1630776 5693064 1630864 5692824 -1628184 5696808 1630776 5693064 1629904 5693000 1628152 5696760 -1628184 5696808 1628224 5696896 1630776 5693064 1628152 5696760 -1630776 5693064 1630800 5692640 1629904 5693000 1628152 5696760 -1630848 5692976 1630776 5693064 1628272 5697000 1628304 5697064 -1630848 5692976 1630864 5692824 1630776 5693064 1628304 5697064 -1630848 5692976 1630776 5693064 1628304 5697064 1629856 5698632 -1630848 5692976 1630776 5693064 1629856 5698632 1629928 5698672 -1630848 5692976 1630864 5692824 1630776 5693064 1629928 5698672 -1630776 5693064 1628304 5697064 1629856 5698632 1629928 5698672 -1630848 5692976 1630776 5693064 1629928 5698672 1629976 5698712 -1630848 5692976 1630776 5693064 1629976 5698712 1630512 5699152 -1630848 5692976 1630776 5693064 1630512 5699152 1630528 5699184 -1630776 5693064 1629856 5698632 1629928 5698672 1629976 5698712 -1630848 5692976 1630864 5692824 1630776 5693064 1630512 5699152 -1630776 5693064 1629928 5698672 1629976 5698712 1630512 5699152 -1629856 5698632 1629888 5698656 1629928 5698672 1630776 5693064 -1628304 5697064 1628376 5697224 1629856 5698632 1630776 5693064 -1629856 5698632 1629928 5698672 1630776 5693064 1628376 5697224 -1628376 5697224 1628464 5697392 1629856 5698632 1630776 5693064 -1628304 5697064 1628328 5697136 1628376 5697224 1630776 5693064 -1630776 5693064 1628224 5696896 1628272 5697000 1628304 5697064 -1630776 5693064 1628272 5697000 1628304 5697064 1628376 5697224 -1629976 5698712 1630016 5698752 1630512 5699152 1630776 5693064 -1630848 5692976 1630864 5692928 1630864 5692824 1630776 5693064 -1630848 5692976 1630864 5692928 1630776 5693064 1630512 5699152 -1630864 5692824 1630800 5692640 1630776 5693064 1630864 5692928 -1629904 5693000 1628120 5696720 1628152 5696760 1630776 5693064 -1629904 5693000 1630736 5693088 1630776 5693064 1630800 5692640 -1630736 5693088 1628152 5696760 1630776 5693064 1630800 5692640 -1629904 5693000 1628152 5696760 1630736 5693088 1630800 5692640 -1629904 5693000 1630736 5693088 1630800 5692640 1629944 5692528 -1630776 5693064 1630864 5692824 1630800 5692640 1630736 5693088 -1630776 5693064 1630864 5692824 1630736 5693088 1628152 5696760 -1630800 5692640 1629904 5693000 1630736 5693088 1630864 5692824 -1630776 5693064 1630864 5692928 1630864 5692824 1630736 5693088 -1630776 5693064 1630864 5692928 1630736 5693088 1628152 5696760 -1630864 5692824 1630800 5692640 1630736 5693088 1630864 5692928 -1630776 5693064 1630736 5693088 1628152 5696760 1628184 5696808 -1630776 5693064 1630736 5693088 1628184 5696808 1628224 5696896 -1630776 5693064 1630864 5692928 1630736 5693088 1628224 5696896 -1630736 5693088 1629904 5693000 1628152 5696760 1628184 5696808 -1630776 5693064 1630736 5693088 1628224 5696896 1628272 5697000 -1630736 5693088 1628184 5696808 1628224 5696896 1628272 5697000 -1630776 5693064 1630864 5692928 1630736 5693088 1628272 5697000 -1630776 5693064 1630736 5693088 1628272 5697000 1628304 5697064 -1630776 5693064 1630864 5692928 1630736 5693088 1628304 5697064 -1630736 5693088 1628224 5696896 1628272 5697000 1628304 5697064 -1630736 5693088 1628152 5696760 1628184 5696808 1628224 5696896 -1630776 5693064 1630736 5693088 1628304 5697064 1628376 5697224 -1630776 5693064 1630864 5692928 1630736 5693088 1628376 5697224 -1630776 5693064 1630736 5693088 1628376 5697224 1629856 5698632 -1630776 5693064 1630736 5693088 1629856 5698632 1629928 5698672 -1630776 5693064 1630736 5693088 1629928 5698672 1629976 5698712 -1630736 5693088 1629856 5698632 1629928 5698672 1629976 5698712 -1630776 5693064 1630864 5692928 1630736 5693088 1629976 5698712 -1630776 5693064 1630736 5693088 1629976 5698712 1630512 5699152 -1630776 5693064 1630736 5693088 1630512 5699152 1630848 5692976 -1630736 5693088 1629928 5698672 1629976 5698712 1630512 5699152 -1630776 5693064 1630864 5692928 1630736 5693088 1630512 5699152 -1629856 5698632 1629888 5698656 1629928 5698672 1630736 5693088 -1628376 5697224 1628464 5697392 1629856 5698632 1630736 5693088 -1630736 5693088 1628464 5697392 1629856 5698632 1629928 5698672 -1628304 5697064 1628328 5697136 1628376 5697224 1630736 5693088 -1628376 5697224 1628416 5697304 1628464 5697392 1630736 5693088 -1628464 5697392 1628488 5697448 1629856 5698632 1630736 5693088 -1630736 5693088 1628272 5697000 1628304 5697064 1628376 5697224 -1630736 5693088 1628304 5697064 1628376 5697224 1628464 5697392 -1629976 5698712 1630016 5698752 1630512 5699152 1630736 5693088 -1630776 5693064 1630848 5692976 1630864 5692928 1630736 5693088 -1628152 5696760 1630736 5693088 1629904 5693000 1628120 5696720 -1630736 5693088 1630432 5693120 1628152 5696760 1628184 5696808 -1630736 5693088 1629904 5693000 1630432 5693120 1628184 5696808 -1629904 5693000 1630432 5693120 1630736 5693088 1630800 5692640 -1630736 5693088 1630864 5692824 1630800 5692640 1630432 5693120 -1630432 5693120 1628184 5696808 1630736 5693088 1630864 5692824 -1630800 5692640 1629904 5693000 1630432 5693120 1630864 5692824 -1630432 5693120 1629904 5693000 1628152 5696760 1628184 5696808 -1629904 5693000 1628152 5696760 1630432 5693120 1630800 5692640 -1629904 5693000 1630432 5693120 1630800 5692640 1629944 5692528 -1629904 5693000 1630432 5693120 1629944 5692528 1629840 5692680 -1630800 5692640 1630136 5692352 1629944 5692528 1630432 5693120 -1630432 5693120 1630864 5692824 1630800 5692640 1630136 5692352 -1629904 5693000 1628152 5696760 1630432 5693120 1629944 5692528 -1630800 5692640 1630448 5692312 1630136 5692352 1630432 5693120 -1630800 5692640 1630704 5692448 1630448 5692312 1630432 5693120 -1630704 5692448 1630608 5692360 1630448 5692312 1630432 5693120 -1630136 5692352 1629944 5692528 1630432 5693120 1630448 5692312 -1630800 5692640 1630704 5692448 1630432 5693120 1630864 5692824 -1630448 5692312 1630136 5692352 1630432 5693120 1630704 5692448 -1630448 5692312 1630232 5692312 1630136 5692352 1630432 5693120 -1629944 5692528 1629904 5693000 1630432 5693120 1630136 5692352 -1630736 5693088 1630864 5692928 1630864 5692824 1630432 5693120 -1630736 5693088 1630432 5693120 1628184 5696808 1628224 5696896 -1630736 5693088 1630432 5693120 1628224 5696896 1628272 5697000 -1630432 5693120 1628152 5696760 1628184 5696808 1628224 5696896 -1630736 5693088 1630864 5692824 1630432 5693120 1628272 5697000 -1630736 5693088 1630432 5693120 1628272 5697000 1628304 5697064 -1630432 5693120 1628224 5696896 1628272 5697000 1628304 5697064 -1630736 5693088 1630864 5692824 1630432 5693120 1628304 5697064 -1630736 5693088 1630432 5693120 1628304 5697064 1628376 5697224 -1630432 5693120 1628184 5696808 1628224 5696896 1628272 5697000 -1628152 5696760 1630432 5693120 1629904 5693000 1628120 5696720 -1629904 5693000 1628088 5696712 1628120 5696720 1630432 5693120 -1628152 5696760 1628184 5696808 1630432 5693120 1628120 5696720 -1630432 5693120 1629944 5692528 1629904 5693000 1628120 5696720 -1628120 5696720 1630328 5693152 1629904 5693000 1628088 5696712 -1629904 5693000 1630328 5693152 1630432 5693120 1629944 5692528 -1629904 5693000 1630328 5693152 1629944 5692528 1629840 5692680 -1630328 5693152 1628120 5696720 1630432 5693120 1629944 5692528 -1629904 5693000 1628120 5696720 1630328 5693152 1629944 5692528 -1630432 5693120 1630136 5692352 1629944 5692528 1630328 5693152 -1630432 5693120 1630328 5693152 1628120 5696720 1628152 5696760 -1630432 5693120 1630328 5693152 1628152 5696760 1628184 5696808 -1630432 5693120 1630328 5693152 1628184 5696808 1628224 5696896 -1630328 5693152 1628152 5696760 1628184 5696808 1628224 5696896 -1630432 5693120 1629944 5692528 1630328 5693152 1628224 5696896 -1630328 5693152 1629904 5693000 1628120 5696720 1628152 5696760 -1630432 5693120 1630328 5693152 1628224 5696896 1628272 5697000 -1630432 5693120 1630328 5693152 1628272 5697000 1628304 5697064 -1630328 5693152 1628184 5696808 1628224 5696896 1628272 5697000 -1630432 5693120 1629944 5692528 1630328 5693152 1628304 5697064 -1630432 5693120 1630328 5693152 1628304 5697064 1630736 5693088 -1630328 5693152 1628272 5697000 1628304 5697064 1630736 5693088 -1630432 5693120 1629944 5692528 1630328 5693152 1630736 5693088 -1628304 5697064 1628376 5697224 1630736 5693088 1630328 5693152 -1628304 5697064 1628376 5697224 1630328 5693152 1628272 5697000 -1630736 5693088 1630432 5693120 1630328 5693152 1628376 5697224 -1628304 5697064 1628328 5697136 1628376 5697224 1630328 5693152 -1630328 5693152 1628224 5696896 1628272 5697000 1628304 5697064 -1628376 5697224 1628464 5697392 1630736 5693088 1630328 5693152 -1628464 5697392 1629856 5698632 1630736 5693088 1630328 5693152 -1630736 5693088 1630432 5693120 1630328 5693152 1628464 5697392 -1628376 5697224 1628416 5697304 1628464 5697392 1630328 5693152 -1628376 5697224 1628464 5697392 1630328 5693152 1628304 5697064 -1630328 5693152 1628120 5696720 1628152 5696760 1628184 5696808 -1628120 5696720 1630280 5693192 1629904 5693000 1628088 5696712 -1630328 5693152 1630280 5693192 1628120 5696720 1628152 5696760 -1630328 5693152 1629904 5693000 1630280 5693192 1628152 5696760 -1629904 5693000 1630280 5693192 1630328 5693152 1629944 5692528 -1630280 5693192 1629904 5693000 1628120 5696720 1628152 5696760 -1630328 5693152 1630280 5693192 1628152 5696760 1628184 5696808 -1630328 5693152 1630280 5693192 1628184 5696808 1628224 5696896 -1630328 5693152 1630280 5693192 1628224 5696896 1628272 5697000 -1630280 5693192 1628184 5696808 1628224 5696896 1628272 5697000 -1630280 5693192 1628120 5696720 1628152 5696760 1628184 5696808 -1630328 5693152 1629904 5693000 1630280 5693192 1628272 5697000 -1630328 5693152 1630280 5693192 1628272 5697000 1628304 5697064 -1630328 5693152 1630280 5693192 1628304 5697064 1628376 5697224 -1630280 5693192 1628224 5696896 1628272 5697000 1628304 5697064 -1630328 5693152 1629904 5693000 1630280 5693192 1628376 5697224 -1628304 5697064 1628328 5697136 1628376 5697224 1630280 5693192 -1630328 5693152 1630280 5693192 1628376 5697224 1628464 5697392 -1630280 5693192 1628304 5697064 1628376 5697224 1628464 5697392 -1630328 5693152 1629904 5693000 1630280 5693192 1628464 5697392 -1628376 5697224 1628416 5697304 1628464 5697392 1630280 5693192 -1630280 5693192 1628272 5697000 1628304 5697064 1628376 5697224 -1630328 5693152 1630280 5693192 1628464 5697392 1630736 5693088 -1630328 5693152 1629904 5693000 1630280 5693192 1630736 5693088 -1628464 5697392 1629856 5698632 1630736 5693088 1630280 5693192 -1629856 5698632 1629928 5698672 1630736 5693088 1630280 5693192 -1630328 5693152 1630280 5693192 1630736 5693088 1630432 5693120 -1630328 5693152 1629904 5693000 1630280 5693192 1630432 5693120 -1628464 5697392 1628488 5697448 1629856 5698632 1630280 5693192 -1630280 5693192 1628376 5697224 1628464 5697392 1629856 5698632 -1630736 5693088 1630432 5693120 1630280 5693192 1629856 5698632 -1630280 5693192 1628152 5696760 1628184 5696808 1628224 5696896 -1630280 5693192 1630264 5693248 1629856 5698632 1630736 5693088 -1630280 5693192 1628464 5697392 1630264 5693248 1630736 5693088 -1630264 5693248 1628464 5697392 1629856 5698632 1630736 5693088 -1629856 5698632 1629928 5698672 1630736 5693088 1630264 5693248 -1629928 5698672 1629976 5698712 1630736 5693088 1630264 5693248 -1629856 5698632 1629928 5698672 1630264 5693248 1628464 5697392 -1629856 5698632 1629888 5698656 1629928 5698672 1630264 5693248 -1630736 5693088 1630280 5693192 1630264 5693248 1629928 5698672 -1629856 5698632 1630264 5693248 1628464 5697392 1628488 5697448 -1628464 5697392 1630264 5693248 1630280 5693192 1628376 5697224 -1630280 5693192 1628304 5697064 1628376 5697224 1630264 5693248 -1630264 5693248 1630736 5693088 1630280 5693192 1628304 5697064 -1628464 5697392 1629856 5698632 1630264 5693248 1628376 5697224 -1628304 5697064 1628328 5697136 1628376 5697224 1630264 5693248 -1628464 5697392 1630264 5693248 1628376 5697224 1628416 5697304 -1628376 5697224 1628464 5697392 1630264 5693248 1628304 5697064 -1630280 5693192 1628272 5697000 1628304 5697064 1630264 5693248 -1628304 5697064 1628376 5697224 1630264 5693248 1628272 5697000 -1630280 5693192 1628224 5696896 1628272 5697000 1630264 5693248 -1630280 5693192 1628184 5696808 1628224 5696896 1630264 5693248 -1628224 5696896 1628272 5697000 1630264 5693248 1628184 5696808 -1630280 5693192 1628184 5696808 1630264 5693248 1630736 5693088 -1628272 5697000 1628304 5697064 1630264 5693248 1628224 5696896 -1630280 5693192 1630264 5693248 1630736 5693088 1630432 5693120 -1630280 5693192 1628184 5696808 1630264 5693248 1630432 5693120 -1630264 5693248 1629928 5698672 1630736 5693088 1630432 5693120 -1630280 5693192 1630264 5693248 1630432 5693120 1630328 5693152 -1630280 5693192 1628184 5696808 1630264 5693248 1630328 5693152 -1630264 5693248 1630736 5693088 1630432 5693120 1630328 5693152 -1630280 5693192 1628152 5696760 1628184 5696808 1630264 5693248 -1628184 5696808 1628224 5696896 1630264 5693248 1628152 5696760 -1630280 5693192 1628120 5696720 1628152 5696760 1630264 5693248 -1630280 5693192 1629904 5693000 1628120 5696720 1630264 5693248 -1629904 5693000 1628088 5696712 1628120 5696720 1630264 5693248 -1628120 5696720 1628152 5696760 1630264 5693248 1629904 5693000 -1630280 5693192 1629904 5693000 1630264 5693248 1630328 5693152 -1630280 5693192 1630328 5693152 1629904 5693000 1630264 5693248 -1628152 5696760 1628184 5696808 1630264 5693248 1628120 5696720 -1628120 5696720 1630192 5693264 1629904 5693000 1628088 5696712 -1630264 5693248 1630192 5693264 1628120 5696720 1628152 5696760 -1629904 5693000 1630192 5693264 1630264 5693248 1630280 5693192 -1629904 5693000 1630192 5693264 1630280 5693192 1630328 5693152 -1630264 5693248 1630280 5693192 1630192 5693264 1628152 5696760 -1630192 5693264 1629904 5693000 1628120 5696720 1628152 5696760 -1629904 5693000 1628120 5696720 1630192 5693264 1630280 5693192 -1630264 5693248 1630192 5693264 1628152 5696760 1628184 5696808 -1630264 5693248 1630192 5693264 1628184 5696808 1628224 5696896 -1630264 5693248 1630192 5693264 1628224 5696896 1628272 5697000 -1630192 5693264 1628184 5696808 1628224 5696896 1628272 5697000 -1630192 5693264 1628120 5696720 1628152 5696760 1628184 5696808 -1630264 5693248 1630280 5693192 1630192 5693264 1628272 5697000 -1630264 5693248 1630192 5693264 1628272 5697000 1628304 5697064 -1630264 5693248 1630192 5693264 1628304 5697064 1628376 5697224 -1630192 5693264 1628224 5696896 1628272 5697000 1628304 5697064 -1630264 5693248 1630280 5693192 1630192 5693264 1628304 5697064 -1630192 5693264 1628152 5696760 1628184 5696808 1628224 5696896 -1628120 5696720 1630112 5693208 1629904 5693000 1628088 5696712 -1630192 5693264 1630112 5693208 1628120 5696720 1628152 5696760 -1629904 5693000 1630112 5693208 1630192 5693264 1630280 5693192 -1630192 5693264 1630264 5693248 1630280 5693192 1630112 5693208 -1629904 5693000 1630112 5693208 1630280 5693192 1630328 5693152 -1629904 5693000 1630112 5693208 1630328 5693152 1629944 5692528 -1630112 5693208 1628120 5696720 1630192 5693264 1630280 5693192 -1630112 5693208 1630192 5693264 1630280 5693192 1630328 5693152 -1628120 5696720 1630192 5693264 1630112 5693208 1628088 5696712 -1630112 5693208 1630328 5693152 1629904 5693000 1628088 5696712 -1629904 5693000 1628048 5696704 1628088 5696712 1630112 5693208 -1630328 5693152 1630056 5692704 1629944 5692528 1629904 5693000 -1629944 5692528 1629840 5692680 1629904 5693000 1630056 5692704 -1629840 5692680 1629856 5692928 1629904 5693000 1630056 5692704 -1629840 5692680 1629856 5692928 1630056 5692704 1629944 5692528 -1629904 5693000 1630328 5693152 1630056 5692704 1629856 5692928 -1630328 5693152 1630056 5692704 1629904 5693000 1630112 5693208 -1630056 5692704 1630432 5693120 1629944 5692528 1629840 5692680 -1630328 5693152 1630432 5693120 1630056 5692704 1629904 5693000 -1629840 5692680 1629816 5692792 1629856 5692928 1630056 5692704 -1629856 5692928 1629904 5693000 1630056 5692704 1629816 5692792 -1629840 5692680 1629816 5692792 1630056 5692704 1629944 5692528 -1629944 5692528 1630056 5692704 1630432 5693120 1630136 5692352 -1630432 5693120 1630448 5692312 1630136 5692352 1630056 5692704 -1629944 5692528 1629840 5692680 1630056 5692704 1630136 5692352 -1630056 5692704 1630328 5693152 1630432 5693120 1630448 5692312 -1630432 5693120 1630704 5692448 1630448 5692312 1630056 5692704 -1630432 5693120 1630800 5692640 1630704 5692448 1630056 5692704 -1630704 5692448 1630608 5692360 1630448 5692312 1630056 5692704 -1630448 5692312 1630136 5692352 1630056 5692704 1630704 5692448 -1630432 5693120 1630864 5692824 1630800 5692640 1630056 5692704 -1630432 5693120 1630800 5692640 1630056 5692704 1630328 5693152 -1630704 5692448 1630448 5692312 1630056 5692704 1630800 5692640 -1630448 5692312 1630232 5692312 1630136 5692352 1630056 5692704 -1630448 5692312 1630232 5692312 1630056 5692704 1630704 5692448 -1630136 5692352 1629944 5692528 1630056 5692704 1630232 5692312 -1630704 5692448 1630608 5692360 1630448 5692312 1630096 5692664 -1630056 5692704 1630800 5692640 1630704 5692448 1630096 5692664 -1630056 5692704 1630432 5693120 1630800 5692640 1630096 5692664 -1630056 5692704 1630432 5693120 1630096 5692664 1630232 5692312 -1630432 5693120 1630864 5692824 1630800 5692640 1630096 5692664 -1630056 5692704 1630328 5693152 1630432 5693120 1630096 5692664 -1630432 5693120 1630800 5692640 1630096 5692664 1630328 5693152 -1630056 5692704 1630328 5693152 1630096 5692664 1630232 5692312 -1630704 5692448 1630448 5692312 1630096 5692664 1630800 5692640 -1630056 5692704 1629904 5693000 1630328 5693152 1630096 5692664 -1630800 5692640 1630704 5692448 1630096 5692664 1630432 5693120 -1630056 5692704 1630096 5692664 1630232 5692312 1630136 5692352 -1630056 5692704 1630328 5693152 1630096 5692664 1630136 5692352 -1630096 5692664 1630448 5692312 1630232 5692312 1630136 5692352 -1630056 5692704 1630096 5692664 1630136 5692352 1629944 5692528 -1630056 5692704 1630328 5693152 1630096 5692664 1629944 5692528 -1630056 5692704 1630096 5692664 1629944 5692528 1629840 5692680 -1630096 5692664 1630232 5692312 1630136 5692352 1629944 5692528 -1630448 5692312 1630160 5692624 1630704 5692448 1630608 5692360 -1630704 5692448 1630160 5692624 1630096 5692664 1630800 5692640 -1630096 5692664 1630160 5692624 1630448 5692312 1630232 5692312 -1630096 5692664 1630160 5692624 1630232 5692312 1630136 5692352 -1630160 5692624 1630448 5692312 1630232 5692312 1630136 5692352 -1630160 5692624 1630136 5692352 1630096 5692664 1630800 5692640 -1630448 5692312 1630232 5692312 1630160 5692624 1630608 5692360 -1630160 5692624 1630800 5692640 1630704 5692448 1630608 5692360 -1630096 5692664 1630432 5693120 1630800 5692640 1630160 5692624 -1630096 5692664 1630328 5693152 1630432 5693120 1630160 5692624 -1630432 5693120 1630864 5692824 1630800 5692640 1630160 5692624 -1630096 5692664 1630056 5692704 1630328 5693152 1630160 5692624 -1630800 5692640 1630704 5692448 1630160 5692624 1630432 5693120 -1630096 5692664 1630328 5693152 1630160 5692624 1630136 5692352 -1630432 5693120 1630800 5692640 1630160 5692624 1630328 5693152 -1630096 5692664 1630160 5692624 1630136 5692352 1629944 5692528 -1630160 5692624 1630232 5692312 1630136 5692352 1629944 5692528 -1630096 5692664 1630328 5693152 1630160 5692624 1629944 5692528 -1630096 5692664 1630160 5692624 1629944 5692528 1630056 5692704 -1630608 5692360 1630248 5692552 1630160 5692624 1630704 5692448 -1630160 5692624 1630248 5692552 1630448 5692312 1630232 5692312 -1630160 5692624 1630248 5692552 1630232 5692312 1630136 5692352 -1630160 5692624 1630248 5692552 1630136 5692352 1629944 5692528 -1630248 5692552 1630448 5692312 1630232 5692312 1630136 5692352 -1630248 5692552 1630136 5692352 1630160 5692624 1630704 5692448 -1630160 5692624 1630800 5692640 1630704 5692448 1630248 5692552 -1630704 5692448 1630608 5692360 1630248 5692552 1630800 5692640 -1630160 5692624 1630432 5693120 1630800 5692640 1630248 5692552 -1630432 5693120 1630864 5692824 1630800 5692640 1630248 5692552 -1630160 5692624 1630432 5693120 1630248 5692552 1630136 5692352 -1630800 5692640 1630704 5692448 1630248 5692552 1630432 5693120 -1630248 5692552 1630608 5692360 1630448 5692312 1630232 5692312 -1630608 5692360 1630448 5692312 1630248 5692552 1630704 5692448 -1630160 5692624 1630328 5693152 1630432 5693120 1630248 5692552 -1630248 5692552 1630320 5692504 1630448 5692312 1630232 5692312 -1630248 5692552 1630320 5692504 1630232 5692312 1630136 5692352 -1630248 5692552 1630320 5692504 1630136 5692352 1630160 5692624 -1630320 5692504 1630448 5692312 1630232 5692312 1630136 5692352 -1630248 5692552 1630608 5692360 1630320 5692504 1630136 5692352 -1630608 5692360 1630320 5692504 1630248 5692552 1630704 5692448 -1630248 5692552 1630800 5692640 1630704 5692448 1630320 5692504 -1630248 5692552 1630432 5693120 1630800 5692640 1630320 5692504 -1630800 5692640 1630704 5692448 1630320 5692504 1630432 5693120 -1630432 5693120 1630864 5692824 1630800 5692640 1630320 5692504 -1630248 5692552 1630160 5692624 1630432 5693120 1630320 5692504 -1630320 5692504 1630136 5692352 1630248 5692552 1630432 5693120 -1630704 5692448 1630608 5692360 1630320 5692504 1630800 5692640 -1630320 5692504 1630608 5692360 1630448 5692312 1630232 5692312 -1630608 5692360 1630448 5692312 1630320 5692504 1630704 5692448 -1630704 5692448 1630368 5692488 1630320 5692504 1630800 5692640 -1630320 5692504 1630432 5693120 1630800 5692640 1630368 5692488 -1630432 5693120 1630864 5692824 1630800 5692640 1630368 5692488 -1630320 5692504 1630248 5692552 1630432 5693120 1630368 5692488 -1630432 5693120 1630800 5692640 1630368 5692488 1630248 5692552 -1630248 5692552 1630160 5692624 1630432 5693120 1630368 5692488 -1630800 5692640 1630704 5692448 1630368 5692488 1630432 5693120 -1630368 5692488 1630608 5692360 1630320 5692504 1630248 5692552 -1630320 5692504 1630368 5692488 1630608 5692360 1630448 5692312 -1630320 5692504 1630368 5692488 1630448 5692312 1630232 5692312 -1630320 5692504 1630368 5692488 1630232 5692312 1630136 5692352 -1630320 5692504 1630248 5692552 1630368 5692488 1630232 5692312 -1630368 5692488 1630608 5692360 1630448 5692312 1630232 5692312 -1630368 5692488 1630704 5692448 1630608 5692360 1630448 5692312 -1630704 5692448 1630608 5692360 1630368 5692488 1630800 5692640 -1630368 5692488 1630416 5692480 1630608 5692360 1630448 5692312 -1630368 5692488 1630416 5692480 1630448 5692312 1630232 5692312 -1630368 5692488 1630704 5692448 1630416 5692480 1630448 5692312 -1630704 5692448 1630416 5692480 1630368 5692488 1630800 5692640 -1630368 5692488 1630432 5693120 1630800 5692640 1630416 5692480 -1630368 5692488 1630248 5692552 1630432 5693120 1630416 5692480 -1630432 5693120 1630864 5692824 1630800 5692640 1630416 5692480 -1630248 5692552 1630160 5692624 1630432 5693120 1630416 5692480 -1630368 5692488 1630320 5692504 1630248 5692552 1630416 5692480 -1630432 5693120 1630800 5692640 1630416 5692480 1630248 5692552 -1630416 5692480 1630448 5692312 1630368 5692488 1630248 5692552 -1630800 5692640 1630704 5692448 1630416 5692480 1630432 5693120 -1630416 5692480 1630704 5692448 1630608 5692360 1630448 5692312 -1630704 5692448 1630608 5692360 1630416 5692480 1630800 5692640 -1630800 5692640 1630512 5692504 1630416 5692480 1630432 5693120 -1630800 5692640 1630512 5692504 1630432 5693120 1630864 5692824 -1630416 5692480 1630248 5692552 1630432 5693120 1630512 5692504 -1630416 5692480 1630368 5692488 1630248 5692552 1630512 5692504 -1630248 5692552 1630160 5692624 1630432 5693120 1630512 5692504 -1630368 5692488 1630320 5692504 1630248 5692552 1630512 5692504 -1630368 5692488 1630320 5692504 1630512 5692504 1630416 5692480 -1630248 5692552 1630432 5693120 1630512 5692504 1630320 5692504 -1630432 5693120 1630800 5692640 1630512 5692504 1630248 5692552 -1630512 5692504 1630704 5692448 1630416 5692480 1630368 5692488 -1630416 5692480 1630512 5692504 1630704 5692448 1630608 5692360 -1630416 5692480 1630512 5692504 1630608 5692360 1630448 5692312 -1630416 5692480 1630512 5692504 1630448 5692312 1630368 5692488 -1630416 5692480 1630368 5692488 1630512 5692504 1630448 5692312 -1630512 5692504 1630704 5692448 1630608 5692360 1630448 5692312 -1630512 5692504 1630800 5692640 1630704 5692448 1630608 5692360 -1630800 5692640 1630704 5692448 1630512 5692504 1630432 5693120 -1630800 5692640 1630544 5692520 1630432 5693120 1630864 5692824 -1630432 5693120 1630736 5693088 1630864 5692824 1630544 5692520 -1630432 5693120 1630544 5692520 1630512 5692504 1630248 5692552 -1630432 5693120 1630544 5692520 1630248 5692552 1630160 5692624 -1630512 5692504 1630320 5692504 1630248 5692552 1630544 5692520 -1630544 5692520 1630800 5692640 1630512 5692504 1630248 5692552 -1630512 5692504 1630544 5692520 1630800 5692640 1630704 5692448 -1630512 5692504 1630544 5692520 1630704 5692448 1630608 5692360 -1630512 5692504 1630544 5692520 1630608 5692360 1630448 5692312 -1630512 5692504 1630248 5692552 1630544 5692520 1630608 5692360 -1630544 5692520 1630800 5692640 1630704 5692448 1630608 5692360 -1630800 5692640 1630704 5692448 1630544 5692520 1630864 5692824 -1630544 5692520 1630248 5692552 1630432 5693120 1630864 5692824 -1630864 5692824 1630592 5692544 1630544 5692520 1630432 5693120 -1630864 5692824 1630592 5692544 1630432 5693120 1630736 5693088 -1630592 5692544 1630544 5692520 1630432 5693120 1630736 5693088 -1630544 5692520 1630592 5692544 1630800 5692640 1630704 5692448 -1630544 5692520 1630592 5692544 1630704 5692448 1630608 5692360 -1630544 5692520 1630592 5692544 1630608 5692360 1630512 5692504 -1630592 5692544 1630800 5692640 1630704 5692448 1630608 5692360 -1630592 5692544 1630608 5692360 1630544 5692520 1630432 5693120 -1630544 5692520 1630248 5692552 1630432 5693120 1630592 5692544 -1630592 5692544 1630864 5692824 1630800 5692640 1630704 5692448 -1630864 5692824 1630800 5692640 1630592 5692544 1630736 5693088 -1630864 5692824 1630592 5692544 1630736 5693088 1630864 5692928 -1630592 5692544 1630680 5692616 1630800 5692640 1630704 5692448 -1630592 5692544 1630680 5692616 1630704 5692448 1630608 5692360 -1630592 5692544 1630864 5692824 1630680 5692616 1630704 5692448 -1630864 5692824 1630680 5692616 1630592 5692544 1630736 5693088 -1630592 5692544 1630432 5693120 1630736 5693088 1630680 5692616 -1630592 5692544 1630544 5692520 1630432 5693120 1630680 5692616 -1630680 5692616 1630704 5692448 1630592 5692544 1630432 5693120 -1630736 5693088 1630864 5692824 1630680 5692616 1630432 5693120 -1630680 5692616 1630864 5692824 1630800 5692640 1630704 5692448 -1630864 5692824 1630800 5692640 1630680 5692616 1630736 5693088 -1630864 5692824 1630680 5692616 1630736 5693088 1630864 5692928 -1630736 5693088 1630720 5692672 1630680 5692616 1630432 5693120 -1630680 5692616 1630592 5692544 1630432 5693120 1630720 5692672 -1630720 5692672 1630864 5692824 1630680 5692616 1630432 5693120 -1630680 5692616 1630720 5692672 1630864 5692824 1630800 5692640 -1630680 5692616 1630720 5692672 1630800 5692640 1630704 5692448 -1630680 5692616 1630432 5693120 1630720 5692672 1630800 5692640 -1630720 5692672 1630736 5693088 1630864 5692824 1630800 5692640 -1630736 5693088 1630864 5692824 1630720 5692672 1630432 5693120 -1630864 5692824 1630720 5692672 1630736 5693088 1630864 5692928 -1630864 5692824 1630800 5692640 1630720 5692672 1630864 5692928 -1630720 5692672 1630432 5693120 1630736 5693088 1630864 5692928 -1630736 5693088 1630776 5693064 1630864 5692928 1630720 5692672 -1630736 5693088 1630776 5693064 1630720 5692672 1630432 5693120 -1630864 5692928 1630864 5692824 1630720 5692672 1630776 5693064 -1630776 5693064 1630848 5692976 1630864 5692928 1630720 5692672 -1630864 5692928 1630864 5692824 1630720 5692672 1630848 5692976 -1630776 5693064 1630848 5692976 1630720 5692672 1630736 5693088 -1630432 5693120 1630712 5692720 1630720 5692672 1630680 5692616 -1630432 5693120 1630712 5692720 1630680 5692616 1630592 5692544 -1630432 5693120 1630712 5692720 1630592 5692544 1630544 5692520 -1630712 5692720 1630680 5692616 1630592 5692544 1630544 5692520 -1630432 5693120 1630712 5692720 1630544 5692520 1630248 5692552 -1630712 5692720 1630592 5692544 1630544 5692520 1630248 5692552 -1630432 5693120 1630712 5692720 1630248 5692552 1630160 5692624 -1630544 5692520 1630512 5692504 1630248 5692552 1630712 5692720 -1630712 5692720 1630720 5692672 1630680 5692616 1630592 5692544 -1630712 5692720 1630736 5693088 1630720 5692672 1630680 5692616 -1630720 5692672 1630712 5692720 1630736 5693088 1630776 5693064 -1630720 5692672 1630680 5692616 1630712 5692720 1630776 5693064 -1630712 5692720 1630432 5693120 1630736 5693088 1630776 5693064 -1630432 5693120 1630736 5693088 1630712 5692720 1630248 5692552 -1630720 5692672 1630712 5692720 1630776 5693064 1630848 5692976 -1630720 5692672 1630680 5692616 1630712 5692720 1630848 5692976 -1630712 5692720 1630736 5693088 1630776 5693064 1630848 5692976 -1630720 5692672 1630712 5692720 1630848 5692976 1630864 5692928 -1630720 5692672 1630680 5692616 1630712 5692720 1630864 5692928 -1630720 5692672 1630712 5692720 1630864 5692928 1630864 5692824 -1630720 5692672 1630712 5692720 1630864 5692824 1630800 5692640 -1630720 5692672 1630712 5692720 1630800 5692640 1630680 5692616 -1630720 5692672 1630680 5692616 1630712 5692720 1630800 5692640 -1630712 5692720 1630864 5692928 1630864 5692824 1630800 5692640 -1630712 5692720 1630776 5693064 1630848 5692976 1630864 5692928 -1630712 5692720 1630848 5692976 1630864 5692928 1630864 5692824 -1630712 5692720 1630672 5692824 1630736 5693088 1630776 5693064 -1630712 5692720 1630672 5692824 1630776 5693064 1630848 5692976 -1630672 5692824 1630736 5693088 1630776 5693064 1630848 5692976 -1630712 5692720 1630432 5693120 1630672 5692824 1630848 5692976 -1630432 5693120 1630672 5692824 1630712 5692720 1630248 5692552 -1630432 5693120 1630672 5692824 1630248 5692552 1630160 5692624 -1630712 5692720 1630544 5692520 1630248 5692552 1630672 5692824 -1630712 5692720 1630592 5692544 1630544 5692520 1630672 5692824 -1630712 5692720 1630680 5692616 1630592 5692544 1630672 5692824 -1630592 5692544 1630544 5692520 1630672 5692824 1630680 5692616 -1630544 5692520 1630512 5692504 1630248 5692552 1630672 5692824 -1630544 5692520 1630248 5692552 1630672 5692824 1630592 5692544 -1630712 5692720 1630720 5692672 1630680 5692616 1630672 5692824 -1630672 5692824 1630848 5692976 1630712 5692720 1630680 5692616 -1630672 5692824 1630544 5692520 1630248 5692552 1630160 5692624 -1630672 5692824 1630432 5693120 1630736 5693088 1630776 5693064 -1630432 5693120 1630736 5693088 1630672 5692824 1630160 5692624 -1630432 5693120 1630672 5692824 1630160 5692624 1630328 5693152 -1630712 5692720 1630672 5692824 1630848 5692976 1630864 5692928 -1630672 5692824 1630776 5693064 1630848 5692976 1630864 5692928 -1630712 5692720 1630680 5692616 1630672 5692824 1630864 5692928 -1630712 5692720 1630672 5692824 1630864 5692928 1630864 5692824 -1630712 5692720 1630680 5692616 1630672 5692824 1630864 5692824 -1630712 5692720 1630672 5692824 1630864 5692824 1630800 5692640 -1630672 5692824 1630848 5692976 1630864 5692928 1630864 5692824 -1630672 5692824 1630640 5692864 1630736 5693088 1630776 5693064 -1630672 5692824 1630640 5692864 1630776 5693064 1630848 5692976 -1630672 5692824 1630640 5692864 1630848 5692976 1630864 5692928 -1630640 5692864 1630736 5693088 1630776 5693064 1630848 5692976 -1630672 5692824 1630432 5693120 1630640 5692864 1630848 5692976 -1630432 5693120 1630640 5692864 1630672 5692824 1630160 5692624 -1630672 5692824 1630248 5692552 1630160 5692624 1630640 5692864 -1630672 5692824 1630544 5692520 1630248 5692552 1630640 5692864 -1630248 5692552 1630160 5692624 1630640 5692864 1630544 5692520 -1630544 5692520 1630512 5692504 1630248 5692552 1630640 5692864 -1630672 5692824 1630592 5692544 1630544 5692520 1630640 5692864 -1630672 5692824 1630680 5692616 1630592 5692544 1630640 5692864 -1630544 5692520 1630248 5692552 1630640 5692864 1630592 5692544 -1630640 5692864 1630848 5692976 1630672 5692824 1630592 5692544 -1630160 5692624 1630432 5693120 1630640 5692864 1630248 5692552 -1630640 5692864 1630432 5693120 1630736 5693088 1630776 5693064 -1630432 5693120 1630736 5693088 1630640 5692864 1630160 5692624 -1630432 5693120 1630640 5692864 1630160 5692624 1630328 5693152 -1630160 5692624 1630560 5692928 1630640 5692864 1630248 5692552 -1630640 5692864 1630544 5692520 1630248 5692552 1630560 5692928 -1630544 5692520 1630512 5692504 1630248 5692552 1630560 5692928 -1630544 5692520 1630512 5692504 1630560 5692928 1630640 5692864 -1630512 5692504 1630320 5692504 1630248 5692552 1630560 5692928 -1630640 5692864 1630592 5692544 1630544 5692520 1630560 5692928 -1630248 5692552 1630160 5692624 1630560 5692928 1630512 5692504 -1630560 5692928 1630432 5693120 1630640 5692864 1630544 5692520 -1630640 5692864 1630560 5692928 1630432 5693120 1630736 5693088 -1630640 5692864 1630560 5692928 1630736 5693088 1630776 5693064 -1630640 5692864 1630544 5692520 1630560 5692928 1630736 5693088 -1630560 5692928 1630160 5692624 1630432 5693120 1630736 5693088 -1630160 5692624 1630432 5693120 1630560 5692928 1630248 5692552 -1630432 5693120 1630560 5692928 1630160 5692624 1630328 5693152 -1630160 5692624 1630096 5692664 1630328 5693152 1630560 5692928 -1630432 5693120 1630736 5693088 1630560 5692928 1630328 5693152 -1630560 5692928 1630248 5692552 1630160 5692624 1630328 5693152 -1630328 5693152 1630512 5692944 1630160 5692624 1630096 5692664 -1630328 5693152 1630512 5692944 1630096 5692664 1630056 5692704 -1630512 5692944 1630160 5692624 1630096 5692664 1630056 5692704 -1630328 5693152 1630512 5692944 1630056 5692704 1629904 5693000 -1630160 5692624 1630512 5692944 1630560 5692928 1630248 5692552 -1630560 5692928 1630512 5692504 1630248 5692552 1630512 5692944 -1630512 5692504 1630320 5692504 1630248 5692552 1630512 5692944 -1630512 5692504 1630368 5692488 1630320 5692504 1630512 5692944 -1630560 5692928 1630544 5692520 1630512 5692504 1630512 5692944 -1630560 5692928 1630640 5692864 1630544 5692520 1630512 5692944 -1630544 5692520 1630512 5692504 1630512 5692944 1630640 5692864 -1630640 5692864 1630592 5692544 1630544 5692520 1630512 5692944 -1630512 5692504 1630320 5692504 1630512 5692944 1630544 5692520 -1630512 5692944 1630328 5693152 1630560 5692928 1630640 5692864 -1630248 5692552 1630160 5692624 1630512 5692944 1630320 5692504 -1630328 5693152 1630560 5692928 1630512 5692944 1630056 5692704 -1630512 5692944 1630248 5692552 1630160 5692624 1630096 5692664 -1630560 5692928 1630512 5692944 1630328 5693152 1630432 5693120 -1630560 5692928 1630512 5692944 1630432 5693120 1630736 5693088 -1630560 5692928 1630512 5692944 1630736 5693088 1630640 5692864 -1630560 5692928 1630640 5692864 1630512 5692944 1630736 5693088 -1630512 5692944 1630056 5692704 1630328 5693152 1630432 5693120 -1630512 5692944 1630328 5693152 1630432 5693120 1630736 5693088 -1630056 5692704 1630432 5692952 1630512 5692944 1630096 5692664 -1630512 5692944 1630160 5692624 1630096 5692664 1630432 5692952 -1630096 5692664 1630056 5692704 1630432 5692952 1630160 5692624 -1630328 5693152 1630432 5692952 1630056 5692704 1629904 5693000 -1630512 5692944 1630432 5692952 1630328 5693152 1630432 5693120 -1630432 5692952 1630432 5693120 1630512 5692944 1630160 5692624 -1630512 5692944 1630248 5692552 1630160 5692624 1630432 5692952 -1630160 5692624 1630096 5692664 1630432 5692952 1630248 5692552 -1630512 5692944 1630320 5692504 1630248 5692552 1630432 5692952 -1630512 5692944 1630512 5692504 1630320 5692504 1630432 5692952 -1630512 5692504 1630368 5692488 1630320 5692504 1630432 5692952 -1630512 5692944 1630544 5692520 1630512 5692504 1630432 5692952 -1630512 5692504 1630320 5692504 1630432 5692952 1630544 5692520 -1630512 5692944 1630640 5692864 1630544 5692520 1630432 5692952 -1630320 5692504 1630248 5692552 1630432 5692952 1630512 5692504 -1630512 5692944 1630544 5692520 1630432 5692952 1630432 5693120 -1630248 5692552 1630160 5692624 1630432 5692952 1630320 5692504 -1630432 5692952 1630056 5692704 1630328 5693152 1630432 5693120 -1630056 5692704 1630328 5693152 1630432 5692952 1630096 5692664 -1630512 5692944 1630432 5692952 1630432 5693120 1630736 5693088 -1630328 5693152 1630352 5692968 1630056 5692704 1629904 5693000 -1630056 5692704 1629856 5692928 1629904 5693000 1630352 5692968 -1630328 5693152 1630352 5692968 1629904 5693000 1630112 5693208 -1630328 5693152 1630352 5692968 1630112 5693208 1630280 5693192 -1630352 5692968 1629904 5693000 1630112 5693208 1630280 5693192 -1630112 5693208 1630192 5693264 1630280 5693192 1630352 5692968 -1630352 5692968 1630056 5692704 1629904 5693000 1630112 5693208 -1630432 5692952 1630352 5692968 1630328 5693152 1630432 5693120 -1630432 5692952 1630352 5692968 1630432 5693120 1630512 5692944 -1630432 5692952 1630056 5692704 1630352 5692968 1630432 5693120 -1630056 5692704 1630352 5692968 1630432 5692952 1630096 5692664 -1630432 5692952 1630160 5692624 1630096 5692664 1630352 5692968 -1630432 5692952 1630248 5692552 1630160 5692624 1630352 5692968 -1630160 5692624 1630096 5692664 1630352 5692968 1630248 5692552 -1630432 5692952 1630320 5692504 1630248 5692552 1630352 5692968 -1630352 5692968 1630432 5693120 1630432 5692952 1630248 5692552 -1630096 5692664 1630056 5692704 1630352 5692968 1630160 5692624 -1630328 5693152 1630432 5693120 1630352 5692968 1630280 5693192 -1630352 5692968 1630096 5692664 1630056 5692704 1629904 5693000 -1630352 5692968 1630264 5692976 1630112 5693208 1630280 5693192 -1630352 5692968 1630264 5692976 1630280 5693192 1630328 5693152 -1630264 5692976 1630112 5693208 1630280 5693192 1630328 5693152 -1630112 5693208 1630192 5693264 1630280 5693192 1630264 5692976 -1629904 5693000 1630264 5692976 1630352 5692968 1630056 5692704 -1629904 5693000 1630264 5692976 1630056 5692704 1629856 5692928 -1630352 5692968 1630264 5692976 1630328 5693152 1630432 5693120 -1630352 5692968 1630056 5692704 1630264 5692976 1630328 5693152 -1630352 5692968 1630096 5692664 1630056 5692704 1630264 5692976 -1630056 5692704 1629904 5693000 1630264 5692976 1630096 5692664 -1630352 5692968 1630160 5692624 1630096 5692664 1630264 5692976 -1630352 5692968 1630248 5692552 1630160 5692624 1630264 5692976 -1630352 5692968 1630160 5692624 1630264 5692976 1630328 5693152 -1630096 5692664 1630056 5692704 1630264 5692976 1630160 5692624 -1630264 5692976 1629904 5693000 1630112 5693208 1630280 5693192 -1629904 5693000 1630112 5693208 1630264 5692976 1630056 5692704 -1629904 5693000 1630176 5692968 1630056 5692704 1629856 5692928 -1630056 5692704 1630176 5692968 1630264 5692976 1630096 5692664 -1630264 5692976 1630160 5692624 1630096 5692664 1630176 5692968 -1630096 5692664 1630056 5692704 1630176 5692968 1630160 5692624 -1630264 5692976 1630352 5692968 1630160 5692624 1630176 5692968 -1630176 5692968 1629904 5693000 1630264 5692976 1630160 5692624 -1630264 5692976 1630176 5692968 1629904 5693000 1630112 5693208 -1630264 5692976 1630176 5692968 1630112 5693208 1630280 5693192 -1630264 5692976 1630176 5692968 1630280 5693192 1630328 5693152 -1630112 5693208 1630192 5693264 1630280 5693192 1630176 5692968 -1630264 5692976 1630160 5692624 1630176 5692968 1630280 5693192 -1630176 5692968 1629904 5693000 1630112 5693208 1630280 5693192 -1630176 5692968 1630056 5692704 1629904 5693000 1630112 5693208 -1630056 5692704 1629904 5693000 1630176 5692968 1630096 5692664 -1629904 5693000 1630152 5692952 1630056 5692704 1629856 5692928 -1630056 5692704 1629816 5692792 1629856 5692928 1630152 5692952 -1630176 5692968 1630152 5692952 1629904 5693000 1630112 5693208 -1630176 5692968 1630152 5692952 1630112 5693208 1630280 5693192 -1630176 5692968 1630056 5692704 1630152 5692952 1630112 5693208 -1630056 5692704 1630152 5692952 1630176 5692968 1630096 5692664 -1630176 5692968 1630160 5692624 1630096 5692664 1630152 5692952 -1630176 5692968 1630264 5692976 1630160 5692624 1630152 5692952 -1630160 5692624 1630096 5692664 1630152 5692952 1630264 5692976 -1630264 5692976 1630352 5692968 1630160 5692624 1630152 5692952 -1630152 5692952 1630112 5693208 1630176 5692968 1630264 5692976 -1630096 5692664 1630056 5692704 1630152 5692952 1630160 5692624 -1629904 5693000 1630112 5693208 1630152 5692952 1629856 5692928 -1630152 5692952 1630096 5692664 1630056 5692704 1629856 5692928 -1629856 5692928 1630120 5692912 1630056 5692704 1629816 5692792 -1630152 5692952 1630120 5692912 1629856 5692928 1629904 5693000 -1630152 5692952 1630120 5692912 1629904 5693000 1630112 5693208 -1630152 5692952 1630056 5692704 1630120 5692912 1629904 5693000 -1630056 5692704 1630120 5692912 1630152 5692952 1630096 5692664 -1630152 5692952 1630160 5692624 1630096 5692664 1630120 5692912 -1630152 5692952 1630264 5692976 1630160 5692624 1630120 5692912 -1630264 5692976 1630352 5692968 1630160 5692624 1630120 5692912 -1630152 5692952 1630176 5692968 1630264 5692976 1630120 5692912 -1630160 5692624 1630096 5692664 1630120 5692912 1630264 5692976 -1630120 5692912 1629904 5693000 1630152 5692952 1630264 5692976 -1630096 5692664 1630056 5692704 1630120 5692912 1630160 5692624 -1630120 5692912 1630056 5692704 1629856 5692928 1629904 5693000 -1630056 5692704 1629856 5692928 1630120 5692912 1630096 5692664 -1629856 5692928 1630088 5692848 1630056 5692704 1629816 5692792 -1630120 5692912 1630088 5692848 1629856 5692928 1629904 5693000 -1630120 5692912 1630088 5692848 1629904 5693000 1630152 5692952 -1630120 5692912 1630056 5692704 1630088 5692848 1629904 5693000 -1630056 5692704 1630088 5692848 1630120 5692912 1630096 5692664 -1630120 5692912 1630160 5692624 1630096 5692664 1630088 5692848 -1630120 5692912 1630264 5692976 1630160 5692624 1630088 5692848 -1630120 5692912 1630152 5692952 1630264 5692976 1630088 5692848 -1630264 5692976 1630352 5692968 1630160 5692624 1630088 5692848 -1630160 5692624 1630096 5692664 1630088 5692848 1630264 5692976 -1630088 5692848 1629904 5693000 1630120 5692912 1630264 5692976 -1630096 5692664 1630056 5692704 1630088 5692848 1630160 5692624 -1629856 5692928 1629904 5693000 1630088 5692848 1629816 5692792 -1630088 5692848 1630096 5692664 1630056 5692704 1629816 5692792 -1630056 5692704 1629840 5692680 1629816 5692792 1630088 5692848 -1630088 5692848 1630056 5692776 1629816 5692792 1629856 5692928 -1630088 5692848 1630056 5692776 1629856 5692928 1629904 5693000 -1630088 5692848 1630056 5692704 1630056 5692776 1629856 5692928 -1630056 5692704 1630056 5692776 1630088 5692848 1630096 5692664 -1630088 5692848 1630160 5692624 1630096 5692664 1630056 5692776 -1630056 5692776 1629856 5692928 1630088 5692848 1630096 5692664 -1630056 5692776 1630056 5692704 1629816 5692792 1629856 5692928 -1630056 5692704 1629816 5692792 1630056 5692776 1630096 5692664 -1629816 5692792 1630056 5692776 1630056 5692704 1629840 5692680 -1630056 5692704 1629944 5692528 1629840 5692680 1630056 5692776 -1629816 5692792 1629856 5692928 1630056 5692776 1629840 5692680 -1630056 5692776 1630096 5692664 1630056 5692704 1629840 5692680 -1615296 5682424 1617080 5683560 1657088 5639464 1615256 5682392 -1657088 5639464 1657056 5639384 1615256 5682392 1617080 5683560 -1657088 5639464 1617080 5683560 1630448 5692312 1630608 5692360 -1630448 5692312 1617080 5683560 1615296 5682424 1630232 5692312 -1615296 5682424 1624104 5692408 1630232 5692312 1617080 5683560 -1615296 5682424 1615296 5682480 1624104 5692408 1617080 5683560 -1615296 5682480 1623032 5692344 1624104 5692408 1617080 5683560 -1615296 5682480 1623000 5692344 1623032 5692344 1617080 5683560 -1615296 5682480 1615440 5689168 1623000 5692344 1617080 5683560 -1615296 5682480 1615392 5689120 1615440 5689168 1617080 5683560 -1615296 5682480 1615352 5689088 1615392 5689120 1617080 5683560 -1615392 5689120 1615440 5689168 1617080 5683560 1615352 5689088 -1615440 5689168 1623000 5692344 1617080 5683560 1615392 5689120 -1623000 5692344 1623032 5692344 1617080 5683560 1615440 5689168 -1623032 5692344 1624104 5692408 1617080 5683560 1623000 5692344 -1615296 5682480 1615352 5689088 1617080 5683560 1615296 5682424 -1615296 5682480 1615248 5682520 1615352 5689088 1617080 5683560 -1615352 5689088 1615392 5689120 1617080 5683560 1615248 5682520 -1615296 5682480 1615248 5682520 1617080 5683560 1615296 5682424 -1615248 5682520 1615216 5682544 1615352 5689088 1617080 5683560 -1615352 5689088 1615392 5689120 1617080 5683560 1615216 5682544 -1615248 5682520 1615216 5682544 1617080 5683560 1615296 5682480 -1630232 5692312 1630448 5692312 1617080 5683560 1624104 5692408 -1624104 5692408 1630136 5692352 1630232 5692312 1617080 5683560 -1624104 5692408 1630232 5692312 1617080 5683560 1623032 5692344 -1657088 5639464 1617080 5683560 1630608 5692360 1663776 5646144 -1617080 5683560 1630448 5692312 1630608 5692360 1663776 5646144 -1630608 5692360 1663880 5646248 1663776 5646144 1617080 5683560 -1615296 5682424 1615296 5682480 1617080 5683560 1615256 5682392 -1617080 5683560 1663776 5646144 1657088 5639464 1615256 5682392 -1617080 5683560 1630232 5692312 1630448 5692312 1630608 5692360 -1615440 5689168 1615488 5689272 1623000 5692344 1617080 5683560 -1615440 5689168 1615488 5689272 1617080 5683560 1615392 5689120 -1623000 5692344 1623032 5692344 1617080 5683560 1615488 5689272 -1623032 5692344 1624032 5692416 1624104 5692408 1617080 5683560 -1615488 5689272 1622936 5692376 1623000 5692344 1617080 5683560 -1623000 5692344 1623032 5692344 1617080 5683560 1622936 5692376 -1615488 5689272 1615488 5689328 1622936 5692376 1617080 5683560 -1615488 5689272 1622936 5692376 1617080 5683560 1615440 5689168 -1657088 5639464 1617080 5683560 1663776 5646144 1663688 5645984 -1615216 5682544 1613632 5687000 1615352 5689088 1617080 5683560 -1615352 5689088 1615392 5689120 1617080 5683560 1613632 5687000 -1615216 5682544 1613632 5687000 1617080 5683560 1615248 5682520 -1613632 5687000 1615264 5689048 1615352 5689088 1617080 5683560 -1615352 5689088 1615392 5689120 1617080 5683560 1615264 5689048 -1613632 5687000 1614472 5688520 1615264 5689048 1617080 5683560 -1615264 5689048 1615304 5689072 1615352 5689088 1617080 5683560 -1615216 5682544 1613592 5686944 1613632 5687000 1617080 5683560 -1615216 5682544 1613592 5686944 1617080 5683560 1615248 5682520 -1613592 5686944 1613600 5686968 1613632 5687000 1617080 5683560 -1615216 5682544 1615168 5682552 1613592 5686944 1617080 5683560 -1615216 5682544 1615168 5682552 1617080 5683560 1615248 5682520 -1615168 5682552 1615080 5682560 1613592 5686944 1617080 5683560 -1615080 5682560 1612664 5685288 1613592 5686944 1617080 5683560 -1613592 5686944 1613632 5687000 1617080 5683560 1615080 5682560 -1615168 5682552 1615080 5682560 1617080 5683560 1615216 5682544 -1613632 5687000 1615264 5689048 1617080 5683560 1613592 5686944 -1615256 5682392 1617120 5683488 1657088 5639464 1657056 5639384 -1617080 5683560 1617120 5683488 1615256 5682392 1615296 5682424 -1617080 5683560 1617120 5683488 1615296 5682424 1615296 5682480 -1617120 5683488 1615256 5682392 1615296 5682424 1615296 5682480 -1617080 5683560 1617120 5683488 1615296 5682480 1615248 5682520 -1657088 5639464 1617120 5683488 1617080 5683560 1663776 5646144 -1617080 5683560 1630608 5692360 1663776 5646144 1617120 5683488 -1617080 5683560 1630448 5692312 1630608 5692360 1617120 5683488 -1630608 5692360 1663776 5646144 1617120 5683488 1630448 5692312 -1630608 5692360 1663880 5646248 1663776 5646144 1617120 5683488 -1663776 5646144 1657088 5639464 1617120 5683488 1630608 5692360 -1617080 5683560 1630448 5692312 1617120 5683488 1615296 5682480 -1617080 5683560 1630232 5692312 1630448 5692312 1617120 5683488 -1630448 5692312 1630608 5692360 1617120 5683488 1630232 5692312 -1617080 5683560 1624104 5692408 1630232 5692312 1617120 5683488 -1624104 5692408 1630136 5692352 1630232 5692312 1617120 5683488 -1617080 5683560 1623032 5692344 1624104 5692408 1617120 5683488 -1617080 5683560 1623000 5692344 1623032 5692344 1617120 5683488 -1617080 5683560 1622936 5692376 1623000 5692344 1617120 5683488 -1624104 5692408 1630232 5692312 1617120 5683488 1623032 5692344 -1623032 5692344 1624104 5692408 1617120 5683488 1623000 5692344 -1617080 5683560 1623000 5692344 1617120 5683488 1615296 5682480 -1630232 5692312 1630448 5692312 1617120 5683488 1624104 5692408 -1617120 5683488 1657088 5639464 1615256 5682392 1615296 5682424 -1657088 5639464 1615256 5682392 1617120 5683488 1663776 5646144 -1623032 5692344 1624032 5692416 1624104 5692408 1617120 5683488 -1657088 5639464 1617120 5683488 1663776 5646144 1663688 5645984 -1615256 5682392 1617152 5683432 1657088 5639464 1657056 5639384 -1617120 5683488 1617152 5683432 1615256 5682392 1615296 5682424 -1617120 5683488 1617152 5683432 1615296 5682424 1615296 5682480 -1617120 5683488 1617152 5683432 1615296 5682480 1617080 5683560 -1617152 5683432 1615256 5682392 1615296 5682424 1615296 5682480 -1617120 5683488 1657088 5639464 1617152 5683432 1615296 5682480 -1657088 5639464 1617152 5683432 1617120 5683488 1663776 5646144 -1617120 5683488 1630608 5692360 1663776 5646144 1617152 5683432 -1617120 5683488 1630448 5692312 1630608 5692360 1617152 5683432 -1617120 5683488 1630232 5692312 1630448 5692312 1617152 5683432 -1630448 5692312 1630608 5692360 1617152 5683432 1630232 5692312 -1630608 5692360 1663880 5646248 1663776 5646144 1617152 5683432 -1630608 5692360 1663776 5646144 1617152 5683432 1630448 5692312 -1617120 5683488 1624104 5692408 1630232 5692312 1617152 5683432 -1630232 5692312 1630448 5692312 1617152 5683432 1624104 5692408 -1617120 5683488 1623032 5692344 1624104 5692408 1617152 5683432 -1624104 5692408 1630136 5692352 1630232 5692312 1617152 5683432 -1617120 5683488 1623000 5692344 1623032 5692344 1617152 5683432 -1617120 5683488 1617080 5683560 1623000 5692344 1617152 5683432 -1623032 5692344 1624104 5692408 1617152 5683432 1623000 5692344 -1624104 5692408 1630232 5692312 1617152 5683432 1623032 5692344 -1617152 5683432 1615296 5682480 1617120 5683488 1623000 5692344 -1663776 5646144 1657088 5639464 1617152 5683432 1630608 5692360 -1617152 5683432 1657088 5639464 1615256 5682392 1615296 5682424 -1657088 5639464 1615256 5682392 1617152 5683432 1663776 5646144 -1623032 5692344 1624032 5692416 1624104 5692408 1617152 5683432 -1657088 5639464 1617152 5683432 1663776 5646144 1663688 5645984 -1663776 5646144 1617176 5683416 1630608 5692360 1663880 5646248 -1630608 5692360 1617176 5683416 1617152 5683432 1630448 5692312 -1617152 5683432 1630232 5692312 1630448 5692312 1617176 5683416 -1617152 5683432 1624104 5692408 1630232 5692312 1617176 5683416 -1624104 5692408 1630136 5692352 1630232 5692312 1617176 5683416 -1630232 5692312 1630448 5692312 1617176 5683416 1624104 5692408 -1630448 5692312 1630608 5692360 1617176 5683416 1630232 5692312 -1617152 5683432 1623032 5692344 1624104 5692408 1617176 5683416 -1624104 5692408 1630232 5692312 1617176 5683416 1623032 5692344 -1617152 5683432 1623000 5692344 1623032 5692344 1617176 5683416 -1617152 5683432 1617120 5683488 1623000 5692344 1617176 5683416 -1617120 5683488 1617080 5683560 1623000 5692344 1617176 5683416 -1617080 5683560 1622936 5692376 1623000 5692344 1617176 5683416 -1623000 5692344 1623032 5692344 1617176 5683416 1617080 5683560 -1617120 5683488 1617080 5683560 1617176 5683416 1617152 5683432 -1623032 5692344 1624104 5692408 1617176 5683416 1623000 5692344 -1617152 5683432 1617176 5683416 1663776 5646144 1657088 5639464 -1617176 5683416 1657088 5639464 1617152 5683432 1617120 5683488 -1617152 5683432 1617176 5683416 1657088 5639464 1615256 5682392 -1657088 5639464 1657056 5639384 1615256 5682392 1617176 5683416 -1617176 5683416 1663776 5646144 1657088 5639464 1615256 5682392 -1617152 5683432 1617176 5683416 1615256 5682392 1615296 5682424 -1617152 5683432 1617176 5683416 1615296 5682424 1615296 5682480 -1617152 5683432 1617120 5683488 1617176 5683416 1615296 5682424 -1617176 5683416 1657088 5639464 1615256 5682392 1615296 5682424 -1617176 5683416 1630608 5692360 1663776 5646144 1657088 5639464 -1630608 5692360 1663776 5646144 1617176 5683416 1630448 5692312 -1623032 5692344 1624032 5692416 1624104 5692408 1617176 5683416 -1663776 5646144 1663688 5645984 1657088 5639464 1617176 5683416 -1663776 5646144 1617216 5683408 1630608 5692360 1663880 5646248 -1617176 5683416 1617216 5683408 1663776 5646144 1657088 5639464 -1617176 5683416 1617216 5683408 1657088 5639464 1615256 5682392 -1657088 5639464 1657056 5639384 1615256 5682392 1617216 5683408 -1617176 5683416 1617216 5683408 1615256 5682392 1615296 5682424 -1617216 5683408 1657088 5639464 1615256 5682392 1615296 5682424 -1617176 5683416 1617216 5683408 1615296 5682424 1617152 5683432 -1617216 5683408 1663776 5646144 1657088 5639464 1615256 5682392 -1617176 5683416 1630608 5692360 1617216 5683408 1615296 5682424 -1630608 5692360 1617216 5683408 1617176 5683416 1630448 5692312 -1617176 5683416 1630232 5692312 1630448 5692312 1617216 5683408 -1617176 5683416 1624104 5692408 1630232 5692312 1617216 5683408 -1617176 5683416 1623032 5692344 1624104 5692408 1617216 5683408 -1624104 5692408 1630136 5692352 1630232 5692312 1617216 5683408 -1624104 5692408 1630232 5692312 1617216 5683408 1623032 5692344 -1630232 5692312 1630448 5692312 1617216 5683408 1624104 5692408 -1617176 5683416 1623000 5692344 1623032 5692344 1617216 5683408 -1623032 5692344 1624104 5692408 1617216 5683408 1623000 5692344 -1617176 5683416 1617080 5683560 1623000 5692344 1617216 5683408 -1617080 5683560 1622936 5692376 1623000 5692344 1617216 5683408 -1617176 5683416 1617120 5683488 1617080 5683560 1617216 5683408 -1617080 5683560 1623000 5692344 1617216 5683408 1617120 5683488 -1617176 5683416 1617152 5683432 1617120 5683488 1617216 5683408 -1617120 5683488 1617080 5683560 1617216 5683408 1617152 5683432 -1623000 5692344 1623032 5692344 1617216 5683408 1617080 5683560 -1617216 5683408 1615296 5682424 1617176 5683416 1617152 5683432 -1630448 5692312 1630608 5692360 1617216 5683408 1630232 5692312 -1617216 5683408 1630608 5692360 1663776 5646144 1657088 5639464 -1630608 5692360 1663776 5646144 1617216 5683408 1630448 5692312 -1623032 5692344 1624032 5692416 1624104 5692408 1617216 5683408 -1663776 5646144 1663688 5645984 1657088 5639464 1617216 5683408 -1663776 5646144 1617256 5683416 1630608 5692360 1663880 5646248 -1617216 5683408 1617256 5683416 1663776 5646144 1657088 5639464 -1617216 5683408 1617256 5683416 1657088 5639464 1615256 5682392 -1657088 5639464 1657056 5639384 1615256 5682392 1617256 5683416 -1617216 5683408 1617256 5683416 1615256 5682392 1615296 5682424 -1617216 5683408 1617256 5683416 1615296 5682424 1617176 5683416 -1617256 5683416 1657088 5639464 1615256 5682392 1615296 5682424 -1617256 5683416 1663776 5646144 1657088 5639464 1615256 5682392 -1617216 5683408 1630608 5692360 1617256 5683416 1615296 5682424 -1630608 5692360 1617256 5683416 1617216 5683408 1630448 5692312 -1617216 5683408 1630232 5692312 1630448 5692312 1617256 5683416 -1617216 5683408 1624104 5692408 1630232 5692312 1617256 5683416 -1624104 5692408 1630136 5692352 1630232 5692312 1617256 5683416 -1617216 5683408 1623032 5692344 1624104 5692408 1617256 5683416 -1617216 5683408 1623000 5692344 1623032 5692344 1617256 5683416 -1623032 5692344 1624104 5692408 1617256 5683416 1623000 5692344 -1624104 5692408 1630232 5692312 1617256 5683416 1623032 5692344 -1617216 5683408 1617080 5683560 1623000 5692344 1617256 5683416 -1617080 5683560 1622936 5692376 1623000 5692344 1617256 5683416 -1623000 5692344 1623032 5692344 1617256 5683416 1622936 5692376 -1617216 5683408 1617120 5683488 1617080 5683560 1617256 5683416 -1617216 5683408 1617152 5683432 1617120 5683488 1617256 5683416 -1617080 5683560 1622936 5692376 1617256 5683416 1617120 5683488 -1630232 5692312 1630448 5692312 1617256 5683416 1624104 5692408 -1617256 5683416 1615296 5682424 1617216 5683408 1617120 5683488 -1623032 5692344 1624032 5692416 1624104 5692408 1617256 5683416 -1617080 5683560 1615488 5689272 1622936 5692376 1617256 5683416 -1622936 5692376 1623000 5692344 1617256 5683416 1615488 5689272 -1617080 5683560 1615488 5689272 1617256 5683416 1617120 5683488 -1615488 5689272 1615488 5689328 1622936 5692376 1617256 5683416 -1617080 5683560 1615440 5689168 1615488 5689272 1617256 5683416 -1663776 5646144 1663688 5645984 1657088 5639464 1617256 5683416 -1617256 5683416 1630608 5692360 1663776 5646144 1657088 5639464 -1630448 5692312 1630608 5692360 1617256 5683416 1630232 5692312 -1630608 5692360 1663776 5646144 1617256 5683416 1630448 5692312 -1630232 5692312 1617344 5683488 1624104 5692408 1630136 5692352 -1624104 5692408 1617344 5683488 1617256 5683416 1623032 5692344 -1617256 5683416 1623000 5692344 1623032 5692344 1617344 5683488 -1617256 5683416 1622936 5692376 1623000 5692344 1617344 5683488 -1617256 5683416 1615488 5689272 1622936 5692376 1617344 5683488 -1622936 5692376 1623000 5692344 1617344 5683488 1615488 5689272 -1623000 5692344 1623032 5692344 1617344 5683488 1622936 5692376 -1623032 5692344 1624104 5692408 1617344 5683488 1623000 5692344 -1617256 5683416 1617344 5683488 1630232 5692312 1630448 5692312 -1615488 5689272 1615488 5689328 1622936 5692376 1617344 5683488 -1624104 5692408 1617344 5683488 1623032 5692344 1624032 5692416 -1617256 5683416 1617080 5683560 1615488 5689272 1617344 5683488 -1615488 5689272 1622936 5692376 1617344 5683488 1617080 5683560 -1617256 5683416 1617120 5683488 1617080 5683560 1617344 5683488 -1617256 5683416 1617216 5683408 1617120 5683488 1617344 5683488 -1617080 5683560 1615440 5689168 1615488 5689272 1617344 5683488 -1617080 5683560 1615392 5689120 1615440 5689168 1617344 5683488 -1615488 5689272 1622936 5692376 1617344 5683488 1615440 5689168 -1617080 5683560 1615440 5689168 1617344 5683488 1617120 5683488 -1617256 5683416 1617344 5683488 1630448 5692312 1630608 5692360 -1617344 5683488 1630232 5692312 1630448 5692312 1630608 5692360 -1617256 5683416 1617344 5683488 1630608 5692360 1663776 5646144 -1630608 5692360 1663880 5646248 1663776 5646144 1617344 5683488 -1617256 5683416 1617344 5683488 1663776 5646144 1657088 5639464 -1617256 5683416 1617344 5683488 1657088 5639464 1615256 5682392 -1663776 5646144 1663688 5645984 1657088 5639464 1617344 5683488 -1617344 5683488 1630448 5692312 1630608 5692360 1663776 5646144 -1617344 5683488 1630608 5692360 1663776 5646144 1657088 5639464 -1617344 5683488 1657088 5639464 1617256 5683416 1617120 5683488 -1617344 5683488 1624104 5692408 1630232 5692312 1630448 5692312 -1624104 5692408 1630232 5692312 1617344 5683488 1623032 5692344 -1630232 5692312 1617376 5683520 1624104 5692408 1630136 5692352 -1617344 5683488 1617376 5683520 1630232 5692312 1630448 5692312 -1617344 5683488 1617376 5683520 1630448 5692312 1630608 5692360 -1617344 5683488 1617376 5683520 1630608 5692360 1663776 5646144 -1630608 5692360 1663880 5646248 1663776 5646144 1617376 5683520 -1617376 5683520 1630448 5692312 1630608 5692360 1663776 5646144 -1617344 5683488 1617376 5683520 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1617376 5683520 -1617344 5683488 1617376 5683520 1657088 5639464 1617256 5683416 -1617376 5683520 1630608 5692360 1663776 5646144 1657088 5639464 -1617376 5683520 1630232 5692312 1630448 5692312 1630608 5692360 -1617344 5683488 1624104 5692408 1617376 5683520 1657088 5639464 -1624104 5692408 1617376 5683520 1617344 5683488 1623032 5692344 -1617344 5683488 1623000 5692344 1623032 5692344 1617376 5683520 -1617344 5683488 1622936 5692376 1623000 5692344 1617376 5683520 -1617344 5683488 1615488 5689272 1622936 5692376 1617376 5683520 -1617344 5683488 1615440 5689168 1615488 5689272 1617376 5683520 -1615488 5689272 1622936 5692376 1617376 5683520 1615440 5689168 -1622936 5692376 1623000 5692344 1617376 5683520 1615488 5689272 -1623000 5692344 1623032 5692344 1617376 5683520 1622936 5692376 -1615488 5689272 1615488 5689328 1622936 5692376 1617376 5683520 -1617344 5683488 1617080 5683560 1615440 5689168 1617376 5683520 -1617080 5683560 1615392 5689120 1615440 5689168 1617376 5683520 -1617080 5683560 1615352 5689088 1615392 5689120 1617376 5683520 -1615440 5689168 1615488 5689272 1617376 5683520 1615392 5689120 -1617080 5683560 1615392 5689120 1617376 5683520 1617344 5683488 -1624104 5692408 1617376 5683520 1623032 5692344 1624032 5692416 -1617344 5683488 1617120 5683488 1617080 5683560 1617376 5683520 -1617376 5683520 1657088 5639464 1617344 5683488 1617080 5683560 -1623032 5692344 1624104 5692408 1617376 5683520 1623000 5692344 -1617376 5683520 1624104 5692408 1630232 5692312 1630448 5692312 -1624104 5692408 1630232 5692312 1617376 5683520 1623032 5692344 -1624104 5692408 1617424 5683592 1623032 5692344 1624032 5692416 -1623032 5692344 1617424 5683592 1617376 5683520 1623000 5692344 -1617376 5683520 1622936 5692376 1623000 5692344 1617424 5683592 -1617376 5683520 1615488 5689272 1622936 5692376 1617424 5683592 -1617376 5683520 1615440 5689168 1615488 5689272 1617424 5683592 -1617376 5683520 1615392 5689120 1615440 5689168 1617424 5683592 -1617376 5683520 1617080 5683560 1615392 5689120 1617424 5683592 -1617080 5683560 1615352 5689088 1615392 5689120 1617424 5683592 -1617080 5683560 1615264 5689048 1615352 5689088 1617424 5683592 -1617080 5683560 1615352 5689088 1617424 5683592 1617376 5683520 -1615392 5689120 1615440 5689168 1617424 5683592 1615352 5689088 -1615440 5689168 1615488 5689272 1617424 5683592 1615392 5689120 -1615488 5689272 1622936 5692376 1617424 5683592 1615440 5689168 -1622936 5692376 1623000 5692344 1617424 5683592 1615488 5689272 -1615488 5689272 1615488 5689328 1622936 5692376 1617424 5683592 -1617376 5683520 1617344 5683488 1617080 5683560 1617424 5683592 -1623000 5692344 1623032 5692344 1617424 5683592 1622936 5692376 -1617424 5683592 1624104 5692408 1617376 5683520 1617080 5683560 -1617376 5683520 1617424 5683592 1624104 5692408 1630232 5692312 -1624104 5692408 1630136 5692352 1630232 5692312 1617424 5683592 -1617376 5683520 1617424 5683592 1630232 5692312 1630448 5692312 -1617376 5683520 1617424 5683592 1630448 5692312 1630608 5692360 -1617376 5683520 1617080 5683560 1617424 5683592 1630448 5692312 -1617424 5683592 1624104 5692408 1630232 5692312 1630448 5692312 -1617424 5683592 1623032 5692344 1624104 5692408 1630232 5692312 -1623032 5692344 1624104 5692408 1617424 5683592 1623000 5692344 -1615488 5689272 1617424 5683648 1617424 5683592 1615440 5689168 -1617424 5683592 1615392 5689120 1615440 5689168 1617424 5683648 -1617424 5683592 1615352 5689088 1615392 5689120 1617424 5683648 -1617424 5683592 1617080 5683560 1615352 5689088 1617424 5683648 -1617080 5683560 1615264 5689048 1615352 5689088 1617424 5683648 -1617424 5683592 1617376 5683520 1617080 5683560 1617424 5683648 -1617080 5683560 1615352 5689088 1617424 5683648 1617376 5683520 -1615352 5689088 1615392 5689120 1617424 5683648 1617080 5683560 -1615392 5689120 1615440 5689168 1617424 5683648 1615352 5689088 -1615440 5689168 1615488 5689272 1617424 5683648 1615392 5689120 -1617424 5683592 1617424 5683648 1622936 5692376 1623000 5692344 -1622936 5692376 1617424 5683648 1615488 5689272 1615488 5689328 -1617376 5683520 1617344 5683488 1617080 5683560 1617424 5683648 -1617424 5683592 1617424 5683648 1623000 5692344 1623032 5692344 -1617424 5683648 1622936 5692376 1623000 5692344 1623032 5692344 -1617424 5683648 1623032 5692344 1617424 5683592 1617376 5683520 -1617424 5683592 1617424 5683648 1623032 5692344 1624104 5692408 -1623032 5692344 1624032 5692416 1624104 5692408 1617424 5683648 -1617424 5683648 1623000 5692344 1623032 5692344 1624104 5692408 -1617424 5683592 1617424 5683648 1624104 5692408 1630232 5692312 -1617424 5683592 1617376 5683520 1617424 5683648 1624104 5692408 -1617424 5683648 1615488 5689272 1622936 5692376 1623000 5692344 -1615488 5689272 1622936 5692376 1617424 5683648 1615440 5689168 -1615352 5689088 1617368 5683680 1617080 5683560 1615264 5689048 -1617080 5683560 1617368 5683680 1617424 5683648 1617376 5683520 -1617424 5683648 1617424 5683592 1617376 5683520 1617368 5683680 -1617376 5683520 1617080 5683560 1617368 5683680 1617424 5683592 -1617424 5683648 1617368 5683680 1615352 5689088 1615392 5689120 -1617424 5683648 1617368 5683680 1615392 5689120 1615440 5689168 -1617368 5683680 1615352 5689088 1615392 5689120 1615440 5689168 -1617424 5683648 1617368 5683680 1615440 5689168 1615488 5689272 -1617368 5683680 1615392 5689120 1615440 5689168 1615488 5689272 -1617080 5683560 1617368 5683680 1617376 5683520 1617344 5683488 -1617368 5683680 1617424 5683592 1617376 5683520 1617344 5683488 -1617080 5683560 1613632 5687000 1615264 5689048 1617368 5683680 -1615264 5689048 1615352 5689088 1617368 5683680 1613632 5687000 -1617080 5683560 1617368 5683680 1617344 5683488 1617120 5683488 -1613632 5687000 1614472 5688520 1615264 5689048 1617368 5683680 -1615352 5689088 1617368 5683680 1615264 5689048 1615304 5689072 -1617080 5683560 1613592 5686944 1613632 5687000 1617368 5683680 -1617368 5683680 1615488 5689272 1617424 5683648 1617424 5683592 -1617424 5683648 1617368 5683680 1615488 5689272 1622936 5692376 -1615352 5689088 1615392 5689120 1617368 5683680 1615264 5689048 -1617368 5683680 1617344 5683488 1617080 5683560 1613632 5687000 -1617368 5683680 1617328 5683704 1613632 5687000 1615264 5689048 -1617368 5683680 1617328 5683704 1615264 5689048 1615352 5689088 -1617328 5683704 1613632 5687000 1615264 5689048 1615352 5689088 -1613632 5687000 1614472 5688520 1615264 5689048 1617328 5683704 -1615264 5689048 1615304 5689072 1615352 5689088 1617328 5683704 -1613632 5687000 1617328 5683704 1617080 5683560 1613592 5686944 -1617368 5683680 1617328 5683704 1615352 5689088 1615392 5689120 -1617328 5683704 1615264 5689048 1615352 5689088 1615392 5689120 -1617368 5683680 1617328 5683704 1615392 5689120 1615440 5689168 -1617368 5683680 1617328 5683704 1615440 5689168 1615488 5689272 -1617328 5683704 1615392 5689120 1615440 5689168 1615488 5689272 -1617368 5683680 1617328 5683704 1615488 5689272 1617424 5683648 -1617328 5683704 1615440 5689168 1615488 5689272 1617424 5683648 -1615488 5689272 1622936 5692376 1617424 5683648 1617328 5683704 -1617328 5683704 1615352 5689088 1615392 5689120 1615440 5689168 -1617368 5683680 1617080 5683560 1617328 5683704 1617424 5683648 -1617080 5683560 1617328 5683704 1617368 5683680 1617344 5683488 -1617368 5683680 1617376 5683520 1617344 5683488 1617328 5683704 -1617368 5683680 1617424 5683592 1617376 5683520 1617328 5683704 -1617080 5683560 1617328 5683704 1617344 5683488 1617120 5683488 -1617344 5683488 1617256 5683416 1617120 5683488 1617328 5683704 -1617328 5683704 1617424 5683648 1617368 5683680 1617376 5683520 -1617344 5683488 1617120 5683488 1617328 5683704 1617376 5683520 -1617328 5683704 1617080 5683560 1613632 5687000 1615264 5689048 -1617080 5683560 1613632 5687000 1617328 5683704 1617120 5683488 -1613632 5687000 1617280 5683720 1617080 5683560 1613592 5686944 -1617328 5683704 1617280 5683720 1613632 5687000 1615264 5689048 -1617328 5683704 1617280 5683720 1615264 5689048 1615352 5689088 -1617328 5683704 1617280 5683720 1615352 5689088 1615392 5689120 -1617280 5683720 1615264 5689048 1615352 5689088 1615392 5689120 -1613632 5687000 1614472 5688520 1615264 5689048 1617280 5683720 -1615264 5689048 1615304 5689072 1615352 5689088 1617280 5683720 -1617328 5683704 1617280 5683720 1615392 5689120 1615440 5689168 -1617280 5683720 1615352 5689088 1615392 5689120 1615440 5689168 -1617328 5683704 1617280 5683720 1615440 5689168 1615488 5689272 -1617280 5683720 1613632 5687000 1615264 5689048 1615352 5689088 -1617328 5683704 1617080 5683560 1617280 5683720 1615440 5689168 -1617080 5683560 1617280 5683720 1617328 5683704 1617120 5683488 -1617328 5683704 1617344 5683488 1617120 5683488 1617280 5683720 -1617344 5683488 1617256 5683416 1617120 5683488 1617280 5683720 -1617328 5683704 1617376 5683520 1617344 5683488 1617280 5683720 -1617280 5683720 1615440 5689168 1617328 5683704 1617344 5683488 -1617120 5683488 1617080 5683560 1617280 5683720 1617344 5683488 -1617280 5683720 1617080 5683560 1613632 5687000 1615264 5689048 -1617080 5683560 1613632 5687000 1617280 5683720 1617120 5683488 -1613632 5687000 1617248 5683720 1617080 5683560 1613592 5686944 -1613632 5687000 1617248 5683720 1613592 5686944 1613600 5686968 -1617080 5683560 1615080 5682560 1613592 5686944 1617248 5683720 -1617280 5683720 1617248 5683720 1613632 5687000 1615264 5689048 -1613632 5687000 1614472 5688520 1615264 5689048 1617248 5683720 -1617280 5683720 1617248 5683720 1615264 5689048 1615352 5689088 -1617280 5683720 1617248 5683720 1615352 5689088 1615392 5689120 -1617280 5683720 1617248 5683720 1615392 5689120 1615440 5689168 -1615264 5689048 1615304 5689072 1615352 5689088 1617248 5683720 -1617248 5683720 1615264 5689048 1615352 5689088 1615392 5689120 -1617248 5683720 1613632 5687000 1615264 5689048 1615352 5689088 -1617280 5683720 1617080 5683560 1617248 5683720 1615392 5689120 -1617080 5683560 1617248 5683720 1617280 5683720 1617120 5683488 -1617280 5683720 1617344 5683488 1617120 5683488 1617248 5683720 -1617344 5683488 1617256 5683416 1617120 5683488 1617248 5683720 -1617280 5683720 1617328 5683704 1617344 5683488 1617248 5683720 -1617328 5683704 1617376 5683520 1617344 5683488 1617248 5683720 -1617344 5683488 1617120 5683488 1617248 5683720 1617328 5683704 -1617248 5683720 1615392 5689120 1617280 5683720 1617328 5683704 -1617120 5683488 1617080 5683560 1617248 5683720 1617344 5683488 -1613632 5687000 1615264 5689048 1617248 5683720 1613592 5686944 -1617248 5683720 1617120 5683488 1617080 5683560 1613592 5686944 -1613592 5686944 1617168 5683704 1617080 5683560 1615080 5682560 -1617080 5683560 1615168 5682552 1615080 5682560 1617168 5683704 -1613592 5686944 1617168 5683704 1615080 5682560 1612664 5685288 -1615080 5682560 1614944 5682560 1612664 5685288 1617168 5683704 -1613592 5686944 1617168 5683704 1612664 5685288 1613536 5686904 -1617168 5683704 1617080 5683560 1615080 5682560 1612664 5685288 -1617248 5683720 1617168 5683704 1613592 5686944 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1617168 5683704 -1617248 5683720 1617168 5683704 1613632 5687000 1615264 5689048 -1613632 5687000 1614472 5688520 1615264 5689048 1617168 5683704 -1613632 5687000 1613640 5687040 1614472 5688520 1617168 5683704 -1614472 5688520 1615168 5689016 1615264 5689048 1617168 5683704 -1617168 5683704 1613592 5686944 1613632 5687000 1614472 5688520 -1617248 5683720 1617168 5683704 1615264 5689048 1615352 5689088 -1615264 5689048 1615304 5689072 1615352 5689088 1617168 5683704 -1617248 5683720 1617168 5683704 1615352 5689088 1615392 5689120 -1615264 5689048 1615352 5689088 1617168 5683704 1614472 5688520 -1617248 5683720 1617080 5683560 1617168 5683704 1615352 5689088 -1617080 5683560 1617168 5683704 1617248 5683720 1617120 5683488 -1617248 5683720 1617344 5683488 1617120 5683488 1617168 5683704 -1617344 5683488 1617256 5683416 1617120 5683488 1617168 5683704 -1617248 5683720 1617328 5683704 1617344 5683488 1617168 5683704 -1617168 5683704 1615352 5689088 1617248 5683720 1617344 5683488 -1617120 5683488 1617080 5683560 1617168 5683704 1617344 5683488 -1613592 5686944 1613632 5687000 1617168 5683704 1612664 5685288 -1617168 5683704 1617120 5683488 1617080 5683560 1615080 5682560 -1617168 5683704 1617120 5683680 1612664 5685288 1613592 5686944 -1612664 5685288 1617120 5683680 1615080 5682560 1614944 5682560 -1612664 5685288 1613536 5686904 1613592 5686944 1617120 5683680 -1615080 5682560 1617120 5683680 1617168 5683704 1617080 5683560 -1615080 5682560 1617120 5683680 1617080 5683560 1615168 5682552 -1617120 5683680 1617168 5683704 1617080 5683560 1615168 5682552 -1617080 5683560 1615216 5682544 1615168 5682552 1617120 5683680 -1617080 5683560 1615248 5682520 1615216 5682544 1617120 5683680 -1615168 5682552 1615080 5682560 1617120 5683680 1615216 5682544 -1617080 5683560 1615216 5682544 1617120 5683680 1617168 5683704 -1617168 5683704 1617120 5683680 1613592 5686944 1613632 5687000 -1617120 5683680 1612664 5685288 1613592 5686944 1613632 5687000 -1613592 5686944 1613600 5686968 1613632 5687000 1617120 5683680 -1617168 5683704 1617120 5683680 1613632 5687000 1614472 5688520 -1617168 5683704 1617080 5683560 1617120 5683680 1613632 5687000 -1617168 5683704 1617120 5683488 1617080 5683560 1617120 5683680 -1617120 5683680 1615080 5682560 1612664 5685288 1613592 5686944 -1615080 5682560 1612664 5685288 1617120 5683680 1615168 5682552 -1615216 5682544 1617080 5683608 1617080 5683560 1615248 5682520 -1617080 5683560 1617080 5683608 1617120 5683680 1617168 5683704 -1617120 5683680 1617080 5683608 1615216 5682544 1615168 5682552 -1617120 5683680 1617080 5683608 1615168 5682552 1615080 5682560 -1617080 5683608 1615216 5682544 1615168 5682552 1615080 5682560 -1617080 5683560 1617080 5683608 1617168 5683704 1617120 5683488 -1617080 5683608 1615080 5682560 1617120 5683680 1617168 5683704 -1617120 5683680 1617080 5683608 1615080 5682560 1612664 5685288 -1617080 5683608 1617080 5683560 1615216 5682544 1615168 5682552 -1617080 5683560 1615216 5682544 1617080 5683608 1617168 5683704 -1663776 5646144 1625432 5687352 1630608 5692360 1663880 5646248 -1630608 5692360 1630704 5692448 1663880 5646248 1625432 5687352 -1630608 5692360 1625432 5687352 1617376 5683520 1630448 5692312 -1617376 5683520 1625432 5687352 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625432 5687352 -1617376 5683520 1625432 5687352 1657088 5639464 1617344 5683488 -1657088 5639464 1617256 5683416 1617344 5683488 1625432 5687352 -1657088 5639464 1615256 5682392 1617256 5683416 1625432 5687352 -1625432 5687352 1663776 5646144 1657088 5639464 1617256 5683416 -1617344 5683488 1617376 5683520 1625432 5687352 1617256 5683416 -1617376 5683520 1617424 5683592 1630448 5692312 1625432 5687352 -1630448 5692312 1630608 5692360 1625432 5687352 1617424 5683592 -1617424 5683592 1630232 5692312 1630448 5692312 1625432 5687352 -1630448 5692312 1630608 5692360 1625432 5687352 1630232 5692312 -1617424 5683592 1630232 5692312 1625432 5687352 1617376 5683520 -1617424 5683592 1624104 5692408 1630232 5692312 1625432 5687352 -1624104 5692408 1630136 5692352 1630232 5692312 1625432 5687352 -1624104 5692408 1629944 5692528 1630136 5692352 1625432 5687352 -1624104 5692408 1629840 5692680 1629944 5692528 1625432 5687352 -1630136 5692352 1630232 5692312 1625432 5687352 1629944 5692528 -1617424 5683592 1624104 5692408 1625432 5687352 1617376 5683520 -1630232 5692312 1630448 5692312 1625432 5687352 1630136 5692352 -1624104 5692408 1629944 5692528 1625432 5687352 1617424 5683592 -1617424 5683592 1617424 5683648 1624104 5692408 1625432 5687352 -1617424 5683592 1617424 5683648 1625432 5687352 1617376 5683520 -1624104 5692408 1629944 5692528 1625432 5687352 1617424 5683648 -1617424 5683648 1623032 5692344 1624104 5692408 1625432 5687352 -1623032 5692344 1624032 5692416 1624104 5692408 1625432 5687352 -1623032 5692344 1623136 5692368 1624032 5692416 1625432 5687352 -1624032 5692416 1624104 5692408 1625432 5687352 1623136 5692368 -1623136 5692368 1623448 5692552 1624032 5692416 1625432 5687352 -1617424 5683648 1623000 5692344 1623032 5692344 1625432 5687352 -1617424 5683648 1622936 5692376 1623000 5692344 1625432 5687352 -1623000 5692344 1623032 5692344 1625432 5687352 1622936 5692376 -1624104 5692408 1629944 5692528 1625432 5687352 1624032 5692416 -1617424 5683648 1622936 5692376 1625432 5687352 1617424 5683592 -1623032 5692344 1623136 5692368 1625432 5687352 1623000 5692344 -1617424 5683648 1615488 5689272 1622936 5692376 1625432 5687352 -1622936 5692376 1623000 5692344 1625432 5687352 1615488 5689272 -1615488 5689272 1615488 5689328 1622936 5692376 1625432 5687352 -1617424 5683648 1615488 5689272 1625432 5687352 1617424 5683592 -1617424 5683648 1617328 5683704 1615488 5689272 1625432 5687352 -1663776 5646144 1657088 5639464 1625432 5687352 1663880 5646248 -1625432 5687352 1630448 5692312 1630608 5692360 1663880 5646248 -1625432 5687352 1617344 5683488 1617376 5683520 1617424 5683592 -1625432 5687352 1625480 5687312 1663880 5646248 1663776 5646144 -1663880 5646248 1625480 5687312 1630608 5692360 1630704 5692448 -1625432 5687352 1625480 5687312 1663776 5646144 1657088 5639464 -1625480 5687312 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625480 5687312 -1625432 5687352 1625480 5687312 1657088 5639464 1617256 5683416 -1657088 5639464 1615256 5682392 1617256 5683416 1625480 5687312 -1625432 5687352 1625480 5687312 1617256 5683416 1617344 5683488 -1625480 5687312 1657088 5639464 1617256 5683416 1617344 5683488 -1625432 5687352 1625480 5687312 1617344 5683488 1617376 5683520 -1625480 5687312 1617256 5683416 1617344 5683488 1617376 5683520 -1625480 5687312 1663776 5646144 1657088 5639464 1617256 5683416 -1630608 5692360 1625480 5687312 1625432 5687352 1630448 5692312 -1625432 5687352 1630232 5692312 1630448 5692312 1625480 5687312 -1625432 5687352 1630136 5692352 1630232 5692312 1625480 5687312 -1625432 5687352 1629944 5692528 1630136 5692352 1625480 5687312 -1625432 5687352 1624104 5692408 1629944 5692528 1625480 5687312 -1630232 5692312 1630448 5692312 1625480 5687312 1630136 5692352 -1630136 5692352 1630232 5692312 1625480 5687312 1629944 5692528 -1630448 5692312 1630608 5692360 1625480 5687312 1630232 5692312 -1625432 5687352 1629944 5692528 1625480 5687312 1617376 5683520 -1625432 5687352 1625480 5687312 1617376 5683520 1617424 5683592 -1625480 5687312 1617344 5683488 1617376 5683520 1617424 5683592 -1625432 5687352 1625480 5687312 1617424 5683592 1617424 5683648 -1625432 5687352 1629944 5692528 1625480 5687312 1617424 5683592 -1625480 5687312 1630608 5692360 1663880 5646248 1663776 5646144 -1630608 5692360 1663880 5646248 1625480 5687312 1630448 5692312 -1663880 5646248 1625488 5687312 1630608 5692360 1630704 5692448 -1625480 5687312 1625488 5687312 1663880 5646248 1663776 5646144 -1625480 5687312 1625488 5687312 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625488 5687312 -1625480 5687312 1625488 5687312 1657088 5639464 1617256 5683416 -1625488 5687312 1663776 5646144 1657088 5639464 1617256 5683416 -1657088 5639464 1615256 5682392 1617256 5683416 1625488 5687312 -1625480 5687312 1625488 5687312 1617256 5683416 1617344 5683488 -1625480 5687312 1625488 5687312 1617344 5683488 1617376 5683520 -1625488 5687312 1617256 5683416 1617344 5683488 1617376 5683520 -1625480 5687312 1625488 5687312 1617376 5683520 1617424 5683592 -1625488 5687312 1657088 5639464 1617256 5683416 1617344 5683488 -1625488 5687312 1663880 5646248 1663776 5646144 1657088 5639464 -1625480 5687312 1630608 5692360 1625488 5687312 1617376 5683520 -1630608 5692360 1625488 5687312 1625480 5687312 1630448 5692312 -1625480 5687312 1630232 5692312 1630448 5692312 1625488 5687312 -1625480 5687312 1630136 5692352 1630232 5692312 1625488 5687312 -1625480 5687312 1629944 5692528 1630136 5692352 1625488 5687312 -1625480 5687312 1625432 5687352 1629944 5692528 1625488 5687312 -1625432 5687352 1624104 5692408 1629944 5692528 1625488 5687312 -1630136 5692352 1630232 5692312 1625488 5687312 1629944 5692528 -1629944 5692528 1630136 5692352 1625488 5687312 1625432 5687352 -1630232 5692312 1630448 5692312 1625488 5687312 1630136 5692352 -1625488 5687312 1617376 5683520 1625480 5687312 1625432 5687352 -1630448 5692312 1630608 5692360 1625488 5687312 1630232 5692312 -1625488 5687312 1630608 5692360 1663880 5646248 1663776 5646144 -1630608 5692360 1663880 5646248 1625488 5687312 1630448 5692312 -1663880 5646248 1625568 5687272 1630608 5692360 1630704 5692448 -1625488 5687312 1625568 5687272 1663880 5646248 1663776 5646144 -1625488 5687312 1625568 5687272 1663776 5646144 1657088 5639464 -1625488 5687312 1625568 5687272 1657088 5639464 1617256 5683416 -1657088 5639464 1615256 5682392 1617256 5683416 1625568 5687272 -1663776 5646144 1663688 5645984 1657088 5639464 1625568 5687272 -1625488 5687312 1625568 5687272 1617256 5683416 1617344 5683488 -1625568 5687272 1657088 5639464 1617256 5683416 1617344 5683488 -1625488 5687312 1625568 5687272 1617344 5683488 1617376 5683520 -1625488 5687312 1625568 5687272 1617376 5683520 1625480 5687312 -1625568 5687272 1617344 5683488 1617376 5683520 1625480 5687312 -1617376 5683520 1617424 5683592 1625480 5687312 1625568 5687272 -1625480 5687312 1625488 5687312 1625568 5687272 1617424 5683592 -1617376 5683520 1617424 5683592 1625568 5687272 1617344 5683488 -1625568 5687272 1617256 5683416 1617344 5683488 1617376 5683520 -1617424 5683592 1625432 5687352 1625480 5687312 1625568 5687272 -1625568 5687272 1663776 5646144 1657088 5639464 1617256 5683416 -1625568 5687272 1663880 5646248 1663776 5646144 1657088 5639464 -1625488 5687312 1630608 5692360 1625568 5687272 1625480 5687312 -1630608 5692360 1625568 5687272 1625488 5687312 1630448 5692312 -1625488 5687312 1630232 5692312 1630448 5692312 1625568 5687272 -1625488 5687312 1630136 5692352 1630232 5692312 1625568 5687272 -1625488 5687312 1629944 5692528 1630136 5692352 1625568 5687272 -1625488 5687312 1625432 5687352 1629944 5692528 1625568 5687272 -1625432 5687352 1624104 5692408 1629944 5692528 1625568 5687272 -1625488 5687312 1625480 5687312 1625432 5687352 1625568 5687272 -1629944 5692528 1630136 5692352 1625568 5687272 1625432 5687352 -1630136 5692352 1630232 5692312 1625568 5687272 1629944 5692528 -1630232 5692312 1630448 5692312 1625568 5687272 1630136 5692352 -1625568 5687272 1625480 5687312 1625488 5687312 1625432 5687352 -1630448 5692312 1630608 5692360 1625568 5687272 1630232 5692312 -1625568 5687272 1630608 5692360 1663880 5646248 1663776 5646144 -1630608 5692360 1663880 5646248 1625568 5687272 1630448 5692312 -1663880 5646248 1625656 5687248 1630608 5692360 1630704 5692448 -1625568 5687272 1625656 5687248 1663880 5646248 1663776 5646144 -1625568 5687272 1625656 5687248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625656 5687248 -1625568 5687272 1625656 5687248 1657088 5639464 1617256 5683416 -1625568 5687272 1625656 5687248 1617256 5683416 1617344 5683488 -1657088 5639464 1615256 5682392 1617256 5683416 1625656 5687248 -1625568 5687272 1625656 5687248 1617344 5683488 1617376 5683520 -1625656 5687248 1617256 5683416 1617344 5683488 1617376 5683520 -1625568 5687272 1625656 5687248 1617376 5683520 1617424 5683592 -1625568 5687272 1625656 5687248 1617424 5683592 1625480 5687312 -1625656 5687248 1617344 5683488 1617376 5683520 1617424 5683592 -1625656 5687248 1657088 5639464 1617256 5683416 1617344 5683488 -1625656 5687248 1663776 5646144 1657088 5639464 1617256 5683416 -1625656 5687248 1663880 5646248 1663776 5646144 1657088 5639464 -1625568 5687272 1630608 5692360 1625656 5687248 1617424 5683592 -1630608 5692360 1625656 5687248 1625568 5687272 1630448 5692312 -1625568 5687272 1630232 5692312 1630448 5692312 1625656 5687248 -1625568 5687272 1630136 5692352 1630232 5692312 1625656 5687248 -1625568 5687272 1629944 5692528 1630136 5692352 1625656 5687248 -1625568 5687272 1625432 5687352 1629944 5692528 1625656 5687248 -1625432 5687352 1624104 5692408 1629944 5692528 1625656 5687248 -1624104 5692408 1629840 5692680 1629944 5692528 1625656 5687248 -1625432 5687352 1624104 5692408 1625656 5687248 1625568 5687272 -1625568 5687272 1625488 5687312 1625432 5687352 1625656 5687248 -1625488 5687312 1625480 5687312 1625432 5687352 1625656 5687248 -1625432 5687352 1624104 5692408 1625656 5687248 1625488 5687312 -1625432 5687352 1624032 5692416 1624104 5692408 1625656 5687248 -1629944 5692528 1630136 5692352 1625656 5687248 1624104 5692408 -1630136 5692352 1630232 5692312 1625656 5687248 1629944 5692528 -1630232 5692312 1630448 5692312 1625656 5687248 1630136 5692352 -1625656 5687248 1617424 5683592 1625568 5687272 1625488 5687312 -1630448 5692312 1630608 5692360 1625656 5687248 1630232 5692312 -1625656 5687248 1630608 5692360 1663880 5646248 1663776 5646144 -1630608 5692360 1663880 5646248 1625656 5687248 1630448 5692312 -1663880 5646248 1625672 5687248 1630608 5692360 1630704 5692448 -1625656 5687248 1625672 5687248 1663880 5646248 1663776 5646144 -1625656 5687248 1625672 5687248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625672 5687248 -1625656 5687248 1625672 5687248 1657088 5639464 1617256 5683416 -1657088 5639464 1615256 5682392 1617256 5683416 1625672 5687248 -1625656 5687248 1625672 5687248 1617256 5683416 1617344 5683488 -1625656 5687248 1625672 5687248 1617344 5683488 1617376 5683520 -1625656 5687248 1625672 5687248 1617376 5683520 1617424 5683592 -1625672 5687248 1617256 5683416 1617344 5683488 1617376 5683520 -1625672 5687248 1657088 5639464 1617256 5683416 1617344 5683488 -1625672 5687248 1663776 5646144 1657088 5639464 1617256 5683416 -1625672 5687248 1663880 5646248 1663776 5646144 1657088 5639464 -1625656 5687248 1630608 5692360 1625672 5687248 1617376 5683520 -1630608 5692360 1625672 5687248 1625656 5687248 1630448 5692312 -1625656 5687248 1630232 5692312 1630448 5692312 1625672 5687248 -1625656 5687248 1630136 5692352 1630232 5692312 1625672 5687248 -1625656 5687248 1629944 5692528 1630136 5692352 1625672 5687248 -1625656 5687248 1624104 5692408 1629944 5692528 1625672 5687248 -1625656 5687248 1625432 5687352 1624104 5692408 1625672 5687248 -1624104 5692408 1629840 5692680 1629944 5692528 1625672 5687248 -1625656 5687248 1625488 5687312 1625432 5687352 1625672 5687248 -1625432 5687352 1624104 5692408 1625672 5687248 1625488 5687312 -1625488 5687312 1625480 5687312 1625432 5687352 1625672 5687248 -1625656 5687248 1625568 5687272 1625488 5687312 1625672 5687248 -1625488 5687312 1625432 5687352 1625672 5687248 1625568 5687272 -1625432 5687352 1624032 5692416 1624104 5692408 1625672 5687248 -1624104 5692408 1629944 5692528 1625672 5687248 1625432 5687352 -1629944 5692528 1630136 5692352 1625672 5687248 1624104 5692408 -1630136 5692352 1630232 5692312 1625672 5687248 1629944 5692528 -1630232 5692312 1630448 5692312 1625672 5687248 1630136 5692352 -1625672 5687248 1617376 5683520 1625656 5687248 1625568 5687272 -1630448 5692312 1630608 5692360 1625672 5687248 1630232 5692312 -1625672 5687248 1630608 5692360 1663880 5646248 1663776 5646144 -1630608 5692360 1663880 5646248 1625672 5687248 1630448 5692312 -1663880 5646248 1625736 5687272 1630608 5692360 1630704 5692448 -1625672 5687248 1625736 5687272 1663880 5646248 1663776 5646144 -1625672 5687248 1625736 5687272 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625736 5687272 -1625672 5687248 1625736 5687272 1657088 5639464 1617256 5683416 -1625736 5687272 1663880 5646248 1663776 5646144 1657088 5639464 -1625672 5687248 1630608 5692360 1625736 5687272 1657088 5639464 -1630608 5692360 1625736 5687272 1625672 5687248 1630448 5692312 -1625672 5687248 1630232 5692312 1630448 5692312 1625736 5687272 -1625672 5687248 1630136 5692352 1630232 5692312 1625736 5687272 -1625672 5687248 1629944 5692528 1630136 5692352 1625736 5687272 -1625672 5687248 1624104 5692408 1629944 5692528 1625736 5687272 -1624104 5692408 1629840 5692680 1629944 5692528 1625736 5687272 -1625672 5687248 1625432 5687352 1624104 5692408 1625736 5687272 -1625672 5687248 1625488 5687312 1625432 5687352 1625736 5687272 -1625488 5687312 1625480 5687312 1625432 5687352 1625736 5687272 -1625672 5687248 1625568 5687272 1625488 5687312 1625736 5687272 -1625488 5687312 1625432 5687352 1625736 5687272 1625568 5687272 -1625672 5687248 1625656 5687248 1625568 5687272 1625736 5687272 -1625568 5687272 1625488 5687312 1625736 5687272 1625656 5687248 -1625432 5687352 1624032 5692416 1624104 5692408 1625736 5687272 -1625432 5687352 1624104 5692408 1625736 5687272 1625488 5687312 -1624104 5692408 1629944 5692528 1625736 5687272 1625432 5687352 -1629944 5692528 1630136 5692352 1625736 5687272 1624104 5692408 -1630136 5692352 1630232 5692312 1625736 5687272 1629944 5692528 -1630232 5692312 1630448 5692312 1625736 5687272 1630136 5692352 -1625736 5687272 1657088 5639464 1625672 5687248 1625656 5687248 -1630448 5692312 1630608 5692360 1625736 5687272 1630232 5692312 -1625736 5687272 1630608 5692360 1663880 5646248 1663776 5646144 -1630608 5692360 1663880 5646248 1625736 5687272 1630448 5692312 -1663880 5646248 1625824 5687280 1630608 5692360 1630704 5692448 -1625736 5687272 1625824 5687280 1663880 5646248 1663776 5646144 -1625736 5687272 1625824 5687280 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625824 5687280 -1625736 5687272 1625824 5687280 1657088 5639464 1625672 5687248 -1657088 5639464 1617256 5683416 1625672 5687248 1625824 5687280 -1657088 5639464 1615256 5682392 1617256 5683416 1625824 5687280 -1617256 5683416 1617344 5683488 1625672 5687248 1625824 5687280 -1625672 5687248 1625736 5687272 1625824 5687280 1617256 5683416 -1625824 5687280 1663776 5646144 1657088 5639464 1617256 5683416 -1625824 5687280 1663880 5646248 1663776 5646144 1657088 5639464 -1625736 5687272 1630608 5692360 1625824 5687280 1625672 5687248 -1630608 5692360 1625824 5687280 1625736 5687272 1630448 5692312 -1625736 5687272 1630232 5692312 1630448 5692312 1625824 5687280 -1625736 5687272 1630136 5692352 1630232 5692312 1625824 5687280 -1625736 5687272 1629944 5692528 1630136 5692352 1625824 5687280 -1625736 5687272 1624104 5692408 1629944 5692528 1625824 5687280 -1624104 5692408 1629840 5692680 1629944 5692528 1625824 5687280 -1625736 5687272 1625432 5687352 1624104 5692408 1625824 5687280 -1625432 5687352 1624032 5692416 1624104 5692408 1625824 5687280 -1625736 5687272 1625488 5687312 1625432 5687352 1625824 5687280 -1624104 5692408 1629944 5692528 1625824 5687280 1625432 5687352 -1629944 5692528 1630136 5692352 1625824 5687280 1624104 5692408 -1630136 5692352 1630232 5692312 1625824 5687280 1629944 5692528 -1630232 5692312 1630448 5692312 1625824 5687280 1630136 5692352 -1630608 5692360 1663880 5646248 1625824 5687280 1630448 5692312 -1625824 5687280 1625672 5687248 1625736 5687272 1625432 5687352 -1630448 5692312 1630608 5692360 1625824 5687280 1630232 5692312 -1625824 5687280 1630608 5692360 1663880 5646248 1663776 5646144 -1663880 5646248 1625856 5687296 1630608 5692360 1630704 5692448 -1630608 5692360 1625856 5687296 1625824 5687280 1630448 5692312 -1630608 5692360 1663880 5646248 1625856 5687296 1630448 5692312 -1625824 5687280 1630232 5692312 1630448 5692312 1625856 5687296 -1625824 5687280 1630136 5692352 1630232 5692312 1625856 5687296 -1625824 5687280 1629944 5692528 1630136 5692352 1625856 5687296 -1625824 5687280 1624104 5692408 1629944 5692528 1625856 5687296 -1624104 5692408 1629840 5692680 1629944 5692528 1625856 5687296 -1625824 5687280 1625432 5687352 1624104 5692408 1625856 5687296 -1625432 5687352 1624032 5692416 1624104 5692408 1625856 5687296 -1625824 5687280 1625736 5687272 1625432 5687352 1625856 5687296 -1625736 5687272 1625488 5687312 1625432 5687352 1625856 5687296 -1625432 5687352 1624104 5692408 1625856 5687296 1625736 5687272 -1624104 5692408 1629944 5692528 1625856 5687296 1625432 5687352 -1629944 5692528 1630136 5692352 1625856 5687296 1624104 5692408 -1630136 5692352 1630232 5692312 1625856 5687296 1629944 5692528 -1630448 5692312 1630608 5692360 1625856 5687296 1630232 5692312 -1630232 5692312 1630448 5692312 1625856 5687296 1630136 5692352 -1625824 5687280 1625856 5687296 1663880 5646248 1663776 5646144 -1625824 5687280 1625856 5687296 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1625856 5687296 -1625824 5687280 1625856 5687296 1657088 5639464 1617256 5683416 -1625856 5687296 1663880 5646248 1663776 5646144 1657088 5639464 -1625856 5687296 1657088 5639464 1625824 5687280 1625736 5687272 -1625856 5687296 1630608 5692360 1663880 5646248 1663776 5646144 -1663880 5646248 1625904 5687328 1630608 5692360 1630704 5692448 -1630608 5692360 1625904 5687328 1625856 5687296 1630448 5692312 -1625856 5687296 1630232 5692312 1630448 5692312 1625904 5687328 -1630448 5692312 1630608 5692360 1625904 5687328 1630232 5692312 -1625904 5687328 1663880 5646248 1625856 5687296 1630232 5692312 -1630608 5692360 1663880 5646248 1625904 5687328 1630448 5692312 -1625856 5687296 1630136 5692352 1630232 5692312 1625904 5687328 -1625856 5687296 1629944 5692528 1630136 5692352 1625904 5687328 -1625856 5687296 1624104 5692408 1629944 5692528 1625904 5687328 -1624104 5692408 1629840 5692680 1629944 5692528 1625904 5687328 -1625856 5687296 1625432 5687352 1624104 5692408 1625904 5687328 -1625432 5687352 1624032 5692416 1624104 5692408 1625904 5687328 -1625856 5687296 1625736 5687272 1625432 5687352 1625904 5687328 -1625736 5687272 1625488 5687312 1625432 5687352 1625904 5687328 -1625856 5687296 1625824 5687280 1625736 5687272 1625904 5687328 -1625432 5687352 1624104 5692408 1625904 5687328 1625736 5687272 -1624104 5692408 1629944 5692528 1625904 5687328 1625432 5687352 -1629944 5692528 1630136 5692352 1625904 5687328 1624104 5692408 -1630232 5692312 1630448 5692312 1625904 5687328 1630136 5692352 -1625856 5687296 1625736 5687272 1625904 5687328 1663880 5646248 -1630136 5692352 1630232 5692312 1625904 5687328 1629944 5692528 -1625856 5687296 1625904 5687328 1663880 5646248 1663776 5646144 -1625856 5687296 1625736 5687272 1625904 5687328 1663776 5646144 -1625904 5687328 1630608 5692360 1663880 5646248 1663776 5646144 -1625856 5687296 1625904 5687328 1663776 5646144 1657088 5639464 -1663880 5646248 1625984 5687408 1630608 5692360 1630704 5692448 -1625904 5687328 1625984 5687408 1663880 5646248 1663776 5646144 -1630608 5692360 1625984 5687408 1625904 5687328 1630448 5692312 -1630608 5692360 1663880 5646248 1625984 5687408 1630448 5692312 -1625904 5687328 1630232 5692312 1630448 5692312 1625984 5687408 -1625904 5687328 1630136 5692352 1630232 5692312 1625984 5687408 -1630232 5692312 1630448 5692312 1625984 5687408 1630136 5692352 -1625984 5687408 1663880 5646248 1625904 5687328 1630136 5692352 -1630448 5692312 1630608 5692360 1625984 5687408 1630232 5692312 -1625904 5687328 1629944 5692528 1630136 5692352 1625984 5687408 -1625904 5687328 1624104 5692408 1629944 5692528 1625984 5687408 -1624104 5692408 1629840 5692680 1629944 5692528 1625984 5687408 -1625904 5687328 1625432 5687352 1624104 5692408 1625984 5687408 -1625432 5687352 1624032 5692416 1624104 5692408 1625984 5687408 -1625904 5687328 1625736 5687272 1625432 5687352 1625984 5687408 -1625736 5687272 1625488 5687312 1625432 5687352 1625984 5687408 -1625904 5687328 1625856 5687296 1625736 5687272 1625984 5687408 -1625432 5687352 1624104 5692408 1625984 5687408 1625736 5687272 -1624104 5692408 1629944 5692528 1625984 5687408 1625432 5687352 -1630136 5692352 1630232 5692312 1625984 5687408 1629944 5692528 -1625904 5687328 1625736 5687272 1625984 5687408 1663880 5646248 -1629944 5692528 1630136 5692352 1625984 5687408 1624104 5692408 -1625984 5687408 1626016 5687448 1630136 5692352 1630232 5692312 -1625984 5687408 1629944 5692528 1626016 5687448 1630232 5692312 -1626016 5687448 1629944 5692528 1630136 5692352 1630232 5692312 -1625984 5687408 1626016 5687448 1630232 5692312 1630448 5692312 -1625984 5687408 1629944 5692528 1626016 5687448 1630448 5692312 -1626016 5687448 1630136 5692352 1630232 5692312 1630448 5692312 -1625984 5687408 1626016 5687448 1630448 5692312 1630608 5692360 -1625984 5687408 1629944 5692528 1626016 5687448 1630608 5692360 -1625984 5687408 1626016 5687448 1630608 5692360 1663880 5646248 -1625984 5687408 1629944 5692528 1626016 5687448 1663880 5646248 -1630608 5692360 1630704 5692448 1663880 5646248 1626016 5687448 -1626016 5687448 1630232 5692312 1630448 5692312 1630608 5692360 -1626016 5687448 1630448 5692312 1630608 5692360 1663880 5646248 -1625984 5687408 1626016 5687448 1663880 5646248 1625904 5687328 -1629944 5692528 1626016 5687448 1625984 5687408 1624104 5692408 -1626016 5687448 1663880 5646248 1625984 5687408 1624104 5692408 -1629944 5692528 1630136 5692352 1626016 5687448 1624104 5692408 -1629944 5692528 1626016 5687448 1624104 5692408 1629840 5692680 -1629944 5692528 1630136 5692352 1626016 5687448 1629840 5692680 -1624104 5692408 1624120 5692440 1629840 5692680 1626016 5687448 -1625984 5687408 1625432 5687352 1624104 5692408 1626016 5687448 -1625984 5687408 1625432 5687352 1626016 5687448 1663880 5646248 -1625432 5687352 1624032 5692416 1624104 5692408 1626016 5687448 -1625984 5687408 1625736 5687272 1625432 5687352 1626016 5687448 -1626016 5687448 1625432 5687352 1624104 5692408 1629840 5692680 -1629840 5692680 1626048 5687512 1624104 5692408 1624120 5692440 -1626016 5687448 1626048 5687512 1629840 5692680 1629944 5692528 -1626016 5687448 1624104 5692408 1626048 5687512 1629944 5692528 -1626016 5687448 1626048 5687512 1629944 5692528 1630136 5692352 -1626016 5687448 1626048 5687512 1630136 5692352 1630232 5692312 -1626016 5687448 1624104 5692408 1626048 5687512 1630232 5692312 -1626048 5687512 1629944 5692528 1630136 5692352 1630232 5692312 -1626048 5687512 1624104 5692408 1629840 5692680 1629944 5692528 -1626048 5687512 1629840 5692680 1629944 5692528 1630136 5692352 -1626016 5687448 1626048 5687512 1630232 5692312 1630448 5692312 -1626048 5687512 1630136 5692352 1630232 5692312 1630448 5692312 -1626016 5687448 1624104 5692408 1626048 5687512 1630448 5692312 -1626016 5687448 1626048 5687512 1630448 5692312 1630608 5692360 -1626016 5687448 1624104 5692408 1626048 5687512 1630608 5692360 -1626048 5687512 1630232 5692312 1630448 5692312 1630608 5692360 -1626016 5687448 1626048 5687512 1630608 5692360 1663880 5646248 -1624104 5692408 1626048 5687512 1626016 5687448 1625432 5687352 -1626048 5687512 1630608 5692360 1626016 5687448 1625432 5687352 -1624104 5692408 1629840 5692680 1626048 5687512 1625432 5687352 -1624104 5692408 1626048 5687512 1625432 5687352 1624032 5692416 -1626016 5687448 1625984 5687408 1625432 5687352 1626048 5687512 -1626016 5687448 1625984 5687408 1626048 5687512 1630608 5692360 -1625984 5687408 1625736 5687272 1625432 5687352 1626048 5687512 -1625736 5687272 1625488 5687312 1625432 5687352 1626048 5687512 -1625984 5687408 1625904 5687328 1625736 5687272 1626048 5687512 -1625984 5687408 1625736 5687272 1626048 5687512 1626016 5687448 -1625432 5687352 1624104 5692408 1626048 5687512 1625736 5687272 -1626048 5687512 1626064 5687560 1629840 5692680 1629944 5692528 -1626048 5687512 1624104 5692408 1626064 5687560 1629944 5692528 -1624104 5692408 1626064 5687560 1626048 5687512 1625432 5687352 -1626064 5687560 1629944 5692528 1626048 5687512 1625432 5687352 -1626064 5687560 1624104 5692408 1629840 5692680 1629944 5692528 -1624104 5692408 1629840 5692680 1626064 5687560 1625432 5687352 -1629840 5692680 1626064 5687560 1624104 5692408 1624120 5692440 -1626048 5687512 1626064 5687560 1629944 5692528 1630136 5692352 -1626048 5687512 1626064 5687560 1630136 5692352 1630232 5692312 -1626048 5687512 1626064 5687560 1630232 5692312 1630448 5692312 -1626064 5687560 1630136 5692352 1630232 5692312 1630448 5692312 -1626064 5687560 1629840 5692680 1629944 5692528 1630136 5692352 -1626048 5687512 1625432 5687352 1626064 5687560 1630448 5692312 -1626064 5687560 1629944 5692528 1630136 5692352 1630232 5692312 -1624104 5692408 1626064 5687560 1625432 5687352 1624032 5692416 -1626048 5687512 1626064 5687560 1630448 5692312 1630608 5692360 -1626064 5687560 1630232 5692312 1630448 5692312 1630608 5692360 -1626048 5687512 1625432 5687352 1626064 5687560 1630608 5692360 -1626048 5687512 1626064 5687560 1630608 5692360 1626016 5687448 -1626048 5687512 1625736 5687272 1625432 5687352 1626064 5687560 -1626048 5687512 1625736 5687272 1626064 5687560 1630608 5692360 -1625432 5687352 1624104 5692408 1626064 5687560 1625736 5687272 -1625736 5687272 1625488 5687312 1625432 5687352 1626064 5687560 -1626048 5687512 1625984 5687408 1625736 5687272 1626064 5687560 -1626048 5687512 1625984 5687408 1626064 5687560 1630608 5692360 -1625984 5687408 1625904 5687328 1625736 5687272 1626064 5687560 -1626048 5687512 1626016 5687448 1625984 5687408 1626064 5687560 -1625736 5687272 1625432 5687352 1626064 5687560 1625984 5687408 -1626064 5687560 1626096 5687632 1629840 5692680 1629944 5692528 -1626064 5687560 1626096 5687632 1629944 5692528 1630136 5692352 -1626096 5687632 1629840 5692680 1629944 5692528 1630136 5692352 -1626064 5687560 1624104 5692408 1626096 5687632 1630136 5692352 -1624104 5692408 1626096 5687632 1626064 5687560 1625432 5687352 -1626064 5687560 1625736 5687272 1625432 5687352 1626096 5687632 -1626096 5687632 1630136 5692352 1626064 5687560 1625432 5687352 -1626096 5687632 1624104 5692408 1629840 5692680 1629944 5692528 -1624104 5692408 1629840 5692680 1626096 5687632 1625432 5687352 -1629840 5692680 1626096 5687632 1624104 5692408 1624120 5692440 -1626064 5687560 1626096 5687632 1630136 5692352 1630232 5692312 -1626064 5687560 1626096 5687632 1630232 5692312 1630448 5692312 -1626064 5687560 1626096 5687632 1630448 5692312 1630608 5692360 -1626096 5687632 1630232 5692312 1630448 5692312 1630608 5692360 -1626096 5687632 1629944 5692528 1630136 5692352 1630232 5692312 -1626064 5687560 1625432 5687352 1626096 5687632 1630608 5692360 -1626096 5687632 1630136 5692352 1630232 5692312 1630448 5692312 -1624104 5692408 1626096 5687632 1625432 5687352 1624032 5692416 -1626064 5687560 1626096 5687632 1630608 5692360 1626048 5687512 -1626096 5687632 1630448 5692312 1630608 5692360 1626048 5687512 -1626064 5687560 1625432 5687352 1626096 5687632 1626048 5687512 -1630608 5692360 1626016 5687448 1626048 5687512 1626096 5687632 -1626096 5687632 1626096 5687664 1629840 5692680 1629944 5692528 -1626096 5687632 1626096 5687664 1629944 5692528 1630136 5692352 -1626096 5687632 1626096 5687664 1630136 5692352 1630232 5692312 -1626096 5687664 1629944 5692528 1630136 5692352 1630232 5692312 -1626096 5687664 1629840 5692680 1629944 5692528 1630136 5692352 -1626096 5687632 1624104 5692408 1626096 5687664 1630232 5692312 -1624104 5692408 1626096 5687664 1626096 5687632 1625432 5687352 -1626096 5687632 1626064 5687560 1625432 5687352 1626096 5687664 -1626064 5687560 1625736 5687272 1625432 5687352 1626096 5687664 -1626096 5687664 1630232 5692312 1626096 5687632 1626064 5687560 -1625432 5687352 1624104 5692408 1626096 5687664 1626064 5687560 -1626096 5687664 1624104 5692408 1629840 5692680 1629944 5692528 -1624104 5692408 1629840 5692680 1626096 5687664 1625432 5687352 -1629840 5692680 1626096 5687664 1624104 5692408 1624120 5692440 -1626096 5687632 1626096 5687664 1630232 5692312 1630448 5692312 -1626096 5687632 1626096 5687664 1630448 5692312 1630608 5692360 -1626096 5687664 1630136 5692352 1630232 5692312 1630448 5692312 -1626096 5687632 1626064 5687560 1626096 5687664 1630448 5692312 -1624104 5692408 1626096 5687664 1625432 5687352 1624032 5692416 -1625432 5687352 1626064 5687736 1626096 5687664 1626064 5687560 -1625432 5687352 1626064 5687736 1626064 5687560 1625736 5687272 -1626096 5687664 1626096 5687632 1626064 5687560 1626064 5687736 -1626064 5687736 1626096 5687664 1626064 5687560 1625736 5687272 -1626064 5687736 1624104 5692408 1626096 5687664 1626064 5687560 -1626096 5687664 1626064 5687736 1624104 5692408 1629840 5692680 -1626096 5687664 1626064 5687736 1629840 5692680 1629944 5692528 -1626096 5687664 1626064 5687736 1629944 5692528 1630136 5692352 -1626096 5687664 1626064 5687736 1630136 5692352 1630232 5692312 -1626096 5687664 1626064 5687736 1630232 5692312 1630448 5692312 -1626064 5687736 1629944 5692528 1630136 5692352 1630232 5692312 -1626064 5687736 1629840 5692680 1629944 5692528 1630136 5692352 -1626096 5687664 1626064 5687560 1626064 5687736 1630232 5692312 -1626064 5687736 1624104 5692408 1629840 5692680 1629944 5692528 -1626064 5687736 1625432 5687352 1624104 5692408 1629840 5692680 -1625432 5687352 1624104 5692408 1626064 5687736 1625736 5687272 -1624104 5692408 1624120 5692440 1629840 5692680 1626064 5687736 -1624104 5692408 1626064 5687736 1625432 5687352 1624032 5692416 -1625432 5687352 1626064 5687736 1625736 5687272 1625488 5687312 -1626064 5687560 1625984 5687408 1625736 5687272 1626064 5687736 -1625736 5687272 1625432 5687352 1626064 5687736 1625984 5687408 -1626064 5687560 1625984 5687408 1626064 5687736 1626096 5687664 -1625984 5687408 1625904 5687328 1625736 5687272 1626064 5687736 -1626064 5687560 1626048 5687512 1625984 5687408 1626064 5687736 -1626064 5687560 1626048 5687512 1626064 5687736 1626096 5687664 -1626048 5687512 1626016 5687448 1625984 5687408 1626064 5687736 -1625984 5687408 1625736 5687272 1626064 5687736 1626048 5687512 -1626064 5687736 1626040 5687760 1624104 5692408 1629840 5692680 -1626064 5687736 1626040 5687760 1629840 5692680 1629944 5692528 -1626064 5687736 1626040 5687760 1629944 5692528 1630136 5692352 -1626064 5687736 1626040 5687760 1630136 5692352 1630232 5692312 -1626040 5687760 1629840 5692680 1629944 5692528 1630136 5692352 -1626040 5687760 1624104 5692408 1629840 5692680 1629944 5692528 -1626064 5687736 1625432 5687352 1626040 5687760 1630136 5692352 -1625432 5687352 1626040 5687760 1626064 5687736 1625736 5687272 -1626064 5687736 1625984 5687408 1625736 5687272 1626040 5687760 -1626040 5687760 1630136 5692352 1626064 5687736 1625984 5687408 -1625736 5687272 1625432 5687352 1626040 5687760 1625984 5687408 -1626040 5687760 1625432 5687352 1624104 5692408 1629840 5692680 -1625432 5687352 1624104 5692408 1626040 5687760 1625736 5687272 -1624104 5692408 1624120 5692440 1629840 5692680 1626040 5687760 -1624104 5692408 1626040 5687760 1625432 5687352 1624032 5692416 -1625432 5687352 1626040 5687760 1625736 5687272 1625488 5687312 -1625984 5687408 1625904 5687328 1625736 5687272 1626040 5687760 -1626064 5687736 1626048 5687512 1625984 5687408 1626040 5687760 -1625984 5687408 1625736 5687272 1626040 5687760 1626048 5687512 -1626064 5687736 1626048 5687512 1626040 5687760 1630136 5692352 -1626064 5687736 1626064 5687560 1626048 5687512 1626040 5687760 -1626064 5687736 1626096 5687664 1626064 5687560 1626040 5687760 -1626064 5687736 1626064 5687560 1626040 5687760 1630136 5692352 -1626048 5687512 1626016 5687448 1625984 5687408 1626040 5687760 -1626048 5687512 1625984 5687408 1626040 5687760 1626064 5687560 -1626040 5687760 1626000 5687776 1624104 5692408 1629840 5692680 -1626040 5687760 1626000 5687776 1629840 5692680 1629944 5692528 -1626040 5687760 1626000 5687776 1629944 5692528 1630136 5692352 -1626000 5687776 1624104 5692408 1629840 5692680 1629944 5692528 -1626040 5687760 1625432 5687352 1626000 5687776 1629944 5692528 -1625432 5687352 1626000 5687776 1626040 5687760 1625736 5687272 -1626040 5687760 1625984 5687408 1625736 5687272 1626000 5687776 -1626040 5687760 1626048 5687512 1625984 5687408 1626000 5687776 -1625984 5687408 1625736 5687272 1626000 5687776 1626048 5687512 -1626000 5687776 1629944 5692528 1626040 5687760 1626048 5687512 -1625736 5687272 1625432 5687352 1626000 5687776 1625984 5687408 -1626000 5687776 1625432 5687352 1624104 5692408 1629840 5692680 -1625432 5687352 1624104 5692408 1626000 5687776 1625736 5687272 -1624104 5692408 1624120 5692440 1629840 5692680 1626000 5687776 -1624104 5692408 1626000 5687776 1625432 5687352 1624032 5692416 -1625432 5687352 1626000 5687776 1625736 5687272 1625488 5687312 -1625984 5687408 1625904 5687328 1625736 5687272 1626000 5687776 -1626048 5687512 1626016 5687448 1625984 5687408 1626000 5687776 -1626048 5687512 1626016 5687448 1626000 5687776 1626040 5687760 -1625984 5687408 1625736 5687272 1626000 5687776 1626016 5687448 -1626040 5687760 1626064 5687560 1626048 5687512 1626000 5687776 -1626048 5687512 1626016 5687448 1626000 5687776 1626064 5687560 -1626040 5687760 1626064 5687560 1626000 5687776 1629944 5692528 -1626040 5687760 1626064 5687736 1626064 5687560 1626000 5687776 -1626064 5687736 1626096 5687664 1626064 5687560 1626000 5687776 -1626096 5687664 1626096 5687632 1626064 5687560 1626000 5687776 -1626096 5687664 1626096 5687632 1626000 5687776 1626064 5687736 -1626040 5687760 1626064 5687736 1626000 5687776 1629944 5692528 -1626064 5687736 1626096 5687664 1626000 5687776 1626040 5687760 -1626064 5687560 1626048 5687512 1626000 5687776 1626096 5687632 -1626000 5687776 1625968 5687784 1624104 5692408 1629840 5692680 -1625432 5687352 1625968 5687784 1626000 5687776 1625736 5687272 -1626000 5687776 1625984 5687408 1625736 5687272 1625968 5687784 -1626000 5687776 1626016 5687448 1625984 5687408 1625968 5687784 -1625984 5687408 1625736 5687272 1625968 5687784 1626016 5687448 -1625968 5687784 1624104 5692408 1626000 5687776 1626016 5687448 -1625736 5687272 1625432 5687352 1625968 5687784 1625984 5687408 -1625432 5687352 1624104 5692408 1625968 5687784 1625736 5687272 -1624104 5692408 1625968 5687784 1625432 5687352 1624032 5692416 -1625432 5687352 1625968 5687784 1625736 5687272 1625488 5687312 -1625968 5687784 1625984 5687408 1625736 5687272 1625488 5687312 -1625432 5687352 1624104 5692408 1625968 5687784 1625488 5687312 -1625736 5687272 1625568 5687272 1625488 5687312 1625968 5687784 -1625432 5687352 1625968 5687784 1625488 5687312 1625480 5687312 -1625984 5687408 1625904 5687328 1625736 5687272 1625968 5687784 -1625984 5687408 1625904 5687328 1625968 5687784 1626016 5687448 -1625736 5687272 1625488 5687312 1625968 5687784 1625904 5687328 -1625904 5687328 1625856 5687296 1625736 5687272 1625968 5687784 -1626000 5687776 1626048 5687512 1626016 5687448 1625968 5687784 -1626000 5687776 1626064 5687560 1626048 5687512 1625968 5687784 -1626016 5687448 1625984 5687408 1625968 5687784 1626048 5687512 -1626000 5687776 1626064 5687560 1625968 5687784 1624104 5692408 -1626048 5687512 1626016 5687448 1625968 5687784 1626064 5687560 -1626000 5687776 1626096 5687632 1626064 5687560 1625968 5687784 -1625968 5687784 1625936 5687776 1624104 5692408 1626000 5687776 -1625432 5687352 1625936 5687776 1625968 5687784 1625488 5687312 -1625936 5687776 1624104 5692408 1625968 5687784 1625488 5687312 -1625432 5687352 1624104 5692408 1625936 5687776 1625488 5687312 -1625432 5687352 1625936 5687776 1625488 5687312 1625480 5687312 -1624104 5692408 1625936 5687776 1625432 5687352 1624032 5692416 -1625968 5687784 1625736 5687272 1625488 5687312 1625936 5687776 -1625968 5687784 1625904 5687328 1625736 5687272 1625936 5687776 -1625968 5687784 1625904 5687328 1625936 5687776 1624104 5692408 -1625488 5687312 1625432 5687352 1625936 5687776 1625736 5687272 -1625736 5687272 1625568 5687272 1625488 5687312 1625936 5687776 -1625736 5687272 1625488 5687312 1625936 5687776 1625904 5687328 -1625904 5687328 1625856 5687296 1625736 5687272 1625936 5687776 -1625968 5687784 1625984 5687408 1625904 5687328 1625936 5687776 -1625968 5687784 1626016 5687448 1625984 5687408 1625936 5687776 -1625968 5687784 1626048 5687512 1626016 5687448 1625936 5687776 -1626016 5687448 1625984 5687408 1625936 5687776 1626048 5687512 -1625904 5687328 1625736 5687272 1625936 5687776 1625984 5687408 -1625968 5687784 1626048 5687512 1625936 5687776 1624104 5692408 -1625984 5687408 1625904 5687328 1625936 5687776 1626016 5687448 -1625968 5687784 1626064 5687560 1626048 5687512 1625936 5687776 -1625968 5687784 1626000 5687776 1626064 5687560 1625936 5687776 -1626048 5687512 1626016 5687448 1625936 5687776 1626064 5687560 -1625968 5687784 1626000 5687776 1625936 5687776 1624104 5692408 -1626064 5687560 1626048 5687512 1625936 5687776 1626000 5687776 -1626000 5687776 1626096 5687632 1626064 5687560 1625936 5687776 -1626000 5687776 1626096 5687632 1625936 5687776 1625968 5687784 -1626000 5687776 1626096 5687664 1626096 5687632 1625936 5687776 -1626000 5687776 1626096 5687664 1625936 5687776 1625968 5687784 -1626000 5687776 1626064 5687736 1626096 5687664 1625936 5687776 -1626000 5687776 1626064 5687736 1625936 5687776 1625968 5687784 -1626096 5687664 1626096 5687632 1625936 5687776 1626064 5687736 -1626000 5687776 1626040 5687760 1626064 5687736 1625936 5687776 -1626064 5687560 1626048 5687512 1625936 5687776 1626096 5687632 -1626096 5687632 1626064 5687560 1625936 5687776 1626096 5687664 -1625936 5687776 1625848 5687744 1624104 5692408 1625968 5687784 -1625432 5687352 1625848 5687744 1625936 5687776 1625488 5687312 -1625936 5687776 1625736 5687272 1625488 5687312 1625848 5687744 -1625848 5687744 1624104 5692408 1625936 5687776 1625736 5687272 -1625488 5687312 1625432 5687352 1625848 5687744 1625736 5687272 -1625432 5687352 1624104 5692408 1625848 5687744 1625488 5687312 -1625736 5687272 1625568 5687272 1625488 5687312 1625848 5687744 -1625432 5687352 1625848 5687744 1625488 5687312 1625480 5687312 -1624104 5692408 1625848 5687744 1625432 5687352 1624032 5692416 -1624104 5692408 1625936 5687776 1625848 5687744 1624032 5692416 -1625848 5687744 1625488 5687312 1625432 5687352 1624032 5692416 -1625432 5687352 1623136 5692368 1624032 5692416 1625848 5687744 -1625432 5687352 1623136 5692368 1625848 5687744 1625488 5687312 -1625432 5687352 1623032 5692344 1623136 5692368 1625848 5687744 -1625432 5687352 1623032 5692344 1625848 5687744 1625488 5687312 -1623136 5692368 1624032 5692416 1625848 5687744 1623032 5692344 -1623136 5692368 1623448 5692552 1624032 5692416 1625848 5687744 -1624032 5692416 1624104 5692408 1625848 5687744 1623136 5692368 -1625432 5687352 1623000 5692344 1623032 5692344 1625848 5687744 -1625936 5687776 1625904 5687328 1625736 5687272 1625848 5687744 -1625936 5687776 1625984 5687408 1625904 5687328 1625848 5687744 -1625736 5687272 1625488 5687312 1625848 5687744 1625904 5687328 -1625936 5687776 1625984 5687408 1625848 5687744 1624104 5692408 -1625904 5687328 1625736 5687272 1625848 5687744 1625984 5687408 -1625904 5687328 1625856 5687296 1625736 5687272 1625848 5687744 -1625936 5687776 1626016 5687448 1625984 5687408 1625848 5687744 -1625936 5687776 1626048 5687512 1626016 5687448 1625848 5687744 -1625936 5687776 1626064 5687560 1626048 5687512 1625848 5687744 -1626048 5687512 1626016 5687448 1625848 5687744 1626064 5687560 -1625984 5687408 1625904 5687328 1625848 5687744 1626016 5687448 -1625936 5687776 1626064 5687560 1625848 5687744 1624104 5692408 -1626016 5687448 1625984 5687408 1625848 5687744 1626048 5687512 -1625936 5687776 1626096 5687632 1626064 5687560 1625848 5687744 -1625432 5687352 1625760 5687704 1625848 5687744 1625488 5687312 -1625848 5687744 1625736 5687272 1625488 5687312 1625760 5687704 -1625848 5687744 1625904 5687328 1625736 5687272 1625760 5687704 -1625736 5687272 1625488 5687312 1625760 5687704 1625904 5687328 -1625760 5687704 1623032 5692344 1625848 5687744 1625904 5687328 -1625488 5687312 1625432 5687352 1625760 5687704 1625736 5687272 -1625432 5687352 1623032 5692344 1625760 5687704 1625488 5687312 -1625736 5687272 1625568 5687272 1625488 5687312 1625760 5687704 -1625736 5687272 1625568 5687272 1625760 5687704 1625904 5687328 -1625488 5687312 1625432 5687352 1625760 5687704 1625568 5687272 -1625432 5687352 1625760 5687704 1625488 5687312 1625480 5687312 -1625736 5687272 1625656 5687248 1625568 5687272 1625760 5687704 -1625848 5687744 1625760 5687704 1623032 5692344 1623136 5692368 -1625848 5687744 1625904 5687328 1625760 5687704 1623136 5692368 -1625760 5687704 1625432 5687352 1623032 5692344 1623136 5692368 -1625848 5687744 1625760 5687704 1623136 5692368 1624032 5692416 -1625848 5687744 1625904 5687328 1625760 5687704 1624032 5692416 -1625760 5687704 1623032 5692344 1623136 5692368 1624032 5692416 -1623136 5692368 1623448 5692552 1624032 5692416 1625760 5687704 -1625848 5687744 1625760 5687704 1624032 5692416 1624104 5692408 -1625848 5687744 1625760 5687704 1624104 5692408 1625936 5687776 -1625848 5687744 1625904 5687328 1625760 5687704 1624104 5692408 -1625760 5687704 1623136 5692368 1624032 5692416 1624104 5692408 -1623032 5692344 1625760 5687704 1625432 5687352 1623000 5692344 -1625848 5687744 1625984 5687408 1625904 5687328 1625760 5687704 -1625848 5687744 1626016 5687448 1625984 5687408 1625760 5687704 -1625904 5687328 1625736 5687272 1625760 5687704 1625984 5687408 -1625848 5687744 1626016 5687448 1625760 5687704 1624104 5692408 -1625984 5687408 1625904 5687328 1625760 5687704 1626016 5687448 -1625904 5687328 1625856 5687296 1625736 5687272 1625760 5687704 -1625904 5687328 1625856 5687296 1625760 5687704 1625984 5687408 -1625736 5687272 1625568 5687272 1625760 5687704 1625856 5687296 -1625856 5687296 1625824 5687280 1625736 5687272 1625760 5687704 -1625848 5687744 1626048 5687512 1626016 5687448 1625760 5687704 -1625848 5687744 1626064 5687560 1626048 5687512 1625760 5687704 -1626016 5687448 1625984 5687408 1625760 5687704 1626048 5687512 -1625848 5687744 1626048 5687512 1625760 5687704 1624104 5692408 -1625760 5687704 1625672 5687640 1623032 5692344 1623136 5692368 -1625760 5687704 1625432 5687352 1625672 5687640 1623136 5692368 -1625432 5687352 1625672 5687640 1625760 5687704 1625488 5687312 -1625760 5687704 1625568 5687272 1625488 5687312 1625672 5687640 -1625672 5687640 1623136 5692368 1625760 5687704 1625568 5687272 -1625488 5687312 1625432 5687352 1625672 5687640 1625568 5687272 -1625672 5687640 1625432 5687352 1623032 5692344 1623136 5692368 -1625432 5687352 1623032 5692344 1625672 5687640 1625488 5687312 -1625760 5687704 1625736 5687272 1625568 5687272 1625672 5687640 -1625760 5687704 1625856 5687296 1625736 5687272 1625672 5687640 -1625568 5687272 1625488 5687312 1625672 5687640 1625736 5687272 -1625760 5687704 1625856 5687296 1625672 5687640 1623136 5692368 -1625736 5687272 1625568 5687272 1625672 5687640 1625856 5687296 -1625432 5687352 1625672 5687640 1625488 5687312 1625480 5687312 -1625736 5687272 1625656 5687248 1625568 5687272 1625672 5687640 -1625760 5687704 1625672 5687640 1623136 5692368 1624032 5692416 -1625672 5687640 1623032 5692344 1623136 5692368 1624032 5692416 -1625760 5687704 1625856 5687296 1625672 5687640 1624032 5692416 -1625760 5687704 1625672 5687640 1624032 5692416 1624104 5692408 -1625760 5687704 1625856 5687296 1625672 5687640 1624104 5692408 -1625672 5687640 1623136 5692368 1624032 5692416 1624104 5692408 -1623136 5692368 1623448 5692552 1624032 5692416 1625672 5687640 -1625760 5687704 1625672 5687640 1624104 5692408 1625848 5687744 -1623032 5692344 1625672 5687640 1625432 5687352 1623000 5692344 -1625856 5687296 1625824 5687280 1625736 5687272 1625672 5687640 -1625760 5687704 1625904 5687328 1625856 5687296 1625672 5687640 -1625760 5687704 1625984 5687408 1625904 5687328 1625672 5687640 -1625856 5687296 1625736 5687272 1625672 5687640 1625904 5687328 -1625760 5687704 1625984 5687408 1625672 5687640 1624104 5692408 -1625760 5687704 1626016 5687448 1625984 5687408 1625672 5687640 -1625904 5687328 1625856 5687296 1625672 5687640 1625984 5687408 -1625672 5687640 1625576 5687568 1623032 5692344 1623136 5692368 -1625672 5687640 1625576 5687568 1623136 5692368 1624032 5692416 -1625576 5687568 1623032 5692344 1623136 5692368 1624032 5692416 -1625672 5687640 1625432 5687352 1625576 5687568 1624032 5692416 -1625432 5687352 1625576 5687568 1625672 5687640 1625488 5687312 -1625672 5687640 1625568 5687272 1625488 5687312 1625576 5687568 -1625672 5687640 1625736 5687272 1625568 5687272 1625576 5687568 -1625568 5687272 1625488 5687312 1625576 5687568 1625736 5687272 -1625576 5687568 1624032 5692416 1625672 5687640 1625736 5687272 -1625488 5687312 1625432 5687352 1625576 5687568 1625568 5687272 -1625576 5687568 1625432 5687352 1623032 5692344 1623136 5692368 -1625432 5687352 1623032 5692344 1625576 5687568 1625488 5687312 -1625672 5687640 1625856 5687296 1625736 5687272 1625576 5687568 -1625432 5687352 1625576 5687568 1625488 5687312 1625480 5687312 -1625736 5687272 1625656 5687248 1625568 5687272 1625576 5687568 -1625672 5687640 1625576 5687568 1624032 5692416 1624104 5692408 -1625576 5687568 1623136 5692368 1624032 5692416 1624104 5692408 -1625672 5687640 1625736 5687272 1625576 5687568 1624104 5692408 -1625672 5687640 1625576 5687568 1624104 5692408 1625760 5687704 -1623136 5692368 1623448 5692552 1624032 5692416 1625576 5687568 -1623032 5692344 1625576 5687568 1625432 5687352 1623000 5692344 -1623032 5692344 1623136 5692368 1625576 5687568 1623000 5692344 -1625576 5687568 1625488 5687312 1625432 5687352 1623000 5692344 -1625432 5687352 1622936 5692376 1623000 5692344 1625576 5687568 -1625432 5687352 1625520 5687512 1625576 5687568 1625488 5687312 -1625576 5687568 1625568 5687272 1625488 5687312 1625520 5687512 -1625576 5687568 1625736 5687272 1625568 5687272 1625520 5687512 -1625576 5687568 1625672 5687640 1625736 5687272 1625520 5687512 -1625568 5687272 1625488 5687312 1625520 5687512 1625736 5687272 -1625520 5687512 1623000 5692344 1625576 5687568 1625736 5687272 -1625488 5687312 1625432 5687352 1625520 5687512 1625568 5687272 -1625432 5687352 1623000 5692344 1625520 5687512 1625488 5687312 -1625432 5687352 1625520 5687512 1625488 5687312 1625480 5687312 -1625736 5687272 1625656 5687248 1625568 5687272 1625520 5687512 -1623000 5692344 1625520 5687512 1625432 5687352 1622936 5692376 -1625576 5687568 1625520 5687512 1623000 5692344 1623032 5692344 -1625576 5687568 1625520 5687512 1623032 5692344 1623136 5692368 -1625576 5687568 1625736 5687272 1625520 5687512 1623032 5692344 -1625520 5687512 1625432 5687352 1623000 5692344 1623032 5692344 -1625520 5687512 1625472 5687448 1623000 5692344 1623032 5692344 -1625520 5687512 1625432 5687352 1625472 5687448 1623032 5692344 -1625432 5687352 1625472 5687448 1625520 5687512 1625488 5687312 -1625520 5687512 1625568 5687272 1625488 5687312 1625472 5687448 -1625520 5687512 1625736 5687272 1625568 5687272 1625472 5687448 -1625472 5687448 1623032 5692344 1625520 5687512 1625568 5687272 -1625488 5687312 1625432 5687352 1625472 5687448 1625568 5687272 -1625472 5687448 1625432 5687352 1623000 5692344 1623032 5692344 -1625432 5687352 1623000 5692344 1625472 5687448 1625488 5687312 -1625432 5687352 1625472 5687448 1625488 5687312 1625480 5687312 -1623000 5692344 1625472 5687448 1625432 5687352 1622936 5692376 -1625520 5687512 1625472 5687448 1623032 5692344 1625576 5687568 -1625472 5687448 1625432 5687384 1623000 5692344 1623032 5692344 -1625432 5687352 1625432 5687384 1625472 5687448 1625488 5687312 -1625472 5687448 1625568 5687272 1625488 5687312 1625432 5687384 -1625432 5687384 1623000 5692344 1625472 5687448 1625488 5687312 -1625432 5687352 1623000 5692344 1625432 5687384 1625488 5687312 -1625432 5687352 1625432 5687384 1625488 5687312 1625480 5687312 -1623000 5692344 1625432 5687384 1625432 5687352 1622936 5692376 -1623000 5692344 1625472 5687448 1625432 5687384 1622936 5692376 -1625432 5687384 1625488 5687312 1625432 5687352 1622936 5692376 -1625432 5687352 1615488 5689272 1622936 5692376 1625432 5687384 -1625432 5687352 1615488 5689272 1625432 5687384 1625488 5687312 -1615488 5689272 1615488 5689328 1622936 5692376 1625432 5687384 -1622936 5692376 1623000 5692344 1625432 5687384 1615488 5689272 -1625432 5687352 1617424 5683648 1615488 5689272 1625432 5687384 -1625432 5687352 1617424 5683648 1625432 5687384 1625488 5687312 -1615488 5689272 1622936 5692376 1625432 5687384 1617424 5683648 -1625432 5687352 1617424 5683592 1617424 5683648 1625432 5687384 -1617424 5683648 1617328 5683704 1615488 5689272 1625432 5687384 -1625432 5687384 1621992 5687904 1615488 5689272 1622936 5692376 -1625432 5687384 1617424 5683648 1621992 5687904 1622936 5692376 -1621992 5687904 1617424 5683648 1615488 5689272 1622936 5692376 -1615488 5689272 1615488 5689328 1622936 5692376 1621992 5687904 -1615488 5689272 1615488 5689328 1621992 5687904 1617424 5683648 -1622936 5692376 1625432 5687384 1621992 5687904 1615488 5689328 -1615488 5689328 1618304 5694912 1622936 5692376 1621992 5687904 -1625432 5687384 1621992 5687904 1622936 5692376 1623000 5692344 -1625432 5687384 1621992 5687904 1623000 5692344 1625472 5687448 -1623000 5692344 1623032 5692344 1625472 5687448 1621992 5687904 -1623032 5692344 1625520 5687512 1625472 5687448 1621992 5687904 -1623032 5692344 1625520 5687512 1621992 5687904 1623000 5692344 -1625472 5687448 1625432 5687384 1621992 5687904 1625520 5687512 -1625432 5687384 1617424 5683648 1621992 5687904 1625472 5687448 -1621992 5687904 1615488 5689328 1622936 5692376 1623000 5692344 -1621992 5687904 1622936 5692376 1623000 5692344 1623032 5692344 -1623032 5692344 1625576 5687568 1625520 5687512 1621992 5687904 -1623032 5692344 1623136 5692368 1625576 5687568 1621992 5687904 -1623136 5692368 1624032 5692416 1625576 5687568 1621992 5687904 -1624032 5692416 1624104 5692408 1625576 5687568 1621992 5687904 -1624032 5692416 1624104 5692408 1621992 5687904 1623136 5692368 -1623136 5692368 1624032 5692416 1621992 5687904 1623032 5692344 -1625520 5687512 1625472 5687448 1621992 5687904 1625576 5687568 -1623032 5692344 1623136 5692368 1621992 5687904 1623000 5692344 -1624104 5692408 1625672 5687640 1625576 5687568 1621992 5687904 -1623136 5692368 1623448 5692552 1624032 5692416 1621992 5687904 -1625576 5687568 1625520 5687512 1621992 5687904 1624104 5692408 -1617424 5683648 1621992 5687904 1625432 5687384 1625432 5687352 -1621992 5687904 1625472 5687448 1625432 5687384 1625432 5687352 -1617424 5683648 1615488 5689272 1621992 5687904 1625432 5687352 -1617424 5683648 1621992 5687904 1625432 5687352 1617424 5683592 -1617424 5683648 1615488 5689272 1621992 5687904 1617424 5683592 -1625432 5687352 1625480 5687312 1617424 5683592 1621992 5687904 -1617424 5683592 1617424 5683648 1621992 5687904 1625480 5687312 -1621992 5687904 1625432 5687384 1625432 5687352 1625480 5687312 -1615488 5689272 1621992 5687904 1617424 5683648 1617328 5683704 -1615488 5689272 1615488 5689328 1621992 5687904 1617328 5683704 -1621992 5687904 1617424 5683592 1617424 5683648 1617328 5683704 -1615488 5689272 1621992 5687904 1617328 5683704 1615440 5689168 -1615488 5689272 1615488 5689328 1621992 5687904 1615440 5689168 -1617328 5683704 1617280 5683720 1615440 5689168 1621992 5687904 -1615440 5689168 1615488 5689272 1621992 5687904 1617280 5683720 -1617424 5683648 1617368 5683680 1617328 5683704 1621992 5687904 -1621992 5687904 1617424 5683648 1617328 5683704 1617280 5683720 -1617280 5683720 1615392 5689120 1615440 5689168 1621992 5687904 -1625480 5687312 1625568 5687272 1617424 5683592 1621992 5687904 -1625480 5687312 1622056 5687840 1621992 5687904 1625432 5687352 -1622056 5687840 1617424 5683592 1621992 5687904 1625432 5687352 -1625480 5687312 1617424 5683592 1622056 5687840 1625432 5687352 -1621992 5687904 1622056 5687840 1617424 5683592 1617424 5683648 -1621992 5687904 1625432 5687352 1622056 5687840 1617424 5683648 -1621992 5687904 1622056 5687840 1617424 5683648 1617328 5683704 -1622056 5687840 1625480 5687312 1617424 5683592 1617424 5683648 -1621992 5687904 1625432 5687384 1625432 5687352 1622056 5687840 -1621992 5687904 1625472 5687448 1625432 5687384 1622056 5687840 -1621992 5687904 1625520 5687512 1625472 5687448 1622056 5687840 -1621992 5687904 1625576 5687568 1625520 5687512 1622056 5687840 -1625520 5687512 1625472 5687448 1622056 5687840 1625576 5687568 -1625472 5687448 1625432 5687384 1622056 5687840 1625520 5687512 -1621992 5687904 1625576 5687568 1622056 5687840 1617424 5683648 -1625432 5687352 1625480 5687312 1622056 5687840 1625432 5687384 -1621992 5687904 1624104 5692408 1625576 5687568 1622056 5687840 -1621992 5687904 1624032 5692416 1624104 5692408 1622056 5687840 -1625576 5687568 1625520 5687512 1622056 5687840 1624104 5692408 -1621992 5687904 1624104 5692408 1622056 5687840 1617424 5683648 -1624104 5692408 1625672 5687640 1625576 5687568 1622056 5687840 -1625432 5687384 1625432 5687352 1622056 5687840 1625472 5687448 -1617424 5683592 1622056 5687840 1625480 5687312 1625568 5687272 -1622056 5687840 1622080 5687816 1617424 5683592 1617424 5683648 -1622056 5687840 1625480 5687312 1622080 5687816 1617424 5683648 -1625480 5687312 1622080 5687816 1622056 5687840 1625432 5687352 -1622080 5687816 1617424 5683648 1622056 5687840 1625432 5687352 -1622080 5687816 1625480 5687312 1617424 5683592 1617424 5683648 -1625480 5687312 1617424 5683592 1622080 5687816 1625432 5687352 -1622056 5687840 1625432 5687384 1625432 5687352 1622080 5687816 -1622056 5687840 1625432 5687384 1622080 5687816 1617424 5683648 -1625432 5687352 1625480 5687312 1622080 5687816 1625432 5687384 -1622056 5687840 1622080 5687816 1617424 5683648 1621992 5687904 -1622056 5687840 1625472 5687448 1625432 5687384 1622080 5687816 -1622056 5687840 1625520 5687512 1625472 5687448 1622080 5687816 -1622056 5687840 1625576 5687568 1625520 5687512 1622080 5687816 -1622056 5687840 1624104 5692408 1625576 5687568 1622080 5687816 -1625576 5687568 1625520 5687512 1622080 5687816 1624104 5692408 -1625520 5687512 1625472 5687448 1622080 5687816 1625576 5687568 -1622056 5687840 1624104 5692408 1622080 5687816 1617424 5683648 -1624104 5692408 1625672 5687640 1625576 5687568 1622080 5687816 -1625432 5687384 1625432 5687352 1622080 5687816 1625472 5687448 -1622056 5687840 1621992 5687904 1624104 5692408 1622080 5687816 -1625472 5687448 1625432 5687384 1622080 5687816 1625520 5687512 -1617424 5683592 1622080 5687816 1625480 5687312 1625568 5687272 -1622080 5687816 1622112 5687792 1617424 5683592 1617424 5683648 -1622080 5687816 1622112 5687792 1617424 5683648 1622056 5687840 -1622080 5687816 1625480 5687312 1622112 5687792 1617424 5683648 -1625480 5687312 1622112 5687792 1622080 5687816 1625432 5687352 -1622080 5687816 1625432 5687384 1625432 5687352 1622112 5687792 -1622112 5687792 1617424 5683648 1622080 5687816 1625432 5687384 -1625432 5687352 1625480 5687312 1622112 5687792 1625432 5687384 -1622112 5687792 1625480 5687312 1617424 5683592 1617424 5683648 -1625480 5687312 1617424 5683592 1622112 5687792 1625432 5687352 -1622080 5687816 1625472 5687448 1625432 5687384 1622112 5687792 -1625432 5687384 1625432 5687352 1622112 5687792 1625472 5687448 -1622080 5687816 1625472 5687448 1622112 5687792 1617424 5683648 -1622080 5687816 1625520 5687512 1625472 5687448 1622112 5687792 -1622080 5687816 1625576 5687568 1625520 5687512 1622112 5687792 -1622080 5687816 1624104 5692408 1625576 5687568 1622112 5687792 -1622080 5687816 1622056 5687840 1624104 5692408 1622112 5687792 -1624104 5692408 1625576 5687568 1622112 5687792 1622056 5687840 -1625576 5687568 1625520 5687512 1622112 5687792 1624104 5692408 -1622080 5687816 1622056 5687840 1622112 5687792 1617424 5683648 -1624104 5692408 1625672 5687640 1625576 5687568 1622112 5687792 -1625472 5687448 1625432 5687384 1622112 5687792 1625520 5687512 -1622056 5687840 1621992 5687904 1624104 5692408 1622112 5687792 -1621992 5687904 1624032 5692416 1624104 5692408 1622112 5687792 -1622056 5687840 1621992 5687904 1622112 5687792 1622080 5687816 -1624104 5692408 1625576 5687568 1622112 5687792 1621992 5687904 -1625520 5687512 1625472 5687448 1622112 5687792 1625576 5687568 -1617424 5683592 1622112 5687792 1625480 5687312 1625568 5687272 -1622112 5687792 1622160 5687776 1617424 5683592 1617424 5683648 -1622112 5687792 1622160 5687776 1617424 5683648 1622080 5687816 -1622112 5687792 1625480 5687312 1622160 5687776 1617424 5683648 -1625480 5687312 1622160 5687776 1622112 5687792 1625432 5687352 -1622112 5687792 1625432 5687384 1625432 5687352 1622160 5687776 -1622112 5687792 1625472 5687448 1625432 5687384 1622160 5687776 -1625432 5687384 1625432 5687352 1622160 5687776 1625472 5687448 -1622160 5687776 1617424 5683648 1622112 5687792 1625472 5687448 -1625432 5687352 1625480 5687312 1622160 5687776 1625432 5687384 -1622160 5687776 1625480 5687312 1617424 5683592 1617424 5683648 -1625480 5687312 1617424 5683592 1622160 5687776 1625432 5687352 -1622112 5687792 1625520 5687512 1625472 5687448 1622160 5687776 -1625472 5687448 1625432 5687384 1622160 5687776 1625520 5687512 -1622112 5687792 1625520 5687512 1622160 5687776 1617424 5683648 -1622112 5687792 1625576 5687568 1625520 5687512 1622160 5687776 -1622112 5687792 1624104 5692408 1625576 5687568 1622160 5687776 -1622112 5687792 1621992 5687904 1624104 5692408 1622160 5687776 -1621992 5687904 1624032 5692416 1624104 5692408 1622160 5687776 -1621992 5687904 1623136 5692368 1624032 5692416 1622160 5687776 -1624032 5692416 1624104 5692408 1622160 5687776 1623136 5692368 -1621992 5687904 1623032 5692344 1623136 5692368 1622160 5687776 -1623136 5692368 1624032 5692416 1622160 5687776 1623032 5692344 -1621992 5687904 1623000 5692344 1623032 5692344 1622160 5687776 -1621992 5687904 1623032 5692344 1622160 5687776 1622112 5687792 -1624104 5692408 1625576 5687568 1622160 5687776 1624032 5692416 -1622112 5687792 1621992 5687904 1622160 5687776 1617424 5683648 -1624104 5692408 1625672 5687640 1625576 5687568 1622160 5687776 -1623136 5692368 1623448 5692552 1624032 5692416 1622160 5687776 -1625520 5687512 1625472 5687448 1622160 5687776 1625576 5687568 -1622112 5687792 1622056 5687840 1621992 5687904 1622160 5687776 -1622112 5687792 1622080 5687816 1622056 5687840 1622160 5687776 -1621992 5687904 1623032 5692344 1622160 5687776 1622056 5687840 -1622112 5687792 1622080 5687816 1622160 5687776 1617424 5683648 -1622056 5687840 1621992 5687904 1622160 5687776 1622080 5687816 -1625576 5687568 1625520 5687512 1622160 5687776 1624104 5692408 -1617424 5683592 1622160 5687776 1625480 5687312 1625568 5687272 -1624104 5692408 1622200 5687776 1622160 5687776 1624032 5692416 -1622160 5687776 1623136 5692368 1624032 5692416 1622200 5687776 -1622160 5687776 1623032 5692344 1623136 5692368 1622200 5687776 -1623136 5692368 1624032 5692416 1622200 5687776 1623032 5692344 -1622160 5687776 1621992 5687904 1623032 5692344 1622200 5687776 -1623032 5692344 1623136 5692368 1622200 5687776 1621992 5687904 -1621992 5687904 1623000 5692344 1623032 5692344 1622200 5687776 -1622160 5687776 1622056 5687840 1621992 5687904 1622200 5687776 -1621992 5687904 1623032 5692344 1622200 5687776 1622056 5687840 -1624032 5692416 1624104 5692408 1622200 5687776 1623136 5692368 -1622200 5687776 1625576 5687568 1622160 5687776 1622056 5687840 -1624104 5692408 1625576 5687568 1622200 5687776 1624032 5692416 -1625576 5687568 1622200 5687776 1624104 5692408 1625672 5687640 -1623136 5692368 1623448 5692552 1624032 5692416 1622200 5687776 -1622160 5687776 1622080 5687816 1622056 5687840 1622200 5687776 -1622160 5687776 1622112 5687792 1622080 5687816 1622200 5687776 -1622056 5687840 1621992 5687904 1622200 5687776 1622080 5687816 -1622160 5687776 1622080 5687816 1622200 5687776 1625576 5687568 -1622160 5687776 1622200 5687776 1625576 5687568 1625520 5687512 -1622160 5687776 1622080 5687816 1622200 5687776 1625520 5687512 -1622200 5687776 1624104 5692408 1625576 5687568 1625520 5687512 -1622160 5687776 1622200 5687776 1625520 5687512 1625472 5687448 -1622160 5687776 1622200 5687776 1625472 5687448 1625432 5687384 -1622160 5687776 1622200 5687776 1625432 5687384 1625432 5687352 -1622200 5687776 1625472 5687448 1625432 5687384 1625432 5687352 -1622160 5687776 1622200 5687776 1625432 5687352 1625480 5687312 -1622200 5687776 1625432 5687384 1625432 5687352 1625480 5687312 -1622160 5687776 1622080 5687816 1622200 5687776 1625480 5687312 -1622160 5687776 1622200 5687776 1625480 5687312 1617424 5683592 -1622200 5687776 1625432 5687352 1625480 5687312 1617424 5683592 -1622160 5687776 1622200 5687776 1617424 5683592 1617424 5683648 -1622160 5687776 1622080 5687816 1622200 5687776 1617424 5683592 -1622200 5687776 1625520 5687512 1625472 5687448 1625432 5687384 -1622200 5687776 1625576 5687568 1625520 5687512 1625472 5687448 -1625480 5687312 1625568 5687272 1617424 5683592 1622200 5687776 -1622200 5687776 1622296 5687808 1625576 5687568 1625520 5687512 -1622200 5687776 1624104 5692408 1622296 5687808 1625520 5687512 -1624104 5692408 1622296 5687808 1622200 5687776 1624032 5692416 -1622200 5687776 1623136 5692368 1624032 5692416 1622296 5687808 -1622200 5687776 1623032 5692344 1623136 5692368 1622296 5687808 -1622200 5687776 1621992 5687904 1623032 5692344 1622296 5687808 -1623032 5692344 1623136 5692368 1622296 5687808 1621992 5687904 -1622200 5687776 1622056 5687840 1621992 5687904 1622296 5687808 -1621992 5687904 1623032 5692344 1622296 5687808 1622056 5687840 -1621992 5687904 1623000 5692344 1623032 5692344 1622296 5687808 -1623032 5692344 1623136 5692368 1622296 5687808 1623000 5692344 -1621992 5687904 1623000 5692344 1622296 5687808 1622056 5687840 -1622200 5687776 1622080 5687816 1622056 5687840 1622296 5687808 -1623136 5692368 1624032 5692416 1622296 5687808 1623032 5692344 -1622296 5687808 1625520 5687512 1622200 5687776 1622056 5687840 -1624104 5692408 1625576 5687568 1622296 5687808 1624032 5692416 -1624032 5692416 1624104 5692408 1622296 5687808 1623136 5692368 -1622296 5687808 1624104 5692408 1625576 5687568 1625520 5687512 -1625576 5687568 1622296 5687808 1624104 5692408 1625672 5687640 -1622296 5687808 1624032 5692416 1624104 5692408 1625672 5687640 -1625576 5687568 1625520 5687512 1622296 5687808 1625672 5687640 -1624104 5692408 1625760 5687704 1625672 5687640 1622296 5687808 -1623136 5692368 1623448 5692552 1624032 5692416 1622296 5687808 -1621992 5687904 1622936 5692376 1623000 5692344 1622296 5687808 -1622200 5687776 1622296 5687808 1625520 5687512 1625472 5687448 -1622296 5687808 1625576 5687568 1625520 5687512 1625472 5687448 -1622200 5687776 1622056 5687840 1622296 5687808 1625472 5687448 -1622200 5687776 1622296 5687808 1625472 5687448 1625432 5687384 -1622200 5687776 1622296 5687808 1625432 5687384 1625432 5687352 -1622200 5687776 1622296 5687808 1625432 5687352 1625480 5687312 -1622296 5687808 1625432 5687384 1625432 5687352 1625480 5687312 -1622200 5687776 1622296 5687808 1625480 5687312 1617424 5683592 -1622200 5687776 1622056 5687840 1622296 5687808 1625480 5687312 -1622296 5687808 1625472 5687448 1625432 5687384 1625432 5687352 -1622296 5687808 1625520 5687512 1625472 5687448 1625432 5687384 -1625480 5687312 1622304 5687800 1622296 5687808 1625432 5687352 -1622296 5687808 1625432 5687384 1625432 5687352 1622304 5687800 -1625432 5687352 1625480 5687312 1622304 5687800 1625432 5687384 -1622200 5687776 1622304 5687800 1625480 5687312 1617424 5683592 -1622304 5687800 1622200 5687776 1622296 5687808 1625432 5687384 -1625480 5687312 1622200 5687776 1622304 5687800 1625432 5687352 -1622296 5687808 1625472 5687448 1625432 5687384 1622304 5687800 -1625432 5687384 1625432 5687352 1622304 5687800 1625472 5687448 -1622296 5687808 1625472 5687448 1622304 5687800 1622200 5687776 -1622296 5687808 1625520 5687512 1625472 5687448 1622304 5687800 -1622296 5687808 1625576 5687568 1625520 5687512 1622304 5687800 -1622296 5687808 1625576 5687568 1622304 5687800 1622200 5687776 -1622296 5687808 1625672 5687640 1625576 5687568 1622304 5687800 -1625472 5687448 1625432 5687384 1622304 5687800 1625520 5687512 -1625520 5687512 1625472 5687448 1622304 5687800 1625576 5687568 -1624104 5692408 1622360 5687856 1622296 5687808 1624032 5692416 -1622296 5687808 1623136 5692368 1624032 5692416 1622360 5687856 -1622296 5687808 1623032 5692344 1623136 5692368 1622360 5687856 -1622296 5687808 1623000 5692344 1623032 5692344 1622360 5687856 -1622296 5687808 1621992 5687904 1623000 5692344 1622360 5687856 -1623000 5692344 1623032 5692344 1622360 5687856 1621992 5687904 -1622296 5687808 1622056 5687840 1621992 5687904 1622360 5687856 -1622296 5687808 1622200 5687776 1622056 5687840 1622360 5687856 -1621992 5687904 1623000 5692344 1622360 5687856 1622056 5687840 -1623032 5692344 1623136 5692368 1622360 5687856 1623000 5692344 -1624032 5692416 1624104 5692408 1622360 5687856 1623136 5692368 -1623136 5692368 1624032 5692416 1622360 5687856 1623032 5692344 -1622296 5687808 1622360 5687856 1625672 5687640 1625576 5687568 -1622296 5687808 1622360 5687856 1625576 5687568 1622304 5687800 -1625576 5687568 1625520 5687512 1622304 5687800 1622360 5687856 -1622304 5687800 1622296 5687808 1622360 5687856 1625520 5687512 -1622360 5687856 1625672 5687640 1625576 5687568 1625520 5687512 -1625672 5687640 1622360 5687856 1624104 5692408 1625760 5687704 -1623136 5692368 1623448 5692552 1624032 5692416 1622360 5687856 -1622360 5687856 1624104 5692408 1625672 5687640 1625576 5687568 -1624104 5692408 1625672 5687640 1622360 5687856 1624032 5692416 -1622360 5687856 1622304 5687800 1622296 5687808 1622056 5687840 -1621992 5687904 1622936 5692376 1623000 5692344 1622360 5687856 -1625520 5687512 1625472 5687448 1622304 5687800 1622360 5687856 -1625520 5687512 1625472 5687448 1622360 5687856 1625576 5687568 -1622304 5687800 1622296 5687808 1622360 5687856 1625472 5687448 -1625472 5687448 1625432 5687384 1622304 5687800 1622360 5687856 -1625432 5687384 1625432 5687352 1622304 5687800 1622360 5687856 -1625432 5687352 1625480 5687312 1622304 5687800 1622360 5687856 -1622304 5687800 1622296 5687808 1622360 5687856 1625432 5687352 -1625432 5687384 1625432 5687352 1622360 5687856 1625472 5687448 -1625472 5687448 1625432 5687384 1622360 5687856 1625520 5687512 -1622360 5687856 1622360 5687944 1623000 5692344 1623032 5692344 -1621992 5687904 1622360 5687944 1622360 5687856 1622056 5687840 -1622360 5687856 1622296 5687808 1622056 5687840 1622360 5687944 -1622296 5687808 1622200 5687776 1622056 5687840 1622360 5687944 -1622296 5687808 1622200 5687776 1622360 5687944 1622360 5687856 -1622056 5687840 1621992 5687904 1622360 5687944 1622200 5687776 -1622200 5687776 1622080 5687816 1622056 5687840 1622360 5687944 -1622200 5687776 1622080 5687816 1622360 5687944 1622296 5687808 -1622056 5687840 1621992 5687904 1622360 5687944 1622080 5687816 -1622360 5687856 1622360 5687944 1623032 5692344 1623136 5692368 -1622360 5687944 1623000 5692344 1623032 5692344 1623136 5692368 -1622360 5687856 1622360 5687944 1623136 5692368 1624032 5692416 -1622360 5687944 1623032 5692344 1623136 5692368 1624032 5692416 -1622360 5687856 1622360 5687944 1624032 5692416 1624104 5692408 -1622360 5687944 1623136 5692368 1624032 5692416 1624104 5692408 -1623136 5692368 1623448 5692552 1624032 5692416 1622360 5687944 -1622360 5687856 1622360 5687944 1624104 5692408 1625672 5687640 -1622360 5687944 1624032 5692416 1624104 5692408 1625672 5687640 -1624104 5692408 1625760 5687704 1625672 5687640 1622360 5687944 -1624104 5692408 1625760 5687704 1622360 5687944 1624032 5692416 -1622360 5687856 1622360 5687944 1625672 5687640 1625576 5687568 -1622360 5687856 1622360 5687944 1625576 5687568 1625520 5687512 -1622360 5687856 1622360 5687944 1625520 5687512 1625472 5687448 -1622360 5687944 1625576 5687568 1625520 5687512 1625472 5687448 -1622360 5687944 1625672 5687640 1625576 5687568 1625520 5687512 -1625672 5687640 1625576 5687568 1622360 5687944 1625760 5687704 -1622360 5687856 1622296 5687808 1622360 5687944 1625472 5687448 -1622360 5687856 1622304 5687800 1622296 5687808 1622360 5687944 -1622360 5687944 1621992 5687904 1623000 5692344 1623032 5692344 -1621992 5687904 1623000 5692344 1622360 5687944 1622056 5687840 -1623000 5692344 1622360 5687944 1621992 5687904 1622936 5692376 -1624104 5692408 1625848 5687744 1625760 5687704 1622360 5687944 -1622200 5687776 1622160 5687776 1622080 5687816 1622360 5687944 -1622360 5687856 1622360 5687944 1625472 5687448 1625432 5687384 -1622360 5687944 1625520 5687512 1625472 5687448 1625432 5687384 -1622360 5687856 1622296 5687808 1622360 5687944 1625432 5687384 -1622360 5687856 1622360 5687944 1625432 5687384 1625432 5687352 -1622360 5687944 1622296 5688016 1623000 5692344 1623032 5692344 -1622360 5687944 1622296 5688016 1623032 5692344 1623136 5692368 -1622360 5687944 1622296 5688016 1623136 5692368 1624032 5692416 -1622296 5688016 1623032 5692344 1623136 5692368 1624032 5692416 -1622360 5687944 1622296 5688016 1624032 5692416 1624104 5692408 -1622296 5688016 1623136 5692368 1624032 5692416 1624104 5692408 -1622360 5687944 1622296 5688016 1624104 5692408 1625760 5687704 -1622296 5688016 1624032 5692416 1624104 5692408 1625760 5687704 -1622360 5687944 1622296 5688016 1625760 5687704 1625672 5687640 -1622296 5688016 1624104 5692408 1625760 5687704 1625672 5687640 -1623136 5692368 1623448 5692552 1624032 5692416 1622296 5688016 -1622360 5687944 1622296 5688016 1625672 5687640 1625576 5687568 -1622296 5688016 1621992 5687904 1623000 5692344 1623032 5692344 -1622296 5688016 1623000 5692344 1623032 5692344 1623136 5692368 -1622360 5687944 1621992 5687904 1622296 5688016 1625672 5687640 -1621992 5687904 1622296 5688016 1622360 5687944 1622056 5687840 -1622360 5687944 1622080 5687816 1622056 5687840 1622296 5688016 -1622360 5687944 1622200 5687776 1622080 5687816 1622296 5688016 -1622360 5687944 1622296 5687808 1622200 5687776 1622296 5688016 -1622360 5687944 1622360 5687856 1622296 5687808 1622296 5688016 -1622080 5687816 1622056 5687840 1622296 5688016 1622200 5687776 -1622200 5687776 1622080 5687816 1622296 5688016 1622296 5687808 -1621992 5687904 1623000 5692344 1622296 5688016 1622056 5687840 -1622296 5688016 1625672 5687640 1622360 5687944 1622296 5687808 -1622056 5687840 1621992 5687904 1622296 5688016 1622080 5687816 -1623000 5692344 1622296 5688016 1621992 5687904 1622936 5692376 -1621992 5687904 1615488 5689328 1622936 5692376 1622296 5688016 -1623000 5692344 1623032 5692344 1622296 5688016 1622936 5692376 -1622296 5688016 1622056 5687840 1621992 5687904 1622936 5692376 -1624104 5692408 1625848 5687744 1625760 5687704 1622296 5688016 -1622200 5687776 1622160 5687776 1622080 5687816 1622296 5688016 -1622936 5692376 1622280 5688056 1621992 5687904 1615488 5689328 -1621992 5687904 1622280 5688056 1622296 5688016 1622056 5687840 -1622280 5688056 1622936 5692376 1622296 5688016 1622056 5687840 -1622296 5688016 1622080 5687816 1622056 5687840 1622280 5688056 -1621992 5687904 1622936 5692376 1622280 5688056 1622056 5687840 -1622296 5688016 1622280 5688056 1622936 5692376 1623000 5692344 -1622296 5688016 1622280 5688056 1623000 5692344 1623032 5692344 -1622296 5688016 1622056 5687840 1622280 5688056 1623032 5692344 -1622296 5688016 1622280 5688056 1623032 5692344 1623136 5692368 -1622296 5688016 1622280 5688056 1623136 5692368 1624032 5692416 -1622296 5688016 1622280 5688056 1624032 5692416 1624104 5692408 -1622280 5688056 1623136 5692368 1624032 5692416 1624104 5692408 -1622296 5688016 1622280 5688056 1624104 5692408 1625760 5687704 -1622280 5688056 1624032 5692416 1624104 5692408 1625760 5687704 -1622296 5688016 1622280 5688056 1625760 5687704 1625672 5687640 -1622280 5688056 1624104 5692408 1625760 5687704 1625672 5687640 -1622296 5688016 1622280 5688056 1625672 5687640 1622360 5687944 -1622280 5688056 1625760 5687704 1625672 5687640 1622360 5687944 -1623136 5692368 1623448 5692552 1624032 5692416 1622280 5688056 -1625672 5687640 1625576 5687568 1622360 5687944 1622280 5688056 -1625672 5687640 1625576 5687568 1622280 5688056 1625760 5687704 -1622360 5687944 1622296 5688016 1622280 5688056 1625576 5687568 -1625576 5687568 1625520 5687512 1622360 5687944 1622280 5688056 -1622280 5688056 1623000 5692344 1623032 5692344 1623136 5692368 -1622296 5688016 1622056 5687840 1622280 5688056 1622360 5687944 -1622280 5688056 1623032 5692344 1623136 5692368 1624032 5692416 -1622280 5688056 1621992 5687904 1622936 5692376 1623000 5692344 -1622280 5688056 1622936 5692376 1623000 5692344 1623032 5692344 -1624104 5692408 1625848 5687744 1625760 5687704 1622280 5688056 -1622936 5692376 1622240 5688080 1621992 5687904 1615488 5689328 -1622280 5688056 1622240 5688080 1622936 5692376 1623000 5692344 -1622280 5688056 1621992 5687904 1622240 5688080 1623000 5692344 -1621992 5687904 1622240 5688080 1622280 5688056 1622056 5687840 -1622280 5688056 1622296 5688016 1622056 5687840 1622240 5688080 -1622296 5688016 1622080 5687816 1622056 5687840 1622240 5688080 -1622240 5688080 1623000 5692344 1622280 5688056 1622296 5688016 -1622056 5687840 1621992 5687904 1622240 5688080 1622296 5688016 -1622240 5688080 1621992 5687904 1622936 5692376 1623000 5692344 -1621992 5687904 1622936 5692376 1622240 5688080 1622056 5687840 -1622280 5688056 1622240 5688080 1623000 5692344 1623032 5692344 -1622280 5688056 1622240 5688080 1623032 5692344 1623136 5692368 -1622240 5688080 1622936 5692376 1623000 5692344 1623032 5692344 -1622280 5688056 1622296 5688016 1622240 5688080 1623032 5692344 -1622936 5692376 1622192 5688096 1621992 5687904 1615488 5689328 -1622240 5688080 1622192 5688096 1622936 5692376 1623000 5692344 -1622240 5688080 1622192 5688096 1623000 5692344 1623032 5692344 -1622240 5688080 1621992 5687904 1622192 5688096 1623000 5692344 -1621992 5687904 1622192 5688096 1622240 5688080 1622056 5687840 -1622240 5688080 1622296 5688016 1622056 5687840 1622192 5688096 -1622240 5688080 1622280 5688056 1622296 5688016 1622192 5688096 -1622296 5688016 1622080 5687816 1622056 5687840 1622192 5688096 -1622192 5688096 1623000 5692344 1622240 5688080 1622296 5688016 -1622056 5687840 1621992 5687904 1622192 5688096 1622296 5688016 -1622192 5688096 1621992 5687904 1622936 5692376 1623000 5692344 -1621992 5687904 1622936 5692376 1622192 5688096 1622056 5687840 -1622936 5692376 1622160 5688096 1621992 5687904 1615488 5689328 -1622936 5692376 1622160 5688096 1615488 5689328 1618304 5694912 -1621992 5687904 1615488 5689272 1615488 5689328 1622160 5688096 -1622192 5688096 1622160 5688096 1622936 5692376 1623000 5692344 -1622192 5688096 1622160 5688096 1623000 5692344 1622240 5688080 -1622192 5688096 1621992 5687904 1622160 5688096 1623000 5692344 -1621992 5687904 1622160 5688096 1622192 5688096 1622056 5687840 -1622192 5688096 1622296 5688016 1622056 5687840 1622160 5688096 -1622296 5688016 1622080 5687816 1622056 5687840 1622160 5688096 -1622192 5688096 1622240 5688080 1622296 5688016 1622160 5688096 -1622240 5688080 1622280 5688056 1622296 5688016 1622160 5688096 -1622296 5688016 1622056 5687840 1622160 5688096 1622240 5688080 -1622160 5688096 1623000 5692344 1622192 5688096 1622240 5688080 -1622056 5687840 1621992 5687904 1622160 5688096 1622296 5688016 -1622936 5692376 1623000 5692344 1622160 5688096 1615488 5689328 -1622160 5688096 1622056 5687840 1621992 5687904 1615488 5689328 -1622160 5688096 1622120 5688088 1615488 5689328 1622936 5692376 -1615488 5689328 1618304 5694912 1622936 5692376 1622120 5688088 -1615488 5689328 1622120 5688088 1621992 5687904 1615488 5689272 -1622160 5688096 1622120 5688088 1622936 5692376 1623000 5692344 -1622160 5688096 1621992 5687904 1622120 5688088 1622936 5692376 -1621992 5687904 1622120 5688088 1622160 5688096 1622056 5687840 -1622160 5688096 1622296 5688016 1622056 5687840 1622120 5688088 -1622296 5688016 1622080 5687816 1622056 5687840 1622120 5688088 -1622160 5688096 1622240 5688080 1622296 5688016 1622120 5688088 -1622120 5688088 1622936 5692376 1622160 5688096 1622296 5688016 -1622056 5687840 1621992 5687904 1622120 5688088 1622296 5688016 -1622120 5688088 1621992 5687904 1615488 5689328 1622936 5692376 -1621992 5687904 1615488 5689328 1622120 5688088 1622056 5687840 -1615488 5689328 1622072 5688064 1621992 5687904 1615488 5689272 -1622120 5688088 1622072 5688064 1615488 5689328 1622936 5692376 -1622120 5688088 1622072 5688064 1622936 5692376 1622160 5688096 -1615488 5689328 1618304 5694912 1622936 5692376 1622072 5688064 -1622120 5688088 1621992 5687904 1622072 5688064 1622936 5692376 -1621992 5687904 1622072 5688064 1622120 5688088 1622056 5687840 -1622120 5688088 1622296 5688016 1622056 5687840 1622072 5688064 -1622072 5688064 1622936 5692376 1622120 5688088 1622056 5687840 -1622072 5688064 1621992 5687904 1615488 5689328 1622936 5692376 -1621992 5687904 1615488 5689328 1622072 5688064 1622056 5687840 -1615488 5689328 1622048 5688040 1621992 5687904 1615488 5689272 -1621992 5687904 1615440 5689168 1615488 5689272 1622048 5688040 -1622072 5688064 1622048 5688040 1615488 5689328 1622936 5692376 -1615488 5689328 1618304 5694912 1622936 5692376 1622048 5688040 -1622072 5688064 1622048 5688040 1622936 5692376 1622120 5688088 -1622072 5688064 1621992 5687904 1622048 5688040 1622936 5692376 -1621992 5687904 1622048 5688040 1622072 5688064 1622056 5687840 -1622072 5688064 1622120 5688088 1622056 5687840 1622048 5688040 -1622120 5688088 1622296 5688016 1622056 5687840 1622048 5688040 -1622048 5688040 1622936 5692376 1622072 5688064 1622120 5688088 -1622056 5687840 1621992 5687904 1622048 5688040 1622120 5688088 -1615488 5689328 1622936 5692376 1622048 5688040 1615488 5689272 -1622048 5688040 1622056 5687840 1621992 5687904 1615488 5689272 -1615488 5689272 1621992 5687952 1621992 5687904 1615440 5689168 -1622048 5688040 1621992 5687952 1615488 5689272 1615488 5689328 -1622048 5688040 1621992 5687952 1615488 5689328 1622936 5692376 -1622048 5688040 1621992 5687904 1621992 5687952 1615488 5689328 -1621992 5687904 1621992 5687952 1622048 5688040 1622056 5687840 -1622048 5688040 1622120 5688088 1622056 5687840 1621992 5687952 -1621992 5687952 1615488 5689328 1622048 5688040 1622056 5687840 -1621992 5687952 1621992 5687904 1615488 5689272 1615488 5689328 -1621992 5687904 1615488 5689272 1621992 5687952 1622056 5687840 -1625480 5687312 1621800 5687120 1622200 5687776 1622304 5687800 -1622200 5687776 1621800 5687120 1617424 5683592 1622160 5687776 -1617424 5683592 1617424 5683648 1622160 5687776 1621800 5687120 -1617424 5683648 1622112 5687792 1622160 5687776 1621800 5687120 -1617424 5683648 1622080 5687816 1622112 5687792 1621800 5687120 -1617424 5683648 1622056 5687840 1622080 5687816 1621800 5687120 -1622080 5687816 1622112 5687792 1621800 5687120 1622056 5687840 -1622112 5687792 1622160 5687776 1621800 5687120 1622080 5687816 -1617424 5683648 1622056 5687840 1621800 5687120 1617424 5683592 -1622160 5687776 1622200 5687776 1621800 5687120 1622112 5687792 -1622200 5687776 1622296 5687808 1622304 5687800 1621800 5687120 -1625480 5687312 1621800 5687120 1622304 5687800 1625432 5687352 -1622304 5687800 1622360 5687856 1625432 5687352 1621800 5687120 -1621800 5687120 1622200 5687776 1622304 5687800 1625432 5687352 -1621800 5687120 1625480 5687312 1617424 5683592 1617424 5683648 -1625480 5687312 1617424 5683592 1621800 5687120 1625432 5687352 -1621800 5687120 1622160 5687776 1622200 5687776 1622304 5687800 -1617424 5683648 1621992 5687904 1622056 5687840 1621800 5687120 -1617424 5683648 1617328 5683704 1621992 5687904 1621800 5687120 -1622056 5687840 1622080 5687816 1621800 5687120 1621992 5687904 -1617424 5683648 1617328 5683704 1621800 5687120 1617424 5683592 -1617424 5683648 1617368 5683680 1617328 5683704 1621800 5687120 -1621992 5687904 1622056 5687840 1621800 5687120 1617328 5683704 -1617328 5683704 1617280 5683720 1621992 5687904 1621800 5687120 -1617328 5683704 1617280 5683720 1621800 5687120 1617424 5683648 -1617280 5683720 1615440 5689168 1621992 5687904 1621800 5687120 -1615440 5689168 1615488 5689272 1621992 5687904 1621800 5687120 -1615488 5689272 1621992 5687952 1621992 5687904 1621800 5687120 -1615440 5689168 1615488 5689272 1621800 5687120 1617280 5683720 -1615488 5689272 1621992 5687952 1621800 5687120 1615440 5689168 -1615488 5689272 1615488 5689328 1621992 5687952 1621800 5687120 -1621992 5687904 1622056 5687840 1621800 5687120 1621992 5687952 -1617280 5683720 1615440 5689168 1621800 5687120 1617328 5683704 -1617280 5683720 1615392 5689120 1615440 5689168 1621800 5687120 -1617424 5683592 1621800 5687120 1625480 5687312 1625568 5687272 -1617424 5683592 1617424 5683648 1621800 5687120 1625568 5687272 -1621800 5687120 1625432 5687352 1625480 5687312 1625568 5687272 -1625480 5687312 1625488 5687312 1625568 5687272 1621800 5687120 -1617424 5683592 1621800 5687120 1625568 5687272 1625656 5687248 -1617424 5683592 1617424 5683648 1621800 5687120 1625656 5687248 -1617424 5683592 1621800 5687120 1625656 5687248 1617376 5683520 -1621800 5687120 1625480 5687312 1625568 5687272 1625656 5687248 -1621800 5687120 1621408 5687168 1615440 5689168 1615488 5689272 -1621800 5687120 1621408 5687168 1615488 5689272 1621992 5687952 -1621800 5687120 1621408 5687168 1621992 5687952 1621992 5687904 -1621408 5687168 1615440 5689168 1615488 5689272 1621992 5687952 -1621408 5687168 1615488 5689272 1621992 5687952 1621992 5687904 -1615488 5689272 1615488 5689328 1621992 5687952 1621408 5687168 -1615488 5689272 1615488 5689328 1621408 5687168 1615440 5689168 -1621992 5687952 1621992 5687904 1621408 5687168 1615488 5689328 -1615488 5689328 1622048 5688040 1621992 5687952 1621408 5687168 -1621800 5687120 1617280 5683720 1621408 5687168 1621992 5687904 -1621408 5687168 1617280 5683720 1615440 5689168 1615488 5689272 -1621800 5687120 1621408 5687168 1621992 5687904 1622056 5687840 -1617280 5683720 1621408 5687168 1621800 5687120 1617328 5683704 -1621800 5687120 1617424 5683648 1617328 5683704 1621408 5687168 -1621800 5687120 1617424 5683592 1617424 5683648 1621408 5687168 -1617424 5683648 1617328 5683704 1621408 5687168 1617424 5683592 -1617424 5683648 1617368 5683680 1617328 5683704 1621408 5687168 -1621800 5687120 1625656 5687248 1617424 5683592 1621408 5687168 -1621408 5687168 1621992 5687904 1621800 5687120 1617424 5683592 -1617280 5683720 1615440 5689168 1621408 5687168 1617328 5683704 -1617328 5683704 1617280 5683720 1621408 5687168 1617424 5683648 -1615440 5689168 1621408 5687168 1617280 5683720 1615392 5689120 -1621408 5687168 1621296 5687176 1615440 5689168 1615488 5689272 -1621408 5687168 1621296 5687176 1615488 5689272 1615488 5689328 -1621408 5687168 1621296 5687176 1615488 5689328 1621992 5687952 -1621296 5687176 1615488 5689272 1615488 5689328 1621992 5687952 -1621408 5687168 1621296 5687176 1621992 5687952 1621992 5687904 -1621408 5687168 1621296 5687176 1621992 5687904 1621800 5687120 -1615488 5689328 1622048 5688040 1621992 5687952 1621296 5687176 -1615488 5689328 1622048 5688040 1621296 5687176 1615488 5689272 -1615488 5689328 1622936 5692376 1622048 5688040 1621296 5687176 -1621296 5687176 1622048 5688040 1621992 5687952 1621992 5687904 -1621296 5687176 1615440 5689168 1615488 5689272 1615488 5689328 -1621408 5687168 1617280 5683720 1621296 5687176 1621992 5687904 -1617280 5683720 1621296 5687176 1621408 5687168 1617328 5683704 -1621296 5687176 1621992 5687904 1621408 5687168 1617328 5683704 -1621296 5687176 1617280 5683720 1615440 5689168 1615488 5689272 -1617280 5683720 1615440 5689168 1621296 5687176 1617328 5683704 -1621408 5687168 1617424 5683648 1617328 5683704 1621296 5687176 -1621408 5687168 1617424 5683592 1617424 5683648 1621296 5687176 -1621408 5687168 1621800 5687120 1617424 5683592 1621296 5687176 -1617424 5683648 1617368 5683680 1617328 5683704 1621296 5687176 -1621408 5687168 1617424 5683592 1621296 5687176 1621992 5687904 -1617328 5683704 1617280 5683720 1621296 5687176 1617424 5683648 -1617424 5683648 1617328 5683704 1621296 5687176 1617424 5683592 -1615440 5689168 1621296 5687176 1617280 5683720 1615392 5689120 -1615488 5689328 1621256 5687192 1621296 5687176 1615488 5689272 -1621296 5687176 1621256 5687192 1622048 5688040 1621992 5687952 -1622048 5688040 1621256 5687192 1615488 5689328 1622936 5692376 -1621296 5687176 1621256 5687192 1621992 5687952 1621992 5687904 -1621296 5687176 1621256 5687192 1621992 5687904 1621408 5687168 -1621992 5687904 1621800 5687120 1621408 5687168 1621256 5687192 -1621256 5687192 1622048 5688040 1621992 5687952 1621992 5687904 -1621256 5687192 1621992 5687952 1621992 5687904 1621408 5687168 -1621296 5687176 1615440 5689168 1615488 5689272 1621256 5687192 -1615488 5689272 1615488 5689328 1621256 5687192 1615440 5689168 -1621296 5687176 1617280 5683720 1615440 5689168 1621256 5687192 -1615440 5689168 1615488 5689272 1621256 5687192 1617280 5683720 -1621256 5687192 1621408 5687168 1621296 5687176 1617280 5683720 -1621296 5687176 1617328 5683704 1617280 5683720 1621256 5687192 -1621296 5687176 1617424 5683648 1617328 5683704 1621256 5687192 -1617424 5683648 1617368 5683680 1617328 5683704 1621256 5687192 -1617280 5683720 1615440 5689168 1621256 5687192 1617328 5683704 -1621296 5687176 1617424 5683648 1621256 5687192 1621408 5687168 -1617328 5683704 1617280 5683720 1621256 5687192 1617424 5683648 -1621256 5687192 1615488 5689328 1622048 5688040 1621992 5687952 -1615488 5689328 1622048 5688040 1621256 5687192 1615488 5689272 -1621296 5687176 1617424 5683592 1617424 5683648 1621256 5687192 -1617280 5683720 1615392 5689120 1615440 5689168 1621256 5687192 -1621256 5687192 1621088 5687176 1615440 5689168 1615488 5689272 -1621256 5687192 1621088 5687176 1615488 5689272 1615488 5689328 -1621088 5687176 1615440 5689168 1615488 5689272 1615488 5689328 -1617280 5683720 1621088 5687176 1621256 5687192 1617328 5683704 -1621256 5687192 1617424 5683648 1617328 5683704 1621088 5687176 -1617424 5683648 1617368 5683680 1617328 5683704 1621088 5687176 -1621256 5687192 1621296 5687176 1617424 5683648 1621088 5687176 -1617328 5683704 1617280 5683720 1621088 5687176 1617424 5683648 -1617424 5683648 1617328 5683704 1621088 5687176 1621296 5687176 -1621256 5687192 1621296 5687176 1621088 5687176 1615488 5689328 -1621256 5687192 1621088 5687176 1615488 5689328 1622048 5688040 -1621088 5687176 1615488 5689272 1615488 5689328 1622048 5688040 -1615488 5689328 1622936 5692376 1622048 5688040 1621088 5687176 -1621256 5687192 1621088 5687176 1622048 5688040 1621992 5687952 -1621256 5687192 1621088 5687176 1621992 5687952 1621992 5687904 -1621256 5687192 1621296 5687176 1621088 5687176 1621992 5687952 -1621088 5687176 1615488 5689328 1622048 5688040 1621992 5687952 -1621088 5687176 1617280 5683720 1615440 5689168 1615488 5689272 -1617280 5683720 1615440 5689168 1621088 5687176 1617328 5683704 -1621296 5687176 1617424 5683592 1617424 5683648 1621088 5687176 -1621296 5687176 1621408 5687168 1617424 5683592 1621088 5687176 -1621408 5687168 1621800 5687120 1617424 5683592 1621088 5687176 -1621408 5687168 1621800 5687120 1621088 5687176 1621296 5687176 -1621800 5687120 1625656 5687248 1617424 5683592 1621088 5687176 -1621296 5687176 1621408 5687168 1621088 5687176 1621256 5687192 -1617424 5683648 1617328 5683704 1621088 5687176 1617424 5683592 -1617424 5683592 1617424 5683648 1621088 5687176 1621800 5687120 -1615440 5689168 1621088 5687176 1617280 5683720 1615392 5689120 -1621088 5687176 1620984 5687128 1615440 5689168 1615488 5689272 -1621088 5687176 1620984 5687128 1615488 5689272 1615488 5689328 -1621088 5687176 1620984 5687128 1615488 5689328 1622048 5688040 -1615488 5689328 1622936 5692376 1622048 5688040 1620984 5687128 -1620984 5687128 1615488 5689272 1615488 5689328 1622048 5688040 -1621088 5687176 1620984 5687128 1622048 5688040 1621992 5687952 -1620984 5687128 1615440 5689168 1615488 5689272 1615488 5689328 -1621088 5687176 1617280 5683720 1620984 5687128 1622048 5688040 -1617280 5683720 1620984 5687128 1621088 5687176 1617328 5683704 -1621088 5687176 1617424 5683648 1617328 5683704 1620984 5687128 -1617424 5683648 1617368 5683680 1617328 5683704 1620984 5687128 -1617424 5683648 1617368 5683680 1620984 5687128 1621088 5687176 -1621088 5687176 1617424 5683592 1617424 5683648 1620984 5687128 -1617424 5683648 1617368 5683680 1620984 5687128 1617424 5683592 -1620984 5687128 1622048 5688040 1621088 5687176 1617424 5683592 -1617328 5683704 1617280 5683720 1620984 5687128 1617368 5683680 -1620984 5687128 1617280 5683720 1615440 5689168 1615488 5689272 -1617280 5683720 1615440 5689168 1620984 5687128 1617328 5683704 -1621088 5687176 1621800 5687120 1617424 5683592 1620984 5687128 -1621088 5687176 1621408 5687168 1621800 5687120 1620984 5687128 -1621088 5687176 1621296 5687176 1621408 5687168 1620984 5687128 -1621408 5687168 1621800 5687120 1620984 5687128 1621296 5687176 -1621800 5687120 1625656 5687248 1617424 5683592 1620984 5687128 -1621088 5687176 1621256 5687192 1621296 5687176 1620984 5687128 -1617424 5683592 1617424 5683648 1620984 5687128 1621800 5687120 -1621088 5687176 1621296 5687176 1620984 5687128 1622048 5688040 -1621800 5687120 1617424 5683592 1620984 5687128 1621408 5687168 -1615440 5689168 1620984 5687128 1617280 5683720 1615392 5689120 -1617328 5683704 1620744 5686904 1620984 5687128 1617368 5683680 -1620984 5687128 1617424 5683648 1617368 5683680 1620744 5686904 -1620984 5687128 1617424 5683592 1617424 5683648 1620744 5686904 -1617424 5683648 1617368 5683680 1620744 5686904 1617424 5683592 -1620984 5687128 1621800 5687120 1617424 5683592 1620744 5686904 -1621800 5687120 1625656 5687248 1617424 5683592 1620744 5686904 -1617424 5683592 1617424 5683648 1620744 5686904 1621800 5687120 -1617368 5683680 1617328 5683704 1620744 5686904 1617424 5683648 -1620744 5686904 1617280 5683720 1620984 5687128 1621800 5687120 -1620984 5687128 1620744 5686904 1617280 5683720 1615440 5689168 -1620984 5687128 1620744 5686904 1615440 5689168 1615488 5689272 -1620984 5687128 1620744 5686904 1615488 5689272 1615488 5689328 -1620984 5687128 1620744 5686904 1615488 5689328 1622048 5688040 -1620744 5686904 1615440 5689168 1615488 5689272 1615488 5689328 -1620984 5687128 1621800 5687120 1620744 5686904 1615488 5689328 -1620744 5686904 1617280 5683720 1615440 5689168 1615488 5689272 -1620744 5686904 1617328 5683704 1617280 5683720 1615440 5689168 -1617328 5683704 1617280 5683720 1620744 5686904 1617368 5683680 -1620984 5687128 1621408 5687168 1621800 5687120 1620744 5686904 -1620984 5687128 1621296 5687176 1621408 5687168 1620744 5686904 -1620984 5687128 1621088 5687176 1621296 5687176 1620744 5686904 -1621800 5687120 1617424 5683592 1620744 5686904 1621408 5687168 -1620984 5687128 1621296 5687176 1620744 5686904 1615488 5689328 -1621408 5687168 1621800 5687120 1620744 5686904 1621296 5687176 -1617280 5683720 1615392 5689120 1615440 5689168 1620744 5686904 -1617280 5683720 1617248 5683720 1615392 5689120 1620744 5686904 -1615440 5689168 1615488 5689272 1620744 5686904 1615392 5689120 -1617280 5683720 1615392 5689120 1620744 5686904 1617328 5683704 -1617424 5683592 1620576 5686728 1621800 5687120 1625656 5687248 -1620744 5686904 1620576 5686728 1617424 5683592 1617424 5683648 -1620744 5686904 1620576 5686728 1617424 5683648 1617368 5683680 -1620576 5686728 1617424 5683592 1617424 5683648 1617368 5683680 -1621800 5687120 1620576 5686728 1620744 5686904 1621408 5687168 -1620744 5686904 1620576 5686728 1617368 5683680 1617328 5683704 -1620576 5686728 1617424 5683648 1617368 5683680 1617328 5683704 -1620744 5686904 1621800 5687120 1620576 5686728 1617328 5683704 -1620744 5686904 1620576 5686728 1617328 5683704 1617280 5683720 -1620576 5686728 1617368 5683680 1617328 5683704 1617280 5683720 -1620744 5686904 1620576 5686728 1617280 5683720 1615392 5689120 -1617280 5683720 1617248 5683720 1615392 5689120 1620576 5686728 -1620744 5686904 1621800 5687120 1620576 5686728 1615392 5689120 -1620576 5686728 1617328 5683704 1617280 5683720 1615392 5689120 -1620576 5686728 1621800 5687120 1617424 5683592 1617424 5683648 -1620744 5686904 1620576 5686728 1615392 5689120 1615440 5689168 -1620744 5686904 1620576 5686728 1615440 5689168 1615488 5689272 -1620744 5686904 1620576 5686728 1615488 5689272 1615488 5689328 -1620576 5686728 1617280 5683720 1615392 5689120 1615440 5689168 -1620744 5686904 1621800 5687120 1620576 5686728 1615488 5689272 -1620576 5686728 1615392 5689120 1615440 5689168 1615488 5689272 -1617424 5683592 1620480 5686544 1621800 5687120 1625656 5687248 -1620576 5686728 1620480 5686544 1617424 5683592 1617424 5683648 -1620576 5686728 1620480 5686544 1617424 5683648 1617368 5683680 -1620576 5686728 1620480 5686544 1617368 5683680 1617328 5683704 -1620480 5686544 1617424 5683648 1617368 5683680 1617328 5683704 -1620576 5686728 1620480 5686544 1617328 5683704 1617280 5683720 -1620480 5686544 1617368 5683680 1617328 5683704 1617280 5683720 -1620576 5686728 1620480 5686544 1617280 5683720 1615392 5689120 -1617280 5683720 1617248 5683720 1615392 5689120 1620480 5686544 -1620480 5686544 1617328 5683704 1617280 5683720 1615392 5689120 -1620576 5686728 1620480 5686544 1615392 5689120 1615440 5689168 -1620480 5686544 1617280 5683720 1615392 5689120 1615440 5689168 -1620480 5686544 1617424 5683592 1617424 5683648 1617368 5683680 -1620576 5686728 1621800 5687120 1620480 5686544 1615440 5689168 -1621800 5687120 1620480 5686544 1620576 5686728 1620744 5686904 -1621800 5687120 1620480 5686544 1620744 5686904 1621408 5687168 -1620480 5686544 1615440 5689168 1620576 5686728 1620744 5686904 -1620480 5686544 1620576 5686728 1620744 5686904 1621408 5687168 -1617424 5683592 1617424 5683648 1620480 5686544 1625656 5687248 -1620480 5686544 1621408 5687168 1621800 5687120 1625656 5687248 -1617424 5683592 1620480 5686544 1625656 5687248 1617376 5683520 -1621800 5687120 1625568 5687272 1625656 5687248 1620480 5686544 -1620744 5686904 1621296 5687176 1621408 5687168 1620480 5686544 -1620576 5686728 1620480 5686544 1615440 5689168 1615488 5689272 -1625656 5687248 1620440 5686432 1620480 5686544 1621800 5687120 -1620480 5686544 1620440 5686432 1617424 5683592 1617424 5683648 -1620480 5686544 1620440 5686432 1617424 5683648 1617368 5683680 -1620480 5686544 1620440 5686432 1617368 5683680 1617328 5683704 -1620480 5686544 1620440 5686432 1617328 5683704 1617280 5683720 -1620440 5686432 1617368 5683680 1617328 5683704 1617280 5683720 -1620480 5686544 1620440 5686432 1617280 5683720 1615392 5689120 -1617280 5683720 1617248 5683720 1615392 5689120 1620440 5686432 -1620440 5686432 1617328 5683704 1617280 5683720 1615392 5689120 -1620480 5686544 1620440 5686432 1615392 5689120 1615440 5689168 -1620440 5686432 1617280 5683720 1615392 5689120 1615440 5689168 -1620480 5686544 1620440 5686432 1615440 5689168 1620576 5686728 -1620440 5686432 1617424 5683648 1617368 5683680 1617328 5683704 -1620440 5686432 1617424 5683592 1617424 5683648 1617368 5683680 -1620440 5686432 1615440 5689168 1620480 5686544 1621800 5687120 -1620480 5686544 1621408 5687168 1621800 5687120 1620440 5686432 -1621800 5687120 1625656 5687248 1620440 5686432 1621408 5687168 -1620480 5686544 1620744 5686904 1621408 5687168 1620440 5686432 -1620480 5686544 1620576 5686728 1620744 5686904 1620440 5686432 -1620480 5686544 1620744 5686904 1620440 5686432 1615440 5689168 -1621408 5687168 1621800 5687120 1620440 5686432 1620744 5686904 -1620440 5686432 1625656 5687248 1617424 5683592 1617424 5683648 -1625656 5687248 1617424 5683592 1620440 5686432 1621800 5687120 -1617424 5683592 1620440 5686432 1625656 5687248 1617376 5683520 -1625656 5687248 1620440 5686432 1621800 5687120 1625568 5687272 -1620440 5686432 1621408 5687168 1621800 5687120 1625568 5687272 -1625656 5687248 1617424 5683592 1620440 5686432 1625568 5687272 -1620744 5686904 1621296 5687176 1621408 5687168 1620440 5686432 -1621800 5687120 1625480 5687312 1625568 5687272 1620440 5686432 -1620440 5686432 1620440 5686392 1617424 5683592 1617424 5683648 -1620440 5686432 1620440 5686392 1617424 5683648 1617368 5683680 -1620440 5686432 1620440 5686392 1617368 5683680 1617328 5683704 -1620440 5686432 1620440 5686392 1617328 5683704 1617280 5683720 -1620440 5686432 1620440 5686392 1617280 5683720 1615392 5689120 -1620440 5686392 1617368 5683680 1617328 5683704 1617280 5683720 -1620440 5686392 1617424 5683648 1617368 5683680 1617328 5683704 -1620440 5686392 1617424 5683592 1617424 5683648 1617368 5683680 -1620440 5686432 1625656 5687248 1620440 5686392 1617280 5683720 -1625656 5687248 1620440 5686392 1620440 5686432 1625568 5687272 -1620440 5686392 1617280 5683720 1620440 5686432 1625568 5687272 -1620440 5686392 1625656 5687248 1617424 5683592 1617424 5683648 -1625656 5687248 1617424 5683592 1620440 5686392 1625568 5687272 -1617424 5683592 1620440 5686392 1625656 5687248 1617376 5683520 -1620440 5686432 1621800 5687120 1625568 5687272 1620440 5686392 -1620440 5686432 1621408 5687168 1621800 5687120 1620440 5686392 -1620440 5686432 1620744 5686904 1621408 5687168 1620440 5686392 -1621408 5687168 1621800 5687120 1620440 5686392 1620744 5686904 -1620440 5686432 1620480 5686544 1620744 5686904 1620440 5686392 -1620480 5686544 1620576 5686728 1620744 5686904 1620440 5686392 -1620744 5686904 1621408 5687168 1620440 5686392 1620480 5686544 -1620440 5686432 1620480 5686544 1620440 5686392 1617280 5683720 -1625568 5687272 1625656 5687248 1620440 5686392 1621800 5687120 -1621800 5687120 1625568 5687272 1620440 5686392 1621408 5687168 -1620744 5686904 1621296 5687176 1621408 5687168 1620440 5686392 -1621800 5687120 1625480 5687312 1625568 5687272 1620440 5686392 -1620440 5686392 1620496 5686264 1617424 5683592 1617424 5683648 -1620440 5686392 1620496 5686264 1617424 5683648 1617368 5683680 -1620440 5686392 1625656 5687248 1620496 5686264 1617424 5683648 -1625656 5687248 1620496 5686264 1620440 5686392 1625568 5687272 -1620440 5686392 1621800 5687120 1625568 5687272 1620496 5686264 -1620496 5686264 1617424 5683648 1620440 5686392 1621800 5687120 -1625568 5687272 1625656 5687248 1620496 5686264 1621800 5687120 -1620496 5686264 1625656 5687248 1617424 5683592 1617424 5683648 -1625656 5687248 1617424 5683592 1620496 5686264 1625568 5687272 -1617424 5683592 1620496 5686264 1625656 5687248 1617376 5683520 -1617424 5683592 1617424 5683648 1620496 5686264 1617376 5683520 -1620496 5686264 1625568 5687272 1625656 5687248 1617376 5683520 -1620440 5686392 1621408 5687168 1621800 5687120 1620496 5686264 -1620440 5686392 1620744 5686904 1621408 5687168 1620496 5686264 -1620440 5686392 1620480 5686544 1620744 5686904 1620496 5686264 -1620744 5686904 1621408 5687168 1620496 5686264 1620480 5686544 -1620440 5686392 1620440 5686432 1620480 5686544 1620496 5686264 -1620480 5686544 1620576 5686728 1620744 5686904 1620496 5686264 -1620744 5686904 1621408 5687168 1620496 5686264 1620576 5686728 -1620480 5686544 1620576 5686728 1620496 5686264 1620440 5686432 -1621800 5687120 1625568 5687272 1620496 5686264 1621408 5687168 -1620440 5686392 1620440 5686432 1620496 5686264 1617424 5683648 -1621408 5687168 1621800 5687120 1620496 5686264 1620744 5686904 -1620744 5686904 1621296 5687176 1621408 5687168 1620496 5686264 -1625656 5687248 1625672 5687248 1617376 5683520 1620496 5686264 -1621800 5687120 1625480 5687312 1625568 5687272 1620496 5686264 -1625656 5687248 1620592 5686144 1620496 5686264 1625568 5687272 -1620496 5686264 1621800 5687120 1625568 5687272 1620592 5686144 -1620496 5686264 1621408 5687168 1621800 5687120 1620592 5686144 -1621800 5687120 1625568 5687272 1620592 5686144 1621408 5687168 -1620592 5686144 1617376 5683520 1620496 5686264 1621408 5687168 -1625568 5687272 1625656 5687248 1620592 5686144 1621800 5687120 -1625656 5687248 1617376 5683520 1620592 5686144 1625568 5687272 -1620496 5686264 1620592 5686144 1617376 5683520 1617424 5683592 -1620496 5686264 1620592 5686144 1617424 5683592 1617424 5683648 -1620496 5686264 1620592 5686144 1617424 5683648 1620440 5686392 -1620496 5686264 1621408 5687168 1620592 5686144 1617424 5683648 -1620592 5686144 1625656 5687248 1617376 5683520 1617424 5683592 -1620592 5686144 1617376 5683520 1617424 5683592 1617424 5683648 -1620496 5686264 1620744 5686904 1621408 5687168 1620592 5686144 -1620496 5686264 1620576 5686728 1620744 5686904 1620592 5686144 -1620496 5686264 1620480 5686544 1620576 5686728 1620592 5686144 -1620576 5686728 1620744 5686904 1620592 5686144 1620480 5686544 -1620496 5686264 1620440 5686432 1620480 5686544 1620592 5686144 -1621408 5687168 1621800 5687120 1620592 5686144 1620744 5686904 -1620496 5686264 1620480 5686544 1620592 5686144 1617424 5683648 -1620744 5686904 1621408 5687168 1620592 5686144 1620576 5686728 -1620744 5686904 1621296 5687176 1621408 5687168 1620592 5686144 -1617376 5683520 1620592 5686144 1625656 5687248 1625672 5687248 -1621800 5687120 1625480 5687312 1625568 5687272 1620592 5686144 -1620592 5686144 1620776 5686024 1617376 5683520 1617424 5683592 -1620592 5686144 1625656 5687248 1620776 5686024 1617424 5683592 -1625656 5687248 1620776 5686024 1620592 5686144 1625568 5687272 -1620592 5686144 1621800 5687120 1625568 5687272 1620776 5686024 -1620592 5686144 1621408 5687168 1621800 5687120 1620776 5686024 -1620592 5686144 1620744 5686904 1621408 5687168 1620776 5686024 -1621408 5687168 1621800 5687120 1620776 5686024 1620744 5686904 -1621800 5687120 1625568 5687272 1620776 5686024 1621408 5687168 -1620776 5686024 1617424 5683592 1620592 5686144 1620744 5686904 -1625568 5687272 1625656 5687248 1620776 5686024 1621800 5687120 -1620776 5686024 1625656 5687248 1617376 5683520 1617424 5683592 -1625656 5687248 1617376 5683520 1620776 5686024 1625568 5687272 -1620592 5686144 1620776 5686024 1617424 5683592 1617424 5683648 -1620592 5686144 1620776 5686024 1617424 5683648 1620496 5686264 -1620776 5686024 1617376 5683520 1617424 5683592 1617424 5683648 -1620592 5686144 1620744 5686904 1620776 5686024 1617424 5683648 -1620592 5686144 1620576 5686728 1620744 5686904 1620776 5686024 -1620592 5686144 1620480 5686544 1620576 5686728 1620776 5686024 -1620744 5686904 1621408 5687168 1620776 5686024 1620576 5686728 -1620592 5686144 1620576 5686728 1620776 5686024 1617424 5683648 -1620744 5686904 1621296 5687176 1621408 5687168 1620776 5686024 -1620744 5686904 1620984 5687128 1621296 5687176 1620776 5686024 -1620744 5686904 1621296 5687176 1620776 5686024 1620576 5686728 -1621408 5687168 1621800 5687120 1620776 5686024 1621296 5687176 -1617376 5683520 1620776 5686024 1625656 5687248 1625672 5687248 -1617376 5683520 1620776 5686024 1625672 5687248 1617344 5683488 -1617376 5683520 1617424 5683592 1620776 5686024 1625672 5687248 -1620776 5686024 1625568 5687272 1625656 5687248 1625672 5687248 -1621800 5687120 1625480 5687312 1625568 5687272 1620776 5686024 -1621800 5687120 1625432 5687352 1625480 5687312 1620776 5686024 -1621800 5687120 1625480 5687312 1620776 5686024 1621408 5687168 -1625568 5687272 1625656 5687248 1620776 5686024 1625480 5687312 -1625480 5687312 1625488 5687312 1625568 5687272 1620776 5686024 -1617376 5683520 1620912 5685984 1625672 5687248 1617344 5683488 -1620776 5686024 1620912 5685984 1617376 5683520 1617424 5683592 -1620776 5686024 1620912 5685984 1617424 5683592 1617424 5683648 -1620776 5686024 1625672 5687248 1620912 5685984 1617424 5683592 -1617376 5683520 1617424 5683592 1620912 5685984 1617344 5683488 -1620912 5685984 1620776 5686024 1625672 5687248 1617344 5683488 -1625672 5687248 1620912 5685984 1620776 5686024 1625656 5687248 -1620912 5685984 1617424 5683592 1620776 5686024 1625656 5687248 -1620776 5686024 1625568 5687272 1625656 5687248 1620912 5685984 -1620776 5686024 1625480 5687312 1625568 5687272 1620912 5685984 -1620776 5686024 1625480 5687312 1620912 5685984 1617424 5683592 -1625568 5687272 1625656 5687248 1620912 5685984 1625480 5687312 -1625672 5687248 1617344 5683488 1620912 5685984 1625656 5687248 -1625480 5687312 1625488 5687312 1625568 5687272 1620912 5685984 -1625656 5687248 1625672 5687248 1620912 5685984 1625568 5687272 -1620776 5686024 1621800 5687120 1625480 5687312 1620912 5685984 -1621800 5687120 1625432 5687352 1625480 5687312 1620912 5685984 -1620776 5686024 1621408 5687168 1621800 5687120 1620912 5685984 -1620776 5686024 1621296 5687176 1621408 5687168 1620912 5685984 -1621408 5687168 1621800 5687120 1620912 5685984 1621296 5687176 -1625480 5687312 1625568 5687272 1620912 5685984 1621800 5687120 -1620776 5686024 1621296 5687176 1620912 5685984 1617424 5683592 -1620776 5686024 1620744 5686904 1621296 5687176 1620912 5685984 -1620744 5686904 1620984 5687128 1621296 5687176 1620912 5685984 -1620776 5686024 1620576 5686728 1620744 5686904 1620912 5685984 -1621296 5687176 1621408 5687168 1620912 5685984 1620744 5686904 -1620776 5686024 1620576 5686728 1620912 5685984 1617424 5683592 -1620776 5686024 1620592 5686144 1620576 5686728 1620912 5685984 -1620744 5686904 1621296 5687176 1620912 5685984 1620576 5686728 -1621800 5687120 1625480 5687312 1620912 5685984 1621408 5687168 -1625672 5687248 1617256 5683416 1617344 5683488 1620912 5685984 -1620912 5685984 1621048 5686008 1617344 5683488 1617376 5683520 -1620912 5685984 1621048 5686008 1617376 5683520 1617424 5683592 -1621048 5686008 1617344 5683488 1617376 5683520 1617424 5683592 -1620912 5685984 1621048 5686008 1617424 5683592 1620776 5686024 -1620912 5685984 1625672 5687248 1621048 5686008 1617424 5683592 -1625672 5687248 1621048 5686008 1620912 5685984 1625656 5687248 -1621048 5686008 1617424 5683592 1620912 5685984 1625656 5687248 -1621048 5686008 1625672 5687248 1617344 5683488 1617376 5683520 -1625672 5687248 1617344 5683488 1621048 5686008 1625656 5687248 -1620912 5685984 1625568 5687272 1625656 5687248 1621048 5686008 -1620912 5685984 1625480 5687312 1625568 5687272 1621048 5686008 -1620912 5685984 1621800 5687120 1625480 5687312 1621048 5686008 -1621800 5687120 1625432 5687352 1625480 5687312 1621048 5686008 -1625480 5687312 1625568 5687272 1621048 5686008 1621800 5687120 -1620912 5685984 1621800 5687120 1621048 5686008 1617424 5683592 -1625656 5687248 1625672 5687248 1621048 5686008 1625568 5687272 -1625480 5687312 1625488 5687312 1625568 5687272 1621048 5686008 -1625568 5687272 1625656 5687248 1621048 5686008 1625480 5687312 -1620912 5685984 1621408 5687168 1621800 5687120 1621048 5686008 -1620912 5685984 1621296 5687176 1621408 5687168 1621048 5686008 -1620912 5685984 1620744 5686904 1621296 5687176 1621048 5686008 -1620744 5686904 1620984 5687128 1621296 5687176 1621048 5686008 -1621296 5687176 1621408 5687168 1621048 5686008 1620744 5686904 -1621800 5687120 1625480 5687312 1621048 5686008 1621408 5687168 -1620912 5685984 1620744 5686904 1621048 5686008 1617424 5683592 -1620912 5685984 1620576 5686728 1620744 5686904 1621048 5686008 -1620912 5685984 1620776 5686024 1620576 5686728 1621048 5686008 -1620744 5686904 1621296 5687176 1621048 5686008 1620576 5686728 -1620912 5685984 1620776 5686024 1621048 5686008 1617424 5683592 -1620776 5686024 1620592 5686144 1620576 5686728 1621048 5686008 -1620576 5686728 1620744 5686904 1621048 5686008 1620776 5686024 -1621408 5687168 1621800 5687120 1621048 5686008 1621296 5687176 -1617344 5683488 1621048 5686008 1625672 5687248 1617256 5683416 -1625480 5687312 1621112 5686056 1621800 5687120 1625432 5687352 -1621800 5687120 1621112 5686056 1621048 5686008 1621408 5687168 -1621048 5686008 1621112 5686056 1625480 5687312 1625568 5687272 -1621112 5686056 1625568 5687272 1621048 5686008 1621408 5687168 -1621112 5686056 1621800 5687120 1625480 5687312 1625568 5687272 -1621800 5687120 1625480 5687312 1621112 5686056 1621408 5687168 -1625480 5687312 1625488 5687312 1625568 5687272 1621112 5686056 -1621048 5686008 1621112 5686056 1625568 5687272 1625656 5687248 -1621112 5686056 1625480 5687312 1625568 5687272 1625656 5687248 -1621048 5686008 1621112 5686056 1625656 5687248 1625672 5687248 -1621048 5686008 1621408 5687168 1621112 5686056 1625656 5687248 -1621048 5686008 1621296 5687176 1621408 5687168 1621112 5686056 -1621048 5686008 1620744 5686904 1621296 5687176 1621112 5686056 -1620744 5686904 1620984 5687128 1621296 5687176 1621112 5686056 -1621048 5686008 1620576 5686728 1620744 5686904 1621112 5686056 -1620744 5686904 1621296 5687176 1621112 5686056 1620576 5686728 -1621408 5687168 1621800 5687120 1621112 5686056 1621296 5687176 -1621048 5686008 1620576 5686728 1621112 5686056 1625656 5687248 -1621048 5686008 1620776 5686024 1620576 5686728 1621112 5686056 -1621048 5686008 1620912 5685984 1620776 5686024 1621112 5686056 -1620576 5686728 1620744 5686904 1621112 5686056 1620776 5686024 -1621048 5686008 1620912 5685984 1621112 5686056 1625656 5687248 -1620776 5686024 1620592 5686144 1620576 5686728 1621112 5686056 -1620592 5686144 1620480 5686544 1620576 5686728 1621112 5686056 -1620576 5686728 1620744 5686904 1621112 5686056 1620592 5686144 -1620776 5686024 1620592 5686144 1621112 5686056 1620912 5685984 -1621296 5687176 1621408 5687168 1621112 5686056 1620744 5686904 -1625480 5687312 1621424 5686384 1621800 5687120 1625432 5687352 -1621800 5687120 1622304 5687800 1625432 5687352 1621424 5686384 -1621112 5686056 1621424 5686384 1625480 5687312 1625568 5687272 -1621112 5686056 1621424 5686384 1625568 5687272 1625656 5687248 -1621112 5686056 1621800 5687120 1621424 5686384 1625568 5687272 -1621800 5687120 1621424 5686384 1621112 5686056 1621408 5687168 -1621112 5686056 1621296 5687176 1621408 5687168 1621424 5686384 -1621424 5686384 1625568 5687272 1621112 5686056 1621296 5687176 -1621408 5687168 1621800 5687120 1621424 5686384 1621296 5687176 -1625480 5687312 1625568 5687272 1621424 5686384 1625432 5687352 -1621424 5686384 1621408 5687168 1621800 5687120 1625432 5687352 -1625480 5687312 1625488 5687312 1625568 5687272 1621424 5686384 -1621112 5686056 1620744 5686904 1621296 5687176 1621424 5686384 -1620744 5686904 1620984 5687128 1621296 5687176 1621424 5686384 -1620984 5687128 1621088 5687176 1621296 5687176 1621424 5686384 -1621112 5686056 1620576 5686728 1620744 5686904 1621424 5686384 -1621112 5686056 1620592 5686144 1620576 5686728 1621424 5686384 -1621296 5687176 1621408 5687168 1621424 5686384 1620984 5687128 -1621112 5686056 1620576 5686728 1621424 5686384 1625568 5687272 -1620744 5686904 1620984 5687128 1621424 5686384 1620576 5686728 -1625432 5687352 1621672 5686496 1621800 5687120 1622304 5687800 -1625432 5687352 1621672 5686496 1622304 5687800 1622360 5687856 -1621800 5687120 1622200 5687776 1622304 5687800 1621672 5686496 -1621424 5686384 1621672 5686496 1625432 5687352 1625480 5687312 -1621424 5686384 1621672 5686496 1625480 5687312 1625568 5687272 -1621672 5686496 1625432 5687352 1625480 5687312 1625568 5687272 -1621424 5686384 1621672 5686496 1625568 5687272 1621112 5686056 -1625568 5687272 1625656 5687248 1621112 5686056 1621672 5686496 -1621112 5686056 1621424 5686384 1621672 5686496 1625656 5687248 -1621672 5686496 1625480 5687312 1625568 5687272 1625656 5687248 -1621424 5686384 1621800 5687120 1621672 5686496 1621112 5686056 -1621800 5687120 1621672 5686496 1621424 5686384 1621408 5687168 -1621424 5686384 1621296 5687176 1621408 5687168 1621672 5686496 -1621672 5686496 1621112 5686056 1621424 5686384 1621408 5687168 -1625432 5687352 1625480 5687312 1621672 5686496 1622304 5687800 -1621672 5686496 1621408 5687168 1621800 5687120 1622304 5687800 -1625480 5687312 1625488 5687312 1625568 5687272 1621672 5686496 -1625656 5687248 1621048 5686008 1621112 5686056 1621672 5686496 -1625432 5687352 1621744 5686536 1622304 5687800 1622360 5687856 -1622304 5687800 1621744 5686536 1621672 5686496 1621800 5687120 -1622304 5687800 1621744 5686536 1621800 5687120 1622200 5687776 -1621672 5686496 1621744 5686536 1625432 5687352 1625480 5687312 -1621672 5686496 1621744 5686536 1625480 5687312 1625568 5687272 -1621672 5686496 1621744 5686536 1625568 5687272 1625656 5687248 -1621744 5686536 1625480 5687312 1625568 5687272 1625656 5687248 -1621672 5686496 1621744 5686536 1625656 5687248 1621112 5686056 -1621672 5686496 1621744 5686536 1621112 5686056 1621424 5686384 -1621744 5686536 1625568 5687272 1625656 5687248 1621112 5686056 -1621744 5686536 1625432 5687352 1625480 5687312 1625568 5687272 -1621744 5686536 1621112 5686056 1621672 5686496 1621800 5687120 -1621672 5686496 1621408 5687168 1621800 5687120 1621744 5686536 -1621800 5687120 1622304 5687800 1621744 5686536 1621408 5687168 -1621672 5686496 1621424 5686384 1621408 5687168 1621744 5686536 -1621672 5686496 1621408 5687168 1621744 5686536 1621112 5686056 -1621744 5686536 1622304 5687800 1625432 5687352 1625480 5687312 -1622304 5687800 1625432 5687352 1621744 5686536 1621800 5687120 -1625480 5687312 1625488 5687312 1625568 5687272 1621744 5686536 -1625656 5687248 1621048 5686008 1621112 5686056 1621744 5686536 -1625432 5687352 1622296 5686800 1622304 5687800 1622360 5687856 -1625432 5687352 1622296 5686800 1622360 5687856 1625432 5687384 -1621744 5686536 1622296 5686800 1625432 5687352 1625480 5687312 -1621744 5686536 1622296 5686800 1625480 5687312 1625568 5687272 -1621744 5686536 1622296 5686800 1625568 5687272 1625656 5687248 -1621744 5686536 1622296 5686800 1625656 5687248 1621112 5686056 -1622296 5686800 1625568 5687272 1625656 5687248 1621112 5686056 -1621744 5686536 1622296 5686800 1621112 5686056 1621672 5686496 -1622296 5686800 1625480 5687312 1625568 5687272 1625656 5687248 -1622296 5686800 1625432 5687352 1625480 5687312 1625568 5687272 -1621744 5686536 1622304 5687800 1622296 5686800 1621112 5686056 -1622304 5687800 1622296 5686800 1621744 5686536 1621800 5687120 -1622304 5687800 1622296 5686800 1621800 5687120 1622200 5687776 -1622304 5687800 1622296 5686800 1622200 5687776 1622296 5687808 -1621744 5686536 1621408 5687168 1621800 5687120 1622296 5686800 -1621800 5687120 1622160 5687776 1622200 5687776 1622296 5686800 -1622296 5686800 1621112 5686056 1621744 5686536 1621800 5687120 -1622296 5686800 1621744 5686536 1621800 5687120 1622200 5687776 -1625432 5687352 1625480 5687312 1622296 5686800 1622360 5687856 -1622296 5686800 1622200 5687776 1622304 5687800 1622360 5687856 -1625480 5687312 1625488 5687312 1625568 5687272 1622296 5686800 -1625656 5687248 1621048 5686008 1621112 5686056 1622296 5686800 -1625432 5687352 1622472 5686920 1622360 5687856 1625432 5687384 -1622360 5687856 1622472 5686920 1622296 5686800 1622304 5687800 -1622296 5686800 1622472 5686920 1625432 5687352 1625480 5687312 -1622296 5686800 1622472 5686920 1625480 5687312 1625568 5687272 -1622296 5686800 1622472 5686920 1625568 5687272 1625656 5687248 -1622472 5686920 1625432 5687352 1625480 5687312 1625568 5687272 -1622472 5686920 1625568 5687272 1622296 5686800 1622304 5687800 -1622296 5686800 1622200 5687776 1622304 5687800 1622472 5686920 -1622304 5687800 1622360 5687856 1622472 5686920 1622200 5687776 -1622296 5686800 1621800 5687120 1622200 5687776 1622472 5686920 -1622200 5687776 1622296 5687808 1622304 5687800 1622472 5686920 -1621800 5687120 1622160 5687776 1622200 5687776 1622472 5686920 -1622296 5686800 1621744 5686536 1621800 5687120 1622472 5686920 -1622296 5686800 1621800 5687120 1622472 5686920 1625568 5687272 -1622200 5687776 1622304 5687800 1622472 5686920 1621800 5687120 -1625432 5687352 1625480 5687312 1622472 5686920 1625432 5687384 -1622472 5686920 1622304 5687800 1622360 5687856 1625432 5687384 -1625480 5687312 1625488 5687312 1625568 5687272 1622472 5686920 -1622360 5687856 1622360 5687944 1625432 5687384 1622472 5686920 -1622472 5686920 1622592 5687064 1625432 5687384 1625432 5687352 -1622472 5686920 1622592 5687064 1625432 5687352 1625480 5687312 -1622592 5687064 1625432 5687384 1625432 5687352 1625480 5687312 -1622472 5686920 1622592 5687064 1625480 5687312 1625568 5687272 -1622472 5686920 1622360 5687856 1622592 5687064 1625480 5687312 -1622360 5687856 1622592 5687064 1622472 5686920 1622304 5687800 -1622472 5686920 1622200 5687776 1622304 5687800 1622592 5687064 -1622200 5687776 1622296 5687808 1622304 5687800 1622592 5687064 -1622472 5686920 1621800 5687120 1622200 5687776 1622592 5687064 -1622200 5687776 1622304 5687800 1622592 5687064 1621800 5687120 -1622472 5686920 1622296 5686800 1621800 5687120 1622592 5687064 -1621800 5687120 1622160 5687776 1622200 5687776 1622592 5687064 -1622592 5687064 1625480 5687312 1622472 5686920 1621800 5687120 -1622304 5687800 1622360 5687856 1622592 5687064 1622200 5687776 -1622592 5687064 1622360 5687856 1625432 5687384 1625432 5687352 -1622360 5687856 1625432 5687384 1622592 5687064 1622304 5687800 -1625432 5687384 1622592 5687064 1622360 5687856 1622360 5687944 -1622592 5687064 1622704 5687208 1625432 5687384 1625432 5687352 -1622592 5687064 1622704 5687208 1625432 5687352 1625480 5687312 -1622592 5687064 1622360 5687856 1622704 5687208 1625432 5687352 -1622360 5687856 1622704 5687208 1622592 5687064 1622304 5687800 -1622592 5687064 1622200 5687776 1622304 5687800 1622704 5687208 -1622592 5687064 1621800 5687120 1622200 5687776 1622704 5687208 -1622200 5687776 1622296 5687808 1622304 5687800 1622704 5687208 -1622704 5687208 1625432 5687352 1622592 5687064 1622200 5687776 -1622304 5687800 1622360 5687856 1622704 5687208 1622200 5687776 -1622704 5687208 1622360 5687856 1625432 5687384 1625432 5687352 -1622360 5687856 1625432 5687384 1622704 5687208 1622304 5687800 -1625432 5687384 1622704 5687208 1622360 5687856 1622360 5687944 -1625432 5687384 1625432 5687352 1622704 5687208 1622360 5687944 -1622704 5687208 1622304 5687800 1622360 5687856 1622360 5687944 -1625432 5687384 1622704 5687208 1622360 5687944 1625472 5687448 -1622704 5687208 1622888 5687408 1625432 5687384 1625432 5687352 -1622704 5687208 1622888 5687408 1625432 5687352 1622592 5687064 -1622704 5687208 1622360 5687944 1622888 5687408 1625432 5687352 -1622888 5687408 1622360 5687944 1625432 5687384 1625432 5687352 -1622360 5687944 1622888 5687408 1622704 5687208 1622360 5687856 -1622888 5687408 1625432 5687352 1622704 5687208 1622360 5687856 -1622704 5687208 1622304 5687800 1622360 5687856 1622888 5687408 -1622704 5687208 1622200 5687776 1622304 5687800 1622888 5687408 -1622704 5687208 1622304 5687800 1622888 5687408 1625432 5687352 -1622360 5687944 1625432 5687384 1622888 5687408 1622360 5687856 -1622360 5687856 1622360 5687944 1622888 5687408 1622304 5687800 -1625432 5687384 1622888 5687408 1622360 5687944 1625472 5687448 -1622360 5687944 1625520 5687512 1625472 5687448 1622888 5687408 -1622360 5687944 1625576 5687568 1625520 5687512 1622888 5687408 -1625520 5687512 1625472 5687448 1622888 5687408 1625576 5687568 -1622360 5687944 1622280 5688056 1625576 5687568 1622888 5687408 -1625432 5687384 1625432 5687352 1622888 5687408 1625472 5687448 -1622888 5687408 1622360 5687856 1622360 5687944 1625576 5687568 -1625472 5687448 1625432 5687384 1622888 5687408 1625520 5687512 -1622888 5687408 1623056 5687624 1625576 5687568 1625520 5687512 -1622888 5687408 1623056 5687624 1625520 5687512 1625472 5687448 -1623056 5687624 1625576 5687568 1625520 5687512 1625472 5687448 -1625576 5687568 1623056 5687624 1622360 5687944 1622280 5688056 -1622360 5687944 1622296 5688016 1622280 5688056 1623056 5687624 -1625576 5687568 1623056 5687624 1622280 5688056 1625672 5687640 -1622280 5688056 1625760 5687704 1625672 5687640 1623056 5687624 -1622280 5688056 1624104 5692408 1625760 5687704 1623056 5687624 -1622280 5688056 1624032 5692416 1624104 5692408 1623056 5687624 -1625760 5687704 1625672 5687640 1623056 5687624 1624104 5692408 -1623056 5687624 1622360 5687944 1622280 5688056 1624104 5692408 -1625672 5687640 1625576 5687568 1623056 5687624 1625760 5687704 -1622888 5687408 1622360 5687944 1623056 5687624 1625472 5687448 -1622360 5687944 1623056 5687624 1622888 5687408 1622360 5687856 -1623056 5687624 1625472 5687448 1622888 5687408 1622360 5687856 -1623056 5687624 1625672 5687640 1625576 5687568 1625520 5687512 -1623056 5687624 1622360 5687856 1622360 5687944 1622280 5688056 -1622888 5687408 1622304 5687800 1622360 5687856 1623056 5687624 -1624104 5692408 1625848 5687744 1625760 5687704 1623056 5687624 -1622888 5687408 1623056 5687624 1625472 5687448 1625432 5687384 -1623056 5687624 1625520 5687512 1625472 5687448 1625432 5687384 -1622888 5687408 1623056 5687624 1625432 5687384 1625432 5687352 -1622888 5687408 1623056 5687624 1625432 5687352 1622704 5687208 -1622888 5687408 1622360 5687856 1623056 5687624 1625432 5687352 -1623056 5687624 1625472 5687448 1625432 5687384 1625432 5687352 -1624104 5692408 1623064 5687664 1622280 5688056 1624032 5692416 -1622280 5688056 1623136 5692368 1624032 5692416 1623064 5687664 -1623056 5687624 1623064 5687664 1624104 5692408 1625760 5687704 -1623056 5687624 1623064 5687664 1625760 5687704 1625672 5687640 -1623064 5687664 1624104 5692408 1625760 5687704 1625672 5687640 -1622280 5688056 1623064 5687664 1623056 5687624 1622360 5687944 -1622280 5688056 1623064 5687664 1622360 5687944 1622296 5688016 -1623056 5687624 1623064 5687664 1625672 5687640 1625576 5687568 -1623064 5687664 1625760 5687704 1625672 5687640 1625576 5687568 -1623056 5687624 1623064 5687664 1625576 5687568 1625520 5687512 -1623056 5687624 1623064 5687664 1625520 5687512 1625472 5687448 -1623056 5687624 1623064 5687664 1625472 5687448 1625432 5687384 -1623064 5687664 1625520 5687512 1625472 5687448 1625432 5687384 -1623064 5687664 1625672 5687640 1625576 5687568 1625520 5687512 -1623064 5687664 1625576 5687568 1625520 5687512 1625472 5687448 -1623056 5687624 1622360 5687944 1623064 5687664 1625432 5687384 -1623056 5687624 1622360 5687856 1622360 5687944 1623064 5687664 -1622360 5687944 1622280 5688056 1623064 5687664 1622360 5687856 -1623056 5687624 1622888 5687408 1622360 5687856 1623064 5687664 -1623056 5687624 1622888 5687408 1623064 5687664 1625432 5687384 -1622360 5687856 1622360 5687944 1623064 5687664 1622888 5687408 -1624104 5692408 1625760 5687704 1623064 5687664 1624032 5692416 -1623064 5687664 1622360 5687944 1622280 5688056 1624032 5692416 -1622888 5687408 1622304 5687800 1622360 5687856 1623064 5687664 -1624104 5692408 1625848 5687744 1625760 5687704 1623064 5687664 -1623056 5687624 1623064 5687664 1625432 5687384 1625432 5687352 -1623064 5687664 1623096 5687688 1625760 5687704 1625672 5687640 -1623064 5687664 1623096 5687688 1625672 5687640 1625576 5687568 -1623096 5687688 1625760 5687704 1625672 5687640 1625576 5687568 -1623064 5687664 1623096 5687688 1625576 5687568 1625520 5687512 -1623096 5687688 1625672 5687640 1625576 5687568 1625520 5687512 -1623064 5687664 1623096 5687688 1625520 5687512 1625472 5687448 -1623064 5687664 1623096 5687688 1625472 5687448 1625432 5687384 -1623064 5687664 1623096 5687688 1625432 5687384 1623056 5687624 -1623096 5687688 1625472 5687448 1625432 5687384 1623056 5687624 -1623096 5687688 1625576 5687568 1625520 5687512 1625472 5687448 -1623096 5687688 1625520 5687512 1625472 5687448 1625432 5687384 -1624104 5692408 1623096 5687688 1623064 5687664 1624032 5692416 -1623064 5687664 1622280 5688056 1624032 5692416 1623096 5687688 -1622280 5688056 1623136 5692368 1624032 5692416 1623096 5687688 -1622280 5688056 1623136 5692368 1623096 5687688 1623064 5687664 -1623136 5692368 1623448 5692552 1624032 5692416 1623096 5687688 -1622280 5688056 1623032 5692344 1623136 5692368 1623096 5687688 -1624032 5692416 1624104 5692408 1623096 5687688 1623136 5692368 -1623064 5687664 1622280 5688056 1623096 5687688 1623056 5687624 -1623064 5687664 1622360 5687944 1622280 5688056 1623096 5687688 -1622280 5688056 1623136 5692368 1623096 5687688 1622360 5687944 -1622360 5687944 1622296 5688016 1622280 5688056 1623096 5687688 -1623064 5687664 1622360 5687856 1622360 5687944 1623096 5687688 -1623064 5687664 1622360 5687944 1623096 5687688 1623056 5687624 -1623096 5687688 1624104 5692408 1625760 5687704 1625672 5687640 -1624104 5692408 1625760 5687704 1623096 5687688 1624032 5692416 -1625760 5687704 1623096 5687688 1624104 5692408 1625848 5687744 -1625432 5687384 1625432 5687352 1623056 5687624 1623096 5687688 -1623056 5687624 1623064 5687664 1623096 5687688 1625432 5687352 -1625432 5687384 1625432 5687352 1623096 5687688 1625472 5687448 -1625432 5687352 1622888 5687408 1623056 5687624 1623096 5687688 -1623096 5687688 1622936 5687752 1622280 5688056 1623136 5692368 -1623096 5687688 1622936 5687752 1623136 5692368 1624032 5692416 -1622936 5687752 1622280 5688056 1623136 5692368 1624032 5692416 -1622280 5688056 1622936 5687752 1622360 5687944 1622296 5688016 -1623136 5692368 1623448 5692552 1624032 5692416 1622936 5687752 -1622280 5688056 1623032 5692344 1623136 5692368 1622936 5687752 -1623136 5692368 1624032 5692416 1622936 5687752 1623032 5692344 -1622280 5688056 1622240 5688080 1623032 5692344 1622936 5687752 -1623096 5687688 1622936 5687752 1624032 5692416 1624104 5692408 -1622936 5687752 1623136 5692368 1624032 5692416 1624104 5692408 -1622360 5687944 1622936 5687752 1623096 5687688 1623064 5687664 -1622360 5687944 1622936 5687752 1623064 5687664 1622360 5687856 -1623064 5687664 1622888 5687408 1622360 5687856 1622936 5687752 -1622360 5687856 1622360 5687944 1622936 5687752 1622888 5687408 -1623064 5687664 1623056 5687624 1622888 5687408 1622936 5687752 -1622888 5687408 1622360 5687856 1622936 5687752 1623056 5687624 -1622936 5687752 1623096 5687688 1623064 5687664 1623056 5687624 -1623096 5687688 1623064 5687664 1622936 5687752 1624104 5692408 -1623096 5687688 1622936 5687752 1624104 5692408 1625760 5687704 -1622936 5687752 1622360 5687944 1622280 5688056 1623032 5692344 -1622360 5687944 1622280 5688056 1622936 5687752 1622360 5687856 -1622888 5687408 1622304 5687800 1622360 5687856 1622936 5687752 -1622936 5687752 1622920 5687728 1622360 5687856 1622360 5687944 -1622888 5687408 1622920 5687728 1622936 5687752 1623056 5687624 -1622936 5687752 1623064 5687664 1623056 5687624 1622920 5687728 -1623056 5687624 1622888 5687408 1622920 5687728 1623064 5687664 -1622936 5687752 1623096 5687688 1623064 5687664 1622920 5687728 -1622936 5687752 1623064 5687664 1622920 5687728 1622360 5687944 -1622936 5687752 1622920 5687728 1622360 5687944 1622280 5688056 -1622920 5687728 1622888 5687408 1622360 5687856 1622360 5687944 -1622888 5687408 1622360 5687856 1622920 5687728 1623056 5687624 -1622360 5687856 1622920 5687728 1622888 5687408 1622304 5687800 -1622920 5687728 1622720 5687744 1622360 5687856 1622360 5687944 -1622920 5687728 1622720 5687744 1622360 5687944 1622936 5687752 -1622360 5687944 1622280 5688056 1622936 5687752 1622720 5687744 -1622720 5687744 1622360 5687856 1622360 5687944 1622936 5687752 -1622920 5687728 1622888 5687408 1622720 5687744 1622936 5687752 -1622888 5687408 1622720 5687744 1622920 5687728 1623056 5687624 -1622720 5687744 1622888 5687408 1622360 5687856 1622360 5687944 -1622360 5687856 1622720 5687744 1622888 5687408 1622304 5687800 -1622888 5687408 1622704 5687208 1622304 5687800 1622720 5687744 -1622704 5687208 1622200 5687776 1622304 5687800 1622720 5687744 -1622360 5687856 1622360 5687944 1622720 5687744 1622304 5687800 -1622720 5687744 1622920 5687728 1622888 5687408 1622704 5687208 -1622304 5687800 1622360 5687856 1622720 5687744 1622704 5687208 -1622304 5687800 1622624 5687736 1622704 5687208 1622200 5687776 -1622704 5687208 1622624 5687736 1622720 5687744 1622888 5687408 -1622624 5687736 1622304 5687800 1622720 5687744 1622888 5687408 -1622720 5687744 1622920 5687728 1622888 5687408 1622624 5687736 -1622704 5687208 1622304 5687800 1622624 5687736 1622888 5687408 -1622720 5687744 1622624 5687736 1622304 5687800 1622360 5687856 -1622720 5687744 1622624 5687736 1622360 5687856 1622360 5687944 -1622720 5687744 1622624 5687736 1622360 5687944 1622936 5687752 -1622720 5687744 1622888 5687408 1622624 5687736 1622360 5687944 -1622624 5687736 1622704 5687208 1622304 5687800 1622360 5687856 -1622624 5687736 1622304 5687800 1622360 5687856 1622360 5687944 -1622304 5687800 1622456 5687680 1622704 5687208 1622200 5687776 -1622304 5687800 1622456 5687680 1622200 5687776 1622296 5687808 -1622704 5687208 1622592 5687064 1622200 5687776 1622456 5687680 -1622592 5687064 1621800 5687120 1622200 5687776 1622456 5687680 -1621800 5687120 1622160 5687776 1622200 5687776 1622456 5687680 -1622592 5687064 1622472 5686920 1621800 5687120 1622456 5687680 -1622592 5687064 1621800 5687120 1622456 5687680 1622704 5687208 -1622200 5687776 1622304 5687800 1622456 5687680 1621800 5687120 -1622624 5687736 1622456 5687680 1622304 5687800 1622360 5687856 -1622624 5687736 1622704 5687208 1622456 5687680 1622360 5687856 -1622704 5687208 1622456 5687680 1622624 5687736 1622888 5687408 -1622304 5687800 1622360 5687856 1622456 5687680 1622200 5687776 -1622456 5687680 1622624 5687736 1622704 5687208 1622592 5687064 -1622624 5687736 1622456 5687680 1622360 5687856 1622360 5687944 -1621800 5687120 1622280 5687544 1622456 5687680 1622592 5687064 -1622200 5687776 1622280 5687544 1621800 5687120 1622160 5687776 -1621800 5687120 1622112 5687792 1622160 5687776 1622280 5687544 -1621800 5687120 1622080 5687816 1622112 5687792 1622280 5687544 -1622160 5687776 1622200 5687776 1622280 5687544 1622112 5687792 -1621800 5687120 1622280 5687544 1622592 5687064 1622472 5686920 -1622280 5687544 1622456 5687680 1622592 5687064 1622472 5686920 -1621800 5687120 1622280 5687544 1622472 5686920 1622296 5686800 -1622456 5687680 1622704 5687208 1622592 5687064 1622280 5687544 -1622592 5687064 1622472 5686920 1622280 5687544 1622704 5687208 -1622456 5687680 1622280 5687544 1622200 5687776 1622304 5687800 -1622200 5687776 1622296 5687808 1622304 5687800 1622280 5687544 -1622456 5687680 1622280 5687544 1622304 5687800 1622360 5687856 -1622280 5687544 1622304 5687800 1622456 5687680 1622704 5687208 -1622456 5687680 1622624 5687736 1622704 5687208 1622280 5687544 -1622200 5687776 1622304 5687800 1622280 5687544 1622160 5687776 -1621800 5687120 1622112 5687792 1622280 5687544 1622472 5686920 -1621800 5687120 1621968 5687136 1622472 5686920 1622296 5686800 -1621800 5687120 1621968 5687136 1622296 5686800 1621744 5686536 -1621968 5687136 1622472 5686920 1622296 5686800 1621744 5686536 -1621800 5687120 1621968 5687136 1621744 5686536 1621408 5687168 -1622472 5686920 1621968 5687136 1622280 5687544 1622592 5687064 -1622280 5687544 1622704 5687208 1622592 5687064 1621968 5687136 -1621968 5687136 1621800 5687120 1622280 5687544 1622592 5687064 -1622280 5687544 1621968 5687136 1621800 5687120 1622112 5687792 -1621800 5687120 1622080 5687816 1622112 5687792 1621968 5687136 -1621800 5687120 1622056 5687840 1622080 5687816 1621968 5687136 -1622280 5687544 1621968 5687136 1622112 5687792 1622160 5687776 -1622280 5687544 1622592 5687064 1621968 5687136 1622112 5687792 -1622112 5687792 1622280 5687544 1621968 5687136 1622080 5687816 -1621800 5687120 1622080 5687816 1621968 5687136 1621744 5686536 -1621968 5687136 1622592 5687064 1622472 5686920 1622296 5686800 -1621800 5687120 1621904 5687096 1621744 5686536 1621408 5687168 -1621744 5686536 1621904 5687096 1621968 5687136 1622296 5686800 -1621968 5687136 1622472 5686920 1622296 5686800 1621904 5687096 -1621968 5687136 1621904 5687096 1621800 5687120 1622080 5687816 -1621904 5687096 1621800 5687120 1621968 5687136 1622296 5686800 -1621744 5686536 1621800 5687120 1621904 5687096 1622296 5686800 -1626000 5687776 1625576 5690216 1629840 5692680 1629944 5692528 -1626000 5687776 1625576 5690216 1629944 5692528 1626040 5687760 -1629944 5692528 1630136 5692352 1626040 5687760 1625576 5690216 -1630136 5692352 1626064 5687736 1626040 5687760 1625576 5690216 -1630136 5692352 1630232 5692312 1626064 5687736 1625576 5690216 -1630136 5692352 1626064 5687736 1625576 5690216 1629944 5692528 -1626040 5687760 1626000 5687776 1625576 5690216 1626064 5687736 -1625576 5690216 1629840 5692680 1629944 5692528 1630136 5692352 -1624104 5692408 1625576 5690216 1626000 5687776 1625968 5687784 -1624104 5692408 1625576 5690216 1625968 5687784 1625936 5687776 -1625576 5690216 1626000 5687776 1625968 5687784 1625936 5687776 -1624104 5692408 1625576 5690216 1625936 5687776 1625848 5687744 -1625576 5690216 1625968 5687784 1625936 5687776 1625848 5687744 -1624104 5692408 1625576 5690216 1625848 5687744 1625760 5687704 -1625576 5690216 1625936 5687776 1625848 5687744 1625760 5687704 -1629840 5692680 1625576 5690216 1624104 5692408 1624120 5692440 -1629840 5692680 1625576 5690216 1624120 5692440 1629816 5692792 -1625576 5690216 1624104 5692408 1624120 5692440 1629816 5692792 -1624120 5692440 1624280 5693272 1629816 5692792 1625576 5690216 -1624280 5693272 1626552 5696056 1629816 5692792 1625576 5690216 -1629816 5692792 1629840 5692680 1625576 5690216 1624280 5693272 -1624120 5692440 1624280 5693272 1625576 5690216 1624104 5692408 -1624120 5692440 1624120 5692536 1624280 5693272 1625576 5690216 -1625576 5690216 1629816 5692792 1629840 5692680 1629944 5692528 -1624104 5692408 1624120 5692440 1625576 5690216 1625760 5687704 -1626000 5687776 1625968 5687784 1625576 5690216 1626040 5687760 -1624104 5692408 1625576 5690216 1625760 5687704 1623096 5687688 -1625576 5690216 1625848 5687744 1625760 5687704 1623096 5687688 -1625760 5687704 1625672 5687640 1623096 5687688 1625576 5690216 -1625760 5687704 1625672 5687640 1625576 5690216 1625848 5687744 -1625672 5687640 1625576 5687568 1623096 5687688 1625576 5690216 -1625576 5687568 1625520 5687512 1623096 5687688 1625576 5690216 -1625672 5687640 1625576 5687568 1625576 5690216 1625760 5687704 -1624104 5692408 1625576 5690216 1623096 5687688 1622936 5687752 -1624104 5692408 1625576 5690216 1622936 5687752 1624032 5692416 -1622936 5687752 1623136 5692368 1624032 5692416 1625576 5690216 -1622936 5687752 1623032 5692344 1623136 5692368 1625576 5690216 -1623136 5692368 1624032 5692416 1625576 5690216 1623032 5692344 -1623136 5692368 1623448 5692552 1624032 5692416 1625576 5690216 -1622936 5687752 1622280 5688056 1623032 5692344 1625576 5690216 -1623032 5692344 1623136 5692368 1625576 5690216 1622280 5688056 -1622280 5688056 1622240 5688080 1623032 5692344 1625576 5690216 -1623032 5692344 1623136 5692368 1625576 5690216 1622240 5688080 -1622280 5688056 1622240 5688080 1625576 5690216 1622936 5687752 -1624032 5692416 1624104 5692408 1625576 5690216 1623136 5692368 -1625576 5690216 1623096 5687688 1622936 5687752 1622280 5688056 -1622936 5687752 1622360 5687944 1622280 5688056 1625576 5690216 -1624104 5692408 1624120 5692440 1625576 5690216 1624032 5692416 -1622240 5688080 1623000 5692344 1623032 5692344 1625576 5690216 -1623096 5687688 1622936 5687752 1625576 5690216 1625576 5687568 -1629816 5692792 1625784 5690360 1624280 5693272 1626552 5696056 -1625576 5690216 1625784 5690360 1629816 5692792 1629840 5692680 -1624280 5693272 1625784 5690360 1625576 5690216 1624120 5692440 -1625576 5690216 1624104 5692408 1624120 5692440 1625784 5690360 -1624280 5693272 1625784 5690360 1624120 5692440 1624120 5692536 -1624120 5692440 1624280 5693272 1625784 5690360 1624104 5692408 -1625576 5690216 1625784 5690360 1629840 5692680 1629944 5692528 -1625576 5690216 1625784 5690360 1629944 5692528 1630136 5692352 -1625576 5690216 1625784 5690360 1630136 5692352 1626064 5687736 -1630136 5692352 1630232 5692312 1626064 5687736 1625784 5690360 -1625576 5690216 1625784 5690360 1626064 5687736 1626040 5687760 -1625784 5690360 1630136 5692352 1626064 5687736 1626040 5687760 -1625576 5690216 1625784 5690360 1626040 5687760 1626000 5687776 -1625784 5690360 1626064 5687736 1626040 5687760 1626000 5687776 -1625784 5690360 1629944 5692528 1630136 5692352 1626064 5687736 -1625784 5690360 1629816 5692792 1629840 5692680 1629944 5692528 -1625784 5690360 1629840 5692680 1629944 5692528 1630136 5692352 -1625576 5690216 1624032 5692416 1624104 5692408 1625784 5690360 -1625576 5690216 1624104 5692408 1625784 5690360 1626000 5687776 -1625576 5690216 1625784 5690360 1626000 5687776 1625968 5687784 -1625784 5690360 1624280 5693272 1629816 5692792 1629840 5692680 -1624280 5693272 1629816 5692792 1625784 5690360 1624120 5692440 -1629840 5692680 1625968 5690464 1625784 5690360 1629816 5692792 -1625784 5690360 1625968 5690464 1629944 5692528 1630136 5692352 -1625784 5690360 1625968 5690464 1630136 5692352 1626064 5687736 -1630136 5692352 1630232 5692312 1626064 5687736 1625968 5690464 -1630232 5692312 1626096 5687664 1626064 5687736 1625968 5690464 -1625784 5690360 1625968 5690464 1626064 5687736 1626040 5687760 -1625784 5690360 1625968 5690464 1626040 5687760 1626000 5687776 -1626064 5687736 1626040 5687760 1625968 5690464 1630232 5692312 -1625968 5690464 1629944 5692528 1630136 5692352 1630232 5692312 -1625784 5690360 1624280 5693272 1629816 5692792 1625968 5690464 -1624280 5693272 1626552 5696056 1629816 5692792 1625968 5690464 -1629816 5692792 1629840 5692680 1625968 5690464 1624280 5693272 -1625968 5690464 1626040 5687760 1625784 5690360 1624280 5693272 -1625784 5690360 1624120 5692440 1624280 5693272 1625968 5690464 -1624120 5692440 1624120 5692536 1624280 5693272 1625968 5690464 -1625784 5690360 1624104 5692408 1624120 5692440 1625968 5690464 -1625784 5690360 1625576 5690216 1624104 5692408 1625968 5690464 -1624280 5693272 1629816 5692792 1625968 5690464 1624120 5692440 -1625784 5690360 1624104 5692408 1625968 5690464 1626040 5687760 -1624120 5692440 1624280 5693272 1625968 5690464 1624104 5692408 -1625968 5690464 1629840 5692680 1629944 5692528 1630136 5692352 -1629840 5692680 1629944 5692528 1625968 5690464 1629816 5692792 -1626064 5687736 1626208 5690560 1630232 5692312 1626096 5687664 -1630232 5692312 1630448 5692312 1626096 5687664 1626208 5690560 -1630232 5692312 1626208 5690560 1625968 5690464 1630136 5692352 -1625968 5690464 1626208 5690560 1626064 5687736 1626040 5687760 -1625968 5690464 1626208 5690560 1626040 5687760 1625784 5690360 -1625968 5690464 1629944 5692528 1630136 5692352 1626208 5690560 -1630136 5692352 1630232 5692312 1626208 5690560 1629944 5692528 -1625968 5690464 1629840 5692680 1629944 5692528 1626208 5690560 -1629944 5692528 1630136 5692352 1626208 5690560 1629840 5692680 -1626208 5690560 1626040 5687760 1625968 5690464 1629840 5692680 -1625968 5690464 1629816 5692792 1629840 5692680 1626208 5690560 -1625968 5690464 1624280 5693272 1629816 5692792 1626208 5690560 -1624280 5693272 1626552 5696056 1629816 5692792 1626208 5690560 -1625968 5690464 1624120 5692440 1624280 5693272 1626208 5690560 -1624280 5693272 1629816 5692792 1626208 5690560 1624120 5692440 -1624120 5692440 1624120 5692536 1624280 5693272 1626208 5690560 -1624280 5693272 1629816 5692792 1626208 5690560 1624120 5692536 -1624120 5692536 1624232 5693160 1624280 5693272 1626208 5690560 -1624120 5692440 1624120 5692536 1626208 5690560 1625968 5690464 -1625968 5690464 1624104 5692408 1624120 5692440 1626208 5690560 -1629840 5692680 1629944 5692528 1626208 5690560 1629816 5692792 -1625968 5690464 1624120 5692440 1626208 5690560 1626040 5687760 -1629816 5692792 1629840 5692680 1626208 5690560 1624280 5693272 -1626064 5687736 1626040 5687760 1626208 5690560 1626096 5687664 -1626208 5690560 1630136 5692352 1630232 5692312 1626096 5687664 -1626096 5687664 1626824 5690816 1630232 5692312 1630448 5692312 -1626208 5690560 1626824 5690816 1626096 5687664 1626064 5687736 -1626208 5690560 1626824 5690816 1626064 5687736 1626040 5687760 -1626824 5690816 1626096 5687664 1626064 5687736 1626040 5687760 -1626208 5690560 1626824 5690816 1626040 5687760 1625968 5690464 -1626208 5690560 1630232 5692312 1626824 5690816 1626040 5687760 -1630232 5692312 1626824 5690816 1626208 5690560 1630136 5692352 -1626208 5690560 1629944 5692528 1630136 5692352 1626824 5690816 -1626208 5690560 1629840 5692680 1629944 5692528 1626824 5690816 -1629944 5692528 1630136 5692352 1626824 5690816 1629840 5692680 -1626208 5690560 1629816 5692792 1629840 5692680 1626824 5690816 -1629840 5692680 1629944 5692528 1626824 5690816 1629816 5692792 -1626208 5690560 1624280 5693272 1629816 5692792 1626824 5690816 -1624280 5693272 1626552 5696056 1629816 5692792 1626824 5690816 -1626208 5690560 1624120 5692536 1624280 5693272 1626824 5690816 -1626208 5690560 1624120 5692440 1624120 5692536 1626824 5690816 -1624120 5692536 1624280 5693272 1626824 5690816 1624120 5692440 -1626552 5696056 1629856 5692928 1629816 5692792 1626824 5690816 -1624120 5692536 1624232 5693160 1624280 5693272 1626824 5690816 -1624280 5693272 1626520 5696056 1626552 5696056 1626824 5690816 -1626208 5690560 1625968 5690464 1624120 5692440 1626824 5690816 -1629816 5692792 1629840 5692680 1626824 5690816 1626552 5696056 -1624280 5693272 1626552 5696056 1626824 5690816 1624120 5692536 -1626824 5690816 1626040 5687760 1626208 5690560 1624120 5692440 -1630136 5692352 1630232 5692312 1626824 5690816 1629944 5692528 -1626824 5690816 1630232 5692312 1626096 5687664 1626064 5687736 -1630232 5692312 1626096 5687664 1626824 5690816 1630136 5692352 -1626096 5687664 1626976 5690872 1630232 5692312 1630448 5692312 -1626824 5690816 1626976 5690872 1626096 5687664 1626064 5687736 -1626824 5690816 1626976 5690872 1626064 5687736 1626040 5687760 -1626824 5690816 1630232 5692312 1626976 5690872 1626064 5687736 -1630232 5692312 1626976 5690872 1626824 5690816 1630136 5692352 -1626824 5690816 1629944 5692528 1630136 5692352 1626976 5690872 -1626824 5690816 1629840 5692680 1629944 5692528 1626976 5690872 -1626824 5690816 1629816 5692792 1629840 5692680 1626976 5690872 -1629840 5692680 1629944 5692528 1626976 5690872 1629816 5692792 -1626824 5690816 1626552 5696056 1629816 5692792 1626976 5690872 -1626824 5690816 1624280 5693272 1626552 5696056 1626976 5690872 -1626552 5696056 1629856 5692928 1629816 5692792 1626976 5690872 -1624280 5693272 1626520 5696056 1626552 5696056 1626976 5690872 -1629816 5692792 1629840 5692680 1626976 5690872 1626552 5696056 -1626552 5696056 1629816 5692792 1626976 5690872 1624280 5693272 -1626824 5690816 1624120 5692536 1624280 5693272 1626976 5690872 -1629944 5692528 1630136 5692352 1626976 5690872 1629840 5692680 -1626976 5690872 1626064 5687736 1626824 5690816 1624280 5693272 -1630136 5692352 1630232 5692312 1626976 5690872 1629944 5692528 -1626976 5690872 1630232 5692312 1626096 5687664 1626064 5687736 -1630232 5692312 1626096 5687664 1626976 5690872 1630136 5692352 -1629944 5692528 1627248 5691016 1626976 5690872 1629840 5692680 -1626976 5690872 1629816 5692792 1629840 5692680 1627248 5691016 -1626976 5690872 1626552 5696056 1629816 5692792 1627248 5691016 -1629816 5692792 1629840 5692680 1627248 5691016 1626552 5696056 -1626552 5696056 1629856 5692928 1629816 5692792 1627248 5691016 -1629816 5692792 1629840 5692680 1627248 5691016 1629856 5692928 -1626552 5696056 1626600 5696072 1629856 5692928 1627248 5691016 -1626552 5696056 1629856 5692928 1627248 5691016 1626976 5690872 -1626976 5690872 1624280 5693272 1626552 5696056 1627248 5691016 -1626976 5690872 1626824 5690816 1624280 5693272 1627248 5691016 -1624280 5693272 1626520 5696056 1626552 5696056 1627248 5691016 -1626552 5696056 1629856 5692928 1627248 5691016 1624280 5693272 -1624280 5693272 1626552 5696056 1627248 5691016 1626824 5690816 -1626824 5690816 1624120 5692536 1624280 5693272 1627248 5691016 -1629840 5692680 1629944 5692528 1627248 5691016 1629816 5692792 -1626976 5690872 1627248 5691016 1630136 5692352 1630232 5692312 -1627248 5691016 1630232 5692312 1626976 5690872 1626824 5690816 -1626976 5690872 1627248 5691016 1630232 5692312 1626096 5687664 -1630232 5692312 1630448 5692312 1626096 5687664 1627248 5691016 -1627248 5691016 1630136 5692352 1630232 5692312 1626096 5687664 -1626976 5690872 1627248 5691016 1626096 5687664 1626064 5687736 -1626976 5690872 1627248 5691016 1626064 5687736 1626824 5690816 -1626976 5690872 1626824 5690816 1627248 5691016 1626064 5687736 -1627248 5691016 1630232 5692312 1626096 5687664 1626064 5687736 -1629944 5692528 1630136 5692352 1627248 5691016 1629840 5692680 -1627248 5691016 1629944 5692528 1630136 5692352 1630232 5692312 -1629856 5692928 1627352 5691104 1626552 5696056 1626600 5696072 -1629856 5692928 1627352 5691104 1626600 5696072 1626688 5696104 -1627248 5691016 1627352 5691104 1629856 5692928 1629816 5692792 -1627248 5691016 1627352 5691104 1629816 5692792 1629840 5692680 -1627352 5691104 1629856 5692928 1629816 5692792 1629840 5692680 -1626552 5696056 1627352 5691104 1627248 5691016 1624280 5693272 -1626552 5696056 1627352 5691104 1624280 5693272 1626520 5696056 -1627248 5691016 1626824 5690816 1624280 5693272 1627352 5691104 -1627248 5691016 1626976 5690872 1626824 5690816 1627352 5691104 -1624280 5693272 1626552 5696056 1627352 5691104 1626824 5690816 -1626824 5690816 1624280 5693272 1627352 5691104 1626976 5690872 -1626824 5690816 1624120 5692536 1624280 5693272 1627352 5691104 -1627248 5691016 1627352 5691104 1629840 5692680 1629944 5692528 -1627352 5691104 1629816 5692792 1629840 5692680 1629944 5692528 -1627248 5691016 1626976 5690872 1627352 5691104 1629944 5692528 -1627248 5691016 1627352 5691104 1629944 5692528 1630136 5692352 -1627352 5691104 1629840 5692680 1629944 5692528 1630136 5692352 -1627248 5691016 1626976 5690872 1627352 5691104 1630136 5692352 -1629856 5692928 1629816 5692792 1627352 5691104 1626600 5696072 -1627352 5691104 1624280 5693272 1626552 5696056 1626600 5696072 -1627248 5691016 1627352 5691104 1630136 5692352 1630232 5692312 -1627248 5691016 1627352 5691104 1630232 5692312 1626096 5687664 -1630232 5692312 1630448 5692312 1626096 5687664 1627352 5691104 -1627248 5691016 1627352 5691104 1626096 5687664 1626064 5687736 -1627248 5691016 1626976 5690872 1627352 5691104 1626096 5687664 -1627352 5691104 1629944 5692528 1630136 5692352 1630232 5692312 -1627352 5691104 1630136 5692352 1630232 5692312 1626096 5687664 -1629856 5692928 1627368 5691192 1626600 5696072 1626688 5696104 -1626600 5696072 1627368 5691192 1627352 5691104 1626552 5696056 -1626600 5696072 1629856 5692928 1627368 5691192 1626552 5696056 -1627352 5691104 1627368 5691192 1629856 5692928 1629816 5692792 -1627352 5691104 1627368 5691192 1629816 5692792 1629840 5692680 -1627352 5691104 1627368 5691192 1629840 5692680 1629944 5692528 -1627368 5691192 1629816 5692792 1629840 5692680 1629944 5692528 -1627368 5691192 1626600 5696072 1629856 5692928 1629816 5692792 -1627352 5691104 1627368 5691192 1629944 5692528 1630136 5692352 -1627368 5691192 1629840 5692680 1629944 5692528 1630136 5692352 -1627352 5691104 1627368 5691192 1630136 5692352 1630232 5692312 -1627368 5691192 1629856 5692928 1629816 5692792 1629840 5692680 -1627368 5691192 1630136 5692352 1627352 5691104 1626552 5696056 -1627352 5691104 1624280 5693272 1626552 5696056 1627368 5691192 -1626552 5696056 1626600 5696072 1627368 5691192 1624280 5693272 -1624280 5693272 1626520 5696056 1626552 5696056 1627368 5691192 -1627352 5691104 1626824 5690816 1624280 5693272 1627368 5691192 -1627352 5691104 1626976 5690872 1626824 5690816 1627368 5691192 -1627352 5691104 1627248 5691016 1626976 5690872 1627368 5691192 -1626824 5690816 1624280 5693272 1627368 5691192 1626976 5690872 -1626976 5690872 1626824 5690816 1627368 5691192 1627248 5691016 -1626824 5690816 1624120 5692536 1624280 5693272 1627368 5691192 -1627352 5691104 1627248 5691016 1627368 5691192 1630136 5692352 -1624280 5693272 1626552 5696056 1627368 5691192 1626824 5690816 -1626824 5690816 1627304 5691224 1627368 5691192 1626976 5690872 -1627304 5691224 1624280 5693272 1627368 5691192 1626976 5690872 -1626824 5690816 1624280 5693272 1627304 5691224 1626976 5690872 -1627368 5691192 1627248 5691016 1626976 5690872 1627304 5691224 -1627368 5691192 1627352 5691104 1627248 5691016 1627304 5691224 -1627368 5691192 1627352 5691104 1627304 5691224 1624280 5693272 -1626976 5690872 1626824 5690816 1627304 5691224 1627248 5691016 -1627248 5691016 1626976 5690872 1627304 5691224 1627352 5691104 -1624280 5693272 1627304 5691224 1626824 5690816 1624120 5692536 -1626824 5690816 1624120 5692440 1624120 5692536 1627304 5691224 -1626824 5690816 1626208 5690560 1624120 5692440 1627304 5691224 -1624280 5693272 1627304 5691224 1624120 5692536 1624232 5693160 -1624280 5693272 1627368 5691192 1627304 5691224 1624120 5692536 -1627304 5691224 1626976 5690872 1626824 5690816 1624120 5692440 -1624120 5692536 1624280 5693272 1627304 5691224 1624120 5692440 -1627368 5691192 1627304 5691224 1624280 5693272 1626552 5696056 -1627368 5691192 1627304 5691224 1626552 5696056 1626600 5696072 -1627368 5691192 1627352 5691104 1627304 5691224 1626600 5696072 -1627368 5691192 1627304 5691224 1626600 5696072 1629856 5692928 -1626600 5696072 1626688 5696104 1629856 5692928 1627304 5691224 -1627304 5691224 1626552 5696056 1626600 5696072 1629856 5692928 -1627368 5691192 1627304 5691224 1629856 5692928 1629816 5692792 -1627368 5691192 1627352 5691104 1627304 5691224 1629816 5692792 -1627304 5691224 1626600 5696072 1629856 5692928 1629816 5692792 -1627304 5691224 1624120 5692536 1624280 5693272 1626552 5696056 -1624280 5693272 1626520 5696056 1626552 5696056 1627304 5691224 -1627368 5691192 1627304 5691224 1629816 5692792 1629840 5692680 -1627304 5691224 1624280 5693272 1626552 5696056 1626600 5696072 -1624280 5693272 1627168 5691336 1627304 5691224 1624120 5692536 -1624280 5693272 1627168 5691336 1624120 5692536 1624232 5693160 -1627168 5691336 1626552 5696056 1627304 5691224 1624120 5692536 -1624280 5693272 1626552 5696056 1627168 5691336 1624120 5692536 -1626552 5696056 1627168 5691336 1624280 5693272 1626520 5696056 -1627304 5691224 1624120 5692440 1624120 5692536 1627168 5691336 -1627304 5691224 1626824 5690816 1624120 5692440 1627168 5691336 -1626824 5690816 1626208 5690560 1624120 5692440 1627168 5691336 -1626824 5690816 1626208 5690560 1627168 5691336 1627304 5691224 -1624120 5692536 1624280 5693272 1627168 5691336 1624120 5692440 -1627304 5691224 1626824 5690816 1627168 5691336 1626552 5696056 -1627304 5691224 1626976 5690872 1626824 5690816 1627168 5691336 -1626824 5690816 1626208 5690560 1627168 5691336 1626976 5690872 -1627304 5691224 1626976 5690872 1627168 5691336 1626552 5696056 -1627304 5691224 1627248 5691016 1626976 5690872 1627168 5691336 -1627304 5691224 1627248 5691016 1627168 5691336 1626552 5696056 -1626976 5690872 1626824 5690816 1627168 5691336 1627248 5691016 -1626208 5690560 1625968 5690464 1624120 5692440 1627168 5691336 -1627304 5691224 1627352 5691104 1627248 5691016 1627168 5691336 -1624120 5692440 1624120 5692536 1627168 5691336 1626208 5690560 -1627304 5691224 1627168 5691336 1626552 5696056 1626600 5696072 -1627304 5691224 1627168 5691336 1626600 5696072 1629856 5692928 -1626600 5696072 1626688 5696104 1629856 5692928 1627168 5691336 -1629856 5692928 1627304 5691224 1627168 5691336 1626688 5696104 -1626688 5696104 1626864 5696192 1629856 5692928 1627168 5691336 -1627304 5691224 1627168 5691336 1629856 5692928 1629816 5692792 -1627168 5691336 1626688 5696104 1629856 5692928 1629816 5692792 -1627304 5691224 1627168 5691336 1629816 5692792 1627368 5691192 -1627168 5691336 1629856 5692928 1629816 5692792 1627368 5691192 -1627304 5691224 1627248 5691016 1627168 5691336 1627368 5691192 -1627168 5691336 1624280 5693272 1626552 5696056 1626600 5696072 -1629816 5692792 1629840 5692680 1627368 5691192 1627168 5691336 -1627168 5691336 1626552 5696056 1626600 5696072 1626688 5696104 -1626208 5690560 1626992 5691384 1627168 5691336 1626824 5690816 -1627168 5691336 1626976 5690872 1626824 5690816 1626992 5691384 -1626824 5690816 1626208 5690560 1626992 5691384 1626976 5690872 -1627168 5691336 1627248 5691016 1626976 5690872 1626992 5691384 -1626976 5690872 1626824 5690816 1626992 5691384 1627248 5691016 -1626992 5691384 1624120 5692440 1627168 5691336 1627248 5691016 -1626208 5690560 1624120 5692440 1626992 5691384 1626824 5690816 -1627168 5691336 1627304 5691224 1627248 5691016 1626992 5691384 -1624120 5692440 1626992 5691384 1626208 5690560 1625968 5690464 -1627168 5691336 1626992 5691384 1624120 5692440 1624120 5692536 -1627168 5691336 1626992 5691384 1624120 5692536 1624280 5693272 -1624120 5692536 1624232 5693160 1624280 5693272 1626992 5691384 -1627168 5691336 1627248 5691016 1626992 5691384 1624280 5693272 -1627168 5691336 1626992 5691384 1624280 5693272 1626552 5696056 -1626992 5691384 1624120 5692536 1624280 5693272 1626552 5696056 -1627168 5691336 1626992 5691384 1626552 5696056 1626600 5696072 -1627168 5691336 1627248 5691016 1626992 5691384 1626600 5696072 -1626992 5691384 1624280 5693272 1626552 5696056 1626600 5696072 -1626992 5691384 1626208 5690560 1624120 5692440 1624120 5692536 -1624280 5693272 1626520 5696056 1626552 5696056 1626992 5691384 -1626992 5691384 1624120 5692440 1624120 5692536 1624280 5693272 -1627168 5691336 1626992 5691384 1626600 5696072 1626688 5696104 -1627168 5691336 1626992 5691384 1626688 5696104 1629856 5692928 -1627168 5691336 1626992 5691384 1629856 5692928 1629816 5692792 -1626688 5696104 1626864 5696192 1629856 5692928 1626992 5691384 -1626992 5691384 1626552 5696056 1626600 5696072 1626688 5696104 -1627168 5691336 1627248 5691016 1626992 5691384 1629856 5692928 -1626992 5691384 1626600 5696072 1626688 5696104 1629856 5692928 -1626992 5691384 1626872 5691384 1624120 5692440 1624120 5692536 -1626992 5691384 1626208 5690560 1626872 5691384 1624120 5692536 -1626208 5690560 1626872 5691384 1626992 5691384 1626824 5690816 -1626992 5691384 1626976 5690872 1626824 5690816 1626872 5691384 -1626992 5691384 1627248 5691016 1626976 5690872 1626872 5691384 -1626872 5691384 1624120 5692536 1626992 5691384 1626976 5690872 -1626824 5690816 1626208 5690560 1626872 5691384 1626976 5690872 -1626872 5691384 1626208 5690560 1624120 5692440 1624120 5692536 -1626208 5690560 1624120 5692440 1626872 5691384 1626824 5690816 -1624120 5692440 1626872 5691384 1626208 5690560 1625968 5690464 -1624120 5692440 1624120 5692536 1626872 5691384 1625968 5690464 -1626872 5691384 1626824 5690816 1626208 5690560 1625968 5690464 -1624120 5692440 1626872 5691384 1625968 5690464 1624104 5692408 -1626992 5691384 1626872 5691384 1624120 5692536 1624280 5693272 -1624120 5692536 1624232 5693160 1624280 5693272 1626872 5691384 -1624120 5692536 1624072 5692800 1624232 5693160 1626872 5691384 -1626992 5691384 1626872 5691384 1624280 5693272 1626552 5696056 -1626992 5691384 1626872 5691384 1626552 5696056 1626600 5696072 -1626872 5691384 1624120 5692440 1624120 5692536 1624232 5693160 -1626992 5691384 1626976 5690872 1626872 5691384 1626552 5696056 -1624280 5693272 1626520 5696056 1626552 5696056 1626872 5691384 -1624280 5693272 1626552 5696056 1626872 5691384 1624232 5693160 -1626872 5691384 1626768 5691344 1624120 5692440 1624120 5692536 -1626872 5691384 1626768 5691344 1624120 5692536 1624232 5693160 -1624120 5692536 1624072 5692800 1624232 5693160 1626768 5691344 -1626872 5691384 1626768 5691344 1624232 5693160 1624280 5693272 -1626768 5691344 1624120 5692536 1624232 5693160 1624280 5693272 -1626768 5691344 1624120 5692440 1624120 5692536 1624232 5693160 -1626872 5691384 1625968 5690464 1626768 5691344 1624280 5693272 -1626768 5691344 1625968 5690464 1624120 5692440 1624120 5692536 -1625968 5690464 1626768 5691344 1626872 5691384 1626208 5690560 -1626768 5691344 1624280 5693272 1626872 5691384 1626208 5690560 -1626872 5691384 1626824 5690816 1626208 5690560 1626768 5691344 -1626872 5691384 1626976 5690872 1626824 5690816 1626768 5691344 -1626872 5691384 1626992 5691384 1626976 5690872 1626768 5691344 -1626872 5691384 1626976 5690872 1626768 5691344 1624280 5693272 -1626824 5690816 1626208 5690560 1626768 5691344 1626976 5690872 -1625968 5690464 1624120 5692440 1626768 5691344 1626208 5690560 -1626208 5690560 1625968 5690464 1626768 5691344 1626824 5690816 -1624120 5692440 1626768 5691344 1625968 5690464 1624104 5692408 -1626872 5691384 1626768 5691344 1624280 5693272 1626552 5696056 -1626768 5691344 1626496 5691144 1624120 5692440 1624120 5692536 -1626768 5691344 1626496 5691144 1624120 5692536 1624232 5693160 -1626768 5691344 1625968 5690464 1626496 5691144 1624120 5692536 -1625968 5690464 1626496 5691144 1626768 5691344 1626208 5690560 -1626496 5691144 1624120 5692536 1626768 5691344 1626208 5690560 -1626496 5691144 1625968 5690464 1624120 5692440 1624120 5692536 -1625968 5690464 1624120 5692440 1626496 5691144 1626208 5690560 -1626768 5691344 1626824 5690816 1626208 5690560 1626496 5691144 -1626768 5691344 1626976 5690872 1626824 5690816 1626496 5691144 -1626768 5691344 1626824 5690816 1626496 5691144 1624120 5692536 -1626208 5690560 1625968 5690464 1626496 5691144 1626824 5690816 -1624120 5692440 1626496 5691144 1625968 5690464 1624104 5692408 -1625968 5690464 1625784 5690360 1624104 5692408 1626496 5691144 -1624120 5692440 1624120 5692536 1626496 5691144 1624104 5692408 -1626496 5691144 1626208 5690560 1625968 5690464 1624104 5692408 -1624104 5692408 1626344 5691040 1625968 5690464 1625784 5690360 -1624104 5692408 1626344 5691040 1625784 5690360 1625576 5690216 -1625968 5690464 1626344 5691040 1626496 5691144 1626208 5690560 -1626496 5691144 1626824 5690816 1626208 5690560 1626344 5691040 -1626344 5691040 1624104 5692408 1626496 5691144 1626824 5690816 -1626208 5690560 1625968 5690464 1626344 5691040 1626824 5690816 -1624104 5692408 1626496 5691144 1626344 5691040 1625784 5690360 -1626344 5691040 1626208 5690560 1625968 5690464 1625784 5690360 -1626496 5691144 1626768 5691344 1626824 5690816 1626344 5691040 -1626496 5691144 1626344 5691040 1624104 5692408 1624120 5692440 -1626496 5691144 1626344 5691040 1624120 5692440 1624120 5692536 -1626496 5691144 1626824 5690816 1626344 5691040 1624120 5692440 -1626344 5691040 1625784 5690360 1624104 5692408 1624120 5692440 -1624104 5692408 1625840 5690768 1625784 5690360 1625576 5690216 -1625784 5690360 1625840 5690768 1626344 5691040 1625968 5690464 -1626344 5691040 1625840 5690768 1624104 5692408 1624120 5692440 -1625840 5690768 1624120 5692440 1626344 5691040 1625968 5690464 -1626344 5691040 1626208 5690560 1625968 5690464 1625840 5690768 -1625968 5690464 1625784 5690360 1625840 5690768 1626208 5690560 -1626344 5691040 1626824 5690816 1626208 5690560 1625840 5690768 -1626344 5691040 1626208 5690560 1625840 5690768 1624120 5692440 -1624104 5692408 1624120 5692440 1625840 5690768 1625576 5690216 -1625840 5690768 1625968 5690464 1625784 5690360 1625576 5690216 -1624104 5692408 1625840 5690768 1625576 5690216 1624032 5692416 -1626344 5691040 1625840 5690768 1624120 5692440 1626496 5691144 -1625576 5690216 1625520 5690696 1625840 5690768 1625784 5690360 -1625840 5690768 1625520 5690696 1624104 5692408 1624120 5692440 -1625840 5690768 1625520 5690696 1624120 5692440 1626344 5691040 -1625520 5690696 1624120 5692440 1625840 5690768 1625784 5690360 -1625840 5690768 1625968 5690464 1625784 5690360 1625520 5690696 -1625520 5690696 1625576 5690216 1624104 5692408 1624120 5692440 -1625576 5690216 1624104 5692408 1625520 5690696 1625784 5690360 -1624104 5692408 1625520 5690696 1625576 5690216 1624032 5692416 -1624104 5692408 1624120 5692440 1625520 5690696 1624032 5692416 -1625520 5690696 1625784 5690360 1625576 5690216 1624032 5692416 -1625576 5690216 1623136 5692368 1624032 5692416 1625520 5690696 -1625576 5690216 1623032 5692344 1623136 5692368 1625520 5690696 -1625576 5690216 1622240 5688080 1623032 5692344 1625520 5690696 -1623136 5692368 1623448 5692552 1624032 5692416 1625520 5690696 -1625576 5690216 1623032 5692344 1625520 5690696 1625784 5690360 -1623136 5692368 1624032 5692416 1625520 5690696 1623032 5692344 -1624032 5692416 1624104 5692408 1625520 5690696 1623136 5692368 -1625520 5690696 1625272 5690680 1623032 5692344 1623136 5692368 -1623032 5692344 1625272 5690680 1625576 5690216 1622240 5688080 -1625520 5690696 1625576 5690216 1625272 5690680 1623136 5692368 -1625576 5690216 1625272 5690680 1625520 5690696 1625784 5690360 -1625272 5690680 1622240 5688080 1623032 5692344 1623136 5692368 -1625272 5690680 1625520 5690696 1625576 5690216 1622240 5688080 -1625576 5690216 1622280 5688056 1622240 5688080 1625272 5690680 -1622240 5688080 1623032 5692344 1625272 5690680 1622280 5688056 -1625576 5690216 1622280 5688056 1625272 5690680 1625520 5690696 -1625576 5690216 1622936 5687752 1622280 5688056 1625272 5690680 -1625576 5690216 1622936 5687752 1625272 5690680 1625520 5690696 -1622280 5688056 1622240 5688080 1625272 5690680 1622936 5687752 -1625520 5690696 1625272 5690680 1623136 5692368 1624032 5692416 -1625272 5690680 1623032 5692344 1623136 5692368 1624032 5692416 -1623136 5692368 1623448 5692552 1624032 5692416 1625272 5690680 -1625520 5690696 1625576 5690216 1625272 5690680 1624032 5692416 -1625576 5690216 1623096 5687688 1622936 5687752 1625272 5690680 -1625576 5690216 1623096 5687688 1625272 5690680 1625520 5690696 -1622936 5687752 1622280 5688056 1625272 5690680 1623096 5687688 -1622936 5687752 1622360 5687944 1622280 5688056 1625272 5690680 -1625520 5690696 1625272 5690680 1624032 5692416 1624104 5692408 -1625520 5690696 1625272 5690680 1624104 5692408 1624120 5692440 -1625520 5690696 1625272 5690680 1624120 5692440 1625840 5690768 -1625520 5690696 1625576 5690216 1625272 5690680 1624120 5692440 -1625272 5690680 1623136 5692368 1624032 5692416 1624104 5692408 -1625272 5690680 1624032 5692416 1624104 5692408 1624120 5692440 -1623032 5692344 1625272 5690680 1622240 5688080 1623000 5692344 -1625576 5690216 1625576 5687568 1623096 5687688 1625272 5690680 -1622240 5688080 1624912 5690712 1625272 5690680 1622280 5688056 -1625272 5690680 1624912 5690712 1623032 5692344 1623136 5692368 -1625272 5690680 1624912 5690712 1623136 5692368 1624032 5692416 -1623136 5692368 1623448 5692552 1624032 5692416 1624912 5690712 -1624912 5690712 1623032 5692344 1623136 5692368 1624032 5692416 -1624912 5690712 1624032 5692416 1625272 5690680 1622280 5688056 -1624912 5690712 1622240 5688080 1623032 5692344 1623136 5692368 -1622240 5688080 1623032 5692344 1624912 5690712 1622280 5688056 -1625272 5690680 1622936 5687752 1622280 5688056 1624912 5690712 -1622280 5688056 1622240 5688080 1624912 5690712 1622936 5687752 -1625272 5690680 1622936 5687752 1624912 5690712 1624032 5692416 -1625272 5690680 1623096 5687688 1622936 5687752 1624912 5690712 -1625272 5690680 1623096 5687688 1624912 5690712 1624032 5692416 -1622936 5687752 1622280 5688056 1624912 5690712 1623096 5687688 -1625272 5690680 1624912 5690712 1624032 5692416 1624104 5692408 -1624912 5690712 1623136 5692368 1624032 5692416 1624104 5692408 -1625272 5690680 1623096 5687688 1624912 5690712 1624104 5692408 -1625272 5690680 1625576 5690216 1623096 5687688 1624912 5690712 -1625272 5690680 1625576 5690216 1624912 5690712 1624104 5692408 -1625272 5690680 1625520 5690696 1625576 5690216 1624912 5690712 -1623096 5687688 1622936 5687752 1624912 5690712 1625576 5690216 -1622936 5687752 1622360 5687944 1622280 5688056 1624912 5690712 -1625272 5690680 1624912 5690712 1624104 5692408 1624120 5692440 -1625272 5690680 1624912 5690712 1624120 5692440 1625520 5690696 -1625272 5690680 1625576 5690216 1624912 5690712 1624120 5692440 -1624912 5690712 1624032 5692416 1624104 5692408 1624120 5692440 -1623032 5692344 1624912 5690712 1622240 5688080 1623000 5692344 -1623032 5692344 1623136 5692368 1624912 5690712 1623000 5692344 -1624912 5690712 1622280 5688056 1622240 5688080 1623000 5692344 -1622240 5688080 1622192 5688096 1623000 5692344 1624912 5690712 -1622240 5688080 1622192 5688096 1624912 5690712 1622280 5688056 -1622192 5688096 1622160 5688096 1623000 5692344 1624912 5690712 -1623000 5692344 1623032 5692344 1624912 5690712 1622192 5688096 -1625576 5690216 1625576 5687568 1623096 5687688 1624912 5690712 -1622192 5688096 1624840 5690672 1624912 5690712 1622240 5688080 -1624840 5690672 1623000 5692344 1624912 5690712 1622240 5688080 -1624912 5690712 1622280 5688056 1622240 5688080 1624840 5690672 -1624912 5690712 1622936 5687752 1622280 5688056 1624840 5690672 -1624912 5690712 1622936 5687752 1624840 5690672 1623000 5692344 -1622280 5688056 1622240 5688080 1624840 5690672 1622936 5687752 -1622192 5688096 1623000 5692344 1624840 5690672 1622240 5688080 -1624912 5690712 1623096 5687688 1622936 5687752 1624840 5690672 -1622936 5687752 1622280 5688056 1624840 5690672 1623096 5687688 -1624912 5690712 1623096 5687688 1624840 5690672 1623000 5692344 -1624912 5690712 1625576 5690216 1623096 5687688 1624840 5690672 -1624912 5690712 1625576 5690216 1624840 5690672 1623000 5692344 -1623096 5687688 1622936 5687752 1624840 5690672 1625576 5690216 -1622240 5688080 1622192 5688096 1624840 5690672 1622280 5688056 -1623000 5692344 1624840 5690672 1622192 5688096 1622160 5688096 -1624912 5690712 1625272 5690680 1625576 5690216 1624840 5690672 -1625272 5690680 1625520 5690696 1625576 5690216 1624840 5690672 -1624912 5690712 1625272 5690680 1624840 5690672 1623000 5692344 -1625576 5690216 1623096 5687688 1624840 5690672 1625272 5690680 -1622936 5687752 1622360 5687944 1622280 5688056 1624840 5690672 -1624912 5690712 1624840 5690672 1623000 5692344 1623032 5692344 -1624912 5690712 1624840 5690672 1623032 5692344 1623136 5692368 -1624912 5690712 1624840 5690672 1623136 5692368 1624032 5692416 -1624912 5690712 1624840 5690672 1624032 5692416 1624104 5692408 -1623136 5692368 1623448 5692552 1624032 5692416 1624840 5690672 -1624840 5690672 1623136 5692368 1624032 5692416 1624104 5692408 -1624840 5690672 1623032 5692344 1623136 5692368 1624032 5692416 -1624912 5690712 1625272 5690680 1624840 5690672 1624104 5692408 -1624840 5690672 1622192 5688096 1623000 5692344 1623032 5692344 -1624912 5690712 1624840 5690672 1624104 5692408 1624120 5692440 -1624840 5690672 1623000 5692344 1623032 5692344 1623136 5692368 -1625576 5690216 1625576 5687568 1623096 5687688 1624840 5690672 -1622936 5687752 1624816 5690640 1624840 5690672 1623096 5687688 -1624840 5690672 1624816 5690640 1622280 5688056 1622240 5688080 -1624816 5690640 1622240 5688080 1624840 5690672 1623096 5687688 -1624816 5690640 1622936 5687752 1622280 5688056 1622240 5688080 -1622936 5687752 1622280 5688056 1624816 5690640 1623096 5687688 -1624840 5690672 1625576 5690216 1623096 5687688 1624816 5690640 -1623096 5687688 1622936 5687752 1624816 5690640 1625576 5690216 -1624840 5690672 1625576 5690216 1624816 5690640 1622240 5688080 -1624840 5690672 1625272 5690680 1625576 5690216 1624816 5690640 -1625272 5690680 1625520 5690696 1625576 5690216 1624816 5690640 -1624840 5690672 1625272 5690680 1624816 5690640 1622240 5688080 -1625576 5690216 1623096 5687688 1624816 5690640 1625272 5690680 -1624840 5690672 1624816 5690640 1622240 5688080 1622192 5688096 -1624816 5690640 1622280 5688056 1622240 5688080 1622192 5688096 -1624840 5690672 1625272 5690680 1624816 5690640 1622192 5688096 -1624840 5690672 1624816 5690640 1622192 5688096 1623000 5692344 -1624840 5690672 1624816 5690640 1623000 5692344 1623032 5692344 -1624840 5690672 1625272 5690680 1624816 5690640 1623032 5692344 -1624816 5690640 1622192 5688096 1623000 5692344 1623032 5692344 -1624816 5690640 1622240 5688080 1622192 5688096 1623000 5692344 -1622192 5688096 1622160 5688096 1623000 5692344 1624816 5690640 -1624840 5690672 1624912 5690712 1625272 5690680 1624816 5690640 -1624840 5690672 1624912 5690712 1624816 5690640 1623032 5692344 -1625272 5690680 1625576 5690216 1624816 5690640 1624912 5690712 -1622280 5688056 1624816 5690640 1622936 5687752 1622360 5687944 -1624840 5690672 1624816 5690640 1623032 5692344 1623136 5692368 -1624840 5690672 1624816 5690640 1623136 5692368 1624032 5692416 -1623136 5692368 1623448 5692552 1624032 5692416 1624816 5690640 -1624840 5690672 1624816 5690640 1624032 5692416 1624104 5692408 -1624840 5690672 1624816 5690640 1624104 5692408 1624912 5690712 -1624816 5690640 1623136 5692368 1624032 5692416 1624104 5692408 -1624816 5690640 1623000 5692344 1623032 5692344 1623136 5692368 -1624840 5690672 1624912 5690712 1624816 5690640 1624104 5692408 -1624816 5690640 1623032 5692344 1623136 5692368 1624032 5692416 -1625576 5690216 1625576 5687568 1623096 5687688 1624816 5690640 -1624816 5690640 1624640 5690320 1623096 5687688 1622936 5687752 -1624816 5690640 1625576 5690216 1624640 5690320 1622936 5687752 -1624816 5690640 1624640 5690320 1622936 5687752 1622280 5688056 -1624640 5690320 1623096 5687688 1622936 5687752 1622280 5688056 -1624816 5690640 1624640 5690320 1622280 5688056 1622240 5688080 -1624816 5690640 1624640 5690320 1622240 5688080 1622192 5688096 -1624640 5690320 1622280 5688056 1622240 5688080 1622192 5688096 -1624816 5690640 1625576 5690216 1624640 5690320 1622192 5688096 -1624640 5690320 1622936 5687752 1622280 5688056 1622240 5688080 -1624640 5690320 1625576 5690216 1623096 5687688 1622936 5687752 -1625576 5690216 1624640 5690320 1624816 5690640 1625272 5690680 -1625576 5690216 1624640 5690320 1625272 5690680 1625520 5690696 -1624640 5690320 1622192 5688096 1624816 5690640 1625272 5690680 -1625576 5690216 1623096 5687688 1624640 5690320 1625272 5690680 -1624816 5690640 1624912 5690712 1625272 5690680 1624640 5690320 -1624816 5690640 1624640 5690320 1622192 5688096 1623000 5692344 -1624640 5690320 1622240 5688080 1622192 5688096 1623000 5692344 -1624816 5690640 1624640 5690320 1623000 5692344 1623032 5692344 -1624816 5690640 1624640 5690320 1623032 5692344 1623136 5692368 -1624640 5690320 1623000 5692344 1623032 5692344 1623136 5692368 -1624816 5690640 1625272 5690680 1624640 5690320 1623136 5692368 -1624640 5690320 1622192 5688096 1623000 5692344 1623032 5692344 -1622192 5688096 1622160 5688096 1623000 5692344 1624640 5690320 -1622936 5687752 1622360 5687944 1622280 5688056 1624640 5690320 -1624816 5690640 1624640 5690320 1623136 5692368 1624032 5692416 -1623096 5687688 1624640 5690320 1625576 5690216 1625576 5687568 -1623096 5687688 1624640 5690320 1625576 5687568 1625520 5687512 -1625576 5690216 1625672 5687640 1625576 5687568 1624640 5690320 -1623096 5687688 1622936 5687752 1624640 5690320 1625520 5687512 -1624640 5690320 1625272 5690680 1625576 5690216 1625672 5687640 -1623096 5687688 1624640 5690320 1625520 5687512 1625472 5687448 -1625576 5690216 1625760 5687704 1625672 5687640 1624640 5690320 -1625576 5690216 1625848 5687744 1625760 5687704 1624640 5690320 -1625672 5687640 1625576 5687568 1624640 5690320 1625760 5687704 -1625576 5690216 1625760 5687704 1624640 5690320 1625272 5690680 -1624640 5690320 1625672 5687640 1625576 5687568 1625520 5687512 -1622936 5687752 1624464 5690136 1624640 5690320 1623096 5687688 -1624640 5690320 1624464 5690136 1622280 5688056 1622240 5688080 -1624640 5690320 1624464 5690136 1622240 5688080 1622192 5688096 -1624640 5690320 1624464 5690136 1622192 5688096 1623000 5692344 -1624464 5690136 1622240 5688080 1622192 5688096 1623000 5692344 -1624464 5690136 1622280 5688056 1622240 5688080 1622192 5688096 -1624640 5690320 1625520 5687512 1623096 5687688 1624464 5690136 -1623096 5687688 1622936 5687752 1624464 5690136 1625520 5687512 -1624640 5690320 1625576 5687568 1625520 5687512 1624464 5690136 -1625520 5687512 1623096 5687688 1624464 5690136 1625576 5687568 -1624464 5690136 1623000 5692344 1624640 5690320 1625576 5687568 -1624464 5690136 1622936 5687752 1622280 5688056 1622240 5688080 -1622936 5687752 1622280 5688056 1624464 5690136 1623096 5687688 -1625520 5687512 1625472 5687448 1623096 5687688 1624464 5690136 -1624640 5690320 1624464 5690136 1623000 5692344 1623032 5692344 -1624464 5690136 1622192 5688096 1623000 5692344 1623032 5692344 -1624640 5690320 1624464 5690136 1623032 5692344 1623136 5692368 -1624640 5690320 1624464 5690136 1623136 5692368 1624816 5690640 -1624464 5690136 1623032 5692344 1623136 5692368 1624816 5690640 -1624640 5690320 1625576 5687568 1624464 5690136 1624816 5690640 -1624464 5690136 1623000 5692344 1623032 5692344 1623136 5692368 -1622192 5688096 1622160 5688096 1623000 5692344 1624464 5690136 -1622280 5688056 1624464 5690136 1622936 5687752 1622360 5687944 -1623136 5692368 1624032 5692416 1624816 5690640 1624464 5690136 -1624640 5690320 1625672 5687640 1625576 5687568 1624464 5690136 -1625576 5687568 1625520 5687512 1624464 5690136 1625672 5687640 -1624640 5690320 1625760 5687704 1625672 5687640 1624464 5690136 -1624640 5690320 1625760 5687704 1624464 5690136 1624816 5690640 -1624640 5690320 1625576 5690216 1625760 5687704 1624464 5690136 -1625576 5690216 1625848 5687744 1625760 5687704 1624464 5690136 -1625760 5687704 1625672 5687640 1624464 5690136 1625576 5690216 -1624640 5690320 1625576 5690216 1624464 5690136 1624816 5690640 -1624640 5690320 1625272 5690680 1625576 5690216 1624464 5690136 -1625672 5687640 1625576 5687568 1624464 5690136 1625760 5687704 -1624464 5690136 1624280 5690008 1623000 5692344 1623032 5692344 -1622192 5688096 1624280 5690008 1624464 5690136 1622240 5688080 -1624464 5690136 1622280 5688056 1622240 5688080 1624280 5690008 -1622240 5688080 1622192 5688096 1624280 5690008 1622280 5688056 -1624464 5690136 1622936 5687752 1622280 5688056 1624280 5690008 -1622280 5688056 1622240 5688080 1624280 5690008 1622936 5687752 -1624464 5690136 1622936 5687752 1624280 5690008 1623032 5692344 -1624464 5690136 1623096 5687688 1622936 5687752 1624280 5690008 -1624464 5690136 1625520 5687512 1623096 5687688 1624280 5690008 -1624464 5690136 1625576 5687568 1625520 5687512 1624280 5690008 -1625520 5687512 1623096 5687688 1624280 5690008 1625576 5687568 -1624464 5690136 1625672 5687640 1625576 5687568 1624280 5690008 -1625576 5687568 1625520 5687512 1624280 5690008 1625672 5687640 -1622936 5687752 1622280 5688056 1624280 5690008 1623096 5687688 -1624464 5690136 1625672 5687640 1624280 5690008 1623032 5692344 -1623096 5687688 1622936 5687752 1624280 5690008 1625520 5687512 -1624280 5690008 1622192 5688096 1623000 5692344 1623032 5692344 -1622192 5688096 1623000 5692344 1624280 5690008 1622240 5688080 -1625520 5687512 1625472 5687448 1623096 5687688 1624280 5690008 -1624464 5690136 1624280 5690008 1623032 5692344 1623136 5692368 -1624280 5690008 1623000 5692344 1623032 5692344 1623136 5692368 -1624464 5690136 1624280 5690008 1623136 5692368 1624816 5690640 -1624464 5690136 1624280 5690008 1624816 5690640 1624640 5690320 -1624464 5690136 1625672 5687640 1624280 5690008 1624816 5690640 -1624280 5690008 1623032 5692344 1623136 5692368 1624816 5690640 -1623000 5692344 1624280 5690008 1622192 5688096 1622160 5688096 -1623000 5692344 1623032 5692344 1624280 5690008 1622160 5688096 -1624280 5690008 1622240 5688080 1622192 5688096 1622160 5688096 -1623000 5692344 1624280 5690008 1622160 5688096 1622936 5692376 -1622936 5687752 1622360 5687944 1622280 5688056 1624280 5690008 -1623136 5692368 1624032 5692416 1624816 5690640 1624280 5690008 -1624464 5690136 1625760 5687704 1625672 5687640 1624280 5690008 -1625672 5687640 1625576 5687568 1624280 5690008 1625760 5687704 -1624464 5690136 1625576 5690216 1625760 5687704 1624280 5690008 -1625576 5690216 1625848 5687744 1625760 5687704 1624280 5690008 -1624464 5690136 1625576 5690216 1624280 5690008 1624816 5690640 -1624464 5690136 1624640 5690320 1625576 5690216 1624280 5690008 -1625760 5687704 1625672 5687640 1624280 5690008 1625576 5690216 -1625520 5687512 1624232 5689912 1624280 5690008 1625576 5687568 -1624280 5690008 1625672 5687640 1625576 5687568 1624232 5689912 -1625576 5687568 1625520 5687512 1624232 5689912 1625672 5687640 -1624280 5690008 1625760 5687704 1625672 5687640 1624232 5689912 -1625672 5687640 1625576 5687568 1624232 5689912 1625760 5687704 -1624280 5690008 1624232 5689912 1623096 5687688 1622936 5687752 -1624280 5690008 1624232 5689912 1622936 5687752 1622280 5688056 -1624280 5690008 1624232 5689912 1622280 5688056 1622240 5688080 -1624280 5690008 1624232 5689912 1622240 5688080 1622192 5688096 -1624232 5689912 1622280 5688056 1622240 5688080 1622192 5688096 -1624232 5689912 1622936 5687752 1622280 5688056 1622240 5688080 -1624232 5689912 1623096 5687688 1622936 5687752 1622280 5688056 -1624232 5689912 1622192 5688096 1624280 5690008 1625760 5687704 -1624280 5690008 1624232 5689912 1622192 5688096 1622160 5688096 -1624232 5689912 1622240 5688080 1622192 5688096 1622160 5688096 -1624280 5690008 1625760 5687704 1624232 5689912 1622160 5688096 -1624232 5689912 1625520 5687512 1623096 5687688 1622936 5687752 -1625520 5687512 1623096 5687688 1624232 5689912 1625576 5687568 -1623096 5687688 1624232 5689912 1625520 5687512 1625472 5687448 -1624280 5690008 1624232 5689912 1622160 5688096 1623000 5692344 -1624280 5690008 1624232 5689912 1623000 5692344 1623032 5692344 -1624280 5690008 1625760 5687704 1624232 5689912 1623000 5692344 -1624232 5689912 1622192 5688096 1622160 5688096 1623000 5692344 -1622160 5688096 1622936 5692376 1623000 5692344 1624232 5689912 -1622936 5687752 1622360 5687944 1622280 5688056 1624232 5689912 -1624280 5690008 1625576 5690216 1625760 5687704 1624232 5689912 -1625576 5690216 1625848 5687744 1625760 5687704 1624232 5689912 -1625760 5687704 1625672 5687640 1624232 5689912 1625576 5690216 -1624280 5690008 1624464 5690136 1625576 5690216 1624232 5689912 -1624280 5690008 1624464 5690136 1624232 5689912 1623000 5692344 -1624464 5690136 1624640 5690320 1625576 5690216 1624232 5689912 -1625576 5690216 1625760 5687704 1624232 5689912 1624464 5690136 -1624232 5689912 1624216 5689744 1623096 5687688 1622936 5687752 -1624232 5689912 1624216 5689744 1622936 5687752 1622280 5688056 -1624232 5689912 1624216 5689744 1622280 5688056 1622240 5688080 -1624232 5689912 1624216 5689744 1622240 5688080 1622192 5688096 -1624232 5689912 1624216 5689744 1622192 5688096 1622160 5688096 -1624216 5689744 1622280 5688056 1622240 5688080 1622192 5688096 -1624216 5689744 1622936 5687752 1622280 5688056 1622240 5688080 -1624216 5689744 1623096 5687688 1622936 5687752 1622280 5688056 -1624232 5689912 1625520 5687512 1624216 5689744 1622192 5688096 -1625520 5687512 1624216 5689744 1624232 5689912 1625576 5687568 -1624232 5689912 1625672 5687640 1625576 5687568 1624216 5689744 -1624232 5689912 1625760 5687704 1625672 5687640 1624216 5689744 -1625672 5687640 1625576 5687568 1624216 5689744 1625760 5687704 -1624232 5689912 1625576 5690216 1625760 5687704 1624216 5689744 -1625576 5690216 1625848 5687744 1625760 5687704 1624216 5689744 -1625576 5690216 1625936 5687776 1625848 5687744 1624216 5689744 -1625576 5690216 1625848 5687744 1624216 5689744 1624232 5689912 -1625760 5687704 1625672 5687640 1624216 5689744 1625848 5687744 -1624216 5689744 1622192 5688096 1624232 5689912 1625576 5690216 -1625576 5687568 1625520 5687512 1624216 5689744 1625672 5687640 -1624216 5689744 1625520 5687512 1623096 5687688 1622936 5687752 -1625520 5687512 1623096 5687688 1624216 5689744 1625576 5687568 -1623096 5687688 1624216 5689744 1625520 5687512 1625472 5687448 -1622936 5687752 1622360 5687944 1622280 5688056 1624216 5689744 -1624232 5689912 1624464 5690136 1625576 5690216 1624216 5689744 -1625576 5690216 1625848 5687744 1624216 5689744 1624464 5690136 -1624232 5689912 1624280 5690008 1624464 5690136 1624216 5689744 -1624232 5689912 1624464 5690136 1624216 5689744 1622192 5688096 -1624464 5690136 1624640 5690320 1625576 5690216 1624216 5689744 -1625848 5687744 1624248 5689728 1625576 5690216 1625936 5687776 -1624216 5689744 1624248 5689728 1625848 5687744 1625760 5687704 -1625576 5690216 1624248 5689728 1624216 5689744 1624464 5690136 -1624216 5689744 1624248 5689728 1625760 5687704 1625672 5687640 -1624248 5689728 1625848 5687744 1625760 5687704 1625672 5687640 -1624216 5689744 1624248 5689728 1625672 5687640 1625576 5687568 -1624248 5689728 1625760 5687704 1625672 5687640 1625576 5687568 -1624216 5689744 1624248 5689728 1625576 5687568 1625520 5687512 -1624248 5689728 1625672 5687640 1625576 5687568 1625520 5687512 -1624216 5689744 1624464 5690136 1624248 5689728 1625520 5687512 -1624216 5689744 1624248 5689728 1625520 5687512 1623096 5687688 -1624248 5689728 1625576 5687568 1625520 5687512 1623096 5687688 -1624216 5689744 1624248 5689728 1623096 5687688 1622936 5687752 -1624216 5689744 1624464 5690136 1624248 5689728 1623096 5687688 -1624248 5689728 1625576 5690216 1625848 5687744 1625760 5687704 -1625576 5690216 1625848 5687744 1624248 5689728 1624464 5690136 -1625520 5687512 1625472 5687448 1623096 5687688 1624248 5689728 -1625520 5687512 1625472 5687448 1624248 5689728 1625576 5687568 -1623096 5687688 1624216 5689744 1624248 5689728 1625472 5687448 -1625472 5687448 1625432 5687384 1623096 5687688 1624248 5689728 -1625576 5690216 1624248 5689728 1624464 5690136 1624640 5690320 -1624216 5689744 1624232 5689912 1624464 5690136 1624248 5689728 -1624464 5690136 1625576 5690216 1624248 5689728 1624232 5689912 -1624232 5689912 1624280 5690008 1624464 5690136 1624248 5689728 -1624464 5690136 1625576 5690216 1624248 5689728 1624280 5690008 -1624216 5689744 1624232 5689912 1624248 5689728 1623096 5687688 -1624232 5689912 1624280 5690008 1624248 5689728 1624216 5689744 -1625848 5687744 1624360 5689696 1625576 5690216 1625936 5687776 -1624248 5689728 1624360 5689696 1625848 5687744 1625760 5687704 -1624248 5689728 1624360 5689696 1625760 5687704 1625672 5687640 -1624248 5689728 1624360 5689696 1625672 5687640 1625576 5687568 -1624360 5689696 1625760 5687704 1625672 5687640 1625576 5687568 -1624248 5689728 1624360 5689696 1625576 5687568 1625520 5687512 -1624360 5689696 1625672 5687640 1625576 5687568 1625520 5687512 -1624248 5689728 1624360 5689696 1625520 5687512 1625472 5687448 -1624360 5689696 1625576 5687568 1625520 5687512 1625472 5687448 -1624360 5689696 1625848 5687744 1625760 5687704 1625672 5687640 -1624248 5689728 1625576 5690216 1624360 5689696 1625472 5687448 -1625576 5690216 1624360 5689696 1624248 5689728 1624464 5690136 -1624248 5689728 1624280 5690008 1624464 5690136 1624360 5689696 -1624248 5689728 1624232 5689912 1624280 5690008 1624360 5689696 -1624280 5690008 1624464 5690136 1624360 5689696 1624232 5689912 -1624360 5689696 1625472 5687448 1624248 5689728 1624232 5689912 -1624464 5690136 1625576 5690216 1624360 5689696 1624280 5690008 -1624360 5689696 1625576 5690216 1625848 5687744 1625760 5687704 -1625576 5690216 1625848 5687744 1624360 5689696 1624464 5690136 -1624248 5689728 1624360 5689696 1625472 5687448 1623096 5687688 -1624360 5689696 1625520 5687512 1625472 5687448 1623096 5687688 -1624248 5689728 1624360 5689696 1623096 5687688 1624216 5689744 -1624248 5689728 1624232 5689912 1624360 5689696 1623096 5687688 -1625472 5687448 1625432 5687384 1623096 5687688 1624360 5689696 -1625576 5690216 1624360 5689696 1624464 5690136 1624640 5690320 -1625576 5690216 1624360 5689696 1624640 5690320 1625272 5690680 -1624360 5689696 1624280 5690008 1624464 5690136 1624640 5690320 -1625576 5690216 1625848 5687744 1624360 5689696 1624640 5690320 -1624248 5689728 1624216 5689744 1624232 5689912 1624360 5689696 -1625848 5687744 1624424 5689696 1625576 5690216 1625936 5687776 -1624360 5689696 1624424 5689696 1625848 5687744 1625760 5687704 -1624360 5689696 1624424 5689696 1625760 5687704 1625672 5687640 -1624360 5689696 1624424 5689696 1625672 5687640 1625576 5687568 -1624360 5689696 1624424 5689696 1625576 5687568 1625520 5687512 -1624424 5689696 1625672 5687640 1625576 5687568 1625520 5687512 -1624360 5689696 1624424 5689696 1625520 5687512 1625472 5687448 -1624424 5689696 1625760 5687704 1625672 5687640 1625576 5687568 -1624424 5689696 1625848 5687744 1625760 5687704 1625672 5687640 -1624360 5689696 1625576 5690216 1624424 5689696 1625520 5687512 -1625576 5690216 1624424 5689696 1624360 5689696 1624640 5690320 -1625576 5690216 1624424 5689696 1624640 5690320 1625272 5690680 -1624424 5689696 1625520 5687512 1624360 5689696 1624640 5690320 -1624424 5689696 1625576 5690216 1625848 5687744 1625760 5687704 -1625576 5690216 1625848 5687744 1624424 5689696 1624640 5690320 -1624360 5689696 1624464 5690136 1624640 5690320 1624424 5689696 -1624360 5689696 1624280 5690008 1624464 5690136 1624424 5689696 -1624360 5689696 1624232 5689912 1624280 5690008 1624424 5689696 -1624360 5689696 1624248 5689728 1624232 5689912 1624424 5689696 -1624280 5690008 1624464 5690136 1624424 5689696 1624232 5689912 -1624360 5689696 1624232 5689912 1624424 5689696 1625520 5687512 -1624640 5690320 1625576 5690216 1624424 5689696 1624464 5690136 -1624464 5690136 1624640 5690320 1624424 5689696 1624280 5690008 -1625848 5687744 1624584 5689728 1625576 5690216 1625936 5687776 -1625576 5690216 1625968 5687784 1625936 5687776 1624584 5689728 -1624424 5689696 1624584 5689728 1625848 5687744 1625760 5687704 -1624424 5689696 1624584 5689728 1625760 5687704 1625672 5687640 -1624424 5689696 1624584 5689728 1625672 5687640 1625576 5687568 -1624424 5689696 1624584 5689728 1625576 5687568 1625520 5687512 -1624584 5689728 1625760 5687704 1625672 5687640 1625576 5687568 -1624584 5689728 1625848 5687744 1625760 5687704 1625672 5687640 -1624424 5689696 1625576 5690216 1624584 5689728 1625576 5687568 -1625576 5690216 1624584 5689728 1624424 5689696 1624640 5690320 -1625576 5690216 1624584 5689728 1624640 5690320 1625272 5690680 -1624424 5689696 1624464 5690136 1624640 5690320 1624584 5689728 -1624584 5689728 1625576 5687568 1624424 5689696 1624464 5690136 -1624640 5690320 1625576 5690216 1624584 5689728 1624464 5690136 -1625848 5687744 1625760 5687704 1624584 5689728 1625936 5687776 -1624584 5689728 1624640 5690320 1625576 5690216 1625936 5687776 -1624424 5689696 1624280 5690008 1624464 5690136 1624584 5689728 -1624424 5689696 1624232 5689912 1624280 5690008 1624584 5689728 -1624464 5690136 1624640 5690320 1624584 5689728 1624280 5690008 -1624424 5689696 1624280 5690008 1624584 5689728 1625576 5687568 -1625936 5687776 1624840 5689808 1625576 5690216 1625968 5687784 -1625576 5690216 1626000 5687776 1625968 5687784 1624840 5689808 -1624584 5689728 1624840 5689808 1625936 5687776 1625848 5687744 -1624584 5689728 1624840 5689808 1625848 5687744 1625760 5687704 -1624840 5689808 1625936 5687776 1625848 5687744 1625760 5687704 -1624584 5689728 1624840 5689808 1625760 5687704 1625672 5687640 -1624584 5689728 1625576 5690216 1624840 5689808 1625760 5687704 -1625576 5690216 1624840 5689808 1624584 5689728 1624640 5690320 -1625576 5690216 1624840 5689808 1624640 5690320 1625272 5690680 -1624584 5689728 1624464 5690136 1624640 5690320 1624840 5689808 -1624584 5689728 1624280 5690008 1624464 5690136 1624840 5689808 -1624840 5689808 1625760 5687704 1624584 5689728 1624464 5690136 -1624640 5690320 1625576 5690216 1624840 5689808 1624464 5690136 -1625936 5687776 1625848 5687744 1624840 5689808 1625968 5687784 -1624840 5689808 1624640 5690320 1625576 5690216 1625968 5687784 -1625968 5687784 1625120 5689928 1625576 5690216 1626000 5687776 -1624840 5689808 1625120 5689928 1625968 5687784 1625936 5687776 -1624840 5689808 1625120 5689928 1625936 5687776 1625848 5687744 -1625120 5689928 1625968 5687784 1625936 5687776 1625848 5687744 -1624840 5689808 1625120 5689928 1625848 5687744 1625760 5687704 -1624840 5689808 1625576 5690216 1625120 5689928 1625848 5687744 -1625576 5690216 1625120 5689928 1624840 5689808 1624640 5690320 -1625576 5690216 1625120 5689928 1624640 5690320 1625272 5690680 -1625576 5690216 1625120 5689928 1625272 5690680 1625520 5690696 -1624840 5689808 1624464 5690136 1624640 5690320 1625120 5689928 -1625120 5689928 1625848 5687744 1624840 5689808 1624640 5690320 -1625120 5689928 1624840 5689808 1624640 5690320 1625272 5690680 -1625120 5689928 1625576 5690216 1625968 5687784 1625936 5687776 -1625576 5690216 1625968 5687784 1625120 5689928 1625272 5690680 -1624640 5690320 1624816 5690640 1625272 5690680 1625120 5689928 -1625272 5690680 1625576 5690216 1625120 5689928 1624816 5690640 -1624640 5690320 1624816 5690640 1625120 5689928 1624840 5689808 -1624816 5690640 1624912 5690712 1625272 5690680 1625120 5689928 -1625784 5690360 1625968 5689376 1626040 5687760 1626000 5687776 -1626040 5687760 1625968 5689376 1625968 5690464 1626208 5690560 -1625784 5690360 1625968 5689376 1626000 5687776 1625576 5690216 -1625968 5689376 1626040 5687760 1626000 5687776 1625576 5690216 -1626040 5687760 1625968 5689376 1626208 5690560 1626824 5690816 -1625968 5689376 1625968 5690464 1626208 5690560 1626824 5690816 -1625968 5689376 1626824 5690816 1626040 5687760 1626000 5687776 -1625968 5689376 1625784 5690360 1625968 5690464 1626208 5690560 -1625784 5690360 1625968 5690464 1625968 5689376 1625576 5690216 -1626000 5687776 1625968 5687784 1625576 5690216 1625968 5689376 -1626000 5687776 1625968 5687784 1625968 5689376 1626040 5687760 -1625576 5690216 1625784 5690360 1625968 5689376 1625968 5687784 -1625968 5687784 1625120 5689928 1625576 5690216 1625968 5689376 -1625576 5690216 1625784 5690360 1625968 5689376 1625120 5689928 -1625968 5687784 1625936 5687776 1625120 5689928 1625968 5689376 -1625120 5689928 1625576 5690216 1625968 5689376 1625936 5687776 -1625936 5687776 1625848 5687744 1625120 5689928 1625968 5689376 -1625120 5689928 1625576 5690216 1625968 5689376 1625848 5687744 -1625848 5687744 1624840 5689808 1625120 5689928 1625968 5689376 -1625120 5689928 1625576 5690216 1625968 5689376 1624840 5689808 -1625848 5687744 1624840 5689808 1625968 5689376 1625936 5687776 -1625848 5687744 1625760 5687704 1624840 5689808 1625968 5689376 -1625848 5687744 1625760 5687704 1625968 5689376 1625936 5687776 -1625760 5687704 1624584 5689728 1624840 5689808 1625968 5689376 -1625760 5687704 1624584 5689728 1625968 5689376 1625848 5687744 -1625760 5687704 1625672 5687640 1624584 5689728 1625968 5689376 -1624840 5689808 1625120 5689928 1625968 5689376 1624584 5689728 -1625936 5687776 1625848 5687744 1625968 5689376 1625968 5687784 -1625968 5687784 1625936 5687776 1625968 5689376 1626000 5687776 -1626040 5687760 1625968 5689376 1626824 5690816 1626064 5687736 -1626824 5690816 1626976 5690872 1626064 5687736 1625968 5689376 -1625968 5689376 1626208 5690560 1626824 5690816 1626976 5690872 -1626040 5687760 1626000 5687776 1625968 5689376 1626064 5687736 -1626064 5687736 1626040 5687760 1625968 5689376 1626976 5690872 -1626976 5690872 1627248 5691016 1626064 5687736 1625968 5689376 -1626976 5690872 1627248 5691016 1625968 5689376 1626824 5690816 -1626064 5687736 1626040 5687760 1625968 5689376 1627248 5691016 -1627248 5691016 1626096 5687664 1626064 5687736 1625968 5689376 -1626064 5687736 1626040 5687760 1625968 5689376 1626096 5687664 -1627248 5691016 1626096 5687664 1625968 5689376 1626976 5690872 -1627248 5691016 1627352 5691104 1626096 5687664 1625968 5689376 -1627248 5691016 1625992 5689368 1625968 5689376 1626976 5690872 -1625968 5689376 1626824 5690816 1626976 5690872 1625992 5689368 -1625968 5689376 1626208 5690560 1626824 5690816 1625992 5689368 -1626824 5690816 1626976 5690872 1625992 5689368 1626208 5690560 -1625968 5689376 1625968 5690464 1626208 5690560 1625992 5689368 -1626208 5690560 1626824 5690816 1625992 5689368 1625968 5690464 -1625968 5689376 1625784 5690360 1625968 5690464 1625992 5689368 -1625992 5689368 1626096 5687664 1625968 5689376 1625968 5690464 -1627248 5691016 1626096 5687664 1625992 5689368 1626976 5690872 -1626976 5690872 1627248 5691016 1625992 5689368 1626824 5690816 -1625968 5689376 1625992 5689368 1626096 5687664 1626064 5687736 -1625968 5689376 1625968 5690464 1625992 5689368 1626064 5687736 -1625992 5689368 1627248 5691016 1626096 5687664 1626064 5687736 -1625968 5689376 1625992 5689368 1626064 5687736 1626040 5687760 -1625968 5689376 1625992 5689368 1626040 5687760 1626000 5687776 -1625968 5689376 1625992 5689368 1626000 5687776 1625968 5687784 -1625992 5689368 1626040 5687760 1626000 5687776 1625968 5687784 -1625968 5689376 1625968 5690464 1625992 5689368 1625968 5687784 -1625968 5689376 1625992 5689368 1625968 5687784 1625936 5687776 -1625992 5689368 1626000 5687776 1625968 5687784 1625936 5687776 -1625968 5689376 1625992 5689368 1625936 5687776 1625848 5687744 -1625968 5689376 1625968 5690464 1625992 5689368 1625936 5687776 -1625992 5689368 1626064 5687736 1626040 5687760 1626000 5687776 -1625992 5689368 1626096 5687664 1626064 5687736 1626040 5687760 -1626096 5687664 1625992 5689368 1627248 5691016 1627352 5691104 -1625992 5689368 1626008 5689376 1626096 5687664 1626064 5687736 -1625992 5689368 1627248 5691016 1626008 5689376 1626064 5687736 -1627248 5691016 1626008 5689376 1625992 5689368 1626976 5690872 -1626008 5689376 1626064 5687736 1625992 5689368 1626976 5690872 -1626008 5689376 1627248 5691016 1626096 5687664 1626064 5687736 -1627248 5691016 1626096 5687664 1626008 5689376 1626976 5690872 -1625992 5689368 1626824 5690816 1626976 5690872 1626008 5689376 -1625992 5689368 1626208 5690560 1626824 5690816 1626008 5689376 -1625992 5689368 1625968 5690464 1626208 5690560 1626008 5689376 -1626208 5690560 1626824 5690816 1626008 5689376 1625968 5690464 -1625992 5689368 1625968 5689376 1625968 5690464 1626008 5689376 -1625968 5690464 1626208 5690560 1626008 5689376 1625968 5689376 -1625968 5689376 1625784 5690360 1625968 5690464 1626008 5689376 -1625968 5689376 1625784 5690360 1626008 5689376 1625992 5689368 -1625968 5690464 1626208 5690560 1626008 5689376 1625784 5690360 -1625992 5689368 1625968 5689376 1626008 5689376 1626064 5687736 -1626976 5690872 1627248 5691016 1626008 5689376 1626824 5690816 -1625968 5689376 1625576 5690216 1625784 5690360 1626008 5689376 -1626824 5690816 1626976 5690872 1626008 5689376 1626208 5690560 -1625992 5689368 1626008 5689376 1626064 5687736 1626040 5687760 -1626008 5689376 1626096 5687664 1626064 5687736 1626040 5687760 -1625992 5689368 1625968 5689376 1626008 5689376 1626040 5687760 -1625992 5689368 1626008 5689376 1626040 5687760 1626000 5687776 -1626096 5687664 1626008 5689376 1627248 5691016 1627352 5691104 -1626008 5689376 1626080 5689376 1626096 5687664 1626064 5687736 -1626008 5689376 1626080 5689376 1626064 5687736 1626040 5687760 -1626080 5689376 1626096 5687664 1626064 5687736 1626040 5687760 -1626008 5689376 1627248 5691016 1626080 5689376 1626040 5687760 -1627248 5691016 1626080 5689376 1626008 5689376 1626976 5690872 -1626008 5689376 1626824 5690816 1626976 5690872 1626080 5689376 -1626080 5689376 1626040 5687760 1626008 5689376 1626824 5690816 -1626976 5690872 1627248 5691016 1626080 5689376 1626824 5690816 -1626080 5689376 1627248 5691016 1626096 5687664 1626064 5687736 -1627248 5691016 1626096 5687664 1626080 5689376 1626976 5690872 -1626008 5689376 1626208 5690560 1626824 5690816 1626080 5689376 -1626008 5689376 1625968 5690464 1626208 5690560 1626080 5689376 -1626008 5689376 1625784 5690360 1625968 5690464 1626080 5689376 -1625968 5690464 1626208 5690560 1626080 5689376 1625784 5690360 -1626008 5689376 1625968 5689376 1625784 5690360 1626080 5689376 -1626824 5690816 1626976 5690872 1626080 5689376 1626208 5690560 -1626008 5689376 1625784 5690360 1626080 5689376 1626040 5687760 -1626208 5690560 1626824 5690816 1626080 5689376 1625968 5690464 -1626008 5689376 1626080 5689376 1626040 5687760 1625992 5689368 -1626080 5689376 1626064 5687736 1626040 5687760 1625992 5689368 -1626008 5689376 1625784 5690360 1626080 5689376 1625992 5689368 -1626040 5687760 1626000 5687776 1625992 5689368 1626080 5689376 -1626000 5687776 1625968 5687784 1625992 5689368 1626080 5689376 -1625968 5687784 1625936 5687776 1625992 5689368 1626080 5689376 -1626040 5687760 1626000 5687776 1626080 5689376 1626064 5687736 -1626000 5687776 1625968 5687784 1626080 5689376 1626040 5687760 -1625992 5689368 1626008 5689376 1626080 5689376 1625968 5687784 -1626096 5687664 1626080 5689376 1627248 5691016 1627352 5691104 -1626080 5689376 1626168 5689416 1626096 5687664 1626064 5687736 -1626080 5689376 1626168 5689416 1626064 5687736 1626040 5687760 -1626080 5689376 1626168 5689416 1626040 5687760 1626000 5687776 -1626168 5689416 1626096 5687664 1626064 5687736 1626040 5687760 -1626080 5689376 1627248 5691016 1626168 5689416 1626040 5687760 -1627248 5691016 1626168 5689416 1626080 5689376 1626976 5690872 -1626080 5689376 1626824 5690816 1626976 5690872 1626168 5689416 -1626080 5689376 1626208 5690560 1626824 5690816 1626168 5689416 -1626824 5690816 1626976 5690872 1626168 5689416 1626208 5690560 -1626168 5689416 1626040 5687760 1626080 5689376 1626208 5690560 -1626976 5690872 1627248 5691016 1626168 5689416 1626824 5690816 -1626168 5689416 1627248 5691016 1626096 5687664 1626064 5687736 -1627248 5691016 1626096 5687664 1626168 5689416 1626976 5690872 -1626080 5689376 1625968 5690464 1626208 5690560 1626168 5689416 -1626080 5689376 1625784 5690360 1625968 5690464 1626168 5689416 -1626080 5689376 1626008 5689376 1625784 5690360 1626168 5689416 -1625784 5690360 1625968 5690464 1626168 5689416 1626008 5689376 -1626008 5689376 1625968 5689376 1625784 5690360 1626168 5689416 -1625784 5690360 1625968 5690464 1626168 5689416 1625968 5689376 -1626008 5689376 1625992 5689368 1625968 5689376 1626168 5689416 -1626008 5689376 1625968 5689376 1626168 5689416 1626080 5689376 -1626208 5690560 1626824 5690816 1626168 5689416 1625968 5690464 -1625968 5689376 1625576 5690216 1625784 5690360 1626168 5689416 -1626080 5689376 1626008 5689376 1626168 5689416 1626040 5687760 -1625968 5690464 1626208 5690560 1626168 5689416 1625784 5690360 -1626096 5687664 1626168 5689416 1627248 5691016 1627352 5691104 -1626168 5689416 1626264 5689472 1626096 5687664 1626064 5687736 -1626168 5689416 1626264 5689472 1626064 5687736 1626040 5687760 -1626168 5689416 1626264 5689472 1626040 5687760 1626080 5689376 -1626264 5689472 1626096 5687664 1626064 5687736 1626040 5687760 -1626168 5689416 1627248 5691016 1626264 5689472 1626040 5687760 -1627248 5691016 1626264 5689472 1626168 5689416 1626976 5690872 -1626168 5689416 1626824 5690816 1626976 5690872 1626264 5689472 -1626168 5689416 1626208 5690560 1626824 5690816 1626264 5689472 -1626168 5689416 1625968 5690464 1626208 5690560 1626264 5689472 -1626208 5690560 1626824 5690816 1626264 5689472 1625968 5690464 -1626824 5690816 1626976 5690872 1626264 5689472 1626208 5690560 -1626264 5689472 1626040 5687760 1626168 5689416 1625968 5690464 -1626976 5690872 1627248 5691016 1626264 5689472 1626824 5690816 -1626264 5689472 1627248 5691016 1626096 5687664 1626064 5687736 -1627248 5691016 1626096 5687664 1626264 5689472 1626976 5690872 -1626168 5689416 1625784 5690360 1625968 5690464 1626264 5689472 -1626168 5689416 1625968 5689376 1625784 5690360 1626264 5689472 -1626168 5689416 1626008 5689376 1625968 5689376 1626264 5689472 -1625968 5690464 1626208 5690560 1626264 5689472 1625784 5690360 -1625968 5689376 1625576 5690216 1625784 5690360 1626264 5689472 -1626168 5689416 1625968 5689376 1626264 5689472 1626040 5687760 -1625784 5690360 1625968 5690464 1626264 5689472 1625968 5689376 -1626096 5687664 1626264 5689472 1627248 5691016 1627352 5691104 -1626096 5687664 1626064 5687736 1626264 5689472 1627352 5691104 -1626264 5689472 1626976 5690872 1627248 5691016 1627352 5691104 -1626096 5687664 1626264 5689472 1627352 5691104 1630232 5692312 -1626264 5689472 1626352 5689536 1626096 5687664 1626064 5687736 -1626264 5689472 1626352 5689536 1626064 5687736 1626040 5687760 -1626264 5689472 1627352 5691104 1626352 5689536 1626064 5687736 -1626352 5689536 1627352 5691104 1626096 5687664 1626064 5687736 -1626096 5687664 1626352 5689536 1627352 5691104 1630232 5692312 -1626096 5687664 1626352 5689536 1630232 5692312 1630448 5692312 -1626096 5687664 1626352 5689536 1630448 5692312 1626096 5687632 -1626096 5687664 1626064 5687736 1626352 5689536 1630448 5692312 -1626352 5689536 1626264 5689472 1627352 5691104 1630232 5692312 -1626352 5689536 1627352 5691104 1630232 5692312 1630448 5692312 -1627352 5691104 1626352 5689536 1626264 5689472 1627248 5691016 -1626352 5689536 1626064 5687736 1626264 5689472 1627248 5691016 -1626264 5689472 1626976 5690872 1627248 5691016 1626352 5689536 -1626264 5689472 1626824 5690816 1626976 5690872 1626352 5689536 -1626264 5689472 1626208 5690560 1626824 5690816 1626352 5689536 -1626264 5689472 1625968 5690464 1626208 5690560 1626352 5689536 -1626264 5689472 1625784 5690360 1625968 5690464 1626352 5689536 -1625968 5690464 1626208 5690560 1626352 5689536 1625784 5690360 -1626208 5690560 1626824 5690816 1626352 5689536 1625968 5690464 -1626824 5690816 1626976 5690872 1626352 5689536 1626208 5690560 -1626264 5689472 1625784 5690360 1626352 5689536 1626064 5687736 -1626976 5690872 1627248 5691016 1626352 5689536 1626824 5690816 -1627352 5691104 1630232 5692312 1626352 5689536 1627248 5691016 -1626264 5689472 1625968 5689376 1625784 5690360 1626352 5689536 -1627248 5691016 1627352 5691104 1626352 5689536 1626976 5690872 -1627352 5691104 1630136 5692352 1630232 5692312 1626352 5689536 -1627352 5691104 1626424 5689616 1626352 5689536 1627248 5691016 -1626424 5689616 1630232 5692312 1626352 5689536 1627248 5691016 -1627352 5691104 1630232 5692312 1626424 5689616 1627248 5691016 -1626352 5689536 1626424 5689616 1630232 5692312 1630448 5692312 -1626352 5689536 1626424 5689616 1630448 5692312 1626096 5687664 -1630448 5692312 1626096 5687632 1626096 5687664 1626424 5689616 -1626352 5689536 1626424 5689616 1626096 5687664 1626064 5687736 -1626352 5689536 1627248 5691016 1626424 5689616 1626096 5687664 -1626424 5689616 1627352 5691104 1630232 5692312 1630448 5692312 -1626424 5689616 1630232 5692312 1630448 5692312 1626096 5687664 -1626352 5689536 1626976 5690872 1627248 5691016 1626424 5689616 -1626352 5689536 1626824 5690816 1626976 5690872 1626424 5689616 -1626352 5689536 1626208 5690560 1626824 5690816 1626424 5689616 -1626352 5689536 1625968 5690464 1626208 5690560 1626424 5689616 -1626352 5689536 1625784 5690360 1625968 5690464 1626424 5689616 -1626352 5689536 1626264 5689472 1625784 5690360 1626424 5689616 -1625968 5690464 1626208 5690560 1626424 5689616 1625784 5690360 -1626208 5690560 1626824 5690816 1626424 5689616 1625968 5690464 -1626824 5690816 1626976 5690872 1626424 5689616 1626208 5690560 -1626352 5689536 1625784 5690360 1626424 5689616 1626096 5687664 -1627248 5691016 1627352 5691104 1626424 5689616 1626976 5690872 -1626976 5690872 1627248 5691016 1626424 5689616 1626824 5690816 -1630232 5692312 1626424 5689616 1627352 5691104 1630136 5692352 -1626424 5689616 1626464 5689664 1630232 5692312 1630448 5692312 -1626424 5689616 1627352 5691104 1626464 5689664 1630448 5692312 -1627352 5691104 1626464 5689664 1626424 5689616 1627248 5691016 -1626424 5689616 1626976 5690872 1627248 5691016 1626464 5689664 -1626464 5689664 1630448 5692312 1626424 5689616 1626976 5690872 -1627248 5691016 1627352 5691104 1626464 5689664 1626976 5690872 -1626464 5689664 1627352 5691104 1630232 5692312 1630448 5692312 -1627352 5691104 1630232 5692312 1626464 5689664 1627248 5691016 -1626424 5689616 1626464 5689664 1630448 5692312 1626096 5687664 -1626424 5689616 1626464 5689664 1626096 5687664 1626352 5689536 -1630448 5692312 1626096 5687632 1626096 5687664 1626464 5689664 -1626464 5689664 1630232 5692312 1630448 5692312 1626096 5687664 -1626424 5689616 1626976 5690872 1626464 5689664 1626096 5687664 -1626424 5689616 1626824 5690816 1626976 5690872 1626464 5689664 -1626424 5689616 1626208 5690560 1626824 5690816 1626464 5689664 -1626424 5689616 1625968 5690464 1626208 5690560 1626464 5689664 -1626424 5689616 1625784 5690360 1625968 5690464 1626464 5689664 -1626424 5689616 1626352 5689536 1625784 5690360 1626464 5689664 -1625968 5690464 1626208 5690560 1626464 5689664 1625784 5690360 -1626208 5690560 1626824 5690816 1626464 5689664 1625968 5690464 -1626976 5690872 1627248 5691016 1626464 5689664 1626824 5690816 -1626424 5689616 1625784 5690360 1626464 5689664 1626096 5687664 -1626824 5690816 1626976 5690872 1626464 5689664 1626208 5690560 -1630232 5692312 1626464 5689664 1627352 5691104 1630136 5692352 -1626208 5690560 1626464 5689704 1626464 5689664 1625968 5690464 -1626464 5689664 1625784 5690360 1625968 5690464 1626464 5689704 -1626464 5689664 1626424 5689616 1625784 5690360 1626464 5689704 -1626424 5689616 1626352 5689536 1625784 5690360 1626464 5689704 -1626352 5689536 1626264 5689472 1625784 5690360 1626464 5689704 -1626352 5689536 1626264 5689472 1626464 5689704 1626424 5689616 -1626424 5689616 1626352 5689536 1626464 5689704 1626464 5689664 -1625784 5690360 1625968 5690464 1626464 5689704 1626264 5689472 -1625968 5690464 1626208 5690560 1626464 5689704 1625784 5690360 -1626464 5689704 1626824 5690816 1626464 5689664 1626424 5689616 -1626208 5690560 1626824 5690816 1626464 5689704 1625968 5690464 -1626264 5689472 1625968 5689376 1625784 5690360 1626464 5689704 -1626464 5689664 1626464 5689704 1626824 5690816 1626976 5690872 -1626464 5689664 1626464 5689704 1626976 5690872 1627248 5691016 -1626464 5689664 1626464 5689704 1627248 5691016 1627352 5691104 -1626464 5689664 1626424 5689616 1626464 5689704 1627248 5691016 -1626464 5689704 1626208 5690560 1626824 5690816 1626976 5690872 -1626464 5689704 1626824 5690816 1626976 5690872 1627248 5691016 -1626264 5689472 1626400 5689760 1626464 5689704 1626352 5689536 -1626464 5689704 1626424 5689616 1626352 5689536 1626400 5689760 -1626352 5689536 1626264 5689472 1626400 5689760 1626424 5689616 -1626464 5689704 1626464 5689664 1626424 5689616 1626400 5689760 -1626464 5689704 1626400 5689760 1625784 5690360 1625968 5690464 -1626464 5689704 1626400 5689760 1625968 5690464 1626208 5690560 -1626400 5689760 1625784 5690360 1625968 5690464 1626208 5690560 -1626400 5689760 1626208 5690560 1626464 5689704 1626424 5689616 -1626464 5689704 1626400 5689760 1626208 5690560 1626824 5690816 -1626400 5689760 1625968 5690464 1626208 5690560 1626824 5690816 -1626464 5689704 1626400 5689760 1626824 5690816 1626976 5690872 -1626464 5689704 1626424 5689616 1626400 5689760 1626824 5690816 -1626400 5689760 1626264 5689472 1625784 5690360 1625968 5690464 -1626264 5689472 1625784 5690360 1626400 5689760 1626352 5689536 -1625784 5690360 1626400 5689760 1626264 5689472 1625968 5689376 -1626264 5689472 1626168 5689416 1625968 5689376 1626400 5689760 -1626168 5689416 1626008 5689376 1625968 5689376 1626400 5689760 -1626168 5689416 1626008 5689376 1626400 5689760 1626264 5689472 -1626008 5689376 1625992 5689368 1625968 5689376 1626400 5689760 -1626168 5689416 1626080 5689376 1626008 5689376 1626400 5689760 -1625784 5690360 1626400 5689760 1625968 5689376 1625576 5690216 -1625968 5689376 1625120 5689928 1625576 5690216 1626400 5689760 -1625784 5690360 1625968 5690464 1626400 5689760 1625576 5690216 -1626400 5689760 1626352 5689536 1626264 5689472 1626168 5689416 -1625968 5689376 1625576 5690216 1626400 5689760 1626008 5689376 -1625576 5690216 1626352 5689768 1625968 5689376 1625120 5689928 -1626400 5689760 1626352 5689768 1625576 5690216 1625784 5690360 -1626400 5689760 1626352 5689768 1625784 5690360 1625968 5690464 -1626352 5689768 1625576 5690216 1625784 5690360 1625968 5690464 -1626400 5689760 1626352 5689768 1625968 5690464 1626208 5690560 -1626400 5689760 1626352 5689768 1626208 5690560 1626824 5690816 -1626352 5689768 1625784 5690360 1625968 5690464 1626208 5690560 -1626400 5689760 1625968 5689376 1626352 5689768 1626208 5690560 -1626352 5689768 1625968 5689376 1625576 5690216 1625784 5690360 -1625968 5689376 1626352 5689768 1626400 5689760 1626008 5689376 -1625968 5689376 1626352 5689768 1626008 5689376 1625992 5689368 -1626400 5689760 1626168 5689416 1626008 5689376 1626352 5689768 -1626400 5689760 1626264 5689472 1626168 5689416 1626352 5689768 -1626168 5689416 1626080 5689376 1626008 5689376 1626352 5689768 -1626168 5689416 1626008 5689376 1626352 5689768 1626264 5689472 -1626352 5689768 1626208 5690560 1626400 5689760 1626264 5689472 -1626400 5689760 1626352 5689536 1626264 5689472 1626352 5689768 -1626264 5689472 1626168 5689416 1626352 5689768 1626352 5689536 -1626400 5689760 1626424 5689616 1626352 5689536 1626352 5689768 -1626400 5689760 1626464 5689704 1626424 5689616 1626352 5689768 -1626400 5689760 1626424 5689616 1626352 5689768 1626208 5690560 -1626352 5689536 1626264 5689472 1626352 5689768 1626424 5689616 -1625968 5689376 1625576 5690216 1626352 5689768 1626008 5689376 -1626008 5689376 1625968 5689376 1626352 5689768 1626168 5689416 -1625576 5690216 1626280 5689752 1625968 5689376 1625120 5689928 -1626352 5689768 1626280 5689752 1625576 5690216 1625784 5690360 -1626352 5689768 1626280 5689752 1625784 5690360 1625968 5690464 -1626352 5689768 1626280 5689752 1625968 5690464 1626208 5690560 -1626280 5689752 1625576 5690216 1625784 5690360 1625968 5690464 -1626352 5689768 1625968 5689376 1626280 5689752 1625968 5690464 -1625968 5689376 1626280 5689752 1626352 5689768 1626008 5689376 -1625968 5689376 1626280 5689752 1626008 5689376 1625992 5689368 -1626280 5689752 1625968 5690464 1626352 5689768 1626008 5689376 -1626280 5689752 1625968 5689376 1625576 5690216 1625784 5690360 -1625968 5689376 1625576 5690216 1626280 5689752 1626008 5689376 -1626352 5689768 1626168 5689416 1626008 5689376 1626280 5689752 -1626168 5689416 1626080 5689376 1626008 5689376 1626280 5689752 -1626352 5689768 1626264 5689472 1626168 5689416 1626280 5689752 -1626352 5689768 1626352 5689536 1626264 5689472 1626280 5689752 -1626264 5689472 1626168 5689416 1626280 5689752 1626352 5689536 -1626352 5689768 1626424 5689616 1626352 5689536 1626280 5689752 -1626352 5689536 1626264 5689472 1626280 5689752 1626424 5689616 -1626352 5689768 1626400 5689760 1626424 5689616 1626280 5689752 -1626352 5689768 1626424 5689616 1626280 5689752 1625968 5690464 -1626008 5689376 1625968 5689376 1626280 5689752 1626168 5689416 -1626168 5689416 1626008 5689376 1626280 5689752 1626264 5689472 -1625576 5690216 1626208 5689712 1625968 5689376 1625120 5689928 -1626280 5689752 1626208 5689712 1625576 5690216 1625784 5690360 -1626280 5689752 1626208 5689712 1625784 5690360 1625968 5690464 -1626280 5689752 1625968 5689376 1626208 5689712 1625784 5690360 -1625968 5689376 1626208 5689712 1626280 5689752 1626008 5689376 -1625968 5689376 1626208 5689712 1626008 5689376 1625992 5689368 -1626280 5689752 1626168 5689416 1626008 5689376 1626208 5689712 -1626168 5689416 1626080 5689376 1626008 5689376 1626208 5689712 -1626208 5689712 1625784 5690360 1626280 5689752 1626168 5689416 -1626008 5689376 1625968 5689376 1626208 5689712 1626168 5689416 -1626208 5689712 1625968 5689376 1625576 5690216 1625784 5690360 -1625968 5689376 1625576 5690216 1626208 5689712 1626008 5689376 -1626280 5689752 1626264 5689472 1626168 5689416 1626208 5689712 -1626280 5689752 1626352 5689536 1626264 5689472 1626208 5689712 -1626280 5689752 1626424 5689616 1626352 5689536 1626208 5689712 -1626168 5689416 1626008 5689376 1626208 5689712 1626264 5689472 -1626280 5689752 1626352 5689536 1626208 5689712 1625784 5690360 -1626264 5689472 1626168 5689416 1626208 5689712 1626352 5689536 -1625576 5690216 1626112 5689640 1625968 5689376 1625120 5689928 -1626208 5689712 1626112 5689640 1625576 5690216 1625784 5690360 -1626208 5689712 1626112 5689640 1625784 5690360 1626280 5689752 -1626208 5689712 1625968 5689376 1626112 5689640 1625784 5690360 -1625968 5689376 1626112 5689640 1626208 5689712 1626008 5689376 -1625968 5689376 1626112 5689640 1626008 5689376 1625992 5689368 -1626208 5689712 1626168 5689416 1626008 5689376 1626112 5689640 -1626168 5689416 1626080 5689376 1626008 5689376 1626112 5689640 -1626208 5689712 1626264 5689472 1626168 5689416 1626112 5689640 -1626168 5689416 1626080 5689376 1626112 5689640 1626264 5689472 -1626112 5689640 1625784 5690360 1626208 5689712 1626264 5689472 -1626008 5689376 1625968 5689376 1626112 5689640 1626080 5689376 -1626112 5689640 1625968 5689376 1625576 5690216 1625784 5690360 -1625968 5689376 1625576 5690216 1626112 5689640 1626008 5689376 -1626208 5689712 1626352 5689536 1626264 5689472 1626112 5689640 -1625576 5690216 1626032 5689568 1625968 5689376 1625120 5689928 -1625968 5689376 1624840 5689808 1625120 5689928 1626032 5689568 -1626112 5689640 1626032 5689568 1625576 5690216 1625784 5690360 -1625968 5689376 1626032 5689568 1626112 5689640 1626008 5689376 -1625968 5689376 1626032 5689568 1626008 5689376 1625992 5689368 -1626112 5689640 1626080 5689376 1626008 5689376 1626032 5689568 -1626112 5689640 1626168 5689416 1626080 5689376 1626032 5689568 -1626112 5689640 1626264 5689472 1626168 5689416 1626032 5689568 -1626080 5689376 1626008 5689376 1626032 5689568 1626168 5689416 -1626032 5689568 1625576 5690216 1626112 5689640 1626168 5689416 -1626008 5689376 1625968 5689376 1626032 5689568 1626080 5689376 -1625576 5690216 1626112 5689640 1626032 5689568 1625120 5689928 -1626032 5689568 1626008 5689376 1625968 5689376 1625120 5689928 -1626032 5689568 1626000 5689520 1625120 5689928 1625576 5690216 -1625120 5689928 1626000 5689520 1625968 5689376 1624840 5689808 -1626032 5689568 1626000 5689520 1625576 5690216 1626112 5689640 -1626032 5689568 1625968 5689376 1626000 5689520 1625576 5690216 -1625968 5689376 1626000 5689520 1626032 5689568 1626008 5689376 -1625968 5689376 1626000 5689520 1626008 5689376 1625992 5689368 -1626032 5689568 1626080 5689376 1626008 5689376 1626000 5689520 -1626032 5689568 1626168 5689416 1626080 5689376 1626000 5689520 -1626032 5689568 1626112 5689640 1626168 5689416 1626000 5689520 -1626080 5689376 1626008 5689376 1626000 5689520 1626168 5689416 -1626000 5689520 1625576 5690216 1626032 5689568 1626168 5689416 -1626008 5689376 1625968 5689376 1626000 5689520 1626080 5689376 -1626000 5689520 1625968 5689376 1625120 5689928 1625576 5690216 -1625968 5689376 1625120 5689928 1626000 5689520 1626008 5689376 -1625120 5689928 1625992 5689496 1625968 5689376 1624840 5689808 -1626000 5689520 1625992 5689496 1625120 5689928 1625576 5690216 -1625968 5689376 1625992 5689496 1626000 5689520 1626008 5689376 -1625968 5689376 1625992 5689496 1626008 5689376 1625992 5689368 -1626000 5689520 1626080 5689376 1626008 5689376 1625992 5689496 -1626000 5689520 1626168 5689416 1626080 5689376 1625992 5689496 -1626000 5689520 1626032 5689568 1626168 5689416 1625992 5689496 -1626080 5689376 1626008 5689376 1625992 5689496 1626168 5689416 -1625992 5689496 1625120 5689928 1626000 5689520 1626168 5689416 -1626008 5689376 1625968 5689376 1625992 5689496 1626080 5689376 -1625968 5689376 1625120 5689928 1625992 5689496 1626008 5689376 -1625120 5689928 1625968 5689472 1625968 5689376 1624840 5689808 -1625992 5689496 1625968 5689472 1625120 5689928 1626000 5689520 -1625120 5689928 1625576 5690216 1626000 5689520 1625968 5689472 -1625576 5690216 1626032 5689568 1626000 5689520 1625968 5689472 -1626000 5689520 1625992 5689496 1625968 5689472 1625576 5690216 -1625992 5689496 1625968 5689376 1625968 5689472 1626000 5689520 -1625968 5689376 1625968 5689472 1625992 5689496 1626008 5689376 -1625968 5689376 1625968 5689472 1626008 5689376 1625992 5689368 -1625992 5689496 1626080 5689376 1626008 5689376 1625968 5689472 -1625968 5689472 1626000 5689520 1625992 5689496 1626008 5689376 -1625968 5689472 1625968 5689376 1625120 5689928 1625576 5690216 -1625968 5689376 1625120 5689928 1625968 5689472 1626008 5689376 -1625120 5689928 1625000 5690216 1625272 5690680 1625576 5690216 -1625272 5690680 1625520 5690696 1625576 5690216 1625000 5690216 -1624816 5690640 1625000 5690216 1625120 5689928 1624640 5690320 -1625120 5689928 1624840 5689808 1624640 5690320 1625000 5690216 -1624840 5689808 1624464 5690136 1624640 5690320 1625000 5690216 -1624640 5690320 1624816 5690640 1625000 5690216 1624840 5689808 -1625272 5690680 1625000 5690216 1624816 5690640 1624912 5690712 -1625000 5690216 1624912 5690712 1625272 5690680 1625576 5690216 -1624816 5690640 1624912 5690712 1625000 5690216 1624640 5690320 -1625120 5689928 1624840 5689808 1625000 5690216 1625576 5690216 -1624816 5690640 1624840 5690672 1624912 5690712 1625000 5690216 -1625576 5690216 1625056 5690168 1625000 5690216 1625272 5690680 -1625576 5690216 1625056 5690168 1625272 5690680 1625520 5690696 -1625000 5690216 1624912 5690712 1625272 5690680 1625056 5690168 -1625056 5690168 1625120 5689928 1625000 5690216 1625272 5690680 -1625000 5690216 1625056 5690168 1625120 5689928 1624840 5689808 -1625000 5690216 1625056 5690168 1624840 5689808 1624640 5690320 -1625000 5690216 1625272 5690680 1625056 5690168 1624840 5689808 -1625056 5690168 1625576 5690216 1625120 5689928 1624840 5689808 -1625576 5690216 1625120 5689928 1625056 5690168 1625272 5690680 -1625576 5690216 1625128 5690184 1625272 5690680 1625520 5690696 -1625272 5690680 1625128 5690184 1625056 5690168 1625000 5690216 -1625272 5690680 1625128 5690184 1625000 5690216 1624912 5690712 -1625128 5690184 1625576 5690216 1625056 5690168 1625000 5690216 -1625056 5690168 1625128 5690184 1625576 5690216 1625120 5689928 -1625056 5690168 1625128 5690184 1625120 5689928 1624840 5689808 -1625056 5690168 1625000 5690216 1625128 5690184 1625120 5689928 -1625128 5690184 1625272 5690680 1625576 5690216 1625120 5689928 -1625272 5690680 1625576 5690216 1625128 5690184 1625000 5690216 -1625576 5690216 1625232 5690240 1625272 5690680 1625520 5690696 -1625576 5690216 1625232 5690240 1625520 5690696 1625784 5690360 -1625128 5690184 1625232 5690240 1625576 5690216 1625120 5689928 -1625128 5690184 1625232 5690240 1625120 5689928 1625056 5690168 -1625128 5690184 1625272 5690680 1625232 5690240 1625120 5689928 -1625272 5690680 1625232 5690240 1625128 5690184 1625000 5690216 -1625128 5690184 1625056 5690168 1625000 5690216 1625232 5690240 -1625272 5690680 1625232 5690240 1625000 5690216 1624912 5690712 -1625232 5690240 1625120 5689928 1625128 5690184 1625000 5690216 -1625576 5690216 1625120 5689928 1625232 5690240 1625520 5690696 -1625232 5690240 1625000 5690216 1625272 5690680 1625520 5690696 -1625576 5690216 1625256 5690256 1625520 5690696 1625784 5690360 -1625520 5690696 1625256 5690256 1625232 5690240 1625272 5690680 -1625232 5690240 1625256 5690256 1625576 5690216 1625120 5689928 -1625256 5690256 1625576 5690216 1625232 5690240 1625272 5690680 -1625232 5690240 1625000 5690216 1625272 5690680 1625256 5690256 -1625520 5690696 1625576 5690216 1625256 5690256 1625272 5690680 -1625576 5690216 1625344 5690280 1625520 5690696 1625784 5690360 -1625256 5690256 1625344 5690280 1625576 5690216 1625232 5690240 -1625576 5690216 1625120 5689928 1625232 5690240 1625344 5690280 -1625120 5689928 1625128 5690184 1625232 5690240 1625344 5690280 -1625232 5690240 1625256 5690256 1625344 5690280 1625120 5689928 -1625256 5690256 1625520 5690696 1625344 5690280 1625232 5690240 -1625520 5690696 1625344 5690280 1625256 5690256 1625272 5690680 -1625256 5690256 1625232 5690240 1625272 5690680 1625344 5690280 -1625344 5690280 1625232 5690240 1625256 5690256 1625272 5690680 -1625344 5690280 1625520 5690696 1625576 5690216 1625120 5689928 -1625520 5690696 1625576 5690216 1625344 5690280 1625272 5690680 -1625576 5690216 1625432 5690312 1625520 5690696 1625784 5690360 -1625520 5690696 1625840 5690768 1625784 5690360 1625432 5690312 -1625344 5690280 1625432 5690312 1625576 5690216 1625120 5689928 -1625520 5690696 1625432 5690312 1625344 5690280 1625272 5690680 -1625344 5690280 1625256 5690256 1625272 5690680 1625432 5690312 -1625432 5690312 1625576 5690216 1625344 5690280 1625272 5690680 -1625576 5690216 1625344 5690280 1625432 5690312 1625784 5690360 -1625432 5690312 1625272 5690680 1625520 5690696 1625784 5690360 -1625784 5690360 1625456 5690312 1625432 5690312 1625520 5690696 -1625784 5690360 1625456 5690312 1625520 5690696 1625840 5690768 -1625432 5690312 1625456 5690312 1625576 5690216 1625344 5690280 -1625456 5690312 1625576 5690216 1625432 5690312 1625520 5690696 -1625432 5690312 1625272 5690680 1625520 5690696 1625456 5690312 -1625784 5690360 1625576 5690216 1625456 5690312 1625520 5690696 -1625784 5690360 1625488 5690344 1625520 5690696 1625840 5690768 -1625520 5690696 1625488 5690344 1625456 5690312 1625432 5690312 -1625520 5690696 1625488 5690344 1625432 5690312 1625272 5690680 -1625488 5690344 1625456 5690312 1625432 5690312 1625272 5690680 -1625432 5690312 1625344 5690280 1625272 5690680 1625488 5690344 -1625488 5690344 1625784 5690360 1625456 5690312 1625432 5690312 -1625456 5690312 1625488 5690344 1625784 5690360 1625576 5690216 -1625456 5690312 1625488 5690344 1625576 5690216 1625432 5690312 -1625456 5690312 1625432 5690312 1625488 5690344 1625576 5690216 -1625488 5690344 1625520 5690696 1625784 5690360 1625576 5690216 -1625520 5690696 1625784 5690360 1625488 5690344 1625272 5690680 -1625272 5690680 1625488 5690408 1625488 5690344 1625432 5690312 -1625488 5690344 1625456 5690312 1625432 5690312 1625488 5690408 -1625272 5690680 1625488 5690408 1625432 5690312 1625344 5690280 -1625272 5690680 1625488 5690408 1625344 5690280 1625256 5690256 -1625488 5690408 1625488 5690344 1625432 5690312 1625344 5690280 -1625488 5690408 1625520 5690696 1625488 5690344 1625432 5690312 -1625488 5690344 1625488 5690408 1625520 5690696 1625784 5690360 -1625520 5690696 1625840 5690768 1625784 5690360 1625488 5690408 -1625488 5690344 1625488 5690408 1625784 5690360 1625576 5690216 -1625488 5690344 1625432 5690312 1625488 5690408 1625784 5690360 -1625488 5690408 1625272 5690680 1625520 5690696 1625784 5690360 -1625272 5690680 1625520 5690696 1625488 5690408 1625344 5690280 -1625272 5690680 1625432 5690472 1625344 5690280 1625256 5690256 -1625272 5690680 1625432 5690472 1625256 5690256 1625232 5690240 -1625344 5690280 1625432 5690472 1625488 5690408 1625432 5690312 -1625488 5690408 1625488 5690344 1625432 5690312 1625432 5690472 -1625432 5690472 1625272 5690680 1625488 5690408 1625432 5690312 -1625488 5690408 1625432 5690472 1625272 5690680 1625520 5690696 -1625488 5690408 1625432 5690472 1625520 5690696 1625784 5690360 -1625488 5690408 1625432 5690312 1625432 5690472 1625520 5690696 -1625272 5690680 1625520 5690696 1625432 5690472 1625256 5690256 -1625432 5690472 1625432 5690312 1625344 5690280 1625256 5690256 -1625272 5690680 1625384 5690496 1625256 5690256 1625232 5690240 -1625256 5690256 1625384 5690496 1625432 5690472 1625344 5690280 -1625432 5690472 1625384 5690496 1625272 5690680 1625520 5690696 -1625432 5690472 1625384 5690496 1625520 5690696 1625488 5690408 -1625384 5690496 1625520 5690696 1625432 5690472 1625344 5690280 -1625432 5690472 1625432 5690312 1625344 5690280 1625384 5690496 -1625344 5690280 1625256 5690256 1625384 5690496 1625432 5690312 -1625432 5690472 1625488 5690408 1625432 5690312 1625384 5690496 -1625432 5690472 1625432 5690312 1625384 5690496 1625520 5690696 -1625384 5690496 1625256 5690256 1625272 5690680 1625520 5690696 -1625256 5690256 1625272 5690680 1625384 5690496 1625344 5690280 -1625272 5690680 1625296 5690496 1625256 5690256 1625232 5690240 -1625272 5690680 1625296 5690496 1625232 5690240 1625000 5690216 -1625296 5690496 1625256 5690256 1625232 5690240 1625000 5690216 -1625272 5690680 1625296 5690496 1625000 5690216 1624912 5690712 -1625000 5690216 1624816 5690640 1624912 5690712 1625296 5690496 -1625232 5690240 1625128 5690184 1625000 5690216 1625296 5690496 -1625296 5690496 1625232 5690240 1625000 5690216 1624912 5690712 -1625384 5690496 1625296 5690496 1625272 5690680 1625520 5690696 -1625256 5690256 1625296 5690496 1625384 5690496 1625344 5690280 -1625384 5690496 1625432 5690312 1625344 5690280 1625296 5690496 -1625296 5690496 1625272 5690680 1625384 5690496 1625344 5690280 -1625272 5690680 1625384 5690496 1625296 5690496 1624912 5690712 -1625296 5690496 1625344 5690280 1625256 5690256 1625232 5690240 -1624912 5690712 1625208 5690480 1625000 5690216 1624816 5690640 -1625296 5690496 1625208 5690480 1624912 5690712 1625272 5690680 -1625000 5690216 1624640 5690320 1624816 5690640 1625208 5690480 -1624912 5690712 1625272 5690680 1625208 5690480 1624816 5690640 -1625208 5690480 1625296 5690496 1625000 5690216 1624816 5690640 -1625000 5690216 1625208 5690480 1625296 5690496 1625232 5690240 -1625296 5690496 1625256 5690256 1625232 5690240 1625208 5690480 -1625000 5690216 1624816 5690640 1625208 5690480 1625232 5690240 -1625000 5690216 1625208 5690480 1625232 5690240 1625128 5690184 -1625000 5690216 1625208 5690480 1625128 5690184 1625056 5690168 -1625000 5690216 1624816 5690640 1625208 5690480 1625128 5690184 -1625232 5690240 1625128 5690184 1625208 5690480 1625256 5690256 -1625296 5690496 1625208 5690480 1625272 5690680 1625384 5690496 -1625296 5690496 1625256 5690256 1625208 5690480 1625272 5690680 -1625296 5690496 1625344 5690280 1625256 5690256 1625208 5690480 -1625256 5690256 1625232 5690240 1625208 5690480 1625344 5690280 -1625296 5690496 1625384 5690496 1625344 5690280 1625208 5690480 -1625296 5690496 1625344 5690280 1625208 5690480 1625272 5690680 -1624912 5690712 1625208 5690480 1624816 5690640 1624840 5690672 -1625208 5690480 1625112 5690448 1624816 5690640 1624912 5690712 -1624816 5690640 1625112 5690448 1625000 5690216 1624640 5690320 -1625208 5690480 1625112 5690448 1624912 5690712 1625272 5690680 -1625112 5690448 1624816 5690640 1624912 5690712 1625272 5690680 -1625208 5690480 1625112 5690448 1625272 5690680 1625296 5690496 -1625208 5690480 1625000 5690216 1625112 5690448 1625272 5690680 -1625000 5690216 1625112 5690448 1625208 5690480 1625128 5690184 -1625000 5690216 1625112 5690448 1625128 5690184 1625056 5690168 -1625112 5690448 1625272 5690680 1625208 5690480 1625128 5690184 -1625208 5690480 1625232 5690240 1625128 5690184 1625112 5690448 -1625208 5690480 1625232 5690240 1625112 5690448 1625272 5690680 -1625128 5690184 1625000 5690216 1625112 5690448 1625232 5690240 -1625208 5690480 1625256 5690256 1625232 5690240 1625112 5690448 -1625208 5690480 1625344 5690280 1625256 5690256 1625112 5690448 -1625208 5690480 1625256 5690256 1625112 5690448 1625272 5690680 -1625232 5690240 1625128 5690184 1625112 5690448 1625256 5690256 -1625112 5690448 1625000 5690216 1624816 5690640 1624912 5690712 -1625000 5690216 1624816 5690640 1625112 5690448 1625128 5690184 -1624816 5690640 1624840 5690672 1624912 5690712 1625112 5690448 -1624816 5690640 1625080 5690424 1625000 5690216 1624640 5690320 -1625000 5690216 1624840 5689808 1624640 5690320 1625080 5690424 -1625112 5690448 1625080 5690424 1624816 5690640 1624912 5690712 -1625112 5690448 1625080 5690424 1624912 5690712 1625272 5690680 -1625112 5690448 1625000 5690216 1625080 5690424 1624912 5690712 -1625000 5690216 1625080 5690424 1625112 5690448 1625128 5690184 -1625000 5690216 1625080 5690424 1625128 5690184 1625056 5690168 -1625112 5690448 1625232 5690240 1625128 5690184 1625080 5690424 -1625112 5690448 1625256 5690256 1625232 5690240 1625080 5690424 -1625080 5690424 1624912 5690712 1625112 5690448 1625232 5690240 -1625128 5690184 1625000 5690216 1625080 5690424 1625232 5690240 -1624816 5690640 1624912 5690712 1625080 5690424 1624640 5690320 -1625080 5690424 1625128 5690184 1625000 5690216 1624640 5690320 -1624816 5690640 1624840 5690672 1624912 5690712 1625080 5690424 -1624640 5690320 1625048 5690400 1625000 5690216 1624840 5689808 -1625080 5690424 1625048 5690400 1624640 5690320 1624816 5690640 -1625048 5690400 1625000 5690216 1624640 5690320 1624816 5690640 -1625080 5690424 1625048 5690400 1624816 5690640 1624912 5690712 -1625048 5690400 1624640 5690320 1624816 5690640 1624912 5690712 -1625080 5690424 1625048 5690400 1624912 5690712 1625112 5690448 -1625080 5690424 1625000 5690216 1625048 5690400 1624912 5690712 -1625000 5690216 1625048 5690400 1625080 5690424 1625128 5690184 -1625000 5690216 1624640 5690320 1625048 5690400 1625128 5690184 -1625000 5690216 1625048 5690400 1625128 5690184 1625056 5690168 -1625080 5690424 1625232 5690240 1625128 5690184 1625048 5690400 -1625128 5690184 1625000 5690216 1625048 5690400 1625232 5690240 -1625080 5690424 1625112 5690448 1625232 5690240 1625048 5690400 -1625048 5690400 1624912 5690712 1625080 5690424 1625232 5690240 -1624816 5690640 1624840 5690672 1624912 5690712 1625048 5690400 -1625048 5690400 1624992 5690288 1624640 5690320 1624816 5690640 -1625000 5690216 1624992 5690288 1625048 5690400 1625128 5690184 -1625048 5690400 1625232 5690240 1625128 5690184 1624992 5690288 -1625048 5690400 1625128 5690184 1624992 5690288 1624816 5690640 -1624992 5690288 1625000 5690216 1624640 5690320 1624816 5690640 -1625000 5690216 1624640 5690320 1624992 5690288 1625128 5690184 -1625000 5690216 1624992 5690288 1625128 5690184 1625056 5690168 -1624640 5690320 1624992 5690288 1625000 5690216 1624840 5689808 -1625048 5690400 1624992 5690288 1624816 5690640 1624912 5690712 -1626992 5691384 1627624 5691896 1629856 5692928 1627168 5691336 -1629856 5692928 1629816 5692792 1627168 5691336 1627624 5691896 -1627168 5691336 1626992 5691384 1627624 5691896 1629816 5692792 -1629856 5692928 1627624 5691896 1626688 5696104 1626864 5696192 -1629856 5692928 1627624 5691896 1626864 5696192 1629904 5693000 -1627624 5691896 1626864 5696192 1629856 5692928 1629816 5692792 -1627624 5691896 1626992 5691384 1626688 5696104 1626864 5696192 -1626992 5691384 1626688 5696104 1627624 5691896 1627168 5691336 -1626688 5696104 1626776 5696152 1626864 5696192 1627624 5691896 -1629816 5692792 1627368 5691192 1627168 5691336 1627624 5691896 -1627168 5691336 1626992 5691384 1627624 5691896 1627368 5691192 -1629816 5692792 1627368 5691192 1627624 5691896 1629856 5692928 -1627368 5691192 1627304 5691224 1627168 5691336 1627624 5691896 -1627168 5691336 1626992 5691384 1627624 5691896 1627304 5691224 -1627368 5691192 1627304 5691224 1627624 5691896 1629816 5692792 -1629816 5692792 1629840 5692680 1627368 5691192 1627624 5691896 -1629816 5692792 1629840 5692680 1627624 5691896 1629856 5692928 -1629840 5692680 1629944 5692528 1627368 5691192 1627624 5691896 -1629944 5692528 1630136 5692352 1627368 5691192 1627624 5691896 -1629944 5692528 1630136 5692352 1627624 5691896 1629840 5692680 -1627368 5691192 1627304 5691224 1627624 5691896 1630136 5692352 -1630136 5692352 1627352 5691104 1627368 5691192 1627624 5691896 -1629840 5692680 1629944 5692528 1627624 5691896 1629816 5692792 -1626688 5696104 1627624 5691896 1626992 5691384 1626600 5696072 -1626688 5696104 1626864 5696192 1627624 5691896 1626600 5696072 -1627624 5691896 1627168 5691336 1626992 5691384 1626600 5696072 -1626992 5691384 1626552 5696056 1626600 5696072 1627624 5691896 -1626992 5691384 1626552 5696056 1627624 5691896 1627168 5691336 -1626992 5691384 1626872 5691384 1626552 5696056 1627624 5691896 -1626992 5691384 1626872 5691384 1627624 5691896 1627168 5691336 -1626872 5691384 1624280 5693272 1626552 5696056 1627624 5691896 -1626552 5696056 1626600 5696072 1627624 5691896 1624280 5693272 -1626872 5691384 1624280 5693272 1627624 5691896 1626992 5691384 -1624280 5693272 1626520 5696056 1626552 5696056 1627624 5691896 -1624280 5693272 1626488 5696072 1626520 5696056 1627624 5691896 -1624280 5693272 1626520 5696056 1627624 5691896 1626872 5691384 -1626552 5696056 1626600 5696072 1627624 5691896 1626520 5696056 -1626872 5691384 1626768 5691344 1624280 5693272 1627624 5691896 -1626600 5696072 1626688 5696104 1627624 5691896 1626552 5696056 -1629856 5692928 1627944 5692096 1626864 5696192 1629904 5693000 -1626864 5696192 1626896 5696216 1629904 5693000 1627944 5692096 -1626864 5696192 1627944 5692096 1627624 5691896 1626688 5696104 -1627624 5691896 1627944 5692096 1629856 5692928 1629816 5692792 -1627624 5691896 1627944 5692096 1629816 5692792 1629840 5692680 -1627944 5692096 1629856 5692928 1629816 5692792 1629840 5692680 -1627624 5691896 1626600 5696072 1626688 5696104 1627944 5692096 -1626688 5696104 1626864 5696192 1627944 5692096 1626600 5696072 -1627944 5692096 1629840 5692680 1627624 5691896 1626600 5696072 -1629856 5692928 1629816 5692792 1627944 5692096 1629904 5693000 -1627944 5692096 1626688 5696104 1626864 5696192 1629904 5693000 -1626864 5696192 1627944 5692096 1626688 5696104 1626776 5696152 -1627624 5691896 1627944 5692096 1629840 5692680 1629944 5692528 -1627944 5692096 1629816 5692792 1629840 5692680 1629944 5692528 -1627624 5691896 1627944 5692096 1629944 5692528 1630136 5692352 -1627624 5691896 1627944 5692096 1630136 5692352 1627368 5691192 -1627944 5692096 1629944 5692528 1630136 5692352 1627368 5691192 -1627624 5691896 1626600 5696072 1627944 5692096 1627368 5691192 -1627624 5691896 1627944 5692096 1627368 5691192 1627304 5691224 -1630136 5692352 1627352 5691104 1627368 5691192 1627944 5692096 -1627368 5691192 1627624 5691896 1627944 5692096 1627352 5691104 -1630136 5692352 1627352 5691104 1627944 5692096 1629944 5692528 -1630136 5692352 1630232 5692312 1627352 5691104 1627944 5692096 -1627944 5692096 1629840 5692680 1629944 5692528 1630136 5692352 -1627624 5691896 1626552 5696056 1626600 5696072 1627944 5692096 -1626600 5696072 1626688 5696104 1627944 5692096 1626552 5696056 -1627624 5691896 1626552 5696056 1627944 5692096 1627368 5691192 -1627624 5691896 1626520 5696056 1626552 5696056 1627944 5692096 -1627944 5692096 1628120 5692240 1629904 5693000 1629856 5692928 -1629904 5693000 1628120 5692240 1626864 5696192 1626896 5696216 -1627944 5692096 1628120 5692240 1629856 5692928 1629816 5692792 -1628120 5692240 1629904 5693000 1629856 5692928 1629816 5692792 -1627944 5692096 1628120 5692240 1629816 5692792 1629840 5692680 -1627944 5692096 1628120 5692240 1629840 5692680 1629944 5692528 -1628120 5692240 1629816 5692792 1629840 5692680 1629944 5692528 -1628120 5692240 1629856 5692928 1629816 5692792 1629840 5692680 -1627944 5692096 1626864 5696192 1628120 5692240 1629944 5692528 -1626864 5696192 1628120 5692240 1627944 5692096 1626688 5696104 -1627944 5692096 1626600 5696072 1626688 5696104 1628120 5692240 -1627944 5692096 1626552 5696056 1626600 5696072 1628120 5692240 -1626600 5696072 1626688 5696104 1628120 5692240 1626552 5696056 -1628120 5692240 1629944 5692528 1627944 5692096 1626552 5696056 -1626688 5696104 1626864 5696192 1628120 5692240 1626600 5696072 -1628120 5692240 1626896 5696216 1629904 5693000 1629856 5692928 -1628120 5692240 1626688 5696104 1626864 5696192 1626896 5696216 -1626864 5696192 1628120 5692240 1626688 5696104 1626776 5696152 -1629904 5693000 1628120 5692240 1626896 5696216 1628048 5696704 -1627944 5692096 1628120 5692240 1629944 5692528 1630136 5692352 -1628120 5692240 1629840 5692680 1629944 5692528 1630136 5692352 -1627944 5692096 1628120 5692240 1630136 5692352 1627352 5691104 -1627944 5692096 1626552 5696056 1628120 5692240 1630136 5692352 -1627944 5692096 1627624 5691896 1626552 5696056 1628120 5692240 -1626896 5696216 1628128 5692296 1628120 5692240 1626864 5696192 -1628120 5692240 1628128 5692296 1629904 5693000 1629856 5692928 -1628120 5692240 1628128 5692296 1629856 5692928 1629816 5692792 -1628120 5692240 1628128 5692296 1629816 5692792 1629840 5692680 -1628128 5692296 1629856 5692928 1629816 5692792 1629840 5692680 -1628120 5692240 1628128 5692296 1629840 5692680 1629944 5692528 -1628128 5692296 1629904 5693000 1629856 5692928 1629816 5692792 -1628128 5692296 1629840 5692680 1628120 5692240 1626864 5696192 -1628120 5692240 1626688 5696104 1626864 5696192 1628128 5692296 -1626864 5696192 1626896 5696216 1628128 5692296 1626688 5696104 -1628120 5692240 1626600 5696072 1626688 5696104 1628128 5692296 -1628120 5692240 1626552 5696056 1626600 5696072 1628128 5692296 -1628120 5692240 1627944 5692096 1626552 5696056 1628128 5692296 -1626552 5696056 1626600 5696072 1628128 5692296 1627944 5692096 -1626600 5696072 1626688 5696104 1628128 5692296 1626552 5696056 -1628120 5692240 1627944 5692096 1628128 5692296 1629840 5692680 -1626688 5696104 1626864 5696192 1628128 5692296 1626600 5696072 -1628128 5692296 1626896 5696216 1629904 5693000 1629856 5692928 -1626896 5696216 1629904 5693000 1628128 5692296 1626864 5696192 -1626688 5696104 1626776 5696152 1626864 5696192 1628128 5692296 -1629904 5693000 1628128 5692296 1626896 5696216 1628048 5696704 -1627944 5692096 1627624 5691896 1626552 5696056 1628128 5692296 -1626552 5696056 1626600 5696072 1628128 5692296 1627624 5691896 -1627944 5692096 1627624 5691896 1628128 5692296 1628120 5692240 -1627624 5691896 1626520 5696056 1626552 5696056 1628128 5692296 -1626552 5696056 1626600 5696072 1628128 5692296 1626520 5696056 -1627624 5691896 1624280 5693272 1626520 5696056 1628128 5692296 -1627624 5691896 1626520 5696056 1628128 5692296 1627944 5692096 -1628128 5692296 1628080 5692336 1626520 5696056 1626552 5696056 -1628128 5692296 1628080 5692336 1626552 5696056 1626600 5696072 -1628128 5692296 1628080 5692336 1626600 5696072 1626688 5696104 -1628080 5692336 1626552 5696056 1626600 5696072 1626688 5696104 -1628128 5692296 1628080 5692336 1626688 5696104 1626864 5696192 -1628128 5692296 1628080 5692336 1626864 5696192 1626896 5696216 -1628080 5692336 1626600 5696072 1626688 5696104 1626864 5696192 -1628080 5692336 1626688 5696104 1626864 5696192 1626896 5696216 -1628128 5692296 1627624 5691896 1628080 5692336 1626896 5696216 -1628128 5692296 1628080 5692336 1626896 5696216 1629904 5693000 -1628080 5692336 1626864 5696192 1626896 5696216 1629904 5693000 -1628128 5692296 1628080 5692336 1629904 5693000 1629856 5692928 -1628128 5692296 1628080 5692336 1629856 5692928 1629816 5692792 -1628128 5692296 1628080 5692336 1629816 5692792 1629840 5692680 -1628080 5692336 1629904 5693000 1629856 5692928 1629816 5692792 -1628128 5692296 1627624 5691896 1628080 5692336 1629816 5692792 -1628080 5692336 1626896 5696216 1629904 5693000 1629856 5692928 -1628080 5692336 1627624 5691896 1626520 5696056 1626552 5696056 -1626688 5696104 1626776 5696152 1626864 5696192 1628080 5692336 -1628080 5692336 1626520 5696056 1626552 5696056 1626600 5696072 -1626896 5696216 1628048 5696704 1629904 5693000 1628080 5692336 -1626896 5696216 1628048 5696704 1628080 5692336 1626864 5696192 -1629904 5693000 1629856 5692928 1628080 5692336 1628048 5696704 -1626896 5696216 1626984 5696288 1628048 5696704 1628080 5692336 -1628048 5696704 1628088 5696712 1629904 5693000 1628080 5692336 -1626520 5696056 1628080 5692336 1627624 5691896 1624280 5693272 -1626520 5696056 1628080 5692336 1624280 5693272 1626488 5696072 -1626520 5696056 1626552 5696056 1628080 5692336 1624280 5693272 -1628080 5692336 1628128 5692296 1627624 5691896 1624280 5693272 -1627624 5691896 1626872 5691384 1624280 5693272 1628080 5692336 -1627624 5691896 1628080 5692336 1628128 5692296 1627944 5692096 -1628128 5692296 1628120 5692240 1627944 5692096 1628080 5692336 -1628080 5692336 1629816 5692792 1628128 5692296 1628120 5692240 -1627624 5691896 1624280 5693272 1628080 5692336 1627944 5692096 -1627944 5692096 1627624 5691896 1628080 5692336 1628120 5692240 -1627624 5691896 1628000 5692352 1628080 5692336 1627944 5692096 -1628000 5692352 1624280 5693272 1628080 5692336 1627944 5692096 -1627624 5691896 1624280 5693272 1628000 5692352 1627944 5692096 -1624280 5693272 1628000 5692352 1627624 5691896 1626872 5691384 -1628080 5692336 1628000 5692352 1624280 5693272 1626520 5696056 -1624280 5693272 1626488 5696072 1626520 5696056 1628000 5692352 -1628080 5692336 1628000 5692352 1626520 5696056 1626552 5696056 -1628080 5692336 1627944 5692096 1628000 5692352 1626552 5696056 -1628000 5692352 1627624 5691896 1624280 5693272 1626520 5696056 -1628080 5692336 1628000 5692352 1626552 5696056 1626600 5696072 -1628080 5692336 1628000 5692352 1626600 5696072 1626688 5696104 -1628080 5692336 1628000 5692352 1626688 5696104 1626864 5696192 -1628000 5692352 1626600 5696072 1626688 5696104 1626864 5696192 -1628080 5692336 1628000 5692352 1626864 5696192 1626896 5696216 -1628080 5692336 1628000 5692352 1626896 5696216 1628048 5696704 -1628000 5692352 1626688 5696104 1626864 5696192 1626896 5696216 -1628000 5692352 1626864 5696192 1626896 5696216 1628048 5696704 -1628000 5692352 1626520 5696056 1626552 5696056 1626600 5696072 -1628080 5692336 1627944 5692096 1628000 5692352 1628048 5696704 -1626896 5696216 1626984 5696288 1628048 5696704 1628000 5692352 -1626688 5696104 1626776 5696152 1626864 5696192 1628000 5692352 -1628000 5692352 1626552 5696056 1626600 5696072 1626688 5696104 -1628080 5692336 1628000 5692352 1628048 5696704 1629904 5693000 -1628000 5692352 1626896 5696216 1628048 5696704 1629904 5693000 -1628080 5692336 1628000 5692352 1629904 5693000 1629856 5692928 -1628080 5692336 1627944 5692096 1628000 5692352 1629904 5693000 -1628048 5696704 1628088 5696712 1629904 5693000 1628000 5692352 -1628000 5692352 1624280 5693272 1626520 5696056 1626552 5696056 -1628080 5692336 1628120 5692240 1627944 5692096 1628000 5692352 -1628080 5692336 1628128 5692296 1628120 5692240 1628000 5692352 -1628080 5692336 1628120 5692240 1628000 5692352 1629904 5693000 -1627944 5692096 1627624 5691896 1628000 5692352 1628120 5692240 -1628000 5692352 1627776 5692304 1624280 5693272 1626520 5696056 -1624280 5693272 1626488 5696072 1626520 5696056 1627776 5692304 -1628000 5692352 1627624 5691896 1627776 5692304 1626520 5696056 -1627624 5691896 1627776 5692304 1628000 5692352 1627944 5692096 -1628000 5692352 1628120 5692240 1627944 5692096 1627776 5692304 -1627776 5692304 1626520 5696056 1628000 5692352 1627944 5692096 -1627776 5692304 1627624 5691896 1624280 5693272 1626520 5696056 -1627624 5691896 1624280 5693272 1627776 5692304 1627944 5692096 -1624280 5693272 1627776 5692304 1627624 5691896 1626872 5691384 -1624280 5693272 1626520 5696056 1627776 5692304 1626872 5691384 -1627776 5692304 1627944 5692096 1627624 5691896 1626872 5691384 -1627624 5691896 1626992 5691384 1626872 5691384 1627776 5692304 -1628000 5692352 1627776 5692304 1626520 5696056 1626552 5696056 -1628000 5692352 1627776 5692304 1626552 5696056 1626600 5696072 -1627776 5692304 1624280 5693272 1626520 5696056 1626552 5696056 -1628000 5692352 1627944 5692096 1627776 5692304 1626600 5696072 -1628000 5692352 1627776 5692304 1626600 5696072 1626688 5696104 -1628000 5692352 1627776 5692304 1626688 5696104 1626864 5696192 -1627776 5692304 1626552 5696056 1626600 5696072 1626688 5696104 -1628000 5692352 1627944 5692096 1627776 5692304 1626688 5696104 -1627776 5692304 1626520 5696056 1626552 5696056 1626600 5696072 -1624280 5693272 1627776 5692304 1626872 5691384 1626768 5691344 -1624280 5693272 1626520 5696056 1627776 5692304 1626768 5691344 -1624280 5693272 1627776 5692304 1626768 5691344 1624232 5693160 -1627776 5692304 1627624 5691896 1626872 5691384 1626768 5691344 -1627776 5692304 1627672 5692304 1624280 5693272 1626520 5696056 -1624280 5693272 1626488 5696072 1626520 5696056 1627672 5692304 -1627776 5692304 1627672 5692304 1626520 5696056 1626552 5696056 -1627672 5692304 1624280 5693272 1626520 5696056 1626552 5696056 -1627776 5692304 1626768 5691344 1627672 5692304 1626552 5696056 -1627672 5692304 1626768 5691344 1624280 5693272 1626520 5696056 -1624280 5693272 1627672 5692304 1626768 5691344 1624232 5693160 -1627776 5692304 1627672 5692304 1626552 5696056 1626600 5696072 -1627776 5692304 1627672 5692304 1626600 5696072 1626688 5696104 -1627672 5692304 1626520 5696056 1626552 5696056 1626600 5696072 -1627776 5692304 1626768 5691344 1627672 5692304 1626688 5696104 -1627776 5692304 1627672 5692304 1626688 5696104 1628000 5692352 -1626688 5696104 1626864 5696192 1628000 5692352 1627672 5692304 -1627672 5692304 1626600 5696072 1626688 5696104 1628000 5692352 -1627776 5692304 1626768 5691344 1627672 5692304 1628000 5692352 -1627672 5692304 1626552 5696056 1626600 5696072 1626688 5696104 -1626768 5691344 1627672 5692304 1627776 5692304 1626872 5691384 -1627672 5692304 1628000 5692352 1627776 5692304 1626872 5691384 -1626768 5691344 1624280 5693272 1627672 5692304 1626872 5691384 -1627776 5692304 1627624 5691896 1626872 5691384 1627672 5692304 -1627776 5692304 1627624 5691896 1627672 5692304 1628000 5692352 -1627776 5692304 1627944 5692096 1627624 5691896 1627672 5692304 -1627624 5691896 1626992 5691384 1626872 5691384 1627672 5692304 -1626872 5691384 1626768 5691344 1627672 5692304 1627624 5691896 -1627672 5692304 1627288 5692400 1624280 5693272 1626520 5696056 -1624280 5693272 1626488 5696072 1626520 5696056 1627288 5692400 -1627672 5692304 1627288 5692400 1626520 5696056 1626552 5696056 -1627672 5692304 1627288 5692400 1626552 5696056 1626600 5696072 -1627288 5692400 1626520 5696056 1626552 5696056 1626600 5696072 -1627288 5692400 1624280 5693272 1626520 5696056 1626552 5696056 -1627672 5692304 1626768 5691344 1627288 5692400 1626600 5696072 -1626768 5691344 1627288 5692400 1627672 5692304 1626872 5691384 -1627288 5692400 1626600 5696072 1627672 5692304 1626872 5691384 -1627288 5692400 1626768 5691344 1624280 5693272 1626520 5696056 -1626768 5691344 1624280 5693272 1627288 5692400 1626872 5691384 -1624280 5693272 1627288 5692400 1626768 5691344 1624232 5693160 -1624280 5693272 1626520 5696056 1627288 5692400 1624232 5693160 -1627288 5692400 1626872 5691384 1626768 5691344 1624232 5693160 -1626768 5691344 1624120 5692536 1624232 5693160 1627288 5692400 -1624120 5692536 1624072 5692800 1624232 5693160 1627288 5692400 -1626768 5691344 1624120 5692536 1627288 5692400 1626872 5691384 -1624232 5693160 1624280 5693272 1627288 5692400 1624120 5692536 -1626768 5691344 1626496 5691144 1624120 5692536 1627288 5692400 -1627672 5692304 1627288 5692400 1626600 5696072 1626688 5696104 -1627672 5692304 1627288 5692400 1626688 5696104 1628000 5692352 -1626688 5696104 1626864 5696192 1628000 5692352 1627288 5692400 -1626864 5696192 1626896 5696216 1628000 5692352 1627288 5692400 -1628000 5692352 1627672 5692304 1627288 5692400 1626864 5696192 -1627288 5692400 1626552 5696056 1626600 5696072 1626688 5696104 -1627672 5692304 1626872 5691384 1627288 5692400 1628000 5692352 -1626688 5696104 1626776 5696152 1626864 5696192 1627288 5692400 -1627672 5692304 1627288 5692400 1628000 5692352 1627776 5692304 -1627288 5692400 1626600 5696072 1626688 5696104 1626864 5696192 -1627672 5692304 1627624 5691896 1626872 5691384 1627288 5692400 -1627672 5692304 1627624 5691896 1627288 5692400 1628000 5692352 -1626872 5691384 1626768 5691344 1627288 5692400 1627624 5691896 -1627672 5692304 1627776 5692304 1627624 5691896 1627288 5692400 -1627624 5691896 1626992 5691384 1626872 5691384 1627288 5692400 -1627624 5691896 1627168 5691336 1626992 5691384 1627288 5692400 -1626872 5691384 1626768 5691344 1627288 5692400 1626992 5691384 -1627624 5691896 1626992 5691384 1627288 5692400 1627672 5692304 -1626768 5691344 1627224 5692376 1627288 5692400 1626872 5691384 -1627288 5692400 1626992 5691384 1626872 5691384 1627224 5692376 -1627224 5692376 1624120 5692536 1627288 5692400 1626992 5691384 -1626872 5691384 1626768 5691344 1627224 5692376 1626992 5691384 -1626768 5691344 1624120 5692536 1627224 5692376 1626872 5691384 -1627288 5692400 1627624 5691896 1626992 5691384 1627224 5692376 -1627624 5691896 1627168 5691336 1626992 5691384 1627224 5692376 -1626992 5691384 1626872 5691384 1627224 5692376 1627624 5691896 -1627288 5692400 1627624 5691896 1627224 5692376 1624120 5692536 -1627288 5692400 1627224 5692376 1624120 5692536 1624232 5693160 -1624120 5692536 1624072 5692800 1624232 5693160 1627224 5692376 -1627288 5692400 1627624 5691896 1627224 5692376 1624232 5693160 -1627224 5692376 1626768 5691344 1624120 5692536 1624232 5693160 -1627288 5692400 1627224 5692376 1624232 5693160 1624280 5693272 -1627288 5692400 1627224 5692376 1624280 5693272 1626520 5696056 -1624280 5693272 1626488 5696072 1626520 5696056 1627224 5692376 -1627288 5692400 1627224 5692376 1626520 5696056 1626552 5696056 -1627288 5692400 1627224 5692376 1626552 5696056 1626600 5696072 -1627224 5692376 1624280 5693272 1626520 5696056 1626552 5696056 -1627288 5692400 1627624 5691896 1627224 5692376 1626552 5696056 -1627224 5692376 1624232 5693160 1624280 5693272 1626520 5696056 -1627224 5692376 1624120 5692536 1624232 5693160 1624280 5693272 -1624120 5692536 1627224 5692376 1626768 5691344 1626496 5691144 -1624120 5692536 1624232 5693160 1627224 5692376 1626496 5691144 -1627224 5692376 1626872 5691384 1626768 5691344 1626496 5691144 -1624120 5692536 1627224 5692376 1626496 5691144 1624120 5692440 -1624120 5692536 1624232 5693160 1627224 5692376 1624120 5692440 -1627224 5692376 1626768 5691344 1626496 5691144 1624120 5692440 -1626496 5691144 1626344 5691040 1624120 5692440 1627224 5692376 -1627288 5692400 1627672 5692304 1627624 5691896 1627224 5692376 -1626496 5691144 1627120 5692256 1627224 5692376 1626768 5691344 -1626496 5691144 1624120 5692440 1627120 5692256 1626768 5691344 -1627120 5692256 1624120 5692440 1627224 5692376 1626768 5691344 -1627224 5692376 1626872 5691384 1626768 5691344 1627120 5692256 -1627224 5692376 1626992 5691384 1626872 5691384 1627120 5692256 -1627224 5692376 1627624 5691896 1626992 5691384 1627120 5692256 -1627624 5691896 1627168 5691336 1626992 5691384 1627120 5692256 -1626992 5691384 1626872 5691384 1627120 5692256 1627624 5691896 -1627224 5692376 1627624 5691896 1627120 5692256 1624120 5692440 -1626872 5691384 1626768 5691344 1627120 5692256 1626992 5691384 -1627224 5692376 1627288 5692400 1627624 5691896 1627120 5692256 -1627624 5691896 1626992 5691384 1627120 5692256 1627288 5692400 -1627224 5692376 1627288 5692400 1627120 5692256 1624120 5692440 -1626768 5691344 1626496 5691144 1627120 5692256 1626872 5691384 -1627224 5692376 1627120 5692256 1624120 5692440 1624120 5692536 -1627224 5692376 1627120 5692256 1624120 5692536 1624232 5693160 -1624120 5692536 1624072 5692800 1624232 5693160 1627120 5692256 -1627224 5692376 1627288 5692400 1627120 5692256 1624232 5693160 -1627120 5692256 1626496 5691144 1624120 5692440 1624120 5692536 -1627224 5692376 1627120 5692256 1624232 5693160 1624280 5693272 -1627120 5692256 1624120 5692536 1624232 5693160 1624280 5693272 -1627224 5692376 1627288 5692400 1627120 5692256 1624280 5693272 -1627224 5692376 1627120 5692256 1624280 5693272 1626520 5696056 -1627120 5692256 1624120 5692440 1624120 5692536 1624232 5693160 -1624120 5692440 1627120 5692256 1626496 5691144 1626344 5691040 -1627288 5692400 1627672 5692304 1627624 5691896 1627120 5692256 -1627120 5692256 1627016 5692064 1626496 5691144 1624120 5692440 -1627016 5692064 1626768 5691344 1626496 5691144 1624120 5692440 -1627120 5692256 1627016 5692064 1624120 5692440 1624120 5692536 -1627016 5692064 1626496 5691144 1624120 5692440 1624120 5692536 -1627120 5692256 1626768 5691344 1627016 5692064 1624120 5692536 -1626768 5691344 1627016 5692064 1627120 5692256 1626872 5691384 -1627120 5692256 1626992 5691384 1626872 5691384 1627016 5692064 -1627120 5692256 1627624 5691896 1626992 5691384 1627016 5692064 -1627624 5691896 1627168 5691336 1626992 5691384 1627016 5692064 -1627624 5691896 1627304 5691224 1627168 5691336 1627016 5692064 -1627120 5692256 1627288 5692400 1627624 5691896 1627016 5692064 -1627624 5691896 1627168 5691336 1627016 5692064 1627120 5692256 -1626992 5691384 1626872 5691384 1627016 5692064 1627168 5691336 -1627016 5692064 1624120 5692536 1627120 5692256 1627624 5691896 -1626768 5691344 1626496 5691144 1627016 5692064 1626872 5691384 -1626872 5691384 1626768 5691344 1627016 5692064 1626992 5691384 -1627120 5692256 1627016 5692064 1624120 5692536 1624232 5693160 -1624120 5692536 1624072 5692800 1624232 5693160 1627016 5692064 -1627120 5692256 1627016 5692064 1624232 5693160 1624280 5693272 -1627016 5692064 1624120 5692440 1624120 5692536 1624232 5693160 -1627120 5692256 1627624 5691896 1627016 5692064 1624280 5693272 -1627120 5692256 1627016 5692064 1624280 5693272 1627224 5692376 -1627016 5692064 1624120 5692536 1624232 5693160 1624280 5693272 -1626496 5691144 1626344 5691040 1624120 5692440 1627016 5692064 -1624120 5692440 1624120 5692536 1627016 5692064 1626344 5691040 -1626496 5691144 1626344 5691040 1627016 5692064 1626768 5691344 -1626344 5691040 1625840 5690768 1624120 5692440 1627016 5692064 -1627016 5692064 1626984 5691928 1626768 5691344 1626496 5691144 -1627016 5692064 1626984 5691928 1626496 5691144 1626344 5691040 -1627016 5692064 1626872 5691384 1626984 5691928 1626344 5691040 -1626984 5691928 1626768 5691344 1626496 5691144 1626344 5691040 -1626984 5691928 1626872 5691384 1626768 5691344 1626496 5691144 -1626872 5691384 1626984 5691928 1627016 5692064 1626992 5691384 -1626984 5691928 1626344 5691040 1627016 5692064 1626992 5691384 -1627016 5692064 1627168 5691336 1626992 5691384 1626984 5691928 -1627016 5692064 1627168 5691336 1626984 5691928 1626344 5691040 -1627016 5692064 1627624 5691896 1627168 5691336 1626984 5691928 -1627624 5691896 1627304 5691224 1627168 5691336 1626984 5691928 -1627016 5692064 1627624 5691896 1626984 5691928 1626344 5691040 -1627016 5692064 1627120 5692256 1627624 5691896 1626984 5691928 -1627168 5691336 1626992 5691384 1626984 5691928 1627624 5691896 -1626872 5691384 1626768 5691344 1626984 5691928 1626992 5691384 -1626992 5691384 1626872 5691384 1626984 5691928 1627168 5691336 -1627016 5692064 1626984 5691928 1626344 5691040 1624120 5692440 -1627016 5692064 1626984 5691928 1624120 5692440 1624120 5692536 -1626984 5691928 1626496 5691144 1626344 5691040 1624120 5692440 -1627016 5692064 1627624 5691896 1626984 5691928 1624120 5692440 -1626344 5691040 1625840 5690768 1624120 5692440 1626984 5691928 -1626984 5691928 1626976 5691736 1626872 5691384 1626768 5691344 -1626984 5691928 1626976 5691736 1626768 5691344 1626496 5691144 -1626984 5691928 1626992 5691384 1626976 5691736 1626768 5691344 -1626976 5691736 1626992 5691384 1626872 5691384 1626768 5691344 -1626992 5691384 1626976 5691736 1626984 5691928 1627168 5691336 -1626984 5691928 1627624 5691896 1627168 5691336 1626976 5691736 -1627624 5691896 1627304 5691224 1627168 5691336 1626976 5691736 -1626984 5691928 1627016 5692064 1627624 5691896 1626976 5691736 -1626976 5691736 1626768 5691344 1626984 5691928 1627624 5691896 -1626992 5691384 1626872 5691384 1626976 5691736 1627168 5691336 -1627168 5691336 1626992 5691384 1626976 5691736 1627624 5691896 -1627168 5691336 1627000 5691696 1627624 5691896 1627304 5691224 -1627624 5691896 1627000 5691696 1626976 5691736 1626984 5691928 -1627624 5691896 1627000 5691696 1626984 5691928 1627016 5692064 -1627000 5691696 1627168 5691336 1626976 5691736 1626984 5691928 -1627624 5691896 1627168 5691336 1627000 5691696 1626984 5691928 -1626976 5691736 1627000 5691696 1627168 5691336 1626992 5691384 -1626976 5691736 1626984 5691928 1627000 5691696 1626992 5691384 -1626976 5691736 1627000 5691696 1626992 5691384 1626872 5691384 -1626976 5691736 1627000 5691696 1626872 5691384 1626768 5691344 -1626976 5691736 1626984 5691928 1627000 5691696 1626872 5691384 -1627000 5691696 1627624 5691896 1627168 5691336 1626992 5691384 -1627000 5691696 1627168 5691336 1626992 5691384 1626872 5691384 -1627168 5691336 1627032 5691656 1627624 5691896 1627304 5691224 -1627000 5691696 1627032 5691656 1627168 5691336 1626992 5691384 -1627000 5691696 1627624 5691896 1627032 5691656 1626992 5691384 -1627624 5691896 1627032 5691656 1627000 5691696 1626984 5691928 -1627624 5691896 1627032 5691656 1626984 5691928 1627016 5692064 -1627000 5691696 1626976 5691736 1626984 5691928 1627032 5691656 -1627032 5691656 1626992 5691384 1627000 5691696 1626984 5691928 -1627032 5691656 1627624 5691896 1627168 5691336 1626992 5691384 -1627624 5691896 1627168 5691336 1627032 5691656 1626984 5691928 -1627000 5691696 1627032 5691656 1626992 5691384 1626872 5691384 -1627000 5691696 1627032 5691656 1626872 5691384 1626976 5691736 -1627032 5691656 1627168 5691336 1626992 5691384 1626872 5691384 -1627000 5691696 1626984 5691928 1627032 5691656 1626872 5691384 -1627168 5691336 1627088 5691640 1627624 5691896 1627304 5691224 -1627032 5691656 1627088 5691640 1627168 5691336 1626992 5691384 -1627032 5691656 1627088 5691640 1626992 5691384 1626872 5691384 -1627032 5691656 1627624 5691896 1627088 5691640 1626992 5691384 -1627624 5691896 1627088 5691640 1627032 5691656 1626984 5691928 -1627624 5691896 1627088 5691640 1626984 5691928 1627016 5692064 -1627032 5691656 1627000 5691696 1626984 5691928 1627088 5691640 -1627000 5691696 1626976 5691736 1626984 5691928 1627088 5691640 -1627000 5691696 1626976 5691736 1627088 5691640 1627032 5691656 -1627088 5691640 1626992 5691384 1627032 5691656 1627000 5691696 -1626984 5691928 1627624 5691896 1627088 5691640 1626976 5691736 -1627088 5691640 1627624 5691896 1627168 5691336 1626992 5691384 -1627624 5691896 1627168 5691336 1627088 5691640 1626984 5691928 -1627168 5691336 1627248 5691688 1627624 5691896 1627304 5691224 -1627088 5691640 1627248 5691688 1627168 5691336 1626992 5691384 -1627624 5691896 1627248 5691688 1627088 5691640 1626984 5691928 -1627624 5691896 1627248 5691688 1626984 5691928 1627016 5692064 -1627624 5691896 1627248 5691688 1627016 5692064 1627120 5692256 -1627088 5691640 1626976 5691736 1626984 5691928 1627248 5691688 -1627088 5691640 1627000 5691696 1626976 5691736 1627248 5691688 -1627088 5691640 1627032 5691656 1627000 5691696 1627248 5691688 -1626976 5691736 1626984 5691928 1627248 5691688 1627000 5691696 -1627248 5691688 1627168 5691336 1627088 5691640 1627000 5691696 -1627248 5691688 1626976 5691736 1626984 5691928 1627016 5692064 -1627168 5691336 1627088 5691640 1627248 5691688 1627304 5691224 -1627248 5691688 1627016 5692064 1627624 5691896 1627304 5691224 -1627624 5691896 1627368 5691192 1627304 5691224 1627248 5691688 -1627304 5691224 1627168 5691336 1627248 5691688 1627368 5691192 -1627624 5691896 1627368 5691192 1627248 5691688 1627016 5692064 -1627624 5691896 1627944 5692096 1627368 5691192 1627248 5691688 -1626464 5689664 1627776 5690832 1630232 5692312 1630448 5692312 -1626464 5689664 1627352 5691104 1627776 5690832 1630448 5692312 -1627776 5690832 1627352 5691104 1630232 5692312 1630448 5692312 -1626464 5689664 1627776 5690832 1630448 5692312 1626096 5687664 -1630448 5692312 1626096 5687632 1626096 5687664 1627776 5690832 -1630448 5692312 1630608 5692360 1626096 5687632 1627776 5690832 -1626464 5689664 1627352 5691104 1627776 5690832 1626096 5687664 -1626096 5687664 1626464 5689664 1627776 5690832 1626096 5687632 -1627776 5690832 1630232 5692312 1630448 5692312 1626096 5687632 -1627352 5691104 1627776 5690832 1626464 5689664 1627248 5691016 -1627352 5691104 1630232 5692312 1627776 5690832 1627248 5691016 -1627776 5690832 1626096 5687664 1626464 5689664 1627248 5691016 -1626464 5689664 1626464 5689704 1627248 5691016 1627776 5690832 -1626464 5689664 1626464 5689704 1627776 5690832 1626096 5687664 -1626464 5689704 1626976 5690872 1627248 5691016 1627776 5690832 -1626464 5689704 1626976 5690872 1627776 5690832 1626464 5689664 -1627248 5691016 1627352 5691104 1627776 5690832 1626976 5690872 -1626464 5689664 1627776 5690832 1626096 5687664 1626424 5689616 -1626464 5689704 1626824 5690816 1626976 5690872 1627776 5690832 -1630232 5692312 1627776 5690832 1627352 5691104 1630136 5692352 -1627776 5690832 1627248 5691016 1627352 5691104 1630136 5692352 -1630232 5692312 1630448 5692312 1627776 5690832 1630136 5692352 -1627352 5691104 1627944 5692096 1630136 5692352 1627776 5690832 -1627944 5692096 1628120 5692240 1630136 5692352 1627776 5690832 -1627352 5691104 1627944 5692096 1627776 5690832 1627248 5691016 -1627352 5691104 1627368 5691192 1627944 5692096 1627776 5690832 -1627368 5691192 1627624 5691896 1627944 5692096 1627776 5690832 -1627352 5691104 1627368 5691192 1627776 5690832 1627248 5691016 -1627368 5691192 1627248 5691688 1627624 5691896 1627776 5690832 -1627368 5691192 1627624 5691896 1627776 5690832 1627352 5691104 -1627944 5692096 1628120 5692240 1627776 5690832 1627624 5691896 -1628120 5692240 1629944 5692528 1630136 5692352 1627776 5690832 -1630136 5692352 1630232 5692312 1627776 5690832 1628120 5692240 -1626096 5687632 1627824 5690744 1630448 5692312 1630608 5692360 -1627776 5690832 1627824 5690744 1626096 5687632 1626096 5687664 -1627776 5690832 1630448 5692312 1627824 5690744 1626096 5687664 -1627824 5690744 1630448 5692312 1626096 5687632 1626096 5687664 -1627776 5690832 1627824 5690744 1626096 5687664 1626464 5689664 -1627824 5690744 1626096 5687632 1626096 5687664 1626464 5689664 -1627776 5690832 1627824 5690744 1626464 5689664 1626464 5689704 -1627776 5690832 1630448 5692312 1627824 5690744 1626464 5689704 -1627824 5690744 1626096 5687664 1626464 5689664 1626464 5689704 -1627776 5690832 1627824 5690744 1626464 5689704 1626976 5690872 -1627824 5690744 1626464 5689664 1626464 5689704 1626976 5690872 -1627776 5690832 1630448 5692312 1627824 5690744 1626976 5690872 -1627776 5690832 1627824 5690744 1626976 5690872 1627248 5691016 -1627776 5690832 1630448 5692312 1627824 5690744 1627248 5691016 -1627824 5690744 1626464 5689704 1626976 5690872 1627248 5691016 -1630448 5692312 1627824 5690744 1627776 5690832 1630232 5692312 -1627824 5690744 1627248 5691016 1627776 5690832 1630232 5692312 -1627776 5690832 1630136 5692352 1630232 5692312 1627824 5690744 -1627776 5690832 1630136 5692352 1627824 5690744 1627248 5691016 -1630448 5692312 1626096 5687632 1627824 5690744 1630232 5692312 -1630232 5692312 1630448 5692312 1627824 5690744 1630136 5692352 -1627776 5690832 1627824 5690744 1627248 5691016 1627352 5691104 -1626096 5687664 1626424 5689616 1626464 5689664 1627824 5690744 -1626464 5689704 1626824 5690816 1626976 5690872 1627824 5690744 -1627776 5690832 1628120 5692240 1630136 5692352 1627824 5690744 -1627776 5690832 1627944 5692096 1628120 5692240 1627824 5690744 -1627776 5690832 1628120 5692240 1627824 5690744 1627248 5691016 -1630136 5692352 1630232 5692312 1627824 5690744 1628120 5692240 -1628120 5692240 1629944 5692528 1630136 5692352 1627824 5690744 -1626096 5687632 1627856 5690720 1630448 5692312 1630608 5692360 -1626096 5687632 1627856 5690720 1630608 5692360 1626048 5687512 -1627824 5690744 1627856 5690720 1626096 5687632 1626096 5687664 -1627824 5690744 1627856 5690720 1626096 5687664 1626464 5689664 -1627856 5690720 1626096 5687632 1626096 5687664 1626464 5689664 -1627824 5690744 1630448 5692312 1627856 5690720 1626464 5689664 -1630448 5692312 1627856 5690720 1627824 5690744 1630232 5692312 -1627856 5690720 1626464 5689664 1627824 5690744 1630232 5692312 -1626096 5687632 1626096 5687664 1627856 5690720 1630608 5692360 -1627856 5690720 1630232 5692312 1630448 5692312 1630608 5692360 -1627824 5690744 1627856 5690720 1626464 5689664 1626464 5689704 -1627856 5690720 1626096 5687664 1626464 5689664 1626464 5689704 -1627824 5690744 1627856 5690720 1626464 5689704 1626976 5690872 -1627824 5690744 1630232 5692312 1627856 5690720 1626464 5689704 -1627824 5690744 1630136 5692352 1630232 5692312 1627856 5690720 -1627824 5690744 1628120 5692240 1630136 5692352 1627856 5690720 -1627824 5690744 1628120 5692240 1627856 5690720 1626464 5689704 -1630232 5692312 1630448 5692312 1627856 5690720 1630136 5692352 -1630136 5692352 1630232 5692312 1627856 5690720 1628120 5692240 -1626096 5687664 1626424 5689616 1626464 5689664 1627856 5690720 -1628120 5692240 1629944 5692528 1630136 5692352 1627856 5690720 -1627824 5690744 1627776 5690832 1628120 5692240 1627856 5690720 -1627776 5690832 1627944 5692096 1628120 5692240 1627856 5690720 -1628120 5692240 1630136 5692352 1627856 5690720 1627944 5692096 -1627824 5690744 1627776 5690832 1627856 5690720 1626464 5689704 -1627776 5690832 1627624 5691896 1627944 5692096 1627856 5690720 -1627776 5690832 1627944 5692096 1627856 5690720 1627824 5690744 -1626096 5687632 1627944 5690696 1630608 5692360 1626048 5687512 -1630608 5692360 1627944 5690696 1627856 5690720 1630448 5692312 -1627856 5690720 1627944 5690696 1626096 5687632 1626096 5687664 -1627856 5690720 1627944 5690696 1626096 5687664 1626464 5689664 -1627856 5690720 1627944 5690696 1626464 5689664 1626464 5689704 -1627944 5690696 1626096 5687632 1626096 5687664 1626464 5689664 -1627944 5690696 1626464 5689664 1627856 5690720 1630448 5692312 -1627856 5690720 1630232 5692312 1630448 5692312 1627944 5690696 -1630448 5692312 1630608 5692360 1627944 5690696 1630232 5692312 -1627856 5690720 1630136 5692352 1630232 5692312 1627944 5690696 -1627856 5690720 1630136 5692352 1627944 5690696 1626464 5689664 -1630232 5692312 1630448 5692312 1627944 5690696 1630136 5692352 -1627944 5690696 1630608 5692360 1626096 5687632 1626096 5687664 -1630608 5692360 1626096 5687632 1627944 5690696 1630448 5692312 -1627856 5690720 1628120 5692240 1630136 5692352 1627944 5690696 -1627856 5690720 1627944 5692096 1628120 5692240 1627944 5690696 -1627856 5690720 1627776 5690832 1627944 5692096 1627944 5690696 -1627944 5692096 1628120 5692240 1627944 5690696 1627776 5690832 -1630136 5692352 1630232 5692312 1627944 5690696 1628120 5692240 -1627856 5690720 1627776 5690832 1627944 5690696 1626464 5689664 -1628120 5692240 1630136 5692352 1627944 5690696 1627944 5692096 -1626096 5687664 1626424 5689616 1626464 5689664 1627944 5690696 -1627776 5690832 1627624 5691896 1627944 5692096 1627944 5690696 -1628120 5692240 1629944 5692528 1630136 5692352 1627944 5690696 -1627856 5690720 1627824 5690744 1627776 5690832 1627944 5690696 -1626096 5687632 1628024 5690712 1630608 5692360 1626048 5687512 -1627944 5690696 1628024 5690712 1626096 5687632 1626096 5687664 -1627944 5690696 1628024 5690712 1626096 5687664 1626464 5689664 -1627944 5690696 1628024 5690712 1626464 5689664 1627856 5690720 -1628024 5690712 1626096 5687632 1626096 5687664 1626464 5689664 -1627944 5690696 1630608 5692360 1628024 5690712 1626464 5689664 -1630608 5692360 1628024 5690712 1627944 5690696 1630448 5692312 -1627944 5690696 1630232 5692312 1630448 5692312 1628024 5690712 -1627944 5690696 1630136 5692352 1630232 5692312 1628024 5690712 -1630232 5692312 1630448 5692312 1628024 5690712 1630136 5692352 -1627944 5690696 1628120 5692240 1630136 5692352 1628024 5690712 -1630136 5692352 1630232 5692312 1628024 5690712 1628120 5692240 -1628024 5690712 1626464 5689664 1627944 5690696 1628120 5692240 -1630448 5692312 1630608 5692360 1628024 5690712 1630232 5692312 -1628024 5690712 1630608 5692360 1626096 5687632 1626096 5687664 -1630608 5692360 1626096 5687632 1628024 5690712 1630448 5692312 -1627944 5690696 1627944 5692096 1628120 5692240 1628024 5690712 -1627944 5690696 1627776 5690832 1627944 5692096 1628024 5690712 -1627944 5690696 1627856 5690720 1627776 5690832 1628024 5690712 -1628120 5692240 1630136 5692352 1628024 5690712 1627944 5692096 -1627944 5690696 1627776 5690832 1628024 5690712 1626464 5689664 -1627944 5692096 1628120 5692240 1628024 5690712 1627776 5690832 -1626096 5687664 1626424 5689616 1626464 5689664 1628024 5690712 -1627776 5690832 1627624 5691896 1627944 5692096 1628024 5690712 -1628120 5692240 1629944 5692528 1630136 5692352 1628024 5690712 -1626096 5687632 1628112 5690744 1630608 5692360 1626048 5687512 -1628024 5690712 1628112 5690744 1626096 5687632 1626096 5687664 -1628024 5690712 1628112 5690744 1626096 5687664 1626464 5689664 -1628024 5690712 1630608 5692360 1628112 5690744 1626096 5687664 -1630608 5692360 1628112 5690744 1628024 5690712 1630448 5692312 -1628024 5690712 1630232 5692312 1630448 5692312 1628112 5690744 -1628024 5690712 1630136 5692352 1630232 5692312 1628112 5690744 -1628024 5690712 1628120 5692240 1630136 5692352 1628112 5690744 -1630136 5692352 1630232 5692312 1628112 5690744 1628120 5692240 -1628024 5690712 1627944 5692096 1628120 5692240 1628112 5690744 -1628120 5692240 1630136 5692352 1628112 5690744 1627944 5692096 -1630232 5692312 1630448 5692312 1628112 5690744 1630136 5692352 -1628112 5690744 1626096 5687664 1628024 5690712 1627944 5692096 -1630448 5692312 1630608 5692360 1628112 5690744 1630232 5692312 -1628112 5690744 1630608 5692360 1626096 5687632 1626096 5687664 -1630608 5692360 1626096 5687632 1628112 5690744 1630448 5692312 -1628024 5690712 1627776 5690832 1627944 5692096 1628112 5690744 -1628024 5690712 1627944 5690696 1627776 5690832 1628112 5690744 -1627944 5692096 1628120 5692240 1628112 5690744 1627776 5690832 -1628024 5690712 1627776 5690832 1628112 5690744 1626096 5687664 -1627776 5690832 1627624 5691896 1627944 5692096 1628112 5690744 -1627776 5690832 1627368 5691192 1627624 5691896 1628112 5690744 -1627944 5692096 1628120 5692240 1628112 5690744 1627624 5691896 -1627776 5690832 1627624 5691896 1628112 5690744 1628024 5690712 -1628120 5692240 1629944 5692528 1630136 5692352 1628112 5690744 -1628112 5690744 1628144 5690776 1630136 5692352 1630232 5692312 -1628120 5692240 1628144 5690776 1628112 5690744 1627944 5692096 -1628112 5690744 1627624 5691896 1627944 5692096 1628144 5690776 -1627944 5692096 1628120 5692240 1628144 5690776 1627624 5691896 -1628112 5690744 1628144 5690776 1630232 5692312 1630448 5692312 -1628144 5690776 1630136 5692352 1630232 5692312 1630448 5692312 -1628112 5690744 1628144 5690776 1630448 5692312 1630608 5692360 -1628144 5690776 1630232 5692312 1630448 5692312 1630608 5692360 -1628112 5690744 1627624 5691896 1628144 5690776 1630608 5692360 -1628112 5690744 1628144 5690776 1630608 5692360 1626096 5687632 -1628144 5690776 1628120 5692240 1630136 5692352 1630232 5692312 -1628120 5692240 1630136 5692352 1628144 5690776 1627944 5692096 -1628112 5690744 1627776 5690832 1627624 5691896 1628144 5690776 -1627776 5690832 1627368 5691192 1627624 5691896 1628144 5690776 -1627624 5691896 1627944 5692096 1628144 5690776 1627776 5690832 -1628112 5690744 1627776 5690832 1628144 5690776 1630608 5692360 -1628112 5690744 1628024 5690712 1627776 5690832 1628144 5690776 -1628024 5690712 1627944 5690696 1627776 5690832 1628144 5690776 -1628112 5690744 1628024 5690712 1628144 5690776 1630608 5692360 -1627776 5690832 1627624 5691896 1628144 5690776 1628024 5690712 -1630136 5692352 1628144 5690776 1628120 5692240 1629944 5692528 -1628120 5692240 1629840 5692680 1629944 5692528 1628144 5690776 -1630136 5692352 1630232 5692312 1628144 5690776 1629944 5692528 -1628144 5690776 1627944 5692096 1628120 5692240 1629944 5692528 -1629944 5692528 1628144 5690824 1628120 5692240 1629840 5692680 -1628120 5692240 1628144 5690824 1628144 5690776 1627944 5692096 -1628144 5690776 1627624 5691896 1627944 5692096 1628144 5690824 -1628144 5690776 1627776 5690832 1627624 5691896 1628144 5690824 -1627776 5690832 1627368 5691192 1627624 5691896 1628144 5690824 -1627624 5691896 1627944 5692096 1628144 5690824 1627776 5690832 -1628144 5690824 1629944 5692528 1628144 5690776 1627776 5690832 -1627944 5692096 1628120 5692240 1628144 5690824 1627624 5691896 -1628120 5692240 1629944 5692528 1628144 5690824 1627944 5692096 -1628144 5690776 1628024 5690712 1627776 5690832 1628144 5690824 -1628024 5690712 1627944 5690696 1627776 5690832 1628144 5690824 -1627776 5690832 1627624 5691896 1628144 5690824 1628024 5690712 -1628144 5690776 1628024 5690712 1628144 5690824 1629944 5692528 -1628144 5690776 1628112 5690744 1628024 5690712 1628144 5690824 -1628144 5690776 1628112 5690744 1628144 5690824 1629944 5692528 -1628024 5690712 1627776 5690832 1628144 5690824 1628112 5690744 -1628144 5690776 1628144 5690824 1629944 5692528 1630136 5692352 -1628144 5690776 1628144 5690824 1630136 5692352 1630232 5692312 -1628144 5690776 1628144 5690824 1630232 5692312 1630448 5692312 -1628144 5690776 1628112 5690744 1628144 5690824 1630232 5692312 -1628144 5690824 1628120 5692240 1629944 5692528 1630136 5692352 -1628144 5690824 1629944 5692528 1630136 5692352 1630232 5692312 -1627624 5691896 1628112 5690864 1627776 5690832 1627368 5691192 -1627776 5690832 1628112 5690864 1628144 5690824 1628024 5690712 -1627776 5690832 1628112 5690864 1628024 5690712 1627944 5690696 -1627776 5690832 1628112 5690864 1627944 5690696 1627856 5690720 -1628112 5690864 1628024 5690712 1627944 5690696 1627856 5690720 -1628112 5690864 1628144 5690824 1628024 5690712 1627944 5690696 -1628144 5690824 1628112 5690864 1627624 5691896 1627944 5692096 -1628144 5690824 1628112 5690864 1627944 5692096 1628120 5692240 -1628112 5690864 1627624 5691896 1627944 5692096 1628120 5692240 -1628112 5690864 1628120 5692240 1628144 5690824 1628024 5690712 -1628144 5690824 1628112 5690864 1628120 5692240 1629944 5692528 -1627624 5691896 1627944 5692096 1628112 5690864 1627368 5691192 -1628112 5690864 1627856 5690720 1627776 5690832 1627368 5691192 -1627624 5691896 1628112 5690864 1627368 5691192 1627248 5691688 -1627776 5690832 1627352 5691104 1627368 5691192 1628112 5690864 -1628144 5690824 1628112 5690744 1628024 5690712 1628112 5690864 -1628024 5690712 1627944 5690696 1628112 5690864 1628112 5690744 -1628144 5690824 1628112 5690744 1628112 5690864 1628120 5692240 -1628144 5690824 1628144 5690776 1628112 5690744 1628112 5690864 -1627776 5690832 1628112 5690864 1627856 5690720 1627824 5690744 -1627368 5691192 1628064 5690904 1628112 5690864 1627776 5690832 -1628112 5690864 1628064 5690904 1627624 5691896 1627944 5692096 -1628112 5690864 1628064 5690904 1627944 5692096 1628120 5692240 -1628112 5690864 1628064 5690904 1628120 5692240 1628144 5690824 -1628064 5690904 1627624 5691896 1627944 5692096 1628120 5692240 -1628064 5690904 1628120 5692240 1628112 5690864 1627776 5690832 -1628112 5690864 1627856 5690720 1627776 5690832 1628064 5690904 -1627776 5690832 1627368 5691192 1628064 5690904 1627856 5690720 -1628112 5690864 1627944 5690696 1627856 5690720 1628064 5690904 -1628112 5690864 1628024 5690712 1627944 5690696 1628064 5690904 -1627944 5690696 1627856 5690720 1628064 5690904 1628024 5690712 -1628112 5690864 1628112 5690744 1628024 5690712 1628064 5690904 -1628112 5690864 1628024 5690712 1628064 5690904 1628120 5692240 -1627624 5691896 1628064 5690904 1627368 5691192 1627248 5691688 -1627368 5691192 1628064 5690904 1627776 5690832 1627352 5691104 -1627856 5690720 1627824 5690744 1627776 5690832 1628064 5690904 -1627776 5690832 1627368 5691192 1628064 5690904 1627824 5690744 -1628064 5690904 1627368 5691192 1627624 5691896 1627944 5692096 -1627856 5690720 1627824 5690744 1628064 5690904 1627944 5690696 -1627368 5691192 1627624 5691896 1628064 5690904 1627776 5690832 -1627624 5691896 1627984 5690944 1627368 5691192 1627248 5691688 -1628064 5690904 1627984 5690944 1627624 5691896 1627944 5692096 -1628064 5690904 1627984 5690944 1627944 5692096 1628120 5692240 -1627368 5691192 1627984 5690944 1628064 5690904 1627776 5690832 -1628064 5690904 1627824 5690744 1627776 5690832 1627984 5690944 -1627368 5691192 1627984 5690944 1627776 5690832 1627352 5691104 -1628064 5690904 1627856 5690720 1627824 5690744 1627984 5690944 -1627824 5690744 1627776 5690832 1627984 5690944 1627856 5690720 -1628064 5690904 1627944 5690696 1627856 5690720 1627984 5690944 -1628064 5690904 1628024 5690712 1627944 5690696 1627984 5690944 -1628064 5690904 1628112 5690864 1628024 5690712 1627984 5690944 -1627856 5690720 1627824 5690744 1627984 5690944 1627944 5690696 -1627944 5690696 1627856 5690720 1627984 5690944 1628024 5690712 -1627776 5690832 1627368 5691192 1627984 5690944 1627824 5690744 -1628064 5690904 1628024 5690712 1627984 5690944 1627944 5692096 -1627984 5690944 1627368 5691192 1627624 5691896 1627944 5692096 -1627368 5691192 1627624 5691896 1627984 5690944 1627776 5690832 -1627368 5691192 1627936 5690952 1627776 5690832 1627352 5691104 -1627776 5690832 1627936 5690952 1627984 5690944 1627824 5690744 -1627984 5690944 1627856 5690720 1627824 5690744 1627936 5690952 -1627984 5690944 1627944 5690696 1627856 5690720 1627936 5690952 -1627856 5690720 1627824 5690744 1627936 5690952 1627944 5690696 -1627984 5690944 1628024 5690712 1627944 5690696 1627936 5690952 -1627824 5690744 1627776 5690832 1627936 5690952 1627856 5690720 -1627936 5690952 1627368 5691192 1627984 5690944 1627944 5690696 -1627984 5690944 1627936 5690952 1627368 5691192 1627624 5691896 -1627368 5691192 1627248 5691688 1627624 5691896 1627936 5690952 -1627984 5690944 1627936 5690952 1627624 5691896 1627944 5692096 -1627984 5690944 1627944 5690696 1627936 5690952 1627624 5691896 -1627936 5690952 1627776 5690832 1627368 5691192 1627624 5691896 -1627776 5690832 1627368 5691192 1627936 5690952 1627824 5690744 -1627368 5691192 1627848 5690968 1627776 5690832 1627352 5691104 -1627776 5690832 1627248 5691016 1627352 5691104 1627848 5690968 -1627936 5690952 1627848 5690968 1627368 5691192 1627624 5691896 -1627368 5691192 1627248 5691688 1627624 5691896 1627848 5690968 -1627936 5690952 1627848 5690968 1627624 5691896 1627984 5690944 -1627936 5690952 1627776 5690832 1627848 5690968 1627624 5691896 -1627776 5690832 1627848 5690968 1627936 5690952 1627824 5690744 -1627368 5691192 1627624 5691896 1627848 5690968 1627352 5691104 -1627848 5690968 1627936 5690952 1627776 5690832 1627352 5691104 -1627352 5691104 1627816 5690968 1627776 5690832 1627248 5691016 -1627848 5690968 1627816 5690968 1627352 5691104 1627368 5691192 -1627848 5690968 1627816 5690968 1627368 5691192 1627624 5691896 -1627368 5691192 1627248 5691688 1627624 5691896 1627816 5690968 -1627816 5690968 1627352 5691104 1627368 5691192 1627624 5691896 -1627848 5690968 1627816 5690968 1627624 5691896 1627936 5690952 -1627848 5690968 1627776 5690832 1627816 5690968 1627624 5691896 -1627776 5690832 1627816 5690968 1627848 5690968 1627936 5690952 -1627816 5690968 1627776 5690832 1627352 5691104 1627368 5691192 -1627352 5691104 1627768 5690912 1627776 5690832 1627248 5691016 -1627816 5690968 1627768 5690912 1627352 5691104 1627368 5691192 -1627776 5690832 1627768 5690912 1627816 5690968 1627848 5690968 -1627776 5690832 1627768 5690912 1627848 5690968 1627936 5690952 -1627768 5690912 1627352 5691104 1627816 5690968 1627848 5690968 -1627776 5690832 1627352 5691104 1627768 5690912 1627848 5690968 -1629944 5692528 1628376 5691024 1628144 5690824 1628120 5692240 -1629944 5692528 1628376 5691024 1628120 5692240 1629840 5692680 -1628144 5690824 1628112 5690864 1628120 5692240 1628376 5691024 -1628112 5690864 1628064 5690904 1628120 5692240 1628376 5691024 -1628064 5690904 1627944 5692096 1628120 5692240 1628376 5691024 -1628064 5690904 1627944 5692096 1628376 5691024 1628112 5690864 -1628120 5692240 1629944 5692528 1628376 5691024 1627944 5692096 -1628112 5690864 1628064 5690904 1628376 5691024 1628144 5690824 -1628064 5690904 1627984 5690944 1627944 5692096 1628376 5691024 -1627944 5692096 1628120 5692240 1628376 5691024 1627984 5690944 -1628064 5690904 1627984 5690944 1628376 5691024 1628112 5690864 -1628144 5690824 1628376 5691024 1630136 5692352 1630232 5692312 -1628144 5690824 1628376 5691024 1630232 5692312 1628144 5690776 -1630232 5692312 1630448 5692312 1628144 5690776 1628376 5691024 -1630448 5692312 1630608 5692360 1628144 5690776 1628376 5691024 -1630448 5692312 1630608 5692360 1628376 5691024 1630232 5692312 -1630608 5692360 1628112 5690744 1628144 5690776 1628376 5691024 -1628144 5690776 1628144 5690824 1628376 5691024 1630608 5692360 -1628376 5691024 1630136 5692352 1630232 5692312 1630448 5692312 -1627984 5690944 1627624 5691896 1627944 5692096 1628376 5691024 -1627944 5692096 1628120 5692240 1628376 5691024 1627624 5691896 -1627984 5690944 1627624 5691896 1628376 5691024 1628064 5690904 -1627984 5690944 1627936 5690952 1627624 5691896 1628376 5691024 -1628376 5691024 1629944 5692528 1630136 5692352 1630232 5692312 -1629944 5692528 1630136 5692352 1628376 5691024 1628120 5692240 -1628376 5691024 1628144 5690776 1628144 5690824 1628112 5690864 -1630608 5692360 1628416 5691000 1628376 5691024 1630448 5692312 -1628376 5691024 1630232 5692312 1630448 5692312 1628416 5691000 -1630448 5692312 1630608 5692360 1628416 5691000 1630232 5692312 -1628144 5690776 1628416 5691000 1630608 5692360 1628112 5690744 -1630608 5692360 1626096 5687632 1628112 5690744 1628416 5691000 -1630608 5692360 1626048 5687512 1626096 5687632 1628416 5691000 -1628112 5690744 1628144 5690776 1628416 5691000 1626096 5687632 -1626096 5687632 1626096 5687664 1628112 5690744 1628416 5691000 -1628376 5691024 1628416 5691000 1628144 5690776 1628144 5690824 -1628376 5691024 1630136 5692352 1630232 5692312 1628416 5691000 -1630232 5692312 1630448 5692312 1628416 5691000 1630136 5692352 -1628376 5691024 1629944 5692528 1630136 5692352 1628416 5691000 -1630136 5692352 1630232 5692312 1628416 5691000 1629944 5692528 -1628376 5691024 1628120 5692240 1629944 5692528 1628416 5691000 -1628120 5692240 1629840 5692680 1629944 5692528 1628416 5691000 -1628376 5691024 1627944 5692096 1628120 5692240 1628416 5691000 -1629944 5692528 1630136 5692352 1628416 5691000 1628120 5692240 -1628416 5691000 1628144 5690824 1628376 5691024 1628120 5692240 -1628376 5691024 1628416 5691000 1628144 5690824 1628112 5690864 -1628144 5690776 1628144 5690824 1628416 5691000 1628112 5690744 -1630608 5692360 1626096 5687632 1628416 5691000 1630448 5692312 -1626096 5687632 1628496 5690968 1630608 5692360 1626048 5687512 -1628416 5691000 1628496 5690968 1626096 5687632 1628112 5690744 -1628416 5691000 1628496 5690968 1628112 5690744 1628144 5690776 -1626096 5687632 1626096 5687664 1628112 5690744 1628496 5690968 -1628496 5690968 1626096 5687632 1628112 5690744 1628144 5690776 -1626096 5687632 1628496 5690968 1626048 5687512 1626064 5687560 -1630608 5692360 1626016 5687448 1626048 5687512 1628496 5690968 -1628416 5691000 1628496 5690968 1628144 5690776 1628144 5690824 -1628416 5691000 1630608 5692360 1628496 5690968 1628144 5690776 -1630608 5692360 1628496 5690968 1628416 5691000 1630448 5692312 -1628416 5691000 1630232 5692312 1630448 5692312 1628496 5690968 -1628416 5691000 1630136 5692352 1630232 5692312 1628496 5690968 -1630232 5692312 1630448 5692312 1628496 5690968 1630136 5692352 -1628416 5691000 1629944 5692528 1630136 5692352 1628496 5690968 -1630136 5692352 1630232 5692312 1628496 5690968 1629944 5692528 -1628416 5691000 1628120 5692240 1629944 5692528 1628496 5690968 -1628120 5692240 1629840 5692680 1629944 5692528 1628496 5690968 -1629944 5692528 1630136 5692352 1628496 5690968 1628120 5692240 -1628416 5691000 1628376 5691024 1628120 5692240 1628496 5690968 -1628376 5691024 1627944 5692096 1628120 5692240 1628496 5690968 -1628120 5692240 1629944 5692528 1628496 5690968 1628376 5691024 -1628496 5690968 1628144 5690776 1628416 5691000 1628376 5691024 -1630448 5692312 1630608 5692360 1628496 5690968 1630232 5692312 -1626096 5687632 1628112 5690744 1628496 5690968 1626048 5687512 -1628496 5690968 1630448 5692312 1630608 5692360 1626048 5687512 -1628496 5690968 1628544 5690968 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1628544 5690968 -1626048 5687512 1628544 5690968 1630608 5692360 1626016 5687448 -1628496 5690968 1628544 5690968 1626096 5687632 1628112 5690744 -1628544 5690968 1626048 5687512 1626096 5687632 1628112 5690744 -1626096 5687632 1626096 5687664 1628112 5690744 1628544 5690968 -1628496 5690968 1628544 5690968 1628112 5690744 1628144 5690776 -1628496 5690968 1628544 5690968 1628144 5690776 1628416 5691000 -1628544 5690968 1626096 5687632 1628112 5690744 1628144 5690776 -1628496 5690968 1630608 5692360 1628544 5690968 1628144 5690776 -1630608 5692360 1628544 5690968 1628496 5690968 1630448 5692312 -1628496 5690968 1630232 5692312 1630448 5692312 1628544 5690968 -1628496 5690968 1630136 5692352 1630232 5692312 1628544 5690968 -1628496 5690968 1629944 5692528 1630136 5692352 1628544 5690968 -1630136 5692352 1630232 5692312 1628544 5690968 1629944 5692528 -1628496 5690968 1628120 5692240 1629944 5692528 1628544 5690968 -1629944 5692528 1630136 5692352 1628544 5690968 1628120 5692240 -1628120 5692240 1629840 5692680 1629944 5692528 1628544 5690968 -1628496 5690968 1628376 5691024 1628120 5692240 1628544 5690968 -1628376 5691024 1627944 5692096 1628120 5692240 1628544 5690968 -1628120 5692240 1629944 5692528 1628544 5690968 1628376 5691024 -1628496 5690968 1628416 5691000 1628376 5691024 1628544 5690968 -1628376 5691024 1628120 5692240 1628544 5690968 1628416 5691000 -1630232 5692312 1630448 5692312 1628544 5690968 1630136 5692352 -1628544 5690968 1628144 5690776 1628496 5690968 1628416 5691000 -1630448 5692312 1630608 5692360 1628544 5690968 1630232 5692312 -1628544 5690968 1630608 5692360 1626048 5687512 1626096 5687632 -1630608 5692360 1626048 5687512 1628544 5690968 1630448 5692312 -1626048 5687512 1628640 5690984 1630608 5692360 1626016 5687448 -1628544 5690968 1628640 5690984 1626048 5687512 1626096 5687632 -1628544 5690968 1628640 5690984 1626096 5687632 1628112 5690744 -1626096 5687632 1626096 5687664 1628112 5690744 1628640 5690984 -1626048 5687512 1626064 5687560 1626096 5687632 1628640 5690984 -1628544 5690968 1628640 5690984 1628112 5690744 1628144 5690776 -1628640 5690984 1626048 5687512 1626096 5687632 1628112 5690744 -1628544 5690968 1630608 5692360 1628640 5690984 1628112 5690744 -1630608 5692360 1628640 5690984 1628544 5690968 1630448 5692312 -1628544 5690968 1630232 5692312 1630448 5692312 1628640 5690984 -1628544 5690968 1630136 5692352 1630232 5692312 1628640 5690984 -1628544 5690968 1629944 5692528 1630136 5692352 1628640 5690984 -1628544 5690968 1628120 5692240 1629944 5692528 1628640 5690984 -1628120 5692240 1629840 5692680 1629944 5692528 1628640 5690984 -1629944 5692528 1630136 5692352 1628640 5690984 1628120 5692240 -1628544 5690968 1628376 5691024 1628120 5692240 1628640 5690984 -1628120 5692240 1629944 5692528 1628640 5690984 1628376 5691024 -1628376 5691024 1627944 5692096 1628120 5692240 1628640 5690984 -1628544 5690968 1628416 5691000 1628376 5691024 1628640 5690984 -1628376 5691024 1628120 5692240 1628640 5690984 1628416 5691000 -1628544 5690968 1628496 5690968 1628416 5691000 1628640 5690984 -1630136 5692352 1630232 5692312 1628640 5690984 1629944 5692528 -1630232 5692312 1630448 5692312 1628640 5690984 1630136 5692352 -1628640 5690984 1628112 5690744 1628544 5690968 1628416 5691000 -1630448 5692312 1630608 5692360 1628640 5690984 1630232 5692312 -1628640 5690984 1630608 5692360 1626048 5687512 1626096 5687632 -1630608 5692360 1626048 5687512 1628640 5690984 1630448 5692312 -1626048 5687512 1628728 5691008 1630608 5692360 1626016 5687448 -1628640 5690984 1628728 5691008 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1628728 5691008 -1628640 5690984 1628728 5691008 1626096 5687632 1628112 5690744 -1628640 5690984 1628728 5691008 1628112 5690744 1628544 5690968 -1626096 5687632 1626096 5687664 1628112 5690744 1628728 5691008 -1628728 5691008 1626048 5687512 1626096 5687632 1628112 5690744 -1628640 5690984 1630608 5692360 1628728 5691008 1628112 5690744 -1630608 5692360 1628728 5691008 1628640 5690984 1630448 5692312 -1628640 5690984 1630232 5692312 1630448 5692312 1628728 5691008 -1628640 5690984 1630136 5692352 1630232 5692312 1628728 5691008 -1628640 5690984 1629944 5692528 1630136 5692352 1628728 5691008 -1628640 5690984 1628120 5692240 1629944 5692528 1628728 5691008 -1628640 5690984 1628376 5691024 1628120 5692240 1628728 5691008 -1628120 5692240 1629840 5692680 1629944 5692528 1628728 5691008 -1628120 5692240 1629944 5692528 1628728 5691008 1628376 5691024 -1628376 5691024 1627944 5692096 1628120 5692240 1628728 5691008 -1628640 5690984 1628416 5691000 1628376 5691024 1628728 5691008 -1629944 5692528 1630136 5692352 1628728 5691008 1628120 5692240 -1630136 5692352 1630232 5692312 1628728 5691008 1629944 5692528 -1630232 5692312 1630448 5692312 1628728 5691008 1630136 5692352 -1628728 5691008 1628112 5690744 1628640 5690984 1628376 5691024 -1630448 5692312 1630608 5692360 1628728 5691008 1630232 5692312 -1628728 5691008 1630608 5692360 1626048 5687512 1626096 5687632 -1630608 5692360 1626048 5687512 1628728 5691008 1630448 5692312 -1626048 5687512 1628816 5691040 1630608 5692360 1626016 5687448 -1630608 5692360 1663880 5646248 1626016 5687448 1628816 5691040 -1628728 5691008 1628816 5691040 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1628816 5691040 -1628728 5691008 1628816 5691040 1626096 5687632 1628112 5690744 -1628728 5691008 1630608 5692360 1628816 5691040 1626096 5687632 -1630608 5692360 1628816 5691040 1628728 5691008 1630448 5692312 -1628728 5691008 1630232 5692312 1630448 5692312 1628816 5691040 -1628728 5691008 1630136 5692352 1630232 5692312 1628816 5691040 -1628728 5691008 1629944 5692528 1630136 5692352 1628816 5691040 -1628728 5691008 1628120 5692240 1629944 5692528 1628816 5691040 -1628120 5692240 1629840 5692680 1629944 5692528 1628816 5691040 -1628728 5691008 1628376 5691024 1628120 5692240 1628816 5691040 -1628728 5691008 1628640 5690984 1628376 5691024 1628816 5691040 -1628376 5691024 1627944 5692096 1628120 5692240 1628816 5691040 -1628120 5692240 1629944 5692528 1628816 5691040 1628376 5691024 -1629944 5692528 1630136 5692352 1628816 5691040 1628120 5692240 -1630136 5692352 1630232 5692312 1628816 5691040 1629944 5692528 -1630232 5692312 1630448 5692312 1628816 5691040 1630136 5692352 -1628816 5691040 1626096 5687632 1628728 5691008 1628376 5691024 -1630448 5692312 1630608 5692360 1628816 5691040 1630232 5692312 -1626048 5687512 1626096 5687632 1628816 5691040 1626016 5687448 -1628816 5691040 1630448 5692312 1630608 5692360 1626016 5687448 -1628816 5691040 1628880 5691048 1626016 5687448 1626048 5687512 -1626016 5687448 1628880 5691048 1630608 5692360 1663880 5646248 -1628816 5691040 1628880 5691048 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1628880 5691048 -1628880 5691048 1626016 5687448 1626048 5687512 1626096 5687632 -1628816 5691040 1628880 5691048 1626096 5687632 1628728 5691008 -1626096 5687632 1628112 5690744 1628728 5691008 1628880 5691048 -1626096 5687632 1626096 5687664 1628112 5690744 1628880 5691048 -1628112 5690744 1628640 5690984 1628728 5691008 1628880 5691048 -1628728 5691008 1628816 5691040 1628880 5691048 1628112 5690744 -1628880 5691048 1626048 5687512 1626096 5687632 1628112 5690744 -1628816 5691040 1630608 5692360 1628880 5691048 1628728 5691008 -1630608 5692360 1628880 5691048 1628816 5691040 1630448 5692312 -1628816 5691040 1630232 5692312 1630448 5692312 1628880 5691048 -1628816 5691040 1630136 5692352 1630232 5692312 1628880 5691048 -1628816 5691040 1629944 5692528 1630136 5692352 1628880 5691048 -1628816 5691040 1628120 5692240 1629944 5692528 1628880 5691048 -1628120 5692240 1629840 5692680 1629944 5692528 1628880 5691048 -1628816 5691040 1628376 5691024 1628120 5692240 1628880 5691048 -1629944 5692528 1630136 5692352 1628880 5691048 1628120 5692240 -1630136 5692352 1630232 5692312 1628880 5691048 1629944 5692528 -1630232 5692312 1630448 5692312 1628880 5691048 1630136 5692352 -1628880 5691048 1628728 5691008 1628816 5691040 1628120 5692240 -1630448 5692312 1630608 5692360 1628880 5691048 1630232 5692312 -1628880 5691048 1630608 5692360 1626016 5687448 1626048 5687512 -1630608 5692360 1626016 5687448 1628880 5691048 1630448 5692312 -1626016 5687448 1628976 5691056 1630608 5692360 1663880 5646248 -1628880 5691048 1628976 5691056 1626016 5687448 1626048 5687512 -1628880 5691048 1628976 5691056 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1628976 5691056 -1628880 5691048 1628976 5691056 1626096 5687632 1628112 5690744 -1626096 5687632 1626096 5687664 1628112 5690744 1628976 5691056 -1628976 5691056 1626048 5687512 1626096 5687632 1628112 5690744 -1628880 5691048 1628976 5691056 1628112 5690744 1628728 5691008 -1628112 5690744 1628640 5690984 1628728 5691008 1628976 5691056 -1628880 5691048 1628976 5691056 1628728 5691008 1628816 5691040 -1628976 5691056 1626096 5687632 1628112 5690744 1628728 5691008 -1628976 5691056 1626016 5687448 1626048 5687512 1626096 5687632 -1628880 5691048 1630608 5692360 1628976 5691056 1628728 5691008 -1630608 5692360 1628976 5691056 1628880 5691048 1630448 5692312 -1628880 5691048 1630232 5692312 1630448 5692312 1628976 5691056 -1628880 5691048 1630136 5692352 1630232 5692312 1628976 5691056 -1628880 5691048 1629944 5692528 1630136 5692352 1628976 5691056 -1628880 5691048 1628120 5692240 1629944 5692528 1628976 5691056 -1628120 5692240 1629840 5692680 1629944 5692528 1628976 5691056 -1628880 5691048 1628816 5691040 1628120 5692240 1628976 5691056 -1629944 5692528 1630136 5692352 1628976 5691056 1628120 5692240 -1630136 5692352 1630232 5692312 1628976 5691056 1629944 5692528 -1630232 5692312 1630448 5692312 1628976 5691056 1630136 5692352 -1628976 5691056 1628728 5691008 1628880 5691048 1628120 5692240 -1630448 5692312 1630608 5692360 1628976 5691056 1630232 5692312 -1628976 5691056 1630608 5692360 1626016 5687448 1626048 5687512 -1630608 5692360 1626016 5687448 1628976 5691056 1630448 5692312 -1626016 5687448 1629064 5691080 1630608 5692360 1663880 5646248 -1628976 5691056 1629064 5691080 1626016 5687448 1626048 5687512 -1628976 5691056 1629064 5691080 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1629064 5691080 -1628976 5691056 1629064 5691080 1626096 5687632 1628112 5690744 -1629064 5691080 1626016 5687448 1626048 5687512 1626096 5687632 -1628976 5691056 1630608 5692360 1629064 5691080 1626096 5687632 -1630608 5692360 1629064 5691080 1628976 5691056 1630448 5692312 -1628976 5691056 1630232 5692312 1630448 5692312 1629064 5691080 -1628976 5691056 1630136 5692352 1630232 5692312 1629064 5691080 -1628976 5691056 1629944 5692528 1630136 5692352 1629064 5691080 -1628976 5691056 1628120 5692240 1629944 5692528 1629064 5691080 -1628120 5692240 1629840 5692680 1629944 5692528 1629064 5691080 -1628120 5692240 1628128 5692296 1629840 5692680 1629064 5691080 -1628976 5691056 1628880 5691048 1628120 5692240 1629064 5691080 -1628880 5691048 1628816 5691040 1628120 5692240 1629064 5691080 -1628120 5692240 1629840 5692680 1629064 5691080 1628880 5691048 -1629944 5692528 1630136 5692352 1629064 5691080 1629840 5692680 -1630136 5692352 1630232 5692312 1629064 5691080 1629944 5692528 -1630232 5692312 1630448 5692312 1629064 5691080 1630136 5692352 -1629064 5691080 1626096 5687632 1628976 5691056 1628880 5691048 -1630448 5692312 1630608 5692360 1629064 5691080 1630232 5692312 -1629064 5691080 1630608 5692360 1626016 5687448 1626048 5687512 -1630608 5692360 1626016 5687448 1629064 5691080 1630448 5692312 -1626016 5687448 1629152 5691112 1630608 5692360 1663880 5646248 -1629064 5691080 1629152 5691112 1626016 5687448 1626048 5687512 -1629064 5691080 1629152 5691112 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1629152 5691112 -1629064 5691080 1629152 5691112 1626096 5687632 1628976 5691056 -1629152 5691112 1626016 5687448 1626048 5687512 1626096 5687632 -1629064 5691080 1630608 5692360 1629152 5691112 1626096 5687632 -1630608 5692360 1629152 5691112 1629064 5691080 1630448 5692312 -1629064 5691080 1630232 5692312 1630448 5692312 1629152 5691112 -1629064 5691080 1630136 5692352 1630232 5692312 1629152 5691112 -1629064 5691080 1629944 5692528 1630136 5692352 1629152 5691112 -1629064 5691080 1629840 5692680 1629944 5692528 1629152 5691112 -1629064 5691080 1628120 5692240 1629840 5692680 1629152 5691112 -1628120 5692240 1628128 5692296 1629840 5692680 1629152 5691112 -1629064 5691080 1628880 5691048 1628120 5692240 1629152 5691112 -1628120 5692240 1629840 5692680 1629152 5691112 1628880 5691048 -1628880 5691048 1628816 5691040 1628120 5692240 1629152 5691112 -1629064 5691080 1628976 5691056 1628880 5691048 1629152 5691112 -1629840 5692680 1629944 5692528 1629152 5691112 1628120 5692240 -1629944 5692528 1630136 5692352 1629152 5691112 1629840 5692680 -1630136 5692352 1630232 5692312 1629152 5691112 1629944 5692528 -1630232 5692312 1630448 5692312 1629152 5691112 1630136 5692352 -1629152 5691112 1626096 5687632 1629064 5691080 1628880 5691048 -1630448 5692312 1630608 5692360 1629152 5691112 1630232 5692312 -1629152 5691112 1630608 5692360 1626016 5687448 1626048 5687512 -1630608 5692360 1626016 5687448 1629152 5691112 1630448 5692312 -1626016 5687448 1629240 5691152 1630608 5692360 1663880 5646248 -1629152 5691112 1629240 5691152 1626016 5687448 1626048 5687512 -1629152 5691112 1629240 5691152 1626048 5687512 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1629240 5691152 -1629152 5691112 1629240 5691152 1626096 5687632 1629064 5691080 -1629240 5691152 1626016 5687448 1626048 5687512 1626096 5687632 -1629152 5691112 1630608 5692360 1629240 5691152 1626096 5687632 -1630608 5692360 1629240 5691152 1629152 5691112 1630448 5692312 -1629152 5691112 1630232 5692312 1630448 5692312 1629240 5691152 -1629152 5691112 1630136 5692352 1630232 5692312 1629240 5691152 -1629152 5691112 1629944 5692528 1630136 5692352 1629240 5691152 -1629152 5691112 1629840 5692680 1629944 5692528 1629240 5691152 -1629152 5691112 1628120 5692240 1629840 5692680 1629240 5691152 -1629152 5691112 1628880 5691048 1628120 5692240 1629240 5691152 -1628120 5692240 1628128 5692296 1629840 5692680 1629240 5691152 -1629840 5692680 1629944 5692528 1629240 5691152 1628120 5692240 -1629944 5692528 1630136 5692352 1629240 5691152 1629840 5692680 -1630136 5692352 1630232 5692312 1629240 5691152 1629944 5692528 -1630232 5692312 1630448 5692312 1629240 5691152 1630136 5692352 -1629240 5691152 1626096 5687632 1629152 5691112 1628120 5692240 -1630448 5692312 1630608 5692360 1629240 5691152 1630232 5692312 -1629240 5691152 1630608 5692360 1626016 5687448 1626048 5687512 -1630608 5692360 1626016 5687448 1629240 5691152 1630448 5692312 -1626016 5687448 1629328 5691224 1630608 5692360 1663880 5646248 -1629240 5691152 1629328 5691224 1626016 5687448 1626048 5687512 -1630608 5692360 1629328 5691224 1629240 5691152 1630448 5692312 -1629240 5691152 1630232 5692312 1630448 5692312 1629328 5691224 -1629240 5691152 1630136 5692352 1630232 5692312 1629328 5691224 -1629240 5691152 1629944 5692528 1630136 5692352 1629328 5691224 -1629240 5691152 1629840 5692680 1629944 5692528 1629328 5691224 -1629240 5691152 1628120 5692240 1629840 5692680 1629328 5691224 -1628120 5692240 1628128 5692296 1629840 5692680 1629328 5691224 -1628128 5692296 1629816 5692792 1629840 5692680 1629328 5691224 -1629240 5691152 1629152 5691112 1628120 5692240 1629328 5691224 -1629152 5691112 1628880 5691048 1628120 5692240 1629328 5691224 -1628880 5691048 1628816 5691040 1628120 5692240 1629328 5691224 -1629152 5691112 1629064 5691080 1628880 5691048 1629328 5691224 -1628880 5691048 1628120 5692240 1629328 5691224 1629064 5691080 -1629064 5691080 1628976 5691056 1628880 5691048 1629328 5691224 -1629152 5691112 1629064 5691080 1629328 5691224 1629240 5691152 -1628120 5692240 1628128 5692296 1629328 5691224 1628880 5691048 -1629840 5692680 1629944 5692528 1629328 5691224 1628128 5692296 -1629944 5692528 1630136 5692352 1629328 5691224 1629840 5692680 -1630136 5692352 1630232 5692312 1629328 5691224 1629944 5692528 -1630232 5692312 1630448 5692312 1629328 5691224 1630136 5692352 -1629328 5691224 1626016 5687448 1629240 5691152 1629152 5691112 -1630448 5692312 1630608 5692360 1629328 5691224 1630232 5692312 -1630608 5692360 1626016 5687448 1629328 5691224 1630448 5692312 -1630232 5692312 1629392 5691296 1629328 5691224 1630136 5692352 -1629328 5691224 1629944 5692528 1630136 5692352 1629392 5691296 -1629328 5691224 1629840 5692680 1629944 5692528 1629392 5691296 -1629328 5691224 1628128 5692296 1629840 5692680 1629392 5691296 -1629328 5691224 1628120 5692240 1628128 5692296 1629392 5691296 -1628128 5692296 1629816 5692792 1629840 5692680 1629392 5691296 -1629328 5691224 1628880 5691048 1628120 5692240 1629392 5691296 -1629328 5691224 1629064 5691080 1628880 5691048 1629392 5691296 -1628120 5692240 1628128 5692296 1629392 5691296 1628880 5691048 -1628880 5691048 1628816 5691040 1628120 5692240 1629392 5691296 -1629064 5691080 1628976 5691056 1628880 5691048 1629392 5691296 -1629328 5691224 1629152 5691112 1629064 5691080 1629392 5691296 -1629064 5691080 1628880 5691048 1629392 5691296 1629152 5691112 -1629328 5691224 1629240 5691152 1629152 5691112 1629392 5691296 -1628880 5691048 1628120 5692240 1629392 5691296 1629064 5691080 -1628128 5692296 1629840 5692680 1629392 5691296 1628120 5692240 -1629840 5692680 1629944 5692528 1629392 5691296 1628128 5692296 -1629944 5692528 1630136 5692352 1629392 5691296 1629840 5692680 -1630136 5692352 1630232 5692312 1629392 5691296 1629944 5692528 -1629328 5691224 1629392 5691296 1630448 5692312 1630608 5692360 -1629392 5691296 1630608 5692360 1629328 5691224 1629152 5691112 -1629328 5691224 1629392 5691296 1630608 5692360 1626016 5687448 -1629392 5691296 1630232 5692312 1630448 5692312 1630608 5692360 -1630232 5692312 1630448 5692312 1629392 5691296 1630136 5692352 -1629840 5692680 1629392 5691368 1628128 5692296 1629816 5692792 -1628128 5692296 1629392 5691368 1629392 5691296 1628120 5692240 -1629392 5691296 1628880 5691048 1628120 5692240 1629392 5691368 -1628880 5691048 1628816 5691040 1628120 5692240 1629392 5691368 -1629392 5691296 1629064 5691080 1628880 5691048 1629392 5691368 -1629392 5691296 1629152 5691112 1629064 5691080 1629392 5691368 -1628880 5691048 1628120 5692240 1629392 5691368 1629064 5691080 -1629064 5691080 1628976 5691056 1628880 5691048 1629392 5691368 -1629392 5691296 1629328 5691224 1629152 5691112 1629392 5691368 -1629152 5691112 1629064 5691080 1629392 5691368 1629328 5691224 -1629328 5691224 1629240 5691152 1629152 5691112 1629392 5691368 -1629152 5691112 1629064 5691080 1629392 5691368 1629240 5691152 -1629328 5691224 1629240 5691152 1629392 5691368 1629392 5691296 -1629064 5691080 1628880 5691048 1629392 5691368 1629152 5691112 -1628120 5692240 1628128 5692296 1629392 5691368 1628880 5691048 -1629392 5691296 1629392 5691368 1629840 5692680 1629944 5692528 -1629392 5691296 1629392 5691368 1629944 5692528 1630136 5692352 -1629392 5691368 1629840 5692680 1629944 5692528 1630136 5692352 -1629392 5691296 1629392 5691368 1630136 5692352 1630232 5692312 -1629392 5691368 1629944 5692528 1630136 5692352 1630232 5692312 -1629392 5691368 1630232 5692312 1629392 5691296 1629328 5691224 -1629392 5691296 1629392 5691368 1630232 5692312 1630448 5692312 -1629392 5691368 1630136 5692352 1630232 5692312 1630448 5692312 -1629392 5691296 1629392 5691368 1630448 5692312 1630608 5692360 -1629392 5691296 1629328 5691224 1629392 5691368 1630448 5692312 -1629392 5691368 1628128 5692296 1629840 5692680 1629944 5692528 -1628128 5692296 1629840 5692680 1629392 5691368 1628120 5692240 -1629840 5692680 1629336 5691416 1628128 5692296 1629816 5692792 -1629392 5691368 1629336 5691416 1629840 5692680 1629944 5692528 -1629392 5691368 1629336 5691416 1629944 5692528 1630136 5692352 -1629392 5691368 1629336 5691416 1630136 5692352 1630232 5692312 -1629336 5691416 1629840 5692680 1629944 5692528 1630136 5692352 -1629392 5691368 1628128 5692296 1629336 5691416 1630136 5692352 -1628128 5692296 1629336 5691416 1629392 5691368 1628120 5692240 -1629392 5691368 1628880 5691048 1628120 5692240 1629336 5691416 -1629392 5691368 1629064 5691080 1628880 5691048 1629336 5691416 -1628880 5691048 1628816 5691040 1628120 5692240 1629336 5691416 -1628816 5691040 1628376 5691024 1628120 5692240 1629336 5691416 -1629064 5691080 1628976 5691056 1628880 5691048 1629336 5691416 -1629064 5691080 1628976 5691056 1629336 5691416 1629392 5691368 -1629392 5691368 1629152 5691112 1629064 5691080 1629336 5691416 -1629392 5691368 1629240 5691152 1629152 5691112 1629336 5691416 -1629064 5691080 1628976 5691056 1629336 5691416 1629152 5691112 -1629392 5691368 1629328 5691224 1629240 5691152 1629336 5691416 -1629240 5691152 1629152 5691112 1629336 5691416 1629328 5691224 -1629392 5691368 1629392 5691296 1629328 5691224 1629336 5691416 -1629328 5691224 1629240 5691152 1629336 5691416 1629392 5691296 -1629152 5691112 1629064 5691080 1629336 5691416 1629240 5691152 -1628880 5691048 1628816 5691040 1629336 5691416 1628976 5691056 -1629336 5691416 1630136 5692352 1629392 5691368 1629392 5691296 -1628120 5692240 1628128 5692296 1629336 5691416 1628816 5691040 -1629336 5691416 1628128 5692296 1629840 5692680 1629944 5692528 -1628128 5692296 1629840 5692680 1629336 5691416 1628120 5692240 -1628120 5692240 1629288 5691432 1628816 5691040 1628376 5691024 -1628816 5691040 1629288 5691432 1629336 5691416 1628880 5691048 -1629336 5691416 1628976 5691056 1628880 5691048 1629288 5691432 -1628880 5691048 1628816 5691040 1629288 5691432 1628976 5691056 -1629336 5691416 1629064 5691080 1628976 5691056 1629288 5691432 -1629336 5691416 1629152 5691112 1629064 5691080 1629288 5691432 -1629064 5691080 1628976 5691056 1629288 5691432 1629152 5691112 -1629336 5691416 1629240 5691152 1629152 5691112 1629288 5691432 -1629336 5691416 1629328 5691224 1629240 5691152 1629288 5691432 -1629152 5691112 1629064 5691080 1629288 5691432 1629240 5691152 -1629336 5691416 1629392 5691296 1629328 5691224 1629288 5691432 -1629240 5691152 1629152 5691112 1629288 5691432 1629328 5691224 -1628976 5691056 1628880 5691048 1629288 5691432 1629064 5691080 -1629336 5691416 1629288 5691432 1628120 5692240 1628128 5692296 -1629288 5691432 1628128 5692296 1629336 5691416 1629328 5691224 -1629336 5691416 1629288 5691432 1628128 5692296 1629840 5692680 -1628128 5692296 1629816 5692792 1629840 5692680 1629288 5691432 -1629288 5691432 1628120 5692240 1628128 5692296 1629840 5692680 -1629336 5691416 1629288 5691432 1629840 5692680 1629944 5692528 -1629336 5691416 1629288 5691432 1629944 5692528 1630136 5692352 -1629336 5691416 1629328 5691224 1629288 5691432 1629944 5692528 -1629288 5691432 1628128 5692296 1629840 5692680 1629944 5692528 -1629288 5691432 1628816 5691040 1628120 5692240 1628128 5692296 -1628816 5691040 1628120 5692240 1629288 5691432 1628880 5691048 -1628120 5692240 1629240 5691424 1628816 5691040 1628376 5691024 -1629288 5691432 1629240 5691424 1628120 5692240 1628128 5692296 -1629288 5691432 1629240 5691424 1628128 5692296 1629840 5692680 -1628128 5692296 1629816 5692792 1629840 5692680 1629240 5691424 -1629288 5691432 1629240 5691424 1629840 5692680 1629944 5692528 -1629240 5691424 1628120 5692240 1628128 5692296 1629840 5692680 -1629288 5691432 1628816 5691040 1629240 5691424 1629840 5692680 -1628816 5691040 1629240 5691424 1629288 5691432 1628880 5691048 -1629288 5691432 1628976 5691056 1628880 5691048 1629240 5691424 -1629288 5691432 1629064 5691080 1628976 5691056 1629240 5691424 -1628976 5691056 1628880 5691048 1629240 5691424 1629064 5691080 -1629288 5691432 1629152 5691112 1629064 5691080 1629240 5691424 -1629288 5691432 1629240 5691152 1629152 5691112 1629240 5691424 -1629152 5691112 1629064 5691080 1629240 5691424 1629240 5691152 -1629288 5691432 1629328 5691224 1629240 5691152 1629240 5691424 -1629288 5691432 1629336 5691416 1629328 5691224 1629240 5691424 -1629240 5691152 1629152 5691112 1629240 5691424 1629328 5691224 -1629336 5691416 1629392 5691296 1629328 5691224 1629240 5691424 -1629328 5691224 1629240 5691152 1629240 5691424 1629336 5691416 -1629064 5691080 1628976 5691056 1629240 5691424 1629152 5691112 -1629240 5691424 1629840 5692680 1629288 5691432 1629336 5691416 -1628880 5691048 1628816 5691040 1629240 5691424 1628976 5691056 -1629240 5691424 1628816 5691040 1628120 5692240 1628128 5692296 -1628816 5691040 1628120 5692240 1629240 5691424 1628880 5691048 -1628120 5692240 1629152 5691400 1628816 5691040 1628376 5691024 -1628816 5691040 1628728 5691008 1628376 5691024 1629152 5691400 -1628120 5692240 1629152 5691400 1628376 5691024 1627944 5692096 -1629240 5691424 1629152 5691400 1628120 5692240 1628128 5692296 -1629240 5691424 1629152 5691400 1628128 5692296 1629840 5692680 -1629240 5691424 1628816 5691040 1629152 5691400 1628128 5692296 -1628816 5691040 1629152 5691400 1629240 5691424 1628880 5691048 -1629240 5691424 1628976 5691056 1628880 5691048 1629152 5691400 -1629240 5691424 1629064 5691080 1628976 5691056 1629152 5691400 -1629240 5691424 1629152 5691112 1629064 5691080 1629152 5691400 -1629064 5691080 1628976 5691056 1629152 5691400 1629152 5691112 -1629240 5691424 1629240 5691152 1629152 5691112 1629152 5691400 -1629240 5691424 1629328 5691224 1629240 5691152 1629152 5691400 -1629240 5691152 1629152 5691112 1629152 5691400 1629328 5691224 -1629240 5691424 1629336 5691416 1629328 5691224 1629152 5691400 -1629152 5691112 1629064 5691080 1629152 5691400 1629240 5691152 -1628976 5691056 1628880 5691048 1629152 5691400 1629064 5691080 -1629152 5691400 1628128 5692296 1629240 5691424 1629328 5691224 -1628880 5691048 1628816 5691040 1629152 5691400 1628976 5691056 -1628120 5692240 1628128 5692296 1629152 5691400 1628376 5691024 -1629152 5691400 1628880 5691048 1628816 5691040 1628376 5691024 -1628120 5692240 1629072 5691384 1628376 5691024 1627944 5692096 -1628376 5691024 1629072 5691384 1629152 5691400 1628816 5691040 -1628376 5691024 1629072 5691384 1628816 5691040 1628728 5691008 -1628376 5691024 1629072 5691384 1628728 5691008 1628640 5690984 -1629072 5691384 1629152 5691400 1628816 5691040 1628728 5691008 -1629152 5691400 1629072 5691384 1628120 5692240 1628128 5692296 -1629152 5691400 1629072 5691384 1628128 5692296 1629240 5691424 -1629072 5691384 1628128 5692296 1629152 5691400 1628816 5691040 -1629152 5691400 1628880 5691048 1628816 5691040 1629072 5691384 -1628816 5691040 1628728 5691008 1629072 5691384 1628880 5691048 -1629152 5691400 1628976 5691056 1628880 5691048 1629072 5691384 -1629152 5691400 1629064 5691080 1628976 5691056 1629072 5691384 -1629152 5691400 1629152 5691112 1629064 5691080 1629072 5691384 -1629152 5691400 1629240 5691152 1629152 5691112 1629072 5691384 -1629064 5691080 1628976 5691056 1629072 5691384 1629152 5691112 -1628976 5691056 1628880 5691048 1629072 5691384 1629064 5691080 -1629152 5691400 1629152 5691112 1629072 5691384 1628128 5692296 -1628880 5691048 1628816 5691040 1629072 5691384 1628976 5691056 -1629072 5691384 1628376 5691024 1628120 5692240 1628128 5692296 -1628376 5691024 1628120 5692240 1629072 5691384 1628728 5691008 -1628120 5692240 1628976 5691344 1628376 5691024 1627944 5692096 -1628376 5691024 1627624 5691896 1627944 5692096 1628976 5691344 -1629072 5691384 1628976 5691344 1628120 5692240 1628128 5692296 -1628376 5691024 1628976 5691344 1629072 5691384 1628728 5691008 -1628376 5691024 1628976 5691344 1628728 5691008 1628640 5690984 -1629072 5691384 1628816 5691040 1628728 5691008 1628976 5691344 -1628376 5691024 1628976 5691344 1628640 5690984 1628416 5691000 -1629072 5691384 1628880 5691048 1628816 5691040 1628976 5691344 -1628816 5691040 1628728 5691008 1628976 5691344 1628880 5691048 -1629072 5691384 1628976 5691056 1628880 5691048 1628976 5691344 -1628880 5691048 1628816 5691040 1628976 5691344 1628976 5691056 -1629072 5691384 1629064 5691080 1628976 5691056 1628976 5691344 -1629072 5691384 1629152 5691112 1629064 5691080 1628976 5691344 -1629072 5691384 1629152 5691400 1629152 5691112 1628976 5691344 -1629064 5691080 1628976 5691056 1628976 5691344 1629152 5691112 -1628976 5691056 1628880 5691048 1628976 5691344 1629064 5691080 -1628976 5691344 1628120 5692240 1629072 5691384 1629152 5691112 -1628976 5691344 1628816 5691040 1628728 5691008 1628640 5690984 -1628120 5692240 1629072 5691384 1628976 5691344 1627944 5692096 -1628976 5691344 1628640 5690984 1628376 5691024 1627944 5692096 -1627944 5692096 1628888 5691312 1628376 5691024 1627624 5691896 -1628976 5691344 1628888 5691312 1627944 5692096 1628120 5692240 -1628976 5691344 1628888 5691312 1628120 5692240 1629072 5691384 -1628976 5691344 1628376 5691024 1628888 5691312 1628120 5692240 -1628376 5691024 1628888 5691312 1628976 5691344 1628640 5690984 -1628976 5691344 1628728 5691008 1628640 5690984 1628888 5691312 -1628376 5691024 1628888 5691312 1628640 5690984 1628416 5691000 -1628976 5691344 1628816 5691040 1628728 5691008 1628888 5691312 -1628728 5691008 1628640 5690984 1628888 5691312 1628816 5691040 -1628976 5691344 1628880 5691048 1628816 5691040 1628888 5691312 -1628976 5691344 1628976 5691056 1628880 5691048 1628888 5691312 -1628880 5691048 1628816 5691040 1628888 5691312 1628976 5691056 -1628976 5691344 1629064 5691080 1628976 5691056 1628888 5691312 -1628816 5691040 1628728 5691008 1628888 5691312 1628880 5691048 -1628888 5691312 1628120 5692240 1628976 5691344 1628976 5691056 -1628640 5690984 1628376 5691024 1628888 5691312 1628728 5691008 -1628888 5691312 1628376 5691024 1627944 5692096 1628120 5692240 -1628376 5691024 1627944 5692096 1628888 5691312 1628640 5690984 -1627944 5692096 1628800 5691280 1628376 5691024 1627624 5691896 -1628888 5691312 1628800 5691280 1627944 5692096 1628120 5692240 -1628888 5691312 1628800 5691280 1628120 5692240 1628976 5691344 -1628888 5691312 1628376 5691024 1628800 5691280 1628120 5692240 -1628376 5691024 1628800 5691280 1628888 5691312 1628640 5690984 -1628376 5691024 1628800 5691280 1628640 5690984 1628416 5691000 -1628640 5690984 1628544 5690968 1628416 5691000 1628800 5691280 -1628416 5691000 1628376 5691024 1628800 5691280 1628544 5690968 -1628544 5690968 1628496 5690968 1628416 5691000 1628800 5691280 -1628888 5691312 1628728 5691008 1628640 5690984 1628800 5691280 -1628888 5691312 1628816 5691040 1628728 5691008 1628800 5691280 -1628888 5691312 1628880 5691048 1628816 5691040 1628800 5691280 -1628816 5691040 1628728 5691008 1628800 5691280 1628880 5691048 -1628888 5691312 1628976 5691056 1628880 5691048 1628800 5691280 -1628728 5691008 1628640 5690984 1628800 5691280 1628816 5691040 -1628800 5691280 1628120 5692240 1628888 5691312 1628880 5691048 -1628800 5691280 1628728 5691008 1628640 5690984 1628544 5690968 -1628800 5691280 1628376 5691024 1627944 5692096 1628120 5692240 -1628376 5691024 1627944 5692096 1628800 5691280 1628416 5691000 -1627944 5692096 1628704 5691240 1628376 5691024 1627624 5691896 -1628800 5691280 1628704 5691240 1627944 5692096 1628120 5692240 -1628800 5691280 1628704 5691240 1628120 5692240 1628888 5691312 -1628800 5691280 1628376 5691024 1628704 5691240 1628120 5692240 -1628376 5691024 1628704 5691240 1628800 5691280 1628416 5691000 -1628800 5691280 1628544 5690968 1628416 5691000 1628704 5691240 -1628800 5691280 1628640 5690984 1628544 5690968 1628704 5691240 -1628544 5690968 1628416 5691000 1628704 5691240 1628640 5690984 -1628544 5690968 1628496 5690968 1628416 5691000 1628704 5691240 -1628800 5691280 1628728 5691008 1628640 5690984 1628704 5691240 -1628640 5690984 1628544 5690968 1628704 5691240 1628728 5691008 -1628800 5691280 1628816 5691040 1628728 5691008 1628704 5691240 -1628800 5691280 1628880 5691048 1628816 5691040 1628704 5691240 -1628728 5691008 1628640 5690984 1628704 5691240 1628816 5691040 -1628704 5691240 1628120 5692240 1628800 5691280 1628816 5691040 -1628416 5691000 1628376 5691024 1628704 5691240 1628544 5690968 -1628704 5691240 1628376 5691024 1627944 5692096 1628120 5692240 -1628376 5691024 1627944 5692096 1628704 5691240 1628416 5691000 -1627944 5692096 1628624 5691216 1628376 5691024 1627624 5691896 -1628704 5691240 1628624 5691216 1627944 5692096 1628120 5692240 -1628704 5691240 1628624 5691216 1628120 5692240 1628800 5691280 -1628704 5691240 1628376 5691024 1628624 5691216 1628120 5692240 -1628376 5691024 1628624 5691216 1628704 5691240 1628416 5691000 -1628704 5691240 1628544 5690968 1628416 5691000 1628624 5691216 -1628704 5691240 1628640 5690984 1628544 5690968 1628624 5691216 -1628704 5691240 1628728 5691008 1628640 5690984 1628624 5691216 -1628640 5690984 1628544 5690968 1628624 5691216 1628728 5691008 -1628544 5690968 1628496 5690968 1628416 5691000 1628624 5691216 -1628704 5691240 1628816 5691040 1628728 5691008 1628624 5691216 -1628544 5690968 1628496 5690968 1628624 5691216 1628640 5690984 -1628624 5691216 1628120 5692240 1628704 5691240 1628728 5691008 -1628416 5691000 1628376 5691024 1628624 5691216 1628496 5690968 -1628624 5691216 1628376 5691024 1627944 5692096 1628120 5692240 -1628376 5691024 1627944 5692096 1628624 5691216 1628416 5691000 -1627944 5692096 1628544 5691192 1628376 5691024 1627624 5691896 -1628544 5691192 1628624 5691216 1628376 5691024 1627624 5691896 -1628376 5691024 1627984 5690944 1627624 5691896 1628544 5691192 -1627624 5691896 1627944 5692096 1628544 5691192 1627984 5690944 -1628376 5691024 1628064 5690904 1627984 5690944 1628544 5691192 -1628376 5691024 1627984 5690944 1628544 5691192 1628624 5691216 -1627984 5690944 1627936 5690952 1627624 5691896 1628544 5691192 -1628624 5691216 1628544 5691192 1627944 5692096 1628120 5692240 -1628624 5691216 1628544 5691192 1628120 5692240 1628704 5691240 -1628624 5691216 1628376 5691024 1628544 5691192 1628120 5692240 -1628376 5691024 1628544 5691192 1628624 5691216 1628416 5691000 -1628376 5691024 1627984 5690944 1628544 5691192 1628416 5691000 -1628624 5691216 1628496 5690968 1628416 5691000 1628544 5691192 -1628624 5691216 1628544 5690968 1628496 5690968 1628544 5691192 -1628624 5691216 1628640 5690984 1628544 5690968 1628544 5691192 -1628624 5691216 1628728 5691008 1628640 5690984 1628544 5691192 -1628544 5690968 1628496 5690968 1628544 5691192 1628640 5690984 -1628496 5690968 1628416 5691000 1628544 5691192 1628544 5690968 -1628544 5691192 1628120 5692240 1628624 5691216 1628640 5690984 -1628416 5691000 1628376 5691024 1628544 5691192 1628496 5690968 -1627944 5692096 1628120 5692240 1628544 5691192 1627624 5691896 -1628544 5691192 1628456 5691160 1627624 5691896 1627944 5692096 -1628544 5691192 1627984 5690944 1628456 5691160 1627944 5692096 -1628456 5691160 1627984 5690944 1627624 5691896 1627944 5692096 -1627984 5690944 1628456 5691160 1628544 5691192 1628376 5691024 -1627984 5690944 1628456 5691160 1628376 5691024 1628064 5690904 -1628456 5691160 1627944 5692096 1628544 5691192 1628376 5691024 -1628544 5691192 1628416 5691000 1628376 5691024 1628456 5691160 -1628544 5691192 1628416 5691000 1628456 5691160 1627944 5692096 -1627984 5690944 1627624 5691896 1628456 5691160 1628376 5691024 -1628376 5691024 1627984 5690944 1628456 5691160 1628416 5691000 -1627624 5691896 1628456 5691160 1627984 5690944 1627936 5690952 -1627624 5691896 1627944 5692096 1628456 5691160 1627936 5690952 -1628456 5691160 1628376 5691024 1627984 5690944 1627936 5690952 -1627624 5691896 1628456 5691160 1627936 5690952 1627848 5690968 -1628544 5691192 1628496 5690968 1628416 5691000 1628456 5691160 -1628544 5691192 1628496 5690968 1628456 5691160 1627944 5692096 -1628416 5691000 1628376 5691024 1628456 5691160 1628496 5690968 -1628544 5691192 1628544 5690968 1628496 5690968 1628456 5691160 -1628544 5691192 1628544 5690968 1628456 5691160 1627944 5692096 -1628544 5691192 1628640 5690984 1628544 5690968 1628456 5691160 -1628496 5690968 1628416 5691000 1628456 5691160 1628544 5690968 -1628544 5691192 1628456 5691160 1627944 5692096 1628120 5692240 -1627984 5690944 1628408 5691120 1628376 5691024 1628064 5690904 -1628376 5691024 1628112 5690864 1628064 5690904 1628408 5691120 -1628456 5691160 1628408 5691120 1627984 5690944 1627936 5690952 -1628456 5691160 1628376 5691024 1628408 5691120 1627936 5690952 -1627984 5690944 1627936 5690952 1628408 5691120 1628064 5690904 -1628408 5691120 1628456 5691160 1628376 5691024 1628064 5690904 -1628376 5691024 1628408 5691120 1628456 5691160 1628416 5691000 -1628456 5691160 1628496 5690968 1628416 5691000 1628408 5691120 -1628408 5691120 1627936 5690952 1628456 5691160 1628496 5690968 -1628376 5691024 1628064 5690904 1628408 5691120 1628416 5691000 -1628416 5691000 1628376 5691024 1628408 5691120 1628496 5690968 -1628456 5691160 1628408 5691120 1627936 5690952 1627624 5691896 -1628456 5691160 1628408 5691120 1627624 5691896 1627944 5692096 -1628456 5691160 1628408 5691120 1627944 5692096 1628544 5691192 -1628456 5691160 1628496 5690968 1628408 5691120 1627944 5692096 -1628408 5691120 1627984 5690944 1627936 5690952 1627624 5691896 -1628408 5691120 1627936 5690952 1627624 5691896 1627944 5692096 -1627936 5690952 1627848 5690968 1627624 5691896 1628408 5691120 -1628456 5691160 1628544 5690968 1628496 5690968 1628408 5691120 -1628064 5690904 1628376 5691088 1628376 5691024 1628112 5690864 -1628408 5691120 1628376 5691088 1628064 5690904 1627984 5690944 -1628408 5691120 1628376 5691088 1627984 5690944 1627936 5690952 -1628376 5691088 1628064 5690904 1627984 5690944 1627936 5690952 -1628408 5691120 1628376 5691088 1627936 5690952 1627624 5691896 -1628408 5691120 1628376 5691024 1628376 5691088 1627936 5690952 -1628376 5691024 1628376 5691088 1628408 5691120 1628416 5691000 -1628376 5691088 1627936 5690952 1628408 5691120 1628416 5691000 -1628376 5691088 1628376 5691024 1628064 5690904 1627984 5690944 -1628408 5691120 1628496 5690968 1628416 5691000 1628376 5691088 -1628376 5691024 1628064 5690904 1628376 5691088 1628416 5691000 -1626016 5687448 1630424 5688880 1663880 5646248 1625984 5687408 -1663880 5646248 1630424 5688880 1630608 5692360 1630704 5692448 -1663880 5646248 1630424 5688880 1630704 5692448 1630800 5692640 -1630424 5688880 1630608 5692360 1630704 5692448 1630800 5692640 -1663880 5646248 1630424 5688880 1630800 5692640 1663944 5646256 -1630424 5688880 1630704 5692448 1630800 5692640 1663944 5646256 -1630800 5692640 1630864 5692824 1663944 5646256 1630424 5688880 -1630800 5692640 1630864 5692824 1630424 5688880 1630704 5692448 -1663944 5646256 1663880 5646248 1630424 5688880 1630864 5692824 -1630864 5692824 1630864 5692928 1663944 5646256 1630424 5688880 -1630424 5688880 1626016 5687448 1630608 5692360 1630704 5692448 -1630608 5692360 1630424 5688880 1626016 5687448 1629328 5691224 -1630608 5692360 1630704 5692448 1630424 5688880 1629328 5691224 -1663880 5646248 1625904 5687328 1625984 5687408 1630424 5688880 -1625984 5687408 1626016 5687448 1630424 5688880 1625904 5687328 -1663880 5646248 1663776 5646144 1625904 5687328 1630424 5688880 -1625904 5687328 1625984 5687408 1630424 5688880 1663776 5646144 -1663776 5646144 1625856 5687296 1625904 5687328 1630424 5688880 -1663776 5646144 1625856 5687296 1630424 5688880 1663880 5646248 -1625904 5687328 1625984 5687408 1630424 5688880 1625856 5687296 -1663776 5646144 1657088 5639464 1625856 5687296 1630424 5688880 -1663776 5646144 1663688 5645984 1657088 5639464 1630424 5688880 -1663776 5646144 1657088 5639464 1630424 5688880 1663880 5646248 -1657088 5639464 1625824 5687280 1625856 5687296 1630424 5688880 -1657088 5639464 1617256 5683416 1625824 5687280 1630424 5688880 -1657088 5639464 1625824 5687280 1630424 5688880 1663776 5646144 -1625856 5687296 1625904 5687328 1630424 5688880 1625824 5687280 -1626016 5687448 1629328 5691224 1630424 5688880 1625984 5687408 -1630424 5688880 1663944 5646256 1663880 5646248 1663776 5646144 -1626016 5687448 1629240 5691152 1629328 5691224 1630424 5688880 -1629328 5691224 1630608 5692360 1630424 5688880 1629240 5691152 -1626016 5687448 1629240 5691152 1630424 5688880 1625984 5687408 -1626016 5687448 1626048 5687512 1629240 5691152 1630424 5688880 -1626016 5687448 1626048 5687512 1630424 5688880 1625984 5687408 -1626048 5687512 1626096 5687632 1629240 5691152 1630424 5688880 -1626048 5687512 1626064 5687560 1626096 5687632 1630424 5688880 -1626096 5687632 1629152 5691112 1629240 5691152 1630424 5688880 -1626096 5687632 1629064 5691080 1629152 5691112 1630424 5688880 -1626096 5687632 1628976 5691056 1629064 5691080 1630424 5688880 -1626096 5687632 1628112 5690744 1628976 5691056 1630424 5688880 -1626096 5687632 1626096 5687664 1628112 5690744 1630424 5688880 -1626096 5687664 1628024 5690712 1628112 5690744 1630424 5688880 -1626096 5687664 1626464 5689664 1628024 5690712 1630424 5688880 -1626464 5689664 1627944 5690696 1628024 5690712 1630424 5688880 -1626464 5689664 1627856 5690720 1627944 5690696 1630424 5688880 -1626464 5689664 1627944 5690696 1630424 5688880 1626096 5687664 -1628024 5690712 1628112 5690744 1630424 5688880 1627944 5690696 -1626096 5687664 1626464 5689664 1630424 5688880 1626096 5687632 -1626096 5687664 1626424 5689616 1626464 5689664 1630424 5688880 -1628112 5690744 1628976 5691056 1630424 5688880 1628024 5690712 -1628112 5690744 1628728 5691008 1628976 5691056 1630424 5688880 -1628112 5690744 1628728 5691008 1630424 5688880 1628024 5690712 -1628112 5690744 1628640 5690984 1628728 5691008 1630424 5688880 -1628112 5690744 1628544 5690968 1628640 5690984 1630424 5688880 -1628112 5690744 1628640 5690984 1630424 5688880 1628024 5690712 -1628728 5691008 1628880 5691048 1628976 5691056 1630424 5688880 -1628728 5691008 1628976 5691056 1630424 5688880 1628640 5690984 -1628976 5691056 1629064 5691080 1630424 5688880 1628728 5691008 -1629064 5691080 1629152 5691112 1630424 5688880 1628976 5691056 -1629152 5691112 1629240 5691152 1630424 5688880 1629064 5691080 -1626096 5687632 1626096 5687664 1630424 5688880 1626048 5687512 -1626048 5687512 1626096 5687632 1630424 5688880 1626016 5687448 -1629240 5691152 1629328 5691224 1630424 5688880 1629152 5691112 -1630608 5692360 1630424 5688880 1629328 5691224 1629392 5691296 -1630608 5692360 1630704 5692448 1630424 5688880 1629392 5691296 -1630424 5688880 1629240 5691152 1629328 5691224 1629392 5691296 -1630608 5692360 1630424 5688880 1629392 5691296 1630448 5692312 -1630424 5688880 1630504 5688864 1663944 5646256 1663880 5646248 -1630864 5692824 1630504 5688864 1630424 5688880 1630800 5692640 -1630424 5688880 1630704 5692448 1630800 5692640 1630504 5688864 -1630424 5688880 1630608 5692360 1630704 5692448 1630504 5688864 -1630704 5692448 1630800 5692640 1630504 5688864 1630608 5692360 -1630800 5692640 1630864 5692824 1630504 5688864 1630704 5692448 -1663944 5646256 1630504 5688864 1630864 5692824 1630864 5692928 -1630424 5688880 1630608 5692360 1630504 5688864 1663880 5646248 -1630424 5688880 1629392 5691296 1630608 5692360 1630504 5688864 -1630608 5692360 1630704 5692448 1630504 5688864 1629392 5691296 -1630424 5688880 1629392 5691296 1630504 5688864 1663880 5646248 -1630504 5688864 1630864 5692824 1663944 5646256 1663880 5646248 -1630864 5692824 1663944 5646256 1630504 5688864 1630800 5692640 -1630424 5688880 1630504 5688864 1663880 5646248 1663776 5646144 -1630504 5688864 1663944 5646256 1663880 5646248 1663776 5646144 -1630424 5688880 1629392 5691296 1630504 5688864 1663776 5646144 -1630424 5688880 1630504 5688864 1663776 5646144 1657088 5639464 -1630424 5688880 1629392 5691296 1630504 5688864 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1630504 5688864 -1630424 5688880 1630504 5688864 1657088 5639464 1625824 5687280 -1630424 5688880 1629392 5691296 1630504 5688864 1625824 5687280 -1657088 5639464 1617256 5683416 1625824 5687280 1630504 5688864 -1630504 5688864 1663776 5646144 1657088 5639464 1625824 5687280 -1630424 5688880 1630504 5688864 1625824 5687280 1625856 5687296 -1630424 5688880 1629392 5691296 1630504 5688864 1625856 5687296 -1630504 5688864 1657088 5639464 1625824 5687280 1625856 5687296 -1630424 5688880 1630504 5688864 1625856 5687296 1625904 5687328 -1630424 5688880 1629392 5691296 1630504 5688864 1625904 5687328 -1630424 5688880 1630504 5688864 1625904 5687328 1625984 5687408 -1630424 5688880 1630504 5688864 1625984 5687408 1626016 5687448 -1630424 5688880 1629392 5691296 1630504 5688864 1625984 5687408 -1630504 5688864 1625824 5687280 1625856 5687296 1625904 5687328 -1630504 5688864 1625856 5687296 1625904 5687328 1625984 5687408 -1630504 5688864 1663880 5646248 1663776 5646144 1657088 5639464 -1629392 5691296 1630448 5692312 1630608 5692360 1630504 5688864 -1630424 5688880 1629328 5691224 1629392 5691296 1630504 5688864 -1663944 5646256 1630544 5688856 1630864 5692824 1630864 5692928 -1630504 5688864 1630544 5688856 1663944 5646256 1663880 5646248 -1630504 5688864 1630544 5688856 1663880 5646248 1663776 5646144 -1630544 5688856 1663944 5646256 1663880 5646248 1663776 5646144 -1630504 5688864 1630864 5692824 1630544 5688856 1663776 5646144 -1630864 5692824 1630544 5688856 1630504 5688864 1630800 5692640 -1630504 5688864 1630704 5692448 1630800 5692640 1630544 5688856 -1630504 5688864 1630608 5692360 1630704 5692448 1630544 5688856 -1630504 5688864 1629392 5691296 1630608 5692360 1630544 5688856 -1630608 5692360 1630704 5692448 1630544 5688856 1629392 5691296 -1630704 5692448 1630800 5692640 1630544 5688856 1630608 5692360 -1630504 5688864 1630424 5688880 1629392 5691296 1630544 5688856 -1630544 5688856 1663776 5646144 1630504 5688864 1629392 5691296 -1630800 5692640 1630864 5692824 1630544 5688856 1630704 5692448 -1630544 5688856 1630864 5692824 1663944 5646256 1663880 5646248 -1630864 5692824 1663944 5646256 1630544 5688856 1630800 5692640 -1630504 5688864 1630544 5688856 1663776 5646144 1657088 5639464 -1630544 5688856 1663880 5646248 1663776 5646144 1657088 5639464 -1630504 5688864 1629392 5691296 1630544 5688856 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1630544 5688856 -1630504 5688864 1630544 5688856 1657088 5639464 1625824 5687280 -1630504 5688864 1629392 5691296 1630544 5688856 1625824 5687280 -1657088 5639464 1617256 5683416 1625824 5687280 1630544 5688856 -1630504 5688864 1630544 5688856 1625824 5687280 1625856 5687296 -1630504 5688864 1629392 5691296 1630544 5688856 1625856 5687296 -1630544 5688856 1657088 5639464 1625824 5687280 1625856 5687296 -1630504 5688864 1630544 5688856 1625856 5687296 1625904 5687328 -1630504 5688864 1629392 5691296 1630544 5688856 1625904 5687328 -1630544 5688856 1625824 5687280 1625856 5687296 1625904 5687328 -1630504 5688864 1630544 5688856 1625904 5687328 1625984 5687408 -1630504 5688864 1629392 5691296 1630544 5688856 1625984 5687408 -1630504 5688864 1630544 5688856 1625984 5687408 1630424 5688880 -1630544 5688856 1625856 5687296 1625904 5687328 1625984 5687408 -1630544 5688856 1663776 5646144 1657088 5639464 1625824 5687280 -1629392 5691296 1630448 5692312 1630608 5692360 1630544 5688856 -1663944 5646256 1630632 5688872 1630864 5692824 1630864 5692928 -1630544 5688856 1630632 5688872 1663944 5646256 1663880 5646248 -1630544 5688856 1630632 5688872 1663880 5646248 1663776 5646144 -1630544 5688856 1630632 5688872 1663776 5646144 1657088 5639464 -1630632 5688872 1663880 5646248 1663776 5646144 1657088 5639464 -1630632 5688872 1663944 5646256 1663880 5646248 1663776 5646144 -1630544 5688856 1630864 5692824 1630632 5688872 1657088 5639464 -1630864 5692824 1630632 5688872 1630544 5688856 1630800 5692640 -1630544 5688856 1630704 5692448 1630800 5692640 1630632 5688872 -1630544 5688856 1630608 5692360 1630704 5692448 1630632 5688872 -1630544 5688856 1629392 5691296 1630608 5692360 1630632 5688872 -1630544 5688856 1630504 5688864 1629392 5691296 1630632 5688872 -1629392 5691296 1630608 5692360 1630632 5688872 1630504 5688864 -1630608 5692360 1630704 5692448 1630632 5688872 1629392 5691296 -1630504 5688864 1630424 5688880 1629392 5691296 1630632 5688872 -1630504 5688864 1630424 5688880 1630632 5688872 1630544 5688856 -1629392 5691296 1630608 5692360 1630632 5688872 1630424 5688880 -1630704 5692448 1630800 5692640 1630632 5688872 1630608 5692360 -1630632 5688872 1657088 5639464 1630544 5688856 1630504 5688864 -1630800 5692640 1630864 5692824 1630632 5688872 1630704 5692448 -1630632 5688872 1630864 5692824 1663944 5646256 1663880 5646248 -1630864 5692824 1663944 5646256 1630632 5688872 1630800 5692640 -1663776 5646144 1663688 5645984 1657088 5639464 1630632 5688872 -1630544 5688856 1630632 5688872 1657088 5639464 1625824 5687280 -1630632 5688872 1663776 5646144 1657088 5639464 1625824 5687280 -1630544 5688856 1630504 5688864 1630632 5688872 1625824 5687280 -1657088 5639464 1617256 5683416 1625824 5687280 1630632 5688872 -1630544 5688856 1630632 5688872 1625824 5687280 1625856 5687296 -1629392 5691296 1630448 5692312 1630608 5692360 1630632 5688872 -1630424 5688880 1629328 5691224 1629392 5691296 1630632 5688872 -1663944 5646256 1630728 5688896 1630864 5692824 1630864 5692928 -1630632 5688872 1630728 5688896 1663944 5646256 1663880 5646248 -1630632 5688872 1630728 5688896 1663880 5646248 1663776 5646144 -1630632 5688872 1630728 5688896 1663776 5646144 1657088 5639464 -1630632 5688872 1630728 5688896 1657088 5639464 1625824 5687280 -1630728 5688896 1663880 5646248 1663776 5646144 1657088 5639464 -1630728 5688896 1663944 5646256 1663880 5646248 1663776 5646144 -1630632 5688872 1630864 5692824 1630728 5688896 1657088 5639464 -1630864 5692824 1630728 5688896 1630632 5688872 1630800 5692640 -1630632 5688872 1630704 5692448 1630800 5692640 1630728 5688896 -1630632 5688872 1630608 5692360 1630704 5692448 1630728 5688896 -1630632 5688872 1629392 5691296 1630608 5692360 1630728 5688896 -1630632 5688872 1630424 5688880 1629392 5691296 1630728 5688896 -1629392 5691296 1630608 5692360 1630728 5688896 1630424 5688880 -1630632 5688872 1630504 5688864 1630424 5688880 1630728 5688896 -1630608 5692360 1630704 5692448 1630728 5688896 1629392 5691296 -1630704 5692448 1630800 5692640 1630728 5688896 1630608 5692360 -1630728 5688896 1657088 5639464 1630632 5688872 1630424 5688880 -1630800 5692640 1630864 5692824 1630728 5688896 1630704 5692448 -1630728 5688896 1630864 5692824 1663944 5646256 1663880 5646248 -1630864 5692824 1663944 5646256 1630728 5688896 1630800 5692640 -1663776 5646144 1663688 5645984 1657088 5639464 1630728 5688896 -1629392 5691296 1630448 5692312 1630608 5692360 1630728 5688896 -1630424 5688880 1629328 5691224 1629392 5691296 1630728 5688896 -1663944 5646256 1630816 5688920 1630864 5692824 1630864 5692928 -1630728 5688896 1630816 5688920 1663944 5646256 1663880 5646248 -1630728 5688896 1630816 5688920 1663880 5646248 1663776 5646144 -1630728 5688896 1630816 5688920 1663776 5646144 1657088 5639464 -1630728 5688896 1630816 5688920 1657088 5639464 1630632 5688872 -1630816 5688920 1663880 5646248 1663776 5646144 1657088 5639464 -1630816 5688920 1663944 5646256 1663880 5646248 1663776 5646144 -1630728 5688896 1630864 5692824 1630816 5688920 1657088 5639464 -1630864 5692824 1630816 5688920 1630728 5688896 1630800 5692640 -1630728 5688896 1630704 5692448 1630800 5692640 1630816 5688920 -1630728 5688896 1630608 5692360 1630704 5692448 1630816 5688920 -1630728 5688896 1629392 5691296 1630608 5692360 1630816 5688920 -1630728 5688896 1630424 5688880 1629392 5691296 1630816 5688920 -1630728 5688896 1630632 5688872 1630424 5688880 1630816 5688920 -1629392 5691296 1630608 5692360 1630816 5688920 1630424 5688880 -1630608 5692360 1630704 5692448 1630816 5688920 1629392 5691296 -1630704 5692448 1630800 5692640 1630816 5688920 1630608 5692360 -1630816 5688920 1657088 5639464 1630728 5688896 1630424 5688880 -1630800 5692640 1630864 5692824 1630816 5688920 1630704 5692448 -1630816 5688920 1630864 5692824 1663944 5646256 1663880 5646248 -1630864 5692824 1663944 5646256 1630816 5688920 1630800 5692640 -1663776 5646144 1663688 5645984 1657088 5639464 1630816 5688920 -1629392 5691296 1630448 5692312 1630608 5692360 1630816 5688920 -1629392 5691296 1630448 5692312 1630816 5688920 1630424 5688880 -1630608 5692360 1630704 5692448 1630816 5688920 1630448 5692312 -1630424 5688880 1629328 5691224 1629392 5691296 1630816 5688920 -1629392 5691296 1629392 5691368 1630448 5692312 1630816 5688920 -1663944 5646256 1630904 5688944 1630864 5692824 1630864 5692928 -1630816 5688920 1630904 5688944 1663944 5646256 1663880 5646248 -1630816 5688920 1630904 5688944 1663880 5646248 1663776 5646144 -1630816 5688920 1630904 5688944 1663776 5646144 1657088 5639464 -1630816 5688920 1630904 5688944 1657088 5639464 1630728 5688896 -1630904 5688944 1663880 5646248 1663776 5646144 1657088 5639464 -1630904 5688944 1663944 5646256 1663880 5646248 1663776 5646144 -1630816 5688920 1630864 5692824 1630904 5688944 1657088 5639464 -1630864 5692824 1630904 5688944 1630816 5688920 1630800 5692640 -1630816 5688920 1630704 5692448 1630800 5692640 1630904 5688944 -1630816 5688920 1630608 5692360 1630704 5692448 1630904 5688944 -1630816 5688920 1630448 5692312 1630608 5692360 1630904 5688944 -1630608 5692360 1630704 5692448 1630904 5688944 1630448 5692312 -1630704 5692448 1630800 5692640 1630904 5688944 1630608 5692360 -1630904 5688944 1657088 5639464 1630816 5688920 1630448 5692312 -1630800 5692640 1630864 5692824 1630904 5688944 1630704 5692448 -1630904 5688944 1630864 5692824 1663944 5646256 1663880 5646248 -1630864 5692824 1663944 5646256 1630904 5688944 1630800 5692640 -1663776 5646144 1663688 5645984 1657088 5639464 1630904 5688944 -1630816 5688920 1629392 5691296 1630448 5692312 1630904 5688944 -1630816 5688920 1630424 5688880 1629392 5691296 1630904 5688944 -1630448 5692312 1630608 5692360 1630904 5688944 1629392 5691296 -1630816 5688920 1629392 5691296 1630904 5688944 1657088 5639464 -1629392 5691296 1629392 5691368 1630448 5692312 1630904 5688944 -1663944 5646256 1630992 5688984 1630864 5692824 1630864 5692928 -1630904 5688944 1630992 5688984 1663944 5646256 1663880 5646248 -1630904 5688944 1630992 5688984 1663880 5646248 1663776 5646144 -1630904 5688944 1630992 5688984 1663776 5646144 1657088 5639464 -1630992 5688984 1663944 5646256 1663880 5646248 1663776 5646144 -1630904 5688944 1630864 5692824 1630992 5688984 1663776 5646144 -1630864 5692824 1630992 5688984 1630904 5688944 1630800 5692640 -1630904 5688944 1630704 5692448 1630800 5692640 1630992 5688984 -1630904 5688944 1630608 5692360 1630704 5692448 1630992 5688984 -1630904 5688944 1630448 5692312 1630608 5692360 1630992 5688984 -1630904 5688944 1629392 5691296 1630448 5692312 1630992 5688984 -1630448 5692312 1630608 5692360 1630992 5688984 1629392 5691296 -1630608 5692360 1630704 5692448 1630992 5688984 1630448 5692312 -1630704 5692448 1630800 5692640 1630992 5688984 1630608 5692360 -1630992 5688984 1663776 5646144 1630904 5688944 1629392 5691296 -1630800 5692640 1630864 5692824 1630992 5688984 1630704 5692448 -1630992 5688984 1630864 5692824 1663944 5646256 1663880 5646248 -1630864 5692824 1663944 5646256 1630992 5688984 1630800 5692640 -1630904 5688944 1630816 5688920 1629392 5691296 1630992 5688984 -1630816 5688920 1630424 5688880 1629392 5691296 1630992 5688984 -1630816 5688920 1630728 5688896 1630424 5688880 1630992 5688984 -1629392 5691296 1630448 5692312 1630992 5688984 1630424 5688880 -1630904 5688944 1630816 5688920 1630992 5688984 1663776 5646144 -1630816 5688920 1630424 5688880 1630992 5688984 1630904 5688944 -1630424 5688880 1629328 5691224 1629392 5691296 1630992 5688984 -1629392 5691296 1629392 5691368 1630448 5692312 1630992 5688984 -1663944 5646256 1631080 5689008 1630864 5692824 1630864 5692928 -1630992 5688984 1631080 5689008 1663944 5646256 1663880 5646248 -1630992 5688984 1631080 5689008 1663880 5646248 1663776 5646144 -1630992 5688984 1631080 5689008 1663776 5646144 1630904 5688944 -1663776 5646144 1657088 5639464 1630904 5688944 1631080 5689008 -1657088 5639464 1630816 5688920 1630904 5688944 1631080 5689008 -1630904 5688944 1630992 5688984 1631080 5689008 1657088 5639464 -1631080 5689008 1663880 5646248 1663776 5646144 1657088 5639464 -1631080 5689008 1663944 5646256 1663880 5646248 1663776 5646144 -1630992 5688984 1630864 5692824 1631080 5689008 1630904 5688944 -1630864 5692824 1631080 5689008 1630992 5688984 1630800 5692640 -1630992 5688984 1630704 5692448 1630800 5692640 1631080 5689008 -1630992 5688984 1630608 5692360 1630704 5692448 1631080 5689008 -1630992 5688984 1630448 5692312 1630608 5692360 1631080 5689008 -1630992 5688984 1629392 5691296 1630448 5692312 1631080 5689008 -1630992 5688984 1630424 5688880 1629392 5691296 1631080 5689008 -1630448 5692312 1630608 5692360 1631080 5689008 1629392 5691296 -1630608 5692360 1630704 5692448 1631080 5689008 1630448 5692312 -1630704 5692448 1630800 5692640 1631080 5689008 1630608 5692360 -1631080 5689008 1630904 5688944 1630992 5688984 1629392 5691296 -1630800 5692640 1630864 5692824 1631080 5689008 1630704 5692448 -1663944 5646256 1663880 5646248 1631080 5689008 1630864 5692928 -1631080 5689008 1630800 5692640 1630864 5692824 1630864 5692928 -1663944 5646256 1631080 5689008 1630864 5692928 1743800 5687320 -1663776 5646144 1663688 5645984 1657088 5639464 1631080 5689008 -1629392 5691296 1629392 5691368 1630448 5692312 1631080 5689008 -1630864 5692928 1631152 5689072 1631080 5689008 1630864 5692824 -1631080 5689008 1631152 5689072 1663944 5646256 1663880 5646248 -1631080 5689008 1631152 5689072 1663880 5646248 1663776 5646144 -1631152 5689072 1663880 5646248 1631080 5689008 1630864 5692824 -1631080 5689008 1630800 5692640 1630864 5692824 1631152 5689072 -1630864 5692824 1630864 5692928 1631152 5689072 1630800 5692640 -1631080 5689008 1630704 5692448 1630800 5692640 1631152 5689072 -1631080 5689008 1630608 5692360 1630704 5692448 1631152 5689072 -1631080 5689008 1630448 5692312 1630608 5692360 1631152 5689072 -1631080 5689008 1629392 5691296 1630448 5692312 1631152 5689072 -1631080 5689008 1630992 5688984 1629392 5691296 1631152 5689072 -1630992 5688984 1630424 5688880 1629392 5691296 1631152 5689072 -1630992 5688984 1630816 5688920 1630424 5688880 1631152 5689072 -1630992 5688984 1630424 5688880 1631152 5689072 1631080 5689008 -1629392 5691296 1630448 5692312 1631152 5689072 1630424 5688880 -1630448 5692312 1630608 5692360 1631152 5689072 1629392 5691296 -1630608 5692360 1630704 5692448 1631152 5689072 1630448 5692312 -1630704 5692448 1630800 5692640 1631152 5689072 1630608 5692360 -1631080 5689008 1630992 5688984 1631152 5689072 1663880 5646248 -1630800 5692640 1630864 5692824 1631152 5689072 1630704 5692448 -1631152 5689072 1630864 5692928 1663944 5646256 1663880 5646248 -1630864 5692928 1663944 5646256 1631152 5689072 1630864 5692824 -1663944 5646256 1631152 5689072 1630864 5692928 1743800 5687320 -1630424 5688880 1629328 5691224 1629392 5691296 1631152 5689072 -1629392 5691296 1629392 5691368 1630448 5692312 1631152 5689072 -1631152 5689072 1631216 5689136 1663944 5646256 1663880 5646248 -1631152 5689072 1631216 5689136 1663880 5646248 1631080 5689008 -1631152 5689072 1630864 5692928 1631216 5689136 1663880 5646248 -1630864 5692928 1631216 5689136 1631152 5689072 1630864 5692824 -1631152 5689072 1630800 5692640 1630864 5692824 1631216 5689136 -1631152 5689072 1630704 5692448 1630800 5692640 1631216 5689136 -1630800 5692640 1630864 5692824 1631216 5689136 1630704 5692448 -1631152 5689072 1630608 5692360 1630704 5692448 1631216 5689136 -1631152 5689072 1630448 5692312 1630608 5692360 1631216 5689136 -1631152 5689072 1629392 5691296 1630448 5692312 1631216 5689136 -1631152 5689072 1630424 5688880 1629392 5691296 1631216 5689136 -1631152 5689072 1630992 5688984 1630424 5688880 1631216 5689136 -1630992 5688984 1630816 5688920 1630424 5688880 1631216 5689136 -1630816 5688920 1630728 5688896 1630424 5688880 1631216 5689136 -1630992 5688984 1630816 5688920 1631216 5689136 1631152 5689072 -1631152 5689072 1631080 5689008 1630992 5688984 1631216 5689136 -1630424 5688880 1629392 5691296 1631216 5689136 1630816 5688920 -1629392 5691296 1630448 5692312 1631216 5689136 1630424 5688880 -1630448 5692312 1630608 5692360 1631216 5689136 1629392 5691296 -1630608 5692360 1630704 5692448 1631216 5689136 1630448 5692312 -1630704 5692448 1630800 5692640 1631216 5689136 1630608 5692360 -1631216 5689136 1663880 5646248 1631152 5689072 1630992 5688984 -1630864 5692824 1630864 5692928 1631216 5689136 1630800 5692640 -1631216 5689136 1630864 5692928 1663944 5646256 1663880 5646248 -1630864 5692928 1663944 5646256 1631216 5689136 1630864 5692824 -1663944 5646256 1631216 5689136 1630864 5692928 1743800 5687320 -1630992 5688984 1630904 5688944 1630816 5688920 1631216 5689136 -1630424 5688880 1629328 5691224 1629392 5691296 1631216 5689136 -1630424 5688880 1629328 5691224 1631216 5689136 1630816 5688920 -1629392 5691296 1630448 5692312 1631216 5689136 1629328 5691224 -1630424 5688880 1629240 5691152 1629328 5691224 1631216 5689136 -1629392 5691296 1629392 5691368 1630448 5692312 1631216 5689136 -1630800 5692640 1631208 5689208 1631216 5689136 1630704 5692448 -1631216 5689136 1630608 5692360 1630704 5692448 1631208 5689208 -1630704 5692448 1630800 5692640 1631208 5689208 1630608 5692360 -1631216 5689136 1630448 5692312 1630608 5692360 1631208 5689208 -1631216 5689136 1629392 5691296 1630448 5692312 1631208 5689208 -1631216 5689136 1629328 5691224 1629392 5691296 1631208 5689208 -1629392 5691296 1630448 5692312 1631208 5689208 1629328 5691224 -1630448 5692312 1630608 5692360 1631208 5689208 1629392 5691296 -1630608 5692360 1630704 5692448 1631208 5689208 1630448 5692312 -1631216 5689136 1631208 5689208 1630864 5692824 1630864 5692928 -1631208 5689208 1630864 5692928 1631216 5689136 1629328 5691224 -1631216 5689136 1631208 5689208 1630864 5692928 1663944 5646256 -1631208 5689208 1630864 5692824 1630864 5692928 1663944 5646256 -1631216 5689136 1631208 5689208 1663944 5646256 1663880 5646248 -1631216 5689136 1629328 5691224 1631208 5689208 1663944 5646256 -1631208 5689208 1630800 5692640 1630864 5692824 1630864 5692928 -1630800 5692640 1630864 5692824 1631208 5689208 1630704 5692448 -1630864 5692928 1743800 5687320 1663944 5646256 1631208 5689208 -1631216 5689136 1630424 5688880 1629328 5691224 1631208 5689208 -1631216 5689136 1630816 5688920 1630424 5688880 1631208 5689208 -1630816 5688920 1630728 5688896 1630424 5688880 1631208 5689208 -1630728 5688896 1630632 5688872 1630424 5688880 1631208 5689208 -1631216 5689136 1630992 5688984 1630816 5688920 1631208 5689208 -1631216 5689136 1631152 5689072 1630992 5688984 1631208 5689208 -1630992 5688984 1630816 5688920 1631208 5689208 1631152 5689072 -1631152 5689072 1631080 5689008 1630992 5688984 1631208 5689208 -1630816 5688920 1630728 5688896 1631208 5689208 1630992 5688984 -1629328 5691224 1629392 5691296 1631208 5689208 1630424 5688880 -1631216 5689136 1631152 5689072 1631208 5689208 1663944 5646256 -1630424 5688880 1629240 5691152 1629328 5691224 1631208 5689208 -1630992 5688984 1630904 5688944 1630816 5688920 1631208 5689208 -1630992 5688984 1630904 5688944 1631208 5689208 1631152 5689072 -1630816 5688920 1630728 5688896 1631208 5689208 1630904 5688944 -1630424 5688880 1629328 5691224 1631208 5689208 1630728 5688896 -1629392 5691296 1629392 5691368 1630448 5692312 1631208 5689208 -1631208 5689208 1631152 5689248 1629328 5691224 1629392 5691296 -1631208 5689208 1631152 5689248 1629392 5691296 1630448 5692312 -1631152 5689248 1629328 5691224 1629392 5691296 1630448 5692312 -1631208 5689208 1631152 5689248 1630448 5692312 1630608 5692360 -1631152 5689248 1629392 5691296 1630448 5692312 1630608 5692360 -1631208 5689208 1631152 5689248 1630608 5692360 1630704 5692448 -1631208 5689208 1631152 5689248 1630704 5692448 1630800 5692640 -1631152 5689248 1630448 5692312 1630608 5692360 1630704 5692448 -1631208 5689208 1630424 5688880 1631152 5689248 1630704 5692448 -1631152 5689248 1630424 5688880 1629328 5691224 1629392 5691296 -1629328 5691224 1631152 5689248 1630424 5688880 1629240 5691152 -1630424 5688880 1631152 5689248 1631208 5689208 1630728 5688896 -1630424 5688880 1631152 5689248 1630728 5688896 1630632 5688872 -1631208 5689208 1630816 5688920 1630728 5688896 1631152 5689248 -1631208 5689208 1630904 5688944 1630816 5688920 1631152 5689248 -1630816 5688920 1630728 5688896 1631152 5689248 1630904 5688944 -1631152 5689248 1630704 5692448 1631208 5689208 1630904 5688944 -1630424 5688880 1629328 5691224 1631152 5689248 1630728 5688896 -1631208 5689208 1630992 5688984 1630904 5688944 1631152 5689248 -1631208 5689208 1631152 5689072 1630992 5688984 1631152 5689248 -1631208 5689208 1631216 5689136 1631152 5689072 1631152 5689248 -1631152 5689072 1630992 5688984 1631152 5689248 1631216 5689136 -1631152 5689072 1631080 5689008 1630992 5688984 1631152 5689248 -1631152 5689072 1631080 5689008 1631152 5689248 1631216 5689136 -1630904 5688944 1630816 5688920 1631152 5689248 1630992 5688984 -1631208 5689208 1631216 5689136 1631152 5689248 1630704 5692448 -1630992 5688984 1630904 5688944 1631152 5689248 1631080 5689008 -1630728 5688896 1630424 5688880 1631152 5689248 1630816 5688920 -1629392 5691296 1629392 5691368 1630448 5692312 1631152 5689248 -1631152 5689248 1631120 5689248 1629328 5691224 1629392 5691296 -1631152 5689248 1631120 5689248 1629392 5691296 1630448 5692312 -1631152 5689248 1631120 5689248 1630448 5692312 1630608 5692360 -1631120 5689248 1629392 5691296 1630448 5692312 1630608 5692360 -1631152 5689248 1631120 5689248 1630608 5692360 1630704 5692448 -1631120 5689248 1629328 5691224 1629392 5691296 1630448 5692312 -1631152 5689248 1630424 5688880 1631120 5689248 1630608 5692360 -1630424 5688880 1631120 5689248 1631152 5689248 1630728 5688896 -1630424 5688880 1631120 5689248 1630728 5688896 1630632 5688872 -1631120 5689248 1630608 5692360 1631152 5689248 1630728 5688896 -1631120 5689248 1630424 5688880 1629328 5691224 1629392 5691296 -1630424 5688880 1629328 5691224 1631120 5689248 1630728 5688896 -1629328 5691224 1631120 5689248 1630424 5688880 1629240 5691152 -1631152 5689248 1630816 5688920 1630728 5688896 1631120 5689248 -1631152 5689248 1630904 5688944 1630816 5688920 1631120 5689248 -1631152 5689248 1630992 5688984 1630904 5688944 1631120 5689248 -1630904 5688944 1630816 5688920 1631120 5689248 1630992 5688984 -1631152 5689248 1630992 5688984 1631120 5689248 1630608 5692360 -1630728 5688896 1630424 5688880 1631120 5689248 1630816 5688920 -1631152 5689248 1631080 5689008 1630992 5688984 1631120 5689248 -1631152 5689248 1631152 5689072 1631080 5689008 1631120 5689248 -1631152 5689248 1631216 5689136 1631152 5689072 1631120 5689248 -1631152 5689248 1631208 5689208 1631216 5689136 1631120 5689248 -1631216 5689136 1631152 5689072 1631120 5689248 1631208 5689208 -1631152 5689072 1631080 5689008 1631120 5689248 1631216 5689136 -1630992 5688984 1630904 5688944 1631120 5689248 1631080 5689008 -1631152 5689248 1631208 5689208 1631120 5689248 1630608 5692360 -1631080 5689008 1630992 5688984 1631120 5689248 1631152 5689072 -1630816 5688920 1630728 5688896 1631120 5689248 1630904 5688944 -1629392 5691296 1629392 5691368 1630448 5692312 1631120 5689248 -1631120 5689248 1631040 5689264 1629328 5691224 1629392 5691296 -1631120 5689248 1631040 5689264 1629392 5691296 1630448 5692312 -1631120 5689248 1631040 5689264 1630448 5692312 1630608 5692360 -1631120 5689248 1631040 5689264 1630608 5692360 1631152 5689248 -1631040 5689264 1630448 5692312 1630608 5692360 1631152 5689248 -1630608 5692360 1630704 5692448 1631152 5689248 1631040 5689264 -1631040 5689264 1629392 5691296 1630448 5692312 1630608 5692360 -1631040 5689264 1629328 5691224 1629392 5691296 1630448 5692312 -1631120 5689248 1630424 5688880 1631040 5689264 1631152 5689248 -1630424 5688880 1631040 5689264 1631120 5689248 1630728 5688896 -1630424 5688880 1631040 5689264 1630728 5688896 1630632 5688872 -1630424 5688880 1631040 5689264 1630632 5688872 1630504 5688864 -1631120 5689248 1630816 5688920 1630728 5688896 1631040 5689264 -1631040 5689264 1631152 5689248 1631120 5689248 1630816 5688920 -1631040 5689264 1630816 5688920 1630728 5688896 1630632 5688872 -1631040 5689264 1630424 5688880 1629328 5691224 1629392 5691296 -1630424 5688880 1629328 5691224 1631040 5689264 1630632 5688872 -1629328 5691224 1631040 5689264 1630424 5688880 1629240 5691152 -1629328 5691224 1629392 5691296 1631040 5689264 1629240 5691152 -1631040 5689264 1630632 5688872 1630424 5688880 1629240 5691152 -1630424 5688880 1629152 5691112 1629240 5691152 1631040 5689264 -1631120 5689248 1630904 5688944 1630816 5688920 1631040 5689264 -1631120 5689248 1630992 5688984 1630904 5688944 1631040 5689264 -1631120 5689248 1631080 5689008 1630992 5688984 1631040 5689264 -1630992 5688984 1630904 5688944 1631040 5689264 1631080 5689008 -1630816 5688920 1630728 5688896 1631040 5689264 1630904 5688944 -1631120 5689248 1631080 5689008 1631040 5689264 1631152 5689248 -1631120 5689248 1631152 5689072 1631080 5689008 1631040 5689264 -1631120 5689248 1631216 5689136 1631152 5689072 1631040 5689264 -1631080 5689008 1630992 5688984 1631040 5689264 1631152 5689072 -1631120 5689248 1631152 5689072 1631040 5689264 1631152 5689248 -1630904 5688944 1630816 5688920 1631040 5689264 1630992 5688984 -1629392 5691296 1629392 5691368 1630448 5692312 1631040 5689264 -1630424 5688880 1630952 5689256 1631040 5689264 1630632 5688872 -1631040 5689264 1630728 5688896 1630632 5688872 1630952 5689256 -1630424 5688880 1630952 5689256 1630632 5688872 1630504 5688864 -1631040 5689264 1630816 5688920 1630728 5688896 1630952 5689256 -1630728 5688896 1630632 5688872 1630952 5689256 1630816 5688920 -1631040 5689264 1630904 5688944 1630816 5688920 1630952 5689256 -1630816 5688920 1630728 5688896 1630952 5689256 1630904 5688944 -1630952 5689256 1629240 5691152 1631040 5689264 1630904 5688944 -1630632 5688872 1630424 5688880 1630952 5689256 1630728 5688896 -1630424 5688880 1629240 5691152 1630952 5689256 1630632 5688872 -1631040 5689264 1630952 5689256 1629240 5691152 1629328 5691224 -1631040 5689264 1630952 5689256 1629328 5691224 1629392 5691296 -1631040 5689264 1630952 5689256 1629392 5691296 1630448 5692312 -1631040 5689264 1630904 5688944 1630952 5689256 1629392 5691296 -1630952 5689256 1630424 5688880 1629240 5691152 1629328 5691224 -1630952 5689256 1629240 5691152 1629328 5691224 1629392 5691296 -1629240 5691152 1630952 5689256 1630424 5688880 1629152 5691112 -1631040 5689264 1630992 5688984 1630904 5688944 1630952 5689256 -1631040 5689264 1631080 5689008 1630992 5688984 1630952 5689256 -1631040 5689264 1631152 5689072 1631080 5689008 1630952 5689256 -1630904 5688944 1630816 5688920 1630952 5689256 1630992 5688984 -1631040 5689264 1631080 5689008 1630952 5689256 1629392 5691296 -1630992 5688984 1630904 5688944 1630952 5689256 1631080 5689008 -1630952 5689256 1630904 5689232 1629240 5691152 1629328 5691224 -1630952 5689256 1630424 5688880 1630904 5689232 1629328 5691224 -1630424 5688880 1630904 5689232 1630952 5689256 1630632 5688872 -1630424 5688880 1630904 5689232 1630632 5688872 1630504 5688864 -1630632 5688872 1630544 5688856 1630504 5688864 1630904 5689232 -1630952 5689256 1630728 5688896 1630632 5688872 1630904 5689232 -1630952 5689256 1630816 5688920 1630728 5688896 1630904 5689232 -1630952 5689256 1630904 5688944 1630816 5688920 1630904 5689232 -1630816 5688920 1630728 5688896 1630904 5689232 1630904 5688944 -1630952 5689256 1630992 5688984 1630904 5688944 1630904 5689232 -1630904 5688944 1630816 5688920 1630904 5689232 1630992 5688984 -1630728 5688896 1630632 5688872 1630904 5689232 1630816 5688920 -1630904 5689232 1629328 5691224 1630952 5689256 1630992 5688984 -1630904 5689232 1630728 5688896 1630632 5688872 1630504 5688864 -1630904 5689232 1630424 5688880 1629240 5691152 1629328 5691224 -1630424 5688880 1629240 5691152 1630904 5689232 1630504 5688864 -1630952 5689256 1630904 5689232 1629328 5691224 1629392 5691296 -1630952 5689256 1630904 5689232 1629392 5691296 1631040 5689264 -1630904 5689232 1629240 5691152 1629328 5691224 1629392 5691296 -1630952 5689256 1630992 5688984 1630904 5689232 1629392 5691296 -1629240 5691152 1630904 5689232 1630424 5688880 1629152 5691112 -1630952 5689256 1631080 5689008 1630992 5688984 1630904 5689232 -1630904 5689232 1630816 5689208 1629240 5691152 1629328 5691224 -1630904 5689232 1630816 5689208 1629328 5691224 1629392 5691296 -1630816 5689208 1629240 5691152 1629328 5691224 1629392 5691296 -1630904 5689232 1630424 5688880 1630816 5689208 1629392 5691296 -1630424 5688880 1630816 5689208 1630904 5689232 1630504 5688864 -1630904 5689232 1630632 5688872 1630504 5688864 1630816 5689208 -1630632 5688872 1630544 5688856 1630504 5688864 1630816 5689208 -1630904 5689232 1630728 5688896 1630632 5688872 1630816 5689208 -1630632 5688872 1630504 5688864 1630816 5689208 1630728 5688896 -1630904 5689232 1630816 5688920 1630728 5688896 1630816 5689208 -1630904 5689232 1630904 5688944 1630816 5688920 1630816 5689208 -1630904 5689232 1630992 5688984 1630904 5688944 1630816 5689208 -1630904 5688944 1630816 5688920 1630816 5689208 1630992 5688984 -1630904 5689232 1630952 5689256 1630992 5688984 1630816 5689208 -1630816 5688920 1630728 5688896 1630816 5689208 1630904 5688944 -1630728 5688896 1630632 5688872 1630816 5689208 1630816 5688920 -1630816 5689208 1629392 5691296 1630904 5689232 1630992 5688984 -1630504 5688864 1630424 5688880 1630816 5689208 1630632 5688872 -1630816 5689208 1630424 5688880 1629240 5691152 1629328 5691224 -1630424 5688880 1629240 5691152 1630816 5689208 1630504 5688864 -1630904 5689232 1630816 5689208 1629392 5691296 1630952 5689256 -1629392 5691296 1631040 5689264 1630952 5689256 1630816 5689208 -1630816 5689208 1629328 5691224 1629392 5691296 1630952 5689256 -1630904 5689232 1630992 5688984 1630816 5689208 1630952 5689256 -1629240 5691152 1630816 5689208 1630424 5688880 1629152 5691112 -1630816 5689208 1630744 5689176 1629240 5691152 1629328 5691224 -1630816 5689208 1630744 5689176 1629328 5691224 1629392 5691296 -1630816 5689208 1630424 5688880 1630744 5689176 1629328 5691224 -1630424 5688880 1630744 5689176 1630816 5689208 1630504 5688864 -1630816 5689208 1630632 5688872 1630504 5688864 1630744 5689176 -1630632 5688872 1630544 5688856 1630504 5688864 1630744 5689176 -1630816 5689208 1630728 5688896 1630632 5688872 1630744 5689176 -1630816 5689208 1630816 5688920 1630728 5688896 1630744 5689176 -1630728 5688896 1630632 5688872 1630744 5689176 1630816 5688920 -1630816 5689208 1630904 5688944 1630816 5688920 1630744 5689176 -1630816 5689208 1630992 5688984 1630904 5688944 1630744 5689176 -1630816 5688920 1630728 5688896 1630744 5689176 1630904 5688944 -1630632 5688872 1630504 5688864 1630744 5689176 1630728 5688896 -1630744 5689176 1629328 5691224 1630816 5689208 1630904 5688944 -1630504 5688864 1630424 5688880 1630744 5689176 1630632 5688872 -1630744 5689176 1630424 5688880 1629240 5691152 1629328 5691224 -1630424 5688880 1629240 5691152 1630744 5689176 1630504 5688864 -1629240 5691152 1630744 5689176 1630424 5688880 1629152 5691112 -1629240 5691152 1629328 5691224 1630744 5689176 1629152 5691112 -1630744 5689176 1630504 5688864 1630424 5688880 1629152 5691112 -1630424 5688880 1629064 5691080 1629152 5691112 1630744 5689176 -1630424 5688880 1630648 5689136 1630744 5689176 1630504 5688864 -1630744 5689176 1630632 5688872 1630504 5688864 1630648 5689136 -1630632 5688872 1630544 5688856 1630504 5688864 1630648 5689136 -1630744 5689176 1630728 5688896 1630632 5688872 1630648 5689136 -1630744 5689176 1630816 5688920 1630728 5688896 1630648 5689136 -1630744 5689176 1630904 5688944 1630816 5688920 1630648 5689136 -1630728 5688896 1630632 5688872 1630648 5689136 1630816 5688920 -1630632 5688872 1630544 5688856 1630648 5689136 1630728 5688896 -1630648 5689136 1629152 5691112 1630744 5689176 1630816 5688920 -1630504 5688864 1630424 5688880 1630648 5689136 1630544 5688856 -1630424 5688880 1629152 5691112 1630648 5689136 1630504 5688864 -1629152 5691112 1630648 5689136 1630424 5688880 1629064 5691080 -1630744 5689176 1630648 5689136 1629152 5691112 1629240 5691152 -1630744 5689176 1630648 5689136 1629240 5691152 1629328 5691224 -1630744 5689176 1630648 5689136 1629328 5691224 1630816 5689208 -1630744 5689176 1630816 5688920 1630648 5689136 1629328 5691224 -1630648 5689136 1630424 5688880 1629152 5691112 1629240 5691152 -1630648 5689136 1629152 5691112 1629240 5691152 1629328 5691224 -1630648 5689136 1630608 5689104 1629152 5691112 1629240 5691152 -1630648 5689136 1630424 5688880 1630608 5689104 1629240 5691152 -1630424 5688880 1630608 5689104 1630648 5689136 1630504 5688864 -1630648 5689136 1630544 5688856 1630504 5688864 1630608 5689104 -1630648 5689136 1630632 5688872 1630544 5688856 1630608 5689104 -1630648 5689136 1630728 5688896 1630632 5688872 1630608 5689104 -1630632 5688872 1630544 5688856 1630608 5689104 1630728 5688896 -1630648 5689136 1630816 5688920 1630728 5688896 1630608 5689104 -1630544 5688856 1630504 5688864 1630608 5689104 1630632 5688872 -1630608 5689104 1629240 5691152 1630648 5689136 1630728 5688896 -1630504 5688864 1630424 5688880 1630608 5689104 1630544 5688856 -1630608 5689104 1630424 5688880 1629152 5691112 1629240 5691152 -1630424 5688880 1629152 5691112 1630608 5689104 1630504 5688864 -1629152 5691112 1630608 5689104 1630424 5688880 1629064 5691080 -1629152 5691112 1629240 5691152 1630608 5689104 1629064 5691080 -1630608 5689104 1630504 5688864 1630424 5688880 1629064 5691080 -1630424 5688880 1628976 5691056 1629064 5691080 1630608 5689104 -1630648 5689136 1630608 5689104 1629240 5691152 1629328 5691224 -1630424 5688880 1630520 5689048 1630608 5689104 1630504 5688864 -1630608 5689104 1630544 5688856 1630504 5688864 1630520 5689048 -1630608 5689104 1630632 5688872 1630544 5688856 1630520 5689048 -1630608 5689104 1630728 5688896 1630632 5688872 1630520 5689048 -1630544 5688856 1630504 5688864 1630520 5689048 1630632 5688872 -1630520 5689048 1629064 5691080 1630608 5689104 1630632 5688872 -1630504 5688864 1630424 5688880 1630520 5689048 1630544 5688856 -1630424 5688880 1629064 5691080 1630520 5689048 1630504 5688864 -1629064 5691080 1630520 5689048 1630424 5688880 1628976 5691056 -1629064 5691080 1630608 5689104 1630520 5689048 1628976 5691056 -1630520 5689048 1630504 5688864 1630424 5688880 1628976 5691056 -1630424 5688880 1628728 5691008 1628976 5691056 1630520 5689048 -1630608 5689104 1630520 5689048 1629064 5691080 1629152 5691112 -1630608 5689104 1630520 5689048 1629152 5691112 1629240 5691152 -1630608 5689104 1630520 5689048 1629240 5691152 1630648 5689136 -1630520 5689048 1629152 5691112 1629240 5691152 1630648 5689136 -1630608 5689104 1630632 5688872 1630520 5689048 1630648 5689136 -1630520 5689048 1628976 5691056 1629064 5691080 1629152 5691112 -1630520 5689048 1629064 5691080 1629152 5691112 1629240 5691152 -1629240 5691152 1629328 5691224 1630648 5689136 1630520 5689048 -1630424 5688880 1630496 5689024 1630520 5689048 1630504 5688864 -1630520 5689048 1630544 5688856 1630504 5688864 1630496 5689024 -1630520 5689048 1630632 5688872 1630544 5688856 1630496 5689024 -1630520 5689048 1630608 5689104 1630632 5688872 1630496 5689024 -1630544 5688856 1630504 5688864 1630496 5689024 1630632 5688872 -1630496 5689024 1628976 5691056 1630520 5689048 1630632 5688872 -1630504 5688864 1630424 5688880 1630496 5689024 1630544 5688856 -1630424 5688880 1628976 5691056 1630496 5689024 1630504 5688864 -1628976 5691056 1630496 5689024 1630424 5688880 1628728 5691008 -1630520 5689048 1630496 5689024 1628976 5691056 1629064 5691080 -1630520 5689048 1630496 5689024 1629064 5691080 1629152 5691112 -1630520 5689048 1630632 5688872 1630496 5689024 1629152 5691112 -1630496 5689024 1630424 5688880 1628976 5691056 1629064 5691080 -1630496 5689024 1628976 5691056 1629064 5691080 1629152 5691112 -1630520 5689048 1630496 5689024 1629152 5691112 1629240 5691152 -1630496 5689024 1630424 5688928 1628976 5691056 1629064 5691080 -1630496 5689024 1630424 5688880 1630424 5688928 1629064 5691080 -1630424 5688880 1630424 5688928 1630496 5689024 1630504 5688864 -1630496 5689024 1630544 5688856 1630504 5688864 1630424 5688928 -1630424 5688928 1629064 5691080 1630496 5689024 1630504 5688864 -1630424 5688928 1630424 5688880 1628976 5691056 1629064 5691080 -1630424 5688880 1628976 5691056 1630424 5688928 1630504 5688864 -1628976 5691056 1630424 5688928 1630424 5688880 1628728 5691008 -1628976 5691056 1629064 5691080 1630424 5688928 1628728 5691008 -1630424 5688928 1630504 5688864 1630424 5688880 1628728 5691008 -1628976 5691056 1630424 5688928 1628728 5691008 1628880 5691048 -1630424 5688880 1628640 5690984 1628728 5691008 1630424 5688928 -1630424 5688880 1628640 5690984 1630424 5688928 1630504 5688864 -1630424 5688880 1628112 5690744 1628640 5690984 1630424 5688928 -1628112 5690744 1628544 5690968 1628640 5690984 1630424 5688928 -1630424 5688880 1628112 5690744 1630424 5688928 1630504 5688864 -1630424 5688880 1628024 5690712 1628112 5690744 1630424 5688928 -1630424 5688880 1627944 5690696 1628024 5690712 1630424 5688928 -1630424 5688880 1628024 5690712 1630424 5688928 1630504 5688864 -1628112 5690744 1628640 5690984 1630424 5688928 1628024 5690712 -1628640 5690984 1628728 5691008 1630424 5688928 1628112 5690744 -1628728 5691008 1628976 5691056 1630424 5688928 1628640 5690984 -1630496 5689024 1630424 5688928 1629064 5691080 1629152 5691112 -1617256 5683416 1627152 5680768 1657088 5639464 1615256 5682392 -1657088 5639464 1657056 5639384 1615256 5682392 1627152 5680768 -1657056 5639384 1615160 5682368 1615256 5682392 1627152 5680768 -1657056 5639384 1615128 5682360 1615160 5682368 1627152 5680768 -1657056 5639384 1599875 5599875 1615128 5682360 1627152 5680768 -1615160 5682368 1615256 5682392 1627152 5680768 1615128 5682360 -1657056 5639384 1615128 5682360 1627152 5680768 1657088 5639464 -1617256 5683416 1627152 5680768 1615256 5682392 1615296 5682424 -1615256 5682392 1617256 5683416 1627152 5680768 1615160 5682368 -1617256 5683416 1625824 5687280 1627152 5680768 1615256 5682392 -1627152 5680768 1625824 5687280 1657088 5639464 1657056 5639384 -1625824 5687280 1627152 5680768 1617256 5683416 1625672 5687248 -1625824 5687280 1657088 5639464 1627152 5680768 1625672 5687248 -1627152 5680768 1615256 5682392 1617256 5683416 1625672 5687248 -1617256 5683416 1617344 5683488 1625672 5687248 1627152 5680768 -1617256 5683416 1617344 5683488 1627152 5680768 1615256 5682392 -1617344 5683488 1621048 5686008 1625672 5687248 1627152 5680768 -1617344 5683488 1617376 5683520 1621048 5686008 1627152 5680768 -1617376 5683520 1617424 5683592 1621048 5686008 1627152 5680768 -1617424 5683592 1620912 5685984 1621048 5686008 1627152 5680768 -1617424 5683592 1620912 5685984 1627152 5680768 1617376 5683520 -1617424 5683592 1620776 5686024 1620912 5685984 1627152 5680768 -1617376 5683520 1617424 5683592 1627152 5680768 1617344 5683488 -1621048 5686008 1625656 5687248 1625672 5687248 1627152 5680768 -1621048 5686008 1621112 5686056 1625656 5687248 1627152 5680768 -1625656 5687248 1625672 5687248 1627152 5680768 1621112 5686056 -1621112 5686056 1622296 5686800 1625656 5687248 1627152 5680768 -1622296 5686800 1625568 5687272 1625656 5687248 1627152 5680768 -1621112 5686056 1622296 5686800 1627152 5680768 1621048 5686008 -1625656 5687248 1625672 5687248 1627152 5680768 1625568 5687272 -1621112 5686056 1621744 5686536 1622296 5686800 1627152 5680768 -1622296 5686800 1622472 5686920 1625568 5687272 1627152 5680768 -1622296 5686800 1625568 5687272 1627152 5680768 1621112 5686056 -1621048 5686008 1621112 5686056 1627152 5680768 1620912 5685984 -1617344 5683488 1617376 5683520 1627152 5680768 1617256 5683416 -1625672 5687248 1625824 5687280 1627152 5680768 1625656 5687248 -1625824 5687280 1627152 5680768 1625672 5687248 1625736 5687272 -1657088 5639464 1627152 5680768 1625824 5687280 1630632 5688872 -1657088 5639464 1627152 5680768 1630632 5688872 1630728 5688896 -1657088 5639464 1627152 5680768 1630728 5688896 1630816 5688920 -1627152 5680768 1630632 5688872 1630728 5688896 1630816 5688920 -1657088 5639464 1627152 5680768 1630816 5688920 1630904 5688944 -1627152 5680768 1630728 5688896 1630816 5688920 1630904 5688944 -1657088 5639464 1627152 5680768 1630904 5688944 1631080 5689008 -1627152 5680768 1630816 5688920 1630904 5688944 1631080 5689008 -1657088 5639464 1627152 5680768 1631080 5689008 1663776 5646144 -1627152 5680768 1630904 5688944 1631080 5689008 1663776 5646144 -1630904 5688944 1630992 5688984 1631080 5689008 1627152 5680768 -1631080 5689008 1663880 5646248 1663776 5646144 1627152 5680768 -1631080 5689008 1663880 5646248 1627152 5680768 1630904 5688944 -1663776 5646144 1657088 5639464 1627152 5680768 1663880 5646248 -1631080 5689008 1631152 5689072 1663880 5646248 1627152 5680768 -1631080 5689008 1631152 5689072 1627152 5680768 1630904 5688944 -1663880 5646248 1663776 5646144 1627152 5680768 1631152 5689072 -1631152 5689072 1631216 5689136 1663880 5646248 1627152 5680768 -1663880 5646248 1663776 5646144 1627152 5680768 1631216 5689136 -1631152 5689072 1631216 5689136 1627152 5680768 1631080 5689008 -1631216 5689136 1663944 5646256 1663880 5646248 1627152 5680768 -1627152 5680768 1625672 5687248 1625824 5687280 1630632 5688872 -1657088 5639464 1657056 5639384 1627152 5680768 1663776 5646144 -1657088 5639464 1627152 5680768 1663776 5646144 1663688 5645984 -1627152 5680768 1625824 5687280 1630632 5688872 1630728 5688896 -1625824 5687280 1630544 5688856 1630632 5688872 1627152 5680768 -1625824 5687280 1630544 5688856 1627152 5680768 1625672 5687248 -1630632 5688872 1630728 5688896 1627152 5680768 1630544 5688856 -1625824 5687280 1625856 5687296 1630544 5688856 1627152 5680768 -1625824 5687280 1625856 5687296 1627152 5680768 1625672 5687248 -1625856 5687296 1625904 5687328 1630544 5688856 1627152 5680768 -1625856 5687296 1625904 5687328 1627152 5680768 1625824 5687280 -1625904 5687328 1625984 5687408 1630544 5688856 1627152 5680768 -1625904 5687328 1625984 5687408 1627152 5680768 1625856 5687296 -1625984 5687408 1630504 5688864 1630544 5688856 1627152 5680768 -1625984 5687408 1630424 5688880 1630504 5688864 1627152 5680768 -1625984 5687408 1626016 5687448 1630424 5688880 1627152 5680768 -1625984 5687408 1630424 5688880 1627152 5680768 1625904 5687328 -1630504 5688864 1630544 5688856 1627152 5680768 1630424 5688880 -1630544 5688856 1630632 5688872 1627152 5680768 1630504 5688864 -1615128 5682360 1626952 5680672 1657056 5639384 1599875 5599875 -1627152 5680768 1626952 5680672 1615128 5682360 1615160 5682368 -1627152 5680768 1626952 5680672 1615160 5682368 1615256 5682392 -1626952 5680672 1615128 5682360 1615160 5682368 1615256 5682392 -1657056 5639384 1626952 5680672 1627152 5680768 1657088 5639464 -1657056 5639384 1615128 5682360 1626952 5680672 1657088 5639464 -1627152 5680768 1626952 5680672 1615256 5682392 1617256 5683416 -1626952 5680672 1615160 5682368 1615256 5682392 1617256 5683416 -1615256 5682392 1615296 5682424 1617256 5683416 1626952 5680672 -1626952 5680672 1657056 5639384 1615128 5682360 1615160 5682368 -1627152 5680768 1626952 5680672 1617256 5683416 1617344 5683488 -1626952 5680672 1615256 5682392 1617256 5683416 1617344 5683488 -1627152 5680768 1657088 5639464 1626952 5680672 1617344 5683488 -1627152 5680768 1663776 5646144 1657088 5639464 1626952 5680672 -1627152 5680768 1626952 5680672 1617344 5683488 1617376 5683520 -1626952 5680672 1617256 5683416 1617344 5683488 1617376 5683520 -1627152 5680768 1657088 5639464 1626952 5680672 1617376 5683520 -1627152 5680768 1626952 5680672 1617376 5683520 1617424 5683592 -1627152 5680768 1626952 5680672 1617424 5683592 1620912 5685984 -1627152 5680768 1657088 5639464 1626952 5680672 1620912 5685984 -1617424 5683592 1620776 5686024 1620912 5685984 1626952 5680672 -1627152 5680768 1626952 5680672 1620912 5685984 1621048 5686008 -1626952 5680672 1617424 5683592 1620912 5685984 1621048 5686008 -1627152 5680768 1657088 5639464 1626952 5680672 1621048 5686008 -1626952 5680672 1617376 5683520 1617424 5683592 1620912 5685984 -1627152 5680768 1626952 5680672 1621048 5686008 1621112 5686056 -1627152 5680768 1657088 5639464 1626952 5680672 1621112 5686056 -1626952 5680672 1620912 5685984 1621048 5686008 1621112 5686056 -1627152 5680768 1626952 5680672 1621112 5686056 1622296 5686800 -1627152 5680768 1657088 5639464 1626952 5680672 1622296 5686800 -1621112 5686056 1621744 5686536 1622296 5686800 1626952 5680672 -1627152 5680768 1626952 5680672 1622296 5686800 1625568 5687272 -1627152 5680768 1657088 5639464 1626952 5680672 1625568 5687272 -1627152 5680768 1626952 5680672 1625568 5687272 1625656 5687248 -1627152 5680768 1657088 5639464 1626952 5680672 1625656 5687248 -1626952 5680672 1621112 5686056 1622296 5686800 1625568 5687272 -1627152 5680768 1626952 5680672 1625656 5687248 1625672 5687248 -1622296 5686800 1622472 5686920 1625568 5687272 1626952 5680672 -1626952 5680672 1622296 5686800 1625568 5687272 1625656 5687248 -1626952 5680672 1621048 5686008 1621112 5686056 1622296 5686800 -1626952 5680672 1617344 5683488 1617376 5683520 1617424 5683592 -1657056 5639384 1626744 5680528 1626952 5680672 1657088 5639464 -1615128 5682360 1626744 5680528 1657056 5639384 1599875 5599875 -1626952 5680672 1627152 5680768 1657088 5639464 1626744 5680528 -1657088 5639464 1657056 5639384 1626744 5680528 1627152 5680768 -1626952 5680672 1626744 5680528 1615128 5682360 1615160 5682368 -1626952 5680672 1626744 5680528 1615160 5682368 1615256 5682392 -1626952 5680672 1626744 5680528 1615256 5682392 1617256 5683416 -1626744 5680528 1615160 5682368 1615256 5682392 1617256 5683416 -1615256 5682392 1615296 5682424 1617256 5683416 1626744 5680528 -1626952 5680672 1626744 5680528 1617256 5683416 1617344 5683488 -1626744 5680528 1615256 5682392 1617256 5683416 1617344 5683488 -1626952 5680672 1626744 5680528 1617344 5683488 1617376 5683520 -1626744 5680528 1617256 5683416 1617344 5683488 1617376 5683520 -1627152 5680768 1663776 5646144 1657088 5639464 1626744 5680528 -1657056 5639384 1599875 5599875 1626744 5680528 1657088 5639464 -1615128 5682360 1615160 5682368 1626744 5680528 1599875 5599875 -1626744 5680528 1617376 5683520 1626952 5680672 1627152 5680768 -1657056 5639384 1657088 5639296 1599875 5599875 1626744 5680528 -1615128 5682360 1626744 5680528 1599875 5599875 1601464 5680984 -1626952 5680672 1626744 5680528 1617376 5683520 1617424 5683592 -1626744 5680528 1617344 5683488 1617376 5683520 1617424 5683592 -1626952 5680672 1626744 5680528 1617424 5683592 1620912 5685984 -1626952 5680672 1626744 5680528 1620912 5685984 1621048 5686008 -1617424 5683592 1620776 5686024 1620912 5685984 1626744 5680528 -1626952 5680672 1626744 5680528 1621048 5686008 1621112 5686056 -1626744 5680528 1620912 5685984 1621048 5686008 1621112 5686056 -1626744 5680528 1617424 5683592 1620912 5685984 1621048 5686008 -1626952 5680672 1627152 5680768 1626744 5680528 1621112 5686056 -1626952 5680672 1626744 5680528 1621112 5686056 1622296 5686800 -1626744 5680528 1621048 5686008 1621112 5686056 1622296 5686800 -1626952 5680672 1626744 5680528 1622296 5686800 1625568 5687272 -1626952 5680672 1627152 5680768 1626744 5680528 1625568 5687272 -1621112 5686056 1621744 5686536 1622296 5686800 1626744 5680528 -1622296 5686800 1622472 5686920 1625568 5687272 1626744 5680528 -1626952 5680672 1626744 5680528 1625568 5687272 1625656 5687248 -1626952 5680672 1626744 5680528 1625656 5687248 1627152 5680768 -1626744 5680528 1622296 5686800 1625568 5687272 1625656 5687248 -1626952 5680672 1627152 5680768 1626744 5680528 1625656 5687248 -1626744 5680528 1621112 5686056 1622296 5686800 1625568 5687272 -1626744 5680528 1617376 5683520 1617424 5683592 1620912 5685984 -1626744 5680528 1615128 5682360 1615160 5682368 1615256 5682392 -1599875 5599875 1626632 5680392 1626744 5680528 1657056 5639384 -1626632 5680392 1615128 5682360 1626744 5680528 1657056 5639384 -1626744 5680528 1657088 5639464 1657056 5639384 1626632 5680392 -1657056 5639384 1599875 5599875 1626632 5680392 1657088 5639464 -1626744 5680528 1627152 5680768 1657088 5639464 1626632 5680392 -1626744 5680528 1626952 5680672 1627152 5680768 1626632 5680392 -1626744 5680528 1626952 5680672 1626632 5680392 1615128 5682360 -1627152 5680768 1663776 5646144 1657088 5639464 1626632 5680392 -1627152 5680768 1657088 5639464 1626632 5680392 1626952 5680672 -1657088 5639464 1657056 5639384 1626632 5680392 1627152 5680768 -1626744 5680528 1626632 5680392 1615128 5682360 1615160 5682368 -1626744 5680528 1626952 5680672 1626632 5680392 1615160 5682368 -1626632 5680392 1599875 5599875 1615128 5682360 1615160 5682368 -1599875 5599875 1626632 5680392 1657056 5639384 1657088 5639296 -1615128 5682360 1626632 5680392 1599875 5599875 1601464 5680984 -1599875 5599875 1615128 5682360 1626632 5680392 1657056 5639384 -1626744 5680528 1626632 5680392 1615160 5682368 1615256 5682392 -1626744 5680528 1626632 5680392 1615256 5682392 1617256 5683416 -1626744 5680528 1626632 5680392 1617256 5683416 1617344 5683488 -1626632 5680392 1615256 5682392 1617256 5683416 1617344 5683488 -1615256 5682392 1615296 5682424 1617256 5683416 1626632 5680392 -1626744 5680528 1626632 5680392 1617344 5683488 1617376 5683520 -1626632 5680392 1617256 5683416 1617344 5683488 1617376 5683520 -1626744 5680528 1626952 5680672 1626632 5680392 1617376 5683520 -1626744 5680528 1626632 5680392 1617376 5683520 1617424 5683592 -1626632 5680392 1617344 5683488 1617376 5683520 1617424 5683592 -1626744 5680528 1626952 5680672 1626632 5680392 1617424 5683592 -1626632 5680392 1615128 5682360 1615160 5682368 1615256 5682392 -1626632 5680392 1615160 5682368 1615256 5682392 1617256 5683416 -1626744 5680528 1626632 5680392 1617424 5683592 1620912 5685984 -1626744 5680528 1626952 5680672 1626632 5680392 1620912 5685984 -1626632 5680392 1617376 5683520 1617424 5683592 1620912 5685984 -1617424 5683592 1620776 5686024 1620912 5685984 1626632 5680392 -1626744 5680528 1626632 5680392 1620912 5685984 1621048 5686008 -1626744 5680528 1626632 5680392 1621048 5686008 1621112 5686056 -1626744 5680528 1626952 5680672 1626632 5680392 1621112 5686056 -1626744 5680528 1626632 5680392 1621112 5686056 1622296 5686800 -1626632 5680392 1620912 5685984 1621048 5686008 1621112 5686056 -1626632 5680392 1617424 5683592 1620912 5685984 1621048 5686008 -1626632 5680392 1626592 5680320 1615128 5682360 1615160 5682368 -1626632 5680392 1599875 5599875 1626592 5680320 1615160 5682368 -1626592 5680320 1599875 5599875 1615128 5682360 1615160 5682368 -1626632 5680392 1626592 5680320 1615160 5682368 1615256 5682392 -1626632 5680392 1599875 5599875 1626592 5680320 1615256 5682392 -1626592 5680320 1615128 5682360 1615160 5682368 1615256 5682392 -1626632 5680392 1626592 5680320 1615256 5682392 1617256 5683416 -1626632 5680392 1626592 5680320 1617256 5683416 1617344 5683488 -1626632 5680392 1626592 5680320 1617344 5683488 1617376 5683520 -1626592 5680320 1617256 5683416 1617344 5683488 1617376 5683520 -1615256 5682392 1615296 5682424 1617256 5683416 1626592 5680320 -1626632 5680392 1626592 5680320 1617376 5683520 1617424 5683592 -1626592 5680320 1617344 5683488 1617376 5683520 1617424 5683592 -1626592 5680320 1615160 5682368 1615256 5682392 1617256 5683416 -1626632 5680392 1626592 5680320 1617424 5683592 1620912 5685984 -1626592 5680320 1617376 5683520 1617424 5683592 1620912 5685984 -1626632 5680392 1599875 5599875 1626592 5680320 1620912 5685984 -1617424 5683592 1620776 5686024 1620912 5685984 1626592 5680320 -1626592 5680320 1615256 5682392 1617256 5683416 1617344 5683488 -1615128 5682360 1626592 5680320 1599875 5599875 1601464 5680984 -1599875 5599875 1626592 5680320 1626632 5680392 1657056 5639384 -1626632 5680392 1657088 5639464 1657056 5639384 1626592 5680320 -1599875 5599875 1615128 5682360 1626592 5680320 1657056 5639384 -1626592 5680320 1620912 5685984 1626632 5680392 1657088 5639464 -1626632 5680392 1627152 5680768 1657088 5639464 1626592 5680320 -1657088 5639464 1657056 5639384 1626592 5680320 1627152 5680768 -1627152 5680768 1663776 5646144 1657088 5639464 1626592 5680320 -1657088 5639464 1657056 5639384 1626592 5680320 1663776 5646144 -1627152 5680768 1663776 5646144 1626592 5680320 1626632 5680392 -1627152 5680768 1663880 5646248 1663776 5646144 1626592 5680320 -1626632 5680392 1627152 5680768 1626592 5680320 1620912 5685984 -1626632 5680392 1626952 5680672 1627152 5680768 1626592 5680320 -1626632 5680392 1626744 5680528 1626952 5680672 1626592 5680320 -1627152 5680768 1663776 5646144 1626592 5680320 1626952 5680672 -1626632 5680392 1626744 5680528 1626592 5680320 1620912 5685984 -1663776 5646144 1663688 5645984 1657088 5639464 1626592 5680320 -1599875 5599875 1626592 5680320 1657056 5639384 1657088 5639296 -1657056 5639384 1599875 5599875 1626592 5680320 1657088 5639464 -1626632 5680392 1626592 5680320 1620912 5685984 1621048 5686008 -1626592 5680320 1617424 5683592 1620912 5685984 1621048 5686008 -1626632 5680392 1626744 5680528 1626592 5680320 1621048 5686008 -1626632 5680392 1626592 5680320 1621048 5686008 1621112 5686056 -1626952 5680672 1627152 5680768 1626592 5680320 1626744 5680528 -1626592 5680320 1626576 5680264 1599875 5599875 1615128 5682360 -1626576 5680264 1657056 5639384 1599875 5599875 1615128 5682360 -1626592 5680320 1657056 5639384 1626576 5680264 1615128 5682360 -1626592 5680320 1626576 5680264 1615128 5682360 1615160 5682368 -1626592 5680320 1657056 5639384 1626576 5680264 1615160 5682368 -1626576 5680264 1599875 5599875 1615128 5682360 1615160 5682368 -1626592 5680320 1626576 5680264 1615160 5682368 1615256 5682392 -1626576 5680264 1615128 5682360 1615160 5682368 1615256 5682392 -1626592 5680320 1626576 5680264 1615256 5682392 1617256 5683416 -1615256 5682392 1615296 5682424 1617256 5683416 1626576 5680264 -1626592 5680320 1657056 5639384 1626576 5680264 1617256 5683416 -1626592 5680320 1626576 5680264 1617256 5683416 1617344 5683488 -1626592 5680320 1626576 5680264 1617344 5683488 1617376 5683520 -1626592 5680320 1626576 5680264 1617376 5683520 1617424 5683592 -1626576 5680264 1617344 5683488 1617376 5683520 1617424 5683592 -1626592 5680320 1626576 5680264 1617424 5683592 1620912 5685984 -1626576 5680264 1617376 5683520 1617424 5683592 1620912 5685984 -1626592 5680320 1657056 5639384 1626576 5680264 1620912 5685984 -1626592 5680320 1626576 5680264 1620912 5685984 1621048 5686008 -1626576 5680264 1617424 5683592 1620912 5685984 1621048 5686008 -1626592 5680320 1657056 5639384 1626576 5680264 1621048 5686008 -1626576 5680264 1615256 5682392 1617256 5683416 1617344 5683488 -1617424 5683592 1620776 5686024 1620912 5685984 1626576 5680264 -1599875 5599875 1626576 5680264 1657056 5639384 1657088 5639296 -1599875 5599875 1601464 5680984 1615128 5682360 1626576 5680264 -1657056 5639384 1626576 5680264 1626592 5680320 1657088 5639464 -1626592 5680320 1663776 5646144 1657088 5639464 1626576 5680264 -1657056 5639384 1599875 5599875 1626576 5680264 1657088 5639464 -1626576 5680264 1621048 5686008 1626592 5680320 1663776 5646144 -1626592 5680320 1627152 5680768 1663776 5646144 1626576 5680264 -1663776 5646144 1657088 5639464 1626576 5680264 1627152 5680768 -1626592 5680320 1626952 5680672 1627152 5680768 1626576 5680264 -1626592 5680320 1626952 5680672 1626576 5680264 1621048 5686008 -1627152 5680768 1663880 5646248 1663776 5646144 1626576 5680264 -1627152 5680768 1663776 5646144 1626576 5680264 1626952 5680672 -1663776 5646144 1663688 5645984 1657088 5639464 1626576 5680264 -1657088 5639464 1657056 5639384 1626576 5680264 1663776 5646144 -1626576 5680264 1617256 5683416 1617344 5683488 1617376 5683520 -1626576 5680264 1615160 5682368 1615256 5682392 1617256 5683416 -1626592 5680320 1626576 5680264 1621048 5686008 1626632 5680392 -1626592 5680320 1626744 5680528 1626952 5680672 1626576 5680264 -1626592 5680320 1626632 5680392 1626744 5680528 1626576 5680264 -1626744 5680528 1626952 5680672 1626576 5680264 1626632 5680392 -1626592 5680320 1626632 5680392 1626576 5680264 1621048 5686008 -1626952 5680672 1627152 5680768 1626576 5680264 1626744 5680528 -1626576 5680264 1626632 5680168 1599875 5599875 1615128 5682360 -1626576 5680264 1657056 5639384 1626632 5680168 1615128 5682360 -1657056 5639384 1626632 5680168 1626576 5680264 1657088 5639464 -1626632 5680168 1615128 5682360 1626576 5680264 1657088 5639464 -1626632 5680168 1657056 5639384 1599875 5599875 1615128 5682360 -1657056 5639384 1599875 5599875 1626632 5680168 1657088 5639464 -1626576 5680264 1626632 5680168 1615128 5682360 1615160 5682368 -1626576 5680264 1657088 5639464 1626632 5680168 1615160 5682368 -1626576 5680264 1626632 5680168 1615160 5682368 1615256 5682392 -1626576 5680264 1657088 5639464 1626632 5680168 1615256 5682392 -1626632 5680168 1599875 5599875 1615128 5682360 1615160 5682368 -1626632 5680168 1615128 5682360 1615160 5682368 1615256 5682392 -1626576 5680264 1663776 5646144 1657088 5639464 1626632 5680168 -1626576 5680264 1627152 5680768 1663776 5646144 1626632 5680168 -1663776 5646144 1657088 5639464 1626632 5680168 1627152 5680768 -1626576 5680264 1627152 5680768 1626632 5680168 1615256 5682392 -1627152 5680768 1663880 5646248 1663776 5646144 1626632 5680168 -1626576 5680264 1626952 5680672 1627152 5680768 1626632 5680168 -1627152 5680768 1663776 5646144 1626632 5680168 1626952 5680672 -1626576 5680264 1626952 5680672 1626632 5680168 1615256 5682392 -1657088 5639464 1657056 5639384 1626632 5680168 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1626632 5680168 -1599875 5599875 1626632 5680168 1657056 5639384 1657088 5639296 -1599875 5599875 1601464 5680984 1615128 5682360 1626632 5680168 -1626576 5680264 1626632 5680168 1615256 5682392 1617256 5683416 -1615256 5682392 1615296 5682424 1617256 5683416 1626632 5680168 -1626576 5680264 1626952 5680672 1626632 5680168 1617256 5683416 -1626576 5680264 1626632 5680168 1617256 5683416 1617344 5683488 -1626632 5680168 1615160 5682368 1615256 5682392 1617256 5683416 -1626576 5680264 1626744 5680528 1626952 5680672 1626632 5680168 -1626576 5680264 1626632 5680392 1626744 5680528 1626632 5680168 -1626576 5680264 1626592 5680320 1626632 5680392 1626632 5680168 -1626576 5680264 1626592 5680320 1626632 5680168 1617256 5683416 -1626952 5680672 1627152 5680768 1626632 5680168 1626744 5680528 -1626744 5680528 1626952 5680672 1626632 5680168 1626632 5680392 -1626632 5680392 1626744 5680528 1626632 5680168 1626592 5680320 -1626632 5680168 1626640 5680136 1599875 5599875 1615128 5682360 -1626640 5680136 1657056 5639384 1599875 5599875 1615128 5682360 -1626632 5680168 1626640 5680136 1615128 5682360 1615160 5682368 -1626632 5680168 1626640 5680136 1615160 5682368 1615256 5682392 -1626640 5680136 1599875 5599875 1615128 5682360 1615160 5682368 -1657056 5639384 1626640 5680136 1626632 5680168 1657088 5639464 -1626632 5680168 1663776 5646144 1657088 5639464 1626640 5680136 -1626632 5680168 1627152 5680768 1663776 5646144 1626640 5680136 -1626632 5680168 1626952 5680672 1627152 5680768 1626640 5680136 -1627152 5680768 1663880 5646248 1663776 5646144 1626640 5680136 -1627152 5680768 1631216 5689136 1663880 5646248 1626640 5680136 -1626632 5680168 1626744 5680528 1626952 5680672 1626640 5680136 -1626952 5680672 1627152 5680768 1626640 5680136 1626744 5680528 -1626632 5680168 1626632 5680392 1626744 5680528 1626640 5680136 -1663776 5646144 1663688 5645984 1657088 5639464 1626640 5680136 -1626632 5680168 1626744 5680528 1626640 5680136 1615256 5682392 -1626632 5680168 1626640 5680136 1615256 5682392 1617256 5683416 -1615256 5682392 1615296 5682424 1617256 5683416 1626640 5680136 -1626632 5680168 1626640 5680136 1617256 5683416 1626576 5680264 -1626640 5680136 1615256 5682392 1617256 5683416 1626576 5680264 -1617256 5683416 1617344 5683488 1626576 5680264 1626640 5680136 -1626632 5680168 1626744 5680528 1626640 5680136 1626576 5680264 -1626640 5680136 1615160 5682368 1615256 5682392 1617256 5683416 -1657088 5639464 1657056 5639384 1626640 5680136 1663776 5646144 -1657056 5639384 1599875 5599875 1626640 5680136 1657088 5639464 -1627152 5680768 1663880 5646248 1626640 5680136 1626952 5680672 -1599875 5599875 1626640 5680136 1657056 5639384 1657088 5639296 -1599875 5599875 1601464 5680984 1615128 5682360 1626640 5680136 -1626640 5680136 1615128 5682360 1615160 5682368 1615256 5682392 -1663776 5646144 1657088 5639464 1626640 5680136 1663880 5646248 -1626640 5680136 1626680 5680056 1599875 5599875 1615128 5682360 -1626680 5680056 1657056 5639384 1599875 5599875 1615128 5682360 -1626640 5680136 1657056 5639384 1626680 5680056 1615128 5682360 -1626640 5680136 1626680 5680056 1615128 5682360 1615160 5682368 -1626680 5680056 1599875 5599875 1615128 5682360 1615160 5682368 -1626640 5680136 1657056 5639384 1626680 5680056 1615160 5682368 -1657056 5639384 1626680 5680056 1626640 5680136 1657088 5639464 -1626680 5680056 1615160 5682368 1626640 5680136 1657088 5639464 -1626640 5680136 1663776 5646144 1657088 5639464 1626680 5680056 -1657088 5639464 1657056 5639384 1626680 5680056 1663776 5646144 -1626640 5680136 1663776 5646144 1626680 5680056 1615160 5682368 -1663776 5646144 1663688 5645984 1657088 5639464 1626680 5680056 -1657056 5639384 1599875 5599875 1626680 5680056 1657088 5639464 -1599875 5599875 1626680 5680056 1657056 5639384 1657088 5639296 -1599875 5599875 1601464 5680984 1615128 5682360 1626680 5680056 -1626640 5680136 1626680 5680056 1615160 5682368 1615256 5682392 -1626640 5680136 1663776 5646144 1626680 5680056 1615256 5682392 -1626680 5680056 1615128 5682360 1615160 5682368 1615256 5682392 -1626640 5680136 1626680 5680056 1615256 5682392 1617256 5683416 -1615256 5682392 1615296 5682424 1617256 5683416 1626680 5680056 -1626640 5680136 1626680 5680056 1617256 5683416 1626576 5680264 -1626640 5680136 1663776 5646144 1626680 5680056 1617256 5683416 -1626680 5680056 1615160 5682368 1615256 5682392 1617256 5683416 -1626640 5680136 1663880 5646248 1663776 5646144 1626680 5680056 -1626640 5680136 1627152 5680768 1663880 5646248 1626680 5680056 -1627152 5680768 1631216 5689136 1663880 5646248 1626680 5680056 -1626640 5680136 1627152 5680768 1626680 5680056 1617256 5683416 -1663776 5646144 1657088 5639464 1626680 5680056 1663880 5646248 -1626640 5680136 1626952 5680672 1627152 5680768 1626680 5680056 -1626640 5680136 1626744 5680528 1626952 5680672 1626680 5680056 -1626952 5680672 1627152 5680768 1626680 5680056 1626744 5680528 -1627152 5680768 1663880 5646248 1626680 5680056 1626952 5680672 -1626640 5680136 1626632 5680168 1626744 5680528 1626680 5680056 -1626744 5680528 1626952 5680672 1626680 5680056 1626632 5680168 -1626640 5680136 1626632 5680168 1626680 5680056 1617256 5683416 -1626632 5680168 1626632 5680392 1626744 5680528 1626680 5680056 -1663880 5646248 1663776 5646144 1626680 5680056 1627152 5680768 -1626680 5680056 1626688 5680016 1599875 5599875 1615128 5682360 -1626680 5680056 1626688 5680016 1615128 5682360 1615160 5682368 -1626688 5680016 1599875 5599875 1615128 5682360 1615160 5682368 -1626680 5680056 1657056 5639384 1626688 5680016 1615160 5682368 -1626680 5680056 1626688 5680016 1615160 5682368 1615256 5682392 -1626688 5680016 1615128 5682360 1615160 5682368 1615256 5682392 -1626680 5680056 1657056 5639384 1626688 5680016 1615256 5682392 -1626680 5680056 1626688 5680016 1615256 5682392 1617256 5683416 -1615256 5682392 1615296 5682424 1617256 5683416 1626688 5680016 -1626688 5680016 1615160 5682368 1615256 5682392 1617256 5683416 -1626680 5680056 1657056 5639384 1626688 5680016 1617256 5683416 -1626688 5680016 1657056 5639384 1599875 5599875 1615128 5682360 -1657056 5639384 1626688 5680016 1626680 5680056 1657088 5639464 -1626680 5680056 1663776 5646144 1657088 5639464 1626688 5680016 -1626688 5680016 1617256 5683416 1626680 5680056 1663776 5646144 -1657088 5639464 1657056 5639384 1626688 5680016 1663776 5646144 -1663776 5646144 1663688 5645984 1657088 5639464 1626688 5680016 -1626680 5680056 1663880 5646248 1663776 5646144 1626688 5680016 -1626680 5680056 1663880 5646248 1626688 5680016 1617256 5683416 -1657056 5639384 1599875 5599875 1626688 5680016 1657088 5639464 -1663776 5646144 1657088 5639464 1626688 5680016 1663880 5646248 -1599875 5599875 1626688 5680016 1657056 5639384 1657088 5639296 -1599875 5599875 1601464 5680984 1615128 5682360 1626688 5680016 -1626680 5680056 1626688 5680016 1617256 5683416 1626640 5680136 -1626688 5680016 1615256 5682392 1617256 5683416 1626640 5680136 -1617256 5683416 1626576 5680264 1626640 5680136 1626688 5680016 -1626640 5680136 1626680 5680056 1626688 5680016 1626576 5680264 -1617256 5683416 1626576 5680264 1626688 5680016 1615256 5682392 -1617256 5683416 1617344 5683488 1626576 5680264 1626688 5680016 -1626680 5680056 1663880 5646248 1626688 5680016 1626640 5680136 -1626576 5680264 1626632 5680168 1626640 5680136 1626688 5680016 -1626680 5680056 1627152 5680768 1663880 5646248 1626688 5680016 -1626680 5680056 1626952 5680672 1627152 5680768 1626688 5680016 -1626680 5680056 1626744 5680528 1626952 5680672 1626688 5680016 -1627152 5680768 1631216 5689136 1663880 5646248 1626688 5680016 -1626680 5680056 1626952 5680672 1626688 5680016 1626640 5680136 -1627152 5680768 1663880 5646248 1626688 5680016 1626952 5680672 -1663880 5646248 1663776 5646144 1626688 5680016 1627152 5680768 -1663880 5646248 1626704 5680040 1627152 5680768 1631216 5689136 -1627152 5680768 1626704 5680040 1626688 5680016 1626952 5680672 -1627152 5680768 1663880 5646248 1626704 5680040 1626952 5680672 -1626688 5680016 1626680 5680056 1626952 5680672 1626704 5680040 -1626680 5680056 1626744 5680528 1626952 5680672 1626704 5680040 -1626680 5680056 1626632 5680168 1626744 5680528 1626704 5680040 -1626952 5680672 1627152 5680768 1626704 5680040 1626744 5680528 -1626680 5680056 1626632 5680168 1626704 5680040 1626688 5680016 -1626680 5680056 1626640 5680136 1626632 5680168 1626704 5680040 -1626632 5680168 1626744 5680528 1626704 5680040 1626640 5680136 -1626680 5680056 1626640 5680136 1626704 5680040 1626688 5680016 -1626704 5680040 1663880 5646248 1626688 5680016 1626680 5680056 -1626632 5680168 1626632 5680392 1626744 5680528 1626704 5680040 -1626744 5680528 1626952 5680672 1626704 5680040 1626632 5680168 -1626688 5680016 1626704 5680040 1663880 5646248 1663776 5646144 -1627152 5680768 1626744 5680024 1626704 5680040 1626952 5680672 -1626704 5680040 1626744 5680528 1626952 5680672 1626744 5680024 -1663880 5646248 1626744 5680024 1627152 5680768 1631216 5689136 -1626704 5680040 1626632 5680168 1626744 5680528 1626744 5680024 -1626704 5680040 1626640 5680136 1626632 5680168 1626744 5680024 -1626744 5680528 1626952 5680672 1626744 5680024 1626632 5680168 -1626704 5680040 1626680 5680056 1626640 5680136 1626744 5680024 -1626632 5680168 1626632 5680392 1626744 5680528 1626744 5680024 -1626744 5680024 1663880 5646248 1626704 5680040 1626640 5680136 -1626632 5680168 1626744 5680528 1626744 5680024 1626640 5680136 -1626952 5680672 1627152 5680768 1626744 5680024 1626744 5680528 -1626704 5680040 1626744 5680024 1663880 5646248 1626688 5680016 -1626744 5680024 1627152 5680768 1663880 5646248 1626688 5680016 -1626704 5680040 1626640 5680136 1626744 5680024 1626688 5680016 -1663880 5646248 1663776 5646144 1626688 5680016 1626744 5680024 -1626688 5680016 1626704 5680040 1626744 5680024 1663776 5646144 -1663880 5646248 1663776 5646144 1626744 5680024 1627152 5680768 -1663776 5646144 1657088 5639464 1626688 5680016 1626744 5680024 -1663776 5646144 1657088 5639464 1626744 5680024 1663880 5646248 -1657088 5639464 1657056 5639384 1626688 5680016 1626744 5680024 -1626688 5680016 1626704 5680040 1626744 5680024 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1626744 5680024 -1627152 5680768 1663880 5646248 1626744 5680024 1626952 5680672 -1663880 5646248 1627096 5680104 1627152 5680768 1631216 5689136 -1627152 5680768 1631152 5689072 1631216 5689136 1627096 5680104 -1631216 5689136 1663880 5646248 1627096 5680104 1631152 5689072 -1627152 5680768 1631080 5689008 1631152 5689072 1627096 5680104 -1663880 5646248 1627096 5680104 1631216 5689136 1663944 5646256 -1663880 5646248 1626744 5680024 1627096 5680104 1631216 5689136 -1626744 5680024 1627096 5680104 1663880 5646248 1663776 5646144 -1627096 5680104 1631216 5689136 1663880 5646248 1663776 5646144 -1626744 5680024 1627096 5680104 1663776 5646144 1657088 5639464 -1626744 5680024 1627096 5680104 1657088 5639464 1626688 5680016 -1663776 5646144 1663688 5645984 1657088 5639464 1627096 5680104 -1627096 5680104 1663880 5646248 1663776 5646144 1657088 5639464 -1626744 5680024 1627152 5680768 1627096 5680104 1657088 5639464 -1627096 5680104 1626744 5680024 1627152 5680768 1631152 5689072 -1627152 5680768 1627096 5680104 1626744 5680024 1626952 5680672 -1627096 5680104 1657088 5639464 1626744 5680024 1626952 5680672 -1627152 5680768 1631152 5689072 1627096 5680104 1626952 5680672 -1626744 5680024 1626744 5680528 1626952 5680672 1627096 5680104 -1626744 5680024 1626632 5680168 1626744 5680528 1627096 5680104 -1626632 5680168 1626632 5680392 1626744 5680528 1627096 5680104 -1626952 5680672 1627152 5680768 1627096 5680104 1626744 5680528 -1626632 5680168 1626632 5680392 1627096 5680104 1626744 5680024 -1626632 5680168 1626592 5680320 1626632 5680392 1627096 5680104 -1626744 5680528 1626952 5680672 1627096 5680104 1626632 5680392 -1626744 5680024 1626632 5680168 1627096 5680104 1657088 5639464 -1626744 5680024 1626640 5680136 1626632 5680168 1627096 5680104 -1631216 5689136 1627776 5680360 1627096 5680104 1631152 5689072 -1627096 5680104 1627152 5680768 1631152 5689072 1627776 5680360 -1631152 5689072 1631216 5689136 1627776 5680360 1627152 5680768 -1627152 5680768 1631080 5689008 1631152 5689072 1627776 5680360 -1627152 5680768 1630904 5688944 1631080 5689008 1627776 5680360 -1627152 5680768 1630816 5688920 1630904 5688944 1627776 5680360 -1627152 5680768 1630728 5688896 1630816 5688920 1627776 5680360 -1627152 5680768 1630632 5688872 1630728 5688896 1627776 5680360 -1630728 5688896 1630816 5688920 1627776 5680360 1630632 5688872 -1630816 5688920 1630904 5688944 1627776 5680360 1630728 5688896 -1630904 5688944 1631080 5689008 1627776 5680360 1630816 5688920 -1630904 5688944 1630992 5688984 1631080 5689008 1627776 5680360 -1631152 5689072 1631216 5689136 1627776 5680360 1631080 5689008 -1631080 5689008 1631152 5689072 1627776 5680360 1630904 5688944 -1627152 5680768 1630632 5688872 1627776 5680360 1627096 5680104 -1663880 5646248 1627776 5680360 1631216 5689136 1663944 5646256 -1627096 5680104 1627776 5680360 1663880 5646248 1663776 5646144 -1627776 5680360 1631216 5689136 1663880 5646248 1663776 5646144 -1627096 5680104 1627776 5680360 1663776 5646144 1657088 5639464 -1627776 5680360 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1627776 5680360 -1627096 5680104 1627776 5680360 1657088 5639464 1626744 5680024 -1627776 5680360 1657088 5639464 1627096 5680104 1627152 5680768 -1631216 5689136 1663880 5646248 1627776 5680360 1631152 5689072 -1627096 5680104 1626952 5680672 1627152 5680768 1627776 5680360 -1627152 5680768 1630544 5688856 1630632 5688872 1627776 5680360 -1630632 5688872 1630728 5688896 1627776 5680360 1630544 5688856 -1627152 5680768 1630544 5688856 1627776 5680360 1627096 5680104 -1627152 5680768 1630504 5688864 1630544 5688856 1627776 5680360 -1663880 5646248 1628008 5680480 1631216 5689136 1663944 5646256 -1627776 5680360 1628008 5680480 1663880 5646248 1663776 5646144 -1627776 5680360 1628008 5680480 1663776 5646144 1657088 5639464 -1627776 5680360 1628008 5680480 1657088 5639464 1627096 5680104 -1628008 5680480 1663880 5646248 1663776 5646144 1657088 5639464 -1663776 5646144 1663688 5645984 1657088 5639464 1628008 5680480 -1627776 5680360 1631216 5689136 1628008 5680480 1657088 5639464 -1628008 5680480 1631216 5689136 1663880 5646248 1663776 5646144 -1631216 5689136 1628008 5680480 1627776 5680360 1631152 5689072 -1627776 5680360 1631080 5689008 1631152 5689072 1628008 5680480 -1631152 5689072 1631216 5689136 1628008 5680480 1631080 5689008 -1627776 5680360 1630904 5688944 1631080 5689008 1628008 5680480 -1627776 5680360 1630816 5688920 1630904 5688944 1628008 5680480 -1627776 5680360 1630728 5688896 1630816 5688920 1628008 5680480 -1627776 5680360 1630632 5688872 1630728 5688896 1628008 5680480 -1627776 5680360 1630544 5688856 1630632 5688872 1628008 5680480 -1630632 5688872 1630728 5688896 1628008 5680480 1630544 5688856 -1630728 5688896 1630816 5688920 1628008 5680480 1630632 5688872 -1630816 5688920 1630904 5688944 1628008 5680480 1630728 5688896 -1630904 5688944 1630992 5688984 1631080 5689008 1628008 5680480 -1631080 5689008 1631152 5689072 1628008 5680480 1630904 5688944 -1630904 5688944 1631080 5689008 1628008 5680480 1630816 5688920 -1631216 5689136 1663880 5646248 1628008 5680480 1631152 5689072 -1628008 5680480 1657088 5639464 1627776 5680360 1630544 5688856 -1627776 5680360 1627152 5680768 1630544 5688856 1628008 5680480 -1630544 5688856 1630632 5688872 1628008 5680480 1627152 5680768 -1627776 5680360 1627096 5680104 1627152 5680768 1628008 5680480 -1627776 5680360 1627152 5680768 1628008 5680480 1657088 5639464 -1627152 5680768 1630504 5688864 1630544 5688856 1628008 5680480 -1630544 5688856 1630632 5688872 1628008 5680480 1630504 5688864 -1627152 5680768 1630504 5688864 1628008 5680480 1627776 5680360 -1627152 5680768 1630424 5688880 1630504 5688864 1628008 5680480 -1627152 5680768 1630424 5688880 1628008 5680480 1627776 5680360 -1627152 5680768 1625984 5687408 1630424 5688880 1628008 5680480 -1625984 5687408 1626016 5687448 1630424 5688880 1628008 5680480 -1627152 5680768 1625984 5687408 1628008 5680480 1627776 5680360 -1627152 5680768 1625904 5687328 1625984 5687408 1628008 5680480 -1630424 5688880 1630504 5688864 1628008 5680480 1625984 5687408 -1630504 5688864 1630544 5688856 1628008 5680480 1630424 5688880 -1663880 5646248 1628040 5680512 1631216 5689136 1663944 5646256 -1631216 5689136 1628040 5680512 1628008 5680480 1631152 5689072 -1628008 5680480 1631080 5689008 1631152 5689072 1628040 5680512 -1628008 5680480 1630904 5688944 1631080 5689008 1628040 5680512 -1631080 5689008 1631152 5689072 1628040 5680512 1630904 5688944 -1630904 5688944 1630992 5688984 1631080 5689008 1628040 5680512 -1628008 5680480 1630816 5688920 1630904 5688944 1628040 5680512 -1628008 5680480 1630728 5688896 1630816 5688920 1628040 5680512 -1628008 5680480 1630632 5688872 1630728 5688896 1628040 5680512 -1628008 5680480 1630544 5688856 1630632 5688872 1628040 5680512 -1628008 5680480 1630504 5688864 1630544 5688856 1628040 5680512 -1630544 5688856 1630632 5688872 1628040 5680512 1630504 5688864 -1630632 5688872 1630728 5688896 1628040 5680512 1630544 5688856 -1630728 5688896 1630816 5688920 1628040 5680512 1630632 5688872 -1630904 5688944 1631080 5689008 1628040 5680512 1630816 5688920 -1630816 5688920 1630904 5688944 1628040 5680512 1630728 5688896 -1628040 5680512 1663880 5646248 1628008 5680480 1630504 5688864 -1631152 5689072 1631216 5689136 1628040 5680512 1631080 5689008 -1628008 5680480 1628040 5680512 1663880 5646248 1663776 5646144 -1628040 5680512 1631216 5689136 1663880 5646248 1663776 5646144 -1628008 5680480 1630504 5688864 1628040 5680512 1663776 5646144 -1628008 5680480 1628040 5680512 1663776 5646144 1657088 5639464 -1631216 5689136 1663880 5646248 1628040 5680512 1631152 5689072 -1628008 5680480 1630424 5688880 1630504 5688864 1628040 5680512 -1630504 5688864 1630544 5688856 1628040 5680512 1630424 5688880 -1628008 5680480 1630424 5688880 1628040 5680512 1663776 5646144 -1628008 5680480 1625984 5687408 1630424 5688880 1628040 5680512 -1625984 5687408 1626016 5687448 1630424 5688880 1628040 5680512 -1628008 5680480 1625984 5687408 1628040 5680512 1663776 5646144 -1628008 5680480 1627152 5680768 1625984 5687408 1628040 5680512 -1628008 5680480 1627152 5680768 1628040 5680512 1663776 5646144 -1628008 5680480 1627776 5680360 1627152 5680768 1628040 5680512 -1627776 5680360 1627096 5680104 1627152 5680768 1628040 5680512 -1628008 5680480 1627776 5680360 1628040 5680512 1663776 5646144 -1627152 5680768 1625984 5687408 1628040 5680512 1627776 5680360 -1627152 5680768 1625904 5687328 1625984 5687408 1628040 5680512 -1627152 5680768 1625904 5687328 1628040 5680512 1627776 5680360 -1627152 5680768 1625856 5687296 1625904 5687328 1628040 5680512 -1625984 5687408 1630424 5688880 1628040 5680512 1625904 5687328 -1630424 5688880 1630504 5688864 1628040 5680512 1625984 5687408 -1630424 5688880 1628056 5680576 1625984 5687408 1626016 5687448 -1625984 5687408 1628056 5680576 1628040 5680512 1625904 5687328 -1625984 5687408 1630424 5688880 1628056 5680576 1625904 5687328 -1628056 5680576 1630424 5688880 1628040 5680512 1625904 5687328 -1628040 5680512 1627152 5680768 1625904 5687328 1628056 5680576 -1628040 5680512 1627152 5680768 1628056 5680576 1630424 5688880 -1628040 5680512 1627776 5680360 1627152 5680768 1628056 5680576 -1627776 5680360 1627096 5680104 1627152 5680768 1628056 5680576 -1628040 5680512 1627776 5680360 1628056 5680576 1630424 5688880 -1628040 5680512 1628008 5680480 1627776 5680360 1628056 5680576 -1628040 5680512 1628008 5680480 1628056 5680576 1630424 5688880 -1627776 5680360 1627152 5680768 1628056 5680576 1628008 5680480 -1627152 5680768 1625904 5687328 1628056 5680576 1627776 5680360 -1627152 5680768 1625856 5687296 1625904 5687328 1628056 5680576 -1625904 5687328 1625984 5687408 1628056 5680576 1627152 5680768 -1628040 5680512 1628056 5680576 1630424 5688880 1630504 5688864 -1628040 5680512 1628056 5680576 1630504 5688864 1630544 5688856 -1628040 5680512 1628056 5680576 1630544 5688856 1630632 5688872 -1628056 5680576 1630504 5688864 1630544 5688856 1630632 5688872 -1628040 5680512 1628056 5680576 1630632 5688872 1630728 5688896 -1628056 5680576 1630544 5688856 1630632 5688872 1630728 5688896 -1628040 5680512 1628056 5680576 1630728 5688896 1630816 5688920 -1628056 5680576 1630632 5688872 1630728 5688896 1630816 5688920 -1628040 5680512 1628056 5680576 1630816 5688920 1630904 5688944 -1628056 5680576 1630728 5688896 1630816 5688920 1630904 5688944 -1628040 5680512 1628056 5680576 1630904 5688944 1631080 5689008 -1628040 5680512 1628056 5680576 1631080 5689008 1631152 5689072 -1630904 5688944 1630992 5688984 1631080 5689008 1628056 5680576 -1628056 5680576 1630904 5688944 1631080 5689008 1631152 5689072 -1628056 5680576 1630816 5688920 1630904 5688944 1631080 5689008 -1628040 5680512 1628056 5680576 1631152 5689072 1631216 5689136 -1628056 5680576 1631080 5689008 1631152 5689072 1631216 5689136 -1628040 5680512 1628008 5680480 1628056 5680576 1631216 5689136 -1628040 5680512 1628056 5680576 1631216 5689136 1663880 5646248 -1628040 5680512 1628056 5680576 1663880 5646248 1663776 5646144 -1631216 5689136 1663944 5646256 1663880 5646248 1628056 5680576 -1628056 5680576 1631152 5689072 1631216 5689136 1663880 5646248 -1628040 5680512 1628008 5680480 1628056 5680576 1663880 5646248 -1628056 5680576 1625984 5687408 1630424 5688880 1630504 5688864 -1628056 5680576 1630424 5688880 1630504 5688864 1630544 5688856 -1628040 5680512 1628072 5680544 1663880 5646248 1663776 5646144 -1628072 5680544 1628056 5680576 1663880 5646248 1663776 5646144 -1628040 5680512 1628072 5680544 1663776 5646144 1628008 5680480 -1628040 5680512 1628056 5680576 1628072 5680544 1663776 5646144 -1663880 5646248 1628072 5680544 1628056 5680576 1631216 5689136 -1663880 5646248 1628072 5680544 1631216 5689136 1663944 5646256 -1628056 5680576 1631152 5689072 1631216 5689136 1628072 5680544 -1628056 5680576 1631080 5689008 1631152 5689072 1628072 5680544 -1628056 5680576 1630904 5688944 1631080 5689008 1628072 5680544 -1631152 5689072 1631216 5689136 1628072 5680544 1631080 5689008 -1663880 5646248 1663776 5646144 1628072 5680544 1631216 5689136 -1628072 5680544 1628040 5680512 1628056 5680576 1631080 5689008 -1631216 5689136 1663880 5646248 1628072 5680544 1631152 5689072 -1663880 5646248 1628144 5680632 1631216 5689136 1663944 5646256 -1628072 5680544 1628144 5680632 1663880 5646248 1663776 5646144 -1631216 5689136 1628144 5680632 1628072 5680544 1631152 5689072 -1628144 5680632 1663880 5646248 1628072 5680544 1631152 5689072 -1628072 5680544 1631080 5689008 1631152 5689072 1628144 5680632 -1628072 5680544 1628056 5680576 1631080 5689008 1628144 5680632 -1628072 5680544 1628056 5680576 1628144 5680632 1663880 5646248 -1628056 5680576 1630904 5688944 1631080 5689008 1628144 5680632 -1628056 5680576 1630904 5688944 1628144 5680632 1628072 5680544 -1630904 5688944 1630992 5688984 1631080 5689008 1628144 5680632 -1628056 5680576 1630816 5688920 1630904 5688944 1628144 5680632 -1628056 5680576 1630816 5688920 1628144 5680632 1628072 5680544 -1628056 5680576 1630728 5688896 1630816 5688920 1628144 5680632 -1628056 5680576 1630728 5688896 1628144 5680632 1628072 5680544 -1628056 5680576 1630632 5688872 1630728 5688896 1628144 5680632 -1628056 5680576 1630632 5688872 1628144 5680632 1628072 5680544 -1628056 5680576 1630544 5688856 1630632 5688872 1628144 5680632 -1628056 5680576 1630504 5688864 1630544 5688856 1628144 5680632 -1628056 5680576 1630504 5688864 1628144 5680632 1628072 5680544 -1630544 5688856 1630632 5688872 1628144 5680632 1630504 5688864 -1630632 5688872 1630728 5688896 1628144 5680632 1630544 5688856 -1630728 5688896 1630816 5688920 1628144 5680632 1630632 5688872 -1630904 5688944 1631080 5689008 1628144 5680632 1630816 5688920 -1630816 5688920 1630904 5688944 1628144 5680632 1630728 5688896 -1631080 5689008 1631152 5689072 1628144 5680632 1630904 5688944 -1631216 5689136 1663880 5646248 1628144 5680632 1631152 5689072 -1631152 5689072 1631216 5689136 1628144 5680632 1631080 5689008 -1628056 5680576 1630424 5688880 1630504 5688864 1628144 5680632 -1630504 5688864 1630544 5688856 1628144 5680632 1630424 5688880 -1628056 5680576 1630424 5688880 1628144 5680632 1628072 5680544 -1628056 5680576 1625984 5687408 1630424 5688880 1628144 5680632 -1625984 5687408 1626016 5687448 1630424 5688880 1628144 5680632 -1628056 5680576 1625984 5687408 1628144 5680632 1628072 5680544 -1628056 5680576 1625904 5687328 1625984 5687408 1628144 5680632 -1628056 5680576 1625904 5687328 1628144 5680632 1628072 5680544 -1625984 5687408 1630424 5688880 1628144 5680632 1625904 5687328 -1628056 5680576 1627152 5680768 1625904 5687328 1628144 5680632 -1628056 5680576 1627152 5680768 1628144 5680632 1628072 5680544 -1625904 5687328 1625984 5687408 1628144 5680632 1627152 5680768 -1628056 5680576 1627776 5680360 1627152 5680768 1628144 5680632 -1627152 5680768 1625856 5687296 1625904 5687328 1628144 5680632 -1630424 5688880 1630504 5688864 1628144 5680632 1625984 5687408 -1630424 5688880 1628112 5680744 1625984 5687408 1626016 5687448 -1628112 5680744 1628144 5680632 1625984 5687408 1626016 5687448 -1630424 5688880 1628144 5680632 1628112 5680744 1626016 5687448 -1625984 5687408 1628112 5680744 1628144 5680632 1625904 5687328 -1625984 5687408 1626016 5687448 1628112 5680744 1625904 5687328 -1628144 5680632 1627152 5680768 1625904 5687328 1628112 5680744 -1628112 5680744 1630424 5688880 1628144 5680632 1627152 5680768 -1625904 5687328 1625984 5687408 1628112 5680744 1627152 5680768 -1627152 5680768 1625856 5687296 1625904 5687328 1628112 5680744 -1627152 5680768 1625856 5687296 1628112 5680744 1628144 5680632 -1625904 5687328 1625984 5687408 1628112 5680744 1625856 5687296 -1627152 5680768 1625824 5687280 1625856 5687296 1628112 5680744 -1628144 5680632 1628056 5680576 1627152 5680768 1628112 5680744 -1628144 5680632 1628072 5680544 1628056 5680576 1628112 5680744 -1627152 5680768 1625856 5687296 1628112 5680744 1628056 5680576 -1628144 5680632 1628056 5680576 1628112 5680744 1630424 5688880 -1628056 5680576 1627776 5680360 1627152 5680768 1628112 5680744 -1627776 5680360 1627096 5680104 1627152 5680768 1628112 5680744 -1627152 5680768 1625856 5687296 1628112 5680744 1627776 5680360 -1628056 5680576 1628008 5680480 1627776 5680360 1628112 5680744 -1628056 5680576 1627776 5680360 1628112 5680744 1628144 5680632 -1630424 5688880 1628112 5680744 1626016 5687448 1626048 5687512 -1628144 5680632 1628112 5680744 1630424 5688880 1630504 5688864 -1628144 5680632 1628112 5680744 1630504 5688864 1630544 5688856 -1628144 5680632 1628112 5680744 1630544 5688856 1630632 5688872 -1628112 5680744 1630504 5688864 1630544 5688856 1630632 5688872 -1628144 5680632 1628112 5680744 1630632 5688872 1630728 5688896 -1628112 5680744 1630544 5688856 1630632 5688872 1630728 5688896 -1628144 5680632 1628112 5680744 1630728 5688896 1630816 5688920 -1628112 5680744 1630632 5688872 1630728 5688896 1630816 5688920 -1628144 5680632 1628112 5680744 1630816 5688920 1630904 5688944 -1628112 5680744 1630728 5688896 1630816 5688920 1630904 5688944 -1628144 5680632 1628112 5680744 1630904 5688944 1631080 5689008 -1630904 5688944 1630992 5688984 1631080 5689008 1628112 5680744 -1628112 5680744 1630816 5688920 1630904 5688944 1631080 5689008 -1628144 5680632 1628112 5680744 1631080 5689008 1631152 5689072 -1628144 5680632 1628056 5680576 1628112 5680744 1631080 5689008 -1628112 5680744 1626016 5687448 1630424 5688880 1630504 5688864 -1628112 5680744 1630424 5688880 1630504 5688864 1630544 5688856 -1626016 5687448 1628112 5680824 1628112 5680744 1625984 5687408 -1628112 5680744 1625904 5687328 1625984 5687408 1628112 5680824 -1625984 5687408 1626016 5687448 1628112 5680824 1625904 5687328 -1628112 5680824 1630424 5688880 1628112 5680744 1625904 5687328 -1626016 5687448 1630424 5688880 1628112 5680824 1625984 5687408 -1628112 5680744 1628112 5680824 1630424 5688880 1630504 5688864 -1628112 5680824 1626016 5687448 1630424 5688880 1630504 5688864 -1628112 5680744 1625904 5687328 1628112 5680824 1630504 5688864 -1628112 5680744 1625856 5687296 1625904 5687328 1628112 5680824 -1625904 5687328 1625984 5687408 1628112 5680824 1625856 5687296 -1628112 5680744 1625856 5687296 1628112 5680824 1630504 5688864 -1628112 5680744 1627152 5680768 1625856 5687296 1628112 5680824 -1628112 5680744 1627152 5680768 1628112 5680824 1630504 5688864 -1628112 5680744 1627776 5680360 1627152 5680768 1628112 5680824 -1627776 5680360 1627096 5680104 1627152 5680768 1628112 5680824 -1628112 5680744 1627776 5680360 1628112 5680824 1630504 5688864 -1625856 5687296 1625904 5687328 1628112 5680824 1627152 5680768 -1627152 5680768 1625824 5687280 1625856 5687296 1628112 5680824 -1628112 5680744 1628056 5680576 1627776 5680360 1628112 5680824 -1628112 5680744 1628056 5680576 1628112 5680824 1630504 5688864 -1627776 5680360 1627152 5680768 1628112 5680824 1628056 5680576 -1628056 5680576 1628008 5680480 1627776 5680360 1628112 5680824 -1627152 5680768 1625856 5687296 1628112 5680824 1627776 5680360 -1628112 5680744 1628144 5680632 1628056 5680576 1628112 5680824 -1630424 5688880 1628112 5680824 1626016 5687448 1626048 5687512 -1628112 5680744 1628112 5680824 1630504 5688864 1630544 5688856 -1628112 5680744 1628112 5680824 1630544 5688856 1630632 5688872 -1628112 5680744 1628112 5680824 1630632 5688872 1630728 5688896 -1628112 5680824 1630544 5688856 1630632 5688872 1630728 5688896 -1628112 5680744 1628112 5680824 1630728 5688896 1630816 5688920 -1628112 5680824 1630632 5688872 1630728 5688896 1630816 5688920 -1628112 5680744 1628112 5680824 1630816 5688920 1630904 5688944 -1628112 5680824 1630728 5688896 1630816 5688920 1630904 5688944 -1628112 5680744 1628112 5680824 1630904 5688944 1631080 5689008 -1628112 5680824 1630816 5688920 1630904 5688944 1631080 5689008 -1630904 5688944 1630992 5688984 1631080 5689008 1628112 5680824 -1628112 5680744 1628112 5680824 1631080 5689008 1628144 5680632 -1628112 5680824 1630904 5688944 1631080 5689008 1628144 5680632 -1631080 5689008 1631152 5689072 1628144 5680632 1628112 5680824 -1628112 5680744 1628056 5680576 1628112 5680824 1628144 5680632 -1628112 5680824 1630424 5688880 1630504 5688864 1630544 5688856 -1628112 5680824 1630504 5688864 1630544 5688856 1630632 5688872 -1628112 5680824 1628096 5680872 1625984 5687408 1626016 5687448 -1628112 5680824 1625904 5687328 1628096 5680872 1626016 5687448 -1625904 5687328 1628096 5680872 1628112 5680824 1625856 5687296 -1628096 5680872 1626016 5687448 1628112 5680824 1625856 5687296 -1625904 5687328 1625984 5687408 1628096 5680872 1625856 5687296 -1628112 5680824 1628096 5680872 1626016 5687448 1630424 5688880 -1628096 5680872 1625984 5687408 1626016 5687448 1630424 5688880 -1628112 5680824 1628096 5680872 1630424 5688880 1630504 5688864 -1628112 5680824 1625856 5687296 1628096 5680872 1630504 5688864 -1628096 5680872 1626016 5687448 1630424 5688880 1630504 5688864 -1628112 5680824 1628096 5680872 1630504 5688864 1630544 5688856 -1628096 5680872 1630424 5688880 1630504 5688864 1630544 5688856 -1628112 5680824 1625856 5687296 1628096 5680872 1630544 5688856 -1628112 5680824 1627152 5680768 1625856 5687296 1628096 5680872 -1628112 5680824 1627152 5680768 1628096 5680872 1630544 5688856 -1625856 5687296 1625904 5687328 1628096 5680872 1627152 5680768 -1628096 5680872 1625904 5687328 1625984 5687408 1626016 5687448 -1627152 5680768 1625824 5687280 1625856 5687296 1628096 5680872 -1627152 5680768 1625672 5687248 1625824 5687280 1628096 5680872 -1625856 5687296 1625904 5687328 1628096 5680872 1625824 5687280 -1627152 5680768 1625824 5687280 1628096 5680872 1628112 5680824 -1628112 5680824 1627776 5680360 1627152 5680768 1628096 5680872 -1627776 5680360 1627096 5680104 1627152 5680768 1628096 5680872 -1628112 5680824 1627776 5680360 1628096 5680872 1630544 5688856 -1628112 5680824 1628056 5680576 1627776 5680360 1628096 5680872 -1628112 5680824 1628056 5680576 1628096 5680872 1630544 5688856 -1627152 5680768 1625824 5687280 1628096 5680872 1627776 5680360 -1628056 5680576 1628008 5680480 1627776 5680360 1628096 5680872 -1628112 5680824 1628112 5680744 1628056 5680576 1628096 5680872 -1628112 5680824 1628112 5680744 1628096 5680872 1630544 5688856 -1628056 5680576 1627776 5680360 1628096 5680872 1628112 5680744 -1627776 5680360 1627152 5680768 1628096 5680872 1628056 5680576 -1628112 5680744 1628144 5680632 1628056 5680576 1628096 5680872 -1626016 5687448 1626048 5687512 1630424 5688880 1628096 5680872 -1628112 5680824 1628096 5680872 1630544 5688856 1630632 5688872 -1628112 5680824 1628096 5680872 1630632 5688872 1630728 5688896 -1628112 5680824 1628096 5680872 1630728 5688896 1630816 5688920 -1628096 5680872 1630632 5688872 1630728 5688896 1630816 5688920 -1628112 5680824 1628096 5680872 1630816 5688920 1630904 5688944 -1628096 5680872 1630728 5688896 1630816 5688920 1630904 5688944 -1628112 5680824 1628096 5680872 1630904 5688944 1631080 5689008 -1628096 5680872 1630816 5688920 1630904 5688944 1631080 5689008 -1630904 5688944 1630992 5688984 1631080 5689008 1628096 5680872 -1628112 5680824 1628096 5680872 1631080 5689008 1628144 5680632 -1628112 5680824 1628112 5680744 1628096 5680872 1631080 5689008 -1628096 5680872 1630504 5688864 1630544 5688856 1630632 5688872 -1628096 5680872 1630544 5688856 1630632 5688872 1630728 5688896 -1625824 5687280 1628016 5680960 1627152 5680768 1625672 5687248 -1627152 5680768 1628016 5680960 1628096 5680872 1627776 5680360 -1627152 5680768 1625824 5687280 1628016 5680960 1627776 5680360 -1627152 5680768 1628016 5680960 1627776 5680360 1627096 5680104 -1628016 5680960 1625824 5687280 1628096 5680872 1627776 5680360 -1628096 5680872 1628016 5680960 1625824 5687280 1625856 5687296 -1628096 5680872 1628016 5680960 1625856 5687296 1625904 5687328 -1628016 5680960 1627152 5680768 1625824 5687280 1625856 5687296 -1628096 5680872 1628016 5680960 1625904 5687328 1625984 5687408 -1628016 5680960 1625856 5687296 1625904 5687328 1625984 5687408 -1628096 5680872 1627776 5680360 1628016 5680960 1625984 5687408 -1628096 5680872 1628016 5680960 1625984 5687408 1626016 5687448 -1628096 5680872 1628016 5680960 1626016 5687448 1630424 5688880 -1628016 5680960 1625984 5687408 1626016 5687448 1630424 5688880 -1628016 5680960 1625904 5687328 1625984 5687408 1626016 5687448 -1628096 5680872 1628016 5680960 1630424 5688880 1630504 5688864 -1628016 5680960 1626016 5687448 1630424 5688880 1630504 5688864 -1628096 5680872 1628016 5680960 1630504 5688864 1630544 5688856 -1628016 5680960 1630424 5688880 1630504 5688864 1630544 5688856 -1628096 5680872 1627776 5680360 1628016 5680960 1630544 5688856 -1628096 5680872 1628016 5680960 1630544 5688856 1630632 5688872 -1628016 5680960 1630504 5688864 1630544 5688856 1630632 5688872 -1628096 5680872 1627776 5680360 1628016 5680960 1630632 5688872 -1628016 5680960 1625824 5687280 1625856 5687296 1625904 5687328 -1628096 5680872 1628056 5680576 1627776 5680360 1628016 5680960 -1628096 5680872 1628112 5680744 1628056 5680576 1628016 5680960 -1628096 5680872 1628112 5680744 1628016 5680960 1630632 5688872 -1627776 5680360 1627152 5680768 1628016 5680960 1628056 5680576 -1628056 5680576 1628008 5680480 1627776 5680360 1628016 5680960 -1628096 5680872 1628112 5680824 1628112 5680744 1628016 5680960 -1628056 5680576 1627776 5680360 1628016 5680960 1628112 5680744 -1628112 5680744 1628144 5680632 1628056 5680576 1628016 5680960 -1626016 5687448 1626048 5687512 1630424 5688880 1628016 5680960 -1628096 5680872 1628016 5680960 1630632 5688872 1630728 5688896 -1627152 5680768 1627944 5680984 1628016 5680960 1627776 5680360 -1627152 5680768 1627944 5680984 1627776 5680360 1627096 5680104 -1625824 5687280 1627944 5680984 1627152 5680768 1625672 5687248 -1627152 5680768 1625824 5687280 1627944 5680984 1627776 5680360 -1628016 5680960 1627944 5680984 1625824 5687280 1625856 5687296 -1627944 5680984 1625856 5687296 1628016 5680960 1627776 5680360 -1627944 5680984 1627152 5680768 1625824 5687280 1625856 5687296 -1628016 5680960 1628056 5680576 1627776 5680360 1627944 5680984 -1627776 5680360 1627152 5680768 1627944 5680984 1628056 5680576 -1628016 5680960 1628056 5680576 1627944 5680984 1625856 5687296 -1628016 5680960 1627944 5680984 1625856 5687296 1625904 5687328 -1628016 5680960 1627944 5680984 1625904 5687328 1625984 5687408 -1627944 5680984 1625824 5687280 1625856 5687296 1625904 5687328 -1628016 5680960 1627944 5680984 1625984 5687408 1626016 5687448 -1628016 5680960 1627944 5680984 1626016 5687448 1630424 5688880 -1628016 5680960 1627944 5680984 1630424 5688880 1630504 5688864 -1627944 5680984 1625904 5687328 1625984 5687408 1626016 5687448 -1627944 5680984 1625984 5687408 1626016 5687448 1630424 5688880 -1628016 5680960 1628056 5680576 1627944 5680984 1630424 5688880 -1627944 5680984 1625856 5687296 1625904 5687328 1625984 5687408 -1628056 5680576 1628008 5680480 1627776 5680360 1627944 5680984 -1628016 5680960 1628112 5680744 1628056 5680576 1627944 5680984 -1628016 5680960 1628096 5680872 1628112 5680744 1627944 5680984 -1628016 5680960 1628096 5680872 1627944 5680984 1630424 5688880 -1628056 5680576 1627776 5680360 1627944 5680984 1628112 5680744 -1628096 5680872 1628112 5680824 1628112 5680744 1627944 5680984 -1628096 5680872 1628112 5680824 1627944 5680984 1628016 5680960 -1628112 5680744 1628056 5680576 1627944 5680984 1628112 5680824 -1628112 5680744 1628144 5680632 1628056 5680576 1627944 5680984 -1626016 5687448 1626048 5687512 1630424 5688880 1627944 5680984 -1627776 5680360 1627752 5680904 1627944 5680984 1628056 5680576 -1627752 5680904 1627152 5680768 1627944 5680984 1628056 5680576 -1627152 5680768 1627752 5680904 1627776 5680360 1627096 5680104 -1627776 5680360 1627152 5680768 1627752 5680904 1628056 5680576 -1627944 5680984 1627752 5680904 1627152 5680768 1625824 5687280 -1627944 5680984 1628112 5680744 1628056 5680576 1627752 5680904 -1628056 5680576 1627776 5680360 1627752 5680904 1628112 5680744 -1627944 5680984 1628112 5680744 1627752 5680904 1627152 5680768 -1627776 5680360 1627752 5680904 1628056 5680576 1628008 5680480 -1627752 5680904 1628112 5680744 1628056 5680576 1628008 5680480 -1627776 5680360 1627152 5680768 1627752 5680904 1628008 5680480 -1628056 5680576 1628040 5680512 1628008 5680480 1627752 5680904 -1627944 5680984 1628112 5680824 1628112 5680744 1627752 5680904 -1627944 5680984 1628112 5680824 1627752 5680904 1627152 5680768 -1628112 5680744 1628056 5680576 1627752 5680904 1628112 5680824 -1627944 5680984 1628096 5680872 1628112 5680824 1627752 5680904 -1628112 5680744 1628144 5680632 1628056 5680576 1627752 5680904 -1627152 5680768 1627616 5680840 1627776 5680360 1627096 5680104 -1627776 5680360 1627616 5680840 1627752 5680904 1628008 5680480 -1627776 5680360 1627152 5680768 1627616 5680840 1628008 5680480 -1627752 5680904 1627616 5680840 1627152 5680768 1627944 5680984 -1627616 5680840 1627152 5680768 1627752 5680904 1628008 5680480 -1627752 5680904 1628056 5680576 1628008 5680480 1627616 5680840 -1625824 5687280 1627248 5680800 1627152 5680768 1625672 5687248 -1627152 5680768 1627248 5680800 1627944 5680984 1627752 5680904 -1627248 5680800 1625824 5687280 1627944 5680984 1627752 5680904 -1627248 5680800 1627752 5680904 1627152 5680768 1625672 5687248 -1625824 5687280 1627944 5680984 1627248 5680800 1625672 5687248 -1627944 5680984 1627248 5680800 1625824 5687280 1625856 5687296 -1627152 5680768 1627248 5680800 1627752 5680904 1627616 5680840 -1627152 5680768 1627248 5680800 1627616 5680840 1627776 5680360 -1627616 5680840 1628008 5680480 1627776 5680360 1627248 5680800 -1627152 5680768 1627248 5680800 1627776 5680360 1627096 5680104 -1627248 5680800 1627616 5680840 1627776 5680360 1627096 5680104 -1627248 5680800 1627944 5680984 1627752 5680904 1627616 5680840 -1627152 5680768 1625672 5687248 1627248 5680800 1627096 5680104 -1627152 5680768 1627248 5680800 1627096 5680104 1626952 5680672 -1627248 5680800 1627752 5680904 1627616 5680840 1627776 5680360 -1627152 5680768 1625656 5687248 1625672 5687248 1627248 5680800 -1625824 5687280 1627248 5680800 1625672 5687248 1625736 5687272 -1627944 5680984 1626648 5685816 1630424 5688880 1628016 5680960 -1630424 5688880 1630504 5688864 1628016 5680960 1626648 5685816 -1628016 5680960 1627944 5680984 1626648 5685816 1630504 5688864 -1626016 5687448 1626648 5685816 1627944 5680984 1625984 5687408 -1627944 5680984 1625904 5687328 1625984 5687408 1626648 5685816 -1626016 5687448 1630424 5688880 1626648 5685816 1625984 5687408 -1625984 5687408 1626016 5687448 1626648 5685816 1625904 5687328 -1630504 5688864 1630544 5688856 1628016 5680960 1626648 5685816 -1630504 5688864 1630544 5688856 1626648 5685816 1630424 5688880 -1630544 5688856 1630632 5688872 1628016 5680960 1626648 5685816 -1628016 5680960 1627944 5680984 1626648 5685816 1630544 5688856 -1626648 5685816 1626016 5687448 1630424 5688880 1630504 5688864 -1627944 5680984 1625904 5687328 1626648 5685816 1628016 5680960 -1627944 5680984 1625856 5687296 1625904 5687328 1626648 5685816 -1625904 5687328 1625984 5687408 1626648 5685816 1625856 5687296 -1627944 5680984 1625824 5687280 1625856 5687296 1626648 5685816 -1627944 5680984 1625824 5687280 1626648 5685816 1628016 5680960 -1627944 5680984 1627248 5680800 1625824 5687280 1626648 5685816 -1627944 5680984 1627752 5680904 1627248 5680800 1626648 5685816 -1625824 5687280 1625856 5687296 1626648 5685816 1627248 5680800 -1627248 5680800 1625672 5687248 1625824 5687280 1626648 5685816 -1627248 5680800 1627152 5680768 1625672 5687248 1626648 5685816 -1625824 5687280 1625856 5687296 1626648 5685816 1625672 5687248 -1625672 5687248 1625824 5687280 1626648 5685816 1627152 5680768 -1627944 5680984 1627248 5680800 1626648 5685816 1628016 5680960 -1627248 5680800 1627152 5680768 1626648 5685816 1627944 5680984 -1627152 5680768 1625656 5687248 1625672 5687248 1626648 5685816 -1627152 5680768 1625656 5687248 1626648 5685816 1627248 5680800 -1625672 5687248 1625824 5687280 1626648 5685816 1625656 5687248 -1627152 5680768 1626952 5680672 1625656 5687248 1626648 5685816 -1627152 5680768 1626952 5680672 1626648 5685816 1627248 5680800 -1626952 5680672 1626744 5680528 1625656 5687248 1626648 5685816 -1626952 5680672 1626744 5680528 1626648 5685816 1627152 5680768 -1626744 5680528 1625568 5687272 1625656 5687248 1626648 5685816 -1626744 5680528 1625568 5687272 1626648 5685816 1626952 5680672 -1626744 5680528 1622296 5686800 1625568 5687272 1626648 5685816 -1626744 5680528 1622296 5686800 1626648 5685816 1626952 5680672 -1622296 5686800 1622472 5686920 1625568 5687272 1626648 5685816 -1622296 5686800 1622472 5686920 1626648 5685816 1626744 5680528 -1622472 5686920 1625480 5687312 1625568 5687272 1626648 5685816 -1622472 5686920 1625480 5687312 1626648 5685816 1622296 5686800 -1622472 5686920 1622592 5687064 1625480 5687312 1626648 5685816 -1625480 5687312 1625488 5687312 1625568 5687272 1626648 5685816 -1625568 5687272 1625656 5687248 1626648 5685816 1625480 5687312 -1626744 5680528 1621112 5686056 1622296 5686800 1626648 5685816 -1626744 5680528 1621112 5686056 1626648 5685816 1626952 5680672 -1626744 5680528 1626632 5680392 1621112 5686056 1626648 5685816 -1622296 5686800 1622472 5686920 1626648 5685816 1621112 5686056 -1621112 5686056 1621744 5686536 1622296 5686800 1626648 5685816 -1625656 5687248 1625672 5687248 1626648 5685816 1625568 5687272 -1625672 5687248 1625736 5687272 1625824 5687280 1626648 5685816 -1625856 5687296 1625904 5687328 1626648 5685816 1625824 5687280 -1630424 5688880 1626648 5685816 1626016 5687448 1626048 5687512 -1626648 5685816 1625984 5687408 1626016 5687448 1626048 5687512 -1630424 5688880 1630504 5688864 1626648 5685816 1626048 5687512 -1630424 5688880 1626648 5685816 1626048 5687512 1626096 5687632 -1630424 5688880 1630504 5688864 1626648 5685816 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1626648 5685816 -1626648 5685816 1626016 5687448 1626048 5687512 1626096 5687632 -1630424 5688880 1626648 5685816 1626096 5687632 1626096 5687664 -1628016 5680960 1626784 5685776 1630544 5688856 1630632 5688872 -1626648 5685816 1626784 5685776 1628016 5680960 1627944 5680984 -1626648 5685816 1630544 5688856 1626784 5685776 1627944 5680984 -1630544 5688856 1626784 5685776 1626648 5685816 1630504 5688864 -1626648 5685816 1630424 5688880 1630504 5688864 1626784 5685776 -1630544 5688856 1628016 5680960 1626784 5685776 1630504 5688864 -1626784 5685776 1627944 5680984 1626648 5685816 1630424 5688880 -1630504 5688864 1630544 5688856 1626784 5685776 1630424 5688880 -1626648 5685816 1626096 5687632 1630424 5688880 1626784 5685776 -1630424 5688880 1630504 5688864 1626784 5685776 1626096 5687632 -1626648 5685816 1626096 5687632 1626784 5685776 1627944 5680984 -1626648 5685816 1626784 5685776 1627944 5680984 1627248 5680800 -1626784 5685776 1628016 5680960 1627944 5680984 1627248 5680800 -1627944 5680984 1627752 5680904 1627248 5680800 1626784 5685776 -1626648 5685816 1626096 5687632 1626784 5685776 1627248 5680800 -1626648 5685816 1626784 5685776 1627248 5680800 1627152 5680768 -1626648 5685816 1626784 5685776 1627152 5680768 1626952 5680672 -1626648 5685816 1626096 5687632 1626784 5685776 1627152 5680768 -1626784 5685776 1627944 5680984 1627248 5680800 1627152 5680768 -1626784 5685776 1630544 5688856 1628016 5680960 1627944 5680984 -1626096 5687632 1626096 5687664 1630424 5688880 1626784 5685776 -1626648 5685816 1626048 5687512 1626096 5687632 1626784 5685776 -1626648 5685816 1626048 5687512 1626784 5685776 1627152 5680768 -1626096 5687632 1630424 5688880 1626784 5685776 1626048 5687512 -1626048 5687512 1626064 5687560 1626096 5687632 1626784 5685776 -1626648 5685816 1626016 5687448 1626048 5687512 1626784 5685776 -1626648 5685816 1626016 5687448 1626784 5685776 1627152 5680768 -1626648 5685816 1625984 5687408 1626016 5687448 1626784 5685776 -1626048 5687512 1626096 5687632 1626784 5685776 1626016 5687448 -1628016 5680960 1626912 5685760 1630544 5688856 1630632 5688872 -1630544 5688856 1626912 5685760 1626784 5685776 1630504 5688864 -1630544 5688856 1628016 5680960 1626912 5685760 1630504 5688864 -1626784 5685776 1630424 5688880 1630504 5688864 1626912 5685760 -1626784 5685776 1626096 5687632 1630424 5688880 1626912 5685760 -1630504 5688864 1630544 5688856 1626912 5685760 1630424 5688880 -1630424 5688880 1630504 5688864 1626912 5685760 1626096 5687632 -1626784 5685776 1626048 5687512 1626096 5687632 1626912 5685760 -1626096 5687632 1630424 5688880 1626912 5685760 1626048 5687512 -1626784 5685776 1626912 5685760 1628016 5680960 1627944 5680984 -1626784 5685776 1626912 5685760 1627944 5680984 1627248 5680800 -1627944 5680984 1627752 5680904 1627248 5680800 1626912 5685760 -1626912 5685760 1630544 5688856 1628016 5680960 1627944 5680984 -1626784 5685776 1626912 5685760 1627248 5680800 1627152 5680768 -1626912 5685760 1628016 5680960 1627944 5680984 1627248 5680800 -1626912 5685760 1627248 5680800 1626784 5685776 1626048 5687512 -1626048 5687512 1626064 5687560 1626096 5687632 1626912 5685760 -1626096 5687632 1626096 5687664 1630424 5688880 1626912 5685760 -1626784 5685776 1626016 5687448 1626048 5687512 1626912 5685760 -1626048 5687512 1626096 5687632 1626912 5685760 1626016 5687448 -1626784 5685776 1626016 5687448 1626912 5685760 1627248 5680800 -1626784 5685776 1626648 5685816 1626016 5687448 1626912 5685760 -1626648 5685816 1625984 5687408 1626016 5687448 1626912 5685760 -1626784 5685776 1626648 5685816 1626912 5685760 1627248 5680800 -1626016 5687448 1626048 5687512 1626912 5685760 1626648 5685816 -1628016 5680960 1627048 5685800 1630544 5688856 1630632 5688872 -1626912 5685760 1627048 5685800 1628016 5680960 1627944 5680984 -1630544 5688856 1627048 5685800 1626912 5685760 1630504 5688864 -1626912 5685760 1630424 5688880 1630504 5688864 1627048 5685800 -1630504 5688864 1630544 5688856 1627048 5685800 1630424 5688880 -1628016 5680960 1627944 5680984 1627048 5685800 1630632 5688872 -1627048 5685800 1630504 5688864 1630544 5688856 1630632 5688872 -1626912 5685760 1630424 5688880 1627048 5685800 1627944 5680984 -1626912 5685760 1626096 5687632 1630424 5688880 1627048 5685800 -1626912 5685760 1626048 5687512 1626096 5687632 1627048 5685800 -1630424 5688880 1630504 5688864 1627048 5685800 1626096 5687632 -1626912 5685760 1626048 5687512 1627048 5685800 1627944 5680984 -1626096 5687632 1630424 5688880 1627048 5685800 1626048 5687512 -1626912 5685760 1626016 5687448 1626048 5687512 1627048 5685800 -1626048 5687512 1626096 5687632 1627048 5685800 1626016 5687448 -1626912 5685760 1626016 5687448 1627048 5685800 1627944 5680984 -1628016 5680960 1627048 5685800 1630632 5688872 1628096 5680872 -1626912 5685760 1627048 5685800 1627944 5680984 1627248 5680800 -1626048 5687512 1626064 5687560 1626096 5687632 1627048 5685800 -1626096 5687632 1626096 5687664 1630424 5688880 1627048 5685800 -1630424 5688880 1630504 5688864 1627048 5685800 1626096 5687664 -1626096 5687664 1626464 5689664 1630424 5688880 1627048 5685800 -1626096 5687632 1626096 5687664 1627048 5685800 1626048 5687512 -1626912 5685760 1626648 5685816 1626016 5687448 1627048 5685800 -1626648 5685816 1625984 5687408 1626016 5687448 1627048 5685800 -1626912 5685760 1626648 5685816 1627048 5685800 1627944 5680984 -1626016 5687448 1626048 5687512 1627048 5685800 1626648 5685816 -1626912 5685760 1626784 5685776 1626648 5685816 1627048 5685800 -1626912 5685760 1626784 5685776 1627048 5685800 1627944 5680984 -1626648 5685816 1626016 5687448 1627048 5685800 1626784 5685776 -1630632 5688872 1627280 5685920 1627048 5685800 1630544 5688856 -1627280 5685920 1628016 5680960 1627048 5685800 1630544 5688856 -1627048 5685800 1627280 5685920 1628016 5680960 1627944 5680984 -1627048 5685800 1630544 5688856 1627280 5685920 1627944 5680984 -1627048 5685800 1627280 5685920 1627944 5680984 1626912 5685760 -1627048 5685800 1630504 5688864 1630544 5688856 1627280 5685920 -1630544 5688856 1630632 5688872 1627280 5685920 1630504 5688864 -1627048 5685800 1630504 5688864 1627280 5685920 1627944 5680984 -1627048 5685800 1630424 5688880 1630504 5688864 1627280 5685920 -1627048 5685800 1630424 5688880 1627280 5685920 1627944 5680984 -1627048 5685800 1626096 5687664 1630424 5688880 1627280 5685920 -1627048 5685800 1626096 5687664 1627280 5685920 1627944 5680984 -1626096 5687664 1626464 5689664 1630424 5688880 1627280 5685920 -1630424 5688880 1630504 5688864 1627280 5685920 1626096 5687664 -1630504 5688864 1630544 5688856 1627280 5685920 1630424 5688880 -1627280 5685920 1630632 5688872 1628016 5680960 1627944 5680984 -1630632 5688872 1628016 5680960 1627280 5685920 1630544 5688856 -1628016 5680960 1627280 5685920 1630632 5688872 1628096 5680872 -1628016 5680960 1627944 5680984 1627280 5685920 1628096 5680872 -1627280 5685920 1630544 5688856 1630632 5688872 1628096 5680872 -1630632 5688872 1630728 5688896 1628096 5680872 1627280 5685920 -1627048 5685800 1626096 5687632 1626096 5687664 1627280 5685920 -1627048 5685800 1626096 5687632 1627280 5685920 1627944 5680984 -1626096 5687664 1630424 5688880 1627280 5685920 1626096 5687632 -1627048 5685800 1626048 5687512 1626096 5687632 1627280 5685920 -1627048 5685800 1626016 5687448 1626048 5687512 1627280 5685920 -1627048 5685800 1626016 5687448 1627280 5685920 1627944 5680984 -1626048 5687512 1626096 5687632 1627280 5685920 1626016 5687448 -1627048 5685800 1626648 5685816 1626016 5687448 1627280 5685920 -1626016 5687448 1626048 5687512 1627280 5685920 1626648 5685816 -1627048 5685800 1626648 5685816 1627280 5685920 1627944 5680984 -1626648 5685816 1625984 5687408 1626016 5687448 1627280 5685920 -1626048 5687512 1626064 5687560 1626096 5687632 1627280 5685920 -1626096 5687632 1626096 5687664 1627280 5685920 1626048 5687512 -1627048 5685800 1626784 5685776 1626648 5685816 1627280 5685920 -1630632 5688872 1627672 5686200 1627280 5685920 1630544 5688856 -1627280 5685920 1630504 5688864 1630544 5688856 1627672 5686200 -1630632 5688872 1628096 5680872 1627672 5686200 1630544 5688856 -1627280 5685920 1630424 5688880 1630504 5688864 1627672 5686200 -1630504 5688864 1630544 5688856 1627672 5686200 1630424 5688880 -1627280 5685920 1626096 5687664 1630424 5688880 1627672 5686200 -1627280 5685920 1626096 5687632 1626096 5687664 1627672 5686200 -1626096 5687664 1626464 5689664 1630424 5688880 1627672 5686200 -1626464 5689664 1627944 5690696 1630424 5688880 1627672 5686200 -1626096 5687664 1626464 5689664 1627672 5686200 1626096 5687632 -1630424 5688880 1630504 5688864 1627672 5686200 1626464 5689664 -1630544 5688856 1630632 5688872 1627672 5686200 1630504 5688864 -1627672 5686200 1628096 5680872 1627280 5685920 1626096 5687632 -1627280 5685920 1627672 5686200 1628096 5680872 1628016 5680960 -1627280 5685920 1627672 5686200 1628016 5680960 1627944 5680984 -1627672 5686200 1630632 5688872 1628096 5680872 1628016 5680960 -1627280 5685920 1626096 5687632 1627672 5686200 1628016 5680960 -1626096 5687664 1626424 5689616 1626464 5689664 1627672 5686200 -1628096 5680872 1627672 5686200 1630632 5688872 1630728 5688896 -1628096 5680872 1627672 5686200 1630728 5688896 1630816 5688920 -1627672 5686200 1630544 5688856 1630632 5688872 1630728 5688896 -1628096 5680872 1627672 5686200 1630816 5688920 1630904 5688944 -1627672 5686200 1630728 5688896 1630816 5688920 1630904 5688944 -1628096 5680872 1627672 5686200 1630904 5688944 1631080 5689008 -1628096 5680872 1628016 5680960 1627672 5686200 1630904 5688944 -1627672 5686200 1630632 5688872 1630728 5688896 1630816 5688920 -1627280 5685920 1626048 5687512 1626096 5687632 1627672 5686200 -1626096 5687632 1626096 5687664 1627672 5686200 1626048 5687512 -1627280 5685920 1626016 5687448 1626048 5687512 1627672 5686200 -1627280 5685920 1626648 5685816 1626016 5687448 1627672 5686200 -1627280 5685920 1626016 5687448 1627672 5686200 1628016 5680960 -1626048 5687512 1626064 5687560 1626096 5687632 1627672 5686200 -1626048 5687512 1626096 5687632 1627672 5686200 1626016 5687448 -1630904 5688944 1627824 5686272 1627672 5686200 1630816 5688920 -1627672 5686200 1630728 5688896 1630816 5688920 1627824 5686272 -1630816 5688920 1630904 5688944 1627824 5686272 1630728 5688896 -1628096 5680872 1627824 5686272 1630904 5688944 1631080 5689008 -1630904 5688944 1628096 5680872 1627824 5686272 1630816 5688920 -1627672 5686200 1627824 5686272 1628096 5680872 1628016 5680960 -1627824 5686272 1630904 5688944 1628096 5680872 1628016 5680960 -1627672 5686200 1627824 5686272 1628016 5680960 1627280 5685920 -1628016 5680960 1627944 5680984 1627280 5685920 1627824 5686272 -1627824 5686272 1628096 5680872 1628016 5680960 1627280 5685920 -1627824 5686272 1627280 5685920 1627672 5686200 1630728 5688896 -1627672 5686200 1630632 5688872 1630728 5688896 1627824 5686272 -1630728 5688896 1630816 5688920 1627824 5686272 1630632 5688872 -1627672 5686200 1630544 5688856 1630632 5688872 1627824 5686272 -1627672 5686200 1630504 5688864 1630544 5688856 1627824 5686272 -1627672 5686200 1630424 5688880 1630504 5688864 1627824 5686272 -1630544 5688856 1630632 5688872 1627824 5686272 1630504 5688864 -1627672 5686200 1626464 5689664 1630424 5688880 1627824 5686272 -1630424 5688880 1630504 5688864 1627824 5686272 1626464 5689664 -1626464 5689664 1627944 5690696 1630424 5688880 1627824 5686272 -1627672 5686200 1626096 5687664 1626464 5689664 1627824 5686272 -1627672 5686200 1626096 5687632 1626096 5687664 1627824 5686272 -1627672 5686200 1626048 5687512 1626096 5687632 1627824 5686272 -1626096 5687664 1626464 5689664 1627824 5686272 1626096 5687632 -1626464 5689664 1630424 5688880 1627824 5686272 1626096 5687664 -1630504 5688864 1630544 5688856 1627824 5686272 1630424 5688880 -1627672 5686200 1626096 5687632 1627824 5686272 1627280 5685920 -1626096 5687664 1626424 5689616 1626464 5689664 1627824 5686272 -1630632 5688872 1630728 5688896 1627824 5686272 1630544 5688856 -1627824 5686272 1627904 5686384 1630424 5688880 1630504 5688864 -1630424 5688880 1627904 5686384 1626464 5689664 1627944 5690696 -1627824 5686272 1626464 5689664 1627904 5686384 1630504 5688864 -1627904 5686384 1626464 5689664 1630424 5688880 1630504 5688864 -1626464 5689664 1627904 5686384 1627824 5686272 1626096 5687664 -1627824 5686272 1626096 5687632 1626096 5687664 1627904 5686384 -1627904 5686384 1630504 5688864 1627824 5686272 1626096 5687632 -1627824 5686272 1627672 5686200 1626096 5687632 1627904 5686384 -1627672 5686200 1626048 5687512 1626096 5687632 1627904 5686384 -1626096 5687632 1626096 5687664 1627904 5686384 1626048 5687512 -1627824 5686272 1627672 5686200 1627904 5686384 1630504 5688864 -1627672 5686200 1626048 5687512 1627904 5686384 1627824 5686272 -1626464 5689664 1630424 5688880 1627904 5686384 1626096 5687664 -1626096 5687664 1626464 5689664 1627904 5686384 1626096 5687632 -1627824 5686272 1627904 5686384 1630504 5688864 1630544 5688856 -1627904 5686384 1630424 5688880 1630504 5688864 1630544 5688856 -1627824 5686272 1627904 5686384 1630544 5688856 1630632 5688872 -1627824 5686272 1627672 5686200 1627904 5686384 1630632 5688872 -1627904 5686384 1630504 5688864 1630544 5688856 1630632 5688872 -1626464 5689664 1627904 5686384 1626096 5687664 1626424 5689616 -1626096 5687664 1626352 5689536 1626424 5689616 1627904 5686384 -1626464 5689664 1630424 5688880 1627904 5686384 1626424 5689616 -1627904 5686384 1626096 5687632 1626096 5687664 1626424 5689616 -1626048 5687512 1626064 5687560 1626096 5687632 1627904 5686384 -1627824 5686272 1627904 5686384 1630632 5688872 1630728 5688896 -1627824 5686272 1627904 5686384 1630728 5688896 1630816 5688920 -1627904 5686384 1630544 5688856 1630632 5688872 1630728 5688896 -1627824 5686272 1627904 5686384 1630816 5688920 1630904 5688944 -1627904 5686384 1630728 5688896 1630816 5688920 1630904 5688944 -1627824 5686272 1627672 5686200 1627904 5686384 1630904 5688944 -1627824 5686272 1627904 5686384 1630904 5688944 1628096 5680872 -1627824 5686272 1627904 5686384 1628096 5680872 1628016 5680960 -1627904 5686384 1630816 5688920 1630904 5688944 1628096 5680872 -1630904 5688944 1631080 5689008 1628096 5680872 1627904 5686384 -1627824 5686272 1627672 5686200 1627904 5686384 1628096 5680872 -1627904 5686384 1630632 5688872 1630728 5688896 1630816 5688920 -1627672 5686200 1626016 5687448 1626048 5687512 1627904 5686384 -1627904 5686384 1628088 5686560 1630504 5688864 1630544 5688856 -1630424 5688880 1628088 5686560 1627904 5686384 1626464 5689664 -1630424 5688880 1628088 5686560 1626464 5689664 1627944 5690696 -1626464 5689664 1627856 5690720 1627944 5690696 1628088 5686560 -1630424 5688880 1628088 5686560 1627944 5690696 1628024 5690712 -1628088 5686560 1627904 5686384 1626464 5689664 1627944 5690696 -1627904 5686384 1626464 5689664 1628088 5686560 1630544 5688856 -1630424 5688880 1630504 5688864 1628088 5686560 1627944 5690696 -1627904 5686384 1626424 5689616 1626464 5689664 1628088 5686560 -1626464 5689664 1627944 5690696 1628088 5686560 1626424 5689616 -1627904 5686384 1626424 5689616 1628088 5686560 1630544 5688856 -1628088 5686560 1630424 5688880 1630504 5688864 1630544 5688856 -1627904 5686384 1628088 5686560 1630544 5688856 1630632 5688872 -1628088 5686560 1630504 5688864 1630544 5688856 1630632 5688872 -1627904 5686384 1628088 5686560 1630632 5688872 1630728 5688896 -1627904 5686384 1626424 5689616 1628088 5686560 1630728 5688896 -1628088 5686560 1630544 5688856 1630632 5688872 1630728 5688896 -1627904 5686384 1626096 5687664 1626424 5689616 1628088 5686560 -1626096 5687664 1626352 5689536 1626424 5689616 1628088 5686560 -1627904 5686384 1626096 5687664 1628088 5686560 1630728 5688896 -1626424 5689616 1626464 5689664 1628088 5686560 1626096 5687664 -1627904 5686384 1626096 5687632 1626096 5687664 1628088 5686560 -1627904 5686384 1626048 5687512 1626096 5687632 1628088 5686560 -1627904 5686384 1626096 5687632 1628088 5686560 1630728 5688896 -1626096 5687664 1626424 5689616 1628088 5686560 1626096 5687632 -1627904 5686384 1628088 5686560 1630728 5688896 1630816 5688920 -1627904 5686384 1628088 5686560 1630816 5688920 1630904 5688944 -1628088 5686560 1630632 5688872 1630728 5688896 1630816 5688920 -1627904 5686384 1628088 5686560 1630904 5688944 1628096 5680872 -1628088 5686560 1630816 5688920 1630904 5688944 1628096 5680872 -1630904 5688944 1631080 5689008 1628096 5680872 1628088 5686560 -1630904 5688944 1631080 5689008 1628088 5686560 1630816 5688920 -1628096 5680872 1627904 5686384 1628088 5686560 1631080 5689008 -1631080 5689008 1628112 5680824 1628096 5680872 1628088 5686560 -1630904 5688944 1630992 5688984 1631080 5689008 1628088 5686560 -1627904 5686384 1628088 5686560 1628096 5680872 1627824 5686272 -1628096 5680872 1628016 5680960 1627824 5686272 1628088 5686560 -1628088 5686560 1631080 5689008 1628096 5680872 1628016 5680960 -1627824 5686272 1627904 5686384 1628088 5686560 1628016 5680960 -1627904 5686384 1626096 5687632 1628088 5686560 1627824 5686272 -1628016 5680960 1627280 5685920 1627824 5686272 1628088 5686560 -1628088 5686560 1630728 5688896 1630816 5688920 1630904 5688944 -1628088 5686560 1628312 5686720 1628096 5680872 1628016 5680960 -1628088 5686560 1628312 5686720 1628016 5680960 1627824 5686272 -1628312 5686720 1628096 5680872 1628016 5680960 1627824 5686272 -1631080 5689008 1628312 5686720 1628088 5686560 1630904 5688944 -1628088 5686560 1630816 5688920 1630904 5688944 1628312 5686720 -1630904 5688944 1631080 5689008 1628312 5686720 1630816 5688920 -1628096 5680872 1628312 5686720 1631080 5689008 1628112 5680824 -1631080 5689008 1628312 5686720 1630904 5688944 1630992 5688984 -1628312 5686720 1631080 5689008 1628096 5680872 1628016 5680960 -1628088 5686560 1628312 5686720 1627824 5686272 1627904 5686384 -1628088 5686560 1630816 5688920 1628312 5686720 1627824 5686272 -1631080 5689008 1628096 5680872 1628312 5686720 1630904 5688944 -1628016 5680960 1627280 5685920 1627824 5686272 1628312 5686720 -1628088 5686560 1630728 5688896 1630816 5688920 1628312 5686720 -1630816 5688920 1630904 5688944 1628312 5686720 1630728 5688896 -1628088 5686560 1630632 5688872 1630728 5688896 1628312 5686720 -1628088 5686560 1630632 5688872 1628312 5686720 1627824 5686272 -1628088 5686560 1630544 5688856 1630632 5688872 1628312 5686720 -1628088 5686560 1630504 5688864 1630544 5688856 1628312 5686720 -1630632 5688872 1630728 5688896 1628312 5686720 1630544 5688856 -1628088 5686560 1630504 5688864 1628312 5686720 1627824 5686272 -1628088 5686560 1630424 5688880 1630504 5688864 1628312 5686720 -1630504 5688864 1630544 5688856 1628312 5686720 1630424 5688880 -1628088 5686560 1627944 5690696 1630424 5688880 1628312 5686720 -1627944 5690696 1628024 5690712 1630424 5688880 1628312 5686720 -1628088 5686560 1626464 5689664 1627944 5690696 1628312 5686720 -1626464 5689664 1627856 5690720 1627944 5690696 1628312 5686720 -1628024 5690712 1630424 5688928 1630424 5688880 1628312 5686720 -1630424 5688880 1630504 5688864 1628312 5686720 1628024 5690712 -1628088 5686560 1626424 5689616 1626464 5689664 1628312 5686720 -1626464 5689664 1627944 5690696 1628312 5686720 1626424 5689616 -1627944 5690696 1628024 5690712 1628312 5686720 1626464 5689664 -1628088 5686560 1626424 5689616 1628312 5686720 1627824 5686272 -1628088 5686560 1626096 5687664 1626424 5689616 1628312 5686720 -1626096 5687664 1626352 5689536 1626424 5689616 1628312 5686720 -1626424 5689616 1626464 5689664 1628312 5686720 1626096 5687664 -1628088 5686560 1626096 5687664 1628312 5686720 1627824 5686272 -1630544 5688856 1630632 5688872 1628312 5686720 1630504 5688864 -1628088 5686560 1626096 5687632 1626096 5687664 1628312 5686720 -1630728 5688896 1630816 5688920 1628312 5686720 1630632 5688872 -1628096 5680872 1628464 5686776 1631080 5689008 1628112 5680824 -1628312 5686720 1628464 5686776 1628096 5680872 1628016 5680960 -1628464 5686776 1631080 5689008 1628096 5680872 1628016 5680960 -1628312 5686720 1628464 5686776 1628016 5680960 1627824 5686272 -1628312 5686720 1628464 5686776 1627824 5686272 1628088 5686560 -1628464 5686776 1628016 5680960 1627824 5686272 1628088 5686560 -1628464 5686776 1628096 5680872 1628016 5680960 1627824 5686272 -1627824 5686272 1627904 5686384 1628088 5686560 1628464 5686776 -1631080 5689008 1628464 5686776 1628312 5686720 1630904 5688944 -1628312 5686720 1630816 5688920 1630904 5688944 1628464 5686776 -1628312 5686720 1630728 5688896 1630816 5688920 1628464 5686776 -1630816 5688920 1630904 5688944 1628464 5686776 1630728 5688896 -1631080 5689008 1628464 5686776 1630904 5688944 1630992 5688984 -1630904 5688944 1631080 5689008 1628464 5686776 1630816 5688920 -1628312 5686720 1630728 5688896 1628464 5686776 1628088 5686560 -1628016 5680960 1627280 5685920 1627824 5686272 1628464 5686776 -1631080 5689008 1628096 5680872 1628464 5686776 1630904 5688944 -1628312 5686720 1630632 5688872 1630728 5688896 1628464 5686776 -1630728 5688896 1630816 5688920 1628464 5686776 1630632 5688872 -1628312 5686720 1630544 5688856 1630632 5688872 1628464 5686776 -1628312 5686720 1630544 5688856 1628464 5686776 1628088 5686560 -1628312 5686720 1630504 5688864 1630544 5688856 1628464 5686776 -1628312 5686720 1630424 5688880 1630504 5688864 1628464 5686776 -1630544 5688856 1630632 5688872 1628464 5686776 1630504 5688864 -1628312 5686720 1628024 5690712 1630424 5688880 1628464 5686776 -1630424 5688880 1630504 5688864 1628464 5686776 1628024 5690712 -1628312 5686720 1627944 5690696 1628024 5690712 1628464 5686776 -1628024 5690712 1630424 5688928 1630424 5688880 1628464 5686776 -1628024 5690712 1630424 5688880 1628464 5686776 1627944 5690696 -1628312 5686720 1626464 5689664 1627944 5690696 1628464 5686776 -1626464 5689664 1627856 5690720 1627944 5690696 1628464 5686776 -1627944 5690696 1628024 5690712 1628464 5686776 1626464 5689664 -1628312 5686720 1626424 5689616 1626464 5689664 1628464 5686776 -1628312 5686720 1626096 5687664 1626424 5689616 1628464 5686776 -1626464 5689664 1627944 5690696 1628464 5686776 1626424 5689616 -1628312 5686720 1626424 5689616 1628464 5686776 1628088 5686560 -1630504 5688864 1630544 5688856 1628464 5686776 1630424 5688880 -1630632 5688872 1630728 5688896 1628464 5686776 1630544 5688856 -1628464 5686776 1628992 5686936 1628096 5680872 1628016 5680960 -1628464 5686776 1631080 5689008 1628992 5686936 1628016 5680960 -1628096 5680872 1628992 5686936 1631080 5689008 1628112 5680824 -1631080 5689008 1628144 5680632 1628112 5680824 1628992 5686936 -1628464 5686776 1628992 5686936 1628016 5680960 1627824 5686272 -1628992 5686936 1628096 5680872 1628016 5680960 1627824 5686272 -1628464 5686776 1631080 5689008 1628992 5686936 1627824 5686272 -1628464 5686776 1628992 5686936 1627824 5686272 1628088 5686560 -1628016 5680960 1627280 5685920 1627824 5686272 1628992 5686936 -1628992 5686936 1628464 5686776 1631080 5689008 1628112 5680824 -1631080 5689008 1628992 5686936 1628464 5686776 1630904 5688944 -1628992 5686936 1627824 5686272 1628464 5686776 1630904 5688944 -1631080 5689008 1628992 5686936 1630904 5688944 1630992 5688984 -1628464 5686776 1630816 5688920 1630904 5688944 1628992 5686936 -1628464 5686776 1630816 5688920 1628992 5686936 1627824 5686272 -1628464 5686776 1630728 5688896 1630816 5688920 1628992 5686936 -1628464 5686776 1630632 5688872 1630728 5688896 1628992 5686936 -1628464 5686776 1630632 5688872 1628992 5686936 1627824 5686272 -1630728 5688896 1630816 5688920 1628992 5686936 1630632 5688872 -1630816 5688920 1630904 5688944 1628992 5686936 1630728 5688896 -1631080 5689008 1628112 5680824 1628992 5686936 1630904 5688944 -1630904 5688944 1631080 5689008 1628992 5686936 1630816 5688920 -1628992 5686936 1628112 5680824 1628096 5680872 1628016 5680960 -1628464 5686776 1630544 5688856 1630632 5688872 1628992 5686936 -1630632 5688872 1630728 5688896 1628992 5686936 1630544 5688856 -1628464 5686776 1630544 5688856 1628992 5686936 1627824 5686272 -1628464 5686776 1630504 5688864 1630544 5688856 1628992 5686936 -1628464 5686776 1630504 5688864 1628992 5686936 1627824 5686272 -1628464 5686776 1630424 5688880 1630504 5688864 1628992 5686936 -1628464 5686776 1628024 5690712 1630424 5688880 1628992 5686936 -1628464 5686776 1628024 5690712 1628992 5686936 1627824 5686272 -1630504 5688864 1630544 5688856 1628992 5686936 1630424 5688880 -1628024 5690712 1630424 5688928 1630424 5688880 1628992 5686936 -1628464 5686776 1627944 5690696 1628024 5690712 1628992 5686936 -1628024 5690712 1630424 5688880 1628992 5686936 1627944 5690696 -1628464 5686776 1627944 5690696 1628992 5686936 1627824 5686272 -1628464 5686776 1626464 5689664 1627944 5690696 1628992 5686936 -1628464 5686776 1626464 5689664 1628992 5686936 1627824 5686272 -1626464 5689664 1627856 5690720 1627944 5690696 1628992 5686936 -1627944 5690696 1628024 5690712 1628992 5686936 1626464 5689664 -1628464 5686776 1626424 5689616 1626464 5689664 1628992 5686936 -1630424 5688880 1630504 5688864 1628992 5686936 1628024 5690712 -1630544 5688856 1630632 5688872 1628992 5686936 1630504 5688864 -1628992 5686936 1629064 5686992 1628112 5680824 1628096 5680872 -1628112 5680824 1629064 5686992 1631080 5689008 1628144 5680632 -1628992 5686936 1631080 5689008 1629064 5686992 1628096 5680872 -1631080 5689008 1629064 5686992 1628992 5686936 1630904 5688944 -1631080 5689008 1629064 5686992 1630904 5688944 1630992 5688984 -1629064 5686992 1628096 5680872 1628992 5686936 1630904 5688944 -1628992 5686936 1630816 5688920 1630904 5688944 1629064 5686992 -1628992 5686936 1630728 5688896 1630816 5688920 1629064 5686992 -1628992 5686936 1630632 5688872 1630728 5688896 1629064 5686992 -1628992 5686936 1630544 5688856 1630632 5688872 1629064 5686992 -1630632 5688872 1630728 5688896 1629064 5686992 1630544 5688856 -1630728 5688896 1630816 5688920 1629064 5686992 1630632 5688872 -1628992 5686936 1630544 5688856 1629064 5686992 1628096 5680872 -1630904 5688944 1631080 5689008 1629064 5686992 1630816 5688920 -1630816 5688920 1630904 5688944 1629064 5686992 1630728 5688896 -1628992 5686936 1629064 5686992 1628096 5680872 1628016 5680960 -1629064 5686992 1631080 5689008 1628112 5680824 1628096 5680872 -1631080 5689008 1628112 5680824 1629064 5686992 1630904 5688944 -1628992 5686936 1630504 5688864 1630544 5688856 1629064 5686992 -1630544 5688856 1630632 5688872 1629064 5686992 1630504 5688864 -1628992 5686936 1630424 5688880 1630504 5688864 1629064 5686992 -1628992 5686936 1628024 5690712 1630424 5688880 1629064 5686992 -1628992 5686936 1627944 5690696 1628024 5690712 1629064 5686992 -1630424 5688880 1630504 5688864 1629064 5686992 1628024 5690712 -1628024 5690712 1630424 5688928 1630424 5688880 1629064 5686992 -1628992 5686936 1626464 5689664 1627944 5690696 1629064 5686992 -1627944 5690696 1628024 5690712 1629064 5686992 1626464 5689664 -1626464 5689664 1627856 5690720 1627944 5690696 1629064 5686992 -1628992 5686936 1628464 5686776 1626464 5689664 1629064 5686992 -1626464 5689664 1627944 5690696 1629064 5686992 1628464 5686776 -1628464 5686776 1626424 5689616 1626464 5689664 1629064 5686992 -1628024 5690712 1630424 5688880 1629064 5686992 1627944 5690696 -1628992 5686936 1628464 5686776 1629064 5686992 1628096 5680872 -1630504 5688864 1630544 5688856 1629064 5686992 1630424 5688880 -1628112 5680824 1629096 5687008 1631080 5689008 1628144 5680632 -1629064 5686992 1629096 5687008 1628112 5680824 1628096 5680872 -1629096 5687008 1631080 5689008 1628112 5680824 1628096 5680872 -1629064 5686992 1629096 5687008 1628096 5680872 1628992 5686936 -1628096 5680872 1628016 5680960 1628992 5686936 1629096 5687008 -1629096 5687008 1628112 5680824 1628096 5680872 1628992 5686936 -1631080 5689008 1629096 5687008 1629064 5686992 1630904 5688944 -1631080 5689008 1629096 5687008 1630904 5688944 1630992 5688984 -1631080 5689008 1628112 5680824 1629096 5687008 1630904 5688944 -1629064 5686992 1630816 5688920 1630904 5688944 1629096 5687008 -1629064 5686992 1630728 5688896 1630816 5688920 1629096 5687008 -1629064 5686992 1630632 5688872 1630728 5688896 1629096 5687008 -1629064 5686992 1630544 5688856 1630632 5688872 1629096 5687008 -1629064 5686992 1630504 5688864 1630544 5688856 1629096 5687008 -1630544 5688856 1630632 5688872 1629096 5687008 1630504 5688864 -1630632 5688872 1630728 5688896 1629096 5687008 1630544 5688856 -1630816 5688920 1630904 5688944 1629096 5687008 1630728 5688896 -1630728 5688896 1630816 5688920 1629096 5687008 1630632 5688872 -1630904 5688944 1631080 5689008 1629096 5687008 1630816 5688920 -1629064 5686992 1630504 5688864 1629096 5687008 1628992 5686936 -1629064 5686992 1630424 5688880 1630504 5688864 1629096 5687008 -1630504 5688864 1630544 5688856 1629096 5687008 1630424 5688880 -1629064 5686992 1628024 5690712 1630424 5688880 1629096 5687008 -1628024 5690712 1630424 5688928 1630424 5688880 1629096 5687008 -1629064 5686992 1627944 5690696 1628024 5690712 1629096 5687008 -1629064 5686992 1626464 5689664 1627944 5690696 1629096 5687008 -1628024 5690712 1630424 5688880 1629096 5687008 1627944 5690696 -1629064 5686992 1627944 5690696 1629096 5687008 1628992 5686936 -1630424 5688880 1630504 5688864 1629096 5687008 1628024 5690712 -1629064 5686992 1629000 5687064 1627944 5690696 1629096 5687008 -1627944 5690696 1629000 5687064 1626464 5689664 1627856 5690720 -1626464 5689664 1629000 5687064 1629064 5686992 1628464 5686776 -1629064 5686992 1628992 5686936 1628464 5686776 1629000 5687064 -1628464 5686776 1626464 5689664 1629000 5687064 1628992 5686936 -1629000 5687064 1626464 5689664 1627944 5690696 1629096 5687008 -1629064 5686992 1628992 5686936 1629000 5687064 1629096 5687008 -1626464 5689664 1629000 5687064 1628464 5686776 1626424 5689616 -1626464 5689664 1627944 5690696 1629000 5687064 1628464 5686776 -1627944 5690696 1628024 5690712 1629096 5687008 1629000 5687064 -1629096 5687008 1629064 5686992 1629000 5687064 1628024 5690712 -1628024 5690712 1630424 5688880 1629096 5687008 1629000 5687064 -1629096 5687008 1629064 5686992 1629000 5687064 1630424 5688880 -1628024 5690712 1630424 5688928 1630424 5688880 1629000 5687064 -1627944 5690696 1628024 5690712 1629000 5687064 1626464 5689664 -1628024 5690712 1630424 5688880 1629000 5687064 1627944 5690696 -1630424 5688880 1630504 5688864 1629096 5687008 1629000 5687064 -1628464 5686776 1628968 5687080 1629000 5687064 1628992 5686936 -1629000 5687064 1629064 5686992 1628992 5686936 1628968 5687080 -1628464 5686776 1626464 5689664 1628968 5687080 1628992 5686936 -1628968 5687080 1626464 5689664 1629000 5687064 1628992 5686936 -1626464 5689664 1628968 5687080 1628464 5686776 1626424 5689616 -1628464 5686776 1628312 5686720 1626424 5689616 1628968 5687080 -1626464 5689664 1629000 5687064 1628968 5687080 1626424 5689616 -1628968 5687080 1628992 5686936 1628464 5686776 1626424 5689616 -1629000 5687064 1628968 5687080 1626464 5689664 1627944 5690696 -1626464 5689664 1627856 5690720 1627944 5690696 1628968 5687080 -1628968 5687080 1626424 5689616 1626464 5689664 1627944 5690696 -1629000 5687064 1628968 5687080 1627944 5690696 1628024 5690712 -1628968 5687080 1626464 5689664 1627944 5690696 1628024 5690712 -1629000 5687064 1628992 5686936 1628968 5687080 1628024 5690712 -1629000 5687064 1628968 5687080 1628024 5690712 1630424 5688880 -1629000 5687064 1628968 5687080 1630424 5688880 1629096 5687008 -1628024 5690712 1630424 5688928 1630424 5688880 1628968 5687080 -1628968 5687080 1627944 5690696 1628024 5690712 1630424 5688928 -1629000 5687064 1628992 5686936 1628968 5687080 1630424 5688880 -1630424 5688880 1629000 5687064 1628968 5687080 1630424 5688928 -1628024 5690712 1628112 5690744 1630424 5688928 1628968 5687080 -1626424 5689616 1628936 5687072 1628464 5686776 1628312 5686720 -1628936 5687072 1628968 5687080 1628464 5686776 1628312 5686720 -1626424 5689616 1628936 5687072 1628312 5686720 1626096 5687664 -1626424 5689616 1628968 5687080 1628936 5687072 1628312 5686720 -1628464 5686776 1628936 5687072 1628968 5687080 1628992 5686936 -1628936 5687072 1626424 5689616 1628968 5687080 1628992 5686936 -1628464 5686776 1628312 5686720 1628936 5687072 1628992 5686936 -1628968 5687080 1629000 5687064 1628992 5686936 1628936 5687072 -1628968 5687080 1629000 5687064 1628936 5687072 1626424 5689616 -1628992 5686936 1628464 5686776 1628936 5687072 1629000 5687064 -1629000 5687064 1629064 5686992 1628992 5686936 1628936 5687072 -1628968 5687080 1628936 5687072 1626424 5689616 1626464 5689664 -1628968 5687080 1629000 5687064 1628936 5687072 1626464 5689664 -1628968 5687080 1628936 5687072 1626464 5689664 1627944 5690696 -1628968 5687080 1629000 5687064 1628936 5687072 1627944 5690696 -1626464 5689664 1627856 5690720 1627944 5690696 1628936 5687072 -1628936 5687072 1628312 5686720 1626424 5689616 1626464 5689664 -1628968 5687080 1628936 5687072 1627944 5690696 1628024 5690712 -1628968 5687080 1629000 5687064 1628936 5687072 1628024 5690712 -1628936 5687072 1626464 5689664 1627944 5690696 1628024 5690712 -1628968 5687080 1628936 5687072 1628024 5690712 1630424 5688928 -1628936 5687072 1626424 5689616 1626464 5689664 1627944 5690696 -1628312 5686720 1628744 5687024 1628936 5687072 1628464 5686776 -1628936 5687072 1628992 5686936 1628464 5686776 1628744 5687024 -1628936 5687072 1629000 5687064 1628992 5686936 1628744 5687024 -1628464 5686776 1628312 5686720 1628744 5687024 1628992 5686936 -1628312 5686720 1626424 5689616 1628744 5687024 1628464 5686776 -1626424 5689616 1628744 5687024 1628312 5686720 1626096 5687664 -1626424 5689616 1628744 5687024 1626096 5687664 1626352 5689536 -1628744 5687024 1628464 5686776 1628312 5686720 1626096 5687664 -1626424 5689616 1628936 5687072 1628744 5687024 1626352 5689536 -1628744 5687024 1628312 5686720 1626096 5687664 1626352 5689536 -1628936 5687072 1628744 5687024 1626424 5689616 1626464 5689664 -1628744 5687024 1626352 5689536 1626424 5689616 1626464 5689664 -1628936 5687072 1628744 5687024 1626464 5689664 1627944 5690696 -1626464 5689664 1627856 5690720 1627944 5690696 1628744 5687024 -1628936 5687072 1628744 5687024 1627944 5690696 1628024 5690712 -1628744 5687024 1626424 5689616 1626464 5689664 1627944 5690696 -1628936 5687072 1628744 5687024 1628024 5690712 1628968 5687080 -1628744 5687024 1626464 5689664 1627944 5690696 1628024 5690712 -1628744 5687024 1628024 5690712 1628936 5687072 1628992 5686936 -1628312 5686720 1628088 5686560 1626096 5687664 1628744 5687024 -1626096 5687664 1626064 5687736 1626352 5689536 1628744 5687024 -1628312 5686720 1628632 5687032 1628744 5687024 1628464 5686776 -1628744 5687024 1628992 5686936 1628464 5686776 1628632 5687032 -1628312 5686720 1626096 5687664 1628632 5687032 1628464 5686776 -1628632 5687032 1626096 5687664 1628744 5687024 1628464 5686776 -1628744 5687024 1628632 5687032 1626096 5687664 1626352 5689536 -1628744 5687024 1628632 5687032 1626352 5689536 1626424 5689616 -1628744 5687024 1628464 5686776 1628632 5687032 1626424 5689616 -1628744 5687024 1628632 5687032 1626424 5689616 1626464 5689664 -1628632 5687032 1626352 5689536 1626424 5689616 1626464 5689664 -1628744 5687024 1628464 5686776 1628632 5687032 1626464 5689664 -1628632 5687032 1626096 5687664 1626352 5689536 1626424 5689616 -1628632 5687032 1628312 5686720 1626096 5687664 1626352 5689536 -1628744 5687024 1628632 5687032 1626464 5689664 1627944 5690696 -1626464 5689664 1627856 5690720 1627944 5690696 1628632 5687032 -1628744 5687024 1628464 5686776 1628632 5687032 1627944 5690696 -1628632 5687032 1626424 5689616 1626464 5689664 1627944 5690696 -1628744 5687024 1628632 5687032 1627944 5690696 1628024 5690712 -1628744 5687024 1628632 5687032 1628024 5690712 1628936 5687072 -1628744 5687024 1628464 5686776 1628632 5687032 1628936 5687072 -1628632 5687032 1626464 5689664 1627944 5690696 1628024 5690712 -1628024 5690712 1628968 5687080 1628936 5687072 1628632 5687032 -1628936 5687072 1628744 5687024 1628632 5687032 1628968 5687080 -1628024 5690712 1630424 5688928 1628968 5687080 1628632 5687032 -1628632 5687032 1627944 5690696 1628024 5690712 1628968 5687080 -1626096 5687664 1628632 5687032 1628312 5686720 1628088 5686560 -1626096 5687664 1626064 5687736 1626352 5689536 1628632 5687032 -1626352 5689536 1626424 5689616 1628632 5687032 1626064 5687736 -1626096 5687664 1626064 5687736 1628632 5687032 1628312 5686720 -1626064 5687736 1626264 5689472 1626352 5689536 1628632 5687032 -1628632 5687032 1628648 5687064 1628968 5687080 1628936 5687072 -1628632 5687032 1628648 5687064 1628936 5687072 1628744 5687024 -1628632 5687032 1628024 5690712 1628648 5687064 1628744 5687024 -1628648 5687064 1628968 5687080 1628936 5687072 1628744 5687024 -1628968 5687080 1628648 5687064 1628024 5690712 1630424 5688928 -1628968 5687080 1628648 5687064 1630424 5688928 1630424 5688880 -1628648 5687064 1628632 5687032 1628024 5690712 1630424 5688928 -1628648 5687064 1628024 5690712 1630424 5688928 1630424 5688880 -1628024 5690712 1628648 5687064 1628632 5687032 1627944 5690696 -1628024 5690712 1630424 5688928 1628648 5687064 1627944 5690696 -1628648 5687064 1628744 5687024 1628632 5687032 1627944 5690696 -1628632 5687032 1626464 5689664 1627944 5690696 1628648 5687064 -1626464 5689664 1627856 5690720 1627944 5690696 1628648 5687064 -1628632 5687032 1626464 5689664 1628648 5687064 1628744 5687024 -1628632 5687032 1626424 5689616 1626464 5689664 1628648 5687064 -1628632 5687032 1626352 5689536 1626424 5689616 1628648 5687064 -1628632 5687032 1626352 5689536 1628648 5687064 1628744 5687024 -1626424 5689616 1626464 5689664 1628648 5687064 1626352 5689536 -1628632 5687032 1626064 5687736 1626352 5689536 1628648 5687064 -1626352 5689536 1626424 5689616 1628648 5687064 1626064 5687736 -1628632 5687032 1626064 5687736 1628648 5687064 1628744 5687024 -1626464 5689664 1627944 5690696 1628648 5687064 1626424 5689616 -1627944 5690696 1628024 5690712 1628648 5687064 1626464 5689664 -1626064 5687736 1626264 5689472 1626352 5689536 1628648 5687064 -1628632 5687032 1626096 5687664 1626064 5687736 1628648 5687064 -1628632 5687032 1626096 5687664 1628648 5687064 1628744 5687024 -1626064 5687736 1626352 5689536 1628648 5687064 1626096 5687664 -1628632 5687032 1628312 5686720 1626096 5687664 1628648 5687064 -1628632 5687032 1628312 5686720 1628648 5687064 1628744 5687024 -1628632 5687032 1628464 5686776 1628312 5686720 1628648 5687064 -1628312 5686720 1628088 5686560 1626096 5687664 1628648 5687064 -1626096 5687664 1626064 5687736 1628648 5687064 1628312 5686720 -1628968 5687080 1628648 5687064 1630424 5688880 1629000 5687064 -1628648 5687064 1630424 5688880 1628968 5687080 1628936 5687072 -1628024 5690712 1628112 5690744 1630424 5688928 1628648 5687064 -1628024 5690712 1628680 5687152 1628648 5687064 1627944 5690696 -1628024 5690712 1630424 5688928 1628680 5687152 1627944 5690696 -1628680 5687152 1630424 5688928 1628648 5687064 1627944 5690696 -1628648 5687064 1628680 5687152 1630424 5688928 1630424 5688880 -1628680 5687152 1628024 5690712 1630424 5688928 1630424 5688880 -1628648 5687064 1628680 5687152 1630424 5688880 1628968 5687080 -1628648 5687064 1627944 5690696 1628680 5687152 1628968 5687080 -1628680 5687152 1630424 5688928 1630424 5688880 1628968 5687080 -1628648 5687064 1626464 5689664 1627944 5690696 1628680 5687152 -1627944 5690696 1628024 5690712 1628680 5687152 1626464 5689664 -1626464 5689664 1627856 5690720 1627944 5690696 1628680 5687152 -1628648 5687064 1626464 5689664 1628680 5687152 1628968 5687080 -1628648 5687064 1626424 5689616 1626464 5689664 1628680 5687152 -1628648 5687064 1626424 5689616 1628680 5687152 1628968 5687080 -1628648 5687064 1626352 5689536 1626424 5689616 1628680 5687152 -1628648 5687064 1626064 5687736 1626352 5689536 1628680 5687152 -1628648 5687064 1626064 5687736 1628680 5687152 1628968 5687080 -1626352 5689536 1626424 5689616 1628680 5687152 1626064 5687736 -1628648 5687064 1626096 5687664 1626064 5687736 1628680 5687152 -1626064 5687736 1626352 5689536 1628680 5687152 1626096 5687664 -1628648 5687064 1626096 5687664 1628680 5687152 1628968 5687080 -1626424 5689616 1626464 5689664 1628680 5687152 1626352 5689536 -1626464 5689664 1627944 5690696 1628680 5687152 1626424 5689616 -1626064 5687736 1626264 5689472 1626352 5689536 1628680 5687152 -1628648 5687064 1628312 5686720 1626096 5687664 1628680 5687152 -1628648 5687064 1628312 5686720 1628680 5687152 1628968 5687080 -1626096 5687664 1626064 5687736 1628680 5687152 1628312 5686720 -1628648 5687064 1628632 5687032 1628312 5686720 1628680 5687152 -1628648 5687064 1628632 5687032 1628680 5687152 1628968 5687080 -1628632 5687032 1628464 5686776 1628312 5686720 1628680 5687152 -1628312 5686720 1628088 5686560 1626096 5687664 1628680 5687152 -1628312 5686720 1626096 5687664 1628680 5687152 1628632 5687032 -1630424 5688880 1629000 5687064 1628968 5687080 1628680 5687152 -1628648 5687064 1628680 5687152 1628968 5687080 1628936 5687072 -1628680 5687152 1630424 5688880 1628968 5687080 1628936 5687072 -1628648 5687064 1628632 5687032 1628680 5687152 1628936 5687072 -1628648 5687064 1628680 5687152 1628936 5687072 1628744 5687024 -1628648 5687064 1628680 5687152 1628744 5687024 1628632 5687032 -1628648 5687064 1628632 5687032 1628680 5687152 1628744 5687024 -1628680 5687152 1628968 5687080 1628936 5687072 1628744 5687024 -1630424 5688928 1628680 5687152 1628024 5690712 1628112 5690744 -1630424 5688928 1628704 5687176 1628680 5687152 1628024 5690712 -1628680 5687152 1627944 5690696 1628024 5690712 1628704 5687176 -1628680 5687152 1626464 5689664 1627944 5690696 1628704 5687176 -1628024 5690712 1630424 5688928 1628704 5687176 1627944 5690696 -1628704 5687176 1630424 5688880 1628680 5687152 1626464 5689664 -1626464 5689664 1627856 5690720 1627944 5690696 1628704 5687176 -1628680 5687152 1628704 5687176 1630424 5688880 1628968 5687080 -1628680 5687152 1626464 5689664 1628704 5687176 1628968 5687080 -1628704 5687176 1630424 5688928 1630424 5688880 1628968 5687080 -1628680 5687152 1628704 5687176 1628968 5687080 1628936 5687072 -1628680 5687152 1626464 5689664 1628704 5687176 1628936 5687072 -1628704 5687176 1630424 5688880 1628968 5687080 1628936 5687072 -1627944 5690696 1628024 5690712 1628704 5687176 1626464 5689664 -1630424 5688928 1630424 5688880 1628704 5687176 1628024 5690712 -1628680 5687152 1626424 5689616 1626464 5689664 1628704 5687176 -1626464 5689664 1627944 5690696 1628704 5687176 1626424 5689616 -1628680 5687152 1626424 5689616 1628704 5687176 1628936 5687072 -1628680 5687152 1626352 5689536 1626424 5689616 1628704 5687176 -1628680 5687152 1626352 5689536 1628704 5687176 1628936 5687072 -1628680 5687152 1626064 5687736 1626352 5689536 1628704 5687176 -1628680 5687152 1626096 5687664 1626064 5687736 1628704 5687176 -1628680 5687152 1626096 5687664 1628704 5687176 1628936 5687072 -1626064 5687736 1626352 5689536 1628704 5687176 1626096 5687664 -1628680 5687152 1628312 5686720 1626096 5687664 1628704 5687176 -1626352 5689536 1626424 5689616 1628704 5687176 1626064 5687736 -1626424 5689616 1626464 5689664 1628704 5687176 1626352 5689536 -1626064 5687736 1626264 5689472 1626352 5689536 1628704 5687176 -1630424 5688880 1629000 5687064 1628968 5687080 1628704 5687176 -1628680 5687152 1628704 5687176 1628936 5687072 1628744 5687024 -1628680 5687152 1626096 5687664 1628704 5687176 1628744 5687024 -1628704 5687176 1628968 5687080 1628936 5687072 1628744 5687024 -1628680 5687152 1628704 5687176 1628744 5687024 1628648 5687064 -1630424 5688928 1628704 5687176 1628024 5690712 1628112 5690744 -1628024 5690712 1628712 5687304 1628704 5687176 1627944 5690696 -1628024 5690712 1630424 5688928 1628712 5687304 1627944 5690696 -1628712 5687304 1630424 5688928 1628704 5687176 1627944 5690696 -1628704 5687176 1626464 5689664 1627944 5690696 1628712 5687304 -1628704 5687176 1626424 5689616 1626464 5689664 1628712 5687304 -1627944 5690696 1628024 5690712 1628712 5687304 1626464 5689664 -1628704 5687176 1626424 5689616 1628712 5687304 1630424 5688928 -1626464 5689664 1627856 5690720 1627944 5690696 1628712 5687304 -1626464 5689664 1627944 5690696 1628712 5687304 1626424 5689616 -1628704 5687176 1628712 5687304 1630424 5688928 1630424 5688880 -1628704 5687176 1628712 5687304 1630424 5688880 1628968 5687080 -1628712 5687304 1630424 5688928 1630424 5688880 1628968 5687080 -1628704 5687176 1626424 5689616 1628712 5687304 1628968 5687080 -1628712 5687304 1628024 5690712 1630424 5688928 1630424 5688880 -1628704 5687176 1628712 5687304 1628968 5687080 1628936 5687072 -1628712 5687304 1630424 5688880 1628968 5687080 1628936 5687072 -1628704 5687176 1626424 5689616 1628712 5687304 1628936 5687072 -1628704 5687176 1628712 5687304 1628936 5687072 1628744 5687024 -1628704 5687176 1626352 5689536 1626424 5689616 1628712 5687304 -1626424 5689616 1626464 5689664 1628712 5687304 1626352 5689536 -1628704 5687176 1626352 5689536 1628712 5687304 1628936 5687072 -1628704 5687176 1626064 5687736 1626352 5689536 1628712 5687304 -1628704 5687176 1626064 5687736 1628712 5687304 1628936 5687072 -1628704 5687176 1626096 5687664 1626064 5687736 1628712 5687304 -1628704 5687176 1628680 5687152 1626096 5687664 1628712 5687304 -1628704 5687176 1628680 5687152 1628712 5687304 1628936 5687072 -1626096 5687664 1626064 5687736 1628712 5687304 1628680 5687152 -1628680 5687152 1628312 5686720 1626096 5687664 1628712 5687304 -1628680 5687152 1628312 5686720 1628712 5687304 1628704 5687176 -1626096 5687664 1626064 5687736 1628712 5687304 1628312 5686720 -1626064 5687736 1626352 5689536 1628712 5687304 1626096 5687664 -1626352 5689536 1626424 5689616 1628712 5687304 1626064 5687736 -1628312 5686720 1628088 5686560 1626096 5687664 1628712 5687304 -1626064 5687736 1626264 5689472 1626352 5689536 1628712 5687304 -1628680 5687152 1628632 5687032 1628312 5686720 1628712 5687304 -1630424 5688880 1629000 5687064 1628968 5687080 1628712 5687304 -1630424 5688880 1629096 5687008 1629000 5687064 1628712 5687304 -1630424 5688880 1629000 5687064 1628712 5687304 1630424 5688928 -1628968 5687080 1628936 5687072 1628712 5687304 1629000 5687064 -1630424 5688928 1628712 5687304 1628024 5690712 1628112 5690744 -1626064 5687736 1628608 5687384 1628712 5687304 1626096 5687664 -1628712 5687304 1628312 5686720 1626096 5687664 1628608 5687384 -1628712 5687304 1628680 5687152 1628312 5686720 1628608 5687384 -1628712 5687304 1628704 5687176 1628680 5687152 1628608 5687384 -1628312 5686720 1626096 5687664 1628608 5687384 1628680 5687152 -1626096 5687664 1626064 5687736 1628608 5687384 1628312 5686720 -1626064 5687736 1626352 5689536 1628608 5687384 1626096 5687664 -1628712 5687304 1628608 5687384 1626352 5689536 1626424 5689616 -1628712 5687304 1628608 5687384 1626424 5689616 1626464 5689664 -1628712 5687304 1628608 5687384 1626464 5689664 1627944 5690696 -1628608 5687384 1626424 5689616 1626464 5689664 1627944 5690696 -1628712 5687304 1628608 5687384 1627944 5690696 1628024 5690712 -1628712 5687304 1628608 5687384 1628024 5690712 1630424 5688928 -1628608 5687384 1627944 5690696 1628024 5690712 1630424 5688928 -1628712 5687304 1628608 5687384 1630424 5688928 1630424 5688880 -1628712 5687304 1628608 5687384 1630424 5688880 1629000 5687064 -1626464 5689664 1627856 5690720 1627944 5690696 1628608 5687384 -1628608 5687384 1626464 5689664 1627944 5690696 1628024 5690712 -1628608 5687384 1628024 5690712 1630424 5688928 1630424 5688880 -1628608 5687384 1626352 5689536 1626424 5689616 1626464 5689664 -1628608 5687384 1630424 5688880 1628712 5687304 1628680 5687152 -1628608 5687384 1626064 5687736 1626352 5689536 1626424 5689616 -1628312 5686720 1628088 5686560 1626096 5687664 1628608 5687384 -1628312 5686720 1628088 5686560 1628608 5687384 1628680 5687152 -1626096 5687664 1626064 5687736 1628608 5687384 1628088 5686560 -1626352 5689536 1628608 5687384 1626064 5687736 1626264 5689472 -1628680 5687152 1628632 5687032 1628312 5686720 1628608 5687384 -1628632 5687032 1628464 5686776 1628312 5686720 1628608 5687384 -1628312 5686720 1628088 5686560 1628608 5687384 1628632 5687032 -1628680 5687152 1628632 5687032 1628608 5687384 1628712 5687304 -1628680 5687152 1628648 5687064 1628632 5687032 1628608 5687384 -1628680 5687152 1628648 5687064 1628608 5687384 1628712 5687304 -1628632 5687032 1628312 5686720 1628608 5687384 1628648 5687064 -1628088 5686560 1626096 5687632 1626096 5687664 1628608 5687384 -1626096 5687664 1626064 5687736 1628608 5687384 1626096 5687632 -1628088 5686560 1626096 5687632 1628608 5687384 1628312 5686720 -1628088 5686560 1627904 5686384 1626096 5687632 1628608 5687384 -1628024 5690712 1628112 5690744 1630424 5688928 1628608 5687384 -1628024 5690712 1628112 5690744 1628608 5687384 1627944 5690696 -1630424 5688928 1630424 5688880 1628608 5687384 1628112 5690744 -1628112 5690744 1628640 5690984 1630424 5688928 1628608 5687384 -1626064 5687736 1628528 5687408 1628608 5687384 1626096 5687664 -1626064 5687736 1626352 5689536 1628528 5687408 1626096 5687664 -1628528 5687408 1626352 5689536 1628608 5687384 1626096 5687664 -1628608 5687384 1626096 5687632 1626096 5687664 1628528 5687408 -1626096 5687664 1626064 5687736 1628528 5687408 1626096 5687632 -1628608 5687384 1626096 5687632 1628528 5687408 1626352 5689536 -1628608 5687384 1628528 5687408 1626352 5689536 1626424 5689616 -1628608 5687384 1626096 5687632 1628528 5687408 1626424 5689616 -1628528 5687408 1626064 5687736 1626352 5689536 1626424 5689616 -1628608 5687384 1628528 5687408 1626424 5689616 1626464 5689664 -1628608 5687384 1628528 5687408 1626464 5689664 1627944 5690696 -1628608 5687384 1626096 5687632 1628528 5687408 1627944 5690696 -1626464 5689664 1627856 5690720 1627944 5690696 1628528 5687408 -1628608 5687384 1628528 5687408 1627944 5690696 1628024 5690712 -1628528 5687408 1626464 5689664 1627944 5690696 1628024 5690712 -1628608 5687384 1628528 5687408 1628024 5690712 1628112 5690744 -1628608 5687384 1626096 5687632 1628528 5687408 1628112 5690744 -1628528 5687408 1627944 5690696 1628024 5690712 1628112 5690744 -1628528 5687408 1626424 5689616 1626464 5689664 1627944 5690696 -1628528 5687408 1626352 5689536 1626424 5689616 1626464 5689664 -1626352 5689536 1628528 5687408 1626064 5687736 1626264 5689472 -1628608 5687384 1628088 5686560 1626096 5687632 1628528 5687408 -1628608 5687384 1628088 5686560 1628528 5687408 1628112 5690744 -1626096 5687632 1626096 5687664 1628528 5687408 1628088 5686560 -1628608 5687384 1628312 5686720 1628088 5686560 1628528 5687408 -1628608 5687384 1628312 5686720 1628528 5687408 1628112 5690744 -1628608 5687384 1628632 5687032 1628312 5686720 1628528 5687408 -1628608 5687384 1628632 5687032 1628528 5687408 1628112 5690744 -1628632 5687032 1628464 5686776 1628312 5686720 1628528 5687408 -1628312 5686720 1628088 5686560 1628528 5687408 1628632 5687032 -1628088 5686560 1627904 5686384 1626096 5687632 1628528 5687408 -1628608 5687384 1628648 5687064 1628632 5687032 1628528 5687408 -1628608 5687384 1628648 5687064 1628528 5687408 1628112 5690744 -1628632 5687032 1628312 5686720 1628528 5687408 1628648 5687064 -1628608 5687384 1628680 5687152 1628648 5687064 1628528 5687408 -1628608 5687384 1628680 5687152 1628528 5687408 1628112 5690744 -1628608 5687384 1628712 5687304 1628680 5687152 1628528 5687408 -1628648 5687064 1628632 5687032 1628528 5687408 1628680 5687152 -1628088 5686560 1626096 5687632 1628528 5687408 1628312 5686720 -1628608 5687384 1628528 5687408 1628112 5690744 1630424 5688928 -1628528 5687408 1628024 5690712 1628112 5690744 1630424 5688928 -1628608 5687384 1628680 5687152 1628528 5687408 1630424 5688928 -1628608 5687384 1628528 5687408 1630424 5688928 1630424 5688880 -1628608 5687384 1628680 5687152 1628528 5687408 1630424 5688880 -1628608 5687384 1628528 5687408 1630424 5688880 1628712 5687304 -1628528 5687408 1628112 5690744 1630424 5688928 1630424 5688880 -1628112 5690744 1628640 5690984 1630424 5688928 1628528 5687408 -1628528 5687408 1628440 5687400 1626096 5687632 1626096 5687664 -1628528 5687408 1628440 5687400 1626096 5687664 1626064 5687736 -1628528 5687408 1628440 5687400 1626064 5687736 1626352 5689536 -1628440 5687400 1626096 5687664 1626064 5687736 1626352 5689536 -1628528 5687408 1628440 5687400 1626352 5689536 1626424 5689616 -1628440 5687400 1626096 5687632 1626096 5687664 1626064 5687736 -1628528 5687408 1628440 5687400 1626424 5689616 1626464 5689664 -1628440 5687400 1626352 5689536 1626424 5689616 1626464 5689664 -1628528 5687408 1628440 5687400 1626464 5689664 1627944 5690696 -1628528 5687408 1628440 5687400 1627944 5690696 1628024 5690712 -1626464 5689664 1627856 5690720 1627944 5690696 1628440 5687400 -1628528 5687408 1628440 5687400 1628024 5690712 1628112 5690744 -1628440 5687400 1626464 5689664 1627944 5690696 1628024 5690712 -1628440 5687400 1626424 5689616 1626464 5689664 1627944 5690696 -1628528 5687408 1628088 5686560 1628440 5687400 1628024 5690712 -1628440 5687400 1628088 5686560 1626096 5687632 1626096 5687664 -1628440 5687400 1626064 5687736 1626352 5689536 1626424 5689616 -1626096 5687632 1628440 5687400 1628088 5686560 1627904 5686384 -1626064 5687736 1626264 5689472 1626352 5689536 1628440 5687400 -1628088 5686560 1628440 5687400 1628528 5687408 1628312 5686720 -1628528 5687408 1628632 5687032 1628312 5686720 1628440 5687400 -1628632 5687032 1628464 5686776 1628312 5686720 1628440 5687400 -1628632 5687032 1628744 5687024 1628464 5686776 1628440 5687400 -1628528 5687408 1628648 5687064 1628632 5687032 1628440 5687400 -1628632 5687032 1628464 5686776 1628440 5687400 1628648 5687064 -1628440 5687400 1628024 5690712 1628528 5687408 1628648 5687064 -1628088 5686560 1626096 5687632 1628440 5687400 1628312 5686720 -1628528 5687408 1628680 5687152 1628648 5687064 1628440 5687400 -1628648 5687064 1628632 5687032 1628440 5687400 1628680 5687152 -1628528 5687408 1628608 5687384 1628680 5687152 1628440 5687400 -1628528 5687408 1628680 5687152 1628440 5687400 1628024 5690712 -1628312 5686720 1628088 5686560 1628440 5687400 1628464 5686776 -1628440 5687400 1628240 5687320 1626096 5687632 1626096 5687664 -1628440 5687400 1628088 5686560 1628240 5687320 1626096 5687664 -1628240 5687320 1628088 5686560 1626096 5687632 1626096 5687664 -1628440 5687400 1628240 5687320 1626096 5687664 1626064 5687736 -1628440 5687400 1628088 5686560 1628240 5687320 1626064 5687736 -1628440 5687400 1628240 5687320 1626064 5687736 1626352 5689536 -1628440 5687400 1628088 5686560 1628240 5687320 1626352 5689536 -1628240 5687320 1626096 5687664 1626064 5687736 1626352 5689536 -1628440 5687400 1628240 5687320 1626352 5689536 1626424 5689616 -1628440 5687400 1628088 5686560 1628240 5687320 1626424 5689616 -1628240 5687320 1626064 5687736 1626352 5689536 1626424 5689616 -1628440 5687400 1628240 5687320 1626424 5689616 1626464 5689664 -1628440 5687400 1628088 5686560 1628240 5687320 1626464 5689664 -1628440 5687400 1628240 5687320 1626464 5689664 1627944 5690696 -1628240 5687320 1626352 5689536 1626424 5689616 1626464 5689664 -1628088 5686560 1628240 5687320 1628440 5687400 1628312 5686720 -1628240 5687320 1626464 5689664 1628440 5687400 1628312 5686720 -1628240 5687320 1626096 5687632 1626096 5687664 1626064 5687736 -1628088 5686560 1626096 5687632 1628240 5687320 1628312 5686720 -1626096 5687632 1628240 5687320 1628088 5686560 1627904 5686384 -1626096 5687632 1626096 5687664 1628240 5687320 1627904 5686384 -1626096 5687632 1628240 5687320 1627904 5686384 1626048 5687512 -1628240 5687320 1628312 5686720 1628088 5686560 1627904 5686384 -1626064 5687736 1626264 5689472 1626352 5689536 1628240 5687320 -1628440 5687400 1628464 5686776 1628312 5686720 1628240 5687320 -1628440 5687400 1628464 5686776 1628240 5687320 1626464 5689664 -1628312 5686720 1628088 5686560 1628240 5687320 1628464 5686776 -1628440 5687400 1628632 5687032 1628464 5686776 1628240 5687320 -1628440 5687400 1628632 5687032 1628240 5687320 1626464 5689664 -1628632 5687032 1628744 5687024 1628464 5686776 1628240 5687320 -1628440 5687400 1628648 5687064 1628632 5687032 1628240 5687320 -1628464 5686776 1628312 5686720 1628240 5687320 1628632 5687032 -1628240 5687320 1627672 5686840 1626096 5687632 1626096 5687664 -1628240 5687320 1627904 5686384 1627672 5686840 1626096 5687664 -1627672 5686840 1627904 5686384 1626096 5687632 1626096 5687664 -1626096 5687632 1627672 5686840 1627904 5686384 1626048 5687512 -1626096 5687632 1626096 5687664 1627672 5686840 1626048 5687512 -1627904 5686384 1627672 5686200 1626048 5687512 1627672 5686840 -1627672 5686840 1628240 5687320 1627904 5686384 1627672 5686200 -1626048 5687512 1626096 5687632 1627672 5686840 1627672 5686200 -1627904 5686384 1627824 5686272 1627672 5686200 1627672 5686840 -1628240 5687320 1627672 5686840 1626096 5687664 1626064 5687736 -1627904 5686384 1627672 5686840 1628240 5687320 1628088 5686560 -1627672 5686840 1626096 5687664 1628240 5687320 1628088 5686560 -1627904 5686384 1627672 5686200 1627672 5686840 1628088 5686560 -1628240 5687320 1628312 5686720 1628088 5686560 1627672 5686840 -1628240 5687320 1628312 5686720 1627672 5686840 1626096 5687664 -1628240 5687320 1628464 5686776 1628312 5686720 1627672 5686840 -1628088 5686560 1627904 5686384 1627672 5686840 1628312 5686720 -1626096 5687632 1627672 5686840 1626048 5687512 1626064 5687560 -1627672 5686200 1626016 5687448 1626048 5687512 1627672 5686840 -1627672 5686200 1626016 5687448 1627672 5686840 1627904 5686384 -1626048 5687512 1626096 5687632 1627672 5686840 1626016 5687448 -1627672 5686200 1627280 5685920 1626016 5687448 1627672 5686840 -1627280 5685920 1626648 5685816 1626016 5687448 1627672 5686840 -1627672 5686200 1627280 5685920 1627672 5686840 1627904 5686384 -1626648 5685816 1625984 5687408 1626016 5687448 1627672 5686840 -1626648 5685816 1625984 5687408 1627672 5686840 1627280 5685920 -1626648 5685816 1625904 5687328 1625984 5687408 1627672 5686840 -1627280 5685920 1626648 5685816 1627672 5686840 1627672 5686200 -1627280 5685920 1627048 5685800 1626648 5685816 1627672 5686840 -1626016 5687448 1626048 5687512 1627672 5686840 1625984 5687408 -1627672 5686840 1627448 5686600 1626648 5685816 1625984 5687408 -1627672 5686840 1627448 5686600 1625984 5687408 1626016 5687448 -1627448 5686600 1626648 5685816 1625984 5687408 1626016 5687448 -1626648 5685816 1625904 5687328 1625984 5687408 1627448 5686600 -1625984 5687408 1626016 5687448 1627448 5686600 1625904 5687328 -1626648 5685816 1625856 5687296 1625904 5687328 1627448 5686600 -1627280 5685920 1627448 5686600 1627672 5686840 1627672 5686200 -1627672 5686840 1627904 5686384 1627672 5686200 1627448 5686600 -1627672 5686840 1628088 5686560 1627904 5686384 1627448 5686600 -1627904 5686384 1627824 5686272 1627672 5686200 1627448 5686600 -1627904 5686384 1627824 5686272 1627448 5686600 1627672 5686840 -1627280 5685920 1626648 5685816 1627448 5686600 1627672 5686200 -1627672 5686200 1627280 5685920 1627448 5686600 1627824 5686272 -1626648 5685816 1627448 5686600 1627280 5685920 1627048 5685800 -1627448 5686600 1627672 5686200 1627280 5685920 1627048 5685800 -1627672 5686840 1627904 5686384 1627448 5686600 1626016 5687448 -1627448 5686600 1627048 5685800 1626648 5685816 1625904 5687328 -1627672 5686840 1627448 5686600 1626016 5687448 1626048 5687512 -1627672 5686840 1627448 5686600 1626048 5687512 1626096 5687632 -1627672 5686840 1627448 5686600 1626096 5687632 1626096 5687664 -1627448 5686600 1625984 5687408 1626016 5687448 1626048 5687512 -1627672 5686840 1627904 5686384 1627448 5686600 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1627448 5686600 -1627448 5686600 1626016 5687448 1626048 5687512 1626096 5687632 -1626648 5685816 1627448 5686600 1627048 5685800 1626784 5685776 -1625904 5687328 1627280 5686472 1626648 5685816 1625856 5687296 -1627448 5686600 1627280 5686472 1625904 5687328 1625984 5687408 -1627448 5686600 1627280 5686472 1625984 5687408 1626016 5687448 -1627280 5686472 1626648 5685816 1625904 5687328 1625984 5687408 -1627448 5686600 1627280 5686472 1626016 5687448 1626048 5687512 -1627280 5686472 1625984 5687408 1626016 5687448 1626048 5687512 -1627448 5686600 1626648 5685816 1627280 5686472 1626048 5687512 -1627280 5686472 1625904 5687328 1625984 5687408 1626016 5687448 -1626648 5685816 1627280 5686472 1627448 5686600 1627048 5685800 -1626648 5685816 1625904 5687328 1627280 5686472 1627048 5685800 -1627280 5686472 1626048 5687512 1627448 5686600 1627048 5685800 -1627448 5686600 1627280 5685920 1627048 5685800 1627280 5686472 -1627048 5685800 1626648 5685816 1627280 5686472 1627280 5685920 -1627448 5686600 1627280 5685920 1627280 5686472 1626048 5687512 -1627448 5686600 1627672 5686200 1627280 5685920 1627280 5686472 -1627448 5686600 1627672 5686200 1627280 5686472 1626048 5687512 -1627448 5686600 1627824 5686272 1627672 5686200 1627280 5686472 -1627280 5685920 1627048 5685800 1627280 5686472 1627672 5686200 -1627448 5686600 1627280 5686472 1626048 5687512 1626096 5687632 -1626648 5685816 1627280 5686472 1627048 5685800 1626784 5685776 -1626648 5685816 1625904 5687328 1627280 5686472 1626784 5685776 -1627280 5686472 1627280 5685920 1627048 5685800 1626784 5685776 -1627048 5685800 1626912 5685760 1626784 5685776 1627280 5686472 -1627048 5685800 1627272 5686456 1627280 5686472 1627280 5685920 -1627272 5686456 1626784 5685776 1627280 5686472 1627280 5685920 -1627280 5686472 1627672 5686200 1627280 5685920 1627272 5686456 -1627280 5686472 1627448 5686600 1627672 5686200 1627272 5686456 -1627280 5686472 1627672 5686200 1627272 5686456 1626784 5685776 -1627048 5685800 1626784 5685776 1627272 5686456 1627280 5685920 -1627280 5685920 1627048 5685800 1627272 5686456 1627672 5686200 -1626784 5685776 1627272 5686456 1627048 5685800 1626912 5685760 -1627280 5686472 1627272 5686456 1626784 5685776 1626648 5685816 -1627280 5686472 1627272 5686456 1626648 5685816 1625904 5687328 -1627280 5686472 1627272 5686456 1625904 5687328 1625984 5687408 -1626648 5685816 1625856 5687296 1625904 5687328 1627272 5686456 -1627272 5686456 1626648 5685816 1625904 5687328 1625984 5687408 -1627280 5686472 1627272 5686456 1625984 5687408 1626016 5687448 -1627280 5686472 1627672 5686200 1627272 5686456 1625984 5687408 -1627272 5686456 1627048 5685800 1626784 5685776 1626648 5685816 -1627272 5686456 1626784 5685776 1626648 5685816 1625904 5687328 -1625904 5687328 1627152 5686456 1626648 5685816 1625856 5687296 -1627152 5686456 1627272 5686456 1626648 5685816 1625856 5687296 -1625904 5687328 1627272 5686456 1627152 5686456 1625856 5687296 -1627272 5686456 1627152 5686456 1625904 5687328 1625984 5687408 -1627272 5686456 1627152 5686456 1625984 5687408 1627280 5686472 -1627272 5686456 1626648 5685816 1627152 5686456 1627280 5686472 -1627152 5686456 1625856 5687296 1625904 5687328 1625984 5687408 -1627152 5686456 1625904 5687328 1625984 5687408 1627280 5686472 -1625984 5687408 1626016 5687448 1627280 5686472 1627152 5686456 -1626016 5687448 1626048 5687512 1627280 5686472 1627152 5686456 -1627280 5686472 1627272 5686456 1627152 5686456 1626048 5687512 -1626048 5687512 1627448 5686600 1627280 5686472 1627152 5686456 -1626048 5687512 1627448 5686600 1627152 5686456 1626016 5687448 -1627280 5686472 1627272 5686456 1627152 5686456 1627448 5686600 -1625984 5687408 1626016 5687448 1627152 5686456 1625904 5687328 -1626016 5687448 1626048 5687512 1627152 5686456 1625984 5687408 -1626648 5685816 1625824 5687280 1625856 5687296 1627152 5686456 -1626048 5687512 1626096 5687632 1627448 5686600 1627152 5686456 -1626048 5687512 1626096 5687632 1627152 5686456 1626016 5687448 -1626096 5687632 1627672 5686840 1627448 5686600 1627152 5686456 -1627448 5686600 1627280 5686472 1627152 5686456 1626096 5687632 -1626048 5687512 1626064 5687560 1626096 5687632 1627152 5686456 -1626648 5685816 1627152 5686456 1627272 5686456 1626784 5685776 -1626648 5685816 1625856 5687296 1627152 5686456 1626784 5685776 -1627152 5686456 1627280 5686472 1627272 5686456 1626784 5685776 -1627272 5686456 1627048 5685800 1626784 5685776 1627152 5686456 -1627272 5686456 1627048 5685800 1627152 5686456 1627280 5686472 -1627272 5686456 1627280 5685920 1627048 5685800 1627152 5686456 -1627272 5686456 1627280 5685920 1627152 5686456 1627280 5686472 -1627048 5685800 1626784 5685776 1627152 5686456 1627280 5685920 -1627272 5686456 1627672 5686200 1627280 5685920 1627152 5686456 -1627048 5685800 1626912 5685760 1626784 5685776 1627152 5686456 -1626784 5685776 1626648 5685816 1627152 5686456 1627048 5685800 -1627448 5686600 1627120 5686512 1626096 5687632 1627672 5686840 -1626096 5687632 1626096 5687664 1627672 5686840 1627120 5686512 -1627448 5686600 1627152 5686456 1627120 5686512 1627672 5686840 -1627120 5686512 1627152 5686456 1626096 5687632 1627672 5686840 -1627152 5686456 1627120 5686512 1627448 5686600 1627280 5686472 -1627152 5686456 1627120 5686512 1627280 5686472 1627272 5686456 -1627120 5686512 1627672 5686840 1627448 5686600 1627280 5686472 -1627152 5686456 1626096 5687632 1627120 5686512 1627280 5686472 -1626096 5687632 1627120 5686512 1627152 5686456 1626048 5687512 -1627152 5686456 1626016 5687448 1626048 5687512 1627120 5686512 -1626096 5687632 1627672 5686840 1627120 5686512 1626048 5687512 -1627120 5686512 1627280 5686472 1627152 5686456 1626016 5687448 -1627152 5686456 1625984 5687408 1626016 5687448 1627120 5686512 -1626016 5687448 1626048 5687512 1627120 5686512 1625984 5687408 -1627152 5686456 1625984 5687408 1627120 5686512 1627280 5686472 -1627152 5686456 1625904 5687328 1625984 5687408 1627120 5686512 -1627152 5686456 1625904 5687328 1627120 5686512 1627280 5686472 -1627152 5686456 1625856 5687296 1625904 5687328 1627120 5686512 -1627152 5686456 1625856 5687296 1627120 5686512 1627280 5686472 -1627152 5686456 1626648 5685816 1625856 5687296 1627120 5686512 -1625856 5687296 1625904 5687328 1627120 5686512 1626648 5685816 -1627152 5686456 1626648 5685816 1627120 5686512 1627280 5686472 -1627152 5686456 1626784 5685776 1626648 5685816 1627120 5686512 -1625904 5687328 1625984 5687408 1627120 5686512 1625856 5687296 -1625984 5687408 1626016 5687448 1627120 5686512 1625904 5687328 -1626096 5687632 1627120 5686512 1626048 5687512 1626064 5687560 -1626648 5685816 1625824 5687280 1625856 5687296 1627120 5686512 -1626048 5687512 1626096 5687632 1627120 5686512 1626016 5687448 -1627672 5686840 1627200 5686776 1626096 5687632 1626096 5687664 -1627672 5686840 1627200 5686776 1626096 5687664 1628240 5687320 -1627200 5686776 1626096 5687632 1626096 5687664 1628240 5687320 -1627120 5686512 1627200 5686776 1627672 5686840 1627448 5686600 -1627120 5686512 1627200 5686776 1627448 5686600 1627280 5686472 -1627200 5686776 1627672 5686840 1627448 5686600 1627280 5686472 -1626096 5687632 1627200 5686776 1627120 5686512 1626048 5687512 -1627120 5686512 1627200 5686776 1627280 5686472 1627152 5686456 -1627200 5686776 1626048 5687512 1626096 5687632 1626096 5687664 -1626096 5687664 1626064 5687736 1628240 5687320 1627200 5686776 -1627120 5686512 1626048 5687512 1627200 5686776 1627280 5686472 -1627672 5686840 1627448 5686600 1627200 5686776 1628240 5687320 -1626096 5687632 1627200 5686776 1626048 5687512 1626064 5687560 -1627120 5686512 1626016 5687448 1626048 5687512 1627200 5686776 -1627120 5686512 1625984 5687408 1626016 5687448 1627200 5686776 -1626048 5687512 1626096 5687632 1627200 5686776 1626016 5687448 -1627120 5686512 1625904 5687328 1625984 5687408 1627200 5686776 -1627120 5686512 1625984 5687408 1627200 5686776 1627280 5686472 -1626016 5687448 1626048 5687512 1627200 5686776 1625984 5687408 -1626096 5687664 1627176 5686848 1627200 5686776 1626096 5687632 -1627200 5686776 1627176 5686848 1628240 5687320 1627672 5686840 -1626096 5687664 1628240 5687320 1627176 5686848 1626096 5687632 -1627176 5686848 1626096 5687664 1628240 5687320 1627672 5686840 -1627176 5686848 1627672 5686840 1627200 5686776 1626096 5687632 -1627200 5686776 1626048 5687512 1626096 5687632 1627176 5686848 -1626096 5687632 1626096 5687664 1627176 5686848 1626048 5687512 -1627200 5686776 1626016 5687448 1626048 5687512 1627176 5686848 -1626048 5687512 1626096 5687632 1627176 5686848 1626016 5687448 -1627200 5686776 1626016 5687448 1627176 5686848 1627672 5686840 -1628240 5687320 1627176 5686848 1626096 5687664 1626064 5687736 -1627200 5686776 1627176 5686848 1627672 5686840 1627448 5686600 -1626048 5687512 1626064 5687560 1626096 5687632 1627176 5686848 -1627200 5686776 1625984 5687408 1626016 5687448 1627176 5686848 -1627200 5686776 1627120 5686512 1625984 5687408 1627176 5686848 -1626016 5687448 1626048 5687512 1627176 5686848 1625984 5687408 -1627200 5686776 1627120 5686512 1627176 5686848 1627672 5686840 -1627120 5686512 1625904 5687328 1625984 5687408 1627176 5686848 -1627120 5686512 1625904 5687328 1627176 5686848 1627200 5686776 -1627120 5686512 1625856 5687296 1625904 5687328 1627176 5686848 -1625984 5687408 1626016 5687448 1627176 5686848 1625904 5687328 -1626096 5687664 1627088 5686952 1627176 5686848 1626096 5687632 -1626096 5687664 1628240 5687320 1627088 5686952 1626096 5687632 -1627176 5686848 1626048 5687512 1626096 5687632 1627088 5686952 -1627088 5686952 1628240 5687320 1627176 5686848 1626048 5687512 -1626096 5687632 1626096 5687664 1627088 5686952 1626048 5687512 -1627176 5686848 1626016 5687448 1626048 5687512 1627088 5686952 -1626048 5687512 1626096 5687632 1627088 5686952 1626016 5687448 -1627176 5686848 1625984 5687408 1626016 5687448 1627088 5686952 -1626016 5687448 1626048 5687512 1627088 5686952 1625984 5687408 -1627176 5686848 1625984 5687408 1627088 5686952 1628240 5687320 -1627176 5686848 1627088 5686952 1628240 5687320 1627672 5686840 -1627176 5686848 1627088 5686952 1627672 5686840 1627200 5686776 -1627176 5686848 1625984 5687408 1627088 5686952 1627672 5686840 -1627088 5686952 1626096 5687664 1628240 5687320 1627672 5686840 -1628240 5687320 1627088 5686952 1626096 5687664 1626064 5687736 -1627088 5686952 1626096 5687632 1626096 5687664 1626064 5687736 -1628240 5687320 1627088 5686952 1626064 5687736 1626352 5689536 -1628240 5687320 1627672 5686840 1627088 5686952 1626064 5687736 -1626048 5687512 1626064 5687560 1626096 5687632 1627088 5686952 -1626048 5687512 1626064 5687560 1627088 5686952 1626016 5687448 -1626096 5687632 1626096 5687664 1627088 5686952 1626064 5687560 -1627176 5686848 1625904 5687328 1625984 5687408 1627088 5686952 -1625984 5687408 1626016 5687448 1627088 5686952 1625904 5687328 -1627176 5686848 1625904 5687328 1627088 5686952 1627672 5686840 -1627176 5686848 1627120 5686512 1625904 5687328 1627088 5686952 -1627176 5686848 1627200 5686776 1627120 5686512 1627088 5686952 -1627176 5686848 1627200 5686776 1627088 5686952 1627672 5686840 -1627120 5686512 1625856 5687296 1625904 5687328 1627088 5686952 -1627120 5686512 1625904 5687328 1627088 5686952 1627200 5686776 -1625904 5687328 1625984 5687408 1627088 5686952 1627120 5686512 -1628240 5687320 1626992 5687056 1626064 5687736 1626352 5689536 -1628240 5687320 1626992 5687056 1626352 5689536 1626424 5689616 -1626992 5687056 1627088 5686952 1626064 5687736 1626352 5689536 -1627088 5686952 1626992 5687056 1628240 5687320 1627672 5686840 -1627088 5686952 1626992 5687056 1627672 5686840 1627176 5686848 -1627088 5686952 1626064 5687736 1626992 5687056 1627672 5686840 -1628240 5687320 1627672 5686840 1626992 5687056 1626352 5689536 -1626064 5687736 1626992 5687056 1627088 5686952 1626096 5687664 -1627088 5686952 1626096 5687632 1626096 5687664 1626992 5687056 -1626064 5687736 1626352 5689536 1626992 5687056 1626096 5687664 -1627088 5686952 1626064 5687560 1626096 5687632 1626992 5687056 -1626096 5687632 1626096 5687664 1626992 5687056 1626064 5687560 -1626992 5687056 1627672 5686840 1627088 5686952 1626064 5687560 -1626096 5687664 1626064 5687736 1626992 5687056 1626096 5687632 -1626064 5687736 1626264 5689472 1626352 5689536 1626992 5687056 -1627088 5686952 1626048 5687512 1626064 5687560 1626992 5687056 -1627088 5686952 1626016 5687448 1626048 5687512 1626992 5687056 -1627088 5686952 1625984 5687408 1626016 5687448 1626992 5687056 -1626016 5687448 1626048 5687512 1626992 5687056 1625984 5687408 -1627088 5686952 1625904 5687328 1625984 5687408 1626992 5687056 -1625984 5687408 1626016 5687448 1626992 5687056 1625904 5687328 -1626064 5687560 1626096 5687632 1626992 5687056 1626048 5687512 -1627088 5686952 1625904 5687328 1626992 5687056 1627672 5686840 -1626048 5687512 1626064 5687560 1626992 5687056 1626016 5687448 -1627088 5686952 1627120 5686512 1625904 5687328 1626992 5687056 -1625904 5687328 1625984 5687408 1626992 5687056 1627120 5686512 -1627088 5686952 1627120 5686512 1626992 5687056 1627672 5686840 -1627120 5686512 1625856 5687296 1625904 5687328 1626992 5687056 -1625904 5687328 1625984 5687408 1626992 5687056 1625856 5687296 -1627120 5686512 1626648 5685816 1625856 5687296 1626992 5687056 -1627088 5686952 1627200 5686776 1627120 5686512 1626992 5687056 -1627120 5686512 1625856 5687296 1626992 5687056 1627088 5686952 -1626096 5687632 1626856 5687144 1626992 5687056 1626064 5687560 -1626992 5687056 1626048 5687512 1626064 5687560 1626856 5687144 -1626064 5687560 1626096 5687632 1626856 5687144 1626048 5687512 -1626856 5687144 1626096 5687664 1626992 5687056 1626048 5687512 -1626992 5687056 1626856 5687144 1626096 5687664 1626064 5687736 -1626992 5687056 1626856 5687144 1626064 5687736 1626352 5689536 -1626992 5687056 1626856 5687144 1626352 5689536 1628240 5687320 -1626352 5689536 1626424 5689616 1628240 5687320 1626856 5687144 -1626856 5687144 1626064 5687736 1626352 5689536 1628240 5687320 -1626992 5687056 1626048 5687512 1626856 5687144 1628240 5687320 -1626856 5687144 1626096 5687632 1626096 5687664 1626064 5687736 -1626992 5687056 1626856 5687144 1628240 5687320 1627672 5686840 -1626856 5687144 1626096 5687664 1626064 5687736 1626352 5689536 -1626064 5687736 1626264 5689472 1626352 5689536 1626856 5687144 -1626096 5687632 1626096 5687664 1626856 5687144 1626064 5687560 -1626992 5687056 1626016 5687448 1626048 5687512 1626856 5687144 -1626992 5687056 1625984 5687408 1626016 5687448 1626856 5687144 -1626992 5687056 1625904 5687328 1625984 5687408 1626856 5687144 -1625984 5687408 1626016 5687448 1626856 5687144 1625904 5687328 -1626992 5687056 1625856 5687296 1625904 5687328 1626856 5687144 -1625904 5687328 1625984 5687408 1626856 5687144 1625856 5687296 -1626048 5687512 1626064 5687560 1626856 5687144 1626016 5687448 -1626992 5687056 1625856 5687296 1626856 5687144 1628240 5687320 -1626992 5687056 1627120 5686512 1625856 5687296 1626856 5687144 -1625856 5687296 1625904 5687328 1626856 5687144 1627120 5686512 -1627120 5686512 1626648 5685816 1625856 5687296 1626856 5687144 -1625856 5687296 1625904 5687328 1626856 5687144 1626648 5685816 -1627120 5686512 1627152 5686456 1626648 5685816 1626856 5687144 -1626992 5687056 1627120 5686512 1626856 5687144 1628240 5687320 -1627120 5686512 1626648 5685816 1626856 5687144 1626992 5687056 -1626016 5687448 1626048 5687512 1626856 5687144 1625984 5687408 -1626648 5685816 1625824 5687280 1625856 5687296 1626856 5687144 -1626992 5687056 1627088 5686952 1627120 5686512 1626856 5687144 -1625904 5687328 1626784 5687160 1626856 5687144 1625856 5687296 -1626784 5687160 1625984 5687408 1626856 5687144 1625856 5687296 -1626856 5687144 1626784 5687160 1625984 5687408 1626016 5687448 -1626856 5687144 1625856 5687296 1626784 5687160 1626016 5687448 -1626784 5687160 1625904 5687328 1625984 5687408 1626016 5687448 -1626856 5687144 1626648 5685816 1625856 5687296 1626784 5687160 -1626856 5687144 1626648 5685816 1626784 5687160 1626016 5687448 -1625856 5687296 1625904 5687328 1626784 5687160 1626648 5685816 -1625904 5687328 1625984 5687408 1626784 5687160 1625856 5687296 -1626856 5687144 1627120 5686512 1626648 5685816 1626784 5687160 -1626856 5687144 1627120 5686512 1626784 5687160 1626016 5687448 -1626648 5685816 1625856 5687296 1626784 5687160 1627120 5686512 -1627120 5686512 1627152 5686456 1626648 5685816 1626784 5687160 -1626856 5687144 1626992 5687056 1627120 5686512 1626784 5687160 -1626856 5687144 1626992 5687056 1626784 5687160 1626016 5687448 -1627120 5686512 1626648 5685816 1626784 5687160 1626992 5687056 -1626856 5687144 1626784 5687160 1626016 5687448 1626048 5687512 -1626856 5687144 1626992 5687056 1626784 5687160 1626048 5687512 -1626784 5687160 1625984 5687408 1626016 5687448 1626048 5687512 -1626856 5687144 1626784 5687160 1626048 5687512 1626064 5687560 -1626856 5687144 1626992 5687056 1626784 5687160 1626064 5687560 -1626856 5687144 1626784 5687160 1626064 5687560 1626096 5687632 -1626856 5687144 1626992 5687056 1626784 5687160 1626096 5687632 -1626784 5687160 1626048 5687512 1626064 5687560 1626096 5687632 -1626856 5687144 1626784 5687160 1626096 5687632 1626096 5687664 -1626856 5687144 1626992 5687056 1626784 5687160 1626096 5687664 -1626784 5687160 1626064 5687560 1626096 5687632 1626096 5687664 -1626856 5687144 1626784 5687160 1626096 5687664 1626064 5687736 -1626856 5687144 1626992 5687056 1626784 5687160 1626064 5687736 -1626856 5687144 1626784 5687160 1626064 5687736 1626352 5689536 -1626784 5687160 1626096 5687632 1626096 5687664 1626064 5687736 -1626784 5687160 1626016 5687448 1626048 5687512 1626064 5687560 -1626648 5685816 1625824 5687280 1625856 5687296 1626784 5687160 -1626992 5687056 1627088 5686952 1627120 5686512 1626784 5687160 -1626784 5687160 1626672 5687112 1625856 5687296 1625904 5687328 -1626648 5685816 1626672 5687112 1626784 5687160 1627120 5686512 -1626648 5685816 1625856 5687296 1626672 5687112 1627120 5686512 -1626648 5685816 1626672 5687112 1627120 5686512 1627152 5686456 -1626784 5687160 1627120 5686512 1626672 5687112 1625904 5687328 -1626784 5687160 1626672 5687112 1625904 5687328 1625984 5687408 -1626784 5687160 1626672 5687112 1625984 5687408 1626016 5687448 -1626672 5687112 1625856 5687296 1625904 5687328 1625984 5687408 -1626784 5687160 1626672 5687112 1626016 5687448 1626048 5687512 -1626672 5687112 1625984 5687408 1626016 5687448 1626048 5687512 -1626784 5687160 1627120 5686512 1626672 5687112 1626048 5687512 -1626672 5687112 1625904 5687328 1625984 5687408 1626016 5687448 -1626784 5687160 1626992 5687056 1627120 5686512 1626672 5687112 -1627120 5686512 1626648 5685816 1626672 5687112 1626992 5687056 -1626784 5687160 1626992 5687056 1626672 5687112 1626048 5687512 -1626784 5687160 1626856 5687144 1626992 5687056 1626672 5687112 -1626784 5687160 1626856 5687144 1626672 5687112 1626048 5687512 -1626992 5687056 1627120 5686512 1626672 5687112 1626856 5687144 -1626672 5687112 1626648 5685816 1625856 5687296 1625904 5687328 -1626784 5687160 1626672 5687112 1626048 5687512 1626064 5687560 -1626672 5687112 1626016 5687448 1626048 5687512 1626064 5687560 -1626784 5687160 1626672 5687112 1626064 5687560 1626096 5687632 -1626784 5687160 1626672 5687112 1626096 5687632 1626096 5687664 -1626784 5687160 1626856 5687144 1626672 5687112 1626096 5687632 -1626672 5687112 1626048 5687512 1626064 5687560 1626096 5687632 -1625856 5687296 1626672 5687112 1626648 5685816 1625824 5687280 -1626672 5687112 1627120 5686512 1626648 5685816 1625824 5687280 -1626648 5685816 1625672 5687248 1625824 5687280 1626672 5687112 -1625856 5687296 1625904 5687328 1626672 5687112 1625824 5687280 -1626992 5687056 1627088 5686952 1627120 5686512 1626672 5687112 -1627120 5686512 1626648 5685816 1626672 5687112 1627088 5686952 -1627088 5686952 1627200 5686776 1627120 5686512 1626672 5687112 -1626992 5687056 1627088 5686952 1626672 5687112 1626856 5687144 -1626648 5685816 1626136 5686568 1625824 5687280 1626672 5687112 -1626648 5685816 1626136 5686568 1626672 5687112 1627120 5686512 -1626672 5687112 1627088 5686952 1627120 5686512 1626136 5686568 -1626648 5685816 1626136 5686568 1627120 5686512 1627152 5686456 -1626136 5686568 1625824 5687280 1626672 5687112 1627120 5686512 -1626648 5685816 1625672 5687248 1626136 5686568 1627120 5686512 -1625672 5687248 1626136 5686568 1626648 5685816 1625656 5687248 -1625672 5687248 1625824 5687280 1626136 5686568 1625656 5687248 -1626136 5686568 1627120 5686512 1626648 5685816 1625656 5687248 -1626136 5686568 1625672 5687248 1625824 5687280 1626672 5687112 -1626648 5685816 1625568 5687272 1625656 5687248 1626136 5686568 -1626648 5685816 1625568 5687272 1626136 5686568 1627120 5686512 -1625656 5687248 1625672 5687248 1626136 5686568 1625568 5687272 -1626648 5685816 1625480 5687312 1625568 5687272 1626136 5686568 -1626648 5685816 1625480 5687312 1626136 5686568 1627120 5686512 -1626648 5685816 1622472 5686920 1625480 5687312 1626136 5686568 -1626648 5685816 1622472 5686920 1626136 5686568 1627120 5686512 -1626648 5685816 1622296 5686800 1622472 5686920 1626136 5686568 -1622472 5686920 1622592 5687064 1625480 5687312 1626136 5686568 -1625480 5687312 1625488 5687312 1625568 5687272 1626136 5686568 -1625480 5687312 1625568 5687272 1626136 5686568 1622472 5686920 -1625568 5687272 1625656 5687248 1626136 5686568 1625480 5687312 -1625824 5687280 1626136 5686568 1625672 5687248 1625736 5687272 -1625824 5687280 1625856 5687296 1626672 5687112 1626136 5686568 -1626672 5687112 1627120 5686512 1626136 5686568 1625856 5687296 -1625856 5687296 1625904 5687328 1626672 5687112 1626136 5686568 -1625904 5687328 1625984 5687408 1626672 5687112 1626136 5686568 -1626672 5687112 1627120 5686512 1626136 5686568 1625904 5687328 -1625824 5687280 1625856 5687296 1626136 5686568 1625672 5687248 -1625856 5687296 1625904 5687328 1626136 5686568 1625824 5687280 -1626648 5685816 1626088 5686480 1626136 5686568 1627120 5686512 -1622472 5686920 1626088 5686480 1626648 5685816 1622296 5686800 -1626088 5686480 1626136 5686568 1626648 5685816 1622296 5686800 -1622472 5686920 1626136 5686568 1626088 5686480 1622296 5686800 -1626648 5685816 1621112 5686056 1622296 5686800 1626088 5686480 -1626136 5686568 1626088 5686480 1622472 5686920 1625480 5687312 -1626088 5686480 1622296 5686800 1622472 5686920 1625480 5687312 -1626136 5686568 1626648 5685816 1626088 5686480 1625480 5687312 -1622472 5686920 1622592 5687064 1625480 5687312 1626088 5686480 -1622472 5686920 1622592 5687064 1626088 5686480 1622296 5686800 -1625480 5687312 1626136 5686568 1626088 5686480 1622592 5687064 -1622592 5687064 1625432 5687352 1625480 5687312 1626088 5686480 -1626136 5686568 1626088 5686480 1625480 5687312 1625568 5687272 -1626136 5686568 1626648 5685816 1626088 5686480 1625568 5687272 -1626088 5686480 1622592 5687064 1625480 5687312 1625568 5687272 -1625480 5687312 1625488 5687312 1625568 5687272 1626088 5686480 -1626136 5686568 1626088 5686480 1625568 5687272 1625656 5687248 -1626136 5686568 1626648 5685816 1626088 5686480 1625656 5687248 -1626136 5686568 1626088 5686480 1625656 5687248 1625672 5687248 -1626136 5686568 1626088 5686480 1625672 5687248 1625824 5687280 -1626136 5686568 1626648 5685816 1626088 5686480 1625672 5687248 -1626088 5686480 1625480 5687312 1625568 5687272 1625656 5687248 -1626088 5686480 1625568 5687272 1625656 5687248 1625672 5687248 -1626648 5685816 1626064 5686368 1626088 5686480 1626136 5686568 -1626064 5686368 1622296 5686800 1626088 5686480 1626136 5686568 -1622296 5686800 1626064 5686368 1626648 5685816 1621112 5686056 -1626648 5685816 1626064 5686368 1626136 5686568 1627120 5686512 -1626648 5685816 1622296 5686800 1626064 5686368 1626136 5686568 -1626088 5686480 1626064 5686368 1622296 5686800 1622472 5686920 -1626064 5686368 1626648 5685816 1622296 5686800 1622472 5686920 -1626088 5686480 1626064 5686368 1622472 5686920 1622592 5687064 -1626088 5686480 1626136 5686568 1626064 5686368 1622592 5687064 -1626064 5686368 1622296 5686800 1622472 5686920 1622592 5687064 -1626088 5686480 1626064 5686368 1622592 5687064 1625480 5687312 -1626064 5686368 1622472 5686920 1622592 5687064 1625480 5687312 -1626088 5686480 1626136 5686568 1626064 5686368 1625480 5687312 -1626088 5686480 1626064 5686368 1625480 5687312 1625568 5687272 -1626088 5686480 1626136 5686568 1626064 5686368 1625568 5687272 -1626064 5686368 1622592 5687064 1625480 5687312 1625568 5687272 -1622592 5687064 1625432 5687352 1625480 5687312 1626064 5686368 -1622592 5687064 1622704 5687208 1625432 5687352 1626064 5686368 -1622592 5687064 1625432 5687352 1626064 5686368 1622472 5686920 -1625480 5687312 1625568 5687272 1626064 5686368 1625432 5687352 -1625480 5687312 1625488 5687312 1625568 5687272 1626064 5686368 -1626088 5686480 1626064 5686368 1625568 5687272 1625656 5687248 -1626064 5686368 1626088 5686256 1622296 5686800 1622472 5686920 -1626088 5686256 1626648 5685816 1622296 5686800 1622472 5686920 -1622296 5686800 1626088 5686256 1626648 5685816 1621112 5686056 -1626088 5686256 1626064 5686368 1626648 5685816 1621112 5686056 -1622296 5686800 1622472 5686920 1626088 5686256 1621112 5686056 -1626064 5686368 1626648 5685816 1626088 5686256 1622472 5686920 -1626648 5685816 1626088 5686256 1626064 5686368 1626136 5686568 -1626064 5686368 1626088 5686480 1626136 5686568 1626088 5686256 -1626648 5685816 1621112 5686056 1626088 5686256 1626136 5686568 -1626648 5685816 1626088 5686256 1626136 5686568 1627120 5686512 -1626088 5686256 1622472 5686920 1626064 5686368 1626088 5686480 -1626136 5686568 1626648 5685816 1626088 5686256 1626088 5686480 -1622296 5686800 1626088 5686256 1621112 5686056 1621744 5686536 -1626064 5686368 1626088 5686256 1622472 5686920 1622592 5687064 -1626088 5686256 1622296 5686800 1622472 5686920 1622592 5687064 -1626064 5686368 1626088 5686256 1622592 5687064 1625432 5687352 -1622592 5687064 1622704 5687208 1625432 5687352 1626088 5686256 -1626064 5686368 1626088 5686480 1626088 5686256 1625432 5687352 -1626088 5686256 1622472 5686920 1622592 5687064 1625432 5687352 -1626064 5686368 1626088 5686256 1625432 5687352 1625480 5687312 -1626088 5686256 1622592 5687064 1625432 5687352 1625480 5687312 -1626064 5686368 1626088 5686480 1626088 5686256 1625480 5687312 -1626064 5686368 1626088 5686256 1625480 5687312 1625568 5687272 -1626648 5685816 1626744 5680528 1621112 5686056 1626088 5686256 -1626648 5685816 1626744 5680528 1626088 5686256 1626136 5686568 -1626648 5685816 1626952 5680672 1626744 5680528 1626088 5686256 -1626744 5680528 1626632 5680392 1621112 5686056 1626088 5686256 -1621112 5686056 1622296 5686800 1626088 5686256 1626744 5680528 -1626648 5685816 1626112 5686232 1626088 5686256 1626136 5686568 -1626648 5685816 1626744 5680528 1626112 5686232 1626136 5686568 -1626112 5686232 1626744 5680528 1626088 5686256 1626136 5686568 -1626744 5680528 1626112 5686232 1626648 5685816 1626952 5680672 -1626648 5685816 1626112 5686232 1626136 5686568 1627120 5686512 -1626648 5685816 1626744 5680528 1626112 5686232 1627120 5686512 -1626112 5686232 1626088 5686256 1626136 5686568 1627120 5686512 -1626136 5686568 1626672 5687112 1627120 5686512 1626112 5686232 -1626648 5685816 1626112 5686232 1627120 5686512 1627152 5686456 -1626088 5686256 1626088 5686480 1626136 5686568 1626112 5686232 -1626088 5686256 1626064 5686368 1626088 5686480 1626112 5686232 -1626136 5686568 1627120 5686512 1626112 5686232 1626088 5686480 -1626088 5686256 1626064 5686368 1626112 5686232 1626744 5680528 -1626088 5686480 1626136 5686568 1626112 5686232 1626064 5686368 -1626088 5686256 1626112 5686232 1626744 5680528 1621112 5686056 -1626112 5686232 1626648 5685816 1626744 5680528 1621112 5686056 -1626088 5686256 1626064 5686368 1626112 5686232 1621112 5686056 -1626744 5680528 1626632 5680392 1621112 5686056 1626112 5686232 -1626088 5686256 1626112 5686232 1621112 5686056 1622296 5686800 -1626088 5686256 1626112 5686232 1622296 5686800 1622472 5686920 -1626088 5686256 1626064 5686368 1626112 5686232 1622296 5686800 -1621112 5686056 1621744 5686536 1622296 5686800 1626112 5686232 -1626112 5686232 1626744 5680528 1621112 5686056 1622296 5686800 -1626648 5685816 1626144 5686160 1626112 5686232 1627120 5686512 -1626144 5686160 1626744 5680528 1626112 5686232 1627120 5686512 -1626112 5686232 1626144 5686160 1626744 5680528 1621112 5686056 -1626112 5686232 1627120 5686512 1626144 5686160 1621112 5686056 -1626648 5685816 1626144 5686160 1627120 5686512 1627152 5686456 -1626144 5686160 1626648 5685816 1626744 5680528 1621112 5686056 -1626744 5680528 1626144 5686160 1626648 5685816 1626952 5680672 -1626744 5680528 1626632 5680392 1621112 5686056 1626144 5686160 -1626112 5686232 1626136 5686568 1627120 5686512 1626144 5686160 -1626112 5686232 1626136 5686568 1626144 5686160 1621112 5686056 -1627120 5686512 1626648 5685816 1626144 5686160 1626136 5686568 -1626112 5686232 1626088 5686480 1626136 5686568 1626144 5686160 -1626136 5686568 1626672 5687112 1627120 5686512 1626144 5686160 -1626648 5685816 1626744 5680528 1626144 5686160 1627120 5686512 -1626112 5686232 1626144 5686160 1621112 5686056 1622296 5686800 -1626112 5686232 1626136 5686568 1626144 5686160 1622296 5686800 -1626144 5686160 1626744 5680528 1621112 5686056 1622296 5686800 -1626112 5686232 1626144 5686160 1622296 5686800 1626088 5686256 -1626112 5686232 1626136 5686568 1626144 5686160 1626088 5686256 -1622296 5686800 1622472 5686920 1626088 5686256 1626144 5686160 -1622472 5686920 1622592 5687064 1626088 5686256 1626144 5686160 -1626088 5686256 1626112 5686232 1626144 5686160 1622472 5686920 -1621112 5686056 1621744 5686536 1622296 5686800 1626144 5686160 -1626144 5686160 1621112 5686056 1622296 5686800 1622472 5686920 -1626144 5686160 1626280 5686008 1626744 5680528 1621112 5686056 -1626144 5686160 1626280 5686008 1621112 5686056 1622296 5686800 -1626280 5686008 1626744 5680528 1621112 5686056 1622296 5686800 -1626144 5686160 1626648 5685816 1626280 5686008 1622296 5686800 -1626744 5680528 1626280 5686008 1626648 5685816 1626952 5680672 -1626744 5680528 1626632 5680392 1621112 5686056 1626280 5686008 -1626648 5685816 1626280 5686008 1626144 5686160 1627120 5686512 -1626648 5685816 1626744 5680528 1626280 5686008 1627120 5686512 -1626144 5686160 1626136 5686568 1627120 5686512 1626280 5686008 -1626136 5686568 1626672 5687112 1627120 5686512 1626280 5686008 -1626648 5685816 1626280 5686008 1627120 5686512 1627152 5686456 -1626280 5686008 1622296 5686800 1626144 5686160 1626136 5686568 -1626144 5686160 1626112 5686232 1626136 5686568 1626280 5686008 -1627120 5686512 1626648 5685816 1626280 5686008 1626136 5686568 -1626280 5686008 1626648 5685816 1626744 5680528 1621112 5686056 -1621112 5686056 1621744 5686536 1622296 5686800 1626280 5686008 -1626144 5686160 1626280 5686008 1622296 5686800 1622472 5686920 -1626648 5685816 1626360 5685936 1626280 5686008 1627120 5686512 -1626360 5685936 1626744 5680528 1626280 5686008 1627120 5686512 -1626648 5685816 1626360 5685936 1627120 5686512 1627152 5686456 -1626744 5680528 1626360 5685936 1626648 5685816 1626952 5680672 -1626744 5680528 1626280 5686008 1626360 5685936 1626952 5680672 -1626280 5686008 1626136 5686568 1627120 5686512 1626360 5685936 -1626280 5686008 1626360 5685936 1626744 5680528 1621112 5686056 -1626648 5685816 1626952 5680672 1626360 5685936 1627120 5686512 -1626648 5685816 1627152 5680768 1626952 5680672 1626360 5685936 -1626360 5685936 1626496 5685696 1626952 5680672 1626744 5680528 -1626360 5685936 1626496 5685696 1626744 5680528 1626280 5686008 -1626496 5685696 1626952 5680672 1626744 5680528 1626280 5686008 -1626360 5685936 1626648 5685816 1626496 5685696 1626280 5686008 -1626744 5680528 1621112 5686056 1626280 5686008 1626496 5685696 -1621112 5686056 1622296 5686800 1626280 5686008 1626496 5685696 -1622296 5686800 1626144 5686160 1626280 5686008 1626496 5685696 -1622296 5686800 1626144 5686160 1626496 5685696 1621112 5686056 -1626744 5680528 1621112 5686056 1626496 5685696 1626952 5680672 -1626744 5680528 1626632 5680392 1621112 5686056 1626496 5685696 -1626632 5680392 1621048 5686008 1621112 5686056 1626496 5685696 -1626744 5680528 1626632 5680392 1626496 5685696 1626952 5680672 -1626280 5686008 1626360 5685936 1626496 5685696 1626144 5686160 -1621112 5686056 1622296 5686800 1626496 5685696 1626632 5680392 -1626496 5685696 1626648 5685816 1626952 5680672 1626744 5680528 -1626952 5680672 1626496 5685696 1626648 5685816 1627152 5680768 -1626648 5685816 1626784 5685776 1627152 5680768 1626496 5685696 -1626496 5685696 1626360 5685936 1626648 5685816 1626784 5685776 -1626952 5680672 1626744 5680528 1626496 5685696 1627152 5680768 -1626784 5685776 1627248 5680800 1627152 5680768 1626496 5685696 -1626784 5685776 1627248 5680800 1626496 5685696 1626648 5685816 -1626784 5685776 1626912 5685760 1627248 5680800 1626496 5685696 -1626912 5685760 1627944 5680984 1627248 5680800 1626496 5685696 -1627944 5680984 1627752 5680904 1627248 5680800 1626496 5685696 -1626784 5685776 1626912 5685760 1626496 5685696 1626648 5685816 -1626912 5685760 1627944 5680984 1626496 5685696 1626784 5685776 -1627248 5680800 1627152 5680768 1626496 5685696 1627944 5680984 -1626912 5685760 1627048 5685800 1627944 5680984 1626496 5685696 -1627152 5680768 1626952 5680672 1626496 5685696 1627248 5680800 -1621112 5686056 1621744 5686536 1622296 5686800 1626496 5685696 -1622296 5686800 1622472 5686920 1626144 5686160 1626496 5685696 -1626496 5685696 1626504 5685728 1626648 5685816 1626784 5685776 -1626360 5685936 1626504 5685728 1626496 5685696 1626280 5686008 -1626496 5685696 1626384 5685752 1626144 5686160 1626280 5686008 -1622296 5686800 1626384 5685752 1626496 5685696 1621112 5686056 -1622296 5686800 1626144 5686160 1626384 5685752 1621112 5686056 -1626496 5685696 1626384 5685752 1626280 5686008 1626360 5685936 -1626384 5685752 1626144 5686160 1626280 5686008 1626360 5685936 -1626496 5685696 1626384 5685752 1626360 5685936 1626504 5685728 -1626360 5685936 1626648 5685816 1626504 5685728 1626384 5685752 -1626384 5685752 1626280 5686008 1626360 5685936 1626504 5685728 -1626496 5685696 1626632 5680392 1621112 5686056 1626384 5685752 -1626632 5680392 1621048 5686008 1621112 5686056 1626384 5685752 -1621112 5686056 1622296 5686800 1626384 5685752 1626632 5680392 -1626496 5685696 1626744 5680528 1626632 5680392 1626384 5685752 -1626496 5685696 1626952 5680672 1626744 5680528 1626384 5685752 -1626632 5680392 1621112 5686056 1626384 5685752 1626744 5680528 -1626496 5685696 1626744 5680528 1626384 5685752 1626504 5685728 -1626384 5685752 1622296 5686800 1626144 5686160 1626280 5686008 -1622296 5686800 1626384 5685752 1621112 5686056 1621744 5686536 -1626144 5686160 1626384 5685752 1622296 5686800 1622472 5686920 -1621112 5686056 1626072 5685776 1626384 5685752 1626632 5680392 -1621112 5686056 1626072 5685776 1626632 5680392 1621048 5686008 -1626072 5685776 1626384 5685752 1626632 5680392 1621048 5686008 -1626632 5680392 1626592 5680320 1621048 5686008 1626072 5685776 -1626384 5685752 1626072 5685776 1622296 5686800 1626144 5686160 -1626072 5685776 1621112 5686056 1622296 5686800 1626144 5686160 -1621112 5686056 1622296 5686800 1626072 5685776 1621048 5686008 -1626384 5685752 1626744 5680528 1626632 5680392 1626072 5685776 -1626632 5680392 1621048 5686008 1626072 5685776 1626744 5680528 -1626384 5685752 1626496 5685696 1626744 5680528 1626072 5685776 -1626496 5685696 1626952 5680672 1626744 5680528 1626072 5685776 -1626496 5685696 1626952 5680672 1626072 5685776 1626384 5685752 -1626744 5680528 1626632 5680392 1626072 5685776 1626952 5680672 -1626496 5685696 1627152 5680768 1626952 5680672 1626072 5685776 -1626072 5685776 1626144 5686160 1626384 5685752 1626496 5685696 -1626384 5685752 1626504 5685728 1626496 5685696 1626072 5685776 -1626384 5685752 1626072 5685776 1626144 5686160 1626280 5686008 -1626384 5685752 1626072 5685776 1626280 5686008 1626360 5685936 -1626072 5685776 1622296 5686800 1626144 5686160 1626280 5686008 -1626384 5685752 1626072 5685776 1626360 5685936 1626504 5685728 -1626384 5685752 1626496 5685696 1626072 5685776 1626360 5685936 -1626072 5685776 1626144 5686160 1626280 5686008 1626360 5685936 -1622296 5686800 1626072 5685776 1621112 5686056 1621744 5686536 -1622296 5686800 1626144 5686160 1626072 5685776 1621744 5686536 -1621112 5686056 1621672 5686496 1621744 5686536 1626072 5685776 -1626072 5685776 1621048 5686008 1621112 5686056 1621744 5686536 -1622296 5686800 1622472 5686920 1626144 5686160 1626072 5685776 -1622296 5686800 1622472 5686920 1626072 5685776 1621744 5686536 -1622472 5686920 1626088 5686256 1626144 5686160 1626072 5685776 -1622472 5686920 1622592 5687064 1626088 5686256 1626072 5685776 -1626088 5686256 1626144 5686160 1626072 5685776 1622592 5687064 -1626088 5686256 1626112 5686232 1626144 5686160 1626072 5685776 -1626144 5686160 1626280 5686008 1626072 5685776 1626088 5686256 -1622592 5687064 1625432 5687352 1626088 5686256 1626072 5685776 -1622592 5687064 1622704 5687208 1625432 5687352 1626072 5685776 -1622592 5687064 1625432 5687352 1626072 5685776 1622472 5686920 -1625432 5687352 1625480 5687312 1626088 5686256 1626072 5685776 -1626088 5686256 1626144 5686160 1626072 5685776 1625480 5687312 -1625432 5687352 1625480 5687312 1626072 5685776 1622592 5687064 -1625480 5687312 1626064 5686368 1626088 5686256 1626072 5685776 -1625480 5687312 1626064 5686368 1626072 5685776 1625432 5687352 -1626088 5686256 1626144 5686160 1626072 5685776 1626064 5686368 -1625480 5687312 1625568 5687272 1626064 5686368 1626072 5685776 -1622472 5686920 1622592 5687064 1626072 5685776 1622296 5686800 -1626072 5685776 1625952 5685816 1622592 5687064 1625432 5687352 -1622592 5687064 1622704 5687208 1625432 5687352 1625952 5685816 -1625432 5687352 1626072 5685776 1625952 5685816 1622704 5687208 -1625952 5685816 1622472 5686920 1622592 5687064 1622704 5687208 -1626072 5685776 1622472 5686920 1625952 5685816 1625432 5687352 -1626072 5685776 1625952 5685816 1625432 5687352 1625480 5687312 -1625952 5685816 1622704 5687208 1625432 5687352 1625480 5687312 -1626072 5685776 1625952 5685816 1625480 5687312 1626064 5686368 -1626072 5685776 1622472 5686920 1625952 5685816 1626064 5686368 -1625952 5685816 1625432 5687352 1625480 5687312 1626064 5686368 -1625480 5687312 1625568 5687272 1626064 5686368 1625952 5685816 -1626072 5685776 1625952 5685816 1626064 5686368 1626088 5686256 -1625952 5685816 1625480 5687312 1626064 5686368 1626088 5686256 -1626072 5685776 1625952 5685816 1626088 5686256 1626144 5686160 -1626088 5686256 1626112 5686232 1626144 5686160 1625952 5685816 -1626072 5685776 1625952 5685816 1626144 5686160 1626280 5686008 -1626072 5685776 1622472 5686920 1625952 5685816 1626144 5686160 -1625952 5685816 1626064 5686368 1626088 5686256 1626144 5686160 -1622704 5687208 1622888 5687408 1625432 5687352 1625952 5685816 -1622472 5686920 1625952 5685816 1626072 5685776 1622296 5686800 -1626072 5685776 1621744 5686536 1622296 5686800 1625952 5685816 -1625952 5685816 1626144 5686160 1626072 5685776 1621744 5686536 -1622472 5686920 1622592 5687064 1625952 5685816 1622296 5686800 -1626072 5685776 1621112 5686056 1621744 5686536 1625952 5685816 -1621744 5686536 1622296 5686800 1625952 5685816 1621112 5686056 -1621112 5686056 1621672 5686496 1621744 5686536 1625952 5685816 -1626072 5685776 1621112 5686056 1625952 5685816 1626144 5686160 -1626072 5685776 1621048 5686008 1621112 5686056 1625952 5685816 -1626072 5685776 1626632 5680392 1621048 5686008 1625952 5685816 -1626072 5685776 1626744 5680528 1626632 5680392 1625952 5685816 -1626632 5680392 1621048 5686008 1625952 5685816 1626744 5680528 -1626632 5680392 1626592 5680320 1621048 5686008 1625952 5685816 -1626072 5685776 1626744 5680528 1625952 5685816 1626144 5686160 -1621048 5686008 1621112 5686056 1625952 5685816 1626632 5680392 -1626072 5685776 1626952 5680672 1626744 5680528 1625952 5685816 -1621112 5686056 1621744 5686536 1625952 5685816 1621048 5686008 -1622296 5686800 1622472 5686920 1625952 5685816 1621744 5686536 -1622704 5687208 1625712 5685976 1625952 5685816 1622592 5687064 -1625952 5685816 1625712 5685976 1625432 5687352 1625480 5687312 -1622704 5687208 1625432 5687352 1625712 5685976 1622592 5687064 -1625952 5685816 1622472 5686920 1622592 5687064 1625712 5685976 -1622592 5687064 1622704 5687208 1625712 5685976 1622472 5686920 -1625712 5685976 1625480 5687312 1625952 5685816 1622472 5686920 -1625952 5685816 1622296 5686800 1622472 5686920 1625712 5685976 -1622472 5686920 1622592 5687064 1625712 5685976 1622296 5686800 -1625952 5685816 1622296 5686800 1625712 5685976 1625480 5687312 -1625712 5685976 1622704 5687208 1625432 5687352 1625480 5687312 -1625952 5685816 1625712 5685976 1625480 5687312 1626064 5686368 -1625712 5685976 1625432 5687352 1625480 5687312 1626064 5686368 -1625952 5685816 1625712 5685976 1626064 5686368 1626088 5686256 -1625952 5685816 1622296 5686800 1625712 5685976 1626088 5686256 -1625712 5685976 1625480 5687312 1626064 5686368 1626088 5686256 -1625480 5687312 1625568 5687272 1626064 5686368 1625712 5685976 -1625480 5687312 1625568 5687272 1625712 5685976 1625432 5687352 -1626064 5686368 1626088 5686256 1625712 5685976 1625568 5687272 -1625568 5687272 1626088 5686480 1626064 5686368 1625712 5685976 -1626064 5686368 1626088 5686256 1625712 5685976 1626088 5686480 -1625568 5687272 1626088 5686480 1625712 5685976 1625480 5687312 -1625952 5685816 1625712 5685976 1626088 5686256 1626144 5686160 -1625712 5685976 1626064 5686368 1626088 5686256 1626144 5686160 -1625952 5685816 1625712 5685976 1626144 5686160 1626072 5685776 -1626088 5686256 1626112 5686232 1626144 5686160 1625712 5685976 -1625952 5685816 1622296 5686800 1625712 5685976 1626144 5686160 -1625432 5687352 1625712 5685976 1622704 5687208 1622888 5687408 -1625712 5685976 1622592 5687064 1622704 5687208 1622888 5687408 -1625432 5687352 1625480 5687312 1625712 5685976 1622888 5687408 -1625432 5687352 1625712 5685976 1622888 5687408 1623056 5687624 -1625480 5687312 1625488 5687312 1625568 5687272 1625712 5685976 -1625568 5687272 1625656 5687248 1626088 5686480 1625712 5685976 -1625952 5685816 1621744 5686536 1622296 5686800 1625712 5685976 -1625952 5685816 1621112 5686056 1621744 5686536 1625712 5685976 -1621112 5686056 1621672 5686496 1621744 5686536 1625712 5685976 -1625952 5685816 1621112 5686056 1625712 5685976 1626144 5686160 -1622296 5686800 1622472 5686920 1625712 5685976 1621744 5686536 -1625952 5685816 1621048 5686008 1621112 5686056 1625712 5685976 -1621112 5686056 1621744 5686536 1625712 5685976 1621048 5686008 -1625952 5685816 1621048 5686008 1625712 5685976 1626144 5686160 -1625952 5685816 1626632 5680392 1621048 5686008 1625712 5685976 -1625952 5685816 1626744 5680528 1626632 5680392 1625712 5685976 -1626632 5680392 1626592 5680320 1621048 5686008 1625712 5685976 -1625952 5685816 1626632 5680392 1625712 5685976 1626144 5686160 -1621048 5686008 1621112 5686056 1625712 5685976 1626632 5680392 -1621744 5686536 1622296 5686800 1625712 5685976 1621112 5686056 -1621048 5686008 1625656 5685968 1626632 5680392 1626592 5680320 -1626632 5680392 1625656 5685968 1625712 5685976 1625952 5685816 -1626632 5680392 1625656 5685968 1625952 5685816 1626744 5680528 -1625952 5685816 1626072 5685776 1626744 5680528 1625656 5685968 -1625656 5685968 1621048 5686008 1625712 5685976 1625952 5685816 -1626632 5680392 1621048 5686008 1625656 5685968 1626744 5680528 -1625656 5685968 1625712 5685976 1625952 5685816 1626744 5680528 -1625712 5685976 1625656 5685968 1621048 5686008 1621112 5686056 -1625712 5685976 1625656 5685968 1621112 5686056 1621744 5686536 -1625712 5685976 1625952 5685816 1625656 5685968 1621744 5686536 -1621112 5686056 1621672 5686496 1621744 5686536 1625656 5685968 -1625656 5685968 1626632 5680392 1621048 5686008 1621112 5686056 -1625656 5685968 1621048 5686008 1621112 5686056 1621744 5686536 -1625712 5685976 1625656 5685968 1621744 5686536 1622296 5686800 -1625656 5685968 1621112 5686056 1621744 5686536 1622296 5686800 -1625712 5685976 1625952 5685816 1625656 5685968 1622296 5686800 -1625712 5685976 1625656 5685968 1622296 5686800 1622472 5686920 -1625712 5685976 1625952 5685816 1625656 5685968 1622472 5686920 -1625712 5685976 1625656 5685968 1622472 5686920 1622592 5687064 -1625712 5685976 1625656 5685968 1622592 5687064 1622704 5687208 -1625712 5685976 1625952 5685816 1625656 5685968 1622704 5687208 -1625712 5685976 1625656 5685968 1622704 5687208 1622888 5687408 -1625656 5685968 1622592 5687064 1622704 5687208 1622888 5687408 -1625712 5685976 1625952 5685816 1625656 5685968 1622888 5687408 -1625656 5685968 1622472 5686920 1622592 5687064 1622704 5687208 -1625656 5685968 1622296 5686800 1622472 5686920 1622592 5687064 -1625712 5685976 1625656 5685968 1622888 5687408 1625432 5687352 -1625712 5685976 1625952 5685816 1625656 5685968 1625432 5687352 -1625656 5685968 1622704 5687208 1622888 5687408 1625432 5687352 -1625712 5685976 1625656 5685968 1625432 5687352 1625480 5687312 -1625712 5685976 1625656 5685968 1625480 5687312 1625568 5687272 -1625712 5685976 1625952 5685816 1625656 5685968 1625568 5687272 -1625656 5685968 1625432 5687352 1625480 5687312 1625568 5687272 -1625712 5685976 1625656 5685968 1625568 5687272 1626088 5686480 -1625656 5685968 1625480 5687312 1625568 5687272 1626088 5686480 -1625712 5685976 1625952 5685816 1625656 5685968 1626088 5686480 -1625712 5685976 1625656 5685968 1626088 5686480 1626064 5686368 -1625712 5685976 1625952 5685816 1625656 5685968 1626064 5686368 -1625712 5685976 1625656 5685968 1626064 5686368 1626088 5686256 -1625656 5685968 1625568 5687272 1626088 5686480 1626064 5686368 -1625656 5685968 1622888 5687408 1625432 5687352 1625480 5687312 -1622888 5687408 1623056 5687624 1625432 5687352 1625656 5685968 -1625480 5687312 1625488 5687312 1625568 5687272 1625656 5685968 -1625568 5687272 1625656 5687248 1626088 5686480 1625656 5685968 -1625656 5685968 1621744 5686536 1622296 5686800 1622472 5686920 -1626632 5680392 1625560 5685928 1625656 5685968 1626744 5680528 -1625656 5685968 1625952 5685816 1626744 5680528 1625560 5685928 -1625952 5685816 1626072 5685776 1626744 5680528 1625560 5685928 -1626744 5680528 1626632 5680392 1625560 5685928 1625952 5685816 -1621048 5686008 1625560 5685928 1626632 5680392 1626592 5680320 -1625656 5685968 1625712 5685976 1625952 5685816 1625560 5685928 -1625656 5685968 1625560 5685928 1621048 5686008 1621112 5686056 -1625560 5685928 1626632 5680392 1621048 5686008 1621112 5686056 -1625560 5685928 1621112 5686056 1625656 5685968 1625952 5685816 -1626632 5680392 1621048 5686008 1625560 5685928 1626744 5680528 -1625656 5685968 1625560 5685928 1621112 5686056 1621744 5686536 -1625656 5685968 1625560 5685928 1621744 5686536 1622296 5686800 -1621112 5686056 1621672 5686496 1621744 5686536 1625560 5685928 -1625560 5685928 1621048 5686008 1621112 5686056 1621744 5686536 -1625656 5685968 1625952 5685816 1625560 5685928 1622296 5686800 -1625560 5685928 1621112 5686056 1621744 5686536 1622296 5686800 -1625656 5685968 1625560 5685928 1622296 5686800 1622472 5686920 -1625560 5685928 1621744 5686536 1622296 5686800 1622472 5686920 -1625656 5685968 1625560 5685928 1622472 5686920 1622592 5687064 -1625656 5685968 1625560 5685928 1622592 5687064 1622704 5687208 -1625656 5685968 1625560 5685928 1622704 5687208 1622888 5687408 -1625656 5685968 1625560 5685928 1622888 5687408 1625432 5687352 -1625560 5685928 1622704 5687208 1622888 5687408 1625432 5687352 -1625560 5685928 1622592 5687064 1622704 5687208 1622888 5687408 -1625560 5685928 1622472 5686920 1622592 5687064 1622704 5687208 -1625656 5685968 1625952 5685816 1625560 5685928 1625432 5687352 -1625656 5685968 1625560 5685928 1625432 5687352 1625480 5687312 -1625560 5685928 1622888 5687408 1625432 5687352 1625480 5687312 -1625656 5685968 1625560 5685928 1625480 5687312 1625568 5687272 -1625656 5685968 1625560 5685928 1625568 5687272 1626088 5686480 -1625656 5685968 1625952 5685816 1625560 5685928 1625568 5687272 -1625560 5685928 1625432 5687352 1625480 5687312 1625568 5687272 -1622888 5687408 1623056 5687624 1625432 5687352 1625560 5685928 -1625480 5687312 1625488 5687312 1625568 5687272 1625560 5685928 -1625560 5685928 1622296 5686800 1622472 5686920 1622592 5687064 -1625560 5685928 1625432 5685832 1621048 5686008 1621112 5686056 -1621048 5686008 1625432 5685832 1626632 5680392 1626592 5680320 -1625560 5685928 1625432 5685832 1621112 5686056 1621744 5686536 -1625432 5685832 1621048 5686008 1621112 5686056 1621744 5686536 -1621112 5686056 1621672 5686496 1621744 5686536 1625432 5685832 -1625560 5685928 1626632 5680392 1625432 5685832 1621744 5686536 -1626632 5680392 1625432 5685832 1625560 5685928 1626744 5680528 -1626632 5680392 1621048 5686008 1625432 5685832 1626744 5680528 -1625560 5685928 1625952 5685816 1626744 5680528 1625432 5685832 -1625560 5685928 1625656 5685968 1625952 5685816 1625432 5685832 -1625952 5685816 1626072 5685776 1626744 5680528 1625432 5685832 -1625952 5685816 1626072 5685776 1625432 5685832 1625560 5685928 -1626072 5685776 1626952 5680672 1626744 5680528 1625432 5685832 -1626072 5685776 1626952 5680672 1625432 5685832 1625952 5685816 -1626072 5685776 1626496 5685696 1626952 5680672 1625432 5685832 -1625432 5685832 1621744 5686536 1625560 5685928 1625952 5685816 -1626744 5680528 1626632 5680392 1625432 5685832 1626952 5680672 -1625432 5685832 1626632 5680392 1621048 5686008 1621112 5686056 -1625560 5685928 1625432 5685832 1621744 5686536 1622296 5686800 -1625560 5685928 1625432 5685832 1622296 5686800 1622472 5686920 -1625432 5685832 1621112 5686056 1621744 5686536 1622296 5686800 -1625560 5685928 1625952 5685816 1625432 5685832 1622472 5686920 -1625432 5685832 1621744 5686536 1622296 5686800 1622472 5686920 -1625560 5685928 1625432 5685832 1622472 5686920 1622592 5687064 -1625432 5685832 1622296 5686800 1622472 5686920 1622592 5687064 -1625560 5685928 1625432 5685832 1622592 5687064 1622704 5687208 -1625560 5685928 1625432 5685832 1622704 5687208 1622888 5687408 -1625560 5685928 1625432 5685832 1622888 5687408 1625432 5687352 -1625560 5685928 1625432 5685832 1625432 5687352 1625480 5687312 -1625432 5685832 1622888 5687408 1625432 5687352 1625480 5687312 -1625432 5685832 1622704 5687208 1622888 5687408 1625432 5687352 -1625432 5685832 1622592 5687064 1622704 5687208 1622888 5687408 -1625560 5685928 1625952 5685816 1625432 5685832 1625480 5687312 -1625560 5685928 1625432 5685832 1625480 5687312 1625568 5687272 -1622888 5687408 1623056 5687624 1625432 5687352 1625432 5685832 -1625432 5685832 1622472 5686920 1622592 5687064 1622704 5687208 -1626632 5680392 1625240 5685608 1625432 5685832 1626744 5680528 -1626632 5680392 1621048 5686008 1625240 5685608 1626744 5680528 -1625240 5685608 1621048 5686008 1625432 5685832 1626744 5680528 -1621048 5686008 1625240 5685608 1626632 5680392 1626592 5680320 -1625240 5685608 1626744 5680528 1626632 5680392 1626592 5680320 -1621048 5686008 1625432 5685832 1625240 5685608 1626592 5680320 -1625432 5685832 1626952 5680672 1626744 5680528 1625240 5685608 -1625432 5685832 1626952 5680672 1625240 5685608 1621048 5686008 -1626744 5680528 1626632 5680392 1625240 5685608 1626952 5680672 -1625432 5685832 1626072 5685776 1626952 5680672 1625240 5685608 -1625432 5685832 1625952 5685816 1626072 5685776 1625240 5685608 -1625432 5685832 1625952 5685816 1625240 5685608 1621048 5686008 -1625432 5685832 1625560 5685928 1625952 5685816 1625240 5685608 -1626072 5685776 1626496 5685696 1626952 5680672 1625240 5685608 -1626072 5685776 1626384 5685752 1626496 5685696 1625240 5685608 -1626072 5685776 1626496 5685696 1625240 5685608 1625952 5685816 -1626496 5685696 1627152 5680768 1626952 5680672 1625240 5685608 -1626496 5685696 1627152 5680768 1625240 5685608 1626072 5685776 -1626952 5680672 1626744 5680528 1625240 5685608 1627152 5680768 -1625432 5685832 1625240 5685608 1621048 5686008 1621112 5686056 -1625432 5685832 1625952 5685816 1625240 5685608 1621112 5686056 -1625240 5685608 1626592 5680320 1621048 5686008 1621112 5686056 -1625432 5685832 1625240 5685608 1621112 5686056 1621744 5686536 -1625432 5685832 1625952 5685816 1625240 5685608 1621744 5686536 -1621112 5686056 1621672 5686496 1621744 5686536 1625240 5685608 -1625432 5685832 1625240 5685608 1621744 5686536 1622296 5686800 -1625432 5685832 1625952 5685816 1625240 5685608 1622296 5686800 -1625240 5685608 1621112 5686056 1621744 5686536 1622296 5686800 -1625240 5685608 1621048 5686008 1621112 5686056 1621744 5686536 -1626496 5685696 1627248 5680800 1627152 5680768 1625240 5685608 -1625432 5685832 1625240 5685608 1622296 5686800 1622472 5686920 -1625432 5685832 1625240 5685608 1622472 5686920 1622592 5687064 -1625432 5685832 1625952 5685816 1625240 5685608 1622592 5687064 -1625240 5685608 1621744 5686536 1622296 5686800 1622472 5686920 -1625240 5685608 1622296 5686800 1622472 5686920 1622592 5687064 -1625432 5685832 1625240 5685608 1622592 5687064 1622704 5687208 -1625240 5685608 1622472 5686920 1622592 5687064 1622704 5687208 -1625432 5685832 1625952 5685816 1625240 5685608 1622704 5687208 -1625432 5685832 1625240 5685608 1622704 5687208 1622888 5687408 -1625432 5685832 1625952 5685816 1625240 5685608 1622888 5687408 -1625432 5685832 1625240 5685608 1622888 5687408 1625432 5687352 -1625432 5685832 1625240 5685608 1625432 5687352 1625480 5687312 -1625432 5685832 1625952 5685816 1625240 5685608 1625432 5687352 -1625240 5685608 1622704 5687208 1622888 5687408 1625432 5687352 -1622888 5687408 1623056 5687624 1625432 5687352 1625240 5685608 -1625432 5687352 1625432 5685832 1625240 5685608 1623056 5687624 -1622888 5687408 1623056 5687624 1625240 5685608 1622704 5687208 -1623056 5687624 1623096 5687688 1625432 5687352 1625240 5685608 -1625240 5685608 1622592 5687064 1622704 5687208 1622888 5687408 -1621048 5686008 1625240 5685608 1626592 5680320 1626576 5680264 -1625240 5685608 1625200 5685616 1621744 5686536 1622296 5686800 -1625240 5685608 1621112 5686056 1625200 5685616 1622296 5686800 -1625200 5685616 1621112 5686056 1621744 5686536 1622296 5686800 -1621744 5686536 1625200 5685616 1621112 5686056 1621672 5686496 -1625240 5685608 1625200 5685616 1622296 5686800 1622472 5686920 -1625240 5685608 1621112 5686056 1625200 5685616 1622472 5686920 -1625200 5685616 1621744 5686536 1622296 5686800 1622472 5686920 -1621112 5686056 1625200 5685616 1625240 5685608 1621048 5686008 -1625200 5685616 1622472 5686920 1625240 5685608 1621048 5686008 -1625240 5685608 1626592 5680320 1621048 5686008 1625200 5685616 -1625240 5685608 1626592 5680320 1625200 5685616 1622472 5686920 -1625240 5685608 1626632 5680392 1626592 5680320 1625200 5685616 -1625240 5685608 1626632 5680392 1625200 5685616 1622472 5686920 -1625240 5685608 1626744 5680528 1626632 5680392 1625200 5685616 -1625240 5685608 1626744 5680528 1625200 5685616 1622472 5686920 -1625240 5685608 1626952 5680672 1626744 5680528 1625200 5685616 -1626592 5680320 1621048 5686008 1625200 5685616 1626632 5680392 -1626632 5680392 1626592 5680320 1625200 5685616 1626744 5680528 -1621112 5686056 1621744 5686536 1625200 5685616 1621048 5686008 -1621048 5686008 1621112 5686056 1625200 5685616 1626592 5680320 -1625240 5685608 1625200 5685616 1622472 5686920 1622592 5687064 -1625240 5685608 1625200 5685616 1622592 5687064 1622704 5687208 -1625240 5685608 1626744 5680528 1625200 5685616 1622704 5687208 -1625200 5685616 1622296 5686800 1622472 5686920 1622592 5687064 -1625200 5685616 1622472 5686920 1622592 5687064 1622704 5687208 -1625240 5685608 1625200 5685616 1622704 5687208 1622888 5687408 -1625200 5685616 1622592 5687064 1622704 5687208 1622888 5687408 -1625240 5685608 1626744 5680528 1625200 5685616 1622888 5687408 -1625240 5685608 1625200 5685616 1622888 5687408 1623056 5687624 -1625240 5685608 1626744 5680528 1625200 5685616 1623056 5687624 -1625240 5685608 1625200 5685616 1623056 5687624 1625432 5687352 -1625240 5685608 1626744 5680528 1625200 5685616 1625432 5687352 -1625240 5685608 1625200 5685616 1625432 5687352 1625432 5685832 -1625432 5687352 1625480 5687312 1625432 5685832 1625200 5685616 -1625240 5685608 1626744 5680528 1625200 5685616 1625432 5685832 -1625200 5685616 1622888 5687408 1623056 5687624 1625432 5687352 -1625200 5685616 1623056 5687624 1625432 5687352 1625432 5685832 -1623056 5687624 1623096 5687688 1625432 5687352 1625200 5685616 -1625200 5685616 1622704 5687208 1622888 5687408 1623056 5687624 -1626592 5680320 1626576 5680264 1621048 5686008 1625200 5685616 -1622296 5686800 1625104 5685656 1625200 5685616 1621744 5686536 -1625200 5685616 1621112 5686056 1621744 5686536 1625104 5685656 -1621744 5686536 1622296 5686800 1625104 5685656 1621112 5686056 -1621112 5686056 1621672 5686496 1621744 5686536 1625104 5685656 -1622296 5686800 1622472 5686920 1625104 5685656 1621744 5686536 -1625104 5685656 1622472 5686920 1625200 5685616 1621112 5686056 -1625200 5685616 1621048 5686008 1621112 5686056 1625104 5685656 -1621112 5686056 1621744 5686536 1625104 5685656 1621048 5686008 -1625200 5685616 1621048 5686008 1625104 5685656 1622472 5686920 -1625200 5685616 1625104 5685656 1622472 5686920 1622592 5687064 -1625200 5685616 1621048 5686008 1625104 5685656 1622592 5687064 -1625104 5685656 1622296 5686800 1622472 5686920 1622592 5687064 -1625200 5685616 1626592 5680320 1621048 5686008 1625104 5685656 -1625200 5685616 1626632 5680392 1626592 5680320 1625104 5685656 -1625200 5685616 1626744 5680528 1626632 5680392 1625104 5685656 -1625200 5685616 1626632 5680392 1625104 5685656 1622592 5687064 -1621048 5686008 1621112 5686056 1625104 5685656 1626592 5680320 -1626592 5680320 1621048 5686008 1625104 5685656 1626632 5680392 -1625200 5685616 1625104 5685656 1622592 5687064 1622704 5687208 -1625200 5685616 1625104 5685656 1622704 5687208 1622888 5687408 -1625200 5685616 1626632 5680392 1625104 5685656 1622888 5687408 -1625104 5685656 1622472 5686920 1622592 5687064 1622704 5687208 -1625104 5685656 1622592 5687064 1622704 5687208 1622888 5687408 -1625200 5685616 1625104 5685656 1622888 5687408 1623056 5687624 -1625104 5685656 1622704 5687208 1622888 5687408 1623056 5687624 -1625200 5685616 1626632 5680392 1625104 5685656 1623056 5687624 -1625200 5685616 1625104 5685656 1623056 5687624 1625432 5687352 -1625200 5685616 1626632 5680392 1625104 5685656 1625432 5687352 -1625200 5685616 1625104 5685656 1625432 5687352 1625432 5685832 -1625432 5687352 1625480 5687312 1625432 5685832 1625104 5685656 -1625200 5685616 1625104 5685656 1625432 5685832 1625240 5685608 -1625200 5685616 1626632 5680392 1625104 5685656 1625432 5685832 -1625104 5685656 1623056 5687624 1625432 5687352 1625432 5685832 -1623056 5687624 1623096 5687688 1625432 5687352 1625104 5685656 -1625104 5685656 1622888 5687408 1623056 5687624 1625432 5687352 -1626592 5680320 1626576 5680264 1621048 5686008 1625104 5685656 -1625104 5685656 1624992 5685664 1621048 5686008 1621112 5686056 -1625104 5685656 1624992 5685664 1621112 5686056 1621744 5686536 -1625104 5685656 1624992 5685664 1621744 5686536 1622296 5686800 -1624992 5685664 1621112 5686056 1621744 5686536 1622296 5686800 -1621112 5686056 1621672 5686496 1621744 5686536 1624992 5685664 -1621744 5686536 1622296 5686800 1624992 5685664 1621672 5686496 -1625104 5685656 1626592 5680320 1624992 5685664 1622296 5686800 -1625104 5685656 1624992 5685664 1622296 5686800 1622472 5686920 -1624992 5685664 1621744 5686536 1622296 5686800 1622472 5686920 -1625104 5685656 1626592 5680320 1624992 5685664 1622472 5686920 -1624992 5685664 1626592 5680320 1621048 5686008 1621112 5686056 -1624992 5685664 1621048 5686008 1621112 5686056 1621672 5686496 -1625104 5685656 1624992 5685664 1622472 5686920 1622592 5687064 -1625104 5685656 1626592 5680320 1624992 5685664 1622592 5687064 -1624992 5685664 1622296 5686800 1622472 5686920 1622592 5687064 -1625104 5685656 1624992 5685664 1622592 5687064 1622704 5687208 -1625104 5685656 1626592 5680320 1624992 5685664 1622704 5687208 -1624992 5685664 1622472 5686920 1622592 5687064 1622704 5687208 -1626592 5680320 1624992 5685664 1625104 5685656 1626632 5680392 -1626592 5680320 1621048 5686008 1624992 5685664 1626632 5680392 -1625104 5685656 1625200 5685616 1626632 5680392 1624992 5685664 -1625200 5685616 1626744 5680528 1626632 5680392 1624992 5685664 -1625200 5685616 1625240 5685608 1626744 5680528 1624992 5685664 -1625200 5685616 1626744 5680528 1624992 5685664 1625104 5685656 -1624992 5685664 1622704 5687208 1625104 5685656 1625200 5685616 -1626632 5680392 1626592 5680320 1624992 5685664 1626744 5680528 -1621112 5686056 1621424 5686384 1621672 5686496 1624992 5685664 -1625104 5685656 1624992 5685664 1622704 5687208 1622888 5687408 -1625104 5685656 1624992 5685664 1622888 5687408 1623056 5687624 -1625104 5685656 1625200 5685616 1624992 5685664 1623056 5687624 -1624992 5685664 1622592 5687064 1622704 5687208 1622888 5687408 -1624992 5685664 1622704 5687208 1622888 5687408 1623056 5687624 -1625104 5685656 1624992 5685664 1623056 5687624 1625432 5687352 -1624992 5685664 1622888 5687408 1623056 5687624 1625432 5687352 -1625104 5685656 1625200 5685616 1624992 5685664 1625432 5687352 -1625104 5685656 1624992 5685664 1625432 5687352 1625432 5685832 -1625432 5687352 1625480 5687312 1625432 5685832 1624992 5685664 -1625480 5687312 1625560 5685928 1625432 5685832 1624992 5685664 -1625104 5685656 1625200 5685616 1624992 5685664 1625432 5685832 -1625432 5685832 1625104 5685656 1624992 5685664 1625480 5687312 -1625104 5685656 1624992 5685664 1625432 5685832 1625200 5685616 -1623056 5687624 1623096 5687688 1625432 5687352 1624992 5685664 -1624992 5685664 1623056 5687624 1625432 5687352 1625480 5687312 -1621048 5686008 1624992 5685664 1626592 5680320 1626576 5680264 -1626592 5680320 1624976 5685640 1624992 5685664 1626632 5680392 -1624976 5685640 1621048 5686008 1624992 5685664 1626632 5680392 -1624992 5685664 1624976 5685640 1621048 5686008 1621112 5686056 -1624992 5685664 1626632 5680392 1624976 5685640 1621112 5686056 -1624976 5685640 1626592 5680320 1621048 5686008 1621112 5686056 -1626592 5680320 1621048 5686008 1624976 5685640 1626632 5680392 -1624992 5685664 1624976 5685640 1621112 5686056 1621672 5686496 -1624992 5685664 1626632 5680392 1624976 5685640 1621672 5686496 -1624992 5685664 1624976 5685640 1621672 5686496 1621744 5686536 -1624992 5685664 1626632 5680392 1624976 5685640 1621744 5686536 -1624992 5685664 1624976 5685640 1621744 5686536 1622296 5686800 -1624992 5685664 1626632 5680392 1624976 5685640 1622296 5686800 -1624992 5685664 1624976 5685640 1622296 5686800 1622472 5686920 -1624992 5685664 1626632 5680392 1624976 5685640 1622472 5686920 -1624976 5685640 1621744 5686536 1622296 5686800 1622472 5686920 -1624976 5685640 1621672 5686496 1621744 5686536 1622296 5686800 -1624992 5685664 1624976 5685640 1622472 5686920 1622592 5687064 -1624992 5685664 1626632 5680392 1624976 5685640 1622592 5687064 -1624976 5685640 1622296 5686800 1622472 5686920 1622592 5687064 -1624976 5685640 1621048 5686008 1621112 5686056 1621672 5686496 -1624976 5685640 1621112 5686056 1621672 5686496 1621744 5686536 -1624992 5685664 1624976 5685640 1622592 5687064 1622704 5687208 -1624992 5685664 1626632 5680392 1624976 5685640 1622704 5687208 -1624976 5685640 1622472 5686920 1622592 5687064 1622704 5687208 -1624992 5685664 1624976 5685640 1622704 5687208 1622888 5687408 -1624992 5685664 1626632 5680392 1624976 5685640 1622888 5687408 -1624976 5685640 1622592 5687064 1622704 5687208 1622888 5687408 -1624992 5685664 1626744 5680528 1626632 5680392 1624976 5685640 -1624992 5685664 1626744 5680528 1624976 5685640 1622888 5687408 -1626632 5680392 1626592 5680320 1624976 5685640 1626744 5680528 -1624992 5685664 1625200 5685616 1626744 5680528 1624976 5685640 -1624992 5685664 1625200 5685616 1624976 5685640 1622888 5687408 -1625200 5685616 1625240 5685608 1626744 5680528 1624976 5685640 -1625240 5685608 1626952 5680672 1626744 5680528 1624976 5685640 -1624992 5685664 1625104 5685656 1625200 5685616 1624976 5685640 -1624992 5685664 1625104 5685656 1624976 5685640 1622888 5687408 -1625200 5685616 1625240 5685608 1624976 5685640 1625104 5685656 -1626744 5680528 1626632 5680392 1624976 5685640 1625240 5685608 -1621112 5686056 1621424 5686384 1621672 5686496 1624976 5685640 -1624992 5685664 1624976 5685640 1622888 5687408 1623056 5687624 -1621048 5686008 1624976 5685640 1626592 5680320 1626576 5680264 -1624976 5685640 1624936 5685632 1621048 5686008 1621112 5686056 -1624976 5685640 1624936 5685632 1621112 5686056 1621672 5686496 -1624936 5685632 1621048 5686008 1621112 5686056 1621672 5686496 -1624976 5685640 1626592 5680320 1624936 5685632 1621672 5686496 -1626592 5680320 1624936 5685632 1624976 5685640 1626632 5680392 -1626592 5680320 1621048 5686008 1624936 5685632 1626632 5680392 -1624976 5685640 1626744 5680528 1626632 5680392 1624936 5685632 -1624936 5685632 1621672 5686496 1624976 5685640 1626744 5680528 -1626632 5680392 1626592 5680320 1624936 5685632 1626744 5680528 -1624936 5685632 1626592 5680320 1621048 5686008 1621112 5686056 -1624976 5685640 1624936 5685632 1621672 5686496 1621744 5686536 -1624976 5685640 1624936 5685632 1621744 5686536 1622296 5686800 -1624976 5685640 1624936 5685632 1622296 5686800 1622472 5686920 -1624976 5685640 1624936 5685632 1622472 5686920 1622592 5687064 -1624936 5685632 1622296 5686800 1622472 5686920 1622592 5687064 -1624936 5685632 1621744 5686536 1622296 5686800 1622472 5686920 -1624976 5685640 1624936 5685632 1622592 5687064 1622704 5687208 -1624936 5685632 1622472 5686920 1622592 5687064 1622704 5687208 -1624936 5685632 1621112 5686056 1621672 5686496 1621744 5686536 -1624976 5685640 1626744 5680528 1624936 5685632 1622704 5687208 -1624936 5685632 1621672 5686496 1621744 5686536 1622296 5686800 -1624976 5685640 1624936 5685632 1622704 5687208 1622888 5687408 -1624936 5685632 1622592 5687064 1622704 5687208 1622888 5687408 -1624976 5685640 1626744 5680528 1624936 5685632 1622888 5687408 -1624976 5685640 1624936 5685632 1622888 5687408 1624992 5685664 -1624976 5685640 1626744 5680528 1624936 5685632 1624992 5685664 -1624936 5685632 1622704 5687208 1622888 5687408 1624992 5685664 -1624976 5685640 1625240 5685608 1626744 5680528 1624936 5685632 -1626744 5680528 1626632 5680392 1624936 5685632 1625240 5685608 -1624976 5685640 1625200 5685616 1625240 5685608 1624936 5685632 -1625240 5685608 1626952 5680672 1626744 5680528 1624936 5685632 -1624976 5685640 1625104 5685656 1625200 5685616 1624936 5685632 -1624976 5685640 1625200 5685616 1624936 5685632 1624992 5685664 -1625240 5685608 1626744 5680528 1624936 5685632 1625200 5685616 -1621112 5686056 1621424 5686384 1621672 5686496 1624936 5685632 -1622888 5687408 1623056 5687624 1624992 5685664 1624936 5685632 -1623056 5687624 1625432 5687352 1624992 5685664 1624936 5685632 -1622888 5687408 1623056 5687624 1624936 5685632 1622704 5687208 -1624992 5685664 1624976 5685640 1624936 5685632 1625432 5687352 -1623056 5687624 1625432 5687352 1624936 5685632 1622888 5687408 -1623056 5687624 1623096 5687688 1625432 5687352 1624936 5685632 -1625432 5687352 1625480 5687312 1624992 5685664 1624936 5685632 -1621048 5686008 1624936 5685632 1626592 5680320 1626576 5680264 -1626592 5680320 1624920 5685608 1624936 5685632 1626632 5680392 -1624920 5685608 1621048 5686008 1624936 5685632 1626632 5680392 -1626592 5680320 1621048 5686008 1624920 5685608 1626632 5680392 -1624936 5685632 1626744 5680528 1626632 5680392 1624920 5685608 -1626632 5680392 1626592 5680320 1624920 5685608 1626744 5680528 -1624936 5685632 1626744 5680528 1624920 5685608 1621048 5686008 -1624936 5685632 1625240 5685608 1626744 5680528 1624920 5685608 -1624936 5685632 1625240 5685608 1624920 5685608 1621048 5686008 -1625240 5685608 1626952 5680672 1626744 5680528 1624920 5685608 -1626744 5680528 1626632 5680392 1624920 5685608 1625240 5685608 -1624936 5685632 1624920 5685608 1621048 5686008 1621112 5686056 -1624936 5685632 1624920 5685608 1621112 5686056 1621672 5686496 -1624936 5685632 1625240 5685608 1624920 5685608 1621672 5686496 -1624920 5685608 1626592 5680320 1621048 5686008 1621112 5686056 -1624920 5685608 1621048 5686008 1621112 5686056 1621672 5686496 -1624936 5685632 1624920 5685608 1621672 5686496 1621744 5686536 -1624920 5685608 1621112 5686056 1621672 5686496 1621744 5686536 -1624936 5685632 1625240 5685608 1624920 5685608 1621744 5686536 -1624936 5685632 1624920 5685608 1621744 5686536 1622296 5686800 -1624936 5685632 1625240 5685608 1624920 5685608 1622296 5686800 -1624936 5685632 1624920 5685608 1622296 5686800 1622472 5686920 -1624936 5685632 1625240 5685608 1624920 5685608 1622472 5686920 -1624936 5685632 1624920 5685608 1622472 5686920 1622592 5687064 -1624936 5685632 1625240 5685608 1624920 5685608 1622592 5687064 -1624936 5685632 1624920 5685608 1622592 5687064 1622704 5687208 -1624936 5685632 1625240 5685608 1624920 5685608 1622704 5687208 -1624920 5685608 1622472 5686920 1622592 5687064 1622704 5687208 -1624920 5685608 1622296 5686800 1622472 5686920 1622592 5687064 -1624936 5685632 1624920 5685608 1622704 5687208 1622888 5687408 -1624920 5685608 1621672 5686496 1621744 5686536 1622296 5686800 -1624920 5685608 1621744 5686536 1622296 5686800 1622472 5686920 -1624936 5685632 1625200 5685616 1625240 5685608 1624920 5685608 -1624936 5685632 1625200 5685616 1624920 5685608 1622704 5687208 -1625240 5685608 1626744 5680528 1624920 5685608 1625200 5685616 -1624936 5685632 1624976 5685640 1625200 5685616 1624920 5685608 -1624936 5685632 1624976 5685640 1624920 5685608 1622704 5687208 -1624976 5685640 1625104 5685656 1625200 5685616 1624920 5685608 -1625200 5685616 1625240 5685608 1624920 5685608 1624976 5685640 -1621112 5686056 1621424 5686384 1621672 5686496 1624920 5685608 -1621048 5686008 1624920 5685608 1626592 5680320 1626576 5680264 -1624920 5685608 1624912 5685464 1621048 5686008 1621112 5686056 -1624920 5685608 1624912 5685464 1621112 5686056 1621672 5686496 -1624920 5685608 1624912 5685464 1621672 5686496 1621744 5686536 -1624912 5685464 1621048 5686008 1621112 5686056 1621672 5686496 -1624912 5685464 1621112 5686056 1621672 5686496 1621744 5686536 -1626592 5680320 1624912 5685464 1624920 5685608 1626632 5680392 -1624920 5685608 1626744 5680528 1626632 5680392 1624912 5685464 -1626592 5680320 1621048 5686008 1624912 5685464 1626632 5680392 -1626632 5680392 1626592 5680320 1624912 5685464 1626744 5680528 -1624920 5685608 1626744 5680528 1624912 5685464 1621744 5686536 -1624912 5685464 1626592 5680320 1621048 5686008 1621112 5686056 -1624920 5685608 1624912 5685464 1621744 5686536 1622296 5686800 -1624912 5685464 1621672 5686496 1621744 5686536 1622296 5686800 -1624920 5685608 1626744 5680528 1624912 5685464 1622296 5686800 -1624920 5685608 1625240 5685608 1626744 5680528 1624912 5685464 -1626744 5680528 1626632 5680392 1624912 5685464 1625240 5685608 -1624920 5685608 1625200 5685616 1625240 5685608 1624912 5685464 -1625240 5685608 1626952 5680672 1626744 5680528 1624912 5685464 -1626744 5680528 1626632 5680392 1624912 5685464 1626952 5680672 -1624920 5685608 1625200 5685616 1624912 5685464 1622296 5686800 -1625240 5685608 1626952 5680672 1624912 5685464 1625200 5685616 -1624920 5685608 1624912 5685464 1622296 5686800 1622472 5686920 -1624920 5685608 1625200 5685616 1624912 5685464 1622472 5686920 -1624920 5685608 1624912 5685464 1622472 5686920 1622592 5687064 -1624912 5685464 1621744 5686536 1622296 5686800 1622472 5686920 -1625240 5685608 1627152 5680768 1626952 5680672 1624912 5685464 -1626952 5680672 1626744 5680528 1624912 5685464 1627152 5680768 -1625240 5685608 1627152 5680768 1624912 5685464 1625200 5685616 -1625240 5685608 1626496 5685696 1627152 5680768 1624912 5685464 -1625240 5685608 1626072 5685776 1626496 5685696 1624912 5685464 -1625240 5685608 1626496 5685696 1624912 5685464 1625200 5685616 -1627152 5680768 1626952 5680672 1624912 5685464 1626496 5685696 -1624920 5685608 1624976 5685640 1625200 5685616 1624912 5685464 -1625200 5685616 1625240 5685608 1624912 5685464 1624976 5685640 -1624920 5685608 1624936 5685632 1624976 5685640 1624912 5685464 -1624920 5685608 1624976 5685640 1624912 5685464 1622472 5686920 -1624976 5685640 1625104 5685656 1625200 5685616 1624912 5685464 -1625200 5685616 1625240 5685608 1624912 5685464 1625104 5685656 -1624976 5685640 1624992 5685664 1625104 5685656 1624912 5685464 -1624976 5685640 1625104 5685656 1624912 5685464 1624920 5685608 -1626496 5685696 1627248 5680800 1627152 5680768 1624912 5685464 -1621112 5686056 1621424 5686384 1621672 5686496 1624912 5685464 -1621048 5686008 1624912 5685464 1626592 5680320 1626576 5680264 -1626496 5685696 1624952 5685472 1625240 5685608 1626072 5685776 -1625240 5685608 1624952 5685472 1624912 5685464 1625200 5685616 -1624952 5685472 1626496 5685696 1624912 5685464 1625200 5685616 -1624912 5685464 1625104 5685656 1625200 5685616 1624952 5685472 -1624912 5685464 1625104 5685656 1624952 5685472 1626496 5685696 -1624912 5685464 1624976 5685640 1625104 5685656 1624952 5685472 -1624912 5685464 1624976 5685640 1624952 5685472 1626496 5685696 -1625104 5685656 1625200 5685616 1624952 5685472 1624976 5685640 -1624976 5685640 1624992 5685664 1625104 5685656 1624952 5685472 -1625200 5685616 1625240 5685608 1624952 5685472 1625104 5685656 -1624912 5685464 1624952 5685472 1626496 5685696 1627152 5680768 -1624912 5685464 1624976 5685640 1624952 5685472 1627152 5680768 -1624912 5685464 1624952 5685472 1627152 5680768 1626952 5680672 -1624912 5685464 1624976 5685640 1624952 5685472 1626952 5680672 -1624912 5685464 1624952 5685472 1626952 5680672 1626744 5680528 -1624952 5685472 1626496 5685696 1627152 5680768 1626952 5680672 -1624912 5685464 1624920 5685608 1624976 5685640 1624952 5685472 -1624912 5685464 1624920 5685608 1624952 5685472 1626952 5680672 -1624920 5685608 1624936 5685632 1624976 5685640 1624952 5685472 -1624976 5685640 1625104 5685656 1624952 5685472 1624920 5685608 -1624952 5685472 1625240 5685608 1626496 5685696 1627152 5680768 -1625240 5685608 1626496 5685696 1624952 5685472 1625200 5685616 -1626496 5685696 1627248 5680800 1627152 5680768 1624952 5685472 -1624952 5685472 1624992 5685440 1627152 5680768 1626952 5680672 -1624992 5685440 1626496 5685696 1627152 5680768 1626952 5680672 -1624952 5685472 1624992 5685440 1626952 5680672 1624912 5685464 -1626952 5680672 1626744 5680528 1624912 5685464 1624992 5685440 -1626744 5680528 1626632 5680392 1624912 5685464 1624992 5685440 -1626632 5680392 1626592 5680320 1624912 5685464 1624992 5685440 -1626744 5680528 1626632 5680392 1624992 5685440 1626952 5680672 -1624992 5685440 1627152 5680768 1626952 5680672 1626744 5680528 -1624912 5685464 1624952 5685472 1624992 5685440 1626632 5680392 -1626496 5685696 1624992 5685440 1624952 5685472 1625240 5685608 -1626496 5685696 1627152 5680768 1624992 5685440 1625240 5685608 -1626496 5685696 1624992 5685440 1625240 5685608 1626072 5685776 -1626496 5685696 1627152 5680768 1624992 5685440 1626072 5685776 -1626496 5685696 1624992 5685440 1626072 5685776 1626384 5685752 -1625240 5685608 1625952 5685816 1626072 5685776 1624992 5685440 -1624992 5685440 1624952 5685472 1625240 5685608 1626072 5685776 -1624952 5685472 1625240 5685608 1624992 5685440 1624912 5685464 -1624952 5685472 1625200 5685616 1625240 5685608 1624992 5685440 -1624952 5685472 1625104 5685656 1625200 5685616 1624992 5685440 -1624952 5685472 1624976 5685640 1625104 5685656 1624992 5685440 -1625200 5685616 1625240 5685608 1624992 5685440 1625104 5685656 -1624976 5685640 1624992 5685664 1625104 5685656 1624992 5685440 -1624952 5685472 1624920 5685608 1624976 5685640 1624992 5685440 -1625104 5685656 1625200 5685616 1624992 5685440 1624976 5685640 -1625240 5685608 1626072 5685776 1624992 5685440 1625200 5685616 -1624952 5685472 1624976 5685640 1624992 5685440 1624912 5685464 -1627152 5680768 1624992 5685440 1626496 5685696 1627248 5680800 -1624992 5685440 1625120 5685400 1627152 5680768 1626952 5680672 -1624992 5685440 1626496 5685696 1625120 5685400 1626952 5680672 -1625120 5685400 1626496 5685696 1627152 5680768 1626952 5680672 -1626496 5685696 1625120 5685400 1624992 5685440 1626072 5685776 -1625120 5685400 1626952 5680672 1624992 5685440 1626072 5685776 -1624992 5685440 1625240 5685608 1626072 5685776 1625120 5685400 -1624992 5685440 1625240 5685608 1625120 5685400 1626952 5680672 -1626496 5685696 1625120 5685400 1626072 5685776 1626384 5685752 -1625240 5685608 1625952 5685816 1626072 5685776 1625120 5685400 -1625240 5685608 1625432 5685832 1625952 5685816 1625120 5685400 -1625240 5685608 1625952 5685816 1625120 5685400 1624992 5685440 -1624992 5685440 1625120 5685400 1626952 5680672 1626744 5680528 -1624992 5685440 1625240 5685608 1625120 5685400 1626744 5680528 -1625120 5685400 1627152 5680768 1626952 5680672 1626744 5680528 -1624992 5685440 1625120 5685400 1626744 5680528 1626632 5680392 -1624992 5685440 1625120 5685400 1626632 5680392 1624912 5685464 -1624992 5685440 1625240 5685608 1625120 5685400 1626632 5680392 -1625120 5685400 1626952 5680672 1626744 5680528 1626632 5680392 -1626496 5685696 1627152 5680768 1625120 5685400 1626072 5685776 -1626072 5685776 1626496 5685696 1625120 5685400 1625952 5685816 -1624992 5685440 1625200 5685616 1625240 5685608 1625120 5685400 -1624992 5685440 1625200 5685616 1625120 5685400 1626632 5680392 -1624992 5685440 1625104 5685656 1625200 5685616 1625120 5685400 -1624992 5685440 1625104 5685656 1625120 5685400 1626632 5680392 -1625240 5685608 1625952 5685816 1625120 5685400 1625200 5685616 -1624992 5685440 1624976 5685640 1625104 5685656 1625120 5685400 -1625200 5685616 1625240 5685608 1625120 5685400 1625104 5685656 -1627152 5680768 1625120 5685400 1626496 5685696 1627248 5680800 -1625120 5685400 1625296 5685392 1627152 5680768 1626952 5680672 -1625120 5685400 1625296 5685392 1626952 5680672 1626744 5680528 -1625296 5685392 1627152 5680768 1626952 5680672 1626744 5680528 -1625296 5685392 1626496 5685696 1627152 5680768 1626952 5680672 -1625120 5685400 1625296 5685392 1626744 5680528 1626632 5680392 -1626496 5685696 1625296 5685392 1625120 5685400 1626072 5685776 -1626496 5685696 1625296 5685392 1626072 5685776 1626384 5685752 -1626496 5685696 1627152 5680768 1625296 5685392 1626072 5685776 -1625120 5685400 1625952 5685816 1626072 5685776 1625296 5685392 -1625120 5685400 1625240 5685608 1625952 5685816 1625296 5685392 -1625240 5685608 1625432 5685832 1625952 5685816 1625296 5685392 -1625432 5685832 1625560 5685928 1625952 5685816 1625296 5685392 -1625120 5685400 1625200 5685616 1625240 5685608 1625296 5685392 -1625240 5685608 1625432 5685832 1625296 5685392 1625120 5685400 -1626072 5685776 1626496 5685696 1625296 5685392 1625952 5685816 -1625952 5685816 1626072 5685776 1625296 5685392 1625432 5685832 -1625120 5685400 1625240 5685608 1625296 5685392 1626744 5680528 -1627152 5680768 1625296 5685392 1626496 5685696 1627248 5680800 -1627152 5680768 1626952 5680672 1625296 5685392 1627248 5680800 -1625296 5685392 1626072 5685776 1626496 5685696 1627248 5680800 -1626496 5685696 1627944 5680984 1627248 5680800 1625296 5685392 -1626496 5685696 1625528 5685408 1625296 5685392 1626072 5685776 -1626496 5685696 1627248 5680800 1625528 5685408 1626072 5685776 -1626496 5685696 1625528 5685408 1626072 5685776 1626384 5685752 -1625528 5685408 1627248 5680800 1625296 5685392 1626072 5685776 -1627248 5680800 1625528 5685408 1626496 5685696 1627944 5680984 -1625296 5685392 1625952 5685816 1626072 5685776 1625528 5685408 -1626072 5685776 1626496 5685696 1625528 5685408 1625952 5685816 -1625296 5685392 1625952 5685816 1625528 5685408 1627248 5680800 -1625296 5685392 1625432 5685832 1625952 5685816 1625528 5685408 -1625296 5685392 1625240 5685608 1625432 5685832 1625528 5685408 -1625432 5685832 1625560 5685928 1625952 5685816 1625528 5685408 -1625560 5685928 1625656 5685968 1625952 5685816 1625528 5685408 -1625296 5685392 1625240 5685608 1625528 5685408 1627248 5680800 -1625296 5685392 1625120 5685400 1625240 5685608 1625528 5685408 -1625952 5685816 1626072 5685776 1625528 5685408 1625560 5685928 -1625432 5685832 1625560 5685928 1625528 5685408 1625240 5685608 -1625296 5685392 1625528 5685408 1627248 5680800 1627152 5680768 -1625528 5685408 1626496 5685696 1627248 5680800 1627152 5680768 -1625296 5685392 1625528 5685408 1627152 5680768 1626952 5680672 -1625296 5685392 1625528 5685408 1626952 5680672 1626744 5680528 -1625296 5685392 1625240 5685608 1625528 5685408 1626952 5680672 -1625528 5685408 1627248 5680800 1627152 5680768 1626952 5680672 -1625528 5685408 1626064 5685480 1627248 5680800 1627152 5680768 -1626496 5685696 1626064 5685480 1625528 5685408 1626072 5685776 -1625528 5685408 1625952 5685816 1626072 5685776 1626064 5685480 -1625528 5685408 1625952 5685816 1626064 5685480 1627152 5680768 -1626064 5685480 1626496 5685696 1627248 5680800 1627152 5680768 -1626072 5685776 1626496 5685696 1626064 5685480 1625952 5685816 -1626496 5685696 1626064 5685480 1626072 5685776 1626384 5685752 -1626064 5685480 1625952 5685816 1626072 5685776 1626384 5685752 -1626496 5685696 1627248 5680800 1626064 5685480 1626384 5685752 -1626496 5685696 1626064 5685480 1626384 5685752 1626504 5685728 -1627248 5680800 1626064 5685480 1626496 5685696 1627944 5680984 -1626496 5685696 1626912 5685760 1627944 5680984 1626064 5685480 -1627248 5680800 1626064 5685480 1627944 5680984 1627752 5680904 -1627248 5680800 1627152 5680768 1626064 5685480 1627944 5680984 -1626064 5685480 1626384 5685752 1626496 5685696 1626912 5685760 -1626496 5685696 1626784 5685776 1626912 5685760 1626064 5685480 -1627944 5680984 1627248 5680800 1626064 5685480 1626912 5685760 -1625528 5685408 1625560 5685928 1625952 5685816 1626064 5685480 -1626912 5685760 1627048 5685800 1627944 5680984 1626064 5685480 -1625528 5685408 1626064 5685480 1627152 5680768 1626952 5680672 -1626912 5685760 1626216 5685512 1626064 5685480 1626496 5685696 -1626912 5685760 1627944 5680984 1626216 5685512 1626496 5685696 -1626064 5685480 1626384 5685752 1626496 5685696 1626216 5685512 -1626496 5685696 1626912 5685760 1626216 5685512 1626384 5685752 -1626064 5685480 1626072 5685776 1626384 5685752 1626216 5685512 -1626064 5685480 1625952 5685816 1626072 5685776 1626216 5685512 -1626384 5685752 1626496 5685696 1626216 5685512 1626072 5685776 -1626216 5685512 1627944 5680984 1626064 5685480 1626072 5685776 -1626384 5685752 1626504 5685728 1626496 5685696 1626216 5685512 -1626912 5685760 1626216 5685512 1626496 5685696 1626784 5685776 -1626064 5685480 1626216 5685512 1627944 5680984 1627248 5680800 -1627944 5680984 1627752 5680904 1627248 5680800 1626216 5685512 -1626064 5685480 1626216 5685512 1627248 5680800 1627152 5680768 -1626064 5685480 1626072 5685776 1626216 5685512 1627248 5680800 -1626216 5685512 1626912 5685760 1627944 5680984 1627248 5680800 -1627944 5680984 1626216 5685512 1626912 5685760 1627048 5685800 -1631080 5689008 1630088 5686120 1628144 5680632 1628112 5680824 -1628144 5680632 1628112 5680744 1628112 5680824 1630088 5686120 -1631080 5689008 1630088 5686120 1628112 5680824 1629096 5687008 -1628112 5680824 1628096 5680872 1629096 5687008 1630088 5686120 -1629096 5687008 1631080 5689008 1630088 5686120 1628096 5680872 -1630088 5686120 1631152 5689072 1628144 5680632 1628112 5680824 -1630088 5686120 1628144 5680632 1628112 5680824 1628096 5680872 -1631080 5689008 1630088 5686120 1629096 5687008 1630904 5688944 -1631080 5689008 1630088 5686120 1630904 5688944 1630992 5688984 -1630088 5686120 1628096 5680872 1629096 5687008 1630904 5688944 -1631080 5689008 1631152 5689072 1630088 5686120 1630904 5688944 -1628096 5680872 1628992 5686936 1629096 5687008 1630088 5686120 -1628992 5686936 1629064 5686992 1629096 5687008 1630088 5686120 -1629096 5687008 1630904 5688944 1630088 5686120 1628992 5686936 -1628096 5680872 1628992 5686936 1630088 5686120 1628112 5680824 -1628096 5680872 1628016 5680960 1628992 5686936 1630088 5686120 -1628016 5680960 1627824 5686272 1628992 5686936 1630088 5686120 -1627824 5686272 1628464 5686776 1628992 5686936 1630088 5686120 -1627824 5686272 1628464 5686776 1630088 5686120 1628016 5680960 -1627824 5686272 1628088 5686560 1628464 5686776 1630088 5686120 -1627824 5686272 1628088 5686560 1630088 5686120 1628016 5680960 -1628088 5686560 1628312 5686720 1628464 5686776 1630088 5686120 -1628464 5686776 1628992 5686936 1630088 5686120 1628088 5686560 -1627824 5686272 1627904 5686384 1628088 5686560 1630088 5686120 -1628096 5680872 1628016 5680960 1630088 5686120 1628112 5680824 -1628016 5680960 1627824 5686272 1630088 5686120 1628096 5680872 -1628016 5680960 1627280 5685920 1627824 5686272 1630088 5686120 -1627824 5686272 1628088 5686560 1630088 5686120 1627280 5685920 -1628016 5680960 1627280 5685920 1630088 5686120 1628096 5680872 -1628016 5680960 1627944 5680984 1627280 5685920 1630088 5686120 -1628016 5680960 1627944 5680984 1630088 5686120 1628096 5680872 -1627944 5680984 1627048 5685800 1627280 5685920 1630088 5686120 -1627280 5685920 1627824 5686272 1630088 5686120 1627944 5680984 -1627280 5685920 1627672 5686200 1627824 5686272 1630088 5686120 -1628992 5686936 1629096 5687008 1630088 5686120 1628464 5686776 -1628144 5680632 1630088 5686120 1631152 5689072 1631216 5689136 -1628144 5680632 1628112 5680824 1630088 5686120 1631216 5689136 -1630088 5686120 1631080 5689008 1631152 5689072 1631216 5689136 -1628144 5680632 1630088 5686120 1631216 5689136 1663880 5646248 -1628144 5680632 1630088 5686120 1663880 5646248 1628072 5680544 -1631216 5689136 1663944 5646256 1663880 5646248 1630088 5686120 -1628144 5680632 1628112 5680824 1630088 5686120 1663880 5646248 -1630088 5686120 1631152 5689072 1631216 5689136 1663880 5646248 -1629096 5687008 1630816 5688920 1630904 5688944 1630088 5686120 -1629096 5687008 1630816 5688920 1630088 5686120 1628992 5686936 -1630904 5688944 1631080 5689008 1630088 5686120 1630816 5688920 -1629096 5687008 1630728 5688896 1630816 5688920 1630088 5686120 -1629096 5687008 1630728 5688896 1630088 5686120 1628992 5686936 -1629096 5687008 1630632 5688872 1630728 5688896 1630088 5686120 -1629096 5687008 1630632 5688872 1630088 5686120 1628992 5686936 -1629096 5687008 1630544 5688856 1630632 5688872 1630088 5686120 -1629096 5687008 1630504 5688864 1630544 5688856 1630088 5686120 -1629096 5687008 1630544 5688856 1630088 5686120 1628992 5686936 -1630728 5688896 1630816 5688920 1630088 5686120 1630632 5688872 -1630632 5688872 1630728 5688896 1630088 5686120 1630544 5688856 -1630816 5688920 1630904 5688944 1630088 5686120 1630728 5688896 -1663880 5646248 1630152 5686160 1631216 5689136 1663944 5646256 -1630088 5686120 1630152 5686160 1663880 5646248 1628144 5680632 -1663880 5646248 1628072 5680544 1628144 5680632 1630152 5686160 -1630088 5686120 1630152 5686160 1628144 5680632 1628112 5680824 -1628144 5680632 1628112 5680744 1628112 5680824 1630152 5686160 -1630088 5686120 1630152 5686160 1628112 5680824 1628096 5680872 -1630088 5686120 1631216 5689136 1630152 5686160 1628112 5680824 -1630152 5686160 1631216 5689136 1663880 5646248 1628144 5680632 -1630152 5686160 1663880 5646248 1628144 5680632 1628112 5680824 -1631216 5689136 1630152 5686160 1630088 5686120 1631152 5689072 -1631216 5689136 1663880 5646248 1630152 5686160 1631152 5689072 -1630088 5686120 1631080 5689008 1631152 5689072 1630152 5686160 -1630088 5686120 1630904 5688944 1631080 5689008 1630152 5686160 -1630904 5688944 1630992 5688984 1631080 5689008 1630152 5686160 -1631080 5689008 1631152 5689072 1630152 5686160 1630904 5688944 -1630088 5686120 1630816 5688920 1630904 5688944 1630152 5686160 -1630904 5688944 1631080 5689008 1630152 5686160 1630816 5688920 -1630152 5686160 1628112 5680824 1630088 5686120 1630816 5688920 -1631152 5689072 1631216 5689136 1630152 5686160 1631080 5689008 -1630088 5686120 1630728 5688896 1630816 5688920 1630152 5686160 -1630816 5688920 1630904 5688944 1630152 5686160 1630728 5688896 -1630088 5686120 1630728 5688896 1630152 5686160 1628112 5680824 -1630088 5686120 1630632 5688872 1630728 5688896 1630152 5686160 -1630088 5686120 1630632 5688872 1630152 5686160 1628112 5680824 -1630088 5686120 1630544 5688856 1630632 5688872 1630152 5686160 -1630088 5686120 1630544 5688856 1630152 5686160 1628112 5680824 -1630088 5686120 1629096 5687008 1630544 5688856 1630152 5686160 -1629096 5687008 1630504 5688864 1630544 5688856 1630152 5686160 -1630088 5686120 1628992 5686936 1629096 5687008 1630152 5686160 -1630088 5686120 1629096 5687008 1630152 5686160 1628112 5680824 -1630632 5688872 1630728 5688896 1630152 5686160 1630544 5688856 -1630544 5688856 1630632 5688872 1630152 5686160 1629096 5687008 -1630728 5688896 1630816 5688920 1630152 5686160 1630632 5688872 -1631216 5689136 1630256 5686264 1630152 5686160 1631152 5689072 -1630256 5686264 1663880 5646248 1630152 5686160 1631152 5689072 -1663880 5646248 1630256 5686264 1631216 5689136 1663944 5646256 -1663880 5646248 1630152 5686160 1630256 5686264 1663944 5646256 -1631216 5689136 1631208 5689208 1663944 5646256 1630256 5686264 -1630152 5686160 1630256 5686264 1663880 5646248 1628144 5680632 -1663880 5646248 1628072 5680544 1628144 5680632 1630256 5686264 -1630152 5686160 1631152 5689072 1630256 5686264 1628144 5680632 -1630256 5686264 1663944 5646256 1663880 5646248 1628144 5680632 -1630152 5686160 1630256 5686264 1628144 5680632 1628112 5680824 -1630152 5686160 1631080 5689008 1631152 5689072 1630256 5686264 -1630152 5686160 1631080 5689008 1630256 5686264 1628144 5680632 -1631152 5689072 1631216 5689136 1630256 5686264 1631080 5689008 -1630152 5686160 1630904 5688944 1631080 5689008 1630256 5686264 -1630152 5686160 1630904 5688944 1630256 5686264 1628144 5680632 -1630904 5688944 1630992 5688984 1631080 5689008 1630256 5686264 -1630152 5686160 1630816 5688920 1630904 5688944 1630256 5686264 -1630152 5686160 1630816 5688920 1630256 5686264 1628144 5680632 -1630904 5688944 1631080 5689008 1630256 5686264 1630816 5688920 -1630152 5686160 1630728 5688896 1630816 5688920 1630256 5686264 -1630152 5686160 1630728 5688896 1630256 5686264 1628144 5680632 -1630816 5688920 1630904 5688944 1630256 5686264 1630728 5688896 -1631080 5689008 1631152 5689072 1630256 5686264 1630904 5688944 -1631216 5689136 1663944 5646256 1630256 5686264 1631152 5689072 -1630152 5686160 1630632 5688872 1630728 5688896 1630256 5686264 -1630152 5686160 1630632 5688872 1630256 5686264 1628144 5680632 -1630728 5688896 1630816 5688920 1630256 5686264 1630632 5688872 -1630152 5686160 1630544 5688856 1630632 5688872 1630256 5686264 -1630152 5686160 1630544 5688856 1630256 5686264 1628144 5680632 -1630152 5686160 1629096 5687008 1630544 5688856 1630256 5686264 -1630152 5686160 1629096 5687008 1630256 5686264 1628144 5680632 -1629096 5687008 1630504 5688864 1630544 5688856 1630256 5686264 -1630152 5686160 1630088 5686120 1629096 5687008 1630256 5686264 -1630152 5686160 1630088 5686120 1630256 5686264 1628144 5680632 -1630088 5686120 1628992 5686936 1629096 5687008 1630256 5686264 -1630544 5688856 1630632 5688872 1630256 5686264 1629096 5687008 -1629096 5687008 1630544 5688856 1630256 5686264 1630088 5686120 -1630632 5688872 1630728 5688896 1630256 5686264 1630544 5688856 -1630256 5686264 1630304 5686344 1663944 5646256 1663880 5646248 -1630256 5686264 1630304 5686344 1663880 5646248 1628144 5680632 -1663880 5646248 1628072 5680544 1628144 5680632 1630304 5686344 -1630304 5686344 1663944 5646256 1663880 5646248 1628144 5680632 -1663944 5646256 1630304 5686344 1631216 5689136 1631208 5689208 -1630256 5686264 1630304 5686344 1628144 5680632 1630152 5686160 -1630256 5686264 1631216 5689136 1630304 5686344 1628144 5680632 -1631216 5689136 1630304 5686344 1630256 5686264 1631152 5689072 -1631216 5689136 1663944 5646256 1630304 5686344 1631152 5689072 -1630256 5686264 1631080 5689008 1631152 5689072 1630304 5686344 -1630256 5686264 1630904 5688944 1631080 5689008 1630304 5686344 -1631080 5689008 1631152 5689072 1630304 5686344 1630904 5688944 -1630904 5688944 1630992 5688984 1631080 5689008 1630304 5686344 -1630256 5686264 1630816 5688920 1630904 5688944 1630304 5686344 -1630256 5686264 1630728 5688896 1630816 5688920 1630304 5686344 -1630816 5688920 1630904 5688944 1630304 5686344 1630728 5688896 -1630256 5686264 1630632 5688872 1630728 5688896 1630304 5686344 -1630728 5688896 1630816 5688920 1630304 5686344 1630632 5688872 -1630904 5688944 1631080 5689008 1630304 5686344 1630816 5688920 -1630304 5686344 1628144 5680632 1630256 5686264 1630632 5688872 -1631152 5689072 1631216 5689136 1630304 5686344 1631080 5689008 -1630304 5686344 1631216 5689136 1663944 5646256 1663880 5646248 -1630256 5686264 1630544 5688856 1630632 5688872 1630304 5686344 -1630632 5688872 1630728 5688896 1630304 5686344 1630544 5688856 -1630256 5686264 1629096 5687008 1630544 5688856 1630304 5686344 -1629096 5687008 1630504 5688864 1630544 5688856 1630304 5686344 -1629096 5687008 1630424 5688880 1630504 5688864 1630304 5686344 -1629096 5687008 1630504 5688864 1630304 5686344 1630256 5686264 -1630256 5686264 1630088 5686120 1629096 5687008 1630304 5686344 -1630088 5686120 1628992 5686936 1629096 5687008 1630304 5686344 -1630256 5686264 1630152 5686160 1630088 5686120 1630304 5686344 -1629096 5687008 1630504 5688864 1630304 5686344 1630088 5686120 -1630256 5686264 1630088 5686120 1630304 5686344 1628144 5680632 -1630544 5688856 1630632 5688872 1630304 5686344 1630504 5688864 -1630504 5688864 1630288 5686424 1629096 5687008 1630424 5688880 -1630504 5688864 1630304 5686344 1630288 5686424 1630424 5688880 -1630288 5686424 1630304 5686344 1629096 5687008 1630424 5688880 -1630304 5686344 1630288 5686424 1630504 5688864 1630544 5688856 -1630288 5686424 1630424 5688880 1630504 5688864 1630544 5688856 -1629096 5687008 1630288 5686424 1630304 5686344 1630088 5686120 -1629096 5687008 1630424 5688880 1630288 5686424 1630088 5686120 -1629096 5687008 1630288 5686424 1630088 5686120 1628992 5686936 -1630304 5686344 1630256 5686264 1630088 5686120 1630288 5686424 -1630256 5686264 1630152 5686160 1630088 5686120 1630288 5686424 -1630088 5686120 1629096 5687008 1630288 5686424 1630152 5686160 -1630256 5686264 1630152 5686160 1630288 5686424 1630304 5686344 -1630304 5686344 1630256 5686264 1630288 5686424 1630544 5688856 -1630304 5686344 1630288 5686424 1630544 5688856 1630632 5688872 -1630288 5686424 1630504 5688864 1630544 5688856 1630632 5688872 -1630304 5686344 1630288 5686424 1630632 5688872 1630728 5688896 -1630304 5686344 1630288 5686424 1630728 5688896 1630816 5688920 -1630304 5686344 1630288 5686424 1630816 5688920 1630904 5688944 -1630288 5686424 1630728 5688896 1630816 5688920 1630904 5688944 -1630288 5686424 1630632 5688872 1630728 5688896 1630816 5688920 -1630304 5686344 1630288 5686424 1630904 5688944 1631080 5689008 -1630304 5686344 1630288 5686424 1631080 5689008 1631152 5689072 -1630904 5688944 1630992 5688984 1631080 5689008 1630288 5686424 -1630288 5686424 1630816 5688920 1630904 5688944 1631080 5689008 -1630288 5686424 1630904 5688944 1631080 5689008 1631152 5689072 -1630304 5686344 1630288 5686424 1631152 5689072 1631216 5689136 -1630304 5686344 1630256 5686264 1630288 5686424 1631152 5689072 -1630288 5686424 1630544 5688856 1630632 5688872 1630728 5688896 -1629096 5687008 1629000 5687064 1630424 5688880 1630288 5686424 -1630288 5686424 1629960 5686448 1629096 5687008 1630424 5688880 -1630288 5686424 1630088 5686120 1629960 5686448 1630424 5688880 -1630288 5686424 1629960 5686448 1630424 5688880 1630504 5688864 -1629096 5687008 1629960 5686448 1630088 5686120 1628992 5686936 -1629096 5687008 1629960 5686448 1628992 5686936 1629064 5686992 -1629960 5686448 1628992 5686936 1629096 5687008 1630424 5688880 -1629960 5686448 1630288 5686424 1630088 5686120 1628992 5686936 -1630088 5686120 1629960 5686448 1630288 5686424 1630152 5686160 -1629960 5686448 1630424 5688880 1630288 5686424 1630152 5686160 -1630288 5686424 1630256 5686264 1630152 5686160 1629960 5686448 -1630288 5686424 1630256 5686264 1629960 5686448 1630424 5688880 -1630088 5686120 1628992 5686936 1629960 5686448 1630152 5686160 -1630152 5686160 1630088 5686120 1629960 5686448 1630256 5686264 -1630288 5686424 1630304 5686344 1630256 5686264 1629960 5686448 -1630088 5686120 1628464 5686776 1628992 5686936 1629960 5686448 -1629096 5687008 1629000 5687064 1630424 5688880 1629960 5686448 -1629960 5686448 1629776 5686472 1628992 5686936 1629096 5687008 -1628992 5686936 1629064 5686992 1629096 5687008 1629776 5686472 -1629960 5686448 1629776 5686472 1629096 5687008 1630424 5688880 -1629960 5686448 1630088 5686120 1629776 5686472 1629096 5687008 -1630088 5686120 1629776 5686472 1629960 5686448 1630152 5686160 -1629776 5686472 1630088 5686120 1628992 5686936 1629096 5687008 -1628992 5686936 1629776 5686472 1630088 5686120 1628464 5686776 -1630088 5686120 1628088 5686560 1628464 5686776 1629776 5686472 -1628088 5686560 1628312 5686720 1628464 5686776 1629776 5686472 -1630088 5686120 1627824 5686272 1628088 5686560 1629776 5686472 -1630088 5686120 1627280 5685920 1627824 5686272 1629776 5686472 -1628088 5686560 1628464 5686776 1629776 5686472 1627824 5686272 -1627824 5686272 1627904 5686384 1628088 5686560 1629776 5686472 -1629776 5686472 1629960 5686448 1630088 5686120 1627824 5686272 -1628992 5686936 1629096 5687008 1629776 5686472 1628464 5686776 -1628464 5686776 1628992 5686936 1629776 5686472 1628088 5686560 -1627824 5686272 1629728 5686424 1630088 5686120 1627280 5685920 -1629776 5686472 1629728 5686424 1627824 5686272 1628088 5686560 -1629728 5686424 1630088 5686120 1627824 5686272 1628088 5686560 -1629776 5686472 1630088 5686120 1629728 5686424 1628088 5686560 -1629776 5686472 1629728 5686424 1628088 5686560 1628464 5686776 -1629776 5686472 1630088 5686120 1629728 5686424 1628464 5686776 -1628088 5686560 1628312 5686720 1628464 5686776 1629728 5686424 -1629728 5686424 1627824 5686272 1628088 5686560 1628464 5686776 -1627824 5686272 1627904 5686384 1628088 5686560 1629728 5686424 -1630088 5686120 1629728 5686424 1629776 5686472 1629960 5686448 -1630088 5686120 1627824 5686272 1629728 5686424 1629960 5686448 -1629728 5686424 1628464 5686776 1629776 5686472 1629960 5686448 -1630088 5686120 1629728 5686424 1629960 5686448 1630152 5686160 -1629776 5686472 1629728 5686424 1628464 5686776 1628992 5686936 -1629776 5686472 1629960 5686448 1629728 5686424 1628992 5686936 -1629728 5686424 1628088 5686560 1628464 5686776 1628992 5686936 -1629776 5686472 1629728 5686424 1628992 5686936 1629096 5687008 -1629776 5686472 1629960 5686448 1629728 5686424 1629096 5687008 -1628992 5686936 1629064 5686992 1629096 5687008 1629728 5686424 -1629776 5686472 1629728 5686424 1629096 5687008 1629960 5686448 -1629728 5686424 1628464 5686776 1628992 5686936 1629096 5687008 -1629728 5686424 1629664 5686248 1627824 5686272 1628088 5686560 -1629728 5686424 1630088 5686120 1629664 5686248 1628088 5686560 -1630088 5686120 1629664 5686248 1629728 5686424 1629960 5686448 -1629664 5686248 1628088 5686560 1629728 5686424 1629960 5686448 -1629664 5686248 1630088 5686120 1627824 5686272 1628088 5686560 -1627824 5686272 1629664 5686248 1630088 5686120 1627280 5685920 -1627824 5686272 1628088 5686560 1629664 5686248 1627280 5685920 -1629728 5686424 1629664 5686248 1628088 5686560 1628464 5686776 -1629664 5686248 1627824 5686272 1628088 5686560 1628464 5686776 -1629728 5686424 1629960 5686448 1629664 5686248 1628464 5686776 -1628088 5686560 1628312 5686720 1628464 5686776 1629664 5686248 -1629728 5686424 1629664 5686248 1628464 5686776 1628992 5686936 -1629728 5686424 1629960 5686448 1629664 5686248 1628992 5686936 -1629664 5686248 1628088 5686560 1628464 5686776 1628992 5686936 -1627824 5686272 1627904 5686384 1628088 5686560 1629664 5686248 -1629728 5686424 1629776 5686472 1629960 5686448 1629664 5686248 -1630088 5686120 1629664 5686248 1629960 5686448 1630152 5686160 -1630088 5686120 1627944 5680984 1627280 5685920 1629664 5686248 -1627280 5685920 1627824 5686272 1629664 5686248 1627944 5680984 -1627944 5680984 1627048 5685800 1627280 5685920 1629664 5686248 -1630088 5686120 1628016 5680960 1627944 5680984 1629664 5686248 -1630088 5686120 1628096 5680872 1628016 5680960 1629664 5686248 -1627944 5680984 1627280 5685920 1629664 5686248 1628016 5680960 -1627824 5686272 1629664 5686248 1627280 5685920 1627672 5686200 -1629728 5686424 1629664 5686248 1628992 5686936 1629096 5687008 -1630088 5686120 1628016 5680960 1629664 5686248 1629960 5686448 -1629664 5686248 1629496 5686136 1627280 5685920 1627824 5686272 -1629664 5686248 1629496 5686136 1627824 5686272 1628088 5686560 -1629664 5686248 1629496 5686136 1628088 5686560 1628464 5686776 -1629496 5686136 1627824 5686272 1628088 5686560 1628464 5686776 -1629496 5686136 1627280 5685920 1627824 5686272 1628088 5686560 -1628088 5686560 1628312 5686720 1628464 5686776 1629496 5686136 -1629664 5686248 1629496 5686136 1628464 5686776 1628992 5686936 -1629496 5686136 1628088 5686560 1628464 5686776 1628992 5686936 -1629664 5686248 1629496 5686136 1628992 5686936 1629728 5686424 -1629496 5686136 1628464 5686776 1628992 5686936 1629728 5686424 -1627824 5686272 1627904 5686384 1628088 5686560 1629496 5686136 -1628088 5686560 1628464 5686776 1629496 5686136 1627904 5686384 -1627824 5686272 1627904 5686384 1629496 5686136 1627280 5685920 -1627280 5685920 1629496 5686136 1627944 5680984 1627048 5685800 -1627944 5680984 1629496 5686136 1629664 5686248 1628016 5680960 -1627944 5680984 1627280 5685920 1629496 5686136 1628016 5680960 -1629664 5686248 1630088 5686120 1628016 5680960 1629496 5686136 -1630088 5686120 1628096 5680872 1628016 5680960 1629496 5686136 -1628016 5680960 1627944 5680984 1629496 5686136 1630088 5686120 -1627280 5685920 1627672 5686200 1627824 5686272 1629496 5686136 -1627824 5686272 1627904 5686384 1629496 5686136 1627672 5686200 -1628992 5686936 1629096 5687008 1629728 5686424 1629496 5686136 -1629664 5686248 1630088 5686120 1629496 5686136 1629728 5686424 -1629664 5686248 1629960 5686448 1630088 5686120 1629496 5686136 -1629496 5686136 1627944 5680984 1627280 5685920 1627672 5686200 -1627944 5680984 1629472 5686104 1629496 5686136 1628016 5680960 -1627280 5685920 1629472 5686104 1627944 5680984 1627048 5685800 -1627944 5680984 1627280 5685920 1629472 5686104 1628016 5680960 -1629496 5686136 1630088 5686120 1628016 5680960 1629472 5686104 -1628016 5680960 1627944 5680984 1629472 5686104 1630088 5686120 -1630088 5686120 1628096 5680872 1628016 5680960 1629472 5686104 -1629496 5686136 1629664 5686248 1630088 5686120 1629472 5686104 -1630088 5686120 1628016 5680960 1629472 5686104 1629664 5686248 -1629664 5686248 1629960 5686448 1630088 5686120 1629472 5686104 -1629496 5686136 1629472 5686104 1627280 5685920 1627672 5686200 -1629472 5686104 1627944 5680984 1627280 5685920 1627672 5686200 -1629496 5686136 1629472 5686104 1627672 5686200 1627824 5686272 -1629496 5686136 1629472 5686104 1627824 5686272 1627904 5686384 -1629496 5686136 1629472 5686104 1627904 5686384 1628088 5686560 -1629496 5686136 1629472 5686104 1628088 5686560 1628464 5686776 -1629496 5686136 1629472 5686104 1628464 5686776 1628992 5686936 -1629472 5686104 1628088 5686560 1628464 5686776 1628992 5686936 -1629472 5686104 1627824 5686272 1627904 5686384 1628088 5686560 -1628088 5686560 1628312 5686720 1628464 5686776 1629472 5686104 -1628464 5686776 1628992 5686936 1629472 5686104 1628312 5686720 -1629496 5686136 1629472 5686104 1628992 5686936 1629728 5686424 -1629472 5686104 1627904 5686384 1628088 5686560 1628312 5686720 -1629472 5686104 1627672 5686200 1627824 5686272 1627904 5686384 -1629472 5686104 1627280 5685920 1627672 5686200 1627824 5686272 -1629472 5686104 1628992 5686936 1629496 5686136 1629664 5686248 -1629472 5686104 1629488 5686048 1628016 5680960 1627944 5680984 -1629472 5686104 1630088 5686120 1629488 5686048 1627944 5680984 -1628016 5680960 1629488 5686048 1630088 5686120 1628096 5680872 -1629472 5686104 1629488 5686048 1627944 5680984 1627280 5685920 -1629488 5686048 1628016 5680960 1627944 5680984 1627280 5685920 -1629472 5686104 1629488 5686048 1627280 5685920 1627672 5686200 -1629472 5686104 1630088 5686120 1629488 5686048 1627672 5686200 -1627944 5680984 1627048 5685800 1627280 5685920 1629488 5686048 -1629488 5686048 1627944 5680984 1627280 5685920 1627672 5686200 -1629488 5686048 1630088 5686120 1628016 5680960 1627944 5680984 -1630088 5686120 1629488 5686048 1629472 5686104 1629664 5686248 -1629488 5686048 1627672 5686200 1629472 5686104 1629664 5686248 -1629472 5686104 1629496 5686136 1629664 5686248 1629488 5686048 -1629472 5686104 1629496 5686136 1629488 5686048 1627672 5686200 -1629664 5686248 1630088 5686120 1629488 5686048 1629496 5686136 -1630088 5686120 1628016 5680960 1629488 5686048 1629664 5686248 -1630088 5686120 1629488 5686048 1629664 5686248 1629960 5686448 -1629472 5686104 1629488 5686048 1627672 5686200 1627824 5686272 -1629488 5686048 1627280 5685920 1627672 5686200 1627824 5686272 -1629472 5686104 1629496 5686136 1629488 5686048 1627824 5686272 -1629472 5686104 1629488 5686048 1627824 5686272 1627904 5686384 -1629472 5686104 1629488 5686048 1627904 5686384 1628088 5686560 -1629472 5686104 1629496 5686136 1629488 5686048 1628088 5686560 -1629472 5686104 1629488 5686048 1628088 5686560 1628312 5686720 -1629488 5686048 1627824 5686272 1627904 5686384 1628088 5686560 -1629488 5686048 1627672 5686200 1627824 5686272 1627904 5686384 -1628016 5680960 1629512 5686008 1630088 5686120 1628096 5680872 -1629512 5686008 1629488 5686048 1630088 5686120 1628096 5680872 -1630088 5686120 1628112 5680824 1628096 5680872 1629512 5686008 -1629488 5686048 1629512 5686008 1628016 5680960 1627944 5680984 -1629488 5686048 1629512 5686008 1627944 5680984 1627280 5685920 -1627944 5680984 1627048 5685800 1627280 5685920 1629512 5686008 -1629488 5686048 1629512 5686008 1627280 5685920 1627672 5686200 -1629512 5686008 1627944 5680984 1627280 5685920 1627672 5686200 -1629488 5686048 1629512 5686008 1627672 5686200 1627824 5686272 -1629512 5686008 1627280 5685920 1627672 5686200 1627824 5686272 -1629512 5686008 1628016 5680960 1627944 5680984 1627280 5685920 -1629488 5686048 1630088 5686120 1629512 5686008 1627824 5686272 -1630088 5686120 1629512 5686008 1629488 5686048 1629664 5686248 -1630088 5686120 1628096 5680872 1629512 5686008 1629664 5686248 -1629488 5686048 1629496 5686136 1629664 5686248 1629512 5686008 -1629488 5686048 1629472 5686104 1629496 5686136 1629512 5686008 -1629512 5686008 1627824 5686272 1629488 5686048 1629496 5686136 -1629664 5686248 1630088 5686120 1629512 5686008 1629496 5686136 -1628016 5680960 1627944 5680984 1629512 5686008 1628096 5680872 -1630088 5686120 1629512 5686008 1629664 5686248 1629960 5686448 -1629488 5686048 1629512 5686008 1627824 5686272 1627904 5686384 -1630088 5686120 1629576 5685968 1629512 5686008 1629664 5686248 -1630088 5686120 1628096 5680872 1629576 5685968 1629664 5686248 -1628096 5680872 1629576 5685968 1630088 5686120 1628112 5680824 -1629512 5686008 1629576 5685968 1628096 5680872 1628016 5680960 -1629576 5685968 1630088 5686120 1628096 5680872 1628016 5680960 -1629512 5686008 1629496 5686136 1629664 5686248 1629576 5685968 -1629664 5686248 1630088 5686120 1629576 5685968 1629496 5686136 -1629512 5686008 1629488 5686048 1629496 5686136 1629576 5685968 -1629512 5686008 1629576 5685968 1628016 5680960 1627944 5680984 -1629576 5685968 1628096 5680872 1628016 5680960 1627944 5680984 -1629512 5686008 1629576 5685968 1627944 5680984 1627280 5685920 -1629512 5686008 1629576 5685968 1627280 5685920 1627672 5686200 -1627944 5680984 1627048 5685800 1627280 5685920 1629576 5685968 -1629576 5685968 1628016 5680960 1627944 5680984 1627280 5685920 -1629576 5685968 1627280 5685920 1629512 5686008 1629496 5686136 -1630088 5686120 1629576 5685968 1629664 5686248 1629960 5686448 -1630088 5686120 1629712 5685944 1629576 5685968 1629664 5686248 -1629576 5685968 1629496 5686136 1629664 5686248 1629712 5685944 -1630088 5686120 1628096 5680872 1629712 5685944 1629664 5686248 -1629712 5685944 1628096 5680872 1629576 5685968 1629664 5686248 -1628096 5680872 1629712 5685944 1630088 5686120 1628112 5680824 -1629576 5685968 1629712 5685944 1628096 5680872 1628016 5680960 -1629712 5685944 1630088 5686120 1628096 5680872 1628016 5680960 -1629576 5685968 1629664 5686248 1629712 5685944 1628016 5680960 -1629576 5685968 1629712 5685944 1628016 5680960 1627944 5680984 -1630088 5686120 1629712 5685944 1629664 5686248 1629960 5686448 -1629712 5685944 1629840 5685992 1628096 5680872 1628016 5680960 -1630088 5686120 1629840 5685992 1629712 5685944 1629664 5686248 -1629712 5685944 1629576 5685968 1629664 5686248 1629840 5685992 -1629840 5685992 1628096 5680872 1629712 5685944 1629664 5686248 -1630088 5686120 1628096 5680872 1629840 5685992 1629664 5686248 -1628096 5680872 1629840 5685992 1630088 5686120 1628112 5680824 -1630088 5686120 1629840 5685992 1629664 5686248 1629960 5686448 -1627280 5685920 1628568 5685304 1627944 5680984 1627048 5685800 -1627944 5680984 1626912 5685760 1627048 5685800 1628568 5685304 -1627048 5685800 1627280 5685920 1628568 5685304 1626912 5685760 -1627280 5685920 1629576 5685968 1628568 5685304 1627048 5685800 -1628568 5685304 1629576 5685968 1627944 5680984 1626912 5685760 -1629576 5685968 1628568 5685304 1627280 5685920 1629512 5686008 -1627280 5685920 1627672 5686200 1629512 5686008 1628568 5685304 -1629576 5685968 1627944 5680984 1628568 5685304 1629512 5686008 -1628568 5685304 1627048 5685800 1627280 5685920 1627672 5686200 -1627672 5686200 1627824 5686272 1629512 5686008 1628568 5685304 -1627672 5686200 1627824 5686272 1628568 5685304 1627280 5685920 -1627824 5686272 1629488 5686048 1629512 5686008 1628568 5685304 -1627824 5686272 1629488 5686048 1628568 5685304 1627672 5686200 -1629512 5686008 1629576 5685968 1628568 5685304 1629488 5686048 -1627944 5680984 1628568 5685304 1629576 5685968 1628016 5680960 -1628568 5685304 1629512 5686008 1629576 5685968 1628016 5680960 -1629576 5685968 1629712 5685944 1628016 5680960 1628568 5685304 -1629576 5685968 1629712 5685944 1628568 5685304 1629512 5686008 -1627944 5680984 1626912 5685760 1628568 5685304 1628016 5680960 -1629712 5685944 1628096 5680872 1628016 5680960 1628568 5685304 -1629712 5685944 1629840 5685992 1628096 5680872 1628568 5685304 -1629712 5685944 1628096 5680872 1628568 5685304 1629576 5685968 -1628016 5680960 1627944 5680984 1628568 5685304 1628096 5680872 -1627824 5686272 1627904 5686384 1629488 5686048 1628568 5685304 -1629488 5686048 1629512 5686008 1628568 5685304 1627904 5686384 -1627824 5686272 1627904 5686384 1628568 5685304 1627672 5686200 -1627904 5686384 1628088 5686560 1629488 5686048 1628568 5685304 -1628088 5686560 1629472 5686104 1629488 5686048 1628568 5685304 -1629488 5686048 1629512 5686008 1628568 5685304 1629472 5686104 -1628088 5686560 1628312 5686720 1629472 5686104 1628568 5685304 -1629472 5686104 1629488 5686048 1628568 5685304 1628312 5686720 -1628312 5686720 1628464 5686776 1629472 5686104 1628568 5685304 -1628464 5686776 1628992 5686936 1629472 5686104 1628568 5685304 -1629472 5686104 1629488 5686048 1628568 5685304 1628464 5686776 -1628312 5686720 1628464 5686776 1628568 5685304 1628088 5686560 -1628088 5686560 1628312 5686720 1628568 5685304 1627904 5686384 -1627904 5686384 1628088 5686560 1628568 5685304 1627824 5686272 -1627944 5680984 1626216 5685512 1626912 5685760 1628568 5685304 -1626912 5685760 1627048 5685800 1628568 5685304 1626216 5685512 -1626216 5685512 1626496 5685696 1626912 5685760 1628568 5685304 -1627944 5680984 1626216 5685512 1628568 5685304 1628016 5680960 -1627944 5680984 1627248 5680800 1626216 5685512 1628568 5685304 -1627824 5686272 1628504 5685400 1628568 5685304 1627672 5686200 -1628568 5685304 1627280 5685920 1627672 5686200 1628504 5685400 -1628568 5685304 1627048 5685800 1627280 5685920 1628504 5685400 -1627280 5685920 1627672 5686200 1628504 5685400 1627048 5685800 -1628568 5685304 1626912 5685760 1627048 5685800 1628504 5685400 -1628504 5685400 1627904 5686384 1628568 5685304 1627048 5685800 -1627672 5686200 1627824 5686272 1628504 5685400 1627280 5685920 -1628568 5685304 1628504 5685400 1627904 5686384 1628088 5686560 -1628568 5685304 1627048 5685800 1628504 5685400 1628088 5686560 -1628504 5685400 1627824 5686272 1627904 5686384 1628088 5686560 -1628568 5685304 1628504 5685400 1628088 5686560 1628312 5686720 -1628568 5685304 1628504 5685400 1628312 5686720 1628464 5686776 -1628568 5685304 1628504 5685400 1628464 5686776 1629472 5686104 -1628464 5686776 1628992 5686936 1629472 5686104 1628504 5685400 -1628568 5685304 1628504 5685400 1629472 5686104 1629488 5686048 -1628568 5685304 1628504 5685400 1629488 5686048 1629512 5686008 -1628504 5685400 1629472 5686104 1629488 5686048 1629512 5686008 -1628504 5685400 1628464 5686776 1629472 5686104 1629488 5686048 -1628504 5685400 1628312 5686720 1628464 5686776 1629472 5686104 -1628568 5685304 1627048 5685800 1628504 5685400 1629512 5686008 -1628568 5685304 1628504 5685400 1629512 5686008 1629576 5685968 -1628504 5685400 1628088 5686560 1628312 5686720 1628464 5686776 -1628504 5685400 1627904 5686384 1628088 5686560 1628312 5686720 -1627824 5686272 1627904 5686384 1628504 5685400 1627672 5686200 -1627280 5685920 1628368 5685464 1628504 5685400 1627048 5685800 -1628504 5685400 1628568 5685304 1627048 5685800 1628368 5685464 -1627048 5685800 1627280 5685920 1628368 5685464 1628568 5685304 -1628568 5685304 1626912 5685760 1627048 5685800 1628368 5685464 -1627048 5685800 1627280 5685920 1628368 5685464 1626912 5685760 -1628568 5685304 1626216 5685512 1626912 5685760 1628368 5685464 -1628568 5685304 1626912 5685760 1628368 5685464 1628504 5685400 -1628504 5685400 1628368 5685464 1627672 5686200 1627824 5686272 -1628368 5685464 1627280 5685920 1627672 5686200 1627824 5686272 -1627280 5685920 1627672 5686200 1628368 5685464 1627048 5685800 -1628368 5685464 1627824 5686272 1628504 5685400 1628568 5685304 -1628504 5685400 1628368 5685464 1627824 5686272 1627904 5686384 -1628504 5685400 1628368 5685464 1627904 5686384 1628088 5686560 -1628368 5685464 1627672 5686200 1627824 5686272 1627904 5686384 -1628368 5685464 1627824 5686272 1627904 5686384 1628088 5686560 -1628504 5685400 1628368 5685464 1628088 5686560 1628312 5686720 -1628368 5685464 1627904 5686384 1628088 5686560 1628312 5686720 -1628504 5685400 1628368 5685464 1628312 5686720 1628464 5686776 -1628504 5685400 1628368 5685464 1628464 5686776 1629472 5686104 -1628464 5686776 1628992 5686936 1629472 5686104 1628368 5685464 -1628504 5685400 1628368 5685464 1629472 5686104 1629488 5686048 -1628368 5685464 1628312 5686720 1628464 5686776 1629472 5686104 -1628368 5685464 1628088 5686560 1628312 5686720 1628464 5686776 -1628504 5685400 1628568 5685304 1628368 5685464 1629472 5686104 -1626912 5685760 1628232 5685464 1628568 5685304 1626216 5685512 -1626912 5685760 1628232 5685464 1626216 5685512 1626496 5685696 -1628368 5685464 1628232 5685464 1626912 5685760 1627048 5685800 -1628368 5685464 1628232 5685464 1627048 5685800 1627280 5685920 -1628232 5685464 1626912 5685760 1627048 5685800 1627280 5685920 -1628568 5685304 1628232 5685464 1628368 5685464 1628504 5685400 -1628368 5685464 1628232 5685464 1627280 5685920 1627672 5686200 -1628232 5685464 1627048 5685800 1627280 5685920 1627672 5686200 -1628368 5685464 1628232 5685464 1627672 5686200 1627824 5686272 -1628368 5685464 1628232 5685464 1627824 5686272 1627904 5686384 -1628232 5685464 1627280 5685920 1627672 5686200 1627824 5686272 -1628368 5685464 1628568 5685304 1628232 5685464 1627824 5686272 -1626912 5685760 1627048 5685800 1628232 5685464 1626216 5685512 -1628232 5685464 1628368 5685464 1628568 5685304 1626216 5685512 -1628568 5685304 1627944 5680984 1626216 5685512 1628232 5685464 -1626216 5685512 1626912 5685760 1628232 5685464 1627944 5680984 -1628568 5685304 1628016 5680960 1627944 5680984 1628232 5685464 -1627944 5680984 1627248 5680800 1626216 5685512 1628232 5685464 -1628568 5685304 1627944 5680984 1628232 5685464 1628368 5685464 -1628232 5685464 1628032 5685392 1626216 5685512 1626912 5685760 -1626216 5685512 1626496 5685696 1626912 5685760 1628032 5685392 -1626216 5685512 1628032 5685392 1627944 5680984 1627248 5680800 -1627944 5680984 1627752 5680904 1627248 5680800 1628032 5685392 -1628032 5685392 1628232 5685464 1627944 5680984 1627248 5680800 -1626216 5685512 1628032 5685392 1627248 5680800 1626064 5685480 -1628032 5685392 1627248 5680800 1626216 5685512 1626912 5685760 -1628232 5685464 1628032 5685392 1626912 5685760 1627048 5685800 -1628032 5685392 1626216 5685512 1626912 5685760 1627048 5685800 -1628232 5685464 1628032 5685392 1627048 5685800 1627280 5685920 -1628232 5685464 1628032 5685392 1627280 5685920 1627672 5686200 -1628032 5685392 1627048 5685800 1627280 5685920 1627672 5686200 -1628232 5685464 1628032 5685392 1627672 5686200 1627824 5686272 -1628032 5685392 1627280 5685920 1627672 5686200 1627824 5686272 -1628232 5685464 1628032 5685392 1627824 5686272 1628368 5685464 -1628032 5685392 1626912 5685760 1627048 5685800 1627280 5685920 -1628232 5685464 1627944 5680984 1628032 5685392 1627824 5686272 -1627944 5680984 1628032 5685392 1628232 5685464 1628568 5685304 -1627944 5680984 1628032 5685392 1628568 5685304 1628016 5680960 -1627944 5680984 1627248 5680800 1628032 5685392 1628568 5685304 -1628032 5685392 1627824 5686272 1628232 5685464 1628568 5685304 -1628232 5685464 1628368 5685464 1628568 5685304 1628032 5685392 -1627248 5680800 1627672 5685152 1628032 5685392 1627944 5680984 -1627672 5685152 1626216 5685512 1628032 5685392 1627944 5680984 -1627248 5680800 1626216 5685512 1627672 5685152 1627944 5680984 -1627248 5680800 1627672 5685152 1627944 5680984 1627752 5680904 -1628032 5685392 1628568 5685304 1627944 5680984 1627672 5685152 -1628032 5685392 1628568 5685304 1627672 5685152 1626216 5685512 -1628568 5685304 1628016 5680960 1627944 5680984 1627672 5685152 -1627944 5680984 1627248 5680800 1627672 5685152 1628568 5685304 -1626216 5685512 1627672 5685152 1627248 5680800 1626064 5685480 -1626216 5685512 1628032 5685392 1627672 5685152 1626064 5685480 -1627672 5685152 1627944 5680984 1627248 5680800 1626064 5685480 -1627248 5680800 1627152 5680768 1626064 5685480 1627672 5685152 -1627248 5680800 1627152 5680768 1627672 5685152 1627944 5680984 -1627152 5680768 1625528 5685408 1626064 5685480 1627672 5685152 -1626064 5685480 1626216 5685512 1627672 5685152 1627152 5680768 -1628032 5685392 1627672 5685152 1626216 5685512 1626912 5685760 -1628032 5685392 1628568 5685304 1627672 5685152 1626912 5685760 -1627672 5685152 1626064 5685480 1626216 5685512 1626912 5685760 -1628032 5685392 1627672 5685152 1626912 5685760 1627048 5685800 -1628032 5685392 1628568 5685304 1627672 5685152 1627048 5685800 -1626216 5685512 1626496 5685696 1626912 5685760 1627672 5685152 -1626216 5685512 1626496 5685696 1627672 5685152 1626064 5685480 -1626496 5685696 1626784 5685776 1626912 5685760 1627672 5685152 -1627672 5685152 1626496 5685696 1626912 5685760 1627048 5685800 -1628032 5685392 1627672 5685152 1627048 5685800 1627280 5685920 -1628032 5685392 1628568 5685304 1627672 5685152 1627280 5685920 -1627672 5685152 1626912 5685760 1627048 5685800 1627280 5685920 -1628032 5685392 1627672 5685152 1627280 5685920 1627672 5686200 -1628032 5685392 1628232 5685464 1628568 5685304 1627672 5685152 -1626064 5685480 1627560 5685136 1627152 5680768 1625528 5685408 -1627152 5680768 1627560 5685136 1627672 5685152 1627248 5680800 -1627560 5685136 1626064 5685480 1627672 5685152 1627248 5680800 -1627672 5685152 1627944 5680984 1627248 5680800 1627560 5685136 -1627672 5685152 1627944 5680984 1627560 5685136 1626064 5685480 -1627944 5680984 1627752 5680904 1627248 5680800 1627560 5685136 -1627248 5680800 1627152 5680768 1627560 5685136 1627944 5680984 -1627672 5685152 1628568 5685304 1627944 5680984 1627560 5685136 -1627672 5685152 1627560 5685136 1626064 5685480 1626216 5685512 -1627672 5685152 1627560 5685136 1626216 5685512 1626496 5685696 -1627672 5685152 1627944 5680984 1627560 5685136 1626496 5685696 -1627672 5685152 1627560 5685136 1626496 5685696 1626912 5685760 -1627560 5685136 1626216 5685512 1626496 5685696 1626912 5685760 -1627672 5685152 1627944 5680984 1627560 5685136 1626912 5685760 -1627560 5685136 1627152 5680768 1626064 5685480 1626216 5685512 -1626496 5685696 1626784 5685776 1626912 5685760 1627560 5685136 -1627560 5685136 1626064 5685480 1626216 5685512 1626496 5685696 -1627672 5685152 1627560 5685136 1626912 5685760 1627048 5685800 -1627672 5685152 1627944 5680984 1627560 5685136 1627048 5685800 -1627672 5685152 1627560 5685136 1627048 5685800 1627280 5685920 -1627672 5685152 1627944 5680984 1627560 5685136 1627280 5685920 -1627560 5685136 1626496 5685696 1626912 5685760 1627048 5685800 -1627560 5685136 1626912 5685760 1627048 5685800 1627280 5685920 -1627672 5685152 1627560 5685136 1627280 5685920 1628032 5685392 -1627152 5680768 1626064 5685480 1627560 5685136 1627248 5680800 -1626064 5685480 1627488 5685144 1627152 5680768 1625528 5685408 -1627560 5685136 1627488 5685144 1626064 5685480 1626216 5685512 -1627488 5685144 1627152 5680768 1626064 5685480 1626216 5685512 -1627560 5685136 1627152 5680768 1627488 5685144 1626216 5685512 -1627560 5685136 1627488 5685144 1626216 5685512 1626496 5685696 -1627560 5685136 1627488 5685144 1626496 5685696 1626912 5685760 -1627560 5685136 1627488 5685144 1626912 5685760 1627048 5685800 -1627488 5685144 1626496 5685696 1626912 5685760 1627048 5685800 -1627488 5685144 1626064 5685480 1626216 5685512 1626496 5685696 -1627560 5685136 1627152 5680768 1627488 5685144 1627048 5685800 -1626496 5685696 1626784 5685776 1626912 5685760 1627488 5685144 -1627488 5685144 1626216 5685512 1626496 5685696 1626912 5685760 -1627560 5685136 1627488 5685144 1627048 5685800 1627280 5685920 -1627560 5685136 1627488 5685144 1627280 5685920 1627672 5685152 -1627488 5685144 1626912 5685760 1627048 5685800 1627280 5685920 -1627560 5685136 1627152 5680768 1627488 5685144 1627672 5685152 -1627488 5685144 1627048 5685800 1627280 5685920 1627672 5685152 -1627280 5685920 1628032 5685392 1627672 5685152 1627488 5685144 -1627152 5680768 1627488 5685144 1627560 5685136 1627248 5680800 -1627152 5680768 1626064 5685480 1627488 5685144 1627248 5680800 -1627560 5685136 1627944 5680984 1627248 5680800 1627488 5685144 -1627560 5685136 1627672 5685152 1627944 5680984 1627488 5685144 -1627944 5680984 1627752 5680904 1627248 5680800 1627488 5685144 -1627488 5685144 1627672 5685152 1627560 5685136 1627944 5680984 -1627248 5680800 1627152 5680768 1627488 5685144 1627944 5680984 -1626064 5685480 1627448 5685104 1627152 5680768 1625528 5685408 -1627488 5685144 1627448 5685104 1626064 5685480 1626216 5685512 -1627488 5685144 1627152 5680768 1627448 5685104 1626216 5685512 -1627152 5680768 1627448 5685104 1627488 5685144 1627248 5680800 -1627448 5685104 1626216 5685512 1627488 5685144 1627248 5680800 -1627488 5685144 1627448 5685104 1626216 5685512 1626496 5685696 -1627448 5685104 1626064 5685480 1626216 5685512 1626496 5685696 -1627488 5685144 1627248 5680800 1627448 5685104 1626496 5685696 -1627488 5685144 1627448 5685104 1626496 5685696 1626912 5685760 -1627488 5685144 1627448 5685104 1626912 5685760 1627048 5685800 -1627488 5685144 1627248 5680800 1627448 5685104 1627048 5685800 -1627488 5685144 1627448 5685104 1627048 5685800 1627280 5685920 -1627448 5685104 1626216 5685512 1626496 5685696 1626912 5685760 -1626496 5685696 1626784 5685776 1626912 5685760 1627448 5685104 -1627448 5685104 1626496 5685696 1626912 5685760 1627048 5685800 -1627488 5685144 1627944 5680984 1627248 5680800 1627448 5685104 -1627488 5685144 1627944 5680984 1627448 5685104 1627048 5685800 -1627248 5680800 1627152 5680768 1627448 5685104 1627944 5680984 -1627944 5680984 1627752 5680904 1627248 5680800 1627448 5685104 -1627488 5685144 1627560 5685136 1627944 5680984 1627448 5685104 -1627560 5685136 1627672 5685152 1627944 5680984 1627448 5685104 -1627488 5685144 1627560 5685136 1627448 5685104 1627048 5685800 -1627560 5685136 1627672 5685152 1627448 5685104 1627488 5685144 -1627672 5685152 1628568 5685304 1627944 5680984 1627448 5685104 -1627944 5680984 1627248 5680800 1627448 5685104 1627672 5685152 -1627448 5685104 1627152 5680768 1626064 5685480 1626216 5685512 -1627152 5680768 1626064 5685480 1627448 5685104 1627248 5680800 -1626064 5685480 1627432 5685048 1627152 5680768 1625528 5685408 -1626064 5685480 1627448 5685104 1627432 5685048 1625528 5685408 -1627432 5685048 1627448 5685104 1627152 5680768 1625528 5685408 -1627448 5685104 1627432 5685048 1626064 5685480 1626216 5685512 -1627448 5685104 1627432 5685048 1626216 5685512 1626496 5685696 -1627432 5685048 1625528 5685408 1626064 5685480 1626216 5685512 -1627448 5685104 1627432 5685048 1626496 5685696 1626912 5685760 -1627432 5685048 1626216 5685512 1626496 5685696 1626912 5685760 -1626496 5685696 1626784 5685776 1626912 5685760 1627432 5685048 -1627448 5685104 1627432 5685048 1626912 5685760 1627048 5685800 -1627432 5685048 1626064 5685480 1626216 5685512 1626496 5685696 -1627448 5685104 1627152 5680768 1627432 5685048 1626912 5685760 -1627152 5680768 1627432 5685048 1627448 5685104 1627248 5680800 -1627448 5685104 1627944 5680984 1627248 5680800 1627432 5685048 -1627944 5680984 1627752 5680904 1627248 5680800 1627432 5685048 -1627152 5680768 1625528 5685408 1627432 5685048 1627248 5680800 -1627448 5685104 1627672 5685152 1627944 5680984 1627432 5685048 -1627448 5685104 1627560 5685136 1627672 5685152 1627432 5685048 -1627944 5680984 1627248 5680800 1627432 5685048 1627672 5685152 -1627448 5685104 1627488 5685144 1627560 5685136 1627432 5685048 -1627672 5685152 1628568 5685304 1627944 5680984 1627432 5685048 -1627672 5685152 1627944 5680984 1627432 5685048 1627560 5685136 -1627432 5685048 1626912 5685760 1627448 5685104 1627560 5685136 -1627248 5680800 1627152 5680768 1627432 5685048 1627944 5680984 -1627152 5680768 1626952 5680672 1625528 5685408 1627432 5685048 -1627432 5685048 1627384 5684864 1625528 5685408 1626064 5685480 -1627432 5685048 1627384 5684864 1626064 5685480 1626216 5685512 -1627384 5684864 1625528 5685408 1626064 5685480 1626216 5685512 -1627432 5685048 1627152 5680768 1627384 5684864 1626216 5685512 -1627152 5680768 1627384 5684864 1627432 5685048 1627248 5680800 -1627152 5680768 1625528 5685408 1627384 5684864 1627248 5680800 -1627384 5684864 1626216 5685512 1627432 5685048 1627248 5680800 -1627384 5684864 1627152 5680768 1625528 5685408 1626064 5685480 -1627432 5685048 1627384 5684864 1626216 5685512 1626496 5685696 -1627432 5685048 1627384 5684864 1626496 5685696 1626912 5685760 -1627384 5684864 1626064 5685480 1626216 5685512 1626496 5685696 -1627432 5685048 1627248 5680800 1627384 5684864 1626496 5685696 -1627432 5685048 1627944 5680984 1627248 5680800 1627384 5684864 -1627432 5685048 1627672 5685152 1627944 5680984 1627384 5684864 -1627944 5680984 1627752 5680904 1627248 5680800 1627384 5684864 -1627432 5685048 1627672 5685152 1627384 5684864 1626496 5685696 -1627248 5680800 1627152 5680768 1627384 5684864 1627944 5680984 -1627672 5685152 1628568 5685304 1627944 5680984 1627384 5684864 -1627672 5685152 1628568 5685304 1627384 5684864 1627432 5685048 -1628568 5685304 1628016 5680960 1627944 5680984 1627384 5684864 -1628568 5685304 1628016 5680960 1627384 5684864 1627672 5685152 -1627672 5685152 1628032 5685392 1628568 5685304 1627384 5684864 -1628568 5685304 1628096 5680872 1628016 5680960 1627384 5684864 -1627432 5685048 1627560 5685136 1627672 5685152 1627384 5684864 -1627432 5685048 1627448 5685104 1627560 5685136 1627384 5684864 -1627672 5685152 1628568 5685304 1627384 5684864 1627560 5685136 -1627432 5685048 1627560 5685136 1627384 5684864 1626496 5685696 -1627944 5680984 1627248 5680800 1627384 5684864 1628016 5680960 -1625528 5685408 1627384 5684864 1627152 5680768 1626952 5680672 -1627384 5684864 1627248 5680800 1627152 5680768 1626952 5680672 -1625528 5685408 1627384 5684864 1626952 5680672 1625296 5685392 -1625528 5685408 1626064 5685480 1627384 5684864 1626952 5680672 -1625528 5685408 1627256 5684656 1626952 5680672 1625296 5685392 -1627256 5684656 1627384 5684864 1626952 5680672 1625296 5685392 -1625528 5685408 1627384 5684864 1627256 5684656 1625296 5685392 -1626952 5680672 1626744 5680528 1625296 5685392 1627256 5684656 -1627384 5684864 1627256 5684656 1625528 5685408 1626064 5685480 -1627384 5684864 1627256 5684656 1626064 5685480 1626216 5685512 -1627384 5684864 1626952 5680672 1627256 5684656 1626216 5685512 -1627256 5684656 1625296 5685392 1625528 5685408 1626064 5685480 -1627384 5684864 1627256 5684656 1626216 5685512 1626496 5685696 -1627256 5684656 1626064 5685480 1626216 5685512 1626496 5685696 -1627384 5684864 1626952 5680672 1627256 5684656 1626496 5685696 -1627256 5684656 1625528 5685408 1626064 5685480 1626216 5685512 -1627384 5684864 1627256 5684656 1626496 5685696 1627432 5685048 -1626952 5680672 1627256 5684656 1627384 5684864 1627152 5680768 -1626952 5680672 1625296 5685392 1627256 5684656 1627152 5680768 -1627256 5684656 1626496 5685696 1627384 5684864 1627152 5680768 -1627384 5684864 1627248 5680800 1627152 5680768 1627256 5684656 -1627384 5684864 1627248 5680800 1627256 5684656 1626496 5685696 -1627384 5684864 1627944 5680984 1627248 5680800 1627256 5684656 -1627944 5680984 1627752 5680904 1627248 5680800 1627256 5684656 -1627384 5684864 1627944 5680984 1627256 5684656 1626496 5685696 -1627248 5680800 1627152 5680768 1627256 5684656 1627944 5680984 -1627384 5684864 1628016 5680960 1627944 5680984 1627256 5684656 -1627384 5684864 1628016 5680960 1627256 5684656 1626496 5685696 -1627384 5684864 1628568 5685304 1628016 5680960 1627256 5684656 -1627384 5684864 1628568 5685304 1627256 5684656 1626496 5685696 -1627944 5680984 1627248 5680800 1627256 5684656 1628016 5680960 -1627384 5684864 1627672 5685152 1628568 5685304 1627256 5684656 -1628568 5685304 1628096 5680872 1628016 5680960 1627256 5684656 -1628016 5680960 1627944 5680984 1627256 5684656 1628568 5685304 -1627152 5680768 1626952 5680672 1627256 5684656 1627248 5680800 -1626952 5680672 1627216 5684560 1627256 5684656 1627152 5680768 -1627216 5684560 1625296 5685392 1627256 5684656 1627152 5680768 -1626952 5680672 1625296 5685392 1627216 5684560 1627152 5680768 -1625296 5685392 1627216 5684560 1626952 5680672 1626744 5680528 -1625296 5685392 1627256 5684656 1627216 5684560 1626744 5680528 -1627216 5684560 1627152 5680768 1626952 5680672 1626744 5680528 -1625296 5685392 1627216 5684560 1626744 5680528 1625120 5685400 -1627256 5684656 1627216 5684560 1625296 5685392 1625528 5685408 -1627256 5684656 1627152 5680768 1627216 5684560 1625528 5685408 -1627216 5684560 1626744 5680528 1625296 5685392 1625528 5685408 -1627256 5684656 1627216 5684560 1625528 5685408 1626064 5685480 -1627256 5684656 1627152 5680768 1627216 5684560 1626064 5685480 -1627216 5684560 1625296 5685392 1625528 5685408 1626064 5685480 -1627256 5684656 1627216 5684560 1626064 5685480 1626216 5685512 -1627256 5684656 1627152 5680768 1627216 5684560 1626216 5685512 -1627216 5684560 1625528 5685408 1626064 5685480 1626216 5685512 -1627256 5684656 1627216 5684560 1626216 5685512 1626496 5685696 -1627256 5684656 1627248 5680800 1627152 5680768 1627216 5684560 -1627256 5684656 1627248 5680800 1627216 5684560 1626216 5685512 -1627152 5680768 1626952 5680672 1627216 5684560 1627248 5680800 -1627256 5684656 1627944 5680984 1627248 5680800 1627216 5684560 -1627256 5684656 1627944 5680984 1627216 5684560 1626216 5685512 -1627944 5680984 1627752 5680904 1627248 5680800 1627216 5684560 -1627944 5680984 1627752 5680904 1627216 5684560 1627256 5684656 -1627752 5680904 1627616 5680840 1627248 5680800 1627216 5684560 -1627256 5684656 1628016 5680960 1627944 5680984 1627216 5684560 -1627256 5684656 1628016 5680960 1627216 5684560 1626216 5685512 -1627944 5680984 1627752 5680904 1627216 5684560 1628016 5680960 -1627256 5684656 1628568 5685304 1628016 5680960 1627216 5684560 -1627256 5684656 1628568 5685304 1627216 5684560 1626216 5685512 -1627256 5684656 1627384 5684864 1628568 5685304 1627216 5684560 -1627256 5684656 1627384 5684864 1627216 5684560 1626216 5685512 -1628016 5680960 1627944 5680984 1627216 5684560 1628568 5685304 -1627384 5684864 1627672 5685152 1628568 5685304 1627216 5684560 -1628568 5685304 1628096 5680872 1628016 5680960 1627216 5684560 -1628568 5685304 1628016 5680960 1627216 5684560 1627384 5684864 -1627248 5680800 1627152 5680768 1627216 5684560 1627752 5680904 -1627216 5684560 1627184 5684304 1625296 5685392 1625528 5685408 -1627216 5684560 1626744 5680528 1627184 5684304 1625528 5685408 -1627184 5684304 1626744 5680528 1625296 5685392 1625528 5685408 -1626744 5680528 1627184 5684304 1627216 5684560 1626952 5680672 -1627216 5684560 1627152 5680768 1626952 5680672 1627184 5684304 -1627216 5684560 1627248 5680800 1627152 5680768 1627184 5684304 -1627152 5680768 1626952 5680672 1627184 5684304 1627248 5680800 -1627184 5684304 1625528 5685408 1627216 5684560 1627248 5680800 -1626744 5680528 1625296 5685392 1627184 5684304 1626952 5680672 -1626952 5680672 1626744 5680528 1627184 5684304 1627152 5680768 -1625296 5685392 1627184 5684304 1626744 5680528 1625120 5685400 -1625296 5685392 1625528 5685408 1627184 5684304 1625120 5685400 -1627184 5684304 1626952 5680672 1626744 5680528 1625120 5685400 -1627216 5684560 1627184 5684304 1625528 5685408 1626064 5685480 -1627184 5684304 1625296 5685392 1625528 5685408 1626064 5685480 -1627216 5684560 1627184 5684304 1626064 5685480 1626216 5685512 -1627216 5684560 1627248 5680800 1627184 5684304 1626064 5685480 -1626744 5680528 1626632 5680392 1625120 5685400 1627184 5684304 -1627216 5684560 1627752 5680904 1627248 5680800 1627184 5684304 -1627248 5680800 1627152 5680768 1627184 5684304 1627752 5680904 -1627216 5684560 1627752 5680904 1627184 5684304 1626064 5685480 -1627216 5684560 1627944 5680984 1627752 5680904 1627184 5684304 -1627216 5684560 1627944 5680984 1627184 5684304 1626064 5685480 -1627216 5684560 1628016 5680960 1627944 5680984 1627184 5684304 -1627216 5684560 1628016 5680960 1627184 5684304 1626064 5685480 -1627944 5680984 1627752 5680904 1627184 5684304 1628016 5680960 -1627752 5680904 1627616 5680840 1627248 5680800 1627184 5684304 -1627216 5684560 1628568 5685304 1628016 5680960 1627184 5684304 -1627216 5684560 1628568 5685304 1627184 5684304 1626064 5685480 -1628016 5680960 1627944 5680984 1627184 5684304 1628568 5685304 -1628568 5685304 1628096 5680872 1628016 5680960 1627184 5684304 -1627216 5684560 1627384 5684864 1628568 5685304 1627184 5684304 -1627216 5684560 1627384 5684864 1627184 5684304 1626064 5685480 -1627216 5684560 1627256 5684656 1627384 5684864 1627184 5684304 -1627216 5684560 1627256 5684656 1627184 5684304 1626064 5685480 -1628568 5685304 1628016 5680960 1627184 5684304 1627384 5684864 -1627384 5684864 1627672 5685152 1628568 5685304 1627184 5684304 -1627384 5684864 1628568 5685304 1627184 5684304 1627256 5684656 -1627752 5680904 1627248 5680800 1627184 5684304 1627944 5680984 -1626744 5680528 1627128 5684096 1627184 5684304 1626952 5680672 -1627128 5684096 1625120 5685400 1627184 5684304 1626952 5680672 -1626744 5680528 1625120 5685400 1627128 5684096 1626952 5680672 -1627184 5684304 1627152 5680768 1626952 5680672 1627128 5684096 -1627184 5684304 1627248 5680800 1627152 5680768 1627128 5684096 -1627184 5684304 1627752 5680904 1627248 5680800 1627128 5684096 -1627248 5680800 1627152 5680768 1627128 5684096 1627752 5680904 -1627184 5684304 1627752 5680904 1627128 5684096 1625120 5685400 -1626952 5680672 1626744 5680528 1627128 5684096 1627152 5680768 -1627152 5680768 1626952 5680672 1627128 5684096 1627248 5680800 -1627184 5684304 1627128 5684096 1625120 5685400 1625296 5685392 -1627184 5684304 1627128 5684096 1625296 5685392 1625528 5685408 -1627184 5684304 1627128 5684096 1625528 5685408 1626064 5685480 -1627128 5684096 1625296 5685392 1625528 5685408 1626064 5685480 -1627184 5684304 1627752 5680904 1627128 5684096 1626064 5685480 -1627128 5684096 1626744 5680528 1625120 5685400 1625296 5685392 -1627128 5684096 1625120 5685400 1625296 5685392 1625528 5685408 -1627184 5684304 1627128 5684096 1626064 5685480 1627216 5684560 -1627752 5680904 1627616 5680840 1627248 5680800 1627128 5684096 -1625120 5685400 1627128 5684096 1626744 5680528 1626632 5680392 -1627184 5684304 1627944 5680984 1627752 5680904 1627128 5684096 -1627752 5680904 1627248 5680800 1627128 5684096 1627944 5680984 -1627184 5684304 1627944 5680984 1627128 5684096 1626064 5685480 -1627184 5684304 1628016 5680960 1627944 5680984 1627128 5684096 -1627184 5684304 1628016 5680960 1627128 5684096 1626064 5685480 -1627184 5684304 1628568 5685304 1628016 5680960 1627128 5684096 -1627184 5684304 1628568 5685304 1627128 5684096 1626064 5685480 -1628016 5680960 1627944 5680984 1627128 5684096 1628568 5685304 -1627184 5684304 1627384 5684864 1628568 5685304 1627128 5684096 -1628568 5685304 1628096 5680872 1628016 5680960 1627128 5684096 -1627944 5680984 1627752 5680904 1627128 5684096 1628016 5680960 -1627128 5684096 1627160 5684040 1628016 5680960 1627944 5680984 -1627128 5684096 1628568 5685304 1627160 5684040 1627944 5680984 -1628568 5685304 1627160 5684040 1627128 5684096 1627184 5684304 -1627160 5684040 1627944 5680984 1627128 5684096 1627184 5684304 -1627160 5684040 1628568 5685304 1628016 5680960 1627944 5680984 -1628568 5685304 1628016 5680960 1627160 5684040 1627184 5684304 -1628568 5685304 1627160 5684040 1627184 5684304 1627384 5684864 -1628016 5680960 1627160 5684040 1628568 5685304 1628096 5680872 -1627128 5684096 1627160 5684040 1627944 5680984 1627752 5680904 -1627128 5684096 1627160 5684040 1627752 5680904 1627248 5680800 -1627128 5684096 1627160 5684040 1627248 5680800 1627152 5680768 -1627160 5684040 1627752 5680904 1627248 5680800 1627152 5680768 -1627160 5684040 1628016 5680960 1627944 5680984 1627752 5680904 -1627128 5684096 1627184 5684304 1627160 5684040 1627152 5680768 -1627128 5684096 1627160 5684040 1627152 5680768 1626952 5680672 -1627160 5684040 1627248 5680800 1627152 5680768 1626952 5680672 -1627128 5684096 1627160 5684040 1626952 5680672 1626744 5680528 -1627128 5684096 1627184 5684304 1627160 5684040 1626744 5680528 -1627128 5684096 1627160 5684040 1626744 5680528 1625120 5685400 -1627160 5684040 1626952 5680672 1626744 5680528 1625120 5685400 -1627128 5684096 1627160 5684040 1625120 5685400 1625296 5685392 -1627128 5684096 1627184 5684304 1627160 5684040 1625120 5685400 -1627160 5684040 1627152 5680768 1626952 5680672 1626744 5680528 -1627752 5680904 1627616 5680840 1627248 5680800 1627160 5684040 -1626744 5680528 1626632 5680392 1625120 5685400 1627160 5684040 -1627160 5684040 1627944 5680984 1627752 5680904 1627248 5680800 -1627160 5684040 1627272 5683976 1628016 5680960 1627944 5680984 -1627272 5683976 1628568 5685304 1628016 5680960 1627944 5680984 -1627160 5684040 1627272 5683976 1627944 5680984 1627752 5680904 -1627272 5683976 1628016 5680960 1627944 5680984 1627752 5680904 -1627160 5684040 1628568 5685304 1627272 5683976 1627752 5680904 -1628568 5685304 1627272 5683976 1627160 5684040 1627184 5684304 -1628568 5685304 1628016 5680960 1627272 5683976 1627184 5684304 -1627160 5684040 1627128 5684096 1627184 5684304 1627272 5683976 -1627272 5683976 1627752 5680904 1627160 5684040 1627128 5684096 -1627184 5684304 1628568 5685304 1627272 5683976 1627128 5684096 -1628568 5685304 1627272 5683976 1627184 5684304 1627384 5684864 -1628568 5685304 1628016 5680960 1627272 5683976 1627384 5684864 -1627272 5683976 1627128 5684096 1627184 5684304 1627384 5684864 -1628568 5685304 1627272 5683976 1627384 5684864 1627672 5685152 -1628568 5685304 1628016 5680960 1627272 5683976 1627672 5685152 -1627384 5684864 1627560 5685136 1627672 5685152 1627272 5683976 -1627272 5683976 1627184 5684304 1627384 5684864 1627672 5685152 -1628568 5685304 1627272 5683976 1627672 5685152 1628032 5685392 -1628016 5680960 1627272 5683976 1628568 5685304 1628096 5680872 -1627184 5684304 1627256 5684656 1627384 5684864 1627272 5683976 -1627184 5684304 1627256 5684656 1627272 5683976 1627128 5684096 -1627184 5684304 1627216 5684560 1627256 5684656 1627272 5683976 -1627384 5684864 1627672 5685152 1627272 5683976 1627256 5684656 -1627160 5684040 1627272 5683976 1627752 5680904 1627248 5680800 -1627160 5684040 1627272 5683976 1627248 5680800 1627152 5680768 -1627160 5684040 1627272 5683976 1627152 5680768 1626952 5680672 -1627272 5683976 1627944 5680984 1627752 5680904 1627248 5680800 -1627160 5684040 1627128 5684096 1627272 5683976 1627152 5680768 -1627752 5680904 1627616 5680840 1627248 5680800 1627272 5683976 -1627272 5683976 1627752 5680904 1627248 5680800 1627152 5680768 -1627272 5683976 1627344 5683896 1628016 5680960 1627944 5680984 -1627272 5683976 1628568 5685304 1627344 5683896 1627944 5680984 -1628568 5685304 1627344 5683896 1627272 5683976 1627672 5685152 -1627344 5683896 1627944 5680984 1627272 5683976 1627672 5685152 -1627344 5683896 1628568 5685304 1628016 5680960 1627944 5680984 -1627272 5683976 1627344 5683896 1627944 5680984 1627752 5680904 -1627344 5683896 1628016 5680960 1627944 5680984 1627752 5680904 -1627272 5683976 1627672 5685152 1627344 5683896 1627752 5680904 -1627272 5683976 1627344 5683896 1627752 5680904 1627248 5680800 -1627272 5683976 1627672 5685152 1627344 5683896 1627248 5680800 -1627344 5683896 1627944 5680984 1627752 5680904 1627248 5680800 -1628568 5685304 1628016 5680960 1627344 5683896 1627672 5685152 -1627752 5680904 1627616 5680840 1627248 5680800 1627344 5683896 -1627272 5683976 1627384 5684864 1627672 5685152 1627344 5683896 -1627272 5683976 1627384 5684864 1627344 5683896 1627248 5680800 -1627672 5685152 1628568 5685304 1627344 5683896 1627384 5684864 -1627384 5684864 1627560 5685136 1627672 5685152 1627344 5683896 -1627272 5683976 1627256 5684656 1627384 5684864 1627344 5683896 -1627272 5683976 1627256 5684656 1627344 5683896 1627248 5680800 -1627384 5684864 1627672 5685152 1627344 5683896 1627256 5684656 -1628568 5685304 1627344 5683896 1627672 5685152 1628032 5685392 -1628016 5680960 1627344 5683896 1628568 5685304 1628096 5680872 -1627272 5683976 1627184 5684304 1627256 5684656 1627344 5683896 -1627272 5683976 1627184 5684304 1627344 5683896 1627248 5680800 -1627272 5683976 1627128 5684096 1627184 5684304 1627344 5683896 -1627184 5684304 1627216 5684560 1627256 5684656 1627344 5683896 -1627256 5684656 1627384 5684864 1627344 5683896 1627184 5684304 -1627272 5683976 1627344 5683896 1627248 5680800 1627152 5680768 -1627272 5683976 1627344 5683896 1627152 5680768 1627160 5684040 -1627272 5683976 1627184 5684304 1627344 5683896 1627160 5684040 -1627152 5680768 1626952 5680672 1627160 5684040 1627344 5683896 -1627160 5684040 1627272 5683976 1627344 5683896 1626952 5680672 -1627344 5683896 1627752 5680904 1627248 5680800 1627152 5680768 -1626952 5680672 1626744 5680528 1627160 5684040 1627344 5683896 -1627344 5683896 1627248 5680800 1627152 5680768 1626952 5680672 -1627344 5683896 1627344 5683856 1627248 5680800 1627152 5680768 -1627752 5680904 1627344 5683856 1627344 5683896 1627944 5680984 -1627344 5683896 1628016 5680960 1627944 5680984 1627344 5683856 -1627344 5683896 1628568 5685304 1628016 5680960 1627344 5683856 -1628016 5680960 1627944 5680984 1627344 5683856 1628568 5685304 -1627944 5680984 1627752 5680904 1627344 5683856 1628016 5680960 -1627344 5683896 1628568 5685304 1627344 5683856 1627152 5680768 -1627344 5683896 1627672 5685152 1628568 5685304 1627344 5683856 -1627344 5683856 1627752 5680904 1627248 5680800 1627152 5680768 -1627752 5680904 1627248 5680800 1627344 5683856 1627944 5680984 -1627248 5680800 1627344 5683856 1627752 5680904 1627616 5680840 -1628568 5685304 1628096 5680872 1628016 5680960 1627344 5683856 -1627344 5683896 1627344 5683856 1627152 5680768 1626952 5680672 -1627344 5683896 1627344 5683856 1626952 5680672 1627160 5684040 -1627344 5683896 1627344 5683856 1627160 5684040 1627272 5683976 -1627344 5683856 1626952 5680672 1627160 5684040 1627272 5683976 -1627344 5683856 1627248 5680800 1627152 5680768 1626952 5680672 -1627344 5683896 1628568 5685304 1627344 5683856 1627272 5683976 -1626952 5680672 1626744 5680528 1627160 5684040 1627344 5683856 -1627344 5683856 1627152 5680768 1626952 5680672 1627160 5684040 -1627344 5683856 1627296 5683696 1627160 5684040 1627272 5683976 -1627344 5683856 1627296 5683696 1627272 5683976 1627344 5683896 -1627160 5684040 1627296 5683696 1626952 5680672 1626744 5680528 -1627160 5684040 1627296 5683696 1626744 5680528 1625120 5685400 -1627160 5684040 1627296 5683696 1625120 5685400 1627128 5684096 -1627296 5683696 1626744 5680528 1625120 5685400 1627128 5684096 -1625120 5685400 1625296 5685392 1627128 5684096 1627296 5683696 -1627296 5683696 1626952 5680672 1626744 5680528 1625120 5685400 -1627344 5683856 1626952 5680672 1627296 5683696 1627272 5683976 -1627296 5683696 1627128 5684096 1627160 5684040 1627272 5683976 -1626744 5680528 1626632 5680392 1625120 5685400 1627296 5683696 -1627296 5683696 1627344 5683856 1626952 5680672 1626744 5680528 -1626952 5680672 1627296 5683696 1627344 5683856 1627152 5680768 -1627344 5683856 1627248 5680800 1627152 5680768 1627296 5683696 -1627344 5683856 1627752 5680904 1627248 5680800 1627296 5683696 -1627248 5680800 1627152 5680768 1627296 5683696 1627752 5680904 -1627344 5683856 1627944 5680984 1627752 5680904 1627296 5683696 -1627344 5683856 1628016 5680960 1627944 5680984 1627296 5683696 -1627344 5683856 1628568 5685304 1628016 5680960 1627296 5683696 -1627344 5683856 1627344 5683896 1628568 5685304 1627296 5683696 -1628016 5680960 1627944 5680984 1627296 5683696 1628568 5685304 -1627752 5680904 1627248 5680800 1627296 5683696 1627944 5680984 -1627944 5680984 1627752 5680904 1627296 5683696 1628016 5680960 -1627296 5683696 1627272 5683976 1627344 5683856 1628568 5685304 -1627752 5680904 1627616 5680840 1627248 5680800 1627296 5683696 -1628568 5685304 1628096 5680872 1628016 5680960 1627296 5683696 -1626952 5680672 1626744 5680528 1627296 5683696 1627152 5680768 -1627152 5680768 1626952 5680672 1627296 5683696 1627248 5680800 -1627296 5683696 1627256 5683616 1625120 5685400 1627128 5684096 -1625120 5685400 1625296 5685392 1627128 5684096 1627256 5683616 -1627128 5684096 1627296 5683696 1627256 5683616 1625296 5685392 -1627296 5683696 1627256 5683616 1627128 5684096 1627160 5684040 -1627256 5683616 1625296 5685392 1627128 5684096 1627160 5684040 -1626744 5680528 1627256 5683616 1627296 5683696 1626952 5680672 -1626744 5680528 1625120 5685400 1627256 5683616 1626952 5680672 -1625296 5685392 1625528 5685408 1627128 5684096 1627256 5683616 -1627296 5683696 1627256 5683616 1627160 5684040 1627272 5683976 -1625120 5685400 1627256 5683616 1626744 5680528 1626632 5680392 -1627296 5683696 1627152 5680768 1626952 5680672 1627256 5683616 -1626952 5680672 1626744 5680528 1627256 5683616 1627152 5680768 -1627296 5683696 1627152 5680768 1627256 5683616 1627160 5684040 -1627256 5683616 1626744 5680528 1625120 5685400 1625296 5685392 -1627296 5683696 1627248 5680800 1627152 5680768 1627256 5683616 -1627296 5683696 1627752 5680904 1627248 5680800 1627256 5683616 -1627296 5683696 1627944 5680984 1627752 5680904 1627256 5683616 -1627752 5680904 1627248 5680800 1627256 5683616 1627944 5680984 -1627296 5683696 1628016 5680960 1627944 5680984 1627256 5683616 -1627296 5683696 1628568 5685304 1628016 5680960 1627256 5683616 -1627944 5680984 1627752 5680904 1627256 5683616 1628016 5680960 -1627752 5680904 1627616 5680840 1627248 5680800 1627256 5683616 -1627152 5680768 1626952 5680672 1627256 5683616 1627248 5680800 -1627296 5683696 1628016 5680960 1627256 5683616 1627160 5684040 -1627248 5680800 1627152 5680768 1627256 5683616 1627752 5680904 -1626744 5680528 1627192 5683512 1627256 5683616 1626952 5680672 -1627192 5683512 1625120 5685400 1627256 5683616 1626952 5680672 -1627256 5683616 1627152 5680768 1626952 5680672 1627192 5683512 -1626952 5680672 1626744 5680528 1627192 5683512 1627152 5680768 -1627256 5683616 1627152 5680768 1627192 5683512 1625120 5685400 -1626744 5680528 1625120 5685400 1627192 5683512 1626952 5680672 -1625120 5685400 1627192 5683512 1626744 5680528 1626632 5680392 -1625120 5685400 1627256 5683616 1627192 5683512 1626632 5680392 -1625120 5685400 1627192 5683512 1626632 5680392 1624992 5685440 -1627192 5683512 1626952 5680672 1626744 5680528 1626632 5680392 -1627256 5683616 1627248 5680800 1627152 5680768 1627192 5683512 -1627256 5683616 1627248 5680800 1627192 5683512 1625120 5685400 -1627152 5680768 1626952 5680672 1627192 5683512 1627248 5680800 -1627256 5683616 1627192 5683512 1625120 5685400 1625296 5685392 -1627256 5683616 1627192 5683512 1625296 5685392 1627128 5684096 -1627256 5683616 1627192 5683512 1627128 5684096 1627160 5684040 -1627192 5683512 1625296 5685392 1627128 5684096 1627160 5684040 -1627256 5683616 1627192 5683512 1627160 5684040 1627296 5683696 -1627256 5683616 1627248 5680800 1627192 5683512 1627160 5684040 -1627192 5683512 1626632 5680392 1625120 5685400 1625296 5685392 -1625296 5685392 1625528 5685408 1627128 5684096 1627192 5683512 -1627192 5683512 1625120 5685400 1625296 5685392 1627128 5684096 -1627256 5683616 1627752 5680904 1627248 5680800 1627192 5683512 -1627256 5683616 1627944 5680984 1627752 5680904 1627192 5683512 -1627256 5683616 1627944 5680984 1627192 5683512 1627160 5684040 -1627256 5683616 1628016 5680960 1627944 5680984 1627192 5683512 -1627944 5680984 1627752 5680904 1627192 5683512 1628016 5680960 -1627256 5683616 1628016 5680960 1627192 5683512 1627160 5684040 -1627256 5683616 1627296 5683696 1628016 5680960 1627192 5683512 -1627752 5680904 1627616 5680840 1627248 5680800 1627192 5683512 -1627248 5680800 1627152 5680768 1627192 5683512 1627752 5680904 -1627752 5680904 1627248 5680800 1627192 5683512 1627944 5680984 -1627192 5683512 1627136 5683472 1625120 5685400 1625296 5685392 -1625120 5685400 1627136 5683472 1626632 5680392 1624992 5685440 -1627192 5683512 1626632 5680392 1627136 5683472 1625296 5685392 -1627136 5683472 1626632 5680392 1625120 5685400 1625296 5685392 -1626632 5680392 1627136 5683472 1627192 5683512 1626744 5680528 -1627192 5683512 1626952 5680672 1626744 5680528 1627136 5683472 -1627192 5683512 1627152 5680768 1626952 5680672 1627136 5683472 -1627192 5683512 1627248 5680800 1627152 5680768 1627136 5683472 -1627152 5680768 1626952 5680672 1627136 5683472 1627248 5680800 -1626952 5680672 1626744 5680528 1627136 5683472 1627152 5680768 -1627136 5683472 1625296 5685392 1627192 5683512 1627248 5680800 -1626632 5680392 1625120 5685400 1627136 5683472 1626744 5680528 -1626744 5680528 1626632 5680392 1627136 5683472 1626952 5680672 -1627192 5683512 1627752 5680904 1627248 5680800 1627136 5683472 -1627248 5680800 1627152 5680768 1627136 5683472 1627752 5680904 -1627192 5683512 1627752 5680904 1627136 5683472 1625296 5685392 -1627752 5680904 1627616 5680840 1627248 5680800 1627136 5683472 -1627192 5683512 1627136 5683472 1625296 5685392 1627128 5684096 -1627192 5683512 1627136 5683472 1627128 5684096 1627160 5684040 -1627192 5683512 1627136 5683472 1627160 5684040 1627256 5683616 -1627136 5683472 1627128 5684096 1627160 5684040 1627256 5683616 -1627160 5684040 1627296 5683696 1627256 5683616 1627136 5683472 -1627136 5683472 1625120 5685400 1625296 5685392 1627128 5684096 -1625296 5685392 1625528 5685408 1627128 5684096 1627136 5683472 -1627192 5683512 1627752 5680904 1627136 5683472 1627256 5683616 -1627136 5683472 1625296 5685392 1627128 5684096 1627160 5684040 -1627192 5683512 1627944 5680984 1627752 5680904 1627136 5683472 -1627192 5683512 1628016 5680960 1627944 5680984 1627136 5683472 -1627192 5683512 1627944 5680984 1627136 5683472 1627256 5683616 -1627752 5680904 1627248 5680800 1627136 5683472 1627944 5680984 -1625120 5685400 1627128 5683456 1626632 5680392 1624992 5685440 -1627136 5683472 1627128 5683456 1625120 5685400 1625296 5685392 -1627136 5683472 1627128 5683456 1625296 5685392 1627128 5684096 -1625296 5685392 1625528 5685408 1627128 5684096 1627128 5683456 -1625528 5685408 1626064 5685480 1627128 5684096 1627128 5683456 -1627128 5684096 1627136 5683472 1627128 5683456 1625528 5685408 -1627128 5683456 1625120 5685400 1625296 5685392 1625528 5685408 -1626632 5680392 1627128 5683456 1627136 5683472 1626744 5680528 -1626632 5680392 1625120 5685400 1627128 5683456 1626744 5680528 -1627136 5683472 1626744 5680528 1627128 5683456 1627128 5684096 -1627128 5683456 1626632 5680392 1625120 5685400 1625296 5685392 -1627136 5683472 1626952 5680672 1626744 5680528 1627128 5683456 -1627136 5683472 1627152 5680768 1626952 5680672 1627128 5683456 -1627136 5683472 1627248 5680800 1627152 5680768 1627128 5683456 -1627136 5683472 1627752 5680904 1627248 5680800 1627128 5683456 -1627248 5680800 1627152 5680768 1627128 5683456 1627752 5680904 -1627152 5680768 1626952 5680672 1627128 5683456 1627248 5680800 -1627752 5680904 1627616 5680840 1627248 5680800 1627128 5683456 -1626744 5680528 1626632 5680392 1627128 5683456 1626952 5680672 -1627136 5683472 1627752 5680904 1627128 5683456 1627128 5684096 -1626952 5680672 1626744 5680528 1627128 5683456 1627152 5680768 -1627136 5683472 1627944 5680984 1627752 5680904 1627128 5683456 -1627752 5680904 1627248 5680800 1627128 5683456 1627944 5680984 -1627136 5683472 1627944 5680984 1627128 5683456 1627128 5684096 -1627136 5683472 1627128 5683456 1627128 5684096 1627160 5684040 -1627136 5683472 1627192 5683512 1627944 5680984 1627128 5683456 -1627192 5683512 1628016 5680960 1627944 5680984 1627128 5683456 -1627136 5683472 1627192 5683512 1627128 5683456 1627128 5684096 -1627944 5680984 1627752 5680904 1627128 5683456 1627192 5683512 -1625120 5685400 1627064 5683416 1626632 5680392 1624992 5685440 -1626632 5680392 1624912 5685464 1624992 5685440 1627064 5683416 -1626632 5680392 1626592 5680320 1624912 5685464 1627064 5683416 -1627064 5683416 1627128 5683456 1626632 5680392 1624912 5685464 -1624992 5685440 1625120 5685400 1627064 5683416 1624912 5685464 -1626632 5680392 1627064 5683416 1627128 5683456 1626744 5680528 -1626632 5680392 1624912 5685464 1627064 5683416 1626744 5680528 -1627064 5683416 1625120 5685400 1627128 5683456 1626744 5680528 -1625120 5685400 1627128 5683456 1627064 5683416 1624992 5685440 -1627128 5683456 1626952 5680672 1626744 5680528 1627064 5683416 -1626744 5680528 1626632 5680392 1627064 5683416 1626952 5680672 -1627128 5683456 1626952 5680672 1627064 5683416 1625120 5685400 -1627128 5683456 1627064 5683416 1625120 5685400 1625296 5685392 -1627128 5683456 1626952 5680672 1627064 5683416 1625296 5685392 -1627064 5683416 1624992 5685440 1625120 5685400 1625296 5685392 -1627128 5683456 1627064 5683416 1625296 5685392 1625528 5685408 -1627128 5683456 1627064 5683416 1625528 5685408 1627128 5684096 -1625528 5685408 1626064 5685480 1627128 5684096 1627064 5683416 -1627128 5683456 1627064 5683416 1627128 5684096 1627136 5683472 -1627064 5683416 1625528 5685408 1627128 5684096 1627136 5683472 -1627128 5683456 1626952 5680672 1627064 5683416 1627136 5683472 -1627064 5683416 1625296 5685392 1625528 5685408 1627128 5684096 -1627064 5683416 1625120 5685400 1625296 5685392 1625528 5685408 -1627128 5683456 1627152 5680768 1626952 5680672 1627064 5683416 -1627128 5683456 1627152 5680768 1627064 5683416 1627136 5683472 -1627128 5683456 1627248 5680800 1627152 5680768 1627064 5683416 -1627128 5683456 1627752 5680904 1627248 5680800 1627064 5683416 -1627128 5683456 1627944 5680984 1627752 5680904 1627064 5683416 -1627752 5680904 1627248 5680800 1627064 5683416 1627944 5680984 -1627128 5683456 1627944 5680984 1627064 5683416 1627136 5683472 -1627248 5680800 1627152 5680768 1627064 5683416 1627752 5680904 -1627752 5680904 1627616 5680840 1627248 5680800 1627064 5683416 -1626952 5680672 1626744 5680528 1627064 5683416 1627152 5680768 -1627152 5680768 1626952 5680672 1627064 5683416 1627248 5680800 -1624912 5685464 1624952 5685472 1624992 5685440 1627064 5683416 -1627128 5683456 1627192 5683512 1627944 5680984 1627064 5683416 -1627128 5684096 1627160 5684040 1627136 5683472 1627064 5683416 -1627160 5684040 1627256 5683616 1627136 5683472 1627064 5683416 -1627136 5683472 1627128 5683456 1627064 5683416 1627160 5684040 -1627128 5684096 1627160 5684040 1627064 5683416 1625528 5685408 -1627064 5683416 1626968 5683384 1624912 5685464 1624992 5685440 -1624912 5685464 1626968 5683384 1626632 5680392 1626592 5680320 -1626632 5680392 1626968 5683384 1627064 5683416 1626744 5680528 -1627064 5683416 1626744 5680528 1626968 5683384 1624992 5685440 -1626968 5683384 1626632 5680392 1624912 5685464 1624992 5685440 -1626632 5680392 1624912 5685464 1626968 5683384 1626744 5680528 -1627064 5683416 1626968 5683384 1624992 5685440 1625120 5685400 -1626968 5683384 1624912 5685464 1624992 5685440 1625120 5685400 -1627064 5683416 1626744 5680528 1626968 5683384 1625120 5685400 -1627064 5683416 1626952 5680672 1626744 5680528 1626968 5683384 -1626744 5680528 1626632 5680392 1626968 5683384 1626952 5680672 -1627064 5683416 1626952 5680672 1626968 5683384 1625120 5685400 -1627064 5683416 1626968 5683384 1625120 5685400 1625296 5685392 -1627064 5683416 1626952 5680672 1626968 5683384 1625296 5685392 -1626968 5683384 1624992 5685440 1625120 5685400 1625296 5685392 -1627064 5683416 1627152 5680768 1626952 5680672 1626968 5683384 -1627064 5683416 1627152 5680768 1626968 5683384 1625296 5685392 -1626952 5680672 1626744 5680528 1626968 5683384 1627152 5680768 -1627064 5683416 1626968 5683384 1625296 5685392 1625528 5685408 -1627064 5683416 1627152 5680768 1626968 5683384 1625528 5685408 -1626968 5683384 1625120 5685400 1625296 5685392 1625528 5685408 -1627064 5683416 1626968 5683384 1625528 5685408 1627128 5684096 -1625528 5685408 1626064 5685480 1627128 5684096 1626968 5683384 -1627064 5683416 1627152 5680768 1626968 5683384 1627128 5684096 -1627064 5683416 1626968 5683384 1627128 5684096 1627160 5684040 -1627064 5683416 1627152 5680768 1626968 5683384 1627160 5684040 -1626968 5683384 1625528 5685408 1627128 5684096 1627160 5684040 -1626968 5683384 1625296 5685392 1625528 5685408 1627128 5684096 -1627064 5683416 1627248 5680800 1627152 5680768 1626968 5683384 -1627064 5683416 1627248 5680800 1626968 5683384 1627160 5684040 -1627064 5683416 1627752 5680904 1627248 5680800 1626968 5683384 -1627064 5683416 1627752 5680904 1626968 5683384 1627160 5684040 -1627064 5683416 1627944 5680984 1627752 5680904 1626968 5683384 -1627064 5683416 1627944 5680984 1626968 5683384 1627160 5684040 -1627064 5683416 1627128 5683456 1627944 5680984 1626968 5683384 -1627752 5680904 1627248 5680800 1626968 5683384 1627944 5680984 -1627752 5680904 1627616 5680840 1627248 5680800 1626968 5683384 -1627152 5680768 1626952 5680672 1626968 5683384 1627248 5680800 -1627248 5680800 1627152 5680768 1626968 5683384 1627752 5680904 -1624912 5685464 1624952 5685472 1624992 5685440 1626968 5683384 -1627064 5683416 1626968 5683384 1627160 5684040 1627136 5683472 -1627064 5683416 1627944 5680984 1626968 5683384 1627136 5683472 -1627160 5684040 1627256 5683616 1627136 5683472 1626968 5683384 -1627064 5683416 1626968 5683384 1627136 5683472 1627128 5683456 -1626968 5683384 1627128 5684096 1627160 5684040 1627136 5683472 -1624912 5685464 1626568 5683384 1626632 5680392 1626592 5680320 -1624912 5685464 1626568 5683384 1626592 5680320 1621048 5686008 -1626968 5683384 1626568 5683384 1624912 5685464 1624992 5685440 -1626968 5683384 1626568 5683384 1624992 5685440 1625120 5685400 -1626568 5683384 1624912 5685464 1624992 5685440 1625120 5685400 -1626632 5680392 1626568 5683384 1626968 5683384 1626744 5680528 -1626968 5683384 1626952 5680672 1626744 5680528 1626568 5683384 -1626744 5680528 1626632 5680392 1626568 5683384 1626952 5680672 -1626968 5683384 1626952 5680672 1626568 5683384 1625120 5685400 -1624912 5685464 1624992 5685440 1626568 5683384 1626592 5680320 -1626968 5683384 1626568 5683384 1625120 5685400 1625296 5685392 -1626568 5683384 1624992 5685440 1625120 5685400 1625296 5685392 -1626968 5683384 1626952 5680672 1626568 5683384 1625296 5685392 -1626968 5683384 1627152 5680768 1626952 5680672 1626568 5683384 -1626952 5680672 1626744 5680528 1626568 5683384 1627152 5680768 -1626968 5683384 1627152 5680768 1626568 5683384 1625296 5685392 -1626968 5683384 1626568 5683384 1625296 5685392 1625528 5685408 -1626968 5683384 1627152 5680768 1626568 5683384 1625528 5685408 -1626568 5683384 1625120 5685400 1625296 5685392 1625528 5685408 -1626968 5683384 1627248 5680800 1627152 5680768 1626568 5683384 -1626968 5683384 1626568 5683384 1625528 5685408 1627128 5684096 -1625528 5685408 1626064 5685480 1627128 5684096 1626568 5683384 -1626064 5685480 1627184 5684304 1627128 5684096 1626568 5683384 -1626968 5683384 1627152 5680768 1626568 5683384 1627128 5684096 -1626568 5683384 1625296 5685392 1625528 5685408 1626064 5685480 -1626968 5683384 1626568 5683384 1627128 5684096 1627160 5684040 -1626968 5683384 1627152 5680768 1626568 5683384 1627160 5684040 -1626968 5683384 1626568 5683384 1627160 5684040 1627136 5683472 -1627128 5684096 1627160 5684040 1626568 5683384 1626064 5685480 -1626568 5683384 1626744 5680528 1626632 5680392 1626592 5680320 -1624912 5685464 1624952 5685472 1624992 5685440 1626568 5683384 -1624912 5685464 1626328 5683352 1626592 5680320 1621048 5686008 -1626592 5680320 1626328 5683352 1626568 5683384 1626632 5680392 -1626568 5683384 1626328 5683352 1624912 5685464 1624992 5685440 -1626568 5683384 1626328 5683352 1624992 5685440 1625120 5685400 -1626568 5683384 1626328 5683352 1625120 5685400 1625296 5685392 -1626328 5683352 1624992 5685440 1625120 5685400 1625296 5685392 -1626328 5683352 1624912 5685464 1624992 5685440 1625120 5685400 -1626568 5683384 1626328 5683352 1625296 5685392 1625528 5685408 -1626328 5683352 1625120 5685400 1625296 5685392 1625528 5685408 -1624912 5685464 1626328 5683352 1621048 5686008 1621112 5686056 -1626568 5683384 1626328 5683352 1625528 5685408 1626064 5685480 -1626568 5683384 1626328 5683352 1626064 5685480 1627128 5684096 -1626064 5685480 1627184 5684304 1627128 5684096 1626328 5683352 -1626328 5683352 1625296 5685392 1625528 5685408 1626064 5685480 -1626328 5683352 1625528 5685408 1626064 5685480 1627128 5684096 -1626568 5683384 1626328 5683352 1627128 5684096 1627160 5684040 -1626328 5683352 1626632 5680392 1626592 5680320 1621048 5686008 -1626568 5683384 1626744 5680528 1626632 5680392 1626328 5683352 -1626632 5680392 1626592 5680320 1626328 5683352 1626744 5680528 -1626568 5683384 1626952 5680672 1626744 5680528 1626328 5683352 -1626568 5683384 1627152 5680768 1626952 5680672 1626328 5683352 -1626952 5680672 1626744 5680528 1626328 5683352 1627152 5680768 -1626568 5683384 1626968 5683384 1627152 5680768 1626328 5683352 -1626744 5680528 1626632 5680392 1626328 5683352 1626952 5680672 -1626328 5683352 1627128 5684096 1626568 5683384 1627152 5680768 -1624912 5685464 1624992 5685440 1626328 5683352 1621048 5686008 -1624912 5685464 1624952 5685472 1624992 5685440 1626328 5683352 -1626592 5680320 1626576 5680264 1621048 5686008 1626328 5683352 -1621048 5686008 1624912 5685464 1626328 5683352 1626576 5680264 -1626576 5680264 1620912 5685984 1621048 5686008 1626328 5683352 -1626592 5680320 1626576 5680264 1626328 5683352 1626632 5680392 -1626328 5683352 1626296 5683360 1621048 5686008 1624912 5685464 -1621048 5686008 1626296 5683360 1626576 5680264 1620912 5685984 -1621048 5686008 1621112 5686056 1624912 5685464 1626296 5683360 -1626328 5683352 1626576 5680264 1626296 5683360 1624912 5685464 -1626296 5683360 1626576 5680264 1621048 5686008 1624912 5685464 -1626328 5683352 1626296 5683360 1624912 5685464 1624992 5685440 -1626296 5683360 1621048 5686008 1624912 5685464 1624992 5685440 -1626328 5683352 1626296 5683360 1624992 5685440 1625120 5685400 -1626328 5683352 1626296 5683360 1625120 5685400 1625296 5685392 -1626328 5683352 1626296 5683360 1625296 5685392 1625528 5685408 -1626296 5683360 1625120 5685400 1625296 5685392 1625528 5685408 -1626296 5683360 1624992 5685440 1625120 5685400 1625296 5685392 -1626328 5683352 1626296 5683360 1625528 5685408 1626064 5685480 -1626296 5683360 1625296 5685392 1625528 5685408 1626064 5685480 -1626328 5683352 1626296 5683360 1626064 5685480 1627128 5684096 -1626064 5685480 1627184 5684304 1627128 5684096 1626296 5683360 -1626328 5683352 1626296 5683360 1627128 5684096 1626568 5683384 -1626296 5683360 1625528 5685408 1626064 5685480 1627128 5684096 -1626296 5683360 1626064 5685480 1627128 5684096 1626568 5683384 -1627128 5684096 1627160 5684040 1626568 5683384 1626296 5683360 -1626328 5683352 1626576 5680264 1626296 5683360 1626568 5683384 -1626296 5683360 1624912 5685464 1624992 5685440 1625120 5685400 -1624912 5685464 1624952 5685472 1624992 5685440 1626296 5683360 -1626576 5680264 1626296 5683360 1626328 5683352 1626592 5680320 -1626576 5680264 1621048 5686008 1626296 5683360 1626592 5680320 -1626328 5683352 1626632 5680392 1626592 5680320 1626296 5683360 -1626328 5683352 1626744 5680528 1626632 5680392 1626296 5683360 -1626632 5680392 1626592 5680320 1626296 5683360 1626744 5680528 -1626296 5683360 1626568 5683384 1626328 5683352 1626744 5680528 -1626328 5683352 1626952 5680672 1626744 5680528 1626296 5683360 -1626592 5680320 1626576 5680264 1626296 5683360 1626632 5680392 -1626576 5680264 1626248 5683328 1626296 5683360 1626592 5680320 -1626576 5680264 1621048 5686008 1626248 5683328 1626592 5680320 -1626248 5683328 1621048 5686008 1626296 5683360 1626592 5680320 -1621048 5686008 1626248 5683328 1626576 5680264 1620912 5685984 -1626296 5683360 1626248 5683328 1621048 5686008 1624912 5685464 -1626296 5683360 1626248 5683328 1624912 5685464 1624992 5685440 -1626296 5683360 1626592 5680320 1626248 5683328 1624992 5685440 -1626248 5683328 1626576 5680264 1621048 5686008 1624912 5685464 -1621048 5686008 1621112 5686056 1624912 5685464 1626248 5683328 -1626248 5683328 1621048 5686008 1624912 5685464 1624992 5685440 -1626296 5683360 1626248 5683328 1624992 5685440 1625120 5685400 -1626248 5683328 1624912 5685464 1624992 5685440 1625120 5685400 -1626296 5683360 1626592 5680320 1626248 5683328 1625120 5685400 -1626296 5683360 1626248 5683328 1625120 5685400 1625296 5685392 -1626296 5683360 1626248 5683328 1625296 5685392 1625528 5685408 -1626296 5683360 1626248 5683328 1625528 5685408 1626064 5685480 -1626296 5683360 1626592 5680320 1626248 5683328 1625528 5685408 -1626248 5683328 1625120 5685400 1625296 5685392 1625528 5685408 -1626248 5683328 1624992 5685440 1625120 5685400 1625296 5685392 -1624912 5685464 1624952 5685472 1624992 5685440 1626248 5683328 -1626296 5683360 1626632 5680392 1626592 5680320 1626248 5683328 -1626592 5680320 1626576 5680264 1626248 5683328 1626632 5680392 -1626296 5683360 1626632 5680392 1626248 5683328 1625528 5685408 -1626296 5683360 1626744 5680528 1626632 5680392 1626248 5683328 -1626296 5683360 1626328 5683352 1626744 5680528 1626248 5683328 -1626296 5683360 1626328 5683352 1626248 5683328 1625528 5685408 -1626744 5680528 1626632 5680392 1626248 5683328 1626328 5683352 -1626328 5683352 1626952 5680672 1626744 5680528 1626248 5683328 -1626328 5683352 1626952 5680672 1626248 5683328 1626296 5683360 -1626328 5683352 1627152 5680768 1626952 5680672 1626248 5683328 -1626328 5683352 1627152 5680768 1626248 5683328 1626296 5683360 -1626328 5683352 1626568 5683384 1627152 5680768 1626248 5683328 -1626328 5683352 1626568 5683384 1626248 5683328 1626296 5683360 -1627152 5680768 1626952 5680672 1626248 5683328 1626568 5683384 -1626568 5683384 1626968 5683384 1627152 5680768 1626248 5683328 -1626744 5680528 1626632 5680392 1626248 5683328 1626952 5680672 -1626952 5680672 1626744 5680528 1626248 5683328 1627152 5680768 -1626632 5680392 1626592 5680320 1626248 5683328 1626744 5680528 -1626576 5680264 1626184 5683296 1626248 5683328 1626592 5680320 -1626576 5680264 1621048 5686008 1626184 5683296 1626592 5680320 -1626248 5683328 1626632 5680392 1626592 5680320 1626184 5683296 -1626592 5680320 1626576 5680264 1626184 5683296 1626632 5680392 -1626248 5683328 1626184 5683296 1621048 5686008 1624912 5685464 -1626184 5683296 1626576 5680264 1621048 5686008 1624912 5685464 -1626184 5683296 1624912 5685464 1626248 5683328 1626632 5680392 -1621048 5686008 1626184 5683296 1626576 5680264 1620912 5685984 -1621048 5686008 1624912 5685464 1626184 5683296 1620912 5685984 -1626184 5683296 1626592 5680320 1626576 5680264 1620912 5685984 -1626576 5680264 1617424 5683592 1620912 5685984 1626184 5683296 -1621048 5686008 1621112 5686056 1624912 5685464 1626184 5683296 -1626248 5683328 1626184 5683296 1624912 5685464 1624992 5685440 -1626248 5683328 1626184 5683296 1624992 5685440 1625120 5685400 -1626184 5683296 1621048 5686008 1624912 5685464 1624992 5685440 -1626248 5683328 1626632 5680392 1626184 5683296 1625120 5685400 -1626184 5683296 1624912 5685464 1624992 5685440 1625120 5685400 -1626248 5683328 1626184 5683296 1625120 5685400 1625296 5685392 -1626184 5683296 1624992 5685440 1625120 5685400 1625296 5685392 -1626248 5683328 1626632 5680392 1626184 5683296 1625296 5685392 -1626248 5683328 1626184 5683296 1625296 5685392 1625528 5685408 -1626248 5683328 1626184 5683296 1625528 5685408 1626296 5683360 -1625528 5685408 1626064 5685480 1626296 5683360 1626184 5683296 -1626248 5683328 1626632 5680392 1626184 5683296 1626296 5683360 -1626184 5683296 1625296 5685392 1625528 5685408 1626296 5683360 -1626184 5683296 1625120 5685400 1625296 5685392 1625528 5685408 -1624912 5685464 1624952 5685472 1624992 5685440 1626184 5683296 -1626248 5683328 1626744 5680528 1626632 5680392 1626184 5683296 -1626632 5680392 1626592 5680320 1626184 5683296 1626744 5680528 -1626248 5683328 1626744 5680528 1626184 5683296 1626296 5683360 -1626248 5683328 1626952 5680672 1626744 5680528 1626184 5683296 -1626248 5683328 1626952 5680672 1626184 5683296 1626296 5683360 -1626248 5683328 1627152 5680768 1626952 5680672 1626184 5683296 -1626248 5683328 1627152 5680768 1626184 5683296 1626296 5683360 -1626248 5683328 1626568 5683384 1627152 5680768 1626184 5683296 -1626248 5683328 1626328 5683352 1626568 5683384 1626184 5683296 -1626248 5683328 1626296 5683360 1626328 5683352 1626184 5683296 -1626248 5683328 1626328 5683352 1626184 5683296 1626296 5683360 -1626568 5683384 1627152 5680768 1626184 5683296 1626328 5683352 -1626568 5683384 1626968 5683384 1627152 5680768 1626184 5683296 -1626952 5680672 1626744 5680528 1626184 5683296 1627152 5680768 -1627152 5680768 1626952 5680672 1626184 5683296 1626568 5683384 -1626744 5680528 1626632 5680392 1626184 5683296 1626952 5680672 -1626576 5680264 1626072 5683184 1626184 5683296 1626592 5680320 -1626184 5683296 1626632 5680392 1626592 5680320 1626072 5683184 -1626072 5683184 1620912 5685984 1626184 5683296 1626632 5680392 -1620912 5685984 1626072 5683184 1626576 5680264 1617424 5683592 -1626576 5680264 1617376 5683520 1617424 5683592 1626072 5683184 -1626184 5683296 1626744 5680528 1626632 5680392 1626072 5683184 -1626632 5680392 1626592 5680320 1626072 5683184 1626744 5680528 -1626184 5683296 1626744 5680528 1626072 5683184 1620912 5685984 -1626184 5683296 1626072 5683184 1620912 5685984 1621048 5686008 -1626184 5683296 1626072 5683184 1621048 5686008 1624912 5685464 -1626184 5683296 1626744 5680528 1626072 5683184 1624912 5685464 -1626184 5683296 1626072 5683184 1624912 5685464 1624992 5685440 -1626072 5683184 1621048 5686008 1624912 5685464 1624992 5685440 -1626184 5683296 1626744 5680528 1626072 5683184 1624992 5685440 -1626072 5683184 1620912 5685984 1621048 5686008 1624912 5685464 -1621048 5686008 1621112 5686056 1624912 5685464 1626072 5683184 -1620912 5685984 1626072 5683184 1617424 5683592 1620776 5686024 -1626184 5683296 1626072 5683184 1624992 5685440 1625120 5685400 -1626184 5683296 1626072 5683184 1625120 5685400 1625296 5685392 -1626184 5683296 1626744 5680528 1626072 5683184 1625296 5685392 -1626072 5683184 1624912 5685464 1624992 5685440 1625120 5685400 -1626072 5683184 1624992 5685440 1625120 5685400 1625296 5685392 -1626184 5683296 1626072 5683184 1625296 5685392 1625528 5685408 -1620912 5685984 1621048 5686008 1626072 5683184 1617424 5683592 -1626592 5680320 1626576 5680264 1626072 5683184 1626632 5680392 -1626576 5680264 1617424 5683592 1626072 5683184 1626592 5680320 -1624912 5685464 1624952 5685472 1624992 5685440 1626072 5683184 -1626184 5683296 1626952 5680672 1626744 5680528 1626072 5683184 -1626184 5683296 1626952 5680672 1626072 5683184 1625296 5685392 -1626744 5680528 1626632 5680392 1626072 5683184 1626952 5680672 -1626184 5683296 1627152 5680768 1626952 5680672 1626072 5683184 -1626184 5683296 1627152 5680768 1626072 5683184 1625296 5685392 -1626184 5683296 1626568 5683384 1627152 5680768 1626072 5683184 -1626184 5683296 1626568 5683384 1626072 5683184 1625296 5685392 -1626184 5683296 1626328 5683352 1626568 5683384 1626072 5683184 -1626184 5683296 1626328 5683352 1626072 5683184 1625296 5685392 -1626184 5683296 1626248 5683328 1626328 5683352 1626072 5683184 -1626248 5683328 1626296 5683360 1626328 5683352 1626072 5683184 -1626184 5683296 1626248 5683328 1626072 5683184 1625296 5685392 -1626328 5683352 1626568 5683384 1626072 5683184 1626248 5683328 -1626568 5683384 1626968 5683384 1627152 5680768 1626072 5683184 -1626968 5683384 1627248 5680800 1627152 5680768 1626072 5683184 -1626968 5683384 1627248 5680800 1626072 5683184 1626568 5683384 -1626968 5683384 1627752 5680904 1627248 5680800 1626072 5683184 -1627152 5680768 1626952 5680672 1626072 5683184 1627248 5680800 -1626568 5683384 1626968 5683384 1626072 5683184 1626328 5683352 -1626952 5680672 1626744 5680528 1626072 5683184 1627152 5680768 -1617424 5683592 1626048 5683112 1626576 5680264 1617376 5683520 -1626072 5683184 1626048 5683112 1617424 5683592 1620912 5685984 -1626048 5683112 1626576 5680264 1617424 5683592 1620912 5685984 -1617424 5683592 1620776 5686024 1620912 5685984 1626048 5683112 -1626072 5683184 1626048 5683112 1620912 5685984 1621048 5686008 -1626048 5683112 1617424 5683592 1620912 5685984 1621048 5686008 -1626072 5683184 1626048 5683112 1621048 5686008 1624912 5685464 -1626072 5683184 1626048 5683112 1624912 5685464 1624992 5685440 -1621048 5686008 1621112 5686056 1624912 5685464 1626048 5683112 -1626048 5683112 1620912 5685984 1621048 5686008 1624912 5685464 -1626576 5680264 1626048 5683112 1626072 5683184 1626592 5680320 -1626576 5680264 1617424 5683592 1626048 5683112 1626592 5680320 -1626072 5683184 1626632 5680392 1626592 5680320 1626048 5683112 -1626072 5683184 1626744 5680528 1626632 5680392 1626048 5683112 -1626072 5683184 1626952 5680672 1626744 5680528 1626048 5683112 -1626744 5680528 1626632 5680392 1626048 5683112 1626952 5680672 -1626632 5680392 1626592 5680320 1626048 5683112 1626744 5680528 -1626592 5680320 1626576 5680264 1626048 5683112 1626632 5680392 -1626072 5683184 1626952 5680672 1626048 5683112 1624912 5685464 -1626072 5683184 1627152 5680768 1626952 5680672 1626048 5683112 -1626952 5680672 1626744 5680528 1626048 5683112 1627152 5680768 -1626072 5683184 1627248 5680800 1627152 5680768 1626048 5683112 -1626072 5683184 1626968 5683384 1627248 5680800 1626048 5683112 -1626072 5683184 1626568 5683384 1626968 5683384 1626048 5683112 -1626968 5683384 1627248 5680800 1626048 5683112 1626568 5683384 -1626968 5683384 1627752 5680904 1627248 5680800 1626048 5683112 -1627248 5680800 1627152 5680768 1626048 5683112 1626968 5683384 -1626072 5683184 1626328 5683352 1626568 5683384 1626048 5683112 -1626072 5683184 1626248 5683328 1626328 5683352 1626048 5683112 -1626248 5683328 1626296 5683360 1626328 5683352 1626048 5683112 -1626072 5683184 1626184 5683296 1626248 5683328 1626048 5683112 -1626248 5683328 1626328 5683352 1626048 5683112 1626184 5683296 -1626568 5683384 1626968 5683384 1626048 5683112 1626328 5683352 -1626328 5683352 1626568 5683384 1626048 5683112 1626248 5683328 -1626072 5683184 1626184 5683296 1626048 5683112 1624912 5685464 -1627152 5680768 1626952 5680672 1626048 5683112 1627248 5680800 -1617424 5683592 1626056 5682992 1626576 5680264 1617376 5683520 -1626576 5680264 1617344 5683488 1617376 5683520 1626056 5682992 -1626048 5683112 1626056 5682992 1617424 5683592 1620912 5685984 -1626048 5683112 1626056 5682992 1620912 5685984 1621048 5686008 -1626056 5682992 1617424 5683592 1620912 5685984 1621048 5686008 -1626048 5683112 1626576 5680264 1626056 5682992 1621048 5686008 -1626576 5680264 1626056 5682992 1626048 5683112 1626592 5680320 -1626056 5682992 1621048 5686008 1626048 5683112 1626592 5680320 -1617424 5683592 1620912 5685984 1626056 5682992 1617376 5683520 -1626056 5682992 1626592 5680320 1626576 5680264 1617376 5683520 -1617424 5683592 1620776 5686024 1620912 5685984 1626056 5682992 -1626048 5683112 1626056 5682992 1621048 5686008 1624912 5685464 -1626048 5683112 1626632 5680392 1626592 5680320 1626056 5682992 -1626048 5683112 1626632 5680392 1626056 5682992 1621048 5686008 -1626592 5680320 1626576 5680264 1626056 5682992 1626632 5680392 -1626048 5683112 1626744 5680528 1626632 5680392 1626056 5682992 -1626048 5683112 1626952 5680672 1626744 5680528 1626056 5682992 -1626048 5683112 1626952 5680672 1626056 5682992 1621048 5686008 -1626048 5683112 1627152 5680768 1626952 5680672 1626056 5682992 -1626952 5680672 1626744 5680528 1626056 5682992 1627152 5680768 -1626048 5683112 1627152 5680768 1626056 5682992 1621048 5686008 -1626744 5680528 1626632 5680392 1626056 5682992 1626952 5680672 -1626632 5680392 1626592 5680320 1626056 5682992 1626744 5680528 -1626048 5683112 1627248 5680800 1627152 5680768 1626056 5682992 -1626048 5683112 1627248 5680800 1626056 5682992 1621048 5686008 -1627152 5680768 1626952 5680672 1626056 5682992 1627248 5680800 -1626048 5683112 1626968 5683384 1627248 5680800 1626056 5682992 -1626048 5683112 1626968 5683384 1626056 5682992 1621048 5686008 -1626048 5683112 1626568 5683384 1626968 5683384 1626056 5682992 -1626048 5683112 1626568 5683384 1626056 5682992 1621048 5686008 -1626048 5683112 1626328 5683352 1626568 5683384 1626056 5682992 -1626048 5683112 1626328 5683352 1626056 5682992 1621048 5686008 -1626568 5683384 1626968 5683384 1626056 5682992 1626328 5683352 -1626968 5683384 1627752 5680904 1627248 5680800 1626056 5682992 -1626968 5683384 1627248 5680800 1626056 5682992 1626568 5683384 -1626048 5683112 1626248 5683328 1626328 5683352 1626056 5682992 -1626248 5683328 1626296 5683360 1626328 5683352 1626056 5682992 -1626048 5683112 1626248 5683328 1626056 5682992 1621048 5686008 -1626048 5683112 1626184 5683296 1626248 5683328 1626056 5682992 -1626048 5683112 1626072 5683184 1626184 5683296 1626056 5682992 -1626048 5683112 1626072 5683184 1626056 5682992 1621048 5686008 -1626184 5683296 1626248 5683328 1626056 5682992 1626072 5683184 -1626328 5683352 1626568 5683384 1626056 5682992 1626248 5683328 -1626248 5683328 1626328 5683352 1626056 5682992 1626184 5683296 -1627248 5680800 1627152 5680768 1626056 5682992 1626968 5683384 -1617376 5683520 1626048 5682960 1626576 5680264 1617344 5683488 -1626056 5682992 1626048 5682960 1617376 5683520 1617424 5683592 -1626056 5682992 1626048 5682960 1617424 5683592 1620912 5685984 -1626048 5682960 1617376 5683520 1617424 5683592 1620912 5685984 -1626056 5682992 1626048 5682960 1620912 5685984 1621048 5686008 -1626056 5682992 1626048 5682960 1621048 5686008 1626048 5683112 -1626048 5682960 1620912 5685984 1621048 5686008 1626048 5683112 -1626056 5682992 1626576 5680264 1626048 5682960 1626048 5683112 -1626576 5680264 1626048 5682960 1626056 5682992 1626592 5680320 -1626056 5682992 1626632 5680392 1626592 5680320 1626048 5682960 -1626048 5682960 1626048 5683112 1626056 5682992 1626632 5680392 -1626048 5682960 1626576 5680264 1617376 5683520 1617424 5683592 -1626048 5682960 1617424 5683592 1620912 5685984 1621048 5686008 -1626576 5680264 1617376 5683520 1626048 5682960 1626592 5680320 -1626592 5680320 1626576 5680264 1626048 5682960 1626632 5680392 -1617424 5683592 1620776 5686024 1620912 5685984 1626048 5682960 -1621048 5686008 1624912 5685464 1626048 5683112 1626048 5682960 -1626048 5683112 1626056 5682992 1626048 5682960 1624912 5685464 -1621048 5686008 1624912 5685464 1626048 5682960 1620912 5685984 -1624912 5685464 1626072 5683184 1626048 5683112 1626048 5682960 -1621048 5686008 1621112 5686056 1624912 5685464 1626048 5682960 -1626056 5682992 1626744 5680528 1626632 5680392 1626048 5682960 -1626632 5680392 1626592 5680320 1626048 5682960 1626744 5680528 -1626056 5682992 1626744 5680528 1626048 5682960 1626048 5683112 -1626056 5682992 1626952 5680672 1626744 5680528 1626048 5682960 -1626056 5682992 1627152 5680768 1626952 5680672 1626048 5682960 -1626056 5682992 1627248 5680800 1627152 5680768 1626048 5682960 -1627152 5680768 1626952 5680672 1626048 5682960 1627248 5680800 -1626056 5682992 1627248 5680800 1626048 5682960 1626048 5683112 -1626952 5680672 1626744 5680528 1626048 5682960 1627152 5680768 -1626744 5680528 1626632 5680392 1626048 5682960 1626952 5680672 -1626056 5682992 1626968 5683384 1627248 5680800 1626048 5682960 -1627248 5680800 1627152 5680768 1626048 5682960 1626968 5683384 -1626056 5682992 1626968 5683384 1626048 5682960 1626048 5683112 -1626968 5683384 1627752 5680904 1627248 5680800 1626048 5682960 -1626056 5682992 1626568 5683384 1626968 5683384 1626048 5682960 -1626056 5682992 1626568 5683384 1626048 5682960 1626048 5683112 -1626056 5682992 1626328 5683352 1626568 5683384 1626048 5682960 -1626968 5683384 1627248 5680800 1626048 5682960 1626568 5683384 -1627152 5680768 1626080 5682896 1626048 5682960 1627248 5680800 -1626048 5682960 1626968 5683384 1627248 5680800 1626080 5682896 -1627248 5680800 1627152 5680768 1626080 5682896 1626968 5683384 -1626080 5682896 1626952 5680672 1626048 5682960 1626968 5683384 -1627152 5680768 1626952 5680672 1626080 5682896 1627248 5680800 -1626968 5683384 1627752 5680904 1627248 5680800 1626080 5682896 -1626048 5682960 1626080 5682896 1626952 5680672 1626744 5680528 -1626048 5682960 1626968 5683384 1626080 5682896 1626744 5680528 -1626080 5682896 1627152 5680768 1626952 5680672 1626744 5680528 -1626048 5682960 1626080 5682896 1626744 5680528 1626632 5680392 -1626048 5682960 1626080 5682896 1626632 5680392 1626592 5680320 -1626048 5682960 1626968 5683384 1626080 5682896 1626592 5680320 -1626048 5682960 1626080 5682896 1626592 5680320 1626576 5680264 -1626080 5682896 1626632 5680392 1626592 5680320 1626576 5680264 -1626048 5682960 1626968 5683384 1626080 5682896 1626576 5680264 -1626048 5682960 1626080 5682896 1626576 5680264 1617376 5683520 -1626080 5682896 1626952 5680672 1626744 5680528 1626632 5680392 -1626080 5682896 1626744 5680528 1626632 5680392 1626592 5680320 -1626048 5682960 1626568 5683384 1626968 5683384 1626080 5682896 -1626968 5683384 1627248 5680800 1626080 5682896 1626568 5683384 -1626048 5682960 1626568 5683384 1626080 5682896 1626576 5680264 -1626048 5682960 1626056 5682992 1626568 5683384 1626080 5682896 -1626048 5682960 1626056 5682992 1626080 5682896 1626576 5680264 -1626056 5682992 1626328 5683352 1626568 5683384 1626080 5682896 -1626056 5682992 1626248 5683328 1626328 5683352 1626080 5682896 -1626056 5682992 1626328 5683352 1626080 5682896 1626048 5682960 -1626568 5683384 1626968 5683384 1626080 5682896 1626328 5683352 -1626080 5682896 1626168 5682784 1627248 5680800 1627152 5680768 -1626968 5683384 1626168 5682784 1626080 5682896 1626568 5683384 -1626080 5682896 1626168 5682784 1627152 5680768 1626952 5680672 -1626168 5682784 1627248 5680800 1627152 5680768 1626952 5680672 -1626080 5682896 1626568 5683384 1626168 5682784 1626952 5680672 -1626168 5682784 1626968 5683384 1627248 5680800 1627152 5680768 -1626968 5683384 1627248 5680800 1626168 5682784 1626568 5683384 -1626080 5682896 1626168 5682784 1626952 5680672 1626744 5680528 -1626168 5682784 1627152 5680768 1626952 5680672 1626744 5680528 -1626080 5682896 1626568 5683384 1626168 5682784 1626744 5680528 -1627248 5680800 1626168 5682784 1626968 5683384 1627752 5680904 -1627248 5680800 1627152 5680768 1626168 5682784 1627752 5680904 -1626168 5682784 1626568 5683384 1626968 5683384 1627752 5680904 -1626968 5683384 1627944 5680984 1627752 5680904 1626168 5682784 -1627248 5680800 1626168 5682784 1627752 5680904 1627616 5680840 -1626080 5682896 1626168 5682784 1626744 5680528 1626632 5680392 -1626080 5682896 1626568 5683384 1626168 5682784 1626632 5680392 -1626168 5682784 1626952 5680672 1626744 5680528 1626632 5680392 -1626080 5682896 1626168 5682784 1626632 5680392 1626592 5680320 -1626080 5682896 1626168 5682784 1626592 5680320 1626576 5680264 -1626080 5682896 1626568 5683384 1626168 5682784 1626592 5680320 -1626168 5682784 1626744 5680528 1626632 5680392 1626592 5680320 -1626080 5682896 1626328 5683352 1626568 5683384 1626168 5682784 -1626568 5683384 1626968 5683384 1626168 5682784 1626328 5683352 -1626080 5682896 1626328 5683352 1626168 5682784 1626592 5680320 -1626080 5682896 1626056 5682992 1626328 5683352 1626168 5682784 -1626080 5682896 1626056 5682992 1626168 5682784 1626592 5680320 -1626056 5682992 1626248 5683328 1626328 5683352 1626168 5682784 -1626248 5683328 1626296 5683360 1626328 5683352 1626168 5682784 -1626056 5682992 1626248 5683328 1626168 5682784 1626080 5682896 -1626080 5682896 1626048 5682960 1626056 5682992 1626168 5682784 -1626056 5682992 1626184 5683296 1626248 5683328 1626168 5682784 -1626328 5683352 1626568 5683384 1626168 5682784 1626248 5683328 -1626968 5683384 1626224 5682776 1626168 5682784 1626568 5683384 -1626168 5682784 1626328 5683352 1626568 5683384 1626224 5682776 -1626224 5682776 1627752 5680904 1626168 5682784 1626328 5683352 -1626568 5683384 1626968 5683384 1626224 5682776 1626328 5683352 -1626968 5683384 1627752 5680904 1626224 5682776 1626568 5683384 -1627752 5680904 1626224 5682776 1626968 5683384 1627944 5680984 -1627752 5680904 1626168 5682784 1626224 5682776 1627944 5680984 -1626224 5682776 1626568 5683384 1626968 5683384 1627944 5680984 -1626968 5683384 1627064 5683416 1627944 5680984 1626224 5682776 -1626168 5682784 1626224 5682776 1627752 5680904 1627248 5680800 -1626168 5682784 1626224 5682776 1627248 5680800 1627152 5680768 -1626168 5682784 1626224 5682776 1627152 5680768 1626952 5680672 -1626168 5682784 1626224 5682776 1626952 5680672 1626744 5680528 -1626224 5682776 1627152 5680768 1626952 5680672 1626744 5680528 -1626168 5682784 1626328 5683352 1626224 5682776 1626744 5680528 -1626224 5682776 1627944 5680984 1627752 5680904 1627248 5680800 -1626168 5682784 1626224 5682776 1626744 5680528 1626632 5680392 -1626224 5682776 1627248 5680800 1627152 5680768 1626952 5680672 -1627752 5680904 1627616 5680840 1627248 5680800 1626224 5682776 -1626224 5682776 1627752 5680904 1627248 5680800 1627152 5680768 -1626168 5682784 1626248 5683328 1626328 5683352 1626224 5682776 -1626248 5683328 1626296 5683360 1626328 5683352 1626224 5682776 -1626328 5683352 1626568 5683384 1626224 5682776 1626248 5683328 -1626168 5682784 1626248 5683328 1626224 5682776 1626744 5680528 -1626168 5682784 1626056 5682992 1626248 5683328 1626224 5682776 -1626168 5682784 1626056 5682992 1626224 5682776 1626744 5680528 -1626168 5682784 1626080 5682896 1626056 5682992 1626224 5682776 -1626168 5682784 1626080 5682896 1626224 5682776 1626744 5680528 -1626056 5682992 1626248 5683328 1626224 5682776 1626080 5682896 -1626080 5682896 1626048 5682960 1626056 5682992 1626224 5682776 -1626056 5682992 1626184 5683296 1626248 5683328 1626224 5682776 -1626248 5683328 1626328 5683352 1626224 5682776 1626056 5682992 -1626968 5683384 1626424 5682800 1626224 5682776 1626568 5683384 -1626224 5682776 1626328 5683352 1626568 5683384 1626424 5682800 -1626224 5682776 1626248 5683328 1626328 5683352 1626424 5682800 -1626248 5683328 1626296 5683360 1626328 5683352 1626424 5682800 -1626328 5683352 1626568 5683384 1626424 5682800 1626248 5683328 -1626568 5683384 1626968 5683384 1626424 5682800 1626328 5683352 -1626424 5682800 1627944 5680984 1626224 5682776 1626248 5683328 -1627944 5680984 1626424 5682800 1626968 5683384 1627064 5683416 -1627944 5680984 1626224 5682776 1626424 5682800 1627064 5683416 -1627944 5680984 1626424 5682800 1627064 5683416 1627128 5683456 -1626224 5682776 1626424 5682800 1627944 5680984 1627752 5680904 -1626224 5682776 1626424 5682800 1627752 5680904 1627248 5680800 -1626224 5682776 1626248 5683328 1626424 5682800 1627248 5680800 -1626424 5682800 1627064 5683416 1627944 5680984 1627752 5680904 -1626424 5682800 1627944 5680984 1627752 5680904 1627248 5680800 -1627752 5680904 1627616 5680840 1627248 5680800 1626424 5682800 -1626968 5683384 1627064 5683416 1626424 5682800 1626568 5683384 -1626224 5682776 1626424 5682800 1627248 5680800 1627152 5680768 -1626424 5682800 1627752 5680904 1627248 5680800 1627152 5680768 -1626224 5682776 1626248 5683328 1626424 5682800 1627152 5680768 -1626224 5682776 1626424 5682800 1627152 5680768 1626952 5680672 -1626224 5682776 1626424 5682800 1626952 5680672 1626744 5680528 -1626224 5682776 1626248 5683328 1626424 5682800 1626952 5680672 -1626424 5682800 1627248 5680800 1627152 5680768 1626952 5680672 -1626224 5682776 1626056 5682992 1626248 5683328 1626424 5682800 -1626248 5683328 1626328 5683352 1626424 5682800 1626056 5682992 -1626224 5682776 1626056 5682992 1626424 5682800 1626952 5680672 -1626224 5682776 1626080 5682896 1626056 5682992 1626424 5682800 -1626056 5682992 1626184 5683296 1626248 5683328 1626424 5682800 -1626248 5683328 1626328 5683352 1626424 5682800 1626184 5683296 -1626056 5682992 1626072 5683184 1626184 5683296 1626424 5682800 -1626056 5682992 1626184 5683296 1626424 5682800 1626224 5682776 -1626424 5682800 1626632 5682864 1627944 5680984 1627752 5680904 -1626424 5682800 1627064 5683416 1626632 5682864 1627752 5680904 -1627064 5683416 1626632 5682864 1626424 5682800 1626968 5683384 -1626632 5682864 1627752 5680904 1626424 5682800 1626968 5683384 -1627944 5680984 1626632 5682864 1627064 5683416 1627128 5683456 -1626424 5682800 1626632 5682864 1627752 5680904 1627248 5680800 -1626424 5682800 1626632 5682864 1627248 5680800 1627152 5680768 -1626632 5682864 1627944 5680984 1627752 5680904 1627248 5680800 -1626424 5682800 1626968 5683384 1626632 5682864 1627152 5680768 -1626632 5682864 1627752 5680904 1627248 5680800 1627152 5680768 -1627752 5680904 1627616 5680840 1627248 5680800 1626632 5682864 -1626424 5682800 1626568 5683384 1626968 5683384 1626632 5682864 -1626424 5682800 1626328 5683352 1626568 5683384 1626632 5682864 -1626424 5682800 1626248 5683328 1626328 5683352 1626632 5682864 -1626424 5682800 1626328 5683352 1626632 5682864 1627152 5680768 -1626968 5683384 1627064 5683416 1626632 5682864 1626568 5683384 -1626568 5683384 1626968 5683384 1626632 5682864 1626328 5683352 -1626632 5682864 1627128 5683456 1627944 5680984 1627752 5680904 -1627064 5683416 1627128 5683456 1626632 5682864 1626968 5683384 -1626424 5682800 1626632 5682864 1627152 5680768 1626952 5680672 -1627944 5680984 1626632 5682864 1627128 5683456 1627192 5683512 -1627128 5683456 1627008 5683120 1626632 5682864 1627064 5683416 -1626632 5682864 1627008 5683120 1627944 5680984 1627752 5680904 -1627008 5683120 1627944 5680984 1626632 5682864 1627064 5683416 -1626632 5682864 1626968 5683384 1627064 5683416 1627008 5683120 -1626632 5682864 1626568 5683384 1626968 5683384 1627008 5683120 -1627064 5683416 1627128 5683456 1627008 5683120 1626968 5683384 -1626632 5682864 1626328 5683352 1626568 5683384 1627008 5683120 -1626632 5682864 1626568 5683384 1627008 5683120 1627944 5680984 -1626968 5683384 1627064 5683416 1627008 5683120 1626568 5683384 -1627944 5680984 1627008 5683120 1627128 5683456 1627192 5683512 -1627944 5680984 1627008 5683120 1627192 5683512 1628016 5680960 -1627192 5683512 1627256 5683616 1628016 5680960 1627008 5683120 -1627008 5683120 1627128 5683456 1627192 5683512 1628016 5680960 -1627944 5680984 1626632 5682864 1627008 5683120 1628016 5680960 -1627128 5683456 1627192 5683512 1627008 5683120 1627064 5683416 -1627128 5683456 1627136 5683472 1627192 5683512 1627008 5683120 -1627008 5683120 1627192 5683200 1628016 5680960 1627944 5680984 -1628016 5680960 1627192 5683200 1627192 5683512 1627256 5683616 -1627192 5683200 1627008 5683120 1627192 5683512 1627256 5683616 -1628016 5680960 1627192 5683200 1627256 5683616 1627296 5683696 -1628016 5680960 1627192 5683200 1627296 5683696 1628568 5685304 -1627192 5683200 1627192 5683512 1627256 5683616 1627296 5683696 -1627192 5683512 1627192 5683200 1627008 5683120 1627128 5683456 -1627192 5683512 1627256 5683616 1627192 5683200 1627128 5683456 -1627008 5683120 1627192 5683200 1627944 5680984 1626632 5682864 -1627008 5683120 1627128 5683456 1627192 5683200 1627944 5680984 -1627008 5683120 1627064 5683416 1627128 5683456 1627192 5683200 -1627008 5683120 1626968 5683384 1627064 5683416 1627192 5683200 -1627008 5683120 1626568 5683384 1626968 5683384 1627192 5683200 -1627128 5683456 1627192 5683512 1627192 5683200 1627064 5683416 -1627008 5683120 1626968 5683384 1627192 5683200 1627944 5680984 -1627064 5683416 1627128 5683456 1627192 5683200 1626968 5683384 -1627192 5683200 1627296 5683696 1628016 5680960 1627944 5680984 -1627192 5683512 1627192 5683200 1627128 5683456 1627136 5683472 -1628568 5685304 1627760 5683328 1627296 5683696 1627344 5683856 -1628568 5685304 1628016 5680960 1627760 5683328 1627344 5683856 -1627760 5683328 1628016 5680960 1627296 5683696 1627344 5683856 -1628568 5685304 1627760 5683328 1627344 5683856 1627344 5683896 -1628568 5685304 1628016 5680960 1627760 5683328 1627344 5683896 -1627760 5683328 1627296 5683696 1627344 5683856 1627344 5683896 -1627296 5683696 1627760 5683328 1628016 5680960 1627192 5683200 -1627296 5683696 1627344 5683856 1627760 5683328 1627192 5683200 -1628568 5685304 1627760 5683328 1627344 5683896 1627672 5685152 -1627296 5683696 1627760 5683328 1627192 5683200 1627256 5683616 -1627296 5683696 1627344 5683856 1627760 5683328 1627256 5683616 -1627760 5683328 1628016 5680960 1627192 5683200 1627256 5683616 -1627192 5683200 1627192 5683512 1627256 5683616 1627760 5683328 -1627192 5683200 1627128 5683456 1627192 5683512 1627760 5683328 -1627192 5683200 1627192 5683512 1627760 5683328 1628016 5680960 -1627256 5683616 1627296 5683696 1627760 5683328 1627192 5683512 -1627760 5683328 1628568 5685304 1628016 5680960 1627192 5683200 -1628016 5680960 1627760 5683328 1628568 5685304 1628096 5680872 -1627760 5683328 1627344 5683896 1628568 5685304 1628096 5680872 -1628568 5685304 1629712 5685944 1628096 5680872 1627760 5683328 -1628568 5685304 1629712 5685944 1627760 5683328 1627344 5683896 -1629712 5685944 1629840 5685992 1628096 5680872 1627760 5683328 -1628568 5685304 1629576 5685968 1629712 5685944 1627760 5683328 -1629712 5685944 1629840 5685992 1627760 5683328 1628568 5685304 -1629840 5685992 1630088 5686120 1628096 5680872 1627760 5683328 -1628016 5680960 1627192 5683200 1627760 5683328 1628096 5680872 -1628096 5680872 1628016 5680960 1627760 5683328 1629840 5685992 -1628016 5680960 1627944 5680984 1627192 5683200 1627760 5683328 -1627944 5680984 1627008 5683120 1627192 5683200 1627760 5683328 -1627192 5683200 1627192 5683512 1627760 5683328 1627944 5680984 -1628016 5680960 1627944 5680984 1627760 5683328 1628096 5680872 -1629840 5685992 1628024 5683416 1627760 5683328 1629712 5685944 -1628024 5683416 1628096 5680872 1627760 5683328 1629712 5685944 -1627760 5683328 1628568 5685304 1629712 5685944 1628024 5683416 -1627760 5683328 1627344 5683896 1628568 5685304 1628024 5683416 -1627760 5683328 1627344 5683896 1628024 5683416 1628096 5680872 -1627760 5683328 1627344 5683856 1627344 5683896 1628024 5683416 -1627344 5683896 1628568 5685304 1628024 5683416 1627344 5683856 -1627760 5683328 1627344 5683856 1628024 5683416 1628096 5680872 -1627760 5683328 1627296 5683696 1627344 5683856 1628024 5683416 -1629712 5685944 1629840 5685992 1628024 5683416 1628568 5685304 -1627344 5683896 1627672 5685152 1628568 5685304 1628024 5683416 -1627344 5683896 1627672 5685152 1628024 5683416 1627344 5683856 -1627344 5683896 1627384 5684864 1627672 5685152 1628024 5683416 -1627344 5683896 1627384 5684864 1628024 5683416 1627344 5683856 -1627384 5684864 1627560 5685136 1627672 5685152 1628024 5683416 -1627672 5685152 1628568 5685304 1628024 5683416 1627384 5684864 -1628568 5685304 1629576 5685968 1629712 5685944 1628024 5683416 -1628568 5685304 1629712 5685944 1628024 5683416 1627672 5685152 -1628096 5680872 1628024 5683416 1629840 5685992 1630088 5686120 -1628096 5680872 1628024 5683416 1630088 5686120 1628112 5680824 -1628096 5680872 1627760 5683328 1628024 5683416 1630088 5686120 -1627344 5683896 1627256 5684656 1627384 5684864 1628024 5683416 -1627672 5685152 1628032 5685392 1628568 5685304 1628024 5683416 -1629840 5685992 1630088 5686120 1628024 5683416 1629712 5685944 -1627760 5683328 1628024 5683416 1628096 5680872 1628016 5680960 -1627760 5683328 1627344 5683856 1628024 5683416 1628016 5680960 -1628024 5683416 1630088 5686120 1628096 5680872 1628016 5680960 -1627760 5683328 1628024 5683416 1628016 5680960 1627944 5680984 -1627760 5683328 1627344 5683856 1628024 5683416 1627944 5680984 -1628024 5683416 1628096 5680872 1628016 5680960 1627944 5680984 -1627760 5683328 1628024 5683416 1627944 5680984 1627192 5683200 -1628096 5680872 1628344 5683592 1630088 5686120 1628112 5680824 -1630088 5686120 1630152 5686160 1628112 5680824 1628344 5683592 -1630152 5686160 1628144 5680632 1628112 5680824 1628344 5683592 -1628112 5680824 1628096 5680872 1628344 5683592 1630152 5686160 -1628024 5683416 1628344 5683592 1628096 5680872 1628016 5680960 -1630088 5686120 1628344 5683592 1628024 5683416 1629840 5685992 -1628024 5683416 1629840 5685992 1628344 5683592 1628016 5680960 -1628024 5683416 1629712 5685944 1629840 5685992 1628344 5683592 -1628024 5683416 1628568 5685304 1629712 5685944 1628344 5683592 -1628568 5685304 1629576 5685968 1629712 5685944 1628344 5683592 -1628024 5683416 1627672 5685152 1628568 5685304 1628344 5683592 -1628568 5685304 1629712 5685944 1628344 5683592 1627672 5685152 -1628024 5683416 1627384 5684864 1627672 5685152 1628344 5683592 -1628024 5683416 1627344 5683896 1627384 5684864 1628344 5683592 -1628024 5683416 1627344 5683856 1627344 5683896 1628344 5683592 -1627384 5684864 1627560 5685136 1627672 5685152 1628344 5683592 -1627384 5684864 1627672 5685152 1628344 5683592 1627344 5683896 -1627672 5685152 1628568 5685304 1628344 5683592 1627384 5684864 -1629840 5685992 1630088 5686120 1628344 5683592 1629712 5685944 -1627344 5683896 1627256 5684656 1627384 5684864 1628344 5683592 -1627672 5685152 1628032 5685392 1628568 5685304 1628344 5683592 -1628024 5683416 1627344 5683896 1628344 5683592 1628016 5680960 -1629712 5685944 1629840 5685992 1628344 5683592 1628568 5685304 -1628096 5680872 1628016 5680960 1628344 5683592 1628112 5680824 -1628024 5683416 1628344 5683592 1628016 5680960 1627944 5680984 -1628344 5683592 1629840 5685992 1630088 5686120 1630152 5686160 -1628112 5680824 1628464 5683680 1630152 5686160 1628144 5680632 -1628112 5680824 1628344 5683592 1628464 5683680 1628144 5680632 -1628464 5683680 1628344 5683592 1630152 5686160 1628144 5680632 -1628112 5680824 1628464 5683680 1628144 5680632 1628112 5680744 -1630152 5686160 1628464 5683680 1628344 5683592 1630088 5686120 -1630152 5686160 1628144 5680632 1628464 5683680 1630088 5686120 -1628344 5683592 1628464 5683680 1628112 5680824 1628096 5680872 -1628464 5683680 1628144 5680632 1628112 5680824 1628096 5680872 -1628344 5683592 1628464 5683680 1628096 5680872 1628016 5680960 -1628464 5683680 1628096 5680872 1628344 5683592 1630088 5686120 -1630152 5686160 1630256 5686264 1628144 5680632 1628464 5683680 -1628344 5683592 1629840 5685992 1630088 5686120 1628464 5683680 -1630088 5686120 1630152 5686160 1628464 5683680 1629840 5685992 -1628344 5683592 1629712 5685944 1629840 5685992 1628464 5683680 -1628344 5683592 1628568 5685304 1629712 5685944 1628464 5683680 -1628344 5683592 1627672 5685152 1628568 5685304 1628464 5683680 -1628568 5685304 1629576 5685968 1629712 5685944 1628464 5683680 -1628344 5683592 1627384 5684864 1627672 5685152 1628464 5683680 -1627672 5685152 1628568 5685304 1628464 5683680 1627384 5684864 -1627384 5684864 1627560 5685136 1627672 5685152 1628464 5683680 -1628344 5683592 1627344 5683896 1627384 5684864 1628464 5683680 -1628344 5683592 1628024 5683416 1627344 5683896 1628464 5683680 -1627384 5684864 1627672 5685152 1628464 5683680 1627344 5683896 -1629712 5685944 1629840 5685992 1628464 5683680 1628568 5685304 -1627344 5683896 1627256 5684656 1627384 5684864 1628464 5683680 -1627672 5685152 1628032 5685392 1628568 5685304 1628464 5683680 -1628568 5685304 1629712 5685944 1628464 5683680 1627672 5685152 -1628344 5683592 1627344 5683896 1628464 5683680 1628096 5680872 -1629840 5685992 1630088 5686120 1628464 5683680 1629712 5685944 -1630152 5686160 1628744 5683904 1628464 5683680 1630088 5686120 -1628744 5683904 1628144 5680632 1628464 5683680 1630088 5686120 -1628464 5683680 1628744 5683904 1628144 5680632 1628112 5680824 -1628464 5683680 1628744 5683904 1628112 5680824 1628096 5680872 -1628464 5683680 1630088 5686120 1628744 5683904 1628096 5680872 -1628144 5680632 1628112 5680744 1628112 5680824 1628744 5683904 -1628744 5683904 1628144 5680632 1628112 5680824 1628096 5680872 -1628464 5683680 1629840 5685992 1630088 5686120 1628744 5683904 -1628464 5683680 1629840 5685992 1628744 5683904 1628096 5680872 -1630088 5686120 1630152 5686160 1628744 5683904 1629840 5685992 -1628464 5683680 1628744 5683904 1628096 5680872 1628344 5683592 -1628144 5680632 1628744 5683904 1630152 5686160 1630256 5686264 -1628144 5680632 1628744 5683904 1630256 5686264 1630304 5686344 -1628464 5683680 1629712 5685944 1629840 5685992 1628744 5683904 -1628464 5683680 1629712 5685944 1628744 5683904 1628096 5680872 -1629840 5685992 1630088 5686120 1628744 5683904 1629712 5685944 -1628464 5683680 1628568 5685304 1629712 5685944 1628744 5683904 -1628464 5683680 1628568 5685304 1628744 5683904 1628096 5680872 -1628568 5685304 1629576 5685968 1629712 5685944 1628744 5683904 -1628464 5683680 1627672 5685152 1628568 5685304 1628744 5683904 -1628464 5683680 1627384 5684864 1627672 5685152 1628744 5683904 -1627384 5684864 1627560 5685136 1627672 5685152 1628744 5683904 -1628464 5683680 1627384 5684864 1628744 5683904 1628096 5680872 -1628464 5683680 1627344 5683896 1627384 5684864 1628744 5683904 -1628568 5685304 1629712 5685944 1628744 5683904 1627672 5685152 -1627672 5685152 1628032 5685392 1628568 5685304 1628744 5683904 -1627672 5685152 1628568 5685304 1628744 5683904 1627384 5684864 -1629712 5685944 1629840 5685992 1628744 5683904 1628568 5685304 -1628744 5683904 1630256 5686264 1628144 5680632 1628112 5680824 -1630152 5686160 1630256 5686264 1628744 5683904 1630088 5686120 -1628144 5680632 1628856 5684016 1630256 5686264 1630304 5686344 -1630256 5686264 1628856 5684016 1628744 5683904 1630152 5686160 -1630256 5686264 1628144 5680632 1628856 5684016 1630152 5686160 -1628744 5683904 1628856 5684016 1628144 5680632 1628112 5680824 -1628144 5680632 1628112 5680744 1628112 5680824 1628856 5684016 -1628744 5683904 1628856 5684016 1628112 5680824 1628096 5680872 -1628744 5683904 1628856 5684016 1628096 5680872 1628464 5683680 -1628856 5684016 1630256 5686264 1628144 5680632 1628112 5680824 -1628856 5684016 1628144 5680632 1628112 5680824 1628096 5680872 -1628856 5684016 1628096 5680872 1628744 5683904 1630152 5686160 -1628744 5683904 1630088 5686120 1630152 5686160 1628856 5684016 -1628744 5683904 1629840 5685992 1630088 5686120 1628856 5684016 -1628744 5683904 1629712 5685944 1629840 5685992 1628856 5684016 -1629840 5685992 1630088 5686120 1628856 5684016 1629712 5685944 -1630152 5686160 1630256 5686264 1628856 5684016 1630088 5686120 -1628744 5683904 1628568 5685304 1629712 5685944 1628856 5684016 -1629712 5685944 1629840 5685992 1628856 5684016 1628568 5685304 -1628568 5685304 1629576 5685968 1629712 5685944 1628856 5684016 -1628744 5683904 1627672 5685152 1628568 5685304 1628856 5684016 -1627672 5685152 1628032 5685392 1628568 5685304 1628856 5684016 -1628744 5683904 1627384 5684864 1627672 5685152 1628856 5684016 -1628568 5685304 1629712 5685944 1628856 5684016 1627672 5685152 -1628744 5683904 1627672 5685152 1628856 5684016 1628096 5680872 -1630088 5686120 1630152 5686160 1628856 5684016 1629840 5685992 -1628856 5684016 1628904 5684176 1629712 5685944 1629840 5685992 -1628856 5684016 1628904 5684176 1629840 5685992 1630088 5686120 -1628856 5684016 1628568 5685304 1628904 5684176 1630088 5686120 -1628904 5684176 1628568 5685304 1629712 5685944 1629840 5685992 -1628904 5684176 1629712 5685944 1629840 5685992 1630088 5686120 -1629712 5685944 1628904 5684176 1628568 5685304 1629576 5685968 -1628568 5685304 1628904 5684176 1628856 5684016 1627672 5685152 -1628904 5684176 1630088 5686120 1628856 5684016 1627672 5685152 -1628568 5685304 1629712 5685944 1628904 5684176 1627672 5685152 -1628856 5684016 1628744 5683904 1627672 5685152 1628904 5684176 -1628856 5684016 1628744 5683904 1628904 5684176 1630088 5686120 -1628568 5685304 1628904 5684176 1627672 5685152 1628032 5685392 -1628744 5683904 1627384 5684864 1627672 5685152 1628904 5684176 -1627672 5685152 1628568 5685304 1628904 5684176 1628744 5683904 -1628856 5684016 1628904 5684176 1630088 5686120 1630152 5686160 -1628904 5684176 1629840 5685992 1630088 5686120 1630152 5686160 -1628856 5684016 1628744 5683904 1628904 5684176 1630152 5686160 -1628856 5684016 1628904 5684176 1630152 5686160 1630256 5686264 -1628904 5684176 1628920 5684280 1629712 5685944 1629840 5685992 -1628904 5684176 1628568 5685304 1628920 5684280 1629840 5685992 -1628568 5685304 1628920 5684280 1628904 5684176 1627672 5685152 -1628568 5685304 1629712 5685944 1628920 5684280 1627672 5685152 -1628920 5684280 1629840 5685992 1628904 5684176 1627672 5685152 -1628920 5684280 1628568 5685304 1629712 5685944 1629840 5685992 -1628904 5684176 1628920 5684280 1629840 5685992 1630088 5686120 -1628904 5684176 1628920 5684280 1630088 5686120 1630152 5686160 -1628920 5684280 1629712 5685944 1629840 5685992 1630088 5686120 -1628904 5684176 1627672 5685152 1628920 5684280 1630152 5686160 -1628920 5684280 1629840 5685992 1630088 5686120 1630152 5686160 -1629712 5685944 1628920 5684280 1628568 5685304 1629576 5685968 -1628920 5684280 1627672 5685152 1628568 5685304 1629576 5685968 -1628568 5685304 1629512 5686008 1629576 5685968 1628920 5684280 -1629712 5685944 1629840 5685992 1628920 5684280 1629576 5685968 -1628568 5685304 1628920 5684280 1627672 5685152 1628032 5685392 -1628904 5684176 1628744 5683904 1627672 5685152 1628920 5684280 -1628904 5684176 1628744 5683904 1628920 5684280 1630152 5686160 -1627672 5685152 1628568 5685304 1628920 5684280 1628744 5683904 -1628904 5684176 1628856 5684016 1628744 5683904 1628920 5684280 -1628744 5683904 1627384 5684864 1627672 5685152 1628920 5684280 -1628744 5683904 1628464 5683680 1627384 5684864 1628920 5684280 -1627384 5684864 1627560 5685136 1627672 5685152 1628920 5684280 -1627672 5685152 1628568 5685304 1628920 5684280 1627384 5684864 -1628744 5683904 1627384 5684864 1628920 5684280 1628904 5684176 -1628904 5684176 1628920 5684280 1630152 5686160 1628856 5684016 -1628568 5685304 1628904 5684424 1628920 5684280 1627672 5685152 -1629576 5685968 1628904 5684424 1628568 5685304 1629512 5686008 -1628568 5685304 1629576 5685968 1628904 5684424 1627672 5685152 -1628920 5684280 1627384 5684864 1627672 5685152 1628904 5684424 -1627384 5684864 1627560 5685136 1627672 5685152 1628904 5684424 -1627672 5685152 1628568 5685304 1628904 5684424 1627384 5684864 -1628904 5684424 1629576 5685968 1628920 5684280 1627384 5684864 -1628920 5684280 1628904 5684424 1629576 5685968 1629712 5685944 -1628904 5684424 1628568 5685304 1629576 5685968 1629712 5685944 -1628920 5684280 1628904 5684424 1629712 5685944 1629840 5685992 -1628920 5684280 1628904 5684424 1629840 5685992 1630088 5686120 -1628920 5684280 1627384 5684864 1628904 5684424 1629840 5685992 -1628904 5684424 1629576 5685968 1629712 5685944 1629840 5685992 -1628568 5685304 1628904 5684424 1627672 5685152 1628032 5685392 -1628920 5684280 1628744 5683904 1627384 5684864 1628904 5684424 -1628744 5683904 1628464 5683680 1627384 5684864 1628904 5684424 -1627384 5684864 1627672 5685152 1628904 5684424 1628464 5683680 -1628920 5684280 1628744 5683904 1628904 5684424 1629840 5685992 -1628464 5683680 1627344 5683896 1627384 5684864 1628904 5684424 -1628744 5683904 1628464 5683680 1628904 5684424 1628920 5684280 -1628920 5684280 1628904 5684176 1628744 5683904 1628904 5684424 -1628920 5684280 1628904 5684176 1628904 5684424 1629840 5685992 -1628904 5684176 1628856 5684016 1628744 5683904 1628904 5684424 -1628744 5683904 1628464 5683680 1628904 5684424 1628904 5684176 -1628904 5684424 1628864 5684536 1629576 5685968 1629712 5685944 -1628904 5684424 1628568 5685304 1628864 5684536 1629712 5685944 -1629576 5685968 1628864 5684536 1628568 5685304 1629512 5686008 -1628568 5685304 1628864 5684536 1628904 5684424 1627672 5685152 -1628904 5684424 1627384 5684864 1627672 5685152 1628864 5684536 -1627384 5684864 1627560 5685136 1627672 5685152 1628864 5684536 -1628864 5684536 1629712 5685944 1628904 5684424 1627384 5684864 -1627672 5685152 1628568 5685304 1628864 5684536 1627384 5684864 -1628864 5684536 1628568 5685304 1629576 5685968 1629712 5685944 -1628568 5685304 1629576 5685968 1628864 5684536 1627672 5685152 -1628904 5684424 1628464 5683680 1627384 5684864 1628864 5684536 -1628904 5684424 1628744 5683904 1628464 5683680 1628864 5684536 -1627384 5684864 1627672 5685152 1628864 5684536 1628464 5683680 -1628904 5684424 1628744 5683904 1628864 5684536 1629712 5685944 -1628464 5683680 1627384 5684864 1628864 5684536 1628744 5683904 -1628904 5684424 1628864 5684536 1629712 5685944 1629840 5685992 -1628464 5683680 1627344 5683896 1627384 5684864 1628864 5684536 -1628568 5685304 1628864 5684536 1627672 5685152 1628032 5685392 -1628904 5684424 1628904 5684176 1628744 5683904 1628864 5684536 -1627672 5685152 1628792 5684608 1628864 5684536 1627384 5684864 -1627672 5685152 1628792 5684608 1627384 5684864 1627560 5685136 -1628864 5684536 1628464 5683680 1627384 5684864 1628792 5684608 -1627672 5685152 1628568 5685304 1628792 5684608 1627384 5684864 -1627384 5684864 1627672 5685152 1628792 5684608 1628464 5683680 -1628792 5684608 1628568 5685304 1628864 5684536 1628464 5683680 -1628864 5684536 1628792 5684608 1628568 5685304 1629576 5685968 -1628792 5684608 1627672 5685152 1628568 5685304 1629576 5685968 -1628568 5685304 1629512 5686008 1629576 5685968 1628792 5684608 -1628864 5684536 1628792 5684608 1629576 5685968 1629712 5685944 -1628864 5684536 1628464 5683680 1628792 5684608 1629576 5685968 -1628864 5684536 1628744 5683904 1628464 5683680 1628792 5684608 -1628864 5684536 1628904 5684424 1628744 5683904 1628792 5684608 -1628464 5683680 1627384 5684864 1628792 5684608 1628744 5683904 -1628864 5684536 1628904 5684424 1628792 5684608 1629576 5685968 -1628744 5683904 1628464 5683680 1628792 5684608 1628904 5684424 -1628464 5683680 1627344 5683896 1627384 5684864 1628792 5684608 -1628568 5685304 1628792 5684608 1627672 5685152 1628032 5685392 -1628568 5685304 1629576 5685968 1628792 5684608 1628032 5685392 -1628792 5684608 1627384 5684864 1627672 5685152 1628032 5685392 -1628904 5684424 1628904 5684176 1628744 5683904 1628792 5684608 -1628904 5684424 1628904 5684176 1628792 5684608 1628864 5684536 -1628744 5683904 1628464 5683680 1628792 5684608 1628904 5684176 -1628904 5684176 1628856 5684016 1628744 5683904 1628792 5684608 -1628904 5684424 1628920 5684280 1628904 5684176 1628792 5684608 -1628904 5684424 1628920 5684280 1628792 5684608 1628864 5684536 -1628904 5684176 1628744 5683904 1628792 5684608 1628920 5684280 -1628568 5685304 1628792 5684608 1628032 5685392 1628232 5685464 -1627672 5685152 1628744 5684624 1627384 5684864 1627560 5685136 -1628792 5684608 1628744 5684624 1627672 5685152 1628032 5685392 -1628792 5684608 1627384 5684864 1628744 5684624 1628032 5685392 -1628744 5684624 1627384 5684864 1627672 5685152 1628032 5685392 -1627384 5684864 1628744 5684624 1628792 5684608 1628464 5683680 -1628792 5684608 1628744 5683904 1628464 5683680 1628744 5684624 -1628744 5684624 1628032 5685392 1628792 5684608 1628744 5683904 -1627384 5684864 1627672 5685152 1628744 5684624 1628464 5683680 -1628464 5683680 1627384 5684864 1628744 5684624 1628744 5683904 -1628792 5684608 1628904 5684176 1628744 5683904 1628744 5684624 -1628744 5683904 1628464 5683680 1628744 5684624 1628904 5684176 -1628792 5684608 1628904 5684176 1628744 5684624 1628032 5685392 -1627384 5684864 1628744 5684624 1628464 5683680 1627344 5683896 -1627384 5684864 1627672 5685152 1628744 5684624 1627344 5683896 -1628744 5684624 1628744 5683904 1628464 5683680 1627344 5683896 -1628464 5683680 1628344 5683592 1627344 5683896 1628744 5684624 -1628904 5684176 1628856 5684016 1628744 5683904 1628744 5684624 -1627384 5684864 1628744 5684624 1627344 5683896 1627256 5684656 -1628792 5684608 1628744 5684624 1628032 5685392 1628568 5685304 -1628792 5684608 1628744 5684624 1628568 5685304 1629576 5685968 -1628792 5684608 1628904 5684176 1628744 5684624 1628568 5685304 -1628744 5684624 1627672 5685152 1628032 5685392 1628568 5685304 -1628792 5684608 1628920 5684280 1628904 5684176 1628744 5684624 -1628792 5684608 1628920 5684280 1628744 5684624 1628568 5685304 -1628904 5684176 1628744 5683904 1628744 5684624 1628920 5684280 -1628792 5684608 1628904 5684424 1628920 5684280 1628744 5684624 -1628792 5684608 1628864 5684536 1628904 5684424 1628744 5684624 -1628792 5684608 1628864 5684536 1628744 5684624 1628568 5685304 -1628920 5684280 1628904 5684176 1628744 5684624 1628904 5684424 -1628904 5684424 1628920 5684280 1628744 5684624 1628864 5684536 -1628032 5685392 1628232 5685464 1628568 5685304 1628744 5684624 -1628464 5683680 1628624 5684544 1628744 5684624 1628744 5683904 -1628744 5684624 1628904 5684176 1628744 5683904 1628624 5684544 -1628624 5684544 1627344 5683896 1628744 5684624 1628904 5684176 -1628744 5683904 1628464 5683680 1628624 5684544 1628904 5684176 -1628744 5684624 1628920 5684280 1628904 5684176 1628624 5684544 -1628904 5684176 1628744 5683904 1628624 5684544 1628920 5684280 -1628744 5684624 1628920 5684280 1628624 5684544 1627344 5683896 -1627344 5683896 1628624 5684544 1628464 5683680 1628344 5683592 -1628464 5683680 1627344 5683896 1628624 5684544 1628744 5683904 -1628744 5684624 1628624 5684544 1627344 5683896 1627384 5684864 -1628744 5684624 1628920 5684280 1628624 5684544 1627384 5684864 -1628744 5684624 1628624 5684544 1627384 5684864 1627672 5685152 -1627384 5684864 1627560 5685136 1627672 5685152 1628624 5684544 -1628744 5684624 1628624 5684544 1627672 5685152 1628032 5685392 -1628744 5684624 1628624 5684544 1628032 5685392 1628568 5685304 -1628624 5684544 1627672 5685152 1628032 5685392 1628568 5685304 -1628744 5684624 1628920 5684280 1628624 5684544 1628568 5685304 -1628624 5684544 1627384 5684864 1627672 5685152 1628032 5685392 -1628624 5684544 1628464 5683680 1627344 5683896 1627384 5684864 -1628624 5684544 1627344 5683896 1627384 5684864 1627672 5685152 -1628904 5684176 1628856 5684016 1628744 5683904 1628624 5684544 -1627344 5683896 1627256 5684656 1627384 5684864 1628624 5684544 -1627344 5683896 1627256 5684656 1628624 5684544 1628464 5683680 -1627384 5684864 1627672 5685152 1628624 5684544 1627256 5684656 -1627344 5683896 1627184 5684304 1627256 5684656 1628624 5684544 -1628744 5684624 1628624 5684544 1628568 5685304 1628792 5684608 -1628744 5684624 1628904 5684424 1628920 5684280 1628624 5684544 -1628744 5684624 1628904 5684424 1628624 5684544 1628568 5685304 -1628920 5684280 1628904 5684176 1628624 5684544 1628904 5684424 -1628744 5684624 1628864 5684536 1628904 5684424 1628624 5684544 -1628744 5684624 1628792 5684608 1628864 5684536 1628624 5684544 -1628744 5684624 1628792 5684608 1628624 5684544 1628568 5685304 -1628904 5684424 1628920 5684280 1628624 5684544 1628864 5684536 -1628864 5684536 1628904 5684424 1628624 5684544 1628792 5684608 -1628032 5685392 1628232 5685464 1628568 5685304 1628624 5684544 -1627344 5683896 1628536 5684504 1628624 5684544 1628464 5683680 -1628536 5684504 1627256 5684656 1628624 5684544 1628464 5683680 -1627344 5683896 1628536 5684504 1628464 5683680 1628344 5683592 -1627344 5683896 1628536 5684504 1628344 5683592 1628024 5683416 -1628536 5684504 1628624 5684544 1628464 5683680 1628344 5683592 -1628624 5684544 1628744 5683904 1628464 5683680 1628536 5684504 -1628464 5683680 1628344 5683592 1628536 5684504 1628744 5683904 -1628624 5684544 1628744 5683904 1628536 5684504 1627256 5684656 -1628624 5684544 1628904 5684176 1628744 5683904 1628536 5684504 -1628624 5684544 1628920 5684280 1628904 5684176 1628536 5684504 -1628624 5684544 1628920 5684280 1628536 5684504 1627256 5684656 -1628904 5684176 1628744 5683904 1628536 5684504 1628920 5684280 -1628624 5684544 1628904 5684424 1628920 5684280 1628536 5684504 -1628744 5683904 1628464 5683680 1628536 5684504 1628904 5684176 -1627344 5683896 1627256 5684656 1628536 5684504 1628344 5683592 -1628904 5684176 1628856 5684016 1628744 5683904 1628536 5684504 -1628904 5684176 1628856 5684016 1628536 5684504 1628920 5684280 -1628744 5683904 1628464 5683680 1628536 5684504 1628856 5684016 -1627256 5684656 1628536 5684504 1627344 5683896 1627184 5684304 -1627256 5684656 1628624 5684544 1628536 5684504 1627184 5684304 -1628536 5684504 1628344 5683592 1627344 5683896 1627184 5684304 -1627256 5684656 1628536 5684504 1627184 5684304 1627216 5684560 -1628624 5684544 1628536 5684504 1627256 5684656 1627384 5684864 -1628624 5684544 1628920 5684280 1628536 5684504 1627384 5684864 -1628536 5684504 1627184 5684304 1627256 5684656 1627384 5684864 -1628624 5684544 1628536 5684504 1627384 5684864 1627672 5685152 -1627384 5684864 1627560 5685136 1627672 5685152 1628536 5684504 -1628624 5684544 1628536 5684504 1627672 5685152 1628032 5685392 -1628624 5684544 1628536 5684504 1628032 5685392 1628568 5685304 -1628624 5684544 1628536 5684504 1628568 5685304 1628744 5684624 -1628536 5684504 1627672 5685152 1628032 5685392 1628568 5685304 -1628624 5684544 1628920 5684280 1628536 5684504 1628568 5685304 -1628536 5684504 1627384 5684864 1627672 5685152 1628032 5685392 -1628536 5684504 1627256 5684656 1627384 5684864 1627672 5685152 -1628032 5685392 1628232 5685464 1628568 5685304 1628536 5684504 -1627344 5683896 1627272 5683976 1627184 5684304 1628536 5684504 -1628536 5684504 1628464 5684512 1627256 5684656 1627384 5684864 -1628464 5684512 1627184 5684304 1627256 5684656 1627384 5684864 -1628536 5684504 1627184 5684304 1628464 5684512 1627384 5684864 -1627256 5684656 1628464 5684512 1627184 5684304 1627216 5684560 -1627256 5684656 1627384 5684864 1628464 5684512 1627216 5684560 -1628464 5684512 1628536 5684504 1627184 5684304 1627216 5684560 -1627184 5684304 1628464 5684512 1628536 5684504 1627344 5683896 -1627184 5684304 1627216 5684560 1628464 5684512 1627344 5683896 -1628464 5684512 1627384 5684864 1628536 5684504 1627344 5683896 -1628536 5684504 1628344 5683592 1627344 5683896 1628464 5684512 -1628344 5683592 1628024 5683416 1627344 5683896 1628464 5684512 -1628536 5684504 1628464 5683680 1628344 5683592 1628464 5684512 -1628536 5684504 1628744 5683904 1628464 5683680 1628464 5684512 -1628464 5683680 1628344 5683592 1628464 5684512 1628744 5683904 -1628536 5684504 1628856 5684016 1628744 5683904 1628464 5684512 -1628536 5684504 1628744 5683904 1628464 5684512 1627384 5684864 -1628344 5683592 1627344 5683896 1628464 5684512 1628464 5683680 -1627344 5683896 1627184 5684304 1628464 5684512 1628344 5683592 -1628536 5684504 1628464 5684512 1627384 5684864 1627672 5685152 -1627384 5684864 1627560 5685136 1627672 5685152 1628464 5684512 -1628464 5684512 1627256 5684656 1627384 5684864 1627672 5685152 -1628536 5684504 1628744 5683904 1628464 5684512 1627672 5685152 -1628536 5684504 1628464 5684512 1627672 5685152 1628032 5685392 -1628536 5684504 1628464 5684512 1628032 5685392 1628568 5685304 -1628536 5684504 1628464 5684512 1628568 5685304 1628624 5684544 -1628568 5685304 1628744 5684624 1628624 5684544 1628464 5684512 -1628624 5684544 1628536 5684504 1628464 5684512 1628744 5684624 -1628464 5684512 1628032 5685392 1628568 5685304 1628744 5684624 -1628536 5684504 1628744 5683904 1628464 5684512 1628624 5684544 -1628464 5684512 1627672 5685152 1628032 5685392 1628568 5685304 -1628464 5684512 1627384 5684864 1627672 5685152 1628032 5685392 -1628568 5685304 1628792 5684608 1628744 5684624 1628464 5684512 -1628032 5685392 1628232 5685464 1628568 5685304 1628464 5684512 -1627184 5684304 1628464 5684512 1627344 5683896 1627272 5683976 -1628464 5684512 1628416 5684552 1628032 5685392 1628568 5685304 -1628464 5684512 1628416 5684552 1628568 5685304 1628744 5684624 -1628464 5684512 1628416 5684552 1628744 5684624 1628624 5684544 -1628464 5684512 1628416 5684552 1628624 5684544 1628536 5684504 -1628416 5684552 1628744 5684624 1628624 5684544 1628536 5684504 -1628416 5684552 1628568 5685304 1628744 5684624 1628624 5684544 -1628464 5684512 1627672 5685152 1628416 5684552 1628536 5684504 -1628416 5684552 1627672 5685152 1628032 5685392 1628568 5685304 -1628416 5684552 1628032 5685392 1628568 5685304 1628744 5684624 -1627672 5685152 1628416 5684552 1628464 5684512 1627384 5684864 -1627672 5685152 1628416 5684552 1627384 5684864 1627560 5685136 -1627672 5685152 1628032 5685392 1628416 5684552 1627384 5684864 -1628416 5684552 1628536 5684504 1628464 5684512 1627384 5684864 -1628464 5684512 1627256 5684656 1627384 5684864 1628416 5684552 -1628464 5684512 1627216 5684560 1627256 5684656 1628416 5684552 -1628464 5684512 1627216 5684560 1628416 5684552 1628536 5684504 -1627256 5684656 1627384 5684864 1628416 5684552 1627216 5684560 -1628464 5684512 1627184 5684304 1627216 5684560 1628416 5684552 -1627216 5684560 1627256 5684656 1628416 5684552 1627184 5684304 -1628464 5684512 1627184 5684304 1628416 5684552 1628536 5684504 -1628464 5684512 1627344 5683896 1627184 5684304 1628416 5684552 -1628464 5684512 1627344 5683896 1628416 5684552 1628536 5684504 -1627184 5684304 1627216 5684560 1628416 5684552 1627344 5683896 -1628464 5684512 1628344 5683592 1627344 5683896 1628416 5684552 -1628344 5683592 1628024 5683416 1627344 5683896 1628416 5684552 -1628464 5684512 1628344 5683592 1628416 5684552 1628536 5684504 -1627344 5683896 1627184 5684304 1628416 5684552 1628344 5683592 -1628464 5684512 1628464 5683680 1628344 5683592 1628416 5684552 -1628464 5684512 1628744 5683904 1628464 5683680 1628416 5684552 -1628464 5684512 1628464 5683680 1628416 5684552 1628536 5684504 -1628344 5683592 1627344 5683896 1628416 5684552 1628464 5683680 -1627384 5684864 1627672 5685152 1628416 5684552 1627256 5684656 -1628568 5685304 1628792 5684608 1628744 5684624 1628416 5684552 -1628032 5685392 1628232 5685464 1628568 5685304 1628416 5684552 -1627344 5683896 1627272 5683976 1627184 5684304 1628416 5684552 -1628032 5685392 1628416 5684608 1628416 5684552 1627672 5685152 -1628416 5684608 1628568 5685304 1628416 5684552 1627672 5685152 -1628416 5684552 1627384 5684864 1627672 5685152 1628416 5684608 -1627384 5684864 1627560 5685136 1627672 5685152 1628416 5684608 -1628416 5684552 1627384 5684864 1628416 5684608 1628568 5685304 -1627672 5685152 1628032 5685392 1628416 5684608 1627384 5684864 -1628416 5684552 1628416 5684608 1628568 5685304 1628744 5684624 -1628416 5684552 1628416 5684608 1628744 5684624 1628624 5684544 -1628416 5684552 1628416 5684608 1628624 5684544 1628536 5684504 -1628416 5684552 1628416 5684608 1628536 5684504 1628464 5684512 -1628416 5684608 1628624 5684544 1628536 5684504 1628464 5684512 -1628416 5684608 1628744 5684624 1628624 5684544 1628536 5684504 -1628416 5684552 1627384 5684864 1628416 5684608 1628464 5684512 -1628416 5684608 1628032 5685392 1628568 5685304 1628744 5684624 -1628416 5684608 1628568 5685304 1628744 5684624 1628624 5684544 -1628416 5684552 1627256 5684656 1627384 5684864 1628416 5684608 -1628568 5685304 1628792 5684608 1628744 5684624 1628416 5684608 -1628032 5685392 1628568 5685304 1628416 5684608 1627672 5685152 -1628568 5685304 1628416 5684608 1628032 5685392 1628232 5685464 -1628568 5685304 1628624 5684968 1628416 5684608 1628032 5685392 -1628624 5684968 1628744 5684624 1628416 5684608 1628032 5685392 -1628416 5684608 1628624 5684968 1628744 5684624 1628624 5684544 -1628744 5684624 1628624 5684968 1628568 5685304 1628792 5684608 -1628568 5685304 1629576 5685968 1628792 5684608 1628624 5684968 -1628568 5685304 1629512 5686008 1629576 5685968 1628624 5684968 -1629576 5685968 1628864 5684536 1628792 5684608 1628624 5684968 -1629576 5685968 1628864 5684536 1628624 5684968 1628568 5685304 -1629576 5685968 1629712 5685944 1628864 5684536 1628624 5684968 -1628792 5684608 1628744 5684624 1628624 5684968 1628864 5684536 -1628416 5684608 1627672 5685152 1628032 5685392 1628624 5684968 -1628744 5684624 1628416 5684608 1628624 5684968 1628792 5684608 -1628568 5685304 1629576 5685968 1628624 5684968 1628032 5685392 -1628568 5685304 1628624 5684968 1628032 5685392 1628232 5685464 -1628624 5684968 1628640 5685080 1629576 5685968 1628864 5684536 -1629576 5685968 1628640 5685080 1628568 5685304 1629512 5686008 -1628640 5685080 1628568 5685304 1629576 5685968 1628864 5684536 -1629576 5685968 1629712 5685944 1628864 5684536 1628640 5685080 -1629712 5685944 1628904 5684424 1628864 5684536 1628640 5685080 -1628864 5684536 1628624 5684968 1628640 5685080 1629712 5685944 -1629576 5685968 1629712 5685944 1628640 5685080 1628568 5685304 -1628624 5684968 1628640 5685080 1628864 5684536 1628792 5684608 -1628640 5685080 1629712 5685944 1628864 5684536 1628792 5684608 -1628624 5684968 1628640 5685080 1628792 5684608 1628744 5684624 -1628624 5684968 1628568 5685304 1628640 5685080 1628792 5684608 -1628568 5685304 1628640 5685080 1628624 5684968 1628032 5685392 -1628568 5685304 1629576 5685968 1628640 5685080 1628032 5685392 -1628624 5684968 1628416 5684608 1628032 5685392 1628640 5685080 -1628640 5685080 1628792 5684608 1628624 5684968 1628032 5685392 -1628568 5685304 1628640 5685080 1628032 5685392 1628232 5685464 -1628568 5685304 1628616 5685200 1628640 5685080 1628032 5685392 -1628616 5685200 1629576 5685968 1628640 5685080 1628032 5685392 -1628568 5685304 1629576 5685968 1628616 5685200 1628032 5685392 -1629576 5685968 1628616 5685200 1628568 5685304 1629512 5686008 -1628616 5685200 1628032 5685392 1628568 5685304 1629512 5686008 -1628640 5685080 1628616 5685200 1629576 5685968 1629712 5685944 -1628568 5685304 1628504 5685400 1629512 5686008 1628616 5685200 -1628640 5685080 1628624 5684968 1628032 5685392 1628616 5685200 -1628640 5685080 1628624 5684968 1628616 5685200 1629576 5685968 -1628032 5685392 1628568 5685304 1628616 5685200 1628624 5684968 -1628624 5684968 1628416 5684608 1628032 5685392 1628616 5685200 -1629576 5685968 1628640 5685080 1628616 5685200 1629512 5686008 -1628568 5685304 1628616 5685200 1628032 5685392 1628232 5685464 -1628616 5685200 1628624 5684968 1628032 5685392 1628232 5685464 -1628568 5685304 1629512 5686008 1628616 5685200 1628232 5685464 -1628568 5685304 1628616 5685200 1628232 5685464 1628368 5685464 -1617376 5683520 1625104 5682216 1626576 5680264 1617344 5683488 -1617376 5683520 1626048 5682960 1625104 5682216 1617344 5683488 -1626048 5682960 1625104 5682216 1617376 5683520 1617424 5683592 -1626048 5682960 1625104 5682216 1617424 5683592 1620912 5685984 -1625104 5682216 1617344 5683488 1617376 5683520 1617424 5683592 -1625104 5682216 1617376 5683520 1617424 5683592 1620912 5685984 -1626048 5682960 1625104 5682216 1620912 5685984 1621048 5686008 -1625104 5682216 1617424 5683592 1620912 5685984 1621048 5686008 -1626048 5682960 1625104 5682216 1621048 5686008 1624912 5685464 -1621048 5686008 1621112 5686056 1624912 5685464 1625104 5682216 -1625104 5682216 1620912 5685984 1621048 5686008 1624912 5685464 -1626576 5680264 1625104 5682216 1626048 5682960 1626080 5682896 -1626576 5680264 1625104 5682216 1626080 5682896 1626592 5680320 -1626080 5682896 1626168 5682784 1626592 5680320 1625104 5682216 -1626592 5680320 1626576 5680264 1625104 5682216 1626168 5682784 -1625104 5682216 1626048 5682960 1626080 5682896 1626168 5682784 -1617424 5683592 1620776 5686024 1620912 5685984 1625104 5682216 -1626048 5682960 1626080 5682896 1625104 5682216 1624912 5685464 -1626048 5682960 1625104 5682216 1624912 5685464 1626048 5683112 -1626048 5682960 1625104 5682216 1626048 5683112 1626056 5682992 -1625104 5682216 1621048 5686008 1624912 5685464 1626048 5683112 -1624912 5685464 1626072 5683184 1626048 5683112 1625104 5682216 -1624912 5685464 1624992 5685440 1626072 5683184 1625104 5682216 -1624912 5685464 1624992 5685440 1625104 5682216 1621048 5686008 -1624992 5685440 1625120 5685400 1626072 5683184 1625104 5682216 -1626072 5683184 1626048 5683112 1625104 5682216 1624992 5685440 -1626048 5682960 1626080 5682896 1625104 5682216 1626048 5683112 -1626048 5683112 1626048 5682960 1625104 5682216 1626072 5683184 -1626168 5682784 1626632 5680392 1626592 5680320 1625104 5682216 -1626168 5682784 1626632 5680392 1625104 5682216 1626080 5682896 -1626592 5680320 1626576 5680264 1625104 5682216 1626632 5680392 -1626168 5682784 1626744 5680528 1626632 5680392 1625104 5682216 -1626168 5682784 1626744 5680528 1625104 5682216 1626080 5682896 -1626168 5682784 1626224 5682776 1626744 5680528 1625104 5682216 -1626168 5682784 1626224 5682776 1625104 5682216 1626080 5682896 -1626224 5682776 1626952 5680672 1626744 5680528 1625104 5682216 -1626744 5680528 1626632 5680392 1625104 5682216 1626224 5682776 -1626632 5680392 1626592 5680320 1625104 5682216 1626744 5680528 -1626576 5680264 1617256 5683416 1617344 5683488 1625104 5682216 -1617344 5683488 1617376 5683520 1625104 5682216 1617256 5683416 -1626576 5680264 1626688 5680016 1617256 5683416 1625104 5682216 -1626576 5680264 1626640 5680136 1626688 5680016 1625104 5682216 -1626688 5680016 1615256 5682392 1617256 5683416 1625104 5682216 -1617256 5683416 1617344 5683488 1625104 5682216 1626688 5680016 -1624912 5685464 1624952 5685472 1624992 5685440 1625104 5682216 -1625104 5682216 1626592 5680320 1626576 5680264 1626688 5680016 -1626744 5680528 1625160 5682176 1626224 5682776 1626952 5680672 -1626224 5682776 1626424 5682800 1626952 5680672 1625160 5682176 -1626224 5682776 1625160 5682176 1625104 5682216 1626168 5682784 -1625104 5682216 1626080 5682896 1626168 5682784 1625160 5682176 -1626168 5682784 1626224 5682776 1625160 5682176 1626080 5682896 -1625104 5682216 1626048 5682960 1626080 5682896 1625160 5682176 -1626080 5682896 1626168 5682784 1625160 5682176 1626048 5682960 -1625104 5682216 1626048 5683112 1626048 5682960 1625160 5682176 -1625160 5682176 1626744 5680528 1625104 5682216 1626048 5682960 -1626744 5680528 1625104 5682216 1625160 5682176 1626952 5680672 -1625160 5682176 1626168 5682784 1626224 5682776 1626952 5680672 -1625104 5682216 1625160 5682176 1626744 5680528 1626632 5680392 -1625104 5682216 1626048 5682960 1625160 5682176 1626632 5680392 -1625160 5682176 1626952 5680672 1626744 5680528 1626632 5680392 -1625104 5682216 1625160 5682176 1626632 5680392 1626592 5680320 -1625104 5682216 1625160 5682176 1626592 5680320 1626576 5680264 -1625104 5682216 1626048 5682960 1625160 5682176 1626576 5680264 -1625160 5682176 1626744 5680528 1626632 5680392 1626592 5680320 -1625160 5682176 1626632 5680392 1626592 5680320 1626576 5680264 -1625104 5682216 1625160 5682176 1626576 5680264 1626688 5680016 -1626952 5680672 1625184 5682176 1626224 5682776 1626424 5682800 -1625160 5682176 1625184 5682176 1626952 5680672 1626744 5680528 -1625160 5682176 1625184 5682176 1626744 5680528 1626632 5680392 -1625184 5682176 1626952 5680672 1626744 5680528 1626632 5680392 -1625160 5682176 1626224 5682776 1625184 5682176 1626632 5680392 -1626224 5682776 1625184 5682176 1625160 5682176 1626168 5682784 -1626224 5682776 1626952 5680672 1625184 5682176 1626168 5682784 -1625160 5682176 1626080 5682896 1626168 5682784 1625184 5682176 -1625160 5682176 1626048 5682960 1626080 5682896 1625184 5682176 -1626080 5682896 1626168 5682784 1625184 5682176 1626048 5682960 -1625160 5682176 1625104 5682216 1626048 5682960 1625184 5682176 -1626048 5682960 1626080 5682896 1625184 5682176 1625104 5682216 -1625104 5682216 1626048 5683112 1626048 5682960 1625184 5682176 -1625184 5682176 1626632 5680392 1625160 5682176 1625104 5682216 -1626168 5682784 1626224 5682776 1625184 5682176 1626080 5682896 -1625184 5682176 1626224 5682776 1626952 5680672 1626744 5680528 -1625160 5682176 1625184 5682176 1626632 5680392 1626592 5680320 -1625184 5682176 1626744 5680528 1626632 5680392 1626592 5680320 -1625160 5682176 1625104 5682216 1625184 5682176 1626592 5680320 -1625160 5682176 1625184 5682176 1626592 5680320 1626576 5680264 -1626080 5682896 1625248 5682216 1625184 5682176 1626048 5682960 -1625248 5682216 1626168 5682784 1625184 5682176 1626048 5682960 -1626080 5682896 1626168 5682784 1625248 5682216 1626048 5682960 -1625184 5682176 1625104 5682216 1626048 5682960 1625248 5682216 -1625184 5682176 1625104 5682216 1625248 5682216 1626168 5682784 -1626048 5682960 1626080 5682896 1625248 5682216 1625104 5682216 -1625184 5682176 1625160 5682176 1625104 5682216 1625248 5682216 -1625104 5682216 1626048 5683112 1626048 5682960 1625248 5682216 -1626048 5683112 1626056 5682992 1626048 5682960 1625248 5682216 -1625104 5682216 1626048 5683112 1625248 5682216 1625184 5682176 -1626048 5682960 1626080 5682896 1625248 5682216 1626048 5683112 -1625184 5682176 1625248 5682216 1626168 5682784 1626224 5682776 -1625184 5682176 1625104 5682216 1625248 5682216 1626224 5682776 -1625184 5682176 1625248 5682216 1626224 5682776 1626952 5680672 -1625184 5682176 1625104 5682216 1625248 5682216 1626952 5680672 -1625248 5682216 1626080 5682896 1626168 5682784 1626224 5682776 -1626224 5682776 1626424 5682800 1626952 5680672 1625248 5682216 -1625248 5682216 1626168 5682784 1626224 5682776 1626952 5680672 -1625184 5682176 1625248 5682216 1626952 5680672 1626744 5680528 -1625184 5682176 1625104 5682216 1625248 5682216 1626744 5680528 -1625248 5682216 1626224 5682776 1626952 5680672 1626744 5680528 -1625184 5682176 1625248 5682216 1626744 5680528 1626632 5680392 -1625104 5682216 1626072 5683184 1626048 5683112 1625248 5682216 -1625248 5682216 1625336 5682248 1626952 5680672 1626744 5680528 -1625248 5682216 1626224 5682776 1625336 5682248 1626744 5680528 -1626952 5680672 1625336 5682248 1626224 5682776 1626424 5682800 -1625336 5682248 1626224 5682776 1626952 5680672 1626744 5680528 -1626224 5682776 1625336 5682248 1625248 5682216 1626168 5682784 -1625248 5682216 1626080 5682896 1626168 5682784 1625336 5682248 -1625336 5682248 1626744 5680528 1625248 5682216 1626080 5682896 -1625248 5682216 1626048 5682960 1626080 5682896 1625336 5682248 -1626080 5682896 1626168 5682784 1625336 5682248 1626048 5682960 -1625248 5682216 1626048 5682960 1625336 5682248 1626744 5680528 -1625248 5682216 1626048 5683112 1626048 5682960 1625336 5682248 -1625248 5682216 1626048 5683112 1625336 5682248 1626744 5680528 -1626048 5682960 1626080 5682896 1625336 5682248 1626048 5683112 -1626048 5683112 1626056 5682992 1626048 5682960 1625336 5682248 -1626224 5682776 1626952 5680672 1625336 5682248 1626168 5682784 -1625248 5682216 1625104 5682216 1626048 5683112 1625336 5682248 -1625248 5682216 1625104 5682216 1625336 5682248 1626744 5680528 -1625248 5682216 1625184 5682176 1625104 5682216 1625336 5682248 -1626048 5683112 1626048 5682960 1625336 5682248 1625104 5682216 -1626168 5682784 1626224 5682776 1625336 5682248 1626080 5682896 -1625248 5682216 1625336 5682248 1626744 5680528 1625184 5682176 -1625336 5682248 1626952 5680672 1626744 5680528 1625184 5682176 -1625248 5682216 1625104 5682216 1625336 5682248 1625184 5682176 -1626744 5680528 1626632 5680392 1625184 5682176 1625336 5682248 -1626744 5680528 1626632 5680392 1625336 5682248 1626952 5680672 -1626632 5680392 1626592 5680320 1625184 5682176 1625336 5682248 -1625184 5682176 1625248 5682216 1625336 5682248 1626632 5680392 -1625104 5682216 1626072 5683184 1626048 5683112 1625336 5682248 -1626952 5680672 1625424 5682296 1626224 5682776 1626424 5682800 -1625336 5682248 1625424 5682296 1626952 5680672 1626744 5680528 -1625336 5682248 1625424 5682296 1626744 5680528 1626632 5680392 -1625336 5682248 1626224 5682776 1625424 5682296 1626744 5680528 -1626224 5682776 1625424 5682296 1625336 5682248 1626168 5682784 -1626224 5682776 1626952 5680672 1625424 5682296 1626168 5682784 -1625424 5682296 1626744 5680528 1625336 5682248 1626168 5682784 diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp index bc8db005..7aa6170b 100644 --- a/performance/delaunay_test.cpp +++ b/performance/delaunay_test.cpp @@ -8,6 +8,8 @@ #include #include "arithmetic_backend.hpp" #include +#include +#include #include #include @@ -196,30 +198,6 @@ struct dt_dat { typedef std::vector data_t; data_t data; -static void load_data() -{ - std::ifstream is("delaunay_data.txt"); - - while (is.good()) - { - dt_dat d; - is >> d.ax >> d.ay >> d.bx >> d.by >> d.cx >> d.cy >> d.dx >> d.dy; - if (is.good()) - { - data.push_back(d); - d.ax >>= 10; - d.ay >>= 10; - d.bx >>= 10; - d.by >>= 10; - d.cx >>= 10; - d.cy >>= 10; - d.dx >>= 10; - d.dy >>= 10; - data.push_back(d); - } - } -} - template void do_calc(const char* name) { @@ -256,6 +234,32 @@ struct test_traits }; +dt_dat generate_quadrilateral() +{ + static boost::random::mt19937 gen; + static boost::random::uniform_int_distribution<> dist(INT_MIN/2, INT_MAX/2); + + dt_dat result; + + result.ax = dist(gen); + result.ay = dist(gen); + result.bx = boost::random::uniform_int_distribution<>(result.ax, INT_MAX/2)(gen); // bx is to the right of ax. + result.by = dist(gen); + result.cx = dist(gen); + result.cy = boost::random::uniform_int_distribution<>(result.cx > result.bx ? result.by : result.ay, INT_MAX/2)(gen); // cy is below at least one of ay and by. + result.dx = boost::random::uniform_int_distribution<>(result.cx, INT_MAX/2)(gen); // dx is to the right of cx. + result.dy = boost::random::uniform_int_distribution<>(result.cx > result.bx ? result.by : result.ay, INT_MAX/2)(gen); // cy is below at least one of ay and by. + + return result; +} + +static void load_data() +{ + for(unsigned i = 0; i < 100000; ++i) + data.push_back(generate_quadrilateral()); +} + + int main() { using namespace boost::multiprecision; diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index c85ae630..85b3c9da 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -135,6 +135,72 @@ template <> struct is_twos_complement_integer : public boost::mpl::false_ {}; #endif +#define BOOST_TEST_EQUAL(a, b) BOOST_TEST((a) == (b)) + +template +void test_comparisons(Val a, Val b) +{ + Real r1(a); + Real r2(b); + Real z(1); + + BOOST_TEST_EQUAL(r1 == r2, a == b); + BOOST_TEST_EQUAL(r1 != r2, a != b); + BOOST_TEST_EQUAL(r1 <= r2, a <= b); + BOOST_TEST_EQUAL(r1 < r2, a < b); + BOOST_TEST_EQUAL(r1 >= r2, a >= b); + BOOST_TEST_EQUAL(r1 > r2, a > b); + + BOOST_TEST_EQUAL(r1 == b, a == b); + BOOST_TEST_EQUAL(r1 != b, a != b); + BOOST_TEST_EQUAL(r1 <= b, a <= b); + BOOST_TEST_EQUAL(r1 < b, a < b); + BOOST_TEST_EQUAL(r1 >= b, a >= b); + BOOST_TEST_EQUAL(r1 > b, a > b); + + BOOST_TEST_EQUAL(a == r2, a == b); + BOOST_TEST_EQUAL(a != r2, a != b); + BOOST_TEST_EQUAL(a <= r2, a <= b); + BOOST_TEST_EQUAL(a < r2, a < b); + BOOST_TEST_EQUAL(a >= r2, a >= b); + BOOST_TEST_EQUAL(a > r2, a > b); + + BOOST_TEST_EQUAL(r1*z == r2, a == b); + BOOST_TEST_EQUAL(r1*z != r2, a != b); + BOOST_TEST_EQUAL(r1*z <= r2, a <= b); + BOOST_TEST_EQUAL(r1*z < r2, a < b); + BOOST_TEST_EQUAL(r1*z >= r2, a >= b); + BOOST_TEST_EQUAL(r1*z > r2, a > b); + + BOOST_TEST_EQUAL(r1 == r2*z, a == b); + BOOST_TEST_EQUAL(r1 != r2*z, a != b); + BOOST_TEST_EQUAL(r1 <= r2*z, a <= b); + BOOST_TEST_EQUAL(r1 < r2*z, a < b); + BOOST_TEST_EQUAL(r1 >= r2*z, a >= b); + BOOST_TEST_EQUAL(r1 > r2*z, a > b); + + BOOST_TEST_EQUAL(r1*z == r2*z, a == b); + BOOST_TEST_EQUAL(r1*z != r2*z, a != b); + BOOST_TEST_EQUAL(r1*z <= r2*z, a <= b); + BOOST_TEST_EQUAL(r1*z < r2*z, a < b); + BOOST_TEST_EQUAL(r1*z >= r2*z, a >= b); + BOOST_TEST_EQUAL(r1*z > r2*z, a > b); + + BOOST_TEST_EQUAL(r1*z == b, a == b); + BOOST_TEST_EQUAL(r1*z != b, a != b); + BOOST_TEST_EQUAL(r1*z <= b, a <= b); + BOOST_TEST_EQUAL(r1*z < b, a < b); + BOOST_TEST_EQUAL(r1*z >= b, a >= b); + BOOST_TEST_EQUAL(r1*z > b, a > b); + + BOOST_TEST_EQUAL(a == r2*z, a == b); + BOOST_TEST_EQUAL(a != r2*z, a != b); + BOOST_TEST_EQUAL(a <= r2*z, a <= b); + BOOST_TEST_EQUAL(a < r2*z, a < b); + BOOST_TEST_EQUAL(a >= r2*z, a >= b); + BOOST_TEST_EQUAL(a > r2*z, a > b); +} + template void test_complement(Real a, Real b, Real c, const boost::mpl::true_&) { @@ -601,18 +667,14 @@ void test_negative_mixed(boost::mpl::true_ const&) Num n3 = 0; Num n4 = -20; Num n5 = -8; - BOOST_TEST((Real(n2) < 0) == true); - BOOST_TEST((Real(n2) <= 0) == true); - BOOST_TEST((Real(n2) > 0) == false); - BOOST_TEST((Real(n2) >= 0) == false); - BOOST_TEST((Real(n2) == 0) == false); - BOOST_TEST((Real(n2) != 0) == true); - BOOST_TEST((Real(n2) == n2) == true); - BOOST_TEST((Real(n2) != n2) == false); - BOOST_TEST((Real(n2) >= n2) == true); - BOOST_TEST((Real(n2) <= n2) == true); - BOOST_TEST((Real(n2) > n2) == false); - BOOST_TEST((Real(n2) < n2) == false); + + test_comparisons(n1, n2); + test_comparisons(n1, n3); + test_comparisons(n3, n1); + test_comparisons(n2, n1); + test_comparisons(n1, n1); + test_comparisons(n3, n3); + // Default construct: BOOST_TEST(Real(n1) == n1); BOOST_TEST(Real(n2) == n2); @@ -710,18 +772,14 @@ void test_mixed() Num n3 = 0; Num n4 = 20; Num n5 = 8; - BOOST_TEST((Real(n2) < 0) == false); - BOOST_TEST((Real(n2) <= 0) == false); - BOOST_TEST((Real(n2) > 0) == true); - BOOST_TEST((Real(n2) >= 0) == true); - BOOST_TEST((Real(n2) == 0) == false); - BOOST_TEST((Real(n2) != 0) == true); - BOOST_TEST((Real(n2) == n2) == true); - BOOST_TEST((Real(n2) != n2) == false); - BOOST_TEST((Real(n2) >= n2) == true); - BOOST_TEST((Real(n2) <= n2) == true); - BOOST_TEST((Real(n2) > n2) == false); - BOOST_TEST((Real(n2) < n2) == false); + + test_comparisons(n1, n2); + test_comparisons(n1, n3); + test_comparisons(n1, n1); + test_comparisons(n3, n1); + test_comparisons(n2, n1); + test_comparisons(n3, n3); + // Default construct: BOOST_TEST(Real(n1) == n1); BOOST_TEST(Real(n2) == n2); From 2fb7c1a0449b1230f584be9c259d773444666b1e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 2 Aug 2012 17:14:17 +0000 Subject: [PATCH 207/256] Fix Linux x64 C++0x build issues. [SVN r79854] --- include/boost/multiprecision/mp_number.hpp | 10 +++++----- performance/arithmetic_backend.hpp | 7 ++++--- performance/delaunay_test.cpp | 7 ++----- test/Jamfile.v2 | 2 +- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 4a8ee16d..7fb7fed7 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1471,23 +1471,23 @@ private: // Tests if the expression contains a reference to *this: template - BOOST_CONSTEXPR bool contains_self(const Exp& e)const BOOST_NOEXCEPT + bool contains_self(const Exp& e)const BOOST_NOEXCEPT { return contains_self(e, typename Exp::arity()); } template - BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT + bool contains_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT { return is_realy_self(e.value()); } template - BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<1> const&)const BOOST_NOEXCEPT + bool contains_self(const Exp& e, mpl::int_<1> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child_type; return contains_self(e.left(), typename child_type::arity()); } template - BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<2> const&)const BOOST_NOEXCEPT + bool contains_self(const Exp& e, mpl::int_<2> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::right_type child1_type; @@ -1495,7 +1495,7 @@ private: || contains_self(e.right(), typename child1_type::arity()); } template - BOOST_CONSTEXPR bool contains_self(const Exp& e, mpl::int_<3> const&)const BOOST_NOEXCEPT + bool contains_self(const Exp& e, mpl::int_<3> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::middle_type child1_type; diff --git a/performance/arithmetic_backend.hpp b/performance/arithmetic_backend.hpp index e7170c1f..a4d59f36 100644 --- a/performance/arithmetic_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -13,6 +13,7 @@ #include #include #include +#include namespace boost{ namespace multiprecision{ @@ -223,17 +224,17 @@ inline typename disable_if_c::has_infinity>::typ } template -inline typename enable_if>::type eval_add(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) +inline typename enable_if >::type eval_add(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { result.data() = a.data() + b; } template -inline typename enable_if>::type eval_subtract(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) +inline typename enable_if >::type eval_subtract(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { result.data() = a.data() - b; } template -inline typename enable_if>::type eval_multiply(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) +inline typename enable_if >::type eval_multiply(arithmetic_backend& result, const arithmetic_backend& a, const A2& b) { result.data() = a.data() * b; } diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp index 7aa6170b..f9921c46 100644 --- a/performance/delaunay_test.cpp +++ b/performance/delaunay_test.cpp @@ -129,12 +129,12 @@ inline int128_t mult_64x64_to_128(int64_t a, int64_t b) } template -__forceinline void mul_2n(R& r, const T& a, const T& b) +inline void mul_2n(R& r, const T& a, const T& b) { r = R(a) * b; } -__forceinline void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) +inline void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) { r = mult_64x64_to_128(a, b); } @@ -156,9 +156,6 @@ inline bool delaunay_test(int32_t ax, int32_t ay, int32_t bx, int32_t by, typedef typename Traits::i64_t i64; typedef typename Traits::i128_t i128; - i64 ax64 = ax, ay64 = ay, bx64 = bx, by64 = by, - cx64 = cx, cy64 = cy, dx64 = dx, dy64 = dy; - i64 cos_abc, t; mul_2n(cos_abc, (ax-bx), (cx-bx)); mul_2n(t, (ay-by), (cy-by)); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a10e4f59..3c47c6d2 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -578,7 +578,7 @@ run test_constants.cpp : test_constants_cpp_dec_float ; -run test_move.cpp mpfr +run test_move.cpp mpfr gmp : # command line : # input files : # requirements From 7111ca4216c91c51e884af590ff5881d44b499e3 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 3 Aug 2012 12:18:10 +0000 Subject: [PATCH 208/256] Fix buglets in performance test code. Explain delaunay code digit usage better. [SVN r79857] --- performance/delaunay_test.cpp | 17 ++++++++++------- performance/sf_performance.cpp | 1 + 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp index f9921c46..34d6a5da 100644 --- a/performance/delaunay_test.cpp +++ b/performance/delaunay_test.cpp @@ -129,12 +129,12 @@ inline int128_t mult_64x64_to_128(int64_t a, int64_t b) } template -inline void mul_2n(R& r, const T& a, const T& b) +__forceinline void mul_2n(R& r, const T& a, const T& b) { r = R(a) * b; } -inline void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) +__forceinline void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) { r = mult_64x64_to_128(a, b); } @@ -152,14 +152,17 @@ inline bool delaunay_test(int32_t ax, int32_t ay, int32_t bx, int32_t by, // to the following code. // Numerical robustness is important. This code addresses it by performing // exact calculations with large integer types. + // + // NOTE: This routine is limited to inputs with up to 30 BIT PRECISION, which + // is to say all inputs must be in the range [INT_MIN/2, INT_MAX/2]. typedef typename Traits::i64_t i64; typedef typename Traits::i128_t i128; i64 cos_abc, t; - mul_2n(cos_abc, (ax-bx), (cx-bx)); + mul_2n(cos_abc, (ax-bx), (cx-bx)); // subtraction yields 31-bit values, multiplied to give 62-bit values mul_2n(t, (ay-by), (cy-by)); - cos_abc += t; + cos_abc += t; // addition yields 63 bit value, leaving one left for the sign i64 cos_cda; mul_2n(cos_cda, (cx-dx), (ax-dx)); @@ -180,9 +183,9 @@ inline bool delaunay_test(int32_t ax, int32_t ay, int32_t bx, int32_t by, sin_cda -= t; i128 sin_sum, t128; - mul_2n(sin_sum, sin_abc, cos_cda); + mul_2n(sin_sum, sin_abc, cos_cda); // 63-bit inputs multiplied to 126-bit output mul_2n(t128, cos_abc, sin_cda); - sin_sum += t128; + sin_sum += t128; // Addition yields 127 bit result, leaving one bit for the sign return sin_sum < 0; } @@ -266,7 +269,7 @@ int main() std::cout << "calculating...\n"; do_calc >("int64_t, int64_t"); - do_calc >, mp_number > > >("arithmetic_backend"); + do_calc, false>, mp_number, false> > >("arithmetic_backend"); do_calc >("int64_t, int128_t"); do_calc >("int64_t, mp_int128_t"); do_calc, true> > >("int64_t, mp_int128_t (ET)"); diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index b6b056bf..0c10a841 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -4,6 +4,7 @@ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ #define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 500 +#define BOOST_MATH_PROMOTE_DOUBLE_POLICY false #if !defined(TEST_MPFR) && !defined(TEST_MPREAL) && !defined(TEST_MPF) && !defined(TEST_MPREAL) \ && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_CLASS) && !defined(TEST_FLOAT) From bb2ac1a969be7607c9e5972628dd72c9ab6471b5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 3 Aug 2012 18:24:53 +0000 Subject: [PATCH 209/256] Mark up some functions as being forced inline. [SVN r79859] --- include/boost/multiprecision/cpp_int.hpp | 310 +++++++++--------- .../detail/cpp_int_trivial_ops.hpp | 66 ++-- include/boost/multiprecision/mp_number.hpp | 120 +++---- performance/delaunay_test.cpp | 7 +- 4 files changed, 252 insertions(+), 251 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index c8e56196..92672f52 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -98,26 +98,26 @@ public: // // Direct construction: // - BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(1), m_sign(false), m_internal(true) { } - BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(1), m_sign(i < 0), m_internal(true) { } #if defined(BOOST_LITTLE_ENDIAN) - BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false), m_internal(true) { } - BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0), m_internal(true) { } #endif // // Helper functions for getting at our internal data, and manipulating storage: // - allocator_type& allocator() BOOST_NOEXCEPT { return *this; } - const allocator_type& allocator()const BOOST_NOEXCEPT { return *this; } - unsigned size()const BOOST_NOEXCEPT { return m_limbs; } - limb_pointer limbs() BOOST_NOEXCEPT { return m_internal ? m_data.la : m_data.ld.data; } - const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_internal ? m_data.la : m_data.ld.data; } - unsigned capacity()const BOOST_NOEXCEPT { return m_internal ? internal_limb_count : m_data.ld.capacity; } - bool sign()const BOOST_NOEXCEPT { return m_sign; } + BOOST_FORCEINLINE allocator_type& allocator() BOOST_NOEXCEPT { return *this; } + BOOST_FORCEINLINE const allocator_type& allocator()const BOOST_NOEXCEPT { return *this; } + BOOST_FORCEINLINE unsigned size()const BOOST_NOEXCEPT { return m_limbs; } + BOOST_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return m_internal ? m_data.la : m_data.ld.data; } + BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_internal ? m_data.la : m_data.ld.data; } + BOOST_FORCEINLINE unsigned capacity()const BOOST_NOEXCEPT { return m_internal ? internal_limb_count : m_data.ld.capacity; } + BOOST_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; } void sign(bool b) BOOST_NOEXCEPT { m_sign = b; @@ -149,13 +149,13 @@ public: m_limbs = new_size; } } - void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT { limb_pointer p = limbs(); while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1), m_sign(false), m_internal(true) {} - cpp_int_base(const cpp_int_base& o) : allocator_type(o), m_limbs(0), m_internal(true) + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1), m_sign(false), m_internal(true) {} + BOOST_FORCEINLINE cpp_int_base(const cpp_int_base& o) : allocator_type(o), m_limbs(0), m_internal(true) { resize(o.size()); std::copy(o.limbs(), o.limbs() + o.size(), limbs()); @@ -196,7 +196,7 @@ public: return *this; } #endif - ~cpp_int_base() BOOST_NOEXCEPT + BOOST_FORCEINLINE ~cpp_int_base() BOOST_NOEXCEPT { if(!m_internal) allocator().deallocate(limbs(), capacity()); @@ -212,7 +212,7 @@ public: m_sign = o.m_sign; } } - void negate() BOOST_NOEXCEPT + BOOST_FORCEINLINE void negate() BOOST_NOEXCEPT { m_sign = !m_sign; // Check for zero value: @@ -222,11 +222,11 @@ public: m_sign = false; } } - bool isneg()const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool isneg()const BOOST_NOEXCEPT { return m_sign; } - void do_swap(cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { std::swap(m_data, o.m_data); std::swap(m_sign, o.m_sign); @@ -272,24 +272,24 @@ public: // // Direct construction: // - BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(1), m_sign(false) {} - BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT : m_wrapper(limb_type(i < 0 ? -i : i)), m_limbs(1), m_sign(i < 0) {} #if defined(BOOST_LITTLE_ENDIAN) - BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false) {} - BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0) {} #endif // // Helper functions for getting at our internal data, and manipulating storage: // - unsigned size()const BOOST_NOEXCEPT { return m_limbs; } - limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; } - const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } - bool sign()const BOOST_NOEXCEPT { return m_sign; } - void sign(bool b) BOOST_NOEXCEPT + BOOST_FORCEINLINE unsigned size()const BOOST_NOEXCEPT { return m_limbs; } + BOOST_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; } + BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } + BOOST_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; } + BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT { m_sign = b; // Check for zero value: @@ -299,11 +299,11 @@ public: m_sign = false; } } - void resize(unsigned new_size) BOOST_NOEXCEPT + BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT { m_limbs = static_cast((std::min)(new_size, internal_limb_count)); } - void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT { limb_pointer p = limbs(); p[internal_limb_count-1] &= upper_limb_mask; @@ -311,8 +311,8 @@ public: if((m_limbs == 1) && (!*p)) m_sign = false; // zero is always unsigned } - BOOST_CONSTEXPR cpp_int_base() : m_wrapper(limb_type(0u)), m_limbs(1), m_sign(false) {} - cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign) + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() : m_wrapper(limb_type(0u)), m_limbs(1), m_sign(false) {} + BOOST_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign) { std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } @@ -326,7 +326,7 @@ public: m_sign = o.m_sign; } } - void negate() BOOST_NOEXCEPT + BOOST_FORCEINLINE void negate() BOOST_NOEXCEPT { m_sign = !m_sign; // Check for zero value: @@ -336,11 +336,11 @@ public: m_sign = false; } } - bool isneg()const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool isneg()const BOOST_NOEXCEPT { return m_sign; } - void do_swap(cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) std::swap(m_wrapper.m_data[i], o.m_wrapper.m_data[i]); @@ -385,42 +385,42 @@ public: // // Direct construction: // - BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(1) {} - cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT : m_wrapper(limb_type(i < 0 ? -i : i)), m_limbs(1) { if(i < 0) negate(); } #ifdef BOOST_LITTLE_ENDIAN - BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1) {} - cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)) { if(i < 0) negate(); } #endif // // Helper functions for getting at our internal data, and manipulating storage: // - unsigned size()const BOOST_NOEXCEPT { return m_limbs; } - limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; } - const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } - BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } - void sign(bool b) BOOST_NOEXCEPT { if(b) negate(); } - void resize(unsigned new_size) BOOST_NOEXCEPT + BOOST_FORCEINLINE unsigned size()const BOOST_NOEXCEPT { return m_limbs; } + BOOST_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; } + BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } + BOOST_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } + BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT { if(b) negate(); } + BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT { m_limbs = (std::min)(new_size, internal_limb_count); } - void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT { limb_pointer p = limbs(); p[internal_limb_count-1] &= upper_limb_mask; while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_wrapper(limb_type(0u)), m_limbs(1) {} - cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs) + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_wrapper(limb_type(0u)), m_limbs(1) {} + BOOST_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs) { std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } //~cpp_int_base() BOOST_NOEXCEPT {} - void assign(const cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void assign(const cpp_int_base& o) BOOST_NOEXCEPT { if(this != &o) { @@ -441,11 +441,11 @@ public: normalize(); eval_increment(static_cast& >(*this)); } - BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT { return false; } - void do_swap(cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { for(unsigned i = 0; i < (std::max)(size(), o.size()); ++i) std::swap(m_wrapper.m_data[i], o.m_wrapper.m_data[i]); @@ -496,22 +496,22 @@ public: // Direct construction: // template - BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT : m_data(i < 0 ? -i : i), m_sign(i < 0) {} template - BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT : m_data(i), m_sign(false) {} template - cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT : m_data(std::fabs(i)), m_sign(i < 0) {} // // Helper functions for getting at our internal data, and manipulating storage: // - BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; } - limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; } - const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } - bool sign()const BOOST_NOEXCEPT { return m_sign; } - void sign(bool b) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; } + BOOST_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; } + BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } + BOOST_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; } + BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT { m_sign = b; // Check for zero value: @@ -520,23 +520,23 @@ public: m_sign = false; } } - void resize(unsigned new_size) BOOST_NOEXCEPT {} - void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT {} + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT { if(!m_data) m_sign = false; // zero is always unsigned m_data &= limb_mask; } - BOOST_CONSTEXPR cpp_int_base() : m_data(0), m_sign(false) {} - BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data), m_sign(o.m_sign) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() : m_data(0), m_sign(false) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data), m_sign(o.m_sign) {} //~cpp_int_base() BOOST_NOEXCEPT {} - void assign(const cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void assign(const cpp_int_base& o) BOOST_NOEXCEPT { m_data = o.m_data; m_sign = o.m_sign; } - void negate() BOOST_NOEXCEPT + BOOST_FORCEINLINE void negate() BOOST_NOEXCEPT { m_sign = !m_sign; // Check for zero value: @@ -545,11 +545,11 @@ public: m_sign = false; } } - bool isneg()const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool isneg()const BOOST_NOEXCEPT { return m_sign; } - void do_swap(cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { std::swap(m_sign, o.m_sign); std::swap(m_data, o.m_data); @@ -578,13 +578,13 @@ public: // Direct construction: // template - BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT : m_data(i < 0 ? 1 + ~static_cast(-i) : static_cast(i)) {} template - BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT : m_data(i) {} template - cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT : m_data(std::fabs(i)) { if(i < 0) @@ -593,38 +593,38 @@ public: // // Helper functions for getting at our internal data, and manipulating storage: // - BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; } - limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; } - const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } - BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } - void sign(bool b) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR unsigned size()const BOOST_NOEXCEPT { return 1; } + BOOST_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; } + BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } + BOOST_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } + BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT { if(b) negate(); } - void resize(unsigned new_size) BOOST_NOEXCEPT {} - void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT {} + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT { m_data &= limb_mask; } - BOOST_CONSTEXPR cpp_int_base() : m_data(0) {} - BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() : m_data(0) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data) {} //~cpp_int_base() BOOST_NOEXCEPT {} - void assign(const cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void assign(const cpp_int_base& o) BOOST_NOEXCEPT { m_data = o.m_data; } - void negate() BOOST_NOEXCEPT + BOOST_FORCEINLINE void negate() BOOST_NOEXCEPT { m_data = ~m_data; ++m_data; } - BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT { return false; } - void do_swap(cpp_int_base& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { std::swap(m_data, o.m_data); } @@ -678,45 +678,45 @@ public: typedef mpl::list unsigned_types; typedef mpl::list float_types; - BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} - BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) : base_type(o) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) : base_type(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - BOOST_CONSTEXPR cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} #endif template - BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT : base_type(i) {} template - BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT : base_type(i) {} #if defined(BOOST_LITTLE_ENDIAN) template - BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT : base_type(i) {} template - BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT : base_type(i) {} #endif - cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) + BOOST_FORCEINLINE cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { this->assign(o); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_backend& operator = (cpp_int_backend&& o) BOOST_NOEXCEPT_IF(boost::is_void::value) + BOOST_FORCEINLINE cpp_int_backend& operator = (cpp_int_backend&& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { *static_cast(this) = static_cast(o); return *this; } #endif - cpp_int_backend& operator = (limb_type i) BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_backend& operator = (limb_type i) BOOST_NOEXCEPT { this->resize(1); *this->limbs() = i; this->sign(false); return *this; } - cpp_int_backend& operator = (signed_limb_type i) BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_backend& operator = (signed_limb_type i) BOOST_NOEXCEPT { this->resize(1); *this->limbs() = static_cast(std::abs(i)); @@ -898,7 +898,7 @@ public: this->negate(); return *this; } - void swap(cpp_int_backend& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void swap(cpp_int_backend& o) BOOST_NOEXCEPT { this->do_swap(o); } @@ -1026,7 +1026,7 @@ public: return 0; } template - typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT + BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT { // braindead version: cpp_int_backend t; @@ -1051,33 +1051,33 @@ public: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(typename base_type::local_limb_type) * CHAR_BIT); - BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} - BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT : base_type(o) {} - cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT : base_type(o) {} + BOOST_FORCEINLINE cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT { this->assign(o); return *this; } template - BOOST_CONSTEXPR cpp_int_backend(A i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(A i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT : base_type(i) {} template - typename enable_if, cpp_int_backend&>::type operator = (SI i) BOOST_NOEXCEPT + BOOST_FORCEINLINE typename enable_if, cpp_int_backend&>::type operator = (SI i) BOOST_NOEXCEPT { *this->limbs() = static_cast(std::abs(i)); this->sign(i < 0); return *this; } template - typename enable_if, cpp_int_backend&>::type operator = (UI i) BOOST_NOEXCEPT + BOOST_FORCEINLINE typename enable_if, cpp_int_backend&>::type operator = (UI i) BOOST_NOEXCEPT { *this->limbs() = static_cast(i); return *this; } template - typename enable_if, cpp_int_backend&>::type operator = (F i) BOOST_NOEXCEPT + BOOST_FORCEINLINE typename enable_if, cpp_int_backend&>::type operator = (F i) BOOST_NOEXCEPT { *this->limbs() = static_cast(std::abs(i)); this->sign(i < 0); @@ -1094,7 +1094,7 @@ public: } return *this; } - void swap(cpp_int_backend& o) BOOST_NOEXCEPT + BOOST_FORCEINLINE void swap(cpp_int_backend& o) BOOST_NOEXCEPT { this->do_swap(o); } @@ -1209,7 +1209,7 @@ public: return result; } template - typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT + BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT { // braindead version: cpp_int_backend t; @@ -1219,40 +1219,40 @@ public: }; template -inline bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { return (a.sign() == b.sign()) && (a.size() == b.size()) && std::equal(a.limbs(), a.limbs() + a.size(), b.limbs()); } template -inline bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT { return (a.sign() == false) && (a.size() == 1) && (*a.limbs() == b); } template -inline bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT { return (a.sign() == (b < 0)) && (a.size() == 1) && (*a.limbs() == static_cast(std::abs(b))); } template -inline bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT { return (a.size() == 1) && (*a.limbs() == b); } template -inline bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT { return (b < 0) ? eval_eq(a, cpp_int_backend(b)) : eval_eq(a, static_cast(b)); // Use bit pattern of b for comparison } template -inline bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT { if(a.sign()) return true; @@ -1280,20 +1280,20 @@ inline bool eval_lt(const cpp_int_backend& a, s } template -inline bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT { if(a.size() > 1) return false; return *a.limbs() < b; } template -inline bool eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT { return (b < 0) ? a.compare(b) < 0 : eval_lt(a, static_cast(b)); // Use bit pattern of b for comparison } template -inline bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT { if(a.sign()) return false; @@ -1323,20 +1323,20 @@ inline bool eval_gt(const cpp_int_backend& a, s } template -inline bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT { if(a.size() > 1) return true; return *a.limbs() > b; } template -inline bool eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT { return (b < 0) ? a.compare(b) > 0 : eval_gt(a, static_cast(b)); // Use bit pattern of b for comparison. } template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_add(result, result, o); } @@ -1445,7 +1445,7 @@ inline void add_unsigned(cpp_int_backend& res result.sign(a.sign()); } template -inline void eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) { @@ -1455,7 +1455,7 @@ inline void eval_add(cpp_int_backend& result, add_unsigned(result, result, o); } template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign()) { @@ -1466,7 +1466,7 @@ inline void eval_add(cpp_int_backend& result, add_unsigned(result, a, o); } template -inline void eval_add(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o < 0) eval_subtract(result, static_cast(-o)); @@ -1474,7 +1474,7 @@ inline void eval_add(cpp_int_backend& result, eval_add(result, static_cast(o)); } template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o < 0) eval_subtract(result, a, static_cast(-o)); @@ -1514,7 +1514,7 @@ inline void subtract_unsigned(cpp_int_backend } } template -inline void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(result.sign()) { @@ -1524,7 +1524,7 @@ inline void eval_subtract(cpp_int_backend& re subtract_unsigned(result, o); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign()) { @@ -1537,7 +1537,7 @@ inline void eval_subtract(cpp_int_backend& re } } template -inline void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o) { @@ -1548,7 +1548,7 @@ inline void eval_subtract(cpp_int_backend& re } } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o) { @@ -1561,7 +1561,7 @@ inline void eval_subtract(cpp_int_backend& re result = a; } template -inline void eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) { static const limb_type one = 1; if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) @@ -1572,7 +1572,7 @@ inline void eval_increment(cpp_int_backend& r eval_add(result, one); } template -inline void eval_decrement(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_decrement(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) { static const limb_type one = 1; if(!result.sign() && result.limbs()[0]) @@ -1583,7 +1583,7 @@ inline void eval_decrement(cpp_int_backend& r eval_subtract(result, one); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_subtract(result, result, o); } @@ -1665,7 +1665,7 @@ inline void subtract_unsigned(cpp_int_backend result.negate(); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign() != b.sign()) { @@ -1757,7 +1757,7 @@ inline void eval_multiply(cpp_int_backend& re result.sign(a.sign() != b.sign()); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, a); } @@ -1794,12 +1794,12 @@ inline void eval_multiply(cpp_int_backend& re result.normalize(); } template -inline void eval_multiply(cpp_int_backend& result, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val <= (std::numeric_limits::max)()) { @@ -1812,12 +1812,12 @@ inline void eval_multiply(cpp_int_backend& re } } template -inline void eval_multiply(cpp_int_backend& result, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val > 0) eval_multiply(result, a, static_cast(val)); @@ -1828,7 +1828,7 @@ inline void eval_multiply(cpp_int_backend& re } } template -inline void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } @@ -1853,7 +1853,7 @@ inline void eval_multiply(cpp_int_backend& re eval_multiply(result, a, t); } template -inline void eval_multiply(cpp_int_backend& result, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, val); } @@ -2270,20 +2270,20 @@ void divide_unsigned_helper(cpp_int_backend* } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); result.sign(a.sign() != b.sign()); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) { cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) { cpp_int_backend r; divide_unsigned_helper(&result, a, std::abs(b), r); @@ -2291,58 +2291,58 @@ inline void eval_divide(cpp_int_backend& resu result.negate(); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, limb_type b) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, limb_type b) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_divide(cpp_int_backend& result, signed_limb_type b) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: cpp_int_backend a(result); eval_divide(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) { divide_unsigned_helper(static_cast* >(0), a, b, result); result.sign(a.sign()); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) { divide_unsigned_helper(static_cast* >(0), a, b, result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) { divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) { // There is no in place divide: cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, limb_type b) +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, limb_type b) { // There is no in place divide: cpp_int_backend a(result); eval_modulus(result, a, b); } template -inline void eval_modulus(cpp_int_backend& result, signed_limb_type b) +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, signed_limb_type b) { // There is no in place divide: cpp_int_backend a(result); @@ -2479,22 +2479,22 @@ struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCE struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; template -inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) +BOOST_FORCEINLINE void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_and()); } template -inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_or()); } template -inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_xor()); } template -inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Increment and negate: result = o; @@ -2720,17 +2720,17 @@ inline typename enable_if, void>::type eval_convert_to(R* r } template -inline bool eval_is_zero(const cpp_int_backend& val) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_is_zero(const cpp_int_backend& val) BOOST_NOEXCEPT { return (val.size() == 1) && (val.limbs()[0] == 0); } template -inline int eval_get_sign(const cpp_int_backend& val) BOOST_NOEXCEPT +BOOST_FORCEINLINE int eval_get_sign(const cpp_int_backend& val) BOOST_NOEXCEPT { return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1; } template -inline void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { result = val; result.sign(false); @@ -2927,7 +2927,7 @@ inline typename enable_if, Integer>::type eval_integer_modu } } template -inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) { typedef typename make_unsigned::type unsigned_type; return eval_integer_modulus(x, static_cast(std::abs(val))); diff --git a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp index 056c7adb..f2700c5e 100644 --- a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp +++ b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp @@ -11,106 +11,106 @@ namespace boost{ namespace multiprecision{ namespace backends{ template -inline bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { return (a.sign() == b.sign()) && (*a.limbs() == *b.limbs()); } template -inline bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { return *a.limbs() == *b.limbs(); } template -inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT { return !a.sign() && (*a.limbs() == b); } template -inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT { return (a.sign() == (b < 0)) && (*a.limbs() == std::abs(b)); } template -inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT { return *a.limbs() == b; } template -inline typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT { return *a.limbs() == b; } template -inline bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { if(a.sign() != b.sign()) return a.sign(); return a.sign() ? *a.limbs() > *b.limbs() : *a.limbs() < *b.limbs(); } template -inline bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { return *a.limbs() < *b.limbs(); } template -inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT { if(a.sign()) return true; return *a.limbs() < b; } template -inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT { if(a.sign() != (b < 0)) return a.sign(); return a.sign() ? (*a.limbs() > std::abs(b)) : (*a.limbs() < std::abs(b)); } template -inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT { return *a.limbs() < b; } template -inline typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT { return *a.limbs() < b; } template -inline bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { if(a.sign() != b.sign()) return !a.sign(); return a.sign() ? *a.limbs() < *b.limbs() : *a.limbs() > *b.limbs(); } template -inline bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { return *a.limbs() > *b.limbs(); } template -inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT { if(a.sign()) return false; return *a.limbs() > b; } template -inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT { if(a.sign() != (b < 0)) return !a.sign(); return a.sign() ? (*a.limbs() < std::abs(b)) : (*a.limbs() > std::abs(b)); } template -inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT { return *a.limbs() > b; } template -inline typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT { return *a.limbs() > b; } @@ -133,7 +133,7 @@ inline void eval_add(cpp_int_backend& result, const c } template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() += *o.limbs(); } @@ -155,26 +155,26 @@ inline void eval_subtract(cpp_int_backend& result, co } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() -= *o.limbs(); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() *= *o.limbs(); result.sign(result.sign() != o.sign()); } template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() *= *o.limbs(); } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) { if(!*o.limbs()) BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); @@ -183,7 +183,7 @@ inline void eval_divide(cpp_int_backend& result, cons } template -inline void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) { if(!*o.limbs()) BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); @@ -191,7 +191,7 @@ inline void eval_divide(cpp_int_backend& result, con } template -inline void eval_modulus(cpp_int_backend& result, const cpp_int_backend& o) +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& o) { if(!*o.limbs()) BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); @@ -200,13 +200,13 @@ inline void eval_modulus(cpp_int_backend& result, c } template -inline void eval_left_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_left_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT { *result.limbs() <<= s; } template -inline void eval_right_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_right_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT { *result.limbs() >>= s; } @@ -241,7 +241,7 @@ inline void eval_bitwise_and(cpp_int_backend& result, } template -inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() &= *o.limbs(); } @@ -276,7 +276,7 @@ inline void eval_bitwise_or(cpp_int_backend& result, } template -inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() |= *o.limbs(); } @@ -311,7 +311,7 @@ inline void eval_bitwise_xor(cpp_int_backend& result, } template -inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() ^= *o.limbs(); } @@ -340,19 +340,19 @@ inline void eval_complement(cpp_int_backend& result, } template -inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() = ~*o.limbs(); } template -inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { *result.limbs() = boost::math::gcd(*a.limbs(), *b.limbs()); } template -inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { *result.limbs() = boost::math::lcm(*a.limbs(), *b.limbs()); } diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 7fb7fed7..a4ab00b7 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -38,21 +38,21 @@ class mp_number typedef mp_number self_type; public: typedef Backend backend_type; - BOOST_CONSTEXPR mp_number() BOOST_NOEXCEPT_IF(noexcept(Backend())) {} - BOOST_CONSTEXPR mp_number(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} + BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number() BOOST_NOEXCEPT_IF(noexcept(Backend())) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} template - mp_number(V v, typename enable_if_c< + BOOST_FORCEINLINE mp_number(V v, typename enable_if_c< (boost::is_arithmetic::value || is_same::value || is_convertible::value) && !is_convertible::type, Backend>::value >::type* = 0) { m_backend = canonical_value(v); } template - BOOST_CONSTEXPR mp_number(V v, typename enable_if_c< + BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(V v, typename enable_if_c< (boost::is_arithmetic::value || is_same::value || is_convertible::value) && is_convertible::type, Backend>::value >::type* = 0) : m_backend(canonical_value(v)) {} - BOOST_CONSTEXPR mp_number(const mp_number& e, unsigned digits10) + BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(const mp_number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} /* // @@ -67,10 +67,10 @@ public: } */ template - BOOST_CONSTEXPR mp_number(const mp_number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(const mp_number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} template - mp_number(const mp_number& val, typename enable_if >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) + BOOST_FORCEINLINE mp_number(const mp_number& val, typename enable_if >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) { m_backend = val.backend(); } @@ -83,20 +83,20 @@ public: detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); } template - mp_number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* = 0) + BOOST_FORCEINLINE mp_number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* = 0) { using default_ops::assign_components; assign_components(m_backend, canonical_value(v1), canonical_value(v2)); } template - mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* = 0) + BOOST_FORCEINLINE mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* = 0) { using default_ops::assign_components; assign_components(m_backend, v1.backend(), v2.backend()); } template - BOOST_CONSTEXPR mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) + BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(v){} @@ -108,14 +108,14 @@ public: return *this; } - mp_number& operator=(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) + BOOST_FORCEINLINE mp_number& operator=(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = e.m_backend; return *this; } template - typename enable_if, is_same, is_convertible >, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, is_same, is_convertible >, mp_number& >::type operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval::type>())) { m_backend = canonical_value(v); @@ -123,7 +123,7 @@ public: } template - typename enable_if, mpl::not_, is_same, is_convertible > > >, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, mpl::not_, is_same, is_convertible > > >, mp_number& >::type operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v; @@ -131,14 +131,14 @@ public: } template - mp_number& operator=(const mp_number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) + BOOST_FORCEINLINE mp_number& operator=(const mp_number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v.backend(); return *this; } template - typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, mp_number& >::type operator=(const mp_number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v.backend(); @@ -163,8 +163,8 @@ public: } #ifndef BOOST_NO_RVALUE_REFERENCES - BOOST_CONSTEXPR mp_number(mp_number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} - mp_number& operator=(mp_number&& r) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(mp_number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} + BOOST_FORCEINLINE mp_number& operator=(mp_number&& r) BOOST_NOEXCEPT { m_backend = static_cast(r.m_backend); return *this; @@ -307,21 +307,21 @@ public: // execute the increment/decrement on destruction, but // correct implemetation will be tricky, so defered for now... // - mp_number& operator++() + BOOST_FORCEINLINE mp_number& operator++() { using default_ops::eval_increment; eval_increment(m_backend); return *this; } - mp_number& operator--() + BOOST_FORCEINLINE mp_number& operator--() { using default_ops::eval_decrement; eval_decrement(m_backend); return *this; } - mp_number operator++(int) + BOOST_FORCEINLINE mp_number operator++(int) { using default_ops::eval_increment; self_type temp(*this); @@ -329,7 +329,7 @@ public: return BOOST_MP_MOVE(temp); } - mp_number operator--(int) + BOOST_FORCEINLINE mp_number operator--(int) { using default_ops::eval_decrement; self_type temp(*this); @@ -338,7 +338,7 @@ public: } template - typename enable_if, mp_number&>::type operator <<= (V val) + BOOST_FORCEINLINE typename enable_if, mp_number&>::type operator <<= (V val) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); @@ -347,7 +347,7 @@ public: } template - typename enable_if, mp_number&>::type operator >>= (V val) + BOOST_FORCEINLINE typename enable_if, mp_number&>::type operator >>= (V val) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); @@ -355,7 +355,7 @@ public: return *this; } - mp_number& operator /= (const self_type& e) + BOOST_FORCEINLINE mp_number& operator /= (const self_type& e) { do_divide(detail::mp_exp(e), detail::terminal()); return *this; @@ -378,7 +378,7 @@ public: } template - typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, mp_number& >::type operator/=(const V& v) { using default_ops::eval_divide; @@ -386,7 +386,7 @@ public: return *this; } - mp_number& operator&=(const self_type& e) + BOOST_FORCEINLINE mp_number& operator&=(const self_type& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); do_bitwise_and(detail::mp_exp(e), detail::terminal()); @@ -412,7 +412,7 @@ public: } template - typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, mp_number& >::type operator&=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); @@ -421,7 +421,7 @@ public: return *this; } - mp_number& operator|=(const self_type& e) + BOOST_FORCEINLINE mp_number& operator|=(const self_type& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); do_bitwise_or(detail::mp_exp(e), detail::terminal()); @@ -447,7 +447,7 @@ public: } template - typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, mp_number& >::type operator|=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); @@ -456,7 +456,7 @@ public: return *this; } - mp_number& operator^=(const self_type& e) + BOOST_FORCEINLINE mp_number& operator^=(const self_type& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); do_bitwise_xor(detail::mp_exp(e), detail::terminal()); @@ -480,7 +480,7 @@ public: } template - typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, mp_number& >::type operator^=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); @@ -493,7 +493,7 @@ public: // typedef bool (self_type::*unmentionable_type)()const; - operator unmentionable_type()const + BOOST_FORCEINLINE operator unmentionable_type()const { return is_zero() ? 0 : &self_type::is_zero; } @@ -501,19 +501,19 @@ public: // // swap: // - void swap(self_type& other) BOOST_NOEXCEPT + BOOST_FORCEINLINE void swap(self_type& other) BOOST_NOEXCEPT { m_backend.swap(other.backend()); } // // Zero and sign: // - bool is_zero()const + BOOST_FORCEINLINE bool is_zero()const { using default_ops::eval_is_zero; return eval_is_zero(m_backend); } - int sign()const + BOOST_FORCEINLINE int sign()const { using default_ops::eval_get_sign; return eval_get_sign(m_backend); @@ -555,24 +555,24 @@ public: // // Comparison: // - int compare(const mp_number& o)const + BOOST_FORCEINLINE int compare(const mp_number& o)const BOOST_NOEXCEPT_IF(noexcept(std::declval().compare(std::declval()))) { return m_backend.compare(o.m_backend); } template - typename enable_if, int>::type compare(const V& o)const + BOOST_FORCEINLINE typename enable_if, int>::type compare(const V& o)const { using default_ops::eval_get_sign; if(o == 0) return eval_get_sign(m_backend); return m_backend.compare(canonical_value(o)); } - Backend& backend() BOOST_NOEXCEPT + BOOST_FORCEINLINE Backend& backend() BOOST_NOEXCEPT { return m_backend; } - const Backend& backend()const BOOST_NOEXCEPT + BOOST_FORCEINLINE const Backend& backend()const BOOST_NOEXCEPT { return m_backend; } @@ -1471,23 +1471,23 @@ private: // Tests if the expression contains a reference to *this: template - bool contains_self(const Exp& e)const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool contains_self(const Exp& e)const BOOST_NOEXCEPT { return contains_self(e, typename Exp::arity()); } template - bool contains_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool contains_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT { return is_realy_self(e.value()); } template - bool contains_self(const Exp& e, mpl::int_<1> const&)const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool contains_self(const Exp& e, mpl::int_<1> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child_type; return contains_self(e.left(), typename child_type::arity()); } template - bool contains_self(const Exp& e, mpl::int_<2> const&)const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool contains_self(const Exp& e, mpl::int_<2> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::right_type child1_type; @@ -1495,7 +1495,7 @@ private: || contains_self(e.right(), typename child1_type::arity()); } template - bool contains_self(const Exp& e, mpl::int_<3> const&)const BOOST_NOEXCEPT + BOOST_FORCEINLINE bool contains_self(const Exp& e, mpl::int_<3> const&)const BOOST_NOEXCEPT { typedef typename Exp::left_type child0_type; typedef typename Exp::middle_type child1_type; @@ -1507,51 +1507,52 @@ private: // Test if the expression is a reference to *this: template - BOOST_CONSTEXPR bool is_self(const Exp& e)const BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_self(const Exp& e)const BOOST_NOEXCEPT { return is_self(e, typename Exp::arity()); } template - BOOST_CONSTEXPR bool is_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_self(const Exp& e, mpl::int_<0> const&)const BOOST_NOEXCEPT { return is_realy_self(e.value()); } template - BOOST_CONSTEXPR bool is_self(const Exp&, mpl::int_ const&)const BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_self(const Exp&, mpl::int_ const&)const BOOST_NOEXCEPT { return false; } template - BOOST_CONSTEXPR bool is_realy_self(const Val&)const BOOST_NOEXCEPT{ return false; } - BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; } + BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const Val&)const BOOST_NOEXCEPT{ return false; } + BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; } - static BOOST_CONSTEXPR const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } + static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } template - static BOOST_CONSTEXPR typename detail::canonical::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } - static typename detail::canonical::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); } + static BOOST_FORCEINLINE BOOST_CONSTEXPR typename detail::canonical::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } + static BOOST_FORCEINLINE typename detail::canonical::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); } - static BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } + static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } template - static BOOST_CONSTEXPR const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } + static BOOST_FORCEINLINE BOOST_CONSTEXPR const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } template - static const A1& function_arg_value(const detail::mp_exp& exp) BOOST_NOEXCEPT { return exp.value(); } + static BOOST_FORCEINLINE const A1& function_arg_value(const detail::mp_exp& exp) BOOST_NOEXCEPT { return exp.value(); } template - static BOOST_CONSTEXPR const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } + static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } Backend m_backend; }; +/* namespace detail { template -inline int mp_number_compare(const mp_number& a, const mp_number& b) +BOOST_FORCEINLINE int mp_number_compare(const mp_number& a, const mp_number& b) { return a.compare(b); } template -inline int mp_number_compare(const mp_number& a, const mp_exp& b) +BOOST_FORCEINLINE int mp_number_compare(const mp_number& a, const mp_exp& b) { return a.compare(mp_number(b)); } @@ -1631,7 +1632,6 @@ struct is_valid_comparison : public boost::multiprecision::detail::is_valid_comp } -/* template inline typename boost::enable_if, bool>::type operator == (const Exp1& a, const Exp2& b) @@ -1712,7 +1712,7 @@ inline std::istream& operator >> (std::istream& is, mp_number -inline void swap(mp_number& a, mp_number& b) +BOOST_FORCEINLINE void swap(mp_number& a, mp_number& b) { a.swap(b); } diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp index 34d6a5da..62a03981 100644 --- a/performance/delaunay_test.cpp +++ b/performance/delaunay_test.cpp @@ -129,12 +129,13 @@ inline int128_t mult_64x64_to_128(int64_t a, int64_t b) } template -__forceinline void mul_2n(R& r, const T& a, const T& b) +BOOST_FORCEINLINE void mul_2n(R& r, const T& a, const T& b) { - r = R(a) * b; + r = a; + r *= b; } -__forceinline void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) +BOOST_FORCEINLINE void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) { r = mult_64x64_to_128(a, b); } From 7a7a287def426407c25316d7600460a56d3496f9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 4 Aug 2012 10:59:56 +0000 Subject: [PATCH 210/256] Fix C++11 compiler issues [SVN r79861] --- performance/arithmetic_backend.hpp | 18 +++++------ performance/performance_test.cpp | 50 +++++++++++++++--------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/performance/arithmetic_backend.hpp b/performance/arithmetic_backend.hpp index a4d59f36..acff30cd 100644 --- a/performance/arithmetic_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -545,15 +545,15 @@ class numeric_limits : public std::numeric_ typedef std::numeric_limits base_type; typedef boost::math::concepts::real_concept number_type; public: - BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } - BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } - BOOST_STATIC_CONSTEXPR number_type lowest() BOOST_NOEXCEPT { return -(max)(); } - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT { return base_type::epsilon(); } - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT { return epsilon() / 2; } - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT { return base_type::infinity(); } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT { return base_type::quiet_NaN(); } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT { return base_type::signaling_NaN(); } - BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); } + static const number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } + static const number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } + static const number_type lowest() BOOST_NOEXCEPT { return -(max)(); } + static const number_type epsilon() BOOST_NOEXCEPT { return base_type::epsilon(); } + static const number_type round_error() BOOST_NOEXCEPT { return epsilon() / 2; } + static const number_type infinity() BOOST_NOEXCEPT { return base_type::infinity(); } + static const number_type quiet_NaN() BOOST_NOEXCEPT { return base_type::quiet_NaN(); } + static const number_type signaling_NaN() BOOST_NOEXCEPT { return base_type::signaling_NaN(); } + static const number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); } }; } diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index 61116348..dcc93932 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -384,25 +384,25 @@ struct tester // // Hetero operations: // - template - static T get_hetero_test_value(boost::mpl::false_ const&) + template + static U get_hetero_test_value(boost::mpl::false_ const&) { - return T(2) / 3; + return U(2) / 3; } - template - static T get_hetero_test_value(boost::mpl::true_ const&) + template + static U get_hetero_test_value(boost::mpl::true_ const&) { - return (std::numeric_limits::max)() >> 4; + return (std::numeric_limits::max)() >> 4; } - template - static T get_hetero_test_value() + template + static U get_hetero_test_value() { - return get_hetero_test_value(boost::is_integral()); + return get_hetero_test_value(boost::is_integral()); } - template + template double test_multiply_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); stopwatch w; for(unsigned i = 0; i < 1000; ++i) { @@ -411,10 +411,10 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - template + template double test_inplace_multiply_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); for(unsigned i = 0; i < b.size(); ++i) a[i] = b[i]; stopwatch w; @@ -425,10 +425,10 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - template + template double test_add_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); stopwatch w; for(unsigned i = 0; i < 1000; ++i) { @@ -437,10 +437,10 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - template + template double test_inplace_add_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); for(unsigned i = 0; i < b.size(); ++i) a[i] = b[i]; stopwatch w; @@ -451,10 +451,10 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - template + template double test_subtract_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); stopwatch w; for(unsigned i = 0; i < 1000; ++i) { @@ -463,10 +463,10 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - template + template double test_inplace_subtract_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); for(unsigned i = 0; i < b.size(); ++i) a[i] = b[i]; stopwatch w; @@ -477,10 +477,10 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - template + template double test_divide_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); stopwatch w; for(unsigned i = 0; i < 1000; ++i) { @@ -489,10 +489,10 @@ struct tester } return boost::chrono::duration_cast >(w.elapsed()).count(); } - template + template double test_inplace_divide_hetero() { - static const T val = get_hetero_test_value(); + static const U val = get_hetero_test_value(); for(unsigned i = 0; i < b.size(); ++i) a[i] = b[i]; stopwatch w; From 821afe64fbe8345785f041b45b023805fad659e8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 7 Aug 2012 08:10:07 +0000 Subject: [PATCH 211/256] Add uBlas interoperability tests. Add file include tests. [SVN r79894] --- include/boost/multiprecision/mp_number.hpp | 148 +------ performance/sf_performance.cpp | 2 +- test/Jamfile.v2 | 22 ++ .../cpp_dec_float_include_test.cpp | 12 + test/include_test/cpp_int_include_test.cpp | 16 + test/include_test/gmp_include_test.cpp | 14 + test/include_test/mpfr_include_test.cpp | 12 + test/include_test/tommath_include_test.cpp | 12 + test/ublas_interop/common/init.hpp | 100 +++++ test/ublas_interop/common/testhelper.hpp | 74 ++++ test/ublas_interop/test1.cpp | 20 + test/ublas_interop/test1.hpp | 45 +++ test/ublas_interop/test11.cpp | 182 +++++++++ test/ublas_interop/test12.cpp | 102 +++++ test/ublas_interop/test13.cpp | 167 ++++++++ test/ublas_interop/test2.cpp | 87 +++++ test/ublas_interop/test2.hpp | 69 ++++ test/ublas_interop/test21.cpp | 95 +++++ test/ublas_interop/test22.cpp | 147 +++++++ test/ublas_interop/test23.cpp | 208 ++++++++++ test/ublas_interop/test3.cpp | 20 + test/ublas_interop/test3.hpp | 63 +++ test/ublas_interop/test31.cpp | 248 ++++++++++++ test/ublas_interop/test32.cpp | 324 ++++++++++++++++ test/ublas_interop/test33.cpp | 347 +++++++++++++++++ test/ublas_interop/test4.cpp | 19 + test/ublas_interop/test4.hpp | 39 ++ test/ublas_interop/test42.cpp | 361 ++++++++++++++++++ test/ublas_interop/test43.cpp | 326 ++++++++++++++++ test/ublas_interop/test5.cpp | 19 + test/ublas_interop/test5.hpp | 35 ++ test/ublas_interop/test52.cpp | 214 +++++++++++ test/ublas_interop/test53.cpp | 223 +++++++++++ test/ublas_interop/test6.cpp | 19 + test/ublas_interop/test6.hpp | 32 ++ test/ublas_interop/test62.cpp | 218 +++++++++++ test/ublas_interop/test63.cpp | 223 +++++++++++ test/ublas_interop/test7.cpp | 31 ++ test/ublas_interop/test7.hpp | 36 ++ test/ublas_interop/test71.cpp | 170 +++++++++ test/ublas_interop/test72.cpp | 165 ++++++++ test/ublas_interop/test73.cpp | 202 ++++++++++ 42 files changed, 4735 insertions(+), 133 deletions(-) create mode 100644 test/include_test/cpp_dec_float_include_test.cpp create mode 100644 test/include_test/cpp_int_include_test.cpp create mode 100644 test/include_test/gmp_include_test.cpp create mode 100644 test/include_test/mpfr_include_test.cpp create mode 100644 test/include_test/tommath_include_test.cpp create mode 100644 test/ublas_interop/common/init.hpp create mode 100644 test/ublas_interop/common/testhelper.hpp create mode 100644 test/ublas_interop/test1.cpp create mode 100644 test/ublas_interop/test1.hpp create mode 100644 test/ublas_interop/test11.cpp create mode 100644 test/ublas_interop/test12.cpp create mode 100644 test/ublas_interop/test13.cpp create mode 100644 test/ublas_interop/test2.cpp create mode 100644 test/ublas_interop/test2.hpp create mode 100644 test/ublas_interop/test21.cpp create mode 100644 test/ublas_interop/test22.cpp create mode 100644 test/ublas_interop/test23.cpp create mode 100644 test/ublas_interop/test3.cpp create mode 100644 test/ublas_interop/test3.hpp create mode 100644 test/ublas_interop/test31.cpp create mode 100644 test/ublas_interop/test32.cpp create mode 100644 test/ublas_interop/test33.cpp create mode 100644 test/ublas_interop/test4.cpp create mode 100644 test/ublas_interop/test4.hpp create mode 100644 test/ublas_interop/test42.cpp create mode 100644 test/ublas_interop/test43.cpp create mode 100644 test/ublas_interop/test5.cpp create mode 100644 test/ublas_interop/test5.hpp create mode 100644 test/ublas_interop/test52.cpp create mode 100644 test/ublas_interop/test53.cpp create mode 100644 test/ublas_interop/test6.cpp create mode 100644 test/ublas_interop/test6.hpp create mode 100644 test/ublas_interop/test62.cpp create mode 100644 test/ublas_interop/test63.cpp create mode 100644 test/ublas_interop/test7.cpp create mode 100644 test/ublas_interop/test7.hpp create mode 100644 test/ublas_interop/test71.cpp create mode 100644 test/ublas_interop/test72.cpp create mode 100644 test/ublas_interop/test73.cpp diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index a4ab00b7..f788940c 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -1541,138 +1541,6 @@ private: Backend m_backend; }; -/* -namespace detail -{ - -template -BOOST_FORCEINLINE int mp_number_compare(const mp_number& a, const mp_number& b) -{ - return a.compare(b); -} - -template -BOOST_FORCEINLINE int mp_number_compare(const mp_number& a, const mp_exp& b) -{ - return a.compare(mp_number(b)); -} - -template -inline int mp_number_compare(const mp_exp& a, const mp_number& b) -{ - return -b.compare(mp_number(a)); -} - -template -inline int mp_number_compare(const mp_number& a, const Val b) -{ - return a.compare(b); -} - -template -inline int mp_number_compare(const Val a, const mp_number& b) -{ - return -b.compare(a); -} - -template -inline int mp_number_compare(const mp_exp& a, const mp_exp& b) -{ - typedef typename mp_exp::result_type real1; - typedef typename mp_exp::result_type real2; - return real1(a).compare(real2(b)); -} - -template -inline typename enable_if, int>::type mp_number_compare(const mp_exp& a, const Val b) -{ - typedef typename mp_exp::result_type real; - real t(a); - return t.compare(b); -} - -template -inline typename enable_if, int>::type mp_number_compare(const Val a, const mp_exp& b) -{ - typedef typename mp_exp::result_type real; - return -real(b).compare(a); -} - -template -struct is_valid_comparison_imp -{ - typedef typename mpl::or_< - is_mp_number, - is_mp_number_exp - >::type is1; - typedef typename mpl::or_< - is_mp_number, - is_mp_number_exp - >::type is2; - typedef typename mpl::or_< - mpl::and_< - is1, - mpl::or_< - is2, - is_arithmetic - > - >, - mpl::and_< - is2, - mpl::or_< - is1, - is_arithmetic - > - > - >::type type; -}; - -template -struct is_valid_comparison : public boost::multiprecision::detail::is_valid_comparison_imp::type {}; - -} - -template -inline typename boost::enable_if, bool>::type - operator == (const Exp1& a, const Exp2& b) -{ - return 0 == detail::mp_number_compare(a, b); -} -template -inline typename boost::enable_if, bool>::type - operator != (const Exp1& a, const Exp2& b) -{ - return 0 != detail::mp_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator <= (const Exp1& a, const Exp2& b) -{ - return 0 >= detail::mp_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator < (const Exp1& a, const Exp2& b) -{ - return 0 > detail::mp_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator >= (const Exp1& a, const Exp2& b) -{ - return 0 <= detail::mp_number_compare(a, b); -} - -template -inline typename boost::enable_if, bool>::type - operator > (const Exp1& a, const Exp2& b) -{ - return 0 < detail::mp_number_compare(a, b); -} -*/ template inline std::ostream& operator << (std::ostream& os, const mp_number& r) { @@ -1793,6 +1661,22 @@ inline multiprecision::mp_number denominator(const ratio return a.denominator(); } +namespace numeric { namespace ublas { +// +// uBlas interoperability: +// +template +class sparse_vector_element; + +template +inline bool operator == (const sparse_vector_element& a, const ::boost::multiprecision::mp_number& b) +{ +typedef typename sparse_vector_element::const_reference ref_type; + return static_cast(a) == b; +} + +}} // namespaces + #ifdef BOOST_MSVC #pragma warning(pop) #endif diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 0c10a841..3646e1b3 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -225,7 +225,7 @@ void time_proc(const char* name, Real (*proc)(), unsigned threads = 1) int main() { using namespace boost::multiprecision; -#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) || defined(TEST_MPREAL) +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) || defined(TEST_MPREAL) || defined(TEST_MPF) mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); mp_set_memory_functions(&alloc_func, &realloc_func, &free_func); #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 3c47c6d2..a8879efd 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -731,6 +731,27 @@ run ../example/tommath_snips.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] ; run ../example/floating_point_examples.cpp : : : gcc:-std=c++0x ; +compile include_test/mpfr_include_test.cpp + : # requirements + [ check-target-builds ../config//has_mpfr : : no ] ; +compile include_test/gmp_include_test.cpp + : # requirements + [ check-target-builds ../config//has_gmp : : no ] ; +compile include_test/tommath_include_test.cpp + : # requirements + [ check-target-builds ../config//has_tommath : : no ] ; +compile include_test/cpp_int_include_test.cpp ; +compile include_test/cpp_dec_float_include_test.cpp ; + +run ublas_interop/test1.cpp ublas_interop/test11.cpp ublas_interop/test12.cpp ublas_interop/test13.cpp ; +run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ublas_interop/test23.cpp ; +#run ublas_interop/test3.cpp ublas_interop/test31.cpp ublas_interop/test32.cpp ublas_interop/test33.cpp ; +run ublas_interop/test4.cpp ublas_interop/test42.cpp ublas_interop/test43.cpp ; +run ublas_interop/test5.cpp ublas_interop/test52.cpp ublas_interop/test53.cpp ; +run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp ; +run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp ; + + if $(enable-specfun) { @@ -771,6 +792,7 @@ if $(enable-specfun) } } + if ! $(disable-concepts) { diff --git a/test/include_test/cpp_dec_float_include_test.cpp b/test/include_test/cpp_dec_float_include_test.cpp new file mode 100644 index 00000000..bdf09e83 --- /dev/null +++ b/test/include_test/cpp_dec_float_include_test.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include + +using namespace boost::multiprecision; + +cpp_dec_float<50> a; + + diff --git a/test/include_test/cpp_int_include_test.cpp b/test/include_test/cpp_int_include_test.cpp new file mode 100644 index 00000000..f193178c --- /dev/null +++ b/test/include_test/cpp_int_include_test.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include + +using namespace boost::multiprecision; + +mp_number > a; +mp_number, false> b; +mp_number, false> c; +mp_number, false> d; +mp_number, false> e; + + diff --git a/test/include_test/gmp_include_test.cpp b/test/include_test/gmp_include_test.cpp new file mode 100644 index 00000000..4b07266f --- /dev/null +++ b/test/include_test/gmp_include_test.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include + +using namespace boost::multiprecision; + +mpf_float a; +mpz_int b; +mpq_rational c; + + diff --git a/test/include_test/mpfr_include_test.cpp b/test/include_test/mpfr_include_test.cpp new file mode 100644 index 00000000..f84cbb95 --- /dev/null +++ b/test/include_test/mpfr_include_test.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include + +using namespace boost::multiprecision; + +mpfr_float a; + + diff --git a/test/include_test/tommath_include_test.cpp b/test/include_test/tommath_include_test.cpp new file mode 100644 index 00000000..bc000fef --- /dev/null +++ b/test/include_test/tommath_include_test.cpp @@ -0,0 +1,12 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include + +using namespace boost::multiprecision; + +tom_int a; + + diff --git a/test/ublas_interop/common/init.hpp b/test/ublas_interop/common/init.hpp new file mode 100644 index 00000000..a9691b4e --- /dev/null +++ b/test/ublas_interop/common/init.hpp @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2004 Michael Stevens + * Use, modification and distribution are subject to the + * Boost Software License, Version 1.0. (See accompanying file + * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + */ + +/* + * Default construct test when possible + */ + +template +struct default_construct +{ + static void test() {} +}; +template +struct default_construct > +{ + static void test () + { + VC default_constuct; + initialize_vector (default_constuct); + std::cout << "default construct = " << default_constuct << std::endl; + } +}; +template +struct default_construct > +{ + static void test () + { + MC default_constuct; + initialize_vector (default_constuct); + std::cout << "default construct = " << default_constuct << std::endl; + } +}; + +/* + * Initialise test values in vector/matrix + */ + +template +void initialize_vector (V &v) { + typename V::size_type size = v.size (); + for (typename V::size_type i = 0; i < size; ++ i) + v [i] = typename V::value_type ( i + 1.f ); +} + +template +void initialize_matrix_impl (M &m, ublas::packed_proxy_tag) { + typename M::size_type size1 = m.size1 (); +#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION + for (typename M::iterator1 i = m.begin1(); i != m.end1(); ++ i) + for (typename M::iterator2 j = i.begin(); j != i.end(); ++ j) + *j = typename M::value_type ( i.index1() * size1 + j.index2() + 1.f ); +#else + for (typename M::iterator1 i = m.begin1(); i != m.end1(); ++ i) + for (typename M::iterator2 j = ublas::begin (i, ublas::iterator1_tag ()); j != ublas::end (i, ublas::iterator1_tag ()); ++ j) + *j = typename M::value_type ( i.index1() * size1 + j.index2() + 1.f ); +#endif +} + +template +void initialize_matrix_impl (M &m, ublas::sparse_proxy_tag) { + typename M::size_type size1 = m.size1 (); + typename M::size_type size2 = m.size2 (); + for (typename M::size_type i = 0; i < size1; ++ i) + for (typename M::size_type j = 0; j < size2; ++ j) + m (i, j) = typename M::value_type (i * size1 + j + 1.f); +} + +template +void initialize_matrix (M &m) { + initialize_matrix_impl (m, typename M::storage_category()); +} + +template +void initialize_matrix (M &m, ublas::lower_tag) { + typename M::size_type size1 = m.size1 (); + typename M::size_type size2 = m.size2 (); + for (typename M::size_type i = 0; i < size1; ++ i) { + typename M::size_type j = 0; + for (; j <= i; ++ j) + m (i, j) = i * size1 + j + 1.f; + for (; j < size2; ++ j) + m (i, j) = 0.f; + } +} +template +void initialize_matrix (M &m, ublas::upper_tag) { + typename M::size_type size1 = m.size1 (); + typename M::size_type size2 = m.size2 (); + for (typename M::size_type i = 0; i < size1; ++ i) { + typename M::size_type j = 0; + for (; j < i; ++ j) + m (i, j) = 0.f; + for (; j < size2; ++ j) + m (i, j) = i * size1 + j + 1.f; + } +} diff --git a/test/ublas_interop/common/testhelper.hpp b/test/ublas_interop/common/testhelper.hpp new file mode 100644 index 00000000..4fbf9c4d --- /dev/null +++ b/test/ublas_interop/common/testhelper.hpp @@ -0,0 +1,74 @@ +// Copyright 2008 Gunter Winkler +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + + +#ifndef _HPP_TESTHELPER_ +#define _HPP_TESTHELPER_ + +#include + +static unsigned _success_counter = 0; +static unsigned _fail_counter = 0; + +static inline +void assertTrue(const char* message, bool condition) { +#ifndef NOMESSAGES + std::cout << message; +#endif + if ( condition ) { + ++ _success_counter; + std::cout << "1\n"; // success + } else { + ++ _fail_counter; + std::cout << "0\n"; // failed + } +} + +template < class T > +void assertEquals(const char* message, T expected, T actual) { +#ifndef NOMESSAGES + std::cout << message; +#endif + if ( expected == actual ) { + ++ _success_counter; + std::cout << "1\n"; // success + } else { + #ifndef NOMESSAGES + std::cout << " expected " << expected << " actual " << actual << " "; + #endif + ++ _fail_counter; + std::cout << "0\n"; // failed + } +} + +static +std::pair getResults() { + return std::make_pair(_success_counter, _fail_counter); +} + +template < class M1, class M2 > +bool compare( const boost::numeric::ublas::matrix_expression & m1, + const boost::numeric::ublas::matrix_expression & m2 ) { + size_t size1 = (std::min)(m1().size1(), m2().size1()); + size_t size2 = (std::min)(m1().size2(), m2().size2()); + for (size_t i=0; i < size1; ++i) { + for (size_t j=0; j < size2; ++j) { + if ( m1()(i,j) != m2()(i,j) ) return false; + } + } + return true; +} + +template < class M1, class M2 > +bool compare( const boost::numeric::ublas::vector_expression & m1, + const boost::numeric::ublas::vector_expression & m2 ) { + size_t size = (std::min)(m1().size(), m2().size()); + for (size_t i=0; i < size; ++i) { + if ( m1()(i) != m2()(i) ) return false; + } + return true; +} + +#endif diff --git a/test/ublas_interop/test1.cpp b/test/ublas_interop/test1.cpp new file mode 100644 index 00000000..53de7901 --- /dev/null +++ b/test/ublas_interop/test1.cpp @@ -0,0 +1,20 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test1.hpp" + +int main () { + test_vector (); + test_matrix_vector (); + test_matrix (); + return 0; +} diff --git a/test/ublas_interop/test1.hpp b/test/ublas_interop/test1.hpp new file mode 100644 index 00000000..f6627dce --- /dev/null +++ b/test/ublas_interop/test1.hpp @@ -0,0 +1,45 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#ifndef TEST1_H +#define TEST1_H + +#include + +#ifdef _MSC_VER +# pragma warning(disable:4800 4996) +#endif + +#include + +typedef boost::multiprecision::mp_number, false> mp_test_type; +//typedef double mp_test_type; + +#define USE_RANGE +#define USE_SLICE + + +#include +#include +#include +#include +#include + +namespace ublas = boost::numeric::ublas; + +#include "common/init.hpp" + +void test_vector (); +void test_matrix_vector (); +void test_matrix (); + +#endif diff --git a/test/ublas_interop/test11.cpp b/test/ublas_interop/test11.cpp new file mode 100644 index 00000000..70e77611 --- /dev/null +++ b/test/ublas_interop/test11.cpp @@ -0,0 +1,182 @@ +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. + +#include "test1.hpp" + +// Test vector expression templates +template +struct test_my_vector { + typedef typename V::value_type value_type; + typedef typename V::size_type size_type; + typedef typename ublas::type_traits::real_type real_type; + + template + void test_container_with (VP &v1) const { + // Container type tests in addition to expression types + // Insert and erase + v1.insert_element (0, 55); + v1.erase_element (1); + v1.clear (); + } + + template + void test_expression_with (VP &v1, VP &v2, VP &v3) const { + // Expression type tests + value_type t; + size_type i; + real_type n; + + // Default Construct + default_construct::test (); + + // Copy and swap + initialize_vector (v1); + initialize_vector (v2); + v1 = v2; + std::cout << "v1 = v2 = " << v1 << std::endl; + v1.assign_temporary (v2); + std::cout << "v1.assign_temporary (v2) = " << v1 << std::endl; + v1.swap (v2); + std::cout << "v1.swap (v2) = " << v1 << " " << v2 << std::endl; + + // Zero assignment + v1 = ublas::zero_vector<> (v1.size ()); + std::cout << "v1.zero_vector = " << v1 << std::endl; + v1 = v2; + +#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + // Project range and slice + initialize_vector (v1); + initialize_vector (v2); + project (v1, ublas::range(0,1)) = project (v2, ublas::range(0,1)); + project (v1, ublas::range(0,1)) = project (v2, ublas::slice(0,1,1)); + project (v1, ublas::slice(2,-1,2)) = project (v2, ublas::slice(0,1,2)); + project (v1, ublas::slice(2,-1,2)) = project (v2, ublas::range(0,2)); + std::cout << "v1 = range/slice " << v1 << std::endl; +#endif + + // Unary vector operations resulting in a vector + initialize_vector (v1); + v2 = - v1; + std::cout << "- v1 = " << v2 << std::endl; + v2 = ublas::conj (v1); + std::cout << "conj (v1) = " << v2 << std::endl; + + // Binary vector operations resulting in a vector + initialize_vector (v1); + initialize_vector (v2); + v3 = v1 + v2; + std::cout << "v1 + v2 = " << v3 << std::endl; + v3 = v1 - v2; + std::cout << "v1 - v2 = " << v3 << std::endl; + v3 = ublas::element_prod (v1, v2); + std::cout << "element_prod (v1, v2) = " << v3 << std::endl; + + // Scaling a vector + t = N; + initialize_vector (v1); + v2 = value_type (1.) * v1; + std::cout << "1. * v1 = " << v2 << std::endl; + v2 = t * v1; + std::cout << "N * v1 = " << v2 << std::endl; + initialize_vector (v1); + v2 = v1 * value_type (1.); + std::cout << "v1 * 1. = " << v2 << std::endl; + v2 = v1 * t; + std::cout << "v1 * value_type(N) = " << v2 << std::endl; + // test interop with integer + v2 = v1 * N; + + std::cout << "v1 * N = " << v2 << std::endl; + + // Some assignments + initialize_vector (v1); + initialize_vector (v2); + v2 += v1; + std::cout << "v2 += v1 = " << v2 << std::endl; + v2 -= v1; + std::cout << "v2 -= v1 = " << v2 << std::endl; + v2 = v2 + v1; + std::cout << "v2 = v2 + v1 = " << v2 << std::endl; + v2 = v2 - v1; + std::cout << "v2 = v2 - v1 = " << v2 << std::endl; + v1 *= value_type (1.); + std::cout << "v1 *= 1. = " << v1 << std::endl; + v1 *= t; + std::cout << "v1 *= value_type(N) = " << v1 << std::endl; + // test interop with integer + v1 *= N; + std::cout << "v1 *= N = " << v1 << std::endl; + + // Unary vector operations resulting in a scalar + initialize_vector (v1); + t = ublas::sum (v1); + std::cout << "sum (v1) = " << t << std::endl; + n = ublas::norm_1 (v1); + std::cout << "norm_1 (v1) = " << n << std::endl; + n = ublas::norm_2 (v1); + std::cout << "norm_2 (v1) = " << n << std::endl; + n = ublas::norm_inf (v1); + std::cout << "norm_inf (v1) = " << n << std::endl; + + i = ublas::index_norm_inf (v1); + std::cout << "index_norm_inf (v1) = " << i << std::endl; + + // Binary vector operations resulting in a scalar + initialize_vector (v1); + initialize_vector (v2); + t = ublas::inner_prod (v1, v2); + std::cout << "inner_prod (v1, v2) = " << t << std::endl; + + // Scalar and Binary vector expression resulting in a vector + initialize_vector (v1); + initialize_vector (v2); + v1 = v1 * ublas::inner_prod (v1, v2); + std::cout << "v1 * inner_prod (v1, v2) = " << v1 << std::endl; + } + + void operator () () const { + V v1 (N), v2 (N), v3 (N); + test_expression_with (v1, v2, v3); + test_container_with (v1); + +#ifdef USE_RANGE + ublas::vector_range vr1 (v1, ublas::range (0, N)), + vr2 (v2, ublas::range (0, N)), + vr3 (v3, ublas::range (0, N)); + test_expression_with (vr1, vr2, vr3); +#endif + +#ifdef USE_SLICE + ublas::vector_slice vs1 (v1, ublas::slice (0, 1, N)), + vs2 (v2, ublas::slice (0, 1, N)), + vs3 (v3, ublas::slice (0, 1, N)); + test_expression_with (vs1, vs2, vs3); +#endif + } +}; + +// Test vector +void test_vector () { + std::cout << "test_vector" << std::endl; + + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_vector >, 3 > () (); + + + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_vector >, 3 > () (); + + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_vector >, 3 > () (); + + std::cout << "mp_test_type, bounded" << std::endl; + test_my_vector, 3> () (); +} diff --git a/test/ublas_interop/test12.cpp b/test/ublas_interop/test12.cpp new file mode 100644 index 00000000..fac3634f --- /dev/null +++ b/test/ublas_interop/test12.cpp @@ -0,0 +1,102 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test1.hpp" + +// Test matrix & vector expression templates +template +struct test_my_matrix_vector { + typedef typename V::value_type value_type; + + template + void test_with (VP &v1, VP &v2, MP &m1) const { + { + // Rows and columns + initialize_matrix (m1); + for (int i = 0; i < N; ++ i) { + v1 = ublas::row (m1, i); + std::cout << "row (m, " << i << ") = " << v1 << std::endl; + v1 = ublas::column (m1, i); + std::cout << "column (m, " << i << ") = " << v1 << std::endl; + } + + // Outer product + initialize_vector (v1); + initialize_vector (v2); + m1 = ublas::outer_prod (v1, v2); + std::cout << "outer_prod (v1, v2) = " << m1 << std::endl; + + // Matrix vector product + initialize_matrix (m1); + initialize_vector (v1); + v2 = ublas::prod (m1, v1); + std::cout << "prod (m1, v1) = " << v2 << std::endl; + v2 = ublas::prod (v1, m1); + std::cout << "prod (v1, m1) = " << v2 << std::endl; + } + } + void operator () () const { + { + V v1 (N), v2 (N); + M m1 (N, N); + test_with (v1, v2, m1); + + ublas::matrix_row mr1 (m1, 0), mr2 (m1, 1); + test_with (mr1, mr2, m1); + + ublas::matrix_column mc1 (m1, 0), mc2 (m1, 1); + test_with (mc1, mc2, m1); + +#ifdef USE_RANGE + ublas::matrix_vector_range mvr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (m1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, m1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice mvs1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, m1); +#endif + } + } +}; + +// Test matrix & vector +void test_matrix_vector () { + std::cout << "test_matrix_vector" << std::endl; + + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::matrix >, 3> () (); + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::matrix >, 3> () (); + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::matrix >, 3> () (); + std::cout << "mp_test_type, bounded" << std::endl; + test_my_matrix_vector, + ublas::bounded_matrix, 3> () (); + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::vector_of_vector, 3 + 1> >, 3> () (); + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::vector_of_vector > >, 3> () (); + std::cout << "mp_test_type, std::vector" << std::endl; + /* + // This fails with an internal std lib assersion, even when mp_test_type is double, + // looks like a bug in the uBlas test code... + test_my_matrix_vector >, + ublas::vector_of_vector > >, 3> () ();*/ +} diff --git a/test/ublas_interop/test13.cpp b/test/ublas_interop/test13.cpp new file mode 100644 index 00000000..2e8432a5 --- /dev/null +++ b/test/ublas_interop/test13.cpp @@ -0,0 +1,167 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test1.hpp" + +// Test matrix expression templates +template +struct test_my_matrix { + typedef typename M::value_type value_type; + + template + void test_container_with (VP &v1) const { + // Container type tests in addition to expression types + // Insert and erase + v1.insert_element (0,0, 55); + v1.erase_element (1,1); + v1.clear (); + } + + template + void test_expression_with (MP &m1, MP &m2, MP &m3) const { + value_type t; + + // Default Construct + default_construct::test (); + + // Copy and swap + initialize_matrix (m1); + initialize_matrix (m2); + m1 = m2; + std::cout << "m1 = m2 = " << m1 << std::endl; + m1.assign_temporary (m2); + std::cout << "m1.assign_temporary (m2) = " << m1 << std::endl; + m1.swap (m2); + std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl; + + // Zero assignment + m1 = ublas::zero_matrix<> (m1.size1 (), m1.size2 ()); + std::cout << "m1.zero_matrix = " << m1 << std::endl; + m1 = m2; + +#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + // Project range and slice + initialize_matrix (m1); + initialize_matrix (m2); + project (m1, ublas::range(0,1),ublas::range(0,1)) = project (m2, ublas::range(0,1),ublas::range(0,1)); + project (m1, ublas::range(0,1),ublas::range(0,1)) = project (m2, ublas::slice(0,1,1),ublas::slice(0,1,1)); + project (m1, ublas::slice(2,-1,2),ublas::slice(2,-1,2)) = project (m2, ublas::slice(0,1,2),ublas::slice(0,1,2)); + project (m1, ublas::slice(2,-1,2),ublas::slice(2,-1,2)) = project (m2, ublas::range(0,2),ublas::range(0,2)); + std::cout << "m1 = range/slice " << m1 << std::endl; +#endif + + // Unary matrix operations resulting in a matrix + initialize_matrix (m1); + m2 = - m1; + std::cout << "- m1 = " << m2 << std::endl; + m2 = ublas::conj (m1); + std::cout << "conj (m1) = " << m2 << std::endl; + + // Binary matrix operations resulting in a matrix + initialize_matrix (m1); + initialize_matrix (m2); + m3 = m1 + m2; + std::cout << "m1 + m2 = " << m3 << std::endl; + m3 = m1 - m2; + std::cout << "m1 - m2 = " << m3 << std::endl; + m3 = ublas::element_prod (m1, m2); + std::cout << "element_prod (m1, m2) = " << m3 << std::endl; + + // Scaling a matrix + t = N; + initialize_matrix (m1); + m2 = value_type (1.) * m1; + std::cout << "1. * m1 = " << m2 << std::endl; + m2 = t * m1; + std::cout << "N * m1 = " << m2 << std::endl; + initialize_matrix (m1); + m2 = m1 * value_type (1.); + std::cout << "m1 * 1. = " << m2 << std::endl; + m2 = m1 * t; + std::cout << "m1 * N = " << m2 << std::endl; + + // Some assignments + initialize_matrix (m1); + initialize_matrix (m2); + m2 += m1; + std::cout << "m2 += m1 = " << m2 << std::endl; + m2 -= m1; + std::cout << "m2 -= m1 = " << m2 << std::endl; + m2 = m2 + m1; + std::cout << "m2 = m2 + m1 = " << m2 << std::endl; + m2 = m2 - m1; + std::cout << "m2 = m2 - m1 = " << m2 << std::endl; + m1 *= value_type (1.); + std::cout << "m1 *= 1. = " << m1 << std::endl; + m1 *= t; + std::cout << "m1 *= N = " << m1 << std::endl; + + // Transpose + initialize_matrix (m1); + m2 = ublas::trans (m1); + std::cout << "trans (m1) = " << m2 << std::endl; + + // Hermitean + initialize_matrix (m1); + m2 = ublas::herm (m1); + std::cout << "herm (m1) = " << m2 << std::endl; + + // Matrix multiplication + initialize_matrix (m1); + initialize_matrix (m2); + m3 = ublas::prod (m1, m2); + std::cout << "prod (m1, m2) = " << m3 << std::endl; + } + + void operator () () const { + M m1 (N, N), m2 (N, N), m3 (N, N); + test_expression_with (m1, m2, m3); + test_container_with (m1); + +#ifdef USE_RANGE + ublas::matrix_range mr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mr2 (m2, ublas::range (0, N), ublas::range (0, N)), + mr3 (m3, ublas::range (0, N), ublas::range (0, N)); + test_expression_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice ms1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (m2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (m3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_expression_with (ms1, ms2, ms3); +#endif + } +}; + +// Test matrix +void test_matrix () { + std::cout << "test_matrix" << std::endl; + + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix >, 3> () (); + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix >, 3> () (); + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix >, 3> () (); + std::cout << "mp_test_type, bounded" << std::endl; + test_my_matrix, 3> () (); + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix, 3 + 1> >, 3> () (); + /* + // This fails with an internal std lib assersion, even when mp_test_type is double, + // looks like a bug in the uBlas test code... + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix > >, 3> () (); + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix > >, 3> () ();*/ +} diff --git a/test/ublas_interop/test2.cpp b/test/ublas_interop/test2.cpp new file mode 100644 index 00000000..0550dc80 --- /dev/null +++ b/test/ublas_interop/test2.cpp @@ -0,0 +1,87 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test2.hpp" + +int main () { +#ifdef USE_FLOAT + std::cout << "mp_test_type" << std::endl; + test_blas_1, 3> ().test (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double" << std::endl; + test_blas_1, 3> ().test (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex" << std::endl; + test_blas_1 >, 3> ().test (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex" << std::endl; + test_blas_1 >, 3> ().test (); +#endif +#endif + + std::cout << "test_blas_2" << std::endl; + +#ifdef USE_FLOAT + std::cout << "mp_test_type" << std::endl; + test_blas_2, ublas::matrix, 3> ().test (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double" << std::endl; + test_blas_2, ublas::matrix, 3> ().test (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex" << std::endl; + test_blas_2 >, ublas::matrix >, 3> ().test (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex" << std::endl; + test_blas_2 >, ublas::matrix >, 3> ().test (); +#endif +#endif + + std::cout << "test_blas_3" << std::endl; + +#ifdef USE_FLOAT + std::cout << "mp_test_type" << std::endl; + test_blas_3, 3> ().test (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double" << std::endl; + test_blas_3, 3> ().test (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex" << std::endl; + test_blas_3 >, 3> ().test (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex" << std::endl; + test_blas_3 >, 3> ().test (); +#endif +#endif + + return 0; +} diff --git a/test/ublas_interop/test2.hpp b/test/ublas_interop/test2.hpp new file mode 100644 index 00000000..0009b832 --- /dev/null +++ b/test/ublas_interop/test2.hpp @@ -0,0 +1,69 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#ifndef TEST2_H +#define TEST2_H + +#ifdef _MSC_VER +# pragma warning(disable:4800 4996) +#endif + +#include + +typedef boost::multiprecision::mp_number, false> mp_test_type; +//typedef double mp_test_type; + +#define USE_RANGE +#define USE_SLICE +#define USE_FLOAT +#define USE_RANGE +#define USE_SLICE +#define USE_UNBOUNDED_ARRAY +#define USE_STD_VECTOR +#define USE_BOUNDED_VECTOR USE_MATRIX + +#include + +#include +#include +#include +#include +#include + +namespace ublas = boost::numeric::ublas; + +#include "common/init.hpp" + +template +struct test_blas_1 { + typedef typename V::value_type value_type; + typedef typename ublas::type_traits::real_type real_type; + + void test (); +}; + +template +struct test_blas_2 { + typedef typename V::value_type value_type; + + void test (); +}; + +template +struct test_blas_3 { + typedef typename M::value_type value_type; + + void test (); +}; + + +#endif diff --git a/test/ublas_interop/test21.cpp b/test/ublas_interop/test21.cpp new file mode 100644 index 00000000..252d1f1c --- /dev/null +++ b/test/ublas_interop/test21.cpp @@ -0,0 +1,95 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test2.hpp" + +template +void test_blas_1::test () { + { + value_type t; + real_type n; + V v1 (N), v2 (N); + + // _asum + initialize_vector (v1); + n = ublas::blas_1::asum (v1); + std::cout << "asum (v1) = " << n << std::endl; + + // _amax + initialize_vector (v1); + n = ublas::blas_1::amax (v1); + std::cout << "amax (v1) = " << n << std::endl; + + // _nrm2 + initialize_vector (v1); + n = ublas::blas_1::nrm2 (v1); + std::cout << "nrm2 (v1) = " << n << std::endl; + + // _dot + // _dotu + // _dotc + initialize_vector (v1); + initialize_vector (v2); + t = ublas::blas_1::dot (v1, v2); + std::cout << "dot (v1, v2) = " << t << std::endl; + t = ublas::blas_1::dot (ublas::conj (v1), v2); + std::cout << "dot (conj (v1), v2) = " << t << std::endl; + + // _copy + initialize_vector (v2); + ublas::blas_1::copy (v1, v2); + std::cout << "copy (v1, v2) = " << v1 << std::endl; + + // _swap + initialize_vector (v1); + initialize_vector (v2); + ublas::blas_1::swap (v1, v2); + std::cout << "swap (v1, v2) = " << v1 << " " << v2 << std::endl; + + // _scal + // csscal + // zdscal + initialize_vector (v1); + ublas::blas_1::scal (v1, value_type (1)); + std::cout << "scal (v1, 1) = " << v1 << std::endl; + + // _axpy + initialize_vector (v1); + initialize_vector (v2); + ublas::blas_1::axpy (v1, value_type (1), v2); + std::cout << "axpy (v1, 1, v2) = " << v1 << std::endl; + + // _rot + initialize_vector (v1); + initialize_vector (v2); + ublas::blas_1::rot (value_type (1), v1, value_type (1), v2); + std::cout << "rot (1, v1, 1, v2) = " << v1 << " " << v2 << std::endl; + } +} + +#ifdef USE_FLOAT +template struct test_blas_1, 3>; +#endif + +#ifdef USE_DOUBLE +template struct test_blas_1, 3>; +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT +template struct test_blas_1 >, 3>; +#endif + +#ifdef USE_DOUBLE +template struct test_blas_1 >, 3>; +#endif +#endif diff --git a/test/ublas_interop/test22.cpp b/test/ublas_interop/test22.cpp new file mode 100644 index 00000000..297bb06a --- /dev/null +++ b/test/ublas_interop/test22.cpp @@ -0,0 +1,147 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test2.hpp" + +template +void test_blas_2::test () { + { + V v1 (N), v2 (N); + M m (N, N); + + // _t_mv + initialize_vector (v1); + initialize_matrix (m); + ublas::blas_2::tmv (v1, m); + std::cout << "tmv (v1, m) = " << v1 << std::endl; + initialize_vector (v1); + initialize_matrix (m); + ublas::blas_2::tmv (v1, ublas::trans (m)); + std::cout << "tmv (v1, trans (m)) = " << v1 << std::endl; +#ifdef USE_STD_COMPLEX + initialize_vector (v1); + initialize_matrix (m); + ublas::blas_2::tmv (v1, ublas::herm (m)); + std::cout << "tmv (v1, herm (m)) = " << v1 << std::endl; +#endif + + // _t_sv + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m, ublas::lower_tag ()); + ublas::blas_2::tsv (v1, m, ublas::lower_tag ()); + std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod (m, v1) - v2 << std::endl; + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m, ublas::upper_tag ()); + ublas::blas_2::tsv (v1, ublas::trans (m), ublas::lower_tag ()); + std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod (ublas::trans (m), v1) - v2 << std::endl; +#ifdef USE_STD_COMPLEX + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m, ublas::upper_tag ()); + ublas::blas_2::tsv (v1, ublas::herm (m), ublas::lower_tag ()); + std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod (ublas::herm (m), v1) - v2 << std::endl; +#endif + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m, ublas::upper_tag ()); + ublas::blas_2::tsv (v1, m, ublas::upper_tag ()); + std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod (m, v1) - v2 << std::endl; + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m, ublas::lower_tag ()); + ublas::blas_2::tsv (v1, ublas::trans (m), ublas::upper_tag ()); + std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod (ublas::trans (m), v1) - v2 << std::endl; +#ifdef USE_STD_COMPLEX + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m, ublas::lower_tag ()); + ublas::blas_2::tsv (v1, ublas::herm (m), ublas::upper_tag ()); + std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod (ublas::herm (m), v1) - v2 << std::endl; +#endif + + // _g_mv + // _s_mv + // _h_mv + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m); + ublas::blas_2::gmv (v1, value_type (1), value_type (1), m, v2); + std::cout << "gmv (v1, 1, 1, m, v2) = " << v1 << std::endl; + ublas::blas_2::gmv (v1, value_type (1), value_type (1), ublas::trans (m), v2); + std::cout << "gmv (v1, 1, 1, trans (m), v2) = " << v1 << std::endl; +#ifdef USE_STD_COMPLEX + ublas::blas_2::gmv (v1, value_type (1), value_type (1), ublas::herm (m), v2); + std::cout << "gmv (v1, 1, 1, herm (m), v2) = " << v1 << std::endl; +#endif + + // _g_r + // _g_ru + // _g_rc + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m); + ublas::blas_2::gr (m, value_type (1), v1, v2); + std::cout << "gr (m, 1, v1, v2) = " << m << std::endl; + ublas::blas_2::gr (m, value_type (1), v1, ublas::conj (v2)); + std::cout << "gr (m, 1, v1, conj (v2)) = " << m << std::endl; + + // _s_r + initialize_vector (v1); + initialize_matrix (m); + ublas::blas_2::sr (m, value_type (1), v1); + std::cout << "sr (m, 1, v1) = " << m << std::endl; + +#ifdef USE_STD_COMPLEX + // _h_r + initialize_vector (v1); + initialize_matrix (m); + ublas::blas_2::hr (m, value_type (1), v1); + std::cout << "hr (m, 1, v1) = " << m << std::endl; +#endif + + // _s_r2 + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m); + ublas::blas_2::sr2 (m, value_type (1), v1, v2); + std::cout << "sr2 (m, 1, v1, v2) = " << m << std::endl; + +#ifdef USE_STD_COMPLEX + // _h_r2 + initialize_vector (v1); + initialize_vector (v2); + initialize_matrix (m); + ublas::blas_2::hr2 (m, value_type (1), v1, v2); + std::cout << "hr2 (m, 1, v1, v2) = " << m << std::endl; +#endif + } +} + +#ifdef USE_FLOAT +template struct test_blas_2, ublas::matrix, 3>; +#endif + +#ifdef USE_DOUBLE +template struct test_blas_2, ublas::matrix, 3>; +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT +template struct test_blas_2 >, ublas::matrix >, 3>; +#endif + +#ifdef USE_DOUBLE +template struct test_blas_2 >, ublas::matrix >, 3>; +#endif +#endif diff --git a/test/ublas_interop/test23.cpp b/test/ublas_interop/test23.cpp new file mode 100644 index 00000000..d56771c2 --- /dev/null +++ b/test/ublas_interop/test23.cpp @@ -0,0 +1,208 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test2.hpp" + +template +void test_blas_3::test () { + { + M m1 (N, N), m2 (N, N), m3 (N, N); + + // _t_mm + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), m2, m1); + std::cout << "tmm (m1, 1, m2, m1) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), m2, ublas::trans (m1)); + std::cout << "tmm (m1, 1, m2, trans (m1)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), ublas::trans (m2), m1); + std::cout << "tmm (m1, 1, trans (m2), m1) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), ublas::trans (m2), ublas::trans (m1)); + std::cout << "tmm (m1, 1, trans (m2), trans (m1)) = " << m1 << std::endl; +#ifdef USE_STD_COMPLEX + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), m2, ublas::herm (m1)); + std::cout << "tmm (m1, 1, m2, herm (m1)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), ublas::herm (m2), m1); + std::cout << "tmm (m1, 1, herm (m2), m1) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), ublas::trans (m2), ublas::herm (m1)); + std::cout << "tmm (m1, 1, trans (m2), herm (m1)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), ublas::herm (m2), ublas::trans (m1)); + std::cout << "tmm (m1, 1, herm (m2), trans (m1)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::tmm (m1, value_type (1), ublas::herm (m2), ublas::herm (m1)); + std::cout << "tmm (m1, 1, herm (m2), herm (m1)) = " << m1 << std::endl; +#endif + + // _t_sm + initialize_matrix (m1); + initialize_matrix (m2, ublas::lower_tag ()); + initialize_matrix (m3); + ublas::blas_3::tsm (m1, value_type (1), m2, ublas::lower_tag ()); + std::cout << "tsm (m1, 1, m2) = " << m1 << " " << ublas::prod (m2, m1) - value_type (1) * m3 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2, ublas::upper_tag ()); + ublas::blas_3::tsm (m1, value_type (1), ublas::trans (m2), ublas::lower_tag ()); + std::cout << "tsm (m1, 1, trans (m2)) = " << m1 << " " << ublas::prod (ublas::trans (m2), m1) - value_type (1) * m3 << std::endl; +#ifdef USE_STD_COMPLEX + initialize_matrix (m1); + initialize_matrix (m2, ublas::upper_tag ()); + ublas::blas_3::tsm (m1, value_type (1), ublas::herm (m2), ublas::lower_tag ()); + std::cout << "tsm (m1, 1, herm (m2)) = " << m1 << " " << ublas::prod (ublas::herm (m2), m1) - value_type (1) * m3 << std::endl; +#endif + initialize_matrix (m1); + initialize_matrix (m2, ublas::upper_tag ()); + ublas::blas_3::tsm (m1, value_type (1), m2, ublas::upper_tag ()); + std::cout << "tsm (m1, 1, m2) = " << m1 << " " << ublas::prod (m2, m1) - value_type (1) * m3 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2, ublas::lower_tag ()); + ublas::blas_3::tsm (m1, value_type (1), ublas::trans (m2), ublas::upper_tag ()); + std::cout << "tsm (m1, 1, trans (m2)) = " << m1 << " " << ublas::prod (ublas::trans (m2), m1) - value_type (1) * m3 << std::endl; +#ifdef USE_STD_COMPLEX + initialize_matrix (m1); + initialize_matrix (m2, ublas::lower_tag ()); + ublas::blas_3::tsm (m1, value_type (1), ublas::herm (m2), ublas::upper_tag ()); + std::cout << "tsm (m1, 1, herm (m2)) = " << m1 << " " << ublas::prod (ublas::herm (m2), m1) - value_type (1) * m3 << std::endl; +#endif + + // _g_mm + // _s_mm + // _h_mm + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), m2, m3); + std::cout << "gmm (m1, 1, 1, m2, m3) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), ublas::trans (m2), m3); + std::cout << "gmm (m1, 1, 1, trans (m2), m3) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), m2, ublas::trans (m3)); + std::cout << "gmm (m1, 1, 1, m2, trans (m3)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), ublas::trans (m2), ublas::trans (m3)); + std::cout << "gmm (m1, 1, 1, trans (m2), trans (m3)) = " << m1 << std::endl; +#ifdef USE_STD_COMPLEX + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), ublas::herm (m2), m3); + std::cout << "gmm (m1, 1, 1, herm (m2), m3) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), m2, ublas::herm (m3)); + std::cout << "gmm (m1, 1, 1, m2, herm (m3)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), ublas::herm (m2), ublas::trans (m3)); + std::cout << "gmm (m1, 1, 1, herm (m2), trans (m3)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), ublas::trans (m2), ublas::herm (m3)); + std::cout << "gmm (m1, 1, 1, trans (m2), herm (m3)) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::gmm (m1, value_type (1), value_type (1), ublas::herm (m2), ublas::herm (m3)); + std::cout << "gmm (m1, 1, 1, herm (m2), herm (m3)) = " << m1 << std::endl; +#endif + + // s_rk + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::srk (m1, value_type (1), value_type (1), m2); + std::cout << "srk (m1, 1, 1, m2) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::srk (m1, value_type (1), value_type (1), ublas::trans (m2)); + std::cout << "srk (m1, 1, 1, trans (m2)) = " << m1 << std::endl; + +#ifdef USE_STD_COMPLEX + // h_rk + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::hrk (m1, value_type (1), value_type (1), m2); + std::cout << "hrk (m1, 1, 1, m2) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + ublas::blas_3::hrk (m1, value_type (1), value_type (1), ublas::herm (m2)); + std::cout << "hrk (m1, 1, 1, herm (m2)) = " << m1 << std::endl; +#endif + + // s_r2k + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::sr2k (m1, value_type (1), value_type (1), m2, m3); + std::cout << "sr2k (m1, 1, 1, m2, m3) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::sr2k (m1, value_type (1), value_type (1), ublas::trans (m2), ublas::trans (m3)); + std::cout << "sr2k (m1, 1, 1, trans (m2), trans (m3)) = " << m1 << std::endl; + +#ifdef USE_STD_COMPLEX + // h_r2k + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::hr2k (m1, value_type (1), value_type (1), m2, m3); + std::cout << "hr2k (m1, 1, 1, m2, m3) = " << m1 << std::endl; + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + ublas::blas_3::hr2k (m1, value_type (1), value_type (1), ublas::herm (m2), ublas::herm (m3)); + std::cout << "hr2k (m1, 1, 1, herm (m2), herm (m3)) = " << m1 << std::endl; +#endif + } +} + +#ifdef USE_FLOAT +template struct test_blas_3, 3>; +#endif + +#ifdef USE_DOUBLE +template struct test_blas_3, 3>; +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT +template struct test_blas_3 >, 3>; +#endif + +#ifdef USE_DOUBLE +template struct test_blas_3 >, 3>; +#endif +#endif diff --git a/test/ublas_interop/test3.cpp b/test/ublas_interop/test3.cpp new file mode 100644 index 00000000..fb2b94da --- /dev/null +++ b/test/ublas_interop/test3.cpp @@ -0,0 +1,20 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test3.hpp" + +int main () { + test_vector (); + test_matrix_vector (); + test_matrix (); + return 0; +} diff --git a/test/ublas_interop/test3.hpp b/test/ublas_interop/test3.hpp new file mode 100644 index 00000000..032b029c --- /dev/null +++ b/test/ublas_interop/test3.hpp @@ -0,0 +1,63 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#ifndef TEST3_H +#define TEST3_H + +#ifdef _MSC_VER +# pragma warning(disable:4800 4996) +#endif + +#include + +typedef boost::multiprecision::mp_number, false> mp_test_type; +//typedef double mp_test_type; + +#define USE_RANGE +#define USE_SLICE +#define USE_FLOAT +#define USE_UNBOUNDED_ARRAY +#define USE_STD_VECTOR +#define USE_BOUNDED_VECTOR USE_MATRIX +#define USE_UNBOUNDED_ARRAY +#define USE_MAP_ARRAY +#define USE_STD_MAP +#define USE_MAPPED_VECTOR +#define USE_COMPRESSED_VECTOR +#define USE_COORDINATE_VECTOR +#define USE_MAPPED_MATRIX +#define USE_COMPRESSED_MATRIX +#define USE_COORDINATE_MATRIX + +#include + +#include +#include +#include +#include +#include +#include +#include +#ifdef USE_GENERALIZED_VECTOR_OF_VECTOR +#include +#endif +#include + +namespace ublas = boost::numeric::ublas; + +#include "common/init.hpp" + +void test_vector (); +void test_matrix_vector (); +void test_matrix (); + +#endif diff --git a/test/ublas_interop/test31.cpp b/test/ublas_interop/test31.cpp new file mode 100644 index 00000000..a1484cfd --- /dev/null +++ b/test/ublas_interop/test31.cpp @@ -0,0 +1,248 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test3.hpp" + +// Test vector expression templates +template +struct test_my_vector { + typedef typename V::value_type value_type; + typedef typename V::size_type size_type; + typedef typename ublas::type_traits::real_type real_type; + + template + void test_with (VP &v1, VP &v2, VP &v3) const { + { + value_type t; + size_type i; + real_type n; + + // Default Construct + default_construct::test (); + + // Copy and swap + initialize_vector (v1); + initialize_vector (v2); + v1 = v2; + std::cout << "v1 = v2 = " << v1 << std::endl; + v1.assign_temporary (v2); + std::cout << "v1.assign_temporary (v2) = " << v1 << std::endl; + v1.swap (v2); + std::cout << "v1.swap (v2) = " << v1 << " " << v2 << std::endl; + + // Zero assignment + v1 = ublas::zero_vector<> (v1.size ()); + std::cout << "v1.zero_vector = " << v1 << std::endl; + v1 = v2; + +#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + // Project range and slice + initialize_vector (v1); + initialize_vector (v2); + project (v1, ublas::range(0,1)) = project (v2, ublas::range(0,1)); + project (v1, ublas::range(0,1)) = project (v2, ublas::slice(0,1,1)); + project (v1, ublas::slice(2,-1,2)) = project (v2, ublas::slice(0,1,2)); + project (v1, ublas::slice(2,-1,2)) = project (v2, ublas::range(0,2)); + std::cout << "v1 = range/slice " << v1 << std::endl; +#endif + + // Unary vector operations resulting in a vector + initialize_vector (v1); + v2 = - v1; + std::cout << "- v1 = " << v2 << std::endl; + v2 = ublas::conj (v1); + std::cout << "conj (v1) = " << v2 << std::endl; + + // Binary vector operations resulting in a vector + initialize_vector (v1); + initialize_vector (v2); + initialize_vector (v3); + v3 = v1 + v2; + std::cout << "v1 + v2 = " << v3 << std::endl; + + v3 = v1 - v2; + std::cout << "v1 - v2 = " << v3 << std::endl; + + // Scaling a vector + t = N; + initialize_vector (v1); + v2 = value_type (1.) * v1; + std::cout << "1. * v1 = " << v2 << std::endl; + v2 = t * v1; + std::cout << "N * v1 = " << v2 << std::endl; + initialize_vector (v1); + v2 = v1 * value_type (1.); + std::cout << "v1 * 1. = " << v2 << std::endl; + v2 = v1 * t; + std::cout << "v1 * N = " << v2 << std::endl; + + // Some assignments + initialize_vector (v1); + initialize_vector (v2); + v2 += v1; + std::cout << "v2 += v1 = " << v2 << std::endl; + v2 -= v1; + std::cout << "v2 -= v1 = " << v2 << std::endl; + v2 = v2 + v1; + std::cout << "v2 = v2 + v1 = " << v2 << std::endl; + v2 = v2 - v1; + std::cout << "v2 = v2 - v1 = " << v2 << std::endl; + v1 *= value_type (1.); + std::cout << "v1 *= 1. = " << v1 << std::endl; + v1 *= t; + std::cout << "v1 *= N = " << v1 << std::endl; + + // Unary vector operations resulting in a scalar + initialize_vector (v1); + t = ublas::sum (v1); + std::cout << "sum (v1) = " << t << std::endl; + n = ublas::norm_1 (v1); + std::cout << "norm_1 (v1) = " << n << std::endl; + n = ublas::norm_2 (v1); + std::cout << "norm_2 (v1) = " << n << std::endl; + n = ublas::norm_inf (v1); + std::cout << "norm_inf (v1) = " << n << std::endl; + + i = ublas::index_norm_inf (v1); + std::cout << "index_norm_inf (v1) = " << i << std::endl; + + // Binary vector operations resulting in a scalar + initialize_vector (v1); + initialize_vector (v2); + t = ublas::inner_prod (v1, v2); + std::cout << "inner_prod (v1, v2) = " << t << std::endl; + } + } + void operator () () const { + { + V v1 (N, N), v2 (N, N), v3 (N, N); + test_with (v1, v2, v3); + +#ifdef USE_RANGE + ublas::vector_range vr1 (v1, ublas::range (0, N)), + vr2 (v2, ublas::range (0, N)), + vr3 (v3, ublas::range (0, N)); + test_with (vr1, vr2, vr3); +#endif + +#ifdef USE_SLICE + ublas::vector_slice vs1 (v1, ublas::slice (0, 1, N)), + vs2 (v2, ublas::slice (0, 1, N)), + vs3 (v3, ublas::slice (0, 1, N)); + test_with (vs1, vs2, vs3); +#endif + } + } +}; + +// Test vector +void test_vector () { + std::cout << "test_vector" << std::endl; + +#ifdef USE_SPARSE_VECTOR +#ifdef USE_MAP_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, map_array" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, map_array" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, map_array" << std::endl; + test_my_vector, ublas::map_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, map_array" << std::endl; + test_my_vector, ublas::map_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_MAP +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::map" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::map" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::map" << std::endl; + test_my_vector, std::map > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::map" << std::endl; + test_my_vector, std::map > > , 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_COMPRESSED_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type compressed" << std::endl; + test_my_vector, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double compressed" << std::endl; + test_my_vector, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex compressed" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex compressed" << std::endl; + test_my_vector >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_COORDINATE_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type coordinate" << std::endl; + test_my_vector, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double coordinate" << std::endl; + test_my_vector, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex coordinate" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex coordinate" << std::endl; + test_my_vector >, 3 > () (); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test32.cpp b/test/ublas_interop/test32.cpp new file mode 100644 index 00000000..7240b4ce --- /dev/null +++ b/test/ublas_interop/test32.cpp @@ -0,0 +1,324 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test3.hpp" + +// Test matrix & vector expression templates +template +struct test_my_matrix_vector { + typedef typename V::value_type value_type; + + template + void test_with (VP &v1, VP &v2, MP &m1) const { + { + // Rows and columns + initialize_matrix (m1); + for (int i = 0; i < N; ++ i) { + v1 = ublas::row (m1, i); + std::cout << "row (m, " << i << ") = " << v1 << std::endl; + v1 = ublas::column (m1, i); + std::cout << "column (m, " << i << ") = " << v1 << std::endl; + } + + // Outer product + initialize_vector (v1); + initialize_vector (v2); + m1 = ublas::outer_prod (v1, v2); + std::cout << "outer_prod (v1, v2) = " << m1 << std::endl; + + // Matrix vector product + initialize_matrix (m1); + initialize_vector (v1); + v2 = ublas::prod (m1, v1); + std::cout << "prod (m1, v1) = " << v2 << std::endl; + v2 = ublas::prod (v1, m1); + std::cout << "prod (v1, m1) = " << v2 << std::endl; + } + } + void operator () () const { + { + V v1 (N, N), v2 (N, N); + M m1 (N, N, N * N); + + test_with (v1, v2, m1); + + ublas::matrix_row mr1 (m1, 0), mr2 (m1, N - 1); + test_with (mr1, mr2, m1); + + ublas::matrix_column mc1 (m1, 0), mc2 (m1, N - 1); + test_with (mc1, mc2, m1); + +#ifdef USE_RANGE + ublas::matrix_vector_range mvr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (m1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, m1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice mvs1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, m1); +#endif + } + } +}; + +// Test matrix & vector +void test_matrix_vector () { + std::cout << "test_matrix_vector" << std::endl; + +#ifdef USE_SPARSE_MATRIX +#ifdef USE_MAP_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, map_array" << std::endl; + test_my_matrix_vector >, + ublas::mapped_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, map_array" << std::endl; + test_my_matrix_vector >, + ublas::mapped_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, map_array" << std::endl; + test_my_matrix_vector, ublas::map_array > >, + ublas::mapped_matrix, ublas::row_major, ublas::map_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, map_array" << std::endl; + test_my_matrix_vector, ublas::map_array > >, + ublas::mapped_matrix, ublas::row_major, ublas::map_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_MAP +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::map" << std::endl; + test_my_matrix_vector >, + ublas::mapped_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::map" << std::endl; + test_my_matrix_vector >, + ublas::mapped_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::map" << std::endl; + test_my_matrix_vector, std::map > >, + ublas::mapped_matrix, ublas::row_major, std::map > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::map" << std::endl; + test_my_matrix_vector, std::map > >, + ublas::mapped_matrix, ublas::row_major, std::map > >, 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_SPARSE_VECTOR_OF_SPARSE_VECTOR +#ifdef USE_MAP_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, mapped_vector map_array" << std::endl; + test_my_matrix_vector >, + ublas::mapped_vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, mapped_vector map_array" << std::endl; + test_my_matrix_vector >, + ublas::mapped_vector > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, mapped_vector map_array" << std::endl; + test_my_matrix_vector, ublas::map_array > >, + ublas::mapped_vector, ublas::row_major, ublas::map_array > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex,mapped_vector map_array" << std::endl; + test_my_matrix_vector, ublas::map_array > >, + ublas::mapped_vector, ublas::row_major, ublas::map_array > > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_MAP +#ifdef USE_FLOAT + std::cout << "mp_test_type, mapped_vector std::map" << std::endl; + test_my_matrix_vector >, + ublas::mapped_vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, mapped_vector std::map" << std::endl; + test_my_matrix_vector >, + ublas::mapped_vector > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, mapped_vector std::map" << std::endl; + test_my_matrix_vector, std::map > >, + ublas::mapped_vector, ublas::row_major, std::map > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, mapped_vector std::map" << std::endl; + test_my_matrix_vector, std::map > >, + ublas::mapped_vector, ublas::row_major, std::map > > >, 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_GENERALIZED_VECTOR_OF_VECTOR +#ifdef USE_MAP_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, generalized_vector_of_vector map_array" << std::endl; + test_my_matrix_vector >, + ublas::generalized_vector_of_vector > > >, 3 > () (); + test_my_matrix_vector >, + ublas::generalized_vector_of_vector >, ublas::map_array > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, generalized_vector_of_vector map_array" << std::endl; + test_my_matrix_vector >, + ublas::generalized_vector_of_vector > > >, 3 > () (); + test_my_matrix_vector >, + ublas::generalized_vector_of_vector >, ublas::map_array > > > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, generalized_vector_of_vector map_array" << std::endl; + test_my_matrix_vector, ublas::map_array > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::vector, ublas::map_array > > > >, 3 > () (); + test_my_matrix_vector, ublas::map_array > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::mapped_vector, ublas::map_array > >, ublas::map_array, ublas::map_array > > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, generalized_vector_of_vector map_array" << std::endl; + test_my_matrix_vector, ublas::map_array > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::vector, ublas::map_array > > > >, 3 > () (); + test_my_matrix_vector, ublas::map_array > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::mapped_vector, ublas::map_array > >, ublas::map_array, ublas::map_array > > > > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_MAP +#ifdef USE_FLOAT + std::cout << "mp_test_type, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix_vector >, + ublas::generalized_vector_of_vector > > >, 3 > () (); + test_my_matrix_vector >, + ublas::generalized_vector_of_vector >, std::map > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix_vector >, + ublas::generalized_vector_of_vector > > >, 3 > () (); + test_my_matrix_vector >, + ublas::generalized_vector_of_vector >, std::map > > > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix_vector, std::map > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::vector, std::map > > > >, 3 > () (); + test_my_matrix_vector, std::map > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::mapped_vector, std::map > >, std::map, std::map > > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix_vector, std::map > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::vector, std::map > > > >, 3 > () (); + test_my_matrix_vector, std::map > >, + ublas::generalized_vector_of_vector, ublas::row_major, ublas::mapped_vector, std::map > >, std::map, std::map > > > > >, 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_COMPRESSED_MATRIX +#ifdef USE_FLOAT + std::cout << "mp_test_type compressed" << std::endl; + test_my_matrix_vector, + ublas::compressed_matrix, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double compressed" << std::endl; + test_my_matrix_vector, + ublas::compressed_matrix, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex compressed" << std::endl; + test_my_matrix_vector >, + ublas::compressed_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex compressed" << std::endl; + test_my_matrix_vector >, + ublas::compressed_matrix >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_COORDINATE_MATRIX +#ifdef USE_FLOAT + std::cout << "mp_test_type coordinate" << std::endl; + test_my_matrix_vector, + ublas::coordinate_matrix, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double coordinate" << std::endl; + test_my_matrix_vector, + ublas::coordinate_matrix, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex coordinate" << std::endl; + test_my_matrix_vector >, + ublas::coordinate_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex coordinate" << std::endl; + test_my_matrix_vector >, + ublas::coordinate_matrix >, 3 > () (); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test33.cpp b/test/ublas_interop/test33.cpp new file mode 100644 index 00000000..46d73519 --- /dev/null +++ b/test/ublas_interop/test33.cpp @@ -0,0 +1,347 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test3.hpp" + +// Test matrix expression templates +template +struct test_my_matrix { + typedef typename M::value_type value_type; + + template + void test_with (MP &m1, MP &m2, MP &m3) const { + { + value_type t; + + // Default Construct + default_construct::test (); + + // Copy and swap + initialize_matrix (m1); + initialize_matrix (m2); + m1 = m2; + std::cout << "m1 = m2 = " << m1 << std::endl; + m1.assign_temporary (m2); + std::cout << "m1.assign_temporary (m2) = " << m1 << std::endl; + m1.swap (m2); + std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl; + + // Zero assignment + m1 = ublas::zero_matrix<> (m1.size1 (), m1.size2 ()); + std::cout << "m1.zero_matrix = " << m1 << std::endl; + m1 = m2; + +#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + // Project range and slice + initialize_matrix (m1); + initialize_matrix (m2); + project (m1, ublas::range(0,1),ublas::range(0,1)) = project (m2, ublas::range(0,1),ublas::range(0,1)); + project (m1, ublas::range(0,1),ublas::range(0,1)) = project (m2, ublas::slice(0,1,1),ublas::slice(0,1,1)); + project (m1, ublas::slice(2,-1,2),ublas::slice(2,-1,2)) = project (m2, ublas::slice(0,1,2),ublas::slice(0,1,2)); + project (m1, ublas::slice(2,-1,2),ublas::slice(2,-1,2)) = project (m2, ublas::range(0,2),ublas::range(0,2)); + std::cout << "m1 = range/slice " << m1 << std::endl; +#endif + + // Unary matrix operations resulting in a matrix + initialize_matrix (m1); + m2 = - m1; + std::cout << "- m1 = " << m2 << std::endl; + m2 = ublas::conj (m1); + std::cout << "conj (m1) = " << m2 << std::endl; + + // Binary matrix operations resulting in a matrix + initialize_matrix (m1); + initialize_matrix (m2); + initialize_matrix (m3); + m3 = m1 + m2; + std::cout << "m1 + m2 = " << m3 << std::endl; + m3 = m1 - m2; + std::cout << "m1 - m2 = " << m3 << std::endl; + + // Scaling a matrix + t = N; + initialize_matrix (m1); + m2 = value_type (1.) * m1; + std::cout << "1. * m1 = " << m2 << std::endl; + m2 = t * m1; + std::cout << "N * m1 = " << m2 << std::endl; + initialize_matrix (m1); + m2 = m1 * value_type (1.); + std::cout << "m1 * 1. = " << m2 << std::endl; + m2 = m1 * t; + std::cout << "m1 * N = " << m2 << std::endl; + + // Some assignments + initialize_matrix (m1); + initialize_matrix (m2); + m2 += m1; + std::cout << "m2 += m1 = " << m2 << std::endl; + m2 -= m1; + std::cout << "m2 -= m1 = " << m2 << std::endl; + m2 = m2 + m1; + std::cout << "m2 = m2 + m1 = " << m2 << std::endl; + m2 = m2 - m1; + std::cout << "m2 = m2 - m1 = " << m2 << std::endl; + m1 *= value_type (1.); + std::cout << "m1 *= 1. = " << m1 << std::endl; + m1 *= t; + std::cout << "m1 *= N = " << m1 << std::endl; + + // Transpose + initialize_matrix (m1); + m2 = ublas::trans (m1); + std::cout << "trans (m1) = " << m2 << std::endl; + + // Hermitean + initialize_matrix (m1); + m2 = ublas::herm (m1); + std::cout << "herm (m1) = " << m2 << std::endl; + + // Matrix multiplication + initialize_matrix (m1); + initialize_matrix (m2); + m3 = ublas::prod (m1, m2); + std::cout << "prod (m1, m2) = " << m3 << std::endl; + } + } + void operator () () const { + { + M m1 (N, N, N * N), m2 (N, N, N * N), m3 (N, N, N * N); + test_with (m1, m2, m3); + +#ifdef USE_RANGE + ublas::matrix_range mr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mr2 (m2, ublas::range (0, N), ublas::range (0, N)), + mr3 (m3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice ms1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (m2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (m3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif + } + } +}; + +// Test matrix +void test_matrix () { + std::cout << "test_matrix" << std::endl; + +#ifdef USE_SPARSE_MATRIX +#ifdef USE_MAP_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, mapped_matrix map_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, mapped_matrix map_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, mapped_matrix map_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::map_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, mapped_matrix map_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::map_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_MAP +#ifdef USE_FLOAT + std::cout << "mp_test_type, mapped_matrix std::map" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, mapped_matrix std::map" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, mapped_matrix std::map" << std::endl; + test_my_matrix, ublas::row_major, std::map > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, mapped_matrix std::map" << std::endl; + test_my_matrix, ublas::row_major, std::map > >, 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_SPARSE_VECTOR_OF_SPARSE_VECTOR +#ifdef USE_MAP_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, mapped_vector_of_mapped_vector map_array" << std::endl; + test_my_matrix > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, mapped_vector_of_mapped_vector map_array" << std::endl; + test_my_matrix > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, mapped_vector_of_mapped_vector map_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::map_array > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, mapped_vector_of_mapped_vectormap_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::map_array > > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_MAP +#ifdef USE_FLOAT + std::cout << "mp_test_type, mapped_vector_of_mapped_vector std::map" << std::endl; + test_my_matrix > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, mapped_vector_of_mapped_vector std::map" << std::endl; + test_my_matrix > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, mapped_vector_of_mapped_vector std::map" << std::endl; + test_my_matrix, ublas::row_major, std::map > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, mapped_vector_of_mapped_vector std::map" << std::endl; + test_my_matrix, ublas::row_major, std::map > > >, 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_GENERALIZED_VECTOR_OF_VECTOR +#ifdef USE_MAP_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type,generalized_vector_of_vector map_array" << std::endl; + test_my_matrix > > >, 3 > () (); + test_my_matrix >, ublas::map_array > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, generalized_vector_of_vector map_array" << std::endl; + test_my_matrix > > >, 3 > () (); + test_my_matrix >, ublas::map_array > > > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, generalized_vector_of_vector map_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::vector, ublas::map_array > > > >, 3 > () (); + test_my_matrix, ublas::row_major, ublas::mapped_vector, ublas::map_array > >, ublas::map_array, ublas::map_array > > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, generalized_vector_of_vector map_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::vector, ublas::map_array > > > >, 3 > () (); + test_my_matrix, ublas::row_major, ublas::mapped_vector, ublas::map_array > >, ublas::map_array, ublas::map_array > > > > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_MAP +#ifdef USE_FLOAT + std::cout << "mp_test_type, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix > > >, 3 > () (); + test_my_matrix >, std::map > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix > > >, 3 > () (); + test_my_matrix >, std::map > > > >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix, ublas::row_major, ublas::vector, std::map > > > >, 3 > () (); + test_my_matrix, ublas::row_major, ublas::mapped_vector, std::map > >, std::map, std::map > > > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, generalized_vector_of_vector std::map" << std::endl; + test_my_matrix, ublas::row_major, ublas::vector, std::map > > > >, 3 > () (); + test_my_matrix, ublas::row_major, ublas::mapped_vector, std::map > >, std::map, std::map > > > > >, 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_COMPRESSED_MATRIX +#ifdef USE_FLOAT + std::cout << "mp_test_type compressed_matrix" << std::endl; + test_my_matrix, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double compressed_matrix" << std::endl; + test_my_matrix, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex compressed_matrix" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex compressed_matrix" << std::endl; + test_my_matrix >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_COORDINATE_MATRIX +#ifdef USE_FLOAT + std::cout << "mp_test_type coordinate_matrix" << std::endl; + test_my_matrix, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double coordinate_matrix" << std::endl; + test_my_matrix, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex coordinate_matrix" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex coordinate_matrix" << std::endl; + test_my_matrix >, 3 > () (); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test4.cpp b/test/ublas_interop/test4.cpp new file mode 100644 index 00000000..bf5816f5 --- /dev/null +++ b/test/ublas_interop/test4.cpp @@ -0,0 +1,19 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test4.hpp" + +int main () { + test_matrix_vector (); + test_matrix (); + return 0; +} diff --git a/test/ublas_interop/test4.hpp b/test/ublas_interop/test4.hpp new file mode 100644 index 00000000..fc5b48cb --- /dev/null +++ b/test/ublas_interop/test4.hpp @@ -0,0 +1,39 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#ifndef TEST4_H +#define TEST4_H + +#include + +#include +#include +#include +#include +#include + +namespace ublas = boost::numeric::ublas; + +#include "common/init.hpp" + +//#define USE_BANDED +#define USE_DIAGONAL + + +void test_matrix_vector (); +void test_matrix (); + + +// FIXME slice are failing in assignment to zero elements +#undef USE_SLICE + +#endif diff --git a/test/ublas_interop/test42.cpp b/test/ublas_interop/test42.cpp new file mode 100644 index 00000000..325d8094 --- /dev/null +++ b/test/ublas_interop/test42.cpp @@ -0,0 +1,361 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test4.hpp" + +// Test matrix & vector expression templates +template +struct test_my_matrix_vector { + typedef typename V::value_type value_type; + + template + void test_with (VP &v1, VP &v2, MP &m1) const { + { +#ifndef USE_DIAGONAL + // Rows and columns + initialize_matrix (m1); + for (int i = 0; i < N; ++ i) { + v2 = ublas::row (m1, i); + std::cout << "row (m, " << i << ") = " << v2 << std::endl; + v2 = ublas::column (m1, i); + std::cout << "column (m, " << i << ") = " << v2 << std::endl; + } + + // Outer product + initialize_vector (v1); + initialize_vector (v2); + v1 (0) = 0; + v1 (N - 1) = 0; + m1 = ublas::outer_prod (v1, v2); + std::cout << "outer_prod (v1, v2) = " << m1 << std::endl; + + // Matrix vector product + initialize_matrix (m1); + initialize_vector (v1); + v2 = ublas::prod (m1, v1); + std::cout << "prod (m1, v1) = " << v2 << std::endl; + v2 = ublas::prod (v1, m1); + std::cout << "prod (v1, m1) = " << v2 << std::endl; +#endif + } + } + void operator () () const { + { + V v1 (N), v2 (N); +#ifdef USE_BANDED + M m1 (N, N, 1, 1); +#endif +#ifdef USE_DIAGONAL + M m1 (N, N); +#endif + test_with (v1, v2, m1); + + ublas::matrix_row mr1 (m1, 1), mr2 (m1, 1); + test_with (mr1, mr2, m1); + + ublas::matrix_column mc1 (m1, 1), mc2 (m1, 1); + test_with (mc1, mc2, m1); + +#ifdef USE_RANGE + ublas::matrix_vector_range mvr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (m1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, m1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice mvs1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, m1); +#endif + } + } + + void operator () (int) const { +#ifdef USE_ADAPTOR + { +#ifdef USE_BANDED + V v1 (N), v2 (N); + M m1 (N, N, 1, 1); + ublas::banded_adaptor bam1 (m1, 1, 1); + test_with (v1, v2, bam1); + + ublas::matrix_row > mr1 (bam1, 1), mr2 (bam1, 1); + test_with (mr1, mr2, bam1); + + ublas::matrix_column > mc1 (bam1, 1), mc2 (bam1, 1); + test_with (mc1, mc2, bam1); + +#ifdef USE_RANGE + ublas::matrix_vector_range > mvr1 (bam1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (bam1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, bam1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice > mvs1 (bam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (bam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, bam1); +#endif +#endif +#ifdef USE_DIAGONAL + V v1 (N), v2 (N); + M m1 (N, N); + ublas::diagonal_adaptor dam1 (m1); + test_with (v1, v2, dam1); + + ublas::matrix_row > mr1 (dam1, 1), mr2 (dam1, 1); + test_with (mr1, mr2, dam1); + + ublas::matrix_column > mc1 (dam1, 1), mc2 (dam1, 1); + test_with (mc1, mc2, dam1); + +#ifdef USE_RANGE + ublas::matrix_vector_range > mvr1 (dam1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (dam1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, dam1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice > mvs1 (dam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (dam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, dam1); +#endif +#endif + } +#endif + } +}; + +// Test matrix & vector +void test_matrix_vector () { + std::cout << "test_matrix_vector" << std::endl; + +#ifdef USE_BANDED +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::banded_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::banded_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::banded_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::banded_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::banded_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::banded_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::banded_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::banded_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::banded_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::banded_matrix, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::banded_matrix, ublas::row_major, std::vector > >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::banded_matrix, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::banded_matrix, ublas::row_major, std::vector > >, 3> () (0); +#endif +#endif +#endif +#endif + +#ifdef USE_DIAGONAL +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::diagonal_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::diagonal_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::diagonal_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::diagonal_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::diagonal_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::diagonal_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::diagonal_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::diagonal_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::diagonal_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::diagonal_matrix, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::diagonal_matrix, ublas::row_major, std::vector > >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::diagonal_matrix, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::diagonal_matrix, ublas::row_major, std::vector > >, 3> () (0); +#endif +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test43.cpp b/test/ublas_interop/test43.cpp new file mode 100644 index 00000000..82682c97 --- /dev/null +++ b/test/ublas_interop/test43.cpp @@ -0,0 +1,326 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test4.hpp" + +// Test matrix expression templates +template +struct test_my_matrix { + typedef typename M::value_type value_type; + + template + void test_with (MP &m1, MP &m2, MP &m3) const { + { + value_type t; + + // Default Construct + default_construct::test (); + + // Copy and swap + initialize_matrix (m1); + initialize_matrix (m2); + m1 = m2; + std::cout << "m1 = m2 = " << m1 << std::endl; + m1.assign_temporary (m2); + std::cout << "m1.assign_temporary (m2) = " << m1 << std::endl; + m1.swap (m2); + std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl; + + // Zero assignment + m1 = ublas::zero_matrix<> (m1.size1 (), m1.size2 ()); + std::cout << "m1.zero_matrix = " << m1 << std::endl; + m1 = m2; + + // Unary matrix operations resulting in a matrix + initialize_matrix (m1); + m2 = - m1; + std::cout << "- m1 = " << m2 << std::endl; + m2 = ublas::conj (m1); + std::cout << "conj (m1) = " << m2 << std::endl; + + // Binary matrix operations resulting in a matrix + initialize_matrix (m1); + initialize_matrix (m2); + m3 = m1 + m2; + std::cout << "m1 + m2 = " << m3 << std::endl; + m3 = m1 - m2; + std::cout << "m1 - m2 = " << m3 << std::endl; + + // Scaling a matrix + t = N; + initialize_matrix (m1); + m2 = value_type (1.) * m1; + std::cout << "1. * m1 = " << m2 << std::endl; + m2 = t * m1; + std::cout << "N * m1 = " << m2 << std::endl; + initialize_matrix (m1); + m2 = m1 * value_type (1.); + std::cout << "m1 * 1. = " << m2 << std::endl; + m2 = m1 * t; + std::cout << "m1 * N = " << m2 << std::endl; + + // Some assignments + initialize_matrix (m1); + initialize_matrix (m2); + m2 += m1; + std::cout << "m2 += m1 = " << m2 << std::endl; + m2 -= m1; + std::cout << "m2 -= m1 = " << m2 << std::endl; + m2 = m2 + m1; + std::cout << "m2 = m2 + m1 = " << m2 << std::endl; + m2 = m2 - m1; + std::cout << "m2 = m2 - m1 = " << m2 << std::endl; + m1 *= value_type (1.); + std::cout << "m1 *= 1. = " << m1 << std::endl; + m1 *= t; + std::cout << "m1 *= N = " << m1 << std::endl; + + // Transpose + initialize_matrix (m1); + m2 = ublas::trans (m1); + std::cout << "trans (m1) = " << m2 << std::endl; + + // Hermitean + initialize_matrix (m1); + m2 = ublas::herm (m1); + std::cout << "herm (m1) = " << m2 << std::endl; + + // Matrix multiplication + initialize_matrix (m1); + initialize_matrix (m2); + // Banded times banded isn't banded + std::cout << "prod (m1, m2) = " << ublas::prod (m1, m2) << std::endl; + } + } + void operator () () const { + { +#ifdef USE_BANDED + M m1 (N, N, 1, 1), m2 (N, N, 1, 1), m3 (N, N, 1, 1); +#endif +#ifdef USE_DIAGONAL + M m1 (N, N), m2 (N, N), m3 (N, N); +#endif + test_with (m1, m2, m3); + +#ifdef USE_RANGE + ublas::matrix_range mr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mr2 (m2, ublas::range (0, N), ublas::range (0, N)), + mr3 (m3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice ms1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (m2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (m3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif + } + +#ifdef USE_ADAPTOR + { +#ifdef USE_BANDED + M m1 (N, N, 1, 1), m2 (N, N, 1, 1), m3 (N, N, 1, 1); + ublas::banded_adaptor bam1 (m1, 1, 1), bam2 (m2, 1, 1), bam3 (m3, 1, 1); + test_with (bam1, bam2, bam3); + +#ifdef USE_RANGE + ublas::matrix_range > mr1 (bam1, ublas::range (0, N), ublas::range (0, N)), + mr2 (bam2, ublas::range (0, N), ublas::range (0, N)), + mr3 (bam3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice > ms1 (bam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (bam2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (bam3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif +#endif +#ifdef USE_DIAGONAL + M m1 (N, N), m2 (N, N), m3 (N, N); + ublas::diagonal_adaptor dam1 (m1), dam2 (m2), dam3 (m3); + test_with (dam1, dam2, dam3); + +#ifdef USE_RANGE + ublas::matrix_range > mr1 (dam1, ublas::range (0, N), ublas::range (0, N)), + mr2 (dam2, ublas::range (0, N), ublas::range (0, N)), + mr3 (dam3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice > ms1 (dam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (dam2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (dam3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif +#endif + } +#endif + + } +}; + +// Test matrix +void test_matrix () { + std::cout << "test_matrix" << std::endl; + +#ifdef USE_BANDED +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3 > () (); +#endif +#endif +#endif +#endif + +#ifdef USE_DIAGONAL +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3 > () (); +#endif +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test5.cpp b/test/ublas_interop/test5.cpp new file mode 100644 index 00000000..548cd603 --- /dev/null +++ b/test/ublas_interop/test5.cpp @@ -0,0 +1,19 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test5.hpp" + +int main () { + test_matrix_vector (); + test_matrix (); + return 0; +} diff --git a/test/ublas_interop/test5.hpp b/test/ublas_interop/test5.hpp new file mode 100644 index 00000000..a13dfa2e --- /dev/null +++ b/test/ublas_interop/test5.hpp @@ -0,0 +1,35 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#ifndef TEST5_H +#define TEST5_H + +#include + +#include +#include +#include +#include +#include + +namespace ublas = boost::numeric::ublas; + +#include "common/init.hpp" + +void test_matrix_vector (); +void test_matrix (); + + +// FIXME slice are failing in assignment to zero elements +#undef USE_SLICE + +#endif diff --git a/test/ublas_interop/test52.cpp b/test/ublas_interop/test52.cpp new file mode 100644 index 00000000..9e13dfde --- /dev/null +++ b/test/ublas_interop/test52.cpp @@ -0,0 +1,214 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test5.hpp" + +// Test matrix & vector expression templates +template +struct test_my_matrix_vector { + typedef typename V::value_type value_type; + + template + void test_with (VP &v1, VP &v2, MP &m1) const { + { + // Rows and columns + initialize_matrix (m1); + for (int i = 0; i < N; ++ i) { + v2 = ublas::row (m1, i); + std::cout << "row (m, " << i << ") = " << v2 << std::endl; + v2 = ublas::column (m1, i); + std::cout << "column (m, " << i << ") = " << v2 << std::endl; + } + + // Outer product + initialize_vector (v1); + initialize_vector (v2); + v1 (0) = 0; + v2 (N - 1) = 0; + m1 = ublas::outer_prod (v1, v2); + std::cout << "outer_prod (v1, v2) = " << m1 << std::endl; + + // Matrix vector product + initialize_matrix (m1); + initialize_vector (v1); + v2 = ublas::prod (m1, v1); + std::cout << "prod (m1, v1) = " << v2 << std::endl; + v2 = ublas::prod (v1, m1); + std::cout << "prod (v1, m1) = " << v2 << std::endl; + } + } + void operator () () const { + { + V v1 (N), v2 (N); + M m1 (N, N); + test_with (v1, v2, m1); + + ublas::matrix_row mr1 (m1, N - 1), mr2 (m1, N - 1); + test_with (mr1, mr2, m1); + + ublas::matrix_column mc1 (m1, 0), mc2 (m1, 0); + test_with (mc1, mc2, m1); + +#ifdef USE_RANGE + ublas::matrix_vector_range mvr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (m1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, m1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice mvs1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, m1); +#endif + } + } + + void operator () (int) const { +#ifdef USE_ADAPTOR + { + V v1 (N), v2 (N); + M m1 (N, N); + ublas::triangular_adaptor tam1 (m1); + test_with (v1, v2, tam1); + + ublas::matrix_row > mr1 (tam1, N - 1), mr2 (tam1, N - 1); + test_with (mr1, mr2, tam1); + + ublas::matrix_column > mc1 (tam1, 0), mc2 (tam1, 0); + test_with (mc1, mc2, tam1); + +#ifdef USE_RANGE + ublas::matrix_vector_range > mvr1 (tam1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (tam1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, tam1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice > mvs1 (tam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (tam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, tam1); +#endif + } +#endif + } +}; + +// Test matrix & vector +void test_matrix_vector () { + std::cout << "test_matrix_vector" << std::endl; + +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::triangular_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (0); + + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::triangular_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (0); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test53.cpp b/test/ublas_interop/test53.cpp new file mode 100644 index 00000000..041be1f5 --- /dev/null +++ b/test/ublas_interop/test53.cpp @@ -0,0 +1,223 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test5.hpp" + +// Test matrix expression templates +template +struct test_my_matrix { + typedef typename M::value_type value_type; + + template + void test_with (MP &m1, MP &m2, MP &m3) const { + { + value_type t; + + // Default Construct + default_construct::test (); + + // Copy and swap + initialize_matrix (m1); + initialize_matrix (m2); + m1 = m2; + std::cout << "m1 = m2 = " << m1 << std::endl; + m1.assign_temporary (m2); + std::cout << "m1.assign_temporary (m2) = " << m1 << std::endl; + m1.swap (m2); + std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl; + + // Zero assignment + m1 = ublas::zero_matrix<> (m1.size1 (), m1.size2 ()); + std::cout << "m1.zero_matrix = " << m1 << std::endl; + m1 = m2; + + // Unary matrix operations resulting in a matrix + initialize_matrix (m1); + m2 = - m1; + std::cout << "- m1 = " << m2 << std::endl; + m2 = ublas::conj (m1); + std::cout << "conj (m1) = " << m2 << std::endl; + + // Binary matrix operations resulting in a matrix + initialize_matrix (m1); + initialize_matrix (m2); + m3 = m1 + m2; + std::cout << "m1 + m2 = " << m3 << std::endl; + m3 = m1 - m2; + std::cout << "m1 - m2 = " << m3 << std::endl; + + // Scaling a matrix + t = N; + initialize_matrix (m1); + m2 = value_type (1.) * m1; + std::cout << "1. * m1 = " << m2 << std::endl; + m2 = t * m1; + std::cout << "N * m1 = " << m2 << std::endl; + initialize_matrix (m1); + m2 = m1 * value_type (1.); + std::cout << "m1 * 1. = " << m2 << std::endl; + m2 = m1 * t; + std::cout << "m1 * N = " << m2 << std::endl; + + // Some assignments + initialize_matrix (m1); + initialize_matrix (m2); + m2 += m1; + std::cout << "m2 += m1 = " << m2 << std::endl; + m2 -= m1; + std::cout << "m2 -= m1 = " << m2 << std::endl; + m2 = m2 + m1; + std::cout << "m2 = m2 + m1 = " << m2 << std::endl; + m2 = m2 - m1; + std::cout << "m2 = m2 - m1 = " << m2 << std::endl; + m1 *= value_type (1.); + std::cout << "m1 *= 1. = " << m1 << std::endl; + m1 *= t; + std::cout << "m1 *= N = " << m1 << std::endl; + + // Transpose + initialize_matrix (m1); + // Transpose of a triangular isn't triangular of the same kind + std::cout << "trans (m1) = " << ublas::trans (m1) << std::endl; + + // Hermitian + initialize_matrix (m1); + // Hermitian of a triangular isn't hermitian of the same kind + std::cout << "herm (m1) = " << ublas::herm (m1) << std::endl; + + // Matrix multiplication + initialize_matrix (m1); + initialize_matrix (m2); + m3 = ublas::prod (m1, m2); + std::cout << "prod (m1, m2) = " << m3 << std::endl; + } + } + void operator () () const { + { + M m1 (N, N), m2 (N, N), m3 (N, N); + test_with (m1, m2, m3); + +#ifdef USE_RANGE + ublas::matrix_range mr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mr2 (m2, ublas::range (0, N), ublas::range (0, N)), + mr3 (m3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice ms1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (m2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (m3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif + } + +#ifdef USE_ADAPTOR + { + M m1 (N, N), m2 (N, N), m3 (N, N); + ublas::triangular_adaptor tam1 (m1), tam2 (m2), tam3 (m3); + test_with (tam1, tam2, tam3); + +#ifdef USE_RANGE + ublas::matrix_range > mr1 (tam1, ublas::range (0, N), ublas::range (0, N)), + mr2 (tam2, ublas::range (0, N), ublas::range (0, N)), + mr3 (tam3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice > ms1 (tam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (tam2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (tam3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif + } +#endif + } +}; + +// Test matrix +void test_matrix () { + std::cout << "test_matrix" << std::endl; + +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, std::vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE +std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, std::vector > >, 3 > () (); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test6.cpp b/test/ublas_interop/test6.cpp new file mode 100644 index 00000000..61a5c310 --- /dev/null +++ b/test/ublas_interop/test6.cpp @@ -0,0 +1,19 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test6.hpp" + +int main () { + test_matrix_vector (); + test_matrix (); + return 0; +} diff --git a/test/ublas_interop/test6.hpp b/test/ublas_interop/test6.hpp new file mode 100644 index 00000000..766d6b92 --- /dev/null +++ b/test/ublas_interop/test6.hpp @@ -0,0 +1,32 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#ifndef TEST6_H +#define TEST6_H + +#include + +#include +#include +#include +#include +#include + +namespace ublas = boost::numeric::ublas; + +#include "common/init.hpp" + +void test_matrix_vector (); +void test_matrix (); + + +#endif diff --git a/test/ublas_interop/test62.cpp b/test/ublas_interop/test62.cpp new file mode 100644 index 00000000..a7529d29 --- /dev/null +++ b/test/ublas_interop/test62.cpp @@ -0,0 +1,218 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test6.hpp" + +// Test matrix & vector expression templates +template +struct test_my_matrix_vector { + typedef typename V::value_type value_type; + + template + void test_with (VP &v1, VP &v2, MP &m1) const { + { + // Rows and columns + initialize_matrix (m1); + for (int i = 0; i < N; ++ i) { + v2 = ublas::row (m1, i); + std::cout << "row (m, " << i << ") = " << v2 << std::endl; + v2 = ublas::column (m1, i); + std::cout << "column (m, " << i << ") = " << v2 << std::endl; + } + + // Outer product + initialize_vector (v1); + initialize_vector (v2); + v1 (0) = 0; + v1 (N - 1) = 0; + v2 (0) = 0; + v2 (N - 1) = 0; + m1 = ublas::outer_prod (v1, v2); + std::cout << "outer_prod (v1, v2) = " << m1 << std::endl; + + // Matrix vector product + initialize_matrix (m1); + initialize_vector (v1); + v2 = ublas::prod (m1, v1); + std::cout << "prod (m1, v1) = " << v2 << std::endl; + v2 = ublas::prod (v1, m1); + std::cout << "prod (v1, m1) = " << v2 << std::endl; + } + } + void operator () () const { + { + V v1 (N), v2 (N); + M m1 (N, N); + test_with (v1, v2, m1); + + ublas::matrix_row mr1 (m1, N - 1), mr2 (m1, N - 1); + test_with (mr1, mr2, m1); + + ublas::matrix_column mc1 (m1, 0), mc2 (m1, 0); + test_with (mc1, mc2, m1); + +#ifdef USE_RANGE + ublas::matrix_vector_range mvr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (m1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, m1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice mvs1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, m1); +#endif + } + } + + void operator () (int) const { +#ifdef USE_ADAPTOR + { + V v1 (N), v2 (N); + M m1 (N, N); + ublas::symmetric_adaptor tam1 (m1); + test_with (v1, v2, tam1); + + ublas::matrix_row > mr1 (tam1, N - 1), mr2 (tam1, N - 1); + test_with (mr1, mr2, tam1); + + ublas::matrix_column > mc1 (tam1, 0), mc2 (tam1, 0); + test_with (mc1, mc2, tam1); + +#ifdef USE_RANGE + ublas::matrix_vector_range > mvr1 (tam1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (tam1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, tam1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice > mvs1 (tam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (tam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, tam1); +#endif + } +#endif + } +}; + +// Test matrix & vector +void test_matrix_vector () { + std::cout << "test_matrix_vector" << std::endl; + +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (); + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3> () (0); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (); + test_my_matrix_vector >, + ublas::symmetric_matrix >, 3> () (0); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (0); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (); + test_my_matrix_vector, std::vector > >, + ublas::symmetric_matrix, ublas::lower, ublas::row_major, std::vector > >, 3> () (0); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test63.cpp b/test/ublas_interop/test63.cpp new file mode 100644 index 00000000..d36f09c1 --- /dev/null +++ b/test/ublas_interop/test63.cpp @@ -0,0 +1,223 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test6.hpp" + +// Test matrix expression templates +template +struct test_my_matrix { + typedef typename M::value_type value_type; + + template + void test_with (MP &m1, MP &m2, MP &m3) const { + { + value_type t; + + // Default Construct + default_construct::test (); + + // Copy and swap + initialize_matrix (m1); + initialize_matrix (m2); + m1 = m2; + std::cout << "m1 = m2 = " << m1 << std::endl; + m1.assign_temporary (m2); + std::cout << "m1.assign_temporary (m2) = " << m1 << std::endl; + m1.swap (m2); + std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl; + + // Zero assignment + m1 = ublas::zero_matrix<> (m1.size1 (), m1.size2 ()); + std::cout << "m1.zero_matrix = " << m1 << std::endl; + m1 = m2; + + // Unary matrix operations resulting in a matrix + initialize_matrix (m1); + m2 = - m1; + std::cout << "- m1 = " << m2 << std::endl; + m2 = ublas::conj (m1); + std::cout << "conj (m1) = " << m2 << std::endl; + + // Binary matrix operations resulting in a matrix + initialize_matrix (m1); + initialize_matrix (m2); + m3 = m1 + m2; + std::cout << "m1 + m2 = " << m3 << std::endl; + m3 = m1 - m2; + std::cout << "m1 - m2 = " << m3 << std::endl; + + // Scaling a matrix + t = N; + initialize_matrix (m1); + m2 = value_type (1.) * m1; + std::cout << "1. * m1 = " << m2 << std::endl; + m2 = t * m1; + std::cout << "N * m1 = " << m2 << std::endl; + initialize_matrix (m1); + m2 = m1 * value_type (1.); + std::cout << "m1 * 1. = " << m2 << std::endl; + m2 = m1 * t; + std::cout << "m1 * N = " << m2 << std::endl; + + // Some assignments + initialize_matrix (m1); + initialize_matrix (m2); + m2 += m1; + std::cout << "m2 += m1 = " << m2 << std::endl; + m2 -= m1; + std::cout << "m2 -= m1 = " << m2 << std::endl; + m2 = m2 + m1; + std::cout << "m2 = m2 + m1 = " << m2 << std::endl; + m2 = m2 - m1; + std::cout << "m2 = m1 - m1 = " << m2 << std::endl; + m1 *= value_type (1.); + std::cout << "m1 *= 1. = " << m1 << std::endl; + m1 *= t; + std::cout << "m1 *= N = " << m1 << std::endl; + + // Transpose + initialize_matrix (m1); + m2 = ublas::trans (m1); + std::cout << "trans (m1) = " << m2 << std::endl; + + // Hermitean + initialize_matrix (m1); + m2 = ublas::herm (m1); + std::cout << "herm (m1) = " << m2 << std::endl; + + // Matrix multiplication + initialize_matrix (m1); + initialize_matrix (m2); + m3 = ublas::prod (m1, m2); + std::cout << "prod (m1, m2) = " << m3 << std::endl; + } + } + void operator () () const { + { + M m1 (N, N), m2 (N, N), m3 (N, N); + test_with (m1, m2, m3); + +#ifdef USE_RANGE + ublas::matrix_range mr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mr2 (m2, ublas::range (0, N), ublas::range (0, N)), + mr3 (m3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice ms1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (m2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (m3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif + } + +#ifdef USE_ADAPTOR + { + M m1 (N, N), m2 (N, N), m3 (N, N); + ublas::symmetric_adaptor sam1 (m1), sam2 (m2), sam3 (m3); + test_with (sam1, sam2, sam3); + +#ifdef USE_RANGE + ublas::matrix_range > mr1 (sam1, ublas::range (0, N), ublas::range (0, N)), + mr2 (sam2, ublas::range (0, N), ublas::range (0, N)), + mr3 (sam3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice > ms1 (sam1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (sam2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (sam3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif + } +#endif + } +}; + +// Test matrix +void test_matrix () { + std::cout << "test_matrix" << std::endl; + +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "mp_test_type, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "mp_test_type, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, std::vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::lower, ublas::row_major, std::vector > >, 3 > () (); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test7.cpp b/test/ublas_interop/test7.cpp new file mode 100644 index 00000000..f564031c --- /dev/null +++ b/test/ublas_interop/test7.cpp @@ -0,0 +1,31 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include + +#include +#include + +#include +#include +#include + +#include "test7.hpp" + +// this testcase requires fix of task #2473 + +int main () { + test_vector (); + test_matrix_vector (); + test_matrix (); + return 0; +} diff --git a/test/ublas_interop/test7.hpp b/test/ublas_interop/test7.hpp new file mode 100644 index 00000000..5dbae1fc --- /dev/null +++ b/test/ublas_interop/test7.hpp @@ -0,0 +1,36 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#ifndef TEST7_H +#define TEST7_H + +#include + +#include +#include + +#include +#include +#include +#include +#include + +namespace ublas = boost::numeric::ublas; + +#include "common/init.hpp" + +void test_vector (); +void test_matrix_vector (); +void test_matrix (); + + +#endif diff --git a/test/ublas_interop/test71.cpp b/test/ublas_interop/test71.cpp new file mode 100644 index 00000000..4639b139 --- /dev/null +++ b/test/ublas_interop/test71.cpp @@ -0,0 +1,170 @@ +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test7.hpp" + +// Test vector expression templates +template +struct test_my_vector { + typedef typename V::value_type value_type; + typedef typename V::size_type size_type; + typedef typename ublas::type_traits::real_type real_type; + + template + void test_with (VP &v1, VP &v2, VP &v3) const { + { + value_type t; + size_type i; + real_type n; + + // Copy and swap + initialize_vector (v1); + initialize_vector (v2); + v1 = v2; + std::cout << "v1 = v2 = " << v1 << std::endl; + v1.assign_temporary (v2); + std::cout << "v1.assign_temporary (v2) = " << v1 << std::endl; + v1.swap (v2); + std::cout << "v1.swap (v2) = " << v1 << " " << v2 << std::endl; + + // Zero assignment + v1 = ublas::zero_vector (v1.size ()); + std::cout << "v1.zero_vector = " << v1 << std::endl; + v1 = v2; + + // Unary vector operations resulting in a vector + initialize_vector (v1); + v2 = - v1; + std::cout << "- v1 = " << v2 << std::endl; + v2 = ublas::conj (v1); + std::cout << "conj (v1) = " << v2 << std::endl; + + // Binary vector operations resulting in a vector + initialize_vector (v1); + initialize_vector (v2); + v3 = v1 + v2; + std::cout << "v1 + v2 = " << v3 << std::endl; + + v3 = v1 - v2; + std::cout << "v1 - v2 = " << v3 << std::endl; + + // Scaling a vector + t = value_type (N); + initialize_vector (v1); + v2 = value_type (1.) * v1; + std::cout << "1. * v1 = " << v2 << std::endl; +// v2 = t * v1; + std::cout << "N * v1 = " << v2 << std::endl; + initialize_vector (v1); +// v2 = v1 * value_type (1.); + std::cout << "v1 * 1. = " << v2 << std::endl; +// v2 = v1 * t; + std::cout << "v1 * N = " << v2 << std::endl; + + // Some assignments + initialize_vector (v1); + initialize_vector (v2); + v2 += v1; + std::cout << "v2 += v1 = " << v2 << std::endl; + v2 -= v1; + std::cout << "v2 -= v1 = " << v2 << std::endl; + v2 = v2 + v1; + std::cout << "v2 = v2 + v1 = " << v2 << std::endl; + v2 = v2 - v1; + std::cout << "v2 = v2 - v1 = " << v2 << std::endl; + v1 *= value_type (1.); + std::cout << "v1 *= 1. = " << v1 << std::endl; + v1 *= t; + std::cout << "v1 *= N = " << v1 << std::endl; + + // Unary vector operations resulting in a scalar + initialize_vector (v1); + t = ublas::sum (v1); + std::cout << "sum (v1) = " << t << std::endl; + n = ublas::norm_1 (v1); + std::cout << "norm_1 (v1) = " << n << std::endl; + n = ublas::norm_2 (v1); + std::cout << "norm_2 (v1) = " << n << std::endl; + n = ublas::norm_inf (v1); + std::cout << "norm_inf (v1) = " << n << std::endl; + + i = ublas::index_norm_inf (v1); + std::cout << "index_norm_inf (v1) = " << i << std::endl; + + // Binary vector operations resulting in a scalar + initialize_vector (v1); + initialize_vector (v2); + t = ublas::inner_prod (v1, v2); + std::cout << "inner_prod (v1, v2) = " << t << std::endl; + } + } + void operator () () const { + { + V v1 (N), v2 (N), v3 (N); + test_with (v1, v2, v3); + +#ifdef USE_RANGE + ublas::vector_range vr1 (v1, ublas::range (0, N)), + vr2 (v2, ublas::range (0, N)), + vr3 (v3, ublas::range (0, N)); + test_with (vr1, vr2, vr3); +#endif + +#ifdef USE_SLICE + ublas::vector_slice vs1 (v1, ublas::slice (0, 1, N)), + vs2 (v2, ublas::slice (0, 1, N)), + vs3 (v3, ublas::slice (0, 1, N)); + test_with (vs1, vs2, vs3); +#endif + } + } +}; + +// Test vector +void test_vector () { + std::cout << "test_vector" << std::endl; + +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_vector, ublas::bounded_array, 3> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_vector, ublas::bounded_array, 3> >, 3 > () (); +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_vector, ublas::unbounded_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_vector, ublas::unbounded_array > >, 3 > () (); +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_vector, std::vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_vector, std::vector > >, 3 > () (); +#endif +#endif +} diff --git a/test/ublas_interop/test72.cpp b/test/ublas_interop/test72.cpp new file mode 100644 index 00000000..07b1d8a0 --- /dev/null +++ b/test/ublas_interop/test72.cpp @@ -0,0 +1,165 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test7.hpp" + +// Test matrix & vector expression templates +template +struct test_my_matrix_vector { + typedef typename V::value_type value_type; + + template + void test_with (VP &v1, VP &v2, MP &m1) const { + { + // Rows and columns + initialize_matrix (m1); + for (int i = 0; i < N; ++ i) { + v1 = ublas::row (m1, i); + std::cout << "row (m, " << i << ") = " << v1 << std::endl; + v1 = ublas::column (m1, i); + std::cout << "column (m, " << i << ") = " << v1 << std::endl; + } + + // Outer product + initialize_vector (v1); + initialize_vector (v2); + m1 = ublas::outer_prod (v1, v2); + std::cout << "outer_prod (v1, v2) = " << m1 << std::endl; + + // Matrix vector product + initialize_matrix (m1); + initialize_vector (v1); + v2 = ublas::prod (m1, v1); + std::cout << "prod (m1, v1) = " << v2 << std::endl; + v2 = ublas::prod (v1, m1); + std::cout << "prod (v1, m1) = " << v2 << std::endl; + } + } + void operator () () const { + { + V v1 (N), v2 (N); + M m1 (N, N); + test_with (v1, v2, m1); + + ublas::matrix_row mr1 (m1, 0), mr2 (m1, 1); + test_with (mr1, mr2, m1); + + ublas::matrix_column mc1 (m1, 0), mc2 (m1, 1); + test_with (mc1, mc2, m1); + +#ifdef USE_RANGE + ublas::matrix_vector_range mvr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mvr2 (m1, ublas::range (0, N), ublas::range (0, N)); + test_with (mvr1, mvr2, m1); +#endif + +#ifdef USE_SLICE + ublas::matrix_vector_slice mvs1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + mvs2 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (mvs1, mvs2, m1); +#endif + } + } +}; + +// Test matrix & vector +void test_matrix_vector () { + std::cout << "test_matrix_vector" << std::endl; + +#ifdef USE_MATRIX +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::matrix, ublas::row_major, std::vector > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::matrix, ublas::row_major, std::vector > >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_VECTOR_OF_VECTOR +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::vector_of_vector, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::vector_of_vector, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3> () (); +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::vector_of_vector, ublas::row_major, ublas::unbounded_array > > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::vector_of_vector, ublas::row_major, ublas::unbounded_array > > >, 3> () (); +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::vector_of_vector, ublas::row_major, std::vector > > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::vector_of_vector, ublas::row_major, std::vector > > >, 3> () (); +#endif +#endif +#endif +} diff --git a/test/ublas_interop/test73.cpp b/test/ublas_interop/test73.cpp new file mode 100644 index 00000000..60b10bb7 --- /dev/null +++ b/test/ublas_interop/test73.cpp @@ -0,0 +1,202 @@ +// +// Copyright (c) 2000-2002 +// Joerg Walter, Mathias Koch +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +#include "test7.hpp" + +// Test matrix expression templates +template +struct test_my_matrix { + typedef typename M::value_type value_type; + + template + void test_with (MP &m1, MP &m2, MP &m3) const { + { + value_type t; + + // Copy and swap + initialize_matrix (m1); + initialize_matrix (m2); + m1 = m2; + std::cout << "m1 = m2 = " << m1 << std::endl; + m1.assign_temporary (m2); + std::cout << "m1.assign_temporary (m2) = " << m1 << std::endl; + m1.swap (m2); + std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl; + + // Zero assignment + m1 = ublas::zero_matrix (m1.size1 (), m1.size2 ()); + std::cout << "m1.zero_matrix = " << m1 << std::endl; + m1 = m2; + + // Unary matrix operations resulting in a matrix + initialize_matrix (m1); + m2 = - m1; + std::cout << "- m1 = " << m2 << std::endl; + m2 = ublas::conj (m1); + std::cout << "conj (m1) = " << m2 << std::endl; + + // Binary matrix operations resulting in a matrix + initialize_matrix (m1); + initialize_matrix (m2); + m3 = m1 + m2; + std::cout << "m1 + m2 = " << m3 << std::endl; + m3 = m1 - m2; + std::cout << "m1 - m2 = " << m3 << std::endl; + + // Scaling a matrix + t = N; + initialize_matrix (m1); + m2 = value_type (1.) * m1; + std::cout << "1. * m1 = " << m2 << std::endl; + m2 = t * m1; + std::cout << "N * m1 = " << m2 << std::endl; + initialize_matrix (m1); + m2 = m1 * value_type (1.); + std::cout << "m1 * 1. = " << m2 << std::endl; + m2 = m1 * t; + std::cout << "m1 * N = " << m2 << std::endl; + + // Some assignments + initialize_matrix (m1); + initialize_matrix (m2); + m2 += m1; + std::cout << "m2 += m1 = " << m2 << std::endl; + m2 -= m1; + std::cout << "m2 -= m1 = " << m2 << std::endl; + m2 = m2 + m1; + std::cout << "m2 = m2 + m1 = " << m2 << std::endl; + m2 = m2 - m1; + std::cout << "m2 = m1 - m1 = " << m2 << std::endl; + m1 *= value_type (1.); + std::cout << "m1 *= 1. = " << m1 << std::endl; + m1 *= t; + std::cout << "m1 *= N = " << m1 << std::endl; + + // Transpose + initialize_matrix (m1); + m2 = ublas::trans (m1); + std::cout << "trans (m1) = " << m2 << std::endl; + + // Hermitean + initialize_matrix (m1); + m2 = ublas::herm (m1); + std::cout << "herm (m1) = " << m2 << std::endl; + + // Matrix multiplication + initialize_matrix (m1); + initialize_matrix (m2); + m3 = ublas::prod (m1, m2); + std::cout << "prod (m1, m2) = " << m3 << std::endl; + } + } + void operator () () const { + { + M m1 (N, N), m2 (N, N), m3 (N, N); + test_with (m1, m2, m3); + +#ifdef USE_RANGE + ublas::matrix_range mr1 (m1, ublas::range (0, N), ublas::range (0, N)), + mr2 (m2, ublas::range (0, N), ublas::range (0, N)), + mr3 (m3, ublas::range (0, N), ublas::range (0, N)); + test_with (mr1, mr2, mr3); +#endif + +#ifdef USE_SLICE + ublas::matrix_slice ms1 (m1, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms2 (m2, ublas::slice (0, 1, N), ublas::slice (0, 1, N)), + ms3 (m3, ublas::slice (0, 1, N), ublas::slice (0, 1, N)); + test_with (ms1, ms2, ms3); +#endif + } + } +}; + +// Test matrix +void test_matrix () { + std::cout << "test_matrix" << std::endl; + +#ifdef USE_MATRIX +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3 > () (); +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3 > () (); +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_VECTOR_OF_VECTOR +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3 > () (); +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > > >, 3 > () (); +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "boost::numeric::interval, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > > >, 3 > () (); +#endif +#endif +#endif +} From c8c3610cdcde9265b2d3de43224d6296e4b61c52 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 7 Aug 2012 11:47:25 +0000 Subject: [PATCH 212/256] Fix uBlas tests and failures resulting from them. [SVN r79902] --- .../detail/mp_number_compare.hpp | 54 +++--- test/Jamfile.v2 | 2 +- test/ublas_interop/test1.hpp | 17 +- test/ublas_interop/test11.cpp | 83 ++++++++ test/ublas_interop/test12.cpp | 183 +++++++++++++++++- test/ublas_interop/test13.cpp | 162 +++++++++++++++- test/ublas_interop/test2.hpp | 12 +- test/ublas_interop/test4.hpp | 25 +++ test/ublas_interop/test5.hpp | 25 +++ test/ublas_interop/test7.hpp | 25 +++ 10 files changed, 544 insertions(+), 44 deletions(-) diff --git a/include/boost/multiprecision/detail/mp_number_compare.hpp b/include/boost/multiprecision/detail/mp_number_compare.hpp index 909d4af8..e8d53b9d 100644 --- a/include/boost/multiprecision/detail/mp_number_compare.hpp +++ b/include/boost/multiprecision/detail/mp_number_compare.hpp @@ -20,17 +20,15 @@ inline bool eval_eq(const B& a, const B& b) return a.compare(b) == 0; } template -inline typename enable_if_c<(is_arithmetic::value && is_convertible::value), bool>::type eval_eq(const B& a, const A& b) +inline bool eval_eq(const B& a, const A& b) { - B t(b); - return eval_eq(a, t); -} -template -inline typename enable_if_c<(is_arithmetic::value && !is_convertible::value), bool>::type eval_eq(const B& a, const A& b) -{ - B t; - t = b; - return eval_eq(a, t); + typedef typename mpl::if_< + is_convertible >, + mp_number, + mp_number + >::type mp_type; + mp_type t(b); + return eval_eq(a, t.backend()); } template @@ -39,17 +37,15 @@ inline bool eval_lt(const B& a, const B& b) return a.compare(b) < 0; } template -inline typename enable_if_c<(is_arithmetic::value && is_convertible::value), bool>::type eval_lt(const B& a, const A& b) +inline bool eval_lt(const B& a, const A& b) { - B t(b); - return eval_lt(a, t); -} -template -inline typename enable_if_c<(is_arithmetic::value && !is_convertible::value), bool>::type eval_lt(const B& a, const A& b) -{ - B t; - t = b; - return eval_lt(a, t); + typedef typename mpl::if_< + is_convertible >, + mp_number, + mp_number + >::type mp_type; + mp_type t(b); + return eval_lt(a, t.backend()); } template @@ -58,17 +54,15 @@ inline bool eval_gt(const B& a, const B& b) return a.compare(b) > 0; } template -inline typename enable_if_c<(is_arithmetic::value && is_convertible::value), bool>::type eval_gt(const B& a, const A& b) +inline bool eval_gt(const B& a, const A& b) { - B t(b); - return eval_gt(a, t); -} -template -inline typename enable_if_c<(is_arithmetic::value && !is_convertible::value), bool>::type eval_gt(const B& a, const A& b) -{ - B t; - t = b; - return eval_gt(a, t); + typedef typename mpl::if_< + is_convertible >, + mp_number, + mp_number + >::type mp_type; + mp_type t(b); + return eval_gt(a, t.backend()); } } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a8879efd..abb83aa9 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -749,7 +749,7 @@ run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ub run ublas_interop/test4.cpp ublas_interop/test42.cpp ublas_interop/test43.cpp ; run ublas_interop/test5.cpp ublas_interop/test52.cpp ublas_interop/test53.cpp ; run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp ; -run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp ; +#run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp ; if $(enable-specfun) diff --git a/test/ublas_interop/test1.hpp b/test/ublas_interop/test1.hpp index f6627dce..9d0731cb 100644 --- a/test/ublas_interop/test1.hpp +++ b/test/ublas_interop/test1.hpp @@ -13,8 +13,6 @@ #ifndef TEST1_H #define TEST1_H -#include - #ifdef _MSC_VER # pragma warning(disable:4800 4996) #endif @@ -26,7 +24,21 @@ typedef boost::multiprecision::mp_number #include #include @@ -42,4 +54,5 @@ void test_vector (); void test_matrix_vector (); void test_matrix (); + #endif diff --git a/test/ublas_interop/test11.cpp b/test/ublas_interop/test11.cpp index 70e77611..e874d65e 100644 --- a/test/ublas_interop/test11.cpp +++ b/test/ublas_interop/test11.cpp @@ -167,16 +167,99 @@ struct test_my_vector { void test_vector () { std::cout << "test_vector" << std::endl; +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded_array" << std::endl; test_my_vector >, 3 > () (); +#endif +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_vector >, 3 > () (); +#endif +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_vector, ublas::bounded_array, 3> >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_vector, ublas::bounded_array, 3> >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, unbounded_array" << std::endl; test_my_vector >, 3 > () (); +#endif +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_vector, ublas::unbounded_array > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_vector, ublas::unbounded_array > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT std::cout << "mp_test_type, std::vector" << std::endl; test_my_vector >, 3 > () (); +#endif +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_vector >, 3 > () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_vector, std::vector > >, 3 > () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_vector, std::vector > >, 3 > () (); +#endif +#endif +#endif + +#ifdef USE_BOUNDED_VECTOR +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded" << std::endl; test_my_vector, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded" << std::endl; + test_my_vector, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded" << std::endl; + test_my_vector, 3>, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded" << std::endl; + test_my_vector, 3>, 3> () (); +#endif +#endif +#endif } diff --git a/test/ublas_interop/test12.cpp b/test/ublas_interop/test12.cpp index fac3634f..7059fb9e 100644 --- a/test/ublas_interop/test12.cpp +++ b/test/ublas_interop/test12.cpp @@ -75,28 +75,203 @@ struct test_my_matrix_vector { void test_matrix_vector () { std::cout << "test_matrix_vector" << std::endl; +#ifdef USE_MATRIX +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded_array" << std::endl; test_my_matrix_vector >, ublas::matrix >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::matrix >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, unbounded_array" << std::endl; test_my_matrix_vector >, ublas::matrix >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::matrix >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT std::cout << "mp_test_type, std::vector" << std::endl; test_my_matrix_vector >, ublas::matrix >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::matrix >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::matrix, ublas::row_major, std::vector > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::matrix, ublas::row_major, std::vector > >, 3> () (); +#endif +#endif +#endif +#endif + +#ifdef USE_BOUNDED_MATRIX +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded" << std::endl; test_my_matrix_vector, ublas::bounded_matrix, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded" << std::endl; + test_my_matrix_vector, + ublas::bounded_matrix, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded" << std::endl; + test_my_matrix_vector, 3>, + ublas::bounded_matrix, 3, 3>, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded" << std::endl; + test_my_matrix_vector, 3>, + ublas::bounded_matrix, 3, 3>, 3> () (); +#endif +#endif +#endif + +#ifdef USE_VECTOR_OF_VECTOR +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded_array" << std::endl; test_my_matrix_vector >, ublas::vector_of_vector, 3 + 1> >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix_vector >, + ublas::vector_of_vector, 3 + 1> >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::vector_of_vector, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix_vector, ublas::bounded_array, 3> >, + ublas::vector_of_vector, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, unbounded_array" << std::endl; test_my_matrix_vector >, ublas::vector_of_vector > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix_vector >, + ublas::vector_of_vector > >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::vector_of_vector, ublas::row_major, ublas::unbounded_array > > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix_vector, ublas::unbounded_array > >, + ublas::vector_of_vector, ublas::row_major, ublas::unbounded_array > > >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT std::cout << "mp_test_type, std::vector" << std::endl; - /* - // This fails with an internal std lib assersion, even when mp_test_type is double, - // looks like a bug in the uBlas test code... test_my_matrix_vector >, - ublas::vector_of_vector > >, 3> () ();*/ + ublas::vector_of_vector > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix_vector >, + ublas::vector_of_vector > >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::vector_of_vector, ublas::row_major, std::vector > > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix_vector, std::vector > >, + ublas::vector_of_vector, ublas::row_major, std::vector > > >, 3> () (); +#endif +#endif +#endif +#endif } diff --git a/test/ublas_interop/test13.cpp b/test/ublas_interop/test13.cpp index 2e8432a5..d2f80377 100644 --- a/test/ublas_interop/test13.cpp +++ b/test/ublas_interop/test13.cpp @@ -147,21 +147,175 @@ struct test_my_matrix { void test_matrix () { std::cout << "test_matrix" << std::endl; +#ifdef USE_MATRIX +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded_array" << std::endl; test_my_matrix >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3 * 3> >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, unbounded_array" << std::endl; test_my_matrix >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT std::cout << "mp_test_type, std::vector" << std::endl; test_my_matrix >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > >, 3> () (); +#endif +#endif +#endif +#endif + +#ifdef USE_BOUNDED_MATRIX +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded" << std::endl; test_my_matrix, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded" << std::endl; + test_my_matrix, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded" << std::endl; + test_my_matrix, 3, 3>, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded" << std::endl; + test_my_matrix, 3, 3>, 3> () (); +#endif +#endif +#endif + +#ifdef USE_VECTOR_OF_VECTOR +#ifdef USE_BOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, bounded_array" << std::endl; test_my_matrix, 3 + 1> >, 3> () (); - /* - // This fails with an internal std lib assersion, even when mp_test_type is double, - // looks like a bug in the uBlas test code... +#endif + +#ifdef USE_DOUBLE + std::cout << "double, bounded_array" << std::endl; + test_my_matrix, 3 + 1> >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, bounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::bounded_array, 3>, 3 + 1> >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_UNBOUNDED_ARRAY +#ifdef USE_FLOAT std::cout << "mp_test_type, unbounded_array" << std::endl; test_my_matrix > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, unbounded_array" << std::endl; + test_my_matrix > >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, unbounded_array" << std::endl; + test_my_matrix, ublas::row_major, ublas::unbounded_array > > >, 3> () (); +#endif +#endif +#endif + +#ifdef USE_STD_VECTOR +#ifdef USE_FLOAT std::cout << "mp_test_type, std::vector" << std::endl; - test_my_matrix > >, 3> () ();*/ + test_my_matrix > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "double, std::vector" << std::endl; + test_my_matrix > >, 3> () (); +#endif + +#ifdef USE_STD_COMPLEX +#ifdef USE_FLOAT + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > > >, 3> () (); +#endif + +#ifdef USE_DOUBLE + std::cout << "std::complex, std::vector" << std::endl; + test_my_matrix, ublas::row_major, std::vector > > >, 3> () (); +#endif +#endif +#endif +#endif } diff --git a/test/ublas_interop/test2.hpp b/test/ublas_interop/test2.hpp index 0009b832..b58c6177 100644 --- a/test/ublas_interop/test2.hpp +++ b/test/ublas_interop/test2.hpp @@ -12,7 +12,6 @@ #ifndef TEST2_H #define TEST2_H - #ifdef _MSC_VER # pragma warning(disable:4800 4996) #endif @@ -25,11 +24,18 @@ typedef boost::multiprecision::mp_number diff --git a/test/ublas_interop/test4.hpp b/test/ublas_interop/test4.hpp index fc5b48cb..20194f7a 100644 --- a/test/ublas_interop/test4.hpp +++ b/test/ublas_interop/test4.hpp @@ -13,6 +13,31 @@ #ifndef TEST4_H #define TEST4_H +#ifdef _MSC_VER +# pragma warning(disable:4800 4996) +#endif + +#include + +typedef boost::multiprecision::mp_number, false> mp_test_type; +//typedef double mp_test_type; + +#define USE_RANGE +#define USE_SLICE +#define USE_FLOAT +#define USE_UNBOUNDED_ARRAY +#define USE_STD_VECTOR +#define USE_BOUNDED_VECTOR USE_MATRIX +#define USE_UNBOUNDED_ARRAY +#define USE_MAP_ARRAY +#define USE_STD_MAP +#define USE_MAPPED_VECTOR +#define USE_COMPRESSED_VECTOR +#define USE_COORDINATE_VECTOR +#define USE_MAPPED_MATRIX +#define USE_COMPRESSED_MATRIX +#define USE_COORDINATE_MATRIX + #include #include diff --git a/test/ublas_interop/test5.hpp b/test/ublas_interop/test5.hpp index a13dfa2e..cd98e665 100644 --- a/test/ublas_interop/test5.hpp +++ b/test/ublas_interop/test5.hpp @@ -13,6 +13,31 @@ #ifndef TEST5_H #define TEST5_H +#ifdef _MSC_VER +# pragma warning(disable:4800 4996) +#endif + +#include + +typedef boost::multiprecision::mp_number, false> mp_test_type; +//typedef double mp_test_type; + +#define USE_RANGE +#define USE_SLICE +#define USE_FLOAT +#define USE_UNBOUNDED_ARRAY +#define USE_STD_VECTOR +#define USE_BOUNDED_VECTOR USE_MATRIX +#define USE_UNBOUNDED_ARRAY +#define USE_MAP_ARRAY +#define USE_STD_MAP +#define USE_MAPPED_VECTOR +#define USE_COMPRESSED_VECTOR +#define USE_COORDINATE_VECTOR +#define USE_MAPPED_MATRIX +#define USE_COMPRESSED_MATRIX +#define USE_COORDINATE_MATRIX + #include #include diff --git a/test/ublas_interop/test7.hpp b/test/ublas_interop/test7.hpp index 5dbae1fc..4990642f 100644 --- a/test/ublas_interop/test7.hpp +++ b/test/ublas_interop/test7.hpp @@ -13,6 +13,31 @@ #ifndef TEST7_H #define TEST7_H +#ifdef _MSC_VER +# pragma warning(disable:4800 4996) +#endif + +#include + +typedef boost::multiprecision::mp_number, false> mp_test_type; +//typedef double mp_test_type; + +#define USE_RANGE +#define USE_SLICE +#define USE_FLOAT +#define USE_UNBOUNDED_ARRAY +#define USE_STD_VECTOR +#define USE_BOUNDED_VECTOR USE_MATRIX +#define USE_UNBOUNDED_ARRAY +#define USE_MAP_ARRAY +#define USE_STD_MAP +#define USE_MAPPED_VECTOR +#define USE_COMPRESSED_VECTOR +#define USE_COORDINATE_VECTOR +#define USE_MAPPED_MATRIX +#define USE_COMPRESSED_MATRIX +#define USE_COORDINATE_MATRIX + #include #include From 3bcbb056e7b708e043360413ef3de178f102190d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 7 Aug 2012 17:55:32 +0000 Subject: [PATCH 213/256] Add better error checking for moved-from types. [SVN r79913] --- include/boost/multiprecision/gmp.hpp | 180 ++++++++++++++++++--- include/boost/multiprecision/mp_number.hpp | 3 +- include/boost/multiprecision/mpfr.hpp | 44 ++++- include/boost/multiprecision/tommath.hpp | 36 ++++- test/test_move.cpp | 52 +++++- 5 files changed, 279 insertions(+), 36 deletions(-) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 4cf0aa42..8baab295 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -56,7 +56,8 @@ struct gmp_float_imp // things go badly wrong!! // mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); - mpf_set(m_data, o.m_data); + if(o.m_data[0]._mp_d) + mpf_set(m_data, o.m_data); } #ifndef BOOST_NO_RVALUE_REFERENCES gmp_float_imp(gmp_float_imp&& o) BOOST_NOEXCEPT @@ -67,7 +68,10 @@ struct gmp_float_imp #endif gmp_float_imp& operator = (const gmp_float_imp& o) { - mpf_set(m_data, o.m_data); + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + if(o.m_data[0]._mp_d) + mpf_set(m_data, o.m_data); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -79,6 +83,8 @@ struct gmp_float_imp #endif gmp_float_imp& operator = (unsigned long long i) { + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpf_t t; @@ -99,6 +105,8 @@ struct gmp_float_imp gmp_float_imp& operator = (long long i) { BOOST_MP_USING_ABS + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); bool neg = i < 0; *this = static_cast(abs(i)); if(neg) @@ -107,16 +115,22 @@ struct gmp_float_imp } gmp_float_imp& operator = (unsigned long i) BOOST_NOEXCEPT { + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpf_set_ui(m_data, i); return *this; } gmp_float_imp& operator = (long i) BOOST_NOEXCEPT { + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpf_set_si(m_data, i); return *this; } gmp_float_imp& operator = (double d) BOOST_NOEXCEPT { + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpf_set_d(m_data, d); return *this; } @@ -126,6 +140,9 @@ struct gmp_float_imp using std::ldexp; using std::floor; + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + if (a == 0) { mpf_set_si(m_data, 0); return *this; @@ -168,6 +185,8 @@ struct gmp_float_imp } gmp_float_imp& operator = (const char* s) { + if(m_data[0]._mp_d == 0) + mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); if(0 != mpf_set_str(m_data, s, 10)) BOOST_THROW_EXCEPTION(std::runtime_error(std::string("The string \"") + s + std::string("\"could not be interpreted as a valid floating point number."))); return *this; @@ -178,6 +197,8 @@ struct gmp_float_imp } std::string str(std::streamsize digits, std::ios_base::fmtflags f)const { + BOOST_ASSERT(m_data[0]._mp_d); + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; std::streamsize org_digits(digits); @@ -278,18 +299,22 @@ struct gmp_float_imp } void negate() BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mp_d); mpf_neg(m_data, m_data); } int compare(const gmp_float& o)const BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mp_d && o.m_data[0]._mp_d); return mpf_cmp(m_data, o.m_data); } int compare(long i)const BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mp_d); return mpf_cmp_si(m_data, i); } int compare(unsigned long i)const BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mp_d); return mpf_cmp_ui(m_data, i); } template @@ -299,8 +324,16 @@ struct gmp_float_imp d = v; return compare(d); } - mpf_t& data() BOOST_NOEXCEPT { return m_data; } - const mpf_t& data()const BOOST_NOEXCEPT { return m_data; } + mpf_t& data() BOOST_NOEXCEPT + { + BOOST_ASSERT(m_data[0]._mp_d); + return m_data; + } + const mpf_t& data()const BOOST_NOEXCEPT + { + BOOST_ASSERT(m_data[0]._mp_d); + return m_data; + } protected: mpf_t m_data; static unsigned& get_default_precision() BOOST_NOEXCEPT @@ -363,16 +396,22 @@ struct gmp_float : public detail::gmp_float_imp gmp_float& operator=(const gmp_rational& o); gmp_float& operator=(const mpf_t& val) BOOST_NOEXCEPT { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set(this->m_data, val); return *this; } gmp_float& operator=(const mpz_t& val) BOOST_NOEXCEPT { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set_z(this->m_data, val); return *this; } gmp_float& operator=(const mpq_t& val) BOOST_NOEXCEPT { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set_q(this->m_data, val); return *this; } @@ -439,6 +478,8 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> template gmp_float& operator=(const gmp_float& o) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set(this->m_data, o.data()); return *this; } @@ -446,16 +487,22 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> gmp_float& operator=(const gmp_rational& o); gmp_float& operator=(const mpf_t& val) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set(this->m_data, val); return *this; } gmp_float& operator=(const mpz_t& val) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set_z(this->m_data, val); return *this; } gmp_float& operator=(const mpq_t& val) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set_q(this->m_data, val); return *this; } @@ -906,7 +953,10 @@ struct gmp_int } gmp_int(const gmp_int& o) { - mpz_init_set(m_data, o.m_data); + if(o.m_data[0]._mp_d) + mpz_init_set(m_data, o.m_data); + else + mpz_init(this->m_data); } #ifndef BOOST_NO_RVALUE_REFERENCES gmp_int(gmp_int&& o) BOOST_NOEXCEPT @@ -938,21 +988,21 @@ struct gmp_int gmp_int(const gmp_rational& o); gmp_int& operator = (const gmp_int& o) { - mpz_set(m_data, o.m_data); + if(o.m_data[0]._mp_d) + mpz_set(m_data, o.m_data); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES gmp_int& operator = (gmp_int&& o) BOOST_NOEXCEPT { - if(m_data[0]._mp_d) - mpz_clear(m_data); - m_data[0] = o.m_data[0]; - o.m_data[0]._mp_d = 0; + mpz_swap(m_data, o.m_data); return *this; } #endif gmp_int& operator = (unsigned long long i) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpz_t t; @@ -973,6 +1023,8 @@ struct gmp_int gmp_int& operator = (long long i) { BOOST_MP_USING_ABS + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); bool neg = i < 0; *this = static_cast(abs(i)); if(neg) @@ -981,16 +1033,22 @@ struct gmp_int } gmp_int& operator = (unsigned long i) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set_ui(m_data, i); return *this; } gmp_int& operator = (long i) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set_si(m_data, i); return *this; } gmp_int& operator = (double d) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set_d(m_data, d); return *this; } @@ -1000,6 +1058,9 @@ struct gmp_int using std::ldexp; using std::floor; + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); + if (a == 0) { mpz_set_si(m_data, 0); return *this; @@ -1042,6 +1103,8 @@ struct gmp_int } gmp_int& operator = (const char* s) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); std::size_t n = s ? std::strlen(s) : 0; int radix = 10; if(n && (*s == '0')) @@ -1069,22 +1132,30 @@ struct gmp_int } gmp_int& operator=(const mpf_t& val) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set_f(this->m_data, val); return *this; } gmp_int& operator=(const mpz_t& val) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set(this->m_data, val); return *this; } gmp_int& operator=(const mpq_t& val) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set_q(this->m_data, val); return *this; } template gmp_int& operator=(const gmp_float& o) { + if(m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set_f(this->m_data, o.data()); return *this; } @@ -1095,6 +1166,8 @@ struct gmp_int } std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const { + BOOST_ASSERT(m_data[0]._mp_d); + int base = 10; if((f & std::ios_base::oct) == std::ios_base::oct) base = 8; @@ -1131,18 +1204,22 @@ struct gmp_int } void negate() { + BOOST_ASSERT(m_data[0]._mp_d); mpz_neg(m_data, m_data); } int compare(const gmp_int& o)const { + BOOST_ASSERT(m_data[0]._mp_d && o.m_data[0]._mp_d); return mpz_cmp(m_data, o.m_data); } int compare(long i)const { + BOOST_ASSERT(m_data[0]._mp_d); return mpz_cmp_si(m_data, i); } int compare(unsigned long i)const { + BOOST_ASSERT(m_data[0]._mp_d); return mpz_cmp_ui(m_data, i); } template @@ -1152,8 +1229,16 @@ struct gmp_int d = v; return compare(d); } - mpz_t& data() { return m_data; } - const mpz_t& data()const { return m_data; } + mpz_t& data() + { + BOOST_ASSERT(m_data[0]._mp_d); + return m_data; + } + const mpz_t& data()const + { + BOOST_ASSERT(m_data[0]._mp_d); + return m_data; + } protected: mpz_t m_data; }; @@ -1545,7 +1630,8 @@ struct gmp_rational gmp_rational(const gmp_rational& o) { mpq_init(m_data); - mpq_set(m_data, o.m_data); + if(o.m_data[0]._mp_num._mp_d) + mpq_set(m_data, o.m_data); } gmp_rational(const gmp_int& o) { @@ -1557,8 +1643,8 @@ struct gmp_rational { m_data[0]._mp_num = o.data()[0]._mp_num; m_data[0]._mp_den = o.data()[0]._mp_den; - o.data()[0]._mp_num._mp_d = 0; - o.data()[0]._mp_den._mp_d = 0; + o.m_data[0]._mp_num._mp_d = 0; + o.m_data[0]._mp_den._mp_d = 0; } #endif gmp_rational(mpq_t o) @@ -1573,21 +1659,21 @@ struct gmp_rational } gmp_rational& operator = (const gmp_rational& o) { - mpq_set(m_data, o.m_data); + if(o.m_data[0]._mp_num._mp_d) + mpq_set(m_data, o.m_data); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES gmp_rational& operator = (gmp_rational&& o) BOOST_NOEXCEPT { - m_data[0]._mp_num = o.data()[0]._mp_num; - m_data[0]._mp_den = o.data()[0]._mp_den; - o.data()[0]._mp_num._mp_d = 0; - o.data()[0]._mp_den._mp_d = 0; + mpq_swap(m_data, o.m_data); return *this; } #endif gmp_rational& operator = (unsigned long long i) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpq_t t; @@ -1608,6 +1694,8 @@ struct gmp_rational gmp_rational& operator = (long long i) { BOOST_MP_USING_ABS + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); bool neg = i < 0; *this = static_cast(abs(i)); if(neg) @@ -1616,16 +1704,22 @@ struct gmp_rational } gmp_rational& operator = (unsigned long i) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); mpq_set_ui(m_data, i, 1); return *this; } gmp_rational& operator = (long i) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); mpq_set_si(m_data, i, 1); return *this; } gmp_rational& operator = (double d) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); mpq_set_d(m_data, d); return *this; } @@ -1637,6 +1731,9 @@ struct gmp_rational using default_ops::eval_add; using default_ops::eval_subtract; + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); + if (a == 0) { mpq_set_si(m_data, 0, 1); return *this; @@ -1679,22 +1776,30 @@ struct gmp_rational } gmp_rational& operator = (const char* s) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); if(0 != mpq_set_str(m_data, s, 10)) BOOST_THROW_EXCEPTION(std::runtime_error(std::string("The string \"") + s + std::string("\"could not be interpreted as a valid rational number."))); return *this; } gmp_rational& operator=(const gmp_int& o) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); mpq_set_z(m_data, o.data()); return *this; } gmp_rational& operator=(const mpq_t& o) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); mpq_set(m_data, o); return *this; } gmp_rational& operator=(const mpz_t& o) { + if(m_data[0]._mp_den._mp_d == 0) + mpq_init(m_data); mpq_set_z(m_data, o); return *this; } @@ -1704,6 +1809,7 @@ struct gmp_rational } std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags /*f*/)const { + BOOST_ASSERT(m_data[0]._mp_num._mp_d); // TODO make a better job of this including handling of f!! void *(*alloc_func_ptr) (size_t); void *(*realloc_func_ptr) (void *, size_t, size_t); @@ -1721,10 +1827,12 @@ struct gmp_rational } void negate() { + BOOST_ASSERT(m_data[0]._mp_num._mp_d); mpq_neg(m_data, m_data); } int compare(const gmp_rational& o)const { + BOOST_ASSERT(m_data[0]._mp_num._mp_d && o.m_data[0]._mp_num._mp_d); return mpq_cmp(m_data, o.m_data); } template @@ -1736,14 +1844,24 @@ struct gmp_rational } int compare(unsigned long v)const { + BOOST_ASSERT(m_data[0]._mp_num._mp_d); return mpq_cmp_ui(m_data, v, 1); } int compare(long v)const { + BOOST_ASSERT(m_data[0]._mp_num._mp_d); return mpq_cmp_si(m_data, v, 1); } - mpq_t& data() { return m_data; } - const mpq_t& data()const { return m_data; } + mpq_t& data() + { + BOOST_ASSERT(m_data[0]._mp_num._mp_d); + return m_data; + } + const mpq_t& data()const + { + BOOST_ASSERT(m_data[0]._mp_num._mp_d); + return m_data; + } protected: mpq_t m_data; }; @@ -1870,37 +1988,43 @@ template template inline gmp_float::gmp_float(const gmp_float& o) { - mpf_init2(this->m_data, ((Digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); mpf_set(this->m_data, o.data()); } template inline gmp_float::gmp_float(const gmp_int& o) { - mpf_init2(this->m_data, ((Digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); mpf_set_z(this->data(), o.data()); } template inline gmp_float::gmp_float(const gmp_rational& o) { - mpf_init2(this->m_data, ((Digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); mpf_set_q(this->data(), o.data()); } template template inline gmp_float& gmp_float::operator=(const gmp_float& o) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); mpf_set(this->m_data, o.data()); return *this; } template inline gmp_float& gmp_float::operator=(const gmp_int& o) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); mpf_set_z(this->data(), o.data()); return *this; } template inline gmp_float& gmp_float::operator=(const gmp_rational& o) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); mpf_set_q(this->data(), o.data()); return *this; } @@ -1916,11 +2040,15 @@ inline gmp_float<0>::gmp_float(const gmp_rational& o) } inline gmp_float<0>& gmp_float<0>::operator=(const gmp_int& o) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((this->get_default_precision() + 1) * 1000L) / 301L); mpf_set_z(this->data(), o.data()); return *this; } inline gmp_float<0>& gmp_float<0>::operator=(const gmp_rational& o) { + if(this->m_data[0]._mp_d == 0) + mpf_init2(this->m_data, ((this->get_default_precision() + 1) * 1000L) / 301L); mpf_set_q(this->data(), o.data()); return *this; } @@ -1931,6 +2059,8 @@ inline gmp_int::gmp_int(const gmp_rational& o) } inline gmp_int& gmp_int::operator=(const gmp_rational& o) { + if(this->m_data[0]._mp_d == 0) + mpz_init(this->m_data); mpz_set_q(this->m_data, o.data()); return *this; } diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index f788940c..8b6df37f 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -28,8 +28,9 @@ namespace boost{ namespace multiprecision{ #ifdef BOOST_MSVC // warning C4127: conditional expression is constant +// warning C4714: function marked as __forceinline not inlined #pragma warning(push) -#pragma warning(disable:4127) +#pragma warning(disable:4127 4714) #endif template diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index a847c5d1..63f98959 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -40,7 +40,8 @@ struct mpfr_float_imp mpfr_float_imp(const mpfr_float_imp& o) { mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); - mpfr_set(m_data, o.m_data, GMP_RNDN); + if(o.m_data[0]._mpfr_d) + mpfr_set(m_data, o.m_data, GMP_RNDN); } #ifndef BOOST_NO_RVALUE_REFERENCES mpfr_float_imp(mpfr_float_imp&& o) BOOST_NOEXCEPT @@ -51,7 +52,10 @@ struct mpfr_float_imp #endif mpfr_float_imp& operator = (const mpfr_float_imp& o) BOOST_NOEXCEPT { - mpfr_set(m_data, o.m_data, GMP_RNDN); + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + if(o.m_data[0]._mpfr_d) + mpfr_set(m_data, o.m_data, GMP_RNDN); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -64,17 +68,23 @@ struct mpfr_float_imp #ifdef _MPFR_H_HAVE_INTMAX_T mpfr_float_imp& operator = (unsigned long long i) BOOST_NOEXCEPT { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpfr_set_uj(m_data, i, GMP_RNDN); return *this; } mpfr_float_imp& operator = (long long i) BOOST_NOEXCEPT { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpfr_set_sj(m_data, i, GMP_RNDN); return *this; } #else mpfr_float_imp& operator = (unsigned long long i) { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpfr_t t; @@ -95,6 +105,8 @@ struct mpfr_float_imp mpfr_float_imp& operator = (long long i) { BOOST_MP_USING_ABS + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); bool neg = i < 0; *this = static_cast(abs(i)); if(neg) @@ -104,26 +116,36 @@ struct mpfr_float_imp #endif mpfr_float_imp& operator = (unsigned long i) BOOST_NOEXCEPT { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpfr_set_ui(m_data, i, GMP_RNDN); return *this; } mpfr_float_imp& operator = (long i) BOOST_NOEXCEPT { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpfr_set_si(m_data, i, GMP_RNDN); return *this; } mpfr_float_imp& operator = (double d) BOOST_NOEXCEPT { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpfr_set_d(m_data, d, GMP_RNDN); return *this; } mpfr_float_imp& operator = (long double a) BOOST_NOEXCEPT { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); mpfr_set_ld(m_data, a, GMP_RNDN); return *this; } mpfr_float_imp& operator = (const char* s) { + if(m_data[0]._mpfr_d == 0) + mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); if(mpfr_set_str(m_data, s, 10, GMP_RNDN) != 0) { BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Unable to parse string \"") + s + std::string("\"as a valid floating point number."))); @@ -136,6 +158,8 @@ struct mpfr_float_imp } std::string str(std::streamsize digits, std::ios_base::fmtflags f)const { + BOOST_ASSERT(m_data[0]._mpfr_d); + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; @@ -246,18 +270,22 @@ struct mpfr_float_imp } void negate() BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mpfr_d); mpfr_neg(m_data, m_data, GMP_RNDN); } int compare(const mpfr_float_backend& o)const BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mpfr_d && o.m_data[0]._mpfr_d); return mpfr_cmp(m_data, o.m_data); } int compare(long i)const BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mpfr_d); return mpfr_cmp_si(m_data, i); } int compare(unsigned long i)const BOOST_NOEXCEPT { + BOOST_ASSERT(m_data[0]._mpfr_d); return mpfr_cmp_ui(m_data, i); } template @@ -267,8 +295,16 @@ struct mpfr_float_imp d = v; return compare(d); } - mpfr_t& data() BOOST_NOEXCEPT { return m_data; } - const mpfr_t& data()const BOOST_NOEXCEPT { return m_data; } + mpfr_t& data() BOOST_NOEXCEPT + { + BOOST_ASSERT(m_data[0]._mpfr_d); + return m_data; + } + const mpfr_t& data()const BOOST_NOEXCEPT + { + BOOST_ASSERT(m_data[0]._mpfr_d); + return m_data; + } protected: mpfr_t m_data; static unsigned& get_default_precision() BOOST_NOEXCEPT diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 21525be5..6f137936 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -54,18 +54,22 @@ struct tommath_int } tommath_int& operator = (tommath_int&& o) { - m_data = o.m_data; - o.m_data.dp = 0; + mp_exch(&m_data, &o.data()); return *this; } #endif tommath_int& operator = (const tommath_int& o) { - detail::check_tommath_result(mp_copy(const_cast< ::mp_int*>(&o.m_data), &m_data)); + if(m_data.dp == 0) + detail::check_tommath_result(mp_init(&m_data)); + if(o.m_data.dp) + detail::check_tommath_result(mp_copy(const_cast< ::mp_int*>(&o.m_data), &m_data)); return *this; } tommath_int& operator = (unsigned long long i) { + if(m_data.dp == 0) + detail::check_tommath_result(mp_init(&m_data)); unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; ::mp_int t; @@ -86,6 +90,8 @@ struct tommath_int tommath_int& operator = (long long i) { BOOST_MP_USING_ABS + if(m_data.dp == 0) + detail::check_tommath_result(mp_init(&m_data)); bool neg = i < 0; *this = static_cast(abs(i)); if(neg) @@ -99,11 +105,15 @@ struct tommath_int // tommath_int& operator = (boost::uint32_t i) { + if(m_data.dp == 0) + detail::check_tommath_result(mp_init(&m_data)); detail::check_tommath_result((mp_set_int(&m_data, i))); return *this; } tommath_int& operator = (boost::int32_t i) { + if(m_data.dp == 0) + detail::check_tommath_result(mp_init(&m_data)); bool neg = i < 0; *this = static_cast(std::abs(i)); if(neg) @@ -116,6 +126,9 @@ struct tommath_int using std::ldexp; using std::floor; + if(m_data.dp == 0) + detail::check_tommath_result(mp_init(&m_data)); + if (a == 0) { detail::check_tommath_result(mp_set_int(&m_data, 0)); return *this; @@ -175,6 +188,8 @@ struct tommath_int // using default_ops::eval_multiply; using default_ops::eval_add; + if(m_data.dp == 0) + detail::check_tommath_result(mp_init(&m_data)); std::size_t n = s ? std::strlen(s) : 0; *this = static_cast(0u); unsigned radix = 10; @@ -275,6 +290,7 @@ struct tommath_int } std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const { + BOOST_ASSERT(m_data.dp); int base = 10; if((f & std::ios_base::oct) == std::ios_base::oct) base = 8; @@ -307,10 +323,12 @@ struct tommath_int } void negate() { + BOOST_ASSERT(m_data.dp); mp_neg(&m_data, &m_data); } int compare(const tommath_int& o)const { + BOOST_ASSERT(m_data.dp && o.m_data.dp); return mp_cmp(const_cast< ::mp_int*>(&m_data), const_cast< ::mp_int*>(&o.m_data)); } template @@ -322,8 +340,16 @@ struct tommath_int d = v; return t.compare(d); } - ::mp_int& data() { return m_data; } - const ::mp_int& data()const { return m_data; } + ::mp_int& data() + { + BOOST_ASSERT(m_data.dp); + return m_data; + } + const ::mp_int& data()const + { + BOOST_ASSERT(m_data.dp); + return m_data; + } void swap(tommath_int& o)BOOST_NOEXCEPT { mp_exch(&m_data, &o.data()); diff --git a/test/test_move.cpp b/test/test_move.cpp index f67e497b..1ce4a4cf 100644 --- a/test/test_move.cpp +++ b/test/test_move.cpp @@ -71,6 +71,19 @@ void do_something(const T&) { } +template +void test_std_lib() +{ + std::vector v; + for(unsigned i = 0; i < 100; ++i) + v.insert(v.begin(), i); + + T a(2), b(3); + std::swap(a, b); + BOOST_TEST(a == 3); + BOOST_TEST(b == 2); +} + int main() { @@ -83,6 +96,7 @@ int main() #ifdef TEST_MPFR { + test_std_lib(); mpfr_float_50 a = 2; BOOST_TEST(allocation_count); // sanity check that we are tracking allocations allocation_count = 0; @@ -112,10 +126,16 @@ int main() d = std::move(e); BOOST_TEST(allocation_count == 0); BOOST_TEST(d == 3); + e = 2; + BOOST_TEST(e == 2); + d = std::move(e); + e = d; + BOOST_TEST(e == d); } #endif #ifdef TEST_GMP { + test_std_lib(); mpf_float_50 a = 2; BOOST_TEST(allocation_count); // sanity check that we are tracking allocations allocation_count = 0; @@ -145,8 +165,14 @@ int main() d = std::move(e); BOOST_TEST(allocation_count == 0); BOOST_TEST(d == 3); + e = 2; + BOOST_TEST(e == 2); + d = std::move(e); + e = d; + BOOST_TEST(e == d); } { + test_std_lib(); mpz_int a = 2; BOOST_TEST(allocation_count); // sanity check that we are tracking allocations allocation_count = 0; @@ -163,8 +189,14 @@ int main() allocation_count = 0; e = std::move(d); BOOST_TEST(allocation_count == 0); + e = 2; + BOOST_TEST(e == 2); + d = std::move(e); + e = d; + BOOST_TEST(e == d); } { + test_std_lib(); mpq_rational a = 2; BOOST_TEST(allocation_count); // sanity check that we are tracking allocations allocation_count = 0; @@ -180,15 +212,22 @@ int main() allocation_count = 0; e = std::move(d); BOOST_TEST(allocation_count == 0); + d = 2; + BOOST_TEST(d == 2); + d = std::move(e); + e = d; + BOOST_TEST(e == d); } #endif #ifdef TEST_TOMMATH { + test_std_lib(); tom_int a = 2; void const* p = a.backend().data().dp; tom_int b = std::move(a); BOOST_TEST(b.backend().data().dp == p); - BOOST_TEST(a.backend().data().dp == 0); + // We can't test this, as it will assert inside data(): + //BOOST_TEST(a.backend().data().dp == 0); // // Move assign: @@ -201,10 +240,16 @@ int main() BOOST_TEST(p != e.backend().data().dp); e = std::move(d); BOOST_TEST(e.backend().data().dp == p); + d = 2; + BOOST_TEST(d == 2); + d = std::move(e); + e = d; + BOOST_TEST(e == d); } #endif #ifdef TEST_CPP_INT { + test_std_lib(); cpp_int a = 2; a <<= 1000; // Force dynamic allocation. void const* p = a.backend().limbs(); @@ -223,6 +268,11 @@ int main() BOOST_TEST(p != e.backend().limbs()); e = std::move(d); BOOST_TEST(e.backend().limbs() == p); + d = 2; + BOOST_TEST(d == 2); + d = std::move(e); + e = d; + BOOST_TEST(e == d); } #endif return boost::report_errors(); From 8807532ee456d022216e574d0a2abe2077d8b137 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 8 Aug 2012 16:12:33 +0000 Subject: [PATCH 214/256] Added explicit conversion operators. Moved some files into /detail/ [SVN r79926] --- include/boost/multiprecision/cpp_int.hpp | 2 +- include/boost/multiprecision/detail/default_ops.hpp | 5 +++++ .../multiprecision/{ => detail}/integer_ops.hpp | 0 include/boost/multiprecision/gmp.hpp | 2 +- include/boost/multiprecision/mp_number.hpp | 7 +++++++ include/boost/multiprecision/tommath.hpp | 2 +- performance/arithmetic_backend.hpp | 2 +- test/test_arithmetic.cpp | 12 ++++++++++++ 8 files changed, 28 insertions(+), 4 deletions(-) rename include/boost/multiprecision/{ => detail}/integer_ops.hpp (100%) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 92672f52..3873720b 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index e0e621d6..bf56825b 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -611,6 +611,11 @@ inline void eval_convert_to(terminal* result, const B& backend) result->value = boost::lexical_cast(backend.str(0, std::ios_base::fmtflags(0))); } +template +inline void eval_convert_to(std::string* result, const B& backend) +{ + *result = backend.str(0, std::ios_base::fmtflags(0)); +} // // Functions: // diff --git a/include/boost/multiprecision/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp similarity index 100% rename from include/boost/multiprecision/integer_ops.hpp rename to include/boost/multiprecision/detail/integer_ops.hpp diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 8baab295..bc5549e2 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -7,7 +7,7 @@ #define BOOST_MATH_ER_GMP_BACKEND_HPP #include -#include +#include #include #include #include diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/mp_number.hpp index 8b6df37f..704cec15 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/mp_number.hpp @@ -534,6 +534,13 @@ public: eval_convert_to(&result, m_backend); return result; } +#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +template +explicit operator T()const +{ + return this->template convert_to(); +} +#endif // // Default precision: // diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 6f137936..eee4b341 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include #include diff --git a/performance/arithmetic_backend.hpp b/performance/arithmetic_backend.hpp index acff30cd..676c82d2 100644 --- a/performance/arithmetic_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -558,6 +558,6 @@ public: } -#include +#include #endif diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 85b3c9da..fad3dbb3 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -688,6 +688,12 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST(Real(n2).template convert_to() == n2); BOOST_TEST(Real(n3).template convert_to() == n3); BOOST_TEST(Real(n4).template convert_to() == n4); +#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS + BOOST_TEST(static_cast(Real(n1)) == n1); + BOOST_TEST(static_cast(Real(n2)) == n2); + BOOST_TEST(static_cast(Real(n3)) == n3); + BOOST_TEST(static_cast(Real(n4)) == n4); +#endif #if defined(TEST_MPFR) || defined(TEST_MPFR_50) Num tol = 10 * std::numeric_limits::epsilon(); #else @@ -789,6 +795,12 @@ void test_mixed() BOOST_TEST(Real(n2).template convert_to() == n2); BOOST_TEST(Real(n3).template convert_to() == n3); BOOST_TEST(Real(n4).template convert_to() == n4); +#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS + BOOST_TEST(static_cast(Real(n1)) == n1); + BOOST_TEST(static_cast(Real(n2)) == n2); + BOOST_TEST(static_cast(Real(n3)) == n3); + BOOST_TEST(static_cast(Real(n4)) == n4); +#endif BOOST_TEST(n1 == Real(n1)); BOOST_TEST(n2 == Real(n2)); BOOST_TEST(n3 == Real(n3)); From e2ef393c232c4c3deaf81c0b7279b5040c195566 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 8 Aug 2012 18:14:50 +0000 Subject: [PATCH 215/256] Big search and replace rename, removing mp_ prefix. [SVN r79932] --- doc/multiprecision.qbk | 556 ++++---- example/cpp_int_snips.cpp | 2 +- example/floating_point_examples.cpp | 4 +- example/integer_examples.cpp | 2 +- .../concepts/mp_number_archetypes.hpp | 8 +- .../boost/multiprecision/cpp_dec_float.hpp | 78 +- include/boost/multiprecision/cpp_int.hpp | 170 +-- .../depricated/arithmetic_backend.hpp | 6 +- .../multiprecision/depricated/fixed_int.hpp | 26 +- .../multiprecision/detail/big_lanczos.hpp | 4 +- .../detail/cpp_int_trivial_ops.hpp | 12 +- .../multiprecision/detail/default_ops.hpp | 376 ++--- .../detail/functions/constants.hpp | 6 +- .../multiprecision/detail/functions/pow.hpp | 22 +- .../multiprecision/detail/functions/trig.hpp | 24 +- .../detail/generic_interconvert.hpp | 18 +- .../multiprecision/detail/integer_ops.hpp | 64 +- .../multiprecision/detail/mp_number_base.hpp | 1262 ----------------- .../detail/mp_number_compare.hpp | 482 ------- .../boost/multiprecision/detail/no_et_ops.hpp | 334 ++--- .../multiprecision/detail/number_base.hpp | 1262 +++++++++++++++++ .../multiprecision/detail/number_compare.hpp | 482 +++++++ include/boost/multiprecision/gmp.hpp | 186 +-- include/boost/multiprecision/miller_rabin.hpp | 16 +- include/boost/multiprecision/mpfr.hpp | 126 +- .../{mp_number.hpp => number.hpp} | 198 +-- include/boost/multiprecision/random.hpp | 34 +- .../boost/multiprecision/rational_adapter.hpp | 22 +- include/boost/multiprecision/tommath.hpp | 54 +- performance/arithmetic_backend.hpp | 6 +- performance/delaunay_test.cpp | 12 +- performance/linpack-benchmark.cpp | 8 +- performance/miller_rabin_performance.cpp | 16 +- performance/performance_test.cpp | 14 +- performance/sf_performance.cpp | 24 +- ...ept_check.cpp => number_concept_check.cpp} | 18 +- test/concepts/sf_concept_check_basic.cpp | 10 +- test/concepts/sf_concept_check_bessel.cpp | 10 +- test/concepts/sf_concept_check_elliptic.cpp | 10 +- test/concepts/sf_concept_check_gamma.cpp | 10 +- test/concepts/sf_concept_check_poly.cpp | 10 +- test/include_test/cpp_int_include_test.cpp | 10 +- test/math/log1p_expm1_test.cpp | 18 +- test/math/powm1_sqrtp1m1_test.cpp | 18 +- test/math/test_bessel_i.cpp | 20 +- test/math/test_bessel_j.cpp | 18 +- test/math/test_bessel_k.cpp | 18 +- test/math/test_bessel_y.cpp | 18 +- test/math/test_beta.cpp | 18 +- test/math/test_binomial_coeff.cpp | 18 +- test/math/test_carlson.cpp | 18 +- test/math/test_cbrt.cpp | 18 +- test/math/test_digamma.cpp | 18 +- test/math/test_ellint_1.cpp | 18 +- test/math/test_ellint_2.cpp | 18 +- test/math/test_ellint_3.cpp | 18 +- test/math/test_erf.cpp | 18 +- test/math/test_expint.cpp | 18 +- test/math/test_gamma.cpp | 18 +- test/math/test_hermite.cpp | 18 +- test/math/test_ibeta.cpp | 18 +- test/math/test_ibeta_2.cpp | 18 +- test/math/test_ibeta_3.cpp | 18 +- test/math/test_ibeta_4.cpp | 18 +- test/math/test_ibeta_inv_1.cpp | 18 +- test/math/test_ibeta_inv_ab_4.cpp | 18 +- test/math/test_igamma.cpp | 18 +- test/math/test_igamma_inv.cpp | 18 +- test/math/test_igamma_inva.cpp | 18 +- test/math/test_laguerre.cpp | 18 +- test/math/test_legendre.cpp | 18 +- test/math/test_tgamma_ratio.cpp | 18 +- test/math/test_zeta.cpp | 20 +- test/test_acos.cpp | 18 +- test/test_arithmetic.cpp | 26 +- test/test_asin.cpp | 22 +- test/test_atan.cpp | 24 +- test/test_constants.cpp | 8 +- test/test_constexpr.cpp | 8 +- test/test_cos.cpp | 18 +- test/test_cosh.cpp | 18 +- test/test_cpp_int.cpp | 2 +- test/test_exp.cpp | 22 +- test/test_fixed_int.cpp | 2 +- test/test_float_io.cpp | 14 +- test/test_fpclassify.cpp | 2 +- test/test_generic_conv.cpp | 6 +- test/test_int_io.cpp | 6 +- test/test_log.cpp | 22 +- test/test_numeric_limits.cpp | 10 +- test/test_pow.cpp | 22 +- test/test_rational_io.cpp | 4 +- test/test_round.cpp | 18 +- test/test_sin.cpp | 22 +- test/test_sinh.cpp | 22 +- test/test_sqrt.cpp | 26 +- test/test_tanh.cpp | 18 +- test/ublas_interop/test1.hpp | 2 +- test/ublas_interop/test2.hpp | 2 +- test/ublas_interop/test3.hpp | 2 +- test/ublas_interop/test4.hpp | 2 +- test/ublas_interop/test5.hpp | 2 +- test/ublas_interop/test7.hpp | 2 +- 103 files changed, 3466 insertions(+), 3462 deletions(-) delete mode 100644 include/boost/multiprecision/detail/mp_number_base.hpp delete mode 100644 include/boost/multiprecision/detail/mp_number_compare.hpp create mode 100644 include/boost/multiprecision/detail/number_base.hpp create mode 100644 include/boost/multiprecision/detail/number_compare.hpp rename include/boost/multiprecision/{mp_number.hpp => number.hpp} (86%) rename test/concepts/{mp_number_concept_check.cpp => number_concept_check.cpp} (85%) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 71b6a134..46679178 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -59,7 +59,7 @@ expression-template-enabled for better performance than naive user-defined types The Multiprecision library comes in two distinct parts: -* An expression-template-enabled front-end `mp_number` +* An expression-template-enabled front-end `number` that handles all the operator overloading, expression evaluation optimization, and code reduction. * A selection of back-ends that implement the actual arithmetic operations, and need conform only to the reduced interface requirements of the front-end. @@ -76,7 +76,7 @@ integer type using [gmp] as the underlying implementation then you could use: boost::multiprecision::mpz_int myint; // Arbitrary precision integer type. -Alternatively, you can compose your own multiprecision type, by combining `mp_number` with one of the +Alternatively, you can compose your own multiprecision type, by combining `number` with one of the predefined back-end types. For example, suppose you wanted a 300 decimal digit floating-point type based on the [mpfr] library. In this case, there's no predefined typedef with that level of precision, so instead we compose our own: @@ -85,18 +85,18 @@ so instead we compose our own: namespace mp = boost::multiprecision; // Reduce the typing a bit later... - typedef mp::mp_number > my_float; + typedef mp::number > my_float; my_float a, b, c; // These variables have 300 decimal digits precision We can repeat the above example, but with the expression templates disabled (for faster compile times, but slower runtimes) -by passing a second template argument to `mp_number`: +by passing a second template argument to `number`: #include // Defines the Backend type that wraps MPFR namespace mp = boost::multiprecision; // Reduce the typing a bit later... - typedef mp::mp_number, false> my_float; + typedef mp::number, false> my_float; my_float a, b, c; // These variables have 300 decimal digits precision @@ -106,8 +106,8 @@ Note that mixing arithmetic operations using types of different precision is str namespace mp = boost::multiprecision; // Reduce the typing a bit later... - mp::mp_int128_t a(3), b(2); - mp::mp_int512_t c(50), d; + mp::int128_t a(3), b(2); + mp::int512_t c(50), d; d = c * a; // Compiler error @@ -115,19 +115,19 @@ However, conversions are allowed: d = a; // OK, widening conversion. d = a * b; // OK, can convert from an expression template too. - d = mp::mp_int512_t(a) * c; // OK, all the types in the expression are the same now. + d = mp::int512_t(a) * c; // OK, all the types in the expression are the same now. [h4 Expression Templates] TODO: compare to rvalue refs. -Class `mp_number` is expression-template-enabled: that means that rather than having a multiplication +Class `number` is expression-template-enabled: that means that rather than having a multiplication operator that looks like this: template - mp_number operator * (const mp_number& a, const mp_number& b) + number operator * (const number& a, const number& b) { - mp_number result(a); + number result(a); result *= b; return result; } @@ -135,7 +135,7 @@ operator that looks like this: Instead the operator looks more like this: template - ``['unmentionable-type]`` operator * (const mp_number& a, const mp_number& b); + ``['unmentionable-type]`` operator * (const number& a, const number& b); Where the "unmentionable" return type is an implementation detail that, rather than containing the result of the multiplication, contains instructions on how to compute the result. In effect it's just a pair @@ -151,7 +151,7 @@ lets suppose we're evaluating a polynomial via Horners method, something like th //.... y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; -If type `T` is an `mp_number`, then this expression is evaluated ['without creating a single temporary value]. In contrast, +If type `T` is an `number`, then this expression is evaluated ['without creating a single temporary value]. In contrast, if we were using the [mpfr_class] C++ wrapper for [mpfr] - then this expression would result in no less than 11 temporaries (this is true even though [mpfr_class] does use expression templates to reduce the number of temporaries somewhat). Had we used an even simpler wrapper around [mpfr] like [mpreal] things would have been even worse and no less that 24 temporaries @@ -164,7 +164,7 @@ rvalue references. The number of 11 temporaries was generated with Visual C++ 1 [footnote Marc Glisse suggested pre-review that this could be reduced still further by careful use of rvalue-references and move semantics in the operator overloads. This will be investigated further at a later date.]. -This library also extends expression template support to standard library functions like `abs` or `sin` with `mp_number` +This library also extends expression template support to standard library functions like `abs` or `sin` with `number` arguments. This means that an expression such as: y = abs(x); @@ -185,7 +185,7 @@ Given the comments above, you might be forgiven for thinking that expression-tem sadly though, all tricks like this have their downsides. For one thing, expression template libraries like this one, tend to be slower to compile than their simpler cousins, they're also harder to debug (should you actually want to step through our code!), and rely on compiler optimizations being turned -on to give really good performance. Also, since the return type from expressions involving `mp_number`s +on to give really good performance. Also, since the return type from expressions involving `number`s is an "unmentionable implementation detail", you have to be careful to cast the result of an expression to the actual number type when passing an expression to a template function. For example, given: @@ -224,7 +224,7 @@ we see the following typical results for polynomial execution: [table Evaluation of Order 6 Polynomial. [[Library][Relative Time][Relative number of memory allocations]] -[[mp_number][1.0 (0.00793s)][1.0 (2996 total)]] +[[number][1.0 (0.00793s)][1.0 (2996 total)]] [[[mpfr_class]][1.2 (0.00931s)][4.3 (12976 total)]] [[[mpreal]][1.9 (0.0148s)][9.3 (27947 total)]] ] @@ -241,7 +241,7 @@ magic by converting out-of-place operators to in-place ones, we necessarily take transformation is more efficient than creating the extra temporary variable, just not by as much as one would hope. -Finally, note that `mp_number` takes a second template argument, which, when set to `false` disables all +Finally, note that `number` takes a second template argument, which, when set to `false` disables all the expression template machinery. The result is much faster to compile, but slower at runtime. We'll conclude this section by providing some more performance comparisons between these three libraries, @@ -252,14 +252,14 @@ TODO: Update, compare to rvalue refs but no ET's as well. [table Evaluation of Boost.Math's Bessel function test data [[Library][Relative Time][Relative Number of Memory Allocations]] -[[mp_number][1.0 (6.21s)][1.0 (2685469)]] +[[number][1.0 (6.21s)][1.0 (2685469)]] [[[mpfr_class]][1.04 (6.45s)][1.47 (3946007)]] [[[mpreal]][1.53 (9.52s)][4.92 (13222940)]] ] [table Evaluation of Boost.Math's Non-Central T distribution test data [[Library][Relative Time][Relative Number of Memory Allocations]] -[[mp_number][1.0 (269s)][1.0 (139082551)]] +[[number][1.0 (269s)][1.0 (139082551)]] [[[mpfr_class]][1.04 (278s)][1.81 (252400791)]] [[[mpreal]][1.49 (401s)][3.22 (447009280)]] ] @@ -294,28 +294,28 @@ The following back-ends provide integer arithmetic: template > class cpp_int_backend; - typedef mp_number > cpp_int; // arbitrary precision integer + typedef number > cpp_int; // arbitrary precision integer typedef rational_adapter > cpp_rational_backend; - typedef mp_number cpp_rational; // arbitrary precision rational number + typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef mp_number, false> mp_uint128_t; - typedef mp_number, false> mp_uint256_t; - typedef mp_number, false> mp_uint512_t; - typedef mp_number, false> mp_uint1024_t; + typedef number, false> uint128_t; + typedef number, false> uint256_t; + typedef number, false> uint512_t; + typedef number, false> uint1024_t; // Fixed precision signed types: - typedef mp_number, false> mp_int128_t; - typedef mp_number, false> mp_int256_t; - typedef mp_number, false> mp_int512_t; - typedef mp_number, false> mp_int1024_t; + typedef number, false> int128_t; + typedef number, false> int256_t; + typedef number, false> int512_t; + typedef number, false> int1024_t; }} // namespaces The `cpp_int_backend` type is used via one of the typedefs `boost::multiprecision::cpp_int`, -`boost::multiprecision::mp_uint128_t`, `boost::multiprecision::mp_uint256_t`, -`boost::multiprecision::mp_uint512_t`, `boost::multiprecision::mp_int128_t`, `boost::multiprecision::mp_int256_t` -or `boost::multiprecision::mp_int512_t`. +`boost::multiprecision::uint128_t`, `boost::multiprecision::uint256_t`, +`boost::multiprecision::uint512_t`, `boost::multiprecision::int128_t`, `boost::multiprecision::int256_t` +or `boost::multiprecision::int512_t`. This back-end is the "Swiss Army Knife" of integer types as it can represent both fixed and [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] @@ -343,7 +343,7 @@ Things you should know when using this type: * Since the precision of `cpp_int_backend` is necessarily limited when the allocator parameter is void, care should be taken to avoid numeric overflow when using this type unless you actually want modulo-arithmetic behavior. -* The type uses a sign-magnitude representation internally, so type `mp_int128_t` has 128-bits of precision plus an extra sign bit. +* The type uses a sign-magnitude representation internally, so type `int128_t` has 128-bits of precision plus an extra sign bit. In this respect the behaviour of these types differs from built-in 2's complement types. In might be tempting to use a 127-bit type instead, and indeed this does work, but behaviour is still slightly different from a 2's complement built-in type as the min and max values are identical (apart from the sign), where as they differ by one for a true 2's complement type. @@ -356,9 +356,9 @@ difference to the performance of these types either way - so we may as well have the feature off. * Unsigned types support subtraction, and unary negation - the result is "as if" a 2's complement operation had been performed - in other words they behave pretty much as a built in integer type would in this situation. So for example if we were using - `mp_uint128_t` then both `mp_uint128_t(1)-4` and `-mp_uint128(3)` would result in the value `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD` - of type `mp_uint128_t`. -* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. + `uint128_t` then both `uint128_t(1)-4` and `-uint128(3)` would result in the value `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD` + of type `uint128_t`. +* This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware. [h5 Example:] @@ -375,7 +375,7 @@ the feature off. class gmp_int; - typedef mp_number mpz_int; + typedef number mpz_int; }} // namespaces @@ -385,7 +385,7 @@ to provide an integer type that is a drop-in replacement for the native C++ inte As well as the usual conversions from arithmetic and string types, type `mpz_int` is copy constructible and assignable from: * The [gmp] native types: `mpf_t`, `mpz_t`, `mpq_t`. -* Instances of `mp_number` that are wrappers around those types: `mp_number >`, `mp_number`. +* Instances of `number` that are wrappers around those types: `number >`, `number`. It's also possible to access the underlying `mpz_t` via the `data()` member function of `gmp_int`. @@ -402,7 +402,7 @@ as a valid integer. * Division by zero results in a `std::runtime_error` being thrown. * Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir] is recommended on Win32. -* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. +* This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware. [h5 Example:] @@ -418,7 +418,7 @@ is recommended on Win32. class tommath_int; - typedef mp_number tom_int; + typedef number tom_int; }} // namespaces @@ -481,15 +481,15 @@ The following back-ends provide floating point arithmetic: template class gmp_float; - typedef mp_number > mpf_float_50; - typedef mp_number > mpf_float_100; - typedef mp_number > mpf_float_500; - typedef mp_number > mpf_float_1000; - typedef mp_number > mpf_float; + typedef number > mpf_float_50; + typedef number > mpf_float_100; + typedef number > mpf_float_500; + typedef number > mpf_float_1000; + typedef number > mpf_float; }} // namespaces -The `gmp_float` back-end is used in conjunction with `mp_number` : it acts as a thin wrapper around the [gmp] `mpf_t` +The `gmp_float` back-end is used in conjunction with `number` : it acts as a thin wrapper around the [gmp] `mpf_t` to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. @@ -497,15 +497,15 @@ Type `gmp_float` can be used at fixed precision by specifying a non-zero `Digits at variable precision by setting the template argument to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpf_float provides a variable precision type whose precision can be controlled via the -`mp_number`s member functions. +`number`s member functions. [note This type only provides standard library and `numeric_limits` support when the precision is fixed at compile time.] -As well as the usual conversions from arithmetic and string types, instances of `mp_number >` are +As well as the usual conversions from arithmetic and string types, instances of `number >` are copy constructible and assignable from: * The [gmp] native types `mpf_t`, `mpz_t`, `mpq_t`. -* The `mp_number` wrappers around those types: `mp_number >`, `mp_number`, `mp_number`. +* The `number` wrappers around those types: `number >`, `number`, `number`. It's also possible to access the underlying `mpf_t` via the `data()` member function of `gmp_float`. @@ -514,7 +514,7 @@ Things you should know when using this type: * Default constructed `gmp_float`s have the value zero (this is the [gmp] library's default behavior). * No changes are made to the [gmp] library's global settings, so this type can be safely mixed with existing [gmp] code. -* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. +* This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware. * It is not possible to round-trip objects of this type to and from a string and get back exactly the same value. This appears to be a limitation of [gmp]. * Since the underlying [gmp] types have no notion of infinities or NaN's, care should be taken @@ -543,15 +543,15 @@ as a valid floating point number. template class mpfr_float_backend; - typedef mp_number > mpfr_float_50; - typedef mp_number > mpfr_float_100; - typedef mp_number > mpfr_float_500; - typedef mp_number > mpfr_float_1000; - typedef mp_number > mpfr_float; + typedef number > mpfr_float_50; + typedef number > mpfr_float_100; + typedef number > mpfr_float_500; + typedef number > mpfr_float_1000; + typedef number > mpfr_float; }} // namespaces -The `mpfr_float_backend` type is used in conjunction with `mp_number`: It acts as a thin wrapper around the [mpfr] `mpfr_t` +The `mpfr_float_backend` type is used in conjunction with `number`: It acts as a thin wrapper around the [mpfr] `mpfr_t` to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. @@ -559,16 +559,16 @@ Type `mpfr_float_backend` can be used at fixed precision by specifying a non-zer at variable precision by setting the template argument to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpfr_float provides a variable precision type whose precision can be controlled via the -`mp_number`s member functions. +`number`s member functions. [note This type only provides `numeric_limits` support when the precision is fixed at compile time.] -As well as the usual conversions from arithmetic and string types, instances of `mp_number >` are +As well as the usual conversions from arithmetic and string types, instances of `number >` are copy constructible and assignable from: * The [gmp] native types `mpf_t`, `mpz_t`, `mpq_t`. * The [mpfr] native type `mpfr_t`. -* The `mp_number` wrappers around those types: `mp_number >`, `mp_number >`, `mp_number`, `mp_number`. +* The `number` wrappers around those types: `number >`, `number >`, `number`, `number`. It's also possible to access the underlying `mpf_t` via the data() member function of `gmp_float`. @@ -579,7 +579,7 @@ Things you should know when using this type: * No changes are made to [gmp] or [mpfr] global settings, so this type can coexist with existing [mpfr] or [gmp] code. * The code can equally use [mpir] in place of [gmp] - indeed that is the preferred option on Win32. -* This backend supports rvalue-references and is move-aware, making instantiations of `mp_number` on this backend move aware. +* This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid floating point number. * Division by zero results in an infinity. @@ -599,12 +599,12 @@ as a valid floating point number. template class cpp_dec_float; - typedef mp_number > cpp_dec_float_50; - typedef mp_number > cpp_dec_float_100; + typedef number > cpp_dec_float_50; + typedef number > cpp_dec_float_100; }} // namespaces -The `cpp_dec_float` back-end is used in conjunction with `mp_number`: It acts as an entirely C++ (header only and dependency free) +The `cpp_dec_float` back-end is used in conjunction with `number`: It acts as an entirely C++ (header only and dependency free) real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. @@ -625,8 +625,8 @@ Normally these should not be visible to the user. * The type supports both infinities and NaN's. An infinity is generated whenever the result would overflow, and a NaN is generated for any mathematically undefined operation. * There is a `std::numeric_limits` specialisation for this type. -* Any `mp_number` instantiated on this type, is convertible to any other `mp_number` instantiated on this type - -for example you can convert from `mp_number >` to `mp_number >`. +* Any `number` instantiated on this type, is convertible to any other `number` instantiated on this type - +for example you can convert from `number >` to `number >`. Narrowing conversions are truncating. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid floating point number. @@ -690,7 +690,7 @@ The following back-ends provide rational number arithmetic: [[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licensed implementation.][Slower than [gmp].]] [[`tommath_rational`][boost/multiprecision/tommath.hpp][2][[tommath]][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] [[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any integer back-end type to be used as a rational type.][Requires an underlying integer back-end type.]] -[[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `mp_number` integer type.][The expression templates used by `mp_number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] +[[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `number` integer type.][The expression templates used by `number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] [section:gmp_rational gmp_rational] @@ -701,20 +701,20 @@ The following back-ends provide rational number arithmetic: class gmp_rational; - typedef mp_number mpq_rational; + typedef number mpq_rational; }} // namespaces The `gmp_rational` back-end is used via the typedef `boost::multiprecision::mpq_rational`. It acts as a thin wrapper around the [gmp] `mpq_t` to provide a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. -As well as the usual conversions from arithmetic and string types, instances of `mp_number` are copy constructible +As well as the usual conversions from arithmetic and string types, instances of `number` are copy constructible and assignable from: * The [gmp] native types: `mpz_t`, `mpq_t`. -* `mp_number`. +* `number`. -There is also a two-argument constructor that accepts a numerator and denominator (both of type `mp_number`). +There is also a two-argument constructor that accepts a numerator and denominator (both of type `number`). There are also non-member functions: @@ -749,7 +749,7 @@ interpreted as a valid rational number. typedef rational_adapter > cpp_rational_backend; - typedef mp_number cpp_rational; + typedef number cpp_rational; }} // namespaces @@ -788,7 +788,7 @@ interpreted as a valid rational number. namespace boost{ namespace multiprecision{ typedef rational_adpater tommath_rational; - typedef mp_number tom_rational; + typedef number tom_rational; }} // namespaces @@ -826,7 +826,7 @@ needs some improvement in this area. All of the integer types in this library can be used as template arguments to `boost::rational`. -Note that using the library in this way largely negates the effect of the expression templates in `mp_number`. +Note that using the library in this way largely negates the effect of the expression templates in `number`. [endsect] @@ -839,13 +839,13 @@ Note that using the library in this way largely negates the effect of the expres }} -The class template `rational_adapter` is a back-end for `mp_number` which converts any existing integer back-end +The class template `rational_adapter` is a back-end for `number` which converts any existing integer back-end into a rational-number back-end. So for example, given an integer back-end type `MyIntegerBackend`, the use would be something like: - typedef mp_number MyInt; - typedef mp_number > MyRational; + typedef number MyInt; + typedef number > MyRational; MyRational r = 2; r /= 3; @@ -858,7 +858,7 @@ So for example, given an integer back-end type `MyIntegerBackend`, the use would [section:conversions Constructing and Interconverting Between Number Types] -All of the number types that are based on `mp_number` have certain conversion rules in common. +All of the number types that are based on `number` have certain conversion rules in common. In particular: * Any number type can be constructed (or assigned) from any builtin arithmetic type: @@ -921,7 +921,7 @@ In particular: More information on what additional types a backend supports conversions from are given in the tutorial for each backend. -* An `mp_number` can be converted to any built in type, via the `convert_to` member function: +* An `number` can be converted to any built in type, via the `convert_to` member function: mpz_int z(2); int i = z.template convert_to(); // sets i to 2 @@ -968,10 +968,10 @@ The library implements a Miller-Rabin test for primality: #include template - bool miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen); + bool miller_rabin_test(const number& n, unsigned trials, Engine& gen); template - bool miller_rabin_test(const mp_number& n, unsigned trials); + bool miller_rabin_test(const number& n, unsigned trials); These functions perform a Miller-Rabin test for primality, if the result is `false` then /n/ is definitely composite, while if the result is `true` then /n/ is prime with probability ['0.25^trials]. The algorithm used performs some @@ -994,40 +994,40 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba [section:ref Reference] -[section:mp_number mp_number] +[section:number number] [h4 Synopsis] namespace boost{ namespace multiprecision{ template - class mp_number + class number { - mp_number(); - mp_number(see-below); - mp_number& operator=(see-below); + number(); + number(see-below); + number& operator=(see-below); // Member operators - mp_number& operator+=(const ``['see-below]``&); - mp_number& operator-=(const ``['see-below]``&); - mp_number& operator*=(const ``['see-below]``&); - mp_number& operator/=(const ``['see-below]``&); - mp_number& operator++(); - mp_number& operator--(); - mp_number operator++(int); - mp_number operator--(int); + number& operator+=(const ``['see-below]``&); + number& operator-=(const ``['see-below]``&); + number& operator*=(const ``['see-below]``&); + number& operator/=(const ``['see-below]``&); + number& operator++(); + number& operator--(); + number operator++(int); + number operator--(int); - mp_number& operator%=(const ``['see-below]``&); - mp_number& operator&=(const ``['see-below]``&); - mp_number& operator|=(const ``['see-below]``&); - mp_number& operator^=(const ``['see-below]``&); - mp_number& operator<<=(const ``['integer-type]``&); - mp_number& operator>>=(const ``['integer-type]``&); + number& operator%=(const ``['see-below]``&); + number& operator&=(const ``['see-below]``&); + number& operator|=(const ``['see-below]``&); + number& operator^=(const ``['see-below]``&); + number& operator<<=(const ``['integer-type]``&); + number& operator>>=(const ``['integer-type]``&); // Use in Boolean context: operator ``['convertible-to-bool-type]``()const; // swap: - void swap(mp_number& other); + void swap(number& other); // Sign: bool is_zero()const; int sign()const; @@ -1042,7 +1042,7 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba unsigned precision()const; void precision(unsigned digits10); // Comparison: - int compare(const mp_number& o)const; + int compare(const number& o)const; template typename enable_if, int>::type compare(const V& o)const; // Access to the underlying implementation: @@ -1074,47 +1074,47 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba // Swap: template - void swap(mp_number& a, mp_number& b); + void swap(number& a, number& b); // iostream support: template - std::ostream& operator << (std::ostream& os, const mp_number& r); + std::ostream& operator << (std::ostream& os, const number& r); std::ostream& operator << (std::ostream& os, const ``['unmentionable-expression-template-type]``& r); template - std::istream& operator >> (std::istream& is, mp_number& r); + std::istream& operator >> (std::istream& is, number& r); // Non-member function standard library support: - ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` itrunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ltrunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` lltrunc(const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` round (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` iround (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` lround (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` llround(const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` log10 (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` abs (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fabs (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sqrt (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` floor (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ceil (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` trunc (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` itrunc (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ltrunc (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lltrunc(const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` round (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` iround (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lround (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` llround(const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` exp (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log10 (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cos (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sin (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tan (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` acos (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` asin (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cosh (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sinh (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tanh (const ``['number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ldexp (const ``['mp_number-or-expression-template-type]``&, int); - ``['unmentionable-expression-template-type]`` frexp (const ``['mp_number-or-expression-template-type]``&, int*); - ``['unmentionable-expression-template-type]`` pow (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` fmod (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` atan2 (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ldexp (const ``['number-or-expression-template-type]``&, int); + ``['unmentionable-expression-template-type]`` frexp (const ``['number-or-expression-template-type]``&, int*); + ``['unmentionable-expression-template-type]`` pow (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fmod (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan2 (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); // Traits support: template @@ -1123,40 +1123,40 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba struct number_category; // Integer specific functions: - ``['unmentionable-expression-template-type]`` pow(const ``['mp_number-or-expression-template-type]``&, unsigned); - ``['unmentionable-expression-template-type]`` powm(const ``['mp_number-or-expression-template-type]``& b, const ``['mp_number-or-expression-template-type]``& p, const ``['mp_number-or-expression-template-type]``& m); + ``['unmentionable-expression-template-type]`` pow(const ``['number-or-expression-template-type]``&, unsigned); + ``['unmentionable-expression-template-type]`` powm(const ``['number-or-expression-template-type]``& b, const ``['number-or-expression-template-type]``& p, const ``['number-or-expression-template-type]``& m); template - void divide_qr(const ``['mp_number-or-expression-template-type]``& x, const ``['mp_number-or-expression-template-type]``& y, - mp_number& q, mp_number& r); + void divide_qr(const ``['number-or-expression-template-type]``& x, const ``['number-or-expression-template-type]``& y, + number& q, number& r); template - Integer integer_modulus(const ``['mp_number-or-expression-template-type]``& x, Integer val); - unsigned lsb(const ``['mp_number-or-expression-template-type]``& x); + Integer integer_modulus(const ``['number-or-expression-template-type]``& x, Integer val); + unsigned lsb(const ``['number-or-expression-template-type]``& x); template - bool bit_test(const mp_number& val, unsigned index); + bool bit_test(const number& val, unsigned index); template - mp_number& bit_set(mp_number& val, unsigned index); + number& bit_set(number& val, unsigned index); template - mp_number& bit_unset(mp_number& val, unsigned index); + number& bit_unset(number& val, unsigned index); template - mp_number& bit_flip(mp_number& val, unsigned index); + number& bit_flip(number& val, unsigned index); template - bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials, Engine& gen); - bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials); + bool miller_rabin_test(const ``['number-or-expression-template-type]``& n, unsigned trials, Engine& gen); + bool miller_rabin_test(const ``['number-or-expression-template-type]``& n, unsigned trials); // Rational number support: - typename component_type<``['mp_number-or-expression-template-type]``>::type numerator (const ``['mp_number-or-expression-template-type]``&); - typename component_type<``['mp_number-or-expression-template-type]``>::type denominator(const ``['mp_number-or-expression-template-type]``&); + typename component_type<``['number-or-expression-template-type]``>::type numerator (const ``['number-or-expression-template-type]``&); + typename component_type<``['number-or-expression-template-type]``>::type denominator(const ``['number-or-expression-template-type]``&); }} // namespaces namespace boost{ namespace math{ // Boost.Math interoperability functions: - int fpclassify (const ``['mp_number-or-expression-template-type]``&, int); - bool isfinite (const ``['mp_number-or-expression-template-type]``&, int); - bool isnan (const ``['mp_number-or-expression-template-type]``&, int); - bool isinf (const ``['mp_number-or-expression-template-type]``&, int); - bool isnormal (const ``['mp_number-or-expression-template-type]``&, int); + int fpclassify (const ``['number-or-expression-template-type]``&, int); + bool isfinite (const ``['number-or-expression-template-type]``&, int); + bool isnan (const ``['number-or-expression-template-type]``&, int); + bool isinf (const ``['number-or-expression-template-type]``&, int); + bool isnormal (const ``['number-or-expression-template-type]``&, int); }} // namespaces @@ -1174,77 +1174,77 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba [h4 Description] template - class mp_number; + class number; -Class `mp_number` has two template arguments: +Class `number` has two template arguments: [variablelist [[Backend][The actual arithmetic back-end that does all the work.]] [[ExpressionTemplates][A Boolean value: when true, then expression templates are enabled, otherwise they are disabled.]] ] - mp_number(); - mp_number(see-below); - mp_number& operator=(see-below); + number(); + number(see-below); + number& operator=(see-below); -Type `mp_number` is default constructible, and both copy constructible and assignable from: +Type `number` is default constructible, and both copy constructible and assignable from: * Itself. * An expression template which is the result of one of the arithmetic operators. * Any builtin arithmetic type. * A `std::string` or any type which is convertible to `const char*`. * Any type that the Backend is constructible or assignable from. -* An rvalue reference to another `mp_number`. Move-semantics are used for construction if the backend also +* An rvalue reference to another `number`. Move-semantics are used for construction if the backend also supports rvalue reference construction. In the case of assignment, move semantics are always supported when the argument is an rvalue reference irrespective of the backend. In addition, if the type has multiple components (for example rational or complex number types), then there is a two argument constructor: - mp_number(arg1, arg2); + number(arg1, arg2); Where the two args must either be arithmetic types, or types that are convertible to the two components of `this`. - mp_number& operator+=(const ``['see-below]``&); - mp_number& operator-=(const ``['see-below]``&); - mp_number& operator*=(const ``['see-below]``&); - mp_number& operator/=(const ``['see-below]``&); - mp_number& operator++(); - mp_number& operator--(); - mp_number operator++(int); - mp_number operator--(int); + number& operator+=(const ``['see-below]``&); + number& operator-=(const ``['see-below]``&); + number& operator*=(const ``['see-below]``&); + number& operator/=(const ``['see-below]``&); + number& operator++(); + number& operator--(); + number operator++(int); + number operator--(int); // Integer only operations: - mp_number& operator%=(const ``['see-below]``&); - mp_number& operator&=(const ``['see-below]``&); - mp_number& operator|=(const ``['see-below]``&); - mp_number& operator^=(const ``['see-below]``&); - mp_number& operator<<=(const ``['integer-type]``&); - mp_number& operator>>=(const ``['integer-type]``&); + number& operator%=(const ``['see-below]``&); + number& operator&=(const ``['see-below]``&); + number& operator|=(const ``['see-below]``&); + number& operator^=(const ``['see-below]``&); + number& operator<<=(const ``['integer-type]``&); + number& operator>>=(const ``['integer-type]``&); These operators all take their usual arithmetic meanings. The arguments to these operators is either: -* Another `mp_number`. +* Another `number`. * A builtin arithmetic type. -* An expression template derived from `mp_number`. +* An expression template derived from `number`. For the left and right shift operations, the argument must be a builtin integer type with a positive value (negative values result in a `std::runtime_error` being thrown). Note that all the types involved in the expression must evaluate to the same type - which is to say -we cannot mix an `mp_number` with an `mp_number` where B1 and B2 are different types. +we cannot mix an `number` with an `number` where B1 and B2 are different types. operator ``['convertible-to-bool-type]``()const; -Returns an ['unmentionable-type] that is usable in Boolean contexts (this allows `mp_number` to be used in any +Returns an ['unmentionable-type] that is usable in Boolean contexts (this allows `number` to be used in any Boolean context - if statements, conditional statements, or as an argument to a logical operator - without -type `mp_number` being convertible to type `bool`. +type `number` being convertible to type `bool`. -This operator also enables the use of `mp_number` with any of the following operators: +This operator also enables the use of `number` with any of the following operators: `!`, `||`, `&&` and `?:`. - void swap(mp_number& other); + void swap(number& other); Swaps `*this` with `other`. @@ -1277,7 +1277,7 @@ Optionally other types may also be supported by specific `Backend` types. These functions are only available if the Backend template parameter supports runtime changes to precision. They get and set the default precision and the precision of `*this` respectively. - int compare(const mp_number& o)const; + int compare(const number& o)const; template typename enable_if, int>::type compare(const V& other)const; @@ -1320,19 +1320,19 @@ These operators all take their usual arithmetic meanings. The arguments to these functions must contain at least one of the following: -* An `mp_number`. -* An expression template type derived from `mp_number`. +* An `number`. +* An expression template type derived from `number`. In addition, one of the two arguments may be a builtin arithmetic type. The return type of these operators is either: * An ['unmentionable-type] expression template type when `ExpressionTemplates` is `true`. -* Type `mp_number` when `ExpressionTemplates` is `false`. +* Type `number` when `ExpressionTemplates` is `false`. * Type `bool` if the operator is a comparison operator. Note that all the types involved in the expression must evaluate to the same type - which is to say -we cannot mix an `mp_number` with an `mp_number` where B1 and B2 are different types. +we cannot mix an `number` with an `number` where B1 and B2 are different types. Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative arguments result in a `std::runtime_error` being thrown). @@ -1340,60 +1340,60 @@ and that the argument must be positive (negative arguments result in a `std::run [h4 swap] template - void swap(mp_number& a, mp_number& b); + void swap(number& a, number& b); Swaps `a` and `b`. [h4 Iostream Support] template - std::ostream& operator << (std::ostream& os, const mp_number& r); + std::ostream& operator << (std::ostream& os, const number& r); template std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r); template - inline std::istream& operator >> (std::istream& is, mp_number& r) + inline std::istream& operator >> (std::istream& is, number& r) -These operators provided formatted input-output operations on `mp_number` types, and expression templates derived from them. +These operators provided formatted input-output operations on `number` types, and expression templates derived from them. It's down to the back-end type to actually implement string conversion. However, the back-ends provided with this library support all of the iostream formatting flags, field width and precision settings. [h4 Non-member standard library function support] - ``['unmentionable-expression-template-type]`` abs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` fabs (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sqrt (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` floor (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ceil (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` trunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` itrunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ltrunc (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` lltrunc(const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` round (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` iround (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` lround (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` llround(const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` exp (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` log (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` log10 (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` acos (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` asin (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` atan (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` cosh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` sinh (const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` tanh (const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` abs (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fabs (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sqrt (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` floor (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ceil (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` trunc (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` itrunc (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ltrunc (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lltrunc(const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` round (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` iround (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` lround (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` llround(const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` exp (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` log10 (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cos (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sin (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tan (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` acos (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` asin (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` cosh (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` sinh (const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` tanh (const ``['number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` ldexp (const ``['mp_number-or-expression-template-type]``&, int); - ``['unmentionable-expression-template-type]`` frexp (const ``['mp_number-or-expression-template-type]``&, int*); - ``['unmentionable-expression-template-type]`` pow (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` fmod (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); - ``['unmentionable-expression-template-type]`` atan2 (const ``['mp_number-or-expression-template-type]``&, const ``['mp_number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` ldexp (const ``['number-or-expression-template-type]``&, int); + ``['unmentionable-expression-template-type]`` frexp (const ``['number-or-expression-template-type]``&, int*); + ``['unmentionable-expression-template-type]`` pow (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` fmod (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); + ``['unmentionable-expression-template-type]`` atan2 (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); -These functions all behave exactly as their standard library counterparts do: their argument is either an instance of `mp_number` or -an expression template derived from it; If the argument is of type `mp_number` then that is also the return type, +These functions all behave exactly as their standard library counterparts do: their argument is either an instance of `number` or +an expression template derived from it; If the argument is of type `number` then that is also the return type, otherwise the return type is an expression template. These functions are normally implemented by the Backend type. However, default versions are provided for Backend types that @@ -1421,53 +1421,53 @@ A traits class that inherits from `mpl::int_` where `N` is one of the enumera [h4 Integer functions] - ``['unmentionable-expression-template-type]`` pow(const ``['mp_number-or-expression-template-type]``& b, unsigned p); + ``['unmentionable-expression-template-type]`` pow(const ``['number-or-expression-template-type]``& b, unsigned p); Returns ['b[super p]] as an expression template. Note that this function should be used with extreme care as the result can grow so large as to take "effectively forever" to compute, or else simply run the host machine out of memory. - ``['unmentionable-expression-template-type]`` powm(const ``['mp_number-or-expression-template-type]``& b, const ``['mp_number-or-expression-template-type]``& p, const ``['mp_number-or-expression-template-type]``& m); + ``['unmentionable-expression-template-type]`` powm(const ``['number-or-expression-template-type]``& b, const ``['number-or-expression-template-type]``& p, const ``['number-or-expression-template-type]``& m); Returns ['b[super p] mod m] as an expression template. template - bool divide_qr(const ``['mp_number-or-expression-template-type]``& x, const ``['mp_number-or-expression-template-type]``& y, - mp_number& q, mp_number& r); + bool divide_qr(const ``['number-or-expression-template-type]``& x, const ``['number-or-expression-template-type]``& y, + number& q, number& r); Divides x by y and returns both the quotient and remainder. After the call `q = x / y` and `r = x % y`. template - Integer integer_modulus(const ``['mp_number-or-expression-template-type]``& x, Integer val); + Integer integer_modulus(const ``['number-or-expression-template-type]``& x, Integer val); Returns the absolute value of `x % val`. - unsigned lsb(const ``['mp_number-or-expression-template-type]``& x); + unsigned lsb(const ``['number-or-expression-template-type]``& x); Returns the index of the least significant bit that is set to 1. template - bool bit_test(const mp_number& val, unsigned index); + bool bit_test(const number& val, unsigned index); Returns `true` if the bit at /index/ in /val/ is set. template - mp_number& bit_set(mp_number& val, unsigned index); + number& bit_set(number& val, unsigned index); Sets the bit at /index/ in /val/, and returns /val/. template - mp_number& bit_unset(mp_number& val, unsigned index); + number& bit_unset(number& val, unsigned index); Unsets the bit at /index/ in /val/, and returns /val/. template - mp_number& bit_flip(mp_number& val, unsigned index); + number& bit_flip(number& val, unsigned index); Flips the bit at /index/ in /val/, and returns /val/. template - bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials, Engine& gen); - bool miller_rabin_test(const ``['mp_number-or-expression-template-type]``& n, unsigned trials); + bool miller_rabin_test(const ``['number-or-expression-template-type]``& n, unsigned trials, Engine& gen); + bool miller_rabin_test(const ``['number-or-expression-template-type]``& n, unsigned trials); Tests to see if the number /n/ is probably prime - the test excludes the vast majority of composite numbers by excluding small prime factors and performing a single Fermat test. Then performs /trials/ Miller-Rabin @@ -1476,8 +1476,8 @@ probability of it being composite less than 0.25^trials. [h4 Rational Number Functions] - typename component_type<``['mp_number-or-expression-template-type]``>::type numerator (const ``['mp_number-or-expression-template-type]``&); - typename component_type<``['mp_number-or-expression-template-type]``>::type denominator(const ``['mp_number-or-expression-template-type]``&); + typename component_type<``['number-or-expression-template-type]``>::type numerator (const ``['number-or-expression-template-type]``&); + typename component_type<``['number-or-expression-template-type]``>::type denominator(const ``['number-or-expression-template-type]``&); These functions return the numerator and denominator of a rational number respectively. @@ -1485,11 +1485,11 @@ These functions return the numerator and denominator of a rational number respec namespace boost{ namespace math{ - int fpclassify (const ``['mp_number-or-expression-template-type]``&, int); - bool isfinite (const ``['mp_number-or-expression-template-type]``&, int); - bool isnan (const ``['mp_number-or-expression-template-type]``&, int); - bool isinf (const ``['mp_number-or-expression-template-type]``&, int); - bool isnormal (const ``['mp_number-or-expression-template-type]``&, int); + int fpclassify (const ``['number-or-expression-template-type]``&, int); + bool isfinite (const ``['number-or-expression-template-type]``&, int); + bool isnan (const ``['number-or-expression-template-type]``&, int); + bool isinf (const ``['number-or-expression-template-type]``&, int); + bool isnormal (const ``['number-or-expression-template-type]``&, int); }} // namespaces @@ -1510,7 +1510,7 @@ specialized or overloaded to ensure interoperability. } -Class template `std::numeric_limits` is specialized for all instantiations of `mp_number` whose precision is known at compile time, plus those +Class template `std::numeric_limits` is specialized for all instantiations of `number` whose precision is known at compile time, plus those types whose precision is unlimited (though it is much less useful in those cases). It is not specialized for types whose precision can vary at compile time (such as `mpf_float`). @@ -1523,21 +1523,21 @@ whose precision can vary at compile time (such as `mpf_float`). template > struct cpp_int_backend; - typedef mp_number > cpp_int; // arbitrary precision integer + typedef number > cpp_int; // arbitrary precision integer typedef rational_adapter > cpp_rational_backend; - typedef mp_number cpp_rational; // arbitrary precision rational number + typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef mp_number, false> mp_uint128_t; - typedef mp_number, false> mp_uint256_t; - typedef mp_number, false> mp_uint512_t; - typedef mp_number, false> mp_uint1024_t; + typedef number, false> uint128_t; + typedef number, false> uint256_t; + typedef number, false> uint512_t; + typedef number, false> uint1024_t; // Fixed precision signed types: - typedef mp_number, false> mp_int128_t; - typedef mp_number, false> mp_int256_t; - typedef mp_number, false> mp_int512_t; - typedef mp_number, false> mp_int1024_t; + typedef number, false> int128_t; + typedef number, false> int256_t; + typedef number, false> int512_t; + typedef number, false> int1024_t; }} // namespaces @@ -1572,7 +1572,7 @@ More information on this type can be found in the [link boost_multiprecision.tut class gmp_int; - typedef mp_number mpz_int; + typedef number mpz_int; }} // namespaces @@ -1592,7 +1592,7 @@ More information on this type can be found in the [link boost_multiprecision.tut class tommath_int; - typedef mp_number tom_int; + typedef number tom_int; }} // namespaces @@ -1613,11 +1613,11 @@ More information on this type can be found in the [link boost_multiprecision.tut template class gmp_float; - typedef mp_number > mpf_float_50; - typedef mp_number > mpf_float_100; - typedef mp_number > mpf_float_500; - typedef mp_number > mpf_float_1000; - typedef mp_number > mpf_float; + typedef number > mpf_float_50; + typedef number > mpf_float_100; + typedef number > mpf_float_500; + typedef number > mpf_float_1000; + typedef number > mpf_float; }} // namespaces @@ -1626,8 +1626,8 @@ Its members and non-member functions are deliberately not documented: these are to change. The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type -should support. When this parameter is zero, then the precision can be set at runtime via `mp_number::default_precision` -and `mp_number::precision`. Note that this type does not in any way change the GMP library's global state (for example +should support. When this parameter is zero, then the precision can be set at runtime via `number::default_precision` +and `number::precision`. Note that this type does not in any way change the GMP library's global state (for example it does not change the default precision of the mpf_t data type), therefore you can safely mix this type with existing code that uses GMP, and also mix `gmp_float`s of differing precision. @@ -1644,11 +1644,11 @@ More information on this type can be found in the [link boost_multiprecision.tut template class mpfr_float_backend; - typedef mp_number > mpfr_float_50; - typedef mp_number > mpfr_float_100; - typedef mp_number > mpfr_float_500; - typedef mp_number > mpfr_float_1000; - typedef mp_number > mpfr_float; + typedef number > mpfr_float_50; + typedef number > mpfr_float_100; + typedef number > mpfr_float_500; + typedef number > mpfr_float_1000; + typedef number > mpfr_float; }} // namespaces @@ -1657,8 +1657,8 @@ Its members and non-member functions are deliberately not documented: these are to change. The class takes a single template parameter - `Digits10` - which is the number of decimal digits precision the type -should support. When this parameter is zero, then the precision can be set at runtime via `mp_number::default_precision` -and `mp_number::precision`. Note that this type does not in any way change the GMP or MPFR library's global state (for example +should support. When this parameter is zero, then the precision can be set at runtime via `number::default_precision` +and `number::precision`. Note that this type does not in any way change the GMP or MPFR library's global state (for example it does not change the default precision of the mpfr_t data type), therefore you can safely mix this type with existing code that uses GMP or MPFR, and also mix `mpfr_float_backend`s of differing precision. @@ -1675,8 +1675,8 @@ More information on this type can be found in the [link boost_multiprecision.tut template class cpp_dec_float; - typedef mp_number > cpp_dec_float_50; - typedef mp_number > cpp_dec_float_100; + typedef number > cpp_dec_float_50; + typedef number > cpp_dec_float_100; }} // namespaces @@ -1696,13 +1696,13 @@ More information on this type can be found in the [link boost_multiprecision.tut [section:backendconc Backend Requirements] -The requirements on the `Backend` template argument to `mp_number` are split up into +The requirements on the `Backend` template argument to `number` are split up into compulsory requirements, and optional requirements that are either to improve performance or provide optional features. TODO: Add optional construction support, add throws specification, clarify what compulsory means. -In the following tables, type B is the `Backend` template arument to `mp_number`, `b` and `b2` are +In the following tables, type B is the `Backend` template arument to `number`, `b` and `b2` are a variables of type B, `cb` and `cb2` are constant variables of type B, `a` is a variable of Arithmetic type, `s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, `pa` is a variable of type pointer-to-arithmetic-type, `exp` is a variable of type `B::exp_type`, @@ -1880,7 +1880,7 @@ in point of fact this naming convention shouldn't be necessary, but rather works [[gmp.hpp][Defines all [gmp] related backends.]] [[integer_ops.hpp][Integer specific non-member functions.]] [[miller_rabin.hpp][Miller Rabin primality testing code.]] -[[mp_number.hpp][Defines the `mp_number` backend, is included by all the backend headers.]] +[[number.hpp][Defines the `number` backend, is included by all the backend headers.]] [[mpfr.hpp][Defines the mpfr_float_backend backend.]] [[random.hpp][Defines code to interoperate with Boost.Random.]] [[rational_adapter.hpp][Defines the `rational_adapter` backend.]] @@ -1895,7 +1895,7 @@ in point of fact this naming convention shouldn't be necessary, but rather works [[detail/cpp_int_core.hpp][Platform and peformance tuning for the `cpp_int` backend.]] [[detail/default_ops.hpp][Default versions of the optional backend non-member functions.]] [[detail/generic_interconvert.hpp][Generic interconversion routines.]] -[[detail/mp_number_base.hpp][All the expression template code, metaprogramming, and operator overloads for `mp_number`.]] +[[detail/number_base.hpp][All the expression template code, metaprogramming, and operator overloads for `number`.]] [[detail/no_et_ops.hpp][The non-expression template operators.]] [[defail/functions/constants.hpp][Defines constants used by the floating point functions.]] [[detail/functions/pow.hpp][Defines default versions of the power and exponential related floating point functions.]] @@ -1959,8 +1959,8 @@ Windows Vista machine. [[cpp_int (256-bit cache)][1.29367(0.442451s)]] [[cpp_int (512-bit cache)][1.08821(0.37218s)]] [[cpp_int (1024-bit cache)][1.07902(0.369037s)]] -[[mp_int1024_t][1.02616(0.35096s)]] -[[mp_int1024_t (no Expression templates)][1(0.342011s)]] +[[int1024_t][1.02616(0.35096s)]] +[[int1024_t (no Expression templates)][1(0.342011s)]] [[tom_int][3.74233(1.27992s)]] [[tom_int (no Expression templates)][3.97646(1.35999s)]] ] @@ -2292,7 +2292,7 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Can the non-expression template operators be further optimised with rvalue reference support? * Can any functions - in particular value initialization - be made `constexp`? -* Can we differentiate between explicit and implicit conversions in the mp_number constructor (may need some new type traits)? +* Can we differentiate between explicit and implicit conversions in the number constructor (may need some new type traits)? * Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. Open question - what should be the default - int32_t or int64_t? diff --git a/example/cpp_int_snips.cpp b/example/cpp_int_snips.cpp index 191fcecb..a2818740 100644 --- a/example/cpp_int_snips.cpp +++ b/example/cpp_int_snips.cpp @@ -13,7 +13,7 @@ void t1() using namespace boost::multiprecision; - mp_int128_t v = 1; + int128_t v = 1; // Do some fixed precision arithmetic: for(unsigned i = 1; i <= 20; ++i) diff --git a/example/floating_point_examples.cpp b/example/floating_point_examples.cpp index 37761d94..2200b73d 100644 --- a/example/floating_point_examples.cpp +++ b/example/floating_point_examples.cpp @@ -343,7 +343,7 @@ private: /*` In this example we'll look at polynomial evaluation, this is not only an important -use case, but it's one that `mp_number` performs particularly well at because the +use case, but it's one that `number` performs particularly well at because the expression templates ['completely eliminate all temporaries] from a [@http://en.wikipedia.org/wiki/Horner%27s_method Horner polynomial evaluation scheme]. @@ -353,7 +353,7 @@ The following code evaluates `sin(x)` as a polynomial, accurate to at least 64 d */ using boost::multiprecision::cpp_dec_float; -typedef boost::multiprecision::mp_number > mp_type; +typedef boost::multiprecision::number > mp_type; mp_type mysin(const mp_type& x) { diff --git a/example/integer_examples.cpp b/example/integer_examples.cpp index f57e76e8..0b2edbbd 100644 --- a/example/integer_examples.cpp +++ b/example/integer_examples.cpp @@ -32,7 +32,7 @@ void print_factorials() // large the largest is, we'll be able to "pretty format" the results. // // Calculate the largest number that will fit inside 128 bits, we could - // also have used numeric_limits::max() for this value: + // also have used numeric_limits::max() for this value: cpp_int limit = (cpp_int(1) << 128) - 1; // // Our table of values: diff --git a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp index d10449cc..bb2c8678 100644 --- a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include @@ -195,17 +195,17 @@ inline int eval_fpclassify(const mp_number_backend_float_architype& arg) return (boost::math::fpclassify)(arg.m_value); } -typedef boost::multiprecision::mp_number mp_number_float_architype; +typedef boost::multiprecision::number mp_number_float_architype; }}} // namespaces namespace std{ template -class numeric_limits > : public std::numeric_limits +class numeric_limits > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::mp_number number_type; + typedef boost::multiprecision::number number_type; public: static number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } static number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 3110088a..f8115b4a 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include // @@ -1342,9 +1342,9 @@ int cpp_dec_float::compare(const cpp_dec_float& v) const BOOST_NOEXCEP else if(exp != v.exp) { // The signs are the same and the exponents are different. - const int val_cmp_exp = ((exp < v.exp) ? 1 : -1); + const int val_cexpression = ((exp < v.exp) ? 1 : -1); - return (neg ? val_cmp_exp : -val_cmp_exp); + return (neg ? val_cexpression : -val_cexpression); } else { @@ -2730,7 +2730,7 @@ inline void eval_trunc(cpp_dec_float& result, const cpp_dec_float(%1%)", 0, mp_number >(x), 0, boost::math::policies::policy<>()).backend(); + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number >(x), 0, boost::math::policies::policy<>()).backend(); return; } else if(x.isint()) @@ -2842,15 +2842,15 @@ inline int eval_get_sign(const cpp_dec_float& val) BOOST_NOEXCEPT using boost::multiprecision::backends::cpp_dec_float; -typedef mp_number > cpp_dec_float_50; -typedef mp_number > cpp_dec_float_100; +typedef number > cpp_dec_float_50; +typedef number > cpp_dec_float_100; }} namespace std { template - class numeric_limits, ExpressionTemplates> > + class numeric_limits, ExpressionTemplates> > { public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; @@ -2877,63 +2877,63 @@ namespace std BOOST_STATIC_CONSTEXPR bool traps = false; BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> round_error (void) { return 0.5L; } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::mp_number, ExpressionTemplates> denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> round_error (void) { return 0.5L; } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } }; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif } @@ -2943,7 +2943,7 @@ namespace boost{ namespace math{ namespace policies{ template -struct precision< boost::multiprecision::mp_number, ExpressionTemplates>, Policy> +struct precision< boost::multiprecision::number, ExpressionTemplates>, Policy> { // Define a local copy of cpp_dec_float_digits10 because it might differ // from the template parameter Digits10 for small or large digit counts. diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 3873720b..9a4e771b 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include @@ -2940,21 +2940,21 @@ using boost::multiprecision::backends::cpp_int_backend; template struct number_category > : public mpl::int_{}; -typedef mp_number > cpp_int; +typedef number > cpp_int; typedef rational_adapter > cpp_rational_backend; -typedef mp_number cpp_rational; +typedef number cpp_rational; // Fixed precision unsigned types: -typedef mp_number, false> mp_uint128_t; -typedef mp_number, false> mp_uint256_t; -typedef mp_number, false> mp_uint512_t; -typedef mp_number, false> mp_uint1024_t; +typedef number, false> uint128_t; +typedef number, false> uint256_t; +typedef number, false> uint512_t; +typedef number, false> uint1024_t; // Fixed precision signed types: -typedef mp_number, false> mp_int128_t; -typedef mp_number, false> mp_int256_t; -typedef mp_number, false> mp_int512_t; -typedef mp_number, false> mp_int1024_t; +typedef number, false> int128_t; +typedef number, false> int256_t; +typedef number, false> int512_t; +typedef number, false> int1024_t; #ifdef BOOST_MSVC #pragma warning(pop) @@ -2968,9 +2968,9 @@ typedef mp_number, false> mp_int1024_t; namespace std{ template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; @@ -3020,56 +3020,56 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; struct inititializer { @@ -3144,61 +3144,61 @@ public: }; template -const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; +const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; struct inititializer { @@ -3272,54 +3272,54 @@ public: }; template -const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; +const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif diff --git a/include/boost/multiprecision/depricated/arithmetic_backend.hpp b/include/boost/multiprecision/depricated/arithmetic_backend.hpp index 9925d3f8..0f6e4c02 100644 --- a/include/boost/multiprecision/depricated/arithmetic_backend.hpp +++ b/include/boost/multiprecision/depricated/arithmetic_backend.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include namespace boost{ namespace multiprecision{ @@ -128,10 +128,10 @@ using boost::multiprecision::backends::arithmetic_backend; namespace std{ template -class numeric_limits, ExpressionTemplates > > : public std::numeric_limits +class numeric_limits, ExpressionTemplates > > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } diff --git a/include/boost/multiprecision/depricated/fixed_int.hpp b/include/boost/multiprecision/depricated/fixed_int.hpp index 80be2036..c12fa3a8 100644 --- a/include/boost/multiprecision/depricated/fixed_int.hpp +++ b/include/boost/multiprecision/depricated/fixed_int.hpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include @@ -1504,13 +1504,13 @@ inline void eval_lcm(fixed_int& result, const fixed_int struct number_category > : public mpl::int_{}; -typedef mp_number > mp_uint128_t; -typedef mp_number > mp_uint256_t; -typedef mp_number > mp_uint512_t; +typedef number > uint128_t; +typedef number > uint256_t; +typedef number > uint512_t; -typedef mp_number > mp_int128_t; -typedef mp_number > mp_int256_t; -typedef mp_number > mp_int512_t; +typedef number > int128_t; +typedef number > int256_t; +typedef number > int512_t; }} // namespaces @@ -1518,16 +1518,16 @@ typedef mp_number > mp_int512_t; namespace std{ template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; struct initializer { initializer() { - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); } void do_nothing()const{} }; @@ -1592,8 +1592,8 @@ public: }; template -typename numeric_limits, ExpressionTemplates> >::initializer const - numeric_limits, ExpressionTemplates> >::init; +typename numeric_limits, ExpressionTemplates> >::initializer const + numeric_limits, ExpressionTemplates> >::init; } #endif diff --git a/include/boost/multiprecision/detail/big_lanczos.hpp b/include/boost/multiprecision/detail/big_lanczos.hpp index 998d5dca..c3cb1461 100644 --- a/include/boost/multiprecision/detail/big_lanczos.hpp +++ b/include/boost/multiprecision/detail/big_lanczos.hpp @@ -17,9 +17,9 @@ template struct lanczos; template -struct lanczos, Policy> +struct lanczos, Policy> { - typedef typename boost::math::policies::precision, Policy>::type precision_type; + typedef typename boost::math::policies::precision, Policy>::type precision_type; typedef typename mpl::if_c< precision_type::value <= 73, lanczos13UDT, diff --git a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp index f2700c5e..47f9147a 100644 --- a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp +++ b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp @@ -10,6 +10,14 @@ namespace boost{ namespace multiprecision{ namespace backends{ +#ifdef BOOST_MSVC +#pragma warning(push) + // C4389: signed/unsigned mismatch + // C4127: conditional expression is constant + // C4018: signed/unsigned mismatch +#pragma warning(disable:4127 4018 4389) +#endif + template BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT { @@ -357,10 +365,6 @@ BOOST_FORCEINLINE void eval_lcm(cpp_int_backend& re *result.limbs() = boost::math::lcm(*a.limbs(), *b.limbs()); } -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127 4018) -#endif template inline void eval_convert_to(R* result, const cpp_int_backend& val) { diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index bf56825b..becb7cb4 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -7,7 +7,7 @@ #define BOOST_MATH_BIG_NUM_DEF_OPS #include -#include +#include #include #include #include @@ -693,7 +693,7 @@ inline void eval_trunc(T& result, const T& a) int c = eval_fpclassify(a); if(c == FP_NAN || c == FP_INFINITE) { - result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number(a), 0, boost::math::policies::policy<>()).backend(); + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number(a), 0, boost::math::policies::policy<>()).backend(); return; } if(eval_get_sign(a) < 0) @@ -710,7 +710,7 @@ inline void eval_round(T& result, const T& a) int c = eval_fpclassify(a); if(c == FP_NAN || c == FP_INFINITE) { - result = boost::math::policies::raise_rounding_error("boost::multiprecision::round<%1%>(%1%)", 0, mp_number(a), 0, boost::math::policies::policy<>()).backend(); + result = boost::math::policies::raise_rounding_error("boost::multiprecision::round<%1%>(%1%)", 0, number(a), 0, boost::math::policies::policy<>()).backend(); return; } if(eval_get_sign(a) < 0) @@ -844,60 +844,60 @@ namespace math{ // Default versions of floating point classification routines: // template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { using multiprecision::default_ops::eval_fpclassify; return eval_fpclassify(arg.backend()); } template -inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::expression& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::expression::result_type value_type; return fpclassify(value_type(arg)); } template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { int v = fpclassify(arg); return (v != FP_INFINITE) && (v != FP_NAN); } template -inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::expression& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::expression::result_type value_type; return isfinite(value_type(arg)); } template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { return fpclassify(arg) == FP_NAN; } template -inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::expression& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::expression::result_type value_type; return isnan(value_type(arg)); } template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { return fpclassify(arg) == FP_INFINITE; } template -inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::expression& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::expression::result_type value_type; return isinf(value_type(arg)); } template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::mp_number& arg) +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { return fpclassify(arg) == FP_NORMAL; } template -inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::mp_exp& arg) +inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail::expression& arg) { - typedef typename multiprecision::detail::mp_exp::result_type value_type; + typedef typename multiprecision::detail::expression::result_type value_type; return isnormal(value_type(arg)); } @@ -905,198 +905,198 @@ inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::deta namespace multiprecision{ template -inline typename detail::mp_exp::result_type trunc(const detail::mp_exp& v, const Policy& pol) +inline typename detail::expression::result_type trunc(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; return BOOST_MP_MOVE(trunc(number_type(v), pol)); } template -inline mp_number trunc(const mp_number& v, const Policy&) +inline number trunc(const number& v, const Policy&) { using default_ops::eval_trunc; - mp_number result; + number result; eval_trunc(result.backend(), v.backend()); return BOOST_MP_MOVE(result); } template -inline int itrunc(const detail::mp_exp& v, const Policy& pol) +inline int itrunc(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; number_type r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to(); return r.template convert_to(); } template -inline int itrunc(const detail::mp_exp& v) +inline int itrunc(const detail::expression& v) { return itrunc(v, boost::math::policies::policy<>()); } template -inline int itrunc(const mp_number& v, const Policy& pol) +inline int itrunc(const number& v, const Policy& pol) { - mp_number r = trunc(v, pol); + number r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } template -inline int itrunc(const mp_number& v) +inline int itrunc(const number& v) { return itrunc(v, boost::math::policies::policy<>()); } template -inline long ltrunc(const detail::mp_exp& v, const Policy& pol) +inline long ltrunc(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; number_type r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to(); return r.template convert_to(); } template -inline long ltrunc(const detail::mp_exp& v) +inline long ltrunc(const detail::expression& v) { return ltrunc(v, boost::math::policies::policy<>()); } template -inline long ltrunc(const mp_number& v, const Policy& pol) +inline long ltrunc(const number& v, const Policy& pol) { - mp_number r = trunc(v, pol); + number r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } template -inline long ltrunc(const mp_number& v) +inline long ltrunc(const number& v) { return ltrunc(v, boost::math::policies::policy<>()); } #ifndef BOOST_NO_LONG_LONG template -inline long long lltrunc(const detail::mp_exp& v, const Policy& pol) +inline long long lltrunc(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; number_type r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to(); return r.template convert_to(); } template -inline long long lltrunc(const detail::mp_exp& v) +inline long long lltrunc(const detail::expression& v) { return lltrunc(v, boost::math::policies::policy<>()); } template -inline long long lltrunc(const mp_number& v, const Policy& pol) +inline long long lltrunc(const number& v, const Policy& pol) { - mp_number r = trunc(v, pol); + number r = trunc(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } template -inline long long lltrunc(const mp_number& v) +inline long long lltrunc(const number& v) { return lltrunc(v, boost::math::policies::policy<>()); } #endif template -inline typename detail::mp_exp::result_type round(const detail::mp_exp& v, const Policy& pol) +inline typename detail::expression::result_type round(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; return BOOST_MP_MOVE(round(static_cast(v), pol)); } template -inline mp_number round(const mp_number& v, const Policy&) +inline number round(const number& v, const Policy&) { using default_ops::eval_round; - mp_number result; + number result; eval_round(result.backend(), v.backend()); return BOOST_MP_MOVE(result); } template -inline int iround(const detail::mp_exp& v, const Policy& pol) +inline int iround(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; number_type r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to(); return r.template convert_to(); } template -inline int iround(const detail::mp_exp& v) +inline int iround(const detail::expression& v) { return iround(v, boost::math::policies::policy<>()); } template -inline int iround(const mp_number& v, const Policy& pol) +inline int iround(const number& v, const Policy& pol) { - mp_number r = round(v, pol); + number r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } template -inline int iround(const mp_number& v) +inline int iround(const number& v) { return iround(v, boost::math::policies::policy<>()); } template -inline long lround(const detail::mp_exp& v, const Policy& pol) +inline long lround(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; number_type r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to(); return r.template convert_to(); } template -inline long lround(const detail::mp_exp& v) +inline long lround(const detail::expression& v) { return lround(v, boost::math::policies::policy<>()); } template -inline long lround(const mp_number& v, const Policy& pol) +inline long lround(const number& v, const Policy& pol) { - mp_number r = round(v, pol); + number r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } template -inline long lround(const mp_number& v) +inline long lround(const number& v) { return lround(v, boost::math::policies::policy<>()); } #ifndef BOOST_NO_LONG_LONG template -inline long long llround(const detail::mp_exp& v, const Policy& pol) +inline long long llround(const detail::expression& v, const Policy& pol) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; number_type r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to(); return r.template convert_to(); } template -inline long long llround(const detail::mp_exp& v) +inline long long llround(const detail::expression& v) { return llround(v, boost::math::policies::policy<>()); } template -inline long long llround(const mp_number& v, const Policy& pol) +inline long long llround(const number& v, const Policy& pol) { - mp_number r = round(v, pol); + number r = round(v, pol); if((r > (std::numeric_limits::max)()) || r < (std::numeric_limits::min)() || !boost::math::isfinite(v)) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } template -inline long long llround(const mp_number& v) +inline long long llround(const number& v) { return llround(v, boost::math::policies::policy<>()); } @@ -1117,36 +1117,36 @@ struct BOOST_JOIN(func, _funct)\ }\ \ template \ -inline typename enable_if_c >::value == category,\ - detail::mp_exp<\ +inline typename enable_if_c >::value == category,\ + detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp > \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression > \ >::type \ -func(const detail::mp_exp& arg)\ +func(const detail::expression& arg)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression \ > (\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg \ );\ }\ template \ inline typename enable_if_c::value == category,\ - detail::mp_exp<\ + detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number > \ + , number > \ >::type \ -func(const mp_number& arg)\ +func(const number& arg)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg \ @@ -1155,10 +1155,10 @@ func(const mp_number& arg)\ template \ inline typename boost::enable_if_c<\ boost::multiprecision::number_category::value == category,\ - mp_number >::type \ -func(const mp_number& arg)\ + number >::type \ +func(const number& arg)\ {\ - mp_number result;\ + number result;\ using default_ops::BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend());\ return BOOST_MP_MOVE(result);\ @@ -1191,19 +1191,19 @@ struct BOOST_JOIN(func, _funct)\ }\ template \ inline typename enable_if_c::value == category,\ - detail::mp_exp<\ + detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ - , mp_number > \ + , number \ + , number > \ >::type \ -func(const mp_number& arg, const mp_number& a)\ +func(const number& arg, const number& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ - , mp_number \ + , number \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1212,20 +1212,20 @@ func(const mp_number& arg, const mp_number& a)\ }\ template \ inline typename enable_if_c<\ - (number_category::value == category) && (number_category >::value == category),\ - detail::mp_exp<\ + (number_category::value == category) && (number_category >::value == category),\ + detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ - , detail::mp_exp > \ + , number \ + , detail::expression > \ >::type \ -func(const mp_number& arg, const detail::mp_exp& a)\ +func(const number& arg, const detail::expression& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ - , detail::mp_exp \ + , number \ + , detail::expression \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1234,20 +1234,20 @@ func(const mp_number& arg, const detail::mp_exp \ inline typename enable_if_c<\ - (number_category::value == category) && (number_category >::value == category),\ - detail::mp_exp<\ + (number_category::value == category) && (number_category >::value == category),\ + detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::mp_exp \ - , mp_number > \ + , detail::expression \ + , number > \ >::type \ -func(const detail::mp_exp& arg, const mp_number& a)\ +func(const detail::expression& arg, const number& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , detail::mp_exp \ - , mp_number \ + , detail::expression \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1256,22 +1256,22 @@ func(const detail::mp_exp& arg, const mp_number \ inline typename enable_if_c<\ - (number_category >::value == category) && (number_category >::value == category),\ - detail::mp_exp<\ + (number_category >::value == category) && (number_category >::value == category),\ + detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ - , detail::mp_exp > \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression \ + , detail::expression > \ >::type \ -func(const detail::mp_exp& arg, const detail::mp_exp& a)\ +func(const detail::expression& arg, const detail::expression& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression \ + , detail::expression \ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ @@ -1279,19 +1279,19 @@ func(const detail::mp_exp& arg, const detail::mp_exp \ inline typename enable_if_c<\ is_arithmetic::value && (number_category::value == category),\ - detail::mp_exp<\ + detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , number \ , Arithmetic\ > \ >::type \ -func(const mp_number& arg, const Arithmetic& a)\ +func(const number& arg, const Arithmetic& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , number \ , Arithmetic\ >(\ detail::BOOST_JOIN(func, _funct)() \ @@ -1301,23 +1301,23 @@ func(const mp_number& arg, const Arithmetic& a)\ }\ template \ inline typename enable_if_c<\ - is_arithmetic::value && (number_category >::value == category),\ - detail::mp_exp<\ + is_arithmetic::value && (number_category >::value == category),\ + detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression \ , Arithmetic\ > \ >::type \ -func(const detail::mp_exp& arg, const Arithmetic& a)\ +func(const detail::expression& arg, const Arithmetic& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression \ , Arithmetic\ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ @@ -1325,20 +1325,20 @@ func(const detail::mp_exp& arg, const Arithmetic& a)\ template \ inline typename enable_if_c<\ is_arithmetic::value && (number_category::value == category),\ - detail::mp_exp<\ + detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , Arithmetic \ - , mp_number \ + , number \ > \ >::type \ -func(const Arithmetic& arg, const mp_number& a)\ +func(const Arithmetic& arg, const number& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , Arithmetic \ - , mp_number \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1347,33 +1347,33 @@ func(const Arithmetic& arg, const mp_number& a)\ }\ template \ inline typename enable_if_c<\ - is_arithmetic::value && (number_category >::value == category),\ - detail::mp_exp<\ + is_arithmetic::value && (number_category >::value == category),\ + detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::BOOST_JOIN(func, _funct) >::type> \ , Arithmetic \ - , detail::mp_exp \ + , detail::expression \ > \ >::type \ -func(const Arithmetic& arg, const detail::mp_exp& a)\ +func(const Arithmetic& arg, const detail::expression& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::BOOST_JOIN(func, _funct) >::type> \ , Arithmetic \ - , detail::mp_exp \ + , detail::expression \ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg,\ a\ );\ }\ template \ inline typename enable_if_c<(number_category::value == category),\ - mp_number >::type \ -func(const mp_number& arg, const mp_number& a)\ + number >::type \ +func(const number& arg, const number& a)\ {\ - mp_number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a.backend());\ return BOOST_MP_MOVE(result);\ @@ -1381,12 +1381,12 @@ func(const mp_number& arg, const mp_number& a)\ template \ inline typename enable_if_c<\ is_arithmetic::value && (number_category::value == category),\ - mp_number \ + number \ >::type \ -func(const mp_number& arg, const Arithmetic& a)\ +func(const number& arg, const Arithmetic& a)\ {\ typedef typename detail::canonical::type canonical_type;\ - mp_number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), static_cast(a));\ return BOOST_MP_MOVE(result);\ @@ -1394,12 +1394,12 @@ func(const mp_number& arg, const Arithmetic& a)\ template \ inline typename enable_if_c<\ is_arithmetic::value && (number_category::value == category),\ - mp_number \ + number \ >::type \ -func(const Arithmetic& a, const mp_number& arg)\ +func(const Arithmetic& a, const number& arg)\ {\ typedef typename detail::canonical::type canonical_type;\ - mp_number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), static_cast(a), arg.backend());\ return BOOST_MP_MOVE(result);\ @@ -1409,40 +1409,40 @@ func(const Arithmetic& a, const mp_number& arg)\ #define HETERO_BINARY_OP_FUNCTOR_B(func, Arg2, category)\ template \ inline typename enable_if_c<\ - (number_category >::value == category),\ - detail::mp_exp<\ + (number_category >::value == category),\ + detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression \ , Arg2> \ >::type \ -func(const detail::mp_exp& arg, Arg2 const& a)\ +func(const detail::expression& arg, Arg2 const& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ - , detail::BOOST_JOIN(func, _funct) >::type> \ - , detail::mp_exp \ + , detail::BOOST_JOIN(func, _funct) >::type> \ + , detail::expression \ , Arg2\ >(\ - detail::BOOST_JOIN(func, _funct) >::type>() \ + detail::BOOST_JOIN(func, _funct) >::type>() \ , arg, a \ );\ }\ template \ inline typename enable_if_c<\ (number_category::value == category),\ - detail::mp_exp<\ + detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , number \ , Arg2> \ >::type \ -func(const mp_number& arg, Arg2 const& a)\ +func(const number& arg, Arg2 const& a)\ {\ - return detail::mp_exp<\ + return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , mp_number \ + , number \ , Arg2\ >(\ detail::BOOST_JOIN(func, _funct)() \ @@ -1453,10 +1453,10 @@ func(const mp_number& arg, Arg2 const& a)\ template \ inline typename enable_if_c<\ (number_category::value == category),\ - mp_number >::type \ -func(const mp_number& arg, Arg2 const& a)\ + number >::type \ +func(const number& arg, Arg2 const& a)\ {\ - mp_number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a);\ return BOOST_MP_MOVE(result);\ @@ -1493,42 +1493,42 @@ struct abs_funct } template -inline detail::mp_exp< +inline detail::expression< detail::function - , detail::abs_funct >::type> - , detail::mp_exp > -abs(const detail::mp_exp& arg) + , detail::abs_funct >::type> + , detail::expression > +abs(const detail::expression& arg) { - return detail::mp_exp< + return detail::expression< detail::function - , detail::abs_funct >::type> - , detail::mp_exp + , detail::abs_funct >::type> + , detail::expression > ( - detail::abs_funct >::type>() + detail::abs_funct >::type>() , arg ); } template -inline detail::mp_exp< +inline detail::expression< detail::function , detail::abs_funct - , mp_number > -abs(const mp_number& arg) + , number > +abs(const number& arg) { - return detail::mp_exp< + return detail::expression< detail::function , detail::abs_funct - , mp_number + , number >( detail::abs_funct() , arg ); } template -inline mp_number -abs(const mp_number& arg) +inline number +abs(const number& arg) { - mp_number result; + number result; using default_ops::eval_abs; eval_abs(result.backend(), arg.backend()); return BOOST_MP_MOVE(result); @@ -1577,32 +1577,32 @@ HETERO_BINARY_OP_FUNCTOR_B(pow, unsigned, number_kind_integer) namespace math{ // -// Overload of Boost.Math functions that find the wrong overload when used with mp_number: +// Overload of Boost.Math functions that find the wrong overload when used with number: // namespace detail{ template T sinc_pi_imp(T); template T sinhc_pi_imp(T); } template -inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x) +inline multiprecision::number sinc_pi(const multiprecision::number& x) { return BOOST_MP_MOVE(detail::sinc_pi_imp(x)); } template -inline multiprecision::mp_number sinc_pi(const multiprecision::mp_number& x, const Policy&) +inline multiprecision::number sinc_pi(const multiprecision::number& x, const Policy&) { return BOOST_MP_MOVE(detail::sinc_pi_imp(x)); } template -inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x) +inline multiprecision::number sinhc_pi(const multiprecision::number& x) { return BOOST_MP_MOVE(detail::sinhc_pi_imp(x)); } template -inline multiprecision::mp_number sinhc_pi(const multiprecision::mp_number& x, const Policy&) +inline multiprecision::number sinhc_pi(const multiprecision::number& x, const Policy&) { return BOOST_MP_MOVE(boost::math::sinhc_pi(x)); } diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 4946ccf5..537b7bd1 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -246,7 +246,7 @@ const T& get_constant_ln2() static bool b = false; if(!b) { - calc_log2(result, boost::multiprecision::detail::digits2 >::value); + calc_log2(result, boost::multiprecision::detail::digits2 >::value); b = true; } @@ -262,7 +262,7 @@ const T& get_constant_e() static bool b = false; if(!b) { - calc_e(result, boost::multiprecision::detail::digits2 >::value); + calc_e(result, boost::multiprecision::detail::digits2 >::value); b = true; } @@ -278,7 +278,7 @@ const T& get_constant_pi() static bool b = false; if(!b) { - calc_pi(result, boost::multiprecision::detail::digits2 >::value); + calc_pi(result, boost::multiprecision::detail::digits2 >::value); b = true; } diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index dbae9aac..c0c2abc8 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -90,7 +90,7 @@ void hyp0F0(T& H0F0, const T& x) typedef typename mpl::front::type ui_type; BOOST_ASSERT(&H0F0 != &x); - long tol = boost::multiprecision::detail::digits2 >::value; + long tol = boost::multiprecision::detail::digits2 >::value; T t; T x_pow_n_div_n_fact(x); @@ -146,7 +146,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) eval_multiply(H1F0, pochham_a, x_pow_n_div_n_fact); eval_add(H1F0, si_type(1)); T lim; - eval_ldexp(lim, H1F0, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, H1F0, 1 - boost::multiprecision::detail::digits2 >::value); if(eval_get_sign(lim) < 0) lim.negate(); @@ -154,7 +154,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) T term, part; // Series expansion of hyperg_1f0(a; ; x). - for(n = 2; n < boost::multiprecision::detail::digits2 >::value + 10; n++) + for(n = 2; n < boost::multiprecision::detail::digits2 >::value + 10; n++) { eval_multiply(x_pow_n_div_n_fact, x); eval_divide(x_pow_n_div_n_fact, n); @@ -167,7 +167,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) if(lim.compare(term) >= 0) break; } - if(n >= boost::multiprecision::detail::digits2 >::value + 10) + if(n >= boost::multiprecision::detail::digits2 >::value + 10) BOOST_THROW_EXCEPTION(std::runtime_error("H1F0 failed to converge")); } @@ -193,7 +193,7 @@ void eval_exp(T& result, const T& x) bool isneg = eval_get_sign(x) < 0; if(type == FP_NAN) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; } else if(type == FP_INFINITE) @@ -218,7 +218,7 @@ void eval_exp(T& result, const T& x) xx.negate(); // Check the range of the argument. - static const canonical_exp_type maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? (std::numeric_limits::max)() : std::numeric_limits >::max_exponent; + static const canonical_exp_type maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? (std::numeric_limits::max)() : std::numeric_limits >::max_exponent; if(xx.compare(maximum_arg_for_exp) >= 0) { @@ -226,7 +226,7 @@ void eval_exp(T& result, const T& x) if(isneg) result = ui_type(0); else - result = std::numeric_limits >::has_infinity ? std::numeric_limits >::infinity().backend() : (std::numeric_limits >::max)().backend(); + result = std::numeric_limits >::has_infinity ? std::numeric_limits >::infinity().backend() : (std::numeric_limits >::max)().backend(); return; } if(xx.compare(si_type(1)) <= 0) @@ -234,7 +234,7 @@ void eval_exp(T& result, const T& x) // // Use series for exp(x) - 1: // - T lim = std::numeric_limits >::epsilon().backend(); + T lim = std::numeric_limits >::epsilon().backend(); unsigned k = 2; exp_series = xx; result = si_type(1); @@ -344,7 +344,7 @@ void eval_log(T& result, const T& arg) else eval_subtract(result, t); - eval_multiply(lim, result, std::numeric_limits >::epsilon().backend()); + eval_multiply(lim, result, std::numeric_limits >::epsilon().backend()); if(eval_get_sign(lim) < 0) lim.negate(); INSTRUMENT_BACKEND(lim); @@ -465,7 +465,7 @@ inline void eval_pow(T& result, const T& x, const T& a) if((eval_get_sign(x) < 0) && !bo_a_isint) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); } T t, da; @@ -564,7 +564,7 @@ namespace detail{ ui_type k = 1; T lim(x); - eval_ldexp(lim, lim, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, lim, 1 - boost::multiprecision::detail::digits2 >::value); do { diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index b60722f5..4e57b070 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -36,7 +36,7 @@ void hyp0F1(T& result, const T& b, const T& x) T tol; tol = ui_type(1); - eval_ldexp(tol, tol, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(tol, tol, 1 - boost::multiprecision::detail::digits2 >::value); eval_multiply(tol, result); if(eval_get_sign(tol) < 0) tol.negate(); @@ -87,7 +87,7 @@ void eval_sin(T& result, const T& x) { case FP_INFINITE: case FP_NAN: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(0); @@ -233,7 +233,7 @@ void eval_cos(T& result, const T& x) { case FP_INFINITE: case FP_NAN: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(1); @@ -391,7 +391,7 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) eval_add(result, ui_type(1)); T lim; - eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); if(eval_get_sign(lim) < 0) lim.negate(); @@ -447,7 +447,7 @@ void eval_asin(T& result, const T& x) { case FP_NAN: case FP_INFINITE: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(0); @@ -464,7 +464,7 @@ void eval_asin(T& result, const T& x) int c = xx.compare(ui_type(1)); if(c > 0) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; } else if(c == 0) @@ -524,7 +524,7 @@ void eval_asin(T& result, const T& x) eval_subtract(result, s); T lim; - eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); if(eval_get_sign(s) < 0) s.negate(); if(eval_get_sign(lim) < 0) @@ -546,7 +546,7 @@ inline void eval_acos(T& result, const T& x) { case FP_NAN: case FP_INFINITE: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = get_constant_pi(); @@ -559,7 +559,7 @@ inline void eval_acos(T& result, const T& x) if(c > 0) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; } else if(c == 0) @@ -591,7 +591,7 @@ void eval_atan(T& result, const T& x) switch(eval_fpclassify(x)) { case FP_NAN: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(0); @@ -656,7 +656,7 @@ void eval_atan(T& result, const T& x) static const boost::int32_t double_digits10_minus_a_few = std::numeric_limits::digits10 - 3; T s, c, t; - for(boost::int32_t digits = double_digits10_minus_a_few; digits <= std::numeric_limits >::digits10; digits *= 2) + for(boost::int32_t digits = double_digits10_minus_a_few; digits <= std::numeric_limits >::digits10; digits *= 2) { eval_sin(s, result); eval_cos(c, result); @@ -710,7 +710,7 @@ void eval_atan2(T& result, const T& y, const T& x) { if(eval_fpclassify(x) == FP_INFINITE) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); } else { diff --git a/include/boost/multiprecision/detail/generic_interconvert.hpp b/include/boost/multiprecision/detail/generic_interconvert.hpp index adb1eea8..2cda6a6e 100644 --- a/include/boost/multiprecision/detail/generic_interconvert.hpp +++ b/include/boost/multiprecision/detail/generic_interconvert.hpp @@ -116,7 +116,7 @@ void generic_interconvert(To& to, const From& from, const mpl::int_ >::radix != 2) + if(std::numeric_limits >::radix != 2) { to = from.str(0, std::ios_base::fmtflags()).c_str(); return; @@ -190,10 +190,10 @@ void generic_interconvert(To& to, const From& from, const mpl::int_ void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) { - typedef typename component_type >::type from_component_type; - typedef typename component_type >::type to_component_type; + typedef typename component_type >::type from_component_type; + typedef typename component_type >::type to_component_type; - mp_number t(from); + number t(from); to_component_type n(numerator(t)), d(denominator(t)); using default_ops::assign_components; assign_components(to, n.backend(), d.backend()); @@ -202,9 +202,9 @@ void generic_interconvert(To& to, const From& from, const mpl::int_ void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) { - typedef typename component_type >::type to_component_type; + typedef typename component_type >::type to_component_type; - mp_number t(from); + number t(from); to_component_type n(t), d(1); using default_ops::assign_components; assign_components(to, n.backend(), d.backend()); @@ -213,12 +213,12 @@ void generic_interconvert(To& to, const From& from, const mpl::int_ void generic_interconvert(To& to, const From& from, const mpl::int_& /*to_type*/, const mpl::int_& /*from_type*/) { - typedef typename component_type >::type from_component_type; + typedef typename component_type >::type from_component_type; using default_ops::eval_divide; - mp_number t(from); + number t(from); from_component_type n(numerator(t)), d(denominator(t)); - mp_number fn(n), fd(d); + number fn(n), fd(d); eval_divide(to, fn.backend(), fd.backend()); } diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index ccdbbe8b..4103d81b 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -6,7 +6,7 @@ #ifndef BOOST_MP_INT_FUNC_HPP #define BOOST_MP_INT_FUNC_HPP -#include +#include namespace boost{ namespace multiprecision{ @@ -42,8 +42,8 @@ inline Integer eval_integer_modulus(const Backend& x, Integer val) template inline typename enable_if_c::value == number_kind_integer>::type - divide_qr(const mp_number& x, const mp_number& y, - mp_number& q, mp_number& r) + divide_qr(const number& x, const number& y, + number& q, number& r) { using default_ops::eval_qr; eval_qr(x.backend(), y.backend(), q.backend(), r.backend()); @@ -51,57 +51,57 @@ inline typename enable_if_c::value == number_kind_integ template inline typename enable_if_c::value == number_kind_integer>::type - divide_qr(const mp_number& x, const multiprecision::detail::mp_exp& y, - mp_number& q, mp_number& r) + divide_qr(const number& x, const multiprecision::detail::expression& y, + number& q, number& r) { - divide_qr(x, mp_number(y), q, r); + divide_qr(x, number(y), q, r); } template inline typename enable_if_c::value == number_kind_integer>::type - divide_qr(const multiprecision::detail::mp_exp& x, const mp_number& y, - mp_number& q, mp_number& r) + divide_qr(const multiprecision::detail::expression& x, const number& y, + number& q, number& r) { - divide_qr(mp_number(x), y, q, r); + divide_qr(number(x), y, q, r); } template inline typename enable_if_c::value == number_kind_integer>::type - divide_qr(const multiprecision::detail::mp_exp& x, const multiprecision::detail::mp_exp& y, - mp_number& q, mp_number& r) + divide_qr(const multiprecision::detail::expression& x, const multiprecision::detail::expression& y, + number& q, number& r) { - divide_qr(mp_number(x), mp_number(y), q, r); + divide_qr(number(x), number(y), q, r); } template inline typename enable_if, mpl::bool_::value == number_kind_integer> >, Integer>::type - integer_modulus(const mp_number& x, Integer val) + integer_modulus(const number& x, Integer val) { using default_ops::eval_integer_modulus; return eval_integer_modulus(x.backend(), val); } template -inline typename enable_if, mpl::bool_::result_type>::value == number_kind_integer> >, Integer>::type - integer_modulus(const multiprecision::detail::mp_exp& x, Integer val) +inline typename enable_if, mpl::bool_::result_type>::value == number_kind_integer> >, Integer>::type + integer_modulus(const multiprecision::detail::expression& x, Integer val) { - typedef typename multiprecision::detail::mp_exp::result_type result_type; + typedef typename multiprecision::detail::expression::result_type result_type; return integer_modulus(result_type(x), val); } template inline typename enable_if_c::value == number_kind_integer, unsigned>::type - lsb(const mp_number& x) + lsb(const number& x) { using default_ops::eval_lsb; return eval_lsb(x.backend()); } template -inline typename enable_if_c::result_type>::value == number_kind_integer, unsigned>::type - lsb(const multiprecision::detail::mp_exp& x) +inline typename enable_if_c::result_type>::value == number_kind_integer, unsigned>::type + lsb(const multiprecision::detail::expression& x) { - typedef typename multiprecision::detail::mp_exp::result_type number_type; + typedef typename multiprecision::detail::expression::result_type number_type; number_type n(x); using default_ops::eval_lsb; return eval_lsb(n.backend()); @@ -109,25 +109,25 @@ inline typename enable_if_c inline typename enable_if_c::value == number_kind_integer, bool>::type - bit_test(const mp_number& x, unsigned index) + bit_test(const number& x, unsigned index) { using default_ops::eval_bit_test; return eval_bit_test(x.backend(), index); } template -inline typename enable_if_c::result_type>::value == number_kind_integer, bool>::type - bit_test(const multiprecision::detail::mp_exp& x, unsigned index) +inline typename enable_if_c::result_type>::value == number_kind_integer, bool>::type + bit_test(const multiprecision::detail::expression& x, unsigned index) { - typedef typename multiprecision::detail::mp_exp::result_type number_type; + typedef typename multiprecision::detail::expression::result_type number_type; number_type n(x); using default_ops::eval_bit_test; return eval_bit_test(n.backend(), index); } template -inline typename enable_if_c::value == number_kind_integer, mp_number&>::type - bit_set(mp_number& x, unsigned index) +inline typename enable_if_c::value == number_kind_integer, number&>::type + bit_set(number& x, unsigned index) { using default_ops::eval_bit_set; eval_bit_set(x.backend(), index); @@ -135,8 +135,8 @@ inline typename enable_if_c::value == number_kind_integ } template -inline typename enable_if_c::value == number_kind_integer, mp_number&>::type - bit_unset(mp_number& x, unsigned index) +inline typename enable_if_c::value == number_kind_integer, number&>::type + bit_unset(number& x, unsigned index) { using default_ops::eval_bit_unset; eval_bit_unset(x.backend(), index); @@ -144,8 +144,8 @@ inline typename enable_if_c::value == number_kind_integ } template -inline typename enable_if_c::value == number_kind_integer, mp_number&>::type - bit_flip(mp_number& x, unsigned index) +inline typename enable_if_c::value == number_kind_integer, number&>::type + bit_flip(number& x, unsigned index) { using default_ops::eval_bit_flip; eval_bit_flip(x.backend(), index); @@ -314,10 +314,10 @@ inline typename enable_if< is_integral > >, - detail::mp_exp >::type + detail::expression >::type powm(const T& b, const U& p, const V& mod) { - return detail::mp_exp( + return detail::expression( detail::powm_func(), b, p, mod); } diff --git a/include/boost/multiprecision/detail/mp_number_base.hpp b/include/boost/multiprecision/detail/mp_number_base.hpp deleted file mode 100644 index 2d3e0b89..00000000 --- a/include/boost/multiprecision/detail/mp_number_base.hpp +++ /dev/null @@ -1,1262 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2011 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_BIG_NUM_BASE_HPP -#define BOOST_MATH_BIG_NUM_BASE_HPP - -#include -#include -#include -#include - -namespace boost{ namespace multiprecision{ - -template -class mp_number; - -template -struct is_mp_number : public mpl::false_ {}; - -template -struct is_mp_number > : public mpl::true_ {}; - -namespace detail{ - -// Forward-declare an expression wrapper -template -struct mp_exp; - -} // namespace detail - -template -struct is_mp_number_expression : public mpl::false_ {}; - -template -struct is_mp_number_expression > : public mpl::true_ {}; - -namespace detail{ -// -// Workaround for missing abs(long long) on some compilers: -// -template -typename boost::enable_if, T>::type abs(const T& t) BOOST_NOEXCEPT -{ - return t < 0 ? -t : t; -} - -#define BOOST_MP_USING_ABS using std::abs; using boost::multiprecision::detail::abs; - -// -// Move support: -// -#ifndef BOOST_NO_RVALUE_REFERENCES -# define BOOST_MP_MOVE(x) std::move(x) -#else -# define BOOST_MP_MOVE(x) x -#endif - -template -struct has_enough_bits -{ - template - struct type : public mpl::bool_::digits >= b>{}; -}; - -template -struct canonical_imp -{ - typedef Val type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::signed_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::unsigned_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef typename has_enough_bits::digits>::template type pred_type; - typedef typename mpl::find_if< - typename Backend::float_types, - pred_type - >::type iter_type; - typedef typename mpl::deref::type type; -}; -template -struct canonical_imp > -{ - typedef const char* type; -}; - -template -struct canonical -{ - typedef typename mpl::if_< - is_signed, - mpl::int_<0>, - typename mpl::if_< - is_unsigned, - mpl::int_<1>, - typename mpl::if_< - is_floating_point, - mpl::int_<2>, - typename mpl::if_< - mpl::or_< - is_convertible, - is_same - >, - mpl::int_<3>, - mpl::int_<4> - >::type - >::type - >::type - >::type tag_type; - - typedef typename canonical_imp::type type; -}; - -struct terminal{}; -struct negate{}; -struct plus{}; -struct minus{}; -struct multiplies{}; -struct divides{}; -struct modulus{}; -struct shift_left{}; -struct shift_right{}; -struct bitwise_and{}; -struct bitwise_or{}; -struct bitwise_xor{}; -struct bitwise_complement{}; -struct add_immediates{}; -struct subtract_immediates{}; -struct multiply_immediates{}; -struct divide_immediates{}; -struct modulus_immediates{}; -struct bitwise_and_immediates{}; -struct bitwise_or_immediates{}; -struct bitwise_xor_immediates{}; -struct complement_immediates{}; -struct function{}; - -template -struct backend_type; - -template -struct backend_type > -{ - typedef T type; -}; - -template -struct backend_type > -{ - typedef typename backend_type::result_type>::type type; -}; - - -template -struct is_mp_number : public mpl::false_{}; -template -struct is_mp_number > : public mpl::true_{}; -template -struct is_mp_number_exp : public mpl::false_{}; -template -struct is_mp_number_exp > : public mpl::true_{}; - -template -struct combine_expression; - -template -struct combine_expression, T2> -{ - typedef mp_number type; -}; - -template -struct combine_expression > -{ - typedef mp_number type; -}; - -template -struct combine_expression, mp_number > -{ - typedef mp_number type; -}; - -template -struct arg_type -{ - typedef mp_exp type; -}; - -template -struct arg_type > -{ - typedef mp_exp type; -}; - -template -struct unmentionable -{ - static void proc(){} -}; - -typedef void (*unmentionable_type)(); - -template -struct mp_exp_storage -{ - typedef const T& type; -}; - -template -struct mp_exp_storage -{ - typedef T* type; -}; - -template -struct mp_exp_storage -{ - typedef const T* type; -}; - -template -struct mp_exp_storage > -{ - typedef mp_exp type; -}; - -template -struct mp_exp -{ - typedef mpl::int_<1> arity; - typedef typename arg_type::type left_type; - typedef typename left_type::result_type result_type; - typedef tag tag_type; - - explicit mp_exp(const Arg1& a) : arg(a) {} - - left_type left()const { return left_type(arg); } - - const Arg1& left_ref()const BOOST_NOEXCEPT { return arg; } - - static const unsigned depth = left_type::depth + 1; - - operator unmentionable_type()const - { - result_type r(*this); - return r ? &unmentionable::proc : 0; - } - -private: - typename mp_exp_storage::type arg; - mp_exp& operator=(const mp_exp&); -}; - -template -struct mp_exp -{ - typedef mpl::int_<0> arity; - typedef Arg1 result_type; - typedef terminal tag_type; - - explicit mp_exp(const Arg1& a) : arg(a) {} - - const Arg1& value()const BOOST_NOEXCEPT { return arg; } - - static const unsigned depth = 0; - - operator unmentionable_type()const - { - return arg ? &unmentionable::proc : 0; - } - -private: - typename mp_exp_storage::type arg; - mp_exp& operator=(const mp_exp&); -}; - -template -struct mp_exp -{ - typedef mpl::int_<2> arity; - typedef typename arg_type::type left_type; - typedef typename arg_type::type right_type; - typedef typename left_type::result_type left_result_type; - typedef typename right_type::result_type right_result_type; - typedef typename combine_expression::type result_type; - typedef tag tag_type; - - mp_exp(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {} - - left_type left()const { return left_type(arg1); } - right_type right()const { return right_type(arg2); } - const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } - const Arg2& right_ref()const BOOST_NOEXCEPT { return arg2; } - - operator unmentionable_type()const - { - result_type r(*this); - return r ? &unmentionable::proc : 0; - } - - static const unsigned left_depth = left_type::depth + 1; - static const unsigned right_depth = right_type::depth + 1; - static const unsigned depth = left_depth > right_depth ? left_depth : right_depth; -private: - typename mp_exp_storage::type arg1; - typename mp_exp_storage::type arg2; - mp_exp& operator=(const mp_exp&); -}; - -template -struct mp_exp -{ - typedef mpl::int_<3> arity; - typedef typename arg_type::type left_type; - typedef typename arg_type::type middle_type; - typedef typename arg_type::type right_type; - typedef typename left_type::result_type left_result_type; - typedef typename middle_type::result_type middle_result_type; - typedef typename right_type::result_type right_result_type; - typedef typename combine_expression< - left_result_type, - typename combine_expression::type - >::type result_type; - typedef tag tag_type; - - mp_exp(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {} - - left_type left()const { return left_type(arg1); } - middle_type middle()const { return middle_type(arg2); } - right_type right()const { return right_type(arg3); } - const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } - const Arg2& middle_ref()const BOOST_NOEXCEPT { return arg2; } - const Arg3& right_ref()const BOOST_NOEXCEPT { return arg3; } - - operator unmentionable_type()const - { - result_type r(*this); - return r ? &unmentionable::proc : 0; - } - - static const unsigned left_depth = left_type::depth + 1; - static const unsigned middle_depth = middle_type::depth + 1; - static const unsigned right_depth = right_type::depth + 1; - static const unsigned depth = left_depth > right_depth ? (left_depth > middle_depth ? left_depth : middle_depth) : (right_depth > middle_depth ? right_depth : middle_depth); -private: - typename mp_exp_storage::type arg1; - typename mp_exp_storage::type arg2; - typename mp_exp_storage::type arg3; - mp_exp& operator=(const mp_exp&); -}; - -template -struct mp_exp -{ - typedef mpl::int_<4> arity; - typedef typename arg_type::type left_type; - typedef typename arg_type::type left_middle_type; - typedef typename arg_type::type right_middle_type; - typedef typename arg_type::type right_type; - typedef typename left_type::result_type left_result_type; - typedef typename left_middle_type::result_type left_middle_result_type; - typedef typename right_middle_type::result_type right_middle_result_type; - typedef typename right_type::result_type right_result_type; - typedef typename combine_expression< - typename combine_expression< - typename combine_expression::type, - right_middle_result_type - >::type, - right_result_type - >::type result_type; - typedef tag tag_type; - - mp_exp(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) : arg1(a1), arg2(a2), arg3(a3), arg4(a4) {} - - left_type left()const { return left_type(arg1); } - left_middle_type left_middle()const { return left_middle_type(arg2); } - right_middle_type right_middle()const { return right_middle_type(arg3); } - right_type right()const { return right_type(arg4); } - const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } - const Arg2& left_middle_ref()const BOOST_NOEXCEPT { return arg2; } - const Arg3& right_middle_ref()const BOOST_NOEXCEPT { return arg3; } - const Arg4& right_ref()const BOOST_NOEXCEPT { return arg4; } - - operator unmentionable_type()const - { - result_type r(*this); - return r ? &unmentionable::proc : 0; - } - - static const unsigned left_depth = left_type::depth + 1; - static const unsigned left_middle_depth = left_middle_type::depth + 1; - static const unsigned right_middle_depth = right_middle_type::depth + 1; - static const unsigned right_depth = right_type::depth + 1; - - static const unsigned left_max_depth = left_depth > left_middle_depth ? left_depth : left_middle_depth; - static const unsigned right_max_depth = right_depth > right_middle_depth ? right_depth : right_middle_depth; - - static const unsigned depth = left_max_depth > right_max_depth ? left_max_depth : right_max_depth; -private: - typename mp_exp_storage::type arg1; - typename mp_exp_storage::type arg2; - typename mp_exp_storage::type arg3; - typename mp_exp_storage::type arg4; - mp_exp& operator=(const mp_exp&); -}; - -template -struct digits2 -{ - BOOST_STATIC_ASSERT(std::numeric_limits::is_specialized); - BOOST_STATIC_ASSERT((std::numeric_limits::radix == 2) || (std::numeric_limits::radix == 10)); - // If we really have so many digits that this fails, then we're probably going to hit other problems anyway: - BOOST_STATIC_ASSERT(LONG_MAX / 1000 > (std::numeric_limits::digits + 1)); - static const long value = std::numeric_limits::radix == 10 ? (((std::numeric_limits::digits + 1) * 1000L) / 301L) : std::numeric_limits::digits; -}; - -#ifndef BOOST_MP_MIN_EXPONENT_DIGITS -#ifdef _MSC_VER -# define BOOST_MP_MIN_EXPONENT_DIGITS 2 -#else -# define BOOST_MP_MIN_EXPONENT_DIGITS 2 -#endif -#endif - -template -void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, std::ios_base::fmtflags f, bool iszero) -{ - typedef typename S::size_type size_type; - bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; - bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; - bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; - bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; - - bool neg = str.size() && (str[0] == '-'); - - if(neg) - str.erase(0, 1); - - if(digits == 0) - { - digits = (std::max)(str.size(), size_type(16)); - } - - if(iszero || str.empty() || (str.find_first_not_of('0') == S::npos)) - { - // We will be printing zero, even though the value might not - // actually be zero (it just may have been rounded to zero). - str = "0"; - if(scientific || fixed) - { - str.append(1, '.'); - str.append(size_type(digits), '0'); - if(scientific) - str.append("e+00"); - } - else - { - if(showpoint) - { - str.append(1, '.'); - if(digits > 1) - str.append(size_type(digits - 1), '0'); - } - } - if(neg) - str.insert(0, 1, '-'); - else if(showpos) - str.insert(0, 1, '+'); - return; - } - - if(!fixed && !scientific && !showpoint) - { - // - // Suppress trailing zeros: - // - std::string::iterator pos = str.end(); - while(pos != str.begin() && *--pos == '0'){} - if(pos != str.end()) - ++pos; - str.erase(pos, str.end()); - if(str.empty()) - str = '0'; - } - else if(!fixed || (my_exp >= 0)) - { - // - // Pad out the end with zero's if we need to: - // - boost::intmax_t chars = str.size(); - chars = digits - chars; - if(scientific) - ++chars; - if(chars > 0) - { - str.append(static_cast(chars), '0'); - } - } - - if(fixed || (!scientific && (my_exp >= -4) && (my_exp < digits))) - { - if(1 + my_exp > static_cast(str.size())) - { - // Just pad out the end with zeros: - str.append(static_cast(1 + my_exp - str.size()), '0'); - if(showpoint || fixed) - str.append("."); - } - else if(my_exp + 1 < static_cast(str.size())) - { - if(my_exp < 0) - { - str.insert(0, static_cast(-1 - my_exp), '0'); - str.insert(0, "0."); - } - else - { - // Insert the decimal point: - str.insert(static_cast(my_exp + 1), 1, '.'); - } - } - else if(showpoint || fixed) // we have exactly the digits we require to left of the point - str += "."; - - if(fixed) - { - // We may need to add trailing zeros: - boost::intmax_t l = str.find('.') + 1; - l = digits - (str.size() - l); - if(l > 0) - str.append(size_type(l), '0'); - } - } - else - { - BOOST_MP_USING_ABS - // Scientific format: - if(showpoint || (str.size() > 1)) - str.insert(1, 1, '.'); - str.append(1, 'e'); - S e = boost::lexical_cast(abs(my_exp)); - if(e.size() < BOOST_MP_MIN_EXPONENT_DIGITS) - e.insert(0, BOOST_MP_MIN_EXPONENT_DIGITS-e.size(), '0'); - if(my_exp < 0) - e.insert(0, 1, '-'); - else - e.insert(0, 1, '+'); - str.append(e); - } - if(neg) - str.insert(0, 1, '-'); - else if(showpos) - str.insert(0, 1, '+'); -} - -} // namespace detail - -// -// Non-member operators for mp_number: -// -// Unary operators first: -// -template -inline const mp_number& operator + (const mp_number& v) { return v; } -template -inline const detail::mp_exp& operator + (const detail::mp_exp& v) { return v; } -template -inline detail::mp_exp > operator - (const mp_number& v) { return detail::mp_exp >(v); } -template -inline detail::mp_exp > operator - (const detail::mp_exp& v) { return detail::mp_exp >(v); } -template -inline detail::mp_exp > operator ~ (const mp_number& v) { return detail::mp_exp >(v); } -template -inline detail::mp_exp > operator ~ (const detail::mp_exp& v) { return detail::mp_exp >(v); } -// -// Then addition: -// -template -inline detail::mp_exp, mp_number > - operator + (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator + (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator + (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator + (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator + (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator + (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator + (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator + (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator + (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); -} -template -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator + (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref()); -} -template -inline detail::mp_exp, mp_number > - operator + (const mp_number& a, const detail::mp_exp >& b) -{ - return detail::mp_exp, mp_number >(a, b.left_ref()); -} -template -inline detail::mp_exp, mp_number > - operator + (const detail::mp_exp >& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(b, a.left_ref()); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator + (const detail::mp_exp >& a, const V& b) -{ - return detail::mp_exp >(b, a.left_ref()); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator + (const V& a, const detail::mp_exp >& b) -{ - return detail::mp_exp, mp_number >(a, b.left_ref()); -} -// -// Subtraction: -// -template -inline detail::mp_exp, mp_number > - operator - (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator - (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator - (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator - (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator - (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator - (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator - (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator - (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::mp_exp, typename detail::mp_exp::left_type > - operator - (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref()); -} -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator - (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); -} -template -inline detail::mp_exp, mp_number > - operator - (const mp_number& a, const detail::mp_exp >& b) -{ - return detail::mp_exp, mp_number >(a, b.left_ref()); -} -template -inline detail::mp_exp, mp_number > > - operator - (const detail::mp_exp >& a, const mp_number& b) -{ - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(b, a.left_ref())); -} -template -inline typename enable_if, detail::mp_exp, V > > >::type - operator - (const detail::mp_exp >& a, const V& b) -{ - return detail::mp_exp, V > >(detail::mp_exp, V >(a.left_ref(), b)); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator - (const V& a, const detail::mp_exp >& b) -{ - return detail::mp_exp >(a, b.left_ref()); -} -// -// Multiplication: -// -template -inline detail::mp_exp, mp_number > - operator * (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator * (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator * (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator * (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator * (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator * (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator * (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator * (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator * (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type > (a, b.left_ref())); -} -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator * (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(b, a.left_ref())); -} -template -inline detail::mp_exp, mp_number > > - operator * (const mp_number& a, const detail::mp_exp >& b) -{ - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(a, b.left_ref())); -} -template -inline detail::mp_exp, mp_number > > - operator * (const detail::mp_exp >& a, const mp_number& b) -{ - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(b, a.left_ref())); -} -template -inline typename enable_if, detail::mp_exp, V > > >::type - operator * (const detail::mp_exp >& a, const V& b) -{ - return detail::mp_exp, V > > ( - detail::mp_exp, V >(a.left_ref(), b)); -} -template -inline typename enable_if, detail::mp_exp, V > > >::type - operator * (const V& a, const detail::mp_exp >& b) -{ - return detail::mp_exp, V > >( - detail::mp_exp, V >(b.left_ref(), a)); -} -// -// Division: -// -template -inline detail::mp_exp, mp_number > - operator / (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator / (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator / (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator / (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator / (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator / (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator / (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator / (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::mp_exp, typename detail::mp_exp::left_type > > - operator / (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, typename detail::mp_exp::left_type > >( - detail::mp_exp, typename detail::mp_exp::left_type >(a, b.left_ref())); -} -template -inline detail::mp_exp::left_type, mp_number > > - operator / (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp::left_type, mp_number > >( - detail::mp_exp::left_type, mp_number >(a.left_ref(), b)); -} -template -inline detail::mp_exp, mp_number > > - operator / (const mp_number& a, const detail::mp_exp >& b) -{ - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(a, b.left_ref())); -} -template -inline detail::mp_exp, mp_number > > - operator / (const detail::mp_exp >& a, const mp_number& b) -{ - return detail::mp_exp, mp_number > >( - detail::mp_exp, mp_number >(a.left_ref(), b)); -} -template -inline typename enable_if, detail::mp_exp, V > > >::type - operator / (const detail::mp_exp >& a, const V& b) -{ - return detail::mp_exp, V > >( - detail::mp_exp, V>(a.left_ref(), b)); -} -template -inline typename enable_if, detail::mp_exp > > >::type - operator / (const V& a, const detail::mp_exp >& b) -{ - return detail::mp_exp > >( - detail::mp_exp >(a, b.left_ref())); -} -// -// Modulus: -// -template -inline detail::mp_exp, mp_number > - operator % (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator % (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator % (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator % (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator % (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator % (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator % (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator % (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} -// -// Left shift: -// -template -inline typename enable_if, detail::mp_exp, I > >::type - operator << (const mp_number& a, const I& b) -{ - return detail::mp_exp, I>(a, b); -} -template -inline typename enable_if, detail::mp_exp, I> >::type - operator << (const detail::mp_exp& a, const I& b) -{ - return detail::mp_exp, I>(a, b); -} -// -// Right shift: -// -template -inline typename enable_if, detail::mp_exp, I > >::type - operator >> (const mp_number& a, const I& b) -{ - return detail::mp_exp, I>(a, b); -} -template -inline typename enable_if, detail::mp_exp, I> >::type - operator >> (const detail::mp_exp& a, const I& b) -{ - return detail::mp_exp, I>(a, b); -} -// -// Bitwise AND: -// -template -inline detail::mp_exp, mp_number > - operator & (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator & (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator & (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator & (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator & (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator & (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator & (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator & (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} -// -// Bitwise OR: -// -template -inline detail::mp_exp, mp_number > - operator| (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator| (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator| (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator| (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator| (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator| (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator| (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator| (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} -// -// Bitwise XOR: -// -template -inline detail::mp_exp, mp_number > - operator^ (const mp_number& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator^ (const mp_number& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator^ (const V& a, const mp_number& b) -{ - return detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator^ (const mp_number& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline detail::mp_exp, mp_number > - operator^ (const detail::mp_exp& a, const mp_number& b) -{ - return detail::mp_exp, mp_number >(a, b); -} -template -inline detail::mp_exp, detail::mp_exp > - operator^ (const detail::mp_exp& a, const detail::mp_exp& b) -{ - return detail::mp_exp, detail::mp_exp >(a, b); -} -template -inline typename enable_if, detail::mp_exp, V > >::type - operator^ (const detail::mp_exp& a, const V& b) -{ - return detail::mp_exp, V >(a, b); -} -template -inline typename enable_if, detail::mp_exp > >::type - operator^ (const V& a, const detail::mp_exp& b) -{ - return detail::mp_exp >(a, b); -} - -// -// Traits class, lets us know what kind of number we have, defaults to a floating point type: -// -enum number_category_type -{ - number_kind_integer = 0, - number_kind_floating_point = 1, - number_kind_rational = 2, - number_kind_fixed_point = 3 -}; - -template -struct number_category : public mpl::int_ {}; -template -struct number_category > : public number_category{}; -template -struct number_category > : public number_category::result_type>{}; - -template -struct component_type; -template -struct component_type > : public component_type{}; -template -struct component_type > : public component_type::result_type>{}; - -}} // namespaces - -namespace boost{ namespace math{ namespace tools{ - -template -struct promote_arg; - -template -struct promote_arg > -{ - typedef typename boost::multiprecision::detail::mp_exp::result_type type; -}; - -template -inline R real_cast(const boost::multiprecision::mp_number& val) -{ - return val.template convert_to(); -} - -template -inline R real_cast(const boost::multiprecision::detail::mp_exp& val) -{ - typedef typename boost::multiprecision::detail::mp_exp::result_type val_type; - return val_type(val).template convert_to(); -} - - -}}} - -#endif // BOOST_MATH_BIG_NUM_BASE_HPP - - diff --git a/include/boost/multiprecision/detail/mp_number_compare.hpp b/include/boost/multiprecision/detail/mp_number_compare.hpp deleted file mode 100644 index e8d53b9d..00000000 --- a/include/boost/multiprecision/detail/mp_number_compare.hpp +++ /dev/null @@ -1,482 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright 2012 John Maddock. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MP_COMPARE_HPP -#define BOOST_MP_COMPARE_HPP - -// -// Comparison operators for mp_number. -// - -namespace boost{ namespace multiprecision{ - -namespace default_ops{ - -template -inline bool eval_eq(const B& a, const B& b) -{ - return a.compare(b) == 0; -} -template -inline bool eval_eq(const B& a, const A& b) -{ - typedef typename mpl::if_< - is_convertible >, - mp_number, - mp_number - >::type mp_type; - mp_type t(b); - return eval_eq(a, t.backend()); -} - -template -inline bool eval_lt(const B& a, const B& b) -{ - return a.compare(b) < 0; -} -template -inline bool eval_lt(const B& a, const A& b) -{ - typedef typename mpl::if_< - is_convertible >, - mp_number, - mp_number - >::type mp_type; - mp_type t(b); - return eval_lt(a, t.backend()); -} - -template -inline bool eval_gt(const B& a, const B& b) -{ - return a.compare(b) > 0; -} -template -inline bool eval_gt(const B& a, const A& b) -{ - typedef typename mpl::if_< - is_convertible >, - mp_number, - mp_number - >::type mp_type; - mp_type t(b); - return eval_gt(a, t.backend()); -} - -} - -template -inline bool operator == (const mp_number& a, const mp_number& b) -{ - using default_ops::eval_eq; - return eval_eq(a.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator == (const mp_number& a, const Arithmetic& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - return eval_eq(a.backend(), ct(b)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator == (const mp_number& a, const detail::mp_exp& b) -{ - using default_ops::eval_eq; - typename detail::mp_exp::result_type t(b); - return eval_eq(a.backend(), t.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator == (const Arithmetic& a, const mp_number& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - return eval_eq(b.backend(), ct(a)); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator == (const Arithmetic& a, const detail::mp_exp& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - result_type t(b); - return eval_eq(t.backend(), ct(a)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator == (const detail::mp_exp& a, const mp_number& b) -{ - using default_ops::eval_eq; - typename detail::mp_exp::result_type t(a); - return eval_eq(t.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator == (const detail::mp_exp& a, const Arithmetic& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - result_type t(a); - return eval_eq(t.backend(), ct(b)); -} -template -inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type - operator == (const detail::mp_exp& a, const detail::mp_exp& b) -{ - using default_ops::eval_eq; - typename detail::mp_exp::result_type t(a); - typename detail::mp_exp::result_type t2(b); - return eval_eq(t.backend(), t2.backend()); -} - -template -inline bool operator != (const mp_number& a, const mp_number& b) -{ - using default_ops::eval_eq; - return !eval_eq(a.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator != (const mp_number& a, const Arithmetic& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - return !eval_eq(a.backend(), ct(b)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator != (const mp_number& a, const detail::mp_exp& b) -{ - using default_ops::eval_eq; - typename detail::mp_exp::result_type t(b); - return !eval_eq(a.backend(), t.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator != (const Arithmetic& a, const mp_number& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - return !eval_eq(b.backend(), ct(a)); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator != (const Arithmetic& a, const detail::mp_exp& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - result_type t(b); - return !eval_eq(t.backend(), ct(a)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator != (const detail::mp_exp& a, const mp_number& b) -{ - using default_ops::eval_eq; - typename detail::mp_exp::result_type t(a); - return !eval_eq(t.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator != (const detail::mp_exp& a, const Arithmetic& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_eq; - result_type t(a); - return !eval_eq(t.backend(), ct(b)); -} -template -inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type - operator != (const detail::mp_exp& a, const detail::mp_exp& b) -{ - using default_ops::eval_eq; - typename detail::mp_exp::result_type t(a); - typename detail::mp_exp::result_type t2(b); - return !eval_eq(t.backend(), t2.backend()); -} - -template -inline bool operator < (const mp_number& a, const mp_number& b) -{ - using default_ops::eval_lt; - return eval_lt(a.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator < (const mp_number& a, const Arithmetic& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - return eval_lt(a.backend(), ct(b)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator < (const mp_number& a, const detail::mp_exp& b) -{ - using default_ops::eval_lt; - typename detail::mp_exp::result_type t(b); - return eval_lt(a.backend(), t.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator < (const Arithmetic& a, const mp_number& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - return eval_gt(b.backend(), ct(a)); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator < (const Arithmetic& a, const detail::mp_exp& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - result_type t(b); - return eval_gt(t.backend(), ct(a)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator < (const detail::mp_exp& a, const mp_number& b) -{ - using default_ops::eval_lt; - typename detail::mp_exp::result_type t(a); - return eval_lt(t.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator < (const detail::mp_exp& a, const Arithmetic& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - result_type t(a); - return eval_lt(t.backend(), ct(b)); -} -template -inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type - operator < (const detail::mp_exp& a, const detail::mp_exp& b) -{ - using default_ops::eval_lt; - typename detail::mp_exp::result_type t(a); - typename detail::mp_exp::result_type t2(b); - return eval_lt(t.backend(), t2.backend()); -} - -template -inline bool operator > (const mp_number& a, const mp_number& b) -{ - using default_ops::eval_gt; - return eval_gt(a.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator > (const mp_number& a, const Arithmetic& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - return eval_gt(a.backend(), ct(b)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator > (const mp_number& a, const detail::mp_exp& b) -{ - using default_ops::eval_gt; - typename detail::mp_exp::result_type t(b); - return eval_gt(a.backend(), t.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator > (const Arithmetic& a, const mp_number& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - return eval_lt(b.backend(), ct(a)); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator > (const Arithmetic& a, const detail::mp_exp& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - result_type t(b); - return eval_lt(t.backend(), ct(a)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator > (const detail::mp_exp& a, const mp_number& b) -{ - using default_ops::eval_gt; - typename detail::mp_exp::result_type t(a); - return eval_gt(t.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator > (const detail::mp_exp& a, const Arithmetic& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - result_type t(a); - return eval_gt(t.backend(), ct(b)); -} -template -inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type - operator > (const detail::mp_exp& a, const detail::mp_exp& b) -{ - using default_ops::eval_gt; - typename detail::mp_exp::result_type t(a); - typename detail::mp_exp::result_type t2(b); - return eval_gt(t.backend(), t2.backend()); -} - -template -inline bool operator <= (const mp_number& a, const mp_number& b) -{ - using default_ops::eval_gt; - return !eval_gt(a.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator <= (const mp_number& a, const Arithmetic& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - return !eval_gt(a.backend(), ct(b)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator <= (const mp_number& a, const detail::mp_exp& b) -{ - using default_ops::eval_gt; - typename detail::mp_exp::result_type t(b); - return !eval_gt(a.backend(), t.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator <= (const Arithmetic& a, const mp_number& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - return !eval_lt(b.backend(), ct(a)); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator <= (const Arithmetic& a, const detail::mp_exp& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - result_type t(b); - return !eval_lt(t.backend(), ct(a)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator <= (const detail::mp_exp& a, const mp_number& b) -{ - using default_ops::eval_gt; - typename detail::mp_exp::result_type t(a); - return !eval_gt(t.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator <= (const detail::mp_exp& a, const Arithmetic& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - result_type t(a); - return !eval_gt(t.backend(), ct(b)); -} -template -inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type - operator <= (const detail::mp_exp& a, const detail::mp_exp& b) -{ - using default_ops::eval_gt; - typename detail::mp_exp::result_type t(a); - typename detail::mp_exp::result_type t2(b); - return !eval_gt(t.backend(), t2.backend()); -} - -template -inline bool operator >= (const mp_number& a, const mp_number& b) -{ - using default_ops::eval_lt; - return !eval_lt(a.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator >= (const mp_number& a, const Arithmetic& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - return !eval_lt(a.backend(), ct(b)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator >= (const mp_number& a, const detail::mp_exp& b) -{ - using default_ops::eval_lt; - typename detail::mp_exp::result_type t(b); - return !eval_lt(a.backend(), t.backend()); -} -template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator >= (const Arithmetic& a, const mp_number& b) -{ - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - return !eval_gt(b.backend(), ct(a)); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator >= (const Arithmetic& a, const detail::mp_exp& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_gt; - result_type t(b); - return !eval_gt(t.backend(), ct(a)); -} -template -inline typename enable_if, typename detail::mp_exp::result_type>, bool>::type - operator >= (const detail::mp_exp& a, const mp_number& b) -{ - using default_ops::eval_lt; - typename detail::mp_exp::result_type t(a); - return !eval_lt(t.backend(), b.backend()); -} -template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type - operator >= (const detail::mp_exp& a, const Arithmetic& b) -{ - typedef typename detail::mp_exp::result_type result_type; - typedef typename detail::canonical::type ct; - using default_ops::eval_lt; - result_type t(a); - return !eval_lt(t.backend(), ct(b)); -} -template -inline typename enable_if::result_type, typename detail::mp_exp::result_type>, bool>::type - operator >= (const detail::mp_exp& a, const detail::mp_exp& b) -{ - using default_ops::eval_lt; - typename detail::mp_exp::result_type t(a); - typename detail::mp_exp::result_type t2(b); - return !eval_lt(t.backend(), t2.backend()); -} - - -}} // namespaces - -#endif // BOOST_MP_COMPARE_HPP - diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index aa1ea7e6..28c7c6d4 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -10,21 +10,21 @@ namespace boost{ namespace multiprecision{ // -// Operators for non-expression template enabled mp_number. +// Operators for non-expression template enabled number. // NOTE: this is not a complete header - really just a suffix to default_ops.hpp. // NOTE: these operators have to be defined after the methods in default_ops.hpp. // template -inline mp_number operator - (const mp_number& v) +inline number operator - (const number& v) { - mp_number result(v); + number result(v); result.backend().negate(); return BOOST_MP_MOVE(result); } template -inline mp_number operator ~ (const mp_number& v) +inline number operator ~ (const number& v) { - mp_number result; + number result; eval_complement(result.backend(), v.backend()); return BOOST_MP_MOVE(result); } @@ -32,29 +32,29 @@ inline mp_number operator ~ (const mp_number& v) // Addition: // template -inline mp_number operator + (const mp_number& a, const mp_number& b) +inline number operator + (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_add; eval_add(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator + (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator + (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_add; eval_add(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator + (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator + (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_add; eval_add(result.backend(), b.backend(), static_cast(a)); return BOOST_MP_MOVE(result); @@ -63,29 +63,29 @@ inline typename enable_if, mp_number >::type // Subtraction: // template -inline mp_number operator - (const mp_number& a, const mp_number& b) +inline number operator - (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_subtract; eval_subtract(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator - (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator - (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_subtract; eval_subtract(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator - (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator - (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_subtract; eval_subtract(result.backend(), static_cast(a), b.backend()); return BOOST_MP_MOVE(result); @@ -94,29 +94,29 @@ inline typename enable_if, mp_number >::type // Multiply: // template -inline mp_number operator * (const mp_number& a, const mp_number& b) +inline number operator * (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_multiply; eval_multiply(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator * (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator * (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_multiply; eval_multiply(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator * (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator * (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_multiply; eval_multiply(result.backend(), b.backend(), static_cast(a)); return BOOST_MP_MOVE(result); @@ -125,29 +125,29 @@ inline typename enable_if, mp_number >::type // divide: // template -inline mp_number operator / (const mp_number& a, const mp_number& b) +inline number operator / (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_divide; eval_divide(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator / (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator / (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_divide; eval_divide(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator / (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator / (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_divide; eval_divide(result.backend(), static_cast(a), b.backend()); return BOOST_MP_MOVE(result); @@ -156,29 +156,29 @@ inline typename enable_if, mp_number >::type // modulus: // template -inline mp_number operator % (const mp_number& a, const mp_number& b) +inline number operator % (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_modulus; eval_modulus(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator % (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator % (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_modulus; eval_modulus(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator % (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator % (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_modulus; eval_modulus(result.backend(), static_cast(a), b.backend()); return BOOST_MP_MOVE(result); @@ -187,29 +187,29 @@ inline typename enable_if, mp_number >::type // Bitwise or: // template -inline mp_number operator | (const mp_number& a, const mp_number& b) +inline number operator | (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_bitwise_or; eval_bitwise_or(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator | (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator | (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_bitwise_or; eval_bitwise_or(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator | (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator | (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_bitwise_or; eval_bitwise_or(result.backend(), b.backend(), static_cast(a)); return BOOST_MP_MOVE(result); @@ -218,29 +218,29 @@ inline typename enable_if, mp_number >::type // Bitwise xor: // template -inline mp_number operator ^ (const mp_number& a, const mp_number& b) +inline number operator ^ (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_bitwise_xor; eval_bitwise_xor(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator ^ (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator ^ (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_bitwise_xor; eval_bitwise_xor(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator ^ (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator ^ (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_bitwise_xor; eval_bitwise_xor(result.backend(), b.backend(), static_cast(a)); return BOOST_MP_MOVE(result); @@ -249,29 +249,29 @@ inline typename enable_if, mp_number >::type // Bitwise and: // template -inline mp_number operator & (const mp_number& a, const mp_number& b) +inline number operator & (const number& a, const number& b) { - mp_number result; + number result; using default_ops::eval_bitwise_and; eval_bitwise_and(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator & (const mp_number& a, const V& b) +inline typename enable_if, number >::type + operator & (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_bitwise_and; eval_bitwise_and(result.backend(), a.backend(), static_cast(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator & (const V& a, const mp_number& b) +inline typename enable_if, number >::type + operator & (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; - mp_number result; + number result; using default_ops::eval_bitwise_and; eval_bitwise_and(result.backend(), b.backend(), static_cast(a)); return BOOST_MP_MOVE(result); @@ -280,19 +280,19 @@ inline typename enable_if, mp_number >::type // shifts: // template -inline typename enable_if, mp_number >::type - operator << (const mp_number& a, const I& b) +inline typename enable_if, number >::type + operator << (const number& a, const I& b) { - mp_number result(a); + number result(a); using default_ops::eval_left_shift; eval_left_shift(result.backend(), b); return BOOST_MP_MOVE(result); } template -inline typename enable_if, mp_number >::type - operator >> (const mp_number& a, const I& b) +inline typename enable_if, number >::type + operator >> (const number& a, const I& b) { - mp_number result(a); + number result(a); using default_ops::eval_right_shift; eval_right_shift(result.backend(), b); return BOOST_MP_MOVE(result); @@ -311,327 +311,327 @@ inline typename enable_if, mp_number >::type // semantics help a great deal in return by value, so performance is still pretty good... // template -inline mp_number operator - (mp_number&& v) +inline number operator - (number&& v) { v.backend().negate(); - return static_cast&&>(v); + return static_cast&&>(v); } template -inline mp_number operator ~ (mp_number&& v) +inline number operator ~ (number&& v) { eval_complement(v.backend(), v.backend()); - return static_cast&&>(v); + return static_cast&&>(v); } // // Addition: // template -inline mp_number operator + (mp_number&& a, const mp_number& b) +inline number operator + (number&& a, const number& b) { using default_ops::eval_add; eval_add(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline mp_number operator + (const mp_number& a, mp_number&& b) +inline number operator + (const number& a, number&& b) { using default_ops::eval_add; eval_add(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline mp_number operator + (mp_number&& a, mp_number&& b) +inline number operator + (number&& a, number&& b) { using default_ops::eval_add; eval_add(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator + (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator + (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_add; eval_add(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator + (const V& a, mp_number&& b) +inline typename enable_if, number >::type + operator + (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_add; eval_add(b.backend(), static_cast(a)); - return static_cast&&>(b); + return static_cast&&>(b); } // // Subtraction: // template -inline mp_number operator - (mp_number&& a, const mp_number& b) +inline number operator - (number&& a, const number& b) { using default_ops::eval_subtract; eval_subtract(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline mp_number operator - (const mp_number& a, mp_number&& b) +inline number operator - (const number& a, number&& b) { using default_ops::eval_subtract; eval_subtract(b.backend(), a.backend()); b.backend().negate(); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline mp_number operator - (mp_number&& a, mp_number&& b) +inline number operator - (number&& a, number&& b) { using default_ops::eval_subtract; eval_subtract(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator - (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator - (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_subtract; eval_subtract(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator - (const V& a, mp_number&& b) +inline typename enable_if, number >::type + operator - (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_subtract; eval_subtract(b.backend(), static_cast(a)); b.backend().negate(); - return static_cast&&>(b); + return static_cast&&>(b); } // // Multiply: // template -inline mp_number operator * (mp_number&& a, const mp_number& b) +inline number operator * (number&& a, const number& b) { using default_ops::eval_multiply; eval_multiply(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline mp_number operator * (const mp_number& a, mp_number&& b) +inline number operator * (const number& a, number&& b) { using default_ops::eval_multiply; eval_multiply(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline mp_number operator * (mp_number&& a, mp_number&& b) +inline number operator * (number&& a, number&& b) { using default_ops::eval_multiply; eval_multiply(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator * (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator * (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_multiply; eval_multiply(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator * (const V& a, mp_number&& b) +inline typename enable_if, number >::type + operator * (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_multiply; eval_multiply(b.backend(), static_cast(a)); - return static_cast&&>(b); + return static_cast&&>(b); } // // divide: // template -inline mp_number operator / (mp_number&& a, const mp_number& b) +inline number operator / (number&& a, const number& b) { using default_ops::eval_divide; eval_divide(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator / (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator / (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_divide; eval_divide(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } // // modulus: // template -inline mp_number operator % (mp_number&& a, const mp_number& b) +inline number operator % (number&& a, const number& b) { using default_ops::eval_modulus; eval_modulus(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator % (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator % (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_modulus; eval_modulus(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } // // Bitwise or: // template -inline mp_number operator | (mp_number&& a, const mp_number& b) +inline number operator | (number&& a, const number& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline mp_number operator | (const mp_number& a, mp_number&& b) +inline number operator | (const number& a, number&& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline mp_number operator | (mp_number&& a, mp_number&& b) +inline number operator | (number&& a, number&& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator | (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator | (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_or; eval_bitwise_or(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator | (const V& a, mp_number&& b) +inline typename enable_if, number >::type + operator | (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_or; eval_bitwise_or(b.backend(), static_cast(a)); - return static_cast&&>(b); + return static_cast&&>(b); } // // Bitwise xor: // template -inline mp_number operator ^ (mp_number&& a, const mp_number& b) +inline number operator ^ (number&& a, const number& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline mp_number operator ^ (const mp_number& a, mp_number&& b) +inline number operator ^ (const number& a, number&& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline mp_number operator ^ (mp_number&& a, mp_number&& b) +inline number operator ^ (number&& a, number&& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator ^ (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator ^ (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_xor; eval_bitwise_xor(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator ^ (const V& a, mp_number&& b) +inline typename enable_if, number >::type + operator ^ (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_xor; eval_bitwise_xor(b.backend(), static_cast(a)); - return static_cast&&>(b); + return static_cast&&>(b); } // // Bitwise and: // template -inline mp_number operator & (mp_number&& a, const mp_number& b) +inline number operator & (number&& a, const number& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline mp_number operator & (const mp_number& a, mp_number&& b) +inline number operator & (const number& a, number&& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline mp_number operator & (mp_number&& a, mp_number&& b) +inline number operator & (number&& a, number&& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator & (mp_number&& a, const V& b) +inline typename enable_if, number >::type + operator & (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_and; eval_bitwise_and(a.backend(), static_cast(b)); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator & (const V& a, mp_number&& b) +inline typename enable_if, number >::type + operator & (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_and; eval_bitwise_and(b.backend(), static_cast(a)); - return static_cast&&>(b); + return static_cast&&>(b); } // // shifts: // template -inline typename enable_if, mp_number >::type - operator << (mp_number&& a, const I& b) +inline typename enable_if, number >::type + operator << (number&& a, const I& b) { using default_ops::eval_left_shift; eval_left_shift(a.backend(), b); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, mp_number >::type - operator >> (mp_number&& a, const I& b) +inline typename enable_if, number >::type + operator >> (number&& a, const I& b) { using default_ops::eval_right_shift; eval_right_shift(a.backend(), b); - return static_cast&&>(a); + return static_cast&&>(a); } #endif diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp new file mode 100644 index 00000000..29f5379a --- /dev/null +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -0,0 +1,1262 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_BIG_NUM_BASE_HPP +#define BOOST_MATH_BIG_NUM_BASE_HPP + +#include +#include +#include +#include + +namespace boost{ namespace multiprecision{ + +template +class number; + +template +struct is_mp_number : public mpl::false_ {}; + +template +struct is_mp_number > : public mpl::true_ {}; + +namespace detail{ + +// Forward-declare an expression wrapper +template +struct expression; + +} // namespace detail + +template +struct is_mp_number_expression : public mpl::false_ {}; + +template +struct is_mp_number_expression > : public mpl::true_ {}; + +namespace detail{ +// +// Workaround for missing abs(long long) on some compilers: +// +template +typename boost::enable_if, T>::type abs(const T& t) BOOST_NOEXCEPT +{ + return t < 0 ? -t : t; +} + +#define BOOST_MP_USING_ABS using std::abs; using boost::multiprecision::detail::abs; + +// +// Move support: +// +#ifndef BOOST_NO_RVALUE_REFERENCES +# define BOOST_MP_MOVE(x) std::move(x) +#else +# define BOOST_MP_MOVE(x) x +#endif + +template +struct has_enough_bits +{ + template + struct type : public mpl::bool_::digits >= b>{}; +}; + +template +struct canonical_imp +{ + typedef Val type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::signed_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::unsigned_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename mpl::find_if< + typename Backend::float_types, + pred_type + >::type iter_type; + typedef typename mpl::deref::type type; +}; +template +struct canonical_imp > +{ + typedef const char* type; +}; + +template +struct canonical +{ + typedef typename mpl::if_< + is_signed, + mpl::int_<0>, + typename mpl::if_< + is_unsigned, + mpl::int_<1>, + typename mpl::if_< + is_floating_point, + mpl::int_<2>, + typename mpl::if_< + mpl::or_< + is_convertible, + is_same + >, + mpl::int_<3>, + mpl::int_<4> + >::type + >::type + >::type + >::type tag_type; + + typedef typename canonical_imp::type type; +}; + +struct terminal{}; +struct negate{}; +struct plus{}; +struct minus{}; +struct multiplies{}; +struct divides{}; +struct modulus{}; +struct shift_left{}; +struct shift_right{}; +struct bitwise_and{}; +struct bitwise_or{}; +struct bitwise_xor{}; +struct bitwise_complement{}; +struct add_immediates{}; +struct subtract_immediates{}; +struct multiply_immediates{}; +struct divide_immediates{}; +struct modulus_immediates{}; +struct bitwise_and_immediates{}; +struct bitwise_or_immediates{}; +struct bitwise_xor_immediates{}; +struct complement_immediates{}; +struct function{}; + +template +struct backend_type; + +template +struct backend_type > +{ + typedef T type; +}; + +template +struct backend_type > +{ + typedef typename backend_type::result_type>::type type; +}; + + +template +struct is_mp_number : public mpl::false_{}; +template +struct is_mp_number > : public mpl::true_{}; +template +struct is_mp_number_exp : public mpl::false_{}; +template +struct is_mp_number_exp > : public mpl::true_{}; + +template +struct combine_expression; + +template +struct combine_expression, T2> +{ + typedef number type; +}; + +template +struct combine_expression > +{ + typedef number type; +}; + +template +struct combine_expression, number > +{ + typedef number type; +}; + +template +struct arg_type +{ + typedef expression type; +}; + +template +struct arg_type > +{ + typedef expression type; +}; + +template +struct unmentionable +{ + static void proc(){} +}; + +typedef void (*unmentionable_type)(); + +template +struct expression_storage +{ + typedef const T& type; +}; + +template +struct expression_storage +{ + typedef T* type; +}; + +template +struct expression_storage +{ + typedef const T* type; +}; + +template +struct expression_storage > +{ + typedef expression type; +}; + +template +struct expression +{ + typedef mpl::int_<1> arity; + typedef typename arg_type::type left_type; + typedef typename left_type::result_type result_type; + typedef tag tag_type; + + explicit expression(const Arg1& a) : arg(a) {} + + left_type left()const { return left_type(arg); } + + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg; } + + static const unsigned depth = left_type::depth + 1; + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + +private: + typename expression_storage::type arg; + expression& operator=(const expression&); +}; + +template +struct expression +{ + typedef mpl::int_<0> arity; + typedef Arg1 result_type; + typedef terminal tag_type; + + explicit expression(const Arg1& a) : arg(a) {} + + const Arg1& value()const BOOST_NOEXCEPT { return arg; } + + static const unsigned depth = 0; + + operator unmentionable_type()const + { + return arg ? &unmentionable::proc : 0; + } + +private: + typename expression_storage::type arg; + expression& operator=(const expression&); +}; + +template +struct expression +{ + typedef mpl::int_<2> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression::type result_type; + typedef tag tag_type; + + expression(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {} + + left_type left()const { return left_type(arg1); } + right_type right()const { return right_type(arg2); } + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } + const Arg2& right_ref()const BOOST_NOEXCEPT { return arg2; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + static const unsigned depth = left_depth > right_depth ? left_depth : right_depth; +private: + typename expression_storage::type arg1; + typename expression_storage::type arg2; + expression& operator=(const expression&); +}; + +template +struct expression +{ + typedef mpl::int_<3> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type middle_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename middle_type::result_type middle_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression< + left_result_type, + typename combine_expression::type + >::type result_type; + typedef tag tag_type; + + expression(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {} + + left_type left()const { return left_type(arg1); } + middle_type middle()const { return middle_type(arg2); } + right_type right()const { return right_type(arg3); } + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } + const Arg2& middle_ref()const BOOST_NOEXCEPT { return arg2; } + const Arg3& right_ref()const BOOST_NOEXCEPT { return arg3; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned middle_depth = middle_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + static const unsigned depth = left_depth > right_depth ? (left_depth > middle_depth ? left_depth : middle_depth) : (right_depth > middle_depth ? right_depth : middle_depth); +private: + typename expression_storage::type arg1; + typename expression_storage::type arg2; + typename expression_storage::type arg3; + expression& operator=(const expression&); +}; + +template +struct expression +{ + typedef mpl::int_<4> arity; + typedef typename arg_type::type left_type; + typedef typename arg_type::type left_middle_type; + typedef typename arg_type::type right_middle_type; + typedef typename arg_type::type right_type; + typedef typename left_type::result_type left_result_type; + typedef typename left_middle_type::result_type left_middle_result_type; + typedef typename right_middle_type::result_type right_middle_result_type; + typedef typename right_type::result_type right_result_type; + typedef typename combine_expression< + typename combine_expression< + typename combine_expression::type, + right_middle_result_type + >::type, + right_result_type + >::type result_type; + typedef tag tag_type; + + expression(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) : arg1(a1), arg2(a2), arg3(a3), arg4(a4) {} + + left_type left()const { return left_type(arg1); } + left_middle_type left_middle()const { return left_middle_type(arg2); } + right_middle_type right_middle()const { return right_middle_type(arg3); } + right_type right()const { return right_type(arg4); } + const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; } + const Arg2& left_middle_ref()const BOOST_NOEXCEPT { return arg2; } + const Arg3& right_middle_ref()const BOOST_NOEXCEPT { return arg3; } + const Arg4& right_ref()const BOOST_NOEXCEPT { return arg4; } + + operator unmentionable_type()const + { + result_type r(*this); + return r ? &unmentionable::proc : 0; + } + + static const unsigned left_depth = left_type::depth + 1; + static const unsigned left_middle_depth = left_middle_type::depth + 1; + static const unsigned right_middle_depth = right_middle_type::depth + 1; + static const unsigned right_depth = right_type::depth + 1; + + static const unsigned left_max_depth = left_depth > left_middle_depth ? left_depth : left_middle_depth; + static const unsigned right_max_depth = right_depth > right_middle_depth ? right_depth : right_middle_depth; + + static const unsigned depth = left_max_depth > right_max_depth ? left_max_depth : right_max_depth; +private: + typename expression_storage::type arg1; + typename expression_storage::type arg2; + typename expression_storage::type arg3; + typename expression_storage::type arg4; + expression& operator=(const expression&); +}; + +template +struct digits2 +{ + BOOST_STATIC_ASSERT(std::numeric_limits::is_specialized); + BOOST_STATIC_ASSERT((std::numeric_limits::radix == 2) || (std::numeric_limits::radix == 10)); + // If we really have so many digits that this fails, then we're probably going to hit other problems anyway: + BOOST_STATIC_ASSERT(LONG_MAX / 1000 > (std::numeric_limits::digits + 1)); + static const long value = std::numeric_limits::radix == 10 ? (((std::numeric_limits::digits + 1) * 1000L) / 301L) : std::numeric_limits::digits; +}; + +#ifndef BOOST_MP_MIN_EXPONENT_DIGITS +#ifdef _MSC_VER +# define BOOST_MP_MIN_EXPONENT_DIGITS 2 +#else +# define BOOST_MP_MIN_EXPONENT_DIGITS 2 +#endif +#endif + +template +void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, std::ios_base::fmtflags f, bool iszero) +{ + typedef typename S::size_type size_type; + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; + bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; + bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint; + bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos; + + bool neg = str.size() && (str[0] == '-'); + + if(neg) + str.erase(0, 1); + + if(digits == 0) + { + digits = (std::max)(str.size(), size_type(16)); + } + + if(iszero || str.empty() || (str.find_first_not_of('0') == S::npos)) + { + // We will be printing zero, even though the value might not + // actually be zero (it just may have been rounded to zero). + str = "0"; + if(scientific || fixed) + { + str.append(1, '.'); + str.append(size_type(digits), '0'); + if(scientific) + str.append("e+00"); + } + else + { + if(showpoint) + { + str.append(1, '.'); + if(digits > 1) + str.append(size_type(digits - 1), '0'); + } + } + if(neg) + str.insert(0, 1, '-'); + else if(showpos) + str.insert(0, 1, '+'); + return; + } + + if(!fixed && !scientific && !showpoint) + { + // + // Suppress trailing zeros: + // + std::string::iterator pos = str.end(); + while(pos != str.begin() && *--pos == '0'){} + if(pos != str.end()) + ++pos; + str.erase(pos, str.end()); + if(str.empty()) + str = '0'; + } + else if(!fixed || (my_exp >= 0)) + { + // + // Pad out the end with zero's if we need to: + // + boost::intmax_t chars = str.size(); + chars = digits - chars; + if(scientific) + ++chars; + if(chars > 0) + { + str.append(static_cast(chars), '0'); + } + } + + if(fixed || (!scientific && (my_exp >= -4) && (my_exp < digits))) + { + if(1 + my_exp > static_cast(str.size())) + { + // Just pad out the end with zeros: + str.append(static_cast(1 + my_exp - str.size()), '0'); + if(showpoint || fixed) + str.append("."); + } + else if(my_exp + 1 < static_cast(str.size())) + { + if(my_exp < 0) + { + str.insert(0, static_cast(-1 - my_exp), '0'); + str.insert(0, "0."); + } + else + { + // Insert the decimal point: + str.insert(static_cast(my_exp + 1), 1, '.'); + } + } + else if(showpoint || fixed) // we have exactly the digits we require to left of the point + str += "."; + + if(fixed) + { + // We may need to add trailing zeros: + boost::intmax_t l = str.find('.') + 1; + l = digits - (str.size() - l); + if(l > 0) + str.append(size_type(l), '0'); + } + } + else + { + BOOST_MP_USING_ABS + // Scientific format: + if(showpoint || (str.size() > 1)) + str.insert(1, 1, '.'); + str.append(1, 'e'); + S e = boost::lexical_cast(abs(my_exp)); + if(e.size() < BOOST_MP_MIN_EXPONENT_DIGITS) + e.insert(0, BOOST_MP_MIN_EXPONENT_DIGITS-e.size(), '0'); + if(my_exp < 0) + e.insert(0, 1, '-'); + else + e.insert(0, 1, '+'); + str.append(e); + } + if(neg) + str.insert(0, 1, '-'); + else if(showpos) + str.insert(0, 1, '+'); +} + +} // namespace detail + +// +// Non-member operators for number: +// +// Unary operators first: +// +template +inline const number& operator + (const number& v) { return v; } +template +inline const detail::expression& operator + (const detail::expression& v) { return v; } +template +inline detail::expression > operator - (const number& v) { return detail::expression >(v); } +template +inline detail::expression > operator - (const detail::expression& v) { return detail::expression >(v); } +template +inline detail::expression > operator ~ (const number& v) { return detail::expression >(v); } +template +inline detail::expression > operator ~ (const detail::expression& v) { return detail::expression >(v); } +// +// Then addition: +// +template +inline detail::expression, number > + operator + (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator + (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator + (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator + (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator + (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator + (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator + (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator + (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > + operator + (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); +} +template +inline detail::expression, typename detail::expression::left_type > + operator + (const detail::expression& a, const number& b) +{ + return detail::expression, typename detail::expression::left_type >(b, a.left_ref()); +} +template +inline detail::expression, number > + operator + (const number& a, const detail::expression >& b) +{ + return detail::expression, number >(a, b.left_ref()); +} +template +inline detail::expression, number > + operator + (const detail::expression >& a, const number& b) +{ + return detail::expression, number >(b, a.left_ref()); +} +template +inline typename enable_if, detail::expression > >::type + operator + (const detail::expression >& a, const V& b) +{ + return detail::expression >(b, a.left_ref()); +} +template +inline typename enable_if, detail::expression > >::type + operator + (const V& a, const detail::expression >& b) +{ + return detail::expression, number >(a, b.left_ref()); +} +// +// Subtraction: +// +template +inline detail::expression, number > + operator - (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator - (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator - (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator - (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator - (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator - (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator - (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator - (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > + operator - (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); +} +template +inline detail::expression, typename detail::expression::left_type > > + operator - (const detail::expression& a, const number& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type >(b, a.left_ref())); +} +template +inline detail::expression, number > + operator - (const number& a, const detail::expression >& b) +{ + return detail::expression, number >(a, b.left_ref()); +} +template +inline detail::expression, number > > + operator - (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >( + detail::expression, number >(b, a.left_ref())); +} +template +inline typename enable_if, detail::expression, V > > >::type + operator - (const detail::expression >& a, const V& b) +{ + return detail::expression, V > >(detail::expression, V >(a.left_ref(), b)); +} +template +inline typename enable_if, detail::expression > >::type + operator - (const V& a, const detail::expression >& b) +{ + return detail::expression >(a, b.left_ref()); +} +// +// Multiplication: +// +template +inline detail::expression, number > + operator * (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator * (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator * (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator * (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator * (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator * (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator * (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator * (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > > + operator * (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type > (a, b.left_ref())); +} +template +inline detail::expression, typename detail::expression::left_type > > + operator * (const detail::expression& a, const number& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type >(b, a.left_ref())); +} +template +inline detail::expression, number > > + operator * (const number& a, const detail::expression >& b) +{ + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); +} +template +inline detail::expression, number > > + operator * (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >( + detail::expression, number >(b, a.left_ref())); +} +template +inline typename enable_if, detail::expression, V > > >::type + operator * (const detail::expression >& a, const V& b) +{ + return detail::expression, V > > ( + detail::expression, V >(a.left_ref(), b)); +} +template +inline typename enable_if, detail::expression, V > > >::type + operator * (const V& a, const detail::expression >& b) +{ + return detail::expression, V > >( + detail::expression, V >(b.left_ref(), a)); +} +// +// Division: +// +template +inline detail::expression, number > + operator / (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator / (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator / (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator / (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator / (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator / (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator / (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator / (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > > + operator / (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type >(a, b.left_ref())); +} +template +inline detail::expression::left_type, number > > + operator / (const detail::expression& a, const number& b) +{ + return detail::expression::left_type, number > >( + detail::expression::left_type, number >(a.left_ref(), b)); +} +template +inline detail::expression, number > > + operator / (const number& a, const detail::expression >& b) +{ + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); +} +template +inline detail::expression, number > > + operator / (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >( + detail::expression, number >(a.left_ref(), b)); +} +template +inline typename enable_if, detail::expression, V > > >::type + operator / (const detail::expression >& a, const V& b) +{ + return detail::expression, V > >( + detail::expression, V>(a.left_ref(), b)); +} +template +inline typename enable_if, detail::expression > > >::type + operator / (const V& a, const detail::expression >& b) +{ + return detail::expression > >( + detail::expression >(a, b.left_ref())); +} +// +// Modulus: +// +template +inline detail::expression, number > + operator % (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator % (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator % (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator % (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator % (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator % (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator % (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator % (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Left shift: +// +template +inline typename enable_if, detail::expression, I > >::type + operator << (const number& a, const I& b) +{ + return detail::expression, I>(a, b); +} +template +inline typename enable_if, detail::expression, I> >::type + operator << (const detail::expression& a, const I& b) +{ + return detail::expression, I>(a, b); +} +// +// Right shift: +// +template +inline typename enable_if, detail::expression, I > >::type + operator >> (const number& a, const I& b) +{ + return detail::expression, I>(a, b); +} +template +inline typename enable_if, detail::expression, I> >::type + operator >> (const detail::expression& a, const I& b) +{ + return detail::expression, I>(a, b); +} +// +// Bitwise AND: +// +template +inline detail::expression, number > + operator & (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator & (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator & (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator & (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator & (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator & (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator & (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator & (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Bitwise OR: +// +template +inline detail::expression, number > + operator| (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator| (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator| (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator| (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator| (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator| (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator| (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator| (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Bitwise XOR: +// +template +inline detail::expression, number > + operator^ (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator^ (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator^ (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator^ (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator^ (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator^ (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if, detail::expression, V > >::type + operator^ (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if, detail::expression > >::type + operator^ (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} + +// +// Traits class, lets us know what kind of number we have, defaults to a floating point type: +// +enum number_category_type +{ + number_kind_integer = 0, + number_kind_floating_point = 1, + number_kind_rational = 2, + number_kind_fixed_point = 3 +}; + +template +struct number_category : public mpl::int_ {}; +template +struct number_category > : public number_category{}; +template +struct number_category > : public number_category::result_type>{}; + +template +struct component_type; +template +struct component_type > : public component_type{}; +template +struct component_type > : public component_type::result_type>{}; + +}} // namespaces + +namespace boost{ namespace math{ namespace tools{ + +template +struct promote_arg; + +template +struct promote_arg > +{ + typedef typename boost::multiprecision::detail::expression::result_type type; +}; + +template +inline R real_cast(const boost::multiprecision::number& val) +{ + return val.template convert_to(); +} + +template +inline R real_cast(const boost::multiprecision::detail::expression& val) +{ + typedef typename boost::multiprecision::detail::expression::result_type val_type; + return val_type(val).template convert_to(); +} + + +}}} + +#endif // BOOST_MATH_BIG_NUM_BASE_HPP + + diff --git a/include/boost/multiprecision/detail/number_compare.hpp b/include/boost/multiprecision/detail/number_compare.hpp new file mode 100644 index 00000000..7b881d73 --- /dev/null +++ b/include/boost/multiprecision/detail/number_compare.hpp @@ -0,0 +1,482 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_COMPARE_HPP +#define BOOST_MP_COMPARE_HPP + +// +// Comparison operators for number. +// + +namespace boost{ namespace multiprecision{ + +namespace default_ops{ + +template +inline bool eval_eq(const B& a, const B& b) +{ + return a.compare(b) == 0; +} +template +inline bool eval_eq(const B& a, const A& b) +{ + typedef typename mpl::if_< + is_convertible >, + number, + number + >::type mp_type; + mp_type t(b); + return eval_eq(a, t.backend()); +} + +template +inline bool eval_lt(const B& a, const B& b) +{ + return a.compare(b) < 0; +} +template +inline bool eval_lt(const B& a, const A& b) +{ + typedef typename mpl::if_< + is_convertible >, + number, + number + >::type mp_type; + mp_type t(b); + return eval_lt(a, t.backend()); +} + +template +inline bool eval_gt(const B& a, const B& b) +{ + return a.compare(b) > 0; +} +template +inline bool eval_gt(const B& a, const A& b) +{ + typedef typename mpl::if_< + is_convertible >, + number, + number + >::type mp_type; + mp_type t(b); + return eval_gt(a, t.backend()); +} + +} + +template +inline bool operator == (const number& a, const number& b) +{ + using default_ops::eval_eq; + return eval_eq(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return eval_eq(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator == (const number& a, const detail::expression& b) +{ + using default_ops::eval_eq; + typename detail::expression::result_type t(b); + return eval_eq(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const Arithmetic& a, const number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return eval_eq(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const Arithmetic& a, const detail::expression& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(b); + return eval_eq(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator == (const detail::expression& a, const number& b) +{ + using default_ops::eval_eq; + typename detail::expression::result_type t(a); + return eval_eq(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator == (const detail::expression& a, const Arithmetic& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(a); + return eval_eq(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type + operator == (const detail::expression& a, const detail::expression& b) +{ + using default_ops::eval_eq; + typename detail::expression::result_type t(a); + typename detail::expression::result_type t2(b); + return eval_eq(t.backend(), t2.backend()); +} + +template +inline bool operator != (const number& a, const number& b) +{ + using default_ops::eval_eq; + return !eval_eq(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return !eval_eq(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator != (const number& a, const detail::expression& b) +{ + using default_ops::eval_eq; + typename detail::expression::result_type t(b); + return !eval_eq(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const Arithmetic& a, const number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + return !eval_eq(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const Arithmetic& a, const detail::expression& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(b); + return !eval_eq(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator != (const detail::expression& a, const number& b) +{ + using default_ops::eval_eq; + typename detail::expression::result_type t(a); + return !eval_eq(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator != (const detail::expression& a, const Arithmetic& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_eq; + result_type t(a); + return !eval_eq(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type + operator != (const detail::expression& a, const detail::expression& b) +{ + using default_ops::eval_eq; + typename detail::expression::result_type t(a); + typename detail::expression::result_type t2(b); + return !eval_eq(t.backend(), t2.backend()); +} + +template +inline bool operator < (const number& a, const number& b) +{ + using default_ops::eval_lt; + return eval_lt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return eval_lt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator < (const number& a, const detail::expression& b) +{ + using default_ops::eval_lt; + typename detail::expression::result_type t(b); + return eval_lt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const Arithmetic& a, const number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return eval_gt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const Arithmetic& a, const detail::expression& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(b); + return eval_gt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator < (const detail::expression& a, const number& b) +{ + using default_ops::eval_lt; + typename detail::expression::result_type t(a); + return eval_lt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator < (const detail::expression& a, const Arithmetic& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(a); + return eval_lt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type + operator < (const detail::expression& a, const detail::expression& b) +{ + using default_ops::eval_lt; + typename detail::expression::result_type t(a); + typename detail::expression::result_type t2(b); + return eval_lt(t.backend(), t2.backend()); +} + +template +inline bool operator > (const number& a, const number& b) +{ + using default_ops::eval_gt; + return eval_gt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return eval_gt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator > (const number& a, const detail::expression& b) +{ + using default_ops::eval_gt; + typename detail::expression::result_type t(b); + return eval_gt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const Arithmetic& a, const number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return eval_lt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const Arithmetic& a, const detail::expression& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(b); + return eval_lt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator > (const detail::expression& a, const number& b) +{ + using default_ops::eval_gt; + typename detail::expression::result_type t(a); + return eval_gt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator > (const detail::expression& a, const Arithmetic& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(a); + return eval_gt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type + operator > (const detail::expression& a, const detail::expression& b) +{ + using default_ops::eval_gt; + typename detail::expression::result_type t(a); + typename detail::expression::result_type t2(b); + return eval_gt(t.backend(), t2.backend()); +} + +template +inline bool operator <= (const number& a, const number& b) +{ + using default_ops::eval_gt; + return !eval_gt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return !eval_gt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator <= (const number& a, const detail::expression& b) +{ + using default_ops::eval_gt; + typename detail::expression::result_type t(b); + return !eval_gt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const Arithmetic& a, const number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return !eval_lt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const Arithmetic& a, const detail::expression& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(b); + return !eval_lt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator <= (const detail::expression& a, const number& b) +{ + using default_ops::eval_gt; + typename detail::expression::result_type t(a); + return !eval_gt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator <= (const detail::expression& a, const Arithmetic& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(a); + return !eval_gt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type + operator <= (const detail::expression& a, const detail::expression& b) +{ + using default_ops::eval_gt; + typename detail::expression::result_type t(a); + typename detail::expression::result_type t2(b); + return !eval_gt(t.backend(), t2.backend()); +} + +template +inline bool operator >= (const number& a, const number& b) +{ + using default_ops::eval_lt; + return !eval_lt(a.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const number& a, const Arithmetic& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + return !eval_lt(a.backend(), ct(b)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator >= (const number& a, const detail::expression& b) +{ + using default_ops::eval_lt; + typename detail::expression::result_type t(b); + return !eval_lt(a.backend(), t.backend()); +} +template +inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const Arithmetic& a, const number& b) +{ + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + return !eval_gt(b.backend(), ct(a)); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const Arithmetic& a, const detail::expression& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_gt; + result_type t(b); + return !eval_gt(t.backend(), ct(a)); +} +template +inline typename enable_if, typename detail::expression::result_type>, bool>::type + operator >= (const detail::expression& a, const number& b) +{ + using default_ops::eval_lt; + typename detail::expression::result_type t(a); + return !eval_lt(t.backend(), b.backend()); +} +template +inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type + operator >= (const detail::expression& a, const Arithmetic& b) +{ + typedef typename detail::expression::result_type result_type; + typedef typename detail::canonical::type ct; + using default_ops::eval_lt; + result_type t(a); + return !eval_lt(t.backend(), ct(b)); +} +template +inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type + operator >= (const detail::expression& a, const detail::expression& b) +{ + using default_ops::eval_lt; + typename detail::expression::result_type t(a); + typename detail::expression::result_type t2(b); + return !eval_lt(t.backend(), t2.backend()); +} + + +}} // namespaces + +#endif // BOOST_MP_COMPARE_HPP + diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index bc5549e2..b8d290f9 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -6,7 +6,7 @@ #ifndef BOOST_MATH_ER_GMP_BACKEND_HPP #define BOOST_MATH_ER_GMP_BACKEND_HPP -#include +#include #include #include #include @@ -1870,15 +1870,15 @@ inline bool eval_is_zero(const gmp_rational& val) { return mpq_sgn(val.data()) == 0; } -inline mp_number numerator(const mp_number& val) +inline number numerator(const number& val) { - mp_number result; + number result; mpz_set(result.backend().data(), (mpq_numref(val.backend().data()))); return result; } -inline mp_number denominator(const mp_number& val) +inline number denominator(const number& val) { - mp_number result; + number result; mpz_set(result.backend().data(), (mpq_denref(val.backend().data()))); return result; } @@ -2072,9 +2072,9 @@ using boost::multiprecision::backends::gmp_rational; using boost::multiprecision::backends::gmp_float; template <> -struct component_type > +struct component_type > { - typedef mp_number type; + typedef number type; }; template<> @@ -2082,13 +2082,13 @@ struct number_category : public mpl::int_{}; template<> struct number_category : public mpl::int_{}; -typedef mp_number > mpf_float_50; -typedef mp_number > mpf_float_100; -typedef mp_number > mpf_float_500; -typedef mp_number > mpf_float_1000; -typedef mp_number > mpf_float; -typedef mp_number mpz_int; -typedef mp_number mpq_rational; +typedef number > mpf_float_50; +typedef number > mpf_float_100; +typedef number > mpf_float_500; +typedef number > mpf_float_1000; +typedef number > mpf_float; +typedef number mpz_int; +typedef number mpq_rational; }} // namespaces @@ -2098,9 +2098,9 @@ namespace std{ // numeric_limits [partial] specializations for the types declared in this header: // template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // @@ -2195,10 +2195,10 @@ private: { data_initializer() { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); } void do_nothing()const{} }; @@ -2206,12 +2206,12 @@ private: }; template -const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; +const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; static number_type (min)() BOOST_NOEXCEPT { return number_type(); } @@ -2250,56 +2250,56 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif template -class numeric_limits > +class numeric_limits > { - typedef boost::multiprecision::mp_number number_type; + typedef boost::multiprecision::number number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // @@ -2348,56 +2348,56 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; #endif template -class numeric_limits > +class numeric_limits > { - typedef boost::multiprecision::mp_number number_type; + typedef boost::multiprecision::number number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // @@ -2447,49 +2447,49 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; #endif diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index 557114cd..f1961bf2 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -12,7 +12,7 @@ namespace boost{ namespace multiprecision{ template -bool check_small_factors(const mp_number& n) +bool check_small_factors(const number& n) { static const boost::uint32_t small_factors1[] = { 3u, 5u, 7u, 11u, 13u, 17u, 19u, 23u }; @@ -119,13 +119,13 @@ inline bool is_small_prime(unsigned n) template typename enable_if_c::value == number_kind_integer, bool>::type - miller_rabin_test(const mp_number& n, unsigned trials, Engine& gen) + miller_rabin_test(const number& n, unsigned trials, Engine& gen) { #ifdef BOOST_MSVC #pragma warning(push) #pragma warning(disable:4127) #endif - typedef mp_number number_type; + typedef number number_type; if(n <= 227) return is_small_prime(n.template convert_to()); @@ -179,23 +179,23 @@ typename enable_if_c::value == number_kind_integer, boo } template -bool miller_rabin_test(const mp_number& x, unsigned trials) +bool miller_rabin_test(const number& x, unsigned trials) { static mt19937 gen; return miller_rabin_test(x, trials, gen); } template -bool miller_rabin_test(const detail::mp_exp & n, unsigned trials, Engine& gen) +bool miller_rabin_test(const detail::expression & n, unsigned trials, Engine& gen) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; return miller_rabin_test(number_type(n), trials, gen); } template -bool miller_rabin_test(const detail::mp_exp & n, unsigned trials) +bool miller_rabin_test(const detail::expression & n, unsigned trials) { - typedef typename detail::mp_exp::result_type number_type; + typedef typename detail::expression::result_type number_type; return miller_rabin_test(number_type(n), trials); } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 63f98959..859e51b3 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -6,7 +6,7 @@ #ifndef BOOST_MATH_BN_MPFR_HPP #define BOOST_MATH_BN_MPFR_HPP -#include +#include #include #include #include @@ -897,7 +897,7 @@ inline void eval_trunc(mpfr_float_backend& result, const mpfr_float_ba { if(0 == mpfr_number_p(val.data())) { - result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, mp_number >(val), 0, boost::math::policies::policy<>()).backend(); + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number >(val), 0, boost::math::policies::policy<>()).backend(); return; } mpfr_trunc(result.data(), val.data()); @@ -1046,11 +1046,11 @@ inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_bac using boost::multiprecision::backends::mpfr_float_backend; -typedef mp_number > mpfr_float_50; -typedef mp_number > mpfr_float_100; -typedef mp_number > mpfr_float_500; -typedef mp_number > mpfr_float_1000; -typedef mp_number > mpfr_float; +typedef number > mpfr_float_50; +typedef number > mpfr_float_100; +typedef number > mpfr_float_500; +typedef number > mpfr_float_1000; +typedef number > mpfr_float; } // namespace multiprecision @@ -1064,7 +1064,7 @@ inline int digits() BOOST_NOEXCEPT return boost::multiprecision::backends::detail::get_default_precision(); } template <> -inline int digits, false> >() BOOST_NOEXCEPT +inline int digits, false> >() BOOST_NOEXCEPT { return boost::multiprecision::backends::detail::get_default_precision(); } @@ -1079,9 +1079,9 @@ namespace std{ // numeric_limits [partial] specializations for the types declared in this header: // template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT @@ -1198,12 +1198,12 @@ private: { data_initializer() { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); - std::numeric_limits > >::infinity(); - std::numeric_limits > >::quiet_NaN(); + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); + std::numeric_limits > >::infinity(); + std::numeric_limits > >::quiet_NaN(); } void do_nothing()const{} }; @@ -1211,62 +1211,62 @@ private: }; template -const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; +const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif template -class numeric_limits, ExpressionTemplates> > +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = false; static number_type (min)() BOOST_NOEXCEPT { return number_type(0); } @@ -1305,49 +1305,49 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif } // namespace std diff --git a/include/boost/multiprecision/mp_number.hpp b/include/boost/multiprecision/number.hpp similarity index 86% rename from include/boost/multiprecision/mp_number.hpp rename to include/boost/multiprecision/number.hpp index 704cec15..15096180 100644 --- a/include/boost/multiprecision/mp_number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include // stream operators #include // EOF @@ -34,26 +34,26 @@ namespace boost{ namespace multiprecision{ #endif template -class mp_number +class number { - typedef mp_number self_type; + typedef number self_type; public: typedef Backend backend_type; - BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number() BOOST_NOEXCEPT_IF(noexcept(Backend())) {} - BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} + BOOST_FORCEINLINE BOOST_CONSTEXPR number() BOOST_NOEXCEPT_IF(noexcept(Backend())) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} template - BOOST_FORCEINLINE mp_number(V v, typename enable_if_c< + BOOST_FORCEINLINE number(V v, typename enable_if_c< (boost::is_arithmetic::value || is_same::value || is_convertible::value) && !is_convertible::type, Backend>::value >::type* = 0) { m_backend = canonical_value(v); } template - BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(V v, typename enable_if_c< + BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if_c< (boost::is_arithmetic::value || is_same::value || is_convertible::value) && is_convertible::type, Backend>::value >::type* = 0) : m_backend(canonical_value(v)) {} - BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(const mp_number& e, unsigned digits10) + BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} /* // @@ -61,22 +61,22 @@ public: // which is arguably more useful. Disabled for now. // template - mp_number(V v, unsigned digits10, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) + number(V v, unsigned digits10, typename enable_if, is_same, is_convertible > >::type* dummy1 = 0) { m_backend.precision(digits10); m_backend = canonical_value(v); } */ template - BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(const mp_number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} template - BOOST_FORCEINLINE mp_number(const mp_number& val, typename enable_if >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) + BOOST_FORCEINLINE number(const number& val, typename enable_if >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) { m_backend = val.backend(); } template - mp_number(const mp_number& val, typename disable_if >::type* = 0) + number(const number& val, typename disable_if >::type* = 0) { // // Attempt a generic interconvertion: @@ -84,39 +84,39 @@ public: detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); } template - BOOST_FORCEINLINE mp_number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* = 0) + BOOST_FORCEINLINE number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* = 0) { using default_ops::assign_components; assign_components(m_backend, canonical_value(v1), canonical_value(v2)); } template - BOOST_FORCEINLINE mp_number(const mp_number& v1, const mp_number& v2, typename enable_if >::type* = 0) + BOOST_FORCEINLINE number(const number& v1, const number& v2, typename enable_if >::type* = 0) { using default_ops::assign_components; assign_components(m_backend, v1.backend(), v2.backend()); } template - BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) + BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(v){} template - mp_number& operator=(const detail::mp_exp& e) + number& operator=(const detail::expression& e) { - typedef typename is_same::result_type>::type tag_type; + typedef typename is_same::result_type>::type tag_type; do_assign(e, tag_type()); return *this; } - BOOST_FORCEINLINE mp_number& operator=(const mp_number& e) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) + BOOST_FORCEINLINE number& operator=(const number& e) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = e.m_backend; return *this; } template - BOOST_FORCEINLINE typename enable_if, is_same, is_convertible >, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, is_same, is_convertible >, number& >::type operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval::type>())) { m_backend = canonical_value(v); @@ -124,7 +124,7 @@ public: } template - BOOST_FORCEINLINE typename enable_if, mpl::not_, is_same, is_convertible > > >, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, mpl::not_, is_same, is_convertible > > >, number& >::type operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v; @@ -132,23 +132,23 @@ public: } template - BOOST_FORCEINLINE mp_number& operator=(const mp_number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) + BOOST_FORCEINLINE number& operator=(const number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v.backend(); return *this; } template - BOOST_FORCEINLINE typename enable_if, mp_number& >::type - operator=(const mp_number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) + BOOST_FORCEINLINE typename enable_if, number& >::type + operator=(const number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = v.backend(); return *this; } template - typename disable_if, mp_number& >::type - operator=(const mp_number& v) + typename disable_if, number& >::type + operator=(const number& v) { // // Attempt a generic interconvertion: @@ -158,35 +158,35 @@ public: } template - mp_number(const detail::mp_exp& e) + number(const detail::expression& e) { *this = e; } #ifndef BOOST_NO_RVALUE_REFERENCES - BOOST_FORCEINLINE BOOST_CONSTEXPR mp_number(mp_number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} - BOOST_FORCEINLINE mp_number& operator=(mp_number&& r) BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR number(number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} + BOOST_FORCEINLINE number& operator=(number&& r) BOOST_NOEXCEPT { m_backend = static_cast(r.m_backend); return *this; } #endif - mp_number& operator+=(const self_type& val) + number& operator+=(const self_type& val) { - do_add(detail::mp_exp(val), detail::terminal()); + do_add(detail::expression(val), detail::terminal()); return *this; } template - mp_number& operator+=(const detail::mp_exp& e) + number& operator+=(const detail::expression& e) { // Create a copy if e contains this, but not if we're just doing a // x += x if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_add(detail::mp_exp(temp), detail::terminal()); + do_add(detail::expression(temp), detail::terminal()); } else { @@ -196,7 +196,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, number& >::type operator+=(const V& v) { using default_ops::eval_add; @@ -204,14 +204,14 @@ public: return *this; } - mp_number& operator-=(const self_type& val) + number& operator-=(const self_type& val) { - do_subtract(detail::mp_exp(val), detail::terminal()); + do_subtract(detail::expression(val), detail::terminal()); return *this; } template - mp_number& operator-=(const detail::mp_exp& e) + number& operator-=(const detail::expression& e) { // Create a copy if e contains this: if(contains_self(e)) @@ -227,7 +227,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, number& >::type operator-=(const V& v) { using default_ops::eval_subtract; @@ -236,21 +236,21 @@ public: } - mp_number& operator *= (const self_type& e) + number& operator *= (const self_type& e) { - do_multiplies(detail::mp_exp(e), detail::terminal()); + do_multiplies(detail::expression(e), detail::terminal()); return *this; } template - mp_number& operator*=(const detail::mp_exp& e) + number& operator*=(const detail::expression& e) { // Create a temporary if the RHS references *this, but not // if we're just doing an x *= x; if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_multiplies(detail::mp_exp(temp), detail::terminal()); + do_multiplies(detail::expression(temp), detail::terminal()); } else { @@ -260,7 +260,7 @@ public: } template - typename enable_if, mp_number& >::type + typename enable_if, number& >::type operator*=(const V& v) { using default_ops::eval_multiply; @@ -268,14 +268,14 @@ public: return *this; } - mp_number& operator%=(const self_type& e) + number& operator%=(const self_type& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); - do_modulus(detail::mp_exp(e), detail::terminal()); + do_modulus(detail::expression(e), detail::terminal()); return *this; } template - mp_number& operator%=(const detail::mp_exp& e) + number& operator%=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); // Create a temporary if the RHS references *this: @@ -291,7 +291,7 @@ public: return *this; } template - typename enable_if, mp_number& >::type + typename enable_if, number& >::type operator%=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); @@ -308,21 +308,21 @@ public: // execute the increment/decrement on destruction, but // correct implemetation will be tricky, so defered for now... // - BOOST_FORCEINLINE mp_number& operator++() + BOOST_FORCEINLINE number& operator++() { using default_ops::eval_increment; eval_increment(m_backend); return *this; } - BOOST_FORCEINLINE mp_number& operator--() + BOOST_FORCEINLINE number& operator--() { using default_ops::eval_decrement; eval_decrement(m_backend); return *this; } - BOOST_FORCEINLINE mp_number operator++(int) + inline number operator++(int) { using default_ops::eval_increment; self_type temp(*this); @@ -330,7 +330,7 @@ public: return BOOST_MP_MOVE(temp); } - BOOST_FORCEINLINE mp_number operator--(int) + inline number operator--(int) { using default_ops::eval_decrement; self_type temp(*this); @@ -339,7 +339,7 @@ public: } template - BOOST_FORCEINLINE typename enable_if, mp_number&>::type operator <<= (V val) + BOOST_FORCEINLINE typename enable_if, number&>::type operator <<= (V val) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); @@ -348,7 +348,7 @@ public: } template - BOOST_FORCEINLINE typename enable_if, mp_number&>::type operator >>= (V val) + BOOST_FORCEINLINE typename enable_if, number&>::type operator >>= (V val) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right-shift operation is only valid for integer types"); check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); @@ -356,20 +356,20 @@ public: return *this; } - BOOST_FORCEINLINE mp_number& operator /= (const self_type& e) + BOOST_FORCEINLINE number& operator /= (const self_type& e) { - do_divide(detail::mp_exp(e), detail::terminal()); + do_divide(detail::expression(e), detail::terminal()); return *this; } template - mp_number& operator/=(const detail::mp_exp& e) + number& operator/=(const detail::expression& e) { // Create a temporary if the RHS references *this: if(contains_self(e)) { self_type temp(e); - do_divide(detail::mp_exp(temp), detail::terminal()); + do_divide(detail::expression(temp), detail::terminal()); } else { @@ -379,7 +379,7 @@ public: } template - BOOST_FORCEINLINE typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator/=(const V& v) { using default_ops::eval_divide; @@ -387,15 +387,15 @@ public: return *this; } - BOOST_FORCEINLINE mp_number& operator&=(const self_type& e) + BOOST_FORCEINLINE number& operator&=(const self_type& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); - do_bitwise_and(detail::mp_exp(e), detail::terminal()); + do_bitwise_and(detail::expression(e), detail::terminal()); return *this; } template - mp_number& operator&=(const detail::mp_exp& e) + number& operator&=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); // Create a temporary if the RHS references *this, but not @@ -413,7 +413,7 @@ public: } template - BOOST_FORCEINLINE typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator&=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); @@ -422,15 +422,15 @@ public: return *this; } - BOOST_FORCEINLINE mp_number& operator|=(const self_type& e) + BOOST_FORCEINLINE number& operator|=(const self_type& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); - do_bitwise_or(detail::mp_exp(e), detail::terminal()); + do_bitwise_or(detail::expression(e), detail::terminal()); return *this; } template - mp_number& operator|=(const detail::mp_exp& e) + number& operator|=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); // Create a temporary if the RHS references *this, but not @@ -448,7 +448,7 @@ public: } template - BOOST_FORCEINLINE typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator|=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); @@ -457,15 +457,15 @@ public: return *this; } - BOOST_FORCEINLINE mp_number& operator^=(const self_type& e) + BOOST_FORCEINLINE number& operator^=(const self_type& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); - do_bitwise_xor(detail::mp_exp(e), detail::terminal()); + do_bitwise_xor(detail::expression(e), detail::terminal()); return *this; } template - mp_number& operator^=(const detail::mp_exp& e) + number& operator^=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); if(contains_self(e)) @@ -481,7 +481,7 @@ public: } template - BOOST_FORCEINLINE typename enable_if, mp_number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator^=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); @@ -563,7 +563,7 @@ explicit operator T()const // // Comparison: // - BOOST_FORCEINLINE int compare(const mp_number& o)const + BOOST_FORCEINLINE int compare(const number& o)const BOOST_NOEXCEPT_IF(noexcept(std::declval().compare(std::declval()))) { return m_backend.compare(o.m_backend); @@ -586,16 +586,16 @@ explicit operator T()const } private: template - void do_assign(const detail::mp_exp& e, const mpl::true_&) + void do_assign(const detail::expression& e, const mpl::true_&) { do_assign(e, tag()); } template - void do_assign(const detail::mp_exp& e, const mpl::false_&) + void do_assign(const detail::expression& e, const mpl::false_&) { // The result of the expression isn't the same type as this - // create a temporary result and assign it to *this: - typedef typename detail::mp_exp::result_type temp_type; + typedef typename detail::expression::result_type temp_type; temp_type t(e); *this = t; } @@ -1083,7 +1083,7 @@ private: template void do_assign_function_1(const F& f, const Exp& val, const Tag&) { - mp_number t(val); + number t(val); f(m_backend, t.backend()); } template @@ -1139,7 +1139,7 @@ private: template void do_assign_function_3a(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag1&, const Tag2& t2, const Tag3& t3) { - mp_number t(val1); + number t(val1); do_assign_function_3b(f, BOOST_MP_MOVE(t), val2, val3, t2, t3); } template @@ -1150,7 +1150,7 @@ private: template void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag2& /*t2*/, const Tag3& t3) { - mp_number t(val2); + number t(val2); do_assign_function_3c(f, val1, BOOST_MP_MOVE(t), val3, t3); } template @@ -1161,7 +1161,7 @@ private: template void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag3& /*t3*/) { - mp_number t(val3); + number t(val3); do_assign_function_3c(f, val1, val2, BOOST_MP_MOVE(t), detail::terminal()); } @@ -1201,7 +1201,7 @@ private: void do_add(const Exp& e, const unknown&) { self_type temp(e); - do_add(detail::mp_exp(temp), detail::terminal()); + do_add(detail::expression(temp), detail::terminal()); } template @@ -1269,7 +1269,7 @@ private: void do_subtract(const Exp& e, const unknown&) { self_type temp(e); - do_subtract(detail::mp_exp(temp), detail::terminal()); + do_subtract(detail::expression(temp), detail::terminal()); } template @@ -1543,14 +1543,14 @@ private: template static BOOST_FORCEINLINE BOOST_CONSTEXPR const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } template - static BOOST_FORCEINLINE const A1& function_arg_value(const detail::mp_exp& exp) BOOST_NOEXCEPT { return exp.value(); } + static BOOST_FORCEINLINE const A1& function_arg_value(const detail::expression& exp) BOOST_NOEXCEPT { return exp.value(); } template - static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const detail::mp_exp, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } + static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const detail::expression, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } Backend m_backend; }; template -inline std::ostream& operator << (std::ostream& os, const mp_number& r) +inline std::ostream& operator << (std::ostream& os, const number& r) { std::streamsize d = os.precision(); std::string s = r.str(d, os.flags()); @@ -1569,9 +1569,9 @@ inline std::ostream& operator << (std::ostream& os, const mp_number -inline std::ostream& operator << (std::ostream& os, const mp_exp& r) +inline std::ostream& operator << (std::ostream& os, const expression& r) { - typedef typename mp_exp::result_type value_type; + typedef typename expression::result_type value_type; value_type temp(r); return os << temp; } @@ -1579,7 +1579,7 @@ inline std::ostream& operator << (std::ostream& os, const mp_exp -inline std::istream& operator >> (std::istream& is, mp_number& r) +inline std::istream& operator >> (std::istream& is, number& r) { std::string s; is >> s; @@ -1588,7 +1588,7 @@ inline std::istream& operator >> (std::istream& is, mp_number -BOOST_FORCEINLINE void swap(mp_number& a, mp_number& b) +BOOST_FORCEINLINE void swap(number& a, number& b) { a.swap(b); } @@ -1599,10 +1599,10 @@ template class rational; template -inline std::istream& operator >> (std::istream& is, rational >& r) +inline std::istream& operator >> (std::istream& is, rational >& r) { std::string s1; - multiprecision::mp_number v1, v2; + multiprecision::number v1, v2; char c; bool have_hex = false; @@ -1634,37 +1634,37 @@ inline std::istream& operator >> (std::istream& is, rational -typename enable_if, bool>::type operator == (const rational >& a, const Arithmetic& b) +typename enable_if, bool>::type operator == (const rational >& a, const Arithmetic& b) { - return a == multiprecision::mp_number(b); + return a == multiprecision::number(b); } template -typename enable_if, bool>::type operator == (const Arithmetic& b, const rational >& a) +typename enable_if, bool>::type operator == (const Arithmetic& b, const rational >& a) { - return a == multiprecision::mp_number(b); + return a == multiprecision::number(b); } template -typename enable_if, bool>::type operator != (const rational >& a, const Arithmetic& b) +typename enable_if, bool>::type operator != (const rational >& a, const Arithmetic& b) { - return a != multiprecision::mp_number(b); + return a != multiprecision::number(b); } template -typename enable_if, bool>::type operator != (const Arithmetic& b, const rational >& a) +typename enable_if, bool>::type operator != (const Arithmetic& b, const rational >& a) { - return a != multiprecision::mp_number(b); + return a != multiprecision::number(b); } template -inline multiprecision::mp_number numerator(const rational >& a) +inline multiprecision::number numerator(const rational >& a) { return a.numerator(); } template -inline multiprecision::mp_number denominator(const rational >& a) +inline multiprecision::number denominator(const rational >& a) { return a.denominator(); } @@ -1677,7 +1677,7 @@ template class sparse_vector_element; template -inline bool operator == (const sparse_vector_element& a, const ::boost::multiprecision::mp_number& b) +inline bool operator == (const sparse_vector_element& a, const ::boost::multiprecision::number& b) { typedef typename sparse_vector_element::const_reference ref_type; return static_cast(a) == b; diff --git a/include/boost/multiprecision/random.hpp b/include/boost/multiprecision/random.hpp index a76372a5..d60cfb72 100644 --- a/include/boost/multiprecision/random.hpp +++ b/include/boost/multiprecision/random.hpp @@ -8,7 +8,7 @@ #ifndef BOOST_MP_RANDOM_HPP #define BOOST_MP_RANDOM_HPP -#include +#include namespace boost{ namespace random{ namespace detail{ // @@ -18,8 +18,8 @@ namespace boost{ namespace random{ namespace detail{ // UDT's and depricate/remove this header altogether. // template -boost::multiprecision::mp_number - generate_uniform_int(Engine& eng, const boost::multiprecision::mp_number& min_value, const boost::multiprecision::mp_number& max_value); +boost::multiprecision::number + generate_uniform_int(Engine& eng, const boost::multiprecision::number& min_value, const boost::multiprecision::number& max_value); }}} @@ -31,20 +31,20 @@ namespace random{ namespace detail{ template -struct subtract, true> +struct subtract, true> { - typedef boost::multiprecision::mp_number result_type; + typedef boost::multiprecision::number result_type; result_type operator()(result_type const& x, result_type const& y) { return x - y; } }; } template -class independent_bits_engine > +class independent_bits_engine > { public: typedef Engine base_type; - typedef boost::multiprecision::mp_number result_type; + typedef boost::multiprecision::number result_type; static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; } @@ -199,11 +199,11 @@ private: }; template -class uniform_smallint > +class uniform_smallint > { public: - typedef boost::multiprecision::mp_number input_type; - typedef boost::multiprecision::mp_number result_type; + typedef boost::multiprecision::number input_type; + typedef boost::multiprecision::number result_type; class param_type { @@ -382,22 +382,22 @@ private: namespace detail{ template -struct select_uniform_01 > +struct select_uniform_01 > { template struct apply { - typedef new_uniform_01 > type; + typedef new_uniform_01 > type; }; }; template -boost::multiprecision::mp_number +boost::multiprecision::number generate_uniform_int( - Engine& eng, const boost::multiprecision::mp_number& min_value, const boost::multiprecision::mp_number& max_value, + Engine& eng, const boost::multiprecision::number& min_value, const boost::multiprecision::number& max_value, boost::mpl::true_ /** is_integral */) { - typedef boost::multiprecision::mp_number result_type; + typedef boost::multiprecision::number result_type; // Since we're using big-numbers, use the result type for all internal calculations: typedef result_type range_type; typedef result_type base_result; @@ -558,8 +558,8 @@ boost::multiprecision::mp_number } template -inline boost::multiprecision::mp_number - generate_uniform_int(Engine& eng, const boost::multiprecision::mp_number& min_value, const boost::multiprecision::mp_number& max_value) +inline boost::multiprecision::number + generate_uniform_int(Engine& eng, const boost::multiprecision::number& min_value, const boost::multiprecision::number& max_value) { typedef typename Engine::result_type base_result; typedef typename mpl::or_, mpl::bool_::value == boost::multiprecision::number_kind_integer> >::type tag_type; diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index f3e4cd47..06fe7eb1 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include namespace boost{ @@ -21,7 +21,7 @@ namespace backends{ template struct rational_adapter { - typedef mp_number integer_type; + typedef number integer_type; typedef boost::rational rational_type; typedef typename IntBackend::signed_types signed_types; @@ -62,7 +62,7 @@ struct rational_adapter rational_adapter& operator = (const char* s) { std::string s1; - multiprecision::mp_number v1, v2; + multiprecision::number v1, v2; char c; bool have_hex = false; const char* p = s; // saved for later @@ -178,12 +178,12 @@ inline int eval_get_sign(const rational_adapter& val) } template -inline mp_number numerator(const mp_number >& val) +inline number numerator(const number >& val) { return val.backend().data().numerator(); } template -inline mp_number denominator(const mp_number >& val) +inline number denominator(const number >& val) { return val.backend().data().denominator(); } @@ -204,7 +204,7 @@ using boost::multiprecision::backends::rational_adapter; template struct component_type > { - typedef mp_number type; + typedef number type; }; }} // namespaces @@ -213,10 +213,10 @@ struct component_type > namespace std{ template -class numeric_limits, ExpressionTemplates> > : public std::numeric_limits > +class numeric_limits, ExpressionTemplates> > : public std::numeric_limits > { - typedef std::numeric_limits > base_type; - typedef boost::multiprecision::mp_number > number_type; + typedef std::numeric_limits > base_type; + typedef boost::multiprecision::number > number_type; public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = true; @@ -234,9 +234,9 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; #endif diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index eee4b341..0068ffde 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -6,7 +6,7 @@ #ifndef BOOST_MATH_MP_TOMMATH_BACKEND_HPP #define BOOST_MATH_MP_TOMMATH_BACKEND_HPP -#include +#include #include #include #include @@ -603,18 +603,18 @@ using boost::multiprecision::backends::tommath_int; template<> struct number_category : public mpl::int_{}; -typedef mp_number tom_int; +typedef number tom_int; typedef rational_adapter tommath_rational; -typedef mp_number tom_rational; +typedef number tom_rational; }} // namespaces namespace std{ template -class numeric_limits > +class numeric_limits > { - typedef boost::multiprecision::mp_number number_type; + typedef boost::multiprecision::number number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; // @@ -663,49 +663,49 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; template -BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; +BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; +BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; #endif } diff --git a/performance/arithmetic_backend.hpp b/performance/arithmetic_backend.hpp index 676c82d2..3e9028a2 100644 --- a/performance/arithmetic_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include namespace boost{ @@ -523,10 +523,10 @@ inline double real_cast(concepts::real_concept r namespace std{ template -class numeric_limits, ExpressionTemplates > > : public std::numeric_limits +class numeric_limits, ExpressionTemplates > > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::mp_number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp index 62a03981..cb4ba42c 100644 --- a/performance/delaunay_test.cpp +++ b/performance/delaunay_test.cpp @@ -270,14 +270,14 @@ int main() std::cout << "calculating...\n"; do_calc >("int64_t, int64_t"); - do_calc, false>, mp_number, false> > >("arithmetic_backend"); + do_calc, false>, number, false> > >("arithmetic_backend"); do_calc >("int64_t, int128_t"); - do_calc >("int64_t, mp_int128_t"); - do_calc, true> > >("int64_t, mp_int128_t (ET)"); + do_calc >("int64_t, int128_t"); + do_calc, true> > >("int64_t, int128_t (ET)"); do_calc >("int64_t, cpp_int"); - do_calc, false> > >("int64_t, cpp_int (no ET's)"); - do_calc > > >("int64_t, cpp_int(128-bit cache)"); - do_calc, false> > >("int64_t, cpp_int (128-bit Cache no ET's)"); + do_calc, false> > >("int64_t, cpp_int (no ET's)"); + do_calc > > >("int64_t, cpp_int(128-bit cache)"); + do_calc, false> > >("int64_t, cpp_int (128-bit Cache no ET's)"); return 0; } diff --git a/performance/linpack-benchmark.cpp b/performance/linpack-benchmark.cpp index 8db9b096..ec21f437 100644 --- a/performance/linpack-benchmark.cpp +++ b/performance/linpack-benchmark.cpp @@ -93,9 +93,9 @@ int dmxpy_(integer *, real_type *, integer *, integer *, real_type *, real_type extern "C" int MAIN__() { #ifdef TEST_MPF_50 - std::cout << "Testing mp_number >" << std::endl; + std::cout << "Testing number >" << std::endl; #elif defined(TEST_MPFR_50) - std::cout << "Testing mp_number >" << std::endl; + std::cout << "Testing number >" << std::endl; #elif defined(TEST_GMPXX) std::cout << "Testing mpf_class at 50 decimal degits" << std::endl; mpf_set_default_prec(((50 + 1) * 1000L) / 301L); @@ -103,7 +103,7 @@ extern "C" int MAIN__() std::cout << "Testing mpfr_class at 50 decimal degits" << std::endl; mpfr_set_default_prec(((50 + 1) * 1000L) / 301L); #elif defined(TEST_CPP_DEC_FLOAT) - std::cout << "Testing mp_number >" << std::endl; + std::cout << "Testing number >" << std::endl; #else std::cout << "Testing double" << std::endl; #endif @@ -1221,7 +1221,7 @@ times for array with leading dimension of1001 266.45 0.798 267.24 2.5021 0.79933 4772.2 -mp_number >: +number >: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ norm. resid resid machep x(1) x(n) diff --git a/performance/miller_rabin_performance.cpp b/performance/miller_rabin_performance.cpp index 9667aa51..fe202391 100644 --- a/performance/miller_rabin_performance.cpp +++ b/performance/miller_rabin_performance.cpp @@ -136,21 +136,21 @@ int main() { using namespace boost::multiprecision; #ifdef TEST_CPP_INT - test_miller_rabin, false> >("cpp_int (no Expression templates)"); + test_miller_rabin, false> >("cpp_int (no Expression templates)"); test_miller_rabin("cpp_int"); - test_miller_rabin > >("cpp_int (128-bit cache)"); - test_miller_rabin > >("cpp_int (256-bit cache)"); - test_miller_rabin > >("cpp_int (512-bit cache)"); - test_miller_rabin > >("cpp_int (1024-bit cache)"); - test_miller_rabin("mp_int1024_t"); + test_miller_rabin > >("cpp_int (128-bit cache)"); + test_miller_rabin > >("cpp_int (256-bit cache)"); + test_miller_rabin > >("cpp_int (512-bit cache)"); + test_miller_rabin > >("cpp_int (1024-bit cache)"); + test_miller_rabin("int1024_t"); #endif #ifdef TEST_MPZ - test_miller_rabin >("mpz_int (no Expression templates)"); + test_miller_rabin >("mpz_int (no Expression templates)"); test_miller_rabin("mpz_int"); std::cout << "Time for mpz_int (native Miller Rabin Test) = " << test_miller_rabin_gmp() << std::endl; #endif #ifdef TEST_TOMMATH - test_miller_rabin >("tom_int (no Expression templates)"); + test_miller_rabin >("tom_int (no Expression templates)"); test_miller_rabin("tom_int"); #endif mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); diff --git a/performance/performance_test.cpp b/performance/performance_test.cpp index dcc93932..4c58e672 100644 --- a/performance/performance_test.cpp +++ b/performance/performance_test.cpp @@ -786,12 +786,12 @@ int main() test("gmp_int", 1024); #endif #ifdef TEST_CPP_INT - test, false > >("cpp_int(unsigned, fixed)", 64); - test, false > >("cpp_int(fixed)", 64); - test, false > >("cpp_int(fixed)", 128); - test, false > >("cpp_int(fixed)", 256); - test, false > >("cpp_int(fixed)", 512); - test, false > >("cpp_int(fixed)", 1024); + test, false > >("cpp_int(unsigned, fixed)", 64); + test, false > >("cpp_int(fixed)", 64); + test, false > >("cpp_int(fixed)", 128); + test, false > >("cpp_int(fixed)", 256); + test, false > >("cpp_int(fixed)", 512); + test, false > >("cpp_int(fixed)", 1024); test("cpp_int", 128); test("cpp_int", 256); @@ -828,7 +828,7 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test("cpp_dec_float", 50); test("cpp_dec_float", 100); - test > >("cpp_dec_float", 500); + test > >("cpp_dec_float", 500); #endif #ifdef TEST_MPFR test("mpfr_float", 50); diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 3646e1b3..d2f95d07 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -233,7 +233,7 @@ int main() std::cout << "Allocation Counts for Horner Evaluation:\n"; #ifdef TEST_MPFR basic_allocation_test("mpfr_float_50", mpfr_float_50(2)); - basic_allocation_test("mpfr_float_50 - no expression templates", mp_number, false>(2)); + basic_allocation_test("mpfr_float_50 - no expression templates", number, false>(2)); #endif #ifdef TEST_MPFR_CLASS basic_allocation_test("mpfr_class", mpfr_class(2)); @@ -245,7 +245,7 @@ int main() std::cout << "Allocation Counts for boost::math::tools::evaluate_polynomial:\n"; #ifdef TEST_MPFR poly_allocation_test("mpfr_float_50", mpfr_float_50(2)); - poly_allocation_test("mpfr_float_50 - no expression templates", mp_number, false>(2)); + poly_allocation_test("mpfr_float_50 - no expression templates", number, false>(2)); #endif #ifdef TEST_MPFR_CLASS poly_allocation_test("mpfr_class", mpfr_class(2)); @@ -260,13 +260,13 @@ int main() #ifdef TEST_FLOAT time_proc("Bessel Functions - double", test_bessel); time_proc("Bessel Functions - real_concept", test_bessel); - time_proc("Bessel Functions - arithmetic_backend", test_bessel > >); - time_proc("Bessel Functions - arithmetic_backend - no expression templates", test_bessel, false> >); + time_proc("Bessel Functions - arithmetic_backend", test_bessel > >); + time_proc("Bessel Functions - arithmetic_backend - no expression templates", test_bessel, false> >); time_proc("Non-central T - double", test_nct); time_proc("Non-central T - real_concept", test_nct); - time_proc("Non-central T - arithmetic_backend", test_nct > >); - time_proc("Non-central T - arithmetic_backend - no expression templates", test_nct, false> >); + time_proc("Non-central T - arithmetic_backend", test_nct > >); + time_proc("Non-central T - arithmetic_backend - no expression templates", test_nct, false> >); #endif // @@ -288,7 +288,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_bessel, 3); - time_proc("mpf_float_50 (no expression templates", test_bessel, false> >, 3); + time_proc("mpf_float_50 (no expression templates", test_bessel, false> >, 3); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_bessel, 3); @@ -314,7 +314,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_bessel); - time_proc("mpf_float_100 (no expression templates", test_bessel, false> >); + time_proc("mpf_float_100 (no expression templates", test_bessel, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_bessel); @@ -341,7 +341,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_polynomial); - time_proc("mpf_float_50 (no expression templates", test_polynomial, false> >); + time_proc("mpf_float_50 (no expression templates", test_polynomial, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_polynomial); @@ -367,7 +367,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_polynomial); - time_proc("mpf_float_100 (no expression templates", test_polynomial, false> >); + time_proc("mpf_float_100 (no expression templates", test_polynomial, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_polynomial); @@ -393,7 +393,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_nct); - time_proc("mpf_float_50 (no expression templates", test_nct, false> >); + time_proc("mpf_float_50 (no expression templates", test_nct, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_nct); @@ -419,7 +419,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_nct); - time_proc("mpf_float_100 (no expression templates", test_nct, false> >); + time_proc("mpf_float_100 (no expression templates", test_nct, false> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_nct); diff --git a/test/concepts/mp_number_concept_check.cpp b/test/concepts/number_concept_check.cpp similarity index 85% rename from test/concepts/mp_number_concept_check.cpp rename to test/concepts/number_concept_check.cpp index d921dce7..106fbe5a 100644 --- a/test/concepts/mp_number_concept_check.cpp +++ b/test/concepts/number_concept_check.cpp @@ -171,22 +171,22 @@ void foo() test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_15 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_17 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_30 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_CPP_DEC_FLOAT test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::mp_number, false>()); + test_extra(boost::multiprecision::number, false>()); #endif } @@ -202,16 +202,16 @@ int main() BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); #endif #ifdef TEST_MPFR_6 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); #endif #ifdef TEST_MPFR_15 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); #endif #ifdef TEST_MPFR_17 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); #endif #ifdef TEST_MPFR_30 - BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); + BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept > >)); #endif #ifdef TEST_MPFR_50 BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept)); diff --git a/test/concepts/sf_concept_check_basic.cpp b/test/concepts/sf_concept_check_basic.cpp index 75c35b08..16cecfce 100644 --- a/test/concepts/sf_concept_check_basic.cpp +++ b/test/concepts/sf_concept_check_basic.cpp @@ -124,22 +124,22 @@ void foo() test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_15 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_17 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_30 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_CPP_DEC_FLOAT test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::mp_number, false>()); + test_extra(boost::multiprecision::number, false>()); #endif } diff --git a/test/concepts/sf_concept_check_bessel.cpp b/test/concepts/sf_concept_check_bessel.cpp index 12a40a13..0c3c3935 100644 --- a/test/concepts/sf_concept_check_bessel.cpp +++ b/test/concepts/sf_concept_check_bessel.cpp @@ -89,22 +89,22 @@ void foo() test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_15 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_17 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_30 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_CPP_DEC_FLOAT test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::mp_number, false>()); + test_extra(boost::multiprecision::number, false>()); #endif } diff --git a/test/concepts/sf_concept_check_elliptic.cpp b/test/concepts/sf_concept_check_elliptic.cpp index e754f53e..e55cace4 100644 --- a/test/concepts/sf_concept_check_elliptic.cpp +++ b/test/concepts/sf_concept_check_elliptic.cpp @@ -95,22 +95,22 @@ void foo() test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_15 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_17 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_30 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_CPP_DEC_FLOAT test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::mp_number, false>()); + test_extra(boost::multiprecision::number, false>()); #endif } diff --git a/test/concepts/sf_concept_check_gamma.cpp b/test/concepts/sf_concept_check_gamma.cpp index bd108e9a..2dcdcaf8 100644 --- a/test/concepts/sf_concept_check_gamma.cpp +++ b/test/concepts/sf_concept_check_gamma.cpp @@ -111,22 +111,22 @@ void foo() test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_15 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_17 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_30 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_CPP_DEC_FLOAT test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::mp_number, false>()); + test_extra(boost::multiprecision::number, false>()); #endif } diff --git a/test/concepts/sf_concept_check_poly.cpp b/test/concepts/sf_concept_check_poly.cpp index d8e855e2..fff337e9 100644 --- a/test/concepts/sf_concept_check_poly.cpp +++ b/test/concepts/sf_concept_check_poly.cpp @@ -86,22 +86,22 @@ void foo() test_extra(boost::multiprecision::mpfr_float_50()); #endif #ifdef TEST_MPFR_6 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_15 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_17 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_MPFR_30 - test_extra(boost::multiprecision::mp_number >()); + test_extra(boost::multiprecision::number >()); #endif #ifdef TEST_CPP_DEC_FLOAT test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::mp_number, false>()); + test_extra(boost::multiprecision::number, false>()); #endif } diff --git a/test/include_test/cpp_int_include_test.cpp b/test/include_test/cpp_int_include_test.cpp index f193178c..7e665657 100644 --- a/test/include_test/cpp_int_include_test.cpp +++ b/test/include_test/cpp_int_include_test.cpp @@ -7,10 +7,10 @@ using namespace boost::multiprecision; -mp_number > a; -mp_number, false> b; -mp_number, false> c; -mp_number, false> d; -mp_number, false> e; +number > a; +number, false> b; +number, false> c; +number, false> d; +number, false> e; diff --git a/test/math/log1p_expm1_test.cpp b/test/math/log1p_expm1_test.cpp index 9b9867aa..1754094c 100644 --- a/test/math/log1p_expm1_test.cpp +++ b/test/math/log1p_expm1_test.cpp @@ -128,19 +128,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test(mp_number >(), "mp_number >"); - test(mp_number >(), "mp_number >"); - test(mp_number >(), "mp_number >"); + test(number >(), "number >"); + test(number >(), "number >"); + test(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test(mp_number >(), "mp_number >"); - test(mp_number >(), "mp_number >"); - test(mp_number >(), "mp_number >"); + test(number >(), "number >"); + test(number >(), "number >"); + test(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test(mp_number >(), "mp_number >"); - test(mp_number >(), "mp_number >"); - test(mp_number >(), "mp_number >"); + test(number >(), "number >"); + test(number >(), "number >"); + test(number >(), "number >"); #endif return 0; } diff --git a/test/math/powm1_sqrtp1m1_test.cpp b/test/math/powm1_sqrtp1m1_test.cpp index 56bdd600..c3853651 100644 --- a/test/math/powm1_sqrtp1m1_test.cpp +++ b/test/math/powm1_sqrtp1m1_test.cpp @@ -120,19 +120,19 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. - //test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + //test_powm1_sqrtp1m1(number >(), "number >"); + test_powm1_sqrtp1m1(number >(), "number >"); + test_powm1_sqrtp1m1(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(number >(), "number >"); + test_powm1_sqrtp1m1(number >(), "number >"); + test_powm1_sqrtp1m1(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); - test_powm1_sqrtp1m1(mp_number >(), "mp_number >"); + test_powm1_sqrtp1m1(number >(), "number >"); + test_powm1_sqrtp1m1(number >(), "number >"); + test_powm1_sqrtp1m1(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index 4e94c24a..3532f397 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -88,20 +88,20 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. - //test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + //test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index 951a6821..931422aa 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -130,19 +130,19 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. - //test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + //test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp index 044fc49a..856180e9 100644 --- a/test/math/test_bessel_k.cpp +++ b/test/math/test_bessel_k.cpp @@ -103,19 +103,19 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - maybe in std::exp?? Disabled for now. - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index 44d23126..dd9c99dd 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -129,19 +129,19 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: - //test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + //test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); - test_bessel(mp_number >(), "mp_number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); + test_bessel(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index 49541cd8..b69c1808 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -115,19 +115,19 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index 0d9bf414..146b1af2 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -94,19 +94,19 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: - test_binomial(mp_number >(), "mp_number >"); - test_binomial(mp_number >(), "mp_number >"); - test_binomial(mp_number >(), "mp_number >"); + test_binomial(number >(), "number >"); + test_binomial(number >(), "number >"); + test_binomial(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_binomial(mp_number >(), "mp_number >"); - test_binomial(mp_number >(), "mp_number >"); - test_binomial(mp_number >(), "mp_number >"); + test_binomial(number >(), "number >"); + test_binomial(number >(), "number >"); + test_binomial(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_binomial(mp_number >(), "mp_number >"); - test_binomial(mp_number >(), "mp_number >"); - test_binomial(mp_number >(), "mp_number >"); + test_binomial(number >(), "number >"); + test_binomial(number >(), "number >"); + test_binomial(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp index e0a9e3c8..1aacc108 100644 --- a/test/math/test_carlson.cpp +++ b/test/math/test_carlson.cpp @@ -86,19 +86,19 @@ int test_main(int, char* []) // #ifdef TEST_MPF_50 // We have accuracy issues with gmp_float<18> - our argument reduction in std::sin isn't accurate enough: - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_cbrt.cpp b/test/math/test_cbrt.cpp index e7bee00c..b896d6d7 100644 --- a/test/math/test_cbrt.cpp +++ b/test/math/test_cbrt.cpp @@ -75,19 +75,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_cbrt(mp_number >(), "mp_number >"); - test_cbrt(mp_number >(), "mp_number >"); - test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(number >(), "number >"); + test_cbrt(number >(), "number >"); + test_cbrt(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_cbrt(mp_number >(), "mp_number >"); - test_cbrt(mp_number >(), "mp_number >"); - test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(number >(), "number >"); + test_cbrt(number >(), "number >"); + test_cbrt(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_cbrt(mp_number >(), "mp_number >"); - test_cbrt(mp_number >(), "mp_number >"); - test_cbrt(mp_number >(), "mp_number >"); + test_cbrt(number >(), "number >"); + test_cbrt(number >(), "number >"); + test_cbrt(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp index 8da4bd53..2d18eaa6 100644 --- a/test/math/test_digamma.cpp +++ b/test/math/test_digamma.cpp @@ -89,19 +89,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_digamma(mp_number >(), "mp_number >"); - test_digamma(mp_number >(), "mp_number >"); - test_digamma(mp_number >(), "mp_number >"); + test_digamma(number >(), "number >"); + test_digamma(number >(), "number >"); + test_digamma(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_digamma(mp_number >(), "mp_number >"); - test_digamma(mp_number >(), "mp_number >"); - test_digamma(mp_number >(), "mp_number >"); + test_digamma(number >(), "number >"); + test_digamma(number >(), "number >"); + test_digamma(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_digamma(mp_number >(), "mp_number >"); - test_digamma(mp_number >(), "mp_number >"); - test_digamma(mp_number >(), "mp_number >"); + test_digamma(number >(), "number >"); + test_digamma(number >(), "number >"); + test_digamma(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp index 356653d0..c7da569a 100644 --- a/test/math/test_ellint_1.cpp +++ b/test/math/test_ellint_1.cpp @@ -82,19 +82,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp index a8cbfca5..c07bddac 100644 --- a/test/math/test_ellint_2.cpp +++ b/test/math/test_ellint_2.cpp @@ -75,19 +75,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp index c57ddfec..9d3d6904 100644 --- a/test/math/test_ellint_3.cpp +++ b/test/math/test_ellint_3.cpp @@ -96,19 +96,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); - test_spots(mp_number >(), "mp_number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); + test_spots(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp index b185c3cd..1b77e3a4 100644 --- a/test/math/test_erf.cpp +++ b/test/math/test_erf.cpp @@ -96,19 +96,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_erf(mp_number >(), "mp_number >"); - test_erf(mp_number >(), "mp_number >"); - test_erf(mp_number >(), "mp_number >"); + test_erf(number >(), "number >"); + test_erf(number >(), "number >"); + test_erf(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_erf(mp_number >(), "mp_number >"); - test_erf(mp_number >(), "mp_number >"); - test_erf(mp_number >(), "mp_number >"); + test_erf(number >(), "number >"); + test_erf(number >(), "number >"); + test_erf(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_erf(mp_number >(), "mp_number >"); - test_erf(mp_number >(), "mp_number >"); - test_erf(mp_number >(), "mp_number >"); + test_erf(number >(), "number >"); + test_erf(number >(), "number >"); + test_erf(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_expint.cpp b/test/math/test_expint.cpp index 71961792..0dbffc58 100644 --- a/test/math/test_expint.cpp +++ b/test/math/test_expint.cpp @@ -96,19 +96,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_expint(mp_number >(), "mp_number >"); - test_expint(mp_number >(), "mp_number >"); - test_expint(mp_number >(), "mp_number >"); + test_expint(number >(), "number >"); + test_expint(number >(), "number >"); + test_expint(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_expint(mp_number >(), "mp_number >"); - test_expint(mp_number >(), "mp_number >"); - test_expint(mp_number >(), "mp_number >"); + test_expint(number >(), "number >"); + test_expint(number >(), "number >"); + test_expint(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_expint(mp_number >(), "mp_number >"); - test_expint(mp_number >(), "mp_number >"); - test_expint(mp_number >(), "mp_number >"); + test_expint(number >(), "number >"); + test_expint(number >(), "number >"); + test_expint(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index c7511413..44ca68be 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -110,19 +110,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_hermite.cpp b/test/math/test_hermite.cpp index be956ce1..271b8138 100644 --- a/test/math/test_hermite.cpp +++ b/test/math/test_hermite.cpp @@ -75,19 +75,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_hermite(mp_number >(), "mp_number >"); - test_hermite(mp_number >(), "mp_number >"); - test_hermite(mp_number >(), "mp_number >"); + test_hermite(number >(), "number >"); + test_hermite(number >(), "number >"); + test_hermite(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_hermite(mp_number >(), "mp_number >"); - test_hermite(mp_number >(), "mp_number >"); - test_hermite(mp_number >(), "mp_number >"); + test_hermite(number >(), "number >"); + test_hermite(number >(), "number >"); + test_hermite(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_hermite(mp_number >(), "mp_number >"); - test_hermite(mp_number >(), "mp_number >"); - test_hermite(mp_number >(), "mp_number >"); + test_hermite(number >(), "number >"); + test_hermite(number >(), "number >"); + test_hermite(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index dde145f8..b78358f2 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -106,19 +106,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ibeta_2.cpp b/test/math/test_ibeta_2.cpp index c7cb04fc..7dcc2fd8 100644 --- a/test/math/test_ibeta_2.cpp +++ b/test/math/test_ibeta_2.cpp @@ -106,19 +106,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ibeta_3.cpp b/test/math/test_ibeta_3.cpp index 77b69d78..d1f0d132 100644 --- a/test/math/test_ibeta_3.cpp +++ b/test/math/test_ibeta_3.cpp @@ -92,19 +92,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ibeta_4.cpp b/test/math/test_ibeta_4.cpp index 5f3246fd..f71c117f 100644 --- a/test/math/test_ibeta_4.cpp +++ b/test/math/test_ibeta_4.cpp @@ -99,19 +99,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index 2492b7ac..88fc6184 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -85,19 +85,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - //test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + //test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index 67c4c588..e00fb612 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -78,19 +78,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - //test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + //test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); - test_beta(mp_number >(), "mp_number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); + test_beta(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_igamma.cpp b/test/math/test_igamma.cpp index 66aa9011..429f1f40 100644 --- a/test/math/test_igamma.cpp +++ b/test/math/test_igamma.cpp @@ -82,19 +82,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index 3a0d76cc..1bf31054 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -97,19 +97,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_igamma_inva.cpp b/test/math/test_igamma_inva.cpp index 026694c8..09633434 100644 --- a/test/math/test_igamma_inva.cpp +++ b/test/math/test_igamma_inva.cpp @@ -76,19 +76,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); - test_gamma(mp_number >(), "mp_number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); + test_gamma(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_laguerre.cpp b/test/math/test_laguerre.cpp index f3cded2a..fe309c88 100644 --- a/test/math/test_laguerre.cpp +++ b/test/math/test_laguerre.cpp @@ -75,19 +75,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_laguerre(mp_number >(), "mp_number >"); - test_laguerre(mp_number >(), "mp_number >"); - test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(number >(), "number >"); + test_laguerre(number >(), "number >"); + test_laguerre(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_laguerre(mp_number >(), "mp_number >"); - test_laguerre(mp_number >(), "mp_number >"); - test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(number >(), "number >"); + test_laguerre(number >(), "number >"); + test_laguerre(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_laguerre(mp_number >(), "mp_number >"); - test_laguerre(mp_number >(), "mp_number >"); - test_laguerre(mp_number >(), "mp_number >"); + test_laguerre(number >(), "number >"); + test_laguerre(number >(), "number >"); + test_laguerre(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp index e392365f..e3b26c51 100644 --- a/test/math/test_legendre.cpp +++ b/test/math/test_legendre.cpp @@ -75,19 +75,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_legendre_p(mp_number >(), "mp_number >"); - test_legendre_p(mp_number >(), "mp_number >"); - test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(number >(), "number >"); + test_legendre_p(number >(), "number >"); + test_legendre_p(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_legendre_p(mp_number >(), "mp_number >"); - test_legendre_p(mp_number >(), "mp_number >"); - test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(number >(), "number >"); + test_legendre_p(number >(), "number >"); + test_legendre_p(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_legendre_p(mp_number >(), "mp_number >"); - test_legendre_p(mp_number >(), "mp_number >"); - test_legendre_p(mp_number >(), "mp_number >"); + test_legendre_p(number >(), "number >"); + test_legendre_p(number >(), "number >"); + test_legendre_p(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp index 982546bd..7657e325 100644 --- a/test/math/test_tgamma_ratio.cpp +++ b/test/math/test_tgamma_ratio.cpp @@ -89,19 +89,19 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_tgamma_ratio(mp_number >(), "mp_number >"); - test_tgamma_ratio(mp_number >(), "mp_number >"); - test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(number >(), "number >"); + test_tgamma_ratio(number >(), "number >"); + test_tgamma_ratio(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_tgamma_ratio(mp_number >(), "mp_number >"); - test_tgamma_ratio(mp_number >(), "mp_number >"); - test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(number >(), "number >"); + test_tgamma_ratio(number >(), "number >"); + test_tgamma_ratio(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_tgamma_ratio(mp_number >(), "mp_number >"); - test_tgamma_ratio(mp_number >(), "mp_number >"); - test_tgamma_ratio(mp_number >(), "mp_number >"); + test_tgamma_ratio(number >(), "number >"); + test_tgamma_ratio(number >(), "number >"); + test_tgamma_ratio(number >(), "number >"); #endif return 0; } diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index 4484a7d3..0c7976cd 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -83,20 +83,20 @@ int test_main(int, char* []) // 35 decimal digits: tests arbitrary precision code // #ifdef TEST_MPF_50 - test_zeta(mp_number >(), "mp_number >"); - test_zeta(mp_number >(), "mp_number >"); - test_zeta(mp_number >(), "mp_number >"); + test_zeta(number >(), "number >"); + test_zeta(number >(), "number >"); + test_zeta(number >(), "number >"); #endif #ifdef TEST_MPFR_50 - test_zeta(mp_number >(), "mp_number >"); - test_zeta(mp_number >(), "mp_number >"); - test_zeta(mp_number >(), "mp_number >"); + test_zeta(number >(), "number >"); + test_zeta(number >(), "number >"); + test_zeta(number >(), "number >"); #endif #ifdef TEST_CPP_DEC_FLOAT - test_zeta(mp_number >(), "mp_number >"); - test_zeta(mp_number >(), "mp_number >"); - test_zeta(mp_number >(), "mp_number >"); - test_zeta(mp_number >(), "mp_number >"); + test_zeta(number >(), "number >"); + test_zeta(number >(), "number >"); + test_zeta(number >(), "number >"); + test_zeta(number >(), "number >"); #endif return 0; } diff --git a/test/test_acos.cpp b/test/test_acos.cpp index 6e81985f..b4dcc828 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -89,7 +89,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -103,14 +103,14 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index fad3dbb3..71e49d19 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1211,12 +1211,12 @@ void test() int main() { #ifdef TEST_ARITHMETIC_BACKEND - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); #endif #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -1228,14 +1228,14 @@ int main() #endif #ifdef TEST_MPZ test(); - test > >(); + test > >(); #endif #ifdef TEST_MPQ test(); #endif #ifdef TEST_CPP_DEC_FLOAT test(); - test, false> >(); + test, false> >(); #endif #ifdef TEST_MPFR test(); @@ -1245,7 +1245,7 @@ int main() #endif #ifdef TEST_TOMMATH test(); - test > >(); + test > >(); #endif #ifdef TEST_TOMMATH_BOOST_RATIONAL test >(); @@ -1255,15 +1255,15 @@ int main() #endif #ifdef TEST_CPP_INT test(); - test(); - test(); + test(); + test(); test(); - test, false> >(); - test > >(); + test, false> >(); + test > >(); // Again with "trivial" backends: - test, false > >(); - test, false > >(); + test, false > >(); + test, false > >(); #endif #ifdef TEST_CPP_INT_BR test(); diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 61ab5d12..271172fe 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -85,7 +85,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -99,17 +99,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_atan.cpp b/test/test_atan.cpp index de426780..1b28a395 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -62,7 +62,7 @@ struct is_mpfr_type : public boost::mpl::false_ {}; #ifdef TEST_MPFR_50 template -struct is_mpfr_type > > : public boost::mpl::true_{}; +struct is_mpfr_type > > : public boost::mpl::true_{}; #endif template @@ -231,7 +231,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -245,17 +245,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_constants.cpp b/test/test_constants.cpp index 5e9ad8e7..4e72ca11 100644 --- a/test/test_constants.cpp +++ b/test/test_constants.cpp @@ -160,7 +160,7 @@ inline bool is_mpfr(const T&) } #if defined(TEST_MPFR_50) template -inline bool is_mpfr(const boost::multiprecision::mp_number >&) +inline bool is_mpfr(const boost::multiprecision::number >&) { return true; } @@ -185,13 +185,13 @@ void test() int main() { #ifdef TEST_MPFR_50 - test > >(); + test > >(); #endif #ifdef TEST_CPP_DEC_FLOAT - test > >(); + test > >(); #endif #ifdef TEST_MPF_50 - test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_constexpr.cpp b/test/test_constexpr.cpp index 6e97e2ae..66e601b1 100644 --- a/test/test_constexpr.cpp +++ b/test/test_constexpr.cpp @@ -31,9 +31,9 @@ void test3() using namespace boost::multiprecision; -template void test1, false> >(); -template void test1, false> >(); -template void test3, false> >(); -template void test2, false> >(); +template void test1, false> >(); +template void test1, false> >(); +template void test3, false> >(); +template void test2, false> >(); #endif \ No newline at end of file diff --git a/test/test_cos.cpp b/test/test_cos.cpp index b31528bf..36488b1b 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -285,7 +285,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -299,14 +299,14 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index ada92a21..46900c40 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -127,7 +127,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -141,14 +141,14 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index a21f2a8b..9efa78a3 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -340,7 +340,7 @@ int main() { using namespace boost::multiprecision; test(); - test > >(); + test > >(); return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index da5cceff..4167d4c7 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -167,7 +167,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -181,17 +181,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_fixed_int.cpp b/test/test_fixed_int.cpp index e69e2e29..87a72399 100644 --- a/test/test_fixed_int.cpp +++ b/test/test_fixed_int.cpp @@ -54,7 +54,7 @@ T generate_random(unsigned bits_wanted) int main() { using namespace boost::multiprecision; - typedef mp_number > packed_type; + typedef number > packed_type; unsigned last_error_count = 0; for(int i = 0; i < 1000; ++i) { diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index fb51eede..410b531a 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -42,7 +42,7 @@ #if defined(TEST_MPF_50) template -bool is_mpf(const boost::multiprecision::mp_number >&) +bool is_mpf(const boost::multiprecision::number >&) { return true; } #endif template @@ -215,23 +215,23 @@ struct max_digits10_proxy }; #ifdef TEST_CPP_DEC_FLOAT template -struct max_digits10_proxy, ET> > +struct max_digits10_proxy, ET> > { - static const unsigned value = std::numeric_limits, ET> >::max_digits10; + static const unsigned value = std::numeric_limits, ET> >::max_digits10; }; #endif #ifdef TEST_MPF_50 template -struct max_digits10_proxy, ET> > +struct max_digits10_proxy, ET> > { - static const unsigned value = std::numeric_limits, ET> >::max_digits10; + static const unsigned value = std::numeric_limits, ET> >::max_digits10; }; #endif #ifdef TEST_MPFR_50 template -struct max_digits10_proxy, ET> > +struct max_digits10_proxy, ET> > { - static const unsigned value = std::numeric_limits, ET> >::max_digits10; + static const unsigned value = std::numeric_limits, ET> >::max_digits10; }; #endif diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp index 063ba8a9..b579daca 100644 --- a/test/test_fpclassify.cpp +++ b/test/test_fpclassify.cpp @@ -314,7 +314,7 @@ int main() test(); #endif #ifdef TEST_BACKEND - test >(); + test >(); #endif return boost::report_errors(); } diff --git a/test/test_generic_conv.cpp b/test/test_generic_conv.cpp index df033f83..a552a3cd 100644 --- a/test/test_generic_conv.cpp +++ b/test/test_generic_conv.cpp @@ -58,7 +58,7 @@ int main() // // Now integer to float: // - typedef mp_number > dec_float_500; + typedef number > dec_float_500; dec_float_500 df(c); dec_float_500 df2(c.str()); BOOST_CHECK_EQUAL(df, df2); @@ -66,7 +66,7 @@ int main() df2 = -df2; BOOST_CHECK_EQUAL(df, df2); #ifdef TEST_GMP - typedef mp_number > mpf_type; + typedef number > mpf_type; mpf_type mpf(c); mpf_type mpf2(c.str()); BOOST_CHECK_EQUAL(mpf, mpf2); @@ -75,7 +75,7 @@ int main() BOOST_CHECK_EQUAL(mpf, mpf2); #endif #ifdef TEST_MPFR - typedef mp_number > mpfr_type; + typedef number > mpfr_type; mpfr_type mpfr(c); mpfr_type mpfr2(c.str()); BOOST_CHECK_EQUAL(mpfr, mpfr2); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 87c79ec7..1f87a88c 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -123,9 +123,9 @@ int main() test_round_trip(); #endif #ifdef TEST_CPP_INT - test_round_trip > >(); - test_round_trip > >(); - test_round_trip > >(); + test_round_trip > >(); + test_round_trip > >(); + test_round_trip > >(); #endif return boost::report_errors(); } diff --git a/test/test_log.cpp b/test/test_log.cpp index 35714bc0..1d5f0342 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -195,7 +195,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -209,17 +209,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 20ad2dad..6d5c376d 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -201,7 +201,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -237,10 +237,10 @@ int main() #endif #ifdef TEST_CPP_INT test(); - test(); - test(); - test > >(); - test > >(); + test(); + test(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 4c55ab07..49762f90 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -570,7 +570,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -584,17 +584,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index 4d629fb7..8003d4f3 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -92,7 +92,7 @@ void do_round_trip(const T& val, std::ios_base::fmtflags f, const boost::mpl::fa template struct is_mp_number : public boost::mpl::false_{}; template -struct is_mp_number > : public boost::mpl::true_{}; +struct is_mp_number > : public boost::mpl::true_{}; template void do_round_trip(const T& val, std::ios_base::fmtflags f) @@ -127,7 +127,7 @@ int main() #ifdef TEST_MPQ test_round_trip(); test_round_trip >(); - test_round_trip > >(); + test_round_trip > >(); #endif #ifdef TEST_TOMMATH test_round_trip >(); diff --git a/test/test_round.cpp b/test/test_round.cpp index 1fb4822d..d77f24be 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -390,17 +390,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif #ifdef TEST_BACKEND - test >(); + test >(); #endif return boost::report_errors(); } diff --git a/test/test_sin.cpp b/test/test_sin.cpp index f8ad7830..fef86827 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -279,7 +279,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -293,17 +293,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index b4fc7194..2a18c8b5 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -203,7 +203,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -217,17 +217,17 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index da17ea4c..57b84206 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -173,7 +173,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -187,20 +187,20 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); // Check low multiprecision digit counts. - test > >(); - test > >(); + test > >(); + test > >(); // Check up to 1000 multiprecision digits. - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index d4f57038..a76fbe48 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -122,7 +122,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); @@ -136,14 +136,14 @@ int main() test(); test(); // Some "peculiar" digit counts which stress our code: - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } diff --git a/test/ublas_interop/test1.hpp b/test/ublas_interop/test1.hpp index 9d0731cb..db44c15f 100644 --- a/test/ublas_interop/test1.hpp +++ b/test/ublas_interop/test1.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::mp_number, false> mp_test_type; +typedef boost::multiprecision::number, false> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test2.hpp b/test/ublas_interop/test2.hpp index b58c6177..8dfc0a61 100644 --- a/test/ublas_interop/test2.hpp +++ b/test/ublas_interop/test2.hpp @@ -18,7 +18,7 @@ #include -typedef boost::multiprecision::mp_number, false> mp_test_type; +typedef boost::multiprecision::number, false> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test3.hpp b/test/ublas_interop/test3.hpp index 032b029c..e884d80c 100644 --- a/test/ublas_interop/test3.hpp +++ b/test/ublas_interop/test3.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::mp_number, false> mp_test_type; +typedef boost::multiprecision::number, false> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test4.hpp b/test/ublas_interop/test4.hpp index 20194f7a..6001e9c4 100644 --- a/test/ublas_interop/test4.hpp +++ b/test/ublas_interop/test4.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::mp_number, false> mp_test_type; +typedef boost::multiprecision::number, false> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test5.hpp b/test/ublas_interop/test5.hpp index cd98e665..639cecaf 100644 --- a/test/ublas_interop/test5.hpp +++ b/test/ublas_interop/test5.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::mp_number, false> mp_test_type; +typedef boost::multiprecision::number, false> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test7.hpp b/test/ublas_interop/test7.hpp index 4990642f..40546991 100644 --- a/test/ublas_interop/test7.hpp +++ b/test/ublas_interop/test7.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::mp_number, false> mp_test_type; +typedef boost::multiprecision::number, false> mp_test_type; //typedef double mp_test_type; #define USE_RANGE From 6f317ee809ccfa0e1a726e1ac523de307ad73261 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 8 Aug 2012 18:25:27 +0000 Subject: [PATCH 216/256] Rebuild docs. [SVN r79933] --- .../boost_multiprecision/indexes/s01.html | 99 ++--- .../boost_multiprecision/indexes/s02.html | 38 +- .../boost_multiprecision/indexes/s03.html | 94 +++-- .../boost_multiprecision/indexes/s04.html | 280 ++++++------- doc/html/boost_multiprecision/intro.html | 76 +++- doc/html/boost_multiprecision/map/todo.html | 2 +- .../perf/int_real_world.html | 4 +- doc/html/boost_multiprecision/ref.html | 8 +- .../boost_multiprecision/ref/backendconc.html | 55 ++- .../boost_multiprecision/ref/cpp_dec_ref.html | 4 +- .../boost_multiprecision/ref/cpp_int_ref.html | 26 +- .../boost_multiprecision/ref/gmp_int_ref.html | 2 +- .../boost_multiprecision/ref/headers.html | 10 +- .../boost_multiprecision/ref/mpf_ref.html | 12 +- .../boost_multiprecision/ref/mpfr_ref.html | 12 +- .../ref/{mp_number.html => number.html} | 384 +++++++++--------- .../boost_multiprecision/ref/tom_int_ref.html | 2 +- .../boost_multiprecision/tut/conversions.html | 34 +- .../tut/floats/cpp_dec_float.html | 17 +- .../tut/floats/fp_eg/jel.html | 2 +- .../tut/floats/fp_eg/poly_eg.html | 4 +- .../tut/floats/gmp_float.html | 38 +- .../tut/floats/mpfr_float.html | 34 +- .../tut/ints/cpp_int.html | 40 +- .../tut/ints/egs/factorials.html | 2 +- .../tut/ints/gmp_int.html | 18 +- .../tut/ints/tom_int.html | 10 +- .../boost_multiprecision/tut/primetest.html | 4 +- .../boost_multiprecision/tut/rational.html | 4 +- .../boost_multiprecision/tut/rational/br.html | 2 +- .../tut/rational/cpp_rational.html | 7 +- .../tut/rational/gmp_rational.html | 16 +- .../tut/rational/rational_adapter.html | 6 +- .../tut/rational/tommath_rational.html | 12 +- doc/html/index.html | 4 +- doc/multiprecision.qbk | 55 ++- 36 files changed, 803 insertions(+), 614 deletions(-) rename doc/html/boost_multiprecision/ref/{mp_number.html => number.html} (67%) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 717f0ba7..b8cec282 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,52 +13,41 @@ -
    +

    -Function Index

    -

    A B C D E F I L M P R S T Z

    +Function Index
    +

    B C D E F I L M P R S T Z

    -A -
    -
    -
    -B +B
    -C +C
    -D +D
    -E +E
    -F +F
    -I +I
    -L +L
    -M +M
    -P +P
    -R +R
    -S +S
    -T +T
    Z diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 863536e0..f03f6b35 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,18 +13,18 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    -

    C G M N T

    +Class Index
    +

    C G M N T

    -C +C
    -G +G
    -M +M
    -
    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 0881eae2..7d33939b 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,58 +12,51 @@
    PrevUpHome
    -
    +

    -Index

    -

    A B C D E F G I L M N O P R S T Z

    +Index
    +

    B C D E F G I L M N O P R S T U Z

    -A -
    -
    -
    -B +B
    -C +C
  • @@ -120,7 +113,7 @@
  • -D +D
    -E +E
    -F +F
    -G +G
    • @@ -192,7 +185,7 @@
    -I +I
    -L +L
    -M +M
    -N +N
    -
    -O +O
    -P +P
    -R +R
    -S +S
    -T +T
    +
    +U +
    +
    diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index e13b16a1..f1b934dc 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -31,7 +31,7 @@

    • - An expression-template-enabled front-end mp_number + An expression-template-enabled front-end number that handles all the operator overloading, expression evaluation optimization, and code reduction.
    • @@ -59,7 +59,7 @@

      Alternatively, you can compose your own multiprecision type, by combining - mp_number with one of the predefined + number with one of the predefined back-end types. For example, suppose you wanted a 300 decimal digit floating-point type based on the MPFR library. In this case, there's no predefined typedef with that level of precision, so instead @@ -69,20 +69,20 @@ namespace mp = boost::multiprecision; // Reduce the typing a bit later... -typedef mp::mp_number<mp::mpfr_float_backend<300> > my_float; +typedef mp::number<mp::mpfr_float_backend<300> > my_float; my_float a, b, c; // These variables have 300 decimal digits precision

      We can repeat the above example, but with the expression templates disabled (for faster compile times, but slower runtimes) by passing a second template - argument to mp_number: + argument to number:

      #include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR
       
       namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
       
      -typedef mp::mp_number<mp::mpfr_float_backend<300>, false>  my_float;
      +typedef mp::number<mp::mpfr_float_backend<300>, false>  my_float;
       
       my_float a, b, c; // These variables have 300 decimal digits precision
       
      @@ -94,8 +94,8 @@ namespace mp = boost::multiprecision; // Reduce the typing a bit later... -mp::mp_int128_t a(3), b(2); -mp::mp_int512_t c(50), d; +mp::int128_t a(3), b(2); +mp::int512_t c(50), d; d = c * a; // Compiler error @@ -104,22 +104,55 @@

      d = a; // OK, widening conversion.
       d = a * b;  // OK, can convert from an expression template too.
      -d = mp::mp_int512_t(a) * c; // OK, all the types in the expression are the same now.
      +d = mp::int512_t(a) * c; // OK, all the types in the expression are the same now.
       
      + Move + Semantics +
      +

      + On compilers that support rvalue-references, class number + is move-enabled if the underlying backend is. +

      +

      + In addition the non-expression template operator overloads (see below) are + move aware and have overloads that look something like: +

      +
      template <class B>
      +number<B, false> operator + (number&& a, const number& b)
      +{
      +    return std::move(a += b);
      +}
      +
      +

      + These operator overloads ensure that many expressions can be evaluated without + actually generating any temporaries. However, there are still many simple expressions + such as: +

      +
      a = b * c;
      +
      +

      + Which don't noticably benefit from move support. Therefore, optimal performance + comes from having both move-support, and expression templates enabled. +

      +
      + Expression Templates

      - Class mp_number is expression-template-enabled: + TODO: compare to rvalue refs. +

      +

      + Class number is expression-template-enabled: that means that rather than having a multiplication operator that looks like this:

      template <class Backend>
      -mp_number<Backend> operator * (const mp_number<Backend>& a, const mp_number<Backend>& b)
      +number<Backend> operator * (const number<Backend>& a, const number<Backend>& b)
       {
      -   mp_number<Backend> result(a);
      +   number<Backend> result(a);
          result *= b;
          return result;
       }
      @@ -128,7 +161,7 @@
             Instead the operator looks more like this:
           

      template <class Backend>
      -unmentionable-type operator * (const mp_number<Backend>& a, const mp_number<Backend>& b);
      +unmentionable-type operator * (const number<Backend>& a, const number<Backend>& b);
       

      Where the "unmentionable" return type is an implementation detail @@ -150,7 +183,7 @@ y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0];

      - If type T is an mp_number, then this expression is evaluated + If type T is a number, then this expression is evaluated without creating a single temporary value. In contrast, if we were using the mpfr_class C++ wrapper for MPFR - then this expression @@ -169,7 +202,7 @@

      This library also extends expression template support to standard library functions like abs or sin - with mp_number arguments. This + with number arguments. This means that an expression such as:

      y = abs(x);
      @@ -200,7 +233,7 @@
             tend to be slower to compile than their simpler cousins, they're also harder
             to debug (should you actually want to step through our code!), and rely on
             compiler optimizations being turned on to give really good performance. Also,
      -      since the return type from expressions involving mp_numbers
      +      since the return type from expressions involving numbers
             is an "unmentionable implementation detail", you have to be careful
             to cast the result of an expression to the actual number type when passing
             an expression to a template function. For example, given:
      @@ -282,7 +315,7 @@
       
    + + + + + + + + + +

    - mp_number + number

    @@ -356,8 +389,8 @@

    - Finally, note that mp_number - takes a second template argument, which, when set to false + Finally, note that number takes + a second template argument, which, when set to false disables all the expression template machinery. The result is much faster to compile, but slower at runtime.

    @@ -367,6 +400,9 @@ to carry out the underlying arithmetic, and all are operating at the same precision (50 decimal digits):

    +

    + TODO: Update, compare to rvalue refs but no ET's as well. +

    Table 1.2. Evaluation of Boost.Math's Bessel function test data

    @@ -396,7 +432,7 @@

    - mp_number + number

    @@ -476,7 +512,7 @@

    - mp_number + number

    diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 9b6465df..2877ef6c 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -56,7 +56,7 @@
  • Can we differentiate between explicit and implicit conversions in the - mp_number constructor (may need some new type traits)? + number constructor (may need some new type traits)?
  • Can ring types (exact floating point types) be supported? The answer diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html index 89278b58..353ab9ee 100644 --- a/doc/html/boost_multiprecision/perf/int_real_world.html +++ b/doc/html/boost_multiprecision/perf/int_real_world.html @@ -145,7 +145,7 @@
  • - mp_int1024_t + int1024_t

    @@ -157,7 +157,7 @@

    - mp_int1024_t (no Expression templates) + int1024_t (no Expression templates)

    diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index 4f869c43..0516caf6 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -7,18 +7,18 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index f901dcde..32100789 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -19,13 +19,17 @@

    The requirements on the Backend - template argument to mp_number + template argument to number are split up into compulsory requirements, and optional requirements that are either to improve performance or provide optional features.

    +

    + TODO: Add optional construction support, add throws specification, clarify + what compulsory means. +

    In the following tables, type B is the Backend - template arument to mp_number, + template arument to number, b and b2 are a variables of type B, cb and cb2 are constant variables @@ -38,6 +42,9 @@ is a variable of type pointer-to-arithmetic-type, exp is a variable of type B::exp_type, pexp is a variable of type B::exp_type*, + i is a variable of type + int, pi + pointer to a variable of type int, B2 is another type that meets these requirements, b2 is a variable of type B2.

    @@ -614,6 +621,50 @@
    +

    + eval_frexp(b, + cb, + pi) +

    +
    +

    + void +

    +
    +

    + Stores values in b + and *pi + such that the value of cb + is b * 2*pi, only required when B + is a floating-point type. +

    +
    +

    + eval_ldexp(b, + cb, + i) +

    +
    +

    + void +

    +
    +

    + Stores a value in b + that is cb * 2i, only required when B + is a floating-point type. +

    +

    eval_floor(b, diff --git a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html index 031f0575..8d84ad3d 100644 --- a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html @@ -22,8 +22,8 @@ template <unsigned Digits10> class cpp_dec_float; -typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50; -typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100; +typedef number<cpp_dec_float<50> > cpp_dec_float_50; +typedef number<cpp_dec_float<100> > cpp_dec_float_100; }} // namespaces diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html index e0c9f368..a302ef80 100644 --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -6,12 +6,12 @@ - +

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -22,21 +22,21 @@ template <unsigned MinBits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> > struct cpp_int_backend; -typedef mp_number<cpp_int_backend<> > cpp_int; // arbitrary precision integer +typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend; -typedef mp_number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number +typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: -typedef mp_number<cpp_int_backend<128, false, void>, false> mp_uint128_t; -typedef mp_number<cpp_int_backend<256, false, void>, false> mp_uint256_t; -typedef mp_number<cpp_int_backend<512, false, void>, false> mp_uint512_t; -typedef mp_number<cpp_int_backend<1024, false, void>, false> mp_uint1024_t; +typedef number<cpp_int_backend<128, false, void>, false> uint128_t; +typedef number<cpp_int_backend<256, false, void>, false> uint256_t; +typedef number<cpp_int_backend<512, false, void>, false> uint512_t; +typedef number<cpp_int_backend<1024, false, void>, false> uint1024_t; // Fixed precision signed types: -typedef mp_number<cpp_int_backend<128, true, void>, false> mp_int128_t; -typedef mp_number<cpp_int_backend<256, true, void>, false> mp_int256_t; -typedef mp_number<cpp_int_backend<512, true, void>, false> mp_int512_t; -typedef mp_number<cpp_int_backend<1024, true, void>, false> mp_int1024_t; +typedef number<cpp_int_backend<128, true, void>, false> int128_t; +typedef number<cpp_int_backend<256, true, void>, false> int256_t; +typedef number<cpp_int_backend<512, true, void>, false> int512_t; +typedef number<cpp_int_backend<1024, true, void>, false> int1024_t; }} // namespaces @@ -96,7 +96,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref/gmp_int_ref.html b/doc/html/boost_multiprecision/ref/gmp_int_ref.html index ff5fb3ca..2f2655e7 100644 --- a/doc/html/boost_multiprecision/ref/gmp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/gmp_int_ref.html @@ -21,7 +21,7 @@ class gmp_int; -typedef mp_number<gmp_int > mpz_int; +typedef number<gmp_int > mpz_int; }} // namespaces diff --git a/doc/html/boost_multiprecision/ref/headers.html b/doc/html/boost_multiprecision/ref/headers.html index 010807eb..87b88f8a 100644 --- a/doc/html/boost_multiprecision/ref/headers.html +++ b/doc/html/boost_multiprecision/ref/headers.html @@ -90,12 +90,12 @@

    - mp_number.hpp + number.hpp

    - Defines the mp_number + Defines the number backend, is included by all the backend headers.

    - concepts/mp_number_architypes.hpp + concepts/mp_number_archetypes.hpp

    @@ -250,13 +250,13 @@

    - detail/mp_number_base.hpp + detail/number_base.hpp

    All the expression template code, metaprogramming, and operator - overloads for mp_number. + overloads for number.

    diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html index a109f6fc..268d472b 100644 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -25,14 +25,14 @@ template <unsigned Digits10> class cpp_dec_float; -typedef mp_number<cpp_dec_float<50> > cpp_dec_float_50; -typedef mp_number<cpp_dec_float<100> > cpp_dec_float_100; +typedef number<cpp_dec_float<50> > cpp_dec_float_50; +typedef number<cpp_dec_float<100> > cpp_dec_float_100; }} // namespaces

    The cpp_dec_float back-end - is used in conjunction with mp_number: + is used in conjunction with number: It acts as an entirely C++ (header only and dependency free) real-number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. @@ -80,11 +80,16 @@ this type.

  • - Any mp_number instantiated - on this type, is convertible to any other mp_number - instantiated on this type - for example you can convert from mp_number<cpp_dec_float<50> > to mp_number<cpp_dec_float<SomeOtherValue> >. + Any number instantiated + on this type, is convertible to any other number + instantiated on this type - for example you can convert from number<cpp_dec_float<50> > to number<cpp_dec_float<SomeOtherValue> >. Narrowing conversions are truncating.
  • +
  • + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid floating + point number. +
  • diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html index 981d684d..e3e4c8e0 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html @@ -53,7 +53,7 @@

    9.822663964796047e-001

    - Now lets implement the function again, but this time using the multiprecision + Now let's implement the function again, but this time using the multiprecision type cpp_dec_float_50 as the argument type:

    diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html index c8f5fb7e..2c28c3be 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html @@ -20,7 +20,7 @@

    In this example we'll look at polynomial evaluation, this is not only - an important use case, but it's one that mp_number + an important use case, but it's one that number performs particularly well at because the expression templates completely eliminate all temporaries from a Horner polynomial evaluation scheme. @@ -32,7 +32,7 @@

    using boost::multiprecision::cpp_dec_float;
    -typedef boost::multiprecision::mp_number<cpp_dec_float<64> > mp_type;
    +typedef boost::multiprecision::number<cpp_dec_float<64> > mp_type;
     
     mp_type mysin(const mp_type& x)
     {
    diff --git a/doc/html/boost_multiprecision/tut/floats/gmp_float.html b/doc/html/boost_multiprecision/tut/floats/gmp_float.html
    index 3b104b2e..e60bb835 100644
    --- a/doc/html/boost_multiprecision/tut/floats/gmp_float.html
    +++ b/doc/html/boost_multiprecision/tut/floats/gmp_float.html
    @@ -25,17 +25,17 @@
     template <unsigned Digits10>
     class gmp_float;
     
    -typedef mp_number<gmp_float<50> >    mpf_float_50;
    -typedef mp_number<gmp_float<100> >   mpf_float_100;
    -typedef mp_number<gmp_float<500> >   mpf_float_500;
    -typedef mp_number<gmp_float<1000> >  mpf_float_1000;
    -typedef mp_number<gmp_float<0> >     mpf_float;
    +typedef number<gmp_float<50> >    mpf_float_50;
    +typedef number<gmp_float<100> >   mpf_float_100;
    +typedef number<gmp_float<500> >   mpf_float_500;
    +typedef number<gmp_float<1000> >  mpf_float_1000;
    +typedef number<gmp_float<0> >     mpf_float;
     
     }} // namespaces
     

    The gmp_float back-end - is used in conjunction with mp_number + is used in conjunction with number : it acts as a thin wrapper around the GMP mpf_t to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, @@ -48,7 +48,7 @@ to zero. The typedefs mpf_float_50, mpf_float_100, mpf_float_500, mpf_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpf_float provides a variable precision type - whose precision can be controlled via the mp_numbers + whose precision can be controlled via the numbers member functions.

    @@ -63,7 +63,7 @@

    As well as the usual conversions from arithmetic and string types, instances - of mp_number<mpf_float<N> > are copy constructible and assignable + of number<mpf_float<N> > are copy constructible and assignable from:

      @@ -72,10 +72,10 @@ mpq_t.
    • - The mp_number wrappers - around those types: mp_number<mpf_float<M> >, - mp_number<gmp_int>, - mp_number<gmp_rational>. + The number wrappers + around those types: number<mpf_float<M> >, + number<gmp_int>, + number<gmp_rational>.

    @@ -97,6 +97,11 @@ library's global settings, so this type can be safely mixed with existing GMP code. +

  • + This backend supports rvalue-references and is move-aware, making instantiations + of number on this backend + move aware. +
  • It is not possible to round-trip objects of this type to and from a string and get back exactly the same value. This appears to be a limitation @@ -117,6 +122,15 @@ as the underlying implementation - indeed that is the recommended option on Win32.
  • +
  • + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid floating + point number. +
  • +
  • + Division by zero results in a std::runtime_error + being thrown. +
  • diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html index 8d42e7ac..183ccfdc 100644 --- a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -25,17 +25,17 @@ template <unsigned Digits10> class mpfr_float_backend; -typedef mp_number<mpfr_float_backend<50> > mpfr_float_50; -typedef mp_number<mpfr_float_backend<100> > mpfr_float_100; -typedef mp_number<mpfr_float_backend<500> > mpfr_float_500; -typedef mp_number<mpfr_float_backend<1000> > mpfr_float_1000; -typedef mp_number<mpfr_float_backend<0> > mpfr_float; +typedef number<mpfr_float_backend<50> > mpfr_float_50; +typedef number<mpfr_float_backend<100> > mpfr_float_100; +typedef number<mpfr_float_backend<500> > mpfr_float_500; +typedef number<mpfr_float_backend<1000> > mpfr_float_1000; +typedef number<mpfr_float_backend<0> > mpfr_float; }} // namespaces

    The mpfr_float_backend - type is used in conjunction with mp_number: + type is used in conjunction with number: It acts as a thin wrapper around the MPFR mpfr_t to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, @@ -48,7 +48,7 @@ to zero. The typedefs mpfr_float_50, mpfr_float_100, mpfr_float_500, mpfr_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision respectively. The typedef mpfr_float provides a variable precision type - whose precision can be controlled via the mp_numbers + whose precision can be controlled via the numbers member functions.

    @@ -63,7 +63,7 @@

    As well as the usual conversions from arithmetic and string types, instances - of mp_number<mpfr_float_backend<N> > are copy constructible and assignable + of number<mpfr_float_backend<N> > are copy constructible and assignable from:

      @@ -75,9 +75,9 @@ The MPFR native type mpfr_t.
    • - The mp_number wrappers - around those types: mp_number<mpfr_float_backend<M> >, - mp_number<mpf_float<M> >, mp_number<gmp_int>, mp_number<gmp_rational>. + The number wrappers + around those types: number<mpfr_float_backend<M> >, + number<mpf_float<M> >, number<gmp_int>, number<gmp_rational>.

    @@ -109,8 +109,16 @@

  • This backend supports rvalue-references and is move-aware, making instantiations - of mp_number on this - backend move aware. + of number on this backend + move aware. +
  • +
  • + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid floating + point number. +
  • +
  • + Division by zero results in an infinity.
  • diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html index 021c5d0c..65301980 100644 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -27,30 +27,30 @@ template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> > class cpp_int_backend; -typedef mp_number<cpp_int_backend<> > cpp_int; // arbitrary precision integer +typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend; -typedef mp_number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number +typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: -typedef mp_number<cpp_int_backend<128, false, void>, false> mp_uint128_t; -typedef mp_number<cpp_int_backend<256, false, void>, false> mp_uint256_t; -typedef mp_number<cpp_int_backend<512, false, void>, false> mp_uint512_t; -typedef mp_number<cpp_int_backend<1024, false, void>, false> mp_uint1024_t; +typedef number<cpp_int_backend<128, false, void>, false> uint128_t; +typedef number<cpp_int_backend<256, false, void>, false> uint256_t; +typedef number<cpp_int_backend<512, false, void>, false> uint512_t; +typedef number<cpp_int_backend<1024, false, void>, false> uint1024_t; // Fixed precision signed types: -typedef mp_number<cpp_int_backend<128, true, void>, false> mp_int128_t; -typedef mp_number<cpp_int_backend<256, true, void>, false> mp_int256_t; -typedef mp_number<cpp_int_backend<512, true, void>, false> mp_int512_t; -typedef mp_number<cpp_int_backend<1024, true, void>, false> mp_int1024_t; +typedef number<cpp_int_backend<128, true, void>, false> int128_t; +typedef number<cpp_int_backend<256, true, void>, false> int256_t; +typedef number<cpp_int_backend<512, true, void>, false> int512_t; +typedef number<cpp_int_backend<1024, true, void>, false> int1024_t; }} // namespaces

    The cpp_int_backend type is used via one of the typedefs boost::multiprecision::cpp_int, - boost::multiprecision::mp_uint128_t, boost::multiprecision::mp_uint256_t, - boost::multiprecision::mp_uint512_t, boost::multiprecision::mp_int128_t, - boost::multiprecision::mp_int256_t or boost::multiprecision::mp_int512_t. + boost::multiprecision::uint128_t, boost::multiprecision::uint256_t, + boost::multiprecision::uint512_t, boost::multiprecision::int128_t, + boost::multiprecision::int256_t or boost::multiprecision::int512_t.

    This back-end is the "Swiss Army Knife" of integer types as it @@ -112,7 +112,7 @@

  • The type uses a sign-magnitude representation internally, so type - mp_int128_t has 128-bits + int128_t has 128-bits of precision plus an extra sign bit. In this respect the behaviour of these types differs from built-in 2's complement types. In might be tempting to use a 127-bit type instead, and indeed this does work, @@ -138,15 +138,15 @@ Unsigned types support subtraction, and unary negation - the result is "as if" a 2's complement operation had been performed - in other words they behave pretty much as a built in integer type - would in this situation. So for example if we were using mp_uint128_t then both mp_uint128_t(1)-4 - and -mp_uint128(3) + would in this situation. So for example if we were using uint128_t then both uint128_t(1)-4 + and -uint128(3) would result in the value 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD - of type mp_uint128_t. + of type uint128_t.
  • This backend supports rvalue-references and is move-aware, making instantiations - of mp_number on this - backend move aware. + of number on this backend + move aware.
  • @@ -159,7 +159,7 @@ using namespace boost::multiprecision; -mp_int128_t v = 1; +int128_t v = 1; // Do some fixed precision arithmetic: for(unsigned i = 1; i <= 20; ++i) diff --git a/doc/html/boost_multiprecision/tut/ints/egs/factorials.html b/doc/html/boost_multiprecision/tut/ints/egs/factorials.html index dfbfe6e5..bc812cd7 100644 --- a/doc/html/boost_multiprecision/tut/ints/egs/factorials.html +++ b/doc/html/boost_multiprecision/tut/ints/egs/factorials.html @@ -40,7 +40,7 @@ // large the largest is, we'll be able to "pretty format" the results. // // Calculate the largest number that will fit inside 128 bits, we could - // also have used numeric_limits<mp_int128_t>::max() for this value: + // also have used numeric_limits<int128_t>::max() for this value: cpp_int limit = (cpp_int(1) << 128) - 1; // // Our table of values: diff --git a/doc/html/boost_multiprecision/tut/ints/gmp_int.html b/doc/html/boost_multiprecision/tut/ints/gmp_int.html index 1b7c9282..75dfcbf9 100644 --- a/doc/html/boost_multiprecision/tut/ints/gmp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/gmp_int.html @@ -24,7 +24,7 @@ class gmp_int; -typedef mp_number<gmp_int > mpz_int; +typedef number<gmp_int > mpz_int; }} // namespaces @@ -47,8 +47,8 @@ mpq_t.
  • - Instances of mp_number<T> that are wrappers around those - types: mp_number<gmp_float<N> >, mp_number<gmp_rational>. + Instances of number<T> that are wrappers around those + types: number<gmp_float<N> >, number<gmp_rational>.
  • @@ -76,8 +76,12 @@ will be thrown.

  • - Division by zero is handled by the GMP - library - it will trigger a division by zero signal. + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid integer. +
  • +
  • + Division by zero results in a std::runtime_error + being thrown.
  • Although this type is a wrapper around GMP @@ -87,8 +91,8 @@
  • This backend supports rvalue-references and is move-aware, making instantiations - of mp_number on this - backend move aware. + of number on this backend + move aware.
  • diff --git a/doc/html/boost_multiprecision/tut/ints/tom_int.html b/doc/html/boost_multiprecision/tut/ints/tom_int.html index 08ccad9d..b242c3f1 100644 --- a/doc/html/boost_multiprecision/tut/ints/tom_int.html +++ b/doc/html/boost_multiprecision/tut/ints/tom_int.html @@ -24,7 +24,7 @@ class tommath_int; -typedef mp_number<tommath_int > tom_int; +typedef number<tommath_int > tom_int; }} // namespaces @@ -61,8 +61,12 @@ will be thrown.
  • - Division by zero will result in a hardware signal being raised by - libtommath. + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid integer. +
  • +
  • + Division by zero results in a std::runtime_error + being thrown.
  • diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html index 8e83c166..ae6e1e3f 100644 --- a/doc/html/boost_multiprecision/tut/primetest.html +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -23,10 +23,10 @@
    #include <boost/multiprecision/miller_rabin.hpp>
     
     template <class Backend, bool ExpressionTemplates, class Engine>
    -bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
    +bool miller_rabin_test(const number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
     
     template <class Backend, bool ExpressionTemplates, class Engine>
    -bool miller_rabin_test(const mp_number<Backend, ExpressionTemplates>& n, unsigned trials);
    +bool miller_rabin_test(const number<Backend, ExpressionTemplates>& n, unsigned trials);
     

    These functions perform a Miller-Rabin test for primality, if the result diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 2571ebe6..2f156532 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -222,12 +222,12 @@

    - A C++ rational number type that can used with any mp_number integer type. + A C++ rational number type that can used with any number integer type.

    - The expression templates used by mp_number + The expression templates used by number end up being "hidden" inside boost::rational: performance may well suffer as a result.

    diff --git a/doc/html/boost_multiprecision/tut/rational/br.html b/doc/html/boost_multiprecision/tut/rational/br.html index a3efdfa6..0f6c0044 100644 --- a/doc/html/boost_multiprecision/tut/rational/br.html +++ b/doc/html/boost_multiprecision/tut/rational/br.html @@ -23,7 +23,7 @@

    Note that using the library in this way largely negates the effect of the - expression templates in mp_number. + expression templates in number.

    diff --git a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html index ea6b42a8..9c07ed72 100644 --- a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html @@ -24,7 +24,7 @@ typedefrational_adapter<cpp_int_backend<>>cpp_rational_backend; -typedefmp_number<cpp_rational_backend>cpp_rational; +typedefnumber<cpp_rational_backend>cpp_rational;}}// namespaces @@ -64,6 +64,11 @@ Division by zero results in a std::rumtime_error being thrown. +
  • + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid rational + number. +
  • diff --git a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html index 8f1f28fe..f8e6dfc5 100644 --- a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html @@ -24,7 +24,7 @@ class gmp_rational; -typedef mp_number<gmp_rational > mpq_rational; +typedef number<gmp_rational > mpq_rational; }} // namespaces @@ -38,7 +38,7 @@

    As well as the usual conversions from arithmetic and string types, instances - of mp_number<gmp_rational> + of number<gmp_rational> are copy constructible and assignable from:

      @@ -46,12 +46,12 @@ The GMP native types: mpz_t, mpq_t.
    • - mp_number<gmp_int>. + number<gmp_int>.

    There is also a two-argument constructor that accepts a numerator and denominator - (both of type mp_number<gmp_int>). + (both of type number<gmp_int>).

    There are also non-member functions: @@ -77,7 +77,13 @@ default behavior).

  • - Division by zero results in a hardware exception inside the GMP library. + Division by zero results in a std::runtime_error + being thrown. +
  • +
  • + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid rational + number.
  • No changes are made to the GMP diff --git a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html index 6b4853f1..e377fe2e 100644 --- a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html +++ b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html @@ -26,15 +26,15 @@

    The class template rational_adapter - is a back-end for mp_number + is a back-end for number which converts any existing integer back-end into a rational-number back-end.

    So for example, given an integer back-end type MyIntegerBackend, the use would be something like:

    -
    typedef mp_number<MyIntegerBackend>                    MyInt;
    -typedef mp_number<rational_adapter<MyIntegerBackend> > MyRational;
    +
    typedef number<MyIntegerBackend>                    MyInt;
    +typedef number<rational_adapter<MyIntegerBackend> > MyRational;
     
     MyRational r = 2;
     r /= 3;
    diff --git a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html
    index 25520372..11982c13 100644
    --- a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html
    +++ b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html
    @@ -23,7 +23,7 @@
     
    namespace boost{ namespace multiprecision{
     
     typedef rational_adpater<tommath_int>        tommath_rational;
    -typedef mp_number<tommath_rational >         tom_rational;
    +typedef number<tommath_rational >         tom_rational;
     
     }} // namespaces
     
    @@ -57,9 +57,13 @@ have the value zero (this the inherited Boost.Rational behavior).
  • - Division by zero results in a boost::bad_rational - exception being thrown (see the rational number library's docs for - more information). + Division by zero results in a std::runtime_error + being thrown. +
  • +
  • + Conversion from a string results in a std::runtime_error + being thrown if the string can not be interpreted as a valid rational + number.
  • No changes are made to libtommath's diff --git a/doc/html/index.html b/doc/html/index.html index 55b45c32..ba6104dd 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -78,7 +78,7 @@
    Reference
    -
    mp_number
    +
    number
    cpp_int
    gmp_int
    tom_int
    @@ -118,7 +118,7 @@
  • - +

    Last revised: June 07, 2012 at 09:33:02 GMT

    Last revised: August 08, 2012 at 18:23:03 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 46679178..ca42b29c 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -117,6 +117,27 @@ However, conversions are allowed: d = a * b; // OK, can convert from an expression template too. d = mp::int512_t(a) * c; // OK, all the types in the expression are the same now. +[h4 Move Semantics] + +On compilers that support rvalue-references, class `number` is move-enabled if the underlying backend is. + +In addition the non-expression template operator overloads (see below) are move aware and have overloads +that look something like: + + template + number operator + (number&& a, const number& b) + { + return std::move(a += b); + } + +These operator overloads ensure that many expressions can be evaluated without actually generating any temporaries. +However, there are still many simple expressions such as: + + a = b * c; + +Which don't noticably benefit from move support. Therefore, optimal performance comes from having both +move-support, and expression templates enabled. + [h4 Expression Templates] TODO: compare to rvalue refs. @@ -151,7 +172,7 @@ lets suppose we're evaluating a polynomial via Horners method, something like th //.... y = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; -If type `T` is an `number`, then this expression is evaluated ['without creating a single temporary value]. In contrast, +If type `T` is a `number`, then this expression is evaluated ['without creating a single temporary value]. In contrast, if we were using the [mpfr_class] C++ wrapper for [mpfr] - then this expression would result in no less than 11 temporaries (this is true even though [mpfr_class] does use expression templates to reduce the number of temporaries somewhat). Had we used an even simpler wrapper around [mpfr] like [mpreal] things would have been even worse and no less that 24 temporaries @@ -866,6 +887,20 @@ In particular: cpp_dec_float_50 df(0.5); // OK construction from double cpp_int i(450); // OK constructs from signed int +* A `number` can be converted to any built in type, via the `convert_to` member function: + + mpz_int z(2); + int i = z.template convert_to(); // sets i to 2 + +Additional conversions may be supported by particular backends. + +* A `number` can be converted to any built in type, via an explicit conversion operator: +this functionality is only available on compilers supporting C++11's explicit conversion syntax. + + mpz_int z(2); + int i = z; // Error, implicit conversion not allowed. + int j = static_cast(z); // OK explicit conversion. + * Any number type can be constructed (or assigned) from a `const char*` or a `std::string`: // pi to 50 places from a string: @@ -921,13 +956,6 @@ In particular: More information on what additional types a backend supports conversions from are given in the tutorial for each backend. -* An `number` can be converted to any built in type, via the `convert_to` member function: - - mpz_int z(2); - int i = z.template convert_to(); // sets i to 2 - -Additional conversions may be supported by particular backends. - [endsect] [section:random Generating Random Numbers] @@ -1036,6 +1064,8 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba // Generic conversion mechanism template T convert_to()const; + template + explicit operator T ()const; // precision control: static unsigned default_precision(); static void default_precision(unsigned digits10); @@ -1233,7 +1263,7 @@ For the left and right shift operations, the argument must be a builtin integer type with a positive value (negative values result in a `std::runtime_error` being thrown). Note that all the types involved in the expression must evaluate to the same type - which is to say -we cannot mix an `number` with an `number` where B1 and B2 are different types. +we cannot mix a `number` with a `number` where B1 and B2 are different types. operator ``['convertible-to-bool-type]``()const; @@ -1265,6 +1295,9 @@ if /scientific/ is true. template T convert_to()const; + template + explicit operator T ()const; + Provides a generic conversion mechanism to convert `*this` to type `T`. Type `T` may be any arithmetic type. Optionally other types may also be supported by specific `Backend` types. @@ -1320,7 +1353,7 @@ These operators all take their usual arithmetic meanings. The arguments to these functions must contain at least one of the following: -* An `number`. +* A `number`. * An expression template type derived from `number`. In addition, one of the two arguments may be a builtin arithmetic type. @@ -1332,7 +1365,7 @@ The return type of these operators is either: * Type `bool` if the operator is a comparison operator. Note that all the types involved in the expression must evaluate to the same type - which is to say -we cannot mix an `number` with an `number` where B1 and B2 are different types. +we cannot mix a `number` with a `number` where B1 and B2 are different types. Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative arguments result in a `std::runtime_error` being thrown). From 6fe80f07dee7401b086803aab828b70d265df284 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 10 Aug 2012 08:37:37 +0000 Subject: [PATCH 217/256] Much improved concept docs. Regenerate docs. Make some cpp_int specific routines generic instead. Changed divide-by-zero to be an overflow error. [SVN r79952] --- .../boost_multiprecision/indexes/s01.html | 268 +- .../boost_multiprecision/indexes/s02.html | 16 +- .../boost_multiprecision/indexes/s03.html | 18 +- .../boost_multiprecision/indexes/s04.html | 344 +- doc/html/boost_multiprecision/intro.html | 9 + .../boost_multiprecision/ref/backendconc.html | 3204 ++++++++++++----- doc/html/index.html | 2 +- doc/multiprecision.qbk | 429 ++- include/boost/multiprecision/cpp_int.hpp | 81 +- .../multiprecision/depricated/fixed_int.hpp | 2 +- .../detail/cpp_int_trivial_ops.hpp | 6 +- .../multiprecision/detail/integer_ops.hpp | 82 + include/boost/multiprecision/gmp.hpp | 32 +- .../boost/multiprecision/rational_adapter.hpp | 2 +- include/boost/multiprecision/tommath.hpp | 12 + test/test_arithmetic.cpp | 6 +- 16 files changed, 3254 insertions(+), 1259 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index b8cec282..d414d97f 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,13 +13,20 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    -

    B C D E F I L M P R S T Z

    +Function Index
    +

    A B C D E F I L M P R S T Z

    -B +A +
    +
    +
    +B
    • @@ -40,14 +47,14 @@
    -C +C
    -D +D
    • @@ -69,21 +76,246 @@
    -E +E
    -
    -F +F
    -I +I
    • @@ -120,7 +352,7 @@
    -L +L
    • @@ -145,7 +377,7 @@
    -M +M
    • miller_rabin_test

      @@ -155,7 +387,7 @@
    -P +P
    • @@ -171,7 +403,7 @@
    -R +R
    • @@ -184,7 +416,7 @@
    -S +S
    • @@ -197,14 +429,14 @@
    -T +T
    -Z +Z
    • zero

      diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index f03f6b35..d1ecfc4b 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,13 +13,13 @@
      PrevUpHomeNext
      -
      +

      -Class Index

      -

      C G M N T

      +Class Index
    +

    C G M N T

    -C +C
    • @@ -33,7 +33,7 @@
    -G +G
    -M +M
    • mpfr_float_backend

      @@ -51,7 +51,7 @@
    -N +N
    -T +T
    • tommath_int

      diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 3c80e3ca..14438ba0 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,13 +13,13 @@
      PrevUpHomeNext
      -
      +

      -Typedef Index

      -

      C I L M T U

      +Typedef Index
    +

    C I L M T U

    -C +C
    • @@ -47,7 +47,7 @@
    -I +I
    • @@ -72,14 +72,14 @@
    -L +L
    -M +M
    • @@ -154,7 +154,7 @@
    -T +T
    -U +U
    • diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 7d33939b..50d6b336 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,13 +12,20 @@
      PrevUpHome
      -
      +

      -Index

      -

      B C D E F G I L M N O P R S T U Z

      +Index
    +

    A B C D E F G I L M N O P R S T U Z

    -B +A +
    +
    +
    +B
    • @@ -43,7 +50,7 @@
    -C +C
    -D +D
    • @@ -135,21 +163,246 @@
    -E +E
    -
    -F +F
    -G +G
    • @@ -185,7 +438,7 @@
    -I +I
    • @@ -246,7 +499,7 @@
    -L +L
    • @@ -275,7 +528,7 @@
    -M +M
    • @@ -373,7 +626,7 @@
    -N +N
    • @@ -417,14 +670,59 @@
    -O +O
    -P +P
    • @@ -452,7 +750,7 @@
    -R +R
    • @@ -465,7 +763,7 @@
    -S +S
    • @@ -478,7 +776,7 @@
    -T +T
    • @@ -511,7 +809,7 @@
    -U +U
    • @@ -532,7 +830,7 @@
    -Z +Z
    @@ -72,6 +81,11 @@ Comments

    +

    + Throws +

    +
    +

    +   +

    +
    @@ -111,6 +130,11 @@ and shall terminate in the type that is std::uintmax_t.

    +

    +   +

    +
    @@ -130,6 +154,11 @@ terminate in type long double.

    +

    +   +

    +
    @@ -144,7 +173,13 @@

    - The type of the exponent of type B. + The type of the exponent of type B. This type is required only + for floating point types. +

    +
    +

    +  

    +

    +   +

    +
    @@ -175,6 +215,11 @@ Copy Constructor.

    +

    +   +

    +
    @@ -193,6 +238,11 @@ Assignment operator.

    +

    +   +

    +
    @@ -213,6 +263,11 @@ B::unsigned_types or B::float_types.

    +

    +   +

    +
    @@ -231,6 +286,12 @@ Assignment from a string.

    +

    + Throws a std::runtime_error if the string could + not be interpretted as a valid number. +

    +
    @@ -248,6 +309,11 @@ Swaps the contents of its arguments.

    +

    + noexcept +

    +
    @@ -270,6 +336,11 @@ digits as are required to reconstruct the original value.

    +

    +   +

    +
    @@ -287,6 +358,11 @@ Negates b.

    +

    +   +

    +
    @@ -310,6 +386,11 @@ and zero if cb == cb2.

    +

    + noexcept +

    +
    @@ -336,6 +417,11 @@ B::unsigned_types or B::float_types.

    +

    +   +

    +
    @@ -354,6 +440,11 @@ Adds cb to b.

    +

    +   +

    +
    @@ -373,6 +464,11 @@ b.

    +

    +   +

    +
    @@ -392,6 +488,11 @@ cb.

    +

    +   +

    +
    @@ -410,6 +511,13 @@ Divides b by cb.

    +

    + std::overflow_error if cb has the + value zero, and std::numeric_limits<number<B> >::has_infinity == + false +

    +
    @@ -431,6 +539,12 @@ type.

    +

    + std::overflow_error if cb has the + value zero. +

    +
    @@ -451,6 +565,11 @@ type.

    +

    +   +

    +
    @@ -471,6 +590,11 @@ type.

    +

    +   +

    +
    @@ -491,6 +615,11 @@ type.

    +

    +   +

    +
    @@ -511,6 +640,11 @@ is an integer type.

    +

    +   +

    +
    @@ -531,6 +665,11 @@ type.

    +

    +   +

    +
    @@ -551,6 +690,11 @@ type.

    +

    +   +

    +
    @@ -575,6 +719,11 @@ Conversions to other types are entirely optional.

    +

    +   +

    +
    @@ -598,6 +747,11 @@ is a floating-point type.

    +

    +   +

    +
    @@ -619,6 +773,11 @@ is a floating-point type.

    +

    +   +

    +
    @@ -642,6 +801,12 @@ is a floating-point type.

    +

    + std::runtime_error if the exponent + of cb is too large to be stored in an int. +

    +
    @@ -663,6 +828,11 @@ is a floating-point type.

    +

    +   +

    +
    @@ -684,6 +854,11 @@ type.

    +

    +   +

    +
    @@ -705,6 +880,11 @@ type.

    +

    +   +

    +
    @@ -726,6 +906,11 @@ type.

    +

    +   +

    +
    @@ -748,6 +933,11 @@ Defaults to number_kind_floating_point.

    +

    +   +

    +
    @@ -759,6 +949,7 @@
    @@ -776,9 +967,101 @@ Comments

    +

    + Throws +

    +
    +

    + Construct and assign: +

    +
       
    +

    + B(rb) +

    +
    +

    + B +

    +
    +

    + Move constructor. Afterwards variable rb + shall be in sane state, albeit with unspecified value. Only destruction + and assignment to the moved-from variable rb + need be supported after the operation. +

    +
    +

    + noexcept +

    +
    +

    + b = + rb +

    +
    +

    + B& +

    +
    +

    + Move-assign. Afterwards variable rb + shall be in sane state, albeit with unspecified value. Only destruction + and assignment to the moved-from variable rb + need be supported after the operation. +

    +
    +

    + noexcept +

    +
    +

    + B(a) +

    +
    +

    + B +

    +
    +

    + Direct construction from an arithmetic type. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. When not provided, + this operation is simulated using default-construction followed + by assignment. +

    +
    +

    +   +

    +

    B(b2) @@ -791,7 +1074,13 @@

    - Copy constructor from a different back-end type. + Copy constructor from a different back-end type. When not provided, + a generic interconversion routine is used. +

    +
    +

    +  

    - Assignment operator from a different back-end type. + Assignment operator from a different back-end type. When not provided, + a generic interconversion routine is used. +

    +
    +

    +  

    +

    +  

    +

    +   +

    +
    +

    + Comparisons: +

    +
       
    +

    + eval_eq(cb, + cb2) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb and cb2 + are equal in value. When not provided, the default implementation + returns cb.compare(cb2) + == 0. +

    +
    +

    + noexcept +

    +
    +

    + eval_eq(cb, + a) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb and a + are equal in value. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + return the equivalent of eval_eq(cb, B(a)). +

    +
    +

    +   +

    +
    +

    + eval_eq(a, + cb) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb and a + are equal in value. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + the default version returns eval_eq(cb, a). +

    +
    +

    +   +

    +
    +

    + eval_lt(cb, + cb2) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb is less than cb2 in value. When not provided, + the default implementation returns cb.compare(cb2) < + 0. +

    +
    +

    + noexcept +

    +
    +

    + eval_lt(cb, + a) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb is less than a in value. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. When not provided, + the default implementation returns eval_lt(cb, B(a)). +

    +
    +

    +   +

    +
    +

    + eval_lt(a, + cb) +

    +
    +

    + bool +

    +
    +

    + Returns true if a is less than cb in value. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. When not provided, + the default implementation returns eval_gt(cb, a). +

    +
    +

    +   +

    +
    +

    + eval_gt(cb, + cb2) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb is greater than cb2 in value. When not provided, + the default implementation returns cb.compare(cb2) > + 0. +

    +
    +

    + noexcept +

    +
    +

    + eval_gt(cb, + a) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb is greater than a in value. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. When not provided, + the default implementation returns eval_gt(cb, B(a)). +

    +
    +

    +   +

    +
    +

    + eval_gt(a, + cb) +

    +
    +

    + bool +

    +
    +

    + Returns true if a is greater than cb in value. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. When not provided, + the default implementation returns eval_lt(cb, a). +

    +
    +

    +   +

    +
    +

    + eval_is_zero(cb) +

    +
    +

    + bool +

    +
    +

    + Returns true if cb is zero, otherwise false. The default version of this + function returns cb.compare(ui_type(0)) == + 0, where ui_type + is ui_type is + typename mpl::front<typename + B::unsigned_types>::type. +

    +
    +

    +   +

    +
    +

    + eval_get_sign(cb) +

    +
    +

    + int +

    +
    +

    + Returns a value < zero if cb + is negative, a value > zero if cb + is positive, and zero if cb + is zero. The default version of this function returns cb.compare(ui_type(0)), + where ui_type is + ui_type is typename mpl::front<typename + B::unsigned_types>::type. +

    +
    +

    +   +

    +
    +

    + Basic arithmetic: +

    +
       
    @@ -867,160 +1483,13 @@

    Adds a to b. The type of a shall be listed in one of the type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_subtract(b, - a) + or B::float_types. When not provided, + the default version calls eval_add(b, B(a))

    - void -

    -
    -

    - Subtracts a from - b. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - a) -

    -
    -

    - void -

    -
    -

    - Multiplies b by - a. The type of - a shall be listed - in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - a) -

    -
    -

    - void -

    -
    -

    - Divides b by a. The type of a shall be listed in one of the - type lists B::signed_types, B::unsigned_types - or B::float_types. -

    -
    -

    - eval_modulus(b, - a) -

    -
    -

    - void -

    -
    -

    - Computes b %= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_and(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b &= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b |= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, a) -

    -
    -

    - void -

    -
    -

    - Computes b ^= - cb, only required when - B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. +  

    Add cb to cb2 and stores the result in - b. -

    -
    -

    - eval_subtract(b, - cb, - cb2) + b. When not provided, + does the equivalent of b + = cb; eval_add(b, cb2).

    - void -

    -
    -

    - Subtracts cb2 from - cb and stores the - result in b. -

    -
    -

    - eval_multiply(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Multiplies cb by - cb2 and stores - the result in b. -

    -
    -

    - eval_divide(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Divides cb by - cb2 and stores - the result in b. +  

    -

    - eval_subtract(b, - cb, - a) + or B::float_types. When not provided, + does the equivalent of eval_add(b, cb, B(a)).

    - void -

    -
    -

    - Subtracts a from - cb and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_multiply(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Multiplies cb by - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_divide(b, - cb, - a) -

    -
    -

    - void -

    -
    -

    - Divides cb by - a and stores the - result in b. The - type of a shall - be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_modulus(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb % - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_and(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb & - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_or(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb | - cb2 and stores the result - in b, only required - when B is an integer - type. -

    -
    -

    - eval_bitwise_xor(b, cb, cb2) -

    -
    -

    - void -

    -
    -

    - Computes cb ^ - cb2 and stores the result - in b, only required - when B is an integer - type. +  

    +

    +   +

    +
    +

    + eval_subtract(b, + a) +

    +
    +

    + void +

    +
    +

    + Subtracts a from + b. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + the default version calls eval_subtract(b, B(a)) +

    +
    +

    +   +

    +
    +

    + eval_subtract(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Subtracts cb2 from + cb and stores the + result in b. When + not provided, does the equivalent of b + = cb; eval_subtract(b, cb2). +

    +
    +

    +   +

    +
    +

    + eval_subtract(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Subtracts a from + cb and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_subtract(b, cb, B(a)). +

    +
    +

    +  

    +

    +   +

    +
    +

    + eval_multiply(b, + a) +

    +
    +

    + void +

    +
    +

    + Multiplies b by + a. The type of + a shall be listed + in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + the default version calls eval_multiply(b, B(a)) +

    +
    +

    +   +

    +
    +

    + eval_multiply(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Multiplies cb by + cb2 and stores + the result in b. + When not provided, does the equivalent of b + = cb; eval_multiply(b, cb2). +

    +
    +

    +   +

    +
    +

    + eval_multiply(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Multiplies cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_multiply(b, cb, B(a)). +

    +
    +

    +  

    +

    +   +

    +
    +

    + eval_divide(b, + a) +

    +
    +

    + void +

    +
    +

    + Divides b by a. The type of a shall be listed in one of the + type lists B::signed_types, B::unsigned_types + or B::float_types. When not provided, + the default version calls eval_divide(b, B(a)) +

    +
    +

    + std::overflow_error if a has the value zero, and std::numeric_limits<number<B> + >::has_infinity + == false +

    +
    +

    + eval_divide(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Divides cb by + cb2 and stores + the result in b. + When not provided, does the equivalent of b + = cb; eval_divide(b, cb2). +

    +
    +

    + std::overflow_error if cb2 has the value zero, and + std::numeric_limits<number<B> + >::has_infinity + == false +

    +
    +

    + eval_divide(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Divides cb by + a and stores the + result in b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_divide(b, cb, B(a)). +

    +
    +

    + std::overflow_error if a has the value zero, and std::numeric_limits<number<B> + >::has_infinity + == false

    +

    + std::overflow_error if cb has the + value zero, and std::numeric_limits<number<B> >::has_infinity == + false +

    +
    +

    + eval_increment(b) +

    +
    +

    + void +

    +
    +

    + Increments the value of b + by one. When not provided, does the equivalent of eval_add(b, + static_cast<ui_type>(1u)). + Where ui_type is + typename mpl::front<typename + B::unsigned_types>::type. +

    +
    +

    +   +

    +
    +

    + eval_decrement(b) +

    +
    +

    + void +

    +
    +

    + Decrements the value of b + by one. When not provided, does the equivalent of eval_subtract(b, + static_cast<ui_type>(1u)). + Where ui_type is + typename mpl::front<typename + B::unsigned_types>::type. +

    +
    +

    +   +

    +
    +

    + Integer specific operations: +

    +
       
    +

    + eval_modulus(b, + a) +

    +
    +

    + void +

    +
    +

    + Computes b %= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + the default version calls eval_modulus(b, B(a)) +

    +
    +

    + std::overflow_error if a has the value zero. +

    +
    +

    + eval_modulus(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb % + cb2 and stores the result + in b, only required + when B is an integer + type. When not provided, does the equivalent of b + = cb; eval_modulus(b, cb2). +

    +
    +

    + std::overflow_error if a has the value zero.

    -

    - eval_bitwise_and(b, cb, a) + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_modulus(b, cb, B(a)).

    - void -

    -
    -

    - Computes cb & - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_or(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb | - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. -

    -
    -

    - eval_bitwise_xor(b, cb, a) -

    -
    -

    - void -

    -
    -

    - Computes cb ^ - a and stores the result - in b, only required - when B is an integer - type. The type of a - shall be listed in one of the type lists B::signed_types, - B::unsigned_types or B::float_types. + std::overflow_error if a has the value zero.

    +

    + std::overflow_error if a has the value zero. +

    +
    +

    + eval_bitwise_and(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b &= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + the default version calls eval_bitwise_and(b, B(a)) +

    +
    +

    +   +

    +
    +

    + eval_bitwise_and(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb & + cb2 and stores the result + in b, only required + when B is an integer + type. When not provided, does the equivalent of b + = cb; eval_bitwise_and(b, cb2). +

    +
    +

    +   +

    +
    +

    + eval_bitwise_and(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb & + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_bitwise_and(b, cb, B(a)). +

    +
    +

    +  

    +

    +   +

    +
    +

    + eval_bitwise_or(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b |= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + the default version calls eval_bitwise_or(b, B(a)) +

    +
    +

    +   +

    +
    +

    + eval_bitwise_or(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb | + cb2 and stores the result + in b, only required + when B is an integer + type. When not provided, does the equivalent of b + = cb; eval_bitwise_or(b, cb2). +

    +
    +

    +   +

    +
    +

    + eval_bitwise_or(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb | + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_bitwise_or(b, cb, B(a)). +

    +
    +

    +  

    +

    +   +

    +
    +

    + eval_bitwise_xor(b, a) +

    +
    +

    + void +

    +
    +

    + Computes b ^= + cb, only required when + B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + the default version calls eval_bitwise_xor(b, B(a)) +

    +
    +

    +   +

    +
    +

    + eval_bitwise_xor(b, cb, cb2) +

    +
    +

    + void +

    +
    +

    + Computes cb ^ + cb2 and stores the result + in b, only required + when B is an integer + type. When not provided, does the equivalent of b + = cb; eval_bitwise_xor(b, cb2). +

    +
    +

    +   +

    +
    +

    + eval_bitwise_xor(b, cb, a) +

    +
    +

    + void +

    +
    +

    + Computes cb ^ + a and stores the result + in b, only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided, + does the equivalent of eval_bitwise_xor(b, cb, B(a)). +

    +
    +

    +  

    +

    +  

    +

    +  

    - eval_increment(b) -

    -
    -

    - void -

    -
    -

    - Increments the value of b - by one. -

    -
    -

    - eval_decrement(b) -

    -
    -

    - void -

    -
    -

    - Decrements the value of b - by one. -

    -
    -

    - eval_is_zero(cb) -

    -
    -

    - bool -

    -
    -

    - Returns true if cb is zero, otherwise false -

    -
    -

    - eval_get_sign(cb) -

    -
    -

    - int -

    -
    -

    - Returns a value < zero if cb - is negative, a value > zero if cb - is positive, and zero if cb - is zero. -

    -
    -

    - eval_abs(b, - cb) -

    -
    -

    - void -

    -
    -

    - Set b to the absolute - value of cb. -

    -
    -

    - eval_fabs(b, - cb) -

    -
    -

    - void -

    -
    -

    - Set b to the absolute - value of cb. -

    -
    -

    - eval_fpclassify(cb) -

    -
    -

    - int -

    -
    -

    - Returns one of the same values returned by std::fpclassify. - Only required when B - is an floating-point type. -

    -
    -

    - eval_trunc(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::trunc - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_round(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::round - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_exp(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::exp - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_log(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::log - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_log10(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::log10 - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_sin(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::sin - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_cos(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::cos - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_tan(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::exp - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_asin(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::asin - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_acos(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::acos - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_atan(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::atan - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_sinh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::sinh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_cosh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::cosh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_tanh(b, - cb) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::tanh - on argument cb - and stores the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_fmod(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::fmod - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_pow(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::pow - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. -

    -
    -

    - eval_atan2(b, - cb, - cb2) -

    -
    -

    - void -

    -
    -

    - Performs the equivalent operation to std::atan - on arguments cb - and cb2, and store - the result in b. - Only required when B - is an floating-point type. +  

    +

    + std::overflow_error if a has the value zero.

    +

    + std::overflow_error if a has the value zero.

    +

    +  

    +

    +  

    +

    +  

    +

    +  

    +

    +  

    +

    +  

    +

    +   +

    +
    +

    + eval_gcd(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Sets b to the greatest + common divisor of cb + and cb2. Only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. The default version + of this function calls eval_gcd(b, cb, B(a)). +

    +
    +

    +   +

    +
    +

    + eval_lcm(b, + cb, + a) +

    +
    +

    + void +

    +
    +

    + Sets b to the least + common multiple of cb + and cb2. Only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. The default version + of this function calls eval_lcm(b, cb, B(a)). +

    +
    +

    +   +

    +
    +

    + eval_gcd(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Sets b to the greatest + common divisor of cb + and a. Only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. The default version + of this function calls eval_gcd(b, cb, a). +

    +
    +

    +   +

    +
    +

    + eval_lcm(b, + a, + cb) +

    +
    +

    + void +

    +
    +

    + Sets b to the least + common multiple of cb + and a. Only required + when B is an integer + type. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. The default version + of this function calls eval_lcm(b, cb, a). +

    +
    +

    +   +

    +
    +

    + eval_powm(b, + cb, + cb2, + cb3) +

    +
    +

    + void +

    +
    +

    + Sets b to the result + of (cb^cb2)%cb3. The default version of this + function is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_powm(b, + cb, + cb2, + a) +

    +
    +

    + void +

    +
    +

    + Sets b to the result + of (cb^cb2)%a. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types. The default version + of this function is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_powm(b, + cb, + a, + cb2) +

    +
    +

    + void +

    +
    +

    + Sets b to the result + of (cb^a)%cb2. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types. The default version + of this function is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_powm(b, + cb, + a, + a) +

    +
    +

    + void +

    +
    +

    + Sets b to the result + of (cb^a)%a. The type of a + shall be listed in one of the type lists B::signed_types, + B::unsigned_types. The default version + of this function is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + Sign manipulation: +

    +
       
    +

    + eval_abs(b, + cb) +

    +
    +

    + void +

    +
    +

    + Set b to the absolute + value of cb. The + default version of this functions assigns cb + to b, and then + calls b.negate() + if eval_get_sign(cb) < + 0. +

    +
    +

    +   +

    +
    +

    + eval_fabs(b, + cb) +

    +
    +

    + void +

    +
    +

    + Set b to the absolute + value of cb. The + default version of this functions assigns cb + to b, and then + calls b.negate() + if eval_get_sign(cb) < + 0. +

    +
    +

    +   +

    +
    +

    + Floating point functions: +

    +
       
    +

    + eval_fpclassify(cb) +

    +
    +

    + int +

    +
    +

    + Returns one of the same values returned by std::fpclassify. + Only required when B + is an floating-point type. The default version of this function + will only test for zero cb. +

    +
    +

    +   +

    +
    +

    + eval_trunc(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::trunc + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_round(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::round + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_exp(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_log(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::log + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_log10(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::log10 + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_sin(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::sin + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_cos(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::cos + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_tan(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::exp + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_asin(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::asin + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_acos(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::acos + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_atan(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::atan + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_sinh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::sinh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_cosh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::cosh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_tanh(b, + cb) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::tanh + on argument cb + and stores the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_fmod(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::fmod + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_pow(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::pow + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +   +

    +
    +

    + eval_atan2(b, + cb, + cb2) +

    +
    +

    + void +

    +
    +

    + Performs the equivalent operation to std::atan + on arguments cb + and cb2, and store + the result in b. + Only required when B + is an floating-point type. The default version of this function + is synthesised from other operations above. +

    +
    +

    +  


    - The tables above place no throws requirements on any - of the operations. It is up to each type modelling this concept to decide + When the tables above place no throws requirements on + an operation, then it is up to each type modelling this concept to decide when or whether throwing an exception is desirable. However, thrown exceptions should always either be the type, or inherit from the type std::runtime_error. For example, a floating point type might choose to throw std::overflow_error diff --git a/doc/html/index.html b/doc/html/index.html index ba6104dd..bb9676a2 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -118,7 +118,7 @@ - +

    Last revised: August 08, 2012 at 18:23:03 GMT

    Last revised: August 09, 2012 at 17:32:59 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index ca42b29c..c05e6e9a 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -47,7 +47,6 @@ '''] - [section:intro Introduction] The Multiprecision Library provides ['User-defined] integer, rational and floating-point C++ types which @@ -138,6 +137,12 @@ However, there are still many simple expressions such as: Which don't noticably benefit from move support. Therefore, optimal performance comes from having both move-support, and expression templates enabled. +Note that while "moved-from" objects are left in a sane state, they have an unspecified value, and the only permitted +operations on them are destruction or the assignment of a new value. Any other operation should be considered +a programming error and many backends will trigger an assertion if any other operation is attempted. This behavior +allows for optimal performance on move-construction (i.e. no allocation required, we just take ownership of the existing +object's internal state), while maintaining usability in the standard library containers. + [h4 Expression Templates] TODO: compare to rvalue refs. @@ -1730,13 +1735,17 @@ More information on this type can be found in the [link boost_multiprecision.tut [section:backendconc Backend Requirements] The requirements on the `Backend` template argument to `number` are split up into -compulsory requirements, and optional requirements that are either to improve performance -or provide optional features. +sections: compulsary and optional. -TODO: Add optional construction support, add throws specification, clarify what compulsory means. +Compulsary requirements have no default implementation in the library, therefore if the feature +they implement is to be supported at all, then they must be implemented by the backend. + +Optional requirements have default implementations that are called if the backend doesn't provide +it's own. Typically the backend will implement these to improve performance. In the following tables, type B is the `Backend` template arument to `number`, `b` and `b2` are -a variables of type B, `cb` and `cb2` are constant variables of type B, `a` is a variable of Arithmetic type, +a variables of type B, `cb`, `cb2` and `cb3` are constant variables of type `const B`, +`rb` is a variable of type `B&&`, `a` and `a2` are variables of Arithmetic type, `s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, `pa` is a variable of type pointer-to-arithmetic-type, `exp` is a variable of type `B::exp_type`, `pexp` is a variable of type `B::exp_type*`, `i` is a variable of type `int`, `pi` pointer to a variable of type `int`, @@ -1744,157 +1753,325 @@ B2 is another type that meets these requirements, b2 is a variable of type B2. [table Compulsory Requirements on the Backend type. -[[Expression][Return Type][Comments]] +[[Expression][Return Type][Comments][Throws]] [[`B::signed_types`][`mpl::list`][A list of signed integral types that can be assigned to type B. The types shall be - listed in order of size, smallest first, and shall terminate in the type that is `std::intmax_t`.]] + listed in order of size, smallest first, and shall terminate in the type that is `std::intmax_t`.][[space]]] [[`B::unsigned_types`][`mpl::list`][A list of unsigned integral types that can be assigned to type B. The types shall be - listed in order of size, smallest first, and shall terminate in the type that is `std::uintmax_t`.]] + listed in order of size, smallest first, and shall terminate in the type that is `std::uintmax_t`.][[space]]] [[`B::float_types`][`mpl::list`][A list of floating-point types that can be assigned to type B.The types shall be - listed in order of size, smallest first, and shall terminate in type `long double`.]] -[[`B::exponent_type`][A signed integral type.][The type of the exponent of type B.]] -[[`B()`][ ][Default constructor.]] -[[`B(cb)`][ ][Copy Constructor.]] -[[`b = b`][`B&`][Assignment operator.]] + listed in order of size, smallest first, and shall terminate in type `long double`.][[space]]] +[[`B::exponent_type`][A signed integral type.][The type of the exponent of type B. This type is required only for floating point types.][[space]]] +[[`B()`][ ][Default constructor.][[space]]] +[[`B(cb)`][ ][Copy Constructor.][[space]]] +[[`b = b`][`B&`][Assignment operator.][[space]]] [[`b = a`][`B&`][Assignment from an Arithmetic type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`b = s`][`B&`][Assignment from a string.]] -[[`b.swap(b)`][`void`][Swaps the contents of its arguments.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.][[space]]] +[[`b = s`][`B&`][Assignment from a string.][Throws a `std::runtime_error` if the string could not be interpretted as a valid number.]] +[[`b.swap(b)`][`void`][Swaps the contents of its arguments.][`noexcept`]] [[`cb.str(ui, bb)`][`std::string`][Returns the string representation of `b` with `ui` digits and in scientific format if `bb` is `true`. - If `ui` is zero, then returns as many digits as are required to reconstruct the original value.]] -[[`b.negate()`][`void`][Negates `b`.]] + If `ui` is zero, then returns as many digits as are required to reconstruct the original value.][[space]]] +[[`b.negate()`][`void`][Negates `b`.][[space]]] [[`cb.compare(cb2)`][`int`][Compares `cb` and `cb2`, returns a value less than zero if `cb < cb2`, a value greater than zero if `cb > cb2` and zero - if `cb == cb2`.]] + if `cb == cb2`.][`noexcept`]] [[`cb.compare(a)`][`int`][Compares `cb` and `a`, returns a value less than zero if `cb < a`, a value greater than zero if `cb > a` and zero if `cb == a`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_add(b, cb)`][`void`][Adds `cb` to `b`.]] -[[`eval_subtract(b, cb)`][`void`][Subtracts `cb` from `b`.]] -[[`eval_multiply(b, cb)`][`void`][Multiplies `b` by `cb`.]] -[[`eval_divide(b, cb)`][`void`][Divides `b` by `cb`.]] -[[`eval_modulus(b, cb)`][`void`][Computes `b %= cb`, only required when `B` is an integer type.]] -[[`eval_bitwise_and(b, cb)`][`void`][Computes `b &= cb`, only required when `B` is an integer type.]] -[[`eval_bitwise_or(b, cb)`][`void`][Computes `b |= cb`, only required when `B` is an integer type.]] -[[`eval_bitwise_xor(b, cb)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type.]] -[[`eval_complement(b, cb)`][`void`][Computes the ones-complement of `cb` and stores the result in `b`, only required when `B` is an integer type.]] -[[`eval_left_shift(b, ui)`][`void`][Computes `b <<= ui`, only required when `B` is an integer type.]] -[[`eval_right_shift(b, ui)`][`void`][Computes `b >>= ui`, only required when `B` is an integer type.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`.][[space]]] +[[`eval_add(b, cb)`][`void`][Adds `cb` to `b`.][[space]]] +[[`eval_subtract(b, cb)`][`void`][Subtracts `cb` from `b`.][[space]]] +[[`eval_multiply(b, cb)`][`void`][Multiplies `b` by `cb`.][[space]]] +[[`eval_divide(b, cb)`][`void`][Divides `b` by `cb`.] + [`std::overflow_error` if cb has the value zero, and `std::numeric_limits >::has_infinity == false`]] +[[`eval_modulus(b, cb)`][`void`][Computes `b %= cb`, only required when `B` is an integer type.] + [`std::overflow_error` if cb has the value zero.]] +[[`eval_bitwise_and(b, cb)`][`void`][Computes `b &= cb`, only required when `B` is an integer type.][[space]]] +[[`eval_bitwise_or(b, cb)`][`void`][Computes `b |= cb`, only required when `B` is an integer type.][[space]]] +[[`eval_bitwise_xor(b, cb)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type.][[space]]] +[[`eval_complement(b, cb)`][`void`][Computes the ones-complement of `cb` and stores the result in `b`, only required when `B` is an integer type.][[space]]] +[[`eval_left_shift(b, ui)`][`void`][Computes `b <<= ui`, only required when `B` is an integer type.][[space]]] +[[`eval_right_shift(b, ui)`][`void`][Computes `b >>= ui`, only required when `B` is an integer type.][[space]]] [[`eval_convert_to(pa, cb)`][`void`][Converts `cb` to the type of `*pa` and store the result in `*pa`. Type `B` shall support conversion to at least types `std::intmax_t`, `std::uintmax_t` and `long long`. Conversion to other arithmetic types can then be synthesised using other operations. - Conversions to other types are entirely optional.]] -[[`eval_frexp(b, cb, pexp)`][`void`][Stores values in `b` and `*pexp` such that the value of `cb` is b * 2[super *pexp], only required when `B` is a floating-point type.]] -[[`eval_ldexp(b, cb, exp)`][`void`][Stores a value in `b` that is cb * 2[super exp], only required when `B` is a floating-point type.]] -[[`eval_frexp(b, cb, pi)`][`void`][Stores values in `b` and `*pi` such that the value of `cb` is b * 2[super *pi], only required when `B` is a floating-point type.]] -[[`eval_ldexp(b, cb, i)`][`void`][Stores a value in `b` that is cb * 2[super i], only required when `B` is a floating-point type.]] -[[`eval_floor(b, cb)`][`void`][Stores the floor of `cb` in `b`, only required when `B` is a floating-point type.]] -[[`eval_ceil(b, cb)`][`void`][Stores the ceiling of `cb` in `b`, only required when `B` is a floating-point type.]] -[[`eval_sqrt(b, cb)`][`void`][Stores the square root of `cb` in `b`, only required when `B` is a floating-point type.]] + Conversions to other types are entirely optional.][[space]]] +[[`eval_frexp(b, cb, pexp)`][`void`][Stores values in `b` and `*pexp` such that the value of `cb` is b * 2[super *pexp], only required when `B` is a floating-point type.][[space]]] +[[`eval_ldexp(b, cb, exp)`][`void`][Stores a value in `b` that is cb * 2[super exp], only required when `B` is a floating-point type.][[space]]] +[[`eval_frexp(b, cb, pi)`][`void`][Stores values in `b` and `*pi` such that the value of `cb` is b * 2[super *pi], only required when `B` is a floating-point type.] + [`std::runtime_error` if the exponent of cb is too large to be stored in an `int`.]] +[[`eval_ldexp(b, cb, i)`][`void`][Stores a value in `b` that is cb * 2[super i], only required when `B` is a floating-point type.][[space]]] +[[`eval_floor(b, cb)`][`void`][Stores the floor of `cb` in `b`, only required when `B` is a floating-point type.][[space]]] +[[`eval_ceil(b, cb)`][`void`][Stores the ceiling of `cb` in `b`, only required when `B` is a floating-point type.][[space]]] +[[`eval_sqrt(b, cb)`][`void`][Stores the square root of `cb` in `b`, only required when `B` is a floating-point type.][[space]]] [[`boost::multiprecision::number_category::type`][`mpl::int_`][`N` is one of the values `number_kind_integer`, `number_kind_floating_point`, `number_kind_rational` or `number_kind_fixed_point`. - Defaults to `number_kind_floating_point`.]] + Defaults to `number_kind_floating_point`.][[space]]] ] [table Optional Requirements on the Backend Type -[[Expression][Returns][Comments]] -[[`B(b2)`][`B`][Copy constructor from a different back-end type.]] -[[`b = b2`][`b&`][Assignment operator from a different back-end type.]] +[[Expression][Returns][Comments][Throws]] + +[[['Construct and assign:]]] +[[`B(rb)`][`B`][Move constructor. Afterwards variable `rb` shall be in sane state, albeit with unspecified value. + Only destruction and assignment to the moved-from variable `rb` need be supported after the operation.][`noexcept`]] +[[`b = rb`][`B&`][Move-assign. Afterwards variable `rb` shall be in sane state, albeit with unspecified value. + Only destruction and assignment to the moved-from variable `rb` need be supported after the operation.][`noexcept`]] +[[`B(a)`][`B`][Direct construction from an arithmetic type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, this operation is simulated using default-construction followed by assignment.][[space]]] +[[`B(b2)`][`B`][Copy constructor from a different back-end type. When not provided, a generic interconversion routine is used.][[space]]] +[[`b = b2`][`b&`][Assignment operator from a different back-end type. When not provided, a generic interconversion routine is used.][[space]]] [[`assign_components(b, a, a)`][`void`][Assigns to `b` the two components in the following arguments. - Only applies to rational and complex number types.]] + Only applies to rational and complex number types. + When not provided, arithmetic operations are used to synthesise the result from the two values.][[space]]] [[`assign_components(b, b2, b2)`][`void`][Assigns to `b` the two components in the following arguments. - Only applies to rational and complex number types.]] + Only applies to rational and complex number types. + When not provided, arithmetic operations are used to synthesise the result from the two values.][[space]]] + +[[['Comparisons:]]] +[[`eval_eq(cb, cb2)`][`bool`][Returns `true` if `cb` and `cb2` are equal in value. + When not provided, the default implementation returns `cb.compare(cb2) == 0`.][`noexcept`]] +[[`eval_eq(cb, a)`][`bool`][Returns `true` if `cb` and `a` are equal in value. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, return the equivalent of `eval_eq(cb, B(a))`.][[space]]] +[[`eval_eq(a, cb)`][`bool`][Returns `true` if `cb` and `a` are equal in value. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version returns `eval_eq(cb, a)`.][[space]]] +[[`eval_lt(cb, cb2)`][`bool`][Returns `true` if `cb` is less than `cb2` in value. + When not provided, the default implementation returns `cb.compare(cb2) < 0`.][`noexcept`]] +[[`eval_lt(cb, a)`][`bool`][Returns `true` if `cb` is less than `a` in value. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default implementation returns `eval_lt(cb, B(a))`.][[space]]] +[[`eval_lt(a, cb)`][`bool`][Returns `true` if `a` is less than `cb` in value. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default implementation returns `eval_gt(cb, a)`.][[space]]] +[[`eval_gt(cb, cb2)`][`bool`][Returns `true` if `cb` is greater than `cb2` in value. + When not provided, the default implementation returns `cb.compare(cb2) > 0`.][`noexcept`]] +[[`eval_gt(cb, a)`][`bool`][Returns `true` if `cb` is greater than `a` in value. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default implementation returns `eval_gt(cb, B(a))`.][[space]]] +[[`eval_gt(a, cb)`][`bool`][Returns `true` if `a` is greater than `cb` in value. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default implementation returns `eval_lt(cb, a)`.][[space]]] +[[`eval_is_zero(cb)`][`bool`][Returns `true` if `cb` is zero, otherwise `false`. The default version of this function + returns `cb.compare(ui_type(0)) == 0`, where `ui_type` is `ui_type` is + `typename mpl::front::type`.][[space]]] +[[`eval_get_sign(cb)`][`int`][Returns a value < zero if `cb` is negative, a value > zero if `cb` is positive, and zero if `cb` is zero. + The default version of this function + returns `cb.compare(ui_type(0))`, where `ui_type` is `ui_type` is + `typename mpl::front::type`.][[space]]] + +[[['Basic arithmetic:]]] [[`eval_add(b, a)`][`void`][Adds `a` to `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_subtract(b, a)`][`void`][Subtracts `a` from `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_multiply(b, a)`][`void`][Multiplies `b` by `a`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_divide(b, a)`][`void`][Divides `b` by `a`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_modulus(b, a)`][`void`][Computes `b %= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_bitwise_and(b, a)`][`void`][Computes `b &= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_bitwise_or(b, a)`][`void`][Computes `b |= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_bitwise_xor(b, a)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_add(b, cb, cb2)`][`void`][Add `cb` to `cb2` and stores the result in `b`.]] -[[`eval_subtract(b, cb, cb2)`][`void`][Subtracts `cb2` from `cb` and stores the result in `b`.]] -[[`eval_multiply(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and stores the result in `b`.]] -[[`eval_divide(b, cb, cb2)`][`void`][Divides `cb` by `cb2` and stores the result in `b`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_add(b, B(a))`][[space]]] +[[`eval_add(b, cb, cb2)`][`void`][Add `cb` to `cb2` and stores the result in `b`. + When not provided, does the equivalent of `b = cb; eval_add(b, cb2)`.][[space]]] [[`eval_add(b, cb, a)`][`void`][Add `cb` to `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_subtract(b, cb, a)`][`void`][Subtracts `a` from `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_multiply(b, cb, a)`][`void`][Multiplies `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_divide(b, cb, a)`][`void`][Divides `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_modulus(b, cb, cb2)`][`void`][Computes `cb % cb2` and stores the result in `b`, only required when `B` is an integer type.]] -[[`eval_bitwise_and(b, cb, cb2)`][`void`][Computes `cb & cb2` and stores the result in `b`, only required when `B` is an integer type.]] -[[`eval_bitwise_or(b, cb, cb2)`][`void`][Computes `cb | cb2` and stores the result in `b`, only required when `B` is an integer type.]] -[[`eval_bitwise_xor(b, cb, cb2)`][`void`][Computes `cb ^ cb2` and stores the result in `b`, only required when `B` is an integer type.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_add(b, cb, B(a))`.][[space]]] [[`eval_add(b, a, cb)`][`void`][Add `a` to `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_add(b, cb, a)`.][[space]]] +[[`eval_subtract(b, a)`][`void`][Subtracts `a` from `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_subtract(b, B(a))`][[space]]] +[[`eval_subtract(b, cb, cb2)`][`void`][Subtracts `cb2` from `cb` and stores the result in `b`. + When not provided, does the equivalent of `b = cb; eval_subtract(b, cb2)`.][[space]]] +[[`eval_subtract(b, cb, a)`][`void`][Subtracts `a` from `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_subtract(b, cb, B(a))`.][[space]]] [[`eval_subtract(b, a, cb)`][`void`][Subtracts `cb` from `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_subtract(b, cb, a); b.negate();`.][[space]]] +[[`eval_multiply(b, a)`][`void`][Multiplies `b` by `a`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_multiply(b, B(a))`][[space]]] +[[`eval_multiply(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and stores the result in `b`. + When not provided, does the equivalent of `b = cb; eval_multiply(b, cb2)`.][[space]]] +[[`eval_multiply(b, cb, a)`][`void`][Multiplies `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_multiply(b, cb, B(a))`.][[space]]] [[`eval_multiply(b, a, cb)`][`void`][Multiplies `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_multiply(b, cb, a)`.][[space]]] +[[`eval_divide(b, a)`][`void`][Divides `b` by `a`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_divide(b, B(a))`] + [`std::overflow_error` if `a` has the value zero, and `std::numeric_limits >::has_infinity == false`]] +[[`eval_divide(b, cb, cb2)`][`void`][Divides `cb` by `cb2` and stores the result in `b`. + When not provided, does the equivalent of `b = cb; eval_divide(b, cb2)`.] + [`std::overflow_error` if `cb2` has the value zero, and `std::numeric_limits >::has_infinity == false`]] +[[`eval_divide(b, cb, a)`][`void`][Divides `cb` by `a` and stores the result in `b`. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_divide(b, cb, B(a))`.] + [`std::overflow_error` if `a` has the value zero, and `std::numeric_limits >::has_infinity == false`]] [[`eval_divide(b, a, cb)`][`void`][Divides `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_divide(b, B(a), cb)`.] + [`std::overflow_error` if cb has the value zero, and `std::numeric_limits >::has_infinity == false`]] +[[`eval_increment(b)`][void][Increments the value of `b` by one. + When not provided, does the equivalent of `eval_add(b, static_cast(1u))`. + Where `ui_type` is `typename mpl::front::type`.][[space]]] +[[`eval_decrement(b)`][void][Decrements the value of `b` by one. + When not provided, does the equivalent of `eval_subtract(b, static_cast(1u))`. + Where `ui_type` is `typename mpl::front::type`.][[space]]] + +[[['Integer specific operations:]]] +[[`eval_modulus(b, a)`][`void`][Computes `b %= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_modulus(b, B(a))`] + [`std::overflow_error` if `a` has the value zero.]] +[[`eval_modulus(b, cb, cb2)`][`void`][Computes `cb % cb2` and stores the result in `b`, only required when `B` is an integer type. + When not provided, does the equivalent of `b = cb; eval_modulus(b, cb2)`.] + [`std::overflow_error` if `a` has the value zero.]] [[`eval_modulus(b, cb, a)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_bitwise_and(b, cb, a)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_bitwise_or(b, cb, a)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_bitwise_xor(b, cb, a)`][`void`][Computes `cb ^ a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_modulus(b, cb, B(a))`.] + [`std::overflow_error` if `a` has the value zero.]] [[`eval_modulus(b, a, cb)`][`void`][Computes `cb % a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_modulus(b, B(a), cb)`.] + [`std::overflow_error` if `a` has the value zero.]] +[[`eval_bitwise_and(b, a)`][`void`][Computes `b &= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_bitwise_and(b, B(a))`][[space]]] +[[`eval_bitwise_and(b, cb, cb2)`][`void`][Computes `cb & cb2` and stores the result in `b`, only required when `B` is an integer type. + When not provided, does the equivalent of `b = cb; eval_bitwise_and(b, cb2)`.][[space]]] +[[`eval_bitwise_and(b, cb, a)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_bitwise_and(b, cb, B(a))`.][[space]]] [[`eval_bitwise_and(b, a, cb)`][`void`][Computes `cb & a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_bitwise_and(b, cb, a)`.][[space]]] +[[`eval_bitwise_or(b, a)`][`void`][Computes `b |= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_bitwise_or(b, B(a))`][[space]]] +[[`eval_bitwise_or(b, cb, cb2)`][`void`][Computes `cb | cb2` and stores the result in `b`, only required when `B` is an integer type. + When not provided, does the equivalent of `b = cb; eval_bitwise_or(b, cb2)`.][[space]]] +[[`eval_bitwise_or(b, cb, a)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_bitwise_or(b, cb, B(a))`.][[space]]] [[`eval_bitwise_or(b, a, cb)`][`void`][Computes `cb | a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_bitwise_or(b, cb, a)`.][[space]]] +[[`eval_bitwise_xor(b, a)`][`void`][Computes `b ^= cb`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, the default version calls `eval_bitwise_xor(b, B(a))`][[space]]] +[[`eval_bitwise_xor(b, cb, cb2)`][`void`][Computes `cb ^ cb2` and stores the result in `b`, only required when `B` is an integer type. + When not provided, does the equivalent of `b = cb; eval_bitwise_xor(b, cb2)`.][[space]]] +[[`eval_bitwise_xor(b, cb, a)`][`void`][Computes `cb ^ a` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_bitwise_xor(b, cb, B(a))`.][[space]]] [[`eval_bitwise_xor(b, a, cb)`][`void`][Computes `a ^ cb` and stores the result in `b`, only required when `B` is an integer type. The type of `a` shall be listed in one of the type lists - `B::signed_types`, `B::unsigned_types` or `B::float_types`.]] -[[`eval_left_shift(b, cb, ui)`][`void`][Computes `cb << ui` and stores the result in `b`, only required when `B` is an integer type.]] -[[`eval_right_shift(b, cb, ui)`][`void`][Computes `cb >> ui` and stores the result in `b`, only required when `B` is an integer type.]] -[[`eval_increment(b)`][void][Increments the value of `b` by one.]] -[[`eval_decrement(b)`][void][Decrements the value of `b` by one.]] -[[`eval_is_zero(cb)`][`bool`][Returns `true` if `cb` is zero, otherwise `false`]] -[[`eval_get_sign(cb)`][`int`][Returns a value < zero if `cb` is negative, a value > zero if `cb` is positive, and zero if `cb` is zero.]] -[[`eval_abs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] -[[`eval_fabs(b, cb)`][`void`][Set `b` to the absolute value of `cb`.]] -[[`eval_fpclassify(cb)`][`int`][Returns one of the same values returned by `std::fpclassify`. Only required when `B` is an floating-point type.]] -[[`eval_trunc(b, cb)`][`void`][Performs the equivalent operation to `std::trunc` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_round(b, cb)`][`void`][Performs the equivalent operation to `std::round` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_exp(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_log(b, cb)`][`void`][Performs the equivalent operation to `std::log` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_log10(b, cb)`][`void`][Performs the equivalent operation to `std::log10` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_sin(b, cb)`][`void`][Performs the equivalent operation to `std::sin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_cos(b, cb)`][`void`][Performs the equivalent operation to `std::cos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_tan(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_asin(b, cb)`][`void`][Performs the equivalent operation to `std::asin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_acos(b, cb)`][`void`][Performs the equivalent operation to `std::acos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_atan(b, cb)`][`void`][Performs the equivalent operation to `std::atan` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_sinh(b, cb)`][`void`][Performs the equivalent operation to `std::sinh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_cosh(b, cb)`][`void`][Performs the equivalent operation to `std::cosh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_tanh(b, cb)`][`void`][Performs the equivalent operation to `std::tanh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_fmod(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::fmod` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_pow(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::pow` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_atan2(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::atan` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type.]] -[[`eval_qr(cb, cb2, b, b2)`][`void`][Sets `b` to the result of `cb / cb2` and `b2` to the result of `cb % cb2`. Only required when `B` is an integer type.]] -[[`eval_integer_modulus(cb, ui)`][`unsigned`][Returns the result of `cb % ui`. Only required when `B` is an integer type.]] -[[`eval_lsb(cb)`][`unsigned`][Returns the index of the least significant bit that is set. Only required when `B` is an integer type.]] -[[`eval_bit_test(cb, ui)`][`bool`][Returns true if `cb` has bit `ui` set. Only required when `B` is an integer type.]] -[[`eval_bit_set(b, ui)`][`void`][Sets the bit at index `ui` in `b`. Only required when `B` is an integer type.]] -[[`eval_bit_unset(b, ui)`][`void`][Unsets the bit at index `ui` in `b`. Only required when `B` is an integer type.]] -[[`eval_bit_flip(b, ui)`][`void`][Flips the bit at index `ui` in `b`. Only required when `B` is an integer type.]] -[[`eval_gcd(b, cb, cb2)`][`void`][Sets `b` to the greatest common divisor of `cb` and `cb2`. Only required when `B` is an integer type.]] -[[`eval_lcm(b, cb, cb2)`][`void`][Sets `b` to the least common multiple of `cb` and `cb2`. Only required when `B` is an integer type.]] + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided, does the equivalent of `eval_bitwise_xor(b, cb, a)`.][[space]]] +[[`eval_left_shift(b, cb, ui)`][`void`][Computes `cb << ui` and stores the result in `b`, only required when `B` is an integer type. + When not provided, does the equivalent of `b = cb; eval_left_shift(b, a);`.][[space]]] +[[`eval_right_shift(b, cb, ui)`][`void`][Computes `cb >> ui` and stores the result in `b`, only required when `B` is an integer type. + When not provided, does the equivalent of `b = cb; eval_right_shift(b, a);`.][[space]]] +[[`eval_qr(cb, cb2, b, b2)`][`void`][Sets `b` to the result of `cb / cb2` and `b2` to the result of `cb % cb2`. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.] + [`std::overflow_error` if `a` has the value zero.]] +[[`eval_integer_modulus(cb, ui)`][`unsigned`][Returns the result of `cb % ui`. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.] + [`std::overflow_error` if `a` has the value zero.]] +[[`eval_lsb(cb)`][`unsigned`][Returns the index of the least significant bit that is set. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_bit_test(cb, ui)`][`bool`][Returns true if `cb` has bit `ui` set. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_bit_set(b, ui)`][`void`][Sets the bit at index `ui` in `b`. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_bit_unset(b, ui)`][`void`][Unsets the bit at index `ui` in `b`. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_bit_flip(b, ui)`][`void`][Flips the bit at index `ui` in `b`. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_gcd(b, cb, cb2)`][`void`][Sets `b` to the greatest common divisor of `cb` and `cb2`. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_lcm(b, cb, cb2)`][`void`][Sets `b` to the least common multiple of `cb` and `cb2`. Only required when `B` is an integer type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_gcd(b, cb, a)`][`void`][Sets `b` to the greatest common divisor of `cb` and `cb2`. Only required when `B` is an integer type. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + The default version of this function calls `eval_gcd(b, cb, B(a))`.][[space]]] +[[`eval_lcm(b, cb, a)`][`void`][Sets `b` to the least common multiple of `cb` and `cb2`. Only required when `B` is an integer type. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + The default version of this function calls `eval_lcm(b, cb, B(a))`.][[space]]] +[[`eval_gcd(b, a, cb)`][`void`][Sets `b` to the greatest common divisor of `cb` and `a`. Only required when `B` is an integer type. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + The default version of this function calls `eval_gcd(b, cb, a)`.][[space]]] +[[`eval_lcm(b, a, cb)`][`void`][Sets `b` to the least common multiple of `cb` and `a`. Only required when `B` is an integer type. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + The default version of this function calls `eval_lcm(b, cb, a)`.][[space]]] +[[`eval_powm(b, cb, cb2, cb3)`][`void`][Sets `b` to the result of ['(cb^cb2)%cb3]. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_powm(b, cb, cb2, a)`][`void`][Sets `b` to the result of ['(cb^cb2)%a]. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types`. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_powm(b, cb, a, cb2)`][`void`][Sets `b` to the result of ['(cb^a)%cb2]. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types`. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_powm(b, cb, a, a2)`][`void`][Sets `b` to the result of ['(cb^a)%a2]. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types`. + The default version of this function is synthesised from other operations above.][[space]]] + +[[['Sign manipulation:]]] +[[`eval_abs(b, cb)`][`void`][Set `b` to the absolute value of `cb`. + The default version of this functions assigns `cb` to `b`, and then calls `b.negate()` if + `eval_get_sign(cb) < 0`.][[space]]] +[[`eval_fabs(b, cb)`][`void`][Set `b` to the absolute value of `cb`. + The default version of this functions assigns `cb` to `b`, and then calls `b.negate()` if + `eval_get_sign(cb) < 0`.][[space]]] + +[[['Floating point functions:]]] +[[`eval_fpclassify(cb)`][`int`][Returns one of the same values returned by `std::fpclassify`. Only required when `B` is an floating-point type. + The default version of this function will only test for zero `cb`.][[space]]] +[[`eval_trunc(b, cb)`][`void`][Performs the equivalent operation to `std::trunc` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_round(b, cb)`][`void`][Performs the equivalent operation to `std::round` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_exp(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_log(b, cb)`][`void`][Performs the equivalent operation to `std::log` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_log10(b, cb)`][`void`][Performs the equivalent operation to `std::log10` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_sin(b, cb)`][`void`][Performs the equivalent operation to `std::sin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_cos(b, cb)`][`void`][Performs the equivalent operation to `std::cos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_tan(b, cb)`][`void`][Performs the equivalent operation to `std::exp` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_asin(b, cb)`][`void`][Performs the equivalent operation to `std::asin` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_acos(b, cb)`][`void`][Performs the equivalent operation to `std::acos` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_atan(b, cb)`][`void`][Performs the equivalent operation to `std::atan` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_sinh(b, cb)`][`void`][Performs the equivalent operation to `std::sinh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_cosh(b, cb)`][`void`][Performs the equivalent operation to `std::cosh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_tanh(b, cb)`][`void`][Performs the equivalent operation to `std::tanh` on argument `cb` and stores the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_fmod(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::fmod` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_pow(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::pow` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] +[[`eval_atan2(b, cb, cb2)`][`void`][Performs the equivalent operation to `std::atan` on arguments `cb` and `cb2`, and store the result in `b`. Only required when `B` is an floating-point type. + The default version of this function is synthesised from other operations above.][[space]]] ] -The tables above place no ['throws] requirements on any of the operations. It is up to each type modelling this concept to +When the tables above place no ['throws] requirements on an operation, then it is up to each type modelling this concept to decide when or whether throwing an exception is desirable. However, thrown exceptions should always either be the type, or inherit from the type `std::runtime_error`. For example, a floating point type might choose to throw `std::overflow_error` whenever the result of an operation would be infinite, and `std::underflow_error` whenever it would round to zero. diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 9a4e771b..dd745e04 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2149,7 +2149,7 @@ void divide_unsigned_helper(cpp_int_backend* if(y == 0) { - BOOST_THROW_EXCEPTION(std::runtime_error("Integer Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Integer Division by zero.")); } // // Find the most significant word of numerator. @@ -2764,66 +2764,6 @@ inline unsigned eval_lsb(const cpp_int_backend::limb_bits; } -template -inline void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - int shift; - - cpp_int_backend u(a), v(b); - - int s = eval_get_sign(u); - - /* GCD(0,x) := x */ - if(s < 0) - { - u.negate(); - } - else if(s == 0) - { - result = v; - return; - } - s = eval_get_sign(v); - if(s < 0) - { - v.negate(); - } - else if(s == 0) - { - result = u; - return; - } - - /* Let shift := lg K, where K is the greatest power of 2 - dividing both u and v. */ - - unsigned us = eval_lsb(u); - unsigned vs = eval_lsb(v); - shift = (std::min)(us, vs); - eval_right_shift(u, us); - eval_right_shift(v, vs); - - do - { - /* Now u and v are both odd, so diff(u, v) is even. - Let u = min(u, v), v = diff(u, v)/2. */ - if(u.compare(v) > 0) - u.swap(v); - eval_subtract(v, u); - // Termination condition tries not to do a full compare if possible: - if(!v.limbs()[0] && eval_is_zero(v)) - break; - vs = eval_lsb(v); - eval_right_shift(v, vs); - BOOST_ASSERT((v.limbs()[0] & 1)); - BOOST_ASSERT((u.limbs()[0] & 1)); - } - while(true); - - result = u; - eval_left_shift(result, shift); -} - template inline bool eval_bit_test(const cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT { @@ -2884,25 +2824,6 @@ inline void eval_bit_flip(cpp_int_backend& va val.normalize(); } -template -inline void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - cpp_int_backend t; - eval_gcd(t, a, b); - - if(eval_is_zero(t)) - { - result = static_cast(0); - } - else - { - eval_divide(result, a, t); - eval_multiply(result, b); - } - if(eval_get_sign(result) < 0) - result.negate(); -} - template inline void eval_qr(const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& q, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) diff --git a/include/boost/multiprecision/depricated/fixed_int.hpp b/include/boost/multiprecision/depricated/fixed_int.hpp index c12fa3a8..3595f27b 100644 --- a/include/boost/multiprecision/depricated/fixed_int.hpp +++ b/include/boost/multiprecision/depricated/fixed_int.hpp @@ -889,7 +889,7 @@ void divide_unsigned_helper(fixed_int& result, const fixed_int BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) { if(!*o.limbs()) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); *result.limbs() /= *o.limbs(); result.sign(result.sign() != o.sign()); } @@ -194,7 +194,7 @@ template BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) { if(!*o.limbs()) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); *result.limbs() /= *o.limbs(); } @@ -202,7 +202,7 @@ template BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& o) { if(!*o.limbs()) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); *result.limbs() %= *o.limbs(); result.sign(result.sign()); } diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index 4103d81b..ad041533 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -38,6 +38,88 @@ inline Integer eval_integer_modulus(const Backend& x, Integer val) return maybe_abs(result); } +template +inline void eval_gcd(B& result, const B& a, const B& b) +{ + using default_ops::eval_lsb; + using default_ops::eval_is_zero; + using default_ops::eval_get_sign; + + int shift; + + B u(a), v(b); + + int s = eval_get_sign(u); + + /* GCD(0,x) := x */ + if(s < 0) + { + u.negate(); + } + else if(s == 0) + { + result = v; + return; + } + s = eval_get_sign(v); + if(s < 0) + { + v.negate(); + } + else if(s == 0) + { + result = u; + return; + } + + /* Let shift := lg K, where K is the greatest power of 2 + dividing both u and v. */ + + unsigned us = eval_lsb(u); + unsigned vs = eval_lsb(v); + shift = (std::min)(us, vs); + eval_right_shift(u, us); + eval_right_shift(v, vs); + + do + { + /* Now u and v are both odd, so diff(u, v) is even. + Let u = min(u, v), v = diff(u, v)/2. */ + if(u.compare(v) > 0) + u.swap(v); + eval_subtract(v, u); + // Termination condition tries not to do a full compare if possible: + if(eval_is_zero(v)) + break; + vs = eval_lsb(v); + eval_right_shift(v, vs); + } + while(true); + + result = u; + eval_left_shift(result, shift); +} + +template +inline void eval_lcm(B& result, const B& a, const B& b) +{ + typedef typename typename mpl::front::type ui_type; + B t; + eval_gcd(t, a, b); + + if(eval_is_zero(t)) + { + result = static_cast(0); + } + else + { + eval_divide(result, a, t); + eval_multiply(result, b); + } + if(eval_get_sign(result) < 0) + result.negate(); +} + } template diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index b8d290f9..6a21bc86 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -570,7 +570,7 @@ template inline void eval_divide(gmp_float& result, const gmp_float& o) { if(eval_is_zero(o)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_div(result.data(), result.data(), o.data()); } template @@ -592,7 +592,7 @@ template inline void eval_divide(gmp_float& result, unsigned long i) { if(i == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_div_ui(result.data(), result.data(), i); } template @@ -622,7 +622,7 @@ template inline void eval_divide(gmp_float& result, long i) { if(i == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_div_ui(result.data(), result.data(), std::abs(i)); if(i < 0) mpf_neg(result.data(), result.data()); @@ -741,21 +741,21 @@ template inline void eval_divide(gmp_float& a, const gmp_float& x, const gmp_float& y) { if(eval_is_zero(y)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_div(a.data(), x.data(), y.data()); } template inline void eval_divide(gmp_float& a, const gmp_float& x, unsigned long y) { if(y == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_div_ui(a.data(), x.data(), y); } template inline void eval_divide(gmp_float& a, const gmp_float& x, long y) { if(y == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); if(y < 0) { mpf_div_ui(a.data(), x.data(), -y); @@ -768,14 +768,14 @@ template inline void eval_divide(gmp_float& a, unsigned long x, const gmp_float& y) { if(eval_is_zero(y)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_ui_div(a.data(), x, y.data()); } template inline void eval_divide(gmp_float& a, long x, const gmp_float& y) { if(eval_is_zero(y)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); if(x < 0) { mpf_ui_div(a.data(), -x, y.data()); @@ -1278,7 +1278,7 @@ inline void eval_multiply(gmp_int& t, const gmp_int& o) inline void eval_divide(gmp_int& t, const gmp_int& o) { if(eval_is_zero(o)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpz_tdiv_q(t.data(), t.data(), o.data()); } inline void eval_modulus(gmp_int& t, const gmp_int& o) @@ -1304,7 +1304,7 @@ inline void eval_modulus(gmp_int& t, unsigned long i) inline void eval_divide(gmp_int& t, unsigned long i) { if(i == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), t.data(), i); } inline void eval_add(gmp_int& t, long i) @@ -1334,7 +1334,7 @@ inline void eval_modulus(gmp_int& t, long i) inline void eval_divide(gmp_int& t, long i) { if(i == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), t.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); @@ -1390,7 +1390,7 @@ inline void eval_multiply(gmp_int& t, const gmp_int& p, const gmp_int& o) inline void eval_divide(gmp_int& t, const gmp_int& p, const gmp_int& o) { if(eval_is_zero(o)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpz_tdiv_q(t.data(), p.data(), o.data()); } inline void eval_modulus(gmp_int& t, const gmp_int& p, const gmp_int& o) @@ -1416,7 +1416,7 @@ inline void eval_modulus(gmp_int& t, const gmp_int& p, unsigned long i) inline void eval_divide(gmp_int& t, const gmp_int& p, unsigned long i) { if(i == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), p.data(), i); } inline void eval_add(gmp_int& t, const gmp_int& p, long i) @@ -1446,7 +1446,7 @@ inline void eval_modulus(gmp_int& t, const gmp_int& p, long i) inline void eval_divide(gmp_int& t, const gmp_int& p, long i) { if(i == 0) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpz_tdiv_q_ui(t.data(), p.data(), std::abs(i)); if(i < 0) mpz_neg(t.data(), t.data()); @@ -1914,7 +1914,7 @@ inline void eval_multiply(gmp_rational& t, const gmp_rational& o) inline void eval_divide(gmp_rational& t, const gmp_rational& o) { if(eval_is_zero(o)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpq_div(t.data(), t.data(), o.data()); } inline void eval_add(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) @@ -1932,7 +1932,7 @@ inline void eval_multiply(gmp_rational& t, const gmp_rational& p, const gmp_rati inline void eval_divide(gmp_rational& t, const gmp_rational& p, const gmp_rational& o) { if(eval_is_zero(o)) - BOOST_THROW_EXCEPTION(std::runtime_error("Division by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpq_div(t.data(), p.data(), o.data()); } diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 06fe7eb1..57c4f6d4 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -154,7 +154,7 @@ inline void eval_divide(rational_adapter& result, const rational_ada using default_ops::eval_is_zero; if(eval_is_zero(o)) { - BOOST_THROW_EXCEPTION(std::runtime_error("Divide by zero.")); + BOOST_THROW_EXCEPTION(std::overflow_error("Divide by zero.")); } result.data() /= o.data(); } diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 0068ffde..6eb8e973 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -378,11 +378,17 @@ inline void eval_multiply(tommath_int& t, const tommath_int& o) } inline void eval_divide(tommath_int& t, const tommath_int& o) { + using default_ops::eval_is_zero; tommath_int temp; + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::overflow_error("Integer division by zero")); detail::check_tommath_result(mp_div(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data(), &temp.data())); } inline void eval_modulus(tommath_int& t, const tommath_int& o) { + using default_ops::eval_is_zero; + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::overflow_error("Integer division by zero")); bool neg = eval_get_sign(t) < 0; bool neg2 = eval_get_sign(o) < 0; detail::check_tommath_result(mp_mod(&t.data(), const_cast< ::mp_int*>(&o.data()), &t.data())); @@ -455,11 +461,17 @@ inline void eval_multiply(tommath_int& t, const tommath_int& p, const tommath_in } inline void eval_divide(tommath_int& t, const tommath_int& p, const tommath_int& o) { + using default_ops::eval_is_zero; tommath_int d; + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::overflow_error("Integer division by zero")); detail::check_tommath_result(mp_div(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data(), &d.data())); } inline void eval_modulus(tommath_int& t, const tommath_int& p, const tommath_int& o) { + using default_ops::eval_is_zero; + if(eval_is_zero(o)) + BOOST_THROW_EXCEPTION(std::overflow_error("Integer division by zero")); bool neg = eval_get_sign(p) < 0; bool neg2 = eval_get_sign(o) < 0; detail::check_tommath_result(mp_mod(const_cast< ::mp_int*>(&p.data()), const_cast< ::mp_int*>(&o.data()), &t.data())); diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 71e49d19..e15efa6a 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -245,7 +245,7 @@ void test_integer_ops(const boost::mpl::int_ @@ -636,7 +636,7 @@ void test_float_ops(const boost::mpl::int_ Date: Thu, 16 Aug 2012 08:13:51 +0000 Subject: [PATCH 218/256] Big breaking change - make lossy construction explicit. [SVN r80058] --- .../concepts/mp_number_archetypes.hpp | 7 +- .../boost/multiprecision/cpp_dec_float.hpp | 10 + include/boost/multiprecision/cpp_int.hpp | 2 +- .../multiprecision/detail/integer_ops.hpp | 9 + .../boost/multiprecision/detail/no_et_ops.hpp | 60 ++-- .../multiprecision/detail/number_base.hpp | 100 +++--- include/boost/multiprecision/gmp.hpp | 39 ++- include/boost/multiprecision/mpfr.hpp | 23 +- include/boost/multiprecision/number.hpp | 166 +++++++--- .../boost/multiprecision/rational_adapter.hpp | 28 +- test/Jamfile.v2 | 12 + test/compile_fail/conv_fail_1.cpp | 17 + test/compile_fail/conv_fail_10.cpp | 14 + test/compile_fail/conv_fail_11.cpp | 14 + test/compile_fail/conv_fail_12.cpp | 14 + test/compile_fail/conv_fail_13.cpp | 14 + test/compile_fail/conv_fail_14.cpp | 14 + test/compile_fail/conv_fail_15.cpp | 14 + test/compile_fail/conv_fail_16.cpp | 14 + test/compile_fail/conv_fail_17.cpp | 15 + test/compile_fail/conv_fail_18.cpp | 16 + test/compile_fail/conv_fail_19.cpp | 15 + test/compile_fail/conv_fail_2.cpp | 14 + test/compile_fail/conv_fail_20.cpp | 16 + test/compile_fail/conv_fail_21.cpp | 16 + test/compile_fail/conv_fail_22.cpp | 16 + test/compile_fail/conv_fail_23.cpp | 16 + test/compile_fail/conv_fail_24.cpp | 16 + test/compile_fail/conv_fail_25.cpp | 16 + test/compile_fail/conv_fail_26.cpp | 16 + test/compile_fail/conv_fail_27.cpp | 16 + test/compile_fail/conv_fail_28.cpp | 16 + test/compile_fail/conv_fail_29.cpp | 14 + test/compile_fail/conv_fail_3.cpp | 14 + test/compile_fail/conv_fail_30.cpp | 14 + test/compile_fail/conv_fail_31.cpp | 14 + test/compile_fail/conv_fail_32.cpp | 14 + test/compile_fail/conv_fail_33.cpp | 14 + test/compile_fail/conv_fail_34.cpp | 14 + test/compile_fail/conv_fail_35.cpp | 14 + test/compile_fail/conv_fail_36.cpp | 14 + test/compile_fail/conv_fail_37.cpp | 14 + test/compile_fail/conv_fail_38.cpp | 14 + test/compile_fail/conv_fail_39.cpp | 14 + test/compile_fail/conv_fail_4.cpp | 14 + test/compile_fail/conv_fail_40.cpp | 14 + test/compile_fail/conv_fail_41.cpp | 14 + test/compile_fail/conv_fail_42.cpp | 14 + test/compile_fail/conv_fail_43.cpp | 14 + test/compile_fail/conv_fail_44.cpp | 14 + test/compile_fail/conv_fail_5.cpp | 14 + test/compile_fail/conv_fail_6.cpp | 14 + test/compile_fail/conv_fail_7.cpp | 14 + test/compile_fail/conv_fail_8.cpp | 14 + test/compile_fail/conv_fail_9.cpp | 14 + test/math/log1p_expm1_test.cpp | 2 +- test/math/powm1_sqrtp1m1_test.cpp | 2 +- test/math/table_type.hpp | 39 +++ test/math/test_bessel_i.cpp | 2 +- test/math/test_bessel_j.cpp | 2 +- test/math/test_bessel_k.cpp | 2 +- test/math/test_bessel_y.cpp | 2 +- test/math/test_beta.cpp | 2 +- test/math/test_binomial_coeff.cpp | 2 +- test/math/test_carlson.cpp | 2 +- test/math/test_cbrt.cpp | 2 +- test/math/test_digamma.cpp | 2 +- test/math/test_ellint_1.cpp | 2 +- test/math/test_ellint_2.cpp | 2 +- test/math/test_ellint_3.cpp | 2 +- test/math/test_erf.cpp | 2 +- test/math/test_expint.cpp | 2 +- test/math/test_gamma.cpp | 2 +- test/math/test_hermite.cpp | 2 +- test/math/test_ibeta.cpp | 2 +- test/math/test_ibeta_2.cpp | 2 +- test/math/test_ibeta_3.cpp | 2 +- test/math/test_ibeta_4.cpp | 2 +- test/math/test_ibeta_inv_1.cpp | 2 +- test/math/test_ibeta_inv_ab_4.cpp | 2 +- test/math/test_igamma.cpp | 2 +- test/math/test_igamma_inv.cpp | 2 +- test/math/test_igamma_inva.cpp | 2 +- test/math/test_laguerre.cpp | 2 +- test/math/test_legendre.cpp | 2 +- test/math/test_tgamma_ratio.cpp | 2 +- test/math/test_zeta.cpp | 2 +- test/test_acos.cpp | 26 +- test/test_arithmetic.cpp | 292 ++++++++++-------- test/test_asin.cpp | 12 +- test/test_atan.cpp | 4 +- test/test_constants.cpp | 6 +- test/test_cos.cpp | 22 +- test/test_cosh.cpp | 2 +- test/test_cpp_int.cpp | 8 +- test/test_exp.cpp | 22 +- test/test_float_io.cpp | 12 +- test/test_generic_conv.cpp | 12 +- test/test_gmp_conversions.cpp | 6 +- test/test_int_io.cpp | 4 +- test/test_log.cpp | 2 +- test/test_rational_io.cpp | 14 +- test/test_sin.cpp | 20 +- test/test_sinh.cpp | 2 +- test/test_sqrt.cpp | 2 +- test/test_tanh.cpp | 2 +- 106 files changed, 1273 insertions(+), 395 deletions(-) create mode 100644 test/compile_fail/conv_fail_1.cpp create mode 100644 test/compile_fail/conv_fail_10.cpp create mode 100644 test/compile_fail/conv_fail_11.cpp create mode 100644 test/compile_fail/conv_fail_12.cpp create mode 100644 test/compile_fail/conv_fail_13.cpp create mode 100644 test/compile_fail/conv_fail_14.cpp create mode 100644 test/compile_fail/conv_fail_15.cpp create mode 100644 test/compile_fail/conv_fail_16.cpp create mode 100644 test/compile_fail/conv_fail_17.cpp create mode 100644 test/compile_fail/conv_fail_18.cpp create mode 100644 test/compile_fail/conv_fail_19.cpp create mode 100644 test/compile_fail/conv_fail_2.cpp create mode 100644 test/compile_fail/conv_fail_20.cpp create mode 100644 test/compile_fail/conv_fail_21.cpp create mode 100644 test/compile_fail/conv_fail_22.cpp create mode 100644 test/compile_fail/conv_fail_23.cpp create mode 100644 test/compile_fail/conv_fail_24.cpp create mode 100644 test/compile_fail/conv_fail_25.cpp create mode 100644 test/compile_fail/conv_fail_26.cpp create mode 100644 test/compile_fail/conv_fail_27.cpp create mode 100644 test/compile_fail/conv_fail_28.cpp create mode 100644 test/compile_fail/conv_fail_29.cpp create mode 100644 test/compile_fail/conv_fail_3.cpp create mode 100644 test/compile_fail/conv_fail_30.cpp create mode 100644 test/compile_fail/conv_fail_31.cpp create mode 100644 test/compile_fail/conv_fail_32.cpp create mode 100644 test/compile_fail/conv_fail_33.cpp create mode 100644 test/compile_fail/conv_fail_34.cpp create mode 100644 test/compile_fail/conv_fail_35.cpp create mode 100644 test/compile_fail/conv_fail_36.cpp create mode 100644 test/compile_fail/conv_fail_37.cpp create mode 100644 test/compile_fail/conv_fail_38.cpp create mode 100644 test/compile_fail/conv_fail_39.cpp create mode 100644 test/compile_fail/conv_fail_4.cpp create mode 100644 test/compile_fail/conv_fail_40.cpp create mode 100644 test/compile_fail/conv_fail_41.cpp create mode 100644 test/compile_fail/conv_fail_42.cpp create mode 100644 test/compile_fail/conv_fail_43.cpp create mode 100644 test/compile_fail/conv_fail_44.cpp create mode 100644 test/compile_fail/conv_fail_5.cpp create mode 100644 test/compile_fail/conv_fail_6.cpp create mode 100644 test/compile_fail/conv_fail_7.cpp create mode 100644 test/compile_fail/conv_fail_8.cpp create mode 100644 test/compile_fail/conv_fail_9.cpp create mode 100644 test/math/table_type.hpp diff --git a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp index bb2c8678..f06c9577 100644 --- a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp @@ -197,7 +197,12 @@ inline int eval_fpclassify(const mp_number_backend_float_architype& arg) typedef boost::multiprecision::number mp_number_float_architype; -}}} // namespaces +} // namespace + +template<> +struct number_category : public mpl::int_{}; + +}} // namespaces namespace std{ diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index f8115b4a..7232fed8 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -26,6 +26,16 @@ namespace boost{ namespace multiprecision{ namespace backends{ +template +class cpp_dec_float; + +} // namespace + +template +struct number_category > : public mpl::int_{}; + +namespace backends{ + template class cpp_dec_float { diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index dd745e04..8e0a4574 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1943,7 +1943,7 @@ void divide_unsigned_helper(cpp_int_backend* // if(r_order <= y_order) { - if((r_order < y_order) || (r.compare(y) < 0)) + if((r_order < y_order) || (r.compare_unsigned(y) < 0)) { return; } diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index ad041533..08b66352 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -38,6 +38,11 @@ inline Integer eval_integer_modulus(const Backend& x, Integer val) return maybe_abs(result); } +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4127) +#endif + template inline void eval_gcd(B& result, const B& a, const B& b) { @@ -100,6 +105,10 @@ inline void eval_gcd(B& result, const B& a, const B& b) eval_left_shift(result, shift); } +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + template inline void eval_lcm(B& result, const B& a, const B& b) { diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index 28c7c6d4..23a8b4ac 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -40,7 +40,7 @@ inline number operator + (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator + (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -50,7 +50,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator + (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -71,7 +71,7 @@ inline number operator - (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator - (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -81,7 +81,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator - (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -102,7 +102,7 @@ inline number operator * (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator * (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -112,7 +112,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator * (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -133,7 +133,7 @@ inline number operator / (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator / (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -143,7 +143,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator / (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -164,7 +164,7 @@ inline number operator % (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator % (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -174,7 +174,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator % (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -195,7 +195,7 @@ inline number operator | (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator | (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -205,7 +205,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator | (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -226,7 +226,7 @@ inline number operator ^ (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator ^ (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -236,7 +236,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator ^ (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -257,7 +257,7 @@ inline number operator & (const number& a, const number -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator & (const number& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -267,7 +267,7 @@ inline typename enable_if, number >::type return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator & (const V& a, const number& b) { typedef typename detail::canonical::type canonical_type; @@ -347,7 +347,7 @@ inline number operator + (number&& a, number&& b) return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator + (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -356,7 +356,7 @@ inline typename enable_if, number >::type return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator + (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; @@ -390,7 +390,7 @@ inline number operator - (number&& a, number&& b) return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator - (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -399,7 +399,7 @@ inline typename enable_if, number >::type return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator - (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; @@ -433,7 +433,7 @@ inline number operator * (number&& a, number&& b) return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator * (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -442,7 +442,7 @@ inline typename enable_if, number >::type return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator * (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; @@ -461,7 +461,7 @@ inline number operator / (number&& a, const number return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator / (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -480,7 +480,7 @@ inline number operator % (number&& a, const number return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator % (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -513,7 +513,7 @@ inline number operator | (number&& a, number&& b) return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator | (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -522,7 +522,7 @@ inline typename enable_if, number >::type return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator | (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; @@ -555,7 +555,7 @@ inline number operator ^ (number&& a, number&& b) return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator ^ (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -564,7 +564,7 @@ inline typename enable_if, number >::type return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator ^ (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; @@ -597,7 +597,7 @@ inline number operator & (number&& a, number&& b) return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator & (number&& a, const V& b) { typedef typename detail::canonical::type canonical_type; @@ -606,7 +606,7 @@ inline typename enable_if, number >::type return static_cast&&>(a); } template -inline typename enable_if, number >::type +inline typename enable_if >, number >::type operator & (const V& a, number&& b) { typedef typename detail::canonical::type canonical_type; diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index 29f5379a..1c1267df 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -9,6 +9,7 @@ #include #include #include +#include #include namespace boost{ namespace multiprecision{ @@ -36,6 +37,14 @@ struct is_mp_number_expression : public mpl::false_ {}; template struct is_mp_number_expression > : public mpl::true_ {}; +template +struct is_compatible_arithmetic_type + : public mpl::bool_< + is_convertible::value + && !is_mp_number::value + && !is_mp_number_expression::value> +{}; + namespace detail{ // // Workaround for missing abs(long long) on some compilers: @@ -67,7 +76,7 @@ struct has_enough_bits template struct canonical_imp { - typedef Val type; + typedef typename decay::type type; }; template struct canonical_imp > @@ -604,13 +613,13 @@ inline detail::expression, number, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator + (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator + (const V& a, const number& b) { return detail::expression >(a, b); @@ -634,13 +643,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator + (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator + (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -673,17 +682,23 @@ inline detail::expression, number, number >(b, a.left_ref()); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator + (const detail::expression >& a, const V& b) { return detail::expression >(b, a.left_ref()); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator + (const V& a, const detail::expression >& b) { return detail::expression, number >(a, b.left_ref()); } +template +inline detail::expression, number > > + operator + (const detail::expression >& a, const detail::expression >& b) +{ + return detail::expression, number > >(detail::expression, number >(a.left_ref(), b.left_ref())); +} // // Subtraction: // @@ -694,13 +709,13 @@ inline detail::expression, number, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator - (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator - (const V& a, const number& b) { return detail::expression >(a, b); @@ -724,13 +739,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator - (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator - (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -765,13 +780,13 @@ inline detail::expression, number >(b, a.left_ref())); } template -inline typename enable_if, detail::expression, V > > >::type +inline typename enable_if >, detail::expression, V > > >::type operator - (const detail::expression >& a, const V& b) { return detail::expression, V > >(detail::expression, V >(a.left_ref(), b)); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator - (const V& a, const detail::expression >& b) { return detail::expression >(a, b.left_ref()); @@ -786,13 +801,13 @@ inline detail::expression, number, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator * (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator * (const V& a, const number& b) { return detail::expression >(a, b); @@ -816,13 +831,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator * (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator * (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -859,14 +874,14 @@ inline detail::expression, number >(b, a.left_ref())); } template -inline typename enable_if, detail::expression, V > > >::type +inline typename enable_if >, detail::expression, V > > >::type operator * (const detail::expression >& a, const V& b) { return detail::expression, V > > ( detail::expression, V >(a.left_ref(), b)); } template -inline typename enable_if, detail::expression, V > > >::type +inline typename enable_if >, detail::expression, V > > >::type operator * (const V& a, const detail::expression >& b) { return detail::expression, V > >( @@ -882,13 +897,13 @@ inline detail::expression, number, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator / (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator / (const V& a, const number& b) { return detail::expression >(a, b); @@ -912,13 +927,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator / (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator / (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -955,14 +970,14 @@ inline detail::expression, number >(a.left_ref(), b)); } template -inline typename enable_if, detail::expression, V > > >::type +inline typename enable_if >, detail::expression, V > > >::type operator / (const detail::expression >& a, const V& b) { return detail::expression, V > >( detail::expression, V>(a.left_ref(), b)); } template -inline typename enable_if, detail::expression > > >::type +inline typename enable_if >, detail::expression > > >::type operator / (const V& a, const detail::expression >& b) { return detail::expression > >( @@ -978,13 +993,13 @@ inline detail::expression, number, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator % (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator % (const V& a, const number& b) { return detail::expression >(a, b); @@ -1008,13 +1023,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator % (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator % (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -1059,13 +1074,13 @@ inline detail::expression, numbe return detail::expression, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator & (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator & (const V& a, const number& b) { return detail::expression >(a, b); @@ -1089,13 +1104,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator & (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator & (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -1110,13 +1125,13 @@ inline detail::expression, number return detail::expression, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator| (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator| (const V& a, const number& b) { return detail::expression >(a, b); @@ -1140,13 +1155,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator| (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator| (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -1161,13 +1176,13 @@ inline detail::expression, numbe return detail::expression, number >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if >, detail::expression, V > >::type operator^ (const number& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if >, detail::expression > >::type operator^ (const V& a, const number& b) { return detail::expression >(a, b); @@ -1191,13 +1206,13 @@ inline detail::expression, detail::expression >(a, b); } template -inline typename enable_if, detail::expression, V > >::type +inline typename enable_if::result_type>, detail::expression, V > >::type operator^ (const detail::expression& a, const V& b) { return detail::expression, V >(a, b); } template -inline typename enable_if, detail::expression > >::type +inline typename enable_if::result_type>, detail::expression > >::type operator^ (const V& a, const detail::expression& b) { return detail::expression >(a, b); @@ -1208,6 +1223,7 @@ inline typename enable_if, detail::expression -struct number_category : public mpl::int_ {}; +struct number_category : public mpl::int_::is_integer ? number_kind_integer : (std::numeric_limits::max_exponent ? number_kind_floating_point : number_kind_unknown)> {}; template struct number_category > : public number_category{}; template diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 6a21bc86..cfdea145 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -29,7 +29,19 @@ namespace backends{ template struct gmp_float; +struct gmp_int; +struct gmp_rational; +} // namespace backends + +template<> +struct number_category : public mpl::int_{}; +template<> +struct number_category : public mpl::int_{}; +template +struct number_category > : public mpl::int_{}; + +namespace backends{ // // Within this file, the only functions we mark as noexcept are those that manipulate // (but don't create) an mpf_t. All other types may allocate at pretty much any time @@ -394,21 +406,21 @@ struct gmp_float : public detail::gmp_float_imp gmp_float& operator=(const gmp_float& o); gmp_float& operator=(const gmp_int& o); gmp_float& operator=(const gmp_rational& o); - gmp_float& operator=(const mpf_t& val) BOOST_NOEXCEPT + gmp_float& operator=(const mpf_t val) BOOST_NOEXCEPT { if(this->m_data[0]._mp_d == 0) mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set(this->m_data, val); return *this; } - gmp_float& operator=(const mpz_t& val) BOOST_NOEXCEPT + gmp_float& operator=(const mpz_t val) BOOST_NOEXCEPT { if(this->m_data[0]._mp_d == 0) mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set_z(this->m_data, val); return *this; } - gmp_float& operator=(const mpq_t& val) BOOST_NOEXCEPT + gmp_float& operator=(const mpq_t val) BOOST_NOEXCEPT { if(this->m_data[0]._mp_d == 0) mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); @@ -485,21 +497,21 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> } gmp_float& operator=(const gmp_int& o); gmp_float& operator=(const gmp_rational& o); - gmp_float& operator=(const mpf_t& val) + gmp_float& operator=(const mpf_t val) { if(this->m_data[0]._mp_d == 0) mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set(this->m_data, val); return *this; } - gmp_float& operator=(const mpz_t& val) + gmp_float& operator=(const mpz_t val) { if(this->m_data[0]._mp_d == 0) mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set_z(this->m_data, val); return *this; } - gmp_float& operator=(const mpq_t& val) + gmp_float& operator=(const mpq_t val) { if(this->m_data[0]._mp_d == 0) mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); @@ -1130,21 +1142,21 @@ struct gmp_int mpz_set_ui(m_data, 0); return *this; } - gmp_int& operator=(const mpf_t& val) + gmp_int& operator=(const mpf_t val) { if(m_data[0]._mp_d == 0) mpz_init(this->m_data); mpz_set_f(this->m_data, val); return *this; } - gmp_int& operator=(const mpz_t& val) + gmp_int& operator=(const mpz_t val) { if(m_data[0]._mp_d == 0) mpz_init(this->m_data); mpz_set(this->m_data, val); return *this; } - gmp_int& operator=(const mpq_t& val) + gmp_int& operator=(const mpq_t val) { if(m_data[0]._mp_d == 0) mpz_init(this->m_data); @@ -1789,14 +1801,14 @@ struct gmp_rational mpq_set_z(m_data, o.data()); return *this; } - gmp_rational& operator=(const mpq_t& o) + gmp_rational& operator=(const mpq_t o) { if(m_data[0]._mp_den._mp_d == 0) mpq_init(m_data); mpq_set(m_data, o); return *this; } - gmp_rational& operator=(const mpz_t& o) + gmp_rational& operator=(const mpz_t o) { if(m_data[0]._mp_den._mp_d == 0) mpq_init(m_data); @@ -2077,11 +2089,6 @@ struct component_type > typedef number type; }; -template<> -struct number_category : public mpl::int_{}; -template<> -struct number_category : public mpl::int_{}; - typedef number > mpf_float_50; typedef number > mpf_float_100; typedef number > mpf_float_500; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 859e51b3..ce8209a6 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -23,6 +23,13 @@ namespace backends{ template struct mpfr_float_backend; +} // namespace backends + +template +struct number_category > : public mpl::int_{}; + +namespace backends{ + namespace detail{ inline long get_default_precision() { return 50; } @@ -387,22 +394,22 @@ struct mpfr_float_backend : public detail::mpfr_float_imp *static_cast*>(this) = v; return *this; } - mpfr_float_backend& operator=(const mpfr_t& val)BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpfr_t val)BOOST_NOEXCEPT { mpfr_set(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpf_t& val)BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpf_t val)BOOST_NOEXCEPT { mpfr_set_f(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpz_t& val)BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpz_t val)BOOST_NOEXCEPT { mpfr_set_z(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpq_t& val)BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpq_t val)BOOST_NOEXCEPT { mpfr_set_q(this->m_data, val, GMP_RNDN); return *this; @@ -508,22 +515,22 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> *static_cast*>(this) = v; return *this; } - mpfr_float_backend& operator=(const mpfr_t& val) BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpfr_t val) BOOST_NOEXCEPT { mpfr_set(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpf_t& val) BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpf_t val) BOOST_NOEXCEPT { mpfr_set_f(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpz_t& val) BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpz_t val) BOOST_NOEXCEPT { mpfr_set_z(this->m_data, val, GMP_RNDN); return *this; } - mpfr_float_backend& operator=(const mpq_t& val) BOOST_NOEXCEPT + mpfr_float_backend& operator=(const mpq_t val) BOOST_NOEXCEPT { mpfr_set_q(this->m_data, val, GMP_RNDN); return *this; diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 15096180..40af6746 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -21,6 +21,7 @@ #include #include #include +#include #include // stream operators #include // EOF @@ -43,18 +44,38 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} template BOOST_FORCEINLINE number(V v, typename enable_if_c< - (boost::is_arithmetic::value || is_same::value || is_convertible::value) - && !is_convertible::type, Backend>::value >::type* = 0) + (boost::is_arithmetic::value || is_same::value || is_convertible::value) + && !is_convertible::type, Backend>::value + && !detail::is_restricted_conversion::type, Backend>::value + >::type* = 0) { m_backend = canonical_value(v); } template BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if_c< - (boost::is_arithmetic::value || is_same::value || is_convertible::value) - && is_convertible::type, Backend>::value >::type* = 0) + (boost::is_arithmetic::value || is_same::value || is_convertible::value) + && is_convertible::type, Backend>::value + && !detail::is_restricted_conversion::type, Backend>::value + >::type* = 0) : m_backend(canonical_value(v)) {} BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} + template + explicit BOOST_FORCEINLINE number(V v, typename enable_if_c< + (boost::is_arithmetic::value || is_same::value || is_convertible::value) + && !is_convertible::type, Backend>::value + && detail::is_restricted_conversion::type, Backend>::value + >::type* = 0) + { + m_backend = canonical_value(v); + } + template + explicit BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if_c< + (boost::is_arithmetic::value || is_same::value || is_convertible::value) + && is_convertible::type, Backend>::value + && detail::is_restricted_conversion::type, Backend>::value + >::type* = 0) + : m_backend(canonical_value(v)) {} /* // // This conflicts with component based initialization (for rational and complex types) @@ -71,12 +92,25 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} template - BOOST_FORCEINLINE number(const number& val, typename enable_if >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) + BOOST_FORCEINLINE number(const number& val, typename enable_if_c<(boost::is_convertible::value && !detail::is_restricted_conversion::value)>::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) { m_backend = val.backend(); } template - number(const number& val, typename disable_if >::type* = 0) + number(const number& val, typename enable_if_c<(!boost::is_convertible::value && !detail::is_restricted_conversion::value)>::type* = 0) + { + // + // Attempt a generic interconvertion: + // + detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); + } + template + explicit BOOST_FORCEINLINE number(const number& val, typename enable_if_c<(boost::is_convertible::value && detail::is_restricted_conversion::value)>::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) + { + m_backend = val.backend(); + } + template + explicit number(const number& val, typename enable_if_c<(!boost::is_convertible::value && detail::is_restricted_conversion::value)>::type* = 0) { // // Attempt a generic interconvertion: @@ -102,27 +136,40 @@ public: : m_backend(v){} template - number& operator=(const detail::expression& e) + typename enable_if::result_type, self_type>, number&>::type operator=(const detail::expression& e) { typedef typename is_same::result_type>::type tag_type; do_assign(e, tag_type()); return *this; } - + template + number& assign(const detail::expression& e) + { + typedef typename is_same::result_type>::type tag_type; + do_assign(e, tag_type()); + return *this; + } +/* BOOST_FORCEINLINE number& operator=(const number& e) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = e.m_backend; return *this; } - + */ template - BOOST_FORCEINLINE typename enable_if, is_same, is_convertible >, number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval::type>())) { m_backend = canonical_value(v); return *this; } - + template + BOOST_FORCEINLINE number& assign(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval::type>())) + { + m_backend = canonical_value(v); + return *this; + } + /* template BOOST_FORCEINLINE typename enable_if, mpl::not_, is_same, is_convertible > > >, number& >::type operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) @@ -130,7 +177,6 @@ public: m_backend = v; return *this; } - template BOOST_FORCEINLINE number& operator=(const number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { @@ -145,6 +191,14 @@ public: m_backend = v.backend(); return *this; } + template + BOOST_FORCEINLINE typename enable_if, number& >::type + assign(const number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) + { + m_backend = v.backend(); + return *this; + } + */ template typename disable_if, number& >::type @@ -156,9 +210,19 @@ public: detail::generic_interconvert(backend(), v.backend(), number_category(), number_category()); return *this; } + template + typename disable_if, number& >::type + assign(const number& v) + { + // + // Attempt a generic interconvertion: + // + detail::generic_interconvert(backend(), v.backend(), number_category(), number_category()); + return *this; + } template - number(const detail::expression& e) + number(const detail::expression& e, typename enable_if_c::result_type, self_type>::value>::type* = 0) { *this = e; } @@ -196,7 +260,7 @@ public: } template - typename enable_if, number& >::type + typename enable_if, number& >::type operator+=(const V& v) { using default_ops::eval_add; @@ -210,24 +274,24 @@ public: return *this; } - template - number& operator-=(const detail::expression& e) + template + number& operator-=(const detail::expression& e) { // Create a copy if e contains this: if(contains_self(e)) { self_type temp(e); - do_subtract(temp, detail::terminal()); + do_subtract(detail::expression(temp), detail::terminal()); } else { - do_subtract(e, typename Exp::tag_type()); + do_subtract(e, typename detail::expression::tag_type()); } return *this; } template - typename enable_if, number& >::type + typename enable_if, number& >::type operator-=(const V& v) { using default_ops::eval_subtract; @@ -242,8 +306,8 @@ public: return *this; } - template - number& operator*=(const detail::expression& e) + template + number& operator*=(const detail::expression& e) { // Create a temporary if the RHS references *this, but not // if we're just doing an x *= x; @@ -254,13 +318,13 @@ public: } else { - do_multiplies(e, typename Exp::tag_type()); + do_multiplies(e, typename detail::expression::tag_type()); } return *this; } template - typename enable_if, number& >::type + typename enable_if, number& >::type operator*=(const V& v) { using default_ops::eval_multiply; @@ -274,24 +338,24 @@ public: do_modulus(detail::expression(e), detail::terminal()); return *this; } - template - number& operator%=(const detail::expression& e) + template + number& operator%=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); // Create a temporary if the RHS references *this: if(contains_self(e)) { self_type temp(e); - do_modulus(temp, detail::terminal()); + do_modulus(detail::expression(temp), detail::terminal()); } else { - do_modulus(e, typename Exp::tag_type()); + do_modulus(e, typename detail::expression::tag_type()); } return *this; } template - typename enable_if, number& >::type + typename enable_if, number& >::type operator%=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The modulus operation is only valid for integer types"); @@ -362,8 +426,8 @@ public: return *this; } - template - number& operator/=(const detail::expression& e) + template + number& operator/=(const detail::expression& e) { // Create a temporary if the RHS references *this: if(contains_self(e)) @@ -373,13 +437,13 @@ public: } else { - do_divide(e, typename Exp::tag_type()); + do_divide(e, typename detail::expression::tag_type()); } return *this; } template - BOOST_FORCEINLINE typename enable_if, number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator/=(const V& v) { using default_ops::eval_divide; @@ -394,8 +458,8 @@ public: return *this; } - template - number& operator&=(const detail::expression& e) + template + number& operator&=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); // Create a temporary if the RHS references *this, but not @@ -403,17 +467,17 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_and(temp, detail::terminal()); + do_bitwise_and(detail::expression(temp), detail::terminal()); } else { - do_bitwise_and(e, typename Exp::tag_type()); + do_bitwise_and(e, typename detail::expression::tag_type()); } return *this; } template - BOOST_FORCEINLINE typename enable_if, number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator&=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise & operation is only valid for integer types"); @@ -429,8 +493,8 @@ public: return *this; } - template - number& operator|=(const detail::expression& e) + template + number& operator|=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); // Create a temporary if the RHS references *this, but not @@ -438,17 +502,17 @@ public: if(contains_self(e) && !is_self(e)) { self_type temp(e); - do_bitwise_or(temp, detail::terminal()); + do_bitwise_or(detail::expression(temp), detail::terminal()); } else { - do_bitwise_or(e, typename Exp::tag_type()); + do_bitwise_or(e, typename detail::expression::tag_type()); } return *this; } template - BOOST_FORCEINLINE typename enable_if, number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator|=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise | operation is only valid for integer types"); @@ -464,24 +528,24 @@ public: return *this; } - template - number& operator^=(const detail::expression& e) + template + number& operator^=(const detail::expression& e) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); if(contains_self(e)) { self_type temp(e); - do_bitwise_xor(temp, detail::terminal()); + do_bitwise_xor(detail::expression(temp), detail::terminal()); } else { - do_bitwise_xor(e, typename Exp::tag_type()); + do_bitwise_xor(e, typename detail::expression::tag_type()); } return *this; } template - BOOST_FORCEINLINE typename enable_if, number& >::type + BOOST_FORCEINLINE typename enable_if, number& >::type operator^=(const V& v) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types"); @@ -1535,6 +1599,8 @@ private: BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; } static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } + template + static BOOST_FORCEINLINE BOOST_CONSTEXPR const B2& canonical_value(const number& v) BOOST_NOEXCEPT { return v.backend(); } template static BOOST_FORCEINLINE BOOST_CONSTEXPR typename detail::canonical::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } static BOOST_FORCEINLINE typename detail::canonical::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); } @@ -1583,7 +1649,7 @@ inline std::istream& operator >> (std::istream& is, number> s; - r = s; + r.assign(s); return is; } @@ -1613,7 +1679,7 @@ inline std::istream& operator >> (std::istream& is, rational> (std::istream& is, rational - typename enable_if, rational_adapter&>::type operator = (Arithmetic i) + template + typename enable_if, rational_adapter&>::type operator = (Int i) { m_value = i; return *this; } + template + typename enable_if, rational_adapter&>::type operator = (Float i) + { + int e; + Float f = std::frexp(i, &e); + f = std::ldexp(f, std::numeric_limits::digits); + e -= std::numeric_limits::digits; + integer_type num(f); + integer_type denom(1u); + if(e > 0) + { + num <<= e; + } + else if(e < 0) + { + denom <<= -e; + } + m_value.assign(num, denom); + return *this; + } rational_adapter& operator = (const char* s) { std::string s1; @@ -74,7 +94,7 @@ struct rational_adapter s1.append(1, c); ++s; } - v1 = s1; + v1.assign(s1); s1.erase(); if(c == '/') { @@ -86,7 +106,7 @@ struct rational_adapter s1.append(1, c); ++s; } - v2 = s1; + v2.assign(s1); } else v2 = 1; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index abb83aa9..0acca17a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -698,6 +698,14 @@ run test_rational_io.cpp gmp release # Otherwise runtime is slow : test_rational_io_mpz ; +run test_rational_io.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT + release # Otherwise runtime is slow + : test_rational_io_cpp_int ; + run test_generic_conv.cpp : # command line : # input files @@ -792,6 +800,10 @@ if $(enable-specfun) } } +for local source in [ glob compile_fail/*.cpp ] +{ + compile-fail $(source) ; +} if ! $(disable-concepts) { diff --git a/test/compile_fail/conv_fail_1.cpp b/test/compile_fail/conv_fail_1.cpp new file mode 100644 index 00000000..c5edc3b0 --- /dev/null +++ b/test/compile_fail/conv_fail_1.cpp @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +void foo(cpp_int i) +{ +} + +int main() +{ + foo(2.3); // conversion from float is explicit +} diff --git a/test/compile_fail/conv_fail_10.cpp b/test/compile_fail/conv_fail_10.cpp new file mode 100644 index 00000000..d4376a2b --- /dev/null +++ b/test/compile_fail/conv_fail_10.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i -= 2.3; +} diff --git a/test/compile_fail/conv_fail_11.cpp b/test/compile_fail/conv_fail_11.cpp new file mode 100644 index 00000000..b07a8b89 --- /dev/null +++ b/test/compile_fail/conv_fail_11.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i *= 2.3; +} diff --git a/test/compile_fail/conv_fail_12.cpp b/test/compile_fail/conv_fail_12.cpp new file mode 100644 index 00000000..fbaf8fae --- /dev/null +++ b/test/compile_fail/conv_fail_12.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i /= 2.3; +} diff --git a/test/compile_fail/conv_fail_13.cpp b/test/compile_fail/conv_fail_13.cpp new file mode 100644 index 00000000..1d705e7f --- /dev/null +++ b/test/compile_fail/conv_fail_13.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i %= 2.3; +} diff --git a/test/compile_fail/conv_fail_14.cpp b/test/compile_fail/conv_fail_14.cpp new file mode 100644 index 00000000..54b86232 --- /dev/null +++ b/test/compile_fail/conv_fail_14.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i |= 2.3; +} diff --git a/test/compile_fail/conv_fail_15.cpp b/test/compile_fail/conv_fail_15.cpp new file mode 100644 index 00000000..e225a870 --- /dev/null +++ b/test/compile_fail/conv_fail_15.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i ^= 2.3; +} diff --git a/test/compile_fail/conv_fail_16.cpp b/test/compile_fail/conv_fail_16.cpp new file mode 100644 index 00000000..0ba8c25b --- /dev/null +++ b/test/compile_fail/conv_fail_16.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i &= 2.3; +} diff --git a/test/compile_fail/conv_fail_17.cpp b/test/compile_fail/conv_fail_17.cpp new file mode 100644 index 00000000..0649a64d --- /dev/null +++ b/test/compile_fail/conv_fail_17.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(a); +} diff --git a/test/compile_fail/conv_fail_18.cpp b/test/compile_fail/conv_fail_18.cpp new file mode 100644 index 00000000..4335d975 --- /dev/null +++ b/test/compile_fail/conv_fail_18.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(2); + i = a; +} diff --git a/test/compile_fail/conv_fail_19.cpp b/test/compile_fail/conv_fail_19.cpp new file mode 100644 index 00000000..2315252e --- /dev/null +++ b/test/compile_fail/conv_fail_19.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(a + b); +} diff --git a/test/compile_fail/conv_fail_2.cpp b/test/compile_fail/conv_fail_2.cpp new file mode 100644 index 00000000..79ffff2f --- /dev/null +++ b/test/compile_fail/conv_fail_2.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i == 2.3; +} diff --git a/test/compile_fail/conv_fail_20.cpp b/test/compile_fail/conv_fail_20.cpp new file mode 100644 index 00000000..24a63fa2 --- /dev/null +++ b/test/compile_fail/conv_fail_20.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i = a * b; +} diff --git a/test/compile_fail/conv_fail_21.cpp b/test/compile_fail/conv_fail_21.cpp new file mode 100644 index 00000000..8c845f10 --- /dev/null +++ b/test/compile_fail/conv_fail_21.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i += a * b; +} diff --git a/test/compile_fail/conv_fail_22.cpp b/test/compile_fail/conv_fail_22.cpp new file mode 100644 index 00000000..d35e837e --- /dev/null +++ b/test/compile_fail/conv_fail_22.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i -= a * b; +} diff --git a/test/compile_fail/conv_fail_23.cpp b/test/compile_fail/conv_fail_23.cpp new file mode 100644 index 00000000..3e5a9f53 --- /dev/null +++ b/test/compile_fail/conv_fail_23.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i *= a * b; +} diff --git a/test/compile_fail/conv_fail_24.cpp b/test/compile_fail/conv_fail_24.cpp new file mode 100644 index 00000000..a2581052 --- /dev/null +++ b/test/compile_fail/conv_fail_24.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i /= a * b; +} diff --git a/test/compile_fail/conv_fail_25.cpp b/test/compile_fail/conv_fail_25.cpp new file mode 100644 index 00000000..694ee712 --- /dev/null +++ b/test/compile_fail/conv_fail_25.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i %= a * b; +} diff --git a/test/compile_fail/conv_fail_26.cpp b/test/compile_fail/conv_fail_26.cpp new file mode 100644 index 00000000..0df397f4 --- /dev/null +++ b/test/compile_fail/conv_fail_26.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i &= a * b; +} diff --git a/test/compile_fail/conv_fail_27.cpp b/test/compile_fail/conv_fail_27.cpp new file mode 100644 index 00000000..3995389d --- /dev/null +++ b/test/compile_fail/conv_fail_27.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i |= a * b; +} diff --git a/test/compile_fail/conv_fail_28.cpp b/test/compile_fail/conv_fail_28.cpp new file mode 100644 index 00000000..4133aa14 --- /dev/null +++ b/test/compile_fail/conv_fail_28.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2), b(3); + cpp_int i(3); + i ^= a * b; +} diff --git a/test/compile_fail/conv_fail_29.cpp b/test/compile_fail/conv_fail_29.cpp new file mode 100644 index 00000000..854118fb --- /dev/null +++ b/test/compile_fail/conv_fail_29.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i + 3.3; +} diff --git a/test/compile_fail/conv_fail_3.cpp b/test/compile_fail/conv_fail_3.cpp new file mode 100644 index 00000000..0fe89320 --- /dev/null +++ b/test/compile_fail/conv_fail_3.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i != 2.3; +} diff --git a/test/compile_fail/conv_fail_30.cpp b/test/compile_fail/conv_fail_30.cpp new file mode 100644 index 00000000..4ba78fe5 --- /dev/null +++ b/test/compile_fail/conv_fail_30.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 + i; +} diff --git a/test/compile_fail/conv_fail_31.cpp b/test/compile_fail/conv_fail_31.cpp new file mode 100644 index 00000000..56a14828 --- /dev/null +++ b/test/compile_fail/conv_fail_31.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 - i; +} diff --git a/test/compile_fail/conv_fail_32.cpp b/test/compile_fail/conv_fail_32.cpp new file mode 100644 index 00000000..1769185f --- /dev/null +++ b/test/compile_fail/conv_fail_32.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i - 3.3; +} diff --git a/test/compile_fail/conv_fail_33.cpp b/test/compile_fail/conv_fail_33.cpp new file mode 100644 index 00000000..36758318 --- /dev/null +++ b/test/compile_fail/conv_fail_33.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i * 3.3; +} diff --git a/test/compile_fail/conv_fail_34.cpp b/test/compile_fail/conv_fail_34.cpp new file mode 100644 index 00000000..7d178c48 --- /dev/null +++ b/test/compile_fail/conv_fail_34.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 * i; +} diff --git a/test/compile_fail/conv_fail_35.cpp b/test/compile_fail/conv_fail_35.cpp new file mode 100644 index 00000000..67f6bdc8 --- /dev/null +++ b/test/compile_fail/conv_fail_35.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 / i; +} diff --git a/test/compile_fail/conv_fail_36.cpp b/test/compile_fail/conv_fail_36.cpp new file mode 100644 index 00000000..3b175be8 --- /dev/null +++ b/test/compile_fail/conv_fail_36.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i / 3.3; +} diff --git a/test/compile_fail/conv_fail_37.cpp b/test/compile_fail/conv_fail_37.cpp new file mode 100644 index 00000000..164db0b9 --- /dev/null +++ b/test/compile_fail/conv_fail_37.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i % 3.3; +} diff --git a/test/compile_fail/conv_fail_38.cpp b/test/compile_fail/conv_fail_38.cpp new file mode 100644 index 00000000..a905e20e --- /dev/null +++ b/test/compile_fail/conv_fail_38.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 % i; +} diff --git a/test/compile_fail/conv_fail_39.cpp b/test/compile_fail/conv_fail_39.cpp new file mode 100644 index 00000000..fa495d70 --- /dev/null +++ b/test/compile_fail/conv_fail_39.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 & i; +} diff --git a/test/compile_fail/conv_fail_4.cpp b/test/compile_fail/conv_fail_4.cpp new file mode 100644 index 00000000..6bd72119 --- /dev/null +++ b/test/compile_fail/conv_fail_4.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i <= 2.3; +} diff --git a/test/compile_fail/conv_fail_40.cpp b/test/compile_fail/conv_fail_40.cpp new file mode 100644 index 00000000..f3ccf05b --- /dev/null +++ b/test/compile_fail/conv_fail_40.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i & 3.3; +} diff --git a/test/compile_fail/conv_fail_41.cpp b/test/compile_fail/conv_fail_41.cpp new file mode 100644 index 00000000..67c30945 --- /dev/null +++ b/test/compile_fail/conv_fail_41.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i | 3.3; +} diff --git a/test/compile_fail/conv_fail_42.cpp b/test/compile_fail/conv_fail_42.cpp new file mode 100644 index 00000000..6ebe5f5b --- /dev/null +++ b/test/compile_fail/conv_fail_42.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 | i; +} diff --git a/test/compile_fail/conv_fail_43.cpp b/test/compile_fail/conv_fail_43.cpp new file mode 100644 index 00000000..cac2c020 --- /dev/null +++ b/test/compile_fail/conv_fail_43.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = 3.3 ^ i; +} diff --git a/test/compile_fail/conv_fail_44.cpp b/test/compile_fail/conv_fail_44.cpp new file mode 100644 index 00000000..32a27593 --- /dev/null +++ b/test/compile_fail/conv_fail_44.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i(3), j; + j = i ^ 3.3; +} diff --git a/test/compile_fail/conv_fail_5.cpp b/test/compile_fail/conv_fail_5.cpp new file mode 100644 index 00000000..23f49022 --- /dev/null +++ b/test/compile_fail/conv_fail_5.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i >= 2.3; +} diff --git a/test/compile_fail/conv_fail_6.cpp b/test/compile_fail/conv_fail_6.cpp new file mode 100644 index 00000000..78fea0f7 --- /dev/null +++ b/test/compile_fail/conv_fail_6.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i > 2.3; +} diff --git a/test/compile_fail/conv_fail_7.cpp b/test/compile_fail/conv_fail_7.cpp new file mode 100644 index 00000000..af4286f4 --- /dev/null +++ b/test/compile_fail/conv_fail_7.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i < 2.3; +} diff --git a/test/compile_fail/conv_fail_8.cpp b/test/compile_fail/conv_fail_8.cpp new file mode 100644 index 00000000..d741c613 --- /dev/null +++ b/test/compile_fail/conv_fail_8.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i = 2.3; +} diff --git a/test/compile_fail/conv_fail_9.cpp b/test/compile_fail/conv_fail_9.cpp new file mode 100644 index 00000000..29ce8b7b --- /dev/null +++ b/test/compile_fail/conv_fail_9.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 2; + i += 2.3; +} diff --git a/test/math/log1p_expm1_test.cpp b/test/math/log1p_expm1_test.cpp index 1754094c..4a53064b 100644 --- a/test/math/log1p_expm1_test.cpp +++ b/test/math/log1p_expm1_test.cpp @@ -46,7 +46,7 @@ #include #include -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include "libs/math/test/log1p_expm1_test.hpp" diff --git a/test/math/powm1_sqrtp1m1_test.cpp b/test/math/powm1_sqrtp1m1_test.cpp index c3853651..db2621eb 100644 --- a/test/math/powm1_sqrtp1m1_test.cpp +++ b/test/math/powm1_sqrtp1m1_test.cpp @@ -46,7 +46,7 @@ #include #include -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include "libs/math/test/powm1_sqrtp1m1_test.hpp" diff --git a/test/math/table_type.hpp b/test/math/table_type.hpp new file mode 100644 index 00000000..c3b5cee3 --- /dev/null +++ b/test/math/table_type.hpp @@ -0,0 +1,39 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_TABLE_TYPE + +#include +#include + +struct string_table_entry +{ +private: + const char* m_data; +public: + string_table_entry(const char* p) : m_data(p) {} + + template + operator T () const + { + return static_cast(m_data); + } +}; + +inline std::ostream& operator << (std::ostream& os, string_table_entry const & what) +{ + return os << static_cast(what); +} + +template +struct table_type > +{ + typedef string_table_entry type; +}; + +#define SC_(x) string_table_entry(BOOST_STRINGIZE(x)) + +#endif + diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index 3532f397..c9e7bb3c 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -41,7 +41,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#define SC_(x) static_cast::type>(BOOST_STRINGIZE(x)) #include #include "libs/math/test/test_bessel_i.hpp" diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index 931422aa..14c32412 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -41,7 +41,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include #include "libs/math/test/test_bessel_j.hpp" diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp index 856180e9..46ce61b9 100644 --- a/test/math/test_bessel_k.cpp +++ b/test/math/test_bessel_k.cpp @@ -42,7 +42,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include #include "libs/math/test/test_bessel_k.hpp" diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index dd9c99dd..2672d8bd 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -41,7 +41,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include #include "libs/math/test/test_bessel_y.hpp" diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index b69c1808..39409cb7 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -41,7 +41,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include #include "libs/math/test/test_beta.hpp" diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index 146b1af2..daae89b2 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -41,7 +41,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include #include "libs/math/test/test_binomial_coeff.hpp" diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp index 1aacc108..30f96116 100644 --- a/test/math/test_carlson.cpp +++ b/test/math/test_carlson.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_cbrt.cpp b/test/math/test_cbrt.cpp index b896d6d7..156e0dd6 100644 --- a/test/math/test_cbrt.cpp +++ b/test/math/test_cbrt.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp index 2d18eaa6..16653f83 100644 --- a/test/math/test_digamma.cpp +++ b/test/math/test_digamma.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp index c7da569a..b74c0f56 100644 --- a/test/math/test_ellint_1.cpp +++ b/test/math/test_ellint_1.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp index c07bddac..9529a21c 100644 --- a/test/math/test_ellint_2.cpp +++ b/test/math/test_ellint_2.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp index 9d3d6904..986b864b 100644 --- a/test/math/test_ellint_3.cpp +++ b/test/math/test_ellint_3.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp index 1b77e3a4..77db0a60 100644 --- a/test/math/test_erf.cpp +++ b/test/math/test_erf.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_expint.cpp b/test/math/test_expint.cpp index 0dbffc58..90b77e79 100644 --- a/test/math/test_expint.cpp +++ b/test/math/test_expint.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index 44ca68be..a4df3f37 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_hermite.cpp b/test/math/test_hermite.cpp index 271b8138..277e96a7 100644 --- a/test/math/test_hermite.cpp +++ b/test/math/test_hermite.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index b78358f2..e48fb900 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #define TEST_DATA 1 diff --git a/test/math/test_ibeta_2.cpp b/test/math/test_ibeta_2.cpp index 7dcc2fd8..212056a7 100644 --- a/test/math/test_ibeta_2.cpp +++ b/test/math/test_ibeta_2.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #define TEST_DATA 2 diff --git a/test/math/test_ibeta_3.cpp b/test/math/test_ibeta_3.cpp index d1f0d132..8bb2a9a9 100644 --- a/test/math/test_ibeta_3.cpp +++ b/test/math/test_ibeta_3.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #define TEST_DATA 3 diff --git a/test/math/test_ibeta_4.cpp b/test/math/test_ibeta_4.cpp index f71c117f..d4b224ff 100644 --- a/test/math/test_ibeta_4.cpp +++ b/test/math/test_ibeta_4.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #define TEST_DATA 4 diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index 88fc6184..54cb44eb 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #define TEST_DATA 4 diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index e00fb612..e9916b96 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #define TEST_DATA 4 diff --git a/test/math/test_igamma.cpp b/test/math/test_igamma.cpp index 429f1f40..50aff1c5 100644 --- a/test/math/test_igamma.cpp +++ b/test/math/test_igamma.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #include #include "libs/math/test/test_igamma.hpp" diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index 1bf31054..697b58fd 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_igamma_inva.cpp b/test/math/test_igamma_inva.cpp index 09633434..8ff4e6d4 100644 --- a/test/math/test_igamma_inva.cpp +++ b/test/math/test_igamma_inva.cpp @@ -37,7 +37,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_laguerre.cpp b/test/math/test_laguerre.cpp index fe309c88..8f70b1ca 100644 --- a/test/math/test_laguerre.cpp +++ b/test/math/test_laguerre.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp index e3b26c51..7ec607ac 100644 --- a/test/math/test_legendre.cpp +++ b/test/math/test_legendre.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp index 7657e325..931ffe3c 100644 --- a/test/math/test_tgamma_ratio.cpp +++ b/test/math/test_tgamma_ratio.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index 0c7976cd..1d2184ce 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -36,7 +36,7 @@ #include #endif -#define SC_(x) BOOST_STRINGIZE(x) +#include "table_type.hpp" #define TEST_UDT #include diff --git a/test/test_acos.cpp b/test/test_acos.cpp index b4dcc828..97cc96d2 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -53,21 +53,21 @@ void test() // static const boost::array, 13> exact_data = {{ - {{ 0.5, "1.04719755119659774615421446109316762806572313312503527365831486410260546876206966620934494178070568932738269550442743555" }}, - {{ 0.25, "1.31811607165281796574566425464604046984639096659071471685354851741333314266208327690226867044304393238598144034722708676" }}, - {{0.75, "0.722734247813415611178377352641333362025218486424440267626754132583707381914630264964827610939101303690078815991333621490" }}, - {{1 - std::ldexp(1.0, -20), "0.00138106804176241718210883847756746694048570648553426714212025111150044290934710742282266738617709904634187850607042604204" }}, - {{std::ldexp(1.0, -20), "1.57079537312058021283676140197495835299636605165647561806789944133748780804448843729970624018104090863783682329820313127" }}, - {{1, "0" }}, + {{ 0.5, static_cast("1.04719755119659774615421446109316762806572313312503527365831486410260546876206966620934494178070568932738269550442743555") }}, + {{ 0.25, static_cast("1.31811607165281796574566425464604046984639096659071471685354851741333314266208327690226867044304393238598144034722708676") }}, + {{0.75, static_cast("0.722734247813415611178377352641333362025218486424440267626754132583707381914630264964827610939101303690078815991333621490") }}, + {{1 - std::ldexp(1.0, -20), static_cast("0.00138106804176241718210883847756746694048570648553426714212025111150044290934710742282266738617709904634187850607042604204") }}, + {{std::ldexp(1.0, -20), static_cast("1.57079537312058021283676140197495835299636605165647561806789944133748780804448843729970624018104090863783682329820313127") }}, + {{1, static_cast("0") }}, - {{0, "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332" }}, + {{0, static_cast("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332") }}, - {{ -0.5, "2.09439510239319549230842892218633525613144626625007054731662972820521093752413933241868988356141137865476539100885487110" }}, - {{ -0.25, "1.82347658193697527271697912863346241435077843278439110412139607489448326362412572172576615489907313559616664616605521989" }}, - {{-0.75, "2.41885840577637762728426603063816952217195091295066555334819045972410902437157873366320721440301576429206927052194868516" }}, - {{-1 + std::ldexp(1.0, -20), "3.14021158554803082128053454480193541725668369288957155383282434119631596337686189120521215795593996893580620800721188061" }}, - {{-std::ldexp(1.0, -20), "1.57079728046921302562588198130454453120080334771863020290704515097032859824172056132832858516107615934431126321507917538" }}, - {{-1, "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230665" }}, + {{ -0.5, static_cast("2.09439510239319549230842892218633525613144626625007054731662972820521093752413933241868988356141137865476539100885487110") }}, + {{ -0.25, static_cast("1.82347658193697527271697912863346241435077843278439110412139607489448326362412572172576615489907313559616664616605521989") }}, + {{-0.75, static_cast("2.41885840577637762728426603063816952217195091295066555334819045972410902437157873366320721440301576429206927052194868516") }}, + {{-1 + std::ldexp(1.0, -20), static_cast("3.14021158554803082128053454480193541725668369288957155383282434119631596337686189120521215795593996893580620800721188061") }}, + {{-std::ldexp(1.0, -20), static_cast("1.57079728046921302562588198130454453120080334771863020290704515097032859824172056132832858516107615934431126321507917538") }}, + {{-1, static_cast("3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230665") }}, }}; unsigned max_err = 0; for(unsigned k = 0; k < exact_data.size(); k++) diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index e15efa6a..99c1bb8b 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -64,16 +64,17 @@ #if defined(TEST_CPP_INT) || defined(TEST_CPP_INT_BR) #include #endif + +template +struct is_boost_rational : public boost::mpl::false_{}; + #if defined(TEST_TOMMATH_BOOST_RATIONAL) || defined(TEST_MPZ_BOOST_RATIONAL) #include #define NO_MIXED_OPS template -bool is_boost_rational(const boost::rational&) -{ - return true; -} +struct is_boost_rational > : public boost::mpl::true_{}; namespace boost{ namespace multiprecision{ @@ -138,7 +139,11 @@ struct is_twos_complement_integer : public boost #define BOOST_TEST_EQUAL(a, b) BOOST_TEST((a) == (b)) template -void test_comparisons(Val a, Val b) +void test_comparisons(Val, Val, const boost::mpl::false_) +{} + +template +void test_comparisons(Val a, Val b, const boost::mpl::true_) { Real r1(a); Real r2(b); @@ -222,14 +227,8 @@ void test_complement(Real, Real, Real, const boost::mpl::false_&) template void test_integer_ops(const T&){} -template -bool is_boost_rational(const T&) -{ - return false; -} - template -void test_integer_ops(const boost::mpl::int_&) +void test_rational(const boost::mpl::true_&) { Real a(2); a /= 3; @@ -240,16 +239,29 @@ void test_integer_ops(const boost::mpl::int_> b; + BOOST_CHECK_EQUAL(a, b); +} + +template +void test_rational(const boost::mpl::false_&) +{ + Real a(2); + a /= 3; + BOOST_TEST(numerator(a) == 2); + BOOST_TEST(denominator(a) == 3); + Real b(4); + b /= 6; + BOOST_TEST(a == b); + + BOOST_CHECK_THROW(Real(a / 0), std::overflow_error); + BOOST_CHECK_THROW(Real("3.14"), std::runtime_error); + b = Real("2/3"); + BOOST_CHECK_EQUAL(a, b); // // Check IO code: // @@ -259,6 +271,12 @@ void test_integer_ops(const boost::mpl::int_ +void test_integer_ops(const boost::mpl::int_&) +{ + test_rational(is_boost_rational()); +} + template void test_integer_ops(const boost::mpl::int_&) { @@ -661,6 +679,16 @@ void test_negative_mixed(boost::mpl::true_ const&) if(std::numeric_limits::is_specialized && !std::numeric_limits::is_signed) return; typedef typename lexical_cast_target_type::type target_type; + typedef typename boost::mpl::if_< + boost::is_convertible, + typename boost::mpl::if_c::value && (sizeof(Num) < sizeof(int)), int, Num>::type, + Real + >::type cast_type; + typedef typename boost::mpl::if_< + boost::is_convertible, + Num, + Real + >::type simple_cast_type; std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; Num n1 = -static_cast(1uLL << (std::numeric_limits::digits - 1)); Num n2 = -1; @@ -668,22 +696,22 @@ void test_negative_mixed(boost::mpl::true_ const&) Num n4 = -20; Num n5 = -8; - test_comparisons(n1, n2); - test_comparisons(n1, n3); - test_comparisons(n3, n1); - test_comparisons(n2, n1); - test_comparisons(n1, n1); - test_comparisons(n3, n3); + test_comparisons(n1, n2, boost::is_convertible()); + test_comparisons(n1, n3, boost::is_convertible()); + test_comparisons(n3, n1, boost::is_convertible()); + test_comparisons(n2, n1, boost::is_convertible()); + test_comparisons(n1, n1, boost::is_convertible()); + test_comparisons(n3, n3, boost::is_convertible()); // Default construct: - BOOST_TEST(Real(n1) == n1); - BOOST_TEST(Real(n2) == n2); - BOOST_TEST(Real(n3) == n3); - BOOST_TEST(Real(n4) == n4); - BOOST_TEST(n1 == Real(n1)); - BOOST_TEST(n2 == Real(n2)); - BOOST_TEST(n3 == Real(n3)); - BOOST_TEST(n4 == Real(n4)); + BOOST_TEST(Real(n1) == static_cast(n1)); + BOOST_TEST(Real(n2) == static_cast(n2)); + BOOST_TEST(Real(n3) == static_cast(n3)); + BOOST_TEST(Real(n4) == static_cast(n4)); + BOOST_TEST(static_cast(n1) == Real(n1)); + BOOST_TEST(static_cast(n2) == Real(n2)); + BOOST_TEST(static_cast(n3) == Real(n3)); + BOOST_TEST(static_cast(n4) == Real(n4)); BOOST_TEST(Real(n1).template convert_to() == n1); BOOST_TEST(Real(n2).template convert_to() == n2); BOOST_TEST(Real(n3).template convert_to() == n3); @@ -709,54 +737,54 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, f)), 0); // Assignment: Real r(0); - BOOST_TEST(r != n1); - r = n1; - BOOST_TEST(r == n1); - r = n2; - BOOST_TEST(r == n2); - r = n3; - BOOST_TEST(r == n3); - r = n4; - BOOST_TEST(r == n4); + BOOST_TEST(r != static_cast(n1)); + r = static_cast(n1); + BOOST_TEST(r == static_cast(n1)); + r = static_cast(n2); + BOOST_TEST(r == static_cast(n2)); + r = static_cast(n3); + BOOST_TEST(r == static_cast(n3)); + r = static_cast(n4); + BOOST_TEST(r == static_cast(n4)); // Addition: - r = n2; - BOOST_TEST(r + n4 == n2 + n4); - BOOST_TEST(Real(r + n4) == n2 + n4); - r += n4; - BOOST_TEST(r == n2 + n4); + r = static_cast(n2); + BOOST_TEST(r + static_cast(n4) == static_cast(n2 + n4)); + BOOST_TEST(Real(r + static_cast(n4)) == static_cast(n2 + n4)); + r += static_cast(n4); + BOOST_TEST(r == static_cast(n2 + n4)); // subtraction: - r = n4; - BOOST_TEST(r - n5 == n4 - n5); - BOOST_TEST(Real(r - n5) == n4 - n5); - r -= n5; - BOOST_TEST(r == n4 - n5); + r = static_cast(n4); + BOOST_TEST(r - static_cast(n5) == static_cast(n4 - n5)); + BOOST_TEST(Real(r - static_cast(n5)) == static_cast(n4 - n5)); + r -= static_cast(n5); + BOOST_TEST(r == static_cast(n4 - n5)); // Multiplication: - r = n2; - BOOST_TEST(r * n4 == n2 * n4); - BOOST_TEST(Real(r * n4) == n2 * n4); - r *= n4; - BOOST_TEST(r == n2 * n4); + r = static_cast(n2); + BOOST_TEST(r * static_cast(n4) == static_cast(n2 * n4)); + BOOST_TEST(Real(r * static_cast(n4)) == static_cast(n2 * n4)); + r *= static_cast(n4); + BOOST_TEST(r == static_cast(n2 * n4)); // Division: - r = n1; - BOOST_TEST(r / n5 == n1 / n5); - BOOST_TEST(Real(r / n5) == n1 / n5); - r /= n5; - BOOST_TEST(r == n1 / n5); + r = static_cast(n1); + BOOST_TEST(r / static_cast(n5) == static_cast(n1 / n5)); + BOOST_TEST(Real(r / static_cast(n5)) == static_cast(n1 / n5)); + r /= static_cast(n5); + BOOST_TEST(r == static_cast(n1 / n5)); // // Extra cases for full coverage: // - r = Real(n4) + n5; - BOOST_TEST(r == n4 + n5); - r = n4 + Real(n5); - BOOST_TEST(r == n4 + n5); - r = Real(n4) - n5; - BOOST_TEST(r == n4 - n5); - r = n4 - Real(n5); - BOOST_TEST(r == n4 - n5); - r = n4 * Real(n5); - BOOST_TEST(r == n4 * n5); - r = (4 * n4) / Real(4); - BOOST_TEST(r == n4); + r = Real(n4) + static_cast(n5); + BOOST_TEST(r == static_cast(n4 + n5)); + r = static_cast(n4) + Real(n5); + BOOST_TEST(r == static_cast(n4 + n5)); + r = Real(n4) - static_cast(n5); + BOOST_TEST(r == static_cast(n4 - n5)); + r = static_cast(n4) - Real(n5); + BOOST_TEST(r == static_cast(n4 - n5)); + r = static_cast(n4) * Real(n5); + BOOST_TEST(r == static_cast(n4 * n5)); + r = static_cast(4 * n4) / Real(4); + BOOST_TEST(r == static_cast(n4)); } template @@ -768,6 +796,16 @@ template void test_mixed() { typedef typename lexical_cast_target_type::type target_type; + typedef typename boost::mpl::if_< + boost::is_convertible, + typename boost::mpl::if_c::value && (sizeof(Num) < sizeof(int)), int, Num>::type, + Real + >::type cast_type; + typedef typename boost::mpl::if_< + boost::is_convertible, + Num, + Real + >::type simple_cast_type; if(std::numeric_limits::digits < std::numeric_limits::digits) return; @@ -779,18 +817,18 @@ void test_mixed() Num n4 = 20; Num n5 = 8; - test_comparisons(n1, n2); - test_comparisons(n1, n3); - test_comparisons(n1, n1); - test_comparisons(n3, n1); - test_comparisons(n2, n1); - test_comparisons(n3, n3); + test_comparisons(n1, n2, boost::is_convertible()); + test_comparisons(n1, n3, boost::is_convertible()); + test_comparisons(n1, n1, boost::is_convertible()); + test_comparisons(n3, n1, boost::is_convertible()); + test_comparisons(n2, n1, boost::is_convertible()); + test_comparisons(n3, n3, boost::is_convertible()); // Default construct: - BOOST_TEST(Real(n1) == n1); - BOOST_TEST(Real(n2) == n2); - BOOST_TEST(Real(n3) == n3); - BOOST_TEST(Real(n4) == n4); + BOOST_TEST(Real(n1) == static_cast(n1)); + BOOST_TEST(Real(n2) == static_cast(n2)); + BOOST_TEST(Real(n3) == static_cast(n3)); + BOOST_TEST(Real(n4) == static_cast(n4)); BOOST_TEST(Real(n1).template convert_to() == n1); BOOST_TEST(Real(n2).template convert_to() == n2); BOOST_TEST(Real(n3).template convert_to() == n3); @@ -801,10 +839,10 @@ void test_mixed() BOOST_TEST(static_cast(Real(n3)) == n3); BOOST_TEST(static_cast(Real(n4)) == n4); #endif - BOOST_TEST(n1 == Real(n1)); - BOOST_TEST(n2 == Real(n2)); - BOOST_TEST(n3 == Real(n3)); - BOOST_TEST(n4 == Real(n4)); + BOOST_TEST(static_cast(n1) == Real(n1)); + BOOST_TEST(static_cast(n2) == Real(n2)); + BOOST_TEST(static_cast(n3) == Real(n3)); + BOOST_TEST(static_cast(n4) == Real(n4)); #if defined(TEST_MPFR) || defined(TEST_MPFR_50) Num tol = 10 * std::numeric_limits::epsilon(); #else @@ -820,50 +858,50 @@ void test_mixed() BOOST_TEST_CLOSE(n4, boost::lexical_cast(Real(n4).str(0, f)), 0); // Assignment: Real r(0); - BOOST_TEST(r != n1); - r = n1; - BOOST_TEST(r == n1); - r = n2; - BOOST_TEST(r == n2); - r = n3; - BOOST_TEST(r == n3); - r = n4; - BOOST_TEST(r == n4); + BOOST_TEST(r != static_cast(n1)); + r = static_cast(n1); + BOOST_TEST(r == static_cast(n1)); + r = static_cast(n2); + BOOST_TEST(r == static_cast(n2)); + r = static_cast(n3); + BOOST_TEST(r == static_cast(n3)); + r = static_cast(n4); + BOOST_TEST(r == static_cast(n4)); // Addition: - r = n2; - BOOST_TEST(r + n4 == n2 + n4); - BOOST_TEST(Real(r + n4) == n2 + n4); - r += n4; - BOOST_TEST(r == n2 + n4); + r = static_cast(n2); + BOOST_TEST(r + static_cast(n4) == static_cast(n2 + n4)); + BOOST_TEST(Real(r + static_cast(n4)) == static_cast(n2 + n4)); + r += static_cast(n4); + BOOST_TEST(r == static_cast(n2 + n4)); // subtraction: - r = n4; - BOOST_TEST(r - n5 == n4 - n5); - BOOST_TEST(Real(r - n5) == n4 - n5); - r -= n5; - BOOST_TEST(r == n4 - n5); + r = static_cast(n4); + BOOST_TEST(r - static_cast(n5) == static_cast(n4 - n5)); + BOOST_TEST(Real(r - static_cast(n5)) == static_cast(n4 - n5)); + r -= static_cast(n5); + BOOST_TEST(r == static_cast(n4 - n5)); // Multiplication: - r = n2; - BOOST_TEST(r * n4 == n2 * n4); - BOOST_TEST(Real(r * n4) == n2 * n4); - r *= n4; - BOOST_TEST(r == n2 * n4); + r = static_cast(n2); + BOOST_TEST(r * static_cast(n4) == static_cast(n2 * n4)); + BOOST_TEST(Real(r * static_cast(n4)) == static_cast(n2 * n4)); + r *= static_cast(n4); + BOOST_TEST(r == static_cast(n2 * n4)); // Division: - r = n1; - BOOST_TEST(r / n5 == n1 / n5); - BOOST_TEST(Real(r / n5) == n1 / n5); - r /= n5; - BOOST_TEST(r == n1 / n5); + r = static_cast(n1); + BOOST_TEST(r / static_cast(n5) == static_cast(n1 / n5)); + BOOST_TEST(Real(r / static_cast(n5)) == static_cast(n1 / n5)); + r /= static_cast(n5); + BOOST_TEST(r == static_cast(n1 / n5)); // // special cases for full coverage: // - r = n5 + Real(n4); - BOOST_TEST(r == n4 + n5); - r = n4 - Real(n5); - BOOST_TEST(r == n4 - n5); - r = n4 * Real(n5); - BOOST_TEST(r == n4 * n5); - r = (4 * n4) / Real(4); - BOOST_TEST(r == n4); + r = static_cast(n5) + Real(n4); + BOOST_TEST(r == static_cast(n4 + n5)); + r = static_cast(n4) - Real(n5); + BOOST_TEST(r == static_cast(n4 - n5)); + r = static_cast(n4) * Real(n5); + BOOST_TEST(r == static_cast(n4 * n5)); + r = static_cast(4 * n4) / Real(4); + BOOST_TEST(r == static_cast(n4)); test_negative_mixed(boost::mpl::bool_::is_signed>()); } diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 271172fe..2b56e062 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -53,12 +53,12 @@ void test() // static const boost::array, 6> exact_data = {{ - {{ 0.5, "0.523598775598298873077107230546583814032861566562517636829157432051302734381034833104672470890352844663691347752213717775" }}, - {{ 0.25, "0.252680255142078653485657436993710972252193733096838193633923778740575060481021222411748742228014601605092602909414066566" }}, - {{0.75, "0.848062078981481008052944338998418080073366213263112642860718163570200821228474234349189801731957230300995227265307531834" }}, - {{std::ldexp(1.0, -20), "9.53674316406394560289664793089102218648031077292419572854816420395098616062014311172490017625353237219958438022056661501e-7" }}, - {{ 1 - std::ldexp(1.0, -20), "1.56941525875313420204921285316218397515809899320201864334535204504240776023375739189119474528488143494473216475057072728" }}, - {{ 1, "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064" }}, + {{ 0.5, static_cast("0.523598775598298873077107230546583814032861566562517636829157432051302734381034833104672470890352844663691347752213717775") }}, + {{ 0.25, static_cast("0.252680255142078653485657436993710972252193733096838193633923778740575060481021222411748742228014601605092602909414066566") }}, + {{0.75, static_cast("0.848062078981481008052944338998418080073366213263112642860718163570200821228474234349189801731957230300995227265307531834") }}, + {{std::ldexp(1.0, -20), static_cast("9.53674316406394560289664793089102218648031077292419572854816420395098616062014311172490017625353237219958438022056661501e-7") }}, + {{ 1 - std::ldexp(1.0, -20), static_cast("1.56941525875313420204921285316218397515809899320201864334535204504240776023375739189119474528488143494473216475057072728") }}, + {{ 1, static_cast("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064") }}, }}; unsigned max_err = 0; for(unsigned k = 0; k < exact_data.size(); k++) diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 1b28a395..5e139fdf 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -123,7 +123,7 @@ void test() "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671058533891074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803630124570637195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138", }}; - T arg = "1e-100"; + T arg = static_cast("1e-100"); unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) @@ -149,7 +149,7 @@ void test() // // And again, but test all the phases of atan2: // - arg = "1e-100"; + arg = static_cast("1e-100"); unsigned err; for(unsigned k = 0; k < data.size(); k++) { diff --git a/test/test_constants.cpp b/test/test_constants.cpp index 4e72ca11..770b8721 100644 --- a/test/test_constants.cpp +++ b/test/test_constants.cpp @@ -172,13 +172,13 @@ void test() typedef typename T::backend_type backend_type; T num, expect; num.backend() = boost::multiprecision::default_ops::get_constant_pi(); - expect = pi; + expect = static_cast(pi); BOOST_CHECK_CLOSE_FRACTION(num, expect, std::numeric_limits::epsilon() * (is_mpfr(num) ? 1200 : 2)); num.backend() = boost::multiprecision::default_ops::get_constant_ln2(); - expect = ln2; + expect = static_cast(ln2); BOOST_CHECK_CLOSE_FRACTION(num, expect, std::numeric_limits::epsilon() * (is_mpfr(num) ? 30 : 1)); num.backend() = boost::multiprecision::default_ops::get_constant_e(); - expect = e; + expect = static_cast(e); BOOST_CHECK_CLOSE_FRACTION(num, expect, std::numeric_limits::epsilon() * (is_mpfr(num) ? 2 : 1)); } diff --git a/test/test_cos.cpp b/test/test_cos.cpp index 36488b1b..e429d06b 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -155,7 +155,7 @@ void test() boost::uintmax_t max_err = 0; for(unsigned k = 0; k < data.size(); k++) { - static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + static const T euler_gamma = static_cast("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"); T val = cos(euler_gamma * ((100 * k) - 5000)); T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); @@ -225,12 +225,12 @@ void test() "0.09655529472977379853549858833033074225823562054271495313739665642376685099661084023094270272485976247900824483810911634635819558334630910267353320029261330296977292720266655308513559530586843550229208517388789783011887450865488554143475302590353915732321663418057567573042594801866258948380684000769091353165879953111046260532796891917772727185993569684246844052518121013717183610828519193371796413317", }}; - T half_pi = "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"; + T half_pi = static_cast("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"); max_err = 0; for(unsigned k = 0; k < near_one.size(); k++) { - static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + static const T euler_gamma = static_cast("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"); T val = cos(half_pi - (euler_gamma + k) / 523); T e = relative_error(val, T(near_one[k])); unsigned err = e.template convert_to(); @@ -251,14 +251,14 @@ void test() // static const boost::array, 8> exact_data = {{ - {{ 0.5, "0.877582561890372716116281582603829651991645197109744052997610868315950763274213947405794184084682258355478400593109053993" }}, - {{ 0.25, "0.968912421710644784144595449494189199804134190287442831148128124288942561184523327264655202799685025510352709626116202617" }}, - {{0.75, "0.731688868873820886311838753000084543840541276050772482507683220220750082501569499540967562610201174960122884908227300721" }}, - {{std::ldexp(1.0, -20), "0.99999999999954525264911357034690133684385823577463126432241468890539365027135494672267164697779879113636143901797362388" }}, - {{ 2, "-0.416146836547142386997568229500762189766000771075544890755149973781964936124079169074531777860169140367366791365215728559" }}, - {{ 5, "0.283662185463226264466639171513557308334422592252215944930359066586151456767382702286176981668344573238827368717546699737" }}, - {{ 10, "-0.839071529076452452258863947824064834519930165133168546835953731048792586866270768400933712760422138927451054405350243624" }}, - {{ 8.5, "-0.60201190268482361534842652295699870029606776360435523539636606145572515876770619546025351418378467287262574566665150299" }} + {{ 0.5, static_cast("0.877582561890372716116281582603829651991645197109744052997610868315950763274213947405794184084682258355478400593109053993") }}, + {{ 0.25, static_cast("0.968912421710644784144595449494189199804134190287442831148128124288942561184523327264655202799685025510352709626116202617") }}, + {{0.75, static_cast("0.731688868873820886311838753000084543840541276050772482507683220220750082501569499540967562610201174960122884908227300721") }}, + {{std::ldexp(1.0, -20), static_cast("0.99999999999954525264911357034690133684385823577463126432241468890539365027135494672267164697779879113636143901797362388") }}, + {{ 2, static_cast("-0.416146836547142386997568229500762189766000771075544890755149973781964936124079169074531777860169140367366791365215728559") }}, + {{ 5, static_cast("0.283662185463226264466639171513557308334422592252215944930359066586151456767382702286176981668344573238827368717546699737") }}, + {{ 10, static_cast("-0.839071529076452452258863947824064834519930165133168546835953731048792586866270768400933712760422138927451054405350243624") }}, + {{ 8.5, static_cast("-0.60201190268482361534842652295699870029606776360435523539636606145572515876770619546025351418378467287262574566665150299") }} }}; max_err = 0; for(unsigned k = 0; k < exact_data.size(); k++) diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index 46900c40..b2c82e08 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -102,7 +102,7 @@ void test() "4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110", }}; - T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + T eg = static_cast("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"); unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index 9efa78a3..1ba8f9ec 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -72,10 +72,10 @@ void test() int si = d.convert_to(); unsigned ui = si; - test_type a1 = a.str(); - test_type b1 = b.str(); - test_type c1 = c.str(); - test_type d1 = d.str(); + test_type a1 = static_cast(a.str()); + test_type b1 = static_cast(b.str()); + test_type c1 = static_cast(c.str()); + test_type d1 = static_cast(d.str()); BOOST_CHECK_EQUAL(a.str(), a1.str()); BOOST_CHECK_EQUAL(b.str(), b1.str()); diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 4167d4c7..424601dc 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -102,7 +102,7 @@ void test() "6.83336127500041943234365059231968669406267422759442985746460610830503287734479988530512309065240678799786759250323660701e3848", }}; - T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; + T pi = static_cast("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"); unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) @@ -127,16 +127,16 @@ void test() static const boost::array, 10> exact_data = {{ - {{ std::ldexp(1.0, -50), "1.00000000000000088817841970012562676935794497867573073630970950828771105957980924149923657574337470594698012676100224953" }}, - {{ std::ldexp(1.0, -20), "1.00000095367477115374544678824955687428365188553281789775169686343569285229334215539516690752571791280462887427635269562" }}, - {{ std::ldexp(1.0, -10), "1.00097703949241653524284529261160650646585162918174419940186408264916250428896869173656853690882467186075613761065459261" }}, - {{ 0.25, "1.28402541668774148407342056806243645833628086528146308921750729687220776586723800275330641943955356890166283174967968731" }}, - {{ 0.5, "1.64872127070012814684865078781416357165377610071014801157507931164066102119421560863277652005636664300286663775630779700" }}, - {{ 0.75, "2.11700001661267466854536981983709561013449158470240342177913303081098453336401282000279156026661579821888590471901551426" }}, - {{ 10, "22026.4657948067165169579006452842443663535126185567810742354263552252028185707925751991209681645258954515555010924578367" }}, - {{ 10.5, "36315.5026742466377389120269013166179689315579671275857607480190550842856628099187749764427758174866310742771977376827512" }}, - {{ 25, "7.20048993373858725241613514661261579152235338133952787362213864472320593107782569745000325654258093194727871848859163684e10" }}, - {{ 31.25, "3.72994612957188849046766396046821396700589012875701157893019118883826370993674081486706667149871508642909416337810227575e13" }}, + {{ std::ldexp(1.0, -50), static_cast("1.00000000000000088817841970012562676935794497867573073630970950828771105957980924149923657574337470594698012676100224953") }}, + {{ std::ldexp(1.0, -20), static_cast("1.00000095367477115374544678824955687428365188553281789775169686343569285229334215539516690752571791280462887427635269562") }}, + {{ std::ldexp(1.0, -10), static_cast("1.00097703949241653524284529261160650646585162918174419940186408264916250428896869173656853690882467186075613761065459261") }}, + {{ 0.25, static_cast("1.28402541668774148407342056806243645833628086528146308921750729687220776586723800275330641943955356890166283174967968731") }}, + {{ 0.5, static_cast("1.64872127070012814684865078781416357165377610071014801157507931164066102119421560863277652005636664300286663775630779700") }}, + {{ 0.75, static_cast("2.11700001661267466854536981983709561013449158470240342177913303081098453336401282000279156026661579821888590471901551426") }}, + {{ 10, static_cast("22026.4657948067165169579006452842443663535126185567810742354263552252028185707925751991209681645258954515555010924578367") }}, + {{ 10.5, static_cast("36315.5026742466377389120269013166179689315579671275857607480190550842856628099187749764427758174866310742771977376827512") }}, + {{ 25, static_cast("7.20048993373858725241613514661261579152235338133952787362213864472320593107782569745000325654258093194727871848859163684e10") }}, + {{ 31.25, static_cast("3.72994612957188849046766396046821396700589012875701157893019118883826370993674081486706667149871508642909416337810227575e13") }}, }}; max_err = 0; diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 410b531a..d2973446 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -172,18 +172,18 @@ void test() BOOST_CHECK_EQUAL(val.str(), "-inf"); BOOST_CHECK_EQUAL(val.str(0, std::ios_base::showpos), "-inf"); - val = "inf"; + val = static_cast("inf"); BOOST_CHECK_EQUAL(val, std::numeric_limits::infinity()); - val = "+inf"; + val = static_cast("+inf"); BOOST_CHECK_EQUAL(val, std::numeric_limits::infinity()); - val = "-inf"; + val = static_cast("-inf"); BOOST_CHECK_EQUAL(val, -std::numeric_limits::infinity()); } if(std::numeric_limits::has_quiet_NaN) { T val = std::numeric_limits::quiet_NaN(); BOOST_CHECK_EQUAL(val.str(), "nan"); - val = "nan"; + val = static_cast("nan"); BOOST_CHECK(boost::math::isnan(val)); } } @@ -246,9 +246,9 @@ void do_round_trip(const T& val, std::ios_base::fmtflags f) #endif ss.flags(f); ss << val; - T new_val = ss.str(); + T new_val = static_cast(ss.str()); BOOST_CHECK_EQUAL(new_val, val); - new_val = val.str(0, f); + new_val = static_cast(val.str(0, f)); BOOST_CHECK_EQUAL(new_val, val); } diff --git a/test/test_generic_conv.cpp b/test/test_generic_conv.cpp index a552a3cd..6664f4e9 100644 --- a/test/test_generic_conv.cpp +++ b/test/test_generic_conv.cpp @@ -91,18 +91,18 @@ int main() dec_float_500 tol("1e-500"); #ifdef TEST_GMP mpf = df; - mpf2 = df.str(); + mpf2 = static_cast(df.str()); BOOST_CHECK_EQUAL(mpf, mpf2); df = mpf; - df2 = mpf.str(); + df2 = static_cast(mpf.str()); BOOST_CHECK(fabs((df - df2) / df) < tol); #endif #ifdef TEST_MPFR mpfr = df; - mpfr2 = df.str(); + mpfr2 = static_cast(df.str()); BOOST_CHECK_EQUAL(mpfr, mpfr2); df = mpfr; - df2 = mpfr.str(); + df2 = static_cast(mpfr.str()); BOOST_CHECK(fabs((df - df2) / df) < tol); #endif // @@ -124,12 +124,12 @@ int main() // #ifdef TEST_GMP mpq = c; - mpq_rational mpq2 = c.str(); + mpq_rational mpq2 = static_cast(c.str()); BOOST_CHECK_EQUAL(mpq, mpq2); #endif #ifdef TEST_TOMMATH tr = c; - tom_rational tr2 = c.str(); + tom_rational tr2 = static_cast(c.str()); BOOST_CHECK_EQUAL(tr, tr2); #endif // diff --git a/test/test_gmp_conversions.cpp b/test/test_gmp_conversions.cpp index fad3d97d..8b1b2ec0 100644 --- a/test/test_gmp_conversions.cpp +++ b/test/test_gmp_conversions.cpp @@ -101,13 +101,13 @@ int main() rat = 2; BOOST_TEST(mpz_int(rat) == 2); iz = 3; - iz = f0; + iz = static_cast(f0); BOOST_TEST(iz == 2); iz = 3; - iz = f50; + iz = static_cast(f50); BOOST_TEST(iz == 2); iz = 3; - iz = rat; + iz = static_cast(rat); BOOST_TEST(iz == 2); BOOST_TEST(mpq_rational(mpz) == 2); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 1f87a88c..b603fa88 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -66,9 +66,9 @@ void do_round_trip(const T& val, std::ios_base::fmtflags f) #endif ss.flags(f); ss << val; - T new_val = ss.str(); + T new_val = static_cast(ss.str()); BOOST_CHECK_EQUAL(new_val, val); - new_val = val.str(0, f); + new_val = static_cast(val.str(0, f)); BOOST_CHECK_EQUAL(new_val, val); } diff --git a/test/test_log.cpp b/test/test_log.cpp index 1d5f0342..6426e307 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -152,7 +152,7 @@ void test() "19.565410630120075532420489068555321524954362381908007338302983473268528473151341321768804731192210840056455228388636731122203200610869021021871133154865620432257415783302175345843898977949742849569372169004904667621738405749986270376895267386643049526766451459390277406632576412790748533372863644721976845168460840162066672290292749672668879524315410824251032084115058493720402881895485689493165441193", }}; - T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"; + T pi = static_cast("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609"); T tenth = 1; tenth /= 10; T logten = log(T(10)); diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index 8003d4f3..7b027cbf 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -9,9 +9,10 @@ # define _SCL_SECURE_NO_WARNINGS #endif -#if !defined(TEST_MPQ) && !defined(TEST_TOMMATH) +#if !defined(TEST_MPQ) && !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) # define TEST_MPQ # define TEST_TOMMATH +# define TEST_CPP_INT #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") @@ -28,6 +29,9 @@ #if defined(TEST_TOMMATH) #include #endif +#ifdef TEST_CPP_INT +#include +#endif #include #include @@ -71,9 +75,9 @@ void do_round_trip(const T& val, std::ios_base::fmtflags f, const boost::mpl::tr #endif ss.flags(f); ss << val; - T new_val = ss.str(); + T new_val = static_cast(ss.str()); BOOST_CHECK_EQUAL(new_val, val); - new_val = val.str(0, f); + new_val = static_cast(val.str(0, f)); BOOST_CHECK_EQUAL(new_val, val); } @@ -132,6 +136,10 @@ int main() #ifdef TEST_TOMMATH test_round_trip >(); test_round_trip(); +#endif +#ifdef TEST_CPP_INT + test_round_trip >(); + test_round_trip(); #endif return boost::report_errors(); } diff --git a/test/test_sin.cpp b/test/test_sin.cpp index fef86827..78d1b620 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -155,7 +155,7 @@ void test() boost::uintmax_t max_err = 0; for(unsigned k = 0; k < data.size(); k++) { - static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + static const T euler_gamma = static_cast("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"); T val = sin(euler_gamma * ((100 * k) - 5000)); T e = relative_error(val, T(data[k])); unsigned err = e.template convert_to(); @@ -228,7 +228,7 @@ void test() max_err = 0; for(unsigned k = 0; k < small_data.size(); k++) { - static const T euler_gamma = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + static const T euler_gamma = static_cast("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"); T val = sin((euler_gamma + k) / 53); T e = relative_error(val, T(small_data[k])); unsigned err = e.template convert_to(); @@ -252,15 +252,15 @@ void test() // static const boost::array, 9> exact_data = {{ - {{ 0.5, "0.479425538604203000273287935215571388081803367940600675188616613125535000287814832209631274684348269086132091084505717418" }}, - {{ 0.25, "0.247403959254522929596848704849389195893390980386965810676544830494398136043486821690984848527973792338327197752176516138" }}, - {{0.75, "0.681638760023334166733241952779893935338382394659229909213625262151100388887003782753145274849781911981438190343146876189" }}, - {{std::ldexp(1.0, -20), "9.53674316406105439710335272649306549801506698739838753888815787489707114648106832493113326022411646219016312547902694921e-7" }}, - {{ 2, "0.909297426825681695396019865911744842702254971447890268378973011530967301540783544620126688924959380309967896742399486261" }}, - {{ 5, "-0.958924274663138468893154406155993973352461543964601778131672454235102558086559603076995955429532866596530638461663378937" }}, - {{ 10, "-0.544021110889369813404747661851377281683643012916223891574184012616757209640493425707075673894983216158293824238262832286" }}, + {{ 0.5, static_cast("0.479425538604203000273287935215571388081803367940600675188616613125535000287814832209631274684348269086132091084505717418") }}, + {{ 0.25, static_cast("0.247403959254522929596848704849389195893390980386965810676544830494398136043486821690984848527973792338327197752176516138") }}, + {{0.75, static_cast("0.681638760023334166733241952779893935338382394659229909213625262151100388887003782753145274849781911981438190343146876189") }}, + {{std::ldexp(1.0, -20), static_cast("9.53674316406105439710335272649306549801506698739838753888815787489707114648106832493113326022411646219016312547902694921e-7") }}, + {{ 2, static_cast("0.909297426825681695396019865911744842702254971447890268378973011530967301540783544620126688924959380309967896742399486261") }}, + {{ 5, static_cast("-0.958924274663138468893154406155993973352461543964601778131672454235102558086559603076995955429532866596530638461663378937") }}, + {{ 10, static_cast("-0.544021110889369813404747661851377281683643012916223891574184012616757209640493425707075673894983216158293824238262832286") }}, {{ 0, 0 }}, - {{ "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064", 1 }} + {{ static_cast("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"), 1 }} }}; max_err = 0; for(unsigned k = 0; k < exact_data.size(); k++) diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index 2a18c8b5..ae8f11d0 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -102,7 +102,7 @@ void test() "4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110", }}; - T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + T eg = static_cast("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"); unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index 57b84206..c59be223 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -152,7 +152,7 @@ void test() "17.7245385090551602729816748334114518279754945612238712821380778985291128459103218137495065673854466541622682362428257066623615286572442260252509370960278706846203769865310512284992517302895082622893209537926796280017463901535147972051670019018523401858544697449491264031392177552590621640541933250090639840761373347747515343366798978936585183640879545116516173876005906739343179133280985484624818490205465485219561325156164746751504273876105610799612710721006037204448367236529661370809432349883166842421384570960912042042778577806869476657000521830568512541339663694465418151071669388332194292935706226886522442054214994804992075648639887483850593064021821402928581123306497894520362114907896228738940324597819851313487126651250629326004465638210967502681249693059542046156076195221739152507020779275809905433290066222306761446966124818874306997883520506146444385418530797357425717918563595974995995226384924220388910396640644729397284134504300214056423343303926175613417633632001703765416347632066927654181283576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136", }}; - T pi = "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152"; + T pi = static_cast("3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152"); unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index a76fbe48..623585ec 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -102,7 +102,7 @@ void test() "1.", }}; - T eg = "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"; + T eg = static_cast("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1"); unsigned max_err = 0; for(unsigned k = 0; k < data.size(); k++) From 1f35bfe581f8754fe54ae4f3f9072614196118ae Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 19 Aug 2012 16:39:24 +0000 Subject: [PATCH 219/256] Make some gmp constructors explicit. Add tests to verify that explicit conversions fail. Fix failures inside number.hpp. [SVN r80083] --- include/boost/multiprecision/gmp.hpp | 80 +++++++++++++++++++------ include/boost/multiprecision/number.hpp | 55 ++++++++++------- test/Jamfile.v2 | 5 +- test/compile_fail/conv_fail_45.cpp | 24 ++++++++ test/compile_fail/conv_fail_46.cpp | 23 +++++++ test/compile_fail/conv_fail_47.cpp | 24 ++++++++ test/compile_fail/conv_fail_48.cpp | 23 +++++++ test/test_gmp_conversions.cpp | 23 ++++++- 8 files changed, 213 insertions(+), 44 deletions(-) create mode 100644 test/compile_fail/conv_fail_45.cpp create mode 100644 test/compile_fail/conv_fail_46.cpp create mode 100644 test/compile_fail/conv_fail_47.cpp create mode 100644 test/compile_fail/conv_fail_48.cpp diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index cfdea145..ca328ab8 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -369,20 +369,22 @@ struct gmp_float : public detail::gmp_float_imp } gmp_float(const gmp_float& o) : detail::gmp_float_imp(o) {} template - gmp_float(const gmp_float& o); + gmp_float(const gmp_float& o, typename enable_if_c::type* = 0); + template + explicit gmp_float(const gmp_float& o, typename disable_if_c::type* = 0); gmp_float(const gmp_int& o); gmp_float(const gmp_rational& o); - gmp_float(mpf_t val) + gmp_float(const mpf_t val) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set(this->m_data, val); } - gmp_float(mpz_t val) + gmp_float(const mpz_t val) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set_z(this->m_data, val); } - gmp_float(mpq_t val) + gmp_float(const mpq_t val) { mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); mpf_set_q(this->m_data, val); @@ -442,17 +444,17 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); } - gmp_float(mpf_t val) + gmp_float(const mpf_t val) { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set(this->m_data, val); } - gmp_float(mpz_t val) + gmp_float(const mpz_t val) { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set_z(this->m_data, val); } - gmp_float(mpq_t val) + gmp_float(const mpq_t val) { mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); mpf_set_q(this->m_data, val); @@ -461,7 +463,7 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> template gmp_float(const gmp_float& o) { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, mpf_get_prec(o.data())); mpf_set(this->m_data, o.data()); } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -491,7 +493,13 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> gmp_float& operator=(const gmp_float& o) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + { + mpf_init2(this->m_data, mpf_get_prec(o.data())); + } + else + { + mpf_set_prec(this->m_data, mpf_get_prec(o.data())); + } mpf_set(this->m_data, o.data()); return *this; } @@ -534,11 +542,11 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> } unsigned precision()const BOOST_NOEXCEPT { - return mpf_get_prec(this->m_data) * 301L / 1000 - 1; + return (mpf_get_prec(this->m_data) * 301L) / 1000 - 1; } void precision(unsigned digits10) BOOST_NOEXCEPT { - mpf_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); + mpf_set_prec(this->m_data, ((digits10 + 1) * 1000L) / 301); } }; @@ -977,27 +985,27 @@ struct gmp_int o.m_data[0]._mp_d = 0; } #endif - gmp_int(mpf_t val) + explicit gmp_int(const mpf_t val) { mpz_init(this->m_data); mpz_set_f(this->m_data, val); } - gmp_int(mpz_t val) + gmp_int(const mpz_t val) { mpz_init_set(this->m_data, val); } - gmp_int(mpq_t val) + explicit gmp_int(const mpq_t val) { mpz_init(this->m_data); mpz_set_q(this->m_data, val); } template - gmp_int(const gmp_float& o) + explicit gmp_int(const gmp_float& o) { mpz_init(this->m_data); mpz_set_f(this->m_data, o.data()); } - gmp_int(const gmp_rational& o); + explicit gmp_int(const gmp_rational& o); gmp_int& operator = (const gmp_int& o) { if(o.m_data[0]._mp_d) @@ -1659,12 +1667,12 @@ struct gmp_rational o.m_data[0]._mp_den._mp_d = 0; } #endif - gmp_rational(mpq_t o) + gmp_rational(const mpq_t o) { mpq_init(m_data); mpq_set(m_data, o); } - gmp_rational(mpz_t o) + gmp_rational(const mpz_t o) { mpq_init(m_data); mpq_set_z(m_data, o); @@ -1998,7 +2006,14 @@ inline void assign_components(gmp_rational& result, gmp_int const& v1, gmp_int c // template template -inline gmp_float::gmp_float(const gmp_float& o) +inline gmp_float::gmp_float(const gmp_float& o, typename enable_if_c::type*) +{ + mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_set(this->m_data, o.data()); +} +template +template +inline gmp_float::gmp_float(const gmp_float& o, typename disable_if_c::type*) { mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); mpf_set(this->m_data, o.data()); @@ -2089,6 +2104,33 @@ struct component_type > typedef number type; }; +#ifdef BOOST_NO_SFINAE_EXPR + +namespace detail{ + +template<> +struct is_explicitly_convertible::type, gmp_int> : public mpl::true_ {}; +template<> +struct is_explicitly_convertible::type, gmp_int> : public mpl::true_ {}; +template +struct is_explicitly_convertible, gmp_int> : public mpl::true_ {}; +template<> +struct is_explicitly_convertible : public mpl::true_ {}; +template +struct is_explicitly_convertible, gmp_float > : public mpl::true_ {}; + +} + +#endif + +template<> +struct number_category::type> : public mpl::int_{}; +template<> +struct number_category::type> : public mpl::int_{}; +template<> +struct number_category >::type> : public mpl::int_{}; + + typedef number > mpf_float_50; typedef number > mpf_float_100; typedef number > mpf_float_500; diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 40af6746..99ca7b19 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -43,7 +43,7 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR number() BOOST_NOEXCEPT_IF(noexcept(Backend())) {} BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(e.m_backend){} template - BOOST_FORCEINLINE number(V v, typename enable_if_c< + BOOST_FORCEINLINE number(const V& v, typename enable_if_c< (boost::is_arithmetic::value || is_same::value || is_convertible::value) && !is_convertible::type, Backend>::value && !detail::is_restricted_conversion::type, Backend>::value @@ -52,28 +52,29 @@ public: m_backend = canonical_value(v); } template - BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if_c< - (boost::is_arithmetic::value || is_same::value || is_convertible::value) - && is_convertible::type, Backend>::value + BOOST_FORCEINLINE BOOST_CONSTEXPR number(const V& v, typename enable_if_c< + /*(boost::is_arithmetic::value || is_same::value || is_convertible::value) + &&*/ is_convertible::type, Backend>::value && !detail::is_restricted_conversion::type, Backend>::value >::type* = 0) : m_backend(canonical_value(v)) {} BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& e, unsigned digits10) : m_backend(e.m_backend, digits10){} template - explicit BOOST_FORCEINLINE number(V v, typename enable_if_c< + explicit BOOST_FORCEINLINE number(const V& v, typename enable_if_c< (boost::is_arithmetic::value || is_same::value || is_convertible::value) - && !is_convertible::type, Backend>::value + && !detail::is_explicitly_convertible::type, Backend>::value && detail::is_restricted_conversion::type, Backend>::value >::type* = 0) { m_backend = canonical_value(v); } template - explicit BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if_c< - (boost::is_arithmetic::value || is_same::value || is_convertible::value) - && is_convertible::type, Backend>::value - && detail::is_restricted_conversion::type, Backend>::value + explicit BOOST_FORCEINLINE BOOST_CONSTEXPR number(const V& v, typename enable_if_c< + /*(boost::is_arithmetic::value || is_same::value || is_convertible::value) + &&*/ detail::is_explicitly_convertible::type, Backend>::value + && (detail::is_restricted_conversion::type, Backend>::value + || !is_convertible::type, Backend>::value) >::type* = 0) : m_backend(canonical_value(v)) {} /* @@ -92,12 +93,16 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} template - BOOST_FORCEINLINE number(const number& val, typename enable_if_c<(boost::is_convertible::value && !detail::is_restricted_conversion::value)>::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) - { - m_backend = val.backend(); - } + BOOST_FORCEINLINE number(const number& val, + typename enable_if_c<(boost::is_convertible::value && !detail::is_restricted_conversion::value)>::type* = 0) + BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) + : m_backend(val.backend()) {} + template - number(const number& val, typename enable_if_c<(!boost::is_convertible::value && !detail::is_restricted_conversion::value)>::type* = 0) + number(const number& val, typename enable_if_c< + (!detail::is_explicitly_convertible::value + && !detail::is_restricted_conversion::value) + >::type* = 0) { // // Attempt a generic interconvertion: @@ -105,12 +110,17 @@ public: detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); } template - explicit BOOST_FORCEINLINE number(const number& val, typename enable_if_c<(boost::is_convertible::value && detail::is_restricted_conversion::value)>::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) - { - m_backend = val.backend(); - } + explicit BOOST_FORCEINLINE number(const number& val, typename enable_if_c< + (detail::is_explicitly_convertible::value + && (detail::is_restricted_conversion::value || !boost::is_convertible::value)) + >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) + : m_backend(val.backend()) {} + template - explicit number(const number& val, typename enable_if_c<(!boost::is_convertible::value && detail::is_restricted_conversion::value)>::type* = 0) + explicit number(const number& val, typename enable_if_c< + (!detail::is_explicitly_convertible::value + && detail::is_restricted_conversion::value) + >::type* = 0) { // // Attempt a generic interconvertion: @@ -130,11 +140,12 @@ public: assign_components(m_backend, v1.backend(), v2.backend()); } + /* template BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(v){} - + */ template typename enable_if::result_type, self_type>, number&>::type operator=(const detail::expression& e) { @@ -201,7 +212,7 @@ public: */ template - typename disable_if, number& >::type + typename disable_if, number& >::type operator=(const number& v) { // diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 0acca17a..994c4899 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -802,7 +802,10 @@ if $(enable-specfun) for local source in [ glob compile_fail/*.cpp ] { - compile-fail $(source) ; + compile-fail $(source) + : + [ check-target-builds ../config//has_gmp : TEST_GMP : ] + ; } if ! $(disable-concepts) diff --git a/test/compile_fail/conv_fail_45.cpp b/test/compile_fail/conv_fail_45.cpp new file mode 100644 index 00000000..5e2f813a --- /dev/null +++ b/test/compile_fail/conv_fail_45.cpp @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef TEST_GMP + +#include + +using namespace boost::multiprecision; + +void foo(mpz_int i); + +int main() +{ + mpf_t f + foo(f); +} + +#else + +#error "Nothing to test without GMP!" + +#endif diff --git a/test/compile_fail/conv_fail_46.cpp b/test/compile_fail/conv_fail_46.cpp new file mode 100644 index 00000000..11530eb1 --- /dev/null +++ b/test/compile_fail/conv_fail_46.cpp @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef TEST_GMP + +#include + +using namespace boost::multiprecision; + +int main() +{ + mpf_t f; + mpz_int i; + i = f; +} + +#else + +#error "Nothing to test without GMP!" + +#endif diff --git a/test/compile_fail/conv_fail_47.cpp b/test/compile_fail/conv_fail_47.cpp new file mode 100644 index 00000000..b385e988 --- /dev/null +++ b/test/compile_fail/conv_fail_47.cpp @@ -0,0 +1,24 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef TEST_GMP + +#include + +using namespace boost::multiprecision; + +void foo(mpf_float_50); + +int main() +{ + mpf_float_100 f(2); + foo(f); +} + +#else + +#error "Nothing to test without GMP!" + +#endif diff --git a/test/compile_fail/conv_fail_48.cpp b/test/compile_fail/conv_fail_48.cpp new file mode 100644 index 00000000..66828ca3 --- /dev/null +++ b/test/compile_fail/conv_fail_48.cpp @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef TEST_GMP + +#include + +using namespace boost::multiprecision; + +int main() +{ + mpf_float_100 f(2); + mpf_float_50 f2; + f2 = f; +} + +#else + +#error "Nothing to test without GMP!" + +#endif diff --git a/test/test_gmp_conversions.cpp b/test/test_gmp_conversions.cpp index 8b1b2ec0..1b724d80 100644 --- a/test/test_gmp_conversions.cpp +++ b/test/test_gmp_conversions.cpp @@ -86,16 +86,17 @@ int main() BOOST_TEST(mpz_int(mpz) == 2); BOOST_TEST(mpz_int(mpq) == 2); iz = 3; - iz = mpf; + iz = mpz_int(mpf); // explicit conversion only BOOST_TEST(iz == 2); iz = 3; iz = mpz; BOOST_TEST(iz == 2); iz = 4; - iz = mpq; + iz = mpz_int(mpq); // explicit conversion only BOOST_TEST(iz == 2); f0 = 2; f50 = 2; + BOOST_TEST(mpz_int(f0) == 2); BOOST_TEST(mpz_int(f50) == 2); rat = 2; @@ -128,6 +129,24 @@ int main() iz = denominator(rat); BOOST_TEST(iz == 1); + // + // Conversions involving precision only, + // note that mpf_t precisions are only approximate: + // + mpf_float::default_precision(30); + f50 = 2; + mpf_float_100 f100(3); + mpf_float f0a(4); + mpf_float f0b(f100); + BOOST_TEST(f0a.precision() >= 30); + BOOST_TEST(f0b.precision() >= 100); + f0a = f100; + BOOST_TEST(f0a == 3); + BOOST_TEST(f0a.precision() >= 100); + + f100 = f50; + BOOST_TEST(f100 == 2); + return boost::report_errors(); } From af9e0c2fe7e0297f3a79f8df2918cc050edfd2ca Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 21 Aug 2012 14:42:15 +0000 Subject: [PATCH 220/256] Add more explicit constructors and tests for them. Centralise digits10 to digits2 conversions. [SVN r80112] --- .../boost/multiprecision/cpp_dec_float.hpp | 28 +++- include/boost/multiprecision/cpp_int.hpp | 76 +++++++++++ .../boost/multiprecision/detail/digits.hpp | 23 ++++ include/boost/multiprecision/gmp.hpp | 79 ++++++------ include/boost/multiprecision/mpfr.hpp | 121 +++++++++++------- include/boost/multiprecision/number.hpp | 22 +--- test/Jamfile.v2 | 4 +- .../{conv_fail_1.cpp => conv_fail_01.cpp} | 0 .../{conv_fail_2.cpp => conv_fail_02.cpp} | 0 .../{conv_fail_3.cpp => conv_fail_03.cpp} | 0 .../{conv_fail_4.cpp => conv_fail_04.cpp} | 0 .../{conv_fail_5.cpp => conv_fail_05.cpp} | 0 .../{conv_fail_6.cpp => conv_fail_06.cpp} | 0 .../{conv_fail_7.cpp => conv_fail_07.cpp} | 0 .../{conv_fail_8.cpp => conv_fail_08.cpp} | 0 .../{conv_fail_9.cpp => conv_fail_09.cpp} | 0 test/compile_fail/conv_fail_49.cpp | 23 ++++ test/compile_fail/conv_fail_50.cpp | 22 ++++ test/compile_fail/conv_fail_51.cpp | 15 +++ test/compile_fail/conv_fail_52.cpp | 16 +++ test/compile_fail/conv_fail_53.cpp | 15 +++ test/compile_fail/conv_fail_54.cpp | 16 +++ test/compile_fail/conv_fail_55.cpp | 16 +++ test/compile_fail/conv_fail_56.cpp | 15 +++ test/compile_fail/conv_fail_57.cpp | 15 +++ test/compile_fail/conv_fail_58.cpp | 16 +++ test/math/test_bessel_j.cpp | 2 +- test/math/test_bessel_y.cpp | 2 +- test/math/test_erf.cpp | 2 +- test/math/test_gamma.cpp | 2 +- test/math/test_legendre.cpp | 2 +- test/test_cos.cpp | 2 +- test/test_cpp_dec_float_conv.cpp | 42 ++++++ test/test_cpp_int.cpp | 6 +- test/test_cpp_int_conv.cpp | 55 ++++++++ test/test_generic_conv.cpp | 32 ++--- test/test_mpfr_conversions.cpp | 18 +++ 37 files changed, 558 insertions(+), 129 deletions(-) create mode 100644 include/boost/multiprecision/detail/digits.hpp rename test/compile_fail/{conv_fail_1.cpp => conv_fail_01.cpp} (100%) rename test/compile_fail/{conv_fail_2.cpp => conv_fail_02.cpp} (100%) rename test/compile_fail/{conv_fail_3.cpp => conv_fail_03.cpp} (100%) rename test/compile_fail/{conv_fail_4.cpp => conv_fail_04.cpp} (100%) rename test/compile_fail/{conv_fail_5.cpp => conv_fail_05.cpp} (100%) rename test/compile_fail/{conv_fail_6.cpp => conv_fail_06.cpp} (100%) rename test/compile_fail/{conv_fail_7.cpp => conv_fail_07.cpp} (100%) rename test/compile_fail/{conv_fail_8.cpp => conv_fail_08.cpp} (100%) rename test/compile_fail/{conv_fail_9.cpp => conv_fail_09.cpp} (100%) create mode 100644 test/compile_fail/conv_fail_49.cpp create mode 100644 test/compile_fail/conv_fail_50.cpp create mode 100644 test/compile_fail/conv_fail_51.cpp create mode 100644 test/compile_fail/conv_fail_52.cpp create mode 100644 test/compile_fail/conv_fail_53.cpp create mode 100644 test/compile_fail/conv_fail_54.cpp create mode 100644 test/compile_fail/conv_fail_55.cpp create mode 100644 test/compile_fail/conv_fail_56.cpp create mode 100644 test/compile_fail/conv_fail_57.cpp create mode 100644 test/compile_fail/conv_fail_58.cpp create mode 100644 test/test_cpp_dec_float_conv.cpp create mode 100644 test/test_cpp_int_conv.cpp diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 7232fed8..bd70f8cd 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -192,15 +192,25 @@ public: prec_elem(f.prec_elem) { } template - cpp_dec_float(const cpp_dec_float& f) BOOST_NOEXCEPT : + cpp_dec_float(const cpp_dec_float& f, typename enable_if_c::type* = 0) BOOST_NOEXCEPT : + data(), + exp (f.exp), + neg (f.neg), + fpclass (static_cast(static_cast(f.fpclass))), + prec_elem(cpp_dec_float_elem_number) + { + std::copy(f.data.begin(), f.data.begin() + f.prec_elem, data.begin()); + } + template + explicit cpp_dec_float(const cpp_dec_float& f, typename disable_if_c::type* = 0) BOOST_NOEXCEPT : + data(), exp (f.exp), neg (f.neg), fpclass (static_cast(static_cast(f.fpclass))), prec_elem(cpp_dec_float_elem_number) { // TODO: this doesn't round! - std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); - precision((std::min)(f.prec_elem, prec_elem)); + std::copy(f.data.begin(), f.data.begin() + prec_elem, data.begin()); } template @@ -2855,6 +2865,18 @@ using boost::multiprecision::backends::cpp_dec_float; typedef number > cpp_dec_float_50; typedef number > cpp_dec_float_100; +#ifdef BOOST_NO_SFINAE_EXPR + +namespace detail{ + +template +struct is_explicitly_convertible, cpp_dec_float > : public mpl::true_ {}; + +} + +#endif + + }} namespace std diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 8e0a4574..baf1eb18 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -683,6 +683,10 @@ public: #ifndef BOOST_NO_RVALUE_REFERENCES BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} #endif + // + // These are templates, so that only args that are *exactly* the types specified are allowed, and conversions + // are not considered. Without this, conversions may be ambiguous. + // template BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT : base_type(i) {} @@ -697,6 +701,67 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT : base_type(i) {} #endif + + template + cpp_int_backend(const cpp_int_backend& other) + : base_type() + { + *this = static_cast< + typename detail::canonical< + typename cpp_int_backend::local_limb_type, + cpp_int_backend + >::type + >(*other.limbs()); + this->sign(other.sign()); + } + template + cpp_int_backend& operator=(const cpp_int_backend& other) + { + *this = static_cast< + typename detail::canonical< + typename cpp_int_backend::local_limb_type, + cpp_int_backend + >::type + >(*other.limbs()); + this->sign(other.sign()); + return *this; + } + + template + cpp_int_backend(const cpp_int_backend& other, + typename enable_if_c< + (Signed || !Signed2) + && (!is_void::value || (is_void::value && (MinBits >= MinBits2))) + >::type* = 0) + : base_type() + { + this->resize(other.size()); + std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs()); + this->sign(other.sign()); + } + + template + explicit cpp_int_backend(const cpp_int_backend& other, + typename disable_if_c< + (Signed || !Signed2) + && (!is_void::value || (is_void::value && (MinBits >= MinBits2))) + >::type* = 0) + : base_type() + { + this->resize(other.size()); + std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs()); + this->sign(other.sign()); + } + + template + cpp_int_backend& operator=(const cpp_int_backend& other) + { + this->resize(other.size()); + std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs()); + this->sign(other.sign()); + return *this; + } + BOOST_FORCEINLINE cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { this->assign(o); @@ -2881,6 +2946,17 @@ typedef number, false> int1024_t; #pragma warning(pop) #endif +#ifdef BOOST_NO_SFINAE_EXPR + +namespace detail{ + +template +struct is_explicitly_convertible, cpp_int_backend > : public mpl::true_ {}; + +} + +#endif + }} // namespaces #include diff --git a/include/boost/multiprecision/detail/digits.hpp b/include/boost/multiprecision/detail/digits.hpp new file mode 100644 index 00000000..8752f5b5 --- /dev/null +++ b/include/boost/multiprecision/detail/digits.hpp @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_DIGITS_HPP +#define BOOST_MP_DIGITS_HPP + +namespace boost{ namespace multiprecision{ namespace detail{ + +inline unsigned long digits10_2_2(unsigned long d10) +{ + return (d10 * 1000uL) / 301uL + ((d10 * 1000uL) % 301 ? 2u : 1u); +} + +inline unsigned long digits2_2_10(unsigned long d2) +{ + return (d2 * 301uL) / 1000uL; +} + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index ca328ab8..a0043ade 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -67,7 +68,7 @@ struct gmp_float_imp // to get the right value, but if it's then used in further calculations // things go badly wrong!! // - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); if(o.m_data[0]._mp_d) mpf_set(m_data, o.m_data); } @@ -81,7 +82,7 @@ struct gmp_float_imp gmp_float_imp& operator = (const gmp_float_imp& o) { if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); if(o.m_data[0]._mp_d) mpf_set(m_data, o.m_data); return *this; @@ -96,11 +97,11 @@ struct gmp_float_imp gmp_float_imp& operator = (unsigned long long i) { if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpf_t t; - mpf_init2(t, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(t, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpf_set_ui(m_data, 0); while(i) { @@ -118,7 +119,7 @@ struct gmp_float_imp { BOOST_MP_USING_ABS if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); bool neg = i < 0; *this = static_cast(abs(i)); if(neg) @@ -128,21 +129,21 @@ struct gmp_float_imp gmp_float_imp& operator = (unsigned long i) BOOST_NOEXCEPT { if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpf_set_ui(m_data, i); return *this; } gmp_float_imp& operator = (long i) BOOST_NOEXCEPT { if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpf_set_si(m_data, i); return *this; } gmp_float_imp& operator = (double d) BOOST_NOEXCEPT { if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpf_set_d(m_data, d); return *this; } @@ -153,7 +154,7 @@ struct gmp_float_imp using std::floor; if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); if (a == 0) { mpf_set_si(m_data, 0); @@ -198,7 +199,7 @@ struct gmp_float_imp gmp_float_imp& operator = (const char* s) { if(m_data[0]._mp_d == 0) - mpf_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); if(0 != mpf_set_str(m_data, s, 10)) BOOST_THROW_EXCEPTION(std::runtime_error(std::string("The string \"") + s + std::string("\"could not be interpreted as a valid floating point number."))); return *this; @@ -365,7 +366,7 @@ struct gmp_float : public detail::gmp_float_imp { gmp_float() { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); } gmp_float(const gmp_float& o) : detail::gmp_float_imp(o) {} template @@ -376,17 +377,17 @@ struct gmp_float : public detail::gmp_float_imp gmp_float(const gmp_rational& o); gmp_float(const mpf_t val) { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpf_set(this->m_data, val); } gmp_float(const mpz_t val) { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpf_set_z(this->m_data, val); } gmp_float(const mpq_t val) { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpf_set_q(this->m_data, val); } #ifndef BOOST_NO_RVALUE_REFERENCES @@ -411,21 +412,21 @@ struct gmp_float : public detail::gmp_float_imp gmp_float& operator=(const mpf_t val) BOOST_NOEXCEPT { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpf_set(this->m_data, val); return *this; } gmp_float& operator=(const mpz_t val) BOOST_NOEXCEPT { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpf_set_z(this->m_data, val); return *this; } gmp_float& operator=(const mpq_t val) BOOST_NOEXCEPT { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpf_set_q(this->m_data, val); return *this; } @@ -442,21 +443,21 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> { gmp_float() { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); } gmp_float(const mpf_t val) { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set(this->m_data, val); } gmp_float(const mpz_t val) { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set_z(this->m_data, val); } gmp_float(const mpq_t val) { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set_q(this->m_data, val); } gmp_float(const gmp_float& o) : detail::gmp_float_imp<0>(o) {} @@ -473,7 +474,7 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> gmp_float(const gmp_rational& o); gmp_float(const gmp_float& o, unsigned digits10) { - mpf_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpf_set(this->m_data, o.data()); } @@ -508,21 +509,21 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> gmp_float& operator=(const mpf_t val) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set(this->m_data, val); return *this; } gmp_float& operator=(const mpz_t val) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set_z(this->m_data, val); return *this; } gmp_float& operator=(const mpq_t val) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set_q(this->m_data, val); return *this; } @@ -542,11 +543,11 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> } unsigned precision()const BOOST_NOEXCEPT { - return (mpf_get_prec(this->m_data) * 301L) / 1000 - 1; + return multiprecision::detail::digits2_2_10(mpf_get_prec(this->m_data)); } void precision(unsigned digits10) BOOST_NOEXCEPT { - mpf_set_prec(this->m_data, ((digits10 + 1) * 1000L) / 301); + mpf_set_prec(this->m_data, multiprecision::detail::digits10_2_2(digits10)); } }; @@ -2008,26 +2009,26 @@ template template inline gmp_float::gmp_float(const gmp_float& o, typename enable_if_c::type*) { - mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(Digits10 ? Digits10 : this->get_default_precision())); mpf_set(this->m_data, o.data()); } template template inline gmp_float::gmp_float(const gmp_float& o, typename disable_if_c::type*) { - mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(Digits10 ? Digits10 : this->get_default_precision())); mpf_set(this->m_data, o.data()); } template inline gmp_float::gmp_float(const gmp_int& o) { - mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(Digits10 ? Digits10 : this->get_default_precision())); mpf_set_z(this->data(), o.data()); } template inline gmp_float::gmp_float(const gmp_rational& o) { - mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(Digits10 ? Digits10 : this->get_default_precision())); mpf_set_q(this->data(), o.data()); } template @@ -2035,7 +2036,7 @@ template inline gmp_float& gmp_float::operator=(const gmp_float& o) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(Digits10 ? Digits10 : this->get_default_precision())); mpf_set(this->m_data, o.data()); return *this; } @@ -2043,7 +2044,7 @@ template inline gmp_float& gmp_float::operator=(const gmp_int& o) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(Digits10 ? Digits10 : this->get_default_precision())); mpf_set_z(this->data(), o.data()); return *this; } @@ -2051,31 +2052,31 @@ template inline gmp_float& gmp_float::operator=(const gmp_rational& o) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, (((Digits10 ? Digits10 : this->get_default_precision()) + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(Digits10 ? Digits10 : this->get_default_precision())); mpf_set_q(this->data(), o.data()); return *this; } inline gmp_float<0>::gmp_float(const gmp_int& o) { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set_z(this->data(), o.data()); } inline gmp_float<0>::gmp_float(const gmp_rational& o) { - mpf_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpf_set_q(this->data(), o.data()); } inline gmp_float<0>& gmp_float<0>::operator=(const gmp_int& o) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((this->get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(this->get_default_precision())); mpf_set_z(this->data(), o.data()); return *this; } inline gmp_float<0>& gmp_float<0>::operator=(const gmp_rational& o) { if(this->m_data[0]._mp_d == 0) - mpf_init2(this->m_data, ((this->get_default_precision() + 1) * 1000L) / 301L); + mpf_init2(this->m_data, multiprecision::detail::digits10_2_2(this->get_default_precision())); mpf_set_q(this->data(), o.data()); return *this; } @@ -2185,7 +2186,7 @@ public: { return -(max)(); } - BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + BOOST_STATIC_CONSTEXPR int digits = static_cast((Digits10 * 1000L) / 301L + ((Digits10 * 1000L) % 301L ? 2 : 1)); BOOST_STATIC_CONSTEXPR int digits10 = Digits10; // Have to allow for a possible extra limb inside the gmp data structure: BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 2 + ((GMP_LIMB_BITS * 301L) / 1000L); diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index ce8209a6..98fa9334 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -46,7 +47,7 @@ struct mpfr_float_imp mpfr_float_imp(const mpfr_float_imp& o) { - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); if(o.m_data[0]._mpfr_d) mpfr_set(m_data, o.m_data, GMP_RNDN); } @@ -60,7 +61,7 @@ struct mpfr_float_imp mpfr_float_imp& operator = (const mpfr_float_imp& o) BOOST_NOEXCEPT { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); if(o.m_data[0]._mpfr_d) mpfr_set(m_data, o.m_data, GMP_RNDN); return *this; @@ -76,14 +77,14 @@ struct mpfr_float_imp mpfr_float_imp& operator = (unsigned long long i) BOOST_NOEXCEPT { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpfr_set_uj(m_data, i, GMP_RNDN); return *this; } mpfr_float_imp& operator = (long long i) BOOST_NOEXCEPT { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpfr_set_sj(m_data, i, GMP_RNDN); return *this; } @@ -91,11 +92,11 @@ struct mpfr_float_imp mpfr_float_imp& operator = (unsigned long long i) { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); unsigned shift = 0; mpfr_t t; - mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(((digits10 + 1) * 1000L) / 301L))); + mpfr_init2(t, (std::max)(static_cast(std::numeric_limits::digits), static_cast(multiprecision::detail::digits10_2_2(digits10)))); mpfr_set_ui(m_data, 0, GMP_RNDN); while(i) { @@ -113,7 +114,7 @@ struct mpfr_float_imp { BOOST_MP_USING_ABS if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); bool neg = i < 0; *this = static_cast(abs(i)); if(neg) @@ -124,35 +125,35 @@ struct mpfr_float_imp mpfr_float_imp& operator = (unsigned long i) BOOST_NOEXCEPT { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpfr_set_ui(m_data, i, GMP_RNDN); return *this; } mpfr_float_imp& operator = (long i) BOOST_NOEXCEPT { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpfr_set_si(m_data, i, GMP_RNDN); return *this; } mpfr_float_imp& operator = (double d) BOOST_NOEXCEPT { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpfr_set_d(m_data, d, GMP_RNDN); return *this; } mpfr_float_imp& operator = (long double a) BOOST_NOEXCEPT { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); mpfr_set_ld(m_data, a, GMP_RNDN); return *this; } mpfr_float_imp& operator = (const char* s) { if(m_data[0]._mpfr_d == 0) - mpfr_init2(m_data, (((digits10 ? digits10 : get_default_precision()) + 1) * 1000L) / 301L); + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); if(mpfr_set_str(m_data, s, 10, GMP_RNDN) != 0) { BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Unable to parse string \"") + s + std::string("\"as a valid floating point number."))); @@ -328,52 +329,64 @@ struct mpfr_float_backend : public detail::mpfr_float_imp { mpfr_float_backend() { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); } mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp(static_cast&&>(o)) {} #endif template - mpfr_float_backend(const mpfr_float_backend& val) + mpfr_float_backend(const mpfr_float_backend& val, typename enable_if_c::type* = 0) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set(this->m_data, val.data(), GMP_RNDN); } template - mpfr_float_backend(const gmp_float& val) + explicit mpfr_float_backend(const mpfr_float_backend& val, typename disable_if_c::type* = 0) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); + mpfr_set(this->m_data, val.data(), GMP_RNDN); + } + template + mpfr_float_backend(const gmp_float& val, typename enable_if_c::type* = 0) + { + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); + mpfr_set_f(this->m_data, val.data(), GMP_RNDN); + } + template + mpfr_float_backend(const gmp_float& val, typename disable_if_c::type* = 0) + { + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_f(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_int& val) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_z(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_rational& val) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_q(this->m_data, val.data(), GMP_RNDN); } - mpfr_float_backend(mpfr_t val) + mpfr_float_backend(const mpfr_t val) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set(this->m_data, val, GMP_RNDN); } - mpfr_float_backend(mpf_t val) + mpfr_float_backend(const mpf_t val) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_f(this->m_data, val, GMP_RNDN); } - mpfr_float_backend(mpz_t val) + mpfr_float_backend(const mpz_t val) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_z(this->m_data, val, GMP_RNDN); } - mpfr_float_backend(mpq_t val) + mpfr_float_backend(const mpq_t val) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_q(this->m_data, val, GMP_RNDN); } mpfr_float_backend& operator=(const mpfr_float_backend& o) @@ -414,6 +427,7 @@ struct mpfr_float_backend : public detail::mpfr_float_imp mpfr_set_q(this->m_data, val, GMP_RNDN); return *this; } + // We don't change our precision here, this is a fixed precision type: template mpfr_float_backend& operator=(const mpfr_float_backend& val) BOOST_NOEXCEPT { @@ -443,26 +457,26 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> { mpfr_float_backend() { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); } - mpfr_float_backend(mpfr_t val) + mpfr_float_backend(const mpfr_t val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, mpfr_get_prec(val)); mpfr_set(this->m_data, val, GMP_RNDN); } - mpfr_float_backend(mpf_t val) + mpfr_float_backend(const mpf_t val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, mpf_get_prec(val)); mpfr_set_f(this->m_data, val, GMP_RNDN); } - mpfr_float_backend(mpz_t val) + mpfr_float_backend(const mpz_t val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_z(this->m_data, val, GMP_RNDN); } - mpfr_float_backend(mpq_t val) + mpfr_float_backend(const mpq_t val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_q(this->m_data, val, GMP_RNDN); } mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp<0>(o) {} @@ -471,29 +485,29 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> #endif mpfr_float_backend(const mpfr_float_backend& o, unsigned digits10) { - mpfr_init2(this->m_data, ((digits10 + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); *this = o; } template mpfr_float_backend(const mpfr_float_backend& val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, mpfr_get_prec(val.data())); mpfr_set(this->m_data, val.data(), GMP_RNDN); } template mpfr_float_backend(const gmp_float& val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, mpf_get_prec(val.data())); mpfr_set_f(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_int& val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_z(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_rational& val) { - mpfr_init2(this->m_data, ((get_default_precision() + 1) * 1000L) / 301L); + mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_q(this->m_data, val.data(), GMP_RNDN); } @@ -517,11 +531,13 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> } mpfr_float_backend& operator=(const mpfr_t val) BOOST_NOEXCEPT { + mpfr_set_prec(this->m_data, mpfr_get_prec(val)); mpfr_set(this->m_data, val, GMP_RNDN); return *this; } mpfr_float_backend& operator=(const mpf_t val) BOOST_NOEXCEPT { + mpfr_set_prec(this->m_data, mpf_get_prec(val)); mpfr_set_f(this->m_data, val, GMP_RNDN); return *this; } @@ -538,12 +554,14 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> template mpfr_float_backend& operator=(const mpfr_float_backend& val) BOOST_NOEXCEPT { + mpfr_set_prec(this->m_data, mpfr_get_prec(val.data())); mpfr_set(this->m_data, val.data(), GMP_RNDN); return *this; } template mpfr_float_backend& operator=(const gmp_float& val) BOOST_NOEXCEPT { + mpfr_set_prec(this->m_data, mpf_get_prec(val.data())); mpfr_set_f(this->m_data, val.data(), GMP_RNDN); return *this; } @@ -567,11 +585,11 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> } unsigned precision()const BOOST_NOEXCEPT { - return mpfr_get_prec(this->m_data) * 301L / 1000 - 1; + return multiprecision::detail::digits2_2_10(mpfr_get_prec(this->m_data)); } void precision(unsigned digits10) BOOST_NOEXCEPT { - mpfr_set_prec(this->m_data, (digits10 + 1) * 1000L / 301); + mpfr_set_prec(this->m_data, multiprecision::detail::digits2_2_10((digits10))); } }; @@ -1051,6 +1069,21 @@ inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_bac } // namespace backends +#ifdef BOOST_NO_SFINAE_EXPR + +namespace detail{ + +template +struct is_explicitly_convertible, backends::mpfr_float_backend > : public mpl::true_ {}; + +} + +#endif + +template<> +struct number_category >::type> : public mpl::int_{}; + + using boost::multiprecision::backends::mpfr_float_backend; typedef number > mpfr_float_50; @@ -1119,7 +1152,7 @@ public: { return -(max)(); } - BOOST_STATIC_CONSTEXPR int digits = static_cast(((Digits10 + 1) * 1000L) / 301L); + BOOST_STATIC_CONSTEXPR int digits = static_cast((Digits10 * 1000L) / 301L + ((Digits10 * 1000L) % 301 ? 2 : 1)); BOOST_STATIC_CONSTEXPR int digits10 = Digits10; // Is this really correct??? BOOST_STATIC_CONSTEXPR int max_digits10 = Digits10 + 2; diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 99ca7b19..a9ae4721 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -99,9 +99,8 @@ public: : m_backend(val.backend()) {} template - number(const number& val, typename enable_if_c< - (!detail::is_explicitly_convertible::value - && !detail::is_restricted_conversion::value) + explicit number(const number& val, typename enable_if_c< + (!detail::is_explicitly_convertible::value) >::type* = 0) { // @@ -116,17 +115,6 @@ public: >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) : m_backend(val.backend()) {} - template - explicit number(const number& val, typename enable_if_c< - (!detail::is_explicitly_convertible::value - && detail::is_restricted_conversion::value) - >::type* = 0) - { - // - // Attempt a generic interconvertion: - // - detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); - } template BOOST_FORCEINLINE number(V v1, V v2, typename enable_if, is_same, is_convertible > >::type* = 0) { @@ -210,7 +198,7 @@ public: return *this; } */ - +/* template typename disable_if, number& >::type operator=(const number& v) @@ -220,7 +208,7 @@ public: // detail::generic_interconvert(backend(), v.backend(), number_category(), number_category()); return *this; - } + }*/ template typename disable_if, number& >::type assign(const number& v) @@ -672,7 +660,7 @@ private: // create a temporary result and assign it to *this: typedef typename detail::expression::result_type temp_type; temp_type t(e); - *this = t; + this->assign(t); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 994c4899..d9a1af1c 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -738,6 +738,7 @@ run ../example/tommath_snips.cpp $(TOMMATH) : # requirements [ check-target-builds ../config//has_tommath : : no ] ; run ../example/floating_point_examples.cpp : : : gcc:-std=c++0x ; +run test_cpp_int_conv.cpp ; compile include_test/mpfr_include_test.cpp : # requirements @@ -804,7 +805,8 @@ for local source in [ glob compile_fail/*.cpp ] { compile-fail $(source) : - [ check-target-builds ../config//has_gmp : TEST_GMP : ] + [ check-target-builds ../config//has_gmp : TEST_GMP : ] + [ check-target-builds ../config//has_mpfr : TEST_MPFR : ] ; } diff --git a/test/compile_fail/conv_fail_1.cpp b/test/compile_fail/conv_fail_01.cpp similarity index 100% rename from test/compile_fail/conv_fail_1.cpp rename to test/compile_fail/conv_fail_01.cpp diff --git a/test/compile_fail/conv_fail_2.cpp b/test/compile_fail/conv_fail_02.cpp similarity index 100% rename from test/compile_fail/conv_fail_2.cpp rename to test/compile_fail/conv_fail_02.cpp diff --git a/test/compile_fail/conv_fail_3.cpp b/test/compile_fail/conv_fail_03.cpp similarity index 100% rename from test/compile_fail/conv_fail_3.cpp rename to test/compile_fail/conv_fail_03.cpp diff --git a/test/compile_fail/conv_fail_4.cpp b/test/compile_fail/conv_fail_04.cpp similarity index 100% rename from test/compile_fail/conv_fail_4.cpp rename to test/compile_fail/conv_fail_04.cpp diff --git a/test/compile_fail/conv_fail_5.cpp b/test/compile_fail/conv_fail_05.cpp similarity index 100% rename from test/compile_fail/conv_fail_5.cpp rename to test/compile_fail/conv_fail_05.cpp diff --git a/test/compile_fail/conv_fail_6.cpp b/test/compile_fail/conv_fail_06.cpp similarity index 100% rename from test/compile_fail/conv_fail_6.cpp rename to test/compile_fail/conv_fail_06.cpp diff --git a/test/compile_fail/conv_fail_7.cpp b/test/compile_fail/conv_fail_07.cpp similarity index 100% rename from test/compile_fail/conv_fail_7.cpp rename to test/compile_fail/conv_fail_07.cpp diff --git a/test/compile_fail/conv_fail_8.cpp b/test/compile_fail/conv_fail_08.cpp similarity index 100% rename from test/compile_fail/conv_fail_8.cpp rename to test/compile_fail/conv_fail_08.cpp diff --git a/test/compile_fail/conv_fail_9.cpp b/test/compile_fail/conv_fail_09.cpp similarity index 100% rename from test/compile_fail/conv_fail_9.cpp rename to test/compile_fail/conv_fail_09.cpp diff --git a/test/compile_fail/conv_fail_49.cpp b/test/compile_fail/conv_fail_49.cpp new file mode 100644 index 00000000..7f4bd612 --- /dev/null +++ b/test/compile_fail/conv_fail_49.cpp @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef TEST_MPFR + +#include + +using namespace boost::multiprecision; + +int main() +{ + mpfr_float_100 f(2); + mpfr_float_50 f2; + f2 = f; +} + +#else + +#error "Nothing to test without GMP!" + +#endif diff --git a/test/compile_fail/conv_fail_50.cpp b/test/compile_fail/conv_fail_50.cpp new file mode 100644 index 00000000..d0a52a58 --- /dev/null +++ b/test/compile_fail/conv_fail_50.cpp @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifdef TEST_MPFR + +#include + +using namespace boost::multiprecision; + +int main() +{ + mpfr_float_100 f(2); + mpfr_float_50 f2 = f; +} + +#else + +#error "Nothing to test without GMP!" + +#endif diff --git a/test/compile_fail/conv_fail_51.cpp b/test/compile_fail/conv_fail_51.cpp new file mode 100644 index 00000000..77441672 --- /dev/null +++ b/test/compile_fail/conv_fail_51.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_100 f(2); + cpp_dec_float_50 f2 = f; +} + diff --git a/test/compile_fail/conv_fail_52.cpp b/test/compile_fail/conv_fail_52.cpp new file mode 100644 index 00000000..0f9edfb5 --- /dev/null +++ b/test/compile_fail/conv_fail_52.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_100 f(2); + cpp_dec_float_50 f2; + f2 = f; +} + diff --git a/test/compile_fail/conv_fail_53.cpp b/test/compile_fail/conv_fail_53.cpp new file mode 100644 index 00000000..cd48feea --- /dev/null +++ b/test/compile_fail/conv_fail_53.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + int256_t i = 3; + int128_t j = i; +} + diff --git a/test/compile_fail/conv_fail_54.cpp b/test/compile_fail/conv_fail_54.cpp new file mode 100644 index 00000000..f7583363 --- /dev/null +++ b/test/compile_fail/conv_fail_54.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + int256_t i = 3; + int128_t j; + j = i; +} + diff --git a/test/compile_fail/conv_fail_55.cpp b/test/compile_fail/conv_fail_55.cpp new file mode 100644 index 00000000..680306f1 --- /dev/null +++ b/test/compile_fail/conv_fail_55.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + int256_t i = 3; + uint256_t j; + j = i; +} + diff --git a/test/compile_fail/conv_fail_56.cpp b/test/compile_fail/conv_fail_56.cpp new file mode 100644 index 00000000..f33e832d --- /dev/null +++ b/test/compile_fail/conv_fail_56.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + int256_t i = 3; + uint256_t j = i; +} + diff --git a/test/compile_fail/conv_fail_57.cpp b/test/compile_fail/conv_fail_57.cpp new file mode 100644 index 00000000..04dcb4cf --- /dev/null +++ b/test/compile_fail/conv_fail_57.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 3; + int256_t j = i; +} + diff --git a/test/compile_fail/conv_fail_58.cpp b/test/compile_fail/conv_fail_58.cpp new file mode 100644 index 00000000..00e09060 --- /dev/null +++ b/test/compile_fail/conv_fail_58.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_int i = 3; + int256_t j; + j = i; +} + diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index 14c32412..7738d5ae 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -87,7 +87,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*JN.*Integer.*", // test data group - ".*", 40000, 10000); // test function + ".*", 50000, 15000); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index 2672d8bd..adb472ca 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -107,7 +107,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*", // test data group - ".*", 80, 40); // test function + ".*", 150, 60); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp index 77db0a60..3ce56dfc 100644 --- a/test/math/test_erf.cpp +++ b/test/math/test_erf.cpp @@ -75,7 +75,7 @@ void expected_results() ".*", // platform ".*", // test type(s) "Inverse Erf.*", // test data group - "boost::math::erfc?_inv", 35, 20); // test function + "boost::math::erfc?_inv", 60, 20); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index a4df3f37..4e4d5636 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -68,7 +68,7 @@ void expected_results() ".*", // platform ".*", // test type(s) "factorials", // test data group - "boost::math::lgamma", 80, 40); // test function + "boost::math::lgamma", 750, 100); // test function add_expected_result( ".*", // compiler ".*", // stdlib diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp index 7ec607ac..f855b9c3 100644 --- a/test/math/test_legendre.cpp +++ b/test/math/test_legendre.cpp @@ -54,7 +54,7 @@ void expected_results() ".*", // platform ".*", // test type(s) ".*", // test data group - ".*", 5000, 500); // test function + ".*", 6000, 500); // test function // // Finish off by printing out the compiler/stdlib/platform names, // we do this to make it easier to mark up expected error rates. diff --git a/test/test_cos.cpp b/test/test_cos.cpp index e429d06b..f31a3bfd 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -243,7 +243,7 @@ void test() max_err = err; } std::cout << "Max error was: " << max_err << std::endl; - BOOST_TEST(max_err < 500); + BOOST_TEST(max_err < 750); // // Test with some exact binary values as input - this tests our code diff --git a/test/test_cpp_dec_float_conv.cpp b/test/test_cpp_dec_float_conv.cpp new file mode 100644 index 00000000..d1c73064 --- /dev/null +++ b/test/test_cpp_dec_float_conv.cpp @@ -0,0 +1,42 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include +#include "test.hpp" + +#include + +int main() +{ + using namespace boost::multiprecision; + // + // Test interconversions between different precisions: + // + cpp_dec_float_50 f1(2); + cpp_dec_float_100 f2(3); + + cpp_dec_float_100 f3 = f1; // implicit conversion OK + BOOST_TEST(f3 == 2); + cpp_dec_float_50 f4(f2); // explicit conversion OK + BOOST_TEST(f4 == 3); + + f2 = f1; + BOOST_TEST(f2 == 2); + f2 = 4; + f1 = static_cast(f2); + BOOST_TEST(f1 == 4); + + + return boost::report_errors(); +} + + + diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index 1ba8f9ec..853249e1 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -281,9 +281,9 @@ void test() // also don't test for modulo types, as these may give a diffferent result from arbitrary // precision types: BOOST_CHECK_EQUAL(mpz_int(pow(d, ui % 19)).str(), test_type(pow(d1, ui % 19)).str()); - BOOST_CHECK_EQUAL(mpz_int(powm(a, b, c)).str(), test_type(powm(a, b, c)).str()); - BOOST_CHECK_EQUAL(mpz_int(powm(a, b, ui)).str(), test_type(powm(a, b, ui)).str()); - BOOST_CHECK_EQUAL(mpz_int(powm(a, ui, c)).str(), test_type(powm(a, ui, c)).str()); + BOOST_CHECK_EQUAL(mpz_int(powm(a, b, c)).str(), test_type(powm(a1, b1, c1)).str()); + BOOST_CHECK_EQUAL(mpz_int(powm(a, b, ui)).str(), test_type(powm(a1, b1, ui)).str()); + BOOST_CHECK_EQUAL(mpz_int(powm(a, ui, c)).str(), test_type(powm(a1, ui, c1)).str()); } if(last_error_count != (unsigned)boost::detail::test_errors()) diff --git a/test/test_cpp_int_conv.cpp b/test/test_cpp_int_conv.cpp new file mode 100644 index 00000000..60a93a7e --- /dev/null +++ b/test/test_cpp_int_conv.cpp @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include +#include "test.hpp" + +#include + +int main() +{ + using namespace boost::multiprecision; + // + // Test interconversions between different precisions: + // + cpp_int i1(2); + int128_t i2(3); + int256_t i3(4); + number > i4(5); + + i1 = i3; + BOOST_TEST(i1 == 4); + i1 = i4; + BOOST_TEST(i1 == 5); + + i3 = -1234567; + i4 = -5677334; + i1 = i3; + BOOST_TEST(i1 == -1234567); + i1 = i4; + BOOST_TEST(i1 == -5677334); + + i3 = i2; + BOOST_TEST(i3 == 3); + + i3 = -1234567; + + uint128_t i5(i3); + BOOST_TEST(i5 == -1234567); + + int128_t i6(i4); + BOOST_TEST(i6 == -5677334); + + return boost::report_errors(); +} + + + diff --git a/test/test_generic_conv.cpp b/test/test_generic_conv.cpp index 6664f4e9..50169d73 100644 --- a/test/test_generic_conv.cpp +++ b/test/test_generic_conv.cpp @@ -43,16 +43,16 @@ int main() mpz_int z(c); cpp_int t(z); BOOST_CHECK_EQUAL(t, c); - z = -c; - t = -z; + z.assign(-c); + t.assign(-z); BOOST_CHECK_EQUAL(t, c); #endif #ifdef TEST_TOMMATH tom_int tom(c); cpp_int t2(tom); BOOST_CHECK_EQUAL(t2, c); - tom = -c; - t2 = -tom; + tom.assign(-c); + t2.assign(-tom); BOOST_CHECK_EQUAL(t2, c); #endif // @@ -62,7 +62,7 @@ int main() dec_float_500 df(c); dec_float_500 df2(c.str()); BOOST_CHECK_EQUAL(df, df2); - df = -c; + df.assign(-c); df2 = -df2; BOOST_CHECK_EQUAL(df, df2); #ifdef TEST_GMP @@ -70,7 +70,7 @@ int main() mpf_type mpf(c); mpf_type mpf2(c.str()); BOOST_CHECK_EQUAL(mpf, mpf2); - mpf = -c; + mpf.assign(-c); mpf2 = -mpf2; BOOST_CHECK_EQUAL(mpf, mpf2); #endif @@ -79,29 +79,29 @@ int main() mpfr_type mpfr(c); mpfr_type mpfr2(c.str()); BOOST_CHECK_EQUAL(mpfr, mpfr2); - mpfr = -c; + mpfr.assign(-c); mpfr2 = -mpfr2; BOOST_CHECK_EQUAL(mpfr, mpfr2); #endif // // Now float to float: // - df = c; + df.assign(c); df /= dec_float_500(gen()); dec_float_500 tol("1e-500"); #ifdef TEST_GMP - mpf = df; + mpf.assign(df); mpf2 = static_cast(df.str()); BOOST_CHECK_EQUAL(mpf, mpf2); - df = mpf; + df.assign(mpf); df2 = static_cast(mpf.str()); BOOST_CHECK(fabs((df - df2) / df) < tol); #endif #ifdef TEST_MPFR - mpfr = df; + mpfr.assign(df); mpfr2 = static_cast(df.str()); BOOST_CHECK_EQUAL(mpfr, mpfr2); - df = mpfr; + df.assign(mpfr); df2 = static_cast(mpfr.str()); BOOST_CHECK(fabs((df - df2) / df) < tol); #endif @@ -123,20 +123,20 @@ int main() // Integer to rational conversions: // #ifdef TEST_GMP - mpq = c; + mpq.assign(c); mpq_rational mpq2 = static_cast(c.str()); BOOST_CHECK_EQUAL(mpq, mpq2); #endif #ifdef TEST_TOMMATH - tr = c; + tr.assign(c); tom_rational tr2 = static_cast(c.str()); BOOST_CHECK_EQUAL(tr, tr2); #endif // // Rational to float: // - df = cppr; - df2 = numerator(cppr); + df.assign(cppr); + df2.assign(numerator(cppr)); df2 /= dec_float_500(denominator(cppr)); BOOST_CHECK(fabs(df - df2) / df2 < tol); } diff --git a/test/test_mpfr_conversions.cpp b/test/test_mpfr_conversions.cpp index cd11e638..1bc78f03 100644 --- a/test/test_mpfr_conversions.cpp +++ b/test/test_mpfr_conversions.cpp @@ -100,6 +100,24 @@ int main() BOOST_TEST(mpfr_float(gf) == 2); BOOST_TEST(mpfr_float_50(gf) == 2); + // + // Conversions involving precision only: + // + mpfr_float::default_precision(30); + f50 = 2; + mpfr_float_100 f100(3); + mpfr_float f0a(4); + mpfr_float f0b(f100); + BOOST_TEST(f0a.precision() == 30); + BOOST_TEST(f0b.precision() == 100); + f0a = f100; + BOOST_TEST(f0a == 3); + BOOST_TEST(f0a.precision() == 100); + + f100 = f50; + BOOST_TEST(f100 == 2); + + f50 = static_cast(f100); return boost::report_errors(); } From d609434125ac3f64409b3ac75c431bd8f679ee78 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 21 Aug 2012 15:47:32 +0000 Subject: [PATCH 221/256] Add missing files, fix the worst of the GCC build failures. [SVN r80114] --- include/boost/multiprecision/cpp_int.hpp | 4 +- .../multiprecision/detail/default_ops.hpp | 5 ++ .../multiprecision/detail/integer_ops.hpp | 2 +- .../traits/explicit_conversion.hpp | 45 +++++++++++++++++ .../traits/is_restricted_conversion.hpp | 48 +++++++++++++++++++ 5 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 include/boost/multiprecision/traits/explicit_conversion.hpp create mode 100644 include/boost/multiprecision/traits/is_restricted_conversion.hpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index baf1eb18..36e0fc5e 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -707,7 +707,7 @@ public: : base_type() { *this = static_cast< - typename detail::canonical< + typename boost::multiprecision::detail::canonical< typename cpp_int_backend::local_limb_type, cpp_int_backend >::type @@ -718,7 +718,7 @@ public: cpp_int_backend& operator=(const cpp_int_backend& other) { *this = static_cast< - typename detail::canonical< + typename boost::multiprecision::detail::canonical< typename cpp_int_backend::local_limb_type, cpp_int_backend >::type diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index becb7cb4..4b7e7f9b 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -813,6 +813,11 @@ inline void eval_bit_unset(T& val, unsigned index) eval_bitwise_xor(val, mask); } +template +void eval_lcm(B& result, const B& a, const B& b); +template +void eval_gcd(B& result, const B& a, const B& b); + // // These have to implemented by the backend, declared here so that our macro generated code compiles OK. // diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index 08b66352..7cd7fb78 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -112,7 +112,7 @@ inline void eval_gcd(B& result, const B& a, const B& b) template inline void eval_lcm(B& result, const B& a, const B& b) { - typedef typename typename mpl::front::type ui_type; + typedef typename mpl::front::type ui_type; B t; eval_gcd(t, a, b); diff --git a/include/boost/multiprecision/traits/explicit_conversion.hpp b/include/boost/multiprecision/traits/explicit_conversion.hpp new file mode 100644 index 00000000..842d36d1 --- /dev/null +++ b/include/boost/multiprecision/traits/explicit_conversion.hpp @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Vicente J. Botet Escriba 2009-2011 +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_EXPLICIT_CONVERTIBLE_HPP +#define BOOST_MP_EXPLICIT_CONVERTIBLE_HPP + +#include +#include + + +namespace boost{ namespace multiprecision{ namespace detail{ + +template +struct dummy_size{}; + +template +struct is_explicitly_convertible_imp +{ +#ifndef BOOST_NO_SFINAE_EXPR + template + static type_traits::yes_type selector(dummy_size(declval()))>*); + + template + static type_traits::no_type selector(...); + + static const bool value = sizeof(selector(0)) == sizeof(type_traits::yes_type); + + typedef boost::integral_constant type; +#else + typedef typename boost::is_convertible::type type; +#endif +}; + +template +struct is_explicitly_convertible : public is_explicitly_convertible_imp::type +{ +}; + +}}} // namespaces + +#endif + diff --git a/include/boost/multiprecision/traits/is_restricted_conversion.hpp b/include/boost/multiprecision/traits/is_restricted_conversion.hpp new file mode 100644 index 00000000..283f15ce --- /dev/null +++ b/include/boost/multiprecision/traits/is_restricted_conversion.hpp @@ -0,0 +1,48 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Vicente J. Botet Escriba 2009-2011 +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_RESTRICTED_CONVERSION_HPP +#define BOOST_MP_RESTRICTED_CONVERSION_HPP + +#include +#include +#include + +namespace boost{ namespace multiprecision{ namespace detail{ + + +template +struct is_lossy_conversion +{ + typedef typename mpl::if_c< + ((number_category::value == number_kind_floating_point) && (number_category::value == number_kind_integer)) + || ((number_category::value == number_kind_floating_point) && (number_category::value == number_kind_rational)) + || ((number_category::value == number_kind_rational) && (number_category::value == number_kind_integer)) + || ((number_category::value == number_kind_fixed_point) && (number_category::value == number_kind_integer)) + || (number_category::value == number_kind_unknown) + || (number_category::value == number_kind_unknown), + mpl::true_, + mpl::false_ + >::type type; + static const bool value = type::value; +}; + +template +struct is_restricted_conversion +{ + typedef typename mpl::if_c< + ((is_explicitly_convertible::value && !is_convertible::value) + || is_lossy_conversion::value), + mpl::true_, + mpl::false_ + >::type type; + static const bool value = type::value; +}; + +}}} // namespaces + +#endif // BOOST_MP_RESTRICTED_CONVERSION_HPP + From 9d5a0bc87a30bf0d373a16b7d548157e41a0bf71 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 21 Aug 2012 16:24:05 +0000 Subject: [PATCH 222/256] Fix a few GCC warnings and errors [SVN r80115] --- .../multiprecision/detail/default_ops.hpp | 12 ++++--- .../detail/generic_interconvert.hpp | 1 + .../multiprecision/detail/integer_ops.hpp | 34 ++++++++++++------- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 4b7e7f9b..0fd06b26 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -725,10 +725,16 @@ inline void eval_round(T& result, const T& a) } } +template +void eval_lcm(B& result, const B& a, const B& b); +template +void eval_gcd(B& result, const B& a, const B& b); + template inline typename enable_if >::type eval_gcd(T& result, const T& a, const Arithmetic& b) { typedef typename boost::multiprecision::detail::canonical::type si_type; + using default_ops::eval_gcd; T t; t = static_cast(b); eval_gcd(result, a, t); @@ -742,6 +748,7 @@ template inline typename enable_if >::type eval_lcm(T& result, const T& a, const Arithmetic& b) { typedef typename boost::multiprecision::detail::canonical::type si_type; + using default_ops::eval_lcm; T t; t = static_cast(b); eval_lcm(result, a, t); @@ -813,11 +820,6 @@ inline void eval_bit_unset(T& val, unsigned index) eval_bitwise_xor(val, mask); } -template -void eval_lcm(B& result, const B& a, const B& b); -template -void eval_gcd(B& result, const B& a, const B& b); - // // These have to implemented by the backend, declared here so that our macro generated code compiles OK. // diff --git a/include/boost/multiprecision/detail/generic_interconvert.hpp b/include/boost/multiprecision/detail/generic_interconvert.hpp index 2cda6a6e..526ec86a 100644 --- a/include/boost/multiprecision/detail/generic_interconvert.hpp +++ b/include/boost/multiprecision/detail/generic_interconvert.hpp @@ -66,6 +66,7 @@ void generic_interconvert(To& to, const From& from, const mpl::int_::type limb_type; // get the corresponding type that we can assign to "To": diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index 7cd7fb78..9e53e094 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -309,7 +309,7 @@ void eval_powm(Backend& result, const Backend& a, const Backend& p, Integer c) } template -void eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) +typename enable_if >::type eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) { typedef typename canonical::type ui_type; typedef typename canonical::type i_type; @@ -320,11 +320,6 @@ void eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) using default_ops::eval_modulus; using default_ops::eval_right_shift; - if(b < 0) - { - BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); - } - Backend x, y(a); x = ui_type(1u); while(b > 0) @@ -341,8 +336,18 @@ void eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) eval_modulus(result, x, c); } +template +typename enable_if >::type eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) +{ + if(b < 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); + } + eval_powm(result, a, static_cast::type>(b), c); +} + template -void eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) +typename enable_if >::type eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) { typedef typename canonical::type ui_type; typedef typename canonical::type i1_type; @@ -354,11 +359,6 @@ void eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) using default_ops::eval_modulus; using default_ops::eval_right_shift; - if(b < 0) - { - BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); - } - Backend x, y(a); x = ui_type(1u); while(b > 0) @@ -375,6 +375,16 @@ void eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) eval_modulus(result, x, static_cast(c)); } +template +typename enable_if >::type eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) +{ + if(b < 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); + } + eval_powm(result, a, static_cast::type>(b), c); +} + struct powm_func { template From 615767497205a1436cf9e2704ca85ecd8ffa1106 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 21 Aug 2012 18:17:57 +0000 Subject: [PATCH 223/256] Fix rational_adapter's implicit/explicit constructors. Add converting constructors for trivial cpp_int's and test. Both fix GCC errors. [SVN r80120] --- include/boost/multiprecision/cpp_int.hpp | 61 +++++++++++++++++++ .../boost/multiprecision/rational_adapter.hpp | 27 ++++++++ test/test_cpp_int_conv.cpp | 3 + 3 files changed, 91 insertions(+) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 36e0fc5e..20e77d77 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1148,6 +1148,67 @@ public: this->sign(i < 0); return *this; } + + template + cpp_int_backend(const cpp_int_backend& other, + typename enable_if_c< + (sizeof(cpp_int_backend::local_limb_type) <= sizeof(typename cpp_int_backend::local_limb_type)) + && (Signed || !Signed2) + >::type* = 0) + : base_type() + { + *this = static_cast< + typename boost::multiprecision::detail::canonical< + typename cpp_int_backend::local_limb_type, + cpp_int_backend + >::type + >(*other.limbs()); + this->sign(other.sign()); + } + template + explicit cpp_int_backend(const cpp_int_backend& other, + typename disable_if_c< + (sizeof(cpp_int_backend::local_limb_type) <= sizeof(typename cpp_int_backend::local_limb_type)) + && (Signed || !Signed2) + >::type* = 0) + : base_type() + { + *this = static_cast< + typename boost::multiprecision::detail::canonical< + typename cpp_int_backend::local_limb_type, + cpp_int_backend + >::type + >(*other.limbs()); + this->sign(other.sign()); + } + template + cpp_int_backend& operator = (const cpp_int_backend& other) + { + *this = static_cast< + typename boost::multiprecision::detail::canonical< + typename cpp_int_backend::local_limb_type, + cpp_int_backend + >::type + >(*other.limbs()); + this->sign(other.sign()); + return *this; + } + template + explicit cpp_int_backend(const cpp_int_backend& other) + : base_type() + { + // We can only ever copy two limbs from other: + if(other.size() == 1) + { + *this->limbs() = *other.limbs(); + } + else + { + *this->limbs() = static_cast(*other.limbs()) | (static_cast(other.limbs()[1]) << (sizeof(limb_type) * CHAR_BIT)); + } + this->sign(other.sign()); + } + cpp_int_backend& operator = (const char* s) { try{ diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 48d76b50..5e4ef673 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -34,6 +34,22 @@ struct rational_adapter m_value = o.m_value; } rational_adapter(const IntBackend& o) : m_value(o) {} + + template + rational_adapter(const U& u, typename enable_if_c::value>::type* = 0) + : m_value(IntBackend(u)){} + template + explicit rational_adapter(const U& u, + typename enable_if_c< + detail::is_explicitly_convertible::value && !is_convertible::value + >::type* = 0) + : m_value(IntBackend(u)){} + template + typename enable_if_c<(detail::is_explicitly_convertible::value && !is_arithmetic::value), rational_adapter&>::type operator = (const U& u) + { + m_value = IntBackend(u); + } + #ifndef BOOST_NO_RVALUE_REFERENCES rational_adapter(rational_adapter&& o) : m_value(o.m_value) {} rational_adapter(IntBackend&& o) : m_value(o) {} @@ -227,6 +243,17 @@ struct component_type > typedef number type; }; +#ifdef BOOST_NO_SFINAE_EXPR + +namespace detail{ + +template +struct is_explicitly_convertible > : public is_explicitly_convertible {}; + +} + +#endif + }} // namespaces diff --git a/test/test_cpp_int_conv.cpp b/test/test_cpp_int_conv.cpp index 60a93a7e..60c57d82 100644 --- a/test/test_cpp_int_conv.cpp +++ b/test/test_cpp_int_conv.cpp @@ -48,6 +48,9 @@ int main() int128_t i6(i4); BOOST_TEST(i6 == -5677334); + number, false> i7(i3); + BOOST_TEST(i7 == -1234567); + return boost::report_errors(); } From 145fa2cdd4fbe90e9796fddee1f7d28db985d121 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 23 Aug 2012 11:24:33 +0000 Subject: [PATCH 224/256] Inching closer to getting GCC to compile the tests again... [SVN r80153] --- include/boost/multiprecision/detail/number_base.hpp | 2 +- include/boost/multiprecision/mpfr.hpp | 1 - include/boost/multiprecision/number.hpp | 6 +++++- include/boost/multiprecision/rational_adapter.hpp | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index 1c1267df..0d7fe45a 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -76,7 +76,7 @@ struct has_enough_bits template struct canonical_imp { - typedef typename decay::type type; + typedef typename remove_cv::type>::type type; }; template struct canonical_imp > diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 98fa9334..cdbb8cfb 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1083,7 +1083,6 @@ struct is_explicitly_convertible, backends::mpf template<> struct number_category >::type> : public mpl::int_{}; - using boost::multiprecision::backends::mpfr_float_backend; typedef number > mpfr_float_50; diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index a9ae4721..55b38314 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -1601,7 +1601,11 @@ private: template static BOOST_FORCEINLINE BOOST_CONSTEXPR const B2& canonical_value(const number& v) BOOST_NOEXCEPT { return v.backend(); } template - static BOOST_FORCEINLINE BOOST_CONSTEXPR typename detail::canonical::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } + static BOOST_FORCEINLINE BOOST_CONSTEXPR typename disable_if::type, V>, typename detail::canonical::type>::type + canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast::type>(v); } + template + static BOOST_FORCEINLINE BOOST_CONSTEXPR typename enable_if::type, V>, const V&>::type + canonical_value(const V& v) BOOST_NOEXCEPT { return v; } static BOOST_FORCEINLINE typename detail::canonical::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); } static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 5e4ef673..6dd07d6f 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -41,11 +41,11 @@ struct rational_adapter template explicit rational_adapter(const U& u, typename enable_if_c< - detail::is_explicitly_convertible::value && !is_convertible::value + boost::multiprecision::detail::is_explicitly_convertible::value && !is_convertible::value >::type* = 0) : m_value(IntBackend(u)){} template - typename enable_if_c<(detail::is_explicitly_convertible::value && !is_arithmetic::value), rational_adapter&>::type operator = (const U& u) + typename enable_if_c<(boost::multiprecision::detail::is_explicitly_convertible::value && !is_arithmetic::value), rational_adapter&>::type operator = (const U& u) { m_value = IntBackend(u); } From d9901b51443b3b0613e9ec220f4365befd8233bb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 24 Aug 2012 11:08:44 +0000 Subject: [PATCH 225/256] Fix remaining GCC C++11 failures. Fix buggy test cases. [SVN r80166] --- include/boost/multiprecision/cpp_int.hpp | 2 +- .../boost/multiprecision/detail/number_base.hpp | 10 ++++++++++ include/boost/multiprecision/number.hpp | 11 ++++++++--- test/test_arithmetic.cpp | 14 +++++++------- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 20e77d77..23d91973 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -2811,7 +2811,7 @@ inline Integer negate_integer(Integer i, const mpl::true_&) BOOST_NOEXCEPT template inline Integer negate_integer(Integer i, const mpl::false_&) BOOST_NOEXCEPT { - return ~--i; + return ~(i-1); } template diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index 0d7fe45a..ab3e34fe 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -78,6 +78,16 @@ struct canonical_imp { typedef typename remove_cv::type>::type type; }; +template +struct canonical_imp, Backend, Tag> +{ + typedef B type; +}; +template +struct canonical_imp, Backend, Tag> +{ + typedef B type; +}; template struct canonical_imp > { diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 55b38314..b30e7891 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -112,7 +112,7 @@ public: explicit BOOST_FORCEINLINE number(const number& val, typename enable_if_c< (detail::is_explicitly_convertible::value && (detail::is_restricted_conversion::value || !boost::is_convertible::value)) - >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) + >::type* = 0) BOOST_NOEXCEPT_IF(noexcept(Backend(std::declval()))) : m_backend(val.backend()) {} template @@ -148,13 +148,13 @@ public: do_assign(e, tag_type()); return *this; } -/* + BOOST_FORCEINLINE number& operator=(const number& e) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) { m_backend = e.m_backend; return *this; } - */ + template BOOST_FORCEINLINE typename enable_if, number& >::type operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval::type>())) @@ -603,6 +603,11 @@ explicit operator T()const { return this->template convert_to(); } +explicit operator bool()const +{ + using default_ops::eval_is_zero; + return !eval_is_zero(backend()); +} #endif // // Default precision: diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 99c1bb8b..4a6f102f 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -485,16 +485,16 @@ void test_integer_ops(const boost::mpl::int_::is_signed) { @@ -516,17 +516,17 @@ void test_integer_ops(const boost::mpl::int_ Date: Sun, 26 Aug 2012 16:46:44 +0000 Subject: [PATCH 226/256] Fix explicit conversion operators for GCC-4.6.x [SVN r80237] --- include/boost/multiprecision/number.hpp | 39 ++++++++++++++++++------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index b30e7891..e7bbb7ee 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -598,16 +598,35 @@ public: return result; } #ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS -template -explicit operator T()const -{ - return this->template convert_to(); -} -explicit operator bool()const -{ - using default_ops::eval_is_zero; - return !eval_is_zero(backend()); -} +#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 7) + // + // Horrible workaround for gcc-4.6.x which always prefers the non-template + // operator bool() rather than the template operator when converting to + // an arithmetic type: + // + template , int>::type = 0> + explicit operator T ()const + { + using default_ops::eval_is_zero; + return !eval_is_zero(backend()); + } + template , int>::type = 0> + explicit operator T ()const + { + return this->template convert_to(); + } +#else + template + explicit operator T()const + { + return this->template convert_to(); + } + explicit operator bool()const + { + using default_ops::eval_is_zero; + return !eval_is_zero(backend()); + } +#endif #endif // // Default precision: From 6e58c919a60edcaabe5b782712ffb41d052f8858 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 27 Aug 2012 09:51:35 +0000 Subject: [PATCH 227/256] Delete dead code. [SVN r80248] --- include/boost/multiprecision/number.hpp | 53 +------------------------ 1 file changed, 2 insertions(+), 51 deletions(-) diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index e7bbb7ee..2a2f73fd 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -53,8 +53,7 @@ public: } template BOOST_FORCEINLINE BOOST_CONSTEXPR number(const V& v, typename enable_if_c< - /*(boost::is_arithmetic::value || is_same::value || is_convertible::value) - &&*/ is_convertible::type, Backend>::value + is_convertible::type, Backend>::value && !detail::is_restricted_conversion::type, Backend>::value >::type* = 0) : m_backend(canonical_value(v)) {} @@ -71,8 +70,7 @@ public: } template explicit BOOST_FORCEINLINE BOOST_CONSTEXPR number(const V& v, typename enable_if_c< - /*(boost::is_arithmetic::value || is_same::value || is_convertible::value) - &&*/ detail::is_explicitly_convertible::type, Backend>::value + detail::is_explicitly_convertible::type, Backend>::value && (detail::is_restricted_conversion::type, Backend>::value || !is_convertible::type, Backend>::value) >::type* = 0) @@ -128,12 +126,6 @@ public: assign_components(m_backend, v1.backend(), v2.backend()); } - /* - template - BOOST_FORCEINLINE BOOST_CONSTEXPR number(V v, typename enable_if, mpl::not_, is_same, is_convertible > > > >::type* = 0) - BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) - : m_backend(v){} - */ template typename enable_if::result_type, self_type>, number&>::type operator=(const detail::expression& e) { @@ -168,47 +160,6 @@ public: m_backend = canonical_value(v); return *this; } - /* - template - BOOST_FORCEINLINE typename enable_if, mpl::not_, is_same, is_convertible > > >, number& >::type - operator=(const V& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) - { - m_backend = v; - return *this; - } - template - BOOST_FORCEINLINE number& operator=(const number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) - { - m_backend = v.backend(); - return *this; - } - - template - BOOST_FORCEINLINE typename enable_if, number& >::type - operator=(const number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) - { - m_backend = v.backend(); - return *this; - } - template - BOOST_FORCEINLINE typename enable_if, number& >::type - assign(const number& v) BOOST_NOEXCEPT_IF(noexcept(std::declval() = static_cast(std::declval()))) - { - m_backend = v.backend(); - return *this; - } - */ -/* - template - typename disable_if, number& >::type - operator=(const number& v) - { - // - // Attempt a generic interconvertion: - // - detail::generic_interconvert(backend(), v.backend(), number_category(), number_category()); - return *this; - }*/ template typename disable_if, number& >::type assign(const number& v) From 1e00790703922627a72e36a57b9441098843d5d4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 27 Aug 2012 12:30:53 +0000 Subject: [PATCH 228/256] Rename mp_number_archetype. Update docs with explicit conversion info. Regenerate docs. [SVN r80261] --- doc/html/boost_multiprecision/indexes.html | 2 +- .../boost_multiprecision/indexes/s01.html | 208 +++++------ .../boost_multiprecision/indexes/s02.html | 47 ++- .../boost_multiprecision/indexes/s03.html | 76 ++-- .../boost_multiprecision/indexes/s04.html | 333 ++++++++++-------- doc/html/boost_multiprecision/intro.html | 25 +- doc/html/boost_multiprecision/map.html | 2 +- doc/html/boost_multiprecision/map/ack.html | 4 +- doc/html/boost_multiprecision/map/hist.html | 30 +- doc/html/boost_multiprecision/map/todo.html | 19 +- doc/html/boost_multiprecision/perf.html | 2 +- .../perf/float_performance.html | 2 +- .../perf/int_real_world.html | 2 +- .../perf/integer_performance.html | 2 +- .../perf/rational_performance.html | 2 +- .../boost_multiprecision/perf/realworld.html | 2 +- doc/html/boost_multiprecision/ref.html | 4 +- .../boost_multiprecision/ref/backendconc.html | 45 +-- .../boost_multiprecision/ref/cpp_dec_ref.html | 8 +- .../boost_multiprecision/ref/cpp_int_ref.html | 6 +- .../boost_multiprecision/ref/gmp_int_ref.html | 2 +- .../boost_multiprecision/ref/headers.html | 2 +- .../boost_multiprecision/ref/internals.html | 94 +++++ .../boost_multiprecision/ref/mpf_ref.html | 2 +- .../boost_multiprecision/ref/mpfr_ref.html | 2 +- doc/html/boost_multiprecision/ref/number.html | 109 ++++-- .../boost_multiprecision/ref/tom_int_ref.html | 2 +- doc/html/boost_multiprecision/tut.html | 2 +- .../boost_multiprecision/tut/conversions.html | 91 +++-- doc/html/boost_multiprecision/tut/floats.html | 2 +- .../tut/floats/cpp_dec_float.html | 6 +- .../tut/floats/fp_eg.html | 2 +- .../tut/floats/fp_eg/aos.html | 2 +- .../tut/floats/fp_eg/gi.html | 2 +- .../tut/floats/fp_eg/jel.html | 2 +- .../tut/floats/fp_eg/nd.html | 2 +- .../tut/floats/fp_eg/poly_eg.html | 2 +- .../tut/floats/gmp_float.html | 10 +- .../tut/floats/mpfr_float.html | 10 +- doc/html/boost_multiprecision/tut/ints.html | 2 +- .../tut/ints/cpp_int.html | 8 +- .../boost_multiprecision/tut/ints/egs.html | 2 +- .../tut/ints/egs/bitops.html | 2 +- .../tut/ints/egs/factorials.html | 2 +- .../tut/ints/gmp_int.html | 8 +- .../tut/ints/tom_int.html | 6 +- .../boost_multiprecision/tut/primetest.html | 6 +- doc/html/boost_multiprecision/tut/random.html | 2 +- .../boost_multiprecision/tut/rational.html | 2 +- .../boost_multiprecision/tut/rational/br.html | 2 +- .../tut/rational/cpp_rational.html | 6 +- .../tut/rational/gmp_rational.html | 8 +- .../tut/rational/rational_adapter.html | 2 +- .../tut/rational/tommath_rational.html | 6 +- doc/html/index.html | 6 +- doc/multiprecision.qbk | 180 ++++++++-- .../concepts/mp_number_archetypes.hpp | 54 +-- test/test_acos.cpp | 2 +- test/test_arithmetic.cpp | 2 +- test/test_asin.cpp | 2 +- test/test_atan.cpp | 2 +- test/test_cos.cpp | 2 +- test/test_cosh.cpp | 2 +- test/test_exp.cpp | 2 +- test/test_fpclassify.cpp | 2 +- test/test_log.cpp | 2 +- test/test_numeric_limits.cpp | 2 +- test/test_pow.cpp | 2 +- test/test_round.cpp | 2 +- test/test_sin.cpp | 2 +- test/test_sinh.cpp | 2 +- test/test_sqrt.cpp | 2 +- test/test_tanh.cpp | 2 +- 73 files changed, 927 insertions(+), 576 deletions(-) create mode 100644 doc/html/boost_multiprecision/ref/internals.html diff --git a/doc/html/boost_multiprecision/indexes.html b/doc/html/boost_multiprecision/indexes.html index e3925a4f..8a9d13ce 100644 --- a/doc/html/boost_multiprecision/indexes.html +++ b/doc/html/boost_multiprecision/indexes.html @@ -3,7 +3,7 @@ Indexes - + diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index d414d97f..b72ad441 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -3,7 +3,7 @@ Function Index - + @@ -13,53 +13,59 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    -
    +
    A
    -
    B
    -

    -

    -

    [1] +


    +

    [1] The actual number generated will depend on the compiler, how well it optimises the code, and whether it supports rvalue references. The number of 11 temporaries was generated with Visual C++ 10

    -

    [2] +

    [2] Marc Glisse suggested pre-review that this could be reduced still further by careful use of rvalue-references and move semantics in the operator overloads. This will be investigated further at a later date. diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html index 8edb89d1..5037bf2b 100644 --- a/doc/html/boost_multiprecision/map.html +++ b/doc/html/boost_multiprecision/map.html @@ -3,7 +3,7 @@ Roadmap - + diff --git a/doc/html/boost_multiprecision/map/ack.html b/doc/html/boost_multiprecision/map/ack.html index 4de1bb82..f437951a 100644 --- a/doc/html/boost_multiprecision/map/ack.html +++ b/doc/html/boost_multiprecision/map/ack.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -20,7 +20,7 @@

    This library would not have happened without:

    -
      +
      • Christopher Kormanyos' C++ decimal number code.
      • diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index 70462181..157d4400 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -3,7 +3,7 @@ History - + @@ -17,7 +17,33 @@ -
          +
          + + Post + review changes +
          +
            +
          • + Non-expression template operators further optimised with rvalue reference + support. +
          • +
          • + Many functions made made constexp? +
          • +
          • + Differentiate between explicit and implicit conversions in the number + constructor. +
          • +
          • + Removed "mp_" prefix from types. +
          • +
          +
          + + Pre-review + history +
          +
          • 2011-2012, John Maddock adds an expression template enabled front end to Christopher's code, and adds support for other backends. diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 2877ef6c..d2ec17ec 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -3,7 +3,7 @@ TODO - + @@ -21,7 +21,7 @@ More a list of what could be done, rather than what should be done (which may be a much smaller list!).

            -
              +
              • Add back-end support for libdecNumber.
              • @@ -43,21 +43,10 @@
              - Pre-Review + Pre-Review Comments
              -
                -
              • - Can the non-expression template operators be further optimised with rvalue - reference support? -
              • -
              • - Can any functions - in particular value initialization - be made constexp? -
              • -
              • - Can we differentiate between explicit and implicit conversions in the - number constructor (may need some new type traits)? -
              • +
                • Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it. diff --git a/doc/html/boost_multiprecision/perf.html b/doc/html/boost_multiprecision/perf.html index 7a2b730a..530861ab 100644 --- a/doc/html/boost_multiprecision/perf.html +++ b/doc/html/boost_multiprecision/perf.html @@ -3,7 +3,7 @@ Performance Comparison - + diff --git a/doc/html/boost_multiprecision/perf/float_performance.html b/doc/html/boost_multiprecision/perf/float_performance.html index d34ab87c..7117f46e 100644 --- a/doc/html/boost_multiprecision/perf/float_performance.html +++ b/doc/html/boost_multiprecision/perf/float_performance.html @@ -3,7 +3,7 @@ Float Algorithm Perfomance - + diff --git a/doc/html/boost_multiprecision/perf/int_real_world.html b/doc/html/boost_multiprecision/perf/int_real_world.html index 353ab9ee..62aff8de 100644 --- a/doc/html/boost_multiprecision/perf/int_real_world.html +++ b/doc/html/boost_multiprecision/perf/int_real_world.html @@ -3,7 +3,7 @@ Integer Real World Tests - + diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html index 56ea5b0e..9b89b8e0 100644 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -3,7 +3,7 @@ Integer Algorithm Perfomance - + diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html index 98fb8836..509c5a2a 100644 --- a/doc/html/boost_multiprecision/perf/rational_performance.html +++ b/doc/html/boost_multiprecision/perf/rational_performance.html @@ -3,7 +3,7 @@ Rational Type Perfomance - + diff --git a/doc/html/boost_multiprecision/perf/realworld.html b/doc/html/boost_multiprecision/perf/realworld.html index a084ecc1..b61c7c7f 100644 --- a/doc/html/boost_multiprecision/perf/realworld.html +++ b/doc/html/boost_multiprecision/perf/realworld.html @@ -3,7 +3,7 @@ Floating Point Real World Tests - + diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index 0516caf6..8957bc6f 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -3,7 +3,7 @@ Reference - + @@ -25,6 +25,8 @@
                  gmp_float
                  mpfr_float_backend
                  cpp_dec_float
                  +
                  Internal Support + Code
                  Backend Requirements
                  Header File Structure
                diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index ab9600cb..3550a227 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -3,15 +3,15 @@ Backend Requirements - + - +
                -PrevUpHomeNext +PrevUpHomeNext

                @@ -20,10 +20,10 @@

                The requirements on the Backend template argument to number - are split up into sections: compulsary and optional. + are split up into sections: compulsory and optional.

                - Compulsary requirements have no default implementation in the library, therefore + Compulsory requirements have no default implementation in the library, therefore if the feature they implement is to be supported at all, then they must be implemented by the backend.

                @@ -34,20 +34,19 @@

                In the following tables, type B is the Backend - template arument to number, + template argument to number, b and b2 - are a variables of type B, cb - and cb2 are constant variables - of type const B, - rb is a variable of type - B&&, - a is a variable of Arithmetic - type, s is a variable of - type const char*, ui - is a variable of type unsigned, - bb is a variable of type - bool, pa - is a variable of type pointer-to-arithmetic-type, exp + are a variables of type B, cb, + cb2 and cb3 + are constant variables of type const + B, rb + is a variable of type B&&, + a and a2 + are variables of Arithmetic type, s + is a variable of type const char*, ui is a variable of type unsigned, bb + is a variable of type bool, + pa is a variable of type + pointer-to-arithmetic-type, exp is a variable of type B::exp_type, pexp is a variable of type B::exp_type*, i is a variable of type @@ -1075,7 +1074,9 @@

    Copy constructor from a different back-end type. When not provided, - a generic interconversion routine is used. + a generic interconversion routine is used. This constructor may + be explicit if the + corresponding frontend constructor should also be explicit.

    @@ -2969,7 +2970,7 @@ eval_powm(b, cb, a, - a) + a2)

    @@ -2980,7 +2981,7 @@

    Sets b to the result - of (cb^a)%a. The type of a + of (cb^a)%a2. The type of a shall be listed in one of the type lists B::signed_types, B::unsigned_types. The default version of this function is synthesised from other operations above. @@ -3612,7 +3613,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html index 8d84ad3d..76a9f702 100644 --- a/doc/html/boost_multiprecision/ref/cpp_dec_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_dec_ref.html @@ -3,15 +3,15 @@ cpp_dec_float - + - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -58,7 +58,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html index a302ef80..acc1b8c9 100644 --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -3,7 +3,7 @@ cpp_int - + @@ -51,7 +51,7 @@

    -
    +
    Argument

    Meaning @@ -75,7 +75,7 @@

    The allocator used for dynamic memory allocation. This parameter can be void, in which case - no dymanic memory will ever be allocated. + no dynamic memory will ever be allocated.

    diff --git a/doc/html/boost_multiprecision/ref/gmp_int_ref.html b/doc/html/boost_multiprecision/ref/gmp_int_ref.html index 2f2655e7..d7eefd2d 100644 --- a/doc/html/boost_multiprecision/ref/gmp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/gmp_int_ref.html @@ -3,7 +3,7 @@ gmp_int - + diff --git a/doc/html/boost_multiprecision/ref/headers.html b/doc/html/boost_multiprecision/ref/headers.html index 87b88f8a..ab1a9f3d 100644 --- a/doc/html/boost_multiprecision/ref/headers.html +++ b/doc/html/boost_multiprecision/ref/headers.html @@ -3,7 +3,7 @@ Header File Structure - + diff --git a/doc/html/boost_multiprecision/ref/internals.html b/doc/html/boost_multiprecision/ref/internals.html new file mode 100644 index 00000000..b75aba98 --- /dev/null +++ b/doc/html/boost_multiprecision/ref/internals.html @@ -0,0 +1,94 @@ + + + +Internal Support Code + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + There are some traits classes which authors of new backends should be aware + of: +

    +
    namespace boost{ namespace multiprecision{ namespace detail{
    +
    +template<typename From, typename To>
    +struct is_explicitly_convertible;
    +
    +}}}
    +
    +

    + Inherits from boost::integral_constant<bool,true> if type From + has an explicit conversion from To. +

    +

    + For compilers that support C++11 SFINAE-expressions this trait should "just + work". Otherwise it inherits from boost::is_convertible<From, To>::type, and will need to be specialised for + Backends that have constructors marked as explicit. +

    +
    template <class From, class To>
    +struct is_lossy_conversion
    +{
    +   static const bool value = see below;
    +};
    +
    +

    + Member value is true if the + conversion from From to + To would result in a loss + of precision, and false otherwise. +

    +

    + The default version of this trait simply checks whether the kind + of conversion (for example from a floating point to an integer type) is inherently + lossy. Note that if either of the types From + or To are of an unknown number + category (because number_category + is not specialised for that type) then this trait will be true. +

    +
    template<typename From, typename To>
    +struct is_restricted_conversion
    +{
    +   static const bool value = see below;
    +};
    +
    +

    + Member value is true if From + is only explicitly convertible to To + and not implicitly convertible, or if is_lossy_conversion<From, To>::value is true. + Otherwise false. +

    +

    + Note that while this trait is the ultimate arbiter of which constructors + are marked as explicit in class + number, authors of backend + types should generally specialise one of the traits above, rather than this + one directly. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/ref/mpf_ref.html b/doc/html/boost_multiprecision/ref/mpf_ref.html index 02f8e03b..7bb0616a 100644 --- a/doc/html/boost_multiprecision/ref/mpf_ref.html +++ b/doc/html/boost_multiprecision/ref/mpf_ref.html @@ -3,7 +3,7 @@ gmp_float - + diff --git a/doc/html/boost_multiprecision/ref/mpfr_ref.html b/doc/html/boost_multiprecision/ref/mpfr_ref.html index a5e0ba30..45c7dbfe 100644 --- a/doc/html/boost_multiprecision/ref/mpfr_ref.html +++ b/doc/html/boost_multiprecision/ref/mpfr_ref.html @@ -3,7 +3,7 @@ mpfr_float_backend - + diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index bf6d8b24..18b10bbc 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -3,7 +3,7 @@ number - + @@ -19,7 +19,7 @@
    - Synopsis + Synopsis
    namespace boost{ namespace multiprecision{
     
    @@ -29,6 +29,7 @@
        number();
        number(see-below);
        number& operator=(see-below);
    +   number& assign(see-below);
     
        // Member operators
        number& operator+=(const see-below&);
    @@ -69,7 +70,8 @@
        // Comparison:
        int compare(const number<Backend>& o)const;
        template <class V>
    -   typename enable_if<is_arithmetic<V>, int>::type compare(const V& o)const;
    +   typename enable_if<is_convertible<V, number<Backend, ExpressionTemplates> >, int>::type
    +      compare(const V& o)const;
        // Access to the underlying implementation:
        Backend& backend();
        const Backend& backend()const;
    @@ -198,7 +200,7 @@
     
    - Description + Description
    template <class Backend, bool ExpressionTemplates = true>
     class number;
    @@ -209,7 +211,7 @@
           

    -
    +
    Backend

    The actual arithmetic back-end that does all the work. @@ -224,12 +226,13 @@

    number();
     number(see-below);
     number& operator=(see-below);
    +number& assign(see-below);
     

    Type number is default constructible, and both copy constructible and assignable from:

    -
      +
      • Itself.
      • @@ -237,14 +240,11 @@ An expression template which is the result of one of the arithmetic operators.
      • - Any builtin arithmetic type. + Any builtin arithmetic type, as long as the result would not be lossy + (for example float to integer conversion).
      • - A std::string or any type which is convertible - to const char*. -
      • -
      • - Any type that the Backend is constructible or assignable from. + Any type that the Backend is implicitly constructible or assignable from.
      • An rvalue reference to another number. @@ -253,7 +253,50 @@ are always supported when the argument is an rvalue reference irrespective of the backend.
      • +
      • + Any type in the same family, as long as no loss of precision is involved. + For example from int128 + to int256, or cpp_dec_float_50 to cpp_dec_float_100. +
      +

      + Type number is explicitly + constructible from: +

      +
        +
      • + Any type mentioned above. +
      • +
      • + A std::string or any type which is convertible + to const char*. +
      • +
      • + Any arithmetic type (including those that would result in lossy conversions). +
      • +
      • + Any type in the same family, including those that result in loss of precision. +
      • +
      • + Any type that the Backend is explicitly constructible from. +
      • +
      • + Any pair of types for which a generic interconversion exists: that is + from integer to integer, integer to rational, integer to float, rational + to rational, rational to float, or float to float. +
      • +
      +

      + The assign member function is available for any type for which an explicit + converting constructor exists. It is intended to be used where a temporary + generated from an explicit assignment would be expensive, for example: +

      +
      mpfr_float_50    f50;
      +mpfr_float_100   f100;
      +
      +f50 = static_cast<mpfr_float_50>(f100);  // explicit cast create a temporary
      +f50.assign(f100);                        // explicit call to assign create no temporary
      +

      In addition, if the type has multiple components (for example rational or complex number types), then there is a two argument constructor: @@ -286,16 +329,16 @@

      The arguments to these operators is either:

      -
        +
        • Another number<Backend, ExpressionTemplates>.
        • - A builtin arithmetic type. + An expression template derived from number<Backend>.
        • - An expression template derived from number<Backend>. + Any type implicitly convertible to number<Backend, ExpressionTemplates>.

        @@ -372,12 +415,13 @@

        int compare(const number<Backend, ExpressionTemplates>& o)const;
         template <class V>
        -typename enable_if<is_arithmetic<V>, int>::type compare(const V& other)const;
        +typename enable_if<is_convertible<V, number<Backend, ExpressionTemplates> >, int>::type
        +   compare(const V& other)const;
         

        Returns:

        -
          +
          • A value less that 0 for *this < other
          • @@ -397,7 +441,7 @@

            - Non-member + Non-member operators
            // Non member operators:
            @@ -428,7 +472,7 @@
             

            The arguments to these functions must contain at least one of the following:

            -
              +
              • A number.
              • @@ -442,7 +486,7 @@

                The return type of these operators is either:

                -
                  +
                  • An unmentionable-type expression template type when ExpressionTemplates is @@ -471,7 +515,7 @@

                    - swap + swap
                    template <class Backend, ExpressionTemplates>
                     void swap(number<Backend, ExpressionTemplates>& a, number<Backend, ExpressionTemplates>& b);
                    @@ -481,7 +525,7 @@
                           

                    - Iostream + Iostream Support
                    template <class Backend, bool ExpressionTemplates>
                    @@ -502,7 +546,7 @@
                           

                    - Non-member + Non-member standard library function support
                    unmentionable-expression-template-type    abs    (const number-or-expression-template-type&);
                    @@ -561,14 +605,14 @@
                           

                    - Traits Class + Traits Class Support
                    template <class T>
                     struct component_type;
                     

                    - If this is a type with mutiple components (for example rational or complex + If this is a type with multiple components (for example rational or complex types), then this trait has a single member type that is the type of those components.

                    @@ -580,12 +624,15 @@ where N is one of the enumerated values number_kind_integer, number_kind_floating_point, - number_kind_rational or - number_kind_fixed_point. + number_kind_rational, number_kind_fixed_point, or number_kind_unknown. This traits class + is specialized for any type that has std::numeric_limits + support as well as for classes in this library: which means it can be used + for generic code that must work with built in arithmetic types as well as + multiprecision ones.

                    - Integer + Integer functions
                    unmentionable-expression-template-type    pow(const number-or-expression-template-type& b, unsigned p);
                    @@ -666,7 +713,7 @@
                           

                    - Rational + Rational Number Functions
                    typename component_type<number-or-expression-template-type>::type numerator  (const number-or-expression-template-type&);
                    @@ -678,7 +725,7 @@
                           

                    - Boost.Math + Boost.Math Interoperability Support
                    namespace boost{ namespace math{
                    @@ -701,7 +748,7 @@
                           

                    - std::numeric_limits + std::numeric_limits support
                    namespace std{
                    diff --git a/doc/html/boost_multiprecision/ref/tom_int_ref.html b/doc/html/boost_multiprecision/ref/tom_int_ref.html
                    index 5d7cf7bd..3134b00b 100644
                    --- a/doc/html/boost_multiprecision/ref/tom_int_ref.html
                    +++ b/doc/html/boost_multiprecision/ref/tom_int_ref.html
                    @@ -3,7 +3,7 @@
                     
                     tom_int
                     
                    -
                    +
                     
                     
                     
                    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html
                    index 8b64cd8e..1ed672ca 100644
                    --- a/doc/html/boost_multiprecision/tut.html
                    +++ b/doc/html/boost_multiprecision/tut.html
                    @@ -3,7 +3,7 @@
                     
                     Tutorial
                     
                    -
                    +
                     
                     
                     
                    diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html
                    index c288abe4..cb5c0664 100644
                    --- a/doc/html/boost_multiprecision/tut/conversions.html
                    +++ b/doc/html/boost_multiprecision/tut/conversions.html
                    @@ -3,7 +3,7 @@
                     
                     Constructing and Interconverting Between Number Types
                     
                    -
                    +
                     
                     
                     
                    @@ -22,14 +22,26 @@
                             All of the number types that are based on number
                             have certain conversion rules in common. In particular:
                           

                    -
                    • +
                      • Any number type can be constructed (or assigned) from any builtin arithmetic - type: + type, as long as the conversion isn't lossy (for example float to int + conversion):
                      cpp_dec_float_50 df(0.5); // OK construction from double
                       cpp_int          i(450);  // OK constructs from signed int
                      +cpp_int          j = 3.14; // Error, lossy conversion.
                       
                      -
                      • +
                        • + A number can be explicitly constructed from an arithmetic type, even + when the conversion is lossy: +
                        +
                        cpp_int          i(3.14);  // OK explicit conversion
                        +i = static_cast<cpp_int>(3.14)  // OK explicit conversion
                        +i.assign(3.14);                 // OK, explicit assign and avoid a temporary from the cast above
                        +i = 3.14;                       // Error, no implicit assignment operator for lossy conversion.
                        +cpp_int          j = 3.14;      // Error, no implicit constructor for lossy conversion.
                        +
                        +
                        • A number can be converted to any built in type, via the convert_to member function: @@ -40,7 +52,7 @@

                          Additional conversions may be supported by particular backends.

                          -
                          • +
                            • A number can be converted to any built in type, via an explicit conversion operator: this functionality is only available on compilers supporting C++11's explicit conversion @@ -50,19 +62,25 @@ int i = z; // Error, implicit conversion not allowed. int j = static_cast<int>(z); // OK explicit conversion.
                    -
                    • - Any number type can be constructed (or assigned) from a const char* or a std::string: +
                      • + Any number type can be explicitly constructed (or + assigned) from a const char* + or a std::string:
                      // pi to 50 places from a string:
                      -cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
                      +cpp_dec_float_50 df("3.14159265358979323846264338327950288419716939937510");
                       // Integer type will automatically detect "0x" and "0" prefixes and parse the string accordingly:
                      -cpp_int          i  = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000";
                      +cpp_int          i("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000");
                       // Invalid input always results in a std::runtime_error being thrown:
                      -i = std::string("3.14");
                      +i = static_cast<cpp_int>("3.14");
                      +// implicit conversions from strings are not allowed:
                      +i = "23"; // Error, no assignment operator for implicit conversion from string
                      +// assign member function, avoids having to create a temporary via a static_cast:
                      +i.assign("23");  // OK
                       
                      -
                      • - Any number type will interoperate with the builtin type in arithmetic - expressions: +
                        • + Any number type will interoperate with the builtin types in arithmetic + expressions as long as the conversions are not lossy:
                        // pi to 50 places from a string:
                         cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
                        @@ -70,12 +88,11 @@
                         // than constructing a temporary:
                         df *= 2;
                         
                        -// There is a need to be careful with integer types though:
                        +// You can't mix integer types with floats though:
                         cpp_int i = 2;
                        -// Ooops, this really just multiplies by 3:
                        -i *= 3.14;
                        +i *= 3.14;  // Error, no *= operator will be found.
                         
                        -
                        • +
                          • Any number type can be streamed to and from the C++ iostreams:
                          cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510";
                          @@ -87,22 +104,40 @@
                           // Now print in hex format with prefix:
                           std::cout << std::hex << std::showbase << i << std::endl;
                           
                          -
                          • +
                            • + Interconversions between number types of the same family are allowed + and are implicit conversions if no loss of precision is involved, and + explicit if it is: +
                            +
                            int128       i128 = 0;
                            +int266       i256 = i128;  // OK implicit widening conversion
                            +i128              = i256;  // Error, no assignment operator found, narrowing conversion is explict
                            +i128              = static_cast<int128>(i256); // OK, explicit narrowing conversion
                            +
                            +mpz_int      z    = 0;
                            +mpf_float    f    = z;    // OK, GMP handles this conversion natively, and it's not lossy and therefore implicit
                            +
                            +mpf_float_50 f50  = 2;
                            +f                 = f50;  // OK, conversion from fixed to variable precision, f will have 50 digits precision.
                            +f50               = f;    // Error, conversion from variable to fixed precision is potentially lossy, explicit cast required.
                            +
                            +
                            • Some interconversions between number types are completely generic, and - are always available: + are always available, albeit the conversions are always explicit:
                            cpp_int cppi(2);
                             // We can always convert between numbers of the same category - 
                            -// int to int, rational to rational, or float to float, so this is OK:
                            -mpz_int z = cppi;
                            +// int to int, rational to rational, or float to float, so this is OK
                            +// as long as we use an explicit conversion:
                            +mpz_int z(cppi);
                             // We can always promote from int to rational, int to float, or rational to float:
                            -cpp_rational     cppr = cppi;  // OK, int to rational
                            -cpp_dec_float_50 df =   cppi;  // OK, int to float
                            -df                  =   cppr;  // OK, rational to float
                            -// However narrowing conversions always fail:
                            +cpp_rational     cppr(cppi);  // OK, int to rational
                            +cpp_dec_float_50 df(cppi);    // OK, int to float
                            +df                  = static_cast<cpp_dec_float_50>(cppr);  // OK, explicit rational to float conversion
                            +// However narrowing and/or implicit conversions always fail:
                             cppi                =   df;    // Compiler error, conversion not allowed
                             
                            -
                            • +
                              • Other interconversions may be allowed as special cases, whenever the backend allows it:
                              @@ -112,7 +147,9 @@

                    More information on what additional types a backend supports conversions - from are given in the tutorial for each backend. + from are given in the tutorial for each backend. The converting constructor + will be implict if the backend's converting constructor is also implicit, + and explicit if the backends converting constructor is also explicit.

                  diff --git a/doc/html/boost_multiprecision/tut/floats.html b/doc/html/boost_multiprecision/tut/floats.html index 45d29397..171fa60d 100644 --- a/doc/html/boost_multiprecision/tut/floats.html +++ b/doc/html/boost_multiprecision/tut/floats.html @@ -3,7 +3,7 @@ Floating Point Numbers - + diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html index 268d472b..e0a56312 100644 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -3,7 +3,7 @@ cpp_dec_float - + @@ -51,7 +51,7 @@

                  Things you should know when using this type:

                  -
                    +
                    • Default constructed cpp_dec_floats have a value of zero. @@ -93,7 +93,7 @@
                    - cpp_dec_float + cpp_dec_float example:

                    diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg.html index 90d9d20f..238d5aff 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg.html @@ -3,7 +3,7 @@ Examples - + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html index 46500c20..4a7b521e 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html @@ -3,7 +3,7 @@ Area of Circle - + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html index b7621a91..f5599b78 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html @@ -3,7 +3,7 @@ Calculating an Integral - + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html index e3e4c8e0..fbece29c 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html @@ -3,7 +3,7 @@ Defining a Lambda Function. - + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html index 71e7e9a9..75c6287d 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html @@ -3,7 +3,7 @@ Calculating a Derivative - + diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html index 2c28c3be..2a6884ec 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html @@ -3,7 +3,7 @@ Polynomial Evaluation - + diff --git a/doc/html/boost_multiprecision/tut/floats/gmp_float.html b/doc/html/boost_multiprecision/tut/floats/gmp_float.html index e60bb835..d420e0c4 100644 --- a/doc/html/boost_multiprecision/tut/floats/gmp_float.html +++ b/doc/html/boost_multiprecision/tut/floats/gmp_float.html @@ -3,7 +3,7 @@ gmp_float - + @@ -66,7 +66,7 @@ of number<mpf_float<N> > are copy constructible and assignable from:

                    -
                      +
                      • The GMP native types mpf_t, mpz_t, mpq_t. @@ -86,7 +86,7 @@

                        Things you should know when using this type:

                        -
                          +
                          • Default constructed gmp_floats have the value zero (this is the GMP @@ -134,8 +134,8 @@
                          - - GMP example: + + GMP example:

                          diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html index 183ccfdc..53692329 100644 --- a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -3,7 +3,7 @@ mpfr_float - + @@ -66,7 +66,7 @@ of number<mpfr_float_backend<N> > are copy constructible and assignable from:

                          -
                            +
                            • The GMP native types mpf_t, mpz_t, mpq_t. @@ -87,7 +87,7 @@

                              Things you should know when using this type:

                              -
                                +
                                • A default constructed mpfr_float_backend is set to a NaN (this is the default MPFR @@ -123,8 +123,8 @@
                                - - MPFR example: + + MPFR example:

                                diff --git a/doc/html/boost_multiprecision/tut/ints.html b/doc/html/boost_multiprecision/tut/ints.html index 754859f0..2494b3ac 100644 --- a/doc/html/boost_multiprecision/tut/ints.html +++ b/doc/html/boost_multiprecision/tut/ints.html @@ -3,7 +3,7 @@ Integer Types - + diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html index 65301980..c1be7123 100644 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -3,7 +3,7 @@ cpp_int - + @@ -60,7 +60,7 @@

                                -
                                +
                                MinBits

                                Determines the number of Bits to store directly within the object @@ -91,7 +91,7 @@

                                Things you should know when using this type:

                                -
                                  +
                                  • Default constructed cpp_int_backends have the value zero. @@ -151,7 +151,7 @@
                                  - Example: + Example:

                                  diff --git a/doc/html/boost_multiprecision/tut/ints/egs.html b/doc/html/boost_multiprecision/tut/ints/egs.html index 145a22b2..bc357417 100644 --- a/doc/html/boost_multiprecision/tut/ints/egs.html +++ b/doc/html/boost_multiprecision/tut/ints/egs.html @@ -3,7 +3,7 @@ Examples - + diff --git a/doc/html/boost_multiprecision/tut/ints/egs/bitops.html b/doc/html/boost_multiprecision/tut/ints/egs/bitops.html index cd9dbdc3..9b061f26 100644 --- a/doc/html/boost_multiprecision/tut/ints/egs/bitops.html +++ b/doc/html/boost_multiprecision/tut/ints/egs/bitops.html @@ -3,7 +3,7 @@ Bit Operations - + diff --git a/doc/html/boost_multiprecision/tut/ints/egs/factorials.html b/doc/html/boost_multiprecision/tut/ints/egs/factorials.html index bc812cd7..76a984f4 100644 --- a/doc/html/boost_multiprecision/tut/ints/egs/factorials.html +++ b/doc/html/boost_multiprecision/tut/ints/egs/factorials.html @@ -3,7 +3,7 @@ Factorials - + diff --git a/doc/html/boost_multiprecision/tut/ints/gmp_int.html b/doc/html/boost_multiprecision/tut/ints/gmp_int.html index 75dfcbf9..cbb2d7f6 100644 --- a/doc/html/boost_multiprecision/tut/ints/gmp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/gmp_int.html @@ -3,7 +3,7 @@ gmp_int - + @@ -41,7 +41,7 @@ mpz_int is copy constructible and assignable from:

                                  -
                                    +
                                    • The GMP native types: mpf_t, mpz_t, mpq_t. @@ -59,7 +59,7 @@

                                      Things you should know when using this type:

                                      -
                                        +
                                        • No changes are made to the GMP library's global settings - so you can safely mix this type with existing code that uses GMP. @@ -97,7 +97,7 @@
                                        - Example: + Example:

                                        diff --git a/doc/html/boost_multiprecision/tut/ints/tom_int.html b/doc/html/boost_multiprecision/tut/ints/tom_int.html index b242c3f1..ac7f51bd 100644 --- a/doc/html/boost_multiprecision/tut/ints/tom_int.html +++ b/doc/html/boost_multiprecision/tut/ints/tom_int.html @@ -3,7 +3,7 @@ tom_int - + @@ -39,7 +39,7 @@

                                        Things you should know when using this type:

                                        -
                                          +
                                          • Default constructed objects have the value zero (this is libtommath's default behavior). @@ -71,7 +71,7 @@
                                          - Example: + Example:

                                          diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html index ae6e1e3f..baf4517d 100644 --- a/doc/html/boost_multiprecision/tut/primetest.html +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -3,7 +3,7 @@ Primality Testing - + @@ -35,8 +35,8 @@ then n is prime with probability 0.25^trials. The algorithm used performs some trial divisions to exclude small prime factors, does one Fermat test to exclude many more composites, and then uses the Miller-Rabin - algorithm straight out of Knuth Vol 2, which recomends 25 trials for a pretty - strong likelyhood that n is prime. + algorithm straight out of Knuth Vol 2, which recommends 25 trials for a pretty + strong likelihood that n is prime.

                                          The third optional argument is for a Uniform Random Number Generator from diff --git a/doc/html/boost_multiprecision/tut/random.html b/doc/html/boost_multiprecision/tut/random.html index 6f0d438b..e52df62e 100644 --- a/doc/html/boost_multiprecision/tut/random.html +++ b/doc/html/boost_multiprecision/tut/random.html @@ -3,7 +3,7 @@ Generating Random Numbers - + diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 2f156532..9dcaf83e 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -3,7 +3,7 @@ Rational Number Types - + diff --git a/doc/html/boost_multiprecision/tut/rational/br.html b/doc/html/boost_multiprecision/tut/rational/br.html index 0f6c0044..c8802a42 100644 --- a/doc/html/boost_multiprecision/tut/rational/br.html +++ b/doc/html/boost_multiprecision/tut/rational/br.html @@ -3,7 +3,7 @@ Use With Boost.Rational - + diff --git a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html index 9c07ed72..445989b1 100644 --- a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html @@ -3,7 +3,7 @@ cpp_rational - + @@ -55,7 +55,7 @@

                                          Things you should know when using this type:

                                          -
                                            +
                                            • Default constructed cpp_rationals have the value zero. @@ -72,7 +72,7 @@
                                            - Example: + Example:

                                            diff --git a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html index f8e6dfc5..2d1f7fb8 100644 --- a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html @@ -3,7 +3,7 @@ gmp_rational - + @@ -41,7 +41,7 @@ of number<gmp_rational> are copy constructible and assignable from:

                                            -
                                              +
                                              • The GMP native types: mpz_t, mpq_t.
                                              • @@ -70,7 +70,7 @@

                                                Things you should know when using this type:

                                                -
                                                  +
                                                  • Default constructed mpq_rationals have the value zero (this is the GMP @@ -98,7 +98,7 @@
                                                  - Example: + Example:

                                                  diff --git a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html index e377fe2e..5a7b69ec 100644 --- a/doc/html/boost_multiprecision/tut/rational/rational_adapter.html +++ b/doc/html/boost_multiprecision/tut/rational/rational_adapter.html @@ -3,7 +3,7 @@ rational_adapter - + diff --git a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html index 11982c13..432d1012 100644 --- a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html @@ -3,7 +3,7 @@ tommath_rational - + @@ -51,7 +51,7 @@

                                                  Things you should know when using this type:

                                                  -
                                @@ -118,7 +120,7 @@
                  - +

                  Last revised: August 09, 2012 at 17:32:59 GMT

                  Last revised: August 27, 2012 at 12:20:10 GMT


                  diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index c05e6e9a..bef12a15 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -134,7 +134,7 @@ However, there are still many simple expressions such as: a = b * c; -Which don't noticably benefit from move support. Therefore, optimal performance comes from having both +Which don't noticeably benefit from move support. Therefore, optimal performance comes from having both move-support, and expression templates enabled. Note that while "moved-from" objects are left in a sane state, they have an unspecified value, and the only permitted @@ -145,8 +145,6 @@ object's internal state), while maintaining usability in the standard library co [h4 Expression Templates] -TODO: compare to rvalue refs. - Class `number` is expression-template-enabled: that means that rather than having a multiplication operator that looks like this: @@ -171,7 +169,7 @@ is. The great advantage of this method is the ['elimination of temporaries]: for example the "naive" implementation of `operator*` above, requires one temporary for computing the result, and at least another one to return it. It's true that sometimes this overhead can be reduced by using move-semantics, but it can't be eliminated completely. For example, -lets suppose we're evaluating a polynomial via Horners method, something like this: +lets suppose we're evaluating a polynomial via Horner's method, something like this: T a[7] = { /* some values */ }; //.... @@ -887,10 +885,20 @@ So for example, given an integer back-end type `MyIntegerBackend`, the use would All of the number types that are based on `number` have certain conversion rules in common. In particular: -* Any number type can be constructed (or assigned) from any builtin arithmetic type: +* Any number type can be constructed (or assigned) from any builtin arithmetic type, as long + as the conversion isn't lossy (for example float to int conversion): cpp_dec_float_50 df(0.5); // OK construction from double cpp_int i(450); // OK constructs from signed int + cpp_int j = 3.14; // Error, lossy conversion. + +* A number can be explicitly constructed from an arithmetic type, even when the conversion is lossy: + + cpp_int i(3.14); // OK explicit conversion + i = static_cast(3.14) // OK explicit conversion + i.assign(3.14); // OK, explicit assign and avoid a temporary from the cast above + i = 3.14; // Error, no implicit assignment operator for lossy conversion. + cpp_int j = 3.14; // Error, no implicit constructor for lossy conversion. * A `number` can be converted to any built in type, via the `convert_to` member function: @@ -906,16 +914,21 @@ this functionality is only available on compilers supporting C++11's explicit co int i = z; // Error, implicit conversion not allowed. int j = static_cast(z); // OK explicit conversion. -* Any number type can be constructed (or assigned) from a `const char*` or a `std::string`: +* Any number type can be ['explicitly] constructed (or assigned) from a `const char*` or a `std::string`: // pi to 50 places from a string: - cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510"; + cpp_dec_float_50 df("3.14159265358979323846264338327950288419716939937510"); // Integer type will automatically detect "0x" and "0" prefixes and parse the string accordingly: - cpp_int i = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000"; + cpp_int i("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000"); // Invalid input always results in a std::runtime_error being thrown: - i = std::string("3.14"); + i = static_cast("3.14"); + // implicit conversions from strings are not allowed: + i = "23"; // Error, no assignment operator for implicit conversion from string + // assign member function, avoids having to create a temporary via a static_cast: + i.assign("23"); // OK -* Any number type will interoperate with the builtin type in arithmetic expressions: +* Any number type will interoperate with the builtin types in arithmetic expressions as long as the conversions +are not lossy: // pi to 50 places from a string: cpp_dec_float_50 df = "3.14159265358979323846264338327950288419716939937510"; @@ -923,10 +936,9 @@ this functionality is only available on compilers supporting C++11's explicit co // than constructing a temporary: df *= 2; - // There is a need to be careful with integer types though: + // You can't mix integer types with floats though: cpp_int i = 2; - // Ooops, this really just multiplies by 3: - i *= 3.14; + i *= 3.14; // Error, no *= operator will be found. * Any number type can be streamed to and from the C++ iostreams: @@ -940,17 +952,33 @@ this functionality is only available on compilers supporting C++11's explicit co // Now print in hex format with prefix: std::cout << std::hex << std::showbase << i << std::endl; -* Some interconversions between number types are completely generic, and are always available: +* Interconversions between number types of the same family are allowed and are implicit conversions if no +loss of precision is involved, and explicit if it is: + + int128 i128 = 0; + int266 i256 = i128; // OK implicit widening conversion + i128 = i256; // Error, no assignment operator found, narrowing conversion is explict + i128 = static_cast(i256); // OK, explicit narrowing conversion + + mpz_int z = 0; + mpf_float f = z; // OK, GMP handles this conversion natively, and it's not lossy and therefore implicit + + mpf_float_50 f50 = 2; + f = f50; // OK, conversion from fixed to variable precision, f will have 50 digits precision. + f50 = f; // Error, conversion from variable to fixed precision is potentially lossy, explicit cast required. + +* Some interconversions between number types are completely generic, and are always available, albeit the conversions are always ['explicit]: cpp_int cppi(2); // We can always convert between numbers of the same category - - // int to int, rational to rational, or float to float, so this is OK: - mpz_int z = cppi; + // int to int, rational to rational, or float to float, so this is OK + // as long as we use an explicit conversion: + mpz_int z(cppi); // We can always promote from int to rational, int to float, or rational to float: - cpp_rational cppr = cppi; // OK, int to rational - cpp_dec_float_50 df = cppi; // OK, int to float - df = cppr; // OK, rational to float - // However narrowing conversions always fail: + cpp_rational cppr(cppi); // OK, int to rational + cpp_dec_float_50 df(cppi); // OK, int to float + df = static_cast(cppr); // OK, explicit rational to float conversion + // However narrowing and/or implicit conversions always fail: cppi = df; // Compiler error, conversion not allowed * Other interconversions may be allowed as special cases, whenever the backend allows it: @@ -960,6 +988,8 @@ this functionality is only available on compilers supporting C++11's explicit co mpf_float i(m); // copies the value of the native type. More information on what additional types a backend supports conversions from are given in the tutorial for each backend. +The converting constructor will be implict if the backend's converting constructor is also implicit, and explicit if the +backends converting constructor is also explicit. [endsect] @@ -1010,7 +1040,7 @@ These functions perform a Miller-Rabin test for primality, if the result is `fal while if the result is `true` then /n/ is prime with probability ['0.25^trials]. The algorithm used performs some trial divisions to exclude small prime factors, does one Fermat test to exclude many more composites, and then uses the Miller-Rabin algorithm straight out of -Knuth Vol 2, which recomends 25 trials for a pretty strong likelyhood that /n/ is prime. +Knuth Vol 2, which recommends 25 trials for a pretty strong likelihood that /n/ is prime. The third optional argument is for a Uniform Random Number Generator from Boost.Random. When not provided the `mt19937` generator is used. Note that when producing random primes then you should probably use a different random number generator @@ -1039,6 +1069,7 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba number(); number(see-below); number& operator=(see-below); + number& assign(see-below); // Member operators number& operator+=(const ``['see-below]``&); @@ -1079,7 +1110,8 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba // Comparison: int compare(const number& o)const; template - typename enable_if, int>::type compare(const V& o)const; + typename enable_if >, int>::type + compare(const V& o)const; // Access to the underlying implementation: Backend& backend(); const Backend& backend()const; @@ -1221,17 +1253,38 @@ Class `number` has two template arguments: number(); number(see-below); number& operator=(see-below); + number& assign(see-below); Type `number` is default constructible, and both copy constructible and assignable from: * Itself. * An expression template which is the result of one of the arithmetic operators. -* Any builtin arithmetic type. -* A `std::string` or any type which is convertible to `const char*`. -* Any type that the Backend is constructible or assignable from. +* Any builtin arithmetic type, as long as the result would not be lossy (for example float to integer conversion). +* Any type that the Backend is implicitly constructible or assignable from. * An rvalue reference to another `number`. Move-semantics are used for construction if the backend also supports rvalue reference construction. In the case of assignment, move semantics are always supported when the argument is an rvalue reference irrespective of the backend. +* Any type in the same family, as long as no loss of precision is involved. For example from `int128` to `int256`, +or `cpp_dec_float_50` to `cpp_dec_float_100`. + +Type `number` is explicitly constructible from: + +* Any type mentioned above. +* A `std::string` or any type which is convertible to `const char*`. +* Any arithmetic type (including those that would result in lossy conversions). +* Any type in the same family, including those that result in loss of precision. +* Any type that the Backend is explicitly constructible from. +* Any pair of types for which a generic interconversion exists: that is from integer to integer, integer +to rational, integer to float, rational to rational, rational to float, or float to float. + +The assign member function is available for any type for which an explicit converting constructor exists. +It is intended to be used where a temporary generated from an explicit assignment would be expensive, for example: + + mpfr_float_50 f50; + mpfr_float_100 f100; + + f50 = static_cast(f100); // explicit cast create a temporary + f50.assign(f100); // explicit call to assign create no temporary In addition, if the type has multiple components (for example rational or complex number types), then there is a two argument constructor: @@ -1261,8 +1314,8 @@ These operators all take their usual arithmetic meanings. The arguments to these operators is either: * Another `number`. -* A builtin arithmetic type. * An expression template derived from `number`. +* Any type implicitly convertible to `number`. For the left and right shift operations, the argument must be a builtin integer type with a positive value (negative values result in a `std::runtime_error` being thrown). @@ -1317,7 +1370,8 @@ the default precision and the precision of `*this` respectively. int compare(const number& o)const; template - typename enable_if, int>::type compare(const V& other)const; + typename enable_if >, int>::type + compare(const V& other)const; Returns: @@ -1447,14 +1501,16 @@ such as fixed precision or complex types are added to the library later, then th template struct component_type; -If this is a type with mutiple components (for example rational or complex types), then this trait has a single member +If this is a type with multiple components (for example rational or complex types), then this trait has a single member `type` that is the type of those components. template struct number_category; A traits class that inherits from `mpl::int_` where `N` is one of the enumerated values `number_kind_integer`, `number_kind_floating_point`, -`number_kind_rational` or `number_kind_fixed_point`. +`number_kind_rational`, `number_kind_fixed_point`, or `number_kind_unknown`. This traits class is specialized for any type that has +`std::numeric_limits` support as well as for classes in this library: which means it can be used for generic code that must work +with built in arithmetic types as well as multiprecision ones. [h4 Integer functions] @@ -1595,7 +1651,7 @@ The template arguments are: [[Signed][When `true` the type is signed, otherwise unsigned. Note that unsigned types are currently only supported when the Allocator parameter is `void`.]] [[Allocator][The allocator used for dynamic memory allocation. This parameter can be `void`, in which case - no dymanic memory will ever be allocated.]] + no dynamic memory will ever be allocated.]] ] The type of `number_category >::type` is `mpl::int_`. @@ -1732,18 +1788,61 @@ More information on this type can be found in the [link boost_multiprecision.tut [endsect] +[section:internals Internal Support Code] + +There are some traits classes which authors of new backends should be aware of: + + namespace boost{ namespace multiprecision{ namespace detail{ + + template + struct is_explicitly_convertible; + + }}} + +Inherits from `boost::integral_constant` if type `From` has an explicit conversion from `To`. + +For compilers that support C++11 SFINAE-expressions this trait should "just work". Otherwise it inherits +from `boost::is_convertible::type`, and will need to be specialised for Backends that have +constructors marked as `explicit`. + + template + struct is_lossy_conversion + { + static const bool value = see below; + }; + +Member `value` is true if the conversion from `From` to `To` would result in a loss of precision, and `false` otherwise. + +The default version of this trait simply checks whether the ['kind] of conversion (for example from a floating point to an integer type) +is inherently lossy. Note that if either of the types `From` or `To` are of an unknown number category (because `number_category` is not +specialised for that type) then this trait will be `true`. + + template + struct is_restricted_conversion + { + static const bool value = see below; + }; + +Member `value` is `true` if `From` is only explicitly convertible to `To` and not implicitly convertible, or +if `is_lossy_conversion::value` is `true`. Otherwise `false`. + +Note that while this trait is the ultimate arbiter of which constructors are marked as `explicit` in class `number`, +authors of backend types should generally specialise one of the traits above, rather than this one directly. + +[endsect] + [section:backendconc Backend Requirements] The requirements on the `Backend` template argument to `number` are split up into -sections: compulsary and optional. +sections: compulsory and optional. -Compulsary requirements have no default implementation in the library, therefore if the feature +Compulsory requirements have no default implementation in the library, therefore if the feature they implement is to be supported at all, then they must be implemented by the backend. Optional requirements have default implementations that are called if the backend doesn't provide it's own. Typically the backend will implement these to improve performance. -In the following tables, type B is the `Backend` template arument to `number`, `b` and `b2` are +In the following tables, type B is the `Backend` template argument to `number`, `b` and `b2` are a variables of type B, `cb`, `cb2` and `cb3` are constant variables of type `const B`, `rb` is a variable of type `B&&`, `a` and `a2` are variables of Arithmetic type, `s` is a variable of type `const char*`, `ui` is a variable of type `unsigned`, `bb` is a variable of type `bool`, @@ -1816,7 +1915,8 @@ of type B2. [[`B(a)`][`B`][Direct construction from an arithmetic type. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`. When not provided, this operation is simulated using default-construction followed by assignment.][[space]]] -[[`B(b2)`][`B`][Copy constructor from a different back-end type. When not provided, a generic interconversion routine is used.][[space]]] +[[`B(b2)`][`B`][Copy constructor from a different back-end type. When not provided, a generic interconversion routine is used. + This constructor may be `explicit` if the corresponding frontend constructor should also be `explicit`.][[space]]] [[`b = b2`][`b&`][Assignment operator from a different back-end type. When not provided, a generic interconversion routine is used.][[space]]] [[`assign_components(b, a, a)`][`void`][Assigns to `b` the two components in the following arguments. Only applies to rational and complex number types. @@ -2475,6 +2575,15 @@ Windows Vista machine. [section:hist History] +[h4 Post review changes] + +* Non-expression template operators further optimised with rvalue reference support. +* Many functions made made `constexp`? +* Differentiate between explicit and implicit conversions in the number constructor. +* Removed "mp_" prefix from types. + +[h4 Pre-review history] + *2011-2012, John Maddock adds an expression template enabled front end to Christopher's code, and adds support for other backends. * 2011, Christopher Kormanyos publishes the decimal floating point code under the Boost @@ -2500,9 +2609,6 @@ More a list of what ['could] be done, rather than what ['should] be done (which [h4 Pre-Review Comments] -* Can the non-expression template operators be further optimised with rvalue reference support? -* Can any functions - in particular value initialization - be made `constexp`? -* Can we differentiate between explicit and implicit conversions in the number constructor (may need some new type traits)? * Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. Open question - what should be the default - int32_t or int64_t? diff --git a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp index f06c9577..adc42b68 100644 --- a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp @@ -25,47 +25,47 @@ namespace concepts{ #pragma warning(disable:4244) #endif -struct mp_number_backend_float_architype +struct number_backend_float_architype { typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list float_types; typedef int exponent_type; - mp_number_backend_float_architype() + number_backend_float_architype() { std::cout << "Default construct" << std::endl; } - mp_number_backend_float_architype(const mp_number_backend_float_architype& o) + number_backend_float_architype(const number_backend_float_architype& o) { std::cout << "Copy construct" << std::endl; m_value = o.m_value; } - mp_number_backend_float_architype& operator = (const mp_number_backend_float_architype& o) + number_backend_float_architype& operator = (const number_backend_float_architype& o) { m_value = o.m_value; std::cout << "Assignment (" << m_value << ")" << std::endl; return *this; } - mp_number_backend_float_architype& operator = (unsigned long long i) + number_backend_float_architype& operator = (unsigned long long i) { m_value = i; std::cout << "UInt Assignment (" << i << ")" << std::endl; return *this; } - mp_number_backend_float_architype& operator = (long long i) + number_backend_float_architype& operator = (long long i) { m_value = i; std::cout << "Int Assignment (" << i << ")" << std::endl; return *this; } - mp_number_backend_float_architype& operator = (long double d) + number_backend_float_architype& operator = (long double d) { m_value = d; std::cout << "long double Assignment (" << d << ")" << std::endl; return *this; } - mp_number_backend_float_architype& operator = (const char* s) + number_backend_float_architype& operator = (const char* s) { try { @@ -78,7 +78,7 @@ struct mp_number_backend_float_architype std::cout << "const char* Assignment (" << s << ")" << std::endl; return *this; } - void swap(mp_number_backend_float_architype& o) + void swap(number_backend_float_architype& o) { std::cout << "Swapping (" << m_value << " with " << o.m_value << ")" << std::endl; std::swap(m_value, o.m_value); @@ -108,7 +108,7 @@ struct mp_number_backend_float_architype std::cout << "Negating (" << m_value << ")" << std::endl; m_value = -m_value; } - int compare(const mp_number_backend_float_architype& o)const + int compare(const number_backend_float_architype& o)const { std::cout << "Comparison" << std::endl; return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0); @@ -131,86 +131,86 @@ struct mp_number_backend_float_architype long double m_value; }; -inline void eval_add(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_add(number_backend_float_architype& result, const number_backend_float_architype& o) { std::cout << "Addition (" << result.m_value << " += " << o.m_value << ")" << std::endl; result.m_value += o.m_value; } -inline void eval_subtract(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_subtract(number_backend_float_architype& result, const number_backend_float_architype& o) { std::cout << "Subtraction (" << result.m_value << " -= " << o.m_value << ")" << std::endl; result.m_value -= o.m_value; } -inline void eval_multiply(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_multiply(number_backend_float_architype& result, const number_backend_float_architype& o) { std::cout << "Multiplication (" << result.m_value << " *= " << o.m_value << ")" << std::endl; result.m_value *= o.m_value; } -inline void eval_divide(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& o) +inline void eval_divide(number_backend_float_architype& result, const number_backend_float_architype& o) { std::cout << "Division (" << result.m_value << " /= " << o.m_value << ")" << std::endl; result.m_value /= o.m_value; } -inline void eval_convert_to(unsigned long long* result, const mp_number_backend_float_architype& val) +inline void eval_convert_to(unsigned long long* result, const number_backend_float_architype& val) { *result = static_cast(val.m_value); } -inline void eval_convert_to(long long* result, const mp_number_backend_float_architype& val) +inline void eval_convert_to(long long* result, const number_backend_float_architype& val) { *result = static_cast(val.m_value); } -inline void eval_convert_to(long double* result, mp_number_backend_float_architype& val) +inline void eval_convert_to(long double* result, number_backend_float_architype& val) { *result = val.m_value; } -inline void eval_frexp(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg, int* exp) +inline void eval_frexp(number_backend_float_architype& result, const number_backend_float_architype& arg, int* exp) { result = std::frexp(arg.m_value, exp); } -inline void eval_ldexp(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg, int exp) +inline void eval_ldexp(number_backend_float_architype& result, const number_backend_float_architype& arg, int exp) { result = std::ldexp(arg.m_value, exp); } -inline void eval_floor(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) +inline void eval_floor(number_backend_float_architype& result, const number_backend_float_architype& arg) { result = std::floor(arg.m_value); } -inline void eval_ceil(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) +inline void eval_ceil(number_backend_float_architype& result, const number_backend_float_architype& arg) { result = std::ceil(arg.m_value); } -inline void eval_sqrt(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg) +inline void eval_sqrt(number_backend_float_architype& result, const number_backend_float_architype& arg) { result = std::sqrt(arg.m_value); } -inline int eval_fpclassify(const mp_number_backend_float_architype& arg) +inline int eval_fpclassify(const number_backend_float_architype& arg) { return (boost::math::fpclassify)(arg.m_value); } -typedef boost::multiprecision::number mp_number_float_architype; +typedef boost::multiprecision::number mp_number_float_architype; } // namespace template<> -struct number_category : public mpl::int_{}; +struct number_category : public mpl::int_{}; }} // namespaces namespace std{ template -class numeric_limits > : public std::numeric_limits +class numeric_limits > : public std::numeric_limits { typedef std::numeric_limits base_type; - typedef boost::multiprecision::number number_type; + typedef boost::multiprecision::number number_type; public: static number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); } static number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); } diff --git a/test/test_acos.cpp b/test/test_acos.cpp index 97cc96d2..d0943592 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -89,7 +89,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 4a6f102f..39af694c 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1254,7 +1254,7 @@ int main() test > >(); #endif #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 2b56e062..3c913082 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -85,7 +85,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 5e139fdf..cfb2de3d 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -231,7 +231,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_cos.cpp b/test/test_cos.cpp index f31a3bfd..c9c51068 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -285,7 +285,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index b2c82e08..5e08ec0c 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -127,7 +127,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_exp.cpp b/test/test_exp.cpp index 424601dc..f36d7c78 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -167,7 +167,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_fpclassify.cpp b/test/test_fpclassify.cpp index b579daca..4ce78ec1 100644 --- a/test/test_fpclassify.cpp +++ b/test/test_fpclassify.cpp @@ -314,7 +314,7 @@ int main() test(); #endif #ifdef TEST_BACKEND - test >(); + test >(); #endif return boost::report_errors(); } diff --git a/test/test_log.cpp b/test/test_log.cpp index 6426e307..5d6ea4e4 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -195,7 +195,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 6d5c376d..4b95a19d 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -201,7 +201,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 49762f90..6f489637 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -570,7 +570,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_round.cpp b/test/test_round.cpp index d77f24be..f066a9d8 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -400,7 +400,7 @@ int main() test > >(); #endif #ifdef TEST_BACKEND - test >(); + test >(); #endif return boost::report_errors(); } diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 78d1b620..1d208575 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -279,7 +279,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index ae8f11d0..bb47e54f 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -203,7 +203,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index c59be223..cd66f169 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -173,7 +173,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 623585ec..2860fde9 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -122,7 +122,7 @@ void test() int main() { #ifdef TEST_BACKEND - test >(); + test >(); #endif #ifdef TEST_MPF_50 test(); From c7230f94ff7eee9b3430424451ad0975a8ccdc03 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 31 Aug 2012 11:57:55 +0000 Subject: [PATCH 229/256] Extra test cases for more complete coverage. Added test coverage makefile. Fixed errors from extra test cases. Rename a few traits. [SVN r80328] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 12 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 14 +- doc/html/boost_multiprecision/intro.html | 2 +- .../boost_multiprecision/ref/headers.html | 2 +- doc/html/boost_multiprecision/ref/number.html | 18 + doc/html/index.html | 2 +- doc/multiprecision.qbk | 19 +- include/boost/multiprecision/cpp_int.hpp | 77 +++- .../multiprecision/detail/default_ops.hpp | 7 - .../multiprecision/detail/integer_ops.hpp | 12 +- .../boost/multiprecision/detail/no_et_ops.hpp | 2 + .../multiprecision/detail/number_base.hpp | 41 +- .../multiprecision/detail/number_compare.hpp | 48 +-- include/boost/multiprecision/gmp.hpp | 18 +- include/boost/multiprecision/number.hpp | 31 +- test/Jamfile.v2 | 31 +- test/coverage/Makefile | 173 ++++++++ test/test_arithmetic.cpp | 380 ++++++++++++++++-- test/test_cpp_int_conv.cpp | 19 + test/test_int_io.cpp | 2 + test/test_rational_io.cpp | 6 +- 23 files changed, 773 insertions(+), 151 deletions(-) create mode 100644 test/coverage/Makefile diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index b72ad441..521ccd94 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
                  PrevUpHomeNext
                  -
                  +

                  -Function Index

                  +Function Index

                A B C D E F I L M P R S T Z

                diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 06a7803d..11a14593 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
                PrevUpHomeNext
                -
                +

                -Class Index

                +Class Index

                C G I M N T

                @@ -53,6 +53,14 @@
              • +

                is_number

                + +
              • +
              • +

                is_number_expression

                + +
              • +
              • is_restricted_conversion

              • diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index f72413be..c96f5617 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
                PrevUpHomeNext
                -
                +

                -Typedef Index

                +Typedef Index

                C I L M T U

                diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index b09b9e3b..070cf1bb 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
                PrevUpHome
                -
                +

                -Index

                +Index

                A B C D E F G I L M N O P R S T U Z

                @@ -516,6 +516,14 @@
              • +

                is_number

                + +
              • +
              • +

                is_number_expression

                + +
              • +
              • is_restricted_conversion

              • @@ -674,6 +682,8 @@
              • isinf

              • isnan

              • isnormal

              • +
              • is_number

              • +
              • is_number_expression

              • itrunc

              • llround

              • lltrunc

              • diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 083e1186..16fb2968 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -256,7 +256,7 @@ Will very likely result in obscure error messages inside the body of my_proc - since we've passed it an expression template type, and not a number type. Instead we probably need:

                -
                my_proc(my_mp_number_type(a+b));
                +
                my_proc(my_number_type(a+b));
                 

                Having said that, these situations don't occur that often - or indeed not at diff --git a/doc/html/boost_multiprecision/ref/headers.html b/doc/html/boost_multiprecision/ref/headers.html index ab1a9f3d..29926494 100644 --- a/doc/html/boost_multiprecision/ref/headers.html +++ b/doc/html/boost_multiprecision/ref/headers.html @@ -166,7 +166,7 @@

    - concepts/mp_number_archetypes.hpp + concepts/number_archetypes.hpp

    diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index 18b10bbc..100989b0 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -148,6 +148,10 @@ struct component_type; template <class T> struct number_category; +template <class T> +struct is_number; +template <class T> +struct is_number_expression; // Integer specific functions: unmentionable-expression-template-type pow(const number-or-expression-template-type&, unsigned); @@ -630,6 +634,20 @@ for generic code that must work with built in arithmetic types as well as multiprecision ones.

    +
    template <class T>
    +struct is_number;
    +
    +

    + A traits class that inherits from mpl::true_ + if T is an instance of number<>, otherwise from mpl::false_. +

    +
    template <class T>
    +struct is_number_expression;
    +
    +

    + A traits class that inherits from mpl::true_ + if T is an expression template type derived from number<>, otherwise from mpl::false_. +

    Integer diff --git a/doc/html/index.html b/doc/html/index.html index 860f65f8..16147d66 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -120,7 +120,7 @@ - +

    Last revised: August 27, 2012 at 12:20:10 GMT

    Last revised: August 30, 2012 at 17:55:33 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index bef12a15..b94104f6 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -223,7 +223,7 @@ Then calling: Will very likely result in obscure error messages inside the body of `my_proc` - since we've passed it an expression template type, and not a number type. Instead we probably need: - my_proc(my_mp_number_type(a+b)); + my_proc(my_number_type(a+b)); Having said that, these situations don't occur that often - or indeed not at all for non-template functions. In addition, all the functions in the Boost.Math library will automatically convert expression-template arguments @@ -1188,6 +1188,10 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba struct component_type; template struct number_category; + template + struct is_number; + template + struct is_number_expression; // Integer specific functions: ``['unmentionable-expression-template-type]`` pow(const ``['number-or-expression-template-type]``&, unsigned); @@ -1512,6 +1516,17 @@ A traits class that inherits from `mpl::int_` where `N` is one of the enumera `std::numeric_limits` support as well as for classes in this library: which means it can be used for generic code that must work with built in arithmetic types as well as multiprecision ones. + template + struct is_number; + +A traits class that inherits from `mpl::true_` if T is an instance of `number<>`, otherwise from `mpl::false_`. + + template + struct is_number_expression; + +A traits class that inherits from `mpl::true_` if T is an expression template type derived from `number<>`, otherwise from `mpl::false_`. + + [h4 Integer functions] @@ -2196,7 +2211,7 @@ in point of fact this naming convention shouldn't be necessary, but rather works [[rational_adapter.hpp][Defines the `rational_adapter` backend.]] [[cpp_dec_float.hpp][Defines the `cpp_dec_float` backend.]] [[tommath.hpp][Defines the `tommath_int` backend.]] -[[concepts/mp_number_archetypes.hpp][Defines a backend concept architypes for testing use.]] +[[concepts/number_archetypes.hpp][Defines a backend concept architypes for testing use.]] ] [table Implementation Headers] diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 23d91973..39458f29 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1152,7 +1152,7 @@ public: template cpp_int_backend(const cpp_int_backend& other, typename enable_if_c< - (sizeof(cpp_int_backend::local_limb_type) <= sizeof(typename cpp_int_backend::local_limb_type)) + (MinBits2 <= MinBits) && (Signed || !Signed2) >::type* = 0) : base_type() @@ -1168,7 +1168,7 @@ public: template explicit cpp_int_backend(const cpp_int_backend& other, typename disable_if_c< - (sizeof(cpp_int_backend::local_limb_type) <= sizeof(typename cpp_int_backend::local_limb_type)) + (MinBits2 <= MinBits) && (Signed || !Signed2) >::type* = 0) : base_type() @@ -1209,17 +1209,6 @@ public: this->sign(other.sign()); } - cpp_int_backend& operator = (const char* s) - { - try{ - *this->limbs() = boost::lexical_cast(s); - } - catch(const std::exception&) - { - BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Could not interpret the string \"") + s + std::string("\" as a valid integer value."))); - } - return *this; - } BOOST_FORCEINLINE void swap(cpp_int_backend& o) BOOST_NOEXCEPT { this->do_swap(o); @@ -1228,11 +1217,13 @@ private: std::string str(std::ios_base::fmtflags f, const mpl::false_&)const { std::stringstream ss; - ss.flags(f); + ss.flags(f & ~std::ios_base::showpos); ss << *this->limbs(); std::string result; if(this->sign()) result += '-'; + else if(f & std::ios_base::showpos) + result += '+'; result += ss.str(); return result; } @@ -1314,6 +1305,58 @@ private: return result; } public: + cpp_int_backend& operator = (const char* s) + { + std::size_t n = s ? std::strlen(s) : 0; + *this->limbs() = 0; + unsigned radix = 10; + bool isneg = false; + if(n && (*s == '-')) + { + --n; + ++s; + isneg = true; + } + if(n && (*s == '0')) + { + if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) + { + radix = 16; + s +=2; + n -= 2; + } + else + { + radix = 8; + n -= 1; + } + } + if(n) + { + unsigned val; + while(*s) + { + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else if(*s >= 'a' && *s <= 'f') + val = 10 + *s - 'a'; + else if(*s >= 'A' && *s <= 'F') + val = 10 + *s - 'A'; + else + val = radix + 1; + if(val > radix) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); + } + *this->limbs() *= radix; + *this->limbs() += val; + ++s; + } + } + if(isneg) + this->negate(); + return *this; + } std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const { #ifdef BOOST_MP_NO_DOUBLE_LIMB_TYPE_IO @@ -3045,9 +3088,9 @@ public: return number_type(0); } static number_type lowest() BOOST_NOEXCEPT { return (min)(); } - BOOST_STATIC_CONSTEXPR int digits = 0; - BOOST_STATIC_CONSTEXPR int digits10 = 0; - BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR int digits = INT_MAX; + BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; BOOST_STATIC_CONSTEXPR bool is_signed = true; BOOST_STATIC_CONSTEXPR bool is_integer = true; BOOST_STATIC_CONSTEXPR bool is_exact = true; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 0fd06b26..5029bf47 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -174,13 +174,6 @@ inline typename enable_if_c::value && is_convertible::val eval_complement(result, t); } -template -inline bool is_same_object(const T& u, const T&v) BOOST_NOEXCEPT -{ return &u == &v; } -template -BOOST_CONSTEXPR inline bool is_same_object(const T&, const U&) BOOST_NOEXCEPT -{ return false; } - // // Default versions of 3-arg arithmetic functions, these mostly just forward to the 2 arg versions: // diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index 9e53e094..c7ddffcb 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -401,17 +401,17 @@ inline typename enable_if< mpl::and_< mpl::bool_::value == number_kind_integer>, mpl::or_< - is_mp_number, - is_mp_number_expression + is_number, + is_number_expression >, mpl::or_< - is_mp_number, - is_mp_number_expression, + is_number, + is_number_expression, is_integral >, mpl::or_< - is_mp_number, - is_mp_number_expression, + is_number, + is_number_expression, is_integral > >, diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index 23a8b4ac..282f4fea 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -285,6 +285,7 @@ inline typename enable_if, number >::type { number result(a); using default_ops::eval_left_shift; + detail::check_shift_range(b, mpl::bool_<(sizeof(I) > sizeof(std::size_t))>(), is_signed()); eval_left_shift(result.backend(), b); return BOOST_MP_MOVE(result); } @@ -294,6 +295,7 @@ inline typename enable_if, number >::type { number result(a); using default_ops::eval_right_shift; + detail::check_shift_range(b, mpl::bool_<(sizeof(I) > sizeof(std::size_t))>(), is_signed()); eval_right_shift(result.backend(), b); return BOOST_MP_MOVE(result); } diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index ab3e34fe..e5b46e6e 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -18,10 +18,10 @@ template class number; template -struct is_mp_number : public mpl::false_ {}; +struct is_number : public mpl::false_ {}; template -struct is_mp_number > : public mpl::true_ {}; +struct is_number > : public mpl::true_ {}; namespace detail{ @@ -32,17 +32,17 @@ struct expression; } // namespace detail template -struct is_mp_number_expression : public mpl::false_ {}; +struct is_number_expression : public mpl::false_ {}; template -struct is_mp_number_expression > : public mpl::true_ {}; +struct is_number_expression > : public mpl::true_ {}; template struct is_compatible_arithmetic_type : public mpl::bool_< is_convertible::value - && !is_mp_number::value - && !is_mp_number_expression::value> + && !is_number::value + && !is_number_expression::value> {}; namespace detail{ @@ -192,9 +192,9 @@ struct backend_type > template -struct is_mp_number : public mpl::false_{}; +struct is_number : public mpl::false_{}; template -struct is_mp_number > : public mpl::true_{}; +struct is_number > : public mpl::true_{}; template struct is_mp_number_exp : public mpl::false_{}; template @@ -594,6 +594,29 @@ void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, str.insert(0, 1, '+'); } +template +void check_shift_range(V val, const mpl::true_&, const mpl::true_&) +{ + if(val > (std::numeric_limits::max)()) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); + if(val < 0) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); +} +template +void check_shift_range(V val, const mpl::false_&, const mpl::true_&) +{ + if(val < 0) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); +} +template +void check_shift_range(V val, const mpl::true_&, const mpl::false_&) +{ + if(val > (std::numeric_limits::max)()) + BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); +} +template +void check_shift_range(V, const mpl::false_&, const mpl::false_&) BOOST_NOEXCEPT{} + } // namespace detail // @@ -701,7 +724,7 @@ template inline typename enable_if >, detail::expression > >::type operator + (const V& a, const detail::expression >& b) { - return detail::expression, number >(a, b.left_ref()); + return detail::expression >(a, b.left_ref()); } template inline detail::expression, number > > diff --git a/include/boost/multiprecision/detail/number_compare.hpp b/include/boost/multiprecision/detail/number_compare.hpp index 7b881d73..1450508f 100644 --- a/include/boost/multiprecision/detail/number_compare.hpp +++ b/include/boost/multiprecision/detail/number_compare.hpp @@ -74,7 +74,7 @@ inline bool operator == (const number& a, const nu return eval_eq(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator == (const number& a, const Arithmetic& b) { typedef typename detail::canonical::type ct; @@ -90,7 +90,7 @@ inline typename enable_if, typename return eval_eq(a.backend(), t.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator == (const Arithmetic& a, const number& b) { typedef typename detail::canonical::type ct; @@ -98,7 +98,7 @@ inline typename enable_if_c<(is_convertible -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator == (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; @@ -116,7 +116,7 @@ inline typename enable_if, typename return eval_eq(t.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator == (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; @@ -142,7 +142,7 @@ inline bool operator != (const number& a, const nu return !eval_eq(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator != (const number& a, const Arithmetic& b) { typedef typename detail::canonical::type ct; @@ -158,7 +158,7 @@ inline typename enable_if, typename return !eval_eq(a.backend(), t.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator != (const Arithmetic& a, const number& b) { typedef typename detail::canonical::type ct; @@ -166,7 +166,7 @@ inline typename enable_if_c<(is_convertible -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator != (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; @@ -184,7 +184,7 @@ inline typename enable_if, typename return !eval_eq(t.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator != (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; @@ -210,7 +210,7 @@ inline bool operator < (const number& a, const num return eval_lt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator < (const number& a, const Arithmetic& b) { typedef typename detail::canonical::type ct; @@ -226,7 +226,7 @@ inline typename enable_if, typename return eval_lt(a.backend(), t.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator < (const Arithmetic& a, const number& b) { typedef typename detail::canonical::type ct; @@ -234,7 +234,7 @@ inline typename enable_if_c<(is_convertible -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator < (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; @@ -252,7 +252,7 @@ inline typename enable_if, typename return eval_lt(t.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator < (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; @@ -278,7 +278,7 @@ inline bool operator > (const number& a, const num return eval_gt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator > (const number& a, const Arithmetic& b) { typedef typename detail::canonical::type ct; @@ -294,7 +294,7 @@ inline typename enable_if, typename return eval_gt(a.backend(), t.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator > (const Arithmetic& a, const number& b) { typedef typename detail::canonical::type ct; @@ -302,7 +302,7 @@ inline typename enable_if_c<(is_convertible -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator > (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; @@ -320,7 +320,7 @@ inline typename enable_if, typename return eval_gt(t.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator > (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; @@ -346,7 +346,7 @@ inline bool operator <= (const number& a, const nu return !eval_gt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator <= (const number& a, const Arithmetic& b) { typedef typename detail::canonical::type ct; @@ -362,7 +362,7 @@ inline typename enable_if, typename return !eval_gt(a.backend(), t.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator <= (const Arithmetic& a, const number& b) { typedef typename detail::canonical::type ct; @@ -370,7 +370,7 @@ inline typename enable_if_c<(is_convertible -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator <= (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; @@ -388,7 +388,7 @@ inline typename enable_if, typename return !eval_gt(t.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator <= (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; @@ -414,7 +414,7 @@ inline bool operator >= (const number& a, const nu return !eval_lt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator >= (const number& a, const Arithmetic& b) { typedef typename detail::canonical::type ct; @@ -430,7 +430,7 @@ inline typename enable_if, typename return !eval_lt(a.backend(), t.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type operator >= (const Arithmetic& a, const number& b) { typedef typename detail::canonical::type ct; @@ -438,7 +438,7 @@ inline typename enable_if_c<(is_convertible -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator >= (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; @@ -456,7 +456,7 @@ inline typename enable_if, typename return !eval_lt(t.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_mp_number_expression::value && !is_mp_number::value), bool>::type +inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type operator >= (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index a0043ade..719bb41c 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1534,19 +1534,23 @@ inline void eval_lcm(gmp_int& result, const gmp_int& a, const gmp_int& b) { mpz_lcm(result.data(), a.data(), b.data()); } -inline void eval_gcd(gmp_int& result, const gmp_int& a, const unsigned long b) +template +inline typename enable_if_c<(is_unsigned::value && (sizeof(I) <= sizeof(unsigned long)))>::type eval_gcd(gmp_int& result, const gmp_int& a, const I b) { mpz_gcd_ui(result.data(), a.data(), b); } -inline void eval_lcm(gmp_int& result, const gmp_int& a, const unsigned long b) +template +inline typename enable_if_c<(is_unsigned::value && (sizeof(I) <= sizeof(unsigned long)))>::type eval_lcm(gmp_int& result, const gmp_int& a, const I b) { mpz_lcm_ui(result.data(), a.data(), b); } -inline void eval_gcd(gmp_int& result, const gmp_int& a, const long b) +template +inline typename enable_if_c<(is_signed::value && (sizeof(I) <= sizeof(long)))>::type eval_gcd(gmp_int& result, const gmp_int& a, const I b) { mpz_gcd_ui(result.data(), a.data(), std::abs(b)); } -inline void eval_lcm(gmp_int& result, const gmp_int& a, const long b) +template +inline typename enable_if_c::value && ((sizeof(I) <= sizeof(long)))>::type eval_lcm(gmp_int& result, const gmp_int& a, const I b) { mpz_lcm_ui(result.data(), a.data(), std::abs(b)); } @@ -2464,9 +2468,9 @@ public: } static number_type lowest() BOOST_NOEXCEPT { return (min)(); } // Digits are unbounded, use zero for now: - BOOST_STATIC_CONSTEXPR int digits = 0; - BOOST_STATIC_CONSTEXPR int digits10 = 0; - BOOST_STATIC_CONSTEXPR int max_digits10 = 0; + BOOST_STATIC_CONSTEXPR int digits = INT_MAX; + BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; BOOST_STATIC_CONSTEXPR bool is_signed = true; BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = true; diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 2a2f73fd..a8fa5f44 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -356,7 +356,7 @@ public: BOOST_FORCEINLINE typename enable_if, number&>::type operator <<= (V val) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left-shift operation is only valid for integer types"); - check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); + detail::check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); eval_left_shift(m_backend, canonical_value(val)); return *this; } @@ -365,7 +365,7 @@ public: BOOST_FORCEINLINE typename enable_if, number&>::type operator >>= (V val) { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right-shift operation is only valid for integer types"); - check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); + detail::check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed()); eval_right_shift(m_backend, canonical_value(val)); return *this; } @@ -639,29 +639,6 @@ private: } - template - void check_shift_range(V val, const mpl::true_&, const mpl::true_&) - { - if(val > (std::numeric_limits::max)()) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); - if(val < 0) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); - } - template - void check_shift_range(V val, const mpl::false_&, const mpl::true_&) - { - if(val < 0) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a negative value.")); - } - template - void check_shift_range(V val, const mpl::true_&, const mpl::false_&) - { - if(val > (std::numeric_limits::max)()) - BOOST_THROW_EXCEPTION(std::out_of_range("Can not shift by a value greater than std::numeric_limits::max().")); - } - template - void check_shift_range(V, const mpl::false_&, const mpl::false_&) BOOST_NOEXCEPT{} - template void do_assign(const Exp& e, const detail::add_immediates&) { @@ -1072,6 +1049,7 @@ private: { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right shift operation is only valid for integer types"); using default_ops::eval_right_shift; + detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed()); eval_right_shift(m_backend, canonical_value(e.value()), val); } @@ -1080,6 +1058,7 @@ private: { BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left shift operation is only valid for integer types"); using default_ops::eval_left_shift; + detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed()); eval_left_shift(m_backend, canonical_value(e.value()), val); } @@ -1089,6 +1068,7 @@ private: BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The right shift operation is only valid for integer types"); using default_ops::eval_right_shift; self_type temp(e); + detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed()); eval_right_shift(m_backend, temp.backend(), val); } @@ -1098,6 +1078,7 @@ private: BOOST_STATIC_ASSERT_MSG(number_category::value == number_kind_integer, "The left shift operation is only valid for integer types"); using default_ops::eval_left_shift; self_type temp(e); + detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed()); eval_left_shift(m_backend, temp.backend(), val); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index d9a1af1c..e0fa0c37 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -135,8 +135,22 @@ run test_arithmetic.cpp : # command line : # input files : # requirements - TEST_CPP_INT - : test_arithmetic_cpp_int ; + TEST_CPP_INT_1 + : test_arithmetic_cpp_int_1 ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT_2 + : test_arithmetic_cpp_int_2 ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT_3 + : test_arithmetic_cpp_int_3 ; run test_arithmetic.cpp : # command line @@ -805,8 +819,8 @@ for local source in [ glob compile_fail/*.cpp ] { compile-fail $(source) : - [ check-target-builds ../config//has_gmp : TEST_GMP : ] - [ check-target-builds ../config//has_mpfr : TEST_MPFR : ] + [ check-target-builds ../config//has_gmp : TEST_GMP off : ] + [ check-target-builds ../config//has_mpfr : TEST_MPFR off : ] ; } @@ -820,51 +834,60 @@ if ! $(disable-concepts) : # requirements TEST_MPFR_50 [ check-target-builds ../config//has_mpfr : : no ] + off : $(source:B)_mpfr_50 ; compile $(source) mpfr : # requirements TEST_MPFR_6 [ check-target-builds ../config//has_mpfr : : no ] + off : $(source:B)_mpfr_6 ; compile $(source) mpfr : # requirements TEST_MPFR_15 [ check-target-builds ../config//has_mpfr : : no ] + off : $(source:B)_mpfr_15 ; compile $(source) mpfr : # requirements TEST_MPFR_17 [ check-target-builds ../config//has_mpfr : : no ] + off : $(source:B)_mpfr_17 ; compile $(source) mpfr : # requirements TEST_MPFR_30 [ check-target-builds ../config//has_mpfr : : no ] + off : $(source:B)_mpfr_30 ; compile $(source) gmp : # requirements TEST_MPF_50 [ check-target-builds ../config//has_gmp : : no ] + off : $(source:B)_mpf50 ; compile $(source) : # requirements TEST_CPP_DEC_FLOAT + off : $(source:B)_cpp_dec_float ; compile $(source) : # requirements TEST_CPP_DEC_FLOAT_NO_ET + off : $(source:B)_cpp_dec_float_no_et ; compile $(source) : # requirements TEST_BACKEND + off : $(source:B)_backend_concept ; } } diff --git a/test/coverage/Makefile b/test/coverage/Makefile new file mode 100644 index 00000000..5941c633 --- /dev/null +++ b/test/coverage/Makefile @@ -0,0 +1,173 @@ +# copyright John Maddock 2012 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt. + + +SOURCES=\ +../../../../boost/multiprecision/mpfr.hpp\ +../../../../boost/multiprecision/tommath.hpp\ +../../../../boost/multiprecision/number.hpp\ +../../../../boost/multiprecision/cpp_dec_float.hpp\ +../../../../boost/multiprecision/gmp.hpp\ +../../../../boost/multiprecision/random.hpp\ +../../../../boost/multiprecision/cpp_int.hpp\ +../../../../boost/multiprecision/miller_rabin.hpp\ +../../../../boost/multiprecision/rational_adapter.hpp\ +../../../../boost/multiprecision/concepts/mp_number_archetypes.hpp\ +../../../../boost/multiprecision/detail/big_lanczos.hpp\ +../../../../boost/multiprecision/detail/digits.hpp\ +../../../../boost/multiprecision/detail/no_et_ops.hpp\ +../../../../boost/multiprecision/detail/cpp_int_core.hpp\ +../../../../boost/multiprecision/detail/number_base.hpp\ +../../../../boost/multiprecision/detail/cpp_int_trivial_ops.hpp\ +../../../../boost/multiprecision/detail/generic_interconvert.hpp\ +../../../../boost/multiprecision/detail/number_compare.hpp\ +../../../../boost/multiprecision/detail/default_ops.hpp\ +../../../../boost/multiprecision/detail/integer_ops.hpp\ +../../../../boost/multiprecision/detail/functions/constants.hpp\ +../../../../boost/multiprecision/detail/functions/pow.hpp\ +../../../../boost/multiprecision/detail/functions/trig.hpp\ +../../../../boost/multiprecision/traits/explicit_conversion.hpp\ +../../../../boost/multiprecision/traits/is_restricted_conversion.hpp + +coverage : run + gcov test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 test_arithmetic_cpp_dec_float test_arithmetic_concept test_arithmetic_mpz test_arithmetic_mpf test_arithmetic_mpf_50 test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv + +test_arithmetic_cpp_int_1.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_CPP_INT_1 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_1.o -c ../test_arithmetic.cpp + +test_arithmetic_cpp_int_1 : test_arithmetic_cpp_int_1.o + g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_1.o + +test_arithmetic_cpp_int_2.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_CPP_INT_2 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_2.o -c ../test_arithmetic.cpp + +test_arithmetic_cpp_int_2 : test_arithmetic_cpp_int_2.o + g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_2.o + +test_arithmetic_cpp_int_3.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_CPP_INT_3 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_int_3.o -c ../test_arithmetic.cpp + +test_arithmetic_cpp_int_3 : test_arithmetic_cpp_int_3.o + g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_int_3 test_arithmetic_cpp_int_3.o + +test_arithmetic_cpp_dec_float.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_CPP_DEC_FLOAT --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_cpp_dec_float.o -c ../test_arithmetic.cpp + +test_arithmetic_cpp_dec_float : test_arithmetic_cpp_dec_float.o + g++ -std=gnu++0x --coverage -o test_arithmetic_cpp_dec_float test_arithmetic_cpp_dec_float.o + +test_arithmetic_concept.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_BACKEND --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_concept.o -c ../test_arithmetic.cpp + +test_arithmetic_concept : test_arithmetic_concept.o + g++ -std=gnu++0x --coverage -o test_arithmetic_concept test_arithmetic_concept.o + +test_arithmetic_mpz.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_MPZ --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpz.o -c ../test_arithmetic.cpp + +test_arithmetic_mpz : test_arithmetic_mpz.o + g++ -std=gnu++0x --coverage -o test_arithmetic_mpz test_arithmetic_mpz.o -lgmp + +test_arithmetic_mpf.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_MPF --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpf.o -c ../test_arithmetic.cpp + +test_arithmetic_mpf : test_arithmetic_mpf.o + g++ -std=gnu++0x --coverage -o test_arithmetic_mpf test_arithmetic_mpf.o -lgmp + +test_arithmetic_mpf_50.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_MPF_50 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpf_50.o -c ../test_arithmetic.cpp + +test_arithmetic_mpf_50 : test_arithmetic_mpf_50.o + g++ -std=gnu++0x --coverage -o test_arithmetic_mpf_50 test_arithmetic_mpf_50.o -lgmp + +test_arithmetic_mpq.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_MPQ --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpq.o -c ../test_arithmetic.cpp + +test_arithmetic_mpq : test_arithmetic_mpq.o + g++ -std=gnu++0x --coverage -o test_arithmetic_mpq test_arithmetic_mpq.o -lgmp + +test_arithmetic_mpfr.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_MPFR --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpfr.o -c ../test_arithmetic.cpp + +test_arithmetic_mpfr : test_arithmetic_mpfr.o + g++ -std=gnu++0x --coverage -o test_arithmetic_mpfr test_arithmetic_mpfr.o -lmpfr -lgmp + +test_arithmetic_mpfr_50.o : ../test_arithmetic.cpp $(SOURCES) + g++ -std=gnu++0x -DTEST_MPFR_50 --coverage -g -I../../../.. -I../../../../../../trunk -o test_arithmetic_mpfr_50.o -c ../test_arithmetic.cpp + +test_arithmetic_mpfr_50 : test_arithmetic_mpfr_50.o + g++ -std=gnu++0x --coverage -o test_arithmetic_mpfr_50 test_arithmetic_mpfr_50.o -lmpfr -lgmp + +test_cpp_int.o : ../test_cpp_int.cpp $(SOURCES) + g++ -std=gnu++0x --coverage -g -I../../../.. -I../../../../../../trunk -o test_cpp_int.o -c ../test_cpp_int.cpp + +test_cpp_int : test_cpp_int.o + g++ -std=gnu++0x --coverage -o test_cpp_int test_cpp_int.o -lgmp + +test_int_io.o : ../test_int_io.cpp $(SOURCES) + g++ -std=gnu++0x --coverage -DTEST_MPZ -DTEST_CPP_INT -g -I../../../.. -I../../../../../../trunk -o test_int_io.o -c ../test_int_io.cpp + +test_int_io : test_int_io.o + g++ -std=gnu++0x --coverage -o test_int_io test_int_io.o -lgmp + +test_float_io.o : ../test_float_io.cpp $(SOURCES) + g++ -std=gnu++0x --coverage -g -I../../../.. -I../../../../../../trunk -o test_float_io.o -c ../test_float_io.cpp + +test_float_io : test_float_io.o + g++ -std=gnu++0x --coverage -o test_float_io test_float_io.o -lmpfr -lgmp + +test_rational_io.o : ../test_rational_io.cpp $(SOURCES) + g++ -std=gnu++0x --coverage -DTEST_MPQ -DTEST_CPP_INT -g -I../../../.. -I../../../../../../trunk -o test_rational_io.o -c ../test_rational_io.cpp + +test_rational_io : test_rational_io.o + g++ -std=gnu++0x --coverage -o test_rational_io test_rational_io.o -lgmp + +test_gmp_conversions.o : ../test_gmp_conversions.cpp $(SOURCES) + g++ -std=gnu++0x --coverage -g -I../../../.. -I../../../../../../trunk -o test_gmp_conversions.o -c ../test_gmp_conversions.cpp + +test_gmp_conversions : test_gmp_conversions.o + g++ -std=gnu++0x --coverage -o test_gmp_conversions test_gmp_conversions.o -lgmp + +test_mpfr_conversions.o : ../test_mpfr_conversions.cpp $(SOURCES) + g++ -std=gnu++0x --coverage -g -I../../../.. -I../../../../../../trunk -o test_mpfr_conversions.o -c ../test_mpfr_conversions.cpp + +test_mpfr_conversions : test_mpfr_conversions.o + g++ -std=gnu++0x --coverage -o test_mpfr_conversions test_mpfr_conversions.o -lmpfr -lgmp + +test_cpp_int_conv.o : ../test_cpp_int_conv.cpp $(SOURCES) + g++ -std=gnu++0x --coverage -g -I../../../.. -I../../../../../../trunk -o test_cpp_int_conv.o -c ../test_cpp_int_conv.cpp + +test_cpp_int_conv : test_cpp_int_conv.o + g++ -std=gnu++0x --coverage -o test_cpp_int_conv test_cpp_int_conv.o + +run : test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 test_arithmetic_cpp_dec_float test_arithmetic_concept test_arithmetic_mpz test_arithmetic_mpf test_arithmetic_mpf_50 \ +test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv + ./test_arithmetic_cpp_int_1 + ./test_arithmetic_cpp_int_2 + ./test_arithmetic_cpp_int_3 + ./test_arithmetic_cpp_dec_float + ./test_arithmetic_concept + ./test_arithmetic_mpz + ./test_arithmetic_mpf + ./test_arithmetic_mpf_50 + ./test_arithmetic_mpq + ./test_arithmetic_mpfr + ./test_arithmetic_mpfr_50 + ./test_cpp_int + ./test_int_io + ./test_float_io + ./test_rational_io + ./test_gmp_conversions + ./test_mpfr_conversions + ./test_cpp_int_conv + +clean : + rm -rf *.o *.gc* test_arithmetic_cpp_int_1 test_arithmetic_cpp_int_2 test_arithmetic_cpp_int_3 test_arithmetic_cpp_dec_float test_arithmetic_concept test_arithmetic_mpz \ + test_arithmetic_mpf test_arithmetic_mpf_50 test_arithmetic_mpq test_arithmetic_mpfr test_arithmetic_mpfr_50 test_cpp_int\ + test_int_io test_float_io test_rational_io test_gmp_conversions test_mpfr_conversions test_cpp_int_conv + + + + diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 39af694c..feb05b87 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -18,7 +18,8 @@ #if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ - && !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_BR) && !defined(TEST_ARITHMETIC_BACKEND) + && !defined(TEST_CPP_INT_1) && !defined(TEST_CPP_INT_2) && !defined(TEST_CPP_INT_3) \ + && !defined(TEST_CPP_INT_BR) && !defined(TEST_ARITHMETIC_BACKEND) # define TEST_MPF_50 # define TEST_MPF # define TEST_BACKEND @@ -28,7 +29,9 @@ # define TEST_CPP_DEC_FLOAT # define TEST_MPQ # define TEST_TOMMATH -# define TEST_CPP_INT +# define TEST_CPP_INT_1 +# define TEST_CPP_INT_2 +# define TEST_CPP_INT_3 # define TEST_CPP_INT_BR # define TEST_ARITHMETIC_BACKEND @@ -61,7 +64,7 @@ #include #include #endif -#if defined(TEST_CPP_INT) || defined(TEST_CPP_INT_BR) +#if defined(TEST_CPP_INT_1) || defined(TEST_CPP_INT_2) || defined(TEST_CPP_INT_3) || defined(TEST_CPP_INT_BR) #include #endif @@ -142,6 +145,11 @@ template void test_comparisons(Val, Val, const boost::mpl::false_) {} +int normalize_compare_result(int r) +{ + return r > 0 ? 1 : r < 0 ? -1 : 0; +} + template void test_comparisons(Val a, Val b, const boost::mpl::true_) { @@ -149,6 +157,8 @@ void test_comparisons(Val a, Val b, const boost::mpl::true_) Real r2(b); Real z(1); + int cr = a < b ? -1 : a > b ? 1 : 0; + BOOST_TEST_EQUAL(r1 == r2, a == b); BOOST_TEST_EQUAL(r1 != r2, a != b); BOOST_TEST_EQUAL(r1 <= r2, a <= b); @@ -204,6 +214,35 @@ void test_comparisons(Val a, Val b, const boost::mpl::true_) BOOST_TEST_EQUAL(a < r2*z, a < b); BOOST_TEST_EQUAL(a >= r2*z, a >= b); BOOST_TEST_EQUAL(a > r2*z, a > b); + + BOOST_TEST_EQUAL(normalize_compare_result(r1.compare(r2)), cr); + BOOST_TEST_EQUAL(normalize_compare_result(r2.compare(r1)), -cr); + BOOST_TEST_EQUAL(normalize_compare_result(r1.compare(b)), cr); + BOOST_TEST_EQUAL(normalize_compare_result(r2.compare(a)), -cr); +} + +template +void test_conditional(Real v, Exp e) +{ + // + // Verify that Exp is usable in Boolean contexts, and has the same value as v: + // + if(e) + { + BOOST_TEST(v); + } + else + { + BOOST_TEST(!v); + } + if(!e) + { + BOOST_TEST(!v); + } + else + { + BOOST_TEST(v); + } } template @@ -289,6 +328,15 @@ void test_integer_ops(const boost::mpl::int_::is_signed) { BOOST_TEST(-a % c == 0); @@ -326,6 +374,9 @@ void test_integer_ops(const boost::mpl::int_>= -20, std::out_of_range); + BOOST_TEST_THROW(Real(a << -20), std::out_of_range); + BOOST_TEST_THROW(Real(a >> -20), std::out_of_range); #ifndef BOOST_NO_LONG_LONG if(sizeof(long long) > sizeof(std::size_t)) { // extreme values should trigger an exception: BOOST_TEST_THROW(a >>= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); BOOST_TEST_THROW(a <<= (1uLL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + BOOST_TEST_THROW(a >>= -(1LL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + BOOST_TEST_THROW(a <<= -(1LL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + BOOST_TEST_THROW(a >>= (1LL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + BOOST_TEST_THROW(a <<= (1LL << (sizeof(long long) * CHAR_BIT - 2)), std::out_of_range); + // Unless they fit within range: + a = 2000L; + BOOST_TEST((a <<= 20uLL) == (2000L << 20)); + a = 2000; + BOOST_TEST((a <<= 20LL) == (2000L << 20)); + + BOOST_TEST_THROW(Real(a >> (1uLL << (sizeof(long long) * CHAR_BIT - 2))), std::out_of_range); + BOOST_TEST_THROW(Real(a <<= (1uLL << (sizeof(long long) * CHAR_BIT - 2))), std::out_of_range); + BOOST_TEST_THROW(Real(a >>= -(1LL << (sizeof(long long) * CHAR_BIT - 2))), std::out_of_range); + BOOST_TEST_THROW(Real(a <<= -(1LL << (sizeof(long long) * CHAR_BIT - 2))), std::out_of_range); + BOOST_TEST_THROW(Real(a >>= (1LL << (sizeof(long long) * CHAR_BIT - 2))), std::out_of_range); + BOOST_TEST_THROW(Real(a <<= (1LL << (sizeof(long long) * CHAR_BIT - 2))), std::out_of_range); + // Unless they fit within range: + a = 2000L; + BOOST_TEST(Real(a << 20uLL) == (2000L << 20)); + a = 2000; + BOOST_TEST(Real(a << 20LL) == (2000L << 20)); } #endif a = 20; @@ -422,6 +496,11 @@ void test_integer_ops(const boost::mpl::int_(a, b, c, typename is_twos_complement_integer::type()); @@ -446,6 +525,11 @@ void test_integer_ops(const boost::mpl::int_::is_signed) + { + BOOST_TEST(gcd(a, -45) == boost::math::gcd(400, 45)); + BOOST_TEST(lcm(a, -45) == boost::math::lcm(400, 45)); + } + BOOST_TEST(gcd(a, 45u) == boost::math::gcd(400, 45)); + BOOST_TEST(lcm(a, 45u) == boost::math::lcm(400, 45)); BOOST_TEST(gcd(400, b) == boost::math::gcd(400, 45)); BOOST_TEST(lcm(400, b) == boost::math::lcm(400, 45)); + if(std::numeric_limits::is_signed) + { + BOOST_TEST(gcd(-400, b) == boost::math::gcd(400, 45)); + BOOST_TEST(lcm(-400, b) == boost::math::lcm(400, 45)); + } + BOOST_TEST(gcd(400u, b) == boost::math::gcd(400, 45)); + BOOST_TEST(lcm(400u, b) == boost::math::lcm(400, 45)); + + // + // Conditionals involving 2 arg functions: + // + test_conditional(Real(gcd(a, b)), gcd(a, b)); + Real r; divide_qr(a, b, c, r); BOOST_TEST(c == a / b); @@ -570,12 +680,48 @@ void test_integer_ops(const boost::mpl::int_ @@ -785,6 +931,95 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST(r == static_cast(n4 * n5)); r = static_cast(4 * n4) / Real(4); BOOST_TEST(r == static_cast(n4)); + + Real a, b, c; + a = 20; + b = 30; + c = -a + b; + BOOST_TEST(c == 10); + c = b + -a; + BOOST_TEST(c == 10); + n4 = 30; + c = -a + static_cast(n4); + BOOST_TEST(c == 10); + c = static_cast(n4) + -a; + BOOST_TEST(c == 10); + c = -a + -b; + BOOST_TEST(c == -50); + n4 = 4; + c = -(a + b) + static_cast(n4); + BOOST_TEST(c == -50+4); + n4 = 50; + c = (a + b) - static_cast(n4); + BOOST_TEST(c == 0); + c = (a + b) - static_cast(n4); + BOOST_TEST(c == 0); + c = a - -(b + static_cast(n4)); + BOOST_TEST(c == 20 - -(30 + 50)); + c = -(b + static_cast(n4)) - a; + BOOST_TEST(c == -(30 + 50) - 20); + c = a - -b; + BOOST_TEST(c == 50); + c = -a - b; + BOOST_TEST(c == -50); + c = -a - static_cast(n4); + BOOST_TEST(c == -20 - 50); + c = static_cast(n4) - -a; + BOOST_TEST(c == 50 + 20); + c = -(a + b) - Real(n4); + BOOST_TEST(c == -(20 + 30) - 50); + c = static_cast(n4) - (a + b); + BOOST_TEST(c == 0); + c = (a + b) * static_cast(n4); + BOOST_TEST(c == 50 * 50); + c = static_cast(n4) * (a + b); + BOOST_TEST(c == 50 * 50); + c = a * -(b + static_cast(n4)); + BOOST_TEST(c == 20 * -(30 + 50)); + c = -(b + static_cast(n4)) * a; + BOOST_TEST(c == 20 * -(30 + 50)); + c = a * -b; + BOOST_TEST(c == 20 * -30); + c = -a * b; + BOOST_TEST(c == 20 * -30); + c = -a * static_cast(n4); + BOOST_TEST(c == -20 * 50); + c = static_cast(n4) * -a; + BOOST_TEST(c == -20 * 50); + c = -(a + b) + a; + BOOST_TEST(-50 + 20); + c = static_cast(n4) - (a + b); + BOOST_TEST(c == 0); + Real d = 10; + c = (a + b) / d; + BOOST_TEST(c == 5); + c = (a + b) / (d + 0); + BOOST_TEST(c == 5); + c = (a + b) / static_cast(n4); + BOOST_TEST(c == 1); + c = static_cast(n4) / (a + b); + BOOST_TEST(c == 1); + d = 50; + c = d / -(a + b); + BOOST_TEST(c == -1); + c = -(a + b) / d; + BOOST_TEST(c == -1); + d = 2; + c = a / -d; + BOOST_TEST(c == 20 / -2); + c = -a / d; + BOOST_TEST(c == 20 / -2); + d = 50; + c = -d / static_cast(n4); + BOOST_TEST(c == -1); + c = static_cast(n4) / -d; + BOOST_TEST(c == -1); + c = static_cast(n4) + a; + BOOST_TEST(c == 70); + c = static_cast(n4) - a; + BOOST_TEST(c == 30); + c = static_cast(n4) * a; + BOOST_TEST(c == 50 * 20); } template @@ -793,7 +1028,12 @@ void test_negative_mixed(boost::mpl::false_ const&) } template -void test_mixed() +void test_mixed(const boost::mpl::false_&) +{ +} + +template +void test_mixed(const boost::mpl::true_&) { typedef typename lexical_cast_target_type::type target_type; typedef typename boost::mpl::if_< @@ -905,26 +1145,59 @@ void test_mixed() test_negative_mixed(boost::mpl::bool_::is_signed>()); } +template +void test_members(Real) +{ + // + // Test sign and zero functions: + // + Real a = 20; + Real b = 30; + BOOST_TEST(a.sign() > 0); + BOOST_TEST(!a.is_zero()); + if(std::numeric_limits::is_signed) + { + a = -20; + BOOST_TEST(a.sign() < 0); + BOOST_TEST(!a.is_zero()); + } + a = 0; + BOOST_TEST(a.sign() == 0); + BOOST_TEST(a.is_zero()); + + a = 20; + b = 30; + a.swap(b); + BOOST_TEST(a == 30); + BOOST_TEST(b == 20); +} + +template +void test_members(boost::rational v) +{ +} + template void test() { #ifndef NO_MIXED_OPS - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); - test_mixed(); + boost::multiprecision::is_number tag; + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); #ifdef BOOST_HAS_LONG_LONG - test_mixed(); - test_mixed(); + test_mixed(tag); + test_mixed(tag); #endif - test_mixed(); - test_mixed(); - test_mixed(); + test_mixed(tag); + test_mixed(tag); + test_mixed(tag); #endif // // Integer only functions: @@ -1175,23 +1448,11 @@ void test() BOOST_TEST((72 < b+a) == false); BOOST_TEST((72 >= b+a) == true); BOOST_TEST((72 > b+a) == false); -#ifndef NO_MIXED_OPS + + test_members(a); // - // Test sign and zero functions, plus use in boolian context: + // Use in Boolean context: // - a = 20; - BOOST_TEST(a.sign() > 0); - BOOST_TEST(!a.is_zero()); - if(std::numeric_limits::is_signed) - { - a = -20; - BOOST_TEST(a.sign() < 0); - BOOST_TEST(!a.is_zero()); - } - a = 0; - BOOST_TEST(a.sign() == 0); - BOOST_TEST(a.is_zero()); -#endif a = 0; if(a) { @@ -1243,6 +1504,50 @@ void test() ss >> c; BOOST_TEST(c == 22); BOOST_TEST(c == a + b); + // + // More cases for complete code coverage: + // + a = 20; + b = 30; + swap(a, b); + BOOST_TEST(a == 30); + BOOST_TEST(b == 20); + a = 20; + b = 30; + std::swap(a, b); + BOOST_TEST(a == 30); + BOOST_TEST(b == 20); + a = 20; + b = 30; + a = a + b * 2; + BOOST_TEST(a == 20 + 30 * 2); + a = 100; + a = a - b * 2; + BOOST_TEST(a == 100 - 30 * 2); + a = 20; + a = a * (b + 2); + BOOST_TEST(a == 20 * (32)); + a = 20; + a = (b + 2) * a; + BOOST_TEST(a == 20 * (32)); + a = 90; + b = 2; + a = a / (b + 0); + BOOST_TEST(a == 45); + a = 20; + b = 30; + c = (a * b) + 22; + BOOST_TEST(c == 20 * 30 + 22); + c = 22 + (a * b); + BOOST_TEST(c == 20 * 30 + 22); + + // + // Test conditionals: + // + a = 20; + test_conditional(a, +a); + test_conditional(Real(-a), -a); + test_conditional(a, (a + 0)); } @@ -1291,20 +1596,23 @@ int main() #ifdef TEST_MPZ_BOOST_RATIONAL test >(); #endif -#ifdef TEST_CPP_INT +#ifdef TEST_CPP_INT_1 test(); test(); test(); +#endif +#ifdef TEST_CPP_INT_2 test(); test, false> >(); test > >(); - +#endif +#ifdef TEST_CPP_INT_3 // Again with "trivial" backends: test, false > >(); test, false > >(); #endif #ifdef TEST_CPP_INT_BR - test(); + test >(); #endif return boost::report_errors(); } diff --git a/test/test_cpp_int_conv.cpp b/test/test_cpp_int_conv.cpp index 60c57d82..b21d91a5 100644 --- a/test/test_cpp_int_conv.cpp +++ b/test/test_cpp_int_conv.cpp @@ -51,6 +51,25 @@ int main() number, false> i7(i3); BOOST_TEST(i7 == -1234567); + int256_t i8(i6); + BOOST_TEST(i8 == -5677334); + + i7.assign(4.0); + BOOST_TEST(i7 == 4); + + number, false> i9(-5677334); + i7 = i9; + BOOST_TEST(i7 == -5677334); + i7 = number, false>(i9); + BOOST_TEST(i7 == -5677334); + + i9 = static_cast, false> >(i7); + BOOST_TEST(i9 == -5677334); + + ++i9; + i7 = i9; + BOOST_TEST(i7 == 1 - 5677334); + return boost::report_errors(); } diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index b603fa88..a17cfcf5 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -126,6 +126,8 @@ int main() test_round_trip > >(); test_round_trip > >(); test_round_trip > >(); + test_round_trip > >(); + test_round_trip > >(); #endif return boost::report_errors(); } diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index 7b027cbf..b954a0c4 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -94,14 +94,14 @@ void do_round_trip(const T& val, std::ios_base::fmtflags f, const boost::mpl::fa } template -struct is_mp_number : public boost::mpl::false_{}; +struct is_number : public boost::mpl::false_{}; template -struct is_mp_number > : public boost::mpl::true_{}; +struct is_number > : public boost::mpl::true_{}; template void do_round_trip(const T& val, std::ios_base::fmtflags f) { - do_round_trip(val, f, is_mp_number()); + do_round_trip(val, f, is_number()); } template From ce3354335c63facc219b2ef92fd33bb2b8c2f041 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 4 Sep 2012 08:20:26 +0000 Subject: [PATCH 230/256] Allow mixed precision binary operations. Add tests for basic mixed precision usage. [SVN r80394] --- include/boost/multiprecision/cpp_int.hpp | 9 +- .../multiprecision/detail/default_ops.hpp | 106 +-- .../boost/multiprecision/detail/et_ops.hpp | 691 ++++++++++++++++++ .../boost/multiprecision/detail/no_et_ops.hpp | 90 +-- .../multiprecision/detail/number_base.hpp | 644 +--------------- .../multiprecision/detail/number_compare.hpp | 205 +++--- include/boost/multiprecision/gmp.hpp | 14 +- include/boost/multiprecision/mpfr.hpp | 6 +- include/boost/multiprecision/number.hpp | 44 +- include/boost/multiprecision/tommath.hpp | 14 +- test/test_arithmetic.cpp | 86 ++- 11 files changed, 1045 insertions(+), 864 deletions(-) create mode 100644 include/boost/multiprecision/detail/et_ops.hpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 39458f29..17d97b72 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -3202,13 +3202,8 @@ public: static number_type val; if(!init) { - boost::multiprecision::limb_type l = ~static_cast(0); - unsigned c = MinBits / backend_type::limb_bits + (MinBits % backend_type::limb_bits ? 1 : 0); - for(unsigned i = 0; i < c; ++i) - { - val <<= backend_type::limb_bits; - val |= l; - } + boost::multiprecision::number, ExpressionTemplates> t(0); + val = ~t; init = true; } return val; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 5029bf47..66f9731e 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -38,7 +38,7 @@ namespace boost{ namespace multiprecision{ namespace default_ops{ // of each depending on whether the backend can be directly constructed from type V: // template -inline typename enable_if_c::value && !is_convertible::value >::type +inline typename enable_if_c >::value && !is_convertible::value >::type eval_add(T& result, V const& v) { T t; @@ -46,14 +46,14 @@ inline typename enable_if_c::value && !is_convertible::va eval_add(result, t); } template -inline typename enable_if_c::value && is_convertible::value >::type +inline typename enable_if_c >::value && is_convertible::value >::type eval_add(T& result, V const& v) { T t(v); eval_add(result, t); } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_subtract(T& result, V const& v) { T t; @@ -61,14 +61,14 @@ inline typename enable_if_c::value && !is_convertible::va eval_subtract(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_subtract(T& result, V const& v) { T t(v); eval_subtract(result, t); } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_multiply(T& result, V const& v) { T t; @@ -76,14 +76,14 @@ inline typename enable_if_c::value && !is_convertible::va eval_multiply(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_multiply(T& result, V const& v) { T t(v); eval_multiply(result, t); } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide(T& result, V const& v) { T t; @@ -91,14 +91,14 @@ inline typename enable_if_c::value && !is_convertible::va eval_divide(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide(T& result, V const& v) { T t(v); eval_divide(result, t); } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus(T& result, V const& v) { T t; @@ -106,14 +106,14 @@ inline typename enable_if_c::value && !is_convertible::va eval_modulus(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value&& is_convertible::value>::type eval_modulus(T& result, V const& v) { T t(v); eval_modulus(result, t); } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_and(T& result, V const& v) { T t; @@ -121,14 +121,14 @@ inline typename enable_if_c::value && !is_convertible::va eval_bitwise_and(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_and(T& result, V const& v) { T t(v); eval_bitwise_and(result, t); } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_or(T& result, V const& v) { T t; @@ -136,14 +136,14 @@ inline typename enable_if_c::value && !is_convertible::va eval_bitwise_or(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_or(T& result, V const& v) { T t(v); eval_bitwise_or(result, t); } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_xor(T& result, V const& v) { T t; @@ -151,7 +151,7 @@ inline typename enable_if_c::value && !is_convertible::va eval_bitwise_xor(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_xor(T& result, V const& v) { T t(v); @@ -159,7 +159,7 @@ inline typename enable_if_c::value && is_convertible::val } template -inline typename enable_if_c::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_complement(T& result, V const& v) { T t; @@ -167,7 +167,7 @@ inline typename enable_if_c::value && !is_convertible::va eval_complement(result, t); } template -inline typename enable_if_c::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_complement(T& result, V const& v) { T t(v); @@ -195,20 +195,20 @@ inline void eval_add(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_add(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_add(T& t, const T& u, const U& v) { T vv; vv = v; eval_add(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_add(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_add(T& t, const T& u, const U& v) { T vv(v); eval_add(t, u, vv); } template -inline typename enable_if_c::value>::type eval_add(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_add(T& t, const U& u, const T& v) { eval_add(t, v, u); } @@ -232,20 +232,20 @@ inline void eval_subtract(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) { T vv; vv = v; eval_subtract(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) { T vv(v); eval_subtract(t, u, vv); } template -inline typename enable_if_c::value>::type eval_subtract(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_subtract(T& t, const U& u, const T& v) { eval_subtract(t, v, u); t.negate(); @@ -269,20 +269,20 @@ inline void eval_multiply(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) { T vv; vv = v; eval_multiply(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) { T vv(v); eval_multiply(t, u, vv); } template -inline typename enable_if_c::value>::type eval_multiply(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_multiply(T& t, const U& u, const T& v) { eval_multiply(t, v, u); } @@ -305,27 +305,27 @@ inline void eval_divide(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) { T vv; vv = v; eval_divide(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) { T vv(v); eval_divide(t, u, vv); } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) { T uu; uu = u; eval_divide(t, uu, v); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) { T uu(u); eval_divide(t, uu, v); @@ -350,27 +350,27 @@ inline void eval_modulus(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) { T vv; vv = v; eval_modulus(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) { T vv(v); eval_modulus(t, u, vv); } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) { T uu; uu = u; eval_modulus(t, uu, v); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) { T uu(u); eval_modulus(t, uu, v); @@ -394,20 +394,20 @@ inline void eval_bitwise_and(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_and(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_and(t, u, vv); } template -inline typename enable_if_c::value>::type eval_bitwise_and(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_and(T& t, const U& u, const T& v) { eval_bitwise_and(t, v, u); } @@ -430,20 +430,20 @@ inline void eval_bitwise_or(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_or(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_or(t, u, vv); } template -inline typename enable_if_c::value>::type eval_bitwise_or(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_or(T& t, const U& u, const T& v) { eval_bitwise_or(t, v, u); } @@ -466,20 +466,20 @@ inline void eval_bitwise_xor(T& t, const T& u, const T& v) } } template -inline typename enable_if_c::value && !is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_xor(t, u, vv); } template -inline typename enable_if_c::value && is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_xor(t, u, vv); } template -inline typename enable_if_c::value>::type eval_bitwise_xor(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_xor(T& t, const U& u, const T& v) { eval_bitwise_xor(t, v, u); } @@ -580,13 +580,28 @@ struct calculate_next_larger_type >::type type; }; +template +inline bool check_in_range(const T& t) +{ + // Can t fit in an R? + if(std::numeric_limits::is_specialized && std::numeric_limits::is_bounded && (t > (std::numeric_limits::max)())) + return true; + return false; +} + +template +inline bool check_in_range(const terminal&) +{ + return false; +} + template inline void eval_convert_to(R* result, const B& backend) { typedef typename calculate_next_larger_type::type next_type; next_type n; eval_convert_to(&n, backend); - if(std::numeric_limits::is_specialized && (n > (std::numeric_limits::max)())) + if(check_in_range(n)) { *result = (std::numeric_limits::max)(); } @@ -1617,6 +1632,7 @@ inline multiprecision::number sinhc_pi(const multi // This has to come last of all: // #include +#include #endif diff --git a/include/boost/multiprecision/detail/et_ops.hpp b/include/boost/multiprecision/detail/et_ops.hpp new file mode 100644 index 00000000..35886a9b --- /dev/null +++ b/include/boost/multiprecision/detail/et_ops.hpp @@ -0,0 +1,691 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MP_ET_OPS_HPP +#define BOOST_MP_ET_OPS_HPP + +namespace boost{ namespace multiprecision{ + +// +// Non-member operators for number: +// +// Unary operators first: +// +template +inline const number& operator + (const number& v) { return v; } +template +inline const detail::expression& operator + (const detail::expression& v) { return v; } +template +inline detail::expression > operator - (const number& v) { return detail::expression >(v); } +template +inline detail::expression > operator - (const detail::expression& v) { return detail::expression >(v); } +template +inline detail::expression > operator ~ (const number& v) { return detail::expression >(v); } +template +inline detail::expression > operator ~ (const detail::expression& v) { return detail::expression >(v); } +// +// Then addition: +// +template +inline detail::expression, number > + operator + (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator + (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator + (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator + (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator + (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator + (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator + (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator + (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > + operator + (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); +} +template +inline detail::expression, typename detail::expression::left_type > + operator + (const detail::expression& a, const number& b) +{ + return detail::expression, typename detail::expression::left_type >(b, a.left_ref()); +} +template +inline detail::expression, number > + operator + (const number& a, const detail::expression >& b) +{ + return detail::expression, number >(a, b.left_ref()); +} +template +inline detail::expression, number > + operator + (const detail::expression >& a, const number& b) +{ + return detail::expression, number >(b, a.left_ref()); +} +template +inline typename enable_if >, detail::expression > >::type + operator + (const detail::expression >& a, const V& b) +{ + return detail::expression >(b, a.left_ref()); +} +template +inline typename enable_if, number >, detail::expression, number > >::type + operator + (const detail::expression >& a, const number& b) +{ + return detail::expression, number >(b, a.left_ref()); +} +template +inline typename enable_if, number >, detail::expression, number > >::type + operator + (const number& a, const detail::expression >& b) +{ + return detail::expression, number >(a, b.left_ref()); +} +template +inline detail::expression, number > > + operator + (const detail::expression >& a, const detail::expression >& b) +{ + return detail::expression, number > >(detail::expression, number >(a.left_ref(), b.left_ref())); +} +// +// Subtraction: +// +template +inline detail::expression, number > + operator - (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator - (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator - (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator - (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator - (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator - (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator - (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator - (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > + operator - (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); +} +template +inline detail::expression, typename detail::expression::left_type > > + operator - (const detail::expression& a, const number& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type >(b, a.left_ref())); +} +template +inline detail::expression, number > + operator - (const number& a, const detail::expression >& b) +{ + return detail::expression, number >(a, b.left_ref()); +} +template +inline detail::expression, number > > + operator - (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >( + detail::expression, number >(b, a.left_ref())); +} +template +inline typename enable_if >, detail::expression, V > > >::type + operator - (const detail::expression >& a, const V& b) +{ + return detail::expression, V > >(detail::expression, V >(a.left_ref(), b)); +} +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator - (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >(detail::expression, number >(a.left_ref(), b)); +} +template +inline typename enable_if >, detail::expression > >::type + operator - (const V& a, const detail::expression >& b) +{ + return detail::expression >(a, b.left_ref()); +} +template +inline typename enable_if, number >, detail::expression, number > >::type + operator - (const number& a, const detail::expression >& b) +{ + return detail::expression, number >(a, b.left_ref()); +} +// +// Multiplication: +// +template +inline detail::expression, number > + operator * (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator * (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator * (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator * (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator * (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator * (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator * (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator * (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > > + operator * (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type > (a, b.left_ref())); +} +template +inline detail::expression, typename detail::expression::left_type > > + operator * (const detail::expression& a, const number& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type >(b, a.left_ref())); +} +template +inline detail::expression, number > > + operator * (const number& a, const detail::expression >& b) +{ + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); +} +template +inline detail::expression, number > > + operator * (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >( + detail::expression, number >(b, a.left_ref())); +} +template +inline typename enable_if >, detail::expression, V > > >::type + operator * (const detail::expression >& a, const V& b) +{ + return detail::expression, V > > ( + detail::expression, V >(a.left_ref(), b)); +} +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator * (const detail::expression >& a, const number& b) +{ + return detail::expression, number > > ( + detail::expression, number >(a.left_ref(), b)); +} +template +inline typename enable_if >, detail::expression, V > > >::type + operator * (const V& a, const detail::expression >& b) +{ + return detail::expression, V > >( + detail::expression, V >(b.left_ref(), a)); +} +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator * (const number& a, const detail::expression >& b) +{ + return detail::expression, number > >( + detail::expression, number >(b.left_ref(), a)); +} +// +// Division: +// +template +inline detail::expression, number > + operator / (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator / (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator / (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator / (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator / (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator / (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator / (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator / (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: +// +template +inline detail::expression, typename detail::expression::left_type > > + operator / (const number& a, const detail::expression& b) +{ + return detail::expression, typename detail::expression::left_type > >( + detail::expression, typename detail::expression::left_type >(a, b.left_ref())); +} +template +inline detail::expression::left_type, number > > + operator / (const detail::expression& a, const number& b) +{ + return detail::expression::left_type, number > >( + detail::expression::left_type, number >(a.left_ref(), b)); +} +template +inline detail::expression, number > > + operator / (const number& a, const detail::expression >& b) +{ + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); +} +template +inline detail::expression, number > > + operator / (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >( + detail::expression, number >(a.left_ref(), b)); +} +template +inline typename enable_if >, detail::expression, V > > >::type + operator / (const detail::expression >& a, const V& b) +{ + return detail::expression, V > >( + detail::expression, V>(a.left_ref(), b)); +} +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator / (const detail::expression >& a, const number& b) +{ + return detail::expression, number > >( + detail::expression, number >(a.left_ref(), b)); +} +template +inline typename enable_if >, detail::expression > > >::type + operator / (const V& a, const detail::expression >& b) +{ + return detail::expression > >( + detail::expression >(a, b.left_ref())); +} +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator / (const number& a, const detail::expression >& b) +{ + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); +} +// +// Modulus: +// +template +inline detail::expression, number > + operator % (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator % (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator % (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator % (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator % (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator % (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator % (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator % (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Left shift: +// +template +inline typename enable_if, detail::expression, I > >::type + operator << (const number& a, const I& b) +{ + return detail::expression, I>(a, b); +} +template +inline typename enable_if, detail::expression, I> >::type + operator << (const detail::expression& a, const I& b) +{ + return detail::expression, I>(a, b); +} +// +// Right shift: +// +template +inline typename enable_if, detail::expression, I > >::type + operator >> (const number& a, const I& b) +{ + return detail::expression, I>(a, b); +} +template +inline typename enable_if, detail::expression, I> >::type + operator >> (const detail::expression& a, const I& b) +{ + return detail::expression, I>(a, b); +} +// +// Bitwise AND: +// +template +inline detail::expression, number > + operator & (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator & (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator & (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator & (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator & (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator & (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator & (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator & (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Bitwise OR: +// +template +inline detail::expression, number > + operator| (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator| (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator| (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator| (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator| (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator| (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator| (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator| (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} +// +// Bitwise XOR: +// +template +inline detail::expression, number > + operator^ (const number& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline typename enable_if >, detail::expression, V > >::type + operator^ (const number& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if >, detail::expression > >::type + operator^ (const V& a, const number& b) +{ + return detail::expression >(a, b); +} +template +inline detail::expression, detail::expression > + operator^ (const number& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline detail::expression, number > + operator^ (const detail::expression& a, const number& b) +{ + return detail::expression, number >(a, b); +} +template +inline detail::expression, detail::expression > + operator^ (const detail::expression& a, const detail::expression& b) +{ + return detail::expression, detail::expression >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression, V > >::type + operator^ (const detail::expression& a, const V& b) +{ + return detail::expression, V >(a, b); +} +template +inline typename enable_if::result_type>, detail::expression > >::type + operator^ (const V& a, const detail::expression& b) +{ + return detail::expression >(a, b); +} + +}} // namespaces + +#endif diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index 282f4fea..18728ea0 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -43,20 +43,18 @@ template inline typename enable_if >, number >::type operator + (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_add; - eval_add(result.backend(), a.backend(), static_cast(b)); + eval_add(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator + (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_add; - eval_add(result.backend(), b.backend(), static_cast(a)); + eval_add(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // @@ -74,20 +72,18 @@ template inline typename enable_if >, number >::type operator - (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_subtract; - eval_subtract(result.backend(), a.backend(), static_cast(b)); + eval_subtract(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator - (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_subtract; - eval_subtract(result.backend(), static_cast(a), b.backend()); + eval_subtract(result.backend(), number::canonical_value(a), b.backend()); return BOOST_MP_MOVE(result); } // @@ -105,20 +101,18 @@ template inline typename enable_if >, number >::type operator * (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_multiply; - eval_multiply(result.backend(), a.backend(), static_cast(b)); + eval_multiply(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator * (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_multiply; - eval_multiply(result.backend(), b.backend(), static_cast(a)); + eval_multiply(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // @@ -136,20 +130,18 @@ template inline typename enable_if >, number >::type operator / (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_divide; - eval_divide(result.backend(), a.backend(), static_cast(b)); + eval_divide(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator / (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_divide; - eval_divide(result.backend(), static_cast(a), b.backend()); + eval_divide(result.backend(), number::canonical_value(a), b.backend()); return BOOST_MP_MOVE(result); } // @@ -167,20 +159,18 @@ template inline typename enable_if >, number >::type operator % (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_modulus; - eval_modulus(result.backend(), a.backend(), static_cast(b)); + eval_modulus(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator % (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_modulus; - eval_modulus(result.backend(), static_cast(a), b.backend()); + eval_modulus(result.backend(), number::canonical_value(a), b.backend()); return BOOST_MP_MOVE(result); } // @@ -198,20 +188,18 @@ template inline typename enable_if >, number >::type operator | (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_bitwise_or; - eval_bitwise_or(result.backend(), a.backend(), static_cast(b)); + eval_bitwise_or(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator | (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_bitwise_or; - eval_bitwise_or(result.backend(), b.backend(), static_cast(a)); + eval_bitwise_or(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // @@ -229,20 +217,18 @@ template inline typename enable_if >, number >::type operator ^ (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_bitwise_xor; - eval_bitwise_xor(result.backend(), a.backend(), static_cast(b)); + eval_bitwise_xor(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator ^ (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_bitwise_xor; - eval_bitwise_xor(result.backend(), b.backend(), static_cast(a)); + eval_bitwise_xor(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // @@ -260,20 +246,18 @@ template inline typename enable_if >, number >::type operator & (const number& a, const V& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_bitwise_and; - eval_bitwise_and(result.backend(), a.backend(), static_cast(b)); + eval_bitwise_and(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template inline typename enable_if >, number >::type operator & (const V& a, const number& b) { - typedef typename detail::canonical::type canonical_type; number result; using default_ops::eval_bitwise_and; - eval_bitwise_and(result.backend(), b.backend(), static_cast(a)); + eval_bitwise_and(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // @@ -352,18 +336,16 @@ template inline typename enable_if >, number >::type operator + (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_add; - eval_add(a.backend(), static_cast(b)); + eval_add(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } template inline typename enable_if >, number >::type operator + (const V& a, number&& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_add; - eval_add(b.backend(), static_cast(a)); + eval_add(b.backend(), number::canonical_value(a)); return static_cast&&>(b); } // @@ -395,18 +377,16 @@ template inline typename enable_if >, number >::type operator - (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_subtract; - eval_subtract(a.backend(), static_cast(b)); + eval_subtract(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } template inline typename enable_if >, number >::type operator - (const V& a, number&& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_subtract; - eval_subtract(b.backend(), static_cast(a)); + eval_subtract(b.backend(), number::canonical_value(a)); b.backend().negate(); return static_cast&&>(b); } @@ -438,18 +418,16 @@ template inline typename enable_if >, number >::type operator * (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_multiply; - eval_multiply(a.backend(), static_cast(b)); + eval_multiply(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } template inline typename enable_if >, number >::type operator * (const V& a, number&& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_multiply; - eval_multiply(b.backend(), static_cast(a)); + eval_multiply(b.backend(), number::canonical_value(a)); return static_cast&&>(b); } // @@ -466,9 +444,8 @@ template inline typename enable_if >, number >::type operator / (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_divide; - eval_divide(a.backend(), static_cast(b)); + eval_divide(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } // @@ -485,9 +462,8 @@ template inline typename enable_if >, number >::type operator % (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_modulus; - eval_modulus(a.backend(), static_cast(b)); + eval_modulus(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } // @@ -518,18 +494,16 @@ template inline typename enable_if >, number >::type operator | (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_or; - eval_bitwise_or(a.backend(), static_cast(b)); + eval_bitwise_or(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } template inline typename enable_if >, number >::type operator | (const V& a, number&& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_or; - eval_bitwise_or(b.backend(), static_cast(a)); + eval_bitwise_or(b.backend(), number::canonical_value(a)); return static_cast&&>(b); } // @@ -560,18 +534,16 @@ template inline typename enable_if >, number >::type operator ^ (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_xor; - eval_bitwise_xor(a.backend(), static_cast(b)); + eval_bitwise_xor(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } template inline typename enable_if >, number >::type operator ^ (const V& a, number&& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_xor; - eval_bitwise_xor(b.backend(), static_cast(a)); + eval_bitwise_xor(b.backend(), number::canonical_value(a)); return static_cast&&>(b); } // @@ -602,18 +574,16 @@ template inline typename enable_if >, number >::type operator & (number&& a, const V& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_and; - eval_bitwise_and(a.backend(), static_cast(b)); + eval_bitwise_and(a.backend(), number::canonical_value(b)); return static_cast&&>(a); } template inline typename enable_if >, number >::type operator & (const V& a, number&& b) { - typedef typename detail::canonical::type canonical_type; using default_ops::eval_bitwise_and; - eval_bitwise_and(b.backend(), static_cast(a)); + eval_bitwise_and(b.backend(), number::canonical_value(a)); return static_cast&&>(b); } // diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index e5b46e6e..8721991c 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -41,7 +41,7 @@ template struct is_compatible_arithmetic_type : public mpl::bool_< is_convertible::value - && !is_number::value + && !is_same::value && !is_number_expression::value> {}; @@ -221,6 +221,16 @@ struct combine_expression, number type; }; +template +struct combine_expression, number > +{ + typedef typename mpl::if_c< + is_convertible, number >::value, + number, + number + >::type type; +}; + template struct arg_type { @@ -619,638 +629,6 @@ void check_shift_range(V, const mpl::false_&, const mpl::false_&) BOOST_NOEXCEPT } // namespace detail -// -// Non-member operators for number: -// -// Unary operators first: -// -template -inline const number& operator + (const number& v) { return v; } -template -inline const detail::expression& operator + (const detail::expression& v) { return v; } -template -inline detail::expression > operator - (const number& v) { return detail::expression >(v); } -template -inline detail::expression > operator - (const detail::expression& v) { return detail::expression >(v); } -template -inline detail::expression > operator ~ (const number& v) { return detail::expression >(v); } -template -inline detail::expression > operator ~ (const detail::expression& v) { return detail::expression >(v); } -// -// Then addition: -// -template -inline detail::expression, number > - operator + (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator + (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator + (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator + (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator + (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator + (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator + (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator + (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::expression, typename detail::expression::left_type > - operator + (const number& a, const detail::expression& b) -{ - return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); -} -template -inline detail::expression, typename detail::expression::left_type > - operator + (const detail::expression& a, const number& b) -{ - return detail::expression, typename detail::expression::left_type >(b, a.left_ref()); -} -template -inline detail::expression, number > - operator + (const number& a, const detail::expression >& b) -{ - return detail::expression, number >(a, b.left_ref()); -} -template -inline detail::expression, number > - operator + (const detail::expression >& a, const number& b) -{ - return detail::expression, number >(b, a.left_ref()); -} -template -inline typename enable_if >, detail::expression > >::type - operator + (const detail::expression >& a, const V& b) -{ - return detail::expression >(b, a.left_ref()); -} -template -inline typename enable_if >, detail::expression > >::type - operator + (const V& a, const detail::expression >& b) -{ - return detail::expression >(a, b.left_ref()); -} -template -inline detail::expression, number > > - operator + (const detail::expression >& a, const detail::expression >& b) -{ - return detail::expression, number > >(detail::expression, number >(a.left_ref(), b.left_ref())); -} -// -// Subtraction: -// -template -inline detail::expression, number > - operator - (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator - (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator - (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator - (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator - (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator - (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator - (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator - (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::expression, typename detail::expression::left_type > - operator - (const number& a, const detail::expression& b) -{ - return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); -} -template -inline detail::expression, typename detail::expression::left_type > > - operator - (const detail::expression& a, const number& b) -{ - return detail::expression, typename detail::expression::left_type > >( - detail::expression, typename detail::expression::left_type >(b, a.left_ref())); -} -template -inline detail::expression, number > - operator - (const number& a, const detail::expression >& b) -{ - return detail::expression, number >(a, b.left_ref()); -} -template -inline detail::expression, number > > - operator - (const detail::expression >& a, const number& b) -{ - return detail::expression, number > >( - detail::expression, number >(b, a.left_ref())); -} -template -inline typename enable_if >, detail::expression, V > > >::type - operator - (const detail::expression >& a, const V& b) -{ - return detail::expression, V > >(detail::expression, V >(a.left_ref(), b)); -} -template -inline typename enable_if >, detail::expression > >::type - operator - (const V& a, const detail::expression >& b) -{ - return detail::expression >(a, b.left_ref()); -} -// -// Multiplication: -// -template -inline detail::expression, number > - operator * (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator * (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator * (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator * (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator * (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator * (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator * (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator * (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::expression, typename detail::expression::left_type > > - operator * (const number& a, const detail::expression& b) -{ - return detail::expression, typename detail::expression::left_type > >( - detail::expression, typename detail::expression::left_type > (a, b.left_ref())); -} -template -inline detail::expression, typename detail::expression::left_type > > - operator * (const detail::expression& a, const number& b) -{ - return detail::expression, typename detail::expression::left_type > >( - detail::expression, typename detail::expression::left_type >(b, a.left_ref())); -} -template -inline detail::expression, number > > - operator * (const number& a, const detail::expression >& b) -{ - return detail::expression, number > >( - detail::expression, number >(a, b.left_ref())); -} -template -inline detail::expression, number > > - operator * (const detail::expression >& a, const number& b) -{ - return detail::expression, number > >( - detail::expression, number >(b, a.left_ref())); -} -template -inline typename enable_if >, detail::expression, V > > >::type - operator * (const detail::expression >& a, const V& b) -{ - return detail::expression, V > > ( - detail::expression, V >(a.left_ref(), b)); -} -template -inline typename enable_if >, detail::expression, V > > >::type - operator * (const V& a, const detail::expression >& b) -{ - return detail::expression, V > >( - detail::expression, V >(b.left_ref(), a)); -} -// -// Division: -// -template -inline detail::expression, number > - operator / (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator / (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator / (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator / (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator / (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator / (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator / (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator / (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} -// -// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: -// -template -inline detail::expression, typename detail::expression::left_type > > - operator / (const number& a, const detail::expression& b) -{ - return detail::expression, typename detail::expression::left_type > >( - detail::expression, typename detail::expression::left_type >(a, b.left_ref())); -} -template -inline detail::expression::left_type, number > > - operator / (const detail::expression& a, const number& b) -{ - return detail::expression::left_type, number > >( - detail::expression::left_type, number >(a.left_ref(), b)); -} -template -inline detail::expression, number > > - operator / (const number& a, const detail::expression >& b) -{ - return detail::expression, number > >( - detail::expression, number >(a, b.left_ref())); -} -template -inline detail::expression, number > > - operator / (const detail::expression >& a, const number& b) -{ - return detail::expression, number > >( - detail::expression, number >(a.left_ref(), b)); -} -template -inline typename enable_if >, detail::expression, V > > >::type - operator / (const detail::expression >& a, const V& b) -{ - return detail::expression, V > >( - detail::expression, V>(a.left_ref(), b)); -} -template -inline typename enable_if >, detail::expression > > >::type - operator / (const V& a, const detail::expression >& b) -{ - return detail::expression > >( - detail::expression >(a, b.left_ref())); -} -// -// Modulus: -// -template -inline detail::expression, number > - operator % (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator % (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator % (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator % (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator % (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator % (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator % (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator % (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} -// -// Left shift: -// -template -inline typename enable_if, detail::expression, I > >::type - operator << (const number& a, const I& b) -{ - return detail::expression, I>(a, b); -} -template -inline typename enable_if, detail::expression, I> >::type - operator << (const detail::expression& a, const I& b) -{ - return detail::expression, I>(a, b); -} -// -// Right shift: -// -template -inline typename enable_if, detail::expression, I > >::type - operator >> (const number& a, const I& b) -{ - return detail::expression, I>(a, b); -} -template -inline typename enable_if, detail::expression, I> >::type - operator >> (const detail::expression& a, const I& b) -{ - return detail::expression, I>(a, b); -} -// -// Bitwise AND: -// -template -inline detail::expression, number > - operator & (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator & (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator & (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator & (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator & (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator & (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator & (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator & (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} -// -// Bitwise OR: -// -template -inline detail::expression, number > - operator| (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator| (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator| (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator| (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator| (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator| (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator| (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator| (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} -// -// Bitwise XOR: -// -template -inline detail::expression, number > - operator^ (const number& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline typename enable_if >, detail::expression, V > >::type - operator^ (const number& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if >, detail::expression > >::type - operator^ (const V& a, const number& b) -{ - return detail::expression >(a, b); -} -template -inline detail::expression, detail::expression > - operator^ (const number& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline detail::expression, number > - operator^ (const detail::expression& a, const number& b) -{ - return detail::expression, number >(a, b); -} -template -inline detail::expression, detail::expression > - operator^ (const detail::expression& a, const detail::expression& b) -{ - return detail::expression, detail::expression >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression, V > >::type - operator^ (const detail::expression& a, const V& b) -{ - return detail::expression, V >(a, b); -} -template -inline typename enable_if::result_type>, detail::expression > >::type - operator^ (const V& a, const detail::expression& b) -{ - return detail::expression >(a, b); -} - // // Traits class, lets us know what kind of number we have, defaults to a floating point type: // diff --git a/include/boost/multiprecision/detail/number_compare.hpp b/include/boost/multiprecision/detail/number_compare.hpp index 1450508f..afeabbb3 100644 --- a/include/boost/multiprecision/detail/number_compare.hpp +++ b/include/boost/multiprecision/detail/number_compare.hpp @@ -19,14 +19,21 @@ inline bool eval_eq(const B& a, const B& b) { return a.compare(b) == 0; } +// +// For the default version which compares to some arbitrary type convertible to +// our number type, we don't know what value the ExpressionTemplates parameter to +// class number should be. We generally prefer ExpressionTemplates to be enabled +// in case type A is itself an expression template, but we need to test both options +// with is_convertible in case A has an implicit conversion operator to number. +// This is the case with many uBlas types for example. +// template inline bool eval_eq(const B& a, const A& b) { - typedef typename mpl::if_< - is_convertible >, - number, - number - >::type mp_type; + typedef typename mpl::if_c< + is_convertible >::value, + number, + number >::type mp_type; mp_type t(b); return eval_eq(a, t.backend()); } @@ -39,11 +46,10 @@ inline bool eval_lt(const B& a, const B& b) template inline bool eval_lt(const B& a, const A& b) { - typedef typename mpl::if_< - is_convertible >, - number, - number - >::type mp_type; + typedef typename mpl::if_c< + is_convertible >::value, + number, + number >::type mp_type; mp_type t(b); return eval_lt(a, t.backend()); } @@ -56,15 +62,38 @@ inline bool eval_gt(const B& a, const B& b) template inline bool eval_gt(const B& a, const A& b) { - typedef typename mpl::if_< - is_convertible >, - number, - number - >::type mp_type; + typedef typename mpl::if_c< + is_convertible >::value, + number, + number >::type mp_type; mp_type t(b); return eval_gt(a, t.backend()); } +} // namespace default_ops + +namespace detail{ + +template +struct is_valid_mixed_compare : public mpl::false_ {}; + +template +struct is_valid_mixed_compare, Val> : public is_convertible> {}; +/* +template +struct is_valid_mixed_compare > : public is_convertible> {}; +*/ +template +struct is_valid_mixed_compare, number > : public mpl::false_ {}; + +template +struct is_valid_mixed_compare, expression > + : public mpl::bool_, number >::value> {}; + +template +struct is_valid_mixed_compare, number > + : public mpl::bool_, number >::value> {}; + } template @@ -74,13 +103,13 @@ inline bool operator == (const number& a, const nu return eval_eq(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator == (const number& a, const Arithmetic& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_eq; - return eval_eq(a.backend(), ct(b)); + return eval_eq(a.backend(), number::canonical_value(b)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator == (const number& a, const detail::expression& b) @@ -89,24 +118,24 @@ inline typename enable_if, typename typename detail::expression::result_type t(b); return eval_eq(a.backend(), t.backend()); } +*/ template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator == (const Arithmetic& a, const number& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_eq; - return eval_eq(b.backend(), ct(a)); + return eval_eq(b.backend(), number::canonical_value(a)); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator == (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_eq; result_type t(b); - return eval_eq(t.backend(), ct(a)); + return eval_eq(t.backend(), result_type::canonical_value(a)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator == (const detail::expression& a, const number& b) @@ -114,16 +143,15 @@ inline typename enable_if, typename using default_ops::eval_eq; typename detail::expression::result_type t(a); return eval_eq(t.backend(), b.backend()); -} +}*/ template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator == (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_eq; result_type t(a); - return eval_eq(t.backend(), ct(b)); + return eval_eq(t.backend(), result_type::canonical_value(b)); } template inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type @@ -142,13 +170,13 @@ inline bool operator != (const number& a, const nu return !eval_eq(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator != (const number& a, const Arithmetic& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_eq; - return !eval_eq(a.backend(), ct(b)); + return !eval_eq(a.backend(), number::canonical_value(b)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator != (const number& a, const detail::expression& b) @@ -157,24 +185,24 @@ inline typename enable_if, typename typename detail::expression::result_type t(b); return !eval_eq(a.backend(), t.backend()); } +*/ template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator != (const Arithmetic& a, const number& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_eq; - return !eval_eq(b.backend(), ct(a)); + return !eval_eq(b.backend(), number::canonical_value(a)); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator != (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_eq; result_type t(b); - return !eval_eq(t.backend(), ct(a)); + return !eval_eq(t.backend(), result_type::canonical_value(a)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator != (const detail::expression& a, const number& b) @@ -182,16 +210,15 @@ inline typename enable_if, typename using default_ops::eval_eq; typename detail::expression::result_type t(a); return !eval_eq(t.backend(), b.backend()); -} +}*/ template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator != (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_eq; result_type t(a); - return !eval_eq(t.backend(), ct(b)); + return !eval_eq(t.backend(), result_type::canonical_value(b)); } template inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type @@ -210,13 +237,13 @@ inline bool operator < (const number& a, const num return eval_lt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator < (const number& a, const Arithmetic& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_lt; - return eval_lt(a.backend(), ct(b)); + return eval_lt(a.backend(), number::canonical_value(b)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator < (const number& a, const detail::expression& b) @@ -225,24 +252,24 @@ inline typename enable_if, typename typename detail::expression::result_type t(b); return eval_lt(a.backend(), t.backend()); } +*/ template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator < (const Arithmetic& a, const number& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_gt; - return eval_gt(b.backend(), ct(a)); + return eval_gt(b.backend(), number::canonical_value(a)); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator < (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_gt; result_type t(b); - return eval_gt(t.backend(), ct(a)); + return eval_gt(t.backend(), result_type::canonical_value(a)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator < (const detail::expression& a, const number& b) @@ -251,15 +278,15 @@ inline typename enable_if, typename typename detail::expression::result_type t(a); return eval_lt(t.backend(), b.backend()); } +*/ template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator < (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_lt; result_type t(a); - return eval_lt(t.backend(), ct(b)); + return eval_lt(t.backend(), result_type::canonical_value(b)); } template inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type @@ -278,13 +305,13 @@ inline bool operator > (const number& a, const num return eval_gt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator > (const number& a, const Arithmetic& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_gt; - return eval_gt(a.backend(), ct(b)); + return eval_gt(a.backend(), number::canonical_value(b)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator > (const number& a, const detail::expression& b) @@ -293,24 +320,24 @@ inline typename enable_if, typename typename detail::expression::result_type t(b); return eval_gt(a.backend(), t.backend()); } +*/ template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator > (const Arithmetic& a, const number& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_lt; - return eval_lt(b.backend(), ct(a)); + return eval_lt(b.backend(), number::canonical_value(a)); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator > (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_lt; result_type t(b); - return eval_lt(t.backend(), ct(a)); + return eval_lt(t.backend(), result_type::canonical_value(a)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator > (const detail::expression& a, const number& b) @@ -319,15 +346,15 @@ inline typename enable_if, typename typename detail::expression::result_type t(a); return eval_gt(t.backend(), b.backend()); } +*/ template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator > (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_gt; result_type t(a); - return eval_gt(t.backend(), ct(b)); + return eval_gt(t.backend(), result_type::canonical_value(b)); } template inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type @@ -346,13 +373,13 @@ inline bool operator <= (const number& a, const nu return !eval_gt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator <= (const number& a, const Arithmetic& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_gt; - return !eval_gt(a.backend(), ct(b)); + return !eval_gt(a.backend(), number::canonical_value(b)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator <= (const number& a, const detail::expression& b) @@ -361,24 +388,24 @@ inline typename enable_if, typename typename detail::expression::result_type t(b); return !eval_gt(a.backend(), t.backend()); } +*/ template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator <= (const Arithmetic& a, const number& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_lt; - return !eval_lt(b.backend(), ct(a)); + return !eval_lt(b.backend(), number::canonical_value(a)); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator <= (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_lt; result_type t(b); - return !eval_lt(t.backend(), ct(a)); + return !eval_lt(t.backend(), result_type::canonical_value(a)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator <= (const detail::expression& a, const number& b) @@ -387,15 +414,15 @@ inline typename enable_if, typename typename detail::expression::result_type t(a); return !eval_gt(t.backend(), b.backend()); } +*/ template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator <= (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_gt; result_type t(a); - return !eval_gt(t.backend(), ct(b)); + return !eval_gt(t.backend(), result_type::canonical_value(b)); } template inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type @@ -414,13 +441,13 @@ inline bool operator >= (const number& a, const nu return !eval_lt(a.backend(), b.backend()); } template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator >= (const number& a, const Arithmetic& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_lt; - return !eval_lt(a.backend(), ct(b)); + return !eval_lt(a.backend(), number::canonical_value(b)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator >= (const number& a, const detail::expression& b) @@ -429,24 +456,24 @@ inline typename enable_if, typename typename detail::expression::result_type t(b); return !eval_lt(a.backend(), t.backend()); } +*/ template -inline typename enable_if_c<(is_convertible >::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c, Arithmetic>::value, bool>::type operator >= (const Arithmetic& a, const number& b) { - typedef typename detail::canonical::type ct; using default_ops::eval_gt; - return !eval_gt(b.backend(), ct(a)); + return !eval_gt(b.backend(), number::canonical_value(a)); } template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator >= (const Arithmetic& a, const detail::expression& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_gt; result_type t(b); - return !eval_gt(t.backend(), ct(a)); + return !eval_gt(t.backend(), result_type::canonical_value(a)); } +/* template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator >= (const detail::expression& a, const number& b) @@ -455,15 +482,15 @@ inline typename enable_if, typename typename detail::expression::result_type t(a); return !eval_lt(t.backend(), b.backend()); } +*/ template -inline typename enable_if_c<(is_convertible::result_type>::value && !is_number_expression::value && !is_number::value), bool>::type +inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator >= (const detail::expression& a, const Arithmetic& b) { typedef typename detail::expression::result_type result_type; - typedef typename detail::canonical::type ct; using default_ops::eval_lt; result_type t(a); - return !eval_lt(t.backend(), ct(b)); + return !eval_lt(t.backend(), result_type::canonical_value(b)); } template inline typename enable_if::result_type, typename detail::expression::result_type>, bool>::type diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 719bb41c..ba59df2c 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -331,7 +331,7 @@ struct gmp_float_imp return mpf_cmp_ui(m_data, i); } template - int compare(V v)const + typename enable_if, int>::type compare(V v)const { gmp_float d; d = v; @@ -552,17 +552,17 @@ struct gmp_float<0> : public detail::gmp_float_imp<0> }; template -inline typename disable_if, T>, bool>::type eval_eq(const gmp_float& a, const T& b) BOOST_NOEXCEPT +inline typename enable_if_c::value, bool>::type eval_eq(const gmp_float& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) == 0; } template -inline typename disable_if, T>, bool>::type eval_lt(const gmp_float& a, const T& b) BOOST_NOEXCEPT +inline typename enable_if_c::value, bool>::type eval_lt(const gmp_float& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) < 0; } template -inline typename disable_if, T>, bool>::type eval_gt(const gmp_float& a, const T& b) BOOST_NOEXCEPT +inline typename enable_if_c::value, bool>::type eval_gt(const gmp_float& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) > 0; } @@ -1265,17 +1265,17 @@ protected: }; template -inline typename disable_if, bool>::type eval_eq(const gmp_int& a, const T& b) +inline typename enable_if, bool>::type eval_eq(const gmp_int& a, const T& b) { return a.compare(b) == 0; } template -inline typename disable_if, bool>::type eval_lt(const gmp_int& a, const T& b) +inline typename enable_if, bool>::type eval_lt(const gmp_int& a, const T& b) { return a.compare(b) < 0; } template -inline typename disable_if, bool>::type eval_gt(const gmp_int& a, const T& b) +inline typename enable_if, bool>::type eval_gt(const gmp_int& a, const T& b) { return a.compare(b) > 0; } diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index cdbb8cfb..b3e4f14e 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -594,17 +594,17 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> }; template -inline typename disable_if, T>, bool>::type eval_eq(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +inline typename enable_if, bool>::type eval_eq(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) == 0; } template -inline typename disable_if, T>, bool>::type eval_lt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +inline typename enable_if, bool>::type eval_lt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) < 0; } template -inline typename disable_if, T>, bool>::type eval_gt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +inline typename enable_if, bool>::type eval_gt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) > 0; } diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index a8fa5f44..e61372d9 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -161,7 +161,7 @@ public: return *this; } template - typename disable_if, number& >::type + typename disable_if, number& >::type assign(const number& v) { // @@ -540,12 +540,28 @@ public: { return m_backend.str(digits, f); } +private: + template + void convert_to_imp(T* result)const + { + using default_ops::eval_convert_to; + eval_convert_to(result, m_backend); + } + template + void convert_to_imp(number* result)const + { + result->assign(*this); + } + void convert_to_imp(std::string* result)const + { + *result = this->str(); + } +public: template T convert_to()const { - using default_ops::eval_convert_to; T result; - eval_convert_to(&result, m_backend); + convert_to_imp(&result); return result; } #ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS @@ -1553,6 +1569,20 @@ private: BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const Val&)const BOOST_NOEXCEPT{ return false; } BOOST_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; } + static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } + template + static BOOST_FORCEINLINE BOOST_CONSTEXPR const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } + template + static BOOST_FORCEINLINE const A1& function_arg_value(const detail::expression& exp) BOOST_NOEXCEPT { return exp.value(); } + template + static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const detail::expression, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } + Backend m_backend; + +public: + // + // These shouldn't really need to be public, or even member functions, but it makes implementing + // the non-member operators way easier if they are: + // static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } template static BOOST_FORCEINLINE BOOST_CONSTEXPR const B2& canonical_value(const number& v) BOOST_NOEXCEPT { return v.backend(); } @@ -1564,14 +1594,6 @@ private: canonical_value(const V& v) BOOST_NOEXCEPT { return v; } static BOOST_FORCEINLINE typename detail::canonical::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); } - static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); } - template - static BOOST_FORCEINLINE BOOST_CONSTEXPR const V& function_arg_value(const V& v) BOOST_NOEXCEPT { return v; } - template - static BOOST_FORCEINLINE const A1& function_arg_value(const detail::expression& exp) BOOST_NOEXCEPT { return exp.value(); } - template - static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const detail::expression, A2, A3, A4>& exp) BOOST_NOEXCEPT { return exp.value().backend(); } - Backend m_backend; }; template diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 6eb8e973..6aef3e63 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -32,6 +32,11 @@ inline void check_tommath_result(unsigned v) } +struct tommath_int; + +void eval_multiply(tommath_int& t, const tommath_int& o); +void eval_add(tommath_int& t, const tommath_int& o); + struct tommath_int { typedef mpl::list signed_types; @@ -186,8 +191,6 @@ struct tommath_int // // We don't use libtommath's own routine because it doesn't error check the input :-( // - using default_ops::eval_multiply; - using default_ops::eval_add; if(m_data.dp == 0) detail::check_tommath_result(mp_init(&m_data)); std::size_t n = s ? std::strlen(s) : 0; @@ -279,8 +282,11 @@ struct tommath_int break; } } - eval_multiply(*this, block_mult); - eval_add(*this, block); + tommath_int t; + t = block_mult; + eval_multiply(*this, t); + t = block; + eval_add(*this, t); } } } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index feb05b87..4a3e83b4 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -119,15 +119,31 @@ bool isfloat(double){ return true; } bool isfloat(long double){ return true; } template bool isfloat(T){ return false; } +namespace detail{ + +template +typename boost::disable_if, T>::type abs(T v) +{ + return v < 0 ? -v : v; +} +template +typename boost::enable_if, T>::type abs(T v) +{ + return v; +} + +} + #define BOOST_TEST_CLOSE(x, y, tol)\ + using std::abs; using detail::abs;\ if(x == 0){\ BOOST_TEST(y == 0); }\ else if(!isfloat(x)){\ BOOST_TEST(x == y); }\ - else if((x != y) && (::fabsl(static_cast((x-y)/x)) > tol))\ + else if((x != y) && (abs((x-y)/x) > tol))\ {\ BOOST_ERROR("Expected tolerance was exceeded: ");\ - BOOST_LIGHTWEIGHT_TEST_OSTREAM << std::setprecision(34) << "(x-y)/x = " << ::fabsl(static_cast((x-y)/x)) \ + BOOST_LIGHTWEIGHT_TEST_OSTREAM << std::setprecision(34) << "(x-y)/x = " << abs((x-y)/x) \ << " tolerance = " << tol << std::endl;\ } @@ -141,6 +157,58 @@ struct is_twos_complement_integer : public boost #define BOOST_TEST_EQUAL(a, b) BOOST_TEST((a) == (b)) + +template +struct related_type +{ + typedef T type; +}; + +#ifdef TEST_MPQ +template <> +struct related_type +{ + typedef boost::multiprecision::mpz_int type; +}; +#endif +#if defined(TEST_MPF_50) || defined(TEST_MPF) +template +struct related_type > > +{ + typedef boost::multiprecision::number< boost::multiprecision::gmp_float > type; +}; +template <> +struct related_type +{ + typedef boost::multiprecision::mpz_int type; +}; +#endif +#ifdef TEST_CPP_DEC_FLOAT +template +struct related_type > > +{ + typedef boost::multiprecision::number< boost::multiprecision::cpp_dec_float > type; +}; +#endif +#if defined(TEST_MPFR_50) || defined(TEST_MPFR) +template +struct related_type > > +{ + typedef boost::multiprecision::number< boost::multiprecision::mpfr_float_backend > type; +}; +#endif +#if defined(TEST_CPP_INT_1) || defined(TEST_CPP_INT_2) || defined(TEST_CPP_INT_3) || defined(TEST_CPP_INT_BR) +template <> +struct related_type +{ + typedef boost::multiprecision::int256_t type; +}; +template +struct related_type, ET> > +{ + typedef boost::multiprecision::number, ET> type; +}; +#endif template void test_comparisons(Val, Val, const boost::mpl::false_) {} @@ -836,7 +904,8 @@ void test_negative_mixed(boost::mpl::true_ const&) Real >::type simple_cast_type; std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; - Num n1 = -static_cast(1uLL << (std::numeric_limits::digits - 1)); + static const int left_shift = std::numeric_limits::digits - 1; + Num n1 = -static_cast(1uLL << ((left_shift < 63) && (left_shift > 0) ? left_shift : 10)); Num n2 = -1; Num n3 = 0; Num n4 = -20; @@ -1047,11 +1116,12 @@ void test_mixed(const boost::mpl::true_&) Real >::type simple_cast_type; - if(std::numeric_limits::digits < std::numeric_limits::digits) + if(std::numeric_limits::is_specialized && std::numeric_limits::is_bounded && std::numeric_limits::digits < std::numeric_limits::digits) return; std::cout << "Testing mixed arithmetic with type: " << typeid(Real).name() << " and " << typeid(Num).name() << std::endl; - Num n1 = static_cast(1uLL << (std::numeric_limits::digits - 1)); + static const int left_shift = std::numeric_limits::digits - 1; + Num n1 = static_cast(1uLL << ((left_shift < 63) && (left_shift > 0) ? left_shift : 10)); Num n2 = 1; Num n3 = 0; Num n4 = 20; @@ -1198,6 +1268,12 @@ void test() test_mixed(tag); test_mixed(tag); test_mixed(tag); + + typedef typename related_type::type related_type; + boost::mpl::bool_::value && !boost::is_same::value> tag2; + + test_mixed(tag2); + #endif // // Integer only functions: From 9edbdc0ca49ab3e6e0ef58cefa46d0671dbb52a6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 4 Sep 2012 17:18:18 +0000 Subject: [PATCH 231/256] Enable optimisations in the GMP and MPFR backends for mixed mode arithmetic. Allow mixed arithmetic between two different expression templates. Change docs to indicate mixed arithmetic is allowed and rebuild. [SVN r80397] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- doc/html/boost_multiprecision/intro.html | 27 ++- doc/html/boost_multiprecision/ref/number.html | 18 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 34 ++-- .../multiprecision/detail/default_ops.hpp | 157 ++++++++++++++---- include/boost/multiprecision/gmp.hpp | 96 +++++------ include/boost/multiprecision/mpfr.hpp | 96 +++++------ test/compile_fail/operator_fail_01.cpp | 17 ++ test/compile_fail/operator_fail_02.cpp | 18 ++ 13 files changed, 309 insertions(+), 172 deletions(-) create mode 100644 test/compile_fail/operator_fail_01.cpp create mode 100644 test/compile_fail/operator_fail_02.cpp diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 521ccd94..6657ceb9 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@ -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 11a14593..3e4124d3 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index c96f5617..2cfc4d61 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 070cf1bb..d02da93c 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 16fb2968..8022566f 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -87,24 +87,39 @@ my_float a, b, c; // These variables have 300 decimal digits precision

    - Note that mixing arithmetic operations using types of different precision is - strictly forbidden: + We can also mix arithmetic operations between different types, provided there + is an unambiguous implicit conversion from one type to the other:

    #include <boost/multiprecision/cpp_int.hpp>
     
     namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
     
    -mp::int128_t a(3), b(2);
    +mp::int128_t a(3), b(4);
     mp::int512_t c(50), d;
     
    -d = c * a;   // Compiler error
    +d = c * a;   // OK, result of mixed arithmetic is an int512_t
     

    - However, conversions are allowed: + Conversions are also allowed:

    d = a; // OK, widening conversion.
     d = a * b;  // OK, can convert from an expression template too.
    -d = mp::int512_t(a) * c; // OK, all the types in the expression are the same now.
    +
    +

    + However conversions that are inherently lossy are either declared explicit + or else forbidden altogether: +

    +
    d = 3.14;  // Error implicit conversion from float not allowed.
    +d = static_cast<mp::int512_t>(3.14);  // OK explicit construction is allowed
    +
    +

    + Mixed arithmetic will fail if the conversion is either ambiguous or explicit: +

    +
    number<cpp_int_backend<>, false> a(2);
    +number<cpp_int_backend<>, true>  b(3);
    +
    +b = a * b; // Error, implicit conversion could go either way.
    +b = a * 3.14; // Error, no operator overload if the conversion would be explicit.
     
    diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index 100989b0..3c10b8c3 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -342,7 +342,8 @@ An expression template derived from number<Backend>.
  • - Any type implicitly convertible to number<Backend, ExpressionTemplates>. + Any type implicitly convertible to number<Backend, ExpressionTemplates>, including some other instance of + class number.
  • @@ -350,10 +351,6 @@ type with a positive value (negative values result in a std::runtime_error being thrown).

    -

    - Note that all the types involved in the expression must evaluate to the same - type - which is to say we cannot mix a number<B1> with a number<B2> where B1 and B2 are different types. -

    operator convertible-to-bool-type()const;
     

    @@ -483,10 +480,11 @@

  • An expression template type derived from number.
  • +
  • + Any type for which number + has an implicit constructor - for example a builtin arithmetic type. +
  • -

    - In addition, one of the two arguments may be a builtin arithmetic type. -

    The return type of these operators is either:

    @@ -507,10 +505,6 @@ is a comparison operator. -

    - Note that all the types involved in the expression must evaluate to the same - type - which is to say we cannot mix a number<B1> with a number<B2> where B1 and B2 are different types. -

    Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative diff --git a/doc/html/index.html b/doc/html/index.html index 16147d66..d7ce9ef1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -120,7 +120,7 @@ - +

    Last revised: August 30, 2012 at 17:55:33 GMT

    Last revised: September 04, 2012 at 17:13:56 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index b94104f6..b58cc69b 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -99,22 +99,35 @@ by passing a second template argument to `number`: my_float a, b, c; // These variables have 300 decimal digits precision -Note that mixing arithmetic operations using types of different precision is strictly forbidden: +We can also mix arithmetic operations between different types, provided there is an unambiguous implicit conversion from one +type to the other: #include namespace mp = boost::multiprecision; // Reduce the typing a bit later... - mp::int128_t a(3), b(2); + mp::int128_t a(3), b(4); mp::int512_t c(50), d; - d = c * a; // Compiler error + d = c * a; // OK, result of mixed arithmetic is an int512_t -However, conversions are allowed: +Conversions are also allowed: d = a; // OK, widening conversion. d = a * b; // OK, can convert from an expression template too. - d = mp::int512_t(a) * c; // OK, all the types in the expression are the same now. + +However conversions that are inherently lossy are either declared explicit or else forbidden altogether: + + d = 3.14; // Error implicit conversion from float not allowed. + d = static_cast(3.14); // OK explicit construction is allowed + +Mixed arithmetic will fail if the conversion is either ambiguous or explicit: + + number, false> a(2); + number, true> b(3); + + b = a * b; // Error, implicit conversion could go either way. + b = a * 3.14; // Error, no operator overload if the conversion would be explicit. [h4 Move Semantics] @@ -1319,14 +1332,11 @@ The arguments to these operators is either: * Another `number`. * An expression template derived from `number`. -* Any type implicitly convertible to `number`. +* Any type implicitly convertible to `number`, including some other instance of class `number`. For the left and right shift operations, the argument must be a builtin integer type with a positive value (negative values result in a `std::runtime_error` being thrown). -Note that all the types involved in the expression must evaluate to the same type - which is to say -we cannot mix a `number` with a `number` where B1 and B2 are different types. - operator ``['convertible-to-bool-type]``()const; Returns an ['unmentionable-type] that is usable in Boolean contexts (this allows `number` to be used in any @@ -1418,8 +1428,7 @@ The arguments to these functions must contain at least one of the following: * A `number`. * An expression template type derived from `number`. - -In addition, one of the two arguments may be a builtin arithmetic type. +* Any type for which `number` has an implicit constructor - for example a builtin arithmetic type. The return type of these operators is either: @@ -1427,9 +1436,6 @@ The return type of these operators is either: * Type `number` when `ExpressionTemplates` is `false`. * Type `bool` if the operator is a comparison operator. -Note that all the types involved in the expression must evaluate to the same type - which is to say -we cannot mix a `number` with a `number` where B1 and B2 are different types. - Finally note that the second argument to the left and right shift operations must be a builtin integer type, and that the argument must be positive (negative arguments result in a `std::runtime_error` being thrown). diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 66f9731e..79f98280 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -178,7 +178,7 @@ inline typename enable_if_c >::value && is_convertib // Default versions of 3-arg arithmetic functions, these mostly just forward to the 2 arg versions: // template -inline void eval_add(T& t, const T& u, const T& v) +inline void eval_add_default(T& t, const T& u, const T& v) { if(&t == &v) { @@ -195,26 +195,37 @@ inline void eval_add(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_add(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_add_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_add(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_add(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_add_default(T& t, const T& u, const U& v) { T vv(v); eval_add(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_add(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_add_default(T& t, const U& u, const T& v) { eval_add(t, v, u); } +template +inline void eval_add_default(T& t, const U& u, const V& v) +{ + t = u; + eval_add(t, u); +} +template +inline void eval_add(T& t, const U& u, const V& v) +{ + eval_add_default(t, u, v); +} template -inline void eval_subtract(T& t, const T& u, const T& v) +inline void eval_subtract_default(T& t, const T& u, const T& v) { if(&t == &v) { @@ -232,27 +243,38 @@ inline void eval_subtract(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_subtract_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_subtract(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_subtract(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_subtract_default(T& t, const T& u, const U& v) { T vv(v); eval_subtract(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_subtract(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_subtract_default(T& t, const U& u, const T& v) { eval_subtract(t, v, u); t.negate(); } +template +inline void eval_subtract_default(T& t, const U& u, const V& v) +{ + t = u; + eval_subtract(t, u); +} +template +inline void eval_subtract(T& t, const U& u, const V& v) +{ + eval_subtract_default(t, u, v); +} template -inline void eval_multiply(T& t, const T& u, const T& v) +inline void eval_multiply_default(T& t, const T& u, const T& v) { if(&t == &v) { @@ -269,26 +291,37 @@ inline void eval_multiply(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_multiply_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_multiply(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_multiply(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_multiply_default(T& t, const T& u, const U& v) { T vv(v); eval_multiply(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_multiply(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_multiply_default(T& t, const U& u, const T& v) { eval_multiply(t, v, u); } +template +inline void eval_multiply_default(T& t, const U& u, const V& v) +{ + t = u; + eval_multiply(t, u); +} +template +inline void eval_multiply(T& t, const U& u, const V& v) +{ + eval_multiply_default(t, u, v); +} template -inline void eval_divide(T& t, const T& u, const T& v) +inline void eval_divide_default(T& t, const T& u, const T& v) { if(&t == &u) eval_divide(t, v); @@ -305,35 +338,45 @@ inline void eval_divide(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_divide(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_divide(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide_default(T& t, const T& u, const U& v) { T vv(v); eval_divide(t, u, vv); } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide_default(T& t, const U& u, const T& v) { T uu; uu = u; eval_divide(t, uu, v); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_divide(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide_default(T& t, const U& u, const T& v) { T uu(u); eval_divide(t, uu, v); } - +template +inline void eval_divide_default(T& t, const U& u, const V& v) +{ + t = u; + eval_divide(t, u); +} +template +inline void eval_divide(T& t, const U& u, const V& v) +{ + eval_divide_default(t, u, v); +} template -inline void eval_modulus(T& t, const T& u, const T& v) +inline void eval_modulus_default(T& t, const T& u, const T& v) { if(&t == &u) eval_modulus(t, v); @@ -350,34 +393,45 @@ inline void eval_modulus(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_modulus(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus_default(T& t, const T& u, const U& v) { T vv(v); eval_modulus(t, u, vv); } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus_default(T& t, const U& u, const T& v) { T uu; uu = u; eval_modulus(t, uu, v); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus_default(T& t, const U& u, const T& v) { T uu(u); eval_modulus(t, uu, v); } +template +inline void eval_modulus_default(T& t, const U& u, const V& v) +{ + t = u; + eval_modulus(t, u); +} +template +inline void eval_modulus(T& t, const U& u, const V& v) +{ + eval_modulus_default(t, u, v); +} template -inline void eval_bitwise_and(T& t, const T& u, const T& v) +inline void eval_bitwise_and_default(T& t, const T& u, const T& v) { if(&t == &v) { @@ -394,26 +448,37 @@ inline void eval_bitwise_and(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_and(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_and(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_and(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_bitwise_and(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_and_default(T& t, const U& u, const T& v) { eval_bitwise_and(t, v, u); } +template +inline void eval_bitwise_and_default(T& t, const U& u, const V& v) +{ + t = u; + eval_bitwise_and(t, u); +} +template +inline void eval_bitwise_and(T& t, const U& u, const V& v) +{ + eval_bitwise_and_default(t, u, v); +} template -inline void eval_bitwise_or(T& t, const T& u, const T& v) +inline void eval_bitwise_or_default(T& t, const T& u, const T& v) { if(&t == &v) { @@ -430,26 +495,37 @@ inline void eval_bitwise_or(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_or(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_or(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_or(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_bitwise_or(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_or_default(T& t, const U& u, const T& v) { eval_bitwise_or(t, v, u); } +template +inline void eval_bitwise_or_default(T& t, const U& u, const V& v) +{ + t = u; + eval_bitwise_or(t, u); +} +template +inline void eval_bitwise_or(T& t, const U& u, const V& v) +{ + eval_bitwise_or_default(t, u, v); +} template -inline void eval_bitwise_xor(T& t, const T& u, const T& v) +inline void eval_bitwise_xor_default(T& t, const T& u, const T& v) { if(&t == &v) { @@ -466,23 +542,34 @@ inline void eval_bitwise_xor(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_xor(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_xor(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_xor(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_bitwise_xor(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_xor_default(T& t, const U& u, const T& v) { eval_bitwise_xor(t, v, u); } +template +inline void eval_bitwise_xor_default(T& t, const U& u, const V& v) +{ + t = u; + eval_bitwise_xor(t, u); +} +template +inline void eval_bitwise_xor(T& t, const U& u, const V& v) +{ + eval_bitwise_xor_default(t, u, v); +} template inline void eval_increment(T& val) diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index ba59df2c..56834437 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -567,18 +567,18 @@ inline typename enable_if_c::value, bool>::type eval_gt(const g return a.compare(b) > 0; } -template -inline void eval_add(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT +template +inline void eval_add(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT { mpf_add(result.data(), result.data(), o.data()); } -template -inline void eval_subtract(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT +template +inline void eval_subtract(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT { mpf_sub(result.data(), result.data(), o.data()); } -template -inline void eval_multiply(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT +template +inline void eval_multiply(gmp_float& result, const gmp_float& o) BOOST_NOEXCEPT { mpf_mul(result.data(), result.data(), o.data()); } @@ -587,8 +587,8 @@ inline bool eval_is_zero(const gmp_float& val) BOOST_NOEXCEPT { return mpf_sgn(val.data()) == 0; } -template -inline void eval_divide(gmp_float& result, const gmp_float& o) +template +inline void eval_divide(gmp_float& result, const gmp_float& o) { if(eval_is_zero(o)) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); @@ -651,31 +651,31 @@ inline void eval_divide(gmp_float& result, long i) // // Specialised 3 arg versions of the basic operators: // -template -inline void eval_add(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_add(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT { mpf_add(a.data(), x.data(), y.data()); } -template -inline void eval_add(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_add(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT { mpf_add_ui(a.data(), x.data(), y); } -template -inline void eval_add(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT +template +inline void eval_add(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT { if(y < 0) mpf_sub_ui(a.data(), x.data(), -y); else mpf_add_ui(a.data(), x.data(), y); } -template -inline void eval_add(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_add(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT { mpf_add_ui(a.data(), y.data(), x); } -template -inline void eval_add(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_add(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT { if(x < 0) { @@ -685,31 +685,31 @@ inline void eval_add(gmp_float& a, long x, const gmp_float& else mpf_add_ui(a.data(), y.data(), x); } -template -inline void eval_subtract(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_subtract(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT { mpf_sub(a.data(), x.data(), y.data()); } -template -inline void eval_subtract(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_subtract(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT { mpf_sub_ui(a.data(), x.data(), y); } -template -inline void eval_subtract(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT +template +inline void eval_subtract(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT { if(y < 0) mpf_add_ui(a.data(), x.data(), -y); else mpf_sub_ui(a.data(), x.data(), y); } -template -inline void eval_subtract(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_subtract(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT { mpf_ui_sub(a.data(), x, y.data()); } -template -inline void eval_subtract(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_subtract(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT { if(x < 0) { @@ -720,18 +720,18 @@ inline void eval_subtract(gmp_float& a, long x, const gmp_float -inline void eval_multiply(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_multiply(gmp_float& a, const gmp_float& x, const gmp_float& y) BOOST_NOEXCEPT { mpf_mul(a.data(), x.data(), y.data()); } -template -inline void eval_multiply(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_multiply(gmp_float& a, const gmp_float& x, unsigned long y) BOOST_NOEXCEPT { mpf_mul_ui(a.data(), x.data(), y); } -template -inline void eval_multiply(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT +template +inline void eval_multiply(gmp_float& a, const gmp_float& x, long y) BOOST_NOEXCEPT { if(y < 0) { @@ -741,13 +741,13 @@ inline void eval_multiply(gmp_float& a, const gmp_float& x, else mpf_mul_ui(a.data(), x.data(), y); } -template -inline void eval_multiply(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_multiply(gmp_float& a, unsigned long x, const gmp_float& y) BOOST_NOEXCEPT { mpf_mul_ui(a.data(), y.data(), x); } -template -inline void eval_multiply(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT +template +inline void eval_multiply(gmp_float& a, long x, const gmp_float& y) BOOST_NOEXCEPT { if(x < 0) { @@ -758,22 +758,22 @@ inline void eval_multiply(gmp_float& a, long x, const gmp_float -inline void eval_divide(gmp_float& a, const gmp_float& x, const gmp_float& y) +template +inline void eval_divide(gmp_float& a, const gmp_float& x, const gmp_float& y) { if(eval_is_zero(y)) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_div(a.data(), x.data(), y.data()); } -template -inline void eval_divide(gmp_float& a, const gmp_float& x, unsigned long y) +template +inline void eval_divide(gmp_float& a, const gmp_float& x, unsigned long y) { if(y == 0) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_div_ui(a.data(), x.data(), y); } -template -inline void eval_divide(gmp_float& a, const gmp_float& x, long y) +template +inline void eval_divide(gmp_float& a, const gmp_float& x, long y) { if(y == 0) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); @@ -785,15 +785,15 @@ inline void eval_divide(gmp_float& a, const gmp_float& x, lo else mpf_div_ui(a.data(), x.data(), y); } -template -inline void eval_divide(gmp_float& a, unsigned long x, const gmp_float& y) +template +inline void eval_divide(gmp_float& a, unsigned long x, const gmp_float& y) { if(eval_is_zero(y)) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); mpf_ui_div(a.data(), x, y.data()); } -template -inline void eval_divide(gmp_float& a, long x, const gmp_float& y) +template +inline void eval_divide(gmp_float& a, long x, const gmp_float& y) { if(eval_is_zero(y)) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index b3e4f14e..7742c65c 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -609,23 +609,23 @@ inline typename enable_if, bool>::type eval_gt(const mpfr_float return a.compare(b) > 0; } -template -inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& result, const mpfr_float_backend& o) +template +inline void eval_divide(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); } @@ -682,31 +682,31 @@ inline void eval_divide(mpfr_float_backend& result, long i) // // Specialised 3 arg versions of the basic operators: // -template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); else mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -716,31 +716,31 @@ inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_b else mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); else mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -751,18 +751,18 @@ inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_fl mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) { @@ -772,13 +772,13 @@ inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_back else mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -789,18 +789,18 @@ inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_fl mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +template +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +template +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +template +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) { @@ -810,13 +810,13 @@ inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backen else mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +template +inline void eval_divide(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +template +inline void eval_divide(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { diff --git a/test/compile_fail/operator_fail_01.cpp b/test/compile_fail/operator_fail_01.cpp new file mode 100644 index 00000000..03dd4d46 --- /dev/null +++ b/test/compile_fail/operator_fail_01.cpp @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + number, true> a(2); + number, false> b(2); + + a = a + b; +} + diff --git a/test/compile_fail/operator_fail_02.cpp b/test/compile_fail/operator_fail_02.cpp new file mode 100644 index 00000000..cd422e74 --- /dev/null +++ b/test/compile_fail/operator_fail_02.cpp @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +using namespace boost::multiprecision; + +int main() +{ + cpp_dec_float_50 a(2); + cpp_int b(2); + + a = a + b; +} + From d561dfe50bb1e36a19a2f54dba513f7f09ebc0ed Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 5 Sep 2012 16:46:54 +0000 Subject: [PATCH 232/256] Allow mixed precision arithmetic in the cpp_int backend. [SVN r80408] --- include/boost/multiprecision/cpp_int.hpp | 340 +++++++++++++---------- 1 file changed, 187 insertions(+), 153 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 17d97b72..ba68478c 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1063,7 +1063,8 @@ public: } return result; } - int compare(const cpp_int_backend& o)const BOOST_NOEXCEPT + template + int compare(const cpp_int_backend& o)const BOOST_NOEXCEPT { if(this->sign() != o.sign()) return this->sign() ? -1 : 1; @@ -1075,7 +1076,8 @@ public: result = -result; return result; } - int compare_unsigned(const cpp_int_backend& o)const BOOST_NOEXCEPT + template + int compare_unsigned(const cpp_int_backend& o)const BOOST_NOEXCEPT { if(this->size() != o.size()) { @@ -1090,8 +1092,8 @@ public: } return 0; } - template - BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT + template + BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmetic i)const BOOST_NOEXCEPT { // braindead version: cpp_int_backend t; @@ -1377,8 +1379,8 @@ public: result = -result; return result; } - template - BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmatic i)const BOOST_NOEXCEPT + template + BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmetic i)const BOOST_NOEXCEPT { // braindead version: cpp_int_backend t; @@ -1394,6 +1396,13 @@ BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend +BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return (a.sign() == b.sign()) + && (a.size() == b.size()) + && std::equal(a.limbs(), a.limbs() + a.size(), b.limbs()); +} template BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT { @@ -1504,13 +1513,13 @@ BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend 0 : eval_gt(a, static_cast(b)); // Use bit pattern of b for comparison. } -template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_add(result, result, o); } -template -inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { using std::swap; @@ -1528,10 +1537,10 @@ inline void add_unsigned(cpp_int_backend& res return; } result.resize(x); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::limb_pointer pr_end = pr + m; + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr_end = pr + m; if(as < bs) swap(pa, pb); @@ -1541,7 +1550,7 @@ inline void add_unsigned(cpp_int_backend& res { carry += static_cast(*pa) + static_cast(*pb); *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++pr, ++pa, ++pb; } pr_end += x - m; @@ -1556,21 +1565,21 @@ inline void add_unsigned(cpp_int_backend& res } carry += static_cast(*pa); *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++pr, ++pa; } if(carry) { result.resize(x + 1); // We overflowed, need to add one more limb: - if(cpp_int_backend::variable || (result.size() > x)) + if(cpp_int_backend::variable || (result.size() > x)) result.limbs()[x] = static_cast(carry); } result.normalize(); result.sign(a.sign()); } -template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign() != b.sign()) { @@ -1580,22 +1589,22 @@ inline void eval_add(cpp_int_backend& result, add_unsigned(result, a, b); } -template -inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Addition using modular arithmatic. // Nothing fancy, just let uintmax_t take the strain: if(&result != &a) result.resize(a.size()); double_limb_type carry = o; - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); unsigned i = 0; for(; carry && (i < result.size()); ++i) { carry += static_cast(pa[i]); pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } if(&a != &result) { @@ -1607,7 +1616,7 @@ inline void add_unsigned(cpp_int_backend& res unsigned x = result.size(); result.resize(x + 1); // We overflowed, need to add one more limb: - if(cpp_int_backend::variable || (result.size() > x)) + if(cpp_int_backend::variable || (result.size() > x)) result.limbs()[x] = static_cast(carry); } result.normalize(); @@ -1623,8 +1632,8 @@ BOOST_FORCEINLINE void eval_add(cpp_int_backend -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign()) { @@ -1642,8 +1651,8 @@ BOOST_FORCEINLINE void eval_add(cpp_int_backend 0) eval_add(result, static_cast(o)); } -template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o < 0) eval_subtract(result, a, static_cast(-o)); @@ -1692,8 +1701,8 @@ BOOST_FORCEINLINE void eval_subtract(cpp_int_backend -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign()) { @@ -1716,8 +1725,8 @@ BOOST_FORCEINLINE void eval_subtract(cpp_int_backend(o)); } } -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(o) { @@ -1751,13 +1760,13 @@ BOOST_FORCEINLINE void eval_decrement(cpp_int_backend -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_subtract(result, result, o); } -template -inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { using std::swap; @@ -1788,9 +1797,9 @@ inline void subtract_unsigned(cpp_int_backend // Set up the result vector: result.resize(x); // Now that a, b, and result are stable, get pointers to their limbs: - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); bool swapped = false; if(c < 0) { @@ -1809,7 +1818,7 @@ inline void subtract_unsigned(cpp_int_backend { borrow = static_cast(pa[i]) - static_cast(pb[i]) - borrow; pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Now where only a has digits, only as long as we've borrowed: @@ -1817,7 +1826,7 @@ inline void subtract_unsigned(cpp_int_backend { borrow = static_cast(pa[i]) - borrow; pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; + borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; ++i; } // Any remaining digits are the same as those in pa: @@ -1833,8 +1842,8 @@ inline void subtract_unsigned(cpp_int_backend if(swapped) result.negate(); } -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign() != b.sign()) { @@ -1843,8 +1852,8 @@ BOOST_FORCEINLINE void eval_subtract(cpp_int_backend -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Very simple long multiplication, only usable for small numbers of limb_type's // but that's the typical use case for this type anyway: @@ -1853,8 +1862,8 @@ inline void eval_multiply(cpp_int_backend& re // unsigned as = a.size(); unsigned bs = b.size(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); if(as == 1) { bool s = b.sign() != a.sign(); @@ -1879,21 +1888,21 @@ inline void eval_multiply(cpp_int_backend& re return; } - if(&result == &a) + if((void*)&result == (void*)&a) { - cpp_int_backend t(a); + cpp_int_backend t(a); eval_multiply(result, t, b); return; } - if(&result == &b) + if((void*)&result == (void*)&b) { - cpp_int_backend t(b); + cpp_int_backend t(b); eval_multiply(result, a, t); return; } result.resize(as + bs); - typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); static const double_limb_type limb_max = ~static_cast(0u); static const double_limb_type double_limb_max = ~static_cast(0u); @@ -1903,19 +1912,22 @@ inline void eval_multiply(cpp_int_backend& re std::memset(pr, 0, result.size() * sizeof(limb_type)); for(unsigned i = 0; i < as; ++i) { - unsigned inner_limit = cpp_int_backend::variable ? bs : (std::min)(result.size() - i, bs); + unsigned inner_limit = cpp_int_backend::variable ? bs : (std::min)(result.size() - i, bs); for(unsigned j = 0; j < inner_limit; ++j) { BOOST_ASSERT(i+j < result.size()); - BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry > static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value))); + BOOST_ASSERT(!std::numeric_limits::is_specialized + || ((std::numeric_limits::max)() - carry + > + static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value))); carry += static_cast(pa[i]) * static_cast(pb[j]); BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry >= pr[i+j])); carry += pr[i + j]; pr[i + j] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - BOOST_ASSERT(carry <= (cpp_int_backend::max_limb_value)); + carry >>= cpp_int_backend::limb_bits; + BOOST_ASSERT(carry <= (cpp_int_backend::max_limb_value)); } - if(cpp_int_backend::variable || (i + bs < result.size())) + if(cpp_int_backend::variable || (i + bs < result.size())) pr[i + bs] = static_cast(carry); carry = 0; } @@ -1925,41 +1937,41 @@ inline void eval_multiply(cpp_int_backend& re // result.sign(a.sign() != b.sign()); } -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) { eval_multiply(result, result, a); } -template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(!val) { result = static_cast(0); return; } - if(&a != &result) + if((void*)&a != (void*)&result) result.resize(a.size()); double_limb_type carry = 0; - typename cpp_int_backend::limb_pointer p = result.limbs(); - typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::limb_pointer p = result.limbs(); + typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); while(p != pe) { carry += static_cast(*pa) * static_cast(val); *p = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; ++p, ++pa; } if(carry) { unsigned i = result.size(); result.resize(i + 1); - if(cpp_int_backend::variable || (result.size() > i)) + if(cpp_int_backend::variable || (result.size() > i)) result.limbs()[i] = static_cast(carry); } result.sign(a.sign()); - if(!cpp_int_backend::variable) + if(!cpp_int_backend::variable) result.normalize(); } template @@ -1967,8 +1979,8 @@ BOOST_FORCEINLINE void eval_multiply(cpp_int_backend -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val <= (std::numeric_limits::max)()) { @@ -1976,7 +1988,7 @@ BOOST_FORCEINLINE void eval_multiply(cpp_int_backend t(val); + cpp_int_backend t(val); eval_multiply(result, a, t); } } @@ -1985,8 +1997,8 @@ BOOST_FORCEINLINE void eval_multiply(cpp_int_backend -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val > 0) eval_multiply(result, a, static_cast(val)); @@ -2001,8 +2013,8 @@ BOOST_FORCEINLINE void eval_multiply(cpp_int_backend -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(val > 0) { @@ -2018,7 +2030,7 @@ inline void eval_multiply(cpp_int_backend& re result.negate(); return; } - cpp_int_backend t(val); + cpp_int_backend t(val); eval_multiply(result, a, t); } template @@ -2027,18 +2039,21 @@ BOOST_FORCEINLINE void eval_multiply(cpp_int_backend -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, const cpp_int_backend& y, cpp_int_backend& r) +template +void divide_unsigned_helper(cpp_int_backend* result, + const cpp_int_backend& x, + const cpp_int_backend& y, + cpp_int_backend& r) { - if((result == &x) || (&r == &x)) + if(((void*)result == (void*)&x) || ((void*)&r == (void*)&x)) { - cpp_int_backend t(x); + cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } - if((result == &y) || (&r == &y)) + if(((void*)result == (void*)&y) || ((void*)&r == (void*)&y)) { - cpp_int_backend t(y); + cpp_int_backend t(y); divide_unsigned_helper(result, x, t, r); return; } @@ -2066,7 +2081,7 @@ void divide_unsigned_helper(cpp_int_backend* if(result == &r) { - cpp_int_backend rem; + cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -2088,8 +2103,8 @@ void divide_unsigned_helper(cpp_int_backend* return; } - typename cpp_int_backend::const_limb_pointer px = x.limbs(); - typename cpp_int_backend::const_limb_pointer py = y.limbs(); + typename cpp_int_backend::const_limb_pointer px = x.limbs(); + typename cpp_int_backend::const_limb_pointer py = y.limbs(); limb_type r_order = x.size() - 1; if((r_order == 0) && (*px == 0)) @@ -2118,7 +2133,7 @@ void divide_unsigned_helper(cpp_int_backend* } } - cpp_int_backend t; + cpp_int_backend t; bool r_neg = false; // @@ -2134,9 +2149,9 @@ void divide_unsigned_helper(cpp_int_backend* else if(r_order == 1) { double_limb_type a, b; - a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; + a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; b = y_order ? - (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] + (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] : py[0]; if(result) *result = a / b; @@ -2148,9 +2163,10 @@ void divide_unsigned_helper(cpp_int_backend* // if(result) result->resize(1 + r_order - y_order); - typename cpp_int_backend::const_limb_pointer prem = r.limbs(); + typename cpp_int_backend::const_limb_pointer prem = r.limbs(); // This is initialised just to keep the compiler from emitting useless warnings later on: - typename cpp_int_backend::limb_pointer pr = typename cpp_int_backend::limb_pointer(); + typename cpp_int_backend::limb_pointer pr + = typename cpp_int_backend::limb_pointer(); if(result) { pr = result->limbs(); @@ -2168,10 +2184,10 @@ void divide_unsigned_helper(cpp_int_backend* if((prem[r_order] <= py[y_order]) && (r_order > 0)) { double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; b = py[y_order]; v = a / b; - if(v > cpp_int_backend::max_limb_value) + if(v > cpp_int_backend::max_limb_value) guess = 1; else { @@ -2186,8 +2202,8 @@ void divide_unsigned_helper(cpp_int_backend* else { double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; - b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); + a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; + b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); v = a / b; guess = static_cast(v); } @@ -2211,7 +2227,7 @@ void divide_unsigned_helper(cpp_int_backend* eval_subtract(*result, t); } } - else if(cpp_int_backend::max_limb_value - pr[shift] > guess) + else if(cpp_int_backend::max_limb_value - pr[shift] > guess) pr[shift] += guess; else { @@ -2228,15 +2244,15 @@ void divide_unsigned_helper(cpp_int_backend* // double_limb_type carry = 0; t.resize(y.size() + shift + 1); - bool truncated_t = !cpp_int_backend::variable && (t.size() != y.size() + shift + 1); - typename cpp_int_backend::limb_pointer pt = t.limbs(); + bool truncated_t = !cpp_int_backend::variable && (t.size() != y.size() + shift + 1); + typename cpp_int_backend::limb_pointer pt = t.limbs(); for(unsigned i = 0; i < shift; ++i) pt[i] = 0; for(unsigned i = 0; i < y.size(); ++i) { carry += static_cast(py[i]) * static_cast(guess); pt[i + shift] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } if(carry && !truncated_t) { @@ -2294,19 +2310,23 @@ void divide_unsigned_helper(cpp_int_backend* BOOST_ASSERT(r.compare_unsigned(y) < 0); // remainder must be less than the divisor or our code has failed } -template -void divide_unsigned_helper(cpp_int_backend* result, const cpp_int_backend& x, limb_type y, cpp_int_backend& r) +template +void divide_unsigned_helper( + cpp_int_backend* result, + const cpp_int_backend& x, + limb_type y, + cpp_int_backend& r) { - if((result == &x) || (&r == &x)) + if(((void*)result == (void*)&x) || ((void*)&r == (void*)&x)) { - cpp_int_backend t(x); + cpp_int_backend t(x); divide_unsigned_helper(result, t, y, r); return; } if(result == &r) { - cpp_int_backend rem; + cpp_int_backend rem; divide_unsigned_helper(result, x, y, rem); r = rem; return; @@ -2330,7 +2350,7 @@ void divide_unsigned_helper(cpp_int_backend* // r = x; r.sign(false); - typename cpp_int_backend::limb_pointer pr = r.limbs(); + typename cpp_int_backend::limb_pointer pr = r.limbs(); if((r_order == 0) && (*pr == 0)) { @@ -2365,7 +2385,7 @@ void divide_unsigned_helper(cpp_int_backend* else if(r_order == 1) { double_limb_type a; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; if(result) { *result = a / y; @@ -2377,7 +2397,7 @@ void divide_unsigned_helper(cpp_int_backend* } // This is initialised just to keep the compiler from emitting useless warnings later on: - typename cpp_int_backend::limb_pointer pres = typename cpp_int_backend::limb_pointer(); + typename cpp_int_backend::limb_pointer pres = typename cpp_int_backend::limb_pointer(); if(result) { result->resize(r_order + 1); @@ -2394,7 +2414,7 @@ void divide_unsigned_helper(cpp_int_backend* if((pr[r_order] < y) && r_order) { double_limb_type a, b; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; + a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; b = a % y; r.resize(r.size() - 1); --r_order; @@ -2438,32 +2458,36 @@ void divide_unsigned_helper(cpp_int_backend* BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed } -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, + const cpp_int_backend& a, const cpp_int_backend& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); result.sign(a.sign() != b.sign()); } -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, limb_type& b) +template +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, + const cpp_int_backend& a, limb_type& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(&result, a, b, r); } -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type& b) +template +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, + const cpp_int_backend& a, signed_limb_type& b) { - cpp_int_backend r; + cpp_int_backend r; divide_unsigned_helper(&result, a, std::abs(b), r); if(b < 0) result.negate(); } -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& b) +template +BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, + const cpp_int_backend& b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_divide(result, a, b); } template @@ -2480,27 +2504,32 @@ BOOST_FORCEINLINE void eval_divide(cpp_int_backend a(result); eval_divide(result, a, b); } -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) +template +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) { - divide_unsigned_helper(static_cast* >(0), a, b, result); + divide_unsigned_helper(static_cast* >(0), a, b, result); result.sign(a.sign()); } -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, limb_type b) +template +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, + const cpp_int_backend& a, limb_type b) { - divide_unsigned_helper(static_cast* >(0), a, b, result); + divide_unsigned_helper(static_cast* >(0), a, b, result); } -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& a, signed_limb_type b) +template +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, + const cpp_int_backend& a, signed_limb_type b) { - divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); + divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); } -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& b) +template +BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, + const cpp_int_backend& b) { // There is no in place divide: - cpp_int_backend a(result); + cpp_int_backend a(result); eval_modulus(result, a, b); } template @@ -2517,8 +2546,11 @@ BOOST_FORCEINLINE void eval_modulus(cpp_int_backend a(result); eval_modulus(result, a, b); } -template -void bitwise_op(cpp_int_backend& result, const cpp_int_backend& o, Op op) BOOST_NOEXCEPT +template +void bitwise_op( + cpp_int_backend& result, + const cpp_int_backend& o, + Op op) BOOST_NOEXCEPT { // // There are 4 cases: @@ -2537,8 +2569,8 @@ void bitwise_op(cpp_int_backend& result, cons unsigned m, x; minmax(rs, os, m, x); result.resize(x); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::const_limb_pointer po = o.limbs(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + typename cpp_int_backend::const_limb_pointer po = o.limbs(); for(unsigned i = rs; i < x; ++i) pr[i] = 0; @@ -2561,13 +2593,13 @@ void bitwise_op(cpp_int_backend& result, cons { carry += static_cast(~po[i]); pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { carry += static_cast(~limb_type(0)); pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: carry += static_cast(~limb_type(0)); @@ -2584,13 +2616,13 @@ void bitwise_op(cpp_int_backend& result, cons { carry += static_cast(~pr[i]); pr[i] = op(static_cast(carry), po[i]); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { carry += static_cast(~pr[i]); pr[i] = op(static_cast(carry), limb_type(0)); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: carry += static_cast(~limb_type(0)); @@ -2606,16 +2638,16 @@ void bitwise_op(cpp_int_backend& result, cons r_carry += static_cast(~pr[i]); o_carry += static_cast(~po[i]); pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; } for(unsigned i = os; i < x; ++i) { r_carry += static_cast(~pr[i]); o_carry += static_cast(~limb_type(0)); pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; + r_carry >>= cpp_int_backend::limb_bits; + o_carry >>= cpp_int_backend::limb_bits; } // Set the overflow into the "extra" limb: r_carry += static_cast(~limb_type(0)); @@ -2634,7 +2666,7 @@ void bitwise_op(cpp_int_backend& result, cons { carry += static_cast(~pr[i]); pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; + carry >>= cpp_int_backend::limb_bits; } } else @@ -2647,23 +2679,25 @@ struct bit_and{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCE struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a | b; } }; struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; -template -BOOST_FORCEINLINE void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) +template +BOOST_FORCEINLINE void eval_bitwise_and( + cpp_int_backend& result, + const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_and()); } -template -BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +template +BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_or()); } -template -BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +template +BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_xor()); } -template -BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +template +BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Increment and negate: result = o; From 6dfcc7e526fc6e03223861c79e20badb8a45318d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 6 Sep 2012 09:50:47 +0000 Subject: [PATCH 233/256] Big search and replace change of name for the ExpressionTemplates template parameter to class number. [SVN r80418] --- doc/multiprecision.qbk | 68 +-- .../concepts/mp_number_archetypes.hpp | 2 +- .../boost/multiprecision/cpp_dec_float.hpp | 48 +- include/boost/multiprecision/cpp_int.hpp | 158 +++---- .../depricated/arithmetic_backend.hpp | 2 +- .../multiprecision/depricated/fixed_int.hpp | 4 +- .../multiprecision/detail/big_lanczos.hpp | 2 +- .../multiprecision/detail/default_ops.hpp | 118 ++--- .../boost/multiprecision/detail/et_ops.hpp | 428 +++++++++--------- .../multiprecision/detail/integer_ops.hpp | 20 +- .../boost/multiprecision/detail/no_et_ops.hpp | 392 ++++++++-------- .../multiprecision/detail/number_base.hpp | 32 +- .../multiprecision/detail/number_compare.hpp | 88 ++-- include/boost/multiprecision/gmp.hpp | 142 +++--- include/boost/multiprecision/miller_rabin.hpp | 6 +- include/boost/multiprecision/mpfr.hpp | 96 ++-- include/boost/multiprecision/number.hpp | 38 +- include/boost/multiprecision/random.hpp | 14 +- .../boost/multiprecision/rational_adapter.hpp | 6 +- include/boost/multiprecision/tommath.hpp | 46 +- performance/arithmetic_backend.hpp | 2 +- performance/delaunay_test.cpp | 8 +- performance/miller_rabin_performance.cpp | 6 +- performance/sf_performance.cpp | 20 +- test/compile_fail/operator_fail_01.cpp | 4 +- test/concepts/number_concept_check.cpp | 2 +- test/concepts/sf_concept_check_basic.cpp | 2 +- test/concepts/sf_concept_check_bessel.cpp | 2 +- test/concepts/sf_concept_check_elliptic.cpp | 2 +- test/concepts/sf_concept_check_gamma.cpp | 2 +- test/concepts/sf_concept_check_poly.cpp | 2 +- test/include_test/cpp_int_include_test.cpp | 8 +- test/math/table_type.hpp | 2 +- test/test_arithmetic.cpp | 10 +- test/test_constexpr.cpp | 8 +- test/test_cpp_int_conv.cpp | 8 +- test/test_float_io.cpp | 6 +- test/ublas_interop/test1.hpp | 2 +- test/ublas_interop/test2.hpp | 2 +- test/ublas_interop/test3.hpp | 2 +- test/ublas_interop/test4.hpp | 2 +- test/ublas_interop/test5.hpp | 2 +- test/ublas_interop/test7.hpp | 2 +- 43 files changed, 911 insertions(+), 905 deletions(-) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index b58cc69b..1446586a 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -95,7 +95,7 @@ by passing a second template argument to `number`: namespace mp = boost::multiprecision; // Reduce the typing a bit later... - typedef mp::number, false> my_float; + typedef mp::number, et_off> my_float; my_float a, b, c; // These variables have 300 decimal digits precision @@ -123,8 +123,8 @@ However conversions that are inherently lossy are either declared explicit or el Mixed arithmetic will fail if the conversion is either ambiguous or explicit: - number, false> a(2); - number, true> b(3); + number, et_off> a(2); + number, et_on> b(3); b = a * b; // Error, implicit conversion could go either way. b = a * 3.14; // Error, no operator overload if the conversion would be explicit. @@ -137,7 +137,7 @@ In addition the non-expression template operator overloads (see below) are move that look something like: template - number operator + (number&& a, const number& b) + number operator + (number&& a, const number& b) { return std::move(a += b); } @@ -336,16 +336,16 @@ The following back-ends provide integer arithmetic: typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef number, false> uint128_t; - typedef number, false> uint256_t; - typedef number, false> uint512_t; - typedef number, false> uint1024_t; + typedef number, et_off> uint128_t; + typedef number, et_off> uint256_t; + typedef number, et_off> uint512_t; + typedef number, et_off> uint1024_t; // Fixed precision signed types: - typedef number, false> int128_t; - typedef number, false> int256_t; - typedef number, false> int512_t; - typedef number, false> int1024_t; + typedef number, et_off> int128_t; + typedef number, et_off> int256_t; + typedef number, et_off> int512_t; + typedef number, et_off> int1024_t; }} // namespaces @@ -1043,10 +1043,10 @@ The library implements a Miller-Rabin test for primality: #include - template + template bool miller_rabin_test(const number& n, unsigned trials, Engine& gen); - template + template bool miller_rabin_test(const number& n, unsigned trials); These functions perform a Miller-Rabin test for primality, if the result is `false` then /n/ is definitely composite, @@ -1076,7 +1076,7 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba namespace boost{ namespace multiprecision{ - template + template class number { number(); @@ -1153,14 +1153,14 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba bool operator>=(const ``['see-below]``&, const ``['see-below]``&); // Swap: - template + template void swap(number& a, number& b); // iostream support: - template + template std::ostream& operator << (std::ostream& os, const number& r); std::ostream& operator << (std::ostream& os, const ``['unmentionable-expression-template-type]``& r); - template + template std::istream& operator >> (std::istream& is, number& r); // Non-member function standard library support: @@ -1209,7 +1209,7 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba // Integer specific functions: ``['unmentionable-expression-template-type]`` pow(const ``['number-or-expression-template-type]``&, unsigned); ``['unmentionable-expression-template-type]`` powm(const ``['number-or-expression-template-type]``& b, const ``['number-or-expression-template-type]``& p, const ``['number-or-expression-template-type]``& m); - template + template void divide_qr(const ``['number-or-expression-template-type]``& x, const ``['number-or-expression-template-type]``& y, number& q, number& r); template @@ -1247,7 +1247,7 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba // numeric_limits support: namespace std{ - template + template struct numeric_limits > { /* Usual members here */ @@ -1257,7 +1257,7 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba [h4 Description] - template + template class number; Class `number` has two template arguments: @@ -1433,7 +1433,7 @@ The arguments to these functions must contain at least one of the following: The return type of these operators is either: * An ['unmentionable-type] expression template type when `ExpressionTemplates` is `true`. -* Type `number` when `ExpressionTemplates` is `false`. +* Type `number` when `ExpressionTemplates` is `false`. * Type `bool` if the operator is a comparison operator. Finally note that the second argument to the left and right shift operations must be a builtin integer type, @@ -1448,11 +1448,11 @@ Swaps `a` and `b`. [h4 Iostream Support] - template + template std::ostream& operator << (std::ostream& os, const number& r); template std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r); - template + template inline std::istream& operator >> (std::istream& is, number& r) These operators provided formatted input-output operations on `number` types, and expression templates derived from them. @@ -1495,7 +1495,7 @@ this library support all of the iostream formatting flags, field width and preci ``['unmentionable-expression-template-type]`` atan2 (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); These functions all behave exactly as their standard library counterparts do: their argument is either an instance of `number` or -an expression template derived from it; If the argument is of type `number` then that is also the return type, +an expression template derived from it; If the argument is of type `number` then that is also the return type, otherwise the return type is an expression template. These functions are normally implemented by the Backend type. However, default versions are provided for Backend types that @@ -1545,7 +1545,7 @@ large as to take "effectively forever" to compute, or else simply run the host m Returns ['b[super p] mod m] as an expression template. - template + template bool divide_qr(const ``['number-or-expression-template-type]``& x, const ``['number-or-expression-template-type]``& y, number& q, number& r); @@ -1643,16 +1643,16 @@ whose precision can vary at compile time (such as `mpf_float`). typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef number, false> uint128_t; - typedef number, false> uint256_t; - typedef number, false> uint512_t; - typedef number, false> uint1024_t; + typedef number, et_off> uint128_t; + typedef number, et_off> uint256_t; + typedef number, et_off> uint512_t; + typedef number, et_off> uint1024_t; // Fixed precision signed types: - typedef number, false> int128_t; - typedef number, false> int256_t; - typedef number, false> int512_t; - typedef number, false> int1024_t; + typedef number, et_off> int128_t; + typedef number, et_off> int256_t; + typedef number, et_off> int512_t; + typedef number, et_off> int1024_t; }} // namespaces diff --git a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp index adc42b68..8884a9fa 100644 --- a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp @@ -206,7 +206,7 @@ struct number_category : public mpl::i namespace std{ -template +template class numeric_limits > : public std::numeric_limits { typedef std::numeric_limits base_type; diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index bd70f8cd..1a7241a5 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -2881,7 +2881,7 @@ struct is_explicitly_convertible, cpp_dec_float > : public namespace std { - template + template class numeric_limits, ExpressionTemplates> > { public: @@ -2922,49 +2922,49 @@ namespace std #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template +template BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif @@ -2974,7 +2974,7 @@ namespace boost{ namespace math{ namespace policies{ -template +template struct precision< boost::multiprecision::number, ExpressionTemplates>, Policy> { // Define a local copy of cpp_dec_float_digits10 because it might differ diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index ba68478c..6c5429d1 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -3069,16 +3069,16 @@ typedef rational_adapter > cpp_rational_backend; typedef number cpp_rational; // Fixed precision unsigned types: -typedef number, false> uint128_t; -typedef number, false> uint256_t; -typedef number, false> uint512_t; -typedef number, false> uint1024_t; +typedef number, et_off> uint128_t; +typedef number, et_off> uint256_t; +typedef number, et_off> uint512_t; +typedef number, et_off> uint1024_t; // Fixed precision signed types: -typedef number, false> int128_t; -typedef number, false> int256_t; -typedef number, false> int512_t; -typedef number, false> int1024_t; +typedef number, et_off> int128_t; +typedef number, et_off> int256_t; +typedef number, et_off> int512_t; +typedef number, et_off> int1024_t; #ifdef BOOST_MSVC #pragma warning(pop) @@ -3102,7 +3102,7 @@ struct is_explicitly_convertible +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -3154,54 +3154,54 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -3273,59 +3273,59 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template +template const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -3401,54 +3401,54 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template +template const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif diff --git a/include/boost/multiprecision/depricated/arithmetic_backend.hpp b/include/boost/multiprecision/depricated/arithmetic_backend.hpp index 0f6e4c02..3dda99ac 100644 --- a/include/boost/multiprecision/depricated/arithmetic_backend.hpp +++ b/include/boost/multiprecision/depricated/arithmetic_backend.hpp @@ -127,7 +127,7 @@ using boost::multiprecision::backends::arithmetic_backend; namespace std{ -template +template class numeric_limits, ExpressionTemplates > > : public std::numeric_limits { typedef std::numeric_limits base_type; diff --git a/include/boost/multiprecision/depricated/fixed_int.hpp b/include/boost/multiprecision/depricated/fixed_int.hpp index 3595f27b..58ec099e 100644 --- a/include/boost/multiprecision/depricated/fixed_int.hpp +++ b/include/boost/multiprecision/depricated/fixed_int.hpp @@ -1517,7 +1517,7 @@ typedef number > int512_t; namespace std{ -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -1591,7 +1591,7 @@ public: BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; }; -template +template typename numeric_limits, ExpressionTemplates> >::initializer const numeric_limits, ExpressionTemplates> >::init; } diff --git a/include/boost/multiprecision/detail/big_lanczos.hpp b/include/boost/multiprecision/detail/big_lanczos.hpp index c3cb1461..094bcb02 100644 --- a/include/boost/multiprecision/detail/big_lanczos.hpp +++ b/include/boost/multiprecision/detail/big_lanczos.hpp @@ -16,7 +16,7 @@ namespace lanczos{ template struct lanczos; -template +template struct lanczos, Policy> { typedef typename boost::math::policies::precision, Policy>::type precision_type; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 79f98280..a8b04623 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -945,7 +945,7 @@ namespace math{ // // Default versions of floating point classification routines: // -template +template inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { using multiprecision::default_ops::eval_fpclassify; @@ -957,7 +957,7 @@ inline int fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::det typedef typename multiprecision::detail::expression::result_type value_type; return fpclassify(value_type(arg)); } -template +template inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { int v = fpclassify(arg); @@ -969,7 +969,7 @@ inline bool isfinite BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::deta typedef typename multiprecision::detail::expression::result_type value_type; return isfinite(value_type(arg)); } -template +template inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { return fpclassify(arg) == FP_NAN; @@ -980,7 +980,7 @@ inline bool isnan BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail: typedef typename multiprecision::detail::expression::result_type value_type; return isnan(value_type(arg)); } -template +template inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { return fpclassify(arg) == FP_INFINITE; @@ -991,7 +991,7 @@ inline bool isinf BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::detail: typedef typename multiprecision::detail::expression::result_type value_type; return isinf(value_type(arg)); } -template +template inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::number& arg) { return fpclassify(arg) == FP_NORMAL; @@ -1013,7 +1013,7 @@ inline typename detail::expression::result_type trunc(const return BOOST_MP_MOVE(trunc(number_type(v), pol)); } -template +template inline number trunc(const number& v, const Policy&) { using default_ops::eval_trunc; @@ -1036,7 +1036,7 @@ inline int itrunc(const detail::expression& v) { return itrunc(v, boost::math::policies::policy<>()); } -template +template inline int itrunc(const number& v, const Policy& pol) { number r = trunc(v, pol); @@ -1044,7 +1044,7 @@ inline int itrunc(const number& v, const Policy& p return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } -template +template inline int itrunc(const number& v) { return itrunc(v, boost::math::policies::policy<>()); @@ -1063,7 +1063,7 @@ inline long ltrunc(const detail::expression& v) { return ltrunc(v, boost::math::policies::policy<>()); } -template +template inline long ltrunc(const number& v, const Policy& pol) { number r = trunc(v, pol); @@ -1071,7 +1071,7 @@ inline long ltrunc(const number& v, const Policy& pol) return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } -template +template inline long ltrunc(const number& v) { return ltrunc(v, boost::math::policies::policy<>()); @@ -1091,7 +1091,7 @@ inline long long lltrunc(const detail::expression& v) { return lltrunc(v, boost::math::policies::policy<>()); } -template +template inline long long lltrunc(const number& v, const Policy& pol) { number r = trunc(v, pol); @@ -1099,7 +1099,7 @@ inline long long lltrunc(const number& v, const Policy& return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } -template +template inline long long lltrunc(const number& v) { return lltrunc(v, boost::math::policies::policy<>()); @@ -1111,7 +1111,7 @@ inline typename detail::expression::result_type round(const typedef typename detail::expression::result_type number_type; return BOOST_MP_MOVE(round(static_cast(v), pol)); } -template +template inline number round(const number& v, const Policy&) { using default_ops::eval_round; @@ -1134,7 +1134,7 @@ inline int iround(const detail::expression& v) { return iround(v, boost::math::policies::policy<>()); } -template +template inline int iround(const number& v, const Policy& pol) { number r = round(v, pol); @@ -1142,7 +1142,7 @@ inline int iround(const number& v, const Policy& pol) return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to(); return r.template convert_to(); } -template +template inline int iround(const number& v) { return iround(v, boost::math::policies::policy<>()); @@ -1161,7 +1161,7 @@ inline long lround(const detail::expression& v) { return lround(v, boost::math::policies::policy<>()); } -template +template inline long lround(const number& v, const Policy& pol) { number r = round(v, pol); @@ -1169,7 +1169,7 @@ inline long lround(const number& v, const Policy& pol) return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to(); return r.template convert_to(); } -template +template inline long lround(const number& v) { return lround(v, boost::math::policies::policy<>()); @@ -1189,7 +1189,7 @@ inline long long llround(const detail::expression& v) { return llround(v, boost::math::policies::policy<>()); } -template +template inline long long llround(const number& v, const Policy& pol) { number r = round(v, pol); @@ -1197,7 +1197,7 @@ inline long long llround(const number& v, const Policy& return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to(); return r.template convert_to(); } -template +template inline long long llround(const number& v) { return llround(v, boost::math::policies::policy<>()); @@ -1241,9 +1241,9 @@ inline typename enable_if_c::value == category,\ detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number > \ + , number > \ >::type \ -func(const number& arg)\ +func(const number& arg)\ {\ return detail::expression<\ detail::function\ @@ -1257,10 +1257,10 @@ func(const number& arg)\ template \ inline typename boost::enable_if_c<\ boost::multiprecision::number_category::value == category,\ - number >::type \ -func(const number& arg)\ + number >::type \ +func(const number& arg)\ {\ - number result;\ + number result;\ using default_ops::BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend());\ return BOOST_MP_MOVE(result);\ @@ -1296,10 +1296,10 @@ inline typename enable_if_c::value == category,\ detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ - , number > \ + , number \ + , number > \ >::type \ -func(const number& arg, const number& a)\ +func(const number& arg, const number& a)\ {\ return detail::expression<\ detail::function\ @@ -1318,10 +1318,10 @@ inline typename enable_if_c<\ detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ + , number \ , detail::expression > \ >::type \ -func(const number& arg, const detail::expression& a)\ +func(const number& arg, const detail::expression& a)\ {\ return detail::expression<\ detail::function\ @@ -1341,9 +1341,9 @@ inline typename enable_if_c<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , detail::expression \ - , number > \ + , number > \ >::type \ -func(const detail::expression& arg, const number& a)\ +func(const detail::expression& arg, const number& a)\ {\ return detail::expression<\ detail::function\ @@ -1384,11 +1384,11 @@ inline typename enable_if_c<\ detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ + , number \ , Arithmetic\ > \ >::type \ -func(const number& arg, const Arithmetic& a)\ +func(const number& arg, const Arithmetic& a)\ {\ return detail::expression<\ detail::function\ @@ -1431,10 +1431,10 @@ inline typename enable_if_c<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , Arithmetic \ - , number \ + , number \ > \ >::type \ -func(const Arithmetic& arg, const number& a)\ +func(const Arithmetic& arg, const number& a)\ {\ return detail::expression<\ detail::function\ @@ -1472,10 +1472,10 @@ func(const Arithmetic& arg, const detail::expression& a)\ }\ template \ inline typename enable_if_c<(number_category::value == category),\ - number >::type \ -func(const number& arg, const number& a)\ + number >::type \ +func(const number& arg, const number& a)\ {\ - number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a.backend());\ return BOOST_MP_MOVE(result);\ @@ -1483,12 +1483,12 @@ func(const number& arg, const number& a)\ template \ inline typename enable_if_c<\ is_arithmetic::value && (number_category::value == category),\ - number \ + number \ >::type \ -func(const number& arg, const Arithmetic& a)\ +func(const number& arg, const Arithmetic& a)\ {\ typedef typename detail::canonical::type canonical_type;\ - number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), static_cast(a));\ return BOOST_MP_MOVE(result);\ @@ -1496,12 +1496,12 @@ func(const number& arg, const Arithmetic& a)\ template \ inline typename enable_if_c<\ is_arithmetic::value && (number_category::value == category),\ - number \ + number \ >::type \ -func(const Arithmetic& a, const number& arg)\ +func(const Arithmetic& a, const number& arg)\ {\ typedef typename detail::canonical::type canonical_type;\ - number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), static_cast(a), arg.backend());\ return BOOST_MP_MOVE(result);\ @@ -1536,10 +1536,10 @@ inline typename enable_if_c<\ detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ + , number \ , Arg2> \ >::type \ -func(const number& arg, Arg2 const& a)\ +func(const number& arg, Arg2 const& a)\ {\ return detail::expression<\ detail::function\ @@ -1555,10 +1555,10 @@ func(const number& arg, Arg2 const& a)\ template \ inline typename enable_if_c<\ (number_category::value == category),\ - number >::type \ -func(const number& arg, Arg2 const& a)\ + number >::type \ +func(const number& arg, Arg2 const& a)\ {\ - number result;\ + number result;\ using default_ops:: BOOST_JOIN(eval_,func);\ BOOST_JOIN(eval_,func)(result.backend(), arg.backend(), a);\ return BOOST_MP_MOVE(result);\ @@ -1614,23 +1614,23 @@ template inline detail::expression< detail::function , detail::abs_funct - , number > -abs(const number& arg) + , number > +abs(const number& arg) { return detail::expression< detail::function , detail::abs_funct - , number + , number >( detail::abs_funct() , arg ); } template -inline number -abs(const number& arg) +inline number +abs(const number& arg) { - number result; + number result; using default_ops::eval_abs; eval_abs(result.backend(), arg.backend()); return BOOST_MP_MOVE(result); @@ -1685,25 +1685,25 @@ namespace detail{ template T sinc_pi_imp(T); template T sinhc_pi_imp(T); } -template +template inline multiprecision::number sinc_pi(const multiprecision::number& x) { return BOOST_MP_MOVE(detail::sinc_pi_imp(x)); } -template +template inline multiprecision::number sinc_pi(const multiprecision::number& x, const Policy&) { return BOOST_MP_MOVE(detail::sinc_pi_imp(x)); } -template +template inline multiprecision::number sinhc_pi(const multiprecision::number& x) { return BOOST_MP_MOVE(detail::sinhc_pi_imp(x)); } -template +template inline multiprecision::number sinhc_pi(const multiprecision::number& x, const Policy&) { return BOOST_MP_MOVE(boost::math::sinhc_pi(x)); diff --git a/include/boost/multiprecision/detail/et_ops.hpp b/include/boost/multiprecision/detail/et_ops.hpp index 35886a9b..1e35c9be 100644 --- a/include/boost/multiprecision/detail/et_ops.hpp +++ b/include/boost/multiprecision/detail/et_ops.hpp @@ -13,46 +13,46 @@ namespace boost{ namespace multiprecision{ // // Unary operators first: // -template +template inline const number& operator + (const number& v) { return v; } template inline const detail::expression& operator + (const detail::expression& v) { return v; } template -inline detail::expression > operator - (const number& v) { return detail::expression >(v); } +inline detail::expression > operator - (const number& v) { return detail::expression >(v); } template inline detail::expression > operator - (const detail::expression& v) { return detail::expression >(v); } template -inline detail::expression > operator ~ (const number& v) { return detail::expression >(v); } +inline detail::expression > operator ~ (const number& v) { return detail::expression >(v); } template inline detail::expression > operator ~ (const detail::expression& v) { return detail::expression >(v); } // // Then addition: // template -inline detail::expression, number > - operator + (const number& a, const number& b) +inline detail::expression, number > + operator + (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator + (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator + (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator + (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator + (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } -template +template inline detail::expression, detail::expression > operator + (const number& a, const detail::expression& b) { return detail::expression, detail::expression >(a, b); } -template +template inline detail::expression, number > operator + (const detail::expression& a, const number& b) { @@ -79,82 +79,82 @@ inline typename enable_if +template inline detail::expression, typename detail::expression::left_type > operator + (const number& a, const detail::expression& b) { return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); } -template +template inline detail::expression, typename detail::expression::left_type > operator + (const detail::expression& a, const number& b) { return detail::expression, typename detail::expression::left_type >(b, a.left_ref()); } template -inline detail::expression, number > - operator + (const number& a, const detail::expression >& b) +inline detail::expression, number > + operator + (const number& a, const detail::expression >& b) { - return detail::expression, number >(a, b.left_ref()); + return detail::expression, number >(a, b.left_ref()); } template -inline detail::expression, number > - operator + (const detail::expression >& a, const number& b) +inline detail::expression, number > + operator + (const detail::expression >& a, const number& b) { - return detail::expression, number >(b, a.left_ref()); + return detail::expression, number >(b, a.left_ref()); } template -inline typename enable_if >, detail::expression > >::type - operator + (const detail::expression >& a, const V& b) +inline typename enable_if >, detail::expression > >::type + operator + (const detail::expression >& a, const V& b) { - return detail::expression >(b, a.left_ref()); + return detail::expression >(b, a.left_ref()); } -template -inline typename enable_if, number >, detail::expression, number > >::type - operator + (const detail::expression >& a, const number& b) +template +inline typename enable_if, number >, detail::expression, number > >::type + operator + (const detail::expression >& a, const number& b) { - return detail::expression, number >(b, a.left_ref()); + return detail::expression, number >(b, a.left_ref()); } -template -inline typename enable_if, number >, detail::expression, number > >::type - operator + (const number& a, const detail::expression >& b) +template +inline typename enable_if, number >, detail::expression, number > >::type + operator + (const number& a, const detail::expression >& b) { - return detail::expression, number >(a, b.left_ref()); + return detail::expression, number >(a, b.left_ref()); } template -inline detail::expression, number > > - operator + (const detail::expression >& a, const detail::expression >& b) +inline detail::expression, number > > + operator + (const detail::expression >& a, const detail::expression >& b) { - return detail::expression, number > >(detail::expression, number >(a.left_ref(), b.left_ref())); + return detail::expression, number > >(detail::expression, number >(a.left_ref(), b.left_ref())); } // // Subtraction: // template -inline detail::expression, number > - operator - (const number& a, const number& b) +inline detail::expression, number > + operator - (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator - (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator - (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator - (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator - (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } -template +template inline detail::expression, detail::expression > operator - (const number& a, const detail::expression& b) { return detail::expression, detail::expression >(a, b); } -template +template inline detail::expression, number > operator - (const detail::expression& a, const number& b) { @@ -181,13 +181,13 @@ inline typename enable_if +template inline detail::expression, typename detail::expression::left_type > operator - (const number& a, const detail::expression& b) { return detail::expression, typename detail::expression::left_type >(a, b.left_ref()); } -template +template inline detail::expression, typename detail::expression::left_type > > operator - (const detail::expression& a, const number& b) { @@ -195,70 +195,70 @@ inline detail::expression, typename detail::expression::left_type >(b, a.left_ref())); } template -inline detail::expression, number > - operator - (const number& a, const detail::expression >& b) +inline detail::expression, number > + operator - (const number& a, const detail::expression >& b) { - return detail::expression, number >(a, b.left_ref()); + return detail::expression, number >(a, b.left_ref()); } template -inline detail::expression, number > > - operator - (const detail::expression >& a, const number& b) +inline detail::expression, number > > + operator - (const detail::expression >& a, const number& b) { - return detail::expression, number > >( - detail::expression, number >(b, a.left_ref())); + return detail::expression, number > >( + detail::expression, number >(b, a.left_ref())); } template -inline typename enable_if >, detail::expression, V > > >::type - operator - (const detail::expression >& a, const V& b) +inline typename enable_if >, detail::expression, V > > >::type + operator - (const detail::expression >& a, const V& b) { - return detail::expression, V > >(detail::expression, V >(a.left_ref(), b)); + return detail::expression, V > >(detail::expression, V >(a.left_ref(), b)); } -template -inline typename enable_if, number >, detail::expression, number > > >::type - operator - (const detail::expression >& a, const number& b) +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator - (const detail::expression >& a, const number& b) { - return detail::expression, number > >(detail::expression, number >(a.left_ref(), b)); + return detail::expression, number > >(detail::expression, number >(a.left_ref(), b)); } template -inline typename enable_if >, detail::expression > >::type - operator - (const V& a, const detail::expression >& b) +inline typename enable_if >, detail::expression > >::type + operator - (const V& a, const detail::expression >& b) { - return detail::expression >(a, b.left_ref()); + return detail::expression >(a, b.left_ref()); } -template -inline typename enable_if, number >, detail::expression, number > >::type - operator - (const number& a, const detail::expression >& b) +template +inline typename enable_if, number >, detail::expression, number > >::type + operator - (const number& a, const detail::expression >& b) { - return detail::expression, number >(a, b.left_ref()); + return detail::expression, number >(a, b.left_ref()); } // // Multiplication: // template -inline detail::expression, number > - operator * (const number& a, const number& b) +inline detail::expression, number > + operator * (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator * (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator * (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator * (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator * (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } -template +template inline detail::expression, detail::expression > operator * (const number& a, const detail::expression& b) { return detail::expression, detail::expression >(a, b); } -template +template inline detail::expression, number > operator * (const detail::expression& a, const number& b) { @@ -285,14 +285,14 @@ inline typename enable_if +template inline detail::expression, typename detail::expression::left_type > > operator * (const number& a, const detail::expression& b) { return detail::expression, typename detail::expression::left_type > >( detail::expression, typename detail::expression::left_type > (a, b.left_ref())); } -template +template inline detail::expression, typename detail::expression::left_type > > operator * (const detail::expression& a, const number& b) { @@ -300,75 +300,75 @@ inline detail::expression, typename detail::expression::left_type >(b, a.left_ref())); } template -inline detail::expression, number > > - operator * (const number& a, const detail::expression >& b) +inline detail::expression, number > > + operator * (const number& a, const detail::expression >& b) { - return detail::expression, number > >( - detail::expression, number >(a, b.left_ref())); + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); } template -inline detail::expression, number > > - operator * (const detail::expression >& a, const number& b) +inline detail::expression, number > > + operator * (const detail::expression >& a, const number& b) { - return detail::expression, number > >( - detail::expression, number >(b, a.left_ref())); + return detail::expression, number > >( + detail::expression, number >(b, a.left_ref())); } template -inline typename enable_if >, detail::expression, V > > >::type - operator * (const detail::expression >& a, const V& b) +inline typename enable_if >, detail::expression, V > > >::type + operator * (const detail::expression >& a, const V& b) { - return detail::expression, V > > ( - detail::expression, V >(a.left_ref(), b)); + return detail::expression, V > > ( + detail::expression, V >(a.left_ref(), b)); } -template -inline typename enable_if, number >, detail::expression, number > > >::type - operator * (const detail::expression >& a, const number& b) +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator * (const detail::expression >& a, const number& b) { - return detail::expression, number > > ( - detail::expression, number >(a.left_ref(), b)); + return detail::expression, number > > ( + detail::expression, number >(a.left_ref(), b)); } template -inline typename enable_if >, detail::expression, V > > >::type - operator * (const V& a, const detail::expression >& b) +inline typename enable_if >, detail::expression, V > > >::type + operator * (const V& a, const detail::expression >& b) { - return detail::expression, V > >( - detail::expression, V >(b.left_ref(), a)); + return detail::expression, V > >( + detail::expression, V >(b.left_ref(), a)); } -template -inline typename enable_if, number >, detail::expression, number > > >::type - operator * (const number& a, const detail::expression >& b) +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator * (const number& a, const detail::expression >& b) { - return detail::expression, number > >( - detail::expression, number >(b.left_ref(), a)); + return detail::expression, number > >( + detail::expression, number >(b.left_ref(), a)); } // // Division: // template -inline detail::expression, number > - operator / (const number& a, const number& b) +inline detail::expression, number > + operator / (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator / (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator / (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator / (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator / (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } -template +template inline detail::expression, detail::expression > operator / (const number& a, const detail::expression& b) { return detail::expression, detail::expression >(a, b); } -template +template inline detail::expression, number > operator / (const detail::expression& a, const number& b) { @@ -395,14 +395,14 @@ inline typename enable_if +template inline detail::expression, typename detail::expression::left_type > > operator / (const number& a, const detail::expression& b) { return detail::expression, typename detail::expression::left_type > >( detail::expression, typename detail::expression::left_type >(a, b.left_ref())); } -template +template inline detail::expression::left_type, number > > operator / (const detail::expression& a, const number& b) { @@ -410,79 +410,79 @@ inline detail::expression::left_type, number >(a.left_ref(), b)); } template -inline detail::expression, number > > - operator / (const number& a, const detail::expression >& b) +inline detail::expression, number > > + operator / (const number& a, const detail::expression >& b) { - return detail::expression, number > >( - detail::expression, number >(a, b.left_ref())); + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); } template -inline detail::expression, number > > - operator / (const detail::expression >& a, const number& b) +inline detail::expression, number > > + operator / (const detail::expression >& a, const number& b) { - return detail::expression, number > >( - detail::expression, number >(a.left_ref(), b)); + return detail::expression, number > >( + detail::expression, number >(a.left_ref(), b)); } template -inline typename enable_if >, detail::expression, V > > >::type - operator / (const detail::expression >& a, const V& b) +inline typename enable_if >, detail::expression, V > > >::type + operator / (const detail::expression >& a, const V& b) { - return detail::expression, V > >( - detail::expression, V>(a.left_ref(), b)); + return detail::expression, V > >( + detail::expression, V>(a.left_ref(), b)); } -template -inline typename enable_if, number >, detail::expression, number > > >::type - operator / (const detail::expression >& a, const number& b) +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator / (const detail::expression >& a, const number& b) { - return detail::expression, number > >( - detail::expression, number >(a.left_ref(), b)); + return detail::expression, number > >( + detail::expression, number >(a.left_ref(), b)); } template -inline typename enable_if >, detail::expression > > >::type - operator / (const V& a, const detail::expression >& b) +inline typename enable_if >, detail::expression > > >::type + operator / (const V& a, const detail::expression >& b) { - return detail::expression > >( - detail::expression >(a, b.left_ref())); + return detail::expression > >( + detail::expression >(a, b.left_ref())); } -template -inline typename enable_if, number >, detail::expression, number > > >::type - operator / (const number& a, const detail::expression >& b) +template +inline typename enable_if, number >, detail::expression, number > > >::type + operator / (const number& a, const detail::expression >& b) { - return detail::expression, number > >( - detail::expression, number >(a, b.left_ref())); + return detail::expression, number > >( + detail::expression, number >(a, b.left_ref())); } // // Modulus: // template -inline detail::expression, number > - operator % (const number& a, const number& b) +inline detail::expression, number > + operator % (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator % (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator % (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator % (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator % (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } template -inline detail::expression, detail::expression > - operator % (const number& a, const detail::expression& b) +inline detail::expression, detail::expression > + operator % (const number& a, const detail::expression& b) { - return detail::expression, detail::expression >(a, b); + return detail::expression, detail::expression >(a, b); } template -inline detail::expression, number > - operator % (const detail::expression& a, const number& b) +inline detail::expression, number > + operator % (const detail::expression& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template inline detail::expression, detail::expression > @@ -506,10 +506,10 @@ inline typename enable_if -inline typename enable_if, detail::expression, I > >::type - operator << (const number& a, const I& b) +inline typename enable_if, detail::expression, I > >::type + operator << (const number& a, const I& b) { - return detail::expression, I>(a, b); + return detail::expression, I>(a, b); } template inline typename enable_if, detail::expression, I> >::type @@ -521,10 +521,10 @@ inline typename enable_if, detail::expression -inline typename enable_if, detail::expression, I > >::type - operator >> (const number& a, const I& b) +inline typename enable_if, detail::expression, I > >::type + operator >> (const number& a, const I& b) { - return detail::expression, I>(a, b); + return detail::expression, I>(a, b); } template inline typename enable_if, detail::expression, I> >::type @@ -536,34 +536,34 @@ inline typename enable_if, detail::expression -inline detail::expression, number > - operator & (const number& a, const number& b) +inline detail::expression, number > + operator & (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator & (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator & (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator & (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator & (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } template -inline detail::expression, detail::expression > - operator & (const number& a, const detail::expression& b) +inline detail::expression, detail::expression > + operator & (const number& a, const detail::expression& b) { - return detail::expression, detail::expression >(a, b); + return detail::expression, detail::expression >(a, b); } template -inline detail::expression, number > - operator & (const detail::expression& a, const number& b) +inline detail::expression, number > + operator & (const detail::expression& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template inline detail::expression, detail::expression > @@ -587,34 +587,34 @@ inline typename enable_if -inline detail::expression, number > - operator| (const number& a, const number& b) +inline detail::expression, number > + operator| (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator| (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator| (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator| (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator| (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } template -inline detail::expression, detail::expression > - operator| (const number& a, const detail::expression& b) +inline detail::expression, detail::expression > + operator| (const number& a, const detail::expression& b) { - return detail::expression, detail::expression >(a, b); + return detail::expression, detail::expression >(a, b); } template -inline detail::expression, number > - operator| (const detail::expression& a, const number& b) +inline detail::expression, number > + operator| (const detail::expression& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template inline detail::expression, detail::expression > @@ -638,34 +638,34 @@ inline typename enable_if -inline detail::expression, number > - operator^ (const number& a, const number& b) +inline detail::expression, number > + operator^ (const number& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template -inline typename enable_if >, detail::expression, V > >::type - operator^ (const number& a, const V& b) +inline typename enable_if >, detail::expression, V > >::type + operator^ (const number& a, const V& b) { - return detail::expression, V >(a, b); + return detail::expression, V >(a, b); } template -inline typename enable_if >, detail::expression > >::type - operator^ (const V& a, const number& b) +inline typename enable_if >, detail::expression > >::type + operator^ (const V& a, const number& b) { - return detail::expression >(a, b); + return detail::expression >(a, b); } template -inline detail::expression, detail::expression > - operator^ (const number& a, const detail::expression& b) +inline detail::expression, detail::expression > + operator^ (const number& a, const detail::expression& b) { - return detail::expression, detail::expression >(a, b); + return detail::expression, detail::expression >(a, b); } template -inline detail::expression, number > - operator^ (const detail::expression& a, const number& b) +inline detail::expression, number > + operator^ (const detail::expression& a, const number& b) { - return detail::expression, number >(a, b); + return detail::expression, number >(a, b); } template inline detail::expression, detail::expression > diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index c7ddffcb..d01e92bb 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -131,7 +131,7 @@ inline void eval_lcm(B& result, const B& a, const B& b) } -template +template inline typename enable_if_c::value == number_kind_integer>::type divide_qr(const number& x, const number& y, number& q, number& r) @@ -140,7 +140,7 @@ inline typename enable_if_c::value == number_kind_integ eval_qr(x.backend(), y.backend(), q.backend(), r.backend()); } -template +template inline typename enable_if_c::value == number_kind_integer>::type divide_qr(const number& x, const multiprecision::detail::expression& y, number& q, number& r) @@ -148,7 +148,7 @@ inline typename enable_if_c::value == number_kind_integ divide_qr(x, number(y), q, r); } -template +template inline typename enable_if_c::value == number_kind_integer>::type divide_qr(const multiprecision::detail::expression& x, const number& y, number& q, number& r) @@ -156,7 +156,7 @@ inline typename enable_if_c::value == number_kind_integ divide_qr(number(x), y, q, r); } -template +template inline typename enable_if_c::value == number_kind_integer>::type divide_qr(const multiprecision::detail::expression& x, const multiprecision::detail::expression& y, number& q, number& r) @@ -164,7 +164,7 @@ inline typename enable_if_c::value == number_kind_integ divide_qr(number(x), number(y), q, r); } -template +template inline typename enable_if, mpl::bool_::value == number_kind_integer> >, Integer>::type integer_modulus(const number& x, Integer val) { @@ -180,7 +180,7 @@ inline typename enable_if, mpl::bool_ +template inline typename enable_if_c::value == number_kind_integer, unsigned>::type lsb(const number& x) { @@ -198,7 +198,7 @@ inline typename enable_if_c +template inline typename enable_if_c::value == number_kind_integer, bool>::type bit_test(const number& x, unsigned index) { @@ -216,7 +216,7 @@ inline typename enable_if_c +template inline typename enable_if_c::value == number_kind_integer, number&>::type bit_set(number& x, unsigned index) { @@ -225,7 +225,7 @@ inline typename enable_if_c::value == number_kind_integ return x; } -template +template inline typename enable_if_c::value == number_kind_integer, number&>::type bit_unset(number& x, unsigned index) { @@ -234,7 +234,7 @@ inline typename enable_if_c::value == number_kind_integ return x; } -template +template inline typename enable_if_c::value == number_kind_integer, number&>::type bit_flip(number& x, unsigned index) { diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index 18728ea0..49933a8f 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -15,16 +15,16 @@ namespace multiprecision{ // NOTE: these operators have to be defined after the methods in default_ops.hpp. // template -inline number operator - (const number& v) +inline number operator - (const number& v) { - number result(v); + number result(v); result.backend().negate(); return BOOST_MP_MOVE(result); } template -inline number operator ~ (const number& v) +inline number operator ~ (const number& v) { - number result; + number result; eval_complement(result.backend(), v.backend()); return BOOST_MP_MOVE(result); } @@ -32,252 +32,252 @@ inline number operator ~ (const number& v) // Addition: // template -inline number operator + (const number& a, const number& b) +inline number operator + (const number& a, const number& b) { - number result; + number result; using default_ops::eval_add; eval_add(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator + (const number& a, const V& b) +inline typename enable_if >, number >::type + operator + (const number& a, const V& b) { - number result; + number result; using default_ops::eval_add; - eval_add(result.backend(), a.backend(), number::canonical_value(b)); + eval_add(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator + (const V& a, const number& b) +inline typename enable_if >, number >::type + operator + (const V& a, const number& b) { - number result; + number result; using default_ops::eval_add; - eval_add(result.backend(), b.backend(), number::canonical_value(a)); + eval_add(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // // Subtraction: // template -inline number operator - (const number& a, const number& b) +inline number operator - (const number& a, const number& b) { - number result; + number result; using default_ops::eval_subtract; eval_subtract(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator - (const number& a, const V& b) +inline typename enable_if >, number >::type + operator - (const number& a, const V& b) { - number result; + number result; using default_ops::eval_subtract; - eval_subtract(result.backend(), a.backend(), number::canonical_value(b)); + eval_subtract(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator - (const V& a, const number& b) +inline typename enable_if >, number >::type + operator - (const V& a, const number& b) { - number result; + number result; using default_ops::eval_subtract; - eval_subtract(result.backend(), number::canonical_value(a), b.backend()); + eval_subtract(result.backend(), number::canonical_value(a), b.backend()); return BOOST_MP_MOVE(result); } // // Multiply: // template -inline number operator * (const number& a, const number& b) +inline number operator * (const number& a, const number& b) { - number result; + number result; using default_ops::eval_multiply; eval_multiply(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator * (const number& a, const V& b) +inline typename enable_if >, number >::type + operator * (const number& a, const V& b) { - number result; + number result; using default_ops::eval_multiply; - eval_multiply(result.backend(), a.backend(), number::canonical_value(b)); + eval_multiply(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator * (const V& a, const number& b) +inline typename enable_if >, number >::type + operator * (const V& a, const number& b) { - number result; + number result; using default_ops::eval_multiply; - eval_multiply(result.backend(), b.backend(), number::canonical_value(a)); + eval_multiply(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // // divide: // template -inline number operator / (const number& a, const number& b) +inline number operator / (const number& a, const number& b) { - number result; + number result; using default_ops::eval_divide; eval_divide(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator / (const number& a, const V& b) +inline typename enable_if >, number >::type + operator / (const number& a, const V& b) { - number result; + number result; using default_ops::eval_divide; - eval_divide(result.backend(), a.backend(), number::canonical_value(b)); + eval_divide(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator / (const V& a, const number& b) +inline typename enable_if >, number >::type + operator / (const V& a, const number& b) { - number result; + number result; using default_ops::eval_divide; - eval_divide(result.backend(), number::canonical_value(a), b.backend()); + eval_divide(result.backend(), number::canonical_value(a), b.backend()); return BOOST_MP_MOVE(result); } // // modulus: // template -inline number operator % (const number& a, const number& b) +inline number operator % (const number& a, const number& b) { - number result; + number result; using default_ops::eval_modulus; eval_modulus(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator % (const number& a, const V& b) +inline typename enable_if >, number >::type + operator % (const number& a, const V& b) { - number result; + number result; using default_ops::eval_modulus; - eval_modulus(result.backend(), a.backend(), number::canonical_value(b)); + eval_modulus(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator % (const V& a, const number& b) +inline typename enable_if >, number >::type + operator % (const V& a, const number& b) { - number result; + number result; using default_ops::eval_modulus; - eval_modulus(result.backend(), number::canonical_value(a), b.backend()); + eval_modulus(result.backend(), number::canonical_value(a), b.backend()); return BOOST_MP_MOVE(result); } // // Bitwise or: // template -inline number operator | (const number& a, const number& b) +inline number operator | (const number& a, const number& b) { - number result; + number result; using default_ops::eval_bitwise_or; eval_bitwise_or(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator | (const number& a, const V& b) +inline typename enable_if >, number >::type + operator | (const number& a, const V& b) { - number result; + number result; using default_ops::eval_bitwise_or; - eval_bitwise_or(result.backend(), a.backend(), number::canonical_value(b)); + eval_bitwise_or(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator | (const V& a, const number& b) +inline typename enable_if >, number >::type + operator | (const V& a, const number& b) { - number result; + number result; using default_ops::eval_bitwise_or; - eval_bitwise_or(result.backend(), b.backend(), number::canonical_value(a)); + eval_bitwise_or(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // // Bitwise xor: // template -inline number operator ^ (const number& a, const number& b) +inline number operator ^ (const number& a, const number& b) { - number result; + number result; using default_ops::eval_bitwise_xor; eval_bitwise_xor(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator ^ (const number& a, const V& b) +inline typename enable_if >, number >::type + operator ^ (const number& a, const V& b) { - number result; + number result; using default_ops::eval_bitwise_xor; - eval_bitwise_xor(result.backend(), a.backend(), number::canonical_value(b)); + eval_bitwise_xor(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator ^ (const V& a, const number& b) +inline typename enable_if >, number >::type + operator ^ (const V& a, const number& b) { - number result; + number result; using default_ops::eval_bitwise_xor; - eval_bitwise_xor(result.backend(), b.backend(), number::canonical_value(a)); + eval_bitwise_xor(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // // Bitwise and: // template -inline number operator & (const number& a, const number& b) +inline number operator & (const number& a, const number& b) { - number result; + number result; using default_ops::eval_bitwise_and; eval_bitwise_and(result.backend(), a.backend(), b.backend()); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator & (const number& a, const V& b) +inline typename enable_if >, number >::type + operator & (const number& a, const V& b) { - number result; + number result; using default_ops::eval_bitwise_and; - eval_bitwise_and(result.backend(), a.backend(), number::canonical_value(b)); + eval_bitwise_and(result.backend(), a.backend(), number::canonical_value(b)); return BOOST_MP_MOVE(result); } template -inline typename enable_if >, number >::type - operator & (const V& a, const number& b) +inline typename enable_if >, number >::type + operator & (const V& a, const number& b) { - number result; + number result; using default_ops::eval_bitwise_and; - eval_bitwise_and(result.backend(), b.backend(), number::canonical_value(a)); + eval_bitwise_and(result.backend(), b.backend(), number::canonical_value(a)); return BOOST_MP_MOVE(result); } // // shifts: // template -inline typename enable_if, number >::type - operator << (const number& a, const I& b) +inline typename enable_if, number >::type + operator << (const number& a, const I& b) { - number result(a); + number result(a); using default_ops::eval_left_shift; detail::check_shift_range(b, mpl::bool_<(sizeof(I) > sizeof(std::size_t))>(), is_signed()); eval_left_shift(result.backend(), b); return BOOST_MP_MOVE(result); } template -inline typename enable_if, number >::type - operator >> (const number& a, const I& b) +inline typename enable_if, number >::type + operator >> (const number& a, const I& b) { - number result(a); + number result(a); using default_ops::eval_right_shift; detail::check_shift_range(b, mpl::bool_<(sizeof(I) > sizeof(std::size_t))>(), is_signed()); eval_right_shift(result.backend(), b); @@ -297,313 +297,313 @@ inline typename enable_if, number >::type // semantics help a great deal in return by value, so performance is still pretty good... // template -inline number operator - (number&& v) +inline number operator - (number&& v) { v.backend().negate(); - return static_cast&&>(v); + return static_cast&&>(v); } template -inline number operator ~ (number&& v) +inline number operator ~ (number&& v) { eval_complement(v.backend(), v.backend()); - return static_cast&&>(v); + return static_cast&&>(v); } // // Addition: // template -inline number operator + (number&& a, const number& b) +inline number operator + (number&& a, const number& b) { using default_ops::eval_add; eval_add(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline number operator + (const number& a, number&& b) +inline number operator + (const number& a, number&& b) { using default_ops::eval_add; eval_add(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline number operator + (number&& a, number&& b) +inline number operator + (number&& a, number&& b) { using default_ops::eval_add; eval_add(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator + (number&& a, const V& b) +inline typename enable_if >, number >::type + operator + (number&& a, const V& b) { using default_ops::eval_add; - eval_add(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_add(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator + (const V& a, number&& b) +inline typename enable_if >, number >::type + operator + (const V& a, number&& b) { using default_ops::eval_add; - eval_add(b.backend(), number::canonical_value(a)); - return static_cast&&>(b); + eval_add(b.backend(), number::canonical_value(a)); + return static_cast&&>(b); } // // Subtraction: // template -inline number operator - (number&& a, const number& b) +inline number operator - (number&& a, const number& b) { using default_ops::eval_subtract; eval_subtract(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline number operator - (const number& a, number&& b) +inline number operator - (const number& a, number&& b) { using default_ops::eval_subtract; eval_subtract(b.backend(), a.backend()); b.backend().negate(); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline number operator - (number&& a, number&& b) +inline number operator - (number&& a, number&& b) { using default_ops::eval_subtract; eval_subtract(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator - (number&& a, const V& b) +inline typename enable_if >, number >::type + operator - (number&& a, const V& b) { using default_ops::eval_subtract; - eval_subtract(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_subtract(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator - (const V& a, number&& b) +inline typename enable_if >, number >::type + operator - (const V& a, number&& b) { using default_ops::eval_subtract; - eval_subtract(b.backend(), number::canonical_value(a)); + eval_subtract(b.backend(), number::canonical_value(a)); b.backend().negate(); - return static_cast&&>(b); + return static_cast&&>(b); } // // Multiply: // template -inline number operator * (number&& a, const number& b) +inline number operator * (number&& a, const number& b) { using default_ops::eval_multiply; eval_multiply(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline number operator * (const number& a, number&& b) +inline number operator * (const number& a, number&& b) { using default_ops::eval_multiply; eval_multiply(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline number operator * (number&& a, number&& b) +inline number operator * (number&& a, number&& b) { using default_ops::eval_multiply; eval_multiply(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator * (number&& a, const V& b) +inline typename enable_if >, number >::type + operator * (number&& a, const V& b) { using default_ops::eval_multiply; - eval_multiply(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_multiply(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator * (const V& a, number&& b) +inline typename enable_if >, number >::type + operator * (const V& a, number&& b) { using default_ops::eval_multiply; - eval_multiply(b.backend(), number::canonical_value(a)); - return static_cast&&>(b); + eval_multiply(b.backend(), number::canonical_value(a)); + return static_cast&&>(b); } // // divide: // template -inline number operator / (number&& a, const number& b) +inline number operator / (number&& a, const number& b) { using default_ops::eval_divide; eval_divide(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator / (number&& a, const V& b) +inline typename enable_if >, number >::type + operator / (number&& a, const V& b) { using default_ops::eval_divide; - eval_divide(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_divide(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } // // modulus: // template -inline number operator % (number&& a, const number& b) +inline number operator % (number&& a, const number& b) { using default_ops::eval_modulus; eval_modulus(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator % (number&& a, const V& b) +inline typename enable_if >, number >::type + operator % (number&& a, const V& b) { using default_ops::eval_modulus; - eval_modulus(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_modulus(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } // // Bitwise or: // template -inline number operator | (number&& a, const number& b) +inline number operator | (number&& a, const number& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline number operator | (const number& a, number&& b) +inline number operator | (const number& a, number&& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline number operator | (number&& a, number&& b) +inline number operator | (number&& a, number&& b) { using default_ops::eval_bitwise_or; eval_bitwise_or(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator | (number&& a, const V& b) +inline typename enable_if >, number >::type + operator | (number&& a, const V& b) { using default_ops::eval_bitwise_or; - eval_bitwise_or(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_bitwise_or(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator | (const V& a, number&& b) +inline typename enable_if >, number >::type + operator | (const V& a, number&& b) { using default_ops::eval_bitwise_or; - eval_bitwise_or(b.backend(), number::canonical_value(a)); - return static_cast&&>(b); + eval_bitwise_or(b.backend(), number::canonical_value(a)); + return static_cast&&>(b); } // // Bitwise xor: // template -inline number operator ^ (number&& a, const number& b) +inline number operator ^ (number&& a, const number& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline number operator ^ (const number& a, number&& b) +inline number operator ^ (const number& a, number&& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline number operator ^ (number&& a, number&& b) +inline number operator ^ (number&& a, number&& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator ^ (number&& a, const V& b) +inline typename enable_if >, number >::type + operator ^ (number&& a, const V& b) { using default_ops::eval_bitwise_xor; - eval_bitwise_xor(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_bitwise_xor(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator ^ (const V& a, number&& b) +inline typename enable_if >, number >::type + operator ^ (const V& a, number&& b) { using default_ops::eval_bitwise_xor; - eval_bitwise_xor(b.backend(), number::canonical_value(a)); - return static_cast&&>(b); + eval_bitwise_xor(b.backend(), number::canonical_value(a)); + return static_cast&&>(b); } // // Bitwise and: // template -inline number operator & (number&& a, const number& b) +inline number operator & (number&& a, const number& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline number operator & (const number& a, number&& b) +inline number operator & (const number& a, number&& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(b.backend(), a.backend()); - return static_cast&&>(b); + return static_cast&&>(b); } template -inline number operator & (number&& a, number&& b) +inline number operator & (number&& a, number&& b) { using default_ops::eval_bitwise_and; eval_bitwise_and(a.backend(), b.backend()); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator & (number&& a, const V& b) +inline typename enable_if >, number >::type + operator & (number&& a, const V& b) { using default_ops::eval_bitwise_and; - eval_bitwise_and(a.backend(), number::canonical_value(b)); - return static_cast&&>(a); + eval_bitwise_and(a.backend(), number::canonical_value(b)); + return static_cast&&>(a); } template -inline typename enable_if >, number >::type - operator & (const V& a, number&& b) +inline typename enable_if >, number >::type + operator & (const V& a, number&& b) { using default_ops::eval_bitwise_and; - eval_bitwise_and(b.backend(), number::canonical_value(a)); - return static_cast&&>(b); + eval_bitwise_and(b.backend(), number::canonical_value(a)); + return static_cast&&>(b); } // // shifts: // template -inline typename enable_if, number >::type - operator << (number&& a, const I& b) +inline typename enable_if, number >::type + operator << (number&& a, const I& b) { using default_ops::eval_left_shift; eval_left_shift(a.backend(), b); - return static_cast&&>(a); + return static_cast&&>(a); } template -inline typename enable_if, number >::type - operator >> (number&& a, const I& b) +inline typename enable_if, number >::type + operator >> (number&& a, const I& b) { using default_ops::eval_right_shift; eval_right_shift(a.backend(), b); - return static_cast&&>(a); + return static_cast&&>(a); } #endif diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index 8721991c..0f6ed2bd 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -14,13 +14,19 @@ namespace boost{ namespace multiprecision{ -template +enum expression_template_option +{ + et_off = 0, + et_on = 1 +}; + +template class number; template struct is_number : public mpl::false_ {}; -template +template struct is_number > : public mpl::true_ {}; namespace detail{ @@ -79,12 +85,12 @@ struct canonical_imp typedef typename remove_cv::type>::type type; }; template -struct canonical_imp, Backend, Tag> +struct canonical_imp, Backend, Tag> { typedef B type; }; template -struct canonical_imp, Backend, Tag> +struct canonical_imp, Backend, Tag> { typedef B type; }; @@ -178,7 +184,7 @@ struct function{}; template struct backend_type; -template +template struct backend_type > { typedef T type; @@ -193,7 +199,7 @@ struct backend_type > template struct is_number : public mpl::false_{}; -template +template struct is_number > : public mpl::true_{}; template struct is_mp_number_exp : public mpl::false_{}; @@ -203,25 +209,25 @@ struct is_mp_number_exp struct combine_expression; -template +template struct combine_expression, T2> { typedef number type; }; -template +template struct combine_expression > { typedef number type; }; -template +template struct combine_expression, number > { typedef number type; }; -template +template struct combine_expression, number > { typedef typename mpl::if_c< @@ -643,14 +649,14 @@ enum number_category_type template struct number_category : public mpl::int_::is_integer ? number_kind_integer : (std::numeric_limits::max_exponent ? number_kind_floating_point : number_kind_unknown)> {}; -template +template struct number_category > : public number_category{}; template struct number_category > : public number_category::result_type>{}; template struct component_type; -template +template struct component_type > : public component_type{}; template struct component_type > : public component_type::result_type>{}; @@ -668,7 +674,7 @@ struct promote_arg::result_type type; }; -template +template inline R real_cast(const boost::multiprecision::number& val) { return val.template convert_to(); diff --git a/include/boost/multiprecision/detail/number_compare.hpp b/include/boost/multiprecision/detail/number_compare.hpp index afeabbb3..ce7f622d 100644 --- a/include/boost/multiprecision/detail/number_compare.hpp +++ b/include/boost/multiprecision/detail/number_compare.hpp @@ -31,9 +31,9 @@ template inline bool eval_eq(const B& a, const A& b) { typedef typename mpl::if_c< - is_convertible >::value, - number, - number >::type mp_type; + is_convertible >::value, + number, + number >::type mp_type; mp_type t(b); return eval_eq(a, t.backend()); } @@ -47,9 +47,9 @@ template inline bool eval_lt(const B& a, const A& b) { typedef typename mpl::if_c< - is_convertible >::value, - number, - number >::type mp_type; + is_convertible >::value, + number, + number >::type mp_type; mp_type t(b); return eval_lt(a, t.backend()); } @@ -63,9 +63,9 @@ template inline bool eval_gt(const B& a, const A& b) { typedef typename mpl::if_c< - is_convertible >::value, - number, - number >::type mp_type; + is_convertible >::value, + number, + number >::type mp_type; mp_type t(b); return eval_gt(a, t.backend()); } @@ -77,32 +77,32 @@ namespace detail{ template struct is_valid_mixed_compare : public mpl::false_ {}; -template +template struct is_valid_mixed_compare, Val> : public is_convertible> {}; /* -template +template struct is_valid_mixed_compare > : public is_convertible> {}; */ -template +template struct is_valid_mixed_compare, number > : public mpl::false_ {}; -template +template struct is_valid_mixed_compare, expression > : public mpl::bool_, number >::value> {}; -template +template struct is_valid_mixed_compare, number > : public mpl::bool_, number >::value> {}; } -template +template inline bool operator == (const number& a, const number& b) { using default_ops::eval_eq; return eval_eq(a.backend(), b.backend()); } -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator == (const number& a, const Arithmetic& b) { @@ -110,7 +110,7 @@ inline typename enable_if_c::canonical_value(b)); } /* -template +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator == (const number& a, const detail::expression& b) { @@ -119,7 +119,7 @@ inline typename enable_if, typename return eval_eq(a.backend(), t.backend()); } */ -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator == (const Arithmetic& a, const number& b) { @@ -136,7 +136,7 @@ inline typename enable_if_c +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator == (const detail::expression& a, const number& b) { @@ -163,13 +163,13 @@ inline typename enable_if +template inline bool operator != (const number& a, const number& b) { using default_ops::eval_eq; return !eval_eq(a.backend(), b.backend()); } -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator != (const number& a, const Arithmetic& b) { @@ -177,7 +177,7 @@ inline typename enable_if_c::canonical_value(b)); } /* -template +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator != (const number& a, const detail::expression& b) { @@ -186,7 +186,7 @@ inline typename enable_if, typename return !eval_eq(a.backend(), t.backend()); } */ -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator != (const Arithmetic& a, const number& b) { @@ -203,7 +203,7 @@ inline typename enable_if_c +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator != (const detail::expression& a, const number& b) { @@ -230,13 +230,13 @@ inline typename enable_if +template inline bool operator < (const number& a, const number& b) { using default_ops::eval_lt; return eval_lt(a.backend(), b.backend()); } -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator < (const number& a, const Arithmetic& b) { @@ -244,7 +244,7 @@ inline typename enable_if_c::canonical_value(b)); } /* -template +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator < (const number& a, const detail::expression& b) { @@ -253,7 +253,7 @@ inline typename enable_if, typename return eval_lt(a.backend(), t.backend()); } */ -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator < (const Arithmetic& a, const number& b) { @@ -270,7 +270,7 @@ inline typename enable_if_c +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator < (const detail::expression& a, const number& b) { @@ -298,13 +298,13 @@ inline typename enable_if +template inline bool operator > (const number& a, const number& b) { using default_ops::eval_gt; return eval_gt(a.backend(), b.backend()); } -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator > (const number& a, const Arithmetic& b) { @@ -312,7 +312,7 @@ inline typename enable_if_c::canonical_value(b)); } /* -template +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator > (const number& a, const detail::expression& b) { @@ -321,7 +321,7 @@ inline typename enable_if, typename return eval_gt(a.backend(), t.backend()); } */ -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator > (const Arithmetic& a, const number& b) { @@ -338,7 +338,7 @@ inline typename enable_if_c +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator > (const detail::expression& a, const number& b) { @@ -366,13 +366,13 @@ inline typename enable_if +template inline bool operator <= (const number& a, const number& b) { using default_ops::eval_gt; return !eval_gt(a.backend(), b.backend()); } -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator <= (const number& a, const Arithmetic& b) { @@ -380,7 +380,7 @@ inline typename enable_if_c::canonical_value(b)); } /* -template +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator <= (const number& a, const detail::expression& b) { @@ -389,7 +389,7 @@ inline typename enable_if, typename return !eval_gt(a.backend(), t.backend()); } */ -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator <= (const Arithmetic& a, const number& b) { @@ -406,7 +406,7 @@ inline typename enable_if_c +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator <= (const detail::expression& a, const number& b) { @@ -434,13 +434,13 @@ inline typename enable_if +template inline bool operator >= (const number& a, const number& b) { using default_ops::eval_lt; return !eval_lt(a.backend(), b.backend()); } -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator >= (const number& a, const Arithmetic& b) { @@ -448,7 +448,7 @@ inline typename enable_if_c::canonical_value(b)); } /* -template +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator >= (const number& a, const detail::expression& b) { @@ -457,7 +457,7 @@ inline typename enable_if, typename return !eval_lt(a.backend(), t.backend()); } */ -template +template inline typename enable_if_c, Arithmetic>::value, bool>::type operator >= (const Arithmetic& a, const number& b) { @@ -474,7 +474,7 @@ inline typename enable_if_c +template inline typename enable_if, typename detail::expression::result_type>, bool>::type operator >= (const detail::expression& a, const number& b) { diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 56834437..6495445b 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -2151,7 +2151,7 @@ namespace std{ // // numeric_limits [partial] specializations for the types declared in this header: // -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -2259,10 +2259,10 @@ private: static const data_initializer initializer; }; -template +template const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -2303,54 +2303,54 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif -template +template class numeric_limits > { typedef boost::multiprecision::number number_type; @@ -2401,54 +2401,54 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; #endif -template +template class numeric_limits > { typedef boost::multiprecision::number number_type; @@ -2500,49 +2500,49 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; #endif diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index f1961bf2..f9579532 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -11,7 +11,7 @@ namespace boost{ namespace multiprecision{ -template +template bool check_small_factors(const number& n) { static const boost::uint32_t small_factors1[] = { @@ -117,7 +117,7 @@ inline bool is_small_prime(unsigned n) return false; } -template +template typename enable_if_c::value == number_kind_integer, bool>::type miller_rabin_test(const number& n, unsigned trials, Engine& gen) { @@ -178,7 +178,7 @@ typename enable_if_c::value == number_kind_integer, boo #endif } -template +template bool miller_rabin_test(const number& x, unsigned trials) { static mt19937 gen; diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 7742c65c..ec3085c7 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1103,7 +1103,7 @@ inline int digits() BOOST_NOEXCEPT return boost::multiprecision::backends::detail::get_default_precision(); } template <> -inline int digits, false> >() BOOST_NOEXCEPT +inline int digits, boost::multiprecision::et_off> >() BOOST_NOEXCEPT { return boost::multiprecision::backends::detail::get_default_precision(); } @@ -1117,7 +1117,7 @@ namespace std{ // // numeric_limits [partial] specializations for the types declared in this header: // -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -1249,60 +1249,60 @@ private: static const data_initializer initializer; }; -template +template const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template +template BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; @@ -1343,49 +1343,49 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index e61372d9..2ec587b7 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -34,7 +34,7 @@ namespace boost{ namespace multiprecision{ #pragma warning(disable:4127 4714) #endif -template +template class number { typedef number self_type; @@ -87,16 +87,16 @@ public: m_backend = canonical_value(v); } */ - template + template BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} - template + template BOOST_FORCEINLINE number(const number& val, typename enable_if_c<(boost::is_convertible::value && !detail::is_restricted_conversion::value)>::type* = 0) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) : m_backend(val.backend()) {} - template + template explicit number(const number& val, typename enable_if_c< (!detail::is_explicitly_convertible::value) >::type* = 0) @@ -106,7 +106,7 @@ public: // detail::generic_interconvert(backend(), val.backend(), number_category(), number_category()); } - template + template explicit BOOST_FORCEINLINE number(const number& val, typename enable_if_c< (detail::is_explicitly_convertible::value && (detail::is_restricted_conversion::value || !boost::is_convertible::value)) @@ -119,7 +119,7 @@ public: using default_ops::assign_components; assign_components(m_backend, canonical_value(v1), canonical_value(v2)); } - template + template BOOST_FORCEINLINE number(const number& v1, const number& v2, typename enable_if >::type* = 0) { using default_ops::assign_components; @@ -547,7 +547,7 @@ private: using default_ops::eval_convert_to; eval_convert_to(result, m_backend); } - template + template void convert_to_imp(number* result)const { result->assign(*this); @@ -1584,7 +1584,7 @@ public: // the non-member operators way easier if they are: // static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& canonical_value(const self_type& v) BOOST_NOEXCEPT { return v.m_backend; } - template + template static BOOST_FORCEINLINE BOOST_CONSTEXPR const B2& canonical_value(const number& v) BOOST_NOEXCEPT { return v.backend(); } template static BOOST_FORCEINLINE BOOST_CONSTEXPR typename disable_if::type, V>, typename detail::canonical::type>::type @@ -1596,7 +1596,7 @@ public: }; -template +template inline std::ostream& operator << (std::ostream& os, const number& r) { std::streamsize d = os.precision(); @@ -1625,7 +1625,7 @@ inline std::ostream& operator << (std::ostream& os, const expression +template inline std::istream& operator >> (std::istream& is, number& r) { std::string s; @@ -1634,7 +1634,7 @@ inline std::istream& operator >> (std::istream& is, number +template BOOST_FORCEINLINE void swap(number& a, number& b) { a.swap(b); @@ -1645,7 +1645,7 @@ BOOST_FORCEINLINE void swap(number& a, number class rational; -template +template inline std::istream& operator >> (std::istream& is, rational >& r) { std::string s1; @@ -1680,37 +1680,37 @@ inline std::istream& operator >> (std::istream& is, rational +template typename enable_if, bool>::type operator == (const rational >& a, const Arithmetic& b) { return a == multiprecision::number(b); } -template +template typename enable_if, bool>::type operator == (const Arithmetic& b, const rational >& a) { return a == multiprecision::number(b); } -template +template typename enable_if, bool>::type operator != (const rational >& a, const Arithmetic& b) { return a != multiprecision::number(b); } -template +template typename enable_if, bool>::type operator != (const Arithmetic& b, const rational >& a) { return a != multiprecision::number(b); } -template +template inline multiprecision::number numerator(const rational >& a) { return a.numerator(); } -template +template inline multiprecision::number denominator(const rational >& a) { return a.denominator(); @@ -1723,7 +1723,7 @@ namespace numeric { namespace ublas { template class sparse_vector_element; -template +template inline bool operator == (const sparse_vector_element& a, const ::boost::multiprecision::number& b) { typedef typename sparse_vector_element::const_reference ref_type; diff --git a/include/boost/multiprecision/random.hpp b/include/boost/multiprecision/random.hpp index d60cfb72..6d0518a6 100644 --- a/include/boost/multiprecision/random.hpp +++ b/include/boost/multiprecision/random.hpp @@ -17,7 +17,7 @@ namespace boost{ namespace random{ namespace detail{ // Need to find a better solution, like make Boost.Random safe to use with // UDT's and depricate/remove this header altogether. // -template +template boost::multiprecision::number generate_uniform_int(Engine& eng, const boost::multiprecision::number& min_value, const boost::multiprecision::number& max_value); @@ -30,7 +30,7 @@ namespace boost{ namespace random{ namespace detail{ -template +template struct subtract, true> { typedef boost::multiprecision::number result_type; @@ -39,7 +39,7 @@ struct subtract, tru } -template +template class independent_bits_engine > { public: @@ -198,7 +198,7 @@ private: Engine _base; }; -template +template class uniform_smallint > { public: @@ -381,7 +381,7 @@ private: namespace detail{ -template +template struct select_uniform_01 > { template @@ -391,7 +391,7 @@ struct select_uniform_01 +template boost::multiprecision::number generate_uniform_int( Engine& eng, const boost::multiprecision::number& min_value, const boost::multiprecision::number& max_value, @@ -557,7 +557,7 @@ boost::multiprecision::number } } -template +template inline boost::multiprecision::number generate_uniform_int(Engine& eng, const boost::multiprecision::number& min_value, const boost::multiprecision::number& max_value) { diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 6dd07d6f..b7a37ed8 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -259,7 +259,7 @@ struct is_explicitly_convertible > : public is_e namespace std{ -template +template class numeric_limits, ExpressionTemplates> > : public std::numeric_limits > { typedef std::numeric_limits > base_type; @@ -280,9 +280,9 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; #endif diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 6aef3e63..a4e2e701 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -629,7 +629,7 @@ typedef number tom_rational; namespace std{ -template +template class numeric_limits > { typedef boost::multiprecision::number number_type; @@ -680,49 +680,49 @@ public: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::digits10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_digits10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_signed; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_integer; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_exact; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::radix; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::min_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent; -template +template BOOST_CONSTEXPR_OR_CONST int numeric_limits >::max_exponent10; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_infinity; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_quiet_NaN; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_signaling_NaN; -template +template BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits >::has_denorm; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::has_denorm_loss; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_iec559; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_bounded; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::is_modulo; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::traps; -template +template BOOST_CONSTEXPR_OR_CONST bool numeric_limits >::tinyness_before; -template +template BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits >::round_style; #endif diff --git a/performance/arithmetic_backend.hpp b/performance/arithmetic_backend.hpp index 3e9028a2..16aef4b1 100644 --- a/performance/arithmetic_backend.hpp +++ b/performance/arithmetic_backend.hpp @@ -522,7 +522,7 @@ inline double real_cast(concepts::real_concept r namespace std{ -template +template class numeric_limits, ExpressionTemplates > > : public std::numeric_limits { typedef std::numeric_limits base_type; diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp index cb4ba42c..593fd5a4 100644 --- a/performance/delaunay_test.cpp +++ b/performance/delaunay_test.cpp @@ -270,14 +270,14 @@ int main() std::cout << "calculating...\n"; do_calc >("int64_t, int64_t"); - do_calc, false>, number, false> > >("arithmetic_backend"); + do_calc, et_off>, number, et_off> > >("arithmetic_backend"); do_calc >("int64_t, int128_t"); do_calc >("int64_t, int128_t"); - do_calc, true> > >("int64_t, int128_t (ET)"); + do_calc, et_on> > >("int64_t, int128_t (ET)"); do_calc >("int64_t, cpp_int"); - do_calc, false> > >("int64_t, cpp_int (no ET's)"); + do_calc, et_off> > >("int64_t, cpp_int (no ET's)"); do_calc > > >("int64_t, cpp_int(128-bit cache)"); - do_calc, false> > >("int64_t, cpp_int (128-bit Cache no ET's)"); + do_calc, et_off> > >("int64_t, cpp_int (128-bit Cache no ET's)"); return 0; } diff --git a/performance/miller_rabin_performance.cpp b/performance/miller_rabin_performance.cpp index fe202391..7dd4d49b 100644 --- a/performance/miller_rabin_performance.cpp +++ b/performance/miller_rabin_performance.cpp @@ -136,7 +136,7 @@ int main() { using namespace boost::multiprecision; #ifdef TEST_CPP_INT - test_miller_rabin, false> >("cpp_int (no Expression templates)"); + test_miller_rabin, et_off> >("cpp_int (no Expression templates)"); test_miller_rabin("cpp_int"); test_miller_rabin > >("cpp_int (128-bit cache)"); test_miller_rabin > >("cpp_int (256-bit cache)"); @@ -145,12 +145,12 @@ int main() test_miller_rabin("int1024_t"); #endif #ifdef TEST_MPZ - test_miller_rabin >("mpz_int (no Expression templates)"); + test_miller_rabin >("mpz_int (no Expression templates)"); test_miller_rabin("mpz_int"); std::cout << "Time for mpz_int (native Miller Rabin Test) = " << test_miller_rabin_gmp() << std::endl; #endif #ifdef TEST_TOMMATH - test_miller_rabin >("tom_int (no Expression templates)"); + test_miller_rabin >("tom_int (no Expression templates)"); test_miller_rabin("tom_int"); #endif mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index d2f95d07..5327e055 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -233,7 +233,7 @@ int main() std::cout << "Allocation Counts for Horner Evaluation:\n"; #ifdef TEST_MPFR basic_allocation_test("mpfr_float_50", mpfr_float_50(2)); - basic_allocation_test("mpfr_float_50 - no expression templates", number, false>(2)); + basic_allocation_test("mpfr_float_50 - no expression templates", number, et_off>(2)); #endif #ifdef TEST_MPFR_CLASS basic_allocation_test("mpfr_class", mpfr_class(2)); @@ -245,7 +245,7 @@ int main() std::cout << "Allocation Counts for boost::math::tools::evaluate_polynomial:\n"; #ifdef TEST_MPFR poly_allocation_test("mpfr_float_50", mpfr_float_50(2)); - poly_allocation_test("mpfr_float_50 - no expression templates", number, false>(2)); + poly_allocation_test("mpfr_float_50 - no expression templates", number, et_off>(2)); #endif #ifdef TEST_MPFR_CLASS poly_allocation_test("mpfr_class", mpfr_class(2)); @@ -261,12 +261,12 @@ int main() time_proc("Bessel Functions - double", test_bessel); time_proc("Bessel Functions - real_concept", test_bessel); time_proc("Bessel Functions - arithmetic_backend", test_bessel > >); - time_proc("Bessel Functions - arithmetic_backend - no expression templates", test_bessel, false> >); + time_proc("Bessel Functions - arithmetic_backend - no expression templates", test_bessel, et_off> >); time_proc("Non-central T - double", test_nct); time_proc("Non-central T - real_concept", test_nct); time_proc("Non-central T - arithmetic_backend", test_nct > >); - time_proc("Non-central T - arithmetic_backend - no expression templates", test_nct, false> >); + time_proc("Non-central T - arithmetic_backend - no expression templates", test_nct, et_off> >); #endif // @@ -288,7 +288,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_bessel, 3); - time_proc("mpf_float_50 (no expression templates", test_bessel, false> >, 3); + time_proc("mpf_float_50 (no expression templates", test_bessel, et_off> >, 3); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_bessel, 3); @@ -314,7 +314,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_bessel); - time_proc("mpf_float_100 (no expression templates", test_bessel, false> >); + time_proc("mpf_float_100 (no expression templates", test_bessel, et_off> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_bessel); @@ -341,7 +341,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_polynomial); - time_proc("mpf_float_50 (no expression templates", test_polynomial, false> >); + time_proc("mpf_float_50 (no expression templates", test_polynomial, et_off> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_polynomial); @@ -367,7 +367,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_polynomial); - time_proc("mpf_float_100 (no expression templates", test_polynomial, false> >); + time_proc("mpf_float_100 (no expression templates", test_polynomial, et_off> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_polynomial); @@ -393,7 +393,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_nct); - time_proc("mpf_float_50 (no expression templates", test_nct, false> >); + time_proc("mpf_float_50 (no expression templates", test_nct, et_off> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_50", test_nct); @@ -419,7 +419,7 @@ int main() #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_nct); - time_proc("mpf_float_100 (no expression templates", test_nct, false> >); + time_proc("mpf_float_100 (no expression templates", test_nct, et_off> >); #endif #ifdef TEST_CPP_DEC_FLOAT time_proc("cpp_dec_float_100", test_nct); diff --git a/test/compile_fail/operator_fail_01.cpp b/test/compile_fail/operator_fail_01.cpp index 03dd4d46..8b13b385 100644 --- a/test/compile_fail/operator_fail_01.cpp +++ b/test/compile_fail/operator_fail_01.cpp @@ -9,8 +9,8 @@ using namespace boost::multiprecision; int main() { - number, true> a(2); - number, false> b(2); + number, et_on> a(2); + number, et_off> b(2); a = a + b; } diff --git a/test/concepts/number_concept_check.cpp b/test/concepts/number_concept_check.cpp index 106fbe5a..ce7d5672 100644 --- a/test/concepts/number_concept_check.cpp +++ b/test/concepts/number_concept_check.cpp @@ -186,7 +186,7 @@ void foo() test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::number, false>()); + test_extra(boost::multiprecision::number, boost::multiprecision::et_off>()); #endif } diff --git a/test/concepts/sf_concept_check_basic.cpp b/test/concepts/sf_concept_check_basic.cpp index 16cecfce..14244129 100644 --- a/test/concepts/sf_concept_check_basic.cpp +++ b/test/concepts/sf_concept_check_basic.cpp @@ -139,7 +139,7 @@ void foo() test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::number, false>()); + test_extra(boost::multiprecision::number, boost::multiprecision::et_off>()); #endif } diff --git a/test/concepts/sf_concept_check_bessel.cpp b/test/concepts/sf_concept_check_bessel.cpp index 0c3c3935..e6670e25 100644 --- a/test/concepts/sf_concept_check_bessel.cpp +++ b/test/concepts/sf_concept_check_bessel.cpp @@ -104,7 +104,7 @@ void foo() test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::number, false>()); + test_extra(boost::multiprecision::number, boost::multiprecision::et_off>()); #endif } diff --git a/test/concepts/sf_concept_check_elliptic.cpp b/test/concepts/sf_concept_check_elliptic.cpp index e55cace4..7365f89e 100644 --- a/test/concepts/sf_concept_check_elliptic.cpp +++ b/test/concepts/sf_concept_check_elliptic.cpp @@ -110,7 +110,7 @@ void foo() test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::number, false>()); + test_extra(boost::multiprecision::number, boost::multiprecision::et_off>()); #endif } diff --git a/test/concepts/sf_concept_check_gamma.cpp b/test/concepts/sf_concept_check_gamma.cpp index 2dcdcaf8..9ab61912 100644 --- a/test/concepts/sf_concept_check_gamma.cpp +++ b/test/concepts/sf_concept_check_gamma.cpp @@ -126,7 +126,7 @@ void foo() test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::number, false>()); + test_extra(boost::multiprecision::number, boost::multiprecision::et_off>()); #endif } diff --git a/test/concepts/sf_concept_check_poly.cpp b/test/concepts/sf_concept_check_poly.cpp index fff337e9..0bc21001 100644 --- a/test/concepts/sf_concept_check_poly.cpp +++ b/test/concepts/sf_concept_check_poly.cpp @@ -101,7 +101,7 @@ void foo() test_extra(boost::multiprecision::cpp_dec_float_50()); #endif #ifdef TEST_CPP_DEC_FLOAT_NO_ET - test_extra(boost::multiprecision::number, false>()); + test_extra(boost::multiprecision::number, boost::multiprecision::et_off>()); #endif } diff --git a/test/include_test/cpp_int_include_test.cpp b/test/include_test/cpp_int_include_test.cpp index 7e665657..a5f33323 100644 --- a/test/include_test/cpp_int_include_test.cpp +++ b/test/include_test/cpp_int_include_test.cpp @@ -8,9 +8,9 @@ using namespace boost::multiprecision; number > a; -number, false> b; -number, false> c; -number, false> d; -number, false> e; +number, et_off> b; +number, et_off> c; +number, et_off> d; +number, et_off> e; diff --git a/test/math/table_type.hpp b/test/math/table_type.hpp index c3b5cee3..a6a526e5 100644 --- a/test/math/table_type.hpp +++ b/test/math/table_type.hpp @@ -27,7 +27,7 @@ inline std::ostream& operator << (std::ostream& os, string_table_entry const & w return os << static_cast(what); } -template +template struct table_type > { typedef string_table_entry type; diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 4a3e83b4..f972d761 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -203,7 +203,7 @@ struct related_type { typedef boost::multiprecision::int256_t type; }; -template +template struct related_type, ET> > { typedef boost::multiprecision::number, ET> type; @@ -1654,7 +1654,7 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT test(); - test, false> >(); + test, boost::multiprecision::et_off> >(); #endif #ifdef TEST_MPFR test(); @@ -1679,13 +1679,13 @@ int main() #endif #ifdef TEST_CPP_INT_2 test(); - test, false> >(); + test, boost::multiprecision::et_off> >(); test > >(); #endif #ifdef TEST_CPP_INT_3 // Again with "trivial" backends: - test, false > >(); - test, false > >(); + test, boost::multiprecision::et_off > >(); + test, boost::multiprecision::et_off > >(); #endif #ifdef TEST_CPP_INT_BR test >(); diff --git a/test/test_constexpr.cpp b/test/test_constexpr.cpp index 66e601b1..8669141b 100644 --- a/test/test_constexpr.cpp +++ b/test/test_constexpr.cpp @@ -31,9 +31,9 @@ void test3() using namespace boost::multiprecision; -template void test1, false> >(); -template void test1, false> >(); -template void test3, false> >(); -template void test2, false> >(); +template void test1, et_off> >(); +template void test1, et_off> >(); +template void test3, et_off> >(); +template void test2, et_off> >(); #endif \ No newline at end of file diff --git a/test/test_cpp_int_conv.cpp b/test/test_cpp_int_conv.cpp index b21d91a5..62b84e55 100644 --- a/test/test_cpp_int_conv.cpp +++ b/test/test_cpp_int_conv.cpp @@ -48,7 +48,7 @@ int main() int128_t i6(i4); BOOST_TEST(i6 == -5677334); - number, false> i7(i3); + number, et_off> i7(i3); BOOST_TEST(i7 == -1234567); int256_t i8(i6); @@ -57,13 +57,13 @@ int main() i7.assign(4.0); BOOST_TEST(i7 == 4); - number, false> i9(-5677334); + number, et_off> i9(-5677334); i7 = i9; BOOST_TEST(i7 == -5677334); - i7 = number, false>(i9); + i7 = number, et_off>(i9); BOOST_TEST(i7 == -5677334); - i9 = static_cast, false> >(i7); + i9 = static_cast, et_off> >(i7); BOOST_TEST(i9 == -5677334); ++i9; diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index d2973446..591e550d 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -214,21 +214,21 @@ struct max_digits10_proxy static const unsigned value = std::numeric_limits::digits10 + 5; }; #ifdef TEST_CPP_DEC_FLOAT -template +template struct max_digits10_proxy, ET> > { static const unsigned value = std::numeric_limits, ET> >::max_digits10; }; #endif #ifdef TEST_MPF_50 -template +template struct max_digits10_proxy, ET> > { static const unsigned value = std::numeric_limits, ET> >::max_digits10; }; #endif #ifdef TEST_MPFR_50 -template +template struct max_digits10_proxy, ET> > { static const unsigned value = std::numeric_limits, ET> >::max_digits10; diff --git a/test/ublas_interop/test1.hpp b/test/ublas_interop/test1.hpp index db44c15f..b732c66e 100644 --- a/test/ublas_interop/test1.hpp +++ b/test/ublas_interop/test1.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::number, false> mp_test_type; +typedef boost::multiprecision::number, boost::multiprecision::et_off> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test2.hpp b/test/ublas_interop/test2.hpp index 8dfc0a61..232b7e2c 100644 --- a/test/ublas_interop/test2.hpp +++ b/test/ublas_interop/test2.hpp @@ -18,7 +18,7 @@ #include -typedef boost::multiprecision::number, false> mp_test_type; +typedef boost::multiprecision::number, boost::multiprecision::et_off> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test3.hpp b/test/ublas_interop/test3.hpp index e884d80c..97becba0 100644 --- a/test/ublas_interop/test3.hpp +++ b/test/ublas_interop/test3.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::number, false> mp_test_type; +typedef boost::multiprecision::number, boost::multiprecision::et_off> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test4.hpp b/test/ublas_interop/test4.hpp index 6001e9c4..c5ed3eba 100644 --- a/test/ublas_interop/test4.hpp +++ b/test/ublas_interop/test4.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::number, false> mp_test_type; +typedef boost::multiprecision::number, boost::multiprecision::et_off> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test5.hpp b/test/ublas_interop/test5.hpp index 639cecaf..dc345198 100644 --- a/test/ublas_interop/test5.hpp +++ b/test/ublas_interop/test5.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::number, false> mp_test_type; +typedef boost::multiprecision::number, boost::multiprecision::et_off> mp_test_type; //typedef double mp_test_type; #define USE_RANGE diff --git a/test/ublas_interop/test7.hpp b/test/ublas_interop/test7.hpp index 40546991..ad990859 100644 --- a/test/ublas_interop/test7.hpp +++ b/test/ublas_interop/test7.hpp @@ -19,7 +19,7 @@ #include -typedef boost::multiprecision::number, false> mp_test_type; +typedef boost::multiprecision::number, boost::multiprecision::et_off> mp_test_type; //typedef double mp_test_type; #define USE_RANGE From a2c8fc060fcd45828b3f08bd4a93dab5b05ea56c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 6 Sep 2012 09:52:28 +0000 Subject: [PATCH 234/256] Rebuild docs. [SVN r80419] --- .../boost_multiprecision/indexes/s01.html | 4 ++-- .../boost_multiprecision/indexes/s02.html | 4 ++-- .../boost_multiprecision/indexes/s03.html | 4 ++-- .../boost_multiprecision/indexes/s04.html | 4 ++-- doc/html/boost_multiprecision/intro.html | 8 +++---- .../boost_multiprecision/ref/cpp_int_ref.html | 16 ++++++------- doc/html/boost_multiprecision/ref/number.html | 24 +++++++++---------- .../tut/ints/cpp_int.html | 16 ++++++------- .../boost_multiprecision/tut/primetest.html | 4 ++-- doc/html/index.html | 2 +- 10 files changed, 43 insertions(+), 43 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 6657ceb9..ad20bd40 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 3e4124d3..d1ad0b8d 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 2cfc4d61..1f790e8f 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index d02da93c..21e9dbb6 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 8022566f..699be148 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -82,7 +82,7 @@ namespace mp = boost::multiprecision; // Reduce the typing a bit later... -typedef mp::number<mp::mpfr_float_backend<300>, false> my_float; +typedef mp::number<mp::mpfr_float_backend<300>, et_off> my_float; my_float a, b, c; // These variables have 300 decimal digits precision @@ -115,8 +115,8 @@

    Mixed arithmetic will fail if the conversion is either ambiguous or explicit:

    -
    number<cpp_int_backend<>, false> a(2);
    -number<cpp_int_backend<>, true>  b(3);
    +
    number<cpp_int_backend<>, et_off> a(2);
    +number<cpp_int_backend<>, et_on>  b(3);
     
     b = a * b; // Error, implicit conversion could go either way.
     b = a * 3.14; // Error, no operator overload if the conversion would be explicit.
    @@ -135,7 +135,7 @@
           move aware and have overloads that look something like:
         

    template <class B>
    -number<B, false> operator + (number&& a, const number& b)
    +number<B, et_off> operator + (number&& a, const number& b)
     {
         return std::move(a += b);
     }
    diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html
    index acc1b8c9..0b84e4e9 100644
    --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html
    +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html
    @@ -27,16 +27,16 @@
     typedef number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
     
     // Fixed precision unsigned types:
    -typedef number<cpp_int_backend<128, false, void>, false>   uint128_t;
    -typedef number<cpp_int_backend<256, false, void>, false>   uint256_t;
    -typedef number<cpp_int_backend<512, false, void>, false>   uint512_t;
    -typedef number<cpp_int_backend<1024, false, void>, false>  uint1024_t;
    +typedef number<cpp_int_backend<128, false, void>, et_off>   uint128_t;
    +typedef number<cpp_int_backend<256, false, void>, et_off>   uint256_t;
    +typedef number<cpp_int_backend<512, false, void>, et_off>   uint512_t;
    +typedef number<cpp_int_backend<1024, false, void>, et_off>  uint1024_t;
     
     // Fixed precision signed types:
    -typedef number<cpp_int_backend<128, true, void>, false>    int128_t;
    -typedef number<cpp_int_backend<256, true, void>, false>    int256_t;
    -typedef number<cpp_int_backend<512, true, void>, false>    int512_t;
    -typedef number<cpp_int_backend<1024, true, void>, false>   int1024_t;
    +typedef number<cpp_int_backend<128, true, void>, et_off>    int128_t;
    +typedef number<cpp_int_backend<256, true, void>, et_off>    int256_t;
    +typedef number<cpp_int_backend<512, true, void>, et_off>    int512_t;
    +typedef number<cpp_int_backend<1024, true, void>, et_off>   int1024_t;
     
     }} // namespaces
     
    diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index 3c10b8c3..3969151d 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -23,7 +23,7 @@
    namespace boost{ namespace multiprecision{
     
    -template <class Backend, bool ExpressionTemplates = true>
    +template <class Backend, expression_template_option ExpressionTemplates = true>
     class number
     {
        number();
    @@ -100,14 +100,14 @@
     bool operator>=(const see-below&, const see-below&);
     
     // Swap:
    -template <class Backend, bool ExpressionTemplates>
    +template <class Backend, expression_template_option ExpressionTemplates>
     void swap(number<Backend, ExpressionTemplates>& a, number<Backend, ExpressionTemplates>& b);
     
     // iostream support:
    -template <class Backend, bool ExpressionTemplates>
    +template <class Backend, expression_template_option ExpressionTemplates>
     std::ostream& operator << (std::ostream& os, const number<Backend, ExpressionTemplates>& r);
     std::ostream& operator << (std::ostream& os, const unmentionable-expression-template-type& r);
    -template <class Backend, bool ExpressionTemplates>
    +template <class Backend, expression_template_option ExpressionTemplates>
     std::istream& operator >> (std::istream& is, number<Backend, ExpressionTemplates>& r);
     
     // Non-member function standard library support:
    @@ -156,7 +156,7 @@
     // Integer specific functions:
     unmentionable-expression-template-type    pow(const number-or-expression-template-type&, unsigned);
     unmentionable-expression-template-type    powm(const number-or-expression-template-type& b, const number-or-expression-template-type& p, const number-or-expression-template-type& m);
    -template <class Backend, bool ExpressionTemplates>
    +template <class Backend, expression_template_option ExpressionTemplates>
     void divide_qr(const number-or-expression-template-type& x, const number-or-expression-template-type& y,
                    number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r);
     template <class Integer>
    @@ -194,7 +194,7 @@
     // numeric_limits support:
     namespace std{
     
    -template <class Backend, bool ExpressionTemplates>
    +template <class Backend, expression_template_option ExpressionTemplates>
     struct numeric_limits<boost::multiprecision<Backend, ExpressionTemplates> >
     {
        /* Usual members here */
    @@ -206,7 +206,7 @@
     
             Description
           
    -
    template <class Backend, bool ExpressionTemplates = true>
    +
    template <class Backend, expression_template_option ExpressionTemplates = true>
     class number;
     

    @@ -496,7 +496,7 @@

  • Type number<Backend, - false> + et_off> when ExpressionTemplates is false.
  • @@ -526,11 +526,11 @@ Iostream Support -
    template <class Backend, bool ExpressionTemplates>
    +
    template <class Backend, expression_template_option ExpressionTemplates>
     std::ostream& operator << (std::ostream& os, const number<Backend, ExpressionTemplates>& r);
     template <class Unspecified...>
     std::ostream& operator << (std::ostream& os, const unmentionable-expression-template& r);
    -template <class Backend, bool ExpressionTemplates>
    +template <class Backend, expression_template_option ExpressionTemplates>
     inline std::istream& operator >> (std::istream& is, number<Backend, ExpressionTemplates>& r)
     

    @@ -582,7 +582,7 @@

    These functions all behave exactly as their standard library counterparts do: their argument is either an instance of number - or an expression template derived from it; If the argument is of type number<Backend, false> + or an expression template derived from it; If the argument is of type number<Backend, et_off> then that is also the return type, otherwise the return type is an expression template.

    @@ -660,7 +660,7 @@

    Returns bp mod m as an expression template.

    -
    template <class Backend, bool ExpressionTemplates>
    +
    template <class Backend, expression_template_option ExpressionTemplates>
     bool divide_qr(const number-or-expression-template-type& x, const number-or-expression-template-type& y,
                    number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r);
     
    diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html index c1be7123..988e9909 100644 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -32,16 +32,16 @@ typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: -typedef number<cpp_int_backend<128, false, void>, false> uint128_t; -typedef number<cpp_int_backend<256, false, void>, false> uint256_t; -typedef number<cpp_int_backend<512, false, void>, false> uint512_t; -typedef number<cpp_int_backend<1024, false, void>, false> uint1024_t; +typedef number<cpp_int_backend<128, false, void>, et_off> uint128_t; +typedef number<cpp_int_backend<256, false, void>, et_off> uint256_t; +typedef number<cpp_int_backend<512, false, void>, et_off> uint512_t; +typedef number<cpp_int_backend<1024, false, void>, et_off> uint1024_t; // Fixed precision signed types: -typedef number<cpp_int_backend<128, true, void>, false> int128_t; -typedef number<cpp_int_backend<256, true, void>, false> int256_t; -typedef number<cpp_int_backend<512, true, void>, false> int512_t; -typedef number<cpp_int_backend<1024, true, void>, false> int1024_t; +typedef number<cpp_int_backend<128, true, void>, et_off> int128_t; +typedef number<cpp_int_backend<256, true, void>, et_off> int256_t; +typedef number<cpp_int_backend<512, true, void>, et_off> int512_t; +typedef number<cpp_int_backend<1024, true, void>, et_off> int1024_t; }} // namespaces
    diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html index baf4517d..49006337 100644 --- a/doc/html/boost_multiprecision/tut/primetest.html +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -22,10 +22,10 @@

    #include <boost/multiprecision/miller_rabin.hpp>
     
    -template <class Backend, bool ExpressionTemplates, class Engine>
    +template <class Backend, expression_template_option ExpressionTemplates, class Engine>
     bool miller_rabin_test(const number<Backend, ExpressionTemplates>& n, unsigned trials, Engine& gen);
     
    -template <class Backend, bool ExpressionTemplates, class Engine>
    +template <class Backend, expression_template_option ExpressionTemplates, class Engine>
     bool miller_rabin_test(const number<Backend, ExpressionTemplates>& n, unsigned trials);
     

    diff --git a/doc/html/index.html b/doc/html/index.html index d7ce9ef1..57fb5f19 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -120,7 +120,7 @@

    - +

    Last revised: September 04, 2012 at 17:13:56 GMT

    Last revised: September 06, 2012 at 09:51:26 GMT


    From fc1cda1f6247b9253f63cc57877bfcde4d2e8984 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 7 Sep 2012 08:31:49 +0000 Subject: [PATCH 235/256] Largely cosmetic change - add two new template params to cpp_dec_float - one for the exponent type, and one for an optional allocator. [SVN r80431] --- .../boost_multiprecision/indexes/s01.html | 14 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 9 +- doc/html/boost_multiprecision/map/hist.html | 7 + doc/html/boost_multiprecision/map/todo.html | 12 +- doc/html/boost_multiprecision/ref/number.html | 313 +++++++- doc/html/boost_multiprecision/tut.html | 4 +- doc/html/boost_multiprecision/tut/floats.html | 74 +- .../tut/floats/cpp_dec_float.html | 46 +- .../tut/floats/fp_eg.html | 6 +- .../tut/floats/gmp_float.html | 6 +- .../tut/floats/mpfr_float.html | 6 +- .../boost_multiprecision/tut/rational.html | 72 +- .../tut/rational/cpp_rational.html | 8 +- .../tut/rational/gmp_rational.html | 8 +- .../tut/rational/tommath_rational.html | 6 +- doc/html/index.html | 6 +- doc/multiprecision.qbk | 246 ++++--- .../boost/multiprecision/cpp_dec_float.hpp | 686 +++++++++--------- test/math/log1p_expm1_test.cpp | 2 +- test/math/powm1_sqrtp1m1_test.cpp | 2 +- test/math/table_type.hpp | 2 +- test/math/test_bessel_i.cpp | 2 +- test/math/test_bessel_j.cpp | 2 +- test/math/test_bessel_k.cpp | 2 +- test/math/test_bessel_y.cpp | 2 +- test/math/test_beta.cpp | 2 +- test/math/test_binomial_coeff.cpp | 2 +- test/math/test_carlson.cpp | 2 +- test/math/test_cbrt.cpp | 2 +- test/math/test_digamma.cpp | 2 +- test/math/test_ellint_1.cpp | 2 +- test/math/test_ellint_2.cpp | 2 +- test/math/test_ellint_3.cpp | 2 +- test/math/test_erf.cpp | 2 +- test/math/test_expint.cpp | 2 +- test/math/test_gamma.cpp | 2 +- test/math/test_hermite.cpp | 2 +- test/math/test_ibeta.cpp | 2 +- test/math/test_ibeta_2.cpp | 2 +- test/math/test_ibeta_3.cpp | 2 +- test/math/test_ibeta_4.cpp | 2 +- test/math/test_ibeta_inv_1.cpp | 2 +- test/math/test_ibeta_inv_ab_4.cpp | 2 +- test/math/test_igamma.cpp | 2 +- test/math/test_igamma_inv.cpp | 2 +- test/math/test_igamma_inva.cpp | 2 +- test/math/test_laguerre.cpp | 2 +- test/math/test_legendre.cpp | 2 +- test/math/test_tgamma_ratio.cpp | 2 +- test/math/test_zeta.cpp | 2 +- test/test_acos.cpp | 8 +- test/test_arithmetic.cpp | 3 +- test/test_asin.cpp | 8 +- test/test_atan.cpp | 8 +- test/test_cos.cpp | 9 +- test/test_cosh.cpp | 8 +- test/test_exp.cpp | 9 +- test/test_log.cpp | 9 +- test/test_pow.cpp | 8 +- test/test_round.cpp | 8 +- test/test_sin.cpp | 9 +- test/test_sinh.cpp | 8 +- test/test_sqrt.cpp | 8 +- test/test_tanh.cpp | 8 +- 66 files changed, 1076 insertions(+), 636 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index ad20bd40..f8c6e580 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    @@ -55,10 +55,16 @@
    C
    -
    • +
      +
    • +
    • +

      cpp_dec_float

      + +
    • +
    D
    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index d1ad0b8d..d8dacbad 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 1f790e8f..42e8cba8 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 21e9dbb6..0deb96a1 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

  • @@ -817,6 +818,10 @@
    • +

      TODO

      + +
    • +
    • tommath_int

    • diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index 157d4400..f7102bd0 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -37,6 +37,13 @@
    • Removed "mp_" prefix from types.
    • +
    • + Allowed mixed precision arithmetic. +
    • +
    • + Changed ExpressionTemplates parameter to class number + to use enumerated values rather than true/false. +
    diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index d2ec17ec..e7fd11c7 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -54,7 +54,7 @@
  • Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. Open question - what should - be the default - int32_t or int64_t? + be the default - int32_t or int64_t? (done 2012/09/06)
  • Document the size requirements of fixed precision ints. @@ -76,19 +76,21 @@ - min == -max etc.
  • - Document cpp_dec_float precision, rounding, and exponent size. + Document cpp_dec_float precision, rounding, and exponent size (done 2012/09/06).
  • - Can we be clearer in the docs that mixed arithmetic doesn't work? + Can we be clearer in the docs that mixed arithmetic doesn't work (no + longer applicable as of 2012/09/06)?
  • - Document round functions behaviour better (they behave as in C99). + Document round functions behaviour better (they behave as in C++11) (added + note 2012/09/06).
  • Should there be a choice of rounding mode (probably MPFR specific)?
  • - Document limits on size of cpp_dec_float. + Document limits on size of cpp_dec_float (done 2012/09/06).
  • diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index 3969151d..b1f6dc2e 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -580,7 +580,7 @@ unmentionable-expression-template-type atan2 (const number-or-expression-template-type&, const number-or-expression-template-type&);

    - These functions all behave exactly as their standard library counterparts + These functions all behave exactly as their standard library C++11 counterparts do: their argument is either an instance of number or an expression template derived from it; If the argument is of type number<Backend, et_off> then that is also the return type, otherwise the return type is an expression @@ -601,6 +601,317 @@ library later, then these functions may be extended to support those number types).

    +

    + The precision of these functions is generally deterimined by the backend + implementation. For example the precision of these functions when used with + mpfr_float + is determined entirely by MPFR. + When these functions use our own implementations, the accuracy of the transcendal + functions is generally a few epsilon. Note however, that the trigonmetrical + functions incur the usual accuracy loss when reducing arguments by large + multiples of π. Also note that both __mpf_float and cpp_dec_float + have a number of guard digits beyond their stated precision, so the error + rates listed for these are in some sense artificially low. +

    +

    + The following table shows the error rates we observe for these functions + with various backend types, functions not listed here are exact (tested on + Win32 with VC++10, MPFR-3.0.0, MPIR-2.1.1): +

    +
    ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Function +

    +
    +

    + mpfr_float_50 +

    +
    +

    + mpf_float_50 +

    +
    +

    + cpp_dec_float_50 +

    +
    +

    + sqrt +

    +
    +

    + 1eps +

    +
    +

    + 0eps +

    +
    +

    + 0eps +

    +
    +

    + exp +

    +
    +

    + 1eps +

    +
    +

    + 0eps +

    +
    +

    + 0eps +

    +
    +

    + log +

    +
    +

    + 1eps +

    +
    +

    + 0eps +

    +
    +

    + 0eps +

    +
    +

    + log10 +

    +
    +

    + 1eps +

    +
    +

    + 0eps +

    +
    +

    + 0eps +

    +
    +

    + cos +

    +
    +

    + 700eps +

    +
    +

    + 0eps +

    +
    +

    + 0eps +

    +
    +

    + sin +

    +
    +

    + 1eps +

    +
    +

    + 0eps +

    +
    +

    + 0eps +

    +
    +

    + tan +

    +
    + + +
    +

    + acos +

    +
    + + +
    +

    + asin +

    +
    + + +
    +

    + atan +

    +
    + + +
    +

    + cosh +

    +
    + + +
    +

    + sinh +

    +
    + + +
    +

    + tanh +

    +
    + + +
    +

    + pow +

    +
    + + +
    +

    + fmod +

    +
    + + +
    +

    + atan2 +

    +
    + + +
    Traits Class diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index 1ed672ca..5ae44082 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -31,9 +31,9 @@
    Floating Point Numbers
    +
    cpp_dec_float
    gmp_float
    mpfr_float
    -
    cpp_dec_float
    Examples
    Area of @@ -50,8 +50,8 @@
    Rational Number Types
    -
    gmp_rational
    cpp_rational
    +
    gmp_rational
    tommath_rational
    Use With Boost.Rational
    rational_adapter
    diff --git a/doc/html/boost_multiprecision/tut/floats.html b/doc/html/boost_multiprecision/tut/floats.html index 171fa60d..bb8f542f 100644 --- a/doc/html/boost_multiprecision/tut/floats.html +++ b/doc/html/boost_multiprecision/tut/floats.html @@ -7,20 +7,20 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext
  • +

    + cpp_dec_float<N> +

    +
    +

    + boost/multiprecision/cpp_dec_float.hpp +

    +
    +

    + 10 +

    +
    +

    + None +

    +
    +

    + Header only, all C++ implementation. Boost licence. +

    +
    +

    + Approximately 2x slower than the MPFR + or GMP libraries. +

    +

    mpf_float<N> @@ -147,39 +180,6 @@

    -

    - cpp_dec_float<N> -

    -
    -

    - boost/multiprecision/cpp_dec_float.hpp -

    -
    -

    - 10 -

    -
    -

    - None -

    -
    -

    - Header only, all C++ implementation. Boost licence. -

    -
    -

    - Approximately 2x slower than the MPFR - or GMP libraries. -

    -
    @@ -193,7 +193,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html index e0a56312..5ceefb43 100644 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -6,12 +6,12 @@ - - + +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -22,7 +22,7 @@

    namespace boost{ namespace multiprecision{
     
    -template <unsigned Digits10>
    +template <unsigned Digits10, class ExponentType = boost::int32_t, class Allocator = void>
     class cpp_dec_float;
     
     typedef number<cpp_dec_float<50> > cpp_dec_float_50;
    @@ -42,7 +42,27 @@
               be used at fixed precision by specifying a non-zero Digits10
               template parameter. The typedefs cpp_dec_float_50
               and cpp_dec_float_100 provide
    -          arithmetic types at 50 and 100 decimal digits precision respectively.
    +          arithmetic types at 50 and 100 decimal digits precision respectively. Optionally,
    +          you can specify an integer type to use for the exponent, this defaults
    +          to a 32-bit integer type which is more than large enough for the vast majority
    +          of use cases, but larger types such as long
    +          long can also be specified if you
    +          need a truely huge exponent range.
    +        

    +

    + Normally cpp_dec_float + allocates no memory: all of the space required for it's digits are allocated + directly within the class. As a result care should be taken not to use + the class with too high a digit count as stack space requirements can grow + out of control. If that represents a problem then providing an allocator + as the final template parameter causes cpp_dec_float + to dynamically allocate the memory it needs: this significantly reduces + the size of cpp_dec_float + and increases the viable upper limit on the number of digits at the expense + of performance. However, please bare in mind that arithmetic operations + rapidly become very expensive as the digit count grows: + the current implementation really isn't optimized or designed for large + digit counts.

    There is full standard library and numeric_limits @@ -83,13 +103,25 @@ Any number instantiated on this type, is convertible to any other number instantiated on this type - for example you can convert from number<cpp_dec_float<50> > to number<cpp_dec_float<SomeOtherValue> >. - Narrowing conversions are truncating. + Narrowing conversions are truncating and explicit.

  • Conversion from a string results in a std::runtime_error being thrown if the string can not be interpreted as a valid floating point number.
  • +
  • + The actual precision of a cpp_dec_float + is always slightly higher than the number of digits specified in the + template parameter, actually how much higher is an implementation detail + but is always at least 8 decimal digits. +
  • +
  • + Operations involving cpp_dec_float + are always truncating. However, note that since their are guard digits + in effect, in practice this has no real impact on accuracy for most + use cases. +
  • @@ -131,7 +163,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/floats/fp_eg.html b/doc/html/boost_multiprecision/tut/floats/fp_eg.html index 238d5aff..a2567273 100644 --- a/doc/html/boost_multiprecision/tut/floats/fp_eg.html +++ b/doc/html/boost_multiprecision/tut/floats/fp_eg.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -40,7 +40,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/floats/gmp_float.html b/doc/html/boost_multiprecision/tut/floats/gmp_float.html index d420e0c4..a33583e7 100644 --- a/doc/html/boost_multiprecision/tut/floats/gmp_float.html +++ b/doc/html/boost_multiprecision/tut/floats/gmp_float.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -177,7 +177,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html index 53692329..40126cf1 100644 --- a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -7,11 +7,11 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -166,7 +166,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/rational.html b/doc/html/boost_multiprecision/tut/rational.html index 9dcaf83e..712c33d3 100644 --- a/doc/html/boost_multiprecision/tut/rational.html +++ b/doc/html/boost_multiprecision/tut/rational.html @@ -7,19 +7,19 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext
    -
    gmp_rational
    cpp_rational
    +
    gmp_rational
    tommath_rational
    Use With Boost.Rational
    rational_adapter
    @@ -70,6 +70,38 @@ + +

    + cpp_rational +

    + + +

    + boost/multiprecision/cpp_int.hpp +

    + + +

    + 2 +

    + + +

    + None +

    + + +

    + An all C++ Boost-licensed implementation. +

    + + +

    + Slower than GMP. +

    + + +

    gmp_rational @@ -103,38 +135,6 @@ - -

    - cpp_rational -

    - - -

    - boost/multiprecision/cpp_int.hpp -

    - - -

    - 2 -

    - - -

    - None -

    - - -

    - An all C++ Boost-licensed implementation. -

    - - -

    - Slower than GMP. -

    - - -

    tommath_rational @@ -246,7 +246,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html index 445989b1..22bf2a4c 100644 --- a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html @@ -6,12 +6,12 @@ - - + +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -107,7 +107,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html index 2d1f7fb8..a317321b 100644 --- a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html @@ -6,12 +6,12 @@ - - + +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -138,7 +138,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html index 432d1012..4ce58b60 100644 --- a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -113,7 +113,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/index.html b/doc/html/index.html index 57fb5f19..2d72038a 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -46,9 +46,9 @@

    Floating Point Numbers
    +
    cpp_dec_float
    gmp_float
    mpfr_float
    -
    cpp_dec_float
    Examples
    Area of @@ -65,8 +65,8 @@
    Rational Number Types
    -
    gmp_rational
    cpp_rational
    +
    gmp_rational
    tommath_rational
    Use With Boost.Rational
    rational_adapter
    @@ -120,7 +120,7 @@
    - +

    Last revised: September 06, 2012 at 09:51:26 GMT

    Last revised: September 07, 2012 at 08:25:28 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 1446586a..e765f0e9 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -47,6 +47,16 @@ '''] +[def __cpp_int [link boost_multiprecision.tut.ints.cpp_int cpp_int]] +[def __gmp_int [link boost_multiprecision.tut.ints.gmp_int gmp_int]] +[def __tom_int [link boost_multiprecision.tut.ints.tom_int tom_int]] +[def __gmp_float [link boost_multiprecision.tut.floats.gmp_float gmp_float]] +[def __mpfr_float_backend [link boost_multiprecision.tut.floats.mpfr_float mpfr_float]] +[def __cpp_dec_float [link boost_multiprecision.tut.floats.cpp_dec_float cpp_dec_float]] +[def __gmp_rational [link boost_multiprecision.tut.rational.gmp_rational gmp_rational]] +[def __cpp_rational [link boost_multiprecision.tut.rational.cpp_rational cpp_rational]] +[def __tommath_rational [link boost_multiprecision.tut.rational.tommath_rational tommath_rational]] + [section:intro Introduction] The Multiprecision Library provides ['User-defined] integer, rational and floating-point C++ types which @@ -504,11 +514,73 @@ The following back-ends provide floating point arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] +[[`cpp_dec_float`][boost/multiprecision/cpp_dec_float.hpp][10][None][Header only, all C++ implementation. Boost licence.][Approximately 2x slower than the [mpfr] or [gmp] libraries.]] [[`mpf_float`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]] [[`mpfr_float`][boost/multiprecision/mpfr.hpp][2][[gmp] and [mpfr]][Very fast and efficient back-end, with its own standard library implementation.][Dependency on GNU licensed [gmp] and [mpfr] libraries.]] -[[`cpp_dec_float`][boost/multiprecision/cpp_dec_float.hpp][10][None][Header only, all C++ implementation. Boost licence.][Approximately 2x slower than the [mpfr] or [gmp] libraries.]] ] +[section:cpp_dec_float cpp_dec_float] + +`#include ` + + namespace boost{ namespace multiprecision{ + + template + class cpp_dec_float; + + typedef number > cpp_dec_float_50; + typedef number > cpp_dec_float_100; + + }} // namespaces + +The `cpp_dec_float` back-end is used in conjunction with `number`: It acts as an entirely C++ (header only and dependency free) +real-number type that is a drop-in replacement for the native C++ floating-point types, but with +much greater precision. + +Type `cpp_dec_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. +The typedefs `cpp_dec_float_50` and `cpp_dec_float_100` provide arithmetic types at 50 and 100 decimal digits precision +respectively. Optionally, you can specify an integer type to use for the exponent, this defaults to a 32-bit integer type +which is more than large enough for the vast majority of use cases, but larger types such as `long long` can also be specified +if you need a truely huge exponent range. + +Normally `cpp_dec_float` allocates no memory: all of the space required for it's digits are allocated +directly within the class. As a result care should be taken not to use the class with too high a digit count +as stack space requirements can grow out of control. If that represents a problem then providing an allocator +as the final template parameter causes `cpp_dec_float` to dynamically allocate the memory it needs: this +significantly reduces the size of `cpp_dec_float` and increases the viable upper limit on the number of digits +at the expense of performance. However, please bare in mind that arithmetic operations rapidly become ['very] expensive +as the digit count grows: the current implementation really isn't optimized or designed for large digit counts. + +There is full standard library and `numeric_limits` support available for this type. + +Things you should know when using this type: + +* Default constructed `cpp_dec_float`s have a value of zero. +* The radix of this type is 10. As a result it can behave subtly differently from base-2 types. +* It is not possible to round-trip this type to and from a string and get back to exactly the same value +(this is a result of the type having some hidden internal guard digits). +* The type has a number of internal guard digits over and above those specified in the template argument. +Normally these should not be visible to the user. +* The type supports both infinities and NaN's. An infinity is generated whenever the result would overflow, +and a NaN is generated for any mathematically undefined operation. +* There is a `std::numeric_limits` specialisation for this type. +* Any `number` instantiated on this type, is convertible to any other `number` instantiated on this type - +for example you can convert from `number >` to `number >`. +Narrowing conversions are truncating and `explicit`. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted +as a valid floating point number. +* The actual precision of a `cpp_dec_float` is always slightly higher than the number of digits specified in +the template parameter, actually how much higher is an implementation detail but is always at least 8 decimal +digits. +* Operations involving `cpp_dec_float` are always truncating. However, note that since their are guard digits +in effect, in practice this has no real impact on accuracy for most use cases. + +[h5 cpp_dec_float example:] + +[cpp_dec_float_eg] + +[endsect] + [section:gmp_float gmp_float] `#include ` @@ -627,53 +699,6 @@ as a valid floating point number. [endsect] -[section:cpp_dec_float cpp_dec_float] - -`#include ` - - namespace boost{ namespace multiprecision{ - - template - class cpp_dec_float; - - typedef number > cpp_dec_float_50; - typedef number > cpp_dec_float_100; - - }} // namespaces - -The `cpp_dec_float` back-end is used in conjunction with `number`: It acts as an entirely C++ (header only and dependency free) -real-number type that is a drop-in replacement for the native C++ floating-point types, but with -much greater precision. - -Type `cpp_dec_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. -The typedefs `cpp_dec_float_50` and `cpp_dec_float_100` provide arithmetic types at 50 and 100 decimal digits precision -respectively. - -There is full standard library and `numeric_limits` support available for this type. - -Things you should know when using this type: - -* Default constructed `cpp_dec_float`s have a value of zero. -* The radix of this type is 10. As a result it can behave subtly differently from base-2 types. -* It is not possible to round-trip this type to and from a string and get back to exactly the same value -(this is a result of the type having some hidden internal guard digits). -* The type has a number of internal guard digits over and above those specified in the template argument. -Normally these should not be visible to the user. -* The type supports both infinities and NaN's. An infinity is generated whenever the result would overflow, -and a NaN is generated for any mathematically undefined operation. -* There is a `std::numeric_limits` specialisation for this type. -* Any `number` instantiated on this type, is convertible to any other `number` instantiated on this type - -for example you can convert from `number >` to `number >`. -Narrowing conversions are truncating. -* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted -as a valid floating point number. - -[h5 cpp_dec_float example:] - -[cpp_dec_float_eg] - -[endsect] - [section:fp_eg Examples] [import ../example/floating_point_examples.cpp] @@ -723,13 +748,53 @@ The following back-ends provide rational number arithmetic: [table [[Backend Type][Header][Radix][Dependencies][Pros][Cons]] -[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]] [[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licensed implementation.][Slower than [gmp].]] +[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]] [[`tommath_rational`][boost/multiprecision/tommath.hpp][2][[tommath]][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]] [[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any integer back-end type to be used as a rational type.][Requires an underlying integer back-end type.]] [[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `number` integer type.][The expression templates used by `number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]] ] +[section:cpp_rational cpp_rational] + +`#include ` + + namespace boost{ namespace multiprecision{ + + typedef rational_adapter > cpp_rational_backend; + + typedef number cpp_rational; + + }} // namespaces + +The `cpp_rational_backend` type is used via the typedef `boost::multiprecision::cpp_rational`. It provides +a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. + +As well as the usual conversions from arithmetic and string types, instances of `cpp_rational` are copy constructible +and assignable from type `cpp_int`. + +There is also a two argument constructor that accepts a numerator and denominator: both of type `cpp_int`. + +There are also non-member functions: + + cpp_int numerator(const cpp_rational&); + cpp_int denominator(const cpp_rational&); + +which return the numerator and denominator of the number. + +Things you should know when using this type: + +* Default constructed `cpp_rational`s have the value zero. +* Division by zero results in a `std::rumtime_error` being thrown. +* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be +interpreted as a valid rational number. + +[h5 Example:] + +[cpp_rational_eg] + +[endsect] + [section:gmp_rational gmp_rational] `#include ` @@ -778,46 +843,6 @@ interpreted as a valid rational number. [endsect] -[section:cpp_rational cpp_rational] - -`#include ` - - namespace boost{ namespace multiprecision{ - - typedef rational_adapter > cpp_rational_backend; - - typedef number cpp_rational; - - }} // namespaces - -The `cpp_rational_backend` type is used via the typedef `boost::multiprecision::cpp_rational`. It provides -a rational number type that is a drop-in replacement for the native C++ number types, but with unlimited precision. - -As well as the usual conversions from arithmetic and string types, instances of `cpp_rational` are copy constructible -and assignable from type `cpp_int`. - -There is also a two argument constructor that accepts a numerator and denominator: both of type `cpp_int`. - -There are also non-member functions: - - cpp_int numerator(const cpp_rational&); - cpp_int denominator(const cpp_rational&); - -which return the numerator and denominator of the number. - -Things you should know when using this type: - -* Default constructed `cpp_rational`s have the value zero. -* Division by zero results in a `std::rumtime_error` being thrown. -* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be -interpreted as a valid rational number. - -[h5 Example:] - -[cpp_rational_eg] - -[endsect] - [section:tommath_rational tommath_rational] `#include ` @@ -1494,7 +1519,7 @@ this library support all of the iostream formatting flags, field width and preci ``['unmentionable-expression-template-type]`` fmod (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); ``['unmentionable-expression-template-type]`` atan2 (const ``['number-or-expression-template-type]``&, const ``['number-or-expression-template-type]``&); -These functions all behave exactly as their standard library counterparts do: their argument is either an instance of `number` or +These functions all behave exactly as their standard library C++11 counterparts do: their argument is either an instance of `number` or an expression template derived from it; If the argument is of type `number` then that is also the return type, otherwise the return type is an expression template. @@ -1506,6 +1531,35 @@ used at variable precision. Also note that with the exception of `abs` that these functions can only be used with floating-point Backend types (if any other types such as fixed precision or complex types are added to the library later, then these functions may be extended to support those number types). +The precision of these functions is generally deterimined by the backend implementation. For example the precision +of these functions when used with __mpfr_float_backend is determined entirely by [mpfr]. When these functions use our own +implementations, the accuracy of the transcendal functions is generally a few epsilon. Note however, that the trigonmetrical +functions incur the usual accuracy loss when reducing arguments by large multiples of [pi]. Also note that both __mpf_float +and __cpp_dec_float have a number of guard digits beyond their stated precision, so the error rates listed for these +are in some sense artificially low. + +The following table shows the error rates we observe for these functions with various backend types, functions not listed +here are exact (tested on Win32 with VC++10, MPFR-3.0.0, MPIR-2.1.1): + +[table +[[Function][mpfr_float_50][mpf_float_50][cpp_dec_float_50]] +[[sqrt][1eps][0eps][0eps]] +[[exp][1eps][0eps][0eps]] +[[log][1eps][0eps][0eps]] +[[log10][1eps][0eps][0eps]] +[[cos][700eps][0eps][0eps]] +[[sin][1eps][0eps][0eps]] +[[tan][][][]] +[[acos][][][]] +[[asin][][][]] +[[atan][][][]] +[[cosh][][][]] +[[sinh][][][]] +[[tanh][][][]] +[[pow][][][]] +[[fmod][][][]] +[[atan2][][][]] +] [h4 Traits Class Support] template @@ -2602,6 +2656,8 @@ Windows Vista machine. * Many functions made made `constexp`? * Differentiate between explicit and implicit conversions in the number constructor. * Removed "mp_" prefix from types. +* Allowed mixed precision arithmetic. +* Changed ExpressionTemplates parameter to class `number` to use enumerated values rather than true/false. [h4 Pre-review history] @@ -2632,18 +2688,18 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. -Open question - what should be the default - int32_t or int64_t? +Open question - what should be the default - int32_t or int64_t? (done 2012/09/06) * Document the size requirements of fixed precision ints. * Document std lib function accuracy. * Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits template argument that defaults to 0 (meaning keep going till no more space/memory). * Add support for fused multiply add (and subtract). GMP mpz_t could use this. * Be a bit clearer on the effects of sign-magnitude representation of cpp_int - min == -max etc. -* Document cpp_dec_float precision, rounding, and exponent size. -* Can we be clearer in the docs that mixed arithmetic doesn't work? -* Document round functions behaviour better (they behave as in C99). +* Document cpp_dec_float precision, rounding, and exponent size (done 2012/09/06). +* Can we be clearer in the docs that mixed arithmetic doesn't work (no longer applicable as of 2012/09/06)? +* Document round functions behaviour better (they behave as in C++11) (added note 2012/09/06). * Should there be a choice of rounding mode (probably MPFR specific)? -* Document limits on size of cpp_dec_float. +* Document limits on size of cpp_dec_float (done 2012/09/06). [endsect] diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 1a7241a5..73f85bff 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -26,17 +26,28 @@ namespace boost{ namespace multiprecision{ namespace backends{ -template +template class cpp_dec_float; } // namespace -template -struct number_category > : public mpl::int_{}; +template +struct number_category > : public mpl::int_{}; namespace backends{ -template +namespace detail{ + +template +struct dynamic_array : public std::vector +{ + dynamic_array() + : std::vector(static_cast::size_type>(S), static_cast(0)) {} +}; + +} + +template class cpp_dec_float { private: @@ -46,18 +57,18 @@ public: typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list float_types; - typedef long long exponent_type; + typedef ExponentType exponent_type; static const boost::int32_t cpp_dec_float_radix = 10L; static const boost::int32_t cpp_dec_float_digits10_limit_lo = 9L; static const boost::int32_t cpp_dec_float_digits10_limit_hi = boost::integer_traits::const_max - 100; static const boost::int32_t cpp_dec_float_digits10 = ((cpp_dec_float_digits10_setting < cpp_dec_float_digits10_limit_lo) ? cpp_dec_float_digits10_limit_lo : ((cpp_dec_float_digits10_setting > cpp_dec_float_digits10_limit_hi) ? cpp_dec_float_digits10_limit_hi : cpp_dec_float_digits10_setting)); - static const boost::int64_t cpp_dec_float_max_exp10 = static_cast( 2776234983093287512LL); - static const boost::int64_t cpp_dec_float_min_exp10 = static_cast(-2776234983093287512LL); - static const boost::int64_t cpp_dec_float_max_exp = static_cast((cpp_dec_float_max_exp10 / 301LL) * 1000LL); - static const boost::int64_t cpp_dec_float_min_exp = static_cast((cpp_dec_float_min_exp10 / 301LL) * 1000LL); + static const ExponentType cpp_dec_float_max_exp10 = (static_cast(1) << (std::numeric_limits::digits - 5)); + static const ExponentType cpp_dec_float_min_exp10 = -cpp_dec_float_max_exp10; + static const ExponentType cpp_dec_float_max_exp = static_cast((cpp_dec_float_max_exp10 / 301LL) * 1000LL); + static const ExponentType cpp_dec_float_min_exp = static_cast((cpp_dec_float_min_exp10 / 301LL) * 1000LL); - BOOST_STATIC_ASSERT(cpp_dec_float_max_exp10 == -cpp_dec_float_min_exp10); + BOOST_STATIC_ASSERT((cpp_dec_float::cpp_dec_float_max_exp10 == -cpp_dec_float::cpp_dec_float_min_exp10)); private: static const boost::int32_t cpp_dec_float_elem_digits10 = 8L; @@ -89,10 +100,13 @@ private: } fpclass_type; - typedef boost::array array_type; + typedef typename mpl::if_, + boost::array, + detail::dynamic_array + >::type array_type; array_type data; - boost::int64_t exp; + ExponentType exp; bool neg; fpclass_type fpclass; boost::int32_t prec_elem; @@ -102,7 +116,7 @@ private: // cpp_dec_float(fpclass_type c) BOOST_NOEXCEPT : data(), - exp (static_cast(0)), + exp (static_cast(0)), neg (false), fpclass (c), prec_elem(cpp_dec_float_elem_number) { } @@ -114,23 +128,23 @@ private: { initializer() { - cpp_dec_float::nan(); - cpp_dec_float::inf(); - (cpp_dec_float::min)(); - (cpp_dec_float::max)(); - cpp_dec_float::zero(); - cpp_dec_float::one(); - cpp_dec_float::two(); - cpp_dec_float::half(); - cpp_dec_float::double_min(); - cpp_dec_float::double_max(); - cpp_dec_float::long_double_max(); - cpp_dec_float::long_double_min(); - cpp_dec_float::long_long_max(); - cpp_dec_float::long_long_min(); - cpp_dec_float::ulong_long_max(); - cpp_dec_float::eps(); - cpp_dec_float::pow2(0); + cpp_dec_float::nan(); + cpp_dec_float::inf(); + (cpp_dec_float::min)(); + (cpp_dec_float::max)(); + cpp_dec_float::zero(); + cpp_dec_float::one(); + cpp_dec_float::two(); + cpp_dec_float::half(); + cpp_dec_float::double_min(); + cpp_dec_float::double_max(); + cpp_dec_float::long_double_max(); + cpp_dec_float::long_double_min(); + cpp_dec_float::long_long_max(); + cpp_dec_float::long_long_min(); + cpp_dec_float::ulong_long_max(); + cpp_dec_float::eps(); + cpp_dec_float::pow2(0); } void do_nothing(){} }; @@ -141,14 +155,14 @@ public: // Constructors cpp_dec_float() BOOST_NOEXCEPT : data(), - exp (static_cast(0)), + exp (static_cast(0)), neg (false), fpclass (cpp_dec_float_finite), prec_elem(cpp_dec_float_elem_number) { } cpp_dec_float(const char* s) : data(), - exp (static_cast(0)), + exp (static_cast(0)), neg (false), fpclass (cpp_dec_float_finite), prec_elem(cpp_dec_float_elem_number) @@ -159,7 +173,7 @@ public: template cpp_dec_float(I i, typename enable_if >::type* = 0) BOOST_NOEXCEPT : data(), - exp (static_cast(0)), + exp (static_cast(0)), neg (false), fpclass (cpp_dec_float_finite), prec_elem(cpp_dec_float_elem_number) @@ -170,7 +184,7 @@ public: template cpp_dec_float(I i, typename enable_if >::type* = 0) BOOST_NOEXCEPT : data(), - exp (static_cast(0)), + exp (static_cast(0)), neg (false), fpclass (cpp_dec_float_finite), prec_elem(cpp_dec_float_elem_number) @@ -191,8 +205,8 @@ public: fpclass (f.fpclass), prec_elem(f.prec_elem) { } - template - cpp_dec_float(const cpp_dec_float& f, typename enable_if_c::type* = 0) BOOST_NOEXCEPT : + template + cpp_dec_float(const cpp_dec_float& f, typename enable_if_c::type* = 0) BOOST_NOEXCEPT : data(), exp (f.exp), neg (f.neg), @@ -201,8 +215,8 @@ public: { std::copy(f.data.begin(), f.data.begin() + f.prec_elem, data.begin()); } - template - explicit cpp_dec_float(const cpp_dec_float& f, typename disable_if_c::type* = 0) BOOST_NOEXCEPT : + template + explicit cpp_dec_float(const cpp_dec_float& f, typename disable_if_c::type* = 0) BOOST_NOEXCEPT : data(), exp (f.exp), neg (f.neg), @@ -216,7 +230,7 @@ public: template cpp_dec_float(const F val, typename enable_if >::type* = 0) BOOST_NOEXCEPT : data(), - exp (static_cast(0)), + exp (static_cast(0)), neg (false), fpclass (cpp_dec_float_finite), prec_elem(cpp_dec_float_elem_number) @@ -224,7 +238,7 @@ public: *this = val; } - cpp_dec_float(const double val, long long exponent) BOOST_NOEXCEPT; + cpp_dec_float(const double val, ExponentType exponent) BOOST_NOEXCEPT; // Specific special values. static const cpp_dec_float& nan() BOOST_NOEXCEPT @@ -440,7 +454,7 @@ public: template int compare(const V& v)const BOOST_NOEXCEPT { - cpp_dec_float t; + cpp_dec_float t; t = v; return compare(t); } @@ -458,7 +472,7 @@ public: long double extract_long_double (void) const BOOST_NOEXCEPT; signed long long extract_signed_long_long (void) const BOOST_NOEXCEPT; unsigned long long extract_unsigned_long_long(void) const BOOST_NOEXCEPT; - void extract_parts (double& mantissa, boost::int64_t& exponent) const BOOST_NOEXCEPT; + void extract_parts (double& mantissa, ExponentType& exponent) const BOOST_NOEXCEPT; cpp_dec_float extract_integer_part (void) const BOOST_NOEXCEPT; void precision(const boost::int32_t prec_digits) BOOST_NOEXCEPT { @@ -475,13 +489,13 @@ public: } } static cpp_dec_float pow2(long long i) BOOST_NOEXCEPT; - long long order()const BOOST_NOEXCEPT + ExponentType order()const BOOST_NOEXCEPT { const bool bo_order_is_zero = ((!isfinite()) || (data[0] == static_cast(0u))); // // Binary search to find the order of the leading term: // - boost::uint32_t prefix = 0; + ExponentType prefix = 0; if(data[0] >= 100000UL) { @@ -523,7 +537,7 @@ public: } } - return (bo_order_is_zero ? static_cast(0) : static_cast(exp + prefix)); + return (bo_order_is_zero ? static_cast(0) : static_cast(exp + prefix)); } private: @@ -542,44 +556,44 @@ private: bool rd_string(const char* const s); - template + template friend class cpp_dec_float; }; -template -typename cpp_dec_float::initializer cpp_dec_float::init; +template +typename cpp_dec_float::initializer cpp_dec_float::init; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_radix; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_setting; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit_lo; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit_hi; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_digits10; -template -const boost::int64_t cpp_dec_float::cpp_dec_float_max_exp; -template -const boost::int64_t cpp_dec_float::cpp_dec_float_min_exp; -template -const boost::int64_t cpp_dec_float::cpp_dec_float_max_exp10; -template -const boost::int64_t cpp_dec_float::cpp_dec_float_min_exp10; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_elem_digits10; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_elem_number_request; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_elem_number; -template -const boost::int32_t cpp_dec_float::cpp_dec_float_elem_mask; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_radix; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_setting; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit_lo; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10_limit_hi; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_digits10; +template +const ExponentType cpp_dec_float::cpp_dec_float_max_exp; +template +const ExponentType cpp_dec_float::cpp_dec_float_min_exp; +template +const ExponentType cpp_dec_float::cpp_dec_float_max_exp10; +template +const ExponentType cpp_dec_float::cpp_dec_float_min_exp10; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_digits10; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_number_request; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_number; +template +const boost::int32_t cpp_dec_float::cpp_dec_float_elem_mask; -template -cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float& v) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float& v) BOOST_NOEXCEPT { if(isnan()) { @@ -601,9 +615,9 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float } // Get the offset for the add/sub operation. - static const boost::int64_t max_delta_exp = static_cast((cpp_dec_float_elem_number - 1) * cpp_dec_float_elem_digits10); + static const ExponentType max_delta_exp = static_cast((cpp_dec_float_elem_number - 1) * cpp_dec_float_elem_digits10); - const boost::int64_t ofs_exp = static_cast(exp - v.exp); + const ExponentType ofs_exp = static_cast(exp - v.exp); // Check if the operation is out of range, requiring special handling. if(v.iszero() || (ofs_exp > max_delta_exp)) @@ -666,7 +680,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float { std::copy_backward(data.begin(), data.end() - static_cast(1u), data.end()); data[0] = carry; - exp += static_cast(cpp_dec_float_elem_digits10); + exp += static_cast(cpp_dec_float_elem_digits10); } } else @@ -748,7 +762,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float // This result of the subtraction is exactly zero. // Reset the sign and the exponent. neg = false; - exp = static_cast(0); + exp = static_cast(0); } else { @@ -758,7 +772,7 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float std::copy(data.begin() + static_cast(sj), data.end(), data.begin()); std::fill(data.end() - sj, data.end(), static_cast(0u)); - exp -= static_cast(sj * static_cast(cpp_dec_float_elem_digits10)); + exp -= static_cast(sj * static_cast(cpp_dec_float_elem_digits10)); } } } @@ -798,8 +812,8 @@ cpp_dec_float& cpp_dec_float::operator+=(const cpp_dec_float return *this; } -template -cpp_dec_float& cpp_dec_float::operator-=(const cpp_dec_float& v) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::operator-=(const cpp_dec_float& v) BOOST_NOEXCEPT { // Use *this - v = -(-*this + v). negate(); @@ -808,8 +822,8 @@ cpp_dec_float& cpp_dec_float::operator-=(const cpp_dec_float return *this; } -template -cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float& v) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float& v) BOOST_NOEXCEPT { // Evaluate the sign of the result. const bool b_result_is_neg = (neg != v.neg); @@ -846,17 +860,17 @@ cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float } // Check for overflow or underflow. - const bool u_exp_is_neg = (exp < static_cast(0)); - const bool v_exp_is_neg = (v.exp < static_cast(0)); + const bool u_exp_is_neg = (exp < static_cast(0)); + const bool v_exp_is_neg = (v.exp < static_cast(0)); if(u_exp_is_neg == v_exp_is_neg) { // Get the unsigned base-10 exponents of *this and v and... - const boost::int64_t u_exp = ((!u_exp_is_neg) ? exp : static_cast( -exp)); - const boost::int64_t v_exp = ((!v_exp_is_neg) ? v.exp : static_cast(-v.exp)); + const ExponentType u_exp = ((!u_exp_is_neg) ? exp : static_cast( -exp)); + const ExponentType v_exp = ((!v_exp_is_neg) ? v.exp : static_cast(-v.exp)); // Check the range of the upcoming multiplication. - const bool b_result_is_out_of_range = (v_exp >= static_cast(cpp_dec_float_max_exp10 - u_exp)); + const bool b_result_is_out_of_range = (v_exp >= static_cast(cpp_dec_float_max_exp10 - u_exp)); if(b_result_is_out_of_range) { @@ -901,8 +915,8 @@ cpp_dec_float& cpp_dec_float::operator*=(const cpp_dec_float return *this; } -template -cpp_dec_float& cpp_dec_float::operator/=(const cpp_dec_float& v) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::operator/=(const cpp_dec_float& v) BOOST_NOEXCEPT { const bool u_and_v_are_finite_and_identical = ( isfinite() && (fpclass == v.fpclass) @@ -936,8 +950,8 @@ cpp_dec_float& cpp_dec_float::operator/=(const cpp_dec_float } } -template -cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT { // Multiply *this with a constant unsigned long long. @@ -991,7 +1005,7 @@ cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const u // Handle the carry and adjust the exponent. if(carry != static_cast(0u)) { - exp += static_cast(cpp_dec_float_elem_digits10); + exp += static_cast(cpp_dec_float_elem_digits10); // Shift the result of the multiplication one element to the right. std::copy_backward(data.begin(), @@ -1031,8 +1045,8 @@ cpp_dec_float& cpp_dec_float::mul_unsigned_long_long(const u return *this; } -template -cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const unsigned long long n) BOOST_NOEXCEPT { // Divide *this by a constant unsigned long long. @@ -1097,7 +1111,7 @@ cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const u if(data[0] == static_cast(0u)) { // Adjust the exponent - exp -= static_cast(cpp_dec_float_elem_digits10); + exp -= static_cast(cpp_dec_float_elem_digits10); // Shift result of the division one element to the left. std::copy(data.begin() + static_cast(1u), @@ -1120,8 +1134,8 @@ cpp_dec_float& cpp_dec_float::div_unsigned_long_long(const u return *this; } -template -cpp_dec_float& cpp_dec_float::calculate_inv() BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::calculate_inv() BOOST_NOEXCEPT { // Compute the inverse of *this. const bool b_neg = neg; @@ -1155,17 +1169,17 @@ cpp_dec_float& cpp_dec_float::calculate_inv() BOOST_NOEXCEPT } // Save the original *this. - cpp_dec_float x(*this); + cpp_dec_float x(*this); // Generate the initial estimate using division. // Extract the mantissa and exponent for a "manual" // computation of the estimate. double dd; - boost::int64_t ne; + ExponentType ne; x.extract_parts(dd, ne); // Do the inverse estimate using double precision estimates of mantissa and exponent. - operator=(cpp_dec_float(1.0 / dd, -ne)); + operator=(cpp_dec_float(1.0 / dd, -ne)); // Compute the inverse of *this. Quadratically convergent Newton-Raphson iteration // is used. During the iterative steps, the precision of the calculation is limited @@ -1194,8 +1208,8 @@ cpp_dec_float& cpp_dec_float::calculate_inv() BOOST_NOEXCEPT return *this; } -template -cpp_dec_float& cpp_dec_float::calculate_sqrt(void) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::calculate_sqrt(void) BOOST_NOEXCEPT { // Compute the square root of *this. @@ -1211,17 +1225,17 @@ cpp_dec_float& cpp_dec_float::calculate_sqrt(void) BOOST_NOE } // Save the original *this. - cpp_dec_float x(*this); + cpp_dec_float x(*this); // Generate the initial estimate using division. // Extract the mantissa and exponent for a "manual" // computation of the estimate. double dd; - boost::int64_t ne; + ExponentType ne; extract_parts(dd, ne); // Force the exponent to be an even multiple of two. - if((ne % static_cast(2)) != static_cast(0)) + if((ne % static_cast(2)) != static_cast(0)) { ++ne; dd /= 10.0; @@ -1231,10 +1245,10 @@ cpp_dec_float& cpp_dec_float::calculate_sqrt(void) BOOST_NOE // Estimate the square root using simple manipulations. const double sqd = std::sqrt(dd); - *this = cpp_dec_float(sqd, static_cast(ne / static_cast(2))); + *this = cpp_dec_float(sqd, static_cast(ne / static_cast(2))); // Estimate 1.0 / (2.0 * x0) using simple manipulations. - cpp_dec_float vi(0.5 / sqd, static_cast(-ne / static_cast(2))); + cpp_dec_float vi(0.5 / sqd, static_cast(-ne / static_cast(2))); // Compute the square root of x. Coupled Newton iteration // as described in "Pi Unleashed" is used. During the @@ -1277,8 +1291,8 @@ cpp_dec_float& cpp_dec_float::calculate_sqrt(void) BOOST_NOE return *this; } -template -int cpp_dec_float::cmp_data(const array_type& vd) const BOOST_NOEXCEPT +template +int cpp_dec_float::cmp_data(const array_type& vd) const BOOST_NOEXCEPT { // Compare the data of *this with those of v. // Return +1 for *this > v @@ -1299,8 +1313,8 @@ int cpp_dec_float::cmp_data(const array_type& vd) const BOOST_NOEXCEPT } } -template -int cpp_dec_float::compare(const cpp_dec_float& v) const BOOST_NOEXCEPT +template +int cpp_dec_float::compare(const cpp_dec_float& v) const BOOST_NOEXCEPT { // Compare v with *this. // Return +1 for *this > v @@ -1377,8 +1391,8 @@ int cpp_dec_float::compare(const cpp_dec_float& v) const BOOST_NOEXCEP } } -template -bool cpp_dec_float::isone() const BOOST_NOEXCEPT +template +bool cpp_dec_float::isone() const BOOST_NOEXCEPT { // Check if the value of *this is identically 1 or very close to 1. @@ -1386,12 +1400,12 @@ bool cpp_dec_float::isone() const BOOST_NOEXCEPT if(not_negative_and_is_finite) { - if((data[0u] == static_cast(1u)) && (exp == static_cast(0))) + if((data[0u] == static_cast(1u)) && (exp == static_cast(0))) { const typename array_type::const_iterator it_non_zero = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate); return (it_non_zero == data.end()); } - else if((data[0u] == static_cast(cpp_dec_float_elem_mask - 1)) && (exp == static_cast(-cpp_dec_float_elem_digits10))) + else if((data[0u] == static_cast(cpp_dec_float_elem_mask - 1)) && (exp == static_cast(-cpp_dec_float_elem_digits10))) { const typename array_type::const_iterator it_non_nine = std::find_if(data.begin(), data.end(), data_elem_is_non_nine_predicate); return (it_non_nine == data.end()); @@ -1401,14 +1415,14 @@ bool cpp_dec_float::isone() const BOOST_NOEXCEPT return false; } -template -bool cpp_dec_float::isint() const BOOST_NOEXCEPT +template +bool cpp_dec_float::isint() const BOOST_NOEXCEPT { if(fpclass != cpp_dec_float_finite) { return false; } if(iszero()) { return true; } - if(exp < static_cast(0)) { return false; } // |*this| < 1. + if(exp < static_cast(0)) { return false; } // |*this| < 1. const typename array_type::size_type offset_decimal_part = static_cast(exp / cpp_dec_float_elem_digits10) + 1u; @@ -1424,10 +1438,10 @@ bool cpp_dec_float::isint() const BOOST_NOEXCEPT return (it_non_zero == data.end()); } -template -void cpp_dec_float::extract_parts(double& mantissa, boost::int64_t& exponent) const BOOST_NOEXCEPT +template +void cpp_dec_float::extract_parts(double& mantissa, ExponentType& exponent) const BOOST_NOEXCEPT { - // Extract the approximate parts mantissa and base-10 exponent from the input cpp_dec_float value x. + // Extract the approximate parts mantissa and base-10 exponent from the input cpp_dec_float value x. // Extracts the mantissa and exponent. exponent = exp; @@ -1457,12 +1471,12 @@ void cpp_dec_float::extract_parts(double& mantissa, boost::int64_t& ex if(neg) { mantissa = -mantissa; } } -template -double cpp_dec_float::extract_double(void) const BOOST_NOEXCEPT +template +double cpp_dec_float::extract_double(void) const BOOST_NOEXCEPT { - // Returns the double conversion of a cpp_dec_float. + // Returns the double conversion of a cpp_dec_float. - // Check for non-normal cpp_dec_float. + // Check for non-normal cpp_dec_float. if(!isfinite()) { if(isnan()) @@ -1476,17 +1490,17 @@ double cpp_dec_float::extract_double(void) const BOOST_NOEXCEPT } } - cpp_dec_float xx(*this); + cpp_dec_float xx(*this); if(xx.isneg()) xx.negate(); - // Check if *this cpp_dec_float is zero. + // Check if *this cpp_dec_float is zero. if(iszero() || (xx.compare(double_min()) < 0)) { return 0.0; } - // Check if *this cpp_dec_float exceeds the maximum of double. + // Check if *this cpp_dec_float exceeds the maximum of double. if(xx.compare(double_max()) > 0) { return ((!neg) ? std::numeric_limits::infinity() @@ -1503,12 +1517,12 @@ double cpp_dec_float::extract_double(void) const BOOST_NOEXCEPT return d; } -template -long double cpp_dec_float::extract_long_double(void) const BOOST_NOEXCEPT +template +long double cpp_dec_float::extract_long_double(void) const BOOST_NOEXCEPT { - // Returns the long double conversion of a cpp_dec_float. + // Returns the long double conversion of a cpp_dec_float. - // Check if *this cpp_dec_float is subnormal. + // Check if *this cpp_dec_float is subnormal. if(!isfinite()) { if(isnan()) @@ -1522,17 +1536,17 @@ long double cpp_dec_float::extract_long_double(void) const BOOST_NOEXC } } - cpp_dec_float xx(*this); + cpp_dec_float xx(*this); if(xx.isneg()) xx.negate(); - // Check if *this cpp_dec_float is zero. + // Check if *this cpp_dec_float is zero. if(iszero() || (xx.compare(long_double_min()) < 0)) { return static_cast(0.0); } - // Check if *this cpp_dec_float exceeds the maximum of double. + // Check if *this cpp_dec_float exceeds the maximum of double. if(xx.compare(long_double_max()) > 0) { return ((!neg) ? std::numeric_limits::infinity() @@ -1549,14 +1563,14 @@ long double cpp_dec_float::extract_long_double(void) const BOOST_NOEXC return ld; } -template -signed long long cpp_dec_float::extract_signed_long_long(void) const BOOST_NOEXCEPT +template +signed long long cpp_dec_float::extract_signed_long_long(void) const BOOST_NOEXCEPT { // Extracts a signed long long from *this. // If (x > maximum of signed long long) or (x < minimum of signed long long), // then the maximum or minimum of signed long long is returned accordingly. - if(exp < static_cast(0)) + if(exp < static_cast(0)) { return static_cast(0); } @@ -1576,7 +1590,7 @@ signed long long cpp_dec_float::extract_signed_long_long(void) const B else { // Extract the data into an unsigned long long value. - cpp_dec_float xn(extract_integer_part()); + cpp_dec_float xn(extract_integer_part()); if(xn.isneg()) xn.negate(); @@ -1594,8 +1608,8 @@ signed long long cpp_dec_float::extract_signed_long_long(void) const B return ((!b_neg) ? static_cast(val) : static_cast(-static_cast(val))); } -template -unsigned long long cpp_dec_float::extract_unsigned_long_long(void) const BOOST_NOEXCEPT +template +unsigned long long cpp_dec_float::extract_unsigned_long_long(void) const BOOST_NOEXCEPT { // Extracts an unsigned long long from *this. // If x exceeds the maximum of unsigned long long, @@ -1608,12 +1622,12 @@ unsigned long long cpp_dec_float::extract_unsigned_long_long(void) con return static_cast(extract_signed_long_long()); } - if(exp < static_cast(0)) + if(exp < static_cast(0)) { return static_cast(0u); } - const cpp_dec_float xn(extract_integer_part()); + const cpp_dec_float xn(extract_integer_part()); unsigned long long val; @@ -1638,8 +1652,8 @@ unsigned long long cpp_dec_float::extract_unsigned_long_long(void) con return val; } -template -cpp_dec_float cpp_dec_float::extract_integer_part(void) const BOOST_NOEXCEPT +template +cpp_dec_float cpp_dec_float::extract_integer_part(void) const BOOST_NOEXCEPT { // Compute the signed integer part of x. @@ -1648,7 +1662,7 @@ cpp_dec_float cpp_dec_float::extract_integer_part(void) cons return *this; } - if(exp < static_cast(0)) + if(exp < static_cast(0)) { // The absolute value of the number is smaller than 1. // Thus the integer part is zero. @@ -1662,7 +1676,7 @@ cpp_dec_float cpp_dec_float::extract_integer_part(void) cons } // Make a local copy. - cpp_dec_float x = *this; + cpp_dec_float x = *this; // Clear out the decimal portion const size_t first_clear = (static_cast(x.exp) / static_cast(cpp_dec_float_elem_digits10)) + 1u; @@ -1673,8 +1687,8 @@ cpp_dec_float cpp_dec_float::extract_integer_part(void) cons return x; } -template -std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std::ios_base::fmtflags f) const +template +std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std::ios_base::fmtflags f) const { if(this->isinf()) { @@ -1692,7 +1706,7 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: std::string str; boost::intmax_t org_digits(number_of_digits); - boost::int64_t my_exp = order(); + ExponentType my_exp = order(); if(number_of_digits == 0) number_of_digits = cpp_dec_float_total_digits10; if(f & std::ios_base::fixed) @@ -1701,14 +1715,14 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: } else if(f & std::ios_base::scientific) ++number_of_digits; - // Determine the number of elements needed to provide the requested digits from cpp_dec_float. + // Determine the number of elements needed to provide the requested digits from cpp_dec_float. const std::size_t number_of_elements = (std::min)(static_cast((number_of_digits / static_cast(cpp_dec_float_elem_digits10)) + 2u), static_cast(cpp_dec_float_elem_number)); - // Extract the remaining digits from cpp_dec_float after the decimal point. + // Extract the remaining digits from cpp_dec_float after the decimal point. str = boost::lexical_cast(data[0]); - // Extract all of the digits from cpp_dec_float, beginning with the first data element. + // Extract all of the digits from cpp_dec_float, beginning with the first data element. for(std::size_t i = static_cast(1u); i < number_of_elements; i++) { std::stringstream ss; @@ -1826,8 +1840,8 @@ std::string cpp_dec_float::str(boost::intmax_t number_of_digits, std:: return str; } -template -bool cpp_dec_float::rd_string(const char* const s) +template +bool cpp_dec_float::rd_string(const char* const s) { try{ @@ -1837,7 +1851,7 @@ bool cpp_dec_float::rd_string(const char* const s) // the code complexity (and perhaps the run-time) of rd_string(). // Get a possible exponent and remove it. - exp = static_cast(0); + exp = static_cast(0); std::size_t pos; @@ -1846,7 +1860,7 @@ bool cpp_dec_float::rd_string(const char* const s) ) { // Remove the exponent part from the string. - exp = boost::lexical_cast(static_cast(str.c_str() + (pos + 1u))); + exp = boost::lexical_cast(static_cast(str.c_str() + (pos + 1u))); str = str.substr(static_cast(0u), pos); } @@ -1903,7 +1917,7 @@ bool cpp_dec_float::rd_string(const char* const s) } } - // Put the input string into the standard cpp_dec_float input form + // Put the input string into the standard cpp_dec_float input form // aaa.bbbbE+/-n, where aaa has 1...cpp_dec_float_elem_digits10, bbbb has an // even multiple of cpp_dec_float_elem_digits10 which are possibly zero padded // on the right-end, and n is a signed 64-bit integer which is an @@ -1948,7 +1962,7 @@ bool cpp_dec_float::rd_string(const char* const s) // Bring one single digit into the mantissa and adjust the exponent accordingly. str.erase(str.begin(), it_non_zero); str.insert(static_cast(1u), "."); - exp -= static_cast(delta_exp + 1u); + exp -= static_cast(delta_exp + 1u); } } else @@ -1959,11 +1973,11 @@ bool cpp_dec_float::rd_string(const char* const s) // Shift the decimal point such that the exponent is an even multiple of cpp_dec_float_elem_digits10. std::size_t n_shift = static_cast(0u); - const std::size_t n_exp_rem = static_cast(exp % static_cast(cpp_dec_float_elem_digits10)); + const std::size_t n_exp_rem = static_cast(exp % static_cast(cpp_dec_float_elem_digits10)); - if((exp % static_cast(cpp_dec_float_elem_digits10)) != static_cast(0)) + if((exp % static_cast(cpp_dec_float_elem_digits10)) != static_cast(0)) { - n_shift = ((exp < static_cast(0)) + n_shift = ((exp < static_cast(0)) ? static_cast(n_exp_rem + static_cast(cpp_dec_float_elem_digits10)) : static_cast(n_exp_rem)); } @@ -1987,7 +2001,7 @@ bool cpp_dec_float::rd_string(const char* const s) str.erase(pos, static_cast(1u)); - exp -= static_cast(n_shift); + exp -= static_cast(n_shift); } // Cut the size of the mantissa to <= cpp_dec_float_elem_digits10. @@ -2004,7 +2018,7 @@ bool cpp_dec_float::rd_string(const char* const s) str.erase(pos_plus_one, static_cast(1u)); - exp += static_cast(static_cast(n) * static_cast(cpp_dec_float_elem_digits10)); + exp += static_cast(static_cast(n) * static_cast(cpp_dec_float_elem_digits10)); } // Pad the decimal part such that its value is an even @@ -2031,7 +2045,7 @@ bool cpp_dec_float::rd_string(const char* const s) static_cast(pos_plus_one + max_dec)); } - // Now the input string has the standard cpp_dec_float input form. + // Now the input string has the standard cpp_dec_float input form. // (See the comment above.) // Set all the data elements to 0. @@ -2070,9 +2084,9 @@ bool cpp_dec_float::rd_string(const char* const s) if(exp == cpp_dec_float_min_exp10) { // Check for identity with the minimum value. - cpp_dec_float test = *this; + cpp_dec_float test = *this; - test.exp = static_cast(0); + test.exp = static_cast(0); if(test.isone()) { @@ -2098,15 +2112,15 @@ bool cpp_dec_float::rd_string(const char* const s) return true; } -template -cpp_dec_float::cpp_dec_float(const double mantissa, const long long exponent) BOOST_NOEXCEPT +template +cpp_dec_float::cpp_dec_float(const double mantissa, const ExponentType exponent) BOOST_NOEXCEPT : data (), - exp (static_cast(0)), + exp (static_cast(0)), neg (false), fpclass (cpp_dec_float_finite), prec_elem(cpp_dec_float_elem_number) { - // Create *this cpp_dec_float from a given mantissa and exponent. + // Create *this cpp_dec_float from a given mantissa and exponent. // Note: This constructor does not maintain the full precision of double. const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits::min)() * (1.0 + std::numeric_limits::epsilon()))); @@ -2120,7 +2134,7 @@ cpp_dec_float::cpp_dec_float(const double mantissa, const long long ex const bool b_neg = (mantissa < 0.0); double d = ((!b_neg) ? mantissa : -mantissa); - boost::int64_t e = exponent; + ExponentType e = exponent; while(d > 10.0) { d /= 10.0; ++e; } while(d < 1.0) { d *= 10.0; --e; } @@ -2150,8 +2164,8 @@ cpp_dec_float::cpp_dec_float(const double mantissa, const long long ex } } -template -cpp_dec_float& cpp_dec_float::operator = (long double a) BOOST_NOEXCEPT +template +cpp_dec_float& cpp_dec_float::operator = (long double a) BOOST_NOEXCEPT { // Christopher Kormanyos's original code used a cast to long long here, but that fails // when long double has more digits than a long long. @@ -2200,12 +2214,12 @@ cpp_dec_float& cpp_dec_float::operator = (long double a) BOO return *this; } -template -void cpp_dec_float::from_unsigned_long_long(const unsigned long long u) BOOST_NOEXCEPT +template +void cpp_dec_float::from_unsigned_long_long(const unsigned long long u) BOOST_NOEXCEPT { std::fill(data.begin(), data.end(), static_cast(0u)); - exp = static_cast(0); + exp = static_cast(0); neg = false; fpclass = cpp_dec_float_finite; prec_elem = cpp_dec_float_elem_number; @@ -2225,15 +2239,15 @@ void cpp_dec_float::from_unsigned_long_long(const unsigned long long u if(i > static_cast(1u)) { - exp += static_cast((i - 1u) * static_cast(cpp_dec_float_elem_digits10)); + exp += static_cast((i - 1u) * static_cast(cpp_dec_float_elem_digits10)); } std::reverse(temp, temp + i); std::copy(temp, temp + (std::min)(i, static_cast(cpp_dec_float_elem_number)), data.begin()); } -template -boost::uint32_t cpp_dec_float::mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p) BOOST_NOEXCEPT +template +boost::uint32_t cpp_dec_float::mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p) BOOST_NOEXCEPT { // // There is a limit on how many limbs this algorithm can handle without dropping digits @@ -2261,8 +2275,8 @@ boost::uint32_t cpp_dec_float::mul_loop_uv(boost::uint32_t* const u, c return static_cast(carry); } -template -boost::uint32_t cpp_dec_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT +template +boost::uint32_t cpp_dec_float::mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT { boost::uint64_t carry = static_cast(0u); @@ -2277,8 +2291,8 @@ boost::uint32_t cpp_dec_float::mul_loop_n(boost::uint32_t* const u, bo return static_cast(carry); } -template -boost::uint32_t cpp_dec_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT +template +boost::uint32_t cpp_dec_float::div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p) BOOST_NOEXCEPT { boost::uint64_t prev = static_cast(0u); @@ -2292,14 +2306,14 @@ boost::uint32_t cpp_dec_float::div_loop_n(boost::uint32_t* const u, bo return static_cast(prev); } -template -cpp_dec_float cpp_dec_float::pow2(const long long p) BOOST_NOEXCEPT +template +cpp_dec_float cpp_dec_float::pow2(const long long p) BOOST_NOEXCEPT { // Create a static const table of p^2 for -128 < p < +128. // Note: The size of this table must be odd-numbered and // symmetric about 0. init.do_nothing(); - static const boost::array, 255u> p2_data = + static const boost::array, 255u> p2_data = {{ cpp_dec_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"), cpp_dec_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"), @@ -2558,90 +2572,90 @@ cpp_dec_float cpp_dec_float::pow2(const long long p) BOOST_N cpp_dec_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38") }}; - if((p > static_cast(-128)) && (p < static_cast(+128))) + if((p > static_cast(-128)) && (p < static_cast(+128))) { return p2_data[static_cast(p + ((p2_data.size() - 1u) / 2u))]; } // Compute and return 2^p. - if(p < static_cast(0)) + if(p < static_cast(0)) { - return pow2(static_cast(-p)).calculate_inv(); + return pow2(static_cast(-p)).calculate_inv(); } - else if(p < static_cast(std::numeric_limits::digits)) + else if(p < static_cast(std::numeric_limits::digits)) { const boost::uint64_t p2 = static_cast(static_cast(1uLL) << p); return cpp_dec_float(p2); } else { - cpp_dec_float t; + cpp_dec_float t; default_ops::detail::pow_imp(t, two(), p, mpl::true_()); return t; } } -template -inline void eval_add(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT +template +inline void eval_add(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result += o; } -template -inline void eval_subtract(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT +template +inline void eval_subtract(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result -= o; } -template -inline void eval_multiply(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT +template +inline void eval_multiply(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result *= o; } -template -inline void eval_divide(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT +template +inline void eval_divide(cpp_dec_float& result, const cpp_dec_float& o) BOOST_NOEXCEPT { result /= o; } -template -inline void eval_add(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT +template +inline void eval_add(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.add_unsigned_long_long(o); } -template -inline void eval_subtract(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT +template +inline void eval_subtract(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.sub_unsigned_long_long(o); } -template -inline void eval_multiply(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT +template +inline void eval_multiply(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.mul_unsigned_long_long(o); } -template -inline void eval_divide(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT +template +inline void eval_divide(cpp_dec_float& result, const unsigned long long& o) BOOST_NOEXCEPT { result.div_unsigned_long_long(o); } -template -inline void eval_add(cpp_dec_float& result, long long o) BOOST_NOEXCEPT +template +inline void eval_add(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) result.sub_unsigned_long_long(-o); else result.add_unsigned_long_long(o); } -template -inline void eval_subtract(cpp_dec_float& result, long long o) BOOST_NOEXCEPT +template +inline void eval_subtract(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) result.add_unsigned_long_long(-o); else result.sub_unsigned_long_long(o); } -template -inline void eval_multiply(cpp_dec_float& result, long long o) BOOST_NOEXCEPT +template +inline void eval_multiply(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) { @@ -2651,8 +2665,8 @@ inline void eval_multiply(cpp_dec_float& result, long long o) BOOST_NO else result.mul_unsigned_long_long(o); } -template -inline void eval_divide(cpp_dec_float& result, long long o) BOOST_NOEXCEPT +template +inline void eval_divide(cpp_dec_float& result, long long o) BOOST_NOEXCEPT { if(o < 0) { @@ -2663,18 +2677,18 @@ inline void eval_divide(cpp_dec_float& result, long long o) BOOST_NOEX result.div_unsigned_long_long(o); } -template -inline void eval_convert_to(unsigned long long* result, const cpp_dec_float& val) BOOST_NOEXCEPT +template +inline void eval_convert_to(unsigned long long* result, const cpp_dec_float& val) BOOST_NOEXCEPT { *result = val.extract_unsigned_long_long(); } -template -inline void eval_convert_to(long long* result, const cpp_dec_float& val) BOOST_NOEXCEPT +template +inline void eval_convert_to(long long* result, const cpp_dec_float& val) BOOST_NOEXCEPT { *result = val.extract_signed_long_long(); } -template -inline void eval_convert_to(long double* result, cpp_dec_float& val) BOOST_NOEXCEPT +template +inline void eval_convert_to(long double* result, cpp_dec_float& val) BOOST_NOEXCEPT { *result = val.extract_long_double(); } @@ -2682,8 +2696,8 @@ inline void eval_convert_to(long double* result, cpp_dec_float& val) B // // Non member function support: // -template -inline int eval_fpclassify(const cpp_dec_float& x) BOOST_NOEXCEPT +template +inline int eval_fpclassify(const cpp_dec_float& x) BOOST_NOEXCEPT { if(x.isinf()) return FP_INFINITE; @@ -2694,31 +2708,31 @@ inline int eval_fpclassify(const cpp_dec_float& x) BOOST_NOEXCEPT return FP_NORMAL; } -template -inline void eval_abs(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT +template +inline void eval_abs(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(x.isneg()) result.negate(); } -template -inline void eval_fabs(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT +template +inline void eval_fabs(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(x.isneg()) result.negate(); } -template -inline void eval_sqrt(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT +template +inline void eval_sqrt(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; result.calculate_sqrt(); } -template -inline void eval_floor(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT +template +inline void eval_floor(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(!x.isfinite() || x.isint()) @@ -2727,12 +2741,12 @@ inline void eval_floor(cpp_dec_float& result, const cpp_dec_float::one(); + result -= cpp_dec_float::one(); result = result.extract_integer_part(); } -template -inline void eval_ceil(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT +template +inline void eval_ceil(cpp_dec_float& result, const cpp_dec_float& x) BOOST_NOEXCEPT { result = x; if(!x.isfinite() || x.isint()) @@ -2741,16 +2755,16 @@ inline void eval_ceil(cpp_dec_float& result, const cpp_dec_float::one(); + result += cpp_dec_float::one(); result = result.extract_integer_part(); } -template -inline void eval_trunc(cpp_dec_float& result, const cpp_dec_float& x) +template +inline void eval_trunc(cpp_dec_float& result, const cpp_dec_float& x) { if(!x.isfinite()) { - result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number >(x), 0, boost::math::policies::policy<>()).backend(); + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number >(x), 0, boost::math::policies::policy<>()).backend(); return; } else if(x.isint()) @@ -2761,15 +2775,17 @@ inline void eval_trunc(cpp_dec_float& result, const cpp_dec_float -inline void eval_ldexp(cpp_dec_float& result, const cpp_dec_float& x, long long e) BOOST_NOEXCEPT +template +inline void eval_ldexp(cpp_dec_float& result, const cpp_dec_float& x, ArgType e) BOOST_NOEXCEPT { + if((static_cast(e) > (std::numeric_limits::max)()) || (static_cast(e) < (std::numeric_limits::min)())) + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Exponent value is out of range."))); result = x; - result *= cpp_dec_float::pow2(e); + result *= cpp_dec_float::pow2(e); } -template -inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float& x, long long* e) +template +inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float& x, ExponentType* e) { result = x; if(result.isneg()) @@ -2781,9 +2797,9 @@ inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float::max)() / 1000)) + if(abs(t) < ((std::numeric_limits::max)() / 1000)) { t *= 1000; t /= 301; @@ -2794,7 +2810,7 @@ inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float::pow2(-t); + result *= cpp_dec_float::pow2(-t); if(result.iszero() || result.isinf() || result.isnan()) { @@ -2803,32 +2819,32 @@ inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float::pow2(-t); + result *= cpp_dec_float::pow2(-t); } BOOST_MP_USING_ABS if(abs(result.order()) > 5) { // If our first estimate doesn't get close enough then try recursion until we do: - long long e2; - cpp_dec_float r2; + ExponentType e2; + cpp_dec_float r2; eval_frexp(r2, result, &e2); // overflow protection: - if((t > 0) && (e2 > 0) && (t > (std::numeric_limits::max)() - e2)) + if((t > 0) && (e2 > 0) && (t > (std::numeric_limits::max)() - e2)) BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is too large to be represented as a power of 2.")); - if((t < 0) && (e2 < 0) && (t < (std::numeric_limits::min)() - e2)) + if((t < 0) && (e2 < 0) && (t < (std::numeric_limits::min)() - e2)) BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is too large to be represented as a power of 2.")); t += e2; result = r2; } - while(result.compare(cpp_dec_float::one()) >= 0) + while(result.compare(cpp_dec_float::one()) >= 0) { - result /= cpp_dec_float::two(); + result /= cpp_dec_float::two(); ++t; } - while(result.compare(cpp_dec_float::half()) < 0) + while(result.compare(cpp_dec_float::half()) < 0) { - result *= cpp_dec_float::two(); + result *= cpp_dec_float::two(); --t; } *e = t; @@ -2836,23 +2852,23 @@ inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float -inline void eval_frexp(cpp_dec_float& result, const cpp_dec_float& x, int* e) +template +inline typename disable_if >::type eval_frexp(cpp_dec_float& result, const cpp_dec_float& x, int* e) { - long long t; + ExponentType t; eval_frexp(result, x, &t); - if(t > (std::numeric_limits::max)()) + if((t > (std::numeric_limits::max)()) || (t < (std::numeric_limits::min)())) BOOST_THROW_EXCEPTION(std::runtime_error("Exponent is outside the range of an int")); *e = static_cast(t); } -template -inline bool eval_is_zero(const cpp_dec_float& val) BOOST_NOEXCEPT +template +inline bool eval_is_zero(const cpp_dec_float& val) BOOST_NOEXCEPT { return val.iszero(); } -template -inline int eval_get_sign(const cpp_dec_float& val) BOOST_NOEXCEPT +template +inline int eval_get_sign(const cpp_dec_float& val) BOOST_NOEXCEPT { return val.iszero() ? 0 : val.isneg() ? -1 : 1; } @@ -2869,8 +2885,8 @@ typedef number > cpp_dec_float_100; namespace detail{ -template -struct is_explicitly_convertible, cpp_dec_float > : public mpl::true_ {}; +template +struct is_explicitly_convertible, cpp_dec_float > : public mpl::true_ {}; } @@ -2881,8 +2897,8 @@ struct is_explicitly_convertible, cpp_dec_float > : public namespace std { - template - class numeric_limits, ExpressionTemplates> > + template + class numeric_limits, ExpressionTemplates> > { public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; @@ -2892,14 +2908,14 @@ namespace std BOOST_STATIC_CONSTEXPR bool is_bounded = true; BOOST_STATIC_CONSTEXPR bool is_modulo = false; BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR int digits = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; - BOOST_STATIC_CONSTEXPR int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; - BOOST_STATIC_CONSTEXPR int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_total_digits10; - BOOST_STATIC_CONSTEXPR boost::int64_t min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. - BOOST_STATIC_CONSTEXPR boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. - BOOST_STATIC_CONSTEXPR boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. - BOOST_STATIC_CONSTEXPR boost::int64_t max_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp10; // Type differs from int. - BOOST_STATIC_CONSTEXPR int radix = boost::multiprecision::cpp_dec_float::cpp_dec_float_radix; + BOOST_STATIC_CONSTEXPR int digits = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; + BOOST_STATIC_CONSTEXPR int digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; + BOOST_STATIC_CONSTEXPR int max_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_total_digits10; + BOOST_STATIC_CONSTEXPR ExponentType min_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp; // Type differs from int. + BOOST_STATIC_CONSTEXPR ExponentType min_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_min_exp10; // Type differs from int. + BOOST_STATIC_CONSTEXPR ExponentType max_exponent = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp; // Type differs from int. + BOOST_STATIC_CONSTEXPR ExponentType max_exponent10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_max_exp10; // Type differs from int. + BOOST_STATIC_CONSTEXPR int radix = boost::multiprecision::cpp_dec_float::cpp_dec_float_radix; BOOST_STATIC_CONSTEXPR std::float_round_style round_style = std::round_to_nearest; BOOST_STATIC_CONSTEXPR bool has_infinity = true; BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = true; @@ -2909,63 +2925,63 @@ namespace std BOOST_STATIC_CONSTEXPR bool traps = false; BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> round_error (void) { return 0.5L; } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } - BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> (min) (void) { return (boost::multiprecision::cpp_dec_float::min)(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> (max) (void) { return (boost::multiprecision::cpp_dec_float::max)(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> lowest (void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> epsilon (void) { return boost::multiprecision::cpp_dec_float::eps(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> round_error (void) { return 0.5L; } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> infinity (void) { return boost::multiprecision::cpp_dec_float::inf(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> quiet_NaN (void) { return boost::multiprecision::cpp_dec_float::nan(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> signaling_NaN(void) { return boost::multiprecision::cpp_dec_float::zero(); } + BOOST_STATIC_CONSTEXPR boost::multiprecision::number, ExpressionTemplates> denorm_min (void) { return boost::multiprecision::cpp_dec_float::zero(); } }; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST boost::int64_t numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST ExponentType numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST ExponentType numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST ExponentType numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST ExponentType numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif } @@ -2974,12 +2990,12 @@ namespace boost{ namespace math{ namespace policies{ -template -struct precision< boost::multiprecision::number, ExpressionTemplates>, Policy> +template +struct precision< boost::multiprecision::number, ExpressionTemplates>, Policy> { // Define a local copy of cpp_dec_float_digits10 because it might differ // from the template parameter Digits10 for small or large digit counts. - static const boost::int32_t cpp_dec_float_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; + static const boost::int32_t cpp_dec_float_digits10 = boost::multiprecision::cpp_dec_float::cpp_dec_float_digits10; typedef typename Policy::precision_type precision_type; typedef digits2<((cpp_dec_float_digits10 + 1LL) * 1000LL) / 301LL> digits_2; diff --git a/test/math/log1p_expm1_test.cpp b/test/math/log1p_expm1_test.cpp index 4a53064b..4df662c6 100644 --- a/test/math/log1p_expm1_test.cpp +++ b/test/math/log1p_expm1_test.cpp @@ -140,7 +140,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test(number >(), "number >"); test(number >(), "number >"); - test(number >(), "number >"); + test(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/powm1_sqrtp1m1_test.cpp b/test/math/powm1_sqrtp1m1_test.cpp index db2621eb..1fa0f76d 100644 --- a/test/math/powm1_sqrtp1m1_test.cpp +++ b/test/math/powm1_sqrtp1m1_test.cpp @@ -132,7 +132,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_powm1_sqrtp1m1(number >(), "number >"); test_powm1_sqrtp1m1(number >(), "number >"); - test_powm1_sqrtp1m1(number >(), "number >"); + test_powm1_sqrtp1m1(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/table_type.hpp b/test/math/table_type.hpp index a6a526e5..0b78ec0f 100644 --- a/test/math/table_type.hpp +++ b/test/math/table_type.hpp @@ -27,7 +27,7 @@ inline std::ostream& operator << (std::ostream& os, string_table_entry const & w return os << static_cast(what); } -template +template struct table_type > { typedef string_table_entry type; diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index c9e7bb3c..4fc0c100 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -101,7 +101,7 @@ int test_main(int, char* []) test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); - test_bessel(number >(), "number >"); + test_bessel(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index 7738d5ae..d0f2acd8 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -142,7 +142,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); - test_bessel(number >(), "number >"); + test_bessel(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp index 46ce61b9..8c4d8e54 100644 --- a/test/math/test_bessel_k.cpp +++ b/test/math/test_bessel_k.cpp @@ -115,7 +115,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); - test_bessel(number >(), "number >"); + test_bessel(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index adb472ca..a3a7c91b 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -141,7 +141,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); - test_bessel(number >(), "number >"); + test_bessel(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index 39409cb7..92d0fb77 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -127,7 +127,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_beta(number >(), "number >"); test_beta(number >(), "number >"); - test_beta(number >(), "number >"); + test_beta(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index daae89b2..208c5dee 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -106,7 +106,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_binomial(number >(), "number >"); test_binomial(number >(), "number >"); - test_binomial(number >(), "number >"); + test_binomial(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp index 30f96116..d5936f38 100644 --- a/test/math/test_carlson.cpp +++ b/test/math/test_carlson.cpp @@ -98,7 +98,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_spots(number >(), "number >"); test_spots(number >(), "number >"); - test_spots(number >(), "number >"); + test_spots(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_cbrt.cpp b/test/math/test_cbrt.cpp index 156e0dd6..ca2af6d3 100644 --- a/test/math/test_cbrt.cpp +++ b/test/math/test_cbrt.cpp @@ -87,7 +87,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_cbrt(number >(), "number >"); test_cbrt(number >(), "number >"); - test_cbrt(number >(), "number >"); + test_cbrt(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp index 16653f83..a090081d 100644 --- a/test/math/test_digamma.cpp +++ b/test/math/test_digamma.cpp @@ -101,7 +101,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_digamma(number >(), "number >"); test_digamma(number >(), "number >"); - test_digamma(number >(), "number >"); + test_digamma(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp index b74c0f56..bf8eb4a3 100644 --- a/test/math/test_ellint_1.cpp +++ b/test/math/test_ellint_1.cpp @@ -94,7 +94,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_spots(number >(), "number >"); test_spots(number >(), "number >"); - test_spots(number >(), "number >"); + test_spots(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp index 9529a21c..d12c1d50 100644 --- a/test/math/test_ellint_2.cpp +++ b/test/math/test_ellint_2.cpp @@ -87,7 +87,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_spots(number >(), "number >"); test_spots(number >(), "number >"); - test_spots(number >(), "number >"); + test_spots(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp index 986b864b..abc6141a 100644 --- a/test/math/test_ellint_3.cpp +++ b/test/math/test_ellint_3.cpp @@ -108,7 +108,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_spots(number >(), "number >"); test_spots(number >(), "number >"); - test_spots(number >(), "number >"); + test_spots(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp index 3ce56dfc..e9308d8c 100644 --- a/test/math/test_erf.cpp +++ b/test/math/test_erf.cpp @@ -108,7 +108,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_erf(number >(), "number >"); test_erf(number >(), "number >"); - test_erf(number >(), "number >"); + test_erf(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_expint.cpp b/test/math/test_expint.cpp index 90b77e79..bf5b78eb 100644 --- a/test/math/test_expint.cpp +++ b/test/math/test_expint.cpp @@ -108,7 +108,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_expint(number >(), "number >"); test_expint(number >(), "number >"); - test_expint(number >(), "number >"); + test_expint(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index 4e4d5636..c853bdb4 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -122,7 +122,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); - test_gamma(number >(), "number >"); + test_gamma(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_hermite.cpp b/test/math/test_hermite.cpp index 277e96a7..743a3de3 100644 --- a/test/math/test_hermite.cpp +++ b/test/math/test_hermite.cpp @@ -87,7 +87,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_hermite(number >(), "number >"); test_hermite(number >(), "number >"); - test_hermite(number >(), "number >"); + test_hermite(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index e48fb900..2f6902e0 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -118,7 +118,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_beta(number >(), "number >"); test_beta(number >(), "number >"); - test_beta(number >(), "number >"); + test_beta(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ibeta_2.cpp b/test/math/test_ibeta_2.cpp index 212056a7..72997385 100644 --- a/test/math/test_ibeta_2.cpp +++ b/test/math/test_ibeta_2.cpp @@ -118,7 +118,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_beta(number >(), "number >"); test_beta(number >(), "number >"); - test_beta(number >(), "number >"); + test_beta(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ibeta_3.cpp b/test/math/test_ibeta_3.cpp index 8bb2a9a9..c6602542 100644 --- a/test/math/test_ibeta_3.cpp +++ b/test/math/test_ibeta_3.cpp @@ -104,7 +104,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_beta(number >(), "number >"); test_beta(number >(), "number >"); - test_beta(number >(), "number >"); + test_beta(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ibeta_4.cpp b/test/math/test_ibeta_4.cpp index d4b224ff..c7a8b20f 100644 --- a/test/math/test_ibeta_4.cpp +++ b/test/math/test_ibeta_4.cpp @@ -111,7 +111,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_beta(number >(), "number >"); test_beta(number >(), "number >"); - test_beta(number >(), "number >"); + test_beta(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index 54cb44eb..b9f052ca 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -97,7 +97,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_beta(number >(), "number >"); test_beta(number >(), "number >"); - test_beta(number >(), "number >"); + test_beta(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index e9916b96..82eff4e6 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -90,7 +90,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_beta(number >(), "number >"); test_beta(number >(), "number >"); - test_beta(number >(), "number >"); + test_beta(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_igamma.cpp b/test/math/test_igamma.cpp index 50aff1c5..063cbeaf 100644 --- a/test/math/test_igamma.cpp +++ b/test/math/test_igamma.cpp @@ -94,7 +94,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); - test_gamma(number >(), "number >"); + test_gamma(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index 697b58fd..5408444e 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -109,7 +109,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); - test_gamma(number >(), "number >"); + test_gamma(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_igamma_inva.cpp b/test/math/test_igamma_inva.cpp index 8ff4e6d4..fdd330e9 100644 --- a/test/math/test_igamma_inva.cpp +++ b/test/math/test_igamma_inva.cpp @@ -88,7 +88,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); - test_gamma(number >(), "number >"); + test_gamma(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_laguerre.cpp b/test/math/test_laguerre.cpp index 8f70b1ca..65840502 100644 --- a/test/math/test_laguerre.cpp +++ b/test/math/test_laguerre.cpp @@ -87,7 +87,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_laguerre(number >(), "number >"); test_laguerre(number >(), "number >"); - test_laguerre(number >(), "number >"); + test_laguerre(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp index f855b9c3..237310e6 100644 --- a/test/math/test_legendre.cpp +++ b/test/math/test_legendre.cpp @@ -87,7 +87,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_legendre_p(number >(), "number >"); test_legendre_p(number >(), "number >"); - test_legendre_p(number >(), "number >"); + test_legendre_p(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp index 931ffe3c..cae68344 100644 --- a/test/math/test_tgamma_ratio.cpp +++ b/test/math/test_tgamma_ratio.cpp @@ -101,7 +101,7 @@ int test_main(int, char* []) #ifdef TEST_CPP_DEC_FLOAT test_tgamma_ratio(number >(), "number >"); test_tgamma_ratio(number >(), "number >"); - test_tgamma_ratio(number >(), "number >"); + test_tgamma_ratio(number > >(), "number > >"); #endif return 0; } diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index 1d2184ce..4db422fe 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -96,7 +96,7 @@ int test_main(int, char* []) test_zeta(number >(), "number >"); test_zeta(number >(), "number >"); test_zeta(number >(), "number >"); - test_zeta(number >(), "number >"); + test_zeta(number > >(), "number > >"); #endif return 0; } diff --git a/test/test_acos.cpp b/test/test_acos.cpp index d0943592..c903613b 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -107,10 +107,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); #endif return boost::report_errors(); } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index f972d761..26e624c6 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1654,7 +1654,8 @@ int main() #endif #ifdef TEST_CPP_DEC_FLOAT test(); - test, boost::multiprecision::et_off> >(); + test, boost::multiprecision::et_off> >(); + test >, boost::multiprecision::et_on> >(); #endif #ifdef TEST_MPFR test(); diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 3c913082..3488f3d5 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -103,10 +103,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_atan.cpp b/test/test_atan.cpp index cfb2de3d..9888673d 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -249,10 +249,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_cos.cpp b/test/test_cos.cpp index c9c51068..55c6540b 100644 --- a/test/test_cos.cpp +++ b/test/test_cos.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type " << typeid(T).name() << std::endl; static const boost::array data = {{ "-2.37609908807915949996042688873953402912174184373388399043229539427530802169622688886435380890546981798452174137747437590e-1", @@ -303,10 +304,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); #endif return boost::report_errors(); } diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index 5e08ec0c..f98f6cbc 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -145,10 +145,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); #endif return boost::report_errors(); } diff --git a/test/test_exp.cpp b/test/test_exp.cpp index f36d7c78..f9ca1cb1 100644 --- a/test/test_exp.cpp +++ b/test/test_exp.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type " << typeid(T).name() << std::endl; static const boost::array data = {{ "1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", @@ -185,10 +186,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_log.cpp b/test/test_log.cpp index 5d6ea4e4..12961093 100644 --- a/test/test_log.cpp +++ b/test/test_log.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type " << typeid(T).name() << std::endl; static const boost::array data = {{ "-2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806", @@ -213,10 +214,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_pow.cpp b/test/test_pow.cpp index 6f489637..f269ddd6 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -588,10 +588,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_round.cpp b/test/test_round.cpp index f066a9d8..27fe149a 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -394,10 +394,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); #endif #ifdef TEST_BACKEND test >(); diff --git a/test/test_sin.cpp b/test/test_sin.cpp index 1d208575..571beb4f 100644 --- a/test/test_sin.cpp +++ b/test/test_sin.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; static const boost::array data = {{ "-9.71360659712083391437631022096936715962104815777147739346439739644168480837178969413799829610404829247283169084501281105e-1", @@ -297,10 +298,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index bb47e54f..ec4f5365 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -221,10 +221,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_sqrt.cpp b/test/test_sqrt.cpp index cd66f169..2ab95f28 100644 --- a/test/test_sqrt.cpp +++ b/test/test_sqrt.cpp @@ -191,10 +191,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); // Check low multiprecision digit counts. test > >(); test > >(); diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 2860fde9..18478a7d 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -140,10 +140,10 @@ int main() test > >(); test > >(); test > >(); - test > >(); - test > >(); - test > >(); - test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); #endif return boost::report_errors(); } From 9f8b30fcdf7d17678681511d5ecca4f65b0be874 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 16 Sep 2012 12:25:14 +0000 Subject: [PATCH 236/256] Update docs with review comments. Update a few tests based on review comments. Regenerate docs. [SVN r80539] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- doc/html/boost_multiprecision/map/todo.html | 106 ++- doc/html/boost_multiprecision/ref/number.html | 94 ++- .../tut/ints/cpp_int.html | 13 + doc/html/index.html | 2 +- doc/multiprecision.qbk | 79 ++- test/Jamfile.v2 | 23 + test/test_acos.cpp | 1 + test/test_asin.cpp | 1 + test/test_atan.cpp | 1 + test/test_cosh.cpp | 1 + test/test_pow.cpp | 1 + test/test_sinh.cpp | 1 + test/test_tan.cpp | 611 ++++++++++++++++++ test/test_tanh.cpp | 1 + 18 files changed, 915 insertions(+), 36 deletions(-) create mode 100644 test/test_tan.cpp diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index f8c6e580..6b1856e3 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index d8dacbad..2706639a 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 42e8cba8..12cee4d9 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 0deb96a1..862dddae 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index e7fd11c7..5ab45fdb 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -17,6 +17,106 @@ +

    + Things requested in review: +

    +
      +
    • + A 2's complement fixed precision int that uses exactly N bits and no + more. +
    • +
    • + A backend for an overflow aware integers. +
    • +
    • + Each back-end should document the requirements it satisfies (not currently + scheduled for inclusion: it's deliberately an implementation detail, + and "optional" requirements are optimisations which can't be + detected by the user). +
    • +
    • + IIUC convert_to is used to emulate in c++98 compilers C++11 explicit + conversions. Could the explicit conversion operator be added on compilers + supporting it? (Done 2012/09/15). +
    • +
    • + The front-end should make the differences between implicit and explicit + construction (Done 2012/09/15). +
    • +
    • + The use of bool in template parameters could be improved by the use of + an enum class which will be more explicit. E.g enum + class expression_template + {disabled, enabled}; enum class sign + {unsigned, signed}; (Partly done 2012/09/15). +
    • +
    • + The ExpresionTemplate parameter could be defaulted to a traits class + for more sensible defaults. +
    • +
    • + The library interface should use the noexcept (BOOST_NOEXCEPT, ...) facilities + (Done 2012/09/15). +
    • +
    • + It is unfortunate that the generic mp_number front end can not make use + contexpr as not all the backends can ensure this (done - we can go quite + a way). +
    • +
    • + literals: The library doesn't provide some kind of literals. I think + that the mp_number class should provide a way to create literals if the + backend is able to. (Done 2012/09/15). +
    • +
    • + The performances of mp_number<a_trivial_adaptor<float>, false>respect + to float and mp_number<a_trivial_adaptor<int>, false> and + int should be given to show the cost of using the generic interface (Mostly + done, just need to update docs to the latest results). +
    • +
    • + The documentation should contain Throws specification on the mp_number + and backend requirements operations. (Done 2012/09/15). +
    • +
    • + The tutorial should add more examples concerning implicit or explicit + conversions. (Done 2012/09/15). +
    • +
    • + The documentation must explain how move semantics helps in this domain + and what the backend needs to do to profit from this optimization. (Done + 2012/09/15). +
    • +
    • + The rounding applied when converting must be documented. +
    • +
    • + cpp_dec_float should round to nearest. +
    • +
    • + In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we + can optimise and eliminate one more temporary. +
    • +
    • + We can reuse temporaries in multiple subtrees (temporary caching). +
    • +
    • + Emphasise in the docs that ET's may reorder operations. +
    • +
    • + Document why we don't use proto (compile times). +
    • +
    • + Document what happens to small fixed precision cpp_int's. +
    • +
    • + Should we provide min/max overloads for expression templates? +
    • +
    • + Document why we don't abstract out addition/multiplication algorithms + etc. +
    • +

    More a list of what could be done, rather than what should be done (which may be a much smaller list!). @@ -57,10 +157,10 @@ be the default - int32_t or int64_t? (done 2012/09/06)

  • - Document the size requirements of fixed precision ints. + Document the size requirements of fixed precision ints (done 2012/09/15).
  • - Document std lib function accuracy. + Document std lib function accuracy (done 2012/09/15).
  • Make fixed precision orthogonal to Allocator type in cpp_int. Possible @@ -73,7 +173,7 @@
  • Be a bit clearer on the effects of sign-magnitude representation of cpp_int - - min == -max etc. + - min == -max etc - done.
  • Document cpp_dec_float precision, rounding, and exponent size (done 2012/09/06). diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index b1f6dc2e..3c7994fc 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -787,10 +787,19 @@

    +

    + 0eps +

    +

    + 0eps +

    +

    + 0eps +

    @@ -800,10 +809,19 @@

    +

    + 0eps +

    +

    + 0eps +

    +

    + 0eps +

    @@ -813,10 +831,19 @@

    +

    + 0eps +

    +

    + 0eps +

    +

    + 0eps +

    @@ -826,10 +853,19 @@

    +

    + 1eps +

    +

    + 0eps +

    +

    + 0eps +

    @@ -839,10 +875,19 @@

    +

    + 1045eps[1] +

    +

    + 0eps +

    +

    + 0eps +

    @@ -852,10 +897,19 @@

    +

    + 2eps +

    +

    + 0eps +

    +

    + 0eps +

    @@ -865,10 +919,19 @@

    +

    + 1eps +

    +

    + 0eps +

    +

    + 0eps +

    @@ -877,24 +940,20 @@ pow

    - - - - - - - -

    - fmod + 0eps

    +

    + 4eps +

    - - +

    + 3eps +

    @@ -904,13 +963,26 @@

    +

    + 1eps +

    +

    + 0eps +

    +

    + 0eps +

    +

    [1] + It's likely that the inherent error in the input values to our + test cases are to blame here. +

  • diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html index 988e9909..fdfa36ff 100644 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -148,6 +148,19 @@ of number on this backend move aware. +
  • + When used at fixed precision, the size of this type is always one machine + word larger than you would expect for an N-bit integer: the extra word + stores both the sign, and how many machine words in the integer are + actually in use. The latter is an optimisation for larger fixed precision + integers, so that a 1024-bit integer has almost the same performance + characterists as a 128-bit integer, rather than being 4 times slower + for addition and 16 times slower for multiplication (assuming the values + involved would always fit in 128 bits). Typically this means you can + use an integer type wide enough for the "worst case senario" + with only minor performance degradation even if most of the time the + arithmetic could in fact be done with a narrower type. +
  • diff --git a/doc/html/index.html b/doc/html/index.html index 2d72038a..6352948f 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -120,7 +120,7 @@ - +

    Last revised: September 07, 2012 at 08:25:28 GMT

    Last revised: September 16, 2012 at 12:00:51 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index e765f0e9..912cd037 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -406,6 +406,14 @@ the feature off. `uint128_t` then both `uint128_t(1)-4` and `-uint128(3)` would result in the value `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD` of type `uint128_t`. * This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware. +* When used at fixed precision, the size of this type is always one machine word larger than you would expect for an N-bit integer: +the extra word stores both the sign, and how many machine words in the integer are actually in use. +The latter is an optimisation for larger fixed precision integers, so that a 1024-bit integer has almost the same performance +characterists as a 128-bit integer, rather than being 4 times slower for addition and 16 times slower for multiplication + (assuming the values involved would always fit in 128 bits). +Typically this means you can use +an integer type wide enough for the "worst case senario" with only minor performance degradation even if most of the time +the arithmetic could in fact be done with a narrower type. [h5 Example:] @@ -1549,16 +1557,15 @@ here are exact (tested on Win32 with VC++10, MPFR-3.0.0, MPIR-2.1.1): [[log10][1eps][0eps][0eps]] [[cos][700eps][0eps][0eps]] [[sin][1eps][0eps][0eps]] -[[tan][][][]] -[[acos][][][]] -[[asin][][][]] -[[atan][][][]] -[[cosh][][][]] -[[sinh][][][]] -[[tanh][][][]] -[[pow][][][]] -[[fmod][][][]] -[[atan2][][][]] +[[tan][0eps][0eps][0eps]] +[[acos][0eps][0eps][0eps]] +[[asin][0eps][0eps][0eps]] +[[atan][1eps][0eps][0eps]] +[[cosh][1045eps[footnote It's likely that the inherent error in the input values to our test cases are to blame here.]][0eps][0eps]] +[[sinh][2eps][0eps][0eps]] +[[tanh][1eps][0eps][0eps]] +[[pow][0eps][4eps][3eps]] +[[atan2][1eps][0eps][0eps]] ] [h4 Traits Class Support] @@ -2675,6 +2682,52 @@ code. [section:todo TODO] +Things requested in review: + +* A 2's complement fixed precision int that uses exactly N bits and no more. +* A backend for an overflow aware integers. +* Each back-end should document the requirements it satisfies (not currently scheduled for inclusion: it's +deliberately an implementation detail, and "optional" requirements are optimisations which can't be detected +by the user). +* IIUC convert_to is used to emulate in c++98 compilers C++11 explicit +conversions. Could the explicit conversion operator be added on +compilers supporting it? (Done 2012/09/15). +* The front-end should make the differences between implicit and explicit +construction (Done 2012/09/15). +* The use of bool in template parameters could be improved by the use of +an enum class which will be more explicit. E.g `enum class expression_template {disabled, enabled}; +enum class sign {unsigned, signed};` (Partly done 2012/09/15). +* The ExpresionTemplate parameter could be defaulted to a traits class for more sensible defaults. +* The library interface should use the noexcept (BOOST_NOEXCEPT, ...) +facilities (Done 2012/09/15). +* It is unfortunate that the generic mp_number front end can not make use +contexpr as not all the backends can ensure this (done - we can go quite a way). +* literals: The library doesn't provide some kind of literals. I think that the +mp_number class should provide a way to create literals if the backend +is able to. (Done 2012/09/15). +* The performances of mp_number, false>respect to +float and mp_number, false> and int should be +given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results). +* The documentation should contain Throws specification on the mp_number +and backend requirements operations. (Done 2012/09/15). +* The tutorial should add more examples concerning implicit or explicit +conversions. (Done 2012/09/15). +* The documentation must explain how move semantics helps in this domain +and what the backend needs to do to profit from this optimization. (Done 2012/09/15). +* The rounding applied when converting must be documented. +* cpp_dec_float should round to nearest. +* In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we can optimise and eliminate one more temporary. +* We can reuse temporaries in multiple subtrees (temporary caching). +* Emphasise in the docs that ET's may reorder operations. +* Document why we don't use proto (compile times). +* Document what happens to small fixed precision cpp_int's. +* Should we provide min/max overloads for expression templates? +* Document why we don't abstract out addition/multiplication algorithms etc. + + + + + More a list of what ['could] be done, rather than what ['should] be done (which may be a much smaller list!). * Add back-end support for libdecNumber. @@ -2689,12 +2742,12 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. Open question - what should be the default - int32_t or int64_t? (done 2012/09/06) -* Document the size requirements of fixed precision ints. -* Document std lib function accuracy. +* Document the size requirements of fixed precision ints (done 2012/09/15). +* Document std lib function accuracy (done 2012/09/15). * Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits template argument that defaults to 0 (meaning keep going till no more space/memory). * Add support for fused multiply add (and subtract). GMP mpz_t could use this. -* Be a bit clearer on the effects of sign-magnitude representation of cpp_int - min == -max etc. +* Be a bit clearer on the effects of sign-magnitude representation of cpp_int - min == -max etc - done. * Document cpp_dec_float precision, rounding, and exponent size (done 2012/09/06). * Can we be clearer in the docs that mixed arithmetic doesn't work (no longer applicable as of 2012/09/06)? * Document round functions behaviour better (they behave as in C++11) (added note 2012/09/06). diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index e0fa0c37..ae17fbe4 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -496,6 +496,29 @@ run test_atan.cpp mpfr [ check-target-builds ../config//has_mpfr : : no ] : test_atan_mpfr_50 ; +run test_tan.cpp gmp + : # command line + : # input files + : # requirements + TEST_MPF_50 + [ check-target-builds ../config//has_gmp : : no ] + : test_tan_mpf50 ; + +run test_tan.cpp + : # command line + : # input files + : # requirements + TEST_CPP_DEC_FLOAT + : test_tan_cpp_dec_float ; + +run test_tan.cpp mpfr + : # command line + : # input files + : # requirements + TEST_MPFR_50 + [ check-target-builds ../config//has_mpfr : : no ] + : test_tan_mpfr_50 ; + run test_gmp_conversions.cpp gmp : # command line : # input files diff --git a/test/test_acos.cpp b/test/test_acos.cpp index c903613b..44bee8a5 100644 --- a/test/test_acos.cpp +++ b/test/test_acos.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; // // Test with some exact binary values as input - this tests our code // rather than the test data: diff --git a/test/test_asin.cpp b/test/test_asin.cpp index 3488f3d5..6f4acb22 100644 --- a/test/test_asin.cpp +++ b/test/test_asin.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; // // Test with some exact binary values as input - this tests our code // rather than the test data: diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 9888673d..4e6d7552 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -68,6 +68,7 @@ struct is_mpfr_type void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; static const boost::array data = {{ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-101", diff --git a/test/test_cosh.cpp b/test/test_cosh.cpp index f98f6cbc..68b4d838 100644 --- a/test/test_cosh.cpp +++ b/test/test_cosh.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; static const boost::array data = {{ "1.0560191127459844751259038114395241283965590525302917878166464679729562764239266483419824023679041866569431842053263976225991679105269492268050148624443706785607467750929028856273183654547152707568642275917435773104050171284580773949313906303074811586096214771879801872225500237540725592288167903987152007171391207680034517664218965133028298959753155835975555361514087618679892905973726581183754237665", diff --git a/test/test_pow.cpp b/test/test_pow.cpp index f269ddd6..07c770c5 100644 --- a/test/test_pow.cpp +++ b/test/test_pow.cpp @@ -48,6 +48,7 @@ template void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; static const boost::array, 500> data = {{ {{ "9.85291419463953934609889984130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4", "8.41670862661703722551465034484863281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2", "8.66781019918879108354226292713799369912745098619466567318041467361236175866573114777000418440761829061824953361563557580935951901405814080757565313129904800947783606850513184296612628910656615168927761935861462770335134108408073175949783551491164949747086136599355880600420490275164555515512645668845e4202" }}, diff --git a/test/test_sinh.cpp b/test/test_sinh.cpp index ec4f5365..2c45eefb 100644 --- a/test/test_sinh.cpp +++ b/test/test_sinh.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; static const boost::array data = {{ "0.33937643772780730649735035088117439284797964277099188367427256402032493952288848579083622213428182842627923924487560393743204013166230906610274533504451302298480596207257724471359936027198954417317381228420986152562253196896619001418292769103034561794393400788635610424360775622370491149170501475453034747306600304507650361914904138327962144190354572359428689767990353722392457982930942617983634601752", diff --git a/test/test_tan.cpp b/test/test_tan.cpp new file mode 100644 index 00000000..341c4fbc --- /dev/null +++ b/test/test_tan.cpp @@ -0,0 +1,611 @@ +/////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2002 - 2011. +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// This work is based on an earlier work: +// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", +// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include +#include "test.hpp" + +#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) +# define TEST_MPF_50 +//# define TEST_MPF +# define TEST_BACKEND +# define TEST_CPP_DEC_FLOAT +# define TEST_MPFR_50 + +#ifdef _MSC_VER +#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") +#endif +#ifdef __GNUC__ +#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" +#endif + +#endif + +#if defined(TEST_MPF_50) +#include +#endif +#if defined(TEST_MPFR_50) +#include +#endif +#ifdef TEST_BACKEND +#include +#endif +#ifdef TEST_CPP_DEC_FLOAT +#include +#endif + +template +void test() +{ + std::cout << "Testing type: " << typeid(T).name() << std::endl; + static const boost::array, 500> data = + {{ + {{ "0", "0" }}, + {{ "0.03125", "0.03126017650125595642059651621507489147877835880393069701338513042228140662868270178810496567920444849" }}, + {{ "0.0625", "0.06258150756627501465828481747745378814263718044751609194477198396918772026898277636891147279909599223" }}, + {{ "0.09375", "0.09402562724573195576489755283678159034525247904824579838425258406126459673745015890895186868431790389" }}, + {{ "0.125", "0.1256551365751309677926782186297740007586657638922255426688666139272557034809288714758416649081949452" }}, + {{ "0.15625", "0.1575341073252716106852257741724104906661974475121544257009051769486388715993896887955248205741956572" }}, + {{ "0.1875", "0.1897286107180591328910833700730338162710122536010363055257273177325079653665703027537671734777793159" }}, + {{ "0.21875", "0.2223072805534313308722888175879995822319104918387718270273535559005416973923742249393961682186904743" }}, + {{ "0.25", "0.2553419212210362665044822364904736782042016388008226217404756502588831981346542579493165026310550454" }}, + {{ "0.28125", "0.2889081724405147260015884454642448286982056723714186732378896291489603033944207768995735063901118923" }}, + {{ "0.3125", "0.3230862443517455201183006557179619743037036164759656335249943943470835620899848486165999610265179128" }}, + {{ "0.34375", "0.3579617388480169983883959631794471406375375900948760280972554801967920011385682070576100261097824193" }}, + {{ "0.375", "0.3936265759256327582294137871012180981856966444080712949818309739116951585799388015457993878787997269" }}, + {{ "0.40625", "0.4301800474642300490203296054472752679963181652078151755042924196261397876727827800621729454863519218" }}, + {{ "0.4375", "0.467730025452391799921342706961992620413738282701114114727311802060193364671415150855360089743973883" }}, + {{ "0.46875", "0.5063943574962298120708227547071771387085972911587370796115595547436950963394141008177411206688111652" }}, + {{ "0.5", "0.5463024898437905132551794657802853832975517201797912461640913859329075105180258157151806482706562186" }}, + {{ "0.53125", "0.5875973675914432213941588631578976924522062928763012976297627647411436985181631978010052165746790249" }}, + {{ "0.5625", "0.630437673835884766852611429299775209903293946951939898251650513745196222165381994293674222073197888" }}, + {{ "0.59375", "0.6750004851442429076631779494777229128864061685897319107997999948317524157945835559284790797708856594" }}, + {{ "0.625", "0.7214844409909044199895178832795946807605892812145963657590722733756611374332889471678213489198161525" }}, + {{ "0.65625", "0.770113551344208705005983660052773240245517035179766333813336659352553100285016757206110401160028615" }}, + {{ "0.6875", "0.8211418015898941219114239653747117008753716453086877023306268412086961091026737960147423436480371207" }}, + {{ "0.71875", "0.874858760554482349539671907932155532231782257040588572549027780010892786023906162883923961511720127" }}, + {{ "0.75", "0.9315964599440724611652027565739364281886913399722189970823760758473440872606463942290222395451727347" }}, + {{ "0.78125", "0.9917378983632686802568573899299023689572109767948642785884455151680071204845003794305054375396567381" }}, + {{ "0.8125", "1.055727639411919906905928322585893795895648561782414602487481288436493656539800004691156074588329712" }}, + {{ "0.84375", "1.124085134704560944131255965236688143403009777898521429483610660496648114350313475950507899270640935" }}, + {{ "0.875", "1.197421629234347972339226617276609445975806623418086002265951386950959459751336541541255052511392263" }}, + {{ "0.90625", "1.276461828982383445402617843263224436254612963462020761243811395954456362359102470162910199798207331" }}, + {{ "0.9375", "1.362071976376228231137266640571127531383954502011184315622281795551984309995647087587519913956728759" }}, + {{ "0.96875", "1.455296662469072910283351203225910848640458285194500237036240390915811463257413817682188441906818248" }}, + {{ "1", "1.557407724654902230506974807458360173087250772381520038383946605698861397151727289555099965202242984" }}, + {{ "1.03125", "1.669970130353601668362228999287655840466243330137306547430306024592587314737242276409239980979443174" }}, + {{ "1.0625", "1.794932157265411111412512666640647365321540790157497713363548060626019826336277151761592643681562889" }}, + {{ "1.09375", "1.934751011916103924218794082343652203808222523749686394781135509079848569244264225172363092871198012" }}, + {{ "1.125", "2.092571276372179004423733981234886782259941716148720572913991515339894408382371607574079035650497628" }}, + {{ "1.15625", "2.272484060247449371554848155118626331407879143446651944395567708418983252993702557436552564850427597" }}, + {{ "1.1875", "2.479912917556758792437515574454698934001624072586467858166295252178386457324268836053055868956236971" }}, + {{ "1.21875", "2.722205296368710926927932441765877991142333599010908457349133016162381084884183783877142234320889929" }}, + {{ "1.25", "3.009569673862831288157563894386243931391637699606062181047618417194668052548525026087449023543493348" }}, + {{ "1.28125", "3.356619539863437446801254212059537717694035906934171604782430676182834617443082960603002796648697006" }}, + {{ "1.3125", "3.785038166535876194630450975067081020082611278470578710038656250838244608554256510046862645943214168" }}, + {{ "1.34375", "4.328443997051826678273102914917348524900160978527585314859991445919675557868173766988955991311583481" }}, + {{ "1.375", "5.04191525648136332110647205436422898660842030191113551461354742130497045161358084541551547909572374" }}, + {{ "1.40625", "6.02236781523945747670227618692239447637023828129226996489330674807031833318199939459376428890858723" }}, + {{ "1.4375", "7.457597366497314807346683309400119820853357043059007743950216525315136075258562571085388447049580691" }}, + {{ "1.46875", "9.765431722939984318153137075537986427219225446494026346174651506537333303940271000197727980305021618" }}, + {{ "1.5", "14.10141994717171938764608365198775644565954357723586186612326758608969627041415526864870292630944229" }}, + {{ "1.53125", "25.27361509038201021888564593774203447137999639112919943365223977030408052066444435679945642193151117" }}, + {{ "1.5625", "120.5325057225426126499709994255564804478992494692406282802019970839232698437518852292295322760051977" }}, + {{ "1.59375", "-43.55836040673973128976461522014256814059799632626649998645431997677346427573993827534701436489680689" }}, + {{ "1.625", "-18.43086276236962258434966752738448975654856844592479276671012332110139541995382323486170528839748939" }}, + {{ "1.65625", "-11.67374867215481348216513536293945130766869617358776549669176281104274968860961548954064974733991076" }}, + {{ "1.6875", "-8.529773993911653209272999783778324026196719414411590092375294867302897481134537117581472896391856125" }}, + {{ "1.71875", "-6.709482397820695376442251396240149572345307174060614879543507453718786710576833294867753884694537068" }}, + {{ "1.75", "-5.520379922509330168089935698420205500301122430036809938027371836902288281994865833387763391132527793" }}, + {{ "1.78125", "-4.681280325336429567316481395066494078522124421106252324368679821712511116596067067167862140573504461" }}, + {{ "1.8125", "-4.056414052170035671394695838412072312925972547334020477371203912084804008892977770267448199074447777" }}, + {{ "1.84375", "-3.572185661861125859870109039981697499670205624150737204067785923886464814599307447743073100872203818" }}, + {{ "1.875", "-3.185238919501229169914672833591055563068190813252958079987355697225012578404488535638528315769681186" }}, + {{ "1.90625", "-2.868371726567042158384165205507273428429609298347592604875428057959086996590505442480814626239318494" }}, + {{ "1.9375", "-2.603652912010850547260718033703880538638622594696262109914178307203938532760442947667909676035790898" }}, + {{ "1.96875", "-2.378782114044268462754557076702009514149544247914950239975234530609231791907385965883627186285245033" }}, + {{ "2", "-2.185039863261518991643306102313682543432017746227663164562955869966773747209194182319743542104728548" }}, + {{ "2.03125", "-2.016072402071886080344963601799448100479409508905552305715636690184075224937451135890591580854847922" }}, + {{ "2.0625", "-1.86713988123437020407782794323860043132451055327769468817959958079457004467338400013589662215485346" }}, + {{ "2.09375", "-1.734634103946532053863260773540976834775727590591832428183425859927779370855756294581920109583545138" }}, + {{ "2.125", "-1.615759423973460045704218998135983105718634789435135146363364502252797531256854000679335498343468236" }}, + {{ "2.15625", "-1.508315836353881219959349807787957061590021089263168744744644715237923771519750208817662219357365791" }}, + {{ "2.1875", "-1.410548011813148830578875195416796900655621273730614063607851296345238287109255775298602026828637775" }}, + {{ "2.21875", "-1.321038011883972941371242354544773427461451983076687172335288474134737150563349929598365091185906691" }}, + {{ "2.25", "-1.238627616224096475286573358483115818987811679840895892063010057942989763968416082248247538779346115" }}, + {{ "2.28125", "-1.162361144121629479886631062456510653121514437736910570208484412489182649570861593071569298439919991" }}, + {{ "2.3125", "-1.091442725473163592445273166049218471062020679322657236270267019564600575624640388147984118518979059" }}, + {{ "2.34375", "-1.025203931548868392935198625444103909279764848147237361743751176005185409221197679274034521026108332" }}, + {{ "2.375", "-0.9630789471610371325783309326887526239686440615099207880230611368370468000350460791927023591069451265" }}, + {{ "2.40625", "-0.9045853091742213054875350240709441597937968403208608690036487459318455608785453421438664490396695609" }}, + {{ "2.4375", "-0.8493088059488314622450104194218363224080665638942044768228802750401486144919082454646163741529209686" }}, + {{ "2.46875", "-0.7968915235352686521345041809817019192899787435677815043081356746793473472915009329509869865385574704" }}, + {{ "2.5", "-0.747022297238660279355352687825274557904116956883011279066593089700271855760843718388592769933778409" }}, + {{ "2.53125", "-0.699429020084844342139783831016239425344370000759297142831905446726651787263273111657622358057530982" }}, + {{ "2.5625", "-0.653872397910572369605836837404416068498526729423046632151562590225826018439381877458767572737519508" }}, + {{ "2.59375", "-0.6101408409895599924272199138429116429964861640554001463611527892708422318404310839955568952517348978" }}, + {{ "2.625", "-0.5680462555551780726648895974757705443146437970424414412380682777625097984947690751561280498460825515" }}, + {{ "2.65625", "-0.5274205529869757121326571336563206310413652365485599902702063856643631953989601868253259786432770197" }}, + {{ "2.6875", "-0.4881127351190876547388242189029165584838796506348536005759885166591812246270986452391896414818116207" }}, + {{ "2.71875", "-0.4499864448356251166356611982487791354890745233650543094554613558499691453012194865420102877343872536" }}, + {{ "2.75", "-0.412917894484932487763966873261129123736255820362062889934249403216388494265361969753200463293305801" }}, + {{ "2.78125", "-0.3767941025635464453019403649599866905758314392515266200296815335892123350214817069316692446879993786" }}, + {{ "2.8125", "-0.3415113829599005939054709337126887266408130303329754956325710946559071503247227755879401227074384719" }}, + {{ "2.84375", "-0.3069740418053874743538801719778118186539092328300496832334808000582741898558068313989599567333495833" }}, + {{ "2.875", "-0.2730932453907306446782089914481699536905769611886147850801712661656164014954781669815730570254890551" }}, + {{ "2.90625", "-0.2397860292133634315864717364763276794949749917725083450148739709007738169658284872978100162537831057" }}, + {{ "2.9375", "-0.2069744234334290889140606202259876249518274239071734165293810142417092926391409078539182667795178826" }}, + {{ "2.96875", "-0.1745846741378176862031217701953393007964354401947395498383109594878301292911980508212117939922029155" }}, + {{ "3", "-0.1425465430742778052956354105339134932260922849018046476332389766888585952215385380591060583477669114" }}, + {{ "3.03125", "-0.1107926710961848652307179061543482824777047419183290635786540267776792824053626901819122659270065422" }}, + {{ "3.0625", "-0.07925799258597813975964847855303205226643624625818783981886842299834648957527837719024324414633813629" }}, + {{ "3.09375", "-0.04787918970239737242913390208792864526960233706882073548585416320272138422285616307162127608218497512" }}, + {{ "3.125", "-0.01659417649935840190191646601956655481659118246051776036792478758448298530865094236374141834995963483" }}, + {{ "3.15625", "0.01465839615112051363829193218735346545420611046761168233490628016451488745447998876530695315188732072" }}, + {{ "3.1875", "0.04593962329265888212191655478619122278727029224118607262776824432506068644004151566997697327162767079" }}, + {{ "3.21875", "0.07731082437922182842323045510047455560710445548270932232603347976675416898602720984389229982663062937" }}, + {{ "3.25", "0.1088340255133297195139603974000083015109646348076838424061656004036607221464457317348103204356071731" }}, + {{ "3.28125", "0.1405724535178196442425946789234394740490046721659763531803771463602023716095051057689530418533761391" }}, + {{ "3.3125", "0.172591050272744891901962315250310519786980119755314731828011976218754514667360156546007027602360458" }}, + {{ "3.34375", "0.2049570163396922924222670027465798026391019465616329916778651389384367221289434591672530287680469817" }}, + {{ "3.375", "0.237740393762143806988724415397077124401764815151774813277613941354927085310634989951327775643776322" }}, + {{ "3.40625", "0.2710146991120596316784994914008470605846614604634004480958302230976152416477575814862222371539690966" }}, + {{ "3.4375", "0.3048576194048116313509686061976383012732471442214687629070980813100980504220010433668547826451536192" }}, + {{ "3.46875", "0.33935178550149794902043849733017382894738729159656755127388089028458110314950118486374283672385814" }}, + {{ "3.5", "0.3745856401585946663305125799891473884508822842892592306930231225774355972615263725457922224498281269" }}, + {{ "3.53125", "0.4106544211005646795132687105613188412302653916099336518744517138690111552283413041415216571077234329" }}, + {{ "3.5625", "0.447661283553583556404846819303519593092219301719424669894622854440119111664920988209774876249304265" }}, + {{ "3.59375", "0.4857185918149514991806435613800961704649349211376530235980832426061445834319868210377502054789684188" }}, + {{ "3.625", "0.5249494159434426029201266393240939090334746308513972623727472919160131375298663507047002581644827389" }}, + {{ "3.65625", "0.5654892779403682511970427653303379875705726194565986095362182202060326386665976843463927284690694492" }}, + {{ "3.6875", "0.6074882023842700195137806696254362966726637333828709216522375901698082716779542882925451551904376524" }}, + {{ "3.71875", "0.6511131401046877694771154604832169765858772246556092408841970307496747807017677126165226354908150626" }}, + {{ "3.75", "0.6965508511114601330600221624003410002384063251948773727536766307711270568580190864635818668189622464" }}, + {{ "3.78125", "0.7440113559767865266278722337979770721544668975249127911732590346704528413537145792818180362367062195" }}, + {{ "3.8125", "0.7937320950520845038640709755691971987193904745863880210276991068348251595048327258835950484424829585" }}, + {{ "3.84375", "0.8459829748791345210684014414635237310065611239815471815195561711011715779741435605360151278986068963" }}, + {{ "3.875", "0.9010725345768489830226429310383860542057548011724428357500976339946729939388193110037885928433616767" }}, + {{ "3.90625", "0.9593555370605378999830231072930600308342084750238673386763085477722047681353378531697620720257631096" }}, + {{ "3.9375", "1.021242388200347736200680021836703924511025898807046899043703227626470466798902950286611342705663006" }}, + {{ "3.96875", "1.087210922446937924973630130633474302114867753655250594086911814333271884554141747835703519160797518" }}, + {{ "4", "1.157821282349577583137342418267323923119762767367142130084857189358985762063503791325897570132020188" }}, + {{ "4.03125", "1.233734886297294089608083483431716940428204649552146125435266924766182484146724296986257289579785258" }}, + {{ "4.0625", "1.315738861236497278595002752513023767487817470172494220905161864739955592222079472915707284820672627" }}, + {{ "4.09375", "1.404777873409928816791398747372142291632709052730067982243952454765008272213717678329031865335794425" }}, + {{ "4.125", "1.501996112821481350670183703711495663471610930233216088609964712367465201389736354667815373825067405" }}, + {{ "4.15625", "1.608793425833300449400383022559449738336897468383397721431496100147808519893555398680197430417094739" }}, + {{ "4.1875", "1.726901492741173774258474522465444605840834193796631414995320087774658896048364103982815258692096685" }}, + {{ "4.21875", "1.858488933532261262387603943116424040560957193049648082245398381173590809878153982869279424951736518" }}, + {{ "4.25", "2.006309027858059435312199733843025004203991000201116744630971025635743461495678364523854925961565933" }}, + {{ "4.28125", "2.173911671176453464233801926617652208987805422324233358984523813313677124319401603031463553334586795" }}, + {{ "4.3125", "2.365954706436810886261405424430153147538433069393544616996159851851045098884294543485330531184033036" }}, + {{ "4.34375", "2.58867360110912318951821732893635523217217883697807084314676743075156168098379747192932679404932885" }}, + {{ "4.375", "2.850612135014197347464512007371469511624647336547380863597026522958389351638925329325864211361675359" }}, + {{ "4.40625", "3.163800603288976619542297558662099459127776345948257172928079751633780670148333702513937775996967237" }}, + {{ "4.4375", "3.545737656638732611056781822478653525618506322500845353570490033964184425114602742381228738013800916" }}, + {{ "4.46875", "4.022897320897881433471367965265766624497222626661161034375557752511167850308209715183529923181209519" }}, + {{ "4.5", "4.63733205455118446831908669495962673002033167604849908135592490784364853630436659035964429989580423" }}, + {{ "4.53125", "5.460110732358225081268571201584576241967507554680233568022847841671382048904153089722943992228366072" }}, + {{ "4.5625", "6.621566538917184779658822397475662809951450423939232173471067230932326374886115835513736745573657993" }}, + {{ "4.59375", "8.389349373172668043480112406855801804399985563752529469857319424831372393351619823015010870227400011" }}, + {{ "4.625", "11.41394586984414667039249686700424655784704375419079662399301751232175345550471908433956600220150528" }}, + {{ "4.65625", "17.794217921195291872116110930917322871062931030345133311457707064544221956249568351463091932558272" }}, + {{ "4.6875", "40.17012705640036449304190879290789586501901676251470634007061519017512737181345480527620292167336129" }}, + {{ "4.71875", "-157.2053810419425516610333761767147984621064081691004376958977511691902151494982722512124394464246881" }}, + {{ "4.75", "-26.57541423100021444925624133456621507049828719711987551420375127874685894467704404079281767156965171" }}, + {{ "4.78125", "-14.49904303397407169401387138739025359024482851876427547784737429808056788404653273313794074954104547" }}, + {{ "4.8125", "-9.955517692663199659497301146983549868138803040917546840671025802878897403111578981570237166977305366" }}, + {{ "4.84375", "-7.568770928466597669950125714728032038595443682400782384350047230172533622281584347829485301888539665" }}, + {{ "4.875", "-6.095345265174791895543529207308251915058396610943153120402963827367536675687235397631104150517714925" }}, + {{ "4.90625", "-5.093551747761417849838605582864480592041118085930024194611183352044275362666663197560756285563557591" }}, + {{ "4.9375", "-4.366960809832423113382187614785174399552256061595826665894310062349100292377458713017173941901099366" }}, + {{ "4.96875", "-3.814918596744426621193354615307784649480559936141816068738250826073519922812423391628708426424484949" }}, + {{ "5", "-3.380515006246585636982705879447343908709569208285459877176820980918346010201206056831791856009410428" }}, + {{ "5.03125", "-3.029148102302771164961521436423971160566131129828714146460894246137584114582867735365596418294127015" }}, + {{ "5.0625", "-2.73856823245603647865430226656274757425295307326689315789016177502179223572750955725123296691662252" }}, + {{ "5.09375", "-2.493817050876063510228483889992811590654110757263765873027034424090589388194896708294715609776449821" }}, + {{ "5.125", "-2.284466361999853132376034939699606124682746442696980078901017290742647881722505799438755300967817548" }}, + {{ "5.15625", "-2.103023353734157432798966856819893312894278382156270431204069828145019096032929826221618815522735662" }}, + {{ "5.1875", "-1.94396519241478443283285298645374010314101176847753574637302261542129293949555826361500398886874374" }}, + {{ "5.21875", "-1.803131092461690600361529359360266463729989122374270260332052248390551413451160551386405337128358437" }}, + {{ "5.25", "-1.677326406624389127684834446781355734878514221167662440011355600468562011653802826535309338734910053" }}, + {{ "5.28125", "-1.564057206075927617852462348582481289639348906743456817576975327632362277790709160010002260498590699" }}, + {{ "5.3125", "-1.461347784441303570775301256747389266430752496556055422309798378517676612642129660840051802732712867" }}, + {{ "5.34375", "-1.36761235448791393113713404156603997628029078648313063442112198771680848353561063900933679869893461" }}, + {{ "5.375", "-1.281563046345464215429873432637423222317866003116950751512613373376845314748305445490135781753417754" }}, + {{ "5.40625", "-1.202142762311081825673780483344209940977316276937937096782702116019344314429792428912212274465011549" }}, + {{ "5.4375", "-1.128475389186388730418668294914420100814289081230956940736485357975544285270667364906582995184004442" }}, + {{ "5.46875", "-1.059828347715565927266867602143137996921061876523369816266086983272908895834550263458873978282357056" }}, + {{ "5.5", "-0.9955840522138850177019161740702867286905993509040201421089147368547994233084178348523042915084083077" }}, + {{ "5.53125", "-0.9352178996735373313249149491276249977722839556692437323635652451207536878974422360418217978053551773" }}, + {{ "5.5625", "-0.8782811077026627420028846442823333510762218192932291958379466783448865095622083395150126065512344446" }}, + {{ "5.59375", "-0.8243871973186229222115460053416379931615277523370335469512772188350449840600638037662602397836368723" }}, + {{ "5.625", "-0.7732012463758734614771474685457909254527078194270700631060606366411896649393019485319264721701600447" }}, + {{ "5.65625", "-0.7244312708999757737148502388902211557937330882505616499576249426224616653330080051888518816616123148" }}, + {{ "5.6875", "-0.6778212563139696041943536024958433042316769928076303165171422834039846729764625273526488517789737417" }}, + {{ "5.71875", "-0.6331454792161440424929262529011204753164261484247750443857435235991899745283883164285814469564729784" }}, + {{ "5.75", "-0.5902038468644901054170195032663081108054249240846444267071062035473153343668376567479794165486184472" }}, + {{ "5.78125", "-0.5488180452487470465583585186996023704202388711137425402809495353782052794835324270116435144444853907" }}, + {{ "5.8125", "-0.5088283340526268433264568968479225952416460593340160732760808861658301198202358775409378607410253813" }}, + {{ "5.84375", "-0.4700908624280941936361204610007198415053847982327139590868905985009927783431252538270334618349713453" }}, + {{ "5.875", "-0.4324754064907757695440115128522408464584984965503283137576460100497915888775090560945910034482914049" }}, + {{ "5.90625", "-0.3958634500577715728387322802090283590444850041488349012771936138475077409268246305105488709941047507" }}, + {{ "5.9375", "-0.3601465460097104261765989532960199175446047549989388477273964911510226366930877544365028188123550406" }}, + {{ "5.96875", "-0.3252249079465421281971924062604461228563045080514509080291865924060718896122952297947720584304400305" }}, + {{ "6", "-0.2910061913847491570536995888681755428311555709123391316088271933046559131122021519996248059475229616" }}, + {{ "6.03125", "-0.2574044312501190948926553260844066507272665964422420930835303888833069876363053415593229084989769505" }}, + {{ "6.0625", "-0.2243391083295019990486082083153394557139168759436924449745473819036543999446390847474833972561431122" }}, + {{ "6.09375", "-0.1917343220126000636733861789852210342976612418141698349764104452472624060435608559813294673409175422" }}, + {{ "6.125", "-0.1595180503486741129487427411798597329274963598657430717585348638114328150730071113710855848882228728" }}, + {{ "6.15625", "-0.1276214813658537291522157530092700353508309312306960197241502999632222071779029887930485312029959035" }}, + {{ "6.1875", "-0.09597840190639155007190320592294119000151190572960121328263061886000450929267149036536453259308092125" }}, + {{ "6.21875", "-0.06452463203653075216342354397349405171379838323909874171208799994716724111404978040328803565744248937" }}, + {{ "6.25", "-0.03319749448301144438419631194317525127766038457693080701966081495473675499225984399367237591921526005" }}, + {{ "6.28125", "-0.001935309595765553843691829525274435788517976054625627169224279956186864996201309127614969112751901202" }}, + {{ "6.3125", "0.02932309291350979792274199376680897224174579057648744678958323756547521586508413864276599103614351545" }}, + {{ "6.34375", "0.06063885372047505801221326406404454670246033034497805406862823133882341608599003383282431176702261307" }}, + {{ "6.375", "0.09207356314350050835492397132807778236841887606137324897895572241559097713132233298612222140840431269" }}, + {{ "6.40625", "0.1236897479096077296070838372979705928368188283231838414804934929274025398571452124588393065510099759" }}, + {{ "6.4375", "0.1555513736514298191439929689618245053471522825437403514671018199418895089031472964835239198291348668" }}, + {{ "6.46875", "0.1877243718114725376401948692378642961122451437059168414418744613043681130520375192781612678122611322" }}, + {{ "6.5", "0.220277200345896811825735903245910395013134783433298671312565971040207859095962733489570927809983752" }}, + {{ "6.53125", "0.253281448628424489171015810263074415662213222146436493340123226398154356922736152388141063544543841" }}, + {{ "6.5625", "0.2868124983022992902396435016696204994189572656467726352599962917225918966603261177449285587256173481" }}, + {{ "6.59375", "0.3209502535782458942725336084114371332732723992168430541003499245591367871623197594684565991267905584" }}, + {{ "6.625", "0.3557799567143647005420612267605866339037398845912245431900523492992941964222774204935357299525662811" }}, + {{ "6.65625", "0.3913931072527633586303310805574337028074307951034635414359349547707586122479246892158861767238081689" }}, + {{ "6.6875", "0.4278885071761893999613016206982314187458164558702387841850210320754507932238151571774989545334487634" }}, + {{ "6.71875", "0.4653734586819128141559933341200671578345456984030117446615279672146457039797505409854792515433603876" }}, + {{ "6.75", "0.5039651470083475548132524571742890116543823430974166616625221219450482100216791892806202009417424483" }}, + {{ "6.78125", "0.5437922480355643338730870787135605883829637094412174029296025101763018004204025974330398781596165429" }}, + {{ "6.8125", "0.5849968096716556782374159174641655681779685895667304240747256104820508784969531169383146463204412289" }}, + {{ "6.84375", "0.6277364679474334892591612082171255002710958195004825881252644517358490289176441185242244713866378973" }}, + {{ "6.875", "0.6721870741034611638659173114401257239025537597591200195749563598359978601937626091399638175089362186" }}, + {{ "6.90625", "0.7185458288995548400076077740862700950460682676000352992576300205153430366069275776925317595307700138" }}, + {{ "6.9375", "0.7670350464671162556530262845461572442649216262010355745804068537455730294466119988902478588983034749" }}, + {{ "6.96875", "0.8179067044246350052260597321820256016080683284701549230268748786223049718597359248253027839270497755" }}, + {{ "7", "0.8714479827243187364564508896003135663222034245984200644480154523301674476556679351044748556811165168" }}, + {{ "7.03125", "0.927988055100702558366453168987743089267307369461721117972360539733706484657902890137954063374826404" }}, + {{ "7.0625", "0.9879064802291251594676053789880311203133455080943572829265181459625625927973428370265184881799942024" }}, + {{ "7.09375", "1.0516436537462216418830263449985522705286903110788757629051396054699693751826899237943523838887297" }}, + {{ "7.125", "1.119713940340697920929231941973033073135897434271449197914919579212768620587877263960959541708252549" }}, + {{ "7.15625", "1.192722326901007588684149485242155872646533354464514409876904886587006629927655098723914331692457874" }}, + {{ "7.1875", "1.271385753083766195102512866837447084316821755807112034055075019301218550802923593730276046614253933" }}, + {{ "7.21875", "1.356560730687106090381626490498188582130942795512557181635747233593968595718598671759051546605979157" }}, + {{ "7.25", "1.449279530126825400966804908182545262594041927922324311633865090981669827371184783228521282728877249" }}, + {{ "7.28125", "1.550798206734497978345598394969907597227586253061565831974177990152095709794984147425013361851865459" }}, + {{ "7.3125", "1.662661250535958572647253880444919849918733690439628459569418630367100238120581497993662350014826086" }}, + {{ "7.34375", "1.78678998697496418766617671089138013384203233815466866101103271149031802024685694556034074365409757" }}, + {{ "7.375", "1.925605576103531021088436315604614476223254075602410795428544750301783382496712246458936951616523844" }}, + {{ "7.40625", "2.082203514638078116771326575602059859463528643293617740928645387731580498162533103205305011512631601" }}, + {{ "7.4375", "2.26060669237264261355866723509904048590096081733761353611694012356866351200745710198451308329107618" }}, + {{ "7.46875", "2.466141609729379985621243345839389610788373993111041429799962056660510586368685947727836988290301937" }}, + {{ "7.5", "2.706013866772690776762802272387995008883446304522264964682388787620940583840910641036913840080466461" }}, + {{ "7.53125", "2.990217991868365275378986251269668199642886675694545360724616292050097614350992705530127905271866877" }}, + {{ "7.5625", "3.333032524336291185691514966848310245587002670642998146766838315216031204958906362527023258344720302" }}, + {{ "7.59375", "3.755592314437586774843968169016218401146579356484719112952387050721790775719524338750656820475167322" }}, + {{ "7.625", "4.290567124941375634141691032410770755182292184491365711713765284134592087921445364428118108025228059" }}, + {{ "7.65625", "4.991276730757292357917427430609014256293569739250152073504758948209194194425629988371488577185989884" }}, + {{ "7.6875", "5.9510718925579227833281678276540391546652969268664831508775318977823975271243707799244732578159289" }}, + {{ "7.71875", "7.349587230185289251288167334999299680627536804325241700547934306594013397091284138506685042660382893" }}, + {{ "7.75", "9.582397403456211211397313849974932847186773522851876679318331037683816539880381009086487008735246101" }}, + {{ "7.78125", "13.72492306901017608779850845108579464520662673186624419937919970195919428249551440291202224739747059" }}, + {{ "7.8125", "24.09322543772519084215097143980037097594901385135011887012038200799428585198794379628997732285582328" }}, + {{ "7.84375", "97.73268930511967729279698949083284985794762903146492273796908122393941623833579266193628175149777252" }}, + {{ "7.875", "-47.57043136522765090736927872199715977332175052521738553413789183297556632881030788665564177584345509" }}, + {{ "7.90625", "-19.11460505409424788533123395282424237931209756369617281068252559403871558997768678144456749005346186" }}, + {{ "7.9375", "-11.94556191307435573940630678240021478719574633441063345522218692801937432207824662871635357235633214" }}, + {{ "7.96875", "-8.674912622365588398920385347547421582720453172032529527100491584226967033946983107374195473719464544" }}, + {{ "8", "-6.799711455220378699925262759608633364881412661473712848121891484119304982720857546088989511220313601" }}, + {{ "8.03125", "-5.581950808689684669549294209348398629337304002995630540331278821921778288507014685935916701606576575" }}, + {{ "8.0625", "-4.726032195156837427410372612416284237028321048638455837876262548466898310633589798461547191163836986" }}, + {{ "8.09375", "-4.090461187975555242897409987452358342061343516721018283559611963305885456193756951211377465919516297" }}, + {{ "8.125", "-3.599001897974260972151248247566727216299014591900000335282979733754229851045581086180509810930082767" }}, + {{ "8.15625", "-3.206943184854794792051938572955176223102804950834430935020353335808782541779058955201736266932317623" }}, + {{ "8.1875", "-2.886329592416760158849088002905458575851623094189615497250550481681316568867901585210424096370674517" }}, + {{ "8.21875", "-2.618783945156319374614290552008768448544289531418583013216952580114253625700948540561589098351543348" }}, + {{ "8.25", "-2.391728174447109499408796092049518207948088283366738019362364536579358984891061627461448588900266354" }}, + {{ "8.28125", "-2.196262571237231366422169733787602194377870425422442983742466664711276453593062387209663908411122531" }}, + {{ "8.3125", "-2.025912262702788461190762240682190168816613310552683831653429045356666462021227127736084042613847923" }}, + {{ "8.34375", "-1.875853575963005310284960792984729880727224645450131943927210730483841090952411053279594957173517387" }}, + {{ "8.375", "-1.74241880761627240539700340437602803932808901813845968268891377391077356174950266498464542879686652" }}, + {{ "8.40625", "-1.622769124048113033597644536164719722449235338830292053581380926565132897863391794369515824501033615" }}, + {{ "8.4375", "-1.514672563181530134110926429438194143845293739750523302549165608155316405124742878421871789886842147" }}, + {{ "8.46875", "-1.416349739641873214089748540260482127074454913435673678582846741597865860350934848935327297727726336" }}, + {{ "8.5", "-1.326364327785606923837177509628989183019847616858933039728626565320594601352898256466729337047543442" }}, + {{ "8.53125", "-1.243543859514378322699255610900405730249411506966951588519354941299030591219071989214839064576899506" }}, + {{ "8.5625", "-1.166921477042600182902656425322990210134485019242760863805503078706720819497128002394896106356209544" }}, + {{ "8.59375", "-1.095692443843841888393214442111438580869887527193049760552789795233066505667689248095554577112371625" }}, + {{ "8.625", "-1.029181226242794530622671562005776602295969084821805226400002870767989174122034536280082461534287795" }}, + {{ "8.65625", "-0.9668162629797675117200288525867759956705289684684092618655305272884560415249588622588640534660859208" }}, + {{ "8.6875", "-0.9081104046373177832576347663891532295331575111187881417687389316634049160994876797510769206182893432" }}, + {{ "8.71875", "-0.8526455881926773939956486059670750827771160223765816890633669305249823793389660138647216198961396045" }}, + {{ "8.75", "-0.8000607122131663748996935033554250873516322431753295881939448427095672520914736920285067785494755945" }}, + {{ "8.78125", "-0.7500419570576314664068876238355166376078921127752475362685197014336164568978380363973382424380027378" }}, + {{ "8.8125", "-0.7023149914660190721137439943663886714896255005161995584377885528996116609571672651781263426423264383" }}, + {{ "8.84375", "-0.6566386479456336287953742502996364274330999062289317807304964691314686325574451710087769117377447232" }}, + {{ "8.875", "-0.6127997515327654285376783646363991279819055057055158641281938301880811035156798875165049539694804864" }}, + {{ "8.90625", "-0.5706088613603129182915651449940477497513792905530365057563881633464714239146849295760180740616051507" }}, + {{ "8.9375", "-0.529896739873168003806242065594283411489762262385879653776325422716635759568492302090915293632301029" }}, + {{ "8.96875", "-0.4905114059515517049978410600006085544703557897386518199219966407731976599471950962402695227799723485" }}, + {{ "9", "-0.4523156594418098405903708757987855343087169256619843288072463344895615552699928891423222740611696987" }}, + {{ "9.03125", "-0.4151849883541607117552210974950947708368354992200219503945689498048994961045141832240492234717107402" }}, + {{ "9.0625", "-0.3790057881989822857530457874776947516302198077664862408128815699029163107706671425087481058924528226" }}, + {{ "9.09375", "-0.3436738369929040836550521796260295565231979408984456062837271050291411394204206333260572683795806063" }}, + {{ "9.125", "-0.3090929803907614767471346771315481283472474354946281905565967857578879461207205702332049986857635056" }}, + {{ "9.15625", "-0.2751739899376987485248300510983424723605373451217689431344224438486165931202115441514245211478398115" }}, + {{ "9.1875", "-0.2418335641420615678638155264698574025131647248333694816193249713183100110082265076470052022707012095" }}, + {{ "9.21875", "-0.2089934473583106794872121428783074116994340488341375724854578952783525682316496422613143306038638671" }}, + {{ "9.25", "-0.1765796456511299761112751840598406521389487242985432214413528930195762314982591148356765022144220392" }}, + {{ "9.28125", "-0.144521722122150591814619269577170465800891448238859437753351534510505894724788264050561053752147101" }}, + {{ "9.3125", "-0.1127521567973819422597203631074129348120757432615503831725905368424112610292538623181492998345439551" }}, + {{ "9.34375", "-0.08120575823178342176032872038448411443172784451696952348584885928982452335749552547386985037617069992" }}, + {{ "9.375", "-0.0498191155899860392003104787951054631853528180570175470879940653716436714322811615959161544657494618" }}, + {{ "9.40625", "-0.01853008118625405320915271202115144102822290582324439033642733950763784110773883754760179758258022532" }}, + {{ "9.4375", "0.01272272563027105977935573889462983744829956962204063464126832673322950722546841176709360279348538747" }}, + {{ "9.46875", "0.04400040173584953885682440835958114627885199630660893827828903912727543614728912707303196060753625141" }}, + {{ "9.5", "0.07536423875739405740654014205323665789342966267450384287846707728875924157814476147945907817392192786" }}, + {{ "9.53125", "0.1068762048461025163674352287858142449224256724379234993543813605972685100190359293029737215855453465" }}, + {{ "9.5625", "0.1385994377761661718602480104778901941178589868631124656851160671189176086579048746331765092114253163" }}, + {{ "9.59375", "0.1705987577719601866335639057437200427987763331813918550294340474134857881430332967127222805799022305" }}, + {{ "9.625", "0.2029412090417411123603662227278784038776298381618810811646084653751029723759416476460088872408054991" }}, + {{ "9.65625", "0.2356966398441474632357392833080328068352054698543206659897268100728097017667724684606559049124154157" }}, + {{ "9.6875", "0.268938332074403309291166325486527607211725274017137932139784676368590535825858340593417854926297648" }}, + {{ "9.71875", "0.3027436928841933821970886411755473788376234496119460628913545818204169198969541686968930178216130025" }}, + {{ "9.75", "0.3371950228159297335621484819773554194812863370480952763499236064163820830033268339692324715894157813" }}, + {{ "9.78125", "0.3723803774359345699506506000690612357176932379964207743390433297005778841484733220050565284302113607" }}, + {{ "9.8125", "0.4083945426204256871181400863951603330453056915705065091908373104020696107020950522244595815242992" }}, + {{ "9.84375", "0.4453401476523343154827952361952568691359033281221121303793343966901885521315031273219697042193257942" }}, + {{ "9.875", "0.4833289453490298299990038076226424305503958067355696981733291906588949898848660168661363237230401676" }}, + {{ "9.90625", "0.5224832948561672053074357426518017813969502851835052528668887798173320745102979706674984553747785107" }}, + {{ "9.9375", "0.5629378909036186388354128640753191217895638800506841967942363059454826038558876839732857927717227769" }}, + {{ "9.96875", "0.6048417937509008993401606503437317082375426212574423350794174057182764889826011397690814642006452007" }}, + {{ "10", "0.6483608274590866712591249330098086768168743429837249756336279673958556003746239008717172062971522862" }}, + {{ "10.03125", "0.6936804314743542712398847790886887683057558913351293442530262309817850224201884209136086813403394689" }}, + {{ "10.0625", "0.7410090731101333158449425961247175839017373828496178608167740610459452518219259199024083200316084101" }}, + {{ "10.09375", "0.7905823581871925973468103245168030277845433796367670128316098222165598426689171297882306893568062531" }}, + {{ "10.125", "0.8426680163689236497241316220032744251657095955743734411730267063148126128540903336099720150350195161" }}, + {{ "10.15625", "0.8975719901861101829801016952033465293839624897512338971033212391126217276476390113488747550991133784" }}, + {{ "10.1875", "0.9556459274758633915064588099748061258315512098776637126437164255246444193412583209025710708854064641" }}, + {{ "10.21875", "1.017296473311965646505591388794303117791831049823203228782533350726187433458132860834038283268836837" }}, + {{ "10.25", "1.082996890215945275135930985916637983213229101767681562664207604721345006616414244816945101012068962" }}, + {{ "10.28125", "1.153301720414501166084164165377670663086784905305525053523750216145961391216299317767459210812275763" }}, + {{ "10.3125", "1.228865465058231603544476514726969780448778330773071834149679410133713041325810373844792660869193974" }}, + {{ "10.34375", "1.310466629156747359552320115718026861262813059499884349607868463460206624928464716803324337065850131" }}, + {{ "10.375", "1.399039024262115717131604647733708995170160567832938194238903453989697561972061091597355404503662754" }}, + {{ "10.40625", "1.49571302349195916111981867105861656396166182988283681852423319036111614206596318006249059781485835" }}, + {{ "10.4375", "1.601870670512520509271426433671643695090231605946938642547694243879213679699085414650549829075718711" }}, + {{ "10.46875", "1.719220395521651499721208794808194478968865549194510942718291121399341439043920644901884496910696737" }}, + {{ "10.5", "1.849899993421927279907583573513910565419553685959044018741794327382830123593588324994882461965573398" }}, + {{ "10.53125", "1.996621179417850643664093294309064624983038139124591902589207528735600835709855269195187933895652101" }}, + {{ "10.5625", "2.162876723677546330469959787105963848827689014945066557592989408260164364548287694286197662196239537" }}, + {{ "10.59375", "2.3532442330793790868766441879841993750130572630209439743618231460831573709883106394866434440837641" }}, + {{ "10.625", "2.573843631271674362526537866893410697197766596999920083319154750577002457483161716337803596844925106" }}, + {{ "10.65625", "2.833047421190427952095570132770964879184235914846751261896726812931990128759669900544999535061769791" }}, + {{ "10.6875", "3.142623220176844496098570587446827716363816198180813628746017544330426339542323699691642256030772053" }}, + {{ "10.71875", "3.519650155321593637030342256680131753850278370827948246193900683195030354927519452141570420409057437" }}, + {{ "10.75", "3.989898450288877172272878730129464264004901452428968181149190336688176169073686050444717716156454253" }}, + {{ "10.78125", "4.594165609870243515783279467995060486532380531283432068617070247011706442921648714627407953983920726" }}, + {{ "10.8125", "5.401101953070107889048337369479695723086844105989269027204537226522869955593746957868263836003479647" }}, + {{ "10.84375", "6.535875415517406207251199308597767679104658091064327476058394143828942638073632382427758536504917985" }}, + {{ "10.875", "8.253411766339305537723460693388679535974907155823982004597806731192500887738499761977958603336992426" }}, + {{ "10.90625", "11.16537284500979684723686544686940420453225367789354062936636940962591367864691678374577954865828186" }}, + {{ "10.9375", "17.1999620041711094734838984205883317149769089588687370821690524219299315809266573264745104659869829" }}, + {{ "10.96875", "37.27070620721793879698276661020742630154681506539144657714408230209752760393928366701053772541231071" }}, + {{ "11", "-225.9508464541951420257954832034531539516575098851311946310945881123661134104031654779989090875181672" }}, + {{ "11.03125", "-28.01838123473997016830887833476199550560697066011986939559933525309909705318537405182199378012840027" }}, + {{ "11.0625", "-14.91962506867234581945151895985710289930225918712794589354339983163930894702818997439864076091931126" }}, + {{ "11.09375", "-10.15307233756673521728139815893864848321827456537331024001764086854554203725293661816927668294489745" }}, + {{ "11.125", "-7.683249828520493578856827081745572284486853920128557099054138395954224416767780846216824234128741871" }}, + {{ "11.15625", "-6.170065007339837672004969274368706522165797321914087418607341946608032746141308987068347258026539261" }}, + {{ "11.1875", "-5.146216397928971013498356330072590228022047015189051411856482418633925739244947714746552179251733944" }}, + {{ "11.21875", "-4.406134215367990783634732996136714284665546485639321948525683144032506137127272195504713779988841399" }}, + {{ "11.25", "-3.845243526046256589195292015214843119217023542577367989034898325348687250589462590349993156554307721" }}, + {{ "11.28125", "-3.404725196340913894767892653680241020178288686778598191582702368768260415894176917496336011269246961" }}, + {{ "11.3125", "-3.048957435167265586183006322737827462691340358802500561060757089057213237102895081676386924312658609" }}, + {{ "11.34375", "-2.755105539085522466956356685286240136460553349428076133380205505661678601069631697225730693586354901" }}, + {{ "11.375", "-2.507856046343293846165268336837981024254374791359792671451310995149841786950224129840033693800933455" }}, + {{ "11.40625", "-2.296555085357014688557714000971300925194148838031073606034513705752180239656706450912207637184212202" }}, + {{ "11.4375", "-2.113560858723099424307258719446955475134681339177645144130883477669849838830392714536871823793018366" }}, + {{ "11.46875", "-1.953248965442351814769641861822757418968218808226145477990020040801933787597505710461744957513141637" }}, + {{ "11.5", "-1.811387450326824859772397320474032833639713335926721521705076560469479148263546424971811321096648723" }}, + {{ "11.53125", "-1.684730597525019137697751820797269016453098562968854704274935631922618587469362028272636692210544871" }}, + {{ "11.5625", "-1.570747064811472615228088301480862011854346986220267355439332676174065617757164643849543074172144195" }}, + {{ "11.59375", "-1.467433230574720919411941987695161181959171583863783447843463212366085434611122065381627004242638947" }}, + {{ "11.625", "-1.373182138457896453349468046455100980035443259553659899722906361390876088856423969181083376455705666" }}, + {{ "11.65625", "-1.286689630920366616376314221177221139006716016538511655589760746532540573609680625603641074608188434" }}, + {{ "11.6875", "-1.206885914221201720054271911345572193315238450358663840449617121968073512366326525649980278803416278" }}, + {{ "11.71875", "-1.132884861825656481798873135046969210301345541577298019300751660619960162890235612177970957925478595" }}, + {{ "11.75", "-1.063945912486004409710559363045985530861938320222047288703751234746510874929602501339045816423036172" }}, + {{ "11.78125", "-0.9994450559333915167440624304322053019403928948191033206551515159313846021422418864273459645373449009" }}, + {{ "11.8125", "-0.9388524723222944773205643428254523492068640072627707382490811032852295370278108292005146916272238994" }}, + {{ "11.84375", "-0.881715108900528303919177723946502416645736801861050134491985441499235913287446780705353461545417442" }}, + {{ "11.875", "-0.8276429652929236471146892695710241706925495072977152657326004944101623406458452837545349486881138268" }}, + {{ "11.90625", "-0.7762981960095720820932228114020179373213795483270746275212139165301756520252573166217954465331159458" }}, + {{ "11.9375", "-0.7273863753138267917778418153001732955258816548283145725251801363629114248343367970028832122142992284" }}, + {{ "11.96875", "-0.6806494377457210277597470928336025589584620324058462321470850608946457200573674297093242265437051282" }}, + {{ "12", "-0.6358599286615807924609379429390076061509587586686860914514606814656551214484123291399643068894751555" }}, + {{ "12.03125", "-0.5928162873294508906897144974924364212100987037074180867630829726623330818215300743873013630492129075" }}, + {{ "12.0625", "-0.5513389500434250704976885869765975030435162971228425993732710884431519725994082993307502135366704687" }}, + {{ "12.09375", "-0.5112671090040856778211886692327830312529713244160725823950417285454010972749346501560988873183882094" }}, + {{ "12.125", "-0.472455998959126666328373026314261347130558625459848565935809588092219192527888607849005967299526205" }}, + {{ "12.15625", "-0.4347746110466813389220145482909141465629503223075144609806539759358566301078783883593960376790796208" }}, + {{ "12.1875", "-0.3981037542382981122358374348325646108510087325306228562334315140437947730049798142715674391074029588" }}, + {{ "12.21875", "-0.3623344008952777173267729097645609415931859827734307762367947830110639831467043405387353622176899024" }}, + {{ "12.25", "-0.3273662654331959909797507119051924955282853934206185144087221653583658953364484322496982215172064596" }}, + {{ "12.28125", "-0.2931065748149348906573126400315634011327627839945547849105543140713203189089283254450491988430709458" }}, + {{ "12.3125", "-0.2594689972120933396662267471796226223140842016040887149108653318448105627021634377488137220685751418" }}, + {{ "12.34375", "-0.2263727011714726746425617255174464360665584672063083345910005855017649693977414015628137560181413471" }}, + {{ "12.375", "-0.1937415223592955920421472499371716132396126974936842056246045191659136204224066400221303821918510103" }}, + {{ "12.40625", "-0.1615032187034938758288345646836288312549849485871893783750506125037934982810946747034471565118071181" }}, + {{ "12.4375", "-0.1295887977200466002615144930375243133915724779506460096421464176334192279649808190617654665646655393" }}, + {{ "12.46875", "-0.09793190214949804406939767223801097423536917158984066549241688209747906679339832186909184479038423885" }}, + {{ "12.5", "-0.06646824186327419610199266949441387194390610792357612079517505380578030434009894147743014400122005453" }}, + {{ "12.53125", "-0.03513506141616282076636047393093268566965509833708523530838721391339373252314877573835767237228949322" }}, + {{ "12.5625", "-0.003870633688692445796420680716701608075985971581256241161345780831826430572573689071744247468488929075" }}, + {{ "12.59375", "0.02738622916941998236655243276631287278486472025157424329703232697741123275406245628528750156873296529" }}, + {{ "12.625", "0.05869665578128338112635128913606850911677921227526205464651894469274626817414600063862113806671147531" }}, + {{ "12.65625", "0.09012219459725165729474121609816933257302657281344601700769732387220992191083677289387048548334265912" }}, + {{ "12.6875", "0.1217252999603408610668897042413571531127645503736599822403036205555496676066474076056000689949341066" }}, + {{ "12.71875", "0.1535698333828775342772949638706552097777256705040011551078273258533143177119249497623834514512966756" }}, + {{ "12.75", "0.1857215886751401902594186441708939448272141506734588329272148156845153012668419405756499880982943312" }}, + {{ "12.78125", "0.2182488502657797346752690950871572837813792443000041521932413723748578742375061893600646885986149118" }}, + {{ "12.8125", "0.2512229950428828425999138094132092852018197118941615412720196242900796512859843472371170313836583775" }}, + {{ "12.84375", "0.2847191493692259054394416502657415422614131291273802036428533121457701035912610846112501083132620008" }}, + {{ "12.875", "0.3188169146481101964165914224483354040480603343474688683709071564169780696806924149291320418944830542" }}, + {{ "12.90625", "0.3536011770209831976646321735648611242564793780159081807119024532891168112397727872069370118132852613" }}, + {{ "12.9375", "0.389163019575800390066324389631248715515481435421443727622672043630746566664120384677948936473787333" }}, + {{ "12.96875", "0.4256007589819842824595519481972026675555296385735056063290277948532474177383987445148843331908874667" }}, + {{ "13", "0.4630211329364895955117902835081206683532120959519440470950206693928302579327807145125758116501924079" }}, + {{ "13.03125", "0.5015406704601738993466207755375547536965260852964643732753893793547109382261801451895601761930463122" }}, + {{ "13.0625", "0.5412872842615681585626378992160244527886510964571032692368478641312818490839188830849928560962861538" }}, + {{ "13.09375", "0.5824021335357886328662589223215248727421699777193264549116653046243519880397055116969487363618353957" }}, + {{ "13.125", "0.6250418172930577232327055575810817395750497037126950514585195397519699819130820731538599564259401139" }}, + {{ "13.15625", "0.6693809734298055686754246761212833674742679018564325405072602539903766997859347462285344333571366362" }}, + {{ "13.1875", "0.7156153783773706463324211230116191534127258818669295732823217991324981875804470761472072117982861964" }}, + {{ "13.21875", "0.7639656678174816067986696149135126827704120185065555912507382354963651332883430075609034401555571502" }}, + {{ "13.25", "0.8146818327614344736464451806034453710444224291621571573625236805118070729970340362557654528804594448" }}, + {{ "13.28125", "0.8680486902251570873258425734584921956065820604675624643643164481487468794096033758920520511975882962" }}, + {{ "13.3125", "0.9243925880092635749600582006440809362226783655074073519865821148035556209179629462013383469424274175" }}, + {{ "13.34375", "0.984089684751991735962930471741445607987192320278600727525448404432994693600540790050738561865588772" }}, + {{ "13.375", "1.04757625822842897028900134354672689006793126569323519874122370449523706721491998653522405351511" }}, + {{ "13.40625", "1.115361649708918497565229580465214098442269312226313131576538895853120727413355048723361997440716611" }}, + {{ "13.4375", "1.188044669282090096413968423531415025467187597047077575491037309801518019505454161493737933958668965" }}, + {{ "13.46875", "1.266334595496805761839284321117713547689424188079416196364317291844437171872585239983180116380091394" }}, + {{ "13.5", "1.351078347287010480371085577712699470101212829099407611657174914155576868564657173832374341089513584" }}, + {{ "13.53125", "1.443296057137394170028536177718664041051292527024487177527337760724543655637891131854085251072201818" }}, + {{ "13.5625", "1.544228244055125768572769325179666059641117940456933228593668266762756226316757718141030898582889678" }}, + {{ "13.59375", "1.65539925635608625536146268504299540984757874423396346584219270902415141849546774423536235044651061" }}, + {{ "13.625", "1.778703933748487611100295794480392286774372855795510955005500225382241572963111907877924106343034439" }}, + {{ "13.65625", "1.916528050760659646742064707886848214342582893475968412683323141359371632373241621750396872855231387" }}, + {{ "13.6875", "2.071918975654530318165994049833557729201414960634819277207514404216213840009455116234485076356302166" }}, + {{ "13.71875", "2.248832798150414958768559692131859458258869348641929756045263587943996112471489439485863476093034658" }}, + {{ "13.75", "2.452501131436276534259505261160229408535827308333544989748716942417182101185885609613251793631088723" }}, + {{ "13.78125", "2.689991141885544485574819071146851902487462547699495662222675009146133600868249015967786252574495347" }}, + {{ "13.8125", "2.971088997454883061146937345921981294715821069297105784485484470539822403438727250351950923586461683" }}, + {{ "13.84375", "3.309747852278236334086030022253642441335045150382837946015733966046635972988597769925369044448793434" }}, + {{ "13.875", "3.726571412380592611642200928513525816649689030739311675986112325390668863787780356510815096395312152" }}, + {{ "13.90625", "4.253314099623669334835259848593744934346239237141072606237802004691075608138259425654524049734148683" }}, + {{ "13.9375", "4.941607147834976432334070015221138910450692007921150173618524899066416996751652602822476062787651509" }}, + {{ "13.96875", "5.881399525150031955799636707531603412059246766703476508448423108137501182284498677930575806202198028" }}, + {{ "14", "7.244606616094805116868776904419943839744730261240134752545587919443539234559937291680749763590851956" }}, + {{ "14.03125", "9.406028188605279696133223875198323737712453281000019998207973537233195589286463672078393783342949057" }}, + {{ "14.0625", "13.36790967265482265511197119971831749461310263946778620293662813338523575832270133240885318460296722" }}, + {{ "14.09375", "23.0180098105772480411418077991835591801343058014965291845911306402355660736744079654039102037142972" }}, + {{ "14.125", "82.18587088008837479889498738727608856213126524631858084352266182200806013924238364295643998983071042" }}, + {{ "14.15625", "-52.39613928846073424250555787725052081495348867793023995281290229927733884543365803704289494278819236" }}, + {{ "14.1875", "-19.85087749437963381473636677142019044036915990708056158011806608744982156130940528545579140382954901" }}, + {{ "14.21875", "-12.23024032878110918179097238079573616977352169397336130087278904329232109578073694396971060087189843" }}, + {{ "14.25", "-8.825007825823643194479070661167279551172813025945214108644920017576189426949178857879125100439566237" }}, + {{ "14.28125", "-6.892346926954325909059194856822673062063097995636142714599547668355292064875194893124728097012275365" }}, + {{ "14.3125", "-5.644866498825540128381929944705578552248933555730964244899773528736917184084590171390597212873718595" }}, + {{ "14.34375", "-4.771610252795610046024685797665514766422880378783577882983742818079026166693261845053770481989424557" }}, + {{ "14.375", "-4.125051680440956814255997242162117938555651270642110578618995113301257483035180159821309310658332941" }}, + {{ "14.40625", "-3.626194314229776036712561256911661725676439848577743170654748551410882288678506147976699754338337632" }}, + {{ "14.4375", "-3.228918544653384166822369480885301355908586468628448310353628937744136710166892378083809771029038072" }}, + {{ "14.46875", "-2.904489208401961365438740405970863838028715766433251544998958231462070708355920879083964796103033733" }}, + {{ "14.5", "-2.634069132503832833409607035052858278935807513368801311481801280408668028920599740332367971681453643" }}, + {{ "14.53125", "-2.404794639925577553244012746285864594559572350297129379452932406519481483010765023196033751578709703" }}, + {{ "14.5625", "-2.207581089523679545128355853946391835592464237094323506839360879131859583353800754571132350944473674" }}, + {{ "14.59375", "-2.035829586659772321235017007716845648434117124540496962900856683971781311984497273615528750368081422" }}, + {{ "14.625", "-1.884630768865435904935595378906947231717012177189752377379403964925875302521199447518722408719775981" }}, + {{ "14.65625", "-1.750256190835124208623312849116061326812165846025415986783560739453729962659158203940996884358758139" }}, + {{ "14.6875", "-1.629822991609989147184189043054819627629510818289435539398133590083260226275976603564527843030512624" }}, + {{ "14.71875", "-1.521066667289361457373930052890176846963182405346389200320517277799503677666772192617687500257521097" }}, + {{ "14.75", "-1.42218336083774197380789085745137021789867848279597800468450871698744869740438289092755542692570482" }}, + {{ "14.78125", "-1.331718058572613129017722401996663023341875099157808098995252549045562547044521935057437210333349552" }}, + {{ "14.8125", "-1.248483823169844883793467308858957913772012915051151771810074084965259104516379708093866536649015936" }}, + {{ "14.84375", "-1.171502454280969620050113939757468091964527953537892858826299161314598145955301346129774398985079725" }}, + {{ "14.875", "-1.09996022360423379094065298284739111500559223495806048377446355428125902586706149601540328954397664" }}, + {{ "14.90625", "-1.033174396383465269461739738697259215672589493553897443441659340076220701053186730617856132398548093" }}, + {{ "14.9375", "-0.9705675907155131163149460322607739770705545946870992276893226926978460501228871025636381103213358614" }}, + {{ "14.96875", "-0.9116479124475490508064737825953723368462225788875404013990634500526165327350899245784037598875471869" }}, + {{ "15", "-0.8559934009085187640261927782380296049897864414742962979687446281783012594486541122545103129259226012" }}, + {{ "15.03125", "-0.8032397302332296612432159755337281904284459733163994877022298441144059785603187789136637043263789466" }}, + {{ "15.0625", "-0.7530703960754939484978446924032015414437125508200990314934869704250553438069278960228507610120908637" }}, + {{ "15.09375", "-0.7052088187318415299725928408540094093554358958059088325375638362095004704432693353838375709463129551" }}, + {{ "15.125", "-0.659411937622644225218300893404169827076548649885412227383887901950221923526355502978543776575055119" }}, + {{ "15.15625", "-0.6154649762727536414801474029122625793755198617269250343988631456453788448149731706979351529235579577" }}, + {{ "15.1875", "-0.5731771332183040948793178896118867037269598773610412277642977614409075169432893108977656087532808068" }}, + {{ "15.21875", "-0.5323780107028691176788965668440942781647156607765742951342412648358988559400799809724920990286528734" }}, + {{ "15.25", "-0.4929146351866012621666401573415074523464609163340854530825224584649245974424596583470196176643838565" }}, + {{ "15.28125", "-0.4546489554738299415350063572461193751006928326854122963028434583535719327916356408447934270192962049" }}, + {{ "15.3125", "-0.4174557284251085623680148206370333657407709127949181945517726979253617292255491330234726669774559159" }}, + {{ "15.34375", "-0.3812207207302419203446046603506711987787377766806738457878506795815713138223264722913354548269137032" }}, + {{ "15.375", "-0.3458391695028422582485004568448026536356203654713446806415710694635885346246660520826948870993463705" }}, + {{ "15.40625", "-0.311214455551825073642663079591570618837743590849903018274057606911872122304533000910107606645650336" }}, + {{ "15.4375", "-0.2772569518534830079599506190692912755868921271423525814120233867695893487373304945292237740353757468" }}, + {{ "15.46875", "-0.2438830165543173054192587099181568413614402066070223778896735213919894343566763962867244846621486138" }}, + {{ "15.5", "-0.2110141052012553133863173741408514435037061655011970687100846880180438182550528565062101594891245018" }}, + {{ "15.53125", "-0.1785759811388596991279739233477573236616687666102227187311862264495771634608666297275574790232136991" }}, + {{ "15.5625", "-0.1464980063716879847555275878278898667317766571375499828106145375100216949704230935552550931052323183" }}, + {{ "15.59375", "-0.1147124978452713735943481847220917786442201384229215777788278473922030662630912256721375261600875605" }}, + }}; + + unsigned max_err = 0; + for(unsigned k = 0; k < data.size(); k++) + { + T val = tan(T(data[k][0])); + T e = relative_error(val, T(data[k][1])); + unsigned err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + val = tan(-T(data[k][0])); + e = relative_error(val, T(-T(data[k][1]))); + err = e.template convert_to(); + if(err > max_err) + { + max_err = err; + } + } + std::cout << "Max error was: " << max_err << std::endl; +} + + +int main() +{ +#ifdef TEST_BACKEND + test >(); +#endif +#ifdef TEST_MPF_50 + test(); + test(); +#endif +#ifdef TEST_MPFR_50 + test(); + test(); +#endif +#ifdef TEST_CPP_DEC_FLOAT + test(); + test(); + // Some "peculiar" digit counts which stress our code: + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > >(); + test > > >(); + test > > >(); + // Check low multiprecision digit counts. + test > >(); + test > >(); +#endif + return boost::report_errors(); +} + + + diff --git a/test/test_tanh.cpp b/test/test_tanh.cpp index 18478a7d..04d49f0a 100644 --- a/test/test_tanh.cpp +++ b/test/test_tanh.cpp @@ -47,6 +47,7 @@ template void test() { + std::cout << "Testing type: " << typeid(T).name() << std::endl; static const boost::array data = {{ "0.32137338579537729992840434899278935725496267444911714908205287462634251052210833615032073534299473485492692600156322137421801432333125051088723502425037485776412801577568405892077585206768190530859883094571475323319480739773193974206966728764224286661945738178210577326172938196062277314761537881936346874075881338768208490193827960565412814349738654540520356903367084438822830345189856017860672463017", From dd7ee604313e5a5dbb72023c79e933d6c37912ad Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 Sep 2012 16:47:03 +0000 Subject: [PATCH 237/256] Fix GCC C++11 mode failures. Tidy up TODO list. [SVN r80577] --- doc/multiprecision.qbk | 101 +++++++++--------- .../boost/multiprecision/cpp_dec_float.hpp | 13 ++- include/boost/multiprecision/cpp_int.hpp | 10 +- .../multiprecision/detail/default_ops.hpp | 24 +++++ test/test.hpp | 35 ++++-- test/test_arithmetic.cpp | 18 ++-- 6 files changed, 126 insertions(+), 75 deletions(-) diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 912cd037..b9772383 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -2682,50 +2682,6 @@ code. [section:todo TODO] -Things requested in review: - -* A 2's complement fixed precision int that uses exactly N bits and no more. -* A backend for an overflow aware integers. -* Each back-end should document the requirements it satisfies (not currently scheduled for inclusion: it's -deliberately an implementation detail, and "optional" requirements are optimisations which can't be detected -by the user). -* IIUC convert_to is used to emulate in c++98 compilers C++11 explicit -conversions. Could the explicit conversion operator be added on -compilers supporting it? (Done 2012/09/15). -* The front-end should make the differences between implicit and explicit -construction (Done 2012/09/15). -* The use of bool in template parameters could be improved by the use of -an enum class which will be more explicit. E.g `enum class expression_template {disabled, enabled}; -enum class sign {unsigned, signed};` (Partly done 2012/09/15). -* The ExpresionTemplate parameter could be defaulted to a traits class for more sensible defaults. -* The library interface should use the noexcept (BOOST_NOEXCEPT, ...) -facilities (Done 2012/09/15). -* It is unfortunate that the generic mp_number front end can not make use -contexpr as not all the backends can ensure this (done - we can go quite a way). -* literals: The library doesn't provide some kind of literals. I think that the -mp_number class should provide a way to create literals if the backend -is able to. (Done 2012/09/15). -* The performances of mp_number, false>respect to -float and mp_number, false> and int should be -given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results). -* The documentation should contain Throws specification on the mp_number -and backend requirements operations. (Done 2012/09/15). -* The tutorial should add more examples concerning implicit or explicit -conversions. (Done 2012/09/15). -* The documentation must explain how move semantics helps in this domain -and what the backend needs to do to profit from this optimization. (Done 2012/09/15). -* The rounding applied when converting must be documented. -* cpp_dec_float should round to nearest. -* In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we can optimise and eliminate one more temporary. -* We can reuse temporaries in multiple subtrees (temporary caching). -* Emphasise in the docs that ET's may reorder operations. -* Document why we don't use proto (compile times). -* Document what happens to small fixed precision cpp_int's. -* Should we provide min/max overloads for expression templates? -* Document why we don't abstract out addition/multiplication algorithms etc. - - - More a list of what ['could] be done, rather than what ['should] be done (which may be a much smaller list!). @@ -2736,22 +2692,69 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend. * Add assembly level routines to cpp_int_backend. * Add an all C++ binary floating point type. +* Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it, +the hard part is IO and binary-decimal convertion. +* Should there be a choice of rounding mode (probably MPFR specific)? + +Things requested in review: + +* A 2's complement fixed precision int that uses exactly N bits and no more. +* A backend for an overflow aware integers. +* Each back-end should document the requirements it satisfies (not currently scheduled for inclusion: it's +deliberately an implementation detail, and "optional" requirements are optimisations which can't be detected +by the user). +* The use of bool in template parameters could be improved by the use of +an enum class which will be more explicit. E.g `enum class expression_template {disabled, enabled}; +enum class sign {unsigned, signed};` (Partly done 2012/09/15). +* The ExpresionTemplate parameter could be defaulted to a traits class for more sensible defaults. +* The performances of mp_number, false>respect to +float and mp_number, false> and int should be +given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results). +* The rounding applied when converting must be documented. +* cpp_dec_float should round to nearest. +* In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we can optimise and eliminate one more temporary. +* We can reuse temporaries in multiple subtrees (temporary caching). +* Emphasise in the docs that ET's may reorder operations. +* Document why we don't use proto (compile times). +* Document what happens to small fixed precision cpp_int's. +* Should we provide min/max overloads for expression templates? +* Document why we don't abstract out addition/multiplication algorithms etc. +* IIUC convert_to is used to emulate in c++98 compilers C++11 explicit +conversions. Could the explicit conversion operator be added on +compilers supporting it? (Done 2012/09/15). +* The front-end should make the differences between implicit and explicit +construction (Done 2012/09/15). +* The tutorial should add more examples concerning implicit or explicit +conversions. (Done 2012/09/15). +* The documentation must explain how move semantics helps in this domain +and what the backend needs to do to profit from this optimization. (Done 2012/09/15). +* The documentation should contain Throws specification on the mp_number +and backend requirements operations. (Done 2012/09/15). +* The library interface should use the noexcept (BOOST_NOEXCEPT, ...) +facilities (Done 2012/09/15). +* It is unfortunate that the generic mp_number front end can not make use +contexpr as not all the backends can ensure this (done - we can go quite a way). +* literals: The library doesn't provide some kind of literals. I think that the +mp_number class should provide a way to create literals if the backend +is able to. (Done 2012/09/15). + + [h4 Pre-Review Comments] -* Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it. +* Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits +template argument that defaults to 0 (meaning keep going till no more space/memory). +* Add support for fused multiply add (and subtract). GMP mpz_t could use this. +* Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it (Moved to TODO list). +* Should there be a choice of rounding mode (probably MPFR specific)? Moved to TODO list. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. Open question - what should be the default - int32_t or int64_t? (done 2012/09/06) * Document the size requirements of fixed precision ints (done 2012/09/15). * Document std lib function accuracy (done 2012/09/15). -* Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits -template argument that defaults to 0 (meaning keep going till no more space/memory). -* Add support for fused multiply add (and subtract). GMP mpz_t could use this. * Be a bit clearer on the effects of sign-magnitude representation of cpp_int - min == -max etc - done. * Document cpp_dec_float precision, rounding, and exponent size (done 2012/09/06). * Can we be clearer in the docs that mixed arithmetic doesn't work (no longer applicable as of 2012/09/06)? * Document round functions behaviour better (they behave as in C++11) (added note 2012/09/06). -* Should there be a choice of rounding mode (probably MPFR specific)? * Document limits on size of cpp_dec_float (done 2012/09/06). [endsect] diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index 73f85bff..e7264d17 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -16,6 +16,7 @@ #include #include #include +#include // // Headers required for Boost.Math integration: @@ -38,11 +39,17 @@ namespace backends{ namespace detail{ +template +struct rebind +{ + typedef typename Allocator::template rebind::other type; +}; + template -struct dynamic_array : public std::vector +struct dynamic_array : public std::vector::type> { dynamic_array() - : std::vector(static_cast::size_type>(S), static_cast(0)) {} + : std::vector::type>(static_cast::type>::size_type>(S), static_cast(0)) {} }; } @@ -1668,7 +1675,7 @@ cpp_dec_float cpp_dec_float= Digits10 - 1) + else if(exp >= static_cast(Digits10 - 1)) { // The number is too large to resolve the integer part. // Thus it is already a pure integer part. diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 6c5429d1..6e11c0b0 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1702,7 +1702,7 @@ BOOST_FORCEINLINE void eval_subtract(cpp_int_backend -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { if(a.sign()) { @@ -2682,22 +2682,22 @@ struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCE template BOOST_FORCEINLINE void eval_bitwise_and( cpp_int_backend& result, - const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) + const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_and()); } template -BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_or()); } template -BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) +BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) { bitwise_op(result, o, bit_xor()); } template -BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) +BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { // Increment and negate: result = o; diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index a8b04623..dfe1abca 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -177,6 +177,9 @@ inline typename enable_if_c >::value && is_convertib // // Default versions of 3-arg arithmetic functions, these mostly just forward to the 2 arg versions: // +template +void eval_add(T& t, const U& u, const V& v); + template inline void eval_add_default(T& t, const T& u, const T& v) { @@ -224,6 +227,9 @@ inline void eval_add(T& t, const U& u, const V& v) eval_add_default(t, u, v); } +template +void eval_subtract(T& t, const U& u, const V& v); + template inline void eval_subtract_default(T& t, const T& u, const T& v) { @@ -273,6 +279,9 @@ inline void eval_subtract(T& t, const U& u, const V& v) eval_subtract_default(t, u, v); } +template +void eval_multiply(T& t, const U& u, const V& v); + template inline void eval_multiply_default(T& t, const T& u, const T& v) { @@ -320,6 +329,9 @@ inline void eval_multiply(T& t, const U& u, const V& v) eval_multiply_default(t, u, v); } +template +void eval_divide(T& t, const U& u, const V& v); + template inline void eval_divide_default(T& t, const T& u, const T& v) { @@ -375,6 +387,9 @@ inline void eval_divide(T& t, const U& u, const V& v) eval_divide_default(t, u, v); } +template +void eval_modulus(T& t, const U& u, const V& v); + template inline void eval_modulus_default(T& t, const T& u, const T& v) { @@ -430,6 +445,9 @@ inline void eval_modulus(T& t, const U& u, const V& v) eval_modulus_default(t, u, v); } +template +void eval_bitwise_and(T& t, const U& u, const V& v); + template inline void eval_bitwise_and_default(T& t, const T& u, const T& v) { @@ -477,6 +495,9 @@ inline void eval_bitwise_and(T& t, const U& u, const V& v) eval_bitwise_and_default(t, u, v); } +template +void eval_bitwise_or(T& t, const U& u, const V& v); + template inline void eval_bitwise_or_default(T& t, const T& u, const T& v) { @@ -524,6 +545,9 @@ inline void eval_bitwise_or(T& t, const U& u, const V& v) eval_bitwise_or_default(t, u, v); } +template +void eval_bitwise_xor(T& t, const U& u, const V& v); + template inline void eval_bitwise_xor_default(T& t, const T& u, const T& v) { diff --git a/test/test.hpp b/test/test.hpp index 6e83d762..d707ccc0 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -14,19 +14,40 @@ #include #include #include +#include +#include + +namespace detail{ + +template +inline typename boost::disable_if, T>::type abs(const T& a) +{ + return a < 0 ? -a : a; +} + +template +inline typename boost::enable_if, T>::type abs(const T& a) +{ + return a; +} + +} template T relative_error(T a, T b) { + using std::abs; + using detail::abs; + T min_val = (std::numeric_limits::min)(); T max_val = (std::numeric_limits::max)(); if((a != 0) && (b != 0)) { // TODO: use isfinite: - if(fabs(b) >= max_val) + if(abs(b) >= max_val) { - if(fabs(a) >= max_val) + if(abs(a) >= max_val) return 0; // one infinity is as good as another! } // If the result is denormalised, treat all denorms as equivalent: @@ -38,17 +59,17 @@ T relative_error(T a, T b) b = min_val; else if((b > -min_val) && (b < 0)) b = -min_val; - return (std::max)(fabs((a-b)/a), fabs((a-b)/b)) / std::numeric_limits::epsilon(); + return (std::max)(abs(T((a-b)/a)), abs(T((a-b)/b))) / std::numeric_limits::epsilon(); } // Handle special case where one or both are zero: if(min_val == 0) - return fabs(a-b); - if(fabs(a) < min_val) + return abs(T(a-b)); + if(abs(a) < min_val) a = min_val; - if(fabs(b) < min_val) + if(abs(b) < min_val) b = min_val; - return (std::max)(fabs((a-b)/a), fabs((a-b)/b)) / std::numeric_limits::epsilon(); + return (std::max)(abs(T((a-b)/a)), abs(T((a-b)/b))) / std::numeric_limits::epsilon(); } enum diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 26e624c6..7128c20a 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -121,29 +121,25 @@ template bool isfloat(T){ return false; } namespace detail{ -template -typename boost::disable_if, T>::type abs(T v) +template +typename boost::multiprecision::detail::expression::result_type + abs(boost::multiprecision::detail::expression const& v) { - return v < 0 ? -v : v; -} -template -typename boost::enable_if, T>::type abs(T v) -{ - return v; + typedef typename boost::multiprecision::detail::expression::result_type result_type; + return v < 0 ? result_type(-v) : result_type(v); } } #define BOOST_TEST_CLOSE(x, y, tol)\ - using std::abs; using detail::abs;\ if(x == 0){\ BOOST_TEST(y == 0); }\ else if(!isfloat(x)){\ BOOST_TEST(x == y); }\ - else if((x != y) && (abs((x-y)/x) > tol))\ + else if((x != y) && (detail::abs((x-y)/x) > tol))\ {\ BOOST_ERROR("Expected tolerance was exceeded: ");\ - BOOST_LIGHTWEIGHT_TEST_OSTREAM << std::setprecision(34) << "(x-y)/x = " << abs((x-y)/x) \ + BOOST_LIGHTWEIGHT_TEST_OSTREAM << std::setprecision(34) << "(x-y)/x = " << detail::abs((x-y)/x) \ << " tolerance = " << tol << std::endl;\ } From 741f98585df4b1135d3c554dce11bc9d1bdf0a58 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 Sep 2012 17:02:45 +0000 Subject: [PATCH 238/256] Remove dead code. [SVN r80580] --- .../multiprecision/detail/number_compare.hpp | 123 +----------------- 1 file changed, 1 insertion(+), 122 deletions(-) diff --git a/include/boost/multiprecision/detail/number_compare.hpp b/include/boost/multiprecision/detail/number_compare.hpp index ce7f622d..dda75e64 100644 --- a/include/boost/multiprecision/detail/number_compare.hpp +++ b/include/boost/multiprecision/detail/number_compare.hpp @@ -79,10 +79,7 @@ struct is_valid_mixed_compare : public mpl::false_ {}; template struct is_valid_mixed_compare, Val> : public is_convertible> {}; -/* -template -struct is_valid_mixed_compare > : public is_convertible> {}; -*/ + template struct is_valid_mixed_compare, number > : public mpl::false_ {}; @@ -109,16 +106,6 @@ inline typename enable_if_c::canonical_value(b)); } -/* -template -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator == (const number& a, const detail::expression& b) -{ - using default_ops::eval_eq; - typename detail::expression::result_type t(b); - return eval_eq(a.backend(), t.backend()); -} -*/ template inline typename enable_if_c, Arithmetic>::value, bool>::type operator == (const Arithmetic& a, const number& b) @@ -135,15 +122,6 @@ inline typename enable_if_c -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator == (const detail::expression& a, const number& b) -{ - using default_ops::eval_eq; - typename detail::expression::result_type t(a); - return eval_eq(t.backend(), b.backend()); -}*/ template inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator == (const detail::expression& a, const Arithmetic& b) @@ -176,16 +154,6 @@ inline typename enable_if_c::canonical_value(b)); } -/* -template -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator != (const number& a, const detail::expression& b) -{ - using default_ops::eval_eq; - typename detail::expression::result_type t(b); - return !eval_eq(a.backend(), t.backend()); -} -*/ template inline typename enable_if_c, Arithmetic>::value, bool>::type operator != (const Arithmetic& a, const number& b) @@ -202,15 +170,6 @@ inline typename enable_if_c -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator != (const detail::expression& a, const number& b) -{ - using default_ops::eval_eq; - typename detail::expression::result_type t(a); - return !eval_eq(t.backend(), b.backend()); -}*/ template inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator != (const detail::expression& a, const Arithmetic& b) @@ -243,16 +202,6 @@ inline typename enable_if_c::canonical_value(b)); } -/* -template -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator < (const number& a, const detail::expression& b) -{ - using default_ops::eval_lt; - typename detail::expression::result_type t(b); - return eval_lt(a.backend(), t.backend()); -} -*/ template inline typename enable_if_c, Arithmetic>::value, bool>::type operator < (const Arithmetic& a, const number& b) @@ -269,16 +218,6 @@ inline typename enable_if_c -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator < (const detail::expression& a, const number& b) -{ - using default_ops::eval_lt; - typename detail::expression::result_type t(a); - return eval_lt(t.backend(), b.backend()); -} -*/ template inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator < (const detail::expression& a, const Arithmetic& b) @@ -311,16 +250,6 @@ inline typename enable_if_c::canonical_value(b)); } -/* -template -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator > (const number& a, const detail::expression& b) -{ - using default_ops::eval_gt; - typename detail::expression::result_type t(b); - return eval_gt(a.backend(), t.backend()); -} -*/ template inline typename enable_if_c, Arithmetic>::value, bool>::type operator > (const Arithmetic& a, const number& b) @@ -337,16 +266,6 @@ inline typename enable_if_c -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator > (const detail::expression& a, const number& b) -{ - using default_ops::eval_gt; - typename detail::expression::result_type t(a); - return eval_gt(t.backend(), b.backend()); -} -*/ template inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator > (const detail::expression& a, const Arithmetic& b) @@ -379,16 +298,6 @@ inline typename enable_if_c::canonical_value(b)); } -/* -template -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator <= (const number& a, const detail::expression& b) -{ - using default_ops::eval_gt; - typename detail::expression::result_type t(b); - return !eval_gt(a.backend(), t.backend()); -} -*/ template inline typename enable_if_c, Arithmetic>::value, bool>::type operator <= (const Arithmetic& a, const number& b) @@ -405,16 +314,6 @@ inline typename enable_if_c -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator <= (const detail::expression& a, const number& b) -{ - using default_ops::eval_gt; - typename detail::expression::result_type t(a); - return !eval_gt(t.backend(), b.backend()); -} -*/ template inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator <= (const detail::expression& a, const Arithmetic& b) @@ -447,16 +346,6 @@ inline typename enable_if_c::canonical_value(b)); } -/* -template -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator >= (const number& a, const detail::expression& b) -{ - using default_ops::eval_lt; - typename detail::expression::result_type t(b); - return !eval_lt(a.backend(), t.backend()); -} -*/ template inline typename enable_if_c, Arithmetic>::value, bool>::type operator >= (const Arithmetic& a, const number& b) @@ -473,16 +362,6 @@ inline typename enable_if_c -inline typename enable_if, typename detail::expression::result_type>, bool>::type - operator >= (const detail::expression& a, const number& b) -{ - using default_ops::eval_lt; - typename detail::expression::result_type t(a); - return !eval_lt(t.backend(), b.backend()); -} -*/ template inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type operator >= (const detail::expression& a, const Arithmetic& b) From 4f2738fd6f90ced9a24009d387d78eaed91c9788 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 20 Sep 2012 16:04:02 +0000 Subject: [PATCH 239/256] Add traits class to determine default ExpressionTemplate parameter value. Add support for fused-multiply-add/subtract. Optimise temporary usage when the LHS also appears on the RHS. [SVN r80607] --- .../boost_multiprecision/indexes/s01.html | 12 +- .../boost_multiprecision/indexes/s02.html | 13 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 19 +- doc/html/boost_multiprecision/map/hist.html | 11 + doc/html/boost_multiprecision/map/todo.html | 233 +++++++++--------- .../boost_multiprecision/ref/backendconc.html | 229 +++++++++++++++++ .../boost_multiprecision/ref/cpp_int_ref.html | 22 +- doc/html/boost_multiprecision/ref/number.html | 30 ++- .../tut/ints/cpp_int.html | 26 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 116 +++++++-- include/boost/multiprecision/cpp_int.hpp | 22 +- .../multiprecision/detail/default_ops.hpp | 184 +++++++++----- .../boost/multiprecision/detail/et_ops.hpp | 60 +++++ .../detail/functions/constants.hpp | 6 +- .../multiprecision/detail/functions/pow.hpp | 22 +- .../multiprecision/detail/functions/trig.hpp | 24 +- .../multiprecision/detail/number_base.hpp | 19 +- .../multiprecision/detail/number_compare.hpp | 4 +- include/boost/multiprecision/gmp.hpp | 58 ++++- include/boost/multiprecision/number.hpp | 60 ++++- .../boost/multiprecision/rational_adapter.hpp | 25 +- test/test_arithmetic.cpp | 161 +++++++++++- test/test_constants.cpp | 4 +- test/test_float_io.cpp | 4 +- 26 files changed, 1065 insertions(+), 305 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 6b1856e3..b8bcad1a 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    @@ -265,6 +265,14 @@
  • +

    eval_multiply_add

    + +
  • +
  • +

    eval_multiply_subtract

    + +
  • +
  • eval_pow

  • diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 2706639a..29be2280 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,10 +13,10 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    -

    C G I M N T

    +Class Index
    +

    C E G I M N T

    C @@ -33,6 +33,13 @@
    +E +
    +
    • +

      expression_template_default

      + +
    +
    G
      diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 12cee4d9..dff01ef2 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
      PrevUpHomeNext
      -
      +

      -Typedef Index

      +Typedef Index

    C I L M T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 862dddae..3030cc3f 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    @@ -347,6 +347,14 @@
  • +

    eval_multiply_add

    + +
  • +
  • +

    eval_multiply_subtract

    + +
  • +
  • eval_pow

  • @@ -400,6 +408,10 @@

    eval_trunc

    +
  • +

    expression_template_default

    + +
  • F @@ -676,6 +688,7 @@
  • component_type

  • default_precision

  • divide_qr

  • +
  • expression_template_default

  • fpclassify

  • integer_modulus

  • iround

  • @@ -746,6 +759,8 @@
  • eval_lt

  • eval_modulus

  • eval_multiply

  • +
  • eval_multiply_add

  • +
  • eval_multiply_subtract

  • eval_pow

  • eval_powm

  • eval_qr

  • diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index f7102bd0..ca0c5cca 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -44,6 +44,17 @@ Changed ExpressionTemplates parameter to class number to use enumerated values rather than true/false. +
  • + Changed ExpressionTemplate parameter default value to use a traits class + so that the default value depends on the backend used. +
  • +
  • + Added support for fused-multiply-add/subtract with GMP support. +
  • +
  • + Tweaked expression template unpacking to use fewer temporaries when the + LHS also appears in the RHS. +
  • diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 5ab45fdb..2abdc184 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -17,106 +17,6 @@ -

    - Things requested in review: -

    -
      -
    • - A 2's complement fixed precision int that uses exactly N bits and no - more. -
    • -
    • - A backend for an overflow aware integers. -
    • -
    • - Each back-end should document the requirements it satisfies (not currently - scheduled for inclusion: it's deliberately an implementation detail, - and "optional" requirements are optimisations which can't be - detected by the user). -
    • -
    • - IIUC convert_to is used to emulate in c++98 compilers C++11 explicit - conversions. Could the explicit conversion operator be added on compilers - supporting it? (Done 2012/09/15). -
    • -
    • - The front-end should make the differences between implicit and explicit - construction (Done 2012/09/15). -
    • -
    • - The use of bool in template parameters could be improved by the use of - an enum class which will be more explicit. E.g enum - class expression_template - {disabled, enabled}; enum class sign - {unsigned, signed}; (Partly done 2012/09/15). -
    • -
    • - The ExpresionTemplate parameter could be defaulted to a traits class - for more sensible defaults. -
    • -
    • - The library interface should use the noexcept (BOOST_NOEXCEPT, ...) facilities - (Done 2012/09/15). -
    • -
    • - It is unfortunate that the generic mp_number front end can not make use - contexpr as not all the backends can ensure this (done - we can go quite - a way). -
    • -
    • - literals: The library doesn't provide some kind of literals. I think - that the mp_number class should provide a way to create literals if the - backend is able to. (Done 2012/09/15). -
    • -
    • - The performances of mp_number<a_trivial_adaptor<float>, false>respect - to float and mp_number<a_trivial_adaptor<int>, false> and - int should be given to show the cost of using the generic interface (Mostly - done, just need to update docs to the latest results). -
    • -
    • - The documentation should contain Throws specification on the mp_number - and backend requirements operations. (Done 2012/09/15). -
    • -
    • - The tutorial should add more examples concerning implicit or explicit - conversions. (Done 2012/09/15). -
    • -
    • - The documentation must explain how move semantics helps in this domain - and what the backend needs to do to profit from this optimization. (Done - 2012/09/15). -
    • -
    • - The rounding applied when converting must be documented. -
    • -
    • - cpp_dec_float should round to nearest. -
    • -
    • - In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we - can optimise and eliminate one more temporary. -
    • -
    • - We can reuse temporaries in multiple subtrees (temporary caching). -
    • -
    • - Emphasise in the docs that ET's may reorder operations. -
    • -
    • - Document why we don't use proto (compile times). -
    • -
    • - Document what happens to small fixed precision cpp_int's. -
    • -
    • - Should we provide min/max overloads for expression templates? -
    • -
    • - Document why we don't abstract out addition/multiplication algorithms - etc. -
    • -

    More a list of what could be done, rather than what should be done (which may be a much smaller list!). @@ -140,6 +40,114 @@

  • Add an all C++ binary floating point type.
  • +
  • + Can ring types (exact floating point types) be supported? The answer + should be yes, but someone needs to write it, the hard part is IO and + binary-decimal convertion. +
  • +
  • + Should there be a choice of rounding mode (probably MPFR specific)? +
  • + +

    + Things requested in review: +

    +
      +
    • + A 2's complement fixed precision int that uses exactly N bits and no + more. +
    • +
    • + A backend for an overflow aware integers. +
    • +
    • + Each back-end should document the requirements it satisfies (not currently + scheduled for inclusion: it's deliberately an implementation detail, + and "optional" requirements are optimisations which can't be + detected by the user). +
    • +
    • + The use of bool in template parameters could be improved by the use of + an enum class which will be more explicit. E.g enum + class expression_template + {disabled, enabled}; enum class sign + {unsigned, signed}; (Partly done 2012/09/15). +
    • +
    • + The performances of mp_number<a_trivial_adaptor<float>, false>respect + to float and mp_number<a_trivial_adaptor<int>, false> and + int should be given to show the cost of using the generic interface (Mostly + done, just need to update docs to the latest results). +
    • +
    • + The rounding applied when converting must be documented. +
    • +
    • + cpp_dec_float should round to nearest. +
    • +
    • + We can reuse temporaries in multiple subtrees (temporary caching). +
    • +
    • + Emphasise in the docs that ET's may reorder operations. +
    • +
    • + Document why we don't use proto (compile times). +
    • +
    • + Document what happens to small fixed precision cpp_int's. +
    • +
    • + Should we provide min/max overloads for expression templates? +
    • +
    • + Document why we don't abstract out addition/multiplication algorithms + etc. +
    • +
    • + IIUC convert_to is used to emulate in c++98 compilers C++11 explicit + conversions. Could the explicit conversion operator be added on compilers + supporting it? (Done 2012/09/15). +
    • +
    • + The front-end should make the differences between implicit and explicit + construction (Done 2012/09/15). +
    • +
    • + The tutorial should add more examples concerning implicit or explicit + conversions. (Done 2012/09/15). +
    • +
    • + The documentation must explain how move semantics helps in this domain + and what the backend needs to do to profit from this optimization. (Done + 2012/09/15). +
    • +
    • + The documentation should contain Throws specification on the mp_number + and backend requirements operations. (Done 2012/09/15). +
    • +
    • + The library interface should use the noexcept (BOOST_NOEXCEPT, ...) facilities + (Done 2012/09/15). +
    • +
    • + It is unfortunate that the generic mp_number front end can not make use + contexpr as not all the backends can ensure this (done - we can go quite + a way). +
    • +
    • + literals: The library doesn't provide some kind of literals. I think + that the mp_number class should provide a way to create literals if the + backend is able to. (Done 2012/09/15). +
    • +
    • + The ExpresionTemplate parameter could be defaulted to a traits class + for more sensible defaults (done 2012/09/20). +
    • +
    • + In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we + can optimise and eliminate one more temporary (done 2012/09/20). +
    @@ -147,9 +155,18 @@ Comments
      +
    • + Make fixed precision orthogonal to Allocator type in cpp_int. Possible + solution - add an additional MaxBits template argument that defaults + to 0 (meaning keep going till no more space/memory). +
    • Can ring types (exact floating point types) be supported? The answer - should be yes, but someone needs to write it. + should be yes, but someone needs to write it (Moved to TODO list). +
    • +
    • + Should there be a choice of rounding mode (probably MPFR specific)? Moved + to TODO list.
    • Make the exponent type for cpp_dec_float a templare parameter, maybe @@ -162,15 +179,6 @@
    • Document std lib function accuracy (done 2012/09/15).
    • -
    • - Make fixed precision orthogonal to Allocator type in cpp_int. Possible - solution - add an additional MaxBits template argument that defaults - to 0 (meaning keep going till no more space/memory). -
    • -
    • - Add support for fused multiply add (and subtract). GMP mpz_t could use - this. -
    • Be a bit clearer on the effects of sign-magnitude representation of cpp_int - min == -max etc - done. @@ -187,10 +195,11 @@ note 2012/09/06).
    • - Should there be a choice of rounding mode (probably MPFR specific)? + Document limits on size of cpp_dec_float (done 2012/09/06).
    • - Document limits on size of cpp_dec_float (done 2012/09/06). + Add support for fused multiply add (and subtract). GMP mpz_t could use + this (done 2012/09/20).
    diff --git a/doc/html/boost_multiprecision/ref/backendconc.html b/doc/html/boost_multiprecision/ref/backendconc.html index 3550a227..2f6d4b91 100644 --- a/doc/html/boost_multiprecision/ref/backendconc.html +++ b/doc/html/boost_multiprecision/ref/backendconc.html @@ -1810,6 +1810,235 @@ + +

    + eval_multiply_add(b, cb, cb2) +

    + + +

    + void +

    + + +

    + Multiplies cb by + cb2 and adds the + result to b. When + not provided does the equivalent of creating a temporary B t + and eval_multiply(t, cb, cb2) followed by eval_add(b, t). +

    + + +

    +   +

    + + + + +

    + eval_multiply_add(b, cb, a) +

    + + +

    + void +

    + + +

    + Multiplies a by + cb and adds the + result to b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided + does the equivalent of creating a temporary B + t and eval_multiply(t, cb, a) followed by eval_add(b, t). +

    + + +

    +   +

    + + + + +

    + eval_multiply_add(b, a, cb) +

    + + +

    + void +

    + + +

    + Multiplies a by + cb and adds the + result to b. The + type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided + does the equivalent of eval_multiply_add(b, cb, a). +

    + + +

    +   +

    + + + + +

    + eval_multiply_subtract(b, cb, cb2) +

    + + +

    + void +

    + + +

    + Multiplies cb by + cb2 and subtracts + the result from b. + When not provided does the equivalent of creating a temporary + B t + and eval_multiply(t, cb, cb2) followed by eval_subtract(b, t). +

    + + +

    +   +

    + + + + +

    + eval_multiply_subtract(b, cb, a) +

    + + +

    + void +

    + + +

    + Multiplies a by + cb and subtracts + the result from b. + The type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided + does the equivalent of creating a temporary B + t and eval_multiply(t, cb, a) followed by eval_subtract(b, t). +

    + + +

    +   +

    + + + + +

    + eval_multiply_subtract(b, a, cb) +

    + + +

    + void +

    + + +

    + Multiplies a by + cb and subtracts + the result from b. + The type of a shall + be listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. When not provided + does the equivalent of eval_multiply_subtract(b, cb, a). +

    + + +

    +   +

    + + + + +

    + eval_multiply_add(b, cb, cb2, cb3) +

    + + +

    + void +

    + + +

    + Multiplies cb by + cb2 and adds the + result to cb3 storing + the result in b. + When not provided does the equivalent of eval_multiply(b, cb, cb2) followed by eval_add(b, cb3). For brevity, only a version showing + all arguments of type B + is shown here, but you can replace up to any 2 of cb, cb2 + and cb3 with any + type type listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    + + +

    +   +

    + + + + +

    + eval_multiply_subtract(b, cb, cb2, cb3) +

    + + +

    + void +

    + + +

    + Multiplies cb by + cb2 and subtracts + from the result cb3 + storing the result in b. + When not provided does the equivalent of eval_multiply(b, cb, cb2) followed by eval_subtract(b, cb3). For brevity, only a version showing + all arguments of type B + is shown here, but you can replace up to any 2 of cb, cb2 + and cb3 with any + type type listed in one of the type lists B::signed_types, + B::unsigned_types or B::float_types. +

    + + +

    +   +

    + + +

    eval_divide(b, diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html index 0b84e4e9..f1dbd5df 100644 --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -21,22 +21,28 @@ template <unsigned MinBits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> > struct cpp_int_backend; +// +// Expression templates default to et_off if there is no allocator: +// +template <unsigned MinDigits, bool Signed> +struct expression_template_default<cpp_int_backend<MinDigits, Signed, void> > +{ static const expression_template_option value = et_off; }; typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend; typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: -typedef number<cpp_int_backend<128, false, void>, et_off> uint128_t; -typedef number<cpp_int_backend<256, false, void>, et_off> uint256_t; -typedef number<cpp_int_backend<512, false, void>, et_off> uint512_t; -typedef number<cpp_int_backend<1024, false, void>, et_off> uint1024_t; +typedef number<cpp_int_backend<128, false, void> > uint128_t; +typedef number<cpp_int_backend<256, false, void> > uint256_t; +typedef number<cpp_int_backend<512, false, void> > uint512_t; +typedef number<cpp_int_backend<1024, false, void> > uint1024_t; // Fixed precision signed types: -typedef number<cpp_int_backend<128, true, void>, et_off> int128_t; -typedef number<cpp_int_backend<256, true, void>, et_off> int256_t; -typedef number<cpp_int_backend<512, true, void>, et_off> int512_t; -typedef number<cpp_int_backend<1024, true, void>, et_off> int1024_t; +typedef number<cpp_int_backend<128, true, void> > int128_t; +typedef number<cpp_int_backend<256, true, void> > int256_t; +typedef number<cpp_int_backend<512, true, void> > int512_t; +typedef number<cpp_int_backend<1024, true, void> > int1024_t; }} // namespaces diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index 3c7994fc..de7a6cdc 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -23,7 +23,12 @@

    namespace boost{ namespace multiprecision{
     
    -template <class Backend, expression_template_option ExpressionTemplates = true>
    +enum expression_template_option { et_on = 1, et_off = 0 };
    +
    +template <class Backend> struct expression_template_default
    +{ static const expression_template_option value = et_on; };
    +
    +template <class Backend, expression_template_option ExpressionTemplates = expression_template_default<Backend>::value>
     class number
     {
        number();
    @@ -206,7 +211,20 @@
     
             Description
           
    -
    template <class Backend, expression_template_option ExpressionTemplates = true>
    +
    enum expression_template_option { et_on = 1, et_off = 0 };
    +
    +

    + This enumerated type is used to specify whether expression templates are + turned on (et_on) or turned off (et_off). +

    +
    template <class Backend> struct expression_template_default
    +{ static const expression_template_option value = et_on; };
    +
    +

    + This traits class specifies the default expression template option to be + used with a particular Backend type. It defaults to et_on. +

    +
    template <class Backend, expression_template_option ExpressionTemplates = expression_template_default<Backend>::value>
     class number;
     

    @@ -222,8 +240,12 @@

    ExpressionTemplates

    - A Boolean value: when true, then expression templates are enabled, - otherwise they are disabled. + A Boolean value: when et_on, + then expression templates are enabled, otherwise when set to et_off they are disabled. The default + for this parameter is computed via the traits class expression_template_default + whose member value + defaults to et_on unless + the the traits class is specialized for a particular backend.

    diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html index fdfa36ff..a220dc59 100644 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -26,22 +26,28 @@ template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> > class cpp_int_backend; +// +// Expression templates default to et_off if there is no allocator: +// +template <unsigned MinDigits, bool Signed> +struct expression_template_default<cpp_int_backend<MinDigits, Signed, void> > +{ static const expression_template_option value = et_off; }; -typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer +typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend; -typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number +typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: -typedef number<cpp_int_backend<128, false, void>, et_off> uint128_t; -typedef number<cpp_int_backend<256, false, void>, et_off> uint256_t; -typedef number<cpp_int_backend<512, false, void>, et_off> uint512_t; -typedef number<cpp_int_backend<1024, false, void>, et_off> uint1024_t; +typedef number<cpp_int_backend<128, false, void> > uint128_t; +typedef number<cpp_int_backend<256, false, void> > uint256_t; +typedef number<cpp_int_backend<512, false, void> > uint512_t; +typedef number<cpp_int_backend<1024, false, void> > uint1024_t; // Fixed precision signed types: -typedef number<cpp_int_backend<128, true, void>, et_off> int128_t; -typedef number<cpp_int_backend<256, true, void>, et_off> int256_t; -typedef number<cpp_int_backend<512, true, void>, et_off> int512_t; -typedef number<cpp_int_backend<1024, true, void>, et_off> int1024_t; +typedef number<cpp_int_backend<128, true, void> > int128_t; +typedef number<cpp_int_backend<256, true, void> > int256_t; +typedef number<cpp_int_backend<512, true, void> > int512_t; +typedef number<cpp_int_backend<1024, true, void> > int1024_t; }} // namespaces
    diff --git a/doc/html/index.html b/doc/html/index.html index 6352948f..0482b470 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -120,7 +120,7 @@ - +

    Last revised: September 16, 2012 at 12:00:51 GMT

    Last revised: September 20, 2012 at 15:58:33 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index b9772383..c9380777 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -340,22 +340,28 @@ The following back-ends provide integer arithmetic: template > class cpp_int_backend; + // + // Expression templates default to et_off if there is no allocator: + // + template + struct expression_template_default > + { static const expression_template_option value = et_off; }; - typedef number > cpp_int; // arbitrary precision integer + typedef number > cpp_int; // arbitrary precision integer typedef rational_adapter > cpp_rational_backend; - typedef number cpp_rational; // arbitrary precision rational number + typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef number, et_off> uint128_t; - typedef number, et_off> uint256_t; - typedef number, et_off> uint512_t; - typedef number, et_off> uint1024_t; + typedef number > uint128_t; + typedef number > uint256_t; + typedef number > uint512_t; + typedef number > uint1024_t; // Fixed precision signed types: - typedef number, et_off> int128_t; - typedef number, et_off> int256_t; - typedef number, et_off> int512_t; - typedef number, et_off> int1024_t; + typedef number > int128_t; + typedef number > int256_t; + typedef number > int512_t; + typedef number > int1024_t; }} // namespaces @@ -1109,7 +1115,12 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba namespace boost{ namespace multiprecision{ - template + enum expression_template_option { et_on = 1, et_off = 0 }; + + template struct expression_template_default + { static const expression_template_option value = et_on; }; + + template ::value> class number { number(); @@ -1290,14 +1301,26 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba [h4 Description] - template + enum expression_template_option { et_on = 1, et_off = 0 }; + +This enumerated type is used to specify whether expression templates are turned on (et_on) or turned off (et_off). + + template struct expression_template_default + { static const expression_template_option value = et_on; }; + +This traits class specifies the default expression template option to be used with a particular Backend type. +It defaults to `et_on`. + + template ::value> class number; Class `number` has two template arguments: [variablelist [[Backend][The actual arithmetic back-end that does all the work.]] -[[ExpressionTemplates][A Boolean value: when true, then expression templates are enabled, otherwise they are disabled.]] +[[ExpressionTemplates][A Boolean value: when `et_on`, then expression templates are enabled, otherwise when set to `et_off` they are disabled. + The default for this parameter is computed via the traits class `expression_template_default` whose member `value` defaults to `et_on` unless + the the traits class is specialized for a particular backend.]] ] number(); @@ -1698,22 +1721,28 @@ whose precision can vary at compile time (such as `mpf_float`). template > struct cpp_int_backend; + // + // Expression templates default to et_off if there is no allocator: + // + template + struct expression_template_default > + { static const expression_template_option value = et_off; }; typedef number > cpp_int; // arbitrary precision integer typedef rational_adapter > cpp_rational_backend; typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef number, et_off> uint128_t; - typedef number, et_off> uint256_t; - typedef number, et_off> uint512_t; - typedef number, et_off> uint1024_t; + typedef number > uint128_t; + typedef number > uint256_t; + typedef number > uint512_t; + typedef number > uint1024_t; // Fixed precision signed types: - typedef number, et_off> int128_t; - typedef number, et_off> int256_t; - typedef number, et_off> int512_t; - typedef number, et_off> int1024_t; + typedef number > int128_t; + typedef number > int256_t; + typedef number > int512_t; + typedef number > int1024_t; }} // namespaces @@ -2080,6 +2109,42 @@ of type B2. [[`eval_multiply(b, a, cb)`][`void`][Multiplies `a` by `cb` and stores the result in `b`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`. When not provided, does the equivalent of `eval_multiply(b, cb, a)`.][[space]]] +[[`eval_multiply_add(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and adds the result to `b`. + When not provided does the equivalent of creating a temporary `B t` and `eval_multiply(t, cb, cb2)` followed by + `eval_add(b, t)`.][[space]]] +[[`eval_multiply_add(b, cb, a)`][`void`][Multiplies `a` by `cb` and adds the result to `b`. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided does the equivalent of creating a temporary `B t` and `eval_multiply(t, cb, a)` followed by + `eval_add(b, t)`.][[space]]] +[[`eval_multiply_add(b, a, cb)`][`void`][Multiplies `a` by `cb` and adds the result to `b`. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided does the equivalent of `eval_multiply_add(b, cb, a)`.][[space]]] +[[`eval_multiply_subtract(b, cb, cb2)`][`void`][Multiplies `cb` by `cb2` and subtracts the result from `b`. + When not provided does the equivalent of creating a temporary `B t` and `eval_multiply(t, cb, cb2)` followed by + `eval_subtract(b, t)`.][[space]]] +[[`eval_multiply_subtract(b, cb, a)`][`void`][Multiplies `a` by `cb` and subtracts the result from `b`. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided does the equivalent of creating a temporary `B t` and `eval_multiply(t, cb, a)` followed by + `eval_subtract(b, t)`.][[space]]] +[[`eval_multiply_subtract(b, a, cb)`][`void`][Multiplies `a` by `cb` and subtracts the result from `b`. + The type of `a` shall be listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`. + When not provided does the equivalent of `eval_multiply_subtract(b, cb, a)`.][[space]]] +[[`eval_multiply_add(b, cb, cb2, cb3)`][`void`][Multiplies `cb` by `cb2` and adds the result to `cb3` storing the result in `b`. + When not provided does the equivalent of `eval_multiply(b, cb, cb2)` followed by + `eval_add(b, cb3)`. + For brevity, only a version showing all arguments of type `B` is shown here, but you can replace up to any 2 of + `cb`, `cb2` and `cb3` with any type type listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`.][[space]]] +[[`eval_multiply_subtract(b, cb, cb2, cb3)`][`void`][Multiplies `cb` by `cb2` and subtracts from the result `cb3` storing the result in `b`. + When not provided does the equivalent of `eval_multiply(b, cb, cb2)` followed by + `eval_subtract(b, cb3)`. + For brevity, only a version showing all arguments of type `B` is shown here, but you can replace up to any 2 of + `cb`, `cb2` and `cb3` with any type type listed in one of the type lists + `B::signed_types`, `B::unsigned_types` or `B::float_types`.][[space]]] [[`eval_divide(b, a)`][`void`][Divides `b` by `a`. The type of `a` shall be listed in one of the type lists `B::signed_types`, `B::unsigned_types` or `B::float_types`. When not provided, the default version calls `eval_divide(b, B(a))`] @@ -2665,6 +2730,9 @@ Windows Vista machine. * Removed "mp_" prefix from types. * Allowed mixed precision arithmetic. * Changed ExpressionTemplates parameter to class `number` to use enumerated values rather than true/false. +* Changed ExpressionTemplate parameter default value to use a traits class so that the default value depends on the backend used. +* Added support for fused-multiply-add/subtract with GMP support. +* Tweaked expression template unpacking to use fewer temporaries when the LHS also appears in the RHS. [h4 Pre-review history] @@ -2706,13 +2774,11 @@ by the user). * The use of bool in template parameters could be improved by the use of an enum class which will be more explicit. E.g `enum class expression_template {disabled, enabled}; enum class sign {unsigned, signed};` (Partly done 2012/09/15). -* The ExpresionTemplate parameter could be defaulted to a traits class for more sensible defaults. * The performances of mp_number, false>respect to float and mp_number, false> and int should be given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results). * The rounding applied when converting must be documented. * cpp_dec_float should round to nearest. -* In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we can optimise and eliminate one more temporary. * We can reuse temporaries in multiple subtrees (temporary caching). * Emphasise in the docs that ET's may reorder operations. * Document why we don't use proto (compile times). @@ -2737,6 +2803,8 @@ contexpr as not all the backends can ensure this (done - we can go quite a way). * literals: The library doesn't provide some kind of literals. I think that the mp_number class should provide a way to create literals if the backend is able to. (Done 2012/09/15). +* The ExpresionTemplate parameter could be defaulted to a traits class for more sensible defaults (done 2012/09/20). +* In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we can optimise and eliminate one more temporary (done 2012/09/20). @@ -2744,7 +2812,6 @@ is able to. (Done 2012/09/15). * Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits template argument that defaults to 0 (meaning keep going till no more space/memory). -* Add support for fused multiply add (and subtract). GMP mpz_t could use this. * Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it (Moved to TODO list). * Should there be a choice of rounding mode (probably MPFR specific)? Moved to TODO list. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. @@ -2756,6 +2823,7 @@ Open question - what should be the default - int32_t or int64_t? (done 2012/09/ * Can we be clearer in the docs that mixed arithmetic doesn't work (no longer applicable as of 2012/09/06)? * Document round functions behaviour better (they behave as in C++11) (added note 2012/09/06). * Document limits on size of cpp_dec_float (done 2012/09/06). +* Add support for fused multiply add (and subtract). GMP mpz_t could use this (done 2012/09/20). [endsect] diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 6e11c0b0..0436f657 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -3059,6 +3059,12 @@ BOOST_FORCEINLINE typename enable_if, Integer>::type eval_int } // namespace backends; +template +struct expression_template_default > +{ + static const expression_template_option value = et_off; +}; + using boost::multiprecision::backends::cpp_int_backend; template @@ -3069,16 +3075,16 @@ typedef rational_adapter > cpp_rational_backend; typedef number cpp_rational; // Fixed precision unsigned types: -typedef number, et_off> uint128_t; -typedef number, et_off> uint256_t; -typedef number, et_off> uint512_t; -typedef number, et_off> uint1024_t; +typedef number > uint128_t; +typedef number > uint256_t; +typedef number > uint512_t; +typedef number > uint1024_t; // Fixed precision signed types: -typedef number, et_off> int128_t; -typedef number, et_off> int256_t; -typedef number, et_off> int512_t; -typedef number, et_off> int1024_t; +typedef number > int128_t; +typedef number > int256_t; +typedef number > int512_t; +typedef number > int1024_t; #ifdef BOOST_MSVC #pragma warning(pop) diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index dfe1abca..d83b336d 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -35,10 +35,16 @@ namespace boost{ namespace multiprecision{ namespace default_ops{ // // Default versions of mixed arithmetic, these just construct a temporary // from the arithmetic value and then do the arithmetic on that, two versions -// of each depending on whether the backend can be directly constructed from type V: +// of each depending on whether the backend can be directly constructed from type V. +// +// Note that we have to provide *all* the template parameters to class number when used in +// enable_if as MSVC-10 won't compile the code if we rely on a computed-default parameter. +// Since the result of the test doesn't depend on whether expression templates are on or off +// we just use et_on everywhere. We could use a BOOST_WORKAROUND but that just obfuscates the +// code even more.... // template -inline typename enable_if_c >::value && !is_convertible::value >::type +inline typename enable_if_c >::value && !is_convertible::value >::type eval_add(T& result, V const& v) { T t; @@ -46,14 +52,14 @@ inline typename enable_if_c >::value && !is_converti eval_add(result, t); } template -inline typename enable_if_c >::value && is_convertible::value >::type +inline typename enable_if_c >::value && is_convertible::value >::type eval_add(T& result, V const& v) { T t(v); eval_add(result, t); } template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_subtract(T& result, V const& v) { T t; @@ -61,14 +67,14 @@ inline typename enable_if_c >::value && !is_converti eval_subtract(result, t); } template -inline typename enable_if_c >::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_subtract(T& result, V const& v) { T t(v); eval_subtract(result, t); } template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_multiply(T& result, V const& v) { T t; @@ -76,14 +82,42 @@ inline typename enable_if_c >::value && !is_converti eval_multiply(result, t); } template -inline typename enable_if_c >::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_multiply(T& result, V const& v) { T t(v); eval_multiply(result, t); } + +template +void eval_multiply(T& t, const U& u, const V& v); + +template +inline typename disable_if_c::value && is_same::value>::type eval_multiply_add(T& t, const U& u, const V& v) +{ + T z; + eval_multiply(z, u, v); + eval_add(t, z); +} +template +inline typename enable_if_c::value && is_same::value>::type eval_multiply_add(T& t, const U& u, const V& v) +{ + eval_multiply_add(t, v, u); +} +template +inline typename disable_if_c::value && is_same::value>::type eval_multiply_subtract(T& t, const U& u, const V& v) +{ + T z; + eval_multiply(z, u, v); + eval_subtract(t, z); +} +template +inline typename enable_if_c::value && is_same::value>::type eval_multiply_subtract(T& t, const U& u, const V& v) +{ + eval_multiply_subtract(t, v, u); +} template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide(T& result, V const& v) { T t; @@ -91,14 +125,14 @@ inline typename enable_if_c >::value && !is_converti eval_divide(result, t); } template -inline typename enable_if_c >::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide(T& result, V const& v) { T t(v); eval_divide(result, t); } template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus(T& result, V const& v) { T t; @@ -106,14 +140,14 @@ inline typename enable_if_c >::value && !is_converti eval_modulus(result, t); } template -inline typename enable_if_c >::value&& is_convertible::value>::type +inline typename enable_if_c >::value&& is_convertible::value>::type eval_modulus(T& result, V const& v) { T t(v); eval_modulus(result, t); } template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_and(T& result, V const& v) { T t; @@ -121,14 +155,14 @@ inline typename enable_if_c >::value && !is_converti eval_bitwise_and(result, t); } template -inline typename enable_if_c >::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_and(T& result, V const& v) { T t(v); eval_bitwise_and(result, t); } template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_or(T& result, V const& v) { T t; @@ -136,14 +170,14 @@ inline typename enable_if_c >::value && !is_converti eval_bitwise_or(result, t); } template -inline typename enable_if_c >::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_or(T& result, V const& v) { T t(v); eval_bitwise_or(result, t); } template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_xor(T& result, V const& v) { T t; @@ -151,7 +185,7 @@ inline typename enable_if_c >::value && !is_converti eval_bitwise_xor(result, t); } template -inline typename enable_if_c >::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_xor(T& result, V const& v) { T t(v); @@ -159,7 +193,7 @@ inline typename enable_if_c >::value && is_convertib } template -inline typename enable_if_c >::value && !is_convertible::value>::type +inline typename enable_if_c >::value && !is_convertible::value>::type eval_complement(T& result, V const& v) { T t; @@ -167,7 +201,7 @@ inline typename enable_if_c >::value && !is_converti eval_complement(result, t); } template -inline typename enable_if_c >::value && is_convertible::value>::type +inline typename enable_if_c >::value && is_convertible::value>::type eval_complement(T& result, V const& v) { T t(v); @@ -198,20 +232,20 @@ inline void eval_add_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_add_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_add_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_add(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_add_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_add_default(T& t, const T& u, const U& v) { T vv(v); eval_add(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_add_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_add_default(T& t, const U& u, const T& v) { eval_add(t, v, u); } @@ -249,20 +283,20 @@ inline void eval_subtract_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_subtract_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_subtract_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_subtract(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_subtract_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_subtract_default(T& t, const T& u, const U& v) { T vv(v); eval_subtract(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_subtract_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_subtract_default(T& t, const U& u, const T& v) { eval_subtract(t, v, u); t.negate(); @@ -279,9 +313,6 @@ inline void eval_subtract(T& t, const U& u, const V& v) eval_subtract_default(t, u, v); } -template -void eval_multiply(T& t, const U& u, const V& v); - template inline void eval_multiply_default(T& t, const T& u, const T& v) { @@ -300,20 +331,20 @@ inline void eval_multiply_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_multiply_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_multiply_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_multiply(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_multiply_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_multiply_default(T& t, const T& u, const U& v) { T vv(v); eval_multiply(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_multiply_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_multiply_default(T& t, const U& u, const T& v) { eval_multiply(t, v, u); } @@ -329,6 +360,47 @@ inline void eval_multiply(T& t, const U& u, const V& v) eval_multiply_default(t, u, v); } +template +inline typename disable_if_c::value && is_same::value>::type eval_multiply_add(T& t, const U& u, const V& v, const X& x) +{ + if((void*)&x == (void*)&t) + { + T z; + z = x; + eval_multiply_add(t, u, v, z); + } + else + { + eval_multiply(t, u, v); + eval_add(t, x); + } +} +template +inline typename enable_if_c::value && is_same::value>::type eval_multiply_add(T& t, const U& u, const V& v, const X& x) +{ + eval_multiply_add(t, v, u, x); +} +template +inline typename disable_if_c::value && is_same::value>::type eval_multiply_subtract(T& t, const U& u, const V& v, const X& x) +{ + if((void*)&x == (void*)&t) + { + T z; + z = x; + eval_multiply_subtract(t, u, v, z); + } + else + { + eval_multiply(t, u, v); + eval_subtract(t, x); + } +} +template +inline typename enable_if_c::value && is_same::value>::type eval_multiply_subtract(T& t, const U& u, const V& v, const X& x) +{ + eval_multiply_subtract(t, v, u, x); +} + template void eval_divide(T& t, const U& u, const V& v); @@ -350,27 +422,27 @@ inline void eval_divide_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_divide(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_divide_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide_default(T& t, const T& u, const U& v) { T vv(v); eval_divide(t, u, vv); } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_divide_default(T& t, const U& u, const T& v) { T uu; uu = u; eval_divide(t, uu, v); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_divide_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_divide_default(T& t, const U& u, const T& v) { T uu(u); eval_divide(t, uu, v); @@ -408,27 +480,27 @@ inline void eval_modulus_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_modulus(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus_default(T& t, const T& u, const U& v) { T vv(v); eval_modulus(t, u, vv); } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_modulus_default(T& t, const U& u, const T& v) { T uu; uu = u; eval_modulus(t, uu, v); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_modulus_default(T& t, const U& u, const T& v) { T uu(u); eval_modulus(t, uu, v); @@ -466,20 +538,20 @@ inline void eval_bitwise_and_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_and(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_and(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_bitwise_and_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_and_default(T& t, const U& u, const T& v) { eval_bitwise_and(t, v, u); } @@ -516,20 +588,20 @@ inline void eval_bitwise_or_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_or(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_or(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_bitwise_or_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_or_default(T& t, const U& u, const T& v) { eval_bitwise_or(t, v, u); } @@ -566,20 +638,20 @@ inline void eval_bitwise_xor_default(T& t, const T& u, const T& v) } } template -inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && !is_convertible::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v) { T vv; vv = v; eval_bitwise_xor(t, u, vv); } template -inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v) +inline typename enable_if_c >::value && is_convertible::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v) { T vv(v); eval_bitwise_xor(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_bitwise_xor_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value>::type eval_bitwise_xor_default(T& t, const U& u, const T& v) { eval_bitwise_xor(t, v, u); } @@ -1272,7 +1344,7 @@ func(const number& arg)\ return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg \ @@ -1328,8 +1400,8 @@ func(const number& arg, const number& a)\ return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ - , number \ + , number \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1350,7 +1422,7 @@ func(const number& arg, const detail::expression \ - , number \ + , number \ , detail::expression \ >(\ detail::BOOST_JOIN(func, _funct)() \ @@ -1373,7 +1445,7 @@ func(const detail::expression& arg, const number \ , detail::expression \ - , number \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1417,7 +1489,7 @@ func(const number& arg, const Arithmetic& a)\ return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ + , number \ , Arithmetic\ >(\ detail::BOOST_JOIN(func, _funct)() \ @@ -1464,7 +1536,7 @@ func(const Arithmetic& arg, const number& a)\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ , Arithmetic \ - , number \ + , number \ >(\ detail::BOOST_JOIN(func, _funct)() \ , arg,\ @@ -1568,7 +1640,7 @@ func(const number& arg, Arg2 const& a)\ return detail::expression<\ detail::function\ , detail::BOOST_JOIN(func, _funct) \ - , number \ + , number \ , Arg2\ >(\ detail::BOOST_JOIN(func, _funct)() \ diff --git a/include/boost/multiprecision/detail/et_ops.hpp b/include/boost/multiprecision/detail/et_ops.hpp index 1e35c9be..81fb9580 100644 --- a/include/boost/multiprecision/detail/et_ops.hpp +++ b/include/boost/multiprecision/detail/et_ops.hpp @@ -77,6 +77,66 @@ inline typename enable_if >(a, b); } // +// Fused multiply add: +// +template +inline typename enable_if::result_type>, + detail::expression::left_type, typename detail::expression::right_type, V> >::type + operator + (const V& a, const detail::expression& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, V>(b.left(), b.right(), a); +} +template +inline typename enable_if::result_type>, + detail::expression::left_type, typename detail::expression::right_type, V> >::type + operator + (const detail::expression& a, const V& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, V>(a.left(), a.right(), b); +} +template +inline detail::expression::left_type, typename detail::expression::right_type, number > + operator + (const number& a, const detail::expression& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, number >(b.left(), b.right(), a); +} +template +inline detail::expression::left_type, typename detail::expression::right_type, number > + operator + (const detail::expression& a, const number& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, number >(a.left(), a.right(), b); +} +// +// Fused multiply subtract: +// +template +inline typename enable_if::result_type>, + detail::expression::left_type, typename detail::expression::right_type, V> > >::type + operator - (const V& a, const detail::expression& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, V> > + (detail::expression::left_type, typename detail::expression::right_type, V>(b.left(), b.right(), a)); +} +template +inline typename enable_if::result_type>, + detail::expression::left_type, typename detail::expression::right_type, V> >::type + operator - (const detail::expression& a, const V& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, V>(a.left(), a.right(), b); +} +template +inline detail::expression::left_type, typename detail::expression::right_type, number > > + operator - (const number& a, const detail::expression& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, number > > + (detail::expression::left_type, typename detail::expression::right_type, number >(b.left(), b.right(), a)); +} +template +inline detail::expression::left_type, typename detail::expression::right_type, number > + operator - (const detail::expression& a, const number& b) +{ + return detail::expression::left_type, typename detail::expression::right_type, number >(a.left(), a.right(), b); +} +// // Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries: // template diff --git a/include/boost/multiprecision/detail/functions/constants.hpp b/include/boost/multiprecision/detail/functions/constants.hpp index 537b7bd1..b32f3f28 100644 --- a/include/boost/multiprecision/detail/functions/constants.hpp +++ b/include/boost/multiprecision/detail/functions/constants.hpp @@ -246,7 +246,7 @@ const T& get_constant_ln2() static bool b = false; if(!b) { - calc_log2(result, boost::multiprecision::detail::digits2 >::value); + calc_log2(result, boost::multiprecision::detail::digits2 >::value); b = true; } @@ -262,7 +262,7 @@ const T& get_constant_e() static bool b = false; if(!b) { - calc_e(result, boost::multiprecision::detail::digits2 >::value); + calc_e(result, boost::multiprecision::detail::digits2 >::value); b = true; } @@ -278,7 +278,7 @@ const T& get_constant_pi() static bool b = false; if(!b) { - calc_pi(result, boost::multiprecision::detail::digits2 >::value); + calc_pi(result, boost::multiprecision::detail::digits2 >::value); b = true; } diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index c0c2abc8..2ed9da1d 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -90,7 +90,7 @@ void hyp0F0(T& H0F0, const T& x) typedef typename mpl::front::type ui_type; BOOST_ASSERT(&H0F0 != &x); - long tol = boost::multiprecision::detail::digits2 >::value; + long tol = boost::multiprecision::detail::digits2 >::value; T t; T x_pow_n_div_n_fact(x); @@ -146,7 +146,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) eval_multiply(H1F0, pochham_a, x_pow_n_div_n_fact); eval_add(H1F0, si_type(1)); T lim; - eval_ldexp(lim, H1F0, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, H1F0, 1 - boost::multiprecision::detail::digits2 >::value); if(eval_get_sign(lim) < 0) lim.negate(); @@ -154,7 +154,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) T term, part; // Series expansion of hyperg_1f0(a; ; x). - for(n = 2; n < boost::multiprecision::detail::digits2 >::value + 10; n++) + for(n = 2; n < boost::multiprecision::detail::digits2 >::value + 10; n++) { eval_multiply(x_pow_n_div_n_fact, x); eval_divide(x_pow_n_div_n_fact, n); @@ -167,7 +167,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) if(lim.compare(term) >= 0) break; } - if(n >= boost::multiprecision::detail::digits2 >::value + 10) + if(n >= boost::multiprecision::detail::digits2 >::value + 10) BOOST_THROW_EXCEPTION(std::runtime_error("H1F0 failed to converge")); } @@ -193,7 +193,7 @@ void eval_exp(T& result, const T& x) bool isneg = eval_get_sign(x) < 0; if(type == FP_NAN) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; } else if(type == FP_INFINITE) @@ -218,7 +218,7 @@ void eval_exp(T& result, const T& x) xx.negate(); // Check the range of the argument. - static const canonical_exp_type maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? (std::numeric_limits::max)() : std::numeric_limits >::max_exponent; + static const canonical_exp_type maximum_arg_for_exp = std::numeric_limits >::max_exponent == 0 ? (std::numeric_limits::max)() : std::numeric_limits >::max_exponent; if(xx.compare(maximum_arg_for_exp) >= 0) { @@ -226,7 +226,7 @@ void eval_exp(T& result, const T& x) if(isneg) result = ui_type(0); else - result = std::numeric_limits >::has_infinity ? std::numeric_limits >::infinity().backend() : (std::numeric_limits >::max)().backend(); + result = std::numeric_limits >::has_infinity ? std::numeric_limits >::infinity().backend() : (std::numeric_limits >::max)().backend(); return; } if(xx.compare(si_type(1)) <= 0) @@ -234,7 +234,7 @@ void eval_exp(T& result, const T& x) // // Use series for exp(x) - 1: // - T lim = std::numeric_limits >::epsilon().backend(); + T lim = std::numeric_limits >::epsilon().backend(); unsigned k = 2; exp_series = xx; result = si_type(1); @@ -344,7 +344,7 @@ void eval_log(T& result, const T& arg) else eval_subtract(result, t); - eval_multiply(lim, result, std::numeric_limits >::epsilon().backend()); + eval_multiply(lim, result, std::numeric_limits >::epsilon().backend()); if(eval_get_sign(lim) < 0) lim.negate(); INSTRUMENT_BACKEND(lim); @@ -465,7 +465,7 @@ inline void eval_pow(T& result, const T& x, const T& a) if((eval_get_sign(x) < 0) && !bo_a_isint) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); } T t, da; @@ -564,7 +564,7 @@ namespace detail{ ui_type k = 1; T lim(x); - eval_ldexp(lim, lim, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, lim, 1 - boost::multiprecision::detail::digits2 >::value); do { diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index 4e57b070..e4086427 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -36,7 +36,7 @@ void hyp0F1(T& result, const T& b, const T& x) T tol; tol = ui_type(1); - eval_ldexp(tol, tol, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(tol, tol, 1 - boost::multiprecision::detail::digits2 >::value); eval_multiply(tol, result); if(eval_get_sign(tol) < 0) tol.negate(); @@ -87,7 +87,7 @@ void eval_sin(T& result, const T& x) { case FP_INFINITE: case FP_NAN: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(0); @@ -233,7 +233,7 @@ void eval_cos(T& result, const T& x) { case FP_INFINITE: case FP_NAN: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(1); @@ -391,7 +391,7 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) eval_add(result, ui_type(1)); T lim; - eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); if(eval_get_sign(lim) < 0) lim.negate(); @@ -447,7 +447,7 @@ void eval_asin(T& result, const T& x) { case FP_NAN: case FP_INFINITE: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(0); @@ -464,7 +464,7 @@ void eval_asin(T& result, const T& x) int c = xx.compare(ui_type(1)); if(c > 0) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; } else if(c == 0) @@ -524,7 +524,7 @@ void eval_asin(T& result, const T& x) eval_subtract(result, s); T lim; - eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); + eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2 >::value); if(eval_get_sign(s) < 0) s.negate(); if(eval_get_sign(lim) < 0) @@ -546,7 +546,7 @@ inline void eval_acos(T& result, const T& x) { case FP_NAN: case FP_INFINITE: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = get_constant_pi(); @@ -559,7 +559,7 @@ inline void eval_acos(T& result, const T& x) if(c > 0) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; } else if(c == 0) @@ -591,7 +591,7 @@ void eval_atan(T& result, const T& x) switch(eval_fpclassify(x)) { case FP_NAN: - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); return; case FP_ZERO: result = ui_type(0); @@ -656,7 +656,7 @@ void eval_atan(T& result, const T& x) static const boost::int32_t double_digits10_minus_a_few = std::numeric_limits::digits10 - 3; T s, c, t; - for(boost::int32_t digits = double_digits10_minus_a_few; digits <= std::numeric_limits >::digits10; digits *= 2) + for(boost::int32_t digits = double_digits10_minus_a_few; digits <= std::numeric_limits >::digits10; digits *= 2) { eval_sin(s, result); eval_cos(c, result); @@ -710,7 +710,7 @@ void eval_atan2(T& result, const T& y, const T& x) { if(eval_fpclassify(x) == FP_INFINITE) { - result = std::numeric_limits >::quiet_NaN().backend(); + result = std::numeric_limits >::quiet_NaN().backend(); } else { diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index 0f6ed2bd..b6f9c65f 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -20,7 +20,13 @@ enum expression_template_option et_on = 1 }; -template +template +struct expression_template_default +{ + static const expression_template_option value = et_on; +}; + +template ::value> class number; template @@ -180,6 +186,8 @@ struct bitwise_or_immediates{}; struct bitwise_xor_immediates{}; struct complement_immediates{}; struct function{}; +struct multiply_add{}; +struct multiply_subtract{}; template struct backend_type; @@ -207,7 +215,14 @@ template struct is_mp_number_exp > : public mpl::true_{}; template -struct combine_expression; +struct combine_expression +{ +#ifdef BOOST_NO_DECLTYPE + typedef typename mpl::if_c sizeof(T2) ? T1, T2>::type type; +#else + typedef decltype(T1() + T2()) type; +#endif +}; template struct combine_expression, T2> diff --git a/include/boost/multiprecision/detail/number_compare.hpp b/include/boost/multiprecision/detail/number_compare.hpp index dda75e64..00832838 100644 --- a/include/boost/multiprecision/detail/number_compare.hpp +++ b/include/boost/multiprecision/detail/number_compare.hpp @@ -152,14 +152,14 @@ inline typename enable_if_c& a, const Arithmetic& b) { using default_ops::eval_eq; - return !eval_eq(a.backend(), number::canonical_value(b)); + return !eval_eq(a.backend(), number::canonical_value(b)); } template inline typename enable_if_c, Arithmetic>::value, bool>::type operator != (const Arithmetic& a, const number& b) { using default_ops::eval_eq; - return !eval_eq(b.backend(), number::canonical_value(a)); + return !eval_eq(b.backend(), number::canonical_value(a)); } template inline typename enable_if_c::result_type, Arithmetic>::value, bool>::type diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 6495445b..5780cbe9 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1288,6 +1288,14 @@ inline void eval_add(gmp_int& t, const gmp_int& o) { mpz_add(t.data(), t.data(), o.data()); } +inline void eval_multiply_add(gmp_int& t, const gmp_int& a, const gmp_int& b) +{ + mpz_addmul(t.data(), a.data(), b.data()); +} +inline void eval_multiply_subtract(gmp_int& t, const gmp_int& a, const gmp_int& b) +{ + mpz_submul(t.data(), a.data(), b.data()); +} inline void eval_subtract(gmp_int& t, const gmp_int& o) { mpz_sub(t.data(), t.data(), o.data()); @@ -1310,6 +1318,14 @@ inline void eval_add(gmp_int& t, unsigned long i) { mpz_add_ui(t.data(), t.data(), i); } +inline void eval_multiply_add(gmp_int& t, const gmp_int& a, unsigned long i) +{ + mpz_addmul_ui(t.data(), a.data(), i); +} +inline void eval_multiply_subtract(gmp_int& t, const gmp_int& a, unsigned long i) +{ + mpz_submul_ui(t.data(), a.data(), i); +} inline void eval_subtract(gmp_int& t, unsigned long i) { mpz_sub_ui(t.data(), t.data(), i); @@ -1335,6 +1351,20 @@ inline void eval_add(gmp_int& t, long i) else mpz_sub_ui(t.data(), t.data(), -i); } +inline void eval_multiply_add(gmp_int& t, const gmp_int& a, long i) +{ + if(i > 0) + mpz_addmul_ui(t.data(), a.data(), i); + else + mpz_submul_ui(t.data(), a.data(), -i); +} +inline void eval_multiply_subtract(gmp_int& t, const gmp_int& a, long i) +{ + if(i > 0) + mpz_submul_ui(t.data(), a.data(), i); + else + mpz_addmul_ui(t.data(), a.data(), -i); +} inline void eval_subtract(gmp_int& t, long i) { if(i > 0) @@ -1895,19 +1925,6 @@ inline bool eval_is_zero(const gmp_rational& val) { return mpq_sgn(val.data()) == 0; } -inline number numerator(const number& val) -{ - number result; - mpz_set(result.backend().data(), (mpq_numref(val.backend().data()))); - return result; -} -inline number denominator(const number& val) -{ - number result; - mpz_set(result.backend().data(), (mpq_denref(val.backend().data()))); - return result; -} - template inline bool eval_eq(gmp_rational& a, const T& b) { @@ -2109,6 +2126,21 @@ struct component_type > typedef number type; }; +template +inline number numerator(const number& val) +{ + number result; + mpz_set(result.backend().data(), (mpq_numref(val.backend().data()))); + return result; +} +template +inline number denominator(const number& val) +{ + number result; + mpz_set(result.backend().data(), (mpq_denref(val.backend().data()))); + return result; +} + #ifdef BOOST_NO_SFINAE_EXPR namespace detail{ diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 2ec587b7..aae260c7 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -160,9 +160,9 @@ public: m_backend = canonical_value(v); return *this; } - template + template typename disable_if, number& >::type - assign(const number& v) + assign(const number& v) { // // Attempt a generic interconvertion: @@ -209,6 +209,17 @@ public: return *this; } + template + number& operator+=(const detail::expression& e) + { + // + // Fused multiply-add: + // + using default_ops::eval_multiply_add; + eval_multiply_add(m_backend, canonical_value(e.left_ref()), canonical_value(e.right_ref())); + return *this; + } + template typename enable_if, number& >::type operator+=(const V& v) @@ -249,6 +260,17 @@ public: return *this; } + template + number& operator-=(const detail::expression& e) + { + // + // Fused multiply-subtract: + // + using default_ops::eval_multiply_subtract; + eval_multiply_subtract(m_backend, canonical_value(e.left_ref()), canonical_value(e.right_ref())); + return *this; + } + number& operator *= (const self_type& e) { @@ -673,6 +695,18 @@ private: using default_ops::eval_multiply; eval_multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value())); } + template + void do_assign(const Exp& e, const detail::multiply_add&) + { + using default_ops::eval_multiply_add; + eval_multiply_add(m_backend, canonical_value(e.left().value()), canonical_value(e.middle().value()), canonical_value(e.right().value())); + } + template + void do_assign(const Exp& e, const detail::multiply_subtract&) + { + using default_ops::eval_multiply_subtract; + eval_multiply_subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.middle().value()), canonical_value(e.right().value())); + } template void do_assign(const Exp& e, const detail::divide_immediates&) @@ -710,13 +744,13 @@ private: // Ignore the right node, it's *this, just add the left: do_add(e.left(), typename left_type::tag_type()); } - else if(bl || br) + else if(bl && br) { self_type temp(e); temp.m_backend.swap(this->m_backend); } - else if(left_depth >= right_depth) - { + else if(bl || (left_depth >= right_depth)) + { // br is always false, but if bl is true we must take the this branch: do_assign(e.left(), typename left_type::tag_type()); do_add(e.right(), typename right_type::tag_type()); } @@ -749,13 +783,13 @@ private: do_subtract(e.left(), typename left_type::tag_type()); m_backend.negate(); } - else if(bl || br) + else if(bl && br) { self_type temp(e); temp.m_backend.swap(this->m_backend); } - else if(left_depth >= right_depth) - { + else if(bl || (left_depth >= right_depth)) + { // br is always false, but if bl is true we must take the this branch: do_assign(e.left(), typename left_type::tag_type()); do_subtract(e.right(), typename right_type::tag_type()); } @@ -788,13 +822,13 @@ private: // Ignore the right node, it's *this, just add the left: do_multiplies(e.left(), typename left_type::tag_type()); } - else if(bl || br) + else if(bl && br) { self_type temp(e); temp.m_backend.swap(this->m_backend); } - else if(left_depth >= right_depth) - { + else if(bl || (left_depth >= right_depth)) + { // br is always false, but if bl is true we must take the this branch: do_assign(e.left(), typename left_type::tag_type()); do_multiplies(e.right(), typename right_type::tag_type()); } @@ -818,7 +852,7 @@ private: // Ignore the left node, it's *this, just add the right: do_divide(e.right(), typename right_type::tag_type()); } - else if(bl || br) + else if(br) { self_type temp(e); temp.m_backend.swap(this->m_backend); @@ -848,7 +882,7 @@ private: // Ignore the left node, it's *this, just add the right: do_modulus(e.right(), typename right_type::tag_type()); } - else if(bl || br) + else if(br) { self_type temp(e); temp.m_backend.swap(this->m_backend); diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index b7a37ed8..b3f2ad16 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -213,17 +213,6 @@ inline int eval_get_sign(const rational_adapter& val) return eval_get_sign(val.data().numerator().backend()); } -template -inline number numerator(const number >& val) -{ - return val.backend().data().numerator(); -} -template -inline number denominator(const number >& val) -{ - return val.backend().data().denominator(); -} - template inline void assign_components(rational_adapter& result, const V& v1, const V& v2) { @@ -232,6 +221,9 @@ inline void assign_components(rational_adapter& result, const V& v1, } // namespace backends +template +struct expression_template_default > : public expression_template_default {}; + template struct number_category > : public mpl::int_{}; @@ -243,6 +235,17 @@ struct component_type > typedef number type; }; +template +inline number numerator(const number, ET>& val) +{ + return val.backend().data().numerator(); +} +template +inline number denominator(const number, ET>& val) +{ + return val.backend().data().denominator(); +} + #ifdef BOOST_NO_SFINAE_EXPR namespace detail{ diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 7128c20a..e38ea081 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1085,6 +1085,79 @@ void test_negative_mixed(boost::mpl::true_ const&) BOOST_TEST(c == 30); c = static_cast(n4) * a; BOOST_TEST(c == 50 * 20); + + n1 = -2; + n2 = -3; + n3 = -4; + a = static_cast(n1); + b = static_cast(n2); + c = static_cast(n3); + d = a + b * c; + BOOST_TEST(d == -2 + -3 * -4); + d = static_cast(n1) + b * c; + BOOST_TEST(d == -2 + -3 * -4); + d = a + static_cast(n2) * c; + BOOST_TEST(d == -2 + -3 * -4); + d = a + b * static_cast(n3); + BOOST_TEST(d == -2 + -3 * -4); + d = static_cast(n1) + static_cast(n2) * c; + BOOST_TEST(d == -2 + -3 * -4); + d = static_cast(n1) + b * static_cast(n3); + BOOST_TEST(d == -2 + -3 * -4); + a += static_cast(n2) * c; + BOOST_TEST(a == -2 + -3 * -4); + a = static_cast(n1); + a += b * static_cast(n3); + BOOST_TEST(a == -2 + -3 * -4); + a = static_cast(n1); + + d = b * c + a; + BOOST_TEST(d == -2 + -3 * -4); + d = b * c + static_cast(n1); + BOOST_TEST(d == -2 + -3 * -4); + d = static_cast(n2) * c + a; + BOOST_TEST(d == -2 + -3 * -4); + d = b * static_cast(n3) + a; + BOOST_TEST(d == -2 + -3 * -4); + d = static_cast(n2) * c + static_cast(n1); + BOOST_TEST(d == -2 + -3 * -4); + d = b * static_cast(n3) + static_cast(n1); + BOOST_TEST(d == -2 + -3 * -4); + + a = -20; + d = a - b * c; + BOOST_TEST(d == -20 - -3 * -4); + n1 = -20; + d = static_cast(n1) - b * c; + BOOST_TEST(d == -20 - -3 * -4); + d = a - static_cast(n2) * c; + BOOST_TEST(d == -20 - -3 * -4); + d = a - b * static_cast(n3); + BOOST_TEST(d == -20 - -3 * -4); + d = static_cast(n1) - static_cast(n2) * c; + BOOST_TEST(d == -20 - -3 * -4); + d = static_cast(n1) - b * static_cast(n3); + BOOST_TEST(d == -20 - -3 * -4); + a -= static_cast(n2) * c; + BOOST_TEST(a == -20 - -3 * -4); + a = static_cast(n1); + a -= b * static_cast(n3); + BOOST_TEST(a == -20 - -3 * -4); + + a = -2; + d = b * c - a; + BOOST_TEST(d == -3 * -4 - -2); + n1 = -2; + d = b * c - static_cast(n1); + BOOST_TEST(d == -3 * -4 - -2); + d = static_cast(n2) * c - a; + BOOST_TEST(d == -3 * -4 - -2); + d = b * static_cast(n3) - a; + BOOST_TEST(d == -3 * -4 - -2); + d = static_cast(n2) * c - static_cast(n1); + BOOST_TEST(d == -3 * -4 - -2); + d = b * static_cast(n3) - static_cast(n1); + BOOST_TEST(d == -3 * -4 - -2); } template @@ -1209,6 +1282,77 @@ void test_mixed(const boost::mpl::true_&) r = static_cast(4 * n4) / Real(4); BOOST_TEST(r == static_cast(n4)); test_negative_mixed(boost::mpl::bool_::is_signed>()); + + n1 = 2; + n2 = 3; + n3 = 4; + Real a(n1), b(n2), c(n3), d; + d = a + b * c; + BOOST_TEST(d == 2 + 3 * 4); + d = static_cast(n1) + b * c; + BOOST_TEST(d == 2 + 3 * 4); + d = a + static_cast(n2) * c; + BOOST_TEST(d == 2 + 3 * 4); + d = a + b * static_cast(n3); + BOOST_TEST(d == 2 + 3 * 4); + d = static_cast(n1) + static_cast(n2) * c; + BOOST_TEST(d == 2 + 3 * 4); + d = static_cast(n1) + b * static_cast(n3); + BOOST_TEST(d == 2 + 3 * 4); + a += static_cast(n2) * c; + BOOST_TEST(a == 2 + 3 * 4); + a = static_cast(n1); + a += b * static_cast(n3); + BOOST_TEST(a == 2 + 3 * 4); + a = static_cast(n1); + + d = b * c + a; + BOOST_TEST(d == 2 + 3 * 4); + d = b * c + static_cast(n1); + BOOST_TEST(d == 2 + 3 * 4); + d = static_cast(n2) * c + a; + BOOST_TEST(d == 2 + 3 * 4); + d = b * static_cast(n3) + a; + BOOST_TEST(d == 2 + 3 * 4); + d = static_cast(n2) * c + static_cast(n1); + BOOST_TEST(d == 2 + 3 * 4); + d = b * static_cast(n3) + static_cast(n1); + BOOST_TEST(d == 2 + 3 * 4); + + a = 20; + d = a - b * c; + BOOST_TEST(d == 20 - 3 * 4); + n1 = 20; + d = static_cast(n1) - b * c; + BOOST_TEST(d == 20 - 3 * 4); + d = a - static_cast(n2) * c; + BOOST_TEST(d == 20 - 3 * 4); + d = a - b * static_cast(n3); + BOOST_TEST(d == 20 - 3 * 4); + d = static_cast(n1) - static_cast(n2) * c; + BOOST_TEST(d == 20 - 3 * 4); + d = static_cast(n1) - b * static_cast(n3); + BOOST_TEST(d == 20 - 3 * 4); + a -= static_cast(n2) * c; + BOOST_TEST(a == 20 - 3 * 4); + a = static_cast(n1); + a -= b * static_cast(n3); + BOOST_TEST(a == 20 - 3 * 4); + + a = 2; + d = b * c - a; + BOOST_TEST(d == 3 * 4 - 2); + n1 = 2; + d = b * c - static_cast(n1); + BOOST_TEST(d == 3 * 4 - 2); + d = static_cast(n2) * c - a; + BOOST_TEST(d == 3 * 4 - 2); + d = b * static_cast(n3) - a; + BOOST_TEST(d == 3 * 4 - a); + d = static_cast(n2) * c - static_cast(n1); + BOOST_TEST(d == 3 * 4 - 2); + d = b * static_cast(n3) - static_cast(n1); + BOOST_TEST(d == 3 * 4 - 2); } template @@ -1612,6 +1756,19 @@ void test() BOOST_TEST(c == 20 * 30 + 22); c = 22 + (a * b); BOOST_TEST(c == 20 * 30 + 22); + c = 10; + ac = a + b * c; + BOOST_TEST(ac == 20 + 30 * 10); + ac = b * c + a; + BOOST_TEST(ac == 20 + 30 * 10); + a = a + b * c; + BOOST_TEST(a == 20 + 30 * 10); + a = 20; + b = a + b * c; + BOOST_TEST(b == 20 + 30 * 10); + b = 30; + c = a + b * c; + BOOST_TEST(c == 20 + 30 * 10); // // Test conditionals: @@ -1681,8 +1838,8 @@ int main() #endif #ifdef TEST_CPP_INT_3 // Again with "trivial" backends: - test, boost::multiprecision::et_off > >(); - test, boost::multiprecision::et_off > >(); + test > >(); + test > >(); #endif #ifdef TEST_CPP_INT_BR test >(); diff --git a/test/test_constants.cpp b/test/test_constants.cpp index 770b8721..b7f6afe9 100644 --- a/test/test_constants.cpp +++ b/test/test_constants.cpp @@ -159,8 +159,8 @@ inline bool is_mpfr(const T&) return false; } #if defined(TEST_MPFR_50) -template -inline bool is_mpfr(const boost::multiprecision::number >&) +template +inline bool is_mpfr(const boost::multiprecision::number, ET>&) { return true; } diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 591e550d..74ba8898 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -41,8 +41,8 @@ #include #if defined(TEST_MPF_50) -template -bool is_mpf(const boost::multiprecision::number >&) +template +bool is_mpf(const boost::multiprecision::number, ET>&) { return true; } #endif template From 5256e108a13835be2565380802bffd67c14a238f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 20 Sep 2012 18:21:07 +0000 Subject: [PATCH 240/256] Fix Intel -x64 failures. [SVN r80609] --- include/boost/multiprecision/cpp_int.hpp | 44 +++++++++---------- .../multiprecision/detail/number_base.hpp | 2 +- .../multiprecision/detail/number_compare.hpp | 2 +- test/test_arithmetic.cpp | 2 +- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 0436f657..14141b2b 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -1156,15 +1156,10 @@ public: typename enable_if_c< (MinBits2 <= MinBits) && (Signed || !Signed2) - >::type* = 0) + >::type* = 0) BOOST_NOEXCEPT : base_type() { - *this = static_cast< - typename boost::multiprecision::detail::canonical< - typename cpp_int_backend::local_limb_type, - cpp_int_backend - >::type - >(*other.limbs()); + *this->limbs() = static_cast::local_limb_type>(*other.limbs()); this->sign(other.sign()); } template @@ -1172,31 +1167,21 @@ public: typename disable_if_c< (MinBits2 <= MinBits) && (Signed || !Signed2) - >::type* = 0) + >::type* = 0) BOOST_NOEXCEPT : base_type() { - *this = static_cast< - typename boost::multiprecision::detail::canonical< - typename cpp_int_backend::local_limb_type, - cpp_int_backend - >::type - >(*other.limbs()); + *this->limbs() = static_cast::local_limb_type>(*other.limbs()); this->sign(other.sign()); } template - cpp_int_backend& operator = (const cpp_int_backend& other) + cpp_int_backend& operator = (const cpp_int_backend& other)BOOST_NOEXCEPT { - *this = static_cast< - typename boost::multiprecision::detail::canonical< - typename cpp_int_backend::local_limb_type, - cpp_int_backend - >::type - >(*other.limbs()); + *this->limbs() = static_cast::local_limb_type>(*other.limbs()); this->sign(other.sign()); return *this; } template - explicit cpp_int_backend(const cpp_int_backend& other) + explicit cpp_int_backend(const cpp_int_backend& other)BOOST_NOEXCEPT : base_type() { // We can only ever copy two limbs from other: @@ -1210,6 +1195,21 @@ public: } this->sign(other.sign()); } + template + cpp_int_backend& operator=(const cpp_int_backend& other)BOOST_NOEXCEPT + { + // We can only ever copy two limbs from other: + if(other.size() == 1) + { + *this->limbs() = *other.limbs(); + } + else + { + *this->limbs() = static_cast(*other.limbs()) | (static_cast(other.limbs()[1]) << (sizeof(limb_type) * CHAR_BIT)); + } + this->sign(other.sign()); + return *this; + } BOOST_FORCEINLINE void swap(cpp_int_backend& o) BOOST_NOEXCEPT { diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index b6f9c65f..37057c12 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -218,7 +218,7 @@ template struct combine_expression { #ifdef BOOST_NO_DECLTYPE - typedef typename mpl::if_c sizeof(T2) ? T1, T2>::type type; + typedef typename mpl::if_c<(sizeof(T1() + T2()) == sizeof(T1)), T1, T2>::type type; #else typedef decltype(T1() + T2()) type; #endif diff --git a/include/boost/multiprecision/detail/number_compare.hpp b/include/boost/multiprecision/detail/number_compare.hpp index 00832838..bd01c3d6 100644 --- a/include/boost/multiprecision/detail/number_compare.hpp +++ b/include/boost/multiprecision/detail/number_compare.hpp @@ -78,7 +78,7 @@ template struct is_valid_mixed_compare : public mpl::false_ {}; template -struct is_valid_mixed_compare, Val> : public is_convertible> {}; +struct is_valid_mixed_compare, Val> : public is_convertible > {}; template struct is_valid_mixed_compare, number > : public mpl::false_ {}; diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index e38ea081..ad1b78a6 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1383,7 +1383,7 @@ void test_members(Real) } template -void test_members(boost::rational v) +void test_members(boost::rational) { } From a857186cb4749bdccf692eb5443551667447bad2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 24 Oct 2012 16:00:05 +0000 Subject: [PATCH 241/256] Big "blow it away and start again" refactoring of cpp_int. Adds support for runtime checking, enumerated template params, fixed precision with allocator, and no "hidden" template parameters. [SVN r81054] --- include/boost/multiprecision/cpp_int.hpp | 3376 +++++------------ include/boost/multiprecision/cpp_int/add.hpp | 509 +++ .../boost/multiprecision/cpp_int/bitwise.hpp | 560 +++ .../boost/multiprecision/cpp_int/checked.hpp | 149 + .../multiprecision/cpp_int/comparison.hpp | 389 ++ .../multiprecision/cpp_int/cpp_int_config.hpp | 156 + .../boost/multiprecision/cpp_int/divide.hpp | 618 +++ .../boost/multiprecision/cpp_int/limits.hpp | 215 ++ include/boost/multiprecision/cpp_int/misc.hpp | 301 ++ .../boost/multiprecision/cpp_int/multiply.hpp | 288 ++ .../multiprecision/detail/cpp_int_core.hpp | 2 + .../detail/cpp_int_trivial_ops.hpp | 98 +- .../multiprecision/detail/default_ops.hpp | 12 +- .../multiprecision/detail/integer_ops.hpp | 8 +- .../boost/multiprecision/detail/no_et_ops.hpp | 4 +- .../multiprecision/detail/number_base.hpp | 27 +- test/Jamfile.v2 | 43 + test/include_test/cpp_int_include_test.cpp | 6 +- test/test_arithmetic.cpp | 108 +- test/test_cpp_int.cpp | 22 +- test/test_cpp_int_conv.cpp | 10 +- test/test_int_io.cpp | 29 +- test/test_numeric_limits.cpp | 4 +- 23 files changed, 4282 insertions(+), 2652 deletions(-) create mode 100644 include/boost/multiprecision/cpp_int/add.hpp create mode 100644 include/boost/multiprecision/cpp_int/bitwise.hpp create mode 100644 include/boost/multiprecision/cpp_int/checked.hpp create mode 100644 include/boost/multiprecision/cpp_int/comparison.hpp create mode 100644 include/boost/multiprecision/cpp_int/cpp_int_config.hpp create mode 100644 include/boost/multiprecision/cpp_int/divide.hpp create mode 100644 include/boost/multiprecision/cpp_int/limits.hpp create mode 100644 include/boost/multiprecision/cpp_int/misc.hpp create mode 100644 include/boost/multiprecision/cpp_int/multiply.hpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 14141b2b..c035de13 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -14,40 +14,148 @@ #include #include #include -#include +#include #include #include +#include +#include +#include namespace boost{ namespace multiprecision{ + namespace backends{ #ifdef BOOST_MSVC // warning C4127: conditional expression is constant #pragma warning(push) -#pragma warning(disable:4127 4351) +#pragma warning(disable:4127 4351 4293) #endif -template , bool trivial = is_void::value && (MinBits <= sizeof(double_limb_type) * CHAR_BIT) > +template > struct cpp_int_backend; -template , bool trivial = false> +template struct cpp_int_base; +// +// Traits class determines the maximum and minimum precision values: +// +template struct max_precision; -template -struct is_trivial_cpp_int; -template -struct is_trivial_cpp_int > +template +struct max_precision > { - typedef mpl::bool_ type; + static const unsigned value = is_void::value ? + static_unsigned_max::value + : (((MaxBits >= MinBits) && MaxBits) ? MaxBits : UINT_MAX); }; -template -struct cpp_int_base : private Allocator::template rebind::other +template struct min_precision; + +template +struct min_precision > +{ + static const unsigned value = (is_void::value ? static_unsigned_max::value : MinBits); +}; +// +// Traits class determines whether the number of bits precision requested could fit in a native type, +// we call this a "trivial" cpp_int: +// +template +struct is_trivial_cpp_int +{ + static const bool value = false; +}; + +template +struct is_trivial_cpp_int > +{ + typedef cpp_int_backend self; + static const bool value = is_void::value && (max_precision::value <= (sizeof(double_limb_type) * CHAR_BIT) - (SignType == signed_packed ? 1 : 0)); +}; + +template +struct is_trivial_cpp_int > +{ + static const bool value = true; +}; + +} // namespace backends +// +// Traits class to determine whether a cpp_int_backend is signed or not: +// +template +struct is_unsigned_number > + : public mpl::bool_<(SignType == unsigned_magnitude) || (SignType == unsigned_packed)>{}; + +namespace backends{ +// +// Traits class determines whether T should be implicitly convertible to U, or +// whether the constructor should be made explicit. The latter happens if we +// are losing the sign, or have fewer digits precision in the target type: +// +template +struct is_implicit_cpp_int_conversion; + +template +struct is_implicit_cpp_int_conversion, cpp_int_backend > +{ + typedef cpp_int_backend t1; + typedef cpp_int_backend t2; + static const bool value = + (is_signed_number::value || !is_signed_number::value) + && (max_precision::value <= max_precision::value); +}; + +// +// Traits class to determine whether operations on a cpp_int may throw: +// +template +struct is_non_throwing_cpp_int : public mpl::false_{}; +template +struct is_non_throwing_cpp_int > : public mpl::true_ {}; + +// +// Traits class, determines whether the cpp_int is fixed precision or not: +// +template +struct is_fixed_precision; +template +struct is_fixed_precision > + : public mpl::bool_ >::value != UINT_MAX> {}; + +namespace detail{ + +inline void verify_new_size(unsigned new_size, unsigned min_size, const mpl::int_&) +{ + if(new_size < min_size) + BOOST_THROW_EXCEPTION(std::overflow_error("Unable to allocate sufficient storage for the value of the result: value overflows the maximum allowable magnitude.")); +} +inline void verify_new_size(unsigned /*new_size*/, unsigned /*min_size*/, const mpl::int_&){} + +template +inline void verify_limb_mask(bool b, U limb, U mask, const mpl::int_&) +{ + // When we mask out "limb" with "mask", do we loose bits? If so it's an overflow error: + if(b && (limb & ~mask)) + BOOST_THROW_EXCEPTION(std::overflow_error("Overflow in cpp_int arithmetic: there is insufficient precision in the target type to hold all of the bits of the result.")); +} +template +inline void verify_limb_mask(bool /*b*/, U /*limb*/, U /*mask*/, const mpl::int_&){} + +} + +// +// Now define the various data layouts that are possible as partial specializations of the base class, +// starting with the default arbitrary precision signed integer type: +// +template +struct cpp_int_base : private Allocator::template rebind::other { typedef typename Allocator::template rebind::other allocator_type; typedef typename allocator_type::pointer limb_pointer; typedef typename allocator_type::const_pointer const_limb_pointer; + typedef mpl::int_ checked_type; // // Interface invariants: @@ -65,14 +173,12 @@ public: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(limb_type, max_limb_value = ~static_cast(0u)); BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits - 1)); - BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = - MinBits - ? MinBits / limb_bits + (MinBits % limb_bits ? 1 : 0) + BOOST_STATIC_CONSTANT(unsigned, internal_limb_count = + MinBits + ? MinBits / limb_bits + (MinBits % limb_bits ? 1 : 0) : sizeof(limb_data) / sizeof(limb_type)); BOOST_STATIC_CONSTANT(bool, variable = true); - BOOST_STATIC_ASSERT_MSG(Signed, "There is curently no support for unsigned arbitrary precision integers."); - private: union data_type { @@ -98,14 +204,14 @@ public: // // Direct construction: // - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(1), m_sign(false), m_internal(true) { } - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(1), m_sign(i < 0), m_internal(true) { } #if defined(BOOST_LITTLE_ENDIAN) - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false), m_internal(true) { } - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0), m_internal(true) { } #endif // @@ -118,9 +224,9 @@ public: BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_internal ? m_data.la : m_data.ld.data; } BOOST_FORCEINLINE unsigned capacity()const BOOST_NOEXCEPT { return m_internal ? internal_limb_count : m_data.ld.capacity; } BOOST_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; } - void sign(bool b) BOOST_NOEXCEPT - { - m_sign = b; + void sign(bool b) BOOST_NOEXCEPT + { + m_sign = b; // Check for zero value: if(m_sign && (m_limbs == 1)) { @@ -128,12 +234,19 @@ public: m_sign = false; } } - void resize(unsigned new_size) + void resize(unsigned new_size, unsigned min_size) { + static const unsigned max_limbs = MaxBits / (CHAR_BIT * sizeof(limb_type)) + (MaxBits % (CHAR_BIT * sizeof(limb_type)) ? 1 : 0); + // We never resize beyond MaxSize: + if(new_size > max_limbs) + new_size = max_limbs; + detail::verify_new_size(new_size, min_size, checked_type()); + // See if we have enough capacity already: unsigned cap = capacity(); if(new_size > cap) { - cap = (std::max)(cap * 4, new_size); + // Allocate a new buffer and copy everything over: + cap = (std::min)((std::max)(cap * 4, new_size), max_limbs); limb_pointer pl = allocator().allocate(cap); std::copy(limbs(), limbs() + size(), pl); if(!m_internal) @@ -157,12 +270,13 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_data(), m_limbs(1), m_sign(false), m_internal(true) {} BOOST_FORCEINLINE cpp_int_base(const cpp_int_base& o) : allocator_type(o), m_limbs(0), m_internal(true) { - resize(o.size()); + resize(o.size(), o.size()); std::copy(o.limbs(), o.limbs() + o.size(), limbs()); m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT : allocator_type(static_cast(o)), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) + cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT + : allocator_type(static_cast(o)), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) { if(m_internal) { @@ -207,7 +321,7 @@ public: { static_cast(*this) = static_cast(o); m_limbs = 0; - resize(o.size()); + resize(o.size(), o.size()); std::copy(o.limbs(), o.limbs() + o.size(), limbs()); m_sign = o.m_sign; } @@ -224,7 +338,7 @@ public: } BOOST_FORCEINLINE bool isneg()const BOOST_NOEXCEPT { - return m_sign; + return m_sign; } BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { @@ -235,11 +349,39 @@ public: } }; -template -struct cpp_int_base +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +#endif + +template +struct cpp_int_base : private Allocator::template rebind::other +{ + // + // There is currently no support for unsigned arbitrary precision arithmetic, largely + // because it's not clear what subtraction should do: + // + BOOST_STATIC_ASSERT_MSG(((sizeof(Allocator) == 0) && !is_void::value), "There is curently no support for unsigned arbitrary precision integers."); +}; +// +// Fixed precision (i.e. no allocator), signed-magnitude type with limb-usage count: +// +template +struct cpp_int_base { typedef limb_type* limb_pointer; typedef const limb_type* const_limb_pointer; + typedef mpl::int_ checked_type; // // Interface invariants: @@ -272,14 +414,14 @@ public: // // Direct construction: // - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(1), m_sign(false) {} - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT : m_wrapper(limb_type(i < 0 ? -i : i)), m_limbs(1), m_sign(i < 0) {} #if defined(BOOST_LITTLE_ENDIAN) - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false) {} - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0) {} #endif // @@ -290,8 +432,8 @@ public: BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } BOOST_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; } BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT - { - m_sign = b; + { + m_sign = b; // Check for zero value: if(m_sign && (m_limbs == 1)) { @@ -299,13 +441,15 @@ public: m_sign = false; } } - BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT + BOOST_FORCEINLINE void resize(unsigned new_size, unsigned min_size) BOOST_NOEXCEPT_IF((Checked == unchecked)) { m_limbs = static_cast((std::min)(new_size, internal_limb_count)); + detail::verify_new_size(m_limbs, min_size, checked_type()); } - BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT_IF((Checked == unchecked)) { limb_pointer p = limbs(); + detail::verify_limb_mask(m_limbs == internal_limb_count, p[internal_limb_count-1], upper_limb_mask, checked_type()); p[internal_limb_count-1] &= upper_limb_mask; while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; if((m_limbs == 1) && (!*p)) m_sign = false; // zero is always unsigned @@ -321,7 +465,7 @@ public: { if(this != &o) { - resize(o.size()); + resize(o.size(), o.size()); std::copy(o.limbs(), o.limbs() + o.size(), limbs()); m_sign = o.m_sign; } @@ -338,7 +482,7 @@ public: } BOOST_FORCEINLINE bool isneg()const BOOST_NOEXCEPT { - return m_sign; + return m_sign; } BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { @@ -348,12 +492,29 @@ public: std::swap(m_limbs, o.m_limbs); } }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template -struct cpp_int_base +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +#endif +// +// Fixed precision (i.e. no allocator), unsigned type with limb-usage count: +// +template +struct cpp_int_base { typedef limb_type* limb_pointer; typedef const limb_type* const_limb_pointer; + typedef mpl::int_ checked_type; // // Interface invariants: @@ -385,14 +546,14 @@ public: // // Direct construction: // - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(1) {} - BOOST_FORCEINLINE cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT : m_wrapper(limb_type(i < 0 ? -i : i)), m_limbs(1) { if(i < 0) negate(); } #ifdef BOOST_LITTLE_ENDIAN - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1) {} - BOOST_FORCEINLINE cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)) { if(i < 0) negate(); } #endif // @@ -403,13 +564,15 @@ public: BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } BOOST_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT { if(b) negate(); } - BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT + BOOST_FORCEINLINE void resize(unsigned new_size, unsigned min_size) BOOST_NOEXCEPT_IF((Checked == unchecked)) { m_limbs = (std::min)(new_size, internal_limb_count); + detail::verify_new_size(m_limbs, min_size, checked_type()); } - BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT_IF((Checked == unchecked)) { limb_pointer p = limbs(); + detail::verify_limb_mask(m_limbs == internal_limb_count, p[internal_limb_count-1], upper_limb_mask, checked_type()); p[internal_limb_count-1] &= upper_limb_mask; while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } @@ -424,26 +587,36 @@ public: { if(this != &o) { - resize(o.size()); + resize(o.size(), o.size()); std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } } - void negate() BOOST_NOEXCEPT +private: + void check_negate(const mpl::int_&) + { + BOOST_THROW_EXCEPTION(std::range_error("Attempt to negate an unsigned number.")); + } + void check_negate(const mpl::int_&){} +public: + void negate() BOOST_NOEXCEPT_IF((Checked == unchecked)) { // Not so much a negate as a complement - this gets called when subtraction // would result in a "negative" number: unsigned i; + if((m_limbs == 1) && (m_wrapper.m_data[0] == 0)) + return; // negating zero is always zero, and always OK. + check_negate(checked_type()); for(i = m_limbs; i < internal_limb_count; ++i) m_wrapper.m_data[i] = 0; m_limbs = internal_limb_count; for(i = 0; i < internal_limb_count; ++i) m_wrapper.m_data[i] = ~m_wrapper.m_data[i]; normalize(); - eval_increment(static_cast& >(*this)); + eval_increment(static_cast& >(*this)); } BOOST_FORCEINLINE BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT { - return false; + return false; } BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { @@ -452,7 +625,24 @@ public: std::swap(m_limbs, o.m_limbs); } }; +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +template +const unsigned cpp_int_base::limb_bits; +template +const limb_type cpp_int_base::max_limb_value; +template +const limb_type cpp_int_base::sign_bit_mask; +template +const unsigned cpp_int_base::internal_limb_count; +template +const bool cpp_int_base::variable; + +#endif +// +// Traits classes to figure out a native type with N bits, these vary from boost::uint_t only +// because some platforms have native integer types longer than long long, "really long long" anyone?? +// template struct trivial_limb_type_imp { @@ -467,18 +657,16 @@ struct trivial_limb_type_imp template struct trivial_limb_type : public trivial_limb_type_imp {}; - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4244 4293) // loss of data in initialization, shift count too large -#endif - -template -struct cpp_int_base +// +// Backend for fixed precision signed-magnitude type which will fit entirely inside a "double_limb_type": +// +template +struct cpp_int_base { typedef typename trivial_limb_type::type local_limb_type; typedef local_limb_type* limb_pointer; typedef const local_limb_type* const_limb_pointer; + typedef mpl::int_ checked_type; protected: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = MinBits < limb_bits ? (local_limb_type(1) << MinBits) -1 : (~local_limb_type(0))); @@ -490,20 +678,42 @@ private: // Interface invariants: // BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); +protected: + template + typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), T>::type check_in_range(T val, const mpl::int_&) + { + BOOST_MP_USING_ABS + typedef typename common_type::type common_type; + + if(static_cast(abs(val)) > static_cast(limb_mask)) + BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); + return val; + } + template + BOOST_CONSTEXPR T check_in_range(T val, const mpl::int_&) + { + return val; + } + + template + BOOST_CONSTEXPR T check_in_range(T val) + { + return check_in_range(val, checked_type()); + } public: // // Direct construction: // template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT - : m_data(i < 0 ? -i : i), m_sign(i < 0) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(check_in_range(i) < 0 ? static_cast(-i) : static_cast(i)), m_sign(i < 0) {} template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT - : m_data(i), m_sign(false) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(check_in_range(i))), m_sign(false) {} template - BOOST_FORCEINLINE cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT - : m_data(std::fabs(i)), m_sign(i < 0) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(std::fabs(check_in_range(i)))), m_sign(i < 0) {} // // Helper functions for getting at our internal data, and manipulating storage: // @@ -512,19 +722,23 @@ public: BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } BOOST_FORCEINLINE bool sign()const BOOST_NOEXCEPT { return m_sign; } BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT - { - m_sign = b; + { + m_sign = b; // Check for zero value: if(m_sign && !m_data) { m_sign = false; } } - BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT {} - BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void resize(unsigned new_size, unsigned min_size) { - if(!m_data) + detail::verify_new_size(2, min_size, checked_type()); + } + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT_IF((Checked == unchecked)) + { + if(!m_data) m_sign = false; // zero is always unsigned + detail::verify_limb_mask(true, m_data, limb_mask, checked_type()); m_data &= limb_mask; } @@ -547,7 +761,7 @@ public: } BOOST_FORCEINLINE bool isneg()const BOOST_NOEXCEPT { - return m_sign; + return m_sign; } BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { @@ -555,38 +769,74 @@ public: std::swap(m_data, o.m_data); } }; - -template -struct cpp_int_base +// +// Backend for unsigned fixed precision (i.e. no allocator) type which will fit entirely inside a "double_limb_type": +// +template +struct cpp_int_base { typedef typename trivial_limb_type::type local_limb_type; typedef local_limb_type* limb_pointer; typedef const local_limb_type* const_limb_pointer; private: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); - BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = MinBits < limb_bits ? (local_limb_type(1) << MinBits) -1 : (~local_limb_type(0))); + BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = (~local_limb_type(0)) >> (limb_bits - MinBits)); local_limb_type m_data; + typedef mpl::int_ checked_type; + // // Interface invariants: // BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); +protected: + template + typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), T>::type check_in_range(T val, const mpl::int_&, const mpl::true_&) + { + typedef typename common_type::type common_type; + + if(static_cast(val) > limb_mask) + BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); + } + template + typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), T>::type check_in_range(T val, const mpl::int_&, const mpl::false_&) + { + typedef typename common_type::type common_type; + + if(static_cast(val) > limb_mask) + BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); + if(val < 0) + BOOST_THROW_EXCEPTION(std::range_error("The argument to an unsigned cpp_int constructor was negative.")); + return val; + } + template + BOOST_FORCEINLINE BOOST_CONSTEXPR T check_in_range(T val, const mpl::int_&, const U&) + { + return val; + } + + template + BOOST_FORCEINLINE BOOST_CONSTEXPR T check_in_range(T val) + { + return check_in_range(val, checked_type(), is_unsigned()); + } public: // // Direct construction: // template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT - : m_data(i < 0 ? 1 + ~static_cast(-i) : static_cast(i)) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(check_in_range(i) < 0 ? 1 + ~static_cast(-i) : static_cast(i)) {} template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT - : m_data(i) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(check_in_range(i))) {} template - BOOST_FORCEINLINE cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT - : m_data(std::fabs(i)) + BOOST_FORCEINLINE cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(std::fabs(i))) { + check_in_range(i); if(i < 0) negate(); } @@ -602,9 +852,13 @@ public: if(b) negate(); } - BOOST_FORCEINLINE void resize(unsigned new_size) BOOST_NOEXCEPT {} - BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT + BOOST_FORCEINLINE void resize(unsigned new_size, unsigned min_size) { + detail::verify_new_size(2, min_size, checked_type()); + } + BOOST_FORCEINLINE void normalize() BOOST_NOEXCEPT_IF((Checked == unchecked)) + { + detail::verify_limb_mask(true, m_data, limb_mask, checked_type()); m_data &= limb_mask; } @@ -622,61 +876,70 @@ public: } BOOST_FORCEINLINE BOOST_CONSTEXPR bool isneg()const BOOST_NOEXCEPT { - return false; + return false; } BOOST_FORCEINLINE void do_swap(cpp_int_base& o) BOOST_NOEXCEPT { std::swap(m_data, o.m_data); } }; - -#ifdef BOOST_MSVC -#pragma warning(pop) +// +// Traits class, lets us know whether type T can be directly converted to the base type, +// used to enable/disable constructors etc: +// +template +struct is_allowed_cpp_int_base_conversion : public mpl::if_c< + is_same::value || is_same::value +#ifdef BOOST_LITTLE_ENDIAN + || is_same::value || is_same::value #endif - -template -const unsigned cpp_int_base::limb_bits; -template -const limb_type cpp_int_base::max_limb_value; -template -const limb_type cpp_int_base::sign_bit_mask; -template -const unsigned cpp_int_base::internal_limb_count; -template -const bool cpp_int_base::variable; - -template -const unsigned cpp_int_base::limb_bits; -template -const limb_type cpp_int_base::max_limb_value; -template -const limb_type cpp_int_base::sign_bit_mask; -template -const unsigned cpp_int_base::internal_limb_count; -template -const bool cpp_int_base::variable; - -template -const unsigned cpp_int_base::limb_bits; -template -const limb_type cpp_int_base::max_limb_value; -template -const limb_type cpp_int_base::sign_bit_mask; -template -const unsigned cpp_int_base::internal_limb_count; -template -const bool cpp_int_base::variable; - -template -struct cpp_int_backend : public cpp_int_base + || (is_trivial_cpp_int::value && is_arithmetic::value), + mpl::true_, + mpl::false_ + >::type +{}; +// +// Now the actual backend, normalising parameters passed to the base class: +// +template +struct cpp_int_backend + : public cpp_int_base< + min_precision >::value, + max_precision >::value, + SignType, + Checked, + Allocator, + is_trivial_cpp_int >::value> { - typedef cpp_int_backend self_type; - typedef cpp_int_base base_type; - typedef typename is_trivial_cpp_int::type trivial_tag; + typedef cpp_int_backend self_type; + typedef cpp_int_base< + min_precision::value, + max_precision::value, + SignType, + Checked, + Allocator, + is_trivial_cpp_int::value> base_type; + typedef mpl::bool_::value> trivial_tag; public: - typedef mpl::list signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list float_types; + typedef typename mpl::if_< + trivial_tag, + mpl::list< + signed char, short, int, long, + long long, signed_double_limb_type>, + mpl::list + >::type signed_types; + typedef typename mpl::if_< + trivial_tag, + mpl::list, + mpl::list + >::type unsigned_types; + typedef typename mpl::if_< + trivial_tag, + mpl::list, + mpl::list + >::type float_types; + typedef mpl::int_ checked_type; BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) : base_type(o) {} @@ -684,84 +947,207 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} #endif // - // These are templates, so that only args that are *exactly* the types specified are allowed, and conversions - // are not considered. Without this, conversions may be ambiguous. + // Direct construction from arithmetic type: // - template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT + template + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(Arg i, typename enable_if_c::value >::type const* = 0)BOOST_NOEXCEPT_IF((Checked == unchecked)) : base_type(i) {} - template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT - : base_type(i) {} -#if defined(BOOST_LITTLE_ENDIAN) - template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(LT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT - : base_type(i) {} - template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(SLT i, typename enable_if >::type const* = 0)BOOST_NOEXCEPT - : base_type(i) {} -#endif - - template - cpp_int_backend(const cpp_int_backend& other) + +private: + template + void do_assign(const cpp_int_backend& other, mpl::true_ const&, mpl::true_ const &) + { + // Assigning trivial type to trivial type: + this->check_in_range(*other.limbs()); + *this->limbs() = static_cast(*other.limbs()); + this->sign(other.sign()); + this->normalize(); + } + template + void do_assign(const cpp_int_backend& other, mpl::true_ const&, mpl::false_ const &) + { + // non-trivial to trivial narrowing conversion: + double_limb_type v = *other.limbs(); + if(other.size() > 1) + { + v |= static_cast(other.limbs()[1]) << bits_per_limb; + if((Checked == checked) && (other.size() > 2)) + { + BOOST_THROW_EXCEPTION(std::range_error("Assignment of a cpp_int that is out of range for the target type.")); + } + } + *this = v; + this->sign(other.sign()); + this->normalize(); + } + template + void do_assign(const cpp_int_backend& other, mpl::false_ const&, mpl::true_ const &) + { + // trivial to non-trivial, treat the trivial argument as if it were an unsigned arithmetic type, then set the sign afterwards: + *this = static_cast< + typename boost::multiprecision::detail::canonical< + typename cpp_int_backend::local_limb_type, + cpp_int_backend + >::type + >(*other.limbs()); + this->sign(other.sign()); + } + template + void do_assign(const cpp_int_backend& other, mpl::false_ const&, mpl::false_ const &) + { + // regular non-trivial to non-trivial assign: + this->resize(other.size(), other.size()); + std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs()); + this->sign(other.sign()); + this->normalize(); + } +public: + template + cpp_int_backend( + const cpp_int_backend& other, + typename enable_if_c, self_type>::value>::type* = 0) + : base_type() + { + do_assign( + other, + mpl::bool_::value>(), + mpl::bool_ >::value>()); + } + template + explicit cpp_int_backend( + const cpp_int_backend& other, + typename disable_if_c, self_type>::value>::type* = 0) + : base_type() + { + do_assign( + other, + mpl::bool_::value>(), + mpl::bool_ >::value>()); + } + template + cpp_int_backend& operator=( + const cpp_int_backend& other) + { + do_assign( + other, + mpl::bool_::value>(), + mpl::bool_ >::value>()); + return *this; + } +#if 0 + template + cpp_int_backend(const cpp_int_backend& other, typename enable_if_c >::value >::type* = 0) : base_type() { *this = static_cast< typename boost::multiprecision::detail::canonical< - typename cpp_int_backend::local_limb_type, - cpp_int_backend + typename cpp_int_backend::local_limb_type, + cpp_int_backend >::type >(*other.limbs()); this->sign(other.sign()); } - template - cpp_int_backend& operator=(const cpp_int_backend& other) + template + typename enable_if_c >::value, cpp_int_backend&>::type + operator=(const cpp_int_backend& other) { *this = static_cast< typename boost::multiprecision::detail::canonical< - typename cpp_int_backend::local_limb_type, - cpp_int_backend + typename cpp_int_backend::local_limb_type, + cpp_int_backend >::type >(*other.limbs()); this->sign(other.sign()); return *this; } - template - cpp_int_backend(const cpp_int_backend& other, + template + cpp_int_backend(const cpp_int_backend& other, typename enable_if_c< - (Signed || !Signed2) + ((is_signed_number >::value || !is_signed_number >::value) && (!is_void::value || (is_void::value && (MinBits >= MinBits2))) - >::type* = 0) + && !is_trivial_cpp_int >::value + && !is_trivial_cpp_int >::value) + >::type* = 0) : base_type() { - this->resize(other.size()); + this->resize(other.size(), other_size()); std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs()); this->sign(other.sign()); } - template - explicit cpp_int_backend(const cpp_int_backend& other, - typename disable_if_c< - (Signed || !Signed2) - && (!is_void::value || (is_void::value && (MinBits >= MinBits2))) - >::type* = 0) + template + explicit cpp_int_backend(const cpp_int_backend& other, + typename enable_if_c< + (!((is_signed_number >::value || !is_signed_number >::value) + && (!is_void::value || (is_void::value && (MinBits >= MinBits2)))) + && !is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value) + >::type* = 0) : base_type() { - this->resize(other.size()); + double_limb_type v = *other.limbs(); + if(other.size() > 1) + v |= static_cast(other.limbs()[1]) << bits_per_limb; + *this = v; + this->sign(other.sign()); + } + + template + explicit cpp_int_backend(const cpp_int_backend& other, + typename enable_if_c< + (!((is_signed_number >::value || !is_signed_number >::value)) + && (!is_void::value || (is_void::value && (MinBits >= MinBits2))) + && !is_trivial_cpp_int >::value + && !is_trivial_cpp_int >::value) + >::type* = 0) + : base_type() + { + this->resize(other.size(), other.size()); std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs()); this->sign(other.sign()); } - template - cpp_int_backend& operator=(const cpp_int_backend& other) + template + explicit cpp_int_backend(const cpp_int_backend& other, + typename enable_if_c< + (!((is_signed_number >::value || !is_signed_number >::value)) + && (!is_void::value || (is_void::value && (MinBits >= MinBits2))) + && !is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value) + >::type* = 0) + : base_type() { - this->resize(other.size()); + double_limb_type v = *other.limbs(); + if(other.size() > 1) + v |= static_cast(other.limbs()[1]) << bits_per_limb; + *this = v; + this->sign(other.sign()); + } + + template + typename enable_if_c<(!is_trivial_cpp_int >::value + && !is_trivial_cpp_int >::value), cpp_int_backend&>::type + operator=(const cpp_int_backend& other) + { + this->resize(other.size(), other.size()); std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs()); this->sign(other.sign()); return *this; } + template + typename enable_if_c<(!is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value), cpp_int_backend&>::type + operator=(const cpp_int_backend& other) + { + double_limb_type v = *other.limbs(); + if(other.size() > 1) + v |= static_cast(other.limbs()[1]) << bits_per_limb; + *this = v; + this->sign(other.sign()); + } +#endif BOOST_FORCEINLINE cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) { this->assign(o); @@ -774,32 +1160,45 @@ public: return *this; } #endif - BOOST_FORCEINLINE cpp_int_backend& operator = (limb_type i) BOOST_NOEXCEPT +private: + template + typename enable_if >::type do_assign_arithmetic(A val, const mpl::true_&) { - this->resize(1); + this->check_in_range(val); + *this->limbs() = static_cast(val); + this->normalize(); + } + template + typename disable_if >::type do_assign_arithmetic(A val, const mpl::true_&) + { + this->check_in_range(val); + *this->limbs() = (val < 0) ? static_cast(-val) : static_cast(val); + this->sign(val < 0); + this->normalize(); + } + BOOST_FORCEINLINE void do_assign_arithmetic(limb_type i, const mpl::false_&) BOOST_NOEXCEPT + { + this->resize(1, 1); *this->limbs() = i; this->sign(false); - return *this; } - BOOST_FORCEINLINE cpp_int_backend& operator = (signed_limb_type i) BOOST_NOEXCEPT + BOOST_FORCEINLINE void do_assign_arithmetic(signed_limb_type i, const mpl::false_&) BOOST_NOEXCEPT { - this->resize(1); + this->resize(1, 1); *this->limbs() = static_cast(std::abs(i)); this->sign(i < 0); - return *this; } - cpp_int_backend& operator = (double_limb_type i) BOOST_NOEXCEPT_IF(MinBits <= sizeof(double_limb_type) * CHAR_BIT) + void do_assign_arithmetic(double_limb_type i, const mpl::false_&) { BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); BOOST_STATIC_ASSERT(base_type::internal_limb_count >= 2); typename base_type::limb_pointer p = this->limbs(); *p = static_cast(i); p[1] = static_cast(i >> base_type::limb_bits); - this->resize(p[1] ? 2 : 1); + this->resize(p[1] ? 2 : 1, p[1] ? 2 : 1); this->sign(false); - return *this; } - cpp_int_backend& operator = (signed_double_limb_type i) BOOST_NOEXCEPT_IF(MinBits <= sizeof(signed_double_limb_type) * CHAR_BIT) + void do_assign_arithmetic(signed_double_limb_type i, const mpl::false_&) { BOOST_STATIC_ASSERT(sizeof(i) == 2 * sizeof(limb_type)); BOOST_STATIC_ASSERT(base_type::internal_limb_count >= 2); @@ -814,12 +1213,11 @@ public: typename base_type::limb_pointer p = this->limbs(); *p = static_cast(i); p[1] = static_cast(i >> base_type::limb_bits); - this->resize(p[1] ? 2 : 1); + this->resize(p[1] ? 2 : 1, p[1] ? 2 : 1); this->sign(s); - return *this; } - cpp_int_backend& operator = (long double a) BOOST_NOEXCEPT_IF(MinBits <= sizeof(long double) * CHAR_BIT) + void do_assign_arithmetic(long double a, const mpl::false_&) { using default_ops::eval_add; using default_ops::eval_subtract; @@ -828,11 +1226,11 @@ public: using std::floor; if (a == 0) { - return *this = static_cast(0u); + *this = static_cast(0u); } if (a == 1) { - return *this = static_cast(1u); + *this = static_cast(1u); } BOOST_ASSERT(!(boost::math::isinf)(a)); @@ -863,9 +1261,67 @@ public: eval_left_shift(*this, e); else if(e < 0) eval_right_shift(*this, -e); + } +public: + template + BOOST_FORCEINLINE cpp_int_backend& operator = (Arithmetic val) + { + do_assign_arithmetic(val, trivial_tag()); return *this; } - cpp_int_backend& operator = (const char* s) +private: + void do_assign_string(const char* s, const mpl::true_&) + { + std::size_t n = s ? std::strlen(s) : 0; + *this->limbs() = 0; + unsigned radix = 10; + bool isneg = false; + if(n && (*s == '-')) + { + --n; + ++s; + isneg = true; + } + if(n && (*s == '0')) + { + if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) + { + radix = 16; + s +=2; + n -= 2; + } + else + { + radix = 8; + n -= 1; + } + } + if(n) + { + unsigned val; + while(*s) + { + if(*s >= '0' && *s <= '9') + val = *s - '0'; + else if(*s >= 'a' && *s <= 'f') + val = 10 + *s - 'a'; + else if(*s >= 'A' && *s <= 'F') + val = 10 + *s - 'A'; + else + val = radix + 1; + if(val > radix) + { + BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); + } + *this->limbs() = detail::checked_multiply(*this->limbs(), static_cast(radix), checked_type()); + *this->limbs() = detail::checked_add(*this->limbs(), static_cast(val), checked_type()); + ++s; + } + } + if(isneg) + this->negate(); + } + void do_assign_string(const char* s, const mpl::false_&) { using default_ops::eval_multiply; using default_ops::eval_add; @@ -961,14 +1417,121 @@ public: } if(isneg) this->negate(); + } +public: + cpp_int_backend& operator = (const char* s) + { + do_assign_string(s, trivial_tag()); return *this; } BOOST_FORCEINLINE void swap(cpp_int_backend& o) BOOST_NOEXCEPT { this->do_swap(o); } - std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const +private: + std::string do_get_trivial_string(std::ios_base::fmtflags f, const mpl::false_&)const { + if(this->sign() && (((f & std::ios_base::hex) == std::ios_base::hex) || ((f & std::ios_base::oct) == std::ios_base::oct))) + BOOST_THROW_EXCEPTION(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported.")); + std::stringstream ss; + ss.flags(f & ~std::ios_base::showpos); + ss << *this->limbs(); + std::string result; + if(this->sign()) + result += '-'; + else if(f & std::ios_base::showpos) + result += '+'; + result += ss.str(); + return result; + } + std::string do_get_trivial_string(std::ios_base::fmtflags f, const mpl::true_&)const + { + // Even though we have only one limb, we can't do IO on it :-( + int base = 10; + if((f & std::ios_base::oct) == std::ios_base::oct) + base = 8; + else if((f & std::ios_base::hex) == std::ios_base::hex) + base = 16; + std::string result; + + unsigned Bits = base_type::limb_bits; + + if(base == 8 || base == 16) + { + if(this->sign()) + BOOST_THROW_EXCEPTION(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported.")); + limb_type shift = base == 8 ? 3 : 4; + limb_type mask = static_cast((1u << shift) - 1); + typename base_type::local_limb_type v = *this->limbs(); + result.assign(Bits / shift + (Bits % shift ? 1 : 0), '0'); + int pos = result.size() - 1; + for(unsigned i = 0; i < Bits / shift; ++i) + { + char c = '0' + static_cast(v & mask); + if(c > '9') + c += 'A' - '9' - 1; + result[pos--] = c; + v >>= shift; + } + if(Bits % shift) + { + mask = static_cast((1u << (Bits % shift)) - 1); + char c = '0' + static_cast(v & mask); + if(c > '9') + c += 'A' - '9'; + result[pos] = c; + } + // + // Get rid of leading zeros: + // + std::string::size_type n = result.find_first_not_of('0'); + if(!result.empty() && (n == std::string::npos)) + n = result.size() - 1; + result.erase(0, n); + if(f & std::ios_base::showbase) + { + const char* pp = base == 8 ? "0" : "0x"; + result.insert(0, pp); + } + } + else + { + result.assign(Bits / 3 + 1, '0'); + int pos = result.size() - 1; + typename base_type::local_limb_type v(*this->limbs()); + bool neg = false; + if(this->sign()) + { + neg = true; + } + while(v) + { + result[pos] = (v % 10) + '0'; + --pos; + v /= 10; + } + unsigned n = result.find_first_not_of('0'); + result.erase(0, n); + if(result.empty()) + result = "0"; + if(neg) + result.insert(0, 1, '-'); + else if(f & std::ios_base::showpos) + result.insert(0, 1, '+'); + } + return result; + } + std::string do_get_string(std::ios_base::fmtflags f, const mpl::true_&)const + { +#ifdef BOOST_MP_NO_DOUBLE_LIMB_TYPE_IO + return do_get_trivial_string(f, mpl::bool_::value>()); +#else + return do_get_trivial_string(f, mpl::bool_()); +#endif + } + std::string do_get_string(std::ios_base::fmtflags f, const mpl::false_&)const + { + using default_ops::eval_get_sign; int base = 10; if((f & std::ios_base::oct) == std::ios_base::oct) base = 8; @@ -1063,21 +1626,69 @@ public: } return result; } - template - int compare(const cpp_int_backend& o)const BOOST_NOEXCEPT +public: + std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const + { + return do_get_string(f, trivial_tag()); + } + template + typename enable_if_c< + !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value, + int + >::type compare(const cpp_int_backend& o)const BOOST_NOEXCEPT { if(this->sign() != o.sign()) return this->sign() ? -1 : 1; - int result = 0; + // Only do the compare if the same sign: - result = compare_unsigned(o); + int result = compare_unsigned(o); if(this->sign()) result = -result; return result; } - template - int compare_unsigned(const cpp_int_backend& o)const BOOST_NOEXCEPT + template + typename enable_if_c< + is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value, + int + >::type compare(const cpp_int_backend& o)const + { + cpp_int_backend t(*this); + return t.compare(o); + } + template + typename enable_if_c< + !is_trivial_cpp_int >::value && is_trivial_cpp_int >::value, + int + >::type compare(const cpp_int_backend& o)const + { + cpp_int_backend t(o); + return compare(t); + } + template + typename enable_if_c< + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value, + int + >::type compare(const cpp_int_backend& o)const BOOST_NOEXCEPT + { + if(this->sign()) + { + if(o.sign()) + { + return *this->limbs() < *o.limbs() ? 1 : (*this->limbs() > *o.limbs() ? -1 : 0); + } + else + return -1; + } + else + { + if(o.sign()) + return 1; + return *this->limbs() < *o.limbs() ? -1 : (*this->limbs() > *o.limbs() ? 1 : 0); + } + } + template + int compare_unsigned(const cpp_int_backend& o)const BOOST_NOEXCEPT { if(this->size() != o.size()) { @@ -1093,7 +1704,7 @@ public: return 0; } template - BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmetic i)const BOOST_NOEXCEPT + BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmetic i)const { // braindead version: cpp_int_backend t; @@ -1102,2363 +1713,72 @@ public: } }; -template -struct cpp_int_backend : public cpp_int_base -{ -public: - typedef cpp_int_backend self_type; - typedef cpp_int_base base_type; - typedef typename is_trivial_cpp_int::type trivial_tag; - typedef mpl::list< - signed char, short, int, long, - long long, signed_double_limb_type> signed_types; - typedef mpl::list unsigned_types; - typedef mpl::list float_types; +} // namespace backends - BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(typename base_type::local_limb_type) * CHAR_BIT); - - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT : base_type(o) {} - BOOST_FORCEINLINE cpp_int_backend& operator = (const cpp_int_backend& o) BOOST_NOEXCEPT - { - this->assign(o); - return *this; - } - - template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(A i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT - : base_type(i) {} - - template - BOOST_FORCEINLINE typename enable_if, cpp_int_backend&>::type operator = (SI i) BOOST_NOEXCEPT - { - *this->limbs() = static_cast(std::abs(i)); - this->sign(i < 0); - return *this; - } - template - BOOST_FORCEINLINE typename enable_if, cpp_int_backend&>::type operator = (UI i) BOOST_NOEXCEPT - { - *this->limbs() = static_cast(i); - return *this; - } - template - BOOST_FORCEINLINE typename enable_if, cpp_int_backend&>::type operator = (F i) BOOST_NOEXCEPT - { - *this->limbs() = static_cast(std::abs(i)); - this->sign(i < 0); - return *this; - } - - template - cpp_int_backend(const cpp_int_backend& other, - typename enable_if_c< - (MinBits2 <= MinBits) - && (Signed || !Signed2) - >::type* = 0) BOOST_NOEXCEPT - : base_type() - { - *this->limbs() = static_cast::local_limb_type>(*other.limbs()); - this->sign(other.sign()); - } - template - explicit cpp_int_backend(const cpp_int_backend& other, - typename disable_if_c< - (MinBits2 <= MinBits) - && (Signed || !Signed2) - >::type* = 0) BOOST_NOEXCEPT - : base_type() - { - *this->limbs() = static_cast::local_limb_type>(*other.limbs()); - this->sign(other.sign()); - } - template - cpp_int_backend& operator = (const cpp_int_backend& other)BOOST_NOEXCEPT - { - *this->limbs() = static_cast::local_limb_type>(*other.limbs()); - this->sign(other.sign()); - return *this; - } - template - explicit cpp_int_backend(const cpp_int_backend& other)BOOST_NOEXCEPT - : base_type() - { - // We can only ever copy two limbs from other: - if(other.size() == 1) - { - *this->limbs() = *other.limbs(); - } - else - { - *this->limbs() = static_cast(*other.limbs()) | (static_cast(other.limbs()[1]) << (sizeof(limb_type) * CHAR_BIT)); - } - this->sign(other.sign()); - } - template - cpp_int_backend& operator=(const cpp_int_backend& other)BOOST_NOEXCEPT - { - // We can only ever copy two limbs from other: - if(other.size() == 1) - { - *this->limbs() = *other.limbs(); - } - else - { - *this->limbs() = static_cast(*other.limbs()) | (static_cast(other.limbs()[1]) << (sizeof(limb_type) * CHAR_BIT)); - } - this->sign(other.sign()); - return *this; - } - - BOOST_FORCEINLINE void swap(cpp_int_backend& o) BOOST_NOEXCEPT - { - this->do_swap(o); - } -private: - std::string str(std::ios_base::fmtflags f, const mpl::false_&)const - { - std::stringstream ss; - ss.flags(f & ~std::ios_base::showpos); - ss << *this->limbs(); - std::string result; - if(this->sign()) - result += '-'; - else if(f & std::ios_base::showpos) - result += '+'; - result += ss.str(); - return result; - } - std::string str(std::ios_base::fmtflags f, const mpl::true_&)const - { - // Even though we have only one limb, we can't do IO on it :-( - int base = 10; - if((f & std::ios_base::oct) == std::ios_base::oct) - base = 8; - else if((f & std::ios_base::hex) == std::ios_base::hex) - base = 16; - std::string result; - - unsigned Bits = base_type::limb_bits; - - if(base == 8 || base == 16) - { - if(this->sign()) - BOOST_THROW_EXCEPTION(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported.")); - limb_type shift = base == 8 ? 3 : 4; - limb_type mask = static_cast((1u << shift) - 1); - typename base_type::local_limb_type v = *this->limbs(); - result.assign(Bits / shift + (Bits % shift ? 1 : 0), '0'); - int pos = result.size() - 1; - for(unsigned i = 0; i < Bits / shift; ++i) - { - char c = '0' + static_cast(v & mask); - if(c > '9') - c += 'A' - '9' - 1; - result[pos--] = c; - v >>= shift; - } - if(Bits % shift) - { - mask = static_cast((1u << (Bits % shift)) - 1); - char c = '0' + static_cast(v & mask); - if(c > '9') - c += 'A' - '9'; - result[pos] = c; - } - // - // Get rid of leading zeros: - // - std::string::size_type n = result.find_first_not_of('0'); - if(!result.empty() && (n == std::string::npos)) - n = result.size() - 1; - result.erase(0, n); - if(f & std::ios_base::showbase) - { - const char* pp = base == 8 ? "0" : "0x"; - result.insert(0, pp); - } - } - else - { - result.assign(Bits / 3 + 1, '0'); - int pos = result.size() - 1; - typename base_type::local_limb_type v(*this->limbs()); - bool neg = false; - if(this->sign()) - { - neg = true; - } - while(v) - { - result[pos] = (v % 10) + '0'; - --pos; - v /= 10; - } - unsigned n = result.find_first_not_of('0'); - result.erase(0, n); - if(result.empty()) - result = "0"; - if(neg) - result.insert(0, 1, '-'); - else if(f & std::ios_base::showpos) - result.insert(0, 1, '+'); - } - return result; - } -public: - cpp_int_backend& operator = (const char* s) - { - std::size_t n = s ? std::strlen(s) : 0; - *this->limbs() = 0; - unsigned radix = 10; - bool isneg = false; - if(n && (*s == '-')) - { - --n; - ++s; - isneg = true; - } - if(n && (*s == '0')) - { - if((n > 1) && ((s[1] == 'x') || (s[1] == 'X'))) - { - radix = 16; - s +=2; - n -= 2; - } - else - { - radix = 8; - n -= 1; - } - } - if(n) - { - unsigned val; - while(*s) - { - if(*s >= '0' && *s <= '9') - val = *s - '0'; - else if(*s >= 'a' && *s <= 'f') - val = 10 + *s - 'a'; - else if(*s >= 'A' && *s <= 'F') - val = 10 + *s - 'A'; - else - val = radix + 1; - if(val > radix) - { - BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); - } - *this->limbs() *= radix; - *this->limbs() += val; - ++s; - } - } - if(isneg) - this->negate(); - return *this; - } - std::string str(std::streamsize /*digits*/, std::ios_base::fmtflags f)const - { -#ifdef BOOST_MP_NO_DOUBLE_LIMB_TYPE_IO - return str(f, mpl::bool_::value>()); -#else - return str(f, mpl::bool_()); -#endif - } - int compare(const cpp_int_backend& o)const BOOST_NOEXCEPT - { - if(this->sign() != o.sign()) - return this->sign() ? -1 : 1; - int result = 0; - // Only do the compare if the same sign: - result = *this->limbs() == *o.limbs() ? 0 : *this->limbs() < *o.limbs() ? -1 : 1; - - if(this->sign()) - result = -result; - return result; - } - template - BOOST_FORCEINLINE typename enable_if, int>::type compare(Arithmetic i)const BOOST_NOEXCEPT - { - // braindead version: - cpp_int_backend t; - t = i; - return compare(t); - } -}; - -template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT -{ - return (a.sign() == b.sign()) - && (a.size() == b.size()) - && std::equal(a.limbs(), a.limbs() + a.size(), b.limbs()); -} -template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT -{ - return (a.sign() == b.sign()) - && (a.size() == b.size()) - && std::equal(a.limbs(), a.limbs() + a.size(), b.limbs()); -} -template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT -{ - return (a.sign() == false) - && (a.size() == 1) - && (*a.limbs() == b); -} -template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT -{ - return (a.sign() == (b < 0)) - && (a.size() == 1) - && (*a.limbs() == static_cast(std::abs(b))); -} -template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT -{ - return (a.size() == 1) - && (*a.limbs() == b); -} -template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT -{ - return (b < 0) ? eval_eq(a, cpp_int_backend(b)) : eval_eq(a, static_cast(b)); // Use bit pattern of b for comparison -} - -template -BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT -{ - if(a.sign()) - return true; - if(a.size() > 1) - return false; - return *a.limbs() < b; -} -template -inline bool eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT -{ - if((b == 0) || (a.sign() != (b < 0))) - return a.sign(); - if(a.sign()) - { - if(a.size() > 1) - return true; - return *a.limbs() > static_cast(std::abs(b)); - } - else - { - if(a.size() > 1) - return false; - return *a.limbs() < static_cast(b); - } -} - -template -BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT -{ - if(a.size() > 1) - return false; - return *a.limbs() < b; -} -template -BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT -{ - return (b < 0) ? a.compare(b) < 0 : eval_lt(a, static_cast(b)); // Use bit pattern of b for comparison -} - -template -BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT -{ - if(a.sign()) - return false; - if(a.size() > 1) - return true; - return *a.limbs() > b; -} -template -inline bool eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT -{ - if(b == 0) - return !a.sign() && ((a.size() > 1) || *a.limbs()); - if(a.sign() != (b < 0)) - return !a.sign(); - if(a.sign()) - { - if(a.size() > 1) - return false; - return *a.limbs() < static_cast(std::abs(b)); - } - else - { - if(a.size() > 1) - return true; - return *a.limbs() > static_cast(b); - } -} - -template -BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT -{ - if(a.size() > 1) - return true; - return *a.limbs() > b; -} -template -BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT -{ - return (b < 0) ? a.compare(b) > 0 : eval_gt(a, static_cast(b)); // Use bit pattern of b for comparison. -} - -template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - eval_add(result, result, o); -} -template -inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - using std::swap; - - // Nothing fancy, just let uintmax_t take the strain: - double_limb_type carry = 0; - unsigned m, x; - unsigned as = a.size(); - unsigned bs = b.size(); - minmax(as, bs, m, x); - if(x == 1) - { - bool s = a.sign(); - result = static_cast(*a.limbs()) + static_cast(*b.limbs()); - result.sign(s); - return; - } - result.resize(x); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::limb_pointer pr_end = pr + m; - - if(as < bs) - swap(pa, pb); - - // First where a and b overlap: - while(pr != pr_end) - { - carry += static_cast(*pa) + static_cast(*pb); - *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - ++pr, ++pa, ++pb; - } - pr_end += x - m; - // Now where only a has digits: - while(pr != pr_end) - { - if(!carry) - { - if(pa != pr) - std::copy(pa, pa + (pr_end - pr), pr); - break; - } - carry += static_cast(*pa); - *pr = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - ++pr, ++pa; - } - if(carry) - { - result.resize(x + 1); - // We overflowed, need to add one more limb: - if(cpp_int_backend::variable || (result.size() > x)) - result.limbs()[x] = static_cast(carry); - } - result.normalize(); - result.sign(a.sign()); -} -template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(a.sign() != b.sign()) - { - subtract_unsigned(result, a, b); - return; - } - add_unsigned(result, a, b); -} - -template -inline void add_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - // Addition using modular arithmatic. - // Nothing fancy, just let uintmax_t take the strain: - if(&result != &a) - result.resize(a.size()); - double_limb_type carry = o; - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - unsigned i = 0; - for(; carry && (i < result.size()); ++i) - { - carry += static_cast(pa[i]); - pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - } - if(&a != &result) - { - for(; i < result.size(); ++i) - pr[i] = pa[i]; - } - if(carry) - { - unsigned x = result.size(); - result.resize(x + 1); - // We overflowed, need to add one more limb: - if(cpp_int_backend::variable || (result.size() > x)) - result.limbs()[x] = static_cast(carry); - } - result.normalize(); - result.sign(a.sign()); -} -template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(result.sign()) - { - subtract_unsigned(result, o); - } - else - add_unsigned(result, result, o); -} -template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(a.sign()) - { - result = a; - subtract_unsigned(result, o); - } - else - add_unsigned(result, a, o); -} -template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(o < 0) - eval_subtract(result, static_cast(-o)); - else if(o > 0) - eval_add(result, static_cast(o)); -} -template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(o < 0) - eval_subtract(result, a, static_cast(-o)); - else if(o > 0) - eval_add(result, a, static_cast(o)); - else if(&result != &a) - result = a; -} - -template -inline void subtract_unsigned(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - // Subtract one limb. - // Nothing fancy, just let uintmax_t take the strain: - BOOST_STATIC_CONSTANT(double_limb_type, borrow = static_cast(cpp_int_backend::max_limb_value) + 1); - typename cpp_int_backend::limb_pointer p = result.limbs(); - if(*p > o) - { - *p -= o; - } - else if(result.size() == 1) - { - *p = o - *p; - result.negate(); - } - else - { - *p = static_cast((borrow + *p) - o); - ++p; - while(!*p) - { - *p = cpp_int_backend::max_limb_value; - ++p; - } - --*p; - result.normalize(); - } -} -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(result.sign()) - { - add_unsigned(result, result, o); - } - else - subtract_unsigned(result, o); -} -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(a.sign()) - { - add_unsigned(result, a, o); - } - else - { - result = a; - subtract_unsigned(result, o); - } -} -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(o) - { - if(o < 0) - eval_add(result, static_cast(-o)); - else - eval_subtract(result, static_cast(o)); - } -} -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(o) - { - if(o < 0) - eval_add(result, a, static_cast(-o)); - else - eval_subtract(result, a, static_cast(o)); - } - else if(&result != &a) - result = a; -} -template -BOOST_FORCEINLINE void eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - static const limb_type one = 1; - if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) - ++result.limbs()[0]; - else if(result.sign() && result.limbs()[0]) - --result.limbs()[0]; - else - eval_add(result, one); -} -template -BOOST_FORCEINLINE void eval_decrement(cpp_int_backend& result) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - static const limb_type one = 1; - if(!result.sign() && result.limbs()[0]) - --result.limbs()[0]; - else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) - ++result.limbs()[0]; - else - eval_subtract(result, one); -} -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - eval_subtract(result, result, o); -} -template -inline void subtract_unsigned(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - using std::swap; - - // Nothing fancy, just let uintmax_t take the strain: - double_limb_type borrow = 0; - unsigned m, x; - minmax(a.size(), b.size(), m, x); - // - // special cases for small limb counts: - // - if(x == 1) - { - bool s = a.sign(); - limb_type al = *a.limbs(); - limb_type bl = *b.limbs(); - if(bl > al) - { - std::swap(al, bl); - s = !s; - } - result = al - bl; - result.sign(s); - return; - } - // This isn't used till later, but comparison has to occur before we resize the result, - // as that may also resize a or b if this is an inplace operation: - int c = a.compare_unsigned(b); - // Set up the result vector: - result.resize(x); - // Now that a, b, and result are stable, get pointers to their limbs: - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - bool swapped = false; - if(c < 0) - { - swap(pa, pb); - swapped = true; - } - else if(c == 0) - { - result = static_cast(0); - return; - } - - unsigned i = 0; - // First where a and b overlap: - while(i < m) - { - borrow = static_cast(pa[i]) - static_cast(pb[i]) - borrow; - pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; - ++i; - } - // Now where only a has digits, only as long as we've borrowed: - while(borrow && (i < x)) - { - borrow = static_cast(pa[i]) - borrow; - pr[i] = static_cast(borrow); - borrow = (borrow >> cpp_int_backend::limb_bits) & 1u; - ++i; - } - // Any remaining digits are the same as those in pa: - if((x != i) && (pa != pr)) - std::copy(pa + i, pa + x, pr + i); - BOOST_ASSERT(0 == borrow); - - // - // We may have lost digits, if so update limb usage count: - // - result.normalize(); - result.sign(a.sign()); - if(swapped) - result.negate(); -} -template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(a.sign() != b.sign()) - { - add_unsigned(result, a, b); - return; - } - subtract_unsigned(result, a, b); -} -template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - // Very simple long multiplication, only usable for small numbers of limb_type's - // but that's the typical use case for this type anyway: - // - // Special cases first: - // - unsigned as = a.size(); - unsigned bs = b.size(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - typename cpp_int_backend::const_limb_pointer pb = b.limbs(); - if(as == 1) - { - bool s = b.sign() != a.sign(); - if(bs == 1) - { - result = static_cast(*pa) * static_cast(*pb); - } - else - { - limb_type l = *pa; - eval_multiply(result, b, l); - } - result.sign(s); - return; - } - if(bs == 1) - { - bool s = b.sign() != a.sign(); - limb_type l = *pb; - eval_multiply(result, a, l); - result.sign(s); - return; - } - - if((void*)&result == (void*)&a) - { - cpp_int_backend t(a); - eval_multiply(result, t, b); - return; - } - if((void*)&result == (void*)&b) - { - cpp_int_backend t(b); - eval_multiply(result, a, t); - return; - } - - result.resize(as + bs); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - - static const double_limb_type limb_max = ~static_cast(0u); - static const double_limb_type double_limb_max = ~static_cast(0u); - BOOST_STATIC_ASSERT(double_limb_max - 2 * limb_max >= limb_max * limb_max); - - double_limb_type carry = 0; - std::memset(pr, 0, result.size() * sizeof(limb_type)); - for(unsigned i = 0; i < as; ++i) - { - unsigned inner_limit = cpp_int_backend::variable ? bs : (std::min)(result.size() - i, bs); - for(unsigned j = 0; j < inner_limit; ++j) - { - BOOST_ASSERT(i+j < result.size()); - BOOST_ASSERT(!std::numeric_limits::is_specialized - || ((std::numeric_limits::max)() - carry - > - static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value))); - carry += static_cast(pa[i]) * static_cast(pb[j]); - BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry >= pr[i+j])); - carry += pr[i + j]; - pr[i + j] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - BOOST_ASSERT(carry <= (cpp_int_backend::max_limb_value)); - } - if(cpp_int_backend::variable || (i + bs < result.size())) - pr[i + bs] = static_cast(carry); - carry = 0; - } - result.normalize(); - // - // Set the sign of the result: - // - result.sign(a.sign() != b.sign()); -} -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - eval_multiply(result, result, a); -} -template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(!val) - { - result = static_cast(0); - return; - } - if((void*)&a != (void*)&result) - result.resize(a.size()); - double_limb_type carry = 0; - typename cpp_int_backend::limb_pointer p = result.limbs(); - typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); - typename cpp_int_backend::const_limb_pointer pa = a.limbs(); - while(p != pe) - { - carry += static_cast(*pa) * static_cast(val); - *p = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - ++p, ++pa; - } - if(carry) - { - unsigned i = result.size(); - result.resize(i + 1); - if(cpp_int_backend::variable || (result.size() > i)) - result.limbs()[i] = static_cast(carry); - } - result.sign(a.sign()); - if(!cpp_int_backend::variable) - result.normalize(); -} -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - eval_multiply(result, result, val); -} -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(val <= (std::numeric_limits::max)()) - { - eval_multiply(result, a, static_cast(val)); - } - else - { - cpp_int_backend t(val); - eval_multiply(result, a, t); - } -} -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - eval_multiply(result, result, val); -} -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(val > 0) - eval_multiply(result, a, static_cast(val)); - else - { - eval_multiply(result, a, static_cast(-val)); - result.negate(); - } -} -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const signed_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - eval_multiply(result, result, val); -} -template -inline void eval_multiply(cpp_int_backend& result, const cpp_int_backend& a, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(val > 0) - { - if(val <= (std::numeric_limits::max)()) - { - eval_multiply(result, a, static_cast(val)); - return; - } - } - else if(val >= -static_cast((std::numeric_limits::max)())) - { - eval_multiply(result, a, static_cast(-val)); - result.negate(); - return; - } - cpp_int_backend t(val); - eval_multiply(result, a, t); -} -template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - eval_multiply(result, result, val); -} - -template -void divide_unsigned_helper(cpp_int_backend* result, - const cpp_int_backend& x, - const cpp_int_backend& y, - cpp_int_backend& r) -{ - if(((void*)result == (void*)&x) || ((void*)&r == (void*)&x)) - { - cpp_int_backend t(x); - divide_unsigned_helper(result, t, y, r); - return; - } - if(((void*)result == (void*)&y) || ((void*)&r == (void*)&y)) - { - cpp_int_backend t(y); - divide_unsigned_helper(result, x, t, r); - return; - } - - /* - Very simple, fairly braindead long division. - Start by setting the remainder equal to x, and the - result equal to 0. Then in each loop we calculate our - "best guess" for how many times y divides into r, - add our guess to the result, and subtract guess*y - from the remainder r. One wrinkle is that the remainder - may go negative, in which case we subtract the current guess - from the result rather than adding. The value of the guess - is determined by dividing the most-significant-limb of the - current remainder by the most-significant-limb of y. - - Note that there are more efficient algorithms than this - available, in particular see Knuth Vol 2. However for small - numbers of limbs this generally outperforms the alternatives - and avoids the normalisation step which would require extra storage. - */ - - - using default_ops::eval_subtract; - - if(result == &r) - { - cpp_int_backend rem; - divide_unsigned_helper(result, x, y, rem); - r = rem; - return; - } - - // - // Find the most significant words of numerator and denominator. - // - limb_type y_order = y.size() - 1; - - if(y_order == 0) - { - // - // Only a single non-zero limb in the denominator, in this case - // we can use a specialized divide-by-single-limb routine which is - // much faster. This also handles division by zero: - // - divide_unsigned_helper(result, x, y.limbs()[y_order], r); - return; - } - - typename cpp_int_backend::const_limb_pointer px = x.limbs(); - typename cpp_int_backend::const_limb_pointer py = y.limbs(); - - limb_type r_order = x.size() - 1; - if((r_order == 0) && (*px == 0)) - { - // x is zero, so is the result: - r = y; - if(result) - *result = x; - return; - } - - r = x; - r.sign(false); - if(result) - *result = static_cast(0u); - // - // Check if the remainder is already less than the divisor, if so - // we already have the result. Note we try and avoid a full compare - // if we can: - // - if(r_order <= y_order) - { - if((r_order < y_order) || (r.compare_unsigned(y) < 0)) - { - return; - } - } - - cpp_int_backend t; - bool r_neg = false; - - // - // See if we can short-circuit long division, and use basic arithmetic instead: - // - if(r_order == 0) - { - if(result) - *result = px[0] / py[0]; - r = px[0] % py[0]; - return; - } - else if(r_order == 1) - { - double_limb_type a, b; - a = (static_cast(px[1]) << cpp_int_backend::limb_bits) | px[0]; - b = y_order ? - (static_cast(py[1]) << cpp_int_backend::limb_bits) | py[0] - : py[0]; - if(result) - *result = a / b; - r = a % b; - return; - } - // - // prepare result: - // - if(result) - result->resize(1 + r_order - y_order); - typename cpp_int_backend::const_limb_pointer prem = r.limbs(); - // This is initialised just to keep the compiler from emitting useless warnings later on: - typename cpp_int_backend::limb_pointer pr - = typename cpp_int_backend::limb_pointer(); - if(result) - { - pr = result->limbs(); - for(unsigned i = 1; i < 1 + r_order - y_order; ++i) - pr[i] = 0; - } - bool first_pass = true; - - do - { - // - // Calculate our best guess for how many times y divides into r: - // - limb_type guess; - if((prem[r_order] <= py[y_order]) && (r_order > 0)) - { - double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; - b = py[y_order]; - v = a / b; - if(v > cpp_int_backend::max_limb_value) - guess = 1; - else - { - guess = static_cast(v); - --r_order; - } - } - else if(r_order == 0) - { - guess = prem[0] / py[y_order]; - } - else - { - double_limb_type a, b, v; - a = (static_cast(prem[r_order]) << cpp_int_backend::limb_bits) | prem[r_order - 1]; - b = (y_order > 0) ? (static_cast(py[y_order]) << cpp_int_backend::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << cpp_int_backend::limb_bits); - v = a / b; - guess = static_cast(v); - } - BOOST_ASSERT(guess); // If the guess ever gets to zero we go on forever.... - // - // Update result: - // - limb_type shift = r_order - y_order; - if(result) - { - if(r_neg) - { - if(pr[shift] > guess) - pr[shift] -= guess; - else - { - t.resize(shift + 1); - t.limbs()[shift] = guess; - for(unsigned i = 0; i < shift; ++i) - t.limbs()[i] = 0; - eval_subtract(*result, t); - } - } - else if(cpp_int_backend::max_limb_value - pr[shift] > guess) - pr[shift] += guess; - else - { - t.resize(shift + 1); - t.limbs()[shift] = guess; - for(unsigned i = 0; i < shift; ++i) - t.limbs()[i] = 0; - eval_add(*result, t); - } - } - // - // Calculate guess * y, we use a fused mutiply-shift O(N) for this - // rather than a full O(N^2) multiply: - // - double_limb_type carry = 0; - t.resize(y.size() + shift + 1); - bool truncated_t = !cpp_int_backend::variable && (t.size() != y.size() + shift + 1); - typename cpp_int_backend::limb_pointer pt = t.limbs(); - for(unsigned i = 0; i < shift; ++i) - pt[i] = 0; - for(unsigned i = 0; i < y.size(); ++i) - { - carry += static_cast(py[i]) * static_cast(guess); - pt[i + shift] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - } - if(carry && !truncated_t) - { - pt[t.size() - 1] = static_cast(carry); - } - else if(!truncated_t) - { - t.resize(t.size() - 1); - } - // - // Update r: - // - eval_subtract(r, t); - if(r.isneg()) - { - r.negate(); - r_neg = !r_neg; - } - // - // First time through we need to strip any leading zero, otherwise - // the termination condition goes belly-up: - // - if(result && first_pass) - { - first_pass = false; - while(pr[result->size() - 1] == 0) - result->resize(result->size() - 1); - } - // - // Update r_order: - // - r_order = r.size() - 1; - if(r_order < y_order) - break; - } - // Termination condition is really just a check that r > y, but with a common - // short-circuit case handled first: - while((r_order > y_order) || (r.compare_unsigned(y) >= 0)); - - // - // We now just have to normalise the result: - // - if(r_neg && eval_get_sign(r)) - { - // We have one too many in the result: - if(result) - eval_decrement(*result); - r.negate(); - if(y.sign()) - eval_subtract(r, y); - else - eval_add(r, y); - } - - BOOST_ASSERT(r.compare_unsigned(y) < 0); // remainder must be less than the divisor or our code has failed -} - -template -void divide_unsigned_helper( - cpp_int_backend* result, - const cpp_int_backend& x, - limb_type y, - cpp_int_backend& r) -{ - if(((void*)result == (void*)&x) || ((void*)&r == (void*)&x)) - { - cpp_int_backend t(x); - divide_unsigned_helper(result, t, y, r); - return; - } - - if(result == &r) - { - cpp_int_backend rem; - divide_unsigned_helper(result, x, y, rem); - r = rem; - return; - } - - // As above, but simplified for integer divisor: - - using default_ops::eval_subtract; - - if(y == 0) - { - BOOST_THROW_EXCEPTION(std::overflow_error("Integer Division by zero.")); - } - // - // Find the most significant word of numerator. - // - limb_type r_order = x.size() - 1; - - // - // Set remainder and result to their initial values: - // - r = x; - r.sign(false); - typename cpp_int_backend::limb_pointer pr = r.limbs(); - - if((r_order == 0) && (*pr == 0)) - { - // All the limbs in x are zero, so is the result: - return; - } - // - // check for x < y, try to do this without actually having to - // do a full comparison: - // - if((r_order == 0) && (*pr < y)) - { - if(result) - *result = static_cast(0u); - return; - } - - // - // See if we can short-circuit long division, and use basic arithmetic instead: - // - if(r_order == 0) - { - if(result) - { - *result = *pr / y; - result->sign(x.sign()); - } - *pr %= y; - r.sign(x.sign()); - return; - } - else if(r_order == 1) - { - double_limb_type a; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[0]; - if(result) - { - *result = a / y; - result->sign(x.sign()); - } - r = a % y; - r.sign(x.sign()); - return; - } - - // This is initialised just to keep the compiler from emitting useless warnings later on: - typename cpp_int_backend::limb_pointer pres = typename cpp_int_backend::limb_pointer(); - if(result) - { - result->resize(r_order + 1); - pres = result->limbs(); - if(result->size() > r_order) - pres[r_order] = 0; // just in case we don't set the most significant limb below. - } - - do - { - // - // Calculate our best guess for how many times y divides into r: - // - if((pr[r_order] < y) && r_order) - { - double_limb_type a, b; - a = (static_cast(pr[r_order]) << cpp_int_backend::limb_bits) | pr[r_order - 1]; - b = a % y; - r.resize(r.size() - 1); - --r_order; - pr[r_order] = static_cast(b); - if(result) - pres[r_order] = static_cast(a / y); - if(r_order && pr[r_order] == 0) - { - --r_order; // No remainder, division was exact. - r.resize(r.size() - 1); - if(result) - pres[r_order] = static_cast(0u); - } - } - else - { - if(result) - pres[r_order] = pr[r_order] / y; - pr[r_order] %= y; - if(r_order && pr[r_order] == 0) - { - --r_order; // No remainder, division was exact. - r.resize(r.size() - 1); - if(result) - pres[r_order] = static_cast(0u); - } - } - } - // Termination condition is really just a check that r > y, but with two common - // short-circuit cases handled first: - while(r_order || (pr[r_order] > y)); - - if(result) - { - result->normalize(); - result->sign(x.sign()); - } - r.normalize(); - r.sign(x.sign()); - - BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed -} - -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, - const cpp_int_backend& a, const cpp_int_backend& b) -{ - cpp_int_backend r; - divide_unsigned_helper(&result, a, b, r); - result.sign(a.sign() != b.sign()); -} -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, - const cpp_int_backend& a, limb_type& b) -{ - cpp_int_backend r; - divide_unsigned_helper(&result, a, b, r); -} -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, - const cpp_int_backend& a, signed_limb_type& b) -{ - cpp_int_backend r; - divide_unsigned_helper(&result, a, std::abs(b), r); - if(b < 0) - result.negate(); -} -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, - const cpp_int_backend& b) -{ - // There is no in place divide: - cpp_int_backend a(result); - eval_divide(result, a, b); -} -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, limb_type b) -{ - // There is no in place divide: - cpp_int_backend a(result); - eval_divide(result, a, b); -} -template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, signed_limb_type b) -{ - // There is no in place divide: - cpp_int_backend a(result); - eval_divide(result, a, b); -} -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, - const cpp_int_backend& a, - const cpp_int_backend& b) -{ - divide_unsigned_helper(static_cast* >(0), a, b, result); - result.sign(a.sign()); -} -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, - const cpp_int_backend& a, limb_type b) -{ - divide_unsigned_helper(static_cast* >(0), a, b, result); -} -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, - const cpp_int_backend& a, signed_limb_type b) -{ - divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); -} -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, - const cpp_int_backend& b) -{ - // There is no in place divide: - cpp_int_backend a(result); - eval_modulus(result, a, b); -} -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, limb_type b) -{ - // There is no in place divide: - cpp_int_backend a(result); - eval_modulus(result, a, b); -} -template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, signed_limb_type b) -{ - // There is no in place divide: - cpp_int_backend a(result); - eval_modulus(result, a, b); -} -template -void bitwise_op( - cpp_int_backend& result, - const cpp_int_backend& o, - Op op) BOOST_NOEXCEPT -{ - // - // There are 4 cases: - // * Both positive. - // * result negative, o positive. - // * o negative, result positive. - // * Both negative. - // - // When one arg is negative we convert to 2's complement form "on the fly", - // and then convert back to signed-magnitude form at the end. - // - // First figure out how big the result needs to be and set up some data: - // - unsigned rs = result.size(); - unsigned os = o.size(); - unsigned m, x; - minmax(rs, os, m, x); - result.resize(x); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - typename cpp_int_backend::const_limb_pointer po = o.limbs(); - for(unsigned i = rs; i < x; ++i) - pr[i] = 0; - - limb_type next_limb = 0; - - if(!result.sign()) - { - if(!o.sign()) - { - for(unsigned i = 0; i < os; ++i) - pr[i] = op(pr[i], po[i]); - for(unsigned i = os; i < x; ++i) - pr[i] = op(pr[i], limb_type(0)); - } - else - { - // "o" is negative: - double_limb_type carry = 1; - for(unsigned i = 0; i < os; ++i) - { - carry += static_cast(~po[i]); - pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; - } - for(unsigned i = os; i < x; ++i) - { - carry += static_cast(~limb_type(0)); - pr[i] = op(pr[i], static_cast(carry)); - carry >>= cpp_int_backend::limb_bits; - } - // Set the overflow into the "extra" limb: - carry += static_cast(~limb_type(0)); - next_limb = op(limb_type(0), static_cast(carry)); - } - } - else - { - if(!o.sign()) - { - // "result" is negative: - double_limb_type carry = 1; - for(unsigned i = 0; i < os; ++i) - { - carry += static_cast(~pr[i]); - pr[i] = op(static_cast(carry), po[i]); - carry >>= cpp_int_backend::limb_bits; - } - for(unsigned i = os; i < x; ++i) - { - carry += static_cast(~pr[i]); - pr[i] = op(static_cast(carry), limb_type(0)); - carry >>= cpp_int_backend::limb_bits; - } - // Set the overflow into the "extra" limb: - carry += static_cast(~limb_type(0)); - next_limb = op(static_cast(carry), limb_type(0)); - } - else - { - // both are negative: - double_limb_type r_carry = 1; - double_limb_type o_carry = 1; - for(unsigned i = 0; i < os; ++i) - { - r_carry += static_cast(~pr[i]); - o_carry += static_cast(~po[i]); - pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; - } - for(unsigned i = os; i < x; ++i) - { - r_carry += static_cast(~pr[i]); - o_carry += static_cast(~limb_type(0)); - pr[i] = op(static_cast(r_carry), static_cast(o_carry)); - r_carry >>= cpp_int_backend::limb_bits; - o_carry >>= cpp_int_backend::limb_bits; - } - // Set the overflow into the "extra" limb: - r_carry += static_cast(~limb_type(0)); - o_carry += static_cast(~limb_type(0)); - next_limb = op(static_cast(r_carry), static_cast(o_carry)); - } - } - // - // See if the result is negative or not: - // - if(static_cast(next_limb) < 0) - { - result.sign(true); - double_limb_type carry = 1; - for(unsigned i = 0; i < x; ++i) - { - carry += static_cast(~pr[i]); - pr[i] = static_cast(carry); - carry >>= cpp_int_backend::limb_bits; - } - } - else - result.sign(false); - - result.normalize(); -} - -struct bit_and{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a & b; } }; -struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a | b; } }; -struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; - -template -BOOST_FORCEINLINE void eval_bitwise_and( - cpp_int_backend& result, - const cpp_int_backend& o)BOOST_NOEXCEPT_IF(is_void::value) -{ - bitwise_op(result, o, bit_and()); -} -template -BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) -{ - bitwise_op(result, o, bit_or()); -} -template -BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(is_void::value) -{ - bitwise_op(result, o, bit_xor()); -} -template -BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - // Increment and negate: - result = o; - eval_increment(result); - result.negate(); -} -template -inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT -{ - if(!s) - return; - - limb_type offset = static_cast(s / cpp_int_backend::limb_bits); - limb_type shift = static_cast(s % cpp_int_backend::limb_bits); - - if(offset > cpp_int_backend::internal_limb_count) - { - result = static_cast(0); - return; - } - - unsigned ors = result.size(); - if((ors == 1) && (!*result.limbs())) - return; // shifting zero yields zero. - unsigned rs = ors; - if(shift && (result.limbs()[ors - 1] >> (cpp_int_backend::limb_bits - shift))) - ++rs; // Most significant limb will overflow when shifted - rs += offset; - result.resize(rs); - bool truncated = result.size() != rs; - if(truncated) - rs = result.size(); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - - unsigned i = 0; - if(shift) - { - // This code only works when shift is non-zero, otherwise we invoke undefined behaviour! - i = 0; - if(!truncated) - { - if(rs > ors + offset) - { - pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); - --rs; - } - else - { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - if(ors > 1) - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); - ++i; - } - } - for(; ors > 1 + i; ++i) - { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); - } - if(ors >= 1 + i) - { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - ++i; - } - for(; i < rs; ++i) - pr[rs - 1 - i] = 0; - } - else - { - for(; i < ors; ++i) - pr[rs - 1 - i] = pr[ors - 1 - i]; - for(; i < rs; ++i) - pr[rs - 1 - i] = 0; - } - // - // We may have shifted off the end and have leading zeros: - // - if(truncated) - { - result.normalize(); - } -} -template -inline void eval_left_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(!s) - return; - - limb_type offset = static_cast(s / cpp_int_backend::limb_bits); - limb_type shift = static_cast(s % cpp_int_backend::limb_bits); - - unsigned ors = result.size(); - if((ors == 1) && (!*result.limbs())) - return; // shifting zero yields zero. - unsigned rs = ors; - if(shift && (result.limbs()[rs - 1] >> (cpp_int_backend::limb_bits - shift))) - ++rs; // Most significant limb will overflow when shifted - rs += offset; - result.resize(rs); - typename cpp_int_backend::limb_pointer pr = result.limbs(); - - unsigned i = 0; - if(shift) - { - // This code only works when shift is non-zero, otherwise we invoke undefined behaviour! - i = 0; - if(rs > ors + offset) - { - pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); - --rs; - } - else - { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - if(ors > 1) - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); - ++i; - } - for(; ors > 1 + i; ++i) - { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); - } - if(ors >= 1 + i) - { - pr[rs - 1 - i] = pr[ors - 1 - i] << shift; - ++i; - } - for(; i < rs; ++i) - pr[rs - 1 - i] = 0; - } - else - { - for(; i < ors; ++i) - pr[rs - 1 - i] = pr[ors - 1 - i]; - for(; i < rs; ++i) - pr[rs - 1 - i] = 0; - } -} -template -inline void eval_right_shift(cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if(!s) - return; - - limb_type offset = static_cast(s / cpp_int_backend::limb_bits); - limb_type shift = static_cast(s % cpp_int_backend::limb_bits); - unsigned ors = result.size(); - unsigned rs = ors; - if(offset >= rs) - { - result = limb_type(0); - return; - } - rs -= offset; - typename cpp_int_backend::limb_pointer pr = result.limbs(); - if((pr[ors - 1] >> shift) == 0) - --rs; - if(rs == 0) - { - result = limb_type(0); - return; - } - unsigned i = 0; - if(shift) - { - // This code only works for non-zero shift, otherwise we invoke undefined behaviour! - for(; i + offset + 1 < ors; ++i) - { - pr[i] = pr[i + offset] >> shift; - pr[i] |= pr[i + offset + 1] << (cpp_int_backend::limb_bits - shift); - } - pr[i] = pr[i + offset] >> shift; - } - else - { - for(; i < rs; ++i) - pr[i] = pr[i + offset]; - } - result.resize(rs); -} - -template -inline Integer negate_integer(Integer i, const mpl::true_&) BOOST_NOEXCEPT -{ - return -i; -} -template -inline Integer negate_integer(Integer i, const mpl::false_&) BOOST_NOEXCEPT -{ - return ~(i-1); -} - -template -inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT -{ - *result = static_cast(backend.limbs()[0]); - unsigned shift = cpp_int_backend::limb_bits; - for(unsigned i = 1; (i < backend.size()) && (shift < static_cast(std::numeric_limits::digits)); ++i) - { - *result += static_cast(backend.limbs()[i]) << shift; - shift += cpp_int_backend::limb_bits; - } - if(backend.sign()) - { - *result = negate_integer(*result, mpl::bool_::is_signed>()); - } -} - -template -inline typename enable_if, void>::type eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT -{ - typename cpp_int_backend::const_limb_pointer p = backend.limbs(); - unsigned shift = cpp_int_backend::limb_bits; - *result = static_cast(*p); - for(unsigned i = 1; i < backend.size(); ++i) - { - *result += static_cast(std::ldexp(static_cast(p[i]), shift)); - shift += cpp_int_backend::limb_bits; - } - if(backend.sign()) - *result = -*result; -} - -template -BOOST_FORCEINLINE bool eval_is_zero(const cpp_int_backend& val) BOOST_NOEXCEPT -{ - return (val.size() == 1) && (val.limbs()[0] == 0); -} -template -BOOST_FORCEINLINE int eval_get_sign(const cpp_int_backend& val) BOOST_NOEXCEPT -{ - return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1; -} -template -BOOST_FORCEINLINE void eval_abs(cpp_int_backend& result, const cpp_int_backend& val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - result = val; - result.sign(false); -} - -// -// Get the location of the least-significant-bit: -// -template -inline unsigned eval_lsb(const cpp_int_backend& a) BOOST_NOEXCEPT -{ - BOOST_ASSERT(eval_get_sign(a) != 0); - - unsigned result = 0; - // - // Find the index of the least significant limb that is non-zero: - // - unsigned index = 0; - while(!a.limbs()[index] && (index < a.size())) - ++index; - // - // Find the index of the least significant bit within that limb: - // - limb_type l = a.limbs()[index]; - while(!(l & 1u)) - { - l >>= 1; - ++result; - } - - return result + index * cpp_int_backend::limb_bits; -} - -template -inline bool eval_bit_test(const cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT -{ - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; - limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); - if(offset >= val.size()) - return false; - return val.limbs()[offset] & mask ? true : false; -} - -template -inline void eval_bit_set(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; - limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); - if(offset >= val.size()) - { - unsigned os = val.size(); - val.resize(offset + 1); - if(offset >= val.size()) - return; // fixed precision overflow - for(unsigned i = os; i <= offset; ++i) - val.limbs()[i] = 0; - } - val.limbs()[offset] |= mask; -} - -template -inline void eval_bit_unset(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT -{ - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; - limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); - if(offset >= val.size()) - return; - val.limbs()[offset] &= ~mask; - val.normalize(); -} - -template -inline void eval_bit_flip(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - unsigned offset = index / cpp_int_backend::limb_bits; - unsigned shift = index % cpp_int_backend::limb_bits; - limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); - if(offset >= val.size()) - { - unsigned os = val.size(); - val.resize(offset + 1); - if(offset >= val.size()) - return; // fixed precision overflow - for(unsigned i = os; i <= offset; ++i) - val.limbs()[i] = 0; - } - val.limbs()[offset] ^= mask; - val.normalize(); -} - -template -inline void eval_qr(const cpp_int_backend& x, const cpp_int_backend& y, - cpp_int_backend& q, cpp_int_backend& r) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - divide_unsigned_helper(&q, x, y, r); - q.sign(x.sign() != y.sign()); - r.sign(x.sign()); -} - -template -inline typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - if((sizeof(Integer) <= sizeof(limb_type)) || (val <= (std::numeric_limits::max)())) - { - cpp_int_backend d; - divide_unsigned_helper(static_cast*>(0), x, val, d); - return d.limbs()[0]; - } - else - { - return default_ops::eval_integer_modulus(x, val); - } -} -template -BOOST_FORCEINLINE typename enable_if, Integer>::type eval_integer_modulus(const cpp_int_backend& x, Integer val) BOOST_NOEXCEPT_IF(boost::is_void::value) -{ - typedef typename make_unsigned::type unsigned_type; - return eval_integer_modulus(x, static_cast(std::abs(val))); -} - -} // namespace backends; - -template -struct expression_template_default > +template +struct expression_template_default > { static const expression_template_option value = et_off; }; using boost::multiprecision::backends::cpp_int_backend; -template -struct number_category > : public mpl::int_{}; +template +struct number_category > : public mpl::int_{}; -typedef number > cpp_int; -typedef rational_adapter > cpp_rational_backend; -typedef number cpp_rational; +typedef number > cpp_int; +typedef rational_adapter > cpp_rational_backend; +typedef number cpp_rational; // Fixed precision unsigned types: -typedef number > uint128_t; -typedef number > uint256_t; -typedef number > uint512_t; -typedef number > uint1024_t; +typedef number > uint128_t; +typedef number > uint256_t; +typedef number > uint512_t; +typedef number > uint1024_t; // Fixed precision signed types: -typedef number > int128_t; -typedef number > int256_t; -typedef number > int512_t; -typedef number > int1024_t; +typedef number > int128_t; +typedef number > int256_t; +typedef number > int512_t; +typedef number > int1024_t; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif +// Over again, but with checking enabled this time: +typedef number > checked_cpp_int; +typedef rational_adapter > checked_cpp_rational_backend; +typedef number checked_cpp_rational; +// Fixed precision unsigned types: +typedef number > checked_uint128_t; +typedef number > checked_uint256_t; +typedef number > checked_uint512_t; +typedef number > checked_uint1024_t; + +// Fixed precision signed types: +typedef number > checked_int128_t; +typedef number > checked_int256_t; +typedef number > checked_int512_t; +typedef number > checked_int1024_t; #ifdef BOOST_NO_SFINAE_EXPR namespace detail{ -template -struct is_explicitly_convertible, cpp_int_backend > : public mpl::true_ {}; +template +struct is_explicitly_convertible, cpp_int_backend > : public mpl::true_ {}; } - #endif }} // namespaces -#include - - -namespace std{ - -template -class numeric_limits, ExpressionTemplates> > -{ - typedef boost::multiprecision::number, ExpressionTemplates> number_type; - -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = true; - // - // Largest and smallest numbers are bounded only by available memory, set - // to zero: - // - static number_type (min)() BOOST_NOEXCEPT - { - return number_type(0); - } - static number_type (max)() BOOST_NOEXCEPT - { - return number_type(0); - } - static number_type lowest() BOOST_NOEXCEPT { return (min)(); } - BOOST_STATIC_CONSTEXPR int digits = INT_MAX; - BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; - BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; - BOOST_STATIC_CONSTEXPR bool is_signed = true; - BOOST_STATIC_CONSTEXPR bool is_integer = true; - BOOST_STATIC_CONSTEXPR bool is_exact = true; - BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_NOEXCEPT { return 0; } - static number_type round_error() BOOST_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR int min_exponent = 0; - BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; - BOOST_STATIC_CONSTEXPR int max_exponent = 0; - BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; - BOOST_STATIC_CONSTEXPR bool has_infinity = false; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_NOEXCEPT { return 0; } - static number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } - static number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } - static number_type denorm_min() BOOST_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = false; - BOOST_STATIC_CONSTEXPR bool is_modulo = false; - BOOST_STATIC_CONSTEXPR bool traps = false; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; -}; - -#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION - -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; - -#endif - -template -class numeric_limits, ExpressionTemplates> > -{ - typedef boost::multiprecision::number, ExpressionTemplates> number_type; - - struct inititializer - { - inititializer() - { - (std::numeric_limits::max)(); - (std::numeric_limits::min)(); - } - void do_nothing()const{} - }; - - static const inititializer init; - -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = true; - // - // Largest and smallest numbers are bounded only by available memory, set - // to zero: - // - static number_type (min)() BOOST_NOEXCEPT - { - return -(max)(); - } - static number_type (max)() BOOST_NOEXCEPT - { - typedef typename number_type::backend_type backend_type; - init.do_nothing(); - static bool init = false; - static number_type val; - if(!init) - { - boost::multiprecision::number, ExpressionTemplates> t(0); - val = ~t; - init = true; - } - return val; - } - static number_type lowest() BOOST_NOEXCEPT { return (min)(); } - BOOST_STATIC_CONSTEXPR int digits = MinBits; - BOOST_STATIC_CONSTEXPR int digits10 = static_cast(MinBits * 301L / 1000L); - BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; - BOOST_STATIC_CONSTEXPR bool is_signed = true; - BOOST_STATIC_CONSTEXPR bool is_integer = true; - BOOST_STATIC_CONSTEXPR bool is_exact = true; - BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_NOEXCEPT { return 0; } - static number_type round_error() BOOST_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR int min_exponent = 0; - BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; - BOOST_STATIC_CONSTEXPR int max_exponent = 0; - BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; - BOOST_STATIC_CONSTEXPR bool has_infinity = false; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_NOEXCEPT { return 0; } - static number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } - static number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } - static number_type denorm_min() BOOST_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = true; - BOOST_STATIC_CONSTEXPR bool is_modulo = true; - BOOST_STATIC_CONSTEXPR bool traps = false; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; -}; - -template -const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; - -#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION - -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; - -#endif - -template -class numeric_limits, ExpressionTemplates> > -{ - typedef boost::multiprecision::number, ExpressionTemplates> number_type; - - struct inititializer - { - inititializer() - { - (std::numeric_limits::max)(); - } - void do_nothing()const{} - }; - - static const inititializer init; - -public: - BOOST_STATIC_CONSTEXPR bool is_specialized = true; - // - // Largest and smallest numbers are bounded only by available memory, set - // to zero: - // - static number_type (min)() BOOST_NOEXCEPT - { - return number_type(0); - } - static number_type (max)() BOOST_NOEXCEPT - { - typedef typename number_type::backend_type backend_type; - init.do_nothing(); - static bool init = false; - static number_type val(0); - if(!init) - { - boost::multiprecision::limb_type l = ~static_cast(0); - unsigned c = MinBits / backend_type::limb_bits + (MinBits % backend_type::limb_bits ? 1 : 0); - for(unsigned i = 0; i < c; ++i) - { - val <<= backend_type::limb_bits; - val |= l; - } - init = true; - } - return val; - } - static number_type lowest() BOOST_NOEXCEPT { return (min)(); } - BOOST_STATIC_CONSTEXPR int digits = MinBits; - BOOST_STATIC_CONSTEXPR int digits10 = static_cast(MinBits * 301L / 1000L); - BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; - BOOST_STATIC_CONSTEXPR bool is_signed = false; - BOOST_STATIC_CONSTEXPR bool is_integer = true; - BOOST_STATIC_CONSTEXPR bool is_exact = true; - BOOST_STATIC_CONSTEXPR int radix = 2; - static number_type epsilon() BOOST_NOEXCEPT { return 0; } - static number_type round_error() BOOST_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR int min_exponent = 0; - BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; - BOOST_STATIC_CONSTEXPR int max_exponent = 0; - BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; - BOOST_STATIC_CONSTEXPR bool has_infinity = false; - BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; - BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; - BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; - BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - static number_type infinity() BOOST_NOEXCEPT { return 0; } - static number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } - static number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } - static number_type denorm_min() BOOST_NOEXCEPT { return 0; } - BOOST_STATIC_CONSTEXPR bool is_iec559 = false; - BOOST_STATIC_CONSTEXPR bool is_bounded = true; - BOOST_STATIC_CONSTEXPR bool is_modulo = true; - BOOST_STATIC_CONSTEXPR bool traps = false; - BOOST_STATIC_CONSTEXPR bool tinyness_before = false; - BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; -}; - -template -const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; - -#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION - -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; - -#endif - -} +// +// Last of all we include the implementations of all the eval_* non member functions: +// +#include +#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/multiprecision/cpp_int/add.hpp b/include/boost/multiprecision/cpp_int/add.hpp new file mode 100644 index 00000000..068afc7d --- /dev/null +++ b/include/boost/multiprecision/cpp_int/add.hpp @@ -0,0 +1,509 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// Comparison operators for cpp_int_backend: +// +#ifndef BOOST_MP_CPP_INT_ADD_HPP +#define BOOST_MP_CPP_INT_ADD_HPP + +namespace boost{ namespace multiprecision{ namespace backends{ + +// +// This is the key addition routine where all the argument types are non-trivial cpp_int's: +// +template +inline void add_unsigned(CppInt1& result, const CppInt2& a, const CppInt3& b) BOOST_NOEXCEPT_IF(is_non_throwing_cpp_int::value) +{ + using std::swap; + + // Nothing fancy, just let uintmax_t take the strain: + double_limb_type carry = 0; + unsigned m, x; + unsigned as = a.size(); + unsigned bs = b.size(); + minmax(as, bs, m, x); + if(x == 1) + { + bool s = a.sign(); + result = static_cast(*a.limbs()) + static_cast(*b.limbs()); + result.sign(s); + return; + } + result.resize(x, x); + typename CppInt2::const_limb_pointer pa = a.limbs(); + typename CppInt3::const_limb_pointer pb = b.limbs(); + typename CppInt1::limb_pointer pr = result.limbs(); + typename CppInt1::limb_pointer pr_end = pr + m; + + if(as < bs) + swap(pa, pb); + + // First where a and b overlap: + while(pr != pr_end) + { + carry += static_cast(*pa) + static_cast(*pb); + *pr = static_cast(carry); + carry >>= CppInt1::limb_bits; + ++pr, ++pa, ++pb; + } + pr_end += x - m; + // Now where only a has digits: + while(pr != pr_end) + { + if(!carry) + { + if(pa != pr) + std::copy(pa, pa + (pr_end - pr), pr); + break; + } + carry += static_cast(*pa); + *pr = static_cast(carry); + carry >>= CppInt1::limb_bits; + ++pr, ++pa; + } + if(carry) + { + // We overflowed, need to add one more limb: + result.resize(x + 1, x + 1); + if(CppInt1::variable || (result.size() > x)) + result.limbs()[x] = static_cast(carry); + } + result.normalize(); + result.sign(a.sign()); +} +// +// As above, but for adding a single limb to a non-trivial cpp_int: +// +template +inline void add_unsigned(CppInt1& result, const CppInt2& a, const limb_type& o) BOOST_NOEXCEPT_IF(is_non_throwing_cpp_int::value) +{ + // Addition using modular arithmatic. + // Nothing fancy, just let uintmax_t take the strain: + if(&result != &a) + result.resize(a.size(), a.size()); + double_limb_type carry = o; + typename CppInt1::limb_pointer pr = result.limbs(); + typename CppInt2::const_limb_pointer pa = a.limbs(); + unsigned i = 0; + // Addition with carry until we either run out of digits or carry is zero: + for(; carry && (i < result.size()); ++i) + { + carry += static_cast(pa[i]); + pr[i] = static_cast(carry); + carry >>= CppInt1::limb_bits; + } + // Just copy any remaining digits: + if(&a != &result) + { + for(; i < result.size(); ++i) + pr[i] = pa[i]; + } + if(carry) + { + // We overflowed, need to add one more limb: + unsigned x = result.size(); + result.resize(x + 1, x + 1); + if(CppInt1::variable || (result.size() > x)) + result.limbs()[x] = static_cast(carry); + } + result.normalize(); + result.sign(a.sign()); +} +// +// Core subtraction routine for all non-trivial cpp_int's: +// +template +inline void subtract_unsigned(CppInt1& result, const CppInt2& a, const CppInt3& b) BOOST_NOEXCEPT_IF(is_non_throwing_cpp_int::value) +{ + using std::swap; + + // Nothing fancy, just let uintmax_t take the strain: + double_limb_type borrow = 0; + unsigned m, x; + minmax(a.size(), b.size(), m, x); + // + // special cases for small limb counts: + // + if(x == 1) + { + bool s = a.sign(); + limb_type al = *a.limbs(); + limb_type bl = *b.limbs(); + if(bl > al) + { + std::swap(al, bl); + s = !s; + } + result = al - bl; + result.sign(s); + return; + } + // This isn't used till later, but comparison has to occur before we resize the result, + // as that may also resize a or b if this is an inplace operation: + int c = a.compare_unsigned(b); + // Set up the result vector: + result.resize(x, x); + // Now that a, b, and result are stable, get pointers to their limbs: + typename CppInt2::const_limb_pointer pa = a.limbs(); + typename CppInt3::const_limb_pointer pb = b.limbs(); + typename CppInt1::limb_pointer pr = result.limbs(); + bool swapped = false; + if(c < 0) + { + swap(pa, pb); + swapped = true; + } + else if(c == 0) + { + result = static_cast(0); + return; + } + + unsigned i = 0; + // First where a and b overlap: + while(i < m) + { + borrow = static_cast(pa[i]) - static_cast(pb[i]) - borrow; + pr[i] = static_cast(borrow); + borrow = (borrow >> CppInt1::limb_bits) & 1u; + ++i; + } + // Now where only a has digits, only as long as we've borrowed: + while(borrow && (i < x)) + { + borrow = static_cast(pa[i]) - borrow; + pr[i] = static_cast(borrow); + borrow = (borrow >> CppInt1::limb_bits) & 1u; + ++i; + } + // Any remaining digits are the same as those in pa: + if((x != i) && (pa != pr)) + std::copy(pa + i, pa + x, pr + i); + BOOST_ASSERT(0 == borrow); + + // + // We may have lost digits, if so update limb usage count: + // + result.normalize(); + result.sign(a.sign()); + if(swapped) + result.negate(); +} +// +// And again to subtract a single limb: +// +template +inline void subtract_unsigned(CppInt1& result, const CppInt2& a, const limb_type& b) BOOST_NOEXCEPT_IF(is_non_throwing_cpp_int::value) +{ + // Subtract one limb. + // Nothing fancy, just let uintmax_t take the strain: + BOOST_STATIC_CONSTANT(double_limb_type, borrow = static_cast(CppInt1::max_limb_value) + 1); + result.resize(a.size(), a.size()); + typename CppInt1::limb_pointer pr = result.limbs(); + typename CppInt2::const_limb_pointer pa = a.limbs(); + if(*pa > b) + { + *pr = *pa - b; + if(&result != &a) + { + std::copy(pa + 1, pa + a.size(), pr + 1); + result.sign(a.sign()); + } + } + else if(result.size() == 1) + { + *pr = b - *pa; + result.sign(!a.sign()); + } + else + { + *pr = static_cast((borrow + *pa) - b); + unsigned i = 1; + while(!pa[i]) + { + pr[i] = CppInt1::max_limb_value; + ++i; + } + pr[i] = pa[i] - 1; + if(&result != &a) + { + ++i; + std::copy(pa + i, pa + a.size(), pr + i); + } + result.normalize(); + result.sign(a.sign()); + } +} + +// +// Now the actual functions called by the front end, all of which forward to one of the above: +// +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_add( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + eval_add(result, result, o); +} +template +inline typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type + eval_add( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(a.sign() != b.sign()) + { + subtract_unsigned(result, a, b); + return; + } + add_unsigned(result, a, b); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_add(cpp_int_backend& result, const limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(result.sign()) + { + subtract_unsigned(result, result, o); + } + else + add_unsigned(result, result, o); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_add( + cpp_int_backend& result, + const cpp_int_backend& a, + const limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(a.sign()) + { + subtract_unsigned(result, a, o); + } + else + add_unsigned(result, a, o); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_add( + cpp_int_backend& result, + const signed_limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(o < 0) + eval_subtract(result, static_cast(-o)); + else if(o > 0) + eval_add(result, static_cast(o)); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_add( + cpp_int_backend& result, + const cpp_int_backend& a, + const signed_limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(o < 0) + eval_subtract(result, a, static_cast(-o)); + else if(o > 0) + eval_add(result, a, static_cast(o)); + else if(&result != &a) + result = a; +} +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_subtract( + cpp_int_backend& result, + const limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(result.sign()) + { + add_unsigned(result, result, o); + } + else + subtract_unsigned(result, result, o); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_subtract( + cpp_int_backend& result, + const cpp_int_backend& a, + const limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(a.sign()) + { + add_unsigned(result, a, o); + } + else + { + subtract_unsigned(result, a, o); + } +} +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_subtract( + cpp_int_backend& result, + const signed_limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(o) + { + if(o < 0) + eval_add(result, static_cast(-o)); + else + eval_subtract(result, static_cast(o)); + } +} +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_subtract( + cpp_int_backend& result, + const cpp_int_backend& a, + const signed_limb_type& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(o) + { + if(o < 0) + eval_add(result, a, static_cast(-o)); + else + eval_subtract(result, a, static_cast(o)); + } + else if(&result != &a) + result = a; +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_increment(cpp_int_backend& result) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + static const limb_type one = 1; + if(!result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + ++result.limbs()[0]; + else if(result.sign() && result.limbs()[0]) + --result.limbs()[0]; + else + eval_add(result, one); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_decrement(cpp_int_backend& result) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + static const limb_type one = 1; + if(!result.sign() && result.limbs()[0]) + --result.limbs()[0]; + else if(result.sign() && (result.limbs()[0] < cpp_int_backend::max_limb_value)) + ++result.limbs()[0]; + else + eval_subtract(result, one); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_subtract( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + eval_subtract(result, result, o); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type + eval_subtract( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(a.sign() != b.sign()) + { + add_unsigned(result, a, b); + return; + } + subtract_unsigned(result, a, b); +} + +// +// Simple addition and subtraction routine for trivial cpp_int's come last: +// +// One of the arguments is signed: +// +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value || is_signed_number >::value) + >::type + eval_add( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(result.sign() != o.sign()) + { + if(*o.limbs() > *result.limbs()) + { + *result.limbs() = detail::checked_subtract(*o.limbs(), *result.limbs(), typename cpp_int_backend::checked_type()); + result.negate(); + } + else + *result.limbs() = detail::checked_subtract(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + } + else + *result.limbs() = detail::checked_add(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + result.normalize(); +} +// Simple version for two unsigned arguments: +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_add(cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = detail::checked_add(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + result.normalize(); +} + +// signed subtraction: +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value || is_signed_number >::value) + >::type + eval_subtract( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(result.sign() != o.sign()) + { + *result.limbs() = detail::checked_add(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + } + else if(*result.limbs() < *o.limbs()) + { + *result.limbs() = detail::checked_subtract(*o.limbs(), *result.limbs(), typename cpp_int_backend::checked_type()); + result.negate(); + } + else + *result.limbs() = detail::checked_subtract(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + result.normalize(); +} + +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_subtract( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = detail::checked_subtract(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + result.normalize(); +} + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/cpp_int/bitwise.hpp b/include/boost/multiprecision/cpp_int/bitwise.hpp new file mode 100644 index 00000000..0d6db044 --- /dev/null +++ b/include/boost/multiprecision/cpp_int/bitwise.hpp @@ -0,0 +1,560 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// Comparison operators for cpp_int_backend: +// +#ifndef BOOST_MP_CPP_INT_BIT_HPP +#define BOOST_MP_CPP_INT_BIT_HPP + +namespace boost{ namespace multiprecision{ namespace backends{ + +template +void bitwise_op( + CppInt1& result, + const CppInt2& o, + Op op) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int::value)) +{ + // + // There are 4 cases: + // * Both positive. + // * result negative, o positive. + // * o negative, result positive. + // * Both negative. + // + // When one arg is negative we convert to 2's complement form "on the fly", + // and then convert back to signed-magnitude form at the end. + // + // First figure out how big the result needs to be and set up some data: + // + unsigned rs = result.size(); + unsigned os = o.size(); + unsigned m, x; + minmax(rs, os, m, x); + result.resize(x, x); + typename CppInt1::limb_pointer pr = result.limbs(); + typename CppInt2::const_limb_pointer po = o.limbs(); + for(unsigned i = rs; i < x; ++i) + pr[i] = 0; + + limb_type next_limb = 0; + + if(!result.sign()) + { + if(!o.sign()) + { + for(unsigned i = 0; i < os; ++i) + pr[i] = op(pr[i], po[i]); + for(unsigned i = os; i < x; ++i) + pr[i] = op(pr[i], limb_type(0)); + } + else + { + // "o" is negative: + double_limb_type carry = 1; + for(unsigned i = 0; i < os; ++i) + { + carry += static_cast(~po[i]); + pr[i] = op(pr[i], static_cast(carry)); + carry >>= CppInt1::limb_bits; + } + for(unsigned i = os; i < x; ++i) + { + carry += static_cast(~limb_type(0)); + pr[i] = op(pr[i], static_cast(carry)); + carry >>= CppInt1::limb_bits; + } + // Set the overflow into the "extra" limb: + carry += static_cast(~limb_type(0)); + next_limb = op(limb_type(0), static_cast(carry)); + } + } + else + { + if(!o.sign()) + { + // "result" is negative: + double_limb_type carry = 1; + for(unsigned i = 0; i < os; ++i) + { + carry += static_cast(~pr[i]); + pr[i] = op(static_cast(carry), po[i]); + carry >>= CppInt1::limb_bits; + } + for(unsigned i = os; i < x; ++i) + { + carry += static_cast(~pr[i]); + pr[i] = op(static_cast(carry), limb_type(0)); + carry >>= CppInt1::limb_bits; + } + // Set the overflow into the "extra" limb: + carry += static_cast(~limb_type(0)); + next_limb = op(static_cast(carry), limb_type(0)); + } + else + { + // both are negative: + double_limb_type r_carry = 1; + double_limb_type o_carry = 1; + for(unsigned i = 0; i < os; ++i) + { + r_carry += static_cast(~pr[i]); + o_carry += static_cast(~po[i]); + pr[i] = op(static_cast(r_carry), static_cast(o_carry)); + r_carry >>= CppInt1::limb_bits; + o_carry >>= CppInt1::limb_bits; + } + for(unsigned i = os; i < x; ++i) + { + r_carry += static_cast(~pr[i]); + o_carry += static_cast(~limb_type(0)); + pr[i] = op(static_cast(r_carry), static_cast(o_carry)); + r_carry >>= CppInt1::limb_bits; + o_carry >>= CppInt1::limb_bits; + } + // Set the overflow into the "extra" limb: + r_carry += static_cast(~limb_type(0)); + o_carry += static_cast(~limb_type(0)); + next_limb = op(static_cast(r_carry), static_cast(o_carry)); + } + } + // + // See if the result is negative or not: + // + if(static_cast(next_limb) < 0) + { + result.sign(true); + double_limb_type carry = 1; + for(unsigned i = 0; i < x; ++i) + { + carry += static_cast(~pr[i]); + pr[i] = static_cast(carry); + carry >>= CppInt1::limb_bits; + } + } + else + result.sign(false); + + result.normalize(); +} + +struct bit_and{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a & b; } }; +struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a | b; } }; +struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_bitwise_and( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + bitwise_op(result, o, bit_and()); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_bitwise_or( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + bitwise_op(result, o, bit_or()); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_bitwise_xor( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + bitwise_op(result, o, bit_xor()); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type + eval_complement( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + BOOST_STATIC_ASSERT_MSG(((Checked1 != checked) || (Checked2 != checked)), "Attempt to take the complement of a signed type results in undefined behavior."); + // Increment and negate: + result = o; + eval_increment(result); + result.negate(); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type + eval_complement( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + unsigned os = o.size(); + result.resize(UINT_MAX, os); + for(unsigned i = 0; i < os; ++i) + result.limbs()[i] = ~o.limbs()[i]; + for(unsigned i = os; i < result.size(); ++i) + result.limbs()[i] = ~static_cast(0); +} + +template +inline typename enable_if_c >::value>::type + eval_left_shift( + cpp_int_backend& result, + double_limb_type s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(!s) + return; + + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + + /* + static const unsigned max_bits = max_bits >::value; + static const unsigned max_limbs = max_bits / cpp_int_backend::limb_bits + + (max_bits % cpp_int_backend::limb_bits ? 1 : 0); + */ + + unsigned ors = result.size(); + if((ors == 1) && (!*result.limbs())) + return; // shifting zero yields zero. + unsigned rs = ors; + if(shift && (result.limbs()[ors - 1] >> (cpp_int_backend::limb_bits - shift))) + ++rs; // Most significant limb will overflow when shifted + rs += offset; + result.resize(rs, rs); + bool truncated = result.size() != rs; + if(truncated) + rs = result.size(); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + + if(offset > rs) + { + // The result is shifted past the end of the result: + result = static_cast(0); + return; + } + + unsigned i = 0; + if(shift) + { + // This code only works when shift is non-zero, otherwise we invoke undefined behaviour! + i = 0; + if(!truncated) + { + if(rs > ors + offset) + { + pr[rs - 1 - i] = pr[ors - 1 - i] >> (cpp_int_backend::limb_bits - shift); + --rs; + } + else + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + if(ors > 1) + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + ++i; + } + } + for(; ors > 1 + i; ++i) + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + pr[rs - 1 - i] |= pr[ors - 2 - i] >> (cpp_int_backend::limb_bits - shift); + } + if(ors >= 1 + i) + { + pr[rs - 1 - i] = pr[ors - 1 - i] << shift; + ++i; + } + for(; i < rs; ++i) + pr[rs - 1 - i] = 0; + } + else + { + for(; i < ors; ++i) + pr[rs - 1 - i] = pr[ors - 1 - i]; + for(; i < rs; ++i) + pr[rs - 1 - i] = 0; + } + // + // We may have shifted off the end and have leading zeros: + // + if(truncated) + { + result.normalize(); + } +} + +template +inline typename enable_if_c >::value>::type + eval_right_shift( + cpp_int_backend& result, + double_limb_type s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(!s) + return; + + limb_type offset = static_cast(s / cpp_int_backend::limb_bits); + limb_type shift = static_cast(s % cpp_int_backend::limb_bits); + unsigned ors = result.size(); + unsigned rs = ors; + if(offset >= rs) + { + result = limb_type(0); + return; + } + rs -= offset; + typename cpp_int_backend::limb_pointer pr = result.limbs(); + if((pr[ors - 1] >> shift) == 0) + --rs; + if(rs == 0) + { + result = limb_type(0); + return; + } + unsigned i = 0; + if(shift) + { + // This code only works for non-zero shift, otherwise we invoke undefined behaviour! + for(; i + offset + 1 < ors; ++i) + { + pr[i] = pr[i + offset] >> shift; + pr[i] |= pr[i + offset + 1] << (cpp_int_backend::limb_bits - shift); + } + pr[i] = pr[i + offset] >> shift; + } + else + { + for(; i < rs; ++i) + pr[i] = pr[i + offset]; + } + result.resize(rs, rs); +} + +// +// Over agin for trivial cpp_int's: +// +template +BOOST_FORCEINLINE typename enable_if > >::type + eval_left_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = detail::checked_left_shift(*result.limbs(), s, typename cpp_int_backend::checked_type()); + result.normalize(); +} + +template +BOOST_FORCEINLINE typename enable_if > >::type + eval_right_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + // Nothing to check here... just make sure we don't invoke undefined behavior: + *result.limbs() = (static_cast(s) >= sizeof(*result.limbs()) * CHAR_BIT) ? 0 : *result.limbs() >>= s; +} + +template +void is_valid_bitwise_op( + cpp_int_backend& result, + const cpp_int_backend& o, const mpl::int_&) +{ + if(result.sign() || o.sign()) + BOOST_THROW_EXCEPTION(std::range_error("Bitwise operations on negative values results in undefined behavior.")); +} + +template +void is_valid_bitwise_op( + cpp_int_backend&, + const cpp_int_backend& , const mpl::int_&){} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value || is_signed_number >::value) + >::type + eval_bitwise_and( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + is_valid_bitwise_op(result, o, typename cpp_int_backend::checked_type()); + + using default_ops::eval_bit_test; + using default_ops::eval_increment; + + if(result.sign() || o.sign()) + { + static const unsigned m = static_unsigned_max::value, static_unsigned_max::value>::value; + cpp_int_backend t1(result); + cpp_int_backend t2(o); + eval_bitwise_and(t1, t2); + bool s = eval_bit_test(t1, m + 1); + if(s) + { + eval_complement(t1, t1); + eval_increment(t1); + } + result = t1; + result.sign(s); + } + else + { + *result.limbs() &= *o.limbs(); + } +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_bitwise_and( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() &= *o.limbs(); +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value || is_signed_number >::value) + >::type + eval_bitwise_or( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + is_valid_bitwise_op(result, o, typename cpp_int_backend::checked_type()); + + using default_ops::eval_bit_test; + using default_ops::eval_increment; + + if(result.sign() || o.sign()) + { + static const unsigned m = static_unsigned_max::value, static_unsigned_max::value>::value; + cpp_int_backend t1(result); + cpp_int_backend t2(o); + eval_bitwise_or(t1, t2); + bool s = eval_bit_test(t1, m + 1); + if(s) + { + eval_complement(t1, t1); + eval_increment(t1); + } + result = t1; + result.sign(s); + } + else + { + *result.limbs() |= *o.limbs(); + result.normalize(); + } +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_bitwise_or( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() |= *o.limbs(); +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value || is_signed_number >::value) + >::type + eval_bitwise_xor( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + is_valid_bitwise_op(result, o, typename cpp_int_backend::checked_type()); + + using default_ops::eval_bit_test; + using default_ops::eval_increment; + + if(result.sign() || o.sign()) + { + static const unsigned m = static_unsigned_max::value, static_unsigned_max::value>::value; + cpp_int_backend t1(result); + cpp_int_backend t2(o); + eval_bitwise_xor(t1, t2); + bool s = eval_bit_test(t1, m + 1); + if(s) + { + eval_complement(t1, t1); + eval_increment(t1); + } + result = t1; + result.sign(s); + } + else + { + *result.limbs() ^= *o.limbs(); + } +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_bitwise_xor( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() ^= *o.limbs(); +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value || is_signed_number >::value) + >::type + eval_complement( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + BOOST_STATIC_ASSERT_MSG(((Checked1 != checked) || (Checked2 != checked)), "Attempt to take the complement of a signed type results in undefined behavior."); + // + // If we're not checked then emulate 2's complement behavior: + // + if(o.sign()) + { + *result.limbs() = *o.limbs() - 1; + result.sign(false); + } + else + { + *result.limbs() = 1 + *o.limbs(); + result.sign(true); + } + result.normalize(); +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_complement( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = ~*o.limbs(); +} + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/cpp_int/checked.hpp b/include/boost/multiprecision/cpp_int/checked.hpp new file mode 100644 index 00000000..a3eb5dcc --- /dev/null +++ b/include/boost/multiprecision/cpp_int/checked.hpp @@ -0,0 +1,149 @@ + +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_CPP_INT_CHECKED_HPP +#define BOOST_MP_CPP_INT_CHECKED_HPP + +namespace boost{ namespace multiprecision{ namespace backends{ namespace detail{ + +// +// Simple routines for performing checked arithmetic with a builtin arithmetic type. +// Note that is is not a complete header, it must be included as part of boost/multiprecision/cpp_int.hpp. +// + +inline void raise_overflow(std::string op) +{ + BOOST_THROW_EXCEPTION(std::overflow_error("overflow in " + op)); +} +inline void raise_add_overflow() +{ + raise_overflow("addition"); +} +inline void raise_subtract_overflow() +{ + raise_overflow("subtraction"); +} +inline void raise_mul_overflow() +{ + raise_overflow("multiplication"); +} +inline void raise_div_overflow() +{ + raise_overflow("division"); +} + +template +inline A checked_add_imp(A a, A b, const mpl::true_&) +{ + if(a > 0) + { + if((b > 0) && ((integer_traits::const_max - b) < a)) + raise_add_overflow(); + } + else + { + if((b < 0) && ((integer_traits::const_min - b) > a)) + raise_add_overflow(); + } + return a + b; +} +template +inline A checked_add_imp(A a, A b, const mpl::false_&) +{ + if((integer_traits::const_max - b) < a) + raise_add_overflow(); + return a + b; +} +template +inline A checked_add(A a, A b, const mpl::int_&) +{ + return checked_add_imp(a, b, boost::is_signed()); +} +template +inline A checked_add(A a, A b, const mpl::int_&) +{ + return a + b; +} + +template +inline A checked_subtract_imp(A a, A b, const mpl::true_&) +{ + if(a > 0) + { + if((b < 0) && ((integer_traits::const_max + b) < a)) + raise_subtract_overflow(); + } + else + { + if((b > 0) && ((integer_traits::const_min + b) > a)) + raise_subtract_overflow(); + } + return a - b; +} +template +inline A checked_subtract_imp(A a, A b, const mpl::false_&) +{ + if(a < b) + raise_subtract_overflow(); + return a - b; +} +template +inline A checked_subtract(A a, A b, const mpl::int_&) +{ + return checked_subtract_imp(a, b, boost::is_signed()); +} +template +inline A checked_subtract(A a, A b, const mpl::int_&) +{ + return a - b; +} + +template +inline A checked_multiply(A a, A b, const mpl::int_&) +{ + BOOST_MP_USING_ABS + if(a && (integer_traits::const_max / abs(a) < abs(b))) + raise_mul_overflow(); + return a * b; +} +template +inline A checked_multiply(A a, A b, const mpl::int_&) +{ + return a * b; +} + +template +inline A checked_divide(A a, A b, const mpl::int_&) +{ + if(b == 0) + raise_div_overflow(); + return a / b; +} +template +inline A checked_divide(A a, A b, const mpl::int_&) +{ + return a / b; +} + +template +inline A checked_left_shift(A a, unsigned long long shift, const mpl::int_&) +{ + if(a && shift) + { + if((shift > sizeof(A) * CHAR_BIT) || (a >> (sizeof(A) * CHAR_BIT - shift))) + BOOST_THROW_EXCEPTION(std::overflow_error("Shift out of range")); + } + return a << shift; +} +template +inline A checked_left_shift(A a, unsigned long long shift, const mpl::int_&) +{ + return (shift >= sizeof(A) * CHAR_BIT) ? 0 : a << shift; +} + +}}}} // namespaces + +#endif + diff --git a/include/boost/multiprecision/cpp_int/comparison.hpp b/include/boost/multiprecision/cpp_int/comparison.hpp new file mode 100644 index 00000000..32d6a470 --- /dev/null +++ b/include/boost/multiprecision/cpp_int/comparison.hpp @@ -0,0 +1,389 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// Comparison operators for cpp_int_backend: +// +#ifndef BOOST_MP_CPP_INT_COMPARISON_HPP +#define BOOST_MP_CPP_INT_COMPARISON_HPP + +#include + +namespace boost{ namespace multiprecision{ namespace backends{ + +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4018 4389) +#endif + +// +// Start with non-trivial cpp_int's: +// +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type + eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return (a.sign() == b.sign()) + && (a.size() == b.size()) + && std::equal(a.limbs(), a.limbs() + a.size(), b.limbs()); +} +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value + && !is_trivial_cpp_int >::value, + bool + >::type + eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return (a.sign() == b.sign()) + && (a.size() == b.size()) + && std::equal(a.limbs(), a.limbs() + a.size(), b.limbs()); +} +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + return (a.sign() == false) + && (a.size() == 1) + && (*a.limbs() == b); +} +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (a.sign() == (b < 0)) + && (a.size() == 1) + && (*a.limbs() == static_cast(std::abs(b))); +} +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + return (a.size() == 1) + && (*a.limbs() == b); +} +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (b < 0) ? eval_eq(a, cpp_int_backend(b)) : eval_eq(a, static_cast(b)); // Use bit pattern of b for comparison +} + +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.sign()) + return true; + if(a.size() > 1) + return false; + return *a.limbs() < b; +} +template +inline typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + if((b == 0) || (a.sign() != (b < 0))) + return a.sign(); + if(a.sign()) + { + if(a.size() > 1) + return true; + return *a.limbs() > static_cast(std::abs(b)); + } + else + { + if(a.size() > 1) + return false; + return *a.limbs() < static_cast(b); + } +} + +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.size() > 1) + return false; + return *a.limbs() < b; +} +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (b < 0) ? a.compare(b) < 0 : eval_lt(a, static_cast(b)); // Use bit pattern of b for comparison +} + +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.sign()) + return false; + if(a.size() > 1) + return true; + return *a.limbs() > b; +} +template +inline typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + if(b == 0) + return !a.sign() && ((a.size() > 1) || *a.limbs()); + if(a.sign() != (b < 0)) + return !a.sign(); + if(a.sign()) + { + if(a.size() > 1) + return false; + return *a.limbs() < static_cast(std::abs(b)); + } + else + { + if(a.size() > 1) + return true; + return *a.limbs() > static_cast(b); + } +} + +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, limb_type b) BOOST_NOEXCEPT +{ + if(a.size() > 1) + return true; + return *a.limbs() > b; +} +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, signed_limb_type b) BOOST_NOEXCEPT +{ + return (b < 0) ? a.compare(b) > 0 : eval_gt(a, static_cast(b)); // Use bit pattern of b for comparison. +} +// +// And again for trivial cpp_ints: +// +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value, + bool + >::value eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return (a.sign() == b.sign()) && (*a.limbs() == *b.limbs()); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value, + bool + >::value eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return *a.limbs() == *b.limbs(); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_unsigned::value && is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return !a.sign() && (*a.limbs() == b); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_signed::value && is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + typedef typename make_unsigned::type ui_type; + return (a.sign() == (b < 0)) && (*a.limbs() == static_cast(std::abs(b))); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_unsigned::value && is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return *a.limbs() == b; +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_signed::value && is_trivial_cpp_int >::value, + bool + >::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + typedef typename make_unsigned::type ui_type; + if(b < 0) + { + cpp_int_backend t(b); + return *a.limbs() == *t.limbs(); + } + else + { + return *a.limbs() == static_cast(b); + } +} + +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + if(a.sign() != b.sign()) + return a.sign(); + return a.sign() ? *a.limbs() > *b.limbs() : *a.limbs() < *b.limbs(); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return *a.limbs() < *b.limbs(); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_unsigned::value && is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + if(a.sign()) + return true; + return *a.limbs() < b; +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_signed::value && is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + typedef typename make_unsigned::type ui_type; + if(a.sign() != (b < 0)) + return a.sign(); + return a.sign() ? (*a.limbs() > static_cast(std::abs(b))) : (*a.limbs() < static_cast(std::abs(b))); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_unsigned::value && is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return *a.limbs() < b; +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_signed::value && is_trivial_cpp_int >::value, + bool + >::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + typedef typename make_unsigned::type ui_type; + if(b < 0) + { + cpp_int_backend t(b); + return *a.limbs() < *t.limbs(); + } + else + { + return *a.limbs() < static_cast(b); + } +} + +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + if(a.sign() != b.sign()) + return !a.sign(); + return a.sign() ? *a.limbs() < *b.limbs() : *a.limbs() > *b.limbs(); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + return *a.limbs() > *b.limbs(); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_unsigned::value && is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + if(a.sign()) + return false; + return *a.limbs() > b; +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_signed::value && is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + typedef typename make_unsigned::type ui_type; + if(a.sign() != (b < 0)) + return !a.sign(); + return a.sign() ? (*a.limbs() < static_cast(std::abs(b))) : (*a.limbs() > static_cast(std::abs(b))); +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_unsigned::value && is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +{ + return *a.limbs() > b; +} +template +BOOST_FORCEINLINE typename enable_if_c< + is_signed::value && is_trivial_cpp_int >::value, + bool + >::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +{ + typedef typename make_unsigned::type ui_type; + if(b < 0) + { + cpp_int_backend t(b); + return *a.limbs() > *t.limbs(); + } + else + { + return *a.limbs() > static_cast(b); + } +} + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/cpp_int/cpp_int_config.hpp b/include/boost/multiprecision/cpp_int/cpp_int_config.hpp new file mode 100644 index 00000000..2e829312 --- /dev/null +++ b/include/boost/multiprecision/cpp_int/cpp_int_config.hpp @@ -0,0 +1,156 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_CPP_INT_CORE_HPP +#define BOOST_MP_CPP_INT_CORE_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost{ namespace multiprecision{ + +namespace detail{ + +// +// These traits calculate the largest type in the list +// [unsigned] ong long, long, int, which has the specified number +// of bits. Note that intN_t and boost::int_t find the first +// member of the above list, not the last. We want the last in the +// list to ensure that mixed arithmetic operations are as efficient +// as possible. +// +template +struct largest_signed_type +{ + typedef typename mpl::if_c< + 1 + std::numeric_limits::digits == N, + long long, + typename mpl::if_c< + 1 + std::numeric_limits::digits == N, + long, + typename mpl::if_c< + 1 + std::numeric_limits::digits == N, + int, + typename boost::int_t::exact + >::type + >::type + >::type type; +}; + +template +struct largest_unsigned_type +{ + typedef typename mpl::if_c< + std::numeric_limits::digits == N, + unsigned long long, + typename mpl::if_c< + std::numeric_limits::digits == N, + unsigned long, + typename mpl::if_c< + std::numeric_limits::digits == N, + unsigned int, + typename boost::uint_t::exact + >::type + >::type + >::type type; +}; + +} // namepsace detail + +#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6))) \ + && !defined(BOOST_INTEL) && defined(__WORDSIZE) && (__WORDSIZE == 64) + +typedef detail::largest_unsigned_type<64>::type limb_type; +typedef detail::largest_signed_type<64>::type signed_limb_type; +typedef unsigned __int128 double_limb_type; +typedef __int128 signed_double_limb_type; +static const limb_type max_block_10 = 1000000000000000000uLL; +static const limb_type digits_per_block_10 = 18; + +inline limb_type block_multiplier(unsigned count) +{ + static const limb_type values[digits_per_block_10] + = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000, 100000000000000000, 1000000000000000000 }; + BOOST_ASSERT(count < digits_per_block_10); + return values[count]; +} + +// Can't do formatted IO on an __int128 +#define BOOST_MP_NO_DOUBLE_LIMB_TYPE_IO + +// Need to specialise integer_traits for __int128 as it's not a normal native type: +} // namespace multiprecision + +template<> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base(0)> +{ }; +template<> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base(static_cast(1) << 127), static_cast((~static_cast(0)) >> 1)> +{ }; + +namespace multiprecision{ + +#else + +typedef detail::largest_unsigned_type<32>::type limb_type; +typedef detail::largest_signed_type<32>::type signed_limb_type; +typedef boost::uint64_t double_limb_type; +typedef boost::int64_t signed_double_limb_type; +static const limb_type max_block_10 = 1000000000; +static const limb_type digits_per_block_10 = 9; + +inline limb_type block_multiplier(unsigned count) +{ + static const limb_type values[digits_per_block_10] + = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; + BOOST_ASSERT(count < digits_per_block_10); + return values[count]; +} + +#endif + +static const unsigned bits_per_limb = sizeof(limb_type) * CHAR_BIT; + +template +inline void minmax(const T& a, const T& b, T& aa, T& bb) +{ + if(a < b) + { + aa = a; + bb = b; + } + else + { + aa = b; + bb = a; + } +} + +enum cpp_integer_type +{ + signed_magnitude, + unsigned_magnitude, + signed_packed, + unsigned_packed +}; + +enum cpp_int_check_type +{ + checked, + unchecked +}; + +}} + +#endif // BOOST_MP_CPP_INT_CORE_HPP + diff --git a/include/boost/multiprecision/cpp_int/divide.hpp b/include/boost/multiprecision/cpp_int/divide.hpp new file mode 100644 index 00000000..5e1534e6 --- /dev/null +++ b/include/boost/multiprecision/cpp_int/divide.hpp @@ -0,0 +1,618 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// Comparison operators for cpp_int_backend: +// +#ifndef BOOST_MP_CPP_INT_DIV_HPP +#define BOOST_MP_CPP_INT_DIV_HPP + +namespace boost{ namespace multiprecision{ namespace backends{ + +template +void divide_unsigned_helper( + CppInt1* result, + const CppInt2& x, + const CppInt3& y, + CppInt1& r) +{ + if(((void*)result == (void*)&x) || ((void*)&r == (void*)&x)) + { + CppInt2 t(x); + divide_unsigned_helper(result, t, y, r); + return; + } + if(((void*)result == (void*)&y) || ((void*)&r == (void*)&y)) + { + CppInt3 t(y); + divide_unsigned_helper(result, x, t, r); + return; + } + + /* + Very simple, fairly braindead long division. + Start by setting the remainder equal to x, and the + result equal to 0. Then in each loop we calculate our + "best guess" for how many times y divides into r, + add our guess to the result, and subtract guess*y + from the remainder r. One wrinkle is that the remainder + may go negative, in which case we subtract the current guess + from the result rather than adding. The value of the guess + is determined by dividing the most-significant-limb of the + current remainder by the most-significant-limb of y. + + Note that there are more efficient algorithms than this + available, in particular see Knuth Vol 2. However for small + numbers of limbs this generally outperforms the alternatives + and avoids the normalisation step which would require extra storage. + */ + + + using default_ops::eval_subtract; + + if(result == &r) + { + CppInt1 rem; + divide_unsigned_helper(result, x, y, rem); + r = rem; + return; + } + + // + // Find the most significant words of numerator and denominator. + // + limb_type y_order = y.size() - 1; + + if(y_order == 0) + { + // + // Only a single non-zero limb in the denominator, in this case + // we can use a specialized divide-by-single-limb routine which is + // much faster. This also handles division by zero: + // + divide_unsigned_helper(result, x, y.limbs()[y_order], r); + return; + } + + typename CppInt2::const_limb_pointer px = x.limbs(); + typename CppInt3::const_limb_pointer py = y.limbs(); + + limb_type r_order = x.size() - 1; + if((r_order == 0) && (*px == 0)) + { + // x is zero, so is the result: + r = y; + if(result) + *result = x; + return; + } + + r = x; + r.sign(false); + if(result) + *result = static_cast(0u); + // + // Check if the remainder is already less than the divisor, if so + // we already have the result. Note we try and avoid a full compare + // if we can: + // + if(r_order <= y_order) + { + if((r_order < y_order) || (r.compare_unsigned(y) < 0)) + { + return; + } + } + + CppInt1 t; + bool r_neg = false; + + // + // See if we can short-circuit long division, and use basic arithmetic instead: + // + if(r_order == 0) + { + if(result) + *result = px[0] / py[0]; + r = px[0] % py[0]; + return; + } + else if(r_order == 1) + { + double_limb_type a, b; + a = (static_cast(px[1]) << CppInt1::limb_bits) | px[0]; + b = y_order ? + (static_cast(py[1]) << CppInt1::limb_bits) | py[0] + : py[0]; + if(result) + *result = a / b; + r = a % b; + return; + } + // + // prepare result: + // + if(result) + result->resize(1 + r_order - y_order, 1 + r_order - y_order); + typename CppInt1::const_limb_pointer prem = r.limbs(); + // This is initialised just to keep the compiler from emitting useless warnings later on: + typename CppInt1::limb_pointer pr + = typename CppInt1::limb_pointer(); + if(result) + { + pr = result->limbs(); + for(unsigned i = 1; i < 1 + r_order - y_order; ++i) + pr[i] = 0; + } + bool first_pass = true; + + do + { + // + // Calculate our best guess for how many times y divides into r: + // + limb_type guess; + if((prem[r_order] <= py[y_order]) && (r_order > 0)) + { + double_limb_type a, b, v; + a = (static_cast(prem[r_order]) << CppInt1::limb_bits) | prem[r_order - 1]; + b = py[y_order]; + v = a / b; + if(v > CppInt1::max_limb_value) + guess = 1; + else + { + guess = static_cast(v); + --r_order; + } + } + else if(r_order == 0) + { + guess = prem[0] / py[y_order]; + } + else + { + double_limb_type a, b, v; + a = (static_cast(prem[r_order]) << CppInt1::limb_bits) | prem[r_order - 1]; + b = (y_order > 0) ? (static_cast(py[y_order]) << CppInt1::limb_bits) | py[y_order - 1] : (static_cast(py[y_order]) << CppInt1::limb_bits); + v = a / b; + guess = static_cast(v); + } + BOOST_ASSERT(guess); // If the guess ever gets to zero we go on forever.... + // + // Update result: + // + limb_type shift = r_order - y_order; + if(result) + { + if(r_neg) + { + if(pr[shift] > guess) + pr[shift] -= guess; + else + { + t.resize(shift + 1, shift + 1); + t.limbs()[shift] = guess; + for(unsigned i = 0; i < shift; ++i) + t.limbs()[i] = 0; + eval_subtract(*result, t); + } + } + else if(CppInt1::max_limb_value - pr[shift] > guess) + pr[shift] += guess; + else + { + t.resize(shift + 1, shift + 1); + t.limbs()[shift] = guess; + for(unsigned i = 0; i < shift; ++i) + t.limbs()[i] = 0; + eval_add(*result, t); + } + } + // + // Calculate guess * y, we use a fused mutiply-shift O(N) for this + // rather than a full O(N^2) multiply: + // + double_limb_type carry = 0; + t.resize(y.size() + shift + 1, y.size() + shift + 1); + bool truncated_t = !CppInt1::variable && (t.size() != y.size() + shift + 1); + typename CppInt1::limb_pointer pt = t.limbs(); + for(unsigned i = 0; i < shift; ++i) + pt[i] = 0; + for(unsigned i = 0; i < y.size(); ++i) + { + carry += static_cast(py[i]) * static_cast(guess); + pt[i + shift] = static_cast(carry); + carry >>= CppInt1::limb_bits; + } + if(carry && !truncated_t) + { + pt[t.size() - 1] = static_cast(carry); + } + else if(!truncated_t) + { + t.resize(t.size() - 1, t.size() - 1); + } + // + // Update r: + // + eval_subtract(r, t); + if(r.isneg()) + { + r.negate(); + r_neg = !r_neg; + } + // + // First time through we need to strip any leading zero, otherwise + // the termination condition goes belly-up: + // + if(result && first_pass) + { + first_pass = false; + while(pr[result->size() - 1] == 0) + result->resize(result->size() - 1, result->size() - 1); + } + // + // Update r_order: + // + r_order = r.size() - 1; + if(r_order < y_order) + break; + } + // Termination condition is really just a check that r > y, but with a common + // short-circuit case handled first: + while((r_order > y_order) || (r.compare_unsigned(y) >= 0)); + + // + // We now just have to normalise the result: + // + if(r_neg && eval_get_sign(r)) + { + // We have one too many in the result: + if(result) + eval_decrement(*result); + r.negate(); + if(y.sign()) + eval_subtract(r, y); + else + eval_add(r, y); + } + + BOOST_ASSERT(r.compare_unsigned(y) < 0); // remainder must be less than the divisor or our code has failed +} + +template +void divide_unsigned_helper( + CppInt1* result, + const CppInt2& x, + limb_type y, + CppInt1& r) +{ + if(((void*)result == (void*)&x) || ((void*)&r == (void*)&x)) + { + CppInt2 t(x); + divide_unsigned_helper(result, t, y, r); + return; + } + + if(result == &r) + { + CppInt1 rem; + divide_unsigned_helper(result, x, y, rem); + r = rem; + return; + } + + // As above, but simplified for integer divisor: + + using default_ops::eval_subtract; + + if(y == 0) + { + BOOST_THROW_EXCEPTION(std::overflow_error("Integer Division by zero.")); + } + // + // Find the most significant word of numerator. + // + limb_type r_order = x.size() - 1; + + // + // Set remainder and result to their initial values: + // + r = x; + r.sign(false); + typename CppInt1::limb_pointer pr = r.limbs(); + + if((r_order == 0) && (*pr == 0)) + { + // All the limbs in x are zero, so is the result: + return; + } + // + // check for x < y, try to do this without actually having to + // do a full comparison: + // + if((r_order == 0) && (*pr < y)) + { + if(result) + *result = static_cast(0u); + return; + } + + // + // See if we can short-circuit long division, and use basic arithmetic instead: + // + if(r_order == 0) + { + if(result) + { + *result = *pr / y; + result->sign(x.sign()); + } + *pr %= y; + r.sign(x.sign()); + return; + } + else if(r_order == 1) + { + double_limb_type a; + a = (static_cast(pr[r_order]) << CppInt1::limb_bits) | pr[0]; + if(result) + { + *result = a / y; + result->sign(x.sign()); + } + r = a % y; + r.sign(x.sign()); + return; + } + + // This is initialised just to keep the compiler from emitting useless warnings later on: + typename CppInt1::limb_pointer pres = typename CppInt1::limb_pointer(); + if(result) + { + result->resize(r_order + 1, r_order + 1); + pres = result->limbs(); + if(result->size() > r_order) + pres[r_order] = 0; // just in case we don't set the most significant limb below. + } + + do + { + // + // Calculate our best guess for how many times y divides into r: + // + if((pr[r_order] < y) && r_order) + { + double_limb_type a, b; + a = (static_cast(pr[r_order]) << CppInt1::limb_bits) | pr[r_order - 1]; + b = a % y; + r.resize(r.size() - 1, r.size() - 1); + --r_order; + pr[r_order] = static_cast(b); + if(result) + pres[r_order] = static_cast(a / y); + if(r_order && pr[r_order] == 0) + { + --r_order; // No remainder, division was exact. + r.resize(r.size() - 1, r.size() - 1); + if(result) + pres[r_order] = static_cast(0u); + } + } + else + { + if(result) + pres[r_order] = pr[r_order] / y; + pr[r_order] %= y; + if(r_order && pr[r_order] == 0) + { + --r_order; // No remainder, division was exact. + r.resize(r.size() - 1, r.size() - 1); + if(result) + pres[r_order] = static_cast(0u); + } + } + } + // Termination condition is really just a check that r > y, but with two common + // short-circuit cases handled first: + while(r_order || (pr[r_order] > y)); + + if(result) + { + result->normalize(); + result->sign(x.sign()); + } + r.normalize(); + r.sign(x.sign()); + + BOOST_ASSERT(r.compare(y) < 0); // remainder must be less than the divisor or our code has failed +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type + eval_divide( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) +{ + cpp_int_backend r; + divide_unsigned_helper(&result, a, b, r); + result.sign(a.sign() != b.sign()); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_divide( + cpp_int_backend& result, + const cpp_int_backend& a, + limb_type& b) +{ + cpp_int_backend r; + divide_unsigned_helper(&result, a, b, r); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_divide( + cpp_int_backend& result, + const cpp_int_backend& a, + signed_limb_type& b) +{ + cpp_int_backend r; + divide_unsigned_helper(&result, a, static_cast(std::abs(b)), r); + if(b < 0) + result.negate(); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_divide( + cpp_int_backend& result, + const cpp_int_backend& b) +{ + // There is no in place divide: + cpp_int_backend a(result); + eval_divide(result, a, b); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_divide( + cpp_int_backend& result, + limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + eval_divide(result, a, b); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_divide( + cpp_int_backend& result, + signed_limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + eval_divide(result, a, b); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type + eval_modulus( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) +{ + divide_unsigned_helper(static_cast* >(0), a, b, result); + result.sign(a.sign()); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_modulus( + cpp_int_backend& result, + const cpp_int_backend& a, limb_type b) +{ + divide_unsigned_helper(static_cast* >(0), a, b, result); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_modulus( + cpp_int_backend& result, + const cpp_int_backend& a, + signed_limb_type b) +{ + divide_unsigned_helper(static_cast* >(0), a, static_cast(std::abs(b)), result); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_modulus( + cpp_int_backend& result, + const cpp_int_backend& b) +{ + // There is no in place divide: + cpp_int_backend a(result); + eval_modulus(result, a, b); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_modulus( + cpp_int_backend& result, + limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + eval_modulus(result, a, b); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_modulus( + cpp_int_backend& result, + signed_limb_type b) +{ + // There is no in place divide: + cpp_int_backend a(result); + eval_modulus(result, a, b); +} + +// +// Over again for trivial cpp_int's: +// +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value + || is_signed_number >::value) + >::type + eval_divide( + cpp_int_backend& result, + const cpp_int_backend& o) +{ + if(!*o.limbs()) + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); + *result.limbs() /= *o.limbs(); + result.sign(result.sign() != o.sign()); +} + +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_divide( + cpp_int_backend& result, + const cpp_int_backend& o) +{ + if(!*o.limbs()) + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); + *result.limbs() /= *o.limbs(); +} + +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + >::type + eval_modulus( + cpp_int_backend& result, + const cpp_int_backend& o) +{ + if(!*o.limbs()) + BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); + *result.limbs() %= *o.limbs(); + result.sign(result.sign()); +} + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/cpp_int/limits.hpp b/include/boost/multiprecision/cpp_int/limits.hpp new file mode 100644 index 00000000..0f80fccc --- /dev/null +++ b/include/boost/multiprecision/cpp_int/limits.hpp @@ -0,0 +1,215 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// Comparison operators for cpp_int_backend: +// +#ifndef BOOST_MP_CPP_INT_LIM_HPP +#define BOOST_MP_CPP_INT_LIM_HPP + +namespace std{ + +namespace detail{ + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_min(const boost::mpl::true_&, const boost::mpl::true_&) +{ + // Bounded and signed. + typedef boost::multiprecision::number, ExpressionTemplates> result_type; + typedef boost::multiprecision::number, ExpressionTemplates> ui_type; + static const result_type val = -result_type(~ui_type(0)); + return val; +} + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_min(const boost::mpl::true_&, const boost::mpl::false_&) +{ + // Bounded and unsigned: + static const boost::multiprecision::number, ExpressionTemplates> val(0u); + return val; +} + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_min(const boost::mpl::false_&, const boost::mpl::true_&) +{ + // Unbounded and signed. + // There is no minimum value, just return 0: + static const boost::multiprecision::number, ExpressionTemplates> val(0u); + return val; +} + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_min(const boost::mpl::false_&, const boost::mpl::false_&) +{ + // Unbound and unsigned: + static const boost::multiprecision::number, ExpressionTemplates> val(0u); + return val; +} + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_max(const boost::mpl::true_&, const boost::mpl::true_&) +{ + // Bounded and signed. + typedef boost::multiprecision::number, ExpressionTemplates> result_type; + typedef boost::multiprecision::number, ExpressionTemplates> ui_type; + static const result_type val = ~ui_type(0); + return val; +} + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_max(const boost::mpl::true_&, const boost::mpl::false_&) +{ + // Bound and unsigned: + typedef boost::multiprecision::number, ExpressionTemplates> result_type; + static const result_type val = ~result_type(0); + return val; +} + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_max(const boost::mpl::false_&, const boost::mpl::true_&) +{ + // Unbounded and signed. + // There is no maximum value, just return 0: + static const boost::multiprecision::number, ExpressionTemplates> val(0u); + return val; +} + +template +inline boost::multiprecision::number, ExpressionTemplates> + get_max(const boost::mpl::false_&, const boost::mpl::false_&) +{ + // Unbound and unsigned: + static const boost::multiprecision::number, ExpressionTemplates> val(0u); + return val; +} + +} + +template +class numeric_limits, ExpressionTemplates> > +{ + typedef boost::multiprecision::cpp_int_backend backend_type; + typedef boost::multiprecision::number number_type; + + struct inititializer + { + inititializer() + { + (std::numeric_limits::max)(); + (std::numeric_limits::min)(); + } + void do_nothing()const{} + }; + + static const inititializer init; + +public: + BOOST_STATIC_CONSTEXPR bool is_specialized = true; + // + // Largest and smallest numbers are bounded only by available memory, set + // to zero: + // + static number_type (min)() BOOST_NOEXCEPT + { + init.do_nothing(); + return detail::get_min(boost::multiprecision::backends::is_fixed_precision(), boost::multiprecision::is_signed_number()); + } + static number_type (max)() BOOST_NOEXCEPT + { + init.do_nothing(); + return detail::get_max(boost::multiprecision::backends::is_fixed_precision(), boost::multiprecision::is_signed_number()); + } + static number_type lowest() BOOST_NOEXCEPT { return (min)(); } + BOOST_STATIC_CONSTEXPR int digits = boost::multiprecision::backends::max_precision::value == UINT_MAX ? INT_MAX : boost::multiprecision::backends::max_precision::value; + BOOST_STATIC_CONSTEXPR int digits10 = (INT_MAX / 1000) * 301L; + BOOST_STATIC_CONSTEXPR int max_digits10 = digits10 + 2; + BOOST_STATIC_CONSTEXPR bool is_signed = boost::multiprecision::is_signed_number::value; + BOOST_STATIC_CONSTEXPR bool is_integer = true; + BOOST_STATIC_CONSTEXPR bool is_exact = true; + BOOST_STATIC_CONSTEXPR int radix = 2; + static number_type epsilon() BOOST_NOEXCEPT { return 0; } + static number_type round_error() BOOST_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR int min_exponent = 0; + BOOST_STATIC_CONSTEXPR int min_exponent10 = 0; + BOOST_STATIC_CONSTEXPR int max_exponent = 0; + BOOST_STATIC_CONSTEXPR int max_exponent10 = 0; + BOOST_STATIC_CONSTEXPR bool has_infinity = false; + BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = false; + BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; + BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; + BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; + static number_type infinity() BOOST_NOEXCEPT { return 0; } + static number_type quiet_NaN() BOOST_NOEXCEPT { return 0; } + static number_type signaling_NaN() BOOST_NOEXCEPT { return 0; } + static number_type denorm_min() BOOST_NOEXCEPT { return 0; } + BOOST_STATIC_CONSTEXPR bool is_iec559 = false; + BOOST_STATIC_CONSTEXPR bool is_bounded = boost::multiprecision::backends::is_fixed_precision::value; + BOOST_STATIC_CONSTEXPR bool is_modulo = (boost::multiprecision::backends::is_fixed_precision::value && (Checked == boost::multiprecision::unchecked)); + BOOST_STATIC_CONSTEXPR bool traps = false; + BOOST_STATIC_CONSTEXPR bool tinyness_before = false; + BOOST_STATIC_CONSTEXPR float_round_style round_style = round_toward_zero; +}; + +template +const typename numeric_limits, ExpressionTemplates> >::inititializer numeric_limits, ExpressionTemplates> >::init; + +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; + +#endif + +} // namespace std + +#endif diff --git a/include/boost/multiprecision/cpp_int/misc.hpp b/include/boost/multiprecision/cpp_int/misc.hpp new file mode 100644 index 00000000..cee2e386 --- /dev/null +++ b/include/boost/multiprecision/cpp_int/misc.hpp @@ -0,0 +1,301 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// Comparison operators for cpp_int_backend: +// +#ifndef BOOST_MP_CPP_INT_MISC_HPP +#define BOOST_MP_CPP_INT_MISC_HPP + +namespace boost{ namespace multiprecision{ namespace backends{ + +template +void check_in_range(const CppInt& val, const mpl::int_&) +{ + typedef typename boost::multiprecision::detail::canonical::type cast_type; + if(val.sign()) + { + if(val.compare(static_cast((std::numeric_limits::min)())) < 0) + BOOST_THROW_EXCEPTION(std::overflow_error("Could not convert to the target type - -value is out of range.")); + } + else + { + if(val.compare(static_cast((std::numeric_limits::max)())) > 0) + BOOST_THROW_EXCEPTION(std::overflow_error("Could not convert to the target type - -value is out of range.")); + } +} +template +void check_in_range(const CppInt& /*val*/, const mpl::int_&) BOOST_NOEXCEPT {} + +void check_is_negative(const mpl::true_&) BOOST_NOEXCEPT {} +void check_is_negative(const mpl::false_&) +{ + BOOST_THROW_EXCEPTION(std::domain_error("Attempt to assign a negative value to an unsigned type.")); +} + +template +inline Integer negate_integer(Integer i, const mpl::true_&) BOOST_NOEXCEPT +{ + return -i; +} +template +inline Integer negate_integer(Integer i, const mpl::false_&) BOOST_NOEXCEPT +{ + return ~(i-1); +} + +template +inline typename enable_if_c::value && !is_trivial_cpp_int >::value, void>::type + eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + typedef mpl::int_ checked_type; + check_in_range(backend, checked_type()); + + *result = static_cast(backend.limbs()[0]); + unsigned shift = cpp_int_backend::limb_bits; + for(unsigned i = 1; (i < backend.size()) && (shift < static_cast(std::numeric_limits::digits)); ++i) + { + *result += static_cast(backend.limbs()[i]) << shift; + shift += cpp_int_backend::limb_bits; + } + if(backend.sign()) + { + check_is_negative(boost::is_signed()); + *result = negate_integer(*result, boost::is_signed()); + } +} + +template +inline typename enable_if_c::value && !is_trivial_cpp_int >::value, void>::type + eval_convert_to(R* result, const cpp_int_backend& backend) BOOST_NOEXCEPT +{ + typename cpp_int_backend::const_limb_pointer p = backend.limbs(); + unsigned shift = cpp_int_backend::limb_bits; + *result = static_cast(*p); + for(unsigned i = 1; i < backend.size(); ++i) + { + *result += static_cast(std::ldexp(static_cast(p[i]), shift)); + shift += cpp_int_backend::limb_bits; + } + if(backend.sign()) + *result = -*result; +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value, bool>::type + eval_is_zero(const cpp_int_backend& val) BOOST_NOEXCEPT +{ + return (val.size() == 1) && (val.limbs()[0] == 0); +} +template +BOOST_FORCEINLINE typename enable_if_c >::value, int>::type + eval_get_sign(const cpp_int_backend& val) BOOST_NOEXCEPT +{ + return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1; +} +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_abs(cpp_int_backend& result, const cpp_int_backend& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + result = val; + result.sign(false); +} + +// +// Get the location of the least-significant-bit: +// +template +inline typename enable_if_c >::value, unsigned>::type + eval_lsb(const cpp_int_backend& a) BOOST_NOEXCEPT +{ + using default_ops::eval_get_sign; + BOOST_ASSERT(eval_get_sign(a) != 0); + + unsigned result = 0; + // + // Find the index of the least significant limb that is non-zero: + // + unsigned index = 0; + while(!a.limbs()[index] && (index < a.size())) + ++index; + // + // Find the index of the least significant bit within that limb: + // + limb_type l = a.limbs()[index]; + while(!(l & 1u)) + { + l >>= 1; + ++result; + } + + return result + index * cpp_int_backend::limb_bits; +} + +template +inline typename enable_if_c >::value, bool>::type + eval_bit_test(const cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT +{ + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; + limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); + if(offset >= val.size()) + return false; + return val.limbs()[offset] & mask ? true : false; +} + +template +inline typename enable_if_c >::value>::type + eval_bit_set(cpp_int_backend& val, unsigned index) +{ + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; + limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); + if(offset >= val.size()) + { + unsigned os = val.size(); + val.resize(offset + 1, offset + 1); + if(offset >= val.size()) + return; // fixed precision overflow + for(unsigned i = os; i <= offset; ++i) + val.limbs()[i] = 0; + } + val.limbs()[offset] |= mask; +} + +template +inline typename enable_if_c >::value>::type + eval_bit_unset(cpp_int_backend& val, unsigned index) BOOST_NOEXCEPT +{ + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; + limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); + if(offset >= val.size()) + return; + val.limbs()[offset] &= ~mask; + val.normalize(); +} + +template +inline typename enable_if_c >::value>::type + eval_bit_flip(cpp_int_backend& val, unsigned index) +{ + unsigned offset = index / cpp_int_backend::limb_bits; + unsigned shift = index % cpp_int_backend::limb_bits; + limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u); + if(offset >= val.size()) + { + unsigned os = val.size(); + val.resize(offset + 1, offset + 1); + if(offset >= val.size()) + return; // fixed precision overflow + for(unsigned i = os; i <= offset; ++i) + val.limbs()[i] = 0; + } + val.limbs()[offset] ^= mask; + val.normalize(); +} + +template +inline typename enable_if_c >::value>::type + eval_qr( + const cpp_int_backend& x, + const cpp_int_backend& y, + cpp_int_backend& q, + cpp_int_backend& r) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + divide_unsigned_helper(&q, x, y, r); + q.sign(x.sign() != y.sign()); + r.sign(x.sign()); +} + +template +inline typename enable_if_c::value && !is_trivial_cpp_int >::value, Integer>::type + eval_integer_modulus(const cpp_int_backend& x, Integer val) +{ + if((sizeof(Integer) <= sizeof(limb_type)) || (val <= (std::numeric_limits::max)())) + { + cpp_int_backend d; + divide_unsigned_helper(static_cast*>(0), x, static_cast(val), d); + return d.limbs()[0]; + } + else + { + return default_ops::eval_integer_modulus(x, val); + } +} + +template +BOOST_FORCEINLINE typename enable_if_c::value && !is_trivial_cpp_int >::value, Integer>::type + eval_integer_modulus(const cpp_int_backend& x, Integer val) +{ + typedef typename make_unsigned::type unsigned_type; + return eval_integer_modulus(x, static_cast(std::abs(val))); +} + +// +// Now again for trivial backends: +// +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +{ + *result.limbs() = boost::math::gcd(*a.limbs(), *b.limbs()); +} +// This one is only enabled for unchecked cpp_int's, for checked int's we need the checking in the default version: +template +BOOST_FORCEINLINE typename enable_if_c >::value && (Checked1 == unchecked)>::type + eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = boost::math::lcm(*a.limbs(), *b.limbs()); + result.normalize(); // result may overflow the specified number of bits +} + +inline void conversion_overflow(const mpl::int_&) +{ + BOOST_THROW_EXCEPTION(std::overflow_error("Overflow in conversion to narrower type")); +} +inline void conversion_overflow(const mpl::int_&){} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_signed_number >::value + >::type + eval_convert_to(R* result, const cpp_int_backend& val) +{ + typedef typename common_type::local_limb_type>::type common_type; + if(std::numeric_limits::is_specialized && (static_cast(*val.limbs()) > static_cast((std::numeric_limits::max)()))) + { + conversion_overflow(typename cpp_int_backend::checked_type()); + *result = (std::numeric_limits::max)(); + } + else + *result = static_cast(*val.limbs()); + if(val.isneg()) + { + check_is_negative(mpl::bool_::value || boost::is_floating_point::value>()); + *result = negate_integer(*result, mpl::bool_::value || boost::is_floating_point::value>()); + } +} + +template +inline typename enable_if_c< + is_trivial_cpp_int >::value + && is_unsigned_number >::value + >::type + eval_convert_to(R* result, const cpp_int_backend& val) +{ + typedef typename common_type::local_limb_type>::type common_type; + if(std::numeric_limits::is_specialized && (static_cast(*val.limbs()) > static_cast((std::numeric_limits::max)()))) + { + conversion_overflow(typename cpp_int_backend::checked_type()); + *result = (std::numeric_limits::max)(); + } + else + *result = static_cast(*val.limbs()); +} + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/cpp_int/multiply.hpp b/include/boost/multiprecision/cpp_int/multiply.hpp new file mode 100644 index 00000000..630e7f91 --- /dev/null +++ b/include/boost/multiprecision/cpp_int/multiply.hpp @@ -0,0 +1,288 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +// +// Comparison operators for cpp_int_backend: +// +#ifndef BOOST_MP_CPP_INT_MUL_HPP +#define BOOST_MP_CPP_INT_MUL_HPP + +namespace boost{ namespace multiprecision{ namespace backends{ + +template +inline typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a, + const limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(!val) + { + result = static_cast(0); + return; + } + if((void*)&a != (void*)&result) + result.resize(a.size(), a.size()); + double_limb_type carry = 0; + typename cpp_int_backend::limb_pointer p = result.limbs(); + typename cpp_int_backend::limb_pointer pe = result.limbs() + result.size(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + while(p != pe) + { + carry += static_cast(*pa) * static_cast(val); + *p = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + ++p, ++pa; + } + if(carry) + { + unsigned i = result.size(); + result.resize(i + 1, i + 1); + if(cpp_int_backend::variable || (result.size() > i)) + result.limbs()[i] = static_cast(carry); + } + result.sign(a.sign()); + if(!cpp_int_backend::variable) + result.normalize(); +} + +// +// resize_for_carry forces a resize of the underlying buffer only if a previous request +// for "required" elements could possibly have failed, *and* we have checking enabled. +// This will cause an overflow error inside resize(): +// +template +inline void resize_for_carry(cpp_int_backend& /*result*/, unsigned /*required*/){} + +template +inline void resize_for_carry(cpp_int_backend& result, unsigned required) +{ + if(result.size() != required) + result.resize(required, required); +} + +template +inline typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + // Very simple long multiplication, only usable for small numbers of limb_type's + // but that's the typical use case for this type anyway: + // + // Special cases first: + // + unsigned as = a.size(); + unsigned bs = b.size(); + typename cpp_int_backend::const_limb_pointer pa = a.limbs(); + typename cpp_int_backend::const_limb_pointer pb = b.limbs(); + if(as == 1) + { + bool s = b.sign() != a.sign(); + if(bs == 1) + { + result = static_cast(*pa) * static_cast(*pb); + } + else + { + limb_type l = *pa; + eval_multiply(result, b, l); + } + result.sign(s); + return; + } + if(bs == 1) + { + bool s = b.sign() != a.sign(); + limb_type l = *pb; + eval_multiply(result, a, l); + result.sign(s); + return; + } + + if((void*)&result == (void*)&a) + { + cpp_int_backend t(a); + eval_multiply(result, t, b); + return; + } + if((void*)&result == (void*)&b) + { + cpp_int_backend t(b); + eval_multiply(result, a, t); + return; + } + + result.resize(as + bs, as + bs - 1); + typename cpp_int_backend::limb_pointer pr = result.limbs(); + + static const double_limb_type limb_max = ~static_cast(0u); + static const double_limb_type double_limb_max = ~static_cast(0u); + BOOST_STATIC_ASSERT(double_limb_max - 2 * limb_max >= limb_max * limb_max); + + double_limb_type carry = 0; + std::memset(pr, 0, result.size() * sizeof(limb_type)); + for(unsigned i = 0; i < as; ++i) + { + unsigned inner_limit = cpp_int_backend::variable ? bs : (std::min)(result.size() - i, bs); + for(unsigned j = 0; j < inner_limit; ++j) + { + BOOST_ASSERT(i+j < result.size()); + BOOST_ASSERT(!std::numeric_limits::is_specialized + || ((std::numeric_limits::max)() - carry + > + static_cast(cpp_int_backend::max_limb_value) * static_cast(cpp_int_backend::max_limb_value))); + carry += static_cast(pa[i]) * static_cast(pb[j]); + BOOST_ASSERT(!std::numeric_limits::is_specialized || ((std::numeric_limits::max)() - carry >= pr[i+j])); + carry += pr[i + j]; + pr[i + j] = static_cast(carry); + carry >>= cpp_int_backend::limb_bits; + BOOST_ASSERT(carry <= (cpp_int_backend::max_limb_value)); + } + resize_for_carry(result, as + bs); // May throw if checking is enabled + if(cpp_int_backend::variable || (i + bs < result.size())) + pr[i + bs] = static_cast(carry); + carry = 0; + } + result.normalize(); + // + // Set the sign of the result: + // + result.sign(a.sign() != b.sign()); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + eval_multiply(result, result, a); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_multiply(cpp_int_backend& result, const limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + eval_multiply(result, result, val); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a, + const double_limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(val <= (std::numeric_limits::max)()) + { + eval_multiply(result, a, static_cast(val)); + } + else + { + cpp_int_backend t(val); + eval_multiply(result, a, t); + } +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_multiply(cpp_int_backend& result, const double_limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + eval_multiply(result, result, val); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a, + const signed_limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(val > 0) + eval_multiply(result, a, static_cast(val)); + else + { + eval_multiply(result, a, static_cast(-val)); + result.negate(); + } +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_multiply(cpp_int_backend& result, const signed_limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + eval_multiply(result, result, val); +} + +template +inline typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a, + const signed_double_limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + if(val > 0) + { + if(val <= (std::numeric_limits::max)()) + { + eval_multiply(result, a, static_cast(val)); + return; + } + } + else if(val >= -static_cast((std::numeric_limits::max)())) + { + eval_multiply(result, a, static_cast(-val)); + result.negate(); + return; + } + cpp_int_backend t(val); + eval_multiply(result, a, t); +} + +template +BOOST_FORCEINLINE typename enable_if_c >::value>::type + eval_multiply(cpp_int_backend& result, const signed_double_limb_type& val) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + eval_multiply(result, result, val); +} + +// +// Now over again for trivial cpp_int's: +// +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value + || is_signed_number >::value) + >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = detail::checked_multiply(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + result.sign(result.sign() != o.sign()); + result.normalize(); +} + +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_unsigned_number >::value + && is_unsigned_number >::value + >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = detail::checked_multiply(*result.limbs(), *o.limbs(), typename cpp_int_backend::checked_type()); + result.normalize(); +} + +}}} // namespaces + +#endif diff --git a/include/boost/multiprecision/detail/cpp_int_core.hpp b/include/boost/multiprecision/detail/cpp_int_core.hpp index f2e86cf1..cf1a9b3b 100644 --- a/include/boost/multiprecision/detail/cpp_int_core.hpp +++ b/include/boost/multiprecision/detail/cpp_int_core.hpp @@ -98,6 +98,8 @@ inline limb_type block_multiplier(unsigned count) #endif +static const unsigned bits_per_limb = sizeof(limb_type) * CHAR_BIT; + template inline void minmax(const T& a, const T& b, T& aa, T& bb) { diff --git a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp index 3213f6a6..7adbf872 100644 --- a/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp +++ b/include/boost/multiprecision/detail/cpp_int_trivial_ops.hpp @@ -19,112 +19,112 @@ namespace boost{ namespace multiprecision{ namespace backends{ #endif template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { return (a.sign() == b.sign()) && (*a.limbs() == *b.limbs()); } template -BOOST_FORCEINLINE bool eval_eq(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_eq(const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { return *a.limbs() == *b.limbs(); } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const old_cpp_int_backend& a, U b) BOOST_NOEXCEPT { return !a.sign() && (*a.limbs() == b); } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const old_cpp_int_backend& a, S b) BOOST_NOEXCEPT { return (a.sign() == (b < 0)) && (*a.limbs() == std::abs(b)); } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const old_cpp_int_backend& a, U b) BOOST_NOEXCEPT { return *a.limbs() == b; } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_eq(const old_cpp_int_backend& a, S b) BOOST_NOEXCEPT { return *a.limbs() == b; } template -BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_lt(const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { if(a.sign() != b.sign()) return a.sign(); return a.sign() ? *a.limbs() > *b.limbs() : *a.limbs() < *b.limbs(); } template -BOOST_FORCEINLINE bool eval_lt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_lt(const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { return *a.limbs() < *b.limbs(); } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const old_cpp_int_backend& a, U b) BOOST_NOEXCEPT { if(a.sign()) return true; return *a.limbs() < b; } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const old_cpp_int_backend& a, S b) BOOST_NOEXCEPT { if(a.sign() != (b < 0)) return a.sign(); return a.sign() ? (*a.limbs() > std::abs(b)) : (*a.limbs() < std::abs(b)); } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const old_cpp_int_backend& a, U b) BOOST_NOEXCEPT { return *a.limbs() < b; } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_lt(const old_cpp_int_backend& a, S b) BOOST_NOEXCEPT { return *a.limbs() < b; } template -BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_gt(const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { if(a.sign() != b.sign()) return !a.sign(); return a.sign() ? *a.limbs() < *b.limbs() : *a.limbs() > *b.limbs(); } template -BOOST_FORCEINLINE bool eval_gt(const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE bool eval_gt(const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { return *a.limbs() > *b.limbs(); } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const old_cpp_int_backend& a, U b) BOOST_NOEXCEPT { if(a.sign()) return false; return *a.limbs() > b; } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const old_cpp_int_backend& a, S b) BOOST_NOEXCEPT { if(a.sign() != (b < 0)) return !a.sign(); return a.sign() ? (*a.limbs() < std::abs(b)) : (*a.limbs() > std::abs(b)); } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, U b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const old_cpp_int_backend& a, U b) BOOST_NOEXCEPT { return *a.limbs() > b; } template -BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const cpp_int_backend& a, S b) BOOST_NOEXCEPT +BOOST_FORCEINLINE typename enable_if, bool>::type eval_gt(const old_cpp_int_backend& a, S b) BOOST_NOEXCEPT { return *a.limbs() > b; } template -inline void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_add(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { if(result.sign() != o.sign()) { @@ -141,13 +141,13 @@ inline void eval_add(cpp_int_backend& result, const c } template -BOOST_FORCEINLINE void eval_add(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_add(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() += *o.limbs(); } template -inline void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_subtract(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { if(result.sign() != o.sign()) { @@ -163,26 +163,26 @@ inline void eval_subtract(cpp_int_backend& result, co } template -BOOST_FORCEINLINE void eval_subtract(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_subtract(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() -= *o.limbs(); } template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_multiply(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() *= *o.limbs(); result.sign(result.sign() != o.sign()); } template -BOOST_FORCEINLINE void eval_multiply(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_multiply(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() *= *o.limbs(); } template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) +BOOST_FORCEINLINE void eval_divide(old_cpp_int_backend& result, const old_cpp_int_backend& o) { if(!*o.limbs()) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); @@ -191,7 +191,7 @@ BOOST_FORCEINLINE void eval_divide(cpp_int_backend& r } template -BOOST_FORCEINLINE void eval_divide(cpp_int_backend& result, const cpp_int_backend& o) +BOOST_FORCEINLINE void eval_divide(old_cpp_int_backend& result, const old_cpp_int_backend& o) { if(!*o.limbs()) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); @@ -199,7 +199,7 @@ BOOST_FORCEINLINE void eval_divide(cpp_int_backend& } template -BOOST_FORCEINLINE void eval_modulus(cpp_int_backend& result, const cpp_int_backend& o) +BOOST_FORCEINLINE void eval_modulus(old_cpp_int_backend& result, const old_cpp_int_backend& o) { if(!*o.limbs()) BOOST_THROW_EXCEPTION(std::overflow_error("Division by zero.")); @@ -208,21 +208,21 @@ BOOST_FORCEINLINE void eval_modulus(cpp_int_backend } template -BOOST_FORCEINLINE void eval_left_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_left_shift(old_cpp_int_backend& result, T s) BOOST_NOEXCEPT { *result.limbs() <<= s; } template -BOOST_FORCEINLINE void eval_right_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_right_shift(old_cpp_int_backend& result, T s) BOOST_NOEXCEPT { *result.limbs() >>= s; } template -inline void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_bitwise_and(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { - typename cpp_int_backend::local_limb_type a, b; + typename old_cpp_int_backend::local_limb_type a, b; a = *result.limbs(); if(result.isneg()) { @@ -237,7 +237,7 @@ inline void eval_bitwise_and(cpp_int_backend& result, } a &= b; bool isneg = false; - static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + static const typename old_cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); if(a & mask) { a = ~a; @@ -249,15 +249,15 @@ inline void eval_bitwise_and(cpp_int_backend& result, } template -BOOST_FORCEINLINE void eval_bitwise_and(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_bitwise_and(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() &= *o.limbs(); } template -inline void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_bitwise_or(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { - typename cpp_int_backend::local_limb_type a, b; + typename old_cpp_int_backend::local_limb_type a, b; a = *result.limbs(); if(result.isneg()) { @@ -272,7 +272,7 @@ inline void eval_bitwise_or(cpp_int_backend& result, } a |= b; bool isneg = false; - static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (sizeof(typename cpp_int_backend::local_limb_type) * CHAR_BIT - 1); + static const typename old_cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (sizeof(typename old_cpp_int_backend::local_limb_type) * CHAR_BIT - 1); if(a & mask) { a = ~a; @@ -284,15 +284,15 @@ inline void eval_bitwise_or(cpp_int_backend& result, } template -BOOST_FORCEINLINE void eval_bitwise_or(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_bitwise_or(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() |= *o.limbs(); } template -inline void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_bitwise_xor(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { - typename cpp_int_backend::local_limb_type a, b; + typename old_cpp_int_backend::local_limb_type a, b; a = *result.limbs(); if(result.isneg()) { @@ -307,7 +307,7 @@ inline void eval_bitwise_xor(cpp_int_backend& result, } a ^= b; bool isneg = false; - static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + static const typename old_cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); if(a & mask) { a = ~a; @@ -319,15 +319,15 @@ inline void eval_bitwise_xor(cpp_int_backend& result, } template -BOOST_FORCEINLINE void eval_bitwise_xor(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_bitwise_xor(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() ^= *o.limbs(); } template -inline void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +inline void eval_complement(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { - typename cpp_int_backend::local_limb_type a; + typename old_cpp_int_backend::local_limb_type a; a = *o.limbs(); if(o.isneg()) { @@ -336,7 +336,7 @@ inline void eval_complement(cpp_int_backend& result, } a = ~a; bool isneg = false; - static const typename cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); + static const typename old_cpp_int_backend::local_limb_type mask = static_cast::local_limb_type>(1) << (std::numeric_limits::local_limb_type>::digits - 1); if(a & mask) { a = ~a; @@ -348,25 +348,25 @@ inline void eval_complement(cpp_int_backend& result, } template -BOOST_FORCEINLINE void eval_complement(cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_complement(old_cpp_int_backend& result, const old_cpp_int_backend& o) BOOST_NOEXCEPT { *result.limbs() = ~*o.limbs(); } template -BOOST_FORCEINLINE void eval_gcd(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_gcd(old_cpp_int_backend& result, const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { *result.limbs() = boost::math::gcd(*a.limbs(), *b.limbs()); } template -BOOST_FORCEINLINE void eval_lcm(cpp_int_backend& result, const cpp_int_backend& a, const cpp_int_backend& b) BOOST_NOEXCEPT +BOOST_FORCEINLINE void eval_lcm(old_cpp_int_backend& result, const old_cpp_int_backend& a, const old_cpp_int_backend& b) BOOST_NOEXCEPT { *result.limbs() = boost::math::lcm(*a.limbs(), *b.limbs()); } template -inline void eval_convert_to(R* result, const cpp_int_backend& val) +inline void eval_convert_to(R* result, const old_cpp_int_backend& val) { if(std::numeric_limits::is_specialized && (*val.limbs() > (std::numeric_limits::max)())) *result = (std::numeric_limits::max)(); @@ -377,7 +377,7 @@ inline void eval_convert_to(R* result, const cpp_int_backend -inline void eval_convert_to(R* result, const cpp_int_backend& val) +inline void eval_convert_to(R* result, const old_cpp_int_backend& val) { if(std::numeric_limits::is_specialized && (*val.limbs() > (std::numeric_limits::max)())) *result = (std::numeric_limits::max)(); diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index d83b336d..71ef9844 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -267,7 +267,7 @@ void eval_subtract(T& t, const U& u, const V& v); template inline void eval_subtract_default(T& t, const T& u, const T& v) { - if(&t == &v) + if((&t == &v) && is_signed_number::value) { eval_subtract(t, u); t.negate(); @@ -296,16 +296,22 @@ inline typename enable_if_c >::value && is_co eval_subtract(t, u, vv); } template -inline typename enable_if_c >::value>::type eval_subtract_default(T& t, const U& u, const T& v) +inline typename enable_if_c >::value && is_signed_number::value>::type eval_subtract_default(T& t, const U& u, const T& v) { eval_subtract(t, v, u); t.negate(); } +template +inline typename enable_if_c >::value && is_unsigned_number::value>::type eval_subtract_default(T& t, const U& u, const T& v) +{ + T temp(u); + eval_subtract(t, temp, v); +} template inline void eval_subtract_default(T& t, const U& u, const V& v) { t = u; - eval_subtract(t, u); + eval_subtract(t, v); } template inline void eval_subtract(T& t, const U& u, const V& v) diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index d01e92bb..c58791f6 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -20,14 +20,10 @@ inline void eval_qr(const Backend& x, const Backend& y, Backend& q, Backend& r) eval_modulus(r, x, y); } -template -inline typename enable_if, Integer>::type maybe_abs(Integer i) { return std::abs(i); } -template -inline typename enable_if, Integer>::type maybe_abs(Integer i) { return i; } - template inline Integer eval_integer_modulus(const Backend& x, Integer val) { + BOOST_MP_USING_ABS using default_ops::eval_modulus; using default_ops::eval_convert_to; typedef typename boost::multiprecision::detail::canonical::type int_type; @@ -35,7 +31,7 @@ inline Integer eval_integer_modulus(const Backend& x, Integer val) eval_modulus(t, x, static_cast(val)); Integer result; eval_convert_to(&result, t); - return maybe_abs(result); + return abs(result); } #ifdef BOOST_MSVC diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index 49933a8f..82bb5e5c 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -359,7 +359,7 @@ inline number operator - (number&& a, const number&&>(a); } template -inline number operator - (const number& a, number&& b) +inline typename enable_if, number >::type operator - (const number& a, number&& b) { using default_ops::eval_subtract; eval_subtract(b.backend(), a.backend()); @@ -382,7 +382,7 @@ inline typename enable_if >, return static_cast&&>(a); } template -inline typename enable_if >, number >::type +inline typename enable_if_c<(is_compatible_arithmetic_type >::value && is_signed_number::value), number >::type operator - (const V& a, number&& b) { using default_ops::eval_subtract; diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index 37057c12..e7244273 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -59,15 +59,20 @@ struct is_compatible_arithmetic_type namespace detail{ // -// Workaround for missing abs(long long) on some compilers: +// Workaround for missing abs(long long) and abs(__int128) on some compilers: // template -typename boost::enable_if, T>::type abs(const T& t) BOOST_NOEXCEPT +typename enable_if_c<(is_signed::value || is_floating_point::value), T>::type abs(T t) BOOST_NOEXCEPT { return t < 0 ? -t : t; } +template +typename enable_if_c<(is_unsigned::value), T>::type abs(T t) BOOST_NOEXCEPT +{ + return t; +} -#define BOOST_MP_USING_ABS using std::abs; using boost::multiprecision::detail::abs; +#define BOOST_MP_USING_ABS using boost::multiprecision::detail::abs; // // Move support: @@ -205,15 +210,6 @@ struct backend_type > }; -template -struct is_number : public mpl::false_{}; -template -struct is_number > : public mpl::true_{}; -template -struct is_mp_number_exp : public mpl::false_{}; -template -struct is_mp_number_exp > : public mpl::true_{}; - template struct combine_expression { @@ -676,6 +672,13 @@ struct component_type > : public component_type struct component_type > : public component_type::result_type>{}; +template +struct is_unsigned_number : public mpl::false_{}; +template +struct is_unsigned_number > : public is_unsigned_number {}; +template +struct is_signed_number : public mpl::bool_::value> {}; + }} // namespaces namespace boost{ namespace math{ namespace tools{ diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index ae17fbe4..65b162be 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -152,6 +152,27 @@ run test_arithmetic.cpp TEST_CPP_INT_3 : test_arithmetic_cpp_int_3 ; +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT_1A + : test_arithmetic_cpp_int_1a ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT_2A + : test_arithmetic_cpp_int_2a ; + +run test_arithmetic.cpp + : # command line + : # input files + : # requirements + TEST_CPP_INT_3A + : test_arithmetic_cpp_int_3a ; + run test_arithmetic.cpp : # command line : # input files @@ -707,6 +728,28 @@ run test_cpp_int.cpp gmp : # requirements [ check-target-builds ../config//has_gmp : : no ] release # otherwise runtime is too slow!! + TEST1 + : test_cpp_int_1 + ; + +run test_cpp_int.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] + release # otherwise runtime is too slow!! + TEST2 + : test_cpp_int_2 + ; + +run test_cpp_int.cpp gmp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : : no ] + release # otherwise runtime is too slow!! + TEST3 + : test_cpp_int_3 ; run test_miller_rabin.cpp gmp diff --git a/test/include_test/cpp_int_include_test.cpp b/test/include_test/cpp_int_include_test.cpp index a5f33323..e3742612 100644 --- a/test/include_test/cpp_int_include_test.cpp +++ b/test/include_test/cpp_int_include_test.cpp @@ -9,8 +9,8 @@ using namespace boost::multiprecision; number > a; number, et_off> b; -number, et_off> c; -number, et_off> d; -number, et_off> e; +number, et_off> c; +number, et_off> d; +number, et_off> e; diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index ad1b78a6..1b047b1f 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -19,6 +19,7 @@ !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) \ && !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\ && !defined(TEST_CPP_INT_1) && !defined(TEST_CPP_INT_2) && !defined(TEST_CPP_INT_3) \ + && !defined(TEST_CPP_INT_1A) && !defined(TEST_CPP_INT_2A) && !defined(TEST_CPP_INT_3A) \ && !defined(TEST_CPP_INT_BR) && !defined(TEST_ARITHMETIC_BACKEND) # define TEST_MPF_50 # define TEST_MPF @@ -32,6 +33,9 @@ # define TEST_CPP_INT_1 # define TEST_CPP_INT_2 # define TEST_CPP_INT_3 +# define TEST_CPP_INT_1A +# define TEST_CPP_INT_2A +# define TEST_CPP_INT_3A # define TEST_CPP_INT_BR # define TEST_ARITHMETIC_BACKEND @@ -64,7 +68,7 @@ #include #include #endif -#if defined(TEST_CPP_INT_1) || defined(TEST_CPP_INT_2) || defined(TEST_CPP_INT_3) || defined(TEST_CPP_INT_BR) +#if defined(TEST_CPP_INT_1) || defined(TEST_CPP_INT_2) || defined(TEST_CPP_INT_3) || defined(TEST_CPP_INT_BR) || defined(TEST_CPP_INT_1A) || defined(TEST_CPP_INT_2A) || defined(TEST_CPP_INT_3A) #include #endif @@ -150,6 +154,10 @@ struct is_twos_complement_integer : public boost::mpl::true_ {}; template <> struct is_twos_complement_integer : public boost::mpl::false_ {}; #endif +#if defined(TEST_CPP_INT_1) || defined(TEST_CPP_INT_2) || defined(TEST_CPP_INT_3) || defined(TEST_CPP_INT_BR) || defined(TEST_CPP_INT_1A) || defined(TEST_CPP_INT_2A) || defined(TEST_CPP_INT_3A) +template +struct is_twos_complement_integer, ExpressionTemplates> > : public boost::mpl::false_ {}; +#endif #define BOOST_TEST_EQUAL(a, b) BOOST_TEST((a) == (b)) @@ -193,16 +201,16 @@ struct related_type > type; }; #endif -#if defined(TEST_CPP_INT_1) || defined(TEST_CPP_INT_2) || defined(TEST_CPP_INT_3) || defined(TEST_CPP_INT_BR) +#if defined(TEST_CPP_INT_1) || defined(TEST_CPP_INT_2) || defined(TEST_CPP_INT_3) || defined(TEST_CPP_INT_BR) || defined(TEST_CPP_INT_1A) || defined(TEST_CPP_INT_2A) || defined(TEST_CPP_INT_3A) template <> struct related_type { typedef boost::multiprecision::int256_t type; }; -template -struct related_type, ET> > +template +struct related_type, ET> > { - typedef boost::multiprecision::number, ET> type; + typedef boost::multiprecision::number, ET> type; }; #endif template @@ -315,11 +323,18 @@ void test_complement(Real a, Real b, Real c, const boost::mpl::true_&) int i = 1020304; int j = 56789123; int sign_mask = ~0; - BOOST_TEST(~a == (~i & sign_mask)); - c = a & ~b; - BOOST_TEST(c == (i & (~j & sign_mask))); - c = ~(a | b); - BOOST_TEST(c == (~(i | j) & sign_mask)); + if(std::numeric_limits::is_signed) + { + BOOST_TEST(~a == (~i & sign_mask)); + c = a & ~b; + BOOST_TEST(c == (i & (~j & sign_mask))); + c = ~(a | b); + BOOST_TEST(c == (~(i | j) & sign_mask)); + } + else + { + BOOST_TEST((~a & a) == 0); + } } template @@ -710,7 +725,10 @@ void test_integer_ops(const boost::mpl::int_::is_signed || is_twos_complement_integer::value) + { + ac = a; + ac -= c - b; + BOOST_TEST(ac == 8 - (500-64)); + ac = a; + ac -= b*c; + BOOST_TEST(ac == 8 - 500*64); } - ac = a; - ac -= c - b; - BOOST_TEST(ac == 8 - (500-64)); - ac = a; - ac -= b*c; - BOOST_TEST(ac == 8 - 500*64); ac = a; ac += ac * b; BOOST_TEST(ac == 8 + 8 * 64); - ac = a; - ac -= ac * b; - BOOST_TEST(ac == 8 - 8 * 64); + if(std::numeric_limits::is_signed || is_twos_complement_integer::value) + { + ac = a; + ac -= ac * b; + BOOST_TEST(ac == 8 - 8 * 64); + } ac = a * 8; ac *= +a; BOOST_TEST(ac == 64 * 8); ac = a; - ac *= -a; - BOOST_TEST(ac == -64); - ac = a; ac *= b * c; BOOST_TEST(ac == 8 * 64 * 500); ac = a; @@ -1583,6 +1604,9 @@ void test() ac = b; ac /= -a; BOOST_TEST(ac == -8); + ac = a; + ac *= -a; + BOOST_TEST(ac == -64); } ac = b; ac /= b / a; @@ -1775,7 +1799,10 @@ void test() // a = 20; test_conditional(a, +a); - test_conditional(Real(-a), -a); + if(std::numeric_limits::is_signed || is_twos_complement_integer::value) + { + test_conditional(Real(-a), -a); + } test_conditional(a, (a + 0)); } @@ -1828,18 +1855,35 @@ int main() #endif #ifdef TEST_CPP_INT_1 test(); - test(); - test(); + test(); + test(); +#endif +#ifdef TEST_CPP_INT_1A + test(); + test(); + test(); #endif #ifdef TEST_CPP_INT_2 test(); test, boost::multiprecision::et_off> >(); - test > >(); + test > >(); +#endif +#ifdef TEST_CPP_INT_2A + test(); + test, boost::multiprecision::et_off> >(); + test > >(); #endif #ifdef TEST_CPP_INT_3 // Again with "trivial" backends: - test > >(); - test > >(); + test > >(); + test > >(); + test > >(); +#endif +#ifdef TEST_CPP_INT_3A + // Again with "trivial" checked backends: + test > >(); + test > >(); + test > >(); #endif #ifdef TEST_CPP_INT_BR test >(); diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index 853249e1..164833d5 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -57,6 +57,8 @@ void test() { using namespace boost::multiprecision; typedef Number test_type; + typedef typename test_type::backend_type::checked_type checked; + unsigned last_error_count = 0; boost::timer tim; @@ -242,7 +244,7 @@ void test() BOOST_CHECK_EQUAL(mpz_int(gcd(a, -b)).str(), test_type(gcd(a1, -b1)).str()); BOOST_CHECK_EQUAL(mpz_int(lcm(c, -d)).str(), test_type(lcm(c1, -d1)).str()); - if(std::numeric_limits::is_modulo) + if(std::numeric_limits::is_modulo && checked::value) { static mpz_int m = mpz_int(1) << std::numeric_limits::digits; mpz_int t(a); @@ -327,7 +329,7 @@ void test() // Tests run on the compiler farm time out after 300 seconds, // so don't get too close to that: // - if(tim.elapsed() > 100) + if(tim.elapsed() > 200) { std::cout << "Timeout reached, aborting tests now....\n"; break; @@ -336,11 +338,25 @@ void test() } } +#if !defined(TEST1) && !defined(TEST2) && !defined(TEST3) +#define TEST1 +#define TEST2 +#define TEST3 +#endif + int main() { using namespace boost::multiprecision; +#ifdef TEST1 test(); - test > >(); +#endif +#ifdef TEST2 + test > >(); +#endif +#ifdef TEST3 + // Unchecked test verifies modulo arithmetic: + test > >(); +#endif return boost::report_errors(); } diff --git a/test/test_cpp_int_conv.cpp b/test/test_cpp_int_conv.cpp index 62b84e55..d5a8e2a3 100644 --- a/test/test_cpp_int_conv.cpp +++ b/test/test_cpp_int_conv.cpp @@ -23,7 +23,7 @@ int main() cpp_int i1(2); int128_t i2(3); int256_t i3(4); - number > i4(5); + number > i4(5); i1 = i3; BOOST_TEST(i1 == 4); @@ -48,7 +48,7 @@ int main() int128_t i6(i4); BOOST_TEST(i6 == -5677334); - number, et_off> i7(i3); + number, et_off> i7(i3); BOOST_TEST(i7 == -1234567); int256_t i8(i6); @@ -57,13 +57,13 @@ int main() i7.assign(4.0); BOOST_TEST(i7 == 4); - number, et_off> i9(-5677334); + number, et_off> i9(-5677334); i7 = i9; BOOST_TEST(i7 == -5677334); - i7 = number, et_off>(i9); + i7 = number, et_off>(i9); BOOST_TEST(i7 == -5677334); - i9 = static_cast, et_off> >(i7); + i9 = static_cast, et_off> >(i7); BOOST_TEST(i9 == -5677334); ++i9; diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index a17cfcf5..6d9d0a76 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -40,12 +40,27 @@ #include #include +template +struct unchecked_type{ typedef T type; }; + +#ifdef TEST_CPP_INT +template +struct unchecked_type, ExpressionTemplates> > +{ + typedef boost::multiprecision::number, ExpressionTemplates> type; +}; +#endif + template T generate_random() { - static boost::random::uniform_int_distribution ui(0, 20); + typedef typename unchecked_type::type unchecked_T; + + static const unsigned limbs = std::numeric_limits::is_specialized && std::numeric_limits::is_bounded ? std::numeric_limits::digits / std::numeric_limits::digits + 3 : 20; + + static boost::random::uniform_int_distribution ui(0, limbs); static boost::random::mt19937 gen; - T val = gen(); + unchecked_T val = gen(); unsigned lim = ui(gen); for(unsigned i = 0; i < lim; ++i) { @@ -123,11 +138,11 @@ int main() test_round_trip(); #endif #ifdef TEST_CPP_INT - test_round_trip > >(); - test_round_trip > >(); - test_round_trip > >(); - test_round_trip > >(); - test_round_trip > >(); + test_round_trip(); + test_round_trip(); + test_round_trip(); + test_round_trip > >(); + test_round_trip > >(); #endif return boost::report_errors(); } diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 4b95a19d..7b262ddc 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -239,8 +239,8 @@ int main() test(); test(); test(); - test > >(); - test > >(); + test > >(); + test > >(); #endif return boost::report_errors(); } From 82409d86a0ec83c3b8249b980077cc0bd17dba0a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 25 Oct 2012 09:29:04 +0000 Subject: [PATCH 242/256] Minor changes for __int128 support and fix some C++0x issues [SVN r81062] --- .../multiprecision/cpp_int/cpp_int_config.hpp | 19 +++++++++---------- test/test_constexpr.cpp | 10 +++++----- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/include/boost/multiprecision/cpp_int/cpp_int_config.hpp b/include/boost/multiprecision/cpp_int/cpp_int_config.hpp index 2e829312..ae74d3b9 100644 --- a/include/boost/multiprecision/cpp_int/cpp_int_config.hpp +++ b/include/boost/multiprecision/cpp_int/cpp_int_config.hpp @@ -63,13 +63,12 @@ struct largest_unsigned_type } // namepsace detail -#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6))) \ - && !defined(BOOST_INTEL) && defined(__WORDSIZE) && (__WORDSIZE == 64) +#if defined(BOOST_HAS_INT128) typedef detail::largest_unsigned_type<64>::type limb_type; typedef detail::largest_signed_type<64>::type signed_limb_type; -typedef unsigned __int128 double_limb_type; -typedef __int128 signed_double_limb_type; +typedef boost::uint128_type double_limb_type; +typedef boost::int128_type signed_double_limb_type; static const limb_type max_block_10 = 1000000000000000000uLL; static const limb_type digits_per_block_10 = 18; @@ -88,14 +87,14 @@ inline limb_type block_multiplier(unsigned count) } // namespace multiprecision template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base(0)> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base(0)> { }; template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base(static_cast(1) << 127), static_cast((~static_cast(0)) >> 1)> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base((static_cast(1) << 127)), static_cast(((~static_cast(0)) >> 1))> { }; namespace multiprecision{ diff --git a/test/test_constexpr.cpp b/test/test_constexpr.cpp index 8669141b..fb4fff44 100644 --- a/test/test_constexpr.cpp +++ b/test/test_constexpr.cpp @@ -31,9 +31,9 @@ void test3() using namespace boost::multiprecision; -template void test1, et_off> >(); -template void test1, et_off> >(); -template void test3, et_off> >(); -template void test2, et_off> >(); +template void test1, et_off> >(); +template void test1, et_off> >(); +template void test3, et_off> >(); +template void test2, et_off> >(); -#endif \ No newline at end of file +#endif From e3b56e3f7c66122db8449d589e5fc0eda21c7dd6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 25 Oct 2012 11:53:25 +0000 Subject: [PATCH 243/256] Fix constexpr support. [SVN r81063] --- include/boost/multiprecision/cpp_int.hpp | 61 +++++++++++++----------- test/test_constexpr.cpp | 15 ++++++ 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index c035de13..68594089 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -680,25 +680,21 @@ private: BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); protected: template - typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), T>::type check_in_range(T val, const mpl::int_&) + typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), void>::type check_in_range(T val, const mpl::int_&) { BOOST_MP_USING_ABS typedef typename common_type::type common_type; if(static_cast(abs(val)) > static_cast(limb_mask)) BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); - return val; } template - BOOST_CONSTEXPR T check_in_range(T val, const mpl::int_&) - { - return val; - } + void check_in_range(T val, const mpl::int_&){} template - BOOST_CONSTEXPR T check_in_range(T val) + void check_in_range(T val) { - return check_in_range(val, checked_type()); + check_in_range(val, checked_type()); } public: @@ -706,14 +702,23 @@ public: // Direct construction: // template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) - : m_data(check_in_range(i) < 0 ? static_cast(-i) : static_cast(i)), m_sign(i < 0) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if_c::value && (Checked == unchecked) >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(i < 0 ? static_cast(-i) : static_cast(i)), m_sign(i < 0) {} + template + BOOST_FORCEINLINE cpp_int_base(SI i, typename enable_if_c::value && (Checked == checked) >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(i < 0 ? static_cast(-i) : static_cast(i)), m_sign(i < 0) { check_in_range(i); } template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) - : m_data(static_cast(check_in_range(i))), m_sign(false) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if_c::value && (Checked == unchecked)>::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(i)), m_sign(false) {} + template + BOOST_FORCEINLINE cpp_int_base(UI i, typename enable_if_c::value && (Checked == checked)>::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(i)), m_sign(false) { check_in_range(i); } template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) - : m_data(static_cast(std::fabs(check_in_range(i)))), m_sign(i < 0) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(F i, typename enable_if_c::value && (Checked == unchecked)>::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(std::fabs(i))), m_sign(i < 0) {} + template + BOOST_FORCEINLINE cpp_int_base(F i, typename enable_if_c::value && (Checked == checked)>::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(std::fabs(i))), m_sign(i < 0) { check_in_range(i); } // // Helper functions for getting at our internal data, and manipulating storage: // @@ -792,7 +797,7 @@ private: BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); protected: template - typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), T>::type check_in_range(T val, const mpl::int_&, const mpl::true_&) + typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type))>::type check_in_range(T val, const mpl::int_&, const mpl::true_&) { typedef typename common_type::type common_type; @@ -800,7 +805,7 @@ protected: BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); } template - typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), T>::type check_in_range(T val, const mpl::int_&, const mpl::false_&) + typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type))>::type check_in_range(T val, const mpl::int_&, const mpl::false_&) { typedef typename common_type::type common_type; @@ -808,18 +813,14 @@ protected: BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); if(val < 0) BOOST_THROW_EXCEPTION(std::range_error("The argument to an unsigned cpp_int constructor was negative.")); - return val; } template - BOOST_FORCEINLINE BOOST_CONSTEXPR T check_in_range(T val, const mpl::int_&, const U&) - { - return val; - } + BOOST_FORCEINLINE void check_in_range(T val, const mpl::int_&, const U&){} template - BOOST_FORCEINLINE BOOST_CONSTEXPR T check_in_range(T val) + BOOST_FORCEINLINE void check_in_range(T val) { - return check_in_range(val, checked_type(), is_unsigned()); + check_in_range(val, checked_type(), is_unsigned()); } public: @@ -827,11 +828,17 @@ public: // Direct construction: // template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) - : m_data(check_in_range(i) < 0 ? 1 + ~static_cast(-i) : static_cast(i)) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(SI i, typename enable_if_c::value && (Checked == unchecked) >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(i < 0 ? 1 + ~static_cast(-i) : static_cast(i)) {} + template + BOOST_FORCEINLINE cpp_int_base(SI i, typename enable_if_c::value && (Checked == checked) >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(i < 0 ? 1 + ~static_cast(-i) : static_cast(i)) { check_in_range(i); } template - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) - : m_data(static_cast(check_in_range(i))) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(UI i, typename enable_if_c::value && (Checked == unchecked) >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(i)) {} + template + BOOST_FORCEINLINE cpp_int_base(UI i, typename enable_if_c::value && (Checked == checked) >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) + : m_data(static_cast(i)) { check_in_range(i); } template BOOST_FORCEINLINE cpp_int_base(F i, typename enable_if >::type const* = 0) BOOST_NOEXCEPT_IF((Checked == unchecked)) : m_data(static_cast(std::fabs(i))) diff --git a/test/test_constexpr.cpp b/test/test_constexpr.cpp index fb4fff44..ca84ad3e 100644 --- a/test/test_constexpr.cpp +++ b/test/test_constexpr.cpp @@ -7,6 +7,9 @@ #ifndef BOOST_NO_CONSTEXPR +template +void silence_unused(const T&){} + template void test1() { @@ -14,6 +17,11 @@ void test1() constexpr T i2; constexpr T i3 = -3; constexpr T i4(i1); + + silence_unused(i1); + silence_unused(i2); + silence_unused(i3); + silence_unused(i4); } template void test2() @@ -21,12 +29,19 @@ void test2() constexpr T i1 = 2u; constexpr T i2; constexpr T i3 = -3; + + silence_unused(i1); + silence_unused(i2); + silence_unused(i3); } template void test3() { constexpr T i1 = 2u; constexpr T i2; + + silence_unused(i1); + silence_unused(i2); } using namespace boost::multiprecision; From 645fe8865c9d8db83d963a0f0e2979b8056fa442 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 27 Oct 2012 17:48:33 +0000 Subject: [PATCH 244/256] Add tests for checked ints and fix failures. Make negating an unsigned int an error, and fix resulting test failures. Change allocator defaults to be void when the allocator is not actually required. [SVN r81070] --- include/boost/multiprecision/cpp_int.hpp | 24 +- .../boost/multiprecision/cpp_int/bitwise.hpp | 125 +++---- .../boost/multiprecision/cpp_int/checked.hpp | 2 +- .../multiprecision/cpp_int/cpp_int_config.hpp | 12 +- .../boost/multiprecision/cpp_int/limits.hpp | 7 +- .../boost/multiprecision/detail/et_ops.hpp | 12 +- .../boost/multiprecision/detail/no_et_ops.hpp | 2 + test/Jamfile.v2 | 2 + test/compile_fail/cpp_int_complement.cpp | 14 + test/compile_fail/cpp_int_negate_1.cpp | 14 + test/compile_fail/cpp_int_negate_2.cpp | 14 + test/test.hpp | 7 +- test/test_arithmetic.cpp | 331 +++++++++--------- test/test_checked_cpp_int.cpp | 116 ++++++ test/test_cpp_int.cpp | 71 ++-- test/test_int_io.cpp | 38 +- 16 files changed, 504 insertions(+), 287 deletions(-) create mode 100644 test/compile_fail/cpp_int_complement.cpp create mode 100644 test/compile_fail/cpp_int_negate_1.cpp create mode 100644 test/compile_fail/cpp_int_negate_2.cpp create mode 100644 test/test_checked_cpp_int.cpp diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 68594089..4f84e881 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -32,7 +32,7 @@ namespace backends{ #pragma warning(disable:4127 4351 4293) #endif -template > +template >::type > struct cpp_int_backend; template @@ -680,7 +680,8 @@ private: BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); protected: template - typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type)), void>::type check_in_range(T val, const mpl::int_&) + typename disable_if_c::is_specialized && (std::numeric_limits::digits <= MinBits)>::type + check_in_range(T val, const mpl::int_&) { BOOST_MP_USING_ABS typedef typename common_type::type common_type; @@ -797,7 +798,8 @@ private: BOOST_STATIC_ASSERT_MSG(MinBits <= sizeof(double_limb_type) * CHAR_BIT, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?"); protected: template - typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type))>::type check_in_range(T val, const mpl::int_&, const mpl::true_&) + typename disable_if_c::is_specialized && (std::numeric_limits::digits <= MinBits)>::type + check_in_range(T val, const mpl::int_&, const mpl::false_&) { typedef typename common_type::type common_type; @@ -805,7 +807,7 @@ protected: BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); } template - typename disable_if_c::value && (sizeof(T) <= sizeof(local_limb_type))>::type check_in_range(T val, const mpl::int_&, const mpl::false_&) + void check_in_range(T val, const mpl::int_&, const mpl::true_&) { typedef typename common_type::type common_type; @@ -814,13 +816,13 @@ protected: if(val < 0) BOOST_THROW_EXCEPTION(std::range_error("The argument to an unsigned cpp_int constructor was negative.")); } - template - BOOST_FORCEINLINE void check_in_range(T val, const mpl::int_&, const U&){} + template + BOOST_FORCEINLINE void check_in_range(T val, const mpl::int_&, const mpl::bool_&){} template BOOST_FORCEINLINE void check_in_range(T val) { - check_in_range(val, checked_type(), is_unsigned()); + check_in_range(val, checked_type(), is_signed()); } public: @@ -878,6 +880,10 @@ public: } BOOST_FORCEINLINE void negate() BOOST_NOEXCEPT { + if(Checked == checked) + { + BOOST_THROW_EXCEPTION(std::range_error("Attempt to negate an unsigned type.")); + } m_data = ~m_data; ++m_data; } @@ -1316,7 +1322,7 @@ private: val = 10 + *s - 'A'; else val = radix + 1; - if(val > radix) + if(val >= radix) { BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); } @@ -1377,7 +1383,7 @@ private: val = 10 + *s - 'A'; else val = base_type::max_limb_value; - if(val > radix) + if(val >= radix) { BOOST_THROW_EXCEPTION(std::runtime_error("Unexpected content found while parsing character string.")); } diff --git a/include/boost/multiprecision/cpp_int/bitwise.hpp b/include/boost/multiprecision/cpp_int/bitwise.hpp index 0d6db044..7909cba3 100644 --- a/include/boost/multiprecision/cpp_int/bitwise.hpp +++ b/include/boost/multiprecision/cpp_int/bitwise.hpp @@ -10,10 +10,24 @@ namespace boost{ namespace multiprecision{ namespace backends{ +template +void is_valid_bitwise_op( + cpp_int_backend& result, + const cpp_int_backend& o, const mpl::int_&) +{ + if(result.sign() || o.sign()) + BOOST_THROW_EXCEPTION(std::range_error("Bitwise operations on negative values results in undefined behavior.")); +} + +template +void is_valid_bitwise_op( + cpp_int_backend&, + const cpp_int_backend& , const mpl::int_&){} + template void bitwise_op( - CppInt1& result, - const CppInt2& o, + CppInt1& result, + const CppInt2& o, Op op) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int::value)) { // @@ -26,6 +40,11 @@ void bitwise_op( // When one arg is negative we convert to 2's complement form "on the fly", // and then convert back to signed-magnitude form at the end. // + // Note however, that if the type is checked, then bitwise ops on negative values + // are not permitted and an exception will result. + // + is_valid_bitwise_op(result, o, typename CppInt1::checked_type()); + // // First figure out how big the result needs to be and set up some data: // unsigned rs = result.size(); @@ -144,36 +163,36 @@ struct bit_or { limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCE struct bit_xor{ limb_type operator()(limb_type a, limb_type b)const BOOST_NOEXCEPT { return a ^ b; } }; template -BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type eval_bitwise_and( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { bitwise_op(result, o, bit_and()); } template -BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type eval_bitwise_or( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { bitwise_op(result, o, bit_or()); } template -BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value >::type eval_bitwise_xor( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { bitwise_op(result, o, bit_xor()); } template -BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type eval_complement( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { BOOST_STATIC_ASSERT_MSG(((Checked1 != checked) || (Checked2 != checked)), "Attempt to take the complement of a signed type results in undefined behavior."); @@ -184,9 +203,9 @@ BOOST_FORCEINLINE typename enable_if_c -BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type +BOOST_FORCEINLINE typename enable_if_c >::value && !is_trivial_cpp_int >::value && !is_trivial_cpp_int >::value >::type eval_complement( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { unsigned os = o.size(); @@ -195,12 +214,13 @@ BOOST_FORCEINLINE typename enable_if_c(0); + result.normalize(); } template -inline typename enable_if_c >::value>::type +inline typename enable_if_c >::value>::type eval_left_shift( - cpp_int_backend& result, + cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { if(!s) @@ -287,7 +307,7 @@ inline typename enable_if_c inline typename enable_if_c >::value>::type eval_right_shift( - cpp_int_backend& result, + cpp_int_backend& result, double_limb_type s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { if(!s) @@ -334,7 +354,7 @@ inline typename enable_if_c -BOOST_FORCEINLINE typename enable_if > >::type +BOOST_FORCEINLINE typename enable_if > >::type eval_left_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { *result.limbs() = detail::checked_left_shift(*result.limbs(), s, typename cpp_int_backend::checked_type()); @@ -342,35 +362,21 @@ BOOST_FORCEINLINE typename enable_if -BOOST_FORCEINLINE typename enable_if > >::type +BOOST_FORCEINLINE typename enable_if > >::type eval_right_shift(cpp_int_backend& result, T s) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { // Nothing to check here... just make sure we don't invoke undefined behavior: *result.limbs() = (static_cast(s) >= sizeof(*result.limbs()) * CHAR_BIT) ? 0 : *result.limbs() >>= s; } -template -void is_valid_bitwise_op( - cpp_int_backend& result, - const cpp_int_backend& o, const mpl::int_&) -{ - if(result.sign() || o.sign()) - BOOST_THROW_EXCEPTION(std::range_error("Bitwise operations on negative values results in undefined behavior.")); -} - -template -void is_valid_bitwise_op( - cpp_int_backend&, - const cpp_int_backend& , const mpl::int_&){} - template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value && (is_signed_number >::value || is_signed_number >::value) - >::type + >::type eval_bitwise_and( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { is_valid_bitwise_op(result, o, typename cpp_int_backend::checked_type()); @@ -401,13 +407,13 @@ inline typename enable_if_c< template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value - && is_unsigned_number >::value + && is_unsigned_number >::value && is_unsigned_number >::value - >::type + >::type eval_bitwise_and( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { *result.limbs() &= *o.limbs(); @@ -415,12 +421,12 @@ inline typename enable_if_c< template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value && (is_signed_number >::value || is_signed_number >::value) - >::type + >::type eval_bitwise_or( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { is_valid_bitwise_op(result, o, typename cpp_int_backend::checked_type()); @@ -452,13 +458,13 @@ inline typename enable_if_c< template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value - && is_unsigned_number >::value + && is_unsigned_number >::value && is_unsigned_number >::value - >::type + >::type eval_bitwise_or( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { *result.limbs() |= *o.limbs(); @@ -466,12 +472,12 @@ inline typename enable_if_c< template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value && (is_signed_number >::value || is_signed_number >::value) - >::type + >::type eval_bitwise_xor( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { is_valid_bitwise_op(result, o, typename cpp_int_backend::checked_type()); @@ -502,13 +508,13 @@ inline typename enable_if_c< template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value - && is_unsigned_number >::value + && is_unsigned_number >::value && is_unsigned_number >::value - >::type + >::type eval_bitwise_xor( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { *result.limbs() ^= *o.limbs(); @@ -516,12 +522,12 @@ inline typename enable_if_c< template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value && (is_signed_number >::value || is_signed_number >::value) - >::type + >::type eval_complement( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { BOOST_STATIC_ASSERT_MSG(((Checked1 != checked) || (Checked2 != checked)), "Attempt to take the complement of a signed type results in undefined behavior."); @@ -543,16 +549,17 @@ inline typename enable_if_c< template inline typename enable_if_c< - is_trivial_cpp_int >::value + is_trivial_cpp_int >::value && is_trivial_cpp_int >::value - && is_unsigned_number >::value + && is_unsigned_number >::value && is_unsigned_number >::value - >::type + >::type eval_complement( - cpp_int_backend& result, + cpp_int_backend& result, const cpp_int_backend& o) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) { *result.limbs() = ~*o.limbs(); + result.normalize(); } }}} // namespaces diff --git a/include/boost/multiprecision/cpp_int/checked.hpp b/include/boost/multiprecision/cpp_int/checked.hpp index a3eb5dcc..5217ffe8 100644 --- a/include/boost/multiprecision/cpp_int/checked.hpp +++ b/include/boost/multiprecision/cpp_int/checked.hpp @@ -23,7 +23,7 @@ inline void raise_add_overflow() } inline void raise_subtract_overflow() { - raise_overflow("subtraction"); + BOOST_THROW_EXCEPTION(std::range_error("Subtraction resulted in a negative value, but the type is unsigned")); } inline void raise_mul_overflow() { diff --git a/include/boost/multiprecision/cpp_int/cpp_int_config.hpp b/include/boost/multiprecision/cpp_int/cpp_int_config.hpp index ae74d3b9..5c05d5ae 100644 --- a/include/boost/multiprecision/cpp_int/cpp_int_config.hpp +++ b/include/boost/multiprecision/cpp_int/cpp_int_config.hpp @@ -137,16 +137,16 @@ inline void minmax(const T& a, const T& b, T& aa, T& bb) enum cpp_integer_type { - signed_magnitude, - unsigned_magnitude, - signed_packed, - unsigned_packed + signed_magnitude = 1, + unsigned_magnitude = 0, + signed_packed = 3, + unsigned_packed = 2 }; enum cpp_int_check_type { - checked, - unchecked + checked = 1, + unchecked = 0 }; }} diff --git a/include/boost/multiprecision/cpp_int/limits.hpp b/include/boost/multiprecision/cpp_int/limits.hpp index 0f80fccc..7f7d7476 100644 --- a/include/boost/multiprecision/cpp_int/limits.hpp +++ b/include/boost/multiprecision/cpp_int/limits.hpp @@ -18,7 +18,7 @@ inline boost::multiprecision::number, ExpressionTemplates> result_type; - typedef boost::multiprecision::number, ExpressionTemplates> ui_type; + typedef boost::multiprecision::number, ExpressionTemplates> ui_type; static const result_type val = -result_type(~ui_type(0)); return val; } @@ -57,7 +57,7 @@ inline boost::multiprecision::number, ExpressionTemplates> result_type; - typedef boost::multiprecision::number, ExpressionTemplates> ui_type; + typedef boost::multiprecision::number, ExpressionTemplates> ui_type; static const result_type val = ~ui_type(0); return val; } @@ -68,7 +68,8 @@ inline boost::multiprecision::number, ExpressionTemplates> result_type; - static const result_type val = ~result_type(0); + typedef boost::multiprecision::number, ExpressionTemplates> ui_type; + static const result_type val = ~ui_type(0); return val; } diff --git a/include/boost/multiprecision/detail/et_ops.hpp b/include/boost/multiprecision/detail/et_ops.hpp index 81fb9580..9808a6aa 100644 --- a/include/boost/multiprecision/detail/et_ops.hpp +++ b/include/boost/multiprecision/detail/et_ops.hpp @@ -18,9 +18,17 @@ inline const number& operator + (const number inline const detail::expression& operator + (const detail::expression& v) { return v; } template -inline detail::expression > operator - (const number& v) { return detail::expression >(v); } +inline detail::expression > operator - (const number& v) +{ + BOOST_STATIC_ASSERT_MSG(is_signed_number::value, "Negating an unsigned type results in ill-defined behavior."); + return detail::expression >(v); +} template -inline detail::expression > operator - (const detail::expression& v) { return detail::expression >(v); } +inline detail::expression > operator - (const detail::expression& v) +{ + BOOST_STATIC_ASSERT_MSG((is_signed_number::result_type>::value), "Negating an unsigned type results in ill-defined behavior."); + return detail::expression >(v); +} template inline detail::expression > operator ~ (const number& v) { return detail::expression >(v); } template diff --git a/include/boost/multiprecision/detail/no_et_ops.hpp b/include/boost/multiprecision/detail/no_et_ops.hpp index 82bb5e5c..df27544c 100644 --- a/include/boost/multiprecision/detail/no_et_ops.hpp +++ b/include/boost/multiprecision/detail/no_et_ops.hpp @@ -17,6 +17,7 @@ namespace multiprecision{ template inline number operator - (const number& v) { + BOOST_STATIC_ASSERT_MSG(is_signed_number::value, "Negating an unsigned type results in ill-defined behavior."); number result(v); result.backend().negate(); return BOOST_MP_MOVE(result); @@ -299,6 +300,7 @@ inline typename enable_if, number >::type template inline number operator - (number&& v) { + BOOST_STATIC_ASSERT_MSG(is_signed_number::value, "Negating an unsigned type results in ill-defined behavior."); v.backend().negate(); return static_cast&&>(v); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 65b162be..08cf87c7 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -752,6 +752,8 @@ run test_cpp_int.cpp gmp : test_cpp_int_3 ; +run test_checked_cpp_int.cpp ; + run test_miller_rabin.cpp gmp : # command line : # input files diff --git a/test/compile_fail/cpp_int_complement.cpp b/test/compile_fail/cpp_int_complement.cpp new file mode 100644 index 00000000..195d94e7 --- /dev/null +++ b/test/compile_fail/cpp_int_complement.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + checked_int256_t i; + i = ~i; +} diff --git a/test/compile_fail/cpp_int_negate_1.cpp b/test/compile_fail/cpp_int_negate_1.cpp new file mode 100644 index 00000000..35fa0abc --- /dev/null +++ b/test/compile_fail/cpp_int_negate_1.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + checked_uint256_t i; + i = -i; +} diff --git a/test/compile_fail/cpp_int_negate_2.cpp b/test/compile_fail/cpp_int_negate_2.cpp new file mode 100644 index 00000000..5b75cf09 --- /dev/null +++ b/test/compile_fail/cpp_int_negate_2.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +using namespace boost::multiprecision; + +int main() +{ + number, et_on> i; + i = -i; +} diff --git a/test/test.hpp b/test/test.hpp index d707ccc0..d8606f45 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -16,17 +16,20 @@ #include #include #include +#include namespace detail{ template -inline typename boost::disable_if, T>::type abs(const T& a) +inline typename boost::disable_if_c::value || boost::multiprecision::is_unsigned_number::value, T>::type + abs(const T& a) { return a < 0 ? -a : a; } template -inline typename boost::enable_if, T>::type abs(const T& a) +inline typename boost::enable_if_c::value || boost::multiprecision::is_unsigned_number::value, T>::type + abs(const T& a) { return a; } diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 1b047b1f..32f5a9d0 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -395,9 +395,118 @@ void test_integer_ops(const boost::mpl::int_(is_boost_rational()); } +template +void test_signed_integer_ops(const boost::mpl::true_&) +{ + Real a(20); + Real b(7); + Real c(5); + BOOST_TEST(-a % c == 0); + BOOST_TEST(-a % b == -20 % 7); + BOOST_TEST(-a % -b == -20 % -7); + BOOST_TEST(a % -b == 20 % -7); + BOOST_TEST(-a % 7 == -20 % 7); + BOOST_TEST(-a % -7 == -20 % -7); + BOOST_TEST(a % -7 == 20 % -7); + BOOST_TEST(-a % 7u == -20 % 7); + BOOST_TEST(-a % a == 0); + BOOST_TEST(-a % 5 == 0); + BOOST_TEST(-a % -5 == 0); + BOOST_TEST(a % -5 == 0); + + b = -b; + BOOST_TEST(a % b == 20 % -7); + a = -a; + BOOST_TEST(a % b == -20 % -7); + BOOST_TEST(a % -7 == -20 % -7); + b = 7; + BOOST_TEST(a % b == -20 % 7); + BOOST_TEST(a % 7 == -20 % 7); + BOOST_TEST(a % 7u == -20 % 7); + + a = 20; + a %= b; + BOOST_TEST(a == 20 % 7); + a = -20; + a %= b; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -b; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -b; + BOOST_TEST(a == -20 % -7); + a = 5; + a %= b - a; + BOOST_TEST(a == 5 % (7-5)); + a = -20; + a %= 7; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7; + BOOST_TEST(a == -20 % -7); +#ifndef BOOST_NO_LONG_LONG + a = -20; + a %= 7uLL; + BOOST_TEST(a == -20 % 7); + a = 20; + a %= -7LL; + BOOST_TEST(a == 20 % -7); + a = -20; + a %= -7LL; + BOOST_TEST(a == -20 % -7); +#endif + a = 400; + b = 45; + BOOST_TEST(gcd(a, -45) == boost::math::gcd(400, 45)); + BOOST_TEST(lcm(a, -45) == boost::math::lcm(400, 45)); + BOOST_TEST(gcd(-400, b) == boost::math::gcd(400, 45)); + BOOST_TEST(lcm(-400, b) == boost::math::lcm(400, 45)); + a = -20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); + a = 20; + BOOST_TEST(abs(a) == 20); + BOOST_TEST(abs(-a) == 20); + BOOST_TEST(abs(+a) == 20); + a = -400; + b = 45; + BOOST_TEST(gcd(a, b) == boost::math::gcd(-400, 45)); + BOOST_TEST(lcm(a, b) == boost::math::lcm(-400, 45)); + BOOST_TEST(gcd(a, 45) == boost::math::gcd(-400, 45)); + BOOST_TEST(lcm(a, 45) == boost::math::lcm(-400, 45)); + BOOST_TEST(gcd(-400, b) == boost::math::gcd(-400, 45)); + BOOST_TEST(lcm(-400, b) == boost::math::lcm(-400, 45)); + Real r; + divide_qr(a, b, c, r); + BOOST_TEST(c == a / b); + BOOST_TEST(r == a % b); + BOOST_TEST(integer_modulus(a, 57) == abs(a % 57)); + b = -57; + divide_qr(a, b, c, r); + BOOST_TEST(c == a / b); + BOOST_TEST(r == a % b); + BOOST_TEST(integer_modulus(a, -57) == abs(a % -57)); + a = 458; + divide_qr(a, b, c, r); + BOOST_TEST(c == a / b); + BOOST_TEST(r == a % b); + BOOST_TEST(integer_modulus(a, -57) == abs(a % -57)); +} +template +void test_signed_integer_ops(const boost::mpl::false_&) +{ +} + template void test_integer_ops(const boost::mpl::int_&) { + test_signed_integer_ops(boost::mpl::bool_::is_signed>()); + Real a(20); Real b(7); Real c(5); @@ -416,79 +525,14 @@ void test_integer_ops(const boost::mpl::int_::is_signed) - { - BOOST_TEST(-a % c == 0); - BOOST_TEST(-a % b == -20 % 7); - BOOST_TEST(-a % -b == -20 % -7); - BOOST_TEST(a % -b == 20 % -7); - BOOST_TEST(-a % 7 == -20 % 7); - BOOST_TEST(-a % -7 == -20 % -7); - BOOST_TEST(a % -7 == 20 % -7); - BOOST_TEST(-a % 7u == -20 % 7); - BOOST_TEST(-a % a == 0); - BOOST_TEST(-a % 5 == 0); - BOOST_TEST(-a % -5 == 0); - BOOST_TEST(a % -5 == 0); - - b = -b; - BOOST_TEST(a % b == 20 % -7); - a = -a; - BOOST_TEST(a % b == -20 % -7); - BOOST_TEST(a % -7 == -20 % -7); - b = 7; - BOOST_TEST(a % b == -20 % 7); - BOOST_TEST(a % 7 == -20 % 7); - BOOST_TEST(a % 7u == -20 % 7); - - a = 20; - a %= b; - BOOST_TEST(a == 20 % 7); - a = -20; - a %= b; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -b; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -b; - BOOST_TEST(a == -20 % -7); - a = 5; - a %= b - a; - BOOST_TEST(a == 5 % (7-5)); - } a = 20; a %= 7; BOOST_TEST(a == 20 % 7); - if(std::numeric_limits::is_signed) - { - a = -20; - a %= 7; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -7; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -7; - BOOST_TEST(a == -20 % -7); - } #ifndef BOOST_NO_LONG_LONG a = 20; a %= 7uLL; BOOST_TEST(a == 20 % 7); - if(std::numeric_limits::is_signed) - { - a = -20; - a %= 7uLL; - BOOST_TEST(a == -20 % 7); - a = 20; - a %= -7LL; - BOOST_TEST(a == 20 % -7); - a = -20; - a %= -7LL; - BOOST_TEST(a == -20 % -7); - } #endif a = 20; BOOST_TEST(++a == 21); @@ -649,20 +693,10 @@ void test_integer_ops(const boost::mpl::int_::is_signed) - { - BOOST_TEST(gcd(a, -45) == boost::math::gcd(400, 45)); - BOOST_TEST(lcm(a, -45) == boost::math::lcm(400, 45)); - } BOOST_TEST(gcd(a, 45u) == boost::math::gcd(400, 45)); BOOST_TEST(lcm(a, 45u) == boost::math::lcm(400, 45)); BOOST_TEST(gcd(400, b) == boost::math::gcd(400, 45)); BOOST_TEST(lcm(400, b) == boost::math::lcm(400, 45)); - if(std::numeric_limits::is_signed) - { - BOOST_TEST(gcd(-400, b) == boost::math::gcd(400, 45)); - BOOST_TEST(lcm(-400, b) == boost::math::lcm(400, 45)); - } BOOST_TEST(gcd(400u, b) == boost::math::gcd(400, 45)); BOOST_TEST(lcm(400u, b) == boost::math::lcm(400, 45)); @@ -685,39 +719,6 @@ void test_integer_ops(const boost::mpl::int_::is_signed) - { - a = -20; - BOOST_TEST(abs(a) == 20); - BOOST_TEST(abs(-a) == 20); - BOOST_TEST(abs(+a) == 20); - a = 20; - BOOST_TEST(abs(a) == 20); - BOOST_TEST(abs(-a) == 20); - BOOST_TEST(abs(+a) == 20); - a = -400; - b = 45; - BOOST_TEST(gcd(a, b) == boost::math::gcd(-400, 45)); - BOOST_TEST(lcm(a, b) == boost::math::lcm(-400, 45)); - BOOST_TEST(gcd(a, 45) == boost::math::gcd(-400, 45)); - BOOST_TEST(lcm(a, 45) == boost::math::lcm(-400, 45)); - BOOST_TEST(gcd(-400, b) == boost::math::gcd(-400, 45)); - BOOST_TEST(lcm(-400, b) == boost::math::lcm(-400, 45)); - divide_qr(a, b, c, r); - BOOST_TEST(c == a / b); - BOOST_TEST(r == a % b); - BOOST_TEST(integer_modulus(a, 57) == abs(a % 57)); - b = -57; - divide_qr(a, b, c, r); - BOOST_TEST(c == a / b); - BOOST_TEST(r == a % b); - BOOST_TEST(integer_modulus(a, -57) == abs(a % -57)); - a = 458; - divide_qr(a, b, c, r); - BOOST_TEST(c == a / b); - BOOST_TEST(r == a % b); - BOOST_TEST(integer_modulus(a, -57) == abs(a % -57)); - } for(unsigned i = 0; i < 20; ++i) { if(std::numeric_limits::is_specialized && (!std::numeric_limits::is_bounded || ((int)i * 17 < std::numeric_limits::digits))) @@ -904,8 +905,6 @@ struct lexical_cast_target_type template void test_negative_mixed(boost::mpl::true_ const&) { - if(std::numeric_limits::is_specialized && !std::numeric_limits::is_signed) - return; typedef typename lexical_cast_target_type::type target_type; typedef typename boost::mpl::if_< boost::is_convertible, @@ -1299,7 +1298,12 @@ void test_mixed(const boost::mpl::true_&) BOOST_TEST(r == static_cast(n4 * n5)); r = static_cast(4 * n4) / Real(4); BOOST_TEST(r == static_cast(n4)); - test_negative_mixed(boost::mpl::bool_::is_signed>()); + + typedef boost::mpl::bool_< + (!std::numeric_limits::is_specialized || std::numeric_limits::is_signed) + && (!std::numeric_limits::is_specialized || std::numeric_limits::is_signed)> signed_tag; + + test_negative_mixed(signed_tag()); n1 = 2; n2 = 3; @@ -1405,6 +1409,53 @@ void test_members(boost::rational) { } +template +void test_signed_ops(const boost::mpl::true_&) +{ + Real a(8); + Real b(64); + Real c(500); + Real d(1024); + Real ac; + BOOST_TEST(-a == -8); + ac = a; + ac = ac - b; + BOOST_TEST(ac == 8 - 64); + ac = a; + ac -= a + b; + BOOST_TEST(ac == -64); + ac = a; + ac -= b - a; + BOOST_TEST(ac == 16 - 64); + ac = -a; + BOOST_TEST(ac == -8); + ac = a; + ac -= -a; + BOOST_TEST(ac == 16); + ac = a; + ac += -a; + BOOST_TEST(ac == 0); + ac = b; + ac /= -a; + BOOST_TEST(ac == -8); + ac = a; + ac *= -a; + BOOST_TEST(ac == -64); + ac = a + -b; + BOOST_TEST(ac == 8 - 64); + ac = -a + b; + BOOST_TEST(ac == -8+64); + ac = -a + -b; + BOOST_TEST(ac == -72); + ac = a + - + -b; // lots of unary operators!! + BOOST_TEST(ac == 72); + test_conditional(Real(-a), -a); +} +template +void test_signed_ops(const boost::mpl::false_&) +{ +} + template void test() { @@ -1462,10 +1513,6 @@ void test() BOOST_TEST(a == 8); Real ac(a); BOOST_TEST(ac == a); - if(std::numeric_limits::is_signed) - { - BOOST_TEST(-a == -8); - } ac = a * c; BOOST_TEST(ac == 8*500L); ac = 8*500L; @@ -1509,12 +1556,6 @@ void test() ac = a; ac = a + ac; BOOST_TEST(ac == 16); - if(std::numeric_limits::is_signed) - { - ac = a; - ac = ac - b; - BOOST_TEST(ac == 8 - 64); - } ac = a; ac = a - ac; BOOST_TEST(ac == 0); @@ -1524,22 +1565,8 @@ void test() ac = a; ac += b + a; BOOST_TEST(ac == 80); - if(std::numeric_limits::is_signed) - { - ac = a; - ac -= a + b; - BOOST_TEST(ac == -64); - ac = a; - ac -= b - a; - BOOST_TEST(ac == 16 - 64); - } ac = +a; BOOST_TEST(ac == 8); - if(std::numeric_limits::is_signed) - { - ac = -a; - BOOST_TEST(ac == -8); - } ac = 8; ac = a * ac; BOOST_TEST(ac == 8*8); @@ -1558,14 +1585,6 @@ void test() ac -= +a; BOOST_TEST(ac == 0); ac = a; - if(std::numeric_limits::is_signed) - { - ac -= -a; - BOOST_TEST(ac == 16); - ac = a; - ac += -a; - BOOST_TEST(ac == 0); - } if(std::numeric_limits::is_signed || is_twos_complement_integer::value) { ac = a; @@ -1599,15 +1618,6 @@ void test() ac = b; ac /= +a; BOOST_TEST(ac == 8); - if(std::numeric_limits::is_signed) - { - ac = b; - ac /= -a; - BOOST_TEST(ac == -8); - ac = a; - ac *= -a; - BOOST_TEST(ac == -64); - } ac = b; ac /= b / a; BOOST_TEST(ac == 64 / (64/8)); @@ -1625,17 +1635,6 @@ void test() BOOST_TEST(ac == 72); ac = +a + +b; BOOST_TEST(ac == 72); - if(std::numeric_limits::is_signed) - { - ac = a + -b; - BOOST_TEST(ac == 8 - 64); - ac = -a + b; - BOOST_TEST(ac == -8+64); - ac = -a + -b; - BOOST_TEST(ac == -72); - ac = a + - + -b; // lots of unary operators!! - BOOST_TEST(ac == 72); - } ac = a; ac = b / ac; BOOST_TEST(ac == b / a); @@ -1799,11 +1798,9 @@ void test() // a = 20; test_conditional(a, +a); - if(std::numeric_limits::is_signed || is_twos_complement_integer::value) - { - test_conditional(Real(-a), -a); - } test_conditional(a, (a + 0)); + + test_signed_ops(boost::mpl::bool_::is_signed>()); } diff --git a/test/test_checked_cpp_int.cpp b/test/test_checked_cpp_int.cpp new file mode 100644 index 00000000..847760d2 --- /dev/null +++ b/test/test_checked_cpp_int.cpp @@ -0,0 +1,116 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +// +// Compare arithmetic results using fixed_int to GMP results. +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include "test.hpp" + +template +void test() +{ + using namespace boost::multiprecision; + typedef Number test_type; + + if(std::numeric_limits::is_bounded) + { + test_type val = (std::numeric_limits::max)(); + BOOST_CHECK_THROW(++val, std::overflow_error); + val = (std::numeric_limits::max)(); + BOOST_CHECK_THROW(test_type(1 + val), std::overflow_error); + BOOST_CHECK_THROW(test_type(val + 1), std::overflow_error); + BOOST_CHECK_THROW(test_type(2 * val), std::overflow_error); + val /= 2; + val += 1; + BOOST_CHECK_THROW(test_type(2 * val), std::overflow_error); + + if(std::numeric_limits::is_signed) + { + val = (std::numeric_limits::min)(); + BOOST_CHECK_THROW(--val, std::overflow_error); + val = (std::numeric_limits::min)(); + BOOST_CHECK_THROW(test_type(val - 1), std::overflow_error); + BOOST_CHECK_THROW(test_type(2 * val), std::overflow_error); + val /= 2; + val -= 1; + BOOST_CHECK_THROW(test_type(2 * val), std::overflow_error); + } + else + { + val = (std::numeric_limits::min)(); + BOOST_CHECK_THROW(--val, std::range_error); + val = (std::numeric_limits::min)(); + BOOST_CHECK_THROW(test_type(val - 1), std::range_error); + } + } + + if(std::numeric_limits::is_signed) + { + test_type a = -1; + test_type b = 1; + BOOST_CHECK_THROW(test_type(a | b), std::range_error); + BOOST_CHECK_THROW(test_type(a & b), std::range_error); + BOOST_CHECK_THROW(test_type(a ^ b), std::range_error); + } + else + { + // Constructing from a negative value is not allowed: + BOOST_CHECK_THROW(test_type(-2), std::range_error); + BOOST_CHECK_THROW(test_type("-2"), std::range_error); + } + if(std::numeric_limits::digits < std::numeric_limits::digits) + { + long long llm = (std::numeric_limits::max)(); + test_type t; + BOOST_CHECK_THROW(t = llm, std::range_error); + BOOST_CHECK_THROW(t = static_cast(llm), std::range_error); + unsigned long long ullm = (std::numeric_limits::max)(); + BOOST_CHECK_THROW(t = ullm, std::range_error); + BOOST_CHECK_THROW(t = static_cast(ullm), std::range_error); + + static const checked_uint512_t big = (std::numeric_limits::max)(); + BOOST_CHECK_THROW(t = static_cast(big), std::range_error); + } + // + // String errors: + // + BOOST_CHECK_THROW(test_type("12A"), std::runtime_error); + BOOST_CHECK_THROW(test_type("0658"), std::runtime_error); + + if(std::numeric_limits::is_signed) + { + BOOST_CHECK_THROW(test_type(-2).str(0, std::ios_base::hex), std::runtime_error); + BOOST_CHECK_THROW(test_type(-2).str(0, std::ios_base::oct), std::runtime_error); + } +} + +int main() +{ + using namespace boost::multiprecision; + + test > >(); + test(); + test(); + test > >(); + test > >(); + + // + // We also need to test type with "odd" bit counts in order to ensure full code coverage: + // + test > >(); + test > >(); + test > >(); + test > >(); + return boost::report_errors(); +} + + + diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index 164833d5..4b7b74f0 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -52,6 +52,11 @@ T generate_random(unsigned bits_wanted) return val; } +template +struct is_checked_cpp_int : public boost::mpl::false_ {}; +template +struct is_checked_cpp_int, ET> > : public boost::mpl::true_ {}; + template void test() { @@ -115,28 +120,37 @@ void test() // bitwise ops: BOOST_CHECK_EQUAL(mpz_int(a|b).str(), test_type(a1 | b1).str()); BOOST_CHECK_EQUAL((mpz_int(a)|=b).str(), (test_type(a1) |= b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a|b).str(), test_type(-a1 | b1).str()); - BOOST_CHECK_EQUAL((mpz_int(-a)|=b).str(), (test_type(-a1) |= b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a|-b).str(), test_type(a1 | -b1).str()); - BOOST_CHECK_EQUAL((mpz_int(a)|=-b).str(), (test_type(a1) |= -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a|-b).str(), test_type(-a1 | -b1).str()); - BOOST_CHECK_EQUAL((mpz_int(-a)|=-b).str(), (test_type(-a1) |= -b1).str()); + if(!is_checked_cpp_int::value) + { + BOOST_CHECK_EQUAL(mpz_int(-a|b).str(), test_type(-a1 | b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)|=b).str(), (test_type(-a1) |= b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a|-b).str(), test_type(a1 | -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)|=-b).str(), (test_type(a1) |= -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a|-b).str(), test_type(-a1 | -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)|=-b).str(), (test_type(-a1) |= -b1).str()); + } BOOST_CHECK_EQUAL(mpz_int(a&b).str(), test_type(a1 & b1).str()); BOOST_CHECK_EQUAL((mpz_int(a)&=b).str(), (test_type(a1) &= b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a&b).str(), test_type(-a1 & b1).str()); - BOOST_CHECK_EQUAL((mpz_int(-a)&=b).str(), (test_type(-a1) &= b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a&-b).str(), test_type(a1 & -b1).str()); - BOOST_CHECK_EQUAL((mpz_int(a)&=-b).str(), (test_type(a1) &= -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a&-b).str(), test_type(-a1 & -b1).str()); - BOOST_CHECK_EQUAL((mpz_int(-a)&=-b).str(), (test_type(-a1) &= -b1).str()); + if(!is_checked_cpp_int::value) + { + BOOST_CHECK_EQUAL(mpz_int(-a&b).str(), test_type(-a1 & b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)&=b).str(), (test_type(-a1) &= b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a&-b).str(), test_type(a1 & -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)&=-b).str(), (test_type(a1) &= -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a&-b).str(), test_type(-a1 & -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)&=-b).str(), (test_type(-a1) &= -b1).str()); + } BOOST_CHECK_EQUAL(mpz_int(a^b).str(), test_type(a1 ^ b1).str()); BOOST_CHECK_EQUAL((mpz_int(a)^=b).str(), (test_type(a1) ^= b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a^b).str(), test_type(-a1 ^ b1).str()); - BOOST_CHECK_EQUAL((mpz_int(-a)^=b).str(), (test_type(-a1) ^= b1).str()); - BOOST_CHECK_EQUAL(mpz_int(a^-b).str(), test_type(a1 ^ -b1).str()); - BOOST_CHECK_EQUAL((mpz_int(a)^=-b).str(), (test_type(a1) ^= -b1).str()); - BOOST_CHECK_EQUAL(mpz_int(-a^-b).str(), test_type(-a1 ^ -b1).str()); - BOOST_CHECK_EQUAL((mpz_int(-a)^=-b).str(), (test_type(-a1) ^= -b1).str()); + if(!is_checked_cpp_int::value) + { + BOOST_CHECK_EQUAL(mpz_int(-a^b).str(), test_type(-a1 ^ b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)^=b).str(), (test_type(-a1) ^= b1).str()); + BOOST_CHECK_EQUAL(mpz_int(a^-b).str(), test_type(a1 ^ -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(a)^=-b).str(), (test_type(a1) ^= -b1).str()); + BOOST_CHECK_EQUAL(mpz_int(-a^-b).str(), test_type(-a1 ^ -b1).str()); + BOOST_CHECK_EQUAL((mpz_int(-a)^=-b).str(), (test_type(-a1) ^= -b1).str()); + } // Shift ops: for(unsigned i = 0; i < 128; ++i) { @@ -185,15 +199,18 @@ void test() BOOST_CHECK_EQUAL((mpz_int(a)%=-si).str(), (test_type(a1) %= -si).str()); BOOST_CHECK_EQUAL((mpz_int(-a)%=si).str(), (test_type(-a1) %= si).str()); BOOST_CHECK_EQUAL((mpz_int(-a)%=-si).str(), (test_type(-a1) %= -si).str()); - BOOST_CHECK_EQUAL(mpz_int(a|si).str(), test_type(a1 | si).str()); - BOOST_CHECK_EQUAL((mpz_int(a)|=si).str(), (test_type(a1) |= si).str()); - BOOST_CHECK_EQUAL(mpz_int(a&si).str(), test_type(a1 & si).str()); - BOOST_CHECK_EQUAL((mpz_int(a)&=si).str(), (test_type(a1) &= si).str()); - BOOST_CHECK_EQUAL(mpz_int(a^si).str(), test_type(a1 ^ si).str()); - BOOST_CHECK_EQUAL((mpz_int(a)^=si).str(), (test_type(a1) ^= si).str()); - BOOST_CHECK_EQUAL(mpz_int(si|a).str(), test_type(si|a1).str()); - BOOST_CHECK_EQUAL(mpz_int(si&a).str(), test_type(si&a1).str()); - BOOST_CHECK_EQUAL(mpz_int(si^a).str(), test_type(si^a1).str()); + if((si > 0) || !is_checked_cpp_int::value) + { + BOOST_CHECK_EQUAL(mpz_int(a|si).str(), test_type(a1 | si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)|=si).str(), (test_type(a1) |= si).str()); + BOOST_CHECK_EQUAL(mpz_int(a&si).str(), test_type(a1 & si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)&=si).str(), (test_type(a1) &= si).str()); + BOOST_CHECK_EQUAL(mpz_int(a^si).str(), test_type(a1 ^ si).str()); + BOOST_CHECK_EQUAL((mpz_int(a)^=si).str(), (test_type(a1) ^= si).str()); + BOOST_CHECK_EQUAL(mpz_int(si|a).str(), test_type(si|a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si&a).str(), test_type(si&a1).str()); + BOOST_CHECK_EQUAL(mpz_int(si^a).str(), test_type(si^a1).str()); + } BOOST_CHECK_EQUAL(mpz_int(gcd(a, b)).str(), test_type(gcd(a1, b1)).str()); BOOST_CHECK_EQUAL(mpz_int(lcm(c, d)).str(), test_type(lcm(c1, d1)).str()); BOOST_CHECK_EQUAL(mpz_int(gcd(-a, b)).str(), test_type(gcd(-a1, b1)).str()); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index 6d9d0a76..ed92c6b6 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -98,6 +98,31 @@ void do_round_trip(const T& val) } } +template +void negative_round_trip(T val, const boost::mpl::true_&) +{ + do_round_trip(T(-val)); +} +template +void negative_round_trip(T, const boost::mpl::false_&) +{ +} + +template +void negative_spots(const boost::mpl::true_&) +{ + BOOST_CHECK_EQUAL(T(-1002).str(), "-1002"); + if(!std::numeric_limits::is_modulo) + { + BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::oct), std::runtime_error); + BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::hex), std::runtime_error); + } +} +template +void negative_spots(const boost::mpl::false_&) +{ +} + template void test_round_trip() { @@ -105,16 +130,11 @@ void test_round_trip() { T val = generate_random(); do_round_trip(val); - if(std::numeric_limits::is_signed) - do_round_trip(T(-val)); + negative_round_trip(val, boost::mpl::bool_::is_signed>()); } BOOST_CHECK_EQUAL(T(1002).str(), "1002"); BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::showpos), "+1002"); - if(std::numeric_limits::is_signed) - { - BOOST_CHECK_EQUAL(T(-1002).str(), "-1002"); - } BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::oct), "1752"); BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::oct|std::ios_base::showbase), "01752"); BOOST_CHECK_EQUAL(boost::to_lower_copy(T(1002).str(0, std::ios_base::hex)), "3ea"); @@ -122,11 +142,7 @@ void test_round_trip() BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::dec), "1002"); BOOST_CHECK_EQUAL(T(1002).str(0, std::ios_base::dec|std::ios_base::showbase), "1002"); - if(std::numeric_limits::is_signed && !std::numeric_limits::is_modulo) - { - BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::oct), std::runtime_error); - BOOST_CHECK_THROW(T(-2).str(0, std::ios_base::hex), std::runtime_error); - } + negative_spots(boost::mpl::bool_::is_signed>()); } int main() From c587f1550b59af4f42bd22962b1414ed6addf08e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 31 Oct 2012 17:06:33 +0000 Subject: [PATCH 245/256] Update and regenerate docs. Fix error in expression template unpacking that occasionally caused variable over-writes. Update Math lib tests to test at least one non-ET type. [SVN r81121] --- .../boost_multiprecision/indexes/s01.html | 8 +- .../boost_multiprecision/indexes/s02.html | 12 +- .../boost_multiprecision/indexes/s03.html | 48 ++- .../boost_multiprecision/indexes/s04.html | 74 +++- doc/html/boost_multiprecision/intro.html | 118 +++++-- doc/html/boost_multiprecision/map/hist.html | 6 +- doc/html/boost_multiprecision/map/todo.html | 42 +-- .../boost_multiprecision/ref/cpp_int_ref.html | 102 ++++-- .../boost_multiprecision/ref/headers.html | 118 ++++++- .../boost_multiprecision/ref/internals.html | 11 + doc/html/boost_multiprecision/ref/number.html | 7 +- .../boost_multiprecision/tut/conversions.html | 20 +- .../tut/floats/cpp_dec_float.html | 6 +- .../tut/floats/gmp_float.html | 8 +- .../tut/ints/cpp_int.html | 226 +++++++++++-- .../tut/ints/gmp_int.html | 2 +- .../tut/ints/tom_int.html | 2 +- .../tut/rational/cpp_rational.html | 2 +- .../tut/rational/gmp_rational.html | 2 +- .../tut/rational/tommath_rational.html | 2 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 317 ++++++++++++------ include/boost/multiprecision/cpp_int/misc.hpp | 2 +- include/boost/multiprecision/number.hpp | 12 +- performance/sf_performance.cpp | 7 + test/math/log1p_expm1_test.cpp | 2 + test/math/powm1_sqrtp1m1_test.cpp | 2 + test/math/test_bessel_i.cpp | 2 + test/math/test_bessel_j.cpp | 2 + test/math/test_bessel_k.cpp | 2 + test/math/test_bessel_y.cpp | 2 + test/math/test_beta.cpp | 2 + test/math/test_binomial_coeff.cpp | 2 + test/math/test_carlson.cpp | 2 + test/math/test_cbrt.cpp | 2 + test/math/test_digamma.cpp | 2 + test/math/test_ellint_1.cpp | 2 + test/math/test_ellint_2.cpp | 2 + test/math/test_ellint_3.cpp | 2 + test/math/test_erf.cpp | 2 + test/math/test_expint.cpp | 2 + test/math/test_gamma.cpp | 2 + test/math/test_hermite.cpp | 2 + test/math/test_ibeta.cpp | 2 + test/math/test_ibeta_2.cpp | 2 + test/math/test_ibeta_3.cpp | 2 + test/math/test_ibeta_4.cpp | 2 + test/math/test_ibeta_inv_1.cpp | 2 + test/math/test_ibeta_inv_ab_4.cpp | 2 + test/math/test_igamma.cpp | 2 + test/math/test_igamma_inv.cpp | 2 + test/math/test_igamma_inva.cpp | 2 + test/math/test_laguerre.cpp | 2 + test/math/test_legendre.cpp | 2 + test/math/test_tgamma_ratio.cpp | 2 + test/math/test_zeta.cpp | 2 + 56 files changed, 943 insertions(+), 275 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index b8bcad1a..af78fb53 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@ -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    @@ -23,6 +23,10 @@
    • +

      abs

      + +
    • +
    • assign

    • diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 29be2280..2df7fd66 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
      PrevUpHomeNext
      -
      +

      -Class Index

      +Class Index

    C E G I M N T

    @@ -71,6 +71,14 @@

    is_restricted_conversion

    +
  • +

    is_signed_number

    + +
  • +
  • +

    is_unsigned_number

    + +
  • M diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index dff01ef2..be23bda1 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T U

    @@ -23,6 +23,50 @@
    • +

      checked_cpp_int

      + +
    • +
    • +

      checked_cpp_rational

      + +
    • +
    • +

      checked_cpp_rational_backend

      + +
    • +
    • +

      checked_int1024_t

      + +
    • +
    • +

      checked_int128_t

      + +
    • +
    • +

      checked_int256_t

      + +
    • +
    • +

      checked_int512_t

      + +
    • +
    • +

      checked_uint1024_t

      + +
    • +
    • +

      checked_uint128_t

      + +
    • +
    • +

      checked_uint256_t

      + +
    • +
    • +

      checked_uint512_t

      + +
    • +
    • cpp_dec_float_100

    • diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 3030cc3f..7a5144be 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
      PrevUpHome
      -
      +

      -Index

      +Index

    A B C D E F G I L M N O P R S T U Z

    @@ -22,6 +22,10 @@
    • +

      abs

      + +
    • +
    • assign

    • @@ -64,6 +68,50 @@
    • +

      checked_cpp_int

      + +
    • +
    • +

      checked_cpp_rational

      + +
    • +
    • +

      checked_cpp_rational_backend

      + +
    • +
    • +

      checked_int1024_t

      + +
    • +
    • +

      checked_int128_t

      + +
    • +
    • +

      checked_int256_t

      + +
    • +
    • +

      checked_int512_t

      + +
    • +
    • +

      checked_uint1024_t

      + +
    • +
    • +

      checked_uint128_t

      + +
    • +
    • +

      checked_uint256_t

      + +
    • +
    • +

      checked_uint512_t

      + +
    • +
    • compare

    • @@ -112,6 +160,17 @@
    • cpp_int

    • @@ -541,6 +602,14 @@
    • +

      is_signed_number

      + +
    • +
    • +

      is_unsigned_number

      + +
    • +
    • itrunc

    • @@ -679,6 +748,7 @@
    • number

        +
      • abs

      • assign

      • bit_flip

      • bit_set

      • diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 699be148..66275daf 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -155,10 +155,11 @@ Note that while "moved-from" objects are left in a sane state, they have an unspecified value, and the only permitted operations on them are destruction or the assignment of a new value. Any other operation should be considered - a programming error and many backends will trigger an assertion if any other - operation is attempted. This behavior allows for optimal performance on move-construction - (i.e. no allocation required, we just take ownership of the existing object's - internal state), while maintaining usability in the standard library containers. + a programming error and all of our backends will trigger an assertion if any + other operation is attempted. This behavior allows for optimal performance + on move-construction (i.e. no allocation required, we just take ownership of + the existing object's internal state), while maintaining usability in the standard + library containers.

        @@ -217,9 +218,36 @@ performed rather than the number of temporaries directly, note also that the mpf_class wrapper that will be supplied with GMP-5.1 reduces the number of temporaries - to pretty much zero). Finally if we use this library with expression templates - disabled, we still only generate 11 temporaries [1] [2]. + to pretty much zero). Note that if we compile with expression templates disabled + and rvalue-reference support on, then actually still have no wasted memory + allocations as even though temporaries are created, their contents are moved + rather than copied. [1]

        +
        + + + + + +
        [Important]Important
        +

        + Expression templates can radically reorder the operations in an expression, + for example: +

        +

        + a = (b * c) * a; +

        +

        + Will get transformed into: +

        +

        + a *= c; a *= b; +

        +

        + If this is likely to be an issue for a particular application, then they + should be disabled. +

        +

        This library also extends expression template support to standard library functions like abs or sin @@ -411,7 +439,7 @@

      Finally, note that number takes - a second template argument, which, when set to false + a second template argument, which, when set to et_off disables all the expression template machinery. The result is much faster to compile, but slower at runtime.

      @@ -421,9 +449,6 @@ to carry out the underlying arithmetic, and all are operating at the same precision (50 decimal digits):

      -

      - TODO: Update, compare to rvalue refs but no ET's as well. -

      Table 1.2. Evaluation of Boost.Math's Bessel function test data

      @@ -453,17 +478,35 @@ + + + + + @@ -475,12 +518,12 @@ @@ -492,12 +535,12 @@ @@ -538,12 +581,30 @@ + + + + + @@ -555,12 +616,12 @@ @@ -572,30 +633,29 @@

      - number + mpfr_float_50

      - 1.0 (6.21s) + 1.0 (5.66s)

      - 1.0 (2685469) + 1.0 (1611963) +

      +
      +

      + number<mpfr_float_backend<50>, et_off>
      (but with + rvalue reference support) +

      +
      +

      + 1.10 (6.25s) +

      +
      +

      + 2.64 (4260868)

      - 1.04 (6.45s) + 1.09 (6.16s)

      - 1.47 (3946007) + 2.45 (3948316)

      - 1.53 (9.52s) + 1.65 (9.34s)

      - 4.92 (13222940) + 8.21 (13226029)

      - 1.0 (269s) + 1.0 (257s)

      - 1.0 (139082551) + 1.0 (127710873) +

      +
      +

      + number<mpfr_float_backend<50>, et_off>
      (but with + rvalue reference support) +

      +
      +

      + 1.0 (257s) +

      +
      +

      + 1.2 (156797871)

      - 1.04 (278s) + 1.1 (280s)

      - 1.81 (252400791) + 2.1 (268336640)

      - 1.49 (401s) + 1.4 (363s)

      - 3.22 (447009280) + 3.6 (466960653)

      -
      +

      + The above results were generated on Win32 compiling with Visual C++ 2010, all + optimizations on (/Ox), with MPFR 3.0 and MPIR 2.3.0. +

      +


      [1] The actual number generated will depend on the compiler, how well it optimises the code, and whether it supports rvalue references. The number of 11 temporaries was generated with Visual C++ 10

      -

      [2] - Marc Glisse suggested pre-review that this could be reduced still further - by careful use of rvalue-references and move semantics in the operator overloads. - This will be investigated further at a later date. -

      diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index ca0c5cca..7c4b992f 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -28,7 +28,7 @@ support.
    • - Many functions made made constexp? + Many functions made constexp.
    • Differentiate between explicit and implicit conversions in the number @@ -55,6 +55,10 @@ Tweaked expression template unpacking to use fewer temporaries when the LHS also appears in the RHS.
    • +
    • + Refactored cpp_int_backend + based on review comments with new template parameter structure. +
    • diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 2abdc184..585439d0 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -57,22 +57,6 @@ A 2's complement fixed precision int that uses exactly N bits and no more. -
    • - A backend for an overflow aware integers. -
    • -
    • - Each back-end should document the requirements it satisfies (not currently - scheduled for inclusion: it's deliberately an implementation detail, - and "optional" requirements are optimisations which can't be - detected by the user). -
    • -
    • - The use of bool in template parameters could be improved by the use of - an enum class which will be more explicit. E.g enum - class expression_template - {disabled, enabled}; enum class sign - {unsigned, signed}; (Partly done 2012/09/15). -
    • The performances of mp_number<a_trivial_adaptor<float>, false>respect to float and mp_number<a_trivial_adaptor<int>, false> and @@ -94,9 +78,6 @@
    • Document why we don't use proto (compile times).
    • -
    • - Document what happens to small fixed precision cpp_int's. -
    • Should we provide min/max overloads for expression templates?
    • @@ -104,6 +85,27 @@ Document why we don't abstract out addition/multiplication algorithms etc. +
    • + Document what happens to small fixed precision cpp_int's (done 2012/10/31). +
    • +
    • + The use of bool in template parameters could be improved by the use of + an enum class which will be more explicit. E.g enum + class expression_template + {disabled, enabled}; enum class sign + {unsigned, signed}; (Partly done 2012/09/15, done 2012/10/31). +
    • +
    • + Each back-end should document the requirements it satisfies (not currently + scheduled for inclusion: it's deliberately an implementation detail, + and "optional" requirements are optimisations which can't be + detected by the user). Not done: this is an implementation detail, the + exact list of requirements satisfied is purely an optimimization, not + something the user can detect. +
    • +
    • + A backend for an overflow aware integers (done 2012/10/31). +
    • IIUC convert_to is used to emulate in c++98 compilers C++11 explicit conversions. Could the explicit conversion operator be added on compilers @@ -158,7 +160,7 @@
    • Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits template argument that defaults - to 0 (meaning keep going till no more space/memory). + to 0 (meaning keep going till no more space/memory). Done.
    • Can ring types (exact floating point types) be supported? The answer diff --git a/doc/html/boost_multiprecision/ref/cpp_int_ref.html b/doc/html/boost_multiprecision/ref/cpp_int_ref.html index f1dbd5df..36391a56 100644 --- a/doc/html/boost_multiprecision/ref/cpp_int_ref.html +++ b/doc/html/boost_multiprecision/ref/cpp_int_ref.html @@ -19,30 +19,56 @@
    • namespace boost{ namespace multiprecision{
       
      -template <unsigned MinBits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> >
      -struct cpp_int_backend;
      +typedef unspecified-type limb_type;
      +
      +enum cpp_integer_type    { signed_magnitude, unsigned_magnitude };
      +enum cpp_int_check_type  { checked, unchecked };
      +
      +template <unsigned MinDigits = 0,
      +          unsigned MaxDits = 0,
      +          cpp_integer_type SignType = signed_magnitude,
      +          cpp_int_check_type Checked = unchecked,
      +          class Allocator = std::allocator<limb_type> >
      +class cpp_int_backend;
       //
       // Expression templates default to et_off if there is no allocator:
       //
      -template <unsigned MinDigits, bool Signed>
      -struct expression_template_default<cpp_int_backend<MinDigits, Signed, void> >
      +template <unsigned MinDigits, unsigned MaxDigits, cpp_integer_type SignType, cpp_int_check_type Checked>
      +struct expression_template_default<cpp_int_backend<MinDigits, MaxDigits, SignType, Checked, void> >
       { static const expression_template_option value = et_off; };
       
      -typedef number<cpp_int_backend<> >           cpp_int;    // arbitrary precision integer
      +typedef number<cpp_int_backend<> >              cpp_int;    // arbitrary precision integer
       typedef rational_adapter<cpp_int_backend<> >    cpp_rational_backend;
      -typedef number<cpp_rational_backend>         cpp_rational; // arbitrary precision rational number
      +typedef number<cpp_rational_backend>            cpp_rational; // arbitrary precision rational number
       
       // Fixed precision unsigned types:
      -typedef number<cpp_int_backend<128, false, void> >   uint128_t;
      -typedef number<cpp_int_backend<256, false, void> >   uint256_t;
      -typedef number<cpp_int_backend<512, false, void> >   uint512_t;
      -typedef number<cpp_int_backend<1024, false, void> >  uint1024_t;
      +typedef number<cpp_int_backend<128, 128, unsigned_magnitude, unchecked, void> >   uint128_t;
      +typedef number<cpp_int_backend<256, 256, unsigned_magnitude, unchecked, void> >   uint256_t;
      +typedef number<cpp_int_backend<512, 512, unsigned_magnitude, unchecked, void> >   uint512_t;
      +typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, unchecked, void> > uint1024_t;
       
       // Fixed precision signed types:
      -typedef number<cpp_int_backend<128, true, void> >    int128_t;
      -typedef number<cpp_int_backend<256, true, void> >    int256_t;
      -typedef number<cpp_int_backend<512, true, void> >    int512_t;
      -typedef number<cpp_int_backend<1024, true, void> >   int1024_t;
      +typedef number<cpp_int_backend<128, 128, signed_magnitude, unchecked, void> >     int128_t;
      +typedef number<cpp_int_backend<256, 256, signed_magnitude, unchecked, void> >     int256_t;
      +typedef number<cpp_int_backend<512, 512, signed_magnitude, unchecked, void> >     int512_t;
      +typedef number<cpp_int_backend<1024, 1024, signed_magnitude, unchecked, void> >   int1024_t;
      +
      +// Over again, but with checking enabled this time:
      +typedef number<cpp_int_backend<0, 0, signed_magnitude, checked> >                 checked_cpp_int;
      +typedef rational_adapter<cpp_int_backend<0, 0, signed_magnitude, checked> >       checked_cpp_rational_backend;
      +typedef number<cpp_rational_backend>                                              checked_cpp_rational;
      +
      +// Checked fixed precision unsigned types:
      +typedef number<cpp_int_backend<128, 128, unsigned_magnitude, checked, void> >     checked_uint128_t;
      +typedef number<cpp_int_backend<256, 256, unsigned_magnitude, checked, void> >     checked_uint256_t;
      +typedef number<cpp_int_backend<512, 512, unsigned_magnitude, checked, void> >     checked_uint512_t;
      +typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, checked, void> >   checked_uint1024_t;
      +
      +// Fixed precision signed types:
      +typedef number<cpp_int_backend<128, 128, signed_magnitude, checked, void> >       checked_int128_t;
      +typedef number<cpp_int_backend<256, 256, signed_magnitude, checked, void> >       checked_int256_t;
      +typedef number<cpp_int_backend<512, 512, signed_magnitude, checked, void> >       checked_int512_t;
      +typedef number<cpp_int_backend<1024, 1024, signed_magnitude, checked, void> >     checked_int1024_t;
       
       }} // namespaces
       
      @@ -58,30 +84,44 @@

      -
      Argument
      -

      - Meaning -

      MinBits

      - The number of Bits to reserve inside the class's internal cache. When - constructing a value, the object will use this internal cache if possible - before resorting to dynamic memory allocation. When this value is zero, - then the size of the internal cache is 2*sizeof(void*)*CHAR_BIT. - When the Allocator argument is void, - then this parameter determines the precision of the type. + Determines the number of Bits to store directly within the object before + resorting to dynamic memory allocation. When zero, this field is determined + automatically based on how many bits can be stored in union with the + dynamic storage header: setting a larger value may improve performance + as larger integer values will be stored internally before memory allocation + is required.

      -
      Signed
      +
      MaxBits

      - When true the type is - signed, otherwise unsigned. Note that unsigned types are currently - only supported when the Allocator parameter is void. + Determines the maximum number of bits to be stored in the type: resulting + in a fixed precision type. When this value is the same as MinBits, + then the Allocator parameter is ignored, as no dynamic memory allocation + will ever be performed: in this situation the Allocator parameter should + be set to type void. Note + that this parameter should not be used simply to prevent large memory + allocations, not only is that role better performed by the allocator, + but fixed precision integers have a tendency to allocate all of MaxBits + of storage more often than one would expect. +

      +
      SignType
      +

      + Determines whether the resulting type is signed or not. Note that for + arbitrary + precision types this parameter must be signed_magnitude. + For fixed precision types then this type may be either signed_magnitude or unsigned_magnitude. +

      +
      Checked
      +

      + This parameter has two values: checked + or unchecked. See the + tutorial + for more information.

      Allocator

      - The allocator used for dynamic memory allocation. This parameter can - be void, in which case - no dynamic memory will ever be allocated. + The allocator to use for dynamic memory allocation, or type void if MaxBits == MinBits.

      diff --git a/doc/html/boost_multiprecision/ref/headers.html b/doc/html/boost_multiprecision/ref/headers.html index 29926494..4e55c754 100644 --- a/doc/html/boost_multiprecision/ref/headers.html +++ b/doc/html/boost_multiprecision/ref/headers.html @@ -64,18 +64,6 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/boost_multiprecision/ref/internals.html b/doc/html/boost_multiprecision/ref/internals.html index b75aba98..8a6e979a 100644 --- a/doc/html/boost_multiprecision/ref/internals.html +++ b/doc/html/boost_multiprecision/ref/internals.html @@ -77,6 +77,17 @@ types should generally specialise one of the traits above, rather than this one directly.

      +
      template <class T>
      +is_signed_number;
      +template <class T>
      +is_unsigned_number;
      +
      +

      + These two traits inherit from either mpl::true_ + or mpl::false_, by default types are assumed to + be signed unless is_unsigned_number + is specialized for that type. +

      -

      - integer_ops.hpp -

      -
      -

      - Integer specific non-member functions. -

      -

      miller_rabin.hpp @@ -201,25 +189,121 @@

      - detail/big_lanczos.hpp + cpp_int/add.hpp

      - Lanczos support for Boost.Math integration. + Add and subtract operators for cpp_int_backend.

      - detail/cpp_int_core.hpp + cpp_int/bitwise.hpp

      - Platform and peformance tuning for the cpp_int - backend. + Bitwise operators for cpp_int_backend. +

      +
      +

      + cpp_int/checked.hpp +

      +
      +

      + Helper functions for checked arithmetic for cpp_int_backend. +

      +
      +

      + cpp_int/comparison.hpp +

      +
      +

      + Comparison operators for cpp_int_backend. +

      +
      +

      + cpp_int/cpp_int_config.hpp +

      +
      +

      + Basic setup and configuration for cpp_int_backend. +

      +
      +

      + cpp_int/divide.hpp +

      +
      +

      + Division and modulus operators for cpp_int_backend. +

      +
      +

      + cpp_int/limits.hpp +

      +
      +

      + numeric_limits + support for cpp_int_backend. +

      +
      +

      + cpp_int/misc.hpp +

      +
      +

      + Miscellaneous operators for cpp_int_backend. +

      +
      +

      + cpp_int/multiply.hpp +

      +
      +

      + Multiply operators for cpp_int_backend. +

      +
      +

      + detail/big_lanczos.hpp +

      +
      +

      + Lanczos support for Boost.Math integration.

      diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index de7a6cdc..69b8a905 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -281,8 +281,8 @@
    • Any type in the same family, as long as no loss of precision is involved. - For example from int128 - to int256, or cpp_dec_float_50 to cpp_dec_float_100. + For example from int128_t + to int256_t, or cpp_dec_float_50 to cpp_dec_float_100.
    • @@ -631,7 +631,8 @@ When these functions use our own implementations, the accuracy of the transcendal functions is generally a few epsilon. Note however, that the trigonmetrical functions incur the usual accuracy loss when reducing arguments by large - multiples of π. Also note that both __mpf_float and cpp_dec_float + multiples of π. Also note that both gmp_float + and cpp_dec_float have a number of guard digits beyond their stated precision, so the error rates listed for these are in some sense artificially low.

      diff --git a/doc/html/boost_multiprecision/tut/conversions.html b/doc/html/boost_multiprecision/tut/conversions.html index cb5c0664..29ca1eff 100644 --- a/doc/html/boost_multiprecision/tut/conversions.html +++ b/doc/html/boost_multiprecision/tut/conversions.html @@ -27,15 +27,15 @@ type, as long as the conversion isn't lossy (for example float to int conversion): -
      cpp_dec_float_50 df(0.5); // OK construction from double
      -cpp_int          i(450);  // OK constructs from signed int
      -cpp_int          j = 3.14; // Error, lossy conversion.
      +
      cpp_dec_float_50 df(0.5);   // OK construction from double
      +cpp_int          i(450);    // OK constructs from signed int
      +cpp_int          j = 3.14;  // Error, lossy conversion.
       
      • A number can be explicitly constructed from an arithmetic type, even when the conversion is lossy:
      -
      cpp_int          i(3.14);  // OK explicit conversion
      +
      cpp_int          i(3.14);       // OK explicit conversion
       i = static_cast<cpp_int>(3.14)  // OK explicit conversion
       i.assign(3.14);                 // OK, explicit assign and avoid a temporary from the cast above
       i = 3.14;                       // Error, no implicit assignment operator for lossy conversion.
      @@ -59,8 +59,8 @@
                   syntax.
                 
       
      mpz_int z(2);
      -int i = z;  // Error, implicit conversion not allowed.
      -int j = static_cast<int>(z);  // OK explicit conversion.
      +int i = z;                     // Error, implicit conversion not allowed.
      +int j = static_cast<int>(z);   // OK explicit conversion.
       
      • Any number type can be explicitly constructed (or @@ -109,10 +109,10 @@ and are implicit conversions if no loss of precision is involved, and explicit if it is:
      -
      int128       i128 = 0;
      -int266       i256 = i128;  // OK implicit widening conversion
      -i128              = i256;  // Error, no assignment operator found, narrowing conversion is explict
      -i128              = static_cast<int128>(i256); // OK, explicit narrowing conversion
      +
      int128_t     i128 = 0;
      +int266_t     i256 = i128;  // OK implicit widening conversion
      +i128_t            = i256;  // Error, no assignment operator found, narrowing conversion is explict
      +i128_t            = static_cast<int128_t>(i256); // OK, explicit narrowing conversion
       
       mpz_int      z    = 0;
       mpf_float    f    = z;    // OK, GMP handles this conversion natively, and it's not lossy and therefore implicit
      diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html
      index 5ceefb43..f3909b91 100644
      --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html
      +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html
      @@ -33,9 +33,9 @@
       

      The cpp_dec_float back-end is used in conjunction with number: - It acts as an entirely C++ (header only and dependency free) real-number - type that is a drop-in replacement for the native C++ floating-point types, - but with much greater precision. + It acts as an entirely C++ (header only and dependency free) floating-point + number type that is a drop-in replacement for the native C++ floating-point + types, but with much greater precision.

      Type cpp_dec_float can diff --git a/doc/html/boost_multiprecision/tut/floats/gmp_float.html b/doc/html/boost_multiprecision/tut/floats/gmp_float.html index a33583e7..566ffc47 100644 --- a/doc/html/boost_multiprecision/tut/floats/gmp_float.html +++ b/doc/html/boost_multiprecision/tut/floats/gmp_float.html @@ -110,9 +110,9 @@

    • Since the underlying GMP types have no notion of infinities or NaN's, care should be taken to avoid - numeric overflow or division by zero. That latter will trigger a hardware - exception, while generating excessively large exponents may result - in instability of the underlying GMP + numeric overflow or division by zero. That latter will result in a + std::overflow_error being thrown, while generating excessively large + exponents may result in instability of the underlying GMP library (in testing, converting a number with an excessively large or small exponent to a string caused GMP to segfault). @@ -128,7 +128,7 @@ point number.
    • - Division by zero results in a std::runtime_error + Division by zero results in a std::overflow_error being thrown.
    • diff --git a/doc/html/boost_multiprecision/tut/ints/cpp_int.html b/doc/html/boost_multiprecision/tut/ints/cpp_int.html index a220dc59..68c0d7be 100644 --- a/doc/html/boost_multiprecision/tut/ints/cpp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/cpp_int.html @@ -24,13 +24,20 @@ typedef unspecified-type limb_type; -template <unsigned MinDigits = 0, bool Signed = true, class Allocator = std::allocator<limb_type> > +enum cpp_integer_type { signed_magnitude, unsigned_magnitude }; +enum cpp_int_check_type { checked, unchecked }; + +template <unsigned MinDigits = 0, + unsigned MaxDits = 0, + cpp_integer_type SignType = signed_magnitude, + cpp_int_check_type Checked = unchecked, + class Allocator = std::allocator<limb_type> > class cpp_int_backend; // // Expression templates default to et_off if there is no allocator: // -template <unsigned MinDigits, bool Signed> -struct expression_template_default<cpp_int_backend<MinDigits, Signed, void> > +template <unsigned MinDigits, unsigned MaxDigits, cpp_integer_type SignType, cpp_int_check_type Checked> +struct expression_template_default<cpp_int_backend<MinDigits, MaxDigits, SignType, Checked, void> > { static const expression_template_option value = et_off; }; typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer @@ -38,31 +45,45 @@ typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: -typedef number<cpp_int_backend<128, false, void> > uint128_t; -typedef number<cpp_int_backend<256, false, void> > uint256_t; -typedef number<cpp_int_backend<512, false, void> > uint512_t; -typedef number<cpp_int_backend<1024, false, void> > uint1024_t; +typedef number<cpp_int_backend<128, 128, unsigned_magnitude, unchecked, void> > uint128_t; +typedef number<cpp_int_backend<256, 256, unsigned_magnitude, unchecked, void> > uint256_t; +typedef number<cpp_int_backend<512, 512, unsigned_magnitude, unchecked, void> > uint512_t; +typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, unchecked, void> > uint1024_t; // Fixed precision signed types: -typedef number<cpp_int_backend<128, true, void> > int128_t; -typedef number<cpp_int_backend<256, true, void> > int256_t; -typedef number<cpp_int_backend<512, true, void> > int512_t; -typedef number<cpp_int_backend<1024, true, void> > int1024_t; +typedef number<cpp_int_backend<128, 128, signed_magnitude, unchecked, void> > int128_t; +typedef number<cpp_int_backend<256, 256, signed_magnitude, unchecked, void> > int256_t; +typedef number<cpp_int_backend<512, 512, signed_magnitude, unchecked, void> > int512_t; +typedef number<cpp_int_backend<1024, 1024, signed_magnitude, unchecked, void> > int1024_t; + +// Over again, but with checking enabled this time: +typedef number<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_int; +typedef rational_adapter<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend; +typedef number<cpp_rational_backend> checked_cpp_rational; + +// Checked fixed precision unsigned types: +typedef number<cpp_int_backend<128, 128, unsigned_magnitude, checked, void> > checked_uint128_t; +typedef number<cpp_int_backend<256, 256, unsigned_magnitude, checked, void> > checked_uint256_t; +typedef number<cpp_int_backend<512, 512, unsigned_magnitude, checked, void> > checked_uint512_t; +typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, checked, void> > checked_uint1024_t; + +// Fixed precision signed types: +typedef number<cpp_int_backend<128, 128, signed_magnitude, checked, void> > checked_int128_t; +typedef number<cpp_int_backend<256, 256, signed_magnitude, checked, void> > checked_int256_t; +typedef number<cpp_int_backend<512, 512, signed_magnitude, checked, void> > checked_int512_t; +typedef number<cpp_int_backend<1024, 1024, signed_magnitude, checked, void> > checked_int1024_t; }} // namespaces

      The cpp_int_backend type - is used via one of the typedefs boost::multiprecision::cpp_int, - boost::multiprecision::uint128_t, boost::multiprecision::uint256_t, - boost::multiprecision::uint512_t, boost::multiprecision::int128_t, - boost::multiprecision::int256_t or boost::multiprecision::int512_t. + is normally used via one of the convenience typedefs given above.

      This back-end is the "Swiss Army Knife" of integer types as it can represent both fixed and arbitrary precision integer types, and both signed and unsigned types. There - are three template arguments: + are five template arguments:

      @@ -74,26 +95,143 @@ is determined automatically based on how many bits can be stored in union with the dynamic storage header: setting a larger value may improve performance as larger integer values will be stored internally - before memory allocation is required. When the Allocator parameter - is type void, then this - field determines the total number of bits in the resulting fixed - precision type. + before memory allocation is required.

      -
      Signed
      +
      MaxBits
      +

      + Determines the maximum number of bits to be stored in the type: resulting + in a fixed precision type. When this value is the same as MinBits, + then the Allocator parameter is ignored, as no dynamic memory allocation + will ever be performed: in this situation the Allocator parameter + should be set to type void. + Note that this parameter should not be used simply to prevent large + memory allocations, not only is that role better performed by the + allocator, but fixed precision integers have a tendency to allocate + all of MaxBits of storage more often than one would expect. +

      +
      SignType

      Determines whether the resulting type is signed or not. Note that for arbitrary - precision types (where the Allocator parameter is non-void), - then this parameter must be true. - For fixed precision types then this type may be either true (type is signed), or false (type is unsigned). + precision types this parameter must be signed_magnitude. + For fixed precision types then this type may be either signed_magnitude or unsigned_magnitude. +

      +
      Checked
      +

      + This parameter has two values: checked + or unchecked. See + below.

      Allocator

      - The allocator to use for dynamic memory allocation, or type void if this is to be a fixed precision - type. + The allocator to use for dynamic memory allocation, or type void if MaxBits == MinBits.

      +

      + When the template parameter Checked is set to checked + then the result is a checked-integer, checked and + unchecked integers have the following properties: +

      +
      +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      + Condition +

      +
      +

      + Checked-Integer +

      +
      +

      + Unchecked-Integer +

      +
      +

      + Numeric overflow in fixed precision arithmetic +

      +
      +

      + Throws a std::overflow_error. +

      +
      +

      + Performs arithmetic modulo 2MaxBits +

      +
      +

      + Constructing an integer from a value that can not be represented + in the target type +

      +
      +

      + Throws a std::range_error. +

      +
      +

      + Converts the value modulo 2MaxBits, signed to unsigned conversions + extract the last MaxBits bits of the 2's complement representation + of the input value. +

      +
      +

      + Unsigned subtraction yielding a negative value. +

      +
      +

      + Throws a std::range_error. +

      +
      +

      + Yields the value that would result from treating the unsigned + type as a 2's complement signed type. +

      +
      +

      + Attempting a bitwise operation on a negative value. +

      +
      +

      + Throws a std::range_error +

      +
      +

      + Yields the value, but not the bit pattern, that would result + from performing the operation on a 2's complement integer type. +

      +

    Things you should know when using this type:

    @@ -103,7 +241,7 @@ have the value zero.
  • - Division by zero results in a std::runtime_error + Division by zero results in a std::overflow_error being thrown.
  • @@ -135,19 +273,26 @@ being thrown, this is a direct consequence of the sign-magnitude representation.
  • - The fixed precision types mp_[u]intXXX_t - have expression template support turned off - it seems to make little - difference to the performance of these types either way - so we may - as well have the faster compile times by turning the feature off. + The fixed precision types [checked_][u]intXXX_t have expression template + support turned off - it seems to make little difference to the performance + of these types either way - so we may as well have the faster compile + times by turning the feature off.
  • - Unsigned types support subtraction, and unary negation - the result - is "as if" a 2's complement operation had been performed - - in other words they behave pretty much as a built in integer type - would in this situation. So for example if we were using uint128_t then both uint128_t(1)-4 - and -uint128(3) + Unsigned types support subtraction - the result is "as if" + a 2's complement operation had been performed as long as they are not + checked-integers (see above). In other words they + behave pretty much as a built in integer type would in this situation. + So for example if we were using uint128_t + then uint128_t(1)-4 would result in the value 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD of type uint128_t. + However, had this operation been performed on checked_uint128_t + then a std::range_error would have been thrown. +
  • +
  • + Unary negation of unsigned types results in a compiler error (static + assertion).
  • This backend supports rvalue-references and is move-aware, making instantiations @@ -167,6 +312,15 @@ with only minor performance degradation even if most of the time the arithmetic could in fact be done with a narrower type.
  • +
  • + When used at fixed precision and MaxBits is smaller than the number + of bits in the largest native integer type, then internally cpp_int_backend switches to a "trivial" + implementation where it is just a thin wrapper around a single integer. + Note that it will still be slightly slower than a bare native integer, + as it emulates a signed-magnitude representation rather than simply + using the platforms native sign representation: this ensures there + is no step change in behavior as a cpp_int grows in size. +
  • diff --git a/doc/html/boost_multiprecision/tut/ints/gmp_int.html b/doc/html/boost_multiprecision/tut/ints/gmp_int.html index cbb2d7f6..385392f9 100644 --- a/doc/html/boost_multiprecision/tut/ints/gmp_int.html +++ b/doc/html/boost_multiprecision/tut/ints/gmp_int.html @@ -80,7 +80,7 @@ being thrown if the string can not be interpreted as a valid integer.
  • - Division by zero results in a std::runtime_error + Division by zero results in a std::overflow_error being thrown.
  • diff --git a/doc/html/boost_multiprecision/tut/ints/tom_int.html b/doc/html/boost_multiprecision/tut/ints/tom_int.html index ac7f51bd..62e8c343 100644 --- a/doc/html/boost_multiprecision/tut/ints/tom_int.html +++ b/doc/html/boost_multiprecision/tut/ints/tom_int.html @@ -65,7 +65,7 @@ being thrown if the string can not be interpreted as a valid integer.
  • - Division by zero results in a std::runtime_error + Division by zero results in a std::overflow_error being thrown.
  • diff --git a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html index 22bf2a4c..cb140646 100644 --- a/doc/html/boost_multiprecision/tut/rational/cpp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/cpp_rational.html @@ -61,7 +61,7 @@ have the value zero.
  • - Division by zero results in a std::rumtime_error + Division by zero results in a std::overflow_error being thrown.
  • diff --git a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html index a317321b..9e78cecf 100644 --- a/doc/html/boost_multiprecision/tut/rational/gmp_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/gmp_rational.html @@ -77,7 +77,7 @@ default behavior).
  • - Division by zero results in a std::runtime_error + Division by zero results in a std::overflow_error being thrown.
  • diff --git a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html index 4ce58b60..12377a87 100644 --- a/doc/html/boost_multiprecision/tut/rational/tommath_rational.html +++ b/doc/html/boost_multiprecision/tut/rational/tommath_rational.html @@ -57,7 +57,7 @@ have the value zero (this the inherited Boost.Rational behavior).
  • - Division by zero results in a std::runtime_error + Division by zero results in a std::overflow_error being thrown.
  • diff --git a/doc/html/index.html b/doc/html/index.html index 0482b470..07802bad 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -120,7 +120,7 @@ - +

    Last revised: September 20, 2012 at 15:58:33 GMT

    Last revised: October 31, 2012 at 16:58:22 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index c9380777..210fefe3 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -51,6 +51,7 @@ [def __gmp_int [link boost_multiprecision.tut.ints.gmp_int gmp_int]] [def __tom_int [link boost_multiprecision.tut.ints.tom_int tom_int]] [def __gmp_float [link boost_multiprecision.tut.floats.gmp_float gmp_float]] +[def __mpf_float [link boost_multiprecision.tut.floats.gmp_float gmp_float]] [def __mpfr_float_backend [link boost_multiprecision.tut.floats.mpfr_float mpfr_float]] [def __cpp_dec_float [link boost_multiprecision.tut.floats.cpp_dec_float cpp_dec_float]] [def __gmp_rational [link boost_multiprecision.tut.rational.gmp_rational gmp_rational]] @@ -162,7 +163,7 @@ move-support, and expression templates enabled. Note that while "moved-from" objects are left in a sane state, they have an unspecified value, and the only permitted operations on them are destruction or the assignment of a new value. Any other operation should be considered -a programming error and many backends will trigger an assertion if any other operation is attempted. This behavior +a programming error and all of our backends will trigger an assertion if any other operation is attempted. This behavior allows for optimal performance on move-construction (i.e. no allocation required, we just take ownership of the existing object's internal state), while maintaining usability in the standard library containers. @@ -204,12 +205,24 @@ temporaries (this is true even though [mpfr_class] does use expression templates we used an even simpler wrapper around [mpfr] like [mpreal] things would have been even worse and no less that 24 temporaries are created for this simple expression (note - we actually measure the number of memory allocations performed rather than the number of temporaries directly, note also that the [mpf_class] wrapper that will be supplied with GMP-5.1 reduces the number of -temporaries to pretty much zero). Finally if we use this library with expression templates disabled, we still only generate 11 -temporaries +temporaries to pretty much zero). Note that if we compile with expression templates disabled and rvalue-reference support +on, then actually still have no wasted memory allocations as even though temporaries are created, their contents are moved +rather than copied. [footnote The actual number generated will depend on the compiler, how well it optimises the code, and whether it supports rvalue references. The number of 11 temporaries was generated with Visual C++ 10] -[footnote Marc Glisse suggested pre-review that this could be reduced still further by careful use of rvalue-references -and move semantics in the operator overloads. This will be investigated further at a later date.]. + +[important +Expression templates can radically reorder the operations in an expression, for example: + + a = (b * c) * a; + +Will get transformed into: + + a *= c; + a *= b; + +If this is likely to be an issue for a particular application, then they should be disabled. +] This library also extends expression template support to standard library functions like `abs` or `sin` with `number` arguments. This means that an expression such as: @@ -288,29 +301,34 @@ magic by converting out-of-place operators to in-place ones, we necessarily take transformation is more efficient than creating the extra temporary variable, just not by as much as one would hope. -Finally, note that `number` takes a second template argument, which, when set to `false` disables all +Finally, note that `number` takes a second template argument, which, when set to `et_off` disables all the expression template machinery. The result is much faster to compile, but slower at runtime. We'll conclude this section by providing some more performance comparisons between these three libraries, again, all are using [mpfr] to carry out the underlying arithmetic, and all are operating at the same precision (50 decimal digits): -TODO: Update, compare to rvalue refs but no ET's as well. - [table Evaluation of Boost.Math's Bessel function test data [[Library][Relative Time][Relative Number of Memory Allocations]] -[[number][1.0 (6.21s)][1.0 (2685469)]] -[[[mpfr_class]][1.04 (6.45s)][1.47 (3946007)]] -[[[mpreal]][1.53 (9.52s)][4.92 (13222940)]] +[[mpfr_float_50] [1.0 (5.66s)] [1.0 (1611963)]] +[[number, et_off>[br](but with rvalue reference support)] + [1.10 (6.25s)][2.64 (4260868)]] +[[[mpfr_class]] [1.09 (6.16s)][2.45 (3948316)]] +[[[mpreal]] [1.65 (9.34s)][8.21 (13226029)]] ] [table Evaluation of Boost.Math's Non-Central T distribution test data [[Library][Relative Time][Relative Number of Memory Allocations]] -[[number][1.0 (269s)][1.0 (139082551)]] -[[[mpfr_class]][1.04 (278s)][1.81 (252400791)]] -[[[mpreal]][1.49 (401s)][3.22 (447009280)]] +[[number] [1.0 (257s)][1.0 (127710873)]] +[[number, et_off>[br](but with rvalue reference support)] + [1.0 (257s)][1.2 (156797871)]] +[[[mpfr_class]] [1.1 (280s)][2.1 (268336640)]] +[[[mpreal]] [1.4 (363s)][3.6 (466960653)]] ] +The above results were generated on Win32 compiling with Visual C++ 2010, all optimizations on (/Ox), +with MPFR 3.0 and MPIR 2.3.0. + [endsect] [section:tut Tutorial] @@ -338,13 +356,20 @@ The following back-ends provide integer arithmetic: typedef unspecified-type limb_type; - template > + enum cpp_integer_type { signed_magnitude, unsigned_magnitude }; + enum cpp_int_check_type { checked, unchecked }; + + template > class cpp_int_backend; // // Expression templates default to et_off if there is no allocator: // - template - struct expression_template_default > + template + struct expression_template_default > { static const expression_template_option value = et_off; }; typedef number > cpp_int; // arbitrary precision integer @@ -352,46 +377,80 @@ The following back-ends provide integer arithmetic: typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef number > uint128_t; - typedef number > uint256_t; - typedef number > uint512_t; - typedef number > uint1024_t; + typedef number > uint128_t; + typedef number > uint256_t; + typedef number > uint512_t; + typedef number > uint1024_t; // Fixed precision signed types: - typedef number > int128_t; - typedef number > int256_t; - typedef number > int512_t; - typedef number > int1024_t; + typedef number > int128_t; + typedef number > int256_t; + typedef number > int512_t; + typedef number > int1024_t; + + // Over again, but with checking enabled this time: + typedef number > checked_cpp_int; + typedef rational_adapter > checked_cpp_rational_backend; + typedef number checked_cpp_rational; + + // Checked fixed precision unsigned types: + typedef number > checked_uint128_t; + typedef number > checked_uint256_t; + typedef number > checked_uint512_t; + typedef number > checked_uint1024_t; + + // Fixed precision signed types: + typedef number > checked_int128_t; + typedef number > checked_int256_t; + typedef number > checked_int512_t; + typedef number > checked_int1024_t; }} // namespaces -The `cpp_int_backend` type is used via one of the typedefs `boost::multiprecision::cpp_int`, -`boost::multiprecision::uint128_t`, `boost::multiprecision::uint256_t`, -`boost::multiprecision::uint512_t`, `boost::multiprecision::int128_t`, `boost::multiprecision::int256_t` -or `boost::multiprecision::int512_t`. +The `cpp_int_backend` type is normally used via one of the convenience typedefs given above. This back-end is the "Swiss Army Knife" of integer types as it can represent both fixed and [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] -integer types, and both signed and unsigned types. There are three template arguments: +integer types, and both signed and unsigned types. There are five template arguments: [variablelist [[MinBits][Determines the number of Bits to store directly within the object before resorting to dynamic memory allocation. When zero, this field is determined automatically based on how many bits can be stored in union with the dynamic storage header: setting a larger value may improve performance as larger integer - values will be stored internally before memory allocation is required. - When the Allocator parameter is type `void`, then this field - determines the total number of bits in the resulting fixed precision type.]] -[[Signed][Determines whether the resulting type is signed or not. Note that for + values will be stored internally before memory allocation is required.]] +[[MaxBits][Determines the maximum number of bits to be stored in the type: resulting in a fixed precision type. + When this value is the same as MinBits, then the Allocator parameter is ignored, as no dynamic + memory allocation will ever be performed: in this situation the Allocator parameter should be set to + type `void`. Note that this parameter should not be used simply to prevent large memory + allocations, not only is that role better performed by the allocator, but fixed precision + integers have a tendency to allocate all of MaxBits of storage more often than one would expect.]] +[[SignType][Determines whether the resulting type is signed or not. Note that for [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] types - (where the Allocator parameter is non-void), then this parameter must be `true`. For fixed precision - types then this type may be either `true` (type is signed), or `false` (type is unsigned).]] -[[Allocator][The allocator to use for dynamic memory allocation, or type `void` if this is to be a fixed precision type.]] + this parameter must be `signed_magnitude`. For fixed precision + types then this type may be either `signed_magnitude` or `unsigned_magnitude`.]] +[[Checked][This parameter has two values: `checked` or `unchecked`. See below.]] +[[Allocator][The allocator to use for dynamic memory allocation, or type `void` if MaxBits == MinBits.]] +] + +When the template parameter Checked is set to `checked` then the result is a ['checked-integer], checked +and unchecked integers have the following properties: + +[table +[[Condition][Checked-Integer][Unchecked-Integer]] +[[Numeric overflow in fixed precision arithmetic][Throws a `std::overflow_error`.][Performs arithmetic modulo 2[super MaxBits]]] +[[Constructing an integer from a value that can not be represented in the target type][Throws a `std::range_error`.] +[Converts the value modulo 2[super MaxBits], signed to unsigned conversions extract the last MaxBits bits of the +2's complement representation of the input value.]] +[[Unsigned subtraction yielding a negative value.][Throws a `std::range_error`.][Yields the value that would +result from treating the unsigned type as a 2's complement signed type.]] +[[Attempting a bitwise operation on a negative value.][Throws a `std::range_error`][Yields the value, but not the bit pattern, +that would result from performing the operation on a 2's complement integer type.]] ] Things you should know when using this type: * Default constructed `cpp_int_backend`s have the value zero. -* Division by zero results in a `std::runtime_error` being thrown. +* Division by zero results in a `std::overflow_error` being thrown. * Construction from a string that contains invalid non-numeric characters results in a `std::runtime_error` being thrown. * Since the precision of `cpp_int_backend` is necessarily limited when the allocator parameter is void, care should be taken to avoid numeric overflow when using this type @@ -404,13 +463,16 @@ That said it should be noted that there's no requirement for built-in types to b is the most common format by far. * Attempting to print negative values as either an Octal or Hexadecimal string results in a `std::runtime_error` being thrown, this is a direct consequence of the sign-magnitude representation. -* The fixed precision types `mp_[u]intXXX_t` have expression template support turned off - it seems to make little +* The fixed precision types `[checked_][u]intXXX_t` have expression template support turned off - it seems to make little difference to the performance of these types either way - so we may as well have the faster compile times by turning the feature off. -* Unsigned types support subtraction, and unary negation - the result is "as if" a 2's complement operation had been performed - - in other words they behave pretty much as a built in integer type would in this situation. So for example if we were using - `uint128_t` then both `uint128_t(1)-4` and `-uint128(3)` would result in the value `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD` - of type `uint128_t`. +* Unsigned types support subtraction - the result is "as if" a 2's complement operation had been performed as long as they are not + ['checked-integers] (see above). + In other words they behave pretty much as a built in integer type would in this situation. So for example if we were using + `uint128_t` then `uint128_t(1)-4` would result in the value `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD` + of type `uint128_t`. However, had this operation been performed on `checked_uint128_t` then a `std::range_error` would have + been thrown. +* Unary negation of unsigned types results in a compiler error (static assertion). * This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware. * When used at fixed precision, the size of this type is always one machine word larger than you would expect for an N-bit integer: the extra word stores both the sign, and how many machine words in the integer are actually in use. @@ -420,6 +482,11 @@ characterists as a 128-bit integer, rather than being 4 times slower for additio Typically this means you can use an integer type wide enough for the "worst case senario" with only minor performance degradation even if most of the time the arithmetic could in fact be done with a narrower type. +* When used at fixed precision and MaxBits is smaller than the number of bits in the largest native integer type, then +internally `cpp_int_backend` switches to a "trivial" implementation where it is just a thin wrapper around a single +integer. Note that it will still be slightly slower than a bare native integer, as it emulates a +signed-magnitude representation rather than simply using the platforms native sign representation: this ensures +there is no step change in behavior as a cpp_int grows in size. [h5 Example:] @@ -460,7 +527,7 @@ as a result performing formatted output on this type when the argument is negati `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid integer. -* Division by zero results in a `std::runtime_error` being thrown. +* Division by zero results in a `std::overflow_error` being thrown. * Although this type is a wrapper around [gmp] it will work equally well with [mpir]. Indeed use of [mpir] is recommended on Win32. * This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware. @@ -498,7 +565,7 @@ as a result performing formatted output on this type when the argument is negati `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid integer. -* Division by zero results in a `std::runtime_error` being thrown. +* Division by zero results in a `std::overflow_error` being thrown. [h5 Example:] @@ -548,7 +615,7 @@ The following back-ends provide floating point arithmetic: }} // namespaces The `cpp_dec_float` back-end is used in conjunction with `number`: It acts as an entirely C++ (header only and dependency free) -real-number type that is a drop-in replacement for the native C++ floating-point types, but with +floating-point number type that is a drop-in replacement for the native C++ floating-point types, but with much greater precision. Type `cpp_dec_float` can be used at fixed precision by specifying a non-zero `Digits10` template parameter. @@ -641,7 +708,7 @@ existing [gmp] code. * It is not possible to round-trip objects of this type to and from a string and get back exactly the same value. This appears to be a limitation of [gmp]. * Since the underlying [gmp] types have no notion of infinities or NaN's, care should be taken -to avoid numeric overflow or division by zero. That latter will trigger a hardware exception, +to avoid numeric overflow or division by zero. That latter will result in a std::overflow_error being thrown, while generating excessively large exponents may result in instability of the underlying [gmp] library (in testing, converting a number with an excessively large or small exponent to a string caused [gmp] to segfault). @@ -649,7 +716,7 @@ to a string caused [gmp] to segfault). the recommended option on Win32. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid floating point number. -* Division by zero results in a `std::runtime_error` being thrown. +* Division by zero results in a `std::overflow_error` being thrown. [h5 [gmp] example:] @@ -799,7 +866,7 @@ which return the numerator and denominator of the number. Things you should know when using this type: * Default constructed `cpp_rational`s have the value zero. -* Division by zero results in a `std::rumtime_error` being thrown. +* Division by zero results in a `std::overflow_error` being thrown. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid rational number. @@ -844,7 +911,7 @@ It's also possible to access the underlying `mpq_t` via the `data()` member func Things you should know when using this type: * Default constructed `mpq_rational`s have the value zero (this is the [gmp] default behavior). -* Division by zero results in a `std::runtime_error` being thrown. +* Division by zero results in a `std::overflow_error` being thrown. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid rational number. * No changes are made to the [gmp] library's global settings, so this type can coexist with existing @@ -885,7 +952,7 @@ which return the numerator and denominator of the number. Things you should know when using this type: * Default constructed `tom_rational`s have the value zero (this the inherited Boost.Rational behavior). -* Division by zero results in a `std::runtime_error` being thrown. +* Division by zero results in a `std::overflow_error` being thrown. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid rational number. * No changes are made to [tommath]'s global state, so this type can safely coexist with other [tommath] code. @@ -940,13 +1007,13 @@ In particular: * Any number type can be constructed (or assigned) from any builtin arithmetic type, as long as the conversion isn't lossy (for example float to int conversion): - cpp_dec_float_50 df(0.5); // OK construction from double - cpp_int i(450); // OK constructs from signed int - cpp_int j = 3.14; // Error, lossy conversion. + cpp_dec_float_50 df(0.5); // OK construction from double + cpp_int i(450); // OK constructs from signed int + cpp_int j = 3.14; // Error, lossy conversion. * A number can be explicitly constructed from an arithmetic type, even when the conversion is lossy: - cpp_int i(3.14); // OK explicit conversion + cpp_int i(3.14); // OK explicit conversion i = static_cast(3.14) // OK explicit conversion i.assign(3.14); // OK, explicit assign and avoid a temporary from the cast above i = 3.14; // Error, no implicit assignment operator for lossy conversion. @@ -963,8 +1030,8 @@ Additional conversions may be supported by particular backends. this functionality is only available on compilers supporting C++11's explicit conversion syntax. mpz_int z(2); - int i = z; // Error, implicit conversion not allowed. - int j = static_cast(z); // OK explicit conversion. + int i = z; // Error, implicit conversion not allowed. + int j = static_cast(z); // OK explicit conversion. * Any number type can be ['explicitly] constructed (or assigned) from a `const char*` or a `std::string`: @@ -1007,10 +1074,10 @@ are not lossy: * Interconversions between number types of the same family are allowed and are implicit conversions if no loss of precision is involved, and explicit if it is: - int128 i128 = 0; - int266 i256 = i128; // OK implicit widening conversion - i128 = i256; // Error, no assignment operator found, narrowing conversion is explict - i128 = static_cast(i256); // OK, explicit narrowing conversion + int128_t i128 = 0; + int266_t i256 = i128; // OK implicit widening conversion + i128_t = i256; // Error, no assignment operator found, narrowing conversion is explict + i128_t = static_cast(i256); // OK, explicit narrowing conversion mpz_int z = 0; mpf_float f = z; // OK, GMP handles this conversion natively, and it's not lossy and therefore implicit @@ -1337,7 +1404,7 @@ Type `number` is default constructible, and both copy constructible and assignab * An rvalue reference to another `number`. Move-semantics are used for construction if the backend also supports rvalue reference construction. In the case of assignment, move semantics are always supported when the argument is an rvalue reference irrespective of the backend. -* Any type in the same family, as long as no loss of precision is involved. For example from `int128` to `int256`, +* Any type in the same family, as long as no loss of precision is involved. For example from `int128_t` to `int256_t`, or `cpp_dec_float_50` to `cpp_dec_float_100`. Type `number` is explicitly constructible from: @@ -1719,30 +1786,56 @@ whose precision can vary at compile time (such as `mpf_float`). namespace boost{ namespace multiprecision{ - template > - struct cpp_int_backend; + typedef unspecified-type limb_type; + + enum cpp_integer_type { signed_magnitude, unsigned_magnitude }; + enum cpp_int_check_type { checked, unchecked }; + + template > + class cpp_int_backend; // // Expression templates default to et_off if there is no allocator: // - template - struct expression_template_default > + template + struct expression_template_default > { static const expression_template_option value = et_off; }; - typedef number > cpp_int; // arbitrary precision integer + typedef number > cpp_int; // arbitrary precision integer typedef rational_adapter > cpp_rational_backend; - typedef number cpp_rational; // arbitrary precision rational number + typedef number cpp_rational; // arbitrary precision rational number // Fixed precision unsigned types: - typedef number > uint128_t; - typedef number > uint256_t; - typedef number > uint512_t; - typedef number > uint1024_t; + typedef number > uint128_t; + typedef number > uint256_t; + typedef number > uint512_t; + typedef number > uint1024_t; // Fixed precision signed types: - typedef number > int128_t; - typedef number > int256_t; - typedef number > int512_t; - typedef number > int1024_t; + typedef number > int128_t; + typedef number > int256_t; + typedef number > int512_t; + typedef number > int1024_t; + + // Over again, but with checking enabled this time: + typedef number > checked_cpp_int; + typedef rational_adapter > checked_cpp_rational_backend; + typedef number checked_cpp_rational; + + // Checked fixed precision unsigned types: + typedef number > checked_uint128_t; + typedef number > checked_uint256_t; + typedef number > checked_uint512_t; + typedef number > checked_uint1024_t; + + // Fixed precision signed types: + typedef number > checked_int128_t; + typedef number > checked_int256_t; + typedef number > checked_int512_t; + typedef number > checked_int1024_t; }} // namespaces @@ -1753,16 +1846,22 @@ to change. The template arguments are: [variablelist -[[Argument][Meaning]] -[[MinBits] - [The number of Bits to reserve inside the class's internal cache. When constructing a value, - the object will use this internal cache if possible before resorting to dynamic memory allocation. - When this value is zero, then the size of the internal cache is `2*sizeof(void*)*CHAR_BIT`. - When the Allocator argument is `void`, then this parameter determines the precision of the type.]] -[[Signed][When `true` the type is signed, otherwise unsigned. Note that unsigned types are currently only - supported when the Allocator parameter is `void`.]] -[[Allocator][The allocator used for dynamic memory allocation. This parameter can be `void`, in which case - no dynamic memory will ever be allocated.]] +[[MinBits][Determines the number of Bits to store directly within the object before resorting to dynamic memory + allocation. When zero, this field is determined automatically based on how many bits can be stored + in union with the dynamic storage header: setting a larger value may improve performance as larger integer + values will be stored internally before memory allocation is required.]] +[[MaxBits][Determines the maximum number of bits to be stored in the type: resulting in a fixed precision type. + When this value is the same as MinBits, then the Allocator parameter is ignored, as no dynamic + memory allocation will ever be performed: in this situation the Allocator parameter should be set to + type `void`. Note that this parameter should not be used simply to prevent large memory + allocations, not only is that role better performed by the allocator, but fixed precision + integers have a tendency to allocate all of MaxBits of storage more often than one would expect.]] +[[SignType][Determines whether the resulting type is signed or not. Note that for +[@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] types + this parameter must be `signed_magnitude`. For fixed precision + types then this type may be either `signed_magnitude` or `unsigned_magnitude`.]] +[[Checked][This parameter has two values: `checked` or `unchecked`. See the [link boost_multiprecision.tut.ints.cpp_int tutorial] for more information.]] +[[Allocator][The allocator to use for dynamic memory allocation, or type `void` if MaxBits == MinBits.]] ] The type of `number_category >::type` is `mpl::int_`. @@ -1940,6 +2039,14 @@ if `is_lossy_conversion::value` is `true`. Otherwise `false`. Note that while this trait is the ultimate arbiter of which constructors are marked as `explicit` in class `number`, authors of backend types should generally specialise one of the traits above, rather than this one directly. + template + is_signed_number; + template + is_unsigned_number; + +These two traits inherit from either `mpl::true_` or `mpl::false_`, by default types are assumed to be signed unless +`is_unsigned_number` is specialized for that type. + [endsect] [section:backendconc Backend Requirements] @@ -2335,7 +2442,6 @@ in point of fact this naming convention shouldn't be necessary, but rather works [[Header][Contains]] [[cpp_int.hpp][The `cpp_int` backend type.]] [[gmp.hpp][Defines all [gmp] related backends.]] -[[integer_ops.hpp][Integer specific non-member functions.]] [[miller_rabin.hpp][Miller Rabin primality testing code.]] [[number.hpp][Defines the `number` backend, is included by all the backend headers.]] [[mpfr.hpp][Defines the mpfr_float_backend backend.]] @@ -2348,8 +2454,16 @@ in point of fact this naming convention shouldn't be necessary, but rather works [table Implementation Headers] [[Header][Contains]] +[[cpp_int/add.hpp][Add and subtract operators for `cpp_int_backend`.]] +[[cpp_int/bitwise.hpp][Bitwise operators for `cpp_int_backend`.]] +[[cpp_int/checked.hpp][Helper functions for checked arithmetic for `cpp_int_backend`.]] +[[cpp_int/comparison.hpp][Comparison operators for `cpp_int_backend`.]] +[[cpp_int/cpp_int_config.hpp][Basic setup and configuration for `cpp_int_backend`.]] +[[cpp_int/divide.hpp][Division and modulus operators for `cpp_int_backend`.]] +[[cpp_int/limits.hpp][`numeric_limits` support for `cpp_int_backend`.]] +[[cpp_int/misc.hpp][Miscellaneous operators for `cpp_int_backend`.]] +[[cpp_int/multiply.hpp][Multiply operators for `cpp_int_backend`.]] [[detail/big_lanczos.hpp][Lanczos support for Boost.Math integration.]] -[[detail/cpp_int_core.hpp][Platform and peformance tuning for the `cpp_int` backend.]] [[detail/default_ops.hpp][Default versions of the optional backend non-member functions.]] [[detail/generic_interconvert.hpp][Generic interconversion routines.]] [[detail/number_base.hpp][All the expression template code, metaprogramming, and operator overloads for `number`.]] @@ -2725,7 +2839,7 @@ Windows Vista machine. [h4 Post review changes] * Non-expression template operators further optimised with rvalue reference support. -* Many functions made made `constexp`? +* Many functions made `constexp`. * Differentiate between explicit and implicit conversions in the number constructor. * Removed "mp_" prefix from types. * Allowed mixed precision arithmetic. @@ -2733,6 +2847,7 @@ Windows Vista machine. * Changed ExpressionTemplate parameter default value to use a traits class so that the default value depends on the backend used. * Added support for fused-multiply-add/subtract with GMP support. * Tweaked expression template unpacking to use fewer temporaries when the LHS also appears in the RHS. +* Refactored `cpp_int_backend` based on review comments with new template parameter structure. [h4 Pre-review history] @@ -2763,28 +2878,30 @@ More a list of what ['could] be done, rather than what ['should] be done (which * Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it, the hard part is IO and binary-decimal convertion. * Should there be a choice of rounding mode (probably MPFR specific)? +* We can reuse temporaries in multiple subtrees (temporary caching). Things requested in review: * A 2's complement fixed precision int that uses exactly N bits and no more. -* A backend for an overflow aware integers. -* Each back-end should document the requirements it satisfies (not currently scheduled for inclusion: it's -deliberately an implementation detail, and "optional" requirements are optimisations which can't be detected -by the user). -* The use of bool in template parameters could be improved by the use of -an enum class which will be more explicit. E.g `enum class expression_template {disabled, enabled}; -enum class sign {unsigned, signed};` (Partly done 2012/09/15). * The performances of mp_number, false>respect to float and mp_number, false> and int should be given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results). * The rounding applied when converting must be documented. * cpp_dec_float should round to nearest. -* We can reuse temporaries in multiple subtrees (temporary caching). -* Emphasise in the docs that ET's may reorder operations. * Document why we don't use proto (compile times). -* Document what happens to small fixed precision cpp_int's. * Should we provide min/max overloads for expression templates? * Document why we don't abstract out addition/multiplication algorithms etc. +* We can reuse temporaries in multiple subtrees (temporary caching) Moved to TODO list. +* Emphasise in the docs that ET's may reorder operations (done 2012/10/31). +* Document what happens to small fixed precision cpp_int's (done 2012/10/31). +* The use of bool in template parameters could be improved by the use of +an enum class which will be more explicit. E.g `enum class expression_template {disabled, enabled}; +enum class sign {unsigned, signed};` (Partly done 2012/09/15, done 2012/10/31). +* Each back-end should document the requirements it satisfies (not currently scheduled for inclusion: it's +deliberately an implementation detail, and "optional" requirements are optimisations which can't be detected +by the user). Not done: this is an implementation detail, the exact list of requirements satisfied is purely +an optimimization, not something the user can detect. +* A backend for an overflow aware integers (done 2012/10/31). * IIUC convert_to is used to emulate in c++98 compilers C++11 explicit conversions. Could the explicit conversion operator be added on compilers supporting it? (Done 2012/09/15). @@ -2811,7 +2928,7 @@ is able to. (Done 2012/09/15). [h4 Pre-Review Comments] * Make fixed precision orthogonal to Allocator type in cpp_int. Possible solution - add an additional MaxBits -template argument that defaults to 0 (meaning keep going till no more space/memory). +template argument that defaults to 0 (meaning keep going till no more space/memory). Done. * Can ring types (exact floating point types) be supported? The answer should be yes, but someone needs to write it (Moved to TODO list). * Should there be a choice of rounding mode (probably MPFR specific)? Moved to TODO list. * Make the exponent type for cpp_dec_float a templare parameter, maybe include support for big-integer exponents. diff --git a/include/boost/multiprecision/cpp_int/misc.hpp b/include/boost/multiprecision/cpp_int/misc.hpp index cee2e386..04178687 100644 --- a/include/boost/multiprecision/cpp_int/misc.hpp +++ b/include/boost/multiprecision/cpp_int/misc.hpp @@ -31,7 +31,7 @@ void check_in_range(const CppInt& /*val*/, const mpl::int_&) BOOST_NO void check_is_negative(const mpl::true_&) BOOST_NOEXCEPT {} void check_is_negative(const mpl::false_&) { - BOOST_THROW_EXCEPTION(std::domain_error("Attempt to assign a negative value to an unsigned type.")); + BOOST_THROW_EXCEPTION(std::range_error("Attempt to assign a negative value to an unsigned type.")); } template diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index aae260c7..51bd8fb1 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -749,7 +749,7 @@ private: self_type temp(e); temp.m_backend.swap(this->m_backend); } - else if(bl || (left_depth >= right_depth)) + else if(!br && (bl || (left_depth >= right_depth))) { // br is always false, but if bl is true we must take the this branch: do_assign(e.left(), typename left_type::tag_type()); do_add(e.right(), typename right_type::tag_type()); @@ -788,7 +788,7 @@ private: self_type temp(e); temp.m_backend.swap(this->m_backend); } - else if(bl || (left_depth >= right_depth)) + else if(!br && (bl || (left_depth >= right_depth))) { // br is always false, but if bl is true we must take the this branch: do_assign(e.left(), typename left_type::tag_type()); do_subtract(e.right(), typename right_type::tag_type()); @@ -827,7 +827,7 @@ private: self_type temp(e); temp.m_backend.swap(this->m_backend); } - else if(bl || (left_depth >= right_depth)) + else if(!br && (bl || (left_depth >= right_depth))) { // br is always false, but if bl is true we must take the this branch: do_assign(e.left(), typename left_type::tag_type()); do_multiplies(e.right(), typename right_type::tag_type()); @@ -927,7 +927,7 @@ private: { do_bitwise_and(e.left(), typename left_type::tag_type()); } - else if(left_depth >= right_depth) + else if(!br && (bl || (left_depth >= right_depth))) { do_assign(e.left(), typename left_type::tag_type()); do_bitwise_and(e.right(), typename right_type::tag_type()); @@ -972,7 +972,7 @@ private: { do_bitwise_or(e.left(), typename left_type::tag_type()); } - else if(left_depth >= right_depth) + else if(!br && (bl || (left_depth >= right_depth))) { do_assign(e.left(), typename left_type::tag_type()); do_bitwise_or(e.right(), typename right_type::tag_type()); @@ -1017,7 +1017,7 @@ private: { do_bitwise_xor(e.left(), typename left_type::tag_type()); } - else if(left_depth >= right_depth) + else if(!br && (bl || (left_depth >= right_depth))) { do_assign(e.left(), typename left_type::tag_type()); do_bitwise_xor(e.right(), typename right_type::tag_type()); diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 5327e055..08c2e726 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -282,8 +282,10 @@ int main() #ifdef TEST_MPFR #if MPFR_VERSION, 1); + time_proc("mpfr_float_50 (no expression templates", test_bessel, et_off> >, 1); #else time_proc("mpfr_float_50", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); + time_proc("mpfr_float_50 (no expression templates", test_bessel, et_off> >, mpfr_buildopt_tls_p() ? 3 : 1); #endif #endif #ifdef TEST_MPF @@ -311,6 +313,7 @@ int main() #endif #ifdef TEST_MPFR time_proc("mpfr_float_100", test_bessel); + time_proc("mpfr_float_100 (no expression templates", test_bessel, et_off> >); #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_bessel); @@ -338,6 +341,7 @@ int main() #endif #ifdef TEST_MPFR time_proc("mpfr_float_50", test_polynomial); + time_proc("mpfr_float_50 (no expression templates", test_polynomial, et_off> >); #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_polynomial); @@ -364,6 +368,7 @@ int main() #endif #ifdef TEST_MPFR time_proc("mpfr_float_100", test_polynomial); + time_proc("mpfr_float_100 (no expression templates", test_polynomial, et_off> >); #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_polynomial); @@ -390,6 +395,7 @@ int main() #endif #ifdef TEST_MPFR time_proc("mpfr_float_50", test_nct); + time_proc("mpfr_float_50 (no expression templates", test_nct, et_off> >); #endif #ifdef TEST_MPF time_proc("mpf_float_50", test_nct); @@ -416,6 +422,7 @@ int main() #endif #ifdef TEST_MPFR time_proc("mpfr_float_100", test_nct); + time_proc("mpfr_float_100 (no expression templates", test_nct, et_off> >); #endif #ifdef TEST_MPF time_proc("mpf_float_100", test_nct); diff --git a/test/math/log1p_expm1_test.cpp b/test/math/log1p_expm1_test.cpp index 4df662c6..9472123d 100644 --- a/test/math/log1p_expm1_test.cpp +++ b/test/math/log1p_expm1_test.cpp @@ -131,6 +131,8 @@ int test_main(int, char* []) test(number >(), "number >"); test(number >(), "number >"); test(number >(), "number >"); + // there should be at least one test with expression templates off: + test(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test(number >(), "number >"); diff --git a/test/math/powm1_sqrtp1m1_test.cpp b/test/math/powm1_sqrtp1m1_test.cpp index 1fa0f76d..a5850b3d 100644 --- a/test/math/powm1_sqrtp1m1_test.cpp +++ b/test/math/powm1_sqrtp1m1_test.cpp @@ -123,6 +123,8 @@ int test_main(int, char* []) //test_powm1_sqrtp1m1(number >(), "number >"); test_powm1_sqrtp1m1(number >(), "number >"); test_powm1_sqrtp1m1(number >(), "number >"); + // there should be at least one test with expression templates off: + test_powm1_sqrtp1m1(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_powm1_sqrtp1m1(number >(), "number >"); diff --git a/test/math/test_bessel_i.cpp b/test/math/test_bessel_i.cpp index 4fc0c100..a058c070 100644 --- a/test/math/test_bessel_i.cpp +++ b/test/math/test_bessel_i.cpp @@ -91,6 +91,8 @@ int test_main(int, char* []) //test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); + // there should be at least one test with expression templates off: + test_bessel(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_bessel(number >(), "number >"); diff --git a/test/math/test_bessel_j.cpp b/test/math/test_bessel_j.cpp index d0f2acd8..0cdd5f51 100644 --- a/test/math/test_bessel_j.cpp +++ b/test/math/test_bessel_j.cpp @@ -133,6 +133,8 @@ int test_main(int, char* []) //test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); + // there should be at least one test with expression templates off: + test_bessel(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_bessel(number >(), "number >"); diff --git a/test/math/test_bessel_k.cpp b/test/math/test_bessel_k.cpp index 8c4d8e54..0fa9dc3b 100644 --- a/test/math/test_bessel_k.cpp +++ b/test/math/test_bessel_k.cpp @@ -106,6 +106,8 @@ int test_main(int, char* []) test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); + // there should be at least one test with expression templates off: + test_bessel(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_bessel(number >(), "number >"); diff --git a/test/math/test_bessel_y.cpp b/test/math/test_bessel_y.cpp index a3a7c91b..8e39e399 100644 --- a/test/math/test_bessel_y.cpp +++ b/test/math/test_bessel_y.cpp @@ -132,6 +132,8 @@ int test_main(int, char* []) //test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); test_bessel(number >(), "number >"); + // there should be at least one test with expression templates off: + test_bessel(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_bessel(number >(), "number >"); diff --git a/test/math/test_beta.cpp b/test/math/test_beta.cpp index 92d0fb77..a372f704 100644 --- a/test/math/test_beta.cpp +++ b/test/math/test_beta.cpp @@ -118,6 +118,8 @@ int test_main(int, char* []) test_beta(number >(), "number >"); test_beta(number >(), "number >"); test_beta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_beta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_beta(number >(), "number >"); diff --git a/test/math/test_binomial_coeff.cpp b/test/math/test_binomial_coeff.cpp index 208c5dee..01c7ad44 100644 --- a/test/math/test_binomial_coeff.cpp +++ b/test/math/test_binomial_coeff.cpp @@ -97,6 +97,8 @@ int test_main(int, char* []) test_binomial(number >(), "number >"); test_binomial(number >(), "number >"); test_binomial(number >(), "number >"); + // there should be at least one test with expression templates off: + test_binomial(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_binomial(number >(), "number >"); diff --git a/test/math/test_carlson.cpp b/test/math/test_carlson.cpp index d5936f38..2680c392 100644 --- a/test/math/test_carlson.cpp +++ b/test/math/test_carlson.cpp @@ -89,6 +89,8 @@ int test_main(int, char* []) test_spots(number >(), "number >"); test_spots(number >(), "number >"); test_spots(number >(), "number >"); + // there should be at least one test with expression templates off: + test_spots(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_spots(number >(), "number >"); diff --git a/test/math/test_cbrt.cpp b/test/math/test_cbrt.cpp index ca2af6d3..ac07d662 100644 --- a/test/math/test_cbrt.cpp +++ b/test/math/test_cbrt.cpp @@ -78,6 +78,8 @@ int test_main(int, char* []) test_cbrt(number >(), "number >"); test_cbrt(number >(), "number >"); test_cbrt(number >(), "number >"); + // there should be at least one test with expression templates off: + test_cbrt(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_cbrt(number >(), "number >"); diff --git a/test/math/test_digamma.cpp b/test/math/test_digamma.cpp index a090081d..86b8f00a 100644 --- a/test/math/test_digamma.cpp +++ b/test/math/test_digamma.cpp @@ -92,6 +92,8 @@ int test_main(int, char* []) test_digamma(number >(), "number >"); test_digamma(number >(), "number >"); test_digamma(number >(), "number >"); + // there should be at least one test with expression templates off: + test_digamma(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_digamma(number >(), "number >"); diff --git a/test/math/test_ellint_1.cpp b/test/math/test_ellint_1.cpp index bf8eb4a3..bc843e30 100644 --- a/test/math/test_ellint_1.cpp +++ b/test/math/test_ellint_1.cpp @@ -85,6 +85,8 @@ int test_main(int, char* []) test_spots(number >(), "number >"); test_spots(number >(), "number >"); test_spots(number >(), "number >"); + // there should be at least one test with expression templates off: + test_spots(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_spots(number >(), "number >"); diff --git a/test/math/test_ellint_2.cpp b/test/math/test_ellint_2.cpp index d12c1d50..bd8c01cf 100644 --- a/test/math/test_ellint_2.cpp +++ b/test/math/test_ellint_2.cpp @@ -78,6 +78,8 @@ int test_main(int, char* []) test_spots(number >(), "number >"); test_spots(number >(), "number >"); test_spots(number >(), "number >"); + // there should be at least one test with expression templates off: + test_spots(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_spots(number >(), "number >"); diff --git a/test/math/test_ellint_3.cpp b/test/math/test_ellint_3.cpp index abc6141a..49ffdc31 100644 --- a/test/math/test_ellint_3.cpp +++ b/test/math/test_ellint_3.cpp @@ -99,6 +99,8 @@ int test_main(int, char* []) test_spots(number >(), "number >"); test_spots(number >(), "number >"); test_spots(number >(), "number >"); + // there should be at least one test with expression templates off: + test_spots(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_spots(number >(), "number >"); diff --git a/test/math/test_erf.cpp b/test/math/test_erf.cpp index e9308d8c..925b72a4 100644 --- a/test/math/test_erf.cpp +++ b/test/math/test_erf.cpp @@ -99,6 +99,8 @@ int test_main(int, char* []) test_erf(number >(), "number >"); test_erf(number >(), "number >"); test_erf(number >(), "number >"); + // there should be at least one test with expression templates off: + test_erf(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_erf(number >(), "number >"); diff --git a/test/math/test_expint.cpp b/test/math/test_expint.cpp index bf5b78eb..c134390b 100644 --- a/test/math/test_expint.cpp +++ b/test/math/test_expint.cpp @@ -99,6 +99,8 @@ int test_main(int, char* []) test_expint(number >(), "number >"); test_expint(number >(), "number >"); test_expint(number >(), "number >"); + // there should be at least one test with expression templates off: + test_expint(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_expint(number >(), "number >"); diff --git a/test/math/test_gamma.cpp b/test/math/test_gamma.cpp index c853bdb4..7e944a91 100644 --- a/test/math/test_gamma.cpp +++ b/test/math/test_gamma.cpp @@ -113,6 +113,8 @@ int test_main(int, char* []) test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); + // there should be at least one test with expression templates off: + test_gamma(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_gamma(number >(), "number >"); diff --git a/test/math/test_hermite.cpp b/test/math/test_hermite.cpp index 743a3de3..bb1c3ac1 100644 --- a/test/math/test_hermite.cpp +++ b/test/math/test_hermite.cpp @@ -78,6 +78,8 @@ int test_main(int, char* []) test_hermite(number >(), "number >"); test_hermite(number >(), "number >"); test_hermite(number >(), "number >"); + // there should be at least one test with expression templates off: + test_hermite(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_hermite(number >(), "number >"); diff --git a/test/math/test_ibeta.cpp b/test/math/test_ibeta.cpp index 2f6902e0..2e2233c0 100644 --- a/test/math/test_ibeta.cpp +++ b/test/math/test_ibeta.cpp @@ -109,6 +109,8 @@ int test_main(int, char* []) test_beta(number >(), "number >"); test_beta(number >(), "number >"); test_beta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_beta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_beta(number >(), "number >"); diff --git a/test/math/test_ibeta_2.cpp b/test/math/test_ibeta_2.cpp index 72997385..e885e095 100644 --- a/test/math/test_ibeta_2.cpp +++ b/test/math/test_ibeta_2.cpp @@ -109,6 +109,8 @@ int test_main(int, char* []) test_beta(number >(), "number >"); test_beta(number >(), "number >"); test_beta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_beta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_beta(number >(), "number >"); diff --git a/test/math/test_ibeta_3.cpp b/test/math/test_ibeta_3.cpp index c6602542..bc685922 100644 --- a/test/math/test_ibeta_3.cpp +++ b/test/math/test_ibeta_3.cpp @@ -95,6 +95,8 @@ int test_main(int, char* []) test_beta(number >(), "number >"); test_beta(number >(), "number >"); test_beta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_beta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_beta(number >(), "number >"); diff --git a/test/math/test_ibeta_4.cpp b/test/math/test_ibeta_4.cpp index c7a8b20f..754f6b59 100644 --- a/test/math/test_ibeta_4.cpp +++ b/test/math/test_ibeta_4.cpp @@ -102,6 +102,8 @@ int test_main(int, char* []) test_beta(number >(), "number >"); test_beta(number >(), "number >"); test_beta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_beta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_beta(number >(), "number >"); diff --git a/test/math/test_ibeta_inv_1.cpp b/test/math/test_ibeta_inv_1.cpp index b9f052ca..47cd48f7 100644 --- a/test/math/test_ibeta_inv_1.cpp +++ b/test/math/test_ibeta_inv_1.cpp @@ -88,6 +88,8 @@ int test_main(int, char* []) //test_beta(number >(), "number >"); test_beta(number >(), "number >"); test_beta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_beta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_beta(number >(), "number >"); diff --git a/test/math/test_ibeta_inv_ab_4.cpp b/test/math/test_ibeta_inv_ab_4.cpp index 82eff4e6..60bd3930 100644 --- a/test/math/test_ibeta_inv_ab_4.cpp +++ b/test/math/test_ibeta_inv_ab_4.cpp @@ -81,6 +81,8 @@ int test_main(int, char* []) //test_beta(number >(), "number >"); test_beta(number >(), "number >"); test_beta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_beta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_beta(number >(), "number >"); diff --git a/test/math/test_igamma.cpp b/test/math/test_igamma.cpp index 063cbeaf..5f544f4f 100644 --- a/test/math/test_igamma.cpp +++ b/test/math/test_igamma.cpp @@ -85,6 +85,8 @@ int test_main(int, char* []) test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); + // there should be at least one test with expression templates off: + test_gamma(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_gamma(number >(), "number >"); diff --git a/test/math/test_igamma_inv.cpp b/test/math/test_igamma_inv.cpp index 5408444e..2cb4c4d9 100644 --- a/test/math/test_igamma_inv.cpp +++ b/test/math/test_igamma_inv.cpp @@ -100,6 +100,8 @@ int test_main(int, char* []) test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); + // there should be at least one test with expression templates off: + test_gamma(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_gamma(number >(), "number >"); diff --git a/test/math/test_igamma_inva.cpp b/test/math/test_igamma_inva.cpp index fdd330e9..5724ed7d 100644 --- a/test/math/test_igamma_inva.cpp +++ b/test/math/test_igamma_inva.cpp @@ -79,6 +79,8 @@ int test_main(int, char* []) test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); test_gamma(number >(), "number >"); + // there should be at least one test with expression templates off: + test_gamma(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_gamma(number >(), "number >"); diff --git a/test/math/test_laguerre.cpp b/test/math/test_laguerre.cpp index 65840502..6b6aab15 100644 --- a/test/math/test_laguerre.cpp +++ b/test/math/test_laguerre.cpp @@ -78,6 +78,8 @@ int test_main(int, char* []) test_laguerre(number >(), "number >"); test_laguerre(number >(), "number >"); test_laguerre(number >(), "number >"); + // there should be at least one test with expression templates off: + test_laguerre(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_laguerre(number >(), "number >"); diff --git a/test/math/test_legendre.cpp b/test/math/test_legendre.cpp index 237310e6..6143b020 100644 --- a/test/math/test_legendre.cpp +++ b/test/math/test_legendre.cpp @@ -78,6 +78,8 @@ int test_main(int, char* []) test_legendre_p(number >(), "number >"); test_legendre_p(number >(), "number >"); test_legendre_p(number >(), "number >"); + // there should be at least one test with expression templates off: + test_legendre_p(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_legendre_p(number >(), "number >"); diff --git a/test/math/test_tgamma_ratio.cpp b/test/math/test_tgamma_ratio.cpp index cae68344..5c27f269 100644 --- a/test/math/test_tgamma_ratio.cpp +++ b/test/math/test_tgamma_ratio.cpp @@ -92,6 +92,8 @@ int test_main(int, char* []) test_tgamma_ratio(number >(), "number >"); test_tgamma_ratio(number >(), "number >"); test_tgamma_ratio(number >(), "number >"); + // there should be at least one test with expression templates off: + test_tgamma_ratio(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_tgamma_ratio(number >(), "number >"); diff --git a/test/math/test_zeta.cpp b/test/math/test_zeta.cpp index 4db422fe..003f7abf 100644 --- a/test/math/test_zeta.cpp +++ b/test/math/test_zeta.cpp @@ -86,6 +86,8 @@ int test_main(int, char* []) test_zeta(number >(), "number >"); test_zeta(number >(), "number >"); test_zeta(number >(), "number >"); + // there should be at least one test with expression templates off: + test_zeta(number, et_off>(), "number, et_off>"); #endif #ifdef TEST_MPFR_50 test_zeta(number >(), "number >"); From d1336b5f635d97f7906f5f51906945c1de4cc5ef Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 1 Nov 2012 11:19:59 +0000 Subject: [PATCH 246/256] More doc updates. Regenerate docs. [SVN r81133] --- .../boost_multiprecision/indexes/s01.html | 5 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 15 +- doc/html/boost_multiprecision/map.html | 1 + doc/html/boost_multiprecision/map/ack.html | 6 +- doc/html/boost_multiprecision/map/faq.html | 111 +++++++++++ doc/html/boost_multiprecision/map/todo.html | 36 ++-- doc/html/boost_multiprecision/ref.html | 6 +- doc/html/boost_multiprecision/tut.html | 3 + doc/html/boost_multiprecision/tut/lits.html | 63 ++++++ .../boost_multiprecision/tut/primetest.html | 6 +- .../boost_multiprecision/tut/rounding.html | 182 ++++++++++++++++++ doc/html/index.html | 6 +- doc/multiprecision.qbk | 100 +++++++++- 15 files changed, 509 insertions(+), 39 deletions(-) create mode 100644 doc/html/boost_multiprecision/map/faq.html create mode 100644 doc/html/boost_multiprecision/tut/lits.html create mode 100644 doc/html/boost_multiprecision/tut/rounding.html diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index af78fb53..680560fd 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    @@ -421,6 +421,7 @@
  • precision

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 2df7fd66..d15a40c9 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index
  • C E G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index be23bda1..729668d3 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 7a5144be..adbddd56 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    @@ -475,10 +475,16 @@
    F
    -
    G
    @@ -859,6 +865,7 @@
  • precision

    diff --git a/doc/html/boost_multiprecision/map.html b/doc/html/boost_multiprecision/map.html index 5037bf2b..9521a6be 100644 --- a/doc/html/boost_multiprecision/map.html +++ b/doc/html/boost_multiprecision/map.html @@ -20,6 +20,7 @@
  • diff --git a/doc/html/boost_multiprecision/map/ack.html b/doc/html/boost_multiprecision/map/ack.html index f437951a..0dc685f5 100644 --- a/doc/html/boost_multiprecision/map/ack.html +++ b/doc/html/boost_multiprecision/map/ack.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -49,7 +49,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/map/faq.html b/doc/html/boost_multiprecision/map/faq.html new file mode 100644 index 00000000..887b9ad4 --- /dev/null +++ b/doc/html/boost_multiprecision/map/faq.html @@ -0,0 +1,111 @@ + + + +FAQ + + + + + + + + +
    +PrevUpHomeNext +
    +
    +

    +FAQ +

    +
    +

    +
    +
    Why do I get compiler errors when passing a number + to a template function?
    +

    + Most likely you are actually passing an expression template type to + the function and template-argument-deduction deduces the "wrong" + type. Try casting the arguments involving expressions to the actual + number type, or as a last resort turning off expression template support + in the number type you are using. +

    +
    When is expression template support a performance gain?
    +

    + As a general rule, expression template support adds a small runtime + overhead creating and unpacking the expression templates, but greatly + reduces the number of temporaries created. So it's most effective in + improving performance when the cost of creating a temporary is high: + for example when creating a temporary involves a memory allocation. + It is least effective (and may even be a dis-optimisation) when temporaries + are cheap: for example if the number type is basically a thin wrapper + around a native arithmetic type. In addition, since the library makes + extensive use of thin inline wrapper functions, turning on compiler + optimization is essential to achieving high performance. +

    +
    Do expression templates reorder operations?
    +

    + Yes they do, sometimes quite radically so, if this is a concern then + they should be turned off for the number type you are using. +

    +
    I can't construct my number type from some other type, + but the docs indicate that the conversion should be allowed, what's up?
    +

    + Some conversions are explicit, that includes construction + from a string, or constructing from any type that may result in loss + of precision (for example constructing an integer type from a float). +

    +
    Why do I get an exception thrown (or the program crash due to an + uncaught exception) when using the bitwise operators on a checked cpp_int?
    +

    + Bitwise operations on negative values (or indeed any signed integer + type) are unspecified by the standard. As a result any attempt to carry + out a bitwise operation on a negative checked-integer will result in + a std::range_error being thrown. +

    +
    Why do I get compiler errors when trying to use the complement operator?
    +

    + Use of the complement operator on signed types is problematic as the + result is unspecified by the standard, and is further complicated by + the fact that most extended precision integer types use a sign-magnitude + representation rather than the 2's complement one favored by most native + integer types. As a result the complement operator is deliberately + disabled for checked cpp_int's. + Unchecked cpp_int's + give the same valued result as a 2's complement type would, but not + the same bit-pattern. +

    +
    Why can't I negate an unsigned type?
    +

    + The unary negation operator is deliberately disabled for unsigned integer + types as it's use would almost always be a programming error. +

    +
    Why doesn't the library use proto?
    +

    + A very early version of the library did use proto, but compile times + became too slow for the library to be usable. Since the library only + required a tiny fraction of what proto has to offer anyway, a lightweight + expression template mechanism was used instead. Compile times are still + too slow... +

    +
    Why not abstract out addition/multiplication algorithms?
    +

    + This was deamed not to be practical: these algorithms are intimately + tied to the actual data representation used. +

    +
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 585439d0..8f453970 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -7,11 +7,11 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -48,6 +48,9 @@
  • Should there be a choice of rounding mode (probably MPFR specific)?
  • +
  • + We can reuse temporaries in multiple subtrees (temporary caching). +
  • Things requested in review: @@ -63,27 +66,28 @@ int should be given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results).

  • -
  • - The rounding applied when converting must be documented. -
  • cpp_dec_float should round to nearest.
  • -
  • - We can reuse temporaries in multiple subtrees (temporary caching). -
  • -
  • - Emphasise in the docs that ET's may reorder operations. -
  • -
  • - Document why we don't use proto (compile times). -
  • Should we provide min/max overloads for expression templates?
  • +
  • + The rounding applied when converting must be documented (Done). +
  • Document why we don't abstract out addition/multiplication algorithms - etc. + etc. (done - FAQ) +
  • +
  • + Document why we don't use proto (compile times) (Done). +
  • +
  • + We can reuse temporaries in multiple subtrees (temporary caching) Moved + to TODO list. +
  • +
  • + Emphasise in the docs that ET's may reorder operations (done 2012/10/31).
  • Document what happens to small fixed precision cpp_int's (done 2012/10/31). @@ -215,7 +219,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index 8957bc6f..a77e8169 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -41,7 +41,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index 5ae44082..906d8213 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -60,6 +60,9 @@ Interconverting Between Number Types

  • Generating Random Numbers
    Primality Testing
    +
    Literal Types and constexpr Support
    +
    Rounding Rules for + Conversions

    In order to use this library you need to make two choices: what kind of number diff --git a/doc/html/boost_multiprecision/tut/lits.html b/doc/html/boost_multiprecision/tut/lits.html new file mode 100644 index 00000000..b64f2793 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/lits.html @@ -0,0 +1,63 @@ + + + +Literal Types and constexpr Support + + + + + + + + +

    +PrevUpHomeNext +
    +
    + +

    + There is limited support for constexpr + in the library, currently the number + front end supports constexpr + on default construction and all forwarding constructors, but not on any of + the non-member operators. So if some type B + is a literal type, then number<B> + is also a literal type, and you will be able to compile-time-construct such + a type from any literal that B + is compile-time-constructible from. However, you will not be able to perform + compile-time arithmetic on such types. +

    +

    + Currently the only backend type provided by the library that is also a literal + type are instantiations of cpp_int_backend + where the Allocator parameter is type void, + and the Checked parameter is boost::multiprecision::unchecked. +

    +

    + For example: +

    +
    using namespace boost::multiprecision;
    +
    +constexpr int128_t            i = 0;     // OK, fixed precision int128_t has no allocator.
    +constexpr uint1024_t          j = 0xFFFFFFFF00000000uLL;  // OK, fixed precision uint1024_t has no allocator.
    +
    +constexpr checked_uint128_t   k = -1; // Error, checked type is not a literal type as we need runtime error checking.
    +constexpr cpp_int             l = 2;  // Error, type is not a literal as it performs memory management.
    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/primetest.html b/doc/html/boost_multiprecision/tut/primetest.html index 49006337..fb38c41b 100644 --- a/doc/html/boost_multiprecision/tut/primetest.html +++ b/doc/html/boost_multiprecision/tut/primetest.html @@ -7,11 +7,11 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -103,7 +103,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/tut/rounding.html b/doc/html/boost_multiprecision/tut/rounding.html new file mode 100644 index 00000000..84dcc3f6 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/rounding.html @@ -0,0 +1,182 @@ + + + +Rounding Rules for Conversions + + + + + + + + +
    +PrevUpHomeNext +
    +
    + +

    + As a general rule, all conversions between unrelated types are performed + using basic arithmetic operations, therefore conversions are either exact, + or follow the same rounding rules as arithmetic for the type in question. +

    +

    + The following table summarises the situation for conversions from native + types: +

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Backend +

    +
    +

    + Rounding Rules +

    +
    +

    + cpp_int +

    +
    +

    + Conversions from integer types are exact if the target has sufficient + precision, otherwise they truncate to the first 2^MaxBits bits + (modulo arithmetic). Conversions from floating point types are + truncating to the nearest integer. +

    +
    +

    + gmp_int +

    +
    +

    + Conversions are performed by the GMP library except for conversion + from long double + which is truncating. +

    +
    +

    + tom_int +

    +
    +

    + Conversions from floating point types are truncating, all others + are performed by libtommath and are exact. +

    +
    +

    + gmp_float +

    +
    +

    + Conversions are performed by the GMP library except for conversion + from long double + which should be exact provided the target type has as much precision + as a long double. +

    +
    +

    + mpfr_float +

    +
    +

    + All conversions are performed by the underlying MPFR library. +

    +
    +

    + cpp_dec_float +

    +
    +

    + All conversions are performed using basic arithmetic operations + and are truncating. +

    +
    +

    + gmp_rational +

    +
    +

    + See gmp_int +

    +
    +

    + cpp_rational +

    +
    +

    + See cpp_int +

    +
    +

    + tommath_rational +

    +
    +

    + See tom_int +

    +
    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/index.html b/doc/html/index.html index 07802bad..3373c51d 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -75,6 +75,9 @@ Interconverting Between Number Types
    Generating Random Numbers
    Primality Testing
    +
    Literal Types and constexpr Support
    +
    Rounding Rules for + Conversions
    Reference
    @@ -107,6 +110,7 @@
    History
    TODO
    +
    FAQ
    Acknowledgements
    Indexes
    @@ -120,7 +124,7 @@

    - +

    Last revised: October 31, 2012 at 16:58:22 GMT

    Last revised: November 01, 2012 at 11:12:34 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 210fefe3..d2ff465f 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -1172,6 +1172,55 @@ The following example searches for a prime `p` for which `(p-1)/2` is also proba [endsect] +[section:lits Literal Types and `constexpr` Support] + +There is limited support for `constexpr` in the library, currently the `number` front end supports `constexpr` +on default construction and all forwarding constructors, but not on any of the non-member operators. So if +some type `B` is a literal type, then `number` is also a literal type, and you will be able to +compile-time-construct such a type from any literal that `B` is compile-time-constructible from. +However, you will not be able to perform compile-time arithmetic on such types. + +Currently the only backend type provided by the library that is also a literal type are instantiations +of `cpp_int_backend` where the Allocator parameter is type `void`, and the Checked parameter is +`boost::multiprecision::unchecked`. + +For example: + + using namespace boost::multiprecision; + + constexpr int128_t i = 0; // OK, fixed precision int128_t has no allocator. + constexpr uint1024_t j = 0xFFFFFFFF00000000uLL; // OK, fixed precision uint1024_t has no allocator. + + constexpr checked_uint128_t k = -1; // Error, checked type is not a literal type as we need runtime error checking. + constexpr cpp_int l = 2; // Error, type is not a literal as it performs memory management. + +[endsect] + +[section:rounding Rounding Rules for Conversions] + +As a general rule, all conversions between unrelated types are performed using basic arithmetic operations, therefore +conversions are either exact, or follow the same rounding rules as arithmetic for the type in question. + +The following table summarises the situation for conversions from native types: + +[table +[[Backend][Rounding Rules]] +[[__cpp_int][Conversions from integer types are exact if the target has sufficient precision, otherwise they + truncate to the first 2^MaxBits bits (modulo arithmetic). Conversions from floating point types + are truncating to the nearest integer.]] +[[__gmp_int][Conversions are performed by the GMP library except for conversion from `long double` which is truncating.]] +[[__tom_int][Conversions from floating point types are truncating, all others are performed by libtommath and are exact.]] +[[__gmp_float][Conversions are performed by the GMP library except for conversion from `long double` which should be exact + provided the target type has as much precision as a `long double`.]] +[[__mpfr_float_backend][All conversions are performed by the underlying MPFR library.]] +[[__cpp_dec_float][All conversions are performed using basic arithmetic operations and are truncating.]] +[[__gmp_rational][See __gmp_int]] +[[__cpp_rational][See __cpp_int]] +[[__tommath_rational][See __tom_int]] +] + +[endsect] + [endsect] [section:ref Reference] @@ -2886,11 +2935,11 @@ Things requested in review: * The performances of mp_number, false>respect to float and mp_number, false> and int should be given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results). -* The rounding applied when converting must be documented. * cpp_dec_float should round to nearest. -* Document why we don't use proto (compile times). * Should we provide min/max overloads for expression templates? -* Document why we don't abstract out addition/multiplication algorithms etc. +* The rounding applied when converting must be documented (Done). +* Document why we don't abstract out addition/multiplication algorithms etc. (done - FAQ) +* Document why we don't use proto (compile times) (Done). * We can reuse temporaries in multiple subtrees (temporary caching) Moved to TODO list. * Emphasise in the docs that ET's may reorder operations (done 2012/10/31). * Document what happens to small fixed precision cpp_int's (done 2012/10/31). @@ -2944,6 +2993,51 @@ Open question - what should be the default - int32_t or int64_t? (done 2012/09/ [endsect] +[section:faq FAQ] + +[variablelist +[[Why do I get compiler errors when passing a `number` to a template function?] + [Most likely you are actually passing an expression template type to the function and + template-argument-deduction deduces the "wrong" type. Try casting the arguments + involving expressions to the actual number type, or as a last resort turning off + expression template support in the number type you are using.]] +[[When is expression template support a performance gain?] + [As a general rule, expression template support adds a small runtime overhead + creating and unpacking the expression templates, but greatly reduces the number of + temporaries created. So it's most effective in improving performance when the cost + of creating a temporary is high: for example when creating a temporary involves a memory + allocation. It is least effective (and may even be a dis-optimisation) when temporaries + are cheap: for example if the number type is basically a thin wrapper around a native + arithmetic type. In addition, since the library makes extensive use of thin inline wrapper + functions, turning on compiler optimization is essential to achieving high performance.]] +[[Do expression templates reorder operations?] + [Yes they do, sometimes quite radically so, if this is a concern then they should be turned + off for the number type you are using.]] +[[I can't construct my number type from ['some other type], but the docs indicate that the conversion should be allowed, what's up?] + [Some conversions are ['explicit], that includes construction from a string, or constructing from any type + that may result in loss of precision (for example constructing an integer type from a float).]] +[[Why do I get an exception thrown (or the program crash due to an uncaught exception) when using the bitwise operators on a checked `cpp_int`?] + [Bitwise operations on negative values (or indeed any signed integer type) are unspecified by the standard. As a result + any attempt to carry out a bitwise operation on a negative checked-integer will result in a `std::range_error` being thrown.]] +[[Why do I get compiler errors when trying to use the complement operator?] + [Use of the complement operator on signed types is problematic as the result is unspecified by the standard, and is further + complicated by the fact that most extended precision integer types use a sign-magnitude representation rather than the 2's + complement one favored by most native integer types. As a result the complement operator is deliberately disabled for + checked `cpp_int`'s. Unchecked `cpp_int`'s give the same valued result as a 2's complement type would, but not the same bit-pattern.]] +[[Why can't I negate an unsigned type?] + [The unary negation operator is deliberately disabled for unsigned integer types as it's use would almost always be a programming error.]] +[[Why doesn't the library use proto?] + [A very early version of the library did use proto, but compile times became too slow + for the library to be usable. Since the library only required a tiny fraction of what + proto has to offer anyway, a lightweight expression template mechanism was used instead. + Compile times are still too slow...]] +[[Why not abstract out addition/multiplication algorithms?] + [This was deamed not to be practical: these algorithms are intimately + tied to the actual data representation used.]] +] + +[endsect] + [section:ack Acknowledgements] This library would not have happened without: From b640732abd0ebeb99ff77aa3190b0a135e77110e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 1 Nov 2012 19:01:08 +0000 Subject: [PATCH 247/256] Add additional template parameter to mpfr_float_backend to allow stack-based floats. [SVN r81135] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 19 +- .../boost_multiprecision/indexes/s04.html | 14 +- doc/html/boost_multiprecision/map/hist.html | 4 + .../tut/floats/mpfr_float.html | 23 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 20 +- include/boost/multiprecision/mpfr.hpp | 802 ++++++++++++------ test/test_arithmetic.cpp | 1 + 10 files changed, 617 insertions(+), 276 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 680560fd..dcd3d39e 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index d15a40c9..41276154 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C E G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 729668d3..bbdea96e 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,10 +13,10 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    -

    C I L M T U

    +Typedef Index
    +

    C I L M S T U

    C @@ -198,6 +198,19 @@
    +S +
    +
    +
    T
      diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index adbddd56..9d0e47c3 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
      PrevUpHome
      -
      +

      -Index

      +Index

    A B C D E F G I L M N O P R S T U Z

  • @@ -897,6 +899,14 @@
    • +

      static_mpfr_float_100

      + +
    • +
    • +

      static_mpfr_float_50

      + +
    • +
    • str

    • diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index 7c4b992f..eec38fe9 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -59,6 +59,10 @@ Refactored cpp_int_backend based on review comments with new template parameter structure. +
    • + Added additional template parameter to mpfr_float_backend + to allow stack-based allocation. +
    diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html index 40126cf1..29355351 100644 --- a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -22,7 +22,13 @@

    namespace boost{ namespace multiprecision{
     
    -template <unsigned Digits10>
    +enum mpfr_allocation_type
    +{
    +   allocate_stack,
    +   allocate_dynamic
    +};
    +
    +template <unsigned Digits10, mpfr_allocation_type AllocateType = allocate_dynamic>
     class mpfr_float_backend;
     
     typedef number<mpfr_float_backend<50> >    mpfr_float_50;
    @@ -31,6 +37,9 @@
     typedef number<mpfr_float_backend<1000> >  mpfr_float_1000;
     typedef number<mpfr_float_backend<0> >     mpfr_float;
     
    +typedef number<mpfr_float_backend<50, allocate_stack> >    static_mpfr_float_50;
    +typedef number<mpfr_float_backend<100, allocate_stack> >   static_mpfr_float_100;
    +
     }} // namespaces
     

    @@ -51,6 +60,18 @@ whose precision can be controlled via the numbers member functions.

    +

    + In addition the second template parameter lets you choose between dynamic + allocation (the default, and uses MPFR's normal allocation routines), or + stack allocation (where all the memory required for the underlying data + types is stored within mpfr_float_backend). + The latter option can result in significantly faster code, at the expense + of growing the size of mpfr_float_backend. + It can only be used at fixed precision, and should only be used for lower + digit counts. Note that we can not guarentee that using allocate_stack + won't cause any calls to mpfr's allocation routines, as mpfr may call these + inside it's own code. +

    diff --git a/doc/html/index.html b/doc/html/index.html index 3373c51d..0c8517c2 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -124,7 +124,7 @@
    [Note]
    - +

    Last revised: November 01, 2012 at 11:12:34 GMT

    Last revised: November 01, 2012 at 18:56:42 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index d2ff465f..64829ae8 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -730,7 +730,13 @@ as a valid floating point number. namespace boost{ namespace multiprecision{ - template + enum mpfr_allocation_type + { + allocate_stack, + allocate_dynamic + }; + + template class mpfr_float_backend; typedef number > mpfr_float_50; @@ -739,6 +745,9 @@ as a valid floating point number. typedef number > mpfr_float_1000; typedef number > mpfr_float; + typedef number > static_mpfr_float_50; + typedef number > static_mpfr_float_100; + }} // namespaces The `mpfr_float_backend` type is used in conjunction with `number`: It acts as a thin wrapper around the [mpfr] `mpfr_t` @@ -751,6 +760,14 @@ mpfr_float_500, mpfr_float_1000 provide arithmetic types at 50, 100, 500 and 100 respectively. The typedef mpfr_float provides a variable precision type whose precision can be controlled via the `number`s member functions. +In addition the second template parameter lets you choose between dynamic allocation (the default, +and uses MPFR's normal allocation routines), +or stack allocation (where all the memory required for the underlying data types is stored +within `mpfr_float_backend`). The latter option can result in significantly faster code, at the +expense of growing the size of `mpfr_float_backend`. It can only be used at fixed precision, and +should only be used for lower digit counts. Note that we can not guarentee that using `allocate_stack` +won't cause any calls to mpfr's allocation routines, as mpfr may call these inside it's own code. + [note This type only provides `numeric_limits` support when the precision is fixed at compile time.] As well as the usual conversions from arithmetic and string types, instances of `number >` are @@ -2897,6 +2914,7 @@ Windows Vista machine. * Added support for fused-multiply-add/subtract with GMP support. * Tweaked expression template unpacking to use fewer temporaries when the LHS also appears in the RHS. * Refactored `cpp_int_backend` based on review comments with new template parameter structure. +* Added additional template parameter to `mpfr_float_backend` to allow stack-based allocation. [h4 Pre-review history] diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index ec3085c7..7924b414 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -17,17 +17,24 @@ #include #include -namespace boost{ +namespace boost{ namespace multiprecision{ + +enum mpfr_allocation_type +{ + allocate_stack, + allocate_dynamic +}; + namespace backends{ -template +template struct mpfr_float_backend; } // namespace backends -template -struct number_category > : public mpl::int_{}; +template +struct number_category > : public mpl::int_{}; namespace backends{ @@ -35,15 +42,25 @@ namespace detail{ inline long get_default_precision() { return 50; } +template +struct mpfr_float_imp; + template -struct mpfr_float_imp +struct mpfr_float_imp { typedef mpl::list signed_types; typedef mpl::list unsigned_types; typedef mpl::list float_types; typedef long exponent_type; - mpfr_float_imp() BOOST_NOEXCEPT {} + mpfr_float_imp() + { + mpfr_init2(m_data, multiprecision::detail::digits10_2_2(digits10 ? digits10 : get_default_precision())); + } + mpfr_float_imp(unsigned prec) + { + mpfr_init2(m_data, prec); + } mpfr_float_imp(const mpfr_float_imp& o) { @@ -281,7 +298,8 @@ struct mpfr_float_imp BOOST_ASSERT(m_data[0]._mpfr_d); mpfr_neg(m_data, m_data, GMP_RNDN); } - int compare(const mpfr_float_backend& o)const BOOST_NOEXCEPT + template + int compare(const mpfr_float_backend& o)const BOOST_NOEXCEPT { BOOST_ASSERT(m_data[0]._mpfr_d && o.m_data[0]._mpfr_d); return mpfr_cmp(m_data, o.m_data); @@ -299,19 +317,19 @@ struct mpfr_float_imp template int compare(V v)const BOOST_NOEXCEPT { - mpfr_float_backend d; + mpfr_float_backend d; d = v; return compare(d); } - mpfr_t& data() BOOST_NOEXCEPT - { + mpfr_t& data() BOOST_NOEXCEPT + { BOOST_ASSERT(m_data[0]._mpfr_d); - return m_data; + return m_data; } - const mpfr_t& data()const BOOST_NOEXCEPT - { + const mpfr_t& data()const BOOST_NOEXCEPT + { BOOST_ASSERT(m_data[0]._mpfr_d); - return m_data; + return m_data; } protected: mpfr_t m_data; @@ -322,89 +340,344 @@ protected: } }; -} // namespace detail +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4127) // Conditional expression is constant +#endif template -struct mpfr_float_backend : public detail::mpfr_float_imp +struct mpfr_float_imp { - mpfr_float_backend() + typedef mpl::list signed_types; + typedef mpl::list unsigned_types; + typedef mpl::list float_types; + typedef long exponent_type; + + static const unsigned digits2 = (digits10 * 1000uL) / 301uL + ((digits10 * 1000uL) % 301 ? 2u : 1u); + static const unsigned limb_count = mpfr_custom_get_size(digits2) / sizeof(mp_limb_t); + + mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); + mpfr_custom_init(m_buffer, digits2); + mpfr_custom_init_set(m_data, MPFR_NAN_KIND, 0, digits2, m_buffer); } - mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp(o) {} + + mpfr_float_imp(const mpfr_float_imp& o) + { + mpfr_custom_init(m_buffer, digits2); + mpfr_custom_init_set(m_data, MPFR_NAN_KIND, 0, digits2, m_buffer); + mpfr_set(m_data, o.m_data, GMP_RNDN); + } + mpfr_float_imp& operator = (const mpfr_float_imp& o) BOOST_NOEXCEPT + { + mpfr_set(m_data, o.m_data, GMP_RNDN); + return *this; + } +#ifdef _MPFR_H_HAVE_INTMAX_T + mpfr_float_imp& operator = (unsigned long long i) BOOST_NOEXCEPT + { + mpfr_set_uj(m_data, i, GMP_RNDN); + return *this; + } + mpfr_float_imp& operator = (long long i) BOOST_NOEXCEPT + { + mpfr_set_sj(m_data, i, GMP_RNDN); + return *this; + } +#else + mpfr_float_imp& operator = (unsigned long long i) + { + unsigned long long mask = ((1uLL << std::numeric_limits::digits) - 1); + unsigned shift = 0; + mpfr_t t; + mp_limb_t t_limbs[limb_count]; + mpfr_custom_init(t_limbs, digits2); + mpfr_custom_init_set(t, MPFR_NAN_KIND, 0, digits2, t_limbs); + mpfr_set_ui(m_data, 0, GMP_RNDN); + while(i) + { + mpfr_set_ui(t, static_cast(i & mask), GMP_RNDN); + if(shift) + mpfr_mul_2exp(t, t, shift, GMP_RNDN); + mpfr_add(m_data, m_data, t, GMP_RNDN); + shift += std::numeric_limits::digits; + i >>= std::numeric_limits::digits; + } + return *this; + } + mpfr_float_imp& operator = (long long i) + { + BOOST_MP_USING_ABS + bool neg = i < 0; + *this = static_cast(abs(i)); + if(neg) + mpfr_neg(m_data, m_data, GMP_RNDN); + return *this; + } +#endif + mpfr_float_imp& operator = (unsigned long i) BOOST_NOEXCEPT + { + mpfr_set_ui(m_data, i, GMP_RNDN); + return *this; + } + mpfr_float_imp& operator = (long i) BOOST_NOEXCEPT + { + mpfr_set_si(m_data, i, GMP_RNDN); + return *this; + } + mpfr_float_imp& operator = (double d) BOOST_NOEXCEPT + { + mpfr_set_d(m_data, d, GMP_RNDN); + return *this; + } + mpfr_float_imp& operator = (long double a) BOOST_NOEXCEPT + { + mpfr_set_ld(m_data, a, GMP_RNDN); + return *this; + } + mpfr_float_imp& operator = (const char* s) + { + if(mpfr_set_str(m_data, s, 10, GMP_RNDN) != 0) + { + BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Unable to parse string \"") + s + std::string("\"as a valid floating point number."))); + } + return *this; + } + void swap(mpfr_float_imp& o) BOOST_NOEXCEPT + { + // We have to swap by copying: + mpfr_float_imp t(*this); + *this = o; + o = t; + } + std::string str(std::streamsize digits, std::ios_base::fmtflags f)const + { + BOOST_ASSERT(m_data[0]._mpfr_d); + + bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific; + bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed; + + std::streamsize org_digits(digits); + + if(scientific && digits) + ++digits; + + std::string result; + mp_exp_t e; + if(mpfr_inf_p(m_data)) + { + if(mpfr_sgn(m_data) < 0) + result = "-inf"; + else if(f & std::ios_base::showpos) + result = "+inf"; + else + result = "inf"; + return result; + } + if(mpfr_nan_p(m_data)) + { + result = "nan"; + return result; + } + if(mpfr_zero_p(m_data)) + { + e = 0; + result = "0"; + } + else + { + char* ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); + --e; // To match with what our formatter expects. + if(fixed && e != -1) + { + // Oops we actually need a different number of digits to what we asked for: + mpfr_free_str(ps); + digits += e + 1; + if(digits == 0) + { + // We need to get *all* the digits and then possibly round up, + // we end up with either "0" or "1" as the result. + ps = mpfr_get_str (0, &e, 10, 0, m_data, GMP_RNDN); + --e; + unsigned offset = *ps == '-' ? 1 : 0; + if(ps[offset] > '5') + { + ++e; + ps[offset] = '1'; + ps[offset + 1] = 0; + } + else if(ps[offset] == '5') + { + unsigned i = offset + 1; + bool round_up = false; + while(ps[i] != 0) + { + if(ps[i] != '0') + { + round_up = true; + break; + } + } + if(round_up) + { + ++e; + ps[offset] = '1'; + ps[offset + 1] = 0; + } + else + { + ps[offset] = '0'; + ps[offset + 1] = 0; + } + } + else + { + ps[offset] = '0'; + ps[offset + 1] = 0; + } + } + else if(digits > 0) + { + ps = mpfr_get_str (0, &e, 10, static_cast(digits), m_data, GMP_RNDN); + --e; // To match with what our formatter expects. + } + else + { + ps = mpfr_get_str (0, &e, 10, 1, m_data, GMP_RNDN); + --e; + unsigned offset = *ps == '-' ? 1 : 0; + ps[offset] = '0'; + ps[offset + 1] = 0; + } + } + result = ps ? ps : "0"; + if(ps) + mpfr_free_str(ps); + } + boost::multiprecision::detail::format_float_string(result, e, org_digits, f, 0 != mpfr_zero_p(m_data)); + return result; + } + void negate() BOOST_NOEXCEPT + { + mpfr_neg(m_data, m_data, GMP_RNDN); + } + template + int compare(const mpfr_float_backend& o)const BOOST_NOEXCEPT + { + return mpfr_cmp(m_data, o.m_data); + } + int compare(long i)const BOOST_NOEXCEPT + { + return mpfr_cmp_si(m_data, i); + } + int compare(unsigned long i)const BOOST_NOEXCEPT + { + return mpfr_cmp_ui(m_data, i); + } + template + int compare(V v)const BOOST_NOEXCEPT + { + mpfr_float_backend d; + d = v; + return compare(d); + } + mpfr_t& data() BOOST_NOEXCEPT + { + return m_data; + } + const mpfr_t& data()const BOOST_NOEXCEPT + { + return m_data; + } +protected: + mpfr_t m_data; + mp_limb_t m_buffer[limb_count]; +}; + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +} // namespace detail + +template +struct mpfr_float_backend : public detail::mpfr_float_imp +{ + mpfr_float_backend() : detail::mpfr_float_imp() {} + mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp(static_cast&&>(o)) {} + mpfr_float_backend(mpfr_float_backend&& o) : detail::mpfr_float_imp(static_cast&&>(o)) {} #endif template mpfr_float_backend(const mpfr_float_backend& val, typename enable_if_c::type* = 0) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set(this->m_data, val.data(), GMP_RNDN); } template explicit mpfr_float_backend(const mpfr_float_backend& val, typename disable_if_c::type* = 0) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set(this->m_data, val.data(), GMP_RNDN); } template mpfr_float_backend(const gmp_float& val, typename enable_if_c::type* = 0) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_f(this->m_data, val.data(), GMP_RNDN); } template mpfr_float_backend(const gmp_float& val, typename disable_if_c::type* = 0) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_f(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_int& val) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_z(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_rational& val) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_q(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const mpfr_t val) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set(this->m_data, val, GMP_RNDN); } mpfr_float_backend(const mpf_t val) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_f(this->m_data, val, GMP_RNDN); } mpfr_float_backend(const mpz_t val) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_z(this->m_data, val, GMP_RNDN); } mpfr_float_backend(const mpq_t val) + : detail::mpfr_float_imp() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); mpfr_set_q(this->m_data, val, GMP_RNDN); } mpfr_float_backend& operator=(const mpfr_float_backend& o) { - *static_cast*>(this) = static_cast const&>(o); + *static_cast*>(this) = static_cast const&>(o); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES mpfr_float_backend& operator=(mpfr_float_backend&& o) BOOST_NOEXCEPT { - *static_cast*>(this) = static_cast&&>(o); + *static_cast*>(this) = static_cast&&>(o); return *this; } #endif template mpfr_float_backend& operator=(const V& v) { - *static_cast*>(this) = v; + *static_cast*>(this) = v; return *this; } mpfr_float_backend& operator=(const mpfr_t val)BOOST_NOEXCEPT @@ -453,80 +726,78 @@ struct mpfr_float_backend : public detail::mpfr_float_imp }; template <> -struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> +struct mpfr_float_backend<0, allocate_dynamic> : public detail::mpfr_float_imp<0, allocate_dynamic> { - mpfr_float_backend() - { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); - } + mpfr_float_backend() : detail::mpfr_float_imp<0, allocate_dynamic>() {} mpfr_float_backend(const mpfr_t val) + : detail::mpfr_float_imp<0, allocate_dynamic>(mpfr_get_prec(val)) { - mpfr_init2(this->m_data, mpfr_get_prec(val)); mpfr_set(this->m_data, val, GMP_RNDN); } mpfr_float_backend(const mpf_t val) + : detail::mpfr_float_imp<0, allocate_dynamic>(mpf_get_prec(val)) { - mpfr_init2(this->m_data, mpf_get_prec(val)); mpfr_set_f(this->m_data, val, GMP_RNDN); } mpfr_float_backend(const mpz_t val) + : detail::mpfr_float_imp<0, allocate_dynamic>() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_z(this->m_data, val, GMP_RNDN); } mpfr_float_backend(const mpq_t val) + : detail::mpfr_float_imp<0, allocate_dynamic>() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_q(this->m_data, val, GMP_RNDN); } - mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp<0>(o) {} + mpfr_float_backend(const mpfr_float_backend& o) : detail::mpfr_float_imp<0, allocate_dynamic>(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - mpfr_float_backend(mpfr_float_backend&& o) BOOST_NOEXCEPT : detail::mpfr_float_imp<0>(static_cast&&>(o)) {} + mpfr_float_backend(mpfr_float_backend&& o) BOOST_NOEXCEPT : detail::mpfr_float_imp<0, allocate_dynamic>(static_cast&&>(o)) {} #endif - mpfr_float_backend(const mpfr_float_backend& o, unsigned digits10) + mpfr_float_backend(const mpfr_float_backend& o, unsigned digits10) + : detail::mpfr_float_imp<0, allocate_dynamic>(digits10) { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(digits10)); *this = o; } template mpfr_float_backend(const mpfr_float_backend& val) + : detail::mpfr_float_imp<0, allocate_dynamic>(mpfr_get_prec(val.data())) { - mpfr_init2(this->m_data, mpfr_get_prec(val.data())); mpfr_set(this->m_data, val.data(), GMP_RNDN); } template mpfr_float_backend(const gmp_float& val) + : detail::mpfr_float_imp<0, allocate_dynamic>(mpf_get_prec(val.data())) { - mpfr_init2(this->m_data, mpf_get_prec(val.data())); mpfr_set_f(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_int& val) + : detail::mpfr_float_imp<0, allocate_dynamic>() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_z(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend(const gmp_rational& val) + : detail::mpfr_float_imp<0, allocate_dynamic>() { - mpfr_init2(this->m_data, multiprecision::detail::digits10_2_2(get_default_precision())); mpfr_set_q(this->m_data, val.data(), GMP_RNDN); } mpfr_float_backend& operator=(const mpfr_float_backend& o) { - *static_cast*>(this) = static_cast const&>(o); + mpfr_set_prec(this->m_data, mpfr_get_prec(o.data())); + mpfr_set(this->m_data, o.data(), GMP_RNDN); return *this; } #ifndef BOOST_NO_RVALUE_REFERENCES mpfr_float_backend& operator=(mpfr_float_backend&& o) BOOST_NOEXCEPT { - *static_cast*>(this) = static_cast &&>(o); + *static_cast*>(this) = static_cast &&>(o); return *this; } #endif template mpfr_float_backend& operator=(const V& v) { - *static_cast*>(this) = v; + *static_cast*>(this) = v; return *this; } mpfr_float_backend& operator=(const mpfr_t val) BOOST_NOEXCEPT @@ -593,87 +864,87 @@ struct mpfr_float_backend<0> : public detail::mpfr_float_imp<0> } }; -template -inline typename enable_if, bool>::type eval_eq(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +template +inline typename enable_if, bool>::type eval_eq(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) == 0; } -template -inline typename enable_if, bool>::type eval_lt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +template +inline typename enable_if, bool>::type eval_lt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) < 0; } -template -inline typename enable_if, bool>::type eval_gt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT +template +inline typename enable_if, bool>::type eval_gt(const mpfr_float_backend& a, const T& b) BOOST_NOEXCEPT { return a.compare(b) > 0; } -template -inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_add(result.data(), result.data(), o.data(), GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_sub(result.data(), result.data(), o.data(), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& result, const mpfr_float_backend& o) BOOST_NOEXCEPT { mpfr_mul(result.data(), result.data(), o.data(), GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& result, const mpfr_float_backend& o) +template +inline void eval_divide(mpfr_float_backend& result, const mpfr_float_backend& o) { mpfr_div(result.data(), result.data(), o.data(), GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT { mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT { mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& result, unsigned long i) BOOST_NOEXCEPT { mpfr_mul_ui(result.data(), result.data(), i, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& result, unsigned long i) +template +inline void eval_divide(mpfr_float_backend& result, unsigned long i) { mpfr_div_ui(result.data(), result.data(), i, GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& result, long i) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& result, long i) BOOST_NOEXCEPT { if(i > 0) mpfr_add_ui(result.data(), result.data(), i, GMP_RNDN); else mpfr_sub_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& result, long i) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& result, long i) BOOST_NOEXCEPT { if(i > 0) mpfr_sub_ui(result.data(), result.data(), i, GMP_RNDN); else mpfr_add_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& result, long i) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& result, long i) BOOST_NOEXCEPT { mpfr_mul_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) mpfr_neg(result.data(), result.data(), GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& result, long i) +template +inline void eval_divide(mpfr_float_backend& result, long i) { mpfr_div_ui(result.data(), result.data(), std::abs(i), GMP_RNDN); if(i < 0) @@ -682,31 +953,31 @@ inline void eval_divide(mpfr_float_backend& result, long i) // // Specialised 3 arg versions of the basic operators: // -template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_add(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) mpfr_sub_ui(a.data(), x.data(), -y, GMP_RNDN); else mpfr_add_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -716,31 +987,31 @@ inline void eval_add(mpfr_float_backend& a, long x, const mpfr_float_backend else mpfr_add_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_sub(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) mpfr_add_ui(a.data(), x.data(), -y, GMP_RNDN); else mpfr_sub_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } -template -inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -751,18 +1022,18 @@ inline void eval_subtract(mpfr_float_backend& a, long x, const mpfr_float_ba mpfr_ui_sub(a.data(), x, y.data(), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_mul(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) BOOST_NOEXCEPT { mpfr_mul_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend& x, long y) BOOST_NOEXCEPT { if(y < 0) { @@ -772,13 +1043,13 @@ inline void eval_multiply(mpfr_float_backend& a, const mpfr_float_backend -inline void eval_multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT +template +inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_backend& y) BOOST_NOEXCEPT { if(x < 0) { @@ -789,18 +1060,18 @@ inline void eval_multiply(mpfr_float_backend& a, long x, const mpfr_float_ba mpfr_mul_ui(a.data(), y.data(), x, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) +template +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, const mpfr_float_backend& y) { mpfr_div(a.data(), x.data(), y.data(), GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) +template +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, unsigned long y) { mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, long y) +template +inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& x, long y) { if(y < 0) { @@ -810,13 +1081,13 @@ inline void eval_divide(mpfr_float_backend& a, const mpfr_float_backend& else mpfr_div_ui(a.data(), x.data(), y, GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) +template +inline void eval_divide(mpfr_float_backend& a, unsigned long x, const mpfr_float_backend& y) { mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); } -template -inline void eval_divide(mpfr_float_backend& a, long x, const mpfr_float_backend& y) +template +inline void eval_divide(mpfr_float_backend& a, long x, const mpfr_float_backend& y) { if(x < 0) { @@ -827,19 +1098,19 @@ inline void eval_divide(mpfr_float_backend& a, long x, const mpfr_float_back mpfr_ui_div(a.data(), x, y.data(), GMP_RNDN); } -template -inline bool eval_is_zero(const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline bool eval_is_zero(const mpfr_float_backend& val) BOOST_NOEXCEPT { return 0 != mpfr_zero_p(val.data()); } -template -inline int eval_get_sign(const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline int eval_get_sign(const mpfr_float_backend& val) BOOST_NOEXCEPT { return mpfr_sgn(val.data()); } -template -inline void eval_convert_to(unsigned long* result, const mpfr_float_backend& val) +template +inline void eval_convert_to(unsigned long* result, const mpfr_float_backend& val) { if(mpfr_nan_p(val.data())) { @@ -847,8 +1118,8 @@ inline void eval_convert_to(unsigned long* result, const mpfr_float_backend -inline void eval_convert_to(long* result, const mpfr_float_backend& val) +template +inline void eval_convert_to(long* result, const mpfr_float_backend& val) { if(mpfr_nan_p(val.data())) { @@ -857,8 +1128,8 @@ inline void eval_convert_to(long* result, const mpfr_float_backend& va *result = mpfr_get_si(val.data(), GMP_RNDN); } #ifdef _MPFR_H_HAVE_INTMAX_T -template -inline void eval_convert_to(unsigned long long* result, const mpfr_float_backend& val) +template +inline void eval_convert_to(unsigned long long* result, const mpfr_float_backend& val) { if(mpfr_nan_p(val.data())) { @@ -866,8 +1137,8 @@ inline void eval_convert_to(unsigned long long* result, const mpfr_float_backend } *result = mpfr_get_uj(val.data(), GMP_RNDN); } -template -inline void eval_convert_to(long long* result, const mpfr_float_backend& val) +template +inline void eval_convert_to(long long* result, const mpfr_float_backend& val) { if(mpfr_nan_p(val.data())) { @@ -876,13 +1147,13 @@ inline void eval_convert_to(long long* result, const mpfr_float_backend -inline void eval_convert_to(double* result, const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline void eval_convert_to(double* result, const mpfr_float_backend& val) BOOST_NOEXCEPT { *result = mpfr_get_d(val.data(), GMP_RNDN); } -template -inline void eval_convert_to(long double* result, const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline void eval_convert_to(long double* result, const mpfr_float_backend& val) BOOST_NOEXCEPT { *result = mpfr_get_ld(val.data(), GMP_RNDN); } @@ -890,45 +1161,45 @@ inline void eval_convert_to(long double* result, const mpfr_float_backend -inline void eval_sqrt(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline void eval_sqrt(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_sqrt(result.data(), val.data(), GMP_RNDN); } -template -inline void eval_abs(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline void eval_abs(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_abs(result.data(), val.data(), GMP_RNDN); } -template -inline void eval_fabs(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline void eval_fabs(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_abs(result.data(), val.data(), GMP_RNDN); } -template -inline void eval_ceil(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline void eval_ceil(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_ceil(result.data(), val.data()); } -template -inline void eval_floor(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline void eval_floor(mpfr_float_backend& result, const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_floor(result.data(), val.data()); } -template -inline void eval_trunc(mpfr_float_backend& result, const mpfr_float_backend& val) +template +inline void eval_trunc(mpfr_float_backend& result, const mpfr_float_backend& val) { if(0 == mpfr_number_p(val.data())) { - result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number >(val), 0, boost::math::policies::policy<>()).backend(); + result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number >(val), 0, boost::math::policies::policy<>()).backend(); return; } mpfr_trunc(result.data(), val.data()); } -template -inline void eval_ldexp(mpfr_float_backend& result, const mpfr_float_backend& val, long e) BOOST_NOEXCEPT +template +inline void eval_ldexp(mpfr_float_backend& result, const mpfr_float_backend& val, long e) BOOST_NOEXCEPT { if(e > 0) mpfr_mul_2exp(result.data(), val.data(), e, GMP_RNDN); @@ -937,29 +1208,29 @@ inline void eval_ldexp(mpfr_float_backend& result, const mpfr_float_ba else result = val; } -template -inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, int* e) BOOST_NOEXCEPT +template +inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, int* e) BOOST_NOEXCEPT { long v; mpfr_get_d_2exp(&v, val.data(), GMP_RNDN); *e = v; eval_ldexp(result, val, -v); } -template -inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, long* e) BOOST_NOEXCEPT +template +inline void eval_frexp(mpfr_float_backend& result, const mpfr_float_backend& val, long* e) BOOST_NOEXCEPT { mpfr_get_d_2exp(e, val.data(), GMP_RNDN); return eval_ldexp(result, val, -*e); } -template -inline int eval_fpclassify(const mpfr_float_backend& val) BOOST_NOEXCEPT +template +inline int eval_fpclassify(const mpfr_float_backend& val) BOOST_NOEXCEPT { return mpfr_inf_p(val.data()) ? FP_INFINITE : mpfr_nan_p(val.data()) ? FP_NAN : mpfr_zero_p(val.data()) ? FP_ZERO : FP_NORMAL; } -template -inline void eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const mpfr_float_backend& e) BOOST_NOEXCEPT +template +inline void eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const mpfr_float_backend& e) BOOST_NOEXCEPT { mpfr_pow(result.data(), b.data(), e.data(), GMP_RNDN); } @@ -970,99 +1241,99 @@ inline void eval_pow(mpfr_float_backend& result, const mpfr_float_back // certain other enable_if usages are defined first. It's a capricious // and rather annoying compiler bug in other words.... // -# define BOOST_MP_ENABLE_IF_WORKAROUND (Digits10 || !Digits10) && +# define BOOST_MP_ENABLE_IF_WORKAROUND (Digits10 || !Digits10) && #else #define BOOST_MP_ENABLE_IF_WORKAROUND #endif -template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) BOOST_NOEXCEPT +template +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) BOOST_NOEXCEPT { mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN); } -template -inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) BOOST_NOEXCEPT +template +inline typename enable_if, mpl::bool_ > >::type eval_pow(mpfr_float_backend& result, const mpfr_float_backend& b, const Integer& e) BOOST_NOEXCEPT { mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN); } #undef BOOST_MP_ENABLE_IF_WORKAROUND -template -inline void eval_exp(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_exp(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_exp(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_log(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_log(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_log(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_log10(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_log10(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_log10(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_sin(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_sin(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_sin(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_cos(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_cos(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_cos(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_tan(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_tan(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_tan(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_asin(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_asin(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_asin(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_acos(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_acos(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_acos(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_atan(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_atan(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_atan(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_atan2(mpfr_float_backend& result, const mpfr_float_backend& arg1, const mpfr_float_backend& arg2) BOOST_NOEXCEPT +template +inline void eval_atan2(mpfr_float_backend& result, const mpfr_float_backend& arg1, const mpfr_float_backend& arg2) BOOST_NOEXCEPT { mpfr_atan2(result.data(), arg1.data(), arg2.data(), GMP_RNDN); } -template -inline void eval_sinh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_sinh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_sinh(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_cosh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_cosh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_cosh(result.data(), arg.data(), GMP_RNDN); } -template -inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT +template +inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_backend& arg) BOOST_NOEXCEPT { mpfr_tanh(result.data(), arg.data(), GMP_RNDN); } @@ -1073,8 +1344,8 @@ inline void eval_tanh(mpfr_float_backend& result, const mpfr_float_bac namespace detail{ -template -struct is_explicitly_convertible, backends::mpfr_float_backend > : public mpl::true_ {}; +template +struct is_explicitly_convertible, backends::mpfr_float_backend > : public mpl::true_ {}; } @@ -1091,6 +1362,9 @@ typedef number > mpfr_float_500; typedef number > mpfr_float_1000; typedef number > mpfr_float; +typedef number > static_mpfr_float_50; +typedef number > static_mpfr_float_100; + } // namespace multiprecision namespace math{ @@ -1117,14 +1391,14 @@ namespace std{ // // numeric_limits [partial] specializations for the types declared in this header: // -template -class numeric_limits, ExpressionTemplates> > +template +class numeric_limits, ExpressionTemplates> > { - typedef boost::multiprecision::number, ExpressionTemplates> number_type; + typedef boost::multiprecision::number, ExpressionTemplates> number_type; public: BOOST_STATIC_CONSTEXPR bool is_specialized = true; BOOST_STATIC_CONSTEXPR number_type (min)() BOOST_NOEXCEPT - { + { initializer.do_nothing(); static std::pair value; if(!value.first) @@ -1136,7 +1410,7 @@ public: return value.second; } BOOST_STATIC_CONSTEXPR number_type (max)() BOOST_NOEXCEPT - { + { initializer.do_nothing(); static std::pair value; if(!value.first) @@ -1159,8 +1433,8 @@ public: BOOST_STATIC_CONSTEXPR bool is_integer = false; BOOST_STATIC_CONSTEXPR bool is_exact = false; BOOST_STATIC_CONSTEXPR int radix = 2; - BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT - { + BOOST_STATIC_CONSTEXPR number_type epsilon() BOOST_NOEXCEPT + { initializer.do_nothing(); static std::pair value; if(!value.first) @@ -1172,8 +1446,8 @@ public: return value.second; } // What value should this be???? - BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT - { + BOOST_STATIC_CONSTEXPR number_type round_error() BOOST_NOEXCEPT + { // returns epsilon/2 initializer.do_nothing(); static std::pair value; @@ -1194,8 +1468,8 @@ public: BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false; BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent; BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false; - BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT - { + BOOST_STATIC_CONSTEXPR number_type infinity() BOOST_NOEXCEPT + { // returns epsilon/2 initializer.do_nothing(); static std::pair value; @@ -1207,8 +1481,8 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT - { + BOOST_STATIC_CONSTEXPR number_type quiet_NaN() BOOST_NOEXCEPT + { // returns epsilon/2 initializer.do_nothing(); static std::pair value; @@ -1220,9 +1494,9 @@ public: } return value.second; } - BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT - { - return number_type(0); + BOOST_STATIC_CONSTEXPR number_type signaling_NaN() BOOST_NOEXCEPT + { + return number_type(0); } BOOST_STATIC_CONSTEXPR number_type denorm_min() BOOST_NOEXCEPT { return number_type(0); } BOOST_STATIC_CONSTEXPR bool is_iec559 = false; @@ -1237,72 +1511,72 @@ private: { data_initializer() { - std::numeric_limits > >::epsilon(); - std::numeric_limits > >::round_error(); - (std::numeric_limits > >::min)(); - (std::numeric_limits > >::max)(); - std::numeric_limits > >::infinity(); - std::numeric_limits > >::quiet_NaN(); + std::numeric_limits > >::epsilon(); + std::numeric_limits > >::round_error(); + (std::numeric_limits > >::min)(); + (std::numeric_limits > >::max)(); + std::numeric_limits > >::infinity(); + std::numeric_limits > >::quiet_NaN(); } void do_nothing()const{} }; static const data_initializer initializer; }; -template -const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; +template +const typename numeric_limits, ExpressionTemplates> >::data_initializer numeric_limits, ExpressionTemplates> >::initializer; #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; -template -BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; -template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent; -template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent10; -template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent; -template -BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent10; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; -template -BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; -template -BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; -template -BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::digits10; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::max_digits10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_signed; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_integer; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_exact; +template +BOOST_CONSTEXPR_OR_CONST int numeric_limits, ExpressionTemplates> >::radix; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::min_exponent10; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent; +template +BOOST_CONSTEXPR_OR_CONST long numeric_limits, ExpressionTemplates> >::max_exponent10; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_infinity; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_quiet_NaN; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_signaling_NaN; +template +BOOST_CONSTEXPR_OR_CONST float_denorm_style numeric_limits, ExpressionTemplates> >::has_denorm; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::has_denorm_loss; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_iec559; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_bounded; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::is_modulo; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::traps; +template +BOOST_CONSTEXPR_OR_CONST bool numeric_limits, ExpressionTemplates> >::tinyness_before; +template +BOOST_CONSTEXPR_OR_CONST float_round_style numeric_limits, ExpressionTemplates> >::round_style; #endif -template +template class numeric_limits, ExpressionTemplates> > { typedef boost::multiprecision::number, ExpressionTemplates> number_type; diff --git a/test/test_arithmetic.cpp b/test/test_arithmetic.cpp index 32f5a9d0..dd97caf4 100644 --- a/test/test_arithmetic.cpp +++ b/test/test_arithmetic.cpp @@ -1839,6 +1839,7 @@ int main() #endif #ifdef TEST_MPFR_50 test(); + test(); #endif #ifdef TEST_TOMMATH test(); From 3080df73d9ad6dbb2783b127e3a4dcfbaf4e3df3 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 2 Nov 2012 13:07:39 +0000 Subject: [PATCH 248/256] Update MPFR docs with performance comparison. [SVN r81146] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- .../tut/floats/mpfr_float.html | 81 ++++++++++++++++++- doc/html/index.html | 2 +- doc/multiprecision.qbk | 10 +++ performance/sf_performance.cpp | 6 +- 8 files changed, 104 insertions(+), 11 deletions(-) diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index dcd3d39e..dd045fea 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index
  • A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 41276154..9d2ed9e1 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C E G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index bbdea96e..c7a71b66 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M S T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 9d0e47c3..a13e6c88 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    diff --git a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html index 29355351..2bee41f5 100644 --- a/doc/html/boost_multiprecision/tut/floats/mpfr_float.html +++ b/doc/html/boost_multiprecision/tut/floats/mpfr_float.html @@ -70,8 +70,81 @@ It can only be used at fixed precision, and should only be used for lower digit counts. Note that we can not guarentee that using allocate_stack won't cause any calls to mpfr's allocation routines, as mpfr may call these - inside it's own code. + inside it's own code. The following table gives an idea of the performance + tradeoff's at 50 decimal digits precision[2]:

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Type +

    +
    +

    + Bessel function evaluation, relative times +

    +
    +

    + number<mpfr_float_backend<50, allocate_static>, + et_on> +

    +
    +

    + 1.0 (5.5s) +

    +
    +

    + number<mpfr_float_backend<50, allocate_static>, + et_off> +

    +
    +

    + 1.05 (5.8s) +

    +
    +

    + number<mpfr_float_backend<50, allocate_dynamic>, + et_on> +

    +
    +

    + 1.05 (5.8s) +

    +
    +

    + number<mpfr_float_backend<50, allocate_dynamic>, + et_off> +

    +
    +

    + 1.16 (6.4s) +

    +
    @@ -176,6 +249,12 @@

    +
    +

    +

    [2] + Compiled with VC++10 and /Ox, with MPFR-3.0.0 and MPIR-2.3.0 +

    +
    [Note]
    diff --git a/doc/html/index.html b/doc/html/index.html index 0c8517c2..a919dfc2 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -124,7 +124,7 @@
    - +

    Last revised: November 01, 2012 at 18:56:42 GMT

    Last revised: November 02, 2012 at 13:02:30 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 64829ae8..b23a001a 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -767,6 +767,16 @@ within `mpfr_float_backend`). The latter option can result in significantly fas expense of growing the size of `mpfr_float_backend`. It can only be used at fixed precision, and should only be used for lower digit counts. Note that we can not guarentee that using `allocate_stack` won't cause any calls to mpfr's allocation routines, as mpfr may call these inside it's own code. +The following table gives an idea of the performance tradeoff's at 50 decimal digits +precision[footnote Compiled with VC++10 and /Ox, with MPFR-3.0.0 and MPIR-2.3.0]: + +[table +[[Type][Bessel function evaluation, relative times]] +[[`number, et_on>`][1.0 (5.5s)]] +[[`number, et_off>`][1.05 (5.8s)]] +[[`number, et_on>`][1.05 (5.8s)]] +[[`number, et_off>`][1.16 (6.4s)]] +] [note This type only provides `numeric_limits` support when the precision is fixed at compile time.] diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 08c2e726..11c60ac6 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -282,10 +282,14 @@ int main() #ifdef TEST_MPFR #if MPFR_VERSION, 1); - time_proc("mpfr_float_50 (no expression templates", test_bessel, et_off> >, 1); + time_proc("mpfr_float_50 (no expression templates)", test_bessel, et_off> >, 1); + time_proc("static_mpfr_float_50", test_bessel, et_on> >, 1); + time_proc("static_mpfr_float_50 (no expression templates)", test_bessel, et_off> >, 1); #else time_proc("mpfr_float_50", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); time_proc("mpfr_float_50 (no expression templates", test_bessel, et_off> >, mpfr_buildopt_tls_p() ? 3 : 1); + time_proc("static_mpfr_float_50", test_bessel, et_on> >, mpfr_buildopt_tls_p() ? 3 : 1); + time_proc("static_mpfr_float_50 (no expression templates)", test_bessel, et_off> >, mpfr_buildopt_tls_p() ? 3 : 1); #endif #endif #ifdef TEST_MPF From 788449ffa564f27ca5a9eea0a99561a224aaa923 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 2 Nov 2012 19:13:50 +0000 Subject: [PATCH 249/256] Add non-member functions for mixed precision arithmetic + tests for same. Fix a couple of bugs discovered along the way. [SVN r81151] --- .../boost/multiprecision/cpp_dec_float.hpp | 6 +- include/boost/multiprecision/cpp_int.hpp | 4 +- .../multiprecision/detail/default_ops.hpp | 74 ++++++++++++++-- test/Jamfile.v2 | 11 ++- test/test_mixed_cpp_int.cpp | 85 +++++++++++++++++++ test/test_mixed_float.cpp | 57 +++++++++++++ 6 files changed, 225 insertions(+), 12 deletions(-) create mode 100644 test/test_mixed_cpp_int.cpp create mode 100644 test/test_mixed_float.cpp diff --git a/include/boost/multiprecision/cpp_dec_float.hpp b/include/boost/multiprecision/cpp_dec_float.hpp index e7264d17..3e31b257 100644 --- a/include/boost/multiprecision/cpp_dec_float.hpp +++ b/include/boost/multiprecision/cpp_dec_float.hpp @@ -376,8 +376,10 @@ public: exp = f.exp; neg = f.neg; fpclass = static_cast(static_cast(f.fpclass)); - std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin()); - precision((std::min)(f.prec_elem, prec_elem)); + unsigned elems = (std::min)(f.prec_elem, cpp_dec_float_elem_number); + std::copy(f.data.begin(), f.data.begin() + elems, data.begin()); + std::fill(data.begin() + elems, data.end(), 0); + prec_elem = cpp_dec_float_elem_number; return *this; } cpp_dec_float& operator= (long long v) BOOST_NOEXCEPT diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 4f84e881..8401be6c 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -690,7 +690,7 @@ protected: BOOST_THROW_EXCEPTION(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent.")); } template - void check_in_range(T val, const mpl::int_&){} + void check_in_range(T, const mpl::int_&){} template void check_in_range(T val) @@ -817,7 +817,7 @@ protected: BOOST_THROW_EXCEPTION(std::range_error("The argument to an unsigned cpp_int constructor was negative.")); } template - BOOST_FORCEINLINE void check_in_range(T val, const mpl::int_&, const mpl::bool_&){} + BOOST_FORCEINLINE void check_in_range(T, const mpl::int_&, const mpl::bool_&){} template BOOST_FORCEINLINE void check_in_range(T val) diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 71ef9844..88c762f2 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -253,7 +253,7 @@ template inline void eval_add_default(T& t, const U& u, const V& v) { t = u; - eval_add(t, u); + eval_add(t, v); } template inline void eval_add(T& t, const U& u, const V& v) @@ -358,7 +358,7 @@ template inline void eval_multiply_default(T& t, const U& u, const V& v) { t = u; - eval_multiply(t, u); + eval_multiply(t, v); } template inline void eval_multiply(T& t, const U& u, const V& v) @@ -457,7 +457,7 @@ template inline void eval_divide_default(T& t, const U& u, const V& v) { t = u; - eval_divide(t, u); + eval_divide(t, v); } template inline void eval_divide(T& t, const U& u, const V& v) @@ -515,7 +515,7 @@ template inline void eval_modulus_default(T& t, const U& u, const V& v) { t = u; - eval_modulus(t, u); + eval_modulus(t, v); } template inline void eval_modulus(T& t, const U& u, const V& v) @@ -565,7 +565,7 @@ template inline void eval_bitwise_and_default(T& t, const U& u, const V& v) { t = u; - eval_bitwise_and(t, u); + eval_bitwise_and(t, v); } template inline void eval_bitwise_and(T& t, const U& u, const V& v) @@ -615,7 +615,7 @@ template inline void eval_bitwise_or_default(T& t, const U& u, const V& v) { t = u; - eval_bitwise_or(t, u); + eval_bitwise_or(t, v); } template inline void eval_bitwise_or(T& t, const U& u, const V& v) @@ -665,7 +665,7 @@ template inline void eval_bitwise_xor_default(T& t, const U& u, const V& v) { t = u; - eval_bitwise_xor(t, u); + eval_bitwise_xor(t, v); } template inline void eval_bitwise_xor(T& t, const U& u, const V& v) @@ -1108,6 +1108,66 @@ inline bool isnormal BOOST_PREVENT_MACRO_SUBSTITUTION(const multiprecision::deta } // namespace math namespace multiprecision{ +template +inline number& add(number& result, const number& a, const number& b) +{ + BOOST_STATIC_ASSERT_MSG((is_convertible::value), "No conversion to the target of a mixed precision addition exists"); + BOOST_STATIC_ASSERT_MSG((is_convertible::value), "No conversion to the target of a mixed precision addition exists"); + using default_ops::eval_add; + eval_add(result.backend(), a.backend(), b.backend()); + return result; +} + +template +inline number& subtract(number& result, const number& a, const number& b) +{ + BOOST_STATIC_ASSERT_MSG((is_convertible::value), "No conversion to the target of a mixed precision addition exists"); + BOOST_STATIC_ASSERT_MSG((is_convertible::value), "No conversion to the target of a mixed precision addition exists"); + using default_ops::eval_subtract; + eval_subtract(result.backend(), a.backend(), b.backend()); + return result; +} + +template +inline number& multiply(number& result, const number& a, const number& b) +{ + BOOST_STATIC_ASSERT_MSG((is_convertible::value), "No conversion to the target of a mixed precision addition exists"); + BOOST_STATIC_ASSERT_MSG((is_convertible::value), "No conversion to the target of a mixed precision addition exists"); + using default_ops::eval_multiply; + eval_multiply(result.backend(), a.backend(), b.backend()); + return result; +} + +template +inline typename enable_if_c::value, number&>::type + add(number& result, const I& a, const I& b) +{ + using default_ops::eval_add; + typedef typename detail::canonical::type canonical_type; + eval_add(result.backend(), static_cast(a), static_cast(b)); + return result; +} + +template +inline typename enable_if_c::value, number&>::type + subtract(number& result, const I& a, const I& b) +{ + using default_ops::eval_subtract; + typedef typename detail::canonical::type canonical_type; + eval_subtract(result.backend(), static_cast(a), static_cast(b)); + return result; +} + +template +inline typename enable_if_c::value, number&>::type + multiply(number& result, const I& a, const I& b) +{ + using default_ops::eval_multiply; + typedef typename detail::canonical::type canonical_type; + eval_multiply(result.backend(), static_cast(a), static_cast(b)); + return result; +} + template inline typename detail::expression::result_type trunc(const detail::expression& v, const Policy& pol) { diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 08cf87c7..5178e124 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -820,7 +820,16 @@ run ../example/tommath_snips.cpp $(TOMMATH) : # requirements [ check-target-builds ../config//has_tommath : : no ] ; run ../example/floating_point_examples.cpp : : : gcc:-std=c++0x ; -run test_cpp_int_conv.cpp ; +run test_cpp_int_conv.cpp; + +run test_mixed_cpp_int.cpp ; +run test_mixed_float.cpp + : # command line + : # input files + : # requirements + [ check-target-builds ../config//has_gmp : TEST_GMP gmp : ] + [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr gmp : ] ; + compile include_test/mpfr_include_test.cpp : # requirements diff --git a/test/test_mixed_cpp_int.cpp b/test/test_mixed_cpp_int.cpp new file mode 100644 index 00000000..ff47ac3a --- /dev/null +++ b/test/test_mixed_cpp_int.cpp @@ -0,0 +1,85 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +// +// Compare arithmetic results using fixed_int to GMP results. +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include "test.hpp" + +template +void test() +{ + using namespace boost::multiprecision; + typedef Number test_type; + + test_type h = (std::numeric_limits::max)(); + test_type l = (std::numeric_limits::max)(); + BigNumber r; + + add(r, h, h); + BOOST_CHECK_EQUAL(r, cpp_int(h) + cpp_int(h)); + + multiply(r, h, h); + BOOST_CHECK_EQUAL(r, cpp_int(h) * cpp_int(h)); + + if(std::numeric_limits::is_signed) + { + subtract(r, l, h); + BOOST_CHECK_EQUAL(r, cpp_int(l) - cpp_int(h)); + subtract(r, h, l); + BOOST_CHECK_EQUAL(r, cpp_int(h) - cpp_int(l)); + multiply(r, l, l); + BOOST_CHECK_EQUAL(r, cpp_int(l) * cpp_int(l)); + } + + // + // Try again with integer types as the source: + // + static const unsigned max_digits = std::numeric_limits::is_signed ? std::numeric_limits::digits : std::numeric_limits::digits; + static const unsigned require_digits = std::numeric_limits::digits <= 2 * max_digits ? std::numeric_limits::digits / 2 : max_digits; + typedef typename boost::mpl::if_c::is_signed, typename boost::int_t::least, typename boost::uint_t::least>::type i_type; + + i_type ih = (std::numeric_limits::max)(); + i_type il = (std::numeric_limits::max)(); + + add(r, ih, ih); + BOOST_CHECK_EQUAL(r, cpp_int(ih) + cpp_int(ih)); + + multiply(r, ih, ih); + BOOST_CHECK_EQUAL(r, cpp_int(ih) * cpp_int(ih)); + + if(std::numeric_limits::is_signed) + { + subtract(r, il, ih); + BOOST_CHECK_EQUAL(r, cpp_int(il) - cpp_int(ih)); + subtract(r, ih, il); + BOOST_CHECK_EQUAL(r, cpp_int(ih) - cpp_int(il)); + multiply(r, il, il); + BOOST_CHECK_EQUAL(r, cpp_int(il) * cpp_int(il)); + } +} + +int main() +{ + using namespace boost::multiprecision; + + test(); + test(); + test, et_off>, checked_int512_t>(); + + test(); + test(); + test, et_off>, checked_uint512_t>(); + return boost::report_errors(); +} + + + diff --git a/test/test_mixed_float.cpp b/test/test_mixed_float.cpp new file mode 100644 index 00000000..2b5aa6ff --- /dev/null +++ b/test/test_mixed_float.cpp @@ -0,0 +1,57 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +// +// Compare arithmetic results using fixed_int to GMP results. +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#ifdef TEST_GMP +#include +#endif +#ifdef TEST_MPFR +#include +#endif +#include +#include "test.hpp" + +template +void test() +{ + using namespace boost::multiprecision; + typedef Number test_type; + + test_type a = 1; + a /= 3; + test_type b = -a; + + BigNumber r; + BOOST_CHECK_EQUAL(add(r, a, a), BigNumber(a) + BigNumber(a)); + BOOST_CHECK_EQUAL(subtract(r, a, b), BigNumber(a) - BigNumber(b)); + BOOST_CHECK_EQUAL(subtract(r, b, a), BigNumber(b) - BigNumber(a)); + BOOST_CHECK_EQUAL(multiply(r, a, a), BigNumber(a) * BigNumber(a)); +} + +int main() +{ + using namespace boost::multiprecision; + + test(); + +#ifdef TEST_GMP + test(); +#endif +#ifdef TEST_MPFR + test(); +#endif + + return boost::report_errors(); +} + + + From da40611f5796e10d32ad4c0e1b4e8ed55dc80476 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 3 Nov 2012 18:27:11 +0000 Subject: [PATCH 250/256] Fix mpfr_float_backend interconversions. Update docs and regenerate. [SVN r81163] --- .../boost_multiprecision/indexes/s01.html | 32 +++- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 42 ++++- doc/html/boost_multiprecision/map/hist.html | 4 + doc/html/boost_multiprecision/ref.html | 6 +- doc/html/boost_multiprecision/ref/number.html | 50 +++++- doc/html/boost_multiprecision/tut.html | 1 + doc/html/boost_multiprecision/tut/mixed.html | 169 ++++++++++++++++++ .../boost_multiprecision/tut/rounding.html | 6 +- doc/html/index.html | 3 +- doc/multiprecision.qbk | 103 +++++++++++ example/mixed_integer_arithmetic.cpp | 58 ++++++ include/boost/multiprecision/mpfr.hpp | 12 +- 14 files changed, 465 insertions(+), 29 deletions(-) create mode 100644 doc/html/boost_multiprecision/tut/mixed.html create mode 100644 example/mixed_integer_arithmetic.cpp diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index dd045fea..95db893b 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    @@ -27,6 +27,14 @@
  • +

    add

    + +
  • +
  • assign

  • @@ -403,13 +411,22 @@
    M
    -
    P
    @@ -449,6 +466,13 @@
  • +

    subtract

    + +
  • +
  • swap

  • diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 9d2ed9e1..74da4b03 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C E G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index c7a71b66..0aea103d 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M S T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index a13e6c88..77ea931e 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    @@ -26,6 +26,14 @@
  • +

    add

    + +
  • +
  • assign

  • @@ -661,6 +669,14 @@
  • +

    Mixed Precision Arithmetic

    + +
  • +
  • mpfr_float

  • +
  • +

    multiply

    + +
  • N @@ -757,6 +780,7 @@

    number

    @@ -911,6 +937,13 @@
  • +

    subtract

    + +
  • +
  • swap

  • @@ -921,7 +954,10 @@
    • TODO

      - +
    • tommath_int

      diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index eec38fe9..8a324bdd 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -63,6 +63,10 @@ Added additional template parameter to mpfr_float_backend to allow stack-based allocation.
    • +
    • + Added section on mixed precision arithmetic, and added support for operations + yielding a higher precision result than either of the arguments. +
    diff --git a/doc/html/boost_multiprecision/ref.html b/doc/html/boost_multiprecision/ref.html index a77e8169..c3d58d48 100644 --- a/doc/html/boost_multiprecision/ref.html +++ b/doc/html/boost_multiprecision/ref.html @@ -6,12 +6,12 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -41,7 +41,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index 69b8a905..77aeb478 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -115,6 +115,14 @@ template <class Backend, expression_template_option ExpressionTemplates> std::istream& operator >> (std::istream& is, number<Backend, ExpressionTemplates>& r); +// Arithmetic with a higher precision result: +template <class ResultType, class Source1 class Source2> +ResultType& add(ResultType& result, const Source1& a, const Source2& b); +template <class ResultType, class Source1 class Source2> +ResultType& subtract(ResultType& result, const Source1& a, const Source2& b); +template <class ResultType, class Source1 class Source2> +ResultType& multiply(ResultType& result, const Source1& a, const Source2& b); + // Non-member function standard library support: unmentionable-expression-template-type abs (const number-or-expression-template-type&); unmentionable-expression-template-type fabs (const number-or-expression-template-type&); @@ -566,6 +574,38 @@

    + Arithmetic + with a higher precision result +
    +
    template <class ResultType, class Source1 class Source2>
    +ResultType& add(ResultType& result, const Source1& a, const Source2& b);
    +
    +template <class ResultType, class Source1 class Source2>
    +ResultType& subtract(ResultType& result, const Source1& a, const Source2& b);
    +
    +template <class ResultType, class Source1 class Source2>
    +ResultType& multiply(ResultType& result, const Source1& a, const Source2& b);
    +
    +

    + These functions apply the named operator to the arguments a + and b and store the result in result, + returning result. In all cases they behave "as + if" arguments a and b were + first promoted to type ResultType + before applying the operator, though particular backends may well avoid that + step by way of an optimization. +

    +

    + The type ResultType must + be an instance of class number, + and the types Source1 and + Source2 may be either instances + of class number or native + integer types. The latter is an optimization that allows arithmetic to be + performed on native integer types producing an extended precision result. +

    +
    + Non-member standard library function support
    @@ -1008,7 +1048,7 @@

    - + Traits Class Support
    @@ -1049,7 +1089,7 @@ if T is an expression template type derived from number<>, otherwise from mpl::false_.

    - + Integer functions
    @@ -1130,7 +1170,7 @@ composite less than 0.25^trials.

    - + Rational Number Functions
    @@ -1142,7 +1182,7 @@ respectively.

    - + Boost.Math Interoperability Support
    @@ -1165,7 +1205,7 @@ to ensure interoperability.

    - + std::numeric_limits support
    diff --git a/doc/html/boost_multiprecision/tut.html b/doc/html/boost_multiprecision/tut.html index 906d8213..a54194d1 100644 --- a/doc/html/boost_multiprecision/tut.html +++ b/doc/html/boost_multiprecision/tut.html @@ -63,6 +63,7 @@
    Literal Types and constexpr Support
    Rounding Rules for Conversions
    +
    Mixed Precision Arithmetic

    In order to use this library you need to make two choices: what kind of number diff --git a/doc/html/boost_multiprecision/tut/mixed.html b/doc/html/boost_multiprecision/tut/mixed.html new file mode 100644 index 00000000..8b609e43 --- /dev/null +++ b/doc/html/boost_multiprecision/tut/mixed.html @@ -0,0 +1,169 @@ + + + +Mixed Precision Arithmetic + + + + + + + + +

    +PrevUpHomeNext +
    +
    + +

    + Mixed precision arithmetic is fully supported by the library, there are two + different forms: +

    +
      +
    • + Where the operands are of different precision. +
    • +
    • + Where the operands are of the same precision, but yield a higher precision + result. +
    • +
    +
    + + Mixing + Operands of Differing Precision +
    +

    + If the arguments to a binary operator are of different precision, then the + operation is allowed as long as there is an unambiguous implicit conversion + from one argument type to the other. In all cases the arithmetic is performed + "as if" the lower precision type is promoted to the higher precision + type before applying the operator. However, particular backends may optimise + this and avoid actually creating a temporary if they are able to do so. +

    +

    + For example: +

    +
    mpfr_float_50         a(2), b;
    +mpfr_float_100        c(3), d;
    +static_mpfr_float_50  e(5), f;
    +mpz_int               i(20);
    +
    +d = a * c;  // OK, result of operand is an mpfr_float_100.
    +b = a * c;  // Error, can't convert the result to an mpfr_float_50 as it will lose digits.
    +f = a * e;  // Error, operator is ambiguous, result could be of either type.
    +f = e * i;  // OK, unambiguous conversion from mpz_int to static_mpfr_float_50
    +
    +
    + + Operands + of the Same Precision +
    +

    + Sometimes you want to apply an operator to two arguments of the same precision + in such a way as to obtain a result of higher precision. The most common + situation occurs with fixed precision integers, where you want to multiply + two N-bit numbers to obtain a 2N-bit result. This is supported in this library + by the following free functions: +

    +
    template <class ResultType, class Source1 class Source2>
    +ResultType& add(ResultType& result, const Source1& a, const Source2& b);
    +
    +template <class ResultType, class Source1 class Source2>
    +ResultType& subtract(ResultType& result, const Source1& a, const Source2& b);
    +
    +template <class ResultType, class Source1 class Source2>
    +ResultType& multiply(ResultType& result, const Source1& a, const Source2& b);
    +
    +

    + These functions apply the named operator to the arguments a + and b and store the result in result, + returning result. In all cases they behave "as + if" arguments a and b were + first promoted to type ResultType + before applying the operator, though particular backends may well avoid that + step by way of an optimization. +

    +

    + The type ResultType must + be an instance of class number, + and the types Source1 and + Source2 may be either instances + of class number or native + integer types. The latter is an optimization that allows arithmetic to be + performed on native integer types producing an extended precision result. +

    +

    + For example: +

    +

    +

    +
    #include <boost/multiprecision/cpp_int.hpp>
    +
    +using namespace boost::multiprecision;
    +
    +boost::uint64_t i = (std::numeric_limits<boost::uint64_t>::max)();
    +boost::uint64_t j = 1;
    +
    +uint128_t ui128;
    +uint256_t ui256;
    +//
    +// Start by performing arithmetic on 64-bit integers to yield 128-bit results:
    +//
    +std::cout << std::hex << std::showbase << i << std::endl;
    +std::cout << std::hex << std::showbase << add(ui128, i, j) << std::endl;
    +std::cout << std::hex << std::showbase << multiply(ui128, i, i) << std::endl;
    +//
    +// The try squaring a 128-bit integer to yield a 256-bit result:
    +//
    +ui128 = (std::numeric_limits<uint128_t>::max)();
    +std::cout << std::hex << std::showbase << multiply(ui256, ui128, ui128) << std::endl;
    +
    +

    +

    +

    + Produces the output: +

    +

    +

    +
    0xffffffffffffffff
    +0x10000000000000000
    +0xFFFFFFFFFFFFFFFE0000000000000001
    +0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000001
    +
    +

    +

    +
    + + Backends + With Optimized Mixed Precision Arithmetic +
    +

    + The following backends have at least some direct support for mixed precision + arithmetic, and therefore avoid creating unnecessary temporaries when using + the interfaces above. Therefore when using these types it's more efficient + to use mixed precision arithmetic, than it is to explicitly cast the operands + to the result type: +

    +

    + mpfr_float, + gmp_float, + cpp_int. +

    +
    + + + +
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/boost_multiprecision/tut/rounding.html b/doc/html/boost_multiprecision/tut/rounding.html index 84dcc3f6..1b64cfc3 100644 --- a/doc/html/boost_multiprecision/tut/rounding.html +++ b/doc/html/boost_multiprecision/tut/rounding.html @@ -7,11 +7,11 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -176,7 +176,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/index.html b/doc/html/index.html index a919dfc2..0e5cb43d 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -78,6 +78,7 @@
    Literal Types and constexpr Support
    Rounding Rules for Conversions
    +
    Mixed Precision Arithmetic

    Reference
    @@ -124,7 +125,7 @@ - +

    Last revised: November 02, 2012 at 13:02:30 GMT

    Last revised: November 03, 2012 at 18:24:27 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index b23a001a..1b4c2f9b 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -26,6 +26,7 @@ [import ../example/cpp_int_snips.cpp] [import ../example/random_snips.cpp] [import ../example/safe_prime.cpp] +[import ../example/mixed_integer_arithmetic.cpp] [template mpfr[] [@http://www.mpfr.org MPFR]] [template gmp[] [@http://gmplib.org GMP]] @@ -1248,6 +1249,78 @@ The following table summarises the situation for conversions from native types: [endsect] +[section:mixed Mixed Precision Arithmetic] + +Mixed precision arithmetic is fully supported by the library, there are two different forms: + +* Where the operands are of different precision. +* Where the operands are of the same precision, but yield a higher precision result. + +[h4 Mixing Operands of Differing Precision] + +If the arguments to a binary operator are of different precision, then the operation is allowed +as long as there is an unambiguous implicit conversion from one argument type to the other. +In all cases the arithmetic is performed "as if" the lower precision type is promoted to the +higher precision type before applying the operator. However, particular backends may optimise +this and avoid actually creating a temporary if they are able to do so. + +For example: + + mpfr_float_50 a(2), b; + mpfr_float_100 c(3), d; + static_mpfr_float_50 e(5), f; + mpz_int i(20); + + d = a * c; // OK, result of operand is an mpfr_float_100. + b = a * c; // Error, can't convert the result to an mpfr_float_50 as it will lose digits. + f = a * e; // Error, operator is ambiguous, result could be of either type. + f = e * i; // OK, unambiguous conversion from mpz_int to static_mpfr_float_50 + +[h4 Operands of the Same Precision] + +Sometimes you want to apply an operator to two arguments of the same precision in +such a way as to obtain a result of higher precision. The most common situation +occurs with fixed precision integers, where you want to multiply two N-bit numbers +to obtain a 2N-bit result. This is supported in this library by the following +free functions: + + template + ResultType& add(ResultType& result, const Source1& a, const Source2& b); + + template + ResultType& subtract(ResultType& result, const Source1& a, const Source2& b); + + template + ResultType& multiply(ResultType& result, const Source1& a, const Source2& b); + +These functions apply the named operator to the arguments ['a] and ['b] and store the +result in ['result], returning ['result]. In all cases they behave "as if" +arguments ['a] and ['b] were first promoted to type `ResultType` before applying the +operator, though particular backends may well avoid that step by way of an optimization. + +The type `ResultType` must be an instance of class `number`, and the types `Source1` and `Source2` +may be either instances of class `number` or native integer types. The latter is an optimization +that allows arithmetic to be performed on native integer types producing an extended precision result. + +For example: + +[mixed_eg] + +Produces the output: + +[mixed_output] + +[h4 Backends With Optimized Mixed Precision Arithmetic] + +The following backends have at least some direct support for mixed precision arithmetic, +and therefore avoid creating unnecessary temporaries when using the interfaces above. +Therefore when using these types it's more efficient to use mixed precision arithmetic, +than it is to explicitly cast the operands to the result type: + +__mpfr_float_backend, __mpf_float, __cpp_int. + +[endsect] + [endsect] [section:ref Reference] @@ -1350,6 +1423,14 @@ The following table summarises the situation for conversions from native types: template std::istream& operator >> (std::istream& is, number& r); + // Arithmetic with a higher precision result: + template + ResultType& add(ResultType& result, const Source1& a, const Source2& b); + template + ResultType& subtract(ResultType& result, const Source1& a, const Source2& b); + template + ResultType& multiply(ResultType& result, const Source1& a, const Source2& b); + // Non-member function standard library support: ``['unmentionable-expression-template-type]`` abs (const ``['number-or-expression-template-type]``&); ``['unmentionable-expression-template-type]`` fabs (const ``['number-or-expression-template-type]``&); @@ -1659,6 +1740,26 @@ These operators provided formatted input-output operations on `number` types, an It's down to the back-end type to actually implement string conversion. However, the back-ends provided with this library support all of the iostream formatting flags, field width and precision settings. +[h4 Arithmetic with a higher precision result] + + template + ResultType& add(ResultType& result, const Source1& a, const Source2& b); + + template + ResultType& subtract(ResultType& result, const Source1& a, const Source2& b); + + template + ResultType& multiply(ResultType& result, const Source1& a, const Source2& b); + +These functions apply the named operator to the arguments ['a] and ['b] and store the +result in ['result], returning ['result]. In all cases they behave "as if" +arguments ['a] and ['b] were first promoted to type `ResultType` before applying the +operator, though particular backends may well avoid that step by way of an optimization. + +The type `ResultType` must be an instance of class `number`, and the types `Source1` and `Source2` +may be either instances of class `number` or native integer types. The latter is an optimization +that allows arithmetic to be performed on native integer types producing an extended precision result. + [h4 Non-member standard library function support] ``['unmentionable-expression-template-type]`` abs (const ``['number-or-expression-template-type]``&); @@ -2925,6 +3026,8 @@ Windows Vista machine. * Tweaked expression template unpacking to use fewer temporaries when the LHS also appears in the RHS. * Refactored `cpp_int_backend` based on review comments with new template parameter structure. * Added additional template parameter to `mpfr_float_backend` to allow stack-based allocation. +* Added section on mixed precision arithmetic, and added support for operations yielding a higher precision result +than either of the arguments. [h4 Pre-review history] diff --git a/example/mixed_integer_arithmetic.cpp b/example/mixed_integer_arithmetic.cpp new file mode 100644 index 00000000..7348b474 --- /dev/null +++ b/example/mixed_integer_arithmetic.cpp @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +// +// Compare arithmetic results using fixed_int to GMP results. +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include + +int main() +{ + //[mixed_eg + //=#include + + using namespace boost::multiprecision; + + boost::uint64_t i = (std::numeric_limits::max)(); + boost::uint64_t j = 1; + + uint128_t ui128; + uint256_t ui256; + // + // Start by performing arithmetic on 64-bit integers to yield 128-bit results: + // + std::cout << std::hex << std::showbase << i << std::endl; + std::cout << std::hex << std::showbase << add(ui128, i, j) << std::endl; + std::cout << std::hex << std::showbase << multiply(ui128, i, i) << std::endl; + // + // The try squaring a 128-bit integer to yield a 256-bit result: + // + ui128 = (std::numeric_limits::max)(); + std::cout << std::hex << std::showbase << multiply(ui256, ui128, ui128) << std::endl; + + //] + + return 0; +} + +/* + +Program output: + +//[mixed_output + +0xffffffffffffffff +0x10000000000000000 +0xFFFFFFFFFFFFFFFE0000000000000001 +0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000001 + +//] +*/ + diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index 7924b414..dac44984 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -608,14 +608,14 @@ struct mpfr_float_backend : public detail::mpfr_float_imp(static_cast&&>(o)) {} #endif - template - mpfr_float_backend(const mpfr_float_backend& val, typename enable_if_c::type* = 0) + template + mpfr_float_backend(const mpfr_float_backend& val, typename enable_if_c::type* = 0) : detail::mpfr_float_imp() { mpfr_set(this->m_data, val.data(), GMP_RNDN); } - template - explicit mpfr_float_backend(const mpfr_float_backend& val, typename disable_if_c::type* = 0) + template + explicit mpfr_float_backend(const mpfr_float_backend& val, typename disable_if_c::type* = 0) : detail::mpfr_float_imp() { mpfr_set(this->m_data, val.data(), GMP_RNDN); @@ -701,8 +701,8 @@ struct mpfr_float_backend : public detail::mpfr_float_imp - mpfr_float_backend& operator=(const mpfr_float_backend& val) BOOST_NOEXCEPT + template + mpfr_float_backend& operator=(const mpfr_float_backend& val) BOOST_NOEXCEPT { mpfr_set(this->m_data, val.data(), GMP_RNDN); return *this; From e599ca723ca6bdfed618535063081223dd552dd4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 4 Nov 2012 12:08:37 +0000 Subject: [PATCH 251/256] Fix missing typename. [SVN r81169] --- include/boost/multiprecision/cpp_int.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 8401be6c..09bf8c99 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -32,7 +32,7 @@ namespace backends{ #pragma warning(disable:4127 4351 4293) #endif -template >::type > +template >::type > struct cpp_int_backend; template From 836d7652430f6bd596f1df8bde67dbd8f973ebd9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 4 Nov 2012 12:14:22 +0000 Subject: [PATCH 252/256] Fix Jamfile SNAFU. [SVN r81170] --- test/Jamfile.v2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 5178e124..8b3328d5 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -820,7 +820,7 @@ run ../example/tommath_snips.cpp $(TOMMATH) : # requirements [ check-target-builds ../config//has_tommath : : no ] ; run ../example/floating_point_examples.cpp : : : gcc:-std=c++0x ; -run test_cpp_int_conv.cpp; +run test_cpp_int_conv.cpp ; run test_mixed_cpp_int.cpp ; run test_mixed_float.cpp From e3deed1fdf3e22ac55f3d6820638317b98ea2579 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 5 Nov 2012 12:36:25 +0000 Subject: [PATCH 253/256] Optimize cpp_int multiplication with precision extension. Turn off some warnings. [SVN r81200] --- .../concepts/mp_number_archetypes.hpp | 1 - .../boost/multiprecision/cpp_int/multiply.hpp | 153 +++++++++++++++++- .../depricated/arithmetic_backend.hpp | 1 - .../multiprecision/detail/default_ops.hpp | 1 - .../multiprecision/detail/number_base.hpp | 7 + include/boost/multiprecision/gmp.hpp | 8 +- include/boost/multiprecision/mpfr.hpp | 1 - .../boost/multiprecision/rational_adapter.hpp | 8 +- include/boost/multiprecision/tommath.hpp | 1 - performance/delaunay_test.cpp | 19 ++- test/test_mixed_cpp_int.cpp | 7 +- 11 files changed, 192 insertions(+), 15 deletions(-) diff --git a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp index 8884a9fa..6c33ee76 100644 --- a/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +++ b/include/boost/multiprecision/concepts/mp_number_archetypes.hpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include diff --git a/include/boost/multiprecision/cpp_int/multiply.hpp b/include/boost/multiprecision/cpp_int/multiply.hpp index 630e7f91..2559cead 100644 --- a/include/boost/multiprecision/cpp_int/multiply.hpp +++ b/include/boost/multiprecision/cpp_int/multiply.hpp @@ -271,9 +271,7 @@ BOOST_FORCEINLINE typename enable_if_c< template BOOST_FORCEINLINE typename enable_if_c< is_trivial_cpp_int >::value - && is_trivial_cpp_int >::value && is_unsigned_number >::value - && is_unsigned_number >::value >::type eval_multiply( cpp_int_backend& result, @@ -283,6 +281,157 @@ BOOST_FORCEINLINE typename enable_if_c< result.normalize(); } +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && (is_signed_number >::value + || is_signed_number >::value) + >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = detail::checked_multiply(*a.limbs(), *b.limbs(), typename cpp_int_backend::checked_type()); + result.sign(a.sign() != b.sign()); + result.normalize(); +} + +template +BOOST_FORCEINLINE typename enable_if_c< + is_trivial_cpp_int >::value + && is_unsigned_number >::value + >::type + eval_multiply( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) BOOST_NOEXCEPT_IF((is_non_throwing_cpp_int >::value)) +{ + *result.limbs() = detail::checked_multiply(*a.limbs(), *b.limbs(), typename cpp_int_backend::checked_type()); + result.normalize(); +} + +// +// Special routines for multiplying two integers to obtain a multiprecision result: +// +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value + >::type + eval_multiply( + cpp_int_backend& result, + signed_double_limb_type a, signed_double_limb_type b) +{ + static const signed_double_limb_type mask = ~static_cast(0); + static const unsigned limb_bits = sizeof(limb_type) * CHAR_BIT; + bool s = false; + double_limb_type w, x, y, z; + if(a < 0) + { + a = -a; + s = true; + } + if(b < 0) + { + b = -b; + s = !s; + } + w = a & mask; + x = a >> limb_bits; + y = b & mask; + z = b >> limb_bits; + + result.resize(4, 4); + limb_type* pr = result.limbs(); + + double_limb_type carry = w * y; + pr[0] = static_cast(carry); + carry >>= limb_bits; + carry += w * z + x * y; + pr[1] = static_cast(carry); + carry >>= limb_bits; + carry += x * z; + pr[2] = static_cast(carry); + pr[3] = static_cast(carry >> limb_bits); + + result.sign(s); + result.normalize(); +} + +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value + >::type + eval_multiply( + cpp_int_backend& result, + double_limb_type a, double_limb_type b) +{ + static const signed_double_limb_type mask = ~static_cast(0); + static const unsigned limb_bits = sizeof(limb_type) * CHAR_BIT; + + double_limb_type w, x, y, z; + w = a & mask; + x = a >> limb_bits; + y = b & mask; + z = b >> limb_bits; + + result.resize(4, 4); + limb_type* pr = result.limbs(); + + double_limb_type carry = w * y; + pr[0] = static_cast(carry); + carry >>= limb_bits; + carry += w * z; + pr[1] = static_cast(carry); + carry >>= limb_bits; + pr[2] = static_cast(carry); + carry = x * y + pr[1]; + pr[1] = static_cast(carry); + carry >>= limb_bits; + carry += pr[2] + x * z; + pr[2] = static_cast(carry); + pr[3] = static_cast(carry >> limb_bits); + + result.sign(false); + result.normalize(); +} + +template +BOOST_FORCEINLINE typename enable_if_c< + !is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + && is_trivial_cpp_int >::value + >::type + eval_multiply( + cpp_int_backend& result, + cpp_int_backend const& a, + cpp_int_backend const& b) +{ + typedef typename boost::multiprecision::detail::canonical::local_limb_type, cpp_int_backend >::type canonical_type; + eval_multiply(result, static_cast(*a.limbs()), static_cast(*b.limbs())); + result.sign(a.sign() != b.sign()); +} + +template +BOOST_FORCEINLINE typename enable_if_c::value && (sizeof(SI) <= sizeof(signed_double_limb_type) / 2)>::type + eval_multiply( + cpp_int_backend& result, + SI a, SI b) +{ + result = static_cast(a) * static_cast(b); +} + +template +BOOST_FORCEINLINE typename enable_if_c::value && (sizeof(UI) <= sizeof(signed_double_limb_type) / 2)>::type + eval_multiply( + cpp_int_backend& result, + UI a, UI b) +{ + result = static_cast(a) * static_cast(b); +} + }}} // namespaces #endif diff --git a/include/boost/multiprecision/depricated/arithmetic_backend.hpp b/include/boost/multiprecision/depricated/arithmetic_backend.hpp index 3dda99ac..7a13c476 100644 --- a/include/boost/multiprecision/depricated/arithmetic_backend.hpp +++ b/include/boost/multiprecision/depricated/arithmetic_backend.hpp @@ -10,7 +10,6 @@ #include #include #include -#include #include namespace boost{ diff --git a/include/boost/multiprecision/detail/default_ops.hpp b/include/boost/multiprecision/detail/default_ops.hpp index 88c762f2..d93c0276 100644 --- a/include/boost/multiprecision/detail/default_ops.hpp +++ b/include/boost/multiprecision/detail/default_ops.hpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index e7244273..2e9a29f9 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -10,7 +10,14 @@ #include #include #include +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable:4307) +#endif #include +#ifdef BOOST_MSVC +# pragma warning(pop) +#endif namespace boost{ namespace multiprecision{ diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 5780cbe9..6df42b62 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -12,8 +12,14 @@ #include #include #include -#include +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable:4127) +#endif #include +#ifdef BOOST_MSVC +# pragma warning(pop) +#endif #include #include #include diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index dac44984..4ee9e2d7 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index b3f2ad16..1c8a69cb 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -10,9 +10,15 @@ #include #include #include -#include #include +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable:4512) +#endif #include +#ifdef BOOST_MSVC +# pragma warning(pop) +#endif namespace boost{ namespace multiprecision{ diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index a4e2e701..686ef7e8 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include diff --git a/performance/delaunay_test.cpp b/performance/delaunay_test.cpp index 593fd5a4..d6fff135 100644 --- a/performance/delaunay_test.cpp +++ b/performance/delaunay_test.cpp @@ -135,6 +135,12 @@ BOOST_FORCEINLINE void mul_2n(R& r, const T& a, const T& b) r *= b; } +template +BOOST_FORCEINLINE void mul_2n(boost::multiprecision::number& r, const T& a, const T& b) +{ + multiply(r, a, b); +} + BOOST_FORCEINLINE void mul_2n(int128_t& r, const boost::int64_t& a, const boost::int64_t& b) { r = mult_64x64_to_128(a, b); @@ -270,10 +276,15 @@ int main() std::cout << "calculating...\n"; do_calc >("int64_t, int64_t"); - do_calc, et_off>, number, et_off> > >("arithmetic_backend"); - do_calc >("int64_t, int128_t"); - do_calc >("int64_t, int128_t"); - do_calc, et_on> > >("int64_t, int128_t (ET)"); + do_calc, et_off>, number, et_off> > >("arithmetic_backend, arithmetic_backend"); + do_calc, et_off> > >("int64_t, arithmetic_backend"); + do_calc, et_off>, number, et_off> > >("multiprecision::int64_t, multiprecision::int64_t"); + + do_calc >("int64_t, int128_t"); + do_calc >("int64_t, boost::multiprecision::int128_t"); + do_calc, et_on> > >("int64_t, int128_t (ET)"); + do_calc, et_off>, boost::multiprecision::int128_t > >("multiprecision::int64_t, multiprecision::int128_t"); + do_calc >("int64_t, cpp_int"); do_calc, et_off> > >("int64_t, cpp_int (no ET's)"); do_calc > > >("int64_t, cpp_int(128-bit cache)"); diff --git a/test/test_mixed_cpp_int.cpp b/test/test_mixed_cpp_int.cpp index ff47ac3a..7d12eba9 100644 --- a/test/test_mixed_cpp_int.cpp +++ b/test/test_mixed_cpp_int.cpp @@ -73,11 +73,14 @@ int main() test(); test(); - test, et_off>, checked_int512_t>(); + test, et_off>, checked_int128_t>(); + test(); test(); test(); - test, et_off>, checked_uint512_t>(); + test, et_off>, checked_uint128_t>(); + test(); + return boost::report_errors(); } From a9bcf67b4b9a4f3a1a2ab983c78c0b67075d11a0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 5 Nov 2012 19:05:31 +0000 Subject: [PATCH 254/256] Fix errors resulting from incorrect noexcept specifications and no numeric_limits support for __int128 [SVN r81211] --- include/boost/multiprecision/cpp_int.hpp | 38 +++++++++++-------- .../multiprecision/detail/number_base.hpp | 28 +++++++++----- 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 09bf8c99..12b056be 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -212,7 +212,8 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_data(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false), m_internal(true) { } BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT - : m_data(i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0), m_internal(true) { } + : m_data(i), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), + m_sign(i < 0), m_internal(true) { } #endif // // Helper functions for getting at our internal data, and manipulating storage: @@ -275,7 +276,7 @@ public: m_sign = o.m_sign; } #ifndef BOOST_NO_RVALUE_REFERENCES - cpp_int_base(cpp_int_base&& o) BOOST_NOEXCEPT + cpp_int_base(cpp_int_base&& o) : allocator_type(static_cast(o)), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal) { if(m_internal) @@ -422,7 +423,9 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1), m_sign(false) {} BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT - : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), m_sign(i < 0) {} + : m_wrapper(double_limb_type(i < 0 ? -i : i)), + m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)), + m_sign(i < 0) {} #endif // // Helper functions for getting at our internal data, and manipulating storage: @@ -548,12 +551,12 @@ public: // BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(1) {} - BOOST_FORCEINLINE cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(signed_limb_type i)BOOST_NOEXCEPT_IF((Checked == unchecked)) : m_wrapper(limb_type(i < 0 ? -i : i)), m_limbs(1) { if(i < 0) negate(); } #ifdef BOOST_LITTLE_ENDIAN BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(double_limb_type i)BOOST_NOEXCEPT : m_wrapper(i), m_limbs(i > max_limb_value ? 2 : 1) {} - BOOST_FORCEINLINE cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT + BOOST_FORCEINLINE cpp_int_base(signed_double_limb_type i)BOOST_NOEXCEPT_IF((Checked == unchecked)) : m_wrapper(double_limb_type(i < 0 ? -i : i)), m_limbs(i < 0 ? (-i > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)) { if(i < 0) negate(); } #endif // @@ -563,7 +566,7 @@ public: BOOST_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return m_wrapper.m_data; } BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return m_wrapper.m_data; } BOOST_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } - BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT { if(b) negate(); } + BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT_IF((Checked == unchecked)) { if(b) negate(); } BOOST_FORCEINLINE void resize(unsigned new_size, unsigned min_size) BOOST_NOEXCEPT_IF((Checked == unchecked)) { m_limbs = (std::min)(new_size, internal_limb_count); @@ -577,8 +580,10 @@ public: while((m_limbs-1) && !p[m_limbs - 1])--m_limbs; } - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT : m_wrapper(limb_type(0u)), m_limbs(1) {} - BOOST_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs) + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() BOOST_NOEXCEPT + : m_wrapper(limb_type(0u)), m_limbs(1) {} + BOOST_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT + : m_limbs(o.m_limbs) { std::copy(o.limbs(), o.limbs() + o.size(), limbs()); } @@ -749,7 +754,8 @@ public: } BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() : m_data(0), m_sign(false) {} - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data), m_sign(o.m_sign) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT + : m_data(o.m_data), m_sign(o.m_sign) {} //~cpp_int_base() BOOST_NOEXCEPT {} BOOST_FORCEINLINE void assign(const cpp_int_base& o) BOOST_NOEXCEPT { @@ -856,7 +862,7 @@ public: BOOST_FORCEINLINE limb_pointer limbs() BOOST_NOEXCEPT { return &m_data; } BOOST_FORCEINLINE const_limb_pointer limbs()const BOOST_NOEXCEPT { return &m_data; } BOOST_FORCEINLINE BOOST_CONSTEXPR bool sign()const BOOST_NOEXCEPT { return false; } - BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT + BOOST_FORCEINLINE void sign(bool b) BOOST_NOEXCEPT_IF((Checked == unchecked)) { if(b) negate(); @@ -872,13 +878,14 @@ public: } BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() : m_data(0) {} - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_data(o.m_data) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT + : m_data(o.m_data) {} //~cpp_int_base() BOOST_NOEXCEPT {} BOOST_FORCEINLINE void assign(const cpp_int_base& o) BOOST_NOEXCEPT { m_data = o.m_data; } - BOOST_FORCEINLINE void negate() BOOST_NOEXCEPT + BOOST_FORCEINLINE void negate() BOOST_NOEXCEPT_IF((Checked == unchecked)) { if(Checked == checked) { @@ -957,7 +964,8 @@ public: BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend() BOOST_NOEXCEPT{} BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(const cpp_int_backend& o) BOOST_NOEXCEPT_IF(boost::is_void::value) : base_type(o) {} #ifndef BOOST_NO_RVALUE_REFERENCES - BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT : base_type(static_cast(o)) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR cpp_int_backend(cpp_int_backend&& o) BOOST_NOEXCEPT + : base_type(static_cast(o)) {} #endif // // Direct construction from arithmetic type: @@ -1195,7 +1203,7 @@ private: *this->limbs() = i; this->sign(false); } - BOOST_FORCEINLINE void do_assign_arithmetic(signed_limb_type i, const mpl::false_&) BOOST_NOEXCEPT + BOOST_FORCEINLINE void do_assign_arithmetic(signed_limb_type i, const mpl::false_&) BOOST_NOEXCEPT_IF((Checked == unchecked)) { this->resize(1, 1); *this->limbs() = static_cast(std::abs(i)); @@ -1467,7 +1475,7 @@ private: base = 16; std::string result; - unsigned Bits = base_type::limb_bits; + unsigned Bits = sizeof(typename base_type::local_limb_type) * CHAR_BIT; if(base == 8 || base == 16) { diff --git a/include/boost/multiprecision/detail/number_base.hpp b/include/boost/multiprecision/detail/number_base.hpp index 2e9a29f9..54afe583 100644 --- a/include/boost/multiprecision/detail/number_base.hpp +++ b/include/boost/multiprecision/detail/number_base.hpp @@ -57,11 +57,11 @@ template struct is_number_expression > : public mpl::true_ {}; template -struct is_compatible_arithmetic_type +struct is_compatible_arithmetic_type : public mpl::bool_< - is_convertible::value - && !is_same::value - && !is_number_expression::value> + is_convertible::value + && !is_same::value + && !is_number_expression::value> {}; namespace detail{ @@ -90,11 +90,21 @@ typename enable_if_c<(is_unsigned::value), T>::type abs(T t) BOOST_NOEXCEPT # define BOOST_MP_MOVE(x) x #endif +template +struct bits_of +{ + BOOST_STATIC_ASSERT(is_integral::value || std::numeric_limits::is_specialized); + static const unsigned value = + std::numeric_limits::is_specialized ? + std::numeric_limits::digits + : sizeof(T) * CHAR_BIT - (is_signed::value ? 1 : 0); +}; + template struct has_enough_bits { template - struct type : public mpl::bool_::digits >= b>{}; + struct type : public mpl::bool_::value>= b>{}; }; template @@ -115,7 +125,7 @@ struct canonical_imp, Backend, Tag> template struct canonical_imp > { - typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename has_enough_bits::value>::template type pred_type; typedef typename mpl::find_if< typename Backend::signed_types, pred_type @@ -125,7 +135,7 @@ struct canonical_imp > template struct canonical_imp > { - typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename has_enough_bits::value>::template type pred_type; typedef typename mpl::find_if< typename Backend::unsigned_types, pred_type @@ -135,7 +145,7 @@ struct canonical_imp > template struct canonical_imp > { - typedef typename has_enough_bits::digits>::template type pred_type; + typedef typename has_enough_bits::value>::template type pred_type; typedef typename mpl::find_if< typename Backend::float_types, pred_type @@ -393,7 +403,7 @@ struct expression typedef typename middle_type::result_type middle_result_type; typedef typename right_type::result_type right_result_type; typedef typename combine_expression< - left_result_type, + left_result_type, typename combine_expression::type >::type result_type; typedef tag tag_type; From 3430188795544c87c7efc258bb792216dfd36d98 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 9 Nov 2012 18:55:19 +0000 Subject: [PATCH 255/256] Add overloads of the integer-only functions which work with native integer types. Ensure powm promotes fixed precision types to avoid numeric overflow. Allow the Miller-Rabin code to be used by native integers. Fix Miller Rabin tests to actually return the test result! Fix some bugs in cpp_int unsigned arithmetic, and ensure the Miller Rabin and random number code can be safely used with checked fixed precision integers. [SVN r81269] --- doc/multiprecision.qbk | 4 +- include/boost/multiprecision/cpp_int.hpp | 27 ++- .../multiprecision/cpp_int/comparison.hpp | 2 +- .../boost/multiprecision/cpp_int/divide.hpp | 22 ++- include/boost/multiprecision/cpp_int/misc.hpp | 9 +- .../multiprecision/detail/integer_ops.hpp | 84 +++++---- include/boost/multiprecision/gmp.hpp | 9 + include/boost/multiprecision/integer.hpp | 174 ++++++++++++++++++ include/boost/multiprecision/miller_rabin.hpp | 53 ++++-- include/boost/multiprecision/number.hpp | 2 +- include/boost/multiprecision/random.hpp | 14 +- include/boost/multiprecision/tommath.hpp | 9 + test/Jamfile.v2 | 1 + test/test_miller_rabin.cpp | 43 ++++- test/test_native_integer.cpp | 79 ++++++++ 15 files changed, 463 insertions(+), 69 deletions(-) create mode 100644 include/boost/multiprecision/integer.hpp create mode 100644 test/test_native_integer.cpp diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 1b4c2f9b..051ff313 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -1874,7 +1874,7 @@ large as to take "effectively forever" to compute, or else simply run the host m Returns ['b[super p] mod m] as an expression template. template - bool divide_qr(const ``['number-or-expression-template-type]``& x, const ``['number-or-expression-template-type]``& y, + void divide_qr(const ``['number-or-expression-template-type]``& x, const ``['number-or-expression-template-type]``& y, number& q, number& r); Divides x by y and returns both the quotient and remainder. After the call `q = x / y` and `r = x % y`. @@ -1888,6 +1888,8 @@ Returns the absolute value of `x % val`. Returns the index of the least significant bit that is set to 1. +Throws a `std::range_error` if the argument is <= 0. + template bool bit_test(const number& val, unsigned index); diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index 12b056be..d2397f85 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -29,7 +29,7 @@ namespace backends{ #ifdef BOOST_MSVC // warning C4127: conditional expression is constant #pragma warning(push) -#pragma warning(disable:4127 4351 4293) +#pragma warning(disable:4127 4351 4293 4996 4307) #endif template >::type > @@ -1736,6 +1736,31 @@ public: } // namespace backends +namespace detail{ + +template +struct double_precision_type; + +template +struct double_precision_type > +{ + typedef typename mpl::if_c< + backends::is_fixed_precision >::value, + backends::cpp_int_backend< + (is_void::value ? + 2 * backends::max_precision >::value + : MinBits), + 2 * backends::max_precision >::value, + SignType, + Checked, + Allocator>, + backends::cpp_int_backend + >::type type; +}; + + +} + template struct expression_template_default > { diff --git a/include/boost/multiprecision/cpp_int/comparison.hpp b/include/boost/multiprecision/cpp_int/comparison.hpp index 32d6a470..8ad701dc 100644 --- a/include/boost/multiprecision/cpp_int/comparison.hpp +++ b/include/boost/multiprecision/cpp_int/comparison.hpp @@ -14,7 +14,7 @@ namespace boost{ namespace multiprecision{ namespace backends{ #ifdef BOOST_MSVC #pragma warning(push) -#pragma warning(disable:4018 4389) +#pragma warning(disable:4018 4389 4996) #endif // diff --git a/include/boost/multiprecision/cpp_int/divide.hpp b/include/boost/multiprecision/cpp_int/divide.hpp index 5e1534e6..c2afc7ec 100644 --- a/include/boost/multiprecision/cpp_int/divide.hpp +++ b/include/boost/multiprecision/cpp_int/divide.hpp @@ -215,7 +215,7 @@ void divide_unsigned_helper( // rather than a full O(N^2) multiply: // double_limb_type carry = 0; - t.resize(y.size() + shift + 1, y.size() + shift + 1); + t.resize(y.size() + shift + 1, y.size() + shift); bool truncated_t = !CppInt1::variable && (t.size() != y.size() + shift + 1); typename CppInt1::limb_pointer pt = t.limbs(); for(unsigned i = 0; i < shift; ++i) @@ -235,12 +235,18 @@ void divide_unsigned_helper( t.resize(t.size() - 1, t.size() - 1); } // - // Update r: + // Update r in a way that won't actually produce a negative result + // in case the argument types are unsigned: // - eval_subtract(r, t); - if(r.isneg()) + if(r.compare(t) > 0) { - r.negate(); + eval_subtract(r, t); + } + else + { + r.swap(t); + eval_subtract(r, t); + prem = r.limbs(); r_neg = !r_neg; } // @@ -272,11 +278,13 @@ void divide_unsigned_helper( // We have one too many in the result: if(result) eval_decrement(*result); - r.negate(); if(y.sign()) + { + r.negate(); eval_subtract(r, y); + } else - eval_add(r, y); + eval_subtract(r, y, r); } BOOST_ASSERT(r.compare_unsigned(y) < 0); // remainder must be less than the divisor or our code has failed diff --git a/include/boost/multiprecision/cpp_int/misc.hpp b/include/boost/multiprecision/cpp_int/misc.hpp index 04178687..b440aab8 100644 --- a/include/boost/multiprecision/cpp_int/misc.hpp +++ b/include/boost/multiprecision/cpp_int/misc.hpp @@ -110,7 +110,14 @@ inline typename enable_if_c& a) BOOST_NOEXCEPT { using default_ops::eval_get_sign; - BOOST_ASSERT(eval_get_sign(a) != 0); + if(eval_get_sign(a) == 0) + { + BOOST_THROW_EXCEPTION(std::range_error("No bits were set in the operand.")); + } + if(a.sign()) + { + BOOST_THROW_EXCEPTION(std::range_error("Testing individual bits in negative values is not supported - results are undefined.")); + } unsigned result = 0; // diff --git a/include/boost/multiprecision/detail/integer_ops.hpp b/include/boost/multiprecision/detail/integer_ops.hpp index c58791f6..06df91ab 100644 --- a/include/boost/multiprecision/detail/integer_ops.hpp +++ b/include/boost/multiprecision/detail/integer_ops.hpp @@ -241,6 +241,16 @@ inline typename enable_if_c::value == number_kind_integ namespace detail{ +// +// Within powm, we need a type with twice as many digits as the argument type, define +// a traits class to obtain that type: +// +template +struct double_precision_type +{ + typedef Backend type; +}; + // // Calculate (a^p)%c: // @@ -253,29 +263,34 @@ void eval_powm(Backend& result, const Backend& a, const Backend& p, const Backen using default_ops::eval_modulus; using default_ops::eval_right_shift; - typedef typename canonical::type ui_type; + typedef typename double_precision_type::type double_type; + typedef typename canonical::type ui_type; - Backend x, y(a), b(p); + double_type x, y(a), b(p), t; x = ui_type(1u); + while(eval_get_sign(b) > 0) { if(eval_bit_test(b, 0)) { - eval_multiply(result, x, y); - eval_modulus(x, result, c); + eval_multiply(t, x, y); + eval_modulus(x, t, c); } - eval_multiply(result, y, y); - eval_modulus(y, result, c); + eval_multiply(t, y, y); + eval_modulus(y, t, c); eval_right_shift(b, ui_type(1)); } - eval_modulus(result, x, c); + Backend x2(x); + eval_modulus(result, x2, c); } template void eval_powm(Backend& result, const Backend& a, const Backend& p, Integer c) { - typedef typename canonical::type ui_type; - typedef typename canonical::type i_type; + typedef typename double_precision_type::type double_type; + typedef typename canonical::type ui_type; + typedef typename canonical::type i1_type; + typedef typename canonical::type i2_type; using default_ops::eval_bit_test; using default_ops::eval_get_sign; @@ -288,27 +303,29 @@ void eval_powm(Backend& result, const Backend& a, const Backend& p, Integer c) BOOST_THROW_EXCEPTION(std::runtime_error("powm requires a positive exponent.")); } - Backend x, y(a), b(p); + double_type x, y(a), b(p), t; x = ui_type(1u); + while(eval_get_sign(b) > 0) { if(eval_bit_test(b, 0)) { - eval_multiply(result, x, y); - eval_modulus(x, result, static_cast(c)); + eval_multiply(t, x, y); + eval_modulus(x, t, static_cast(c)); } - eval_multiply(result, y, y); - eval_modulus(y, result, static_cast(c)); + eval_multiply(t, y, y); + eval_modulus(y, t, static_cast(c)); eval_right_shift(b, ui_type(1)); } - eval_modulus(result, x, static_cast(c)); + Backend x2(x); + eval_modulus(result, x2, static_cast(c)); } template typename enable_if >::type eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c) { - typedef typename canonical::type ui_type; - typedef typename canonical::type i_type; + typedef typename double_precision_type::type double_type; + typedef typename canonical::type ui_type; using default_ops::eval_bit_test; using default_ops::eval_get_sign; @@ -316,20 +333,22 @@ typename enable_if >::type eval_powm(Backend& result, const using default_ops::eval_modulus; using default_ops::eval_right_shift; - Backend x, y(a); + double_type x, y(a), t; x = ui_type(1u); + while(b > 0) { if(b & 1) { - eval_multiply(result, x, y); - eval_modulus(x, result, c); + eval_multiply(t, x, y); + eval_modulus(x, t, c); } - eval_multiply(result, y, y); - eval_modulus(y, result, c); + eval_multiply(t, y, y); + eval_modulus(y, t, c); b >>= 1; } - eval_modulus(result, x, c); + Backend x2(x); + eval_modulus(result, x2, c); } template @@ -345,8 +364,9 @@ typename enable_if >::type eval_powm(Backend& result, const B template typename enable_if >::type eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c) { - typedef typename canonical::type ui_type; - typedef typename canonical::type i1_type; + typedef typename double_precision_type::type double_type; + typedef typename canonical::type ui_type; + typedef typename canonical::type i1_type; typedef typename canonical::type i2_type; using default_ops::eval_bit_test; @@ -355,20 +375,22 @@ typename enable_if >::type eval_powm(Backend& result, cons using default_ops::eval_modulus; using default_ops::eval_right_shift; - Backend x, y(a); + double_type x, y(a), t; x = ui_type(1u); + while(b > 0) { if(b & 1) { - eval_multiply(result, x, y); - eval_modulus(x, result, static_cast(c)); + eval_multiply(t, x, y); + eval_modulus(x, t, static_cast(c)); } - eval_multiply(result, y, y); - eval_modulus(y, result, static_cast(c)); + eval_multiply(t, y, y); + eval_modulus(y, t, static_cast(c)); b >>= 1; } - eval_modulus(result, x, static_cast(c)); + Backend x2(x); + eval_modulus(result, x2, static_cast(c)); } template diff --git a/include/boost/multiprecision/gmp.hpp b/include/boost/multiprecision/gmp.hpp index 6df42b62..e09c2bdc 100644 --- a/include/boost/multiprecision/gmp.hpp +++ b/include/boost/multiprecision/gmp.hpp @@ -1593,6 +1593,15 @@ inline typename enable_if_c::value && ((sizeof(I) <= sizeof(long))) inline unsigned eval_lsb(const gmp_int& val) { + int c = eval_get_sign(val); + if(c == 0) + { + BOOST_THROW_EXCEPTION(std::range_error("No bits were set in the operand.")); + } + if(c < 0) + { + BOOST_THROW_EXCEPTION(std::range_error("Testing individual bits in negative values is not supported - results are undefined.")); + } return mpz_scan1(val.data(), 0); } diff --git a/include/boost/multiprecision/integer.hpp b/include/boost/multiprecision/integer.hpp new file mode 100644 index 00000000..0e0075fb --- /dev/null +++ b/include/boost/multiprecision/integer.hpp @@ -0,0 +1,174 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#ifndef BOOST_MP_INTEGER_HPP +#define BOOST_MP_INTEGER_HPP + +#include + +namespace boost{ +namespace multiprecision{ + +template +typename enable_if_c::value && is_integral::value, Integer>::type + multiply(Integer& result, const I2& a, const I2& b) +{ + return result = static_cast(a) * static_cast(b); +} +template +typename enable_if_c::value && is_integral::value, Integer>::type + add(Integer& result, const I2& a, const I2& b) +{ + return result = static_cast(a) + static_cast(b); +} +template +typename enable_if_c::value && is_integral::value, Integer>::type + subtract(Integer& result, const I2& a, const I2& b) +{ + return result = static_cast(a) - static_cast(b); +} + +template +typename enable_if_c::value>::type divide_qr(const Integer& x, const Integer& y, Integer& q, Integer& r) +{ + q = x / y; + r = x % y; +} + +template +typename enable_if_c::value && is_integral::value, I2>::type integer_modulus(const I1& x, I2 val) +{ + return static_cast(x % val); +} + +namespace detail{ +// +// Figure out the kind of integer that has twice as many bits as some builtin +// integer type I. Use a native type if we can (including types which may not +// be recognised by boost::int_t because they're larger than long long), +// otherwise synthesize a cpp_int to do the job. +// +template +struct double_integer +{ + static const unsigned int_t_digits = + 2 * sizeof(I) <= sizeof(long long) ? std::numeric_limits::digits * 2 : 1; + + typedef typename mpl::if_c< + 2 * sizeof(I) <= sizeof(long long), + typename mpl::if_c< + is_signed::value, + typename boost::int_t::least, + typename boost::uint_t::least + >::type, + typename mpl::if_c< + 2 * sizeof(I) <= sizeof(double_limb_type), + typename mpl::if_c< + is_signed::value, + signed_double_limb_type, + double_limb_type + >::type, + number::value ? signed_magnitude : unsigned_magnitude), unchecked, void> > + >::type + >::type type; +}; + +} + +template +typename enable_if_c::value && is_integral::value && is_integral::value, I1>::type + powm(const I1& a, I2 b, I3 c) +{ + typedef typename detail::double_integer::type double_type; + + I1 x(1), y(a); + double_type result; + + while(b > 0) + { + if(b & 1) + { + multiply(result, x, y); + x = integer_modulus(result, c); + } + multiply(result, y, y); + y = integer_modulus(result, c); + b >>= 1; + } + return x % c; +} + +template +typename enable_if_c::value, unsigned>::type lsb(const Integer& val) +{ + if(val == 0) + { + BOOST_THROW_EXCEPTION(std::range_error("No bits were set in the operand.")); + } + if(val < 0) + { + BOOST_THROW_EXCEPTION(std::range_error("Testing individual bits in negative values is not supported - results are undefined.")); + } + unsigned index = 0; + Integer mask = 1; + + while(((mask & val) == 0) && (index < sizeof(Integer) * CHAR_BIT)) + { + ++index; + mask <<= 1; + } + return index; +} + +template +typename enable_if_c::value, bool>::type bit_test(const Integer& val, unsigned index) +{ + Integer mask = 1; + if(index >= sizeof(Integer) * CHAR_BIT) + return 0; + if(index) + mask <<= index; + return val & mask ? true : false; +} + +template +typename enable_if_c::value, Integer&>::type bit_set(Integer& val, unsigned index) +{ + Integer mask = 1; + if(index >= sizeof(Integer) * CHAR_BIT) + return val; + if(index) + mask <<= index; + val |= mask; + return val; +} + +template +typename enable_if_c::value, Integer&>::type bit_unset(Integer& val, unsigned index) +{ + Integer mask = 1; + if(index >= sizeof(Integer) * CHAR_BIT) + return val; + if(index) + mask <<= index; + val &= ~mask; + return val; +} + +template +typename enable_if_c::value, Integer&>::type bit_flip(Integer& val, unsigned index) +{ + Integer mask = 1; + if(index >= sizeof(Integer) * CHAR_BIT) + return val; + if(index) + mask <<= index; + val ^= mask; + return val; +} + +}} // namespaces + +#endif diff --git a/include/boost/multiprecision/miller_rabin.hpp b/include/boost/multiprecision/miller_rabin.hpp index f9579532..f386c5c3 100644 --- a/include/boost/multiprecision/miller_rabin.hpp +++ b/include/boost/multiprecision/miller_rabin.hpp @@ -7,12 +7,14 @@ #define BOOST_MP_MR_HPP #include +#include namespace boost{ namespace multiprecision{ +namespace detail{ -template -bool check_small_factors(const number& n) +template +bool check_small_factors(const I& n) { static const boost::uint32_t small_factors1[] = { 3u, 5u, 7u, 11u, 13u, 17u, 19u, 23u }; @@ -117,22 +119,37 @@ inline bool is_small_prime(unsigned n) return false; } -template -typename enable_if_c::value == number_kind_integer, bool>::type - miller_rabin_test(const number& n, unsigned trials, Engine& gen) +template +typename enable_if_c::value, unsigned>::type + cast_to_unsigned(const I& val) +{ + return static_cast(val); +} +template +typename disable_if_c::value, unsigned>::type + cast_to_unsigned(const I& val) +{ + return val.template convert_to(); +} + +} // namespace detail + +template +typename enable_if_c::value == number_kind_integer, bool>::type + miller_rabin_test(const I& n, unsigned trials, Engine& gen) { #ifdef BOOST_MSVC #pragma warning(push) #pragma warning(disable:4127) #endif - typedef number number_type; + typedef I number_type; if(n <= 227) - return is_small_prime(n.template convert_to()); + return detail::is_small_prime(detail::cast_to_unsigned(n)); if((n & 1) == 0) return false; - if(!check_small_factors(n)) + if(!detail::check_small_factors(n)) return false; number_type nm1 = n - 1; @@ -144,15 +161,12 @@ typename enable_if_c::value == number_kind_integer, boo if(x != 1u) return false; - q = (n - 1) >> 1; - unsigned k = 1; - while((q & 1) == 0) - { - q >>= 1; - ++k; - } + q = n - 1; + unsigned k = lsb(q); + q >>= k; + // Declare our random number generator: - boost::random::uniform_int_distribution dist(0, n); + boost::random::uniform_int_distribution dist(2, n - 2); // // Execute the trials: // @@ -169,7 +183,7 @@ typename enable_if_c::value == number_kind_integer, boo return false; // test failed if(++j == k) return false; // failed - y = (y * y) % n; + y = powm(y, 2, n); } } return true; // Yeheh! probably prime. @@ -178,8 +192,9 @@ typename enable_if_c::value == number_kind_integer, boo #endif } -template -bool miller_rabin_test(const number& x, unsigned trials) +template +typename enable_if_c::value == number_kind_integer, bool>::type + miller_rabin_test(const I& x, unsigned trials) { static mt19937 gen; return miller_rabin_test(x, trials, gen); diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 51bd8fb1..26571832 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -88,7 +88,7 @@ public: } */ template - BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.m_backend) {} + BOOST_FORCEINLINE BOOST_CONSTEXPR number(const number& val) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast(std::declval())))) : m_backend(val.backend()) {} template BOOST_FORCEINLINE number(const number& val, diff --git a/include/boost/multiprecision/random.hpp b/include/boost/multiprecision/random.hpp index 6d0518a6..fefba1b9 100644 --- a/include/boost/multiprecision/random.hpp +++ b/include/boost/multiprecision/random.hpp @@ -8,6 +8,11 @@ #ifndef BOOST_MP_RANDOM_HPP #define BOOST_MP_RANDOM_HPP +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4127) +#endif + #include namespace boost{ namespace random{ namespace detail{ @@ -50,7 +55,10 @@ public: { return 0; } // This is the only function we modify compared to the primary template: static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () - { return (result_type(1) << w) - 1; } + { + // This expression allows for the possibility that w == std::numeric_limits::digits: + return (((result_type(1) << (w - 1)) - 1) << 1) + 1; + } independent_bits_engine() { } @@ -572,4 +580,8 @@ inline boost::multiprecision::number }} // namespaces +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + #endif diff --git a/include/boost/multiprecision/tommath.hpp b/include/boost/multiprecision/tommath.hpp index 686ef7e8..0b7fe911 100644 --- a/include/boost/multiprecision/tommath.hpp +++ b/include/boost/multiprecision/tommath.hpp @@ -588,6 +588,15 @@ inline void eval_qr(const tommath_int& x, const tommath_int& y, inline unsigned eval_lsb(const tommath_int& val) { + int c = eval_get_sign(val); + if(c == 0) + { + BOOST_THROW_EXCEPTION(std::range_error("No bits were set in the operand.")); + } + if(c < 0) + { + BOOST_THROW_EXCEPTION(std::range_error("Testing individual bits in negative values is not supported - results are undefined.")); + } return mp_cnt_lsb(const_cast< ::mp_int*>(&val.data())); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 8b3328d5..8d9cc239 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -821,6 +821,7 @@ run ../example/tommath_snips.cpp $(TOMMATH) [ check-target-builds ../config//has_tommath : : no ] ; run ../example/floating_point_examples.cpp : : : gcc:-std=c++0x ; run test_cpp_int_conv.cpp ; +run test_native_integer.cpp ; run test_mixed_cpp_int.cpp ; run test_mixed_float.cpp diff --git a/test/test_miller_rabin.cpp b/test/test_miller_rabin.cpp index d8f9f9a2..ec12ab8b 100644 --- a/test/test_miller_rabin.cpp +++ b/test/test_miller_rabin.cpp @@ -3,14 +3,21 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + #include +#include #include #include #include #include #include "test.hpp" -int main() + +template +void test() { // // Very simple test program to verify that the GMP's Miller-Rabin @@ -22,7 +29,14 @@ int main() using namespace boost::random; using namespace boost::multiprecision; - independent_bits_engine gen; + typedef I test_type; + + static const unsigned test_bits = + std::numeric_limits::digits && (std::numeric_limits::digits <= 256) + ? std::numeric_limits::digits + : 128; + + independent_bits_engine gen; // // We must use a different generator for the tests and number generation, otherwise // we get false positives. Further we use the same random number engine for the @@ -35,16 +49,17 @@ int main() // for(unsigned i = 1; i < boost::math::max_prime; ++i) { - BOOST_TEST(miller_rabin_test(mpz_int(boost::math::prime(i)), 25, gen)); + BOOST_TEST(miller_rabin_test(test_type(boost::math::prime(i)), 25, gen)); + BOOST_TEST(mpz_probab_prime_p(mpz_int(boost::math::prime(i)).backend().data(), 25)); } // // Now test some random values and compare GMP's native routine with ours. // for(unsigned i = 0; i < 10000; ++i) { - mpz_int n = gen(); + test_type n = gen(); bool is_prime_boost = miller_rabin_test(n, 25, gen2); - bool is_gmp_prime = mpz_probab_prime_p(n.backend().data(), 25); + bool is_gmp_prime = mpz_probab_prime_p(mpz_int(n).backend().data(), 25) ? true : false; if(is_prime_boost && is_gmp_prime) { std::cout << "We have a prime: " << std::hex << std::showbase << n << std::endl; @@ -53,7 +68,23 @@ int main() std::cout << std::hex << std::showbase << "n = " << n << std::endl; BOOST_CHECK_EQUAL(is_prime_boost, is_gmp_prime); } - return 0; +} + +int main() +{ + using namespace boost::multiprecision; + + test(); + test >(); + test(); + test(); + + test(); + test, et_off> >(); + test(); + test(); + + return boost::report_errors(); } diff --git a/test/test_native_integer.cpp b/test/test_native_integer.cpp new file mode 100644 index 00000000..7ed79323 --- /dev/null +++ b/test/test_native_integer.cpp @@ -0,0 +1,79 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2012 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +// +// Compare arithmetic results using fixed_int to GMP results. +// + +#ifdef _MSC_VER +# define _SCL_SECURE_NO_WARNINGS +#endif + +#include +#include "test.hpp" + +#ifdef BOOST_MSVC +#pragma warning(disable:4146) +#endif + +template +void test() +{ + using namespace boost::multiprecision; + + I i(0); + + BOOST_CHECK_THROW(lsb(i), std::range_error); + BOOST_CHECK(bit_test(bit_set(i, 0), 0)); + BOOST_CHECK_EQUAL(bit_set(i, 0), 1); + BOOST_CHECK_EQUAL(bit_unset(i, 0), 0); + BOOST_CHECK_EQUAL(bit_flip(bit_set(i, 0), 0), 0); + + unsigned max_index = (std::numeric_limits::digits) - 1; + BOOST_CHECK(bit_test(bit_set(i, max_index), max_index)); + BOOST_CHECK_EQUAL(bit_unset(i, max_index), 0); + BOOST_CHECK_EQUAL(bit_flip(bit_set(i, max_index), max_index), 0); + + if(std::numeric_limits::is_signed) + { + i = -1; + BOOST_CHECK_THROW(lsb(i), std::range_error); + } + + H mx = (std::numeric_limits::max)(); + + BOOST_CHECK_EQUAL(multiply(i, mx, mx), static_cast(mx) * static_cast(mx)); + BOOST_CHECK_EQUAL(add(i, mx, mx), static_cast(mx) + static_cast(mx)); + if(std::numeric_limits::is_signed) + { + BOOST_CHECK_EQUAL(subtract(i, mx, static_cast(-mx)), static_cast(mx) - static_cast(-mx)); + BOOST_CHECK_EQUAL(add(i, static_cast(-mx), static_cast(-mx)), static_cast(-mx) + static_cast(-mx)); + } + + i = (std::numeric_limits::max)(); + I j = 12345; + I r, q; + divide_qr(i, j, q, r); + BOOST_CHECK_EQUAL(q, i / j); + BOOST_CHECK_EQUAL(r, i % j); + BOOST_CHECK_EQUAL(integer_modulus(i, j), i % j); + I p = 456; + BOOST_CHECK_EQUAL(powm(i, p, j), pow(cpp_int(i), static_cast(p)) % j); +} + +int main() +{ + using namespace boost::multiprecision; + + test(); + test(); + test(); + test(); + + return boost::report_errors(); +} + + + From 4071dd8d59b0310450367edbd917893e31040abc Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 13 Nov 2012 17:12:19 +0000 Subject: [PATCH 256/256] Fix missing number constructor. Fix is_explicitly_convertible to take account of the generic conversions. Change sf_performance to use multiple files so we can actually compile the thing! Minor doc updates. Suppress some more warnings. [SVN r81324] --- .../boost_multiprecision/indexes/s01.html | 4 +- .../boost_multiprecision/indexes/s02.html | 4 +- .../boost_multiprecision/indexes/s03.html | 4 +- .../boost_multiprecision/indexes/s04.html | 4 +- doc/html/boost_multiprecision/intro.html | 7 + doc/html/boost_multiprecision/map/faq.html | 2 +- doc/html/boost_multiprecision/map/hist.html | 3 + doc/html/boost_multiprecision/map/todo.html | 17 +- doc/html/boost_multiprecision/ref/number.html | 24 +- .../tut/floats/cpp_dec_float.html | 9 +- doc/html/index.html | 2 +- doc/multiprecision.qbk | 34 +- include/boost/multiprecision/cpp_int.hpp | 2 +- include/boost/multiprecision/cpp_int/misc.hpp | 9 + .../detail/generic_interconvert.hpp | 2 +- include/boost/multiprecision/number.hpp | 7 + .../boost/multiprecision/rational_adapter.hpp | 2 +- .../traits/explicit_conversion.hpp | 37 +- performance/Jamfile.v2 | 4 +- performance/sf_performance.cpp | 412 +----------------- performance/sf_performance_basic.cpp | 49 +++ performance/sf_performance_bessel.cpp | 42 ++ performance/sf_performance_bessel1.cpp | 23 + performance/sf_performance_bessel2.cpp | 17 + performance/sf_performance_bessel3.cpp | 16 + performance/sf_performance_bessel4.cpp | 15 + performance/sf_performance_bessel5.cpp | 17 + performance/sf_performance_bessel6.cpp | 19 + performance/sf_performance_nct.cpp | 39 ++ performance/sf_performance_nct1.cpp | 15 + performance/sf_performance_nct2.cpp | 14 + performance/sf_performance_nct3.cpp | 22 + performance/sf_performance_nct4.cpp | 15 + performance/sf_performance_nct5.cpp | 14 + performance/sf_performance_nct6.cpp | 22 + performance/sf_performance_poly.cpp | 66 +++ test/test_atan.cpp | 4 + test/test_float_io.cpp | 6 +- test/test_int_io.cpp | 4 + test/test_native_integer.cpp | 2 +- test/test_numeric_limits.cpp | 4 + test/test_rational_io.cpp | 1 - test/test_round.cpp | 4 + 43 files changed, 564 insertions(+), 455 deletions(-) create mode 100644 performance/sf_performance_basic.cpp create mode 100644 performance/sf_performance_bessel.cpp create mode 100644 performance/sf_performance_bessel1.cpp create mode 100644 performance/sf_performance_bessel2.cpp create mode 100644 performance/sf_performance_bessel3.cpp create mode 100644 performance/sf_performance_bessel4.cpp create mode 100644 performance/sf_performance_bessel5.cpp create mode 100644 performance/sf_performance_bessel6.cpp create mode 100644 performance/sf_performance_nct.cpp create mode 100644 performance/sf_performance_nct1.cpp create mode 100644 performance/sf_performance_nct2.cpp create mode 100644 performance/sf_performance_nct3.cpp create mode 100644 performance/sf_performance_nct4.cpp create mode 100644 performance/sf_performance_nct5.cpp create mode 100644 performance/sf_performance_nct6.cpp create mode 100644 performance/sf_performance_poly.cpp diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 95db893b..6f80e7e7 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Function Index

    +Function Index

    A B C D E F I L M P R S T Z

    diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 74da4b03..5cb232f6 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Class Index

    +Class Index

    C E G I M N T

    diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 0aea103d..f5f32e2a 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -13,9 +13,9 @@
    PrevUpHomeNext
    -
    +

    -Typedef Index

    +Typedef Index

    C I L M S T U

    diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 77ea931e..fee56997 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -12,9 +12,9 @@
    PrevUpHome
    -
    +

    -Index

    +Index

    A B C D E F G I L M N O P R S T U Z

    diff --git a/doc/html/boost_multiprecision/intro.html b/doc/html/boost_multiprecision/intro.html index 66275daf..9f845bbe 100644 --- a/doc/html/boost_multiprecision/intro.html +++ b/doc/html/boost_multiprecision/intro.html @@ -47,6 +47,13 @@ back-ends rely on 3rd party libraries, but a header-only Boost license version is always available (if somewhat slower).

    +

    + Should you just wish to cut to the chase and use a fully Boost-licensed number + type, then skip to cpp_int + for multiprecision integers, cpp_dec_float + for multiprecision floating point types and cpp_rational + for rational types. +

    The library is often used via one of the predefined typedefs: for example if you wanted an arbitrary diff --git a/doc/html/boost_multiprecision/map/faq.html b/doc/html/boost_multiprecision/map/faq.html index 887b9ad4..5df05580 100644 --- a/doc/html/boost_multiprecision/map/faq.html +++ b/doc/html/boost_multiprecision/map/faq.html @@ -77,7 +77,7 @@

    Why can't I negate an unsigned type?

    The unary negation operator is deliberately disabled for unsigned integer - types as it's use would almost always be a programming error. + types as its use would almost always be a programming error.

    Why doesn't the library use proto?

    diff --git a/doc/html/boost_multiprecision/map/hist.html b/doc/html/boost_multiprecision/map/hist.html index 8a324bdd..bb5e3493 100644 --- a/doc/html/boost_multiprecision/map/hist.html +++ b/doc/html/boost_multiprecision/map/hist.html @@ -67,6 +67,9 @@ Added section on mixed precision arithmetic, and added support for operations yielding a higher precision result than either of the arguments. +

  • + Added overloads of integer-specific functions for built in integer types. +
  • diff --git a/doc/html/boost_multiprecision/map/todo.html b/doc/html/boost_multiprecision/map/todo.html index 8f453970..f8aa94a5 100644 --- a/doc/html/boost_multiprecision/map/todo.html +++ b/doc/html/boost_multiprecision/map/todo.html @@ -51,15 +51,18 @@
  • We can reuse temporaries in multiple subtrees (temporary caching).
  • +
  • + cpp_dec_float should round to nearest. +
  • +
  • + A 2's complement fixed precision int that uses exactly N bits and no + more. +
  • Things requested in review:

      -
    • - A 2's complement fixed precision int that uses exactly N bits and no - more. -
    • The performances of mp_number<a_trivial_adaptor<float>, false>respect to float and mp_number<a_trivial_adaptor<int>, false> and @@ -67,10 +70,8 @@ done, just need to update docs to the latest results).
    • - cpp_dec_float should round to nearest. -
    • -
    • - Should we provide min/max overloads for expression templates? + Should we provide min/max overloads for expression templates? (Not done + - we can't overload functions declared in the std namespace :-( ).
    • The rounding applied when converting must be documented (Done). diff --git a/doc/html/boost_multiprecision/ref/number.html b/doc/html/boost_multiprecision/ref/number.html index 77aeb478..e1c5c399 100644 --- a/doc/html/boost_multiprecision/ref/number.html +++ b/doc/html/boost_multiprecision/ref/number.html @@ -1093,21 +1093,33 @@ Integer functions
    +

    + In addition to functioning with types from this library, these functions + are also overloaded for built in integer types if you include <boost/multiprecision/integer.hpp>. + Further, when used with fixed precision types (whether built in integers + or multiprecision ones), the functions will promote to a wider type internally + when the algorithm requires it. Versions overloaded for built in integer + types return that integer type rather than an expression template. +

    unmentionable-expression-template-type    pow(const number-or-expression-template-type& b, unsigned p);
     

    Returns bp as an expression template. Note that this function should be used with extreme care as the result can grow so large as to take "effectively forever" to compute, or else simply run - the host machine out of memory. + the host machine out of memory. This is the one function in this category + that is not overloaded for built in integer types, further, it's probably + not a good idea to use it with fixed precision cpp_int's + either.

    unmentionable-expression-template-type    powm(const number-or-expression-template-type& b, const number-or-expression-template-type& p, const number-or-expression-template-type& m);
     

    - Returns bp mod m as an expression template. + Returns bp mod m as an expression template. Fixed precision + types are promoted internally to ensure accuracy.

    template <class Backend, expression_template_option ExpressionTemplates>
    -bool divide_qr(const number-or-expression-template-type& x, const number-or-expression-template-type& y,
    +void divide_qr(const number-or-expression-template-type& x, const number-or-expression-template-type& y,
                    number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r);
     

    @@ -1128,6 +1140,9 @@

    Returns the index of the least significant bit that is set to 1.

    +

    + Throws a std::range_error if the argument is <= 0. +

    template <class Backend, class ExpressionTemplates>
     bool bit_test(const number<Backend, ExpressionTemplates>& val, unsigned index);
     
    @@ -1167,7 +1182,8 @@ Miller-Rabin tests. Returns false if n is definitely composite, or true if n is probably prime with the probability of it being - composite less than 0.25^trials. + composite less than 0.25^trials. Fixed precision types are promoted internally + to ensure accuracy.

    diff --git a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html index f3909b91..b671a7b9 100644 --- a/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html +++ b/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html @@ -51,7 +51,7 @@

    Normally cpp_dec_float - allocates no memory: all of the space required for it's digits are allocated + allocates no memory: all of the space required for its digits are allocated directly within the class. As a result care should be taken not to use the class with too high a digit count as stack space requirements can grow out of control. If that represents a problem then providing an allocator @@ -59,7 +59,7 @@ to dynamically allocate the memory it needs: this significantly reduces the size of cpp_dec_float and increases the viable upper limit on the number of digits at the expense - of performance. However, please bare in mind that arithmetic operations + of performance. However, please bear in mind that arithmetic operations rapidly become very expensive as the digit count grows: the current implementation really isn't optimized or designed for large digit counts. @@ -80,11 +80,6 @@ The radix of this type is 10. As a result it can behave subtly differently from base-2 types. -

  • - It is not possible to round-trip this type to and from a string and - get back to exactly the same value (this is a result of the type having - some hidden internal guard digits). -
  • The type has a number of internal guard digits over and above those specified in the template argument. Normally these should not be visible diff --git a/doc/html/index.html b/doc/html/index.html index 0e5cb43d..8445dad1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -125,7 +125,7 @@ - +

    Last revised: November 03, 2012 at 18:24:27 GMT

    Last revised: November 12, 2012 at 19:14:07 GMT


    diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 051ff313..131b5ccc 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -80,6 +80,10 @@ where possible, but provides Boost license alternatives for users who must have unconstrained license. Which is to say some back-ends rely on 3rd party libraries, but a header-only Boost license version is always available (if somewhat slower). +Should you just wish to cut to the chase and use a fully Boost-licensed number type, then skip to +__cpp_int for multiprecision integers, __cpp_dec_float for multiprecision floating point types +and __cpp_rational for rational types. + The library is often used via one of the predefined typedefs: for example if you wanted an [@http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic arbitrary precision] integer type using [gmp] as the underlying implementation then you could use: @@ -625,12 +629,12 @@ respectively. Optionally, you can specify an integer type to use for the expone which is more than large enough for the vast majority of use cases, but larger types such as `long long` can also be specified if you need a truely huge exponent range. -Normally `cpp_dec_float` allocates no memory: all of the space required for it's digits are allocated +Normally `cpp_dec_float` allocates no memory: all of the space required for its digits are allocated directly within the class. As a result care should be taken not to use the class with too high a digit count as stack space requirements can grow out of control. If that represents a problem then providing an allocator as the final template parameter causes `cpp_dec_float` to dynamically allocate the memory it needs: this significantly reduces the size of `cpp_dec_float` and increases the viable upper limit on the number of digits -at the expense of performance. However, please bare in mind that arithmetic operations rapidly become ['very] expensive +at the expense of performance. However, please bear in mind that arithmetic operations rapidly become ['very] expensive as the digit count grows: the current implementation really isn't optimized or designed for large digit counts. There is full standard library and `numeric_limits` support available for this type. @@ -639,8 +643,6 @@ Things you should know when using this type: * Default constructed `cpp_dec_float`s have a value of zero. * The radix of this type is 10. As a result it can behave subtly differently from base-2 types. -* It is not possible to round-trip this type to and from a string and get back to exactly the same value -(this is a result of the type having some hidden internal guard digits). * The type has a number of internal guard digits over and above those specified in the template argument. Normally these should not be visible to the user. * The type supports both infinities and NaN's. An infinity is generated whenever the result would overflow, @@ -1864,14 +1866,22 @@ A traits class that inherits from `mpl::true_` if T is an expression template ty [h4 Integer functions] +In addition to functioning with types from this library, these functions are also overloaded for built in integer +types if you include ``. Further, when used with fixed precision types (whether +built in integers or multiprecision ones), the functions will promote to a wider type internally when the algorithm +requires it. Versions overloaded for built in integer types return that integer type rather than an expression +template. + ``['unmentionable-expression-template-type]`` pow(const ``['number-or-expression-template-type]``& b, unsigned p); Returns ['b[super p]] as an expression template. Note that this function should be used with extreme care as the result can grow so -large as to take "effectively forever" to compute, or else simply run the host machine out of memory. +large as to take "effectively forever" to compute, or else simply run the host machine out of memory. This is the one function in +this category that is not overloaded for built in integer types, further, it's probably not a good idea to use it with +fixed precision `cpp_int`'s either. ``['unmentionable-expression-template-type]`` powm(const ``['number-or-expression-template-type]``& b, const ``['number-or-expression-template-type]``& p, const ``['number-or-expression-template-type]``& m); -Returns ['b[super p] mod m] as an expression template. +Returns ['b[super p] mod m] as an expression template. Fixed precision types are promoted internally to ensure accuracy. template void divide_qr(const ``['number-or-expression-template-type]``& x, const ``['number-or-expression-template-type]``& y, @@ -1917,7 +1927,8 @@ Flips the bit at /index/ in /val/, and returns /val/. Tests to see if the number /n/ is probably prime - the test excludes the vast majority of composite numbers by excluding small prime factors and performing a single Fermat test. Then performs /trials/ Miller-Rabin tests. Returns `false` if /n/ is definitely composite, or `true` if /n/ is probably prime with the -probability of it being composite less than 0.25^trials. +probability of it being composite less than 0.25^trials. Fixed precision types are promoted internally +to ensure accuracy. [h4 Rational Number Functions] @@ -3030,6 +3041,7 @@ Windows Vista machine. * Added additional template parameter to `mpfr_float_backend` to allow stack-based allocation. * Added section on mixed precision arithmetic, and added support for operations yielding a higher precision result than either of the arguments. +* Added overloads of integer-specific functions for built in integer types. [h4 Pre-review history] @@ -3061,15 +3073,15 @@ More a list of what ['could] be done, rather than what ['should] be done (which the hard part is IO and binary-decimal convertion. * Should there be a choice of rounding mode (probably MPFR specific)? * We can reuse temporaries in multiple subtrees (temporary caching). +* cpp_dec_float should round to nearest. +* A 2's complement fixed precision int that uses exactly N bits and no more. Things requested in review: -* A 2's complement fixed precision int that uses exactly N bits and no more. * The performances of mp_number, false>respect to float and mp_number, false> and int should be given to show the cost of using the generic interface (Mostly done, just need to update docs to the latest results). -* cpp_dec_float should round to nearest. -* Should we provide min/max overloads for expression templates? +* Should we provide min/max overloads for expression templates? (Not done - we can't overload functions declared in the std namespace :-( ). * The rounding applied when converting must be documented (Done). * Document why we don't abstract out addition/multiplication algorithms etc. (done - FAQ) * Document why we don't use proto (compile times) (Done). @@ -3158,7 +3170,7 @@ Open question - what should be the default - int32_t or int64_t? (done 2012/09/ complement one favored by most native integer types. As a result the complement operator is deliberately disabled for checked `cpp_int`'s. Unchecked `cpp_int`'s give the same valued result as a 2's complement type would, but not the same bit-pattern.]] [[Why can't I negate an unsigned type?] - [The unary negation operator is deliberately disabled for unsigned integer types as it's use would almost always be a programming error.]] + [The unary negation operator is deliberately disabled for unsigned integer types as its use would almost always be a programming error.]] [[Why doesn't the library use proto?] [A very early version of the library did use proto, but compile times became too slow for the library to be usable. Since the library only required a tiny fraction of what diff --git a/include/boost/multiprecision/cpp_int.hpp b/include/boost/multiprecision/cpp_int.hpp index d2397f85..be4cfcca 100644 --- a/include/boost/multiprecision/cpp_int.hpp +++ b/include/boost/multiprecision/cpp_int.hpp @@ -29,7 +29,7 @@ namespace backends{ #ifdef BOOST_MSVC // warning C4127: conditional expression is constant #pragma warning(push) -#pragma warning(disable:4127 4351 4293 4996 4307) +#pragma warning(disable:4127 4351 4293 4996 4307 4702) #endif template >::type > diff --git a/include/boost/multiprecision/cpp_int/misc.hpp b/include/boost/multiprecision/cpp_int/misc.hpp index b440aab8..217c9f8c 100644 --- a/include/boost/multiprecision/cpp_int/misc.hpp +++ b/include/boost/multiprecision/cpp_int/misc.hpp @@ -8,6 +8,11 @@ #ifndef BOOST_MP_CPP_INT_MISC_HPP #define BOOST_MP_CPP_INT_MISC_HPP +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4702) +#endif + namespace boost{ namespace multiprecision{ namespace backends{ template @@ -303,6 +308,10 @@ inline typename enable_if_c< *result = static_cast(*val.limbs()); } +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + }}} // namespaces #endif diff --git a/include/boost/multiprecision/detail/generic_interconvert.hpp b/include/boost/multiprecision/detail/generic_interconvert.hpp index 526ec86a..63ec0191 100644 --- a/include/boost/multiprecision/detail/generic_interconvert.hpp +++ b/include/boost/multiprecision/detail/generic_interconvert.hpp @@ -77,7 +77,7 @@ void generic_interconvert(To& to, const From& from, const mpl::int_(0); + limb_type mask = static_cast(~static_cast(0)); From fl; eval_bitwise_and(fl, t, mask); eval_convert_to(&limb, fl); diff --git a/include/boost/multiprecision/number.hpp b/include/boost/multiprecision/number.hpp index 26571832..b408a36f 100644 --- a/include/boost/multiprecision/number.hpp +++ b/include/boost/multiprecision/number.hpp @@ -176,6 +176,13 @@ public: { *this = e; } + template + explicit number(const detail::expression& e, + typename enable_if_c::result_type, self_type>::value + && boost::multiprecision::detail::is_explicitly_convertible::result_type, self_type>::value>::type* = 0) + { + assign(e); + } #ifndef BOOST_NO_RVALUE_REFERENCES BOOST_FORCEINLINE BOOST_CONSTEXPR number(number&& r) BOOST_NOEXCEPT : m_backend(static_cast(r.m_backend)){} diff --git a/include/boost/multiprecision/rational_adapter.hpp b/include/boost/multiprecision/rational_adapter.hpp index 1c8a69cb..d2c5c3b7 100644 --- a/include/boost/multiprecision/rational_adapter.hpp +++ b/include/boost/multiprecision/rational_adapter.hpp @@ -13,7 +13,7 @@ #include #ifdef BOOST_MSVC # pragma warning(push) -# pragma warning(disable:4512) +# pragma warning(disable:4512 4127) #endif #include #ifdef BOOST_MSVC diff --git a/include/boost/multiprecision/traits/explicit_conversion.hpp b/include/boost/multiprecision/traits/explicit_conversion.hpp index 842d36d1..b4cd8215 100644 --- a/include/boost/multiprecision/traits/explicit_conversion.hpp +++ b/include/boost/multiprecision/traits/explicit_conversion.hpp @@ -16,6 +16,40 @@ namespace boost{ namespace multiprecision{ namespace detail{ template struct dummy_size{}; +template +struct has_generic_interconversion +{ + typedef typename mpl::if_c< + is_number::value && is_number::value, + typename mpl::if_c< + number_category::value == number_kind_integer, + typename mpl::if_c< + number_category::value == number_kind_integer + || number_category::value == number_kind_floating_point + || number_category::value == number_kind_rational + || number_category::value == number_kind_fixed_point, + mpl::true_, + mpl::false_ + >::type, + typename mpl::if_c< + number_category::value == number_kind_rational, + typename mpl::if_c< + number_category::value == number_kind_rational + || number_category::value == number_kind_rational, + mpl::true_, + mpl::false_ + >::type, + typename mpl::if_c< + number_category::value == number_kind_floating_point, + mpl::true_, + mpl::false_ + >::type + >::type + >::type, + mpl::false_ + >::type type; +}; + template struct is_explicitly_convertible_imp { @@ -30,7 +64,8 @@ struct is_explicitly_convertible_imp typedef boost::integral_constant type; #else - typedef typename boost::is_convertible::type type; + typedef typename has_generic_interconversion::type gen_type; + typedef mpl::bool_::value || gen_type::value> type; #endif }; diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index eb349c69..f97fb89c 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -62,7 +62,9 @@ exe miller_rabin_performance : miller_rabin_performance.cpp /boost/system//boost TEST_CPP_INT ; -exe sf_performance : sf_performance.cpp /boost/system//boost_system /boost/chrono//boost_chrono /boost/thread//boost_thread +exe sf_performance : sf_performance.cpp sf_performance_basic.cpp sf_performance_bessel.cpp + sf_performance_nct.cpp sf_performance_poly.cpp + /boost/system//boost_system /boost/chrono//boost_chrono /boost/thread//boost_thread : release [ check-target-builds ../config//has_gmp : TEST_MPF TEST_MPZ gmp : ] [ check-target-builds ../config//has_mpfr : TEST_MPFR mpfr : ] diff --git a/performance/sf_performance.cpp b/performance/sf_performance.cpp index 11c60ac6..95c08d18 100644 --- a/performance/sf_performance.cpp +++ b/performance/sf_performance.cpp @@ -3,152 +3,7 @@ // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ -#define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 500 -#define BOOST_MATH_PROMOTE_DOUBLE_POLICY false - -#if !defined(TEST_MPFR) && !defined(TEST_MPREAL) && !defined(TEST_MPF) && !defined(TEST_MPREAL) \ - && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_CLASS) && !defined(TEST_FLOAT) -# define TEST_MPFR -# define TEST_MPF -# define TEST_CPP_DEC_FLOAT -# define TEST_MPFR_CLASS -# define TEST_MPREAL -# define TEST_FLOAT -#endif - -#ifdef TEST_FLOAT -#include "arithmetic_backend.hpp" -#endif -#ifdef TEST_MPFR_CLASS -#include -#endif -#ifdef TEST_MPFR -#include -#endif -#ifdef TEST_MPREAL -#include -#endif -#ifdef TEST_MPF -#include -#endif -#ifdef TEST_CPP_DEC_FLOAT -#include -#endif -#include -#include -#include -#include -#include -#include -#include - -template -Real test_bessel(); - -template -struct stopwatch -{ - typedef typename Clock::duration duration; - stopwatch() - { - m_start = Clock::now(); - } - duration elapsed() - { - return Clock::now() - m_start; - } - void reset() - { - m_start = Clock::now(); - } - -private: - typename Clock::time_point m_start; -}; - -template -Real test_bessel() -{ - try{ -# define T double -# define SC_(x) x -# include "libs/math/test/bessel_i_int_data.ipp" -# include "libs/math/test/bessel_i_data.ipp" - - Real r; - - for(unsigned i = 0; i < bessel_i_int_data.size(); ++i) - { - r += boost::math::cyl_bessel_i(Real(bessel_i_int_data[i][0]), Real(bessel_i_int_data[i][1])); - } - for(unsigned i = 0; i < bessel_i_data.size(); ++i) - { - r += boost::math::cyl_bessel_i(Real(bessel_i_data[i][0]), Real(bessel_i_data[i][1])); - } - -#include "libs/math/test/bessel_j_int_data.ipp" - for(unsigned i = 0; i < bessel_j_int_data.size(); ++i) - { - r += boost::math::cyl_bessel_j(Real(bessel_j_int_data[i][0]), Real(bessel_j_int_data[i][1])); - } - -#include "libs/math/test/bessel_j_data.ipp" - for(unsigned i = 0; i < bessel_j_data.size(); ++i) - { - r += boost::math::cyl_bessel_j(Real(bessel_j_data[i][0]), Real(bessel_j_data[i][1])); - } - -#include "libs/math/test/bessel_j_large_data.ipp" - for(unsigned i = 0; i < bessel_j_large_data.size(); ++i) - { - r += boost::math::cyl_bessel_j(Real(bessel_j_large_data[i][0]), Real(bessel_j_large_data[i][1])); - } - -#include "libs/math/test/sph_bessel_data.ipp" - for(unsigned i = 0; i < sph_bessel_data.size(); ++i) - { - r += boost::math::sph_bessel(static_cast(sph_bessel_data[i][0]), Real(sph_bessel_data[i][1])); - } - - return r; - } - catch(const std::exception& e) - { - std::cout << e.what() << std::endl; - } - return 0; -} - -template -Real test_polynomial() -{ - static const unsigned t[] = { - 2, 3, 4, 5, 6, 7, 8 }; - Real result = 0; - for(Real k = 2; k < 1000; ++k) - result += boost::math::tools::evaluate_polynomial(t, k); - - return result; -} - -template -Real test_nct() -{ -#define T double -#include "libs/math/test/nct.ipp" - - Real result = 0; - for(unsigned i = 0; i < nct.size(); ++i) - { - try{ - result += quantile(boost::math::non_central_t_distribution(nct[i][0], nct[i][1]), nct[i][3]); - } - catch(const std::exception&) - {} - result += cdf(boost::math::non_central_t_distribution(nct[i][0], nct[i][1]), nct[i][2]); - } - return result; -} +#include "sf_performance.hpp" unsigned allocation_count = 0; @@ -173,273 +28,18 @@ void * realloc_func(void * p, size_t old, size_t n) return (*realloc_func_ptr)(p, old, n); } -template -void basic_allocation_test(const char* name, Real x) -{ - static const unsigned a[] = { 2, 3, 4, 5, 6, 7, 8 }; - allocation_count = 0; - Real result = (((((a[6] * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]; - std::cout << "Allocation count for type " << name << " = " << allocation_count << std::endl; -} - -template -void poly_allocation_test(const char* name, Real x) -{ - static const unsigned a[] = { 2, 3, 4, 5, 6, 7, 8 }; - allocation_count = 0; - Real result = boost::math::tools::evaluate_polynomial(a, x); - std::cout << "Allocation count for type " << name << " = " << allocation_count << std::endl; -} - -template -void time_proc(const char* name, Real (*proc)(), unsigned threads = 1) -{ - try{ - static Real total = 0; - allocation_count = 0; - boost::chrono::duration time; - stopwatch c; - total += proc(); - time = c.elapsed(); - std::cout << "Time for " << name << " = " << time << std::endl; - std::cout << "Total allocations for " << name << " = " << allocation_count << std::endl; - - for(unsigned thread_count = 1; thread_count < threads; ++thread_count) - { - c.reset(); - boost::thread_group g; - for(unsigned i = 0; i <= thread_count; ++i) - g.create_thread(proc); - g.join_all(); - time = c.elapsed(); - std::cout << "Time for " << name << " (" << (thread_count + 1) << " threads) = " << time << std::endl; - std::cout << "Total allocations for " << name << " = " << allocation_count << std::endl; - } - } - catch(const std::exception& e) - { - std::cout << e.what() << std::endl; - } -} - int main() { using namespace boost::multiprecision; + #if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) || defined(TEST_MPREAL) || defined(TEST_MPF) mp_get_memory_functions(&alloc_func_ptr, &realloc_func_ptr, &free_func_ptr); mp_set_memory_functions(&alloc_func, &realloc_func, &free_func); #endif - std::cout << "Allocation Counts for Horner Evaluation:\n"; -#ifdef TEST_MPFR - basic_allocation_test("mpfr_float_50", mpfr_float_50(2)); - basic_allocation_test("mpfr_float_50 - no expression templates", number, et_off>(2)); -#endif -#ifdef TEST_MPFR_CLASS - basic_allocation_test("mpfr_class", mpfr_class(2)); -#endif -#ifdef TEST_MPREAL - basic_allocation_test("mpfr::mpreal", mpfr::mpreal(2)); -#endif - - std::cout << "Allocation Counts for boost::math::tools::evaluate_polynomial:\n"; -#ifdef TEST_MPFR - poly_allocation_test("mpfr_float_50", mpfr_float_50(2)); - poly_allocation_test("mpfr_float_50 - no expression templates", number, et_off>(2)); -#endif -#ifdef TEST_MPFR_CLASS - poly_allocation_test("mpfr_class", mpfr_class(2)); -#endif -#ifdef TEST_MPREAL - poly_allocation_test("mpfr::mpreal", mpfr::mpreal(2)); -#endif - - // - // Comparison for builtin floats: - // -#ifdef TEST_FLOAT - time_proc("Bessel Functions - double", test_bessel); - time_proc("Bessel Functions - real_concept", test_bessel); - time_proc("Bessel Functions - arithmetic_backend", test_bessel > >); - time_proc("Bessel Functions - arithmetic_backend - no expression templates", test_bessel, et_off> >); - - time_proc("Non-central T - double", test_nct); - time_proc("Non-central T - real_concept", test_nct); - time_proc("Non-central T - arithmetic_backend", test_nct > >); - time_proc("Non-central T - arithmetic_backend - no expression templates", test_nct, et_off> >); -#endif - - // - // 50 digits first: - // - std::cout << "Testing Bessel Functions at 50 digits....." << std::endl; -#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) - mpfr_set_default_prec(50 * 1000L / 301L); -#endif -#ifdef TEST_MPREAL - mpfr::mpreal::set_default_prec(50 * 1000L / 301L); -#endif -#ifdef TEST_MPFR -#if MPFR_VERSION, 1); - time_proc("mpfr_float_50 (no expression templates)", test_bessel, et_off> >, 1); - time_proc("static_mpfr_float_50", test_bessel, et_on> >, 1); - time_proc("static_mpfr_float_50 (no expression templates)", test_bessel, et_off> >, 1); -#else - time_proc("mpfr_float_50", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); - time_proc("mpfr_float_50 (no expression templates", test_bessel, et_off> >, mpfr_buildopt_tls_p() ? 3 : 1); - time_proc("static_mpfr_float_50", test_bessel, et_on> >, mpfr_buildopt_tls_p() ? 3 : 1); - time_proc("static_mpfr_float_50 (no expression templates)", test_bessel, et_off> >, mpfr_buildopt_tls_p() ? 3 : 1); -#endif -#endif -#ifdef TEST_MPF - time_proc("mpf_float_50", test_bessel, 3); - time_proc("mpf_float_50 (no expression templates", test_bessel, et_off> >, 3); -#endif -#ifdef TEST_CPP_DEC_FLOAT - time_proc("cpp_dec_float_50", test_bessel, 3); -#endif -#ifdef TEST_MPFR_CLASS - time_proc("mpfr_class", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); -#endif -#ifdef TEST_MPREAL - time_proc("mpfr::mpreal", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); -#endif - // - // Then 100 digits: - // - std::cout << "Testing Bessel Functions at 100 digits....." << std::endl; -#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) - mpfr_set_default_prec(100 * 1000L / 301L); -#endif -#ifdef TEST_MPREAL - mpfr::mpreal::set_default_prec(100 * 1000L / 301L); -#endif -#ifdef TEST_MPFR - time_proc("mpfr_float_100", test_bessel); - time_proc("mpfr_float_100 (no expression templates", test_bessel, et_off> >); -#endif -#ifdef TEST_MPF - time_proc("mpf_float_100", test_bessel); - time_proc("mpf_float_100 (no expression templates", test_bessel, et_off> >); -#endif -#ifdef TEST_CPP_DEC_FLOAT - time_proc("cpp_dec_float_100", test_bessel); -#endif -#ifdef TEST_MPFR_CLASS - time_proc("mpfr_class", test_bessel); -#endif -#ifdef TEST_MPREAL - time_proc("mpfr::mpreal", test_bessel); -#endif - - // - // 50 digits first: - // - std::cout << "Testing Polynomial Evaluation at 50 digits....." << std::endl; -#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) - mpfr_set_default_prec(50 * 1000L / 301L); -#endif -#ifdef TEST_MPREAL - mpfr::mpreal::set_default_prec(50 * 1000L / 301L); -#endif -#ifdef TEST_MPFR - time_proc("mpfr_float_50", test_polynomial); - time_proc("mpfr_float_50 (no expression templates", test_polynomial, et_off> >); -#endif -#ifdef TEST_MPF - time_proc("mpf_float_50", test_polynomial); - time_proc("mpf_float_50 (no expression templates", test_polynomial, et_off> >); -#endif -#ifdef TEST_CPP_DEC_FLOAT - time_proc("cpp_dec_float_50", test_polynomial); -#endif -#ifdef TEST_MPFR_CLASS - time_proc("mpfr_class", test_polynomial); -#endif -#ifdef TEST_MPREAL - time_proc("mpfr::mpreal", test_polynomial); -#endif - // - // Then 100 digits: - // - std::cout << "Testing Polynomial Evaluation at 100 digits....." << std::endl; -#ifdef TEST_MPFR_CLASS - mpfr_set_default_prec(100 * 1000L / 301L); -#endif -#ifdef TEST_MPREAL - mpfr::mpreal::set_default_prec(100 * 1000L / 301L); -#endif -#ifdef TEST_MPFR - time_proc("mpfr_float_100", test_polynomial); - time_proc("mpfr_float_100 (no expression templates", test_polynomial, et_off> >); -#endif -#ifdef TEST_MPF - time_proc("mpf_float_100", test_polynomial); - time_proc("mpf_float_100 (no expression templates", test_polynomial, et_off> >); -#endif -#ifdef TEST_CPP_DEC_FLOAT - time_proc("cpp_dec_float_100", test_polynomial); -#endif -#ifdef TEST_MPFR_CLASS - time_proc("mpfr_class", test_polynomial); -#endif -#ifdef TEST_MPREAL - time_proc("mpfr::mpreal", test_polynomial); -#endif - // - // 50 digits first: - // - std::cout << "Testing Non-Central T at 50 digits....." << std::endl; -#ifdef TEST_MPFR_CLASS - mpfr_set_default_prec(50 * 1000L / 301L); -#endif -#ifdef TEST_MPREAL - mpfr::mpreal::set_default_prec(50 * 1000L / 301L); -#endif -#ifdef TEST_MPFR - time_proc("mpfr_float_50", test_nct); - time_proc("mpfr_float_50 (no expression templates", test_nct, et_off> >); -#endif -#ifdef TEST_MPF - time_proc("mpf_float_50", test_nct); - time_proc("mpf_float_50 (no expression templates", test_nct, et_off> >); -#endif -#ifdef TEST_CPP_DEC_FLOAT - time_proc("cpp_dec_float_50", test_nct); -#endif -#ifdef TEST_MPFR_CLASS - time_proc("mpfr_class", test_nct); -#endif -#ifdef TEST_MPREAL - time_proc("mpfr::mpreal", test_nct); -#endif - // - // Then 100 digits: - // - std::cout << "Testing Non-Central T at 100 digits....." << std::endl; -#ifdef TEST_MPFR_CLASS - mpfr_set_default_prec(100 * 1000L / 301L); -#endif -#ifdef TEST_MPREAL - mpfr::mpreal::set_default_prec(100 * 1000L / 301L); -#endif -#ifdef TEST_MPFR - time_proc("mpfr_float_100", test_nct); - time_proc("mpfr_float_100 (no expression templates", test_nct, et_off> >); -#endif -#ifdef TEST_MPF - time_proc("mpf_float_100", test_nct); - time_proc("mpf_float_100 (no expression templates", test_nct, et_off> >); -#endif -#ifdef TEST_CPP_DEC_FLOAT - time_proc("cpp_dec_float_100", test_nct); -#endif -#ifdef TEST_MPFR_CLASS - time_proc("mpfr_class", test_nct); -#endif -#ifdef TEST_MPREAL - time_proc("mpfr::mpreal", test_nct); -#endif + basic_tests(); + bessel_tests(); + poly_tests(); + nct_tests(); } diff --git a/performance/sf_performance_basic.cpp b/performance/sf_performance_basic.cpp new file mode 100644 index 00000000..d079fc99 --- /dev/null +++ b/performance/sf_performance_basic.cpp @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void basic_tests() +{ + + std::cout << "Allocation Counts for Horner Evaluation:\n"; +#ifdef TEST_MPFR + basic_allocation_test("mpfr_float_50", mpfr_float_50(2)); + basic_allocation_test("mpfr_float_50 - no expression templates", number, et_off>(2)); +#endif +#ifdef TEST_MPFR_CLASS + basic_allocation_test("mpfr_class", mpfr_class(2)); +#endif +#ifdef TEST_MPREAL + basic_allocation_test("mpfr::mpreal", mpfr::mpreal(2)); +#endif + + std::cout << "Allocation Counts for boost::math::tools::evaluate_polynomial:\n"; +#ifdef TEST_MPFR + poly_allocation_test("mpfr_float_50", mpfr_float_50(2)); + poly_allocation_test("mpfr_float_50 - no expression templates", number, et_off>(2)); +#endif +#ifdef TEST_MPFR_CLASS + poly_allocation_test("mpfr_class", mpfr_class(2)); +#endif +#ifdef TEST_MPREAL + poly_allocation_test("mpfr::mpreal", mpfr::mpreal(2)); +#endif + + // + // Comparison for builtin floats: + // +#ifdef TEST_FLOAT + time_proc("Bessel Functions - double", test_bessel); + time_proc("Bessel Functions - real_concept", test_bessel); + time_proc("Bessel Functions - arithmetic_backend", test_bessel > >); + time_proc("Bessel Functions - arithmetic_backend - no expression templates", test_bessel, et_off> >); + + time_proc("Non-central T - double", test_nct); + time_proc("Non-central T - real_concept", test_nct); + time_proc("Non-central T - arithmetic_backend", test_nct > >); + time_proc("Non-central T - arithmetic_backend - no expression templates", test_nct, et_off> >); +#endif +} diff --git a/performance/sf_performance_bessel.cpp b/performance/sf_performance_bessel.cpp new file mode 100644 index 00000000..817f5a56 --- /dev/null +++ b/performance/sf_performance_bessel.cpp @@ -0,0 +1,42 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void bessel_tests_1(); +void bessel_tests_2(); +void bessel_tests_3(); +void bessel_tests_4(); +void bessel_tests_5(); +void bessel_tests_6(); + +void bessel_tests() +{ + // + // 50 digits first: + // + std::cout << "Testing Bessel Functions at 50 digits....." << std::endl; +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) + mpfr_set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL + mpfr::mpreal::set_default_prec(50 * 1000L / 301L); +#endif + + bessel_tests_1(); + bessel_tests_2(); + bessel_tests_3(); + + // + // Then 100 digits: + // + std::cout << "Testing Bessel Functions at 100 digits....." << std::endl; +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) + mpfr_set_default_prec(100 * 1000L / 301L); +#endif + bessel_tests_4(); + bessel_tests_5(); + bessel_tests_6(); +} diff --git a/performance/sf_performance_bessel1.cpp b/performance/sf_performance_bessel1.cpp new file mode 100644 index 00000000..6c13315f --- /dev/null +++ b/performance/sf_performance_bessel1.cpp @@ -0,0 +1,23 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void bessel_tests_1() +{ +#ifdef TEST_MPFR +#if MPFR_VERSION, 1); + time_proc("mpfr_float_50 (no expression templates)", test_bessel, et_off> >, 1); + time_proc("static_mpfr_float_50", test_bessel, et_on> >, 1); + time_proc("static_mpfr_float_50 (no expression templates)", test_bessel, et_off> >, 1); +#else + time_proc("mpfr_float_50", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); + time_proc("mpfr_float_50 (no expression templates", test_bessel, et_off> >, mpfr_buildopt_tls_p() ? 3 : 1); + time_proc("static_mpfr_float_50", test_bessel, et_on> >, mpfr_buildopt_tls_p() ? 3 : 1); + time_proc("static_mpfr_float_50 (no expression templates)", test_bessel, et_off> >, mpfr_buildopt_tls_p() ? 3 : 1); +#endif +#endif +} diff --git a/performance/sf_performance_bessel2.cpp b/performance/sf_performance_bessel2.cpp new file mode 100644 index 00000000..3eecda8e --- /dev/null +++ b/performance/sf_performance_bessel2.cpp @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void bessel_tests_2() +{ +#ifdef TEST_MPF + time_proc("mpf_float_50", test_bessel, 3); + time_proc("mpf_float_50 (no expression templates", test_bessel, et_off> >, 3); +#endif +#ifdef TEST_CPP_DEC_FLOAT + time_proc("cpp_dec_float_50", test_bessel, 3); +#endif +} diff --git a/performance/sf_performance_bessel3.cpp b/performance/sf_performance_bessel3.cpp new file mode 100644 index 00000000..67ee0fba --- /dev/null +++ b/performance/sf_performance_bessel3.cpp @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void bessel_tests_3() +{ +#ifdef TEST_MPFR_CLASS + time_proc("mpfr_class", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); +#endif +#ifdef TEST_MPREAL + time_proc("mpfr::mpreal", test_bessel, mpfr_buildopt_tls_p() ? 3 : 1); +#endif +} diff --git a/performance/sf_performance_bessel4.cpp b/performance/sf_performance_bessel4.cpp new file mode 100644 index 00000000..108d62e1 --- /dev/null +++ b/performance/sf_performance_bessel4.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void bessel_tests_4() +{ +#ifdef TEST_MPFR + time_proc("mpfr_float_100", test_bessel); + time_proc("mpfr_float_100 (no expression templates", test_bessel, et_off> >); + time_proc("static_mpfr_float_100", test_bessel); +#endif +} diff --git a/performance/sf_performance_bessel5.cpp b/performance/sf_performance_bessel5.cpp new file mode 100644 index 00000000..f1154b59 --- /dev/null +++ b/performance/sf_performance_bessel5.cpp @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void bessel_tests_5() +{ +#ifdef TEST_MPREAL + mpfr::mpreal::set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPF + time_proc("mpf_float_100", test_bessel); + time_proc("mpf_float_100 (no expression templates", test_bessel, et_off> >); +#endif +} diff --git a/performance/sf_performance_bessel6.cpp b/performance/sf_performance_bessel6.cpp new file mode 100644 index 00000000..f9c61cd2 --- /dev/null +++ b/performance/sf_performance_bessel6.cpp @@ -0,0 +1,19 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void bessel_tests_6() +{ +#ifdef TEST_CPP_DEC_FLOAT + time_proc("cpp_dec_float_100", test_bessel); +#endif +#ifdef TEST_MPFR_CLASS + time_proc("mpfr_class", test_bessel); +#endif +#ifdef TEST_MPREAL + time_proc("mpfr::mpreal", test_bessel); +#endif +} diff --git a/performance/sf_performance_nct.cpp b/performance/sf_performance_nct.cpp new file mode 100644 index 00000000..c0a713ba --- /dev/null +++ b/performance/sf_performance_nct.cpp @@ -0,0 +1,39 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void nct_tests_1(); +void nct_tests_2(); +void nct_tests_3(); +void nct_tests_4(); +void nct_tests_5(); +void nct_tests_6(); + +void nct_tests() +{ + // + // 50 digits first: + // + std::cout << "Testing Non-Central T at 50 digits....." << std::endl; +#ifdef TEST_MPFR_CLASS + mpfr_set_default_prec(50 * 1000L / 301L); +#endif + + nct_tests_1(); + nct_tests_2(); + nct_tests_3(); + + // + // Then 100 digits: + // + std::cout << "Testing Non-Central T at 100 digits....." << std::endl; +#ifdef TEST_MPFR_CLASS + mpfr_set_default_prec(100 * 1000L / 301L); +#endif + nct_tests_4(); + nct_tests_5(); + nct_tests_6(); +} diff --git a/performance/sf_performance_nct1.cpp b/performance/sf_performance_nct1.cpp new file mode 100644 index 00000000..cde285c9 --- /dev/null +++ b/performance/sf_performance_nct1.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void nct_tests_1() +{ +#ifdef TEST_MPFR + time_proc("mpfr_float_50", test_nct); + time_proc("mpfr_float_50 (no expression templates", test_nct, et_off> >); + time_proc("static_mpfr_float_50", test_nct); +#endif +} diff --git a/performance/sf_performance_nct2.cpp b/performance/sf_performance_nct2.cpp new file mode 100644 index 00000000..76142bea --- /dev/null +++ b/performance/sf_performance_nct2.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void nct_tests_2() +{ +#ifdef TEST_MPF + time_proc("mpf_float_50", test_nct); + time_proc("mpf_float_50 (no expression templates", test_nct, et_off> >); +#endif +} diff --git a/performance/sf_performance_nct3.cpp b/performance/sf_performance_nct3.cpp new file mode 100644 index 00000000..714831b8 --- /dev/null +++ b/performance/sf_performance_nct3.cpp @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void nct_tests_3() +{ +#ifdef TEST_MPREAL + mpfr::mpreal::set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_CPP_DEC_FLOAT + time_proc("cpp_dec_float_50", test_nct); +#endif +#ifdef TEST_MPFR_CLASS + time_proc("mpfr_class", test_nct); +#endif +#ifdef TEST_MPREAL + time_proc("mpfr::mpreal", test_nct); +#endif +} diff --git a/performance/sf_performance_nct4.cpp b/performance/sf_performance_nct4.cpp new file mode 100644 index 00000000..1ad30271 --- /dev/null +++ b/performance/sf_performance_nct4.cpp @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void nct_tests_4() +{ +#ifdef TEST_MPFR + time_proc("mpfr_float_100", test_nct); + time_proc("mpfr_float_100 (no expression templates", test_nct, et_off> >); + time_proc("static_mpfr_float_100", test_nct); +#endif +} diff --git a/performance/sf_performance_nct5.cpp b/performance/sf_performance_nct5.cpp new file mode 100644 index 00000000..c098ab20 --- /dev/null +++ b/performance/sf_performance_nct5.cpp @@ -0,0 +1,14 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void nct_tests_5() +{ +#ifdef TEST_MPF + time_proc("mpf_float_100", test_nct); + time_proc("mpf_float_100 (no expression templates", test_nct, et_off> >); +#endif +} diff --git a/performance/sf_performance_nct6.cpp b/performance/sf_performance_nct6.cpp new file mode 100644 index 00000000..76e0a7e1 --- /dev/null +++ b/performance/sf_performance_nct6.cpp @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void nct_tests_6() +{ +#ifdef TEST_MPREAL + mpfr::mpreal::set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_CPP_DEC_FLOAT + time_proc("cpp_dec_float_100", test_nct); +#endif +#ifdef TEST_MPFR_CLASS + time_proc("mpfr_class", test_nct); +#endif +#ifdef TEST_MPREAL + time_proc("mpfr::mpreal", test_nct); +#endif +} diff --git a/performance/sf_performance_poly.cpp b/performance/sf_performance_poly.cpp new file mode 100644 index 00000000..138a39bd --- /dev/null +++ b/performance/sf_performance_poly.cpp @@ -0,0 +1,66 @@ +/////////////////////////////////////////////////////////////// +// Copyright 2011 John Maddock. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ + +#include "sf_performance.hpp" + +void poly_tests() +{ + // + // 50 digits first: + // + std::cout << "Testing Polynomial Evaluation at 50 digits....." << std::endl; +#if defined(TEST_MPFR) || defined(TEST_MPFR_CLASS) + mpfr_set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL + mpfr::mpreal::set_default_prec(50 * 1000L / 301L); +#endif +#ifdef TEST_MPFR + time_proc("mpfr_float_50", test_polynomial); + time_proc("mpfr_float_50 (no expression templates", test_polynomial, et_off> >); + time_proc("static_mpfr_float_50", test_polynomial); +#endif +#ifdef TEST_MPF + time_proc("mpf_float_50", test_polynomial); + time_proc("mpf_float_50 (no expression templates", test_polynomial, et_off> >); +#endif +#ifdef TEST_CPP_DEC_FLOAT + time_proc("cpp_dec_float_50", test_polynomial); +#endif +#ifdef TEST_MPFR_CLASS + time_proc("mpfr_class", test_polynomial); +#endif +#ifdef TEST_MPREAL + time_proc("mpfr::mpreal", test_polynomial); +#endif + // + // Then 100 digits: + // + std::cout << "Testing Polynomial Evaluation at 100 digits....." << std::endl; +#ifdef TEST_MPFR_CLASS + mpfr_set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPREAL + mpfr::mpreal::set_default_prec(100 * 1000L / 301L); +#endif +#ifdef TEST_MPFR + time_proc("mpfr_float_100", test_polynomial); + time_proc("mpfr_float_100 (no expression templates", test_polynomial, et_off> >); + time_proc("static_mpfr_float_100", test_polynomial); +#endif +#ifdef TEST_MPF + time_proc("mpf_float_100", test_polynomial); + time_proc("mpf_float_100 (no expression templates", test_polynomial, et_off> >); +#endif +#ifdef TEST_CPP_DEC_FLOAT + time_proc("cpp_dec_float_100", test_polynomial); +#endif +#ifdef TEST_MPFR_CLASS + time_proc("mpfr_class", test_polynomial); +#endif +#ifdef TEST_MPREAL + time_proc("mpfr::mpreal", test_polynomial); +#endif +} diff --git a/test/test_atan.cpp b/test/test_atan.cpp index 4e6d7552..07ed5b10 100644 --- a/test/test_atan.cpp +++ b/test/test_atan.cpp @@ -44,6 +44,10 @@ #include #endif +#ifdef BOOST_MSVC +#pragma warning(disable:4127) +#endif + template T atan2_def(T y, T x) { diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp index 74ba8898..ad66dac3 100644 --- a/test/test_float_io.cpp +++ b/test/test_float_io.cpp @@ -40,6 +40,10 @@ #include #include +#ifdef BOOST_MSVC +#pragma warning(disable:4127) +#endif + #if defined(TEST_MPF_50) template bool is_mpf(const boost::multiprecision::number, ET>&) @@ -286,12 +290,10 @@ int main() #ifdef TEST_CPP_DEC_FLOAT test(); test(); - // cpp_dec_float has extra guard digits that messes this up: test_round_trip(); test_round_trip(); - #endif #ifdef TEST_MPF_50 test(); diff --git a/test/test_int_io.cpp b/test/test_int_io.cpp index ed92c6b6..2b615fdc 100644 --- a/test/test_int_io.cpp +++ b/test/test_int_io.cpp @@ -40,6 +40,10 @@ #include #include +#ifdef BOOST_MSVC +#pragma warning(disable:4127) +#endif + template struct unchecked_type{ typedef T type; }; diff --git a/test/test_native_integer.cpp b/test/test_native_integer.cpp index 7ed79323..0e55822a 100644 --- a/test/test_native_integer.cpp +++ b/test/test_native_integer.cpp @@ -38,7 +38,7 @@ void test() if(std::numeric_limits::is_signed) { - i = -1; + i = static_cast(-1); BOOST_CHECK_THROW(lsb(i), std::range_error); } diff --git a/test/test_numeric_limits.cpp b/test/test_numeric_limits.cpp index 7b262ddc..8b32f8a7 100644 --- a/test/test_numeric_limits.cpp +++ b/test/test_numeric_limits.cpp @@ -51,6 +51,10 @@ #include #endif +#ifdef BOOST_MSVC +#pragma warning(disable:4127) +#endif + #define PRINT(x)\ std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits::x << std::endl; diff --git a/test/test_rational_io.cpp b/test/test_rational_io.cpp index b954a0c4..34e66e6d 100644 --- a/test/test_rational_io.cpp +++ b/test/test_rational_io.cpp @@ -36,7 +36,6 @@ #include #include #include -#include #include #include "test.hpp" #include diff --git a/test/test_round.cpp b/test/test_round.cpp index 27fe149a..fd72c2e0 100644 --- a/test/test_round.cpp +++ b/test/test_round.cpp @@ -43,6 +43,10 @@ #include #endif +#ifdef BOOST_MSVC +#pragma warning(disable:4127) +#endif + boost::mt19937 rng; template